{"version":3,"file":"main.a2c18ee0cd8bc103.js","mappings":"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AAOuxU,GAAUG,QACjBn7G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI18Q,KAAM,UACN6+X,YAAY,EACZ14U,MAAOuxU,GAAUG,QACjBn7G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI18Q,KAAM,OACN6+X,YAAY,EACZ14U,MAAOuxU,GAAUG,QACjBn7G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI18Q,KAAM,OACN6+X,YAAY,EACZ14U,MAAOuxU,GAAUG,QACjBn7G,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAE1F,CACI18Q,KAAM,QACN6+X,YAAY,EACZ14U,MAAOuxU,GAAUE,OACjBl7G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI18Q,KAAM,MACN6+X,YAAY,EACZ14U,MAAOuxU,GAAUE,OACjBl7G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI18Q,KAAM,OACN6+X,YAAY,EACZ14U,MAAOuxU,GAAUE,OACjBl7G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI18Q,KAAM,QACN6+X,YAAY,EACZ14U,MAAOuxU,GAAUG,QACjBn7G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI18Q,KAAM,QACN6+X,YAAY,EACZ14U,MAAOuxU,GAAUG,QACjBn7G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI18Q,KAAM,SACN6+X,YAAY,EACZ14U,MAAOuxU,GAAUG,QACjBn7G,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACI18Q,KAAM,UACN6+X,YAAY,EACZ14U,MAAOuxU,GAAUG,QACjBn7G,OAAQ,CACJ,UACA,UA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EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAIlsD,EAAEsmqC,WAAW,SAASl2oC,EAAE/2B,GAAG,QAAQ2G,EAAE,EAAE8qG,EAAE,EAAEA,EAAE,EAAEA,IAAK9qG,IAAI,EAAEA,GAAGksD,EAAE,GAAG4+C,GAAG16E,IAAI,GAAG,EAAE06E,EAAE,KAAK,IAAIA,EAAE,EAAEA,EAAE,EAAEA,IAAK9qG,IAAI,EAAEA,GAAGksD,EAAE,IAAI,GAAG4+C,GAAGzxG,IAAI,GAAG,EAAEyxG,EAAE,KAAK,OAAO9qG,IAAI,CAAC,EAAE,IAAI4sB,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG5sB,EAAEqrpC,QAAQ,SAASj7nC,GAAG,QAAQ/2B,EAAE,EAAE2G,EAAE,EAAEA,EAAE4sB,EAAE9L,OAAO9gB,IAAI3G,IAAI,EAAEA,GAAG+2B,IAAIxD,EAAE5sB,GAAG,EAAE,OAAO3G,IAAI,CAAC,EAAE2G,EAAE0mqC,SAAS,SAASt2oC,EAAE/2B,EAAE2G,GAAG,QAAQ8qG,EAAE16E,EAAE/O,SAAS,GAAGypF,EAAEhqF,OAAOznB,GAAGyxG,EAAE,IAAIA,EAAE,QAAQ5+C,EAAE,GAAGt/B,EAAE,EAAEA,EAAEvzB,EAAEuzB,GAAG5sB,EAAEksD,EAAEnwD,KAAK+uG,EAAE9+E,MAAMY,EAAEA,EAAE5sB,IAAI,OAAOksD,EAAExwD,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS00B,EAAE/2B,EAAE2G,IAAG,SAAU3G,IAAG,WAAY,aAAa,IAAIyxG,EAAE16E,EAAE,uBAAuB87B,EAAE97B,EAAE,qBAAqBxD,EAAEwD,EAAE,YAAgBo8B,EAAE,CAACm6mC,QAAO,EAAGh+zB,KAAI,EAAGmjmB,QAAO,GAAI9r8B,EAAEmhqC,mBAAmBnhqC,EAAEohqC,yBAAyBphqC,EAAEqhqC,iBAAiB,SAASjxoC,GAAG,IAAIpwB,EAAE,IAAI3G,EAAE6yD,EAAE97B,GAAG4/nC,MAAM,OAAOlljC,EAAE,IAAIzxG,EAAE6yD,EAAE97B,GAAGw2oC,IAAI,OAAO,OAAO,IAAIh6oC,EAAE5sB,EAAE8qG,EAAE,EAAE9qG,EAAEshqC,oBAAoBthqC,EAAEuhqC,cAAc,SAASnxoC,EAAEpwB,EAAEksD,EAAEnU,EAAEinF,GAAG,OAAO3lI,EAAE6opC,SAASh2lC,SAAI,IAASM,EAAEN,GAAG97B,EAAEpwB,EAAE,SAASksD,EAAEnU,IAAImU,EAAEA,GAAG,SAAS8yE,EAAEA,GAAG,SAASjnF,EAAEA,GAAG,IAAI1+C,EAAE,CAAC,IAAIA,EAAE6opC,SAASnqmC,KAAKA,EAAE,IAAI1+C,EAAE0+C,EAAEinF,IAAI,iBAAiBh/H,EAAE,IAAI4sB,EAAEk+E,EAAE9qG,EAAE+3C,GAAGA,GAAE,IAAK1+C,EAAE6opC,SAASlipC,KAAKA,EAAE,IAAI3G,EAAE2G,EAAEksD,IAAI,IAAIt/B,EAAE5sB,EAAE+3C,GAAE,IAAK,CAAC,GAAG9V,KAAK/oC,KAAK,GAAG+oC,KAAK/oC,KAAKk3B,EAAE,UAAU42kC,OAAO,EAAE,CAAC,WAAW,IAAI,sBAAsB,IAAI,oBAAoB,IAAIni4B,OAAO,MAAM,IAAI,CAAC,SAASz0M,EAAE/2B,EAAE2G,IAAG,SAAUA,IAAG,WAAY,aAAa,IAAI8qG,EAAE16E,EAAE,SAAS87B,EAAE,IAAI97B,EAAE,iBAAiBxD,EAAE,IAAIk+E,EAAE,IAAIt+C,EAAE,IAAIs+C,EAAE,IAAI/yD,EAAE,IAAI+yD,EAAE,IAAIk0B,EAAE,IAAIl0B,EAAE,GAAGuF,EAAE,IAAIvF,EAAE,GAAGzwC,EAAEjqC,EAAE,mBAAmBuvN,EAAEvvN,EAAE,eAAe,SAASslB,EAAEtlB,EAAE/2B,GAAG,OAAOA,EAAEA,GAAG,OAAO2G,EAAEkipC,SAAS9xnC,KAAKA,EAAE,IAAIpwB,EAAEowB,EAAE/2B,IAAIH,KAAK2tqC,KAAK,IAAI/7jC,EAAE16E,GAAGl3B,IAAI,CAAC,SAASipK,EAAE/xI,EAAE/2B,GAAG,OAAOA,EAAEA,GAAG,OAAO2G,EAAEkipC,SAAS9xnC,KAAKA,EAAE,IAAIpwB,EAAEowB,EAAE/2B,IAAIH,KAAK4tqC,MAAM,IAAIh8jC,EAAE16E,GAAGl3B,IAAI,CAACG,EAAE4krB,QAAQ12mB,EAAE,IAAItpE,EAAE,CAAC,EAAE,SAASspE,EAAEn3C,EAAE/2B,EAAE2G,GAAG9G,KAAK6tqC,aAAa1tqC,GAAGH,KAAK8tqC,QAAQ,IAAIl8jC,EAAE16E,GAAGl3B,KAAK62pC,OAAOjljC,EAAE0ljC,KAAKt3pC,KAAK8tqC,SAAS9tqC,KAAK+tqC,UAAU72oC,EAAEtP,OAAO5nB,KAAK2tqC,UAAK,EAAO3tqC,KAAK4tqC,WAAM,EAAO5tqC,KAAKguqC,gBAAW,EAAOlnqC,GAAG9G,KAAKknqC,aAAa1qnC,EAAEx8C,KAAKonqC,cAAcn+/B,GAAGjpK,KAAKguqC,WAAW,CAAC,CAAC,SAASjvnC,EAAE7nB,EAAE/2B,GAAG,IAAIyxG,EAAE,IAAI9qG,EAAEowB,EAAEwkiB,WAAW,OAAOv7jB,EAAEyxG,EAAEzpF,SAAShoB,GAAGyxG,CAAC,CAAClvG,OAAO4jI,eAAej4D,EAAEvlC,UAAU,cAAc,CAACy9F,YAAW,EAAGzvG,IAAI,WAAW,MAAM,iBAAiB92B,KAAKguqC,aAAahuqC,KAAKguqC,WAAW,SAAS92oC,EAAE/2B,GAAG,IAAI2G,EAAE3G,EAAEgoB,SAAS,OAAOypF,EAAE,CAAC9qG,EAAEowB,EAAE/O,SAAS,KAAK3lB,KAAK,KAAK,GAAGovG,KAAK7sG,EAAE,OAAOA,EAAE6sG,GAAG,IAAI60I,EAAEjqM,EAAE,EAAE,GAAGtlB,EAAE+8nC,WAAW9ylC,EAAE8smC,cAAc9smC,EAAE+smC,WAAWh3oC,KAAK87B,EAAExpB,KAAKtS,GAAG,OAAOslB,GAAG,EAA4Bz3C,EAAE6sG,GAA5Bp1D,GAAG,OAAO11C,GAAG,OAAOA,EAAE,EAAE,EAAS01C,EAAE,OAAOwW,EAAExpB,KAAKtS,EAAEg8nC,KAAK,MAAM12mC,GAAG,GAAG11C,GAAG,IAAI,KAAKowB,EAAEouG,IAAI5xG,GAAG8xL,IAAIlyJ,KAAK9W,GAAG,GAAG,MAAM,IAAI,MAAMiqM,EAAEvvN,EAAEouG,IAAIzmF,IAAI2mK,IAAI1/E,IAAI2gH,EAAEjhC,IAAIruG,KAAK36D,GAAG,GAAG,MAAM,QAAQA,GAAG,EAAE,OAAOz3C,EAAE6sG,GAAGp1D,EAAEA,CAAC,CAA5W,CAA8Wx8C,KAAK8tqC,QAAQ9tqC,KAAKmuqC,QAAQnuqC,KAAKguqC,UAAU,IAAI3/lC,EAAEvlC,UAAU69nC,aAAa,WAAW,OAAO3mqC,KAAK4tqC,QAAQ5tqC,KAAK4tqC,MAAM,IAAIh8jC,EAAE60I,EAAEzmP,KAAK+tqC,aAAa/tqC,KAAK2tqC,KAAK3tqC,KAAKouqC,KAAKlZ,MAAMl1pC,KAAK62pC,QAAQN,OAAOv2pC,KAAK4tqC,OAAOvY,UAAUr1pC,KAAK6mqC,cAAc,EAAEx4lC,EAAEvlC,UAAUg+nC,cAAc,SAAS5voC,GAAG,IAAI/2B,GAAG+2B,GAAGA,EAAE,IAAI06E,EAAE16E,IAAIg+nC,MAAMl1pC,KAAK62pC,SAASN,OAAOv2pC,KAAK4tqC,OAAOvY,UAAUrimC,EAAE,IAAIlsD,EAAE3G,EAAEu7jB,WAAWhoiB,EAAE1zB,KAAKquqC,WAAW,GAAGr7mC,EAAEprC,OAAO8L,EAAE9L,OAAO,CAAC,IAAI0rC,EAAE,IAAIxsD,EAAE4sB,EAAE9L,OAAOorC,EAAEprC,QAAQ0rC,EAAE0uF,KAAK,GAAGhvF,EAAElsD,EAAEojD,OAAO,CAACoJ,EAAEN,GAAG,CAAC,OAAOA,CAAC,EAAEqb,EAAEvlC,UAAU+9nC,aAAa,SAAS3voC,GAAG,OAAO6nB,EAAE/+C,KAAK2tqC,KAAKz2oC,EAAE,EAAEm3C,EAAEvlC,UAAUm+nC,cAAc,SAAS/voC,GAAG,OAAO6nB,EAAE/+C,KAAK4tqC,MAAM12oC,EAAE,EAAEm3C,EAAEvlC,UAAUuloC,SAAS,SAASn3oC,GAAG,OAAO6nB,EAAE/+C,KAAK8tqC,QAAQ52oC,EAAE,EAAEm3C,EAAEvlC,UAAUwloC,aAAa,SAASp3oC,GAAG,OAAO6nB,EAAE/+C,KAAKouqC,KAAKl3oC,EAAE,EAAEm3C,EAAEvlC,UAAU+koC,aAAa,SAAS32oC,EAAE/2B,GAAG,OAAOA,EAAEA,GAAG,OAAO2G,EAAEkipC,SAAS9xnC,KAAKA,EAAE,IAAIpwB,EAAEowB,EAAE/2B,IAAIH,KAAKmuqC,MAAMj3oC,EAAEl3B,KAAKouqC,KAAK,IAAIx8jC,EAAE16E,GAAGl3B,IAAI,CAAC,GAAG+oC,KAAK/oC,KAAK,GAAG+oC,KAAK/oC,KAAKk3B,EAAE,UAAU42kC,OAAO,EAAE,CAAC,kBAAkB,IAAI,QAAQ,IAAIni4B,OAAO,IAAI,eAAe,IAAIwx7B,YAAY,MAAM,IAAI,CAAC,SAASjmoC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,eAAe/2B,EAAE4krB,QAAQxonB,EAAEA,EAAE0xmC,YAAYlvnC,EAAEwd,EAAE2xmC,WAAWjmnC,EAAE,IAAI+K,EAAE97B,EAAE,SAASxD,EAAE,IAAIs/B,EAAE,IAAIM,EAAE,IAAIp8B,EAAE,iBAAiB2nB,EAAE,IAAImU,EAAE,GAAG8yE,EAAE,IAAI9yE,EAAE,GAAGmkD,EAAE,IAAInkD,EAAE,GAAGmO,GAAG,IAAInO,EAAE,IAAI,IAAIA,EAAE,GAAG,IAAIA,EAAE,KAAKyzL,EAAE,IAAIzzL,EAAE,GAAGxW,GAAG,IAAIwW,EAAE,GAAG,IAAIA,EAAE,KAAKi2G,EAAE,IAAIj2G,EAAE,GAAGjuD,GAAG,IAAIiuD,EAAE,IAAI,MAAmM,SAASjU,EAAE7nB,GAAG,QAAQ/2B,EAAnN,SAASkuE,IAAI,GAAG,OAAOtpE,EAAE,OAAOA,EAAE,IAAImyB,EAAE,GAAGA,EAAE,GAAG,EAAE,QAAQ/2B,EAAE,EAAE2G,EAAE,EAAEA,EAAE,QAAQA,GAAG,EAAE,CAAC,QAAQ8qG,EAAEjmE,KAAK0wH,KAAK1wH,KAAKkqU,KAAK/uW,IAAIksD,EAAE,EAAEA,EAAE7yD,GAAG+2B,EAAE87B,IAAI4+C,GAAG9qG,EAAEowB,EAAE87B,IAAI,EAAEA,KAAK7yD,IAAI6yD,GAAG97B,EAAE87B,IAAI4+C,IAAI16E,EAAE/2B,KAAK2G,EAAE,CAAC,OAAO/B,EAAEmyB,EAAEA,CAAC,CAAyBm3C,GAAIvnE,EAAE,EAAEA,EAAE3G,EAAEynB,OAAO9gB,IAAI,GAAG,IAAIowB,EAAE02nC,KAAKztpC,EAAE2G,IAAI,OAAO,IAAIowB,EAAEm9nC,KAAKl0pC,EAAE2G,IAAI,OAAM,CAAE,CAAC,SAASmhD,EAAE/wB,GAAG,IAAI/2B,EAAE6yD,EAAEskmC,KAAKpgoC,GAAG,OAAO,IAAI4uG,EAAEovhC,MAAM/0pC,GAAGo2pC,OAAOr/nC,EAAEs8nC,KAAK,IAAI6B,UAAUhB,KAAK,EAAE,CAAC,SAAS93lC,EAAErlC,EAAE/2B,GAAG,GAAG+2B,EAAE,GAAG,OAAO,IAAI87B,EAAE,IAAI7yD,GAAG,IAAIA,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI2G,EAAE/B,EAAE,IAAI5E,EAAE,IAAI6yD,EAAE7yD,KAAK,CAAC,IAAI2G,EAAE,IAAIksD,EAAE4+C,EAAEjmE,KAAK0wH,KAAKnlI,EAAE,KAAKpwB,EAAEsnpC,YAAYl3nC,GAAGpwB,EAAEispC,MAAM,GAAG,GAAGjspC,EAAEmtpC,UAAUntpC,EAAE6opC,KAAK9wmC,GAAG/3C,EAAE4npC,MAAM,IAAI5npC,EAAE6opC,KAAK7phC,GAAG3lI,EAAEqlN,IAAI1/E,IAAI,IAAI3lI,EAAEqlN,IAAIruG,GAAG,KAAKrwG,EAAEw+H,IAAInkE,GAAGqkJ,IAAIihC,IAAI3/O,EAAE6opC,KAAK1m/B,QAAQ,KAAKniK,EAAEw+H,IAAI5xG,GAAG8xL,IAAIhpK,IAAI11C,EAAE6opC,KAAK1m/B,GAAG,GAAGlqH,EAAEh6C,EAAE+B,EAAEospC,KAAK,KAAKn0mC,EAAEj4C,IAAImhD,EAAEljD,IAAIkjD,EAAEnhD,IAAIwsD,EAAE9pB,KAAKzkC,IAAIuuD,EAAE9pB,KAAK1iC,GAAG,OAAOA,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,IAAI,eAAe,IAAIq2pC,YAAY,MAAM,IAAI,CAAC,SAASjmoC,EAAE/2B,EAAE2G,GAAG3G,EAAE4krB,QAAQ,CAACwpf,MAAM,CAACb,IAAI,KAAK5W,MAAM,oMAAoM0X,MAAM,CAACd,IAAI,KAAK5W,MAAM,oQAAoQ2X,MAAM,CAACf,IAAI,KAAK5W,MAAM,oYAAoY4X,OAAO,CAAChB,IAAI,KAAK5W,MAAM,ogBAAogB6X,OAAO,CAACjB,IAAI,KAAK5W,MAAM,owBAAowB8X,OAAO,CAAClB,IAAI,KAAK5W,MAAM,ogCAAogC+X,OAAO,CAACnB,IAAI,KAAK5W,MAAM,ogDAAogDgY,OAAO,CAACpB,IAAI,KAAK5W,MAAM,ogEAAogE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS5/nC,EAAE/2B,EAAE2G,GAAGmvB,UAAU,GAAG,KAAK,GAAGD,MAAMlvB,EAAEmvB,UAAU,EAAE,CAAC01M,OAAO,IAAIs47B,IAAI,MAAM,IAAI,CAAC,SAAS/soC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE9qG,EAAE8qG,EAAEwmJ,QAAQlhO,EAAE,mBAAmBkhO,QAAQxmJ,EAAEuic,MAAMj9gB,EAAE,oBAAoB06E,EAAEmmjC,KAAK7goC,EAAE,WAAW06E,EAAE8riB,MAAMxmnB,EAAE,oBAAoB06E,EAAE25iB,OAAOr0nB,EAAE,qBAAqB06E,EAAE2sjC,GAAGrnoC,EAAE,iBAAiB06E,EAAEm9jC,MAAM73oC,EAAE,mBAAmB,EAAE,CAAC,kBAAkB,IAAI,mBAAmB,IAAI,oBAAoB,IAAI,gBAAgB,IAAI,mBAAmB,IAAI,mBAAmB,IAAI83oC,QAAQ,MAAM,IAAI,CAAC,SAAS93oC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,SAAS87B,EAAE97B,EAAE,YAAYxD,EAAEs/B,EAAEi8mC,OAAO37mC,EAAEN,EAAEk8mC,OAAOrwnC,EAAEmU,EAAEm8mC,OAAO,SAASrpiC,EAAE5uG,EAAE/2B,GAAGH,KAAKyE,KAAKyyB,EAAEl3B,KAAK+E,EAAE,IAAI6sG,EAAEzxG,EAAE4E,EAAE,IAAI/E,KAAKktW,IAAI/sW,EAAE22pC,MAAMlljC,EAAEs7P,IAAI/sW,EAAE22pC,OAAOlljC,EAAE0ljC,KAAKt3pC,KAAK+E,GAAG/E,KAAK2yW,KAAK,IAAI/gQ,EAAE,GAAGsjjC,MAAMl1pC,KAAKktW,KAAKltW,KAAKiyU,IAAI,IAAIrgO,EAAE,GAAGsjjC,MAAMl1pC,KAAKktW,KAAKltW,KAAKovqC,IAAI,IAAIx9jC,EAAE,GAAGsjjC,MAAMl1pC,KAAKktW,KAAKltW,KAAK4xG,EAAEzxG,EAAEyxG,GAAG,IAAIA,EAAEzxG,EAAEyxG,EAAE,IAAI5xG,KAAKioD,EAAE9nD,EAAE8nD,GAAGjoD,KAAKqvqC,cAAclvqC,EAAE8nD,EAAE9nD,EAAEmvqC,MAAMtvqC,KAAKuvqC,QAAQ,IAAIntqC,MAAM,GAAGpC,KAAKwvqC,QAAQ,IAAIptqC,MAAM,GAAGpC,KAAKyvqC,QAAQ,IAAIrtqC,MAAM,GAAGpC,KAAK0vqC,QAAQ,IAAIttqC,MAAM,GAAGpC,KAAK2vqC,WAAW3vqC,KAAK4xG,EAAE5xG,KAAK4xG,EAAEw8iC,YAAY,EAAE,IAAItnpC,EAAE9G,KAAK4xG,GAAG5xG,KAAK+E,EAAEythB,IAAIxyhB,KAAK4xG,IAAI9qG,GAAGA,EAAEutpC,KAAK,KAAK,EAAEr0pC,KAAK4vqC,KAAK,MAAM5vqC,KAAK6vqC,eAAc,EAAG7vqC,KAAK4vqC,KAAK5vqC,KAAK4xG,EAAEsjjC,MAAMl1pC,KAAKktW,KAAK,CAAC,SAAS/1P,EAAEjgF,EAAE/2B,GAAGH,KAAK09oB,MAAMxmnB,EAAEl3B,KAAKyE,KAAKtE,EAAEH,KAAK8vqC,YAAY,IAAI,CAAC3vqC,EAAE4krB,QAAQj/iB,EAAEA,EAAEh9F,UAAU0kG,MAAM,WAAW,MAAM,IAAI5vC,MAAM,kBAAkB,EAAEkoC,EAAEh9F,UAAU6vd,SAAS,WAAW,MAAM,IAAI/6Z,MAAM,kBAAkB,EAAEkoC,EAAEh9F,UAAUinoC,aAAa,SAAS74oC,EAAE/2B,GAAG0+C,EAAE3nB,EAAE44oC,aAAa,IAAIhpqC,EAAEowB,EAAE84oC,cAAcp+jC,EAAEl+E,EAAEvzB,EAAE,EAAEH,KAAK2vqC,YAAY38mC,GAAG,GAAGlsD,EAAEs1W,KAAK,IAAIt1W,EAAEs1W,KAAK,GAAG,EAAE,EAAE,GAAGppT,GAAG,EAAE,IAAIM,EAAEwyE,EAAE3uB,EAAE,GAAG,IAAI7jD,EAAE,EAAEA,EAAEs+C,EAAEhqF,OAAO0rC,GAAGxsD,EAAEs1W,KAAK,CAACt2O,EAAE,EAAE,QAAQ3kE,EAAE7N,EAAExsD,EAAEs1W,KAAK,EAAEj7S,GAAG7N,EAAE6N,IAAI2kE,GAAGA,GAAG,GAAGl0B,EAAEzwC,GAAGg2C,EAAEt0G,KAAKijI,EAAE,CAAC,QAAQ2gH,EAAEzmP,KAAKiwqC,OAAO,KAAK,KAAK,MAAMzznC,EAAEx8C,KAAKiwqC,OAAO,KAAK,KAAK,MAAMhngC,EAAEj2G,EAAEi2G,EAAE,EAAEA,IAAI,CAAC,IAAI31G,EAAE,EAAEA,EAAE6jD,EAAEvvF,OAAO0rC,KAAKwyE,EAAE3uB,EAAE7jD,MAAM21G,EAAEzsH,EAAEA,EAAE0znC,SAASppqC,EAAEk6X,OAAO1tU,IAAIwyE,KAAKmjC,IAAIzsH,EAAEA,EAAE0znC,SAASppqC,EAAEk6X,OAAO1tU,GAAGw7lC,QAAQro6B,EAAEA,EAAE93J,IAAInyC,EAAE,CAAC,OAAOiqM,EAAE0p7B,KAAK,EAAErqiC,EAAEh9F,UAAUsnoC,SAAS,SAASl5oC,EAAE/2B,GAAwC,IAArC,IAAI2G,EAAE,EAAE8qG,EAAE16E,EAAEm5oC,cAAcvpqC,GAAmBksD,EAAE4+C,EAAEovR,OAAO1tU,EAAE5/B,EAAEvzB,EAA/B2G,EAAE8qG,EAAE0+jC,IAA+BtwqC,KAAK2vqC,YAAY7piC,EAAE9lI,KAAKiwqC,OAAO,KAAK,KAAK,MAAM94jC,EAAE7jD,EAAE1rC,OAAO,EAAEuvF,GAAG,EAAEA,IAAI,CAAC,QAAQh2C,EAAE,EAAEg2C,GAAG,GAAG,IAAI7jD,EAAE6jD,GAAGA,IAAIh2C,IAAI,GAAGg2C,GAAG,GAAGh2C,IAAI2kE,EAAEA,EAAEyqiC,KAAKpvmC,GAAGg2C,EAAE,EAAE,MAAM,IAAIsvI,EAAEnzL,EAAE6jD,GAAGt4D,EAAE,IAAI4nM,GAAG3gH,EAAE,WAAW5uG,EAAEzyB,KAASqhI,EAAEoqiC,SAANzp7B,EAAE,EAAazzL,EAAEyzL,EAAE,GAAG,GAAezzL,GAAGyzL,EAAE,GAAG,GAAGqo6B,OAAWhphC,EAAEn3C,IAAN83J,EAAE,EAAQzzL,EAAEyzL,EAAE,GAAG,GAAUzzL,GAAGyzL,EAAE,GAAG,GAAGqo6B,MAAM,CAAC,MAAM,WAAW53nC,EAAEzyB,KAAKqhI,EAAEqqiC,MAAMrqiC,CAAC,EAAEA,EAAEh9F,UAAU0noC,YAAY,SAASt5oC,EAAE/2B,EAAE2G,EAAE8qG,EAAE5+C,GAAG,IAAInU,EAAEinF,EAAE3uB,EAAEh2C,EAAEnhE,KAAKuvqC,QAAQ9o7B,EAAEzmP,KAAKwvqC,QAAQhznC,EAAEx8C,KAAKyvqC,QAAQxmgC,EAAE,EAAE,IAAIpqH,EAAE,EAAEA,EAAE+yD,EAAE/yD,IAAI,CAAC,IAAI95C,GAAGoyG,EAAEh3G,EAAE0+C,IAAIwxnC,cAAcn5oC,GAAGiqC,EAAEtiB,GAAG95C,EAAEurqC,IAAI7p7B,EAAE5nM,GAAG95C,EAAEi8X,MAAM,CAAC,IAAIniV,EAAE+yD,EAAE,EAAE/yD,GAAG,EAAEA,GAAG,EAAE,CAAC,IAAIwvB,EAAExvB,EAAE,EAAEE,EAAEF,EAAE,GAAG,IAAIsiB,EAAEkN,IAAI,IAAIlN,EAAEpiB,GAAG,CAAC,IAAIkJ,GAAE,CAAC9nD,EAAEkuE,GAAG,KAAK,KAAKluE,EAAE4+C,IAAI,IAAI5+C,EAAEkuE,GAAG9R,EAAEipJ,IAAIrlN,EAAE4+C,GAAGwd,IAAItU,GAAE,GAAG9nD,EAAEkuE,GAAGsgB,IAAIxuF,EAAE4+C,IAAIkJ,GAAE,GAAG9nD,EAAEkuE,GAAGoimC,MAAMP,SAAS/vqC,EAAE4+C,GAAG+vmC,QAAQ,IAAI3upC,EAAEkuE,GAAG9R,EAAEipJ,IAAIrlN,EAAE4+C,GAAGwd,EAAE+5lC,WAAWrumC,GAAE,GAAG9nD,EAAEkuE,GAAGoimC,MAAMP,SAAS/vqC,EAAE4+C,IAAIkJ,GAAE,GAAG9nD,EAAEkuE,GAAGsgB,IAAIxuF,EAAE4+C,GAAG+vmC,SAAS7mmC,GAAE,GAAG9nD,EAAEkuE,GAAGoimC,MAAMP,SAAS/vqC,EAAE4+C,IAAIkJ,GAAE,GAAG9nD,EAAEkuE,GAAGoimC,MAAMP,SAAS/vqC,EAAE4+C,GAAG+vmC,QAAQ,IAAIvylC,GAAE,EAAC,GAAG,GAAG,GAAG,EAAG,EAAE,EAAE,EAAE,EAAE,GAAGj6D,GAAEgxD,EAAExsD,EAAEunE,GAAGvnE,EAAEi4C,IAAI,IAAIkqH,EAAEt9H,KAAKC,IAAItpC,GAAE,GAAGslB,OAAOqhJ,GAAGzsH,EAAE6xB,GAAG,IAAIjsE,MAAM6mK,GAAGzsH,EAAEuC,GAAG,IAAI38C,MAAM6mK,GAAGnjC,EAAE,EAAEA,EAAEmjC,EAAEnjC,IAAiCtpF,EAAE6xB,GAAGy3D,GAAGvpE,GAAE,GAAK,GAArC,EAAEj6D,GAAE,GAAGwjI,MAAoC,GAA/B,EAAExjI,GAAE,GAAGwjI,MAA4BtpF,EAAEuC,GAAG+mF,GAAG,EAAE2gH,EAAEp4K,GAAGpmB,EAAE,MAAMzL,EAAE6xB,GAAG36C,EAAE5sB,EAAEunE,GAAGlN,EAAEkN,GAAGruE,KAAK2vqC,YAAYnznC,EAAEuC,GAAGrrB,EAAE5sB,EAAEi4C,GAAGoiB,EAAEpiB,GAAG/+C,KAAK2vqC,YAAY1mgC,EAAEt9H,KAAKC,IAAI4Q,EAAE6xB,GAAGzmD,OAAOqhJ,GAAGA,EAAEt9H,KAAKC,IAAI4Q,EAAEuC,GAAGn3B,OAAOqhJ,EAAE,CAAC,IAAIthJ,EAAE3nB,KAAKiwqC,OAAO,KAAK,KAAK,MAAMpqiC,EAAE7lI,KAAK0vqC,QAAQ,IAAI7wnC,EAAEoqH,EAAEpqH,GAAG,EAAEA,IAAI,CAAC,QAAQ8xR,EAAE,EAAE9xR,GAAG,GAAG,CAAC,IAAIywR,GAAE,EAAG,IAAIxpM,EAAE,EAAEA,EAAEl0B,EAAEk0B,IAAID,EAAEC,GAAG,EAAEtpF,EAAEspF,GAAGjnF,GAAG,IAAIgnF,EAAEC,KAAKwpM,GAAE,GAAI,IAAIA,EAAE,MAAMqB,IAAI9xR,GAAG,CAAC,GAAGA,GAAG,GAAG8xR,IAAIhpT,EAAEA,EAAE4opC,KAAK5/1B,GAAG9xR,EAAE,EAAE,MAAM,IAAIinF,EAAE,EAAEA,EAAEl0B,EAAEk0B,IAAI,CAAC,IAAIomnB,EAAErmnB,EAAEC,GAAG,IAAIomnB,IAAIA,EAAE,EAAE/0oB,EAAEsvI,EAAE3gH,GAAGomnB,EAAE,GAAG,GAAGA,EAAE,IAAI/0oB,EAAEsvI,EAAE3gH,IAAIomnB,EAAE,GAAG,GAAG4ia,OAAOnnoC,EAAE,WAAWwvF,EAAE1yG,KAAKkjB,EAAEuopC,SAAS/4jC,GAAGxvF,EAAEgnE,IAAIwoB,GAAG,CAAC,CAAC,IAAIt4D,EAAE,EAAEA,EAAE+yD,EAAE/yD,IAAI4nM,EAAE5nM,GAAG,KAAK,OAAOmU,EAAErrC,EAAEA,EAAEwopC,KAAK,EAAErqiC,EAAE4qiC,UAAUv5jC,EAAEA,EAAEruE,UAAUq2K,GAAG,WAAW,MAAM,IAAIvhH,MAAM,kBAAkB,EAAEuZ,EAAEruE,UAAU6vd,SAAS,WAAW,OAAO34f,KAAK09oB,MAAM/kJ,SAAS34f,KAAK,EAAE8lI,EAAEh9F,UAAU6noC,YAAY,SAASz5oC,EAAE/2B,GAAG+2B,EAAE87B,EAAE0ogB,QAAQxkiB,EAAE/2B,GAAG,IAAI2G,EAAE9G,KAAK+E,EAAE66U,aAAa,IAAI,IAAI1oT,EAAE,IAAI,IAAIA,EAAE,IAAI,IAAIA,EAAE,KAAKA,EAAEtP,OAAO,GAAG,EAAE9gB,EAAE,OAAO,IAAIowB,EAAE,GAAG2nB,EAAE3nB,EAAEA,EAAEtP,OAAO,GAAG,GAAG,GAAG,IAAIsP,EAAE,IAAI2nB,EAAE3nB,EAAEA,EAAEtP,OAAO,GAAG,GAAG,GAAG5nB,KAAKwtI,MAAMt2G,EAAEpE,MAAM,EAAE,EAAEhsB,GAAGowB,EAAEpE,MAAM,EAAEhsB,EAAE,EAAE,EAAEA,IAAI,IAAI,IAAIowB,EAAE,IAAI,IAAIA,EAAE,KAAKA,EAAEtP,OAAO,IAAI9gB,EAAE,OAAO9G,KAAK4wqC,WAAW15oC,EAAEpE,MAAM,EAAE,EAAEhsB,GAAG,IAAIowB,EAAE,IAAI,MAAM,IAAI0mE,MAAM,uBAAuB,EAAEuZ,EAAEruE,UAAU+noC,iBAAiB,SAAS35oC,GAAG,OAAOl3B,KAAK458B,OAAO1i7B,GAAE,EAAG,EAAEigF,EAAEruE,UAAUgx6B,QAAQ,SAAS5i7B,GAAG,IAAI/2B,EAAEH,KAAK09oB,MAAM34oB,EAAE66U,aAAa94U,EAAE9G,KAAK+tlB,OAAOryB,QAAQ,KAAKv7jB,GAAG,OAAO+2B,EAAE,CAACl3B,KAAKiulB,OAAOgmkB,SAAS,EAAE,GAAG/pmC,OAAOpjD,GAAG,CAAC,GAAGojD,OAAOpjD,EAAE9G,KAAKiulB,OAAOvyB,QAAQ,KAAKv7jB,GAAG,EAAEg3G,EAAEruE,UAAU8w6B,OAAO,SAAS1i7B,EAAE/2B,GAAG,OAAO6yD,EAAE4m5B,OAAO558B,KAAK858B,QAAQ358B,GAAG+2B,EAAE,EAAEigF,EAAEruE,UAAUgooC,WAAW,SAAS55oC,GAAG,GAAGl3B,KAAK8vqC,YAAY,OAAO9vqC,KAAK,IAAIG,EAAE,CAAC4wqC,QAAQ,KAAKC,IAAI,KAAK/ljB,KAAK,MAAM,OAAO9qnB,EAAE6wqC,IAAIhxqC,KAAKqwqC,cAAc,GAAGlwqC,EAAE4wqC,QAAQ/wqC,KAAKgwqC,YAAY,EAAE94oC,GAAG/2B,EAAE8qnB,KAAKjrnB,KAAKixqC,WAAWjxqC,KAAK8vqC,YAAY3vqC,EAAEH,IAAI,EAAEm3G,EAAEruE,UAAUoooC,YAAY,SAASh6oC,GAAG,IAAIl3B,KAAK8vqC,YAAY,OAAM,EAAG,IAAI3vqC,EAAEH,KAAK8vqC,YAAYiB,QAAQ,QAAQ5wqC,GAAGA,EAAE6gY,OAAOp5W,QAAQ+jB,KAAK0wH,MAAMnlI,EAAEk3nC,YAAY,GAAGjupC,EAAEi8W,KAAK,EAAEjlQ,EAAEruE,UAAUknoC,YAAY,SAAS94oC,EAAE/2B,GAAG,GAAGH,KAAK8vqC,aAAa9vqC,KAAK8vqC,YAAYiB,QAAQ,OAAO/wqC,KAAK8vqC,YAAYiB,QAAQ,QAAQjqqC,EAAE,CAAC9G,MAAM4xG,EAAE5xG,KAAKgzD,EAAE,EAAEA,EAAE7yD,EAAE6yD,GAAG97B,EAAE,CAAC,QAAQxD,EAAE,EAAEA,EAAEwD,EAAExD,IAAIk+E,EAAEA,EAAEu/jC,MAAMrqqC,EAAEjE,KAAK+uG,EAAE,CAAC,MAAM,CAACwqQ,KAAKllV,EAAE8pW,OAAOl6X,EAAE,EAAEqwG,EAAEruE,UAAUunoC,cAAc,SAASn5oC,GAAG,GAAGl3B,KAAK8vqC,aAAa9vqC,KAAK8vqC,YAAYkB,IAAI,OAAOhxqC,KAAK8vqC,YAAYkB,IAAI,QAAQ7wqC,EAAE,CAACH,MAAM8G,GAAG,GAAGowB,GAAG,EAAE06E,EAAE,IAAI9qG,EAAE,KAAK9G,KAAKmxqC,MAAMn+mC,EAAE,EAAEA,EAAElsD,EAAEksD,IAAI7yD,EAAE6yD,GAAG7yD,EAAE6yD,EAAE,GAAG27B,IAAIijB,GAAG,MAAM,CAAC0+jC,IAAIp5oC,EAAE8pW,OAAO7gY,EAAE,EAAEg3G,EAAEruE,UAAUmooC,SAAS,WAAW,OAAO,IAAI,EAAE95jC,EAAEruE,UAAUynoC,KAAK,SAASr5oC,GAAG,QAAQ/2B,EAAEH,KAAK8G,EAAE,EAAEA,EAAEowB,EAAEpwB,IAAI3G,EAAEA,EAAEgxqC,MAAM,OAAOhxqC,CAAC,CAAC,EAAE,CAAC,WAAW,IAAI,QAAQ,MAAM,IAAI,CAAC,SAAS+2B,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,YAAY87B,EAAE97B,EAAE,SAASxD,EAAEwD,EAAE,YAAYo8B,EAAEp8B,EAAE,UAAU2nB,EAAE+yD,EAAEu9jC,OAAO,SAASrpiC,EAAE5uG,GAAGl3B,KAAKoxqC,QAAQ,IAAI,EAAEl6oC,EAAE2nB,GAAG7+C,KAAKqxqC,MAAMrxqC,KAAKoxqC,UAAS,IAAK,EAAEl6oC,EAAE2nB,GAAG7+C,KAAKmzP,SAASnzP,KAAKqxqC,MAAM/9mC,EAAEvqB,KAAK/oC,KAAK,UAAUk3B,GAAGl3B,KAAK6+C,EAAE,IAAImU,EAAE97B,EAAE2nB,EAAE,IAAIi1mC,KAAK9zpC,KAAKktW,IAAI7+R,GAAGruE,KAAK6+C,EAAE7+C,KAAK6+C,EAAEq2mC,MAAMl1pC,KAAKktW,KAAKltW,KAAKm3G,EAAE,IAAInkD,EAAE97B,EAAEigF,EAAE,IAAI+9iC,MAAMl1pC,KAAKktW,KAAKltW,KAAKsxqC,GAAGtxqC,KAAKm3G,EAAE8+iC,SAASj2pC,KAAKipK,EAAE,IAAIj2G,EAAE97B,EAAE+xI,EAAE,IAAIis/B,MAAMl1pC,KAAKktW,KAAKltW,KAAK6xE,GAAG7xE,KAAKipK,EAAEus/B,OAAOx1pC,KAAKipK,GAAGpqH,GAAG7+C,KAAKoxqC,SAAS,IAAIpxqC,KAAKm3G,EAAEk+iC,UAAUhB,KAAK,IAAIr0pC,KAAKuxqC,KAAK,IAAI,EAAEr6oC,EAAEigF,EAAE,CAAC,SAASA,EAAEjgF,EAAE/2B,EAAE2G,EAAE8qG,EAAEl+E,GAAG4/B,EAAEo9mC,UAAU3noC,KAAK/oC,KAAKk3B,EAAE,cAAc,OAAO/2B,GAAG,OAAO2G,GAAG,OAAO8qG,GAAG5xG,KAAK2nB,EAAE3nB,KAAK09oB,MAAM/qS,KAAK3yW,KAAKu8D,EAAEv8D,KAAK09oB,MAAMzrU,IAAIjyU,KAAKixU,EAAEjxU,KAAK09oB,MAAMzrU,IAAIjyU,KAAKG,EAAEH,KAAK09oB,MAAM/qS,KAAK3yW,KAAKwxqC,MAAK,IAAKxxqC,KAAK2nB,EAAE,IAAIqrC,EAAE7yD,EAAE,IAAIH,KAAKu8D,EAAE,IAAIvJ,EAAElsD,EAAE,IAAI9G,KAAKixU,EAAEr/N,EAAE,IAAI5+C,EAAE4+C,EAAE,IAAI5xG,KAAK09oB,MAAMzrU,IAAIjyU,KAAKG,EAAEuzB,GAAG,IAAIs/B,EAAEt/B,EAAE,IAAI1zB,KAAK2nB,EAAEulV,MAAMltW,KAAK2nB,EAAE3nB,KAAK2nB,EAAEutoC,MAAMl1pC,KAAK09oB,MAAMxwS,MAAMltW,KAAKu8D,EAAE2wS,MAAMltW,KAAKu8D,EAAEv8D,KAAKu8D,EAAE24lC,MAAMl1pC,KAAK09oB,MAAMxwS,MAAMltW,KAAKixU,EAAEi8B,MAAMltW,KAAKixU,EAAEjxU,KAAKixU,EAAEik1B,MAAMl1pC,KAAK09oB,MAAMxwS,MAAMltW,KAAKG,IAAIH,KAAKG,EAAE+sW,MAAMltW,KAAKG,EAAEH,KAAKG,EAAE+0pC,MAAMl1pC,KAAK09oB,MAAMxwS,MAAMltW,KAAKwxqC,KAAKxxqC,KAAKixU,IAAIjxU,KAAK09oB,MAAMzrU,IAAIjyU,KAAK09oB,MAAMvqZ,WAAWnzP,KAAKG,IAAIH,KAAKG,EAAEH,KAAK2nB,EAAEmuoC,OAAO91pC,KAAKu8D,GAAGv8D,KAAKwxqC,OAAOxxqC,KAAKG,EAAEH,KAAKG,EAAE21pC,OAAO91pC,KAAKixU,EAAEol1B,aAAa,CAAC3ioC,EAAEoyG,EAAExyE,GAAGnzD,EAAE4krB,QAAQj/iB,EAAEA,EAAEh9F,UAAU2ooC,MAAM,SAASv6oC,GAAG,OAAOl3B,KAAKqxqC,MAAMn6oC,EAAEo/nC,SAASt2pC,KAAK6+C,EAAEi3mC,OAAO5+nC,EAAE,EAAE4uG,EAAEh9F,UAAU4ooC,MAAM,SAASx6oC,GAAG,OAAOl3B,KAAKuxqC,KAAKr6oC,EAAEl3B,KAAKm3G,EAAE2+iC,OAAO5+nC,EAAE,EAAE4uG,EAAEh9F,UAAUmnoC,OAAO,SAAS/4oC,EAAE/2B,EAAE2G,EAAE8qG,GAAG,OAAO5xG,KAAKwtI,MAAMt2G,EAAE/2B,EAAE2G,EAAE8qG,EAAE,EAAEk0B,EAAEh9F,UAAU8noC,WAAW,SAAS15oC,EAAE/2B,IAAI+2B,EAAE,IAAI87B,EAAE97B,EAAE,KAAKg2U,MAAMh2U,EAAEA,EAAEg+nC,MAAMl1pC,KAAKktW,MAAM,IAAIpmW,EAAEowB,EAAE++nC,SAASrkjC,EAAE5xG,KAAKsxqC,GAAG5b,OAAO11pC,KAAK6+C,EAAEi3mC,OAAOhvpC,IAAI4sB,EAAE1zB,KAAKiyU,IAAIyj1B,OAAO11pC,KAAKsxqC,GAAGxb,OAAO91pC,KAAKipK,GAAG6s/B,OAAOhvpC,IAAIwsD,EAAEs+C,EAAEkkjC,OAAOpioC,EAAE2ioC,WAAWx3mC,EAAEyU,EAAE8imC,UAAU,GAAG,IAAIv3mC,EAAEo3mC,SAASP,OAAOpimC,GAAGkyJ,IAAIxlN,KAAK2yW,MAAM,MAAM,IAAI/0Q,MAAM,iBAAiB,IAAIkoC,EAAEjnF,EAAEw2mC,UAAUnB,QAAQ,OAAO/zpC,IAAI2lI,IAAI3lI,GAAG2lI,KAAKjnF,EAAEA,EAAEy3mC,UAAUt2pC,KAAKwtI,MAAMt2G,EAAE2nB,EAAE,EAAEinF,EAAEh9F,UAAU6ooC,WAAW,SAASz6oC,EAAE/2B,IAAI+2B,EAAE,IAAI87B,EAAE97B,EAAE,KAAKg2U,MAAMh2U,EAAEA,EAAEg+nC,MAAMl1pC,KAAKktW,MAAM,IAAIpmW,EAAEowB,EAAE++nC,SAASrkjC,EAAE9qG,EAAE4upC,OAAO11pC,KAAKsxqC,IAAI59oC,EAAE5sB,EAAEgvpC,OAAO91pC,KAAKipK,GAAG6s/B,OAAO91pC,KAAKsxqC,IAAI5b,OAAO11pC,KAAK6+C,GAAGyU,EAAEs+C,EAAEkkjC,OAAOpioC,EAAE2ioC,WAAW,GAAG,IAAI/imC,EAAEkyJ,IAAIxlN,KAAK2yW,MAAM,CAAC,GAAGxyW,EAAE,MAAM,IAAIy9F,MAAM,iBAAiB,OAAO59F,KAAKwtI,MAAMxtI,KAAK2yW,KAAKz7U,EAAE,CAAC,IAAI2nB,EAAEyU,EAAE8imC,UAAU,GAAG,IAAIv3mC,EAAEo3mC,SAASP,OAAOpimC,GAAGkyJ,IAAIxlN,KAAK2yW,MAAM,MAAM,IAAI/0Q,MAAM,iBAAiB,OAAO/+C,EAAEw2mC,UAAUnB,UAAU/zpC,IAAI0+C,EAAEA,EAAEy3mC,UAAUt2pC,KAAKwtI,MAAM3uF,EAAE3nB,EAAE,EAAE4uG,EAAEh9F,UAAU6vd,SAAS,SAASzhe,GAAG,GAAGA,EAAE06oC,aAAa,OAAM,EAAG16oC,EAAEwwV,YAAY,IAAIvnX,EAAE+2B,EAAEvP,EAAEsuoC,SAASnvpC,EAAEowB,EAAEqlC,EAAE05lC,SAASrkjC,EAAEzxG,EAAE21pC,OAAO91pC,KAAK6+C,GAAG22mC,OAAO1upC,GAAGksD,EAAEhzD,KAAKsxqC,GAAGxb,OAAO91pC,KAAKiyU,IAAIuj1B,OAAOx1pC,KAAKipK,EAAE6s/B,OAAO31pC,GAAG21pC,OAAOhvpC,KAAK,OAAO,IAAI8qG,EAAE4zG,IAAIxyJ,EAAE,EAAEt/B,EAAEyjF,EAAE7jD,EAAEo9mC,WAAW5qiC,EAAEh9F,UAAUumoC,cAAc,SAASn4oC,GAAG,OAAOigF,EAAE06jC,SAAS7xqC,KAAKk3B,EAAE,EAAE4uG,EAAEh9F,UAAU0kG,MAAM,SAASt2G,EAAE/2B,EAAE2G,EAAE8qG,GAAG,OAAO,IAAIuF,EAAEn3G,KAAKk3B,EAAE/2B,EAAE2G,EAAE8qG,EAAE,EAAEuF,EAAE06jC,SAAS,SAAS36oC,EAAE/2B,GAAG,OAAO,IAAIg3G,EAAEjgF,EAAE/2B,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG,EAAEg3G,EAAEruE,UAAU4knC,QAAQ,WAAW,OAAO1tpC,KAAK4xqC,aAAa,sBAAsB,gBAAgB5xqC,KAAK2nB,EAAE0toC,UAAUltoC,SAAS,GAAG,GAAG,OAAOnoB,KAAKu8D,EAAE84lC,UAAUltoC,SAAS,GAAG,GAAG,OAAOnoB,KAAKixU,EAAEok1B,UAAUltoC,SAAS,GAAG,GAAG,GAAG,EAAEgvF,EAAEruE,UAAU8ooC,WAAW,WAAW,OAAO,IAAI5xqC,KAAK2nB,EAAE0soC,KAAK,KAAK,IAAIr0pC,KAAKu8D,EAAEipJ,IAAIxlN,KAAKixU,IAAIjxU,KAAKwxqC,MAAM,IAAIxxqC,KAAKu8D,EAAEipJ,IAAIxlN,KAAK09oB,MAAMvmiB,GAAG,EAAEA,EAAEruE,UAAUgpoC,QAAQ,WAAW,IAAI56oC,EAAEl3B,KAAK2nB,EAAEsuoC,SAAS91pC,EAAEH,KAAKu8D,EAAE05lC,SAASnvpC,EAAE9G,KAAKixU,EAAEgl1B,SAASnvpC,EAAEA,EAAE2upC,QAAQ3upC,GAAG,IAAI8qG,EAAE5xG,KAAK09oB,MAAM+zhB,MAAMv6oC,GAAG87B,EAAEhzD,KAAK2nB,EAAE6toC,OAAOx1pC,KAAKu8D,GAAG05lC,SAASN,QAAQz+nC,GAAGy+nC,QAAQx1pC,GAAGuzB,EAAEk+E,EAAE4jjC,OAAOr1pC,GAAGmzD,EAAE5/B,EAAEgioC,OAAO5upC,GAAG+3C,EAAE+yD,EAAE8jjC,OAAOv1pC,GAAG2lI,EAAE9yE,EAAE8imC,OAAOximC,GAAG6jD,EAAEzjF,EAAEoioC,OAAOj3mC,GAAGsiB,EAAEnO,EAAE8imC,OAAOj3mC,GAAG4nM,EAAEnzL,EAAEwimC,OAAOpioC,GAAG,OAAO1zB,KAAK09oB,MAAMlwgB,MAAM1H,EAAE3uB,EAAEsvI,EAAEtlL,EAAE,EAAEg2C,EAAEruE,UAAUipoC,SAAS,WAAW,IAAI76oC,EAAE/2B,EAAE2G,EAAE8qG,EAAE5+C,EAAEt/B,EAAE4/B,EAAEtzD,KAAK2nB,EAAE6toC,OAAOx1pC,KAAKu8D,GAAG05lC,SAASp3mC,EAAE7+C,KAAK2nB,EAAEsuoC,SAASnwhC,EAAE9lI,KAAKu8D,EAAE05lC,SAAS,GAAGj2pC,KAAK09oB,MAAM0zhB,QAAQ,CAAC,IAAIj6jC,GAAGvF,EAAE5xG,KAAK09oB,MAAM+zhB,MAAM5ynC,IAAI22mC,OAAO1vhC,GAAG9lI,KAAKwxqC,MAAMt6oC,EAAEo8B,EAAEoimC,OAAO72mC,GAAG62mC,OAAO5vhC,GAAGgwhC,OAAO3+iC,EAAEu+iC,OAAO11pC,KAAK09oB,MAAM0xhB,MAAMjvqC,EAAEg3G,EAAE2+iC,OAAOlkjC,EAAE8jjC,OAAO5vhC,IAAIh/H,EAAEqwG,EAAE8+iC,SAASP,OAAOv+iC,GAAGu+iC,OAAOv+iC,KAAKnkD,EAAEhzD,KAAKixU,EAAEgl1B,SAASvioC,EAAEyjF,EAAEu+iC,OAAO1imC,GAAG2imC,QAAQ3imC,GAAG97B,EAAEo8B,EAAEoimC,OAAO72mC,GAAG82mC,QAAQ7vhC,GAAGgwhC,OAAOpioC,GAAGvzB,EAAEg3G,EAAE2+iC,OAAOlkjC,EAAE8jjC,OAAO5vhC,IAAIh/H,EAAEqwG,EAAE2+iC,OAAOpioC,GAAG,MAAMk+E,EAAE/yD,EAAE22mC,OAAO1vhC,GAAG9yE,EAAEhzD,KAAK09oB,MAAMg0hB,MAAM1xqC,KAAKixU,GAAGgl1B,SAASvioC,EAAEk+E,EAAE8jjC,OAAO1imC,GAAG0imC,OAAO1imC,GAAG97B,EAAEl3B,KAAK09oB,MAAMg0hB,MAAMp+mC,EAAEqimC,QAAQ/jjC,IAAIkkjC,OAAOpioC,GAAGvzB,EAAEH,KAAK09oB,MAAMg0hB,MAAM9/jC,GAAGkkjC,OAAOj3mC,EAAE82mC,QAAQ7vhC,IAAIh/H,EAAE8qG,EAAEkkjC,OAAOpioC,GAAG,OAAO1zB,KAAK09oB,MAAMlwgB,MAAMt2G,EAAE/2B,EAAE2G,EAAE,EAAEqwG,EAAEruE,UAAUqooC,IAAI,WAAW,OAAOnxqC,KAAK4xqC,aAAa5xqC,KAAKA,KAAK09oB,MAAMvqZ,SAASnzP,KAAK8xqC,UAAU9xqC,KAAK+xqC,UAAU,EAAE56jC,EAAEruE,UAAUkpoC,QAAQ,SAAS96oC,GAAG,IAAI/2B,EAAEH,KAAKu8D,EAAEm5lC,OAAO11pC,KAAK2nB,GAAGmuoC,OAAO5+nC,EAAEqlC,EAAEm5lC,OAAOx+nC,EAAEvP,IAAI7gB,EAAE9G,KAAKu8D,EAAEi5lC,OAAOx1pC,KAAK2nB,GAAGmuoC,OAAO5+nC,EAAEqlC,EAAEi5lC,OAAOt+nC,EAAEvP,IAAIiqF,EAAE5xG,KAAKG,EAAE21pC,OAAO91pC,KAAK09oB,MAAM7rkB,IAAIiklC,OAAO5+nC,EAAE/2B,GAAG6yD,EAAEhzD,KAAKixU,EAAE6k1B,OAAO5+nC,EAAE+5S,EAAEuk1B,OAAOt+nC,EAAE+5S,IAAIv9S,EAAE5sB,EAAE4upC,OAAOv1pC,GAAGmzD,EAAEN,EAAE0imC,OAAO9jjC,GAAG/yD,EAAEmU,EAAEwimC,OAAO5jjC,GAAGk0B,EAAEh/H,EAAE0upC,OAAOr1pC,GAAGg3G,EAAEzjF,EAAEoioC,OAAOximC,GAAG6N,EAAEtiB,EAAEi3mC,OAAOhwhC,GAAG2gH,EAAE/yN,EAAEoioC,OAAOhwhC,GAAGtpF,EAAE8W,EAAEwimC,OAAOj3mC,GAAG,OAAO7+C,KAAK09oB,MAAMlwgB,MAAMr2B,EAAEh2C,EAAE3kB,EAAEiqM,EAAE,EAAEtvI,EAAEruE,UAAUmpoC,SAAS,SAAS/6oC,GAAG,IAAI/2B,EAAE2G,EAAE8qG,EAAE5xG,KAAKixU,EAAE6k1B,OAAO5+nC,EAAE+5S,GAAGj+Q,EAAE4+C,EAAEqkjC,SAASvioC,EAAE1zB,KAAK2nB,EAAEmuoC,OAAO5+nC,EAAEvP,GAAG2rC,EAAEtzD,KAAKu8D,EAAEu5lC,OAAO5+nC,EAAEqlC,GAAG1d,EAAE7+C,KAAK09oB,MAAMz0e,EAAE6s/B,OAAOpioC,GAAGoioC,OAAOximC,GAAGwyE,EAAE9yE,EAAE0imC,OAAO72mC,GAAGs4D,EAAEnkD,EAAEwimC,OAAO32mC,GAAGsiB,EAAEnhE,KAAK2nB,EAAE6toC,OAAOx1pC,KAAKu8D,GAAGu5lC,OAAO5+nC,EAAEvP,EAAE6toC,OAAOt+nC,EAAEqlC,IAAIo5lC,QAAQjioC,GAAGiioC,QAAQrimC,GAAGmzL,EAAE70I,EAAEkkjC,OAAOhwhC,GAAGgwhC,OAAO30lC,GAAG,OAAOnhE,KAAK09oB,MAAM0zhB,SAASjxqC,EAAEyxG,EAAEkkjC,OAAO3+iC,GAAG2+iC,OAAOximC,EAAEoimC,OAAO11pC,KAAK09oB,MAAM+zhB,MAAM/9oC,KAAK5sB,EAAEg/H,EAAEgwhC,OAAO3+iC,KAAKh3G,EAAEyxG,EAAEkkjC,OAAO3+iC,GAAG2+iC,OAAOximC,EAAEoimC,OAAOhioC,IAAI5sB,EAAE9G,KAAK09oB,MAAMg0hB,MAAM5riC,GAAGgwhC,OAAO3+iC,IAAIn3G,KAAK09oB,MAAMlwgB,MAAMi5G,EAAEtmP,EAAE2G,EAAE,EAAEqwG,EAAEruE,UAAU6lD,IAAI,SAASz3D,GAAG,OAAOl3B,KAAK4xqC,aAAa16oC,EAAEA,EAAE06oC,aAAa5xqC,KAAKA,KAAK09oB,MAAMvqZ,SAASnzP,KAAKgyqC,QAAQ96oC,GAAGl3B,KAAKiyqC,SAAS/6oC,EAAE,EAAEigF,EAAEruE,UAAU0pnC,IAAI,SAASt7nC,GAAG,OAAOl3B,KAAKkxqC,YAAYh6oC,GAAGl3B,KAAK09oB,MAAMqyhB,aAAa/vqC,KAAKk3B,GAAGl3B,KAAK09oB,MAAM0yhB,SAASpwqC,KAAKk3B,EAAE,EAAEigF,EAAEruE,UAAUopoC,OAAO,SAASh7oC,EAAE/2B,EAAE2G,GAAG,OAAO9G,KAAK09oB,MAAM8yhB,YAAY,EAAE,CAACxwqC,KAAKG,GAAG,CAAC+2B,EAAEpwB,GAAG,GAAE,EAAG,EAAEqwG,EAAEruE,UAAUqpoC,QAAQ,SAASj7oC,EAAE/2B,EAAE2G,GAAG,OAAO9G,KAAK09oB,MAAM8yhB,YAAY,EAAE,CAACxwqC,KAAKG,GAAG,CAAC+2B,EAAEpwB,GAAG,GAAE,EAAG,EAAEqwG,EAAEruE,UAAU4+U,UAAU,WAAW,GAAG1nX,KAAKwxqC,KAAK,OAAOxxqC,KAAK,IAAIk3B,EAAEl3B,KAAKixU,EAAEol1B,UAAU,OAAOr2pC,KAAK2nB,EAAE3nB,KAAK2nB,EAAEmuoC,OAAO5+nC,GAAGl3B,KAAKu8D,EAAEv8D,KAAKu8D,EAAEu5lC,OAAO5+nC,GAAGl3B,KAAKG,IAAIH,KAAKG,EAAEH,KAAKG,EAAE21pC,OAAO5+nC,IAAIl3B,KAAKixU,EAAEjxU,KAAK09oB,MAAMzrU,IAAIjyU,KAAKwxqC,MAAK,EAAGxxqC,IAAI,EAAEm3G,EAAEruE,UAAUgmnC,IAAI,WAAW,OAAO9upC,KAAK09oB,MAAMlwgB,MAAMxtI,KAAK2nB,EAAE2uoC,SAASt2pC,KAAKu8D,EAAEv8D,KAAKixU,EAAEjxU,KAAKG,GAAGH,KAAKG,EAAEm2pC,SAAS,EAAEn/iC,EAAEruE,UAAUiljB,KAAK,WAAW,OAAO/tlB,KAAK0nX,YAAY1nX,KAAK2nB,EAAE0toC,SAAS,EAAEl+iC,EAAEruE,UAAUmljB,KAAK,WAAW,OAAOjulB,KAAK0nX,YAAY1nX,KAAKu8D,EAAE84lC,SAAS,EAAEl+iC,EAAEruE,UAAUq2K,GAAG,SAASjoL,GAAG,OAAOl3B,OAAOk3B,GAAG,IAAIl3B,KAAK+tlB,OAAOvoY,IAAItuL,EAAE62jB,SAAS,IAAI/tlB,KAAKiulB,OAAOzoY,IAAItuL,EAAE+2jB,OAAO,EAAE92e,EAAEruE,UAAUspoC,OAAO,SAASl7oC,GAAG,IAAI/2B,EAAE+2B,EAAEg+nC,MAAMl1pC,KAAK09oB,MAAMxwS,KAAK4ozB,OAAO91pC,KAAKixU,GAAG,GAAG,IAAIjxU,KAAK2nB,EAAE69L,IAAIrlN,GAAG,OAAM,EAAG,QAAQ2G,EAAEowB,EAAE5tB,QAAQsoG,EAAE5xG,KAAK09oB,MAAMkyhB,KAAK9Z,OAAO91pC,KAAKixU,KAAK,CAAC,GAAGnqU,EAAE6opC,KAAK3vpC,KAAK09oB,MAAM9riB,GAAG9qG,EAAE0+M,IAAIxlN,KAAK09oB,MAAM34oB,IAAI,EAAE,OAAM,EAAG,GAAG5E,EAAEs1pC,QAAQ7jjC,GAAG,IAAI5xG,KAAK2nB,EAAE69L,IAAIrlN,GAAG,OAAM,CAAE,CAAC,EAAEg3G,EAAEruE,UAAUqnoC,IAAIh5jC,EAAEruE,UAAU4+U,UAAUvwQ,EAAEruE,UAAUonoC,SAAS/4jC,EAAEruE,UAAU6lD,GAAG,EAAE,CAAC,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI24iC,SAAS,MAAM,IAAI,CAAC,SAASpwmC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE9qG,EAAE8qG,EAAEg0H,KAAK1uM,EAAE,UAAU06E,EAAE2hO,MAAMr8S,EAAE,WAAW06E,EAAE0ljC,KAAKpgoC,EAAE,UAAU06E,EAAEygkC,QAAQn7oC,EAAE,YAAY,EAAE,CAAC,SAAS,IAAI,YAAY,IAAI,SAAS,IAAI,UAAU,MAAM,IAAI,CAAC,SAASA,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,SAAS87B,EAAE97B,EAAE,YAAYxD,EAAEwD,EAAE,UAAUo8B,EAAEp8B,EAAE,YAAY,SAAS2nB,EAAE3nB,GAAGxD,EAAEqV,KAAK/oC,KAAK,OAAOk3B,GAAGl3B,KAAK6+C,EAAE,IAAI+yD,EAAE16E,EAAE2nB,EAAE,IAAIq2mC,MAAMl1pC,KAAKktW,KAAKltW,KAAK++C,EAAE,IAAI6yD,EAAE16E,EAAE6nB,EAAE,IAAIm2mC,MAAMl1pC,KAAKktW,KAAKltW,KAAK2oB,GAAG,IAAIipF,EAAE,GAAGsjjC,MAAMl1pC,KAAKktW,KAAKmpzB,UAAUr2pC,KAAKovqC,IAAI,IAAIx9jC,EAAE,GAAGsjjC,MAAMl1pC,KAAKktW,KAAKltW,KAAKsyqC,IAAItyqC,KAAK2oB,GAAGmtoC,OAAO91pC,KAAK6+C,EAAE22mC,OAAOx1pC,KAAKovqC,KAAK,CAAC,SAAStpiC,EAAE5uG,EAAE/2B,EAAE2G,GAAG4sB,EAAEg9oC,UAAU3noC,KAAK/oC,KAAKk3B,EAAE,cAAc,OAAO/2B,GAAG,OAAO2G,GAAG9G,KAAK2nB,EAAE3nB,KAAK09oB,MAAMzrU,IAAIjyU,KAAKixU,EAAEjxU,KAAK09oB,MAAM/qS,OAAO3yW,KAAK2nB,EAAE,IAAIiqF,EAAEzxG,EAAE,IAAIH,KAAKixU,EAAE,IAAIr/N,EAAE9qG,EAAE,IAAI9G,KAAK2nB,EAAEulV,MAAMltW,KAAK2nB,EAAE3nB,KAAK2nB,EAAEutoC,MAAMl1pC,KAAK09oB,MAAMxwS,MAAMltW,KAAKixU,EAAEi8B,MAAMltW,KAAKixU,EAAEjxU,KAAKixU,EAAEik1B,MAAMl1pC,KAAK09oB,MAAMxwS,MAAM,CAACl6S,EAAEnU,EAAEnrB,GAAGvzB,EAAE4krB,QAAQlmoB,EAAEA,EAAE/V,UAAU6vd,SAAS,SAASzhe,GAAG,IAAI/2B,EAAE+2B,EAAEwwV,YAAY//V,EAAE7gB,EAAE3G,EAAE81pC,SAASrkjC,EAAE9qG,EAAEgvpC,OAAO31pC,GAAGq1pC,OAAO1upC,EAAEgvpC,OAAO91pC,KAAK6+C,IAAI22mC,OAAOr1pC,GAAG,OAAO,IAAIyxG,EAAEwkjC,UAAUH,SAASzw8B,IAAI5zG,EAAE,EAAE5+C,EAAE8yE,EAAEpyG,EAAEg9oC,WAAW7xnC,EAAE/V,UAAU6noC,YAAY,SAASz5oC,EAAE/2B,GAAG,OAAOH,KAAKwtI,MAAMl6E,EAAEoogB,QAAQxkiB,EAAE/2B,GAAG,EAAE,EAAE0+C,EAAE/V,UAAU0kG,MAAM,SAASt2G,EAAE/2B,GAAG,OAAO,IAAI2lI,EAAE9lI,KAAKk3B,EAAE/2B,EAAE,EAAE0+C,EAAE/V,UAAUumoC,cAAc,SAASn4oC,GAAG,OAAO4uG,EAAE+riC,SAAS7xqC,KAAKk3B,EAAE,EAAE4uG,EAAEh9F,UAAUgooC,WAAW,WAAW,EAAEhriC,EAAEh9F,UAAUgx6B,QAAQ,WAAW,OAAO958B,KAAK+tlB,OAAOryB,QAAQ,KAAK17jB,KAAK09oB,MAAM34oB,EAAE66U,aAAa,EAAE95M,EAAE+riC,SAAS,SAAS36oC,EAAE/2B,GAAG,OAAO,IAAI2lI,EAAE5uG,EAAE/2B,EAAE,GAAGA,EAAE,IAAI+2B,EAAE+6S,IAAI,EAAEnsM,EAAEh9F,UAAU4knC,QAAQ,WAAW,OAAO1tpC,KAAK4xqC,aAAa,sBAAsB,gBAAgB5xqC,KAAK2nB,EAAE0toC,UAAUltoC,SAAS,GAAG,GAAG,OAAOnoB,KAAKixU,EAAEok1B,UAAUltoC,SAAS,GAAG,GAAG,GAAG,EAAE29G,EAAEh9F,UAAU8ooC,WAAW,WAAW,OAAO,IAAI5xqC,KAAKixU,EAAEoj1B,KAAK,EAAE,EAAEvuhC,EAAEh9F,UAAUqooC,IAAI,WAAW,IAAIj6oC,EAAEl3B,KAAK2nB,EAAE6toC,OAAOx1pC,KAAKixU,GAAGgl1B,SAAS91pC,EAAEH,KAAK2nB,EAAE+toC,OAAO11pC,KAAKixU,GAAGgl1B,SAASnvpC,EAAEowB,EAAEw+nC,OAAOv1pC,GAAGyxG,EAAE16E,EAAE4+nC,OAAO31pC,GAAG6yD,EAAElsD,EAAEgvpC,OAAO31pC,EAAEq1pC,OAAOx1pC,KAAK09oB,MAAM40hB,IAAIxc,OAAOhvpC,KAAK,OAAO9G,KAAK09oB,MAAMlwgB,MAAM57B,EAAE5+C,EAAE,EAAE8yE,EAAEh9F,UAAU6lD,IAAI,WAAW,MAAM,IAAIiP,MAAM,oCAAoC,EAAEkoC,EAAEh9F,UAAUypoC,QAAQ,SAASr7oC,EAAE/2B,GAAG,IAAI2G,EAAE9G,KAAK2nB,EAAE6toC,OAAOx1pC,KAAKixU,GAAGr/N,EAAE5xG,KAAK2nB,EAAE+toC,OAAO11pC,KAAKixU,GAAGj+Q,EAAE97B,EAAEvP,EAAE6toC,OAAOt+nC,EAAE+5S,GAAGv9S,EAAEwD,EAAEvP,EAAE+toC,OAAOx+nC,EAAE+5S,GAAG6k1B,OAAOhvpC,GAAGwsD,EAAEN,EAAE8imC,OAAOlkjC,GAAG/yD,EAAE1+C,EAAE8wU,EAAE6k1B,OAAOpioC,EAAE8hoC,OAAOlimC,GAAG2imC,UAAUnwhC,EAAE3lI,EAAEwnB,EAAEmuoC,OAAOpioC,EAAEiioC,QAAQrimC,GAAG2imC,UAAU,OAAOj2pC,KAAK09oB,MAAMlwgB,MAAM3uF,EAAEinF,EAAE,EAAEA,EAAEh9F,UAAU0pnC,IAAI,SAASt7nC,GAAG,QAAQ/2B,EAAE+2B,EAAE5tB,QAAQxC,EAAE9G,KAAK4xG,EAAE5xG,KAAK09oB,MAAMlwgB,MAAM,KAAK,MAAMx6E,EAAE,GAAG,IAAI7yD,EAAEk0pC,KAAK,GAAGl0pC,EAAE6tpC,OAAO,GAAGh7lC,EAAEnwD,KAAK1C,EAAE4tpC,MAAM,IAAI,QAAQr6nC,EAAEs/B,EAAEprC,OAAO,EAAE8L,GAAG,EAAEA,IAAI,IAAIs/B,EAAEt/B,IAAI5sB,EAAEA,EAAEyrqC,QAAQ3gkC,EAAE5xG,MAAM4xG,EAAEA,EAAEu/jC,QAAQv/jC,EAAE9qG,EAAEyrqC,QAAQ3gkC,EAAE5xG,MAAM8G,EAAEA,EAAEqqqC,OAAO,OAAOv/jC,CAAC,EAAEk0B,EAAEh9F,UAAUopoC,OAAO,WAAW,MAAM,IAAIt0kC,MAAM,oCAAoC,EAAEkoC,EAAEh9F,UAAU0poC,QAAQ,WAAW,MAAM,IAAI50kC,MAAM,oCAAoC,EAAEkoC,EAAEh9F,UAAUq2K,GAAG,SAASjoL,GAAG,OAAO,IAAIl3B,KAAK+tlB,OAAOvoY,IAAItuL,EAAE62jB,OAAO,EAAEjod,EAAEh9F,UAAU4+U,UAAU,WAAW,OAAO1nX,KAAK2nB,EAAE3nB,KAAK2nB,EAAEmuoC,OAAO91pC,KAAKixU,EAAEol1B,WAAWr2pC,KAAKixU,EAAEjxU,KAAK09oB,MAAMzrU,IAAIjyU,IAAI,EAAE8lI,EAAEh9F,UAAUiljB,KAAK,WAAW,OAAO/tlB,KAAK0nX,YAAY1nX,KAAK2nB,EAAE0toC,SAAS,CAAC,EAAE,CAAC,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI/tB,SAAS,MAAM,IAAI,CAAC,SAASpwmC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,YAAY87B,EAAE97B,EAAE,SAASxD,EAAEwD,EAAE,YAAYo8B,EAAEp8B,EAAE,UAAU2nB,EAAE+yD,EAAEu9jC,OAAO,SAASrpiC,EAAE5uG,GAAGo8B,EAAEvqB,KAAK/oC,KAAK,QAAQk3B,GAAGl3B,KAAK6+C,EAAE,IAAImU,EAAE97B,EAAE2nB,EAAE,IAAIq2mC,MAAMl1pC,KAAKktW,KAAKltW,KAAK++C,EAAE,IAAIiU,EAAE97B,EAAE6nB,EAAE,IAAIm2mC,MAAMl1pC,KAAKktW,KAAKltW,KAAKyyqC,KAAKzyqC,KAAKovqC,IAAI/Y,UAAUr2pC,KAAK0yqC,MAAM,IAAI1yqC,KAAK6+C,EAAEw2mC,UAAUhB,KAAK,GAAGr0pC,KAAK2yqC,OAAO,IAAI3yqC,KAAK6+C,EAAEw2mC,UAAUzl+B,IAAI5vL,KAAK+E,GAAGsvpC,MAAK,GAAIr0pC,KAAK4yqC,KAAK5yqC,KAAK6yqC,iBAAiB37oC,GAAGl3B,KAAK8yqC,YAAY,IAAI1wqC,MAAM,GAAGpC,KAAK+yqC,YAAY,IAAI3wqC,MAAM,EAAE,CAAC,SAAS+0G,EAAEjgF,EAAE/2B,EAAE2G,EAAE8qG,GAAGt+C,EAAEo9mC,UAAU3noC,KAAK/oC,KAAKk3B,EAAE,UAAU,OAAO/2B,GAAG,OAAO2G,GAAG9G,KAAK2nB,EAAE,KAAK3nB,KAAKu8D,EAAE,KAAKv8D,KAAKgzqC,KAAI,IAAKhzqC,KAAK2nB,EAAE,IAAIqrC,EAAE7yD,EAAE,IAAIH,KAAKu8D,EAAE,IAAIvJ,EAAElsD,EAAE,IAAI8qG,IAAI5xG,KAAK2nB,EAAE4toC,SAASv1pC,KAAK09oB,MAAMxwS,KAAKltW,KAAKu8D,EAAEg5lC,SAASv1pC,KAAK09oB,MAAMxwS,MAAMltW,KAAK2nB,EAAEulV,MAAMltW,KAAK2nB,EAAE3nB,KAAK2nB,EAAEutoC,MAAMl1pC,KAAK09oB,MAAMxwS,MAAMltW,KAAKu8D,EAAE2wS,MAAMltW,KAAKu8D,EAAEv8D,KAAKu8D,EAAE24lC,MAAMl1pC,KAAK09oB,MAAMxwS,MAAMltW,KAAKgzqC,KAAI,EAAG,CAAC,SAAS7xmC,EAAEjqC,EAAE/2B,EAAE2G,EAAE8qG,GAAGt+C,EAAEo9mC,UAAU3noC,KAAK/oC,KAAKk3B,EAAE,YAAY,OAAO/2B,GAAG,OAAO2G,GAAG,OAAO8qG,GAAG5xG,KAAK2nB,EAAE3nB,KAAK09oB,MAAMzrU,IAAIjyU,KAAKu8D,EAAEv8D,KAAK09oB,MAAMzrU,IAAIjyU,KAAKixU,EAAE,IAAIj+Q,EAAE,KAAKhzD,KAAK2nB,EAAE,IAAIqrC,EAAE7yD,EAAE,IAAIH,KAAKu8D,EAAE,IAAIvJ,EAAElsD,EAAE,IAAI9G,KAAKixU,EAAE,IAAIj+Q,EAAE4+C,EAAE,KAAK5xG,KAAK2nB,EAAEulV,MAAMltW,KAAK2nB,EAAE3nB,KAAK2nB,EAAEutoC,MAAMl1pC,KAAK09oB,MAAMxwS,MAAMltW,KAAKu8D,EAAE2wS,MAAMltW,KAAKu8D,EAAEv8D,KAAKu8D,EAAE24lC,MAAMl1pC,KAAK09oB,MAAMxwS,MAAMltW,KAAKixU,EAAEi8B,MAAMltW,KAAKixU,EAAEjxU,KAAKixU,EAAEik1B,MAAMl1pC,KAAK09oB,MAAMxwS,MAAMltW,KAAKwxqC,KAAKxxqC,KAAKixU,IAAIjxU,KAAK09oB,MAAMzrU,GAAG,CAACv+S,EAAEoyG,EAAExyE,GAAGnzD,EAAE4krB,QAAQj/iB,EAAEA,EAAEh9F,UAAU+poC,iBAAiB,SAAS37oC,GAAG,GAAGl3B,KAAK0yqC,OAAO1yqC,KAAKioD,GAAGjoD,KAAK4xG,GAAG,IAAI5xG,KAAK+E,EAAE6opC,KAAK,GAAG,CAAC,IAAIztpC,EAAE2G,EAAE,GAAGowB,EAAE+zlB,KAAK9qnB,EAAE,IAAI6yD,EAAE97B,EAAE+zlB,KAAK,IAAIiqiB,MAAMl1pC,KAAKktW,SAAS,CAAC,IAAIt7P,EAAE5xG,KAAKizqC,cAAcjzqC,KAAK+E,GAAG5E,GAAGA,EAAEyxG,EAAE,GAAG4zG,IAAI5zG,EAAE,IAAI,EAAEA,EAAE,GAAGA,EAAE,IAAIsjjC,MAAMl1pC,KAAKktW,IAAI,CAAC,GAAGh2U,EAAEw0nB,OAAO5kpB,EAAE,IAAIksD,EAAE97B,EAAEw0nB,OAAO,QAAQ,CAAC,IAAIh4nB,EAAE1zB,KAAKizqC,cAAcjzqC,KAAK4xG,GAAG,IAAI5xG,KAAKioD,EAAEuqmC,IAAI9+nC,EAAE,IAAI/L,EAAE69L,IAAIxlN,KAAKioD,EAAEtgC,EAAEmuoC,OAAO31pC,IAAI2G,EAAE4sB,EAAE,GAAWmrB,EAAE,IAAI7+C,KAAKioD,EAAEuqmC,IAApB1rpC,EAAE4sB,EAAE,IAAuB/L,EAAE69L,IAAIxlN,KAAKioD,EAAEtgC,EAAEmuoC,OAAO31pC,IAAK,CAAC,MAAM,CAAC8qnB,KAAK9qnB,EAAEurpB,OAAO5kpB,EAAEspW,MAAMl5U,EAAEk5U,MAAMl5U,EAAEk5U,MAAM/tW,IAAK,SAAS60B,GAAG,MAAM,CAAC2nB,EAAE,IAAImU,EAAE97B,EAAE2nB,EAAE,IAAIE,EAAE,IAAIiU,EAAE97B,EAAE6nB,EAAE,IAAI,GAAI/+C,KAAKkzqC,cAAcpsqC,GAAG,CAAC,EAAEg/H,EAAEh9F,UAAUmqoC,cAAc,SAAS/7oC,GAAG,IAAI/2B,EAAE+2B,IAAIl3B,KAAK+E,EAAE/E,KAAKktW,IAAIl6S,EAAEskmC,KAAKpgoC,GAAGpwB,EAAE,IAAIksD,EAAE,GAAGkimC,MAAM/0pC,GAAGk2pC,UAAUzkjC,EAAE9qG,EAAEwvpC,SAAS5ioC,EAAE,IAAIs/B,EAAE,GAAGkimC,MAAM/0pC,GAAGm2pC,SAASF,UAAUN,OAAOhvpC,GAAG,MAAM,CAAC8qG,EAAE4jjC,OAAO9hoC,GAAG2hoC,UAAUzjjC,EAAE8jjC,OAAOhioC,GAAG2hoC,UAAU,EAAEvvhC,EAAEh9F,UAAUoqoC,cAAc,SAASh8oC,GAAG,QAAQ/2B,EAAE2G,EAAE8qG,EAAEl+E,EAAE4/B,EAAEzU,EAAEinF,EAAE3uB,EAAEh2C,EAAEslL,EAAEzmP,KAAK4xG,EAAEuhjC,MAAMxnnC,KAAKuqC,MAAMl2E,KAAK4xG,EAAEw8iC,YAAY,IAAI5xmC,EAAEtlB,EAAE+xI,EAAEjpK,KAAK4xG,EAAEtoG,QAAQvE,EAAE,IAAIiuD,EAAE,GAAGqb,GAAE,IAAIrb,EAAE,GAAGjU,GAAE,IAAIiU,EAAE,GAAG/K,GAAE,IAAI+K,EAAE,GAAGuJ,GAAE,EAAE,IAAI/f,EAAE63mC,KAAK,IAAI,CAAC,IAAI/xpC,GAAE2mK,EAAEupX,IAAIh2e,GAAG26D,EAAE8xD,EAAE2mB,IAAIttL,GAAEkwpC,IAAIh2mC,IAAI2kB,EAAEpiB,GAAE6wI,IAAIttL,GAAEkwpC,IAAIztpC,IAAI,IAAI0mN,EAAExjK,GAAE2nI,IAAIttL,GAAEkwpC,IAAInklC,KAAI,IAAIujC,GAAGuF,EAAEquG,IAAIihC,GAAG,EAAEtmP,EAAE2lI,EAAEgphC,MAAMhopC,EAAE/B,EAAE6sG,EAAEuF,EAAE23iC,MAAMp7nC,EAAEytC,UAAUywC,GAAG,KAAKr1C,GAAE,MAAMupE,EAAE3uB,EAAE8xD,EAAEzsH,EAAEA,EAAE26D,EAAEp4D,GAAEh6C,EAAEA,EAAEo8D,EAAElZ,GAAEomB,GAAEA,GAAEo9I,CAAC,CAACn4J,EAAE6jD,EAAE23iC,MAAMjwmC,EAAEsiB,EAAE,IAAIpkB,EAAE60D,EAAE+gjC,MAAMhkkC,IAAIj7D,EAAEi/nC,OAAO,OAAOr/lC,EAAEq/lC,MAAMhkkC,IAAI9vC,EAAE8zmC,OAAOnt8B,IAAIzoK,IAAI,IAAIuW,EAAEnzD,EAAE0+C,EAAE/3C,GAAG8qG,EAAEqtc,WAAWrtc,EAAEA,EAAEk9iC,MAAMp7nC,EAAEA,EAAEo7nC,OAAOx7lC,EAAE2rf,WAAW3rf,EAAEA,EAAEw7lC,MAAMjwmC,EAAEA,EAAEiwmC,OAAO,CAAC,CAACjwmC,EAAE+yD,EAAE7yD,EAAErrB,GAAG,CAACmrB,EAAEyU,EAAEvU,EAAEF,GAAG,EAAEinF,EAAEh9F,UAAUqqoC,WAAW,SAASj8oC,GAAG,IAAI/2B,EAAEH,KAAK4yqC,KAAKxi0B,MAAMtpW,EAAE3G,EAAE,GAAGyxG,EAAEzxG,EAAE,GAAG6yD,EAAE4+C,EAAE7yD,EAAEyzmC,IAAIt7nC,GAAG68nC,SAAS/zpC,KAAK4xG,GAAGl+E,EAAE5sB,EAAEi4C,EAAE+vmC,MAAM0D,IAAIt7nC,GAAG68nC,SAAS/zpC,KAAK4xG,GAAGt+C,EAAEN,EAAEw/lC,IAAI1rpC,EAAE+3C,GAAGA,EAAEnrB,EAAE8+nC,IAAI5gjC,EAAE/yD,GAAGinF,EAAE9yE,EAAEw/lC,IAAI1rpC,EAAEi4C,GAAGo4D,EAAEzjF,EAAE8+nC,IAAI5gjC,EAAE7yD,GAAG,MAAM,CAAC08b,GAAGvkd,EAAE04J,IAAIt8H,GAAGs8H,IAAI/wI,GAAG68b,GAAG51W,EAAEn3C,IAAIwoB,GAAG23iC,MAAM,EAAEhphC,EAAEh9F,UAAU8noC,WAAW,SAAS15oC,EAAE/2B,IAAI+2B,EAAE,IAAI87B,EAAE97B,EAAE,KAAKg2U,MAAMh2U,EAAEA,EAAEg+nC,MAAMl1pC,KAAKktW,MAAM,IAAIpmW,EAAEowB,EAAE++nC,SAASH,OAAO5+nC,GAAGu+nC,QAAQv+nC,EAAE4+nC,OAAO91pC,KAAK6+C,IAAI42mC,QAAQz1pC,KAAK++C,GAAG6yD,EAAE9qG,EAAEsvpC,UAAU,GAAG,IAAIxkjC,EAAEqkjC,SAASP,OAAO5upC,GAAG0+M,IAAIxlN,KAAK2yW,MAAM,MAAM,IAAI/0Q,MAAM,iBAAiB,IAAIlqE,EAAEk+E,EAAEyjjC,UAAUnB,QAAQ,OAAO/zpC,IAAIuzB,IAAIvzB,GAAGuzB,KAAKk+E,EAAEA,EAAE0kjC,UAAUt2pC,KAAKwtI,MAAMt2G,EAAE06E,EAAE,EAAEk0B,EAAEh9F,UAAU6vd,SAAS,SAASzhe,GAAG,GAAGA,EAAE87oC,IAAI,OAAM,EAAG,IAAI7yqC,EAAE+2B,EAAEvP,EAAE7gB,EAAEowB,EAAEqlC,EAAEq1C,EAAE5xG,KAAK6+C,EAAEi3mC,OAAO31pC,GAAG6yD,EAAE7yD,EAAE81pC,SAASH,OAAO31pC,GAAGs1pC,QAAQ7jjC,GAAG6jjC,QAAQz1pC,KAAK++C,GAAG,OAAO,IAAIj4C,EAAEmvpC,SAASN,QAAQ3imC,GAAGqhmC,KAAK,EAAE,EAAEvuhC,EAAEh9F,UAAUsqoC,gBAAgB,SAASl8oC,EAAE/2B,EAAE2G,GAAG,QAAQ8qG,EAAE5xG,KAAK8yqC,YAAY9/mC,EAAEhzD,KAAK+yqC,YAAYr/oC,EAAE,EAAEA,EAAEwD,EAAEtP,OAAO8L,IAAI,CAAC,IAAI4/B,EAAEtzD,KAAKmzqC,WAAWhzqC,EAAEuzB,IAAImrB,EAAE3nB,EAAExD,GAAGoyG,EAAEjnF,EAAEoynC,WAAW39mC,EAAEmob,GAAGwjE,WAAW3rf,EAAEmob,GAAGmzqB,OAAO/vmC,EAAEA,EAAEiwmC,KAAI,IAAKx7lC,EAAEoob,GAAGujE,WAAW3rf,EAAEoob,GAAGkzqB,OAAO9ohC,EAAEA,EAAEgphC,KAAI,IAAKl9iC,EAAE,EAAEl+E,GAAGmrB,EAAE+yD,EAAE,EAAEl+E,EAAE,GAAGoyG,EAAE9yE,EAAE,EAAEt/B,GAAG4/B,EAAEmob,GAAGzob,EAAE,EAAEt/B,EAAE,GAAG4/B,EAAEoob,EAAE,CAAC,QAAQvkY,EAAEn3G,KAAKwwqC,YAAY,EAAE5+jC,EAAE5+C,EAAE,EAAEt/B,EAAE5sB,GAAGq6D,EAAE,EAAEA,EAAE,EAAEztC,EAAEytC,IAAIywC,EAAEzwC,GAAG,KAAKnO,EAAEmO,GAAG,KAAK,OAAOg2C,CAAC,EAAEzjF,EAAEyjF,EAAE7jD,EAAEo9mC,WAAW5qiC,EAAEh9F,UAAU0kG,MAAM,SAASt2G,EAAE/2B,EAAE2G,GAAG,OAAO,IAAIqwG,EAAEn3G,KAAKk3B,EAAE/2B,EAAE2G,EAAE,EAAEg/H,EAAEh9F,UAAUumoC,cAAc,SAASn4oC,EAAE/2B,GAAG,OAAOg3G,EAAE06jC,SAAS7xqC,KAAKk3B,EAAE/2B,EAAE,EAAEg3G,EAAEruE,UAAUmooC,SAAS,WAAW,GAAGjxqC,KAAK09oB,MAAMk1hB,KAAK,CAAC,IAAI17oC,EAAEl3B,KAAK8vqC,YAAY,GAAG54oC,GAAGA,EAAE+zlB,KAAK,OAAO/zlB,EAAE+zlB,KAAK,IAAI9qnB,EAAEH,KAAK09oB,MAAMlwgB,MAAMxtI,KAAK2nB,EAAEmuoC,OAAO91pC,KAAK09oB,MAAMk1hB,KAAK3njB,MAAMjrnB,KAAKu8D,GAAG,GAAGrlC,EAAE,CAAC,IAAIpwB,EAAE9G,KAAK09oB,MAAM9riB,EAAE,SAAS16E,GAAG,OAAOpwB,EAAE0mI,MAAMt2G,EAAEvP,EAAEmuoC,OAAOhvpC,EAAE8rqC,KAAK3njB,MAAM/zlB,EAAEqlC,EAAE,EAAErlC,EAAE+zlB,KAAK9qnB,EAAEA,EAAE2vqC,YAAY,CAAC7kjB,KAAK,KAAK+ljB,IAAI95oC,EAAE85oC,KAAK,CAACV,IAAIp5oC,EAAE85oC,IAAIV,IAAItvyB,OAAO9pW,EAAE85oC,IAAIhwyB,OAAO3+X,IAAIuvG,IAAIm/jC,QAAQ75oC,EAAE65oC,SAAS,CAAC30zB,KAAKllV,EAAE65oC,QAAQ30zB,KAAK4kB,OAAO9pW,EAAE65oC,QAAQ/vyB,OAAO3+X,IAAIuvG,IAAI,CAAC,OAAOzxG,CAAC,CAAC,EAAEg3G,EAAEruE,UAAUo1M,OAAO,WAAW,OAAOl+O,KAAK8vqC,YAAY,CAAC9vqC,KAAK2nB,EAAE3nB,KAAKu8D,EAAEv8D,KAAK8vqC,aAAa,CAACiB,QAAQ/wqC,KAAK8vqC,YAAYiB,SAAS,CAAC30zB,KAAKp8W,KAAK8vqC,YAAYiB,QAAQ30zB,KAAK4kB,OAAOhhY,KAAK8vqC,YAAYiB,QAAQ/vyB,OAAOluW,MAAM,IAAIk+oC,IAAIhxqC,KAAK8vqC,YAAYkB,KAAK,CAACV,IAAItwqC,KAAK8vqC,YAAYkB,IAAIV,IAAItvyB,OAAOhhY,KAAK8vqC,YAAYkB,IAAIhwyB,OAAOluW,MAAM,MAAM,CAAC9yB,KAAK2nB,EAAE3nB,KAAKu8D,EAAE,EAAE46C,EAAE06jC,SAAS,SAAS36oC,EAAE/2B,EAAE2G,GAAG,iBAAiB3G,IAAIA,EAAEgF,KAAKo3J,MAAMp8J,IAAI,IAAIyxG,EAAE16E,EAAEs2G,MAAMrtI,EAAE,GAAGA,EAAE,GAAG2G,GAAG,IAAI3G,EAAE,GAAG,OAAOyxG,EAAE,SAAS5+C,EAAE7yD,GAAG,OAAO+2B,EAAEs2G,MAAMrtI,EAAE,GAAGA,EAAE,GAAG2G,EAAE,CAAC,IAAI4sB,EAAEvzB,EAAE,GAAG,OAAOyxG,EAAEk+jC,YAAY,CAAC7kjB,KAAK,KAAK8ljB,QAAQr9oC,EAAEq9oC,SAAS,CAAC30zB,KAAK1oV,EAAEq9oC,QAAQ30zB,KAAK4kB,OAAO,CAACpvR,GAAG1nD,OAAOx2B,EAAEq9oC,QAAQ/vyB,OAAO3+X,IAAI2wD,KAAKg+mC,IAAIt9oC,EAAEs9oC,KAAK,CAACV,IAAI58oC,EAAEs9oC,IAAIV,IAAItvyB,OAAO,CAACpvR,GAAG1nD,OAAOx2B,EAAEs9oC,IAAIhwyB,OAAO3+X,IAAI2wD,MAAM4+C,CAAC,EAAEuF,EAAEruE,UAAU4knC,QAAQ,WAAW,OAAO1tpC,KAAK4xqC,aAAa,sBAAsB,gBAAgB5xqC,KAAK2nB,EAAE0toC,UAAUltoC,SAAS,GAAG,GAAG,OAAOnoB,KAAKu8D,EAAE84lC,UAAUltoC,SAAS,GAAG,GAAG,GAAG,EAAEgvF,EAAEruE,UAAU8ooC,WAAW,WAAW,OAAO5xqC,KAAKgzqC,GAAG,EAAE77jC,EAAEruE,UAAU6lD,IAAI,SAASz3D,GAAG,GAAGl3B,KAAKgzqC,IAAI,OAAO97oC,EAAE,GAAGA,EAAE87oC,IAAI,OAAOhzqC,KAAK,GAAGA,KAAKm/M,GAAGjoL,GAAG,OAAOl3B,KAAKmxqC,MAAM,GAAGnxqC,KAAK8upC,MAAM3v8B,GAAGjoL,GAAG,OAAOl3B,KAAK09oB,MAAMlwgB,MAAM,KAAK,MAAM,GAAG,IAAIxtI,KAAK2nB,EAAE69L,IAAItuL,EAAEvP,GAAG,OAAO3nB,KAAK09oB,MAAMlwgB,MAAM,KAAK,MAAM,IAAIrtI,EAAEH,KAAKu8D,EAAEm5lC,OAAOx+nC,EAAEqlC,GAAG,IAAIp8D,EAAEk0pC,KAAK,KAAKl0pC,EAAEA,EAAE21pC,OAAO91pC,KAAK2nB,EAAE+toC,OAAOx+nC,EAAEvP,GAAG0uoC,YAAY,IAAIvvpC,EAAE3G,EAAE81pC,SAASN,QAAQ31pC,KAAK2nB,GAAGguoC,QAAQz+nC,EAAEvP,GAAGiqF,EAAEzxG,EAAE21pC,OAAO91pC,KAAK2nB,EAAE+toC,OAAO5upC,IAAI6upC,QAAQ31pC,KAAKu8D,GAAG,OAAOv8D,KAAK09oB,MAAMlwgB,MAAM1mI,EAAE8qG,EAAE,EAAEuF,EAAEruE,UAAUqooC,IAAI,WAAW,GAAGnxqC,KAAKgzqC,IAAI,OAAOhzqC,KAAK,IAAIk3B,EAAEl3B,KAAKu8D,EAAEi5lC,OAAOx1pC,KAAKu8D,GAAG,GAAG,IAAIrlC,EAAEm9nC,KAAK,GAAG,OAAOr0pC,KAAK09oB,MAAMlwgB,MAAM,KAAK,MAAM,IAAIrtI,EAAEH,KAAK09oB,MAAM7+lB,EAAE/3C,EAAE9G,KAAK2nB,EAAEsuoC,SAASrkjC,EAAE16E,EAAEm/nC,UAAUrjmC,EAAElsD,EAAE0upC,OAAO1upC,GAAG2upC,QAAQ3upC,GAAG2upC,QAAQt1pC,GAAG21pC,OAAOlkjC,GAAGl+E,EAAEs/B,EAAEijmC,SAASN,QAAQ31pC,KAAK2nB,EAAE6toC,OAAOx1pC,KAAK2nB,IAAI2rC,EAAEN,EAAE8imC,OAAO91pC,KAAK2nB,EAAE+toC,OAAOhioC,IAAIiioC,QAAQ31pC,KAAKu8D,GAAG,OAAOv8D,KAAK09oB,MAAMlwgB,MAAM95G,EAAE4/B,EAAE,EAAE6jD,EAAEruE,UAAUiljB,KAAK,WAAW,OAAO/tlB,KAAK2nB,EAAE0toC,SAAS,EAAEl+iC,EAAEruE,UAAUmljB,KAAK,WAAW,OAAOjulB,KAAKu8D,EAAE84lC,SAAS,EAAEl+iC,EAAEruE,UAAU0pnC,IAAI,SAASt7nC,GAAG,OAAOA,EAAE,IAAI87B,EAAE97B,EAAE,IAAIl3B,KAAK4xqC,aAAa5xqC,KAAKA,KAAKkxqC,YAAYh6oC,GAAGl3B,KAAK09oB,MAAMqyhB,aAAa/vqC,KAAKk3B,GAAGl3B,KAAK09oB,MAAMk1hB,KAAK5yqC,KAAK09oB,MAAM01hB,gBAAgB,CAACpzqC,MAAM,CAACk3B,IAAIl3B,KAAK09oB,MAAM0yhB,SAASpwqC,KAAKk3B,EAAE,EAAEigF,EAAEruE,UAAUopoC,OAAO,SAASh7oC,EAAE/2B,EAAE2G,GAAG,IAAI8qG,EAAE,CAAC5xG,KAAKG,GAAG6yD,EAAE,CAAC97B,EAAEpwB,GAAG,OAAO9G,KAAK09oB,MAAMk1hB,KAAK5yqC,KAAK09oB,MAAM01hB,gBAAgBxhkC,EAAE5+C,GAAGhzD,KAAK09oB,MAAM8yhB,YAAY,EAAE5+jC,EAAE5+C,EAAE,EAAE,EAAEmkD,EAAEruE,UAAUqpoC,QAAQ,SAASj7oC,EAAE/2B,EAAE2G,GAAG,IAAI8qG,EAAE,CAAC5xG,KAAKG,GAAG6yD,EAAE,CAAC97B,EAAEpwB,GAAG,OAAO9G,KAAK09oB,MAAMk1hB,KAAK5yqC,KAAK09oB,MAAM01hB,gBAAgBxhkC,EAAE5+C,GAAE,GAAIhzD,KAAK09oB,MAAM8yhB,YAAY,EAAE5+jC,EAAE5+C,EAAE,GAAE,EAAG,EAAEmkD,EAAEruE,UAAUq2K,GAAG,SAASjoL,GAAG,OAAOl3B,OAAOk3B,GAAGl3B,KAAKgzqC,MAAM97oC,EAAE87oC,MAAMhzqC,KAAKgzqC,KAAK,IAAIhzqC,KAAK2nB,EAAE69L,IAAItuL,EAAEvP,IAAI,IAAI3nB,KAAKu8D,EAAEipJ,IAAItuL,EAAEqlC,GAAG,EAAE46C,EAAEruE,UAAUgmnC,IAAI,SAAS53nC,GAAG,GAAGl3B,KAAKgzqC,IAAI,OAAOhzqC,KAAK,IAAIG,EAAEH,KAAK09oB,MAAMlwgB,MAAMxtI,KAAK2nB,EAAE3nB,KAAKu8D,EAAE+5lC,UAAU,GAAGp/nC,GAAGl3B,KAAK8vqC,YAAY,CAAC,IAAIhpqC,EAAE9G,KAAK8vqC,YAAYl+jC,EAAE,SAAS16E,GAAG,OAAOA,EAAE43nC,KAAK,EAAE3upC,EAAE2vqC,YAAY,CAACkB,IAAIlqqC,EAAEkqqC,KAAK,CAACV,IAAIxpqC,EAAEkqqC,IAAIV,IAAItvyB,OAAOl6X,EAAEkqqC,IAAIhwyB,OAAO3+X,IAAIuvG,IAAIm/jC,QAAQjqqC,EAAEiqqC,SAAS,CAAC30zB,KAAKt1W,EAAEiqqC,QAAQ30zB,KAAK4kB,OAAOl6X,EAAEiqqC,QAAQ/vyB,OAAO3+X,IAAIuvG,IAAI,CAAC,OAAOzxG,CAAC,EAAEg3G,EAAEruE,UAAU2noC,IAAI,WAAW,OAAOzwqC,KAAKgzqC,IAAIhzqC,KAAK09oB,MAAMuyhB,OAAO,KAAK,KAAK,MAAMjwqC,KAAK09oB,MAAMuyhB,OAAOjwqC,KAAK2nB,EAAE3nB,KAAKu8D,EAAEv8D,KAAK09oB,MAAMzrU,IAAI,EAAEv+S,EAAEytC,EAAE7N,EAAEo9mC,WAAW5qiC,EAAEh9F,UAAUmnoC,OAAO,SAAS/4oC,EAAE/2B,EAAE2G,GAAG,OAAO,IAAIq6D,EAAEnhE,KAAKk3B,EAAE/2B,EAAE2G,EAAE,EAAEq6D,EAAEr4B,UAAUqnoC,IAAI,WAAW,GAAGnwqC,KAAK4xqC,aAAa,OAAO5xqC,KAAK09oB,MAAMlwgB,MAAM,KAAK,MAAM,IAAIt2G,EAAEl3B,KAAKixU,EAAEol1B,UAAUl2pC,EAAE+2B,EAAE++nC,SAASnvpC,EAAE9G,KAAK2nB,EAAEmuoC,OAAO31pC,GAAGyxG,EAAE5xG,KAAKu8D,EAAEu5lC,OAAO31pC,GAAG21pC,OAAO5+nC,GAAG,OAAOl3B,KAAK09oB,MAAMlwgB,MAAM1mI,EAAE8qG,EAAE,EAAEzwC,EAAEr4B,UAAUgmnC,IAAI,WAAW,OAAO9upC,KAAK09oB,MAAMuyhB,OAAOjwqC,KAAK2nB,EAAE3nB,KAAKu8D,EAAE+5lC,SAASt2pC,KAAKixU,EAAE,EAAE9vQ,EAAEr4B,UAAU6lD,IAAI,SAASz3D,GAAG,GAAGl3B,KAAK4xqC,aAAa,OAAO16oC,EAAE,GAAGA,EAAE06oC,aAAa,OAAO5xqC,KAAK,IAAIG,EAAE+2B,EAAE+5S,EAAEgl1B,SAASnvpC,EAAE9G,KAAKixU,EAAEgl1B,SAASrkjC,EAAE5xG,KAAK2nB,EAAEmuoC,OAAO31pC,GAAG6yD,EAAE97B,EAAEvP,EAAEmuoC,OAAOhvpC,GAAG4sB,EAAE1zB,KAAKu8D,EAAEu5lC,OAAO31pC,EAAE21pC,OAAO5+nC,EAAE+5S,IAAI39Q,EAAEp8B,EAAEqlC,EAAEu5lC,OAAOhvpC,EAAEgvpC,OAAO91pC,KAAKixU,IAAIpyR,EAAE+yD,EAAE8jjC,OAAO1imC,GAAG8yE,EAAEpyG,EAAEgioC,OAAOpimC,GAAG,GAAG,IAAIzU,EAAEw1mC,KAAK,GAAG,OAAO,IAAIvuhC,EAAEuuhC,KAAK,GAAGr0pC,KAAK09oB,MAAMuyhB,OAAO,KAAK,KAAK,MAAMjwqC,KAAKmxqC,MAAM,IAAIh6jC,EAAEt4D,EAAEo3mC,SAAS90lC,EAAEg2C,EAAE2+iC,OAAOj3mC,GAAG4nM,EAAE70I,EAAEkkjC,OAAO3+iC,GAAG36D,EAAEspF,EAAEmwhC,SAASR,QAAQt0lC,GAAGw0lC,QAAQlv6B,GAAGkv6B,QAAQlv6B,GAAGx9E,EAAEnjC,EAAEgwhC,OAAOrv6B,EAAEkv6B,QAAQn5mC,IAAIm5mC,QAAQjioC,EAAEoioC,OAAO30lC,IAAIp8D,GAAE/E,KAAKixU,EAAE6k1B,OAAO5+nC,EAAE+5S,GAAG6k1B,OAAOj3mC,GAAG,OAAO7+C,KAAK09oB,MAAMuyhB,OAAOzznC,EAAEysH,EAAElkK,GAAE,EAAEo8D,EAAEr4B,UAAUonoC,SAAS,SAASh5oC,GAAG,GAAGl3B,KAAK4xqC,aAAa,OAAO16oC,EAAEu5oC,MAAM,GAAGv5oC,EAAE06oC,aAAa,OAAO5xqC,KAAK,IAAIG,EAAEH,KAAKixU,EAAEgl1B,SAASnvpC,EAAE9G,KAAK2nB,EAAEiqF,EAAE16E,EAAEvP,EAAEmuoC,OAAO31pC,GAAG6yD,EAAEhzD,KAAKu8D,EAAE7oC,EAAEwD,EAAEqlC,EAAEu5lC,OAAO31pC,GAAG21pC,OAAO91pC,KAAKixU,GAAG39Q,EAAExsD,EAAE4upC,OAAO9jjC,GAAG/yD,EAAEmU,EAAE0imC,OAAOhioC,GAAG,GAAG,IAAI4/B,EAAE+gmC,KAAK,GAAG,OAAO,IAAIx1mC,EAAEw1mC,KAAK,GAAGr0pC,KAAK09oB,MAAMuyhB,OAAO,KAAK,KAAK,MAAMjwqC,KAAKmxqC,MAAM,IAAIrriC,EAAExyE,EAAE2imC,SAAS9+iC,EAAE2uB,EAAEgwhC,OAAOximC,GAAG6N,EAAEr6D,EAAEgvpC,OAAOhwhC,GAAG2gH,EAAE5nM,EAAEo3mC,SAASR,QAAQt+iC,GAAGw+iC,QAAQx0lC,GAAGw0lC,QAAQx0lC,GAAG3kB,EAAEqC,EAAEi3mC,OAAO30lC,EAAEw0lC,QAAQlv6B,IAAIkv6B,QAAQ3imC,EAAE8imC,OAAO3+iC,IAAI8xD,EAAEjpK,KAAKixU,EAAE6k1B,OAAOximC,GAAG,OAAOtzD,KAAK09oB,MAAMuyhB,OAAOxp7B,EAAEjqM,EAAEysH,EAAE,EAAE9nG,EAAEr4B,UAAUynoC,KAAK,SAASr5oC,GAAG,GAAG,IAAIA,EAAE,OAAOl3B,KAAK,GAAGA,KAAK4xqC,aAAa,OAAO5xqC,KAAK,IAAIk3B,EAAE,OAAOl3B,KAAKmxqC,MAAM,IAAIhxqC,EAAE,GAAGH,KAAK09oB,MAAMg1hB,OAAO1yqC,KAAK09oB,MAAMi1hB,OAAO,CAAC,IAAI7rqC,EAAE9G,KAAK,IAAIG,EAAE,EAAEA,EAAE+2B,EAAE/2B,IAAI2G,EAAEA,EAAEqqqC,MAAM,OAAOrqqC,CAAC,CAAC,IAAI8qG,EAAE5xG,KAAK09oB,MAAM7+lB,EAAEmU,EAAEhzD,KAAK09oB,MAAM+0hB,KAAK/+oC,EAAE1zB,KAAK2nB,EAAE2rC,EAAEtzD,KAAKu8D,EAAE1d,EAAE7+C,KAAKixU,EAAEnrM,EAAEjnF,EAAEo3mC,SAASA,SAAS9+iC,EAAE7jD,EAAEkimC,OAAOlimC,GAAG,IAAInzD,EAAE,EAAEA,EAAE+2B,EAAE/2B,IAAI,CAAC,IAAIghE,EAAEztC,EAAEuioC,SAASxv6B,EAAEtvI,EAAE8+iC,SAASz5mC,EAAEiqM,EAAEwv6B,SAASht/B,EAAE9nG,EAAEq0lC,OAAOr0lC,GAAGs0lC,QAAQt0lC,GAAGs0lC,QAAQ7jjC,EAAEkkjC,OAAOhwhC,IAAI/gI,GAAE2uB,EAAEoioC,OAAOrv6B,GAAGp4K,GAAE46F,EAAEgt/B,SAASN,QAAQ5wpC,GAAEywpC,OAAOzwpC,KAAIg6C,GAAEh6C,GAAE4wpC,QAAQtnlC,IAAGpmB,GAAEghH,EAAE6s/B,OAAO/2mC,IAAGkJ,GAAEA,GAAEwtmC,QAAQxtmC,IAAG0tmC,QAAQn5mC,GAAG,IAAI+f,GAAE46C,EAAE2+iC,OAAOj3mC,GAAG1+C,EAAE,EAAE+2B,IAAI4uG,EAAEA,EAAEgwhC,OAAOt5mC,IAAI9oB,EAAE26C,GAAExvB,EAAE0d,GAAE46C,EAAElvD,EAAC,CAAC,OAAOjoD,KAAK09oB,MAAMuyhB,OAAOv8oC,EAAEyjF,EAAE2+iC,OAAO9imC,GAAGnU,EAAE,EAAEsiB,EAAEr4B,UAAUqooC,IAAI,WAAW,OAAOnxqC,KAAK4xqC,aAAa5xqC,KAAKA,KAAK09oB,MAAMg1hB,MAAM1yqC,KAAKqzqC,WAAWrzqC,KAAK09oB,MAAMi1hB,OAAO3yqC,KAAKszqC,YAAYtzqC,KAAKuzqC,MAAM,EAAEpymC,EAAEr4B,UAAUuqoC,SAAS,WAAW,IAAIn8oC,EAAE/2B,EAAE2G,EAAE,GAAG9G,KAAKwxqC,KAAK,CAAC,IAAI5/jC,EAAE5xG,KAAK2nB,EAAEsuoC,SAASjjmC,EAAEhzD,KAAKu8D,EAAE05lC,SAASvioC,EAAEs/B,EAAEijmC,SAAS3imC,EAAEtzD,KAAK2nB,EAAE6toC,OAAOximC,GAAGijmC,SAASN,QAAQ/jjC,GAAG+jjC,QAAQjioC,GAAG4/B,EAAEA,EAAEmimC,QAAQnimC,GAAG,IAAIzU,EAAE+yD,EAAE4jjC,OAAO5jjC,GAAG6jjC,QAAQ7jjC,GAAGk0B,EAAEjnF,EAAEo3mC,SAASN,QAAQrimC,GAAGqimC,QAAQrimC,GAAG6jD,EAAEzjF,EAAE+hoC,QAAQ/hoC,GAAGyjF,GAAGA,EAAEA,EAAEs+iC,QAAQt+iC,IAAIs+iC,QAAQt+iC,GAAGjgF,EAAE4uG,EAAE3lI,EAAE0+C,EAAEi3mC,OAAOximC,EAAEqimC,QAAQ7vhC,IAAI6vhC,QAAQx+iC,GAAGrwG,EAAE9G,KAAKu8D,EAAEi5lC,OAAOx1pC,KAAKu8D,EAAE,KAAK,CAAC,IAAI4E,EAAEnhE,KAAK2nB,EAAEsuoC,SAASxv6B,EAAEzmP,KAAKu8D,EAAE05lC,SAASz5mC,EAAEiqM,EAAEwv6B,SAASht/B,EAAEjpK,KAAK2nB,EAAE6toC,OAAO/u6B,GAAGwv6B,SAASN,QAAQx0lC,GAAGw0lC,QAAQn5mC,GAAGysH,EAAEA,EAAEws/B,QAAQxs/B,GAAG,IAAIlkK,GAAEo8D,EAAEq0lC,OAAOr0lC,GAAGs0lC,QAAQt0lC,GAAGkN,GAAEtpE,GAAEkxpC,SAASl3mC,GAAEvC,EAAEi5mC,QAAQj5mC,GAAGuC,IAAGA,GAAEA,GAAE02mC,QAAQ12mC,KAAI02mC,QAAQ12mC,IAAG7nB,EAAEm3C,GAAEsnlC,QAAQ1s/B,GAAG0s/B,QAAQ1s/B,GAAG9oK,EAAE4E,GAAE+wpC,OAAO7s/B,EAAE0s/B,QAAQz+nC,IAAIy+nC,QAAQ52mC,IAAGj4C,GAAGA,EAAE9G,KAAKu8D,EAAEu5lC,OAAO91pC,KAAKixU,IAAIwk1B,QAAQ3upC,EAAE,CAAC,OAAO9G,KAAK09oB,MAAMuyhB,OAAO/4oC,EAAE/2B,EAAE2G,EAAE,EAAEq6D,EAAEr4B,UAAUwqoC,UAAU,WAAW,IAAIp8oC,EAAE/2B,EAAE2G,EAAE,GAAG9G,KAAKwxqC,KAAK,CAAC,IAAI5/jC,EAAE5xG,KAAK2nB,EAAEsuoC,SAASjjmC,EAAEhzD,KAAKu8D,EAAE05lC,SAASvioC,EAAEs/B,EAAEijmC,SAAS3imC,EAAEtzD,KAAK2nB,EAAE6toC,OAAOximC,GAAGijmC,SAASN,QAAQ/jjC,GAAG+jjC,QAAQjioC,GAAG4/B,EAAEA,EAAEmimC,QAAQnimC,GAAG,IAAIzU,EAAE+yD,EAAE4jjC,OAAO5jjC,GAAG6jjC,QAAQ7jjC,GAAG6jjC,QAAQz1pC,KAAK09oB,MAAM7+lB,GAAGinF,EAAEjnF,EAAEo3mC,SAASN,QAAQrimC,GAAGqimC,QAAQrimC,GAAGp8B,EAAE4uG,EAAE,IAAI3uB,EAAEzjF,EAAE+hoC,QAAQ/hoC,GAAGyjF,GAAGA,EAAEA,EAAEs+iC,QAAQt+iC,IAAIs+iC,QAAQt+iC,GAAGh3G,EAAE0+C,EAAEi3mC,OAAOximC,EAAEqimC,QAAQ7vhC,IAAI6vhC,QAAQx+iC,GAAGrwG,EAAE9G,KAAKu8D,EAAEi5lC,OAAOx1pC,KAAKu8D,EAAE,KAAK,CAAC,IAAI4E,EAAEnhE,KAAKixU,EAAEgl1B,SAASxv6B,EAAEzmP,KAAKu8D,EAAE05lC,SAASz5mC,EAAEx8C,KAAK2nB,EAAEmuoC,OAAOrv6B,GAAGx9E,EAAEjpK,KAAK2nB,EAAE+toC,OAAOv0lC,GAAG20lC,OAAO91pC,KAAK2nB,EAAE6toC,OAAOr0lC,IAAI8nG,EAAEA,EAAEus/B,OAAOvs/B,GAAGws/B,QAAQxs/B,GAAG,IAAIlkK,GAAEy3C,EAAEi5mC,QAAQj5mC,GAAG6xB,IAAGtpE,GAAEA,GAAE0wpC,QAAQ1wpC,KAAIywpC,OAAOzwpC,IAAGmyB,EAAE+xI,EAAEgt/B,SAASN,QAAQtnlC,IAAGvnE,EAAE9G,KAAKu8D,EAAEi5lC,OAAOx1pC,KAAKixU,GAAGgl1B,SAASN,QAAQlv6B,GAAGkv6B,QAAQx0lC,GAAG,IAAIpiB,GAAE0nM,EAAEwv6B,SAASl3mC,IAAGA,IAAGA,GAAEA,GAAE02mC,QAAQ12mC,KAAI02mC,QAAQ12mC,KAAI02mC,QAAQ12mC,IAAG5+C,EAAE8oK,EAAE6s/B,OAAO/wpC,GAAE4wpC,QAAQz+nC,IAAIy+nC,QAAQ52mC,GAAE,CAAC,OAAO/+C,KAAK09oB,MAAMuyhB,OAAO/4oC,EAAE/2B,EAAE2G,EAAE,EAAEq6D,EAAEr4B,UAAUyqoC,KAAK,WAAW,IAAIr8oC,EAAEl3B,KAAK09oB,MAAM7+lB,EAAE1+C,EAAEH,KAAK2nB,EAAE7gB,EAAE9G,KAAKu8D,EAAEq1C,EAAE5xG,KAAKixU,EAAEj+Q,EAAE4+C,EAAEqkjC,SAASA,SAASvioC,EAAEvzB,EAAE81pC,SAAS3imC,EAAExsD,EAAEmvpC,SAASp3mC,EAAEnrB,EAAE8hoC,OAAO9hoC,GAAG+hoC,QAAQ/hoC,GAAG+hoC,QAAQv+nC,EAAE4+nC,OAAO9imC,IAAI8yE,EAAE3lI,EAAEq1pC,OAAOr1pC,GAAGg3G,GAAG2uB,EAAEA,EAAE2vhC,QAAQ3vhC,IAAIgwhC,OAAOximC,GAAG6N,EAAEtiB,EAAEo3mC,SAASN,QAAQx+iC,EAAEq+iC,OAAOr+iC,IAAIsvI,EAAEtvI,EAAEw+iC,QAAQx0lC,GAAG3kB,EAAE8W,EAAE2imC,SAASz5mC,GAAGA,GAAGA,EAAEA,EAAEi5mC,QAAQj5mC,IAAIi5mC,QAAQj5mC,IAAIi5mC,QAAQj5mC,GAAG,IAAIysH,EAAEpqH,EAAEi3mC,OAAOrv6B,GAAGkv6B,QAAQn5mC,GAAGz3C,GAAE+B,EAAE0upC,OAAO1upC,GAAGgvpC,OAAOlkjC,GAAG,OAAO5xG,KAAK09oB,MAAMuyhB,OAAO9umC,EAAE8nG,EAAElkK,GAAE,EAAEo8D,EAAEr4B,UAAU0qoC,KAAK,WAAW,IAAIxzqC,KAAK09oB,MAAMg1hB,MAAM,OAAO1yqC,KAAKmxqC,MAAMxilC,IAAI3uF,MAAM,IAAIk3B,EAAEl3B,KAAK2nB,EAAEsuoC,SAAS91pC,EAAEH,KAAKu8D,EAAE05lC,SAASnvpC,EAAE9G,KAAKixU,EAAEgl1B,SAASrkjC,EAAEzxG,EAAE81pC,SAASjjmC,EAAE97B,EAAEs+nC,OAAOt+nC,GAAGu+nC,QAAQv+nC,GAAGxD,EAAEs/B,EAAEijmC,SAAS3imC,EAAEtzD,KAAK2nB,EAAE6toC,OAAOr1pC,GAAG81pC,SAASN,QAAQz+nC,GAAGy+nC,QAAQ/jjC,GAAG/yD,GAAGyU,GAAGA,GAAGA,EAAEA,EAAEmimC,QAAQnimC,IAAIkimC,OAAOlimC,GAAGmimC,QAAQnimC,IAAIqimC,QAAQjioC,IAAIuioC,SAASnwhC,EAAEl0B,EAAE6jjC,QAAQ7jjC,GAAGk0B,GAAGA,GAAGA,EAAEA,EAAE2vhC,QAAQ3vhC,IAAI2vhC,QAAQ3vhC,IAAI2vhC,QAAQ3vhC,GAAG,IAAI3uB,EAAEnkD,EAAEyimC,QAAQnimC,GAAG2imC,SAASN,QAAQjioC,GAAGiioC,QAAQ92mC,GAAG82mC,QAAQ7vhC,GAAG3kE,EAAEhhE,EAAE21pC,OAAO3+iC,GAAGh2C,GAAGA,EAAEA,EAAEs0lC,QAAQt0lC,IAAIs0lC,QAAQt0lC,GAAG,IAAIslL,EAAEzmP,KAAK2nB,EAAEmuoC,OAAOj3mC,GAAG82mC,QAAQx0lC,GAAGslL,GAAGA,EAAEA,EAAEgv6B,QAAQhv6B,IAAIgv6B,QAAQhv6B,GAAG,IAAIjqM,EAAEx8C,KAAKu8D,EAAEu5lC,OAAO3+iC,EAAE2+iC,OAAOhwhC,EAAE6vhC,QAAQx+iC,IAAIw+iC,QAAQrimC,EAAEwimC,OAAOj3mC,KAAKrC,GAAGA,GAAGA,EAAEA,EAAEi5mC,QAAQj5mC,IAAIi5mC,QAAQj5mC,IAAIi5mC,QAAQj5mC,GAAG,IAAIysH,EAAEjpK,KAAKixU,EAAEuk1B,OAAOlimC,GAAG2imC,SAASN,QAAQ7upC,GAAG6upC,QAAQ92mC,GAAG,OAAO7+C,KAAK09oB,MAAMuyhB,OAAOxp7B,EAAEjqM,EAAEysH,EAAE,EAAE9nG,EAAEr4B,UAAU0pnC,IAAI,SAASt7nC,EAAE/2B,GAAG,OAAO+2B,EAAE,IAAI87B,EAAE97B,EAAE/2B,GAAGH,KAAK09oB,MAAM0yhB,SAASpwqC,KAAKk3B,EAAE,EAAEiqC,EAAEr4B,UAAUq2K,GAAG,SAASjoL,GAAG,GAAG,WAAWA,EAAEzyB,KAAK,OAAOzE,KAAKm/M,GAAGjoL,EAAEu5oC,OAAO,GAAGzwqC,OAAOk3B,EAAE,OAAM,EAAG,IAAI/2B,EAAEH,KAAKixU,EAAEgl1B,SAASnvpC,EAAEowB,EAAE+5S,EAAEgl1B,SAAS,GAAG,IAAIj2pC,KAAK2nB,EAAEmuoC,OAAOhvpC,GAAG6upC,QAAQz+nC,EAAEvP,EAAEmuoC,OAAO31pC,IAAIk0pC,KAAK,GAAG,OAAM,EAAG,IAAIzijC,EAAEzxG,EAAE21pC,OAAO91pC,KAAKixU,GAAGj+Q,EAAElsD,EAAEgvpC,OAAO5+nC,EAAE+5S,GAAG,OAAO,IAAIjxU,KAAKu8D,EAAEu5lC,OAAO9imC,GAAG2imC,QAAQz+nC,EAAEqlC,EAAEu5lC,OAAOlkjC,IAAIyijC,KAAK,EAAE,EAAElzlC,EAAEr4B,UAAUspoC,OAAO,SAASl7oC,GAAG,IAAI/2B,EAAEH,KAAKixU,EAAEgl1B,SAASnvpC,EAAEowB,EAAEg+nC,MAAMl1pC,KAAK09oB,MAAMxwS,KAAK4ozB,OAAO31pC,GAAG,GAAG,IAAIH,KAAK2nB,EAAE69L,IAAI1+M,GAAG,OAAM,EAAG,QAAQ8qG,EAAE16E,EAAE5tB,QAAQ0pD,EAAEhzD,KAAK09oB,MAAMkyhB,KAAK9Z,OAAO31pC,KAAK,CAAC,GAAGyxG,EAAE+9iC,KAAK3vpC,KAAK09oB,MAAM9riB,GAAGA,EAAE4zG,IAAIxlN,KAAK09oB,MAAM34oB,IAAI,EAAE,OAAM,EAAG,GAAG+B,EAAE2upC,QAAQzimC,GAAG,IAAIhzD,KAAK2nB,EAAE69L,IAAI1+M,GAAG,OAAM,CAAE,CAAC,EAAEq6D,EAAEr4B,UAAU4knC,QAAQ,WAAW,OAAO1tpC,KAAK4xqC,aAAa,uBAAuB,iBAAiB5xqC,KAAK2nB,EAAEQ,SAAS,GAAG,GAAG,OAAOnoB,KAAKu8D,EAAEp0C,SAAS,GAAG,GAAG,OAAOnoB,KAAKixU,EAAE9oT,SAAS,GAAG,GAAG,GAAG,EAAEg5C,EAAEr4B,UAAU8ooC,WAAW,WAAW,OAAO,IAAI5xqC,KAAKixU,EAAEoj1B,KAAK,EAAE,CAAC,EAAE,CAAC,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI/sB,SAAS,MAAM,IAAI,CAAC,SAASpwmC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE5+C,EAAElsD,EAAE4sB,EAAEwD,EAAE,WAAWo8B,EAAEp8B,EAAE,WAAW2nB,EAAE3nB,EAAE,WAAWi4oC,OAAO,SAASrpiC,EAAE5uG,GAAoBl3B,KAAK09oB,MAAtB,UAAUxmnB,EAAEzyB,KAAgB,IAAI6uD,EAAEigR,MAAMr8S,GAAG,YAAYA,EAAEzyB,KAAgB,IAAI6uD,EAAE++mC,QAAQn7oC,GAAc,IAAIo8B,EAAEgkmC,KAAKpgoC,GAAGl3B,KAAKioD,EAAEjoD,KAAK09oB,MAAMz1lB,EAAEjoD,KAAK4xG,EAAE5xG,KAAK09oB,MAAM9riB,EAAE5xG,KAAKmgN,KAAKjpL,EAAEipL,KAAKthK,EAAE7+C,KAAKioD,EAAE0wc,WAAW,iBAAiB95c,EAAE7+C,KAAKioD,EAAEuqmC,IAAIxypC,KAAK4xG,GAAGggkC,aAAa,0BAA0B,CAAC,SAASz6jC,EAAEjgF,EAAE/2B,GAAGuC,OAAO4jI,eAAetzE,EAAE97B,EAAE,CAACsvG,cAAa,EAAGD,YAAW,EAAGzvG,IAAI,WAAW,IAAIhwB,EAAE,IAAIg/H,EAAE3lI,GAAG,OAAOuC,OAAO4jI,eAAetzE,EAAE97B,EAAE,CAACsvG,cAAa,EAAGD,YAAW,EAAGhlI,MAAMuF,IAAIA,CAAC,GAAG,CAACksD,EAAEygnC,YAAY3tiC,EAAE3uB,EAAE,OAAO,CAAC1yG,KAAK,QAAQqypC,MAAM,OAAO/xpC,EAAE,wDAAwD85C,EAAE,wDAAwDE,EAAE,wDAAwD6yD,EAAE,wDAAwDuuG,KAAKzsL,EAAE8poC,OAAO8R,MAAK,EAAGrnnC,EAAE,CAAC,wDAAwD,2DAA2DkvD,EAAE,OAAO,CAAC1yG,KAAK,QAAQqypC,MAAM,OAAO/xpC,EAAE,iEAAiE85C,EAAE,iEAAiEE,EAAE,iEAAiE6yD,EAAE,iEAAiEuuG,KAAKzsL,EAAE8poC,OAAO8R,MAAK,EAAGrnnC,EAAE,CAAC,iEAAiE,oEAAoEkvD,EAAE,OAAO,CAAC1yG,KAAK,QAAQqypC,MAAM,KAAK/xpC,EAAE,0EAA0E85C,EAAE,0EAA0EE,EAAE,0EAA0E6yD,EAAE,0EAA0EuuG,KAAKzsL,EAAE8poC,OAAO8R,MAAK,EAAGrnnC,EAAE,CAAC,0EAA0E,6EAA6EkvD,EAAE,OAAO,CAAC1yG,KAAK,QAAQqypC,MAAM,KAAK/xpC,EAAE,8GAA8G85C,EAAE,8GAA8GE,EAAE,8GAA8G6yD,EAAE,8GAA8GuuG,KAAKzsL,EAAEgqoC,OAAO4R,MAAK,EAAGrnnC,EAAE,CAAC,8GAA8G,iHAAiHkvD,EAAE,OAAO,CAAC1yG,KAAK,QAAQqypC,MAAM,KAAK/xpC,EAAE,2JAA2J85C,EAAE,2JAA2JE,EAAE,2JAA2J6yD,EAAE,2JAA2JuuG,KAAKzsL,EAAEiqoC,OAAO2R,MAAK,EAAGrnnC,EAAE,CAAC,2JAA2J,8JAA8JkvD,EAAE,aAAa,CAAC1yG,KAAK,OAAOqypC,MAAM,SAAS/xpC,EAAE,sEAAsE85C,EAAE,QAAQE,EAAE,IAAI6yD,EAAE,sEAAsEuuG,KAAKzsL,EAAE8poC,OAAO8R,MAAK,EAAGrnnC,EAAE,CAAC,OAAOkvD,EAAE,UAAU,CAAC1yG,KAAK,UAAUqypC,MAAM,SAAS/xpC,EAAE,sEAAsE85C,EAAE,KAAKs4D,EAAE,IAAI8xD,EAAE,sEAAsEr3D,EAAE,sEAAsEuuG,KAAKzsL,EAAE8poC,OAAO8R,MAAK,EAAGrnnC,EAAE,CAAC,mEAAmE,sEAAsE,IAAI2pD,EAAE16E,EAAE,0BAA0B,OAAU06E,OAAE,CAAM,CAACuF,EAAE,YAAY,CAAC1yG,KAAK,QAAQqypC,MAAM,OAAO/xpC,EAAE,0EAA0E85C,EAAE,IAAIE,EAAE,IAAI6yD,EAAE,0EAA0E60I,EAAE,IAAItmC,KAAKzsL,EAAE8poC,OAAOvyiB,KAAK,mEAAmEygC,OAAO,mEAAmEt7S,MAAM,CAAC,CAACvxT,EAAE,mCAAmCE,EAAE,qCAAqC,CAACF,EAAE,oCAAoCE,EAAE,qCAAqCuwnC,MAAK,EAAGrnnC,EAAE,CAAC,mEAAmE,mEAAmE2pD,IAAI,EAAE,CAAC,UAAU,IAAI,0BAA0B,IAAI,UAAU,IAAI,UAAU,MAAM,IAAI,CAAC,SAAS16E,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,SAAS87B,EAAE97B,EAAE,aAAaxD,EAAEwD,EAAE,YAAYo8B,EAAEp8B,EAAE,aAAa2nB,EAAE3nB,EAAE,WAAW4uG,EAAEpyG,EAAEy7oC,OAAOh4jC,EAAEjgF,EAAE,SAASiqC,EAAEjqC,EAAE,eAAe,SAASuvN,EAAEvvN,GAAG,KAAKl3B,gBAAgBymP,GAAG,OAAO,IAAIA,EAAEvvN,GAAG,iBAAiBA,IAAI4uG,EAAEpjI,OAAOomC,UAAUo5G,eAAen5G,KAAKuqB,EAAEp8B,GAAG,iBAAiBA,GAAGA,EAAEo8B,EAAEp8B,IAAIA,aAAao8B,EAAEmgnC,cAAcv8oC,EAAE,CAACwmnB,MAAMxmnB,IAAIl3B,KAAK09oB,MAAMxmnB,EAAEwmnB,MAAMA,MAAM19oB,KAAK4xG,EAAE5xG,KAAK09oB,MAAM9riB,EAAE5xG,KAAK0zqC,GAAG1zqC,KAAK4xG,EAAEuhjC,MAAM,GAAGnzpC,KAAKioD,EAAEjoD,KAAK09oB,MAAMz1lB,EAAEjoD,KAAKioD,EAAE/wB,EAAEwmnB,MAAMz1lB,EAAEjoD,KAAKioD,EAAE6onC,WAAW55oC,EAAEwmnB,MAAM9riB,EAAEw8iC,YAAY,GAAGpupC,KAAKmgN,KAAKjpL,EAAEipL,MAAMjpL,EAAEwmnB,MAAMv9b,IAAI,CAAChgN,EAAE4krB,QAAQt+b,EAAEA,EAAE39M,UAAU6qoC,QAAQ,SAASz8oC,GAAG,OAAO,IAAIigF,EAAEn3G,KAAKk3B,EAAE,EAAEuvN,EAAE39M,UAAU01nC,eAAe,SAAStnoC,EAAE/2B,GAAG,OAAOg3G,EAAEy8jC,YAAY5zqC,KAAKk3B,EAAE/2B,EAAE,EAAEsmP,EAAE39M,UAAUi+nC,cAAc,SAAS7voC,EAAE/2B,GAAG,OAAOg3G,EAAE08jC,WAAW7zqC,KAAKk3B,EAAE/2B,EAAE,EAAEsmP,EAAE39M,UAAU89nC,WAAW,SAAS1voC,GAAGA,IAAIA,EAAE,CAAC,GAAG,QAAQ/2B,EAAE,IAAI6yD,EAAE,CAACmtJ,KAAKngN,KAAKmgN,KAAK2z9B,KAAK58oC,EAAE48oC,KAAKC,QAAQ78oC,EAAE68oC,SAAS,OAAOC,QAAQ98oC,EAAE88oC,SAASn1nC,EAAE7+C,KAAKmgN,KAAK8z9B,cAAcC,WAAWh9oC,EAAE88oC,SAAS98oC,EAAEg9oC,YAAY,OAAOxmqB,MAAM1tgB,KAAK4xG,EAAE8pd,YAAY50jB,EAAE9G,KAAK4xG,EAAEguO,aAAalsT,EAAE1zB,KAAK4xG,EAAEg+E,IAAI,IAAIh+E,EAAE,MAAM,CAAC,IAAIt+C,EAAE,IAAIs+C,EAAEzxG,EAAEi+jB,SAASt3jB,IAAI,KAAKwsD,EAAEkyJ,IAAI9xL,GAAG,GAAG,OAAO4/B,EAAEk7lC,MAAM,GAAGxupC,KAAKw+pC,eAAelrmC,EAAE,CAAC,EAAEmzL,EAAE39M,UAAUqroC,aAAa,SAASj9oC,EAAE/2B,GAAG,IAAI2G,EAAE,EAAEowB,EAAE0oT,aAAa5/U,KAAK4xG,EAAEw8iC,YAAY,OAAOtnpC,EAAE,IAAIowB,EAAEA,EAAEi8nC,MAAMrspC,KAAK3G,GAAG+2B,EAAEsuL,IAAIxlN,KAAK4xG,IAAI,EAAE16E,EAAE04J,IAAI5vL,KAAK4xG,GAAG16E,CAAC,EAAEuvN,EAAE39M,UAAUwE,KAAK,SAASpW,EAAE/2B,EAAE2G,EAAE4sB,GAAG,iBAAiB5sB,IAAI4sB,EAAE5sB,EAAEA,EAAE,MAAM4sB,IAAIA,EAAE,CAAC,GAAGvzB,EAAEH,KAAKw+pC,eAAer+pC,EAAE2G,GAAGowB,EAAEl3B,KAAKm0qC,aAAa,IAAIvikC,EAAE16E,EAAE,KAAK,QAAQo8B,EAAEtzD,KAAK4xG,EAAEguO,aAAa/gS,EAAE1+C,EAAEkuI,aAAaqtb,QAAQ,KAAKpogB,GAAGwyE,EAAE5uG,EAAEwkiB,QAAQ,KAAKpogB,GAAG6jD,EAAE,IAAInkD,EAAE,CAACmtJ,KAAKngN,KAAKmgN,KAAK6z9B,QAAQn1nC,EAAE6ud,MAAM5nY,EAAEguiC,KAAKpgpC,EAAEogpC,KAAKC,QAAQrgpC,EAAEqgpC,SAAS,SAAStt7B,EAAEzmP,KAAK4xG,EAAEg+E,IAAI,IAAIh+E,EAAE,IAAIp1D,EAAE,GAAGA,IAAI,CAAC,IAAIysH,EAAEv1I,EAAEmyG,EAAEnyG,EAAEmyG,EAAErpF,GAAG,IAAIo1D,EAAEuF,EAAEind,SAASp+jB,KAAK4xG,EAAEguO,eAAe,MAAM32K,EAAEjpK,KAAKm0qC,aAAalrgC,GAAE,IAAKor/B,KAAK,IAAI,GAAGpr/B,EAAEu8C,IAAIihC,IAAI,GAAG,CAAC,IAAI1hP,EAAE/E,KAAKioD,EAAEuqmC,IAAIvp/B,GAAG,IAAIlkK,EAAE6sqC,aAAa,CAAC,IAAIvjmC,EAAEtpE,EAAEgplB,OAAOhviB,GAAEsvB,EAAEyllC,KAAK9zpC,KAAK4xG,GAAG,GAAG,IAAI7yD,GAAEs1mC,KAAK,GAAG,CAAC,IAAIpsmC,GAAEghH,EAAEqr/B,KAAKt0pC,KAAK4xG,GAAG4gjC,IAAIzzmC,GAAEyzmC,IAAIrypC,EAAEkuI,cAAcshhC,KAAKz4nC,IAAI,GAAG,KAAK+wB,GAAEA,GAAE6rmC,KAAK9zpC,KAAK4xG,IAAIyijC,KAAK,GAAG,CAAC,IAAI93lC,IAAGx3D,EAAEkplB,OAAOimkB,QAAQ,EAAE,IAAI,IAAI7llC,EAAEm3I,IAAIzmK,IAAG,EAAE,GAAG,OAAOrrB,EAAE0gpC,WAAWnsnC,GAAEu9J,IAAIxlN,KAAK0zqC,IAAI,IAAIzrnC,GAAEjoD,KAAK4xG,EAAEg+E,IAAI3nI,IAAGsU,IAAG,GAAG,IAAI4E,EAAE,CAACr6D,EAAEi4C,GAAErrB,EAAEu0B,GAAEosnC,cAAc93mC,IAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEkqL,EAAE39M,UAAUuokC,OAAO,SAASn6kC,EAAE/2B,EAAE2G,EAAEksD,GAAG97B,EAAEl3B,KAAKm0qC,aAAa,IAAIvikC,EAAE16E,EAAE,KAAKpwB,EAAE9G,KAAK+mqC,cAAcjgqC,EAAEksD,GAAG,IAAIt/B,GAAGvzB,EAAE,IAAIghE,EAAEhhE,EAAE,QAAQ2G,EAAEwsD,EAAEnzD,EAAEuzB,EAA4C,GAAvCA,EAAE2goC,KAAK,GAAG,GAAG3goC,EAAE8xL,IAAIxlN,KAAK4xG,IAAI,GAAct+C,EAAE+gmC,KAAK,GAAG,GAAG/gmC,EAAEkyJ,IAAIxlN,KAAK4xG,IAAI,EAAE,OAAM,EAAG,IAAI/yD,EAAEinF,EAAExyE,EAAEghmC,KAAKt0pC,KAAK4xG,GAAGuF,EAAE2uB,EAAE0shC,IAAIt7nC,GAAG48nC,KAAK9zpC,KAAK4xG,GAAG60I,EAAE3gH,EAAE0shC,IAAI9+nC,GAAGogoC,KAAK9zpC,KAAK4xG,GAAG,OAAO5xG,KAAK09oB,MAAMmyhB,gBAAgBhxnC,EAAE7+C,KAAKioD,EAAEkqnC,QAAQh7jC,EAAErwG,EAAEkgqC,YAAYvg7B,IAAImr7B,cAAc/ynC,EAAEuznC,OAAO1+oC,KAAKmrB,EAAE7+C,KAAKioD,EAAEiqnC,OAAO/6jC,EAAErwG,EAAEkgqC,YAAYvg7B,IAAImr7B,cAAc,IAAI/ynC,EAAEkviB,OAAO+lkB,KAAK9zpC,KAAK4xG,GAAG4zG,IAAI9xL,EAAE,EAAE+yN,EAAE39M,UAAUwroC,cAAc,SAASp9oC,EAAE/2B,EAAE2G,EAAEksD,GAAG8yE,GAAG,EAAEh/H,KAAKA,EAAE,4CAA4C3G,EAAE,IAAIghE,EAAEhhE,EAAE6yD,GAAG,IAAIt/B,EAAE1zB,KAAK4xG,EAAEt+C,EAAE,IAAIs+C,EAAE16E,GAAG2nB,EAAE1+C,EAAE2G,EAAEqwG,EAAEh3G,EAAEuzB,EAAE+yN,EAAE,EAAE3/O,EAAE01C,EAAE11C,GAAG,EAAE,GAAG+3C,EAAE2mK,IAAIxlN,KAAK09oB,MAAM34oB,EAAE+upC,KAAK9zpC,KAAK09oB,MAAM9riB,KAAK,GAAGp1D,EAAE,MAAM,IAAIohD,MAAM,wCAAwC/+C,EAAI7+C,KAAK09oB,MAAMkzhB,WAAbp0nC,EAAwBqC,EAAE8vC,IAAI3uF,KAAK09oB,MAAM9riB,GAA4B/yD,EAAzB4nM,GAA8B,IAAIx9E,EAAE9oK,EAAE2G,EAAEwtpC,KAAK5goC,GAAG3uB,EAAE2uB,EAAEk8J,IAAIt8H,GAAGk/lC,IAAIvp/B,GAAG6q/B,KAAKpgoC,GAAG26C,EAAE8oC,EAAEq7iC,IAAIvp/B,GAAG6q/B,KAAKpgoC,GAAG,OAAO1zB,KAAKioD,EAAEiqnC,OAAOntqC,EAAE85C,EAAEwvB,EAAE,EAAEo4K,EAAE39M,UAAUyroC,oBAAoB,SAASr9oC,EAAE/2B,EAAE2G,EAAE8qG,GAAG,GAAG,QAAQzxG,EAAE,IAAIghE,EAAEhhE,EAAEyxG,IAAIyikC,cAAc,OAAOl0qC,EAAEk0qC,cAAc,QAAQrhnC,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIt/B,EAAE,IAAIA,EAAE1zB,KAAKs0qC,cAAcp9oC,EAAE/2B,EAAE6yD,EAAE,OAAU,QAAQ,CAAC,GAAGt/B,EAAEyrL,GAAGr4M,GAAG,OAAOksD,CAAC,CAAC,MAAM,IAAI4qC,MAAM,uCAAuC,CAAC,EAAE,CAAC,YAAY,IAAI,WAAW,IAAI,QAAQ,IAAI,cAAc,IAAI,QAAQ,IAAIoxkC,QAAQ,IAAI,YAAY,MAAM,IAAI,CAAC,SAAS93oC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,SAAS87B,EAAE97B,EAAE,YAAYi4oC,OAAO,SAASz7oC,EAAEwD,EAAE/2B,GAAGH,KAAKu+pC,GAAGrnoC,EAAEl3B,KAAKw0qC,KAAK,KAAKx0qC,KAAKy0qC,IAAI,KAAKt0qC,EAAEq0qC,MAAMx0qC,KAAKqnqC,eAAelnqC,EAAEq0qC,KAAKr0qC,EAAEu0qC,SAASv0qC,EAAEs0qC,KAAKz0qC,KAAKmnqC,cAAchnqC,EAAEs0qC,IAAIt0qC,EAAEw0qC,OAAO,CAACx0qC,EAAE4krB,QAAQrxpB,EAAEA,EAAEmgpC,WAAW,SAAS38oC,EAAE/2B,EAAE2G,GAAG,OAAO3G,aAAauzB,EAAEvzB,EAAE,IAAIuzB,EAAEwD,EAAE,CAACu9oC,IAAIt0qC,EAAEw0qC,OAAO7tqC,GAAG,EAAE4sB,EAAEkgpC,YAAY,SAAS18oC,EAAE/2B,EAAE2G,GAAG,OAAO3G,aAAauzB,EAAEvzB,EAAE,IAAIuzB,EAAEwD,EAAE,CAACs9oC,KAAKr0qC,EAAEu0qC,QAAQ5tqC,GAAG,EAAE4sB,EAAEoV,UAAU6vd,SAAS,WAAW,IAAIzhe,EAAEl3B,KAAKgnqC,YAAY,OAAO9voC,EAAE06oC,aAAa,CAACtuqC,QAAO,EAAGk1F,OAAO,sBAAsBthE,EAAEyhe,WAAWzhe,EAAEs7nC,IAAIxypC,KAAKu+pC,GAAG7ghB,MAAM9riB,GAAGggkC,aAAa,CAACtuqC,QAAO,EAAGk1F,OAAO,MAAM,CAACl1F,QAAO,EAAGk1F,OAAO,uBAAuB,CAACl1F,QAAO,EAAGk1F,OAAO,4BAA4B,EAAE9kE,EAAEoV,UAAUk+nC,UAAU,SAAS9voC,EAAE/2B,GAAG,MAAM,iBAAiB+2B,IAAI/2B,EAAE+2B,EAAEA,EAAE,MAAMl3B,KAAKy0qC,MAAMz0qC,KAAKy0qC,IAAIz0qC,KAAKu+pC,GAAGt2mC,EAAEuqmC,IAAIxypC,KAAKw0qC,OAAOr0qC,EAAEH,KAAKy0qC,IAAI76N,OAAOz58B,EAAE+2B,GAAGl3B,KAAKy0qC,GAAG,EAAE/gpC,EAAEoV,UAAUulG,WAAW,SAASn3G,GAAG,MAAM,QAAQA,EAAEl3B,KAAKw0qC,KAAKrspC,SAAS,GAAG,GAAGnoB,KAAKw0qC,IAAI,EAAE9gpC,EAAEoV,UAAUu+nC,eAAe,SAASnwoC,EAAE/2B,GAAGH,KAAKw0qC,KAAK,IAAI5ikC,EAAE16E,EAAE/2B,GAAG,IAAIH,KAAKw0qC,KAAKx0qC,KAAKw0qC,KAAK1gB,KAAK9zpC,KAAKu+pC,GAAG7ghB,MAAM9riB,EAAE,EAAEl+E,EAAEoV,UAAUq+nC,cAAc,SAASjwoC,EAAE/2B,GAAG,GAAG+2B,EAAEvP,GAAGuP,EAAEqlC,EAAE,MAAM,SAASv8D,KAAKu+pC,GAAG7ghB,MAAMj5oB,KAAKuuD,EAAE97B,EAAEvP,EAAE,qBAAqB,UAAU3nB,KAAKu+pC,GAAG7ghB,MAAMj5oB,MAAM,YAAYzE,KAAKu+pC,GAAG7ghB,MAAMj5oB,MAAMuuD,EAAE97B,EAAEvP,GAAGuP,EAAEqlC,EAAE,qCAAqCv8D,KAAKy0qC,IAAIz0qC,KAAKu+pC,GAAG7ghB,MAAMlwgB,MAAMt2G,EAAEvP,EAAEuP,EAAEqlC,IAAIv8D,KAAKy0qC,IAAIz0qC,KAAKu+pC,GAAG7ghB,MAAMizhB,YAAYz5oC,EAAE/2B,EAAE,EAAEuzB,EAAEoV,UAAUwl7B,OAAO,SAASp37B,GAAG,OAAOA,EAAEyhe,YAAY3lc,EAAE97B,EAAEyhe,WAAW,8BAA8Bzhe,EAAEs7nC,IAAIxypC,KAAKw0qC,MAAMzmlB,MAAM,EAAEr6jB,EAAEoV,UAAUwE,KAAK,SAASpW,EAAE/2B,EAAE2G,GAAG,OAAO9G,KAAKu+pC,GAAGjxnC,KAAKpW,EAAEl3B,KAAKG,EAAE2G,EAAE,EAAE4sB,EAAEoV,UAAUuokC,OAAO,SAASn6kC,EAAE/2B,GAAG,OAAOH,KAAKu+pC,GAAGltD,OAAOn6kC,EAAE/2B,EAAEH,KAAK,EAAE0zB,EAAEoV,UAAU4knC,QAAQ,WAAW,MAAM,eAAe1tpC,KAAKw0qC,MAAMx0qC,KAAKw0qC,KAAKrspC,SAAS,GAAG,IAAI,UAAUnoB,KAAKy0qC,KAAKz0qC,KAAKy0qC,IAAI/mB,WAAW,IAAI,CAAC,EAAE,CAAC,WAAW,IAAI,QAAQ,MAAM,IAAI,CAAC,SAASx2nC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,SAAS87B,EAAE97B,EAAE,YAAYxD,EAAEs/B,EAAEm8mC,OAAO,SAAS77mC,EAAEp8B,EAAE/2B,GAAG,GAAG+2B,aAAao8B,EAAE,OAAOp8B,EAAEl3B,KAAK40qC,WAAW19oC,EAAE/2B,KAAKuzB,EAAEwD,EAAEpwB,GAAGowB,EAAExD,EAAE,4BAA4B1zB,KAAK8G,EAAE,IAAI8qG,EAAE16E,EAAEpwB,EAAE,IAAI9G,KAAK0zB,EAAE,IAAIk+E,EAAE16E,EAAExD,EAAE,IAA6B1zB,KAAKq0qC,mBAA9B,IAASn9oC,EAAEm9oC,cAAiC,KAAwBn9oC,EAAEm9oC,cAAc,CAAC,SAASx1nC,IAAI7+C,KAAK60qC,MAAM,CAAC,CAAC,SAAS/uiC,EAAE5uG,EAAE/2B,GAAG,IAAI2G,EAAEowB,EAAE/2B,EAAE00qC,SAAS,KAAK,IAAI/tqC,GAAG,OAAOA,EAAE,IAAI8qG,EAAE,GAAG9qG,EAAE,GAAG,IAAI8qG,GAAGA,EAAE,EAAE,OAAM,EAAG,QAAQ5+C,EAAE,EAAEt/B,EAAE,EAAE4/B,EAAEnzD,EAAE00qC,MAAMnhpC,EAAEk+E,EAAEl+E,IAAI4/B,IAAIN,IAAI,EAAEA,GAAG97B,EAAEo8B,GAAGN,KAAK,EAAE,QAAQA,GAAG,OAAO7yD,EAAE00qC,MAAMvhnC,EAAEN,EAAE,CAAC,SAASmkD,EAAEjgF,GAAG,QAAQ/2B,EAAE,EAAE2G,EAAEowB,EAAEtP,OAAO,GAAGsP,EAAE/2B,MAAM,IAAI+2B,EAAE/2B,EAAE,KAAKA,EAAE2G,GAAG3G,IAAI,OAAO,IAAIA,EAAE+2B,EAAEA,EAAEpE,MAAM3yB,EAAE,CAAC,SAASghE,EAAEjqC,EAAE/2B,GAAG,GAAGA,EAAE,IAAI+2B,EAAEr0B,KAAK1C,OAAO,CAAC,IAAI2G,EAAE,GAAG6kC,KAAK1lB,IAAI9lB,GAAGwrC,KAAKmpoC,MAAM,GAAG,IAAI59oC,EAAEr0B,KAAK,IAAIiE,KAAKA,GAAGowB,EAAEr0B,KAAK1C,KAAK2G,GAAG,GAAG,KAAKowB,EAAEr0B,KAAK1C,EAAE,CAAC,CAACA,EAAE4krB,QAAQzxnB,EAAEA,EAAExqB,UAAU8roC,WAAW,SAAS19oC,EAAE/2B,GAAG+2B,EAAE87B,EAAE0ogB,QAAQxkiB,EAAE/2B,GAAG,IAAI2G,EAAE,IAAI+3C,EAAE,GAAG,KAAK3nB,EAAEpwB,EAAE+tqC,SAAS,OAAM,EAAG,IAAInhpC,EAAEoyG,EAAE5uG,EAAEpwB,GAAuD,IAAjD,IAAK4sB,GAAcA,EAAE5sB,EAAE+tqC,QAAQ39oC,EAAEtP,QAAmB,IAAIsP,EAAEpwB,EAAE+tqC,SAAS,OAAM,EAAG,IAAIvhnC,EAAEwyE,EAAE5uG,EAAEpwB,GAAG,IAAG,IAAKwsD,EAAE,OAAM,EAAG,IAAI6jD,EAAEjgF,EAAEpE,MAAMhsB,EAAE+tqC,MAAMvhnC,EAAExsD,EAAE+tqC,OAAO,GAAG/tqC,EAAE+tqC,OAAOvhnC,EAAE,IAAIp8B,EAAEpwB,EAAE+tqC,SAAS,OAAM,EAAG,IAAI1zmC,EAAE2kE,EAAE5uG,EAAEpwB,GAAsB,IAAhB,IAAKq6D,GAAcjqC,EAAEtP,SAASu5C,EAAEr6D,EAAE+tqC,MAAM,OAAM,EAAG,IAAIpu7B,EAAEvvN,EAAEpE,MAAMhsB,EAAE+tqC,MAAM1zmC,EAAEr6D,EAAE+tqC,OAAO,GAAG,IAAI19jC,EAAE,GAAG,CAAC,KAAK,IAAIA,EAAE,IAAI,OAAM,EAAGA,EAAEA,EAAErkF,MAAM,EAAE,CAAC,GAAG,IAAI2zN,EAAE,GAAG,CAAC,KAAK,IAAIA,EAAE,IAAI,OAAM,EAAGA,EAAEA,EAAE3zN,MAAM,EAAE,CAAC,OAAO9yB,KAAK8G,EAAE,IAAI8qG,EAAEuF,GAAGn3G,KAAK0zB,EAAE,IAAIk+E,EAAE60I,GAAGzmP,KAAKq0qC,cAAc,MAAK,CAAE,EAAE/gnC,EAAExqB,UAAU21nC,MAAM,SAASvnoC,GAAG,IAAI/2B,EAAEH,KAAK8G,EAAE40jB,UAAU50jB,EAAE9G,KAAK0zB,EAAEgoiB,UAAU,IAAI,IAAIv7jB,EAAE,KAAKA,EAAE,CAAC,GAAG+pD,OAAO/pD,IAAI,IAAI2G,EAAE,KAAKA,EAAE,CAAC,GAAGojD,OAAOpjD,IAAI3G,EAAEg3G,EAAEh3G,GAAG2G,EAAEqwG,EAAErwG,KAAKA,EAAE,IAAI,IAAIA,EAAE,KAAKA,EAAEA,EAAEgsB,MAAM,GAAG,IAAI8+E,EAAE,CAAC,GAAGzwC,EAAEywC,EAAEzxG,EAAEynB,SAASgqF,EAAEA,EAAE1nD,OAAO/pD,IAAI0C,KAAK,GAAGs+D,EAAEywC,EAAE9qG,EAAE8gB,QAAQ,IAAI8L,EAAEk+E,EAAE1nD,OAAOpjD,GAAGwsD,EAAE,CAAC,IAAI,OAAO6N,EAAE7N,EAAE5/B,EAAE9L,QAAQ0rC,EAAEA,EAAEpJ,OAAOx2B,GAAGs/B,EAAE4m5B,OAAOtm5B,EAAEp8B,EAAE,CAAC,EAAE,CAAC,WAAW,IAAI,QAAQ,MAAM,IAAI,CAAC,SAASA,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,WAAW87B,EAAE97B,EAAE,aAAaxD,EAAEwD,EAAE,YAAYo8B,EAAE5/B,EAAEy7oC,OAAOtwnC,EAAEnrB,EAAEqhpC,WAAWjviC,EAAE5uG,EAAE,SAASigF,EAAEjgF,EAAE,eAAe,SAASiqC,EAAEjqC,GAAG,GAAGo8B,EAAE,YAAYp8B,EAAE,qCAAqCl3B,gBAAgBmhE,GAAG,OAAO,IAAIA,EAAEjqC,GAAgBl3B,KAAK09oB,MAAlBxmnB,EAAE87B,EAAE97B,GAAGwmnB,MAAmB19oB,KAAKioD,EAAE/wB,EAAE+wB,EAAEjoD,KAAKioD,EAAE6onC,WAAW55oC,EAAE06E,EAAEw8iC,YAAY,GAAGpupC,KAAKg1qC,WAAW99oC,EAAEs2G,QAAQztI,YAAYC,KAAKi1qC,eAAetpoC,KAAK0wH,KAAKnlI,EAAE06E,EAAEw8iC,YAAY,GAAGpupC,KAAKmgN,KAAKvuG,EAAE+rjC,MAAM,CAACx9pC,EAAE4krB,QAAQ5jnB,EAAEA,EAAEr4B,UAAUwE,KAAK,SAASpW,EAAE/2B,GAAG+2B,EAAE2nB,EAAE3nB,GAAG,IAAIpwB,EAAE9G,KAAKk1qC,cAAc/0qC,GAAGyxG,EAAE5xG,KAAKm1qC,QAAQruqC,EAAEsuqC,gBAAgBl+oC,GAAG87B,EAAEhzD,KAAKioD,EAAEuqmC,IAAI5gjC,GAAGl+E,EAAE1zB,KAAKq1qC,YAAYrinC,GAAGM,EAAEtzD,KAAKm1qC,QAAQzhpC,EAAE5sB,EAAEwuqC,WAAWp+oC,GAAGs7nC,IAAI1rpC,EAAE0tqC,QAAQ1uiC,EAAEl0B,EAAEjjB,IAAIr7B,GAAGwgmC,KAAK9zpC,KAAK09oB,MAAM9riB,GAAG,OAAO5xG,KAAKu1qC,cAAc,CAACpm2B,EAAEn8Q,EAAE29Q,EAAE7qM,EAAE0viC,SAAS9hpC,GAAG,EAAEytC,EAAEr4B,UAAUuokC,OAAO,SAASn6kC,EAAE/2B,EAAE2G,GAAGowB,EAAE2nB,EAAE3nB,GAAG/2B,EAAEH,KAAKu1qC,cAAcp1qC,GAAG,IAAIyxG,EAAE5xG,KAAK+mqC,cAAcjgqC,GAAGksD,EAAEhzD,KAAKm1qC,QAAQh1qC,EAAEq1qC,WAAW5jkC,EAAE0jkC,WAAWp+oC,GAAGxD,EAAE1zB,KAAKioD,EAAEuqmC,IAAIrypC,EAAEwwU,KAAK,OAAOxwU,EAAEgvU,IAAIxgP,IAAIijB,EAAE6ikC,MAAMjiB,IAAIx/lC,IAAImsJ,GAAGzrL,EAAE,EAAEytC,EAAEr4B,UAAUqsoC,QAAQ,WAAW,QAAQj+oC,EAAEl3B,KAAKmgN,OAAOhgN,EAAE,EAAEA,EAAE81B,UAAUrO,OAAOznB,IAAI+2B,EAAEqqD,OAAOtrD,UAAU91B,IAAI,OAAOuzB,EAAE+hpC,UAAUv+oC,EAAE0umC,UAAUkuB,KAAK9zpC,KAAK09oB,MAAM9riB,EAAE,EAAEzwC,EAAEr4B,UAAUi+nC,cAAc,SAAS7voC,GAAG,OAAO4uG,EAAE+tiC,WAAW7zqC,KAAKk3B,EAAE,EAAEiqC,EAAEr4B,UAAUosoC,cAAc,SAASh+oC,GAAG,OAAO4uG,EAAE4viC,WAAW11qC,KAAKk3B,EAAE,EAAEiqC,EAAEr4B,UAAUysoC,cAAc,SAASr+oC,GAAG,OAAOA,aAAaigF,EAAEjgF,EAAE,IAAIigF,EAAEn3G,KAAKk3B,EAAE,EAAEiqC,EAAEr4B,UAAUusoC,YAAY,SAASn+oC,GAAG,IAAI/2B,EAAE+2B,EAAE+2jB,OAAOvyB,QAAQ,KAAK17jB,KAAKi1qC,gBAAgB,OAAO90qC,EAAEH,KAAKi1qC,eAAe,IAAI/9oC,EAAE62jB,OAAOmmkB,QAAQ,IAAI,EAAE/zpC,CAAC,EAAEghE,EAAEr4B,UAAU6noC,YAAY,SAASz5oC,GAAG,IAAI/2B,GAAG+2B,EAAExD,EAAEqhpC,WAAW79oC,IAAItP,OAAO,EAAE9gB,EAAEowB,EAAEpE,MAAM,EAAE3yB,GAAG+pD,QAAO,IAAKhzB,EAAE/2B,IAAIyxG,EAAE,IAAI,IAAI16E,EAAE/2B,IAAI6yD,EAAEt/B,EAAE+hpC,UAAU3uqC,GAAG,OAAO9G,KAAK09oB,MAAMi0hB,WAAW3+mC,EAAE4+C,EAAE,EAAEzwC,EAAEr4B,UAAU6soC,UAAU,SAASz+oC,GAAG,OAAOA,EAAEwkiB,QAAQ,KAAK17jB,KAAKi1qC,eAAe,EAAE9zmC,EAAEr4B,UAAU8soC,UAAU,SAAS1+oC,GAAG,OAAOxD,EAAE+hpC,UAAUv+oC,EAAE,EAAEiqC,EAAEr4B,UAAU+soC,QAAQ,SAAS3+oC,GAAG,OAAOA,aAAal3B,KAAKg1qC,UAAU,CAAC,EAAE,CAAC,YAAY,IAAI,WAAW,IAAI,QAAQ,IAAI,cAAc,IAAI,UAAU,MAAM,IAAI,CAAC,SAAS99oC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,YAAY87B,EAAE4+C,EAAEu9jC,OAAOz7oC,EAAEk+E,EAAEmjkC,WAAWzhnC,EAAEs+C,EAAEkkkC,eAAe,SAASj3nC,EAAE3nB,EAAE/2B,GAAGH,KAAK+uqC,MAAM73oC,EAAEl3B,KAAK+1qC,QAAQripC,EAAEvzB,EAAE61qC,QAAQ9+oC,EAAE2+oC,QAAQ11qC,EAAEs0qC,KAAKz0qC,KAAK2tqC,KAAKxtqC,EAAEs0qC,IAAIz0qC,KAAKi2qC,UAAUvipC,EAAEvzB,EAAEs0qC,IAAI,CAAC51nC,EAAEg1nC,WAAW,SAAS38oC,EAAE/2B,GAAG,OAAOA,aAAa0+C,EAAE1+C,EAAE,IAAI0+C,EAAE3nB,EAAE,CAACu9oC,IAAIt0qC,GAAG,EAAE0+C,EAAE62nC,WAAW,SAASx+oC,EAAE/2B,GAAG,OAAOA,aAAa0+C,EAAE1+C,EAAE,IAAI0+C,EAAE3nB,EAAE,CAAC8+oC,OAAO71qC,GAAG,EAAE0+C,EAAE/V,UAAUktoC,OAAO,WAAW,OAAOh2qC,KAAK+1qC,OAAO,EAAEzinC,EAAEzU,EAAE,WAAY,WAAW,OAAO7+C,KAAK+uqC,MAAMsG,YAAYr1qC,KAAKy0qC,MAAM,GAAInhnC,EAAEzU,EAAE,MAAO,WAAW,OAAO7+C,KAAKi2qC,UAAUj2qC,KAAK+uqC,MAAM4B,YAAY3wqC,KAAKi2qC,WAAWj2qC,KAAK+uqC,MAAM9mnC,EAAEuqmC,IAAIxypC,KAAKw0qC,OAAO,GAAIlhnC,EAAEzU,EAAE,YAAa,WAAW,IAAI3nB,EAAEl3B,KAAK+uqC,MAAM5uqC,EAAEH,KAAKmgN,OAAOr5M,EAAEowB,EAAE+9oC,eAAe,EAAErjkC,EAAEzxG,EAAE2yB,MAAM,EAAEoE,EAAE+9oC,gBAAgB,OAAOrjkC,EAAE,IAAI,IAAIA,EAAE9qG,IAAI,IAAI8qG,EAAE9qG,IAAI,GAAG8qG,CAAC,GAAIt+C,EAAEzU,EAAE,OAAQ,WAAW,OAAO7+C,KAAK+uqC,MAAM6G,UAAU51qC,KAAKk2qC,YAAY,GAAI5inC,EAAEzU,EAAE,OAAQ,WAAW,OAAO7+C,KAAK+uqC,MAAM5u9B,OAAO5+H,OAAOvhF,KAAKg2qC,UAAUpwC,QAAQ,GAAItykC,EAAEzU,EAAE,gBAAiB,WAAW,OAAO7+C,KAAKmgN,OAAOrtL,MAAM9yB,KAAK+uqC,MAAMkG,eAAe,GAAIp2nC,EAAE/V,UAAUwE,KAAK,SAASpW,GAAG,OAAO87B,EAAEhzD,KAAK+1qC,QAAQ,2BAA2B/1qC,KAAK+uqC,MAAMzhoC,KAAKpW,EAAEl3B,KAAK,EAAE6+C,EAAE/V,UAAUuokC,OAAO,SAASn6kC,EAAE/2B,GAAG,OAAOH,KAAK+uqC,MAAM19D,OAAOn6kC,EAAE/2B,EAAEH,KAAK,EAAE6+C,EAAE/V,UAAUqtoC,UAAU,SAASj/oC,GAAG,OAAO87B,EAAEhzD,KAAK+1qC,QAAQ,0BAA0BnkkC,EAAEgo2B,OAAO558B,KAAKg2qC,SAAS9+oC,EAAE,EAAE2nB,EAAE/V,UAAUk+nC,UAAU,SAAS9voC,GAAG,OAAO06E,EAAEgo2B,OAAO558B,KAAKs1qC,WAAWp+oC,EAAE,EAAE/2B,EAAE4krB,QAAQlmoB,CAAC,EAAE,CAAC,WAAW,MAAM,IAAI,CAAC,SAAS3nB,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,SAAS87B,EAAE97B,EAAE,YAAYxD,EAAEs/B,EAAEm8mC,OAAO77mC,EAAEN,EAAE8inC,eAAej3nC,EAAEmU,EAAE+hnC,WAAW,SAASjviC,EAAE5uG,EAAE/2B,GAAGH,KAAK+uqC,MAAM73oC,EAAE,iBAAiB/2B,IAAIA,EAAE0+C,EAAE1+C,IAAIiC,MAAMq3G,QAAQt5G,KAAKA,EAAE,CAACgvU,EAAEhvU,EAAE2yB,MAAM,EAAEoE,EAAE+9oC,gBAAgBtk2B,EAAExwU,EAAE2yB,MAAMoE,EAAE+9oC,kBAAkBvhpC,EAAEvzB,EAAEgvU,GAAGhvU,EAAEwwU,EAAE,4BAA4Bz5S,EAAE2+oC,QAAQ11qC,EAAEgvU,KAAKnvU,KAAKo2qC,GAAGj2qC,EAAEgvU,GAAGhvU,EAAEwwU,aAAa/+N,IAAI5xG,KAAKq2qC,GAAGl2qC,EAAEwwU,GAAG3wU,KAAKs2qC,UAAUl0qC,MAAMq3G,QAAQt5G,EAAEgvU,GAAGhvU,EAAEgvU,EAAEhvU,EAAEq1qC,SAASx1qC,KAAKu2qC,UAAUn0qC,MAAMq3G,QAAQt5G,EAAEwwU,GAAGxwU,EAAEwwU,EAAExwU,EAAEq2qC,QAAQ,CAACljnC,EAAEwyE,EAAE,IAAK,WAAW,OAAO9lI,KAAK+uqC,MAAM6G,UAAU51qC,KAAKw2qC,WAAW,GAAIljnC,EAAEwyE,EAAE,IAAK,WAAW,OAAO9lI,KAAK+uqC,MAAM4B,YAAY3wqC,KAAKw1qC,WAAW,GAAIlinC,EAAEwyE,EAAE,WAAY,WAAW,OAAO9lI,KAAK+uqC,MAAMsG,YAAYr1qC,KAAKmvU,IAAI,GAAI77Q,EAAEwyE,EAAE,WAAY,WAAW,OAAO9lI,KAAK+uqC,MAAM4G,UAAU31qC,KAAK2wU,IAAI,GAAI7qM,EAAEh9F,UAAU2toC,QAAQ,WAAW,OAAOz2qC,KAAKw1qC,WAAWtrnC,OAAOlqD,KAAKw2qC,WAAW,EAAE1wiC,EAAEh9F,UAAUwrkC,MAAM,WAAW,OAAOthjC,EAAE4m5B,OAAO558B,KAAKy2qC,UAAU,OAAOvwqC,aAAa,EAAE/F,EAAE4krB,QAAQj/iB,CAAC,EAAE,CAAC,WAAW,IAAI,QAAQ,MAAM,IAAI,CAAC,SAAS5uG,EAAE/2B,EAAE2G,GAAG,aAAa3G,EAAE4krB,QAAQ,CAACgsf,QAAQ,CAAC30zB,KAAK,EAAE4kB,OAAO,CAAC,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,kEAAkE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,kEAAkE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,kEAAkE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,kEAAkE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,kEAAkE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,sEAAsEgwyB,IAAI,CAACV,IAAI,EAAEtvyB,OAAO,CAAC,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,kEAAkE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,kEAAkE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,kEAAkE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,kEAAkE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,iEAAiE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,kEAAkE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,mEAAmE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,oEAAoE,CAAC,mEAAmE,sEAAsE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS9pW,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE9qG,EAAEksD,EAAE97B,EAAE,SAASxD,EAAEwD,EAAE,uBAAuBo8B,EAAEp8B,EAAE,6BAA6B06E,EAAEu9jC,OAAOz7oC,EAAEk+E,EAAE8pd,QAAQpogB,EAAEoogB,QAAQ9pd,EAAE8kkC,MAAMpjnC,EAAEojnC,MAAM9kkC,EAAE0igC,MAAMhhjC,EAAEghjC,MAAM1igC,EAAEgo2B,OAAOtm5B,EAAEsm5B,OAAOho2B,EAAEq9jC,OAAO,SAAS/3oC,EAAE/2B,EAAE2G,GAAG,IAAI8qG,EAAE,IAAIxvG,MAAMupC,KAAKC,IAAI1U,EAAEk3nC,YAAYtnpC,GAAG,GAAG8qG,EAAEowC,KAAK,GAAG,QAAQhvF,EAAE,GAAG7yD,EAAE,EAAEuzB,EAAEwD,EAAE5tB,QAAQgqD,EAAE,EAAEA,EAAEs+C,EAAEhqF,OAAO0rC,IAAI,CAAC,IAAIzU,EAAEinF,EAAEpyG,EAAEq6nC,MAAM/6lC,EAAE,GAAGt/B,EAAEwgoC,QAAiCxgoC,EAAE4/nC,MAA1Bz0mC,EAAEinF,GAAG9yE,GAAG,GAAG,GAAGA,GAAG,GAAG8yE,EAAEA,GAAcjnF,EAAE,EAAE+yD,EAAEt+C,GAAGzU,EAAEnrB,EAAEs6nC,OAAO,EAAE,CAAC,OAAOp8iC,CAAC,EAAEA,EAAEs9jC,OAAO,SAASh4oC,EAAE/2B,GAAG,IAAI2G,EAAE,CAAC,GAAG,IAAIowB,EAAEA,EAAE5tB,QAAQnJ,EAAEA,EAAEmJ,QAAQ,QAAQsoG,EAAE5+C,EAAE,EAAEt/B,EAAE,EAAEwD,EAAEm9nC,MAAMrhmC,GAAG,GAAG7yD,EAAEk0pC,MAAM3goC,GAAG,GAAG,CAAC,IAAI4/B,EAAEzU,EAAEinF,EAAE5uG,EAAE62nC,MAAM,GAAG/6lC,EAAE,EAAEmkD,EAAEh3G,EAAE4tpC,MAAM,GAAGr6nC,EAAE,EAAE,IAAIoyG,IAAIA,GAAE,GAAI,IAAI3uB,IAAIA,GAAE,GAAI7jD,EAAM,EAAEwyE,EAAK,IAAKl0B,EAAE16E,EAAE62nC,MAAM,GAAG/6lC,EAAE,IAAI,IAAI4+C,GAAG,IAAIuF,EAAE2uB,GAAGA,EAA1C,EAA4Ch/H,EAAE,GAAGjE,KAAKywD,GAAGzU,EAAM,EAAEs4D,EAAK,IAAKvF,EAAEzxG,EAAE4tpC,MAAM,GAAGr6nC,EAAE,IAAI,IAAIk+E,GAAG,IAAIk0B,EAAE3uB,GAAGA,EAA1C,EAA4CrwG,EAAE,GAAGjE,KAAKg8C,GAAG,EAAEmU,IAAIM,EAAE,IAAIN,EAAE,EAAEA,GAAG,EAAEt/B,IAAImrB,EAAE,IAAInrB,EAAE,EAAEA,GAAGwD,EAAE82nC,OAAO,GAAG7tpC,EAAE6tpC,OAAO,EAAE,CAAC,OAAOlnpC,CAAC,EAAE8qG,EAAEkkkC,eAAe,SAAS5+oC,EAAE/2B,EAAE2G,GAAG,IAAI8qG,EAAE,IAAIzxG,EAAE+2B,EAAE4R,UAAU3oC,GAAG,WAAW,YAAO,IAASH,KAAK4xG,GAAG5xG,KAAK4xG,GAAG5xG,KAAK4xG,GAAG9qG,EAAEiiC,KAAK/oC,KAAK,CAAC,EAAE4xG,EAAEmjkC,WAAW,SAAS79oC,GAAG,MAAM,iBAAiBA,EAAE06E,EAAE8pd,QAAQxkiB,EAAE,OAAOA,CAAC,EAAE06E,EAAE6jkC,UAAU,SAASv+oC,GAAG,OAAO,IAAI87B,EAAE97B,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,IAAI,sBAAsB,IAAI,4BAA4B,MAAM,IAAI,CAAC,SAASA,EAAE/2B,EAAE2G,GAAGmvB,UAAU,GAAG,KAAK,GAAGD,MAAMlvB,EAAEmvB,UAAU,EAAE,CAAC01M,OAAO,IAAIs47B,IAAI,MAAM,IAAI,CAAC,SAAS/soC,EAAE/2B,EAAE2G,GAAG3G,EAAE4krB,QAAQ,CAACnjrB,KAAK,WAAWw2P,QAAQ,QAAQvoL,YAAY,kBAAkB8mmC,KAAK,kBAAkBl7nC,MAAM,CAAC,OAAOm7nC,QAAQ,CAACC,KAAK,kBAAkB,WAAW,wBAAwBt78B,KAAK,qDAAqD/xL,KAAK,+BAA+B4uN,QAAQ,+BAA+B0+6B,WAAW,CAACryqC,KAAK,MAAMe,IAAI,mCAAmC+5nC,SAAS,CAAC,KAAK,WAAW,QAAQ,gBAAgBpiM,OAAO,oCAAoCj/B,QAAQ,MAAM64Q,KAAK,CAACvxqC,IAAI,8CAA8CwxqC,SAAS,sCAAsCC,gBAAgB,CAACC,KAAK,SAASC,UAAU,SAASC,OAAO,SAASC,MAAM,SAAS,mBAAmB,SAAS,YAAY,SAAS,wBAAwB,SAAS,qBAAqB,SAAS,uBAAuB,SAAS,uBAAuB,SAAS,kBAAkB,SAASC,SAAS,SAASC,MAAM,UAAUlw2B,aAAa,CAAC,QAAQ,UAAU2n2B,QAAQ,SAAS,UAAU,SAAS,YAAY,SAAS1nC,SAAS,SAAS,sBAAsB,SAAS,4BAA4B,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,SAASpwmC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAElvG,OAAO+rI,QAAQ,SAASv3G,GAAG,IAAI/2B,EAAE,WAAW,EAAE,OAAOA,EAAE2oC,UAAU5R,EAAE,IAAI/2B,CAAC,EAAE6yD,EAAEtwD,OAAOC,MAAM,SAASu0B,GAAG,IAAI/2B,EAAE,GAAG,QAAQ2G,KAAKowB,EAAEx0B,OAAOomC,UAAUo5G,eAAen5G,KAAK7R,EAAEpwB,IAAI3G,EAAE0C,KAAKiE,GAAG,OAAOA,CAAC,EAAE4sB,EAAEwoL,SAASpzK,UAAU6sH,MAAM,SAASz+H,GAAG,IAAI/2B,EAAEH,KAAK,OAAO,WAAW,OAAOG,EAAE61B,MAAMkB,EAAEjB,UAAU,CAAC,EAAE,SAASq9B,IAAItzD,KAAK+wR,SAASruR,OAAOomC,UAAUo5G,eAAen5G,KAAK/oC,KAAK,aAAaA,KAAK+wR,QAAQn/K,EAAE,MAAM5xG,KAAKw3qC,aAAa,GAAGx3qC,KAAKy3qC,cAAcz3qC,KAAKy3qC,oBAAe,CAAM,CAACt3qC,EAAE4krB,QAAQzxnB,EAAEA,EAAEj+B,aAAai+B,EAAEA,EAAExqB,UAAUioP,aAAQ,EAAOz9N,EAAExqB,UAAU2uoC,mBAAc,EAAO,IAAI54nC,EAAEinF,EAAE,GAAG,IAAI,IAAI3uB,EAAE,CAAC,EAAEz0G,OAAO4jI,gBAAgB5jI,OAAO4jI,eAAenvB,EAAE,IAAI,CAAC51G,MAAM,IAAIs9C,EAAE,IAAIs4D,EAAExvF,CAAC,OAAUk3B,GAAE,CAAE,CAAC,SAASsiB,EAAEjqC,GAAG,YAAO,IAASA,EAAEugpC,cAAcnknC,EAAEoknC,oBAAoBxgpC,EAAEugpC,aAAa,CAAof,SAAS14nC,EAAE7nB,EAAE/2B,EAAE2G,EAAEksD,IAAG,IAAIt/B,GAAE4/B,GAAEzU,GAAE,GAAG,mBAAmB/3C,EAAE,MAAM,IAAI65M,UAAU,0CAA0C,IAAIrtJ,GAAEp8B,EAAE65P,UAAUz9N,GAAEqknC,cAAczgpC,EAAEmI,KAAK,cAAcl/B,EAAE2G,EAAEm5P,SAASn5P,EAAEm5P,SAASn5P,GAAGwsD,GAAEp8B,EAAE65P,SAASlyO,GAAEyU,GAAEnzD,KAAKmzD,GAAEp8B,EAAE65P,QAAQn/K,EAAE,MAAM16E,EAAEsgpC,aAAa,GAAG34nC,IAAG,GAAG,mBAAmBA,GAAEA,GAAEyU,GAAEnzD,GAAG6yD,GAAE,CAAClsD,EAAE+3C,IAAG,CAACA,GAAE/3C,GAAGksD,GAAEnU,GAAExlB,QAAQvyB,GAAG+3C,GAAEh8C,KAAKiE,IAAI+3C,GAAE+4nC,SAASlkpC,GAAEytC,EAAEjqC,KAAKxD,GAAE,GAAGmrB,GAAEj3B,OAAO8L,GAAE,CAACmrB,GAAE+4nC,QAAO,EAAG,IAAI9xiC,GAAE,IAAIloC,MAAM,+CAA+C/+C,GAAEj3B,OAAO,KAAK9kB,OAAO3C,GAAG,uEAAuE2lI,GAAElkI,KAAK,8BAA8BkkI,GAAE/mB,QAAQ7nF,EAAE4uG,GAAErhI,KAAKtE,EAAE2lI,GAAEnB,MAAM9lF,GAAEj3B,OAAO,iBAAiB5B,SAASA,QAAQkvF,MAAMlvF,QAAQkvF,KAAK,SAAS4wB,GAAElkI,KAAKkkI,GAAE9mG,QAAQ,OAAO6f,GAAEyU,GAAEnzD,GAAG2G,IAAIowB,EAAEsgpC,aAAa,OAAOtgpC,CAAC,CAAC,SAAS+wB,IAAI,IAAIjoD,KAAK63qC,MAAM,OAAO73qC,KAAKiuD,OAAOm8uB,eAAepqyB,KAAKyE,KAAKzE,KAAK83qC,QAAQ93qC,KAAK63qC,OAAM,EAAG5hpC,UAAUrO,QAAQ,KAAK,EAAE,OAAO5nB,KAAKigQ,SAASl3N,KAAK/oC,KAAKiuD,QAAQ,KAAK,EAAE,OAAOjuD,KAAKigQ,SAASl3N,KAAK/oC,KAAKiuD,OAAOh4B,UAAU,IAAI,KAAK,EAAE,OAAOj2B,KAAKigQ,SAASl3N,KAAK/oC,KAAKiuD,OAAOh4B,UAAU,GAAGA,UAAU,IAAI,KAAK,EAAE,OAAOj2B,KAAKigQ,SAASl3N,KAAK/oC,KAAKiuD,OAAOh4B,UAAU,GAAGA,UAAU,GAAGA,UAAU,IAAI,QAAQ,QAAQiB,EAAE,IAAI90B,MAAM6zB,UAAUrO,QAAQznB,EAAE,EAAEA,EAAE+2B,EAAEtP,SAASznB,EAAE+2B,EAAE/2B,GAAG81B,UAAU91B,GAAGH,KAAKigQ,SAASjqO,MAAMh2B,KAAKiuD,OAAO/2B,GAAG,CAAC,SAASqlC,EAAErlC,EAAE/2B,EAAE2G,GAAG,IAAI8qG,GAAE,CAACimkC,OAAM,EAAGC,YAAO,EAAO7pnC,OAAO/2B,EAAEzyB,KAAKtE,EAAE8/P,SAASn5P,GAAGksD,GAAEt/B,EAAEqV,KAAKkf,EAAE2pD,IAAG,OAAO5+C,GAAEitM,SAASn5P,EAAE8qG,GAAEkmkC,OAAO9knC,GAAEA,EAAC,CAAC,SAAS1wD,EAAE40B,EAAE/2B,EAAE2G,GAAG,IAAI8qG,GAAE16E,EAAE65P,QAAQ,IAAIn/K,GAAE,MAAM,GAAG,IAAI5+C,GAAE4+C,GAAEzxG,GAAG,OAAO6yD,GAAE,mBAAmBA,GAAElsD,EAAE,CAACksD,GAAEitM,UAAUjtM,IAAG,CAACA,IAAGlsD,EAAE,SAASowB,IAAG,QAAQ/2B,GAAE,IAAIiC,MAAM80B,GAAEtP,QAAQ9gB,GAAE,EAAEA,GAAE3G,GAAEynB,SAAS9gB,GAAE3G,GAAE2G,IAAGowB,GAAEpwB,IAAGm5P,UAAU/oO,GAAEpwB,IAAG,OAAO3G,EAAC,CAA9F,CAAgG6yD,IAAGjW,EAAEiW,GAAEA,GAAEprC,QAAQ,EAAE,CAAC,SAAS6jM,EAAEv0L,GAAG,IAAI/2B,EAAEH,KAAK+wR,QAAQ,GAAG5wR,EAAE,CAAC,IAAI2G,EAAE3G,EAAE+2B,GAAG,GAAG,mBAAmBpwB,EAAE,OAAO,EAAE,GAAGA,EAAE,OAAOA,EAAE8gB,MAAM,CAAC,OAAO,CAAC,CAAC,SAASm1B,EAAE7lB,EAAE/2B,GAAG,QAAQ2G,EAAE,IAAI1E,MAAMjC,GAAGyxG,GAAE,EAAEA,GAAEzxG,IAAIyxG,GAAE9qG,EAAE8qG,IAAG16E,EAAE06E,IAAG,OAAO9qG,CAAC,CAAC+3C,EAAEn8C,OAAO4jI,eAAehzE,EAAE,sBAAsB,CAACizE,YAAW,EAAGzvG,IAAI,WAAW,OAAOgvG,CAAC,EAAE5hI,IAAI,SAASgzB,GAAG,GAAG,iBAAiBA,GAAGA,EAAE,GAAGA,GAAGA,EAAE,MAAM,IAAIypL,UAAU,mDAAmD76E,EAAE5uG,CAAC,IAAIo8B,EAAEoknC,oBAAoB5xiC,EAAExyE,EAAExqB,UAAUivoC,gBAAgB,SAAS7gpC,GAAG,GAAG,iBAAiBA,GAAGA,EAAE,GAAG2U,MAAM3U,GAAG,MAAM,IAAIypL,UAAU,0CAA0C,OAAO3gN,KAAKy3qC,cAAcvgpC,EAAEl3B,IAAI,EAAEszD,EAAExqB,UAAUkvoC,gBAAgB,WAAW,OAAO72mC,EAAEnhE,KAAK,EAAEszD,EAAExqB,UAAUzJ,KAAK,SAASnI,GAAG,IAAI/2B,EAAE2G,EAAE8qG,GAAE5+C,GAAEt/B,GAAE4/B,GAAEzU,GAAE,UAAU3nB,EAAE,GAAGo8B,GAAEtzD,KAAK+wR,QAAQlyO,GAAEA,IAAG,MAAMyU,GAAEl8B,WAAR,IAAuBynB,GAAE,OAAM,EAAG,GAAGA,GAAE,CAAC,GAAG5oB,UAAUrO,OAAO,IAAIznB,EAAE81B,UAAU,IAAI91B,aAAay9F,MAAM,MAAMz9F,EAAE,IAAI2lI,EAAE,IAAIloC,MAAM,6BAA6Bz9F,EAAE,KAAK,MAAM2lI,EAAEz/H,QAAQlG,EAAE2lI,CAAC,CAAC,KAAKh/H,EAAEwsD,GAAEp8B,IAAI,OAAM,EAAG,IAAIigF,EAAE,mBAAmBrwG,EAAE,OAAO8qG,GAAE37E,UAAUrO,QAAQ,KAAK,GAArgG,SAAS6+N,EAAEvvN,EAAE/2B,EAAE2G,GAAG,GAAG3G,EAAE+2B,EAAE6R,KAAKjiC,QAAQ,QAAQ8qG,GAAE16E,EAAEtP,OAAOorC,GAAEjW,EAAE7lB,EAAE06E,IAAGl+E,GAAE,EAAEA,GAAEk+E,KAAIl+E,GAAEs/B,GAAEt/B,IAAGqV,KAAKjiC,EAAE,CAA66F2/O,CAAE3/O,EAAEqwG,EAAEn3G,MAAM,MAAM,KAAK,GAAn8F,SAASw8C,EAAEtlB,EAAE/2B,EAAE2G,EAAE8qG,IAAG,GAAGzxG,EAAE+2B,EAAE6R,KAAKjiC,EAAE8qG,SAAQ,QAAQ5+C,GAAE97B,EAAEtP,OAAO8L,GAAEqpB,EAAE7lB,EAAE87B,IAAGM,GAAE,EAAEA,GAAEN,KAAIM,GAAE5/B,GAAE4/B,IAAGvqB,KAAKjiC,EAAE8qG,GAAE,CAAq2Fp1D,CAAE11C,EAAEqwG,EAAEn3G,KAAKi2B,UAAU,IAAI,MAAM,KAAK,GAAx4F,SAASgzI,EAAE/xI,EAAE/2B,EAAE2G,EAAE8qG,GAAE5+C,IAAG,GAAG7yD,EAAE+2B,EAAE6R,KAAKjiC,EAAE8qG,GAAE5+C,SAAQ,QAAQt/B,GAAEwD,EAAEtP,OAAO0rC,GAAEvW,EAAE7lB,EAAExD,IAAGmrB,GAAE,EAAEA,GAAEnrB,KAAImrB,GAAEyU,GAAEzU,IAAG9V,KAAKjiC,EAAE8qG,GAAE5+C,GAAE,CAAoyFi2G,CAAEniK,EAAEqwG,EAAEn3G,KAAKi2B,UAAU,GAAGA,UAAU,IAAI,MAAM,KAAK,GAAp1F,SAASlxB,EAAEmyB,EAAE/2B,EAAE2G,EAAE8qG,GAAE5+C,GAAEt/B,IAAG,GAAGvzB,EAAE+2B,EAAE6R,KAAKjiC,EAAE8qG,GAAE5+C,GAAEt/B,SAAQ,QAAQ4/B,GAAEp8B,EAAEtP,OAAOi3B,GAAE9B,EAAE7lB,EAAEo8B,IAAGwyE,EAAE,EAAEA,EAAExyE,KAAIwyE,EAAEjnF,GAAEinF,GAAG/8F,KAAKjiC,EAAE8qG,GAAE5+C,GAAEt/B,GAAE,CAA0uF3uB,CAAE+B,EAAEqwG,EAAEn3G,KAAKi2B,UAAU,GAAGA,UAAU,GAAGA,UAAU,IAAI,MAAM,QAAQ,IAAI+8B,GAAE,IAAI5wD,MAAMwvG,GAAE,GAAGl+E,GAAE,EAAEA,GAAEk+E,GAAEl+E,KAAIs/B,GAAEt/B,GAAE,GAAGuC,UAAUvC,KAA51F,SAAS26C,EAAEn3C,EAAE/2B,EAAE2G,EAAE8qG,IAAG,GAAGzxG,EAAE+2B,EAAElB,MAAMlvB,EAAE8qG,SAAQ,QAAQ5+C,GAAE97B,EAAEtP,OAAO8L,GAAEqpB,EAAE7lB,EAAE87B,IAAGM,GAAE,EAAEA,GAAEN,KAAIM,GAAE5/B,GAAE4/B,IAAGt9B,MAAMlvB,EAAE8qG,GAAE,CAA6vFvjC,CAAEvnE,EAAEqwG,EAAEn3G,KAAKgzD,IAAG,OAAM,CAAE,EAA+DM,EAAExqB,UAAU4lT,GAAzEp7R,EAAExqB,UAAUi1Q,YAAY,SAAS7mR,EAAE/2B,GAAG,OAAO4+C,EAAE/+C,KAAKk3B,EAAE/2B,GAAE,EAAG,EAAyCmzD,EAAExqB,UAAUmvoC,gBAAgB,SAAS/gpC,EAAE/2B,GAAG,OAAO4+C,EAAE/+C,KAAKk3B,EAAE/2B,GAAE,EAAG,EAAEmzD,EAAExqB,UAAUylW,KAAK,SAASr3W,EAAE/2B,GAAG,GAAG,mBAAmBA,EAAE,MAAM,IAAIwgN,UAAU,0CAA0C,OAAO3gN,KAAK0uV,GAAGx3T,EAAEqlC,EAAEv8D,KAAKk3B,EAAE/2B,IAAIH,IAAI,EAAEszD,EAAExqB,UAAUovoC,oBAAoB,SAAShhpC,EAAE/2B,GAAG,GAAG,mBAAmBA,EAAE,MAAM,IAAIwgN,UAAU,0CAA0C,OAAO3gN,KAAKi4qC,gBAAgB/gpC,EAAEqlC,EAAEv8D,KAAKk3B,EAAE/2B,IAAIH,IAAI,EAAEszD,EAAExqB,UAAUshwB,eAAe,SAASlzwB,EAAE/2B,GAAG,IAAI2G,EAAEksD,GAAEt/B,GAAE4/B,GAAEzU,GAAE,GAAG,mBAAmB1+C,EAAE,MAAM,IAAIwgN,UAAU,0CAA0C,KAAK3tJ,GAAEhzD,KAAK+wR,SAAS,OAAO/wR,KAAK,KAAK8G,EAAEksD,GAAE97B,IAAI,OAAOl3B,KAAK,GAAG8G,IAAI3G,GAAG2G,EAAEm5P,WAAW9/P,EAAE,KAAKH,KAAKw3qC,aAAax3qC,KAAK+wR,QAAQn/K,EAAE,cAAc5+C,GAAE97B,GAAG87B,GAAEo3uB,gBAAgBpqyB,KAAKq/B,KAAK,iBAAiBnI,EAAEpwB,EAAEm5P,UAAU9/P,SAAC,GAAW,mBAAmB2G,EAAE,CAAC,IAAI4sB,IAAE,EAAG4/B,GAAExsD,EAAE8gB,OAAO,EAAE0rC,IAAG,EAAEA,KAAI,GAAGxsD,EAAEwsD,MAAKnzD,GAAG2G,EAAEwsD,IAAG2sM,WAAW9/P,EAAE,CAAC0+C,GAAE/3C,EAAEwsD,IAAG2sM,SAASvsO,GAAE4/B,GAAE,KAAK,CAAC,GAAG5/B,GAAE,EAAE,OAAO1zB,KAAK,IAAI0zB,GAAE5sB,EAAEwlK,QAAQ,SAASp1I,GAAE/2B,GAAG,QAAQ2G,EAAE3G,EAAEyxG,EAAE9qG,EAAE,EAAEksD,EAAE97B,GAAEtP,OAAOgqF,EAAE5+C,EAAElsD,GAAG,EAAE8qG,GAAG,EAAE16E,GAAEpwB,GAAGowB,GAAE06E,GAAG16E,GAAE6e,KAAK,CAA1E,CAA4EjvC,EAAE4sB,IAAG,IAAI5sB,EAAE8gB,SAASorC,GAAE97B,GAAGpwB,EAAE,IAAIksD,GAAEo3uB,gBAAgBpqyB,KAAKq/B,KAAK,iBAAiBnI,EAAE2nB,IAAG1+C,EAAE,CAAC,OAAOH,IAAI,EAAEszD,EAAExqB,UAAUqhwB,mBAAmB,SAASjzwB,GAAG,IAAI/2B,EAAE2G,EAAE4sB,GAAE,KAAK5sB,EAAE9G,KAAK+wR,SAAS,OAAO/wR,KAAK,IAAI8G,EAAEsjyB,eAAe,OAAO,IAAIn0wB,UAAUrO,QAAQ5nB,KAAK+wR,QAAQn/K,EAAE,MAAM5xG,KAAKw3qC,aAAa,GAAG1wqC,EAAEowB,KAAK,KAAKl3B,KAAKw3qC,aAAax3qC,KAAK+wR,QAAQn/K,EAAE,aAAa9qG,EAAEowB,IAAIl3B,KAAK,GAAG,IAAIi2B,UAAUrO,OAAO,CAAC,IAAI0rC,GAAEzU,GAAEmU,EAAElsD,GAAG,IAAI4sB,GAAE,EAAEA,GAAEmrB,GAAEj3B,SAAS8L,GAAE,oBAAoB4/B,GAAEzU,GAAEnrB,MAAK1zB,KAAKmqyB,mBAAmB72uB,IAAG,OAAOtzD,KAAKmqyB,mBAAmB,kBAAkBnqyB,KAAK+wR,QAAQn/K,EAAE,MAAM5xG,KAAKw3qC,aAAa,EAAEx3qC,IAAI,CAAC,GAAG,mBAAmBG,EAAE2G,EAAEowB,IAAIl3B,KAAKoqyB,eAAelzwB,EAAE/2B,QAAC,GAAUA,EAAE,IAAIuzB,GAAEvzB,EAAEynB,OAAO,EAAE8L,IAAG,EAAEA,KAAI1zB,KAAKoqyB,eAAelzwB,EAAE/2B,EAAEuzB,KAAI,OAAO1zB,IAAI,EAAEszD,EAAExqB,UAAUi8Q,UAAU,SAAS7tR,GAAG,OAAO50B,EAAEtC,KAAKk3B,GAAE,EAAG,EAAEo8B,EAAExqB,UAAUqvoC,aAAa,SAASjhpC,GAAG,OAAO50B,EAAEtC,KAAKk3B,GAAE,EAAG,EAAEo8B,EAAE8knC,cAAc,SAASlhpC,EAAE/2B,GAAG,MAAM,mBAAmB+2B,EAAEkhpC,cAAclhpC,EAAEkhpC,cAAcj4qC,GAAGsrN,EAAE1iL,KAAK7R,EAAE/2B,EAAE,EAAEmzD,EAAExqB,UAAUsvoC,cAAc3s9B,EAAEn4J,EAAExqB,UAAUuvoC,WAAW,WAAW,OAAOr4qC,KAAKw3qC,aAAa,EAAEjve,QAAQ+ve,QAAQt4qC,KAAK+wR,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS75P,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,eAAe42kC,OAAO96iC,EAAE97B,EAAE,UAAU/2B,EAAE4krB,QAAQ,SAAS7tpB,EAAE/2B,EAAE2G,EAAE4sB,GAAG,GAAGk+E,EAAEo3iC,SAAS9xnC,KAAKA,EAAE06E,EAAE/kG,KAAKqqB,EAAE,WAAW/2B,IAAIyxG,EAAEo3iC,SAAS7opC,KAAKA,EAAEyxG,EAAE/kG,KAAK1M,EAAE,WAAW,IAAIA,EAAEynB,QAAQ,MAAM,IAAIihB,WAAW,4CAA4C,QAAQyqB,EAAExsD,EAAE,EAAE+3C,EAAE+yD,EAAEk0hC,MAAMxykC,GAAGwyE,EAAEl0B,EAAEk0hC,MAAMpymC,GAAG,GAAGyjF,EAAEvF,EAAEk0hC,MAAM,GAAGxykC,EAAE,GAAG5/B,EAAE,GAAG,CAAC,IAAIytC,EAAE,IAAInO,EAAEmO,EAAEogB,OAAO41B,GAAGh2C,EAAEogB,OAAOrqD,GAAG/2B,GAAGghE,EAAEogB,OAAOphF,GAAGg3G,EAAEh2C,EAAEykkC,SAAS,IAAIn/4B,EAAE,EAAE,GAAGnzL,EAAE,EAAE,CAAC,IAAI9W,EAAEqC,EAAEj3B,OAAO0rC,EAAEmzL,EAAE96M,KAAK4oB,IAAIjB,EAAE6jD,EAAEvvF,QAAQuvF,EAAE8uB,KAAKpnF,EAAErC,EAAE,EAAEiqM,GAAGnzL,GAAGmzL,CAAC,CAAC,GAAGA,EAAEtvI,EAAEvvF,QAAQ8L,EAAE,EAAE,CAAC,IAAIu1I,EAAEnjC,EAAEl+G,OAAO8L,EAAE3uB,EAAE4mC,KAAK4oB,IAAI7gC,EAAEyjF,EAAEvvF,OAAO6+N,GAAGtvI,EAAE8uB,KAAKH,EAAEmjC,EAAEw9E,EAAEA,EAAE1hP,GAAG2uB,GAAG3uB,CAAC,CAAC,CAAC,OAAOoyG,EAAE6qC,KAAK,GAAG,CAAC5gJ,IAAIy9C,EAAEo8mC,GAAGn1hC,EAAE,CAAC,EAAE,CAAC,SAAS,IAAI,cAAc,MAAM,IAAI,CAAC,SAAS5uG,EAAE/2B,EAAE2G,GAAG,aAAapE,OAAO4jI,eAAex/H,EAAE,aAAa,CAACvF,OAAM,IAAKuF,EAAEg8oC,gBAAgBh8oC,EAAEy9oC,cAAcz9oC,EAAEo+oC,UAAUp+oC,EAAE6koC,YAAY7koC,EAAEm+oC,YAAYn+oC,EAAEy1J,MAAMz1J,EAAE+5oC,iBAAiB/5oC,EAAEs5oC,mBAAmBt5oC,EAAEy7oC,YAAYz7oC,EAAE07oC,cAAc17oC,EAAE27oC,cAAc37oC,EAAE47oC,cAAc57oC,EAAEwf,MAAMxf,EAAEisB,YAAO,EAAO,IAAI6+E,EAAE16E,EAAE,oBAAoBx0B,OAAO4jI,eAAex/H,EAAE,SAAS,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAO86E,EAAE7+E,MAAM,IAAIrwB,OAAO4jI,eAAex/H,EAAE,QAAQ,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAO86E,EAAEtrF,KAAK,IAAI5jB,OAAO4jI,eAAex/H,EAAE,gBAAgB,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAO86E,EAAE8wiC,aAAa,IAAIhgpC,OAAO4jI,eAAex/H,EAAE,gBAAgB,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAO86E,EAAE6wiC,aAAa,IAAI//oC,OAAO4jI,eAAex/H,EAAE,gBAAgB,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAO86E,EAAE4wiC,aAAa,IAAI9/oC,OAAO4jI,eAAex/H,EAAE,cAAc,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAO86E,EAAE2wiC,WAAW,IAAI7/oC,OAAO4jI,eAAex/H,EAAE,qBAAqB,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAO86E,EAAEwuiC,kBAAkB,IAAI19oC,OAAO4jI,eAAex/H,EAAE,mBAAmB,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAO86E,EAAEiviC,gBAAgB,IAAI,IAAI7tlC,EAAE97B,EAAE,mBAAmBx0B,OAAO4jI,eAAex/H,EAAE,QAAQ,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAOk8B,EAAEupG,KAAK,IAAI75J,OAAO4jI,eAAex/H,EAAE,cAAc,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAOk8B,EAAEiylC,WAAW,IAAIvipC,OAAO4jI,eAAex/H,EAAE,cAAc,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAOk8B,EAAE24kC,WAAW,IAAIjpoC,OAAO4jI,eAAex/H,EAAE,YAAY,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAOk8B,EAAEkylC,SAAS,IAAIxipC,OAAO4jI,eAAex/H,EAAE,gBAAgB,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAOk8B,EAAEuxlC,aAAa,IAAI7hpC,OAAO4jI,eAAex/H,EAAE,kBAAkB,CAACy/H,YAAW,EAAGzvG,IAAI,WAAW,OAAOk8B,EAAE8vlC,eAAe,GAAG,EAAE,CAAC,mBAAmB,IAAI,kBAAkB,MAAM,IAAI,CAAC,SAAS5rnC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,eAAe42kC,OAAO96iC,EAAE97B,EAAE,mBAAmBmpnC,UAAU,SAAS3snC,EAAEwD,GAAG87B,EAAEjqB,KAAK/oC,MAAMA,KAAKi+P,OAAOrsJ,EAAEgmjC,YAAY1goC,GAAGl3B,KAAKu4qC,WAAWrhpC,EAAEl3B,KAAKw4qC,aAAa,EAAEx4qC,KAAKy4qC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAGz4qC,KAAK04qC,YAAW,CAAE,CAACxhpC,EAAE,WAAFA,CAAcxD,EAAEs/B,GAAGt/B,EAAEoV,UAAUunnB,WAAW,SAASn5nB,EAAE/2B,EAAE2G,GAAG,IAAI8qG,EAAE,KAAK,IAAI5xG,KAAKuhF,OAAOrqD,EAAE/2B,EAAE,OAAO+2B,GAAG06E,EAAE16E,CAAC,CAACpwB,EAAE8qG,EAAE,EAAEl+E,EAAEoV,UAAUg/lC,OAAO,SAAS5wmC,GAAG,IAAI/2B,EAAE,KAAK,IAAIH,KAAK6C,KAAK7C,KAAK4loC,SAAS,OAAO1umC,GAAG/2B,EAAE+2B,CAAC,CAACA,EAAE/2B,EAAE,EAAEuzB,EAAEoV,UAAUy4C,OAAO,SAASrqD,EAAE/2B,GAAG,GAAG,SAAS+2B,EAAE/2B,GAAG,IAAIyxG,EAAEo3iC,SAAS9xnC,IAAI,iBAAiBA,EAAE,MAAM,IAAIypL,UAAUxgN,oCAAkC,CAA1G,CAA4G+2B,GAAUl3B,KAAK04qC,WAAW,MAAM,IAAI96kC,MAAM,yBAAyBgU,EAAEo3iC,SAAS9xnC,KAAKA,EAAE06E,EAAE/kG,KAAKqqB,EAAE/2B,IAAI,QAAQ2G,EAAE9G,KAAKi+P,OAAOjrM,EAAE,EAAEhzD,KAAKw4qC,aAAathpC,EAAEtP,OAAOorC,GAAGhzD,KAAKu4qC,YAAY,CAAC,QAAQ7kpC,EAAE1zB,KAAKw4qC,aAAa9kpC,EAAE1zB,KAAKu4qC,YAAYzxqC,EAAE4sB,KAAKwD,EAAE87B,KAAKhzD,KAAK+5pC,UAAU/5pC,KAAKw4qC,aAAa,CAAC,CAAC,KAAKxlnC,EAAE97B,EAAEtP,QAAQ9gB,EAAE9G,KAAKw4qC,gBAAgBthpC,EAAE87B,KAAK,QAAQM,EAAE,EAAEzU,EAAE,EAAE3nB,EAAEtP,OAAOi3B,EAAE,IAAIyU,EAAEtzD,KAAKy4qC,QAAQnlnC,IAAIzU,GAAGA,EAAE7+C,KAAKy4qC,QAAQnlnC,GAAG,WAAW,GAAG,IAAItzD,KAAKy4qC,QAAQnlnC,IAAI,WAAWzU,GAAG,OAAO7+C,IAAI,EAAE0zB,EAAEoV,UAAUixnC,QAAQ,WAAW,MAAM,IAAIn8jC,MAAM,6BAA6B,EAAElqE,EAAEoV,UAAU88lC,OAAO,SAAS1umC,GAAG,GAAGl3B,KAAK04qC,WAAW,MAAM,IAAI96kC,MAAM,yBAAyB59F,KAAK04qC,YAAW,EAAG,IAAIv4qC,EAAEH,KAAK24qC,eAAU,IAASzhpC,IAAI/2B,EAAEA,EAAEgoB,SAAS+O,IAAIl3B,KAAKi+P,OAAOj8G,KAAK,GAAGhiJ,KAAKw4qC,aAAa,EAAE,QAAQ1xqC,EAAE,EAAEA,EAAE,IAAIA,EAAE9G,KAAKy4qC,QAAQ3xqC,GAAG,EAAE,OAAO3G,CAAC,EAAEuzB,EAAEoV,UAAU6voC,QAAQ,WAAW,MAAM,IAAI/6kC,MAAM,6BAA6B,EAAEz9F,EAAE4krB,QAAQrxpB,CAAC,EAAE,CAAC4zmC,SAAS,IAAI,kBAAkB,IAAI,cAAc,MAAM,IAAI,CAAC,SAASpwmC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE9qG,EAAE8qG,EAAEuic,MAAMj9gB,EAAE,gBAAgB06E,EAAEszkB,OAAOhupB,EAAE,iBAAiB06E,EAAE28/B,IAAIr3kC,EAAE,cAAc06E,EAAEgnkC,OAAO1hpC,EAAE,iBAAiB06E,EAAEinkC,KAAK3hpC,EAAE,eAAe06E,EAAEknkC,KAAKlnkC,EAAE28/B,IAAIuqE,KAAKlnkC,EAAE4rjC,OAAO5rjC,EAAE28/B,IAAIivD,OAAO5rjC,EAAE6rjC,OAAO7rjC,EAAE28/B,IAAIkvD,OAAO7rjC,EAAE8rjC,OAAO9rjC,EAAE28/B,IAAImvD,OAAO9rjC,EAAE+rjC,OAAO/rjC,EAAE28/B,IAAIovD,OAAO/rjC,EAAE01jC,UAAU11jC,EAAEgnkC,OAAOtR,SAAS,EAAE,CAAC,gBAAgB,IAAI,cAAc,IAAI,gBAAgB,IAAI,aAAa,IAAI,eAAe,MAAM,IAAI,CAAC,SAASpwoC,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,WAAW87B,EAAE97B,EAAE,uBAAuB,SAASxD,IAAI1zB,KAAKu6B,QAAQ,KAAKv6B,KAAK+4qC,aAAa,EAAE/4qC,KAAKovyB,UAAUpvyB,KAAKD,YAAYqvyB,UAAUpvyB,KAAKg5qC,QAAQh5qC,KAAKD,YAAYi5qC,QAAQh5qC,KAAKi0qC,aAAaj0qC,KAAKD,YAAYk0qC,aAAaj0qC,KAAKi5qC,UAAUj5qC,KAAKD,YAAYk5qC,UAAU,EAAEj5qC,KAAKk5qC,OAAO,MAAMl5qC,KAAKm5qC,QAAQn5qC,KAAKovyB,UAAU,EAAEpvyB,KAAKo5qC,SAASp5qC,KAAKovyB,UAAU,EAAE,CAACtoyB,EAAEuyqC,UAAU3lpC,EAAEA,EAAEoV,UAAUy4C,OAAO,SAASrqD,EAAE/2B,GAAG,GAAG+2B,EAAE06E,EAAE8pd,QAAQxkiB,EAAE/2B,GAAgBH,KAAKu6B,QAAlBv6B,KAAKu6B,QAAqBv6B,KAAKu6B,QAAQ2vB,OAAOhzB,GAAgBA,EAAEl3B,KAAK+4qC,cAAc7hpC,EAAEtP,OAAO5nB,KAAKu6B,QAAQ3S,QAAQ5nB,KAAKm5qC,QAAQ,CAAC,IAAIryqC,GAAGowB,EAAEl3B,KAAKu6B,SAAS3S,OAAO5nB,KAAKm5qC,QAAQn5qC,KAAKu6B,QAAQrD,EAAEpE,MAAMoE,EAAEtP,OAAO9gB,EAAEowB,EAAEtP,QAAQ,IAAI5nB,KAAKu6B,QAAQ3S,SAAS5nB,KAAKu6B,QAAQ,MAAMrD,EAAE06E,EAAE0nkC,OAAOpipC,EAAE,EAAEA,EAAEtP,OAAO9gB,EAAE9G,KAAKk5qC,QAAQ,QAAQlmnC,EAAE,EAAEA,EAAE97B,EAAEtP,OAAOorC,GAAGhzD,KAAKo5qC,SAASp5qC,KAAK+5pC,QAAQ7ioC,EAAE87B,EAAEA,EAAEhzD,KAAKo5qC,SAAS,CAAC,OAAOp5qC,IAAI,EAAE0zB,EAAEoV,UAAU88lC,OAAO,SAAS1umC,GAAG,OAAOl3B,KAAKuhF,OAAOvhF,KAAK4sqC,QAAQ55mC,EAAE,OAAOhzD,KAAKu6B,SAASv6B,KAAK24qC,QAAQzhpC,EAAE,EAAExD,EAAEoV,UAAU8joC,KAAK,WAAW,IAAI11oC,EAAEl3B,KAAK+4qC,aAAa54qC,EAAEH,KAAKm5qC,QAAQryqC,EAAE3G,GAAG+2B,EAAEl3B,KAAKi5qC,WAAW94qC,EAAEyxG,EAAE,IAAIxvG,MAAM0E,EAAE9G,KAAKi5qC,WAAWrnkC,EAAE,GAAG,IAAI,QAAQ5+C,EAAE,EAAEA,EAAElsD,EAAEksD,IAAI4+C,EAAE5+C,GAAG,EAAE,GAAG97B,IAAI,EAAE,QAAQl3B,KAAKk5qC,OAAO,CAAC,QAAQxlpC,EAAE,EAAEA,EAAE1zB,KAAKi5qC,UAAUvlpC,IAAIk+E,EAAE5+C,KAAK,EAAE4+C,EAAE5+C,KAAK,EAAE4+C,EAAE5+C,KAAK,EAAE4+C,EAAE5+C,KAAK,EAAE4+C,EAAE5+C,KAAK,EAAE4+C,EAAE5+C,KAAK97B,IAAI,GAAG,IAAI06E,EAAE5+C,KAAK97B,IAAI,GAAG,IAAI06E,EAAE5+C,KAAK97B,IAAI,EAAE,IAAI06E,EAAE5+C,KAAK,IAAI97B,CAAC,MAAM,IAAI06E,EAAE5+C,KAAK,IAAI97B,EAAE06E,EAAE5+C,KAAK97B,IAAI,EAAE,IAAI06E,EAAE5+C,KAAK97B,IAAI,GAAG,IAAI06E,EAAE5+C,KAAK97B,IAAI,GAAG,IAAI06E,EAAE5+C,KAAK,EAAE4+C,EAAE5+C,KAAK,EAAE4+C,EAAE5+C,KAAK,EAAE4+C,EAAE5+C,KAAK,EAAEt/B,EAAE,EAAEA,EAAE1zB,KAAKi5qC,UAAUvlpC,IAAIk+E,EAAE5+C,KAAK,EAAE,OAAO4+C,CAAC,CAAC,EAAE,CAAC,UAAU,IAAI,sBAAsB,MAAM,IAAI,CAAC,SAAS16E,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,WAAW87B,EAAE97B,EAAE,uBAAuB,SAASxD,EAAEwD,EAAE/2B,EAAE2G,GAAG,KAAK9G,gBAAgB0zB,GAAG,OAAO,IAAIA,EAAEwD,EAAE/2B,EAAE2G,GAAG9G,KAAKu+M,KAAKrnL,EAAEl3B,KAAKovyB,UAAUl4wB,EAAEk4wB,UAAU,EAAEpvyB,KAAKg5qC,QAAQ9hpC,EAAE8hpC,QAAQ,EAAEh5qC,KAAKgiqB,MAAM,KAAKhiqB,KAAKy2uB,MAAM,KAAKz2uB,KAAKqiqB,MAAMzwjB,EAAE8pd,QAAQv7jB,EAAE2G,GAAG,CAAC3G,EAAE4krB,QAAQrxpB,EAAEA,EAAEoV,UAAUu5nB,MAAM,SAASnroB,GAAGA,EAAEtP,OAAO5nB,KAAKovyB,YAAYl4wB,GAAG,IAAIl3B,KAAKu+M,MAAMh9H,OAAOrqD,GAAG0umC,UAAU5ykC,EAAE97B,EAAEtP,QAAQ5nB,KAAKovyB,WAAW,QAAQjvyB,EAAE+2B,EAAEtP,OAAOznB,EAAEH,KAAKovyB,UAAUjvyB,IAAI+2B,EAAEr0B,KAAK,GAAG,IAAI1C,EAAE,EAAEA,EAAE+2B,EAAEtP,OAAOznB,IAAI+2B,EAAE/2B,IAAI,GAAG,IAAIH,KAAKgiqB,OAAO,IAAIhiqB,KAAKu+M,MAAMh9H,OAAOrqD,GAAG/2B,EAAE,EAAEA,EAAE+2B,EAAEtP,OAAOznB,IAAI+2B,EAAE/2B,IAAI,IAAIH,KAAKy2uB,OAAO,IAAIz2uB,KAAKu+M,MAAMh9H,OAAOrqD,EAAE,EAAExD,EAAEoV,UAAUy4C,OAAO,SAASrqD,EAAE/2B,GAAG,OAAOH,KAAKgiqB,MAAMzglB,OAAOrqD,EAAE/2B,GAAGH,IAAI,EAAE0zB,EAAEoV,UAAU88lC,OAAO,SAAS1umC,GAAG,OAAOl3B,KAAKy2uB,MAAMl1pB,OAAOvhF,KAAKgiqB,MAAM4je,UAAU5loC,KAAKy2uB,MAAMmvZ,OAAO1umC,EAAE,CAAC,EAAE,CAAC,UAAU,IAAI,sBAAsB,MAAM,IAAI,CAAC,SAASA,EAAE/2B,EAAE2G,GAAG,aAAa,IAAI8qG,EAAE16E,EAAE,WAAW87B,EAAE97B,EAAE,YAAYxD,EAAEk+E,EAAE2nkC,OAAOjmnC,EAAEs+C,EAAE4nkC,MAAM36nC,EAAE+yD,EAAE6nkC,QAAQ3ziC,EAAEl0B,EAAE8nkC,QAAQvikC,EAAEnkD,EAAEqmnC,UAAU,SAASl4mC,IAAI,KAAKnhE,gBAAgBmhE,GAAG,OAAO,IAAIA,EAAEg2C,EAAEpuE,KAAK/oC,MAAMA,KAAKymP,EAAE,CAAC,WAAW,WAAW,WAAW,UAAU,YAAYzmP,KAAKk5qC,OAAO,QAAQ,CAAC,SAASzy7B,EAAEvvN,EAAE/2B,EAAE2G,EAAE8qG,GAAG,OAAO16E,GAAG,GAAG/2B,EAAE2G,EAAE8qG,EAAE16E,GAAG,GAAG/2B,EAAE2G,GAAG3G,EAAEyxG,EAAE16E,GAAG,IAAI/2B,GAAG2G,GAAG8qG,EAAE16E,GAAG,GAAG/2B,EAAEyxG,EAAE9qG,GAAG8qG,EAAEzxG,GAAG2G,GAAG8qG,EAAE,CAAC,SAASp1D,EAAEtlB,GAAG,OAAOA,GAAG,GAAG,EAAEA,GAAG,GAAG,WAAWA,GAAG,GAAG,WAAWA,GAAG,GAAG,WAAW,UAAU,CAAC,SAAS+xI,EAAE/xI,GAAG,OAAOA,GAAG,GAAG,WAAWA,GAAG,GAAG,WAAWA,GAAG,GAAG,WAAWA,GAAG,GAAG,WAAW,CAAC,CAAC06E,EAAE01hC,SAASnmkC,EAAEg2C,GAAGrwG,EAAEwgqC,UAAUnmmC,EAAEA,EAAEiuuB,UAAU,IAAIjuuB,EAAE63mC,QAAQ,IAAI73mC,EAAE8ymC,aAAa,IAAI9ymC,EAAE83mC,UAAU,GAAG93mC,EAAEr4B,UAAUixnC,QAAQ,SAAS7ioC,EAAE/2B,GAAG,QAAQ2G,EAAE9G,KAAKymP,EAAE,GAAG70I,EAAE5xG,KAAKymP,EAAE,GAAGzzL,EAAEhzD,KAAKymP,EAAE,GAAGtvI,EAAEn3G,KAAKymP,EAAE,GAAGtlL,EAAEnhE,KAAKymP,EAAE,GAAGlqL,GAAEz1D,EAAExE,GAAEsvG,EAAE65G,GAAEz4J,EAAEjW,GAAEo6D,EAAExvF,GAAEw5C,EAAE0kE,EAAE,EAAEA,EAAE,GAAGA,IAAI,CAAC,IAAI8qM,EAAEr9Q,EAAE5/B,EAAEoyG,EAAEh/H,EAAE2/O,EAAE5gH,EAAEj0B,EAAE5+C,EAAEmkD,GAAGjgF,EAAEnyB,EAAE8gI,GAAG1lI,GAAGq8C,EAAEqpF,IAAI9mF,EAAE8mF,IAAI1kE,GAAGr6D,EAAEq6D,EAAEA,EAAEg2C,EAAEA,EAAEzjF,EAAEs/B,EAAE,IAAIA,EAAE4+C,EAAEA,EAAE++N,EAAEA,EAAEr9Q,EAAE5/B,EAAEoyG,EAAEvpE,GAAEkqL,EAAE,GAAG5gH,EAAEvjI,GAAEmpN,GAAE1uK,IAAG7lB,EAAEm3C,EAAEw3D,GAAG1lI,GAAG8oK,EAAEpjC,IAAI59E,EAAE49E,IAAIl+G,IAAG40C,GAAE50C,GAAEA,GAAEo1B,GAAEA,GAAErpB,EAAE+3L,GAAE,IAAIA,GAAEnpN,GAAEA,GAAEquU,CAAC,CAACA,EAAE9xR,EAAE7+C,KAAKymP,EAAE,GAAGzzL,EAAEjW,IAAG/8C,KAAKymP,EAAE,GAAG5nM,EAAE7+C,KAAKymP,EAAE,GAAGtvI,EAAExvF,IAAG3nB,KAAKymP,EAAE,GAAG5nM,EAAE7+C,KAAKymP,EAAE,GAAGtlL,EAAE5E,IAAGv8D,KAAKymP,EAAE,GAAG5nM,EAAE7+C,KAAKymP,EAAE,GAAG3/O,EAAExE,IAAGtC,KAAKymP,EAAE,GAAG5nM,EAAE7+C,KAAKymP,EAAE,GAAG70I,EAAE65G,IAAGzrN,KAAKymP,EAAE,GAAGkqF,CAAC,EAAExvQ,EAAEr4B,UAAU6voC,QAAQ,SAASzhpC,GAAG,MAAM,QAAQA,EAAE06E,EAAE+nkC,QAAQ35qC,KAAKymP,EAAE,UAAU70I,EAAEgokC,QAAQ55qC,KAAKymP,EAAE,SAAS,EAAE,IAAI1hP,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAIspE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,IAAItvB,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAGkJ,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE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E,IAAIlxD,MAAM,IAAIy8C,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAIinF,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI3uB,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,E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UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,QAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,YAAa,CAAC,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,YAAa,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,QAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,YAAa,CAAC,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,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AAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,M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AQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAU,SAErtLC,GAAmB,SAA0BV,IAC/C,OAAOtqlB,GAAQsqlB,GAAWS,GAC5B,EAOIE,GA1J2B,SAAkCX,IAC/D,OAAOtqlB,GAAQsqlB,GAAWE,GAC5B,EA8JIU,GA5L4B,SAAmCZ,IACjE,OAAOtqlB,GAAQsqlB,GAAWC,GAC5B,EA4LIY,GAAe,SAAsBb,IACvC,OAAOA,GAAUc,YAAY,EAC/B,EACIht9B,GAAQ,SAAenvW,IACzB,OAAOA,GAAE,EACX,EACI2ugB,GAAO,SAAc3ugB,IACvB,OAAOA,GAAEA,GAAEC,OAAS,EACtB,EASA,SAASm8zC,GAAat/tC,IAGpB,QAFIu/tC,GAAa,GACbjjxC,GAAO0jD,GAAM78F,OACRorC,GAAI,EAAGA,GAAI+N,GAAM/N,IAAK,EAAG,CAChC,IAAI4lB,GAAS6rC,GAAM48F,WAAWruJ,IAC9B,GAAI4lB,IAAU,OAAUA,IAAU,OAAU7X,GAAO/N,GAAI,EAAG,CACxD,IAAI2oB,GAAO8oC,GAAM48F,WAAWruJ,GAAI,GAChC,GAAI2oB,IAAQ,OAAUA,IAAQ,MAAQ,CACpCqowC,GAAWnh1C,KAAyB,MAAnB+1E,GAAS,OAAkB+C,GAAO,MAAS,OAC5D3oB,IAAK,EACL,QACF,CACF,CACAgxxC,GAAWnh1C,KAAK+1E,GAClB,CACA,OAAOorwC,EACT,CA6DA,IAAIC,GAA2B,WA8B7B,SAASA,GAAYrizC,IACnB,IAAI//B,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEnF,GADAs3qC,EAAgBvtsC,KAAMik1C,KACjBpi1C,GAAQqi1C,gBAAkBri1C,GAAQsi1C,aACrC,MAAM,IAAIvmvC,MAAM,wDAElB59F,KAAK4hC,SAAWA,GAChB5hC,KAAKok1C,iBAAiBvi1C,GACxB,CACAissC,OAtCAA,EAAam2I,GAAa,KAAM,CAAC,CAC/B7i1C,IAAK,iBACLG,MAAO,WACL,IAAIsqF,GAAO51D,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5EouzC,GAAU,GAAGn6xC,OAAO2hC,GAAKy4vC,aAAax4yC,UAAW,MACrD,QAAS1qC,MAAOyqF,GAETA,GAAKq2D,eAAe9gJ,MAGzBij1C,IAAW,GAAGn6xC,OAAO9oD,GAAK,MAAM8oD,OAAO2hC,GAAKzqF,IAAK40E,UAAW,OAE9D,OAAOuuwC,GAAkBjF,EAAUn5zB,QAAQs2Y,IAAI4nb,IACjD,GACC,CACDjj1C,IAAK,0BACLG,MAAO,SAAiC2tiB,IACtC,OAAOowyB,EAAUn5zB,QAAQi1rB,IAAIQ,UAAU9xiC,OAAOolY,GAChD,GACC,CACD9tiB,IAAK,SACLG,MAAO,SAAgBqgC,IACrB,IAAI//B,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAKp0B,GAAQqi1C,eAAkBri1C,GAAQsi1C,aAGhC,IAAIF,GAAYrizC,GAAU//B,IAFxB,IAGX,KAWFissC,EAAam2I,GAAa,CAAC,CACzB7i1C,IAAK,mBACLG,MAAO,SAA0BM,IAC/B,OAAQA,GAAQ2i1C,YACd,IAAK,MACL,IAAK,MACHxk1C,KAAKo4P,QAAU,EACf,MACF,IAAK,MACL,IAAK,MACHp4P,KAAKo4P,QAAU,EACf,MACF,IAAK,UACHp4P,KAAKo4P,QAAU,EACf,MACF,QACEp4P,KAAKo4P,QAAU,EAGnB,IAAIqslC,GAAU,CACZtsxB,OAAQ,YAEV,OAAQn4jB,KAAKo4P,SACX,KAAK,EACL,KAAK,EACL,KAAK,EACHp4P,KAAK0k1C,uBAAuB1k1C,KAAKo4P,QAASqslC,GAAS5i1C,IACnD,MACF,KAAK,EACH7B,KAAK2k1C,mBAAmBF,GAAS5i1C,IAGrC7B,KAAKonrC,WAAapnrC,KAAK4hC,SAAS+0F,IAAI8ttC,GACtC,GACC,CACDrj1C,IAAK,yBACLG,MAAO,SAAgCe,GAAGmi1C,GAAS5i1C,IACjD,IAAIiF,GAAG890C,GACP,OAAQti1C,IACN,KAAK,EACHwE,GAAI,EACJ9G,KAAKu1zC,QAAU,GACfqvB,GAmHV,SAASC,KACP,IAAIC,GAAmB7uzC,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACxF2uzC,IAAc,GAClB,OAAIE,GAAiBC,WACnBH,IAAe,GAEbE,GAAiBE,YACnBJ,IAAe,GAEbE,GAAiBG,UACnBL,IAAe,IAEbE,GAAiBI,aACnBN,IAAe,IAEVA,EACT,CAnIwBC,CAAiBhj1C,GAAQ+i1C,aACvC,MACF,KAAK,EACH990C,GAAI,EACJ9G,KAAKu1zC,QAAU,IACfqvB,GAAcO,GAAiBtj1C,GAAQ+i1C,aACvC,MACF,KAAK,EACH990C,GAAI,EACJ9G,KAAKu1zC,QAAU,IACfqvB,GAAcO,GAAiBtj1C,GAAQ+i1C,aAG3C,IAIIQ,GAJAC,GAAqBC,GAAsBzj1C,GAAQsi1C,cACnDoB,GAAsB1j1C,GAAQqi1C,cAAgBoB,GAAsBzj1C,GAAQqi1C,eAAiBmB,GAC7FG,GAiKV,SAASC,GAAuB3+0C,GAAGyuzC,GAAS8vB,GAAoBE,IAG9D,QAFI3/M,GAAS2/M,GACTl4nC,GAAQvmN,IAAK,EAAI,GAAK,EACjBksD,GAAI,EAAGA,GAAIq6J,GAAOr6J,KACzB4ykC,GAAS05M,EAAUn5zB,QAAQs2Y,IAAImpO,IAEjC,IAAIxkoC,GAAMwkoC,GAAOt8nC,QACjBlI,GAAIy6sC,SAAW05G,GAAU,EACzB,IAAIv5J,GAASqpL,GACbh4nC,GAAQvmN,IAAK,EAAI,GAAK,EACtB,QAASg2P,GAAK,EAAGA,GAAKzvC,GAAOyvC,KAAM,CAEjC,QADI4olC,GAAW/5yC,KAAK0wH,KAAKj7J,GAAIy6sC,SAAW,GAC/Bj2kC,GAAI,EAAGA,GAAI8/sC,GAAU9/sC,KAC5BxkI,GAAI44kB,MAAMp0c,IAAKgggC,GAAO5rjB,MAAMp0c,KAAMk3H,GAAKA,IAAM,EAAIA,IAAM,GAAKA,IAAM,IAEpEk/5B,GAASsjL,EAAUn5zB,QAAQsnyB,IAAIzzJ,QAAQgC,GAAQ56pC,IAAKm8tC,UACtD,CACA,OAAOvhE,EACT,CAnL+BypL,CAAuB3+0C,GAAG9G,KAAKu1zC,QAAS8vB,GAAoBE,IACrFvl1C,KAAK2l1C,cAmLX,SAASC,GAAuB9+0C,GAAGyuzC,GAASswB,GAAYR,GAAoBG,GAAoBZ,IAG9F,QAFIxj1C,GAAMik1C,GAAmB/70C,QAAQ4gD,OAAOs7xC,IAAoBt7xC,OAAOo1xC,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAO,CAACq3sC,GAAalB,KAAe,IAAI16xC,OAAOo1xC,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAOo3sC,KACzLx4nC,GAAQvmN,IAAK,EAAI,GAAK,EACjBksD,GAAI,EAAGA,GAAIq6J,GAAOr6J,MACzB5xD,GAAMk+0C,EAAUn5zB,QAAQs2Y,IAAIr75B,KACxBy6sC,SAAW05G,GAAU,EAE3B,OAAOn0zC,EACT,CA3L2Bwk1C,CAAuB9+0C,GAAG9G,KAAKu1zC,QAASv1zC,KAAK4hC,SAASsR,IAAKmyyC,GAAoBG,GAAoBZ,IAGtHQ,GADQ,IAANt+0C,GA+IV,SAASi/0C,GAAkBJ,IACzB,OAAOrG,EAAUn5zB,QAAQsnyB,IAAIzzJ,QAAQsrL,KAAyBK,IAAepoH,UAC/E,CAhJ4BwoH,CAAkB/l1C,KAAK2l1C,eAiJnD,SAASK,GAAoBH,GAAYF,IAGvC,QAFIvk1C,GAAMuk1C,GAAcr80C,QACpB0ypC,GAASsjL,EAAUn5zB,QAAQs2Y,IAAI6ob,KAAwBp7xC,OAAOo1xC,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAOo3sC,MAChG7yxC,GAAI,EAAGA,GAAI,GAAIA,KAAK,CAE3B,QADI0yxC,GAAW/5yC,KAAK0wH,KAAKj7J,GAAIy6sC,SAAW,GAC/Bj2kC,GAAI,EAAGA,GAAI8/sC,GAAU9/sC,KAC5BxkI,GAAI44kB,MAAMp0c,IAAK+/sC,GAAc3rwB,MAAMp0c,KAAM5yE,GAAIA,IAAK,EAAIA,IAAK,GAAKA,IAAK,IAEvEgpmC,GAASsjL,EAAUn5zB,QAAQsnyB,IAAIzzJ,QAAQgC,GAAQ56pC,IAAKm8tC,UACtD,CACA,OAAOvhE,GAAO9xmC,OAAOo1xC,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAO,KAAM,IACpE,CA1J4Bu3sC,CAAoBhm1C,KAAK4hC,SAASsR,IAAKlzC,KAAK2l1C,eAElElB,GAAQlk+B,EAAIj+W,GACRA,IAAK,IACPmi1C,GAAQlD,OAASvh1C,KAAKu1zC,SAEd,IAANjzzC,KACFmi1C,GAAQwB,GAAK,CACXC,MAAO,CACLC,UAAW,UACXC,IAAK,QACL7E,OAAQvh1C,KAAKu1zC,QAAU,IAG3BkvB,GAAQ4B,KAAO,QACf5B,GAAQ6B,KAAO,SAEjB7B,GAAQt1gC,EAAIroU,GACZ290C,GAAQzzgC,EAAIuzgC,GAAkBiB,IAC9Bf,GAAQpk+B,EAAIkk+B,GAAkBa,IAC9BX,GAAQlzgC,EAAIqzgC,EACd,GACC,CACDxj1C,IAAK,qBACLG,MAAO,SAA4Bkj1C,GAAS5i1C,IAC1C7B,KAAKu1zC,QAAU,IACf,IAAIqvB,GAAcO,GAAiBtj1C,GAAQ+i1C,aACvC2B,GAAwBC,GAAkB3k1C,GAAQsi1C,cAClDsC,GAAyB5k1C,GAAQqi1C,cAAgBsC,GAAkB3k1C,GAAQqi1C,eAAiBqC,GAChGvm1C,KAAK2l1C,cAsLX,SAASe,GAAmBC,IAC1B,OAAOA,GAAwB,GACjC,CAxL2BD,CAAmBzC,GAAY0C,yBACpD,IAAIvB,GAyJV,SAASwB,GAAkBL,GAAuBI,IAChD,IAAIE,GAAiBF,GAAwB,GACzCG,GAAUH,GAAwB,GACtC,OAAOrH,EAAUn5zB,QAAQ62rB,OAAOupI,GAAsBj90C,QAAQ4gD,OAAO28xC,KAAiB38xC,OAAO28xC,IAAgB38xC,OAAO48xC,GACtH,CA7J8BF,CAAkBL,GAAuBtC,GAAY0C,yBAEzEI,GA4JV,SAASC,GAAuBT,GAAuBU,GAAatB,IAClE,IAAIvk1C,GAAMk+0C,EAAUn5zB,QAAQ62rB,OAAOupI,GAAsBj90C,QAAQ4gD,OAAO+8xC,KACpEpl1C,GAAU,CACZiyP,KAAMwrlC,EAAUn5zB,QAAQryR,KAAK2n6B,IAC7B7vyB,QAAS0z9B,EAAUn5zB,QAAQrmK,IAAIys8B,UAC/BtxJ,GAAIqkL,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAO,KAAM,KAEnD,OAAO6wsC,EAAUn5zB,QAAQ+yoB,IAAIc,QAAQ2rL,GAAevk1C,GAAKS,IAAS07tC,UACpE,CApKmCypH,CAAuBT,GADlCjH,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAO22sC,GAAkBprwB,MAAMlnjB,MAAM,GAAI,IAAK,GACR9yB,KAAK2l1C,eACzFH,GAoKV,SAAS0B,GAAmBT,GAAwBrB,GAAmBuB,IACrE,IAAIE,GAAiBF,GAAwB,GACzCG,GAAUH,GAAwB,GACtC,OAAOrH,EAAUn5zB,QAAQ62rB,OAAOypI,GAAuBn90C,QAAQ4gD,OAAO28xC,IAAgB38xC,OAAOk7xC,KAAoBl7xC,OAAO28xC,IAAgB38xC,OAAO48xC,GACjJ,CAxK+BI,CAAmBT,GAAwBrB,GAAmBnB,GAAY0C,yBAE/FQ,GAuKV,SAASC,GAAwBX,GAAwBY,GAAcjC,GAAmBO,IACxF,IAAIvk1C,GAAMk+0C,EAAUn5zB,QAAQ62rB,OAAOypI,GAAuBn90C,QAAQ4gD,OAAOm9xC,IAAcn9xC,OAAOk7xC,KAC1Fvj1C,GAAU,CACZiyP,KAAMwrlC,EAAUn5zB,QAAQryR,KAAK2n6B,IAC7B7vyB,QAAS0z9B,EAAUn5zB,QAAQrmK,IAAIys8B,UAC/BtxJ,GAAIqkL,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAO,KAAM,KAEnD,OAAO6wsC,EAAUn5zB,QAAQ+yoB,IAAIc,QAAQ2rL,GAAevk1C,GAAKS,IAAS07tC,UACpE,CA/KoC6pH,CAAwBX,GADnCnH,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAO+2sC,GAAmBxrwB,MAAMlnjB,MAAM,GAAI,IAAK,GACNsyzC,GAAmBpl1C,KAAK2l1C,eAChH2B,GAkLV,SAASC,GAA0B3C,GAAae,GAAegB,IAC7D,IAAI3qL,GAASsjL,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAO,CAACq3sC,GAAalB,IAAc,WAAY,YAAa,IAAI16xC,OAAOy8xC,GAAwB,IAK5I,OAAOrH,EAAUn5zB,QAAQ+yoB,IAAIc,QAAQgC,GAAQ2pL,GAJ/B,CACZ7xlC,KAAMwrlC,EAAUn5zB,QAAQryR,KAAK0n6B,IAC7B5vyB,QAAS0z9B,EAAUn5zB,QAAQrmK,IAAIys8B,YAEoChvF,UACvE,CAzLuBgqH,CAA0B3C,GAAa5k1C,KAAK2l1C,cAAe1B,GAAY0C,yBACxFlC,GAAQlk+B,EAAI,EACZkk+B,GAAQlD,OAASvh1C,KAAKu1zC,QACtBkvB,GAAQwB,GAAK,CACXC,MAAO,CACLC,UAAW,UACXC,IAAK,QACL7E,OAAQvh1C,KAAKu1zC,QAAU,IAG3BkvB,GAAQ4B,KAAO,QACf5B,GAAQ6B,KAAO,QACf7B,GAAQt1gC,EAAI,EACZs1gC,GAAQzzgC,EAAIuzgC,GAAkBiB,IAC9Bf,GAAQ+C,GAAKjD,GAAkB4C,IAC/B1C,GAAQpk+B,EAAIkk+B,GAAkBa,IAC9BX,GAAQgD,GAAKlD,GAAkBwC,IAC/BtC,GAAQlzgC,EAAIqzgC,GACZH,GAAQiD,MAAQnD,GAAkB+C,GACpC,GACC,CACDlm1C,IAAK,eACLG,MAAO,SAAsBkkH,GAAKiojC,IAChC,IAAI9nC,GAWAxkoC,GAPJ,GAHIpB,KAAKo4P,QAAU,IACjBwt4B,GAAS5loC,KAAK2l1C,cAAcr80C,QAAQ4gD,OAAOo1xC,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAO,EAAQ,IAANhpB,KAAe,IAAY,MAANA,KAAiB,EAAIA,IAAO,EAAI,MAAe,IAANiojC,IAAmB,MAANA,KAAiB,IAAK,KAElK,IAAjB1tqC,KAAKo4P,SAAkC,IAAjBp4P,KAAKo4P,QAAe,CAC5C,IAAI6zH,GAAOqz9B,EAAUn5zB,QAAQs2Y,IAAImpO,IACjC35wB,UAAK4v1B,SAAWlwqC,KAAK4oB,IAAI,GAAIv0D,KAAKu1zC,QAAU,EAAI,GACzC,SAAU5plC,IACf,OAAO44mC,GAAkBjF,EAAUn5zB,QAAQsnyB,IAAIzzJ,QAAQslL,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAOk9F,IAASsgJ,IAAMsx2B,WAC/G,CACF,CAGEn8tC,GADmB,IAAjBpB,KAAKo4P,QACDknlC,EAAUn5zB,QAAQs2Y,IAAImpO,GAAO17kC,OAAOo1xC,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAO,CAAC,YAAa,KAEzFzuI,KAAK2l1C,cAEb,IAAI1qL,GAAKgpL,GAAY0C,wBAAwB,IACzC9k1C,GAAU,CACZiyP,KAAMwrlC,EAAUn5zB,QAAQryR,KAAK2n6B,IAC7B7vyB,QAAS0z9B,EAAUn5zB,QAAQrmK,IAAI+j8B,MAC/B5oJ,GAAIA,IAEN,OAAO,SAAUtv7B,IACf,OAAO44mC,GAAkBtpL,GAAG3xpC,QAAQ4gD,OAAOo1xC,EAAUn5zB,QAAQ+yoB,IAAIc,QAAQslL,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAOk9F,IAASvqO,GAAKS,IAAS07tC,YACzI,CACF,GACC,CACDn8tC,IAAK,MACLG,MAAO,WACLvB,KAAKonrC,WAAW5tjC,KAClB,KAEKyqtC,EACT,CAnM+B,GAqN/B,SAASkB,KACP,IAAIL,GAAmB7uzC,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACxF2uzC,IAAc,KAClB,MAAkC,kBAA9BE,GAAiBC,WACnBH,IAAe,GAEiB,mBAA9BE,GAAiBC,WACnBH,IAAe,MAEbE,GAAiBE,YACnBJ,IAAe,GAEbE,GAAiBG,UACnBL,IAAe,IAEbE,GAAiBI,aACnBN,IAAe,IAEbE,GAAiB6C,eACnB/C,IAAe,KAEbE,GAAiB8C,uBACnBhD,IAAe,KAEbE,GAAiB+C,mBACnBjD,IAAe,MAEVA,EACT,CAmFA,SAASU,KAKP,QAJIv2wC,GAAW94C,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,GAC/E6qT,GAAMgtxB,EAAOg4B,MAAM,IACnBl+mC,GAASmnD,GAASnnD,OAClBgW,GAAQ,EACLA,GAAQhW,IAAUgW,GAAQ,IAAI,CACnC,IAAIyoF,GAAOt3C,GAASsyI,WAAWzjL,IAC/B,GAAIyoF,GAAO,IACT,MAAM,IAAIzoB,MAAM,qDAElBkjP,GAAIljT,IAASyoF,GACbzoF,IACF,CACA,KAAOA,GAAQ,IACbkjT,GAAIljT,IAASkqzC,GAAiBlqzC,GAAQhW,IACtCgW,KAEF,OAAO0hzC,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAOqyM,GAChD,CACA,SAAS0lgC,KACP,IAAIz3wC,GAAW94C,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,GACnF84C,GAAWukF,SAASjyJ,mBA7YtB,SAAS0m1C,GAAStjuC,IAChB,IAAI671B,GAAOrq7B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAChF,GAAqB,iBAAVwuF,GACT,MAAM,IAAIk8F,UAAU,oBAEtB,GAAqB,IAAjBl8F,GAAM78F,OACR,MAAO,GAGT,IAAIog0C,GAAejE,GAAat/tC,IAC/BpiH,IAAI,SAAU2g1C,IACb,OAAOW,GAAcX,IAAa,GAAOA,EAC3C,GACCn80C,OAAO,SAAUm80C,IAChB,OAAQY,GAAgBZ,GAC1B,GAEIiF,GAAmBnl1C,OAAOyoc,cAAcv1a,MAAM,KAAMgyzC,IAActg+B,UAAU,QAC5Ewg+B,GAAiBnE,GAAakE,IAGlC,GADoBC,GAAepyvC,KAAKwtvC,IAEtC,MAAM,IAAI1lvC,MAAM,6EAGlB,IAA6B,IAAzB0i3B,GAAK6nY,iBACaD,GAAepyvC,KAAKitvC,IAEtC,MAAM,IAAInlvC,MAAM,8EAIpB,IAAIwqvC,GAAaF,GAAepyvC,KAAK0tvC,IACjC6E,GAAWH,GAAepyvC,KAAK4tvC,IAGnC,GAAI0E,IAAcC,GAChB,MAAM,IAAIzqvC,MAAM,kHAQlB,IAAI0qvC,GAAiB9E,GAAmBK,GAAa/s9B,GAAMmx9B,MACvDM,GAAgB/E,GAAmBK,GAAavtzB,GAAK2xzB,MACzD,GAAIG,MAAgBE,KAAkBC,IACpC,MAAM,IAAI3qvC,MAAM,+IAElB,OAAOqqvC,EACT,CA0VyCF,CAASh5wC,MAGhD,QAFInnD,GAAS+jB,KAAK4oB,IAAI,IAAKwa,GAASnnD,QAChCk5T,GAAMgtxB,EAAOg4B,MAAMl+mC,IACdorC,GAAI,EAAGA,GAAIprC,GAAQorC,KAC1B8tR,GAAI9tR,IAAK+b,GAASsyI,WAAWruJ,IAE/B,OAAOssxC,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAOqyM,GAChD,CACA,SAASglgC,GAAat/zC,IACpB,OAAe,IAAPA,KAAgB,IAAa,MAAPA,KAAkB,EAAIA,IAAQ,EAAI,MAASA,IAAQ,GAAK,GACxF,CACA,SAAS+9zC,GAAkBj+B,IAEzB,QADIvP,GAAY,GACP/jvC,GAAI,EAAGA,GAAIszvC,GAAUzqG,SAAU7opC,KACtC+jvC,GAAUl0yC,KAAKyjzC,GAAUtsuB,MAAMruiB,KAAKuqC,MAAMljB,GAAI,KAAO,GAAK,EAAIA,GAAI,GAAK,KAEzE,OAAO86iC,EAAOjhmC,KAAKkqyC,GACrB,CACA,IAiqBIjn7B,GAAIC,GAAIm7R,GAAIC,GAAIw1T,GAAIC,GAjqBpBknY,GAAmB,CAAC,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,GAAM,GAAM,IAAM,IAAM,EAAM,EAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,KAC9M1xwC,GAASuqwC,GAAUvqwC,OACnBoywC,GAA2B,WAC7B,SAASA,GAAY7xlC,IACnB428B,EAAgBvtsC,KAAMwo1C,IACtBxo1C,KAAK22P,IAAMA,GACX32P,KAAKmgY,MAAQ,GACbngY,KAAKyo1C,UAAW,EAChBzo1C,KAAKgxC,UAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EACnC,CACA88pC,SAAa06I,GAAa,CAAC,CACzBpn1C,IAAK,OACLG,MAAO,SAAcoojB,GAAKlrgB,GAAOm6E,IAK/B,GAJe,MAAXA,KACFA,GAAU,GAEZn6E,GAAQz+C,KAAK22P,IAAI+xlC,gBAAgBjqyC,IACP,IAAtBz+C,KAAKmgY,MAAMv4W,OACb,GAAqB,IAAjB62B,GAAM72B,OACR5nB,KAAK050C,YAAc,oBACO,IAAjBj7xC,GAAM72B,OACf5nB,KAAK050C,YAAc,qBACO,IAAjBj7xC,GAAM72B,OAGf,MAAM,IAAIg2E,MAAM,uBAFhB59F,KAAK050C,YAAc,YAEkB,SAET,cAArB150C,KAAK050C,aAAgD,IAAjBj7xC,GAAM72B,QAAqC,eAArB5nB,KAAK050C,aAAiD,IAAjBj7xC,GAAM72B,QAAqC,eAArB5nB,KAAK050C,aAAiD,IAAjBj7xC,GAAM72B,OACzK,MAAM,IAAIg2E,MAAM,oDAElBg7B,UAAUjtF,KAAKC,IAAI,EAAGD,KAAK4oB,IAAI,EAAGqkE,KAClC54H,KAAKmgY,MAAMt9X,KAAK,CAAC8mjB,GAAKlrgB,GAAOm6E,KACtB54H,IACT,GACC,CACDoB,IAAK,eACLG,MAAO,SAAsBon1C,GAAKC,GAAKC,GAAKC,GAAKvpuC,GAAI6vQ,IACnD,OAAApvX,KAAKgxC,UAAY,CAAC23yC,GAAKC,GAAKC,GAAKC,GAAKvpuC,GAAI6vQ,IACnCpvX,IACT,GACC,CACDoB,IAAK,QACLG,MAAO,SAAe8sE,IACpB,IAAI7lD,GACAug0C,GAAc/o1C,KAAKmgY,MAAMv4W,OAC7B,GAAoB,IAAhBmh0C,GAGJ,CAAA/o1C,KAAKyo1C,UAAW,EAChBzo1C,KAAKm3W,OAAS9oS,GAEd,IAAIiod,GAAOt2hB,KAAKmgY,MAAM4o9B,GAAc,GAChCzyzB,GAAK,GAAK,GACZt2hB,KAAKmgY,MAAMt9X,KAAK,CAAC,EAAGyzhB,GAAK,GAAIA,GAAK,KAKpC,QAHIg3G,GAAS,GACTssU,GAAS,GACTz5kB,GAAQ,GACHntU,GAAI,EAAGA,GAAI+1xC,GAAc,EAAG/1xC,KACnC4m5B,GAAO/28B,KAAK,EAAG,GACXmwD,GAAI,IAAM+1xC,IACZz7sB,GAAOzqoB,KAAK7C,KAAKmgY,MAAMntU,GAAI,GAAG,IAEhCxqC,GAAKxoB,KAAK22P,IAAIhgI,IAAI,CAChBqytC,aAAc,EACdC,OAAQ,CAAC,EAAG,GACZn3yB,GAAI9xiB,KAAKmgY,MAAMntU,GAAI,GAAG,GACtB++e,GAAI/xiB,KAAKmgY,MAAMntU,GAAI,GAAG,GACtB68lC,EAAG,IAEL1vxB,GAAMt9X,KAAK2lB,IACXA,GAAGgxG,MAGe,IAAhBuvtC,GACFvg0C,GAAK23W,GAAM,IAEX33W,GAAKxoB,KAAK22P,IAAIhgI,IAAI,CAChBqytC,aAAc,EAEdC,OAAQ,CAAC,EAAG,GACZC,UAAW/o9B,GACXgp9B,OAAQ77sB,GACR87sB,OAAQxvY,MAEPpg1B,MAELx5H,KAAKgK,GAAK,KAAKkgD,SAASlqD,KAAK22P,IAAI0ylC,YACjC,IAAIC,GAAStp1C,KAAKsp1C,OAAO9g0C,IACzB8g0C,GAAO9vtC,MACP,IAAIkxM,GAAU1qU,KAAK22P,IAAIhgI,IAAI,CACzB8+zB,KAAM,UACNk2Y,YAAa,EACb4d,QAASD,GACT3/rB,OAAQ3ppB,KAAKm3W,OAAO90W,IAAI+zE,MAG1B,GADAs0P,GAAQlxM,MACJx5H,KAAKmgY,MAAMrqS,KAAK,SAAUk7L,IAC5B,OAAOA,GAAK,GAAK,CACnB,GAAI,CACF,IAAI2njC,GAAO340C,KAAKwp1C,kBAChB7Q,GAAKe,YAAc,aACnB,IACE9lvB,GADE0yiB,GAAY45M,EAA2Blg1C,KAAKmgY,OAEhD,IACE,IAAKmmwB,GAAU5ymC,MAAOkgkB,GAAQ0yiB,GAAU10hC,KAAK4uI,MAAO,CAClD,IAAIwwC,GAAO4iU,GAAMrylB,MACjBo30C,GAAK3njC,KAAKA,GAAK,GAAI,CAACA,GAAK,IAC3B,CACF,OAAS1vO,IACPgllC,GAAUpvmC,EAAEoqB,GACd,SACEgllC,GAAU9plC,GACZ,CACAm8xC,GAAOA,GAAK/87B,MAAM57Y,KAAKm3W,QACvB,IAAIsy+B,GAAW,CAAC,EAAG,EAAGzp1C,KAAK22P,IAAI9hJ,KAAKphE,MAAOzzC,KAAK22P,IAAI9hJ,KAAKszB,QACrDuoC,GAAO1wK,KAAK22P,IAAIhgI,IAAI,CACtB8+zB,KAAM,UACNw0Y,QAAS,OACTC,SAAU,EACV3rX,KAAMkrY,GACNv4xB,MAAO,CACLukY,KAAM,QACN9knB,EAAG,eACHw5/B,GAAI,cAENC,UAAW,CACT6B,QAAS,CAAC,MAAO,OAAQ,SAAU,SAAU,UAC7CzozB,QAAS,CACPkm0B,IAAK/Q,OAIXjoqC,GAAKpqJ,MAAM,wBACXoqJ,GAAKl3C,IAAI,GAAGtvE,OAAOu/xC,GAASjn1C,KAAK,KAAM,UACvC,IAAI2o0C,GAASnr0C,KAAK22P,IAAIhgI,IAAI,CACxB8+zB,KAAM,YACN61Y,MAAO,CACL71Y,KAAM,OACN9knB,EAAG,aACH/B,EAAGl+J,MAGPy6pC,GAAO3xsC,MACP,IAAImwtC,GAAiB3p1C,KAAK22P,IAAIhgI,IAAI,CAChC8+zB,KAAM,UACNk2Y,YAAa,EACbC,UAAW,EACXC,WAAY,EACZttX,KAAMkrY,GACN3d,MAAO2d,GAAS,GAChB1d,MAAO0d,GAAS,GAChBrf,UAAW,CACT6B,QAAS,CAAC,MAAO,OAAQ,SAAU,SAAU,UAC7CzozB,QAAS,CACPkm0B,IAAKh/gC,IAEPoggC,UAAW,CACT8e,IAAKze,OAIXwe,GAAerj0C,MAAM,gCACrBqj0C,GAAenwtC,IAAI,GAAGtvE,OAAOu/xC,GAASjn1C,KAAK,KAAM,UACjDxC,KAAK22P,IAAI9hJ,KAAKvrE,SAAStpC,KAAKgK,IAAM2/0C,EACpC,MACE3p1C,KAAK22P,IAAI9hJ,KAAKvrE,SAAStpC,KAAKgK,IAAM0gU,GAEpC,OAAOA,GACT,GACC,CACDtpU,IAAK,QACLG,MAAO,SAAe6iJ,IAEpB,IAAIylsC,GAAiB/8rB,GAAe9spB,KAAK22P,IAAI2zkC,KAAM,GACjD1n+B,GAAKin/B,GAAe,GACpB35+B,GAAK25+B,GAAe,GACpB15+B,GAAK05+B,GAAe,GACpBrc,GAAKqc,GAAe,GACpBpc,GAAKoc,GAAe,GACpBnc,GAAKmc,GAAe,GAClBC,GAAkBh9rB,GAAe9spB,KAAKgxC,UAAW,GACnD23yC,GAAMmB,GAAgB,GACtBlB,GAAMkB,GAAgB,GACtBjB,GAAMiB,GAAgB,GACtBhB,GAAMgB,GAAgB,GACtBvquC,GAAKuquC,GAAgB,GACrB169B,GAAK069B,GAAgB,GACnBz7wC,GAAI,CAACu0R,GAAK+l/B,GAAMx4+B,GAAKy4+B,GAAK14+B,GAAKy4+B,GAAMnb,GAAKob,GAAKhm/B,GAAKim/B,GAAM14+B,GAAK24+B,GAAK54+B,GAAK24+B,GAAMrb,GAAKsb,GAAKlm/B,GAAKrjP,GAAK4wP,GAAKif,GAAKq+8B,GAAIv99B,GAAK3wP,GAAKiutC,GAAKp+8B,GAAKs+8B,MACpI1t0C,KAAKyo1C,UAAYp6wC,GAAE7rE,KAAK,OAASxC,KAAKm3W,OAAO30W,KAAK,OACrDxC,KAAK47Y,MAAMvtU,IAEbruE,KAAK22P,IAAIozlC,eAAe,UAAW3lsC,IACnC,IAAImxM,GAAKnxM,GAAS,MAAQ,MAC1B,OAAOpkJ,KAAK22P,IAAIq0kC,WAAW,IAAI9gxC,OAAOlqD,KAAKgK,GAAI,KAAKkgD,OAAOqrS,IAC7D,KAEKiz/B,EACT,CApM+B,GAwQ3BzuX,GAAW,CACbyuX,YAAaA,GACbwB,kBArEmC,SAAUC,IAC7Cv9I,EAAUs9I,GAAmBC,IAC7B,IAAIz7sC,GAASq+jC,EAAam9I,IAC1B,SAASA,GAAkBrzlC,GAAK43H,GAAIC,GAAI4V,GAAIC,IAC1C,IAAIzvW,GACJ24qC,SAAgBvtsC,KAAMgq1C,KACtBp1zC,GAAQ45G,GAAOzlG,KAAK/oC,KAAM22P,KACpB43H,GAAKA,GACX35V,GAAM45V,GAAKA,GACX55V,GAAMwvW,GAAKA,GACXxvW,GAAMyvW,GAAKA,GACJzvW,EACT,CACAk5qC,SAAak8I,GAAmB,CAAC,CAC/B5o1C,IAAK,SACLG,MAAO,SAAgBinB,IACrB,OAAOxoB,KAAK22P,IAAIhgI,IAAI,CAClBuztC,YAAa,EACb/H,WAAYni1C,KAAK050C,YACjByQ,OAAQ,CAACnq1C,KAAKuuX,GAAIvuX,KAAKwuX,GAAIxuX,KAAKokY,GAAIpkY,KAAKqkY,IACzCnoL,SAAU1zL,GACV4h0C,OAAQ,EAAC,GAAM,IAEnB,GACC,CACDhp1C,IAAK,kBACLG,MAAO,WACL,OAAO,IAAIyo1C,GAAkBhq1C,KAAK22P,IAAK32P,KAAKuuX,GAAIvuX,KAAKwuX,GAAIxuX,KAAKokY,GAAIpkY,KAAKqkY,GACzE,KAEK2l9B,EACT,CA/BqC,CA+BnCxB,IAuCA6B,kBAtCmC,SAAUC,IAC7C59I,EAAU29I,GAAmBC,IAC7B,IAAIC,GAAU19I,EAAaw9I,IAC3B,SAASA,GAAkB1zlC,GAAK43H,GAAIC,GAAI1G,GAAIsc,GAAIC,GAAI0yxB,IAClD,IAAI1goC,GACJk3qC,SAAgBvtsC,KAAMqq1C,KACtBh0zC,GAASk0zC,GAAQxhzC,KAAK/oC,KAAM22P,KACrBA,IAAMA,GACbtgO,GAAOk4V,GAAKA,GACZl4V,GAAOm4V,GAAKA,GACZn4V,GAAOyxV,GAAKA,GACZzxV,GAAO+tW,GAAKA,GACZ/tW,GAAOguW,GAAKA,GACZhuW,GAAO0goC,GAAKA,GACL1goC,EACT,CACAy3qC,SAAau8I,GAAmB,CAAC,CAC/Bjp1C,IAAK,SACLG,MAAO,SAAgBinB,IACrB,OAAOxoB,KAAK22P,IAAIhgI,IAAI,CAClBuztC,YAAa,EACb/H,WAAYni1C,KAAK050C,YACjByQ,OAAQ,CAACnq1C,KAAKuuX,GAAIvuX,KAAKwuX,GAAIxuX,KAAK8nX,GAAI9nX,KAAKokY,GAAIpkY,KAAKqkY,GAAIrkY,KAAK+2pC,IAC3D768B,SAAU1zL,GACV4h0C,OAAQ,EAAC,GAAM,IAEnB,GACC,CACDhp1C,IAAK,kBACLG,MAAO,WACL,OAAO,IAAI8o1C,GAAkBrq1C,KAAK22P,IAAK32P,KAAKuuX,GAAIvuX,KAAKwuX,GAAIxuX,KAAK8nX,GAAI9nX,KAAKokY,GAAIpkY,KAAKqkY,GAAIrkY,KAAK+2pC,GAC3F,KAEKszL,EACT,CAlCqC,CAkCnC7B,KAUEgC,GAAwB,CAAC,aAAc,aA0GvCC,GAAgB1wX,GAASyuX,YAC3BkC,GAAsB3wX,GAASiwX,kBAC/BW,GAAsB5wX,GAASswX,kBAC7BO,GA5GgC,WAClC,SAASC,GAAiBl0lC,GAAK0hlC,GAAMyS,GAAOC,GAAOt9/B,IACjD8/2B,EAAgBvtsC,KAAM6q1C,IACtB7q1C,KAAK22P,IAAMA,GACX32P,KAAKq40C,KAAOA,GACZr40C,KAAK8q1C,MAAQA,GACb9q1C,KAAK+q1C,MAAQA,GACb/q1C,KAAKytV,OAASA,EAChB,CACAqg3B,SAAa+8I,GAAkB,CAAC,CAC9Bzp1C,IAAK,gBACLG,MAAO,WAGL,IAAIwz/B,GAAY/0/B,KAAK22P,IAAIhgI,MACzBo+3B,GAAUv73B,MAGV,IAAIqwtC,GAAiB/8rB,GAAe9spB,KAAK22P,IAAI2zkC,KAAM,GACjD1n+B,GAAKin/B,GAAe,GACpB35+B,GAAK25+B,GAAe,GACpB15+B,GAAK05+B,GAAe,GACpBrc,GAAKqc,GAAe,GAUlBn/gC,GAAU1qU,KAAK22P,IAAIhgI,IAAI,CACzB8+zB,KAAM,UACNk2Y,YAAa,EAEbC,UAAW,EAEXC,WAAY,EAEZttX,KAAMv+8B,KAAKq40C,KACXvM,MAAO9r0C,KAAK8q1C,MACZ/e,MAAO/r0C,KAAK+q1C,MACZphsB,OAZM,CANE,EAMD/mT,GALD,EAKYuN,GANV,EAMoBD,GALtB,EAKiCs99B,GAJjC,EAI2C5q+B,GAH3C,EAGsDuN,GAJtD,EAIgED,GAHhE,EAG2Es99B,GAF5E,EAEsF5q+B,GADtF,EACgGuN,GARhG05+B,GAAe,GAMf,EAE8G35+B,GAD9G,EACwHs99B,GAPxHqc,GAAe,IAmBVxn1C,IAAI,SAAUC,IACtB,OAAQA,GAAE89C,QAAQ,EACpB,GACAgqxC,UAAWr1U,KAEbrqrB,UAAQlxM,IAAIx5H,KAAKytV,QACV/iB,EACT,GACC,CACDtpU,IAAK,0BACLG,MAAO,WACL,IAAIqzB,GAAQ50B,KAIZwq1C,GAAsBhszC,QAAQ,SAAUwszC,IACtC,IAAIC,GAAOr2zC,GAAMs2zC,uBAAuBF,IACxC,IAAIp2zC,GAAM+hO,IAAI9hJ,KAAKs2uC,YAAYF,IAC/B,KAAIrmpC,GAAKhwK,GAAM+hO,IAAIhgI,IAAI,CAAC,UAAWq0tC,KACnCpmpC,GAAGprE,MACH5kG,GAAM+hO,IAAI9hJ,KAAKs2uC,YAAYF,IAAQrmpC,GACrC,EACF,GACC,CACDxjM,IAAK,yBACLG,MAAO,SAAgC6p1C,IACrC,MAAO,MAAMlhyC,OAAOkhyC,GACtB,GACC,CACDhq1C,IAAK,QACLG,MAAO,WACAvB,KAAKgK,KACRhK,KAAK22P,IAAI+0kC,cAAgB1r0C,KAAK22P,IAAI+0kC,cAAgB,EAClD1r0C,KAAKgK,GAAK,IAAMhK,KAAK22P,IAAI+0kC,cACzB1r0C,KAAK0qU,QAAU1qU,KAAK+8pB,iBAGjB/8pB,KAAK22P,IAAI9hJ,KAAKvrE,SAAStpC,KAAKgK,MAC/BhK,KAAK22P,IAAI9hJ,KAAKvrE,SAAStpC,KAAKgK,IAAMhK,KAAK0qU,QAE3C,GACC,CACDtpU,IAAK,QACLG,MAAO,SAAe6iJ,GAAQ0zyB,IAE5B937B,KAAKqr1C,0BACLrr1C,KAAK47Y,QACL,IAAI0v8B,GAAkBtr1C,KAAK22P,IAAI+xlC,gBAAgB5wZ,IAC/C,IAAKwzZ,GAAiB,MAAM1tvC,MAAM,kCAAkC1zC,OAAO4t4B,GAAc,MAEzF,IAAImzZ,GAAOjr1C,KAAKkr1C,uBAAuBlr1C,KAAK22P,IAAI40lC,eAAeD,KAC/Dtr1C,KAAK22P,IAAIozlC,eAAekB,GAAM7msC,IAE9B,IAAImxM,GAAKnxM,GAAS,MAAQ,MAC1B,OAAOpkJ,KAAK22P,IAAIq0kC,WAAW,GAAG9gxC,OAAOohyC,GAAgB9o1C,KAAK,KAAM,MAAM0nD,OAAOlqD,KAAKgK,GAAI,KAAKkgD,OAAOqrS,IACpG,KAEKs1/B,EACT,CArGoC,GA6GhCW,GAAa,CACfC,UAAW,WAET,OAAAzr1C,KAAK0r1C,iBAAmB,CAAC,EACzB1r1C,KAAK2r1C,cAAgB,EACrB3r1C,KAAK0r0C,cAAgB,EACd1r0C,KAAKqp1C,WAAa,CAC3B,EACAX,gBAAiB,SAAyBjqyC,IACxC,GAAqB,iBAAVA,GACT,GAAwB,MAApBA,GAAMi4B,OAAO,GAAY,CACN,IAAjBj4B,GAAM72B,SACR62B,GAAQA,GAAMp7C,QAAQ,mCAAoC,kBAE5D,IAAIosW,GAAMjkV,SAASizB,GAAM3rB,MAAM,GAAI,IACnC2rB,GAAQ,CAACgxT,IAAO,GAAIA,IAAO,EAAI,IAAY,IAANA,GACvC,MAAWkvN,GAAYlghB,MACrBA,GAAQkghB,GAAYlghB,KAGxB,OAAIr8C,MAAMq3G,QAAQh7D,KAEK,IAAjBA,GAAM72B,OACR62B,GAAQA,GAAMp8C,IAAI,SAAUqpN,IAC1B,OAAOA,GAAO,GAChB,GAC0B,IAAjBjtK,GAAM72B,SACf62B,GAAQA,GAAMp8C,IAAI,SAAUqpN,IAC1B,OAAOA,GAAO,GAChB,IAEKjtK,IAEF,IACT,EACAmtyC,UAAW,SAAmBntyC,GAAO2lG,IACnC,OAAI3lG,cAAiBgsyC,IACnBhsyC,GAAMzoB,MAAMouH,KACL,GACEhiJ,MAAMq3G,QAAQh7D,KAAUA,GAAM,aAAcmsyC,IACrDnsyC,GAAM,GAAGzoB,MAAMouH,GAAQ3lG,GAAM,KACtB,GAGFz+C,KAAK6r1C,cAAcptyC,GAAO2lG,GACnC,EACAynsC,cAAe,SAAuBptyC,GAAO2lG,IAE3C,KADA3lG,GAAQz+C,KAAK0o1C,gBAAgBjqyC,KAE3B,OAAO,EAET,IAAI82S,GAAKnxM,GAAS,MAAQ,MACtBg5M,GAAQp9V,KAAKur1C,eAAe9syC,IAChC,OAAAz+C,KAAK+p1C,eAAe3s/B,GAAOh5M,IAC3B3lG,GAAQA,GAAMj8C,KAAK,KACnBxC,KAAKgr0C,WAAW,GAAG9gxC,OAAOzL,GAAO,KAAKyL,OAAOqrS,MACtC,CACT,EACAw0/B,eAAgB,SAAwB3s/B,GAAOh5M,IAC7C,IAAImxM,GAAKnxM,GAAS,KAAO,KACzB,OAAOpkJ,KAAKgr0C,WAAW,IAAI9gxC,OAAOkzS,GAAO,KAAKlzS,OAAOqrS,IACvD,EACAg2/B,eAAgB,SAAwB9syC,IACtC,OAAwB,IAAjBA,GAAM72B,OAAe,aAAe,WAC7C,EACAyigC,UAAW,SAAmB5r+B,GAAOm6E,IAEnC,OADU54H,KAAK4r1C,UAAUntyC,IAAO,IAE9Bz+C,KAAKwkJ,YAAY5rB,IAInB54H,KAAKg/0C,WAAa,CAACvgyC,GAAOm6E,IACnB54H,IACT,EACAus0C,YAAa,SAAqB9txC,GAAOm6E,IAEvC,OADU54H,KAAK4r1C,UAAUntyC,IAAO,IAE9Bz+C,KAAKykJ,cAAc7rB,IAEd54H,IACT,EACA44H,QAAS,SAAiBkztC,IACxB,OAAA9r1C,KAAK+r1C,WAAWD,GAAUA,IACnB9r1C,IACT,EACAwkJ,YAAa,SAAqB5rB,IAChC,OAAA54H,KAAK+r1C,WAAWnztC,GAAS,MAClB54H,IACT,EACAykJ,cAAe,SAAuB7rB,IACpC,OAAA54H,KAAK+r1C,WAAW,KAAMnztC,IACf54H,IACT,EACA+r1C,WAAY,SAAoBvnsC,GAAaC,IAC3C,IAAI2iiC,GAAYxlrC,GAChB,GAAmB,MAAf4iJ,IAAwC,MAAjBC,GAG3B,CAAmB,MAAfD,KACFA,GAAc74G,KAAKC,IAAI,EAAGD,KAAK4oB,IAAI,EAAGiwF,MAEnB,MAAjBC,KACFA,GAAgB94G,KAAKC,IAAI,EAAGD,KAAK4oB,IAAI,EAAGkwF,MAE1C,IAAIrjJ,GAAM,GAAG8oD,OAAOs6F,GAAa,KAAKt6F,OAAOu6F,IAC7C,GAAIzkJ,KAAK0r1C,iBAAiBtq1C,IAAM,CAC9B,IAAI4q1C,GAAwBl/rB,GAAe9spB,KAAK0r1C,iBAAiBtq1C,IAAM,GACvEgmrC,GAAa4kK,GAAsB,GACnCpq1C,GAAOoq1C,GAAsB,EAC/B,KAAO,CACL5kK,GAAa,CACX3xP,KAAM,aAEW,MAAfjxyB,KACF4iiC,GAAWi2B,GAAK74jC,IAEG,MAAjBC,KACF2iiC,GAAWgkJ,GAAK3mrC,KAElB2iiC,GAAapnrC,KAAK22H,IAAIywjC,KACX5tjC,MACX,IAAIxvH,KAAOhK,KAAK2r1C,cAChB/p1C,GAAO,KAAKsoD,OAAOlgD,IACnBhK,KAAK0r1C,iBAAiBtq1C,IAAO,CAACgmrC,GAAYxlrC,GAC5C,CACA,OAAA5B,KAAK60G,KAAK61tC,YAAY9o0C,IAAQwlrC,GACvBpnrC,KAAKgr0C,WAAW,IAAI9gxC,OAAOtoD,GAAM,OAAM,CAChD,EACAy30C,eAAgB,SAAwB9q9B,GAAIC,GAAI4V,GAAIC,IAClD,OAAO,IAAIqm9B,GAAoB1q1C,KAAMuuX,GAAIC,GAAI4V,GAAIC,GACnD,EACAi18B,eAAgB,SAAwB/q9B,GAAIC,GAAI1G,GAAIsc,GAAIC,GAAI0yxB,IAC1D,OAAO,IAAI4zL,GAAoB3q1C,KAAMuuX,GAAIC,GAAI1G,GAAIsc,GAAIC,GAAI0yxB,GAC3D,EACArs1B,QAAS,SAAiBi7L,GAAMml1B,GAAOC,GAAOt9/B,IAC5C,OAAO,IAAIm9/B,GAAmB5q1C,KAAM2lgB,GAAMml1B,GAAOC,GAAOt9/B,GAC1D,GAEEkxO,GAAc,CAChBj5N,UAAW,CAAC,IAAK,IAAK,KACtBC,aAAc,CAAC,IAAK,IAAK,KACzBC,KAAM,CAAC,EAAG,IAAK,KACfC,WAAY,CAAC,IAAK,IAAK,KACvBC,MAAO,CAAC,IAAK,IAAK,KAClBC,MAAO,CAAC,IAAK,IAAK,KAClBC,OAAQ,CAAC,IAAK,IAAK,KACnBC,MAAO,CAAC,EAAG,EAAG,GACdC,eAAgB,CAAC,IAAK,IAAK,KAC3BC,KAAM,CAAC,EAAG,EAAG,KACbC,WAAY,CAAC,IAAK,GAAI,KACtBC,MAAO,CAAC,IAAK,GAAI,IACjBC,UAAW,CAAC,IAAK,IAAK,KACtBC,UAAW,CAAC,GAAI,IAAK,KACrBC,WAAY,CAAC,IAAK,IAAK,GACvBC,UAAW,CAAC,IAAK,IAAK,IACtBC,MAAO,CAAC,IAAK,IAAK,IAClBC,eAAgB,CAAC,IAAK,IAAK,KAC3BC,SAAU,CAAC,IAAK,IAAK,KACrBC,QAAS,CAAC,IAAK,GAAI,IACnBC,KAAM,CAAC,EAAG,IAAK,KACfC,SAAU,CAAC,EAAG,EAAG,KACjBC,SAAU,CAAC,EAAG,IAAK,KACnBC,cAAe,CAAC,IAAK,IAAK,IAC1BC,SAAU,CAAC,IAAK,IAAK,KACrBC,UAAW,CAAC,EAAG,IAAK,GACpBC,SAAU,CAAC,IAAK,IAAK,KACrBC,UAAW,CAAC,IAAK,IAAK,KACtBC,YAAa,CAAC,IAAK,EAAG,KACtBC,eAAgB,CAAC,GAAI,IAAK,IAC1BC,WAAY,CAAC,IAAK,IAAK,GACvBC,WAAY,CAAC,IAAK,GAAI,KACtBC,QAAS,CAAC,IAAK,EAAG,GAClBC,WAAY,CAAC,IAAK,IAAK,KACvBC,aAAc,CAAC,IAAK,IAAK,KACzBC,cAAe,CAAC,GAAI,GAAI,KACxBC,cAAe,CAAC,GAAI,GAAI,IACxBC,cAAe,CAAC,GAAI,GAAI,IACxBC,cAAe,CAAC,EAAG,IAAK,KACxBC,WAAY,CAAC,IAAK,EAAG,KACrBC,SAAU,CAAC,IAAK,GAAI,KACpBC,YAAa,CAAC,EAAG,IAAK,KACtBC,QAAS,CAAC,IAAK,IAAK,KACpBC,QAAS,CAAC,IAAK,IAAK,KACpBC,WAAY,CAAC,GAAI,IAAK,KACtBC,UAAW,CAAC,IAAK,GAAI,IACrBC,YAAa,CAAC,IAAK,IAAK,KACxBC,YAAa,CAAC,GAAI,IAAK,IACvBC,QAAS,CAAC,IAAK,EAAG,KAClBC,UAAW,CAAC,IAAK,IAAK,KACtBC,WAAY,CAAC,IAAK,IAAK,KACvBC,KAAM,CAAC,IAAK,IAAK,GACjBC,UAAW,CAAC,IAAK,IAAK,IACtBC,KAAM,CAAC,IAAK,IAAK,KACjBG,KAAM,CAAC,IAAK,IAAK,KACjBF,MAAO,CAAC,EAAG,IAAK,GAChBC,YAAa,CAAC,IAAK,IAAK,IACxBE,SAAU,CAAC,IAAK,IAAK,KACrBC,QAAS,CAAC,IAAK,IAAK,KACpBC,UAAW,CAAC,IAAK,GAAI,IACrBC,OAAQ,CAAC,GAAI,EAAG,KAChBC,MAAO,CAAC,IAAK,IAAK,KAClBC,MAAO,CAAC,IAAK,IAAK,KAClBC,SAAU,CAAC,IAAK,IAAK,KACrBC,cAAe,CAAC,IAAK,IAAK,KAC1BC,UAAW,CAAC,IAAK,IAAK,GACtBC,aAAc,CAAC,IAAK,IAAK,KACzBC,UAAW,CAAC,IAAK,IAAK,KACtBC,WAAY,CAAC,IAAK,IAAK,KACvBC,UAAW,CAAC,IAAK,IAAK,KACtBC,qBAAsB,CAAC,IAAK,IAAK,KACjCC,UAAW,CAAC,IAAK,IAAK,KACtBC,WAAY,CAAC,IAAK,IAAK,KACvBC,UAAW,CAAC,IAAK,IAAK,KACtBC,UAAW,CAAC,IAAK,IAAK,KACtBC,YAAa,CAAC,IAAK,IAAK,KACxBC,cAAe,CAAC,GAAI,IAAK,KACzBC,aAAc,CAAC,IAAK,IAAK,KACzBC,eAAgB,CAAC,IAAK,IAAK,KAC3BC,eAAgB,CAAC,IAAK,IAAK,KAC3BC,eAAgB,CAAC,IAAK,IAAK,KAC3BC,YAAa,CAAC,IAAK,IAAK,KACxBC,KAAM,CAAC,EAAG,IAAK,GACfC,UAAW,CAAC,GAAI,IAAK,IACrBC,MAAO,CAAC,IAAK,IAAK,KAClBC,QAAS,CAAC,IAAK,EAAG,KAClBC,OAAQ,CAAC,IAAK,EAAG,GACjBC,iBAAkB,CAAC,IAAK,IAAK,KAC7BC,WAAY,CAAC,EAAG,EAAG,KACnBC,aAAc,CAAC,IAAK,GAAI,KACxBC,aAAc,CAAC,IAAK,IAAK,KACzBC,eAAgB,CAAC,GAAI,IAAK,KAC1BC,gBAAiB,CAAC,IAAK,IAAK,KAC5BC,kBAAmB,CAAC,EAAG,IAAK,KAC5BC,gBAAiB,CAAC,GAAI,IAAK,KAC3BC,gBAAiB,CAAC,IAAK,GAAI,KAC3BC,aAAc,CAAC,GAAI,GAAI,KACvBC,UAAW,CAAC,IAAK,IAAK,KACtBC,UAAW,CAAC,IAAK,IAAK,KACtBC,SAAU,CAAC,IAAK,IAAK,KACrBC,YAAa,CAAC,IAAK,IAAK,KACxBC,KAAM,CAAC,EAAG,EAAG,KACbC,QAAS,CAAC,IAAK,IAAK,KACpBC,MAAO,CAAC,IAAK,IAAK,GAClBC,UAAW,CAAC,IAAK,IAAK,IACtBC,OAAQ,CAAC,IAAK,IAAK,GACnBC,UAAW,CAAC,IAAK,GAAI,GACrBC,OAAQ,CAAC,IAAK,IAAK,KACnBC,cAAe,CAAC,IAAK,IAAK,KAC1BC,UAAW,CAAC,IAAK,IAAK,KACtBC,cAAe,CAAC,IAAK,IAAK,KAC1BC,cAAe,CAAC,IAAK,IAAK,KAC1BC,WAAY,CAAC,IAAK,IAAK,KACvBC,UAAW,CAAC,IAAK,IAAK,KACtBC,KAAM,CAAC,IAAK,IAAK,IACjBC,KAAM,CAAC,IAAK,IAAK,KACjBC,KAAM,CAAC,IAAK,IAAK,KACjBC,WAAY,CAAC,IAAK,IAAK,KACvBC,OAAQ,CAAC,IAAK,EAAG,KACjBE,IAAK,CAAC,IAAK,EAAG,GACdC,UAAW,CAAC,IAAK,IAAK,KACtBC,UAAW,CAAC,GAAI,IAAK,KACrBC,YAAa,CAAC,IAAK,GAAI,IACvBC,OAAQ,CAAC,IAAK,IAAK,KACnBC,WAAY,CAAC,IAAK,IAAK,IACvBC,SAAU,CAAC,GAAI,IAAK,IACpBC,SAAU,CAAC,IAAK,IAAK,KACrBC,OAAQ,CAAC,IAAK,GAAI,IAClBC,OAAQ,CAAC,IAAK,IAAK,KACnBC,QAAS,CAAC,IAAK,IAAK,KACpBC,UAAW,CAAC,IAAK,GAAI,KACrBC,UAAW,CAAC,IAAK,IAAK,KACtBC,UAAW,CAAC,IAAK,IAAK,KACtBC,KAAM,CAAC,IAAK,IAAK,KACjBC,YAAa,CAAC,EAAG,IAAK,KACtBC,UAAW,CAAC,GAAI,IAAK,KACrBC,IAAK,CAAC,IAAK,IAAK,KAChBC,KAAM,CAAC,EAAG,IAAK,KACfC,QAAS,CAAC,IAAK,IAAK,KACpBC,OAAQ,CAAC,IAAK,GAAI,IAClBC,UAAW,CAAC,GAAI,IAAK,KACrBC,OAAQ,CAAC,IAAK,IAAK,KACnBC,MAAO,CAAC,IAAK,IAAK,KAClBC,MAAO,CAAC,IAAK,IAAK,KAClBC,WAAY,CAAC,IAAK,IAAK,KACvBC,OAAQ,CAAC,IAAK,IAAK,GACnBC,YAAa,CAAC,IAAK,IAAK,KAG1BihB,GAAKC,GAAKm7R,GAAKC,GAAKw1T,GAAKC,GAAK,EAC9B,IAAIjrkB,GAAa,CACf/vB,EAAG,EACH/mU,EAAG,EACHqtsB,EAAG,EACH/0oB,EAAG,EACHs5N,EAAG,EACHhqF,EAAG,EACH8oF,EAAG,EACHzpM,EAAG,EACHwpM,EAAG,EACHjhQ,EAAG,EACH+gQ,EAAG,EACHC,EAAG,EACHsB,EAAG,EACHj9S,EAAG,EACHw9S,EAAG,EACH/wU,EAAG,EACHogX,EAAG,EACHj+W,EAAG,EACHs+W,EAAG,EACH3vC,EAAG,GAsGDg7gC,GAAU,CACZ38gC,EAAG,SAAW34E,GAAK93M,IACjBixU,OAEAo7R,GAAKC,GAAK,KACVw1T,GAHA7wlB,GAAKjxU,GAAE,GAIP+h6B,GAHA7wlB,GAAKlxU,GAAE,GAIA83M,GAAI2sI,OAAOxT,GAAIC,GACxB,EACA1hT,EAAG,SAAWsoL,GAAK93M,IACjBixU,OAEAo7R,GAAKC,GAAK,KACVw1T,GAHA7wlB,IAAMjxU,GAAE,GAIR+h6B,GAHA7wlB,IAAMlxU,GAAE,GAID83M,GAAI2sI,OAAOxT,GAAIC,GACxB,EACAm8X,EAAG,SAAWv1f,GAAK93M,IACjBixU,UAAKjxU,GAAE,GACPkxU,GAAKlxU,GAAE,GACPqsmB,GAAKrsmB,GAAE,GACPssmB,GAAKtsmB,GAAE,GACA83M,GAAI69Z,cAAcx+nB,MAAM2gO,GAAKmplC,GAAmBjhyC,IACzD,EACAs4D,EAAG,SAAWw/I,GAAK93M,IACjB83M,UAAI69Z,cAAc31mB,GAAE,GAAKixU,GAAIjxU,GAAE,GAAKkxU,GAAIlxU,GAAE,GAAKixU,GAAIjxU,GAAE,GAAKkxU,GAAIlxU,GAAE,GAAKixU,GAAIjxU,GAAE,GAAKkxU,IAChFm7R,GAAKp7R,GAAKjxU,GAAE,GACZssmB,GAAKp7R,GAAKlxU,GAAE,GACZixU,IAAMjxU,GAAE,GACDkxU,IAAMlxU,GAAE,EACjB,EACA8xR,EAAG,SAAWh6E,GAAK93M,IACjB,OAAW,OAAPqsmB,KACFA,GAAKp7R,GACLq7R,GAAKp7R,IAEPp5H,GAAI69Z,cAAc1kS,IAAMo7R,GAAKp7R,IAAKC,IAAMo7R,GAAKp7R,IAAKlxU,GAAE,GAAIA,GAAE,GAAIA,GAAE,GAAIA,GAAE,IACtEqsmB,GAAKrsmB,GAAE,GACPssmB,GAAKtsmB,GAAE,GACPixU,GAAKjxU,GAAE,GACAkxU,GAAKlxU,GAAE,EAChB,EACAnrB,EAAG,SAAWijO,GAAK93M,IACjB,OAAW,OAAPqsmB,KACFA,GAAKp7R,GACLq7R,GAAKp7R,IAEPp5H,GAAI69Z,cAAc1kS,IAAMo7R,GAAKp7R,IAAKC,IAAMo7R,GAAKp7R,IAAKD,GAAKjxU,GAAE,GAAIkxU,GAAKlxU,GAAE,GAAIixU,GAAKjxU,GAAE,GAAIkxU,GAAKlxU,GAAE,IAC1FqsmB,GAAKp7R,GAAKjxU,GAAE,GACZssmB,GAAKp7R,GAAKlxU,GAAE,GACZixU,IAAMjxU,GAAE,GACDkxU,IAAMlxU,GAAE,EACjB,EACAuwR,EAAG,SAAWz4E,GAAK93M,IACjBqsmB,UAAKrsmB,GAAE,GACPssmB,GAAKtsmB,GAAE,GAGA83M,GAAIk7T,iBAAiBhzgB,GAAE,GAAIA,GAAE,GAFpCixU,GAAKjxU,GAAE,GACPkxU,GAAKlxU,GAAE,GAET,EACAwwR,EAAG,SAAW14E,GAAK93M,IACjB83M,UAAIk7T,iBAAiBhzgB,GAAE,GAAKixU,GAAIjxU,GAAE,GAAKkxU,GAAIlxU,GAAE,GAAKixU,GAAIjxU,GAAE,GAAKkxU,IAC7Dm7R,GAAKp7R,GAAKjxU,GAAE,GACZssmB,GAAKp7R,GAAKlxU,GAAE,GACZixU,IAAMjxU,GAAE,GACDkxU,IAAMlxU,GAAE,EACjB,EACAqyR,EAAG,SAAWv6E,GAAK93M,IACjB,OAAW,OAAPqsmB,IACFA,GAAKp7R,GACLq7R,GAAKp7R,KAELm7R,GAAKp7R,IAAMo7R,GAAKp7R,IAChBq7R,GAAKp7R,IAAMo7R,GAAKp7R,KAElBp5H,GAAIk7T,iBAAiBq5F,GAAIC,GAAItsmB,GAAE,GAAIA,GAAE,IACrCqsmB,GAAKp7R,IAAMo7R,GAAKp7R,IAChBq7R,GAAKp7R,IAAMo7R,GAAKp7R,IAChBD,GAAKjxU,GAAE,GACAkxU,GAAKlxU,GAAE,EAChB,EACA1+C,EAAG,SAAWw2P,GAAK93M,IACjB,OAAW,OAAPqsmB,IACFA,GAAKp7R,GACLq7R,GAAKp7R,KAELm7R,GAAKp7R,IAAMo7R,GAAKp7R,IAChBq7R,GAAKp7R,IAAMo7R,GAAKp7R,KAElBp5H,GAAIk7T,iBAAiBq5F,GAAIC,GAAIr7R,GAAKjxU,GAAE,GAAIkxU,GAAKlxU,GAAE,IAC/CixU,IAAMjxU,GAAE,GACDkxU,IAAMlxU,GAAE,EACjB,EACA+mU,EAAG,SAAWjvH,GAAK93M,IACjBqtyC,UAASv1lC,GAAKm5H,GAAIC,GAAIlxU,IACtBixU,GAAKjxU,GAAE,GACAkxU,GAAKlxU,GAAE,EAChB,EACAA,EAAG,SAAW83M,GAAKh4M,IACjBA,UAAG,IAAMmxU,GACTnxU,GAAG,IAAMoxU,GACTm89B,GAASv1lC,GAAKm5H,GAAIC,GAAIpxU,IACtBmxU,GAAKnxU,GAAG,GACDoxU,GAAKpxU,GAAG,EACjB,EACA4wR,EAAG,SAAW54E,GAAK93M,IACjBixU,OAEAo7R,GAAKC,GAAK,KACHx0Z,GAAIsuI,OAHXnV,GAAKjxU,GAAE,GACPkxU,GAAKlxU,GAAE,GAGT,EACAinF,EAAG,SAAW6wH,GAAK93M,IACjBixU,OAEAo7R,GAAKC,GAAK,KACHx0Z,GAAIsuI,OAHXnV,IAAMjxU,GAAE,GACRkxU,IAAMlxU,GAAE,GAGV,EACA4xR,EAAG,SAAW95E,GAAK93M,IACjBixU,OACAo7R,GAAKC,GAAK,KACHx0Z,GAAIsuI,OAFXnV,GAAKjxU,GAAE,GAEekxU,GACxB,EACAtpI,EAAG,SAAWkQ,GAAK93M,IACjBixU,OACAo7R,GAAKC,GAAK,KACHx0Z,GAAIsuI,OAFXnV,IAAMjxU,GAAE,GAEckxU,GACxB,EACAxP,EAAG,SAAW5pH,GAAK93M,IACjBkxU,OACAm7R,GAAKC,GAAK,KACHx0Z,GAAIsuI,OAAOnV,GAFlBC,GAAKlxU,GAAE,GAGT,EACAv8C,EAAG,SAAWq0P,GAAK93M,IACjBkxU,OACAm7R,GAAKC,GAAK,KACHx0Z,GAAIsuI,OAAOnV,GAFlBC,IAAMlxU,GAAE,GAGV,EACA+hU,EAAG,SAAWjqH,IACZA,UAAIuuI,YACJpV,GAAK6wlB,GACE5wlB,GAAK6wlB,EACd,EACA3voB,EAAG,SAAWt6E,IACZA,UAAIuuI,YACJpV,GAAK6wlB,GACE5wlB,GAAK6wlB,EACd,GAEEsrY,GAAW,SAAkBv1lC,GAAKhvO,GAAG40C,GAAGwikB,IAC1C,IAUE0sgB,GAVE0gN,GAAUr/rB,GAAe/tB,GAAQ,GASjC2sgB,GAAaw0M,EADNkM,GAFJD,GAAQ,GACRA,GAAQ,GANRA,GAAQ,GACRA,GAAQ,GAELA,GAAQ,GACRA,GAAQ,GAFVA,GAAQ,GAK4Cxk0C,GAAG40C,KAG/D,IACE,IAAKmvkC,GAAWh4mC,MAAO+3mC,GAASC,GAAW95hC,KAAK4uI,MAAO,CACrD,IACI6rmC,GAAMC,GAAgBt2zC,WAAM,EAAQ8pzC,GAD9Br0M,GAAOlqoC,QAEjBo1P,GAAI69Z,cAAcx+nB,MAAM2gO,GAAKmplC,GAAmBuM,IAClD,CACF,OAAS/qyC,IACPoqlC,GAAWx0mC,EAAEoqB,GACf,SACEoqlC,GAAWlvlC,GACb,CACF,EAEI4vyC,GAAgB,SAAuBzk0C,GAAG40C,GAAGsyd,GAAIC,GAAI64f,GAAO4kU,GAAOC,GAAS599B,GAAIC,IAClF,IAAI9/M,GAAKy9qC,IAAW7gzC,KAAK4uK,GAAK,KAC1BkyoC,GAAS9gzC,KAAK0hV,IAAIt+M,IAClB29qC,GAAS/gzC,KAAKyhV,IAAIr+M,IACtB8/W,GAAKljf,KAAK+hG,IAAImhZ,IACdC,GAAKnjf,KAAK+hG,IAAIohZ,IAGd,IAAIijG,IAFJm5B,GAAKwhsB,IAAU999B,GAAKjnW,IAAK,GAAM8k0C,IAAU599B,GAAKtyT,IAAK,IAErC2ulB,IAAMr8H,GAAKA,KADzBs8H,GAAKuhsB,IAAU799B,GAAKtyT,IAAK,GAAMkwxC,IAAU799B,GAAKjnW,IAAK,IACfwjoB,IAAMr8H,GAAKA,IAC3CijG,GAAK,IAEPljG,IADAkjG,GAAKpmlB,KAAKkqU,KAAKk8Q,IAEfjjG,IAAMijG,IAER,IAAItuP,GAAMip9B,GAAS79zB,GACftrJ,GAAMkp9B,GAAS59zB,GACfnrJ,IAAO+o9B,GAAS39zB,GAChBtrJ,GAAMkp9B,GAAS59zB,GACfzgK,GAAKoV,GAAM7U,GAAK2U,GAAM1U,GACtBP,GAAKoV,GAAM9U,GAAK4U,GAAM3U,GACtBN,GAAKkV,GAAM97W,GAAI47W,GAAMhnU,GACrBiyT,GAAKkV,GAAM/7W,GAAI67W,GAAMjnU,GAErBowxC,GAAa,IADRp+9B,GAAKF,KAAOE,GAAKF,KAAOG,GAAKF,KAAOE,GAAKF,KACzB,IACrBq+9B,GAAa,IACfA,GAAa,GAEf,IAAIC,GAAUjhzC,KAAKkqU,KAAK82+B,IACpBJ,KAAU5kU,KACZilU,IAAWA,IAEb,IAAIC,GAAK,IAAOx+9B,GAAKE,IAAMq+9B,IAAWp+9B,GAAKF,IACvCw+9B,GAAK,IAAOx+9B,GAAKE,IAAMo+9B,IAAWr+9B,GAAKF,IACvC0+9B,GAAMphzC,KAAKmqU,MAAMwY,GAAKw+9B,GAAIz+9B,GAAKw+9B,IAE/BG,GADMrhzC,KAAKmqU,MAAM0Y,GAAKs+9B,GAAIv+9B,GAAKs+9B,IAChBE,GACfC,GAAS,GAAe,IAAVT,GAChBS,IAAU,EAAIrhzC,KAAK4uK,GACVyyoC,GAAS,GAAe,IAAVT,KACvBS,IAAU,EAAIrhzC,KAAK4uK,IAIrB,QAFInvF,GAAWz/E,KAAK0wH,KAAK1wH,KAAK+hG,IAAIs/sC,IAAoB,GAAVrhzC,KAAK4uK,GAAW,QACxDj3M,EAAS,GACJ0vD,GAAI,EAAGA,GAAIo4D,GAAUp4D,KAG5B1vD,EAAO0vD,IAAK,CAAC65xC,GAAIC,GAFPC,GAAM/5xC,GAAIg6xC,GAAS5huC,GACnB2huC,IAAO/5xC,GAAI,GAAKg6xC,GAAS5huC,GACJyja,GAAIC,GAAI29zB,GAAQC,IAEjD,OAAOpp1C,CACT,EACIgp1C,GAAkB,SAAyBx89B,GAAIC,GAAIg99B,GAAKxZ,GAAK1kzB,GAAIC,GAAI29zB,GAAQC,IAC/E,IAAIjp9B,GAAMip9B,GAAS79zB,GACftrJ,IAAOkp9B,GAAS39zB,GAChBprJ,GAAM+o9B,GAAS59zB,GACfrrJ,GAAMkp9B,GAAS59zB,GACfm+zB,GAAU,IAAO1Z,GAAMwZ,IACvB5s1C,GAAI,EAAI,EAAIwrC,KAAK0hV,IAAc,GAAV4/9B,IAAiBthzC,KAAK0hV,IAAc,GAAV4/9B,IAAiBthzC,KAAK0hV,IAAI4/9B,IACzE1+9B,GAAKuB,GAAKnkV,KAAKyhV,IAAI2/9B,IAAO5s1C,GAAIwrC,KAAK0hV,IAAI0/9B,IACvCv+9B,GAAKuB,GAAKpkV,KAAK0hV,IAAI0/9B,IAAO5s1C,GAAIwrC,KAAKyhV,IAAI2/9B,IACvCzo9B,GAAKxU,GAAKnkV,KAAKyhV,IAAImm9B,IACnBhv8B,GAAKxU,GAAKpkV,KAAK0hV,IAAIkm9B,IACnBnv8B,GAAKE,GAAKnkY,GAAIwrC,KAAK0hV,IAAIkm9B,IACvBlv8B,GAAKE,GAAKpkY,GAAIwrC,KAAKyhV,IAAImm9B,IAC3B,MAAO,CAAC9v8B,GAAMlV,GAAKgV,GAAM/U,GAAIkV,GAAMnV,GAAKiV,GAAMhV,GAAIiV,GAAMW,GAAKb,GAAMc,GAAIX,GAAMU,GAAKZ,GAAMa,GAAIZ,GAAMa,GAAKf,GAAMgB,GAAIb,GAAMY,GAAKd,GAAMe,GACpI,EACI2o9B,GAAuB,WACzB,SAASA,KACP3/I,EAAgBvtsC,KAAMkt1C,GACxB,CACAp/I,SAAao/I,GAAS,KAAM,CAAC,CAC3B9r1C,IAAK,QACLG,MAAO,SAAeo1P,GAAKzzP,IACzB,IAAI889B,GAzVE,SAAe989B,IACzB,IAAIiq1C,GAOFv5vB,GANE2tG,GAAM,GACN1gf,GAAO,GACPusoC,GAAS,GACTC,IAAe,EACf7p1C,GAAS,EACT8ioC,GAAY45M,EAA2Bh90C,IAE3C,IACE,IAAKojoC,GAAU5ymC,MAAOkgkB,GAAQ0yiB,GAAU10hC,KAAK4uI,MAAO,CAClD,IAAIrpI,GAAIy8e,GAAMrylB,MACd,GAAqB,MAAjBo0Y,GAAWx+R,IACb3zG,GAASmyY,GAAWx+R,IAChBg2uC,KAEEC,GAAOxl0C,OAAS,IAClBi5L,GAAKA,GAAKj5L,SAAWwl0C,IAEvB7rpB,GAAIA,GAAI35qB,QAAU,CAChBul0C,IAAKA,GACLtsoC,KAAMA,IAERA,GAAO,GACPusoC,GAAS,GACTC,IAAe,GAEjBF,GAAMh2uC,WACG,CAAC,IAAK,KAAKpnE,SAASonE,KAAY,MAANA,IAAai2uC,GAAOxl0C,OAAS,GAAmC,MAA9Bwl0C,GAAOA,GAAOxl0C,OAAS,IAAoB,MAANuvF,IAAak2uC,GAAc,CACrI,GAAsB,IAAlBD,GAAOxl0C,OACT,SAEEi5L,GAAKj5L,SAAWpkB,IAElB+9rB,GAAIA,GAAI35qB,QAAU,CAChBul0C,IAAKA,GACLtsoC,KAAMA,IAERA,GAAO,EAAEusoC,IAEG,MAARD,KACFA,GAAM,KAEI,MAARA,KACFA,GAAM,MAGRtsoC,GAAKA,GAAKj5L,SAAWwl0C,GAEvBC,GAAqB,MAANl2uC,GAEfi2uC,GAAS,CAAC,IAAK,KAAKr9yC,SAASonE,IAAKA,GAAI,EACxC,MACEi2uC,IAAUj2uC,GACA,MAANA,KACFk2uC,IAAe,EAGrB,CACF,OAAS/ryC,IACPgllC,GAAUpvmC,EAAEoqB,GACd,SACEgllC,GAAU9plC,GACZ,CACA,OAAI4wyC,GAAOxl0C,OAAS,IACdi5L,GAAKj5L,SAAWpkB,IAElB+9rB,GAAIA,GAAI35qB,QAAU,CAChBul0C,IAAKA,GACLtsoC,KAAMA,IAERA,GAAO,EAAEusoC,IAEG,MAARD,KACFA,GAAM,KAEI,MAARA,KACFA,GAAM,MAGRtsoC,GAAKA,GAAKj5L,SAAWwl0C,IAGzB7rpB,GAAIA,GAAI35qB,QAAU,CAChBul0C,IAAKA,GACLtsoC,KAAMA,IAED0gf,EACT,CAiQqBhliB,CAAMr5J,KAhQd,SAAe889B,GAAUrpuB,IAEpCm5H,GAAKC,GAAKm7R,GAAKC,GAAKw1T,GAAKC,GAAK,EAE9B,QAAS5t5B,GAAI,EAAGA,GAAIgt6B,GAASp48B,OAAQorC,KAAK,CACxC,IAAImkD,GAAI6o3B,GAASht6B,IACa,mBAAnBi5xC,GAAQ90uC,GAAEg2uC,MACnBlB,GAAQ90uC,GAAEg2uC,KAAKx2lC,GAAKx/I,GAAE0pG,KAE1B,CACF,CAuPM2+d,CAAOwgT,GAAUrpuB,GACnB,KAEKu2lC,EACT,CAZ2B,GAavBI,GAAW3M,GAAUvqwC,OAGrBm3wC,IAAgB5hzC,KAAKkqU,KAAK,GAAK,GAAO,EAA9B,EACR23+B,GAAc,CAChBC,WAAY,WACV,OAAAzt1C,KAAKsq0C,KAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAErBtq0C,KAAK0t1C,UAAY,EAC1B,EACA35vC,KAAM,WACJ,OAAA/zF,KAAK0t1C,UAAU7q1C,KAAK7C,KAAKsq0C,KAAKx3yC,SAEvB9yB,KAAKgr0C,WAAW,IACzB,EACAvs2B,QAAS,WACP,OAAAz+d,KAAKsq0C,KAAOtq0C,KAAK0t1C,UAAU33yC,OAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAC7C/1C,KAAKgr0C,WAAW,IACzB,EACA9l8B,UAAW,WACT,OAAOllY,KAAKgr0C,WAAW,IACzB,EACAh4qB,UAAW,SAAmBvnc,IAC5B,OAAOzrN,KAAKgr0C,WAAW,GAAG9gxC,OAAOojyC,GAAS7hoC,IAAI,MAChD,EACAkioC,YAAa,CACXC,KAAM,EACNC,MAAO,EACPC,OAAQ,GAEV/yX,QAAS,SAAiB5j3B,IACxB,MAAiB,iBAANA,KACTA,GAAIn3G,KAAK2t1C,YAAYx2uC,GAAEjxG,gBAElBlG,KAAKgr0C,WAAW,GAAG9gxC,OAAOitD,GAAG,MACtC,EACA42uC,aAAc,CACZC,MAAO,EACPH,MAAO,EACPI,MAAO,GAETn7rB,SAAU,SAAkBlthB,IAC1B,MAAiB,iBAANA,KACTA,GAAI5lI,KAAK+t1C,aAAanotC,GAAE1/H,gBAEnBlG,KAAKgr0C,WAAW,GAAG9gxC,OAAO07E,GAAG,MACtC,EACAo0sC,WAAY,SAAoB3rwC,IAC9B,OAAOruE,KAAKgr0C,WAAW,GAAG9gxC,OAAOojyC,GAASj/wC,IAAI,MAChD,EACA6klB,KAAM,SAActroB,IAClB,IAAI/lB,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Ei4zC,GAAiBtm0C,GAOrB,GANKxlB,MAAMq3G,QAAQ7xF,MACjBA,GAAS,CAACA,GAAQ/lB,GAAQu7V,OAASx1U,MAEzBA,GAAO48B,MAAM,SAAU78B,IACjC,OAAO64B,OAAO+8T,SAAS51V,KAAMA,GAAI,CACnC,GAEE,MAAM,IAAIi2E,MAAM,QAAQ1zC,OAAO/kD,KAAKC,UAAU8o1C,IAAiB,MAAMhkyC,OAAO/kD,KAAKC,UAAUvD,IAAU,6DAEvG+lB,UAASA,GAAOvlB,IAAIir1C,IAAU9q1C,KAAK,KAC5BxC,KAAKgr0C,WAAW,IAAI9gxC,OAAOtiC,GAAQ,MAAMsiC,OAAOojyC,GAASzr1C,GAAQqwI,OAAS,GAAI,MACvF,EACAi8sC,OAAQ,WACN,OAAOnu1C,KAAKgr0C,WAAW,SACzB,EACA1n8B,OAAQ,SAAgB37W,GAAG40C,IACzB,OAAOv8D,KAAKgr0C,WAAW,GAAG9gxC,OAAOojyC,GAAS3l0C,IAAI,KAAKuiC,OAAOojyC,GAAS/wxC,IAAI,MACzE,EACA0oU,OAAQ,SAAgBt9W,GAAG40C,IACzB,OAAOv8D,KAAKgr0C,WAAW,GAAG9gxC,OAAOojyC,GAAS3l0C,IAAI,KAAKuiC,OAAOojyC,GAAS/wxC,IAAI,MACzE,EACAi4lB,cAAe,SAAuB45rB,GAAMC,GAAMC,GAAMC,GAAM5m0C,GAAG40C,IAC/D,OAAOv8D,KAAKgr0C,WAAW,GAAG9gxC,OAAOojyC,GAASc,IAAO,KAAKlkyC,OAAOojyC,GAASe,IAAO,KAAKnkyC,OAAOojyC,GAASgB,IAAO,KAAKpkyC,OAAOojyC,GAASiB,IAAO,KAAKrkyC,OAAOojyC,GAAS3l0C,IAAI,KAAKuiC,OAAOojyC,GAAS/wxC,IAAI,MACzL,EACAs1f,iBAAkB,SAA0B2yD,GAAKC,GAAK98lB,GAAG40C,IACvD,OAAOv8D,KAAKgr0C,WAAW,GAAG9gxC,OAAOojyC,GAAS9ouB,IAAM,KAAKt6jB,OAAOojyC,GAAS7ouB,IAAM,KAAKv6jB,OAAOojyC,GAAS3l0C,IAAI,KAAKuiC,OAAOojyC,GAAS/wxC,IAAI,MAC/H,EACAy8c,KAAM,SAAcrxf,GAAG40C,GAAGkvJ,GAAGg7B,IAC3B,OAAOzmP,KAAKgr0C,WAAW,GAAG9gxC,OAAOojyC,GAAS3l0C,IAAI,KAAKuiC,OAAOojyC,GAAS/wxC,IAAI,KAAKrS,OAAOojyC,GAAS7hoC,IAAI,KAAKvhK,OAAOojyC,GAAS7mmC,IAAI,OAC3H,EACA+nmC,YAAa,SAAqB7m0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG3/O,IACnC,MAALA,KACFA,GAAI,GAIN,IAAIqwG,IAFJrwG,GAAI6kC,KAAK4oB,IAAIztD,GAAG,GAAM2kN,GAAG,GAAMg7B,MAElB,EAAM8mmC,IACnB,OAAAvt1C,KAAKsjY,OAAO37W,GAAI7gB,GAAGy1D,IACnBv8D,KAAKilY,OAAOt9W,GAAI8jM,GAAI3kN,GAAGy1D,IACvBv8D,KAAKw0pB,cAAc7soB,GAAI8jM,GAAIt0G,GAAG56C,GAAG50C,GAAI8jM,GAAGlvJ,GAAI46C,GAAGxvF,GAAI8jM,GAAGlvJ,GAAIz1D,IAC1D9G,KAAKilY,OAAOt9W,GAAI8jM,GAAGlvJ,GAAIkqL,GAAI3/O,IAC3B9G,KAAKw0pB,cAAc7soB,GAAI8jM,GAAGlvJ,GAAIkqL,GAAItvI,GAAGxvF,GAAI8jM,GAAIt0G,GAAG56C,GAAIkqL,GAAG9+N,GAAI8jM,GAAI3kN,GAAGy1D,GAAIkqL,IACtEzmP,KAAKilY,OAAOt9W,GAAI7gB,GAAGy1D,GAAIkqL,IACvBzmP,KAAKw0pB,cAAc7soB,GAAIwvF,GAAG56C,GAAIkqL,GAAG9+N,GAAG40C,GAAIkqL,GAAItvI,GAAGxvF,GAAG40C,GAAIkqL,GAAI3/O,IAC1D9G,KAAKilY,OAAOt9W,GAAG40C,GAAIz1D,IACnB9G,KAAKw0pB,cAAc7soB,GAAG40C,GAAI46C,GAAGxvF,GAAIwvF,GAAG56C,GAAG50C,GAAI7gB,GAAGy1D,IACvCv8D,KAAKklY,WACd,EACAyuR,QAAS,SAAiBhsoB,GAAG40C,GAAGurT,GAAIivyB,IAExB,MAANA,KACFA,GAAKjvyB,IAIP,IAAI8G,GAAK9G,GAAKyl+B,GACV1+9B,GAAKkoyB,GAAKw2L,GACVr8L,IAJJvpoC,IAAKmgW,IAIa,EAALA,GACTipyB,IAJJx0lC,IAAKw6lC,IAIa,EAALA,GACT03L,GAAK9m0C,GAAImgW,GACT4m+B,GAAKnyxC,GAAIw6lC,GACb,OAAA/2pC,KAAKsjY,OAAO37W,GAAG+m0C,IACf1u1C,KAAKw0pB,cAAc7soB,GAAG+m0C,GAAK7/9B,GAAI4/9B,GAAK7/9B,GAAIryT,GAAGkyxC,GAAIlyxC,IAC/Cv8D,KAAKw0pB,cAAci6rB,GAAK7/9B,GAAIryT,GAAG20lC,GAAIw9L,GAAK7/9B,GAAIqiyB,GAAIw9L,IAChD1u1C,KAAKw0pB,cAAc08f,GAAIw9L,GAAK7/9B,GAAI4/9B,GAAK7/9B,GAAImiyB,GAAI09L,GAAI19L,IACjD/wpC,KAAKw0pB,cAAci6rB,GAAK7/9B,GAAImiyB,GAAIppoC,GAAG+m0C,GAAK7/9B,GAAIlnW,GAAG+m0C,IACxC1u1C,KAAKklY,WACd,EACA5gP,OAAQ,SAAgB38H,GAAG40C,GAAGgoF,IAC5B,OAAOvkJ,KAAK2zpB,QAAQhsoB,GAAG40C,GAAGgoF,GAC5B,EACA6+O,IAAK,SAAaz7W,GAAG40C,GAAGgoF,GAAQwpO,GAAYE,GAAU4lS,IAC/B,MAAjBA,KACFA,IAAgB,GAElB,IAAI86rB,GAAS,EAAMhjzC,KAAK4uK,GACpBq0oC,GAAU,GAAMjjzC,KAAK4uK,GACrBs0oC,GAAW5g+B,GAAWF,GACtBpiV,KAAK+hG,IAAImhtC,IAAYF,GAEvBE,GAAWF,GACW,IAAbE,IAAkBh7rB,KAAkBg7rB,GAAW,IAGxDA,IADUh7rB,IAAgB,EAAK,GACd86rB,GAASE,IAE5B,IAAIC,GAAUnjzC,KAAK0wH,KAAK1wH,KAAK+hG,IAAImhtC,IAAYD,IACzCG,GAASF,GAAWC,GACpBE,GAAYD,GAASH,GAAUrB,GAAQhpsC,GACvC0qsC,GAASlh+B,GAETmh+B,IAAWvjzC,KAAK0hV,IAAI4h+B,IAAUD,GAC9BG,GAAUxjzC,KAAKyhV,IAAI6h+B,IAAUD,GAE7Btq9B,GAAK/8W,GAAIgkB,KAAKyhV,IAAI6h+B,IAAU1qsC,GAC5BogP,GAAKpoU,GAAI5wB,KAAK0hV,IAAI4h+B,IAAU1qsC,GAEhCvkJ,KAAKsjY,OAAOoB,GAAIC,IAChB,QAASyq9B,GAAS,EAAGA,GAASN,GAASM,KAAU,CAE/C,IAAIhB,GAAO1p9B,GAAKwq9B,GACZb,GAAO1p9B,GAAKwq9B,GAEhBF,IAAUF,GAEVrq9B,GAAK/8W,GAAIgkB,KAAKyhV,IAAI6h+B,IAAU1qsC,GAC5BogP,GAAKpoU,GAAI5wB,KAAK0hV,IAAI4h+B,IAAU1qsC,GAE5B2qsC,IAAWvjzC,KAAK0hV,IAAI4h+B,IAAUD,GAC9BG,GAAUxjzC,KAAKyhV,IAAI6h+B,IAAUD,GAK7Bhv1C,KAAKw0pB,cAAc45rB,GAAMC,GAHd3p9B,GAAKwq9B,GACLvq9B,GAAKwq9B,GAE2Bzq9B,GAAIC,GACjD,CACA,OAAO3kY,IACT,EACAqv1C,QAAS,WACP,QAAS11L,GAAO1joC,UAAUrO,OAAQo5W,GAAS,IAAI5+X,MAAMu3pC,IAAO1tyB,GAAO,EAAGA,GAAO0tyB,GAAM1tyB,KACjF+U,GAAO/U,IAAQh2V,UAAUg2V,IAE3BjsX,KAAKsjY,OAAOttW,MAAMh2B,KAAM8/0C,GAAmB9+8B,GAAO10N,SAAW,KAC7D,QAASwwF,GAAK,EAAG4kZ,GAAU1gR,GAAQlkI,GAAK4kZ,GAAQ95nB,OAAQk1O,KAEtD98P,KAAKilY,OAAOjvW,MAAMh2B,KAAM8/0C,GADZp+rB,GAAQ5kZ,KACgC,KAEtD,OAAO98P,KAAKklY,WACd,EACAhiY,KAAM,SAAcY,IAClBop1C,UAAQl3zC,MAAMh2B,KAAM8D,IACb9D,IACT,EACAsv1C,aAAc,SAAsB9pzB,IAClC,MAAI,YAAYh8f,KAAKg8f,IACZ,IAEF,EACT,EACAxjZ,KAAM,SAAcvjG,GAAO+mf,IACzB,MAAI,0BAA0Bh8f,KAAKiV,MACjC+mf,GAAO/mf,GACPA,GAAQ,MAENA,IACFz+C,KAAKqqhC,UAAU5r+B,IAEVz+C,KAAKgr0C,WAAW,IAAI9gxC,OAAOlqD,KAAKsv1C,aAAa9pzB,KACtD,EACAphZ,OAAQ,SAAgB3lG,IACtB,OAAIA,IACFz+C,KAAKus0C,YAAY9txC,IAEZz+C,KAAKgr0C,WAAW,IACzB,EACAkP,cAAe,SAAuB7vT,GAAWkiT,GAAa/myB,IACzC,MAAf+myB,KACFA,GAAcliT,IAEhB,IAAIklU,GAAa,0BACjB,OAAIA,GAAW/lzC,KAAK6g/B,MAClB7kf,GAAO6kf,GACPA,GAAY,MAEVklU,GAAW/lzC,KAAK+iyC,MAClB/myB,GAAO+myB,GACPA,GAAcliT,IAEZA,KACFrqhC,KAAKqqhC,UAAUA,IACfrqhC,KAAKus0C,YAAYA,KAEZvs0C,KAAKgr0C,WAAW,IAAI9gxC,OAAOlqD,KAAKsv1C,aAAa9pzB,KACtD,EACAqrH,KAAM,SAAcrrH,IAClB,OAAOxliB,KAAKgr0C,WAAW,IAAI9gxC,OAAOlqD,KAAKsv1C,aAAa9pzB,IAAO,MAC7D,EACAx0f,UAAW,SAAmB23yC,GAAKC,GAAKC,GAAKC,GAAKvpuC,GAAI6vQ,IAEpD,IAAI/gT,GAAIruE,KAAKsq0C,KACTp9U,GAAKpgW,GAAez+kB,GAAG,GACzBu0R,GAAKsqpB,GAAG,GACRh9oB,GAAKg9oB,GAAG,GACR/8oB,GAAK+8oB,GAAG,GACRsgV,GAAKtgV,GAAG,GACRugV,GAAKvgV,GAAG,GACRwgV,GAAKxgV,GAAG,GACV7+6B,GAAE,GAAKu0R,GAAK+l/B,GAAMx4+B,GAAKy4+B,GACvBv6wC,GAAE,GAAK6hS,GAAKy4+B,GAAMnb,GAAKob,GACvBv6wC,GAAE,GAAKu0R,GAAKim/B,GAAM14+B,GAAK24+B,GACvBz6wC,GAAE,GAAK6hS,GAAK24+B,GAAMrb,GAAKsb,GACvBz6wC,GAAE,GAAKu0R,GAAKrjP,GAAK4wP,GAAKif,GAAKq+8B,GAC3Bp/vC,GAAE,GAAK6hS,GAAK3wP,GAAKiutC,GAAKp+8B,GAAKs+8B,GAC3B,IAAIno0C,GAAS,CAACoj1C,GAAKC,GAAKC,GAAKC,GAAKvpuC,GAAI6vQ,IAAI/sX,IAAI,SAAUC,IACtD,OAAOgr1C,GAAShr1C,GAClB,GAAGE,KAAK,KACR,OAAOxC,KAAKgr0C,WAAW,GAAG9gxC,OAAO3kD,GAAQ,OAC3C,EACA6wW,UAAW,SAAmBzuV,GAAG40C,IAC/B,OAAOv8D,KAAKgxC,UAAU,EAAG,EAAG,EAAG,EAAGrpB,GAAG40C,GACvC,EACAi5S,OAAQ,SAAgBoxB,IACtB,IACIrqU,GADA16D,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/E2s8B,GAAMh8lB,GAAQj7V,KAAK4uK,GAAK,IACxB6yK,GAAMzhV,KAAKyhV,IAAIw1mB,IACfv1mB,GAAM1hV,KAAK0hV,IAAIu1mB,IACfj78B,GAAI40C,GAAI,EACZ,GAAsB,MAAlB16D,GAAQymD,OAAgB,CAC1B,IAAIknyC,GAAkB1isB,GAAejrpB,GAAQymD,OAAQ,GAIjDkmU,IAHJ7mW,GAAI6n0C,GAAgB,IAGPni+B,IAFb9wT,GAAIizxC,GAAgB,IAEGpi+B,GACvBzlW,IAFSA,GAAIylW,GAAM7wT,GAAI8wT,GAGvB9wT,IAAKiyT,EACP,CACA,OAAOxuX,KAAKgxC,UAAUo8U,GAAKC,IAAMA,GAAKD,GAAKzlW,GAAG40C,GAChD,EACAk6S,MAAO,SAAeg5+B,GAASC,IAC7B,IACInzxC,GADA16D,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEpE,MAAXy5zC,KACFA,GAAUD,IAEW,iBAAZC,KACT7t1C,GAAU6t1C,GACVA,GAAUD,IAEZ,IAAI9n0C,GAAI40C,GAAI,EACZ,GAAsB,MAAlB16D,GAAQymD,OAAgB,CAC1B,IAAIqnyC,GAAmB7isB,GAAejrpB,GAAQymD,OAAQ,GACtD3gC,GAAIgo0C,GAAiB,GACrBpzxC,GAAIozxC,GAAiB,GACrBho0C,IAAK8n0C,GAAU9n0C,GACf40C,IAAKmzxC,GAAUnzxC,EACjB,CACA,OAAOv8D,KAAKgxC,UAAUy+yC,GAAS,EAAG,EAAGC,GAAS/n0C,GAAG40C,GACnD,GAEEqzxC,GAAe,CACjB,IAAK,IACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAEHn7O,GAAa,q2GAAq2GlymC,MAAM,OACx3Gst1C,GAAuB,WAOzB,SAASA,GAAQ5qwB,IACfsonB,EAAgBvtsC,KAAM6v1C,IACtB7v1C,KAAKillB,SAAWA,GAChBjllB,KAAKuqa,WAAa,CAAC,EACnBvqa,KAAK8v1C,YAAc,CAAC,EACpB9v1C,KAAK+v1C,cAAgB,CAAC,EACtB/v1C,KAAKgw1C,UAAY,CAAC,EAClBhw1C,KAAKu8J,QAELv8J,KAAKiw1C,WAAa,IAAI7t1C,MAAM,KAC5B,QAASm4kB,GAAO,EAAGA,IAAQ,IAAKA,KAC9Bv6kB,KAAKiw1C,WAAW11wB,IAAQv6kB,KAAK8v1C,YAAYr7O,GAAWl6hB,KAEtDv6kB,KAAK2lgB,KAAO3lgB,KAAKuqa,WAAW2l7B,SAAY3t1C,MAAM,OAAOF,IAAI,SAAU60B,IACjE,OAAQA,EACV,GACAl3B,KAAKuv0C,WAAavv0C,KAAKuqa,WAAW4l7B,UAAe,GACjDnw1C,KAAKyv0C,YAAczv0C,KAAKuqa,WAAW6l7B,WAAgB,GACnDpw1C,KAAKg+0C,UAAYh+0C,KAAKuqa,WAAW8l7B,SAAc,GAC/Crw1C,KAAKsw1C,YAActw1C,KAAKuqa,WAAWgm7B,WAAgB,GACnDvw1C,KAAKww1C,QAAUxw1C,KAAK2lgB,KAAK,GAAK3lgB,KAAK2lgB,KAAK,IAAM3lgB,KAAKuv0C,SAAWvv0C,KAAKyv0C,UACrE,CACA3hI,OA5BAA,EAAa+hJ,GAAS,KAAM,CAAC,CAC3Bzu1C,IAAK,OACLG,MAAO,SAAc0d,IACnB,OAAO,IAAI4w0C,GAAQnmyC,EAAGmvwC,aAAa55yC,GAAU,QAC/C,KAwBF6urC,EAAa+hJ,GAAS,CAAC,CACrBzu1C,IAAK,QACLG,MAAO,WACL,IAEEqylB,GAFEv/J,GAAU,GACViysB,GAAY45M,EAA2Blg1C,KAAKillB,SAAS1ilB,MAAM,OAE/D,IACE,IAAK+joC,GAAU5ymC,MAAOkgkB,GAAQ0yiB,GAAU10hC,KAAK4uI,MAAO,CAClD,IACIp2M,GACAyU,GAFA07N,GAAOq5U,GAAMrylB,MAGjB,GAAI6oC,GAAQmwO,GAAKnwO,MAAM,eACrBiqZ,GAAUjqZ,GAAM,QAElB,GAAWA,GAAQmwO,GAAKnwO,MAAM,aAC5BiqZ,GAAU,QAGZ,OAAQA,IACN,IAAK,cAEH,IAAIjzb,IADJgpC,GAAQmwO,GAAKnwO,MAAM,kBACH,GACZ7oC,GAAQ6oC,GAAM,IACdyU,GAAI7+C,KAAKuqa,WAAWnpa,MACjBgB,MAAMq3G,QAAQ56D,MACjBA,GAAI7+C,KAAKuqa,WAAWnpa,IAAO,CAACy9C,KAE9BA,GAAEh8C,KAAKtB,KAEPvB,KAAKuqa,WAAWnpa,IAAOG,GAEzB,MACF,IAAK,cACH,IAAK,SAASioC,KAAK+wO,IACjB,SAEF,IAAI34Q,GAAO24Q,GAAKnwO,MAAM,sBAAsB,GAC5CpqC,KAAK8v1C,YAAYlu1C,KAAS24Q,GAAKnwO,MAAM,oBAAoB,GACzD,MACF,IAAK,aACHA,GAAQmwO,GAAKnwO,MAAM,2CAEjBpqC,KAAKgw1C,UAAU5lzC,GAAM,GAAK,KAAOA,GAAM,IAAM5e,SAAS4e,GAAM,KAIpE,CACF,OAASkX,IACPgllC,GAAUpvmC,EAAEoqB,GACd,SACEgllC,GAAU9plC,GACZ,CACF,GACC,CACDp7C,IAAK,aACLG,MAAO,SAAoByzE,IAEzB,QADI+9B,GAAM,GACD//C,GAAI,EAAGy0E,GAAMzyD,GAAKptD,OAAQorC,GAAIy0E,GAAKz0E,KAAK,CAC/C,IAAIunhB,GAAOvlgB,GAAKqsI,WAAWruJ,IAE3B+/C,GAAIlwG,MADJ03kB,GAAOq1wB,GAAar1wB,KAASA,IACfpyjB,SAAS,IACzB,CACA,OAAO4qF,EACT,GACC,CACD3xG,IAAK,kBACLG,MAAO,SAAyBwjD,IAE9B,QADI0ryC,GAAS,GACJz9xC,GAAI,EAAGy0E,GAAM1iF,GAAOn9B,OAAQorC,GAAIy0E,GAAKz0E,KAAK,CACjD,IAAIyif,GAAW1wf,GAAOs8J,WAAWruJ,IACjCy9xC,GAAO5t1C,KAAK7C,KAAK0w1C,iBAAiBj7yB,IACpC,CACA,OAAOg7yB,EACT,GACC,CACDrv1C,IAAK,mBACLG,MAAO,SAA0Byh1C,IAC/B,OAAOvuO,GAAWm7O,GAAa5M,KAAcA,KAAc,SAC7D,GACC,CACD5h1C,IAAK,eACLG,MAAO,SAAsBqu0C,IAC3B,OAAO5v0C,KAAK8v1C,YAAYlgB,KAAU,CACpC,GACC,CACDxu0C,IAAK,cACLG,MAAO,SAAqBm3H,GAAM2iJ,IAChC,OAAOr7Q,KAAKgw1C,UAAUt3tC,GAAO,KAAO2iJ,KAAU,CAChD,GACC,CACDj6Q,IAAK,oBACLG,MAAO,SAA2Bkv1C,IAEhC,QADIE,GAAW,GACN/yzC,GAAQ,EAAGA,GAAQ6yzC,GAAO7o0C,OAAQgW,KAAS,CAClD,IAAI86F,GAAO+3tC,GAAO7yzC,IACdy9O,GAAQo1kC,GAAO7yzC,GAAQ,GAC3B+yzC,GAAS9t1C,KAAK7C,KAAK4w1C,aAAal4tC,IAAQ14H,KAAK6w1C,YAAYn4tC,GAAM2iJ,IACjE,CACA,OAAOs1kC,EACT,KAEKd,EACT,CAnI2B,GAoIvBiB,GAAuB,WACzB,SAASA,KACPvjJ,EAAgBvtsC,KAAM8w1C,GACxB,CACAhjJ,SAAagjJ,GAAS,CAAC,CACrB1v1C,IAAK,SACLG,MAAO,WACL,MAAM,IAAIq8F,MAAM,oCAClB,GACC,CACDx8F,IAAK,gBACLG,MAAO,WACL,MAAM,IAAIq8F,MAAM,oCAClB,GACC,CACDx8F,IAAK,MACLG,MAAO,WACL,OAA0B,MAAnBvB,KAAKonrC,WAAqBpnrC,KAAKonrC,WAAapnrC,KAAKonrC,WAAapnrC,KAAK4hC,SAAS+0F,KACrF,GACC,CACDv1H,IAAK,WACLG,MAAO,WACL,IAAIvB,KAAKyo1C,UAA+B,MAAnBzo1C,KAAKonrC,WAG1B,OAAApnrC,KAAK47Y,QACE57Y,KAAKyo1C,UAAW,CACzB,GACC,CACDrn1C,IAAK,QACLG,MAAO,WACL,MAAM,IAAIq8F,MAAM,oCAClB,GACC,CACDx8F,IAAK,aACLG,MAAO,SAAoBw/D,GAAMgwxC,IAK/B,OAJkB,MAAdA,KACFA,IAAa,IAGP/w1C,KAAKuv0C,UADHwhB,GAAa/w1C,KAAKww1C,QAAU,GACRxw1C,KAAKyv0C,WAAa,IAAO1uwC,EACzD,KAEK+vxC,EACT,CA5C2B,GA6CvBE,GAAiB,CACnBC,QAAS,WACP,OAAOvnyC,EAAGmvwC,aAAasmB,qBAAiC,OAC1D,EACA,eAAgB,WACd,OAAOz1xC,EAAGmvwC,aAAasmB,0BAAsC,OAC/D,EACA,kBAAmB,WACjB,OAAOz1xC,EAAGmvwC,aAAasmB,6BAAyC,OAClE,EACA,sBAAuB,WACrB,OAAOz1xC,EAAGmvwC,aAAasmB,iCAA6C,OACtE,EACA+R,UAAW,WACT,OAAOxnyC,EAAGmvwC,aAAasmB,uBAAmC,OAC5D,EACA,iBAAkB,WAChB,OAAOz1xC,EAAGmvwC,aAAasmB,4BAAwC,OACjE,EACA,oBAAqB,WACnB,OAAOz1xC,EAAGmvwC,aAAasmB,+BAA2C,OACpE,EACA,wBAAyB,WACvB,OAAOz1xC,EAAGmvwC,aAAasmB,mCAA+C,OACxE,EACA,cAAe,WACb,OAAOz1xC,EAAGmvwC,aAAasmB,yBAAqC,OAC9D,EACA,aAAc,WACZ,OAAOz1xC,EAAGmvwC,aAAasmB,wBAAoC,OAC7D,EACA,eAAgB,WACd,OAAOz1xC,EAAGmvwC,aAAasmB,0BAAsC,OAC/D,EACA,mBAAoB,WAClB,OAAOz1xC,EAAGmvwC,aAAasmB,8BAA0C,OACnE,EACA/ioC,OAAQ,WACN,OAAO1yJ,EAAGmvwC,aAAasmB,oBAAgC,OACzD,EACAgS,aAAc,WACZ,OAAOznyC,EAAGmvwC,aAAasmB,0BAAsC,OAC/D,GAEEiS,GAA4B,SAAUC,IACxC3kJ,EAAU0kJ,GAAcC,IACxB,IAAI7itC,GAASq+jC,EAAaukJ,IAC1B,SAASA,GAAaxvzC,GAAUhgC,GAAMoI,IACpC,IAAI4qB,GACJ24qC,EAAgBvtsC,KAAMox1C,KACtBx8zC,GAAQ45G,GAAOzlG,KAAK/oC,OACd4hC,SAAWA,GACjBhN,GAAMhzB,KAAOA,GACbgzB,GAAM5qB,GAAKA,GACX4qB,GAAM+3M,KAAO,IAAIkjnC,GAAQmB,GAAep8zC,GAAMhzB,SAC9C,IAAI0v1C,GAAa18zC,GAAM+3M,KACvB/3M,UAAM26yC,SAAW+hB,GAAW/hB,SAC5B36yC,GAAM66yC,UAAY6hB,GAAW7hB,UAC7B76yC,GAAM+we,KAAO2r1B,GAAW3r1B,KACxB/we,GAAM47zC,QAAUc,GAAWd,QAC3B57zC,GAAMopzC,QAAUsT,GAAWtT,QAC3BppzC,GAAM07zC,UAAYgB,GAAWhB,UACtB17zC,EACT,CACAk5qC,SAAasjJ,GAAc,CAAC,CAC1Bhw1C,IAAK,QACLG,MAAO,WACL,OAAAvB,KAAKonrC,WAAW5gqC,KAAO,CACrBiv6B,KAAM,OACN87Z,SAAUvx1C,KAAK4B,KACfqo0C,QAAS,QACTunB,SAAU,mBAELxx1C,KAAKonrC,WAAW5tjC,KACzB,GACC,CACDp4H,IAAK,SACLG,MAAO,SAAgByzE,IAKrB,QAJIs+U,GAAUtzZ,KAAK2sO,KAAK8knC,WAAWz8wC,IAC/By7wC,GAASzw1C,KAAK2sO,KAAK+knC,gBAAgB,GAAGxnyC,OAAO8qB,KAC7C27wC,GAAW3w1C,KAAK2sO,KAAKglnC,kBAAkBlB,IACvCvjJ,GAAY,GACPl6oC,GAAI,EAAGA,GAAIy9xC,GAAO7o0C,OAAQorC,KAEjCk6oC,GAAUrqsC,KAAK,CACbit0C,SAAU6gB,GAAS39xC,IACnB+8wC,SAAU,EACV7n8B,QAAS,EACT6qlB,QAAS,EACT88W,aAAc7v0C,KAAK2sO,KAAKiknC,aANdH,GAAOz9xC,OASrB,MAAO,CAACsgW,GAAS45yB,GACnB,GACC,CACD9rsC,IAAK,gBACLG,MAAO,SAAuBwjD,GAAQgc,IACpC,IAIE6yhB,GAJE68vB,GAASzw1C,KAAK2sO,KAAK+knC,gBAAgB,GAAGxnyC,OAAOnF,KAE7CtR,GAAQ,EACR6ylC,GAAY45M,EAFDlg1C,KAAK2sO,KAAKglnC,kBAAkBlB,KAI3C,IACE,IAAKnqN,GAAU5ymC,MAAOkgkB,GAAQ0yiB,GAAU10hC,KAAK4uI,MAE3C/sM,IADcmgjB,GAAMrylB,KAGxB,OAAS+/C,IACPgllC,GAAUpvmC,EAAEoqB,GACd,SACEgllC,GAAU9plC,GACZ,CAEA,OAAO/I,IADKstB,GAAO,IAErB,IACE,CAAC,CACH3/D,IAAK,iBACLG,MAAO,SAAwBK,IAC7B,OAAOA,MAAQov1C,EACjB,KAEKI,EACT,CA9EgC,CA8E9BN,IACEx8O,GAAQ,SAAer/hC,IACzB,MAAO,OAAO/qB,OAAO+qB,GAAI9sD,SAAS,KAAK2K,OAAM,EAC/C,EACI8+zC,GAA4B,SAAUP,IACxC3kJ,EAAUklJ,GAAcP,IACxB,IAAI7itC,GAASq+jC,EAAa+kJ,IAC1B,SAASA,GAAahwzC,GAAU+qM,GAAM3iO,IACpC,IAAI4qB,GACJ24qC,SAAgBvtsC,KAAM4x1C,KACtBh9zC,GAAQ45G,GAAOzlG,KAAK/oC,OACd4hC,SAAWA,GACjBhN,GAAM+3M,KAAOA,GACb/3M,GAAM5qB,GAAKA,GACX4qB,GAAMi9zC,OAASj9zC,GAAM+3M,KAAKmlnC,eAC1Bl9zC,GAAM+6yC,QAAU,CAAC,CAAC,IAClB/6yC,GAAMm9zC,OAAS,CAACn9zC,GAAM+3M,KAAKqlnC,SAAS,GAAGniB,cACvCj7yC,GAAMhzB,KAAOgzB,GAAM+3M,KAAKslnC,eACxBr9zC,GAAM6hV,MAAQ,IAAO7hV,GAAM+3M,KAAKulnC,WAChCt9zC,GAAM26yC,SAAW36yC,GAAM+3M,KAAKyrb,OAASxjoB,GAAM6hV,MAC3C7hV,GAAM66yC,UAAY76yC,GAAM+3M,KAAKqumC,QAAUpmzC,GAAM6hV,MAC7C7hV,GAAMopzC,QAAUppzC,GAAM+3M,KAAKqxmC,QAAUppzC,GAAM6hV,MAC3C7hV,GAAM07zC,UAAY17zC,GAAM+3M,KAAK2jnC,UAAY17zC,GAAM6hV,MAC/C7hV,GAAM47zC,QAAU57zC,GAAM+3M,KAAK6jnC,QAAU57zC,GAAM6hV,MAC3C7hV,GAAM+we,KAAO/we,GAAM+3M,KAAKg5R,MACiB,IAArC/je,GAAS//B,QAAQsw1C,kBACnBv9zC,GAAMw9zC,YAAc1v1C,OAAO+rI,OAAO,OAE7B75G,EACT,CACAk5qC,SAAa8jJ,GAAc,CAAC,CAC1Bxw1C,IAAK,YACLG,MAAO,SAAmByzE,GAAM7tC,IAG9B,QAFI0/J,GAAM7mM,KAAK2sO,KAAK5rF,OAAO/rE,GAAM7tC,IAExB6rB,GAAI,EAAGA,GAAI6zI,GAAIqmgC,UAAUtlrC,OAAQorC,KAAK,CAC7C,IAAIylE,GAAWouE,GAAIqmgC,UAAUl6oC,IAC7B,QAAS5xD,MAAOq3H,GACdA,GAASr3H,KAAQpB,KAAKy2W,MAExBh+O,GAASo3sC,aAAehpoC,GAAI4ppC,OAAOz9xC,IAAG68wC,aAAe7v0C,KAAKy2W,KAC5D,CACA,OAAO5vK,EACT,GACC,CACDzlM,IAAK,eACLG,MAAO,SAAsByzE,IAC3B,IAAKh1E,KAAKoy1C,YACR,OAAOpy1C,KAAKqy1C,UAAUr9wC,IAExB,IAAIune,GACJ,GAAIA,GAASv8iB,KAAKoy1C,YAAYp9wC,IAC5B,OAAOune,GAET,IAAI11W,GAAM7mM,KAAKqy1C,UAAUr9wC,IACzB,OAAAh1E,KAAKoy1C,YAAYp9wC,IAAQ6xH,GAClBA,EACT,GACC,CACDzlM,IAAK,SACLG,MAAO,SAAgByzE,GAAM7tC,GAAUmrzC,IAErC,GAAInrzC,GACF,OAAOnnC,KAAKqy1C,UAAUr9wC,GAAM7tC,IAS9B,QAPIspzC,GAAS6B,GAAY,KAAO,GAC5BplJ,GAAYolJ,GAAY,KAAO,GAC/BziB,GAAe,EAGfv5yB,GAAO,EACP14f,GAAQ,EACLA,IAASo3C,GAAKptD,QAAQ,CAC3B,IAAIswuC,GACJ,GAAIt6tC,KAAUo3C,GAAKptD,QAAU0ugB,GAAO14f,KAAUs6tC,GAASljrC,GAAK0B,OAAO94C,IAAQ,CAAC,IAAK,MAAMmS,SAASmotC,KAAU,CACxG,IAAIrxjC,GAAM7mM,KAAKuy1C,aAAav9wC,GAAKliD,MAAMwjgB,KAAQ14f,KAC1C00zC,KACH7B,GAASA,GAAOvmyC,OAAO28I,GAAI4ppC,QAC3BvjJ,GAAYA,GAAUhjpC,OAAO28I,GAAIqmgC,YAEnC2iI,IAAgBhpoC,GAAIgpoC,aACpBv5yB,GAAO14f,EACT,MACEA,IAEJ,CACA,MAAO,CACL6yzC,OAAQA,GACRvjJ,UAAWA,GACX2iI,aAAcA,GAElB,GACC,CACDzu0C,IAAK,SACLG,MAAO,SAAgByzE,GAAM7tC,IAK3B,QAJIqrzC,GAAexy1C,KAAK+gJ,OAAO/rE,GAAM7tC,IACnCspzC,GAAS+B,GAAa/B,OACtBvjJ,GAAYslJ,GAAatlJ,UACvBn6lC,GAAM,GACD//C,GAAI,EAAGA,GAAIy9xC,GAAO7o0C,OAAQorC,KAAK,CACtC,IAAI48wC,GAAQ6gB,GAAOz9xC,IACfy/xC,GAAMzy1C,KAAK6x1C,OAAOa,aAAa9iB,GAAM5l0C,IACzC+oG,GAAIlwG,KAAK,OAAOqnD,OAAOuoyC,GAAItq0C,SAAS,KAAK2K,OAAM,IACvB,MAApB9yB,KAAK+x1C,OAAOU,MACdzy1C,KAAK+x1C,OAAOU,IAAO7iB,GAAMC,aAAe7v0C,KAAKy2W,OAEtB,MAArBz2W,KAAK2v0C,QAAQ8iB,MACfzy1C,KAAK2v0C,QAAQ8iB,IAAO7iB,GAAMv4mB,WAE9B,CACA,MAAO,CAACtknB,GAAKm6lC,GACf,GACC,CACD9rsC,IAAK,gBACLG,MAAO,SAAuBwjD,GAAQgc,GAAM55B,IAG1C,OAFYnnC,KAAK+gJ,OAAOh8F,GAAQ5d,IAAU,GAAM0oyC,cACpC9uwC,GAAO,IAErB,GACC,CACD3/D,IAAK,QACLG,MAAO,WACL,IAAI80B,GAASr2B,KACT2y1C,GAA2B,MAAnB3y1C,KAAK6x1C,OAAOe,IACpBC,GAAW7y1C,KAAK4hC,SAAS+0F,MACzBg8tC,KACFE,GAASrs0C,KAAKyjzC,QAAU,iBAE1Bjq0C,KAAK6x1C,OAAOiB,eAAepkgC,GAAG,OAAQ,SAAUloU,IAC9C,OAAOqs0C,GAASvs0C,MAAME,GACxB,GAAGkoU,GAAG,MAAO,WACX,OAAOmkgC,GAASr5tC,KAClB,GACA,IAAIu5tC,KAAqC,MAArB/y1C,KAAK2sO,KAAK,QAAkB3sO,KAAK2sO,KAAK,QAAQqmnC,kBAAezp1C,IAAc,IAAM,EACjG4kO,GAAQ,EACRnuO,KAAK2sO,KAAK5rM,KAAKkyzC,eACjB9knC,IAAS,GAEP,GAAK4knC,IAAeA,IAAe,IACrC5knC,IAAS,GAEXA,IAAS,EAEW,KAAhB4knC,KACF5knC,IAAS,GAEPnuO,KAAK2sO,KAAKsiM,KAAKik7B,SAASh8Z,SAC1B/otB,IAAS,IAGX,IAGIvsO,GAHM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGS,IAAI,SAAU2wD,IACzC,OAAOlwD,OAAOgrO,cAAcz3M,GAAOrsB,GAAGq3M,WAAWruJ,KAAM,IAAM,GAC/D,GAAGxwD,KAAK,IACS,IAAMxC,KAAK2sO,KAAKslnC,eAC7Bts1B,GAAO3lgB,KAAK2sO,KAAKg5R,KACjBxxI,GAAan0X,KAAK4hC,SAAS+0F,IAAI,CACjC8+zB,KAAM,iBACNsB,SAAUn17B,GACVux1C,MAAOhlnC,GACP+hnC,SAAU,CAACvq1B,GAAKyc,KAAOpihB,KAAKy2W,MAAOkvJ,GAAK2c,KAAOtihB,KAAKy2W,MAAOkvJ,GAAK0c,KAAOrihB,KAAKy2W,MAAOkvJ,GAAK4c,KAAOvihB,KAAKy2W,OACpG28+B,YAAapz1C,KAAK2sO,KAAK0mnC,YACvBC,OAAQtz1C,KAAKuv0C,SACbgkB,QAASvz1C,KAAKyv0C,UACd8gB,WAAYvw1C,KAAK2sO,KAAK2jnC,WAAatw1C,KAAK2sO,KAAKyrb,QAAUp4pB,KAAKy2W,MAC5D45+B,SAAUrw1C,KAAK2sO,KAAKqxmC,SAAW,GAAKh+0C,KAAKy2W,MACzC+8+B,MAAO,IAQT,GALIb,GACFx+9B,GAAW3tW,KAAKit0C,UAAYZ,GAE5B1+9B,GAAW3tW,KAAKkt0C,UAAYb,GAE1B7y1C,KAAK4hC,SAASiwzC,OAAQ,CACxB,IAAI8B,GAAS7lP,EAAOjhmC,KAAK,aAAc,OACnC+m1C,GAAY5z1C,KAAK4hC,SAAS+0F,MAC9Bi9tC,GAAUtt0C,MAAMqt0C,IAChBC,GAAUp6tC,MACV26P,GAAW3tW,KAAKmt0C,OAASC,EAC3B,CACAz/9B,GAAW36P,MACX,IAAIq6tC,GAAqB,CACvBp+Z,KAAM,OACNw0Y,QAAS,eACTsnB,SAAU3v1C,GACVky1C,cAAe,CACbhm1B,SAAU,IAAIhrgB,OAAO,SACrBix1C,SAAU,IAAIjx1C,OAAO,YACrBkx1C,WAAY,GAEdC,eAAgB9/9B,GAChB1T,EAAG,CAAC,EAAGzgX,KAAK+x1C,SAETY,KACHkB,GAAmB5pB,QAAU,eAC7B4pB,GAAmBK,YAAc,YAEnC,IAAIC,GAAiBn01C,KAAK4hC,SAAS+0F,IAAIk9tC,IACvCM,UAAe36tC,MACfx5H,KAAKonrC,WAAW5gqC,KAAO,CACrBiv6B,KAAM,OACNw0Y,QAAS,QACTsnB,SAAU3v1C,GACV4v1C,SAAU,aACV4C,gBAAiB,CAACD,IAClBE,UAAWr01C,KAAKs01C,iBAEXt01C,KAAKonrC,WAAW5tjC,KACzB,GAGC,CACDp4H,IAAK,gBACLG,MAAO,WACL,IAGEqylB,GAHE2gwB,GAAOv01C,KAAK4hC,SAAS+0F,MACrB6nF,GAAU,GACV8n7B,GAAY45M,EAA2Blg1C,KAAK2v0C,SAEhD,IACE,IAAKrpM,GAAU5ymC,MAAOkgkB,GAAQ0yiB,GAAU10hC,KAAK4uI,MAAO,CAClD,IAIEir5B,GAHEn4uB,GAAU,GAEVo4uB,GAAaw0M,EAHAtsvB,GAAMrylB,OAKvB,IACE,IAAKmqoC,GAAWh4mC,MAAO+3mC,GAASC,GAAW95hC,KAAK4uI,MAAO,CACrD,IAAIj/O,GAAQkqoC,GAAOlqoC,MACfA,GAAQ,QAEV+xZ,GAAQzwZ,KAAKyxmC,IADb/ymC,IAAS,SACoB,GAAK,KAAQ,QAC1CA,GAAQ,MAAiB,KAARA,IAEnB+xZ,GAAQzwZ,KAAKyxmC,GAAM/ymC,IACrB,CACF,OAAS+/C,IACPoqlC,GAAWx0mC,EAAEoqB,GACf,SACEoqlC,GAAWlvlC,GACb,CACAgiK,GAAQ37M,KAAK,IAAIqnD,OAAOopW,GAAQ9wZ,KAAK,KAAM,KAC7C,CACF,OAAS8+C,IACPgllC,GAAUpvmC,EAAEoqB,GACd,SACEgllC,GAAU9plC,GACZ,CACA+3yC,UAAK/6tC,IAAI,2RAA2RtvE,OAAOoqjC,GAAM915B,GAAQ52L,OAAS,GAAI,OAAOsiC,OAAOs0J,GAAQh8M,KAAK,KAAM,oFAChW+x1C,EACT,KAEK3C,EACT,CAxPgC,CAwP9Bd,IACE0D,GAA8B,WAChC,SAASA,KACPjnJ,EAAgBvtsC,KAAMw01C,GACxB,CACA1mJ,SAAa0mJ,GAAgB,KAAM,CAAC,CAClCpz1C,IAAK,OACLG,MAAO,SAAcqgC,GAAU2lL,GAAK6qM,GAAQpoZ,IAC1C,IAAI2iO,GACJ,GAAmB,iBAARplB,GAAkB,CAC3B,GAAI6poC,GAAaqD,eAAeltoC,IAC9B,OAAO,IAAI6poC,GAAaxvzC,GAAU2lL,GAAKv9M,IAEzCu9M,GAAM79J,EAAGmvwC,aAAatxmC,GACxB,CAQA,GAPIum5B,EAAOk7C,SAASzh8B,IAClBolB,GAAO4ymC,EAASp5zB,QAAQ13Y,OAAO84E,GAAK6qM,IAC3B7qM,cAAeu4H,WACxBnzG,GAAO4ymC,EAASp5zB,QAAQ13Y,OAAOq/9B,EAAOjhmC,KAAK06M,IAAM6qM,IACxC7qM,cAAew4H,cACxBpzG,GAAO4ymC,EAASp5zB,QAAQ13Y,OAAOq/9B,EAAOjhmC,KAAK,IAAIizU,WAAWv4H,KAAO6qM,KAEvD,MAARzlL,GACF,MAAM,IAAI/uI,MAAM,qDAElB,OAAO,IAAIg0vC,GAAahwzC,GAAU+qM,GAAM3iO,GAC1C,KAEKwq1C,EACT,CA5BkC,GA6B9BE,GAAa,CACfC,UAAW,WACT,IAAIC,GAAc3+zC,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,YAEtFj2B,KAAK601C,cAAgB,CAAC,EACtB701C,KAAK801C,WAAa,EAElB901C,KAAK+01C,UAAY,GACjB/01C,KAAKm89B,MAAQ,KACbn89B,KAAK8+0C,iBAAmB,CAAC,EAErB8V,IACF501C,KAAK2sO,KAAKionC,GAEd,EACAjonC,KAAM,SAAcplB,GAAK6qM,GAAQrxV,IAC/B,IAAI+yZ,GAAUnnP,GAMd,GALsB,iBAAXylL,KACTrxV,GAAOqxV,GACPA,GAAS,MAGQ,iBAAR7qM,IAAoBvnN,KAAK8+0C,iBAAiBv3nC,IAAM,CACzDusQ,GAAWvsQ,GACX,IAAIytoC,GAAwBh11C,KAAK8+0C,iBAAiBv3nC,IAClDA,GAAMytoC,GAAsBztoC,IAC5B6qM,GAAS4i8B,GAAsB5i8B,MACjC,KAE0B,iBADxB0hE,GAAW1hE,IAAU7qM,MAEnBusQ,GAAW,MAOf,GAJY,MAAR/yZ,IACF/gE,KAAKy5K,SAAS14G,IAGZ4rK,GAAO3sO,KAAK601C,cAAc/g4B,IAC5B,OAAA9zd,KAAKm89B,MAAQxvvB,GACN3sO,KAGT,IAAIgK,GAAK,IAAIkgD,SAASlqD,KAAK801C,YAI3B,OAHA901C,KAAKm89B,MAAQq4X,GAAe/rvC,KAAKzoG,KAAMunN,GAAK6qM,GAAQpoZ,KAGhD2iO,GAAO3sO,KAAK601C,cAAc701C,KAAKm89B,MAAMv69B,QACvC5B,KAAKm89B,MAAQxvvB,GACN3sO,OAGL8zd,KACF9zd,KAAK601C,cAAc/g4B,IAAY9zd,KAAKm89B,OAElCn89B,KAAKm89B,MAAMv69B,OACb5B,KAAK601C,cAAc701C,KAAKm89B,MAAMv69B,MAAQ5B,KAAKm89B,OAEtCn89B,KACT,EACAy5K,SAAU,SAAkBs7qC,IAC1B,OAAA/01C,KAAK+01C,UAAYA,GACV/01C,IACT,EACAuwhB,kBAAmB,SAA2Bwg0B,IAC5C,OAAkB,MAAdA,KACFA,IAAa,GAER/w1C,KAAKm89B,MAAM5iU,WAAWv5pB,KAAK+01C,UAAWhE,GAC/C,EACA/lZ,aAAc,SAAsBpp8B,GAAM2lN,GAAK6qM,IAC7C,OAAApyZ,KAAK8+0C,iBAAiBl90C,IAAQ,CAC5B2lN,IAAKA,GACL6qM,OAAQA,IAEHpyZ,IACT,GAEEi11C,GAA2B,SAAUC,IACvCxoJ,EAAUuoJ,GAAaC,IACvB,IAAI1mtC,GAASq+jC,EAAaooJ,IAC1B,SAASA,GAAYrzzC,GAAU//B,IAC7B,IAAI+yB,GACJ24qC,SAAgBvtsC,KAAMi11C,KACtBrg0C,GAAQ45G,GAAOzlG,KAAK/oC,OACd4hC,SAAWA,GACjBhN,GAAMsygB,OAASrliB,GAAQqliB,QAAU,EACjCtygB,GAAMug0C,iBAAmBtz1C,GAAQsz1C,kBAAoB,EACrDvg0C,GAAM+ozC,YAAsC,IAAxB970C,GAAQ870C,YAC5B/ozC,GAAMsnC,QAAUr6D,GAAQq6D,SAAW,EACnCtnC,GAAMwg0C,UAAiC,MAArBvz1C,GAAQuz1C,UAAoBvz1C,GAAQuz1C,UAAY,GAElExg0C,GAAMo+nB,WAAanxpB,GAAQ4xC,MAAQ7e,GAAMwg0C,WAAaxg0C,GAAMsnC,QAAU,IAAMtnC,GAAMsnC,QAClFtnC,GAAMyg0C,UAAYzg0C,GAAMo+nB,UACxBp+nB,GAAMurlB,OAASvrlB,GAAMgN,SAASja,EAC9BiN,GAAMwrlB,OAASxrlB,GAAMgN,SAAS26B,EAC9B3nC,GAAMkc,OAAS,EACflc,GAAMs6f,SAAWrthB,GAAQqthB,SACzBt6f,GAAM0g0C,WAAa,EACnB1g0C,GAAMuS,SAAWtlC,GAAQslC,SAEH,MAAlBtlC,GAAQsmI,QACVvzG,GAAMuzG,OAAStmI,GAAQsmI,OACvBvzG,GAAM2tf,KAAO3tf,GAAMwrlB,OAASv+mB,GAAQsmI,QAEpCvzG,GAAM2tf,KAAO3tf,GAAMgN,SAASizE,KAAK0ta,OAGnC3tf,GAAM85T,GAAG,YAAa,SAAU7sV,IAI9B,IAAIqliB,GAAStygB,GAAM0g0C,YAAc1g0C,GAAMsygB,OACvCtygB,UAAMgN,SAASja,GAAKu/gB,GACpBtygB,GAAMo+nB,WAAa9rH,GACZtygB,GAAM25W,KAAK,OAAQ,WAMxB,GALA35W,GAAMgN,SAASja,GAAKu/gB,GACpBtygB,GAAMo+nB,WAAa9rH,GACfrliB,GAAQ0z1C,YAAc3g0C,GAAM0g0C,aAC9B1g0C,GAAM0g0C,WAAa1g0C,GAAMsygB,SAEtBrliB,GAAQ0z1C,UACX,OAAO3g0C,GAAM0g0C,WAAa,CAE9B,EACF,GAEA1g0C,GAAM85T,GAAG,WAAY,SAAU7sV,IAC7B,IAAImnX,GAAQnnX,GAAQmnX,MACpB,MAAc,YAAVA,KACFnnX,GAAQmnX,MAAQ,QAElBp0V,GAAMiv4B,UAAW,EACVjv4B,GAAM25W,KAAK,OAAQ,WACxB35W,UAAMgN,SAAS26B,GAAK16D,GAAQ2z1C,cAAgB,EAC5C3z1C,GAAQmnX,MAAQA,GACTp0V,GAAMiv4B,UAAW,CAC1B,EACF,GACOjv4B,EACT,CACAk5qC,SAAamnJ,GAAa,CAAC,CACzB7z1C,IAAK,YACLG,MAAO,SAAmBq8c,IACxB,OAAO59c,KAAK4hC,SAAS6zzC,cAAc734B,GAAM59c,MAAQA,KAAKm11C,iBAAmBn11C,KAAK290C,WAChF,GACC,CACDv80C,IAAK,WACLG,MAAO,SAAkByzE,GAAMxsD,IAM7B,QAJIkt0C,GACA79F,GAAU,IAAI2nF,EAAWr5zB,QAAQnxc,IACjCshd,GAAO,KACPq/zB,GAAajz1C,OAAO+rI,OAAO,MACxBintC,GAAK79F,GAAQ+9F,aAAa,CAC/B,IAAIC,GACAj44B,GAAO5oY,GAAKliD,MAAsBwjgB,IAAK79Z,UAAyB,EAAGi9tC,GAAGj9tC,UACtEgzF,GAAwB,MAApBkqoC,GAAW/34B,IAAgB+34B,GAAW/34B,IAAQ+34B,GAAW/34B,IAAQ59c,KAAK811C,UAAUl44B,IAGxF,GAAInyP,GAAIzrN,KAAKgzpB,UAAYhzpB,KAAKs11C,WAI5B,QAFIS,GAAMz/zB,GACN0/zB,GAAM,CAAC,EACJp44B,GAAKh2b,QAAQ,CAElB,IAAIk+G,GAAGmwtC,GACHxqoC,GAAIzrN,KAAKq11C,WAGXvvtC,GAAIn6F,KAAK0wH,KAAKr8J,KAAKq11C,WAAa5poC,GAAImyP,GAAKh2b,SAEzCqu0C,IADAxqoC,GAAIzrN,KAAK811C,UAAUl44B,GAAK9qb,MAAM,EAAGgzG,OAChB9lI,KAAKq11C,WAAavvtC,GAAI83U,GAAKh2b,QAE5Ck+G,GAAI83U,GAAKh2b,OAIX,QAFIsu0C,GAAazqoC,GAAIzrN,KAAKq11C,WAAavvtC,GAAI,EAEpCowtC,IAAcD,IACfC,GAEFA,IADAzqoC,GAAIzrN,KAAK811C,UAAUl44B,GAAK9qb,MAAM,IAAKgzG,MAClB9lI,KAAKq11C,WAAavvtC,GAAI,GAGvCowtC,IADAzqoC,GAAIzrN,KAAK811C,UAAUl44B,GAAK9qb,MAAM,IAAKgzG,MAClB9lI,KAAKq11C,WAAavvtC,GAAI,EACvCmwtC,GAAYxqoC,IAAKzrN,KAAKq11C,WAAavvtC,GAAI83U,GAAKh2b,QAgBhD,GAZU,IAANk+G,IAAW9lI,KAAKq11C,YAAcr11C,KAAKgzpB,YACrClthB,GAAI,GAGNkwtC,GAAIl3xC,SAAW42xC,GAAG52xC,UAAYgnE,GAAI83U,GAAKh2b,OACvCiu0C,GAAiBrt0C,GAAGo1b,GAAK9qb,MAAM,EAAGgzG,IAAI2lF,GAAGuqoC,GAAKD,IAC9CA,GAAM,CACJj3xC,UAAU,GAGZ8+Y,GAAOA,GAAK9qb,MAAMgzG,IAClB2lF,GAAIzrN,KAAK811C,UAAUl44B,KACI,IAAnBi44B,GACF,KAEJ,MAGAA,GAAiBrt0C,GAAGo1b,GAAMnyP,GAAGiqoC,GAAIp/zB,IAEnC,IAAuB,IAAnBu/zB,GACF,MAEFv/zB,GAAOo/zB,EACT,CACF,GACC,CACDt01C,IAAK,OACLG,MAAO,SAAcyzE,GAAMnzE,IACzB,IAAIw0B,GAASr2B,KAGS,MAAlB6B,GAAQqliB,SACVlniB,KAAKkniB,OAASrliB,GAAQqliB,QAEQ,MAA5BrliB,GAAQsz1C,mBACVn11C,KAAKm11C,iBAAmBtz1C,GAAQsz1C,kBAEP,MAAvBtz1C,GAAQ870C,cACV390C,KAAK290C,YAAc970C,GAAQ870C,aAEL,MAApB970C,GAAQqthB,WACVlvhB,KAAKkvhB,SAAWrthB,GAAQqthB,UAK1B,IAAIjrB,GAAQjkgB,KAAK4hC,SAAS26B,EAAIv8D,KAAK4hC,SAAS2uf,mBAAkB,IAC1DvwhB,KAAK4hC,SAAS26B,EAAIv8D,KAAKuihB,MAAQte,GAAQjkgB,KAAKuihB,OAC9CvihB,KAAKm21C,cAEP,IAAIxqnC,GAAS,GACTm1T,GAAY,EACZs1zB,GAAK,EACLpx9B,GAAK,EACLzoU,GAAIv8D,KAAK4hC,SAAS26B,EAElB85xC,GAAW,WACbx01C,UAAQi/hB,UAAYA,GAAYzqgB,GAAOsnzC,aAAeyY,GAAK,GAC3Dv01C,GAAQy01C,UAAYF,GACpBv01C,GAAQmxpB,UAAY38nB,GAAO28nB,UAC3Bz2lB,GAAIlmC,GAAOuL,SAAS26B,EACpBlmC,GAAOgJ,KAAK,OAAQssM,GAAQ9pO,GAASw0B,IAC9B2uW,IACT,EAiFA,OAhFAhlY,KAAKq/B,KAAK,eAAgBx9B,GAAS7B,MACnCA,KAAKu21C,SAASvhxC,GAAM,SAAU4oY,GAAMnyP,GAAGiqoC,GAAIp/zB,IAUzC,IATY,MAARA,IAAgBA,GAAKx3d,YACvBzoC,GAAOgJ,KAAK,YAAax9B,GAASw0B,IAClCA,GAAOg/zC,UAAYh/zC,GAAO28nB,WAExBvnc,IAAKp1L,GAAOg/zC,YACd1pnC,IAAUiyO,GACVkjF,IAAar1U,GACb2qoC,MAEEV,GAAG52xC,UAAY2sJ,GAAIp1L,GAAOg/zC,UAAW,CAGvC,IAAIz7uB,GAAKvjlB,GAAOuL,SAAS2uf,mBAAkB,GAC3C,GAAqB,MAAjBl6f,GAAO8xG,QAAkB9xG,GAAO64f,UAAY74f,GAAOuL,SAAS26B,EAAS,EAALq9iB,GAASvjlB,GAAOksf,MAAQlsf,GAAOya,QAAUza,GAAO6lC,QAAS,CAS3H,KARwB,IAApB7lC,GAAO64f,WACT74f,GAAO64f,SAAW,UAGpBvjT,GAASA,GAAOtoO,QAAQ,OAAQ,IAChCy9hB,GAAYzqgB,GAAOy/zC,UAAUnqnC,GAASt1M,GAAO64f,UAGtCvjT,IAAUm1T,GAAYzqgB,GAAO28nB,WAClCrnb,GAASA,GAAO74M,MAAM,GAAG,GAAIzvB,QAAQ,OAAQ,IAC7Cy9hB,GAAYzqgB,GAAOy/zC,UAAUnqnC,GAASt1M,GAAO64f,UAG3C4R,IAAazqgB,GAAO28nB,YACtBrnb,IAAkBt1M,GAAO64f,UAE3B4R,GAAYzqgB,GAAOy/zC,UAAUnqnC,GAC/B,CAaA,OAZI+pnC,GAAG52xC,WACD2sJ,GAAIp1L,GAAOg/zC,YACbgB,KACA1qnC,GAASiyO,GACTkjF,GAAYr1U,GACZ2qoC,GAAK,GAEP//zC,GAAOgJ,KAAK,WAAYx9B,GAASw0B,KAEnCgg0C,KAGIhg0C,GAAOuL,SAAS26B,EAAIq9iB,GAAKvjlB,GAAOksf,OACblsf,GAAO8/zC,eAG1BC,GAAK,EACLzqnC,GAAS,IACF,GAIP+pnC,GAAG52xC,UACLzoC,GAAOg/zC,UAAYh/zC,GAAO28nB,UAC1Brnb,GAAS,GACTm1T,GAAY,EACLs1zB,GAAK,IAGZ//zC,GAAOg/zC,UAAYh/zC,GAAO28nB,UAAYvnc,GACtCkgB,GAASiyO,GACTkjF,GAAYr1U,GACL2qoC,GAAK,EAEhB,CACE,OAAO//zC,GAAOg/zC,WAAa5poC,EAE/B,GACI2qoC,GAAK,IACPp21C,KAAKq/B,KAAK,WAAYx9B,GAAS7B,MAC/Bq21C,MAEFr21C,KAAKq/B,KAAK,aAAcx9B,GAAS7B,OAIP,IAAtB6B,GAAQ0z1C,WACNvw9B,GAAK,IACPhlY,KAAKs11C,WAAa,GAEpBt11C,KAAKs11C,YAAczz1C,GAAQi/hB,WAAa,EACjC9giB,KAAK4hC,SAAS26B,EAAIA,IAElBv8D,KAAK4hC,SAASja,EAAI3nB,KAAKmgnB,MAElC,GACC,CACD/+mB,IAAK,cACLG,MAAO,SAAqBM,IAE1B,GADA7B,KAAKq/B,KAAK,aAAcx9B,GAAS7B,QAC3BA,KAAK8wC,OAAS9wC,KAAKk8D,QAAS,CAGhC,GAAmB,MAAfl8D,KAAKmoI,OACP,OAAO,EAQP,IAAIqutC,GANNx21C,KAAK4hC,SAAS60zC,oBACdz21C,KAAK8wC,OAAS,EACd9wC,KAAKognB,OAASpgnB,KAAK4hC,SAASizE,KAAK8yR,QAAQhvQ,IACzC34H,KAAKuihB,KAAOvihB,KAAK4hC,SAASizE,KAAK0ta,OAC/BvihB,KAAK4hC,SAASja,EAAI3nB,KAAKmgnB,OACnBngnB,KAAK4hC,SAASo9yC,aAEfwX,GAAiBx21C,KAAK4hC,UAAUyo/B,UAAUr0/B,MAAMwg0C,GAAgB1W,GAAmB9/0C,KAAK4hC,SAASo9yC,aAEpGh/0C,KAAKq/B,KAAK,YAAax9B,GAAS7B,KAClC,MACEA,KAAK4hC,SAASja,GAAK3nB,KAAKgzpB,UAAYhzpB,KAAKo11C,UACzCp11C,KAAK4hC,SAAS26B,EAAIv8D,KAAKognB,OACvBpgnB,KAAKq/B,KAAK,cAAex9B,GAAS7B,MAEpC,OAAAA,KAAKq/B,KAAK,eAAgBx9B,GAAS7B,OAC5B,CACT,KAEKi11C,EACT,CAxS+B,CAwS7BlkkC,EAAQ17P,cACNqh0C,GAAW/V,GAAUvqwC,OACrBugxC,GAAY,CACdC,SAAU,WACR,OAAA521C,KAAK2goB,MAAQ3goB,KAAK2goB,MAAMhre,KAAK31J,MAE7BA,KAAK2nB,EAAI,EACT3nB,KAAKu8D,EAAI,EACFv8D,KAAK621C,SAAW,CACzB,EACArG,QAAS,SAAiBqG,IACxB,OAAA721C,KAAK621C,SAAWA,GACT721C,IACT,EACA821C,SAAU,SAAkB5guC,IAC1B,OAAa,MAATA,KACFA,GAAQ,GAEVl2H,KAAKu8D,GAAKv8D,KAAKuwhB,mBAAkB,GAAQr6Z,GAAQl2H,KAAK621C,SAC/C721C,IACT,EACA+21C,OAAQ,SAAgB7guC,IACtB,OAAa,MAATA,KACFA,GAAQ,GAEVl2H,KAAKu8D,GAAKv8D,KAAKuwhB,mBAAkB,GAAQr6Z,GAAQl2H,KAAK621C,SAC/C721C,IACT,EACAmplB,MAAO,SAAen0gB,GAAMrtD,GAAG40C,GAAG16D,GAASm11C,IACzC,IAAIpi0C,GAAQ50B,KACZ6B,GAAU7B,KAAKi31C,aAAatv0C,GAAG40C,GAAG16D,IAElCmzE,GAAe,MAARA,GAAe,GAAK,GAAG9qB,OAAO8qB,IAEjCnzE,GAAQ870C,cACV3owC,GAAOA,GAAK3xE,QAAQ,UAAW,MAEjC,IAAI6z1C,GAAe,WACbr11C,GAAQs11C,cACVt11C,GAAQs11C,aAAaxowC,IAAI/5D,GAAMwi0C,OAAOv11C,GAAQw11C,YAAc,IAAK,CAACzi0C,GAAM0i0C,qBAAqBz11C,GAAQw11C,YAAc,OAEvH,EAEA,GAAIx11C,GAAQ4xC,MAAO,CACjB,IAAI0kf,GAAUn4hB,KAAKu31C,SACdp/zB,MACHA,GAAU,IAAI88zB,GAAYj11C,KAAM6B,KACxB6sV,GAAG,OAAQsogC,IACnB7+zB,GAAQzpM,GAAG,YAAawogC,KAE1Bl31C,KAAKu31C,SAAW111C,GAAQ0z1C,UAAYp9zB,GAAU,KAC9Cn4hB,KAAKw31C,aAAe311C,GAAQ0z1C,UAAY1z1C,GAAU,KAClDs2hB,GAAQnyE,KAAKhxY,GAAMnzE,GACrB,KAAO,CACL,IACE+xlB,GADE0yiB,GAAY45M,EAA2BlrwC,GAAKzyE,MAAM,OAEtD,IACE,IAAK+joC,GAAU5ymC,MAAOkgkB,GAAQ0yiB,GAAU10hC,KAAK4uI,MAAO,CAClD,IAAI+5B,GAAOq5U,GAAMrylB,MACjB211C,KACAF,GAAaz8kC,GAAM14Q,GACrB,CACF,OAASy/C,IACPgllC,GAAUpvmC,EAAEoqB,GACd,SACEgllC,GAAU9plC,GACZ,CACF,CACA,OAAOx8C,IACT,EACAg1E,KAAM,SAAcyixC,GAAQ9v0C,GAAG40C,GAAG16D,IAChC,OAAO7B,KAAKmplB,MAAMsuwB,GAAQ9v0C,GAAG40C,GAAG16D,GAAS7B,KAAK2goB,MAChD,EACA80tB,cAAe,SAAuB1wyC,IACpC,IAAIljD,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAOj2B,KAAKm89B,MAAMs5X,cAAc1wyC,GAAQ/kD,KAAK+01C,UAAWlz1C,GAAQslC,WAAatlC,GAAQsz1C,kBAAoB,IAAMpwyC,GAAOn9B,OAAS,EACjI,EACA8v0C,eAAgB,SAAwB1ixC,GAAMnzE,IAC5C,IAAIw0B,GAASr2B,KACT2nB,GAAI3nB,KAAK2nB,EACX40C,GAAIv8D,KAAKu8D,GACX16D,GAAU7B,KAAKi31C,aAAap11C,KACpBsmI,OAASksO,IAEjB,IAAIm8+B,GAAU3u1C,GAAQ2u1C,SAAWxw1C,KAAK621C,UAAY,EAClD721C,KAAKmplB,MAAMn0gB,GAAMh1E,KAAK2nB,EAAG3nB,KAAKu8D,EAAG16D,GAAS,WACxC,OAAOw0B,GAAOkmC,GAAKlmC,GAAOk6f,mBAAkB,GAAQig0B,EACtD,GACA,IAAIrotC,GAASnoI,KAAKu8D,EAAIA,GACtB,OAAAv8D,KAAK2nB,EAAIA,GACT3nB,KAAKu8D,EAAIA,GACF4rE,EACT,EACAiG,KAAM,SAAcqvb,GAAO91iB,GAAG40C,GAAG16D,GAASs2hB,IACxC,IAAI7ggB,GAASt3B,KAETg4Z,IADJn2Z,GAAU7B,KAAKi31C,aAAatv0C,GAAG40C,GAAG16D,KACXm2Z,UAAY,SAC/Bz8L,GAAO5vL,KAAK0hL,MAAMrtN,KAAKm89B,MAAMozW,SAAW,IAAOvv0C,KAAK+01C,WACpD4C,GAAUp8nC,GAAO,EACjBz0N,GAAIjF,GAAQ+11C,cAAgBr8nC,GAAO,EACnC2rU,GAASrliB,GAAQg21C,aAA4B,WAAb7/7B,GAA4B,EAAJlxZ,GAAe,EAAPy0N,IAChEu8nC,GAAaj21C,GAAQk21C,eAA8B,WAAb//7B,GAA4B,EAAJlxZ,GAAe,EAAPy0N,IACtEqgD,GAAQ,EACR3jJ,GAAQ,GACRsqf,GAAS,GACTx5F,GAAU,IACA,SAASrsD,GAAQtuV,IAE7B,QADIx8B,GAAI,EACCkrJ,GAAK,EAAGA,GAAK1uH,GAAKxmH,OAAQk1O,KAAM,CACvC,IAAI15I,GAAOgrB,GAAK0uH,IACZ16P,MAAMq3G,QAAQ2J,KAChBw4J,KACA8gN,GAAQt5W,IACRw4J,OAEA3jJ,GAAMp1H,KAAKugH,IACXm/f,GAAO1/mB,KAAK+4Q,IACK,WAAbo8I,IACF+wH,GAAQlmhB,KAAK+uG,MAGnB,CACF,CACA8qX,CAAQ+gG,KAYRtlC,GAAU,IAAI88zB,GAAYj11C,KAAM6B,KACxB6sV,GAAG,OAAQ1uV,KAAK2goB,OACxB/kX,GAAQ,EACR,IAAI5oN,GAAI,EACRmle,UAAQzpM,GAAG,YAAa,WACtB,IAAItrO,GAAM40uC,GAAUC,GAAWC,GAmB3BpytC,GAlBJ,GAAIjkI,GAAQs11C,aACV,GAAIt11C,GAAQs21C,YAAa,CACvB,IAAIC,GAAuBtrsB,GAAejrpB,GAAQs21C,YAAa,GAC/DH,GAAWI,GAAqB,GAChCH,GAAYG,GAAqB,GACjCF,GAAWE,GAAqB,EAClC,MACEJ,GAAW,KACXC,GAAY,MACZC,GAAW,QAUf,GAPIF,IACF50uC,GAAO9rF,GAAO8/zC,OAAOY,IACrBn21C,GAAQs11C,aAAaxowC,IAAIy0B,KAChBvhH,GAAQs11C,eACjB/zuC,GAAOvhH,GAAQs11C,eAGZrxtC,GAAIy8e,GAAOvvjB,SAAU4oN,GAAO,CAC/B,IAAIzwO,GAAO2szC,IAAchytC,GAAI81I,IAC7BtkP,GAAO3P,GAAKwjB,GACZgtf,GAAQ66H,WAAa7nnB,GACrBywO,GAAQ91I,EACV,CAIA,OAHI1iB,KAAS60uC,IAAaC,KACxB90uC,GAAKz0B,IAAIr3D,GAAO8/zC,OAAOa,IAAaC,GAAU,CAAC5g0C,GAAOgg0C,qBAAqBW,IAAaC,OAElFlg8B,IACN,IAAK,SACH1gY,GAAOgtH,OAAOhtH,GAAO3P,EAAIu/gB,GAASpgiB,GAAGwwB,GAAOilC,EAAIo7xC,GAAS7w1C,IACzDwwB,GAAO0qH,OACP,MACF,IAAK,WACL,IAAK,WACH,IAAIhtE,GApDE,SAAe48B,IACzB,OAAQomT,IACN,IAAK,WACH,MAAO,GAAG9tW,OAAO0nD,GAAG,KACtB,IAAK,WACH,IAAIqgJ,GAASnvP,OAAOgrO,cAAcl8H,GAAI,GAAK,GAAK,IAC5CqhpC,GAAQtntC,KAAKuqC,OAAO07B,GAAI,GAAK,GAAK,GAClC58B,GAAO5yE,MAAM6wvC,GAAQ,GAAGzwvC,KAAKyvP,IACjC,MAAO,GAAG/nM,OAAO8qB,GAAM,KAE7B,CA0CiBh8B,CAAM+ve,GAAQ/1d,GAAI,IAC7B17B,GAAO+g0C,UAAUrjxC,GAAM19C,GAAO3P,EAAIu/gB,GAAQ5vgB,GAAOilC,EAAG16D,IAGpDuhH,IAAQ60uC,IAAaC,IACvB90uC,GAAKz0B,IAAIr3D,GAAO8/zC,OAAOc,GAAU,CAAC5g0C,GAAOgg0C,qBAAqBY,OAE5D90uC,IAAQA,KAASvhH,GAAQs11C,cAC3B/zuC,GAAKoW,KAET,GACA2+Z,GAAQzpM,GAAG,eAAgB,WACzB,IAAIi7N,GAAMziB,GAAS4wzB,IAAcl8kC,GAAQ,GACzCtkP,UAAO3P,GAAKgiiB,GACLxxB,GAAQ66H,WAAarpG,EAC9B,GACAxxB,GAAQzpM,GAAG,aAAc,WACvB,IAAIi7N,GAAMziB,GAAS4wzB,IAAcl8kC,GAAQ,GACzCtkP,UAAO3P,GAAKgiiB,GACLxxB,GAAQ66H,WAAarpG,EAC9B,GACAxxB,GAAQnyE,KAAK/tV,GAAMz1H,KAAK,MAAOX,IACxB7B,IACT,EACAi31C,aAAc,WACZ,IAAItv0C,GAAIsO,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACzEsmC,GAAItmC,UAAUrO,OAAS,EAAIqO,UAAU,QAAK1sB,EAC1C1H,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAClE,iBAANtO,KACT9lB,GAAU8lB,GACVA,GAAI,MAGN,IAAIrkB,GAASZ,OAAO08B,OAAO,CAAC,EAAGv9B,IAE/B,GAAI7B,KAAKw31C,aACP,QAASp21C,MAAOpB,KAAKw31C,aAEP,cAARp21C,SACkBmI,IAAhBjG,GAAOlC,MACTkC,GAAOlC,IAHDpB,KAAKw31C,aAAap21C,KAShC,OAAS,MAALumB,KACF3nB,KAAK2nB,EAAIA,IAEF,MAAL40C,KACFv8D,KAAKu8D,EAAIA,KAGc,IAArBj5D,GAAOg11C,YACW,MAAhBh11C,GAAOmwC,QACTnwC,GAAOmwC,MAAQzzC,KAAK60G,KAAKphE,MAAQzzC,KAAK2nB,EAAI3nB,KAAK60G,KAAK8yR,QAAQtsH,OAE9D/3Q,GAAOmwC,MAAQ9H,KAAKC,IAAItoC,GAAOmwC,MAAO,IAEnCnwC,GAAO44D,UACV54D,GAAO44D,QAAU,GAEK,MAApB54D,GAAO8x1C,YACT9x1C,GAAO8x1C,UAAY,IAGd9x1C,EACT,EACAq9nB,MAAO,SAAe3rjB,IACpB,IAAInzE,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EkigB,GAAUligB,UAAUrO,OAAS,EAAIqO,UAAU,QAAK1sB,EACpDvJ,KAAKq41C,UAAUrjxC,GAAMh1E,KAAK2nB,EAAG3nB,KAAKu8D,EAAG16D,IACrC,IAAI2u1C,GAAU3u1C,GAAQ2u1C,SAAWxw1C,KAAK621C,UAAY,EAClD,OAAK1+zB,GAGIn4hB,KAAKu8D,GAAKv8D,KAAKuwhB,mBAAkB,GAAQig0B,GAFzCxw1C,KAAK2nB,GAAK3nB,KAAKy11C,cAAczgxC,GAIxC,EACAqjxC,UAAW,SAAmBrjxC,GAAMrtD,GAAG40C,GAAG16D,IACxC,IACIutX,GAAIkkC,GAAStgW,GAAGk6oC,GAAWpsqB,GAAWk5C,GADtCpijB,GAAS53B,KAGb,GAAoB,KADpBg1E,GAAO,GAAG9qB,OAAO8qB,IAAM3xE,QAAQ,MAAO,KAC7BukB,OAIT,KACI+1zC,GAAc970C,GAAQ870C,aAAe,EACrCwX,GAAmBtz1C,GAAQsz1C,kBAAoB,EAEnD,GAAItz1C,GAAQ4xC,MACV,OALU5xC,GAAQmnX,OAAS,QAMzB,IAAK,QACH83K,GAAY9giB,KAAKy11C,cAAczgxC,GAAK3xE,QAAQ,OAAQ,IAAKxB,IACzD8lB,IAAK9lB,GAAQmxpB,UAAYlyH,GACzB,MACF,IAAK,SACHn5gB,IAAK9lB,GAAQmxpB,UAAY,EAAInxpB,GAAQi/hB,UAAY,EACjD,MACF,IAAK,UAEHk5C,GAAQhlgB,GAAK9pD,OAAO3oB,MAAM,OAC1Bu+hB,GAAY9giB,KAAKy11C,cAAczgxC,GAAK3xE,QAAQ,OAAQ,IAAKxB,IACzD,IAAI021C,GAAav41C,KAAKy11C,cAAc,KAAON,GAC3CxX,GAAchyyC,KAAKC,IAAI,GAAI/pC,GAAQmxpB,UAAYlyH,IAAan1f,KAAKC,IAAI,EAAGouiB,GAAMpyjB,OAAS,GAAK2w0C,IAKlG,GAAgC,iBAArB121C,GAAQm7+B,SACjB5tnB,IAAMvtX,GAAQm7+B,aACT,CACL,OAAQn7+B,GAAQm7+B,UACd,IAAK,aACH5tnB,GAAK,GAAMpvX,KAAKm89B,MAAM6hX,QACtB,MACF,IAAK,SACL,IAAK,cACH5u9B,GAAK,IAAOpvX,KAAKm89B,MAAMszW,UAAYzv0C,KAAKm89B,MAAMozW,UAC9C,MACF,IAAK,SACL,IAAK,cACHng9B,GAAKpvX,KAAKm89B,MAAMszW,UAChB,MACF,IAAK,aACHrg9B,GAAK,EACL,MACF,IAAK,eACHA,GAAK,GAAMpvX,KAAKm89B,MAAMozW,SACtB,MACF,IAAK,UACHng9B,GAAK,GAAMpvX,KAAKm89B,MAAMozW,SACtB,MAIF,QACEng9B,GAAKpvX,KAAKm89B,MAAMozW,SAEpBng9B,GAAKA,GAAK,IAAOpvX,KAAK+01C,SACxB,CAEA,IA0CMzZ,GA1CFkd,GAAgB321C,GAAQi/hB,UAAY68yB,IAAe970C,GAAQy01C,UAAY,GAAKnB,IAAoBngxC,GAAKptD,OAAS,GAYlH,GAVoB,MAAhB/lB,GAAQw2C,MACVr4C,KAAKq4C,KAAK1wB,GAAG40C,GAAGi8xC,GAAex41C,KAAKuwhB,oBAAqB1uhB,GAAQw2C,MAE/C,MAAhBx2C,GAAQukyC,MACVpmyC,KAAKomyC,KAAKz+wC,GAAG40C,GAAGi8xC,GAAex41C,KAAKuwhB,oBAAqB1uhB,GAAQukyC,MAExC,MAAvBvkyC,GAAQ2yZ,aACVx0Z,KAAKy41C,oBAAoB521C,GAAQ2yZ,YAAa,MAAO7sY,GAAG40C,GAAG,MAGzD16D,GAAQ217B,UAAW,CACrBx37B,KAAK+zF,OACAlyF,GAAQuiJ,QACXpkJ,KAAKus0C,YAAYv2yC,MAAMh2B,KAAM8/0C,GAAmB9/0C,KAAKg/0C,YAAc,KAErE,IAAIhsrB,GAAYhzpB,KAAK+01C,UAAY,GAAK,GAAMppzC,KAAKuqC,MAAMl2E,KAAK+01C,UAAY,IACxE/01C,KAAKgzpB,UAAUA,IACf,IAAI9xgB,GAAQ3kF,GAAIv8D,KAAKuwhB,oBAAsByiI,GAC3ChzpB,KAAKsjY,OAAO37W,GAAGu5H,IACflhJ,KAAKilY,OAAOt9W,GAAI6w0C,GAAet3sC,IAC/BlhJ,KAAKokJ,SACLpkJ,KAAKy+d,SACP,CAEA,GAAI58d,GAAQu5oC,OAAQ,CAClBp7oC,KAAK+zF,OACAlyF,GAAQuiJ,QACXpkJ,KAAKus0C,YAAYv2yC,MAAMh2B,KAAM8/0C,GAAmB9/0C,KAAKg/0C,YAAc,KAErE,IAAI0Z,GAAa141C,KAAK+01C,UAAY,GAAK,GAAMppzC,KAAKuqC,MAAMl2E,KAAK+01C,UAAY,IACzE/01C,KAAKgzpB,UAAU0lsB,IACf,IAAIlguB,GAASj8jB,GAAIv8D,KAAKuwhB,oBAAsB,EAC5CvwhB,KAAKsjY,OAAO37W,GAAG6wmB,IACfx4nB,KAAKilY,OAAOt9W,GAAI6w0C,GAAehguB,IAC/Bx4nB,KAAKokJ,SACLpkJ,KAAKy+d,SACP,CACAz+d,KAAK+zF,OAEDlyF,GAAQqn0C,UAGRoS,GAD6B,iBAApBz50C,GAAQqn0C,SACTv9xC,KAAKwiU,IAAItsW,GAAQqn0C,QAAUv9xC,KAAK4uK,GAAK,MAEtC,IAETv6M,KAAKgxC,UAAU,EAAG,EAAG,EAAG,EAAGrpB,GAAG40C,IAC9Bv8D,KAAKgxC,UAAU,EAAG,EAAGsqyC,GAAM,GAAIA,GAAOls9B,GAAI,GAC1CpvX,KAAKgxC,UAAU,EAAG,EAAG,EAAG,GAAIrpB,IAAI40C,KAGlCv8D,KAAKgxC,UAAU,EAAG,EAAG,GAAG,EAAI,EAAGhxC,KAAK60G,KAAKszB,QACzC5rE,GAAIv8D,KAAK60G,KAAKszB,OAAS5rE,GAAI6yT,GAEW,MAAlCpvX,KAAK60G,KAAK03b,MAAMvsiB,KAAKm89B,MAAMny9B,MAC7BhK,KAAK60G,KAAK03b,MAAMvsiB,KAAKm89B,MAAMny9B,IAAMhK,KAAKm89B,MAAMxl2B,OAG9C32H,KAAKgr0C,WAAW,MAEhBhr0C,KAAKgr0C,WAAW,WAAW9gxC,OAAOwsyC,GAAS/u0C,IAAI,KAAKuiC,OAAOwsyC,GAASn6xC,IAAI,QAExEv8D,KAAKgr0C,WAAW,IAAI9gxC,OAAOlqD,KAAKm89B,MAAMny9B,GAAI,KAAKkgD,OAAOwsyC,GAAS121C,KAAK+01C,WAAY,QAEhF,IAAIjhmC,GAAOjyP,GAAQmgJ,MAAQngJ,GAAQuiJ,OAAS,EAAIviJ,GAAQuiJ,OAAS,EAAI,EAYrE,GAXI0vG,IACF9zP,KAAKgr0C,WAAW,GAAG9gxC,OAAO4pM,GAAM,QAG9BqhmC,IACFn11C,KAAKgr0C,WAAW,GAAG9gxC,OAAOwsyC,GAASvB,IAAmB,QAMpDxX,GAAa,CACf3jwB,GAAQhlgB,GAAK9pD,OAAO3oB,MAAM,OAC1Bo70C,IAAe390C,KAAKy11C,cAAc,KAAON,GACzCxX,IAAe,IAAO390C,KAAK+01C,UAC3Bzh8B,GAAU,GACV45yB,GAAY,GACZ,IACEzhE,GADEC,GAAaw0M,EAA2BlmwB,IAE5C,IACE,IAAK0xjB,GAAWh4mC,MAAO+3mC,GAASC,GAAW95hC,KAAK4uI,MAAO,CACrD,IAEEm4mC,GAAsB7rsB,GADC9spB,KAAKm89B,MAAMviB,OADzB6xL,GAAOlqoC,MAC+BM,GAAQslC,UACE,GAEzDyxzC,GAAgBD,GAAoB,GACtCrl8B,GAAUA,GAAQppW,OAFFyuyC,GAAoB,IAGpCzrJ,GAAYA,GAAUhjpC,OAAO0uyC,IAG7B,IAAIx7/B,GAAQ,CAAC,EACTxhJ,EAASsx/B,GAAUA,GAAUtlrC,OAAS,GAC1C,QAASxmB,MAAOw6M,EAEdwhJ,GAAMh8V,IADIw6M,EAAOx6M,IAGnBg8V,GAAM0y+B,UAAY6N,GAClBzwI,GAAUA,GAAUtlrC,OAAS,GAAKw1U,EACpC,CACF,OAAS97S,IACPoqlC,GAAWx0mC,EAAEoqB,GACf,SACEoqlC,GAAWlvlC,GACb,CACF,KAAO,CACL,IACIq8yC,GAAsB/rsB,GADA9spB,KAAKm89B,MAAMviB,OAAO5k4B,GAAMnzE,GAAQslC,UACI,GAC9DmsX,GAAUul8B,GAAoB,GAC9B3rJ,GAAY2rJ,GAAoB,EAClC,CACA,IAAIpi/B,GAAQz2W,KAAK+01C,UAAY,IACzB/0X,GAAW,GACX1pc,GAAO,EACPwi0B,IAAY,EAEZC,GAAa,SAAoB5guC,IACnC,GAAIm+Z,GAAOn+Z,GAAK,CACd,IAAIs3O,GAAM6jD,GAAQxgY,MAAMwjgB,GAAMn+Z,IAAK31H,KAAK,IACpC0usC,GAAUhE,GAAU/0kC,GAAM,GAAG23sC,SAAW5iI,GAAU/0kC,GAAM,GAAG03sC,aAC/D7vW,GAASn99B,KAAK,IAAIqnD,OAAOulT,GAAK,MAAMvlT,OAAOwsyC,IAAUxlJ,KACvD,CACA,OAAO56qB,GAAOn+Z,EAChB,EAEI41J,GAAQ,SAAe/6N,IAEzB,GADA+lyC,GAAW/lyC,IACPgt6B,GAASp48B,OAAS,EACpBgQ,UAAOozyC,WAAW,IAAI9gxC,OAAO816B,GAASx99B,KAAK,KAAM,SAC1Cw99B,GAASp48B,OAAS,CAE7B,EACA,IAAKorC,GAAI,EAAGA,GAAIk6oC,GAAUtlrC,OAAQorC,KAAK,CAGrC,IAAI22f,GAAMujpB,GAAUl6oC,IAChB22f,GAAIzhL,SAAWyhL,GAAIopa,SAErBhlsB,GAAM/6N,IAENhzD,KAAKgr0C,WAAW,WAAW9gxC,OAAOwsyC,GAAS/u0C,GAAIgiiB,GAAIzhL,QAAUzxB,IAAQ,KAAKvsT,OAAOwsyC,GAASn6xC,GAAIotf,GAAIopa,QAAUt8mB,IAAQ,QACpH1oF,GAAM/6N,GAAI,GACV8lyC,IAAY,IAGRA,KACF941C,KAAKgr0C,WAAW,WAAW9gxC,OAAOwsyC,GAAS/u0C,IAAI,KAAKuiC,OAAOwsyC,GAASn6xC,IAAI,QACxEu8xC,IAAY,GAGVnvyB,GAAImmxB,SAAWnmxB,GAAIkmxB,cAAiB,GACtCkpB,GAAW/lyC,GAAI,IAGnBrrC,IAAKgiiB,GAAImmxB,SAAWr59B,EACtB,CAEA1oF,UAAM/6N,IAENhzD,KAAKgr0C,WAAW,MAEThr0C,KAAKy+d,SAAQ,CACtB,GAEEu63B,GAAU,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAC3HC,GAAkB,CACpB,EAAG,aACH,EAAG,YACH,EAAG,cAEDC,GAAoB,WACtB,SAASA,GAAK1y0C,GAAMwyB,IAElB,IAAIqniB,GAGJ,GAJAktnB,EAAgBvtsC,KAAMk51C,IAEtBl51C,KAAKwmB,KAAOA,GACZxmB,KAAKg5C,MAAQA,GACqB,QAA9Bh5C,KAAKwmB,KAAKmmoC,aAAa,GACzB,KAAM,wBAGR,QADIhjmB,GAAM,EACHA,GAAM3pjB,KAAKwmB,KAAKoB,SACrBy4jB,GAASrglB,KAAKwmB,KAAKmmoC,aAAahjmB,IAChCA,IAAO,GACHqvyB,GAAQjpzC,SAASswiB,MAGrB12B,IAAO3pjB,KAAKwmB,KAAKmmoC,aAAahjmB,IAEhC,IAAKqvyB,GAAQjpzC,SAASswiB,IACpB,KAAM,gBAER12B,IAAO,EACP3pjB,KAAKqvrC,KAAOrvrC,KAAKwmB,KAAKmjiB,MACtB3pjB,KAAKmoI,OAASnoI,KAAKwmB,KAAKmmoC,aAAahjmB,IAErC3pjB,KAAKyzC,MAAQzzC,KAAKwmB,KAAKmmoC,aADvBhjmB,IAAO,GAEPA,IAAO,EACP,IAAI1gQ,GAAWjpT,KAAKwmB,KAAKmjiB,MACzB3pjB,KAAK44zC,WAAaqgC,GAAgBhwiC,IAClCjpT,KAAKylH,IAAM,IACb,CACAqolC,SAAaorJ,GAAM,CAAC,CAClB931C,IAAK,QACLG,MAAO,SAAeqgC,IACpB,IAAI5hC,KAAKylH,IAGT,OAAAzlH,KAAKylH,IAAM7jF,GAAS+0F,IAAI,CACtB8+zB,KAAM,UACNw0Y,QAAS,QACTkvB,iBAAkBn51C,KAAKqvrC,KACvB/5P,MAAOt17B,KAAKyzC,MACZ2lzC,OAAQp51C,KAAKmoI,OACbg6sC,WAAYni1C,KAAK44zC,WACjBzgwB,OAAQ,cAKc,eAApBn4jB,KAAK44zC,aACP54zC,KAAKylH,IAAIj/F,KAAK6y0C,OAAY,CAAC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,IAEhEr51C,KAAKylH,IAAI+T,IAAIx5H,KAAKwmB,MAEXxmB,KAAKwmB,KAAO,IACrB,KAEK0y0C,EACT,CA1DwB,GA2DpBI,GAAwB,WAC1B,SAASA,GAAS9y0C,GAAMwyB,IACtBu0pC,EAAgBvtsC,KAAMs51C,IACtBt51C,KAAKg5C,MAAQA,GACbh5C,KAAK24hB,MAAQ,IAAI8mzB,EAAOt5zB,QAAQ3/f,IAChCxmB,KAAKyzC,MAAQzzC,KAAK24hB,MAAMllf,MACxBzzC,KAAKmoI,OAASnoI,KAAK24hB,MAAMxwZ,OACzBnoI,KAAKo4zC,QAAUp4zC,KAAK24hB,MAAMy/xB,QAC1Bp4zC,KAAKylH,IAAM,IACb,CACAqolC,SAAawrJ,GAAU,CAAC,CACtBl41C,IAAK,QACLG,MAAO,SAAeqgC,IACpB,IAAI23zC,IAAc,EAElB,GADAv51C,KAAK4hC,SAAWA,IACZ5hC,KAAKylH,IAGT,KAAIizsC,GAAkB14zC,KAAK24hB,MAAM+/xB,gBAC7B8gC,GAA8C,IAA/Bx51C,KAAK24hB,MAAM6/xB,gBAS9B,GARAx4zC,KAAKylH,IAAMzlH,KAAK4hC,SAAS+0F,IAAI,CAC3B8+zB,KAAM,UACNw0Y,QAAS,QACTkvB,iBAAkBzgC,GAAkB,EAAI14zC,KAAK24hB,MAAM02pB,KACnD/5P,MAAOt17B,KAAKyzC,MACZ2lzC,OAAQp51C,KAAKmoI,OACbgwb,OAAQ,iBAELugwB,GAAiB,CACpB,IAAIl1zC,GAASxD,KAAK4hC,SAAS+0F,IAAI,CAC7B8iuC,UAAWD,GAAe,EAAI,GAC9BE,OAAQ151C,KAAK24hB,MAAMjvX,OACnByvrC,iBAAkBn51C,KAAK24hB,MAAM02pB,KAC7BsqK,QAAS351C,KAAKyzC,QAEhBzzC,KAAKylH,IAAIj/F,KAAKoz0C,YAAiBp21C,GAC/BA,GAAOg2H,KACT,CACA,GAAkC,IAA9Bx5H,KAAK24hB,MAAM8zf,QAAQ7kgC,OACrB5nB,KAAKylH,IAAIj/F,KAAK27zC,WAAgBni1C,KAAK24hB,MAAMigyB,eACpC,CAEL,IAAInsS,GAAUzshC,KAAK4hC,SAAS+0F,MAC5B815B,GAAQjz5B,IAAIs0+B,EAAOjhmC,KAAK7M,KAAK24hB,MAAM8zf,UAEnCzshC,KAAKylH,IAAIj/F,KAAK27zC,WAAgB,CAAC,UAAW,YAAani1C,KAAK24hB,MAAM8zf,QAAQ7kgC,OAAS,EAAI,EAAG6kgC,GAC5F,CAGA,GAAyC,MAArCzshC,KAAK24hB,MAAM4ma,aAAak5X,UAAmB,CAG7C,IAAI9zzC,GAAM3E,KAAK24hB,MAAM4ma,aAAak5X,UAClCz4zC,KAAKylH,IAAIj/F,KAAKqz0C,KAAU,CAACl11C,GAAKA,GAChC,SAAW3E,KAAK24hB,MAAM4ma,aAAaxwlB,IAAK,CAGtC,IAGE6kP,GAFE5ljB,GAAO,GACPs4lC,GAAY45M,EAFNlg1C,KAAK24hB,MAAM4ma,aAAaxwlB,KAIlC,IACE,IAAKu3xB,GAAU5ymC,MAAOkgkB,GAAQ0yiB,GAAU10hC,KAAK4uI,MAAO,CAClD,IAAI74N,GAAIiskB,GAAMrylB,MACdysC,GAAKnrC,KAAK8kB,GAAGA,GACf,CACF,OAAS25B,IACPgllC,GAAUpvmC,EAAEoqB,GACd,SACEgllC,GAAU9plC,GACZ,CACAx8C,KAAKylH,IAAIj/F,KAAKqz0C,KAAU7rzC,EAC1B,KAAO,IAAIhuC,KAAK24hB,MAAM4ma,aAAan6X,QAGjCm0xB,WAAc,EACPv51C,KAAK851C,0BACP,GAAIphC,GAIT6gC,WAAc,EACPv51C,KAAK+51C,mBAAkB,CAEhC,GAAIP,KAAiBD,GACnB,OAAOv51C,KAAKg61C,aAEdh61C,KAAKmqb,UAAS,CAChB,GACC,CACD/ob,IAAK,WACLG,MAAO,WACL,GAAIvB,KAAKi61C,aAAc,CACrB,IAAIC,GAAQl61C,KAAK4hC,SAAS+0F,IAAI,CAC5B8+zB,KAAM,UACNw0Y,QAAS,QACTmvB,OAAQp51C,KAAKmoI,OACbmtzB,MAAOt17B,KAAKyzC,MACZ0lzC,iBAAkB,EAClBhhyB,OAAQ,cACRgqxB,WAAY,aACZkX,OAAQ,CAAC,EAAG,KAEda,GAAM1guC,IAAIx5H,KAAKi61C,cACfj61C,KAAKylH,IAAIj/F,KAAK8kzC,MAAW4uB,EAC3B,CAEA,OAAAl61C,KAAKylH,IAAI+T,IAAIx5H,KAAKo4zC,SAElBp4zC,KAAK24hB,MAAQ,KACN34hB,KAAKo4zC,QAAU,IACxB,GACC,CACDh3zC,IAAK,oBACLG,MAAO,WACL,IAAIqzB,GAAQ50B,KACZ,OAAOA,KAAK24hB,MAAMogyB,aAAa,SAAUnsgB,IAUvC,QATI/twB,GAAG95C,GACHo11C,GAAavl0C,GAAM+jgB,MAAMjvX,OACzBqjlB,GAAan4tB,GAAM6e,MAAQ7e,GAAMuzG,OACjCiwrC,GAAUtqN,EAAOg4B,MAAM/4Y,GAAaotmB,IACpCF,GAAensP,EAAOg4B,MAAM/4Y,IAC5B/5rB,GAAIjuD,GAAI85C,GAAI,EACZ4oF,GAAMmlrB,GAAOhlyB,OAEbwy0C,GAAqC,KAArBxl0C,GAAM+jgB,MAAM02pB,KAAc,EAAI,EAC3Cr8nC,GAAIy0E,IAAK,CACd,QAASiv4B,GAAa,EAAGA,GAAayjV,GAAYzjV,KAChD0hT,GAAQrzzC,MAAO6nzB,GAAO55vB,MACtBA,IAAKonyC,GAEPH,GAAap7yC,MAAO+twB,GAAO55vB,MAC3BA,IAAKonyC,EACP,CACAxl0C,UAAMwjyC,QAAUinB,EAAMl5zB,QAAQu7zB,YAAYtpB,IAC1CxjyC,GAAMql0C,aAAe5a,EAAMl5zB,QAAQu7zB,YAAYuY,IACxCrl0C,GAAMu1Z,UACf,EACF,GACC,CACD/ob,IAAK,0BACLG,MAAO,WACL,IAAI80B,GAASr2B,KACTu/7B,GAAev/7B,KAAK24hB,MAAM4ma,aAAan6X,QAC3C,OAAOplkB,KAAK24hB,MAAMogyB,aAAa,SAAUnsgB,IAGvC,QAFIqtiB,GAAensP,EAAOg4B,MAAMzvmC,GAAOod,MAAQpd,GAAO8xG,QAClDn1E,GAAI,EACC4yE,GAAI,EAAGpM,GAAMozrB,GAAOhlyB,OAAQg+G,GAAIpM,GAAKoM,KAC5Cq0tC,GAAajnyC,MAAOus4B,GAAa3yI,GAAOhnrB,KAE1CvvG,UAAO4j0C,aAAe5a,EAAMl5zB,QAAQu7zB,YAAYuY,IACzC5j0C,GAAO8zZ,UAChB,EACF,GACC,CACD/ob,IAAK,aACLG,MAAO,WACL,IAAI+1B,GAASt3B,KACbA,KAAK24hB,MAAMogyB,aAAa,SAAUnsgB,IAChCt1xB,GAAO8gyC,QAAUinB,EAAMl5zB,QAAQu7zB,YAAY90hB,IAC3Ct1xB,GAAO6yZ,UACT,EACF,KAEKmv6B,EACT,CArK4B,GAsKxBe,GAAwB,WAC1B,SAASA,KACP9sJ,EAAgBvtsC,KAAMq61C,GACxB,CACAvsJ,SAAausJ,GAAU,KAAM,CAAC,CAC5Bj51C,IAAK,OACLG,MAAO,SAAcgmN,GAAKvuK,IACxB,IAAIxyB,GACJ,GAAIsnlC,EAAOk7C,SAASzh8B,IAClB/gM,GAAO+gM,WACEA,cAAew4H,YACxBv5T,GAAOsnlC,EAAOjhmC,KAAK,IAAIizU,WAAWv4H,SAC7B,CACL,IAAIn9K,GACJ,GAAIA,GAAQ,wBAAwBP,KAAK09K,IACvC/gM,GAAOsnlC,EAAOjhmC,KAAKu9B,GAAM,GAAI,eAAQ,KAErC5jB,GAAOkjC,EAAGmvwC,aAAatxmC,KAErB,MAGN,CACA,GAAgB,MAAZ/gM,GAAK,IAA2B,MAAZA,GAAK,GAC3B,OAAO,IAAI0y0C,GAAK1y0C,GAAMwyB,IACjB,GAAgB,MAAZxyB,GAAK,IAAgD,QAAjCA,GAAK2B,SAAS,QAAS,EAAG,GACvD,OAAO,IAAImx0C,GAAS9y0C,GAAMwyB,IAE1B,MAAM,IAAI4kD,MAAM,wBAEpB,KAEKy8vC,EACT,CAjC4B,GAkCxBC,GAAc,CAChBC,WAAY,WACV,OAAAv61C,KAAKw61C,eAAiB,CAAC,EAChBx61C,KAAKy61C,YAAc,CAC5B,EACA9h0B,MAAO,SAAepxU,GAAK5/L,GAAG40C,IAC5B,IACIowd,GAAQulG,GAAIv5F,GAAO3nP,GAAIt4K,GAAMgiuC,GAD7B741C,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAElE,iBAANtO,KACT9lB,GAAU8lB,GACVA,GAAI,MAENA,GAA0C,OAArC+wG,GAAO/wG,IAAgB9lB,GAAQ8lB,GAAa+wG,GAAO14H,KAAK2nB,EAC7D40C,GAA2C,OAAtCm+xC,GAAQn+xC,IAAgB16D,GAAQ06D,GAAam+xC,GAAQ161C,KAAKu8D,EAC5C,iBAARgrJ,KACToxU,GAAQ34hB,KAAKw61C,eAAejzoC,KAEzBoxU,KAEDA,GADEpxU,GAAI9zK,OAAS8zK,GAAIp/E,OACXo/E,GAEAvnN,KAAKk40C,UAAU3wnC,KAGtBoxU,GAAMlza,KACTkza,GAAM/8I,MAAM57Y,MAEyB,MAAnCA,KAAK60G,KAAK41tC,SAAS9xyB,GAAM3/e,SAC3Bh5C,KAAK60G,KAAK41tC,SAAS9xyB,GAAM3/e,OAAS2/e,GAAMlza,KAE1C,IAAIgmG,GAAI5pN,GAAQ4xC,OAASklf,GAAMllf,MAC3BgzM,GAAI5kP,GAAQsmI,QAAUwwZ,GAAMxwZ,OAChC,GAAItmI,GAAQ4xC,QAAU5xC,GAAQsmI,OAAQ,CACpC,IAAIwqU,GAAKlnP,GAAIktU,GAAMllf,MACnBg4K,GAAIktU,GAAMllf,MAAQk/Z,GAClBlsN,GAAIkyS,GAAMxwZ,OAASwqU,EACrB,SAAW9wc,GAAQsmI,SAAWtmI,GAAQ4xC,MAAO,CAC3C,IAAIknzC,GAAKl0mC,GAAIkyS,GAAMxwZ,OACnBsjF,GAAIktU,GAAMllf,MAAQknzC,GAClBl0mC,GAAIkyS,GAAMxwZ,OAASwytC,EACrB,SAAW941C,GAAQ40W,MACjBhrJ,GAAIktU,GAAMllf,MAAQ5xC,GAAQ40W,MAC1BhwH,GAAIkyS,GAAMxwZ,OAAStmI,GAAQ40W,cAClB50W,GAAQ6tiB,IAAK,CACtB,IAAIkrzB,GAAe9tsB,GAAejrpB,GAAQ6tiB,IAAK,IAI/C1+P,GAAK2nP,GAAMllf,MAAQklf,GAAMxwZ,SAHzB+pf,GAAK0ouB,GAAa,KAClBju0B,GAAKiu0B,GAAa,KAIhBnvoC,GAAIyma,GACJzrY,GAAIyrY,GAAKlhV,KAETvqD,GAAIkmS,GACJlhU,GAAIkhU,GAAK37O,GAEb,SAAWnvS,GAAQg51C,MAAO,CACxB,IAAIC,GAAiBhusB,GAAejrpB,GAAQg51C,MAAO,IAInD7pjC,GAAK2nP,GAAMllf,MAAQklf,GAAMxwZ,SAHzB+pf,GAAK4ouB,GAAe,KACpBnu0B,GAAKmu0B,GAAe,KAIlBr0mC,GAAIkmS,GACJlhU,GAAIkhU,GAAK37O,KAETvlF,GAAIyma,GACJzrY,GAAIyrY,GAAKlhV,GAEb,CACA,OAAInvS,GAAQ6tiB,KAAO7tiB,GAAQg51C,SACH,WAAlBh51C,GAAQmnX,MACVrhW,GAAIA,GAAIuqmB,GAAK,EAAIzma,GAAI,EACM,UAAlB5pN,GAAQmnX,QACjBrhW,GAAIA,GAAIuqmB,GAAKzma,IAEQ,WAAnB5pN,GAAQkhgB,OACVxmc,GAAIA,GAAIowd,GAAK,EAAIlmS,GAAI,EACO,WAAnB5kP,GAAQkhgB,SACjBxmc,GAAIA,GAAIowd,GAAKlmS,KAIG,MAAhB5kP,GAAQw2C,MACVr4C,KAAKq4C,KAAK1wB,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GAAQw2C,MAEZ,MAAhBx2C,GAAQukyC,MACVpmyC,KAAKomyC,KAAKz+wC,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GAAQukyC,MAEL,MAAvBvkyC,GAAQ2yZ,aACVx0Z,KAAKy41C,oBAAoB521C,GAAQ2yZ,YAAa,MAAO7sY,GAAG40C,GAAG,MAGzDv8D,KAAKu8D,IAAMA,KACbv8D,KAAKu8D,GAAKkqL,IAEZzmP,KAAK+zF,OACL/zF,KAAKgxC,UAAUy6K,GAAG,EAAG,GAAIg7B,GAAG9+N,GAAG40C,GAAIkqL,IACnCzmP,KAAKgr0C,WAAW,IAAI9gxC,OAAOyue,GAAM3/e,MAAO,QACxCh5C,KAAKy+d,UACEz+d,IACT,EACAk40C,UAAW,SAAmB3wnC,IAC5B,IAAIoxU,GACJ,MAAmB,iBAARpxU,KACToxU,GAAQ34hB,KAAKw61C,eAAejzoC,KAEzBoxU,KACHA,GAAQ0h0B,GAAS5xvC,KAAK8+G,GAAK,IAAIr9J,SAASlqD,KAAKy61C,cAC1B,iBAARlzoC,KACTvnN,KAAKw61C,eAAejzoC,IAAOoxU,KAGxBA,EACT,GAEEoi0B,GAAmB,CACrBC,SAAU,SAAkBrz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,IAkBtC,QAAST,MAjBTS,GAAQ4z7B,KAAO,QACf5z7B,GAAQ0wgC,KAAOvygC,KAAKi71C,aAAatz0C,GAAG40C,GAAGkvJ,GAAGg7B,IAC1C5kP,GAAQi20C,OAAS,CAAC,EAAG,EAAG,GACA,SAApBj20C,GAAQoo0C,gBAA6Bpo0C,GAAQ2uE,EAAM,MACrD3uE,GAAQ2uE,EAAI,GAEU,SAApB3uE,GAAQoo0C,SACO,MAAbpo0C,GAAQqqvB,IACVrqvB,GAAQqqvB,EAAIlsvB,KAAK0o1C,gBAAgB7m1C,GAAQ48C,OAAS,CAAC,EAAG,EAAG,YAItD58C,GAAQ48C,MACa,iBAAjB58C,GAAQq51C,OACjBr51C,GAAQq51C,KAAO,IAAIp41C,OAAOjB,GAAQq51C,OAGpBr51C,GAAS,CACvB,IAAI8C,GAAM9C,GAAQT,IAClBS,GAAQT,GAAI,GAAG8E,cAAgB9E,GAAI0xB,MAAM,IAAMnuB,EACjD,CACA,IAAIgyH,GAAM32H,KAAK22H,IAAI90H,IACnB,OAAA7B,KAAK60G,KAAKqquC,YAAYr80C,KAAK8zH,IAC3BA,GAAI6C,MACGx5H,IACT,EACA0oF,KAAM,SAAc/gE,GAAG40C,GAAGkvJ,GAAGg7B,GAAGw+V,IAC9B,IAAIpjlB,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFp0B,UAAQoo0C,QAAU,OAClBpo0C,GAAQog1C,SAAW,IAAIn/0C,OAAOmilB,IAC9BpjlB,GAAQu+a,KAAO,UACM,MAAjBv+a,GAAQ48C,QACV58C,GAAQ48C,MAAQ,CAAC,IAAK,IAAK,KAEtBz+C,KAAKg71C,SAASrz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GACnC,EACAukyC,KAAM,SAAcz+wC,GAAG40C,GAAGkvJ,GAAGg7B,GAAG7kP,IAC9B,IAAIC,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFp0B,UAAQoo0C,QAAU,OAClBpo0C,GAAQ+jX,EAAI5lX,KAAK22H,IAAI,CACnBg6M,EAAG,OACHZ,EAAG,IAAIjtU,OAAOlB,MAEhBC,GAAQ+jX,EAAEpsP,MACHx5H,KAAKg71C,SAASrz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GACnC,EACAw2C,KAAM,SAAc1wB,GAAG40C,GAAGkvJ,GAAGg7B,GAAGjhP,IAC9B,IAAI3D,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEnF,GADAp0B,GAAQoo0C,QAAU,OACC,iBAARzk0C,GAAkB,CAE3B,IAAIwyH,GAAQh4H,KAAK0vI,MAAMlpH,KAAKu7zC,MAAMv7zC,KAClC,KAAIhhB,IAAO,GAAKA,GAAMwyH,GAAMmjuC,KAAKvz0C,QAO/B,MAAM,IAAIg2E,MAAM,4BAA4B1zC,OAAO1kD,KANnD3D,GAAQ+jX,EAAI5lX,KAAK22H,IAAI,CACnBg6M,EAAG,OACHZ,EAAG,CAAC/3M,GAAMmjuC,KAAK311C,IAAM,MAAO,KAAM,KAAM,QAE1C3D,GAAQ+jX,EAAEpsP,KAId,MAEE33H,GAAQ+jX,EAAI5lX,KAAK22H,IAAI,CACnBg6M,EAAG,MACHongC,IAAK,IAAIj10C,OAAO0C,MAElB3D,GAAQ+jX,EAAEpsP,MAEZ,OAAOx5H,KAAKg71C,SAASrz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GACnC,EACAu51C,QAAS,SAAiBzz0C,GAAG40C,GAAGkvJ,GAAGg7B,IACjC,IAAI5kP,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEjFol0C,GAAsBvusB,GADC9spB,KAAKi71C,aAAatz0C,GAAG40C,GAAGkvJ,GAAGg7B,IACO,GACzD8nI,GAAK8s+B,GAAoB,GACzB7s+B,GAAK6s+B,GAAoB,GACzBj39B,GAAKi39B,GAAoB,GACzBh39B,GAAKg39B,GAAoB,GAC3Bx51C,UAAQy51C,WAAa,CAAC/s+B,GAAI8V,GAAID,GAAIC,GAAI9V,GAAIC,GAAI4V,GAAI5V,IAClD3sX,GAAQog1C,SAAW,IAAIn/0C,OAChB9C,KAAKg71C,SAASrz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GACnC,EACAyj5B,UAAW,SAAmB393B,GAAG40C,GAAGkvJ,GAAGg7B,IACrC,IAAI5kP,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFp0B,UAAQoo0C,QAAU,YACG,MAAjBpo0C,GAAQ48C,QACV58C,GAAQ48C,MAAQ,CAAC,IAAK,IAAK,MAEtBz+C,KAAKo71C,QAAQzz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GAClC,EACA217B,UAAW,SAAmB7v6B,GAAG40C,GAAGkvJ,GAAGg7B,IACrC,IAAI5kP,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFp0B,UAAQoo0C,QAAU,YACXjq0C,KAAKo71C,QAAQzz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GAClC,EACAu5oC,OAAQ,SAAgBzznC,GAAG40C,GAAGkvJ,GAAGg7B,IAC/B,IAAI5kP,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFp0B,UAAQoo0C,QAAU,YACXjq0C,KAAKo71C,QAAQzz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GAClC,EACA051C,eAAgB,SAAwBht+B,GAAIC,GAAI4V,GAAIC,IAClD,IAAIxiY,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFp0B,UAAQoo0C,QAAU,OAClBpo0C,GAAQog1C,SAAW,IAAIn/0C,OACvBjB,GAAQ0tU,EAAI,CAACg/C,GAAIvuX,KAAK60G,KAAKszB,OAASqmP,GAAI4V,GAAIpkY,KAAK60G,KAAKszB,OAASk8P,IACxDrkY,KAAKg71C,SAASzs+B,GAAIC,GAAI4V,GAAIC,GAAIxiY,GACvC,EACA251C,eAAgB,SAAwB7z0C,GAAG40C,GAAGkvJ,GAAGg7B,IAC/C,IAAI5kP,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFp0B,UAAQoo0C,QAAU,SAClBpo0C,GAAQog1C,SAAW,IAAIn/0C,OAChB9C,KAAKg71C,SAASrz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GACnC,EACA451C,kBAAmB,SAA2B9z0C,GAAG40C,GAAGkvJ,GAAGg7B,IACrD,IAAI5kP,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFp0B,UAAQoo0C,QAAU,SAClBpo0C,GAAQog1C,SAAW,IAAIn/0C,OAChB9C,KAAKg71C,SAASrz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GACnC,EACA651C,eAAgB,SAAwB/z0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAGzxK,IAClD,IAAInzE,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFp0B,UAAQoo0C,QAAU,WAClBpo0C,GAAQog1C,SAAW,IAAIn/0C,OAAOkyE,IAC9BnzE,GAAQ851C,GAAK,IAAI741C,OACV9C,KAAKg71C,SAASrz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GACnC,EACA+51C,eAAgB,SAAwBj00C,GAAG40C,GAAGkvJ,GAAGg7B,IAC/C,IAAI1qM,GAAO9lB,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5Ep0B,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/E4l0C,GAAW771C,KAAK+7C,KAAKA,GAAKwrK,IAAK7kN,OAAO08B,OAAO,CAC/C+7d,QAAQ,GACPp/c,KACHl6C,UAAQoo0C,QAAU,iBAClBpo0C,GAAQi61C,GAAKD,GAETh61C,GAAQog1C,SACVpg1C,GAAQog1C,SAAW,IAAIn/0C,OAAOjB,GAAQog1C,UAC7B4Z,GAASr10C,KAAKu10C,OACvBl61C,GAAQog1C,SAAW4Z,GAASr10C,KAAKu10C,MAE5B/71C,KAAKg71C,SAASrz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAG5kP,GACnC,EACAo51C,aAAc,SAAsB1s+B,GAAIC,GAAI/iK,GAAGg7B,IAE7C,IAAI49I,GAAK7V,GACTA,IAAM/nI,GAEN,IAAI29I,GAAK7V,GAAK9iK,GAEVuwoC,GAAalvsB,GAAe9spB,KAAKsq0C,KAAM,GACzC1n+B,GAAKo5/B,GAAW,GAChB9r/B,GAAK8r/B,GAAW,GAChB7r/B,GAAK6r/B,GAAW,GAChBxuB,GAAKwuB,GAAW,GAChBvuB,GAAKuuB,GAAW,GAChBtuB,GAAKsuB,GAAW,GAClBzt+B,MAIO,CAJPA,GAAK3rB,GAAK2rB,GAAKpe,GAAKqe,GAAKi/8B,GACzBj/8B,GAAKte,GAAKqe,GAAKi/8B,GAAKh/8B,GAAKk/8B,GACzBtp8B,GAAKxhC,GAAKwhC,GAAKj0B,GAAKk0B,GAAKop8B,GACzBpp8B,GAAKn0B,GAAKk0B,GAAKop8B,GAAKnp8B,GAAKqp8B,GAE3B,GAEEuuB,GAA0B,WAC5B,SAASA,GAAWr6zC,GAAU+nJ,GAAQhgI,GAAO83oB,IAC3C,IAAI5/rB,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAChF7mB,UAAU,GAEZm+rC,EAAgBvtsC,KAAMi81C,IACtBj81C,KAAK4hC,SAAWA,GAChB5hC,KAAK6B,QAAUA,GACf7B,KAAKk81C,YAAc,CAAC,EACP,OAATz6pB,KACFzhsB,KAAKk81C,YAAYhB,KAAU,CAACz5pB,GAAK2lf,WAAY,QAEhC,OAAXz9/B,KACF3pL,KAAKk81C,YAAY9vJ,OAAYzihC,IAEjB,OAAVhgI,KACF3pD,KAAKk81C,YAAY9w8B,MAAW,IAAItoZ,OAAO6mD,KAEzC3pD,KAAKonrC,WAAapnrC,KAAK4hC,SAAS+0F,IAAI32H,KAAKk81C,aACzCl81C,KAAKkrI,SAAW,EAClB,CACA4ikC,SAAamuJ,GAAY,CAAC,CACxB761C,IAAK,UACLG,MAAO,SAAiBooD,IACtB,IAGIrmD,GAAS,IAAI241C,GAAWj81C,KAAK4hC,SAAU5hC,KAAKonrC,WAAYz9nC,GAAO3pD,KAAK4hC,SAASizE,KAHnE5+E,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAChF7mB,UAAU,IAGZ,OAAApP,KAAKkrI,SAASroI,KAAKS,IACZA,EACT,GACC,CACDlC,IAAK,aACLG,MAAO,WACL,GAAIvB,KAAKkrI,SAAStjH,OAAS,EAAG,CACxB5nB,KAAK6B,QAAQuN,WACfpP,KAAKk81C,YAAYC,MAAQn81C,KAAKkrI,SAAStjH,QAEzC,IACE0ugB,GAAOt2hB,KAAKkrI,SAASlrI,KAAKkrI,SAAStjH,OAAS,GAC9C5nB,KAAKk81C,YAAYE,MAFLp81C,KAAKkrI,SAAS,GAEKk8iC,WAC/BpnrC,KAAKk81C,YAAYG,KAAO/l0B,GAAK8wpB,WAC7B,QAASp0nC,GAAI,EAAGy0E,GAAMznI,KAAKkrI,SAAStjH,OAAQorC,GAAIy0E,GAAKz0E,KAAK,CACxD,IAAI0hL,GAAQ10O,KAAKkrI,SAASl4E,IACtBA,GAAI,IACN0hL,GAAMwnnC,YAAYI,KAAOt81C,KAAKkrI,SAASl4E,GAAI,GAAGo0nC,YAE5Cp0nC,GAAIhzD,KAAKkrI,SAAStjH,OAAS,IAC7B8sN,GAAMwnnC,YAAYK,KAAOv81C,KAAKkrI,SAASl4E,GAAI,GAAGo0nC,YAEhD1y8B,GAAM8nnC,YACR,CACF,CACA,OAAOx81C,KAAKonrC,WAAW5tjC,KACzB,KAEKyiuC,EACT,CAzD8B,GA0D1BQ,GAAe,CACjBC,YAAa,WACX,OAAO181C,KAAK0hoB,QAAU,IAAIu6tB,GAAWj81C,KAAM,KAAM,KAAM,KACzD,EACAw81C,WAAY,WAEV,GADAx81C,KAAK0hoB,QAAQ86tB,aACTx81C,KAAK0hoB,QAAQx2f,SAAStjH,OAAS,EACjC,OAAA5nB,KAAK0vI,MAAMlpH,KAAKm20C,SAAW381C,KAAK0hoB,QAAQ0ljB,WACjCpnrC,KAAK0vI,MAAMlpH,KAAKo20C,SAAW,aAEtC,GAOEC,GAAmC,WACrC,SAASA,GAAoBC,GAASC,IACpCxvJ,EAAgBvtsC,KAAM681C,IACtB781C,KAAK2qd,KAAO,CAAC,CACXmy4B,QAASA,GACTC,KAAMA,IAEV,CACAjvJ,SAAa+uJ,GAAqB,CAAC,CACjCz71C,IAAK,OACLG,MAAO,SAAcy71C,IACnB,IAAIpo0C,GAAQ50B,KACZg91C,GAAcry4B,KAAKnsb,QAAQ,SAAUm4F,IACnC,OAAO/hG,GAAM+1b,KAAK9nd,KAAK8zH,GACzB,EACF,KAEKkmuC,EACT,CAlBuC,GAmBnCI,GAAmC,WACrC,SAASA,GAAoBr7zC,GAAUn9B,IACrC,IAAImwB,GAAQ50B,KACR6B,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Ei1G,GAAWj1G,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,KACnFs3qC,EAAgBvtsC,KAAMi91C,IACtBj91C,KAAK4hC,SAAWA,GAChB5hC,KAAKk91C,WAAY,EACjBl91C,KAAKm91C,QAAS,EACdn91C,KAAKo91C,UAAW,EAChBp91C,KAAKonrC,WAAaxlpC,GAAS+0F,IAAI,CAE7Bg6M,EAAGlsU,KAEL,IAAI+hB,GAAOxmB,KAAKonrC,WAAW5gqC,MACvBpkB,MAAMq3G,QAAQ53G,KAAY7B,KAAKq91C,cAAcx71C,OAC/CqpI,GAAWrpI,GACXA,GAAU,CAAC,UAEFA,GAAQ8nD,MAAU,MAC3BnjC,GAAK0qT,EAAI,IAAIpuU,OAAOjB,GAAQ8nD,eAEnB9nD,GAAQy5sC,KAAS,MAC1B90rC,GAAK820C,KAAO,IAAIx61C,OAAOjB,GAAQy5sC,cAEtBz5sC,GAAQ2vtB,IAAQ,MACzBhrsB,GAAK+20C,IAAM,IAAIz61C,OAAOjB,GAAQ2vtB,aAErB3vtB,GAAQuN,SAAa,MAC9BoX,GAAK2pT,EAAI,IAAIrtU,OAAOjB,GAAQuN,kBAEnBvN,GAAQsrpB,OAAW,MAC5B3moB,GAAKg30C,WAAa,IAAI161C,OAAOjB,GAAQsrpB,SAEvCntpB,KAAKsggB,UAAY,GACbp1X,KACG9oI,MAAMq3G,QAAQyxB,MACjBA,GAAW,CAACA,KAEdA,GAAS1sG,QAAQ,SAAUk2M,IACzB,OAAO9/M,GAAM+5D,IAAI+lJ,GACnB,GACA10O,KAAKw5H,MAET,CACAs0kC,SAAamvJ,GAAqB,CAAC,CACjC771C,IAAK,MACLG,MAAO,SAAamzO,IAClB,GAAI10O,KAAKm91C,OACP,MAAM,IAAIv/vC,MAAM,uDAElB,IAAK59F,KAAKq91C,cAAc3onC,IACtB,MAAM,IAAI92I,MAAM,mCAElB,OAAI82I,cAAiBuonC,KACnBvonC,GAAMm6d,UAAU7usB,KAAKonrC,YACjBpnrC,KAAKk91C,WACPxonC,GAAM+onC,eAGN/onC,cAAiBmonC,IACnB781C,KAAK091C,wBAAwBhpnC,IAEV,mBAAVA,IAAwB10O,KAAKk91C,YAEtCxonC,GAAQ10O,KAAK291C,mBAAmBjpnC,KAElC10O,KAAKsggB,UAAUz9f,KAAK6xO,IACb10O,IACT,GACC,CACDoB,IAAK,0BACLG,MAAO,SAAiCs4H,IACtC,IAAIxjG,GAASr2B,KACb65H,GAAQ8wV,KAAKnsb,QAAQ,SAAU5I,IAC7B,IAAIkn0C,GAAUln0C,GAAKkn0C,QACjBC,GAAOnn0C,GAAKmn0C,KACU1m0C,GAAOuL,SAASg8zC,sBAAsB9m0C,IAAIgm0C,GAAQt20C,KAAK67zC,eAC7D0a,IAAQ1m0C,GAAO+wpC,UACnC,EACF,GACC,CACDhmrC,IAAK,YACLG,MAAO,SAAmBs81C,IACxB,GAAI791C,KAAKonrC,WAAW5gqC,KAAK+qT,EACvB,MAAM,IAAI3zO,MAAM,mDAElB59F,KAAKonrC,WAAW5gqC,KAAK+qT,EAAIsshC,GACzB791C,KAAK8noC,QACP,GACC,CACD1moC,IAAK,cACLG,MAAO,WACL,IAAI+1B,GAASt3B,KACTA,KAAKk91C,YAGTl91C,KAAKsggB,UAAU9he,QAAQ,SAAUk2M,GAAO92M,IAClC82M,cAAiBuonC,IACnBvonC,GAAM+onC,cAEa,mBAAV/onC,KACTp9M,GAAOgpe,UAAU1ie,IAAStG,GAAOqm0C,mBAAmBjpnC,IAExD,GACA10O,KAAKk91C,WAAY,EACjBl91C,KAAK8noC,SACP,GACC,CACD1moC,IAAK,MACLG,MAAO,WACDvB,KAAKm91C,SAGTn91C,KAAKsggB,UAAUz5f,OAAO,SAAU6tO,IAC9B,OAAOA,cAAiBuonC,EAC1B,GAAGz+zC,QAAQ,SAAUk2M,IACnB,OAAOA,GAAMl7G,KACf,GACAx5H,KAAKm91C,QAAS,EACdn91C,KAAK8noC,SACP,GACC,CACD1moC,IAAK,gBACLG,MAAO,SAAuBmzO,IAC5B,OAAOA,cAAiBuonC,IAAuBvonC,cAAiBmonC,IAAwC,mBAAVnonC,EAChG,GACC,CACDtzO,IAAK,qBACLG,MAAO,SAA4Bu81C,IACjC,IAAIjkuC,GAAU75H,KAAK4hC,SAAS01zC,qBAAqBt31C,KAAKonrC,WAAW5gqC,KAAKmqT,GACtEmthC,YACA991C,KAAK4hC,SAASm8zC,mBACd/91C,KAAK091C,wBAAwB7juC,IACtBA,EACT,GACC,CACDz4H,IAAK,eACLG,MAAO,WACL,SAAKvB,KAAKonrC,WAAW5gqC,KAAK+qT,IAAMvxU,KAAKm91C,SAG9Bn91C,KAAKsggB,UAAU97c,MAAM,SAAUkwL,IACpC,MAAqB,mBAAVA,OAGPA,cAAiBuonC,KACZvonC,GAAMspnC,eAGjB,EACF,GACC,CACD581C,IAAK,SACLG,MAAO,WACL,IAAIq2B,GAAS53B,KACTA,KAAKo91C,WAAap91C,KAAKg+1C,iBAG3Bh+1C,KAAKonrC,WAAW5gqC,KAAKkqT,EAAI,GACzB1wU,KAAKsggB,UAAU9he,QAAQ,SAAUk2M,IAC/B,OAAO98M,GAAOqm0C,YAAYvpnC,GAC5B,GACA10O,KAAKonrC,WAAW5tjC,MAIhBx5H,KAAKsggB,UAAY,GACjBtggB,KAAKonrC,WAAW5gqC,KAAKkqT,EAAI,KACzB1wU,KAAKo91C,UAAW,EAClB,GACC,CACDh81C,IAAK,cACLG,MAAO,SAAqBmzO,IAC1B,IAAI18M,GAASh4B,KACT00O,cAAiBuonC,IACnBj91C,KAAKonrC,WAAW5gqC,KAAKkqT,EAAE7tU,KAAK6xO,GAAM0y8B,YAEhC1y8B,cAAiBmonC,IACnBnonC,GAAMi2O,KAAKnsb,QAAQ,SAAUC,IAC3B,IAAIq+zC,GAAUr+zC,GAAMq+zC,QAClBC,GAAOt+zC,GAAMs+zC,KACV/k0C,GAAOovpC,WAAW5gqC,KAAK030C,KAC1Blm0C,GAAOovpC,WAAW5gqC,KAAK030C,GAAKpB,IAG5B9k0C,GAAOovpC,WAAW5gqC,KAAKkqT,EAAE7tU,KADvBm1B,GAAOovpC,WAAW5gqC,KAAK030C,KAAOpB,GACFC,GAEA,CAC5Btna,KAAM,MACNyoa,GAAIpB,GACJqB,KAAMpB,IAGZ,EAEJ,KAEKE,EACT,CAvMuC,GAwMnCmB,GAA6B,SAAU5b,IACzC91I,EAAU0xJ,GAAe5b,IACzB,IAAIh0sC,GAASq+jC,EAAauxJ,IAC1B,SAASA,KACP7wJ,SAAgBvtsC,KAAMo+1C,IACf5vtC,GAAOx4G,MAAMh2B,KAAMi2B,UAC5B,CACA63qC,SAAaswJ,GAAe,CAAC,CAC3Bh91C,IAAK,eACLG,MAAO,SAAsBs9C,GAAGE,IAC9B,OAAOvzB,SAASqzB,IAAKrzB,SAASuzB,GAChC,GACC,CACD39C,IAAK,YACLG,MAAO,WACL,MAAO,MACT,GACC,CACDH,IAAK,cACLG,MAAO,SAAqBskI,IAC1B,OAAOr6G,SAASq6G,GAClB,KAEKu4tC,EACT,CAxBiC,CAwB/B5d,IACE6d,GAAgB,CAClBC,aAAc,SAAsBz81C,IAClC7B,KAAKu+1C,eAAiB,GAClB181C,GAAQ281C,SACVx+1C,KAAKy+1C,wBAAwBj40C,KAAKk40C,QAAS,EAC3C1+1C,KAAK2+1C,oBAET,EACAC,YAAa,SAAqB/hpC,IAChC,IAAIh7M,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,KAClF,GAAY,aAAR4mL,IAAsBh7M,IAAWA,GAAQk71C,KAAM,CACjD,IAAI8B,GAAU,EAMd,IALA7+1C,KAAK60G,KAAKqtuC,SAAS1jzC,QAAQ,SAAUsg0C,KAC/BD,IAAWC,GAAQ9B,eAAiC,aAAhB8B,GAAQjipC,MAC9CgipC,IAEJ,GACOA,MACL7+1C,KAAK+91C,kBAET,CACA,IAAKl81C,GACH,OAAA7B,KAAK60G,KAAKqtuC,SAASr/0C,KAAK,CACtBg6M,IAAKA,KAEP78M,KAAKgr0C,WAAW,IAAI9gxC,OAAO2yJ,GAAK,SACzB78M,KAETA,KAAK60G,KAAKqtuC,SAASr/0C,KAAK,CACtBg6M,IAAKA,GACLh7M,QAASA,KAEX,IAAIulrC,GAAa,CAAC,EAClB,cAAWvlrC,GAAQk71C,KAAS,MAC1B31K,GAAW+2K,KAAOt81C,GAAQk71C,MAEhB,aAARlgpC,KAC0B,iBAAjBh7M,GAAQ4C,OACjB2irC,GAAW3xP,KAAO5z7B,GAAQ4C,MAExBrC,MAAMq3G,QAAQ53G,GAAQ8jgB,QACxByhrB,GAAW7oO,KAAO,CAAC188B,GAAQ8jgB,KAAK,GAAI3lgB,KAAK60G,KAAKszB,OAAStmI,GAAQ8jgB,KAAK,GAAI9jgB,GAAQ8jgB,KAAK,GAAI3lgB,KAAK60G,KAAKszB,OAAStmI,GAAQ8jgB,KAAK,KAEvHvjgB,MAAMq3G,QAAQ53G,GAAQk91C,WAAal91C,GAAQk91C,SAASv6yC,MAAM,SAAU7/C,IACtE,MAAsB,iBAARA,EAChB,KACEyirC,GAAW43K,SAAWn91C,GAAQk91C,WAGtB,SAARlipC,KACEh7M,GAAQy5sC,OACVl0B,GAAWk2K,KAAO,IAAIx61C,OAAOjB,GAAQy5sC,OAEnCz5sC,GAAQ2vtB,MACV41d,GAAWm2K,IAAM,IAAIz61C,OAAOjB,GAAQ2vtB,MAElC3vtB,GAAQuN,WACVg4qC,GAAWj32B,EAAI,IAAIrtU,OAAOjB,GAAQuN,WAEhCvN,GAAQsrpB,SACVi6hB,GAAWo2K,WAAa,IAAI161C,OAAOjB,GAAQsrpB,UAG/CntpB,KAAKgr0C,WAAW,IAAI9gxC,OAAO2yJ,GAAK,KAAK3yJ,OAAOy2xC,GAAU7vW,QAAQs2M,IAAa,SACpEpnrC,IACT,EACAs31C,qBAAsB,SAA8Bz6oC,IAClD,IAAIh7M,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Egp0C,GAAoBj/1C,KAAK491C,sBAAsB9m0C,IAAI92B,KAAK60G,KAAKqqvC,qBAC7DnC,GAAOkC,GAAkBr30C,OAC7Bq30C,GAAkBp81C,KAAK,MACvB7C,KAAK4+1C,YAAY/hpC,GAAK6ioC,EAAeA,EAAe,CAAC,EAAG790C,IAAU,CAAC,EAAG,CACpEk71C,KAAMA,MAER,IAAIC,GAAgB,IAAIH,GAAoB781C,KAAK60G,KAAKuykC,WAAY21K,IAClE,OAAA/81C,KAAK60G,KAAKqtuC,SAASpvzC,OAAM,GAAI,GAAGkq0C,cAAgBA,GACzCA,EACT,EACAe,iBAAkB,WAChB,OAAA/91C,KAAK60G,KAAKqtuC,SAASnsyC,MACnB/1C,KAAKgr0C,WAAW,OACThr0C,IACT,EACAo31C,OAAQ,SAAgB3y1C,IAGtB,OAAO,IAAIw41C,GAAoBj91C,KAAMyE,GAFvBwxB,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACpEA,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,KAErF,EACAih0C,aAAc,SAAsBiI,IAClC,IAAIC,GAAiBp/1C,KAAK2+1C,oBAC1BQ,UAAWtwpB,UAAUuwpB,IACrBD,GAAW1B,cACXz91C,KAAKu+1C,eAAe171C,KAAKs81C,IACpBC,GAAe540C,KAAKkqT,IACvB0uhC,GAAe540C,KAAKkqT,EAAI,IAE1B0uhC,GAAe540C,KAAKkqT,EAAE7tU,KAAKs81C,GAAW/3K,YAC/BpnrC,IACT,EACAq/1C,iBAAkB,SAA0BC,IAC1C,IAAI1q0C,GAAQ50B,KACZs/1C,GAAa9g0C,QAAQ,SAAUsg0C,IAC7B,GAAIA,GAAQ9B,cAAe,CACzB,IAAIA,GAAgB8B,GAAQ9B,cACxBuC,GAAmB3q0C,GAAM0i0C,qBAAqBwH,GAAQjipC,IAAKiipC,GAAQj91C,SACvEm71C,GAAcn61C,KAAK081C,IACnB3q0C,GAAMigF,KAAKqtuC,SAASpvzC,OAAM,GAAI,GAAGkq0C,cAAgBA,EACnD,MACEpo0C,GAAMgq0C,YAAYE,GAAQjipC,IAAKiipC,GAAQj91C,QAE3C,EACF,EACA291C,gBAAiB,SAAyB3qvC,IACxC,IAAIyqvC,GAAezqvC,GAAKqtuC,SACxBod,UAAa9g0C,QAAQ,WACnB,OAAOq2E,GAAKvuF,MAAM,MACpB,GACAuuF,GAAKqtuC,SAAW,GACTod,EACT,EACAb,sBAAuB,WACrB,OAAKz+1C,KAAK0vI,MAAMlpH,KAAKi50C,WACnBz/1C,KAAK0vI,MAAMlpH,KAAKi50C,SAAWz/1C,KAAK22H,IAAI,CAAC,IAEhC32H,KAAK0vI,MAAMlpH,KAAKi50C,QACzB,EACAd,kBAAmB,WACjB,OAAK3+1C,KAAK0vI,MAAMlpH,KAAKk50C,iBACnB1/1C,KAAK0vI,MAAMlpH,KAAKk50C,eAAiB1/1C,KAAK22H,IAAI,CACxC8+zB,KAAM,iBACNkqa,WAAY,IAAIvB,GAChBwB,kBAAmB,KAGhB5/1C,KAAK0vI,MAAMlpH,KAAKk50C,cACzB,EACA9B,oBAAqB,WACnB,OAAO591C,KAAK2+1C,oBAAoBn40C,KAAKm50C,UACvC,EACArd,8BAA+B,WAE7Bti1C,KAAKy+1C,wBACL,IAAIW,GAAiBp/1C,KAAK2+1C,oBACtBv91C,GAAMg+1C,GAAe540C,KAAKo50C,oBAC9BR,UAAe540C,KAAKm50C,WAAWhxwC,IAAIvtF,GAAK,IACjCA,EACT,EACAy+1C,YAAa,WACX,IAAIT,GAAiBp/1C,KAAK0vI,MAAMlpH,KAAKk50C,eACjCN,KACFA,GAAe5luC,MACfx5H,KAAKu+1C,eAAe//zC,QAAQ,SAAU2g0C,IACpC,OAAOA,GAAW3luC,KACpB,IAEEx5H,KAAK0vI,MAAMlpH,KAAKi50C,UAClBz/1C,KAAK0vI,MAAMlpH,KAAKi50C,SAASjmuC,KAE7B,GAEEsmuC,GAAc,CAChB/lmC,SAAU,EACVj7L,SAAU,EACVihyC,SAAU,EACVC,UAAW,KACXjxxC,SAAU,KACVkxxC,kBAAmB,MACnBC,YAAa,MACbC,WAAY,MACZC,MAAO,OACPC,KAAM,OACN16zC,KAAM,OACN26zC,YAAa,QACbC,QAAS,SAEPC,GAAgB,CAClB9nuC,KAAM,EACNqjP,OAAQ,EACR1gG,MAAO,GAELollC,GAAY,CACdl/1C,MAAO,IACP4hN,aAAc,MAEZu9oC,GAAiB,CACnB/97B,IAAK,IACLg+7B,SAAU,IACVC,KAAM,IACN3yzC,MAAO,IACP4yzC,IAAK,KAEHC,UACM,CACNC,KAAM,EACNC,UAAU,EACVC,SAAU,aACVpuzC,SAAU,GACVquzC,iBAAiB,GANjBJ,WAQO,CACPC,KAAM,EACNC,UAAU,GAGVG,GAAgB,CAKlBC,SAAU,WACR,IAAKph2C,KAAKm89B,MACR,MAAM,IAAIv+3B,MAAM,kDAElB59F,KAAKqh2C,UAAY,CACf90zB,MAAO,CAAC,EACRqozB,YAAa501C,KAAKm89B,MAAMv69B,MAE1B5B,KAAKqh2C,UAAU90zB,MAAMvsiB,KAAKm89B,MAAMny9B,IAAMhK,KAAKm89B,MAAMxl2B,MACjD,IAAInwG,GAAO,CACT860C,OAAQ,GACRC,iBAAiB,EACjB5F,GAAI,IAAI741C,OAAO,IAAIonD,OAAOlqD,KAAKm89B,MAAMny9B,GAAI,cACzCw31C,GAAI,CACF52B,KAAM,CAAC,IAGXpkzC,GAAKg70C,GAAG52B,KAAK5q0C,KAAKm89B,MAAMny9B,IAAMhK,KAAKm89B,MAAMxl2B,MACzC,IAAI8quC,GAAWzh2C,KAAK22H,IAAInwG,IACxB,OAAAxmB,KAAK0vI,MAAMlpH,KAAKi70C,SAAWA,GACpBzh2C,IACT,EAIA0h2C,YAAa,WACX,IAAI9s0C,GAAQ50B,KACZ,GAAIA,KAAK0vI,MAAMlpH,KAAKi70C,SAAU,CAC5B,IAAK/+1C,OAAOC,KAAK3C,KAAKqh2C,UAAU90zB,OAAO3khB,SAAW5nB,KAAKqh2C,UAAUzM,YAC/D,MAAM,IAAIh3vC,MAAM,mCAElB,IAAI+jwC,GAAW3h2C,KAAK0vI,MAAMlpH,KAAKi70C,SAASj70C,KAAKg70C,GAAG52B,KAChDlo0C,OAAOC,KAAK3C,KAAKqh2C,UAAU90zB,OAAO/tgB,QAAQ,SAAU58B,IAClD+/1C,GAAS//1C,IAAQgzB,GAAMys0C,UAAU90zB,MAAM3qiB,GACzC,GACA5B,KAAK0vI,MAAMlpH,KAAKi70C,SAASj70C,KAAK860C,OAAO9i0C,QAAQ,SAAUoj0C,IACrDht0C,GAAMit0C,UAAUD,GAClB,GACA5h2C,KAAK0vI,MAAMlpH,KAAKi70C,SAASjouC,KAC3B,CACA,OAAOx5H,IACT,EACA6h2C,UAAW,SAAmBlruC,IAC5B,IAAItgG,GAASr2B,KACb,OAAIoC,MAAMq3G,QAAQkd,GAAInwG,KAAK200C,QACzBxkuC,GAAInwG,KAAK200C,KAAK38zC,QAAQ,SAAUsj0C,IAC9Bzr0C,GAAOwr0C,UAAUC,GACnB,GACAnruC,GAAI6C,OAECx5H,IACT,EAQA+h2C,UAAW,SAAmBng2C,IAC5B,IACIog2C,GAAYhi2C,KAAKii2C,WAAWrg2C,GAAM,KADxBq0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAE/E2r0C,GAAW5h2C,KAAK22H,IAAIqruC,IACxB,OAAAhi2C,KAAKki2C,aAAaN,IACXA,EACT,EAYAO,eAAgB,SAAwBvg2C,GAAM6C,GAAMkjB,GAAG40C,GAAGkvJ,GAAGg7B,IAC3D,IACIu7mC,GAAYhi2C,KAAKii2C,WAAWrg2C,GAAM6C,GADxBwxB,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,GASnF,OAPA+r0C,GAAU/3B,QAAU,cACA1g0C,IAAhBy41C,GAAUxxxC,IACZwxxC,GAAUxxxC,EAAI,GAGhBxwE,KAAKg71C,SAASrz0C,GAAG40C,GAAGkvJ,GAAGg7B,GAAGu7mC,IAEnBhi2C,KAAKki2C,aADGli2C,KAAK60G,KAAKqquC,YAAYl/0C,KAAK60G,KAAKqquC,YAAYt3zC,OAAS,GAEtE,EACAw60C,SAAU,SAAkBxg2C,GAAM+lB,GAAG40C,GAAGkvJ,GAAGg7B,IAEzC,OAAOzmP,KAAKmi2C,eAAevg2C,GAAM,OAAQ+lB,GAAG40C,GAAGkvJ,GAAGg7B,GADpCxwN,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAErF,EACAos0C,eAAgB,SAAwBzg2C,GAAM+lB,GAAG40C,GAAGkvJ,GAAGg7B,IAErD,OAAOzmP,KAAKmi2C,eAAevg2C,GAAM,aAAc+lB,GAAG40C,GAAGkvJ,GAAGg7B,GAD1CxwN,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAErF,EACAqs0C,UAAW,SAAmB1g2C,GAAM+lB,GAAG40C,GAAGkvJ,GAAGg7B,IAE3C,OAAOzmP,KAAKmi2C,eAAevg2C,GAAM,QAAS+lB,GAAG40C,GAAGkvJ,GAAGg7B,GADrCxwN,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAErF,EACAss0C,SAAU,SAAkB3g2C,GAAM+lB,GAAG40C,GAAGkvJ,GAAGg7B,IAEzC,OAAOzmP,KAAKmi2C,eAAevg2C,GAAM,OAAQ+lB,GAAG40C,GAAGkvJ,GAAGg7B,GADpCxwN,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAErF,EACAus0C,gBAAiB,SAAyB5g2C,GAAM+lB,GAAG40C,GAAGkvJ,GAAGg7B,IAEvD,OAAOzmP,KAAKmi2C,eAAevg2C,GAAM,cAAe+lB,GAAG40C,GAAGkvJ,GAAGg7B,GAD3CxwN,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAErF,EACAws0C,aAAc,SAAsB7g2C,GAAM+lB,GAAG40C,GAAGkvJ,GAAGg7B,IAEjD,OAAOzmP,KAAKmi2C,eAAevg2C,GAAM,WAAY+lB,GAAG40C,GAAGkvJ,GAAGg7B,GADxCxwN,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAErF,EACAis0C,aAAc,SAAsBN,IAClC,IAAIj4qC,GAASi4qC,GAASp70C,KAAK4lrC,OAC3B,OAAIzihC,IACGA,GAAOnjK,KAAK200C,OACfxxqC,GAAOnjK,KAAK200C,KAAO,IAErBxxqC,GAAOnjK,KAAK200C,KAAKt41C,KAAK++1C,KAEtB5h2C,KAAK0vI,MAAMlpH,KAAKi70C,SAASj70C,KAAK860C,OAAOz+1C,KAAK++1C,IAErC5h2C,IACT,EACAii2C,WAAY,SAAoBrg2C,GAAM6C,IACpC,IAAI5C,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,IAAKj2B,KAAKqh2C,UACR,MAAM,IAAIzjwC,MAAM,4EAElB,IAAI0i3B,GAAO598B,OAAO08B,OAAO,CAAC,EAAGv9B,IAC7B,OAAa,OAAT4C,KACF678B,GAAOtg9B,KAAK0i2C,aAAaj+1C,GAAM5C,KAEjCy+8B,GAAOtg9B,KAAK2i2C,cAAcriZ,IAC1BA,GAAOtg9B,KAAK4i2C,gBAAgBtiZ,IAC5BA,GAAOtg9B,KAAK6i2C,aAAaviZ,IACzBA,GAAOtg9B,KAAK8i2C,gBAAgBxiZ,IAC5BA,GAAOtg9B,KAAK+i2C,eAAeziZ,KAC3BA,GAAOtg9B,KAAKgj2C,eAAe1iZ,KACtBpvoB,EAAI,IAAIpuU,OAAOlB,IAChB0+8B,GAAK32xB,SACP22xB,GAAK8rP,OAAS9rP,GAAK32xB,cACZ22xB,GAAK32xB,QAEP22xB,EACT,EACAoiZ,aAAc,SAAsBj+1C,GAAM678B,IACxC,GAAa,SAAT778B,GACF678B,GAAK2iZ,GAAK,aACQ,eAATx+1C,GACT678B,GAAK2iZ,GAAK,MACV3iZ,GAAK6/Y,YAAa,UACA,gBAAT171C,GACT678B,GAAK2iZ,GAAK,MACV3iZ,GAAK4/Y,aAAc,UACD,aAATz71C,GACT678B,GAAK2iZ,GAAK,cACQ,UAATx+1C,GACT678B,GAAK2iZ,GAAK,KACV3iZ,GAAK8/Y,OAAQ,UACK,SAAT371C,GAGT,MAAM,IAAIm5F,MAAM,iCAAiC1zC,OAAOzlD,GAAM,MAF9D678B,GAAK2iZ,GAAK,IAEwD,CAEpE,OAAO3iZ,EACT,EACA0iZ,eAAgB,SAAwB1iZ,IACtC,IAAI9j6B,GAAI8j6B,GAAKvt7B,OACb,GAAIypB,IAAKA,GAAE/3C,KAAM,CACf,IAAIy+1C,GACAC,GACA3/1C,GAAS,GACb,QAA+B+F,IAA3Bm31C,GAAelkzC,GAAE/3C,MACnBy+1C,GAAc,sBACdC,GAAW,mBACX3/1C,GAASk91C,GAAelkzC,GAAE/3C,UACrB,CACL,IAAIsuB,GAASypB,GAAE/3C,KAAKiyE,OAAO,GAAGxwE,cAAgBs2C,GAAE/3C,KAAKquB,MAAM,GAG3D,GAFAow0C,GAAc,KAAKh5yC,OAAOn3B,GAAQ,cAClCow0C,GAAW,KAAKj5yC,OAAOn3B,GAAQ,WAChB,SAAXypB,GAAE/3C,KACJy+1C,IAAe,KACf1/1C,GAASV,OAAO05C,GAAErX,YAAK,GACH,SAAXqX,GAAE/3C,KACXjB,GAASV,OAAO05C,GAAErX,YAAK,GACH,WAAXqX,GAAE/3C,KAAmB,CAC9B,IAAIM,GAAIrC,OAAO08B,OAAO,CAAC,EAAG0h0C,UAAuBtkzC,IACjDh5C,GAASV,OAAO,CAACA,OAAOiC,GAAEg81C,MAAOh81C,GAAEi81C,SAAW,IAAM,IAAK,IAAMj81C,GAAEk81C,SAAW,IAAK,OAAQ,IAAMl81C,GAAE8tC,SAAW,IAAK/vC,OAAOiC,GAAEm81C,kBAAkB1+1C,KAAK,KACnJ,SAAsB,YAAXg6C,GAAE/3C,KAAoB,CAC/B,IAAIsmgC,GAAKrogC,OAAO08B,OAAO,CAAC,EAAG0h0C,WAAwBtkzC,IACnDh5C,GAASV,OAAO,CAACA,OAAOiogC,GAAGg2V,MAAOh2V,GAAGi2V,SAAW,IAAM,KAAKx+1C,KAAK,KAClE,CACF,CACA898B,GAAK8iZ,GAAK9iZ,GAAK8iZ,GAAK9iZ,GAAK8iZ,GAAK,CAAC,EAC/B9iZ,GAAK8iZ,GAAG1yhC,EAAI,CACVC,EAAG,aACH0yhC,GAAI,IAAIvg2C,OAAO,GAAGonD,OAAOg5yC,GAAa,KAAKh5yC,OAAO1mD,GAAQ,QAE5D888B,GAAK8iZ,GAAG5yxC,EAAI,CACVmgQ,EAAG,aACH0yhC,GAAI,IAAIvg2C,OAAO,GAAGonD,OAAOi5yC,GAAU,KAAKj5yC,OAAO1mD,GAAQ,OAE3D,CACA,cAAO888B,GAAKvt7B,OACLut7B,EACT,EACAyiZ,eAAgB,SAAwBziZ,IACtC,IAAI7h6B,GAAQz+C,KAAK0o1C,gBAAgBpoY,GAAK1+zB,iBACtC,OAAInjG,KACG6h6B,GAAKgjZ,KACRhjZ,GAAKgjZ,GAAK,CAAC,GAEbhjZ,GAAKgjZ,GAAGC,GAAK9kzC,KAEfA,GAAQz+C,KAAK0o1C,gBAAgBpoY,GAAKkzL,gBAE3BlzL,GAAKgjZ,KACRhjZ,GAAKgjZ,GAAK,CAAC,GAEbhjZ,GAAKgjZ,GAAG/3B,GAAK9sxC,WAER6h6B,GAAK1+zB,uBACL0+zB,GAAKkzL,YACLlzL,EACT,EACAqiZ,cAAe,SAAuB9g2C,IACpC,IAAIyB,GAAS,EACbZ,cAAOC,KAAKd,IAAS28B,QAAQ,SAAUp9B,IACjC0+1C,GAAY1+1C,MACdkC,IAAUw81C,GAAY1+1C,WACfS,GAAQT,IAEnB,GACe,IAAXkC,KACFzB,GAAQ2h2C,GAAK3h2C,GAAQ2h2C,GAAK3h2C,GAAQ2h2C,GAAK,EACvC3h2C,GAAQ2h2C,IAAMlg2C,IAETzB,EACT,EACA+g2C,gBAAiB,SAAyB/g2C,IACxC,IAAIyB,GAAS,EACb,YAAsBiG,IAAlB1H,GAAQmnX,QACkC,iBAAjCw3+B,GAAc3+1C,GAAQmnX,SAC/B1lX,GAASk91C,GAAc3+1C,GAAQmnX,eAE1BnnX,GAAQmnX,OAEF,IAAX1lX,KACFzB,GAAQutU,EAAI9rU,IAEPzB,EACT,EACAgh2C,aAAc,SAAsBhh2C,IAMlC,GAJ4C,OAAxC7B,KAAKqh2C,UAAU90zB,MAAMvsiB,KAAKm89B,MAAMny9B,MAClChK,KAAKqh2C,UAAU90zB,MAAMvsiB,KAAKm89B,MAAMny9B,IAAMhK,KAAKm89B,MAAMxl2B,OAG/C32H,KAAKqh2C,UAAUzM,cAAgB501C,KAAKm89B,MAAMv69B,KAAM,CAClDC,GAAQ2/1C,GAAK,CACX52B,KAAM,CAAC,GAGT,IAAInxpC,GAAW53K,GAAQ43K,UAAY,EACnC53K,GAAQ2/1C,GAAG52B,KAAK5q0C,KAAKm89B,MAAMny9B,IAAMhK,KAAKm89B,MAAMxl2B,MAC5C90H,GAAQ851C,GAAK,IAAI741C,OAAO,IAAIonD,OAAOlqD,KAAKm89B,MAAMny9B,GAAI,KAAKkgD,OAAOuvH,GAAU,WAC1E,CACA,OAAO53K,EACT,EACAih2C,gBAAiB,SAAyBjh2C,IACxC,IAAIsxF,GAAS,GACb,SAASswwC,GAAc5kzC,IACrB,GAAIz8C,MAAMq3G,QAAQ56D,IAChB,QAASmV,GAAM,EAAGA,GAAMnV,GAAEj3B,OAAQosC,KAE9Bm/B,GAAOtwF,KADa,iBAAXg8C,GAAEmV,IACC,IAAIlxD,OAAO+7C,GAAEmV,KAEbnV,GAAEmV,IAItB,CACAyvyC,UAAc5h2C,GAAQ6h2C,KAClB7h2C,GAAQsxF,SACVswwC,GAAc5h2C,GAAQsxF,eACftxF,GAAQsxF,QAEbA,GAAOvrE,SACT/lB,GAAQ6h2C,IAAMvwwC,IAEhBzwF,OAAOC,KAAK891C,IAAWji0C,QAAQ,SAAUp9B,SAClBmI,IAAjB1H,GAAQT,MACVS,GAAQ4+1C,GAAUr/1C,KAAQS,GAAQT,WAC3BS,GAAQT,IAEnB,GACA,CAAC,IAAK,MAAMo9B,QAAQ,SAAUp9B,IACA,iBAAjBS,GAAQT,MACjBS,GAAQT,IAAO,IAAI0B,OAAOjB,GAAQT,KAEtC,GACIS,GAAQyh2C,IAAMzh2C,GAAQyh2C,GAAGl4B,KAC3Bvp0C,GAAQyh2C,GAAGl4B,GAAK,IAAIto0C,OAAOjB,GAAQyh2C,GAAGl4B,KAEpCvp0C,GAAQm3C,QACVn3C,GAAQyh2C,GAAKzh2C,GAAQyh2C,GAAKzh2C,GAAQyh2C,GAAK,CAAC,EACxCzh2C,GAAQyh2C,GAAGl4B,GAAK,IAAIto0C,OAAOjB,GAAQm3C,cAC5Bn3C,GAAQm3C,OAEVn3C,EACT,GAEE8h2C,GAAmB,CAarB5nzC,KAAM,SAAcwrK,IAClB,IAAI1lN,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFp0B,GAAQD,KAAOC,GAAQD,MAAQ2lN,GAC/B,IAII/gM,GAJAo90C,GAAU,CACZnua,KAAM,eACN7jvB,OAAQ,CAAC,GAGX,IAAK2V,GACH,MAAM,IAAI3pH,MAAM,oBAElB,GAAIkwgC,EAAOk7C,SAASzh8B,IAClB/gM,GAAO+gM,WACEA,cAAew4H,YACxBv5T,GAAOsnlC,EAAOjhmC,KAAK,IAAIizU,WAAWv4H,SAC7B,CACL,IAAIn9K,GACJ,GAAIA,GAAQ,0BAA0BP,KAAK09K,IACrCn9K,GAAM,KACRw5zC,GAAQ35B,QAAU7/xC,GAAM,GAAG/mC,QAAQ,IAAK,QAE1CmjB,GAAOsnlC,EAAOjhmC,KAAKu9B,GAAM,GAAI,cACxB,CAEL,KADA5jB,GAAOkjC,EAAGmvwC,aAAatxmC,KAErB,MAAM,IAAI3pH,MAAM,+CAA+C1zC,OAAOq9J,KAGxE,IAAIs8oC,GAAen6yC,EAAGo6yC,SAASv8oC,IAE7Bw8oC,GAAQF,GAAaE,MACvBH,GAAQhypC,OAAO0yoC,aAFDuf,GAAaG,UAG3BJ,GAAQhypC,OAAOqypC,QAAUF,EAC3B,CACF,CAEIli2C,GAAQqi2C,wBAAwBj50C,OAClC240C,GAAQhypC,OAAO0yoC,aAAezi1C,GAAQqi2C,cAEpCri2C,GAAQsi2C,wBAAwBl50C,OAClC240C,GAAQhypC,OAAOqypC,QAAUpi2C,GAAQsi2C,cAG/Bti2C,GAAQ4C,OACVm/1C,GAAQ35B,QAAUpo0C,GAAQ4C,KAAKpB,QAAQ,IAAK,QAG9C,IAKIszH,GALAytuC,GAAW9kB,EAAUn5zB,QAAQs2Y,IAAI6ib,EAAUn5zB,QAAQi1rB,IAAIQ,UAAUntkC,OAAO,IAAIqxM,WAAWt5T,MAC3Fo90C,GAAQhypC,OAAOyypC,SAAW,IAAIvh2C,OAAOsh2C,IACrCR,GAAQhypC,OAAOwlvB,KAAO5w6B,GAAKo5T,WAItB5/U,KAAKsk2C,gBAAetk2C,KAAKsk2C,cAAgB,CAAC,GAC/C,IAAIvozC,GAAO/7C,KAAKsk2C,cAAczi2C,GAAQD,MAClCm6C,IA+BR,SAASy38B,GAAQ308B,GAAGE,IAClB,OAAOF,GAAEorxC,UAAYlrxC,GAAEkrxC,SAAWprxC,GAAE+yJ,OAAOyypC,SAASl80C,aAAe42B,GAAE6yJ,OAAOyypC,SAASl80C,YAAc02B,GAAE+yJ,OAAOwlvB,OAASr44B,GAAE6yJ,OAAOwlvB,MAAQv44B,GAAE+yJ,OAAO0yoC,eAAiBvlyC,GAAE6yJ,OAAO0yoC,cAAgBzlyC,GAAE+yJ,OAAOqypC,UAAYllzC,GAAE6yJ,OAAOqypC,OACzN,CAjCgBzwW,CAAQowW,GAAS7nzC,IAC3B46E,GAAM56E,GAAK46E,MAEXA,GAAM32H,KAAK22H,IAAIituC,KACXpquC,IAAIhzG,IACRxmB,KAAKsk2C,cAAczi2C,GAAQD,MAAQ890C,EAAeA,EAAe,CAAC,EAAGkkB,IAAU,CAAC,EAAG,CACjFjtuC,IAAKA,MAIT,IAAI4tuC,GAAe,CACjB9ua,KAAM,WACNjl3B,EAAG,IAAI1tE,OAAOjB,GAAQD,MACtB4i2C,GAAI,CACFh0xC,EAAGmmD,IAEL8tuC,GAAI,IAAI3h2C,OAAOjB,GAAQD,OAErBC,GAAQguE,cACV00xC,GAAaxI,KAAO,IAAIj51C,OAAOjB,GAAQguE,cAEzC,IAAIgsxC,GAAW771C,KAAK22H,IAAI4tuC,IACxB1I,UAASriuC,MACJ33H,GAAQs5f,QACXn7f,KAAK0k2C,qBAAqB7i2C,GAAQD,KAAMi61C,IAEnCA,EACT,GAOF,IAAI8I,GAAO,CACTC,SAAU,SAAkBC,IACiB,MAAvCA,GAAQnuxC,OAAOmuxC,GAAQj90C,OAAS,IAClC5nB,KAAK8k2C,mBAAqBD,GAAQnuxC,OAAOmuxC,GAAQj90C,OAAS,GAAG1hB,cAC7DlG,KAAK6x1C,OAASrm0C,SAASq50C,GAAQnuxC,OAAOmuxC,GAAQj90C,OAAS,MAGvD5nB,KAAK8k2C,mBAAqB,IAC1B9k2C,KAAK6x1C,OAASrm0C,SAASq50C,GAAQnuxC,OAAOmuxC,GAAQj90C,OAAS,IAE3D,EACAm90C,UAAW,WACT/k2C,KAAKgl2C,mBACL,IAAIC,GAAS,GAAG/6yC,OAAOi1xC,EAAW,+BAC9B+lB,GAAW,GAAGh7yC,OAAOi1xC,EAAW,4CACpCn/0C,KAAKml2C,sBAAsBz7yC,EAAG07yC,WAAWH,IAAUA,GAASC,GAC9D,EACAC,sBAAuB,SAA+BE,IACpD,IAAIC,GAAa57yC,EAAGmvwC,aAAawsC,IAC7BE,GAAkBvl2C,KAAK22H,IAAI,CAC7B4qtC,OAAQ+jB,GAAW190C,OACnBiooC,EAAG,IAEL01M,GAAgBj/0C,MAAMg/0C,IACtBC,GAAgB/ruC,MAChB,IAAIgsuC,GAAYxl2C,KAAK22H,IAAI,CACvB8+zB,KAAM,eACN9knB,EAAG,YACH80hC,KAAM,IAAI3i2C,OAAO,qBACjB4i2C,0BAA2B,IAAI5i2C,OAAO,qBACtC6i2C,kBAAmBJ,KAErBC,GAAUhsuC,MACVx5H,KAAK0vI,MAAMlpH,KAAKo/0C,cAAgB,CAACJ,GACnC,EACAK,WAAY,WACV,MAAO,qHAAyH37yC,OAAOlqD,KAAK6x1C,OAAQ,oDAAoD3nyC,OAAOlqD,KAAK8k2C,mBAAoB,8DAC1O,EACAE,iBAAkB,WAChBhl2C,KAAK8l2C,UAAU9l2C,KAAK6l2C,aACtB,GAEEE,GAAc,CAChBC,cAAe,SAAuBnU,IACpCnv1C,OAAO08B,OAAOp/B,KAAM6x1C,GACtB,EACAoU,WAAY,SAAoBpk2C,IAC9B,OAAQA,GAAQgw1C,QACd,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,WACH7x1C,KAAKgm2C,cAAcrB,IACnB3k2C,KAAK4k2C,SAAS/i2C,GAAQgw1C,QAG5B,GAEEqU,GAA2B,WAC7B,SAASA,KACP34J,EAAgBvtsC,KAAMkm2C,IACtBlm2C,KAAKmm2C,UAAY,mNACnB,CACAr4J,SAAao4J,GAAa,CAAC,CACzB9k2C,IAAK,aACLG,MAAO,WACLvB,KAAKmm2C,UAAYnm2C,KAAKmm2C,UAAUj8yC,OAAO,gGACzC,GACC,CACD9oD,IAAK,SACLG,MAAO,SAAgB07V,IACrB,IAAImpgC,KAAUnw0C,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,KAAmBA,UAAU,GAC7Ej2B,KAAKmm2C,UAAYnm2C,KAAKmm2C,UAAUj8yC,OAAO+yS,IACnCmpgC,KAASpm2C,KAAKmm2C,UAAYnm2C,KAAKmm2C,UAAUj8yC,OAAO,MACtD,GACC,CACD9oD,IAAK,SACLG,MAAO,WACL,OAAOvB,KAAKmm2C,SACd,GACC,CACD/k2C,IAAK,YACLG,MAAO,WACL,OAAOvB,KAAKmm2C,UAAUv+0C,MACxB,GACC,CACDxmB,IAAK,MACLG,MAAO,WACLvB,KAAKqm2C,aACLrm2C,KAAKmm2C,UAAYnm2C,KAAKmm2C,UAAUj70C,MAClC,KAEKg70C,EACT,CAnC+B,GAoC3BI,GAAgB,CAClBC,aAAc,WACZvm2C,KAAK+oe,SAAW,IAAIm93B,EACtB,EACAJ,UAAW,SAAmB7ogC,IAE5Bj9V,KAAK+oe,SAAS9le,OAAOg6V,KADPhnU,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,KAAmBA,UAAU,GAE/E,EACAuw0C,SAAU,WACRxm2C,KAAK8l2C,UAAU,kHAAsH57yC,OAAOlqD,KAAK6rF,KAAKy4vC,aAAa5yzC,cAAcnvB,MAAM,KAAK,GAAK,IAAK,oDAAoD2nD,OAAOlqD,KAAK6rF,KAAK46wC,QAAS,8DAChRzm2C,KAAK6rF,KAAKu/T,OAASprZ,KAAK6rF,KAAK4lV,QAAUzxa,KAAK6rF,KAAKntB,WACnD1+D,KAAK8l2C,UAAU,0GACX9l2C,KAAK6rF,KAAKu/T,OACZprZ,KAAK8l2C,UAAU,qHAAuH57yC,OAAOlqD,KAAK6rF,KAAKu/T,MAAO,6FAE5JprZ,KAAK6rF,KAAK4lV,QACZzxa,KAAK8l2C,UAAU,kGAAkG57yC,OAAOlqD,KAAK6rF,KAAK4lV,OAAQ,+FAExIzxa,KAAK6rF,KAAKntB,SACZ1+D,KAAK8l2C,UAAU,2HAA6H57yC,OAAOlqD,KAAK6rF,KAAKntB,QAAS,mGAExK1+D,KAAK8l2C,UAAU,mDAEjB9l2C,KAAK8l2C,UAAU,gHAAoH57yC,OAAOlqD,KAAK6rF,KAAK46wC,QAAS,oBAAoB,GAC7Kzm2C,KAAK6rF,KAAK66wC,UACZ1m2C,KAAK8l2C,UAAU,+BAA+B57yC,OAAOlqD,KAAK6rF,KAAK66wC,SAAU,oBAAoB,GAE/F1m2C,KAAK8l2C,UAAU,yCACjB,EACAa,YAAa,WACX3m2C,KAAKwm2C,WACLxm2C,KAAK+oe,SAASvvW,MAMM,KAAhBx5H,KAAKo4P,UACPp4P,KAAK4m2C,YAAc5m2C,KAAK22H,IAAI,CAC1B/uG,OAAQ5nB,KAAK+oe,SAAS5jP,YACtBswsB,KAAM,WACNw0Y,QAAS,QAEXjq0C,KAAK4m2C,YAAYlk8B,UAAW,EAC5B1ia,KAAK4m2C,YAAYtg1C,MAAMwnlC,EAAOjhmC,KAAK7M,KAAK+oe,SAAS893B,SAAU,UAC3D7m2C,KAAK4m2C,YAAYptuC,MACjBx5H,KAAK0vI,MAAMlpH,KAAKsg1C,SAAW9m2C,KAAK4m2C,YAEpC,GAEEG,GAA2B,SAAUl2D,IACvCnkG,EAAUq6J,GAAal2D,IACvB,IAAIriqC,GAASq+jC,EAAak6J,IAC1B,SAASA,KACP,IAAIny0C,GACA/yB,GAAUo0B,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAKnF,OAJAs3qC,EAAgBvtsC,KAAM+m2C,KACtBny0C,GAAQ45G,GAAOzlG,KAAK/oC,KAAM6B,KACpBA,QAAUA,GAERA,GAAQ2i1C,YACd,IAAK,MACH5vzC,GAAMwjO,QAAU,IAChB,MACF,IAAK,MACHxjO,GAAMwjO,QAAU,IAChB,MACF,IAAK,MACHxjO,GAAMwjO,QAAU,IAChB,MACF,IAAK,MACL,IAAK,UACHxjO,GAAMwjO,QAAU,IAChB,MACF,QACExjO,GAAMwjO,QAAU,IAIpBxjO,GAAM8tY,SAAqC,MAA1B9tY,GAAM/yB,QAAQ6ga,UAAmB9tY,GAAM/yB,QAAQ6ga,SAChE9tY,GAAMoy0C,YAAc,GACpBpy0C,GAAMqy0C,iBAAmB,EAEzBry0C,GAAM8hiB,SAAW,GACjB9hiB,GAAMsy0C,SAAW,EACjBty0C,GAAMuo0C,QAAS,EACfvo0C,GAAM0vvC,QAAU,EAChB,IAAIy9D,GAAQntzC,GAAM+hG,IAAI,CACpB8+zB,KAAM,QACN0ma,MAAO,EACPhB,KAAM,KAEJ/2wC,GAAQxvD,GAAM+hG,IAAI,CACpBwwuC,MAAO,IAAI5kB,KA4Bb,GA1BA3tzC,GAAM86G,MAAQ96G,GAAM+hG,IAAI,CACtB8+zB,KAAM,UACNssZ,MAAOA,GACP39vC,MAAOA,KAELxvD,GAAM/yB,QAAQy5sC,OAChB1mrC,GAAM86G,MAAMlpH,KAAK820C,KAAO,IAAIx61C,OAAO8xB,GAAM/yB,QAAQy5sC,OAGnD1mrC,GAAMigF,KAAO,KAEbjgF,GAAM2x0C,eACN3x0C,GAAM62zC,YACN72zC,GAAM64zC,aACN74zC,GAAM+/zC,UAAU9y1C,GAAQ8qO,MACxB/3M,GAAMgi0C,WACNhi0C,GAAM2l0C,aACN3l0C,GAAM8n0C,cACN9n0C,GAAM0p0C,aAAaz81C,IACnB+yB,GAAMqx0C,WAAWpk2C,IAEjB+yB,GAAMi3D,KAAO,CACXu7wC,SAAU,SACVX,QAAS,SACTniB,aAAc,IAAIr5zC,MAEhB2J,GAAM/yB,QAAQgqF,KAChB,QAASzqF,MAAOwzB,GAAM/yB,QAAQgqF,KAE5Bj3D,GAAMi3D,KAAKzqF,IADDwzB,GAAM/yB,QAAQgqF,KAAKzqF,IAIjC,OAAIwzB,GAAM/yB,QAAQwl2C,eAChBzy0C,GAAM86G,MAAMlpH,KAAK8g1C,kBAAoB1y0C,GAAM+hG,IAAI,CAC7C4wuC,iBAAiB,KAIrB3y0C,GAAMse,IAAM+wyC,GAAYujB,eAAe5y0C,GAAMi3D,MAE7Cj3D,GAAM4szC,UAAYyC,GAAYx1sC,OAAOm9jC,EAAuBh3qC,IAAQ/yB,IAGpE+yB,GAAMspoC,OAAO,QAAQh0mC,OAAOt1B,GAAMwjO,UAElCxjO,GAAMspoC,OAAO,sBAEuB,IAAhCtpoC,GAAM/yB,QAAQ4l2C,eAChB7y0C,GAAM8y0C,UAED9y0C,EACT,CACAk5qC,SAAai5J,GAAa,CAAC,CACzB3l2C,IAAK,UACLG,MAAO,SAAiBM,IACP,MAAXA,KACFA,GAAU7B,KAAK6B,SAGZ7B,KAAK6B,QAAQ8l2C,aAChB3n2C,KAAK4n2C,aAGP5n2C,KAAK60G,KAAO,IAAIituC,GAAQ9h1C,KAAM6B,IAC9B7B,KAAKgn2C,YAAYnk2C,KAAK7C,KAAK60G,MAE3B,IAAImjB,GAAQh4H,KAAK0vI,MAAMlpH,KAAKu7zC,MAAMv7zC,KAClCwxG,UAAMmjuC,KAAKt41C,KAAK7C,KAAK60G,KAAKuykC,YAC1BpvjC,GAAMmkuC,QAENn81C,KAAK2nB,EAAI3nB,KAAK60G,KAAK8yR,QAAQjvQ,KAC3B14H,KAAKu8D,EAAIv8D,KAAK60G,KAAK8yR,QAAQhvQ,IAG3B34H,KAAKsq0C,KAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5Btq0C,KAAKgxC,UAAU,EAAG,EAAG,GAAG,EAAI,EAAGhxC,KAAK60G,KAAKszB,QACzCnoI,KAAKq/B,KAAK,aACHr/B,IACT,GACC,CACDoB,IAAK,oBACLG,MAAO,SAA2BM,IAChC,IAAIy91C,GAAet/1C,KAAKw/1C,gBAAgBx/1C,KAAK60G,MAC7C,OAAA70G,KAAK0n2C,QAAQ7l2C,IACb7B,KAAKq/1C,iBAAiBC,IACft/1C,IACT,GACC,CACDoB,IAAK,oBACLG,MAAO,WACL,MAAO,CACLg3H,MAAOv4H,KAAKin2C,iBACZtiuC,MAAO3kI,KAAKgn2C,YAAYp/0C,OAE5B,GACC,CACDxmB,IAAK,eACLG,MAAO,SAAsBqwG,IAC3B,IAAIiD,GACJ,KAAMA,GAAO70G,KAAKgn2C,YAAYp1vC,GAAI5xG,KAAKin2C,mBACrC,MAAM,IAAIrpwC,MAAM,gBAAgB1zC,OAAO0nD,GAAG,iDAAiD1nD,OAAOlqD,KAAKin2C,iBAAkB,QAAQ/8yC,OAAOlqD,KAAKin2C,iBAAmBjn2C,KAAKgn2C,YAAYp/0C,OAAS,IAE5L,OAAO5nB,KAAK60G,KAAOA,EACrB,GACC,CACDzzG,IAAK,aACLG,MAAO,WAGL,IAAIy2H,GAAQh4H,KAAKgn2C,YACjBhn2C,KAAKgn2C,YAAc,GACnBhn2C,KAAKin2C,kBAAoBjvuC,GAAMpwG,OAC/B,IACEgskB,GADE0yiB,GAAY45M,EAA2BlotC,IAE3C,IACE,IAAKsugC,GAAU5ymC,MAAOkgkB,GAAQ0yiB,GAAU10hC,KAAK4uI,MAAO,CAClD,IAAI3rI,GAAO++e,GAAMrylB,MACjBvB,KAAKw/1C,gBAAgB3qvC,IACrBA,GAAK2kB,KACP,CACF,OAASl4E,IACPgllC,GAAUpvmC,EAAEoqB,GACd,SACEgllC,GAAU9plC,GACZ,CACF,GACC,CACDp7C,IAAK,sBACLG,MAAO,SAA6BK,IAClC,QAAS+3pC,GAAO1joC,UAAUrO,OAAQi5L,GAAO,IAAIz+M,MAAMu3pC,GAAO,EAAIA,GAAO,EAAI,GAAI1tyB,GAAO,EAAGA,GAAO0tyB,GAAM1tyB,KAClGprK,GAAKorK,GAAO,GAAKh2V,UAAUg2V,IAET,IAAhBprK,GAAKj5L,SACPi5L,GAAO,CAAC,MAAO,KAAM,KAAM,OAEb,QAAZA,GAAK,IAA4B,OAAZA,GAAK,KAC5BA,GAAK,GAAK7gN,KAAK60G,KAAKszB,OAAS04E,GAAK,IAEpCA,GAAKxnL,QAAQr5B,KAAK60G,KAAKuykC,YACvBpnrC,KAAK0vI,MAAMlpH,KAAK49D,MAAM59D,KAAK2g1C,MAAMx4wC,IAAI/sF,GAAMi/M,GAC7C,GACC,CACDz/M,IAAK,uBACLG,MAAO,SAA8BK,GAAM+0H,IACpC32H,KAAK0vI,MAAMlpH,KAAK49D,MAAM59D,KAAKqh1C,gBAE9B7n2C,KAAK0vI,MAAMlpH,KAAK49D,MAAM59D,KAAKqh1C,cAAgB,IAAItlB,GAAY,CACzD9B,QAAQ,KAIZzg1C,KAAK0vI,MAAMlpH,KAAK49D,MAAM59D,KAAKqh1C,cAAcl5wC,IAAI/sF,GAAM+0H,GACrD,GACC,CACDv1H,IAAK,qBACLG,MAAO,SAA4BK,GAAMkm2C,IAClC9n2C,KAAK0vI,MAAMlpH,KAAK49D,MAAM59D,KAAKuh1C,aAC9B/n2C,KAAK0vI,MAAMlpH,KAAK49D,MAAM59D,KAAKuh1C,WAAa,IAAIxlB,IAE9C,IAAI/7zC,GAAO,CACT680C,GAAI,IAAIvg2C,OAAOgl2C,IACfn3hC,EAAG,cAEL3wU,KAAK0vI,MAAMlpH,KAAK49D,MAAM59D,KAAKuh1C,WAAWp5wC,IAAI/sF,GAAM4kB,GAClD,GACC,CACDplB,IAAK,MACLG,MAAO,SAAailB,IAClB,IAAImwG,GAAM,IAAI0qtC,GAAarh1C,KAAMA,KAAK02jB,SAAS9uiB,OAAS,EAAGpB,IAC3D,OAAAxmB,KAAK02jB,SAAS7zjB,KAAK,MAEnB7C,KAAKkn2C,WACEvwuC,EACT,GACC,CACDv1H,IAAK,QACLG,MAAO,WAAkB,GACxB,CACDH,IAAK,SACLG,MAAO,SAAgBilB,IACrB,OAAKsnlC,EAAOk7C,SAASxioC,MACnBA,GAAOsnlC,EAAOjhmC,KAAK2Z,GAAO,KAAM,WAElCxmB,KAAK6C,KAAK2jB,IACHxmB,KAAKskxC,SAAW99vC,GAAKoB,MAC9B,GACC,CACDxmB,IAAK,aACLG,MAAO,SAAoBilB,IACzB,OAAAxmB,KAAK60G,KAAKvuF,MAAME,IACTxmB,IACT,GACC,CACDoB,IAAK,UACLG,MAAO,SAAiBo1H,IAEtB,GADA32H,KAAK02jB,SAAS//b,GAAI3sH,GAAK,GAAK2sH,GAAI5qF,OACR,KAAlB/rC,KAAKkn2C,UAAkBln2C,KAAKm91C,OAChC,OAAAn91C,KAAKggpC,YACEhgpC,KAAKm91C,QAAS,CAEzB,GACC,CACD/71C,IAAK,QACLG,MAAO,SAAe0d,GAAUuJ,IAE9B,IAAI84B,GAAM,IAAIs8C,MAAM,oIACpB53E,eAAQkvF,KAAK5zD,GAAI24L,OACjBj6O,KAAK4G,KAAK8iD,EAAG0skC,kBAAkBn3mC,KAC/Bjf,KAAKw5H,MACEx5H,KAAKuuY,KAAK,MAAO/lX,GAC1B,GACC,CACDpnB,IAAK,MACLG,MAAO,WAGL,QAASH,MAFTpB,KAAK4n2C,aACL5n2C,KAAKgo2C,MAAQho2C,KAAK22H,MACF32H,KAAK6rF,KAAM,CACzB,IAAIlnF,GAAM3E,KAAK6rF,KAAKzqF,IACD,iBAARuD,KACTA,GAAM,IAAI7B,OAAO6B,KAEnB,IAAIg4J,GAAQ38J,KAAK22H,IAAIhyH,IACrBg4J,GAAMnjC,MACNx5H,KAAKgo2C,MAAMxh1C,KAAKplB,IAAOu7J,EACzB,CAEA,QAAS/6J,MADT5B,KAAKgo2C,MAAMxuuC,MACMx5H,KAAK601C,cACT701C,KAAK601C,cAAcjz1C,IACzBuob,WAkBP,OAhBAnqb,KAAKw81C,aACLx81C,KAAK6/1C,cACD7/1C,KAAK6x1C,QACP7x1C,KAAK+k2C,YAEP/k2C,KAAK2m2C,cACL3m2C,KAAK0vI,MAAMlW,MACXx5H,KAAK0vI,MAAMlpH,KAAKu7zC,MAAMvotC,MACtBx5H,KAAK0vI,MAAMlpH,KAAK49D,MAAMo1C,MACtBx5H,KAAK0h2C,cACD1h2C,KAAK0vI,MAAMlpH,KAAK8g1C,mBAClBtn2C,KAAK0vI,MAAMlpH,KAAK8g1C,kBAAkB9tuC,MAEhCx5H,KAAKwh1C,WACPxh1C,KAAKwh1C,UAAUhotC,MAEK,IAAlBx5H,KAAKkn2C,SACAln2C,KAAKggpC,YAELhgpC,KAAKm91C,QAAS,CAEzB,GACC,CACD/71C,IAAK,YACLG,MAAO,WAEL,IAAI0m2C,GAAajo2C,KAAKskxC,QACtBtkxC,KAAKk+pC,OAAO,QACZl+pC,KAAKk+pC,OAAO,KAAKh0mC,OAAOlqD,KAAK02jB,SAAS9uiB,OAAS,IAC/C5nB,KAAKk+pC,OAAO,uBACZ,IACEzyB,GADEC,GAAaw0M,EAA2Blg1C,KAAK02jB,UAEjD,IACE,IAAKg1kB,GAAWh4mC,MAAO+3mC,GAASC,GAAW95hC,KAAK4uI,MAAO,CACrD,IAAIz0M,GAAS0/lC,GAAOlqoC,MACpBwqC,GAAS,aAAame,OAAOne,IAAQjZ,OAAM,IAC3C9yB,KAAKk+pC,OAAOnynC,GAAS,YACvB,CACF,OAASuV,IACPoqlC,GAAWx0mC,EAAEoqB,GACf,SACEoqlC,GAAWlvlC,GACb,CACA,IAAI0rzC,GAAU,CACZ9wa,KAAMp37B,KAAK02jB,SAAS9uiB,OAAS,EAC7B0ic,KAAMtqd,KAAK0vI,MACX+1tC,KAAMzl2C,KAAKgo2C,MACXj76B,GAAI,CAAC/sb,KAAKkzC,IAAKlzC,KAAKkzC,MAEtB,OAAIlzC,KAAKwh1C,YACP0mB,GAAQC,QAAUno2C,KAAKwh1C,UAAUp6J,YAEnCpnrC,KAAKk+pC,OAAO,WACZl+pC,KAAKk+pC,OAAOyiL,GAAU7vW,QAAQo3X,KAC9Blo2C,KAAKk+pC,OAAO,aACZl+pC,KAAKk+pC,OAAO,GAAGh0mC,OAAO+9yC,KACtBjo2C,KAAKk+pC,OAAO,SAELl+pC,KAAK6C,KAAK,KACnB,GACC,CACDzB,IAAK,WACLG,MAAO,WACL,MAAO,sBACT,KAEKwl2C,EACT,CAtV+B,CAsV7B3mL,EAAQj6pB,QAAQg/nB,UACdknG,GAAQ,SAAe585B,IACzB/sV,OAAO08B,OAAO2n0C,GAAYj+zC,UAAW2mT,GACvC,EACA485B,GAAMi6G,IACNj6G,GAAMm/F,IACNn/F,GAAMmhG,IACNnhG,GAAMqoG,IACNroG,GAAMsqG,IACNtqG,GAAMiuG,IACNjuG,GAAM0uG,IACN1uG,GAAMowG,IACNpwG,GAAMgyG,IACNhyG,GAAM80G,IACN90G,GAAMs3G,IACNt3G,GAAM05G,IACNgB,GAAY9R,YAAcA,GACXlwqB,EAAQ5+J,QAAa4g1B,EAE9B,EAEA,eACUljuC,EAAQ8qqC,EAA0BnzmC,GAElD,IAAI4sqC,EAA6B5sqC,EAAoB,OACjD6sqC,EAAsC7sqC,EAAoB,cACxB6sqC,EACK1wrC,QAAe,MADpB0wrC,EACiE1wrC,QAAaywrC,GACpHvkuC,EAAOkhjB,QAAUqjrB,CAGX,EAEA,eACUvkuC,EAAQ8qqC,EAA0BnzmC,GAElD,aAC0B,IAAIC,EAAUD,EAAoB,MA0B5D,SAAS2zB,EAAQ77J,IAAgC,OAAO67J,EAAU,mBAAqB/S,QAAU,iBAAmBA,OAAOg/B,SAAW,SAAU9nL,IAAK,cAAcA,EAAG,EAAI,SAAUA,IAAK,OAAOA,IAAK,mBAAqB8oJ,QAAU9oJ,GAAEvzD,cAAgBq8M,QAAU9oJ,KAAM8oJ,OAAOtzK,UAAY,gBAAkBwqB,EAAG,GAAWA,GAAI,CAC7T,SAASo4oC,EAAkBz9oC,GAAQi7L,IAAS,QAASl2L,GAAI,EAAGA,GAAIk2L,GAAMthO,OAAQorC,KAAK,CAAE,IAAImhU,GAAajrI,GAAMl2L,IAAImhU,GAAW5tP,WAAa4tP,GAAW5tP,aAAc,EAAO4tP,GAAW3tP,cAAe,EAAU,UAAW2tP,KAAYA,GAAW1tP,UAAW,GAAM/jI,OAAO4jI,eAAer4E,GAAQ0mvC,EAAexg7B,GAAW/yX,KAAM+yX,GAAa,CAAE,CAC5U,SAAS250B,EAAazm9B,GAAa0m9B,GAAYC,IAAe,OAAID,IAAYrC,EAAkBrk9B,GAAYv+M,UAAWilqC,IAAiBC,IAAatC,EAAkBrk9B,GAAa2m9B,IAActrsC,OAAO4jI,eAAe+gH,GAAa,YAAa,CAAE5gH,UAAU,IAAiB4gH,EAAa,CAC5R,SAASstjC,EAAe58jC,IAAO,IAAI32O,GACnC,SAASwzyC,EAAanwrC,GAAOq1sC,IAAQ,GAAuB,WAAnB3qmC,EAAQ1qG,KAAiC,OAAVA,GAAgB,OAAOA,GAAO,IAAIs1sC,GAAOt1sC,GAAM23F,OAAOm/B,aAAc,QAAahyO,IAATwwzC,GAAoB,CAAE,IAAIhntC,GAAMgntC,GAAKhxxC,KAAK07E,GAAOq1sC,IAAQ,WAAY,GAAqB,WAAjB3qmC,EAAQp8G,IAAmB,OAAOA,GAAK,MAAM,IAAI4tG,UAAU,+CAAiD,CAAE,OAAiB,WAATm5mC,GAAoBh3zC,OAAS09C,QAAQikE,GAAQ,CADnVmwrC,CAAa78jC,GAAK,UAAW,MAAwB,WAAjB5oB,EAAQ/tN,IAAoBA,GAAM0B,OAAO1B,GAAM,CAG5H,IAiBIkn2C,GACAC,GAjBFC,EADahtqC,EAAoB,OACP+5/B,MAC1BkzK,EAAyBD,EAAeC,uBACxCzyK,EAAuBwyK,EAAexyK,qBACtC0yK,EAAwBF,EAAeE,sBACvCC,EAA2BH,EAAeG,yBAC1CzuK,EAAmBsuK,EAAetuK,iBAChC0uK,EAAiBptqC,EAAoB,OAEvCky9B,EADcly9B,EAAoB,MACdky9B,QAClBm7M,EAAkBrtqC,EAAoB,MAAMgpK,MAC9CskgC,EAAYD,EAAeC,UAC3BjjM,EAAWgjM,EAAehjM,SACxBkjM,EAAevtqC,EAAoB,MAApBA,GACfwtqC,EAAWxtqC,EAAoB,MAApBA,GACXytqC,EAAsBztqC,EAAoB,MAApBA,CAA2B,yBAOrD,SAAS0tqC,IACP,IAAI/zhC,GAAa35I,EAAoB,OACrC8sqC,GAAcnzhC,GAAWmzhC,YACzBC,GAAoBpzhC,GAAWozhC,iBACjC,CAKA,IAKI3wL,GAAS,EAMTzI,EAAStriC,EAAOkhjB,QAAUtlZ,GAC1B0pkC,GAAwB,CAAC,EAQ7B,SAASC,GAAU3jvC,IACjB,MAAIA,GAAIzmF,mBAAmB4+D,MAAa6nB,GAAIzmF,QACtC,IAAI4p0C,EAAenjvC,GAC3B,CAsCA,SAAS4jvC,GAAQ7g1C,GAAI4qO,GAAQ7xP,GAAOy9B,IAClC,IAAKz9B,GAAO,CACV,IAAI+n2C,IAAmB,EACvB,GAAe,IAAXl2mC,GACFk2mC,IAAmB,EACnBtq0C,GAAU,oDACDA,cAAmB4+D,MAC5B,MAAM5+D,GAER,IAAIsiB,GAAM,IAAIsnzC,EAAe,CAC3Bz7sB,OAAQ5rpB,GACR6rpB,UAAU,EACVpunB,QAASA,GACT+jX,SAAU,KACVwm9B,aAAc/g1C,KAEhB84B,SAAIgozC,iBAAmBA,GACjBhozC,EACR,CACF,CAIA,SAASm+O,KACP,QAASk63B,GAAO1joC,UAAUrO,OAAQi5L,GAAO,IAAIz+M,MAAMu3pC,IAAO1tyB,GAAO,EAAGA,GAAO0tyB,GAAM1tyB,KAC/EprK,GAAKorK,IAAQh2V,UAAUg2V,IAEzBo9+B,GAAQrz0C,WAAM,EAAQ,CAACypQ,GAAI5+E,GAAKj5L,QAAQsiC,OAAO22J,IACjD,CAhCAsu9B,EAAOj85B,KAjCP,SAASA,GAAKi6Y,GAAQC,GAAUpunB,GAAS+jX,GAAUwm9B,IACjD,IACIjziC,GADAkziC,GAAUvz0C,UAAUrO,OAexB,GAbgB,IAAZ4h1C,GACFlziC,GAAkB,SACG,IAAZkziC,IACTxq0C,GAAUmunB,GACVA,QAAS5jpB,KAEM,IAAXquqC,IACFA,GAAS,GACEn8+B,EAAQguqC,YAAchuqC,EAAQguqC,YAAczj1C,QAAQkvF,KAAKygD,KAAK3vI,UACpE,2HAAiI,qBAAsB,YAE9I,IAAZwj1C,KAAezm9B,GAAW,OAE5B/jX,cAAmB4+D,MAAO,MAAM5+D,GACpC,IAAI0q0C,GAAU,CACZv8sB,OAAQA,GACRC,SAAUA,GACVrqQ,cAAuBx5Y,IAAbw5Y,GAAyB,OAASA,GAC5Cwm9B,aAAcA,IAAgBr2lC,SAEhB3pQ,IAAZy1B,KACF0q0C,GAAQ1q0C,QAAUA,IAEpB,IAAIsiB,GAAM,IAAIsnzC,EAAec,IAC7B,MAAIpziC,KACFh1Q,GAAItiB,QAAUs3R,GACdh1Q,GAAIgozC,kBAAmB,GAEnBhozC,EACR,EAIA6tnC,EAAOy5L,eAAiBA,EA8BxBz5L,EAAO1v4B,GAAKA,GAIZ0v4B,EAAO3/sB,MAAQ,SAASA,GAAM29L,GAAQC,GAAUpunB,IAC9C,GAAI/I,UAAUrO,OAAS,EACrB,MAAM,IAAIsyqC,EAAiB,SAAU,YAGnC/siB,IAAUC,IACZg8sB,GAAU,CACRj8sB,OAAQA,GACRC,SAAUA,GACVpunB,QAASA,GACT+jX,SAAU,KACVwm9B,aAAc/54B,IAGpB,EAIA2/sB,EAAO52a,SAAW,SAASA,GAASprG,GAAQC,GAAUpunB,IACpD,GAAI/I,UAAUrO,OAAS,EACrB,MAAM,IAAIsyqC,EAAiB,SAAU,YAGnC/siB,IAAUC,IACZg8sB,GAAU,CACRj8sB,OAAQA,GACRC,SAAUA,GACVpunB,QAASA,GACT+jX,SAAU,KACVwm9B,aAAchxmB,IAGpB,EAGA42a,EAAOw6L,UAAY,SAASA,GAAUx8sB,GAAQC,GAAUpunB,IACtD,GAAI/I,UAAUrO,OAAS,EACrB,MAAM,IAAIsyqC,EAAiB,SAAU,iBAEnB3wrC,IAAhB++1C,IAA2BY,IAC1BZ,GAAYn7sB,GAAQC,KACvBg8sB,GAAU,CACRj8sB,OAAQA,GACRC,SAAUA,GACVpunB,QAASA,GACT+jX,SAAU,YACVwm9B,aAAcI,IAGpB,EAGAx6L,EAAOy6L,aAAe,SAASA,GAAaz8sB,GAAQC,GAAUpunB,IAC5D,GAAI/I,UAAUrO,OAAS,EACrB,MAAM,IAAIsyqC,EAAiB,SAAU,iBAEnB3wrC,IAAhB++1C,IAA2BY,IAC3BZ,GAAYn7sB,GAAQC,KACtBg8sB,GAAU,CACRj8sB,OAAQA,GACRC,SAAUA,GACVpunB,QAASA,GACT+jX,SAAU,eACVwm9B,aAAcK,IAGpB,EAGAz6L,EAAO06L,gBAAkB,SAASA,GAAgB18sB,GAAQC,GAAUpunB,IAClE,GAAI/I,UAAUrO,OAAS,EACrB,MAAM,IAAIsyqC,EAAiB,SAAU,iBAEnB3wrC,IAAhB++1C,IAA2BY,IAC1BX,GAAkBp7sB,GAAQC,KAC7Bg8sB,GAAU,CACRj8sB,OAAQA,GACRC,SAAUA,GACVpunB,QAASA,GACT+jX,SAAU,kBACVwm9B,aAAcM,IAGpB,EACA16L,EAAO26L,mBACP,SAASA,GAAmB38sB,GAAQC,GAAUpunB,IAC5C,GAAI/I,UAAUrO,OAAS,EACrB,MAAM,IAAIsyqC,EAAiB,SAAU,iBAEnB3wrC,IAAhB++1C,IAA2BY,IAC3BX,GAAkBp7sB,GAAQC,KAC5Bg8sB,GAAU,CACRj8sB,OAAQA,GACRC,SAAUA,GACVpunB,QAASA,GACT+jX,SAAU,qBACVwm9B,aAAcO,IAGpB,EACA36L,EAAO46L,YAAc,SAASA,GAAY58sB,GAAQC,GAAUpunB,IAC1D,GAAI/I,UAAUrO,OAAS,EACrB,MAAM,IAAIsyqC,EAAiB,SAAU,YAElC8uK,EAAS77sB,GAAQC,KACpBg8sB,GAAU,CACRj8sB,OAAQA,GACRC,SAAUA,GACVpunB,QAASA,GACT+jX,SAAU,cACVwm9B,aAAcQ,IAGpB,EACA56L,EAAO66L,eAAiB,SAASA,GAAe78sB,GAAQC,GAAUpunB,IAChE,GAAI/I,UAAUrO,OAAS,EACrB,MAAM,IAAIsyqC,EAAiB,SAAU,YAEnC8uK,EAAS77sB,GAAQC,KACnBg8sB,GAAU,CACRj8sB,OAAQA,GACRC,SAAUA,GACVpunB,QAASA,GACT+jX,SAAU,iBACVwm9B,aAAcS,IAGpB,EACA,IAAIC,GAA0Bn8J,EAAa,SAASm8J,GAAWxkvC,GAAK9iH,GAAMwqpB,IACxE,IAAIv4nB,GAAQ50B,MA/Pd,SAASutsC,EAAgB//7B,GAAUnmB,IAAe,KAAMmmB,cAAoBnmB,IAAgB,MAAM,IAAI1mC,UAAU,oCAAwC,EAgQtJ4s/B,CAAgBvtsC,KAAMiq2C,IACtBtn2C,GAAK67B,QAAQ,SAAUp9B,IACjBA,MAAOqkH,KAEP7wF,GAAMxzB,SADOmI,IAAX4jpB,IAA+C,iBAAhBA,GAAO/rpB,KAAqBykqC,EAASpgjC,GAAIrkH,MAAS6n2C,EAAoBxjvC,GAAIrkH,IAAM+rpB,GAAO/rpB,KAC3G+rpB,GAAO/rpB,IAEPqkH,GAAIrkH,IAGvB,EACF,GA2BA,SAAS8o2C,GAAkB/8sB,GAAQC,GAAU1zgB,GAAKlxH,IAChD,GAAwB,mBAAb4koB,GAAyB,CAClC,GAAIy4gB,EAASz4gB,IAAW,OAAO67sB,EAAoB77sB,GAAUD,IAE7D,GAAyB,IAArBl3nB,UAAUrO,OACZ,MAAM,IAAIouqC,EAAqB,WAAY,CAAC,WAAY,UAAW5oiB,IAIrE,GAAwB,WAApBj+b,EAAQg+b,KAAmC,OAAXA,GAAiB,CACnD,IAAI7rmB,GAAM,IAAIsnzC,EAAe,CAC3Bz7sB,OAAQA,GACRC,SAAUA,GACVpunB,QAAS06G,GACTqpQ,SAAU,kBACVwm9B,aAAc/g1C,KAEhB84B,SAAIyhW,SAAWv6X,GAAG5mB,KACZ0/C,EACR,CACA,IAAI3+C,GAAOD,OAAOC,KAAKyqpB,IAGvB,GAAIA,cAAoBxvjB,MACtBj7F,GAAKE,KAAK,OAAQ,gBAAS,GACF,IAAhBF,GAAKilB,OACd,MAAM,IAAI8g1C,EAAsB,QAASt7sB,GAAU,8BAErD,YAAoB7jpB,IAAhB++1C,IAA2BY,IAC/Bvm2C,GAAK67B,QAAQ,SAAUp9B,IACM,iBAAhB+rpB,GAAO/rpB,KAAqBykqC,EAASz4gB,GAAShspB,MAAS6n2C,EAAoB77sB,GAAShspB,IAAM+rpB,GAAO/rpB,MAxDlH,SAAS+o2C,GAAoBh9sB,GAAQC,GAAUhspB,GAAK49B,GAASr8B,GAAM6lB,IACjE,KAAMpnB,MAAO+rpB,MAAYo7sB,GAAkBp7sB,GAAO/rpB,IAAMgspB,GAAShspB,KAAO,CACtE,IAAK49B,GAAS,CAEZ,IAAI6f,GAAI,IAAIorzC,GAAW98sB,GAAQxqpB,IAC3Bo8C,GAAI,IAAIkrzC,GAAW78sB,GAAUzqpB,GAAMwqpB,IACnC7rmB,GAAM,IAAIsnzC,EAAe,CAC3Bz7sB,OAAQtumB,GACRuumB,SAAUrumB,GACVgkW,SAAU,kBACVwm9B,aAAc/g1C,KAEhB84B,SAAI6rmB,OAASA,GACb7rmB,GAAI8rmB,SAAWA,GACf9rmB,GAAIyhW,SAAWv6X,GAAG5mB,KACZ0/C,EACR,CACA8nzC,GAAU,CACRj8sB,OAAQA,GACRC,SAAUA,GACVpunB,QAASA,GACT+jX,SAAUv6X,GAAG5mB,KACb2n2C,aAAc/g1C,IAElB,CACF,CAkCM2h1C,CAAoBh9sB,GAAQC,GAAUhspB,GAAKs4I,GAAK/2I,GAAM6lB,GACxD,IACO,CACT,CAEA,YAA2Bjf,IAAvB6jpB,GAAStknB,WAA2BqknB,cAAkBC,KAGtDxvjB,MAAM+73B,cAAcvsU,MAGa,IAA9BA,GAASrknB,KAAK,CAAC,EAAGoknB,GAC3B,CACA,SAASi9sB,GAAU5h1C,IACjB,GAAkB,mBAAPA,GACT,MAAM,IAAIwtqC,EAAqB,KAAM,WAAYxtqC,IAEnD,IACEA,IACF,OAAS0O,IACP,OAAOA,EACT,CACA,OAAOiy0C,EACT,CACA,SAASkB,GAAe5kvC,IAStB,OAAOqjvC,EAAUrjvC,KAAgB,OAARA,IAAiC,WAAjB0pG,EAAQ1pG,KAAyC,mBAAbA,GAAI9+E,MAA4C,mBAAd8+E,GAAI6gC,KACrH,CACA,SAASgktC,GAAcC,IACrB,OAAOz8xC,QAAQ28G,UAAU9jJ,KAAK,WAC5B,IAAI6j0C,GACJ,GAAyB,mBAAdD,IAIT,IAAKF,GAFLG,GAAgBD,MAGd,MAAM,IAAI5B,EAAyB,sBAAuB,YAAa6B,QAAa,KAE7EH,GAAeE,IAGxB,MAAM,IAAIv0K,EAAqB,YAAa,CAAC,WAAY,WAAYu0K,IAFrEC,GAAgBD,EAE8D,CAEhF,OAAOz8xC,QAAQ28G,UAAU9jJ,KAAK,WAC5B,OAAO6j0C,EACT,GAAG7j0C,KAAK,WACN,OAAOwi0C,EACT,GAAG7itC,MAAM,SAAUpvH,IACjB,OAAOA,EACT,EACF,EACF,CACA,SAASuz0C,GAAalB,GAAcp8sB,GAAQ/1nB,GAAO4H,IACjD,GAAqB,iBAAV5H,GAAoB,CAC7B,GAAyB,IAArBnB,UAAUrO,OACZ,MAAM,IAAIouqC,EAAqB,QAAS,CAAC,SAAU,QAAS,WAAY,UAAW5+pC,IAErF,GAAwB,WAApB+3L,EAAQg+b,KAAmC,OAAXA,IAClC,GAAIA,GAAOnunB,UAAY5H,GACrB,MAAM,IAAIqx0C,EAAuB,gBAAiB,sBAAuBv+yC,OAAOijmB,GAAOnunB,QAAS,wCAAkC,GAE3HmunB,KAAW/1nB,GACpB,MAAM,IAAIqx0C,EAAuB,gBAAiB,cAAev+yC,OAAOijmB,GAAQ,mCAElFnunB,GAAU5H,GACVA,QAAQ7tB,CACV,SAAoB,MAAT6tB,IAAoC,WAAnB+3L,EAAQ/3L,KAAwC,mBAAVA,GAChE,MAAM,IAAI4+pC,EAAqB,QAAS,CAAC,SAAU,QAAS,WAAY,UAAW5+pC,IAErF,GAAI+1nB,KAAWg8sB,GAAuB,CACpC,IAAIlr0C,GAAU,GACV7G,IAASA,GAAMx1B,OACjBq8B,IAAW,KAAKisB,OAAO9yB,GAAMx1B,KAAM,MAErCq8B,IAAWe,GAAU,KAAKkrB,OAAOlrB,IAAW,IAE5Coq0C,GAAU,CACRj8sB,YAAQ5jpB,EACR6jpB,SAAUh2nB,GACV2rX,SAAUwm9B,GAAa3n2C,KACvBo9B,QAAS,oBAAoBkrB,OALI,YAAtBq/yC,GAAa3n2C,KAAqB,YAAc,aAKfsoD,OAAOjsB,IACnDsr0C,aAAcA,IAElB,CACA,GAAIny0C,KAAU8y0C,GAAkB/8sB,GAAQ/1nB,GAAO4H,GAASuq0C,IACtD,MAAMp8sB,EAEV,CACA,SAASu9sB,GAAenB,GAAcp8sB,GAAQ/1nB,GAAO4H,IACnD,GAAImunB,KAAWg8sB,GAKf,IAJqB,iBAAV/x0C,KACT4H,GAAU5H,GACVA,QAAQ7tB,IAEL6tB,IAAS8y0C,GAAkB/8sB,GAAQ/1nB,IAAQ,CAC9C,IAAI6G,GAAUe,GAAU,KAAKkrB,OAAOlrB,IAAW,IAE/Coq0C,GAAU,CACRj8sB,OAAQA,GACRC,SAAUh2nB,GACV2rX,SAAUwm9B,GAAa3n2C,KACvBo9B,QAAS,gBAAgBkrB,OALQ,kBAAtBq/yC,GAAa3n2C,KAA2B,YAAc,aAKzBsoD,OAAOjsB,GAAS,MAAQ,oBAAqBisB,OAAOijmB,IAAUA,GAAOnunB,QAAS,KACtHuq0C,aAAcA,IAElB,CACA,MAAMp8sB,GACR,CA4EA,SAASw9sB,GAAc5lzC,GAAQg+rB,GAAQ/jtB,GAASxW,GAAIoi1C,IAClD,IAAK/kM,EAAS9ib,IACZ,MAAM,IAAIizc,EAAqB,SAAU,SAAUjzc,IAErD,IAAI34sB,GAAmB,UAAXwg0C,GACZ,GAAsB,iBAAX7lzC,IAAuBkkzC,EAAoBlmnB,GAAQh+rB,MAAY3a,GAAO,CAC/E,GAAIpL,cAAmB4+D,MACrB,MAAM5+D,GAER,IAAIsq0C,IAAoBtq0C,GAGxBA,GAAUA,KAA8B,iBAAX+lB,GAAsB,+DAAiE,GAAGmF,OAAOilK,EAAQpqK,IAAS,MAAMmF,OAAOwjmC,EAAQ3omC,IAAS,MAAQ3a,GAAQ,kDAAoD,+DAAiE,GAAG8f,OAAOwjmC,EAAQ3qa,IAAS,gBAAgB74rB,OAAOwjmC,EAAQ3omC,IAAS,OACrX,IAAIzD,GAAM,IAAIsnzC,EAAe,CAC3Bz7sB,OAAQpomB,GACRqomB,SAAU21F,GACV/jtB,QAASA,GACT+jX,SAAU6n9B,GACVrB,aAAc/g1C,KAEhB84B,SAAIgozC,iBAAmBA,GACjBhozC,EACR,CACF,CASA,SAASk1iB,KACP,QAASq0wB,GAAQ500C,UAAUrO,OAAQi5L,GAAO,IAAIz+M,MAAMyo2C,IAAQC,GAAQ,EAAGA,GAAQD,GAAOC,KACpFjqpC,GAAKiqpC,IAAS700C,UAAU600C,IAE1BzB,GAAQrz0C,WAAM,EAAQ,CAACwgkB,GAAQ31Y,GAAKj5L,QAAQsiC,OAAO22J,IACrD,CAhHAsu9B,EAAO47L,OAAS,SAASA,GAAOR,IAC9B,QAASS,GAAQ/00C,UAAUrO,OAAQi5L,GAAO,IAAIz+M,MAAM4o2C,GAAQ,EAAIA,GAAQ,EAAI,GAAIC,GAAQ,EAAGA,GAAQD,GAAOC,KACxGpqpC,GAAKoqpC,GAAQ,GAAKh10C,UAAUg10C,IAE9BR,GAAaz00C,WAAM,EAAQ,CAAC+00C,GAAQX,GAAUG,KAAYrgzC,OAAO22J,IACnE,EACAsu9B,EAAO+7L,QAAU,SAASA,GAAQX,IAChC,QAASY,GAAQl10C,UAAUrO,OAAQi5L,GAAO,IAAIz+M,MAAM+o2C,GAAQ,EAAIA,GAAQ,EAAI,GAAIC,GAAQ,EAAGA,GAAQD,GAAOC,KACxGvqpC,GAAKuqpC,GAAQ,GAAKn10C,UAAUm10C,IAE9B,OAAOd,GAAcC,IAAW5j0C,KAAK,SAAUrjC,IAC7C,OAAOmn2C,GAAaz00C,WAAM,EAAQ,CAACk10C,GAAS5n2C,IAAQ4mD,OAAO22J,IAC7D,EACF,EACAsu9B,EAAOk8L,aAAe,SAASA,GAAa7i1C,IAC1C,QAAS8i1C,GAAQr10C,UAAUrO,OAAQi5L,GAAO,IAAIz+M,MAAMkp2C,GAAQ,EAAIA,GAAQ,EAAI,GAAIC,GAAQ,EAAGA,GAAQD,GAAOC,KACxG1qpC,GAAK0qpC,GAAQ,GAAKt10C,UAAUs10C,IAE9Bb,GAAe100C,WAAM,EAAQ,CAACq10C,GAAcjB,GAAU5h1C,KAAK0hC,OAAO22J,IACpE,EACAsu9B,EAAOq8L,cAAgB,SAASA,GAAchj1C,IAC5C,QAASij1C,GAAQx10C,UAAUrO,OAAQi5L,GAAO,IAAIz+M,MAAMqp2C,GAAQ,EAAIA,GAAQ,EAAI,GAAIC,GAAQ,EAAGA,GAAQD,GAAOC,KACxG7qpC,GAAK6qpC,GAAQ,GAAKz10C,UAAUy10C,IAE9B,OAAOpB,GAAc9h1C,IAAIme,KAAK,SAAUrjC,IACtC,OAAOon2C,GAAe100C,WAAM,EAAQ,CAACw10C,GAAelo2C,IAAQ4mD,OAAO22J,IACrE,EACF,EACAsu9B,EAAOw8L,QAAU,SAASA,GAAQrqzC,IAChC,GAAY,MAARA,GAAmC,CACrC,IAAItiB,GAAU,mCACO,WAAjBmwL,EAAQ7tK,KAA4C,iBAAhBA,GAAItiB,QAExCA,IADyB,IAAvBsiB,GAAItiB,QAAQpX,QAAgB05B,GAAIvhD,YACvBuhD,GAAIvhD,YAAY6B,KAEhB0/C,GAAItiB,QAGjBA,IAAW0unC,EAAQpsmC,IAErB,IAAIsqzC,GAAS,IAAIhD,EAAe,CAC9Bz7sB,OAAQ7rmB,GACR8rmB,SAAU,KACVrqQ,SAAU,UACV/jX,QAASA,GACTuq0C,aAAcoC,KAIZE,GAAYvqzC,GAAI24L,MACpB,GAAyB,iBAAd4xnC,GAAwB,CAIjC,IAAIC,GAAOD,GAAUtp2C,MAAM,MAC3Bup2C,GAAKx/rC,QAGL,QADIy/rC,GAAOH,GAAO3xnC,MAAM13O,MAAM,MACrBywD,GAAI,EAAGA,GAAI84yC,GAAKlk1C,OAAQorC,KAAK,CAEpC,IAAI22f,GAAMoizB,GAAKlryC,QAAQiryC,GAAK94yC,KAC5B,IAAY,IAAR22f,GAAY,CAEdoizB,GAAOA,GAAKj50C,MAAM,EAAG62hB,IACrB,KACF,CACF,CACAiizB,GAAO3xnC,MAAQ,GAAG/vL,OAAO6hzC,GAAKvp2C,KAAK,MAAO,MAAM0nD,OAAO4hzC,GAAKtp2C,KAAK,MACnE,CACA,MAAMop2C,EACR,CACF,EA4BAz8L,EAAO/koC,MAAQ,SAASA,GAAM2a,GAAQg+rB,GAAQ/jtB,IAC5C2r0C,GAAc5lzC,GAAQg+rB,GAAQ/jtB,GAASoL,GAAO,QAChD,EACA+koC,EAAO68L,aAAe,SAASA,GAAajnzC,GAAQg+rB,GAAQ/jtB,IAC1D2r0C,GAAc5lzC,GAAQg+rB,GAAQ/jtB,GAASgt0C,GAAc,eACvD,EASA78L,EAAO34kB,OAASuywB,EAAavywB,GAAQ24kB,EAAQ,CAC3C3/sB,MAAO2/sB,EAAO46L,YACdJ,UAAWx6L,EAAO06L,gBAClBtxmB,SAAU42a,EAAO66L,eACjBJ,aAAcz6L,EAAO26L,qBAEvB36L,EAAO34kB,OAAOA,OAAS24kB,EAAO34kB,MAExB,EAEA,eACU3yd,EAAQ8qqC,EAA0BnzmC,GAElD,aAC0B,IAAIC,EAAUD,EAAoB,MAM5D,SAAS88+B,EAAQphpC,GAAGpwB,IAAK,IAAI3G,GAAIuC,OAAOC,KAAKu0B,IAAI,GAAIx0B,OAAOy0uB,sBAAuB,CAAE,IAAI7jrB,GAAI5wD,OAAOy0uB,sBAAsBjgtB,IAAIpwB,KAAMwsD,GAAIA,GAAEzsD,OAAO,SAAUC,IAAK,OAAOpE,OAAOo1V,yBAAyB5gU,GAAGpwB,IAAGy/H,UAAY,IAAKpmI,GAAE0C,KAAKmzB,MAAM71B,GAAGmzD,GAAI,CAAE,OAAOnzD,EAAG,CAC9P,SAAS0tsC,EAAc32qC,IAAK,QAASpwB,GAAI,EAAGA,GAAImvB,UAAUrO,OAAQ9gB,KAAK,CAAE,IAAI3G,GAAI,MAAQ81B,UAAUnvB,IAAKmvB,UAAUnvB,IAAK,CAAC,EAAGA,GAAI,EAAIwxqC,EAAQ51qC,OAAOvC,KAAI,GAAIq+B,QAAQ,SAAU13B,IAAK2ksC,EAAgBv0qC,GAAGpwB,GAAG3G,GAAE2G,IAAK,GAAKpE,OAAOm3rC,0BAA4Bn3rC,OAAOqpX,iBAAiB70V,GAAGx0B,OAAOm3rC,0BAA0B15rC,KAAMm4qC,EAAQ51qC,OAAOvC,KAAIq+B,QAAQ,SAAU13B,IAAKpE,OAAO4jI,eAAepvG,GAAGpwB,GAAGpE,OAAOo1V,yBAAyB33V,GAAG2G,IAAK,EAAI,CAAE,OAAOowB,EAAG,CACtb,SAASu0qC,EAAgBhmlC,GAAKrkH,GAAKG,IAASH,UAAMuzyC,EAAevzyC,OAAiBqkH,GAAO/iH,OAAO4jI,eAAe7gB,GAAKrkH,GAAK,CAAEG,MAAOA,GAAOglI,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBhhB,GAAIrkH,IAAOG,GAAgBkkH,EAAK,CAE3O,SAASimlC,EAAkBz9oC,GAAQi7L,IAAS,QAASl2L,GAAI,EAAGA,GAAIk2L,GAAMthO,OAAQorC,KAAK,CAAE,IAAImhU,GAAajrI,GAAMl2L,IAAImhU,GAAW5tP,WAAa4tP,GAAW5tP,aAAc,EAAO4tP,GAAW3tP,cAAe,EAAU,UAAW2tP,KAAYA,GAAW1tP,UAAW,GAAM/jI,OAAO4jI,eAAer4E,GAAQ0mvC,EAAexg7B,GAAW/yX,KAAM+yX,GAAa,CAAE,CAE5U,SAASwg7B,EAAe58jC,IAAO,IAAI32O,GACnC,SAASwzyC,EAAanwrC,GAAOq1sC,IAAQ,GAAuB,WAAnB3qmC,EAAQ1qG,KAAiC,OAAVA,GAAgB,OAAOA,GAAO,IAAIs1sC,GAAOt1sC,GAAM23F,OAAOm/B,aAAc,QAAahyO,IAATwwzC,GAAoB,CAAE,IAAIhntC,GAAMgntC,GAAKhxxC,KAAK07E,GAAOq1sC,IAAQ,WAAY,GAAqB,WAAjB3qmC,EAAQp8G,IAAmB,OAAOA,GAAK,MAAM,IAAI4tG,UAAU,+CAAiD,CAAE,OAAiB,WAATm5mC,GAAoBh3zC,OAAS09C,QAAQikE,GAAQ,CADnVmwrC,CAAa78jC,GAAK,UAAW,MAAwB,WAAjB5oB,EAAQ/tN,IAAoBA,GAAM0B,OAAO1B,GAAM,CAI5H,SAASuqsC,EAA2B1v/B,GAAMlzK,IAAQ,GAAIA,KAA2B,WAAlBomL,EAAQpmL,KAAsC,mBAATA,IAAwB,OAAOA,GAAa,QAAa,IAATA,GAAmB,MAAM,IAAI43K,UAAU,4DAA+D,OAAOir/B,EAAuB3v/B,GAAO,CAC/R,SAAS2v/B,EAAuB3v/B,IAAQ,QAAa,IAATA,GAAmB,MAAM,IAAI4v/B,eAAe,6DAAgE,OAAO5v/B,EAAM,CACrK,SAAS6v/B,EAAiBjyO,IAAS,IAAIglK,GAAwB,mBAAR96nC,IAAqB,IAAIA,SAAQwF,EAAWuisC,SAAmB,SAA0BjyO,IAAS,GAAc,OAAVA,KAG7J,SAASkyO,EAAkBvjrC,IAAM,OAA+D,IAAxD0zL,SAAS/zL,SAAS4gB,KAAKvgB,IAAIq4C,QAAQ,gBAAyB,CAH4EkroC,CAAkBlyO,IAAQ,OAAOA,GAAO,GAAqB,mBAAVA,GAAwB,MAAM,IAAIl5wB,UAAU,sDAAyD,UAAWk+6B,GAAW,IAAa,CAAE,GAAIA,GAAOri9B,IAAIq9yB,IAAQ,OAAOglK,GAAO/nmC,IAAI+i8B,IAAQglK,GAAO36nC,IAAI219B,GAAOmyO,GAAU,CAAE,SAASA,KAAY,OAAOC,EAAWpyO,GAAO5j8B,UAAWi2qC,EAAgBlssC,MAAMD,YAAc,CAAEissC,UAAQljqC,UAAYpmC,OAAO+rI,OAAOor1B,GAAM/w7B,UAAW,CAAE/oC,YAAa,CAAEwB,MAAOyqsC,GAASzlkC,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAkB2lkC,EAAgBH,GAASnyO,GAAQ,EAAUiyO,EAAiBjyO,GAAQ,CACtvB,SAASoyO,EAAWG,GAAQvr/B,GAAMg5wB,IAAS,OAAmCoyO,EAA/BI,IAA4C9jgB,QAAQ+jgB,UAAU32iC,OAA8B,SAAoBy2iC,GAAQvr/B,GAAMg5wB,IAAS,IAAIh76B,GAAI,CAAC,MAAOA,GAAEh8C,KAAKmzB,MAAM6oB,GAAGgiK,IAAO,IAAsD2sD,GAAW,IAA/CtxD,SAASvmD,KAAK3/H,MAAMo2qC,GAAQvtpC,KAAsC,OAAIg76B,IAAOsyO,EAAgB3+7B,GAAUqstB,GAAM/w7B,WAAmB0kO,EAAU,GAAuBx3O,MAAM,KAAMC,UAAY,CACxa,SAASo2qC,IAAsG,UAA7D9jgB,QAAY,MAAgBA,QAAQ+jgB,WAA6B/jgB,QAAQ+jgB,UAAUrpC,KAAM,OAAO,EAAO,GAAqB,mBAAVspC,MAAsB,OAAO,EAAM,IAAMnnL,eAAQt8+B,UAAUktC,QAAQjtC,KAAKw/pB,QAAQ+jgB,UAAUlnL,QAAS,GAAI,WAAa,KAAY,CAAM,OAAc,OAAO,CAAO,CAAE,CAExU,SAAS+mL,EAAgB74oC,GAAGvuD,IAAKonsC,SAAkBzpsC,OAAOm/O,eAAiBn/O,OAAOm/O,eAAelsF,OAAS,SAAyBriG,GAAGvuD,IAAKuuD,UAAEu8M,UAAY9qQ,GAAUuuD,EAAG,GAA0BA,GAAGvuD,GAAI,CACvM,SAASmnsC,EAAgB54oC,IAAK44oC,SAAkBxpsC,OAAOm/O,eAAiBn/O,OAAO6lP,eAAe5yF,OAAS,SAAyBriG,IAAK,OAAOA,GAAEu8M,WAAantQ,OAAO6lP,eAAej1L,GAAI,GAA0BA,GAAI,CACnN,SAAS67J,EAAQ77J,IAAgC,OAAO67J,EAAU,mBAAqB/S,QAAU,iBAAmBA,OAAOg/B,SAAW,SAAU9nL,IAAK,cAAcA,EAAG,EAAI,SAAUA,IAAK,OAAOA,IAAK,mBAAqB8oJ,QAAU9oJ,GAAEvzD,cAAgBq8M,QAAU9oJ,KAAM8oJ,OAAOtzK,UAAY,gBAAkBwqB,EAAG,GAAWA,GAAI,CAC7T,IACEo6lC,EADaly9B,EAAoB,MACdky9B,QAEnBsoC,EADcx6/B,EAAoB,OACD+5/B,MAAMS,qBAGzC,SAASl9b,GAASzluB,GAAK/K,GAAQ2j1C,IAC7B,YAAiB1i2C,IAAb0i2C,IAA0BA,GAAW540C,GAAIzL,UAC3Cqk1C,GAAW540C,GAAIzL,QAEVyL,GAAIwgE,UAAUo4wC,GAAW3j1C,GAAOV,OAAQqk1C,MAAc3j1C,EAC/D,CAeA,IAAI69U,GAAO,GACP6C,GAAQ,GACRkE,GAAM,GACNwB,EAAQ,GACRw9/B,EAAoB,CACtBrC,gBAAiB,6CACjBE,YAAa,wCACboC,kBAAmB,yDACnBxC,UAAW,4CACXn64B,MAAO,uCACPs64B,mBAAoB,sDACpBE,eAAgB,+CAChBoC,qBAAsB,6DACtBxC,aAAc,qDACdrxmB,SAAU,8CACV8zmB,aAAc,6CAMhB,SAASC,EAAUtnwC,IACjB,IAAIriG,GAAOD,OAAOC,KAAKqiG,IACnB/2C,GAASvrD,OAAO+rI,OAAO/rI,OAAO6lP,eAAevjJ,KACjDriG,UAAK67B,QAAQ,SAAUp9B,IACrB6sD,GAAO7sD,IAAO4jG,GAAO5jG,GACvB,GACAsB,OAAO4jI,eAAer4E,GAAQ,UAAW,CACvC1sD,MAAOyjG,GAAOhmE,UAETivB,EACT,CACA,SAASs+yC,EAAa5n2C,IAGpB,OAAO+opC,EAAQ/opC,GAAK,CAClBwsd,SAAS,EACT4ouB,eAAe,EACfjtrB,MAAO,IACP0/1B,eAAgBn4/B,IAEhBwx1B,YAAY,EAMZ4mK,YAAap4/B,IAEbq4/B,WAAW,EACX574B,QAAQ,EAERu7f,SAAS,GAEb,CACA,SAASsgZ,EAAcx/sB,GAAQC,GAAUrqQ,IACvC,IAAIxsU,GAAQ,GACRw8B,GAAM,GACN65vC,GAAU,EACVpzuC,GAAM,GACN8t1B,IAAU,EACVulZ,GAAkBN,EAAap/sB,IAC/B2/sB,GAAcD,GAAgBtq2C,MAAM,MACpCwq2C,GAAgBR,EAAan/sB,IAAU7qpB,MAAM,MAC7CywD,GAAI,EACJg6yC,GAAY,GAUhB,GANiB,gBAAbjq9B,IAAkD,WAApB5zL,EAAQg+b,KAA8C,WAAtBh+b,EAAQi+b,KAAqC,OAAXD,IAAgC,OAAbC,KACrHrqQ,GAAW,qBAKc,IAAvB+p9B,GAAYll1C,QAAyC,IAAzBml1C,GAAcnl1C,QAAgBkl1C,GAAY,KAAOC,GAAc,GAAI,CACjG,IAAIE,GAAcH,GAAY,GAAGll1C,OAASml1C,GAAc,GAAGnl1C,OAI3D,GAAIql1C,IA5Dc,IA6DhB,KAAyB,WAApB99oC,EAAQg+b,KAAmC,OAAXA,IAA2C,WAAtBh+b,EAAQi+b,KAAuC,OAAbA,IAAkC,IAAXD,IAA6B,IAAbC,IAEjI,MAAO,GAAGljmB,OAAOgizC,EAAkBnp9B,IAAW,QAAU,GAAG74V,OAAO4izC,GAAY,GAAI,SAAS5izC,OAAO6izC,GAAc,GAAI,WAAI,GAEpG,sBAAbhq9B,IAKLkq9B,IADYxxqC,EAAQ47/B,QAAU57/B,EAAQ47/B,OAAO61K,MAAQzxqC,EAAQ47/B,OAAOn7nC,QAAU,IACrD,CAC3B,KAAO4wyC,GAAY,GAAG95yC,MAAO+5yC,GAAc,GAAG/5yC,KAC5CA,KAGEA,GAAI,IAGNg6yC,GAAY,OAAO9izC,OA9G7B,SAASq2K,GAAOltM,GAAKsxG,IAEnB,GADAA,GAAQh5F,KAAKuqC,MAAMyuD,IACD,GAAdtxG,GAAIzL,QAAwB,GAAT+8G,GAAY,MAAO,GAC1C,IAAI0yd,GAAWhkkB,GAAIzL,OAAS+8G,GAE5B,IADAA,GAAQh5F,KAAKuqC,MAAMvqC,KAAK1lB,IAAI0+G,IAASh5F,KAAK1lB,IAAI,IACvC0+G,IACLtxG,IAAOA,GACPsxG,KAEFtxG,UAAOA,GAAIwgE,UAAU,EAAGwjgB,GAAWhkkB,GAAIzL,OAEzC,CAmGoC24M,CAAO,IAAKvtK,IAAI,KAC1CA,GAAI,EAER,CAEJ,CAMA,QAFInU,GAAIiuzC,GAAYA,GAAYll1C,OAAS,GACrCm3B,GAAIguzC,GAAcA,GAAcnl1C,OAAS,GACtCi3B,KAAME,KACPiU,KAAM,EACRwmE,GAAM,OAAOtvE,OAAOrL,IAAGqL,OAAOsvE,IAE9BjjD,GAAQ13B,GAEViuzC,GAAY/2zC,MACZg3zC,GAAch3zC,MACa,IAAvB+2zC,GAAYll1C,QAAyC,IAAzBml1C,GAAcnl1C,SAC9Ci3B,GAAIiuzC,GAAYA,GAAYll1C,OAAS,GACrCm3B,GAAIguzC,GAAcA,GAAcnl1C,OAAS,GAE3C,IAAIul1C,GAAWxh0C,KAAKC,IAAIkh0C,GAAYll1C,OAAQml1C,GAAcnl1C,QAG1D,GAAiB,IAAbul1C,GAAgB,CAElB,IAAIC,GAAeP,GAAgBtq2C,MAAM,MAIzC,GAAI6q2C,GAAaxl1C,OAAS,GAExB,IADAwl1C,GAAa,IAAM,GAAGljzC,OAAOi8S,GAAM,OAAOj8S,OAAOwkT,GAC1C0+/B,GAAaxl1C,OAAS,IAC3Bwl1C,GAAar3zC,MAGjB,MAAO,GAAGmU,OAAOgizC,EAAkBG,aAAc,QAAQnizC,OAAOkjzC,GAAa5q2C,KAAK,MAAO,KAC3F,CACIwwD,GAAI,IACNwmE,GAAM,KAAKtvE,OAAOi8S,GAAM,OAAOj8S,OAAOwkT,GAAOxkT,OAAOsvE,IACpD8t1B,IAAU,GAEE,KAAV/w4B,KACFijD,GAAM,OAAOtvE,OAAOqsB,IAAOrsB,OAAOsvE,IAClCjjD,GAAQ,IAEV,IAAI82xC,GAAe,EACf3ztC,GAAMwytC,EAAkBnp9B,IAAY,KAAK74V,OAAO8+S,GAAO,YAAY9+S,OAAOwkT,EAAO,KAAKxkT,OAAOgjT,GAAK,cAAchjT,OAAOwkT,GACvH4+/B,GAAa,IAAIpjzC,OAAOi8S,GAAM,OAAOj8S,OAAOwkT,EAAO,kBACvD,IAAK17S,GAAI,EAAGA,GAAIm6yC,GAAUn6yC,KAAK,CAE7B,IAAImlE,GAAMnlE,GAAI45yC,GACd,GAAIE,GAAYll1C,OAASorC,GAAI,EAIvBmlE,GAAM,GAAKnlE,GAAI,IACbmlE,GAAM,GACRplB,IAAO,KAAK7oD,OAAOi8S,GAAM,OAAOj8S,OAAOwkT,GACvC44mB,IAAU,GACDnv1B,GAAM,IACfplB,IAAO,OAAO7oD,OAAO6izC,GAAc/5yC,GAAI,IACvCq6yC,MAEFt6vC,IAAO,OAAO7oD,OAAO6izC,GAAc/5yC,GAAI,IACvCq6yC,MAGFT,GAAU55yC,GAEVujB,IAAS,KAAKrsB,OAAOgjT,GAAK,KAAKhjT,OAAOwkT,EAAO,KAAKxkT,OAAO6izC,GAAc/5yC,KACvEq6yC,aAESN,GAAcnl1C,OAASorC,GAAI,EAIhCmlE,GAAM,GAAKnlE,GAAI,IACbmlE,GAAM,GACRplB,IAAO,KAAK7oD,OAAOi8S,GAAM,OAAOj8S,OAAOwkT,GACvC44mB,IAAU,GACDnv1B,GAAM,IACfplB,IAAO,OAAO7oD,OAAO4izC,GAAY95yC,GAAI,IACrCq6yC,MAEFt6vC,IAAO,OAAO7oD,OAAO4izC,GAAY95yC,GAAI,IACrCq6yC,MAGFT,GAAU55yC,GAEV+/C,IAAO,KAAK7oD,OAAO8+S,GAAO,KAAK9+S,OAAOwkT,EAAO,KAAKxkT,OAAO4izC,GAAY95yC,KACrEq6yC,SAEK,CACL,IAAIE,GAAeR,GAAc/5yC,IAC7Bw6yC,GAAaV,GAAY95yC,IAIzBy6yC,GAAiBD,KAAeD,MAAkBz0mB,GAAS00mB,GAAY,MAAQA,GAAW160C,MAAM,GAAG,KAAQy60C,IAU3GE,IAAkB30mB,GAASy0mB,GAAc,MAAQA,GAAaz60C,MAAM,GAAG,KAAQ060C,KACjFC,IAAiB,EACjBD,IAAc,KAEZC,IAIEt1uC,GAAM,GAAKnlE,GAAI,IACbmlE,GAAM,GACRplB,IAAO,KAAK7oD,OAAOi8S,GAAM,OAAOj8S,OAAOwkT,GACvC44mB,IAAU,GACDnv1B,GAAM,IACfplB,IAAO,OAAO7oD,OAAO4izC,GAAY95yC,GAAI,IACrCq6yC,MAEFt6vC,IAAO,OAAO7oD,OAAO4izC,GAAY95yC,GAAI,IACrCq6yC,MAGFT,GAAU55yC,GAGV+/C,IAAO,KAAK7oD,OAAO8+S,GAAO,KAAK9+S,OAAOwkT,EAAO,KAAKxkT,OAAOsjzC,IACzDj3xC,IAAS,KAAKrsB,OAAOgjT,GAAK,KAAKhjT,OAAOwkT,EAAO,KAAKxkT,OAAOqjzC,IACzDF,IAAgB,IAKhBt6vC,IAAOx8B,GACPA,GAAQ,IAGI,IAAR4hD,IAAmB,IAANnlE,MACf+/C,IAAO,OAAO7oD,OAAOsjzC,IACrBH,MAGN,CAEA,GAAIA,GAAe,IAAMr6yC,GAAIm6yC,GAAW,EACtC,MAAO,GAAGjjzC,OAAOwvF,IAAKxvF,OAAOojzC,GAAY,MAAMpjzC,OAAO6oD,GAAK,MAAM7oD,OAAOi8S,GAAM,OAAOj8S,OAAOwkT,GAAOxkT,OAAOqsB,GAAO,MAAQ,GAAGrsB,OAAOi8S,GAAM,OAAOj8S,OAAOwkT,EAE3J,CACA,MAAO,GAAGxkT,OAAOwvF,IAAKxvF,OAAOo95B,GAAUgmZ,GAAa,GAAI,MAAMpjzC,OAAO6oD,IAAK7oD,OAAOqsB,IAAOrsB,OAAOsvE,IAAKtvE,OAAO8izC,GAC7G,CACA,IAAIpE,GAA8B,SAAUn8J,GAAQihK,KAtSpD,SAAShhK,EAAUC,GAAUC,IAAc,GAA0B,mBAAfA,IAA4C,OAAfA,GAAuB,MAAM,IAAIjs/B,UAAU,sDAAyDgs/B,GAAS7jqC,UAAYpmC,OAAO+rI,OAAOm+jC,IAAcA,GAAW9jqC,UAAW,CAAE/oC,YAAa,CAAEwB,MAAOorsC,GAAUlmkC,UAAU,EAAMD,cAAc,KAAW9jI,OAAO4jI,eAAeqmkC,GAAU,YAAa,CAAElmkC,UAAU,IAAcmmkC,IAAYT,EAAgBQ,GAAUC,GAAa,CAuSjcF,CAAUk8J,GAAgBn8J,IAC1B,IAAIj+jC,GAvSN,SAASq+jC,EAAaC,IAAW,IAAIC,GAA4BV,IAA6B,OAAO,WAAkC,IAAsC/osC,GAAlC0psC,GAAQd,EAAgBY,IAAkB,GAAIC,GAA2B,CAAE,IAAIE,GAAYf,EAAgBlssC,MAAMD,YAAauD,GAASilsB,QAAQ+jgB,UAAUU,GAAO/2qC,UAAWg3qC,GAAY,MAAS3psC,GAAS0psC,GAAMh3qC,MAAMh2B,KAAMi2B,WAAc,OAAO01qC,EAA2B3rsC,KAAMsD,GAAS,CAAG,CAuSzZupsC,CAAa+7J,IAC1B,SAASA,GAAe/m2C,IACtB,IAAI+yB,GAEJ,GAjTJ,SAAS24qC,EAAgB//7B,GAAUnmB,IAAe,KAAMmmB,cAAoBnmB,IAAgB,MAAM,IAAI1mC,UAAU,oCAAwC,CAgTpJ4s/B,CAAgBvtsC,KAAM4o2C,IACG,WAArBz5oC,EAAQttN,KAAqC,OAAZA,GACnC,MAAM,IAAIm0rC,EAAqB,UAAW,SAAUn0rC,IAEtD,IAAIm9B,GAAUn9B,GAAQm9B,QACpB+jX,GAAWlhZ,GAAQkhZ,SACnBwm9B,GAAe1n2C,GAAQ0n2C,aACrBp8sB,GAAStrpB,GAAQsrpB,OACnBC,GAAWvrpB,GAAQurpB,SACjBn2hB,GAAQr5B,MAAM+vwC,gBAElB,GADA/vwC,MAAM+vwC,gBAAkB,EACT,MAAX3u0C,GACFpK,GAAQ45G,GAAOzlG,KAAK/oC,KAAM8C,OAAOk8B,UAAQ,GAErCy8J,EAAQ47/B,QAAU57/B,EAAQ47/B,OAAO61K,QAG/BzxqC,EAAQ47/B,QAAU57/B,EAAQ47/B,OAAOu2K,eAAoD,IAAnCnyqC,EAAQ47/B,OAAOu2K,iBACnEzngC,GAAO,WACP6C,GAAQ,WACR0F,EAAQ,WACRxB,GAAM,aAEN/G,GAAO,GACP6C,GAAQ,GACR0F,EAAQ,GACRxB,GAAM,KAMc,WAApB/9I,EAAQg+b,KAAmC,OAAXA,IAAyC,WAAtBh+b,EAAQi+b,KAAuC,OAAbA,IAAqB,UAAWD,IAAUA,cAAkBvvjB,OAAS,UAAWwvjB,IAAYA,cAAoBxvjB,QACvMuvjB,GAASm/sB,EAAUn/sB,IACnBC,GAAWk/sB,EAAUl/sB,KAEN,oBAAbrqQ,IAA+C,gBAAbA,GACpCnuX,GAAQ45G,GAAOzlG,KAAK/oC,KAAM2s2C,EAAcx/sB,GAAQC,GAAUrqQ,UAAS,GAC7C,uBAAbA,IAAkD,mBAAbA,GAA+B,CAG7E,IAAIn9K,GAAOsmoC,EAAkBnp9B,IACzBhwS,GAAMw5vC,EAAap/sB,IAAQ5qpB,MAAM,MASrC,GANiB,mBAAbwgZ,IAAqD,WAApB5zL,EAAQg+b,KAAmC,OAAXA,KACnEvnb,GAAOsmoC,EAAkBE,sBAKvBr5vC,GAAInrF,OAAS,GAEf,IADAmrF,GAAI,IAAM,GAAG7oD,OAAOi8S,GAAM,OAAOj8S,OAAOwkT,GACjC37P,GAAInrF,OAAS,IAClBmrF,GAAIh9D,MAMNnhB,GAAQ45G,GAAOzlG,KAAK/oC,KADH,IAAf+yG,GAAInrF,OACoB,GAAGsiC,OAAO07K,GAAM,KAAK17K,OAAO6oD,GAAI,IAEhC,GAAG7oD,OAAO07K,GAAM,QAAQ17K,OAAO6oD,GAAIvwG,KAAK,MAAO,MAE7E,KAAO,CACL,IAAIqr2C,GAAOtB,EAAap/sB,IACpB52kB,GAAQ,GACRu3xC,GAAiB5B,EAAkBnp9B,IACtB,iBAAbA,IAA4C,aAAbA,IACjC8q9B,GAAO,GAAG3jzC,OAAOgizC,EAAkBnp9B,IAAW,QAAQ74V,OAAO2jzC,KACpDjm1C,OAAS,OAChBim1C,GAAO,GAAG3jzC,OAAO2jzC,GAAK/60C,MAAM,EAAG,MAAO,SAGxCyjD,GAAQ,GAAGrsB,OAAOqizC,EAAan/sB,KAC3BygtB,GAAKjm1C,OAAS,MAChBim1C,GAAO,GAAG3jzC,OAAO2jzC,GAAK/60C,MAAM,EAAG,KAAM,QAEnCyjD,GAAM3uD,OAAS,MACjB2uD,GAAQ,GAAGrsB,OAAOqsB,GAAMzjD,MAAM,EAAG,KAAM,QAExB,cAAbiwX,IAAyC,UAAbA,GAC9B8q9B,GAAO,GAAG3jzC,OAAO4jzC,GAAgB,QAAQ5jzC,OAAO2jzC,GAAM,wBAEtDt3xC,GAAQ,IAAIrsB,OAAO64V,GAAU,KAAK74V,OAAOqsB,KAG7C3hD,GAAQ45G,GAAOzlG,KAAK/oC,KAAM,GAAGkqD,OAAO2jzC,IAAM3jzC,OAAOqsB,IACnD,CAEFqnB,aAAM+vwC,gBAAkB12uC,GACxBriG,GAAM000C,kBAAoBtq0C,GAC1Bt8B,OAAO4jI,eAAeslkC,EAAuBh3qC,IAAQ,OAAQ,CAC3DrzB,MAAO,iCACPglI,YAAY,EACZE,UAAU,EACVD,cAAc,IAEhB5xG,GAAMyxF,KAAO,gBACbzxF,GAAMu4nB,OAASA,GACfv4nB,GAAMw4nB,SAAWA,GACjBx4nB,GAAMmuX,SAAWA,GACbnlT,MAAM2kJ,mBAER3kJ,MAAM2kJ,kBAAkBqp9B,EAAuBh3qC,IAAQ200C,IAKzD300C,GAAMhzB,KAAO,iBACN+psC,EAA2B/2qC,GACpC,CACAk5qC,OA9ZF,SAASA,EAAazm9B,GAAa0m9B,GAAYC,IAAe,OAAID,IAAYrC,EAAkBrk9B,GAAYv+M,UAAWilqC,IAAiBC,IAAatC,EAAkBrk9B,GAAa2m9B,IAActrsC,OAAO4jI,eAAe+gH,GAAa,YAAa,CAAE5gH,UAAU,IAAiB4gH,EAAa,CA8Z1Rym9B,CAAa86J,GAAgB,CAAC,CAC5Bxn2C,IAAK,WACLG,MAAO,WACL,MAAO,GAAG2oD,OAAOlqD,KAAK4B,KAAM,MAAMsoD,OAAOlqD,KAAKqmH,KAAM,OAAOn8D,OAAOlqD,KAAKg/B,QACzE,GACC,CACD59B,IAAKss2C,GACLns2C,MAAO,SAAews2C,GAAclk1C,IAKlC,OAAO6joC,EAAQ1tpC,KAAM6tsC,EAAcA,EAAc,CAAC,EAAGhkrC,IAAM,CAAC,EAAG,CAC7DkwqC,eAAe,EACfjtrB,MAAO,IAEX,KAEK871B,EACT,CAxIkC,CAwIlB98J,EAAiBlumC,OAAQ8vjC,EAAQtb,QACjDvugC,EAAOkhjB,QAAU6jrB,EAEX,EAEA,eACU/kuC,EAAQ8qqC,EAA0BnzmC,GAElD,aAeA,SAAS2zB,EAAQ77J,GAAgC,OAAO67J,EAAU,mBAAqB/S,QAAU,iBAAmBA,OAAOg/B,SAAW,SAAU9nL,GAAK,cAAcA,CAAG,EAAI,SAAUA,GAAK,OAAOA,GAAK,mBAAqB8oJ,QAAU9oJ,EAAEvzD,cAAgBq8M,QAAU9oJ,IAAM8oJ,OAAOtzK,UAAY,gBAAkBwqB,CAAG,GAAWA,EAAI,CAC7T,SAASo4oC,EAAkBz9oC,EAAQi7L,GAAS,QAASl2L,EAAI,EAAGA,EAAIk2L,EAAMthO,OAAQorC,IAAK,CAAE,IAAImhU,GAAajrI,EAAMl2L,GAAImhU,GAAW5tP,WAAa4tP,GAAW5tP,aAAc,EAAO4tP,GAAW3tP,cAAe,EAAU,UAAW2tP,KAAYA,GAAW1tP,UAAW,GAAM/jI,OAAO4jI,eAAer4E,EAAQ0mvC,EAAexg7B,GAAW/yX,KAAM+yX,GAAa,CAAE,CAE5U,SAASwg7B,EAAe58jC,GAAO,IAAI32O,EACnC,SAASwzyC,EAAanwrC,EAAOq1sC,GAAQ,GAAuB,WAAnB3qmC,EAAQ1qG,IAAiC,OAAVA,EAAgB,OAAOA,EAAO,IAAIs1sC,EAAOt1sC,EAAM23F,OAAOm/B,aAAc,QAAahyO,IAATwwzC,EAAoB,CAAE,IAAIhntC,GAAMgntC,EAAKhxxC,KAAK07E,EAAOq1sC,GAAQ,WAAY,GAAqB,WAAjB3qmC,EAAQp8G,IAAmB,OAAOA,GAAK,MAAM,IAAI4tG,UAAU,+CAAiD,CAAE,OAAiB,WAATm5mC,EAAoBh3zC,OAAS09C,QAAQikE,EAAQ,CADnVmwrC,CAAa78jC,EAAK,UAAW,MAAwB,WAAjB5oB,EAAQ/tN,GAAoBA,EAAM0B,OAAO1B,EAAM,CAI5H,SAAS+qsC,EAAgB74oC,EAAGvuD,GAAKonsC,SAAkBzpsC,OAAOm/O,eAAiBn/O,OAAOm/O,eAAelsF,OAAS,SAAyBriG,GAAGvuD,IAAKuuD,UAAEu8M,UAAY9qQ,GAAUuuD,EAAG,GAA0BA,EAAGvuD,EAAI,CACvM,SAAS8nsC,EAAaC,GAAW,IAAIC,EAGrC,SAASV,IAAsG,UAA7D9jgB,QAAY,MAAgBA,QAAQ+jgB,WAA6B/jgB,QAAQ+jgB,UAAUrpC,KAAM,OAAO,EAAO,GAAqB,mBAAVspC,MAAsB,OAAO,EAAM,IAAMnnL,eAAQt8+B,UAAUktC,QAAQjtC,KAAKw/pB,QAAQ+jgB,UAAUlnL,QAAS,GAAI,WAAa,KAAY,CAAM,OAAc,OAAO,CAAO,CAAE,CAHvQinL,GAA6B,OAAO,WAAkC,IAAsC/osC,GAAlC0psC,GAAQd,EAAgBY,GAAkB,GAAIC,EAA2B,CAAE,IAAIE,GAAYf,EAAgBlssC,MAAMD,YAAauD,GAASilsB,QAAQ+jgB,UAAUU,GAAO/2qC,UAAWg3qC,GAAY,MAAS3psC,GAAS0psC,GAAMh3qC,MAAMh2B,KAAMi2B,WAAc,OACpX,SAAS01qC,EAA2B1v/B,EAAMlzK,GAAQ,GAAIA,IAA2B,WAAlBomL,EAAQpmL,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAI43K,UAAU,4DAA+D,OAC1P,SAASir/B,EAAuB3v/B,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI4v/B,eAAe,6DAAgE,OAAO5v/B,CAAM,CAD4F2v/B,CAAuB3v/B,EAAO,CAD4F0v/B,CAA2B3rsC,KAAMsD,GAAS,CAAG,CAIxa,SAAS4osC,EAAgB54oC,GAAK44oC,SAAkBxpsC,OAAOm/O,eAAiBn/O,OAAO6lP,eAAe5yF,OAAS,SAAyBriG,GAAK,OAAOA,EAAEu8M,WAAantQ,OAAO6lP,eAAej1L,EAAI,GAA0BA,EAAI,CACnN,IAGI67mC,EACAtsB,EAJA0yC,EAAQ,CAAC,EAKb,SAASy4K,EAAgB3nvC,EAAMrnF,EAASy8qC,GACjCA,IACHA,EAAO79mC,OAqBT23lC,EAAMlvkC,GAZuB,SAAUk0rC,KAvBzC,SAAS7tG,EAAUC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIjs/B,UAAU,sDAAyDgs/B,EAAS7jqC,UAAYpmC,OAAO+rI,OAAOm+jC,GAAcA,EAAW9jqC,UAAW,CAAE/oC,YAAa,CAAEwB,MAAOorsC,EAAUlmkC,UAAU,EAAMD,cAAc,KAAW9jI,OAAO4jI,eAAeqmkC,EAAU,YAAa,CAAElmkC,UAAU,IAAcmmkC,GAAYT,EAAgBQ,EAAUC,EAAa,CAwB/bF,CAAU8tG,GAAWD,IACrB,IAAI/rqC,GAASq+jC,EAAa2tG,IAC1B,SAASA,GAAUyzD,EAAMC,EAAMC,GAC7B,IAAIv50C,EACJ24qC,OA7BN,SAASA,EAAgB//7B,EAAUnmB,GAAe,KAAMmmB,aAAoBnmB,GAAgB,MAAM,IAAI1mC,UAAU,oCAAwC,CA6BlJ4s/B,CAAgBvtsC,KAAMw6yC,KACtB5lxC,EAAQ45G,GAAOzlG,KAAK/oC,KAbxB,SAASs6yC,GAAW2zD,GAAMC,GAAMC,IAC9B,MAAuB,iBAAZnv0C,EACFA,EAEAA,EAAQiv0C,GAAMC,GAAMC,GAE/B,CAO8B7zD,CAAW2zD,EAAMC,EAAMC,KAC3C9nvC,KAAOA,EACNzxF,CACT,CACA,OArCJ,SAASk5qC,EAAazm9B,EAAa0m9B,EAAYC,GAAe,OAAID,GAAYrC,EAAkBrk9B,EAAYv+M,UAAWilqC,GAAiBC,GAAatC,EAAkBrk9B,EAAa2m9B,GAActrsC,OAAO4jI,eAAe+gH,EAAa,YAAa,CAAE5gH,UAAU,IAAiB4gH,CAAa,CAqCjRym9B,CAAa0sG,GACtB,CAX6B,CAW3B/+F,EAEJ,CAGA,SAAS2yJ,EAAMhhtB,EAAUihtB,GACvB,GAAIjs2C,MAAMq3G,QAAQ2ziB,GAAW,CAC3B,IAAI3lhB,EAAM2lhB,EAASxloB,OAInB,OAHAwloB,EAAWA,EAAS/qpB,IAAI,SAAU2wD,IAChC,OAAOlwD,OAAOkwD,GAChB,GACIy0E,EAAM,EACD,UAAUv9E,OAAOmkzC,EAAO,KAAKnkzC,OAAOkjmB,EAASt6nB,MAAM,EAAG20G,EAAM,GAAGjlI,KAAK,MAAO,SAAW4qpB,EAAS3lhB,EAAM,GAC3F,IAARA,EACF,UAAUv9E,OAAOmkzC,EAAO,KAAKnkzC,OAAOkjmB,EAAS,GAAI,QAAQljmB,OAAOkjmB,EAAS,IAEzE,MAAMljmB,OAAOmkzC,EAAO,KAAKnkzC,OAAOkjmB,EAAS,GAEpD,CACE,MAAO,MAAMljmB,OAAOmkzC,EAAO,KAAKnkzC,OAAOpnD,OAAOsqpB,GAElD,CA0BA4gtB,EAAgB,yBAA0B,qCAAsCrtpC,WAChFqtpC,EAAgB,uBAAwB,SAAUps2C,EAAMwrpB,EAAUD,GAKhE,IAAImhtB,GAOA50tC,GACJ,QAZenwI,IAAX4lqC,IAAsBA,EAAS3z+B,EAAoB,QACvD2z+B,EAAuB,iBAATvtqC,EAAmB,2BAIT,iBAAbwrpB,GA9Bb,SAAS/5d,EAAWhgK,EAAK/K,EAAQqhiB,GAC/B,OAAOt2hB,EAAIqW,QAAQighB,GAAOA,EAAM,EAAI,GAAKA,EAAKrhiB,EAAOV,UAAYU,CACnE,CA4BsC+qK,CAAW+5d,EAAU,SACvDkhtB,GAAa,cACblhtB,EAAWA,EAAS/ppB,QAAQ,QAAS,KAErCir2C,GAAa,UA7BjB,SAASx1mB,EAASzluB,EAAK/K,EAAQ2j1C,GAC7B,YAAiB1i2C,IAAb0i2C,GAA0BA,EAAW540C,EAAIzL,UAC3Cqk1C,EAAW540C,EAAIzL,QAEVyL,EAAIwgE,UAAUo4wC,EAAW3j1C,EAAOV,OAAQqk1C,KAAc3j1C,CAC/D,CA2BMwwuB,CAASl3vB,EAAM,aAEjB83I,GAAM,OAAOxvF,OAAOtoD,EAAM,KAAKsoD,OAAOokzC,GAAY,KAAKpkzC,OAAOkkzC,EAAMhhtB,EAAU,aACzE,CACL,IAAI3opB,GA5BR,SAASsrC,EAAS1c,EAAK/K,EAAQiwG,GAI7B,MAHqB,iBAAVA,IACTA,EAAQ,KAENA,EAAQjwG,EAAOV,OAASyL,EAAIzL,UAGQ,IAA/ByL,EAAIwtC,QAAQv4C,EAAQiwG,EAE/B,CAmBexoF,CAASnuC,EAAM,KAAO,WAAa,WAC9C83I,GAAM,QAASxvF,OAAOtoD,EAAM,MAAOsoD,OAAOzlD,GAAM,KAAKylD,OAAOokzC,GAAY,KAAKpkzC,OAAOkkzC,EAAMhhtB,EAAU,QACtG,CAGA1zgB,UAAO,mBAAmBxvF,OAAOilK,EAAQg+b,GAE3C,EAAGxsc,WACHqtpC,EAAgB,wBAAyB,SAAUps2C,EAAML,GACvD,IAAIi3F,EAASviE,UAAUrO,OAAS,QAAsBre,IAAjB0sB,UAAU,GAAmBA,UAAU,GAAK,kBACpE1sB,IAATs5oC,IAAoBA,EAAOrn9B,EAAoB,OACnD,IAAI+yqC,GAAY1rN,EAAK6K,QAAQnspC,GAC7B,OAAIgt2C,GAAU3m1C,OAAS,MACrB2m1C,GAAY,GAAGrkzC,OAAOqkzC,GAAUz70C,MAAM,EAAG,KAAM,QAE1C,iBAAiBo3B,OAAOtoD,EAAM,MAAMsoD,OAAOsuC,EAAQ,eAAetuC,OAAOqkzC,GAClF,EAAG5tpC,UAAW93K,YACdml0C,EAAgB,2BAA4B,SAAUvpvC,EAAO7iH,EAAML,GACjE,IAAIkD,GACJ,OACEA,GADElD,GAASA,EAAMxB,aAAewB,EAAMxB,YAAY6B,KAC3C,eAAesoD,OAAO3oD,EAAMxB,YAAY6B,MAExC,QAAQsoD,OAAOilK,EAAQ5tN,IAEzB,YAAY2oD,OAAOu6D,EAAO,8BAA+Bv6D,OAAOtoD,EAAM,KAAQ,qBAAqBsoD,OAAOzlD,GAAM,IACzH,EAAGk8M,WACHqtpC,EAAgB,mBAAoB,WAClC,QAASr0M,EAAO1joC,UAAUrO,OAAQi5L,EAAO,IAAIz+M,MAAMu3pC,GAAO1tyB,EAAO,EAAGA,EAAO0tyB,EAAM1tyB,IAC/EprK,EAAKorK,GAAQh2V,UAAUg2V,QAEV1iX,IAAX4lqC,IAAsBA,EAAS3z+B,EAAoB,QACvD2z+B,EAAOtu9B,EAAKj5L,OAAS,EAAG,0CACxB,IAAI8xH,GAAM,OACNjS,GAAMo5E,EAAKj5L,OAIf,OAHAi5L,EAAOA,EAAKx+M,IAAI,SAAUw8C,IACxB,MAAO,IAAKqL,OAAOrL,GAAG,IACxB,GACQ4oF,IACN,KAAK,EACHiS,IAAO,GAAGxvF,OAAO22J,EAAK,GAAI,aAC1B,MACF,KAAK,EACHnnE,IAAO,GAAGxvF,OAAO22J,EAAK,GAAI,SAAS32J,OAAO22J,EAAK,GAAI,cACnD,MACF,QACEnnE,IAAOmnE,EAAK/tL,MAAM,EAAG20G,GAAM,GAAGjlI,KAAK,MACnCk3I,IAAO,SAASxvF,OAAO22J,EAAKp5E,GAAM,GAAI,cAG1C,MAAO,GAAGv9E,OAAOwvF,GAAK,qBACxB,EAAGinE,WACH98E,EAAOkhjB,QAAQwwgB,MAAQA,CAEjB,EAEA,eACU1xjC,EAAQ8qqC,EAA0BnzmC,GAElD,aAMA,SAASsxd,EAAel3kB,GAAK5iB,IAAK,OAKlC,SAAS2sxC,EAAgB/pwC,IAAO,GAAIxzE,MAAMq3G,QAAQ7jC,IAAM,OAAOA,EAAK,CAL3B+pwC,CAAgB/pwC,KAIzD,SAASgqwC,EAAsB940C,GAAGg/H,IAAK,IAAI3lI,GAAI,MAAQ2G,GAAI,YAA6Bs1M,OAAtB,KAAgCt1M,GAAEs1M,OAAOg/B,WAAat0O,GAAE,cAAe,GAAI,MAAQ3G,GAAG,CAAE,IAAI+2B,GAAG06E,GAAG5+C,GAAGmO,GAAGtiB,GAAI,GAAIrC,IAAI,EAAI8W,IAAI,EAAI,IAAM,GAAIN,IAAK7yD,GAAIA,GAAE4oC,KAAKjiC,KAAI60E,KAAM,IAAMmqD,GAAG,CAAE,GAAIpjI,OAAOvC,MAAOA,GAAG,OAAQq8C,IAAI,CAAI,MAAO,OAASA,IAAKtlB,GAAI87B,GAAEjqB,KAAK5oC,KAAIqgP,QAAU3hM,GAAEh8C,KAAKq0B,GAAE31B,OAAQs9C,GAAEj3B,SAAWk+G,IAAItpF,IAAI,GAAK,OAAS11C,IAAKwsD,IAAI,EAAIs+C,GAAI9qG,EAAG,SAAY,IAAM,IAAK01C,IAAK,MAAQr8C,GAAEwgP,SAAWx/K,GAAIhhE,GAAEwgP,SAAUj+O,OAAOy+D,MAAOA,IAAI,MAAQ,SAAY,GAAI7N,GAAG,MAAMs+C,EAAG,CAAE,CAAE,OAAO/yD,EAAG,CAAE,CAJld+gyC,CAAsBhqwC,GAAK5iB,KAE5F,SAAS87uC,EAA4Bx7uC,GAAGy7uC,IAAU,GAAKz7uC,GAAW,IAAiB,iBAANA,GAAgB,OAAO07uC,EAAkB17uC,GAAGy7uC,IAAS,IAAIn9rC,GAAIlvG,OAAOomC,UAAU3gB,SAAS4gB,KAAKuqB,IAAGxgC,MAAM,GAAG,GAAkE,GAAnD,WAAN8+E,IAAkBt+C,GAAEvzD,cAAa6xG,GAAIt+C,GAAEvzD,YAAY6B,MAAgB,QAANgwG,IAAqB,QAANA,GAAa,OAAOxvG,MAAMyK,KAAKymD,IAAI,GAAU,cAANs+C,IAAqB,2CAA2CpoE,KAAKooE,IAAI,OAAOo9rC,EAAkB17uC,GAAGy7uC,GAAM,CAAG,CAF7TD,CAA4Bl5tC,GAAK5iB,KACnI,SAAS6sxC,IAAqB,MAAM,IAAIl/nC,UAAU,4IAA8I,CADvDk/nC,EAAoB,CAG7J,SAAS7wC,EAAkBp5tC,GAAK6xD,KAAkB,MAAPA,IAAeA,GAAM7xD,GAAIhuD,UAAQ6/G,GAAM7xD,GAAIhuD,QAAQ,QAASorC,GAAI,EAAGqxD,GAAO,IAAIjiH,MAAMqlI,IAAMz0E,GAAIy0E,GAAKz0E,KAAKqxD,GAAKrxD,IAAK4iB,GAAI5iB,IAAI,OAAOqxD,EAAM,CAGlL,SAAS8qG,EAAQ77J,IAAgC,OAAO67J,EAAU,mBAAqB/S,QAAU,iBAAmBA,OAAOg/B,SAAW,SAAU9nL,IAAK,cAAcA,EAAG,EAAI,SAAUA,IAAK,OAAOA,IAAK,mBAAqB8oJ,QAAU9oJ,GAAEvzD,cAAgBq8M,QAAU9oJ,KAAM8oJ,OAAOtzK,UAAY,gBAAkBwqB,EAAG,GAAWA,GAAI,CAC7T,IAAIk7yC,OAAqCjl2C,IAAf,KAAK4kO,MAC3BsgoC,EAAe,SAAsBvq2C,IACvC,IAAIzB,GAAQ,GACZyB,UAAIs6B,QAAQ,SAAUj9B,IACpB,OAAOkB,GAAMI,KAAKtB,GACpB,GACOkB,EACT,EACIis2C,EAAe,SAAsBrs2C,IACvC,IAAII,GAAQ,GACZJ,UAAIm8B,QAAQ,SAAUj9B,GAAOH,IAC3B,OAAOqB,GAAMI,KAAK,CAACzB,GAAKG,IAC1B,GACOkB,EACT,EACIum2C,EAAWtm2C,OAAOwsgB,GAAKxsgB,OAAOwsgB,GAAK1zU,EAAoB,OACvDmzqC,EAA8Bjs2C,OAAOy0uB,sBAAwBz0uB,OAAOy0uB,sBAAwB,WAC9F,MAAO,EACT,EACIo+jB,EAAc/0vC,OAAO3U,MAAQ2U,OAAO3U,MAAQ2vJ,EAAoB,MACpE,SAAS6hnC,EAAY7gwC,IACnB,OAAOA,GAAEzT,KAAK4sH,KAAKn5G,GACrB,CACA,IAAI0lG,EAAiBm7pC,EAAY36yC,OAAOomC,UAAUo5G,gBAC9CkgE,EAAuBi7lC,EAAY36yC,OAAOomC,UAAUs5K,sBACpDrF,EAAiBsgmC,EAAY36yC,OAAOomC,UAAU3gB,UAC9C0g1C,EAAkBrtqC,EAAoB,MAAMgpK,MAC9CoqgC,EAAmB/F,EAAe+F,iBAClCC,EAAoBhG,EAAegG,kBACnC32nC,EAAS2wnC,EAAe3wnC,OACxB21/B,EAAQg7H,EAAeh7H,MACvBhoE,EAAWgjM,EAAehjM,SAC1Bv+uB,EAAQuh7B,EAAevh7B,MACvBwn7B,GAAgBjG,EAAeiG,cAC/BC,GAAmBlG,EAAekG,iBAClCC,GAAiBnG,EAAemG,eAChC7vQ,GAAiB0pQ,EAAe1pQ,eAChC8vQ,GAAkBpG,EAAeoG,gBACjCC,EAAiBrG,EAAeqG,eAChCC,EAAiBtG,EAAesG,eAChCC,EAAiBvG,EAAeuG,eAChCC,EAAiBxG,EAAewG,eAClC,SAASC,EAAWlu2C,IAClB,GAAmB,IAAfA,GAAIwmB,QAAgBxmB,GAAIwmB,OAAS,GAAI,OAAO,EAChD,QAASorC,GAAI,EAAGA,GAAI5xD,GAAIwmB,OAAQorC,KAAK,CACnC,IAAIqzD,GAAOjlH,GAAIigN,WAAWruJ,IAC1B,GAAIqzD,GAAO,IAAMA,GAAO,GAAI,OAAO,CACrC,CAEA,OAAsB,KAAfjlH,GAAIwmB,QAAiBxmB,IAAOuqC,KAAKsqC,IAAI,EAAG,GACjD,CACA,SAASs5xC,EAAyBhu2C,IAChC,OAAOmB,OAAOC,KAAKpB,IAAOsF,OAAOyo2C,GAAYplzC,OAAOykzC,EAA4Bpt2C,IAAOsF,OAAOnE,OAAOomC,UAAUs5K,qBAAqBzsD,KAAKp0J,KAC3I,CAUA,SAAS2hW,GAAQrkT,GAAGE,IAClB,GAAIF,KAAME,GACR,OAAO,EAIT,QAFIp3B,GAAIk3B,GAAEj3B,OACN20C,GAAIxd,GAAEn3B,OACDorC,GAAI,EAAGy0E,GAAM97F,KAAK4oB,IAAI5sC,GAAG40C,IAAIvJ,GAAIy0E,KAAOz0E,GAC/C,GAAInU,GAAEmU,MAAOjU,GAAEiU,IAAI,CACjBrrC,GAAIk3B,GAAEmU,IACNuJ,GAAIxd,GAAEiU,IACN,KACF,CAEF,OAAIrrC,GAAI40C,IACC,EAELA,GAAI50C,GACC,EAEF,CACT,CACA,IAGI6n1C,GAAc,EACdC,GAAW,EACXC,GAAS,EACTC,GAAS,EA6Db,SAASC,GAAe5vqB,GAAMC,GAAMzpG,GAAQq5wB,IAE1C,GAAI7vqB,KAASC,GACX,OAAa,IAATD,KACGxpG,IAASwywB,EAAShpqB,GAAMC,IAIjC,GAAIzpG,GAAQ,CACV,GAAsB,WAAlBrnY,EAAQ6we,IACV,MAAuB,iBAATA,IAAqBu1mB,EAAYv1mB,KAASu1mB,EAAYt1mB,IAKtE,GAHsB,WAAlB9we,EAAQ8we,KAA+B,OAATD,IAA0B,OAATC,IAG/Cv9rB,OAAO6lP,eAAey3c,MAAUt9rB,OAAO6lP,eAAe03c,IACxD,OAAO,CAEX,KAAO,CACL,GAAa,OAATD,IAAmC,WAAlB7we,EAAQ6we,IAC3B,OAAa,OAATC,IAAmC,WAAlB9we,EAAQ8we,MAEpBD,IAAQC,GAInB,GAAa,OAATA,IAAmC,WAAlB9we,EAAQ8we,IAC3B,OAAO,CAEX,CACA,IAAI6vqB,GAAU/ypC,EAAeijf,IAE7B,GAAI8vqB,KADU/ypC,EAAekjf,IAE3B,OAAO,EAET,GAAI79rB,MAAMq3G,QAAQumlB,IAAO,CAEvB,GAAIA,GAAKp4qB,SAAWq4qB,GAAKr4qB,OACvB,OAAO,EAET,IAAImo1C,GAAQR,EAAyBvvqB,IACjCgwqB,GAAQT,EAAyBtvqB,IACrC,OAAI8vqB,GAAMno1C,SAAWoo1C,GAAMpo1C,QAGpBqo1C,GAASjwqB,GAAMC,GAAMzpG,GAAQq5wB,GAAOJ,GAAUM,GACvD,CAIA,GAAgB,oBAAZD,MAEGjiI,EAAM7tiB,KAAS6tiB,EAAM5tiB,MAAU34Q,EAAM04Q,KAAS14Q,EAAM24Q,KACvD,OAAO,EAGX,GAAI/nd,EAAO8nd,KACT,IAAK9nd,EAAO+nd,KAASh1qB,KAAK6d,UAAUgD,QAAQ/C,KAAKi3pB,MAAU/0qB,KAAK6d,UAAUgD,QAAQ/C,KAAKk3pB,IACrF,OAAO,UAEA4le,EAAS7le,KAClB,IAAK6le,EAAS5le,MAvHlB,SAASiwqB,GAAkBrxzC,GAAGE,IAC5B,OAAOyvzC,EAAsB3vzC,GAAEmmD,SAAWjmD,GAAEimD,QAAUnmD,GAAEsvL,QAAUpvL,GAAEovL,MAAQjkM,OAAOpB,UAAU3gB,SAAS4gB,KAAK8V,MAAO3U,OAAOpB,UAAU3gB,SAAS4gB,KAAKgW,GACnJ,CAqH4BmxzC,CAAkBlwqB,GAAMC,IAC9C,OAAO,UAEA6uqB,GAAc9uqB,KAASA,cAAgBpimB,OAGhD,GAAIoimB,GAAKhhqB,UAAYihqB,GAAKjhqB,SAAWghqB,GAAKp+rB,OAASq+rB,GAAKr+rB,KACtD,OAAO,UAEAit2C,EAAkB7uqB,IAAO,CAClC,GAAKxpG,KAAW44wB,EAAepvqB,MAASqvqB,EAAervqB,KAE5C,IArHf,SAASmwqB,GAAsBtxzC,GAAGE,IAChC,OAAIF,GAAE+gS,aAAe7gS,GAAE6gS,YAGwG,IAAxHsjB,GAAQ,IAAIpjB,WAAWjhS,GAAE8sL,OAAQ9sL,GAAE+gnC,WAAY/gnC,GAAE+gS,YAAa,IAAIE,WAAW/gS,GAAE4sL,OAAQ5sL,GAAE6gnC,WAAY7gnC,GAAE6gS,YAChH,CAkHgBuwhC,CAAsBnwqB,GAAMC,IACtC,OAAO,OAJP,IA/HN,SAASmwqB,GAAsBvxzC,GAAGE,IAChC,GAAIF,GAAE+gS,aAAe7gS,GAAE6gS,WACrB,OAAO,EAET,QAAS7zS,GAAS,EAAGA,GAAS8S,GAAE+gS,WAAY7zS,KAC1C,GAAI8S,GAAE9S,MAAYgT,GAAEhT,IAClB,OAAO,EAGX,OAAO,CACT,CAqHWqk0C,CAAsBpwqB,GAAMC,IAC/B,OAAO,EAQX,IAAInxH,GAAQygyB,EAAyBvvqB,IACjCqwqB,GAASd,EAAyBtvqB,IACtC,OAAInxH,GAAMlnjB,SAAWyo1C,GAAOzo1C,QAGrBqo1C,GAASjwqB,GAAMC,GAAMzpG,GAAQq5wB,GAAOL,GAAa1gyB,GAC1D,CAAO,GAAIxnJ,EAAM04Q,IACf,SAAK14Q,EAAM24Q,KAASD,GAAKj/nB,OAASk/nB,GAAKl/nB,OAGhCkvyC,GAASjwqB,GAAMC,GAAMzpG,GAAQq5wB,GAAOH,IACtC,GAAI7hI,EAAM7tiB,IACf,SAAK6tiB,EAAM5tiB,KAASD,GAAKj/nB,OAASk/nB,GAAKl/nB,OAGhCkvyC,GAASjwqB,GAAMC,GAAMzpG,GAAQq5wB,GAAOF,IACtC,GAAIf,EAAiB5uqB,KAC1B,IAxIJ,SAASswqB,GAAqBC,GAAMC,IAClC,OAAOD,GAAK3whC,aAAe4whC,GAAK5whC,YAAsE,IAAxDsjB,GAAQ,IAAIpjB,WAAWywhC,IAAO,IAAIzwhC,WAAW0whC,IAC7F,CAsISF,CAAqBtwqB,GAAMC,IAC9B,OAAO,UAEA8uqB,GAAiB/uqB,MAxI9B,SAASywqB,GAAsBzwqB,GAAMC,IACnC,OAAI+uqB,GAAehvqB,IACVgvqB,GAAe/uqB,KAAS+oqB,EAASxozC,OAAO1X,UAAUktC,QAAQjtC,KAAKi3pB,IAAOx/oB,OAAO1X,UAAUktC,QAAQjtC,KAAKk3pB,KAEzGk/Z,GAAen/Z,IACVm/Z,GAAel/Z,KAASn9rB,OAAOgmC,UAAUktC,QAAQjtC,KAAKi3pB,MAAUl9rB,OAAOgmC,UAAUktC,QAAQjtC,KAAKk3pB,IAEnGgvqB,GAAgBjvqB,IACXivqB,GAAgBhvqB,KAASmlV,QAAQt8+B,UAAUktC,QAAQjtC,KAAKi3pB,MAAUolV,QAAQt8+B,UAAUktC,QAAQjtC,KAAKk3pB,IAEtGivqB,EAAelvqB,IACVkvqB,EAAejvqB,KAASkgP,OAAOr34B,UAAUktC,QAAQjtC,KAAKi3pB,MAAUmgP,OAAOr34B,UAAUktC,QAAQjtC,KAAKk3pB,IAEhGkvqB,EAAelvqB,KAAS7jf,OAAOtzK,UAAUktC,QAAQjtC,KAAKi3pB,MAAU5jf,OAAOtzK,UAAUktC,QAAQjtC,KAAKk3pB,GACvG,CA0HwCwwqB,CAAsBzwqB,GAAMC,IAChE,OAAO,EAET,OAAOgwqB,GAASjwqB,GAAMC,GAAMzpG,GAAQq5wB,GAAOL,GAC7C,CACA,SAASkB,GAAe/r2C,GAAKhC,IAC3B,OAAOA,GAAKkE,OAAO,SAAUg/H,IAC3B,OAAOu8E,EAAqBz9M,GAAKkhI,GACnC,EACF,CACA,SAASoquC,GAASjwqB,GAAMC,GAAMzpG,GAAQq5wB,GAAOc,GAAeC,IAQ1D,GAAyB,IAArB360C,UAAUrO,OAAc,CAC1Bgp1C,GAAQlu2C,OAAOC,KAAKq9rB,IACpB,IAAI6wqB,GAAQnu2C,OAAOC,KAAKs9rB,IAGxB,GAAI2wqB,GAAMhp1C,SAAWip1C,GAAMjp1C,OACzB,OAAO,CAEX,CAIA,QADIorC,GAAI,EACDA,GAAI49yC,GAAMhp1C,OAAQorC,KACvB,IAAKkvF,EAAe+9iB,GAAM2wqB,GAAM59yC,KAC9B,OAAO,EAGX,GAAIwjiB,IAA+B,IAArBvgkB,UAAUrO,OAAc,CACpC,IAAIkp1C,GAAcnC,EAA4B3uqB,IAC9C,GAA2B,IAAvB8wqB,GAAYlp1C,OAAc,CAC5B,IAAI+8G,GAAQ,EACZ,IAAK3xE,GAAI,EAAGA,GAAI89yC,GAAYlp1C,OAAQorC,KAAK,CACvC,IAAI5xD,GAAM0v2C,GAAY99yC,IACtB,GAAIovJ,EAAqB49e,GAAM5+rB,IAAM,CACnC,IAAKghN,EAAqB69e,GAAM7+rB,IAC9B,OAAO,EAETwv2C,GAAM/t2C,KAAKzB,IACXujI,IACF,SAAWy9E,EAAqB69e,GAAM7+rB,IACpC,OAAO,CAEX,CACA,IAAI2v2C,GAAcpC,EAA4B1uqB,IAC9C,GAAI6wqB,GAAYlp1C,SAAWmp1C,GAAYnp1C,QAAU8o1C,GAAezwqB,GAAM8wqB,IAAanp1C,SAAW+8G,GAC5F,OAAO,CAEX,KAAO,CACL,IAAIqsuC,GAAerC,EAA4B1uqB,IAC/C,GAA4B,IAAxB+wqB,GAAapp1C,QAA8D,IAA9C8o1C,GAAezwqB,GAAM+wqB,IAAcpp1C,OAClE,OAAO,CAEX,CACF,CACA,GAAqB,IAAjBgp1C,GAAMhp1C,SAAiB+o1C,KAAkBnB,IAAemB,KAAkBlB,IAA4B,IAAhBzvqB,GAAKp4qB,QAA8B,IAAdo4qB,GAAKj/nB,MAClH,OAAO,EAIT,QAAcx3D,IAAVsm2C,GACFA,GAAQ,CACN7vqB,KAAM,IAAIj8rB,IACVk8rB,KAAM,IAAIl8rB,IACV00H,SAAU,OAEP,CAIL,IAAIw4uC,GAAYpB,GAAM7vqB,KAAKlpqB,IAAIkpqB,IAC/B,QAAkBz2rB,IAAd0n2C,GAAyB,CAC3B,IAAIC,GAAYrB,GAAM5vqB,KAAKnpqB,IAAImpqB,IAC/B,QAAkB12rB,IAAd2n2C,GACF,OAAOD,KAAcC,EAEzB,CACArB,GAAMp3uC,UACR,CACAo3uC,GAAM7vqB,KAAK97rB,IAAI87rB,GAAM6vqB,GAAMp3uC,UAC3Bo3uC,GAAM5vqB,KAAK/7rB,IAAI+7rB,GAAM4vqB,GAAMp3uC,UAC3B,IAAI04uC,GAsKN,SAASC,GAASvyzC,GAAGE,GAAGy3iB,GAAQ7zlB,GAAMkt2C,GAAOc,IAG3C,IAAI39yC,GAAI,EACR,GAAI29yC,KAAkBjB,IACpB,IA/GJ,SAAS2B,GAASxyzC,GAAGE,GAAGy3iB,GAAQ86wB,IAK9B,QAFIpt2C,GAAM,KACNqt2C,GAAU9C,EAAa5vzC,IAClBmU,GAAI,EAAGA,GAAIu+yC,GAAQ3p1C,OAAQorC,KAAK,CACvC,IAAIruD,GAAM4s2C,GAAQv+yC,IAIlB,GAAqB,WAAjBm8J,EAAQxqN,KAA6B,OAARA,GACnB,OAART,KACFA,GAAM,IAAI4gF,KAMZ5gF,GAAIyqF,IAAIhqF,SAAG,IACDo6C,GAAEy9H,IAAI73K,IAAM,CAItB,GAHI6xlB,KAGCg7wB,GAAsB3yzC,GAAGE,GAAGp6C,IAC/B,OAAO,EAEG,OAART,KACFA,GAAM,IAAI4gF,KAEZ5gF,GAAIyqF,IAAIhqF,GACV,CACF,CACA,GAAY,OAART,GAAc,CAEhB,QADIut2C,GAAUhD,EAAa1vzC,IAClB+9M,GAAK,EAAGA,GAAK20mC,GAAQ7p1C,OAAQk1O,KAAM,CAC1C,IAAI40mC,GAAOD,GAAQ30mC,IAGnB,GAAsB,WAAlB3tC,EAAQuipC,KAA+B,OAATA,IAChC,IAAKC,GAAmBzt2C,GAAKwt2C,GAAMl7wB,GAAQ86wB,IAAO,OAAO,WAC/C96wB,KAAW33iB,GAAE29H,IAAIk1rC,MAAUC,GAAmBzt2C,GAAKwt2C,GAAMl7wB,GAAQ86wB,IAC3E,OAAO,CAEX,CACA,OAAoB,IAAbpt2C,GAAI68D,IACb,CACA,OAAO,CACT,CAgESswyC,CAASxyzC,GAAGE,GAAGy3iB,GAAQq5wB,IAC1B,OAAO,UAEAc,KAAkBhB,IAC3B,IArDJ,SAASiC,GAAS/yzC,GAAGE,GAAGy3iB,GAAQ86wB,IAG9B,QAFIpt2C,GAAM,KACN2t2C,GAAWnD,EAAa7vzC,IACnBmU,GAAI,EAAGA,GAAI6+yC,GAASjq1C,OAAQorC,KAAK,CACxC,IAAI8+yC,GAAchltB,EAAe+ktB,GAAS7+yC,IAAI,GAC5C5xD,GAAM0w2C,GAAY,GAClB/q8B,GAAQ+q8B,GAAY,GACtB,GAAqB,WAAjB3ipC,EAAQ/tN,KAA6B,OAARA,GACnB,OAAR8C,KACFA,GAAM,IAAI4gF,KAEZ5gF,GAAIyqF,IAAIvtF,QACH,CAGL,IAAIsjH,GAAQ3lE,GAAEjoB,IAAI11B,IAClB,QAAcmI,IAAVm7G,KAAwB3lE,GAAEy9H,IAAIp7K,MAASwu2C,GAAe7o8B,GAAOriT,GAAO8xe,GAAQ86wB,IAAO,CAIrF,GAHI96wB,KAGCu7wB,GAAsBlzzC,GAAGE,GAAG39C,GAAK2la,GAAOuq8B,IAAO,OAAO,EAC/C,OAARpt2C,KACFA,GAAM,IAAI4gF,KAEZ5gF,GAAIyqF,IAAIvtF,GACV,CACF,CACF,CACA,GAAY,OAAR8C,GAAc,CAEhB,QADI8t2C,GAAWtD,EAAa3vzC,IACnB2upC,GAAM,EAAGA,GAAMskK,GAASpq1C,OAAQ8lrC,KAAO,CAC9C,IAAIukK,GAAenltB,EAAekltB,GAAStkK,IAAM,GAC/Czh1B,GAAOgm/B,GAAa,GACpB7uvC,GAAO6uvC,GAAa,GACtB,GAAsB,WAAlB9ipC,EAAQ88J,KAA+B,OAATA,IAChC,IAAKim/B,GAAiBhu2C,GAAK26C,GAAGotU,GAAM7oQ,GAAMoze,GAAQ86wB,IAAO,OAAO,YACtD96wB,IAAY33iB,GAAE29H,IAAIyvM,KAAU2j/B,GAAe/wzC,GAAE/nB,IAAIm1V,IAAO7oQ,IAAM,EAAOkuvC,KAAWY,GAAiBhu2C,GAAK26C,GAAGotU,GAAM7oQ,IAAM,EAAOkuvC,KACtI,OAAO,CAEX,CACA,OAAoB,IAAbpt2C,GAAI68D,IACb,CACA,OAAO,CACT,CAUS6wyC,CAAS/yzC,GAAGE,GAAGy3iB,GAAQq5wB,IAC1B,OAAO,UAEAc,KAAkBlB,GAC3B,KAAOz8yC,GAAInU,GAAEj3B,OAAQorC,KACnB,KAAIkvF,EAAerjG,GAAGmU,IAIf,IAAIkvF,EAAenjG,GAAGiU,IAC3B,OAAO,EAIP,QADIm/yC,GAAQzv2C,OAAOC,KAAKk8C,IACjBmU,GAAIm/yC,GAAMvq1C,OAAQorC,KAAK,CAC5B,IAAI5xD,GAAM+w2C,GAAMn/yC,IAChB,IAAKkvF,EAAenjG,GAAG39C,MAASwu2C,GAAe/wzC,GAAEz9C,IAAM29C,GAAE39C,IAAMo1lB,GAAQq5wB,IACrE,OAAO,CAEX,CACA,OAAIsC,GAAMvq1C,SAAWllB,OAAOC,KAAKo8C,IAAGn3B,OAdpC,IAAKs6H,EAAenjG,GAAGiU,MAAO48yC,GAAe/wzC,GAAEmU,IAAIjU,GAAEiU,IAAIwjiB,GAAQq5wB,IAC/D,OAAO,CAa2Bjo1C,CAU1C,IAAKorC,GAAI,EAAGA,GAAIrwD,GAAKilB,OAAQorC,KAAK,CAChC,IAAIi4yC,GAAQto2C,GAAKqwD,IACjB,IAAK48yC,GAAe/wzC,GAAEoszC,IAAQlszC,GAAEkszC,IAAQz0wB,GAAQq5wB,IAC9C,OAAO,CAEX,CACA,OAAO,CACT,CApNcuB,CAASpxqB,GAAMC,GAAMzpG,GAAQo6wB,GAAOf,GAAOc,IACvDd,UAAM7vqB,KAAKphf,OAAOohf,IAClB6vqB,GAAM5vqB,KAAKrhf,OAAOqhf,IACXkxqB,EACT,CACA,SAASQ,GAAmBzt2C,GAAK87rB,GAAMxpG,GAAQ86wB,IAG7C,QADIc,GAAY3D,EAAavq2C,IACpB8uD,GAAI,EAAGA,GAAIo/yC,GAAUxq1C,OAAQorC,KAAK,CACzC,IAAIitoB,GAAOmyqB,GAAUp/yC,IACrB,GAAI48yC,GAAe5vqB,GAAMC,GAAMzpG,GAAQ86wB,IAErCpt2C,UAAI06M,OAAOqhf,KACJ,CAEX,CACA,OAAO,CACT,CAMA,SAASoyqB,GAA4Bt4C,IACnC,OAAQ5qmC,EAAQ4qmC,KACd,IAAK,YACH,OAAO,KACT,IAAK,SAEH,OACF,IAAK,SACH,OAAO,EACT,IAAK,SACHA,IAAQA,GAIV,IAAK,SACH,GAAIxkB,EAAYwkB,IACd,OAAO,EAGb,OAAO,CACT,CACA,SAASy3C,GAAsB3yzC,GAAGE,GAAGg7wC,IACnC,IAAIu4C,GAAWD,GAA4Bt4C,IAC3C,OAAIu4C,KACGvzzC,GAAEy9H,IAAI81rC,MAAczzzC,GAAE29H,IAAI81rC,IACnC,CACA,SAASP,GAAsBlzzC,GAAGE,GAAGg7wC,GAAM32sC,GAAMkuvC,IAC/C,IAAIgB,GAAWD,GAA4Bt4C,IAC3C,GAAgB,MAAZu4C,GACF,OAAOA,GAET,IAAIC,GAAOxzzC,GAAEjoB,IAAIw70C,IACjB,aAAa/o2C,IAATgp2C,KAAuBxzzC,GAAEy9H,IAAI81rC,MAAc1C,GAAexsvC,GAAMmvvC,IAAM,EAAOjB,OAGzEzyzC,GAAE29H,IAAI81rC,KAAa1C,GAAexsvC,GAAMmvvC,IAAM,EAAOjB,GAC/D,CAiDA,SAASY,GAAiBhu2C,GAAK7B,GAAK81e,GAAMpxE,GAAOyvL,GAAQ86wB,IAKvD,QADIc,GAAY3D,EAAavq2C,IACpB8uD,GAAI,EAAGA,GAAIo/yC,GAAUxq1C,OAAQorC,KAAK,CACzC,IAAIolb,GAAOg63B,GAAUp/yC,IACrB,GAAI48yC,GAAez33B,GAAMC,GAAMo+G,GAAQ86wB,KAAS1B,GAAe7o8B,GAAO1ka,GAAIy0B,IAAIshd,IAAOo+G,GAAQ86wB,IAC3Fpt2C,UAAI06M,OAAOw5R,KACJ,CAEX,CACA,OAAO,CACT,CAkGAv0W,EAAOkhjB,QAAU,CACfujrB,YAPF,SAASA,GAAYtoqB,GAAMC,IACzB,OAAO2vqB,GAAe5vqB,GAAMC,GApdjB,MAqdb,EAMEsoqB,kBALF,SAASA,GAAkBvoqB,GAAMC,IAC/B,OAAO2vqB,GAAe5vqB,GAAMC,GAxdhB,KAydd,EAMM,EAEA,eACUirmB,EAAyBnmnB,GAEzC,aAGAA,EAAQnlW,WAuCR,SAASA,EAAY654B,GACnB,IAAIxpC,EAAOuiL,EAAQ/4I,GAEfg5I,EAAkBxiL,EAAK,GAC3B,OAAuC,GAFxBA,EAAK,GAEAwiL,GAAuB,EAAKA,CAClD,EA3CA1trB,EAAQwye,YAiDR,SAASA,EAAakiE,GACpB,IAAI/09B,EAcA1xM,EAbAi9nC,EAAOuiL,EAAQ/4I,GACfi5I,EAAWziL,EAAK,GAChBwiL,EAAkBxiL,EAAK,GAEvBr6mC,EAAM,IAAI+8xC,EAVhB,SAASC,EAAan5I,EAAKi5I,EAAUD,GACnC,OAAuC,GAA9BC,EAAWD,GAAuB,EAAKA,CAClD,CAQoBG,CAAYn5I,EAAKi5I,EAAUD,IAEzCI,EAAU,EAGVpruC,EAAMgruC,EAAkB,EACxBC,EAAW,EACXA,EAGJ,IAAK1/yC,EAAI,EAAGA,EAAIy0E,EAAKz0E,GAAK,EACxB0xM,EACGoumC,EAAUr5I,EAAIp4gC,WAAWruJ,KAAO,GAChC8/yC,EAAUr5I,EAAIp4gC,WAAWruJ,EAAI,KAAO,GACpC8/yC,EAAUr5I,EAAIp4gC,WAAWruJ,EAAI,KAAO,EACrC8/yC,EAAUr5I,EAAIp4gC,WAAWruJ,EAAI,IAC/B4iB,EAAIi9xC,KAAcnumC,GAAO,GAAM,IAC/B9uL,EAAIi9xC,KAAcnumC,GAAO,EAAK,IAC9B9uL,EAAIi9xC,KAAmB,IAANnumC,EAGnB,OAAwB,IAApB+tmC,IACF/tmC,EACGoumC,EAAUr5I,EAAIp4gC,WAAWruJ,KAAO,EAChC8/yC,EAAUr5I,EAAIp4gC,WAAWruJ,EAAI,KAAO,EACvC4iB,EAAIi9xC,KAAmB,IAANnumC,GAGK,IAApB+tmC,IACF/tmC,EACGoumC,EAAUr5I,EAAIp4gC,WAAWruJ,KAAO,GAChC8/yC,EAAUr5I,EAAIp4gC,WAAWruJ,EAAI,KAAO,EACpC8/yC,EAAUr5I,EAAIp4gC,WAAWruJ,EAAI,KAAO,EACvC4iB,EAAIi9xC,KAAcnumC,GAAO,EAAK,IAC9B9uL,EAAIi9xC,KAAmB,IAANnumC,GAGZ9uL,CACT,EA5FAmvmB,EAAQyye,cAkHR,SAASA,EAAen7P,GAQtB,QAPI33pB,EACAj9H,EAAM40xB,EAAMz04B,OACZmr1C,EAAatruC,EAAM,EACnBj0G,EAAQ,GACRw/0C,EAAiB,MAGZhgzC,EAAI,EAAGigzC,EAAOxruC,EAAMsruC,EAAY//yC,EAAIigzC,EAAMjgzC,GAAKggzC,EACtDx/0C,EAAM3wB,KAAKqw2C,EACT72c,EAAOrp2B,EAAIA,EAAIggzC,EAAkBC,EAAOA,EAAQjgzC,EAAIggzC,IAKxD,OAAmB,IAAfD,EAEFv/0C,EAAM3wB,KACJynI,GAFFo6H,EAAM23pB,EAAM50xB,EAAM,KAEF,GACd6C,EAAQo6H,GAAO,EAAK,IACpB,MAEsB,IAAfqumC,GAETv/0C,EAAM3wB,KACJynI,GAFFo6H,GAAO23pB,EAAM50xB,EAAM,IAAM,GAAK40xB,EAAM50xB,EAAM,KAE1B,IACd6C,EAAQo6H,GAAO,EAAK,IACpBp6H,EAAQo6H,GAAO,EAAK,IACpB,KAIGlxO,EAAMhxB,KAAK,GACpB,EA5IA,QALI8nI,EAAS,GACTwouC,EAAY,GACZH,SAAa7yhC,WAAe,IAAcA,WAAa19U,MAEvDikH,EAAO,mEACFrzD,EAAI,EAAsBA,EAAbqzD,KAAwBrzD,EAC5Cs3E,EAAOt3E,GAAKqzD,EAAKrzD,GACjB8/yC,EAAUzsvC,EAAKg7F,WAAWruJ,IAAMA,EAQlC,SAASw/yC,EAAS/4I,GAChB,IAAIhylC,EAAMgylC,EAAI7xsC,OAEd,GAAI6/G,EAAM,EAAI,EACZ,MAAM,IAAI7pC,MAAM,kDAKlB,IAAI80wC,EAAWj5I,EAAI54pC,QAAQ,KAO3B,OANiB,IAAb6xyC,IAAiBA,EAAWjruC,GAMzB,CAACiruC,EAJcA,IAAajruC,EAC/B,EACA,EAAKiruC,EAAW,EAGtB,CA4DA,SAASS,EAAiBl+xC,GACxB,OAAOq1D,EAAOr1D,GAAO,GAAK,IACxBq1D,EAAOr1D,GAAO,GAAK,IACnBq1D,EAAOr1D,GAAO,EAAI,IAClBq1D,EAAa,GAANr1D,EACX,CAEA,SAASi+xC,EAAa72c,EAAO9jyB,EAAOiB,GAGlC,QADIonG,EAAS,GACJ5tK,EAAIulE,EAAOvlE,EAAIwmE,EAAKxmE,GAAK,EAKhC4tK,EAAO/9N,KAAKsw2C,GAHR92c,EAAMrp2B,IAAM,GAAM,WAClBqp2B,EAAMrp2B,EAAI,IAAM,EAAK,QACP,IAAfqp2B,EAAMrp2B,EAAI,MAGf,OAAO4tK,EAAOp+N,KAAK,GACrB,CAlGAsw2C,EAAU,IAAIzxpC,WAAW,IAAM,GAC/ByxpC,EAAU,IAAIzxpC,WAAW,IAAM,EAuIzB,EAEA,eACUx9E,GAmBhB,IAAIuvuC,EAAmB,KAInBC,EAAW,IAAIx9xC,YAAY,CAC7B,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,MACtE,MAAO,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,WAKrE,SAASy9xC,EAAgB7uvC,GACvBzkH,KAAKuz2C,KAAO,IAAIzzhC,WAXO,MAYvB9/U,KAAKwz2C,OAAS/uvC,EAEdzkH,KAAKykF,OACP,CAEA6uxC,EAAgBG,UAAYL,EAC5BE,EAAgBI,UAjBS,KAmBzBJ,EAAgBxq0C,UAAU27C,MAAQ,WAChCzkF,KAAK2z2C,SAAW,EAChB3z2C,KAAK4z2C,KAAO,EACZ5z2C,KAAK6z2C,KAAO,EACZ7z2C,KAAK8z2C,SAAW,EAChB9z2C,KAAK+z2C,aAAe,EACpB/z2C,KAAKg02C,KAAO,EAEZh02C,KAAKi02C,gBACL,QAASjhzC,EAAI,EAAGA,EAAI,EAAGA,IACrBhzD,KAAK4z2C,MAAQ5z2C,KAAKuz2C,KAAKvz2C,KAAK6z2C,OAAU,EAAI7gzC,IACxChzD,KAAK6z2C,KAGT,OAAO7z2C,KAAK+z2C,aAAe,CAC7B,EAcAT,EAAgBxq0C,UAAUmr0C,cAAgB,WACxC,KAAIj02C,KAAK+z2C,aAAe,KAEjB,GAAI/z2C,KAAKg02C,MACd,GAAIh02C,KAAK8z2C,SAAW9z2C,KAAK+z2C,aACvB,MAAM,IAAIn2wC,MAAM,2BAA6B59F,KAAK8z2C,SAAW,IAAM9z2C,KAAK+z2C,kBACrE,CACL,IAAI/4D,EAAMh7yC,KAAK2z2C,SACXO,EAAal02C,KAAKwz2C,OAAOrt1C,KAAKnmB,KAAKuz2C,KAAMv4D,EAAKo4D,GAClD,GAAIc,EAAa,EACf,MAAM,IAAIt2wC,MAAM,2BAGlB,GAAIs2wC,EAAad,EAAkB,CACjCpz2C,KAAKg02C,KAAO,EAEZ,QAASjv2C,EAAI,EAAGA,EAAI,GAAIA,IACtB/E,KAAKuz2C,KAAKv4D,EAAMk5D,EAAanv2C,GAAK,CACtC,CAEA,GAAY,IAARi2yC,EAAW,CAEb,IAASj2yC,EAAI,EAAGA,EAAI,GAAIA,IACtB/E,KAAKuz2C,UAA+Bxu2C,GAAK/E,KAAKuz2C,KAAKxu2C,GAErD/E,KAAK2z2C,SAAWP,CAClB,MACEpz2C,KAAK2z2C,SAAW,EAGlB3z2C,KAAK+z2C,cAAgBG,GAAc,CACrC,CACF,EAGAZ,EAAgBxq0C,UAAUqr0C,cAAgB,WACxC,KAAOn02C,KAAK8z2C,UAAY,GACtB9z2C,KAAK4z2C,QAAU,EACf5z2C,KAAK4z2C,MAAQ5z2C,KAAKuz2C,KAtFG,KAsFEvz2C,KAAK6z2C,OAA4B,KACtD7z2C,KAAK6z2C,KACP7z2C,KAAK8z2C,SAAW9z2C,KAAK8z2C,SAAW,IAAM,EACtC9z2C,KAAK+z2C,aAAe/z2C,KAAK+z2C,aAAe,IAAM,CAElD,EAGAT,EAAgBxq0C,UAAUsr0C,SAAW,SAASC,GACxC,GAAKr02C,KAAK8z2C,SAAWO,GACvBr02C,KAAKm02C,gBAGP,IAAIxv2C,EAAQ3E,KAAK4z2C,OAAS5z2C,KAAK8z2C,SAAYT,EAASgB,GACpD,OAAAr02C,KAAK8z2C,UAAYO,EACV1v2C,CACT,EAEAk/H,EAAOkhjB,QAAUuurB,CAGX,EAEA,cACUpoE,EAAyBnmnB,GAkHzCA,EAAQz6iB,OAAS,IAAIw1M,WAAW,CAG7B,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAK,EAE7D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAG7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE5C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC9C,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EA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I,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,MACrD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,MACrD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,MACrD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,MACrD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,MACzD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,MAC/D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,MAC/D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,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AAQ,QACR,MAAQ,QACR,KAAQ,MACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,MAAQ,QACR,KAAQ,QACR,KAAQ,MACR,KAAQ,QACR,KAAQ,MACR,KAAQ,QACR,KAAQ,KACR,MAAQ,QACR,MAAQ,QACR,KAAQ,KACR,KAAQ,MACR,MAAQ,QACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,UACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,MACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,UACR,KAAQ,QACR,KAAQ,QACR,KAAQ,MACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,MACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,SACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,MACR,KAAQ,MACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,UACR,KAAQ,KACR,KAAQ,UACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,MACR,K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AG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EA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G,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,IAKtnyCo6H,UAJc,EAAC,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAKn0H7hjC,KAJS,CAAC,GAAI,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,GAAI,CAAC,kBAAmB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,GAAI,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,GAAI,CAAC,sBAAuB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,GAAI,CAAC,sBAAuB,GAAI,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,GAAI,CAAC,k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5E,EAAMuwD,IAE1B+gW,EAAWjrO,UAAS,sFCDjB,SAAS4rO,EAAkBu1oC,EAAiB3miD,EAAQsxZ,EAAYE,EAAY+uoC,EAAkB,IAAInG,IAAgBuM,EAAiBr1oC,EAAYE,IAClJ,IAAI+uoC,EAAgBl+kC,OAGpB,OAAIrid,aAAkBwwZ,IACXxwZ,EAAOqyB,UAAUkugD,IAAe,EAEpCZ,KAAY3/hD,EAFwB,CAEhBugiD,EAC/B,mBCXA,IAAAxhiD,EAAA,CACA,aACA,gBACA,YACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,mBACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,YACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,YACA,gBACA,mBACA,gBACA,mBACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,sBACA,kBACA,qBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,iBACA,oBACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,gBACA,mBACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,gBACA,mBACA,eACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,cACA,iBACA,aACA,gBACA,cACA,iBACA,cACA,mBACA,sBACA,iBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,mBACA,sBACA,aACA,gBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,oBAIA,SAAA6niD,EAAAtuuC,GACA,IAAA5xT,EAAAmgiD,EAAAvuuC,GACA,OAAApgI,EAAAxxL,EACA,CACA,SAAAmgiD,EAAAvuuC,GACA,IAAApgI,EAAAloI,EAAAjxD,EAAAu5T,GAAA,CACA,IAAA1kS,EAAA,IAAA0mE,MAAA,uBAAAg+N,EAAA,KACA,MAAA1kS,EAAAmvF,KAAA,mBACAnvF,CACA,CACA,OAAA70B,EAAAu5T,EACA,CACAsuuC,EAAAvniD,KAAA,WACA,OAAAD,OAAAC,KAAAN,EACA,EACA6niD,EAAAz/2C,QAAA0/2C,EACAtm6C,EAAAkhjB,QAAAml3B,EACAA,EAAAlgiD,GAAA,uBCvSA,IAAAogiD,EAAoB5u2C,EAAQ,OAC5B,SAAA6u2C,EAAA38X,GACA,IAAA48X,EAAAjk4C,EACA,SAAA+7H,EAAAhhS,EAAA22O,GACA,IACA,IAAAz0O,EAAAoqqC,EAAAtsqC,GAAA22O,GACAx2O,EAAA+B,EAAA/B,MACAgpiD,EAAAhpiD,aAAA6oiD,EACAt89C,QAAA28G,QAAA8/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","names":["ApiConfiguration","constructor","this","rootUrl","static","t","_angular_core__WEBPACK_IMPORTED_MODULE_0__","Yz7","factory","ɵfac","providedIn","BaseService","config","http","_rootUrl","i0","i1","i2","core","ParameterCodecInstance","ParameterCodec","encodeKey","key","encodeURIComponent","encodeValue","value","decodeKey","decodeURIComponent","decodeValue","Parameter","name","options","defaultStyle","defaultExplode","style","explode","serializeValue","separator","Array","map","v","split","join","array","Object","keys","propVal","push","String","PathParameter","super","append","path","prefix","alreadySerialized","replace","result","QueryParameter","params","HeaderParameter","headers","RequestBuilder","operationPath","method","_path","Map","_query","_header","set","query","header","body","contentType","_bodyContentType","Blob","type","pairs","val","formValue","formDataValue","_bodyContent","p","formData","FormData","toAppend","JSON","stringify","build","pathParam","values","url","httpParams","HttpParams","encoder","queryParam","httpHeaders","HttpHeaders","accept","headerParam","HttpRequest","toUpperCase","responseType","reportProgress","context","Access2Service","Access2Path","access2$Response","rb","tierid","request","pipe","filter","r","HttpResponse","access2","UserAccessFull2Path","userAccessFull2$Response","userAccessFull2","AwvService","GetWorkflowActivitiesPath","getWorkflowActivities$Response","programId","chPatId","getWorkflowActivities","UpdateWorkflowActivityPath","updateWorkflowActivity$Response","updateWorkflowActivity","RollbackWorkflowActivityPath","rollbackWorkflowActivity$Response","typeOfActivityToRollback","rollbackWorkflowActivity","GetWorkflowHistoryPagedPath","getWorkflowHistoryPaged$Response","pageParameters","getWorkflowHistoryPaged","_angular_core__WEBPACK_IMPORTED_MODULE_5__","AwvWorklistService","AwvWorklistGetPath","awvWorklistGet$Response","TierNum","TierId","BeginDate","EndDate","AwvType","AwvOppStatus","DateOfBirth","NameSearchTerm","ComponentId","ChPatId","awvWorklistGet","AwvWorklistPostPath","awvWorklistPost$Response","clone","undefined","awvWorklistPost","AwvWorklistStatusGetPath","awvWorklistStatusGet$Response","isEnabled","awvWorklistStatusGet","CardWidgetService","CardWidgetGetPath","cardWidgetGet$Response","id","cardWidgetGet","CompareService","CompareSummaryGetPath","compareSummaryGet$Response","tierId","tierNum","attribution","communityToggle","cinId","compareSummaryGet","CompareCinsGetPath","compareCinsGet$Response","compareCinsGet","CompareMonthlyAwvGetPath","compareMonthlyAwvGet$Response","tierIdList","compareMonthlyAwvGet","CompareScheduledPatientsGetPath","compareScheduledPatientsGet$Response","monthYear","compareScheduledPatientsGet","CompareMissingPatientsGetPath","compareMissingPatientsGet$Response","compareMissingPatientsGet","EdUtilizationWorklistService","EdUtilizationWorklistGetPath","edUtilizationWorklistGet$Response","edUtilizationWorklistGet","EulaService","EulaGetPath","eulaGet$Response","eulaGet","EulaPostPath","eulaPost$Response","eulaPost","FacesheetScheduleService","FacesheetSchedulePdfPostPath","facesheetSchedulePdfPost$Response","facesheetSchedulePdfPost","FacesheetScheduleExportPostPath","facesheetScheduleExportPost$Response","facesheetScheduleExportPost","FacesheetScheduleGetPath","facesheetScheduleGet$Response","from","to","communityId","practiceId","providerId","tier3Id","facesheetScheduleGet","FacesheetScheduleInterfaceTiersGetPath","facesheetScheduleInterfaceTiersGet$Response","facesheetScheduleInterfaceTiersGet","FacesheetScheduleDownloadExportPostPath","facesheetScheduleDownloadExportPost$Response","facesheetScheduleDownloadExportPost","FacesheetService","FacesheetGetPath","facesheetGet$Response","Id","facesheetGet","FacesheetHealthMaintenanceGetPath","facesheetHealthMaintenanceGet$Response","facesheetHealthMaintenanceGet","FacesheetCostUtilizationGetPath","facesheetCostUtilizationGet$Response","facesheetCostUtilizationGet","FacesheetPreventiveGetPath","facesheetPreventiveGet$Response","facesheetPreventiveGet","FacesheetOpportunitiesGetPath","facesheetOpportunitiesGet$Response","IsChronic","facesheetOpportunitiesGet","FacesheetConditionsGetPath","facesheetConditionsGet$Response","facesheetConditionsGet","FacesheetHealthMaintenanceDetailsGetPath","facesheetHealthMaintenanceDetailsGet$Response","facesheetHealthMaintenanceDetailsGet","FacesheetPdfPostPath","facesheetPdfPost$Response","expanded","facesheetPdfPost","FacesheetBatchPostPath","facesheetBatchPost$Response","parseFloat","facesheetBatchPost","FacesheetInteractiveConditionPostPath","facesheetInteractiveConditionPost$Response","facesheetInteractiveConditionPost","HccDashboardService","HccDashboardOpportunitiesGetPath","hccDashboardOpportunitiesGet$Response","hccDashboardOpportunitiesGet","HccDashboardMetricsGetPath","hccDashboardMetricsGet$Response","hccDashboardMetricsGet","HccDashboardTierMetricsGetPath","hccDashboardTierMetricsGet$Response","hccDashboardTierMetricsGet","HccDashboardPatientSummaryGetPath","hccDashboardPatientSummaryGet$Response","tier1Id","attributionStatus","hccDashboardPatientSummaryGet","HccDashboardPatientDetailsGetPath","hccDashboardPatientDetailsGet$Response","hccDashboardPatientDetailsGet","HccDashboardPatientDetailsV2GetPath","hccDashboardPatientDetailsV2Get$Response","hccDashboardPatientDetailsV2Get","HccDashboardCliniciansGetPath","hccDashboardCliniciansGet$Response","hccDashboardCliniciansGet","HccDashboardPracticesGetPath","hccDashboardPracticesGet$Response","hccDashboardPracticesGet","HccDashboardCinsGetPath","hccDashboardCinsGet$Response","hccDashboardCinsGet","HccDashboardDiseaseGroupsGetPath","hccDashboardDiseaseGroupsGet$Response","hccDashboardDiseaseGroupsGet","HccDashboardClosureRatesGetPath","hccDashboardClosureRatesGet$Response","AttributionStatus","Tier1Id","Tier2Id","Tier3Id","DatePart","hccDashboardClosureRatesGet","HierarchyService","HierarchyGetPath","hierarchyGet$Response","tier","parentId","cin","region","quarter","year","menuId","hierarchyGet","HierarchyTierGetPath","hierarchyTierGet$Response","chTinId","supplementalId","hierarchyTierGet","HierarchyTiersGetPath","hierarchyTiersGet$Response","tierIds","hierarchyTiersGet","HierarchyPracticesGetPath","hierarchyPracticesGet$Response","hierarchyPracticesGet","NotesService","NotesGetPath","notesGet$Response","NoteTypeId","notesGet","NotesPostPath","notesPost$Response","notesPost","NotesDeletePath","notesDelete$Response","NoteId","notesDelete","PatientsService","PatientsSearchGetPath","patientsSearchGet$Response","Mbi","RowCount","patientsSearchGet","PatientsCohortsGetPath","patientsCohortsGet$Response","CohortId","OnlyAttributed","AddedAfter","SortColumn","SortDirection","Skip","Take","patientsCohortsGet","PatientsListGetPath","patientsListGet$Response","ChPatIds","IncludeDeceased","TopPercent","OrderBy","patientsListGet","PatientsGetPath","patientsGet$Response","patientsGet","PatientsInsertPostPath","patientsInsertPost$Response","patientsInsertPost","PatientsUpdatePostPath","patientsUpdatePost$Response","patientsUpdatePost","PatientsTimelineGetPath","patientsTimelineGet$Response","patientsTimelineGet","PatientsDiseaseCohortDefinitionsGetPath","patientsDiseaseCohortDefinitionsGet$Response","patientsDiseaseCohortDefinitionsGet","PatientsHccVipCohortGetPath","patientsHccVipCohortGet$Response","TopCount","patientsHccVipCohortGet","PatientsCareManagementGetPath","patientsCareManagementGet$Response","patientsCareManagementGet","PerformanceDashboardService","PerformanceDashboardGetPath","performanceDashboardGet$Response","performanceDashboardGet","PerformanceDashboardSummaryGetPath","performanceDashboardSummaryGet$Response","performanceDashboardSummaryGet","PerformanceDashboardDetailsGetPath","performanceDashboardDetailsGet$Response","metricId","timeFrameId","performanceDashboardDetailsGet","ReportItemsService","ReportAuditPostPath","reportAuditPost$Response","reportAuditPost","ReportMenuItemsGetPath","reportMenuItemsGet$Response","reportMenuItemsGet","ReportDefinitionGetPath","reportDefinitionGet$Response","reportDefinitionGet","ReportQuarterYearsGetPath","reportQuarterYearsGet$Response","reportQuarterYearsGet","ReportFilterTypesGetPath","reportFilterTypesGet$Response","reportFilterTypesGet","ReportInfoGetPath","reportInfoGet$Response","reportId","reportInfoGet","ReportService","ReportGetPath","reportGet$Response","ReportTierNum","ReportTierID","AttributionQuarter","AttributionYear","PHIFlag","MenuItemId","ReportId","RegionId","CinId","CinName","reportGet","ReportDashboardGetPath","reportDashboardGet$Response","reportDashboardGet","ReportAccessTokenGetPath","reportAccessTokenGet$Response","reportAccessTokenGet","ReportTokenUsageGetPath","reportTokenUsageGet$Response","reportTokenUsageGet","SnfService","SnfListGetPath","snfListGet$Response","Tier2_ID","snfListGet","Sp340BClaimsService","Sp340BClaimsGetPath","sp340BClaimsGet$Response","acoId","tier2Id","tier4Id","sp340BClaimsGet","Sp340BClaimsGetDetailGetPath","sp340BClaimsGetDetailGet$Response","claimPk","claimId","tier2_id","tier3_id","tier4_grpId","claimType","sp340BClaimsGetDetailGet","Sp340BClaimsSetDetailPostPath","sp340BClaimsSetDetailPost$Response","sp340BClaimsSetDetailPost","Sp340BClaimsSaveClaimNotePostPath","sp340BClaimsSaveClaimNotePost$Response","sp340BClaimsSaveClaimNotePost","Sp340BClaimsGetApprovedClaimsGetPath","sp340BClaimsGetApprovedClaimsGet$Response","sp340BClaimsGetApprovedClaimsGet","Sp340BClaimsGetPrescribersGetPath","sp340BClaimsGetPrescribersGet$Response","sp340BClaimsGetPrescribersGet","Sp340BClaimsGetPharmacyNamesGetPath","sp340BClaimsGetPharmacyNamesGet$Response","sp340BClaimsGetPharmacyNamesGet","Sp340BClaimsSetClaimsToProcessedPostPath","sp340BClaimsSetClaimsToProcessedPost$Response","sp340BClaimsSetClaimsToProcessedPost","Sp340BClaimsGetCeLocationsGetPath","sp340BClaimsGetCeLocationsGet$Response","ccn","sp340BClaimsGetCeLocationsGet","Sp340BClaimsWriteLogMessagePostPath","sp340BClaimsWriteLogMessagePost$Response","sp340BClaimsWriteLogMessagePost","Sp340BClaimsGetDetailWithIdGetPath","sp340BClaimsGetDetailWithIdGet$Response","sp340BClaimsGetDetailWithIdGet","Sp340BClaimsGetClaimWithIdGetPath","sp340BClaimsGetClaimWithIdGet$Response","sp340BClaimsGetClaimWithIdGet","Sp340BClaimsGetClaimDetailHistoryGetPath","sp340BClaimsGetClaimDetailHistoryGet$Response","status","sp340BClaimsGetClaimDetailHistoryGet","Sp340BClaimsUploadFilesPostPath","sp340BClaimsUploadFilesPost$Response","sp340BClaimsUploadFilesPost","Sp340BClaimsDeleteUploadedFilePostPath","sp340BClaimsDeleteUploadedFilePost$Response","sp340BClaimsDeleteUploadedFilePost","Sp340BClaimsGetUploadedFileListGetPath","sp340BClaimsGetUploadedFileListGet$Response","prescriptionRefId","sp340BClaimsGetUploadedFileListGet","Sp340BClaimsDownloadFileGetPath","sp340BClaimsDownloadFileGet$Response","filename","sp340BClaimsDownloadFileGet","Sp340BClaimsUndoProcessClaimPostPath","sp340BClaimsUndoProcessClaimPost$Response","coach340BClaimsID","sp340BClaimsUndoProcessClaimPost","Sp340BClaimsGetClaimExceptionsGetPath","sp340BClaimsGetClaimExceptionsGet$Response","sp340BClaimsGetClaimExceptionsGet","Sp340BClaimsMoveExceptionToClaimGetPath","sp340BClaimsMoveExceptionToClaimGet$Response","exceptionId","sp340BClaimsMoveExceptionToClaimGet","Sp340BClaimsRejectExceptionGetPath","sp340BClaimsRejectExceptionGet$Response","sp340BClaimsRejectExceptionGet","Sp340BInvoiceService","Sp340BInvoiceGetPath","sp340BInvoiceGet$Response","sp340BInvoiceGet","Sp340BInvoiceSaveInvoicePostPath","sp340BInvoiceSaveInvoicePost$Response","sp340BInvoiceSaveInvoicePost","Sp340BInvoiceGetInvoiceHistoryGetPath","sp340BInvoiceGetInvoiceHistoryGet$Response","sp340BInvoiceGetInvoiceHistoryGet","Sp340BInvoiceGetUserInfoGetPath","sp340BInvoiceGetUserInfoGet$Response","userId","sp340BInvoiceGetUserInfoGet","Sp340BInvoiceGetContractInfoGetPath","sp340BInvoiceGetContractInfoGet$Response","sp340BInvoiceGetContractInfoGet","Sp340BInvoiceGetInvoiceIdGetPath","sp340BInvoiceGetInvoiceIdGet$Response","sp340BInvoiceGetInvoiceIdGet","Sp340BInvoiceGetClaimsForInvoicePostPath","sp340BInvoiceGetClaimsForInvoicePost$Response","sp340BInvoiceGetClaimsForInvoicePost","StatusService","StatusGetPath","statusGet$Response","statusGet","StatusDeletePath","statusDelete$Response","statusDelete","StatusHealthGetPath","statusHealthGet$Response","statusHealthGet","UserService","UserUpdateTierInfoGetPath","userUpdateTierInfoGet$Response","userUpdateTierInfoGet","ValueCalculatorService","ValueCalculatorGetPath","valueCalculatorGet$Response","valueCalculatorGet","ValueCalculatorSharedSavingsGetPath","valueCalculatorSharedSavingsGet$Response","valueCalculatorSharedSavingsGet","ValueCalculatorNetworkUtilizationGetPath","valueCalculatorNetworkUtilizationGet$Response","valueCalculatorNetworkUtilizationGet","ValueCalculatorPopHealthGetPath","valueCalculatorPopHealthGet$Response","valueCalculatorPopHealthGet","ValueCalculatorGetRefreshDatesGetPath","valueCalculatorGetRefreshDatesGet$Response","valueCalculatorGetRefreshDatesGet","ValueCalculatorPopHealthMarginGetPath","valueCalculatorPopHealthMarginGet$Response","valueCalculatorPopHealthMarginGet","ValueCalculatorPopHealthMarginPostPath","valueCalculatorPopHealthMarginPost$Response","valueCalculatorPopHealthMarginPost","ValueCalculatorNetValueGetPath","valueCalculatorNetValueGet$Response","valueCalculatorNetValueGet","UserDetailService","UserDetailPath","userDetail$Response","userDetail","UsersDetailsPath","usersDetails$Response","usersDetails","AuthGuard","authService","router","eulaService","userAccessService","hierarchyTierService","featureFlagService","checkfns","care","careTierAuth","submit","submitTierAuth","canActivateChild","route","state","canActivate","authCheckComplete$","switchMap","isAuthenticated","hasEula","hasAccess","hasFeatureFlag","parseUrl","currentTierUrl","isAuthenticated$","isAuthorized","console","log","checkTierAuth","read","AuthService","TIMED_OUT","write","storeUrl","data","moduleId","featureId","componentId","requirePhi","of","accessHistory$","take","access","accessRestricted","phi","routerState","snapshot","navigate","featureFlag","featureFlags$","skipWhile","IdToken","getAllFromCache","x","length","acceptDateTime","isHomeRoute","queryParams","getResolvedUrl","pathFromRoot","segment","toString","getConfiguredUrl","routeConfig","search","isTierAuthorized","fn","fragment","i3","i4","i5","i6","_angular_core__WEBPACK_IMPORTED_MODULE_10__","ExceptionsCellRendererComponent","agInit","node","addEventListener","RowNode","EVENT_MOUSE_ENTER","icon","setIconColor","activeColor","EVENT_MOUSE_LEAVE","Xpm","selectors","viewQuery","rf","ctx","COLUMN_DEFS","headerName","field","autoHeight","minWidth","maxWidth","cellStyle","textAlign","sortable","cellRendererFramework","cellRendererParams","valueGetter","suppressAutoSize","rxNum","comparator","compareString","cellRenderer","dispenseDate","formatDate","Date","trim","getQuickFilterText","suppressSizeToFit","resizable","hide","rxFillNum","parseInt","patientFirstName","patientLastName","patientDob","compareNumber","medNdc","medDesc","convertOrig2Columns","prescription","cuR_CLM_UNIQ_ID","patientName","benE_FullName","acO_ID","tier2_ID","tier2_Name","tier3_ID","tier4_ID","dob","bene_dob","mbi","firstFilled","date_Initial_Fill","fillDate","prescriptionFilledDate","prescriptionName","medication_Description","prescriberName","prescribing_Provider_Name","prescriberCredentials","prescribing_Provider_Credentials","prescriberSpecialty","prescribing_Provider_Specialty","prescriberPhone","prescribing_Provider_Phone","location","ppBusinessPracticeLocation","enrollmentStatus","enrollment_Status","ndc","rxNumber","clPrescriptionServiceReference","claim_Status","patientSex","benE_SEX_CD","primaryProviderName","primary_Provider_Name","primaryProviderCredentials","primary_Provider_Credentials","pharmacyName","pharmacy_Org_Name","pharmacyNameOther","pharmacy_Other_Org_name","chPatID","tier4_ID_CCN","clPrescriptionFillNumber","npi","prescribing_Provider_NPI","servicePharmacyNpi","service_Pharmacy_NPI","createdatetime","gender","prescriberFax","pharmacyAddress","pharmacy_Address","prescriptionRefID","pharmacyAddressOther","pharmacyOtherAddress","daysSupplyQty","clM_LINE_DAYS_SUPLY_QTY","serviceUnitQty","clM_LINE_SRVC_UNIT_QTY","priceRetail","price_Retail","awpPrice","drugManufacturer","tpaName","tpaPrice","ClaimStatus","PENDING","REJECTED","APPROVED","NEW","HAS_NOTE","PROCESSED","EXPIRED","InvoiceStatus","INVOICING","INVOICED","REJECTED_NEEDS_CREDIT","CREDITED","mapInvoiceStatusToString","mapOverallOptionsToStrings","optionValue","statusSortPriorityMap","invoiceStatusPriorityMap","getDefaultPrescriptionData","tier4_GrpID","now","toISOString","visit_Note_Visit_Date","visit_Note_Missing","visit_Note_Diagnosis","visit_Note_Requested_Date","cE_Visit_Date","cE_Visit_Note_Missing","cE_Provider","cE_Location","cE_Related_Referral_Date","cE_Related_Referral_Missing","follow_Up_Plan","claim_Note","claim_Status_Set_By","claim_Status_Set_On_Date","compareDates","otherDate","toLocaleDateString","getFullYear","toUTCString","slice","format","dateStr","month","day","formatDateFourDigitYear","removeLeadingZeros","str","basicNameSplit","fullName","parts","capitalize","s","toLowerCase","B340StringConstants","EXPORT_MENU_TITLE","EXPORT_MACRO_HELIX","EXPORT_CVS","EXPORT_INVOICE_DATA","EXPORTS_PATIENT_LIST","EXPORTS_EXPORT","FILTER_SHARED_OPTION_LABELS_TPANAME","PrescriptionService","KillSubscriptions","tempOcp_Apim_Sub_Key","environment","ocpApimSubscriptionKey","_authService","HierarchyTierService","ToastrMessageService","_this","trackBaseURL","trackApiUrl","apiBaseURL","apiBaseUrl","claimInfo","processingClaim","invoicingClaim","claimInfoUpdated","EventEmitter","processingClaimInfoUpdated","invoicingClaimInfoUpdated","currentTier$","takeUntil","killTrigger","subscribe","_ref","_asyncToGenerator","selectedTierId","_x","apply","arguments","getStandardHeaders","Authorization","getPrescriptions","_this2","writeAuditMessage","entityid","moduleid","componentid","actionid","tablename","auditdesc","applicationID","get","PrescriptionOrigs","PrescriptionOrig","toPromise","e","production","error","getPrescriptionWithId","_this3","selectedItem","userID","getClaimsForInvoice","cmsClaims","tpaClaims","_this4","fetch","json","getApprovedClaims","_this5","convertOrig2ColumnsProcessing","orgName","sex","patientZip","benE_ZIP_CD","prescriptionQuantity","daysSupply","prescriberDEA","prescribing_Provider_DEA_Number","prescriberNPI","medicationDescription","pharmacyNpi","pharmacyOtherCity","pharmacyOtherPhone","pharmacyOtherState","pharmacyOtherZip","getPrescribers","_this6","convertPrescriberToCols","prescribers","unshift","getPharmacyNames","_this7","convertPharmacyNameToCols","pharmacyNames","firstName","secondName","pharmacy_Other_Org_Name","getPrescriptionDetail","selectedPatientInfo","_this8","PrescriptionDetails","getPrescriptionHistoryDetail","newDate","_this9","approved","getPrescriptionHistoryDetailRecord","processed","pending","getInvoiceHistoryRecord","invoicing","invoiced","rejected","rejectedNeedsCredit","credited","approvedObj","processedObj","pendingObj","invoicingObj","invoicedObj","rejectedObj","needsCreditObj","creditedObj","newStatus","newBy","approvedStatus","approvedDate","approvedBy","processedStatus","processedDate","processedBy","pendingStatus","pendingDate","lastUpdatedOn","pendingBy","getUserFullName","lastUpdateUserId","invoicingStatus","invoicingDate","invoicingBy","invoicedStatus","invoicedDate","invoicedBy","rejectedStatus","rejectedDate","rejectedBy","needsCreditStatus","needsCreditDate","needsCreditBy","creditedStatus","creditedDate","creditedBy","userNames","_this10","getUserInfo","displayName","_this11","_this12","_this13","getCELocations","_this14","index","display","getContractInfo","_this15","setPrescriptionDetail","details","isRejected","subsequentFillLogicOptOut","_this16","setClaimToProcessed","claimIds","_this17","forEach","_ref2","idObj","prescriptionId","_x2","saveClaimNote","claimNote","_this18","message","_this19","setSelectedClaimInfo","selectedClaimInfo","assign","emit","getSelectedClaimInfo","setSelectedProcessingClaimInfo","selectedProcessingClaim","setSelectedInvoicingClaimInfo","selectedInvoicingClaim","getSelectedProcessingClaimInfo","getInvoices","_this20","getInvoiceId","_this21","submitInvoices","invoices","_this22","_ref3","invoice","_x3","getPrescriptionDetailWithId","_this23","sendFax","claimsId","toFax","_this24","uploadFile","_this25","httpOptions","post","deleteUploadedFile","_this26","getFileAttachments","_this27","downloadAttachedFiles","_this28","fileName","downloadFile","response","dataType","binaryData","downloadLink","document","createElement","href","window","URL","createObjectURL","setAttribute","appendChild","click","getClaimExceptions","_this29","moveExceptionToClaim","_this30","rejectException","_this31","undoProcessClaim","_this32","_r3","ctx_r2","cancelPrescriptionsLoadingProcess","CareExceptionsComponent","ACCESS_EXCEPTION_QUEUE","_route","toastr","claimExceptions","dataLoaded","loadingStatus","cancelLoadingBool","resetFilter","defaultColDef","columnDefs","orgId","rowCount","pageNo","gridObject","currentRow","gridApiEmitter","filterOptionsEmitter","ex","initializeFilter","ExceptionQueue","CareFeatureConstants","ExceptionQueue340B","ngOnInit","authSubscription","userInfo$","currentUser","ngOnDestroy","unsubscribe","clearInterval","redrawRowInterval","filterOptions","gridApi","refreshCells","onGridReady","param","api","columnApi","getDisplayedRowCount","setDefaultSortOrder","onFirstDataRendered","applyColumnState","colId","sort","sortIndex","defaultState","that","setTimeout","prescriptions","statusText","writeAccessAuditMessage","action","dateRange","getAuditMessageDateRange","dnn_id","dateRangeLow","dateRangeHigh","onCellClicked","event","then","removeAffectedRows","affectedRows","forEachNode","applyTransaction","remove","hostAttrs","outputs","features","decls","vars","consts","template","CareExceptionsComponent_button_7_Template","$event","_c0","PatientsFeature","CarePrescriptionFeature","CarePrescriptionProcessingFeature","CarePrescriptionInvoicingFeature","FeatureFlag340B","HiddenFeatureFlag340B","UIUpdates340B","CareLandingPageFlag","CareComponent","tabsData","routerLink","hideIfFeatureFlagIsActive","parseISO","argument","_options$additionalDi","requiredArgs","additionalDigits","toInteger","RangeError","prototype","call","NaN","date","dateStrings","splitDateString","dateString","timeString","patterns","dateTimeDelimiter","test","timeZoneDelimiter","substr","token","timezone","exec","time","parseYearResult","parseYear","regex","RegExp","captures","match","restDateString","century","parseDate","dateRegex","isWeekDate","dayOfYear","parseDateUnit","week","dayOfWeek","validateWeekDate","_year","dayOfISOWeekYear","isoWeekYear","setUTCFullYear","diff","getUTCDay","setUTCDate","getUTCDate","validateDate","daysInMonths","isLeapYearIndex","validateDayOfYearDate","Math","max","isNaN","getTime","offset","timestamp","parseTime","timeRegex","hours","parseTimeUnit","minutes","seconds","validateTime","millisecondsInHour","millisecondsInMinute","dirtyDate","setFullYear","getUTCFullYear","getUTCMonth","setHours","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","parseTimezone","timezoneString","timezoneRegex","sign","validateTimezone","_hours","isAfter","dirtyDateToCompare","toDate","dateToCompare","DiseaseCohortGridComponent","PersistentGridFilters","filterService","mask","phone","locale","agGridLocalSettingsService","changeDetectorRef","DISEASE_COHORT_GRID_KEY","selectedPatients","secondaryColumnApiEmitter","agFilterChangedEmitter","setSelectedPatientId","AgGridCustomFilteringFlag","defSortModel","clear","setFilterModel","ngOnChanges","changes","currentUrl","hasFilterModel","getFilterModel","restoreColumnState","resetColumnState","setLocalColumnSettings","setSortModel","deselectAll","getAndApplyFilterModel","filterModel","sizeColumnsToFit","onRowClicked","saveColumnState","srcElement","className","includes","onExportClick","reportCohort","queryParamMap","exportDataAsCsv","suppressQuotes","columnSeparator","onSelectionChanged","patients","forEachNodeAfterFilter","patient","isSelected","exportCSV","getSelectedRows","processCellCallback","column","getColId","transform","currencyCellRenderer","onlySelected","columnKeys","getActiveColumnNames","onColumnUpdated","storeColumnSettingsInLocalStorage","filterName","getColumnState","detectChanges","setColumnSettings","hiddenColumnsByDefault","agFilterChanged","afterDataChange","storeFilterModel","storeFilterModelInLocalStorage","storedFilterModel","getStoredFilterModelFromLocalStorage","LOCALE_ID","inputs","rowData","localeText","MaskPipe","PhonePipe","EdUtilizationGridComponent","ED_UTILIZATION_GRID_KEY","gridColumnApi","Intl","NumberFormat","currency","minimumFractionDigits","dataExists","user","getWellpepperUserInfo","_id","i7","reportName","FacesheetScheduleGridComponent","hccFacesheetScheduleService","filterToggleService","FACESHEET_SCHEDULE_GRID_KEY","width","checkboxSelection","headerCheckboxSelection","valueFormatter","filterParams","showTooltips","RouterLinkRendererComponent","linkClicked","isDisabled","isAvailable","maskSensitiveData","keyCreator","rowIndex","compareRiskCategory","displayRiskLevel","splice","col","providerNpi","isFirstFilter","skipUpdate","getSchedules","component","filterInstance","getFilterInstance","setModel","restoreFilterModel","selectAll","onFilterChanged","isRowSelectable","rowNode","scheduleItem","getSelectedItems","nodes","getColumn","setSort","filterType","getSelectedNodes","lastName","pop","careId","patientDataByChPatId","CarePatientItem","FacesheetSchedule","PresetCategory","Facesheet","onRowDataChanged","FacesheetScheduleComponent","gridFilterService","loadSchedules$","loadSchedules","ngAfterViewInit","facesheetGrid","community","practice","fromDate","resetFilters","rd","hasData","selectedItems","patientMbi","currentMbi","facesheetScheduleID","batchStageId","print","TrackFeatureConstants","FacesheetExportAsyncFeatureFlag","startExport","printSynchronous","fcButtonsStatus","fcPrintLoading","printPdf","tierName","export","exportSynchronous","fcPdfLoading","exportPdfs","link","download","exportToZip","bulkExportPrint","CareComponentConstants","HccFacesheetBySchedule","externalPatientSelected","externalSecondaryColumnApiEmitter","externalAgFilterChangedEmitterEmitter","emitSelectedPatientId","PatientSubtabsPrimaryWithPatientEngagement","label","primarySubtab","forAllPatients","PatientSubtabsPrimaryCarePatientOnly","PatientSubtabsPrimaryWithoutPatientEngagement","PatientSubtabsSecondary","secondarySubtab","PatientEngagement","PatientApp","PatientTwilioSMS","PatientEngagementComponentIds","RiskTrendColumnRendererComponent","riskTrend","RiskTrendColumnRendererComponent_img_2_Template","RiskTrendColumnRendererComponent_img_3_Template","RiskTrendColumnRendererComponent_img_4_Template","ctx_r0","alertsCount","ActionsColumnRendererComponent","abbreviation","ActionsColumnRendererComponent_div_3_Template","_c1","_r7","ctx_r6","summaryFileIds","ctx_r4","downloadStatus","summary","IheFilesColumnRendererComponent_div_2_coach_icon_1_Template","IheFilesColumnRendererComponent_div_2_div_2_Template","ctx_r1","_r11","ctx_r10","CMRFileIds","ctx_r8","CMR","IheFilesColumnRendererComponent_div_4_coach_icon_1_Template","IheFilesColumnRendererComponent_div_4_div_2_Template","ctx_r3","IheFilesColumnRendererComponent","PatientService","files","splittedFiles","getCurrentUserInfo","patientData","trackPatient","fileInfo","file","fileType","fileId","getTierId","getTierNum","getGridApi","emitUpdatingPatientByIdInList","updatePatientByIdInList","IHEAssessmentFilesLastDownloaded","f","fileDownloadStatus","IHECMRFileLastDownloaded","fileIds","listName","tempDownloadStatus","find","_","downloadIHEFile","updateFileDownloadHistoryInfo","IHEDownloadDate","moment","fileInfoDatesResult","PatientViewModel","getLatestFileInfoDates","assignLatestFileInfoDates","getIconName","listStatus","downloadInfo","current","history","downloadedAtUtc","downloadedByName","downloadedByUserId","IheFilesColumnRendererComponent_div_1_Template","IheFilesColumnRendererComponent_div_2_Template","IheFilesColumnRendererComponent_div_3_Template","IheFilesColumnRendererComponent_div_4_Template","getColumnDefinitions","exportParams","cellClass","headerTooltip","withoutFacesheet","color","cursor","_a","_b","a","systolic","b","dobMoment","dobString","isValid","age","nodeA","nodeB","isInverted","dateFormat","dodBoolean","dod","compareStringPlain","convertDateAndCompare","inRangeInclusive","agGridCellRendererParams","compareActions","pyRaf","raF_YTD","suppressAndOrCondition","includeBlanksInLessThan","openRAFWt","toFixed","compareRiskTrend","valueA","valueB","Number","suppressSelectAll","utc","ssDenom","suppressMenu","alignToClinical","allAWVPatientsListStatus","getDisplayStringForAWVWorklistStatusEnum","isUsingSnf3DayWaiver","PatientAlertService","wpBaseURL","wpApiUrl","userToken","getWPAPIorgAlerts","err","getPatientAlerts","patientId","alerts","getPatientCompletion","completionId","completion","updatePatientAlert","alert","updatedAlertResponse","userInfo","updatedAlert","inactiveAt","inactiveBy","inactiveReason","inactiveReasonText","isActive","put","CarePatientsPresetGroupService","userAccess","EHRflag","EHR","PatientListsUpdateFlag","ClinicalProgramsListFlag","HCCVIPCohortList","PACNavigatorProgram","IHECohort","SMSOutreachProgram","InHomeAWVScheduleList","CareOrchAccessReqs","CareOrchestrationConstants","GridViewAccessRequirements","HCCListRevamp","CombineSMSCohorts","isHCCVIPCohortListEnabled","isPACNavigatorProgramEnabled","isPatientListsUpdateFlagEnabled","isIHECohortEnabled","isSMSOutreachProgramEnabled","isCombineSMSCohortsEnabled","isInHomeAWVScheduleList","isHCCListRevampEnabled","isCombinedSMSCohortsEnabled","smsAlerts","activeOrgAlerts","currentAccess$","intializeFeatureFlags","hasCareOrchFeatureFlagAndComponents","featureFlagId","componentIds","every","hasComponent","filterPresetGroupsByFeatureFlag","presetGroups","pg","featureFlagRequired","splitStringIntoWords","string","PresetItemBase","wellpepperUser","_orgService","_patientAlertService","spacesToDashes","hasPatientApp","hasPatientTwilioSMS","hidePresetAdditionCondition","agGridCustomFilteringFlag","awvPatientsWorklist","ehrFlag","hasPAC3DayWaiver","CareManagement","AwvPatientsWorklist","PAC3DayWaiver","PRESET_ITEMS","InjectionToken","InterfaceSourceTiersService","AzureApiBase","PresetGroupService","allPresetItems","presetItems","getPresetItem","generalPresetItems","category","General","facesheetPresetItems","cohortPresetItems","Cohorts","clinicalProgramPresetItems","ClinicalProgram","worklistsPresetItems","Worklists","chronicConditionsPresetItems","ChronicConditions","annualWellnessVisitsPresetItems","AnnualWellnessVisits","postAcuteCarePresetItems","PostAcuteCare","allPresetGroups","interfaceSourceTiersService","newPreset","getPresetGroup","CustomList","hideGroup","presets","grantAccessToPresetGroups","group","preset","g","filterSettings","filterSetting","getSkeletonFilterSettingsByName","originName","origin","presetKey","getLocalstorageFilterSettings","hidePreset","facesheetGroup","interfaceTiers","hasInterface","interfaceTier","cloneDeep","currentTier","configTier","ACO_ID","tier1_ID","categoryName","currentFilterSettings","storedFilterSettings","getStoredFilterSettingsFromLocalStorage","rows","currentFilterSettingsElement","storedFilterSettingsElement","fs","title","excluded","dateFrom","dateTo","filterTo","getAllPresets","reduce","concat","getPresetByName","carePatientItem","getPresetByFilterQueryParams","filterPresetQueryParam","filterTitleQueryParam","getPresetByMatchingNameOrTitle","getPresetByMatchingNameWithLabel","nameLowered","urlLabelLowered","urlLabel","setTempPreset","getTempPreset","doesExcludedContainValue","r_idx_r8","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_6_small_1_span_2_Template","selected_r19","s_idx_r20","ctx_r18","checkedOptions","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_6_small_1_Template","ctx_r11","ctx_r12","getRowValueLabelText","row_r7","_r27","ctx_r25","checkAllOptions","option_r31","_r34","$implicit","ctx_r33","checkOption","p_idx_r32","ctx_r30","isOptionChecked","_r39","ctx_r37","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_11_ng_container_1_div_5_Template","option_r45","_r48","ctx_r46","updateFilterValue","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_11_ng_container_2_ng_container_2_option_6_Template","_r56","_r60","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_11_ng_container_2_ng_container_3_input_1_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_11_ng_container_2_ng_container_3_input_2_Template","_r65","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_11_ng_container_2_ng_container_2_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_11_ng_container_2_ng_container_3_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_11_ng_container_2_ng_container_4_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_11_ng_container_1_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_11_ng_container_2_Template","_r73","ctx_r71","checkIncludeAllOrNoneSelection","ctx_r74","ctx_r15","_r80","ctx_r78","preventValueToBeBelowMin","_r96","target","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_13_ng_container_11_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_5_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_6_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_7_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_coach_icon_8_Template","_r102","ctx_r100","openAccordion","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_11_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_12_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_ng_container_13_Template","isOpen","ctx_r9","isRowValid","includeAllOrNoneSelection","displayCheckAllOptionsButton","getChevronStatus","percentage","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_div_1_Template","_r106","ctx_r105","openDeleteFilterModal","_r108","ctx_r107","clearFilters","CarePatientsFiltersSettingsComponent_div_0_ng_container_3_button_4_Template","ctx_r109","openSaveFilterModal","ctx_r110","saveChanges","ctx_r5","isFormValid","filterNameIsAlreadyUsed","filterNewName","isFormChanged","_r115","ctx_r114","_r117","ctx_r116","CarePatientsFiltersSettingsComponent_div_0_ng_container_4_div_1_button_3_Template","ctx_r118","ctx_r111","CarePatientsFiltersSettingsComponent_div_0_ng_container_4_div_2_small_2_span_1_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_4_div_2_small_2_span_2_Template","ctx_r119","CarePatientsFiltersSettingsComponent_div_0_ng_container_4_div_2_small_2_Template","_r123","ctx_r122","createNewFilter","ctx_r112","CarePatientsFiltersSettingsComponent_div_0_ng_container_4_div_1_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_4_div_2_Template","isNewFilter","CarePatientsFiltersSettingsComponent_div_0_ng_container_2_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_3_Template","CarePatientsFiltersSettingsComponent_div_0_ng_container_4_Template","settings","_r126","ctx_r125","newFilter","CarePatientsFiltersSettingsComponent_ng_container_2_small_10_Template","ctx_r127","ctx_r128","_r130","ctx_r129","ctx_r131","deleteCustomFilter","CarePatientsFiltersSettingsComponent","newFilterSettings","updateFilterName","updatedFilterSettings","deleteCustomFilterPreset","faTrash","faSave","filterSettingsObservableSubscriber","assignSettings","selectedPresetSettings","currentValue","i","updateCheckedOptions","list_idx","optionName","option","row","o","oldFilterSettings","filterNames","clonedSettings","renameCustomPreset","versionKey","storeFilterSettingsInLocalStorage","oldName","newName","filters","idx","defaultFilterModel","ssPercent","deleteCustomPreset","setLabel","fo","checkedAsYes","min","CarePatientsFiltersSettingsComponent_div_0_Template","CarePatientsFiltersSettingsComponent_div_1_Template","CarePatientsFiltersSettingsComponent_ng_container_2_Template","CarePatientsFiltersSettingsComponent_ng_container_3_Template","_r15","ctx_r14","openNewFilterDrawer","_r17","ctx_r16","switchListsActiveTab","activeTab","isDrillInOpen","preset_r23","_r30","ctx_r28","toggleDrillInOpen","_c2","ctx_r26","_r33","ctx_r31","onSelectPreset","CarePatientsFiltersComponent_ng_container_9_ng_container_2_ng_container_4_div_1_div_5_Template","CarePatientsFiltersComponent_ng_container_9_ng_container_2_ng_container_4_div_1_div_6_Template","_c3","ctx_r24","selectedPreset","filterComponent","CarePatientsFiltersComponent_ng_container_9_ng_container_2_ng_container_4_div_1_Template","CarePatientsFiltersComponent_ng_container_9_ng_container_2_ng_container_4_Template","presetGroup_r19","CarePatientsFiltersComponent_ng_container_9_ng_container_1_Template","CarePatientsFiltersComponent_ng_container_9_ng_container_2_Template","ctx_r36","_r40","ctx_r39","_c4","_r42","ctx_r41","ctx_r38","CarePatientsFiltersComponent_div_14_div_1_Template","CarePatientsFiltersComponent_div_14_input_2_Template","CarePatientsFiltersComponent_div_14_input_3_Template","presetNameEditorToggle","isNewFilterDrawerOpen","ctx_r7","_r44","ctx_r43","value_r47","CarePatientsFiltersComponent_div_18_option_7_Template","selectedFilter_r45","_r49","ctx_r48","updateFilterSettings","ctx_r50","addCustomFilterPreset","ctx_r51","renameCustomFilterPreset","ctx_r52","getUsedFilterNames","_r54","ctx_r53","ctx_r55","ctx_r56","ctx_r13","CarePatientsFiltersComponent","pclass","sharedClasses","isPatientFiltersOpen","presetGroupService","_router","_routeService","componentFactoryResolver","carePatientsPresetGroupService","linkClickedEventsService","clinicalProgram","AllProgram","updatePresetFilterSettingsTrigger","facesheetCategory","dynamicFilters","previousPreset","refreshPresetsList","getWpOrgIdFromTierId","filterPreset","selectPresetWithString","filterTitle","selectFirstPreset","filterPresetURLName","selectPreset","currentRoute$","_ref4","isActivePreset","getAlertsAndMessages","retrieveAllCustomPresets","CareManagementAllProgram","updatedPreset","AllPatients","presetFiltersComponent","componentFactory","resolveComponentFactory","createComponent","selectedByDefault","filterFilters","emitPreset","updateUrl","sendLinkClickedEvent","sourceSection","sourceSubSection","linkText","targetPage","togglePatientFilters","toggleFilterPane","selectedCategory","attemptCounter","AWVPatientsStatus","AWVPatientsStatusURLQuery","relativeTo","temporary","activeAlertsByFilterDesc","filterDesc","worklists","findIndex","originColumns","columns","targetCategory","names","indexForGeneralCategory","indexForAllPatients","y","addNewCustomPreset","CustomPatientList","tab","i8","i9","i10","i11","i12","i13","ViewContainerRef","SpacesToDashesPipe","CarePatientsFiltersComponent_coach_icon_1_Template","CarePatientsFiltersComponent_coach_icon_2_Template","CarePatientsFiltersComponent_div_4_Template","CarePatientsFiltersComponent_div_5_Template","CarePatientsFiltersComponent_div_6_Template","CarePatientsFiltersComponent_ng_container_9_Template","CarePatientsFiltersComponent_div_14_Template","CarePatientsFiltersComponent_div_15_Template","CarePatientsFiltersComponent_button_16_Template","CarePatientsFiltersComponent_div_18_Template","CarePatientsFiltersComponent_ng_template_19_Template","CarePatientsFiltersComponent_coach_care_patients_filters_settings_21_Template","CarePatientsFiltersComponent_coach_care_patients_filters_settings_22_Template","_c5","selectedFilters","Assignment","Attributed","MostAssignable","PreStep","LoadingMsgEnum","Loading","NoData","loadItems$","Subject","today","UntypedFormControl","Validators","required","awvCustomDateValidator","clearDates","setValue","hasDateChanged","fromDateChanged","momFromDate","startOf","momDefDate","isSame","toDateChanged","momToDate","momToday","otherDateControl","defaultDate","control","dateMinimum","FilterDataService","awvWorklistService","useDefaultFilterModel","applyFilterSettings","keepPreviousFilterModel","ignoreDefaultAndCurrentFilterModels","currentFilterModel","getColumnDefs","applyDefaultFilterModel","updatePresetFilterSettings","storeFilterModelAndMatchFilterSettings","checkIfAllItemsSelected","possibleValues","filteredRowsData","indexOf","isAllSelected","size","getValuesForColumn","colDef","getColDef","u","getValue","cleanDefaultFilterModel","dfm","cleanedDFM","getColumns","cleanedDFMValues","filteredValues","objAllItemsSelected","checkIfFilterIsApplied","AwvOpportunities","appliedFilters","matchingDFM","matchFilterSettingsWithCurrentFilterModel","shouldStoreFilterModel","matchAndUpdateFilterSettings","storeFilterSettings","getNonActiveColumnsBetweenPresetAndFilterModel","columnNames","nonActiveColumns","newFilterValues","updateCurrentFilterSettingsObservable","applyStoredFilterModel","resetFilterSettings","getValidPatientsLength","PatientInviteFormComponent_div_0_div_7_span_1_Template","PatientInviteFormComponent_div_0_div_7_span_2_Template","professional_r19","ctx_r17","patientClone","professionalId","_r21","ctx_r20","ctx_r22","ctx_r23","nickName","ctx_r27","email","PatientInviteFormComponent_div_0_span_10_div_1_small_31_Template","phoneNumber","ctx_r29","PatientInviteFormComponent_div_0_span_10_div_1_option_44_Template","PatientInviteFormComponent_div_0_span_10_div_1_small_46_Template","isInputValid","professionals","patient_r31","PatientInviteFormComponent_div_0_span_10_div_2_div_2_div_4_Template","PatientInviteFormComponent_div_0_span_10_div_2_div_2_div_5_Template","isPatientValidForInvitation","carePatient","PatientInviteFormComponent_div_0_span_10_div_2_div_2_Template","PatientInviteFormComponent_div_0_span_10_div_1_Template","PatientInviteFormComponent_div_0_span_10_div_2_Template","_r37","close","switchPage","PatientInviteFormComponent_div_0_span_10_coach_loading_indicator_8_Template","PatientInviteFormComponent_div_0_span_10_span_9_Template","isPatientValid","orgData","professional_r42","bulkPatientsProfessionalId","PatientInviteFormComponent_div_0_div_11_div_1_option_6_Template","ctx_r45","availableProceduresProcedureUILabel","ctx_r57","getSelectedModules","protocolId_r51","PatientInviteFormComponent_div_0_div_11_div_2_ng_container_6_span_4_div_1_div_7_span_2_Template","protocolsById","modules","_r62","ctx_r60","toggleModuleSelectorOpen","procedure_r49","ctx_r63","selectProtocol","PatientInviteFormComponent_div_0_div_11_div_2_ng_container_6_span_4_div_1_div_7_Template","PatientInviteFormComponent_div_0_div_11_div_2_ng_container_6_span_4_div_1_div_8_Template","checkProcedureAndProtocol","module_r69","moduleIdx_r70","ctx_r68","modulesById","protocolId","_r77","ctx_r76","isModuleSelectorIsOpen","PatientInviteFormComponent_div_0_div_11_div_2_ng_container_6_span_4_div_2_div_7_Template","PatientInviteFormComponent_div_0_div_11_div_2_ng_container_6_span_4_div_1_Template","PatientInviteFormComponent_div_0_div_11_div_2_ng_container_6_span_4_div_2_Template","PatientInviteFormComponent_div_0_div_11_div_2_ng_container_6_span_4_p_3_Template","PatientInviteFormComponent_div_0_div_11_div_2_ng_container_6_span_4_Template","allowedProtocols","PatientInviteFormComponent_div_0_div_11_div_2_span_2_Template","PatientInviteFormComponent_div_0_div_11_div_2_span_3_Template","PatientInviteFormComponent_div_0_div_11_div_2_p_5_Template","PatientInviteFormComponent_div_0_div_11_div_2_ng_container_6_Template","ctx_r40","hasProcedures","availableProcedures","PatientInviteFormComponent_div_0_div_11_div_1_Template","PatientInviteFormComponent_div_0_div_11_div_2_Template","_r81","ctx_r80","ctx_r82","ctx_r83","getSelectedProceduresLength","ctx_r84","patient_r89","inviteStatus","loading","PatientInviteFormComponent_div_0_div_13_div_4_span_2_div_1_div_5_Template","PatientInviteFormComponent_div_0_div_13_div_4_span_2_div_1_Template","ctx_r88","PatientInviteFormComponent_div_0_div_13_div_4_span_2_Template","ctx_r85","module_r100","ctx_r99","PatientInviteFormComponent_div_0_div_13_span_5_div_1_ul_5_li_1_Template","ctx_r98","protocolId_r97","PatientInviteFormComponent_div_0_div_13_span_5_div_1_ul_5_Template","_c6","ctx_r96","procedure_r95","PatientInviteFormComponent_div_0_div_13_span_5_div_1_Template","_r104","ctx_r103","smsEnrollmentAgreed","ctx_r87","PatientInviteFormComponent_div_0_div_13_div_3_Template","PatientInviteFormComponent_div_0_div_13_div_4_Template","PatientInviteFormComponent_div_0_div_13_span_5_Template","PatientInviteFormComponent_div_0_div_13_div_6_Template","emailAndSmsInvitationEligible","sms","PatientInviteFormComponent_div_0_div_14_div_2_coach_loading_indicator_1_Template","_r113","ctx_r106","_c7","PatientInviteFormComponent_div_0_div_14_div_1_Template","PatientInviteFormComponent_div_0_div_14_div_2_Template","_c8","_r118","ctx_r117","PatientInviteFormComponent_div_0_div_15_button_2_Template","_r120","PatientInviteFormComponent_div_0_div_15_span_4_Template","PatientInviteFormComponent_div_0_div_15_span_5_Template","ctx_r121","submitMultiplePatients","bulkInviteStatus","_c9","PatientInviteFormComponent_div_0_span_5_Template","PatientInviteFormComponent_div_0_div_7_Template","PatientInviteFormComponent_div_0_span_10_Template","PatientInviteFormComponent_div_0_div_11_Template","PatientInviteFormComponent_div_0_div_12_Template","PatientInviteFormComponent_div_0_div_13_Template","PatientInviteFormComponent_div_0_div_14_Template","PatientInviteFormComponent_div_0_div_15_Template","formStep","_r128","reinvite","PatientInviteFormComponent_div_1_div_8_span_4_Template","PatientInviteFormComponent_div_1_div_8_span_5_Template","_c10","ctx_r123","isSMSPatient","PatientInviteFormComponent_div_1_div_9_coach_loading_indicator_1_Template","_r132","ctx_r124","PatientInviteFormComponent_div_1_div_6_Template","PatientInviteFormComponent_div_1_div_8_Template","PatientInviteFormComponent_div_1_div_9_Template","PatientInviteFormComponent","OrgService","auditService","toast","closeForm","selectHolder","primaryProfessional","newProtocol","newModules","newProcedure","extendedFields","protocols","professionalsById","welcomeMail","selectedProtocol","selectedProcedure","faUser","faFileAlt","isPatientInvited","getAndStoreProtocolsForOrg","loadPatientInviteDetailsForOrg","counter","accountType","previousValue","action_target","getProtocolsForOrg","storeModuleNames","Promise","all","getProfessionalsForOrg","getOrg","org","elegibleRoles","er","m","getModuleName","getPatientEpisodesOfCare","variables","defaultWelcomeMail","invitations","shouldSend","newPassword","genRandomPassword","updateCarePatient","password","sender","addNotificationForPatient","notifications","taskList","getTasks","taskId","task","triggerTwilioFlowForPatient","patientResult","createUser","assignProceduresAndProtocols","enrolledinSMSby","invitedtoSMS","description","detail","activities","createdAt","invitedAct","orgMappedTierId","getWpMappedTierIdFromTierId","orgMappedTierNum","getWpMappedTierNumFromTierId","patientDetails","ACL","F","currentTimeZoneName","DateTimeFormat","resolvedOptions","timeZone","currentTimeZoneOffsetSec","getTimezoneOffset","trackAwvPatient","getGenderFromString","mrn","preferredName","requiresPasswordReset","userMustConfirmDetails","username","identifiers","issuer","patientIdentityProvider","subject","formatSubject","toDateString","provider","dd","getDate","padStart","mm","getMonth","yyyy","verbalConsent","acceptedBy","acceptedByName","acceptedByEulaId","acceptedDate","PatientIdentifiersIssuers","SmsCarePlanPhoneNumber","formatPhoneNumberForTwilio","canBeUpdated","isEmailAndSmsSubscribed","refreshFromCareAndTrackPatient","professional","getProfessional","Patient","formatPhoneNumber","professionalName","updateTrackPatient","tierID","carePatientId","middleName","dateOfBirth","ChPatID","supplementalID","auditLog","SubComponentId","Invitations","ActionId","Insert","episodeOfCare","procedureName","shortName","procedureShortName","procedureTimeZoneName","assignedEpisodeOfCare","assignEpisodeOfCare","p2","prot","assignedProtocol","assignProtocol","protocol","doesProtocolHaveTwilioFlowTask","userHasSeenSMSOptOut","tasks","success","sendEmailInvite","text","num","p_Id","procedure","isEmailFormatValid","isPhoneNumberFormatValid","allowedProtocolId","checkAllPatientsInvitedStatus","loadingCode","getRandomNum","lbound","ubound","arr","Uint32Array","crypto","getRandomValues","valueOf","pow","floor","getRandomChar","number","lower","upper","other","extra","charSet","charAt","genPassword","extraChars","firstNumber","firstLower","firstUpper","firstOther","latterNumber","latterLower","latterUpper","latterOther","rc","firstNum","patientInvited","PatientInviteFormComponent_div_0_Template","PatientInviteFormComponent_div_1_Template","html","AwvWorkflowStatuses","ReadyForOutreach","OutreachAttempted","Scheduled","Completed","Declined","Ineligible","DeferredToSignify","Other","BackendError","errorStatus","errorStatusText","userFriendlyErrorMessage","AwvActivityChangeEvent","beforeAwvWorkflow","afterAwvWorkflow","after","before","AwvActivityChangeEventDetails","dueDateTime","dueDate","WorkflowChangeEvent","program","userEmail","oldStatus","durationInMs","WorkflowSaveEvent","activity","WorkflowEditEvent","oldActivity","newActivity","WorkflowDeleteEvent","deletedActivityType","Program","AWV","ChangeType","SAVE","EDIT","DELETE","WorkflowEventId","WORKFLOW_SAVE","WORKFLOW_EDIT","WORKFLOW_DELETE","TierIds","PracticeService","hierarchyService","toastrMessageService","getPracticeById","getPractices","tier4Name","resetLastResult","lastPracticeList","lastTierNum","lastTierId","resp","AwvWorkflowService","_backendError$","_updateSuccessful$","_awvActivityChangeEvent$","backendError$","updateSuccessful$","awvActivityChangeEvent$","publishBackendError","backendError","next","publishUpdateSuccessful","publishAwvActivityChangeEvent","awvActivityChangeEvent","WorkflowEventsService","mixpanel","clearTrackedState","startTime","changeType","activityType","trackProgramWithPatient","trackSave","trackEdit","trackDelete","oldWorkflow","newWorkflow","eventId","completedActivities","inProgressActivities","track","onButtonClicked","dialogHeader","dialogMessage","PatientAwvRemoveModalDialogComponent_div_0_div_1_Template","showDialog","PatientAwvRemoveModalDialogComponent","buttonClicked","buttonValue","PatientAwvRemoveModalDialogComponent_div_0_Template","isFormOpen","isTabOpen","_r10","activateForm","mobileScreenSize","_r22","ctx_r21","expandSubmittedWaiver","PatientPacNavigatorComponent_div_2_ng_container_3_ng_container_2_div_3_span_6_Template","isWaiverSaved","snfInfo","snfName","ACOProviderEvalDate","waiverSelectionControl","item_r26","pacNavSNFID","_r13","markAsTouched","_r28","PatientPacNavigatorComponent_div_2_ng_container_3_ng_container_2_div_6_option_8_Template","isVerified3StarRating","isACOCertified","ctx_r32","ACOProviderName","isPatientEvaluated","ctx_r34","ctx_r35","isPatientNotResident","isPatientAdmissible","PatientPacNavigatorComponent_div_2_ng_container_3_ng_container_2_div_6_div_52_Template","PatientPacNavigatorComponent_div_2_ng_container_3_ng_container_2_div_6_coach_icon_54_Template","cancelWaiver","onSave","onDialogButtonClick","ctx_r19","snfNameControl","snfList","medicareUrl","isFormUpdated","isSnfAdmittedAtValid","showDeleteDialog","PatientPacNavigatorComponent_div_2_ng_container_3_ng_container_2_div_3_Template","PatientPacNavigatorComponent_div_2_ng_container_3_ng_container_2_ng_template_4_Template","PatientPacNavigatorComponent_div_2_ng_container_3_ng_container_2_div_6_Template","isWaiverSubmitted","_r41","patientSnfStatusItemDefinitions","flag_r42","_r46","selectedStatusFlags","ctx_r47","statusFlagUpdated","PatientPacNavigatorComponent_div_2_ng_container_3_div_16_span_5_Template","patientSnfStatusItemLabels","canInfoBeRemoved","PatientPacNavigatorComponent_div_2_ng_container_3_ng_container_2_Template","PatientPacNavigatorComponent_div_2_ng_container_3_ng_container_3_Template","_r51","snfAdmittedAt","snfDischargedAt","PatientPacNavigatorComponent_div_2_ng_container_3_div_16_Template","snfComment","ctx_r54","update","PatientPacNavigatorComponent_div_2_ng_container_3_button_24_Template","hasSNFFeature","patientSnfStatusItemAllowedTypes","ctx_r58","proAvatar","log_r55","createdBy","ctx_r59","proName","update_r67","faIcon","PatientPacNavigatorComponent_div_2_ng_container_6_div_1_div_14_fa_icon_2_Template","PatientPacNavigatorComponent_div_2_ng_container_6_div_1_img_3_Template","PatientPacNavigatorComponent_div_2_ng_container_6_div_1_div_4_Template","PatientPacNavigatorComponent_div_2_ng_container_6_div_1_span_8_Template","PatientPacNavigatorComponent_div_2_ng_container_6_div_1_span_9_Template","PatientPacNavigatorComponent_div_2_ng_container_6_div_1_span_13_Template","PatientPacNavigatorComponent_div_2_ng_container_6_div_1_div_14_Template","updates","PatientPacNavigatorComponent_div_2_ng_container_6_div_1_Template","_r74","ctx_r73","clearForm","_r76","ctx_r75","clonePreviousEntry","PatientPacNavigatorComponent_div_2_div_7_button_1_Template","PatientPacNavigatorComponent_div_2_div_7_button_2_Template","editMode","PatientPacNavigatorComponent_div_2_ng_container_2_Template","PatientPacNavigatorComponent_div_2_ng_container_3_Template","PatientPacNavigatorComponent_div_2_ng_container_6_Template","PatientPacNavigatorComponent_div_2_div_7_Template","snfHistoryDetails","isFormEditable","PatientPacNavigatorComponent","snfService","patientUpdated","snfId","snfStatus","snfHistory","thirtyDaysAgoDate","subtract","PatientSnfStatusItemAllowedTypes","Names","Definitions","flag","assignSnfInfoValues","valueChanges","reset","emitEvent","snfItem","loadSNFList","proIds","Set","snf","getProfessionalsInfo","assignSnfHistoryDetails","getChangesBetweenTwoLogs","currentLog","previousLog","previousLogIdx","historyList","snfInfoDetails","isEdit","faMinus","faComment","faPlus","faEdit","faArrowRight","snfDischargedAtInfo","faCheckCircle","snfStatusAdded","snfStatusRemoved","faCheck","faTimes","assignSnfInfoDetailsElement","updatedSnfInfo","updatePatientSnfInfo","ignoreFields","isWaiverValid","oldSnfInfo","getPreviousEligibleEntry","ignoreProperties","flagName","isBefore","previousSnfLog","proId","avatar","fName","toggleSubmittedWaiver","sidebarMode","PatientPacNavigatorComponent_div_1_Template","PatientPacNavigatorComponent_div_2_Template","inHomeVisitDate","PatientIHEWorklistComponent_div_1_span_5_Template","_r4","_r19","file_r11","_r23","getFormattedDownloadDetails","PatientIHEWorklistComponent_div_3_div_5_ng_container_3_coach_icon_2_Template","PatientIHEWorklistComponent_div_3_div_5_ng_container_3_div_3_Template","PatientIHEWorklistComponent_div_3_div_5_ng_container_3_coach_icon_4_Template","PatientIHEWorklistComponent_div_3_div_5_ng_container_3_div_8_Template","patientIHEFileTypeLabels","downloadDetails","PatientIHEWorklistComponent_div_3_div_5_ng_container_3_Template","filesByTypeName","downloadAllFiles","downloading","getDownloadStatus","_r29","postNote","note","log_r32","noteText","PatientIHEWorklistComponent_div_3_div_10_ng_container_4_img_4_Template","PatientIHEWorklistComponent_div_3_div_10_ng_container_4_div_5_Template","PatientIHEWorklistComponent_div_3_div_10_ng_container_4_span_9_Template","PatientIHEWorklistComponent_div_3_div_10_ng_container_4_span_10_Template","PatientIHEWorklistComponent_div_3_div_10_ng_container_4_fa_icon_17_Template","PatientIHEWorklistComponent_div_3_div_10_ng_container_4_span_18_Template","PatientIHEWorklistComponent_div_3_div_10_ng_container_4_span_19_Template","PatientIHEWorklistComponent_div_3_div_10_ng_container_4_Template","getLiveUpdatedHistoryList","PatientIHEWorklistComponent_div_3_span_4_Template","PatientIHEWorklistComponent_div_3_div_5_Template","PatientIHEWorklistComponent_div_3_div_6_Template","PatientIHEWorklistComponent_div_3_div_9_Template","PatientIHEWorklistComponent_div_3_div_10_Template","areAllFilesAvailable","PatientIHEWorklistComponent","activatedRoute","historyDetails","notes","filesStatus","ITrackApiIHEFilesListVisitInfo","PatientIHEFileTypeLabels","resetInfo","getIheFilesInfo","getNotes","updateFileInPatientData","visitInfo","tempFileDownloadStatus","file_idx","notesHistory","getNote","noteId","createDateTime","createUserFullName","createUserName","createdByUserID","lastUpdateDateTime","lastUpdateUserID","lastUpdateUserFullName","noteID","updateUserName","ITrackApiIHEFilesListVisitInfos","getIHEDataForPatient","sortHistoryListByDate","visitDate","IHEAWVVisitDate","convertFilesHistoryElementIntoIHEHistoryElements","convertFilesHistoryElementIntoIHEHistoryElement","info","createdById","local","faDownload","convertNotesElementIntoIHEHistoryElement","createUserDisplayName","addElementIntoHistoryList","el","userName","downloadDate","toLocaleString","IHEDownloadStatusObject","IHEAssessmentFilesLastUpdated","IHECMRFileLastUpdated","notOnlyCMRFile","PatientIHEWorklistComponent_div_1_Template","PatientIHEWorklistComponent_div_3_Template","PatientAwvReportComponent_div_1_span_5_Template","updateStatusDate","isDateAfterToday","isDateBeforeOneYearAgo","dateChange","log_r13","PatientAwvReportComponent_div_3_div_13_ng_container_4_img_4_Template","PatientAwvReportComponent_div_3_div_13_ng_container_4_div_5_Template","PatientAwvReportComponent_div_3_div_13_ng_container_4_span_9_Template","PatientAwvReportComponent_div_3_div_13_ng_container_4_span_10_Template","PatientAwvReportComponent_div_3_div_13_ng_container_4_fa_icon_17_Template","PatientAwvReportComponent_div_3_div_13_ng_container_4_span_18_Template","PatientAwvReportComponent_div_3_div_13_ng_container_4_span_19_Template","PatientAwvReportComponent_div_3_div_13_ng_container_4_Template","setChangeDateFlag","statusDate","PatientAwvReportComponent_div_3_span_7_Template","PatientAwvReportComponent_div_3_span_9_Template","PatientAwvReportComponent_div_3_div_12_Template","PatientAwvReportComponent_div_3_div_13_Template","oneYearAgo","PatientAwvReportComponent","patientService","getAndAssignStatusDateFromTrackAwvPatientInfo","scheduleId","updateAwvStatusDate","awvPatientInfo","getTrackAwvPatients","targetDate","add","PatientAwvReportComponent_div_1_Template","PatientAwvReportComponent_div_3_Template","OutcomeType","ScheduledOutcome","CompletedOutcome","CallBackOutcome","RemovedOutcome","DeferredToSignifyOutcome","PatientWasRemindedOutcome","PatientDidNotAnswerOutcome","PatientAttendedOutcome","PatientDidNotAttendOutcome","PropertiesType","ScheduledProperties","CompletedProperties","CallBackProperties","RemovedProperties","PatientWasRemindedProperties","PatientDidNotAnswerProperties","PatientAttendedProperties","PatientDidNotAttendProperties","WorkflowDateTimeUtil","dateTimeStringToDateOnlyString","dateTime","dateTimeStringToUSDateOnlyString","todayDateOnlyString","dateTimeStringToMonthDateFormat","todayToMonthDateFormat","minNextAwvDate","scheduledOrCompletedDate","maxNextAwvDate","PatientAwvInlineErrorComponent","awvWorkflowService","elementRef","element","nativeElement","offsetParent","PatientAwvInlineErrorComponent_div_0_Template","practice_r5","PatientWorkflowScheduledComponent","clearFields","loadPracticesDropdown","practiceService","editModeActive","outcomeSaved","deleteActivity","scheduledDate","scheduledPracticeId","providerName","comment","allFieldsEmpty","requiredFieldsSatisfied","commentCharacterLimit","commentBoxCharacterLimit","providerFieldCharacterLimit","showRemoveDialog","minScheduledDate","maxScheduledDate","properties","_filter","filterValue","_normalizeValue","practices","filteredPractices","practiceOnLoad","filterPractices","displayFn","getPracticeId","fieldChanged","copyComment","commentBox","select","execCommand","setSelectionRange","checkAnyFieldHasValue","checkRequiredFieldsSatisfied","isScheduledDateValid","scheduledToDate","minScheduledToDate","maxScheduledToDate","checkIfFieldsWereEdited","substring","resetFields","save","scheduledOutcome","stringifyForm","PatientWorkflowScheduledComponent_mat_option_14_Template","_r8","PatientWorkflowScheduledComponent_coach_icon_27_Template","_r0","_r1","NextAwvDateValidationService","isNextAwvDateChangedAndHasValidValue","nextAwvDateChecked","nextAwvDate","outcome","newFormFill","nextAwvDateWasPreviouslySaved","nextAwvDateWasSavedPreviouslyAndChanged","isNextAwvDateChangedAndHasValidValueForCompleted","nextAwvDateWasPreviouslySavedForCompleted","nextAwvDateWasSavedPreviouslyAndChangedForCompleted","practice_r7","_r9","PatientWorkflowCompletedComponent","nextAwvDateValidationService","activityDeleted","completedDate","completedPracticeId","alternativePractice","minCompletedDate","otherPractice","externalPractice","updateNextAwvDateRestrictions","some","completedOutcome","toggleNextAwvDateInput","PatientWorkflowCompletedComponent_mat_option_13_Template","_r5","PatientWorkflowCompletedComponent_coach_icon_36_Template","ChangeTypes","Create","Update","Rollback","Edit","HistorySourceType","CareOrchSystem","CareOrchSelfReported","CareOrchAdmin","PepSystem","PepSelfReported","CmsClaimsData","EhrClinicalData","InHomeAwv","CallbackReasons","PatientUnreachable","PatientTraveling","PatientRequestedCallback","PatientRequiresTranslator","ProviderRequestedCallback","PatientIsInASkilledNursingFacility","PatientIsInAnInpatientFacility","RemovedReasons","PatientHasDeclined","PatientIsUnreachable","PatientIsUnderHospiceCare","PatientIsDeceased","PatientMovedOutOfTheServiceArea","InsurancePlanDoesNotCoverAwv","AwvWasCompletedByExternalProvider","ActivityType","SchedulingActivity","ReminderActivity","AttendedActivity","PatientAwvUtilities","removeReasonToEnum","reason","removedReasonToString","callBackReasonToEnum","callBackReasonToString","reason_r5","oneWeeksTime","PatientWorkflowCallBackComponent","selectedReminder","reminderDate","checked","reminderDateMin","reminderDateMax","callBackReason","setReminderDateMin","reasons","setSelectedReminderDate","reminderNumber","isReminderDateValid","reminderOutcome","customDateChange","PatientWorkflowCallBackComponent_option_29_Template","_r6","_r2","reason_r4","PatientWorkflowRemoveComponent","removeReason","removedOutcome","PatientWorkflowRemoveComponent_option_7_Template","PatientWorkflowRemoveComponent_coach_icon_20_Template","PatientAwvCallbackComponent","awvService","callbackReason","callbackDate","awvWorkflow","PatientAwvSchedulingComponent_div_1_span_5_Template","callbackOutcomeProperties","PatientAwvSchedulingComponent_div_3_coach_patient_awv_callback_5_Template","setSelectedActivity","allAwvWorkflowStatuses","selectedActivity","scheduledOutcomeProperties","PatientAwvSchedulingComponent","workflowEvents","awvWorkflowUpdated","callbackOutcome","clearUnselectedActivityForms","patientWorkflowScheduledComponent","patientWorkflowCompletedComponent","patientWorkflowCallBackComponent","patientWorkflowRemoveComponent","activityNumber","activityToSave","obsUpdatedWorkflow","AwvProgramId","activityDeletedEvent","PatientAwvSchedulingComponent_div_1_Template","PatientAwvSchedulingComponent_div_3_Template","StepperComponent","activityCompleted","isLastStep","StepperComponent_div_1_Template","deleteSchedulingActivity","PatientStepScheduledComponent","activitySaved","practiceName","activityStatus","PatientStepScheduledComponent_coach_patient_workflow_scheduled_14_Template","healthRisk","needsTransportation","needsInterpreter","medications","labsDocumentation","isReadOnly","WasRemindedOutcome","PATIENT_WAS_REMINDED","PATIENT_DID_NOT_ANSWER","DefaultOutcome","PatientStepReminderFormComponent","selectedOutcome","prePopWithReminderOutcome","attendedOutcome","clearPatientWasRemindedSubFields","buildPatientWasRemindedOutcome","buildPatientDidNotAnswerOutcome","Error","remindedDateTime","healthRiskAssessmentStarted","prePopPatWasRemindedOutcome","prePopPatDidNotAnswerOutcome","PatientStepReminderFormComponent_div_6_Template","_r18","PatientStepReminderComponent_ng_container_9_div_1_Template","PatientStepReminderComponent_ng_container_9_div_2_Template","outcomeTypes","PatientStepReminderComponent","isActivityComplete","completeReminderActivities","inProgressReminderActivities","completeAttendedActivities","PatientStepReminderComponent_div_8_Template","PatientStepReminderComponent_ng_container_9_Template","PatientStepReminderComponent_coach_patient_step_reminder_form_13_Template","AttendOutcome","PATIENT_ATTENDED_AWV","PATIENT_DID_NOT_ATTEND_AWV","PatientStepCompletedFormComponent","commentCharacterlimit","attendedAwv","prePopWithCompletedOutcome","isScheduledDateGreaterThanToday","shouldClearFields","prePopPatAttendedOutcome","prePopPatDidNotAttendOutcome","buildPatientAttendedAWVOutcome","buildPatientDidNotAttendOutcome","PatientStepCompletedFormComponent_coach_icon_30_Template","PatientStepCompletedFormComponent_coach_icon_31_Template","PatientStepCompletedComponent_ng_container_9_div_1_Template","PatientStepCompletedComponent_ng_container_9_div_2_Template","PatientStepCompletedComponent","userLocale","completeActivities","schedulingActivities","PatientStepCompletedComponent_ng_container_9_Template","PatientStepCompletedComponent_div_10_Template","PatientStepCompletedComponent_coach_patient_step_completed_form_14_Template","PatientAwvReminderComponent","PatientAwvRemovedComponent","enumValue","PatientAwvRemovedComponent_coach_patient_workflow_remove_13_Template","awvWorkflowStatus","convertAwvStatusToCamelCase","PatientAwvBannerComponent","minimalView","awvWorkflowStatusToString","isLoading","PatientAwvBannerComponent_div_3_Template","PatientAwvBannerComponent_div_5_Template","isHistory","PatientAwvLoadingComponent","PatientAwvLoadingComponent_div_0_Template","change_r2","coachUser","PatientAwvHistoryComponent_div_1_ng_container_5_div_4_Template","PatientAwvHistoryComponent_div_1_ng_container_5_div_5_Template","PatientAwvHistoryComponent_div_1_ng_container_5_span_9_Template","PatientAwvHistoryComponent_div_1_ng_container_5_span_10_Template","PatientAwvHistoryComponent_div_1_ng_container_5_div_18_Template","recordedChange","submissionInfo","submittedDate","PatientAwvHistoryComponent_div_1_ng_container_5_Template","userSources","PatientAwvHistoryComponent","userDetailService","loadingHistory","userIds","fetchHistory","fetchedHistory","remainingPages","currentPage","pagedHistory","getNextHistoryPage","pageCount","results","submittedByUserId","change","enrichChange","reverse","callUsersDetails","getDisplayName","updatedActivity","legacyAwvNote","schedulingActivity","reminderActivity","attendedActivity","editedActivity","pageNumber","obsWorkflowHistoryPagedResponse","pageSize","FetchAwvWorkflowHistoryPageSize","workflowHistoryPagedResponse","workflowHistoryErrorMessageFrontend","submittedBySource","UsersDetailResponse","usersDetailsResponse","mapUsersDetails","userDetailsErrorMessageFrontend","userDetails","PatientAwvHistoryComponent_div_1_Template","completedOutcomeProperties","PatientAwvCompletedComponent","PatientAwvCompletedComponent_div_13_Template","PatientAwvEnrolService","enrol","careOrchApiUrl","lastYear","requestBody","criteriaSatisfiedDateTime","lastAwvDetails","source","PatientAwvEnrolComponent","enrolService","obsWorkflow","lastAwvDate","PatientLastAwvDetailsComponent","lastAWVDate","PatientLastAwvDetailsComponent_div_4_Template","PatientLastAwvDetailsComponent_div_5_Template","PatientAwvDeferredComponent","errorTitle","errorMessage","PatientAwvErrorComponent","inError","PatientAwvErrorComponent_div_0_Template","toggleValidatePanel","isSidebarOpen","avatarUrl","displayInitials","patientUrl","patientUrlQueryParams","displayDod","tier5_Name","tier4_Name","_r16","CarePatientSidebarComponent_div_4_ng_container_20_div_1_coach_patient_awv_report_1_Template","CarePatientSidebarComponent_div_4_ng_container_20_div_2_ng_container_1_coach_patient_awv_enrol_3_Template","isLowerEnvironment","_r35","_r38","ctx_r42","CarePatientSidebarComponent_div_4_ng_container_20_div_2_ng_container_1_Template","CarePatientSidebarComponent_div_4_ng_container_20_div_2_coach_patient_awv_scheduling_3_Template","CarePatientSidebarComponent_div_4_ng_container_20_div_2_coach_patient_awv_reminder_4_Template","CarePatientSidebarComponent_div_4_ng_container_20_div_2_coach_patient_awv_removed_5_Template","CarePatientSidebarComponent_div_4_ng_container_20_div_2_coach_patient_awv_completed_6_Template","CarePatientSidebarComponent_div_4_ng_container_20_div_2_coach_patient_awv_deferred_7_Template","CarePatientSidebarComponent_div_4_ng_container_20_div_2_coach_patient_awv_history_8_Template","attendedActivityWasSubmitted","CarePatientSidebarComponent_div_4_ng_container_20_div_1_Template","CarePatientSidebarComponent_div_4_ng_container_20_div_2_Template","CarePatientSidebarComponent_div_4_img_4_Template","CarePatientSidebarComponent_div_4_ng_container_5_Template","CarePatientSidebarComponent_div_4_a_9_Template","CarePatientSidebarComponent_div_4_a_10_Template","CarePatientSidebarComponent_div_4_div_13_Template","CarePatientSidebarComponent_div_4_div_17_Template","CarePatientSidebarComponent_div_4_coach_patient_pac_navigator_18_Template","CarePatientSidebarComponent_div_4_coach_patient_ihe_worklist_19_Template","CarePatientSidebarComponent_div_4_ng_container_20_Template","isLinkDisabled","displayAge","displayGender","displayDob","CarePatientSidebarComponent","careOrchService","forcePatientSideBar","open","SideBarAccessRequirements","getPatientData","tier4ID","obsAwvWorkflow","selectedPatient","hasFacesheet","fromCareAndTrackPatient","fromCareAndTrackAwvPatient","attendedActivities","serverErrorMessageFrontend","forbiddenErrorMessageBackend","forbiddenErrorMessageFrontend","conflictErrorMessageFrontend","defaultErrorMessage","awvWorflowObs","environmentId","EnvironmentType","dev","qa","CarePatientSidebarComponent_button_2_Template","CarePatientSidebarComponent_div_3_Template","CarePatientSidebarComponent_div_4_Template","listDefinition","_r20","cancelPatientsLoadingProcess","cohort_r22","cohortID","cohortName","_r24","onClinicalProgramChange","CarePatientsComponent_div_14_option_6_Template","clinicalProgramFormControl","filteredDiseaseCohortDefinitions","columnsSettingsModal","CarePatientsComponent_ng_container_15_coach_icon_1_Template","setAWVPatientsStatusURLParams","AwvWorkflowStatusForPatientListDisplay","ReadyToSchedule","CallBackLater","ReadyToRemind","ReadyToSelfReport","CarePatientsComponent_ng_container_16_div_1_Template","showAWVButtons","selectedPatientId","updateSecondaryColumnApi","externalColumnDefs","AG_GRID_LOCALE_CARE","ctx_r44","_r47","ctx_r49","_r55","facesheetVersionModal","facesheetVersionType","CarePatientsComponent_ng_container_25_button_1_coach_loading_indicator_1_Template","getSelectedPatients","_r58","CarePatientsComponent_ng_container_25_button_2_coach_loading_indicator_1_Template","CarePatientsComponent_ng_container_25_button_1_Template","CarePatientsComponent_ng_container_25_button_2_Template","onExportCSVClick","_r66","ctx_r65","onFacesheetExportClick","CarePatientsComponent_ng_container_28_button_1_coach_icon_1_Template","CarePatientsComponent_ng_container_28_button_1_coach_loading_indicator_2_Template","ctx_r61","_r69","onFacesheetPrintClick","CarePatientsComponent_ng_container_28_button_2_coach_loading_indicator_1_Template","ctx_r62","CarePatientsComponent_ng_container_28_button_1_Template","CarePatientsComponent_ng_container_28_button_2_Template","_r71","ctx_r70","openBulkInvite","disableBulkInviteButton","ctx_r72","closeModalOnBackgroundClick","closeBulkInviteModal","inviteList","ctx_r77","selectedPresetIsChronicConditions","EdUtilization","secondaryColumnApi","_r82","ctx_r81","facesheetExport","CarePatientsComponent_ng_container_32_button_16_coach_loading_indicator_1_Template","_r85","CarePatientsComponent_ng_container_32_button_17_coach_loading_indicator_1_Template","ctx_r79","_r87","ctx_r86","facesheetVersionExpanded","ctx_r89","CarePatientsComponent_ng_container_32_button_16_Template","CarePatientsComponent_ng_container_32_button_17_Template","CarePatientsComponent","_patientService","errorHandlerService","filterDataService","carePatientsFeature","facesheetUIUpdates","FacesheetUIUpdatesFlag","pageNum","isProcessingBool","wpFirstBookmark","wpLastBookmark","trackFirstBookmark","trackLastBookmark","sortValue","newMessage","senderType","senderId","messageText","pictureUrl","videoUrl","fileUrl","bulkInviteModal","activePatients","disableBroadcastButton","BehaviorSubject","rowSelection","patientIds","externalSelectedList","fileUploadingStatusOversizeBool","fileUploadingStatusBool","faPaperclip","faPaperPlane","messageMaxLength","diseaseCohortDefinitions","filterAppliedBool","_refreshing","_loadedWpPatients","_nextWpPatientIndex","_loadedAllWpPatients","currentColumnDefs","datesCleared","AWVOpportunitiesId","loadingMsg","columnOptions","fieldSorter","fields","dir","valA","valB","n","refreshPatientsListAndApplyPreset","requestedPreset","requestedPresetFilterTitle","carePatientsFiltersComponent","selectedPresetItem","filterChange","getDiseaseCohortData","showLoadingOverlay","resetPatientData","getAwvPatients","hideOverlay","showNoRowsOverlay","allPatients","allPatientsStore","getCorrespondingPatients","getNextWpPatient","wpPatients","getWellpepperPatients","res","isAlertsOrMessagesFilter","isVisible","cohortId","COPD","Hypertension","HeartFailure","getEdUtilizationPatients","Chf","ClinicalProgramHeartFailure","ClinicalProgramCOPD","Diabetes","ClinicalProgramHypertension","getCohortPatients","diseaseCohortNameFromTrackApi","HccTop50","getHccVipCohortPatients","CareManagementCopd","CareManagementHeartFailure","CareManagementHypertension","getCareManagementCohortPatients","AwvSchedule","getIheAwvSchedulePatients","getCarePatientData","AwvFiles","getIHEPatients","AwvBilling","getIHEBillingPatients","getPatients","apiParams","page","paginationGoToPage","presetName","ihePatients","getTrackIHEListPatients","warn","fromIheVisit","getTrackIHEBillingListPatients","fromIheBilling","diseaseCohorts","convertDiseaseCohortIdToName","diseaseCohortIds","patientDataByCareId","carePatients","trackPatients","wpapi","getTrackPatients","carePatientsById","getChPatIdAndTierIdFromCarePatient","trackPatientsById","cp","tPat","riskProbability","probability","diseaseCohortIDs","fromTrackAndCare","assignment","currentRiskLevel","predictedRiskLevel","weight","comps","getCompletionActivity","alertComp","alertDate","reportingDate","alert3lbBound","subDays","lastDaysComps","c","lowestWeight","gain","tp","patientsDataExtender","requiredPatientFields","filterPatients","isCareOrchFeatureFlagAndComponents","trackAwvPatients","fromAwvAndCare","getAwvPatientsStatusFromQueryParams","cohortSecondName","dc","cohortPatients","getTrackCohortPatients","fromCohortPatient","selectedCohort","ClinicalProgramPresetMap","linkId","getCareManagementCohort","carePatientInfo","chronicConditionList","fromCareManagementPatient","handleError","columnsMinMax","MAX_VALUE","MIN_VALUE","getTrackHccVipCohort","getTrackIHEAWVScheduleListPatients","fromIHEAWVSchedule","edPatients","getTrackEDUtilizationPatients","fromEdUtilizationPatient","lastLogin","lastActivityAt","selectedClinicalProgramName","showCareManagementPreset","aWVPatientsStatus","isArray","getAwvPatientsStatusOnFilterChange","getPresetKeyForAwvButton","awvPatientsStatus","AwvOpportunitiesReadyToRemind","AwvOpportunitiesReadyToSchedule","AwvOpportunitiesReadyToSelfReport","SmsOutreachProgram","patientSidebar","newAWVPatientsStatus","isAWVStatusChanged","resetColumns","dontStoreName","markForCheck","sortModel","newColumnDefs","columnDefinition","csvAddition","additionalColumns","additionalGridColumns","setColumnDefs","PatientList","TimeLine","PHIAccess","AWVWorklist","removeFilterModelFromLocalStorage","clonedPatients","PatientSideBar","clickedElement","getAttribute","csvAdditionKeys","getCsvAdditionalColumns","fieldSettings","addPatientColumns","dodValue","dodCellRenderer","current_MBI","updatedPatient","PacNavigatorProgram","getModel","setData","force","columnEverythingChanged","removeColumnSettingsFromLocalStorage","autoSizeColumns","allColumnIds","sendAWVPatientStatusLinkClickedEvent","queryParamsHandling","i14","i15","i16","i17","i18","i19","i20","CarePatientsComponent_div_10_Template","CarePatientsComponent_small_11_Template","CarePatientsComponent_button_12_Template","CarePatientsComponent_div_14_Template","CarePatientsComponent_ng_container_15_Template","CarePatientsComponent_ng_container_16_Template","CarePatientsComponent_coach_care_patient_sidebar_17_Template","CarePatientsComponent_div_18_Template","CarePatientsComponent_div_19_Template","CarePatientsComponent_div_20_Template","CarePatientsComponent_ng_container_25_Template","CarePatientsComponent_button_27_Template","CarePatientsComponent_ng_container_28_Template","CarePatientsComponent_button_29_Template","CarePatientsComponent_ng_container_30_Template","CarePatientsComponent_ng_container_31_Template","CarePatientsComponent_ng_container_32_Template","emitAction","PatientActionDropdownComponent_ng_container_2_div_1_span_2_Template","PatientActionDropdownComponent_ng_container_2_div_1_span_3_Template","hideTabsAndDisableTimeTracking","PatientActionDropdownComponent_ng_container_2_div_1_Template","PatientActionDropdownComponent_ng_container_3_div_1_Template","_r12","printPdfClick","detailedPdf","loadingPdf","NAVIGATION_PORTAL_DATA","PatientActionDropdownComponent","newItemEvent","modalTest","emitter","openTrackPatientFacesheetPdf","CHPatID","postTrackPatientFacesheetPdf","PatientActionDropdownComponent_ng_container_2_Template","PatientActionDropdownComponent_ng_container_3_Template","PatientActionDropdownComponent_div_4_Template","DXCodeFormatPipe","dx","Yjl","pure","item_r16","interactionname","PatientFacesheetDragDropComponent_li_9_li_5_a_15_div_4_li_4_Template","diag_r9","interactions","diagIdx_r10","groupIdx_r7","showTooltip","hideTooltip","PatientFacesheetDragDropComponent_li_9_li_5_a_15_div_4_Template","tooltipInteractions","showTooltipClosed","hideTooltipClosed","markAsClosed","PatientFacesheetDragDropComponent_li_9_li_5_div_5_Template","showTooltipNotApplicable","hideTooltipNotApplicable","markAsNotApplicable","PatientFacesheetDragDropComponent_li_9_li_5_div_8_Template","PatientFacesheetDragDropComponent_li_9_li_5_a_15_Template","tooltipMarkAsClosed","tooltipMarkAsNotApplicable","desc","isChronic","providername","dos","PatientFacesheetDragDropComponent_li_9_li_5_Template","group_r6","groupname","diagnoses","diag_r38","undoClosed","PatientFacesheetDragDropComponent_ul_19_li_6_Template","closedViaAssessment","diag_r42","undoNotApplicable","PatientFacesheetDragDropComponent_ul_20_li_6_Template","closedNotApplicable","diag_r47","PatientFacesheetDragDropComponent_li_22_li_5_Template","group_r45","diag_r50","PatientFacesheetDragDropComponent_li_24_li_5_Template","group_r48","DxStatusID","MarkedNotApplicableViaAssessment","MarkedClosedViaAssessment","ClosedByClaim","ClosedByHierarchy","PatientFacesheetDragDropComponent","_patient","loadFacesheet","_facesheetService","openGaps","closedByClaim","closedByHierarchy","loadFacesheetDebounced","debounce","item","disabled","dxCode","dxStatusID","undo","errors","groupIdx","diagIdx","forkJoin","chronicCondition","acuteCondition","updateFacesheet","facesheet","setNoneStatus","showNoneStatus","mergeArrays","arr1","arr2","existingIndex","groupid","cleanupTooltips","input","item2","item3","getExtendedDiagnosis","extendedDiagnosis","extendedDiag","facesheetChronic","facesheetAcute","chronicOpen","diseasegroup","acuteOpen","chronicClosedByClaim","acuteClosedByClaim","chronicClosedByHierarchy","acuteClosedByHierarchy","chronicClosedGroup","obj","dg","acuteClosedGroup","chronicNotApplicableGroup","acuteNotApplicableGroup","PatientFacesheetDragDropComponent_li_9_Template","PatientFacesheetDragDropComponent_div_18_Template","PatientFacesheetDragDropComponent_ul_19_Template","PatientFacesheetDragDropComponent_ul_20_Template","PatientFacesheetDragDropComponent_li_22_Template","PatientFacesheetDragDropComponent_li_24_Template","hccCode_r16","code","opportunity_r12","dateOfService","hccCode_r23","childOpportunity_r18","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_38_ng_container_1_ng_container_6_div_9_Template","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_38_ng_container_1_ng_container_6_div_12_Template","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_38_ng_container_1_ng_container_6_div_16_Template","childOpportunities","c_idx_r19","hccDescription","hccCodes","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_38_ng_container_1_div_5_Template","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_38_ng_container_1_ng_container_6_Template","opportunity_r26","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_38_ng_container_1_Template","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_38_div_2_Template","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_38_ng_container_3_Template","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_38_ng_container_4_Template","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_38_ng_container_5_Template","chronicOpportunities","diseaseInteractions","showPotentialOpportunities","showClosedGaps","PatientChronicCodingOpportunitiesComponent_div_0_span_13_Template","PatientChronicCodingOpportunitiesComponent_div_0_div_20_Template","PatientChronicCodingOpportunitiesComponent_div_0_span_26_Template","PatientChronicCodingOpportunitiesComponent_div_0_div_36_Template","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_37_Template","PatientChronicCodingOpportunitiesComponent_div_0_ng_container_38_Template","getLastYearPercentageBar","getThisYearPercentageBar","FacesheetV28","PatientChronicCodingOpportunitiesComponent","progress","showMoreOpportunities","opportunities","loadHealthData","reqChronicOpportunities","getTrackPatientFacesheet","reqAcuteOpportunities","hccPatient","co","isInteraction","PatientChronicCodingOpportunitiesComponent_div_0_Template","getCodeAndProviderNameAsString","awvDetails","procCodeList","PatientHealthMaintenanceComponent_div_0_div_18_span_1_Template","maintenance","awvLastVisit","acpDetails","PatientHealthMaintenanceComponent_div_0_div_27_span_1_Template","acpLastVisit","ccmDetails","PatientHealthMaintenanceComponent_div_0_coach_icon_11_Template","PatientHealthMaintenanceComponent_div_0_div_18_Template","PatientHealthMaintenanceComponent_div_0_div_27_Template","PatientHealthMaintenanceComponent_div_0_span_37_Template","PatientHealthMaintenanceComponent_div_0_div_40_Template","getDaysDifference","getDateDifference","ccmLastVisit","ccmEligible","PatientHealthMaintenanceComponent","maintenanceDetailsByDateDesc","acpCategory","awvCategory","ccmCategory","OnDataReceived","getDetails","reqHealthMaintenance","reqHealthMaintenanceDetails","lastDate","diffDuration","years","months","days","getFormattedName","segments","toTitleCase","txt","PatientHealthMaintenanceComponent_div_0_Template","costUtilization","edLastVisitDxCode","edLastVisitDxDesc","edLastVisitFacility","edLastVisitDOS","ipLastVisitDxCode","ipLastVisitDxDesc","ipLastVisitFacility","ipLastVisitDOS","postAcute","pacLastVisitDxCode","pacLastVisitDxDesc","pacLastVisitFacility","pacLastVisitDOS","PatientUtilizationComponent_div_0_div_18_Template","PatientUtilizationComponent_div_0_span_19_Template","PatientUtilizationComponent_div_0_div_29_Template","PatientUtilizationComponent_div_0_span_30_Template","PatientUtilizationComponent_div_0_ng_container_32_Template","PatientUtilizationComponent_div_0_ng_container_33_Template","PatientUtilizationComponent_div_0_div_37_Template","PatientUtilizationComponent_div_0_span_38_Template","edVisits","inpatientVisits","isNumber","PatientUtilizationComponent","isLoaded","reqFacesheet","reqCostUtilization","PatientUtilizationComponent_div_0_Template","hccCode_r5","opportunity_r2","PatientAcuteCodingOpportunitiesComponent_div_0_ng_container_6_div_5_Template","PatientAcuteCodingOpportunitiesComponent_div_0_ng_container_6_Template","acuteOpportunities","PatientAcuteCodingOpportunitiesComponent","PatientAcuteCodingOpportunitiesComponent_div_0_Template","qualityData","mammogramLastVisitPROCCode","mammogramLastVisitFacility","PatientQualityOpportunitiesComponent_div_0_tr_9_span_9_Template","PatientQualityOpportunitiesComponent_div_0_tr_9_span_10_Template","mammogram_timePeriod","mammogram","colonoscopyLastVisitPROCCode","colonoscopyLastVisitFacility","fluLastVisitPROCCode","fluLastVisitFacility","pneumoniaLastVisitPROCCode","pneumoniaLastVisitFacility","PatientQualityOpportunitiesComponent_div_0_tr_9_Template","PatientQualityOpportunitiesComponent_div_0_span_19_Template","PatientQualityOpportunitiesComponent_div_0_span_20_Template","PatientQualityOpportunitiesComponent_div_0_span_32_Template","PatientQualityOpportunitiesComponent_div_0_span_33_Template","PatientQualityOpportunitiesComponent_div_0_span_45_Template","PatientQualityOpportunitiesComponent_div_0_span_46_Template","colonoscopy_timePeriod","colonoscopy","fluVac_timePeriod","fluVac","pneumococcalVac_timePeriod","pneumococcalVac","PatientQualityOpportunitiesComponent","getPreventiveData","PatientQualityOpportunitiesComponent_div_0_Template","details_r17","PatientCareGapsComponent_ng_container_0_div_1_ul_36_li_1_Template","vaccine_r18","receivedDate","PatientCareGapsComponent_ng_container_0_div_1_li_45_span_5_Template","PatientCareGapsComponent_ng_container_0_div_1_li_45_span_6_Template","code_r25","code_r29","PatientCareGapsComponent_ng_container_0_div_1_ng_container_92_ng_container_17_div_1_li_14_Template","opportunityChild_r27","hccId","PatientCareGapsComponent_ng_container_0_div_1_ng_container_92_ng_container_17_div_1_Template","opportunity_r22","PatientCareGapsComponent_ng_container_0_div_1_ng_container_92_li_16_Template","PatientCareGapsComponent_ng_container_0_div_1_ng_container_92_ng_container_17_Template","interaction_r31","code_r36","PatientCareGapsComponent_ng_container_0_div_1_ng_container_109_div_15_li_2_Template","opportunity_r32","code_r41","PatientCareGapsComponent_ng_container_0_div_1_ng_container_109_ng_container_16_div_1_li_14_Template","opportunityChild_r39","PatientCareGapsComponent_ng_container_0_div_1_ng_container_109_ng_container_16_div_1_Template","PatientCareGapsComponent_ng_container_0_div_1_ng_container_109_div_15_Template","PatientCareGapsComponent_ng_container_0_div_1_ng_container_109_ng_container_16_Template","formatAcuteOpportunity","PatientCareGapsComponent_ng_container_0_div_1_span_14_Template","PatientCareGapsComponent_ng_container_0_div_1_span_15_Template","PatientCareGapsComponent_ng_container_0_div_1_ul_16_Template","PatientCareGapsComponent_ng_container_0_div_1_span_22_Template","PatientCareGapsComponent_ng_container_0_div_1_span_23_Template","PatientCareGapsComponent_ng_container_0_div_1_ul_24_Template","PatientCareGapsComponent_ng_container_0_div_1_span_34_Template","PatientCareGapsComponent_ng_container_0_div_1_span_35_Template","PatientCareGapsComponent_ng_container_0_div_1_ul_36_Template","PatientCareGapsComponent_ng_container_0_div_1_li_45_Template","PatientCareGapsComponent_ng_container_0_div_1_ng_container_92_Template","PatientCareGapsComponent_ng_container_0_div_1_div_93_Template","PatientCareGapsComponent_ng_container_0_div_1_ng_container_109_Template","currentVaccinations","totalCost","chronicInteractions","totalChronicWeight","PatientCareGapsComponent_ng_container_0_div_1_Template","PatientCareGapsComponent_div_1_ng_container_2_coach_patient_acute_coding_opportunities_1_Template","PatientCareGapsComponent_div_1_coach_patient_chronic_coding_opportunities_1_Template","PatientCareGapsComponent_div_1_ng_container_2_Template","PatientCareGapsComponent_div_1_coach_patient_health_maintenance_3_Template","PatientCareGapsComponent_div_1_coach_patient_quality_opportunities_4_Template","PatientCareGapsComponent_div_1_coach_patient_utilization_5_Template","PatientCareGapsComponent_div_1_footer_6_Template","PatientCareGapsComponent_div_1_footer_7_Template","PatientCareGapsComponent","preventive","maintenanceDetails","showDetails","FacesheetUIUpdatesFeatureFlag","filterCodingOpportunties","filterInteractions","prev","reqPreventive","PatientCareGaps","PatientDetail","acuteOpportunity","PatientCareGapsComponent_ng_container_0_Template","PatientCareGapsComponent_div_1_Template","PatientTimelineService","getTimelineItems","getAll","item_r1","claimFromDate","ChartTimelineComponent_ng_container_8_tr_1_Template","newMonthSeparator","renderingName","renderingNPI","primaryDx","primaryDxDesc","procedureCode","procedureDesc","ChartTimelineComponent","timlineItemsSub","patientTimelineService","currentMonth","previousMonth","timelineItems","timelineItem","datePipe","Dashboard","DatePipe","ChartTimelineComponent_ng_container_8_Template","dayClicked","handleEvent","viewDate","events","refresh","activeDayIsOpen","line_r10","question","answer","ChartSurveysComponent_ng_container_11_div_3_div_12_Template","sr_r7","ordinal","i_r8","selectedDay","lines","ChartSurveysComponent_ng_container_11_div_3_Template","ChartSurveysComponent_ng_container_11_div_4_Template","copyMessage","closeSurvey","cssBottom","surveys","showEmptyDayMessage","ChartSurveysComponent","ref","view","CalendarView","Month","showModalSurvey","clipboardText","limit","skip","primary","secondary","where","momentViewDate","startDate","endDate","endOf","escape","responseSurvey","getSurvey","responses","meta","newSurvey","pages","items","pre","cur","qid","numberOfLines","acc","start","selBox","position","left","top","opacity","focus","removeChild","setView","previous","getData","viewDateHeader","reportsData","getSurveyResponses","surveyTypeId","surveyType","startOfDay","end","endOfDay","ChartSurveysComponent_mwl_calendar_month_view_10_Template","ChartSurveysComponent_ng_container_11_Template","detail_r5","content","PatientActivityComponent_ng_container_0_div_1_div_10_Template","activity_r2","PatientActivityComponent_ng_container_0_div_1_Template","PatientActivityComponent","PatientActivityComponent_ng_container_0_Template","unhandled","alert_r6","diastolic","bloodSugar","bloodSugarUnits","weightUnits","stopPropagation","deselectAlert","faPhone","faSms","faUserMd","faCheckSquare","faTimesCircle","_r32","commentMaxLength","_r36","openModalCopyToClipBoard","dismissAlert","selectAlert","PatientAlertsComponent_div_1_div_1_div_11_Template","PatientAlertsComponent_div_1_div_1_div_12_Template","PatientAlertsComponent_div_1_div_1_div_13_Template","PatientAlertsComponent_div_1_div_1_div_14_Template","PatientAlertsComponent_div_1_div_1_div_15_Template","PatientAlertsComponent_div_1_div_1_div_16_Template","updatedAt","selectedAlert","PatientAlertsComponent_div_1_div_1_Template","handled","alert_r43","dismissedByNameForAlert","_r57","_r61","_r67","ctx_r66","PatientAlertsComponent_div_3_div_1_div_11_Template","PatientAlertsComponent_div_3_div_1_div_12_Template","PatientAlertsComponent_div_3_div_1_div_13_Template","PatientAlertsComponent_div_3_div_1_p_15_Template","PatientAlertsComponent_div_3_div_1_div_19_Template","PatientAlertsComponent_div_3_div_1_div_20_Template","PatientAlertsComponent_div_3_div_1_div_21_Template","inactiveByFullName","PatientAlertsComponent_div_3_div_1_Template","ctx_r69","copyToClipBoardAlert","PatientAlertsComponent_ng_container_4_p_28_span_2_Template","PatientAlertsComponent_ng_container_4_p_28_span_3_Template","PatientAlertsComponent_ng_container_4_p_28_span_4_Template","PatientAlertsComponent_ng_container_4_p_28_span_5_Template","PatientAlertsComponent_ng_container_4_p_28_span_6_Template","PatientAlertsComponent_ng_container_4_p_15_Template","PatientAlertsComponent_ng_container_4_p_23_Template","PatientAlertsComponent_ng_container_4_p_24_Template","PatientAlertsComponent_ng_container_4_p_25_Template","PatientAlertsComponent_ng_container_4_p_26_Template","PatientAlertsComponent_ng_container_4_p_27_Template","PatientAlertsComponent_ng_container_4_p_28_Template","PatientAlertsComponent_ng_container_4_p_29_Template","copyToClipBoardText","PatientAlertsComponent","actionsList","handoff","reviewed","ignore","Events","AlertManagement","PatientAlertsComponent_div_0_Template","PatientAlertsComponent_div_1_Template","PatientAlertsComponent_div_2_Template","PatientAlertsComponent_div_3_Template","PatientAlertsComponent_ng_container_4_Template","goal","PatientAlertComponent","userGoal","PatientAlertComponent_div_0_Template","onTaskUpdated","t_r14","t_r17","t_r20","_r25","t_r23","CarePatientCareplanComponent_div_0_div_1_div_12_div_1_div_15_coach_careplan_patient_task_2_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_1_div_15_coach_careplan_patient_task_4_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_1_div_15_coach_careplan_patient_task_6_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_1_div_15_coach_careplan_patient_task_8_Template","tasksForSwimlane","tasks_r9","eoc_r3","CarePatientCareplanComponent_div_0_div_1_div_12_div_1_div_15_Template","activeTaskCount","m_r30","assignedTasks","t_r45","_r50","t_r48","_r53","t_r51","t_r54","_r59","t_r57","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_12_coach_careplan_patient_task_2_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_12_coach_careplan_patient_task_3_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_12_coach_careplan_patient_task_5_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_12_coach_careplan_patient_task_7_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_12_coach_careplan_patient_task_9_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_15_coach_careplan_patient_task_2_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_15_coach_careplan_patient_task_3_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_15_coach_careplan_patient_task_5_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_15_coach_careplan_patient_task_7_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_15_coach_careplan_patient_task_9_Template","templateTasks","moduleCheckClicked","CarePatientCareplanComponent_div_0_div_1_div_12_div_2__svg_svg_5_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_span_8_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_10_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_11_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_12_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_13_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_14_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_div_15_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_1_Template","CarePatientCareplanComponent_div_0_div_1_div_12_div_2_Template","eoc_idx_r4","expandCollapseAll","CarePatientCareplanComponent_div_0_div_1_div_12_Template","vm","episodesOfCare","CarePatientCareplanComponent_div_0_div_1_Template","t_r86","getTaskTypeText","CarePatientCareplanComponent_ng_container_1_div_1_div_7_div_3_Template","x_r80","tasksToAssign","t_r89","CarePatientCareplanComponent_ng_container_1_div_1_div_8_div_3_Template","tasksToActivate","t_r92","ctx_r91","CarePatientCareplanComponent_ng_container_1_div_1_div_9_div_3_Template","tasksNotToBeDeactivated","t_r95","ctx_r94","CarePatientCareplanComponent_ng_container_1_div_1_div_10_div_3_Template","tasksToBeDeactivated","CarePatientCareplanComponent_ng_container_1_div_1_div_7_Template","CarePatientCareplanComponent_ng_container_1_div_1_div_8_Template","CarePatientCareplanComponent_ng_container_1_div_1_div_9_Template","CarePatientCareplanComponent_ng_container_1_div_1_div_10_Template","_r98","ctx_r97","moduleActivateDeactivateInfo","activateOrDeactivateModule","operation","module","CarePatientCareplanComponent_ng_container_1_div_1_Template","CarePatientCareplanComponent","CarePlan","getPatientTasks","eoc","parentEpisodeOfCare","getProtocol","pt","tt","protocolTaskId","tvm","swimlane","getSwimlaneForTask","count","parentProtocol","templateTasksForModule","updateCalculatedValues","getModuleActivateDeactivateInfo","activate","episodeOfCareId","expand","ruleText","relativeSchedule","recurRule","mod","tasksToLeaveAlone","stateHistory","sh","findAssignedTaskByProtocolTaskId","isTaskActiveInAnotherModule","j","k","l","at","subType","copy","CarePatientCareplanComponent_div_0_Template","CarePatientCareplanComponent_ng_container_1_Template","BaseColumnSeries","XYSeries","defineProperty","enumerable","configurable","writable","_makeGraphics","listTemplate","dataItem","makeColumn","_makeFieldNames","xAxis","yAxis","categoryAxis","valueAxis","isType","_xOpenField","_xField","_yOpenField","_yField","_prepareChildren","len","dataItems","startIndex","endIndex","inited","_createGraphics","_updateChildren","chart","_ph","plotContainer","height","_pw","baseAxis","columnsTemplate","isDirty","clusterCount","$array","series","stacked","xRenderer","yRenderer","cellStartLocation","cellEndLocation","cellLocationX0","cellLocationX1","cellLocationY0","cellLocationY1","_aLocationX0","_aLocationX1","_aLocationY0","_aLocationY1","_axesDirty","_valuesDirty","_stackDirty","_sizeDirty","_toggleColumn","_updateGraphics","_skipped","updateLegendMarker","graphics","_setDataItem","legendDataItem","markerRectangle","ds","states","lookup","visualSettings","setting","graphicsArray","dispose","setRaw","axisRanges","each","axisRange","container","rangeGraphics","setPrivate","children","createAxisRange","axisDataItem","previousDataItem","xField","yField","valueX","valueY","xOpenField","yOpenField","locationX","locationY","openLocationX","openLocationY","xStart","xEnd","yStart","yEnd","vcy","vcx","fitW","fitH","startLocation","endLocation","Percent","getDataItemPositionX","getDataItemPositionY","stackToItemY","basePosition","stackToItemX","_updateSeriesGraphics","$type","_applyGraphicsStates","maxHeight","ptl","getPoint","pbr","tooltipPoint","point","_y","abs","_handleDataSetChange","_dataItems","dropFromOpen","riseFromOpen","dropFromPrevious","riseFromPrevious","previousClose","disposeDataItem","removeValue","list","getPrivate","hideDataItem","duration","_super","create","__awaiter","promises","visible","bullets","bullet","showDataItem","show","lastDataItem","_getTooltipTarget","classNames","ColumnSeries","ListTemplate","Template","new","RoundedRectangle","_new","_root","themeTags","$utils","mainContainer","make","_processAxisRange","phase_r3","period","units","stoppedBy","finishDate","getCurrentDate","SmsStandardScheduleComponent_div_15_div_1_div_14_p_5_Template","SmsStandardScheduleComponent_div_15_div_1_div_14_p_6_Template","SmsStandardScheduleComponent_div_15_div_1_div_14_p_7_Template","isStopRequested","stoppedAt","SmsStandardScheduleComponent_div_15_div_1_div_15_p_5_Template","SmsStandardScheduleComponent_div_15_div_1_div_15_p_6_Template","SmsStandardScheduleComponent_div_15_div_1_div_15_p_7_Template","SmsStandardScheduleComponent_div_15_div_1_p_7_Template","SmsStandardScheduleComponent_div_15_div_1_p_9_Template","SmsStandardScheduleComponent_div_15_div_1_p_10_Template","SmsStandardScheduleComponent_div_15_div_1_p_11_Template","SmsStandardScheduleComponent_div_15_div_1_p_12_Template","SmsStandardScheduleComponent_div_15_div_1_p_13_Template","SmsStandardScheduleComponent_div_15_div_1_div_14_Template","SmsStandardScheduleComponent_div_15_div_1_div_15_Template","SmsStandardScheduleComponent_div_15_div_1_div_16_Template","i_r4","frequencyDescription","isLast_r5","SmsStandardScheduleComponent_div_15_div_1_Template","_r31","stopRequest","SmsStandardScheduleComponent","onCancel","isStopped","scheduleStopped","phases","phase","switchToCustom","twilioTask","stopSchedule","reload","stopTwilioFlowSchedule","SmsStandardScheduleComponent_div_15_Template","SmsStandardScheduleComponent_p_17_Template","SmsStandardScheduleComponent_p_18_Template","phase_r8","CustomScheduleComponent_div_15_div_1_div_1_p_6_Template","CustomScheduleComponent_div_15_div_1_div_1_p_8_Template","CustomScheduleComponent_div_15_div_1_div_1_p_13_Template","CustomScheduleComponent_div_15_div_1_div_1_p_14_Template","i_r9","CustomScheduleComponent_div_15_div_1_div_1_Template","CustomScheduleComponent_div_15_div_1_div_2_Template","CustomScheduleComponent_div_15_div_1_Template","phase_r20","stoppedbyUser","stopDate","CustomScheduleComponent_div_16_div_1_p_7_Template","CustomScheduleComponent_div_16_div_1_p_9_Template","CustomScheduleComponent_div_16_div_1_p_10_Template","CustomScheduleComponent_div_16_div_1_p_16_Template","CustomScheduleComponent_div_16_div_1_p_17_Template","CustomScheduleComponent_div_16_div_1_div_18_Template","isLast_r22","i_r21","CustomScheduleComponent_div_16_div_1_Template","adaptivephases","customSchedulesettings","stratedBy","CustomScheduleComponent_div_17_div_9_Template","CustomScheduleComponent_div_17_div_10_Template","frequency","frequency_r37","greyDaysOfWeek","day_r38","selectedFrequency","onFrequencyChange","CustomScheduleComponent_div_20_option_5_Template","CustomScheduleComponent_div_20_div_9_Template","customPhases","onTextContent","daysOfWeek","_r43","customScheduleSelection","CustomScheduleComponent","cancelClicked","customInviteStatus","showCustomScheduleSelection","Monthly","Weekdays","MWF","Weekly","Biweekly","getcustomPhases","onClick","isScheduleCustom","schedule","isCustom","isScheduleActive","frequencies","twilioInfo","scheduleDefinition","frequencyKeyMap","daysToGrey","isAdaptive","isScheduleStopped","createTwilioFlowSchedule","cancel","CustomScheduleComponent_div_15_Template","CustomScheduleComponent_div_16_Template","CustomScheduleComponent_div_17_Template","CustomScheduleComponent_div_20_Template","CustomScheduleComponent_div_21_Template","CustomScheduleComponent_p_22_Template","CustomScheduleComponent_p_23_Template","alert_r11","PatientSummaryComponent_tr_40_div_16_div_4_span_4_Template","PatientSummaryComponent_tr_40_div_16_div_4_span_5_Template","PatientSummaryComponent_tr_40_div_16_div_4_span_6_Template","PatientSummaryComponent_tr_40_div_16_div_4_Template","PatientSummaryComponent_tr_40_div_16_Template","isDateInRange","report_r9","bpChartSettings","tableDisplayDays","goal_systolic_bottom","goal_systolic_top","goal_diastolic_bottom","goal_diastolic_top","pulse","connectAlertWithCompletion","alert_r21","PatientSummaryComponent_tr_81_div_13_div_4_span_4_Template","PatientSummaryComponent_tr_81_div_13_div_4_span_5_Template","PatientSummaryComponent_tr_81_div_13_div_4_span_6_Template","PatientSummaryComponent_tr_81_div_13_div_4_Template","PatientSummaryComponent_tr_81_div_13_Template","report_r19","sugarChartSettings","goal_sugar_bottom","sugar","goal_sugar_top","lastAte","lastAteUnits","alert_r31","PatientSummaryComponent_tr_121_div_11_div_4_span_4_Template","PatientSummaryComponent_tr_121_div_11_div_4_span_5_Template","PatientSummaryComponent_tr_121_div_11_div_4_span_6_Template","PatientSummaryComponent_tr_121_div_11_div_4_Template","PatientSummaryComponent_tr_121_div_11_Template","report_r29","weightChartSettings","goal_weight_bottom","goal_weight_top","toggleStandardSchedule","report_r49","msg","report_r50","_r52","customScheduleSettings","smsChartSettingsCOPD","scheduleSettings","PatientSummaryComponent_div_122_div_1_div_53_p_5_Template","currentStep","totalSteps","listToChartToggle","chartRange","PatientSummaryComponent_div_122_div_1_div_21_Template","PatientSummaryComponent_div_122_div_1_tr_37_Template","PatientSummaryComponent_div_122_div_1_tr_50_Template","PatientSummaryComponent_div_122_div_1_div_52_Template","PatientSummaryComponent_div_122_div_1_div_53_Template","PatientSummaryComponent_div_122_div_1_div_54_Template","faChartLine","faList","isScheduleAdaptive","fourWeeksReports","sixMonthReports","report_r72","report_r73","_r75","ctx_r67","smsChartSettingsHF","PatientSummaryComponent_div_122_div_2_div_53_p_3_Template","_r78","PatientSummaryComponent_div_122_div_2_div_21_Template","PatientSummaryComponent_div_122_div_2_tr_37_Template","PatientSummaryComponent_div_122_div_2_tr_50_Template","PatientSummaryComponent_div_122_div_2_div_52_Template","PatientSummaryComponent_div_122_div_2_div_53_Template","PatientSummaryComponent_div_122_div_2_div_54_Template","stoppedDate","PatientSummaryComponent_div_122_div_1_Template","PatientSummaryComponent_div_122_div_2_Template","enrolledPrograms","hasCOPD","hasHF","_r88","hideStandardSchedule","scheduleProgram","schedulePhases","_r90","handleCancel","Adaptivephases","stoppedByUser","PatientSummaryComponent","cdr","showStandardSchedule","showCustomSchedule","isMobile","programCompletions","msgCategories","OK","messageFromUser","trouble","createAlert","completions","chartType","am4core","am4themes_animated","COPDTask","getReport","HFTask","innerWidth","buildCharts","patientCompletions","patientTasks","renderChart","rangeLabel","PatientSummary","programTask","prepareCompletionsIntoChartColumns","create4WeeksSMSCOPDChart","create6MonthSMSCOPDChart","onResize","taskType","SMSCopdChartCompletion","dateLabel","msgCategory","chartObjectName","chartId","chartLabel","labels","includeGoals","getUserChartReports","chartDateReserve","createChart","chartObject","setupChartSettings","convertReportsData","reports","lastReport","firstReportCreatedAt","report","goal_effectiveOn","closingGoal","createChartLines","createBackgroundGoalLine","legend","am4charts","scrollbarX","dateFormatter","inputDateFormat","smsChartSettings","root","am5","setThemes","am5themes_animated","am5xy","panX","panY","wheelX","wheelY","layout","verticalLayout","behavior","lineY","xAxes","maxDeviation","baseInterval","timeUnit","renderer","tooltip","yAxes","centerX","makeSeries","backgroundColor","valueYField","valueXField","labelText","fill","setAll","hasOwnProperty","appear","cornerRadiusTL","cornerRadiusTR","dataByMonth","completionMonth","sixMonthsAgo","monthSum","numberFormatter","numberFormat","numericFields","orientation","forceHidden","categoryField","categoryXField","sequencedInterpolation","marginLeft","marginRight","tooltipText","tooltipY","sprite","interfaceColors","centerY","populateText","dateAxis","grid","minGridDistance","tooltipDateFormat","targetChartObj","dataFields","dateX","strokeWidth","getFillFromObject","background","stroke","circleBullet","circle","radius","fillOpacity","strokeOpacity","openValueY","effectiveOn","backgroundGoalLine","tensionX","hiddenInLegend","range","rangeDate","setDate","dataList","recordedAt","rangeTop","rangeBottom","bottom","extraColumns","alertToText","yes","no","hiddenElement","encodeURI","relatedObjects","hideCustomSchedule","getSMSScheduleReport","scheduleRevisions","currentReport","stoppedReport","currentPhase","stoppedPhase","getcustomScheduleSettings","catch","isCustomActive","previousAdaptiveReport","customReport","mapCustomFrequency","stoppedAdaptivePhase","hostBindings","PatientSummaryComponent_div_3_Template","PatientSummaryComponent_tr_40_Template","PatientSummaryComponent_div_44_Template","PatientSummaryComponent_tr_81_Template","PatientSummaryComponent_div_85_Template","PatientSummaryComponent_tr_121_Template","PatientSummaryComponent_div_122_Template","PatientSummaryComponent_coach_sms_standard_schedule_123_Template","PatientSummaryComponent_coach_custom_schedule_124_Template","displayIdentifier","professional_r14","SinglePatientInviteFormComponent_div_0_span_16_div_1_div_12_option_6_Template","protocolId_r21","procedure_r19","SinglePatientInviteFormComponent_div_0_span_16_div_1_div_13_ng_container_5_span_2_div_1_Template","SinglePatientInviteFormComponent_div_0_span_16_div_1_div_13_ng_container_5_span_2_Template","SinglePatientInviteFormComponent_div_0_span_16_div_1_div_13_p_4_Template","SinglePatientInviteFormComponent_div_0_span_16_div_1_div_13_ng_container_5_Template","SinglePatientInviteFormComponent_div_0_span_16_div_1_small_6_Template","SinglePatientInviteFormComponent_div_0_span_16_div_1_small_11_Template","SinglePatientInviteFormComponent_div_0_span_16_div_1_div_12_Template","SinglePatientInviteFormComponent_div_0_span_16_div_1_div_13_Template","SinglePatientInviteFormComponent_div_0_span_16_div_1_div_14_Template","isSMSInviteFlagEnabled","SinglePatientInviteFormComponent_div_0_span_16_div_3_coach_loading_indicator_4_Template","SinglePatientInviteFormComponent_div_0_span_16_div_3_span_5_Template","isProtocolSelected","SinglePatientInviteFormComponent_div_0_span_16_div_4_coach_loading_indicator_1_Template","invitationEligible","SinglePatientInviteFormComponent_div_0_span_16_div_1_Template","SinglePatientInviteFormComponent_div_0_span_16_div_3_Template","SinglePatientInviteFormComponent_div_0_span_16_div_4_Template","SinglePatientInviteFormComponent_div_0_span_14_Template","SinglePatientInviteFormComponent_div_0_span_15_Template","SinglePatientInviteFormComponent_div_0_span_16_Template","sendInvite","SinglePatientInviteFormComponent_div_1_div_8_span_4_Template","SinglePatientInviteFormComponent_div_1_div_8_span_5_Template","SinglePatientInviteFormComponent_div_1_div_9_coach_loading_indicator_1_Template","SinglePatientInviteFormComponent_div_1_div_6_Template","SinglePatientInviteFormComponent_div_1_div_8_Template","SinglePatientInviteFormComponent_div_1_div_9_Template","SinglePatientInviteFormComponent","SMSInviteFlag","isInvitationEligible","filterProcedureExtendedFields","getAvailableProceduresFromInvitations","identifier","fieldOptions","getTitle","inviteInfo","twiliotask","role","SinglePatientInviteFormComponent_div_0_Template","SinglePatientInviteFormComponent_div_1_Template","PatientEditFormComponent_ng_container_0_div_1_Template","PatientEditFormComponent_ng_container_0_small_27_Template","PatientEditFormComponent_ng_container_0_small_29_Template","PatientEditFormComponent_ng_container_0_small_33_Template","PatientEditFormComponent_ng_container_0_span_36_Template","PatientEditFormComponent_ng_container_0_span_37_Template","updatePatient","PatientEditFormComponent_ng_container_0_span_39_Template","PatientEditFormComponent_ng_container_0_span_40_Template","PatientEditFormComponent_ng_container_0_span_41_Template","PatientEditFormComponent_ng_container_0_span_42_Template","isFirstDigitValid","patientEditStatus","PatientEditFormComponent","smsIdentifierIndex","PatientEditFormComponent_ng_container_0_Template","newNotification","PatientRemindersComponent_ng_container_0_div_44_Template","PatientRemindersComponent_ng_container_0_div_45_Template","PatientRemindersComponent_ng_container_0_div_46_Template","PatientRemindersComponent_ng_container_0_textarea_50_Template","PatientRemindersComponent_ng_container_0_textarea_51_Template","PatientRemindersComponent_ng_container_0_span_54_Template","sendNotification","variableSubstitutionsAccordionIsOpen","domLayout","getPatientProfessionalNameAndOrgName","isNewNotificationValid","selectedNotification","PatientRemindersComponent_ng_container_1_span_5_Template","PatientRemindersComponent_ng_container_1_span_6_Template","PatientRemindersComponent_ng_container_1_span_7_Template","modalViewNotification","splitStringByLines","PatientRemindersComponent","HeaderCondensedService","manualRecordToLog","getNotificationsForPatient","resetReminderForm","openModal","closeSidebar","setSidebarStatus","organizationName","setRowData","sendManualLog","addmanualRecordForPatient","PatientRemindersComponent_ng_container_0_Template","PatientRemindersComponent_ng_container_1_Template","PatientAwvWorkflowComponent_div_1_coach_icon_5_Template","isInactiveStatus","PatientAwvWorkflowComponent_div_2_coach_patient_last_awv_details_4_Template","PatientAwvWorkflowComponent_div_2_coach_patient_awv_enrol_5_Template","PatientAwvWorkflowComponent_div_2_coach_patient_awv_scheduling_6_Template","PatientAwvWorkflowComponent_div_2_coach_patient_awv_reminder_7_Template","PatientAwvWorkflowComponent_div_2_coach_patient_awv_removed_8_Template","PatientAwvWorkflowComponent_div_2_coach_patient_awv_completed_9_Template","PatientAwvWorkflowComponent_div_2_coach_patient_awv_deferred_10_Template","PatientAwvWorkflowComponent_div_2_div_11_Template","PatientAwvWorkflowComponent_div_2_coach_patient_awv_history_13_Template","PatientAwvWorkflowComponent","PatientAwvWorkflowComponent_div_1_Template","PatientAwvWorkflowComponent_div_2_Template","openTabs","PatientWorklistsComponent_ng_container_10_coach_patient_ihe_worklist_1_Template","IHECohortComponentId","PatientWorklistsComponent","FacesheetAccessRequirements","subtab","openAllTabs","closeAllTabs","PatientWorklistsComponent_coach_patient_awv_workflow_8_Template","PatientWorklistsComponent_ng_container_10_Template","PatientWorklistsComponent_coach_patient_awv_report_11_Template","PatientExpandedComponent_ng_container_0_coach_patient_alert_1_Template","PatientExpandedComponent_div_2_coach_patient_alert_1_Template","PatientExpandedComponent_ng_container_3_div_1_ng_container_1_div_1_div_1_div_3_Template","activeSubtabPrimary","subtab_r12","activeSubtabSecondary","PatientExpandedComponent_ng_container_3_div_1_ng_container_1_div_1_div_1_Template","isCarePatient","PatientExpandedComponent_ng_container_3_div_1_ng_container_1_div_1_Template","PatientExpandedComponent_ng_container_3_div_1_ng_container_1_Template","subtabsSecondary","PatientExpandedComponent_ng_container_3_div_1_Template","isPatientNavDropdownOpen","subtab_r22","PatientExpandedComponent_ng_container_4_ng_template_1_span_2_div_1_Template","getSubtabComponentId","PatientExpandedComponent_ng_container_4_ng_template_1_span_2_Template","subtabsPrimary","PatientExpandedComponent_ng_container_4_ng_container_9_ng_container_1_div_1_ng_container_1_div_2_Template","subtab_r29","PatientExpandedComponent_ng_container_4_ng_container_9_ng_container_1_div_1_ng_container_1_Template","PatientExpandedComponent_ng_container_4_ng_container_9_ng_container_1_div_1_Template","PatientExpandedComponent_ng_container_4_ng_container_9_ng_container_1_Template","PatientExpandedComponent_ng_container_4_ng_template_1_Template","PatientExpandedComponent_ng_container_4_ng_container_9_Template","isSelectOptionSelected","subtab_r38","PatientExpandedComponent_div_7_div_1_span_1_div_1_Template","PatientExpandedComponent_div_7_div_1_span_1_Template","PatientExpandedComponent_div_7_div_1_Template","PatientExpandedComponent_div_8_ng_container_1_coach_patient_summary_1_Template","PatientExpandedComponent_div_8_ng_container_2_ng_container_1_coach_care_patient_careplan_1_Template","PatientExpandedComponent_div_8_ng_container_2_ng_container_1_coach_care_patient_careplan_editable_2_Template","PatientExpandedComponent_div_8_ng_container_2_ng_container_1_Template","PatientExpandedComponent_div_8_ng_container_5_coach_chart_surveys_1_Template","PatientExpandedComponent_div_8_ng_container_1_Template","PatientExpandedComponent_div_8_ng_container_2_Template","PatientExpandedComponent_div_8_patient_care_gaps_3_Template","PatientExpandedComponent_div_8_coach_chart_timeline_4_Template","PatientExpandedComponent_div_8_ng_container_5_Template","PatientExpandedComponent_div_8_coach_patient_reminders_6_Template","PatientExpandedComponent_div_8_coach_patient_worklists_7_Template","PatientExpandedComponent_div_8_coach_patient_activity_8_Template","PatientExpandedComponent_div_8_patient_alerts_9_Template","isScreenSmall","PatientExpandedComponent_ng_container_9_ng_container_1_div_1_div_8_coach_patient_activity_1_Template","PatientExpandedComponent_ng_container_9_ng_container_1_div_1_div_8_patient_alerts_2_Template","toggleAlertsAndMessages","PatientExpandedComponent_ng_container_9_ng_container_1_div_1_div_8_Template","isAlertsAndMessagesClosed","PatientExpandedComponent_ng_container_9_ng_container_1_div_1_Template","PatientExpandedComponent_ng_container_9_ng_container_1_Template","closeModal","_r68","_r70","ctx_r64","PatientExpandedComponent_ng_container_10_coach_patient_invite_form_3_Template","PatientExpandedComponent_ng_container_10_coach_single_patient_invite_form_4_Template","PatientExpandedComponent_ng_container_10_coach_patient_edit_form_5_Template","modalStatus","PatientExpandedComponent","_injector","overlay","vcRef","Router","modalPatientInviteForm","modalPatientEditForm","careComponentConstants","CoachPatientReminderTab","isCoachPatientReminderTabEnabled","currentUrlSubscriber","Subscription","NavigationEnd","unescape","onPopState","overlayRef","detach","sidebar","handleAsyncOperation","getsubtabsPrimary","subTabs","isSMSTaskAdaptive","st","titleLine","switchTab","isSecondary","createInjector","dataToPass","injectorTokens","WeakMap","PortalInjector","openScopeSelectDropdown","scopeSelectDropdownPortal","ComponentPortal","dropDownEmitterFunc","OverlayConfig","hasBackdrop","backdropClass","positionStrategy","flexibleConnectedTo","scopeSelectOrigin","withPositions","originX","originY","overlayX","overlayY","attach","backdropClick","outsidePointerEvents","dropDownEmitter","bind","subtabLabel","Default","Overlay","PatientExpandedComponent_ng_container_0_Template","PatientExpandedComponent_div_2_Template","PatientExpandedComponent_ng_container_3_Template","PatientExpandedComponent_ng_container_4_Template","PatientExpandedComponent_div_7_Template","PatientExpandedComponent_div_8_Template","PatientExpandedComponent_ng_container_9_Template","PatientExpandedComponent_ng_container_10_Template","TimeTrackingDropdownComponent","action_number","timeTrackerTotal","PatientTimeTrackingComponent_div_2_div_2_div_8_Template","PatientTimeTrackingComponent_div_2_div_2_div_9_Template","timeTrackerEvents_loadingStatus","startOfMonth","newTimeTrackingEvent","faEnvelope","_r26","startTimer","stopTimer","differenceCounter","faStop","PatientTimeTrackingComponent_div_2_div_2_Template","PatientTimeTrackingComponent_div_2_div_3_Template","PatientTimeTrackingComponent_div_2_div_4_Template","PatientTimeTrackingComponent_div_2_div_6_Template","PatientTimeTrackingComponent_div_2_div_7_Template","PatientTimeTrackingComponent_div_3_div_1_div_9_Template","PatientTimeTrackingComponent_div_3_div_1_div_10_Template","PatientTimeTrackingComponent_div_3_div_1_Template","PatientTimeTrackingComponent_div_3_div_2_Template","PatientTimeTrackingComponent_ng_template_4_ng_template_0_Template","startDatePicker","durationMinsText","addTimeToNewEvent","modalAddTimeDisplayBool","disableNewEventSave","updateEntry","currentTimeTrackingEvent","addTimeToCurrentEvent","modalEditTimeDisplayBool","OnDeleteEntryClick","disableCurrentEventSave","getCreatorFullNameAsString","event_r77","createdByName","PatientTimeTrackingComponent_ng_container_7_div_21_div_1_div_4_div_10_Template","openEditModal","timeTrackerActionLabels","roundUpMinutes","durationSeconds","PatientTimeTrackingComponent_ng_container_7_div_21_div_1_div_4_Template","day_r75","PatientTimeTrackingComponent_ng_container_7_div_21_div_1_Template","timeTrackerEvents","event_r87","PatientTimeTrackingComponent_ng_container_7_div_23_div_5_div_1_div_1_div_4_div_10_Template","PatientTimeTrackingComponent_ng_container_7_div_23_div_5_div_1_div_1_div_4_Template","day_r85","PatientTimeTrackingComponent_ng_container_7_div_23_div_5_div_1_div_1_Template","deletedTimeTrackerEvents","PatientTimeTrackingComponent_ng_container_7_div_23_div_5_div_1_Template","getObjectLength","_r91","ctx_r90","showDeleted","PatientTimeTrackingComponent_ng_container_7_div_23_div_5_Template","totalNoOfDeletedEvents","_r93","ctx_r92","selectMonth","PatientTimeTrackingComponent_ng_container_7_div_13_Template","PatientTimeTrackingComponent_ng_container_7_div_20_Template","PatientTimeTrackingComponent_ng_container_7_div_21_Template","PatientTimeTrackingComponent_ng_container_7_div_23_Template","ctx_r95","modalViewDetailsDisplayBool","modalMessage","message_r102","PatientTimeTrackingComponent_ng_container_8_div_6_p_1_Template","PatientTimeTrackingComponent_ng_container_8_div_5_Template","PatientTimeTrackingComponent_ng_container_8_div_6_Template","modalMessageDisplayBool","ctx_r108","ctx_r113","modalMobileEndTimerBool","PatientTimeTrackingComponent","beforeUnloadHandler","endOfMonth","startCounter","timeTrackerActionComment","faCommentDots","resetNewTimeTrackingEvent","patientSrc","paramMap","getTimeTrackingEvents","getDeletedTimeTrackingEvents","interval","setInterval","difference","updateTrackingEvent","mobile","ceil","openCloseModal","parse","durationMins","pivot","subMonths","entry","escapedNotes","replaceAll","inputType","tempStartValue","newDateStamp","setMonth","deleteEntry","deleteTrackingEvent","displayMessage","allTimeTrackingEvents","old_start","dateKey","deletedTimeTrackerEvents_loadingStatus","targetEvent","newTimeEvent","uploadTimeTrackingEvent","updateExistingTimeEntry","addNewTimeEntry","dateStamp","Activity","Comments","deleteTimeTrackingEvent","addDeletedTimeEntry","timeEvent","newDateKey","getValueType","isValidDurationMins","mins","addTimeToEvent","PatientTimeTrackingComponent_div_1_Template","PatientTimeTrackingComponent_div_2_Template","PatientTimeTrackingComponent_div_3_Template","PatientTimeTrackingComponent_ng_template_4_Template","PatientTimeTrackingComponent_ng_container_5_Template","PatientTimeTrackingComponent_ng_container_6_Template","PatientTimeTrackingComponent_ng_container_7_Template","PatientTimeTrackingComponent_ng_container_8_Template","PatientTimeTrackingComponent_ng_container_9_Template","desktopSize","displayPatientProviderAssignment","displayProviderName","PatientDemographicsComponent_div_2_div_1_div_18_span_6_img_1_Template","PatientDemographicsComponent_div_2_div_1_div_18_span_6_img_2_Template","PatientDemographicsComponent_div_2_div_1_div_18_span_6_img_3_Template","PatientDemographicsComponent_div_2_div_1_div_18_span_6_Template","displayEnrollmentType","PatientDemographicsComponent_div_2_div_1_img_2_Template","PatientDemographicsComponent_div_2_div_1_ng_container_3_Template","PatientDemographicsComponent_div_2_div_1_span_10_Template","PatientDemographicsComponent_div_2_div_1_div_13_Template","PatientDemographicsComponent_div_2_div_1_div_14_Template","PatientDemographicsComponent_div_2_div_1_div_17_Template","PatientDemographicsComponent_div_2_div_1_div_18_Template","PatientDemographicsComponent_div_2_div_1_div_19_Template","PatientDemographicsComponent_div_2_div_1_div_20_Template","displayPhone","patientFacesheetSize","PatientDemographicsComponent_div_2_div_2_div_21_span_6_img_1_Template","PatientDemographicsComponent_div_2_div_2_div_21_span_6_img_2_Template","PatientDemographicsComponent_div_2_div_2_div_21_span_6_img_3_Template","PatientDemographicsComponent_div_2_div_2_div_21_span_6_Template","PatientDemographicsComponent_div_2_div_2_img_2_Template","PatientDemographicsComponent_div_2_div_2_ng_container_3_Template","PatientDemographicsComponent_div_2_div_2_span_10_Template","PatientDemographicsComponent_div_2_div_2_div_11_Template","PatientDemographicsComponent_div_2_div_2_div_16_Template","PatientDemographicsComponent_div_2_div_2_div_17_Template","PatientDemographicsComponent_div_2_div_2_div_20_Template","PatientDemographicsComponent_div_2_div_2_div_21_Template","PatientDemographicsComponent_div_2_div_2_div_22_Template","PatientDemographicsComponent_div_2_div_3_img_2_Template","PatientDemographicsComponent_div_2_div_3_ng_container_3_Template","_r45","PatientDemographicsComponent_div_2_ng_container_5_div_1_Template","PatientDemographicsComponent_div_2_div_1_Template","PatientDemographicsComponent_div_2_div_2_Template","PatientDemographicsComponent_div_2_div_3_Template","PatientDemographicsComponent_div_2_button_4_Template","PatientDemographicsComponent_div_2_ng_container_5_Template","careFeatureConstants","PatientDemographicsComponent_div_3_div_8_Template","PatientDemographicsComponent_div_3_div_9_Template","PatientDemographicsComponent_div_3_div_14_Template","PatientDemographicsComponent_div_3_div_15_Template","PatientDemographicsComponent_div_3_p_16_Template","PatientDemographicsComponent_div_3_p_17_Template","PatientDemographicsComponent_div_3_p_18_Template","PatientDemographicsComponent_ng_container_4_coach_single_patient_invite_form_3_Template","PatientDemographicsComponent_ng_container_4_coach_patient_edit_form_4_Template","PatientDemographicsComponent","locationStrategy","cdRef","enrollmentType","PatientDemographicsComponent_div_2_Template","PatientDemographicsComponent_div_3_Template","PatientDemographicsComponent_ng_container_4_Template","attributedCP","PatientFacesheetComponent_ng_container_2_div_1_div_1_div_19_span_6_img_1_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_div_19_span_6_img_2_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_div_19_span_6_img_3_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_div_19_span_6_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_img_3_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_ng_container_4_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_span_10_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_div_13_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_div_14_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_div_17_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_div_18_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_div_19_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_div_20_Template","PatientFacesheetComponent_ng_container_2_div_1_div_2_img_2_Template","PatientFacesheetComponent_ng_container_2_div_1_div_2_ng_container_3_Template","PatientFacesheetComponent_ng_container_2_div_1_div_2_div_16_Template","PatientFacesheetComponent_ng_container_2_div_1_div_2_div_22_Template","PatientFacesheetComponent_ng_container_2_div_1_div_2_div_23_Template","PatientFacesheetComponent_ng_container_2_div_1_div_3_div_4_div_3_span_3_img_1_Template","PatientFacesheetComponent_ng_container_2_div_1_div_3_div_4_div_3_span_3_img_2_Template","PatientFacesheetComponent_ng_container_2_div_1_div_3_div_4_div_3_span_3_img_3_Template","PatientFacesheetComponent_ng_container_2_div_1_div_3_div_4_div_3_span_3_Template","PatientFacesheetComponent_ng_container_2_div_1_div_3_div_4_div_3_Template","PatientFacesheetComponent_ng_container_2_div_1_div_3_div_2_Template","PatientFacesheetComponent_ng_container_2_div_1_div_3_div_3_Template","PatientFacesheetComponent_ng_container_2_div_1_div_3_div_4_Template","PatientFacesheetComponent_ng_container_2_div_1_div_4_img_2_Template","PatientFacesheetComponent_ng_container_2_div_1_div_4_ng_container_3_Template","PatientFacesheetComponent_ng_container_2_div_1_ng_container_6_div_1_Template","PatientFacesheetComponent_ng_container_2_div_1_div_1_Template","PatientFacesheetComponent_ng_container_2_div_1_div_2_Template","PatientFacesheetComponent_ng_container_2_div_1_div_3_Template","PatientFacesheetComponent_ng_container_2_div_1_div_4_Template","PatientFacesheetComponent_ng_container_2_div_1_button_5_Template","PatientFacesheetComponent_ng_container_2_div_1_ng_container_6_Template","PatientFacesheetComponent_ng_container_2_div_2_div_10_Template","PatientFacesheetComponent_ng_container_2_div_2_div_11_Template","PatientFacesheetComponent_ng_container_2_div_2_div_16_Template","PatientFacesheetComponent_ng_container_2_div_2_div_17_Template","PatientFacesheetComponent_ng_container_2_div_2_p_18_Template","PatientFacesheetComponent_ng_container_2_div_2_p_19_Template","PatientFacesheetComponent_ng_container_2_div_1_Template","PatientFacesheetComponent_ng_container_2_div_2_Template","_r63","PatientFacesheetComponent_ng_container_6_coach_patient_invite_form_3_Template","PatientFacesheetComponent_ng_container_6_coach_single_patient_invite_form_4_Template","PatientFacesheetComponent_ng_container_6_coach_patient_edit_form_5_Template","PatientFacesheetComponent","updateChartViewType","componentScreenSize","handleAsyncOperations","ngAfterViewChecked","chartContainer","offsetWidth","isSMSAdaptive","goBack","back","replaceUrl","PatientFacesheetComponent_ng_container_2_Template","PatientFacesheetComponent_coach_patient_demographics_3_Template","PatientFacesheetComponent_ng_container_6_Template","CarePatientComponent","_isHeaderCondensed","patientAlertService","professionList","setHeaderCondensed","getPatient","getCompletions","wpPatientId","addPatientHistoryToActivityList","getUserActivity","completionById","addInactiveByProfessionalNamesAndActivityList","gatherInactiveByProfesionalNamesIds","inactiveById","profs","prof","addAlertsToActivityList","userActivity","addLoginHistoryToActivityList","addCompletionsToActivityList","getTaskFromId","logins","loginAct","loginAttempts","includedObjects","ep","eps","procedureDateAsUtc","procedureDate","epsAct","statusHistory","shAct","isDischarged","iso","shouldShowCompletionInHistory","cActivity","surveyResponseId","handledByProfessional","inactiveReasonTextFromAlertDismissReason","d","CareTestComponent","systolic_range","diastolic_range","systolic_goal_range","diastolic_goal_range","renderBPChart","chartRenderValues","generateRandomValues","colors","getIndex","createSeries","daysChange","random","randomizeData","rangeChange","target_type","toggleModalDemo","CareSettingsComponent","showModalDemo","CareSettingsComponent_ng_container_954_Template","gridApiChanged","filterOptionsChanged","CareAllPrescriptionsComponent_ng_container_1_coach_care_exceptions_1_Template","CareAllPrescriptionsComponent_ng_container_1_coach_care_prescriptions_2_Template","CareAllPrescriptionsComponent_ng_container_1_coach_care_prescriptions_processing_3_Template","CareAllPrescriptionsComponent_ng_container_1_coach_care_prescriptions_invoicing_4_Template","selectedList","CareAllPrescriptionsComponent","listSelected","CareAllPrescriptionsComponent_ng_container_1_Template","s1","s2","fmtDate","CarePrescriptionsComponent","ACCESS_AUDIT_MESSAGE","PRINTED_AUDIT_MESSAGE","b340StringConstants","claimPanelStatus","exportOptions","selectedExportOption","toCsv","table","querySelectorAll","cells","cell","textContent","UIUpdates340BFeatureFlag","headerLabel","filterInstanceLabel","optionLabels","checkedByDefault","dataMapper","shift","prescriber","exportSelectionChanged","generatePatientOutputFile","exportExtendedClaimsData","auditOptions","exportDataAsExcel","tbl","buildTableData","visibleNodes","buildVisibleClaimsNodeSet","filteredData","claimObj","generateTable","generateTableHead","csv","paginationGetTotalPages","originalPage","paginationGetCurrentPage","paginationGoToFirstPage","currentPageNodes","getRenderedNodes","paginationGoToNextPage","flat","Tier2_Name","NDC","Medication_Description","Prescription_Filled_Date","Date_Initial_Fill","Prescribing_Provider_NPI","Prescribing_Provider_Name","Provider_Address","Prescribing_Provider_Specialty","Service_Pharmacy_NPI","Pharmacy_Org_Name","Pharmacy_Other_Org_Name","Pharmacy_Address","Pharmacy_Address_Other","Price","createTHead","insertRow","th","createTextNode","insertCell","refreshGridAndUpdateStatus","getRowNode","setDataValue","refreshClientSideRowModel","removeRow","selectedData","fillNumber","setSelected","onRejectClaim","changeClaimStatus","patientPrimaryCare","ceLocations","CarePrescriptionsComponent_coach_care_prescriptions_filters_0_Template","CarePrescriptionsComponent_button_18_Template","localeCompare","sensitivity","numeric","isDescending","splitName","option_r3","onCbChange","onAllChecked","FilterGroupComponent_div_0_div_9_Template","groupOptions","form","getUniqueAllCheckboxId","allIsChecked","FilterGroupComponent_div_1_ng_container_6_small_1_span_2_Template","selected_r15","s_idx_r16","getSelectedOptions","FilterGroupComponent_div_1_ng_container_6_small_1_Template","FilterGroupComponent_div_1_ng_container_7_small_1_Template","useRadioButtons","option_r22","FilterGroupComponent_div_1_form_11_div_5_Template","option_r28","onRadioChange","confirmClick","FilterGroupComponent_div_1_form_12_div_1_Template","FilterGroupComponent_div_1_ng_container_5_Template","FilterGroupComponent_div_1_ng_container_6_Template","FilterGroupComponent_div_1_ng_container_7_Template","FilterGroupComponent_div_1_coach_icon_8_Template","FilterGroupComponent_div_1_form_11_Template","FilterGroupComponent_div_1_form_12_Template","activeDropdownPointer","FilterGroupComponent","idInc","fb","isDateSelected","optionChecked","radioChecked","activeDropdownPointerSelected","uniqueAllCheckboxId","initializeCheckboxes","radioButtons","getElementsByName","setCheckedTo","controls","onSubmit","preventDefault","removeAt","getElementById","FilterGroupComponent_div_0_Template","FilterGroupComponent_div_1_Template","date_r9","selectedDateModel","onOptionChecked","onRadioChecked","options_r10","isInitialDateSelected","idx_r11","CarePrescriptionsFiltersComponent_div_2_coach_icon_9_Template","onDateSelected","CarePrescriptionsFiltersComponent_div_2_option_15_Template","CarePrescriptionsFiltersComponent_div_2_coach_filter_group_16_Template","customDateFilterLabel","selectedDateLabel","dateOptions","configData","options_r22","CarePrescriptionsFiltersComponent_div_4_div_5_Template","CarePrescriptionsFiltersComponent","onRadioClicked","dateFilterMonthCount","selectedOptionValues","filterOptionMap","filterByDateAndStatus","currentRadioFilter","selectedDateStr","lastSelectedRadioFilter","filterDoneTimeout","createDateOptions","monthHeaderConfig","customMonthLabelPresent","customMonthLabel","dates","generateDates","monthName","filterByDateAndByStatus","filterByDate","clearRadioDateFilters","statusOption","endDateStr","doClear","ustart","uend","unix","msPerDay","optionValues","clearTimeout","dropdownPointer","hostVars","CarePrescriptionsFiltersComponent_div_2_Template","CarePrescriptionsFiltersComponent_div_3_Template","CarePrescriptionsFiltersComponent_div_4_Template","TabSwitchComponent","isTabDropdownOpen","onTabClicked","updateTabs","onSummaryTabSelected","isSummaryTabSelected","isQuickFillTabSelected","isCareNoteSelected","onQuickFillTabSelected","onCareNoteSelected","exportClaimFiles","getFillInfo","stripLeadingZeros","formatPhone","prescriptionDetails","copyData","getPatientFirstName","getPatientLastName","patientDobText","undoProcessThisClaim","pdfMake","pdfFonts","vfs","CarePrescriptionsProcessingSidebarComponent","prescriptionService","importFeatureFlag","FileImport340B","onProcessClaim","onUndoProcessClaim","isValidationPanelOpen","isClaimSelected","toggleVisitNoteModal","toggleCareCoordinationNoteModal","prescriptionSubscription","claim","currentRowId","rowId","updatePrescriptionDetailsData","creatorName","creatorDate","setTabStatus","requiredSpaces","padEnd","processThisClaim","getPatientName","copyTextToClipboard","getPatientSex","getMbi","generatePDF","docDefinition","fontSize","alignment","bold","decoration","ceRelatedReferralDate","ceVisitDate","CarePrescriptionsProcessingSidebarComponent_button_16_Template","CarePrescriptionsProcessingSidebarComponent_div_22_Template","CarePrescriptionsProcessingSidebarComponent_div_23_Template","CarePrescriptionsProcessingSidebarComponent_div_24_Template","CarePrescriptionsProcessingSidebarComponent_button_28_Template","CarePrescriptionsProcessingComponent","AUDIT_ACCESS_MESSAGE","AUDIT_PRINT_MESSAGE","headerCheckboxSelectionFilteredOnly","autoSizeAll","pair","generateTpaOutputFile","getFilterDateRange","removeEntryFromKey","toRemove","swapColumns","col1","col2","col1Index","col2Index","temp","ndcIndex","elem","commaIndex","markSelectedRowsAsProcessed","onCanProcessClaims","invoiceQStateID","priceSpread","costAmount","tpaId","rejectByUserId","rejectDateTime","rejectNote","rejectReasonId","createdOn","undoProcessedClaim","onRowSelected","claims","selectionChanged","generateCvsFile","generateFullExport","has","markCurrentRowAsProcessed","dateRangeLower","dateRangeHigher","prescriptionDetail","CarePrescriptionsProcessingComponent_coach_care_prescriptions_filters_0_Template","CarePrescriptionsProcessingComponent_button_21_Template","editable","caravanFee","contractPharmacy","rejectedNeedsCreditDate","toggleDisplay","currentArrow","PatientHeaderHelpComponent","IS_HIDDEN","showInstructions","inactiveColor","activeArrow","inactiveArrow","activeBottomPadding","inactiveBottomPadding","storage","localStorage","isHidden","getItem","flipArrow","setColor","setItem","setStyle","mainDiv","PatientHeaderHelpComponent_div_2_Template","PatientHeaderComponent_div_19_button_1_Template","claimStatus","PatientHeaderComponent","showPatientFaceSheet","navigateToPatientFacesheet","getVisitDate","originalVisitDate","newVisitDate","followUpPlan","visitProvider","PatientHeaderComponent_strong_18_Template","PatientHeaderComponent_div_19_Template","InvoicingTabSwitchComponent","isInvoiceDetailsTabSelected","isClaimInfoTabSelected","isClaimHistorySelected","thePriceSpread","setChangesMade","isRecordInEndStateStatus","updateInvoiceStatus","CarePrescriptionsInvoicingSidebarComponent_div_6_option_6_Template","CarePrescriptionsInvoicingSidebarComponent_div_6_option_7_Template","CarePrescriptionsInvoicingSidebarComponent_div_6_option_8_Template","CarePrescriptionsInvoicingSidebarComponent_div_6_option_9_Template","CarePrescriptionsInvoicingSidebarComponent_div_6_option_10_Template","CarePrescriptionsInvoicingSidebarComponent_div_6_option_11_Template","CarePrescriptionsInvoicingSidebarComponent_div_6_div_12_Template","theRejectReason","theRejectNote","theInvoiceStatus","selectedInvoice","contractInfo","priceTypeId","isRejectedSelected","historyDetail","CarePrescriptionsInvoicingSidebarComponent_div_8_tr_13_Template","CarePrescriptionsInvoicingSidebarComponent_div_8_tr_14_Template","CarePrescriptionsInvoicingSidebarComponent_div_8_tr_15_Template","CarePrescriptionsInvoicingSidebarComponent_div_8_tr_16_Template","CarePrescriptionsInvoicingSidebarComponent_div_8_tr_17_Template","CarePrescriptionsInvoicingSidebarComponent_div_8_tr_18_Template","CarePrescriptionsInvoicingSidebarComponent_div_8_tr_19_Template","CarePrescriptionsInvoicingSidebarComponent_div_8_tr_20_Template","CarePrescriptionsInvoicingSidebarComponent_div_8_tr_21_Template","okayToSave","CarePrescriptionsInvoicingSidebarComponent","onSaveInvoice","areChangesMade","updateInvoiceDetailsData","setRecordEndStateStatus","demo","patientDemographics","resetControls","prescriptionInfo","isChangeMade","caravanPct","CarePrescriptionsInvoicingSidebarComponent_div_6_Template","CarePrescriptionsInvoicingSidebarComponent_div_7_Template","CarePrescriptionsInvoicingSidebarComponent_div_8_Template","CarePrescriptionsInvoicingSidebarComponent_button_10_Template","CarePrescriptionsInvoicingSidebarComponent_button_11_Template","CarePrescriptionsInvoicingComponent","allowSorting","contractData","buildClaimIdStrings","cmsClaimIds","tpaClaimIds","fetchPrescriptions","prescriptionPromises","approvedByPromises","approvers","promise","resolved","approver","approvedOn","relevantInvoice","Bene_FullName","Cost_Amount","Caravan_Fee","Price_Spread","Approved_By","approved_By","Approved_On","approved_On","PendingDate","InvoicingDate","InvoicedDate","RejectedDate","RejectedNeedsCreditDate","CreditedDate","CarePrescriptionsInvoicingComponent_coach_care_prescriptions_filters_0_Template","CarePrescriptionsInvoicingComponent_button_16_Template","PresetSettingsService","selectedPreset$","asObservable","allPatientsPresetName","keyForFilterSettingsInLocalStorage","getPresetGroups","dob_age","awvTypeDue","lastClaimAWVDate","lastAWVProvider","lastClaimAWVProvider","ihAwvPatient","lastCCMDateAndCode","lastVisit","attributedPractice","officeVisits","appointmentDate","appointmentTime","clinicianName","appointmentInfo","locationId","PatientDiseaseCohorts","EdUtilizationWorklist","totalSpend","hccGapCount","IHESchedule","address","scheduleStatus","schedulingDescription","callDate","renderingProvider","lastCCMDate","IHEfileActions","IHEDownloadStatus","renderingProviderName","IHEBilling","cptCode","claimFrequencyCode","IHEAWVBatchDate","iheDxCount","snfFlagsList","actions","lastResponse","lastResponseDate","enrollmentDate","ccmLastProcCode","CarePatientsGridComponent","presetSettingsService","preset_r5","CarePatientsFiltersComponent_ng_container_10_ng_container_5_div_6_Template","CarePatientsFiltersComponent_ng_container_10_ng_container_5_Template","presetGroup_r3","selectPresetByName","findPresetByName","flatMap","presetGroup","CarePatientsFiltersComponent_ng_container_10_Template","CarePatientsContainerComponent","SummaryTileOrder","SUMMARY_TILES","imagePath","tileItems","subLinks","HasFeatureFlagDefinedDirective","hasFeatureFlagDefined","hasFeatureFlagDefinedFeatureId","hasFeatureFlagDefinedComponentId","templateRef","viewContainer","destroy$","hasView","combineLatest","featureFlags","currentAccess","createEmbeddedView","complete","lG2","subLink_r5","onItemClick","CareSummaryTileComponent_ul_9_li_1_ng_container_3_ul_1_li_1_Template","CareSummaryTileComponent_ul_9_li_1_ng_container_3_ul_1_Template","CareSummaryTileComponent_ul_9_li_1_ng_container_3_Template","CareSummaryTileComponent_ul_9_li_1_Template","CareSummaryTileComponent","subItem","updatedPath","trackLinkClick","summaryTile","parent","innerText","CareSummaryTileComponent_ul_9_Template","tile_r1","CareSummaryTabComponent_div_2_coach_care_summary_tile_1_Template","CareSummaryTabComponent","summaryTiles","CareSummaryTabComponent_div_2_Template","routes","helpfile","pathMatch","redirectTo","HasFeatureGuard","feature","resolve","WellpepperResolverService","presetItemBase","setWellpepperUser","CareRoutingModule","oAB","cJS","RouterModule","forChild","visitNoteRequestedDate","RequestNoteComponent_ng_container_0_div_10_div_5_Template","faxNum","faxNumberValid","RequestNoteComponent_ng_container_0_div_43_coach_loading_indicator_1_Template","RequestNoteComponent_ng_container_0_div_43_button_2_Template","sendingFaxLoading","RequestNoteComponent_ng_container_0_div_10_Template","RequestNoteComponent_ng_container_0_div_43_Template","copyTextAndClose","Fax340bOutboundFeature","RequestNoteComponent","showModal","modalToggled","noteRequested","faxRegex","phoneNumberLength","faxnumber","noteContent","RequestNoteComponent_ng_container_0_Template","SubFillDialogComponent_div_0_div_1_Template","SubFillDialogComponent","SubFillDialogComponent_div_0_Template","onSubFillButtonClicked","copyNote","toggleSubFillDialog","showSubFillDialog","formattedFollowUpPlan","RequestCareCoordinationNoteComponent","claimApproved","rxDiagnosis","followUpPlanWithCE","followUpPlanWithProvider","applySubFillLogic","getFormattedFollowUpPlan","addFieldData","textTerminationIndex","displayDate","RequestCareCoordinationNoteComponent_ng_container_0_Template","deleteNote","saveNote","ClaimNoteComponent","originalNote","ClaimNoteComponent_ng_container_0_Template","RejectedClaimComponent_ng_container_0_ng_template_17_li_0_Template","RejectedClaimComponent_ng_container_0_ng_template_17_li_1_Template","RejectedClaimComponent_ng_container_0_ng_template_17_li_2_Template","RejectedClaimComponent_ng_container_0_ng_template_17_li_3_Template","_r14","RejectedClaimComponent_ng_container_0_li_16_Template","RejectedClaimComponent_ng_container_0_ng_template_17_Template","RejectedClaimComponent_ng_container_0_div_48_Template","RejectedClaimComponent_ng_container_0_div_49_Template","RejectedClaimComponent_ng_container_0_div_51_Template","RejectedClaimComponent_ng_container_0_div_53_Template","getLoggedInUserName","getTodaysDate","RejectedClaimComponent","claimRejected","pi","reject","RejectedClaimComponent_ng_container_0_Template","FileControlComponent","setMessage","removeFile","maxFilenameLength","deleteFile","onFileInputClicked","onImportButtonClick","file_r8","FileImportComponent","attachments","attachment","upload$","sub","statusCode","fileUploadControl","FileImportComponent_input_0_Template","FileImportComponent_a_1_Template","FileImportComponent_div_2_Template","requestVisitNote","location_r22","CarePrescriptionsSidebarComponent","injector","toggleRejectionModal","showClaimNote","visitDateIsValid","ceVisitDateIsValid","ceReferralDateIsValid","approveButtonEnabled","rejectButtonEnabled","debounceTimer","setDefaultFollowUpPlan","onUpdateProvider","removeClaimFromGrid","updateReferralDate","validateClaim","updateCeVisitDate","updateVisitDate","updateVisitNoteMissing","updateCeVisitNoteMissing","updateCeRelatedReferralMissing","updatedPlan","onUpdateTypedText","debouncedExecute","func","timeMs","onNoteRequested","isRequested","parentComponent","onClickClaimNote","savePrescriptionDetailsData","requestCareCoordinationNote","toggleRejectModal","referralDate","filledDate","claimIsValid","onRejectClicked","selectedCeLocation","ceLocationsSelect","updateFollowUpPlan","isDefaultDate","oldRejectState","oldApproveState","oldValue","newValue","validateHasNote","onSaveAsPending","setCeLocation","ceLocation","updateCeLocationInFollowUpPlan","startsWith","CarePrescriptionsSidebarComponent_p_23_Template","CarePrescriptionsSidebarComponent_span_31_Template","CarePrescriptionsSidebarComponent_span_32_Template","CarePrescriptionsSidebarComponent_a_33_Template","CarePrescriptionsSidebarComponent_a_34_Template","CarePrescriptionsSidebarComponent_p_49_Template","CarePrescriptionsSidebarComponent_p_61_Template","CarePrescriptionsSidebarComponent_option_72_Template","CarePrescriptionsSidebarComponent_div_83_Template","CarePrescriptionsSidebarComponent_ng_template_84_Template","list_r5","selectList","care_all_prescriptions_filters_component_CarePrescriptionFeature","care_all_prescriptions_filters_component_CarePrescriptionProcessingFeature","care_all_prescriptions_filters_component_CarePrescriptionInvoicingFeature","care_all_prescriptions_filters_component_FeatureFlag340B","care_all_prescriptions_filters_component_HiddenFeatureFlag340B","care_all_prescriptions_filters_component_ExceptionQueue340B","CareAllPrescriptionsFiltersComponent","isListFiltersOpen","isNewListDrawerOpen","allLists","toggleListFilters","openNewListDrawer","CareAllPrescriptionsFiltersComponent_coach_icon_1_Template","CareAllPrescriptionsFiltersComponent_coach_icon_2_Template","CareAllPrescriptionsFiltersComponent_ng_container_14_Template","CareAllPrescriptionsFiltersComponent_coach_care_prescriptions_filters_22_Template","CareAllPrescriptionsFiltersComponent_div_23_Template","AllPatientsPreset","getPresetColumns","lastCcmDate","lastCsthDate","ClinicalProgramCopdPreset","isMostImpactable","spirometryProcedure_LastDate","pulmonologistProcedure_LastProviderName","pulmonologistProcedure_LastDate","copdDxCount","phone1","phone2","ClinicalProgramHeartFailurePreset","echoProcedure_LastDate","cardiologistProcedure_LastProviderName","cardiologistProcedure_LastDate","hfDxCount","ClinicalProgramHypertensionPreset","EdUtilizationPreset","AwvBillingPreset","AwvFilesPreset","AwvSchedulePreset","HccListPreset","HccVipCohort","AwvWorklistFiltersComponent","formBuilder","minDate","filtersForm","loadItems","onFromDateChange","onToDateChange","invalid","AwvPatientsWorklistPreset","categotyName","getHiddenColumns","getVersionKey","newStatusDate","lastEHRAWVIPPEDate","ehrLastAwvCommunity","ehrLastAwvProvider","ehrReportedLastAwvDate","ehrReportedLastAwvSource","hiddenColumns","hideEhrColumnsInAwvOpportunities","HideEHRColumnsInAwvOpportunities","FacesheetScheduleFiltersComponent","scheduleForm","FacesheetPreset","PacNavigatorProgramPreset","AllPatientSnfStatusItems","displayInCSV","additionalCsvColumns","originalValue","CareManagementAllProgramPreset","CareManagementCopdPreset","cohortProcedureLastDate","cohortSpecialistLastProviderName","cohortSpecialistLastDate","CareManagementHeartFailurePreset","hfCohortProcedureLastDate","hfCohortSpecialistLastProviderName","hfCohortSpecialistLastDate","CareManagementHypertensionPreset","totalGapWt","smsProgramType","HF","SmsOutreachProgramPreset","getTasksByOrg","getCompletionsByOrg","patientDataById","smsProgram","programTypeDisplayString","filteredPatients","lastResponseDateTemp","taskSubType","ActiveAlertsPreset","Alerts","bp","ActiveAlertsAndMessagesPreset","AlertsAndMessages","UnreadMessagesPreset","UnreadMessages","PresetGroupModule","provide","useExisting","multi","CareModule","AgGridModule","PatientFacesheetModule","SharedModule","FontAwesomeModule","NgxMasonryModule","HccFacesheetScheduleService","processingService","DateValidators","dateGreaterThanOrEqual","postPdf","postZip","downloadExport","fileNameIdentifier","facesheetScheduleItems","__webpack_require__","process","FacesheetExportComponent","queue","completionPercentage","isComplete","isFailed","isCancelled","addNewProcess","_angular_core__WEBPACK_IMPORTED_MODULE_9__","careManagementFilterSetttings","AttributionFilterModel","isMostAssignable","isCinSelected","item_r6","selectedCin","cinSelected","AttributionFilterPaneComponent_div_27_div_15_select_1_option_1_Template","AttributionFilterPaneComponent_div_27_div_15_select_1_option_2_Template","cinItems","AttributionFilterPaneComponent_div_27_div_15_select_1_Template","AttributionFilterPaneComponent_div_27_div_15_div_2_Template","isCinLoading","isCinOpen","viewCinSelected","AttributionFilterPaneComponent_div_27_div_15_Template","AttributionFilterPaneComponent","compareService","isQueueOpen","isQueueOpenChange","currentFilterModelChange","isAssignmentOpen","hasModelChanged","previousFilterModel","hasCinAccess","cinFlag","getCinList","toggleQueueOpen","mostAssignableSelected","hasFilterModelChanged","MOST_ASSIGNABLE","ATTRIBUTED","applyChanges","AttributionFilterPaneComponent_div_27_Template","option_r1","selectOption","last_r3","first_r2","ButtonToggleComponent","_options","selectedItemChange","selectedValue","ButtonToggleComponent_button_2_Template","CoachIconComponent","sanitizer","_classesJoinTrim","iconName","iconColor","iconSize","iconWeight","iconUseTag","buildIconUseTag","setIconSize","setIconWeight","firstChange","bypassSecurityTrustHtml","iconClasses","ClassesJoinTrimPipe","tab_r3","tab_r7","CoachTabsComponent_ng_template_8_ng_container_2_Template","availableTabs","CoachTabsComponent","_tabsData","_activatedRoute","sidebarToggleService","sidebarToggle","whenChanged","activeView","hasFeatureId","urlSegments","selectedTab","_angular_core__WEBPACK_IMPORTED_MODULE_2__","CoachTabsComponent_ng_container_1_Template","CoachTabsComponent_ng_template_8_Template","CoachTogglePaneComponent","iconRotates","isOpenChange","toggledOpenDefault","paneToggled","ngContentSelectors","CoachToggleComponent","toggle","onToggle","doToggle","emitIsOpen","EulaComponent","eula$","acceptEULA","setShowEULA","selectedTierIdForDisplay","declineEULA","logout","eulaText","ExportReportButtonComponent","seperator","buttonText","allColumns","exportReport","customHeader","_angular_core__WEBPACK_IMPORTED_MODULE_1__","invalidClasses","InvalidInputComponent","requiredError","minError","maxError","hasBeenTouched","validationFn","validateInput","observer","MutationObserver","observe","attributeOldValue","attributeFilter","validateSelect","resetErrors","classList","InvalidInputComponent_ng_container_0_Template","InvalidInputComponent_ng_container_1_Template","InvalidInputComponent_ng_container_2_Template","CheckboxHeaderRendererComponent","rowListener","totalNodes","selectedNodes","maxSelected","removeEventListener","onSelected","selectedNodeCount","selectAllFiltered","CheckboxRendererComponent","checkDisabled","CoachGridBase","onGridSizeChanged","onModelUpdated","column_r1","idx_r2","ColumnsSettingsComponent","columnSettingsList","cs","cd","submitChanges","oldColumnState","columnSettingsListObj","ocs","presetSettings","ColumnsSettingsComponent_div_10_Template","PATIENT_SUMMARY_GRID_KEY","CLINICIANS_REPORT_GRID_KEY","PATIENT_DETAIL_REPORT_GRID_KEY","PRACTICES_REPORT_GRID_KEY","CINS_REPORT_GRID_KEY","GridFilterService","gridKey","model","filterModels","riskTrends","riskCategories","inrFormat","oldDate","formattedNewDate","formattedOldDate","action1","action2","sum1","sum2","filterChanged","existing","columnState","savedColumnState","ngZone","valueOverride","run","RouterLinkRendererComponent_a_0_Template","RouterLinkRendererComponent_span_1_Template","breadcrumb_r2","urlSegment","HeaderBreadcrumbsComponent_div_0_a_1_Template","breadcrumbs","HeaderBreadcrumbsComponent","activeViewCrumb","tierRoute","tierIdRoute","activatedRoute$","showBreadcrumbs","buildBreadcrumb","abv","getTierAbbreviationFromRoute","getTierIdFromRoute","nextUrl","breadcrumb","isDuplicate","newBreadcrumbs","firstChild","HeaderBreadcrumbsComponent_div_0_Template","pageName","HierarchyRequiredComponent","hierarchyTiers","requiredTier","HierarchyRequiredComponent_div_0_Template","LoadingContainerComponent","containerCss","LoadingContainerComponent_coach_loading_indicator_0_Template","LoadingIndicatorComponent","HeaderTitlePortalComponent","appRef","portalHost","DomPortalOutlet","querySelector","portal","HeaderTitlePortalComponent_ng_template_0_Template","SharedRedirectComponent","TrackPerformanceWidgetApiService","cache$","getWidgetData","shareReplay","data_r5","navigateToItem","trackId","TrackPerformanceWidgetComponent_ng_container_0_div_1_li_11_coach_icon_4_Template","TrackPerformanceWidgetComponent_ng_container_0_div_1_li_11_coach_icon_6_Template","TrackPerformanceWidgetComponent_ng_container_0_div_1_li_11_coach_icon_7_Template","TrackPerformanceWidgetComponent_ng_container_0_div_1_li_11_coach_icon_8_Template","TrackPerformanceWidgetComponent_ng_container_0_div_1_li_11_coach_icon_9_Template","TrackPerformanceWidgetComponent_ng_container_0_div_1_li_11_span_10_Template","TrackPerformanceWidgetComponent_ng_container_0_div_1_li_11_span_11_Template","sharedSavings","targetStatus","needsImprovement","needsAttention","notConnected","connected","hittingTarget","TrackPerformanceWidgetComponent_ng_container_0_div_1_div_5_Template","TrackPerformanceWidgetComponent_ng_container_0_div_1_img_7_Template","TrackPerformanceWidgetComponent_ng_container_0_div_1_li_11_Template","performanceDashboardName","hideIllustration","widgetData","TrackPerformanceWidgetComponent_ng_container_0_div_1_Template","performanceDashboardFeatureFlag","NeedsAttention","NeedsImprovement","HittingTarget","Connected","NotConnected","TrackPerformanceDashboardTargetStatus","TrackPerformanceWidgetComponent","trackPerformanceService","performanceDashboardFeature","PerformanceDashboardFeature","PerformanceDashboardFeatureFlag","PerformanceDashboardName","TrackPerformanceWidgetComponent_ng_container_0_Template","AgGridResizeDirective","filterToggleSubscription","filterToggle","sideBarToggleSubscription","ClickAwayDirective","_elementRef","clickAway","clickAwayDisabled","onClickAway","targetElement","contains","CopyToClipboardDirective","toaster","onCopy","navigator","clipboard","writeText","timeOut","DoesNotHaveFeatureFlagOrAnyComponents","updateAccess","doesNotHaveFeatureFlagOrAnyComponents","doesNotHaveFlag","doesNotHaveAnyComponents","_angular_core__WEBPACK_IMPORTED_MODULE_4__","DoesNotHaveFeatureFlagDirective","doesNotHaveView","doesNotHaveFeatureFlag","hasFlag","_angular_core__WEBPACK_IMPORTED_MODULE_3__","HasAccessBase","getAccess","HasComponentDirective","HasFeatureFlagAndAllComponents","hasFeatureFlagAndAllComponents","hasAllComponents","HasFeatureFlagDirective","HasFeatureDirective","hasFeature","HasModuleDirective","hasModule","IsNotTierNumDirective","isNotTierNum","updateTier","EDUtilizationWorklist","PatientTimeline","TimeTracking","HCCFacesheetBySchedule","TimeTrackingReport","ACONetworkUtilization","ClinicalEpisodes","EndofLife","KeyPerformanceIndicators","PromotingInteroperabilitySubmission","QualityPortalSubmission","UnofficialCMSQuality","Contacts","ACOBoard","SteeringCommitee","PracticeImprovement","InformationTechnology","QualityFormv","ComplianceForm","PromotingInteroperabilityForm","MeetingFormPartnership","Learn","EULA","Banner","Application","Recents","PerformanceDashboard","QualityDashboardComponent","Messaging","Surveys","ProviderReport","QualityDashboardSubComponentMeasure","QualityDashboardSubComponentAllMeasures","QualityDashboardSubComponentPatientsList","LogAuditElementID","Tier3_ID","Tier4_ID","Tier5_ID","OrgId","DocumentOwner","DocumentEntryId","ReportGUID","Delete","Move","Login","ReportAccess","Approve","PrintExport","Navigate","UrlExceptionsToRemove","Params","AppConstants","ApplicationName","CompanyName","CompanyNameFull","SupportEmail","CoachException","errorDescription","logError","FormConstants","Quality","overviewTitle","submissionPeriod","dueDate3rdParagraph","requirements","instructionsPart1","instructionsPart2","noteTextPart1","noteTextPart2","noteTextPart3","noteTextPart4","disclaimer","dataSourceToolTipText","shwSpecialStatus","useCurrentHierarchy","drpDataSource","drpEHR","drpPatientPop","instructionDataSrc","stepSpecialStatus1Text","stepSpecialStatus2Text","stepAddEditText","tooltipEHRText","tooltipDataSourceText","tooltipPatientPopText","tooltipPracticeText","tooltipExemptText","tooltipSpecialStatusText","tooltipUploadQualityMeasureReportText","QualityOpeningInfo","QualityOpenDueDate","QualityPatientPopulationToolTipText","ComplianceOpeningInfo","ComplianceOpenDueDate","PIOpeningInfo","PIOpenDueDate","MeetingWidgetName","MeetingOpeningInfo","MeetingOpenDueDate","MeetingCommunitySelection","PromotingInterop","instructionsPart3","instructionsPart4","infoMeasureLinkFolder","infoScoringLinkFolder","infoScoringLinkFile","formNoteInternal","Compliance","noteTextPart5","noteTextPart6","dueDateSoft","remediationCloseDate","ModuleConstants","HomeModule","TrackModule","ImproveModule","SubmitModule","LearnModule","CareApiPhiFeature","CarePrescriptionExceptionsFeature","AwvWorklist","Timeracking","TrackComponentConstants","AcoNetworkUtilization","EndOfLife","UnofficialCmsQuality","ValueCalculator","CompareComponent","ValueCalculatorReportName","ClinicalFeature","FinancialUtilizationFeature","QualityFeature","SummaryFeature","MicroServiceApiFeature","ValueCalculatorFeature","CompareFeature","CompareFeatureName","QualityFeatureName","ValueCalculatorName","ValueCalculatorFeatureFlag","ValueReportOverviewFeatureFlag","HccDashboardEnhancedFeatureFlag","CompareFeatureFlag","ComparePhase2FeatureFlag","QualityDashboardFeatureFlag","HccDashboardEnhanced2FeatureFlag","GridViewComponentId","SideBarSubComponentId","FacesheetViewComponentId","FacesheetTabSubComponentId","FeatureFlagId","ImproveFeatureConstants","ContactsFeature","ACOBoardFeature","SteeringCommiteeFeature","PracticeImprovementFeature","InformationTechnologyFeature","EventsFeature","SubmitFeatureConstants","SummaryFormFeature","QualityFormFeature","MeetingFormFeature","ComplianceFormFeature","PromotingInteroperabilityFormFeature","FormsAdminFormFeature","FormsAdminFormFeatureFlag","SubmitFormConstants","PromotingInteroperabilityFormComponent","QualityFormComponent","ComplianceFormComponent","CommunicationFormComponent","MeetingFormComponent","SubmitFeatureToFormId","HomeComponentConstants","MarketingWidget","MarketingWidget2","DocRepoConstants","YoutubeEntryType","TextPlainEntryType","TextHtmlEntryType","PageEntryType","URLEntryType","RecentsConstants","RecentsFeatureFlag","ImproveFeatureNames","SteeringCommittee","ImproveFeatureNamesToAuditComponentId","SubmitFeatureNames","Summary","PI","Meeting","FormAdministration","ServiceDelay","ClinicianDelay","PatientDecompensation","PatientDelay","DischargeIssue","InpatientTransfer","None","CopdSmsAlert","ChronicConditionCOPD","Messages","FeatureFlagAccess2","AssessmentFileTypes","Assessment","PPP","PCP","Casemgmt","_baseHas","baseHas","object","lodash_es_isArray","freeGlobal","global","freeSelf","self","Function","_Symbol","Symbol","objectProto","nativeObjectToString","symToStringTag","toStringTag","_baseGetTag","baseGetTag","getRawTag","isOwn","tag","unmasked","objectToString","lodash_es_isObjectLike","isObjectLike","lodash_es_isSymbol","isSymbol","reIsDeepProp","reIsPlainProp","lodash_es_isObject","isObject","uid","coreJsData","maskSrcKey","IE_PROTO","funcToString","reIsHostCtor","reIsNative","_baseIsNative","baseIsNative","isMasked","isFunction","toSource","_getNative","getNative","_nativeCreate","Hash","entries","hashClear","__data__","nativeCreate","delete","hashDelete","hashGet","hashHas","hashSet","_Hash","lodash_es_eq","eq","_assocIndexOf","assocIndexOf","ListCache","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","_ListCache","_Map","_getMapData","getMapData","isKeyable","MapCache","mapCacheClear","hash","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","_MapCache","memoize","resolver","TypeError","memoized","args","cache","Cache","lodash_es_memoize","rePropName","reEscapeChar","stringToPath","memoizeCapped","charCodeAt","quote","subString","_stringToPath","symbolProto","symbolToString","_baseToString","baseToString","arrayMap","iteratee","_castPath","castPath","isKey","_baseIsArguments","baseIsArguments","propertyIsEnumerable","isArguments","lodash_es_isArguments","reIsUint","_toKey","toKey","_hasPath","hasPath","hasFunc","isLength","isIndex","lodash_es_has","lodash_es_isUndefined","isUndefined","lodash_es_get","defaultValue","baseGet","photo","refreshFromCareAndTrackAwvPatient","nowTicks","patientInTierSubject","effectiveAt","expiresAt","parseSubject","patientInTierSubjectObj","lastFirst","displayPreferredName","isInvited","differenceInYears","displayEmail","YesNoEnum","Yes","No","AWVWorklistDisplayStatusEnum","ALL_PATIENTS","READY_TO_SCHEDULE","CALL_BACK_LATER","READY_TO_REMIND","SCHEDULED","READY_TO_SELF_REPORT","COMPLETED","INELIGIBLE","PATIENT_DECLINED","DEFERRED_TO_SIGNIFY","UNKNOWN","isSameOrAfter","totalActionCounts","alertsCounter","changeDateToYYYYMMDDorEmptyString","lastAwvProvider","awvStatusId","attributedCPTier","cmp","genderStr","attributedCpTier","attributedCp","ytdRaf","lastProvVisitDate","cohortDxCount","lastCcmCode","additionalParams","phone1_Type","phone2_Type","cohortProcedure_LastDate","cohortSpecialist_LastProviderName","cohortSpecialist_LastDate","visit","patientInfo","mbrDob","mbrGender","mbrPhone","patientAddressFromIHEAWVPatient","reportDate","dxCount","rafYtd","renderingProviderLastName","renderingProviderFirstName","facilityName","chronicConditions","lastProviderVisit","openRafWt","frequencyType","ap","src","rankedLastAwvDate","awvStatusDisplay","hasNotes","calculateWorkflowStatus","COWorkflowStatus","COWorkflowDueDate","COWorkflowScheduledDate","COWorkflowCompletedDate","Now","isSameOrBefore","PatientDeclined","Unknown","coWorkflowStatus","coWorkflowDueDate","coWorkflowScheduledDate","awvJson","getDataFromObject","checkAndCutOffTimeFromDate","getSelfReportDateFromAwv","Source","changeUIFriendlyName","rankedLastAwvDateSource","sourceNametoDisplay","mbrTelephone","outreachSchedulingStatus","outreachSchedulingDesc","outreachCallDateTime","evalProviderName","fileInfoDates","mostRecentAssessmentFileUpdatedMoment","lastFullDownloadOfAssessmentFilesMoment","mostRecentCmrFileUpdatedMoment","lastDownloadOfCmrFileMoment","lastDownloadOfAnyFileMoment","assessmentNotFound","fi","updatedAtUtc","availabilityInfo","statusDateUtc","addressFields","mbrAddressLine1","mbrAddressLine2","mbrCity","mbrState","mbrZip","addressString","CARE_ORCH_SELF_REPORTED","PEP_SELF_REPORTED","CLINICAL_DATA","CMS_CLAIMS_DATA","Provider","EHRTierName","RecentsMatchers","DocumentMatcher","createLog","elements","PatientMatcher","ReportMatcher","HCCDashboardMatcher","TimeTrackingMatcher","MSSPValueReportMatcher","FormsMatcher","PrescriptionsMatcher","PatientsCohortMatcher","getJsonFromUrl","w","part","PerformanceDashboardMatcher","MILLISECONDS_IN_HOUR","addHours","dirtyAmount","amount","addMilliseconds","MILLISECONDS_IN_MINUTE","addMinutes","addSeconds","MILLISECONDS_IN_DAY","compareLocalAsc","dateLeft","dateRight","getHours","getMinutes","getSeconds","getMilliseconds","differenceInDays","dirtyDateLeft","dirtyDateRight","differenceInCalendarDays","startOfDayLeft","startOfDayRight","timestampLeft","getTimezoneOffsetInMilliseconds","timestampRight","round","differenceInMilliseconds","roundingMap","trunc","defaultRoundingMethod","getRoundingMethod","differenceInMinutes","roundingMethod","differenceInSeconds","endOfWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","defaultOptions","getDefaultOptions","weekStartsOn","getDay","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isSameMonth","startOfSecond","setMilliseconds","isSameSecond","dateLeftStartOfSecond","dateRightStartOfSecond","dirtyDatesArray","datesArray","_typeof","currentDate","dirtyHours","setMinutes","dirtyMinutes","startOfMinute","setSeconds","startOfWeek","addWeeks","addDays","subWeeks","startOfISOWeek","MILLISECONDS_IN_WEEK","getISOWeek","startOfISOWeekYear","getISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","fourthOfJanuary","dirtyDayOfMonth","dayOfMonth","dirtyMonth","dateWithDesiredMonth","daysInMonth","getDaysInMonth","monthIndex","lastDayOfMonth","setYear","dirtyYear","getYear","adapterFactory","__assign","baseAdapterFactory","addMonths","OverlayModule","CalendarModule","forRoot","DateAdapter","useFactory","MatInputModule","MatAutocompleteModule","updatePhoneNumber","isPhoneValid","t_o_r22","protocol_r6","t_d_r26","t_w_r30","t_m_r34","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_10_div_15_coach_careplan_patient_task_2_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_10_div_15_coach_careplan_patient_task_4_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_10_div_15_coach_careplan_patient_task_6_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_10_div_15_coach_careplan_patient_task_8_Template","tasks_r17","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_10_div_15_Template","module_r42","t_r60","t_r63","t_r66","t_r69","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_12_coach_careplan_patient_task_2_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_12_coach_careplan_patient_task_3_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_12_coach_careplan_patient_task_5_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_12_coach_careplan_patient_task_7_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_12_coach_careplan_patient_task_9_Template","t_r78","t_r80","t_r82","t_r84","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_15_coach_careplan_patient_task_2_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_15_coach_careplan_patient_task_3_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_15_coach_careplan_patient_task_5_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_15_coach_careplan_patient_task_7_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_15_coach_careplan_patient_task_9_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11__svg_svg_5_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_span_8_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_10_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_11_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_12_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_13_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_14_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_div_15_Template","_r94","ctx_r93","protocolCheckClicked","CarePatientCareplanEditableComponent_div_0_div_1_div_11__svg_svg_4_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_8_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_10_Template","CarePatientCareplanEditableComponent_div_0_div_1_div_11_div_11_Template","_r97","CarePatientCareplanEditableComponent_div_0_div_1_div_11_Template","CarePatientCareplanEditableComponent_div_0_div_1_Template","t_r109","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_2_div_6_div_3_Template","x_r100","t_r112","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_2_div_7_div_3_Template","t_r115","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_2_div_8_div_3_Template","t_r118","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_2_div_9_div_3_Template","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_2_div_6_Template","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_2_div_7_Template","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_2_div_8_Template","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_2_div_9_Template","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_2_div_10_Template","t_r129","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_3_div_7_div_3_Template","protocolTasksToAssign","t_r132","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_3_div_8_div_3_Template","protocolTasksToActivate","t_r135","ctx_r134","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_3_div_9_div_3_Template","protocolTasksNotToBeDeactivated","t_r138","ctx_r137","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_3_div_10_div_3_Template","protocolTasksToBeDeactivated","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_3_div_1_Template","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_3_div_7_Template","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_3_div_8_Template","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_3_div_9_Template","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_3_div_10_Template","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_2_Template","CarePatientCareplanEditableComponent_ng_container_1_div_1_ng_container_3_Template","_r142","ctx_r141","selectedModuleActivateDeactivateInfo","ctx_r143","CarePatientCareplanEditableComponent_ng_container_1_div_1_Template","CarePatientCareplanEditableComponent","orgProtocols","activeProtocolsById","activeModulesById","activeEpisodesOfCareByName","activeEpisodesOfCare","smsPhoneNumberByProtocolId","availableProceduresByName","activeTasksById","activeTasksByProtocolId","getAndStoreOrgProtocols","protocolDetails","getAndStorePatientEpisodesOfCare","getAndStorePatientTasks","taskProtocolId","getAndAssignOrgAndPatientData","clearDefaultTasksState","protocolHandler","protocolTasks","protocolTask","listOfActiveModuleIds","moduleTasks","moduleTask","episode","checkModules","activeModules","_x4","updateModuleState","activeTasks","getProtocolActivateDeactivateInfo","deactivateTasks","activateOrDeactivateProtocol","_ref5","activateOrDeactivateTask","_x5","protocolTasksToLeaveAlone","modulesToActivate","modulesToBeDeactivated","modulesToLeaveAlone","excludeModuleIds","assignProcedure","tasksToReactivate","activateDeactivateTasks","protocolInfo","newPhoneNumber","_angular_core__WEBPACK_IMPORTED_MODULE_7__","CarePatientCareplanEditableComponent_div_0_Template","CarePatientCareplanEditableComponent_ng_container_1_Template","toggleIsActive","recurrenceText","goalText","repeatingTask","configurableFields","recurrence","formatDateForDateInput","isDateBefore","getOriginalDate","response_r27","repeatInterval","PatientTaskComponent_ng_container_15_div_7_div_4_option_5_Template","bloodPressureTask","goals","isGoalTrackingEnabled","unit","toggleBPAlertIsActive","systolicAlerts","systolicAlertRange","diastolicAlerts","diastolicAlertRange","isBPAlertActive","lowerValue","pulseAlerts","pulseAlertIsActive","pulseAlertRange","upperValue","PatientTaskComponent_ng_container_15_div_7_ng_container_5_div_1_Template","PatientTaskComponent_ng_container_15_div_7_ng_container_5_div_2_Template","PatientTaskComponent_ng_container_15_div_7_ng_container_5_div_3_Template","systolicDiastolicAlertOn","pulseAlertOn","weightTask","weightAlerts","weightAlertIsActive","PatientTaskComponent_ng_container_15_div_7_ng_container_6_div_1_Template","PatientTaskComponent_ng_container_15_div_7_ng_container_6_div_2_Template","weightAlertOn","bloodSugarTask","_r64","bloodSugarAlerts","bloodSugarAlertIsActive","bloodSugarAlertRange","PatientTaskComponent_ng_container_15_div_7_ng_container_7_div_1_Template","PatientTaskComponent_ng_container_15_div_7_ng_container_7_div_2_Template","bloodSugarAlertOn","PatientTaskComponent_ng_container_15_div_7_div_2_Template","PatientTaskComponent_ng_container_15_div_7_div_3_Template","PatientTaskComponent_ng_container_15_div_7_div_4_Template","PatientTaskComponent_ng_container_15_div_7_ng_container_5_Template","PatientTaskComponent_ng_container_15_div_7_ng_container_6_Template","PatientTaskComponent_ng_container_15_div_7_ng_container_7_Template","PatientTaskComponent_ng_container_15_div_7_Template","PatientTaskComponent_ng_container_15_span_10_Template","PatientTaskComponent_ng_container_15_span_11_Template","editModalIsOpen","saveTask","clonedTask","isTaskValid","normalizedDateFromDateWithOffset","PatientTaskComponent","updated","isRepeatingTask","isWeightTask","isBloodPressureTask","isBloodSugarTask","assignedTask","overWriteStatus","templateTask","taskTypeText","isTaskEditable","isLocked","systolicAlertIsActive","diastolicAlertIsActive","updateGoalsHistory","cf","date1","date2","utcOffset","updateTask","PatientTaskComponent_div_4_Template","PatientTaskComponent_div_5_Template","PatientTaskComponent_div_6_Template","PatientTaskComponent_div_7_Template","PatientTaskComponent_div_8_Template","PatientTaskComponent_div_9_Template","PatientTaskComponent_div_10_Template","PatientTaskComponent_ng_container_15_Template","GetAgeFromDOB","classes","isNotNull","MbiFormatPipe","GetInitialsFromNamePipe","maskCount","maskedString","repeat","MinuteSecondsPipe","MonthNumberPipe","getNameFromMonthNumber","RemoveStringWhitespacePipe","output","ActivatedRouteService","currentUrl$","distinctUntilChanged","getCurrentRoute","blanks","empty","AgGridLocalSettingsService","columnSettings","currentFilterSettingsObservable","storeUser","settingsObj","attributedCPtierByName","exl","filterObj","helperShortcuts","newFilterModel","storedCategoryList","getStoredPresetsFromLocalStorage","getStoredPresetFromLocalStorage","originPreset","storeStoredPresetsInLocalStorage","storeStoredPresetInLocalStorage","removeFilterFromStoredPresetsInLocalStorage","removeStoredPresetFromLocalStorage","removeFilterSettingsFromLocalStorage","oldFilterName","newFilterName","getColumnSettingsFromLocalStorage","localStorageKey","getPresetLocalStorageKey","storedColumnSettings","defaultSortModelByColId","columnDifferences","getColumnSettingsFromLocalStorageWithCategory","removeItem","originPresetName","originalFilterSettings","storedFilterSettingsRowsByName","foundDifferences","filterClearedOptions","removeStoredPresetsFromLocalStorage","storedPresetNames","exceptions","_angular_core__WEBPACK_IMPORTED_MODULE_6__","AuditService","moduleIdCare","auditBaseURL","compId","subComp","actionId","logAuditRequest","getAuditRequest","postAuditLogging","auditStruct","Details","ModuleId","LogAuditElements","ElementValue","elementId","tap","ORIGIN_URL","_authCheckComplete$","oidcSecurityService","publicEventsService","tokenHelperService","restApiService","hashLocationStrategy","_userInfoInternal$","chEndPoint","_inlogout","ReplaySubject","debuglog","registerForEvents","notification","EventTypes","NewAuthenticationResult","IdTokenExpired","onNewAuthorizationResult","init","base","checkAuth","loginResponse","userData$","userDataResult","userData","getIdToken","publishUserInfoIfExists","baseHref","getBaseHref","oidNotification","callGetUserInfo","getToken","checkAuthentication","userObj","getPayloadFromIdToken","userInfoEndPoint","idp","getHttp","idp_access_token","setUserInfoToStore","handleHttpErrorResponse","resetUserInfoInStore","endSessionUrl","endSession","_wpUserPromise","logoffLocal","revokeAccessToken","revokeRefreshToken","callLogoffAndRevokeTokens","logoffAndRevokeTokens","login","authorize","idp_sub","issuerUserId","getUserInfoFromStore","getUserId","getUserDnnId","isIdpExpiring","offsetMins","decodedIdToken","tokenExpirationDate","getTokenExpirationDate","offsetMilliSeconds","tokenExpirationValue","nowDate","tokenExpired","isIdpExpiringIfSignedIn","nowWithOffset","loadConfig","originUrl","authority","stsServer","authWellknownEndpointUrl","authWellknownEndpoint","redirectUrl","postLogoutRedirectUri","clientId","authClientId","scope","authConfigScope","silentRenew","autoUserInfo","logLevel","LogLevel","silentRenewUrl","renewTimeBeforeTokenExpiresInSeconds","useRefreshToken","ignoreNonceAfterRefresh","disableRefreshIdTokenAuthTimeValidation","apiUrl","basePath","getFromCache","getSingle","observable","buildOptions","buildUrl","share","showEULA$","isShown","WorkSheetTypes","sheet","freeForm","ExcelService","exportAsExcel","workbookData","excelFileName","workbook","ExcelJS","workSheet","workSheetType","theme","createFreeFormWorkSheet","createTableWorkSheet","createPlainWorkSheet","buffer","xlsx","writeBuffer","saveAsExcelFile","workSheetName","addWorksheet","cols","rownum","rowHeight","getRow","mergeCells","getCell","dataValidation","formulae","styling","border","font","numFmt","columnWidth","protection","uniqueHeaders","filterButton","addTable","headerRow","totalsRow","showRowStripes","jsonRow","cellValues","jsonDropdown","getSpreadSheetCellNumber","maxLength","eachCell","includeEmpty","columnLength","addRow","fromCharCode","FileSaver","FeatureFlagService","updateFeatureFlags","getFeatureFlags","flags","FilterToggleService","toggledStatus","FolderLookupService","httpClient","tierService","hccvipFolderId$","fromCaravanPHIFolderId$","qualityCampaignsFolderId$","getHccvipFolderId","getFromCaravanPHIFolderId","getQualityCampaignsFolderId","authToken","coachApiUrl","SubmitFormsService","generalFolderList$","selectedFolder$","tierServiceSubscription","tierNode","getListOfSpecificTier","userFormID","formNumber","submitPeriodID","specialStatusIncluded","formType","userFormIdParameter","getStatuses","formID","getStatusSummary","getSubmissions","getAdminReportResponseOverview","getAdminReportPracticeResponseView","tierLevel","getAdminReportICCOverview","getSavedPractices","getFormResponses","formDataString","updateQualityStatus","getSubmitPeriodsOverview","savedSubmitPeriodsOverview","getSubmitPeriodDetails","getAdminReportSubmitPeriods","getFolderGeneric","folder","parentFolder","grandparentFolder","getFormRemediationInfo","getAdminQuestionResponseReport","gql","AccessGQL","Query","isHeaderCondensed$","collapseSidebar$","isCondensed","isCollapsed","HierarchyTierEnum","Aco","Community","PrincipalParticipant","Practice","CHTIN_PREFIX","HierarchyTier","highestTier","highestAccessTier","chtinid","equals","AcoTier","CommunityTier","PrincipalParticipantTier","PracticeTier","UserTierService","updateUserTierInfo","userTierService","allTiersLoaded$","currentTierKey","currentTierIdKey","currentUserIdKey","initializeHierarchy","tierAbbreviation","restoreTier","storedUserId","freshUserID","storedTier","chtin","getChTin","getTier","tierItem","phiFlag","tier1_Name","tier3_Name","updateCurrentTier","getTiers","parentTier","getParent","childTier","getChild","restoreTierId","currentTierStaged","applyCurrentTier","getRouteValue","useHashStrategy","pathname","clearChildren","child","newTier","deepCopy","tierSelected","updateSelectedItem","tierIndex","newSelectedItem","hierarchyTierItemFromId","ErrorLoggingService","PropertiesPluginIdentifier","BreezeChannelIdentifier","AnalyticsPluginIdentifier","_pureAssign","func1","func2","_pureRef","_primitiveTypes","UNDEF_VALUE","NULL_VALUE","EMPTY","FUNCTION","OBJECT","PROTOTYPE","__PROTO__","UNDEFINED","CONSTRUCTOR","SYMBOL","POLYFILL_TAG","LENGTH","NAME","CALL","TO_STRING","ObjClass","ObjProto","StrCls","StrProto","MathCls","ArrCls","ArrProto","ArrSlice","safe","argArray","safeGet","cb","defValue","_createIs","theType","_createObjIs","theName","objToString","isNullOrUndefined","isStrictNullOrUndefined","isDefined","arg","isPrimitiveType","isString","isDate","isBoolean","isError","isPromiseLike","isTruthy","objGetOwnPropertyDescriptor","objHasOwnProperty","prop","objHasOwn","polyObjHasOwn","objForEachKey","theObject","callbackfn","thisArg","propMap","_createProp","objDefineProp","objDefineProperties","objDefine","propDesc","_createKeyValueMap","keyType","valueType","completeFn","theMap","_assignMapValue","asString","ERROR_TYPE","dumpObj","propertyValueDump","objType","stack","throwError","throwTypeError","_objFreeze","_doNothing","_getProto","objAssign","objKeys","objDeepFreeze","objFreeze","objGetPrototypeOf","createEnumKeyMap","createSimpleMap","mapClass","_globalCfg","_wellKnownSymbolMap","asyncIterator","hasInstance","isConcatSpreadable","iterator","matchAll","species","toPrimitive","unscopables","GLOBAL_CONFIG_KEY","_getGlobalValue","globalThis","_getGlobalConfig","gbl","_unwrapFunction","_unwrapFunctionWithPoly","funcName","clsProto","polyFunc","clsFn","theFunc","theArgs","_unwrapProp","propName","mathMax","strSlice","strSubstring","strSubstr","polyStrSubstr","strLeft","_polySymbols","_wellKnownSymbolCache","_globalLazyTestHooks","UNIQUE_REGISTRY_ID","_globalSymbolRegistry","gblCfg","gblSym","polyNewSymbol","theSymbol","polySymbolFor","registry","newSymbol_1","regId_1","polyGetKnownSymbol","knownName","_initTestHooks","getLazy","lazyValue","lzy","createCachedValue","toJSON","_cachedGlobal","WINDOW","_getGlobalInstFn","getFn","cachedValue","getGlobal","useCached","getInst","getWindow","hasDocument","getDocument","hasWindow","hasNavigator","getNavigator","hasHistory","getHistory","_symbol","_symbolFor","_iterSymbol$1","isNode","versions","isWebWorker","WorkerGlobalScope","_initSymbol","_getSymbolKey","hasSymbol","getSymbol","getKnownSymbol","noPoly","sym","newSymbol","symbolFor","isIterator","isIterable","iterForOf","iter","iterResult","done","failed","throw","return","fnApply","arrAppend","elms","elm","arrForEach","theArray","arrIndexOf","arrMap","arrSlice","_isProtoArray","_unsupportedError","arrReduce","objCreate","polyObjCreate","tempFunc","objSetPrototypeOf","proto","setPrototypeOf","_createCustomError","__","_setName","baseClass","createCustomError","constructCb","errorBase","theBaseClass","captureFn","captureStackTrace","_self","orgProto","utcNow","polyUtcNow","_createTrimFn","exp","_fnToString","_objCtrFnString","_gblWindow","strTrim","isPlainObject","_defaultDeepCopyHandler","plainObjDeepCopyHandler","defaultDeepCopyHandlers","arrayDeepCopyHandler","copyTo","functionDeepCopyHandler","dateDeepCopyHandler","_getSetVisited","visitMap","newPath","theEntry","_deepCopy","userHandler","handler","newCtx","isPlain","isPrim","newKey","_copyProps","newEntry","objDeepCopy","_doExtend","theArg","objCopyProps","deepExtend","obj1","obj2","obj3","obj4","obj5","obj6","_perf","getLength","getPerformance","strSplit","setValueByKey","lastKey","strEndsWith","polyStrEndsWith","searchString","searchValue","strIndexOf","REF","UNREF","HAS_REF","ENABLED","_createTimerHandler","refreshFn","cancelFn","theTimerHandler","timerId","_unref","_cancel","_refresh","h","_setEnabled","dn","_createTimeoutWith","overrideFn","isArr","setFn","clearFn","timerFn","scheduleTimeout","callback","timeout","Constructor","Prototype","strFunction","DynInstFuncTable","DynProxyTag","DynClassName","DynInstChkTag","DynAllowInstChkTag","DynProtoDefaultOptions","UnknownValue","str__Proto","DynProtoBaseProto","DynProtoGlobalSettings","DynProtoCurrent","strUseBaseInst","strSetInstFuncs","Obj","_objGetPrototypeOf","getPrototypeOf","_objGetOwnProps","getOwnPropertyNames","_gbl","_gblInst","_isObjectOrArrayPrototype","_isObjectArrayOrFunctionPrototype","_getObjProto","newProto","curProto","_forEachProp","props","name_1","lp","_isDynamicCandidate","skipOwn","_throwTypeError","_hasVisited","_populatePrototype","baseInstFuncs","setInstanceFunc","instFuncTable","instFuncs_1","_createDynamicPrototype","dynProtoProxy","instFunc","_getInstFunc","currentDynProtoProxy","canAddInst","objProto","visited","protoFunc","_getProtoFunc","_getObjName","unknownValue","dynamicProto","theClass","delegateFunc","classProto","_checkPrototype","thisTarget","thisProto","perfOptions","useBaseInst","instFuncs","_getInstanceFuncs","baseFuncs","_getBaseFuncs","_instFuncProxy","funcHost","baseProto","_DYN_TO_LOWER_CASE","_DYN_BLK_VAL","_DYN_LENGTH","_DYN_RD_ONLY","_DYN_NOTIFY","_DYN_WARN_TO_CONSOLE","_DYN_THROW_INTERNAL","_DYN_SET_DF","_DYN_WATCH","_DYN_LOGGER","_DYN_APPLY","_DYN_PUSH","_DYN_SPLICE","_DYN_HDLR","_DYN_CANCEL","_DYN_INITIALIZE","_DYN_IDENTIFIER","_DYN_REMOVE_NOTIFICATION_0","_DYN_ADD_NOTIFICATION_LIS1","_DYN_IS_INITIALIZED","_DYN_INSTRUMENTATION_KEY","_DYN__INACTIVE","_DYN_VALUE","_DYN_GET_NOTIFY_MGR","_DYN_GET_PLUGIN","_DYN_NAME","_DYN_I_KEY","_DYN_TIME","_DYN_PROCESS_NEXT","_DYN_GET_PROCESS_TEL_CONT2","_DYN_POLL_INTERNAL_LOGS","_DYN_ENABLED","_DYN_STOP_POLLING_INTERNA3","_DYN_UNLOAD","_DYN_ON_COMPLETE","_DYN_VERSION","_DYN_LOGGING_LEVEL_CONSOL4","_DYN_CREATE_NEW","_DYN_TEARDOWN","_DYN_MESSAGE_ID","_DYN_MESSAGE","_DYN_IS_ASYNC","_DYN_DIAG_LOG","_DYN__DO_TEARDOWN","_DYN_UPDATE","_DYN_GET_NEXT","_DYN_SET_NEXT_PLUGIN","_DYN_PROTOCOL","_DYN_USER_AGENT","_DYN_SPLIT","_DYN_NODE_TYPE","_DYN_REPLACE","_DYN_LOG_INTERNAL_MESSAGE","_DYN_TYPE","_DYN_HANDLER","_DYN_STATUS","_DYN_GET_RESPONSE_HEADER","_DYN_GET_ALL_RESPONSE_HEA5","_DYN_IS_CHILD_EVT","_DYN_DATA","_DYN_GET_CTX","_DYN_SET_CTX","_DYN_COMPLETE","_DYN_ITEMS_RECEIVED","_DYN_URL_STRING","_DYN_SEND_POST","_DYN_HEADERS","_DYN_TIMEOUT","_DYN_SET_REQUEST_HEADER","_DYN_TRACE_ID","_DYN_SPAN_ID","_DYN_TRACE_FLAGS","strShimFunction","strShimObject","strShimUndefined","strShimPrototype","UNDEFINED_VALUE","STR_EMPTY","STR_CHANNELS","STR_CORE","STR_CREATE_PERF_MGR","STR_DISABLED","STR_EXTENSION_CONFIG","STR_EXTENSIONS","STR_PROCESS_TELEMETRY","STR_PRIORITY","STR_EVENTS_SENT","STR_EVENTS_DISCARDED","STR_EVENTS_SEND_REQUEST","STR_PERF_EVENT","STR_OFFLINE_STORE","STR_OFFLINE_SENT","STR_OFFLINE_DROP","STR_GET_PERF_MGR","STR_DOMAIN","STR_PATH","STR_NOT_DYNAMIC_ERROR","rCamelCase","rNormalizeInvalid","rLeadingNumeric","isNotNullOrUndefined","normalizeJsName","_all","letter","strContains","getExceptionName","valChk","srcChk","theValue","getSetValue","_createProxyFunction","srcFunc","originalArguments","proxyFunctionAs","overwriteTarget","proxyFunctions","functionsToProxy","theFuncName","optimizeObject","ObjAssign","objExtend","extended","argLen","deep","isArgArray","isArgObj","isNewArray","isFeatureEnabled","cfg","rlt","ft","featureOptIn","mode","getResponseText","xhr","responseText","formatErrorMessageXdr","xdr","formatErrorMessageXhr","prependTransports","theTransports","newTransports","strWithCredentials","_appendHeader","theHeaders","_getAllResponseHeaders","isOneDs","convertAllHeadersToMap","headersString","headerEntry","strLocation","strJSON","strCrypto","strMsCrypto","strMsie","strTrident","strXMLHttpRequest","_isTrident","_navUserAgentCheck","_enableMocks","_useXDomainRequest","_beaconsSupported","_hasProperty","property","supported","getLocation","checkForMock","mockLocation","hasJSON","getJSON","isIE","nav","userAgent","getIEVersion","userAgentStr","navigator_1","ua","doc","tridentVer","isBeaconsSupported","sendBeacon","isFetchSupported","withKeepAlive","isSupported","isXhrSupported","UInt32Mask","MaxUInt32","SEED1","SEED2","_mwcSeeded","_mwcW","_mwcZ","_autoSeedMwc","_mwcSeed","seedValue","random32","signed","getCrypto","getMsCrypto","mwcRandom32","newId","chars","version","instanceName","_dataUid","_canAcceptData","createUniqueNamespace","includeVersion","createElmNodeData","addDefault","theCache","_getCache","kill","_isConfigDefaults","isVal","_getDefault","dynamicHandler","theConfig","cfgDefaults","isDefaultValid","dfVal","fallbacks","fallback","fbValue","_resolveDefaultValue","newValue_1","_applyDefaultValue","mergeDf","reference","readOnly","blkDynamicValue","mrg","usingDefault","cfgValue","dfName","dfValue","CFG_HANDLER_LINK","BLOCK_DYNAMIC","FORCE_DYNAMIC","_cfgDeepCopy","target_1","_canMakeDynamic","getFunc","blkVal","throwInvalidAccess","aggregationErrorType","arrayMethodsToPatch","_throwDynamicError","logger","_getOwnPropGetter","_setDynamicProperty","getter","_createDynamicProperty","trk","clr","checkDynamic","isObjectOrArray","_getProperty","_makeDynamicObject","activeHandler","act","chng","_setProperty","ro","upd","isReferenced","hdlr","valueState","newIsObjectOrArray","_setDynamicPropertyState","inPlace","rdOnly","blkProp","blockDynamicConversion","_patchArray","orgMethod","_i","symPrefix","symPostfix","_createDynamicHandler","getDynamicConfigHandler","theState","newTarget","cfgHandler","_notifyWatchers","_setValue","_applyDefaults","defaultValues","_watch","configHandler","_createAndUseHandler","rm","use","_rdOnly","_blkPropValue","_block","allowUpdate","prevUpd","_createState","dynamicPropertySymbol","dynamicPropertyReadOnly","dynamicPropertyReferenced","dynamicPropertyBlockValue","dynamicPropertyDetail","_waitingHandlers","_watcherTimer","_useHandler","prevWatcher","setDf","notifyHandlers","watcherFailures_1","throwAggregationError","sourceErrors","theMessage","srcError","_addWatcher","_trackHandler","createDynamicConfig","defaultConfig","onConfigChange","_logInvalidAccess","_debugListener","listenerFuncs","_aiNamespace","_listenerProxyFunc","dbgExt","getDebugExt","listener","ns","disableDbgExt","_getExtensionNamespace","ApplicationInsights","ChromeDbgExt","STR_WARN_TO_CONSOLE","loggingLevelConsole","loggingLevelTelemetry","maxMessageLimit","enableDebug","_logFuncs","_sanitizeDiagnosticText","_logToConsole","theConsole","getConsole","logFunc","_InternalLogMessage","msgId","isUserAct","strProps","diagnosticText","safeGetLogger","DiagnosticLogger","_loggingLevelConsole","_loggingLevelTelemetry","_maxInternalMessageLimit","_enableDebug","_unloadHandler","_messageCount","_messageLogged","_logInternalMessage","severity","_areInternalMessagesThrottled","logMessage","messageKey","_debugExtMsg","throttleLimitMessage","throttleMessage","errorToConsole","_setDefaultsFromConfig","consoleLoggingLevel","debugToConsole","resetInternalMessageCount","isAsync","__ieDyn","_getLogger","_throwInternal","_warnToConsole","strExecutionContextKey","strParentContextKey","strChildrenContextKey","PerfEvent","payloadDetails","theDetails_1","childTime","childEvts","childEvt","exTime","ParentContextKey","ChildrenContextKey","PerfManager","manager","fire","perfEvent","doPerfActiveKey","doPerf","mgrSource","getSource","perfMgr","perfEvt","currentActive","generateW3CId","tmp","hexValues","oct","clockSequenceHi","INVALID_TRACE_ID","INVALID_SPAN_ID","_isValid","invalidValue","_formatValue","createTraceParent","traceId","spanId","isValidTraceId","isValidSpanId","traceFlags","formatTraceParent","_formatFlags","pluginStateData","_getPluginState","plugin","initializePlugins","processContext","extensions","pluginState","initPlugins","lastPlugin","proxy","thePlugin","isInitialized","getCfg","sortPlugins","plugins","extA","extB","bHasProcess","strTelemetryPluginChain","strHasRunFlags","strGetTelCtx","_chainId","_createInternalContext","telemetryChain","startAt","_nextProxy","_onComplete","_getNextProxyStart","createTelemetryProxyChain","_next","_moveNext","nextProxy","completeDetails","diagLog","getExtCfg","_resolveExtCfg","newConfig","_getExtCfg","getConfig","_getConfig","extConfig","rootConfig","hasNext","getNext","setNext","nextPlugin","iterate","_iterateChain","onComplete","_addOnComplete","createIfMissing","idCfg","extCfg","createProcessTelemetryContext","internalContext","_processNext","env","_createNew","createProcessTelemetryUnloadContext","unloadState","createProcessTelemetryUpdateContext","updateState","firstProxy","lastProxy_1","newProxy","createTelemetryPluginProxy","chainId","hasProcessTelemetry","hasSetNext","proxyChain","getPlugin","processTelemetry","_processTelemetry","itemCtx","_processChain","_getTelCtx","_callProcessTelemetry","sync","unload","_unloadPlugin","unloadCtx","_callTeardown","hasRun","pluginCore","_updatePlugin","updateCtx","_callUpdate","_setNext","processPluginFn","hasRunContext","nextId","hasNextRun","createUnloadHandlerContainer","handlers","_addHandler","_runHandlers","createUnloadHookContainer","_hooks","_doUnload","oldHooks","_addHook","hooks","strGetPlugin","BaseTelemetryPlugin","_isinitialized","_rootCtx","_nextPlugin","_unloadHandlerContainer","_hookContainer","currentCtx","_setDefaults","pluginChain","_initDefaults","unloadDone","theUnloadCtx","theUnloadState","_unloadCallback","updateDone","theUpdateCtx","_doUpdate","_updateCallback","setInitialized","undefValue","ApplicationinsightsAngularpluginErrorService","errorServices","instance","analyticsPlugin","clearErrorHandlers","addErrorHandler","errorService","removeErrorHandler","trackException","exception","ɵprov","defaultAngularExtensionConfig","AngularPlugin","_analyticsPlugin","_propertiesPlugin","_angularCfg","_eventSubscription","_isPageInitialLoad","_prevRouter","_errorServiceInstance","priority","_base","initialize","useInjector","trackPageView","uri","_getDbgPlgTargets","_getErrorService","pageView","telemetryTrace","traceID","_doTeardown","asyncCallback","processNext","ɵcmp","encapsulation","strHasOwnProperty","__assignFn","extendStaticsFn","__proto__","__extendsFn","__spreadArrayFn","il","createEnumStyle","createEnum","StorageType","LocalStorage","SessionStorage","AI","AI_AND_W3C","W3C","Normal","Critical","_DYN_INGESTIONENDPOINT","_DYN_TO_STRING","_DYN_REMOVE_ITEM","_DYN_COUNT","_DYN_PRE_TRIGGER_DATE","_DYN_DISABLED","_DYN_INTERVAL","_DYN_DAYS_OF_MONTH","_DYN_DATE","_DYN_GET_UTCDATE","_DYN_STRINGIFY","_DYN_PATHNAME","_DYN_CORRELATION_HEADER_E0","_DYN_EXCEPTIONS","_DYN_PARSED_STACK","_DYN_PROPERTIES","_DYN_MEASUREMENTS","_DYN_SIZE_IN_BYTES","_DYN_TYPE_NAME","_DYN_SEVERITY_LEVEL","_DYN_PROBLEM_GROUP","_DYN_IS_MANUAL","_DYN__CREATE_FROM_INTERFA1","_DYN_ASSEMBLY","_DYN_FILE_NAME","_DYN_HAS_FULL_STACK","_DYN_LEVEL","_DYN_METHOD","_DYN_LINE","_DYN_DURATION","_DYN_RECEIVED_RESPONSE","_canUseLocalStorage","_canUseSessionStorage","_storagePrefix","_getLocalStorageObject","utlCanUseLocalStorage","_getVerifiedStorageObject","storageType","getGlobalInst","fail","_getSessionStorageObject","utlCanUseSessionStorage","utlSetStoragePrefix","storagePrefix","utlGetLocalStorage","utlSetLocalStorage","utlGetSessionStorage","utlSetSessionStorage","utlRemoveSessionStorage","DisabledPropertyName","SampleRate","ProcessLegacy","HttpMethod","DEFAULT_BREEZE_ENDPOINT","DEFAULT_BREEZE_PATH","strNotSpecified","strIkey","dataSanitizeKeyAndAddUniqueness","origLength","dataSanitizeKey","nameTrunc","uniqueField","dsPadNumber","dataSanitizeString","valueTrunc","dataSanitizeUrl","dataSanitizeInput","dataSanitizeMessage","messageTrunc","dataSanitizeProperties","tempProps_1","dataSanitizeMeasurements","measurements","tempMeasurements_1","measure","_msgId","inputTrunc","createTelemetryItem","baseType","envelopeName","customProperties","systemProperties","iKey","telemetryItem","ext","tags","baseData","Event","aiDataContract","ver","envelopeType","Trace","severityLevel","DataPoint","kind","stdDev","Metric","metrics","dataPoint","strEmpty","msToTimeSpan","totalms","ms","sec","hour","PageView","durationMs","dataSanitizeId","PageViewPerformance","unused","cs4BaseData","perfTotal","networkConnect","sentRequest","receivedResponse","domProcessing","strError","strStack","strStackDetails","strErrorSrc","strMessage","strDescription","_stringify","convertToString","_formatMessage","theEvent","errorType","evtMessage","lineno","colno","_isStackDetails","_convertStackObj","errorStack","_getStackFromErrorObj","errorObj","opera","_getOperaStack","_getErrorType","typeName","_formatErrorCode","Exception","_isExceptionInternal","_ExceptionDetails","CreateAutoException","lineNumber","columnNumber","evt","errorSrc","stackDetails","CreateFromInterface","toInterface","problemGroup","isManual","exceptionDetailsInterface","CreateSimpleException","assembly","line","formatError","outerId","hasFullStack","parsedStack","_isExceptionDetailsInternal","_parseStack","frames","level_1","totalSizeInBytes_1","frame","theFrame","_StackFrame","parsedFrame","right","acceptedLeft","acceptedRight","dataSanitizeException","exceptionTrunc","_formatStackTrace","sourceFrame","level","matches","sizeInBytes","baseSize","RequestHeaders","createTypeMap","createValueMap","requestContextHeader","requestContextTargetKey","requestContextAppIdFormat","requestIdHeader","traceParentHeader","traceStateHeader","sdkContextHeader","sdkContextHeaderAppIdRequest","requestContextHeaderLowerCase","_document","_htmlAnchorIdx","_htmlAnchorElement","urlParseUrl","anchorIdx","anchorCache","tempAnchor","host","urlParseHost","inclPort","fullHost","urlParseFullHost","port","_internalEndpoints","isInternalApplicationInsightsEndpoint","endpointUrl","correlationIdCanIncludeCorrelationHeader","requestUrl","currentHost","disableCorrelationHeaders","correlationHeaderExcludePatterns","requestHost","enableCorsCorrelation","matchExists_1","includedDomains","correlationHeaderDomains","domain","excludedDomains","correlationHeaderExcludedDomains","correlationIdGetCorrelationContext","responseHeader","correlationId","correlationIdGetCorrelationContextValue","keyValues","keyValue","dateTimeUtilsNow","perf","timing","navigationStart","dateNow","dateTimeUtilsDuration","createDistributedTraceContextFromTrace","parentCtx","trace","getName","setName","getTraceId","setTraceId","getSpanId","parentID","setSpanId","getTraceFlags","setTraceFlags","newTraceFlags","RemoteDependencyData","absoluteUrl","commandName","resultCode","requestAPI","correlationContext","dependencyKind","dependencySource","dependencyTypeName","dependencyFields","AjaxHelperParseDependencyPath","parsedUrl","pathName","createDomEvent","eventName","createEvent","initEvent","_stringToBoolOrDefault","cfgDfMerge","cfgDfSet","setter","cfgDfValidate","validator","fallBackName","cfgDfBoolean","_doc","strToGMTString","strToUTCString","strCookie","strExpires","strIsCookieUseDisabled","strDisableCookiesUsage","strConfigCookieMgr","_supportsCookies","_allowUaSameSite","_parsedCookieValue","_cookieCache","_globalCookieConfig","rootDefaultConfig","cookieCfg","enabled","ignoreCookies","blockedCookies","cookieDomain","cookiePath","_getDoc","_isMgrEnabled","cookieMgr","_isIgnoredCookie","cookieMgrCfg","_isCfgEnabled","cookieMgrConfig","isCfgEnabled","cookieEnabled","safeGetCookieMgr","getCookieMgr","createCookieMgr","_gblCookieMgr","inst","_domain","unloadHandler","_enabled","_getCookieFn","_setCookieFn","_delCookieFn","getCookie","_getCookieValue","setCookie","_setCookieValue","delCookie","areCookiesSupported","gblManager","setEnabled","maxAgeSec","_isBlockedCookie","_extractParts","_isIE","expireMs","expiry","setTime","_formatDate","location_1","uaDisallowsSameSiteNone","_formatCookieValue","del","purge","thePart","theDate","cookieValue","theCookie","strOnPrefix","strAttachEvent","strAddEventHelper","strDetachEvent","strRemoveEventListener","strEvents","strVisibilityChangeEvt","strPageHide","strBeforeUnload","strPageHideNamespace","rRemoveEmptyNs","rRemoveTrailingEmptyNs","_guid","elmNodeData","eventNamespace","_normalizeNamespace","_getEvtNamespace","evtNamespace","theNamespace_1","parsedEvent","_getRegisteredEvents","evtName","aiEvts","registeredEvents","_doDetach","handlerRef","useCapture","_doUnregister","unRegFn","capture","mergeEvtNamespace","theNamespace","namespaces","eventOn","_doAttach","registeredEvent","guid","eventOff","evtName_1","found_1","_unregisterEvents","eventCache","evtType","regEvent","_addEventListeners","excludeEvents","added","addEventHandler","removeEventListeners","removeEventHandler","addPageHideEventListener","newNamespaces","pageUnloadAdded","_handlePageVisibility","visibilityState","aiInstrumentHooks","cbNames","_arrLoop","_doCallbacks","callDetails","cbArgs","hookCtx","hook","cbks","orgEx","hookErrorCb","_getOwner","checkPrototype","checkParentProto","owner","_createInstrumentHook","callbacks","aiHook","newFunc","_createFunctionHook","orgArgs","funcArgs","_replaceArg","_createArgs","rslt","theHook","InstrumentFunc","InstrumentEvent","_DYN_IS_STORAGE_USE_DISAB0","_DYN__ADD_HOOK","_DYN_CORE","_DYN_DATA_TYPE","_DYN_ENVELOPE_TYPE","_DYN_TRACK","_DYN_TRACK_PAGE_VIEW","_DYN_TRACK_PREVIOUS_PAGE_1","_DYN_SEND_PAGE_VIEW_INTER2","_DYN_START_TIME","_DYN_SEND_PAGE_VIEW_PERFO3","_DYN_POPULATE_PAGE_VIEW_P4","_DYN_HREF","_DYN_SEND_EXCEPTION_INTER5","_DYN_EXCEPTION","_DYN_ERROR","_DYN__ONERROR","_DYN_ERROR_SRC","_DYN_LINE_NUMBER","_DYN_COLUMN_NUMBER","_DYN__CREATE_AUTO_EXCEPTI6","_DYN_ADD_TELEMETRY_INITIA7","_DYN_AUTO_TRACK_PAGE_VISI9","_DYN_IS_BROWSER_LINK_TRAC10","_DYN_ENABLE_AUTO_ROUTE_TR11","_DYN_ENABLE_UNHANDLED_PRO12","_DYN_AUTO_UNHANDLED_PROMI13","_DYN_GET_ENTRIES_BY_TYPE","_DYN_IS_PERFORMANCE_TIMIN14","_DYN_GET_PERFORMANCE_TIMI15","_DYN_NAVIGATION_START","_DYN_SHOULD_COLLECT_DURAT16","_DYN_IS_PERFORMANCE_TIMIN17","_DYN_RESPONSE_START","_DYN_LOAD_EVENT_END","_DYN_RESPONSE_END","_DYN_CONNECT_END","_DYN_PAGE_VISIT_START_TIM18","PageViewManager","appInsights","overridePageViewDuration","pageViewPerformanceManager","_logger","queueTimer","itemQueue","pageViewPerformanceSent","firstPageViewSent","_flushChannels","flush","_startTimer","allItems","doFlush","_addQueue","navigationEntries","timeOrigin","loadEventStart","duration_1","customDuration","pageViewSent","pageViewPerformance","teardown","botAgentNames","_isPerformanceTimingSupported","_isPerformanceTimingDataReady","domainLookupStart","domLoading","_getPerformanceTiming","_shouldCollectDuration","durations","isGoogleBot","PageViewPerformanceManager","navigationTiming","_getPerformanceNavigationTiming","_isPerformanceNavigationTimingSupported","getEntriesByType","total","network","dom","requestStart","responseEnd","PageVisitTimeManager","pageVisitTimeTrackingHandler","prevPageVisitDataKeyName","currentPageName","currentPageUrl","prevPageVisitTimeData","restartPageVisitTimer","pageUrl","prevPageVisitData","stopPageVisitTimer","pageVisitEndTime","pageVisitDataJsonStr","pageVisitTime","currPageVisitDataStr","PageVisitData","Timing","_events","stop","_dispatchEvent","evnt","dispatchEvent","sessionRenewalMs","_chkConfigMilliseconds","sessionExpirationMs","disableExceptionTracking","samplingPercentage","_chkSampling","namePrefix","cfgDfString","disableFlushOnBeforeUnload","disableFlushOnUnload","AnalyticsPlugin","_eventTracking","_pageTracking","_pageViewManager","_pageViewPerformanceManager","_pageVisitTimeManager","_preInitTelemetryInitializers","_isBrowserLinkTrackingEnabled","_browserLinkInitializerAdded","_enableAutoRouteTracking","_historyListenerAdded","_disableExceptionTracking","_autoExceptionInstrumented","_enableUnhandledPromiseRejectionTracking","_autoUnhandledPromiseInstrumented","_extConfig","_autoTrackPageVisitTime","_prevUri","_currUri","_evtNamespace","autoRoutePVDelay","throwInternal","trackEvent","EventTelemetry","startTrackEvent","stopTrackEvent","trackTrace","trackMetric","metric","inPv","refUri","referrer","trackPageViewPerformance","inPvp","startTrackPage","stopTrackPage","measurement","loc","theError","_window","isCrossOriginError","_sendCORSException","errorString","telemetryInitializer","initializer","_populateDefaults","_updateStorageUsage","utlDisableStorage","utlEnableStorage","_addDefaultTelemetryInitializers","browserLinkPaths_1","envelope","remoteData","trackPageVisitTime","average","sampleCount","PageName","PageUrl","_updateExceptionTracking","locn","autoExceptionInstrumented","rsp","_addUnhandledPromiseRejectionTracking","_location","_getReason","_updateLocationChange","win","_history","pushState","replaceState","strUndefined","_addHistoryListener","_popstateHandler","_locationChangeHandler","distributedTraceCtx","_getDistributedTraceCtx","getTraceCtx","traceLocationName","__extends","Version","STR_PROMISE","doAwaitResponse","doAwait","resolveFn","rejectFn","finallyFn","doFinally","finally","_debugState","_debugResult","_debugHandled","_hasInitEvent","_promiseDebugEnabled","STRING_STATES","DISPATCH_EVENT","_hasInitEventFn","_hasPromiseRejectionEvent","_promiseCls","_promiseCreator","_allSettledCreator","NODE_UNHANDLED_REJECTION","UNHANDLED_REJECTION","_currentPromiseId","_uniquePromiseId","_unhandledRejectionTimeout","dumpFnObj","_createAllPromise","newPromise","additionalArgs","values_1","pending_1","_createAllSettledPromise","processItem","createAsyncPromise","executor","_createPromise","processor","_settledValue","_thePromise","_state","_hasResolved","_queue","_parentId","_handled","_unHandledRejectionHandler","_then","onResolved","onRejected","_processQueue","_strState","_createSettleIfFn","newState","allowState","_notifyUnhandledRejection","populateEvent","useNewEvent","theEvt","_catch","_finally","onFinally","thenFinally","catchFinally","_addDebugState$1","thePromise","stateFn","resultFn","handledFn","_toString","_rejectFn","timeoutItemProcessor","callbackTimeout","syncItemProcessor","createNativePromise","PrmCls","_resolve","_reject","createPromise","createAllPromise","_DYN_FEATURE_OPT_IN","_DYN_ON_CFG_CHANGE_RECEIV0","_DYN_NON_OVERRIDE_CONFIGS","_DYN_SCHEDULE_FETCH_TIMEO1","replaceByNonOverrideCfg","nonOverrideConfigs","curLevel","maxLevel","exceedMaxLevel","curCfg_1","nonOverrideVal","OFF","udfVal","_defaultConfig","syncMode","blkCdnCfg","customEvtName","cfgUrl","overrideSyncFn","overrideFetchFn","instrumentationKey","connectionString","CfgSyncPlugin","_extensionConfig","_mainConfig","_evtName","_cfgUrl","_timeoutHandle","_receiveChanges","_broadcastChanges","_blkCdnCfg","_fetchTimeout","_retryCnt","_onCfgChangeReceive","_nonOverrideConfigs","_fetchFn","_overrideFetchFn","_overrideSyncFn","_paused","_setCfg","isAutoSync","_sendCfgsyncEvents","updateCfg","_eventOff","global_1","customDetails","sendCustomEvent","CustomEvent","createCustomDomEvent","initCustomEvent","_updateEventListenerName","_addEventListener","global_2","cfgEvent","newCfg","_replaceTartgetByKeys","_fetchSender","oncomplete","fetchFn","Request","_doOnComplete","ok","_xhrSender","xhr_1","XMLHttpRequest","onreadystatechange","readyState","DONE","onerror","ontimeout","send","_onFetchComplete","JSON_1","applyCdnfeatureCfg","cdnCfg","cdnConfig_1","featureVal","resolveCdnFeatureCfg","userOptInDetails","cdnFt","cdnM","cdnOnV","onCfg","cdnOffV","offCfg","userFt","userM","userOnV","userOffV","onFld","offFld","onV","offV","blockCdnCfg","_overrideCdnCfgByFeature","ftVal","_setupTimer","_cfg","unref","_clearScheduledTimer","preBlkCdn","newEvtName","_getFetchFnInterface","pause","resume","setCfg","updateEventListenerName","_disableEvents","ActiveStatus","NONE","INACTIVE","ACTIVE","_noResponseQs","STR_POST_METHOD","SenderPostManager","_enableSendPromise","_isInitialized","_diagLog","_isOneDs","_onCompleteFuncs","_disableCredentials","_fallbackInst","_disableXhr","_disableBeacon","_disableBeaconSync","_disableFetchKeepAlive","_addNoResponse","_timeoutWrapper","_syncFetchPayload","_sendCredentials","_onError","_onNoPayloadUrl","_doBeaconSend","payload","plainTextBatch","_beaconSender","_onSuccess","onRetry","beaconOnRetry","resolveFunc","rejectFunc","disableXhrSync","endPointUrl","openXhr","urlString","withCredentials","isSync","_wrapSetXhrProp","_doOnReadyFunc","onReadyFunc","xhrOnComplete","onload","_doFetchSender","batch","requestHeaders","Headers","batchLength","ignoreResponse","responseHandled","credentials","keepalive","_sendReason","_handleError","onCompleteFunc","fetchOnComplete","response_1","_xdrSender","XDomainRequest","onloadFunc","xdrOnComplete","onprogress","endpoint","lastIndexOf","SetConfig","senderOnCompleteCallBack","enableSendPromise","disableXhr","disableBeacon","disableBeaconSync","timeWrapper","addNoResponse","disableFetchKeepAlive","sendPOST","disableCredentials","getSyncFetchPayload","getSenderInst","transports","_getSenderInterface","syncSupport","transportType","sendPostFunc","_transport","_isSync","getFallbackInst","runTargetUnload","doUnloadAll","targets","parseResponse","itemsAccepted","itemsReceived","_aiNameFunc","baseName","aiName","_aiApplication","_aiDevice","_aiLocation","_aiOperation","_aiSession","_aiUser","_aiCloud","_aiInternal","ContextTagKeys","createClassFromInterface","defaults","class_1","applicationVersion","applicationBuild","applicationTypeId","applicationId","applicationLayer","deviceId","deviceIp","deviceLanguage","deviceLocale","deviceModel","deviceFriendlyName","deviceNetwork","deviceNetworkName","deviceOEMName","deviceOS","deviceOSVersion","deviceRoleInstance","deviceRoleName","deviceScreenResolution","deviceType","deviceMachineName","deviceVMName","deviceBrowser","deviceBrowserVersion","locationIp","locationCountry","locationProvince","locationCity","operationId","operationName","operationParentId","operationRootId","operationSyntheticSource","operationCorrelationVector","sessionId","sessionIsFirst","sessionIsNew","userAccountAcquisitionDate","userAccountId","userStoreRegion","userAuthUserId","userAnonymousUserAcquisitionDate","userAuthenticatedUserAcquisitionDate","cloudName","cloudRole","cloudRoleVer","cloudRoleInstance","cloudEnvironment","cloudLocation","cloudDeploymentUnit","internalNodeName","internalSdkVersion","internalAgentVersion","internalSnippet","internalSdkSrc","CtxTagKeys","Envelope","sampleRate","Data","STR_DURATION","_DYN_TAGS","_DYN_DEVICE_TYPE","_DYN__GET","_DYN_ENQUEUE","_DYN_EVENTS_LIMIT_IN_MEM","_DYN_ITEM","_DYN_EMIT_LINE_DELIMITED_0","_DYN_CLEAR","_DYN_MARK_AS_SENT","_DYN_CLEAR_SENT","_DYN_BUFFER_OVERRIDE","_DYN__BUFFER__KEY","_DYN__SENT__BUFFER__KEY","_DYN_CONCAT","_DYN__MAX__BUFFER__SIZE","_DYN_TRIGGER_SEND","_DYN__SENDER","_DYN_CUSTOM_HEADERS","_DYN_MAX_BATCH_SIZE_IN_BY1","_DYN_ONUNLOAD_DISABLE_BEA2","_DYN_IS_BEACON_API_DISABL3","_DYN_ALWAYS_USE_XHR_OVERR4","_DYN_DISABLE_XHR","_DYN_ENABLE_SESSION_STORA5","_DYN__BUFFER","_DYN_ONUNLOAD_DISABLE_FET6","_DYN_DISABLE_SEND_BEACON_7","_DYN_ENABLE_SEND_PROMISE","_DYN_GET_SENDER_INST","_DYN_UNLOAD_TRANSPORTS","_DYN_CONVERT_UNDEFINED","_DYN_MAX_BATCH_INTERVAL","_DYN_SERIALIZE","_DYN__ON_ERROR","_DYN__ON_PARTIAL_SUCCESS","_DYN__ON_SUCCESS","_DYN_ITEMS_ACCEPTED","_DYN_ORI_PAYLOAD","_DYN_BASE_TYPE","_DYN_SAMPLE_RATE","_DYN_EVENTS_SEND_REQUEST","_DYN_GET_SAMPLING_SCORE","strBaseType","strBaseData","strProperties","strTrue","_setValueIf","_extractPropsAndMeasurements","_convertPropsUndefinedToCustomDefinedValue","customUndefinedValue","_createEnvelope","iKeyNoDashes","_extractPartAExtensions","envTags","itmExt","itmTags","extUser","authId","localId","extApp","app","sesId","extDevice","device","deviceClass","ip","web","browserLang","browserVer","browser","envData","envBaseData","envProps","screenRes","userConsent","extOs","os","osVer","extTrace","tgs","tg","theTags","EnvelopeCreator","EnvelopeCreatorInit","EventEnvelopeCreator","customMeasurements","baseTypeSource","eventData","BaseSendBuffer","_buffer","_bufferFullMessageSent","_maxRetryCnt","maxRetryCnt","_set","cnt","getItems","batchPayloads","payloads","payloadStr_1","newLogger","canUseSessionStorage","newBuffer","SessionStorageSendBuffer","ArraySendBuffer","PREVIOUS_KEYS","_namePrefix","bufferItems","_getBuffer","itemsInSentBuffer","previousItems","_getPreviousEvents","_getItemsFromPreviousKey","prefixEvents","notDeliveredItems","_removePayloadsFromBuffer","remaining","payloadStr","prefixedKey","_getBufferBase","bufferJson","buffer_1","_setBuffer","transFormedItems_1","BUFFER_KEY","sentElements","unsentItems","sentItems","VERSION","SENT_BUFFER_KEY","MAX_BUFFER_SIZE","Serializer","_serializeObject","circularReferenceCheck","_serializeStringMap","_serializeArray","contract","isRequired","sources","expectedType","HashCodeScoreGenerator","getHashCodeScore","getHashCode","INT_MAX_VALUE","SamplingScoreGenerator","hashCodeGenerator","Sample","samplingRate","samplingScoreGenerator","isSampledIn","_getResponseText","defaultAppInsightsChannelConfig","disableTelemetry","isRetryDisabled","httpXHROverride","isOverrideFn","retryCodes","EnvelopeTypeCreator","TraceEnvelopeCreator","PageViewEnvelopeCreator","currentContextId","bd","pageType","isLoggedIn","pageViewData","PageViewPerformanceEnvelopeCreator","ExceptionEnvelopeCreator","exData","MetricEnvelopeCreator","baseMetricData","DependencyEnvelopeCreator","remoteDepData","responseCode","Sender","_consecutiveErrors","_retryAt","_serializer","_stamp_specific_redirects","_headers","_syncUnloadSender","_offlineListener","_endpointUrl","_orgEndpointUrl","_maxBatchSizeInBytes","_beaconSupported","_beaconOnUnloadSupported","_beaconNormalSupported","_customHeaders","_disableTelemetry","_instrumentationKey","_convertUndefined","_isRetryDisabled","_maxBatchInterval","_sessionStorageUsed","_bufferOverrideUsed","_alwaysUseCustomSend","_fetchKeepAlive","_xhrSend","_fallbackSend","_disableBeaconSplit","_sendPostMgr","_retryCodes","_xdrOnLoad","_xhrReadyStateChange","countOfItemsInPayload","_checkResponsStatus","responseURL","_getPayloadArr","_validate","diagLogger","_isSampledIn","_sample","_getEnvelope","aiEnvelope","constructEnvelope","doNotSendItem","callBack","_serialize","valid","_batch","_createPayload","_getHeaders","_doSend","sendInterface","markAsSent","payloadData","_getPayload","_getOnComplete","_checkMaxSize","incomingPayload","incomingSize","isOnline","responseUrl","_appId","appId","_checkAndUpdateEndPointUrl","_isRetriable","_resendPayload","_doUnloadSend","_isStringArr","_fetchKeepAliveSender","transport","payloadSize","linearFactor","payload_1","_setRetryTime","delayInSeconds","backOffSlot","backOffDelay","retryInterval","timerValue","sendReason","onunloadFlush","addHeader","createOfflineListener","parentEvtNamespace","_navigator","_isListening","listenerList","rState","onLine","uState","_currentState","calCurrentState","_enableEvents","ononline","_setOnline","_setOffline","listnerNoticeCheck","offlineState","_isOnline","isListening","_unload","addListener","setOnlineState","senderConfig","activeStatus","bufferOverride","_validateInstrumentationKey","disableValidation","disableInstrumentationKeyValidation","sendPostConfig","_getSendPostMgrConfig","onCompleteFuncs","resValue","canSend","_onBeaconRetry","droppedPayload","thePayload","customInterface","httpInterface","syncInterface","xhrInterface","syncTransports","payloadItem","isCompletelyIdle","async","forcedSender","_notifySendRequest","sendRequest","_getNotifyMgr","_notificationManager","ieVer","getOfflineSupport","getUrl","createPayload","shouldProcess","_onPartialSuccess","retry","errors_1","extracted","orig","convertUndefined","parseConnectionString","kvPairs","kv","kvParts","endpointsuffix","ThrottleMgr","_config","_localStorageObj","_isTriggered","_isReady","_isSpecificDaysGiven","_flushMessage","msgID","saveUnsentMsg","_canSampledIn","_getCfgByKey","randomValue","maxValue","localStorageObj","_getLocalStorageObjByKey","canThrottle","_canThrottle","throttled","isTriggered","_isTrigger","maxSendNumber","localStorageName","_getLocalStorageName","_resetLocalStorage","_sendMessage","isThrottled","throttleNum","_getQueueByKey","_setCfgByKey","curCfg","configInterval","daysOfMonth","_getIntervalConfig","monthInterval","dayInterval","canUseLocalStorage","curDate","_getThrottleDate","monthCheck","monthExpand","_checkInterval","dayCheck","daySpan","msgKey","fix","storageName","curObj","_getLocalStorageObj","storageObj","preTriggerDate","isTrigger","_isTriggeredOnCurDate","_initConfig","addUnloadHook","coreConfig","throttleMgrCfg","localObj","isReady","flushAll","result_1","isFlushed","onReadyState","sendMessage","perfEvtsSendAll","_runScheduledListeners","asyncNotifications","_runListeners","listeners","NotificationManager","_listeners","_asyncNotifications","rn_1","waiting","_finishUnload","asyncUnload","TelemetryInitializerPlugin","_initializers","addTelemetryInitializer","_addInitializer","theInitializer","_runInitializers","telemetryInitializersCount","strValidationError","strSdkUnloadingError","diagnosticLogInterval","_createPerfManager","notificationMgr","_isPluginPresent","exists","_deepMergeConfig","newValues","merge","_findWatcher","newWatcher","theListener","AppInsightsCore","_configHandler","_eventQueue","_perfManager","_cfgPerfManager","_cookieManager","_pluginChain","_configExtensions","_channelConfig","_channels","_isUnloading","_telemetryInitializerPlugin","_internalLogsEventName","_unloadHandlers","_traceCtx","_cfgListeners","_extensions","_pluginVersionStringArr","_pluginVersionString","_activeStatus","_endpoint","_initInMemoMaxSize","_isStatusSet","_internalLogPoller","_internalLogPollerListening","_forceStopInternalLogPoller","_setStatus","_releaseQueues","releaseQueue","_startLogPoller","alwaysStart","_addUnloadHook","isRunning","createTimeout","_flushInternalLogs","_setPluginVersions","thePlugins","_addPluginVersions","channels","cfgExtensions","_createTelCtx","theCtx","_getPluginChain","_initPluginChain","theExtensions","_validateExtensions","channelPriority","allExtensions","coreExtensions","extPriorities","extPriority","rootCtx","_getPlugin","pluginIdentifier","theExt","channelHosts","getChannel","removeCb","pluginsToRemove","_removePlugins","removed","removeComplete","newConfigExtensions","newChannelConfig","newQueue","channel","cbTimeout","doneIterating","cbTimer","doCallback","handled_1","_updateHook","_logOrThrowError","_notifyInvalidEvent","_setPendingStatus","notificationManager","rootCfg","initInMemoMaxSize","ikey","initTimeout","initTimeOut","allPromises","createAllSettledPromise","ikeyRes","endpointRes","_initDebugListener","unloadContainer","debugListener","getDebugListener","_initPerfManager","prevCfgPerfMgr","enablePerfMgr","createPerfMgr","__spreadArray","teeController","_registerDelayedCfgListener","unloadHdl","getChannels","getNotifyMgr","setCookieMgr","setPerfMgr","eventCnt","eventQueue","unloadComplete","flushComplete","processUnloadCtx","addPlugin","replaceExisting","addCb","existingPlugin","_addPlugin","removedPlugins_1","mergeExisting","oldCfg","createNew","createDistributedTraceContext","setTraceCtx","traceCtx","onCfgChange","unloadHook","_addDelayedCfgListener","fnd","_createUnloadHook","getWParam","enableWParam","STR_PROPERTIES","_DYN_REQUEST_URL","_DYN_INST","_DYN_CONTEXT","_DYN_ABORTED","_DYN_TRACE_ID0","_DYN_SPAN_ID1","_DYN_INCLUDE_CORRELATION_2","_DYN_GET_ABSOLUTE_URL","_DYN_REQUEST_HEADERS","_DYN_TRACK_DEPENDENCY_DAT3","_DYN_ENABLE_REQUEST_HEADE4","_DYN_ENABLE_AJAX_ERROR_ST5","_DYN_ENABLE_AJAX_PERF_TRA6","_DYN_MAX_AJAX_CALLS_PER_V7","_DYN_EXCLUDE_REQUEST_FROM8","_DYN_ADD_REQUEST_CONTEXT","_DYN_DISABLE_AJAX_TRACKIN9","_DYN_AJAX_PERF_LOOKUP_DEL10","_DYN_DISABLE_FETCH_TRACKI11","_DYN_ENABLE_RESPONSE_HEAD12","_DYN_STATUS_TEXT","_DYN_HEADER_MAP","_DYN_OPEN_DONE","_DYN_SEND_DONE","_DYN_REQUEST_SENT_TIME","_DYN_ABORT_DONE","_DYN_GET_TRACE_ID","_DYN_GET_TRACE_FLAGS","_DYN_ERROR_STATUS_TEXT","_DYN_STATE_CHANGE_ATTACHE13","_DYN_RESPONSE_TEXT","_DYN_RESPONSE_FINISHED_TI14","_DYN__CREATE_TRACK_ITEM","_DYN_RESPONSE","_DYN_GET_ALL_RESPONSE_HEA15","_DYN_GET_PART_APROPS","_DYN_PERF_MARK","_DYN_PERF_TIMING","_DYN_AJAX_DIAGNOSTICS_MES16","_DYN_CORRELATION_CONTEXT","_DYN_AJAX_TOTAL_DURATION","_DYN_EVENT_TRACE_CTX","_calcPerfDuration","resourceEntry","_setPerfDuration","_setPerfValue","strPerf","XHRMonitoringState","setRequestHeaderDone","ajaxRecord","completed","requestHeadersSize","responseReceivingDuration","callbackDuration","requestSize","responseStartedTime","callbackFinishedTime","endTime","xhrMonitoringState","clientFailure","getAbsoluteUrl","urlGetAbsoluteUrl","getPathName","urlGetCompleteUrl","ajaxType","enableRequestHeaderTracking","getResponse","ajaxTotalDuration","requestSentTime","responseFinishedTime","dependency","_populatePerfData","ajaxData","propsSet","strName","strStart","strEnd","strDomainLookup","strConnect","strRedirect","strRequest","strResponse","strStartTime","strDomainLookupStart","strDomainLookupEnd","strConnectStart","strConnectEnd","strRequestStart","strRequestEnd","strResponseStart","strResponseEnd","strRedirectStart","strRedirectEnd","strTransferSize","strEncodedBodySize","strDecodedBodySize","strServerTiming","serverTiming","server_1","perfAttempts","headerMap","responseHeaders","partA","traceExt","strDiagLog","AJAX_DATA_CONTAINER","STR_FETCH","ERROR_HEADER","ERROR_PREFIX","ERROR_POSTFIX","ERROR_NOT_SENT","CORRELATION_HEADER_ERROR","CUSTOM_REQUEST_CONTEXT_ERROR","FAILED_TO_CALCULATE_DURATION_ERROR","_markCount","_getAjaxData","ajaxDataId","_isHeaderSet","isPresent","xh","_getFailedAjaxDiagnosticsMessage","_throwInternalCritical","ajaxMonitorInstance","_throwInternalWarning","_createErrorCallbackFunc","internalMessage","ajaxDiagnosticsMessage","_ajaxDataId","_indexOf","theHandler","_processDependencyContainer","BLOB_CORE","DfltAjaxCorrelationHeaderExDomains","_internalExcludeEndpoints","distributedTracingMode","maxAjaxPerfLookupAttempts","ignoreHeaders","addIntEndpoints","AjaxMonitor","_fetchInitialized","_xhrInitialized","_currentWindowHost","_enableRequestHeaderTracking","_enableAjaxErrorStatusText","_trackAjaxAttempts","_context","_isUsingW3CHeaders","_isUsingAIHeaders","_markPrefix","_enableAjaxPerfTracking","_maxAjaxCallsPerView","_enableResponseHeaderTracking","_disabledUrls","_disableAjaxTracking","_disableFetchTracking","_excludeRequestFromAutoTrackingPatterns","_addRequestContext","_dependencyHandlerId","_dependencyListeners","_dependencyInitializers","_ignoreHeaders","_maxAjaxPerfLookupAttempts","_ajaxPerfLookupDelay","_distributedTracingMode","_polyfillInitialized","_canIncludeHeaders","_hookProto","InstrumentProto","_isDisabledRequest","theUrl","theRegex","idx2","_isMonitoredXhrInstance","excludeAjaxDataValidation","ajaxValidation","initialized","_createMarkId","performance_1","mark","markId","getEntriesByName","_findPerfResourceEntry","initiatorType","trackCallback","reportError","perfMark","performance","maxAttempts","retryDelay","attempt","locateResourceTiming","perfTiming","getEntries","entryType","clearMarks","_getFailedFetchDiagnosticsMessage","_reportFetchMetrics","_reportFetchError","failedProps","errorProps","fetchDiagnosticsMessage","sysProperties","_reportDependencyInternal","initializers","aborted","_instrumentXhr","_supportsAjaxMonitoring","strPrototype","abort","xhrData","theOpen","req","_openHandler","spanID","xhrRequestData","ajaxDataCntr","_attachToOnReadyStateChange","_onAjaxComplete","_reportXhrError","ajaxResponse","_getAjaxCorrelationContext","responseHeadersString","getResponseHeader","responseHeaderMap_2","exceptionText","hkErr","_addSharedXhrHeaders","_instrumentFetch","_supportsFetch","_global","isPolyfill","polyfill","fetchData","_createFetchRecord","newInit","fetchData_1","_getFetchCorrelationContext","responseHeaderMap_1","_populateContext","propExt","trackDependencyData","currentWindowHost","_processDependencyListeners","traceParent","addDependencyListener","dependencyListener","addDependencyInitializer","dependencyInitializer","Device","Internal","unloadHookContainer","sdkExtension","sdkVersion","Location","_DYN_SESSION_MANAGER","_DYN_IS_USER_COOKIE_SET","_DYN_IS_NEW_USER","_DYN_GET_TRACE_CTX","_DYN_TELEMETRY_TRACE","_DYN_APPLY_SESSION_CONTEX0","_DYN_APPLY_APPLICATION_CO1","_DYN_APPLY_DEVICE_CONTEXT","_DYN_APPLY_OPERATION_CONT2","_DYN_APPLY_USER_CONTEXT","_DYN_APPLY_OPERATING_SYST3","_DYN_APPLY_LOCATION_CONTE4","_DYN_APPLY_INTERNAL_CONTE5","_DYN_ACCOUNT_ID","_DYN_GET_SESSION_ID","_DYN_NAME_PREFIX","_DYN_USER_COOKIE_POSTFIX","_DYN_ID_LENGTH","_DYN_GET_NEW_ID","_DYN_AUTOMATIC_SESSION","_DYN_AUTHENTICATED_ID","_DYN_ACQUISITION_DATE","_DYN_RENEWAL_DATE","_DYN_JOIN","_DYN_COOKIE_SEPARATOR","_DYN_AUTH_USER_COOKIE_NAM7","Session","_SessionManager","_storageNamePrefix","_cookieUpdatedTimestamp","_sessionExpirationMs","_sessionRenewalMs","sessionCookiePostfix","_initializeAutomaticSessionWithData","session","sessionData","sessionReset","tokens","acqMs","renewalMs","_setCookie","nowMs","acq","acqTimeLeftMs","isExpired","_initializeAutomaticSession","storageValue","timeSinceAcqMs","timeSinceRenewalMs","_renew","automaticSession","backup","_setStorage","renewal","TelemetryTrace","_validateUserInput","User","isNewUser","isUserCookieSet","cookie","userCookieName","_generateNewId","_setUserCookie","_generateNewCookie","utlRemoveStorage","authCookie","authCookieString","decodeURI","acqStr","accountAcquisitionDate","setAuthenticatedUserContext","authenticatedUserId","accountId","storeInCookie","clearAuthenticatedUserContext","cookieSeparator","authUserCookieName","strExt","strTags","_removeEmpty","_nullResult","undefString","TelemetryContext","previousTraceCtx","application","internal","autoSession","agentVersion","snippetVer","sdkSrc","applyWebContext","cleanUp","nullValue","isBrowserLinkTrackingEnabled","dist_es5_PropertiesPlugin","PropertiesPlugin","_distributedTraceCtx","_previousTraceCtx","_disableUserInitMessage","disableUserInitMessage","_unloadHooks","breezeChannel","theContext","userCtx","_processTelemetryInternal","_c","_d","_internalSdkSrc","_AUTHENTICATED_USER_CONTEXT","_TRACK","STR_SNIPPET","STR_FLUSH","STR_POLL_INTERNAL_LOGS","STR_GET_PLUGIN","STR_EVT_NAMESPACE","STR_TRACK_EVENT","STR_TRACK_TRACE","STR_TRACK_METRIC","STR_TRACK_PAGE_VIEW","STR_TRACK_EXCEPTION","STR_TRACK_DEPENDENCY_DATA","STR_SET_AUTHENTICATED_USER_CONTEXT","STR_CLEAR_AUTHENTICATED_USER_CONTEXT","_DYN_QUEUE","_DYN_CONNECTION_STRING","_DYN_INSTRUMENTATIONKEY0","_DYN_USER_OVERRIDE_ENDPOI1","_DYN_ENDPOINT_URL","_DYN_ONUNLOAD_FLUSH","_DYN_ADD_HOUSEKEEPING_BEF2","_DYN_SEND_MESSAGE","_ignoreUpdateSnippetProperties","IKEY_USAGE","CDN_USAGE","SDK_LOADER_VER","default_throttle_config","defaultConfigValues","_chkDiagLevel","extensionConfig","AppInsightsCfgSyncPlugin","AppInsightsSku","snippet","dependencies","_sender","_snippetVersion","_houseKeepingNamespace","_core","_cfgSyncPlugin","_throttleMgr","_iKeySentMessage","_cdnSentMessage","_sdkVerSentMessage","sv","_removePageEventHandlers","removePageUnloadEventListener","removePageHideEventListener","DependenciesPlugin","configCs","_parseCs","curCs","parsedCs","ikeyPromise","ingest","flushDone","loadAppInsights","legacyMode","throwUnsupported","_findSdkSourceFile","scrpt","currentScript","url_1","src_1","_updateSnippetProperties","emptyQueue","defaultEnable","proxyAssign","chkSet","_loop_1","length_1","appInsightsInstance","performHousekeeping_1","loadedPlugin","propertiesPlugin","_sessionManager","added_1","excludePageUnloadEvents","disablePageUnloadEvents","addPageUnloadEventListener","addEventListeners","isReactNative","product","getSender","_getCurrentDependencies","AppInsightsLoggingService","urlReplacementPatterns","pattern","replacement","angularPlugin","disableFetchTracking","enableResponseHeaderTracking","modifyAppInsightsTelemetry","replaceUrlSegments","originalUri","groups","logPageView","logEvent","logMetric","logException","logTrace","ErrorHandlerService","ErrorHandler","loggingService","errorLoggingService","Injector","MessageService","messages","LinkClickedEventsService","mixpanelService","sourcePage","parseSourcePage","MixpanelService","projectToken","debug","pageViews","track_pageview","persistence","trackLink","trackForm","identify","userSet","userSetOnce","set_once","orgsLocalStorage","protocolsByOrgLocalStorage","professionalsByOrgLocalStorage","modulesLocalStorage","getHelper","getTimeTrackingEventsForOrg","professionalDetails","startOfUTCISOWeek","setUTCHours","getUTCISOWeekYear","startOfUTCWeek","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","addLeadingZeros","targetLength","lightFormatters","signedYear","numberOfDigits","milliseconds","formatTimezoneShort","dirtyDelimiter","absOffset","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","format_formatters","G","localize","era","ordinalNumber","Y","signedWeekYear","weekYear","R","Q","q","M","L","getUTCWeek","startOfUTCWeekYear","firstWeek","I","isoWeek","getUTCISOWeek","startOfUTCISOWeekYear","D","getUTCDayOfYear","setUTCMonth","startOfYearTimestamp","E","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","B","H","K","S","X","_localize","timezoneOffset","_originalDate","O","z","T","dateLongFormatter","formatLong","timeLongFormatter","format_longFormatters","P","dateTimeFormat","matchResult","datePattern","timePattern","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","predicate","findKey","valueCallback","rest","defaultLocale","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","dirtyNumber","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchPatternFn","matchPattern","parseResult","parsePattern","any","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_options$locale2","_options$locale2$opti","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","originalDate","utcDate","subMilliseconds","formatterOptions","firstCharacter","longFormatter","longFormatters","cleanEscapedString","matched","formatter","formatters","useAdditionalWeekYearTokens","isProtectedWeekYearToken","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","CareOrgNotFoundError","PatientNoteType","PatientNoteTypeIHAWV","idpUserToken","tierIdToOrgIdMap","orgIdToTierIdMap","wpapiPArams","order","trackApiParams","getCareManagementPatients","catchError","getTierIdFromWpOrgId","currentTierIndex","currentTierId","getOrgIdFromWellpepperApi","orgPromise","HttpErrorResponse","beginDate","chpatid","filterIHEFiles","assessmentFileTypes","We","casemgmtFile","putIHEFileInfoForVisit","visitId","evaluationId","noteTypeId","downloadIHEFileNoteForPatient","patientIdIssuer","wpapiPromise","wpapiUrl","trackUrl","trackPromise","wpResult","trackResult","allSettled","firstDate","reWriteEvent","getMyPatientsActiveAlerts","patientObj","assignEpisodesOfCare","headers_options","userSurveys","us","addProtocolAsIncludedObject","getUserAlerts","_this33","surveyId","_this34","reportType","_this35","_this36","_this37","taskData","_this38","updatedTask","_this39","_this40","cp_id","_this41","facesheetName","_this42","_this43","ids","cohort","_this44","getPatientProtocols","patId","TrackApiParams","_this45","idToken","_this46","_this47","_this48","_this49","_this50","_this51","_this52","getNextBusinessDay","_this53","_this54","nextDay","TrackPerformanceDashboardMetrics","RafScoreMetricId","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","DefaultReconnectPolicy","retryDelays","_retryDelays","nextRetryDelayInMilliseconds","retryContext","previousRetryCount","HttpError","trueProto","TimeoutError","AbortError","UnsupportedTransportError","DisabledTransportError","FailedToStartTransportError","FailedToNegotiateWithServerError","AggregateErrors","innerErrors","HttpClient","getCookieString","Debug","Information","Warning","NullLogger","_logLevel","_message","Arg","isNotEmpty","isIn","Platform","isBrowser","getDataDetail","includeContent","isArrayBuffer","byteLength","formatArrayBuffer","Uint8Array","ArrayBuffer","_x6","_x7","transportName","accessTokenFactory","getUserAgentHeader","logMessageContent","SubjectSubscription","_subject","_observer","observers","cancelCallback","ConsoleLogger","minimumLogLevel","_minLevel","out","userAgentHeaderName","constructUserAgent","getOsName","getRuntimeVersion","runtime","runtimeVersion","majorAndMinor","platform","getErrorString","FetchHttpClient","requireFunc","__non_webpack_require__","_jar","CookieJar","_fetchType","getGlobalThis","AbortController","_abortControllerType","abortSignal","abortController","onabort","timeoutId","redirect","signal","deserializeContent","cookies","getCookies","arrayBuffer","XhrHttpClient","setRequestHeader","DefaultHttpClient","_httpClient","HeaderNames","Cookie","HttpTransportType","WebSockets","ServerSentEvents","LongPolling","TransferFormat","Text","Binary","_isAborted","LongPollingTransport","_accessTokenFactory","_pollAbort","_running","onreceive","onclose","pollAborted","connect","transferFormat","_url","Et","pollOptions","_getAccessToken","_updateHeaderToken","pollUrl","_closeError","_receiving","_poll","_raiseOnClose","deleteOptions","ServerSentEventsTransport","eventSource","opened","EventSource","onmessage","_close","onopen","_eventSource","WebSocketTransport","webSocketConstructor","_logMessageContent","_webSocketConstructor","webSocket","binaryType","_event","_webSocket","ErrorEvent","OPEN","_isCloseEvent","wasClean","HttpConnection","_stopPromiseResolver","_negotiateVersion","createLogger","baseUrl","_resolveUrl","webSocketModule","eventSourceModule","WebSocket","_connectionState","_connectionStarted","_startInternalPromise","_startInternal","_stopPromise","_sendQueue","TransportSendQueue","_stopInternal","_stopError","_stopConnection","skipNegotiation","_constructTransport","_startTransport","negotiateResponse","redirects","_getNegotiationResponse","ProtocolVersion","accessToken","_createTransport","inherentKeepAlive","negotiateUrl","_resolveNegotiateUrl","negotiateVersion","connectionToken","connectionId","_createConnectUrl","requestedTransport","requestedTransferFormat","connectUrl","_isITransport","transportExceptions","availableTransports","negotiate","transportOrError","_resolveTransportOrError","transportMatches","actualTransport","transferFormats","aTag","_executing","_sendBufferedData","PromiseSource","_transportResult","_sendLoopPromise","_sendLoop","_bufferData","transportResult","_concatBuffers","arrayBuffers","totalLength","_resolver","_rejecter","TextMessageFormat","RecordSeparator","RecordSeparatorCode","HandshakeProtocol","writeHandshakeRequest","handshakeRequest","parseHandshakeResponse","messageData","remainingData","separatorIndex","responseLength","textData","MessageType","Invocation","StreamItem","Completion","StreamInvocation","CancelInvocation","Ping","Close","HubConnectionState","Disconnected","Connecting","Disconnecting","Reconnecting","HubConnection","connection","reconnectPolicy","_nextKeepAlive","_freezeEventListener","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","_protocol","_reconnectPolicy","_handshakeProtocol","_processIncomingData","_connectionClosed","_callbacks","_methods","_closedCallbacks","_reconnectingCallbacks","_reconnectedCallbacks","_invocationId","_receivedHandshakeResponse","_cachedPingMessage","writeMessage","_startPromise","_startWithStateTransitions","_stopDuringStartError","handshakePromise","_handshakeResolver","_handshakeRejecter","_cleanupTimeout","_resetTimeoutPeriod","_resetKeepAliveInterval","_cleanupPingTimer","startPromise","_reconnectDelayHandle","_completeClose","stream","methodName","streams","streamIds","_replaceStreamingParams","invocationDescriptor","_createStreamInvocation","promiseQueue","cancelInvocation","_createCancelInvocation","invocationId","_sendWithProtocol","invocationEvent","_launchStreams","sendPromise","_createInvocation","invoke","on","newMethod","off","removeIdx","onreconnecting","onreconnected","_processHandshakeResponse","parseMessages","_invokeClientMethod","allowReconnect","responseMessage","serverTimeout","_pingServerHandle","nextPing","invocationMessage","methods","_cancelCallbacksWithError","_reconnect","reconnectStartTime","previousReconnectAttempts","retryError","nextRetryDelay","_getNextRetryDelay","elapsedMilliseconds","retryReason","nonblocking","streamId","_createCompletionMessage","_createStreamItemMessage","_isObservable","JsonHubProtocol","hubMessages","parsedMessage","_isInvocationMessage","_isStreamItemMessage","_isCompletionMessage","_assertNotEmptyString","LogLevelNameMapping","information","warning","critical","none","HubConnectionBuilder","configureLogging","logging","isLogger","parseLogLevel","mapping","withUrl","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","withAutomaticReconnect","retryDelaysOrReconnectPolicy","ProcessingService","_processes$","processes$","processes","startConnection","hubConnection","signalR","serverEventsEndpoint","startProcess","statusSessionId","closeConnection","removeProcess","updateProcess","isCancel","processSessionId","getProcessStatus","hasAnyRunningProcess","QualityService","patientCache","getMeasurePatients","measureID","activeFilters","patientTableFilteringId","qualityInitiativeApiUrl","getMeasures","measureData","measureId","numerator","denominator","numeratorExclusions","denominatorExclusions","measureDescription","measureName","getPatientsSummary","patientSummary","totalPatients","patientsWithGapsClosed","getMeasureMeetingTarget","targetValue","QualityDashboardMeetingTargets","approachingTarget","Approaching","Underperforming","generateRandomDate","getRandomInt","RecentsCacheService","recents$","recentsTier$","recent","navURL","RestApiService","messageService","httpError","messageTxt","userMessage","op","handleHttpSuccessResponse","httpResponse","handleHttpSuccessResponseBody","postHttp","succeeded","retryableError","requestAgainError","RouterHistoryService","recentsCache","routeState","filterURLExceptions","urlWithoutQueryParams","urlQueryParams","SideBarToggleService","toggleSidebarPane","ToastrService","disableTimeOut","tapToDismiss","closeButton","enableHtml","errorText","UserAccessService","accessGQL","access2Service","toastrService","watch","nodeId","fetchPolicy","components","routeData","PipesModule","DirectivesModule","SharedModules","CommonModule","FormsModule","ReactiveFormsModule","PortalModule","imports","getOwnPropertyDescriptor","stringToNumber","convertedValue","objectToParams","iframe","contentWindow","uniqueInArray","propertyName","groupBy","getKey","currentItem","getUrlAndParams","urlParts","searchParams","URLSearchParams","formatNullableDate","HccCliniciansService","getClinicians","HccDashboardFilterService","filterModel$","CliniciansReport2Component","hccDashboardService","hccDashboardFilterService","tooltipField","clinicianNPI","clinician","isPractice","direction","overallHCCClosureRate","tierInfo","CliniciansReportComponent_ng_container_1_ng_container_3_Template","CliniciansReportComponent","patientSummaryService","hccEnhanced2FeatureFlag","CliniciansReportComponent_ng_container_0_Template","CliniciansReportComponent_ng_container_1_Template","HccPatientDetailService","PatientDetailReport2Component","dxDesc","hccFilter","hcc","isPracticeFilter","diseaseGroupFilter","diseaseGroup","PatientDetailReportComponent","PatientDetailReportComponent_ng_container_0_Template","PatientDetailReportComponent_ng_container_1_Template","HccPatientSummaryService","PatientSummaryReport2Component","hasProvider","PatientSummaryReportComponent","PatientSummaryReportComponent_ng_container_0_Template","PatientSummaryReportComponent_ng_container_1_Template","HccDasbhoardCodingOpportunitiesService","getOpportunites","HccDashboardTierMetricsService","getMetrics","lastUpdateDate","selector","selectorAll","matcher","childMatcher","childFirst","firstElementChild","sparse","EnterNode","datum","ownerDocument","namespaceURI","_parent","bindIndex","enter","exit","groupLength","dataLength","bindKey","nodeByKeyValue","arraylike","ascending","insertBefore","xhtml","svg","xlink","xml","xmlns","namespace","space","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","src_window","defaultView","styleRemove","removeProperty","styleConstant","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","ClassList","_node","_names","classedAdd","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","previousSibling","creatorInherit","documentElement","createElementNS","creatorFixed","creator","constantNull","selection_cloneShallow","cloneNode","selection_cloneDeep","onRemove","typename","__on","onAdd","contextListener","bubbles","cancelable","dispatchConstant","dispatchFunction","Selection","parents","_groups","_parents","selection","selection_select","subgroups","subnode","subgroup","arrayAll","selectChild","childFind","selectChildren","childrenFilter","selection_filter","src_constant","constant","enterGroup","updateGroup","_enter","_exit","onenter","onupdate","onexit","groups0","groups1","m0","merges","group0","group1","selection_selection","compareDocumentPosition","compare","compareNode","sortgroups","sortgroup","selection_empty","attr","getAttributeNS","selection_style","classed","selection_text","selection_raise","selection_lower","insert","selection_remove","selection_datum","typenames","parseTypenames","dispatch","src_selection","src_select","noop","Dispatch","types","src_dispatch","src_define","extend","definition","Color","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgba","hsla","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","displayable","formatHex8","color_formatHex8","formatHsl","color_formatHsl","darker","clamp","rgb_formatHex8","hsl","d3_interpolate_src_constant","nogamma","linear","rgbGamma","gamma","exponential","colorRgb","rgbSpline","spline","genericArray","nb","na","src_number","src_basis","basisClosed","reA","reB","bm","bs","bi","lastIndex","zero","src_numberArray","isNumberArray","isView","DataView","numberArray","taskHead","taskTail","pokeDelay","clockLast","clockNow","clockSkew","clock","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","restart","wake","timerFlush","nap","t0","Infinity","sleep","poke","src_timeout","elapsed","emptyOn","emptyTween","CREATED","STARTED","schedules","__transition","tween","tick","ease","svgNode","degrees","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","decompose","sqrt","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","translate","xa","ya","xb","yb","scale","interpolateTransformCss","parseCss","DOMMatrix","WebKitCSSMatrix","isIdentity","interpolateTransformSvg","parseSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","transition_interpolate","interpolateNumber","interpolateRgb","interpolateString","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","selection_prototype","transition_select","transition_selectAll","inherit","transition_filter","transition_merge","transition_selection","transition_transition","id0","id1","transition_on","onFunction","on0","on1","sit","transition_attr","transition_attrTween","transition_style","styleTween","styleNull","styleMaybeRemove","listener0","transition_styleTween","styleInterpolate","transition_text","textTween","transition_textTween","textInterpolate","transition_remove","removeFunction","easeConstant","easeVarying","transition_easeVarying","interrupt","defaultTiming","cubicInOut","selection_interrupt","active","selection_transition","descending","bisector","compare1","compare2","delta","lo","hi","mid","center","e10","e5","e2","tickSpec","step","power","log10","factor","inc","tickIncrement","tickStep","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","timeInterval","floori","offseti","d0","d1","isFinite","millisecond","second","timeMinute","utcMinute","setUTCSeconds","timeHour","utcHour","setUTCMinutes","timeDay","utcDay","unixDay","timeWeekday","timeSunday","timeMonday","timeThursday","utcWeekday","utcSunday","utcMonday","utcThursday","timeMonth","utcMonth","timeYear","utcYear","ticker","minute","tickIntervals","tickInterval","ticks","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","UTC","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","formatLocale","locale_dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formatShortWeekday","A","formatWeekday","formatShortMonth","formatMonth","formatPeriod","formatQuarter","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCPeriod","formatUTCQuarter","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseSpecifier","parsePeriod","parseLocaleDate","parseLocaleTime","newFormat","specifier","newParse","utcFormat","utcParse","bisectRight","bisect","normalize","constants","bimap","r0","r1","polymap","continuous","transformer","untransform","unknown","piecewise","interpolateValue","rescale","clamper","invert","rangeRound","interpolateRound","initRange","prefixExponent","re","formatSpecifier","FormatSpecifier","align","symbol","comma","precision","formatDecimalParts","toExponential","coefficient","exponent","formatRounded","formatTypes","%","formatDecimal","toPrecision","formatPrefixAuto","src_identity","formatPrefix","prefixes","linearish","tickFormat","precisionPrefix","precisionRound","precisionFixed","nice","prestep","maxIter","src_locale","grouping","thousands","formatGroup","currencyPrefix","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","padding","InternMap","keyof","defineProperties","_intern","_key","intern_get","intern_set","intern_delete","implicit","band","bandwidth","ordinalRange","paddingInner","paddingOuter","sequence","quantileSorted","valueof","value0","quantile","thresholds","threshold","invertExtent","quantiles","cos","sin","epsilon","halfPi","tau","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","x0","y0","x1","y1","cw","x01","y01","ox","oy","x11","y11","x10","y10","x00","y00","dy","d2","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","TooltipContentComponent_span_4_ng_template_1_Template","a0","TooltipContentComponent_span_4_Template","TooltipContentComponent_span_5_Template","LegendComponent_header_1_Template","LegendComponent_li_4_Template","labelClick","deactivate","entry_r2","formattedLabel","ChartComponent_ngx_charts_scale_legend_3_Template","legendOptions","LegendPosition","Below","legendWidth","ChartComponent_ngx_charts_legend_4_Template","legendLabelClick","legendLabelActivate","legendLabelDeactivate","activeEntries","_c15","SvgRadialGradientComponent__svg_stop_1_Template","stop_r1","_c22","_c24","a1","_c40","PieArcComponent__svg_defs_1_Template","radialGradientId","startOpacity","_c45","_c53","_c54","GaugeAxisComponent__svg_g_1_Template","tick_r3","GaugeAxisComponent__svg_g_2_Template","tick_r4","textAnchor","textTransform","GaugeAxisComponent__svg_g_3_Template","tick_r5","GaugeComponent__svg_g_2_Template","onActivate","onDeactivate","arc_r3","rotation","backgroundArc","valueArc","cornerRadius","tooltipDisabled","tooltipTemplate","valueFormatting","animations","GaugeComponent__svg_g_3_Template","bigSegments","smallSegments","angleSpan","valueScale","axisTickFormatting","GaugeComponent__svg_text_4_Template","displayValue","throttle","wait","later","leading","trailing","throttleable","descriptor","PlacementTypes","Top","Bottom","Left","Right","Center","verticalPosition","elDimensions","popoverDimensions","horizontalPosition","PositionHelper","calculateVerticalAlignment","innerHeight","calculateVerticalCaret","caretDimensions","popoverPosition","calculateHorizontalAlignment","calculateHorizontalCaret","shouldFlip","placement","spacing","flip","positionCaret","elmDim","hostDim","positionContent","determinePlacement","TooltipContentComponent","platformId","cssClasses","clz","cssClass","isPlatformBrowser","nativeElm","getBoundingClientRect","checkFlip","showCaret","addClass","caretElm","onWindowResize","PLATFORM_ID","_t","first","styles","__decorate","InjectionRegisteryService","injectionService","getByType","bindings","createByType","assignDefaults","injectComponent","register","destroy","compsByType","componentType","destroyAll","destroyByType","appendComponent","InjectionService","applicationRef","setGlobalRootViewContainer","globalRootViewContainer","getRootViewContainer","_container","setRootViewContainer","getComponentRootNode","isViewContainerRef","hostView","rootNodes","getRootViewContainerNode","projectComponentBindings","bindingKeys","bindingName","eventKeys","componentClass","appendLocation","componentRef","TooltipService","LegendType","ScaleLegend","Legend","ScaleType","Time","Linear","Ordinal","Quantile","ScaleLegendComponent","horizontal","gradientValues","gradientString","gradient","splits","valueRange","changeDetection","formatLabel","LegendEntryComponent","trimmedLabel","onMouseEnter","onMouseLeave","LegendComponent","labelActivate","labelDeactivate","legendEntries","getLegendEntries","getColor","trackBy","ChartComponent","showLegend","legendColumns","legendType","getLegendType","chartWidth","scaleType","VisibilityObserver","zone","runCheck","onVisibilityChange","check","offsetHeight","runOutsideAngular","ɵdir","BaseChartComponent","chartElement","scheme","schemeType","isPlatformServer","bindWindowResizeEvent","visibilityObserver","unbindEvents","cloneData","dims","getContainerDims","hostElem","formatDates","resizeSubscription","subscription","fromEvent","debounceTime","seriesItem","seriesItemCopy","customColors","TextAnchor","Start","Middle","End","AxesModule","ɵmod","ɵinj","StyleTypes","popover","ShowTypes","mouseover","TooltipDirective","tooltipService","viewContainerRef","tooltipCssClass","tooltipAppendToBody","tooltipSpacing","tooltipShowCaret","tooltipPlacement","tooltipAlignment","tooltipType","tooltipCloseOnClickOutside","tooltipCloseOnMouseLeave","tooltipHideTimeout","tooltipShowTimeout","tooltipShowEvent","tooltipImmediateExit","listensForFocus","listensForHover","onFocus","onBlur","onMouseClick","immediate","createBoundOptions","addHideListeners","mouseEnterContentEvent","listen","mouseLeaveContentEvent","documentClickEvent","destroyFn","tooltipTitle","tooltipContext","TooltipModule","providers","BarOrientation","Vertical","Horizontal","SvgRadialGradientComponent","endOpacity","stops","stopsInput","stopsDefault","attrs","ChartCommonModule","colorSets","selectable","ColorHelper","colorDomain","generateColorScheme","colorScale","scaleQuantile","scaleOrdinal","points","scaleLinear","formattedValue","found","getLinearGradientStops","colorValueScale","scaleBand","endColor","startVal","startColor","endVal","currentVal","originalOffset","AreaChartModule","BarChartModule","rfdc","BoxChartModule","BubbleChartModule","HeatMapModule","LineChartModule","PieArcComponent","explodeSlices","animate","pointerEvents","dblclick","barOrientation","getGradient","gradientFill","getPointerEvents","calc","calculateArc","updateAnimation","loadAnimation","src_arc","padRadius","withPath","arc","da","moveTo","a01","a11","a00","a10","da0","da1","rp","rc0","rc1","p0","p1","oc","intersect","x2","y2","x3","y3","x32","y32","ax","ay","bx","by","kc","acos","lc","lineTo","closePath","centroid","_current","copyOfD","interpolater","_timeout","onDblClick","nativeEvent","PieChartModule","PolarChartModule","NumberCardModule","TreeMapModule","GaugeArcComponent","placementTypes","styleTypes","escapeLabel","GaugeAxisComponent","rotationAngle","getTicks","bigTickSegment","smallTickSegment","big","small","startDistance","textDist","angleDeg","angle","getTextAnchor","tickFormatting","getTickPath","smallAngle","tickLength","GaugeComponent","legendTitle","legendPosition","showAxis","showText","resizeScale","scaleText","margin","calculateViewDimensions","margins","showXAxis","showYAxis","xAxisHeight","yAxisWidth","showXLabel","showYLabel","xOffset","chartHeight","getDomain","valueDomain","getValueDomain","getValueScale","getDisplayValue","arcs","getArcs","setColors","getLegendOptions","radiusPerArc","arcWidth","textRadius","dataMin","dataMax","textValue","textEl","oldScale","ɵGaugeComponent_BaseFactory","contentQueries","dirIndex","GaugeModule","SankeyModule","NgxChartsModule","ngxChartsPolyfills","SVGElement","HTMLDivElement","navigateToPatientDetails","group_r1","groupDescription","i_r2","HccTopDiseaseGroupsComponent_div_5_div_2_Template","HccTopDiseaseGroupsComponent_div_5_div_3_Template","canAccessPhi","patientCount","HccTopDiseaseGroupsComponent","HccTopDiseaseGroupsComponent_div_5_Template","Circle","Graphics","_afterNew","_display","isMeasured","setPrivateRaw","_beforeChanged","_clear","_changed","drawCircle","selectedToggle","compareToggle","option_r2","data_r8","dtPart","dtValue","HccClosureRateChartComponent_div_10_ng_container_5_th_1_span_1_Template","HccClosureRateChartComponent_div_10_ng_container_5_th_1_span_2_Template","HccClosureRateChartComponent_div_10_ng_container_5_th_1_Template","closuresTableHeaderData","data_r19","avgClosure","HccClosureRateChartComponent_div_10_tr_6_ng_container_2_td_1_span_1_Template","HccClosureRateChartComponent_div_10_tr_6_ng_container_2_td_1_span_2_Template","HccClosureRateChartComponent_div_10_tr_6_ng_container_2_td_1_Template","j_r20","array_r16","restoredCtx","i_r17","setSelectedCompare","HccClosureRateChartComponent_div_10_tr_6_ng_container_2_Template","selectedCompareIndex","tierTitleHtml","HccClosureRateChartComponent_div_10_ng_container_5_Template","HccClosureRateChartComponent_div_10_tr_6_Template","closuresTableData","HccClosureRateChartComponent","toggleOptions","selectedToggle$","compareTo","chartRoot","closuresByQuarter","closuresByMonth","closureData","getTierName","sortByDateValue","configureChart","currentTierItem","dtYear","xyChart","maxTooltipDistance","pinchZoomX","axis","getXAxis","trendingSeries","getTrendingRateSeries","compareSeries","getCompareToSeries","series2","adapters","closureItem","dataContext","formatPercent","once","bulletCircle","intervalValue","bulletsContainer","_setParent","seriesContainer","currentYear","getInterval","getMonths","compareData","getCompareData","legendValueText","newSeries","HccClosureRateChartComponent_div_8_Template","HccClosureRateChartComponent_div_10_Template","acoAverage","HccDashboardSummaryComponent_ng_container_3_span_7_Template","colorScheme","annualClosureRate","formatValue","opportunity_r7","hccDesc","HccDashboardSummaryComponent_ng_container_6_div_6_div_2_Template","HccDashboardSummaryComponent_ng_container_6_div_6_div_3_Template","opportunityCount","HccDashboardSummaryComponent_ng_container_6_div_6_Template","codingOpportunities","diseaseGroups$","navigateToTop50","HccDashboardSummaryComponent","opportunitiesService","hccDashboardTierMetricsService","resetCharts","getTierMetrics","getOpportunities","currentYearMetrics","acoClosureRate","conditionCount","q1ClosureRate","q1Goal","q2ClosureRate","q2Goal","q3ClosureRate","q3Goal","q4ClosureRate","q4Goal","remediation","tierClosureRate","HccDashboardSummaryComponent_ng_container_3_Template","HccDashboardSummaryComponent_coach_hcc_closure_rate_chart_4_Template","HccDashboardSummaryComponent_ng_container_6_Template","HccDashboardSummaryComponent_coach_hcc_top_disease_groups_7_Template","HccDashboardSummaryComponent_div_8_Template","filterModelChange","HccDashboardComponent","isDashboardRoute","CIN_NAME","NavigationStart","setRouteData","cinAdded","HccDashboardComponent_coach_attribution_filter_pane_1_Template","TrackClinicalWidgetsComponent","careModule","trackHccComponent","TrackClinicalWidgetsComponent_div_2_Template","TrackClinicalWidgetsComponent_div_3_Template","TrackClinicalComponent","year_r3","month_r4","detailed","TrackTimeTrackingFilterComponent","selectedYearChange","selectedMonthChange","todayYear","selectedYear","yearSelected","selectedMonth","monthSelected","applyClick","exportClick","isFilterPaneOpen","TrackTimeTrackingFilterComponent_option_9_Template","TrackTimeTrackingFilterComponent_option_13_Template","TrackTimeTrackingFilterComponent_div_14_Template","timeTrackingEvents","detailedDefs","summaryDefs","TrackTimeTrackingComponent","selectedDate","exportClicked","copyToClipboard","getDataAsCsv","patientsObj","patientsArrayToObjById","professionalsObj","summaryObj","patientMrn","durationMinutes","totalMinutes","trackPatientData","TrackTimeTrackingComponent_ag_grid_angular_3_Template","PracticesReportComponent","formatNumber","CinsReportComponent","TrackClinicalRoutingModule","TrackClinicalModule","FINANCIAL_REPORTS_FEATURE","QUALITY_REPORTS_FEATURE","TrackReportMenuItemsService","TrackReportService","getAccessToken","logReportAudit","setLastRun","lastRunYear","lastRunQuarter","navigateToReport","parameters","menuItemId","attributionYear","attributionQuarter","CIN_REPORT_LEVEL","regionId","REGION_REPORT_LEVEL","runReport","menuItem","cinName","compassReportMenuID","menuGUID","reportTierID","reportTierNum","ACO_REPORT_LEVEL","TrackReportWidgetsComponent_ng_container_2_ng_container_1_div_1_Template","qualityDashboardComponent","TrackReportWidgetsComponent_ng_container_2_ng_container_1_Template","qualityDashboardFeatureFlag","item_r4","menuIllustration","TrackReportWidgetsComponent_ng_container_3_div_1_img_4_Template","openReport","menuName","menuItemDescription","TrackReportWidgetsComponent_ng_container_3_div_1_Template","logComponentID","reportComponentId","TrackReportWidgetsComponent","menuItemService","reportService","qualityReportsFeatureId","menuItems$","TrackReportWidgetsComponent_ng_container_2_Template","TrackReportWidgetsComponent_ng_container_3_Template","TrackComponent","goToItems","TrackSummaryComponent_ng_container_2_div_1_Template","item_r8","loadReport","TrackSummaryComponent_div_3_ng_container_11_li_1_Template","financialFeature","TrackSummaryComponent_div_3_ng_container_11_Template","TrackSummaryComponent_div_4_li_11_Template","TrackSummaryComponent_div_4_li_12_Template","TrackSummaryComponent_div_5_ng_container_11_li_1_Template","item_r19","TrackSummaryComponent_div_5_ng_container_12_li_1_Template","qualityFeature","TrackSummaryComponent_div_5_ng_container_11_Template","TrackSummaryComponent_div_5_ng_container_12_Template","trackQualityFeatureName","valueCalculatorReportName","TrackSummaryComponent_ng_container_6_div_1_li_11_Template","ValueCalculatorFeatureName","trackValueCalculatorComponent","TrackSummaryComponent_ng_container_6_div_1_Template","valueCalculatorFeatureFlag","compareFeatureName","TrackSummaryComponent_ng_container_7_div_1_li_11_Template","compareComponent","TrackSummaryComponent_ng_container_7_div_1_Template","compareFeatureFlag","track_summary_component_FinancialUtilizationFeature","track_summary_component_ClinicalFeature","track_summary_component_QualityFeature","track_summary_component_QualityFeatureName","track_summary_component_ValueCalculatorFeatureFlag","track_summary_component_ValueCalculatorName","track_summary_component_ValueCalculatorFeature","track_summary_component_CompareFeatureFlag","track_summary_component_CompareFeature","TrackSummaryComponent","trackValueCalculatorFeature","trackClinicalFeature","trackFinancialFeature","trackQualityFeature","compareFeature","TrackSummaryComponent_ng_container_2_Template","TrackSummaryComponent_div_3_Template","TrackSummaryComponent_div_4_Template","TrackSummaryComponent_div_5_Template","TrackSummaryComponent_ng_container_6_Template","TrackSummaryComponent_ng_container_7_Template","TrackFinancialUtilizationComponent","reportsFeature","TrackReturnOnInvestmentComponent","NgxPowerBiService","service$1","service","powerBiCoreService","Service","factories","hpmFactory","wpmpFactory","routerFactory","createReport","embed","load","enableAutoEmbed","findById","uniqueId","handleTileEvents","preload","powerBiServiceFactory","NgxPowerBiModule","TrackQuarterYearsService","getQuarterYears","year_r2","quarter_r4","selectedQuarterItem","quarterSelected","TrackTimeFiltersComponent_ng_container_4_option_4_Template","reportConfig","quarterLabel","quarters","TrackTimeFiltersComponent","quarterYears","_quarterYears","mapQuarterYears","_selectedYear","setQuarter","_selectedQuarter","selectedQuarter","selectedQuarterChange","selectedQuarterItemChange","selectedYearItemChange","hideQuarter","selectedYearItem","updateQuarters","attributionQuarter_DisplayText","TrackTimeFiltersComponent_option_3_Template","TrackTimeFiltersComponent_ng_container_4_Template","TrackReportFilterTypesService","getFilterTypes","type_r2","item_r7","filterTypeName","filterTypeID","itemSelected","TrackReportFilterTypesComponent_ng_container_4_select_3_option_1_Template","TrackReportFilterTypesComponent_ng_container_4_select_3_option_2_Template","filterItems","TrackReportFilterTypesComponent_ng_container_4_select_3_Template","TrackReportFilterTypesComponent_ng_container_4_div_4_Template","selectedFilterType","TrackReportFilterTypesComponent","initialItem","_initialItem","filterTypeSelected","reportFilterTypeService","selectedFilterTypeChange","acoLevel","reportFilterTypes","TrackReportFilterTypesComponent_option_3_Template","TrackReportFilterTypesComponent_ng_container_4_Template","selectedQuarterYearItem","initialReportFilterItem","TrackReportComponent_span_7_span_3_Template","TrackReportComponent_span_7_span_4_Template","cinLevel","filterItemSelected","selectedReportFilterItem","selectedReportFilterType","noDataTitle","noDataMessage","TrackReportComponent","powerBiService","quarterYearsService","userIdle","reportParameters","hidePrincipalParticipant","embedContainerId","showNoDataModal","isInternal","openPane","menuItems","reportMenuItem","configBlob","reportFilterType","reportFilterTypeId","showCinRegionFilter","secondaryGUID","noData","setNoDataMessage","findQuarterYear","setMaxQuarterYear","quarterYear","getParams","embedUrl","reportFilters","getFilters","tokenType","filterPaneEnabled","navContentPaneEnabled","stopWatching","pbiContainerElement","embeddedReport","resetIdle","pageChanged","isReportLoaded","setTokenRefresh","startWatching","getPages","setActive","embedFail","detailedMessage","applicationDetails","errorDetails","errorCode","isAcoLevel","$schema","operator","displaySettings","isHiddenInViewMode","newPage","newSettings","drillThroughName","updateSettings","setAccessToken","runReportClick","navigateByUrl","skipLocationChange","TrackReportComponent_span_6_Template","TrackReportComponent_span_7_Template","TrackReportComponent_coach_track_report_filter_types_14_Template","TrackReportComponent_div_18_Template","TrackReportComponent_div_21_Template","TrackReportComponent_ng_container_22_Template","loadChildren","TrackValueCalculatorModule","TrackPerformanceModule","TrackCompareModule","QualityModule","TrackRoutingModule","section_r10","contentMarkdown","HomeComponent_ng_container_3_ng_container_1_div_6_Template","widgetMarkdown","cardWidget_r8","cardWidgetTitle","HomeComponent_ng_container_3_ng_container_1_Template","cardWidgetIDs","onCareClick","HomeComponent_div_5_li_20_Template","trackValueName","HomeComponent_div_6_ng_container_17_li_1_Template","trackValueFeature","trackCompareName","HomeComponent_div_6_ng_container_18_li_1_Template","trackCompareFeature","HomeComponent_div_6_li_14_Template","HomeComponent_div_6_li_15_Template","HomeComponent_div_6_li_16_Template","HomeComponent_div_6_ng_container_17_Template","HomeComponent_div_6_ng_container_18_Template","trackValueFeatureFlag","trackCompareFeatureFlag","HomeComponent_div_7_li_14_Template","HomeComponent_div_7_li_15_Template","HomeComponent_div_7_li_16_Template","improveContactsFeature","improvePracticeImprovementFeature","improveITFeature","hccvipFolderId","HomeComponent_ng_container_11_ng_container_1_div_1_ul_9_Template","HomeComponent_ng_container_11_ng_container_1_div_1_Template","marketingWidgetComponent","HomeComponent_ng_container_11_ng_container_2_ng_container_1_div_1_Template","phiAccess","HomeComponent_ng_container_11_ng_container_2_ng_container_1_Template","HomeComponent_ng_container_11_ng_container_1_Template","HomeComponent_ng_container_11_ng_container_2_Template","HomeComponent","folderService","formsService","cardService","improveModule","trackModule","submitModule","marketingWidgetComponent2","improveACOBoardFeature","improveSteeringCommiteeFeature","improveEventFeature","trackPerformanceFeature","carePrescriptionFeature","carePrescriptionProcessingFeature","careExceptionsFeature","submitQualityFeature","submitQuailityName","submitMeetingFeature","submitMeetingName","submitComplianceFeature","submitComplianceName","submitPIFeature","submitPIName","qualityOpenInfo","qualityOpenDueDate","qualityrequirements","qualityFormId","complianceOpenInfo","complianceOpenDueDate","complianceFormId","piOpenInfo","piOpenDueDate","piFormId","meetingWidgetName","meetingOpenInfo","meetingOpenDueDate","masonryOptions","gutter","horizontalOrder","percentPosition","hccvipSubscription","fromCaravanPHISubscription","fromCaravanPHIFolderId","qualityCampaignSubscription","qualityCampaignFolderId","formSubmissionOverview","widgetSubscription","WelcomeCard","cardWidget","cardWidgetId","masonry","layoutComplete","resetLayout","reloadItems","NgxMasonryComponent","HomeComponent_ng_container_3_Template","HomeComponent_div_5_Template","HomeComponent_div_6_Template","HomeComponent_div_7_Template","HomeComponent_div_9_Template","HomeComponent_div_10_Template","HomeComponent_ng_container_11_Template","HomeRoutingModule","MarkdownModule","FileDownloadService","fetchDocRepoList","Children","setupUploadDocRepoPaths","getChildrenByCollectionName","tabName","docRepoList","yourFolderData","Title","getSpecificFile","fileID","updateSelectedFolder","docRepo","allDocRepo","PIDocs","toCaravanPHI","toCaravan","uploadFolders","getMyTeamPage","getClientContacts","altTierID","getClinicianRoster","ImproveComponent","fileDownloadService","featureIds","RoadmapsFolder","ImproveSummaryComponent_div_2_li_10_Template","ImproveSummaryComponent_div_2_li_11_Template","ImproveSummaryComponent","acoBoardFeature","steeringCommiteeFeature","practiceImprovementFeature","informationTechnologyFeature","eventsFeature","RoadmapsFolderSubscription","ImproveSummaryComponent_div_2_Template","ImproveSummaryComponent_div_3_Template","ImproveSummaryComponent_div_4_Template","DocRepo","TeamMemberComponent","cat_r1","EVP","EVPDescription","EVPEmail","EVPPhone","RegionalVicePresident","RVPDescription","RVPEmail","RVPPhone","RM","RMDescription","RMEmail","RMPhone","SeniorPracticeImprovementManager","SPIMDescription","SPIMEmail","SPIMPhone","ClinicalPracticeImprovementManager","CPIMDescription","CPIMEmail","CPIMPhone","ClinicalCodingSpecialist","CCSDescription","CCSEmail","CCSPhone","InteroperabilitySpecialist","IOSDescription","IOSEmail","IOSPhone","PerformanceImprovementAnalyst","PIDescription","PIEmail","PIPhone","IntegrationAnalyst","IADescription","IAEmail","IAPhone","MyTeamComponent","accountsJson","serializedAccounts","selectedAccount","account","cat","member","ICC","teamMembers","MyTeamComponent_ng_container_0_Template","ClientContactsComponent","supportEmail","altTier","contacts","contact","accountName","AccountName","contactName","FullName","Email","PHI","pocRole","PointOfContactRole","program_r2","progID","progType","ClinicianRosterComponent","transformData","clinicianRoster","outputWorkbook","instructionsSheet","_currentUser","progGroupID","dataStructure","msspColumnDefs","providerList","commercialColumnDefs","progNameShort","noOfRowaToGenerate","_isLoggedIn","vertical","wrapText","richText","family","hyperlink","excelService","userSub","rosterJson","ClinicianRoster","formatPhi","showInstructionsModal","selectClinicianRoster","selectedIndex","ClinicianRosterComponent_option_18_Template","ClinicianRosterComponent_ng_container_22_Template","DocumentService","BE_SERVER_URL","createViewingSessionForDocument","fileTitle","fileURL","fileExt","encoded","pluck","plucker","currentProp","fromEventPattern","addHandler","removeHandler","resultSelector","Observable","subscriber","retValue","withLatestFrom","project","lift","WithLatestFromOperator","observables","WithLatestFromSubscriber","OuterSubscriber","destination","toRespond","subscribeToResult","notifyNext","outerValue","innerValue","outerIndex","innerIndex","innerSub","notifyComplete","_tryProject","YouTubePlayer","videoId","_videoId","_height","startSeconds","_startSeconds","endSeconds","_endSeconds","suggestedQuality","_suggestedQuality","playerVars","_playerVars","disableCookies","_disableCookies","_ngZone","_youtubeContainer","_destroyed","_playerChanges","ready","_getLazyEmitter","stateChange","apiChange","playbackQualityChange","playbackRateChange","_isBrowser","iframeApiAvailableObs","YT","Player","iframeApiAvailableSubject","_existingApiReadyCallback","onYouTubeIframeAPIReady","startWith","hostObservable","cookiesDisabled","playerObs","createPlayerObservable","youtubeContainer","videoIdObs","hostObs","widthObs","heightObs","playerVarsObs","playerOptions","constructorOptions","sizeOptions","listType","skipUntilRememberLatest","notifier","CombineLatestOperator","combineLatest$1","doneSkipping","scan","syncPlayerState","player","waitUntilReady","onAbort","mergeMap","playerIsReady","onReady","publish","multicast","_player","_pendingPlayerState","_initializePlayer","bindSizeToPlayer","setSize","bindSuggestedQualityToPlayer","suggestedQualityObs","setPlaybackQuality","bindCueVideoCall","startSecondsObs","endSecondsObs","destroyed","cueOptionsObs","filteredCueOptions","filterOnOther","hasPlayerStarted","getPlayerState","PlayerState","UNSTARTED","CUED","changedVideoId","changedPlayer","cueOptions","cueVideoById","playVideo","_getPendingState","playbackState","PLAYING","pauseVideo","PAUSED","stopVideo","seekTo","allowSeekAhead","seek","mute","muted","unMute","isMuted","setVolume","volume","getVolume","setPlaybackRate","playbackRate","getPlaybackRate","getAvailablePlaybackRates","getVideoLoadedFraction","getCurrentTime","getPlaybackQuality","getAvailableQualityLevels","getDuration","getVideoUrl","getVideoEmbedCode","showBeforeIframeApiLoads","videoOptions","newPlayer","otherObs","filterFn","YouTubePlayerModule","VideoComponent","DocRepoItemComponent_div_0_div_4_Template","iconType","DocRepoItemComponent","EntryType","DocRepoItemComponent_div_0_Template","item_r2","toggleQueueDrillIn","DocRepoDirectoryComponent","isQueueDrilledIn","fileClicked","fileData","innerFileClickedEmitter","queueDrillInEmitter","selectedFolderEmitter","queryParamSubscription","folderParam","fileParam","selectedFolder","selectedFolderName","selectedFoldersFiles","docRepoData","sortAlphabetically","sortFoldersTop","EntryId","fileSelected","showNavBar","DocRepoDirectoryComponent_coach_doc_repo_item_1_Template","DocRepoDirectoryComponent_div_2_Template","DocRepoFolderNavComponent","drillOutClickEmitter","drillOutClicked","FileLikeObject","fileOrInput","rawFile","fakePathOrObject","HTMLInputElement","_createFromFakePath","lastModifiedDate","_createFromObject","FileItem","uploader","isUploading","isUploaded","isSuccess","_file","alias","itemAlias","upload","uploadItem","_onCompleteItem","_onErrorItem","cancelItem","removeFromQueue","onBeforeUpload","onBuildForm","onProgress","onSuccess","onError","_onBeforeUpload","_onBuildForm","_onProgress","_onCancel","removeAfterUpload","_prepareToUploading","_nextIndex","FileType","mime_doc","mime_xsl","mime_ppt","mime_psd","mime_compress","getMimeClass","mimeClass","fileTypeDetection","inputFilename","jpg","jpeg","tif","psd","bmp","png","nef","tiff","cr2","dwg","ai","indd","pin","cdp","skp","stp","mp3","wav","wma","m4a","compress","zip","rar","lz","z01","bz2","gz","pdf","xls","ods","mp4","avi","wmv","mpg","mts","flv","vob","m4v","mpeg","m2ts","mov","docx","odt","rtf","ppt","pptx","pps","ppsx","odp","chunks","extension","FileUploader","autoUpload","isHTML5","disableMultipart","formatDataFunction","formatDataFunctionIsAsync","setOptions","authTokenHeader","_queueLimitFilter","maxFileSize","_fileSizeFilter","allowedFileType","_fileTypeFilter","allowedMimeType","_mimeTypeFilter","addToQueue","arrayOfFilters","_getFilters","addedFileItems","_isValidFile","fileItem","_onAfterAddingFile","_failFilterIndex","_onWhenAddingFileFailed","_onAfterAddingAll","_getTotalProgress","_render","uploadAll","getIndexOfItem","clearQueue","_xhr","_form","getNotUploadedItems","cancelAll","isFile","File","isFileLikeObject","getReadyItems","item1","onAfterAddingAll","fileItems","onBuildItemForm","onAfterAddingFile","onWhenAddingFileFailed","onBeforeUploadItem","onProgressItem","onProgressAll","onSuccessItem","onErrorItem","onCancelItem","onCompleteItem","onCompleteAll","nextItem","_headersGetter","parsedHeaders","_xhrTransport","sendable","_onBeforeUploadItem","_onBuildItemForm","appendFile","parametersBeforeFiles","additionalParameter","paramVal","lengthComputable","loaded","_onProgressItem","_parseHeaders","getAllResponseHeaders","_transformResponse","_isSuccessCode","_onCancelItem","notUploaded","ratio","queueLimit","parsed","_onSuccessItem","FileDropDirective","fileOver","onFileDrop","getOptions","onDrop","transfer","_getTransfer","_preventAndStop","onDragOver","_haveFiles","dropEffect","onDragLeave","currentTarget","dataTransfer","originalEvent","FileSelectDirective","onFileSelected","isEmptyAfterSelection","attributes","multiple","onChange","FileUploadModule","item_r5","DocUploadComponent_div_4_div_12_div_4_Template","uploadDestination","item_r9","DocUploadComponent_div_4_ng_container_13_div_1_Template","item_r13","DocUploadComponent_div_4_ng_container_14_div_9_Template","cancelUpload","DocUploadComponent_div_4_div_12_Template","DocUploadComponent_div_4_ng_container_13_Template","DocUploadComponent_div_4_ng_container_14_Template","uploadDestinations","DocUploadComponent","updateFileTrigger","authServiceSubscription","currentUserFullName","hasBaseDropZoneOver","fileOverBase","isChecked","uploadContainsPHI","collectionID","getFolderPathFromIDs","folderID","DocUploadComponent_ng_container_3_Template","DocUploadComponent_div_4_Template","prerequisiteError","VIEWER_ASSETS_BASE_ROUTE","PAS_PROXY_BASE_ROUTE","prizmApiUrl","PrizmDocViewerWrapperComponent","renderer2","viewerControl","prerequisites","ensurePrerequisites","viewerCreated","viewingSessionId","createViewer","ensureScriptHasLoaded","ensureCssHasLoaded","$","pccViewer","documentID","imageHandlerUrl","viewerAssetsPath","resourcePath","language","viewerCustomizations","languages","icons","uiElements","annotateTab","redactTab","esignTab","annotationsMode","redactionReasons","enableRedactionReasonSelection","enableFreeformRedactionReasons","enableMultipleRedactionReasons","PCCViewer","EventType","PrintRequested","entryId","ensureHeadResourceExistsAndHasLoaded","rel","tagName","urlPropertyName","urlValue","ResourceLoadingState","setLoaded","setErrored","head","isErrored","onLoad","DOCUMENT","PrizmDocViewerWrapperComponent_div_0_Template","PrizmDocViewerWrapperComponent_div_1_Template","_isLoaded","_isErrored","_loadedCallbacks","_errorCallbacks","IframeTrackerDirective","iframeClick","onWindowBlur","onIframeMouseOver","iframeMouseOver","resetFocusOnWindow","onIframeMouseOut","ContactsComponent","SteeringCommitteeComponent","AcoOnboardComponent","PracticeImprovementComponent","InformationTechnologyComponent","EventsComponent","updateFilesCompleted","tabDocRepoFolders","BlobPath","onIframeClick","safeSrc","DocRepoComponent_ng_container_12_div_17_1_ng_template_0_Template","DocRepoComponent_ng_container_12_div_17_1_Template","DocRepoComponent_ng_container_12_div_17_ng_template_3_Template","tmp_0_0","setViewerControl","selectedTabName","sharedClicked","DocRepoComponent_ng_container_12_div_15_Template","DocRepoComponent_ng_container_12_div_16_Template","DocRepoComponent_ng_container_12_div_17_Template","DocRepoComponent_ng_container_12_div_18_Template","LastModified","Author","sharedButtonText","DocRepoComponent_ng_template_13_coach_contacts_1_Template","DocRepoComponent_ng_template_13_coach_aco_onboard_2_Template","DocRepoComponent_ng_template_13_coach_steering_committee_3_Template","DocRepoComponent_ng_template_13_coach_practice_improvement_4_Template","DocRepoComponent_ng_template_13_coach_information_technology_5_Template","DocRepoComponent_ng_template_13_coach_events_6_Template","CONTACTS_APPLICATION_FILES","DocRepoComponent","customComponent","setCustomComponent","documentService","canInteract","docURL","breadCrumbStack","originalSharedButtonText","navigateToFolderById","selectedFile","currentSelectedFolderChildren","masterDocRepo","innerFileClicked","updateRouter","OriginalFileName","textUrlStart","textUrlA","textUrl","unSafeSrc","bypassSecurityTrustResourceUrl","getCustomComponent","blob","fileSaver","ViewerReady","nextPage","changeToNextPage","previousPage","changeToPrevPage","copyText","stringToBeSwapped","recursiveFindFolder","folderId","selectedFolderListener","DocRepoComponent_coach_doc_repo_folder_nav_8_Template","DocRepoComponent_coach_doc_upload_10_Template","DocRepoComponent_ng_container_12_Template","DocRepoComponent_ng_template_13_Template","isDocUploadEnabled","ImproveAcoBoardComponent","FileSearchService","routerHistoryService","results$","previewUrl$","pushToRecents","changePreviewUrl","fullPath","blobPath","blobStorageUrl","file_r7","ImproveSearchComponent_ng_container_9_div_2_div_4_Template","ImproveSearchComponent_ng_container_9_div_2_Template","searchResults","selectedFilePathFormated","tabname","ImproveSearchComponent_ng_container_13_div_5_Template","ImproveSearchComponent_ng_container_13_div_12_Template","ImproveSearchComponent_ng_container_13_div_13_Template","ImprovePracticeImprovementComponent","ImproveInformationTechnologyComponent","ImproveContactsComponent","ImproveSearchComponent","fileSearchService","previewSubscription","decodedPath","tier_node","ImproveSearchComponent_ng_container_9_Template","ImproveSearchComponent_ng_template_10_Template","ImproveSearchComponent_ng_container_13_Template","ImproveSearchComponent_ng_template_14_Template","ImproveRoutingModule","VideoModule","subPeriod_r5","submitperiod","caravanFormSubmitPeriodID","openingInfo","randomSampleManualAbstractionFolder","SubmitUpcomingSubmissionSummary_div_1_ul_3_li_1_a_1_Template","SubmitUpcomingSubmissionSummary_div_1_ul_3_li_1_span_2_Template","SubmitUpcomingSubmissionSummary_div_1_ul_3_li_1_div_6_Template","openDate","openDueDate","caravanFormDataSourceID","SubmitUpcomingSubmissionSummary_div_1_ul_3_li_1_Template","SubmitUpcomingSubmissionSummary_div_1_ul_3_Template","subPeriod_r19","SubmitUpcomingSubmissionSummary_div_2_ul_3_li_1_a_1_Template","SubmitUpcomingSubmissionSummary_div_2_ul_3_li_1_span_2_Template","SubmitUpcomingSubmissionSummary_div_2_ul_3_li_1_Template","SubmitUpcomingSubmissionSummary_div_2_ul_3_Template","subPeriod_r29","SubmitUpcomingSubmissionSummary_div_3_ul_3_li_1_a_1_Template","SubmitUpcomingSubmissionSummary_div_3_ul_3_li_1_span_2_Template","SubmitUpcomingSubmissionSummary_div_3_ul_3_li_1_Template","SubmitUpcomingSubmissionSummary_div_3_ul_3_Template","SubmitUpcomingSubmissionSummary","formSubmissionOverviewEmitter","formSubmissionOverviewSubscription","randomSampleManualAbstractionFolderSubscription","SubmitUpcomingSubmissionSummary_div_1_Template","SubmitUpcomingSubmissionSummary_div_2_Template","SubmitUpcomingSubmissionSummary_div_3_Template","SubmitUpcomingSubmissionSummary_div_4_Template","SubmitComponent","piFormOpen","complianceFormOpen","qualityFormOpen","checkFormOpenStatus","todayDate","addOpenFormToTab","newTab","routeToTab","quailityName","SubmitSummaryComponent_div_15_div_2_Template","SubmitSummaryComponent_div_15_div_3_Template","SubmitSummaryComponent_div_15_button_10_Template","SubmitSummaryComponent_div_16_div_2_Template","SubmitSummaryComponent_div_16_div_3_Template","SubmitSummaryComponent_div_16_button_9_Template","SubmitSummaryComponent_div_17_div_2_Template","SubmitSummaryComponent_div_17_div_3_Template","SubmitSummaryComponent_div_17_button_11_Template","SubmitSummaryComponent_div_18_div_1_Template","meetingForm","submit_summary_component_QualityFormFeature","submit_summary_component_ComplianceFormFeature","submit_summary_component_PromotingInteroperabilityFormFeature","SubmitSummaryComponent","summaryForm","qualityForm","complianceForm","promotingInteroperabilityForm","complianceFeature","complianceName","PIFeature","PIName","meetingFeature","meetingName","caravanFormSubmissionOverview","recieveFormSubmissionOverviewData","SubmitSummaryComponent_div_15_Template","SubmitSummaryComponent_div_16_Template","SubmitSummaryComponent_div_17_Template","SubmitSummaryComponent_div_18_Template","QUALITY_FORM_TOOLTIPS","QUALITY_FORM_QUESTIONS","questionID","descText","questionText","isLowPointsIdeal","infoText","minDenominator","submitFormSharedFunctions","getBoolean","CustomValidators","greaterThanOrEqual","otherControlPath","otherControl","notGreaterThan","lessThanOrEqual","greaterThanMinOrZero","minValue","startDateIsInPast","isPast","responseDate","startIsInPast","sufficentDateRange","reqDateDiff","isEnoughDays","percentRounded","error_r5","FormBlockComponent_div_30_div_1_Template","toggleSubmitFormInfoText","formQuestion","FormBlockComponent","isInfoTextOpen","errTexts","NUM","DEN","NUMDEN","formGroupName","getQualityFormQGroup","responseSub$","updateValues","numSub$","denSub$","allSubs","getPercent","getPoints","setValidators","numeratorDenominator","questionsDisabled","disable","updateValueAndValidity","onlySelf","isFirstChange","enable","numDenIndex","timeStamp","toggleErrorTexts","newTimeStamp","patchValue","LastUpdateDateTime","den","emptyExists","touched","numDenExists","numExists","denExists","isNumDenValid","dirty","pristine","untouched","EPSILON","percentRoundedGraph","newPoints","getPointsLow","patchPoints","getPointsHigh","ResponsePointValue","FormBlockComponent_div_28_Template","FormBlockComponent_div_29_Template","FormBlockComponent_div_30_Template","FormBlockComponent_div_31_Template","practiceList","i_r16","Fac_ID","Name","toggleInfoText","updateOnExempt","exemptForm","specialStatus_r22","specialStatusID","specialStatus","SubmitQualityComponent_ng_container_0_div_31_option_7_Template","SubmitQualityComponent_ng_container_0_div_31_div_8_Template","specialStatusList","vendor_r25","source_r31","type_r32","SubmitQualityComponent_ng_container_0_ng_container_41_option_10_Template","SubmitQualityComponent_ng_container_0_ng_container_41_div_11_Template","SubmitQualityComponent_ng_container_0_ng_container_41_option_21_Template","SubmitQualityComponent_ng_container_0_ng_container_41_div_22_Template","onFileChange","SubmitQualityComponent_ng_container_0_ng_container_41_div_35_Template","SpecialStatus","dataSourceList","dataTypeList","uploadForm","uploadedFileName","question_r39","areQuestionsHidden","SubmitQualityComponent_ng_container_0_div_43_ng_container_1_Template","qualityFormQuestions","toggleFormQueueOpen","SubmitQualityComponent_ng_container_0_div_27_Template","SubmitQualityComponent_ng_container_0_div_28_Template","SubmitQualityComponent_ng_container_0_div_29_Template","SubmitQualityComponent_ng_container_0_form_30_Template","SubmitQualityComponent_ng_container_0_div_31_Template","SubmitQualityComponent_ng_container_0_option_39_Template","SubmitQualityComponent_ng_container_0_div_40_Template","SubmitQualityComponent_ng_container_0_ng_container_41_Template","SubmitQualityComponent_ng_container_0_div_43_Template","SubmitQualityComponent_ng_container_0_div_44_Template","SubmitQualityComponent_ng_container_0_div_60_Template","isFormQueueOpen","practicesForm","practicesFormArray","showSpecialStatus","ehrVendorList","totalPointsRounded","totalPointsRoundedText","maxPoints","formSaving","qf","period_r57","selectedFormSubPeriod","selectSubmissionPeriod","SubmitQualityComponent_ng_template_1_div_40_option_9_Template","stepDataSource","caravanFormSubmissionPeriod","stepSpecialStatus","specialStatus_r66","statusSummary_r63","OtherReason","updateSpecialStatus","SpecialStatusID","SubmitQualityComponent_ng_template_1_table_42_tr_14_option_5_Template","SubmitQualityComponent_ng_template_1_table_42_tr_14_input_6_Template","removeConfirmation","OtherSpecialStatusId","SubmitQualityComponent_ng_template_1_table_42_tr_13_Template","SubmitQualityComponent_ng_template_1_table_42_tr_14_Template","specialStatusSummary","submission_r77","SubmitQualityComponent_ng_template_1_tr_79_div_3_Template","editForm","TotalPoints","SubmitterEmail","ISComplete","_r84","formsReport","SubmitQualityComponent_ng_template_1_div_81_button_1_Template","formsAdminFormFeature","_r86","SubmitQualityComponent_ng_template_1_div_40_Template","SubmitQualityComponent_ng_template_1_div_41_Template","SubmitQualityComponent_ng_template_1_table_42_Template","SubmitQualityComponent_ng_template_1_tr_78_Template","SubmitQualityComponent_ng_template_1_tr_79_Template","SubmitQualityComponent_ng_template_1_div_81_Template","newSubmission","stepAddEdit","formSubmissions","formsAdminFormFeatureFlag","_r89","showRemoveModal","removeSubmission","SubmitQualityComponent","isExempt","addPracticeCheckboxes","_fb","_cd","qualityService","tooltips","FormQNames","totalPoints","isAddEditFormActive","QualityFormId","submitFormSharedFunction","authSub","submitPeriodParam","updateSubmissionPeriodConfigs","initializeQualityForm","refreshFormData","submissionID","getFilteredStatusList","setPractices","facIds","isSet","updateForm","calcTotalPoints","toggleShowSpecialStatus","toggleSourceTypeUpload","pointsArray","pointsArrayFiltered","accumulator","statuses","isDeleted","toggleAddEditFormActive","submissionPeriodID","submitPeriod","configs","configValue","configName","stepNumbers","controlSource","controlType","enableDisableQuestions","enableOrDisable","formQ","resetUploadForm","updateSelectedPractices","selectedPractices","selected","selectedPracticeFacIds","Tier4_FacID","selectedPracticeNames","Tier4_Name","removeQuestions","formCopy","FormQ1Fall","FormQ2Diabetes","FormQ3Breast","FormQ4Colorectal","FormQ5Controlling","FormQ6Screening","FormQ7PreventFlu","FormQ49PreventTobacco","FormQ67DataSource","FormQ68DataType","validSubmit","validDraft","getRawValue","finalize","resetForms","markAllAsTouched","nowJson","nowQtr","quarter_of_the_year","FormID","FormVersionID","FormName","FormCategoryID","EHRVendor","RegReportOne","RegReportTwo","FormQuarter","CEHRT","FormCreateDateTime","CreatedByUserID","ClosedDateTime","LastUpdateUserID","UserFormID","UserID","SubmitPeriodID","QuestionID","QuestionText","FormQCategoryID","FormQResponses","UserResponse","FormResponseDataTypeID","FormResponseTypeID","ResponseDateTime","ResponseUserID","qualityFormSub","practicesFormSub","exemptFormSub","uploadFormSub","submission","facultyIds","SelectedFacs","tier4","SelectedFacName","loadFromSubmission","regreportone","regreporttwo","dataSource","ID","patientPopulation","Response","questionControl","questionId","Numerator","Denominator","Points","exemptionToRemove","IsDeleted","specialstatusEntryID","statusSummary","otherReason","SubmitQualityComponent_ng_container_0_Template","SubmitQualityComponent_ng_template_1_Template","SubmitQualityComponent_div_3_Template","ComplianceFormAnswer","noy","partial","yespartial","COMPLIANCE_FORM_QUESTION_SECTIONS","questions","standardQuestion","pointValue","questionAnswer","requiredForQuestions","subQuestionId","subQuestionReqResp","fileUpload","textResponseOnly","checkListResponseOnly","checkListOptions","checkId","checkText","ComplianceFormQuestionComponent_div_0_div_13_div_11_Template","answerForm","i_r15","ComplianceFormQuestionComponent_div_0_div_14_div_4_Template","formCheck","ComplianceFormQuestionComponent_div_0_div_5_Template","ComplianceFormQuestionComponent_div_0_div_6_Template","ComplianceFormQuestionComponent_div_0_div_12_Template","ComplianceFormQuestionComponent_div_0_div_13_Template","ComplianceFormQuestionComponent_div_0_div_14_Template","ComplianceFormQuestionComponent_div_0_div_15_Template","formAnswer","ComplianceFormQuestionComponent","addCheckboxes","chklstFormArray","answerUpdated","fileUpdated","compCheckList","formPartialText","formTextRespOnly","fileUp","chkbxlst","formCheckSub","updateSelectedCheckList","afa","partialText","textRespOnly","formAnswerValue","sectionIndex","questionIndex","chkList","chk","selectedselectedCheckListValues","ComplianceFormQuestionComponent_div_0_Template","ComplianceFormQuestionComponent_div_1_Template","participantList","i_r10","TierID","TierName","question_r14","si_r12","qi_r15","SubmitComplianceComponent_ng_container_0_ng_container_15_coach_compliance_form_question_3_Template","section_r11","allAnswers","SubmitComplianceComponent_ng_container_0_div_10_Template","SubmitComplianceComponent_ng_container_0_div_11_Template","SubmitComplianceComponent_ng_container_0_div_12_Template","SubmitComplianceComponent_ng_container_0_ng_container_15_Template","SubmitComplianceComponent_ng_container_0_ng_container_23_Template","clearFormClick","tier3Form","participantsFormArray","mockQuestionSections","sectionsCompleted","allSectionsComplete","submission_r29","showRemediation","SubmitComplianceComponent_ng_template_1_tr_80_td_16_a_1_Template","SubmitComplianceComponent_ng_template_1_tr_80_td_16_a_2_Template","SubmitComplianceComponent_ng_template_1_tr_80_td_16_Template","SubmitComplianceComponent_ng_template_1_tr_80_td_17_Template","PrincipalParticipantName","SubmitComplianceComponent_ng_template_1_div_82_button_1_Template","SubmitComplianceComponent_ng_template_1_tr_79_Template","SubmitComplianceComponent_ng_template_1_tr_80_Template","SubmitComplianceComponent_ng_template_1_div_82_Template","question_r51","RemediationText","SubmitComplianceComponent_ng_container_3_div_10_tr_16_Template","caravanFormRemediationInfo","Questions","SubmitComplianceComponent_ng_container_3_div_10_Template","hideRemediation","Message","displayRemediation","SubmitComplianceComponent","complianceyFormId","answers","waiverQuestionsDisabled","participants","uploadFormComb","generateComplianceForm","setWaiverQuestionsDisabledStatus","section","ee","answerValue","QuestionInfo","subQuestion","respValue","sectionComplete","requiredIfVisible","getSectionsCompleted","quarterOfTheYear","Tier3_Name","FormQ15","FormQ16","FormQ17","FormQ18","FormQ19","FormQ20","FormQ21","FormQ22","FormQ23","FormQ24","FormQ79","FormQ26","FormQ27","FormQ28","FormQ73","FormQ29","FormQ30","FormQ31","FormQ32","FormQ34","FormQ35","FormQ36","FormQ37","FormQ81","FormQ38","FormQ84","FormQ39","FormQ85","FormQ40","FormQ86","FormQ41","FormQ42","FormQ43","FormQ44","FormQ76","tier3FormSub","updateSelectedParticipants","respPoints","setParticipants","tier3Ids","SelectedTier3s","tier3","participant","selectedParticipants","selectedParticipantTierIds","selectedParticipantNames","finalizeScore","totalQuestions","totalPercent","showRemediationModal","compScore","SubmitComplianceComponent_ng_container_0_Template","SubmitComplianceComponent_ng_template_1_Template","SubmitComplianceComponent_ng_container_3_Template","FORMS_SPECIAL_STATUSES","FormQuestionConstants","Q8SecurityRisk","promptQuarter","helpText","riskOptions","optionId","optionText","modalLinks","entryID","Q9ePrescibe","exclusionText","allowExclusion","Q10SupportSend","Q11SupportReceive","Q12ProvideAccess","Q14DrugMonitor","checkBoxOptions","Q71HealthInformationExchange","pointsText","Q77HighPriorityGuideSAFER","Q78BonusRegistryReporting","Q82TEFCA","Q83Date","requiredDayDif","exclusionChanged","questionInfo","numeratorChanged","denominatorChanged","parentForm","error_r10","SubmitInteroperabilityQuestionComponent_div_11_div_1_Template","cancelExclusion","confirmExclusion","SubmitInteroperabilityQuestionComponent","hasInitialized","showHelpText","checkBoxChanged","showExclusionModal","exclusionTypeId","responseTypeId","_maxPoints","updatePoints","checkedControl","detailsText","pointsControl","exclusion","pointValueTo1","setFormType","questionname","SubmitInteroperabilityQuestionComponent_div_9_Template","SubmitInteroperabilityQuestionComponent_div_10_Template","SubmitInteroperabilityQuestionComponent_div_11_Template","SubmitInteroperabilityQuestionComponent_div_12_Template","SubmitInteroperabilitySecurityRiskComponent","willComplete","willCompleteIn","unset","completeText","willCompleteInText","willCompleteText","completeControl","SubmitInteroperabilitySecurityRiskComponent_div_24_Template","tmp_14_0","changeResponse","SubmitInteroperabilityYesNoComponent","radioButtonChanged","checkBoxExclusionChanged","exclusionSelected","SubmitInteroperabilityYesNoComponent_span_6_Template","SubmitInteroperabilityYesNoComponent_div_11_Template","SubmitInteroperabilityYesNoComponent_div_13_Template","SubmitInteroperabilityYesNoComponent_div_14_Template","SubmitInteroperabilityRegistryQuestionComponent","interopForm","SubmitInteroperabilityRegistryQuestionComponent_div_65_Template","CheckboxQuestionComponent_div_12_div_3_Template","CheckboxQuestionComponent","isExcluded","checkedList","formPoints","selectedCheckList","CheckboxQuestionComponent_span_6_Template","CheckboxQuestionComponent_div_11_Template","CheckboxQuestionComponent_div_12_Template","CheckboxQuestionComponent_div_13_Template","error_r2","SubmitInteroperabilityDateRangeComponent_div_13_div_1_Template","SubmitInteroperabilityDateRangeComponent","startDateText","endDateText","StartShort","EndShort","StartFuture","EndFuture","InvalidStartDate","InvalidEndDate","startControl","endControl","dateDifference","startDateValue","endDateValue","dateValue","controlName","dateChanged","responeValue","newEndDate","startFutureExists","endFutureExists","inValidStartDateExists","inValidEndDateExists","startShortExists","endShortExists","showInfoWithText","SubmitInteroperabilityDateRangeComponent_div_13_Template","practice_r14","specialStatus_r17","specialStatusHelpText","specialExemptionChange","SubmitPromotingInteroperabilityComponent_ng_container_0_div_35_option_7_Template","SubmitPromotingInteroperabilityComponent_ng_container_0_div_35_div_8_Template","submitPI","vendor_r21","formQuestionConstants","uploadHelpText","exclusionRequest","hieChanged","exclusionRequestTEFCA","exclusionRequestCheckBox","ePrescribeMax","supportSendMax","supportReceiveMax","hieMax","tefcaMax","providePatientsMax","drugMonitorsMax","modalLink_r46","SubmitPromotingInteroperabilityComponent_ng_container_0_div_60_div_4_div_1_div_1_Template","SubmitPromotingInteroperabilityComponent_ng_container_0_div_60_div_4_div_1_div_2_Template","SubmitPromotingInteroperabilityComponent_ng_container_0_div_60_div_4_div_1_div_3_Template","SubmitPromotingInteroperabilityComponent_ng_container_0_div_60_div_4_div_1_Template","infoMeasureLinkFile","SubmitPromotingInteroperabilityComponent_ng_container_0_div_60_div_4_Template","practiceHelpText","practiceSelected","SubmitPromotingInteroperabilityComponent_ng_container_0_option_27_Template","SubmitPromotingInteroperabilityComponent_ng_container_0_option_28_Template","SubmitPromotingInteroperabilityComponent_ng_container_0_option_29_Template","exemptHelpText","isSpecialStatusChanged","SubmitPromotingInteroperabilityComponent_ng_container_0_div_35_Template","ehrVendorHelpText","SubmitPromotingInteroperabilityComponent_ng_container_0_option_43_Template","SubmitPromotingInteroperabilityComponent_ng_container_0_div_44_Template","SubmitPromotingInteroperabilityComponent_ng_container_0_div_45_Template","SubmitPromotingInteroperabilityComponent_ng_container_0_div_47_Template","SubmitPromotingInteroperabilityComponent_ng_container_0_div_48_Template","SubmitPromotingInteroperabilityComponent_ng_container_0_div_60_Template","isSpecialExemption","ehrVendors","specialStatus_r74","statusSummary_r71","SubmitPromotingInteroperabilityComponent_ng_template_1_tr_61_option_5_Template","SubmitPromotingInteroperabilityComponent_ng_template_1_tr_61_input_6_Template","submission_r85","SubmitPromotingInteroperabilityComponent_ng_template_1_tr_97_div_3_Template","_r92","SubmitPromotingInteroperabilityComponent_ng_template_1_div_99_button_1_Template","SubmitPromotingInteroperabilityComponent_ng_template_1_tr_60_Template","SubmitPromotingInteroperabilityComponent_ng_template_1_tr_61_Template","SubmitPromotingInteroperabilityComponent_ng_template_1_tr_96_Template","SubmitPromotingInteroperabilityComponent_ng_template_1_tr_97_Template","SubmitPromotingInteroperabilityComponent_ng_template_1_div_99_Template","SubmitPromotingInteroperabilityComponent","submitFormsService","specialStatuses","ehrVendor","FormVersion","hieSelected","yesOnTEFCA","totalMaxPoints","questionNames","initializePiForm","provideExclusionPoints","zeroTotal","exclusionValue","scoreZeroWholeForm","setMaxPoints","setExclustionPoints","regReportOne","regReportTwo","ePrescribeExclusion","supportSendExclusion","supportReceieveExclusion","drugMonitorExclusion","hieSelectedValue","hieSelectedBool","drugMonitorMax","uploadRequiredValidator","specialStatusRequiredValidator","FormQ8SecurityRisk","FormQ9ePrescribe","FormQ10SupportSend","FormQ11SupportReceive","FormQ12ProvideAccess","FormQ14DrugMonitor","FormQ71HealthInformationExchange","FormQ77HighPriorityGuideSAFER","FormQ78BonusRegistryReporting","FormQ82TEFCA","FormQ83Date","periodEndDate","periodStartDate","formControl","spcialStatusRequired","uploadRequired","disableFormValidators","clearValidators","enableFormValidators","facId","facicilityId","facilities","facilitySelected","Exclusion","disableFormValidatorsCheckBox","enableFormValidatorsCheckBox","radioBoxResp","quesitonNames","SubmitPromotingInteroperabilityComponent_ng_container_0_Template","SubmitPromotingInteroperabilityComponent_ng_template_1_Template","SubmitPromotingInteroperabilityComponent_div_3_Template","BARRIERS_DATA","SUCCESSES_DATA","QUARTERS_DATA","MONTHS_DATA","pp_r14","SubmitMeetingComponent_24_ng_template_0_Template","selectCommunity","i_r19","quarter_r18","SubmitMeetingComponent_ng_container_39_ng_container_6_Template","quartersData","month_r22","SubmitMeetingComponent_ng_container_40_div_5_Template","SubmitMeetingComponent_ng_container_40_div_6_Template","monthsData","i_r26","successesList","otherSuccesses","updateSelectedSuccesses","SubmitMeetingComponent_ng_container_67_div_6_Template","hasOtherSuccesses","toggleOnFocusOtherSuccesses","SubmitMeetingComponent_ng_container_67_ng_container_11_Template","successesForm","successesFormArray","i_r35","barriersList","otherBarriers","updateSelectedBarriers","SubmitMeetingComponent","barriersFormArray","barriersForm","principleParticipants","uploadedAgendaFileName","uploadedMinutesFileName","hasOtherBarriers","principleParticipantHelpText","resetCheckboxes","addSuccessCheckboxes","addBarriersCheckboxes","initializeMeetingForm","FormQ51","FormQ52","FormQ53","FormQ54","FormQ55","FormQ56","FormQ57","FormQ58","FormQ59","FormQ60","FormQ61","brightSpot","barriers","meetingCount","successes","agenda","selectedCommunity","setPrincipleParticipant","successesFormSub","barriersFormSub","selectedSuccesses","selectedSuccessCheckboxes","selectedBarriers","selectedBarriersCheckboxes","meetingForm_otherSuccesses","toggleOnFocusOtherBarriers","meetingForm_otherBarriers","onAgendaFileChange","onMinutesFileChange","clearFileInput","setRequiredTierInfo","selectedPP","ppSet","fromCodePoint","removeControl","uploadAgendaFile","uploadMinutesFile","ctrl","replaceChild","ppSelected","pp","SubmitMeetingComponent_div_13_Template","SubmitMeetingComponent_option_18_Template","SubmitMeetingComponent_option_21_Template","SubmitMeetingComponent_24_Template","SubmitMeetingComponent_ng_template_25_Template","SubmitMeetingComponent_ng_container_39_Template","SubmitMeetingComponent_ng_container_40_Template","SubmitMeetingComponent_div_63_Template","SubmitMeetingComponent_ng_container_66_Template","SubmitMeetingComponent_ng_container_67_Template","SubmitMeetingComponent_div_73_Template","SubmitMeetingComponent_ng_container_78_Template","SubmitMeetingComponent_div_83_Template","ClickableComponent","onClicked","displayButton","ClickableParentComponent","clicked","componentParent","reportParentClickResult","onBtnExportResponses","AdminFormReport","resultClickedEvent","resultResponseReport","frameworkComponents","clickableParentComponent","getDisplayedRowAtIndex","setExpanded","onBtnExport","columnNamesLevelOne","CaravanFormAdminData","AdminFormReport_ng_container_4_Template","DetailCellRenderer","masterGridApi","colDefs","detailGridOptions","detailRowHeight","detailCellRendererParams","flex","groupDefaultExpanded","masterDetail","detailRowAutoHeight","getDetailRowData","successCallback","communities","addDetailGridInfo","removeDetailGridInfo","AdminFormReportPractice","myDetailCellRenderer","isRowMaster","formResponses","columnNamesLevelTwo","onGroupExpandedOrCollapsed","CaravanFormAdminResponseData","AdminFormReportPractice_ng_container_4_Template","period_r4","refreshOverview","resultClickedACO","formsSubmissionsOverviewACO","columnNamesACO","returnToOverview","refreshCommunity","resultClickedICC","formsSubmissionsOverviewComm","columnNamesComm","returnToCommunity","refreshPractice","formSubmissionsPracticeResps","practiceCellRendererParams","formQuestionResponses","SubmitQualityAdminReportComponent","isPracticeHidden","isICCHidden","isACOHidden","applyMiniFilterWhileTyping","caravanFormAdminSubmitPeriod","icc","aco","SubmitQualityAdminReportComponent_option_5_Template","SubmitQualityAdminReportComponent_ng_container_6_Template","SubmitQualityAdminReportComponent_ng_container_7_Template","SubmitQualityAdminReportComponent_ng_container_8_Template","period_r5","resultClickedPrincipal","returnToPrincipal","formSubmissionResponse","SubmitComplianceAdminReportComponent","isResponseHidden","formResponseDownloadFields","caravanFormAdminResponses","submitPeriodId","responseData","SubmitComplianceAdminReportComponent_option_5_Template","SubmitComplianceAdminReportComponent_ng_container_6_Template","SubmitComplianceAdminReportComponent_ng_container_7_Template","SubmitComplianceAdminReportComponent_ng_container_8_Template","SubmitComplianceAdminReportComponent_ng_container_9_Template","SubmitPromotingInteroperabilityAdminReportComponent","promotoingInteropService","PIFormId","SubmitPromotingInteroperabilityAdminReportComponent_option_5_Template","SubmitPromotingInteroperabilityAdminReportComponent_ng_container_6_Template","SubmitPromotingInteroperabilityAdminReportComponent_ng_container_7_Template","SubmitPromotingInteroperabilityAdminReportComponent_ng_container_8_Template","SubmitRoutingModule","ClickableModule","AppIds","prod","wp","IdentifierProviders","CaravanHealthPatientInHierarchyNodeProdEnvironment","userDetailApiUrl","idleStart","idleTimeout","idlePing","projectId","EulaAgreementComponent","TimeoutComponent","signIn","SignoutComponent","signoutInProgress","SignoutComponent_div_1_Template","SignoutComponent_h3_2_Template","SignoutComponent_h3_3_Template","AutoLoginComponent","NoAuthComponent","RootComponent","AppRoutingModule","useHash","hierarchy_r1","HeaderHierarchyOverlayComponent_ng_container_2_select_3_option_1_Template","HeaderHierarchyOverlayComponent_ng_container_2_select_3_option_2_Template","HeaderHierarchyOverlayComponent_ng_container_2_select_3_Template","HeaderHierarchyOverlayComponent_ng_container_2_div_4_Template","anyLoading","HeaderHierarchyOverlayComponent","HeaderHierarchyOverlayComponent_ng_container_2_Template","PatientSearchService","savedSearch","savedSearchTerm","patientSearchResults","clearSavedData","setTab","toggleAdvancedSearch","advancedSearch","patientAdvancedSearch","patientSearch","HeaderSearchComponent_ng_container_8_ng_container_1_Template","HeaderSearchComponent_ng_container_8_ng_container_2_Template","HeaderSearchComponent_ng_container_8_div_3_Template","fileSearch","result_r27","selectPatientResult","idx_r28","getFormattedPatientDemographicsData","resetPatientSearch","HeaderSearchComponent_ng_container_11_div_7_Template","HeaderSearchComponent","patientSearchService","getAge","mbiRegex","nameRegex","dateNoSlashes","minAllowedDate","maxAllowedDate","allowedDateReg","patientSelected","searchTerm","minLength","hasCareModule","focusPrimarySearchInput","primarySearchField","searchPatient","searchFile","navigateToFileResults","nameSearchTerm","matchDate","matchDateNoSlashes","checkDate","performingPatientSearch","HeaderSearchComponent_div_3_Template","HeaderSearchComponent_div_6_Template","HeaderSearchComponent_ng_container_8_Template","HeaderSearchComponent_ng_container_9_Template","HeaderSearchComponent_ng_container_11_Template","HeaderSearchComponent_ng_container_12_Template","HeaderProcessProgressComponent","HeaderProcessProgressComponent_div_2_Template","HeaderProcessProgressComponent_ng_template_4_Template","HeaderProcessProgressComponent_div_6_Template","process_r2","HeaderProcessesComponent_div_3_span_3_Template","HeaderProcessesComponent","HeaderProcessesComponent_span_2_Template","HeaderProcessesComponent_div_3_Template","Views","hideIfFeatureFlag","hasPHI","ActiveViewService","allViews","activeView$","viewPath","PRIMARY_OUTLET","clickTitle","activeView_r4","isHeaderConsdensed$","hasProcessError","completedProcessCount","openProcessesDropdown","HeaderComponent_div_7_div_4_Template","openSearchDropdown","searchActivated","HeaderComponent_ng_template_8_ng_template_0_Template","HeaderComponent_ng_template_8_ng_template_1_Template","searchDropdownPortal","HeaderComponent","_activeView","dropdownPortal","processesOrigin","searchOrigin","setActiveViewCrumb","passTier","HeaderComponent_div_1_Template","HeaderComponent_div_6_Template","HeaderComponent_div_7_Template","HeaderComponent_ng_template_8_Template","SidebarLogoComponent","SidebarLogoComponent_div_2_Template","SidebarLogoComponent_img_3_Template","HelpPanelService","isHelpPanelOpen$","isHelpPanelPinned$","setHelpPanelOpen","setHelpPanelPinned","isPinned","toggleHelpPanelOpen","toggleHelpPanelPinned","item_r3","menuItemClicked","SidebarMenuComponent_ng_container_0_ng_container_2_button_1_ng_container_4_Template","SidebarMenuComponent_ng_container_0_ng_container_2_button_1_ng_container_5_Template","SidebarMenuComponent_ng_container_0_ng_container_2_button_1_Template","SidebarMenuComponent_ng_container_0_ng_container_2_button_2_Template","SidebarMenuComponent_ng_container_0_ng_container_2_Template","SidebarMenuComponent_ng_container_1_ng_container_1_ng_container_1_div_1_ng_container_5_Template","SidebarMenuComponent_ng_container_1_ng_container_1_ng_container_1_div_1_ng_container_6_Template","SidebarMenuComponent_ng_container_1_ng_container_1_ng_container_1_div_1_Template","SidebarMenuComponent_ng_container_1_ng_container_1_ng_container_1_div_2_Template","SidebarMenuComponent_ng_container_1_ng_container_1_ng_container_1_Template","SidebarMenuComponent_ng_container_1_ng_container_1_Template","SidebarMenuComponent","_helpPanelService","_breakpointObserver","itemClicked","breakpointObserver","isFloatingMenu","views","helpItem","giveAccess","SidebarMenuComponent_ng_container_0_Template","SidebarMenuComponent_ng_container_1_Template","TierNameLookupService","tierEndpoint","preLoadTierNames","tn","DocumentLookupService","docEndpoint","ReportLookupService","reportEndpoint","RecentsLookupService","documentLookupService","reportLookupService","patientElement","reportElement","SidebarRecentElementComponent_div_0_coach_icon_3_Template","SidebarRecentElementComponent_div_0_coach_icon_4_Template","SidebarRecentElementComponent_div_0_coach_icon_5_Template","SidebarRecentElementComponent_div_0_coach_icon_6_Template","SidebarRecentElementComponent_div_0_coach_icon_7_Template","routerURL","SidebarRecentElementComponent","recentsLookupService","tierNameLookupService","urlSerializer","parseFeature","word","_tier","lookupResult","SidebarRecentElementComponent_div_0_Template","SidebarRecentComponent_ng_container_0_div_2_ng_container_1_Template","recentItems","SidebarRecentComponent_ng_container_0_div_1_Template","SidebarRecentComponent_ng_container_0_div_2_Template","SidebarRecentComponent","_getInitialsFromName","historyService","recents","SidebarRecentComponent_ng_container_0_Template","SidebarAccountDropdownComponent","userInfo_r6","SidebarAccountComponent_ng_container_0_div_3_div_2_Template","SidebarAccountComponent_ng_container_0_div_3_Template","signInOrOutClick","SidebarAccountComponent_ng_container_0_div_7_Template","SidebarAccountComponent_ng_container_0_div_9_Template","SidebarAccountComponent_ng_container_1_div_4_Template","SidebarAccountComponent_ng_container_1_div_6_Template","SidebarAccountComponent","isAccountDropdownOpen","altKey","signInOrOut","isloggedIn","openAccountDropdown","sidebarAccountDropdownPortal","SidebarAccountComponent_ng_container_0_Template","SidebarAccountComponent_ng_container_1_Template","SidebarComponent","sidebarToggled","navigateHome","toggleSidebar","SidebarComponent_ng_container_6_Template","HelpPanelComponent","pinnedClass","isAbsolute","setPinnedClass","isFound","filterHelpFile","getHelpfileFromfilterPreset","getHelpfileFromReport","docrepoHelpFile","getHelpfileFromDocRepoLocation","getHelpfileContents","reportGuid","markdown","togglePinned","toggleOpen","getIsDisabled","continueSession","timeLeft","AppComponent","_renderer","userInactive","renewIdp","toggleCondensedClass","hierarchyChanged","allChildren","flattenChildren","hasNavigated","navigateToStoredEndpoint","isSharedLink","newUrl","moreItems","SetUATimer","removeClass","getSetSidebarStateStore","mixpanelConfig","setMixPanelUserProperties","tiers","startIdleWatch","onTimerStart","getConfigValue","isTimeoutDialogOpen","showTimeOutMessage","onTimeout","showSessionEnd","storedState","isInvalidRedirect","qparams","$email","$name","updatedBy","AppComponent_div_8_Template","SidebarModule","HeaderModule","CoreModule","useClass","ViewsModule","HelpPanelModule","AuthInterceptor","secureRoutes","intercept","setHeaders","handle","authInterceptorProviders","HTTP_INTERCEPTORS","HttpLinkHandler","ApolloLink","requester","operationPrinter","Observable$1","getContext","pick","prioritize","picked","includeQuery","includeExtensions","useMultipart","useGETForQueries","isQuery","definitions","def","createHeadersWithClientAwareness","clientAwareness","mergeHeaders","extractFiles","shouldUseBody","isBatching","multipartInfo","shouldUseMultipart","bodyOrParams","paths","setContext","closed","HttpLink","ApolloCache","assumeImmutableResults","getFragmentDoc","wrap","getFragmentQueryDocument","cacheSizes","WeakCache","updateResult","performTransaction","optimistic","recordOptimisticTransaction","transaction","optimisticId","transformDocument","transformForLink","gc","modify","readQuery","rootId","watchFragment","latestDiff","fragmentName","diffOptions","returnPartialData","equalByQuery","missing","mergeDeepArray","readFragment","writeQuery","__rest","dataId","writeFragment","updateQuery","updateFragment","__DEV__","getMemoryInternals","getApolloCacheMemoryInternals","MissingFieldError","maybeDeepFreeze","deepFreeze","workSet","isNonNullObject","shallowFreeze","isFrozen","freeze","hasOwn","isNullish","defaultDataIdFromObject","__typename","keyObject","dataIdFromObject","addTypename","resultCaching","canonizeResults","shouldCanonizeResults","TypeOrFieldNameRegExp","fieldNameFromStoreName","storeFieldName","selectionSetMatchesResult","selectionSet","selections","isField","shouldInclude","resultKeyNameFromField","storeValueIsStoreObject","isReference","extractFragmentContext","fragments","fragmentMap","createFragmentMap","getFragmentDefinitions","lookupFragment","EntityStore","Root","delModifier","INVALIDATE","policies","rootIds","refs","getFieldValue","objectOrReference","__ref","canRead","objOrRef","toReference","objOrIdOrRef","mergeIntoStore","makeReference","toObject","fieldName","depend","storeObject","rootTypenamesById","Layer","dependOnExistence","older","newer","incoming","invariant","merged","DeepMerger","storeObjectReconciler","caching","fieldsToDirty_1","__exists","hasKeyArgs","changedFields_1","needToMerge_1","allDeleted_1","sharedDetails_1","readField","fieldNameOrOptions","store","fieldValue","getStorage","checkReference","seenReference","someNonReference","getStoreFieldName","evict","evicted","extract","extraRootIds","getRootIdSet","__META","newData","rest_1","retain","release","findChildRefIds","idsToRemove","root_1","workSet_1","makeCacheKey","keyMaker","lookupArray","CacheGroup","resetCaching","dep","Trie","canUseWeakMap","makeDepKey","maybeDependOnExistenceOfEntity","entityId","supportsResultCaching","seed","stump","Stump","storageTrie","addLayer","layerId","replay","removeLayer","ownStoreObject","parentStoreObject","equal","fromParent","existingObject","incomingObject","existingValue","incomingValue","ObjectCanon","known","canUseWeakSet","WeakSet","pool","passes","keysByJSON","admit","isKnown","pass","shallowCopy","original","proto_1","array_1","sortedKeys","firstValueIndex_1","sorted","obj_1","execSelectionSetKeyArgs","StoreReader","knownResults","compact","canon","executeSelectionSet","peekArgs","peek","enclosingRef","execSelectionSetImpl","resultCacheMaxSize","keyArgs","varString","executeSubSelectedArray","execSubSelectedArrayImpl","resetCanon","diffQueryAgainstStore","getDefaultValues","getQueryDefinition","rootRef","execResult","getMainDefinition","canonicalStringify","firstMissing","isFresh","latest","objectsToMerge","missingMerger","handleMissing","resultName","rootIdsByTypename","addTypenameToDocument","getFragmentFromSelection","Kind","FRAGMENT_SPREAD","newInvariantError","fragmentMatches","finalResult","frozen","childResult","assertSelectionSetForIdValue","getTypenameFromStoreObject","tree","specifierInfoCache","lookupSpecifierInfo","spec","cacheKey","keyFieldsFnFromSpecifier","keyFieldsFn","collectSpecifierPaths","schemaKeyPath","extractKeyPath","extractKey","keyArgsFnFromSpecifier","keyArgsFn","collected","keyPath","firstKey","firstChar","variableName","varKeyPath","isNonEmptyArray","directives","directiveName_1","directiveArgs","argumentsObjectFromField","extractor","merger","getSpecifierPaths","toMerge","paths_1","currentPath_1","reducer","argsFromFieldSpecifier","nullKeyFieldsFn","simpleKeyArgsFn","_args","mergeTrueFn","mergeObjects","mergeFalseFn","Policies","typePolicies","toBeAdded","supertypeMap","fuzzySubtypes","usingPossibleTypes","setRootTypename","possibleTypes","addPossibleTypes","addTypePolicies","partialContext","ROOT_QUERY","normalizeReadFieldOptions","policy","getTypePolicy","keyFn","specifierOrId","queryType","mutationType","subscriptionType","updateTypePolicy","keyFields","setMerge","getFieldPolicy","which","old","supertype","getSupertypeSet","subtype","policy_1","supertypes_1","regExp","fuzzy","fuzzySupertypes","inbox","fieldPolicies","supertypeSet","typeCondition","typenameSupertypeSet","workQueue_1","maybeEnqueue_1","needToCheckFuzzySubtypes","checkingFuzzySubtypes","fuzzyString","fieldSpec","specifierOrString","storeKeyNameFromField","getStoreKeyName","readOptions","makeFieldFunctionOptions","cacheSlot","withValue","getReadFunction","getMergeFunction","parentTypename","childTypename","runMergeFunction","makeMergeObjectsFunction","overwrite","readFieldArgs","stringifyForDisplay","eType","iType","getContextFlavor","clientOnly","deferred","flavored","flavors","StoreWriter","reader","writeToStore","operationDefinition","getOperationDefinition","makeProcessedFieldsMerger","written","incomingById","processSelectionSet","mergeTree","fieldNodeSet","entityRef","applied","applyMerges","fieldsWithSelectionSets_1","hasSelectionSet_1","childTree","hasMergeFunction_1","warnAboutDataLoss","existingRef","incomingObj","parentType","typeDotName","warnings","childTypenames","getTypenameFromResult","flattenFields","resultFieldKey","getChildMergeTree","processFieldValue","maybeRecycleChildMergeTree","dataRef","sets","previous_1","mergeMergeTrees","mergeTreeIsEmpty","fieldMap","limitingTrie","flatten","inheritedContext","visitedNode","if","getStorageArgs","e_1","i_1","getValue_1","eVal","iVal","aVal","emptyMergeTreePool","needToMergeMaps","remainingRightKeys_1","leftTree","InMemoryCache","watches","addTypenameTransform","DocumentTransform","makeVar","txCount","normalizeConfig","rootStore","optimisticData","resetResultCache","resetResultIdentities","previousReader","storeReader","storeWriter","maybeBroadcastWatch","broadcastWatch","restore","broadcast","broadcastWatches","recallCache","forgetCache","forget","resetCache","resetCaches","discardWatches","removeOptimistic","idToRemove","newOptimisticData","onWatchUpdated","perform","layer","alreadyDirty","addFragmentsToDocument","lastDiff","fromOptimisticTransaction","createApollo","httpLink","auth","forward","getInMemoryCacheMemoryInternals","GraphQLModule","APOLLO_OPTIONS","deps","ApolloModule","invalidTimingValue","ɵRuntimeError","ngDevMode","optimizeGroupPlayer","players","NoopAnimationPlayer","ɵAnimationGroupPlayer","normalizeKeyframes$1","normalizer","keyframes","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizedValue","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","animationFailed","listenOnPlayer","onStart","copyAnimationEvent","onDone","onDestroy","phaseName","makeAnimationEvent","triggerName","fromState","toState","totalTime","_data","getOrSetDefaultValue","parseTimelineCommand","command","separatorPos","getParentElement","_CACHED_BODY","_IS_WEBKIT","containsElement","elm1","elm2","invokeQuery","NoopAnimationDriver","validateStyleProperty","getBodyNode","containsVendorPrefix","matchesElement","_element","_selector","computeStyle","easing","previousPlayers","scrubberAccessRequested","AnimationDriver","NOOP","ONE_SECOND","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","_convertTimeValueToMS","resolveTiming","timings","allowNegativeValues","parseTimeExpression","delayMatch","easingVal","containsErrors","negativeStepValue","negativeDelayValue","copyObj","convertToMap","styleMap","copyStyles","backfill","setStyles","formerStyles","camelProp","dashCaseToCamelCase","eraseStyles","normalizeAnimationEntry","steps","PARAM_REGEX","extractStyleParams","interpolateParams","varName","localVal","invalidParamValue","iteratorToArray","DASH_CASE_REGEXP","visitDslNode","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","nodeType","ANY_STATE","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","invalidTransitionAlias","invalidExpression","expr","makeLambdaFromStates","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","buildAnimationAst","driver","metadata","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","transitions","invalidTrigger","stateDef","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","invalidState","metadataName","animation","matchers","normalizeAnimationOptions","furthestTime","innerAst","timingAst","constructTimingAst","makeTimingAst","strValue","ast","dynamic","currentAnimateTimings","styleMetadata","isEmpty","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","metadataStyles","styleTuple","collectedEasing","styleData","tuple","collectedEntry","updateCollectedStyle","invalidParallelAnimation","firstStart","firstEnd","secondStart","secondEnd","validateStyleParams","invalidStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","hasAmpersand","optional","originalSelector","invalidStagger","currentTransition","unsupportedCSSPropertiesFound","normalizeParams","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","_map","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","delayNextStep","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","_applyAnimationRefDelays","animationsRefsOptions","animationRefOptions","animationDelay","animationDelayValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","hasCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","tl","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","fork","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_localTimelineStyles","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","allStyles","allProperties","getFinalKeyframe","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","decimalPoints","mult","AnimationStyleNormalizer","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","valAndSuffixMatch","invalidCssUnitValue","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","oneOrMoreTransitionsMatch","matchFns","buildStyles","stateName","styler","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","applyParamDefaults","queriedElementsList","userParams","AnimationStateStyles","defaultParams","combinedParams","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","stateMap","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","registerFailed","_buildPlayer","autoStylesMap","missingOrDestroyedAnimation","createAnimationFailed","_getPlayer","missingPlayer","baseEvent","play","finish","setPosition","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","_triggers","_elementListeners","_hostClassName","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","triggersWithStates","statesByElement","afterFlush","_getTrigger","trigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","k1","k2","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","deregister","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","fetchNamespacesByElement","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","markedForDestroy","TransitionAnimationEngine","onRemovalComplete","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","ancestor","ancestorNs","registerTrigger","_fetchNamespace","stateValue","isElementNode","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","parentPlayer","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","beforeDestroy","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","flattenGroupPlayers","finalPlayers","_flattenGroupPlayersRecur","wrappedPlayer","deleteOrUnsetInMap","currentValues","_containsRealPlayer","_queuedCallbacks","triggerCallback","_queueEvent","hasStarted","getPosition","cloakElement","valuesMap","elementPropsMap","cloakVals","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","triggerBuildFailed","buildTrigger","onInsert","disableAnimations","eventPhase","SpecialCasedStyles","initialStylesByElement","_startStyles","_endStyles","initialStyles","_initialStyles","filterNonAnimatableStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_initialized","_finished","_started","_originalOnDoneFns","_originalOnStartFns","currentSnapshot","_duration","_delay","_onFinish","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","onFinish","_resetDomPlayerState","_convertKeyframesToObject","kfs","fromEntries","WebAnimationsDriver","validateAnimatableStyleProperty","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","normalizeKeyframes","balancePreviousStylesIntoKeyframes","startingKeyframe","missingStyleProps","specialStyles","packageNonAnimatableStyles","startStyles","endStyles","BrowserAnimationBuilder","AnimationBuilder","rootRenderer","_nextAnimationId","createRenderer","ViewEncapsulation","issueAnimationCommand","BrowserAnimationFactory","AnimationFactory","RendererAnimationPlayer","_command","_listen","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","delegate","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","BaseAnimationRenderer","onRendererDestroy","animationTriggers","AnimationRenderer","begin","_scheduleCountTask","queueMicrotask","scheduleListenerCallback","_onDestroy","destroyNode","createComment","createText","newChild","refChild","isMove","oldChild","isHostElement","selectRootElement","selectorOrNode","preserveContent","removeStyle","resolveElementFromTarget","parseTriggerCallbackName","dotIndex","InjectableAnimationEngine","ɵAnimationEngine","SHARED_ANIMATION_PROVIDERS","ɵAnimationStyleNormalizer","instantiateDefaultStyleNormalizer","ɵWebAnimationsStyleNormalizer","RendererFactory2","instantiateRendererFactory","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","ANIMATION_MODULE_TYPE","useValue","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","withConfig","ngModule","BrowserModule","TrackApiModule","parentModule","IheService","GetPatientIheVisitsPath","getPatientIheVisits$Response","getPatientIheVisits","GetIhAwvSchedulePath","getIhAwvSchedule$Response","getIhAwvSchedule","GetIhAwvBillingPath","getIhAwvBilling$Response","getIhAwvBilling","InHomeAwvApiModule","Access2ApiModule","AuditLogService","GetAllAuditLogsPath","getAllAuditLogs$Response","getAllAuditLogs","GetAuditLogsForProgramPath","getAuditLogsForProgram$Response","getAuditLogsForProgram","GetAuditLogsForPatientPath","getAuditLogsForPatient$Response","censeoId","getAuditLogsForPatient","CareOrchApiModule","CareOrchApiInterceptor","isACareOrchRequest","extendCareOrchRequest","CARE_ORCH_API_INTERCEPTOR_PROVIDER","forwardRef","UserDetailApiModule","auditTrackUrl","markedOptionsFactory","MarkedRenderer","heading","gfm","breaks","pedantic","smartLists","smartypants","AppModule","bootstrap","HashLocationStrategy","HttpClientModule","AuthModule","loader","markedOptions","MarkedOptions","ToastrModule","UserIdleModule","idle","ping","LicenseManager","setLicenseKey","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","BaseObject","_disposed","_disposers","_uid","getUniqueId","setKey","Dictionary","_delayedMap","addDelayedMap","delayedMap","hasKey","processDelayedMap","removeKey","applyTheme","themes","getCurrentThemes","_themes","isDisposed","clearCache","clonedFrom","clones","addDisposer","removeDispose","cloneId","newObject","copyFrom","_clones","List","_className","setCache","ttl","getCache","disposer","Disposer","processConfig","raiseCriticalError","$object","configKey","item_1","hasProperty","forceCreate","asIs","createClassInstance","Adapter","processAdapters","EventDispatcher","processEvents","parent_1","asFunction","registeredClasses","OrderedListTemplate","SortedListTemplate","processListTemplate","processOrderedTemplate","templateValue","entryKey","entryValue","listItem","DictionaryTemplate","processDictionaryTemplate","processList","maybeColorOrPercent","processDictionary","isReserved","configOrder","processingErrors","_processingErrors","getConfigEntryType","hasIndex","setIndex","itemCount","extraCount","createEntryInstance","BaseObjectEvents","_eventDispatcher","eventType","dispatchImmediately","Component","_dataSources","_parseDataFrom","_dataDisposers","_currentDataSetId","_start","_end","skipRangeEvent","rangeChangeDuration","rangeChangeEasing","$ease","parsingStepDuration","dataInvalid","rawDataInvalid","dataRangeInvalid","dataItemsInvalid","interpolationDuration","interpolationEasing","sequencedInterpolationDelay","dataValidationProgress","_addAllDataItems","_usesData","minZoomCount","maxZoomCount","createDataItem","handleDataItemAdded","handleDataItemRemoved","ListDisposer","invalidateData","dataUsers","handleDataUserAdded","MultiDisposer","maxZoomDeclination","DataItem","dataProvider","handleDataItemValueChange","invalidateDataItems","handleDataItemWorkingValueChange","handleDataItemWorkingLocationChange","handleDataItemCalculatedValueChange","handleDataItemPropertyChange","processDataItem","hasSomeValues_1","_adapterO","hasChildren","mainDataSet","rawDataItem","childDataItem","propertyFields","updateDataItem","dataContext_1","validateDataElements","validateDataElement","validate","addData","removeCount","skipRaw","removeData","dataUser","dataItem_1","isTemplate","addToInvalidComponents","system","requestFrame","$iter","invalidateDataUsers","invalidate","invalidDataItems","invalidateDataRange","invalidDataRange","validateDataRange","_prevStartIndex","_prevEndIndex","rangeChangeUpdate","appendDataItems","sliceData","_workingStartIndex","_workingEndIndex","__disabled","invalidateRawData","invalidRawDatas","validateRawData","disposeData","_startIndex","_endIndex","_dataSets","getDataItem","validateData","removeFromInvalidComponents","preloader","this_1","dataUserDataItem","state_1","hidden","appeared","_internalDefaultsApplied","applyInternalDefaults","validateDataItems","getDataSource","DataSource","setDataSourceEvents","adapter","dataSourceDateFields","dataSourceNumberFields","loadData","populateDataSourceFields","targetList","ev","incremental","keepCount","updateCurrentData","_responsive","Responsive","zoom","instantly","declination","maxZoomFactor","_finalStart","_finalEnd","minZoomFactor","rangeChangeAnimation","isFinished","zoomToIndexes","$math","setPropertyValue","indexToPosition","removeFromInvalids","dataSets","setDataSet","_updateDataItemIndexes","_index","bindDataField","invalidateProcessedData","resetProcessedRange","_dataUsers","reinit","_inited","deepInvalidate","getExporting","_export","_exportData","handleDataUpdated","setDisabled","changed","setShowOnInit","_showOnInitDisposer2","hideInitially","setBaseId","_baseId","_systemCheckIfValidate","Container","_childrenByLayout","_childrenDisposers","hasFocused","setStateOnSprites","layoutInvalid","_absoluteWidth","_absoluteHeight","_shouldBeReady","_tapToActivate","tapTimeout","paper","addGroup","_positionPrecision","DictionaryDisposer","handleChildAdded","handleChildRemoved","processChild","insertKey","handleChildTransform","sortAndAdd","sortChildren","addChildren","removeElement","invalidateLayout","addToInvalidLayouts","_children","fixed_1","relative_1","percentWidth","percentHeight","calculateRelativeSize","totalRelativeWidth","totalRelativeHeight","relativeWidth","relativeHeight","zindexed","sortArray","zIndex","group_1","isCorrect","childNodes","_background","addToBack","createChild","classType","removeChildren","disposeChildren","createBackground","processBackground","handleGlobalScale","Rectangle","InterfaceColorSet","getFor","validateLayout","removeFromInvalidLayouts","_availableWidth","_availableHeight","measuredWidth","measuredHeight","allValid","pixelMarginRight","pixelMarginLeft","pixelMarginTop","pixelMarginBottom","childMeasuredWidth","childMeasuredHeight","valign","arrange","maxCellWidth","minCellWidth","columnCount","contentLeft","contentRight","contentTop","contentBottom","paddingLeft","pixelPaddingLeft","paddingRight","pixelPaddingRight","paddingTop","pixelPaddingTop","paddingBottom","pixelPaddingBottom","nextX","nextY","minHeight","childrenCopy","reverseOrder","fixedWidthGrid","maxColumns","getColumnWidth","validatePosition","childMarginLeft","childMarginRight","childMarginTop","childMarginBottom","childWidth","childHeight","childLeft","childRight","childTop","childBottom","maxLeft","maxRight","pixelX","maxTop","maxBottom","pixelY","nextColumnWidth","noneBBox","bbox","_pixelWidth","_pixelHeight","measuredContentWidth","measuredContentHeight","contentAlign","contentValign","dx_1","dy_1","mwa","mha","ddx","ddy","oldBBox","contentWidth","contentHeight","_bbox","prevLeft","prevTop","prevBotttom","prevRight","event_1","dummyData","updateCenter","updateBackground","fitsToBounds","deviation","pixelWidth","pixelHeight","setStateOnChildren","shouldClone","_preloader","tooltipContainer","setPaper","topParent","setDataItem","_dataItem","measureElement","setSVGAttribute","invalidateLabels","hardInvalidate","handleValidate","setState","transitionDuration","SpriteState","dispatchReady","allReady_1","_systemUpdate","skippedSprites","_systemValidatePositions","positionInvalid","_systemValidateLayouts","setTapToActivate","isTouchProtected","setEventDisposer","handleTapToActivate","initTapTimeout","getInteraction","isLocalElement","pointer","handleTapToActivateDeactivation","_tapToActivateTimeout","tapToActivate","moveHtmlContainer","htmlElement","newContainer","$dom","htmlContainer","svgDiv","svgContainer","SVGContainer","initSensor","hasLicense","commercialLicense","licenses","Sprite","_disabled","hasProperties","categories","locations","workingLocations","sprites","_visible","_hidden","_ignoreMinMax","isHiding","_valueAnimations","_locationAnimations","AnimationDisposer","setVisibility","noChangeValues","hiddenState","animation_1","_hideDisposer","setWorkingValue","toValue","animation_2","anim","calculated","getWorkingValue","realName","workingValue","getActualWorkingValue","newDuration","setCalculatedValue","childObject","handleInterpolationProgress","valueAnimation","setLocation","setWorkingLocation","workingLocation","locationAnimation","setCategory","Animation","hasValue","depth","_dataContext","addSprite","verbose","classNamePrefix","autoSetClassName","minPolylineStep","onlyShowOnViewport","autoDispose","suppressErrors","suppressWarnings","animationsEnabled","nonce","deferredDelay","disableHoverOnTransform","pixelPerfectPrecision","Registry","loadedThemes","_uidCount","_placeholders","invalidSprites","invalidDatas","invalidPositions","invalidLayouts","baseSprites","baseSpritesByUid","noBase","clientWidth","clientHeight","getPlaceholder","$string","baseId","addToInvalidSprites","removeFromInvalidSprites","addToInvalidPositions","removeFromInvalidPositions","is","visualProperties","SpriteEventDispatcher","_bindings","_isTemplate","_isPath","_ready","_isHidden","isShowing","isStandaloneInstance","_isActive","_mask","MutableValueDisposer","_language","_exporting","_exportable","applyOnClones","_measuredWidthSelf","_measuredHeightSelf","maxLeftSelf","maxRightSelf","maxTopSelf","maxBottomSelf","_isDragged","_isResized","_internalDisabled","_updateDisabled","rollOutDelay","isBaseSprite","ey","dragWhileResize","measureFailed","preventShow","cloneTooltip","_prevMeasuredWidth","_prevMeasuredHeight","_measuredWidth","_measuredHeight","_isMeasured","setClassName","beforeDraw","draw","afterDraw","invalidatePosition","removeSVGAttribute","sizeChanged","prevGroupTransform","transformString","nonScaling","globalScale","showTooltipOn","updateTooltipPosition","maskRectangle","_maskRectangle","_clipElement","horizontalCenter","verticalCenter","__values","e_1_1","applyFilters","interactionsEnabled","showOnInit","applyMask","nonScalingStroke","updateFilterScale","_interaction","_plugins","configField","virtualParent","exportable","_tooltip","_showSystemTooltip","showSystemTooltip","fillModifier","strokeModifier","focusFilter","_svgContainer","_interactionDisposer","_urlDisposer","_numberFormatter","_focusFilter","_filters","_alwaysShowDisposers","applyAccessibility","_topParent","oldParent","_tooltipContainer","handleAlwaysShowTooltip","handleAlwaysShow","oldDisposers","oldDisposer","_virtualParent","appendDefs","filterElement","appendDef","fill_1","stroke_1","_clipPath","_paper","parent_2","getGhostPaper","_htmlContainer","parent_3","_titleElement","_descriptionElement","onAll","setSVGAttributes","shapeRendering","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","focusable","tabindex","attribute","removeAttr","userClassName","uidAttr","updateClipPath","createClipPath","width_1","height_1","removeChildNodes","filterUnits","appendPrimitives","removeClipPath","setElement","SVGPathElement","definedBBox","svgBBox","getBBox","prevElementTransform","elementX","elementY","elementWidth","elementHeigth","top_1","pixelPerfect","positionPrecision","createSVGMatrix","createSVGPoint","p3","p4","pt1","matrixTransform","pt2","pt3","pt4","isHover","tooltipHTML","moveValue","insertAfter","getRelativeX","getRelativeY","getPixelX","pixel","getPixelY","isDragged","rect","hitTest","ax1","ay1","bx1","by1","_states","processState","hoverable","clickable","getSvgPoint","transitionEasing","transitTo","applyCurrentState","isDown","downPointers","isFocused","allValues","finalValue","newFilters_1","stateFilter","currentFilter","pushAll","isInTransition","isInteractive","handleOver","isRealHover","handleOut","handleDown","handleUp","handleFocus","handleBlur","hasChild","NumberFormatter","_dateFormatter","DateFormatter","_durationFormatter","durationFormatter","DurationFormatter","Language","exporting","populateString","getTextFormatter","getTagValue","reg","reg2","matches2","getTagValueFromObject","populateStringFrom","formatApplied","numberValue","durationValue","formatParts","formatterType","$strings","dataContext_2","dataContext2_1","propValue","globalAdapter","applyAll","setColorProperty","setPercentProperty","length_2","bindToProperty","modifier","readerTitle","readerDescription","readerHidden","readerChecked","readerControls","live","readerLive","readerOrientation","valueNow","readerValueNow","valueText","readerValueText","labelledByIds","describedByIds","labelledBy","readerLabelledBy","describedBy","readerDescribedBy","titleElement","titleId","descriptionElement","descriptionId","keyboardOptions","mouseOptions","interaction","trackable","draggable","swipeable","wheelable","contextMenuDisabled","inert","_tabindex","focusedElement","hoverOnFocus","inertiaOptions","applyCursorStyle","handleDragStart","handleDragMove","handleDragStop","touch","originalPosition","dragStart","dragStop","cancelled","cssScale","hoverOptions","_outTimeout","targetSprite","keepTargetHover","handleOutReal","hitOptions","originalAngle","originalScale","handleToggle","urlHandler","cursorOverStyle","MouseCursorStyle","baseSprite","urlTarget","swipeOptions","handleResize","svgPoint1","point1","svgPoint2","point2","svgMidPoint","parentPoint1","startPoint1","parentPoint2","startPoint2","spriteMidPoint","parentPoint","cursorOptions","overStyle","applyCursorOverStyle","downStyle","Export","nonExportableSprites","modalPrefix","modal","popups","openPopup","closeAllPopups","minX","maxX","minY","maxY","parentWidth","setMaxWidth","prevWidth","prevHeight","previousWidth","previousHeight","parentHeight","setMaxHeight","_relativeHeight","_relativeWidth","marginTop","marginBottom","setPath","setFill","toColor","realFill","Pattern","LinearGradient","RadialGradient","setStroke","realStroke","_rtl","rtl","showReal","_hideAnimation","_showHideDisposer","hideReal","currentSprite","hiddenState_1","getVisibility","visibility","toFront","toBack","_tooltipDataItem","_tooltipColorSource","tooltipPosition","lastPointer","tooltipDataItem","colorSource_1","tooltipColorSource_1","tooltipColorSource","getStrokeFromObject","animationDuration","autoTextColor","alternative","currentText","globalPoint","getTooltipX","getTooltipY","pointTooltipTo","showInViewport","pointTo","closable","getCursorStyle","cursorDowntyle","grab","grabbing","horizontalResize","verticalResize","default","_showOnInitDisposer","_interactionEvents","_dispatchSpriteEvent","imev","_dispatchSpritePointEvent","spritePoint","svgPoint","_addInteractionObjectEvent","insertKeyIfEmpty","CounterDisposer","increment","_on","disposers","togglable","TargetedEventDispatcher","spriteValue","System","_isPaused","dummyCounter","_frameRequested","updateStepDuration","reportTime","invalidData","validateLayouts","validatePositions","hasSkipped","checkIfValidate2","triggerIdle","all0_1","raf","softInvalidate","$log","separators","CSVParser","skipRows","skipEmpty","useColumnNames","isCSV","getDelimiterFromData","sep","lineColums","CSVToArray","emptyAs","numbers","parsableNumbers","parsableDates","maybeToEmpty","maybeToNumber","maybeToDate","objPattern","arrData","arrMatches","strMatchedDelimiter","strMatchedValue","DataParser","dataLoader","DataLoader","$net","requestOptions","processData","getParserByType","parser","JSONParser","getParserByData","isJSON","numberFields","dateFields","_requestOptions","_incremental","_incrementalParams","_keepCount","_updateCurrentData","showPreloader","event_2","lastLoad","disableCache","timestampUrl","addUrlParams","incrementalParams","_parser","_reloadFrequency","_reloadDisposer","_reloadTimeout","reloadFrequency","tstamp","SVGDefaults","Cone","topRadius","Ellipse","bodyFillModifier","LinearGradientModifier","lightnesses","radiusBase","radiusY","$path","Rectangle3D","sideBack","sideBottom","sideLeft","sideRight","sideTop","sideFront","ah","bh","ch","dh","colorStr","LightenFilter","lightness","filter2","filter3","filter4","filter5","lighten","Slice3D","edge","sideA","sideB","edgeFill","innerCornerRadius","pixelInnerRadius","innerRadiusY","b0","c0","edgePath","mangle","prevPoint","Slice","Button","iconPosition","Label","hoverState","downState","_icon","currentIcon","_label","pixelRadius","rx","ry","isOversized","truncate","fullWords","ellipsis","textValign","baseLineRatio","handleMaxSize","availableWidth","availableHeight","updateCurrentText","supportsForeignObject","_currentFormat","_prevStatus","getLineBBox","lineInfo","oldW","oldH","getAttr","textPathElement","resetBBox","currentHeight","currentFormat","chunk","ignoreFormatting","currentLineHeight","firstChunk","skipTextChunks","getLineInfo","getSVGLineElement","complex","translateStyleShortcuts","getSvgElement","lineText","avgCharWidth","excessChars","addEllipsis","node_1","node_2","elementText","maxChars","lastNode","lastChild","splitLines","lineText_1","restOfLine","addLineInfo","tempElement","lineInfo_1","maybeHideOversized","alignSVGText","hideUnused","foreignObject","lineElement","getHTMLLineElement","overflow","pathElement","hideOversized","div","wordWrap","whiteSpace","addStyle","webkitUserSelect","msUserSelect","initLineCache","attrNS","startOffset","removeChildrenByTag","divs","getElementsByTagName","_sourceDataItemEvents","classid","btoa","defs","defaultRules","relevant","ResponsiveBreakpoints","heightXS","stateId","Line","positionToPoint","Modal","showCurtain","Popup","PointedRectangle","cr","stemX","stemY","pointerX","pointerY","bwh","pointerBaseWidth","maxcr","crtl","crtr","crbr","crbl","lineT","lineR","lineB","lineL","PointedShape","pointerLength","Polyline","_distance","makePath","_realSegments","deltaAngle","totalDistance","distance","currentDistance","positionA","positionB","pointA","pointB","midPoint","Polyspline","tensionY","allPoints","realPoints","last","closed_1","controlPointA","controlPointB","stepCount","getClosestPointIndex","closest","f0","f1","point_1","rules","_elements","_IOs","_content","_title","_classPrefix","_defaultStyles","_showCurtain","_draggable","_align","_dynamicResize","_verticalAlign","_shift","_tempShift","_readerTitle","_closable","_cssLoaded","_fitTo","_sized","wrapper","curtain","positionElement","parentElement","releasePointers","forceResize","dynamicResize","images","image","toStyle","verticalAlign","setupDragging","unprepElement","createContentElement","getClassNames","wrapperClass","classPrefix","headerClass","titleClass","contentClass","insideClass","curtainClass","closeClass","disablePointers","defaultStyles","loadDefaultCSS","createCurtainElement","applyEvents","applyReaderSettings","_left","_right","_top","_bottom","PopupCSS","fg","bg","alpha","abg","StyleRule","popupCSS","getShadowRoot","keyboard","_spriteInteractionsEnabled","classPrefixRaw","ResizeButton","minSide","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomRight","cornerRadiusBottomLeft","tr","bl","br","Scrollbar","_previousStart","_previousEnd","_prevStart","_prevEnd","_isBusy","_skipRangeEvents","updateWhileMoving","animationEasing","startGrip","endGrip","updateThumb","thumb","dispatchRangeChange","hideGrips","updateSize","updateExtremes","handleBgHit","makeBusy","thumbX","_thumbAnimation","thumbY","makeUnbusy","_thumb","_unbusyTimeout","stopAnimations","_zoomAnimation","makeUnbusyReal","_usingGrip","dispatchEvents","fromValue","directionFlipped","flipped","fromName","toName","innerWidth_1","innerHeight_1","__start","__end","skipRangeEvents","fixRange","updateByOrientation","_startGrip","button","processGrip","_endGrip","handleGripDrag","cursorDownStyle","handleThumbPosition","handleDoubleClick","newStart","newEnd","zoomAnimation","innerWidth_2","innerHeight_2","_hideGrips","_overDisposer","_outDisposer","shiftRadius","updateGradient","gradientUnits","innerRect","outerRect","ix","iy","middleAngle","TextLink","brighten","Tooltip","_boundingRect","_pointTo","fitPointerToBounds","_verticalOrientation","fixDoc","dropShadow","DropShadowFilter","drawBackground","pointerOrientation","handleVisibility","textX","textY","boundingRect","textW","textH","ignoreBounds","documentWidth","textWidth","bgWidth","bgHeight","bgY","boundX1","boundX2","boundY1","boundY2","delayedPointTo","_pointToDisposer","_animation","setBounds","rectangle","oldRect","_boundingContainer","updateBounds","boundingContainer","Trapezoid","topSide","bottomSide","leftSide","rightSide","ts","ls","rs","mt","mr","mb","ml","horizontalNeck","hn","verticalNeck","vn","Triangle","WavedCircle","waveLength","waveHeight","tension","$smoothing","smooth","circleLength","halfWaveHeight","halfWaveLength","angle1","angle2","WavedLine","wavedLine","WavedRectangle","waveLengthH","waveHeightH","waveLengthV","waveHeightV","td","ld","wavedTop","wavedRight","wavedBottom","wavedLeft","setWavedSides","ZoomOutButton","pdfmakePromise","fontFamilySrcRegexp","blobToDataUri","FileReader","readAsDataURL","getCssRules","__generator","trys","cssRules","sent","loadStylesheet","e_2","eachStylesheet","topUrl","rule","CSSRule","IMPORT_RULE","eachStylesheets","doc_1","contentDocument","styleSheets","_formatOptions","_extraSprites","_validateSprites","dataFieldsOrder","_dynamicDataFields","_removedObjects","_hiddenObjects","_objectsAlreadyHidden","_filePrefix","useWebFonts","useRetina","useSimplifiedExport","timeoutDelay","_exportRunning","_prevHasData","quality","imageFormat","addURL","addColumnNames","indent","useLocale","addBOM","printMethod","formatOptions","_menu","menu","branch","unsupported","typeSupported","_disablePointers","_releasePointers","getFormatOptions","_hasData","_getFunction","getImage","getSVG","getPDF","getExcel","getCSV","getHTML","getPrint","handleCustom","hideTimeout","_timeoutTimeout","showTimeout","hideNonExportableSprites","restoreNonExportableSprites","hidePreloader","filePrefix","callbackTarget","getFontFamilies","DOMURL","blobs","getDOMURL","FONT_FACE_RULE","cssText_1","cssText","urls","fullUrl","e_3","webFontFilter","supportsBlobUri","msSaveOrOpenBlob","includeExtras","prehidden","canvas","newCanvas","e_4","awaitValidSprites","simplifiedImageExport","getCanvas","addExtras","disposeCanvas","toDataURL","getContentType","getImageAdvanced","advanced","middleLeft_1","middleTop_1","middleWidth_1","middleHeight_1","extraRight_1","extraBottom_1","extras","ctx_1","left_1","right_1","bottom_1","extraSprites","extraSprite","extraCanvas","extraWidth","extraHeight","getCanvasAdvanced","crop","getDisposableCanvas","findBackgroundColor","fillStyle","fillRect","drawImage","pixelRatio","img","getPixelRatio","getAdjustedScale","fonts","imagesToDataURI","prepForeignObjects","normalizeSVG","serializeElement","loadNewImage","revokeObjectURL","restoreRemovedObjects","canvg","useCORS","ignoreDimensions","scaleWidth","scaleHeight","fromString","render","widthScale","heightScale","adjWidth","adjHeight","XLINK","svgToDataURI","imageToDataURI","objects","temporarilyRemoveObject","keepTainted","e_5","charset","e_6","placeholder","e_7","e_8","crossOrigin","currentHref","Image","webkitURL","dimParams","styleParams","fos","$browser","XMLSerializer","serializeToString","addFont","normal","bytes","italics","bolditalics","pdfmake","defaultMargins","extraMargin","pageOrientation","pageMargins","fit","getPageSizeFit","getPDFData","extraFonts","createPdf","getDataUrl","dataFieldsOrder_1","dataRow","convertToSpecialFormat","getPDFDataRow","headerRows","convertEmptyValue","newMargins","fitSize","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","XLSX","wbOptions","sheetName","wb","dataFieldsOrder_2","bookType","bookSST","normalizeExcelSheetName","SheetNames","Sheets","getExcelRow","utils","aoa_to_sheet","dataFieldsOrder_3","getCSVRow","forceQuotes","dataFieldsOrder_4","tableClass","getHTMLRow","rowClass","useTag","sourceData","keepOriginal","isDateField","isDurationField","durationFormat","isNumberField","useTimestamps","blob_1","link_1","decoded","blob_2","url_2","charCode","url_3","idoc","msBlobDownloadSupport","msSaveBlob","atob","blobDownloadSupport","linkDownloadSupport","legacyIE","downloadSupport","printViaCSS","printViaIframe","scroll","originalTitle","scrollTop","clipPath","MSStream","currentColor","_sprite","validateSprites","_dataFields","generateDataFields","_dateFormat","_dateFields","_numberFormat","_numberFields","_durationFormat","_durationFields","durationFields","_backgroundColor","hideModal","_modal","_canvg","_pdfmake","vfs_fonts","_xlsx","setFormatOptions","ExportMenu","Validatable","closeDelay","closeOnClick","_menuTag","_itemTag","_labelTag","_iconTag","_ignoreNextClose","_items","getMenuItemClass","createMenuElement","drawBranch","menuElement","getEventKey","_currentSelection","moveSelection","ascendants","createItemElement","createIconElement","createSvgElement","createLabelElement","readerLabel","getReaderLabel","typeClickable","submenu_1","getSubMenu","selectBranch","setFocus","delayUnselectBranch","local_level","submenu","submenuElement","hideBranch","menuTag","itemTag","labelTag","iconTag","DOMParser","parseFromString","hasSubMenu","ExportCSS","newPrefix","colorSet","exportCSS","setBlur","getElementsByClassName","closeTimeout","ascendant","unselectBranch","simple","newSelection","getPrevSibling","getNextSibling","getParentItem","getSiblings","siblings","blur","showBranch","_inputDateFormat","_utc","timezoneMinutes","_firstDayOfWeek","monthsShort","weekdays","weekdaysShort","_outputFormat","applyTimezone","formatted","intlLocales","parseFormat","$time","applyFormat","cached","fullYear","weekday","translateFunc","firstDayOfWeek","tz","tzh","tzm","parsedIndexes","year3","year2","year1","monthShort","monthLong","weekdayShort","weekdayLong","yearDay","hourBase0","hour12Base0","hourBase1","hour12Base1","millisecondDigits","resValues","indexAdjust","getStringList","resolveMonth","resolveShortMonth","isAm","resolveTimezoneOffset","isDefault","translateAll","invalidateSprite","_intlLocales","_timezoneOffset","_timezone","_negativeBase","_baseUnit","_unitValues","_unitAliases","baseUnit","getFormat","positive","negative","absolute","dirs","partFormat","toTimeStamp","toTimeUnit","digits","ints","outputFormat","maxUnit","getValueUnit","durationFormats","currentUnit","_durationFormats","_smallNumberThreshold","_forceLTR","decimals","forceLTR","passive","translateEmpty","mods","modSpacing","a_1","applyPrefix","bytePrefixes","a_2","smallNumberThreshold","smallNumberPrefixes","bigNumberPrefixes","ol","intsr","decs","newvalue","_bigNumberPrefixes","_smallNumberPrefixes","_bytePrefixes","TextFormatter","texts","wrapHtml","wrapSvg","AMElement","styleSvgToHtml","getHtmlElement","quotedBlocks","noFormatting","chunks2","chunk2","isImage","Inertia","startPoint","handleMove","inertias","processDragStop","Interaction","_globalEventsAdded","_pointerEvents","pointerdown","pointerup","pointermove","pointercancel","pointerover","pointerout","wheel","_usePointerEventsOnly","_useTouchEventsOnly","_addHoverEvents","_passiveSupported","_delayedEvents","overObjects","downObjects","trackedObjects","transformedObjects","pointers","doubleHitTime","hitTolerance","noFocus","touchOutBehavior","touchOutDelay","verticalThreshold","horizontalThreshold","speed","accelleration","accellerationDelay","matchMedia","fullFF","onmousewheel","passiveSupported","addGlobalEvents","handleGlobalPointerDown","handleGlobalPointerMove","handleGlobalPointerUp","relatedTarget","buttons","handleDocumentLeave","handleGlobalTouchStart","handleGlobalTouchMove","handleGlobalTouchEnd","handleGlobalKeyDown","handleGlobalKeyUp","processClickable","io","processTouchable","processContextMenu","eventDisposers","processHoverable","handlePointerOut","handlePointerOver","processMovable","isGlobalElement","prepElement","processTrackable","processDraggable","processSwipeable","processResizable","processWheelable","handleMouseWheel","unlockWheel","lockWheel","processFocusable","handleFocusBlur","handleTouchDown","handlePointerDown","isPaused","getHitOption","disableType","enableType","focusedObject","disposerKey","ko","InteractionKeyboardObject","directionY","directionX","getPointer","getPointerPoint","addBreadCrumb","handleGlobalMove","processDelayed","preventTouchAction","defaultPrevented","handleGlobalUp","changedTouches","resetPointer","deltaX","deltaY","deltaMode","getMouseOption","WheelEvent","wheelDeltaX","wheelDeltaY","handleWheel","maybePreventDefault","handleHit","lastHit","lastHitPointer","soft","hoversPaused","shouldCancelHovers","areTransformed","moved","cancelAllHovers","overPointers","handleTrack","hasDelayedOut","getHoverOption","keepUntil","delayedEvent","stopInertia","applyCursorDownStyle","processDragStart","processResizeStart","pos","Node","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","backwards","restoreCursorDownStyle","swiped","handleSwipe","handleInertia","processResizeStop","lastEvent","swiping","handleTransform","skipCheck","handleMoveInertia","handleResizeInertia","inertia","getTrailPoint","getInertiaOption","lastUpEvent","pointer2","pointer1","singlePoint","nextPointer","pointer1Moved","dragStartEvents","handleTransformMove","pointer2Moved","handleTransformResize","ctrlKey","pointerMoved","dragTarget","getDragPointer","lastDownEvent","getPointerId","pointerId","clientX","clientY","isPointerTouch","swipeCanceled","Touch","PointerEvent","pointerType","MouseEvent","lockDocument","unlockDocument","restoreAllStyles","lockElement","unlockElement","wheelLockEvent","elementFromPoint","setTemporaryStyle","restoreStyle","getSwipeOption","getKeyboardOption","setGlobalStyle","restoreGlobalStyle","tolerance","minTime","getShift","pointerExists","InteractionObject","replacedStyles","logTouch","TouchEvent","except","options_1","keyboardEvent","_startedOn","shiftKey","accelleratedMs","accellerationFactor","InteractionObjectEventDispatcher","_clickable","_contextMenuDisabled","_hoverable","_trackable","_swipeable","_resizable","_wheelable","_inert","_isHover","_isHoverByTouch","_isDown","_isFocused","_isTouchProtected","_inertiaOptions","_hitOptions","_hoverOptions","_swipeOptions","_keyboardOptions","_mouseOptions","_cursorOptions","isHoverByTouch","_overPointers","_downPointers","_focusable","_originalPosition","_originalScale","_originalAngle","_domEvents","_addDOMEvent","callback_1","_dispatchKeyboardEvent","notAllowed","_isDisposed","_rotationY","_rotationX","_rotation","_scale","_transformString","transfromString","rotateString","svgbbox","attributeName","attributeValue","getAttrNS","getStyle","setClass","Group","elementName","childNode","Paper","groupName","implementation","ghostPaper","ghostDiv","ghostSvgContainer","polyline","minStep","quadraticCurveTo","controlPoint","cubicCurveTo","arcTo","pax","pay","crSin","cornerRadiusY","innerCornerRadiusY","crAngle","crAngleY","crInnerAngle","crInnerAngleY","mPoint","b1","arcToPoint","sweepFlag","largeArcFlag","xAxisRotation","rectToPath","ccw","Native","_targets","ResizeObserver","addTarget","box","removeTarget","unobserve","Raf","lastTime_1","loop_1","newSize","_timer","cancelAnimationFrame","ResizeSensor","_sensor","makeSensor","svgContainers","ghost","autoResize","_printing","resizeSensor","checkTransform","_popups","popupTemplate","popup","_readerAlertElement","readerAlert","readerAlertElement","HTMLElement","Tension","_tensionX","_tensionY","adjustWaveLength","waveLengthX","waveLengthY","halfWaveCount","sign_1","Monotone","reversed","_reversed","_closed","_curve","slope2","slope3","h0","h1","s0","MonotoneX","MonotoneY","ColorModifier","GradientModifier","brightnesses","opacities","_lightnesses","_brightnesses","_opacities","_offsets","brightness","addColor","_stops","gradientElement","gradientStop","patternUnits","backgroundFill","backgroundOpacity","patternElement","rotationX","rotationY","addElement","strokeDashArray","typeProperty","fx","fy","_cx","_cy","_fx","_fy","DesaturateFilter","feColorMatrix","filterPrimitives","saturation","Filter","feGaussianBlur","in","feOffset","feFlood","feComposite","in2","feMerge","stdDeviation","updateScale","_nonScaling","filterPrimitive","setSprite","GlobalAdapter","_callbackId","SortedList","$order","$number","addAll","enableKey","disableKey","_hasListenersByType","_shouldDispatch","getProgressNumber","getProgressPercent","getProgressColor","$colors","getHybridProperty","_disposer","_loop","_pause","_delayTimeout","_isFinished","id_1","stopSameAnimations","_startTime","staticOptions","updateMethod","convertedFrom","applyStaticOptions","loop","setProgress","skipEvent","timeProgress","delayed","killed_1","oldOptions","eachReverse","eachContinue","shiftLeft","move","toIndex","removeIndex","insertIndex","ind","toArray","getSortedIndex","ordering","keepIf","keep","pendingFrame","nextQueue","readQueue","writeQueue","idleQueue","frameLoop","pendFrame","readFrame","writeFrame","whenIdle","isSafari","vendor","isInternetExplorer","_storage","ownerStorage","cacheItem","expired","_lightColor","_darkColor","saturate","darkColor","lightColor","cacheId","isColor","castColor","ColorSet","_list","_currentStep","_currentPass","baseColor","stepOptions","passOptions","minColors","minLightness","maxLightness","shuffle","reuse","generate","getReusableColor","tmpstep","hueStep","hue","hues","applyStepOptions","namedColors","hexToRgb","hexToRgbWithAlpha","rgbaToRgb","rgbToHex","pad2","rgbToRGBA","rgb1","rgb2","getLightnessStep","rgbToHsl","hslToRgb","hue2rgb","isLight","rootStylesheet","SVGNS","XMLNS","getElement","currentClassName","currentStyle","activeElement","eventTarget","composedPath","fixPixelPerfect","getStylesheet","_rule","deleteRule","appendStylesheet","insertRule","selectorText","_setVendorPrefixName","styleId","listener_1","findFont","findFontSize","isElementInViewport","viewportTarget","viewportRect","StyleClass","dict","_dictionary","updateKey","ifEmpty","__read","sortedIterator","_template","_dispose","_counter","polyIn","polyOut","polyInOut","polyOut3","sinOut","cubicIn","cubicOut","quadIn","quadOut","quadInOut","polyIn3","polyInOut3","expIn","expOut","expInOut","sinIn","sinInOut","circleIn","circleOut","circleInOut","bounceOut","bounceIn","bounceInOut","elasticIn","elasticOut","elasticInOut","_killed","_iterating","hasListeners","hasListenersByType","killed","_removeListener","_removeExistingListener","_eachListener","$async","_purposes","primaryButton","primaryButtonHover","primaryButtonDown","primaryButtonActive","primaryButtonText","primaryButtonStroke","secondaryButton","secondaryButtonHover","secondaryButtonDown","secondaryButtonActive","secondaryButtonText","secondaryButtonStroke","alternativeBackground","alternativeText","disabledBackground","purpose","setFor","fromArray","sum","go","push2","indexed","ListIterator","createNewItems","_create","_listCopy","getFirst","returnItem","getLast","Keyboard","keyCode","eventKey","metaKey","en","_decimalSeparator","_thousandSeparator","_percentPrefix","_percentSuffix","_big_number_suffix_3","_big_number_suffix_6","_big_number_suffix_9","_big_number_suffix_12","_big_number_suffix_15","_big_number_suffix_18","_big_number_suffix_21","_big_number_suffix_24","_small_number_suffix_3","_small_number_suffix_6","_small_number_suffix_9","_small_number_suffix_12","_small_number_suffix_15","_small_number_suffix_18","_small_number_suffix_21","_small_number_suffix_24","_byte_suffix_B","_byte_suffix_KB","_byte_suffix_MB","_byte_suffix_GB","_byte_suffix_TB","_byte_suffix_PB","_date_millisecond","_date_second","_date_minute","_date_hour","_date_day","_date_week","_date_month","_date_year","_duration_millisecond","_duration_millisecond_second","_duration_millisecond_minute","_duration_millisecond_hour","_duration_millisecond_day","_duration_millisecond_week","_duration_millisecond_month","_duration_millisecond_year","_duration_second","_duration_second_minute","_duration_second_hour","_duration_second_day","_duration_second_week","_duration_second_month","_duration_second_year","_duration_minute","_duration_minute_hour","_duration_minute_day","_duration_minute_week","_duration_minute_month","_duration_minute_year","_duration_hour","_duration_hour_day","_duration_hour_week","_duration_hour_month","_duration_hour_year","_duration_day","_duration_day_week","_duration_day_month","_duration_day_year","_duration_week","_duration_week_month","_duration_week_year","_duration_month","_duration_month_year","_duration_year","_era_ad","_era_bc","AM","PM","January","February","March","April","May","June","July","August","September","October","November","December","Jan","Feb","Mar","Apr","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sun","Mon","Tue","Wed","Thu","Fri","Sat","_dateOrd","Play","Stop","Home","Chart","Series","Print","PNG","JPG","GIF","SVG","PDF","CSV","Minimize","_locale","_defaultLocale","getLocale","prompt","translation","getTranslations","__spread","translateAny","setTranslationAny","translations","IndexedIterable","_array","ListGrouper","_getKey","_insert","_remove","_keys","_sort","index_1","disposeOnRemove","disposer_1","checkBounds","initial","_values","_sortQuicksort","low","high","_sortPartition","swap","value_a","value_b","newArray","oldArray","HALFPI","RADIANS","DEGREES","toNumberRange","fitToRange","rounded","referenceValue","curr","range1","range2","start1","start2","end1","end2","invertRange","intersection","startMax","endMin","getDistance","getHorizontalDistance","getVerticalDistance","getCubicCurveDistance","getPointOnCubicCurve","getScale","initialDistance","getMidPoint","getAngle","normalizeAngle","getCommonRectangle","rectangles","getPointOnQuadraticCurve","mt1","mt2","mt3","getCubicControlPointA","adjustTension","getCubicControlPointB","fitAngleToRange","getArcRect","bpoints","getArcPoint","fromAngle","toAngle","isInRectangle","isBlob","readBlob","readAsText","eachOrdered","ord","keysOrdered","object1","object2","copyProperties","forceCopyProperties","copyAllProperties","or","isPercent","_rules","_appliedRules","_appliedTargets","_useDefault","_responsiveDisposers","_noStates","checkRules","_component","disposeResponsiveHandlers","applyRules","useDefault","isApplied","ruleId","allRules","rulesChanged","_applyRules","defaultStateApplied","isApplied_1","getState","getDefaultState","setTargetState","tmpId","widthXXS","XXS","widthXS","XS","widthS","widthM","widthL","widthXL","XL","widthXXL","XXL","heightXXS","heightS","heightM","heightL","heightXL","heightXXL","isXXS","isXS","isS","isM","isL","isXL","isXXL","maybeXXS","maybeXS","maybeS","maybeM","maybeL","maybeXL","maybeXXL","OrderedList","findClosestIndex","closestValue","closestDifference","closestIndex","_ordering","choice","STRING","NUMBER","DATE","DURATION","PLACEHOLDER","PLACEHOLDER2","timeUnitDurations","getNextUnit","checkChange","dateOne","dateTwo","timeZoneOffset1","timeZoneOffset2","nextUnit","timeZoneOffset","setUTCMilliseconds","wday","newTimeZoneOffset","firstDateOfWeek","roundMinutes","setTimezone","unitCount","weekDay","getTimezoneMinutes","getType","castString","toBoolean","toNumber","converted","toText","toNumberOrPercent","getValueDefault","used","stripHash","getBaseURI","baseURI","relativeToValue","relativeRadiusToValue","subtractIfNegative","devicePixelRatio","escapeForRgex","splitTextByCharCount","fullWordFallback","currentIndex","words","wordLength","reverseString","truncateWithEllipsis","rtrim","ltrim","padString","char","hints","cleanFormat","stripTags","plainText","numberToString","zeros","anyToDate","anyToNumber","getYearDay","getWeek","firstDay","getMonthWeek","currentWeek","getDayFromWeek","get12Hours","getTimeZone","savings","wotz","wtz","timeZoneName","getWeekYear","fitNumber","fitNumberRelative","gap","svgPointToSprite","sprite_1","relativeX","relativeY","spritePointToSvg","spritePointToSprite","toSprite","spriteRectToSvg","documentPointToSvg","svgPointToDocument","documentPointToSprite","spritePointToDocument","paddingX","borderX","borderLeftWidth","borderRightWidth","paddingY","borderY","borderTopWidth","borderBottomWidth","decimalPlaces","urlRegexp","serializeUrl","isRelativeUrl","joinUrl","parsedLeft","parsedRight","leftPath","rightPath","MSInputMethodContext","documentMode","_validateDisposer","Grip","autoHideDelay","_autoHideTimeout","ChartDataItem","_legend","titles","chartAndLegendContainer","processTitle","updateReaderTitleReferences","fixLayout","feedLegend","titleIds_1","setLegend","_dragGrip","grip_1","Bullet","tooltipX","copyToLegendMarker","LegendDataItem","childrenCreated","label_1","itemContainer","_valueLabel","valueLabel_1","valueLabels","_itemContainer","component_1","itemContainer_1","itemContainers","toggleDataItem","focusedItem","visibilitychanged","_marker","marker_1","markers","LegendSettings","createMarker","marker","disabledColor","activeState","valueLabel","handleScrollbar","scrollable","updateMasks","_handleWheelReal","scrollbar","tempMaxWidth","legendSettings","createLegendMarker","useDefaultMarker","updateLegendValue","itemValueText","maxLabelWidth","maxValueLabelWidth","maxMarkerWidth","maxAdjustedLabelWidth","trueMaxWidth","_mouseWheelDisposer","colorOrig","SeriesDataItem","_bullets","_showBullets","_tmin","_tmax","_smin","_smax","dataItemsByAxis","skipFocusThreshold","_itemReaderTextChanged","calculatePercent","usePercentHack","simplifiedProcessing","processAxisRange","minBulletDistance","_chart","positionBullet","processBullet","itemsFocusable","removeBullet","eachBullet","processValues","getFirstValue","getAbsoluteFirstValue","working","count_1","sum_1","absoluteSum_1","low_1","high_1","open_1","close_1","first_1","absoluteFirst_1","startIndex_1","dataItem_2","prevValue","_loop_2","dataItem_3","ksum","zeroItem_1","dataItem_4","updateTooltipBounds","shouldCreateBullet","bulletTemplate","disabledField","currentDataItem","readerText_1","itemReaderText","isDynamic","itemWidth","itemHeight","createMask","rangesContainer","contents","isRange","getAxisField","showTooltipAtPosition","xPosition","yPosition","readerText","_itemReaderText","_legendDataItem","notRange","itemLabelText","_heatRules","heatRule","dataField_1","dataField","seriesDataItem_1","property_1","foundSprite","foundSprite_1","ruleTarget","propertyField","logarithmic","LOG10E","heatRules","listitem","maybeIndex","SerialChartDataItem","SerialChart","_exitDP","_series","handleSeriesAdded","handleSeriesRemoved","di","handleSeriesAdded2","handleLegendSeriesAdded","legendData_1","AxisBreak","_axis","breakSize","fillShape","_fillShape","startLine","_startLine","endLine","_endLine","addBreakSprite","gridContainer","createBreakSprites","breakTemplate","axisBreaks","invalidateSeries","startPosition","endPosition","updateBreakElement","AxisDataItem","_grid","grid_1","_tick","component_2","tick_1","component_3","_axisFill","component_4","axisFill_1","axisFill","axisFills","_text","_contents","createFill","_axisBreak","axisBreak","appendChildren","appendDataItem","minPosition","maxPosition","_bullet","Axis","_gridCount","_axisItemCount","hideTooltipWhileZooming","toggleZoomOutButton","zoomable","_dataItemsIterator","fillRule","ghostLabel","updateLabelElement","updateGridCount","gridCount","axisLength","axisFullLength","updateAxisLine","updateTooltip","updateBaseGridElement","_prevLength","initRenderer","above","updateGridContainer","validateAxisRanges","validateBreaks","_axisBreaks","processBreak","breakContainer","registerSeries","ghostLabel_1","positionToAngle","pointToPosition","positionToCoordinate","getAnyRangePath","getPositionRangePath","anyToPosition","anyToPoint","_tooltipPosition","toAxisPosition","tooltipLocation","getCellStartPosition","getCellEndPosition","tooltipLocation2","endPoint","currentItemStartPoint","currentItemEndPoint","fullWidthTooltip","getTooltipText","cursorTooltipEnabled","inversed","toGlobalPosition","boundingRectangle","roundPosition","axisLocation","_axisRanges","createAxisBreak","adjustedStartValue","processSeriesDataItems","processSeriesDataItem","axisLetter","postProcessSeriesDataItems","postProcessSeriesDataItem","updateAxisBySeries","hideUnusedDataItems","dataItemsIterator","getSeriesDataItem","findNearest","stackKey","getX","getPositionX","getY","getPositionY","dataChangeUpdate","seriesDataChangeUpdate","adjustDifference","startValue","endValue","adjustedEndValue","isInBreak","fixAxisBreaks","firstAxisBreak","previousEndValue_1","getPositionLabel","createSeriesRange","resetIterators","AxisLine","AxisFill","fillPath","Grid","AxisLabel","Tick","AxisTick","AxisRenderer","inside","minLabelPosition","maxLabelPosition","invalidateAxisItems","baseGrid","setAxis","processRenderer","positionItem","position2","getHeight","getWidth","coordinateToPosition","coordinate","coordinate2","updateGridElement","updateTickElement","updateBullet","updateFillElement","toggleVisibility","_axisFills","createGrid","_ticks","createTick","_labels","createLabel","AxisBullet","AxisRendererY","opposite","inversedPosition","relativePositionSprite","bigNum","bbx","bbw","basePoint","wavedRectangle","ValueAxisBreak","valueToPosition","ValueAxisDataItem","ValueAxis","_stepDecimalPlaces","_prevStepDecimalPlaces","_adjustLabelPrecision","_baseValue","_adjustedStart","_adjustedEnd","_extremesChanged","_deltaMinMax","_dsc","calculateTotals","axisFieldName","keepSelection","includeRangesInMinMax","_maxZoomed","_maxDefined","_minZoomed","_minDefined","_maxAdjusted","_minAdjusted","excludeFromTotal","getMinMax","calculateZoom","validateAxisElements","positionToValue","differece","minMaxStep","adjustMinMax","stepDecimalPlaces","syncWithAxis","_step","fixSmallStep","value_1","minZoomed","maxZoomed","dataItemsIterator_1","precisionChanged","stepPower","decCount","renderer_1","breakValue_1","adjustedMin","adjustedMax","adjustedStep","itemIndex","fillEndPosition","adjustLabelPrecision","baseValue","valueToPoint","min_1","max_1","_difference","treatZeroAs","difference_1","value_2","breakStartPosition","breakEndPosition","breakStartValue","breakEndValue","xToValue","yToValue","animateMinMax","POSITIVE_INFINITY","NEGATIVE_INFINITY","ignoreMinMax","seriesMin","seriesMax","_minReal","_maxReal","dif","fixMin","fixMax","extraMin","extraMax","strict","strictMinMax","_minMaxAnimation","_finalMax","_finalMin","handleSelectionExtremesChange","_saveMinMax","strictMode","initialMin","initialMax","stepDivisor","maxPrecision","minCount","maxCount","handleExtremesChange","selectionMin","selectionMax","allHidden","outOfRange","seriesSelectionMin","seriesSelectionMax","minMaxStep2","syncAxes","extraTooltipPrecision","valueStr","zoomToValues","axisBreakDif","axisBreakGridCount","breakMinMaxStep","showTooltipAt","currentCount","synced","omin","omax","ostep","checkSync","_min","_max","DateAxisBreak","DateAxisDataItem","DateAxis","_gapBreaks","gridIntervals","groupIntervals","dateFormats","periodChangeDateFormats","_baseIntervalReal","_prevSeriesTime","_minDifference","_firstWeekDay","groupMin","groupMax","_intervalMax","_intervalMin","snapTooltip","groupCount","getDFFormatter","gridInterval","_gridInterval","gridDuration","baseDuration","periodCount","getFirstWeekDay","mainBaseDuration","mainBaseInterval","getIntervalMax","getIntervalMin","dataSetChanged","groupData","modifiedDifference","groupInterval","chooseInterval","_groupInterval","_nextGridUnit","_intervalDuration","_gridDate","_df","field_1","minZoomedStr","startDataItem","currentDataSetId","findFirst","maxZoomedStr","endDataItem","previousDate","minDifference","seriesGroupUpdate","addEmptyUnitsBreaks","_baseInterval","groupSeriesData","dataGrouped","intervals_1","mainIntervalDuration_1","intervalDuration","dataSetId","dataSet","newDataItem","roundedDate","previousTime","dfkey","df","dfk","vkey","openDateX","dateY","openDateY","dvalues","groupDataItems","groupFieldName","groupFields","intervalID","skipEmptyPeriods","startTimeStr","breakGridCount","gridDate","getGridDate","intervalCount","realIntervalCount","prevTimestamp","durationBreaksRemoved","getBreaklessDate","prevGridDate","this_2","markUnitChange","timeUnit_1","intervalCount_1","prevGridDate_1","timestamp_1","_loop_3","text_1","endTimestamp","intervals","dateToPosition","dateToPoint","positionToDate","getTimeByLocation","openTime","prevSeriesTime","_mainBaseInterval","tooltipDate","deltaValue","nextDate","key_1","getCurrentLabelFormat","zoomToDates","adjust","isEnd","isStart","groupInterval_1","mindi","maxdi","closestDate_1","actualTime_1","closestTime_1","snapToSeries","showTooltipAtDataItem","_seriesPoints","makeGap","autoGapCount","prevDate","AxisRendererX","bby","bbh","CategoryAxisBreak","categoryToIndex","CategoryAxisDataItem","seriesDataItems","endCategory","deltaPosition","oldCategory","deltaCoordinate","CategoryAxis","dataItemsByCategory","_lastDataItem","categoryAxisDataItem","seriesId","positionToIndex","minIndex","maxIndex","seriesDataItem","dataCount","MAX_SAFE_INTEGER","_frequency","frequency_1","itemIndex_1","fillEndIndex","fillPosition","breakStartIndex","breakEndIndex","categoryToPosition","categoryToPoint","zoomToCategories","startCategory","startPos","endPos","getFirstSeriesDataItem","categoryX","categoryY","getLastSeriesDataItem","getSeriesDataItemByCategory","sdi_1","category_1","positionToCategory","sortBySeries","XYSeriesDataItem","customValue","openValueX","openCategoryX","openCategoryY","getMin","stackValue","getMax","_xAxis","_yAxis","_xValueFields","_yValueFields","usesShowFields","_dataSetChanged","_maxxX","_maxxY","_propertiesChanged","cursorHoverEnabled","stackToNegative","returnBulletDefaultState","resetExtremes","valueYShow","openValueXShow","openValueYShow","defineFields","updateItemReaderText","setInitialWorkingValues","dataItemsX","clearCatAxis","dataItemsY","xAxisFieldName","yAxisFieldName","addValueField","setCategoryAxisField","setDateAxisField","path_1","getMaskPath","maskBullets","leftAxesContainer","rightAxesContainer","topAxesContainer","bottomAxesContainer","setXAxis","oldAxis","setYAxis","XYChart","handleYAxisSet","_baseAxis","scrollbarSeries","workingStartIndex","workingEndIndex","getStackValue","stackX","stackY","xAxisId","yAxisId","stackedSeries","tmin","tmax","_prevTooltipDataItem","getAdjustedXLocation","bulletLocationX","getAdjustedYLocation","bulletLocationY","hideSeriesTooltipsOnSelection","downPoint","tooltipXField","tooltipYField","fireEvent","e_2_1","getBulletLocationX","getBulletLocationY","positionX","positionY","openValue","closeValue","rightLocation","leftLocation","openPositionX","topLocation","bottomLocation","openPositionY","positionBulletReal","bulletLocation","updateStacking","realDuration","field_2","prevSeries","prevDataItem","prevStack","prevRealValue","_tooltipXField","_tooltipYField","xKey","yKey","stackKeyX","stackKeyY","axisBulletsContainer","XYChartScrollbar","scrollbarChart","_scrollbarChart","unselectedOverlay","_unselectedOverlay","thumbBackground","sourceSeries","zoomOutButton","addXAxis","addYAxis","vAxis_1","minDefined","maxDefined","vAxis_2","vAxis_3","vAxis_4","zoomOutAxes","handleDataChanged","XYChartDataItem","_axisRendererX","_axisRendererY","arrangeTooltips","topAxesCont","yAxesAndPlotCont","yAxesAndPlotContainer","bottomAxesCont","leftAxesCont","updateXAxesMargins","plotCont","mouseWheelBehavior","_cursorContainer","rightAxesCont","_bulletMask","updateSeriesLegend","updatePlotElements","leftAxesWidth","rightAxesWidth","handleXAxisChange","updateXAxis","handleYAxisChange","updateYAxis","processXAxis","handleXAxisRangeChange","processAxis","processYAxis","handleYAxisRangeChange","getCommonAxisRange","zoomAxes","updateScrollbar","show_1","seriesAppeared","scrollbarY","axes","axisStart","axisEnd","updateSeriesMasks","_xAxes","handleAxisRemoval","_yAxes","_cursor","handleCursorPositionChange","handleCursorZoomStart","handleCursorZoomEnd","handleCursorPanStart","handleCursorPanning","handleCursorPanEnd","handleCursorCanceled","handleHideCursor","xPosition_1","yPosition_1","showSeriesTooltip","exceptAxes_1","dataItems_1","snpSeries","closestDataItem_1","getClosest","closestSeries","handleSnap","_cursorXPosition","showAxisTooltip","_cursorYPosition","sortSeriesTooltips","closestDataItem","minDistance","xPos","yPos","dxPosition","dyPosition","hideObjectTooltip","seriesPoints","cursor_1","nearestSeries_1","nearestPoint_1","cursorPoint_1","smallestDistance_1","seriesPoint","fixedPoint","newSeriesPoints_1","np","topLeft_1","bottomRight_1","filteredSeriesPoints_1","firstSeries","averageY","dropped","nextHeight","pointY","getUpdatedRange","xRange","yRange","_panStartXRange","_panStartYRange","panEndRange","_panEndXRange","panStartRange","snapOnPan","_panEndYRange","newRange","maxPanOut","_scrollbarX","handleXScrollbarChange","_scrollbarY","handleYScrollbarChange","realRange","originalRange","cellWidth","plotPoint","handleWheelReal","handleHorizontalWheel","horizontalMouseWheelBehavior","rangeX","rangeY","shiftStep","singleItemStep","differenceX","newStartX","newEndX","differenceY","newStartY","newEndY","location2X","location2Y","_mouseWheelDisposer2","len_1","len_2","_zoomOutButton","addScrollbarData","removeScrollbarData","sbstate","LineSeriesSegment","fillSprite","strokeSprite","drawSegment","closePoints","smoothnessX","smoothnessY","smoothing","fillElement","DurationAxisDataItem","DurationAxis","axisDurationFormat","divisors","realDivisor","divisors_1","divisors_1_1","divisor","_tooltipDurationFormat","tooltipDurationFormat","LineSeriesDataItem","LineSeries","createSegment","_segmentsIterator","segmentsContainer","initialY","initialX","openSegmentWrapper","_adjustedStartIndex","findAdjustedIndex","adjustedIndex","openIndex","openSegment","getSegment","addToClose","closeIndex","propertiesChanged","valuesFound","updateSegmentProperties","addPoints","closeSegment","itemProperties","checkOnly","currentValueStr","hasLabels","RadarSeriesDataItem","RadarSeries","connectEnds","updateRendererRefs","axisRendererY","AxisFillCircular","GridCircular","AxisLabelCircular","fdx","fdy","locationOnPath","axisRadius","pixelRadiusY","axisRadiusY","fixPosition","isNegative","realRadius","relativeRotation","labelRadius","bent","dH","dW","AxisRendererCircular","pixelRadiusReal","useChartAngles","innerRadiusModifyer","angleToPosition","gridInnerRadius","AxisRendererRadial","gridType","axisAngle","gridLocation","tooltipOrientation","RadarChartDataItem","RadarChart","radarContainer","maxRadius","diameter","_pixelInnerRadius","ClockHand","startWidth","endWidth","hand","_pin","_hand","showValue","newAngle","currentAngle","rotationDirection","updateValue","GaugeChartDataItem","GaugeChart","hands","processHand","PercentSeriesDataItem","ticksContainer","labelsContainer","_slice","slice_1","slices","slicesContainer","PercentSeries","alignLabels","createSlice","_slices","initSlice","initTick","initLabel","arrangeLabels","lh","nextLabel","getNextLabel","nextLabelHeight","nextLabelY","arrangeLabels2","previousTop","nextDataItem","handleSliceScale","handleSliceMove","setAlignLabels","tickState","PercentChartDataItem","PercentChart","percentSeriesDataItem","PieTick","PieSeriesDataItem","radiusValue","PieSeries","_leftItems","_rightItems","_currentStartAngle","_arcRect","_maxRadiusPercent","radiusValuePercent","aAngle","bAngle","ignoreZeroValues","normalizedMiddleAngle","arcRect","_pixelRadius","_startAngleInternal","_endAngleInternal","PieChartDataItem","PieChart","updateRadius","_chartPixelRadius","updateSeriesAngles","chartCont","chartRadius","chartPixelInnerRadius","seriesRadius","_chartPixelInnerRadius","PieSeries3DDataItem","depthValue","PieSeries3D","depthPercent","PieChart3DDataItem","PieChart3D","SlicedChartDataItem","SlicedChart","FlowDiagramNode","invalidateLinks","outgoingDataItems","toNode","incomingDataItems","fromNode","colorMode","stop_1","stop_2","_incomingDataItems","_incomingSorted","sortBy","_outgoingDataItems","_outgoingSorted","FlowDiagramLink","positionBullets","_bulletsContainer","_bulletsMask","bulletsMask","middleLine","_gradient","FlowDiagramDataItem","_link","links","FlowDiagram","nodePadding","minNodeSize","linksContainer","nodesContainer","sortNodes","strNode","getNodeValue","_sorted","incomingTotal","outgoingTotal","totalIncoming","totalOutgoing","changeSorting","_nodes","createNode","_links","createLink","LabelBullet","SankeyNode","nextInCoord","nextOutCoord","nameLabel","orientation_1","endX","endY","linkWidth","valueHeight","startX","startY","SankeyLink","controlPointDistance","makeBackwards","xt0","yt0","xt1","yt1","xb0","xb1","yb0","yb1","xm0","xm1","ym0","ym1","cpd","kxt0","kyt0","kxt1","kyt1","kxm0","kym0","kxm1","kym1","kxb0","kyb0","kxb1","kyb1","SankeyDiagramDataItem","SankeyDiagram","nodeAlign","_valueHeight","_levelCount","getNodeLevel","levels","checkLoop","calculateValueHeight","_levelSum","_levelNodesCount","maxSum","maxSumLevel","realValue","_maxSumLevel","finalHeight","_heightAnimation","nextCoordinate","maxSumLevelNodeCount","levelCoordinate","nodeCount","container_1","nodeHeight","ChordNode","updateRotation","arc_1","sliceStartAngle_1","childAngle","childRadius","labelAngle","adjustedTotal","nextAngle","nonRibbon","valueAngle","mAngle","trueStartAngle","tx","ty","QuadraticCurve","cpx","cpy","ChordLink","fromX","fromY","toX","toY","mAngle1","mAngle2","ChordDiagramDataItem","ChordDiagram","chordContainer","newTotal","Column","createAssets","handleKidAdded","ColumnSeriesDataItem","_column","setColumn","_rangesColumns","_startLocation","_endLocation","clustered","columnsContainer","_columnsContainer","prevAxisIndex_1","clusterCount_1","sortedByAxis_1","index_2","sortedItem","sortCategoryAxis","disableUnusedColumns","currentPosition","deltaAnimation","validateDataElementReal","getStartLocation","getEndLocation","outOfBounds","diw","dih","fixHorizontalCoordinate","fixVerticalCoordinate","axisLenght","column_1","realX","realY","realWidth","realHeight","setColumnStates","rangeColumn","rangesColumns","_dropFromOpenState","_dropFromPreviousState","_riseFromOpenState","_riseFromPreviousState","droppedFromOpen","droppedFromPrevious","_columns","createColumnTemplate","fromOpenState_1","fromPreviousState_1","TreeMapSeriesDataItem","treeMapDataItem","TreeMapSeries","TreeMapDataItem","childValue","TreeMap","layoutAlgorithm","squarify","maxLevels","currentLevel","hideParentColumns","sorting","seriesTemplates","zoomToChartDataItem","_homeDataItem","_navigationBar","navigationBar","createTreeSeries","_tempSeries","homeDataItem","_homeText","layoutItems","navigationData","parentDataItem","initSeries","createTreeSeriesReal","currentlyZoomed","zoomToSeriesDataItem","toggleBullets","binaryTree","dice","sliceDice","sums","partition","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","nodeValue","sumValue","newRatio","minRatio","beta","getLegendLevel","legendParent","AxisRendererX3D","dx3D","dy3D","handle3DChanged","AxisRendererY3D","Column3D","column3D","ColumnSeries3DDataItem","ColumnSeries3D","XYChart3DDataItem","XYChart3D","fixColumns","depthIndex","inversed_1","maskColumns","HeatLegend","markerContainer","markerCount","getMinFromRules","minValue_1","getMaxFromRules","maxValue_1","minColor","maxColor","seriesFill","minOpacity","maxOpacity","minStrokeOpacity","maxStrokeOpacity","minStroke","maxStroke","strokeGradient","color_1","_valueAxis","dataFieldDefined","updateMinMax","seriesId_1","Candlestick","lowLine","highLine","CandlestickSeriesDataItem","lowValueX","lowValueY","highValueX","highValueY","CandlestickSeries","positiveColor","negativeColor","dropFromOpenState","riseFromOpenState","validateCandlestick","lowLine_1","highLine_1","yOpen","yClose","yLow","yLowField","yHigh","yHighField","open_2","close_2","xOpen","xClose","xLow","xLowField","xHigh","xHighField","rangeLowLine","rangehighLine","_xLowField","_yLowField","_xHighField","_yHighField","OHLC","openLine","highLowLine","closeLine","OHLCSeriesDataItem","OHLCSeries","openLine_1","highLowLine_1","closeLine_1","rangeOpenLine","rangeCloseLine","rangeHighLowLine","StepLineSeriesSegment","noRisers","StepLineSeriesDataItem","StepLineSeries","startLocationX","endLocationX","startLocationY","endLocationY","point0","RadarColumn","radarColumn","RadarColumnSeriesDataItem","RadarColumnSeries","lAngle","rAngle","tRadius","bRadius","cellAngle","FunnelSlice","bottomWidth","topWidth","expandDistance","pl","ed","tw","bw","cpr","cpl","qp1","qp2","tickPoint","tb","bt","bb","mlx","mty","FunnelTick","labelsOpposite","FunnelSeriesDataItem","_sliceLink","sliceLink_1","sliceLinks","FunnelSeries","_nextY","bottomRatio","labelTemplate","dItem","_total","_count","getNextValue","nextValue","formDataElement","sliceLink","decorateSlice","linkHeight","getLastLabel","lastLabel","lastY","lastX","_sliceLinks","labelAlign","labelValign","PyramidSeriesDataItem","PyramidSeries","pyramidHeight","valueIs","_nextWidth","relValue","_pyramidHeight","_pyramidWidth","absoluteSum","pyramidWidth","sliceTopWidth","sliceHeight","sliceBottomWidth","square","sliceWidth","PictorialStackedSeriesDataItem","PictorialStackedSeries","_maskSprite","maskSprite","pictureWidth","pictureHeight","newWidth","newHeight","hs","ConeColumn","coneColumn","ConeSeriesDataItem","ConeSeries","CurvedColumn","curvedColumn","CurvedColumnSeriesDataItem","CurvedColumnSeries","CircleBullet","ErrorBullet","errorLine","NavigationBarDataItem","NavigationBar","textLink","_linksIterator","triangle","activeLink","fontWeight","Cursor","_stick","handleCursorDown","handleCursorUp","handleCursorMove","_generalBehavior","_stickPoint","triggerMove","stick","triggerMoveReal","getPositions","triggerDown","triggerDownReal","triggerUp","triggerUpReal","updatePoint","upPoint","_upPointOrig","_downPointOrig","updateSelection","shouldPreventGestures","XYCursor","_lineX","_lineY","_snapToDisposers","lineX","_usesSelection","fixPoint","updateLinePositions","allHidden_1","getPanningRanges","selectionY","hasMoved","getRanges","handleXTooltipPosition","handleYTooltipPosition","fullWidthLineX","fullWidthLineY","_selection","snapTo_1","snapError_1","snap","xx","yy","RadarCursor","truePixelRadius","updateLineX","updateLineY","fillStartAngle","downAngle","downRadius","currentRadius","_prevAngle","downSin","downCos","upAngle","upRadius","widthRatio","heightRatio","Polyarc","controlPointPosition","distanceAB","cpDistance","controlPoint1","controlPoint2","Morpher","morphable","_bboxes","morphDuration","morphEasing","morphToSingle","scaleRatio","morphToPolygon","toPoints","currentPoints","sortPoints","_morphFromPointsReal","_morphToPointsReal","normalizePoints","pointsA","pointsB","surfaceA","holeA","bboxA","middleX","middleY","splitAt","newDistance","partB","bbox1","bbox2","bboxes","surface","morphToCircle","commonBBox","hole","fromPoints","realAngle","pointOnCircle","hlen","mustHaveCount","addToSegmentCount","lastPoint","morphToRectangle","i_2","i_3","_morphProgress","currentArea","surfaceFrom","holeFrom","surfaceTo","holeTo","currentSurface","i_4","slen","currentHole","i_5","morphBack","Polygon","_currentPoints","areaHole","areaArr","holeArr","pointsArr","area","areaAndHole","coords","pointsArr_1","_morpher","Preloader","sliceContainer","backgroundSlice","progressSlice","CloseButton","bgc","downColor","bhs","bds","SwitchButton","leftLabel","p100","as","switchButton","rightLabel","rlas","_leftLabel","_rightLabel","_switchButton","Slider","PlayButton","playIcon","stopIcon","RadialGradientModifier","LinePattern","_line","CirclePattern","_circle","RectPattern","rectHeight","rectWidth","_rect","ColorizeFilter","intensity","applyFilter","ii","BlurFilter","FocusFilter","feMorphology","feBlend","outline","PatternSet","getLinePattern","getRectPattern","getCirclePattern","thickness","generatePatterns","Plugin","AmChartsLogo","aColor","aGradient","aStroke","desaturateFilter","desaturateFilterHover","queueHandler","nextSprite","viewPortHandler","vpDisposer","classError","tmpContainer","svgDiv_1","loopTimer_1","tooltipContainer_1","preloader_1","logo_1","logo","useTheme","animated","Entity","_afterNewApplyThemes","_dirty","generateColors","fromHex","toHSL","fromHSL","XYChartDefaultTheme","Theme","setupDefaultRules","ic","wheelStep","pinchZoomY","legendLabelText","cornerRadiusBR","cornerRadiusBL","snapToSeriesBy","moveThreshold","forceInactive","ariaLabel","zoomX","zoomY","fixAxisSize","multiLocation","p50","crisp","tooltipDateFormats","autoZoom","openValueXGrouped","openValueYGrouped","valueXGrouped","valueYGrouped","seriesTooltipTarget","adjustBulletPosition","lowValueXGrouped","lowValueYGrouped","highValueXGrouped","highValueYGrouped","interactive","interactiveChildren","ListAutoDispose","oldValues","_removeSeries","_processSeries","newIndex","_placeBulletsContainer","_removeBulletsContainer","horizontalLayout","maskContent","plotsContainer","topPlotContainer","_defaultThemes","zoomOut","_processAxis","topGridContainer","_handlePlotDown","_handlePlotUp","_handlePlotMove","_maskGrid","_setUpTouch","cancelTouch","_unstack","_posXDp","_posYDp","markDirtyExtremes","wheelEvent","toLocal","shiftY","shiftX","wheelZoomPositionX","wheelZoomPositionY","_handleWheelAnimation","_getWheelSign","se","_fixWheel","_handleSetWheel","_wheelDp","_downPoints","_downStartX","_downEndX","_downStartY","_downEndY","_downPoint","_panStart","_panEnd","_dispatchWheelAnimation","_isPanning","_movePoints","_handlePinch","documentPointToRoot","panStart","panEnd","downPoints","movePoints","movePoint","downPoint0","downPoint1","movePoint0","movePoint1","downStartX","downEndX","downPos0","downPos1","movePos0","movePos1","sa","ea","downStartY","downEndY","_handleCursorPosition","cursorPoint","closestItem","hypot","showDataItemTooltip","toGlobal","_updateCursor","updateCursor","_addCursor","_colorize","_prevSettings","_disposeProperty","_setChart","_pushPropertyDisposer","_handleCursorSelectEnd","_handleScrollbar","grip","_handleAxisSelection","_handleZoomOut","_fixPosition","_markDirtyKey","_markDirtyAxes","_seriesAdded","_setSoft","downPositionX","downPositionY","position0","position1","_removeAxis","processChart","axisParent","gridParent","topGridParent","_updateChartLayout","updateGrips","inPlot","otherCharts","_otherCharts","chartPlotContainer","documentPoint","rootPointToDocument","hh","plotT","plotB","closestPoint","_movePoint","maxTooltipDistanceBy","tooltipSeries","_tooltipToLocal","prevY","prevBottom","bounds","_settings","_drawLines","_handleXLine","_handleYLine","_handleLineFocus","_handleLineBlur","_handleLineMove","focused","nextPosition","_alwaysShow","alwaysShow","isFocus","_tooltipX","_updateXLine","_tooltipY","_updateYLine","_handleSyncWith","syncWith","_getPoint","_toX","_toY","_handleMove","_handleCursorDown","_handleCursorUp","native","_lastPoint2","_inPlot","_getPosition","rootPoint","_lastPoint","xyPos","userPositionX","userPositionY","xy","handleCursorShow","_updateLines","_updateSelection","_onHide","handleCursorHide","_onShow","axisHeader","makeLabel","_updateFinals","sAnimation","_sAnimation","eAnimation","_eAnimation","maxZoomFactorReal","playing","_createAssets","_rangesDirty","_prepareDataItem","markDirtySelectionExtremes","_calculateTotals","_updateAxisRanges","_seriesAxisRanges","_inversed","_axisLength","_updateLC","rendererTags","addTag","_applyThemes","_updateTooltipBounds","_updateBounds","axisHeadersContainer","onPrivate","markDirtySize","_toggleFHDataItem","fh","_toggleDataItem","minor","makeGrid","makeTick","makeAxisFill","_processBullet","axisBullet","_afterChanged","_updatePositions","_updateGhost","getCellWidthPosition","localBounds","gWidth","_getText","updateLabel","_cursorPosition","_snapToSeries","getSeriesItem","roundAxisPosition","_updateTooltipText","positionTooltip","_fields","_clearDirty","shouldGap","_nextItem","_autoGapCount","_fieldName","_groupSeriesData","segmentedLine","firstGroup","firstPoint","isPrivateDirty","$draw","_handleThumbDown","_handleThumbUp","_handleThumbMove","pan","_thumbDownPoint","_downStart","_downEnd","downStart","downEnd","_getPan","_point1","_point2","_updateSize","markDirty","_positionTooltip","gridTemplate","axisChildren","removeTag","_markDirtyRedraw","_ls","_lc","updateTick","updateGrid","bulletPosition","previousBullet","previousSprite","updateFill","fillDrawMethod","oldBounds","_itemMap","_handleRangeChange","_prepareAxisItems","openKey","otherAxis","__valueXShowFields","__valueYShowFields","minorLabelsEnabled","minorGridEnabled","fillIndex","categoryLocation","endCategoryLocation","cellLocation","_axisLocation","getDataItemCoordinateX","getDataItemCoordinateY","dataItemToPosition","axisPositionToIndex","_adjustPosition","markDirtyText","_setBaseInterval","_baseDuration","_fixZoomFactor","baseMainDuration","_groupData","_dataGrouped","mainDataSetId","resetGrouping","_seriesDataGrouped","_valueYFields","_valueXFields","_mainDataItems","groupCallback","groupOriginals","groupFieldValues","workingFields","firstTime","prevNewDataItem","roundedTime","_makeDataItem","groupKey","_dataSetId","_groupingCalculated","getGroupInterval","endIndex2","firstDataItem","outOfSelection","_adjustStartIndex","_markDirtyPrivateKey","_adjustMinMax","_strictMode","_getM","_getMinorInterval","minorGridInterval","nextGridUnit","minorDuration","labelEndValue","minorTimeUnit","minorCount","mmm","previousMinorValue","minorValue","minorFormats","minorDataItem","minorDataItems","minorEndValue","minorLabel","_getDelta","_fixMin","_fixMax","_updateDates","_handleSizeDirty","adjustPosition","diValue","futureGroupInterval","baseMin","baseMax","futureMin","futureMax","dtime","tooltipValue","_nextTime","_dirtyExtremes","_dirtySelectionExtremes","_syncDp","someDirty","_getMinMax","getMM","_getSelectionMinMax","_formatText","getNumberFormatter","differencePower","minLog","_minLogAdjusted","_minRealLog","stepAdjusted","minorGridCount","minorStep","labelEndPosition","hasTag","valueToFinalPosition","_cellLocation","getStackedXValueWorking","getStackedYValueWorking","cellEndValue","vc","fieldWorking","selectionStrictMinMax","smin","selectionMinReal","selectionMaxReal","_syncAxes","LN10","minDiff","minAdapted","fold","maxAdapted","strictMinMaxSelection","animatePrivate","ceiledStep","extraDecimals","oldDiff","syncMin","syncMax","syncStep","_checkSync","src_area","defined","curve","curveLinear","defined0","x0z","y0z","areaStart","lineStart","lineEnd","areaEnd","arealine","pointX","lineX0","lineY0","lineY1","lineX1","strokes","fills","_fillGenerator","makeStroke","makeFill","_strokeTemplate","_fillTemplate","legendStroke","_legendStroke","legendFill","_legendFill","curveFactory","_strokeGenerator","strokeTemplateField","fillTemplateField","strokeTemplateFound","fillTemplateFound","hasValues","_valueFields","_clearGraphics","_sindex","_dindex","_startSegment","dataItemIndex","currentEndIndex","fillTemplate","strokeTemplate","xOpenFieldValue","yOpenFieldValue","basePosX","basePosY","baseField","fillVisible","getOpen","rangeStrokeTemplate","rangeFillTemplate","_getPoints","_drawStroke","_drawFill","itemLocationX","itemLocationY","_shouldInclude","iPoint","xPos0","yPos0","closeIPoint","_previousPoint","pp2","pp3","_points","_firstPoint","bulletFunction","valueFields","_setRawDefault","_removeAxisRange","_updateFields","_valueXShowFields","_valueYShowFields","valueXFields","valueYFields","_shouldMakeBullet","xName","xCapName","yName","yCapName","xLetter","yLetter","_fixVC","_handleMaskBullets","tooltipFieldX","tooltipFieldY","_tooltipFieldX","_tooltipFieldY","_dataProcessed","_stack","getStackedXValue","getStackedYValue","_seriesValuesDirty","_markStakedDirtyStack","_psi","_pei","_selectionProcessed","processYSelectionDataItem","processXSelectionDataItem","selectionMinY","selectionMaxY","selectionMinX","selectionMaxX","_makeRangeMask","mainContainerMask","_mainContainerMask","seriesIndex","_couldStackTo","_stackDataItems","_reallyStackedTo","_stackedSeries","stackToItemKey","stackToSeries","stackToItem","stackedToSeries","_markDataSetDirty","_afterDataChange","_aggregatesCalculated","_positionBullet","_shouldShowBullet","realField","previousBounds","yo","xo","_positionX","_positionY","mainDataItems","_isShowing","_sequencedShowHide","_isHiding","waitForStop","_markDirtyStack","_emptyDataItem","_getItemReaderLabel","_position","minSelection","dl","lastTime","_listener","sensor","InterfaceColors","_setDefault","bns","sns","thousandSeparator","decimalSeparator","_part","formatToParts","toUTCDate","Timezone","isReal","hour12","fractionalSecondDigits","_dtf","convertLocal","offsetUTC","userOffset","newUserOffset","ignoreTimezone","locales","_getMonth","_getShortMonth","_getShortWeekday","_getWeekday","_months","_shortMonths","_weekdays","_shortWeekdays","dmillisecond","dsecond","dminute","dhour","dday","dweek","dmonth","aminute","ahour","aday","aweek","amonth","ayear","_toTimeUnit","_getUnitValue","_getUnitValues","_date_millisecond_full","_date_second_full","_date_minute_full","_date_hour_full","_date_day_full","_date_week_full","_date_month_full","HTML","setTranslationsAny","Matrix","setTransform","pivotX","pivotY","applyInverse","c1","prepend","tx1","TAU","mapToEllipse","cosphi","sinphi","centerx","centery","approxUnitArc","ang1","ang2","vectorAngle","ux","uy","vx","vy","dot","px","py","_ref2$xAxisRotation","_ref2$largeArcFlag","_ref2$sweepFlag","curves","pxp","pyp","lambda","_getArcCenter","rxsq","rysq","pxpsq","pypsq","radicant","centerxp","centeryp","vx1","vy1","vx2","vy2","getArcCenter","_getArcCenter2","sliceIterator","_arr","_n","_e","_s","_slicedToArray","_mapToEllipse","_mapToEllipse2","_mapToEllipse3","checkArgs","actual","expected","checkMinArgs","checkEvenArgs","splitArcFlags","assertBinary","eachTargets","hitTarget","onPointerEvent","touches","isTainted","willReadFrequently","getImageData","clearCanvas","CanvasPivot","CanvasDisplayObject","DisposerClass","subStatus","inactive","_layer","_removeObject","getLayer","defaultLayer","setLayer","_ghostLayer","setMargin","layers","registerChildLayer","resizeLayer","resizeGhost","markDirtyLayer","invalidateBounds","_localBounds","_addBounds","_bounds","_getColorId","_colorId","paintId","_isInteractive","_forceInteractive","_isInteractiveMask","_matrix","getLocalMatrix","_uMatrix","getLocalBounds","bn","getAdjustedBounds","_setMatrix","_addEvent","_localMatrix","_transform","resolution","_transformMargin","_transformLayer","_omitTainted","ghostLayer","ghostContext","_runPath","clip","globalAlpha","compoundAlpha","tainted","hovering","_hovering","dragging","_dragging","shouldCancelTouch","_touchActive","CanvasContainer","addChild","addChildAt","_childLayers","setPoint","Op","colorize","_forceColor","colorizeGhost","forceColor","pathGhost","addBounds","BeginPath","beginPath","BeginFill","EndFill","clearShadow","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","EndStroke","LineStyle","lineJoin","strokeStyle","lineWidth","LineDash","dash","setLineDash","LineDashOffset","dashOffset","lineDashOffset","DrawRect","DrawCircle","DrawEllipse","radiusX","ellipse","Arc","anticlockwise","arcBounds","ArcTo","LineTo","MoveTo","ClosePath","BezierCurveTo","cpX","cpY","cpX2","cpY2","bezierCurveTo","QuadraticCurveTo","Shadow","offsetX","offsetY","GraphicsImage","CanvasGraphics","BlendMode","NORMAL","_operations","_pushOp","beginFill","_fillAlpha","toCSS","endFill","_hasShadows","endStroke","lineStyle","_strokeAlpha","setLineDashOffset","drawRect","drawEllipse","shadow","svgPath","qcpx","qcpy","SEGMENTS_REGEXP","ARGS_REGEXP","relative","arcToBezier","layerDirty","globalCompositeOperation","blendMode","renderDetached","CanvasText","_textInfo","_shared","textBaseline","_prerender","ignoreGhost","ignoreFontWeight","fontStyle","_getFontStyle","shadowOpacity","style2","fontVariant","fontFamily","_measure","textVisible","textChunks","fillText","textDecoration","oversizedBehavior","_measureText","actualBoundingBoxLeft","actualBoundingBoxRight","getTextStyle","_ignoreFontWeight","refText","styleRestored","ascent","actualBoundingBoxAscent","actualBoundingBoxDescent","currentFill","currentChunkWidth","currentVerticalAlign","currentDecoration","skipFurtherText","firstTextChunk","leftoverChunks","chunkWidth","breakWords","ellipsisMetrics","_truncateText","tmpText","leftBoundMod","rightBoundMod","boundsMod","chunkHeight","lineHeight","currentChunkOffset","baselineRatio","_fitRatio","minScale","maxW","maxH","fallbackBreakWords","measureText","fakeMetrics","fontBoundingBoxAscent","fontBoundingBoxDescent","CanvasTextStyle","CanvasRadialText","textType","_renderCircular","inward","kerning","clockwise","shouldReverse","_textReversed","maxAngle","midAngle","textHeight","lineStartAngle","angleShift","charWidth","_measureCircular","totalWidth","ellipsisWidth","CanvasImage","_imageMask","naturalWidth","naturalHeight","_getMask","imageSmoothingEnabled","CanvasRendererEvent","originalPoint","CanvasRenderer","ArrayDisposer","GhostLayer","_patternCanvas","_layerDom","exportableView","_touchActiveTimeout","_delayTouchDeactivate","_ev","prevent","resetImageArray","imageArray","tapToActivateTimeout","debugGhostView","createLinearGradient","createRadialGradient","radius1","radius2","createPattern","repetition","_patternContext","clearRect","makeContainer","makeGraphics","makeText","makeTextStyle","makeRadialText","makePicture","resize","_calculatedWidth","_calculatedHeight","calculatedWidth","calculatedHeight","_realWidth","_realHeight","createDetachedLayer","CanvasLayer","getLayerByOrder","existingLayer","_dirtyLayers","_lastPointerMoveEvent","_dispatchGlobalMousemove","distributeId","_colorMap","_adjustBoundingBox","DOMRect","getEvent","adjustPoint","_getHitTarget","colorId","fromRGB","getObjectAtPoint","getImageArray","_withEvents","dispatching","cleanup","disposed","_dispatchEventAll","dispatched","_dispatchMousedown","originalTarget","dragged","_mousedown","_replacedCursorStyle","removeHovering","_dispatchGlobalMouseup","_dispatchDragMove","_dispatchDragEnd","clickevent","_dispatchDoubleClick","_dispatchWheel","_makeSharedEvent","_onPointerEvent","_initEvent","mouseup","mousedown","mousemove","canvasWidth","canvasHeight","maxScale","maintainPixelRatio","canvases","forceRender","needRerender","exportableContext","extraX","extraY","domWidth","domHeight","_resolution","rAF","fps","VerticalLayout","HorizontalLayout","GridLayout","accessible","_a11yD","useSafeResolution","rootElements","inner","tooltipContainerBounds","_tooltipContainerSettings","_inner","_updateComputedStyles","_init","moveDOM","_initResizeSensor","_handleLogo","_logo","_showBranding","_getRealSize","_getCalculatedSize","calculateSize","rootContainer","_rootContainer","DefaultTheme","htmlElementContainer","_htmlElementContainer","focusElementContainer","_focusElementContainer","tooltipElementContainer","_tooltipElementContainer","_isShift","focusedSprite","_focusedSprite","downEvent","simulated","dragOffsetX","dragOffsetY","isDragging","_keyboardDragPoint","dragPoint","moveEvent","upEvent","_tabindexes","isVisibleDeep","_startTicker","_addTooltip","_hasLicense","_resizeSensorDisposer","_focusElementDirty","_updateCurrentFocus","_runTickers","_tickers","_runAnimations","running","_runAnimation","AnimationState","Stopped","Playing","_isDirtyAnimation","_runDirties","allParents","_isDirtyParents","_dirtyParents","entity","_isDirty","depths","_dirtyBounds","_positionHTMLElements","dirtyPositions","_dirtyPositions","_updatePosition","_renderFrame","_updateTick","_checkComputedStyles","animationDone","_runTicker","animationTime","_ticker","_runTickerNow","_addDirtyEntity","_addDirtyParent","_addDirtyBounds","_addDirtyPosition","_addAnimation","_markDirty","eachFrame","markDirtyGlobal","walkChildren","markDirtyBounds","tooltipContainerSettings","layerMargin","_registerTabindexOrder","_invalidateTabindexes","_unregisterTabindexOrder","aindex","bindex","_moveFocusElement","_makeFocusElement","_decorateFocusElement","_positionFocusElement","focusElement","ariaLive","ariaChecked","ariaCurrent","ariaSelected","ariaOrientation","ariaValueNow","ariaValueMin","ariaValueMax","ariaValueText","ariaControls","tabIndex","_handleFocus","_handleBlur","_removeFocusElement","_hideFocusElement","globalBounds","focusPadding","_getSpriteByFocusElement","_focusNext","focusableElements","tooltipElement","_makeTooltipElement","removePrivate","_removeTooltipElement","_invalidateAccessibility","fontHash","_fontHash","_invalidateLabelBounds","_licenseApplied","_makeHTMLElement","boxSizing","_positionHTMLElement","_htmlEnabledContainers","compositeScale","compositeRotation","transformOrigin","compositeOpacity","_adjustedLocalBounds","_setHTMLContent","_removeHTMLContent","_lookupRules","themeClass","ruleRaw","ListData","incrementRef","decrementRef","_onPush","processRow","_onInsertIndex","_onSetIndex","Settings","_checkDirty","markDirtyValues","_startAnimation","_animationTime","_onDataClear","_markDirtyGroup","_dataChanged","oldIndex","_valueFieldsF","fieldKey","workingKey","_fieldsF","makeDataItem","pushDataItem","_onRemoved","_onInserted","childrenDisplay","_childrenDisplay","_prevWidth","_prevHeight","markDirtyPosition","contentMask","_contentMask","_percentageSizeChildren","_percentagePositionChildren","verticalScrollbar","_contentHeight","eachChildren","_applyState","_applyStateAnimated","applyAnimate","_getBounds","pWidth","pHeight","childBounds","adjustedLocalBounds","childX","childY","cl","ct","_contentWidth","updateContainer","_handleStates","_updateHTMLContent","_vsbd0","_vsbd1","_processTemplateField","_pattern","_draw","_checkDirtyFill","backgroundDisplay","_backgroundDisplay","PicturePattern","_load","_image","patternWidth","patternHeight","decode","_error","gradientTarget","fillGradient","fillPattern","strokePattern","colorInherited","opacityInherited","getFill","Layout","columnWidths","getColumnWidths","maxColumnHeight","prevX","privateWidth","_makeText","_textKeys","_setMaxDimentions","_maybeUpdateHTMLColor","toCSSHex","getText","getAccessibleText","_getAccessibleText","themeTagsSelf","markerRectangles","makeItemContainer","makeMarker","makeValueLabel","makeMarkerRectangle","nameField","fillField","strokeField","clickTarget","markDirtyAccessibility","clickContainer","_addClickEvents","targetA","targetB","indexA","indexB","hoverDataItem","unhoverDataItem","wSign","hSign","_makeThumb","_makeButton","_addOrientationClass","_handleAnimation","_thumbBusy","newMiddle","newCoordinate","_startDown","_gripDown","_endDown","_thumbDown","_released","_updateThumb","_updateGripsByThumb","valueFunction","thumbSize","_handleBullets","getDataItemById","_makeBullets","_makeBullet","_makeBulletReal","addBullet","_selectionAggregatesCalculated","baseValueSeries","_calculateAggregates","absSum","changePercent","changePrevious","changePreviousPercent","changeSelection","changeSelectionPercent","adjustedStartIndex","_getBase","_entities","neutral","customFunction","propertyValue","percentInterpolate","_hideBullets","_positionBullets","getTooltip","_makePointerEvent","_onRenderer","_rendererDisposers","rendererEvent","RENDERER_EVENTS","stopParentDispatch","_dispatchParents","dispatchParents","_hasDown","_hasMoved","rightclick","middleclick","globalpointerup","globalpointermove","markDirtyKey","_addPercentagePositionChildren","_removeTemplateField","_templateField","_removeObjectTemplate","_createEvents","_setObjectTemplate","_applyTemplates","oldDataItem","_addPercentageSizeChildren","updatePivotPoint","tooltipMoveDp","_tooltipMoveDp","tooltipPointerDp","_tooltipPointerDp","_statesHandled","_dragDp","dragMove","_tooltipDp","toggleKey","_toggleDp","_isDragging","contrast","sepia","_focusDp","_hoverDp","_handleOver","_handleOut","_handleUp","_handleDown","_dragEvent","_dragPoint","dragEvent","newBounds","_fixMinBounds","privateHeight","_removeParent","hover","unhover","tooltipTarget","_getTooltipPoint","waitForAnimations","_findStaticTemplate","_walkParents","_walkParent","updateChildren","prevParent","getDateFormatter","getDurationFormatter","_getDownPoint","_getDownPointId","textStyle","wordWrapWidth","_textStyles","styleName","xtl","ytl","xbl","templates","_setDefaultFn","_updateBackground","_updateTextColor","_htmlContentHovered","_handleReaderAnnouncement","_tooltips","updateBackgroundColor","_keepHoverDp","outEvent","_fillDp","_strokeDp","_labelDp","parentW","parentH","_w","_h","bgStrokeSizeY","bgStrokeSizeX","boundsW","boundsH","ADD","COLOR","COLOR_BURN","COLOR_DODGE","DARKEN","DIFFERENCE","DST_OVER","EXCLUSION","HARD_LIGHT","HUE","LIGHTEN","LUMINOSITY","MULTIPLY","OVERLAY","SATURATION","SCREEN","SOFT_LIGHT","SRC_ATOP","XOR","defaultInterpolate","colorInterpolate","getInterpolate","Paused","removeFirst","pushOne","findReverse","findIndexReverse","getFirstSortedIndex","string2hex","fromAny","_hex","fromCSS","rgba2hex","lightAlternative","darkAlternative","cubic","State","_entity","_userSettings","_eachSetting","seen","stateAnimationDuration","stateAnimationEasing","States","Adapters","loops","_from","_to","_easing","_loops","_interpolate","_oldTime","_playing","stopped","_stopped","_checkEnded","_run","_reset","_userProperties","resetUserSettings","paused","_animatingSettings","_stopAnimation","_animatingPrivateSettings","_stopAnimationPrivate","_setPrivate","_settingEvents","_privateSettingEvents","offPrivate","getRaw","_sendKeyEvent","_sendPrivateKeyEvent","_setRaw","removeAll","_privateSettings","_setPrivateRaw","_prevPrivateSettings","_internalTemplates","_registerId","shouldApply","_dirtyPrivate","_disposerProperties","isUserSetting","_removeTemplateProperty","_userPrivateProperties","_removeTemplatePrivateProperty","_setTemplateProperty","_findTemplateByKey","_setTemplatePrivateProperty","_findTemplateByPrivateKey","_applyStateByKey","_eachTemplate","_apply","_applyTemplate","_templateDisposers","privateSettings","_runSetup","setup","_templates","_disposeTemplates","_findTemplate","_removeTemplates","isConnected","prevId","entitiesById","removeType","_type","_onRemoveIndex","_onMoveIndex","_onClear","getArcBounds","inBounds","compareArray","leftLength","rightLength","getCustomDataValue","customData","TemplateState","_stateChanged","TemplateStates","TemplateAdapters","entities","getIntervalDuration","getDateIntervalDuration","timeOne","timeTwo","roun","tzoffset","parsedDate","offsetDif","newDiff","onZoom","supports","cap","getRendererEvent","isTouchEvent","getEventTarget","isLocalEvent","setInteractive","getSafeResolution","iOS","trimLeft","trimRight","truncateTextWithEllipsis","lastNonAlphanumericIndex","splitString","rtlChar","splitPattern","capitalizeFirst","alternativeColor","light","dark","mergeTags","tags1","tags2","sameBounds","primaryButtonDisabled","primaryButtonTextDisabled","pinchZoom","maxZoomLevel","minZoomLevel","zoomStep","colorOpacity","checkered","centered","horizontalGap","verticalGap","density","baseRadius","editOn","multiLine","dRadius","dInnerRadius","getFillFromSprite","getStrokeFromSprite","spikes","rotationStep","Animated","AnimatedTheme","exports","Client","require","common","CaravanHealthPatientId","ssoType","CaravanHealthPatientInTierPrivacyPartition","IdentifierProviderId","CaravanHealthPatientInHierarchyNodeDevEnvironment","CaravanHealthPatientInHierarchyNodeQAEnvironment","CaravanHealthPatientInHierarchyNodeDemoEnvironment","CaravanHealthSmsCarePlanPhoneNumber","isNotRequired","isNotUnique","EnvironmentId","CoachAppIdEnum","ComponentIdEnum","TwilioFlow","daily","mwf","weekly","biweekly","monthly","isWebContentTask","isActivityTask","isTaskRuleActionAlert","isTaskRuleActionTemplated","isTaskRuleActionUpdateTask","__createBinding","__esModule","__exportStar","AngularFrameworkOverrides","VanillaFrameworkOverrides","setEmitterUsedCallback","isEmitterUsed","AgPromise","isOutsideAngular","isInAngularZone","isFrameworkComponent","comp","AngularFrameworkComponentWrapper","BaseComponentWrapper","setViewContainerRef","setComponentFactoryResolver","createWrapper","OriginalConstructor","DynamicAgNg2Component","BaseGuiComponent","_componentRef","hasMethod","getFrameworkComponentInstance","callMethod","addMethod","ɵAngularFrameworkComponentWrapper_BaseFactory","_params","_agAwareComponent","_frameworkComponentInstance","_eGui","getGui","AgGridAngular","elementDef","angularFrameworkOverrides","frameworkComponentWrapper","_initialised","_fullyReady","statusBar","sideBar","suppressContextMenu","preventDefaultOnContextMenu","allowContextMenuWithControlKey","suppressMenuHide","enableBrowserTooltips","tooltipShowDelay","tooltipHideDelay","tooltipMouseTrack","popupParent","copyHeadersToClipboard","copyGroupHeadersToClipboard","clipboardDelimiter","suppressCopyRowsToClipboard","suppressCopySingleCellRanges","suppressLastEmptyLineOnPaste","suppressClipboardPaste","suppressClipboardApi","suppressCutToClipboard","defaultColGroupDef","columnTypes","maintainColumnOrder","suppressFieldDotNotation","headerHeight","groupHeaderHeight","floatingFiltersHeight","pivotHeaderHeight","pivotGroupHeaderHeight","allowDragFromColumnsToolPanel","suppressMovableColumns","suppressColumnMoveAnimation","suppressDragLeaveHidesColumns","suppressRowGroupHidesColumns","colResizeDefault","autoSizePadding","skipHeaderOnAutoSize","editType","singleClickEdit","suppressClickEdit","readOnlyEdit","stopEditingWhenCellsLoseFocus","enterMovesDown","enterMovesDownAfterEdit","enableCellEditingOnBackspace","undoRedoCellEditing","undoRedoCellEditingLimit","defaultCsvExportParams","suppressCsvExport","defaultExcelExportParams","suppressExcelExport","excelStyles","quickFilterText","cacheQuickFilter","excludeHiddenColumnsFromQuickFilter","excludeChildrenWhenTreeDataFiltering","enableCharts","chartThemes","customChartThemes","chartThemeOverrides","enableChartToolPanelsButton","suppressChartToolPanelsButton","chartToolPanelsDef","loadingCellRenderer","loadingCellRendererFramework","loadingCellRendererParams","loadingCellRendererSelector","keepDetailRows","keepDetailRowsCount","detailCellRenderer","detailCellRendererFramework","alignedGrids","rowBuffer","valueCache","valueCacheNeverExpires","enableCellExpressions","suppressParentsInRowNodes","suppressTouch","suppressFocusAfterRefresh","suppressAsyncEvents","suppressBrowserResizeObserver","suppressPropertyNamesCheck","suppressChangeDetection","overlayLoadingTemplate","loadingOverlayComponent","loadingOverlayComponentFramework","loadingOverlayComponentParams","suppressLoadingOverlay","overlayNoRowsTemplate","noRowsOverlayComponent","noRowsOverlayComponentFramework","noRowsOverlayComponentParams","suppressNoRowsOverlay","pagination","paginationPageSize","paginationAutoPageSize","paginateChildRows","suppressPaginationPanel","pivotMode","pivotPanelShow","pivotColumnGroupTotals","pivotRowTotals","pivotSuppressAutoColumn","suppressExpandablePivotGroups","functionsReadOnly","aggFuncs","suppressAggFuncInHeader","suppressAggAtRootLevel","aggregateOnlyChangedColumns","suppressAggFilteredOnly","removePivotHeaderRowWhenSingleValueColumn","animateRows","enableCellChangeFlash","cellFlashDelay","cellFadeDelay","allowShowChangeAfterFilter","ensureDomOrder","enableRtl","suppressColumnVirtualisation","suppressMaxRenderedRowRestriction","suppressRowVirtualisation","rowDragManaged","suppressRowDrag","suppressMoveWhenRowDragging","rowDragEntireRow","rowDragMultiRow","rowDragText","fullWidthCellRenderer","fullWidthCellRendererFramework","fullWidthCellRendererParams","embedFullWidthRows","groupDisplayType","autoGroupColumnDef","groupMaintainOrder","groupSelectsChildren","groupAggFiltering","groupIncludeFooter","groupIncludeTotalFooter","groupSuppressBlankHeader","groupSelectsFiltered","showOpenedGroup","groupRemoveSingleChildren","groupRemoveLowestSingleChildren","groupHideOpenParents","groupAllowUnbalanced","rowGroupPanelShow","groupRowRenderer","groupRowRendererFramework","groupRowRendererParams","suppressMakeColumnVisibleAfterUnGroup","treeData","rowGroupPanelSuppressSort","groupRowsSticky","rememberGroupStateWhenNewData","pinnedTopRowData","pinnedBottomRowData","rowModelType","immutableData","asyncTransactionWaitMillis","suppressModelUpdateAfterUpdateTransaction","datasource","cacheOverflowSize","infiniteInitialRowCount","serverSideInitialRowCount","serverSideStoreType","suppressServerSideInfiniteScroll","cacheBlockSize","maxBlocksInCache","maxConcurrentDatasourceRequests","blockLoadDebounceMillis","purgeClosedRowNodes","serverSideDatasource","serverSideSortAllLevels","serverSideFilterAllLevels","serverSideSortOnServer","serverSideFilterOnServer","serverSideSortingAlwaysResets","serverSideFilteringAlwaysResets","viewportDatasource","viewportRowModelPageSize","viewportRowModelBufferSize","alwaysShowHorizontalScroll","alwaysShowVerticalScroll","debounceVerticalScrollbar","suppressHorizontalScroll","suppressScrollOnNewData","suppressScrollWhenPopupsAreOpen","suppressAnimationFrame","suppressMiddleClickScrolls","suppressPreventDefaultOnMouseWheel","scrollbarWidth","rowMultiSelectWithClick","suppressRowDeselection","suppressRowClickSelection","suppressCellSelection","suppressCellFocus","suppressMultiRangeSelection","enableCellTextSelection","enableRangeSelection","enableRangeHandle","enableFillHandle","fillHandleDirection","suppressClearOnFillReduction","sortingOrder","accentedSort","unSortIcon","suppressMultiSort","alwaysMultiSort","multiSortKey","suppressMaintainUnsortedOrder","rowStyle","rowClassRules","suppressRowHoverHighlight","suppressRowTransform","columnHoverHighlight","deltaSort","treeDataDisplayType","functionsPassive","enableGroupEdit","getContextMenuItems","getMainMenuItems","postProcessPopup","processCellForClipboard","processHeaderForClipboard","processGroupHeaderForClipboard","processCellFromClipboard","sendToClipboard","processDataFromClipboard","isExternalFilterPresent","doesExternalFilterPass","getChartToolbarItems","createChartContainer","navigateToNextHeader","tabToNextHeader","navigateToNextCell","tabToNextCell","localeTextFunc","getLocaleText","paginationNumberFormatter","groupRowAggNodes","getGroupRowAgg","isGroupOpenByDefault","initialGroupOrderComparator","defaultGroupOrderComparator","processSecondaryColDef","processSecondaryColGroupDef","processPivotResultColDef","processPivotResultColGroupDef","getDataPath","getChildCount","getServerSideGroupLevelParams","getServerSideStoreParams","isServerSideGroupOpenByDefault","isApplyServerSideTransaction","isServerSideGroup","getServerSideGroupKey","getBusinessKeyForNode","getRowNodeId","getRowId","resetRowDataOnUpdate","processRowPostCreate","fillOperation","postSort","postSortRows","getRowStyle","getRowClass","getRowHeight","isFullWidthCell","isFullWidthRow","toolPanelVisibleChanged","toolPanelSizeChanged","pasteStart","pasteEnd","columnVisible","columnPinned","columnResized","columnMoved","columnValueChanged","columnPivotModeChanged","columnPivotChanged","columnGroupOpened","newColumnsLoaded","gridColumnsChanged","displayedColumnsChanged","virtualColumnsChanged","componentStateChanged","cellValueChanged","cellEditRequest","rowValueChanged","cellEditingStarted","cellEditingStopped","rowEditingStarted","rowEditingStopped","undoStarted","undoEnded","redoStarted","redoEnded","filterOpened","filterModified","chartCreated","chartRangeSelectionChanged","chartOptionsChanged","chartDestroyed","cellKeyDown","cellKeyPress","gridReady","firstDataRendered","gridSizeChanged","modelUpdated","virtualRowRemoved","viewportChanged","bodyScroll","bodyScrollEnd","dragStarted","dragStopped","paginationChanged","rowDragEnter","rowDragMove","rowDragLeave","rowDragEnd","columnRowGroupChanged","rowGroupOpened","expandOrCollapseAll","pinnedRowDataChanged","rowDataChanged","rowDataUpdated","asyncTransactionsFlushed","storeRefreshed","cellClicked","cellDoubleClicked","cellFocused","cellMouseOver","cellMouseOut","cellMouseDown","rowClicked","rowDoubleClicked","rowSelected","cellContextMenu","rangeSelectionChanged","sortChanged","columnRowGroupChangeRequest","columnPivotChangeRequest","columnValueChangeRequest","columnAggFuncChangeRequest","_nativeElement","gridOptions","ComponentUtil","copyAttributesToGridOptions","gridParams","globalEventListener","frameworkOverrides","providedBeanInstances","resolveNow","processOnChange","hasEmitter","asEventName","makeNull","allowEmptyString","missingOrEmpty","toStringOrNull","attrToNumber","valueParsed","attrToBoolean","arr_1","GenericUtils","attrToString","referenceCompare","jsonEquals","val1","val2","defaultComparator","accentedCompare","valueAMissing","valueBMissing","doQuickCompare","ColumnKeyCreator","existingKeys","addExistingKeys","getUniqueKey","colField","idToTry","iterateObject","cloneObject","deepCloneDefinition","keysToSkip","sourceIsSimpleObject","getProperty","copyPropertyIfPresent","getAllKeysInObjects","getAllValuesInObject","anyObject","ret","mergeDeep","dest","copyUndefined","makeCopyOfSimpleObjects","sourceValue","destValue","getValueUsingField","fieldContainsDots","currentObject","removeAllReferences","objectName","ObjectUtils","deepCloneObject","copyPropertiesIfPresent","missingOrEmptyObject","expression","objectToRead","objectToUpdate","doOnceFlags","doOnce","getFunctionName","funcConstructor","executeInAWhile","funcs","executeAfter","executeNextVMTurnFuncs","executeNextVMTurnPending","executeNextVMTurn","funcsCopy","previousCall","currentCall","waitUntil","condition","timeoutMessage","executed","internalCallback","reachedTimeout","callIfPresent","FunctionUtils","compose","fns","composed","__read$w","ar","Context","beanWrappers","beanClasses","contextParams","createBeans","beanInstances","getBeanInstances","wireBeans","beanEntry","beanInstance","createBean","bean","afterPreCreateCallback","autoWireBeans","methodWireBeans","callLifeCycleMethods","createBeanWrapper","constructorParamsMeta","__agBeanMetaData","autowireMethods","agConstructor","constructorParams","getBeansForParameters","newInstance","__spread$p","createdBeanNames","BeanClass","metaData","beanName","forEachMetaDataInHierarchy","agClassAttributes","otherBean","lookupBeanInstance","wireParams","initParams","getBeanName","constructorString","beansList","paramIndex","otherBeanName","wiringBean","lifeCycleMethod","callLifeCycleMethodsOnBean","methodToIgnore","allMethods","getBean","destroyBeans","destroyBean","beans","PreConstruct","getOrCreateProps$1","preConstructMethods","PostConstruct","postConstructMethods","PreDestroy","preDestroyMethods","Bean","classConstructor","Autowired","propertyKey","autowiredFunc","Optional","classPrototype","methodOrAttributeName","Qualifier","__decorate$2z","decorators","Reflect","decorate","__param$a","decorator","EventService","allSyncListeners","allAsyncListeners","globalSyncListeners","globalAsyncListeners","asyncFunctionsQueue","scheduled","firedEvents","setBeans","loggerFactory","gridOptionsService","useAsyncEvents","addGlobalListener","getListeners","autoCreateListenerCollection","listenerMap","noRegisteredListenersExist","removeGlobalListener","agEvent","dispatchToListeners","dispatchEventOnce","browserEvent","eventPath","dispatchAsync","flushAsyncQueue","queueCopy","ModuleNames","CommunityCoreModule","InfiniteRowModelModule","ClientSideRowModelModule","CsvExportModule","EnterpriseCoreModule","RowGroupingModule","ColumnsToolPanelModule","FiltersToolPanelModule","MenuModule","SetFilterModule","MultiFilterModule","StatusBarModule","SideBarModule","RangeSelectionModule","MasterDetailModule","RichSelectModule","GridChartsModule","ViewportRowModelModule","ServerSideRowModelModule","ExcelExportModule","ClipboardModule","SparklinesModule","AngularModule","ReactModule","VueModule","ModuleRegistry","moduleBased","runVersionChecks","modulesMap","moduleName","setModuleBased","currentModuleVersion","setIsBundled","isBundled","registerModules","assertRegistered","isRegistered","warningMessage","warningKey","modName","__read$v","getRegisteredModules","isPackageBased","__decorate$2y","__read$u","instanceIdSequence$4","getNextColInstanceId","userProvidedColDef","instanceId","autoHeaderHeight","moving","menuVisible","filterActive","eventService","tooltipEnabled","rowGroupActive","pivotActive","aggregationActive","getInstanceId","initialSort","initialSortIndex","initialHide","setPinned","pinned","initialPinned","initialFlex","setColDef","initMinAndMaxWidths","initDotNotation","createColumnEvent","getUserProvidedColDef","setParent","setOriginalParent","originalParent","getOriginalParent","initialise","resetActualWidth","initTooltip","suppressDotNotation","tooltipFieldContainsDots","columnUtils","calculateColMinWidth","calculateColMaxWidth","tooltipValueGetter","tooltipComponent","tooltipComponentFramework","initialWidth","calculateColInitialWidth","setActualWidth","isEmptyGroup","isRowGroupDisplayed","showRowGroup","isPrimary","isFilterAllowed","filterFramework","isFieldContainsDots","isTooltipEnabled","isTooltipFieldContainsDots","colDefAny","warnOnce","isRowModelType","itemsUsed","cellEditor","isTreeData","menuTabs","communityMenuTabs_1","enterpriseMenuTabs_1","__spread$o","columnsMenuParams","pinnedRowCellRenderer","pinnedRowCellRendererParams","pinnedRowCellRendererFramework","columnGroupShow","createColumnFunctionCallbackParams","isSuppressNavigable","suppressNavigable","userFunc","isCellEditable","isColumnFunc","isSuppressFillHandle","suppressFillHandle","isAutoHeight","isAutoHeaderHeight","isRowDrag","rowDrag","isDndSource","dndSource","isCellCheckboxSelection","isSuppressPaste","suppressPaste","isResizable","setMoving","isMoving","getSort","setMenuVisible","isMenuVisible","isSortAscending","isSortDescending","isSortNone","isSorting","getSortIndex","setSortIndex","sortOrder","setAggFunc","aggFunc","getAggFunc","getLeft","getOldLeft","oldLeft","getRight","actualWidth","setLeft","isFilterActive","setFilterActive","additionalEventAttributes","filterChangedEvent","isHovered","columnHoverService","setFirstRightPinned","firstRightPinned","setLastLeftPinned","lastLeftPinned","isFirstRightPinned","isLastLeftPinned","isPinnedLeft","isPinnedRight","getPinned","setVisible","isSpanHeaderHeight","spanHeaderHeight","getColumnGroupShow","getId","getDefinition","getActualWidth","getAutoHeaderHeight","setAutoHeaderHeight","createBaseColDefParams","getColSpan","colSpan","getRowSpan","rowSpan","silent","fireColumnWidthChangedEvent","isGreaterThanMax","getMinWidth","getMaxWidth","getFlex","setFlex","setMinimum","setRowGroupActive","rowGroup","isRowGroupActive","setPivotActive","isPivotActive","isAnyFunctionActive","isValueActive","isAnyFunctionAllowed","isAllowPivot","isAllowRowGroup","isAllowValue","setValueActive","enablePivot","enableValue","enableRowGroup","getMenuTabs","EVENT_MOVING_CHANGED","EVENT_LEFT_CHANGED","EVENT_WIDTH_CHANGED","EVENT_LAST_LEFT_PINNED_CHANGED","EVENT_FIRST_RIGHT_PINNED_CHANGED","EVENT_VISIBLE_CHANGED","EVENT_FILTER_CHANGED","EVENT_FILTER_ACTIVE_CHANGED","EVENT_SORT_CHANGED","EVENT_COL_DEF_CHANGED","EVENT_MENU_VISIBLE_CHANGED","EVENT_ROW_GROUP_CHANGED","EVENT_PIVOT_CHANGED","EVENT_VALUE_CHANGED","ProvidedColumnGroup","colGroupDef","groupId","localEventService","expandable","expandableListenerRemoveCallback","openByDefault","getLevel","isPadding","EVENT_EXPANDED_CHANGED","isExpandable","isExpanded","getGroupId","setChildren","getChildren","getColGroupDef","getLeafColumns","addLeafColumns","leafColumns","setupExpandable","setExpandable","onColumnVisibilityChanged","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","findChildrenRemovingPadding","abstractColumn","headerGroupShow","EVENT_EXPANDABLE_CHANGED","__decorate$2x","DefaultColumnTypes","numericColumn","rightAligned","firstExistingValue","areEqual","sortNumerically","removeFromArray","removeAllFromArray","insertIntoArray","moveInArray","objectsToMove","arrayOfArrays","ArrayUtils","existsAndNotEmpty","shallowCompare","removeRepeatsFromArray","insertArrayIntoArray","toStrings","forEachReverse","AG_GRID_STOP_PROPAGATION","PASSIVE_EVENTS$1","stopPropagationForAgGrid","isStopPropagationForAgGrid","isEventSupported","getCtrlForEventTarget","sourceElement","renderedComp","getDomData","isElementInEventPath","getEventPath","createEventPath","eventNoType","addSafePassiveEventListener","eElement","isPassive","EventUtils","__decorate$2w","BeanStub","destroyFunctions","__v_skip","isAlive","getFrameworkOverrides","EVENT_DESTROYED","dispatchEventAsync","addManagedListener","destroyFunc","addManagedPropertyListener","addDestroyFunc","createManagedBean","__extends$2S","extendStatics","__decorate$2v","__param$9","ColumnFactory","createColumnTree","primaryColumns","existingTree","columnKeyCreator","extractExistingTreeData","existingCols","existingGroups","existingColKeys","unbalancedTree","recursivelyCreateColumns","treeDept","findMaxDept","columnTree","balanceColumnTree","depthFirstOriginalTreeSearch","createForAutoGroups","autoGroupCols","gridBalancedTree","createAutoGroupTreeItem","balancedColumnTree","nextChild","findDepth","autoGroup","dept","currentDept","columnDept","originalGroup","newChildren","firstPaddedGroup","currentPaddedGroup","newColId","colGroupDefMerged","createMergedColGroupDef","paddedGroup","leaf","treeChildren","maxDeptThisLevel","newDept","existingColsCopy","isColumnGroup","createColumnGroup","createColumn","existingColumns","providedGroup","existingGroup","findExistingGroup","colDefMerged","mergeColDefs","findExistingColumn","widthBeforeUpdate","newColDef","existingCol","existingColDef","newHasField","newGroupDef","columnType","assignColumnTypes","autoGroupColDef","isSortingCoupled","isColumnsSortingCoupledToGroup","typeKeys","allColumnTypes","typeColDef","abstractColDef","ColDefUtil","ColDefPropertyMap","toolPanelClass","headerValueGetter","pivotKeys","initialAggFunc","defaultAggFunc","chartDataType","cellEditorPopupPosition","headerGroupComponent","headerGroupComponentFramework","headerGroupComponentParams","cellEditorFramework","cellEditorParams","pivotValueColumn","headerComponent","headerComponentFramework","headerComponentParams","floatingFilterComponent","floatingFilterComponentParams","floatingFilterComponentFramework","tooltipComponentParams","refData","allowedAggFuncs","pivotTotalColumnIds","cellClassRules","rowGroupIndex","initialRowGroupIndex","pivotIndex","initialPivotIndex","suppressCellFlash","suppressColumnsToolPanel","suppressFiltersToolPanel","marryChildren","stickyLabel","initialRowGroup","initialPivot","showDisabledCheckboxes","headerCheckboxSelectionCurrentPageOnly","suppressMovable","lockPosition","lockVisible","lockPinned","floatingFilter","cellEditorPopup","wrapHeaderText","dndSourceOnRowDrag","valueSetter","filterValueGetter","valueParser","pivotComparator","suppressKeyboardEvent","suppressHeaderKeyboardEvent","onCellValueChanged","onCellDoubleClicked","onCellContextMenu","cellRendererSelector","cellEditorSelector","ALL_PROPERTIES","FRAMEWORK_PROPERTIES","EVENT_COLUMN_EVERYTHING_CHANGED","EVENT_NEW_COLUMNS_LOADED","EVENT_COLUMN_PIVOT_MODE_CHANGED","EVENT_COLUMN_ROW_GROUP_CHANGED","EVENT_EXPAND_COLLAPSE_ALL","EVENT_COLUMN_PIVOT_CHANGED","EVENT_GRID_COLUMNS_CHANGED","EVENT_COLUMN_VALUE_CHANGED","EVENT_COLUMN_MOVED","EVENT_COLUMN_VISIBLE","EVENT_COLUMN_PINNED","EVENT_COLUMN_GROUP_OPENED","EVENT_COLUMN_RESIZED","EVENT_DISPLAYED_COLUMNS_CHANGED","EVENT_VIRTUAL_COLUMNS_CHANGED","EVENT_ASYNC_TRANSACTIONS_FLUSHED","EVENT_ROW_GROUP_OPENED","EVENT_ROW_DATA_CHANGED","EVENT_ROW_DATA_UPDATED","EVENT_PINNED_ROW_DATA_CHANGED","EVENT_RANGE_SELECTION_CHANGED","EVENT_CHART_CREATED","EVENT_CHART_RANGE_SELECTION_CHANGED","EVENT_CHART_OPTIONS_CHANGED","EVENT_CHART_DESTROYED","EVENT_TOOL_PANEL_VISIBLE_CHANGED","EVENT_TOOL_PANEL_SIZE_CHANGED","EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED","EVENT_COLUMN_PANEL_ITEM_DRAG_START","EVENT_COLUMN_PANEL_ITEM_DRAG_END","EVENT_MODEL_UPDATED","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_FILL_START","EVENT_FILL_END","EVENT_UNDO_STARTED","EVENT_UNDO_ENDED","EVENT_REDO_STARTED","EVENT_REDO_ENDED","EVENT_KEY_SHORTCUT_CHANGED_CELL_START","EVENT_KEY_SHORTCUT_CHANGED_CELL_END","EVENT_CELL_CLICKED","EVENT_CELL_DOUBLE_CLICKED","EVENT_CELL_MOUSE_DOWN","EVENT_CELL_CONTEXT_MENU","EVENT_CELL_VALUE_CHANGED","EVENT_CELL_EDIT_REQUEST","EVENT_ROW_VALUE_CHANGED","EVENT_CELL_FOCUSED","EVENT_CELL_FOCUS_CLEARED","EVENT_FULL_WIDTH_ROW_FOCUSED","EVENT_ROW_SELECTED","EVENT_SELECTION_CHANGED","EVENT_CELL_KEY_DOWN","EVENT_CELL_KEY_PRESS","EVENT_CELL_MOUSE_OVER","EVENT_CELL_MOUSE_OUT","EVENT_FILTER_MODIFIED","EVENT_FILTER_OPENED","EVENT_VIRTUAL_ROW_REMOVED","EVENT_ROW_CLICKED","EVENT_ROW_DOUBLE_CLICKED","EVENT_GRID_READY","EVENT_GRID_SIZE_CHANGED","EVENT_VIEWPORT_CHANGED","EVENT_SCROLLBAR_WIDTH_CHANGED","EVENT_FIRST_DATA_RENDERED","EVENT_DRAG_STARTED","EVENT_DRAG_STOPPED","EVENT_CHECKBOX_CHANGED","EVENT_ROW_EDITING_STARTED","EVENT_ROW_EDITING_STOPPED","EVENT_CELL_EDITING_STARTED","EVENT_CELL_EDITING_STOPPED","EVENT_BODY_SCROLL","EVENT_BODY_SCROLL_END","EVENT_HEIGHT_SCALE_CHANGED","EVENT_PAGINATION_CHANGED","EVENT_COMPONENT_STATE_CHANGED","EVENT_STORE_REFRESHED","EVENT_BODY_HEIGHT_CHANGED","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","EVENT_SCROLL_VISIBILITY_CHANGED","EVENT_COLUMN_HOVER_CHANGED","EVENT_FLASH_CELLS","EVENT_PAGINATION_PIXEL_OFFSET_CHANGED","EVENT_DISPLAYED_ROWS_CHANGED","EVENT_LEFT_PINNED_WIDTH_CHANGED","EVENT_RIGHT_PINNED_WIDTH_CHANGED","EVENT_ROW_CONTAINER_HEIGHT_CHANGED","EVENT_HEADER_HEIGHT_CHANGED","EVENT_COLUMN_HEADER_HEIGHT_CHANGED","EVENT_ROW_DRAG_ENTER","EVENT_ROW_DRAG_MOVE","EVENT_ROW_DRAG_LEAVE","EVENT_ROW_DRAG_END","EVENT_GRID_STYLES_CHANGED","EVENT_POPUP_TO_FRONT","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","EVENT_COLUMN_VALUE_CHANGE_REQUEST","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","EVENT_KEYBOARD_FOCUS","EVENT_MOUSE_FOCUS","EVENT_STORE_UPDATED","EVENT_FILTER_DESTROYED","__read$t","__spread$n","PropertyKeys","STRING_PROPERTIES","OBJECT_PROPERTIES","ARRAY_PROPERTIES","NUMBER_PROPERTIES","BOOLEAN_PROPERTIES","FUNCTION_PROPERTIES","FUNCTIONAL_PROPERTIES","CALLBACK_PROPERTIES","__assign$l","__read$s","getCallbackForEvent","getCoercionLookup","coercionLookup","__spread$m","EVENT_CALLBACKS","rawValue","coercionStep","getGridOptionKeys","isVue","pGridOptions","coercedValue","changesToApply","setColumnTypes","setAutoGroupColumnDef","setDefaultColDef","__setProperty","EVENTS","EXCLUDED_INTERNAL_EVENTS","PUBLIC_EVENTS","ALL_PROPERTIES_SET","fuzzyCheckStrings","inputValues","validValues","allSuggestions","fuzzyMatches","invalidInputs","inputValue","validValue","invalidInput","fuzzySuggestions","hideIrrelevant","filterByPercentageOfBestMatch","thisSuggestions","relevance","stringWeightedDistances","toLocaleLowerCase","suggestion","limit_1","str1","str2","FuzzyMatchUtils","__decorate$2u","__read$r","__spread$l","logDeprecation","oldProp","newProp","newPropMsg","GridOptionsValidator","deprecatedProperties","serverSideInfiniteScroll","suppressEnterpriseResetOnNewColumns","suppressColumnStateEvents","defaultExportParams","stopEditingWhenGridLosesFocus","copyToNewProp","applyColumnDefOrder","groupMultiAutoColumn","newPropValue","groupUseEntireRow","defaultGroupSortComparator","enableMultiRowDragging","colWidth","minColWidth","maxColWidth","reactUi","clipboardDeliminator","suppressReactUi","onColumnRowGroupChangeRequest","onColumnPivotChangeRequest","onColumnValueChangeRequest","onColumnAggFuncChangeRequest","pickOneWarning","prop1","prop2","checkForDeprecated","checkForViolations","checkGridOptionsProperties","checkColumnDefProperties","checkColumnDefViolations","alt","validateRegistered","validProperties","validateColDef","userProperties","checkProperties","rowModel","unsupportedProperties","infinite","viewport","serverSide","clientSide","validPropertiesAndExceptions","containerName","docsUrl","invalidProperties","oldPropValue","groupSuppressAutoColumn","treeDataViolations","matchesGroupDisplayType","toMatch","supplied","groupDisplayTypeValues","ColumnGroup","providedColumnGroup","partId","displayedChildren","createUniqueId","allLeafColumns","getProvidedColumnGroup","checkLeft","lastChildLeft","firstChildLeft","createAgEvent","getPartId","isChildInThisGroupDeepSearch","wantedChild","foundChild","groupActualWidth","groupChild","getDisplayedChildren","getDisplayedLeafColumns","addDisplayedLeafColumns","getOriginalColumnGroup","getPaddingLevel","calculateDisplayedColumns","parentWithExpansion","EVENT_DISPLAYED_CHILDREN_CHANGED","__decorate$2t","GroupInstanceIdCreator","existingIds","getInstanceIdForKey","lastResult","__extends$2R","__decorate$2s","GROUP_AUTO_COLUMN_ID","AutoGroupColService","createAutoGroupColumns","rowGroupColumns","groupAutoColumns","doingTreeData","doingMultiAutoColumn","isGroupMultiAutoColumn","rowGroupCol","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","columnFactory","newCol","userDef","localeService","getLocaleTextFunc","columnModel","getDisplayNameForColumn","innerRenderer","innerRendererFramework","innerRendererParams","reUnescapedHtml","HTML_ESCAPES","capitalise","escapeString","toEscape","skipEscapingHtmlChars","stringResult","chr","camelCaseToHumanText","camelCase","StringUtils","utf8_encode","stringFromCharCode","createByte","encodeCodePoint","checkScalarValue","codePoints","ucs2decode","byteString","MapUtils","mapById","__extends$2Q","__decorate$2r","__param$8","__values$6","__read$q","__spread$k","ColumnModel","primaryHeaderRowCount","secondaryHeaderRowCount","gridHeaderRowCount","displayedColumnsLeft","displayedColumnsRight","displayedColumnsCenter","displayedColumns","displayedColumnsAndGroupsMap","viewportColumns","viewportColumnsHash","headerViewportColumns","viewportColumnsCenter","headerViewportColumnsCenter","autoHeightActiveAtLeastOnce","valueColumns","pivotColumns","autoGroupsNeedBuilding","forceRecreateAutoGroups","bodyWidth","leftWidth","rightWidth","bodyWidthDirty","isPivotSettingAllowed","usingTreeData","onAutoGroupColumnDefChanged","onSharedColDefChanged","updateGridColumns","updateDisplayedColumns","createColumnsFromColumnDefs","colsPreviouslyExisted","destroyOldColumns","oldTree","newTree","oldObjectsById","colsToDestroy","destroyColumns","primaryColumnTree","secondaryBalancedTree","groupAutoColsBalancedTree","dispatchEventsFunc","compareColumnStatesAndDispatchEvents","expire","oldPrimaryColumns","balancedTreeResult","getColumnsFromTree","primaryColumnsMap","extractRowGroupColumns","extractPivotColumns","extractValueColumns","gridColsArePrimary","orderGridColumnsLikePrimary","checkViewportColumns","dispatchEverythingChanged","dispatchNewColumnsLoaded","gridColumns","colA","colB","primaryIndexA","primaryIndexB","indexAPresent","indexBPresent","placeLockedColumns","getAllDisplayedAutoHeightCols","displayedAutoHeightCols","setViewport","viewportLeft","scrollPosition","scrollWidth","viewportRight","getDisplayedColumnsStartingAt","currentColumn","getDisplayedColAfter","extractViewport","setViewportPosition","isPivotMode","setPivotMode","getSecondaryPivotColumn","valueColKey","secondaryColumns","valueColumnToFind","getPrimaryColumn","foundColumn","thisPivotKeys","setFirstRightAndLastLeftPinned","lastLeft","firstRight","skipHeader","skipHeaderGroups","stopAtGroup","animationFrameService","flushAllFrames","columnsAutosized","changesThisTimeAround","shouldSkipHeader","shouldSkipHeaderGroups","actionOnGridColumns","preferredWidth","autoWidthCalculator","getPreferredWidthForColumn","normaliseColumnWidth","autoSizeColumnGroupsByColumns","dispatchColumnResizedEvent","finished","flexColumns","dispatchColumnChangedEvent","dispatchColumnMovedEvent","movedColumns","dispatchColumnPinnedEvent","changedColumns","getCommonValue","dispatchColumnVisibleEvent","autoSizeColumn","headerGroupCtrl","columnGroups","getGridColumns","columnGroups_1","columnGroups_1_1","columnGroup","ctrlsService","getHeaderRowContainerCtrls","getHeaderCtrlForColumn","resizeLeafColumnsToFit","autoSizeAllColumns","allDisplayedColumns","getAllDisplayedColumns","rootColumns","recursiveFindColumns","childColumns","getAllDisplayedTrees","displayedTreeLeft","displayedTreeRight","displayedTreeCentre","getPrimaryColumnTree","getHeaderRowCount","getDisplayedTreeLeft","getDisplayedTreeRight","getDisplayedTreeCentre","isColumnDisplayed","getViewportColumns","getDisplayedLeftColumnsForRow","colSpanActive","getDisplayedColumnsForRow","getDisplayedRightColumnsForRow","isColSpanActive","filterCallback","emptySpaceBeforeColumn","out_i_1","lastConsideredCol","filterPasses","maxAllowedColSpan","columnsToCheckFilter","colsToRemove","colForFilter","getViewportCenterColumnsForRow","isColumnInRowViewport","getAriaColumnIndex","getAllGridColumns","isColumnInHeaderViewport","columnLeft","columnRight","leftBounds","rightBounds","getDisplayedColumnsLeftWidth","getWidthOfColsInList","getDisplayedColumnsRightWidth","updatePrimaryColumnList","masterList","actionIsAdd","columnCallback","atLeastOne","columnToAdd","setRowGroupColumns","colKeys","setPrimaryColumnList","setColumnVisible","addRowGroupColumn","addRowGroupColumns","removeRowGroupColumns","removeRowGroupColumn","addPivotColumns","setPivotColumns","addPivotColumn","removePivotColumns","removePivotColumn","setValueColumns","aggFuncService","getDefaultAggFunc","addValueColumns","addValueColumn","colKey","removeValueColumn","removeValueColumns","getPrimaryOrGridColumn","getGridColumn","setColumnWidths","ratios","otherCol","widthDiff","otherColWidth","resizeColumnSets","resizeSets","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","changedCols","allResizedCols","newWidths","finishedCols","finishedColsGrew","loopCount","subsetCols","subsetRatioTotal","pixelsToDistribute","ratioScale","colNewWidth","atLeastOneColChanged","flexedCols","refreshFlexedColumns","resizingCols","skipSetLeft","setLeftValues","updateBodyWidths","colsForEvent","setColumnAggFunc","moveRowGroupColumn","fromIndex","moveColumns","columnsToMoveKeys","columnAnimationService","doesMovePassRules","columnsToMove","proposedColumnOrder","getProposedColumnOrder","doesOrderPassRules","gridOrder","doesMovePassMarryChildren","doesMovePassLockedPositions","sortColumnsLikeGridColumns","lastPlacement","rulePassed","lockPositionToPlacement","allColumnsCopy","newIndexes","newColIndex","moveColumn","moveColumnByIndex","lastPrimaryOrder","columnDefFactory","buildColumnDefs","getBodyContainerWidth","getContainerWidth","newBodyWidth","newLeftWidth","newRightWidth","getValueColumns","getPivotColumns","getRowGroupColumns","getDisplayedCenterColumns","getDisplayedLeftColumns","getDisplayedRightColumns","getDisplayedColumns","getAllPrimaryColumns","getSecondaryColumns","getAllColumnsForQuickFilter","columnsForQuickFilter","isRowGroupEmpty","setColumnsVisible","setColumnPinned","setColumnsPinned","actualPinned","isDomLayout","updatedColumns","event_3","getDisplayedColBefore","getDisplayedGroupAfter","getDisplayedGroupAtDirection","getDisplayedGroupBefore","requiredLevel","colGroupLeafColumns","getDisplayColMethod","groupPointer","getColumnGroupAtLevel","isPinningLeft","isPinningRight","getPrimaryAndSecondaryAndAutoColumns","createStateItemFromColumn","orderColumnStateList","columnStateList","colIdToGridIndexMap","itemA","itemB","columnStates","letRowGroupIndex","letPivotIndex","colsToProcess","getValueOrNull","stateItem","applyOrder","applyStates","getById","columnsWithNoState","rowGroupIndexes","pivotIndexes","autoGroupColumnStates","unmatchedAndAutoStates","unmatchedCount","previousRowGroupCols","previousPivotCols","syncColumnWithStateItem","applyDefaultsFunc","indexes","oldList","aHasIndex","bHasIndex","oldIndexA","oldIndexB","aHasOldIndex","autoGroupColsCopy","autoCol","getAutoColumn","applyOrderAfterApplyState","getSecondaryColumn","newOrder","processedColIds","gridColumnsMap","autoGroupInsertIndex","startState","columnStateBefore","columnStateBeforeMap","colsForState","dispatchWhenListsDifferent","colsBefore","colsAfter","idMapper","getChangedColumns","changedPredicate","colStateBefore","columnIdMapper","oldActive","activeChanged","aggFuncChanged","sortController","dispatchSortChangedEvents","normaliseColumnMovedEventForColumnState","firstValue","colStateAfter","colStateAfterMapped","colsIntersectIds","beforeFiltered","afterFiltered","csAfter","csBefore","gridCol","value2","columnLookupCallback","foundColumns","getColumnWithValidation","secondaryColumnsMap","columnList","columnMap","columnsMatch","getSourceColumnsForGroupColumn","groupCol","sourceColumnId","columnMatches","colDefMatches","idMatches","includeAggFunc","getHeaderName","wrapHeaderNameWithAggFunc","getDisplayNameForProvidedColumnGroup","getDisplayNameForColumnGroup","expressionService","evaluate","aggFuncFound","isCollapsedHeaderEnabled","isTotalColumn","measureActive","aggregationPresent","aggFuncString","getColumnGroup","allColumnGroups","checkPartId","depthFirstAllColumnTreeSearch","extractColumns","previousCols","setFlagFunc","getIndexFunc","getInitialIndexFunc","getValueFunc","getInitialValueFunc","colsWithIndex","colsWithValue","colIsNew","initialValue","initialIndex","getIndexForCol","defaultIndex","resetColumnGroupState","stateItems","groupState","setColumnGroupState","getColumnGroupState","columnGroupState","impactedGroups","updateGroupsAndDisplayedColumns","setColumnGroupOpened","keyAsString","calculateColumnsForDisplay","isAutoGroupCol","isValueCol","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","groupDisplayColumnsMap","checkFunc","underlyingColumn","getGroupDisplayColumns","getGroupDisplayColumnForGroup","rowGroupColumnId","columnsForDisplay","buildDisplayedTrees","isSecondaryColumnsPresent","setSecondaryColumns","newColsPresent","processSecondaryColumnDefinitions","previousSecondaryColumns","searchForColDefs","colDefs2","sortOrderToRecover","prevGridCols","lastSecondaryOrder","hasSameColumns","createGroupAutoColumnsIfNeeded","groupAutoColsMap_1","addAutoGroupToGridColumns","orderGridColsLike","refreshQuickFilterColumns","clearDisplayedAndViewportColumns","setAutoHeightActive","autoHeightActive","colsOrder","lastOrderMapped","noColsFound","gridColsMap","oldColsOrdered","oldColsMap","newColsOrdered","newGridColumns","leafCol","presentInNewGriColumns","noYetInSiblings","isPrimaryColumnGroupsPresent","newAutoColsTree","viewportRowLeft","viewportRowRight","viewportRowCenter","updateOpenClosedVisibilityInColumnGroups","deriveDisplayedColumns","derivedDisplayedColumnsFromDisplayedTree","joinDisplayedColumns","isAutoRowHeightActive","wasAutoRowHeightEverActive","setLeftValuesOfColumns","setLeftValuesOfGroups","doingRtl","left_2","depthFirstDisplayedColumnTreeSearch","extractViewportColumns","getVirtualHeaderGroupRow","calculateHeaderRows","virtualColIds","testGroup","returnValue","addThisItem","newHash","viewportWidth","flexViewportWidth","flexAfterDisplayIndex","indexOfCol","isColFlex","afterResizingCols","knownWidthColumns","flexingColumns","spaceForFlexingColumns","flexingColumnSizes","outer","totalFlex","widthByFlexRule","constrainedWidth","remainingSpace","fireResizedEvent","gridWidth","limitsMap","columnLimits","dimensions","getOwnPropertySymbols","doColumnsAlreadyFit","colsToSpread","colsToNotSpread","colsToDispatchEventFor","finishedResizing","moveToNotSpread","availablePixels","widthOverride","defaultMinWidth","pixelsForLastCol","minOverride","maxOverride","defaultMaxWidth","colMinWidth","colMaxWidth","visibleColumns","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","groupInstanceIdCreator","displayedGroupCreator","createDisplayedGroups","updateDisplayedMap","isDisplayed","getGroupAutoColumns","groupFullWidthRow","isGroupUseEntireRow","suppressAutoColumn","isGroupSuppressAutoColumn","newAutoGroupCols","autoGroupColService","autoColsEqual","matchesTreeDataDisplayType","treeDataDisplayTypeValues","colsA","colsB","getGridBalancedTree","hasFloatingFilters","getFirstDisplayedColumn","isRtl","queryOrder","setColumnHeaderHeight","getColumnGroupHeaderRowHeight","getPivotGroupHeaderHeight","getGroupHeaderHeight","getColumnHeaderRowHeight","defaultHeight","getPivotHeaderHeight","getHeaderHeight","displayedHeights","getNum","getFromTheme","getFloatingFiltersHeight","__extends$2P","ColumnUtils","getMinColWidth","colDefWidth","colDefInitialWidth","getOriginalPathForColumn","originalBalancedTree","recursePath","__decorate$2q","__extends$2O","DisplayedGroupCreator","sortedVisibleColumns","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentOriginalPath","currentRealPath","firstColumn","newGroup","setupParentsIntoColumns","displayedGroups","recursive","columnsOrGroups","columnOrGroup","columnsOrGroup","__decorate$2p","__extends$2N","AgStackComponentsRegistry","componentsMappedByName","setupComponents","componentMeta","addComponent","classUpperCase","componentName","getComponentClass","htmlTag","__decorate$2o","toggleAriaAttribute","removeAriaAttribute","setAriaAttribute","ariaAttributeName","setAriaRole","getAriaSortState","sortDirection","getAriaLevel","getAriaPosInSet","setAriaLabel","setAriaLabelledBy","setAriaDescription","setAriaDescribedBy","describedby","setAriaLevel","setAriaDisabled","setAriaHidden","setAriaExpanded","removeAriaExpanded","setAriaSetSize","setsize","setAriaPosInSet","setAriaMultiSelectable","multiSelectable","setAriaRowCount","setAriaRowIndex","setAriaColCount","colCount","setAriaColIndex","colIndex","setAriaColSpan","setAriaSort","removeAriaSort","setAriaSelected","setAriaChecked","safariVersion","isChrome","isFirefox","isMacOs","isIOS","invisibleScrollbar","browserScrollbarWidth","AriaUtils","getAriaDescribedBy","setAriaLive","isBrowserSafari","getSafariVersion","versionMatch","isBrowserChrome","chrome","webstore","isBrowserFirefox","isMacOsUserAgent","isIOSUserAgent","maxTouchPoints","browserSupportsPreventScroll","getTabIndex","numberTabIndex","getMaxDivHeight","testUpTo","getBodyWidth","getBodyHeight","getScrollbarWidth","initScrollbarWidthAndVisibility","msOverflowStyle","isInvisibleScrollbar","BrowserUtils","padStartWidthZeros","totalStringSize","createArrayOfNumbers","formatNumberCommas","NumberUtils","cleanNumber","decToHex","formatNumberTwoDecimalPlacesAndCommas","zeroOrGreater","oneOrGreater","valueNumber","__read$p","serialiseDate","includeTime","serialised","calculateOrdinal","dateToFormattedString","YYYY","YY","MMMM","MMM","MM","Mo","Do","DD","dddd","ddd","do","regexp","parseDateTimeFromString","timeStr","rtlNegativeScroll","DateUtils","__read$o","FOCUSABLE_SELECTOR","FOCUSABLE_EXCLUDE","isFocusableFormField","Element","msMatchesSelector","isFocusable","isNotFocusable","isElementVisible","setDisplayed","displayed","skipAriaHidden","addOrRemoveDisabledAttribute","nodeListForEach","isElementChildOfClass","cls","maxNest","getElementSize","getInnerHeight","getInnerWidth","getAbsoluteHeight","getAbsoluteWidth","isRtlNegativeScroll","scrollLeft","getScrollLeft","setScrollLeft","clearElement","removeFromParent","loadTemplate","tempDiv","eContainer","eChild","eChildBefore","focusedEl","eChildHasFocus","insertAdjacentElement","preventScroll","setDomChildOrder","orderedChildren","correctCellAtIndex","actualCellAtIndex","insertWithDomOrder","eToInsert","addStylesToElement","__values$5","parsedKey","valueAsString","parsedValue","isHorizontalScrollShowing","isVerticalScrollShowing","scrollHeight","setElementWidth","setFixedWidth","formatSize","setFixedHeight","isNodeOrElement","copyNodeList","nodeList","iterateNamedNodeMap","addOrRemoveAttribute","DomUtils","radioCssClass","elementClass","otherElementClass","sibling","cssSelector","appendHtml","htmlTemplate","insertAdjacentHTML","getElementAttribute","prependDC","documentFragment","setElementHeight","iconNameClassMap","columnGroupClosed","columnSelectClosed","columnSelectOpen","columnSelectIndeterminate","columnMovePin","columnMoveHide","columnMoveMove","columnMoveLeft","columnMoveRight","columnMoveGroup","columnMoveValue","columnMovePivot","dropNotAllowed","groupContracted","groupExpanded","setFilterGroupClosed","setFilterGroupOpen","setFilterGroupIndeterminate","linked","unlinked","colorPicker","groupLoading","maximize","minimize","menuPin","menuValue","menuAddRowGroup","menuRemoveRowGroup","clipboardCopy","clipboardCut","clipboardPaste","pivotPanel","rowGroupPanel","valuePanel","columnDrag","csvExport","excelExport","smallDown","smallLeft","smallRight","smallUp","sortAscending","sortDescending","sortUnSort","createIcon","iconContents","createIconNoSpan","eResult","userProvidedIcon","optionsIcons","span","rendererResult","IconUtils","KeyCode","BACKSPACE","TAB","ENTER","ESCAPE","SPACE","LEFT","UP","RIGHT","DOWN","F2","PAGE_UP","PAGE_DOWN","PAGE_HOME","PAGE_END","C","isEventFromPrintableCharacter","isUserSuppressingKeyboardEvent","editing","colDefFunc","isUserSuppressingHeaderKeyboardEvent","headerRowIndex","normaliseQwertyAzerty","isDeleteKey","alwaysReturnFalseOnBackspace","KeyboardUtils","areEventsNear","e1","pixelCount","diffX","diffY","MouseUtils","RowNodeUtils","sortRowNodesByOrder","rowNodes","rowNodeOrder","__objectId","atLeastOneOutOfOrder","traverseNodesWithKey","keyParts","recursiveSearchNodes","currentNodes","childrenAfterGroup","convertToSet","SetUtils","__assign$k","NumberSequence","initValue","valToReturn","AgPromiseStatus","IN_PROGRESS","RESOLVED","waiters","onReject","remainingToResolve","combinedValues","ifNotResolvedValue","ifResolved","waiter","__extends$2M","__assign$j","__decorate$2n","TooltipStates","NOTHING","WAITING_TO_SHOW","SHOWING","CustomTooltipFeature","parentComp","DEFAULT_SHOW_TOOLTIP_DELAY","DEFAULT_HIDE_TOOLTIP_DELAY","SHOW_QUICK_TOOLTIP_DIFF","FADE_OUT_TOOLTIP_TIMEOUT","tooltipInstanceCount","postConstruct","getTooltipDelay","onMouseMove","onMouseDown","onKeyDown","setToDoNothing","isLastTooltipHiddenRecently","showTooltipTimeoutId","lastMouseEvent","clearTimeouts","tooltipComp","positionTooltipUnderLastMouseEvent","capitalisedType","destroyTooltipComp","lastTooltipHideTime","tooltipPopupDestroyFunc","getTooltipParams","newTooltipComponentCallback","userComponentFactory","getTooltipCompDetails","newAgStackInstance","tooltipInstanceCopy","eGui","addPopupRes","popupService","addPopup","hideFunc","hideTooltipTimeoutId","positionPopupUnderMouseEvent","mouseEvent","ePopup","nudgeY","skipObserver","CssClassManager","cssClassStates","addCssClass","removeCssClass","containsCssClass","addOrRemoveCssClass","addOrRemove","__extends$2L","__decorate$2m","compIdSequence","cssClassManager","setTemplate","preConstructOnComponent","usingBrowserTooltips","getCompId","setTooltip","newTooltipText","tooltipFeature","createChildComponentsFromTags","paramsMap","childComp","createComponentFromElement","copyAttributesFromNode","addItems","swapComponentForNode","nodeName","componentParams","ComponentClass","agStackComponentsRegistry","elementGettingCreated","newComponent","setParentComponent","eComponent","swapInComponentForQuerySelectors","thisNoType","iterateOverQuerySelectors","thisPrototype","__agComponentMetaData","currentProtoName","querySelectors","setTemplateFromElement","__agComponent","wireQuerySelectors","createChildComponentsPreConstruct","setResult","refSelector","resultOfQuery","getFocusableElement","getParentComponent","setGui","queryForHtmlElement","queryForHtmlInputElement","EVENT_DISPLAYED_CHANGED","addGuiEventListener","getRefElement","refName","RefSelector","querySelectorFunc","addToObjectProps","getOrCreateProps","__extends$2K","__decorate$2l","ReadOnlyFloatingFilter","eFloatingFilterText","setInputAriaLabel","onParentModelChanged","parentModel","parentFilterInstance","getModelAsString","modelAsString","DateCompWrapper","dateComponentParams","eParent","alive","getDateCompDetails","dateComp","afterGuiAttached","tempValue","setDateCompDisabled","setInputPlaceholder","__assign$i","OptionsFactory","customFilterOptions","mapCustomOptions","selectDefaultItem","checkForDeprecatedParams","opt","hideFilterInput","getFilterOptions","filterOption","mutatedFilterOptions","cv","numberOfInputs","displayKey","defaultOption","firstFilterOption","getDefaultOption","getCustomOption","DEFAULT_FILTER_LOCALE_TEXT","clearFilter","cancelFilter","textFilter","numberFilter","dateFilter","setFilter","filterOoo","notEqual","lessThan","greaterThan","inRange","inRangeStart","inRangeEnd","notContains","endsWith","blank","notBlank","andCondition","orCondition","dateFormatOoo","__extends$2J","__assign$h","__decorate$2k","ManagedFocusFeature","eFocusableElement","shouldStopEventPropagation","onTabKeyDown","nextRoot","focusService","findNextFocusableElement","FOCUS_MANAGED_CLASS","addKeyDownListeners","onFocusIn","onFocusOut","handleKeyDown","__extends$2I","__decorate$2j","RESIZE_CONTAINER_STYLE","RESIZE_TEMPLATE","PositionableFeature","dragStartPosition","lastSize","positioned","resizersAdded","resizeListeners","boundaryEl","isResizing","movable","currentResizer","offsetElement","initialisePosition","forcePopupParentAsOffsetParent","setOffsetParent","computedMinHeight","computedMinWidth","findBoundaryElement","offsetParentComputedStyles","paddingWidth","paddingHeight","setWidth","setHeight","refreshSize","isPositioned","setMovable","moveElement","moveElementDragListener","onDragStart","onMoveStart","onDragging","onMove","onDragStop","onMoveEnd","dragService","addDragSource","removeDragSource","setResizable","clearResizeListeners","addResizers","removeResizers","topLeft","topRight","bottomRight","bottomLeft","side","isSideResizable","resizerEl","getResizerElement","dragStartPixels","onResizeStart","onResizeEnd","removeSizeFromEl","restoreLastSize","getAvailableHeight","elRect","offsetParentRect","parentTop","additionalHeight","parentEl","positionPopup","keepWithinBounds","updatePosition","constrainSizeToAvailableHeight","constrain","resizeObserverSubscriber","resizeObserverService","observeResize","getPopupParent","updateDragStartPosition","calculateMouseMovement","isTop","topBuffer","xDiff","yDiff","movementX","shouldSkipX","isLeft","anywhereWithin","movementY","shouldSkipY","parentRect","boundaryElRect","skipX","skipY","createResizeMap","resizerMap","resizers","isRight","isBottom","applySizeToSiblings","getMinSizeOfSiblings","currentEl","nextWidth","computedStyle","containerToFlex","isHorizontal","isVertical","offsetLeft","offsetTop","oldWidth","skipWidth","oldHeight","skipHeight","calculateTopBuffer","__extends$2H","__decorate$2i","ProvidedFilter","filterNameKey","applyActive","hidePopup","debouncePending","appliedModel","resetTemplate","positionableFeature","getPositionableElement","getFilterTitle","onFormSubmit","templateString","getCssIdentifier","createBodyTemplate","providedFilterParams","setParams","resetUiToDefaults","updateUiVisibility","setupOnBtApplyDebounce","isUseApplyButton","createButtonPanel","eButtonsPanel","clickListener","onBtApply","onBtClear","onBtReset","onBtCancel","addButton","getDefaultDebounceMs","debounceMs","getDebounceMs","debounceFunc","checkApplyDebounce","onBtApplyDebounce","setModelIntoUi","applyModel","resetUiToActiveModel","handleCancelEnd","closeOnApply","currentModel","afterUiUpdatedFunc","afterAppliedFunc","onUiChanged","newModel","getModelFromUi","isModelValid","previousModel","areModelsEqual","afterFloatingFilter","filterChangedCallback","onNewRowsLoaded","fromFloatingFilter","filterModifiedCallback","refreshFilterResizer","containerType","afterGuiDetached","debounceDefault","getCellValue","eFilterBody","__extends$2G","AgAbstractLabel","labelSeparator","labelAlignment","eLabel","labelWidth","setLabelSeparator","setLabelWidth","setLabelAlignment","refreshLabel","getLabelId","getLabel","eGuiClassList","setLabelEllipsis","hasEllipsis","__decorate$2h","__extends$2F","AgAbstractField","onValueChange","callbackFn","EVENT_CHANGED","getPreviousValue","__extends$2E","__decorate$2g","AgPickerField","pickerIcon","ariaRole","isPickerDisplayed","isDestroyingPicker","skipClick","displayId","eDisplayField","eWrapper","clickHandler","pickerComponent","showPicker","eIcon","setInputWidth","__extends$2D","AgList","cssIdentifier","itemEls","highlightedEl","setValueByIndex","itemToHighlight","nextPos","highlightItem","addOptions","listOptions","listOption","addOption","sanitisedText","renderOption","updateIndices","itemEl","clearHighlighted","fireItemSelected","fireChangeEvent","refreshHighlighted","ACTIVE_CLASS","EVENT_ITEM_SELECTED","__decorate$2f","__extends$2C","__decorate$2e","AgSelect","listComponent","hideList","listGui","eDocument","destroyMouseWheelFunc","destroyFocusOutFunc","closeOnEsc","closedCallback","positionPopupByComponent","fromPicker","__extends$2B","__decorate$2d","AgAbstractInputField","displayFieldTag","setInputType","eInput","addInputListeners","getInputElement","setInputName","setMaxLength","__extends$2A","AgCheckbox","onCheckboxClick","setPassive","setReadOnly","dispatchChange","refreshSelectedClass","indeterminate","__extends$2z","AgRadioButton","__extends$2y","__read$n","SimpleFilterModelFormatter","optionsFactory","isCombined","combinedModel","conditions","condition1","condition2","customOptions","joinOperatorTranslateKey","SimpleFilter","BLANK","NOT_BLANK","customOption","conditionToString","eTypes","eJoinOperatorPanels","eJoinOperatorsAnd","eJoinOperatorsOr","eConditionBodies","lastUiCompletePosition","joinOperatorId","getNumberOfInputs","customOpts","IN_RANGE","onFloatingFilterChanged","setTypeFromFloatingFilter","setValueFromFloatingFilter","getUiCompleteConditions","maxNumConditions","getFilterType","getJoinOperator","getConditionTypes","getConditionType","defaultJoinOperator","aIsSimple","bIsSimple","areSimpleModelsEqual","aModel","bModel","numConditions","validateAndUpdateConditions","numPrevConditions","getNumConditions","removeConditionsAndOperators","createJoinOperatorPanel","createOption","orChecked_1","eJoinOperatorAnd","eJoinOperatorOr","setConditionIntoUi","simpleModel","createMissingConditionsAndOperators","doesFilterPass","models","__spread$j","individualConditionPasses","setNumConditions","getDefaultJoinOperator","filterPlaceholder","getDefaultFilterOptions","alwaysShowBothConditions","numAlwaysVisibleConditions","eConditionBody","createValueElement","putOptionsIntoDropdown","resetType","forEachPositionInput","resetInput","addChangedListeners","eJoinOperatorPanel","createJoinOperator","uniqueGroupId","resetJoinOperatorAnd","resetJoinOperatorOr","eJoinOperators","andOr","eJoinOperator","createBoilerplateListOption","createCustomListOption","isAllowTwoConditions","joinOperator","updateNumConditions","updateConditionStatusesAndValues","areAllConditionsUiComplete","isConditionUiComplete","shouldAddNewConditionAtEnd","activePosition","removeStartPosition","numConditionsToRemove","isConditionDisabled","isConditionBodyVisible","orChecked","forEachInput","setElementDisplayed","setElementDisabled","resetPlaceholder","deleteCount","removeComponents","removeElements","removeValueElements","joinOperatorIndex","removeItems","suppressFocus","firstInput","getInputs","updatedLastUiCompletePosition","conditionsRemoved","positionBeforeLastUiCompletePosition","shouldUpdateConditionStatusesAndValues","updateJoinOperatorsDisabled","getPlaceholderText","defaultPlaceholder","filterPlaceholderFn","filterOptionKey","globalTranslate","setElementValue","attachElementOnChange","forEachPositionTypeInput","getValues","createCondition","filteringLabel","resetJoinOperator","isDefaultOperator","updateJoinOperatorDisabled","mapValuesFromModel","elPosition","cellValue","customFilterOption","evaluateCustomFilter","evaluateNullValue","evaluateNonNullValue","isBlank","EQUALS","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","CONTAINS","NOT_CONTAINS","STARTS_WITH","ENDS_WITH","__extends$2x","ScalarFilter","scalarFilterParams","includeBlanksInEquals","includeBlanksInGreaterThan","includeBlanksInRange","compareResult","compareToResult","__extends$2w","__assign$g","DateFilterModelFormatter","dateFilterParams","inRangeFloatingFilterDateFormat","DateFilter","eConditionPanelsFrom","eConditionPanelsTo","dateConditionFromComps","dateConditionToComps","minValidYear","maxValidYear","filterDate","yearParser","filterModelFormatter","createDateCompWrapper","dateCompWrapper","onDateChanged","DEFAULT_FILTER_OPTIONS","eCondition","createFromToElement","eConditionPanels","dateConditionComps","fromTo","eConditionPanel","removeDateComps","isValidDate","aSimple","bSimple","_elPosition","__decorate$2c","__extends$2v","SimpleFloatingFilter","isEventFromFloatingFilter","isEventFromDataChange","getLastType","lastType","setLastTypeFromModel","canWeEditAfterModelFromParentFilter","isTypeEditable","setEditable","doesFilterHaveSingleInput","uneditableTypes","__extends$2u","__decorate$2b","DateFloatingFilter","createDateComponent","eReadOnlyText","eDateWrapper","allowEditing","filterValueText","getFilterModelFormatter","__extends$2t","DefaultDateComponent","inputElement","eDateInput","shouldUseBrowserDatePicker","usingSafariDatePicker","browserDatePicker","__decorate$2a","__extends$2s","AgInputTextField","allowedCharPattern","preventDisallowedCharacters","clipboardData","__extends$2r","AgInputNumberField","floatedValue","normalizeValue","onWheel","adjustPrecision","floatString","setMin","setMax","setPrecision","setStep","__extends$2q","NumberFilterModelFormatter","getAllowedCharPattern","NumberFilter","eValuesFrom","eValuesTo","processValue","numberFilterParams","eValues","eValue","stringToFloat","filterText","numberParser","__extends$2p","__assign$f","TextFilterModelFormatter","TextFilter","trimInput","trimmedInput","textFilterParams","getTextMatcher","textFormatter","caseSensitive","DEFAULT_FORMATTER","DEFAULT_LOWERCASE_FORMATTER","legacyComparator","textCustomComparator","textMatcher","DEFAULT_MATCHER","cleanValue","formattedValues","cellValueFormatted","matcherParams","__extends$2o","__decorate$29","FloatingFilterTextInputService","setupGui","eFloatingFilterTextInput","addValueChangedListener","inputGui","TextInputFloatingFilter","floatingFilterInputService","createFloatingFilterInputService","eFloatingFilterInputContainer","toDebounce","syncUpWithParentFilter","__extends$2n","FloatingFilterNumberInputService","numberInputActive","eFloatingFilterNumberInput","getActiveInputElement","setupListeners","NumberFloatingFilter","__extends$2m","TextFloatingFilter","TouchListener","preventMouseClick","destroyFuncs","touching","startListener","onTouchStart","moveListener","onTouchMove","endListener","onTouchEnd","getActiveTouch","touchList","touchStart","touchEvent","touchStartCopy","EVENT_LONG_TAP","EVENT_TAP","checkForDoubleTap","lastTapTime","DOUBLE_TAP_MILLIS","EVENT_DOUBLE_TAP","__extends$2l","__decorate$28","SortIndicatorComp","skipTemplate","TEMPLATE","attachCustomElements","eSortOrder","eSortAsc","eSortDesc","eSortMixed","eSortNone","setupSort","suppressOrder","setupMultiSortIndicator","addInIcon","onSortChanged","updateIcons","updateSortOrder","getDisplaySortForColumn","alwaysHideNoSort","isColumnShowingRowGroup","updateMultiSortIndicator","isMixedSort","allColumnsWithSorting","getColumnsWithSortingOrdered","indexThisCol","getDisplaySortIndexForColumn","moreThanOneColSorting","__extends$2k","__decorate$27","HeaderComp","lastMovingChanged","workOutTemplate","currentTemplate","workOutShowMenu","currentShowMenu","workOutSort","currentSort","setDisplayName","setupTap","setupIcons","setMenu","setupFilterIcon","currentDisplayName","displayNameSanitised","eText","eMenu","eFilter","touchListener","tapMenuButton","menuTouchListener","enableMenu","showColumnMenuAfterMouseClick","enableSorting","progressSort","menuHides","onIpadAndMenuHides","showMenu","menuFactory","showMenuAfterButtonClick","eSortIndicator","sortUsingCtrl","nowTime","onSortingChanged","sourceColumns","sortDirectionsMatch","sourceCol","filterPresent","__extends$2j","__decorate$26","HeaderGroupComp","checkWarnings","setupLabel","addGroupExpandIcon","setupExpandIcons","expandAction","newExpandedValue","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","updateIconVisibility","__extends$2i","PopupComponent","isPopup","__extends$2h","LargeTextCellEditor","focusAfterAttached","cellStartedEdit","eTextArea","setCols","setRows","parseValue","__decorate$25","__extends$2g","__decorate$24","SelectCellEditor","startedByEnter","valueFormatted","valueFormatterService","eSelect","stopEditing","focusIn","__extends$2f","TextCellEditor","charPress","getStartValue","highlightAllOnFocus","inputEl","focusEl","useFormatter","__decorate$23","__extends$2e","AnimateShowChangeCellRenderer","refreshCount","eDelta","showDelta","absDelta","valueToUse","deltaUp","setTimerToRemoveDelta","refreshCountCopy","hideDeltaValue","lastValue","filterManager","isSuppressFlashingCellsBecauseFiltering","__decorate$22","__extends$2d","AnimateSlideCellRenderer","eCurrent","addSlideAnimation","ePrevious","__decorate$21","__assign$e","childrenMapped","rowTop","oldRowTop","OBJECT_ID_SEQUENCE","__autoHeights","alreadyRendered","highlighted","hovered","setDataCommon","updateData","oldData","onDataChanged","updateDataOnDetailNode","checkRowSelectable","resetQuickFilterAggregateText","createDataChangedEvent","dispatchLocalEvent","detailNode","EVENT_DATA_CHANGED","createLocalRowEvent","getRowIndexString","rowPinned","createDaemonNode","oldNode","__daemon","setDataAndId","setId","selectionService","syncInRowNode","isRowSelectableFunc","setRowSelectable","newVal","EVENT_SELECTABLE_CHANGED","calculateSelectedFromChildren","setSelectedParams","getRowIdFunc","parentKeys","getGroupKeys","ID_PREFIX_ROW_GROUP","excludeSelf","isPixelInRange","setFirstChild","EVENT_FIRST_CHILD_CHANGED","setLastChild","EVENT_LAST_CHILD_CHANGED","setChildIndex","childIndex","EVENT_CHILD_INDEX_CHANGED","setRowTop","EVENT_TOP_CHANGED","clearRowTopAndRowIndex","setRowIndex","setDragging","EVENT_DRAGGING_CHANGED","setHighlighted","EVENT_HIGHLIGHT_CHANGED","setHovered","setAllChildrenCount","allChildrenCount","EVENT_ALL_CHILDREN_COUNT_CHANGED","setMaster","master","EVENT_MASTER_CHANGED","setGroup","updateHasChildren","EVENT_GROUP_CHANGED","setRowHeight","estimated","rowHeightEstimated","EVENT_HEIGHT_CHANGED","setRowAutoHeight","cellHeight","checkAutoHeightsDebounced","checkAutoHeights","notAllPresent","nonePresent","newRowHeight","autoHeights","activeColsForRow","getRowHeightForNode","onRowHeightChangedDebounced","EVENT_ROW_INDEX_CHANGED","setUiLevel","uiLevel","EVENT_UI_LEVEL_CHANGED","createGlobalRowEvent","rowNodeEventThrottle","dispatchExpanded","rowRenderer","getValueFromValueService","dispatchEventForSaveValueReadOnly","valueChanged","valueService","dispatchCellChangedEvent","lockedClosedGroup","leafGroup","isOpenGroup","footer","groupFootersEnabled","groupAlwaysShowAggData","setGroupValue","columnId","setAggData","newAggData","colIds","aggData","oldAggData","isGroupFunc","stub","__hasChildren","EVENT_HAS_CHILDREN_CHANGED","isEmptyRowGroupNode","EVENT_CELL_CHANGED","quickFilterAggregateText","depthFirstSearch","atLeastOneSelected","atLeastOneDeSelected","atLeastOneMixed","childState","setSelectedInitialValue","selectThisNode","clearSelection","suppressFinishActions","rangeSelect","setNodeSelected","isRowPinned","isParentOfNode","potentialParent","getFirstChildOfFirstChild","rowGroupColumn","currentRowNode","isCandidate","foundFirstChildPath","nodeToSwapIn","parentRowNode","isFullWidthCellFunc","getIsFullWidthCellFunc","getCallback","getRoute","createFooter","footerNode","ID_PREFIX_TOP_PINNED","ID_PREFIX_BOTTOM_PINNED","__extends$2c","__assign$d","__decorate$20","CheckboxSelectionComponent","eCheckbox","getCheckboxId","onSelectableChanged","showOrHideSelect","onCheckedClicked","onUncheckedClicked","overrides","getIsVisible","showOrHideSelectListener","extraParams","callbackParams","removeHidden","__extends$2b","__decorate$1$","__values$4","DragSourceType","ToolPanel","HeaderCell","RowDrag","ChartPanel","VerticalDirection","Up","Down","HorizontalDirection","DragAndDropService","dragSourceAndParamsList","dropTargets","DragAndDropService_1","ePinnedIcon","eHideIcon","eMoveIcon","eLeftIcon","eRightIcon","eGroupIcon","eAggregateIcon","ePivotIcon","eDropNotAllowedIcon","dragSource","allowTouch","sourceAndParams","clearDragSourceParamsList","nudge","eventLastTime","dragItem","getDragItem","lastDropTarget","dragSourceDropTarget","onDragStarted","createGhost","onDragStopped","draggingEvent","createDropTargetEvent","removeGhost","fromNudge","hDirection","getHorizontalDirection","vDirection","getVerticalDirection","positionGhost","validDropTargets","isMouseOnDropTarget","dropTarget","findCurrentDropTarget","leaveLastTargetIfExists","onGridExit","onGridEnter","enterDragTargetIfExists","getAllContainersFromDropTarget","secondaryContainers","getSecondaryContainers","containers","getContainer","allContainersIntersect","containers_1","containers_1_1","allContainersFromDropTarget","mouseOverTarget","allContainersFromDropTarget_1","allContainersFromDropTarget_1_1","targetContainsSource","isInterestedIn","elementStack","getRootNode","elementsFromPoint","elementStack_1","elementStack_1_1","validDropTargets_1","validDropTargets_1_1","e_4_1","e_3_1","onDragEnter","dragEnterEvent","setGhostIcon","dragLeaveEvent","addDropTarget","removeDropTarget","hasExternalDropZones","zones","external","findExternalZone","eClientX","eClientY","dropZoneTarget","eGhost","ghostHeight","browserWidth","browserHeight","pageY","pageX","windowScrollY","pageYOffset","windowScrollX","pageXOffset","eGhostParent","GHOST_TEMPLATE","mouseEventService","stampTopLevelGridCompWithGridInstance","getTheme","eGhostIcon","dragItemName","targetEl","fullscreenElement","rootNode","ShadowRoot","shake","defaultIconName","ICON_NOT_ALLOWED","ICON_PINNED","ICON_MOVE","ICON_LEFT","ICON_RIGHT","ICON_GROUP","ICON_AGGREGATE","ICON_PIVOT","ICON_HIDE","__extends$2a","__decorate$1_","RowDragComp","cellValueFn","customGui","suppressVisibilityChange","isCustomGui","setDragElement","checkCompatibility","strategy","ManagedVisibilityStrategy","NonManagedVisibilityStrategy","dragElement","managed","defaultTextValue","getRowDragText","dragItemCount","dragSourceDomDataKey","getDomDataKey","dragAndDropService","VisibilityStrategy","setDisplayedOrVisible","neverDisplayed","displayedOptions","shown","isShownSometimes","onSuppressRowDrag","workOutVisibility","rowDragFeature","getGridBodyCtrl","getRowDragFeature","shouldPreventRowMove","__extends$29","__assign$c","__decorate$1Z","GroupCellRendererCtrl","eExpanded","eContracted","compClass","topLevelFooter","isTopLevelFooter","embeddedRowMismatch","isEmbeddedRowMismatch","isNullValueAndNotMaster","skipCell","cellIsBlank","setupShowingValueForOpenedParent","findDisplayedGroupNode","addFullWidthRowDraggerIfNeeded","addExpandAndContract","addCheckboxIfNeeded","addValueElement","setupIndent","refreshAriaExpanded","expandListener","eParentOfValue","rowGroupCols","fullWidth","pinnedLeftCell","pinnedRightCell","bodyCell","showingValueForOpenedParent","displayedGroupNode","keyOfGroupingColumn","valPresent","addFooterValue","addGroupValue","addChildCount","paramsAdjusted","adjustParamsWithDetailsFromRelatedColumn","innerCompDetails","getInnerCompDetails","valueWhenNoRenderer","setInnerRenderer","relatedColumn","footerValueGetter","footerValue","paramsClone","getFullWidthGroupRowInnerCellRenderer","getInnerRendererDetails","isGroupRowRenderer","relatedColDef","relatedCompDetails","getCellRendererDetails","suppressCount","updateChildCount","showingGroupForThisNode","isShowRowGroupForThisRow","setChildCount","eExpandedIcon","eContractedIcon","eGroupCell","eGridCell","suppressDoubleClickExpand","onCellDblClicked","onExpandClicked","showExpandAndContractIcons","expandableChangedListener","onRowNodeIsExpandableChanged","onExpandOrContract","nextExpandState","sticky","scrollToStickyNode","getScrollFeature","setVerticalScrollPosition","stickyRowTop","reducedLeafNode","displayedGroup","setExpandedDisplayed","setContractedDisplayed","pivotModeAndLeafGroup","addExpandableCss","isTotalFooterNode","setIndent","suppressPadding","fullWithRow","paddingCount","indentClass","rowDragComp","isUserWantsSelected","paramsCheckbox","checkbox","checkboxNeeded","cbSelectionComponent_1","setCheckboxVisible","suppressEnterExpand","__extends$28","__decorate$1Y","GroupCellRenderer","compProxy","compDetails","valueToDisplay","setRenderDetails","eChildCount","componentPromise","destroyComp","innerCellRenderer","__extends$27","__decorate$1X","LoadingCellRenderer","failedLoad","setupFailed","setupLoading","eLoadingText","eLoadingIcon","__extends$26","LoadingOverlayComponent$1","LoadingOverlayComponent","DEFAULT_LOADING_OVERLAY_TEMPLATE","localisedTemplate","__extends$25","NoRowsOverlayComponent$1","NoRowsOverlayComponent","DEFAULT_NO_ROWS_TEMPLATE","__extends$24","TooltipComponent$1","TooltipComponent","__extends$23","__decorate$1W","__read$m","UserComponentRegistry","agGridDefaults","agDateInput","agColumnHeader","agColumnGroupHeader","agSortIndicator","agTextColumnFloatingFilter","agNumberColumnFloatingFilter","agDateColumnFloatingFilter","agReadOnlyFloatingFilter","agAnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","agGroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","agCellEditor","agTextCellEditor","agSelectCellEditor","agLargeTextCellEditor","agTextColumnFilter","agNumberColumnFilter","agDateColumnFilter","agLoadingOverlay","agNoRowsOverlay","agTooltipComponent","enterpriseAgDefaultCompsModule","agSetColumnFilter","agSetColumnFloatingFilter","agMultiColumnFilter","agMultiColumnFloatingFilter","agGroupColumnFilter","agGroupColumnFloatingFilter","agRichSelect","agRichSelectCellEditor","agDetailCellRenderer","agSparklineCellRenderer","deprecatedAgGridDefaults","agPopupTextCellEditor","agPopupSelectCellEditor","jsComps","fwComps","registerJsComponent","registerFwComponent","registerDefaultComponent","retrieve","createResult","componentFromFramework","registeredViaFrameworkComp","frameworkComponent","jsComponent","defaultComponent","moduleForComponent","warnAboutMissingComponent","validComponents","__spread$i","suggestions","DateComponent","HeaderGroupComponent","CellRendererComponent","CellEditorComponent","InnerRendererComponent","FilterComponent","FloatingFilterComponent","ToolPanelComponent","StatusPanelComponent","FullWidth","FullWidthLoading","FullWidthGroup","FullWidthDetail","FloatingFilterMapper","getFloatingFilterType","filterToFloatingFilterMapping","__extends$22","__decorate$1V","UserComponentFactory","getHeaderCompDetails","getCompDetails","getHeaderGroupCompDetails","getFullWidthCellRendererDetails","getFullWidthLoadingCellRendererDetails","getFullWidthGroupCellRendererDetails","getFullWidthDetailCellRendererDetails","getCellEditorDetails","getFilterDetails","defaultFilter","getLoadingOverlayCompDetails","getNoRowsOverlayCompDetails","getSetFilterCellRendererDetails","getFloatingFilterCompDetails","defaultFloatingFilter","getToolPanelCompDetails","toolPanelDef","getStatusPanelCompDetails","defObject","defaultName","mandatory","getCompKeys","compName","jsComp","fwComp","paramsFromSelector","popupFromSelector","popupPositionFromSelector","lookupFromRegistry","userComponentRegistry","agComponentUtils","doesImplementIComponent","adaptFunction","paramsMerged","mergeParamsWithApplicationProvidedParams","defObjectAny","selectorFunc","selectorRes","assignComp","providedJsComp","providedFwComp","xxxFrameworkDeprecatedWarn","warningMessage_1","popupPosition","thisComponentConfig","componentMetadataProvider","mandatoryMethodList","optionalMethodList","deferredInit","initComponent","paramsFromGrid","getDefaultFloatingFilterType","defaultFloatingFilterType","ExcelFactoryMode","SINGLE_SHEET","MULTI_SHEET","__extends$21","__decorate$1U","DragService","dragEndFunctions","dragSources","removeAllListeners","removeListener","dragSourceAndListener","mouseDownListener","touchEnabled","touchStartListener","includeTouch","mouseListener","getStartTarget","startTarget","currentDragParams","touchLastTime","touchEndEvent","onTouchUp","addTemporaryEvents","onCommonMove","skipMouseEvent","_alreadyProcessedByDragService","mouseStartEvent","onMouseUp","currentEvent","isEventNearStartEvent","startEvent","getFirstActiveTouch","isEventFromThisGrid","isOverFormFieldElement","onUpCommon","eventOrTouch","RowHighlightPosition","Above","ClientSideRowModelSteps","EVERYTHING","FILTER","SORT","MAP","AGGREGATE","FILTER_AGGREGATES","PIVOT","__decorate$1T","unwrapUserComp","GridApi","detailGridInfoMap","destroyCalled","registerOverlayWrapperComp","overlayWrapperComp","registerSideBarComp","sideBarComp","clientSideRowModel","infiniteRowModel","serverSideRowModel","whenReady","gridBodyCtrl","__getAlignedGridService","alignedGridsService","__getContext","getSetterMethod","setterName","gridInfo","getDetailGridInfo","forEachDetailGridInfo","csvCreator","getExcelExportMode","baseParams","exportMode","assertNotExcelMultiSheet","excelCreator","getFactoryMode","getDataAsExcel","getSheetDataForExcel","setFactoryMode","getMultipleSheetsAsExcel","exportMultipleSheetsAsExcel","setGridAriaProperty","eGrid","ariaProperty","logMissingRowModel","apiMethod","requiredRowModels","setServerSideDatasource","setDatasource","setCacheBlockSize","blockSize","resetRootStore","setViewportDatasource","immutableService","setPinnedTopRowData","pinnedRowModel","setPinnedBottomRowData","getPinnedTopRowCount","getPinnedBottomRowCount","getPinnedTopRow","getPinnedBottomRow","expireValueCache","getVerticalPixelRange","getVScrollPosition","getHorizontalPixelRange","getHScrollPosition","setAlwaysShowHorizontalScroll","setAlwaysShowVerticalScroll","flashCells","redrawRows","setFunctionsReadOnly","refreshHeader","isAnyFilterPresent","isColumnFilterPresent","isAggregateFilterPresent","isQuickFilterPresent","setRowNodeExpanded","expandParents","refreshModel","isAnimationFrameQueueEmpty","isQueueEmpty","flushAllAnimationFrames","getSizesForCurrentTheme","getRowHeightAsNumber","expandAll","collapseAll","addRenderedRowListener","getQuickFilter","setQuickFilter","setExcludeHiddenColumnsFromQuickFilter","selectAllRowNodes","deselectAllRowNodes","justFiltered","deselectAllFiltered","getServerSideSelectionState","setServerSideSelectionState","selectAllOnCurrentPage","justCurrentPage","deselectAllOnCurrentPage","getBestCostNodeSelection","ensureColumnVisible","ensureIndexVisible","ensureNodeVisible","nodeSelector","forEachLeafNode","includeFooterNodes","forEachNodeAfterFilterAndSort","getFilterInstanceImpl","unwrapped","filterPromise","getFilterComponent","filterComp","destroyFilter","getStatusPanel","statusBarService","getColumnDef","getFocusedCell","clearFocusedCell","setFocusedCell","forceBrowserFocus","setSuppressRowDrag","setSuppressMoveWhenRowDragging","setSuppressRowClickSelection","addRowDropZone","removeRowDropZone","activeDropTarget","getRowDropZoneParams","getRowDropZone","setHeaderHeight","setDomLayout","setEnableCellTextSelection","setCellTextSelection","setFillHandleDirection","setGroupHeaderHeight","setFloatingFiltersHeight","setPivotHeaderHeight","setPivotGroupHeaderHeight","setAnimateRows","setIsExternalFilterPresent","isExternalFilterPresentFunc","setDoesExternalFilterPass","doesExternalFilterPassFunc","setNavigateToNextCell","navigateToNextCellFunc","setTabToNextCell","tabToNextCellFunc","setTabToNextHeader","tabToNextHeaderFunc","setNavigateToNextHeader","navigateToNextHeaderFunc","setRowGroupPanelShow","setGroupRowAggNodes","groupRowAggNodesFunc","setGetGroupRowAgg","getGroupRowAggFunc","setGetBusinessKeyForNode","getBusinessKeyForNodeFunc","setGetChildCount","getChildCountFunc","setProcessRowPostCreate","processRowPostCreateFunc","setGetRowNodeId","getRowNodeIdFunc","setGetRowId","setGetRowClass","rowClassFunc","setIsFullWidthCell","setIsFullWidthRow","isFullWidthRowFunc","setIsRowSelectable","setIsRowMaster","isRowMasterFunc","setPostSort","postSortFunc","setPostSortRows","postSortRowsFunc","setGetDocument","getDocumentFunc","setGetContextMenuItems","getContextMenuItemsFunc","setGetMainMenuItems","getMainMenuItemsFunc","setProcessCellForClipboard","processCellForClipboardFunc","setSendToClipboard","sendToClipboardFunc","setProcessCellFromClipboard","processCellFromClipboardFunc","setProcessSecondaryColDef","processSecondaryColDefFunc","setProcessPivotResultColDef","setProcessSecondaryColGroupDef","processSecondaryColGroupDefFunc","setProcessPivotResultColGroupDef","processPivotResultColDefFunc","processPivotResultColGroupDefFunc","setPostProcessPopup","postProcessPopupFunc","setDefaultGroupOrderComparator","defaultGroupOrderComparatorFunc","setInitialGroupOrderComparator","initialGroupOrderComparatorFunc","setGetChartToolbarItems","getChartToolbarItemsFunc","setPaginationNumberFormatter","paginationNumberFormatterFunc","setGetServerSideStoreParams","getServerSideStoreParamsFunc","setGetServerSideGroupLevelParams","getServerSideGroupLevelParamsFunc","setIsServerSideGroupOpenByDefault","isServerSideGroupOpenByDefaultFunc","setIsApplyServerSideTransaction","isApplyServerSideTransactionFunc","setIsServerSideGroup","isServerSideGroupFunc","setGetServerSideGroupKey","getServerSideGroupKeyFunc","setGetRowStyle","rowStyleFunc","setGetRowHeight","rowHeightFunc","assertSideBarLoaded","isSideBarVisible","setSideBarVisible","setSideBarPosition","openToolPanel","closeToolPanel","getOpenedToolPanel","openedItem","refreshToolPanel","isToolPanelShowing","getToolPanelInstance","getSideBar","getDef","setSideBar","setSuppressClipboardPaste","resetRowHeights","setGroupRemoveSingleChildren","setGroupRemoveLowestSingleChildren","setGroupDisplayType","setRowClass","setDeltaSort","setRowCount","maxRowFound","onRowHeightChanged","gridCtrl","getGridCtrl","destroyGridUi","cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid","warnIfDestroyed","resetQuickFilter","resetQuickFilterCache","getCellRanges","rangeService","addCellRange","clearRangeSelection","removeAllCellRanges","undoCellEditing","undoRedoService","redoCellEditing","redo","getCurrentUndoSize","getCurrentUndoStackSize","getCurrentRedoSize","getCurrentRedoStackSize","getChartModels","chartService","getChartRef","getChartImageDataURL","downloadChart","openChartToolPanel","closeChartToolPanel","createRangeChart","createCrossFilterChart","restoreChart","chartModel","createPivotChart","clipboardService","cutToClipboard","copySelectedRowsToClipboard","copySelectedRangeToClipboard","copySelectedRangeDown","copyRangeDown","showColumnMenuAfterButtonClick","buttonElement","showMenuAfterMouseEvent","hidePopupMenu","contextMenuFactory","hideActiveMenu","setPopupParent","ePopupParent","navigationService","tabToPreviousCell","getCellRendererInstances","getCellEditorInstances","getEditingCells","startEditingCell","cellPosition","getCellByPosition","startRowOrCellEdit","addAggFunc","addAggFuncs","clearAggFuncs","applyServerSideTransaction","serverSideTransactionManager","applyServerSideTransactionAsync","applyTransactionAsync","retryServerSideLoads","retryLoads","flushServerSideAsyncTransactions","flushAsyncTransactions","rowDataTransaction","updateRowData","batchUpdateRowData","setSuppressModelUpdateAfterUpdateTransaction","refreshInfiniteCache","refreshCache","purgeInfiniteCache","purgeCache","refreshServerSide","refreshStore","refreshServerSideStore","getServerSideStoreState","getServerSideGroupLevelState","getStoreState","getInfiniteRowCount","getRowCount","isLastRowIndexKnown","getCacheBlockState","rowNodeBlockLoader","getBlockState","getFirstDisplayedRow","getFirstVirtualRenderedRow","getLastDisplayedRow","getLastVirtualRenderedRow","setPagination","paginationIsLastPageFound","paginationProxy","isLastPageFound","paginationGetPageSize","getPageSize","paginationSetPageSize","getCurrentPage","getTotalPages","paginationGetRowCount","getMasterRowCount","goToNextPage","paginationGoToPreviousPage","goToPreviousPage","goToFirstPage","paginationGoToLastPage","goToLastPage","goToPage","__extends$20","__assign$b","__decorate$1S","FilterManager","allColumnFilters","activeAggregateFilters","activeColumnFilters","quickFilter","quickFilterParts","processingFilterChange","FilterManager_1","onColumnsChanged","refreshFiltersForAggregations","onExcludeHiddenColumnsFromQuickFilterChanged","parseQuickFilter","setQuickFilterParts","externalFilterPresent","isExternalFilterPresentCallback","isFilterPresent","modelKeys_1","filterWrapper","setModelOnFilterWrapper","getOrCreateFilterWrapper","promiseFilter","doAggregateFiltersPass","filterToSkip","doColumnFiltersPass","updateActiveFilters","groupFilterEnabled","getGroupAggFiltering","isShowingPrimaryColumns","isAggFilter","updateFilterFlagInColumns","targetAggregates","targetedFilters","targetedData","parsedFilter","callOnFilterChangedOutsideRenderCycle","isRefreshInProgress","updateDependantFilters","onAnyFilterChanged","doesRowPassOtherFilters","doesRowPassFilter","filterInstanceToSkip","doesRowPassQuickFilterNoCache","filterPart","getQuickFilterTextForColumn","doesRowPassQuickFilterCache","aggregateRowForQuickFilter","doesRowPassQuickFilter","usingCache","doesRowPassAggregateFilters","stringParts","QUICK_FILTER_SEPARATOR","createValueGetter","createIfDoesNotExist","cachedFilter","putIntoGui","createFilterWrapper","createFilterInstance","createFilterParams","doesRowPassOtherFilter","compiledElement","guiPromise","eFilterGui","guiFromFilter","disposeFilterWrapper","groupColumns","groupColumn","showParentFilter","finalFilterParams","currentParentModel","getCurrentFloatingFilterParentModel","suppressFilterButton","__extends$1$","AbstractHeaderCellComp","getCtrl","__extends$1_","__decorate$1R","HeaderFilterCellComp","setComp","cssClassName","addOrRemoveBodyCssClass","eFloatingFilterBody","setButtonWrapperDisplayed","eButtonWrapper","setCompDetails","getFloatingFilterComp","compPromise","setMenuIcon","eButtonShowMainFilter","afterCompCreated","__extends$1Z","LayoutCssClasses","AUTO_HEIGHT","PRINT","LayoutFeature","updateLayoutClasses","getDomLayout","__decorate$1Q","__extends$1Y","__assign$a","__decorate$1P","GridBodyScrollFeature","eBodyViewport","nextScrollTop","resetLastHScrollDebounced","eLastHScroll","resetLastVScrollDebounced","eLastVScroll","onDisplayedColumnsWidthChanged","centerRowContainerCtrl","addScrollListener","fakeHScroll","getFakeHScrollComp","fakeVScroll","getFakeVScrollComp","getViewportElement","onHScroll","getViewport","onFakeHScroll","isDebounce","onVScroll","onFakeVScroll","horizontallyScrollHeaderCenterAndFloatingCenter","getCenterViewportScrollLeft","topCenterContainer","getTopCenterRowContainerCtrl","stickyTopCenterContainer","getStickyTopCenterRowContainerCtrl","bottomCenterContainer","getBottomCenterRowContainerCtrl","getHeaderRowContainerCtrl","setHorizontalScroll","setContainerTranslateX","centerViewport","isControllingHScroll","eDiv","isControllingVScroll","fakeHScrollViewport","onHScrollCommon","centerContainerViewport","eSource","shouldBlockScrollUpdate","doHorizontalScroll","fakeVScrollViewport","onVScrollCommon","setScrollTop","scrollGridIfNeeded","fakeScrollLeft","fireScrollEvent","onHorizontalViewportChanged","bodyScrollEvent","scrollTimer","bodyScrollEndEvent","scrollTo","touchOnly","shouldBlockVerticalScroll","shouldBlockHorizontalScroll","getCenterWidth","redrawRowsAfterScroll","checkScrollLeft","frameNeeded","setHorizontalScrollPosition","hScrollPosition","maxScrollLeft","vScrollPosition","scrollHorizontally","pixels","oldScrollPosition","scrollToTop","indexToSelect","goToPageWithIndex","rowGotShiftedDuringOperation","stickyTopHeight","getStickyTopHeight","startingRowTop","startingRowHeight","paginationOffset","getPixelOffset","rowTopPixel","rowBottomPixel","heightOffset","heightScaler","getDivStretchOffset","vScrollTop","vScrollBottom","viewportHeight","pxTop","getScrollPositionForPixel","pxBottom","pxMiddle","newScrollPosition","redrawAfterScroll","newHorizontalScroll","getPositionedHorizontalScroll","setCenterViewportScrollLeft","isColumnOutsideViewport","columnBeforeStart","columnAfterEnd","viewportTooSmallForColumn","alignColToStart","alignColToEnd","isMiddle","getColumnBounds","colLeft","colRight","colMiddle","getViewportBounds","viewportStart","viewportEnd","multiplier","colLeftPixel","AutoScrollService","tickingInterval","onScrollCallback","scrollContainer","scrollAxis","scrollVertically","scrollByTick","getVerticalPosition","setVerticalPosition","getHorizontalPosition","setHorizontalPosition","shouldSkipVerticalScroll","shouldSkipHorizontalScroll","forceSkipVerticalScroll","skipVerticalScroll","scrollTick","tickLeft","tickRight","tickUp","tickDown","ensureTickingStarted","ensureCleared","doTick","tickCount","tickAmount","__extends$1X","__assign$9","__decorate$1O","__read$l","RowDragFeature","isMultiRowDrag","isGridSorted","isGridFiltered","refreshStatus","onRowGroupChanged","gridBodyCon","autoScrollService","getBodyViewportElement","lastDraggingEvent","isSortActive","rowGroups","getRowNodes","isFromThisGrid","isRowDragMultiRow","__spread$h","getRowIndexNumber","currentNode","dispatchGridEvent","onEnterOrDragging","isDropZoneWithinThisGrid","getNormalisedPosition","doManagedDrag","managedDrag","highlightRowAtPixel","moveRows","moveRowAndClearHighlight","lastHighlightedRowNode","getLastHighlightedRowNode","isBelow","getRowIdFunc_1","addIndex","getRowIndexAtPixel","getHighlightPosition","clearRowHighlight","ensureRowsAtPixel","processedParams","fromGrid","draggingToRowDragEvent","overNode","vDirectionString","yNormalised","overIndex","getCurrentPageHeight","stopDragging","__extends$1W","__decorate$1N","RowAnimationCssClasses","ANIMATION_ON","ANIMATION_OFF","CSS_CLASS_CELL_SELECTABLE","CSS_CLASS_FORCE_VERTICAL_SCROLL","GridBodyCtrl","bodyScrollFeature","eGridBody","eTop","eBottom","eStickyTop","addRowDragListener","setupRowAnimationCssClass","addFocusListeners","onGridColumnsChanged","addBodyViewportListener","setFloatingHeights","disableBrowserDragging","addStopEditingWhenGridLosesFocus","registerGridBodyCtrl","getComp","onScrollVisibilityChanged","onPinnedRowDataChanged","onHeaderHeightChanged","isFocusedElementNested","gridContainRelatedTarget","isNestedRelatedTarget","setColumnMovingCss","setCellSelectableCss","scrollVisibleService","setVerticalScrollPaddingVisible","setStickyTopWidth","setBodyViewportWidth","setColumnCount","HTMLImageElement","focusOutListener","elementWithFocus","clickInsideGrid","viewports","isElementInThisGrid","getActivePopups","isElementWithinCustomPopup","updateRowCount","headerCount","headerNavigationService","registerBodyViewportResizeListener","setPinnedTopBottomOverflowY","allowVerticalScroll","setAlwaysVerticalScrollClass","isAnimateRows","rowContainerHeightService","isStretching","setRowAnimationCssOnBodyViewport","getGridBodyElement","onBodyViewportContextMenu","mockContextMenuForIPad","onBodyViewportWheel","onStickyTopWheel","addFullWidthContainerWheelListener","fullWidthContainer","eCenterColsViewport","onFullWidthContainerWheel","scrollBy","getCenterRowContainerCtrl","onContextMenu","hasAnchoredPopup","floatingTopHeight","getPinnedTopTotalHeight","floatingBottomHeight","getPinnedBottomTotalHeight","setTopHeight","setBottomHeight","setTopDisplay","setBottomDisplay","setStickyTopOffsetTop","setStickyTopHeight","vScrollVisible","getGridHeaderCtrl","pinnedTopHeight","setStickyTopTop","nextTimeout","scrollWidthToRemove","addScrollEventListener","removeScrollEventListener","SelectionHandleType","FILL","RANGE","CellRangeType","VALUE","DIMENSION","CSS_CELL_RANGE_SELECTED","CellRangeFeature","cellCtrl","cellComp","onRangeSelectionChanged","rangeCount","getCellRangeCount","getCellPosition","hasChartRange","getHasChartRange","isSingleCell","updateRangeBorders","refreshHandle","rangeBorders","getRangeBorders","isMoreThanOneCell","cellRanges","updateRangeBordersIfRangeCount","leftCol","rightCol","thisCol","ranges","isCellInSpecificRange","startRow","getRangeStartRow","endRow","getRangeEndRow","rowPositionUtils","sameRow","shouldHaveSelectionHandle","selectionHandle","addSelectionHandle","rangesLen","cellRange","isFillHandleAvailable","isRangeHandleAvailable","handleIsAvailable","isEditing","isCategoryCell","isContiguousRange","isBottomRightCell","cellRangeType","selectionHandleFactory","createSelectionHandle","__extends$1V","CellPositionFeature","setupColSpan","setupRowSpan","onLeftChanged","onWidthChanged","applyRowSpan","onDisplayColumnsChanged","colsSpanning","getColSpanningList","getCellWidth","modifyLeftForPrintLayout","getCellLeft","leftPosition","isPrintLayout","singleRowHeight","__extends$1U","CellCustomStyleFeature","staticClasses","applyUserStyles","applyCellClassRules","applyClassesFromColDef","cellClassParams","stylingService","processClassRules","cellStyleParams","cellStyleFunc","setUserStyles","getStaticCellClasses","__extends$1T","TooltipFeature","setupTooltip","browserTooltips","updateTooltipText","setTitle","createTooltipFeatureIfNeeded","getTooltipValue","genericTooltipFeature","refreshToolTip","getRowIndex","getValueFormatted","__decorate$1M","Beans","doingMasterDetail","isMasterDetail","__extends$1S","CellMouseListenerFeature","onMouseEvent","onMouseOut","onMouseOver","isDoubleClickOnIPad","intersectLastRange","cellClickedEvent","nowMillis","lastIPadMouseClickEvent","cellDoubleClickedEvent","isRightClickInExistingRange","focusCell","containsWidget","thisCell","extendLatestRangeToCell","setRangeToCell","isCellInAnyRange","mouseStayingInsideCell","cellMouseOutEvent","clearMouseOver","cellMouseOverEvent","setMouseOver","cellContainsTarget","cellContainsRelatedTarget","__extends$1R","CellKeyboardListenerFeature","rowCtrl","onEnterKeyDown","onF2KeyDown","onEscapeKeyDown","onBackspaceOrDeleteKeyPressed","onNavigationKeyPressed","isRangeSelectionEnabled","onShiftRangeSelect","endCell","extendLatestRangeInDirection","ensureCellVisible","isEnableRangeSelection","clearCellRangeCellValues","stopEditingAndFocus","stopRowOrCellEdit","onKeyPress","pressedChar","onSpaceKeyPressed","isRowSelection","currentSelection","updatedCount","__extends$1Q","DndSourceComp","eCell","checkVisibility","providedOnRowDrag","setDragImage","jsonData","defaultOnRowDrag","__decorate$1L","__extends$1P","__assign$8","instanceIdSequence$3","CellCtrl","cellRangeFeature","cellPositionFeature","cellCustomStyleFeature","cellMouseListenerFeature","cellKeyboardListenerFeature","suppressRefreshCell","onCellCompAttachedFuncs","createCellPosition","addFeatures","addTooltipFeature","eCellWrapper","printLayout","startEditing","updateAndFormatValue","addDomData","onCellFocused","applyStaticCssClasses","setWrapText","onFirstRightPinnedChanged","onLastLeftPinnedChanged","onColumnHover","setupControlComps","setupAutoHeight","setTabIndex","colIdSanitised","setColId","setRole","eParentCell","minRowHeight","measureHeight","timesCalled","destroyResizeObserver","forceNewCellRendererInstance","createCellRendererParams","includeSelection","isIncludeControl","includeRowDrag","includeDndSource","setIncludeSelection","setIncludeDndSource","setIncludeRowDrag","isForceWrapper","refreshShouldDestroy","rowDragChanged","dndSourceChanged","editorParams","createCellEditorParams","setEditing","setEditDetails","stopRowEditing","onPopupEditorClosed","takeValueFromCellEditor","noValueResult","newValueExists","getCellEditor","isCancelAfterEnd","saveNewValue","refreshCell","forceRefresh","suppressFlash","dispatchEditingStoppedEvent","editingStoppedEvent","getParentOfValue","registerRowDragger","rowDraggerElement","setFocusOutOnEditor","focusOut","setFocusInOnEditor","onCellChanged","valuesDifferent","flashCell","suppressNavigateAfterEdit","navigateAfterEdit","delays","animateCell","flashDelay","fadeDelay","cssName","animationFullName","onFlashCells","cellId","cellPositionUtils","createId","callValueFormatter","oldValueFormatted","valuesAreEqual","setDomData","DOM_DATA_KEY_CELL_CTRL","domEvent","onDisplayedColumnsChanged","colIdx","getBeans","startRowEditing","getRowCtrl","getRowPosition","onRowIndexChanged","isCellFocused","preventScrollOnBrowserFocus","fullRowEdit","onColDefChanged","dispatchCellContextMenuEvent","cellContextMenuEvent","getCellRenderer","createSelectionCheckbox","cbSelectionComponent","createDndSource","dndSourceComp","customElement","customRowDragComp","newComp","createRowDragComp","clientSideRowModelActive","__extends$1O","__read$k","RowType$1","RowType","instanceIdSequence$2","RowCtrl","animateIn","useAnimationFrameForCreate","allRowGuis","centerCellCtrls","leftCellCtrls","rightCellCtrls","slideInAnimation","fadeInAnimation","lastMouseDownOnDragger","updateColumnListsPending","businessKeySanitised","paginationPage","setAnimateFlags","initRowBusinessKey","rowFocused","isRowFocused","rowLevel","rowCssClassCalculator","calculateRowLevel","setRowType","addListeners","businessKeyForNodeFunc","businessKey","isSticky","rowComp","gui","RowContainerType","leftGui","rightGui","FULL_WIDTH","fullWidthGui","centerGui","initialiseRowComp","rowType","dispatchFirstDataRenderedEvent","unsetComp","rowGui","isCacheable","setCached","rg","gos","updateRowIndexes","setFocusedClasses","setStylesFromGridOptions","updateColumnLists","getInitialRowClasses","executeSlideAndFadeAnimations","rowIdSanitised","setRowId","setRowBusinessKey","isFullWidth","DOM_DATA_KEY_ROW_CTRL","createTask","addHoverFunctionality","setupFullWidth","addRowDraggerToRow","addDestroyTask","executeProcessRowPostCreateFunc","onTopChanged","getPinnedForContainer","createFullWidthParams","showFullWidth","getFullWidthCellRenderer","getCellElement","getCellCtrl","areAllContainersReady","eRow","ePinnedLeftRow","ePinnedRightRow","isLeftReady","isCenterReady","isRightReady","isStub","isDetailCell","isFullWidthGroup","useFlushSync","updateColumnListsImpl","createCellCtrls","addCell","colInstanceId","prevCellCtrl","isCellEligibleToBeRemoved","centerCols","leftCols","rightCols","setCellCtrls","nextContainerPinned","REMOVE_CELL","oldRowTopExists","pinningLeft","pinningRight","editingRow","getRowType","refreshFullWidth","tryRefresh","fullWidthSuccess","centerSuccess","leftSuccess","rightSuccess","updateExpandedCss","onRowNodeDataChanged","onRowNodeCellChanged","onRowNodeHighlightChanged","onRowNodeDraggingChanged","onUiLevelChanged","onPaginationPixelOffsetChanged","onVirtualColumnsChanged","onCellFocusCleared","onPaginationChanged","onColumnMoved","addListenersForCellComps","getAllCellCtrls","refreshFullWidthRow","postProcessCss","postProcessClassesFromGridOptions","postProcessRowClassRules","postProcessRowDragging","belowOn","onKeyboardNavigate","currentFullWidthComp","lastFocusedCell","currentFullWidthContainer","isFullWidthContainerFocused","nextEl","onFullWidthRowFocused","removeCellCtrl","cellCtrlToRemove","onRowDblClick","onRowClick","onRowMouseDown","createRowEvent","createRowEventWithSource","multiSelectKeyPressed","shiftKeyPressed","multiSelectOnClick","rowDeselectionWithCtrl","setupDetailRowAutoHeight","eDetailGui","checkRowSizeFunc","resizeObserverDestroyFunc","addFullWidthRowDragging","newLevel","classToAdd_1","classToRemove_1","isFirstRowOnPage","getPageFirstRow","isLastRowOnPage","getPageLastRow","refreshFirstAndLastRowStyles","newFirst","newLast","firstRowOnPage","lastRowOnPage","stoppingRowEdit","cellControls","isRowEdit","fireRowEditEvent","cellControls_1","__values$3","cellControls_1_1","setEditingRow","setInlineEditingCss","sourceRenderedCell","__spread$g","processClassesFromGridOptions","classStr","processRowClassRules","rowStyles","processStylesFromGridOptions","forEachGui","rowContainerType","fadeRowIn","rowIsEven","fullWidthRow","rowStyleFuncResult","createAriaLabel","isUseAnimationFrameForCreate","roundRowTopToBounds","minPixel","applyPaginationOffset","maxPixel","defaultRowHeight","getDefaultRowHeight","heightFromFunc","isGetRowHeightFunction","destroyFirstPass","setupRemoveAnimation","destroySecondPass","destroyCellCtrls","ctrls","onCellFocusChanged","topPx","afterPaginationPixels","afterScalingPixels","getRealPixelPosition","setRowTopStyle","getInitialRowTop","getInitialRowTopShared","getInitialTransform","setTop","rowIndexStr","headerRowCount","ariaRowIndex","getPinnedLeftRowElement","getPinnedRightRowElement","getBodyRowElement","getFullWidthRowElement","__extends$1N","__decorate$1K","RowContainerEventsFeature","addMouseListeners","addKeyboardEvents","processKeyboardEvent","processMouseEvent","getRowForEvent","getRenderedCellForEvent","handleContextMenuMouseEvent","rowCon","anchorToElement","processCellKeyboardEvent","processFullWidthRowKeyboardEvent","handlePageScrollingKey","doGridOperations","cellKeyDownEvent","cellKeyPressEvent","focusedCell","onCtrlAndA","onCtrlAndC","onCtrlAndX","onCtrlAndV","onCtrlAndD","onCtrlAndZ","onCtrlAndY","isRowsToRender","__read$j","floatingStart","floatingEnd","rowEnd","getPinnedBottomRowData","setCellRange","rowStartIndex","rowStartPinned","rowEndIndex","rowEndPinned","columnStart","columnEnd","pasteFromClipboard","__extends$1M","__decorate$1J","ViewportSizeFeature","centerContainerCtrl","listenForResize","onScrollbarWidthChanged","onCenterViewportResized","registerViewportResizeListener","checkViewportAndScrolls","isViewportVisible","centerWidth","bodyHeight","updateScrollVisibleService","checkBodyHeight","updateScrollVisibleServiceImpl","horizontalScrollShowing","verticalScrollShowing","setScrollsVisible","getViewportScrollLeft","__extends$1L","__decorate$1I","SetPinnedLeftWidthFeature","onPinnedLeftWidthChanged","pinnedWidthService","getPinnedLeftWidth","__extends$1K","__decorate$1H","SetPinnedRightWidthFeature","onPinnedRightWidthChanged","getPinnedRightWidth","__extends$1J","__decorate$1G","SetHeightFeature","onHeightChanged","maxDivHeightScaler","getUiContainerHeight","heightString","__extends$1I","__decorate$1F","DragListenerFeature","__extends$1H","__decorate$1E","CenterWidthFeature","addSpacer","__extends$1G","__decorate$1D","__read$i","RowContainerName","CENTER","TOP_LEFT","TOP_RIGHT","TOP_CENTER","TOP_FULL_WIDTH","STICKY_TOP_LEFT","STICKY_TOP_RIGHT","STICKY_TOP_CENTER","STICKY_TOP_FULL_WIDTH","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_CENTER","BOTTOM_FULL_WIDTH","ContainerCssClasses","ViewportCssClasses","WrapperCssClasses","RowContainerCtrl","EMPTY_CTRLS","isFullWithContainer","getRowContainerCssClasses","forContainers","viewportSizeFeature","registerWithCtrlsService","registerCenterRowContainerCtrl","registerLeftRowContainerCtrl","registerRightRowContainerCtrl","registerTopCenterRowContainerCtrl","registerTopLeftRowContainerCon","registerTopRightRowContainerCtrl","registerStickyTopCenterRowContainerCtrl","registerStickyTopLeftRowContainerCon","registerStickyTopRightRowContainerCtrl","registerBottomCenterRowContainerCtrl","registerBottomLeftRowContainerCtrl","registerBottomRightRowContainerCtrl","getContainerElement","getViewportSizeFeature","eViewport","addPreventScrollWhileDragging","listenOnDomOrder","stopHScrollOnPinnedRows","allNoFW","__spread$f","allMiddle","allCenter","allRight","pinnedWidthFeature","onPinnedWidthChanged","setContainerWidth","refreshPaddingForFakeScrollbar","sideToCheck","pinnedWidth","marginSide","onDisplayedRowsChanged","afterScroll","setDomOrder","isEnsureDomOrder","setViewportHeight","unsubscribeFromResize","isContainerVisible","printLayout_1","rowsThisContainer","getRowCtrls","embedFW","setRowCtrls","getTopRowCtrls","getStickyTopRowCtrls","getBottomRowCtrls","__extends$1F","__decorate$1C","GRID_BODY_TEMPLATE","GridBodyComp","eBodyClipper","eBody","overflowY","bodyViewportClassList","getFloatingTopBottom","__extends$1E","__decorate$1B","ScrollVisibleService","updateImpl","centerRowCtrl","__extends$1D","__decorate$1A","MouseEventService","gridInstanceId","MouseEventService_1","gridInstanceSequence","eGridDiv","GRID_DOM_KEY","getCellPositionForEvent","gridPanelHasScrolls","vRange","__extends$1C","__assign$7","__decorate$1z","NavigationService","onPageDown","onPageUp","rangeServiceShouldHandleShift","currentCell","onHomeOrEndKey","onCtrlUpDownLeftRight","navigateTo","navigateParams","scrollIndex","scrollType","scrollColumn","focusIndex","focusColumn","gridCell","pixelsInOnePage","getViewportHeight","pagingPixelOffset","currentPageBottomRow","navigateToNextPageWithAutoHeight","navigateToNextPage","currentPageTopRow","up","firstRow","lastRow","rowPixelDiff","isRowTallerThanView","getNextFocusIndexForAutoHeight","lastRowIndex","pixelSum","currentCellHeight","cellToFocus","cellNavigationService","getNextCellToFocus","homeKey","columnToSelect","tabToNextCellCommon","focusNextGridCoreContainer","focusLastHeader","cellOrRow","getRowByPosition","moveToNextEditingRow","moveToNextEditingCell","moveToNextCellNotEditing","getFocusedHeader","previousCell","previousPos","nextCell","findNextCellToFocusOn","previousEditable","nextEditable","rowsMatch","cellPos","tryToFocusFullWidthRow","previousPosition","getLastCellOfColSpan","getNextTabbedCell","userCell","previousCellPosition","nextCellPosition","floating","headerLen","focusHeaderPosition","headerPosition","lookupRowNodeForCell","allowUserOverride","hitEdgeOfGrid","isValidNavigateCell","normalisedPosition","focusPosition","currentCellFocused","fromBelow","colSpanningList","isGroupStickyEnabled","__extends$1B","PopupEditorWrapper","DOM_KEY_POPUP_EDITOR_WRAPPER","addKeyDownListener","__decorate$1y","__extends$1A","CellComp","rendererVersion","editorVersion","forceWrapper","refreshWrapper","actualElement","include","eCellValue","cellEditorPopupWrapper","firstRender","controlWrapperChanged","refreshEditStyles","refreshCellRenderer","destroyRenderer","createCellRendererInstance","insertValueWithoutCellRenderer","createCellEditorInstance","destroyEditor","removeControls","checkboxSelectionComp","rowDraggingComp","providingControls","usingWrapper","putWrapperIn","takeWrapperOut","usingCellValue","putCellValueIn","takeCellValueOut","templateChanged","addControls","versionCopy","cellEditorPromise","afterCellEditorCreated","escapedValue","destroyEditorAndRenderer","cellRendererGui","hideEditorPopup","cellEditorGui","compClassAndParams","cellRendererClass","displayComponentVersionCopy","createCellRendererFunc","afterCellRendererCreated","cellRendererVersion","requestVersion","isCancelBeforeStart","cellEditorInPopup","addPopupCellEditor","addInCellEditor","clearParentOfValue","ePopupGui","useModelPopup","positionToUse","getPopupPosition","positionParams","alignSide","positionCallback","__extends$1z","RowComp","cellComps","getInitialStyle","domOrder","cellCtrls","setFullWidthRowComp","cellsToRemove","newCellComp","cellCompsToRemove","destroyCells","elementsInOrder","destroyAllCells","cellsToDestroy","fullWidthRowComponent","__extends$1y","__assign$6","__decorate$1x","RowContainerComp","templateFactory","rowComps","getRowContainerTypeForName","rowCtrls","preDestroy","oldRows","lastPlacedElement","existingRowComp","appendRow","oldRowComp","__decorate$1w","BodyDropPivotTarget","columnsToAggregate","columnsToGroup","columnsToPivot","clearColumnsList","dragColumns","__decorate$1v","MoveColumnFeature","needToMoveLeft","needToMoveRight","lastMovedInfo","centerContainer","visibleState_1","visibleState","ensureIntervalCleared","allowedCols","normaliseX","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","ensureIntervalStarted","fromEnter","fakeEvent","mouseX","normaliseDirection","dragSourceType","allMovingColumns","attemptMoveColumns","draggingLeft","draggingRight","newCols_1","movingGroup","allMovingColumnsOrdered","validMoves","calculateValidMoves","calculateOldIndex","firstValidMove","constrainDirection","displayedCols","potentialMoves","targetOrder","displayedOrder","fragCount","groupFragCount","movingCols","gridCols","firstIndex","__read$h","allDisplayedCols","allGridCols","movingDisplayedCols","otherDisplayedCols","otherGridCols","displayIndex","widthOfMovingDisplayedCols_1","numberComparator","displacedCol","isColumnHidden","movingIntervalId","failedMoveAttempts","moveInterval","pixelsToMove","pixelsMoved","scrollFeature","columnsThatCanPin","__extends$1x","__decorate$1u","BodyDropTarget","eSecondaryContainers","leftRowContainerCtrl","bottomLeftRowContainerCtrl","topLeftRowContainerCtrl","rightRowContainerCtrl","bottomRightRowContainerCtrl","topRightRowContainerCtrl","bottomCenterRowContainerCtrl","topCenterRowContainerCtrl","moveColumnFeature","bodyDropPivotTarget","currentDropListener","isDropColumnInPivotMode","__read$g","CssClassApplier","getHeaderClassesFromColDef","getColumnClassesFromCollDef","getToolPanelClassesFromColDef","getClassParams","classesOrFunc","classToUse","__spread$e","__extends$1w","__decorate$1t","HeaderCellComp","headerCompVersion","getColumnGroupChild","setUserCompDetails","getUserCompInstance","headerComp","eResize","eHeaderCompWrapper","selectAllGui","getSelectAllGui","destroyHeaderComp","headerCompGui","setDragSource","__extends$1v","__decorate$1s","HeaderGroupCellComp","setResizableDisplayed","afterHeaderCompCreated","headerGroupComp","__extends$1u","__decorate$1r","HeaderRowType","COLUMN_GROUP","COLUMN","FLOATING_FILTER","HeaderRowComp","headerComps","extraClass","setHeaderCtrls","destroyHeaderCtrls","oldComps","createHeaderComp","headerCtrl","__extends$1t","__decorate$1q","instanceIdSequence$1","AbstractHeaderCellCtrl","columnGroupChild","parentRowCtrl","lastFocusEvent","getWrapperHasFocus","wrapperHasFocus","DOM_DATA_KEY_HEADER_CTRL","getParentRowCtrl","__extends$1s","SetLeftFeature","ariaEl","setColsSpanning","getColumnOrGroup","setLeftFirstTime","suppressMoveAnimation","oldLeftExists","animateInLeft","colOrGroup","oldActualLeft","actualLeft","indexColumn","__decorate$1p","__extends$1r","__decorate$1o","HoverFeature","addMouseHoverListeners","__extends$1q","__decorate$1n","HeaderFilterCellCtrl","setupWidth","setupLeft","setupHover","setupFocus","setupUserComp","setupSyncWithFilter","setupUi","updateFilterButton","eMenuIcon","nextFocusableEl","scrollToColumn","nextFocusableColumn","findNextColumnWithFloatingFilter","columModel","nextCol","focusInto","notFromHeaderWrapper","fromWithinHeader","setFocusedHeader","setLeftFeature","syncWithFilter","__extends$1p","__decorate$1m","ResizeFeature","canResize","canAutosize","destroyResizeFuncs","removeResize","autoSize","finishedWithResizeFunc","horizontalResizeService","addResizeBar","eResizeBar","onResizing","skipHeaderOnAutoSize_1","autoSizeColListener_1","touchListener_1","addResize","addRefreshFunction","resizeAmount","resizeAmountNormalised","normaliseResizeAmount","resizeStartWidth","resizeWithShiftKey","dragChange","notPinningLeft","__extends$1o","__decorate$1l","SelectAllFeature","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","currentPageOnly","cbSelectAll","getCheckboxGui","headerCellCtrl","showOrHideSelectAll","onModelChanged","onCbSelectAll","refreshSelectAllLabel","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","allSelected","getSelectAllState","ariaStatus","setAriaDescriptionProperty","refreshAriaDescription","__extends$1n","__decorate$1k","HeaderCellCtrl","refreshFunctions","userHeaderClasses","ariaDescriptionProperties","setupMovingCss","setupMenuClass","setupSortableClass","setupWrapTextClass","refreshSpanHeaderHeight","addColumnHoverListener","setupFilterCss","setupColId","setupClassesFromColDef","addActiveHeaderMouseListeners","setupSelectAll","refreshAria","onColumnValueChanged","onColumnRowGroupChanged","onColumnPivotChanged","lookupUserCompDetails","userCompDetails","createParams","menuEnabled","showColumnMenu","multiSort","setSortForColumn","eGridHeader","selectAllFeature","onEnterKeyPressed","isMenuEnabled","setActiveHeader","refreshHeaderClasses","oldClasses","dragSourceElement","hideColumnOnExit","moveDragSource","createDragItem","unlockedColumns","calculateDisplayName","workOutDraggable","refreshHeaderComp","newCompDetails","attemptHeaderCompRefresh","checkDisplayName","updateSortableCssClass","refreshAriaSort","getColumnGroupPaddingInfo","numberOfParents","isSpanningTotal","wrapperElement","stopResizeObserver","isMeasuring","checkMeasuring","stopMeasuring","startMeasuring","refreshAriaMenu","descriptionArray","__extends$1m","__decorate$1j","GroupResizeFeature","calculateInitialValues","takeFromGroup","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","normaliseDragChange","resizeColumns","preferredSize","getPreferredWidthForColumnGroup","resizeCols","resizeRatios","leafCols","__extends$1l","GroupWidthFeature","removeChildListenersFuncs","addListenersToChildrenColumns","onDisplayedChildrenChanged","removeListenersOnChildrenColumns","widthChangedListener","__decorate$1i","__extends$1k","__decorate$1h","HeaderGroupCellCtrl","addClasses","addAttributes","groupResizeFeature","tooltipCtrl","providedColGroup","refreshExpanded","eHeaderGroup","isSuppressMoving","getDragItemForGroup","allColumnsOriginalOrder","allColumnsCurrentOrder","childSuppressesMoving","__extends$1j","__decorate$1g","instanceIdSequence","HeaderRowCtrl","headerCellCtrls","onColumnResized","getHeaderCellCtrl","getWidthForRow","sizes","numberOfFloating","groupHeight","numberOfGroups","topOffset","thisRowHeight","oldCtrls","getColumnsInViewport","idOfChild","oldCtrl","keepCtrl","isHeaderWrapperFocused","isFocusedAndDisplayed","ctrlsToDisplay","getColumnsInViewportPrintLayout","getColumnsInViewportNormalLayout","actualDepth","getActualDepth","focusHeader","__extends$1i","__decorate$1f","__read$f","HeaderRowContainerCtrl","groupsRowCtrls","setupCenterWidth","setupPinnedWidth","setupDragAndDrop","registerHeaderContainer","dropContainer","bodyDropTarget","keepColumns","needNewInstance","focusedHeaderPosition","getFocusHeaderToUseAfterRefresh","groupRowCount","refreshColumnGroups","columnsRowCtrl","destroyPreviousComp","filtersRowCtrl","rowIndexMismatch","refreshFilters","allCtrls","getAllCtrls","setCtrls","restoreFocusOnHeader","__spread$d","setCenterWidth","setViewportScrollLeft","hiddenChanged","addPaddingForScrollbar","setPinnedContainerWidth","getHtmlElementForColumnHeader","__extends$1h","__decorate$1e","HeaderRowContainerComp","headerRowComps","rowCompsList","selectAndSetTemplate","eCenterContainer","PINNED_LEFT_TEMPLATE","PINNED_RIGHT_TEMPLATE","CENTER_TEMPLATE","eRowContainer","destroyRowComps","destroyRowComp","prevGui","oldRowComps","ctrlId","existingComp","appendEnsuringDomOrder","__extends$1g","__decorate$1d","HeaderNavigationDirection","HeaderNavigationService","centerHeaderContainer","navigateVertically","fromHeader","rowLen","headerPositionUtils","getColumnVisibleParent","getColumnVisibleChild","nextRow","nextFocusColumn","skipColumn","navigateHorizontally","fromTab","nextHeader","normalisedDirection","focusedHeader","findHeader","focusNextHeaderRow","findColAtEdgeForHeaderRow","columnToScrollTo","__extends$1f","__decorate$1c","GridHeaderCtrl","onPivotModeChanged","setupHeaderHeight","registerGridHeaderCtrl","totalHeaderHeight","setHeightAndMinHeight","shouldAllowOverflow","clearFocusedHeader","__extends$1e","GridHeaderComp","addContainer","__decorate$1b","__extends$1d","__decorate$1a","HorizontalResizeService","dragStartX","setResizeIcons","setResizeCursor","disableUserSelect","resetIcons","__extends$1c","__decorate$19","StandardMenuFactory","showPopup","tabListener","trapFocusWithin","isKeyboardEvent","KeyboardEvent","focusableEl","findTabbableParent","__extends$1b","__decorate$18","TabbedLayout","getTemplate","tabbedItemScrollMap","addItem","activeItem","tabbedItem","afterDetachedCallback","eHeader","isRightKey","showItemWrapper","eHeaderButton","isTargetUnderManagedComponent","findFocusableElementBeforeTabGuard","setAfterAttachedParams","afterAttachedParams","showFirstItem","titleLabel","showItem","itemWrapper","onItemClicked","lastScrollListener","bodyPromise","onlyUnmanaged","isKeyboardMode","afterAttachedCallback","keepScrollPosition","scrollableContainer_1","getScrollableContainer","scrollPosition_1","onActiveItemClicked","__extends$1a","ResizeObserverService","polyfillFunctions","resizeObserver","suppressResize","disconnect","widthLastTime","heightLastTime","periodicallyCheckWidthAndHeight","doNextPolyfillTurn","usePolyfill","schedulePolyfill","polyfillScheduled","__decorate$17","__extends$19","__decorate$16","AnimationFrameService","createTasksP1","createTasksP2","destroyTasks","ticking","scrollGoingDown","lastPage","lastScrollTop","taskCount","cancelledTasks","isPaginationActive","useAnimationFrame","isOn","verifyAnimationFrameOn","taskItem","createOrder","addTaskToList","cancelTask","sortTaskList","executeFrame","millis","p1TaskList","p1Tasks","p2TaskList","p2Tasks","frameStart","noMaxMillis","stopTicking","webkitRequestAnimationFrame","__extends$18","__decorate$15","AutoWidthCalculator","eHeaderCell","getHeaderCellForColumn","getAllCellsForColumn","addElementsToContainerAndGetWidth","eDummyContainer","eBodyContainer","cloneItemIntoDummy","dummyContainerWidth","getAutoSizePadding","eCellClone","eCloneParent","eCloneParentClassList","__extends$17","__decorate$14","__read$e","StickyRowFeature","createRowCon","destroyRowCtrls","stickyRowCtrls","containerHeight","isClientSide","getStickyRowCtrls","checkStickyRows","stickyRows","firstPixel","getFirstVisibleVerticalPixel","addStickyRow","stickyRow","lastChildBottom","lastAncestor","childrenAfterSort","storeBounds","childStore","getStoreBounds","heightPx","stickRowBottom","thisRowLastPx","firstPixelAfterStickyRows","firstMissingParent","refreshNodesAndContainerHeight","refreshStickyNode","stickRowNode","allStickyNodes","removedCtrls","addedNodes","ctrlsToDestroy","removedCtrl","__values$2","newCtrls","__spread$c","__extends$16","__decorate$13","__read$d","__spread$b","RowRenderer","destroyFuncsForColumnListeners","rowCtrlsByRowIndex","zombieRowCtrls","allRowCtrls","topRowCtrls","bottomRowCtrls","refreshInProgress","dataFirstRenderedFired","onPageLoaded","onBodyScroll","onDomLayoutChanged","stickyRowFeature","registerCellEventListeners","initialiseCache","redrawAfterModelUpdate","countProp","getKeepDetailRowsCount","cachedRowCtrls","RowCtrlCache","updateAllRowCtrls","liveList","zombieList","cachedList","getFullWidthRowCtrls","refreshListenersToColumnsForCellComps","removeGridColumnListeners","forEachCellWithThisCol","leftChangedListener","firstRightPinnedChangedListener","lastLeftPinnedChangedListener","colDefChangedListener","destroyRows","domLayoutChanged","datasourceChanged","firstRenderedRow","lastRenderedRow","rowIndexesToRemove","removeRowCtrls","recycleRows","keepRenderedRows","onlyBody","getAllRowCtrls","refreshFloatingRowComps","refreshFloatingRows","getPinnedTopRowData","getRenderedIndexesForRowNodes","renderedRow","partialRefresh","indexesToRemove","getCellToRestoreFocusToAfterRefresh","suppressKeepFocus","getFocusCellToUseAfterRefresh","cellDomData","rowDomData","getLockOnRefresh","updateContainerHeights","scrollToTopIfNewData","rowsToRecycle","removeAllRowComps","redraw","dispatchDisplayedRowsChanged","restoreFocusedCell","releaseLockOnRefresh","suppressScrollToTop","setModelHeight","rowCtrlsLength","cellCtrlsLength","__values$1","getCellCtrls","refreshCellParams","fullWidthRowCtrl","cellRenderers","fullWidthRenderers","rowIdMap","mapRowNodes","isRowInMap","fullWidthRenderer","rowIdsMap","colIdsMap","stubNodeIndexes","ctrlsByIdMap","rowsToRemove","indexToRemove","newFocusedCell","removeRowCompsNotToDraw","indexesToDraw","indexesToDrawMap","indexesNotToDraw","calculateIndexesToDraw","checkRowToDraw","indexStr","doNotUnVirtualiseRow","updateOffset","workOutFirstAndLastRowsToRender","createOrUpdateRowCtrl","redrawFullWidthEmbeddedRows","fullWidthCtrl","rowNodesMap","rowCtrlsMap","executeInAWhileFuncs","getRowBuffer","getRowBufferInPixels","bufferPixels","rowHeightsChanged","lastPixel","getCurrentPagePixelRange","pageFirstPixel","pageLastPixel","divStretchOffset","bodyVRange","bodyTopPixel","bodyBottomPixel","firstVisibleVPixel","ensureAllRowsInRangeHaveHeightsCalculated","firstRowIndex","pageFirstRow","pageLastRow","rowLayoutNormal","suppressRowCountRestriction","rowBufferMaxSize","topPixel","bottomPixel","ensureRowHeightsValid","rowHasFocus","isRowNodeFocused","rowIsEditing","isRowPresent","rowCtrlFromCache","renderedRows","rowPosition","gridRow","isRangeInRenderedViewport","entriesMap","entriesList","rowCtrlToDestroy","removeFromCache","rowNodeId","__extends$15","__decorate$12","ValueFormatterService","suppliedFormatter","useFormatterFromColumn","__extends$14","__decorate$11","PinnedRowModel","pinnedTopRows","pinnedBottomRows","getRowAtPixel","createNodesFromData","allData","nextRowTop_1","getTotalHeight","forEachPinnedTopRow","forEachPinnedBottomRow","ServerSideTransactionResultStatus","Applied","StoreNotFound","StoreLoading","StoreWaitingToLoad","StoreLoadingFailed","StoreWrongType","Cancelled","ChangedPath","keepingColumns","nodeIdsToColumns","mapToItems","pathRoot","setInactive","depthFirstSearchChangedPath","pathItem","depthFirstSearchEverything","traverseEverything","forEachChangedNodeDepthFirst","traverseLeafNodes","includeUnchangedNodes","executeFromRootNode","createPathItems","newEntryCount","populateColumnsMap","linkPathItems","thisItem","parentItem","addParentNode","canSkip","getValueColumnsForNode","colsForThisNode","getNotValueColumnsForNode","__extends$13","RowNodeBlock","STATE_WAITING_TO_LOAD","STATE_LOADING","loadFromDatasource","getVersion","setStateWaitingToLoad","pageLoadFailed","isRequestMostRecentAndLive","STATE_FAILED","processServerFail","dispatchLoadCompleted","successCommon","pageLoaded","thisIsMostRecentRequest","weAreNotDestroyed","STATE_LOADED","processServerResult","EVENT_LOAD_COMPLETE","block","__extends$12","__decorate$10","__param$7","RowNodeBlockLoader","activeBlockLoadsCount","blocks","RowNodeBlockLoader_1","maxConcurrentRequests","getMaxConcurrentDatasourceRequests","checkBlockToLoadDebounce","performCheckBlocksToLoad","addBlock","loadComplete","checkBlockToLoad","removeBlock","BLOCK_LOADED_EVENT","BLOCK_LOADER_FINISHED_EVENT","printCacheStatus","loadAvailability","getAvailableLoadingCount","blocksToLoad","registerLoads","getBlockStates","getBlockStateJson","isLogging","__extends$11","__decorate$$","PaginationProxy","topDisplayedRowIndex","bottomDisplayedRowIndex","pixelOffset","masterRowCount","isPaginateChildRows","onPaginationPageSizeChanged","startPixel","endPixel","startLimitIndex","endLimitIndex","calculatePages","modelUpdatedEvent","topRowBounds","bottomRowBounds","forEachNodeOnPage","getRowBounds","getPageForIndex","isRowInPage","totalPages","setPageSize","calculatePagesAllRows","calculatePagesMasterRowsOnly","calculatedPagesNotActive","setPixelOffset","setZeroRows","adjustCurrentPageIfInvalid","getTopLevelRowCount","masterLastRowIndex","masterPageEndIndex","getTopLevelRowDisplayedIndex","firstIndexNotToShow","maxRowIndex","__extends$10","__decorate$_","StylingService","processAllCellClasses","onApplicableClass","onNotApplicableClass","processStaticCellClasses","classRules","classesToApply","classesToRemove","resultOfRule","singleClass","classOrClasses","cssClassItem","__extends$$","AgToggleButton","__extends$_","AgInputTextArea","__extends$Z","AgInputRange","setMinValue","setMaxValue","__extends$Y","__decorate$Z","AgSlider","eSlider","eventChanged","sliderValue","setSliderWidth","setTextFieldWidth","__extends$X","__decorate$Y","AgGroupComponent","suppressEnabledCheckbox","suppressOpenCloseIcons","alignItems","initialItems","cbGroupEnabled","setAlignItems","hideEnabledCheckbox","hideOpenCloseIcons","setupExpandContract","refreshAriaStatus","refreshChildDisplay","eGroupClosedIcon","eGroupOpenedIcon","eTitleBar","toggleGroupExpand","showIcon","eToolbar","EVENT_EXPANDED","EVENT_COLLAPSED","hideItem","eTitle","addCssClassToTitleBar","skipToggle","refreshDisabledStyles","onEnableChange","__extends$W","__decorate$X","TabGuardClassNames","TAB_GUARD","TAB_GUARD_TOP","TAB_GUARD_BOTTOM","TabGuardCtrl","skipTabGuardFocus","eTopGuard","eBottomGuard","focusInnerElement","providedFocusInnerElement","providedFocusIn","providedFocusOut","providedShouldStopEventPropagation","providedOnTabKeyDown","providedHandleKeyDown","activateTabGuards","guard","tabGuardsAreActive","hasAttribute","getGridTabIndex","deactivateTabGuards","fromBottom","getNextFocusableElement","findFocusableElements","forceFocusOutOfContainer","tabGuardToFocus","__extends$V","__read$c","TabGuardComp","initialiseTabGuard","createTabGuard","tabGuards","tabGuard","addTabGuards","tabGuardCtrl","topTabGuard","bottomTabGuard","removeAllChildrenExceptTabGuards","__spread$a","__extends$U","__assign$5","__decorate$W","AgMenuList","parentGui","closeIfIsChild","handleNavKey","topMenu","findTopMenu","clearActiveItem","activeMenuItem","addMenuItems","menuItemOrString","addSeparator","menuItemDef","AgMenuItemComponent","isAnotherSubMenuOpen","isSubMenuOpen","EVENT_MENU_ITEM_SELECTED","EVENT_MENU_ITEM_ACTIVATED","activateFirstItem","nextParent","findNextItem","openChild","closeSubMenu","openSubMenu","foundCurrent","__extends$T","AgMenuPanel","wrappedComponent","closePanel","__decorate$V","__extends$S","__decorate$U","subMenuIsOpen","getClassName","addIcon","addName","addShortcut","addSubMenu","addTooltip","onItemSelected","it","subMenu","destroySubMenu","nextLevel","childMenu_1","cancelDeactivate","subMenu_1","menuPanel","subMenuGui_1","mouseEvent_1","mouseEnterListener_1","positionPopupForMenu","hideSubMenu","cancelActivate","onItemActivated","isCompact","shortcut","activateTimeoutId","deactivateTimeoutId","ACTIVATION_DELAY","__extends$R","__decorate$T","AgPanel","hideTitleBar","setBodyComponent","setClosable","eTitleBarButtons","eContentWrapper","renderComponent","closeButtonComp","CLOSE_BTN_TEMPLATE","addTitleBarButton","onBtClose","bodyComponent","__extends$Q","__assign$4","AgDialog","isMaximizable","isMaximized","maximizeListeners","resizeListenerDestroy","lastPosition","maximizable","bringPopupToFront","setMaximizable","alwaysOnTop","toggleMaximize","refreshMaximizeIcon","maximizeIcon","minimizeIcon","clearMaximizebleListeners","destroyListener","maximizeButtonComp","buildMaximizeAndMinimizeElements","__decorate$S","__extends$P","__assign$3","__decorate$R","__read$b","FocusService","FocusService_1","addKeyboardModeEvents","controller","docControllers","instancesMonitored","toggleKeyboardMode","removeKeyboardModeEvents","newControllers","__spread$9","currentGridCore","isKeyboardActive","keyboardModeActive","controllersForDoc","clearFocusedCellListener","onColumnEverythingChanged","unregisterGridCompController","gridCompController","focusedCellPosition","colFromColumnModel","isDomDataMissingInHierarchy","eBrowserCell","ePointer","getFocusEventParams","gridColumn","focusedColumn","previousHeaderPosition","nextHeaderPosition","focusGridView","focusFirstHeader","isAnyCellFocused","exclude","excludeString","excludeNodes","toFocus","referenceElement","referenceIndex","lastTabGuardIndex","onlyManaged","activeEl","nextIndex","managedContainers","getLastRow","getFirstRow","forceOut","focusNextInnerContainer","isDetailGrid","AG_KEYBOARD_FOCUS","__extends$O","__decorate$Q","__read$a","DIRECTION","instanceIdSeq","PopupService","popupList","PopupService_1","sourceRect","getParentRect","keepXYWithinBounds","xRightPosition","xLeftPosition","nudgeX","calculatePointerAlign","postProcessCallback","callPostProcessPopup","updatePopupPosition","fromResizeObserver","resizeObserverDestroyFunc_1","WAIT_FOR_POPUP_CONTENT_RESIZE","getPopupList","sizeProperty","anchorProperty","offsetProperty","scrollPositionProperty","docElement","documentRect","isBody","offsetSize","sizeOfParent","keepPopupPositionedRelativeTo","initialDiffTop","initialDiffLeft","lastDiffTop","lastDiffLeft","leftPx","pRect","sRect","currentDiffTop","newTop","currentDiffLeft","newLeft","intervalId","destroyPositionTracker","stopAnchoringPromise","allThemes","__spread$8","setAlwaysOnTop","popupHidden","hidePopupOnKeyboardEvent","hidePopupOnMouseEvent","hidePopupOnTouchEvent","popupParams","isEventFromCurrentPopup","isEventSameChainAsOriginalEvent","originalMouseEvent","isAnchored","indexOfThisChild","mouseEventOrTouch","screenY_1","screenY","xMatch","screenX","yMatch","getWrapper","popupLen","alwaysOnTopList","onTopLength","innerEls","innerElsScrollMap","__extends$N","__decorate$P","VirtualList","getItemHeight","addResizeObserver","setAriaProperties","onGridStylesChanged","destroyObserver","drawVirtualRows","focusRow","lastFocusedRowIndex","getLastFocusedRow","rowNumber","getComponentAt","rowComponent","forEachRenderedRow","getListItemHeight","viewportTopPixel","viewportScrolledBeforeRow","setComponentCreator","componentCreator","setComponentUpdater","componentUpdater","getScrollTop","softRefresh","canSoftRefresh","clearVirtualRows","areRowsEqual","ensureRowsRendered","refreshRows","isRowSelected","OUTSIDE_ANGULAR_EVENTS","PASSIVE_EVENTS","__extends$M","__decorate$O","__read$9","CellNavigationService","ctrlPressed","getNextCellToFocusWithCtrlPressed","getNextCellToFocusWithoutCtrlPressed","upKey","leftKey","getCellAbove","getCellBelow","getCellToLeft","getCellToRight","isCellGoodToFocusOn","lastCell","colToLeft","colToRight","getRowBelow","isLastRowInContainer","getNextStickyPosition","__spread$7","nextCtrl","rowBelow","getRowAbove","getLastBodyCell","getLastFloatingTopRow","rowAbove","getNextTabbedCellBackwards","getNextTabbedCellForwards","newRowIndex","newFloating","newColumn","__extends$L","__decorate$N","__param$6","AlignedGridsService","consuming","fireColumnEvent","otherGrids","otherGridOptions","alignedGridService","onEvent","onColumnEvent","onScrollEvent","getMasterColumns","getColumnIds","processColumnEvent","processGroupOpenedEvent","groupOpenedEvent","masterColumnGroup","otherColumnGroup","colEvent","masterColumn","otherColumn","masterColumns","movedEvent","destColState","visibleEvent","pinnedEvent","resizedEvent","columnWidths_1","__extends$K","__assign$2","__decorate$M","__param$5","SelectionService","propChange","isMultiselect","lastSelectedNode","getLastSelectedNode","nodesChanged","selectRange","setLastSelectedNode","clearOtherNodes","updateGroupsFromChildrenSelections","nodesToSelect","getNodesInRangeForSelection","childrenAfterAggFilter","selectedRows","getSelectionCount","filterFromSelection","newSelectedNodes","__read$8","changedPath","rowNodeToKeepSelected","groupsToRefresh","otherRowNode","syncInOldRowNode","syncInNewRowNode","topLevelNodes","getTopLevelNodes","traverse","rowModelClientSide","getNodesToSelect","selectedCount","notSelectedCount","recursivelyAddChildren_1","childrenAfterFilter","__decorate$L","ColumnApi","isPinning","getAllDisplayedVirtualColumns","setColumnWidth","getPivotResultColumn","getLeftDisplayedColumnGroups","getCenterDisplayedColumnGroups","getRightDisplayedColumnGroups","getAllDisplayedColumnGroups","setPivotResultColumns","getPivotResultColumns","getAllColumns","getPrimaryColumns","__extends$J","__decorate$K","ValueService","initialised","cellExpressions","callColumnCellValueChangedHandler","forFilter","ignoreAggData","groupDataExists","aggDataExists","executeFilterValueGetter","executeValueGetter","cellValueGetter","openedGroup","getOpenedGroup","valueWasDifferent","setValueUsingField","valuesAreSame","fieldPieces","fieldPiece","getValueCallback","valueFromCache","getKeyForNode","__extends$I","__decorate$J","__param$4","ExpressionService","expressionToFunctionCache","evaluateExpression","createExpressionFunction","javaScriptFunction","functionBody","createFunctionBody","theFunction","__extends$H","TemplateService","templateCache","waitingCallbacks","templateFromCache","callbackList","client","handleHttpResult","httpResult","__decorate$I","__extends$G","__decorate$H","__param$3","LoggerFactory","Logger","isLoggingFunc","__extends$F","__decorate$G","GridCtrl","eGridHostDiv","addRtlSupport","addOrRemoveKeyboardFocusClass","registerGridCtrl","showDropZones","showSideBar","showStatusBar","showWatermark","setRtlClass","setCursor","setUserSelect","focusableContainers","getFocusableContainers","nextIdx","lastColumn","__extends$E","__decorate$F","GridComp","userSelect","createTemplate","insertGridIntoDom","eRootWrapperBodyClassList","eRootWrapperBody","gridBodyComp","__extends$D","__decorate$E","__read$7","__spread$6","SortController","SortController_1","nextDirection","getNextSortDirection","columnsToUpdate","sortableRowGroupColumns","clearSortBarTheseColumns","updateSortIndex","lastColToChange","isCoupled","groupParent","lastSortIndexCol","allSortedCols","allSortedColsWithoutChanges","sortedCols","columnsToSkip","columnToClear","DEFAULT_SORTING_ORDER","getIndexedSortMap","includeRedundantColumns","sortedRowGroupCols","isSortLinked","allColsIndexes","iA","iB","indexMap","groupDisplayCol","getSortModel","getSortOptions","canColumnDisplayMixedSort","isColumnSortCouplingActive","isGroupDisplayColumn","linkedColumns","sortableColumns","firstSort","__extends$C","ColumnHoverService","selectedColumns","__decorate$D","__extends$B","__decorate$C","ColumnAnimationService","executeNextFuncs","executeLaterFuncs","animationThreadCount","ensureAnimationCssClassPresent","executeLaterVMTurn","animationThreadCountCopy","nowFuncs","waitFuncs","__extends$A","__decorate$B","PaginationAutoPageSizeService","centerRowContainerCon","checkPageSize","notActive","update_1","newPageSize","isBodyRendered","__extends$z","__decorate$A","ValueCache","cacheVersion","neverExpires","__cacheVersion","__cacheData","__extends$y","__decorate$z","ChangeDetectionService","doChangeDetection","onlyChangedColumns","doAggregate","__extends$x","__decorate$y","AgComponentUtils","jsCompFunc","functionAdapter","adaptCellRendererFunction","callbackResult","candidate","__extends$w","__decorate$x","ComponentMetadataProvider","componentMetaData","dateComponent","floatingFilterWrapperComponent","statusPanel","toolPanel","__extends$v","__decorate$w","__read$6","HARD_CODED_SIZES","headerCellMinWidth","listItemHeight","BASE_GRID_SIZE","chartMenuPanelWidth","MAT_GRID_SIZE","BALHAM_GRID_SIZE","ALPINE_GRID_SIZE","SASS_PROPERTY_BUILDER","Environment","calculatedSizes","mutationObserver","fireGridStylesChangedEvent","getSassVariable","themeFamily","calculateValueForSassProperty","themeElement","classesFromThemeElement","__spread$5","prevEl","currentClass","currentDiv","calculatedValue","sizeName","isThemeDark","themeMatch","sassVariableName","setRowHeightVariable","measuredMin","__extends$u","__decorate$v","__param$2","RowContainerHeightService","scrollY","uiBodyHeight","agWire","maxDivHeight","stretching","newScrollY","newBodyHeight","getUiBodyHeight","calculateOffset","setUiContainerHeight","pixelsToShave","modelHeight","uiContainerHeight","maxScrollY","scrollPercent","setDivStretchOffset","clearOffset","newOffset","newOffsetFloor","modelPixel","modelMaxScroll","__extends$t","__decorate$u","SelectableService","updateSelectableAfterGrouping","recurseDown","nextChildrenFunc","rowSelectable","__extends$s","__decorate$t","PaginationComp","previousAndFirstButtonsDisabled","nextButtonDisabled","lastButtonDisabled","areListenersSetup","btFirst","btPrevious","btNext","btLast","paginationPanelEnabled","enableOrDisableButtons","updateRowLabels","setCurrentPageLabel","setTotalLabels","onBtFirst","onBtPrevious","onBtNext","onBtLast","pagesExist","lbCurrent","strPage","strTo","strOf","strFirst","strPrevious","strNext","strLast","toggleButtonDisabled","zeroPagesToDisplay","isZeroPagesToDisplay","lbFirstRowOnPage","lbLastRowOnPage","lastPageFound","setTotalLabelsToZero","lbTotal","lbRecordCount","moreText","__extends$r","__decorate$s","LoadingType","NoRows","OverlayWrapperComponent","inProgress","destroyRequested","manuallyDisplayed","overlayWrapperClassList","eOverlayWrapper","onRowDataUpdated","onNewColumnsLoaded","setWrapperTypeClass","loadingType","showOverlay","workItem","destroyActiveOverlay","activeOverlay","showOrHideOverlay","isSuppressNoRowsOverlay","__extends$q","__decorate$r","RowPositionUtils","pinnedBottomCount","pinnedTopCount","rowA","rowB","rowMax","rowMin","__extends$p","CellPositionUtils","createIdFromValues","cellA","cellB","__decorate$q","__extends$o","UndoRedoAction","cellValueChanges","RangeUndoRedoAction","initialRange","finalRange","UndoRedoStack","maxStackSize","actionStack","DEFAULT_STACK_SIZE","getCurrentStackSize","__extends$n","__assign$1","__decorate$p","__read$5","UndoRedoService","activeCellEdit","activeRowEdit","isPasting","isRangeInAction","eventCell","isCellEditing","isRowEditing","cellValueChange","clearStacks","undoStack","redoStack","undoRedoLimit","addRowEditingListeners","addCellEditingListeners","addPasteListeners","addFillListeners","addCellKeyListeners","keepUndoRedoStack","operationPerformed","undoRedo","undoRedoStack","opposingUndoRedoStack","rangeProperty","cellValueChangeProperty","undoRedoAction","processAction","processRange","processCell","valueExtractor","startColumn","setLastFocusedCell","pushActionsToUndoStack","__spread$4","__extends$m","__decorate$o","HeaderPositionUtils","nextColumn","getHeaderRowType","isAnyChildSpanningHeaderHeight","currentRowType","isColumn","leafChild","ColumnDefFactory","colGroupDefs","addToResult","childDef","createDefFromColumn","parentDef","existingParentDef","createDefFromGroup","defCloned","colDefCloned","__decorate$n","__decorate$m","RowCssClassCalculator","extraCssClass","preProcessRowClassRules","rowCls","rowClassParams","__extends$l","__decorate$l","RowNodeSorter","isAccentedSort","primaryColumnsSortGroups","doFullSort","sortOptions","sortedRowNodes","currentPos","compareRowNodes","sortedNodeA","sortedNodeB","comparatorResult","sortOption","providedComparator","getComparator","comparatorOnCol","groupLeafField","primaryColumn","allLeafChildren","displayCol","__extends$k","CtrlsService","readyCallbacks","CtrlsService_1","checkReady","stickyTopCenterRowContainerCtrl","stickyTopLeftRowContainerCtrl","stickyTopRightRowContainerCtrl","centerHeaderRowContainerCtrl","leftHeaderRowContainerCtrl","rightHeaderRowContainerCtrl","fakeHScrollComp","fakeVScrollComp","gridHeaderCtrl","p_1","createReadyParams","registerFakeHScrollComp","registerFakeVScrollComp","__decorate$k","__extends$j","CtrlsFactory","controllerName","controllerClass","getInstance","ControllerClass","__decorate$j","__extends$i","__decorate$i","AbstractFakeScrollComp","initialiseInvisibleScrollbar","hideAndShowInvisibleScrollAsNeeded","addActiveListenerToggles","setScrollVisible","__extends$h","__decorate$h","FakeHScrollComp","spacerWidthsListener","setFakeHScrollSpacerWidths","refreshCompBottom","bottomPinnedHeight","vScrollShowing","rightSpacing","scrollOnRight","eRightSpacer","leftSpacing","eLeftSpacer","hScrollShowing","isSuppressHorizontalScroll","scrollContainerSize","__extends$g","__decorate$g","PinnedWidthService","checkContainerWidths","__extends$f","__decorate$f","RowNodeEventThrottle","dispatchExpandedDebounced","onRowGroupOpened","__decorate$e","__param$1","__read$4","isTrue","GridOptionsService","domDataKey","propertyEventService","gridOptionLookup","__spread$3","globalEventHandler","mergeGridCommonParams","mergedParams","eventParams","callbackMethodName","allowEstimate","isNumeric","getMasterDetailRowHeight","domData","getAsyncTransactionWaitMillis","userValue","__extends$e","LocaleService","variableValues","localisedText","__decorate$d","__extends$d","FakeVScrollComp","adjustedScrollbarWidth","__decorate$c","__read$3","__spread$2","GridCoreCreator","gridComp","createUi","acceptChanges","registeredModules","createBeansList","createProvidedBeans","contextLogger","registerModuleUserComponents","registerStackComponents","registerControllers","setColumnsAndData","dispatchGridReadyEvent","isEnterprise","controllers","ctrlsFactory","agStackComponents","createAgStackComponentsList","passedViaConstructor","registered","allModules","mapNames","addModule","addIndividualModule","currentModule","dependantModules","extractModuleEntity","userComponents","compMeta","moduleAgStackComps","rowModelModules","rowModelModuleNames","moduleBeans","beansNoDuplicates","moduleEntities","createMethod","unwrap","createMethodProxy","DEFAULT_CHART_GROUPS","barGroup","pieGroup","lineGroup","scatterGroup","areaGroup","histogramGroup","combinationGroup","CHART_TOOL_PANEL_ALLOW_LIST","CHART_TOOLBAR_ALLOW_LIST","CHART_TOOL_PANEL_MENU_OPTIONS","globalObj","HTMLButtonElement","HTMLSelectElement","__read$2","__spread$1","ClientSideNodeManager","allNodesMap","ROOT_NODE_ID","getCopyOfNodesMap","TOP_LEVEL","rowDataTran","rowNodeTransaction","nodesToUnselect","executeRemove","executeUpdate","executeAdd","newNodes","normalisedAddIndex","nodesBeforeIndex","nodesAfterIndex","rowIdsRemoved","lookupRowNode","setMasterForRow","expandByDefault","__extends$c","__decorate$b","__read$1","RecursionType","AfterFilter","AfterFilterAndSort","PivotNodes","ClientSideRowModel","onRowHeightChanged_debounced","rowsToDisplay","refreshEverythingFunc","refreshEverythingAfterColsChangedFunc","afterColumnsChanged","onValueChanged","onGridStylesChanges","refreshMapListener","nodeManager","atLeastOneChange","rowAtStartPixel","rowAtEndPixel","setRowTopAndRowIndex","nextRowTop","displayedRowsMapped","changedPathActive","clearIfNotDisplayed","recurse","indexAtPixelNow","rowNodeAtPixelNow","keepEditingRows","highlight","lastHighlightedRow","filteredChildren","topLevelIndex","primaryOrQuickFilterChanged","createChangePath","rowNodeTransactions","noTransactions","isSuppressModelUpdateAfterUpdateTransaction","transWithAddsOrDeletes","buildRefreshModelParams","paramsStep","stepsMapped","everything","aggregate","paramsOrStep","doRowGrouping","doFilter","doPivot","doFilterAggregates","doSort","doRowsToDisplay","displayedNodesMapped","rowsMissing","firstInRange","lastInRange","firstRowHit","lastRowHit","groupsSelectChildren","lookingForLastRow","childOfLastRow","pixelToMatch","bottomPointer","topPointer","oldBottomPointer","oldTopPointer","midPointer","isRowInPixel","recursivelyWalkNodesAndCallback","recursionType","forEachPivotNode","firstNode","nodeChildren","aggregationStage","execute","filterAggregatesStage","usingPivotMode","recursiveExpandOrCollapse","actionRow","sortStage","groupStage","restoreGroupState","filterStage","pivotStage","getGroupState","res_1","applyAsyncTransactionsTimeout","rowDataTransactionBatch","waitMillis","executeBatchUpdateRowData","callbackFuncsBound","rowNodeTrans","forceRowNodeOrder","tranItem","rowNodeTran","commonUpdateRowData","createRowNodeOrder","orderMap","flattenStage","resetRowHeightsForAllRowNodes","__extends$b","__decorate$a","FilterStage","__extends$a","__decorate$9","SortStage","sortActive","sortContainsGroupColumns","sortService","__extends$9","__decorate$8","FlattenStage","skipLeafNodes","showRootNode","recursivelyAddToRowsToDisplay","addRowNodeToRowsToDisplay","rowsToFlatten","hideOpenParents","isParent","isRemovedSingleChildrenGroup","isRemovedLowestSingleChildrenGroup","excludedParent","createDetailNode","masterNode","__extends$8","__decorate$7","SortService","getPostSortFunc","useDeltaSort","groupColumnsPresent","allDirtyNodes","calculateDirtyNodes","pullDownGroupDataForHideOpenParents","skipSortingPivotLeafs","childrenToBeSorted","indexedOrders_1","row1","row2","doDeltaSort","rowNodeSorter","updateChildIndexes","updateGroupDataForHideOpenParents","dirtyNodes","addNodesFunc","tran","allTouchedNodes","unsortedRows","oldSortedRows","untouchedRowsMap","touchedRows","sortedUntouchedRows","mapNodeToSortedNode","sortedChangedRows","mergeSortedArrays","listToSort","clearOperation","childRowNode","parentToStealFrom","__extends$7","__decorate$6","FilterService","filterNodes","includeChildNodes","passBecauseChildren","passBecauseDataPasses","doingTreeDataFiltering","treeDataDepthFirstFilter_1","alreadyFoundInParent","foundInParent","__extends$6","__decorate$5","ImmutableService","getRowIdProvided","transactionAndMap","createTransactionForRowData","existingNodesMap","existingNode","__extends$5","__decorate$4","InfiniteBlock","parentCache","createRowNodes","blockNumber","getStartRow","getEndRow","pageStatus","createLoadParams","getRows","failCallback","getLastAccessed","lastAccessed","dontTouchLastAccessed","lastAccessedSequence","destroyRowNodes","__extends$4","__decorate$3","__param","InfiniteCache","lastRowIndexKnown","blockCount","initialRowCount","dontCreatePage","blockId","createBlock","newBlock","purgeBlocksIfNeeded","getBlocksInOrder","destroyAllBlocks","destroyBlock","checkRowCount","onCacheUpdated","blockToExclude","blocksForPurging","maxBlocksProvided","blocksToKeep","emptyBlocksToKeep","MAX_EMPTY_BLOCKS_TO_KEEP","isBlockCurrentlyDisplayed","isBlockFocused","removeBlockFromCache","blockIndexStart","blockIndexEnd","blockToRemove","lastRowIndexPlusOverflow","overflowSize","forEachNodeDeep","destroyAllBlocksPastVirtualRowCount","blocksToDestroy","getRowNodesInRange","lastBlockId","inActiveRange","numberSequence","foundGapInSelection","hitFirstOrLast","__extends$3","__decorate$2","InfiniteRowModel","destroyCache","verifyProps","destroyDatasource","onColumnEverything","cacheParams","isSortModelDifferent","infiniteCache","createModelUpdatedEvent","defaultIfInvalid","rowIndexForPixel","BaseCreator","getFileName","getDefaultFileExtension","getDefaultFileName","serializingSession","createSerializingSession","gridSerializer","serialize","BaseGridSerializingSession","processHeaderCallback","processGroupHeaderCallback","processRowGroupCallback","prepare","columnsToExport","extractHeaderValue","extractRowCellValue","accumulatedRowIndex","shouldRenderGroupSummaryCell","createValueForGroupNode","currentColumnIndex","isFooter","groupValue","Downloader","__extends$2","CsvSerializingSession","isFirstLine","addCustomContent","beginNewLine","putInQuotes","mergeAcross","appendEmptyCells","onNewHeaderGroupingRow","onColumn","onNewHeaderGroupingRowColumn","onNewHeaderRow","onNewHeaderRowColumn","onNewBodyRow","onNewBodyRowColumn","stringValue","__extends$1","__decorate$1","CsvCreator","getMergedParams","isExportSuppressed","packagedFile","skipDefaultParams","HEADER_GROUPING","HEADER","BODY","GridSerializer","gridSerializingSession","getColumnsToExport","prepareSession","prependContent","exportColumnGroups","exportHeaders","processPinnedTopRows","processRows","processPinnedBottomRows","appendContent","serializeChain","rowSkipper","shouldRowBeSkipped","skipSingleChildrenGroup","skipLowestSingleChildrenGroup","isExplicitExportSelection","rowPositions","isLeafNode","shouldSkipCurrentGroup","skipGroups","skipRowGroups","skipPinnedTop","skipPinnedBottom","rowAccumulator","getCustomContentBelowRow","customFooter","skipColumnGroupHeaders","recursivelyAddHeaderGroups","skipColumnHeaders","gridRowIterator_1","usingCsrm","usingSsrm","onlySelectedNonStandardModel","exportedRows","onlySelectedAllPages","replicateSortedOrder","compareNodes","directChildrenHeaderGroups","doAddHeaderHeader","gridRowIterator","columnIndex","collapsibleGroupRanges","collapsibleGroups","currentIdx","lastGroup","XmlFactory","createHeader","headerElement","encoding","standalone","headerStart","createXml","xmlElement","booleanTransformer","prefixedAttributes","prefixedSet","returnAttributeIfPopulated","rawMap","textNode","xmlValue","crcTable","ZipContainer","addFolders","addFolder","folders","created","isBase64","addFile","getContent","mimeType","textOutput","buildFileStream","uInt8Output","buildUint8Array","clearStream","fData","totalFiles","foData","lL","cL","totalFiles_1","totalFiles_1_1","getHeader","fileHeader","folderHeader","buildFolderEnd","currentFile","utfPath","isUTF8","convertTime","dt","convertDate","extraFields","uExtraFieldPath","getFromCrc32Table","getConvertedContent","convertedContent","tLen","cLen","lLen","uint8","iterable","crc","AllCommunityModules","MD5","ieCompatibility","md5","md5cycle","ff","gg","add32","cmn","md51","md5blk","tail","md5blks","rhex","hex_chr","add32Compat","add32Std","lsw","__read$1c","watermarkMessage","validateLicense","licenseKey","isWebsiteUrl","outputMissingLicenseKey","outputInvalidLicenseKey","extractLicenseComponents","license","isTrial","validateLicenseKeyForVersion","validateLegacyKey","extractExpiry","restrictionHashed","cleanedLicenseKey","hashStart","extractBracketedInformation","getLicenseDetails","trialExpired","isDisplayWatermark","isLocalhost","getWatermarkMessage","getHostname","hostname","getGridReleaseDate","RELEASE_INFORMATION","keystr","utf8_decode","validateForTrial","gridReleaseDate","formattedExpiryDate","formattedReleaseDate","outputIncompatibleVersion","outputExpiredTrialKey","__extends$3l","GridLicenseManager","licenseManager","__extends$3k","WatermarkComp","shouldDisplayWatermark","eLicenseTextRef","VERSION$i","__extends$3j","__values$D","SOURCE_PASTE","EXPORT_TYPE_DRAG_COPY","EXPORT_TYPE_CLIPBOARD","CellClearType","CellRange","SelectedRows","FocusedCell","ClipboardService","lastPasteOperationTime","navigatorApiFailed","ClipboardService_1","readText","processClipboardData","pasteFromClipboardLegacy","handlePasteEvent","currentPastOperationTime","executeOnTempElement","textArea","refocusLastFocusedCell","getClipboardDelimiter","parsedData","stringToArray","removeLastLineIfBlank","doPasteOperation","cellsToFlash","updatedRowNodes","hasOnlyOneValueToPaste","pasteIntoActiveRange","pasteStartingFromFocusedCell","strData","isNewline","insideQuotedField","out_row_1","out_column_1","out_position_1","previousChar","currentChar","nextChar","ensureDataExists","pasteOperationFunc","dispatchFlashCells","fireRowChanged","abortRepeatingPasteIntoRows","getRangeSize","indexOffset","dataRowIndex","iterateActiveRanges","currentRowData","columnsToPasteInto","isPasteSingleValueIntoRange","pasteSingleValueIntoRange","pasteMultipleValues","updateCellValue","firstRowValues","firstRowValue","lastLine","clipboardGridData","rowPointer","skipGroupRows","clipboardRowData","getNextGoodRowNode","processedValue","copyOrCutToClipboard","cut","includeHeaders","includeGroupHeaders","copyParams","shouldCopyRows","cellClearType","shouldSkipSingleCellRange","copyFocusedCellToClipboard","clearCellsAfterCopy","clearSelectedRows","clearCellValue","selected_1","selected_1_1","columns_1","columns_1_1","onlyFirst","rowCallback","iterateActiveRange","isLastRange","rangeIndex","isLastRow","areAllRangesAbleToMerge","buildDataFromMergedRanges","buildDataFromRanges","copyDataToClipboard","columnsSet","rowPositionsMap","allRowPositions","allCellsToFlash","getRangeRowPositionsAndCellsToFlash","rowPositionAsString","exportedColumns","buildExportParams","userProvidedFunc","copyDataToClipboardLegacy","focusedElementBefore","callbackNow","callbackAfter","eDoc","eTempInput","guiRoot","startRangeIndex","endRangeIndex","VERSION$h","__extends$3i","ExpandState","EXPANDED","COLLAPSED","INDETERMINATE","PrimaryColsHeaderPanel","createExpandIcons","eExpand","onSelectClicked","eFilterTextField","onFilterTextChanged","onMiniFilterKeyPress","showOrHideOptions","eExpandChecked","eExpandUnchecked","eExpandIndeterminate","setExpandState","showFilter","suppressColumnFilter","showSelect","suppressColumnSelectAll","showExpand","suppressColumnExpandAll","groupsPresent","onFilterTextChangedDebounced","DEBOUNCE_DELAY","selectState","expandState","setSelectionState","ColumnModelItem","isGroup","getDept","isPassesFilter","passesFilter","setPassesFilter","__extends$3h","__read$1b","__spread$J","__values$C","ToolPanelContextMenu","initializeProperties","buildMenuItemMap","displayContextMenu","allowGrouping","allowValues","allowPivoting","menuItemMap","allowedFunction","activeFunction","activateLabel","deactivateLabel","activateFunction","groupedColumns","addColumnsToList","deActivateFunction","removeColumnsFromList","removeIcon","menuList","menuItemsMapped","getMappedMenuItems","isInactive","__extends$3g","ToolPanelColumnGroupComp","modelItem","allowDragging","focusWrapper","processingColumnStateChange","eDragHandle","checkboxGui","cbSelect","checkboxInput","onColumnStateChanged","onLabelClicked","onCheckboxChanged","onExpandChanged","setOpenClosedIcons","addVisibilityListenersToAllChildren","refreshAriaLabel","isSelectable","onSelectAllChanged","contextMenu","onChangeCommon","onExpandOrContractClicked","eColumnGroupIcons","getVisibleLeafColumns","extractCols","modelItemUtils","selectAllChildren","columnLabel","checkboxValue","visibilityLabel","workOutSelectedValue","readOnlyValue","workOutReadOnlyValue","visibleLeafColumns","checkedCount","uncheckedCount","isColumnChecked","colsThatCanAction","pivoted","grouped","aggregated","oldState","folderOpen","cbValue","__extends$3f","PRIMARY_COLS_LIST_ITEM_HOVERED","PrimaryColsListPanelItemDragFeature","virtualList","currentDragColumn","lastHoveredColumnItem","columnPanelItemDragStart","columnPanelItemDragEnd","createDropTarget","createAutoScrollService","getCurrentColumns","moveBlocked","virtualListGui","hoveredColumnItem","getDragColumnItem","clearHoveredItems","maxLen","getDisplayedColsList","normalizedRowIndex","targetIndex","getTargetIndex","getMoveDiff","currentColumns","targetColumn","columnItemComponent","targetColumnIndex","adjustedTarget","__extends$3e","ToolPanelColumnComp","groupsExist","anyFunctionActive","canBeToggled","canBeDragged","noFunctionsAllowed","checkboxPassive","__extends$3d","UIColumnModel","PRIMARY_COLS_LIST_PANEL_CLASS","PrimaryColsListPanel","destroyColumnItemFuncs","destroyColumnTree","allColsTree","suppressSyncLayoutWithGrid","fireSelectionChangedEvent","expandGroupsByDefault","contractColumnSelection","columnListName","listItemElement","createComponentFromItem","suppressColumnMove","renderedGroup","columnComp","expandedStates","getExpandedStates","pivotModeActive","buildTreeFromProvidedColumnDefs","buildTreeFromWhatGridIsDisplaying","setExpandedStates","markFilteredColumns","flattenAndFilterModel","displayedColsList","forEachItem","colGroup","colDefService","syncLayoutWithGrid","setColumnLayout","buildListModel","columnExpandedListener","onColumnExpanded","recursivelyBuild","parentList","createGroupItem","createColumnItem","columnGroupDef","removeFunc","recursiveFunc","focusedRow","focusRowIfAlive","notifyListeners","doSetExpandedAll","setGroupsExpanded","groupIds","expandedGroupIds","unrecognisedGroupIds","getExpandState","expandedCount","notExpandedCount","doSetSelectedAll","selectAllChecked","getSelectionState","setFilterText","recursivelyCheckFilter","parentPasses","atLeastOneChildPassed","groupPasses_1","childPasses","fireGroupExpandedEvent","selectionState","__extends$3c","PivotModePanel","cbPivotMode","onBtPivotMode","__extends$3b","AggregationStage","noValueColumns","noUserAgg","aggDetails","createAggDetails","recursivelyCreateAggData","measureColumns","isSuppressAggFilteredOnly","notPivoting","aggregateRowNode","aggResult","measureColumnsMissing","pivotColumnsMissing","aggregateRowNodeUsingValuesOnly","aggregateRowNodeUsingValuesAndPivot","secondaryCol","getValuesFromMappedSet","getValuesPivotNonLeaf","aggregateValues","aggResults","currentColId","changedValueColumns","notChangedValueColumns","values2d","getValuesNormal","valueColumn","mappedSet","mapPointer","valueColumnCount","aggFuncOrString","pivotResultColumn","BatchRemover","allSets","removeFromChildrenAfterGroup","getSet","isRemoveFromAllLeafChildren","removeFromAllLeafChildren","preventRemoveFromAllLeafChildren","getAllParents","nodeDetails","__extends$3a","__read$1a","__spread$I","GroupStage","groupIdSequence","createGroupingDetails","transactions","handleTransaction","shotgunResetEverything","positionLeafsAndGroups","orderGroups","selectableService","unbalancedNode_1","leafNodes_1","groupNodes_1","groupedCols","includeParents","groupedColCount","batchRemover","removeNodes","moveNodesInWrongPath","insertNodes","parentsWithChildrenRemoved","removeEmptyGroups","getInitialGroupOrderComparator","recursiveSort","getExistingPathForNode","infoToKeyMapper","oldPath","getGroupInfo","moveNode","removeNodesInStages","insertOneNode","leafRowNodes","removeNodesFromParents","postRemoveCreateFillerNodes","nodeParents","forEachParentGroup","nodesToRemove","provided","batchRemoverIsLocal","batchRemoverToUse","nodeToRemove","newGroupNode_1","findParentForNode","possibleEmptyGroups","checkAgain","possibleEmptyGroup","mapKey","getChildrenMappedKey","groupShouldBeRemoved","addToParent","areGroupColsEqual","checkAllGroupDataAfterColsChanged","setGroupData","noChangeInGroupingColumns","noFurtherProcessingNeeded","newGroupDisplayColIds","oldGroupingDetails","oldGroupDisplayColIds","newRowNodes","parentGroup","swapGroupWithUserNode","nextNode","groupInfo","getOrCreateNextNode","fillerGroup","userGroup","createGroup","groupNode","setExpandedInitialValue","userCallback","getGroupInfoFromCallback","getGroupInfoFromGroupColumns","keyExists","__extends$39","__assign$O","__read$19","__spread$H","PivotColDefService","PivotColDefService_1","createPivotColumnDefs","uniqueValues","pivotColumnGroupDefs","recursiveBuildGroup","pivotColumnDefs","extractColDefs","addRowGroupTotals","addExpandablePivotGroups","addPivotTotalsToGroups","uniqueValue","maxDepth","primaryPivotColumns","buildMeasureCols","primaryPivotColumnDefs","headerNameComparator","leafCols_1","newPivotKeys","createColDef","generateColumnGroupId","measureCol","columnName","recursivelyAddSubTotals","groupDef","currentPivotColumnDefs","childAcc_1","grp","firstGroup_1","totalColDef","pivotValueColId","valueCols","valueCol","sameAggFuncs","recursivelyAddPivotTotal","childColIds","extractColIdsForValueColumn","withGroup","createRowGroupTotal","parentChildren","PIVOT_ROW_TOTAL_PREFIX","valueGroup","totalColumn","colDefToCopy","generateColumnId","userComparator","existingList","updatedList","measureColumnId","__extends$38","PivotStage","executePivotOn","executePivotOff","aggregationColumnsHashLastTime","bucketUpRowNodes","uniqueValuesChanged","setUniqueValues","aggregationColumns","aggregationColumnsHash","aggregationFuncsHash","aggregationColumnsChanged","aggregationFuncsChanged","aggregationFuncsHashLastTime","groupColumnsHash","groupColumnsChanged","groupColumnsHashLastTime","pivotColDefService","recursivelyBucketFilteredChildren","bucketRowNode","bucketChildren","mappedChildren","pivotColumn","getPivotColumnDefs","__extends$37","AGBigInt","BigInt","AggFuncService","aggFuncsMap","AggFuncService_1","initialiseWithDefaultAggregations","AGG_SUM","aggSum","AGG_FIRST","aggFirst","AGG_LAST","aggLast","AGG_MIN","aggMin","AGG_MAX","aggMax","AGG_COUNT","aggCount","AGG_AVG","aggAvg","isAggFuncPossible","allKeys","getFuncNames","allowed","funcExists","defaultAgg","valueToAdd","existingAggData","__extends$36","DropZoneColumnComp","dropZonePurpose","popupShowing","isFunctionsReadOnly","addElementClasses","eButton","setupAria","getColumnAndAggFuncName","aggFuncName","aggSeparator","asc","columnSort","isSortSuppressed","ariaInstructions","isGroupingZone","isAggregationZone","aggregationMenuAria","sortProgressAria","deleteAria","canSort","performSort_1","setTextValue","setupRemove","onShowAggFuncSelection","EVENT_COLUMN_REMOVE","isEnter","displayValueSanitised","createAggSelect","selectItem","rowToFocus","aggFuncStringTranslated","AggItemComp","__extends$35","__read$18","__spread$G","BaseDropZonePanel","STATE_NOT_DRAGGING","guiDestroyFunctions","childColumnComponents","resizeEnabled","eColumnDropList","toggleResizable","destroyGui","refreshGui","setupDropTarget","getAriaLabel","isNext","isPrevious","checkInsertIndex","getNewInsertIndex","mouseLocation","boundsList","hoveredIndex","checkDragStartedBySelf","STATE_REARRANGE_COLUMNS","potentialDndColumns","STATE_NEW_COLUMNS_IN","goodDragColumns","isColumnDroppable","isRowGroupPanel","colModel","isPotentialDndColumns","removeColumns","addColumns","rearrangeColumns","columnsToRemove","newColumnList","getExistingColumns","updateColumns","columnsToAdd","colsToAddNoDuplicates","getNonGhostColumns","focusedIndex","getFocusedItem","alternateElement","addIconAndTitleToGui","addEmptyMessageToGui","addColumnsToGui","restoreFocus","itemsToAddToGui","createColumnComponent","dndColumns","columnComponent","addArrow","addAriaLabelsToComponents","isExistingColumnsEmpty","eMessage","emptyMessage","__extends$34","RowGroupDropZonePanel","passBeansUp","dragAndDropIcon","__extends$33","PivotDropZonePanel","__extends$32","GridHeaderDropZones","createNorthPanel","topPanelGui","dropPanelVisibleListener","onDropPanelVisible","rowGroupComp","pivotComp","bothDisplayed","__extends$31","FilterAggregatesStage","isAggFilterActive","applyFilterToNode","preserveChildren","setAllChildrenCountTreeData","setAllChildrenCountGridGrouping","VERSION$g","__extends$30","GroupFilter","validateParams","updateGroups","updateGroupField","getUnderlyingFilters","getSourceColumns","eGroupField","eGroupFieldSelect","allSourceColumns","sourceColumn","selectedColumn","createGroupFieldSelectElement","updateSelectedColumn","filterColumnPairs","selectedFilter","filterPromises","addUnderlyingFilterElement","eUnderlyingFilter","afterGuiAttachedParams","selectedFilterColumnPair","getFilterColumnPair","EVENT_SELECTED_COLUMN_CHANGED","getSelectedFilter","getSelectedColumn","__extends$2$","GroupFloatingFilterComp","canShowUnderlyingFloatingFilter","setupUnderlyingFloatingFilterElement","setupReadOnlyFloatingFilterElement","onSelectedColumnChanged","updateDisplayedValue","eFloatingFilter","showingUnderlyingFloatingFilter","underlyingFloatingFilter","columnVisibleChangedListener","onColumnVisibleChanged","_model","__extends$2_","ValuesDropZonePanel","__extends$2Z","PrimaryColsPanel","primaryColsHeaderPanel","primaryColsListPanel","onGroupExpanded","onSelectionChange","onExpandAll","onCollapseAll","onSelectAll","onUnselectAll","expandGroups","collapseGroups","__extends$2Y","__assign$N","ColumnToolPanel","childDestroyFuncs","suppressPivotMode","suppressRowGroups","suppressValues","suppressPivots","isRowGroupingModuleLoaded","pivotModePanel","primaryColsPanel","rowGroupDropZonePanel","valuesDropZonePanel","pivotDropZonePanel","setLastVisible","pivotModeListener_1","resetChildrenHeight","setPivotModeSectionVisible","setRowGroupsSectionVisible","setValuesSectionVisible","setPivotSectionVisible","setResizers","panel","columnDrop","columnDropEls","lastVisible","expandColumnGroups","collapseColumnGroups","destroyChildren","__extends$2X","HorizontalResizeComp","setElementToResize","elementToResize","setInverted","dispatchResizeEvent","started","ended","startingWidth","inverted","setMinWidth","__extends$2W","SideBarButtonComp","getToolPanelId","setIcon","eToggleButton","onButtonPressed","labelKey","labelDefault","eIconWrapper","iconKey","EVENT_TOGGLE_BUTTON_CLICKED","__extends$2V","SideBarButtonsComp","buttonComps","setToolPanelDefs","toolPanelDefs","addButtonComp","setActiveButton","buttonComp","EVENT_SIDE_BAR_BUTTON_CLICKED","toolPanelId","clearButtons","SideBarDefParser","toParse","toolPanels","DEFAULT_COLUMN_COMP","DEFAULT_FILTER_COMP","defaultToolPanel","comps_1","DEFAULT_BY_KEY","parseComponents","hiddenByDefault","toAdd","__extends$2U","ToolPanelWrapper","setupResize","resizeBar","setToolPanelDef","setToolPanelComponent","compInstance","toolPanelCompInstance","setResizerSizerSide","__extends$2T","SideBarComp","toolPanelWrappers","sideBarButtonsComp","onToolPanelButtonClicked","setSideBarDef","clearDownUi","sideBarGui","openPanel","currentButton","innerButton","destroyToolPanelWrappers","sideBarRaw","setupToolPanels","resizerSide","currentlyOpenedKey","raiseToolPanelVisibleEvent","toolPanelWrapper","previousKey","activeToolPanel","ToolPanelColDefService","isColGroupDef","invalidColIds","createDummyColGroup","children_1","mappedResults","syncLayoutCallback","leafPathTrees","getLeafPathTrees","mergeLeafPathTrees","getLeafPathTree","leafPathTree","mergeTrees","treeA","treeB","mergeResult","groupToMerge","addChildrenToGroup","pathB","pathA","currentSubGroup","currentSubGroupToAdd","existingChildIds","childGroupAlreadyExists","lastChildIsDifferent","currentGroup","groupToAdd","subGroup","VERSION$f","ModelItemUtils","colTree","extractAllLeafColumns","setAllColumns","setAllPivot","setAllVisible","colStateItems","setAllPivotPassive","setAllPivotActive","copyOfPivotColumns","copyOfValueColumns","copyOfRowGroupColumns","pivotChanged","rowGroupChanged","VERSION$e","ss","excelWorkbook","Width","MergeAcross","StyleID","Type","worksheet","ws","documentProperties","styleProperties","Indent","ReadingOrder","readingOrder","Rotate","ShrinkToFit","shrinkToFit","VerticalText","verticalText","WrapText","borders","borderBottom","borderLeft","borderRight","borderTop","Position","Weight","Bold","FontName","fontName","Italic","italic","Outline","Size","StrikeThrough","strikeThrough","Underline","underline","VerticalAlign","CharSet","Family","interior","PatternColor","patternColor","Protected","protected","HideFormula","hideFormula","Format","ExcelXmlFactory","createExcel","currentWorksheet","excelXmlHeader","docProps","eWorkbook","boolean","docProperties","stylesXmlElement","styleXmlElement","addProperty","factoryMode","INCH_TO_EMU","numberFormatMap","pixelsToPoint","pointsToPixel","pixelsToEMU","getFontFamilyId","getHeightFromProperty","setExcelImageTotalWidth","columnsInSpan","setExcelImageTotalHeight","totalHeight","nextRowHeight","createXmlPart","getExcelColumnName","tableIdx","__assign$M","__read$17","__spread$F","BaseExcelSerializingSession","mixedStyles","mixedStyleCounter","stylesByIds","baseExcelStyles","customContent","rowObj","addImage","excelStyleId","getStyleId","createCell","getDataTypeForValue","createMergedCell","outlineLevel","collapsed","currentCells","headerRowHeight","collapsibleRanges","styleIds","styleLinker","onNewRow","onNewHeaderColumn","onNewBodyColumn","convertColumnToExcel","longestRow","isFormula","autoConvertFormulas","isNumerical","getStyleById","nameForCol","onNewColumnAccumulator","skipCols","valueForCell","addedImage","addNewMixedStyle","excelID","excelId","resultantStyle","excelStyle","ExcelXmlSerializingSession","actualStyle","typeTransformed","getValueTransformed","suppressTextAsCDATA","cdataStart","cdataEnd","cdataEndRegex","numOfCells","coreFactory","author","jsonDate","dcterms","dcmitype","xsi","contentTypeFactory","Extension","PartName","ContentType","__read$16","__spread$E","contentTypesFactory","sheetLen","worksheets","sheetsWithImages","ExcelXlsxFactory","worksheetImages","imageTypesObject","workbookImageIds","imageDocs","imageTypes","getAnchor","imageAnchor","getExt","recolor","getNvPicPr","descr","altText","preferRelativeResize","getColorDetails","tint","getDuoTone","primaryColor","secondaryColor","getBlipFill","blipChildren","transparency","amt","bright","cstate","getSpPr","imageBoxSize","xfrm","rot","prst","getImageBoxSize","fitCell","_f","_g","_j","getPicture","worksheetImageIndex","drawingFactory","sheetIndex","sheetImages","sheetImageIds","worksheetImageIds","boxSize","editAs","__read$15","getColorChildren","lastClr","__read$14","getFont$1","script","typeface","panose","fontScheme","__read$13","getPropertyVal","getGs","schemeColor","lumMod","shade","getSolidFill","getGradFill","rotWithShape","gs1","gs2","gs3","ang","scaled","getLine","cmpd","algn","lim","getEffectStyle","blurRad","dist","getFillStyleList","getLineStyleList","getEffectStyleList","getBgFillStyleList","formatScheme","themeElements","officeTheme","buildSharedString","strMap","sharedStrings","strings","uniqueCount","numberFormatFactory","formatCode","numFmtId","numberFormatsFactory","numberFormats","fontFactory","colorTheme","fontsFactory","fillFactory","fgTheme","fgTint","fgRgb","bgRgb","bgIndexed","pf","patternType","fillsFactory","getWeightName","mappedBorderNames","Dot","Dash","Double","DashDot","DashDotDot","SlantDashDot","mediumBorders","colorMap","Solid","Gray50","Gray75","Gray25","HorzStripe","VertStripe","ReverseDiagStripe","DiagStripe","DiagCross","ThickDiagCross","ThinHorzStripe","ThinVertStripe","ThinReverseDiagStripe","ThinDiagStripe","ThinHorzCross","ThinDiagCross","Gray125","Gray0625","horizontalAlignmentMap","Automatic","Fill","Justify","CenterAcrossSelection","Distributed","JustifyDistributed","verticalAlignmentMap","convertLegacyPattern","convertLegacyColor","convertLegacyBorder","namedWeight","mappedName","convertLegacyHorizontalAlignment","convertLegacyVerticalAlignment","getBorderColor","borderFactory$1","diagonal","leftChildren","rightChildren","topChildren","bottomChildren","diagonalChildren","bordersFactory","getReadingOrderId","alignmentFactory","textRotation","protectionFactory","locked","xfFactory","xf","borderId","fillId","fontId","xfId","applyAlignment","applyProtection","applyBorder","applyFill","applyFont","applyNumberFormat","cellStylesXfsFactory","xfs","cellXfsFactory","borderFactory","builtinId","cellStylesFactory","cellStyles","__assign$L","stylesMap","registeredNumberFmts","registeredFonts","registeredFills","registeredBorders","registeredCellStyleXfs","registeredCellXfs","registeredCellStyles","currentSheet","getStyleName","resetStylesheetValues","registerFill","convertedPattern","convertedFillColor","convertedPatternColor","registerNumberFmt","registerBorders","bottomStyle","topStyle","leftStyle","rightStyle","bottomColor","topColor","leftColor","rightColor","currentBorder","registerFont","utf8Name","convertedColor","familyId","convertedUnderline","convertedVerticalAlign","currentFont","registerStyle","currentNumberFmt","stylesheetFactory","defaultFontSize","cellStylesXfs","cellXfs","defaultPivotStyle","defaultTableStyle","registerStyles","_currentSheet","sheetFactory","sheetId","sheetsFactory","workbookFactory","getExcelCellWidth","bestFit","excelWidth","customWidth","convertLegacyType","cellFactory","convertedType","__read$12","__spread$D","addEmptyCells","rowIdx","posCounter","excelPos","mergedCells","shouldDisplayCell","rowFactory","ht","customHeight","spans","mergeCellFactory","getMergedCellsAndAddColumnGroups","cellsWithCollapsibleGroups","lastCol","cellIdx","outputRow","rangeMap","currentRange","rangeString","refCol","currentOutlineLevel","getPageOrientation","addSheetData","sheetNumber","addMergeCells","mergedCell","addPageMargins","addPageSetup","pageSetup","horizontalDpi","verticalDpi","paperSize","replaceHeaderFooterTokens","getHeaderPosition","applyHeaderFontStyle","headerString","processHeaderFooterContent","buildHeaderFooter","headerFooterConfig","headersAndFooters","headerFooter","nameSuffix","addHeaderFooter","differentFirst","differentOddEven","even","addDrawingRel","addSheetPr","summaryBelow","addSheetFormatPr","maxOutline","baseColWidth","outlineLevelRow","worksheetFactory","createWorksheetChildren","relationshipFactory","Target","relationshipsFactory","relationship","__read$11","__spread$C","addSheetName","sheetNames","createWorksheet","buildImageMap","currentSheetIndex","registeredImage","calculatedImage","currentSheetImages","currentImage","imageType","buildSheetImageMap","worksheetImageIdMap","getStringPosition","resetFactory","createWorkbook","createStylesheet","createSharedStrings","createCore","createContentTypes","createRels","createTheme","createWorkbookRels","createDrawing","createDrawingRel","XMLArr","createWorksheetDrawingRel","currentRelationIndex","ExcelXlsxSerializingSession","addImageToCell","__assign$K","hasImages","imgCounter_1","firstImage","base64","imageRelationCounter","createImageRelationsForSheet","drawingFolder","drawingFileName","worksheetRelFile","ExcelCreator","setExportMode","packageFile","getExportMode","isXlsx","isHeader","isGroupHeader","headerClasses","applicableStyles","VERSION$d","EXPAND_STATE","FiltersToolPanelHeaderPanel","preConstruct","onSearchTextChanged","showFilterSearch","suppressFilterSearch","suppressExpandAll","filterGroupsPresent","onSearchTextChangedDebounced","searchText","currentExpandState","ToolPanelFilterComp","hideHeader","eFilterName","eFilterToolPanelHeader","toggleExpanded","onFilterOpened","eFilterIcon","onFilterDestroyed","getColumnFilterName","removeFilterElement","addFilterElement","collapse","filterPanelWrapper","underlyingFilter","filterContainerEl","agFilterToolPanelBody","refreshFilter","refreshVirtualList","ToolPanelFilterGroupComp","childFilterComps","expandedCallback","showingColumn","filterGroupComp","setGroupTitle","refreshFilterClass","addExpandCollapseListeners","addFilterChangedListeners","getFilterGroupName","filterGroupName","getFilterGroupId","hideGroupItem","forEachToolPanelFilterChild","collapseListener","getColumnGroupName","getColumnName","destroyFilters","FiltersToolPanelListPanel","filterGroupComps","syncFilterLayout","toolPanelColDefService","setFiltersLayout","recreateFilters","expansionState","getExpansionState","recursivelyAddComps","setFirstAndLastVisible","searchFilterText","searchFilters","fireExpandedEvent","recursivelyAddFilterGroupComps","shouldDisplayFilter","filtersExistInChildren","newDepth","recursiveGetExpansionState","expandFilterGroups","updatedGroupIds","updateGroupExpandState","filterGroup","expandFilters","updatedColIds","anyChildrenChanged_1","updateFilterExpandState","unrecognisedColIds","updateExpandCounts","performFilterSearch","searchFilter","firstVisible","recursivelySearch","filterItem","groupNamePasses","alreadyPassed","anyChildPasses","firstIdx","lastIdx","__assign$J","FiltersToolPanel","listenerDestroyFuncs","filtersToolPanelHeaderPanel","filtersToolPanelListPanel","onSearchChanged","setFilterLayout","collapseFilterGroups","collapseFilters","VERSION$c","TimeInterval","encode","rangeCallback","_encode","_decode","_rangeCallback","e0","CountableTimeInterval","getOffset","snapTo","initialOffset_1","encode$b","decode$b","offset$2","encode$a","decode$a","offset$1","encode$9","decode$9","encode$8","decode$8","encode$7","decode$7","baseSunday","sunday","monday","tuesday","wednesday","thursday","friday","saturday","encode$6","decode$6","encode$5","decode$5","encode$4","decode$4","encode$3","decode$3","encode$2","decode$2","encode$1","decode$1","MOBILE","isDesktop","HdpiCanvas","domLayer","overrideDevicePixelRatio","_pixelRatio","imageSource","setPixelRatio","resetTransform","toImage","getDataURL","fileFormat","dataUrl","overrideScale","imageRendering","_textMeasuringContext","_svgText","svgText","_has","textMetrics","textMeasuringContext","getTransform","getTextSize","measureSvgText","textSizeCache","fontCache","size_1","$save","$restore","$setTransform","verifyDepthZero","__assign$I","__read$10","BBox","containsPoint","collidesBBox","isInfinite","shrink","grow","paddingCopy","boxes","__read$$","setElements","AxB","multiplySelf","multiply","preMultiplySelf","inverse","rD","inverseTo","invertSelf","transformPoint","transformBBox","yx","h_w","h_h","toContext","flyweight","sourceMatrix","updateTransformMatrix","scalingX","scalingY","translationX","translationY","opts","scx","scy","bbcx","bbcy","sx","sy","scalingCenterX","scalingCenterY","rcx","rcy","rotationCenterX","rotationCenterY","tx4","ty4","fromContext","domMatrix","ID_MAP","createId$1","windowValue","RedrawType","TRIVIAL","MINOR","MAJOR","evalAvailable","eval","EVAL_USEABLE","SceneChangeDetection","changeCb","convertor","checkDirtyOnAssignment","privateKey","setterJs","getterJs","markDirtyTransform","_dirtyPath","_dirtyFont","ChangeDetectable","_source","markClean","_opts","__values$B","__read$_","__spread$B","PointerEvents","All","zIndexChangedCallback","dirtyZIndex","zIndexChanged","serialNumber","_nextSerialNumber","isContainerNode","childSet","inverseMatrix","_dirtyTransform","zIndexSubOrder","_datum","_setLayerManager","_layerManager","_debug","nodes_1","nodes_1_1","layerManager","calculateCumulativeMatrix","computeTransformMatrix","inverseTransformPoint","inverseTransformBBox","pickNode","hit","computeBBox","findNodes","computeTransformedBBox","renderCtx","stats","nodesRendered","clearBBox","visibilityChanged","dirtyCount","visibleCount","e_5_1","ascendingStringNumberUndefined","compoundAscending","toLiteral","doOnceFlags$1","doOnce$1","__read$Z","__spread$A","logContent","errorOnce","__assign$H","__values$A","__read$Y","__spread$z","lastBBox","moveLayer","isLayer","scene","getComputedOpacity","consoleLog","clipRect","clipBBox","resized","canvasCtxTransform","isChildDirty","currentBBox","counts","layersSkipped","nodesSkipped","groupVisible","ctxTransform","clipCtx","childRenderContext","skipped","children_1_1","layersRendered","setClipRectInGroupCoordinateSpace","HdpiOffscreenCanvas","OffscreenCanvas","transferToImageBitmap","__assign$G","__awaiter$f","_arguments","generator","fulfilled","adopt","__generator$f","ops","verb","__read$X","__spread$y","__values$z","buildSceneNodeHighlight","Scene","_nextZIndex","_nextLayerId","dirtyTree","renderBoundingBoxes","sceneNodeHighlight","pendingSize","lessThanZero","newLayer","sortLayers","domCanvases","newLayerIndex","newZIndex","newZIndexSubOrder","strip","layers_1","layers_1_1","debugSplitTimes","extraDebugStats","canvasCleared","redrawType","buildTree","debugStats","debugNodes","buildDirtyTree","debugSceneNodeHighlight","renderCtxStats","pct","rendered","time_1","stats_1","stats_1_1","regexpPredicate","stringPredicate","sceneNodeHighlight_1","sceneNodeHighlight_1_1","strokeRect","strokeText","treeNodeName","childrenDirtyTree","allEventListeners","eventListeners","hasEventListener","clearEventListeners","isString$1","isStringObject$1","isDate$1","isDiscrete","isContinuous","isNumber$4","checkDatum","isContinuousScale","__values$y","BREAK_TRANSFORM_CHAIN","CONFIG_KEY","initialiseConfig","propertyKeyOrSymbol","valueStoreKey","setters","getters","prevSet","prevGet","setters_1","setters_1_1","transformFn","addTransformToInstanceProperty","createDeprecationWarning","Deprecated","DeprecatedAndRenamedTo","newPropName","mapValue","warnDeprecated","__read$W","validColorString","parseHex","stringToRgba","nameToHex","fromHexString","fromRgbaString","tryParseFromString","po","pc","fromHSB","HSBtoRGB","padHex","toHexString","toRgbaString","fractionDigits","toHSB","RGBtoHSB","gc_1","bc","derive","hueShift","saturationFactor","brightnessFactor","opacityFactor","hsb","transparent","Validate","cleanKey","targetClass","targetClassName","predicateWithMessage","OPTIONAL","ARRAY","OPT_ARRAY","AND","predicates","OR","isComparable","otherField","OPT_FUNCTION","BOOLEAN","OPT_BOOLEAN","OPT_STRING","OPT_DATE","DATETIME_MS","OPT_DATETIME_MS","OPT_DATE_OR_DATETIME_MS","colorMessage","COLOR_STRING","OPT_COLOR_STRING","COLOR_STRING_ARRAY","OPT_COLOR_STRING_ARRAY","OPT_NUMBER","NUMBER_OR_NAN","NUMBER_ARRAY","OPT_NUMBER_ARRAY","STRING_ARRAY","STRING_UNION","BOOLEAN_ARRAY","FONT_WEIGHTS","FONT_STYLE","OPT_FONT_STYLE","FONT_WEIGHT","OPT_FONT_WEIGHT","LINE_DASH","OPT_LINE_DASH","LINE_CAPS","LINE_CAP","LINE_JOINS","LINE_JOIN","POSITIONS","POSITION","INTERACTION_RANGES","INTERACTION_RANGE","Layers","SERIES_BACKGROUND_ZINDEX","AXIS_GRID_ZINDEX","AXIS_ZINDEX","SERIES_CROSSLINE_RANGE_ZINDEX","SERIES_LAYER_ZINDEX","SERIES_CROSSHAIR_ZINDEX","SERIES_LABEL_ZINDEX","SERIES_CROSSLINE_LINE_ZINDEX","LEGEND_ZINDEX","ChartAxisDirection","__values$x","DEFAULT_TOOLTIP_CLASS","defaultTooltipCss$1","toTooltipHtml$1","POSITION_TYPES","POSITION_TYPE","TooltipPosition","yOffset","canvasElement","enableInteraction","class","lastClass","showArrow","tooltipRoot","IntersectionObserver","entries_1","entries_1_1","intersectionRatio","tooltipDocuments","styleElement","updateClass","newClass","toggleClass","canvasRect","naiveLeft","naiveTop","windowBounds","getWindowBoundingBox","pointerLeftOntoTooltip","sourceEvent","classListContains","__assign$F","__values$w","__read$V","__spread$x","SeriesNodePickMode","EXACT_SHAPE_MATCH","NEAREST_BY_MAIN_AXIS_FIRST","NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST","NEAREST_NODE","warnSeriesDeprecated","keyProperty","validation","valueProperty","sumProperties","SeriesNodeBaseClickEvent","SeriesNodeClickEvent","SeriesNodeDoubleClickEvent","SeriesItemHighlightStyle","SeriesHighlightStyle","dimOpacity","TextHighlightStyle","HighlightStyle","SeriesTooltip","SeriesTooltipInteraction","useSeriesGroupLayer","useLabelLayer","pickModes","directionKeys","rootGroup","directions","nodeDataRefresh","showInLegend","nodeClickRange","_declarationOrder","highlightStyle","contentGroup","highlightGroup","highlightNode","highlightLabel","labelGroup","visibleChanged","getBandScalePadding","getKeys","resolvedDirection","resolveKeyDirection","array_1_1","addValue","markNodeDataDirty","getOpacity","isItemIdHighlighted","getStrokeWidth","defaultStrokeWidth","highlightedDatum","highlightManager","getActiveHighlight","itemId","limitPickModes","pickModes_1","pickModes_1_1","pickMode","pickNodeExactShape","pickNodeMainAxisFirst","pickNodeClosestDatum","_point","_requireCategoryAxis","fireNodeClickEvent","eventObject","getNodeClickEvent","fireNodeDoubleClickEvent","getNodeDoubleClickEvent","toggleSeriesItem","_itemId","toggleOtherSeriesItems","_seriesToggled","_datumToggled","_suggestedEnabled","fixNumericExtent","extent","calculatePadding","highlightedZIndex","Padding$1","Padding","classOrFactory","_factory","isPrototypeOf","selectByClass","Class","selectByTag","Gradient","twoPi","normalizeAngle360","radians","normalizeAngle360Inclusive","normalizeAngle180","toRadians$1","createGradient","quarteredAngle","diagonalAngle","gradient_1","addColorStop","LINEAR_GRADIENT_REGEXP","Shape","lastInstanceId","lineDash","lineCap","fillShadow","createInstance","shape","restoreOwnStyles","restoreOverriddenStyles","protoStyles","linearGradientMatch","colors_1","colorsPart","colorRegex","alignedStart","fillStroke","renderFill","renderStroke","applyFillAlpha","applyShadow","isPointInPath","SceneFontChangeDetection","_splitText","_font","getFont","getPreciseBBox","getApproximateBBox","baselineDistance","emHeightAscent","emHeightDescent","getVerticalOffset","firstLineHeight","lineSize","getLineHeight","renderLines","renderCallback","lineHeights","linearRoot","quadraticRoots","cubicRoots","third","Im","t_1","theta","thirdA","twoSqrtQ","__values$v","segmentIntersection","ax2","ay2","bx2","by2","ub","cubicSegmentIntersections","px1","py1","px2","py2","px3","py3","px4","py4","intersections","bezierCoefficients","roots_1","roots_1_1","ttt","P1","P2","P3","P4","arcIntersections","counterClockwise","i1x","i2x","a2","intersectionAngle","__values$u","Command","Curve","Path2D","previousCommands","previousParams","previousClosedPath","commands","_closedPath","commands_1","commands_1_1","sAngle","eAngle","antiClockwise","cx2","cy2","trackChanges","cn","intersectionCount","ci","ScenePathChangeDetection","Path","checkPathDirty","dirtyPath","closedPath","isDirtyPath","updatePath","clipMode","__values$t","Marker","half","applyPath","moves","moves_1","moves_1_1","Square","ProxyPropertyOnWrite","childName","childProperty","ActionOnSet","newValueFn","oldValueFn","changeValueFn","changeValue","MarkerLabel","_markerSize","_spacing","markerSize","Cross","Diamond","Heart","rad","degree","Plus","getMarker$1","ChartUpdateType","FULL","PROCESS_DATA","PERFORM_LAYOUT","SERIES_UPDATE","TOOLTIP_RECALCULATION","SCENE_RENDER","__values$s","gridLayout","itemPaddingY","itemPaddingX","forceResult","processedBBoxCount","rawPages","processBBoxes","pageIndices","buildPages","startingGuess","estimateStartingGuess","guess","calculatePage","primaryCount","sumSecondary","currentMaxSecondary","currentPrimaryIndices","maxPrimaryValues","bboxIndex","primaryValueIdx","primaryValue","maxPageWidth","maxPageHeight","indices","transpose","colIndices","colBBoxes","columnHeight","pageWidth","pageHeight","innerData","dataIdx","itemIdx","primarySum","PaginationLabel","PaginationMarkerStyle","PaginationMarker","_shape","onMarkerShapeChange","Pagination","chartUpdateCallback","pageUpdateCallback","interactionManager","cursorManager","labelNode","activeStyle","inactiveStyle","previousButtonDisabled","_orientation","_nextButton","_previousButton","nextButton","previousButton","onPaginationClick","onPaginationMouseMove","updateMarkers","updateGroupVisibility","updatePositions","updateLabelPosition","updateNextButtonPosition","markerPadding","labelBBox","highlightActive","buttonStyle","updateMarker","onFirstPage","nextButtonContainsPoint","previousButtonContainsPoint","incrementPage","consume","decrementPage","attachPagination","__read$U","__spread$w","__values$r","ORIENTATIONS","OPT_ORIENTATION","LegendLabel","LegendMarker","LegendItem","toggleSeriesVisible","LegendListeners","legendItemClick","legendItemDoubleClick","tooltipManager","layoutService","itemSelection","oldSize","maxPageSize","paginationTrackingIndex","truncatedItems","destroyFns","characterWidths","updatePageNumber","interactionListeners","checkLegendClick","checkLegendDoubleClick","handleLegendMouseMove","layoutListeners","positionLegend","shrinkRect","getOrientation","getCharacterWidths","attachLegend","performLayout","markerShape","maxItemWidth","paddedMarkerWidth","markerLabel","updatePagination","maxCharLength","textChars","truncatedText","cumulativeWidth","textChars_1","textChars_1_1","trackingIndex","calculatePagination","paginationBBox","paginationVertical","newCurrentPage","legendItemsHeight","paginationX","paginationY","lastPassPaginationBBox","visibleStart","visibleEnd","rowSumColumnWidths","pageIndex","markerFill","markerStroke","markerStrokeWidth","markerFillOpacity","markerStrokeOpacity","getDatumForPoint","visibleChildBBoxes","closestLeftTop","childBBox","distX","distY","computePagedBBox","actualBBox","newEnabled","updateHighlight","forceNodeDataRefresh","legendData","getLegendData","visibleItemsCount","clickedItem","seriesItemCounts","seriesItemEnabledCounts","eachSeriesHasSingleItem_1","singleEnabledInEachSeries","singleSelectedWasNotClicked_1","singleEnabledInEachSeriesWasNotClicked_1","legendBBox","pointerInsideLegend","removeTooltip","newShrinkRect","calculateLegendDimensions","legendHeight","calculateTranslationPerpendicularDimension","legendPositionedBBox","updateExclusiveRect","aspectRatio","heightCoefficient","widthCoefficient","__values$q","SizeMonitor","NativeResizeObserver","contentRect","checkSize","checkClientSize","circleRectOverlap","rectRectOverlap","w2","h2","rectContainsRect","r2x","r2y","r2w","r2h","isPointLabelDatum","placeLabels","ln","axisLabelsOverlap","__awaiter$e","__generator$e","debouncedAnimationFrame","buildScheduler","debouncedCallback","scheduleFn","awaitingPromise","awaitingDone","scheduleCount","promiseRunning","busy","scheduleCb","maybePromise","await","MARKER_SHAPES","MARKER_SHAPE","SeriesMarker","maxSize","__read$T","ContinuousScale","defaultTickCount","minTickCount","maxTickCount","niceDomain","strictClampByDefault","cacheProps","transformInvert","fromDomain","convert","isReversed","toDomain","didChange","isDenseInterval","defaultMaxTickCount","__read$S","BandScale$5","BandScale","_bandwidth","_rawBandwidth","_paddingInner","_paddingOuter","rawStep","rawBandwidth","isEqual$2","fractionOrSignificantDigits","ArcType","Open","Chord","Round","fullPie","Caption","PADDING","_lineHeight","areArrayItemsStrictlyEqual","arrA","arrB","areArrayNumbersEqual","NumericTicks","tickMultipliers","isWithinBounds","diffCount","singleTickDomain","fractionalDigits","CONSTANTS","startOfYear","timeDiff","weekOfYear","startDay","firstWeekStartOffset","SUNDAY","MONDAY","THURSDAY","isoWeekOfYear","firstOfYearDay","unsignedOffset","FORMATTERS","PADS","padChar","buildFormatter","formatString","nextEscapeIdx","literalPart","maybePad","maybeFormatterSpecifier","maybeFormatter","dateTimeAsDate","__values$p","__read$R","__spread$v","_a$2","DefaultTimeFormats","MILLISECOND","SECOND","MINUTE","HOUR","WEEK_DAY","SHORT_MONTH","MONTH","SHORT_YEAR","YEAR","formatStrings","TimeScale$1","TimeScale","calculateDefaultTickFormat","defaultTimeFormat","ticks_1","ticks_1_1","getLowestGranularityFormat","firstTick","lastTick","startYear","stopYear","buildFormatString","yearChange","formatStringArray","timeEndIndex","weekDayIndex","defaultTickFormat","getTickInterval","countableTimeInterval","getTicksForInterval","getDefaultTicks","ticks_2","absInterval","reversedInterval","updateNiceDomain","updateNiceDomainIteration","n0","n1","intervalRange","__read$Q","__spread$u","_a$1","optionalGroup","nonCapturingGroup","formatRegEx","surroundedRegEx","parseFormatter","surrounded","formatBody","decimalTypes","integerTypes","removeTrailingZeros","insertSeparator","addSign","getSIPrefix","addPadding","absFloor","getSIPrefixPower","numString","integerChars","fractionalPart","siPrefixes","minSIPrefix","maxSIPrefix","minusSign","signType","padWidth","padLeft","padRight","__read$P","__spread$t","LogScale","baseLog","basePow","updateLogFn","updatePowFn","log2","logBase_1","pow10","absDiff","ticks$1","isPositive","availableSpacing","lastTickPosition","nextMagnitudeTickPosition","tickPosition","prevSpacing","nextSpacing","replaces","extent$4","Label$1","calculateLabelRotation","parallelFlipRotation","regularFlipRotation","labelRotation","parallelFlipFlag","regularFlipFlag","autoRotation","parallel","__read$O","__spread$s","TICK_COUNT","OPT_TICK_COUNT","OPT_TICK_INTERVAL","GRID_STYLE_KEYS","GRID_STYLE","Tags","TickLine","TickLabel","GridLine","GridArc","minSpacing","maxSpacing","autoRotate","autoRotateAngle","avoidCollisions","mirrored","dataDomain","axisGroup","lineNode","tickLineGroup","tickLabelGroup","crossLineGroup","gridGroup","gridLineGroup","gridArcGroup","tickLineGroupSelection","tickLabelGroupSelection","gridLineGroupSelection","gridArcGroupSelection","_crossLines","baseline","requestedRange","_visibleRange","_gridLength","gridStyle","_radialGrid","gridPadding","seriesAreaPadding","refreshScale","crossLine","detachCrossLine","attachCrossLine","initCrossLine","crossLines","updateRange","rr","vr","visibleRange","clippedRange","setCrossLinesVisible","attachAxis","detachAxis","inRangeEx","onLabelFormatChange","defaultLabelFormatter","labelFormatter","oldTitle","setTickCount","setTickInterval","updateTitle","setDomain","tickValues","tickMin","tickMax","primaryTickCount","calculateDomain","gridLength","parallelLabels","requestedRangeMin","requestedRangeMax","anySeriesActive","isAnySeriesActive","sideFlag","halfBandwidth","updateLine","labelOverlap","estimateTickCount","secondaryAxis","checkForOverlap","tickSpacing","maxIterations","unchanged","prevTicks","filterTicks","keepEvery_1","secondaryAxisTicks","updateSecondaryAxisTicks","updateSelections","updateLabels","labelData","labelSpacing","getLabelSpacing","rotated","updateGridLines","anyTickVisible","visibleFn","availableRange","defaultMinSpacing","defaultTickMinSpacing","_primaryTickCount","radialGrid","translationFn","styleCount_1","angularGridLength_1","labelAutoRotation","labelBboxes","labelX","labelMatrix","labelSelection","formatTickDatum","userHidden","translatedBBox","labelTextBaseline","labelRotated","labelAutoRotated","labelTextAlign","combinedRotation","titleVisible","titleNode","titleRotationFlag","bboxYDimension","tickBBox","tickWidth","formatDatum","clipTickLines","clipGrid","__read$N","LinearScale$1","LinearScale","prev0","prev1","__assign$E","__read$M","__spread$r","__values$o","flipChartAxisDirection","ChartAxis","moduleCtx","boundSeries","includeInvisibleDomains","useCalculatedTickCount","axisContext","linkedTo","domains_1","normaliseDataDomain","getLayoutState","tickSize","optionsKey","axisId","seriesKeys","scaleValueFormatter","scaleBandwidth","scaleConvert","scaleInvert","moduleMeta","initialiseModule","removeModule","isModuleEnabled","__read$L","__spread$q","_paddingOverrideEnabled","groupPaddingInner","valuesSet","paddings","__assign$D","__read$K","__values$n","jsonDiff","sourceType","classify","targetType","targetArray","allProps","propsChangedCount","lhsType","rhsType","allProps_1","allProps_1_1","NOT_SPECIFIED","jsonMerge","avoidDeepClone","nextProp","props_1","props_1_1","jsonApply","matcherPath","constructors","allowedTypes","targetAny","propertyMatcherPath","propertyPath","ctr","currentValueType","newValueType","allowableTypes","jsonWalk","jsons","jsonType","_loop_4","otherValues","__awaiter$d","__generator$d","__read$J","__values$m","DEFAULT_DIRECTION_KEYS","CartesianSeriesNodeBaseClickEvent","CartesianSeriesNodeClickEvent","CartesianSeriesNodeDoubleClickEvent","CartesianSeries","_contextNodeData","nodeDataDependencies","highlightSelection","hasMarkers","markerFactory","nodeFactory","highlightLabelSelection","subGroups","subGroupId","seriesItemEnabled","pathsPerSeries","pathsZIndexSubOrderOffset","renderLayerPerSubSeries","checkDomainXY","isContinuousX","isContinuousY","checkRangeXY","seriesRect","seriesHighlighted","anySeriesItemEnabled","newNodeDataDependencies","seriesRectWidth","seriesRectHeight","updateNodes","updateHighlightSelection","isPathOrSelectionDirty","createNodeData","updateSeriesGroups","updateSeriesGroupSelections","seriesIdx","datumSelection","markerSelection","contextData","nodeData","updatePaths","updateDatumSelection","updateLabelSelection","updateMarkerSelection","contextNodeData","totalGroups","subGroupZOffset","dataNodeGroup","markerGroup","pathParentGroup","paths_1_1","seriesOpacity","subGroupOpacities","isSubGroupOpacityDifferent","subOp","updateMarkerNodes","isHighlight","updateDatumNodes","updateLabelNodes","subGroupVisible","subGroupOpacity","paths_2","paths_2_1","updatePathNodes","labelItem","itemId_1","contextNodeData_1","contextNodeData_1_1","updateHighlightSelectionItem","isLabelEnabled","updateHighlightSelectionLabel","closestDatum","hitPoint","contextNodeData_2","contextNodeData_2_1","_k","datumX","_l","datumY","e_6_1","requireCategoryAxis","primaryDirection","hitPointCoords","contextNodeData_3","contextNodeData_3_1","_m","_o","newMinDistance","e_8_1","e_7_1","e_9","e_9_1","getLabelData","isAnySeriesVisible","e_10","e_10_1","validateXYData","xData","yData","yDepth","hasNumber","validationResult","CartesianSeriesMarker","sleepTimeoutMs","justifyContent","ChartOverlays","__read$I","__values$l","Listeners","registeredListeners","cancellableDispatch","listeners_1","listeners_1_1","reduceDispatch","reduceFn","listenerResult","listeners_2","listeners_2_1","listenerSymbol","BaseManager","__assign$C","__awaiter$c","__generator$c","__values$k","WINDOW_EVENT_HANDLERS","EVENT_HANDLERS","CSS","InteractionManager","eventHandler","processEvent","mouseDown","touchDown","EVENT_HANDLERS_1","EVENT_HANDLERS_1_1","WINDOW_EVENT_HANDLERS_1","WINDOW_EVENT_HANDLERS_1_1","interactionDocuments","WINDOW_EVENT_HANDLERS_2","WINDOW_EVENT_HANDLERS_2_1","EVENT_HANDLERS_2","EVENT_HANDLERS_2_1","decideInteractionEventTypes","types_1","types_1_1","calculateCoordinates","interactionEvent","buildEvent","consumed","dragStartElement","isEventOverElement","mouseButtonDown","fixOffsets","lastTouch","NULL_COORDS","PageTransitionEvent","persisted","offsetDragStart","offsetEvent","pageRect","builtEvent","__read$H","CursorManager","callerId","styleToApply","__read$G","isEqual$1","HighlightManager","activeHighlight","previousHighlight","highlightToApply","currentHighlight","__values$j","__read$F","TooltipManager","exclusiveAreas","hoverRef","checkExclusiveRects","getTooltipMeta","newAppliedExclusiveArea","appliedExclusiveArea","contentToApply","metaToApply","appliedState","renderInstantly","__assign$B","__values$i","__read$E","isEqual","ZoomManager","currentZoom","updateZoom","newZoom","getZoom","zoomToApply","__assign$A","isLayoutStage","isLayoutComplete","LayoutService","layoutProcessors","dispatchPerformLayout","stage","dispatchLayoutComplete","UpdateService","updateCallback","ChartHighlight","__assign$z","__awaiter$b","__generator$b","__values$h","__read$D","resources","processedOptions","userOptions","queuedUserOptions","seriesRoot","subtitle","footnote","_pendingFactoryUpdates","_performUpdateNoRenderCount","_performUpdateType","seriesToUpdate","performUpdateTrigger","error_1","performUpdate","_lastPerformUpdateError","_axes","lastInteractionEvent","pointerScheduler","handlePointer","onSeriesNodeClick","seriesNodeClickEvent","onSeriesNodeDoubleClick","seriesNodeDoubleClick","zoomManager","updateService","_lastAutoSize","positionPadding","positionCaptions","overlays","onDoubleClick","onLeave","disablePointer","changeHighlightDatum","autoSizeChanged","getModuleContext","keepTransferableResources","highlightOnly","requestFactoryUpdate","_processCallbacks","updatePending","awaitUpdateCompletion","seriesToUpdate_1","seriesToUpdate_1_1","performUpdateType","seriesRect_1","seriesUpdates","tooltipMeta","handleOverlays","removedAxes","removeAllSeries","addSeries","allSeries","beforeIndex","addSeriesListeners","freeSeries","updateAllSeriesListeners","assignSeriesToAxes","assignAxesToSeries","directionToAxesMap","directionAxes","newAxis","findMatchingAxis","directionAxes_1","directionAxes_1_1","axisKeys","directionKeys_1","directionKeys_1_1","updateLegend","visibleSeries","positionTopAndShrinkBBox","caption","baseY","bboxHeight","positionBottomAndShrinkBBox","getSeriesRect","pickSeriesNode","exactMatchOnly","maxDistance","reverseSeries","reverseSeries_1","reverseSeries_1_1","mouseY","lastPick","hoverRect","handlePointerTooltip","handlePointerNode","pixelRange","isNewDatum","getTooltipHtml","shouldUpdateTooltip","mergePointerDatum","checkSeriesNodeRange","checkSeriesNodeClick","checkSeriesNodeDoubleClick","nearestNode","nodeMidPoint","scrollX","newDatum","lastSeries","lastDatum","waitForUpdate","timeoutMs","handleNoDataOverlay","shouldDisplayNoDataOverlay","TreeNode","subtreeLeft","subtreeRight","leafCount","prelim","getLeftSibling","getLeftmostSibling","nextLeft","thread","nextRight","ticksToTree","insertTick","pathParts","lastPartIndex","pathPart","partIndex","isNotLeaf","moveSubtree","wm","vim","defaultAncestor","executeShifts","apportion","vop","vip","vom","sip","sop","sim","som","firstWalk","defaultAncestor_1","midpoint","leftSibling","Dimensions","secondWalk","thirdWalk","treeLayout","TreeLayout","leafNodes","nonLeafNodes","flipX","xSteps","ySteps","screenDimensions","__read$C","GroupedCategoryAxisLabel","GroupedCategoryAxis","tickScale","labelColor","gridLineSelection","axisLineSelection","separatorSelection","resizeTickTree","tickTreeLayout","domains","isNumericX","domain_1","tickTree","tickScaleDomain","rangeStart","rangeEnd","treeLabels","isLabelTree","labelBBoxes","maxLeafLabelWidth","labelGrid","separatorData","lineCount","styles_1","__assign$y","__awaiter$a","__generator$a","__values$g","__read$B","CartesianChart","paired","_lastAxisWidths","_lastVisibility","clipSeries","seriesPaddedRect","updateAxes","paddedRect","inputShrinkRect","axisWidths","liveAxisWidths","records","stableOutputs","otherAxisWidths","otherVisibility","otherW","lastPassAxisWidths","lastPassVisibility","updateAxesPass","lastPassSeriesRect","newAxisWidths","primaryTickCounts","paddedBounds","applySeriesPadding","crossLinePadding","buildCrossLinePadding","axisBound","buildAxisBound","buildSeriesRect","calculateAxisDimensions","addInterAxisPadding","newClipSeries","axisThickness","axisOffset","positionAxis","reversedAxes","horizontalPadding","verticalPadding","clampToOutsideSeriesRect","dimension","PolarSeries","computeLabelsBBox","__awaiter$9","__generator$9","PolarChart","fullSeriesRect","computeSeriesRect","computeCircle","seriesBox","polarSeries","setSeriesCircle","initialRadius","hideWhenNecessary","labelBoxes","labelBox","refined","refineCircle","labelsBox","circleTop","circleRight","circleBottom","padTop","padBottom","newRadius","minRadius","padHeight","__awaiter$8","__generator$8","HierarchyChart","__read$A","interpolatePattern","formatName","sanitizeHtml","calculateNiceSecondaryAxis","getTickStep","calculateNiceStart","magnitude","calculateNextNiceStep","__read$z","NumberAxis","NON_ZERO_NUMBER","LogAxis","crossesZero","hasZeroExtent","__assign$x","__values$f","__read$y","extendDomain","values_1_1","sumValues","values_2","values_2_1","toKeyString","SMALLEST_KEY_INTERVAL","smallestSoFar","SUM_VALUE_EXTENT","calculate","processedData","INVALID_VALUE","DataModel","dataVisible","reducers","processors","resolveProcessedDataIndex","resolveProcessedDataDef","groupByKeys","normaliseTo","extractData","sumData","normaliseData","reduceData","postProcessData","keyDefs","valueDefs","initDataDomainProcessor","resultData","resultDataIdx","dataLoop","data_1","data_1_1","keyIdx","keyDefs_1","keyDefs_1_1","valueIdx","valueDefs_1","valueDefs_1_1","propertyDomain","e_11","e_12","keyStr","existingData","e_11_1","dataIndex","e_12_1","e_13","e_14","e_15","sumDefs","resultSumValues","resultSumValueIndices","resultIdx","resultSumValueIndices_1","resultSumValueIndices_1_1","groupDomain","distinctValues","values_3","values_3_1","e_15_1","e_14_1","e_13_1","e_16","e_17","e_18","e_19","e_20","e_21","e_22","normalise","sumIdx","sumAbsExtent","sums_1","sums_1_1","sumAbs","e_16_1","sumRangeIdx","sums_2","sums_2_1","e_17_1","sumValues_1","valuesSumExtent","e_19_1","values_4","values_4_1","_p","_q","e_21_1","e_20_1","_r","e_22_1","e_18_1","e_23","e_24","reducerDefs","accValues","reducerIndex","reducers_1","reducers_1_1","e_24_1","e_23_1","accIdx","reduced","e_25","processorDefs","processorDefs_1","processorDefs_1_1","e_25_1","initDataDomainKey","updateDataDomain","initDataDomain","valueInDatum","missingValue","TimeAxis","datumFormat","datumFormatter","__awaiter$7","__generator$7","__read$x","__values$e","AreaSeriesLabel","AreaSeriesTooltip","AreaSeriesTag","Stroke","AreaSeries","_xKey","_yKeys","_visibles","yNames","processSeriesItemEnabled","visibles","_normalizedTo","absValue","yKeys","normalizedTo","enabledYKeys","dataModel","keyDef","yExtent","ySumExtent","groupedData","contexts","xScale","yScale","continuousY","xDataCount","cumulativePathValues","cumulativeMarkerValues","createPathCoordinates","createMarkerCoordinate","xDatum","yDatum","currY","prevYCoordinate","currYCoordinate","rawYDatum","normalized","normalizedAndValid","yKeyDataIndex","labelSelectionData","markerSelectionData","strokeSelectionData","yValues","fillSelectionData","fillPoints","fillPhantomPoints","strokePoints","datumIdx","datumGroup","datumArray","seriesDatum","nextValuesSameGroup","nextDatumGroup","nextXDatum","rawNextYIdx","rawNextYDatum","nextYDatum","cumulativeValue","yValue","windowX","windowY","currCoordinates","nextCoordinates","points_1","points_1_1","moveTo_1","points_2","points_2_1","isDatumHighlighted","seriesFillOpacity","highlightedFill","highlightFillOpacity","highlightedStroke","highlightedDatumStrokeWidth","customMarker","yKeyIndex","labelEnabled","nodeDatum","xValue","markerFormatter","xString","yString","processedYValue","tooltipRenderer","tooltipFormat","Rect","borderPath","lastUpdatePathStrokeWidth","effectiveStrokeWidth","microPixelEffectOpacity","pixelSize","lx","borderClipPath","ly","halfStrokeWidth","__awaiter$6","__generator$6","BAR_LABEL_PLACEMENTS","OPT_BAR_LABEL_PLACEMENT","BarSeriesNodeTag","Bar","BarSeriesLabel","BarSeriesTooltip","is2dArray$1","BarSeries","flipXY","groupScale","cumYKeyCount","flatYKeys","hideInLegend","yKeysCache","_grouped","stackGroups","smallestDataInterval","processYKeys","flattenKeys","flatKeys_1","keysInStacks_1","ungroupedKeys","newKeysIndices_1","prevYKeyCount_1","visibleStacks_1","visiblesIdx","getStackGroup","processYNames","map_1","activeSeriesItems","activeStacks","getCategoryAxis","getValueAxis","smallestX","keysExtent","calculateStep","smallestInterval","maxBands","bands","labelFontStyle","labelFontWeight","labelFontSize","labelFontFamily","labelPlacement","xBandWidth","barWidth","stackIndex","stackYKeys","prevMinY","prevMaxY","levelIndex","yIndex","barX","bottomY","labelY","colorIndex","visibleMax","stackGroup","visibleStacks","__awaiter$5","__generator$5","HISTOGRAM_AGGREGATIONS","HISTOGRAM_AGGREGATION","HistogramSeriesNodeTag","Bin","HistogramSeriesLabel","defaultBinCount","aggregationFunctions","bin","mean","HistogramBin","domainMin","domainMax","aggregatedValue","addDatum","domainWidth","calculateAggregatedValue","aggregationName","aggregationFunction","areaPlot","HistogramSeriesTooltip","HistogramSeries","binnedData","xDomain","yDomain","bins","aggregation","binCount","deriveBins","binStarts","binSize_1","firstBinEnd","calculateNiceBins","startGuess","getBins","binSize","placeDataInBins","derivedBins","sortedData","currentBin","yMinMax","binOfData","xDomainMax","xMinPx","xMaxPx","yZeroPx","yMaxPx","selectionDatumLabel","rangeMin","rangeMax","__awaiter$4","__generator$4","__values$d","LineSeriesLabel","LineSeriesTooltip","pointsData","_yKey","markerEnabled","prevXInRange","nextPoint","actualLength","xInRange","nextXInRange","linePath","nodeData_1","nodeData_1_1","lineStroke","__assign$w","__awaiter$3","__generator$3","__values$c","ScatterSeriesNodeBaseClickEvent","sizeKey","ScatterSeriesNodeClickEvent","ScatterSeriesNodeDoubleClickEvent","ScatterSeriesTooltip","ScatterSeries","sizeScale","labelName","_sizeKey","sizeKeyIdx","processedSize","xDataIdx","yDataIdx","placedLabels","placedNodeDatum","isPointInSector","sector","lineCollidesSector","outerStart","outerEnd","innerStart","innerEnd","boxCollidesSector","Sector","angleOffset","__assign$v","__awaiter$2","__generator$2","PieSeriesNodeBaseClickEvent","angleKey","calloutLabelKey","sectorLabelKey","radiusKey","PieSeriesNodeClickEvent","PieSeriesNodeDoubleClickEvent","PieNodeTag","Callout","PieSeriesCalloutLabel","minAngle","maxCollisionOffset","PieSeriesSectorLabel","positionOffset","positionRatio","PieSeriesCalloutLine","PieSeriesTooltip","PieTitle","DoughnutInnerLabel","DoughnutInnerCircle","radiusScale","groupSelection","groupSelectionData","sectorFormatData","angleScale","calloutLabel","sectorLabel","calloutLine","callout","angleName","innerLabels","radiusName","radiusMin","radiusMax","calloutLabelName","sectorLabelName","legendItemKey","outerRadiusOffset","outerRadiusRatio","innerRadiusOffset","innerRadiusRatio","datumSectorRefs","backgroundGroup","pieCalloutLabels","pieSectorLabels","calloutLabelSelection","sectorLabelSelection","innerLabelsSelection","_innerCircleConfig","_innerCircleNode","angleData","angleDataTotal","angleDataRatios","sectorLabelData","radiusData","getLabelFormatterParams","showValueDeprecationWarning_1","sectorLabelFormatter","radii","delta_1","datumIndex","quadrantTextOpts","angleValue","labelValue","calloutLabelValue","sectorLabelValue","deprecatedValue","formatterParams","getSectorFormat","midCos","midSin","labelMinAngle","labelVisible","midAngle180","quadrantStart","quadrantIndex","collisionTextAlign","collisionOffsetY","sectorFormat","highlightedStyle","getInnerRadius","getOuterRadius","updateRadiusScale","getTitleTranslationY","titleOffset","minLabelY","updateNodeMidPoint","updateGroupSelection","updateSectorFn","updateInnerCircle","sectorParent","sectorGrandParent","updateCalloutLineNodes","updateCalloutLabelNodes","updateSectorLabelNodes","updateInnerLabelNodes","calloutLength","calloutStrokeWidth","calloutColors","paddedLength","getLabelOverflow","seriesLeft","seriesRight","visibleTextPart","hasVerticalOverflow","textLength","computeCalloutLabelCollisionOffsets","fullData","shouldSkip","leftLabels","rightLabels","topLabels","bottomLabels","tempTextNode","getTextBBox","setTextDimensionalProps","avoidNeighbourYCollision","avoidYCollisions","midLabel","midIndex","avoidXCollisions","labelsCollideLabelsByY","paddedBoxes","labelsCollideLabelsByX","sectors","labelsCollideSectors","displayText","textBoxes","isDoughnut","singleVisibleSector","Boolean","isTextVisible","sectorBounds_1","circleRadius","textBBoxes","getMarginTop","getMarginBottom","labelsVisible","textBottoms","formattedAngleValue","titleText","labelParts","seriesToggled","datumToggled","suggestedEnabled","pieSeriesToggled","datumToggledLegendItemValue","HierarchySeries","DropShadow","interpolateColor","ColorScale","_range","parsedRange","__assign$u","__awaiter$1","__generator$1","TreemapSeriesTooltip","TreemapSeriesNodeBaseClickEvent","colorKey","TreemapSeriesNodeClickEvent","TreemapSeriesNodeDoubleClickEvent","TreemapSeriesLabel","TreemapValueLabel","TextNodeTag","Value","validateColor","TreemapTextHighlightStyle","TreemapHighlightStyle","TreemapSeries","large","colorRange","groupFill","groupStroke","groupStrokeWidth","tileStroke","tileStrokeWidth","colorName","rootName","highlightGroups","tileShadow","labelShadow","getNodePaddingTop","isLeaf","textSize","getNodePadding","outputNodesBoxes","stackSum","minRatioDiff","partitionSum","isVertical_1","partThickness","partLength","firstTileLength","stackThickness","start_1","childBox","width_2","height_2","createTreeNodeDatum","dataRoot","colorScaleValue","childNodeDatum","descendants","getTileFormat","isHighlighted","highlightedFillOpacity","highlightedTextColor","labelMeta","updateRectFn","updateLabelFn","buildLabelMeta","fillColor","hAlign","vAlign","treeNodeDatum","labelStyle","labelSize","availTextWidth","availTextHeight","valueConfig","valueStyle","valueMargin","valueSize","hasValueText","_direction","valueKey","types$1","bar","histogram","scatter","treemap","pie","CHART_TYPES","seriesType","isCartesian","isPolar","isHierarchy","seriesTypes","cartesianTypes","polarTypes","hierarchyTypes","deepMerge$1","__assign$t","palette$8","BOLD","INSIDE","ChartTheme","palette","createChartConfigPerChartType","getDefaults","cartesian","polar","hierarchy","applyOverrides","overrideOpts","chartConfig","getPalette","getAxisDefaults","getSeriesDefaults","getBarSeriesDefaults","getLineSeriesDefaults","seriesDefaults","getAreaSeriesDefaults","getScatterSeriesDefaults","getCartesianSeriesMarkerDefaults","getChartDefaults","groupedCategory","getOverridesByType","seriesThemeOverrides","defaultFontFamily","mergeWithParentDefaults","parentDefaults","cartesianDefaults","minHandle","gripLineGap","gripLineLength","maxHandle","polarDefaults","hierarchyDefaults","__assign$s","DarkTheme","fontColor","mutedFontColor","axisDefaults","seriesLabelDefaults","chartAxesDefaults","chartDefaults","seriesDarkThemeOverrides","__values$b","BaseModuleInstance","REGISTERED_MODULES","registerModule","otherModule","packageType","RangeHandle$1","RangeHandle","_fill","_stroke","_strokeWidth","_lineCap","_centerX","_centerY","_gripLineGap","_gripLineLength","axw","ayh","RangeMask","_fillOpacity","minRange","onRangeChange","computeVisibleRangeBBox","__assign$r","RangeSelector","updateHandles","NavigatorMask","rangeMask","NavigatorHandle","rangeHandle","rh","Navigator","minHandleDragging","maxHandleDragging","panHandleOffset","onDrag","getRatio","stopHandleDragging","CHART_NAVIGATOR_MODULE","chartTypes","Background","onLayoutComplete","rectNode","layoutHandle","CHART_BACKGROUND_MODULE","builtinSeriesTypes","extraSeriesFactories","initialisedSeriesModules","initialiseSeriesModules","initialiseSeriesModule","seriesFactory","chartTheme","darkTheme","getSeries","SeriesConstructor","DEFAULT_CARTESIAN_CHART_OVERRIDES","DEFAULT_BAR_CHART_OVERRIDES","DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES","__assign$q","transforms","is2dArray","yNamesMapping","yKeysMapping","barSeriesTransform","identityTransform","SERIES_TRANSFORMS","applySeriesTransform","palette$7","MaterialLight","palette$6","MaterialDark","palette$5","PastelLight","palette$4","PastelDark","palette$3","SolarLight","palette$2","SolarDark","palette$1","VividLight","VividDark","__assign$p","lightTheme","lightThemes","null","darkThemes","themes$1","getChartTheme","stockTheme","baseTheme","flattenedTheme","__assign$o","__values$a","groupSeriesByType","seriesOptions","seriesOptions_1","seriesOptions_1_1","indexKey","FAIL","SKIP","ARRAY_REDUCER","BOOLEAN_OR_REDUCER","DEFAULTING_ARRAY_REDUCER","YKEYS_REDUCER","activationValue","STACK_GROUPS_REDUCER","REDUCE_CONFIG","hideInChart","outputProp","reduceSeries","reducerConfig","defaultReduce","processSeriesOptions","preprocessed","CHART_AXES_TYPES","axisType","axesTypes","__assign$n","__values$9","optionsType","isAgCartesianChartOptions","specifiedType","isAgHierarchyChartOptions","isAgPolarChartOptions","isSeriesOptionType","isAxisOptionType","countArrayElements","input_1","input_1_1","takeColours","colours","colourIndex","noDataCloneMergeOptions","prepareOptions","fallbackOptions","sanityCheckOptions","userSuppliedOptionsType","globalTooltipPositionOptions","checkSeriesType","defaultSeriesType","defaultOverrides","isAxisType","prepareMainOptions","mergedOptions","axesThemes","seriesThemes","mergedSeries","mergeSeriesOptions","preparePieOptions","prepareSeries","validAxesTypes","prepareAxis","prepareEnabledOptions","mergedTooltipPosition","prepareTheme","cleanedTheme","themeConfig","paletteOptions","calculateSeriesPalette","colourCount","axisTheme","removeOptions","crossLinesTheme_1","visitingUserOpts","visitingMergedOpts","_enabledFromTheme","pieSeriesTheme","horizontalCrosslineTranslationDirections","xTranslationDirection","yTranslationDirection","insideLeft","insideRight","insideTop","insideBottom","insideTopLeft","insideBottomLeft","insideTopRight","insideBottomRight","verticalCrossLineTranslationDirections","calculateLabelTranslation","yDirection","crossLineTranslationDirections","xTranslation","yTranslation","POSITION_TOP_COORDINATES","POSITION_LEFT_COORDINATES","POSITION_RIGHT_COORDINATES","POSITION_BOTTOM_COORDINATES","POSITION_INSIDE_COORDINATES","POSITION_TOP_LEFT_COORDINATES","POSITION_BOTTOM_LEFT_COORDINATES","POSITION_TOP_RIGHT_COORDINATES","POSITION_BOTTOM_RIGHT_COORDINATES","labeldDirectionHandling","__assign$m","Range","CROSSLINE_LABEL_POSITIONS","OPT_CROSSLINE_LABEL_POSITION","OPT_CROSSLINE_TYPE","CrossLineLabel","CrossLine","LINE_LAYER_ZINDEX","crossLineRange","crossLineLabel","labelPoint","getZIndex","updateRangeNode","positionLabel","clippedRangeClamper","getRange","clampedYStart","clampedYEnd","validRange","computeLabelBBox","RANGE_LAYER_ZINDEX","crossLineLabelBBox","labelHeight","sourceImage","BackgroundImage","loadedSynchronously","containerWidth","onImageLoad","calculatePosition","__values$8","AgChart","AgChartInternal","createOrUpdate","AgChartInstanceProxy","isInstance","updateDelta","deltaOptions","updateUserDelta","getImageDataURL","signatureProps","mixinOpts","DEBUG","createChartInstance","chartToUpdate","dequeue","queuedOptionsIdx","lastUpdateOptions","maybeClone","prepareResizedChart","currentWidth","clonedChart","oldChart","transferableResource","applyChartOptions","optionalParams","completeOptions","modulesChanged","applyModules","registerListeners","applyOptionValues","applySeries","applyAxes","seriesOpts","seriesDataUpdate","updateType","rootModules","rootModules_1","rootModules_1_1","shouldBeEnabled","optSeries","seriesDiff","applySeriesValues","optAxes","oldOpts_1","axisDiff","createAxis","seriesInstance","moduleContext","axisOptions","applyAxisModules","rootModules_2","rootModules_2_1","JSON_APPLY_OPTIONS","innerCircle","ctrs","seriesTypeOverrides","VERSION$b","ChartDatasource","crossFiltering","chartData","pivoting","updatePivotKeysForSSRM","extractRowsFromGridRowModel","aggregateRowsByDimension","numRows","extractedRowData","groupNodeIndexes","groupsToRemove","filteredNodes","allRowNodes","getFilteredRowNodes","getAllRowNodes","modelLastRow","gridRowModel","dimensionCols","valueObject","valueString","getGroupLabels","ChartDataModel","DEFAULT_CATEGORY","columnNamesArr","filteredOutColId","actualValue","isScatter","groupIndexesToRemove_1","dataFromGrid","lastColId","dataAggregated","currentMap","groupItem_1","__children","dimCol","dimColId","groupItem","dataToAgg","dataToAggFiltered","aggResultFiltered","pivotKeySeparator","extractPivotKeySeparator","extractSeparator","childId","firstSecondaryCol","initialLabel","sortRowNodes","valueColState","dimensionColState","suppressComboChartWarnings","pivotChart","chartThemeName","referenceCellRange","suppliedCellRange","suppressChartRanges","unlinkChart","seriesChartTypes","initComboCharts","savedCustomSeriesChartTypes","updateCellRanges","updatedColState","valueCellRange","getAllChartColumns","allColsFromRanges","getAllColumnsFromRanges","updateColumnState","setDimensionCellRange","setValueCellRange","syncDimensionCellRange","updateSeriesChartTypes","isComboChart","seriesChartType","primaryOnly","updateSeriesChartTypesForCustomCombo","updateChartSeriesTypesForBuiltInCombos","SUPPORTED_COMBO_CHART_TYPES","updatedSeriesChartTypes","primaryChartType","secondaryChartType","selectedCols","lineIndex","getRowIndexes","isGrouping","getSelectedDimension","getSelectedValueCols","isGroupActive","groupDimensionSelected","getColDisplayName","getChartDataType","createCellRange","dimensionCellRange","endRowPosition","isNumberCol","extractLeafData","allCols","isInitialising","hasSelectedDimension","aggFuncDimension","defaultCategory","chartTranslationService","valueColumnsFromReferenceRange","updatedCol","idsMatch","orderedColIds","reorderColState","ascColStateOrder","colsInRange","selectedDimensionColState","aggFuncDimension_1","selectedValueCols","orderedColIds_1","selectedDimension","VALID_SERIES_TYPES","getSeriesType","ALL_AXIS_TYPES","getLegacyAxisType","createAgChartTheme","chartProxyParams","isTitleEnabled","chartOptionsToRestore","chartPaletteToRestore","chartThemeToRestore","themeName","getSelectedTheme","isStockTheme","rootTheme","lookupCustomChartTheme","gridOptionsThemeOverrides","getGridOptionsChartThemeOverrides","apiThemeOverrides","apiChartThemeOverrides","standaloneChartType","crossFilteringOverrides","createCrossFilterThemeOverrides","formattingPanelOverrides","inbuiltStockThemeOverrides","isIdenticalPalette","paletteA","paletteB","arrayCompare","overrideType","getChart","crossFilterCallback","STATIC_INBUILT_STOCK_THEME_AXES_OVERRIDES","titleEnabled","extraPadding","getExtraPaddingDirections","getChartThemeName","availableThemes","getChartThemes","customChartTheme","DEFAULT_THEMES","ChartController","setChartRange","updateForRangeChange","setCellRanges","updateForGridChange","updateForDataChange","raiseChartModelUpdateEvent","raiseChartRangeSelectionChangedEvent","updateForPanelChange","getChartUpdateParams","getSelectedValueColState","getChartData","getChartId","getCrossFilteringContext","lastSelectedChartId","getSeriesChartTypes","getChartModel","modelType","chartOptions","chartProxy","getChartThemeOverrides","chartPalette","getChartPalette","getCellRangeParams","getChartType","setChartType","raiseChartOptionsChangedEvent","setChartThemeName","isPivotChart","getThemes","getPalettes","getValueColState","displayNameMapper","getDimensionColState","getColStateForMenu","isDefaultCategorySelected","detachChartRange","setChartProxy","getChartProxy","isActiveXYChart","isChartLinked","customComboExists","updateSeriesChartType","updateChartType","prevSeriesChartType","EVENT_CHART_TYPE_CHANGED","EVENT_CHART_SERIES_CHART_TYPE_CHANGED","getActiveSeriesChartTypes","selectedColIds","getChartSeriesTypes","firstCellRange","EVENT_CHART_MODEL_UPDATE","raiseChartUpdatedEvent","EVENT_CHART_UPDATED","__values$7","DefaultDataPanelDef","ChartDataPanel","chartController","chartOptionsService","columnComps","updatePanels","clearComponents","currentChartType","groupExpandedState","getGroupExpandedState","getSeriesLabel_1","generateGetSeriesLabel","seriesChartTypeGroupComp","seriesChartTypeIndex","getDataPanelDef","prevVal","createSeriesChartTypeGroup","createCategoriesGroup","createSeriesGroup","restoreGroupExpandedState","groupType","categoriesGroupComp","seriesGroupComp","defaultExpanded","addComponentAtIndex","addChangeListener","getCategoryGroupTitle","inputName","getSeriesGroupTitle","pairedModeToggle","getPairedMode","setPairedMode","getSeriesLabel","addDragHandle","seriesGroupGui","seriesItemGroup","secondaryAxisComp","defaultText","availableChartTypes","chartTypeComp","isBubble","isInPairedMode","selectedValuesCount","indexToAxisLabel","axisLabel","escapedLabel","dataPanel","getSeriesOption","itemHovered","checkHoveredItem","lastDraggedColumn","lastHoveredItem","draggedColumnState","FontPanel","activeComps","fontGroup","initGroup","initFontFamilySelect","initFontWeightStyleSelect","initFontSizeSelect","initFontColorPicker","addCompToPanel","families","initialFont","valueIndex","capitalisedFontValue","familySelect","setFont","sizeSelect","weightStyles","selectedOption","weightStyleSelect","selectedWeightStyle","newColor","addItemToPanel","destroyActiveComps","LegendPanel","isExpandedOnInit","activePanels","legendGroup","initLegendGroup","initLegendPosition","initLegendPadding","initLegendItems","initLabelPanel","getChartOption","setChartOption","legendPositionSelect","legendPaddingSlider","getMaxValue","initSlider","defaultMaxValue","markerSizeSlider","markerStrokeSlider","markerPaddingSlider","itemPaddingXSlider","itemPaddingYSlider","fontPanelComp","destroyActivePanels","AxisTicksPanel","axisTicksGroup","initAxisTicks","axisTicksColorPicker","getAxisProperty","setAxisProperty","initInput","axisTicksWidthSlider","axisTicksSizeSlider","AgAngleSelect","dragListener","eParentCircle","parentCircleRect","calculateAngleDrag","eAngleValue","floatValue","updateNumberInput","normalizeNegativeValue","positionChildCircle","eChildCircle","calculatePolar","toDegrees","calculateCartesian","toRadians","getRadius","setOffsetX","setOffsetY","setRadius","radiansValue","AxisPanel","axisLabelUpdateFuncs","prevXRotation","prevYRotation","initAxis","initAxisLabels","axisColorInput","axisLineWidthSlider","axisTicksComp","labelPanelComp","addAdditionalLabelComps","addLabelPadding","createRotationWidgets","xRotationComp","yRotationComp","autoRotateCb","initLabelRotations","xRotation","yRotation","getLabelRotation","setLabelRotation","autoRotateCheckbox","degreesSymbol","createRotationComp","angleSelect","labelPaddingSlider","NavigatorPanel","navigatorGroup","initNavigator","navigatorHeightSlider","PaddingPanel","chartPaddingGroup","updateTopPadding","initChartPaddingItems","paddingTopSlider","paddingRightSlider","paddingBottomSlider","paddingLeftSlider","topPadding","BackgroundPanel","chartBackgroundGroup","initColorPicker","TitlePanel","initFontPanel","titlePlaceholder","hasTitle","getOption","isSilent","setOption","fontPanelParams","toolbarExists","currentTitleText","replaceableTitleText","createSpacingSlicer","spacingSlider","toolbarItemsFunc","defaultItems","chartGroup","initTitles","initPaddingPanel","initBackgroundPanel","titlePanelComp","paddingPanelComp","backgroundPanelComp","ShadowPanel","getSelectedSeries","shadowGroup","shadowBlurSlider","shadowXOffsetSlider","shadowYOffsetSlider","initSeriesShadow","setSeriesOption","shadowColorPicker","initFontPanelParams","seriesOptionLabelProperty","getFontOptionExpression","fontOption","getFontOption","setFontOption","MarkersPanel","seriesMarkersGroup","initMarkers","seriesMarkerShapeSelect","shouldHideEnabledCheckbox","seriesMarkerMinSizeSlider","seriesMarkerSizeSlider","seriesMarkerStrokeWidthSlider","CalloutPanel","calloutGroup","initCalloutOptions","calloutLengthSlider","calloutStrokeWidthSlider","labelOffsetSlider","SeriesPanel","widgetFuncs","initLineWidth","initStrokeWidth","initLineDash","lineOpacity","initLineOpacity","initFillOpacity","initLabels","initShadow","initTooltips","initBins","seriesWidgetMappings","getChartSeriesType","seriesGroup","refreshWidgets","updateSeriesType","initSeriesSelect","seriesSelect","getSeriesSelectOptions","seriesTooltipsToggle","addWidget","seriesStrokeWidthSlider","seriesLineWidthSlider","seriesLineDashSlider","seriesLineOpacitySlider","seriesFillOpacitySlider","labelParams","calloutPanelComp","sectorParams","sectorPanelComp","positionRatioComp","getSectorLabelPositionRatio","shadowPanelComp","markersPanelComp","seriesBinCountSlider","widget","seriesSelectOptions","activeChartTypes","DefaultFormatPanelDef","FormatPanel","panels","isGroupPanelShownInSeries","createPanels","destroyPanels","getFormatPanelDef","formatPanel","MiniChart","tooltipName","MiniChartWithAxes","axisOvershoot","addAxes","leftAxis","bottomAxis","createColumnRects","xScalePadding","xScaleDomain","yScaleDomain","createBars","createLinePaths","linesGroup","MiniColumn","columnData","updateColors","MiniStackedColumn","stackedColumns","MiniNormalizedColumn","MiniBar","bars","MiniStackedBar","MiniNormalizedBar","MiniDoughnut","centerRadiusScaler","angles","MiniPie","MiniLine","MiniScatter","pointsGroup","MiniBubble","MiniArea","pathData","areas","MiniStackedArea","MiniNormalizedArea","MiniHistogram","MiniColumnLineCombo","lineData","MiniAreaColumnCombo","areaData","yZero","firstX","MiniCustomCombo","axisStroke","penIcon","buildPenIconPath","miniChartMapping","stackedColumn","normalizedColumn","stackedBar","normalizedBar","doughnut","bubble","stackedArea","normalizedArea","columnLineCombo","areaColumnCombo","customCombo","MiniChartsContainer","chartGroups","wrappers","chartGroupValues","groupComponent","MiniClass","miniWrapper","miniClassChartType","updateSelectedMiniChart","selectedChartType","miniChartType","ChartSettingsPanel","miniChartsContainers","cardItems","activePaletteIndex","palettes","resetPalettes","ePrevBtn","eNextBtn","setActivePalette","getPrev","scrollSelectedIntoView","currentChart","eMiniChartsContainer","forceReset","settingsPanel","chartGroupsDef","isAnimating","eCardSelector","destroyMiniCharts","isActivePalette","miniChartsContainer","addCardLink","eNavBar","animationDirection","currentPalette","currentGui","futurePalette","nextGui","final","animatingClass","TabbedChartMenu","tabs","panelType","createTab","getPanelClass","tabbedLayout","TabPanelClass","eWrapperDiv","titleEl","translatedTitle","showTab","TAB_DATA","TAB_FORMAT","ChartMenu","eChartContainer","eMenuPanelContainer","chartSettings","defaultPanel","chartFormat","chartLink","toggleDetached","chartUnlink","chartDownload","saveChart","createButtons","refreshMenuClasses","eHideButton","toggleMenu","chartToolbarOptions","getToolbarOptions","defaultChartToolbarOptions","panelsOverride","menuOption","tabOptions","isLegacyToolbar_1","ignoreOptions_1","menuEl","buttonEl","EVENT_DOWNLOAD_CHART","createMenuPanel","defaultTab","tabbedMenu","hideMenu","showContainer","showParent","hideParent","eHideButtonIcon","TitleEdit","chartMenu","destroyableChartListeners","handleEndEditing","updateHeight","endEditing","refreshTitle","destroyDbleClickListener","wasInTitle","destroyMouseMoveListener","inTitle","titleBBox","inputWidth","inputStyle","isTitlePlaceholder","oldTitleLines","currentTitleLines","fixedLineHeight","titleColor","awaitChartOptionUpdate","deproxy","chartOrProxy","ChartProxy","clearThemeOverrides","chartInstance","getCommonChartOptions","rawChart","getChartOptions","setPaired","isPaired","categoryKey","existingOptions","getActiveFormattingPanelOverrides","inUseTheme","keepChartInstance","destroyChart","CartesianChartProxy","crossFilteringAllPoints","crossFilteringSelectedPoints","getAxes","supportsCrossFiltering","xAxisIsCategory","getCrossFilterData","getDataTransformedData","isCategoryAxis","getXAxisType","isTimeAxis","testDatum","crossFilteringReset","crossFilteringPointSelected","crossFilteringDeselectedPoints","extractLineAreaCrossFilterSeries","getYKey","nodeClick","crossFilteringAddSelectedPoint","pointSelected","multiSelection","emptyTarget","cloneUnlessOtherwiseSpecified","isMergeableObject","deepMerge","defaultArrayMerge","customMerge","getEnumerableOwnPropertySymbols","propertyIsOnObject","propertyIsUnsafe","mergeObject","defaultIsMergeableObject","isSpecial","arrayMerge","sourceIsArray","hexToRGBA","changeOpacity","BarChartProxy","isBar","isNormalised","numberAxis","isGrouped","extractCrossFilterSeries","updateFilteredOutSeries","primarySeries","AreaChartProxy","LineChartProxy","PieChartProxy","numFields","currentOffset","offsetAmount","getFields","calculateOffsets","primaryOpts","filteredOutOptions","ScatterChartProxy","seriesDefinitions","getSeriesDefinitions","labelFieldDefinition","seriesDefinition","sizeField","filteredOutKey","updatedSeries","markerDomain","calcMarkerDomain","filterableEvent","isBubbleChart","currentXField","HistogramChartProxy","firstField","ChartOptionsService","chartSeriesTypes","createChartOptions","updateChart","getUpdateAxisOptions","getAxis","chartAxis","isMatchingSeries","chartRef","ComboChartProxy","fieldsMap","getYKeys","primaryYKeys","secondaryYKeys","secondaryYKey","secondaryAxisOptions","primaryYKey","GridChartComp","availableChartThemes","modelParams","validateCustomThemes","insideDialog","addDialog","addMenu","addTitleEditComp","setActiveChartCellRange","raiseChartCreatedEvent","suppliedThemes","customThemeName","crossFilteringContext","crossFilteringResetCallback","crossFilterService","eChart","toTranslate","createChartProxy","titleEdit","getBestDialogSize","chartDialog","eMenuContainer","eTitleEditContainer","shouldRecreateChart","getCurrentChartType","handleEmptyChart","chartUpdateParams","pivotModeDisabled","minFieldsRequired","isEmptyChart","eEmpty","getUnderlyingChart","focusEvent","raiseChartDestroyedEvent","VERSION$a","upgradeChartModel","heuristicVersionDetection","migrateIfBefore","migrateV23","migrateV24","migrateV25_1","migrateV26","migrateV26_1","migrateV26_2","migrateV28","migrateV28_2","migrateV29","jsonRename","jsonDelete","LEGACY_PALETTES","jsonMutate","jsonDeleteDefault","highlightOptUpdate","jsonMove","otherChartOptions","otherModelProps","chartTypeMixin","minimalAxis_1","updatedAxes_1","axisProps","updatedChartOptions","jsonBackfill","jsonMoveIfMissing","modelAny","matchingHints","maxVersion","migration","versionNumber","versionParts","major","patch","jsonMutateProperty","valueToMove","valueFound","renameTo","skipMissing","mutator","pathElements","parentPathElements","targetName","pathOptions","pathOptions_1","pathOptions_1_1","pathOption","arrayName","jsonProp","borneo","material","pastel","ChartService","activeCharts","activeChartComps","versionedModel","chartComp","createChartFromCurrentRange","selectedRange","getSelectedRange","getCellRange","cellRangeParams","createCellRangeFromCellRangeParams","cellRange_1","chartAllRangeParams","createChartContainerFunc","generateId","createChartRef","destroyAllActiveCharts","CHARTS_VERSION","ChartTranslationService","ChartTranslationService_1","DEFAULT_TRANSLATIONS","pivotChartTitle","rangeChartTitle","xyValues","xType","automatic","calloutLabels","sectorLabels","minSize","itemSpacing","layoutHorizontalSpacing","layoutVerticalSpacing","boldItalic","predefined","histogramBinCount","groupedColumnTooltip","stackedColumnTooltip","normalizedColumnTooltip","groupedBarTooltip","stackedBarTooltip","normalizedBarTooltip","pieTooltip","doughnutTooltip","lineTooltip","groupedAreaTooltip","stackedAreaTooltip","normalizedAreaTooltip","scatterTooltip","bubbleTooltip","histogramTooltip","columnLineComboTooltip","areaColumnComboTooltip","customComboTooltip","noDataToChart","pivotChartRequiresPivotMode","chartSettingsToolbarTooltip","chartLinkToolbarTooltip","chartUnlinkToolbarTooltip","chartDownloadToolbarTooltip","histogramFrequency","ChartCrossFilterService","ChartCrossFilterService_1","extractFilterColId","isValidColumnFilter","updateFilters","dataKey","existingGridValues","getCurrentGridValuesForCategory","updatedValues","getUpdatedFilterModel","getColumnFilterType","getColumnById","RangeService","bodyScrollListener","intersectionRange","refreshLastRangeStart","beforeCols","dispatchChangedEvent","countBefore","lastRange","refreshRangeStart","rangeColumns","allPositions","pinnedBottomRowCount","appendRange","calculateColumnsBetween","rowForCell","setNewestRangeStartCell","newestRangeStartCell","updateRangeEnd","colsToAdd","isLastCellOfRange","moveColInCellRange","colToMove","moveToFront","otherCols","getRangeEdgeColumns","allIndices","startCell","firstCol","newEndCell","forEachRowInRange","startsOnTheRight","columnsString","rowToColumnMap","rowName","currentRangeColIds","filteredColumns","currentValString","topRow","bottomRow","columnInRange","rowInRange","isRowInRange","rangeFirstIndexColumn","rangeLastIndexColumn","isRightColumn","thisRow","afterFirstRow","beforeLastRow","getDraggingRange","draggingRange","multiKeyPressed","extendRange","updateValuesOnMove","lastCellHovered","mouseRowPosition","fromMouseClick","intersectionStartRow","intersectionEndRow","newRanges","intersectCols","rangeCountBefore","middle","cellHasChanged","isMouseAndStartInPinned","columnFrom","columnTo","isSameColumn","AbstractSelectionHandle","changedCalculatedValues","shouldDestroyOnEndDragging","onDragEnd","clearValues","getDraggingCssClass","preventRangeExtension","setCellCtrl","rangeStartRow","setRangeStartRow","rangeEndRow","setRangeEndRow","getLastCellHovered","cellHoverListener","oldCellComp","removeListeners","findLineByLeastSquares","maxDecimals","splitExponent","sum_x","sum_y","sum_xy","sum_xx","FillHandle","markedCells","isUp","isReduce","initialXY","newY","allowedDirection","getFillHandleDirection","dragAxis","initialPosition","markPathFrom","isX","colLen","lastCellMarked","raiseFillStartEvent","handleValueChanged","raiseFillEndEvent","initialRangeEndRow","initialRangeStartRow","finalRangeEndRow","finalRangeStartRow","withinInitialRange","initialValues","resetValues","iterateAcrossCells","fillValues","updateInitialSet","skipValue","fromUserFunction","clearCellsInRange","userFillOperation","userResult","currentCellValue","allNumbers","asFloat","clearMarkedPath","clearCellValues","reduceVertical","extendVertical","initialColumn","reduceHorizontal","extendHorizontal","isMovingUp","cellInRange","isInitialRow","celPos","isMovingLeft","startCol","endCol","colsToMark","rangeFixed","fixRangeStartEnd","SelectionHandleFactory","VERSION$9","AgColorPanel","isSpectrumDragging","isSpectrumHueDragging","isSpectrumAlphaDragging","colorChanged","picker","initRecentColors","spectrumVal","onSpectrumDraggerDown","onSpectrumDraggerMove","spectrumHue","onSpectrumHueDown","onSpectrumHueMove","spectrumAlpha","onSpectrumAlphaDown","onSpectrumAlphaMove","recentColors","onRecentColorClick","refreshSpectrumRect","spectrumValRect","refreshHueRect","spectrumHueRect","refreshAlphaRect","spectrumAlphaRect","moveDragger","moveHueSlider","moveAlphaSlider","valRect","setSpectrumValue","hueRect","slider","spectrumHueSlider","sliderRect","alphaRect","spectrumAlphaSlider","spectrumColor","rgbaColor","spectrumDragger","dragger","draggerRect","innerHtml","addRecentColor","maxRecentColors","AgColorPicker","eGuiRect","colorDialog","colorPanel","VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION","VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION","isValidVersion","isValidMajorVersion","chartsMajorVersion","gridMajor","gridMajorVersion","chartsMajor","gridMajorDifference","gridChartVersion","gridVersion","gridMinor","gridMajorMinor","chartsMajorMinor","validGridChartsVersionErrorMessage","chartsVersion","invalidMessage","validGridChartsVersion","chartsMinor","isValidMajor","__FORCE_MODULE_DETECTION_AG_GRID_CORE_EXT","agCharts","DetailCellRendererCtrl","loadRowDataVersion","needRefresh","setAutoHeightClasses","setupRefreshStrategy","addThemeToDetailGrid","createDetailGrid","loadRowData","detailClass","addOrRemoveDetailGridCssClass","providedStrategy","refreshStrategy","setDetailGrid","registerDetailWithMaster","detailGridInfo","versionThisCall","eDetailGrid","setDefaultTemplate","templateFunc","agGridReact","agGridReactCloned","detailApi","VERSION$8","EnterpriseMenuFactory","activeMenu","restrictToTabs","getMenuParams","eMenuGui","closedFuncs","getClosedCallback","currentHeaderPosition","addStopAnchoring","showTabBasedOnPreviousSelection","EnterpriseMenu","EVENT_TAB_SELECTED","lastSelectedTab","columnToFocus","closedFuncsArr","stopAnchoringFunc","TABS_DEFAULT","initialSelection","restrictTo","tabFactories","includeChecks","TAB_GENERAL","createMainPanel","TAB_FILTER","createFilterPanel","TAB_COLUMNS","createColumnsPanel","getTabsToCreate","onHidePopup","onTabItemClicked","mainMenuList","isValidMenuTabItem","isNotSuppressed","isModuleLoaded","menuTabName","itemsToConsider","toShow","tabItemColumns","tabItemFilter","tabItemGeneral","activateTab","getMenuItems","defaultMenuOptions","getDefaultMenuOptions","MENU_ITEM_SEPARATOR","allowPinning","rowGroupCount","doingGrouping","groupedByThisColumn","allowValue","allowRowGroup","pivotModeOn","isInMemoryRowModel","allowValueAgg","menuItemMapper","mapWithStockItems","hidePopupFunc","columnSelectPanel","columnLayout","columnSelectPanelGui","CSS_MENU","CSS_CONTEXT_MENU_OPEN","ContextMenuFactory","csvModuleMissing","excelModuleMissing","suppressExcel","suppressCsv","blockMiddleClickScrollsIfNeeded","eGridBodyGui","ContextMenu","currentFocusedCell","MenuItemMapper","originalList","resultList","getStockMenuItem","createAggregationSubMenu","isEditable","exportSubMenuItems","csvModuleLoaded","excelModuleLoaded","chartMenuItemMapper","getChartItems","columnToUse","columnIsAlreadyAggValue_1","funcNames","VERSION$7","ChartMenuItemMapper","ChartMenuItemMapper_1","PivotMenuItemMapper","RangeMenuItemMapper","topLevelMenuItem","getMenuItem","filterAndOrderChartMenu","getConfigLookup","cleanInternals","buildLookup","itemLookup","configLookup","menuItemLookup","orderedAndFiltered","chartConfigGroup","subMenus","itemKey","localeKey","MultiFilter","filterDefs","guiDestroyFuncs","activeFilterIndices","lastActivatedMenuItem","afterFiltersReadyFuncs","getFilterDefs","filterDef","createFilter","lastOpenedInContainer","filterGui","insertFilterMenu","insertFilterGroup","params_1","getLastActiveFilterIndex","rowPasses","updateActiveList","getChildFilterInstance","executeFunctionIfExists","executeWhenAllFiltersReady","changedFilter","lastActiveIndex","activeFilter","MultiFloatingFilterComp","floatingFilters","floatingFilterPromises","floatingFilterParams","parentMultiFilterInstance","floatingFilterPromise","createFloatingFilter","lastActiveFloatingFilterIndex_1","shouldShow","defaultComponentName","VERSION$6","bindCellRendererToHtmlElement","cellRendererPromise","eTarget","RichSelectRow","populateWithRenderer","populateWithoutRenderer","updateSelected","valueToRender","childComponent","RichSelectCellEditor","selectionConfirmed","originalSelectedValue","createRowComponent","eList","renderSelectedValue","debounceDelay","searchDebounceDelay","clearSearchString","confirmSelection","setSelectedValue","runSearch","keyString","searchStrings","topSuggestion","topSuggestionIndex","VERSION$5","FullStore","ssrmParams","storeParams","nodeIdSequence","groupLevel","nodeIdPrefix","blockUtils","createNodeIdPrefix","groupField","isRootStore","userInitialRowCount","storeUtils","getServerSideInitialRowCount","initialiseRowNodes","nodesAfterSort","nodesAfterFilter","loadingRowsCount","loadingRowNode","createRowNode","parentBlock","createDataNode","defaultId","prefixId","setDataIntoRowNode","addRowNode","checkOpenByDefault","fireStoreUpdatedEvent","storeInfo","groupLevelInfo","nodesToRecycle","createOrRecycleNodes","filterAndSortNodes","nodeToRecycle","foundNode","lookupNodeToRecycle","updateDataIntoRowNode","recycleNode","transactionManager","filterRowNodes","serverIsSorting","isServerSideSortAllLevels","isServerSideSortOnServer","isServerSideFilterAllLevels","isServerSideFilterOnServer","clearDisplayIndexes","displayIndexStart","displayIndexEnd","clearDisplayIndex","getDisplayIndexEnd","isDisplayIndexInStore","setDisplayIndexes","displayIndexSeq","visibleNodeIds","setDisplayIndex","forEachStoreDeep","childCache","forEachNodeDeepAfterFilterAndSort","getRowUsingDisplayIndex","displayRowIndex","binarySearchForDisplayIndex","extractRowBounds","lastRowNode","res2","getIndexAtPixel","getChildStore","forEachChildStoreShallow","refreshAfterFilter","serverIsFiltering","storeIsImpacted","isServerRefreshNeeded","refreshAfterSort","applyCallback","newRowNode","addStoreStates","suppressInfiniteScroll","scheduleLoad","LazyBlockLoader","loadingNodes","checkForLoadQueued","loaderTimeout","nextBlockToLoad","queueLoadAction","isRowLoading","getBlockToLoad","firstRowInViewport","lastRowInViewport","getNodeCachedByDisplayIndex","lazyNode","getNodes","getBy","__needsRefreshWhenVisible","getBlockStartIndexForIndex","nodesToRefresh","getNodesToRefresh","nodeToRefresh","nodeToRefreshDist","distToViewportTop","distToViewportBottom","lazyIndex","executeLoad","getSsrmParams","pivotCols","groupKeys","removeNodesFromLoadingMap","onLoadSuccess","onLoadFailed","addNodesToLoadingMap","getNextBlockToLoad","getBlockSize","queueLoadCheck","endRow_1","startRow_1","attemptLoad","availableLoadingCount","DEFAULT_BLOCK_SIZE","storeIndex","getBlockBoundsForIndex","startOfBlock","MultiIndexMap","maps","getIterator","LazyCache","numberOfRows","isLastRowKnown","nodeMap","nodeDisplayIndexMap","defaultNodeIdPrefix","getParentNode","rowLoader","destroyRowNode","getRowByDisplayIndex","getDisplayIndexStart","createStubNode","contiguouslyPreviousNode","lazyCacheNode","adjacentNodes","getSurroundingNodesByDisplayIndex","storeIndexFromEndIndex_1","storeIndexFromEndIndex","rowBounds","newNode","createRowAtIndex","getRowByStoreIndex","skipDisplayIndexes","numberOfRowsToSkip","orderedMap","stringIndex","numericIndex","purgeExcessRows","getDisplayIndexFromStoreIndex","nodeAtIndex","storeIndexDiff","atStoreIndex","createNodeCallback","doesNodeMatch","destroyRowAtIndex","lazyNode_1","markBlockForVerify","getRowDetails","getPrefixedId","getIdSequence","blockCounts","blockStates","blockStart","rowState","statePriorityMap","needsLoading","blockPrefix","priorityState","loadedRowCount","purgeStubsOutsideOfViewport","firstRowBlockStart","lastRowBlockEnd","getBlocksDistanceFromRow","otherDisplayIndex","blockDistanceToMiddle","blockEnd","distEnd","distStart","lastLazyNode","farthest","allLoadedBlocks","blocksInViewport","numberOfBlocksToRetain","blocksToRemove","lastRowBlockStart","MIN_SAFE_INTEGER","disposableNodes","rowBlockStart","isNodeCached","blockDistanceArray","isNodeFocused","extractDuplicateIds","newIds","duplicates","numberOfRowsExpected","setStoreInfo","duplicateIdText","wasRefreshing","responseRowIndex","nodeFromCache","fireRefreshFinishedEvent","lastInferredRow","markNodesForRefresh","isNodeInCache","updateRowNodes","updatedNodes","insertRowNodes","inserts","indexToAdd","uniqueInsertsMap","uniqueInserts","numberOfInserts","nodesToMove","uniqueInsertOffset","getOrderedNodeMap","removeRowNodes","removedNodes","nodesToVerify","deletedNodeCount","remainingIdsToRemove","allNodes","contiguousIndex","matchIndex","numericStoreIndex","LazyStore","idSequence","idFunc","insertedNodes","allIdsToRemove","allUniqueIdsToRemove","updateSelectionAfterTransaction","fireSelectionUpdatedEvent","orderedNodes","thisNode","boundsFromRow","numberOfRowDiff_1","distToPreviousNodeTop","distToNextNodeTop","distBetween","indexOfRow","numberOfRowDiff_2","numberOfRowDiff","oldCount","ServerSideRowModel","pauseStoreUpdateListening","onStoreUpdated","resetListener","getRootStore","rowGroupColumnVos","columnsToValueObjects","valueColumnVos","pivotColumnVos","areColsSame","oldCols","allColsUnchanged","newCols","equivalentCol","missingCols","allowRemovedColumns","sortModelDifferent","sortListener","extractSortModel","rowGroupDifferent","pivotDifferent","createStoreParams","destroyRootStore","newSortModel","storeFactory","createStore","updateRowIndexesAndBounds","dispatchModelUpdated","dynamicRowHeight","executeOnStore","storeToExecuteOn","nodeRange","thisRowIndex","StoreUtils","getRowsParams","currentCache","findNodeFunc","keyListForNextLevel","nextStore","valueColChanged","secondaryColChanged","colIdThisGroup","assertRowModelIsServerSide","assertNotTreeData","GROUP_MISSING_KEY_ID","BlockUtils","usingMasterDetail","preserveStore","setTreeGroupInfo","getKeyFunc","setRowGroupInfo","setMasterDetailInfo","isMasterFunc","setChildCountIntoRowNode","cachedRowHeight","setGroupDataIntoRowNode","groupDisplayCols","NodeManager","TransactionManager","asyncTransactions","asyncTransactionsTimeout","scheduleExecuteAsync","executeAsyncTransactions","resultFuncs","resultsForEvent","transactionsToRetry","atLeastOneTransactionApplied","txWrapper","removedRowIds","deleteSelectionStateFromParent","ExpandListener","SortListener","replaceAutoGroupColumnWithActualRowGroupColumns","removeMultiColumnPrefixOnColumnIds","multiColumnPrefix","autoGroupSortModel","sm","autoGroupIndex","newModels","findChangedColumnsInSort","listenerUtils","isSortingWithValueColumn","isSortingWithSecondaryColumn","oldSortModel","allColsInBothSorts","oldSortItem","newSortItem","differentSorts","differentIndexes","FilterListener","findChangedColumns","oldModel","allColKeysMap","StoreFactory","getStoreParams","userStoreParams","getLevelSpecificParams","infiniteScroll","isInfiniteScroll","getMaxBlocksInCache","storeType","isSuppressServerSideInfiniteScroll","ListenerUtils","changedColumnsInSort","valueColIds","secondaryColIds","DefaultStrategy","selectedState","toggledNodes","lastSelected","selectAllUsed","getSelectedState","setSelectedState","parentPath","removedNodeIds","anyNodesToggled","updateNodeState","processNewRow","isNodeSelected","isToggled","clearedRows","GroupSelectsChildrenStrategy","removeRedundantState","recursivelySerializeState","normalisedState","toggledNodes_1","recursivelyDeserializeState","parentSelected","innerState","isThisNodeSelected","convertedChildren","doesRedundantStateExist","parentRoute","parentState","remainingRoute","anyStateChanged","getRouteToNode","completedRoutes_1","recursivelySelectNode","idPathToNode","isNodePathSelected","pathToNode","tempNode","recursivelyRemoveState","allChildNodesFound","noIndeterminateChildren","doesStateAlreadyExist","ServerSideSelectionService","selectionStrategy","shotgunResetNodeSelectionState","changedNodes","storeRoute","VERSION$4","ClientSideValuesExtractor","createKey","caseFormat","treeDataOrGrouping","extractUniqueValues","existingValues","existingFormattedKeys","extractExistingFormattedKeys","formattedKeys","unformattedKey","formattedKey","keyToAdd","existingUnformattedKey","addValueForTreeDataOrGrouping","convertValuesToStrings","addValueForConvertValuesToString","processedPart","dataPath","treeKey","SetFilterDisplayValue","SELECT_ALL","FlatSetDisplayValueModel","displayedKeys","updateDisplayedValuesToAllAvailable","_getValue","_allKeys","availableKeys","updateDisplayedValuesToMatchMiniFilter","matchesFilter","nullMatchesFilter","availableKeys_1","availableKeys_1_1","valueFormatterValue","getDisplayedValueCount","getDisplayedItem","getSelectAllItem","getDisplayedKeys","forEachDisplayedKey","someDisplayedKey","hasGroups","TreeSetDisplayValueModel","treeListPathGetter","treeListFormatter","allDisplayedItemsTree","activeDisplayedItemsFlat","selectAllItem","available","parentTreeKeys","generateItemTree","updateAvailable","updateExpandAll","flattenItems","updateFilter","getTreeListPathGetter","allKeys_1","allKeys_1_1","DATE_TREE_LIST_PATH_GETTER","recursivelyFlattenDisplayedItems","recursiveFilterReset","recursiveItemCheck","recursiveForEachItem","topParentExpanded","recursiveSomeItem","recursiveExpansionCheck","someTrue","someFalse","items_1","items_1_1","childExpanded","checkFunction","itemProp","itemPasses","SetFilterModelValuesType","PROVIDED_LIST","PROVIDED_CALLBACK","TAKEN_FROM_GRID_VALUES","SetValueModel","miniFilterText","providedValues","selectedKeys","usingComplexObjects","treeDataTreeList","groupingTreeList","suppressSorting","treeList","setIsLoading","keyComparator","compareByValue","entryComparator","createTreeDataOrGroupingComparator","aValue","clientSideValuesExtractor","valuesType","displayValueModel","updateAllValues","updatedKeys","resetSelectionState","refreshValues","overrideValues","valuesToUse","allValuesPromise","refreshAfterAnyFilterChanged","showAvailableOnly","updateAvailableKeys","isInitialised","processAllKeys","getFromRows","getValuesFromRows","validateProvidedValues","sortKeys","setValuesType","getValuesType","isKeyAvailable","EVENT_AVAILABLE_VALUES_CHANGED","updateDisplayedValues","nullableValues","excelMode","removeUnavailableValues","setMiniFilter","getMiniFilter","formattedFilterText","valueToCheck","hasSelections","defaultToNothingSelected","selectAllMatchingMiniFilter","clearExistingSelection","deselectAllMatchingMiniFilter","selectKey","deselectKey","isEverythingVisibleSelected","isKeySelected","isNothingVisibleSelected","existingFormattedKeys_1","convertAndGetKey","bValue","SetFilterListItem","GROUP_TEMPLATE","isTree","hasIndeterminateExpandState","refreshVariableAriaLabels","setupExpansion","eGroupIndeterminateIcon","setExpandedIcons","toggleSelected","setupFixedAriaLabels","itemLabel","setTooltipAndCellRendererParams","cellRendererComponent","renderCellWithoutCellRenderer","getFormattedValue","renderCell","getComponentHolder","DEFAULT_LOCALE_TEXT","loadingOoo","searchOoo","selectAllSearchResults","noMatches","SetFilterModelFormatter","valueModel","getValueModel","numValues","SetFilter","setFilterParams","hardRefreshVirtualList","noValueFormatterSupplied","appliedModelKeys","noAppliedModelKeys","translateForSetFilter","handleKeySpace","handleKeyEnter","handleKeyLeft","handleKeyRight","getComponentForKeyEvent","eMiniFilter","eSetFilterList","setModelAndRefresh","applyExcelModeOptions","setValueFormatter","isGroupCol","generateCreateKey","initialiseFilterBodyUi","addEventListenersForDataChanges","providedValueFormatter","isRefData","getKeyCreatorParams","isValuesTakenFromGrid","syncAfterDataChange","eFilterLoading","initVirtualList","initMiniFilter","filterListName","createSetListItem","updateSetListItem","ModelWrapper","ModelWrapperWithSelectAll","isSelectAllSelected","TreeModelWrapper","getSelectAllLabel","selectedListener","expandedListener","isSetFilterModelTreeItem","onGroupItemSelected","onExpandedChanged","isSelectedExpanded","translateKey","areAllChildrenSelected","suppressMiniFilter","onMiniFilterInput","resetExpansion","resetMiniFilter","showOrHideResults","doesFilterPassForTreeData","doesFilterPassForGrouping","getValueFromNode","doesFilterPassForConvertValuesToString","isInAppliedModel","checkMakeNullDataPath","setFilterValues","resetFilterValues","refreshFilterValues","filterOnAllVisibleValues","updateUiAfterMiniFilterChange","hideResults","eNoMatches","applyImmediately","refreshAfterSelection","recursiveGroupSelection","childItem","recursiveExpansion","refreshAfterExpansion","newMiniFilter","getFilterKeys","getFilterValues","refreshValuesOnOpen","recursiveChildSelectionCheck","someTrue_1","someFalse_1","childSelected","valueToFormat","recursiveCollapse_1","oldRow","newRow","SetFloatingFilterComp","availableValuesListenerAdded","updateFloatingFilterText","parentSetFilterInstance","addAvailableValuesListener","setValueModel","VERSION$3","StatusBarService","allComponents","registerStatusPanel","StatusBar","statusPanels","leftStatusPanelComponents","componentConfig","createAndRenderComponents","eStatusBarLeft","centerStatusPanelComponents","eStatusBarCenter","rightStatusPanelComponents","eStatusBarRight","statusBarComponents","ePanelComponent","componentDetails","componentDetail","NameValueComp","TotalAndFilteredRowsComp","getFilteredRowCountValue","totalRowCount","getTotalRowCount","localeTextFunc_1","filteredRowCount","FilteredRowsComp","totalRowCountValue","getTotalRowCountValue","filteredRowCountValue","TotalRowsComp","getRowCountValue","SelectedRowsComp","isValidRowModel","onRowSelectionChanged","eventListener","selectedRowCount","AggregationComp","avgAggregationComp","countAggregationComp","minAggregationComp","maxAggregationComp","sumAggregationComp","setAggregationComponentValue","statusBarValueComponent","getAggregationValueComponent","refComponentName","aggregationPanelConfig","statusPanelParams","numberCount","cellsSoFar","gotNumberResult","VERSION$2","VERSION$1","DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE","DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE","ViewportRowModel","rowNodesByIndex","onViewportChanged","getViewportRowModelPageSize","getViewportRowModelBufferSize","calculateFirstRow","bufferSize","afterBuffer","calculateLastRow","purgeRowsNotInViewport","setViewportRange","createBlankRowNode","callbackCount","defaultTooltipCss","extent$3","isNumber$3","isStringObject","BandScale$4","ZINDICIES","SERIES_FILL_ZINDEX","AXIS_LINE_ZINDEX","SERIES_STROKE_ZINDEX","CROSSHAIR_ZINDEX","SERIES_MARKERS_ZINDEX","SparklineAxis","Sparkline","layoutId","defaultDateFormatter","_onMouseMove","_onMouseOut","setupDomEventListeners","mouseMoveEvent","updateHitPoint","scheduleLayout","updateYScale","updateYScaleRange","updateYScaleDomain","updateXScale","getXScale","updateXScaleRange","updateXScaleDomain","xMinMax","updateCrosshairs","updateXCrosshairLine","updateYCrosshairLine","generateNodeData","getNodeData","highlightDatum","dehighlightDatum","pickClosestSeriesNodeDatum","oldHighlightedDatum","handleTooltip","getDataType","xValueType","setSmallestXInterval","getDatum","setSparklineDimensions","shrunkHeight","tooltipOptions","tooltipRendererResult","formatNumericDatum","cleanupDomEventListeners","toTooltipHtml","titleHtml","contentHtml","SparklineTooltip","tooltipRect","containerRect","getMarker","getLineDash","buttOrNull","solid","dashDot","dashDotDot","shortDot","shortDash","shortDashDot","shortDashDotDot","longDash","longDashDot","longDashDotDot","roundOrSquare","extent$2","BandScale$3","SparklineMarker$1","SparklineMarker","SparklineLine$1","SparklineLine","SparklineCrosshairs$1","SparklineCrosshairs","xLine","yLine","AreaSparkline","strokePath","xCrosshairLine","yCrosshairLine","areaSparklineGroup","xAxisLine","crosshairs","fillData","strokeData","updateStroke","yMin","yMax","firstValidX","lastValidX","previousX","selectionData","highlightSize","highlightFill","highlightStroke","highlightStrokeWidth","markerFormat","extent$1","BandScale$2","LineSparkline","lineSparklineGroup","BarColumnNodeTag","BarColumnLabelPlacement","InsideBase","InsideEnd","OutsideEnd","BarColumnLabel","BarColumnSparkline","valueAxisDomain","axisLine","bandWidth","sparklineGroup","rectGroup","rectSelection","nodeSelectionData","updateRectSelection","updateRectNodes","nodeFormatter","nodeFormat","nodeFill","nodeStroke","nodeStrokeWidth","formatLabelValue","isNumber$2","BandScale$1","BarSparkline","invalidDatum","isPositiveY","isNumber$1","ColumnSparkline","AgSparkline","sparkline","getSparklineInstance","initSparkline","initSparklineByType","initBarColumnSparkline","initAreaSparkline","initLineSparkline","setValueIfPropertyExists","initPaddingOptions","initAxisOptions","initHighlightStyleOptions","initMarkerOptions","initLineOptions","initCrosshairsOptions","initLabelOptions","initCrosshairLineOptions","offsetValidator","defaultOffset","validators","SparklineCellRenderer","firstTimeIn","sparklineOptions","sparklineTooltipSingleton","getSparklineTooltip","eSparkline","SparklineTooltipSingleton","destroyTooltip","AllEnterpriseModules","AllModules","TimeoutErrorImpl","retryWhen","RetryWhenOperator","RetryWhenSubscriber","retries","retriesSubscription","_unsubscribeAndRecycle","_unsubscribe","TimeoutWithOperator","waitFor","absoluteTimeout","withObservable","scheduler","TimeoutWithSubscriber","dispatchTimeout","HttpBaseService","ConfigurationProvider","configsInternal","hasAsLeastOneConfig","hasManyConfigs","setConfig","readyConfig","configId","getOpenIDConfiguration","getAllConfigurations","DataService","configurationProvider","prepareHeaders","prepareParams","headersParams","ngswBypass","ConfigLoaded","ConfigLoadingFailed","CheckSessionReceived","UserDataChanged","TokenExpired","SilentRenewStarted","Warn","LoggerService","logErrorWithConfig","logErrorWithoutConfig","logWarning","logWarningWithConfig","logWarningWithoutConfig","logDebug","logLevelIsSet","loggingIsTurnedOff","currentLogLevelIsEqualOrSmallerThan","logLevelToCompare","BrowserStorageService","configProvider","loggerService","hasStorage","storedConfig","Storage","StoragePersistenceService","browserStorageService","resetStorageFlowData","resetAuthStateInStorage","id_token","getRefreshToken","refresh_token","getAuthenticationResult","PublicEventsService","notify","TokenHelperService","dataIdToken","getHeaderFromToken","tokenIsValid","getPartOfToken","getPayloadFromToken","getSignatureFromToken","partOfToken","extractPartOfToken","urlBase64Decode","Buffer","JsrsAsignReducedService","generateCodeChallenge","codeVerifier","KJUR","Util","hashString","hextob64u","generateAtHash","sha","first128bits","TokenValidationService","jsrsAsignReducedService","keyAlgorithms","hasIdTokenExpired","offsetSeconds","validateIdTokenExpNotExpired","tokenNotExpired","millisToMinutesAndSeconds","toLocaleTimeString","validateAccessTokenNotExpired","accessTokenExpiresAt","accessTokenExpirationValue","validateRequiredIdToken","validated","validateIdTokenIatMaxOffset","maxOffsetAllowedInSeconds","disableIatOffsetValidation","dateTimeIatIdToken","iat","maxOffsetAllowedInMilliseconds","validateIdTokenNonce","localNonce","refreshTokenNoncePlaceholder","validateIdTokenIss","authWellKnownEndpointsIssuer","iss","validateIdTokenAud","aud","validateIdTokenAzpExistsIfMoreThanOneAud","azp","validateIdTokenAzpValid","validateStateFromHashCallback","localState","validateSignatureIdToken","jwtkeys","headerData","kid","alg","jwtKtyToUse","keyToValidate","kty","amountOfMatchingKeys","jws","JWS","verify","KEYUTIL","publicKey","validateIdTokenAtHash","atHash","idTokenAlg","testData","testValue","DEFAULT_AUTHRESULT","allConfigsAuthenticated","AuthStateService","storagePersistenceService","tokenValidationService","authenticatedInternal$","authenticated$","setAuthenticatedAndFireEvent","composeAuthenticatedResult","setUnauthenticatedAndFireEvent","configIdToReset","composeUnAuthenticatedResult","updateAndPublishAuthState","authenticationResult","setAuthorizationData","authResult","persistAccessTokenExpirationTime","decodeURIComponentSafely","areAuthStorageTokensValid","hasIdTokenExpiredAndRenewCheckIsEnabled","hasAccessTokenExpiredIfExpiryExists","enableIdTokenExpiredValidationInRenew","tokenToCheck","idTokenExpired","accessTokenExpiresIn","hasExpired","expires_in","accessTokenExpiryTime","checkAllConfigsIfTheyAreAuthenticated","STORAGE_KEY","AutoLoginService","storageService","checkSavedRedirectRouteAndNavigate","savedRouteForRedirect","getStoredRedirectRoute","deleteStoredRedirectRoute","saveRedirectRoute","UriEncoder","RandomService","createRandom","requiredLength","toHex","randomString","dec","characters","msCrypto","FlowsDataService","randomService","createNonce","setNonce","getAuthStateControl","setAuthStateControl","authStateControl","getExistingOrCreateAuthStateControl","setSessionState","sessionState","getCodeVerifier","createCodeVerifier","isSilentRenewRunning","storageObject","getSilentRenewRunningStorageEntry","silentRenewTimeoutInSeconds","timeOutInMilliseconds","dateOfLaunchedProcessUtc","currentDateUtc","resetSilentRenewRunning","setSilentRenewRunning","storageEntry","FlowHelper","isCurrentFlowCodeFlow","currentFlowIs","isCurrentFlowAnyImplicitFlow","isCurrentFlowImplicitFlowWithAccessToken","isCurrentFlowImplicitFlowWithoutAccessToken","isCurrentFlowCodeFlowWithRefreshTokens","flowTypes","CALLBACK_PARAMS_TO_CHECK","UrlService","flowsDataService","flowHelper","getUrlParameter","urlToCheck","isCallbackFromSts","getRefreshSessionSilentRenewUrl","customParams","createUrlCodeFlowWithSilentRenew","createUrlImplicitFlowWithSilentRenew","getAuthorizeParUrl","requestUri","authWellKnownEndPoints","authorizationEndpoint","authorizationUrl","createHttpParams","getAuthorizeUrl","createUrlCodeFlowAuthorize","createUrlImplicitFlowAuthorize","createEndSessionUrl","idTokenHint","customParamsEndSession","isAuth0Endpoint","composeAuth0Endpoint","endSessionEndpoint","authorizationEndSessionUrl","getPostLogoutRedirectUrl","appendCustomParams","createRevocationEndpointBodyAccessToken","getClientId","createRevocationEndpointBodyRefreshToken","getRevocationEndpointUrl","revocationEndpoint","createBodyForCodeFlowCodeRequest","customTokenParams","getSilentRenewUrl","getRedirectUrl","createBodyForCodeFlowRefreshTokensRequest","refreshToken","customParamsRefresh","createBodyForParCodeFlowRequest","customParamsRequest","codeChallenge","hdParam","customParamsAuthRequest","createAuthorizeUrl","customRequestParams","overWriteParam","existingParams","CodeFlowCallbackHandlerService","urlService","dataService","codeFlowCallback","isRenewProcess","jwtKeys","existingIdToken","codeFlowCodeRequest","callbackContext","authWellknownEndpoints","tokenEndpoint","bodyForCodeFlow","customParamsCodeRequest","session_state","handleRefreshRetry","ProgressEvent","refreshTokenRetryInSeconds","DEFAULT_USERRESULT","allUserData","oidcDataService","userDataInternal$","getAndPersistUserDataInStore","existingUserDataFromStorage","getUserDataFromStore","haveUserData","setUserDataToStore","renewUserInfoAfterTokenRenew","getUserDataOidcFlowAndSave","publishUserDataIfExists","fireUserDataEvent","resetUserDataInStore","idTokenSub","getIdentityUserData","validateUserDataSubIdToken","userInfoEndpoint","userDataSub","passedUserData","composeSingleOrMultipleUserDataObject","currentConfigIsToUpdate","alreadySavedUserData","composeSingleUserDataResult","ResetAuthDataService","authStateService","userService","resetAuthorizationData","ImplicitFlowCallbackHandlerService","resetAuthDataService","implicitFlowCallback","isRenewProcessData","ValidationResult","NotSet","StatesDoNotMatch","SignatureFailed","IncorrectNonce","RequiredPropertyMissing","MaxOffsetExpired","IssDoesNotMatchIssuer","NoAuthWellKnownEndPoints","IncorrectAud","IncorrectIdTokenClaimsAfterRefresh","IncorrectAzp","IncorrectAtHash","Ok","LoginRequired","SecureTokenServerError","SigninKeyDataService","getSigningKeys","jwksUri","handleErrorGetSigningKeys","errorResponse","errMsg","JWT_KEYS","HistoryJwtKeysCallbackHandlerService","signInKeyDataService","callbackHistoryAndResetJwtKeys","historyCleanUpTurnedOn","resetBrowserHistory","handleResultErrorFromCallback","storeSigningKeys","storedJwtKeys","readSigningKeys","historyCleanupOff","UserCallbackHandlerService","callbackUser","publishAuthState","publishUnauthenticatedState","stateValidationResult","StateValidationResult","authResponseIsValid","EqualityService","isStringEqualOrNonOrderedArrayEqual","oneValueIsStringAndTheOtherIsArray","bothValuesAreStrings","bothValuesAreArrays","arraysHaveEqualContent","arraysStrictEqual","bothValuesAreObjects","valueIsString","valueIsObject","StateValidationService","equalityService","getValidatedStateResult","validateState","toReturn","handleUnsuccessfulValidation","access_token","issValidationOff","maxIdTokenIatOffsetAllowedInSeconds","authNonce","isIdTokenAfterRefreshTokenRequestValid","handleSuccessfulValidation","idTokenHeader","at_hash","newIdToken","auth_time","autoCleanStateAfterAuthentication","StateValidationCallbackHandlerService","stateValidationService","callbackStateValidation","publishUnauthorizedState","RefreshSessionCallbackHandlerService","refreshSessionWithRefreshTokens","stateData","RefreshTokenCallbackHandlerService","refreshTokensRequestTokens","FlowsService","codeFlowCallbackHandlerService","implicitFlowCallbackHandlerService","historyJwtKeysCallbackHandlerService","userHandlerService","stateValidationCallbackHandlerService","refreshSessionCallbackHandlerService","refreshTokenCallbackHandlerService","processCodeFlowCallback","concatMap","processSilentRenewCodeFlowCallback","firstContext","processImplicitFlowCallback","processRefreshToken","IntervalService","runTokenValidationRunning","stopPeriodicTokenCheck","startPeriodicTokenCheck","repeatAfterSeconds","millisecondsDelayBetweenTokenCheck","ImplicitFlowCallbackService","flowsService","intervalService","authenticatedImplicitFlowCallback","triggerAuthorizationResultEvent","postLoginRoute","unauthorizedRoute","IFrameService","getExistingIFrame","iFrameOnParent","getIFrameFromParentWindow","isIFrameElement","iFrameOnSelf","getIFrameFromWindow","addIFrameToWindowBody","sessionIframe","iFrameElement","HTMLIFrameElement","IFRAME_FOR_CHECK_SESSION_IDENTIFIER","CheckSessionService","iFrameService","checkSessionReceived","lastIFrameRefresh","outstandingMessages","heartBeatInterval","iframeRefreshInterval","checkSessionChangedInternal$","checkSessionChanged$","isCheckSessionConfigured","startCheckSession","scheduledHeartBeatRunning","pollServerSession","clearScheduledHeartBeat","serverStateChanged","getExistingIframe","existingIframe","getOrCreateIframe","checkSessionIframe","pollServerSessionRecur","iframeOrigin","postMessage","messageHandler","existingIFrame","bindMessageEventToIframe","iframeMessageEvent","CurrentUrlService","getStateParamFromCurrentUrl","getCurrentUrl","currentUrlHasStateParam","IFRAME_FOR_SILENT_RENEW_IDENTIFIER","SilentRenewService","implicitFlowCallbackService","refreshSessionWithIFrameCompletedInternal$","refreshSessionWithIFrameCompleted$","isSilentRenewConfigured","codeFlowCallbackSilentRenewIframe","errorFromFlow","silentRenewEventHandler","callback$","CodeFlowCallbackService","authenticatedCallbackWithCode","CallbackService","codeFlowCallbackService","stsCallbackInternal$","stsCallback$","isCallback","handleCallbackAndFireEvents","currentCallbackUrl","WELL_KNOWN_SUFFIX","AuthWellKnownDataService","getWellKnownEndPointsFromUrl","getWellKnownDocument","wellKnownEndpoints","jwks_uri","authorization_endpoint","token_endpoint","userinfo_endpoint","end_session_endpoint","check_session_iframe","revocation_endpoint","introspectionEndpoint","introspection_endpoint","parEndpoint","pushed_authorization_request_endpoint","wellKnownEndpoint","AuthWellKnownService","getAuthWellKnownEndPoints","alreadySavedWellKnownEndpoints","mappedWellKnownEndpoints","storeWellKnownEndpoints","RefreshSessionIframeService","silentRenewService","rendererFactory","refreshSessionWithIframe","sendAuthorizeRequestUsingSilentRenew","initSilentRenewRequest","onLoadHandler","initDestroyHandler","renewDestroyHandler","RefreshSessionRefreshTokenService","RefreshSessionService","authWellKnownService","refreshSessionIframeService","refreshSessionRefreshTokenService","userForceRefreshSession","extraCustomParams","persistCustomParams","forceRefreshSession","customParamsRefreshTokenRequest","startRefreshSession","timeOutTime","due","timeoutWith","timeoutRetryStrategy","errorAttempts","currentAttempt","MAX_RETRY_ATTEMPTS","scalingDuration","PeriodicallyTokenCheckService","startTokenValidationPeriodically","configsWithSilentRenewEnabled","getConfigsWithSilentRenewEnabled","refreshTimeInSeconds","getSmallestRefreshTimeFromConfigs","periodicallyCheck$","objectWithConfigIdsAndRefreshEvent","getRefreshEvent","objectWithConfigIds","shouldStartPeriodicallyCheckForConfig","refreshEvent$","createRefreshEventForConfig","tokenRefreshInSeconds","userDataFromStore","idTokenStillValid","accessTokenHasExpired","PopUpService","STORAGE_IDENTIFIER","resultInternal$","result$","isCurrentlyInPopup","canAccessSessionStorage","sessionStorage","opener","openPopUp","popupOptions","optionsToPass","popUp","userClosed","receivedUrl","sendMessageToMainWindow","screenLeft","outerWidth","screenTop","outerHeight","CheckAuthService","checkSessionService","currentUrlService","callbackService","refreshSessionService","periodicallyTokenCheckService","autoLoginService","passedConfigId","stateParamFromUrl","getConfigurationWithUrlState","checkAuthWithConfig","onlyExistingConfig","checkAuthMultiple","composeMultipleLoginResults","allChecks$","checkAuthIncludingServer","loginResponseAfterRefreshSession","startCheckSessionAndValidation","stateFromUrl","allConfigs","activeConfig","allOtherConfigs","currentConfigResult","allOtherConfigResults","DEFAULT_CONFIG","usePushedAuthorisationRequests","forbiddenRoute","customParamsEndSessionRequest","eagerLoadAuthWellKnownEndpoints","POSITIVE_VALIDATION_RESULT","passedConfig","hasRefreshToken","hasSilentRenew","hasOfflineScope","allMultipleConfigRules","passedConfigs","allIdentifiers","createIdentifierToCheck","arrayHasDuplicates","ConfigValidationService","validateConfigs","validateConfigsInternal","validateConfig","validateConfigInternal","allRulesToUse","allValidationResults","overallErrorCount","errorCount","processValidationResultsAndGetErrorCount","allMessages","allErrorMessages","getAllMessagesOfType","allWarnings","PlatformProvider","DefaultSessionStorageService","OidcConfigService","configValidationService","platformProvider","defaultSessionStorageService","withConfigs","createUniqueIds","allHandleConfigPromises","handleConfig","usedConfig","prepareConfig","alreadyExistingAuthWellKnownEndpoints","passedAuthWellKnownEndpoints","wellknownEndPoints","configuration","openIdConfigurationInternal","setSpecialCases","setStorage","currentConfig","hasBrowserStorage","StsConfigLoader","StsConfigStaticLoader","loadConfigs","ClosestMatchingRouteService","getConfigIdForClosestMatchingRoute","allConfiguredRoutes","getAllConfiguredRoutes","routesWithConfig","allRoutesForConfig","configuredRoute","matchingRoute","matchingConfigId","ResponseTypeValidationService","hasConfigValidResponseType","RedirectService","ParService","postParRequest","expiresIn","request_uri","ParLoginService","responseTypeValidationService","redirectService","checkAuthService","parService","loginPar","authOptions","loginWithPopUpPar","PopUpLoginService","loginWithPopUpStandard","authUrl","StandardLoginService","loginStandard","LoginService","parLoginService","popUpLoginService","standardLoginService","loginWithPopUp","LogoffRevocationService","logoff","getEndSessionUrl","logoffLocalMultiple","accessTok","sendRevokeRequest","refreshTok","OidcSecurityService","logoffRevocationService","loginService","getConfigurations","getConfiguration","getUserData","authorizeWithPopUp","createStaticLoader","configurationProviderFactory","oidcConfigService","allLoadPromises","PASSED_CONFIG","APP_INITIALIZER","endOfDesiredMonth","compareAsc","differenceInCalendarYears","isLastYearNotFull","argStr","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","matchesMethod","ElemProto","matchesSelector","EvEmitter","onceEvents","_onceEvents","onceListeners","allOff","true","false","readFile","createReadStream","parserOptions","createInputStream","getWorksheet","dateUTC","formula","includeEmptyRows","eachRow","writeFile","createWriteStream","dayjs","decodeAddress","nativeCol","nativeColOff","nativeRow","nativeRowOff","asInstance","isCustomWidth","slideFormula","_row","validateAddress","_address","Types","Null","_mergeStyle","_mergeCount","$col$row","effectiveType","toCsvString","addMergeRef","releaseMergeRef","isMerged","Merge","unmerge","isMergedTo","isHyperlink","Hyperlink","_comment","escapeHtml","_upgradeToHyperlink","formulaType","fullAddress","definedNames","getNamesEx","removeAllNames","addEx","removeName","removeEx","_dataValidations","dataValidations","fromModel","ValueType","sharedFormula","Formula","RichText","sharedString","SharedString","shareType","_copyModel","_getTranslatedFormula","FormulaType","Master","Shared","_translatedFormula","findCell","_master","_worksheet","_number","defn","n2l","getColumnKey","deleteColumnKey","setColumnKey","_outlineLevel","outlineLevelCol","equivalentTo","_applyStyle","toModel","matrixMap","getMatrix","decodeEx","addCellEx","removeCellEx","getNames","findCellEx","_explore","findCellAt","$shortRange","normaliseMatrix","forEachInSheet","spliceRows","spliceColumns","RelationshipType","OfficeDocument","Worksheet","CalcChain","SharedStrings","Styles","DocumentType","Xlsx","LeftToRight","RightToLeft","ErrorValue","NotApplicable","Ref","DivZero","Num","imageId","hyperlinks","DEFAULT_CONFIGS","insetmode","inset","lockText","setTLBR","_serialisedSheetName","expandRow","expandToAddress","$t$l","$b$r","$range","shortRange","intersects","containsEx","forEachAddress","encodeAddress","_cells","commit","_commitRow","getCellEx","l2n","addPageBreak","man","rowBreaks","eachColumnKey","cellCount","actualCellCount","cacheState","totalsRowLabel","totalsRowFunction","totalsRowResult","totalsRowFormula","getFormula","filterHeight","tableHeight","autoFilterRef","tableRef","_cache","removeRows","addColumn","_assign","displyName","displayNamename","showFirstColumn","showLastColumn","showColumnStripes","company","keywords","modified","calcProperties","_worksheets","media","_definedNames","_csv","tabColor","argb","orderNo","removeWorksheetEx","removeWorksheet","eachSheet","clearThemes","lastModifiedBy","lastPrinted","sheets","revision","contentStatus","copyStyle","_workbook","_rows","_merges","dyDescent","fitToPage","fitToWidth","fitToHeight","pageOrder","blackAndWhite","draft","cellComments","showRowColHeaders","showGridLines","firstPageNumber","horizontalCentered","verticalCentered","colBreaks","oddHeader","oddFooter","evenHeader","evenFooter","firstHeader","firstFooter","autoFilter","_media","sheetProtection","tables","conditionalFormattings","_headerRowCount","actualColumnCount","_lastRowNumber","_nextRow","findRow","findRows","actualRowCount","_setStyleOption","addRows","insertRows","_copyStyle","duplicateRow","getSheetValues","getAddress","_mergeCellsInternal","mergeCellsWithoutStyle","_unMergeMaster","hasMerges","unMergeCells","fillFormula","getImages","addBackgroundImage","getBackgroundImageId","protect","spinCount","algorithmName","saltValue","randomBytes","hashValue","convertPasswordToHash","unprotect","getTable","removeTable","getTables","addConditionalFormatting","removeConditionalFormatting","_parseRows","_parseMergeCells","Workbook","TextDecoder","bufferToString","TextEncoder","stringToBuffer","getCellAt","findSheet","findSheetRow","findRowCell","_l2nFill","_l2n","_n2l","_level","_hash","createHash","digest","getHashes","alloc","writeUInt32LE","SaxesParser","PassThrough","_wrapAsyncGenerator","_iteratorError","_iteratorAbruptCompletion","_didIteratorError","_iterator","_asyncIterator","_awaitAsyncGenerator","saxes","_encoding","toBuffer","_buf","iRead","iWrite","eod","bufSize","buffers","corked","inPos","outPos","pipes","inherits","Duplex","_getWritableBuffer","_pipe","_writeToBuffers","nop","nextTick","cork","_flush","uncork","setEncoding","unpipe","_process","_inPos","capacity","_grow","addText","addStringBuf","keyBy","strcmp","promiseImmediate","setImmediate","super_","dateToExcel","excelToDate","parsePath","getRelsPath","xmlEncode","xmlDecode","validInt","isDateFmt","F_OK","toIsoDateString","toIsoString","subsstr","parseBoolean","timers","_xml","_rollbacks","tos","openXml","openNode","addAttribute","writeXml","closeNode","leafNode","closeAll","addRollback","rollback","StdDocAttributes","ZipWriter","compression","generateAsync","jszip","CoreProperties","ExtenderProperties","VmlDrawing","Table","parseOpen","parseText","parseClose","reconcile","xform","mergeModel","_iteratorError2","_iteratorAbruptCompletion2","_didIteratorError2","_step2","_iterator2","parseStream","toXml","toAttribute","toStringAttribute","toStringValue","toBoolAttribute","toBoolValue","toIntAttribute","toIntValue","toFloatAttribute","toFloatValue","localSheetId","_parsedName","_parsedLocalSheetId","_parsedText","rId","calcId","fullCalcOnLoad","date1904","defaultThemeVersion","filterPrivacy","xWindow","yWindow","windowWidth","windowHeight","firstSheet","fileVersion","STATIC_XFORMS","workbookPr","bookViews","childXform","calcPr","printArea","printTitlesRow","printTitlesColumn","WORKBOOK_ATTRIBUTES","workbookRels","worksheetHash","appName","lastEdited","lowestEdited","rupBuild","richTextXform","_richTextXform","authorId","COMMENTS_ATTRIBUTES","comments","getAnchorRect","getDefaultRect","anchor","refAddress","ObjectType","normalizeModel","DRAWING_ATTRIBUTES","coordsize","joinstyle","gradientshapeok","anchors","V_SHAPE_ATTRIBUTES","color2","obscured","fillcolor","strokecolor","conversionUnit","reverseConversionUnit","createNewModel","onParserClose","Company","Manager","HeadingPairs","TitleOfParts","PROPERTY_ATTRIBUTES","DateFormat","DateAttrs","drawings","commentRefs","commentName","CORE_PROPERTY_ATTRIBUTES","Relationship","RELATIONSHIPS_ATTRIBUTES","reconcilePicture","rels","mediaIndex","noChangeAspect","anchorType","picture","always","$count","maxItems","richTextXForm","addStyleModel","ssId","si","siFormulae","renderFormula","getStyleModel","getString","hyperlinkMap","commentsMap","iconSet","iconId","v4","databarXform","iconSetXform","isExt","custom","x14Id","renderDataBar","renderIconSet","uuid","fExtXform","sqRef","cfRule","cfXform","hasContent","hasExtContent","cfvoXform","borderColorXform","negativeBorderColorXform","negativeFillColorXform","axisColorXform","negativeBarColorSameAsPositive","negativeBarBorderColorSameAsPositive","axisPosition","cfvo","borderColor","negativeBorderColor","negativeFillColor","axisColor","cfIconXform","dataBar","extLst","extLstRefXform","formulaXform","colorScaleXform","isPrimitive","renderExpression","renderCellIs","renderTop10","renderAboveAverage","renderColorScale","renderText","renderTimePeriod","dxfId","rank","aboveAverage","timePeriod","colorXform","sqref","addDxfStyle","getDxfStyle","idXform","marked","allowBlank","showInputMessage","promptTitle","showErrorMessage","errorStyle","_dataValidation","_formula","isInternalLink","getMasterAddress","summaryRight","useFirstPageNumber","usePrinterDefaults","copies","headings","gridLines","numRowsSeen","defaultColWidth","pageSetUpPr","outlinePr","outlineProperties","selectLockedCells","selectUnlockedCells","formatCells","formatColumns","formatRows","insertColumns","insertHyperlinks","deleteColumns","deleteRows","pivotTables","scenarios","frozenSplit","workbookViewId","rightToLeft","tabSelected","showRuler","zoomScale","zoomScaleNormal","xSplit","ySplit","topLeftCell","activePane","pane","activeCell","sheetView","maxRows","maxCols","ignoreNodes","sheetPr","sheetViews","sheetFormatPr","sheetData","printOptions","drawing","tableParts","conditionalFormatting","TargetMode","vmlDrawing","drawingsCount","preImageId","WORKSHEET_ATTRIBUTES","relationships","vmlDrawings","_format","_parse","sb","eb","textXform","_textXform","fontXform","_fontXform","FONT_OPTIONS","fontNameTag","rPh","rich","sharedStringXform","_sharedStringXform","addRichText","horizontalValues","verticalValues","defaultColor","validStyle","validStyleValues","down","diagonalUp","diagonalDown","fgColor","bgColor","patternFill","validPatternValues","StopXform","PatternFillXform","GradientFillXform","OPTIONS","condense","vertAlign","strike","sz","getDefaultFmtId","getDefaultFmtCode","numFmts","cellStyleXfs","dxfs","tableStyles","initIndex","numFmtNextId","_addBorder","_addStyle","_addFill","weakMap","STYLESHEET_ATTRIBUTES","_addFont","_addNumFmtStr","defaultSlicerStyle","defaultTimelineStyle","Mock","autodrain","dateStyleId","_dateStyleId","Attributes","single","double","singleAccounting","doubleAccounting","filterColumn","customFilters","hiddenButton","tableColumns","tableStyleInfo","TABLE_ATTRIBUTES","totalsRowCount","totalsRowShown","parseRels","parseWorkbook","parseSharedStrings","drawingRels","worksheetRels","sheetNo","globalRels","sheetDefs","_processWorksheetEntry","_processCommentEntry","_processTableEntry","_processWorksheetRelsEntry","_processMediaEntry","_processDrawingEntry","_processDrawingRelsEntry","_processVmlDrawingEntry","_processThemeEntry","_iteratorError3","_iteratorAbruptCompletion3","_didIteratorError3","_step3","_iterator3","loadAsync","writableObjectMode","readableObjectMode","addMedia","addDrawings","addTables","addContentTypes","addApp","addCore","addThemes","theme1","addOfficeRels","RelType","addWorkbookRels","addSharedStrings","addStyles","addWorkbook","addWorksheets","_finalize","prepareModel","useSharedStrings","useStyles","CsvFormatterStream","Transform","objectMode","hasWrittenBOM","rowFormatter","RowFormatter","writeBOM","rowTransform","BOM","FormatterOptions","rowDelimiter","quoteColumns","quoteHeaders","includeEndRowDelimiter","alwaysWriteHeaders","shouldWriteHeaders","writeHeaders","escapedQuote","FieldFormatter","REPLACE_REGEXP","ESCAPE_REGEXP","shouldQuote","quoteField","fieldFormatter","hasWrittenHeaders","isRowHashArray","isRowArray","gatherHeaders","createTransform","isSyncTransform","_rowTransform","callTransformer","shouldFormatColumns","checkHeaders","gatherColumns","writeToPath","writeToString","writeToBuffer","writeToStream","promisify","Writable","util","CsvParserStream","parsedRowCount","parsedLineCount","endEmitted","headersEmitted","Parser","headerTransformer","HeaderTransformer","decoder","StringDecoder","rowTransformerValidator","RowTransformerValidator","hasHitRowLimit","limitRows","shouldEmitRows","shouldSkipLine","skipLines","rowValidator","wrapDoneCallback","checkAndEmitHeaders","transformRow","pushRow","transformAndValidate","skipRow","string_decoder","ParserOptions","ignoreEmpty","escapeChar","supportsComments","renameHeaders","strictColumnHandling","discardUnmappedColumns","carriageReturn","escapedDelimiter","NEXT_TOKEN_REGEXP","parseString","parseFile","Readable","rowParser","RowParser","removeBOM","Scanner","hasMoreData","parseWithComments","parseWithoutComments","parseRow","nextCharacterToken","Token","isTokenComment","advancePastLine","lineFromCursor","hasMoreCharacters","truncateToCursor","nextNonSpaceToken","isEmptyRow","columnParser","ColumnParser","getStartToken","isTokenRowDelimiter","advancePastToken","isTokenCarriageReturn","shouldSkipColumnParse","isTokenDelimiter","lineLength","startCursor","endCursor","advanceTo","advanceToToken","isTokenEscapeCharacter","isTokenQuote","ColumnFormatter","quotedColumnParser","QuotedColumnParser","nonQuotedColumnParser","NonQuotedColumnParser","columnFormatter","foundClosingQuote","gatherDataBetweenQuotes","checkForMalformedColumn","receivedHeaders","shouldUseFirstRow","processedFirstRow","headersLength","headersTransform","shouldMapRow","mapHeaders","_rowValidator","createValidator","isSyncValidate","callValidator","bignum","decoders","encoders","_createNamed","_initNamed","_getDecoder","_getEncoder","Reporter","isBuffer","isEncoderBuffer","DecoderBuffer","isDecoderBuffer","readUInt8","raw","reporter","_reporterState","EncoderBuffer","_baseState","enc","reverseArgs","useDecoder","explicit","_wrap","_useArgs","wrapResult","enterKey","_peekTag","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","_use","_createEncoderBuffer","_encodeValue","_skipDefault","_encodeChoice","_encodePrimitive","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","rethrow","pathLen","tagClass","tagClassByName","tagByName","_reverse","der","primitive","tagStr","_skipUntilEnd","readUInt16BE","pem","writeUInt16BE","defaultBuffer","isBN","BN","wordSize","_initNumber","_initArray","_parseHex","_parseBase","imuln","_iaddn","_expand","_normSign","inspect","isZero","modn","idivn","toArrayLike","andln","iushrn","_countBits","clz32","_zeroBits","bitLength","zeroBits","toTwos","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","setn","iadd","isub","N","J","te","ne","ie","oe","ae","le","ce","ue","he","fe","de","pe","me","be","imul","ge","ye","ve","we","xe","ke","Se","Me","Ce","Te","Ee","Ae","Re","Oe","je","Ie","Ne","mulp","mulTo","makeRBT","revBin","permute","guessLen13b","conjugate","normalize13b","convert13b","mul","mulf","muln","sqr","isqr","iushln","ishln","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","divmod","divn","umod","divRound","egcd","isEven","isOdd","gcd","_invmp","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","toRed","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","redInvm","redNeg","redPow","k256","p224","p192","p25519","_tmp","_prime","prime","r2","imod","rinv","minv","ireduce","imulK","_strip","mont","toByteArray","fromByteArray","_move","for","modrn","allocUnsafe","_toArrayLikeLE","_toArrayLikeBE","rand","Rand","_rand","getBytes","getByte","readUInt32BE","SBOX","INV_SBOX","SUB_MIX","INV_SUB_MIX","keySize","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","writeUInt32BE","decryptBlock","scrub","AES","_cipher","_ghash","_finID","writeUIntBE","_prev","_secCache","_decrypt","_alen","_len","_mode","_authTag","_called","_update","encrypt","_final","getAuthTag","setAuthTag","setAAD","createCipher","Cipher","createCipheriv","Cipheriv","createDecipher","Decipher","createDecipheriv","Decipheriv","listCiphers","getCiphers","_last","_autopadding","iv","decrypt","setAutoPadding","evp_bytestokey","writeUInt8","ghash","_multiply","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","cipher","aes128","aes192","aes256","instantiate","EDE","DES","_des","des","des3","modulus","prime1","prime2","blinder","publicExponent","unblinder","exponent1","exponent2","getr","randombytes","sha224WithRSAEncryption","sha256WithRSAEncryption","sha384WithRSAEncryption","sha512WithRSAEncryption","sha256","sha224","sha384","sha512","DSA","ripemd160WithRSA","md5WithRSAEncryption","_hashType","_tag","_signType","_write","Sign","Verify","createSign","createVerify","ec","keyFromPrivate","toDER","priv_key","makeKey","elliptic","algorithm","subjectPrivateKey","pub_key","signature","allocUnsafeSlow","SlowBuffer","isEncoding","fillLast","lastNeed","lastTotal","lastChar","INSPECT_MAX_BYTES","kMaxLength","TYPED_ARRAY_SUPPORT","foo","byteOffset","poolSize","_isBuffer","swap16","swap32","swap64","subarray","readUIntLE","readUIntBE","readUInt16LE","readUInt32LE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUInt16LE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","copyWithin","ieee754","hashMode","_finalOrDigest","__final","_decoder","filterReject","callee","unsafe","nonConfigurable","nonWritable","IS_HTMLDDA","Deno","Pebble","v8","stat","dontCallGetSet","forced","sham","EXISTS","PROPER","CONFIGURABLE","inspectSource","facade","enforce","getterFor","NATIVE","POLYFILL","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","IteratorPrototype","BUGGY_SAFARI_ITERATORS","dup","arity","WebKitMutationObserver","characterData","parentWindow","ActiveXObject","PromiseRejectionEvent","REJECTION_EVENT","SUBCLASSING","copyright","keyFor","clearImmediate","MessageChannel","port2","port1","importScripts","withoutSetter","Arguments","real","rejection","notified","reactions","race","QObject","findChild","useSetter","useSimple","isNull","isRegExp","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","generateKeys","genKeyPair","getPublicKey","computeSecret","keyFromPublic","getPublic","getPrivateKey","setPublicKey","_importPublic","setPrivateKey","_importPrivate","ripemd160","_alg","_ipad","_opad","rng","pseudoRandomBytes","prng","createHmac","Hmac","pbkdf2","pbkdf2Sync","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","randomFill","randomFillSync","createCredentials","DH_CHECK_P_NOT_SAFE_PRIME","DH_CHECK_P_NOT_PRIME","DH_UNABLE_TO_CHECK_GENERATOR","DH_NOT_SUITABLE_GENERATOR","NPN_ENABLED","ALPN_ENABLED","RSA_PKCS1_PADDING","RSA_SSLV23_PADDING","RSA_NO_PADDING","RSA_PKCS1_OAEP_PADDING","RSA_X931_PADDING","RSA_PKCS1_PSS_PADDING","POINT_CONVERSION_COMPRESSED","POINT_CONVERSION_UNCOMPRESSED","POINT_CONVERSION_HYBRID","randomfill","$L","$u","$x","$offset","$d","$y","$M","$D","$W","$H","$m","$s","$ms","$g","$locale","weekStart","$set","invalidDate","meridiem","weekdaysMin","$i","isDayjs","Ls","LTS","LT","LL","LLL","LLLL","SS","SSS","HH","ZZ","customParseFormat","parseTwoDigitYear","dayjs_plugin_customParseFormat","$localOffset","isUTC","dayjs_plugin_utc","_cbcInit","_cbcState","bufferOff","_updateDecrypt","_updateEncrypt","_flushBuffer","_finalEncrypt","_finalDecrypt","_pad","_unpad","_desState","deriveKeys","pc1","r28shl","pc2","_encrypt","substitute","rip","ciphers","_edeState","padSplit","binary","gen","_pub","_priv","setGenerator","__prime","_primeLen","_primeCode","simpleSieve","fermatTest","__gen","_gen","getPrime","getGenerator","modp1","modp2","modp5","modp14","modp15","modp16","modp17","modp18","eddsa","brorand","getNAF","getJSF","assert","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","redN","_maxwellTrick","precomputed","_fixedNafMul","_getDoubles","jpoint","mixedAdd","toP","_wnafMul","_getNAFPoints","wnd","dblp","_wnafMulAdd","toJ","BasePoint","decodePoint","pointFromX","encodeCompressed","precompute","doubles","naf","_getBeta","_hasDoubles","dbl","twisted","mOneA","c2","oneC","zOne","_mulA","_mulC","pointFromY","isInfinity","fromJSON","_extDbl","_projDbl","_extAdd","_projAdd","mulAdd","jmulAdd","eqXToP","edwards","a24","diffAdd","jumlAdd","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","inf","_getEndoRoots","_getEndoBasis","_endoSplit","_endoWnafMulAdd","_zeroDbl","_threeDbl","_dbl","trpl","PresetCurve","nh","keyPair","fromPrivate","fromPublic","pers","persEnc","entropy","hmacStrength","entropyEnc","_truncateToN","canonical","recoveryParam","recoverPubKey","getKeyRecoveryParam","priv","pub","privEnc","pubEnc","_importDER","place","LN2","parseBytes","pointClass","encodingLength","keyFromSecret","hashInt","messagePrefix","encodePoint","pubBytes","makeSignature","Rencoded","intFromLE","fromSecret","encodeInt","decodeInt","isPoint","cachedProperty","_secret","secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","zero2","main","scripts","lint","repository","bugs","homepage","devDependencies","brfs","coveralls","eslint","grunt","istanbul","mocha","_eventsCount","_maxListeners","defaultMaxListeners","newListener","warned","fired","wrapFn","setMaxListeners","getMaxListeners","prependListener","prependOnceListener","rawListeners","listenerCount","eventNames","ownKeys","_blockSize","_blockOffset","_length","_finalized","_digest","ripemd","hmac","sha1","pendingTotal","outSize","padLength","endian","_delta8","_delta32","BlockHash","join32","rotl32","sum32","sum32_3","sum32_4","toHex32","split32","sum32_5","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","_prepareBlock","rotr32","p32","htonl","zero8","predResist","outLen","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","reseed","JSZip","getTypeOf","uint8array","compressedSize","uncompressedSize","crc32","compressedContent","getContentWorker","uncompressWorker","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","createFolders","compressionOptions","unixPermissions","dosPermissions","lie","Uint16Array","_pako","_pakoAction","_pakoOptions","processChunk","_createPako","transformTo","onData","pako","utf8encode","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","_sources","openedSource","closedSource","DATA_DESCRIPTOR","CENTRAL_DIRECTORY_END","prepareNextSource","registerPrevious","generatedError","lock","generateWorker","_compressWorker","support","decompressed","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isStream","prepareContent","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","_helper","_read","newBufferFrom","allocBuffer","generateInternalStream","checkSupport","generateNodeStream","toNodejsStream","byteAt","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","checkIndex","readInt","readString","readDate","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","dataIsReady","_tickScheduled","_tickAndRepeat","extraStreamInfo","mergeStreamInfo","nodestream","_internalType","_outputType","_mimeType","_worker","newBlob","arraybuffer","nodebuffer","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_dataBinary","internalStream","_decompressWorker","nodeStream","onFulfilled","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","chunkSize","windowBits","memLevel","gzip","strm","avail_out","deflateInit2","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","pending_buf","pending_out","total_out","_tr_flush_block","block_start","strstart","max_chain_length","prev_length","nice_match","w_size","w_mask","good_match","lookahead","match_start","window_size","hash_size","adler","total_in","ins_h","hash_shift","hash_mask","match_length","_tr_tally","max_lazy_match","last_lit","prev_match","match_available","good_length","max_lazy","nice_length","max_chain","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","data_type","_tr_init","deflateInit","deflateReset","deflateResetKeep","hcrc","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","havedict","wbits","ncode","nlen","ndist","have","lens","work","lendyn","distdyn","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","attachEvent","binding","isTypedArray","Le","Ye","$e","qe","Ue","Ke","He","Xe","Fe","Pe","De","Ze","Ve","ze","_randbelow","_randrange","getDivisor","certificate","seq","int","RSAPrivateKey","RSAPublicKey","bitstr","PublicKey","objid","null_","octstr","PrivateKey","EncryptedPrivateKey","DSAPrivateKey","DSAparam","ECPrivateKey","namedCurve","utcTime","utctime","generalTime","gentime","setof","seqof","rdnSequence","bool","passphrase","tbsCertificate","subjectPublicKeyInfo","subjectPublicKey","kde","kdeparams","salt","iters","algo","subtle","importKey","deriveBits","iterations","rmd160","ipad1","ipad2","opad","blocksize","fun","argv","cwd","chdir","umask","codes","allowHalfOpen","readable","_writableState","highWaterMark","getBuffer","_readableState","ReadableState","getHighWaterMark","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","pipesCount","flowing","reading","needReadable","emittedReadable","readableListening","resumeScheduled","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","_undestroy","undestroy","stdout","stderr","hasUnpiped","needDrain","_fromList","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","_transformState","transforming","writecb","writechunk","afterTransform","needTransform","writeencoding","pendingcb","corkedRequestsFree","WritableState","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","finalCalled","ending","decodeStrings","writing","bufferProcessing","onwrite","writelen","errorEmitted","bufferedRequest","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","isBuf","allBuffers","setDefaultEncoding","getOwnPropertyDescriptors","_getString","customInspect","ERR_STREAM_PREMATURE_CLOSE","setHeader","ERR_MISSING_ARGS","ERR_INVALID_OPT_VALUE","Stream","pipeline","_invoke","__await","_sent","dispatchException","abrupt","nextLoc","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","isGeneratorFunction","awrap","AsyncIterator","rval","delegateYield","regeneratorRuntime","kStringMaxLength","MAX_LENGTH","MAX_STRING_LENGTH","isChar","isNameStartChar","isNameChar","S_LIST","NAME_RE","isNCNameStartChar","isNCNameChar","NC_NAME_RE","amp","quot","apos","xmldecl","processinginstruction","doctype","opentagstart","opentag","closetag","cdata","fragmentOpt","xmlnsOpt","trackPosition","nameStartCheck","nameCheck","isName","processAttribs","processAttribsNS","pushAttrib","pushAttribNS","additionalNamespaces","processAttribsPlain","pushAttribPlain","stateTable","sBegin","sBeginWhitespace","sDoctype","sDoctypeQuote","sDTD","sDTDQuoted","sDTDOpenWaka","sDTDOpenWakaBang","sDTDComment","sDTDCommentEnding","sDTDCommentEnded","sDTDPI","sDTDPIEnding","sText","sEntity","sOpenWaka","sOpenWakaBang","sComment","sCommentEnding","sCommentEnded","sCData","sCDataEnding","sCDataEnding2","sPIFirstChar","sPIRest","sPIBody","sPIEnding","sXMLDeclNameStart","sXMLDeclName","sXMLDeclEq","sXMLDeclValueStart","sXMLDeclValue","sXMLDeclSeparator","sXMLDeclEnding","sOpenTag","sOpenTagSlash","sAttrib","sAttribName","sAttribNameSawWhite","sAttribValue","sAttribValueQuoted","sAttribValueClosed","sAttribValueUnquoted","sCloseTag","sCloseTagSawWhite","openWakaBang","piTarget","topNS","chunkPosition","prevI","carriedFromPrevious","forbiddenState","attribList","reportedTextBeforeRoot","reportedTextAfterRoot","closedRoot","sawRoot","xmlDeclPossible","xmlDeclExpects","entityReturnState","defaultXMLVersion","forceXMLVersion","setXMLVersion","positionAtNewLine","xmlDecl","ENTITIES","readyHandler","makeError","errorHandler","getCode10","getCode11","getCodeNorm","getCode","unget","captureTo","captureToChar","captureNameChars","skipSpaces","currentXMLVersion","doctypeHandler","handleTextInRoot","handleTextOutsideRoot","parseEntity","textHandler","commentHandler","cdataHandler","piHandler","xmldeclHandler","openTagStartHandler","openTag","openSelfClosingTag","closeTag","qname","attributeHandler","endHandler","resolvePrefix","isSelfClosing","openTagHandler","closeTagHandler","_finalSize","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","_isStdio","readableHighWaterMark","isarray","writableHighWaterMark","_clearFn","enroll","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","noDeprecation","throwDeprecation","traceDeprecation","stylize","showHidden","_extend","NODE_DEBUG","pid","special","clockseq","msecs","nsecs","DNS","CHAR","NAME_START_CHAR","NAME_CHAR","CHAR_RE","S_RE","NAME_START_CHAR_RE","NAME_CHAR_RE","NMTOKEN_RE","RESTRICTED_CHAR","RESTRICTED_CHAR_RE","isRestrictedChar","isCharAndNotRestricted","NC_NAME_START_CHAR","NC_NAME_CHAR","NC_NAME_START_CHAR_RE","NC_NAME_CHAR_RE","initMouseEvent","saveAs","HTMLAnchorElement","autoBom","safari","onloadend","__WEBPACK_AMD_DEFINE_ARRAY__","arraySlice","makeArray","removeFrom","ary","getQueryElement","filterFindElements","ffElems","childElems","debounceMethod","_class","timeoutName","docReady","toDashed","$1","$2","htmlInit","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","dataOptionsAttr","jQuery","getStyleSize","measurementsLength","isBoxSizeOuter","isSetup","getSize","borderStyle","borderWidth","getZeroSize","isBorderBox","marginWidth","marginHeight","borderHeight","isBorderBoxSizeOuter","styleWidth","styleHeight","SYMBOL_TO_STRING_TAG","lineRegexp","printLocation","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","whitespace","lineNum","columnNum","locationStr","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","padLen","leftPad","enumerableOnly","symbols","_defineProperty","_defineProperties","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_wrapNativeSuper","_isNativeFunction","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","_isNativeReflectConstruct","construct","Proxy","GraphQLError","_Error","_inherits","subClass","superClass","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","positions","originalError","_nodeLocations","_nodeLocations2","_nodeLocations3","_classCallCheck","undefinedIfEmpty","nodeLocations","_i2","_this$nodes","originalExtensions","_objectSpread","_createClass","protoProps","staticProps","printError","_i4","_error$nodes2","_i6","_error$locations2","syntaxError","TokenKind","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","INT","FLOAT","BLOCK_STRING","COMMENT","devAssert","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","INLINE_FRAGMENT","VARIABLE_DEFINITION","SCHEMA","SCALAR","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","Lexer","startOfFileToken","lastToken","_proto","advance","_token$next","readToken","printCharCode","lexer","bodyLength","_col","readComment","readBlockString","readNumber","readName","unexpectedCharacterMessage","firstCode","isFloat","readDigits","isNameStart","chunkStart","uniCharCode","invalidSequence","dedentBlockStringValue","char2hex","sourceObj","isSource","_lexer","parseName","expectToken","parseDocument","many","parseDefinition","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","OPERATION_DEFINITION","variableDefinitions","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","variable","parseVariable","parseTypeReference","expectOptionalToken","parseValueLiteral","VARIABLE","SELECTION_SET","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","ARGUMENT","hasTypeCondition","expectOptionalKeyword","parseFragmentName","parseNamedType","_this$_options","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","NULL","LIST","parseObjectField","OBJECT_FIELD","parseDirective","DIRECTIVE","LIST_TYPE","NON_NULL_TYPE","NAMED_TYPE","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","interfaces","parseImplementsInterfaces","parseFieldsDefinition","OBJECT_TYPE_DEFINITION","_this$_options2","allowLegacySDLImplementsInterfaces","delimitedMany","_this$_options3","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","parseUnionMemberTypes","UNION_TYPE_DEFINITION","parseEnumValuesDefinition","ENUM_TYPE_DEFINITION","parseEnumValueDefinition","ENUM_VALUE_DEFINITION","parseInputFieldsDefinition","INPUT_OBJECT_TYPE_DEFINITION","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","repeatable","parseDirectiveLocations","DIRECTIVE_DEFINITION","parseDirectiveLocation","startToken","_this$_options4","noLocation","getTokenKindDesc","getTokenDesc","atToken","openKind","parseFn","closeKind","delimiterKind","isPunctuatorTokenKind","docCache","fragmentSourceMap","printFragmentWarnings","allowLegacyFragmentVariables","stripLoc","endToken","processFragments","seenKeys","fragmentDefinition","sourceKey","cacheKeyFromLoc","sourceKeySet","literals","gql_1","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","lib","YAHOO","lang","superclass","CryptoJS","Base","mixIn","$super","WordArray","sigBytes","Hex","Latin1","Utf8","BufferedBlockAlgorithm","_nDataBytes","_append","_minBufferSize","_doProcessBlock","Hasher","_doReset","_doFinalize","_createHelper","_createHmacHelper","HMAC","x64","Word","toX32","Base64","SHA256","HmacSHA256","SHA512","aa","ba","ca","fa","HmacSHA512","SHA384","HmacSHA384","dbits","b64map","b64pad","hex2b64","b64tohex","int2char","BigInteger","fromNumber","nbi","am2","am1","am3","DB","DM","DV","FV","F1","vv","BI_RM","BI_RC","intAt","nbv","fromInt","nbits","Classic","Montgomery","mp","invDigit","mpl","mph","um","op_and","op_or","op_xor","op_andnot","lbit","cbit","NullExp","nNop","Barrett","q3","ONE","dlShiftTo","mu","divide","cConvert","revert","cRevert","cReduce","divRemTo","cMulTo","multiplyTo","sqrTo","cSqrTo","squareTo","montConvert","ZERO","subTo","montRevert","montReduce","drShiftTo","montMulTo","montSqrTo","bnpCopyTo","bnpFromInt","bnpFromString","fromRadix","bnpClamp","bnpDLShiftTo","bnpDRShiftTo","lShiftTo","bnpLShiftTo","rShiftTo","bnpRShiftTo","bnpSubTo","bnpMultiplyTo","bnpSquareTo","bnpDivRemTo","bnpInvDigit","bnpIsEven","bnpExp","bnToString","negate","toRadix","bnNegate","bnAbs","bnCompareTo","bnBitLength","bnMod","modPowInt","bnModPowInt","nMulTo","nSqrTo","barrettConvert","barrettRevert","barrettReduce","multiplyUpperTo","multiplyLowerTo","dAddOffset","barrettMulTo","barrettSqrTo","lowprimes","lplim","Arcfour","bnpChunkSize","bnpToRadix","signum","intValue","bnpFromRadix","dMultiply","bnpFromNumber","testBit","bitwiseTo","isProbablePrime","nextBytes","bnpBitwiseTo","changeBit","bnpChangeBit","addTo","bnpAddTo","bnpDMultiply","bnpDAddOffset","bnpMultiplyLowerTo","bnpMultiplyUpperTo","modInt","bnpModInt","millerRabin","bnpMillerRabin","getLowestSetBit","shiftRight","modPow","bnClone","bnIntValue","byteValue","bnByteValue","shortValue","bnShortValue","bnSigNum","bnToByteArray","bnEquals","bnMin","bnMax","bnAnd","bnOr","bnXor","andNot","bnAndNot","not","bnNot","bnShiftLeft","bnShiftRight","bnGetLowestSetBit","bitCount","bnBitCount","bnTestBit","setBit","bnSetBit","clearBit","bnClearBit","flipBit","bnFlipBit","bnAdd","bnSubtract","bnMultiply","bnDivide","remainder","bnRemainder","divideAndRemainder","bnDivideAndRemainder","bnModPow","modInverse","bnModInverse","bnPow","bnGCD","bnIsProbablePrime","bnSquare","ARC4init","ARC4next","rng_state","rng_pool","rng_pptr","rng_psize","rng_seed_time","rng_seed_int","appVersion","rng_get_byte","prng_newstate","SecureRandom","parseBigInt","oaep_mgf1_arr","RSAKey","dmp1","dmq1","coeff","ECFieldElementFp","ECPointFp","zinv","ECCurveFp","fromBigInteger","infinity","rng_get_bytes","doPublic","RSADoPublic","setPublic","RSASetPublic","isPublic","isPrivate","RSAEncrypt","pkcs1pad2","encryptOAEP","RSAEncryptOAEP","oaep_pad","MessageDigest","getCanonicalAlgName","getHashLength","hextorstr","hashHex","rstrtohex","feFpEquals","toBigInteger","feFpToBigInteger","feFpNegate","feFpAdd","feFpSubtract","feFpMultiply","feFpSquare","feFpDivide","pointFpGetX","pointFpGetY","pointFpEquals","pointFpIsInfinity","pointFpNegate","pointFpAdd","twice","getInfinity","pointFpTwice","pointFpMultiply","multiplyTwo","pointFpMultiplyTwo","getQ","curveFpGetQ","getA","curveFpGetA","getB","curveFpGetB","curveFpEquals","curveFpGetInfinity","curveFpFromBigInteger","decodePointHex","curveFpDecodePointHex","getByteLength","getEncoded","toByteArrayUnsigned","decodeFrom","decodeFromHex","add2D","twice2D","multiply2D","isOnCurve","jsonParse","asn1","ASN1Util","integerToByteHex","bigIntToMinTwosComplementsHex","getPEMStringFromHex","hextopem","DERBoolean","DERInteger","DERBitString","DEROctetString","DERNull","DERObjectIdentifier","DEREnumerated","DERUTF8String","DERNumericString","DERPrintableString","DERTeletexString","DERIA5String","DERUTCTime","DERGeneralizedTime","DERSequence","DERSet","DERTaggedObject","jsonToASN1HEX","getEncodedHex","oidHexToInt","oidIntToHex","ASN1Object","getLengthHexFromValue","hV","hTLV","isModified","getFreshValueHex","hL","hT","getValueHex","DERAbstractString","setString","utf8tohex","setStringHex","DERAbstractTime","localDateToUTC","zeroPadding","stohex","setByDateValue","setByDate","DERAbstractStructured","setByASN1ObjectArray","asn1Array","appendASN1Object","setByBigInteger","setByInteger","setValueHex","bigint","setHexValueIncludingUnusedBits","setUnusedBitsAndHexValue","setByBinaryString","setByBooleanArray","newFalseArray","setValueOidString","setValueName","x509","OID","name2oid","oid","withMillis","sortFlag","sortflag","isExplicit","asn1Object","setASN1Object","utf8tob64u","b64utoutf8","ASN1HEX","BAtohex","stoBA","b64tob64u","b64utob64","b64utohex","uricmptohex","encodeURIComponentAll","hextoutf8","hextouricmp","hextob64nl","hextob64","pemtohex","b64nltohex","zulutosec","zulutomsec","hextoip","hextoipv6","hextoposhex","getLblen","getL","getVblen","getVidx","getV","getTLV","getNextSiblingIdx","getChildIdx","getNthChildIdx","getIdxbyList","getTLVbyList","getVbyList","hextooidstr","dump","ommit_long_octet","isASN1HEX","oid2name","oidname","x509ExtName","isHex","isInteger","isBase64URL","isIntegerArray","DIGESTINFOHEAD","md2","DEFAULTPROVIDER","hmacmd5","hmacsha1","hmacsha224","hmacsha256","hmacsha384","hmacsha512","hmacripemd160","MD5withRSA","SHA1withRSA","SHA224withRSA","SHA256withRSA","SHA384withRSA","SHA512withRSA","RIPEMD160withRSA","MD5withECDSA","SHA1withECDSA","SHA224withECDSA","SHA256withECDSA","SHA384withECDSA","SHA512withECDSA","RIPEMD160withECDSA","SHA1withDSA","SHA224withDSA","SHA256withDSA","MD5withRSAandMGF1","SHA1withRSAandMGF1","SHA224withRSAandMGF1","SHA256withRSAandMGF1","SHA384withRSAandMGF1","SHA512withRSAandMGF1","RIPEMD160withRSAandMGF1","CRYPTOJSMESSAGEDIGESTNAME","SHA1","SHA224","RIPEMD160","getDigestInfoHex","getPaddedDigestInfoHex","digestString","digestHex","prov","sha256Hex","sha512Hex","SECURERANDOMGEN","getRandomHexOfNbytes","getRandomBigIntegerOfNbytes","getRandomHexOfNbits","getRandomBigIntegerOfNbits","getRandomBigIntegerZeroToMax","getRandomBigIntegerMinToMax","setAlgAndProvider","md","updateString","updateHex","sjcl","codec","toBits","fromBits","algName","provName","HASHLENGTH","Mac","algProv","mac","doFinal","doFinalString","doFinalHex","setPassword","utf8","rstr","b64","b64u","Signature","_setAlgNames","mdAlgName","pubkeyAlgName","_zeroPaddingOfSignature","prvKey","pubKey","sHashHex","ecprvhex","eccurvename","ECDSA","signHex","signWithMessageHashPSS","pssSaltLen","signWithMessageHash","signString","ecpubhex","verifyHex","verifyWithMessageHashPSS","verifyWithMessageHash","algProvName","psssaltlen","prvkeypem","prvkeypas","getAlgByKeyAndName","decryptOAEP","oidhex2name","ECParameterDB","getBigRandom","setNamedCurve","ecparams","getByName","prvKeyHex","pubKeyHex","curveName","setPrivateKeyHex","setPublicKeyHex","getPublicKeyXYHex","keylen","getShortNISTPCurveName","generateKeyPairHex","biRSSigToASN1Sig","fromByteArrayUnsigned","serializeSig","parseSigHex","verifyRaw","Bitcoin","parseSig","toByteArraySigned","parseSigCompact","readPKCS5PrvKeyHex","readPKCS8PrvKeyHex","readPKCS8PubKeyHex","readCertPubKeyHex","prv","parseSigHexInHexRS","asn1SigToConcatSig","concatSigToASN1Sig","hexRSSigToASN1Sig","regist","ciphertext","proc","eproc","ivlen","TripleDES","ivsalt","keyhex","ivhex","parsePKCS5PEM","getKeyAndUnusedIvByPasscodeAndIvsalt","decryptKeyB64","getDecryptedKeyHex","getEncryptedPKCS5PEMFromPrvKeyHex","parseHexOfEncryptedPKCS8","encryptionSchemeAlg","encryptionSchemeIV","pbkdf2Salt","pbkdf2Iter","getPBKDF2KeyHexFromParam","PBKDF2","_getPlainPKCS8HexFromEncryptedPKCS8PEM","getKeyFromEncryptedPKCS8PEM","getKeyFromPlainPrivatePKCS8Hex","parsePlainPrivatePKCS8Hex","algoid","algparam","keyidx","getKeyFromPlainPrivatePKCS8PEM","_getKeyFromPublicPKCS8Hex","parsePublicRawRSAKeyHex","parsePublicPKCS8Hex","dp","dq","qi","setPrivateEx","crv","X509","getPublicKeyFromCertHex","getPublicKeyFromCertPEM","generateKeypair","prvKeyObj","pubKeyObj","getPEM","SubjectPublicKeyInfo","getKeyFromCSRPEM","getKeyFromCSRHex","parseCSRHex","p8pubkeyhex","getJWKFromKey","getPosArrayOfChildrenFromHex","getHexValueArrayOfChildrenFromHex","readPrivateKeyFromPEMString","readPKCS5PubKeyHex","readCertHex","getPublicKeyHex","_RE_HEXDECONLY","pss_mgf1_str","_rsasign_getAlgNameAndHashFromHexDisgestInfo","foffset","aExtInfo","getSerialNumberHex","getSignatureAlgorithmField","getIssuerHex","getIssuerString","hex2dn","getSubjectHex","getSubjectString","getNotBefore","getNotAfter","getPublicKeyIdx","getPublicKeyContentIdx","getSignatureAlgorithmName","getSignatureValueHex","verifySignature","parseExt","vidx","getExtInfo","getExtBasicConstraints","cA","getExtKeyUsageBin","getExtKeyUsageString","KEYUSAGE_NAME","getExtSubjectKeyIdentifier","getExtAuthorityKeyIdentifier","getExtExtKeyUsageName","getExtSubjectAltName","getExtSubjectAltName2","getExtCRLDistributionPointsURI","getExtAIAInfo","ocsp","caissuer","getExtCertificatePolicies","cps","unotice","readCertPEM","getInfo","doPrivate","signPSS","verifyPSS","SALT_LEN_HLEN","SALT_LEN_MAX","SALT_LEN_RECOVER","hex2rdn","hex2attrTypeValue","oid2atype","getPublicKeyInfoPropOfCertPEM","isSafeJSONString","parseJWS","parsedJWS","sigvalH","headB64U","payloadB64U","sigvalB64U","sigvalBI","headS","payloadS","readSafeJSONString","jwsalg2sigalg","hASN1Sig","headerObj","payloadObj","headerPP","payloadPP","sigHex","verifyJWT","inArray","includedArray","IntDate","getNow","verifyAt","gracePeriod","nbf","jti","HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","PS256","PS384","PS512","getEncodedSignatureValueFromJWS","getJWKthumbprint","getZulu","intDate2UTCString","intDate2Zulu","FUNC_ERROR_TEXT","HASH_UNDEFINED","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsOctal","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","nodeIsTypedArray","arrayAggregator","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","stringSize","unicodeSize","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","arrayProto","idCounter","objectCtorString","oldDash","getPrototype","objectCreate","spreadableSymbol","symIterator","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","metaMap","realNames","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolValueOf","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","SetCache","Stack","arrayLikeKeys","inherited","isArg","isBuff","skipIndexes","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","objValue","baseAggregator","baseEach","baseAssign","copyObject","baseAt","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","getSymbolsIn","baseAssignIn","keysIn","copySymbols","getSymbols","initCloneByTag","Ctor","cloneArrayBuffer","cloneDataView","dataView","cloneTypedArray","cloneRegExp","cloneSymbol","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","computed","valuesIndex","templateSettings","setCacheAdd","setCacheHas","stackClear","stackDelete","stackGet","stackHas","stackSet","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGetAllKeys","keysFunc","symbolsFunc","baseGt","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","baseInvoke","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","isPartial","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","mergeFunc","isTyped","isArrayLikeObject","toPlainObject","baseNth","baseOrderBy","iteratees","orders","getIteratee","baseSortBy","comparer","criteria","compareMultiple","objCriteria","othCriteria","ordersLength","compareAscending","basePickBy","baseSet","basePullAll","basePullAt","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","castRest","castSlice","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","isNew","createAggregator","createAssigner","assigner","isIterateeCall","createCaseFirst","createCompounder","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","reorder","arrLength","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","charsLength","createRange","toFinite","baseRange","createRelationalOperation","wrapFunc","isCurry","setWrapToString","createRound","createToPairs","setToPairs","baseToPairs","createWrap","mergeData","srcBitmask","newBitmask","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","otherFunc","stubArray","ctorString","isMaskable","stubFalse","otherArgs","shortOut","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","differenceBy","differenceWith","findLastIndex","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","unzipWith","without","xorBy","xorWith","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","invokeMap","WRAP_BIND_FLAG","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","timeWaiting","debounced","isInvoking","leadingEdge","defer","overArgs","funcsLength","partialRight","rearg","baseIsArrayBuffer","baseIsDate","baseIsMap","baseIsRegExp","baseIsSet","baseIsTypedArray","toLength","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invertBy","baseKeysIn","nativeKeysIn","isProto","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","dividend","multiplicand","minuend","subtrahend","castArray","cond","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functions","functionsIn","mapKeys","mapValues","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","sortedUniq","sortedUniqBy","spread","takeRight","takeRightWhile","takeWhile","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","findLastKey","forIn","forInRight","forOwn","forOwnRight","baseInRange","isElement","isEqualWith","isMatch","isMatchWith","isNative","isNil","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","strLength","radix","reduceRight","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","esTemplateValue","evaluateValue","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","omission","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isUnwrapped","onlyLazy","chainName","lazyClone","lazyReverse","getView","iterLength","takeCount","iterIndex","wrapperChain","wrapperCommit","wrapperNext","wrapperPlant","wrapperReverse","wrapped","wrapperValue","wrapperToIterator","Outlayer","Masonry","compatOptions","fitWidth","_resetLayout","_getMeasurement","colYs","horizontalColIndex","firstItem","firstItemElem","excess","isFitWidth","_getOption","_getItemLayoutPosition","colPosition","_getTopColPosition","_getTopColGroup","minimumY","_getColGroupY","groupColYs","_getHorizontalColPosition","_manageStamp","stampSize","_getElementOffset","stampMaxY","_getContainerSize","_getContainerFitWidth","unusedCols","needsResizeLayout","Config","LIB_VERSION","screen","escapee","ArrayProto","windowConsole","document$1","windowOpera","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","log_func_with_prefix","console_with_prefix","bound","ctor","needle","subclass","isEmptyObject","encodeDates","strip_empty_properties","JSONEncode","mixed_val","escapable","holder","mind","JSONDecode","SyntaxError","uffff","base64Encode","h3","h4","ac","tmp_arr","utf8Encode","stringl","utftext","UUID","byte_array","UA","BLOCKED_UA_STRS","isBlockedUA","HTTPBuildQuery","formdata","arg_separator","use_val","use_key","getQueryParam","nameEQ","set_seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","expires","secure","extract_domain","toGMTString","new_cookie_val","_localStorageSupported","localStorageSupported","forceCheck","cheap_guid","is_supported","force_check","register_event","fixEvent","cancelBubble","oldSchool","ontype","makeHandler","new_handler","old_handlers","old_result","new_result","TOKEN_MATCH_REGEX","dom_query","getAllChildren","bad_whitespace","hasClass","getElementsBySelector","foundCount","currentContextIndex","currentContext","token_match","attrName","attrOperator","attrValue","CAMPAIGN_KEYWORDS","CLICK_IDS","campaignParams","default_value","kw","kwkey","clickParams","idkey","marketingParams","searchEngine","searchInfo","$search_engine","keyword","mp_keyword","user_agent","browserVersion","Chrome","Safari","Opera","Firefox","Konqueror","BlackBerry","Mozilla","referringDomain","extra_props","$os","$referrer","$referring_domain","$device","$current_url","$browser_version","$screen_height","$screen_width","mp_lib","$lib_version","$insert_id","people_properties","mpPageViewProperties","current_page_title","current_domain","current_url_path","current_url_protocol","current_url_search","maxlen","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","domain_regex","tld","JSONStringify","JSONParse","DomTracker","create_properties","event_handler","after_track_handler","mixpanel_instance","event_name","user_callback","override_event","get_config","track_callback","timeout_occured","callback_fired","LinkTracker","new_tab","FormTracker","logger$2","SharedLock","storageKey","pollIntervalMS","timeoutMS","withLock","lockedCB","errorCB","keyX","keyY","keyZ","getSetY","valY","criticalSection","logger$1","RequestQueue","errorReporter","memQueue","enqueue","flushInterval","queueEntry","flushAfter","storedQueue","readFromStorage","saveToStorage","fillBatch","batchSize","idsInBatch","orphaned","filterOutIDsAndInvalid","idSet","filteredItems","removeItemsByID","removeFromStorage","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","RequestBatcher","libConfig","sendRequestFunc","beforeSendHook","stopAllBatching","stopAllBatchingFunc","batch_size","batch_flush_interval_ms","batch_autostart","consecutiveRemovalFailures","itemIdsSentSuccessfully","timeoutID","resetBatchSize","resetFlush","scheduleFlush","flushMS","requestInProgress","batch_request_timeout_ms","currentBatchSize","dataForRequest","transformedItems","mp_sent_by_lib_version","addPayload","timesSent","batchSendCallback","removeItemsFromQueue","unloading","xhr_req","retryMS","retryAfter","halvedBatchSize","ignore_json_errors","timeout_ms","GDPR_DEFAULT_PERSISTENCE_PREFIX","optIn","_optInOut","optOut","hasOptedIn","_getStorageValue","hasOptedOut","_hasDoNotTrackFlagOn","ignoreDnt","win$1","hasDntOn","doNotTrack","msDoNotTrack","dntValue","optedOut","addOptOutCheckMixpanelLib","_addOptOutCheck","addOptOutCheckMixpanelPeople","_get_config","addOptOutCheckMixpanelGroup","clearOptInOut","_getStorage","_getStorageKey","crossSubdomainCookie","persistenceType","persistencePrefix","optValue","cookieExpiration","secureCookie","crossSiteCookie","trackEventName","trackProperties","send_immediately","SET_ACTION","SET_ONCE_ACTION","UNSET_ACTION","ADD_ACTION","APPEND_ACTION","UNION_ACTION","REMOVE_ACTION","apiActions","set_action","_is_reserved_property","unset_action","$unset","set_once_action","$set_once","union_action","list_name","$union","append_action","$append","remove_action","$remove","delete_action","MixpanelGroup","group_key","group_id","_mixpanel","_group_key","_group_id","_send_request","$group_key","$group_id","$token","date_encoded_data","_track_or_batch","batcher","request_batchers","conf","MixpanelPeople","update_referrer_info","$add","track_charge","$amount","clear_charges","delete_user","_identify_called","$delete","get_distinct_id","$distinct_id","device_id","get_property","user_id","had_persisted_distinct_id","$device_id","$user_id","$had_persisted_distinct_id","engage","people","_enqueue","conf_var","_flags","identify_called","_add_to_people_queue","_flush_one_queue","action_method","queue_to_params_fn","queued_data","load_queue","action_params","_pop_from_people_queue","_set_callback","_add_callback","_append_callback","_set_once_callback","_union_callback","_unset_callback","_remove_callback","$append_queue","$append_item","append_callback","$remove_queue","$remove_item","remove_callback","SET_QUEUE_KEY","SET_ONCE_QUEUE_KEY","UNSET_QUEUE_KEY","ADD_QUEUE_KEY","APPEND_QUEUE_KEY","REMOVE_QUEUE_KEY","UNION_QUEUE_KEY","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","EVENT_TIMERS_KEY","RESERVED_PROPERTIES","MixpanelPersistence","campaign_params_saved","persistence_name","storage_type","update_config","upgrade","old_cookie","old_localstorage","register_once","expire_days","cross_subdomain","cross_site","cookie_domain","load_prop","default_expiry","unregister","update_search_keyword","$initial_referrer","$initial_referring_domain","get_referrer_info","cookie_expiration","set_disabled","disable_persistence","set_cookie_domain","set_cross_site","cross_site_cookie","set_cross_subdomain","cross_subdomain_cookie","set_secure","secure_cookie","get_cross_subdomain","q_key","_get_queue_key","q_data","set_q","_get_or_create_queue","set_once_q","unset_q","add_q","union_q","remove_q","append_q","enqueued_obj","append_obj","queued_action","default_val","set_event_timer","remove_event_timer","init_type","mixpanel_master","IDENTITY_FUNC","NOOP_FUNC","PRIMARY_INSTANCE_NAME","DEVICE_ID_PREFIX","USE_XHR","ENQUEUE_REQUESTS","DEFAULT_API_ROUTES","record","api_host","api_routes","api_method","api_transport","api_payload_format","app_host","cdn","error_reporter","cookie_name","mp_loader","track_marketing","skip_first_touch_marketing","store_google","stop_utm_persistence","save_referrer","track_links_timeout","disable_cookie","opt_out_tracking_by_default","opt_out_persistence_by_default","opt_out_tracking_persistence_type","opt_out_tracking_cookie_prefix","property_blacklist","xhr_headers","ignore_dnt","batch_requests","record_block_class","record_block_selector","record_idle_timeout_ms","record_mask_text_class","record_mask_text_selector","record_max_ms","record_sessions_percent","recorder_src","DOM_LOADED","MixpanelLib","create_mplib","_cached_groups","utm_params","initial_utm_params","has_utm","utm_value","utm_key","_execute_array","report_error","_loaded","__loaded","variable_features","set_config","callback_fn","_jsc","__dom_loaded_queue","__request_queue","__disabled_events","disable_all_events","_batch_requests","init_batchers","flush_on_unload","get_batcher_configs","batcher_config","queue_key","unpersisted_superprops","_gdpr_init","distinct_id","track_pageview_option","_init_url_change_tracking","start_session_recording","handleLoadedRecorder","_recorder","__mp_recorder","startRecording","scriptEl","stop_session_recording","stopRecording","get_session_recording_properties","replay_id","replayId","$mp_replay_id","_set_default_superprops","_utm_value","_dom_loaded","_track_dom","has_opted_out_tracking","DomClass","previous_tracked_url","nativePushState","nativeReplaceState","current_url","should_track","_prepare_callback","jsc","randomized_cb","callback_string","DEFAULT_OPTIONS","body_data","use_post","use_sendBeacon","verbose_mode","headerValue","start_time","fn_name","alias_calls","other_calls","tracking_calls","calls","caller","are_batchers_initialized","queue_prefix","_batcher_configs","batcher_for","_encode_data_for_request","_run_hook","stop_batch_senders","batcher_configs","start_batch_senders","_batchers_were_started","encoded_data","truncated_data","should_send_immediately","send_request_options","request_enqueued_or_initiated","send_request_immediately","skip_hooks","_event_is_disabled","start_timestamp","duration_in_ms","$duration","marketing_properties","blacklisted_prop","set_group","group_ids","add_group","old_values","remove_group","old_value","track_with_groups","tracking_props","_create_map_key","_remove_group_from_cache","get_group","map_key","default_page_properties","event_properties","track_links","track_forms","time_event","REGISTER_DEFAULTS","persistent","options_for_register","days_or_options","_register_single","new_distinct_id","previous_distinct_id","$anon_distinct_id","name_tag","prop_name","hook_name","property_name","has_opted_in_tracking","persistence_type","opt_in_tracking","enable_persistence","opt_out_tracking","clear_persistence","clear_opt_in_out_tracking","_gdpr_update_persistence","_gdpr_call_func","cookie_prefix","track_event_name","track_properties","instances","init_as_module","dom_loaded_handler","toplevel","frameElement","doScroll","do_scroll_check","add_dom_loaded_handler","defineLocale","meridiemParse","isPM","isLower","longDateFormat","calendar","sameDay","lastDay","sameElse","relativeTime","future","past","dayOfMonthOrdinalParse","doy","pluralForm","plurals","pluralize","withoutSuffix","isFuture","weekdaysParseExact","postformat","symbolMap","preparse","numberMap","suffixes","relativeTimeWithPlural","plural","forms","isFormat","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutation","softMutation","mutationTable","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","specialMutationForYears","processRelativeTime","ll","lll","llll","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","$0","isUpper","ezafeNumSuffix","eifelerRegelAppliesToNumber","processFutureTime","processPastTime","translateSingular","translateSeconds","relativeTimeWithSingular","relativeSeconds","translator","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","numbersNouns","numberNoun","numberAsNoun","hundred","ten","translateFuture","translatePast","hm","processHoursFunction","weekdaysCaseReplace","nominative","accusative","genitive","hookCallback","hasOwnProp","isObjectEmpty","arrLen","createUTC","createLocalOrUTC","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","parsedDateParts","rfc2822","weekdayMismatch","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_tzm","_isUTC","_offset","Moment","isMoment","suppressDeprecationWarnings","deprecationHandler","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","forceSign","absNumber","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","formatMoment","expandFormat","makeFormatFunction","replaceLongDateFormatTokens","aliases","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","isoweeks","isoweek","normalizeUnits","normalizeObjectUnits","inputObject","normalizedInput","priorities","isoWeekday","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","strictRegex","getParseRegexForToken","unescapeFormat","regexEscape","toInt","argumentForCoercion","coercedNumber","addParseToken","tokenLen","addWeekParseToken","addTimeToArrayFromToken","isLeapYear","WEEK","WEEKDAY","daysInYear","getSetYear","makeGetSet","keepTime","set$1","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","getSetMonth","computeMonthsParse","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","createUTCDate","firstWeekOffset","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","kFormat","kInput","_isPm","_meridiem","pos1","pos2","getSetHour","globalLocale","baseConfig","localeFamilies","commonPrefix","minl","normalizeLocale","loadLocale","oldLocale","isLocaleNameSane","_abbr","aliasedRequire","getSetGlobalLocale","parentLocale","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","preprocessRFC2822","extractFromRFC2822Strings","monthStr","dayStr","hourStr","minuteStr","secondStr","checkWeekday","weekdayStr","parsedInput","obsOffset","militaryOffset","numOffset","configFromArray","expectedWeekday","yearToUse","currentDateArray","nowValue","_useUTC","dayOfYearFromWeekInfo","weekdayOverflow","curWeek","createLocal","_week","_dayOfYear","_nextDay","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","meridiemFixWrap","isPm","erasConvertYear","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromInput","configFromString","createFromInputFallback","configFromObject","createFromConfig","prototypeMin","prototypeMax","moments","Duration","isDurationValid","unitHasDecimal","orderLen","_milliseconds","_days","_bubble","isDuration","absRound","offsetFromString","chunkOffset","cloneWithOffset","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","momentsDifference","positiveMomentsDifference","inp","createAdder","addSubtract","isAdding","createInvalid$1","isMomentInput","isNumberOrStringArray","arrayTest","dataTypeTest","isMomentInputObject","objectTest","propertyTest","propertyLen","monthDiff","wholeMonthDiff","newLocaleData","defaultFormat","defaultFormatUtc","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","matchEraName","erasNameRegex","matchEraNarrow","erasNarrowRegex","erasParse","matchEraYearOrdinal","_eraYearOrdinalRegex","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","calendar$1","isCalendarSpec","sod","calendarFormat","zoneDelta","startOfDate","inputString","humanize","fromNow","toNow","stringGet","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","inputMs","isValid$2","parsingFlags","stringSet","prioritized","getPrioritizedUnits","unitsObj","prioritizedLen","keepOffset","isLocal","creationData","eraName","getEraName","eraNarrow","getEraNarrow","eraAbbr","getEraAbbr","eraYear","getEraYear","getIsLeapYear","getSetWeekYear","getSetISOWeekYear","getSetQuarter","getSetWeek","isoWeeks","getSetISOWeek","getWeeksInYear","weekInfo","weeksInWeekYear","getWeeksInWeekYear","isoWeeksInYear","getISOWeeksInYear","isoWeeksInISOWeekYear","getISOWeeksInISOWeekYear","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","parseIsoWeekday","getSetDayOfYear","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDST","isDaylightSavingTime","isUtcOffset","zoneAbbr","getZoneAbbr","zoneName","getZoneName","getSetZone","isDSTShifted","isDaylightSavingTimeShifted","_isDSTShifted","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","_relativeTime","pastFuture","localeEras","_eras","localeErasParse","localeErasConvertYear","localeMonths","localeMonthsShort","_monthsShort","localeMonthsParse","_monthsParseExact","localeWeek","firstDayOfYear","localeFirstDayOfYear","localeFirstDayOfWeek","localeWeekdays","localeWeekdaysMin","_weekdaysMin","localeWeekdaysShort","_weekdaysShort","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","localeIsPM","localeMeridiem","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","makeGetter","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","isValid$1","add$1","subtract$1","monthsFromDays","clone$1","get$2","argWithSuffix","argThresholds","withSuffix","relativeTime$1","posNegDuration","setHookCallback","createUnix","listMonths","listWeekdays","createInZone","listMonthsShort","listWeekdaysMin","updateLocale","tmpLocale","listLocales","listWeekdaysShort","relativeTimeRounding","getSetRelativeTimeRounding","roundingFunction","relativeTimeThreshold","getSetRelativeTimeThreshold","getCalendarFormat","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","docElemStyle","transitionProperty","transformProperty","transitionEndEvent","WebkitTransition","vendorProperties","transitionDelay","Item","_transn","ingProperties","clean","css","elemStyle","isOriginLeft","isOriginTop","layoutSize","layoutPosition","xResetProperty","getXValue","yResetProperty","getYValue","_transitionTo","curX","curY","didNotMove","isTransitioning","transitionStyle","getTranslate","onTransitionEnd","isCleaning","goTo","_nonTransition","_removeStyles","_transition","enableTransition","transitionProps","toDashedAll","staggerDelay","onwebkitTransitionEnd","ontransitionend","onotransitionend","dashedVendorProperties","isEmptyObj","disableTransition","removeTransitionStyles","cleanStyle","cleanTransitionStyle","stagger","removeElem","reveal","getHideRevealTransitionEndProperty","onRevealTransitionEnd","hiddenStyle","visibleStyle","styleProperty","optionStyle","onHideTransitionEnd","GUID","queryElement","$element","outlayerGUID","containerStyle","initLayout","originLeft","originTop","resizeContainer","SubClass","oldOption","layoutInstant","stamps","bindResize","_itemize","itemElems","_filterFindItemElements","itemSelector","getItemElements","_manageStamps","_isLayoutInited","isInstant","_getItemsForLayout","_layoutItems","_postLayout","isIgnored","_emitCompleteOnItems","isLayoutInstant","_processLayoutQueue","updateStagger","_positionItem","msUnits","_setContainerMeasure","isWidth","elemSize","doneCount","emitArgs","unignore","_find","unstamp","_getBoundingRect","thisRect","isResizeBound","unbindResize","onresize","appended","prepended","revealItemElements","hideItemElements","bridget","__webpack_modules__","__unused_webpack_module","OP","CL","CP","QU","GL","NS","EX","SY","IS","PR","PO","NU","AL","HL","IN","HY","BA","BB","ZW","CM","WJ","H2","H3","JL","JV","JT","RI","EB","EM","ZWJ","CB","BK","CJ","CR","LF","NL","SA","SG","SP","XX","DI_BRK","IN_BRK","CI_BRK","CP_BRK","PR_BRK","pairTable","EncodeStream","DecodeStream","LazyArray","Bitfield","Enum","Reserved","Struct","VersionedStruct","NumberT","Pointer","__unused_webpack_exports","_createForOfIteratorHelperLoose","allowArrayLike","_unsupportedIterableToArray","minLen","_arrayLikeToArray","ArrayT","lengthType","resolveLength","_startOffset","_currentOffset","pointerOffset","ptr","BooleanT","BufferT","readBuffer","buf","iconv","byte","readUInt24BE","readUInt24LE","readInt24BE","readInt24LE","TYPES","UInt8","UInt16","UInt24","UInt32","Int8","Int16","Int24","Int32","Float","_inheritsLoose","_stream$Readable","bufferOffset","ensure","writeString","writeUInt24BE","writeUInt24LE","writeInt24BE","writeInt24LE","_inspect","LazyArrayT","_ArrayT","_proto2","uint16be","uint16","uint16le","uint24be","uint24","uint24le","uint32be","uint32","uint32le","int8","int16be","int16","int16le","int24be","int24","int24le","int32be","int32","int32le","floatbe","float","floatle","doublebe","doublele","Fixed","_NumberT","fracBits","fixed16be","fixed16","fixed16le","fixed32be","fixed32","fixed32le","offsetType","allowNull","lazy","relativeToGetter","PropertyDescriptor","VoidPointer","pointerSize","StringT","_setup","_parseFields","includePointers","preEncode","_Struct","versionPath","pathArray","prevObj","getPath","_toPropertyKey","_toPrimitive","customInspectSymbol","K_MAX_LENGTH","createBuffer","encodingOrOffset","fromArrayView","arrayView","fromArrayBuffer","fromArrayLike","SharedArrayBuffer","fromObject","numberIsNaN","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","valLength","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","byteArray","base64Write","ucs2Write","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","typedArraySupport","thisStart","thisEnd","thisCopy","targetCopy","hexSliceLookupTable","checkInt","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","readUintLE","readUintBE","readUint8","readUint16LE","readUint16BE","readUint32LE","readUint32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","boundsError","readBigUInt64BE","readBigInt64LE","readBigInt64BE","writeUintLE","writeUintBE","writeUint8","writeUint16LE","writeUint16BE","writeUint32LE","writeUint32BE","writeBigUInt64LE","writeBigUInt64BE","writeBigInt64LE","writeBigInt64BE","targetStart","getMessage","_Base","NodeError","addNumericalSeparator","ERR_OUT_OF_RANGE","ERR_BUFFER_OUT_OF_BOUNDS","received","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","alphabet","BufferBigIntNotDefined","NATIVE_ARRAY_BUFFER","DESCRIPTORS","isCallable","classof","tryToString","createNonEnumerableProperty","redefine","wellKnownSymbol","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Int16Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","klass","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","KEY","TypedArrayConstructor","exportTypedArrayStaticMethod","uncurryThis","FunctionName","redefineAll","fails","anInstance","toIntegerOrInfinity","IEEE754","arrayFill","setToStringTag","InternalStateModule","PROPER_FUNCTION_NAME","CONFIGURABLE_FUNCTION_NAME","getInternalState","setInternalState","ARRAY_BUFFER","DATA_VIEW","WRONG_INDEX","NativeArrayBuffer","$ArrayBuffer","ArrayBufferPrototype","$DataView","DataViewPrototype","packIEEE754","pack","unpackIEEE754","unpack","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","isLittleEndian","intIndex","conversion","INCORRECT_ARRAY_BUFFER_NAME","testView","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","arrayBufferModule","setSpecies","BlockCipher","C_algo","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","x4","x8","RCON","_keyPriorReset","keyWords","ksRows","keySchedule","ksRow","invKeySchedule","invKsRow","_doCryptBlock","nRounds","s3","ORIG_P","ORIG_S","BLOWFISH_CTX","pbox","sbox","BlowFish_Encrypt","Xl","Xr","Blowfish","BlowFishInit","keysize","Row","Col","keyIndex","Data1","Data2","BlowFish_Decrypt","ivSize","C_lib","EvpKDF","C_mode","BlockCipherMode","Pkcs7","CipherParams","OpenSSLFormatter","SerializableCipher","OpenSSLKdf","PasswordBasedCipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","dataUpdate","selectCipherStrategy","StreamCipher","Encryptor","Decryptor","_iv","xorBlock","_prevBlock","processBlock","thisBlock","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","unpad","modeCreator","__creator","finalProcessedBlocks","cipherParams","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","kdf","hasher","compute","derivedParams","cryptoSecureRandomInt","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","latin1Chars","latin1Str","latin1StrLength","utf8Str","processedWords","dataWords","dataSigBytes","nBlocksReady","nWordsReady","nBytesReady","messageUpdate","base64Chars","triplet","paddingChar","base64Str","base64StrLength","reverseMap","_reverseMap","paddingIndex","parseLoop","bits1","bits2","Base64url","urlSafe","_safe_map","swapEndian","Utf16","Utf16BE","utf16Chars","utf16Str","utf16StrLength","Utf16LE","derivedKey","derivedKeyWords","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","_iKey","oKeyWords","iKeyWords","innerHash","superInit","subInit","typedArrayByteLength","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","generateKeystreamAndEncrypt","keystream","CTRGladman","incWord","b2","b3","incCounter","_keystream","AnsiX923","lastBytePos","Ansix923","Iso10126","Iso97971","ZeroPadding","NoPadding","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","C_","RabbitLegacy","_X","_C","IV","IV_0","IV_1","gx","ga","gb","Rabbit","RC4","keySigBytes","keyByteIndex","generateKeystreamWord","keystreamWord","RC4Drop","_zl","_zr","_sl","_sr","_hr","al","dr","hl","hr","zl","zr","sl","sr","f2","f3","f4","f5","rotl","HmacRIPEMD160","HmacSHA1","HmacSHA224","isPrime","sqrtN","getFractionalBits","nPrime","gamma0x","gamma1x","maj","X64Word","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","nBlockSizeLanes","M2i","M2i1","lane","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","C_x64","X64WordArray","X64Word_create","H0","H1","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","eh","fl","gh","gl","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0l","gamma1xh","gamma1xl","gamma1l","Wi7","Wi16","Wi16l","t1l","chh","chl","majh","sigma0l","Ki","Kil","t1h","t2l","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","key3","_des1","_des2","_des3","X32WordArray","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","_regeneratorRuntime","Generator","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","callInvokeWithMethodAndArg","maybeInvokeDelegate","pushTryEntry","resetTryEntry","StateMachine","dfa","accepting","_callee","startRun","lastAccepting","lastState","_step$value","zlib","imgData","readUInt32","colorType","filterMethod","interlaceMethod","grayscale","hasAlphaChannel","pixelBitlength","colorSpace","readFileSync","readUInt16","decodePixels","pixelBytes","singlePass","scanlineLength","upperLeft","pa","pb","pixelsPos","bufferPos","decodePalette","copyToImageData","imageData","_decodedPalette","safer","Safer","hint","prim","copyBuffer","BufferList","hasStrings","copyProps","SafeBuffer","swap32LE","UnicodeTrie","uncompressedLength","highStart","errorValue","DATA_BLOCK_LENGTH","INDEX_1_OFFSET","INDEX_2_BLOCK_LENGTH","isBigEndian","SVGtoPDF","nmd","NamedColors","DefaultColors","Entities","OElig","oelig","Scaron","scaron","Yuml","circ","tilde","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","permil","lsaquo","rsaquo","euro","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","ordf","laquo","shy","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","fnof","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","zeta","eta","iota","kappa","nu","omicron","rho","sigmaf","sigma","upsilon","chi","psi","omega","thetasym","upsih","piv","bull","hellip","Prime","oline","frasl","weierp","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","exist","nabla","isin","notin","ni","lowast","radic","infin","cup","there4","cong","asymp","equiv","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","rang","loz","spades","clubs","hearts","diams","PathArguments","PathFlags","a3","a4","Properties","nonzero","evenodd","miter","bevel","butt","bolder","lighter","oblique","ltr","auto","central","ideographic","alphabetic","hanging","mathematical","overline","preserve","nowrap","inline","docBeginGroup","_groupCount","xobj","Subtype","FormType","CS","Resources","savedMatrix","_ctm","savedPage","groupStack","xobjects","ext_gstates","docEndGroup","Font","XObject","ExtGState","docInsertGroup","addContent","docApplyMask","_maskCount","gstate","CA","BM","SMask","BC","docCreatePattern","docUsePattern","_patternCount","PatternType","PaintType","TilingType","XStep","YStep","multiplyMatrix","ProcSet","docBeginText","docSetTextMatrix","docSetTextMode","docFillColor","docStrokeColor","strokeColor","parseXml","SvgNode","StringParser","decodeEntities","warningCallback","parseColor","colorCallback","opacityToColor","isMask","newOpacity","getGlobalMatrix","ctm","getPageBBox","SvgShape","getBoundingBox","validateMatrix","m3","m4","m5","isNotEqual","solveEquation","getCurveValue","parseTranform","nums","parser2","temp2","matchNumber","matchSeparator","_a2","_a3","parseAspectRatio","availWidth","availHeight","elemWidth","elemHeight","initAlign","ratioType","Min","Mid","Max","parseStyleAttr","parseSelector","specificity","parseStyleSheet","_i3","combineArrays","getAscent","ascender","getDescent","descender","getTextPos","unicode","glyph","advanceWidth","xAdvance","yAdvance","createSVGElement","SvgElemUse","SvgElemSymbol","SvgElemGroup","SvgElemLink","SvgElemSvg","SVGElemImage","SvgElemRect","SvgElemCircle","SvgElemEllipse","SvgElemLine","SvgElemPolyline","SvgElemPolygon","SvgElemPath","SvgElemText","SvgElemTspan","SvgElemTextPath","SvgElemTextNode","SvgElem","matchSpace","matchLengthUnit","BezierSegment","p1x","p1y","c1x","c1y","c2x","c2y","p2x","p2y","divisions","equationX","equationY","derivativeX","derivativeY","lengthMap","rootsX","rootsY","_i5","getPointAtLength","l1","l2","_y2","_dx","_dy","LineSegment","pathCommands","pathSegments","lastCom","lastCtrlX","lastCtrlY","currX","addCommand","hasStart","hasEnd","th1","th2","segms","th3","th4","mergeShape","insertInDocument","getSubPaths","subPaths","getMarkers","subPath","subPathMarkers","startMarker","prevEndMarker","endMarker","styleCache","childrenCache","isOuterElement","useCSS","specificities","styleRules","allowedChildren","resolveUrl","svgObj","documentCallback","svgs","documentCache","_i7","_svgObj","computeUnits","isFontSize","em","cm","computeLength","temp1","computeLengthList","getLengthList","getNumberList","getViewbox","viewBox","chooseValue","keyInfo","fallbackColor","SvgElemGradient","SvgElemPattern","dasharray","getParentVWidth","getVWidth","getParentVHeight","getVHeight","getParentViewport","getBoundingShape","SvgElemStylable","getTransformation","SvgElemClipPath","useMask","SvgElemMask","isClip","getPaint","getStroke","SvgElemHasChildren","childShape","drawChildren","drawInDocument","SvgElemContainer","drawContent","clipped","masked","addLink","isText","docInsertLink","Border","URI","preserveAspectRatio","imageCallback","openImage","_attr","_getChildren","bBox","gOpacity","bBoxUnitsPattern","bBoxUnitsContent","aspectRatioMatrix","stopColor","grad","bBoxUnits","nAfter","nBefore","nTotal","inv","corner1","corner2","corner3","corner4","linearGradient","radialGradient","inOrder","_child","_stopColor","_colorSpace","SvgElemBasicShape","dashScale","_y4","dashArray","_j2","miterLimit","_j3","fillAndStroke","markerStart","markerMid","markerEnd","markersPos","SvgElemMarker","drawMarker","pathLength","posArray","orient","refX","refY","SvgElemTextContainer","_pos","descent","dx2","dy2","drawTextInDocument","fauxBold","childElem","skew","fauxItalic","linePosition","_pathLength","pathObject","pathScale","pathElem","textParentElem","currentAnchor","currentDirection","processedText","remainingText","textPaths","currentChunk","currentX","currentY","doAnchoring","anchordx","startltr","middleltr","endltr","startrtl","middlertl","endrtl","textOnPath","currentElem","textOffset","charMidX","pointOnPath","_j5","parentElem","_rot","_defRot","fontOptions","fontNameorLink","fontCallback","spacingAndGlyphs","wordSpacing","letterSpacing","textDirection","getBaseline","getXHeight","xHeight","rawText","renderedText","xAttr","yAttr","dxAttr","dyAttr","rotAttr","adjustLength","textScale","spaceDiff","_j4","pxToPt","assumePt","_registeredFonts","savedFillColor","_fillColor","_i8","annotations","__dirname","_interopRequireDefault","_zlib","_cryptoJs","_fontkit","_linebreak","_pngJs","_objectSpread2","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_createForOfIteratorHelper","_e2","normalCompletion","didErr","_e3","PDFAbstractReference","PDFTree","limits","_compareKeys","PDFObject","_dataForKey","_keysName","escapableRe","encryptFn","isUnicode","stringBuffer","buff","swapBytes","_string","PDFReference","_PDFAbstractReference","Length","_security","getEncryptFn","deflateSync","_refEnd","DEFAULT_MARGINS","SIZES","PDFPage","Pages","MediaBox","Contents","markings","ColorSpace","Annots","StructParents","createStructParentTreeNextKey","PDFNameTree","_PDFTree","rangeGroup","startRange","endRange","middleRange","arrayIndex","unassigned_code_points","isUnassignedCodePoint","character","commonly_mapped_to_nothing","non_ASCII_space_characters","non_ASCII_controls_characters","non_character_codepoints","prohibited_characters","isProhibitedCharacter","bidirectional_r_al","isBidirectionalRAL","bidirectional_l","isBidirectionalL","mapping2space","mapping2nothing","getCodePoint","codePointAt","toCodePoints","codepoints","PDFSecurity","ownerPassword","userPassword","_setupEncryption","infoStr","CreationDate","wordArrayToBuffer","pdfVersion","encDict","_setupEncryptionV1V2V4","_setupEncryptionV5","permissions","getPermissionsR2","permissionObject","printing","modifying","copying","annotating","getPermissionsR3","userPasswordEntry","paddedUserPassword","processPasswordR2R3R4","paddedOwnerPassword","ownerPasswordEntry","getOwnerPasswordR2R3R4","xorRound","encryptionKey","getEncryptionKeyR2R3R4","documentId","lsbFirstWord","getUserPasswordR2","getUserPasswordR3R4","CF","StdCF","AuthEvent","CFM","StmF","StrF","processedUserPassword","processPasswordR5","processedOwnerPassword","getEncryptionKeyR5","generateRandomWordArray","getUserPasswordR5","validationSalt","keySalt","userEncryptionKeyEntry","getUserEncryptionKeyR5","userKeySalt","getOwnerPasswordR5","ownerEncryptionKeyEntry","getOwnerEncryptionKeyR5","ownerKeySalt","permsEntry","getEncryptedPermissionsR5","OE","UE","Perms","fillingForms","contentAccessibility","documentAssembly","PASSWORD_PADDING","saslprep","mapped_input","normalized_input","normalized_map","allowUnassigned","hasBidiRAL","hasBidiL","isFirstBidiRAL","isLastBidiRAL","PDFGradient","embedded","_normalizeColor","m11","m12","m21","m22","stopsLength","FunctionType","Domain","Functions","Bounds","Encode","_gradCount","shader","Shading","opacityGradient","pageBBox","Sh1","opacityPattern","Gs1","_this$doc$_ctm","_this$transform","_setColorSpace","PDFLinearGradient","_PDFGradient","ShadingType","Coords","Extend","PDFRadialGradient","_PDFGradient2","_super2","underlyingColorSpaces","PDFGradient$1","PDFLinearGradient$1","PDFRadialGradient$1","PDFTilingPattern$1","PDFTilingPattern","xStep","yStep","csName","csId","getPatternColorSpaceId","colorSpaces","underlyingColorspace","embedPatternColorSpaces","normalizedColor","_getColorSpace","ColorMixin","initColor","_opacityRegistry","_opacityCount","_setColor","_setColorCore","_opacity","_doOpacity","_this$_opacityRegistr","runners","solveArc","_coords","arcToSegments","bez","segmentToBezier","sweep","rotateX","sin_th","cos_th","sfactor_sq","sfactor","xc","yc","th0","th_arc","th_half","SVGPath","cmd","curArg","foundDecimal","number$1","KAPPA","VectorMixin","initVector","_ctmStack","_CAP_STYLES","BUTT","ROUND","SQUARE","_JOIN_STYLES","MITER","BEVEL","originalLength","undash","cp1x","cp1y","cp2x","cp2y","roundedRect","xm","ym","TWO_PI","HALF_PI","deltaAng","numSegs","segAng","handleLen","curAng","deltaCx","deltaCy","segIdx","polygon","_windingRule","isFillRule","_options$origin","xFactor","yFactor","_options$origin2","WIN_ANSI_MAP","AFMFont","glyphWidths","boundingBoxes","kernPairs","charWidths","FontBBox","Ascender","Descender","XHeight","capHeight","CapHeight","lineGap","glyphs","characterToGlyph","advances","widthOfGlyph","getKernPair","PDFFont","includeGap","STANDARD_FONTS","Courier","Helvetica","ZapfDingbats","StandardFont","_PDFFont","_this$font","BaseFont","Encoding","encodeText","glyphsForString","advancesForGlyphs","EmbeddedFont","subset","createSubset","widths","getGlyph","postscriptName","unitsPerEm","fontLayoutCache","layoutCache","layoutRun","onlyWidth","layoutCached","_this$layout","gid","includeGlyph","isCFF","cff","fontFile","encodeStream","familyClass","sFamilyClass","isFixedPitch","macStyle","Flags","ItalicAngle","italicAngle","Ascent","Descent","StemV","FontFile3","FontFile2","CIDSet","CIDSetRef","descendantFontData","CIDSystemInfo","Ordering","Supplement","FontDescriptor","CIDToGIDMap","descendantFont","DescendantFonts","ToUnicode","toUnicodeCmap","cmap","PDFFontFactory","isStandardFont","FontsMixin","initFonts","defaultFont","_fontFamilies","_fontCount","_fontSize","_this$_registeredFont","LineWrapper","_EventEmitter","characterSpacing","columnGap","spaceLeft","continuedX","continued","paragraphGap","widthOfString","bk","wordWidths","nextBreak","shouldContinue","wordWidth","lbk","fbk","mightGrow","mustShrink","nextSection","wc","emitLine","wordCount","eachWord","_this$document","continueOnNewPage","number$2","TextMixin","initText","_lineGap","moveDown","moveUp","lineCallback","_initOptions","addStructure","structParent","struct","structType","markStructureContent","_wrapper","_textOptions","_text2","heightOfString","midLine","bulletRadius","textIndent","itemIndent","bulletIndent","itemType","labelType","bodyType","structTypes","_options$structTypes","_fragment","lineBreak","spaceWidth","renderedWidth","addNamedDestination","_lineWidth","_this$_font$encode2","positionsWord","_this$_font$encode4","hadOffset","addSegment","MARKERS","COLOR_SPACE_MAP","JPEG","BitsPerComponent","Height","Decode","PNGImage","dataDecoded","isInterlaced","Predictor","Colors","Columns","DecodeParms","Mask","loadIndexedAlphaChannel","splitAlphaChannel","decodeData","alphaChannel","sMask","colorCount","skipByteCount","PDFImage","ImagesMixin","initImages","_imageRegistry","_imageCount","left1","hp","_options$fit","cover","_options$cover","AnnotationsMixin","annotate","_convertRect","Dest","Kids","_markup","_this$_convertRect2","QuadPoints","lineAnnotation","rectAnnotation","ellipseAnnotation","textAnnotation","DA","fileAnnotation","filespec","FS","Desc","_this$_ctm","PDFOutline","outlineData","Count","First","Last","Prev","Next","endOutline","OutlineMixin","initOutline","Outlines","PageMode","PDFStructureContent","pageRef","mcid","structContent","PDFStructureElement","_attached","_ended","_flushed","_isValidChild","Lang","Alt","ActualText","setAttached","_addContentToParentTree","_contentForClosure","getStructParentTree","parentRef","closure","endMarkedContent","_isFlushable","_flushChild","Pg","MCID","PDFNumberTree","MarkingsMixin","initMarkings","structChildren","tagged","getMarkInfoDictionary","Marked","getStructTreeRoot","markContent","toClose","marking","attached","Attached","pageStructParents","structParentTreeKey","structElem","structTreeRoot","initPageMarkings","pageMarkings","newStructContent","endPageMarkings","MarkInfo","StructTreeRoot","ParentTree","ParentTreeNextKey","endMarkings","FIELD_FLAGS","noExport","multiline","toggleToOffButton","radioButton","pushButton","combo","edit","multiSelect","noSpell","FIELD_JUSTIFY","VALUE_MAP","FORMAT_SPECIAL","zipPlus4","zip4","ssn","FORMAT_DEFAULT","nDec","sepComma","negStyle","currencyPrepend","AcroFormMixin","initForm","_acroform","Fields","NeedAppearances","DR","AcroForm","endAcroForm","fontDict","fieldRef","_endChild","childRef","formField","fieldDict","_fieldDict","_addToParent","formAnnotation","formText","formPushButton","formCombo","formList","formRadioButton","formCheckbox","_resolveType","_resolveFlags","_resolveJustify","_resolveFont","_resolveStrings","_resolveColors","_resolveFormat","FT","fnKeystroke","fnFormat","AA","JS","MK","BG","Ff","appendChoices","Opt","AttachmentsMixin","refBody","_fs$statSync","statSync","ctime","birthtime","ModDate","creationDate","modifiedDate","checksum","CheckSum","_fileRegistry","fileSpecBody","EF","UF","addNamedEmbeddedFile","PDFA","initPDFA","pSubset","subset_conformance","endSubset","_addPdfaMetadata","jsPath","jestPath","_addColorOutputIntent","existsSync","pICCPath","iccProfile","colorProfileRef","intentRef","Info","OutputConditionIdentifier","DestOutputProfile","OutputIntents","_getPdfaid","appendXML","SubsetMixin","_importSubset","initSubset","PDFMetadata","_metadata","newline","_closeTags","MetadataMixin","initMetadata","_addInfo","Creator","Keywords","endMetadata","metadataRef","getXML","Metadata","PDFDocument","_pageBuffer","_pageBufferStart","_waiting","Dests","Producer","displayTitle","ViewerPreferences","DisplayDocTitle","generateFileID","autoFirstPage","addPage","bufferPages","flushPages","EmbeddedFiles","js","JavaScript","_info","xRefOffset","trailer","Encrypt","___EXPOSE_LOADER_IMPORT___","___EXPOSE_LOADER_GET_GLOBAL_THIS___","isDeepEqual","isDeepStrictEqual","_require$codes","ERR_AMBIGUOUS_ARGUMENT","ERR_INVALID_ARG_VALUE","ERR_INVALID_RETURN_VALUE","AssertionError","_require$types","isPromise","objectAssign","objectIs","RegExpPrototypeTest","lazyLoadComparison","NO_EXCEPTION_SENTINEL","innerFail","innerOk","generatedMessage","stackStartFn","argsLen","emitWarning","errArgs","deepEqual","notDeepEqual","deepStrictEqual","notDeepStrictEqual","strictEqual","notStrictEqual","Comparison","expectedException","compareExceptionKey","getActual","checkIsPromise","waitForActual","promiseFn","resultPromise","expectsError","expectsNoError","internalMatch","fnName","_len6","_key6","throws","_len2","_key2","rejects","_len3","_key3","doesNotThrow","_len4","_key4","doesNotReject","_len5","_key5","ifError","newErr","origStack","tmp2","tmp1","doesNotMatch","this_len","kReadableOperator","strictEqualObject","notStrictEqualObject","notIdentical","copyError","inspectValue","maxArrayLength","breakLength","showProxy","createErrDiff","lastPos","actualInspected","actualLines","expectedLines","indicator","inputLength","isTTY","maxLines","_actualLines","printedLines","skippedMsg","expectedLine","actualLine","divergingLines","_inspect$custom","stackTraceLimit","getColorDepth","_res","knownOperators","recurseTimes","createErrorType","arg1","arg2","arg3","oneOf","thing","determiner","inspected","regexFlagsSupported","arrayFromSet","arrayFromMap","objectGetOwnPropertySymbols","isAnyArrayBuffer","isArrayBufferView","isNativeError","isBoxedPrimitive","isNumberObject","isBooleanObject","isBigIntObject","isSymbolObject","isFloat32Array","isFloat64Array","isNonIndex","getOwnNonIndexProperties","kNoIterator","kIsArray","kIsSet","kIsMap","innerDeepEqual","memos","val1Tag","keys1","keys2","keyCheck","areSimilarRegExps","areSimilarTypedArrays","areSimilarFloatArrays","_keys2","areEqualArrayBuffers","buf1","buf2","isEqualBoxedPrimitive","getEnumerables","iterationType","aKeys","bKeys","symbolKeysA","symbolKeysB","_symbolKeysB","val2MemoA","val2MemoB","areEq","objEquiv","setEquiv","memo","aValues","setMightHaveLoosePrim","bValues","_val","setHasEqualElement","mapEquiv","aEntries","_aEntries$i","mapMightHaveLoosePrim","bEntries","_bEntries$_i","mapHasEqualEntry","keysA","setValues","findLooseMatchingPrimitives","altValue","curB","getLens","placeHoldersLen","validLen","Arr","_byteLength","curByte","revLookup","extraBytes","maxChunkLength","len2","encodeChunk","tripletToBase64","BROTLI_READ_SIZE","kBitMask","BrotliBitReader","buf_","input_","READ_SIZE","IBUF_MASK","buf_ptr_","val_","pos_","bit_pos_","bit_end_pos_","eos_","readMoreInput","bytes_read","fillBitWindow","readBits","n_bits","lookupOffsets","BrotliInput","BrotliOutput","BrotliDictionary","HuffmanCode","BrotliBuildHuffmanTable","Prefix","kDefaultCodeLength","kCodeLengthRepeatCode","kNumLiteralCodes","kNumInsertAndCopyCodes","kNumBlockLengthCodes","kLiteralContextBits","kDistanceContextBits","HUFFMAN_TABLE_BITS","HUFFMAN_TABLE_MASK","HUFFMAN_MAX_TABLE_SIZE","CODE_LENGTH_CODES","kCodeLengthCodeOrder","NUM_DISTANCE_SHORT_CODES","kDistanceShortCodeIndexOffset","kDistanceShortCodeValueOffset","kMaxHuffmanTableSize","DecodeWindowBits","DecodeVarLenUint8","MetaBlockLength","meta_block_length","input_end","is_uncompressed","is_metadata","DecodeMetaBlockLength","size_nibbles","size_bytes","next_byte","next_nibble","ReadSymbol","ReadHuffmanCode","alphabet_size","simple_code_or_skip","table_size","code_lengths","max_bits_counter","max_bits","num_symbols","code_length_code_lengths","num_codes","huff","code_len_idx","ReadHuffmanCodeLengths","prev_code_len","repeat_code_len","code_len","old_repeat","repeat_delta","new_len","ReadBlockLength","kBlockLengthPrefixCode","TranslateShortCodes","ringbuffer","MoveToFront","HuffmanTreeGroup","num_htrees","htrees","DecodeContextMap","context_map_size","context_map","max_run_length_prefix","reps","InverseMoveToFrontTransform","v_len","mtf","DecodeBlockType","max_block_type","trees","tree_type","block_types","ringbuffers","block_type","type_code","CopyUncompressedBlockToOutput","ringbuffer_mask","nbytes","rb_size","rb_pos","br_pos","JumpToByteBoundary","BrotliDecompressBuffer","output_size","BrotliDecompressedSize","output_buffer","BrotliDecompress","max_backward_distance","ringbuffer_size","ringbuffer_end","block_type_trees","block_len_trees","window_bits","max_distance","dist_rb","dist_rb_idx","prev_byte1","prev_byte2","hgroup","kRingBufferWriteAheadSlack","maxDictionaryWordLength","distance_postfix_bits","num_direct_distance_codes","distance_postfix_mask","num_distance_codes","num_literal_htrees","num_dist_htrees","context_mode","htree_command","meta_block_remaining_len","block_length","num_block_types","block_type_rb","block_type_rb_index","context_modes","dist_context_map","context_map_slice","literal_htree_index","dist_context_map_slice","context_lookup_offset1","context_lookup_offset2","_out","_o1","_o2","cmd_code","range_idx","insert_code","copy_code","insert_length","copy_length","distance_code","copy_dst","postfix","kCopyRangeLut","kInsertLengthPrefixCode","kInsertRangeLut","kCopyLengthPrefixCode","minDictionaryWordLength","offsetsByLength","word_id","sizeBitsByLength","transform_idx","kNumTransforms","transformDictionaryWord","GetNextKey","ReplicateValue","NextTableBitSize","root_bits","root_table","code_lengths_size","table_bits","total_size","start_table","PrefixCodeRange","kUppercaseFirst","kUppercaseAll","kTransforms","ToUpperCase","uppercase","start_idx","prefix_pos","suffix_pos","Zstream","zlib_deflate","zlib_inflate","INFLATE","GZIP","GUNZIP","DEFLATERAW","INFLATERAW","UNZIP","Zlib","init_done","write_in_progress","pending_close","gzip_id_bytes_read","in_off","in_len","out_off","out_len","writeSync","_checkError","_afterSync","_after","next_expected_header_byte","_setDictionary","kRangeErrorMessage","Z_MIN_WINDOWBITS","Z_MAX_WINDOWBITS","Z_DEFAULT_WINDOWBITS","Z_MIN_CHUNK","Z_MAX_CHUNK","Z_DEFAULT_CHUNK","Z_MIN_MEMLEVEL","Z_MAX_MEMLEVEL","Z_DEFAULT_MEMLEVEL","Z_MIN_LEVEL","Z_MAX_LEVEL","Z_DEFAULT_LEVEL","bkeys","bkey","Z_MEM_ERROR","Z_VERSION_ERROR","ckeys","ck","ckey","zlibBuffer","nread","zlibBufferSync","_processChunk","_finishFlushFlag","Gzip","Gunzip","DeflateRaw","InflateRaw","Unzip","isValidFlushFlag","_chunkSize","finishFlush","_flushFlag","_handle","_hadError","errno","_strategy","emitCloseNT","createDeflate","createInflate","createDeflateRaw","createInflateRaw","createGzip","createGunzip","createUnzip","gzipSync","deflateRawSync","unzipSync","inflateSync","gunzip","gunzipSync","inflateRawSync","flushFlag","availInBefore","availOutBefore","inOff","availInAfter","availOutAfter","newReq","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","setFunctionLength","$TypeError","$apply","$call","$reflectApply","$defineProperty","$max","originalFunction","applyBind","circular","useBuffer","_clone","__isArray","__isRegExp","__getRegExpFlags","__isDate","__objToStr","ignoreCase","clonePrototype","isConstructor","definePropertyModule","UNSCOPABLES","ArrayPrototype","toAbsoluteIndex","lengthOfArrayLike","argumentsLength","$forEach","STRICT_METHOD","arrayMethodIsStrict","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","IS_CONSTRUCTOR","mapfn","iteratorMethod","toIndexedObject","IS_INCLUDES","$this","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","specificCreate","boundFunction","$lastIndexOf","NEGATIVE_ZERO","searchElement","V8_VERSION","SPECIES","METHOD_NAME","aCallable","IS_RIGHT","mergeSort","comparefn","insertionSort","llength","rlength","lindex","rindex","originalArray","arraySpeciesConstructor","anObject","iteratorClose","ENTRIES","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","IS_FIREFOX_OR_SAFARI_STACK","dropEntries","defineIterator","fastKey","internalStateGetterFor","getConstructor","CONSTRUCTOR_NAME","ADDER","getEntry","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","isForced","InternalMetadataModule","checkCorrectnessOfIteration","inheritIfRequired","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","uncurriedNativeMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","getOwnPropertyDescriptorModule","MATCH","requireObjectCoercible","createPropertyDescriptor","Iterators","returnThis","IteratorConstructor","bitmap","toPropertyKey","ordinaryToPrimitive","IS_PURE","createIteratorConstructor","IteratorsCore","KEYS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","wrappedWellKnownSymbolModule","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","documentCreateElement","DOMTokenListPrototype","firefox","getBuiltIn","webkit","setGlobal","copyConstructorProperties","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","noTargetGet","regexpExec","RegExpPrototype","SHAM","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","uncurriedNativeRegExpMethod","nativeMethod","forceStringMethod","$exec","isExtensible","preventExtensions","FunctionPrototype","partArgs","getDescriptor","aFunction","getMethod","usingIterator","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","namedCaptures","tailPos","mantissaLength","mantissa","exponentLength","eMax","eBias","rt","nBits","NewTargetPrototype","functionToString","cause","hiddenKeys","getOwnPropertyNamesModule","getOwnPropertyNamesExternalModule","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","getWeakData","onFreeze","NATIVE_WEAK_MAP","shared","sharedKey","OBJECT_ALREADY_INITIALIZED","wmget","wmhas","wmset","STATE","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","detection","USE_SYMBOL_AS_UID","$Symbol","Result","ResultPrototype","unboundFunction","iterFn","callFn","innerResult","innerError","PrototypeOfArrayIteratorPrototype","arrayIterator","macrotask","IS_IOS","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","IS_NODE","queueMicrotaskDescriptor","PromiseCapability","$$resolve","$$reject","$default","globalIsFinite","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","$assign","activeXDocument","enumBugKeys","SCRIPT","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","NullProtoObject","iframeDocument","NullProtoObjectViaIFrame","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","$getOwnPropertyNames","windowNames","getWindowNames","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","$propertyIsEnumerable","NASHORN_BUG","aPossiblePrototype","CORRECT_SETTER","TO_ENTRIES","pref","newPromiseCapability","promiseCapability","enforceInternalState","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","charsAdded","strCopy","dotAll","$RegExp","TAG","SHARED","aConstructor","defaultConstructor","CONVERT_TO_STRING","codeAt","whitespaces","ONREADYSTATECHANGE","runner","integer","toPositiveInteger","BYTES","TO_PRIMITIVE","exoticToPrim","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","isIntegralNumber","toOffset","typedArrayFrom","nativeDefineProperty","nativeGetOwnPropertyDescriptor","BYTES_PER_ELEMENT","WRONG_LENGTH","fromList","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","typedArrayOffset","$length","$len","arrayFromConstructorAndList","typedArraySpeciesConstructor","speciesConstructor","NATIVE_SYMBOL","WellKnownSymbolsStore","createWellKnownSymbol","clearErrorStack","installErrorCause","normalizeStringArgument","ERROR_STACK_INSTALLABLE","$AggregateError","AggregateErrorPrototype","errorsArray","AggregateError","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","spreadable","addToUnscopables","$filter","$includes","ARRAY_ITERATOR","un$Join","ES3_STRINGS","$map","un$Slice","HAS_SPECIES_SUPPORT","fin","internalSort","IE_OR_EDGE","V8","WEBKIT","un$Sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STABLE_SORT","itemsLength","arrayLength","getSortCompare","insertCount","actualDeleteCount","actualStart","dateToPrimitive","DatePrototype","FUNCTION_NAME_EXISTS","nameRE","regExpExec","thisNumberValue","NativeNumber","NumberPrototype","maxCode","NumberWrapper","primValue","toNumeric","$repeat","un$ToFixed","dataToString","fractDigits","$freeze","FAILS_ON_PRIMITIVES","nativeGetPrototypeOf","$values","newPromiseCapabilityModule","capability","promiseResolve","alreadyCalled","PROMISE_ANY_ERROR","alreadyResolved","alreadyRejected","NativePromise","OwnPromiseCapability","PromiseWrapper","nativeThen","microtask","hostReportErrors","IS_BROWSER","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","NATIVE_REJECTION_EVENT","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","isThenable","isReject","exited","reaction","onHandleUnhandled","onUnhandled","isUnhandled","internalReject","internalResolve","$promiseResolve","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","$args","objectDefinePropertyModule","regExpFlags","$toString","n$ToString","getFlags","$fromCodePoint","notARegExp","correctIsRegExpLogic","stringIndexOf","createHTML","forcedStringHTMLMethod","STRING_ITERATOR","advanceStringIndex","MATCH_ALL","REGEXP_STRING","REGEXP_STRING_ITERATOR","un$MatchAll","WORKS_WITH_NON_GLOBAL_REGEX","$RegExpStringIterator","$global","fullUnicode","$matchAll","flagsValue","fixRegExpWellKnownSymbolLogic","nativeMatch","maybeCallNative","matchStr","getSubstitution","REPLACE","maybeToString","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","UNSAFE_SUBSTITUTE","replaceValue","replacer","functionalReplace","accumulatedResult","nextSourcePosition","replacerArgs","callRegExpExec","MAX_UINT32","$push","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SPLIT","nativeSplit","internalSplit","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","$trim","forcedStringTrimMethod","defineWellKnownSymbol","NativeSymbol","SymbolPrototype","EmptyStringDescriptionStore","SymbolWrapper","nativeObjectCreate","getOwnPropertyNamesExternal","HIDDEN","$stringify","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","USE_SETTER","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","$replacer","u$ArrayCopyWithin","$every","$fill","fromSpeciesAndList","$findIndex","$find","createTypedArrayConstructor","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","PROPER_ARRAY_VALUES_NAME","typedArrayValues","$join","$reduceRight","$reduce","$some","ACCEPT_INCORRECT_ARGUMENTS","beginIndex","$toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","try","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","ArrayIteratorMethods","ArrayValues","isRegex","isUndefinedOrNull","aIsRegex","bIsRegex","aIsBuffer","bIsBuffer","ka","kb","$SyntaxError","gopd","nonEnumerable","loose","hasSymbols","toStr","defineDataProperty","supportsDescriptors","EvalError","URIError","ReflectOwnKeys","ReflectApply","receiver","NumberIsNaN","errorListener","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","checkListener","_getMaxListeners","_addListener","ProcessEmitWarning","onceWrapper","_onceWrap","evlistener","unwrapListeners","arrayClone","wrapListener","doError","originalListener","spliceOne","forEachArray","forEachString","forEachObject","concatty","arrLike","slicy","boundLength","boundArgs","joiner","joiny","Empty","functionsHaveNames","gOPD","functionsHaveConfigurableNames","$bind","boundFunctionsHaveNames","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","ThrowTypeError","hasProto","getProto","needsEval","INTRINSICS","Atomics","FinalizationRegistry","WeakRef","errorProto","doEval","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","getBaseIntrinsic","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","hasPropertyDescriptors","hasArrayLengthDefineBug","$Object","origSymbol","hasSymbolSham","symObj","syms","$hasOwn","_dbcs","DBCSCodec","UNASSIGNED","GB18030_CODE","SEQ_START","NODE_START","UNASSIGNED_NODE","codecOptions","encodingName","mappingTable","decodeTables","decodeTableSeq","_addDecodeChunk","gb18030","commonThirdByteNodeIdx","commonFourthByteNodeIdx","firstByteNode","secondByteNode","thirdByteNode","fourthByteNode","defaultCharUnicode","encodeTable","encodeTableSeq","skipEncodeChars","encodeSkipVals","_fillEncodeTable","encodeAdd","uChar","_setEncodeChar","defCharSB","defaultCharSingleByte","DBCSEncoder","seqObj","DBCSDecoder","nodeIdx","prevBytes","findIdx","_getDecodeTrieNode","addr","curAddr","writeTable","codeTrail","_getEncodeBucket","uCode","dbcsCode","bucket","_setEncodeSequence","oldVal","subNodeEmpty","mbCode","subNodeIdx","resCode","subtable","uChars","gbChars","prevOffset","seqStart","uCodeLead","bytesArr","shiftjis","csshiftjis","mskanji","sjis","windows31j","ms31j","xsjis","windows932","ms932","cp932","eucjp","gb2312","gb231280","gb23121980","csgb2312","csiso58gb231280","euccn","windows936","ms936","cp936","gbk","xgbk","isoir58","chinese","windows949","ms949","cp949","cseuckr","csksc56011987","euckr","isoir149","korean","ksc56011987","ksc56011989","ksc5601","windows950","ms950","cp950","big5","big5hkscs","cnbig5","csbig5","xxbig5","InternalCodec","bomAware","InternalEncoderBase64","InternalEncoderCesu8","InternalDecoderCesu8","cesu8","unicode11utf8","ucs2","utf16le","_internal","InternalEncoder","InternalDecoder","prevStr","contBytes","accBytes","completeQuads","bufIdx","SBCSCodec","asciiString","decodeBuf","encodeBuf","SBCSEncoder","SBCSDecoder","_sbcs","idx1","windows874","win874","cp874","windows1250","win1250","cp1250","windows1251","win1251","cp1251","windows1252","win1252","cp1252","windows1253","win1253","cp1253","windows1254","win1254","cp1254","windows1255","win1255","cp1255","windows1256","win1256","cp1256","windows1257","win1257","cp1257","windows1258","win1258","cp1258","iso88591","cp28591","iso88592","cp28592","iso88593","cp28593","iso88594","cp28594","iso88595","cp28595","iso88596","cp28596","iso88597","cp28597","iso88598","cp28598","iso88599","cp28599","iso885910","cp28600","iso885911","cp28601","iso885913","cp28603","iso885914","cp28604","iso885915","cp28605","iso885916","cp28606","cp437","ibm437","csibm437","cp737","ibm737","csibm737","cp775","ibm775","csibm775","cp850","ibm850","csibm850","cp852","ibm852","csibm852","cp855","ibm855","csibm855","cp856","ibm856","csibm856","cp857","ibm857","csibm857","cp858","ibm858","csibm858","cp860","ibm860","csibm860","cp861","ibm861","csibm861","cp862","ibm862","csibm862","cp863","ibm863","csibm863","cp864","ibm864","csibm864","cp865","ibm865","csibm865","cp866","ibm866","csibm866","cp869","ibm869","csibm869","cp922","ibm922","csibm922","cp1046","ibm1046","csibm1046","cp1124","ibm1124","csibm1124","cp1125","ibm1125","csibm1125","cp1129","ibm1129","csibm1129","cp1133","ibm1133","csibm1133","cp1161","ibm1161","csibm1161","cp1162","ibm1162","csibm1162","cp1163","ibm1163","csibm1163","maccroatian","maccyrillic","macgreek","maciceland","macroman","macromania","macthai","macturkish","macukraine","koi8r","koi8u","koi8ru","koi8t","armscii8","rk1048","tcvn","georgianacademy","georgianps","pt154","viscii","iso646cn","iso646jp","hproman8","macintosh","ascii","tis620","maccenteuro","ibm808","cp808","mik","cp720","ascii8bit","usascii","ansix34","ansix341968","ansix341986","csascii","cp367","ibm367","isoir6","iso646us","iso646irv","latin1","latin2","latin3","latin4","latin5","latin6","latin7","latin8","latin9","latin10","csisolatin1","csisolatin2","csisolatin3","csisolatin4","csisolatincyrillic","csisolatinarabic","csisolatingreek","csisolatinhebrew","csisolatin5","csisolatin6","l3","l4","l5","l6","l7","l8","l9","l10","isoir14","isoir57","isoir100","isoir101","isoir109","isoir110","isoir144","isoir127","isoir126","isoir138","isoir148","isoir157","isoir166","isoir179","isoir199","isoir203","isoir226","cp819","ibm819","cyrillic","arabic","arabic8","ecma114","asmo708","greek","greek8","ecma118","elot928","hebrew","hebrew8","turkish","turkish8","thai","thai8","celtic","celtic8","isoceltic","tis6200","tis62025291","tis62025330","cspc8codepage437","cspc775baltic","cspc850multilingual","cspcp852","cspc862latinhebrew","cpgr","msee","mscyrl","msansi","msgreek","msturk","mshebr","msarab","winbaltrim","cp20866","ibm878","cskoi8r","cp21866","ibm1168","strk10482002","tcvn5712","tcvn57121","gb198880","csiso14jisc6220ro","jisc62201969ro","jp","cshproman8","r8","roman8","xroman8","ibm1051","csmacintosh","Utf16BECodec","Utf16BEEncoder","Utf16BEDecoder","overflowByte","Utf16Codec","Utf16Encoder","getEncoder","Utf16Decoder","initialBufs","initialBufsLen","detectEncoding","bufs","charsProcessed","asciiCharsLE","asciiCharsBE","outer_loop","utf16be","utf16","getDecoder","resStr","trail","Utf32Codec","isLE","Utf32Encoder","highSurrogate","Utf32Decoder","badChar","_writeCodepoint","codepoint","Utf32AutoCodec","Utf32AutoEncoder","Utf32AutoDecoder","invalidLE","invalidBE","bmpCharsLE","bmpCharsBE","_utf32","utf32le","utf32be","ucs4le","ucs4be","write32","isHighSurrogate","utf32","ucs4","Utf7Codec","utf7","unicode11utf7","Utf7Encoder","Utf7Decoder","nonDirectChars","inBase64","base64Accum","base64Regex","plusChar","minusChar","andChar","Utf7IMAPCodec","Utf7IMAPEncoder","base64AccumIdx","Utf7IMAPDecoder","lastI","b64str","canBeDecoded","utf7imap","base64IMAPChars","PrependBOMWrapper","StripBOMWrapper","PrependBOM","StripBOM","stripBOM","stream_module","bomHandling","encodings","skipDecodeWarning","encodingExists","getCodec","toEncoding","fromEncoding","_codecDataCache","_canonicalizeEncoding","codecDef","enableStreamingAPI","supportsStreams","IconvLiteEncoderStream","IconvLiteDecoderStream","decodeStream","conv","collect","mLen","eLen","superCtor","TempCtor","hasToStringTag","callBound","isStandardArguments","isLegacyArguments","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","strClass","tryDateObject","isFnRegex","generatorFunc","getGeneratorFunc","getPolyfill","shim","isRegexMarker","badStringifier","throwRegexMarker","whichTypedArray","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","$propIsEnumerable","originalGetSymbols","source1","nextKey","letters","lacksProperEnumerationOrder","thrower","assignHasPendingExceptions","TYPED_OK","fnTyped","src_offs","dest_offs","fnUntyped","adler32","makeTable","configuration_table","MAX_MEM_LEVEL","L_CODES","LITERALS","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","INIT_STATE","BUSY_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","flush_pending","flush_block_only","put_byte","putShortMSB","read_buf","longest_match","cur_match","chain_length","best_len","_win","wmask","strend","scan_end1","scan_end","fill_window","more","_w_size","deflate_fast","hash_head","bflush","deflate_slow","max_insert","DeflateState","lm_init","deflate_stored","max_block_size","max_start","old_flush","beg","bstate","deflate_huff","deflate_rle","avail","tmpDict","dictLength","_in","s_window","lcode","dcode","lmask","dmask","here","from_source","dolen","inflate_fast","inflate_table","LENS","DISTS","HEAD","ENOUGH_LENS","ENOUGH_DISTS","zswap32","InflateState","lenfix","distfix","virgin","fixedtables","updatewindow","here_bits","here_op","here_val","last_bits","last_op","last_val","hbuf","inf_leave","MAXBITS","lbase","lext","dbase","dext","lens_index","table_index","incr","base_index","offs","extra_index","STORED_BLOCK","LENGTH_CODES","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","TreeDesc","d_code","put_short","send_bits","send_code","bi_reverse","gen_codes","next_code","init_block","bi_windup","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","build_tree","stree","gen_bitlen","xbits","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","static_init_done","stored_len","copy_block","tr_static_init","opt_lenb","static_lenb","max_blindex","detect_data_type","black_mask","build_bl_tree","send_all_trees","lcodes","dcodes","blcodes","STATIC_TREES","bi_flush","ZStream","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","setFunctionName","hasIndices","unicodeSets","flagsBound","TypeErr","sax","SAXParser","SAXStream","createStream","MAX_BUFFER_LENGTH","clearBuffers","bufferCheckPosition","lowercasetags","looseCase","noscript","BEGIN","strictEntities","XML_ENTITIES","rootNS","BEGIN_WHITESPACE","beginWhiteSpace","TEXT","starti","isWhitespace","strictFail","TEXT_ENTITY","OPEN_WAKA","startTagPosition","SCRIPT_ENDING","CLOSE_TAG","SGML_DECL","sgmlDecl","nameStart","OPEN_TAG","PROC_INST","procInstName","procInstBody","CDATA","emitNode","DOCTYPE","isQuote","SGML_DECL_QUOTED","DOCTYPE_DTD","DOCTYPE_QUOTED","DOCTYPE_DTD_QUOTED","COMMENT_ENDING","COMMENT_ENDED","textopts","CDATA_ENDING","CDATA_ENDING_2","PROC_INST_ENDING","PROC_INST_BODY","nameBody","newTag","OPEN_TAG_SLASH","ATTRIB","attribName","attribValue","ATTRIB_NAME","ATTRIB_VALUE","attrib","ATTRIB_NAME_SAW_WHITE","ATTRIB_VALUE_QUOTED","ATTRIB_VALUE_UNQUOTED","ATTRIB_VALUE_ENTITY_Q","ATTRIB_VALUE_CLOSED","isAttribEnd","ATTRIB_VALUE_ENTITY_U","CLOSE_TAG_SAW_WHITE","notMatch","returnState","unparsedEntities","parsedEntity","entityBody","entityStart","checkBufferLength","maxAllowed","maxActual","closeText","flushBuffers","streamWraps","onend","SD","XML_NAMESPACE","XMLNS_NAMESPACE","COMMENT_STARTING","qualName","qn","selfClosing","nv","closeTo","entityLC","numStr","codeUnits","hasDescriptors","$floor","functionLengthIsConfigurable","functionLengthIsWritable","EE","ondata","ondrain","didOnEnd","onEndNT","EElistenerCount","OurUint8Array","debugUtil","createReadableStreamAsyncIterator","destroyImpl","kProxyEvents","isDuplex","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","emitReadable","emitReadable_","chunkInvalid","_isUint8Array","_uint8ArrayToBuffer","addChunk","maybeReadMore","MAX_HWM","howMuchToRead","computeNewHighWaterMark","maybeReadMore_","updateReadableListening","nReadingNextTick","resume_","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","onunpipe","unpipeInfo","onfinish","cleanedUp","pipeOnDrain","dests","prefinish","err2","CorkedRequest","onCorkedFinish","corkReq","internalUtil","realHasInstance","onwriteStateUpdate","onwriteError","finishMaybe","needFinish","clearBuffer","afterWrite","writeOrBuffer","newChunk","decodeChunk","doWrite","onwriteDrain","callFinal","need","writeAfterEnd","validChunk","endWritable","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","emitErrorAndCloseNT","emitErrorNT","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","popCallback","destroys","destroyer","duplexKey","hwm","highWaterMarkFrom","normalizeEncoding","nenc","_normalizeEncoding","retried","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","utf8CheckByte","utf8CheckExtraBytes","utf8End","utf8Text","utf8CheckIncomplete","TINF_OK","TINF_DATA_ERROR","Tree","trans","sourceIndex","bitcount","destLen","sltree","sdtree","length_bits","length_base","dist_bits","dist_base","clcidx","code_tree","lengths","tinf_build_bits_base","tinf_build_tree","tinf_getbit","bit","tinf_read_bits","tinf_decode_symbol","tinf_decode_trees","hlit","hdist","hclen","clen","tinf_inflate_block_data","tinf_inflate_uncompressed_block","tinf_build_fixed_trees","tinf_uncompress","bfinal","deprecated","isArgumentsObject","BigIntSupported","SymbolSupported","ObjectToString","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isDataViewToString","isDataView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","descriptors","formatRegExp","debugs","debugEnvRegex","debugEnv","stylizeNoColor","stylizeWithColor","styleType","formatPrimitive","visibleKeys","arrayToHash","braces","formatArray","formatProperty","reduceToSingleString","numLinesEst","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promiseReject","callbackify","callbackified","maybeCb","rej","availableTypedArrays","typedArrays","$slice","superProto","trySlices","tryTypedArrays","xmldocAssumeBrowser","XmlElement","delegates","XmlTextNode","XmlCDataNode","XmlCommentNode","XmlDocument","addParserEvents","onopentag","parser_opentag","onclosetag","parser_closetag","ontext","parser_text","oncdata","parser_cdata","oncomment","parser_comment","ondoctype","parser_doctype","parser_error","_addChild","_opentag","_closetag","_cdata","eachChild","childNamed","childrenNamed","childWithAttribute","descendantsNamed","descendantWithPath","descendant","valueWithPath","toStringWithIndent","linebreak","compressed","escapeXML","childIndent","formatText","_doctype","finalText","trimmed","preserveWhitespace","URLBrowserResolver","resolving","fetchUrl","writeFileSync","defaultClientFonts","Roboto","Document","tableLayouts","_createDoc","getExtendedUrl","printer","bindFS","createPdfKitDocument","urlResolver","_flushDoc","_pdfMakePages","_getPages","ignoreBuffer","_bufferToBlob","_openWindow","_openPdf","pdfUrl","autoPrint","defaultFileName","getBase64","getStream","canCreatePdf","VirtualFileSystem","fileSystem","dataSystem","fixFilename","dataContent","isAutoColumn","isStarColumn","buildColumnWidths","autoColumns","autoMin","autoMax","starColumns","starMaxMin","starMaxMax","fixedColumns","initial_availableWidth","_minWidth","_maxWidth","_calcWidth","elasticWidth","minW","starSize","measureMinMax","maxStar","starCount","TextTools","StyleContextStack","ColumnCalculator","fontStringify","getNodeId","qrEncoder","DocMeasure","fontProvider","styleDictionary","imageMeasure","svgMeasure","textTools","styleStack","autoImageIndex","measureDocument","docStructure","measureNode","_margin","getNodeMargin","processSingleMargins","currentMargin","flattenStyleArray","styleArray","flattenedStyles","convertMargin","flattenedStyleArray","extendMargins","measureVerticalContainer","ul","measureUnorderedList","measureOrderedList","measureTable","measureLeaf","toc","measureToc","measureImage","measureSVG","measureCanvas","qr","measureQr","convertIfBase64Image","measureImageWithDimensions","_minHeight","_maxHeight","_alignment","writeDimensions","_textRef","_textNodeRef","buildInlines","_inlines","numberStyle","textMargin","tocStyle","lineMargin","tocMargin","lineNumberStyle","tocNumberStyle","_nodeRef","linkToDestination","_tocItemRef","_table","dontBreakRows","gapSizeForList","sizeOfString","buildUnorderedMarker","gapSize","buildCircle","lineColor","buildSquare","buildDisc","buildOrderedMarker","prepareAlpha","toAlpha","prepareRoman","CD","XC","IX","roman","counterText","prepareDecimal","textArray","markerColor","_gapSize","listMarker","counterValue","_gap","measures","numGaps","extendTableWidths","_layout","getLayout","hLineWidth","vLineWidth","hLineColor","vLineColor","hLineStyle","vLineStyle","defaultBorder","getOffsets","totalOffset","prevRightPadding","lOffset","colSpans","_span","measureCb","markSpans","markVSpans","extendWidthsForColSpans","currentMinMax","maxDifference","vector","DocPreprocessor","preprocessDocument","tocs","nodeReferences","preprocessNode","preprocessColumns","preprocessVerticalContainer","preprocessList","preprocessTable","preprocessText","preprocessToc","preprocessImage","preprocessSVG","preprocessCanvas","preprocessQr","pageReference","textReference","tocItem","tocItemId","_pseudo","tocItemRef","_getNodeForNodeRef","_pageRef","isSetParentNode","TraversalTracker","DocumentContext","snapshots","endingCell","tracker","backgroundLength","beginColumnGroup","bottomMost","lastColumnWidth","beginColumn","saved","calculateBottomMost","destContext","saveContextInEndingCell","bottomMostContext","markEnding","_columnEndingContext","completeColumnGroup","addMargin","initializePage","pageSnapshot","moveToRelative","beginDetachedBlock","endDetachedBlock","newPageOrientation","pageOrientationString","currentPageOrientation","moveToNextPage","nextPageIndex","prevPage","createNewPage","currentAvailableWidth","newPageCreated","getCurrentPosition","pageInnerHeight","pageInnerWidth","verticalRatio","horizontalRatio","offsetVector","ElementWriter","contextStack","addPageItem","addLine","dontUpdateContextPosition","getCurrentPositionOnPage","alignLine","inlines","newLineForced","lastLineInParagraph","additionalSpacing","justifyShift","absolutePosition","alignImage","addSVG","addQr","_canvas","addVector","imageWidth","alignCanvas","ignoreContextX","ignoreContextY","beginClip","endClip","addFragment","useBlockXOffset","useBlockYOffset","cloneLine","pushContext","contextOrWidth","popContext","FontProvider","fontDescriptors","pdfKitDoc","fontDef","getFontType","getFontFile","familyName","provideFont","isPattern","getPattern","ImageMeasure","imageDictionary","realImageSrc","PageElementWriter","TableProcessor","otherArray","LayoutBuilder","registerTableLayouts","layoutDocument","watermark","pageBreakBeforeFct","addPageBreaksIfNecessary","linearNodeList","nodeInfo","pageNumbers","pageBreak","pageBreakCalculated","followingNodesOnPage","nodesOnNextPage","previousNodesOnPage","docPreprocessor","docMeasure","tryLayoutDocument","resetXY","writer","startTracking","addBackground","processNode","addHeadersAndFooters","addWatermark","backgroundGetter","pageBackground","beginUnbreakableBlock","commitUnbreakableBlock","addStaticRepeatable","headerOrFooter","sizeFunction","addDynamicRepeatable","nodeGetter","headerSizeFct","footerSizeFct","getWatermarkFontSize","rotatedSize","styleContextStack","sizeOfRotatedText","watermarkObject","_size","getWatermarkSize","decorateNode","applyMargins","unbreakable","absPosition","relPosition","relativePosition","processVerticalContainer","processColumns","processTable","processLeaf","processToc","processImage","processSVG","processCanvas","processQr","columnNode","gaps","gapArray","tableBody","tableRow","pageBreaks","storePageBreakData","pageDesc","leftOffset","colLeftOffset","getEndingCell","endingRow","orderedList","nextMarker","addMarkerToFirstLeaf","markerLine","addInline","getAscenderHeight","tableNode","beginTable","rowHeights","heights","beginRow","endTable","buildNextLine","_pageNodeRef","cloneInline","newInline","isForceContinue","hasEnoughSpaceForInline","isHardWrap","noWrap","getAvailableWidth","widthPerChar","fontFeatures","noNewLine","leadingCut","trailingCut","inlineWidths","nextInlines","inlineWidth","inlineTrailingCut","nextInline","transactionLevel","repeatables","fitOnPage","addFct","rep","insertedOnPages","originalX","forcedX","forcedY","unbreakableContext","nbPages","currentBlockToRepeatable","pushToRepeatables","popFromRepeatables","PdfKit","_interopDefault","getEngineInstance","createPdfDocument","PdfKitEngine","SVGMeasure","textDecorator","requiredFonts","requiredFont","PdfPrinter","createMetadata","standardizedKey","calculatePageHeight","getBottomPosition","fixedMargins","fixPageMargins","bottomPosition","fixPageSize","pageSize2widthAndHeight","isNeedSwapPageSizes","updatePageOrientationInOptions","offsetText","renderLine","preparePageNodeRefLine","diffWidth","shiftToBaseline","shiftedY","linkToPage","drawDecorations","renderWatermark","renderVector","pn","renderImage","renderSVG","fontsFamily","pdfOptions","registerDefaultTableLayouts","layoutBuilder","noBorders","headerLineOnly","lightHorizontalLines","pageBreakBefore","maxNumberPages","maxPagesNumber","createPatterns","patternDefinitions","boundingBox","colored","renderPages","progressCallback","totalItems","renderedItems","printActionRef","OpenAction","VERSIONS","MODE_NUMERIC","MODE_ALPHANUMERIC","MODE_OCTET","NUMERIC_REGEXP","ALPHANUMERIC_REGEXP","ALPHANUMERIC_OUT_REGEXP","ECCLEVEL_L","ECCLEVEL_M","ECCLEVEL_Q","ECCLEVEL_H","GF256_MAP","GF256_INVMAP","GF256_GENPOLY","prevpoly","poly","ALPHANUMERIC_MAP","MASKFUNCS","needsverinfo","ndatabits","ecclevel","nfullbits","ndatalenbits","getmaxdatalen","validatedata","newdata","calculateecc","genpoly","polylen","genpolylen","quotient","augumentbch","maskdata","reserved","maskf","putformatinfo","evaluatematrix","evaluategroup","nblacks","nextrow","maxbuflen","datalen","nlenbits","nblocks","subsizes","subsize","subsize0","eccs","nitemsperblock","augumenteccs","getsizebyver","blit","aligns","maxj","makebasematrix","jj","putdata","bestmask","bestscore","buildCanvas","foreground","generateFrame","MODES","alphanumeric","octet","eccLevel","modSize","paddingXY","styleOverrides","styleNameOrOverride","howMany","autopush","styleNames","styleOverrideObject","pushStyleOverrideObject","pushedItems","xmldoc","stripUnits","textVal","parseSVG","svgString","docWidth","docHeight","viewBoxParts","tableWidth","getTableInnerContentWidth","rowSpanData","prepareRowSpanData","rsd","lastWidth","lBorder","cleanUpRepeatables","rowsWithoutPageBreak","keepWithHeaderRows","prepareCellBorders","rowOffset","setBorder","colOffset","borderIndex","borderValue","drawHorizontalLine","onRowBreak","rowPaddingTop","topLineWidth","reservedAtBottom","bottomLineWidth","rowPaddingBottom","rowTopY","overrideY","cellAbove","rowCellAbove","currentLine","shouldDrawLine","topBorder","bottomBorder","rowBottomBorder","_rowSpanCurrentOffset","colSpanIndex","drawVerticalLine","vLineColIndex","vLineRowIndex","beforeVLineColIndex","cellBefore","rowCellBeforeAbove","rowCurrentCellAbove","stopTracking","endingPage","endingY","getLineXs","_colSpan","ys","hasBreaks","yi","yl","willBreak","rowBreakWithoutHeader","hzLineOffset","leftCellBorder","rightCellBorder","overlayPattern","overlayOpacity","widthRightBorder","widthLeftBorder","x1f","y1f","hLineWhenBroken","headerRepeatable","drawDecoration","firstInline","biggerInline","maxInline","lineAscent","lw","decorationStyle","decorationColor","nbDashes","rdx","nbDots","nbWaves","rwx","iii","groupDecorations","decorationItem","LineBreaker","LEADING","TRAILING","splitWords","normalizeString","getStyleProperty","normalizeTextArray","getOneWord","tmpWords","lastWord","leadingIndent","preserveLeadingSpaces","preserveTrailingSpaces","leadingSpaces","trailingSpaces","currentLineWidth","measured","getTrimmedWidth","angleRad","innerFunction","brotli","fontkit","_applyDecoratedDescriptor","registerFormat","openSync","probe","defaultLanguage","setDefaultLanguage","SubHeader","entryCount","idDelta","idRangeOffset","CmapGroup","startCharCode","endCharCode","glyphID","UnicodeValueRange","startUnicodeValue","additionalCount","UVSMapping","unicodeValue","DefaultUVS","NonDefaultUVS","VarSelectorRecord","varSelector","defaultUVS","nonDefaultUVS","CmapSubtable","codeMap","subHeaderKeys","subHeaderCount","subHeaders","glyphIndexArray","segCountX2","segCount","searchRange","entrySelector","rangeShift","endCode","reservedPad","startCode","glyphIndices","is32","nGroups","numRecords","varSelectors","CmapEntry","platformID","encodingID","numSubtables","checkSumAdjustment","magicNumber","xMin","xMax","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","hhea","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numberOfMetrics","HmtxEntry","bearing","hmtx","bearings","maxp","numGlyphs","maxContours","maxComponentPoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","getEncoding","languageID","MAC_LANGUAGE_ENCODINGS","ENCODINGS","LANGUAGES","NameRecord","nameID","stringOffset","LangTagRecord","NameTable","langTagCount","langTags","NAMES","OS2","xAvgCharWidth","usWeightClass","usWidthClass","fsType","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","ulCharRange","vendorID","fsSelection","usFirstCharIndex","usLastCharIndex","typoAscender","typoDescender","typoLineGap","winAscent","winDescent","codePageRange","defaultChar","breakChar","maxContent","usLowerOpticalPointSize","usUpperOpticalPointSize","underlinePosition","underlineThickness","minMemType42","maxMemType42","minMemType1","maxMemType1","numberOfGlyphs","glyphNameIndex","cvt","controlValues","fpgm","loca","prep","controlValueProgram","glyf","CFFIndex","getCFFVersion","hdrSize","offSize","_i22","_sizes","FLOAT_LOOKUP","FLOAT_ENCODE_LOOKUP","CFFOperand","n2","forceLarge","FLOAT_EOF","CFFDict","_step4","_iterator4","decodeOperands","operands","encodeOperands","_field","_step5","_iterator5","_step6","_iterator6","_step7","_iterator7","_step8","_iterator8","CFFPointer","_r$Pointer","_proto3","Ptr","_proto4","CFFPrivateDict","CFFBlendOp","numBlends","standardStrings","StandardEncoding","ISOAdobeCharset","LangSysTable","reqFeatureIndex","featureCount","featureIndexes","LangSysRecord","langSys","Script","defaultLangSys","langSysRecords","ScriptRecord","ScriptList","Feature","featureParams","lookupCount","lookupListIndexes","FeatureRecord","FeatureList","LookupFlags","markAttachmentType","LookupList","SubTable","Lookup","lookupType","subTableCount","subTables","markFilteringSet","useMarkFilteringSet","RangeRecord","startCoverageIndex","Coverage","glyphCount","rangeRecords","ClassRangeRecord","ClassDef","startGlyph","classValueArray","classRangeCount","classRangeRecord","deltaFormat","LookupRecord","sequenceIndex","lookupListIndex","Rule","lookupRecords","RuleSet","ClassRule","ClassSet","coverage","ruleSetCount","ruleSets","classDef","classSetCnt","classSet","coverages","ChainRule","backtrackGlyphCount","backtrack","inputGlyphCount","lookaheadGlyphCount","ChainRuleSet","ChainingContext","chainCount","chainRuleSets","backtrackClassDef","inputClassDef","lookaheadClassDef","chainClassSet","backtrackCoverage","inputCoverage","lookaheadCoverage","F2DOT14","RegionAxisCoordinates","startCoord","peakCoord","endCoord","VariationRegionList","axisCount","regionCount","variationRegions","DeltaSet","shortDeltas","shortDeltaCount","regionDeltas","regionIndexCount","deltas","ItemVariationData","regionIndexes","deltaSets","ItemVariationStore","variationRegionList","variationDataCount","itemVariationData","ConditionTable","axisIndex","filterRangeMinValue","filterRangeMaxValue","ConditionSet","conditionTable","FeatureTableSubstitutionRecord","featureIndex","alternateFeatureTable","FeatureTableSubstitution","substitutionCount","substitutions","FeatureVariationRecord","conditionSet","featureTableSubstitution","FeatureVariations","majorVersion","minorVersion","featureVariationRecordCount","featureVariationRecords","PredefinedOp","predefinedOps","_proto5","CFFEncodingVersion","_r$Number","_proto6","Range1","nLeft","Range2","CFFEncoding","nCodes","nRanges","RangeArray","_r$Array","_proto7","CFFCharset","CharStrings","FDRange3","fd","FDRange4","FDSelect","fds","sentinel","CFFPrivateOp","_proto8","FontDict","CFFTopDict","VariationStore","itemVariationStore","CFF2TopDict","CFFTop","nameIndex","topDictIndex","globalSubrIndex","topDict","CFFFont","_proto9","isCIDFont","ROS","sid","getCharString","getGlyphName","fdForGlyph","privateDictForGlyph","FDArray","Private","FamilyName","VerticalOrigin","glyphIndex","vertOriginY","VORG","defaultVertOriginY","numVertOriginYMetrics","BigMetrics","horiBearingX","horiBearingY","horiAdvance","vertBearingX","vertBearingY","vertAdvance","SmallMetrics","bearingX","bearingY","EBDTComponent","ByteAligned","BitAligned","SBitLineMetrics","numComponents","dataLen","widthMax","caretSlopeNumerator","caretSlopeDenominator","minOriginSB","minAdvanceSB","maxBeforeBL","minAfterBL","CodeOffsetPair","glyphCode","IndexSubtable","imageDataOffset","offsetArray","lastGlyphIndex","firstGlyphIndex","imageSize","bigMetrics","glyphArray","glyphCodeArray","IndexSubtableArray","BitmapSizeTable","indexSubTableArray","indexTablesSize","numberOfIndexSubTables","colorRef","hori","vert","startGlyphIndex","endGlyphIndex","ppemX","ppemY","bitDepth","EBLC","numSizes","ImageTable","ppem","imageOffsets","sbix","numImgTables","imageTables","LayerRecord","paletteIndex","BaseGlyphRecord","firstLayerIndex","numLayers","COLR","numBaseGlyphRecords","baseGlyphRecord","layerRecords","numLayerRecords","ColorRecord","CPAL","numPaletteEntries","numPalettes","numColorRecords","colorRecords","colorRecordIndices","offsetPaletteTypeArray","offsetPaletteLabelArray","offsetPaletteEntryLabelArray","BaseCoord","referenceGlyph","baseCoordPoint","deviceTable","BaseValues","baseCoordCount","baseCoords","FeatMinMaxRecord","minCoord","maxCoord","MinMax","featMinMaxCount","featMinMaxRecords","BaseLangSysRecord","minMax","BaseScript","defaultMinMax","baseLangSysCount","baseLangSysRecords","BaseScriptRecord","BaseScriptList","BaseTagList","baseTagList","baseScriptList","BASE","horizAxis","vertAxis","AttachPoint","AttachList","attachPoints","CaretValue","caretValuePoint","LigGlyph","LigCaretList","ligGlyphCount","ligGlyphs","MarkGlyphSetsDef","markSetTableFormat","markSetCount","GDEF","glyphClassDef","attachList","ligCaretList","markAttachClassDef","markGlyphSetsDef","ValueFormat","xPlacement","yPlacement","xPlaDevice","yPlaDevice","xAdvDevice","yAdvDevice","ValueRecord","_proto10","buildStruct","PairValueRecord","secondGlyph","PairSet","Class2Record","Anchor","xCoordinate","yCoordinate","anchorPoint","xDeviceTable","yDeviceTable","EntryExitRecord","entryAnchor","exitAnchor","MarkRecord","markAnchor","MarkArray","BaseRecord","classCount","BaseArray","ComponentRecord","LigatureAttach","LigatureArray","GPOSLookup","valueFormat","valueCount","valueFormat1","valueFormat2","pairSetCount","pairSets","classDef1","classDef2","class1Count","class2Count","classRecords","entryExitCount","entryExitRecords","markCoverage","baseCoverage","markArray","baseArray","ligatureCoverage","ligatureArray","mark1Coverage","mark2Coverage","mark1Array","mark2Array","posFormat","GPOS","scriptList","featureList","lookupList","featureVariations","Sequence","AlternateSet","Ligature","compCount","LigatureSet","GSUBLookup","deltaGlyphID","substFormat","sequences","alternateSet","ligatureSets","substitutes","GSUB","JstfGSUBModList","JstfPriority","shrinkageEnableGSUB","shrinkageDisableGSUB","shrinkageEnableGPOS","shrinkageDisableGPOS","shrinkageJstfMax","extensionEnableGSUB","extensionDisableGSUB","extensionEnableGPOS","extensionDisableGPOS","extensionJstfMax","JstfLangSys","JstfLangSysRecord","jstfLangSys","JstfScript","extenderGlyphs","langSysCount","JstfScriptRecord","JSTF","scriptCount","MapDataEntry","VariableSizeNumber","_proto11","entryFormat","DeltaSetIndexMap","mapCount","mapData","HVAR","advanceWidthMapping","LSBMapping","RSBMapping","SignatureBlock","cbSignature","DSIG","ulVersion","usNumSigs","usFlag","signatures","signatureBlocks","GaspRange","rangeMaxPPEM","rangeGaspBehavior","gasp","numRanges","gaspRanges","DeviceRecord","maximumWidth","hdmx","sizeDeviceRecord","KernPair","ClassTable","firstGlyph","nGlyphs","Kern2Array","rowWidth","leftTable","KernSubtable","nPairs","rightTable","kernValueCount","leftClassCount","rightClassCount","kernValue","leftClass","rightClass","kernIndex","KernTable","subVersion","tupleIndex","kern","nTables","LTSH","yPels","PCLT","fontNumber","pitch","typeFamily","symbolSet","characterComplement","strokeWeight","widthType","serifStyle","Ratio","bCharSet","xRatio","yStartRatio","yEndRatio","vTable","yPelHeight","VdmxGroup","recs","startsz","endsz","VDMX","numRecs","numRatios","ratioRanges","vhea","advanceHeightMax","minTopSideBearing","minBottomSideBearing","yMaxExtent","VmtxEntry","vmtx","shortFrac","Correspondence","fromCoord","toCoord","Segment","pairCount","correspondence","avar","UnboundedArrayAccessor","_proto12","UnboundedArray","_r$Array2","_proto13","LookupTable","_proto14","BinarySearchHeader","unitSize","nUnits","LookupSegmentSingle","lastGlyph","LookupSegmentArray","LookupSingle","binarySearchHeader","StateTable","entryData","Entry","StateArray","nClasses","classTable","stateArray","entryTable","BslnSubtable","mappingData","standardGlyph","controlPoints","bsln","defaultBaseline","Setting","FeatureName","nSettings","settingTable","defaultSetting","feat","featureNameCount","reserved1","reserved2","featureNames","Axis$1","axisTag","Instance","coord","postscriptNameID","instanceSize","fvar","offsetToData","countSizePairs","axisSize","instanceCount","shortFrac$1","Offset","gvar","globalCoordCount","globalCoords","ClassTable$1","subFeatureFlags","StateTable1","ClassLookupTable","newStateOffset","WidthDeltaRecord","justClass","beforeGrowLimit","beforeShrinkLimit","afterGrowLimit","afterShrinkLimit","growFlags","shrinkFlags","WidthDeltaCluster","ActionData","lowerLimit","upperLimit","addGlyph","substThreshold","substGlyph","variationAxis","minimumLimit","noStretchValue","maximumLimit","Action","actionClass","actionType","actionLength","actionData","PostcompensationAction","PostCompensationTable","lookupTable","JustificationTable","wdcOffset","postCompensationTable","widthDeltaClusters","just","LigatureData","ContextualData","markIndex","InsertionData","currentInsertIndex","markedInsertIndex","SubstitutionTable","SubtableData","substitutionTable","ligatureActions","ligatureList","insertionActions","Subtable","FeatureEntry","featureType","featureSetting","enableFlags","disableFlags","MorxChain","defaultFlags","chainLength","nFeatureEntries","nSubtables","subtables","morx","nChains","chains","OpticalBounds","opbd","CFF2","CBLC","TableEntry","checkSum","Directory","numTables","binarySearch","_step9","_iterator9","tables$1","maxExponentFor2","maxPowerOf2","CmapProcessor","cmapTable","findSubtable","_step10","_iterator10","uvs","_proto15","_step11","_iterator11","_step12","_step11$value","_iterator12","variationSelector","getVariationSelector","rangeOffset","_gid","_mid","sel","getCharacterSet","endCodes","_step13","_iterator13","codePointsForGlyph","_res2","_step14","_res3","_iterator14","_step15","_res4","_iterator15","_group","KernProcessor","_proto16","getKerning","_step16","_iterator16","crossStream","variation","pairIdx","rightOffset","override","UnicodeLayoutEngine","_proto17","positionGlyphs","clusterStart","clusterEnd","isMark","positionCluster","baseBox","cbox","yGap","markBox","combiningClass","getCombiningClass","_proto18","addPoint","UNICODE_SCRIPTS","Caucasian_Albanian","Arabic","Imperial_Aramaic","Armenian","Avestan","Balinese","Bamum","Bassa_Vah","Batak","Bengali","Bopomofo","Brahmi","Braille","Buginese","Buhid","Chakma","Canadian_Aboriginal","Carian","Cham","Cherokee","Coptic","Cypriot","Cyrillic","Devanagari","Deseret","Duployan","Egyptian_Hieroglyphs","Elbasan","Ethiopic","Georgian","Glagolitic","Gothic","Grantha","Greek","Gujarati","Gurmukhi","Hangul","Han","Hanunoo","Hebrew","Hiragana","Pahawh_Hmong","Katakana_Or_Hiragana","Old_Italic","Javanese","Kayah_Li","Katakana","Kharoshthi","Khmer","Khojki","Kannada","Kaithi","Tai_Tham","Lao","Latin","Lepcha","Limbu","Linear_A","Linear_B","Lisu","Lycian","Lydian","Mahajani","Mandaic","Manichaean","Mende_Kikakui","Meroitic_Cursive","Meroitic_Hieroglyphs","Malayalam","Modi","Mongolian","Mro","Meetei_Mayek","Myanmar","Old_North_Arabian","Nabataean","Nko","Ogham","Ol_Chiki","Old_Turkic","Oriya","Osmanya","Palmyrene","Pau_Cin_Hau","Old_Permic","Phags_Pa","Inscriptional_Pahlavi","Psalter_Pahlavi","Phoenician","Miao","Inscriptional_Parthian","Rejang","Runic","Samaritan","Old_South_Arabian","Saurashtra","Shavian","Sharada","Siddham","Khudawadi","Sinhala","Sora_Sompeng","Sundanese","Syloti_Nagri","Syriac","Tagbanwa","Takri","Tai_Le","New_Tai_Lue","Tamil","Tai_Viet","Telugu","Tifinagh","Tagalog","Thaana","Thai","Tibetan","Tirhuta","Ugaritic","Vai","Warang_Citi","Old_Persian","Cuneiform","Yi","Inherited","Common","OPENTYPE_SCRIPTS","_step17","_iterator17","RTL","arab","hebr","syrc","thaa","cprt","khar","phnx","lydi","avst","armi","phli","prti","sarb","orkh","samr","mand","merc","mero","mani","mend","nbat","narb","palm","phlp","GlyphRun","direction$1","_step18","_iterator18","_step19","_iterator19","_step20","_iterator20","GlyphPosition","allTypographicFeatures","exclusive","allTypeFeatures","ligatures","requiredLigatures","commonLigatures","rareLigatures","rebusPictures","diphthongLigatures","squaredLigatures","abbrevSquaredLigatures","symbolLigatures","contextualLigatures","historicalLigatures","cursiveConnection","unconnected","partiallyConnected","cursive","letterCase","verticalSubstitution","substituteVerticalForms","linguisticRearrangement","numberSpacing","monospacedNumbers","proportionalNumbers","thirdWidthNumbers","quarterWidthNumbers","smartSwash","wordInitialSwashes","wordFinalSwashes","nonFinalSwashes","diacritics","showDiacritics","hideDiacritics","decomposeDiacritics","normalPosition","superiors","inferiors","ordinals","scientificInferiors","fractions","noFractions","verticalFractions","diagonalFractions","overlappingCharacters","preventOverlap","typographicExtras","slashedZero","mathematicalExtras","mathematicalGreek","ornamentSets","noOrnaments","dingbats","piCharacters","fleurons","decorativeBorders","internationalSymbols","mathSymbols","characterAlternatives","noAlternates","designComplexity","designLevel1","designLevel2","designLevel3","designLevel4","designLevel5","styleOptions","noStyleOptions","engravedText","illuminatedCaps","titlingCaps","tallCaps","characterShape","traditionalCharacters","simplifiedCharacters","JIS1978Characters","JIS1983Characters","JIS1990Characters","traditionalAltOne","traditionalAltTwo","traditionalAltThree","traditionalAltFour","traditionalAltFive","expertCharacters","JIS2004Characters","hojoCharacters","NLCCharacters","traditionalNamesCharacters","numberCase","lowerCaseNumbers","upperCaseNumbers","textSpacing","proportionalText","monospacedText","halfWidthText","thirdWidthText","quarterWidthText","altProportionalText","altHalfWidthText","transliteration","noTransliteration","annotation","noAnnotation","boxAnnotation","roundedBoxAnnotation","circleAnnotation","invertedCircleAnnotation","parenthesisAnnotation","periodAnnotation","romanNumeralAnnotation","diamondAnnotation","invertedBoxAnnotation","invertedRoundedBoxAnnotation","kanaSpacing","fullWidthKana","proportionalKana","ideographicSpacing","fullWidthIdeographs","proportionalIdeographs","halfWidthIdeographs","unicodeDecomposition","canonicalComposition","compatibilityComposition","transcodingComposition","rubyKana","CJKSymbolAlternatives","noCJKSymbolAlternatives","CJKSymbolAltOne","CJKSymbolAltTwo","CJKSymbolAltThree","CJKSymbolAltFour","CJKSymbolAltFive","ideographicAlternatives","noIdeographicAlternatives","ideographicAltOne","ideographicAltTwo","ideographicAltThree","ideographicAltFour","ideographicAltFive","CJKVerticalRomanPlacement","CJKVerticalRomanCentered","CJKVerticalRomanHBaseline","italicCJKRoman","CJKItalicRoman","caseSensitiveLayout","caseSensitiveSpacing","alternateKana","alternateHorizKana","alternateVertKana","stylisticAlternatives","noStylisticAlternates","stylisticAltOne","stylisticAltTwo","stylisticAltThree","stylisticAltFour","stylisticAltFive","stylisticAltSix","stylisticAltSeven","stylisticAltEight","stylisticAltNine","stylisticAltTen","stylisticAltEleven","stylisticAltTwelve","stylisticAltThirteen","stylisticAltFourteen","stylisticAltFifteen","stylisticAltSixteen","stylisticAltSeventeen","stylisticAltEighteen","stylisticAltNineteen","stylisticAltTwenty","contextualAlternates","swashAlternates","contextualSwashAlternates","defaultLowerCase","lowerCaseSmallCaps","lowerCasePetiteCaps","defaultUpperCase","upperCaseSmallCaps","upperCasePetiteCaps","languageTag","CJKRomanSpacing","halfWidthCJKRoman","proportionalCJKRoman","defaultCJKRoman","fullWidthCJKRoman","OTMapping","rlig","clig","dlig","hlig","liga","hist","smcp","pcap","frac","dnom","numr","afrc","case","ccmp","cpct","valt","swsh","cswh","curs","c2pc","c2sc","fin2","medi","med2","fin3","fina","pkna","halt","hkna","vkna","ital","lnum","onum","mgrk","calt","vrt2","tnum","pnum","sups","subs","ordn","pwid","hwid","qwid","twid","fwid","palt","trad","smpl","jp78","jp83","jp90","jp04","expt","hojo","nlck","tnam","ruby","titl","ss01","ss02","ss03","ss04","ss05","ss06","ss07","ss08","ss09","ss10","ss11","ss12","ss13","ss14","ss15","ss16","ss17","ss18","ss19","ss20","AATMapping","ot","aat","mapFeatureStrings","typeCode","settingCode","_class$1","_class$2","AATLookupTable","_proto19","seg","glyphsForValue","classValue","_step21","_iterator21","_step22","_iterator22","_segment","AATStateMachine","_proto20","processEntry","classCode","shouldAdvance","_this$stateTable","_step23","_iterator23","AATMorxProcessor","processIndicRearragement","processContextualSubstitution","processLigature","processNoncontextualSubstitutions","processGlyphInsertion","inputCache","_proto21","_step24","_iterator24","_step25","_iterator25","_step26","_iterator26","processSubtable","ligatureStack","markedGlyph","markedIndex","stateMachine","getStateMachine","getProcessor","reorderGlyphs","subsitutions","_lookup","_this$ligatureStack","actionIndex","ligatureIndex","ligatureGlyphs","_codePoints","componentGlyph","ligatureEntry","_insertGlyphs","insertionActionIndex","_this$glyphs","insertions","getSupportedFeatures","_step27","_iterator27","_step28","_iterator28","generateInputs","generateInputCache","_step29","_iterator29","_step30","_iterator30","generateInputsForSubtable","_stack$pop","rangeA","rangeB","reverseA","reverseB","AATLayoutEngine","morxProcessor","fallbackPosition","_proto22","glyphRun","mapOTToAAT","getAvailableFeatures","mapAATToOT","_feature","stringsForGlyph","_step31","glyphStrings","_iterator31","_addStrings","_step32","_iterator32","_cmapProcessor","ShapingPlan","stages","globalFeatures","allFeatures","_proto23","_addFeatures","_step33","stageIndex","_iterator33","addStage","setFeatureOverrides","assignGlobalFeatures","_step34","_iterator34","_step35","_iterator35","applyFeatures","VARIATION_FEATURES","COMMON_FEATURES","FRACTIONAL_FEATURES","HORIZONTAL_FEATURES","DIRECTIONAL_FEATURES","DefaultShaper","plan","_plan","planPreprocessing","planFeatures","planPostprocessing","assignFeatures","userFeatures","isDigit","trie","FEATURES","ShapingClasses","ISOL","FINA","FIN2","MEDI","MED2","INIT","STATE_TABLE","ArabicShaper","_DefaultShaper","curAction","prevAction","getShapingClass","_STATE_TABLE$state$ty","getCategory","GlyphIterator","_proto24","shouldIgnore","ignoreMarks","ignoreBaseGlyphs","isBase","ignoreLigatures","isLigature","peekIndex","DEFAULT_SCRIPTS","OTProcessor","lookups","variationsIndex","_variationProcessor","findVariationsIndex","normalizedCoords","selectScript","ligatureID","currentFeature","_proto25","findScript","_step36","_iterator36","_step37","_iterator37","_step38","_iterator38","_step39","_iterator39","substituteFeature","substituteFeatureForVariations","lookupsForFeatures","_step40","_iterator40","_step41","_iterator41","lookupIndex","_step42","_iterator42","substitution","variations","variationConditionsMatch","applyLookups","glyphIterator","_step43","_iterator43","_step43$value","_step44","_iterator44","applyLookup","applyLookupList","_step45","_iterator45","lookupRecord","_step46","_iterator46","coverageIndex","_step47","_iterator47","sequenceMatches","sequenceMatchIndices","coverageSequenceMatches","getClassID","_step48","_iterator48","classSequenceMatches","classID","applyContext","_step49","_iterator49","_step50","_iterator50","applyChainingContext","_step51","_iterator51","_step52","_iterator52","_rule2","GlyphInfo","ligatureComponent","isLigated","cursiveAttachment","markAttachment","shaperInfo","substituted","isMultiplied","_proto26","HangulShaper","_DefaultShaper2","_STATE_TABLE$1$state$","STATE_TABLE$1","DECOMPOSE","hasGlyphForCodePoint","COMPOSE","TONE_MARK","reorderToneMark","INVALID","insertDottedCircle","HANGUL_BASE","HANGUL_COUNT","L_BASE","V_BASE","T_BASE","V_COUNT","T_COUNT","L_END","V_END","T_END","DOTTED_CIRCLE","isV","isT","isTone","isLVT","isLV","isCombiningL","isCombiningV","isCombiningT","LV","LVT","glyphForCodePoint","ljmo","vjmo","tjmo","lv","prevType","dottedCircle","useData","decompositions","CATEGORIES","Ra_To_Become_Reph","Pre_M","Pre_C","Base_C","After_Main","Above_C","Before_Sub","Below_C","After_Sub","Before_Post","Post_C","After_Post","Final_C","SMVD","CONSONANT_FLAGS","JOINER_FLAGS","HALANT_OR_COENG_FLAGS","INDIC_CONFIGS","hasOldSpec","virama","basePos","rephPos","rephMode","blwfMode","INDIC_DECOMPOSITIONS","decompositions$1","trie$1","IndicShaper","_DefaultShaper3","setupSyllables","initialReordering","finalReordering","unicodeScript","fromOpenType","indicConfig","isOldSpec","decomposed","indicCategory","indicPosition","IndicInfo","syllableType","syllable","_step53","_iterator53","_step53$value","isConsonant","isJoiner","isHalantOrCoeng","wouldSubstitute","_step54","_iterator54","_glyph$features","_layoutEngine","GSUBProcessor","consonantPosition","consonant","nextSyllable","hasReph","rphf","seenBelow","_info2","disallowDoubleHalants","_i9","_info3","_i10","_i11","_i12","blwf","_i13","_i14","abvf","pstf","_i15","_i16","cfar","_i17","nonJoiner","tryPref","BASE_C","_i18","newPos","_i19","oldPos","newRephPos","_i20","reph","_i21","_newPos","_oldPos2","_oldPos","categories$1","decompositions$2","trie$2","stateMachine$1","UniversalShaper","_DefaultShaper4","setupSyllables$1","clearSubstitutionFlags","recordRphf","recordPref","useCategory","USEInfo","_step55","_iterator55","_step55$value","_step56","_iterator56","_step57","_iterator57","_step58","_iterator58","nextSyllable$1","isHalant","SHAPERS","mong","phag","hang","bng2","beng","dev2","deva","gjr2","gujr","guru","gur2","knda","knd2","mlm2","mlym","ory2","orya","taml","tml2","telu","tel2","khmr","bali","batk","brah","bugi","buhd","cakm","cham","dupl","egyp","gran","hano","java","kthi","kali","khoj","sind","lepc","limb","mahj","mtei","modi","hmng","rjng","saur","shrd","sidd","sinh","sund","sylo","tglg","tagb","tale","lana","tavt","takr","tibt","tfng","tirh","latn","DFLT","_OTProcessor","_proto27","_this$glyphs2","curGlyph","_index2","_index3","_step60","_iterator60","ligature","_step61","_curGlyph","_iterator61","_characters","ligatureGlyph","isMarkLigature","_step62","lastLigID","lastNumComps","curComps","_iterator62","GPOSProcessor","_OTProcessor2","_proto28","applyPositionValue","variationProcessor","variationStore","getDelta","nextGlyph","_step63","_iterator63","_pair","class1","class2","_nextGlyph","curRecord","nextRecord","baseGlyphIndex","baseIndex","markRecord","applyAnchor","_markIndex","_baseGlyphIndex","ligIndex","ligAttach","markGlyph","ligGlyph","compIndex","_markRecord","mark1Index","prevIndex","_cur","good","mark2Index","_markRecord2","baseAnchor","markCoords","markPos","fixCursiveAttachment","fixMarkAttachment","OTLayoutEngine","glyphInfos","_proto29","shaper","choose","_step59","_iterator59","glyphInfo","zeroMarkWidths","zeroMarkAdvances","LayoutEngine","unicodeLayoutEngine","kernProcessor","_proto30","forString","_script","getScript","_step64","_iterator64","forCodePoints","_script2","hideDefaultIgnorables","isDefaultIgnorable","plane","_step65","_iterator65","_step66","_iterator66","SVG_COMMANDS","_cbox","_proto31","toFunction","toSVG","mapPoints","_step67","_iterator67","_fn","_step68","_iterator68","_step69","_iterator69","_c$args","_c$args2","qp1x","qp1y","p3x","p3y","_c$args3","b2ac","_i23","_class$3","_class$4","StandardNames","Glyph","_proto32","_getPath","_getCBox","_getBBox","_getTableMetrics","_getMetrics","_metrics","os2","_this$_getTableMetric","leftBearing","_this$_getTableMetric2","advanceHeight","topBearing","getAdvanceAdjustment","getScaledPath","_getName","GlyfHeader","numberOfContours","Point","onCurve","endContour","_proto33","scale01","scale10","TTFGlyph","_Glyph","_proto34","_getTableStream","_parseGlyphCoord","same","glyfPos","_decodeSimple","_decodeComposite","endPtsOfContours","numCoords","_getPhantomPoints","transformPoints","phantomPoints","haveInstructions","gPos","_this$_metrics","_getContours","_step70","_iterator70","_contours","contour","directory","contours","firstPt","lastPt","curvePt","prevPt","CFFGlyph","_Glyph2","_proto35","bias","usedGsubrs","usedSubrs","nStems","_usedGsubrs","_usedSubrs","gsubrs","gsubrsBias","privateDict","subrs","Subrs","subrsBias","vstore","vsindex","checkWidth","nominalWidthX","parseStems","subr","blendVector","getBlendVector","numOperands","c3x","c3y","c4x","c4y","c5x","c5y","c6x","c6y","pts","startx","starty","SBIXImage","buflen","SBIXGlyph","_TTFGlyph","_proto36","getImageForSize","renderOutlines","COLRLayer","COLRGlyph","_Glyph3","_proto37","_step71","_iterator71","_step71$value","cpal","colr","rec","baseLayer","_getBaseGlyph","GlyphVariationProcessor","normalizeCoords","blendVectors","_proto38","glyphPoints","tupleCount","sharedPoints","decodePoints","origPoints","tupleDataSize","tupleCoords","startCoords","endCoords","tupleFactor","nPoints","xDeltas","decodeDeltas","yDeltas","outPoints","hasDelta","interpolateMissingDeltas","runCount","inPoints","firstDelta","curDelta","deltaInterpolate","deltaShift","ref1","ref2","in1","out1","out2","_table$advanceWidthMa","itemStore","varData","deltaSet","netAdjustment","scalar","Subset","_proto39","Point$1","Glyf","xPoints","yPoints","TTFGlyphEncoder","_proto40","encodeSimple","lastFlag","pointCount","_encodePoint","shortFlag","sameFlag","TTFSubset","_Subset","glyphEncoder","_proto41","_addGlyph","curOffset","nextOffset","_step72","_iterator72","CFFSubset","_Subset2","_proto42","subsetCharstrings","charstrings","_step73","_iterator73","subsetSubrs","subsetFontdict","_step74","used_fds","used_subrs","fd_select","_iterator74","createCIDFontdict","_step75","_iterator75","addString","_i24","_arr2","CIDCount","TTFFont","variationCoords","_directoryPos","_tables","_glyphs","_decodeDirectory","_getTable","_proto43","_decodeTable","logErrors","getVariation","namedVariations","_step76","_iterator76","_step77","_iterator77","WOFFDirectoryEntry","compLength","origChecksum","WOFFDirectory","flavor","totalSfntSize","metaOffset","metaLength","metaOrigLength","privOffset","privLength","_step78","_iterator78","WOFFFont","_TTFFont","_proto44","outBuffer","WOFF2Glyph","_TTFGlyph2","_proto45","_transformedGlyphs","Base128","knownTags","WOFF2DirectoryEntry","customTag","transformVersion","transformed","transformLength","WOFF2Directory","totalCompressedSize","WOFF2Font","_TTFFont2","_proto46","_dataPos","_decompress","_decompressed","decompressedSize","_transformGlyfTable","GlyfTable","nContours","read255UInt16","decodeTriplet","composites","Substream","_proto47","indexFormat","nContourStreamSize","nPointsStreamSize","flagStreamSize","glyphStreamSize","compositeStreamSize","bboxStreamSize","instructionStreamSize","WORD_CODE","ONE_MORE_BYTE_CODE2","ONE_MORE_BYTE_CODE1","LOWEST_U_CODE","withSign","baseval","TTCHeader","numFonts","dsigTag","dsigLength","dsigOffset","TrueTypeCollection","_proto48","_step79","_iterator79","_step80","_iterator80","DFontName","nameOffset","dataOffset","maxTypeIndex","refList","TypeList","DFontMap","typeList","nameListOffset","DFontHeader","mapLength","DFont","_step82","_iterator82","_step83","_iterator83","sfnt","_proto49","_step81","_iterator81","_step84","_iterator84","_step85","_iterator85","_require","_require2","classTrie","mapFirst","Break","curClass","nextClass","LB8a","LB21a","LB30a","nextCodePoint","nextCharClass","getSimpleBreak","getPairTableBreak","shouldBreak","firstClass","possibleNames","$c5L0i$base64js","$c5L0i$unicodetrie","$parcel$interopDefault","$parcel$export","$parcel$defineInteropFlag","$43d7963e56408b24$export$410364bbb673ddbc","$43d7963e56408b24$export$c03b919c6651ed55","$43d7963e56408b24$export$941569448d136665","$43d7963e56408b24$export$92f6187db8ca6d26","$43d7963e56408b24$export$7d1258ebb7625a0d","$43d7963e56408b24$export$52c8ea63abd07594","$43d7963e56408b24$export$727d9dbc4fbb948f","$43d7963e56408b24$export$a5b49f4dc6a07d2c","$43d7963e56408b24$export$7b6804e8df61fcf5","$43d7963e56408b24$export$aebd617640818cda","$43d7963e56408b24$export$de8b4ee23b2cf823","$43d7963e56408b24$export$3c52dd84024ae72c","$43d7963e56408b24$export$a11bdcffe109e74b","$43d7963e56408b24$export$e33ad6871e762338","$43d7963e56408b24$export$2e2bcd8739ae039","$29668e65f2091c2c$exports","$43d7963e56408b24$var$trie","$43d7963e56408b24$var$log2","$43d7963e56408b24$var$bits","$43d7963e56408b24$var$CATEGORY_BITS","$43d7963e56408b24$var$COMBINING_BITS","combiningClasses","$43d7963e56408b24$var$SCRIPT_BITS","$43d7963e56408b24$var$EAW_BITS","eaw","$43d7963e56408b24$var$CATEGORY_SHIFT","$43d7963e56408b24$var$COMBINING_SHIFT","$43d7963e56408b24$var$SCRIPT_SHIFT","$43d7963e56408b24$var$EAW_SHIFT","$43d7963e56408b24$var$CATEGORY_MASK","$43d7963e56408b24$var$COMBINING_MASK","$43d7963e56408b24$var$SCRIPT_MASK","$43d7963e56408b24$var$EAW_MASK","$43d7963e56408b24$var$NUMBER_MASK","getEastAsianWidth","getNumericValue","isAlphabetic","isPunctuation","isLowerCase","isUpperCase","isTitleCase","isWhiteSpace","isBaseForm","__webpack_module_cache__","cachedModule","installedModules","__nested_webpack_require_626__","HttpPostMessage","windowPostMessageProxy","defaultHeaders","defaultTargetWindow","addTrackingProperties","trackingProperties","getTrackingProperties","isErrorMessage","targetWindow","__nested_webpack_require_612__","CommonErrorCodes","BookmarksPlayMode","ExportDataType","QnaMode","PageNavigationPosition","BrowserPrintAdjustmentsMode","AggregateFunction","DataCacheMode","CredentialType","isPercentOfGrandTotal","isColumnAggr","isHierarchyLevelAggr","isHierarchyLevel","isMeasure","isBasicFilterWithKeys","isFilterKeyColumnsTarget","HierarchyIdentityFilter","HierarchyFilter","AdvancedFilter","TupleFilter","IdentityFilter","BasicFilterWithKeys","BasicFilter","RelativeTimeFilter","RelativeDateFilter","TopNFilter","IncludeExcludeFilter","NotSupportedFilter","RelativeDateOperators","RelativeDateFilterTimeUnit","FilterType","FiltersLevel","FiltersOperations","MenuLocation","ContrastMode","TokenType","ViewMode","Permissions","SectionVisibility","ReportAlignment","HyperlinkClickBehavior","LayoutType","VisualContainerDisplayMode","BackgroundType","DisplayOption","PageSizeType","TraceType","validateExportDataRequest","validateQnaInterpretInputData","validateLoadQnaConfiguration","validateSaveAsParameters","validateUpdateFiltersRequest","validateFilter","validatePage","validateTileLoad","validateDashboardLoad","validateQuickCreate","validateCreateReport","validatePaginatedReportLoad","validateReportLoad","validateMenuGroupExtension","validateExtension","validateCustomPageSize","validateVisualizationsPane","validateSyncSlicersPane","validateSelectionPane","validatePageNavigationPane","validateFieldsPane","validateFiltersPane","validateBookmarksPane","validatePanes","validateSettings","validateCaptureBookmarkRequest","validateApplyBookmarkStateRequest","validateApplyBookmarkByNameRequest","validateAddBookmarkRequest","validatePlayBookmarkRequest","validateSlicerState","validateSlicer","validateVisualSelector","isIExtensionArray","isIExtensions","isGroupedMenuExtension","isFlatMenuExtension","isReportFiltersArray","isOnLoadFilters","VisualDataRoleKindPreference","VisualDataRoleKind","CommandDisplayOption","SlicerTargetSelector","VisualTypeSelector","VisualSelector","PageSelector","Selector","TextAlignment","validatePrintSettings","validateZoomLevel","validateCustomTheme","validateCommandsSettings","validateVisualSettings","validateVisualHeader","validator_1","Verbose","ExpectedError","UnexpectedError","Fatal","Widescreen","Standard","Cortana","Letter","Custom","Mobile","FitToPage","FitToWidth","ActualSize","Transparent","Visible","Hidden","MobilePortrait","MobileLandscape","NavigateAndRaiseEvent","RaiseEvent","AlwaysVisible","HiddenInViewMode","Read","ReadWrite","Copy","View","Aad","Embed","HighContrast1","HighContrast2","HighContrastBlack","HighContrastWhite","RemoveAll","ReplaceAll","Add","Replace","Report","Page","Visual","Advanced","Basic","IncludeExclude","RelativeDate","TopN","Tuple","RelativeTime","Identity","Hierarchy","HierarchyIdentity","Days","Weeks","CalendarWeeks","Months","CalendarMonths","Years","CalendarYears","Minutes","Hours","InLast","InThis","InNext","schemaUrl","notSupportedTypeName","isExclude","timeUnitsCount","timeUnitType","includeToday","requireSingleSelection","numberOfKeys","lengthOfArray","logicalOperator","extractedConditions","hierarchyData","advancedFilter","hierarchyLevel","percentOfGrandTotal","NoConnection","OnBehalfOf","Anonymous","Import","DirectQuery","Sum","Average","DistinctCount","NoAdjustments","Interactive","ResultOnly","Summarized","Underlying","Off","Presentation","NotFound","InvalidParameters","LoadReportFailed","NotAuthorized","FailedToLoadModel","TopCenter","BottomCenter","RightCenter","LeftCenter","Ascending","Descending","schema","visualName","visualType","menuExtension","normalizeError","Enabled","Disabled","Grouping","Measure","GroupingOrMeasure","visualSelectorValidator","slicerValidator","slicerStateValidator","playBookmarkRequestValidator","addBookmarkRequestValidator","applyBookmarkByNameRequestValidator","applyBookmarkStateRequestValidator","captureBookmarkRequestValidator","settingsValidator","reportPanesValidator","bookmarksPaneValidator","filtersPaneValidator","fieldsPaneValidator","pageNavigationPaneValidator","selectionPaneValidator","syncSlicersPaneValidator","visualizationsPaneValidator","customPageSizeValidator","extensionValidator","menuGroupExtensionValidator","reportLoadValidator","paginatedReportLoadValidator","reportCreateValidator","quickCreateValidator","dashboardLoadValidator","tileLoadValidator","pageValidator","filterValidator","updateFiltersRequestValidator","saveAsParametersValidator","loadQnaValidator","qnaInterpretInputDataValidator","exportDataRequestValidator","visualHeaderValidator","visualSettingsValidator","commandsSettingsValidator","customThemeValidator","zoomLevelValidator","printSettingsValidator","__nested_webpack_require_47160__","barsValidator_1","bookmarkValidator_1","commandsSettingsValidator_1","customThemeValidator_1","dashboardLoadValidator_1","datasetBindingValidator_1","exportDataValidator_1","extensionsValidator_1","filtersValidator_1","layoutValidator_1","pageValidator_1","panesValidator_1","qnaValidator_1","reportCreateValidator_1","reportLoadValidator_1","paginatedReportLoadValidator_1","saveAsParametersValidator_1","selectorsValidator_1","settingsValidator_1","slicersValidator_1","tileLoadValidator_1","visualSettingsValidator_1","anyOfValidator_1","fieldForbiddenValidator_1","fieldRequiredValidator_1","mapValidator_1","typeValidator_1","parameterPanelValidator_1","datasetCreateConfigValidator_1","quickCreateValidator_1","printSettingsValidator_1","paginatedReportDatasetBindingValidator_1","AddBookmarkRequestValidator","advancedFilterTypeValidator","EnumValidator","advancedFilterValidator","AdvancedFilterValidator","anyArrayValidator","ArrayValidator","AnyOfValidator","StringValidator","NumberValidator","BooleanValidator","anyFilterValidator","BasicFilterValidator","IncludeExcludeFilterValidator","NotSupportedFilterValidator","RelativeDateFilterValidator","TopNFilterValidator","RelativeTimeFilterValidator","HierarchyFilterValidator","anyValueValidator","actionBarValidator","ActionBarValidator","statusBarValidator","StatusBarValidator","ApplyBookmarkByNameRequestValidator","ApplyBookmarkStateRequestValidator","applyBookmarkValidator","backgroundValidator","basicFilterTypeValidator","basicFilterValidator","booleanArrayValidator","BooleanArrayValidator","booleanValidator","BookmarksPaneValidator","captureBookmarkOptionsValidator","CaptureBookmarkOptionsValidator","CaptureBookmarkRequestValidator","columnSchemaArrayValidator","ColumnSchemaValidator","commandDisplayOptionValidator","commandExtensionSelectorValidator","VisualSelectorValidator","VisualTypeSelectorValidator","commandExtensionArrayValidator","CommandExtensionValidator","commandExtensionValidator","commandsSettingsArrayValidator","CommandsSettingsValidator","conditionItemValidator","ConditionItemValidator","contrastModeValidator","credentialDetailsValidator","MapValidator","credentialsValidator","CredentialsValidator","credentialTypeValidator","customLayoutDisplayOptionValidator","customLayoutValidator","CustomLayoutValidator","CustomPageSizeValidator","CustomThemeValidator","DashboardLoadValidator","dataCacheModeValidator","datasetBindingValidator","DatasetBindingValidator","datasetCreateConfigValidator","DatasetCreateConfigValidator","datasourceConnectionConfigValidator","DatasourceConnectionConfigValidator","displayStateModeValidator","displayStateValidator","DisplayStateValidator","ExportDataRequestValidator","extensionArrayValidator","ExtensionValidator","extensionsValidator","ExtensionsValidator","extensionPointsValidator","ExtensionPointsValidator","fieldForbiddenValidator","FieldForbiddenValidator","fieldRequiredValidator","FieldRequiredValidator","FieldsPaneValidator","filterColumnTargetValidator","FilterColumnTargetValidator","filterDisplaySettingsValidator","FilterDisplaySettingsValidator","filterConditionsValidator","filterHierarchyTargetValidator","FilterHierarchyTargetValidator","filterMeasureTargetValidator","FilterMeasureTargetValidator","filterTargetValidator","FilterKeyColumnsTargetValidator","FilterKeyHierarchyTargetValidator","FilterValidator","filterTypeValidator","filtersArrayValidator","filtersOperationsUpdateValidator","filtersOperationsRemoveAllValidator","FiltersPaneValidator","hyperlinkClickBehaviorValidator","includeExcludeFilterValidator","includeExludeFilterTypeValidator","includeExcludeFilterValuesValidator","IncludeExcludePointValueValidator","hierarchyFilterTypeValidator","hierarchyFilterValuesValidator","HierarchyFilterNodeValidator","layoutTypeValidator","LoadQnaValidator","menuExtensionValidator","FlatMenuExtensionValidator","GroupedMenuExtensionValidator","menuGroupExtensionArrayValidator","MenuGroupExtensionValidator","menuLocationValidator","notSupportedFilterTypeValidator","notSupportedFilterValidator","numberArrayValidator","NumberArrayValidator","numberValidator","onLoadFiltersBaseValidator","OnLoadFiltersBaseValidator","OnLoadFiltersBaseRemoveOperationValidator","pageLayoutValidator","VisualLayoutValidator","PageNavigationPaneValidator","pageNavigationPositionValidator","pageSizeTypeValidator","pageSizeValidator","PageSizeValidator","PageValidator","pageViewFieldValidator","PageViewFieldValidator","pagesLayoutValidator","PageLayoutValidator","paginatedReportCommandsValidator","PaginatedReportCommandsValidator","paginatedReportDatasetBindingArrayValidator","PaginatedReportDatasetBindingValidator","PaginatedReportLoadValidator","paginatedReportsettingsValidator","PaginatedReportSettingsValidator","parameterValuesArrayValidator","ReportParameterFieldsValidator","parametersPanelValidator","ParametersPanelValidator","permissionsValidator","PlayBookmarkRequestValidator","PrintSettingsValidator","QnaInterpretInputDataValidator","qnaPanesValidator","QnaPanesValidator","qnaSettingValidator","QnaSettingsValidator","QuickCreateValidator","rawDataValidator","relativeDateFilterOperatorValidator","relativeDateFilterTimeUnitTypeValidator","relativeDateFilterTypeValidator","relativeDateFilterValidator","relativeDateTimeFilterTypeValidator","relativeDateTimeFilterUnitTypeValidator","relativeTimeFilterTimeUnitTypeValidator","relativeTimeFilterTypeValidator","relativeTimeFilterValidator","reportBarsValidator","ReportBarsValidator","ReportCreateValidator","reportLoadFiltersValidator","OnLoadFiltersValidator","ReportLoadValidator","ReportPanesValidator","SaveAsParametersValidator","SelectionPaneValidator","SettingsValidator","singleCommandSettingsValidator","SingleCommandSettingsValidator","slicerSelectorValidator","SlicerTargetSelectorValidator","SlicerStateValidator","slicerTargetValidator","SlicerValidator","stringArrayValidator","StringArrayValidator","stringValidator","SyncSlicersPaneValidator","tableDataArrayValidator","TableDataValidator","tableSchemaListValidator","TableSchemaValidator","TileLoadValidator","tokenTypeValidator","topNFilterTypeValidator","topNFilterValidator","UpdateFiltersRequestValidator","RemoveFiltersRequestValidator","viewModeValidator","visualCommandSelectorValidator","visualHeaderSelectorValidator","visualHeaderSettingsValidator","VisualHeaderSettingsValidator","VisualHeaderValidator","visualHeadersValidator","VisualizationsPaneValidator","visualLayoutValidator","VisualSettingsValidator","visualTypeSelectorValidator","RangeValidator","__nested_webpack_require_65027__","multipleFieldsValidator_1","MultipleFieldsValidator","ObjectValidator","fieldValidatorsPairs","fieldsPath","fieldValidators","SchemaValidator","ValueValidator","TypeValidator","itemValidators","schemaValue","__nested_webpack_require_80906__","__nested_webpack_require_89382__","__nested_webpack_require_96415__","__nested_webpack_require_98569__","__nested_webpack_require_101568__","datasetId","paginatedReportBindings","__nested_webpack_require_104264__","__nested_webpack_require_106608__","ExtensionItemValidator","MenuExtensionBaseValidator","__nested_webpack_require_119099__","RelativeDateTimeFilterValidator","FilterValidatorBase","__nested_webpack_require_154405__","__nested_webpack_require_160884__","__nested_webpack_require_166324__","__nested_webpack_require_178070__","__nested_webpack_require_183781__","__nested_webpack_require_186639__","__nested_webpack_require_190760__","__nested_webpack_require_195256__","__nested_webpack_require_197537__","typeValidator_2","__nested_webpack_require_202995__","__nested_webpack_require_208991__","__nested_webpack_require_212421__","__nested_webpack_require_215693__","__nested_webpack_require_223102__","keyValidators","valueValidators","__nested_webpack_require_225786__","__nested_webpack_require_228154__","datasourceConnectionConfig","mashupDocument","tableSchemaList","__nested_webpack_require_238209__","__nested_webpack_require_241082__","__nested_webpack_require_243275__","__nested_webpack_require_246021__","__nested_webpack_require_617__","__nested_webpack_require_1897__","RouteRecognizer","getRouteRecognizer","patchRouteRecognizer","postRouteRecognizer","putRouteRecognizer","deleteRouteRecognizer","registerHandler","routeRecognizer","matchingRoutes","recognize","__nested_webpack_require_6218__","$$route$recognizer$dsl$$Target","$$route$recognizer$dsl$$Matcher","$$route$recognizer$dsl$$generateMatch","startingPath","nestedCallback","$$route$recognizer$dsl$$addRoute","routeArray","$$route$recognizer$dsl$$eachRoute","baseRoute","willAddRoute","contextEntered","$$route$recognizer$$escapeRegex","$$route$recognizer$$isArray","$$route$recognizer$$StaticSegment","$$route$recognizer$$DynamicSegment","$$route$recognizer$$StarSegment","$$route$recognizer$$EpsilonSegment","$$route$recognizer$$parse","$$route$recognizer$$State","charSpec","nextStates","charSpecs","$$route$recognizer$$recognizeChar","$$route$recognizer$$RecognizeResults","$$route$recognizer$$decodeQueryParamPart","eachChar","invalidChars","validChars","returned","$$route$recognizer$$RouteRecognizer","rootState","allSegments","handlersFor","hasRoute","generateQueryString","arrayPair","parseQueryString","queryString","keyLength","queryStart","isSlashDropped","solutions","$$route$recognizer$$sortSolutions","$$route$recognizer$$findHandler","currentCapture","addRouteCallback","$$route$recognizer$$default","amd","webpackPolyfill","AdvancedFilterBuilder","powerbi_models_1","addCondition","FilterBuilder","BasicFilterBuilder","isRequireSingleSelection","notIn","basicFilter","withTargetObject","withColumnTarget","tableName","withMeasureTarget","withHierarchyLevelTarget","withColumnAggregation","withHierarchyLevelAggregationTarget","RelativeTimeFilterBuilder","RelativeDateFilterBuilder","TopNFilterBuilder","basicFilterBuilder_1","advancedFilterBuilder_1","topNFilterBuilder_1","relativeDateFilterBuilder_1","relativeTimeFilterBuilder_1","isTodayIncluded","inLast","inThis","inNext","orderByTarget","orderByTargetValue","BookmarksManager","util_1","getBookmarks","isRDLEmbed","APINotSupportedForRDLError","hpm","bookmarkName","response_2","playMode","playBookmarkRequest","response_3","response_4","applyState","response_5","embed_1","phasedRender","isBootstrap","createConfig","findIdFromEmbedUrl","configChanged","getDefaultEmbedUrlEndpoint","isSaved","isSavedInternal","datasetIdMatch","sdkSessionId","getSdkSessionId","eventHooks","accessTokenProvider","tokenProviderSupplied","loadPath","phasedLoadPath","allowedEvents","dashboardId","dashboardIdMatch","dashboardIdAttribute","validatePageView","typeAttribute","sdkConfig","autoAuthInEmbedUrl","EmbedUrlNotSupported","eventHandlers","iframeLoaded","embedtype","populateConfig","isCreate","setIframe","saveAsParameters","getCorrelationId","timeNow","bootstrapped","lastLoadRequest","getTimeDiffInMilliseconds","eventHandlerToRemove","embedType","accessTokenAttribute","globalAccessToken","bootstrapConfig","getEmbedUrl","addLocaleToEmbedUrl","initialLayoutType","layoutType","extensionsArray","validateEventHooks","applicationContextProvider","addParamToUrl","localeSettings","embedUrlAttribute","getDefaultEmbedUrl","defaultEmbedHostName","nameAttribute","createRandomString","findGroupIdFromEmbedUrl","fullscreen","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","exitFullscreen","isFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","isLoad","iframeContent","validateEmbedUrl","invalidEmbedUrlErrorMessage","getNumberOfComponents","maxFrontLoadTimes","frontLoadHandler","frontLoadSendConfig","setComponentTitle","setComponentTabIndex","removeComponentTabIndex","_tabIndex","groupIdMatch","response_6","window_post_message_proxy_1","http_post_message_1","powerbi_router_1","config_1","wpmp","sdkType","sdkWrapperVersion","logMessages","eventSourceOverrideWindow","WindowPostMessageProxy","processTrackingProperties","visualDescriptor_1","isActivePage","defaultSize","defaultDisplayOption","mobileSize","wallpaper","getSmartNarrativeInsights","updateFiltersRequest","filtersOperation","removeFilters","setFilters","response_7","getVisuals","visual","VisualDescriptor","response_8","getVisualByName","response_9","setVisualDisplayState","displayState","moveVisual","resizeVisual","resizePage","pageSizeType","resizeActivePage","getSlicers","response_10","hasLayout","layoutTypeEnum","response_11","Qna","setQuestion","qnaData","_isBootstrap","QuickCreate","invokeSDKHook","page_1","bookmarksManager_1","bookmarksManager","reportIdMatch","deletePage","renamePage","reportIdAttribute","getPageByName","getActivePage","activePage","setPage","response_12","customLayout","extensionElement","response_13","isMobileSettings","filterPaneEnabledAttribute","navContentPaneEnabledAttribute","switchMode","viewMode","newMode","viewModeToString","response_14","response_15","applyThemeInternal","resetTheme","response_16","resetPersistentFilters","response_17","savePersistentFilters","response_18","arePersistentFiltersApplied","response_19","removeContextMenuCommand","contextMenuTitle","commandCopy","indexOfCommand","findCommandMenuIndex","visualContextMenu","addContextMenuCommand","commandTitle","menuLocation","newCommands","createMenuCommand","removeOptionsMenuCommand","optionsMenuTitle","visualOptionsMenu","addOptionsMenuCommand","commandIcon","validateVisual","buildLayoutSettingsObject","switchLayout","isInitialMobileSettings","isPassedMobileSettings","newSetting","menuTitle","newCommandObj","activeMenuCommand","visualLayout","pagesLayout","visualsLayout","response_20","response_21","setZoom","zoomLevel","closeAllOverlays","clearSelectedVisuals","clearPopOutState","error_2","report_1","create_1","dashboard_1","tile_1","qna_1","visual_1","quickCreate_1","registeredComponents","wpmpName","uniqueSessionId","generateUUID","embeds","autoEmbedOnContentLoaded","powerBiElement","powerBiEmbed","addOrOverwriteEmbed","quickCreate","embedInternal","outerHTML","embedExisting","embedNew","getSDKVersion","scrubbedConfig","createEmbedComponent","embedComponent","registeredComponent","registeredComponentType","embedElement","pageKey","raiseCustomEvent","setSdkInfo","embedComponentFactory","routerEventUrls","Tile","tileId","tileIdMatch","getRandomValue","allowedPowerBiHostsRegex","allowedPowerBiHostsSovRegex","cryptoObj","randomValueArray","customEvent","paramName","parameterPrefix","defaultLayout","displayOption","GetPagesNotSupportedError","_pageName","SetPageNotSupportedError","RenderNotSupportedError","getVisualDescriptor","embeddedVisuals","embeddedVisual","pageVisual","visualNotFoundError","filtersLevel","getFiltersLevelUrl","exportData","exportDataType","exportDataRequestBody","setSlicerState","getSlicerState","defaultAddTrackingProperties","defaultGetTrackingProperties","defaultIsErrorMessage","receiveWindow","pendingRequestPromises","windowMessageHandler","onMessageReceived","messagePropertyName","createDeferred","sendResponse","__webpack_exports__","FilterBuilders_1","powerbi","powerBISDKGlobalServiceInstanceName","circles","rfdcCircles","refsNew","constructorHandlers","cloneArray","cloneProto","o2","_subscribe","hasError","thrownError","ObjectUnsubscribedError","InnerSubscriber","Subscriber","notifyError","_complete","Notification","nextOrObserver","toObservable","createNext","undefinedValueNotification","createError","createComplete","completeNotification","_isScalar","observerOrNext","sink","toSubscriber","rxSubscriberSymbol","emptyObserver","useDeprecatedSynchronousErrorHandling","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","canReportError","promiseCtor","getPromiseCtor","Symbol_observable","operations","pipeFromArray","hostReportError","windowTime","_infiniteTimeWindow","_bufferSize","_windowTime","nextInfiniteTimeWindow","nextTimeWindow","ReplayEvent","_getNow","_trimBufferThenGetEvents","ObserveOnSubscriber","eventsCount","spliceCount","SubjectSubscriber","AnonymousSubject","subscriberIndex","destinationOrNext","SafeSubscriber","_parentOrParents","_parentSubscriber","__tryOrSetError","__tryOrUnsub","wrappedComplete","UnsubscriptionError","UnsubscriptionErrorImpl","_subscriptions","flattenUnsubscriptionErrors","subscriptions","subscriptionIndex","errs","_enable_super_gross_mode_that_will_cause_bad_things","ConnectableObservable","subjectFactory","_refCount","_isComplete","getSubject","_connection","ConnectableSubscriber","refCount","higherOrderRefCount","connectableObservableDescriptor","connectableProto","connectable","isScheduler","CombineLatestSubscriber","_tryResultSelector","concatAll","mergeAll","observableFactory","emptyScheduled","forkJoinInternal","emitted","isInteropObservable","scheduleObservable","schedulePromise","scheduleArray","Symbol_iterator","scheduleIterable","subscribeTo","subscribeToArray","setupSubscription","isEventTarget","isJQueryStyleEventEmitter","isNodeStyleEventEmitter","concurrent","dueTime","periodOrScheduler","CatchOperator","caught","CatchSubscriber","innerSubscriber","innerSubscription","DebounceTimeOperator","DebounceTimeSubscriber","debouncedSubscription","clearDebounce","dispatchNext","debouncedNext","defaultIfEmpty","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","keySelector","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","FilterOperator","FilterSubscriber","FinallyOperator","FinallySubscriber","hasDefaultValue","throwIfEmpty","EmptyError","MapOperator","MapSubscriber","mapTo","MapToOperator","MapToSubscriber","MergeMapOperator","MergeMapSubscriber","hasCompleted","_tryNext","_innerSub","ish","subjectOrSubjectFactory","MulticastOperator","observeOn","ObserveOnOperator","scheduleMessage","ObserveOnMessage","RefCountOperator","refCounter","RefCountSubscriber","sharedConnection","RetryOperator","RetrySubscriber","hasSeed","ScanOperator","ScanSubscriber","_seed","shareSubjectFactory","configOrBufferSize","shareReplayOperator","useRefCount","SkipOperator","SkipSubscriber","SkipWhileOperator","SkipWhileSubscriber","skipping","tryCallPredicate","SwitchMapOperator","SwitchMapSubscriber","TakeOperator","ArgumentOutOfRangeError","TakeSubscriber","takeLast","TakeLastOperator","TakeLastSubscriber","ring","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","AsyncAction","recycleAsyncId","requestAsyncId","_execute","errored","Scheduler","SchedulerAction","AsyncScheduler","QueueScheduler","QueueAction","getSymbolIterator","rxSubscriber","ArgumentOutOfRangeErrorImpl","EmptyErrorImpl","ObjectUnsubscribedErrorImpl","obs","subscribeToObservable","subscribeToPromise","subscribeToIterable","outerSubscriber","webpackContext","webpackContextResolve","OverloadYield","AsyncGenerator","front","overloaded","settle","_OverloadYield","AsyncFromSyncIterator","AsyncFromSyncIteratorContinuation","thr","asyncGeneratorStep","_throw","stateChangeExpr","_onStart","triggerMicrotask","AnimationGroupPlayer","_players","destroyCount","startCount","timeAtPosition","longestPlayer","longestSoFar","ID_DELIMITER","addAriaReferencedId","getAriaReferenceIds","existingId","removeAriaReferencedId","filteredIds","ListKeyManager","_activeItemIndex","_activeItem","_letterKeyStream","_typeaheadSubscription","_vertical","_allowedModifierKeys","_homeAndEnd","_pageUpAndDown","_skipPredicateFn","_pressedLetters","tabOut","QueryList","_itemChangesSubscription","skipPredicate","withWrap","shouldWrap","withVerticalOrientation","withHorizontalOrientation","_horizontal","withAllowedModifierKeys","withTypeAhead","debounceInterval","_getItemsArray","setActiveItem","cancelTypeahead","withHomeAndEnd","withPageUpDown","previousActiveItem","updateActiveItem","onKeydown","isModifierAllowed","DOWN_ARROW","setNextItemActive","UP_ARROW","setPreviousItemActive","RIGHT_ARROW","LEFT_ARROW","HOME","setFirstItemActive","END","setLastItemActive","_setActiveItemByIndex","hasModifierKey","toLocaleUpperCase","NINE","activeItemIndex","isTyping","_setActiveItemByDelta","itemArray","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","ActiveDescendantKeyManager","setInactiveStyles","setActiveStyles","isFakeMousedownFromScreenReader","isFakeTouchstartFromScreenReader","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","_platform","_breakpointSubscription","inject","BreakpointObserver","_hasCheckedHighContrastMode","_applyBodyHighContrastModeCssClasses","getHighContrastMode","testElement","documentWindow","computedColor","bodyClasses","DIR_DOCUMENT","DIR_DOCUMENT_FACTORY","RTL_LOCALE_PATTERN","Directionality","_resolveDirectionality","BidiModule","coerceBooleanProperty","coerceArray","coerceCssPixelValue","coerceElement","elementOrRef","ElementRef","coerceStringArray","sourceValues","trimmedString","SHIFT","CONTROL","ALT","META","MAC_META","modifiers","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_nonce","_matchMedia","noopMatchMedia","BLINK","createEmptyStyleRule","CSP_NONCE","_mediaMatcher","_queries","_destroySubject","isMatched","splitQueries","mediaQuery","_registerQuery","mql","stateObservable","breakpointStates","breakpoints","queries","TakeWhileOperator","inclusive","TakeWhileSubscriber","nextOrComplete","predicateResult","scrollBehaviorSupported","supportsScrollBehavior","BlockScrollStrategy","_viewportRuler","_previousHTMLStyles","_isEnabled","_canBeEnabled","_previousScrollPosition","getViewportScrollPosition","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","getViewportSize","CloseScrollStrategy","_scrollDispatcher","_scrollSubscription","_detach","_overlayRef","hasAttached","scrolled","overlayElement","getElementRef","_initialScrollPosition","NoopScrollStrategy","isElementScrolledOutsideView","scrollContainers","containerBounds","isElementClippedByScrolling","scrollContainerRect","RepositionScrollStrategy","scrollThrottle","autoClose","overlayRect","ScrollStrategyOptions","reposition","scrollStrategy","panelClass","disposeOnNavigation","configKeys","ConnectedOverlayPositionChange","connectionPair","scrollableViewProperties","BaseOverlayDispatcher","_attachedOverlays","OverlayKeyboardDispatcher","_keydownListener","_keydownEvents","keydownEvents","_isAttached","OverlayOutsideClickDispatcher","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_getEventTarget","_clickListener","_outsidePointerEvents","IOS","_cursorOriginalValue","i1$1","OverlayContainer","_containerElement","_createContainer","containerClass","_isTestEnvironment","oppositePlatformContainers","OverlayRef","_portalOutlet","_host","_pane","_keyboardDispatcher","_outsideClickDispatcher","_animationsDisabled","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","_backdropTransitionendHandler","_disposeBackdrop","_scrollStrategy","_positionStrategy","backdropElement","_previousHostParent","attachResult","_updateStackingOrder","_updateElementSize","_updateElementDirection","onStable","_togglePointerEvents","_attachBackdrop","_toggleClasses","detachBackdrop","detachmentResult","_detachContentWhenStable","isAttached","_disposeScrollStrategy","detachments","updatePositionStrategy","sizeConfig","setDirection","addPanelClass","removePanelClass","getDirection","updateScrollStrategy","enablePointer","showingClass","backdropToDetach","_backdropTimeout","isAdd","backdrop","boundingBoxClass","cssUnitPattern","FlexibleConnectedPositionStrategy","_preferredPositions","connectedTo","_overlayContainer","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_positionChanges","_resizeSubscription","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","setOrigin","_validatePositions","_boundingBox","_isInitialRender","_lastPosition","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","_containerRect","originRect","flexibleFits","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestScore","_previousPushAmount","extendStyles","withScrollableContainers","scrollables","withViewportMargin","withFlexibleDimensions","flexibleDimensions","withGrowAfterOpen","growAfterOpen","withPush","canPush","withLockedPosition","_origin","withDefaultOffsetX","withDefaultOffsetY","withTransformOriginOn","_transformOriginSelector","_isRtl","overlayStartX","overlayStartY","rawOverlayRect","getRoundedBoundingClientRect","_getOffset","topOverflow","bottomOverflow","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","getPixelValue","_pushOverlayOnScreen","overflowRight","overflowBottom","overflowTop","overflowLeft","pushX","pushY","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","xOrigin","yOrigin","smallestDistanceToViewportEdge","_hasExactPosition","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","horizontalStyleProperty","originBounds","overlayBounds","scrollContainerBounds","isOriginClipped","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","overflows","currentOverflow","clientRect","GlobalPositionStrategy","_cssPosition","_topOffset","_bottomOffset","_alignItems","_xPosition","_xOffset","centerHorizontally","centerVertically","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","OverlayPositionBuilder","nextUniqueId","scrollStrategies","_componentFactoryResolver","_positionBuilder","_directionality","_animationsModuleType","_createHostElement","_createPaneElement","portalOutlet","_createPortalOutlet","overlayConfig","_appRef","ApplicationRef","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","exportAs","CdkConnectedOverlay","_updatePositionStrategy","_hasBackdrop","_lockPosition","_flexibleDimensions","_push","_overlay","scrollStrategyFactory","_dir","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","viewportMargin","disableClose","positionChange","overlayKeydown","overlayOutsideClick","_templatePortal","TemplatePortal","_scrollStrategyFactory","_attachOverlay","_detachOverlay","_createOverlay","_buildConfig","_createPositionStrategy","_getFlexibleConnectedPositionStrategyOrigin","transformOriginSelector","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY","ScrollingModule","hasV8BreakIterator","v8BreakIterator","supportedInputTypes","_platformId","EDGE","TRIDENT","FIREFOX","ANDROID","SAFARI","candidateInputTypes","getSupportedInputTypes","featureTestInput","supportsPassiveEvents","normalizePassiveListenerOptions","supportsPassiveEventListeners","scrollToFunction","__karma__","jasmine","jest","Mocha","Portal","_attachedHost","setAttachedHost","projectableNodes","DomPortal","BasePortalOutlet","attachDomPortal","_attachedPortal","attachComponentPortal","attachTemplatePortal","_invokeDisposeFn","setDisposeFn","_disposeFn","outletElement","_defaultInjector","anchorNode","attachView","viewCount","detachView","_getComponentRootNode","viewRef","CdkPortal","CdkPortalOutlet","_viewContainerRef","_getRootNode","attachedRef","_attachedRef","ELEMENT_NODE","_parentInjector","_customTokens","notFoundValue","AnimationFrameScheduler","AnimationFrameAction","nextHandle","activeHandles","findAndClearHandle","Immediate","AsapScheduler","AsapAction","AuditOperator","durationSelector","AuditSubscriber","clearThrottle","auditTime","audit","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","elementScrolled","scrollableReference","auditTimeInMs","_addGlobalListener","_removeGlobalListener","ancestorScrolled","elementOrElementRef","ancestors","getAncestorScrollContainers","scrollingContainers","_subscription","_scrollableContainsElement","_getWindow","scrollableElement","ViewportRuler","_change","_changeListener","_viewportSize","_updateViewportSize","getViewportRect","throttleTime","CdkScrollableModule","_DOM","getDOM","setRootDomAdapter","DomAdapter","PlatformLocation","historyGo","BrowserPlatformLocation","LOCATION_INITIALIZED","getBaseHrefFromDOM","getGlobalEventTarget","onHashChange","joinWithSlash","slashes","stripTrailingSlash","pathEndIdx","normalizeQueryParams","LocationStrategy","PathLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","includeHash","externalUrl","_urlChangeListeners","_urlChangeSubscription","_locationStrategy","_basePath","_stripOrigin","_stripIndexHtml","isCurrentPathEqualTo","_stripBasePath","strippedUrl","_notifyUrlChangeListeners","onUrlChange","fnIndex","onNext","onThrow","onReturn","createLocation","ɵɵinject","CURRENCIES_EN","ADP","AFN","ALL","AMD","AOA","ARS","AUD","AZN","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BWP","BYN","BYR","BZD","CAD","CHF","CLF","CLP","CNY","COP","CRC","CUC","CUP","CZK","DJF","DKK","DOP","EGP","ESP","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GNF","GTQ","GYD","HKD","HNL","HRK","HUF","IDR","ILS","INR","IQD","IRR","ISK","ITL","JMD","JOD","JPY","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LTL","LUF","LVL","LYD","MGA","MGF","MMK","MNT","MRO","MUR","MXN","MYR","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PHP","PKR","PLN","PYG","RON","RSD","RUB","RWF","SBD","SEK","SGD","SHP","SLE","SLL","SOS","SRD","SSP","STD","STN","SYP","THB","TMM","TND","TOP","TRL","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYI","UYU","UYW","UZS","VEF","VND","VUV","XAF","XCD","XOF","XPF","XXX","YER","ZAR","ZMK","ZMW","ZWD","NumberFormatStyle","Decimal","Currency","Scientific","Plural","Zero","One","Two","Few","Many","FormStyle","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Medium","Long","Full","NumberSymbol","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLocaleDateFormat","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","getLocaleTimeFormat","TimeFormat","getLocaleDateTimeFormat","dateTimeFormatData","getLocaleNumberSymbol","NumberSymbols","getLocaleNumberFormat","NumberFormats","getLocalePluralCase","ɵgetLocalePluralCase","checkFullData","ExtraData","LocaleId","extractTime","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Eras","parsedNb","isoStringToDate","tzHour","tzMin","dateSetter","timeSetter","getNamedFormat","dateTimezoneOffset","timezoneToOffset","convertTimezoneToLocal","reverseValue","addDateMinutes","DATE_FORMATS","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","localeId","getLocaleId","shortTime","shortDate","formatDateTime","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","padNumber","negWrap","strNum","getDatePart","formatFractionalSeconds","localeMinus","getDateTranslation","getLocaleMonthNames","formStyle","MonthsFormat","MonthsStandalone","getLocaleDayNames","DaysFormat","DaysStandalone","currentHours","currentMinutes","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","getLocaleDayPeriods","amPm","DayPeriodsFormat","DayPeriodsStandalone","getLocaleEraNames","erasData","JANUARY","getThursdayThisWeek","datetime","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","firstThurs","getFirstThursdayOfYear","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","MAX_DIGITS","DECIMAL_SEP","ZERO_CHAR","PATTERN_SEP","GROUP_SEP","DIGIT_CHAR","PERCENT_CHAR","formatNumberToLocaleString","groupSymbol","decimalSymbol","digitsInfo","formattedText","parsedNumber","parseNumber","integerLen","toPercent","fractionLen","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","roundNumber","fractionSize","roundAt","digit","dropTrailingZeros","carry","lgSize","gSize","negPre","negSuf","posPre","posSuf","parseNumberFormat","patternParts","positiveParts","fraction","trunkLen","NgLocalization","NgLocaleLocalization","getPluralCategory","parseCookieValue","cookieStr","eqIndex","cookieName","WS_REGEXP","EMPTY_ARRAY","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","initialClasses","ngClass","rawClass","ngDoCheck","_updateState","_applyStateDiff","nextEnabled","stateEntry","_toggleClass","NgForOfContext","ngForOf","odd","NgForOf","_ngForOf","_ngForOfDirty","ngForTrackBy","_trackByFn","_viewContainer","_differs","_differ","ngForTemplate","_applyChanges","forEachOperation","adjustedPreviousIndex","previousIndex","applyViewChange","ilen","forEachIdentityChange","ngTemplateContextGuard","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","ngIfThen","assertTemplate","ngIfElse","ɵstringify","SwitchView","_templateRef","_created","enforceState","NgSwitch","_defaultViews","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_matchCase","NgSwitchCase","_view","ngSwitchCase","NgSwitchDefault","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","RendererStyleFlags2","DashCase","forEachRemovedItem","forEachAddedItem","forEachChangedItem","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","invalidPipeArgumentError","SubscribableStrategy","createSubscription","updateLatestValue","untracked","PromiseStrategy","_promiseStrategy","_subscribableStrategy","AsyncPipe","_latestValue","_obj","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","ɵpipe","unicodeWordMatch","TitleCasePipe","UpperCasePipe","DATE_PIPE_DEFAULT_TIMEZONE","DATE_PIPE_DEFAULT_OPTIONS","defaultTimezone","_INTERPOLATION_REGEXP","I18nPluralPipe","_localization","pluralMap","cases","ngLocalization","KeyValuePipe","differs","compareFn","differ","differChanges","compareFnChanged","makeKeyValuePair","keyValueA","keyValueB","aString","bString","DecimalPipe","isValue","strToNumber","PercentPipe","CurrencyPipe","_defaultCurrencyCode","currencyCode","getCurrencySymbol","getLocaleCurrencies","Currencies","symbolNarrow","formatCurrency","getNumberOfCurrencyDigits","DEFAULT_CURRENCY_CODE","SlicePipe","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","ViewportScroller","ɵɵdefineInjectable","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","scrollToPosition","scrollToAnchor","elSelected","findAnchorFromDocument","documentResult","createTreeWalker","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","shadowRoot","scrollToElement","setHistoryScrollRestoration","scrollRestoration","XhrFactory","HttpHandler","HttpBackend","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","setHeaderEntries","lcName","applyUpdate","toDelete","headerValues","HttpUrlEncodingCodec","standardEncoding","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","valueToString","cloneFrom","paramParser","rawParams","eqIdx","appendAll","eKey","HttpContext","isFormData","fourth","mightHaveBody","urlWithParams","qIdx","serializeBody","isUrlSearchParams","detectContentTypeHeader","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","HttpResponseBase","defaultStatus","defaultStatusText","HttpHeaderResponse","addBody","events$","res$","jsonp","callbackParam","interceptorChainEndFn","finalHandlerFn","adaptLegacyInterceptorToChain","chainTailFn","initialRequest","downstreamRequest","HTTP_INTERCEPTOR_FNS","HTTP_ROOT_INTERCEPTOR_FNS","legacyInterceptorFnFactory","pendingTasks","ɵInitialRenderPendingTasks","HttpInterceptorHandler","backend","dedupedInterceptorFns","nextSequencedFn","interceptorFn","chainedInterceptorFn","XSSI_PREFIX","HttpXhrBackend","xhrFactory","ɵloadImpl","detectedType","reqBody","headerResponse","partialFromXhr","getResponseUrl","originalBody","sentHeaders","onDownProgress","progressEvent","onUpProgress","XSRF_ENABLED","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","lastCookieString","parseCount","cookieString","ɵparseCookieValue","xsrfInterceptorFn","lcUrl","HttpFeatureKind","Interceptors","LegacyInterceptors","CustomXsrfConfiguration","NoXsrfProtection","JsonpSupport","RequestsMadeViaParent","Fetch","provideHttpClient","ɵproviders","makeEnvironmentProviders","LEGACY_INTERCEPTOR_FN","withInterceptorsFromDi","makeHttpFeature","ɵkind","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","__forward_ref__","forwardRefFn","resolveForwardRef","isForwardRef","isEnvironmentProviders","XSS_SECURITY_URL","RuntimeError","formatRuntimeError","renderStringify","throwProviderNotFoundError","injectorName","assertDefined","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","isInjectable","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","Host","Self","SkipSelf","_injectImplementation","setInjectImplementation","impl","injectRootLimpMode","injectableDef","_desc","ngMetadataName","__NG_ELEMENT_ID__","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","getInjectImplementation","convertToBitFlags","skipSelf","injectArgs","getInjectFlag","attachInjectFlag","noSideEffects","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","Emulated","ShadowDom","EMPTY_OBJ","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","NG_ENV_ID","__NG_ENV_ID__","classIndexOf","classToSearch","startingIndex","setUpAttributes","attrVal","isAnimationProp","isNameOnlyAttributeMarker","mergeHostAttrs","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isImplicitAttrsSection","isInlineTemplate","tNode","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","stringifyCSSSelector","valueOrMarker","ɵɵdefineComponent","componentDefinition","baseDef","getNgDirectiveDef","onPush","directiveDefs","pipeDefs","getStandaloneInjector","signals","schemas","tView","initFeatures","extractDefListOrFactory","getComponentId","componentDef","hashSelectors","ɵɵsetComponentScope","extractDirectiveDef","getComponentDef","getDirectiveDef","nonNull","ɵɵdefineNgModule","declarations","transitiveCompileScopes","invertObject","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","directiveDefinition","ɵɵdefinePipe","pipeDef","getPipeDef$1","isStandalone","getNgModuleDef","throwNotFound","ngModuleDef","declaredInputs","providersResolver","inputTransforms","inputConfig","setInput","findHostDirectiveDefs","hostDirectives","defExtractor","HOST","TVIEW","FLAGS","PARENT","NEXT","DESCENDANT_VIEWS_TO_REFRESH","T_HOST","CLEANUP","CONTEXT","INJECTOR$1","ENVIRONMENT","RENDERER","CHILD_HEAD","CHILD_TAIL","DECLARATION_VIEW","DECLARATION_COMPONENT_VIEW","DECLARATION_LCONTAINER","PREORDER_HOOK_FLAGS","QUERIES","EMBEDDED_VIEW_INJECTOR","ON_DESTROY_HOOKS","HYDRATION","REACTIVE_TEMPLATE_CONSUMER","REACTIVE_HOST_BINDING_CONSUMER","HEADER_OFFSET","HAS_TRANSPLANTED_VIEWS","MOVED_VIEWS","CONTAINER_HEADER_OFFSET","isLView","isLContainer","isContentQueryHost","isComponentHost","componentOffset","isDirectiveHost","isComponentDef","isRootView","getFactoryDef","activeConsumer","inNotificationPhase","setActiveConsumer","consumer","REACTIVE_NODE","producerNode","producerLastReadVersion","producerIndexOfThis","nextProducerIndex","liveConsumerNode","liveConsumerIndexOfThis","consumerAllowSignalWrites","consumerIsAlwaysLive","producerMustRecompute","producerRecomputeValue","consumerMarkedDirty","producerUpdateValueVersion","consumerIsLive","consumerPollProducersForChange","consumerMarkDirty","producerNotifyConsumers","consumerBeforeComputation","consumerAfterComputation","prevConsumer","producerRemoveLiveConsumerAtIndex","assertConsumerNode","producer","seenVersion","consumerDestroy","assertProducerNode","idxProducer","throwInvalidWriteToSignalErrorFn","nonReactiveReadsFn","NOOP_CLEANUP_FN","WATCH_NODE","cleanupFn","SimpleChange","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","setSimpleChangesStore","SIMPLE_CHANGES_STORE","previousChange","ngInherit","profiler","hookOrListener","SVG_NAMESPACE","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","getComponentLViewByIndex","nodeIndex","slotValue","getConstant","resetPreOrderHookFlags","markViewForRefresh","updateViewsToRefresh","clearViewRefreshFlag","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","skipHydrationRootTNode","getBindingsEnabled","isInSkipHydrationBlock$1","ɵɵenableBindings","ɵɵdisableBindings","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","ɵɵresetView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","setCurrentTNode","isCurrentTNodeParent","setCurrentTNodeAsNotParent","getBindingRoot","bindingRootIndex","bindingStartIndex","getBindingIndex","bindingIndex","nextBindingIndex","incrementBindingIndex","setBindingRootForHostBindings","currentDirectiveIndex","setCurrentDirectiveIndex","getCurrentDirectiveDef","tData","getCurrentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newView","newLFrame","inI18n","currentLFrame","childLFrame","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","ɵɵnamespaceHTML","namespaceHTMLInternal","_wasLastNodeCreated","wasLastNodeCreated","lastNodeWasCreated","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","ngAfterContentInit","ngAfterContentChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","callHookInternal","directive","isInitHook","NO_PARENT_INJECTOR","NodeInjectorFactory","isViewProvider","injectImplementation","canSeeViewProviders","injectImpl","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","BLOOM_MASK","BLOOM_BUCKET_BITS","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","parentData","declarationViewOffset","lViewCursor","getTNodeFromLView","diPublicInInjector","bloomAdd","bloomHash","notFoundValueOrThrow","lookupTokenUsingModuleInjector","moduleInjector","previousInjectImplementation","getOrCreateInjectable","embeddedInjectorValue","lookupTokenUsingEmbeddedInjector","currentLView","nodeInjectorValue","lookupTokenUsingNodeInjector","embeddedViewInjector","embeddedViewInjectorValue","bloomHashBitOrFactory","tokenId","createNodeInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","dirDef","isFactory","throwCyclicDependencyError","depPath","stringifyForError","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","ɵɵgetInheritedFactory","ownConstructor","ownFactory","getFactoryOf","objectPrototype","tViewType","ɵɵinjectAttribute","attrNameToInject","injectAttributeImpl","attrsLength","PARAMETERS","makeParamDecorator","parentClass","metaCtor","makeMetadataCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","unusedKey","annotationCls","deepForEach","addToArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","keyValueArrayGet","_arrayIndexOfSorted","hasInSkipHydrationBlockFlag","Important","COMMENT_DISALLOWED","COMMENT_DELIMITER","COMMENT_DELIMITER_ESCAPED","TRACKED_LVIEWS","uniqueIdCounter","MONKEY_PATCH_KEY_NAME","attachPatchData","registerLView","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","getLViewParent","getFirstLContainer","getNearestLContainer","getNextLContainer","applyToElementOrContainer","lNodeToHandle","beforeNode","lContainer","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","nativeParent","nativeParentNode","nativeRemoveChild","applyContainer","parentRElement","applyView","createCommentNode","escapeCommentText","createElementNode","detachMovedView","declarationContainer","movedViews","declarationViewIndex","indexInContainer","viewToDetach","declarationLContainer","removedLView","removeViewFromDOM","lQueries","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","lCleanup","targetIdx","destroyHooksFn","unregisterLView","getParentRElement","getClosestRElement","nativeAppendOrInsertBefore","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","_processI18nInsertBefore","policy$1","getInsertInFrontOfRNodeWithNoI18n","childRNode","childTNode","parentRNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","nodeToProject","projectedComponentLView","writeDirectClass","setupStaticAttributes","mergedAttrs","writeDirectStyle","trustedHTMLFromString","getPolicy$1","trustedTypes","createPolicy","createScript","createScriptURL","setDocument","getPolicy","trustedHTMLFromStringBypass","trustedScriptURLFromStringBypass","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","getTypeName","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","actualType","getSanitizationBypassType","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","DOMParserHelper","inertDocumentHelper","getInertBodyElement","InertDocumentHelper","defaultDoc","inertDocument","createHTMLDocument","templateEl","SAFE_URL_PATTERN","_sanitizeUrl","tagSet","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","sanitizeChildren","traverseContent","startElement","TEXT_NODE","endElement","checkClobberedElement","elAttrs","elAttr","encodeEntities","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","inertBodyElement","getInertBodyHelper","isDOMParserAvailable","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","SecurityContext","STYLE","RESOURCE_URL","ɵɵsanitizeHtml","getSanitizer","sanitize","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","ɵɵsanitizeUrlOrResourceUrl","getUrlSanitizer","ENVIRONMENT_INITIALIZER","INJECTOR","INJECTOR_DEF_TYPES","NullInjector","importProvidersFrom","internalImportProvidersFrom","ɵfromNgModule","checkForStandaloneCmp","providersOut","dedup","injectorTypesWithProviders","collectProviders","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","deepForEachProvider","defType","injDef","cmpDef","importTypesWithProviders","imported","defProviders","injectorType","USE_VALUE$1","isValueProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR","getNullInjector","EnvironmentInjector","R3Injector","scopes","_ngOnDestroyHooks","_onDestroyHooks","forEachSingleProvider","processProvider","makeRecord","injectorDefTypes","assertNotDestroyed","onDestroyHooks","removeOnDestroy","previousInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","catchInjectorError","injectorErrorName","tokenPath","resolveInjectorInitializers","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","destroyCBIdx","getUndecoratedInjectableFactory","paramLength","inheritedInjectableDef","getInheritedInjectableDef","ngModuleType","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","APP_ID","DEFAULT_APP_ID","PLATFORM_INITIALIZER","_retrieveHydrationInfoImpl","retrieveHydrationInfo","ComponentRef$1","ComponentFactory$1","_NullComponentFactoryResolver","noComponentFactoryError","ComponentFactoryResolver$1","injectElementRef","createElementRef","unwrapElementRef","Renderer2","injectRenderer2","Sanitizer","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","additionalProviders","createInjectorWithoutInjectorInstances","getOriginalError","_console","_findOriginalError","_wrapInTimeout","EventEmitter_","__isAsync","nextFn","errorFn","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","Zone","assertZonePatched","_nesting","_outer","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","getNativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","forkInnerZoneWithAngularBehavior","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","isAngularZone","onInvokeTask","applyThis","applyArgs","shouldBeIgnoredByZone","__ignore_ng_zone__","invokeTask","onEnter","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","assertInAngularZone","assertNotInAngularZone","runTask","EMPTY_PAYLOAD","runGuarded","NoopNgZone","ZONE_IS_STABLE_OBSERVABLE","isStableFactory","_stable","isCurrentlyStable","stableSub","unstableSub","merge$1","ɵɵresolveWindow","ɵɵresolveDocument","maybeUnwrapFn","AfterRenderEventManager","renderDepth","validateBegin","markViewDirty","PRESERVE_HOST_CONTENT","currentConsumer","getReactiveLViewConsumer","slot","getOrCreateCurrentLViewConsumer","commitLViewConsumerIfHasProducers","createLViewConsumer","REACTIVE_LVIEW_CONSUMER_NODE","NO_CHANGE","ɵɵadvance","selectIndexInternal","checkNoChangesMode","ɵɵdirectiveInject","ɵɵinvalidFactory","createLView","tHostNode","hydrationInfo","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","localNames","initialInputs","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","isInI18nBlock","getCurrentParentTNode","allocExpando","numSlotsToAlloc","allocIdx","executeTemplate","templateFn","prevSelectedIndex","isUpdatePhase","effectiveConsumer","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","hostTNode","getOrCreateComponentTView","lViewFlags","componentView","addToViewTree","setInputsFromAttrs","invokeDirectivesHostBindings","saveResolvedLocalsInData","viewData","localRefExtractor","localIndex","incompleteFirstPass","createTView","constsOrFactory","ssrId","initialViewLength","createViewBlueprint","expandoStartIndex","hostBindingOpCodes","firstUpdatePass","staticViewQueries","staticContentQueries","directiveRegistry","pipeRegistry","_applyRootElementTransformImpl","generatePropertyAliases","aliasMap","propertyAliases","hostDirectiveAliasMap","internalName","addPropertyAlias","elementPropertyInternal","nativeOnly","dataValue","inputData","setInputsForProperty","markDirtyIfOnPush","viewIndex","childComponentLView","mapPropName","resolveDirectives","localRefs","exportsMap","findDirectiveDefMatches","hostDirectiveDefs","hostDirectiveMatches","markAsComponentHost","initializeDirectives","cacheMatchingLocalNames","initTNodeFlags","numberOfDirectives","preOrderHooksFound","preOrderCheckHooksFound","directiveIdx","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","initializeInputAndOutputAliases","hostDirectiveDefinitionMap","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","aliasData","aliasedOutputs","generateInitialInputs","elementIndex","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","elementAttributeInternal","setElementAttribute","initialInputData","writeToDirectiveInput","inputsToStore","createLContainer","hostNative","refreshContentQueries","directiveDefIdx","executeViewQueryFn","viewQueryFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","loadComponentRenderer","currentDef","unwrapLView","textBindingInternal","updateTextNode","hostLView","componentHostIdx","componentTView","syncViewWithBlueprint","hostRNode","renderView","renderChildComponents","EffectManager","effectFn","destroyRef","allowSignalWrites","registerOnCleanup","unregisterOnDestroy","computeStaticStyling","writeToHost","collectNativeNodes","lNode","collectNativeNodesInLContainer","nodesInSlot","lViewInAContainer","lViewFirstChildTNode","detectChangesInternal","notifyErrorHandler","afterRenderEventManager","refreshView","effectManager","setBindingIndex","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","detectChangesInEmbeddedViews","processHostBindingOpCodes","opCode","bindingRootIndx","hostBindingFn","detectChangesInChildComponents","detectChangesInView","detectChangesInComponent","viewAttachedToChangeDetector","ViewRef$1","_cdRefInjectingView","_attachedToViewContainer","viewRefs","storeLViewOnDestroy","onDestroyCallback","reattach","checkNoChanges","attachToViewContainerRef","detachFromAppRef","detachViewFromDOM","attachToAppRef","RootViewRef","ComponentFactoryResolver","ComponentFactory","toRefArray","nonMinified","templateName","ChainedInjector","parentInjector","refArray","stringifyCSSSelectorList","selectorList","isBoundToModule","rootSelectorOrNode","environmentInjector","realEnvironmentInjector","rootViewInjector","hostRenderer","locateHostElement","elementOrSelector","applyRootElementTransform","getNamespace","rootFlags","rootTView","rootLView","tElementNode","rootComponentDef","rootDirectives","createRootComponentTNode","createRootComponentView","applyRootComponentStyling","viewRenderer","setRootNodeAttributes","extractAttrsAndClassesFromSelector","projectNodes","nodesforSlot","createRootComponent","hostFeatures","rootTNode","LifecycleHooksFeature","ComponentRef","_rootLView","previousInputValues","ɵɵInheritDefinitionFeature","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","defData","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","ɵɵInputTransformsFeature","isListLikeIterable","isJsObject","updateBinding","getBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","bindingUpdated4","exp4","ɵɵattribute","interpolation1","interpolation2","ɵɵattributeInterpolate2","interpolatedValue","ɵɵtemplate","attrsIndex","localRefsIndex","templateFirstCreatePass","tViewConsts","embeddedTView","_locateOrCreateContainerAnchor","createContainerAnchorImpl","ɵɵreference","getContextLView","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","ɵɵelementStart","elementStartFirstCreatePass","elementStart","_locateOrCreateElementNode","hasDirectives","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","isSkipHydrationRootTNode","leaveSkipHydrationBlock","decreaseElementDepthCount","elementEnd","hasClassInput","hasStyleInput","ɵɵelement","getNamespace$1","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","_locateOrCreateElementContainerNode","ɵɵelementContainerEnd","ɵɵelementContainer","ɵɵgetCurrentView","isSubscribable","ɵɵlistener","listenerFn","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","idxOrTargetGetter","existingListener","findExistingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","executeListenerWithErrorHandling","wrapWithPreventDefault","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","ɵɵnextContext","nextContextImpl","walkUpViews","nestingLevel","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","projectionHeads","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","applyProjection","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate2","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","markDuplicates","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","getLastParsedKey","getLastParsedValue","parseClassNameNext","consumeClassToken","consumeWhitespace","parseStyleNext","consumeStyleKey","consumeSeparator","consumeStyleValue","ch1","ch2","ch3","lastChIndex","consumeQuotedText","resetParserState","quoteCharCode","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","styleStringParser","parseStyle","styleKeyValueArraySet","ɵɵclassMap","checkStylingMap","classKeyValueArraySet","classStringParser","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldKey","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","isHostBindings","wrapInStaticStylingKey","stylingKey","hostDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","setTStylingRangePrev","markDuplicateOfResidualStyling","currentDirective","desiredMarker","currentMarker","stringKey","tRange","higherPriorityValue","getTStylingRangeNextDuplicate","findStylingValue","isStylingValuePresent","getTStylingRangePrevDuplicate","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵtext","textNative","_locateOrCreateTextNode","ɵɵtextInterpolate","ɵɵtextInterpolate1","interpolated","ɵɵtextInterpolate2","ɵɵtextInterpolate3","interpolation3","ɵɵtextInterpolate4","interpolation4","ɵɵtextInterpolate6","v5","interpolation6","ɵɵclassMapInterpolate1","ɵɵstyleMapInterpolate1","ɵɵstyleMap","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","LOCALE_DATA","findLocaleData","normalizedLocale","getLocaleData","LocaleDataIndex","PluralCase","ng","FirstDayOfWeek","WeekendRange","CurrencyCode","CurrencySymbol","CurrencyName","DEFAULT_LOCALE_ID","LOCALE_ID$1","resolveProvider","lInjectablesBlueprint","providerFactory","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","multiFactory","factoryFn","componentProviders","multiFactoryAdd","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","componentCount","multiProviders","ɵɵProvidersFeature","viewProviders","processProvidersFn","NgModuleRef$1","NgModuleFactory$1","createNgModule","NgModuleRef","_bootstrapComponents","destroyCbs","_r3Injector","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","debugName","runEnvironmentInitializers","createEnvironmentInjector","StandaloneService","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","ɵɵStandaloneFeature","ɵɵpureFunction0","slotOffset","pureFn","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","pureFunction3Internal","ɵɵpureFunction4","pureFunction4Internal","ɵɵpureFunction5","exp5","ɵɵpureFunction8","exp6","exp7","exp8","ɵɵpureFunctionV","exps","pureFunctionVInternal","bindingRoot","getPureFunctionReturnValue","returnValueIndex","lastReturnValue","ɵɵpipe","pipeName","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","isPure","ɵɵpipeBind2","ɵɵpipeBind3","ɵɵpipeBind4","symbolIterator","_results","_changes","_emitDistinctChangesOnly","_changesDetected","resultsTree","identityAccessor","newResultFlat","arrayEquals","notifyOnChanges","setDirty","addLViewToLContainer","addToDOM","insertView","containerLength","trackMovedView","addViewToDOM","parentNativeNode","TemplateRef","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","createEmbeddedViewImpl","embeddedLView","createAndRenderEmbeddedLView","declarationLView","templateTNode","declarationViewLQueries","createTemplateRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","indexOrOptions","insertImpl","componentFactoryOrType","isComponentFactory","ngModuleRef","contextInjector","skipDomInsertion","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","getOrCreateViewRefs","viewRefsArr","detachedView","_locateOrCreateAnchorNode","createAnchorNode","commentNode","insertAnchorNode","nativeNextSibling","LQuery_","queryList","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","ɵɵqueryRefresh","isCreationMode","ɵɵviewQuery","createTQuery","createLQuery","ɵɵcontentQuery","saveContentQueryAndDirectiveIndex","tViewContentQueries","ɵɵloadQuery","loadQueryInternal","storeCleanupWithContext","ɵɵtemplateRefExtractor","isNgModule","ApplicationInitStatus","donePromise","appInits","runInitializers","asyncInitPromises","initResult","observableAsPromise","Console","getGlobalLocale","$localize","InitialRenderPendingTasks","hasPendingTasks","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","compileModuleAndAllComponentsAsync","clearCacheFor","getModuleId","TESTABILITY","TESTABILITY_GETTER","_testabilityGetter","Testability","testabilityGetter","_pendingCount","_isZoneStable","_didWork","taskTrackingZone","setTestabilityGetter","addToWindow","_watchAngularEvents","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","registerApplication","unregisterApplication","findProviders","using","exactMatch","TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","PLATFORM_DESTROY_LISTENERS","APP_BOOTSTRAP_LISTENER","NgProbeToken","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","platformProviders","createPlatform","publishSignalConfiguration","setThrowInvalidWriteToSignalError","PlatformRef","runPlatformInitializers","createPlatformInjector","assertPlatform","requiredToken","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","getNgZone","ngZoneToUse","getNgZoneOptions","eventCoalescing","runCoalescing","ngZoneEventCoalescing","ngZoneRunCoalescing","moduleRef","createNgModuleRefWithProviders","internalProvideZoneChangeDetection","ngZoneFactory","ngZoneChangeDetectionScheduler","NgZoneChangeDetectionScheduler","INTERNAL_APPLICATION_ERROR_HANDLER","ngZoneApplicationErrorHandlerFactory","exceptionHandler","_callAndReportToErrorHandler","initStatus","setLocaleId","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ngDoBootstrap","destroyListeners","objs","_bootstrapListeners","_runningTick","_views","internalErrorHandler","zoneIsStable","componentTypes","componentOrFactory","compRef","_loadComponent","userErrorHandler","_onMicrotaskEmptySubscription","ChangeDetectorRef","injectChangeDetectorRef","createViewRef","isPipe","DefaultIterableDifferFactory","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","previousRecord","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","defaultIterableDiffersFactory","IterableDiffers","copied","defaultKeyValueDiffersFactory","KeyValueDiffers","platformCore","ApplicationModule","booleanAttribute","reflectComponentType","isSignal","BaseControlValueAccessor","onTouched","registerOnTouched","registerOnChange","setDisabledState","BuiltInControlValueAccessor","ɵBuiltInControlValueAccessor_BaseFactory","NG_VALUE_ACCESSOR","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","writeValue","ɵCheckboxControlValueAccessor_BaseFactory","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_isAndroid","ɵgetDOM","getUserAgent","_handleInput","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","minValidator","maxValidator","requiredValidator","requiredTrue","requiredTrueValidator","emailValidator","minLengthValidator","maxLengthValidator","patternValidator","nullValidator","composeAsync","minlength","maxlength","regexStr","requiredPattern","mergeErrors","arrayOfErrors","executeValidators","normalizeValidators","isValidatorFn","presentValidators","composeValidators","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","addValidators","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","statusChanges","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","getError","ControlContainer","formDirective","NgControl","valueAccessor","AbstractControlStatus","isTouched","isUntouched","isPristine","isInvalid","isPending","isSubmitted","submitted","NgControlStatus","NgControlStatusGroup","VALID","DISABLED","pickValidators","validatorOrOpts","isOptionsObj","pickAsyncValidators","asyncValidators","assertControlPresent","assertAllValuesPresent","_forEachChild","AbstractControl","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","_onDisabledChange","_assignValidators","_assignAsyncValidators","validatorFn","asyncValidatorFn","updateOn","_updateOn","setAsyncValidators","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearAsyncValidators","markAsUntouched","_updateTouched","markAsDirty","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","currPath","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_registerOnCollectionChange","_setUpdateStrategy","coerceToValidator","coerceToAsyncValidator","FormGroup","_setUpControls","registerControl","addControl","setControl","_reduceChildren","_syncPendingControls","subtreeUpdated","_reduceValue","FormRecord","CALL_SET_DISABLED_STATE","setDisabledStateDefault","controlPath","setUpControl","callSetDisabledState","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","updateControl","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","registerOnValidatorChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","setUpFormContainer","isPropertyUpdated","viewModel","syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","getControl","addFormGroup","removeFormGroup","getFormGroup","updateModel","onReset","resetForm","removeListItem","isFormControlState","formState","FormControl","_onChange","_applyFormState","nonNullable","initialValueIsDefault","emitViewToModelChange","AbstractFormGroupDirective","_checkParentType","ɵAbstractFormGroupDirective_BaseFactory","formControlBinding$1","NgModel","resolvedPromise","_changeDetectorRef","_registered","_checkForErrors","_checkName","_setUpControl","_isStandalone","_setUpStandalone","disabledValue","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","ɵNumberValueAccessor_BaseFactory","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","_control","_registry","setDisabledStateFired","formControlName","RANGE_VALUE_ACCESSOR","RangeValueAccessor","ɵRangeValueAccessor_BaseFactory","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningSentOnce","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","newCtrl","isFormControl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString$1","_optionMap","_idCounter","_compareWith","compareWith","_getOptionId","_getOptionValue","_registerOption","_extractId$1","ɵSelectControlValueAccessor_BaseFactory","NgSelectOption","_select","ngValue","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString","optionSelectedStateSetter","_setSelected","selectedOptions","_extractId","ɵSelectMultipleControlValueAccessor_BaseFactory","ɵNgSelectMultipleOption","toFloat","AbstractValidatorDirective","_validator","normalizeInput","MAX_VALIDATOR","MaxValidator","ɵMaxValidator_BaseFactory","MIN_VALIDATOR","MinValidator","ɵMinValidator_BaseFactory","REQUIRED_VALIDATOR","RequiredValidator","ɵRequiredValidator_BaseFactory","MIN_LENGTH_VALIDATOR","MinLengthValidator","ɵMinLengthValidator_BaseFactory","MAX_LENGTH_VALIDATOR","MaxLengthValidator","ɵMaxLengthValidator_BaseFactory","PATTERN_VALIDATOR","PatternValidator","ɵPatternValidator_BaseFactory","ɵInternalFormsSharedModule","FormArray","_registerControl","isAbstractControlOptions","FormBuilder","useNonNullable","nnfb","reducedControls","_reduceControls","createdControls","_createControl","UntypedFormBuilder","controlsConfig","ɵUntypedFormBuilder_BaseFactory","warnOnNgModelWithFormControl","DelayOperator","DelaySubscriber","_schedule","scheduleNotification","DelayMessage","MatAutocomplete_ng_template_0_Template","_animationDone","formFieldId_r1","_classList","_getPanelAriaLabelledby","panelAnimation","_uniqueAutocompleteIdCounter","MatAutocompleteSelectedEvent","_MatAutocompleteMixinBase","mixinDisableRipple","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY","autoActiveFirstOption","autoSelectActiveOption","hideSingleSelectionIndicator","requireSelection","_MatAutocompleteBase","_isOpen","showPanel","_color","_setThemeClasses","_autoActiveFirstOption","_autoSelectActiveOption","_requireSelection","_setVisibilityClasses","_defaults","_activeOptionChanges","displayWith","optionSelected","optionActivated","inertGroups","_keyManager","_skipPredicate","_setVisibility","_setScrollTop","_getScrollTop","_emitSelectEvent","labelId","ariaLabelledby","_visibleClass","_hiddenClass","panelWidth","MatAutocomplete","_hideSingleSelectionIndicator","_syncParentProperties","_option","ɵMatAutocomplete_BaseFactory","MAT_OPTGROUP","MatOption","optionGroups","disableRipple","MAT_OPTION_PARENT_COMPONENT","MAT_AUTOCOMPLETE_VALUE_ACCESSOR","MatAutocompleteTrigger","MAT_AUTOCOMPLETE_SCROLL_STRATEGY","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY","_MatAutocompleteTriggerBase","autocompleteDisabled","_autocompleteDisabled","_formField","_componentDestroyed","_manuallyFloatingLabel","_viewportSubscription","_canOpenOnNextFocus","_closeKeyEventStream","_windowBlurHandler","panelOpen","_onTouched","autocompleteAttribute","_overlayAttached","optionSelections","autocomplete","_handlePanelKeydown","_pendingAutoselectedOption","_updateNativeInputValue","_valueBeforeAutoSelection","_resetActiveItem","_trackedModal","_setStrategyPositions","_destroyPanel","_clearFromModal","_floatLabel","_resetLabel","_closingActionsSubscription","_updatePanelState","panelClosingActions","_getOutsideClickStream","MatOptionSelectionChange","activeOption","customOrigin","_assignOptionValue","_handleKeydown","hasModifier","_selectViaInteraction","prevActiveItem","isArrowKey","_canOpen","_scrollToOption","_previousValue","_clearPreviousSelectedOption","_handleClick","shouldAnimate","floatLabel","_animateAndLockLabel","_subscribeToClosingActions","firstStable","optionChanges","delayFor","wasOpen","_captureValueOnAttach","_emitOpened","_setValueAndClose","_valueOnAttach","toDisplay","toSelect","deselect","_getConnectedElement","_getPanelWidth","_portal","_getOverlayConfig","_applyModalPanelOwnership","_keydownSubscription","_outsideClickSubscription","_getOverlayPosition","overlayPanelClass","belowPositions","_aboveClass","abovePositions","getConnectedOverlayOrigin","_getHostWidth","firstEnabledOptionIndex","labelCount","_countGroupLabelsBeforeOption","_getHostElement","_getOptionScrollPosition","panelId","i2$1","MAT_FORM_FIELD","ɵMatAutocompleteTrigger_BaseFactory","MatOptionModule","MatCommonModule","MatOption_mat_pseudo_checkbox_0_Template","MatOption_mat_pseudo_checkbox_5_Template","MatOption_span_6_Template","MATERIAL_SANITY_CHECKS","MATERIAL_SANITY_CHECKS_FACTORY","highContrastModeDetector","_sanityChecks","_hasDoneGlobalChecks","_checkIsEnabled","_disableRipple","mixinErrorState","updateErrorState","errorState","errorStateMatcher","_defaultErrorStateMatcher","isErrorState","ngControl","_parentFormGroup","_parentForm","stateChanges","ErrorStateMatcher","RippleRef","_animationForciblyDisabledThroughCss","fadeOut","fadeOutRipple","passiveCapturingEventOptions$1","RippleEventManager","_delegateEventHandler","handlersForEvent","handlersForElement","defaultRippleAnimationConfig","enterDuration","exitDuration","passiveCapturingEventOptions","pointerDownEvents","pointerUpEvents","RippleRenderer","_eventManager","_target","_isPointerDown","_activeRipples","_pointerUpEventsRegistered","fadeInRipple","animationConfig","distanceToFurthestCorner","ripple","computedStyles","userTransitionDuration","animationForciblyDisabledThroughCss","rippleRef","_mostRecentTransientRipple","_finishRippleTransition","onTransitionCancel","_destroyRipple","rippleEl","fadeOutAll","_getActiveRipples","fadeOutAllNonPersistent","setupTriggerEvents","_triggerElement","_removeTriggerEvents","_onMousedown","_onTouchStart","_onPointerUp","_startFadeOutTransition","isMostRecentTransientRipple","isFakeMousedown","isSyntheticEvent","_lastTouchStartEvent","rippleDisabled","rippleConfig","terminateOnPointerUp","MAT_RIPPLE_GLOBAL_OPTIONS","MatRipple","_setupTriggerEventsIfEnabled","_trigger","globalOptions","_animationMode","_globalOptions","_rippleRenderer","launch","configOrX","unbounded","MatRippleModule","MatPseudoCheckbox","appearance","MatPseudoCheckboxModule","_uniqueIdCounter","isUserInput","_MatOptionBase","_selected","_active","_mostRecentViewValue","_stateChanges","viewValue","_emitSelectionChangeEvent","_getTabIndex","optionIndex","optionsArray","groupCounter","optionOffset","optionHeight","currentScrollPosition","panelHeight","MutationObserverFactory","ObserversModule","MatFormFieldControl","MatFormFieldModule","listenerOptions","AutofillMonitor","_monitoredElements","monitor","animationName","isAutofilled","unlisten","stopMonitoring","TextFieldModule","MAT_INPUT_VALUE_ACCESSOR","MAT_INPUT_INVALID_TYPES","_MatInputBase","MatInput","_required","_validateType","_isTextarea","_inputValueAccessor","readonly","_readonly","inputValueAccessor","_autofillMonitor","autofilled","_neverEmptyInputTypes","_iOSKeyupListener","selectionStart","selectionEnd","_previousNativeValue","_isServer","_isNativeSelect","_isInFormField","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","_focusChanged","_onInput","_getPlaceholder","_previousPlaceholder","_isNeverEmpty","_isBadInput","validity","badInput","shouldLabelFloat","selectElement","firstOption","setDescribedByIds","onContainerClick","_isInlineSelect","userAriaDescribedBy","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","makeCurrent","ɵsetRootDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","getBaseElementHref","baseElement","relativePath","urlParsingNode","resetBaseElement","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","_eventNameToPlugin","_findPluginFor","getZone","EventManagerPlugin","APP_ID_ATTRIBUTE_NAME","SharedStylesHost","styleRef","hostNodes","styleNodesInDOM","collectServerRenderedStyles","platformIsServer","resetHostNodes","changeUsageCount","onStyleAdded","removeStyles","onStyleRemoved","getAllStyles","addHost","hostNode","addStyleToHost","removeHost","styleRefValue","usage","getStyleElement","styleEl","styleElRef","NAMESPACE_URIS","math","COMPONENT_REGEX","COMPONENT_VARIABLE","HOST_ATTR","CONTENT_ATTR","REMOVE_STYLES_ON_COMPONENT_DESTROY","shimStylesContent","DomRendererFactory2","eventManager","sharedStylesHost","removeStylesOnCompDestroy","rendererByCompId","defaultRenderer","DefaultDomRenderer2","getOrCreateRenderer","EmulatedEncapsulationDomRenderer2","applyToHost","NoneEncapsulationDomRenderer","applyStyles","ShadowDomRenderer","isTemplateNode","namespaceUri","decoratePreventDefault","hostEl","nodeOrShadowRoot","contentAttr","shimContentAttribute","componentShortId","hostAttr","shimHostAttribute","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Menu","Scroll","Win","MODIFIER_KEY_GETTERS","KeyEventsPlugin","parseEventName","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","matchEventFullKeyCode","fullKeyCode","keycode","modifierGetter","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","initDomAdapter","ɵsetDocument","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","ɵglobal","getAngularTestability","getAllAngularTestabilities","getAllAngularRootElements","frameworkStabilizers","testabilities","didWork","decrement","didWork_","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","providersAlreadyPresent","withServerTransition","newTitle","createTitle","DomSanitizer","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","RouteTitleKey","ParamsAsMap","convertToParamMap","defaultUrlMatcher","segmentGroup","posParams","shallowEqual","equalArraysOrString","aSorted","bSorted","wrapIntoObservable","isObservable","pathCompareMap","exact","equalSegmentGroups","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","containsSegmentGroup","paramCompareMap","equalParams","containsParams","ignored","containsTree","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","UrlSegmentGroup","_queryParamMap","DEFAULT_SERIALIZER","serializePaths","UrlSegment","parameterMap","_parameterMap","serializePath","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","serializeSegment","serializeQueryParams","strParams","encodeUriQuery","encodeUriFragment","mapChildrenIntoArray","childOutlet","encodeUriString","encodeUriSegment","decodeQuery","serializeMatrixParams","SEGMENT_RE","matchSegments","MATRIX_PARAM_SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","matchMatrixKeySegments","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","allowPrimary","outletName","createRoot","rootCandidate","squashSegmentGroup","childCandidate","grandChildOutlet","grandChild","mergeTrivialChildren","isUrlTree","createSegmentGroupFromRoute","targetGroup","rootSegmentGroup","createSegmentGroupFromRouteRecursive","currentRoute","childOutlets","childSnapshot","outlet","createUrlTreeFromSegmentGroup","computeNavigation","Navigation","numberOfDoubleDots","cmdIdx","outlets","segmentPath","urlPart","toRoot","findStartingPositionForTargetGroup","isMatrixParams","createPositionApplyingDoubleDots","newSegmentGroup","processChildren","updateSegmentGroupChildren","updateSegmentGroup","isCommandWithOutlets","oldRoot","oldSegmentGroup","qp","replaceSegment","newRoot","oldSegment","newSegment","cmdWithOutlet","prefixedWith","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","slicedCommands","createNewSegmentGroup","getOutlets","childrenOfEmptyChild","createNewSegmentChildren","IMPERATIVE_NAVIGATION","RouterEvent","navigationTrigger","restoredState","urlAfterRedirects","NavigationCancel","NavigationSkipped","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","shouldActivate","ResolveStart","ResolveEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","BeforeActivateRoutes","RedirectRequest","OutletContext","ChildrenOutletContexts","attachRef","onChildOutletCreated","getOrCreateContext","onChildOutletDestroyed","onOutletDeactivated","onOutletReAttached","findNode","findPath","cc","nodeChildrenAsMap","RouterState","setRouterState","createEmptyState","urlTree","rootComponent","createEmptyStateSnapshot","activated","ActivatedRouteSnapshot","RouterStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","urlSubject","paramsSubject","queryParamsSubject","fragmentSubject","dataSubject","futureSnapshot","_futureSnapshot","_routerState","_paramMap","inheritedParamsDataResolve","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","_resolvedData","serializeNode","advanceActivatedRoute","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","equalUrlParams","equalSegments","RouterOutlet","activateEvents","deactivateEvents","attachEvents","detachEvents","parentContexts","changeDetector","inputBinder","INPUT_BINDER","supportsBindingToComponentInputs","activatedComponentRef","isTrackedInParentContexts","initializeOutletWithName","unsubscribeFromRouteData","activateWith","isActivated","activatedRouteData","bindActivatedRouteToOutletComponent","childContexts","OutletInjector","RoutedComponentInputBinder","outletDataSubscriptions","subscribeToRouteData","dataSubscription","mirror","routeReuseStrategy","prevState","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","createActivatedRoute","NAVIGATION_CANCELING_ERROR","redirectingNavigationError","navigationBehaviorOptions","navigationCancelingError","cancellationCode","isNavigationCancelingError$1","ɵEmptyOutletComponent","standardizeConfig","loadComponent","getOutlet","getClosestRouteInjector","_loadedInjector","ActivateRoutes","futureState","currState","forwardEvent","inputBindingEnabled","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","futureChild","childOutletName","deactivateRoutes","deactivateRouteAndItsChildren","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","activateRoutes","stored","CanActivate","CanDeactivate","getAllRouteGuards","getChildRouteGuards","getTokenOrFunctionIdentity","tokenOrFunction","ɵisInjectable","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","isEmptyError","INITIAL_VALUE","prioritizedGuardValue","redirectIfUrlTree","NoMatch","AbsoluteRedirect","noMatch$1","absoluteRedirect","ApplyRedirects","noMatchError","lineralizeSegments","applyRedirectCommands","applyRedirectCreateUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","consumedSegments","remainingSegments","positionalParamSegments","matchWithChecks","getOrCreateRouteInjectorIfNeeded","currentInjector","runCanMatchGuards","canMatch","canMatchObservables","injectionToken","isCanMatch","slicedSegments","containsEmptyPathMatchesWithNamedOutlets","emptyPathMatch","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","primarySegment","Recognizer","configLoader","rootComponentType","allowRedirects","applyRedirects","processSegmentGroup","createUrlTreeFromSnapshot","inheritParamsAndData","routeNode","processSegment","sortedConfig","sortByMatchingOutlets","outletChildren","last$1","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","processSegmentAgainstRoute","noLeftoversInUrl","rawSegment","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","newSegments","_loadedComponent","getResolve","getChildConfig","childInjector","matchedOnOutlet","_loadedRoutes","runCanLoadGuards","canLoad","canLoadObservables","isCanLoad","shouldLoadResult","canLoadFails","hasEmptyPathConfig","mergedNodes","duplicateEmptyPathNode","resultNode","mergedNode","hasStaticTitle","switchTap","nextResult","ROUTES","RouterConfigLoader","componentLoaders","childrenLoaders","compiler","onLoadStartListener","loadRunner","maybeUnwrapDefaultExport","onLoadEndListener","factoryOrRoutes","rawRoutes","requireStandaloneComponents","isWrappedDefaultExport","NavigationTransitions","hasRequestedNavigation","navigationId","currentNavigation","lastSuccessfulNavigation","transitionAbortSubject","rootContexts","afterPreactivation","handleNavigationRequest","setupNavigations","initialUrlTree","initialRouterState","currentUrlTree","currentRawUrl","currentBrowserUrl","extractedUrl","urlHandlingStrategy","rawUrl","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","overallTransitionState","initialUrl","previousNavigation","browserUrlTree","urlTransition","navigated","onSameUrlNavigation","shouldProcessUrl","serializer","recognize$1","finalUrl","routesRecognized","navStart","guardsStart","checkGuards","runCanDeactivateChecks","futureRSS","currRSS","runCanDeactivate","currARS","canDeactivate","canDeactivateObservables","closestInjector","isCanDeactivate","runCanActivateChecks","fireChildActivationStart","fireActivationStart","runCanActivateChild","futureARS","canActivateChildGuardsMapped","getCanActivateChild","guardsMapped","isCanActivateChild","runCanActivate","canActivateObservables","isCanActivate","guardsEnd","cancelNavigationTransition","resolveStart","dataResolved","resolveData","canActivateChecksResolved","runResolve","resolveNode","getDataKeys","getResolver","resolvedData","resolveEnd","loadComponents","loaders","loadedComponent","createRouterState","titleStrategy","isRedirectingNavigationCancelingError$1","navCancel","isBrowserTriggeredNavigation","TitleStrategy","buildTitle","pageTitle","getResolvedTitleForRoute","DefaultTitleStrategy","RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ɵDefaultRouteReuseStrategy_BaseFactory","ROUTER_CONFIGURATION","UrlHandlingStrategy","DefaultUrlHandlingStrategy","newUrlPart","wholeUrl","NavigationResult","COMPLETE","FAILED","REDIRECTING","afterNextNavigation","defaultErrorHandler","defaultMalformedUriErrorHandler","exactMatchOptions","subsetMatchOptions","navigationTransitions","browserPageId","canceledNavigationResolution","currentPageId","ɵrouterPageId","ɵConsole","isNgZoneEnabled","malformedUriErrorHandler","lastSuccessfulId","urlUpdateStrategy","componentInputBindingEnabled","eventsSubscription","resetConfig","rawUrlTree","subscribeToNavigationEvents","isPublicRouterEvent","setBrowserUrl","restoreHistory","mergedTree","scheduleNavigation","resetRootComponentType","initialNavigation","setUpLocationChangeListener","navigateToSyncWithBrowser","locationSubscription","stateCopy","getCurrentNavigation","createUrlTree","navigationExtras","preserveFragment","relativeToUrlSegmentGroup","removeEmptyProps","validateCommands","matchOptions","priorPromise","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","RouterLink","tabIndexAttribute","onChanges","isAnchorElement","updateHref","setTabIndexIfNotOnNativeEl","newTabIndex","applyAttributeValue","sanitizedValue","RouterLinkActive","routerLinkActiveOptions","isActiveChange","routerEventsSubscription","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","routerLinkActive","hasActiveLinks","ariaCurrentWhenActive","isActiveMatchOptions","isActiveCheckFn","PreloadingStrategy","RouterPreloader","preloadingStrategy","setUpPreloading","processRoutes","injectorForCurrentRoute","injectorForChildren","preloadConfig","loadedChildren$","recursiveLoadChildren$","loadComponent$","ROUTER_SCROLLER","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","routerFeature","getBootstrapListener","bootstrappedComponentRef","bootstrapDone","BOOTSTRAP_DONE","INITIAL_NAVIGATION","ROUTER_PRELOADER","withPreloading","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","rootRoute","routerNgProbeToken","provideForRootGuard","scrollOffset","provideInitialNavigation","bindToComponentInputs","ROUTER_INITIALIZER","locationInitialized","Slot","cacheInfoMap","getCacheInfo","rv","attachCache","oldListeners","onNextChange","aData","aRest","bData","bRest","equalBySelectionSet","aResult","bResult","seenSelections","selectionHasNonreactiveDirective","resultKey","aResultChild","bResultChild","childSelectionSet","aChildIsArray","bChildIsArray","directiveIsNonreactive","passthrough","toLink","isTerminating","leftLink","rightLink","createOperation","starting","transformOperation","transformedOperation","getOperationName","validateOperation","OPERATION_FIELDS","firstLink","nextLink","setOnError","scheduledCleanup","AutoCleanedWeakCache","AutoCleanedStrongCache","StrongCache","globalCaches","registerGlobalCache","getApolloClientMemoryInternals","_getApolloClientMemoryInternals","linkInfo","queryManager","getDocumentInfo","transformCache","documentTransforms","transformInfo","documentTransform","_getInMemoryCacheMemoryInternals","_getApolloCacheMemoryInternals","addTypenameDocumentTransform","inMemoryCache","getWrapperInformation","fragmentRegistry","findFragmentSpreads","fragmentQueryDocuments","isWrapper","recurseTransformInfo","performWork","cacheSizeSymbol","maybe","HermesInternal","canUseSymbol","canUseAsyncIteratorSymbol","usingJSDOM","sortingMap","stableObjectReplacer","everyKeyInOrder","unsortedKey","sortedKey","sortedObject_1","cloneDeepHelper","copy_1","copy_2","prefixCounts","makeUniqueId","defaultReconciler","reconciler","pastCopies","shallowCopyForMerge","undefId","genericMessage","InvariantError","framesToPop","verbosityLevels","verbosityLevel","wrapConsoleMethod","thunk","globals_global","arg0","getHandledErrorMsg","getFallbackErrorMsg","originalInvariant","ApolloErrorMessageHandler","messageArgs","resultCache","getCacheKey","stableCacheKeys_1","cacheKeys","checkDocument","transformedDocument","otherTransform","getInclusionDirectives","isInclusionDirective","directiveArguments","directiveName","ifArgument","ifValue","evaledValue","nameSet","Directive","BREAK","hasClientExports","actualFragmentName","symTable","queryDef","getFragmentDefinition","fragmentDef","queryDoc","valueToObjectRepresentation","printCache","origPrint","isDocumentNode","argObj","isIntValue","isFloatValue","isBooleanValue","isStringValue","isObjectValue","nestedArgObj_1","isVariable","isListValue","listValue","nestedArgArrayObj","isEnumValue","isNullValue","directivesObj","KNOWN_DIRECTIVES","storeKeyNameStringify","filterKeys","filteredArgs_1","completeFieldName","stringifiedArgs","setStringify","argObj_1","fragments_1","isInlineFragment","TYPENAME_FIELD","nullIfDocIsEmpty","makeInUseGetterFunction","defaultKey","inUse","fragmentSpreads","removeDirectivesFromDocument","getInUseByOperationName","getInUseByFragmentName","getInUse","operationCount","directiveMatcher","getDirectiveMatcher","tests","testConfig","shouldRemoveField","nodeDirectives","originalFragmentDefsByPath","firstVisitMadeChanges","fieldOrInlineFragmentVisitor","docWithoutDirectiveSubtrees","Field","InlineFragment","VariableDefinition","Variable","FragmentSpread","FragmentDefinition","leave","populateTransitiveVars","transitiveVars","childFragmentName","allFragmentNamesUsed","enterVisitor","fragmentWillBeRemoved","OperationDefinition","usedVariableNames_1","varDef","SelectionSet","buildQueryFromSelectionSet","modifiedDoc","removeClientSetsFromDocument","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","IS_IE","ho","classic","fas","far","fal","fat","fad","fab","sharp","fass","fasr","fasl","fast","fasds","u$1","m$1","t$1","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","NAMESPACE_IDENTIFIER","UNITS_IN_GRID","DEFAULT_CSS_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_FA_PSEUDO_ELEMENT_PENDING","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","MUTATION_APPROACH_ASYNC","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","FAMILIES","familyProxy","_PREFIX_TO_STYLE","fak","fakd","PREFIX_TO_STYLE","_STYLE_TO_PREFIX","regular","thin","duotone","brands","kit","STYLE_TO_PREFIX","_PREFIX_TO_LONG_STYLE","PREFIX_TO_LONG_STYLE","_LONG_STYLE_TO_PREFIX","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","RESERVED_CLASSES","FontAwesomeConfig","coerce","getAttrConfig","_default","styleDefault","familyDefault","cssPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","familyPrefix","_onChangeCb","d$2","meaninglessTransform","flipY","idPool","htmlEscape","joinStyles","transformIsMeaningful","baseStyles","dcp","drc","fp","dPatt","customPropPatt","rPatt","_cssInserted","ensureCss","insertCss","headChildren","beforeChild","InjectCSS","mixout","beforeDOMElementCreation","beforeI2svg","w$1","shims","toHtml","abstractNodes","joinAttributes","iconFromMapping","thisContext","bindInternal4","normalizeIcons","defineIcons","skipHooks","addPack","LONG_STYLE","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","o$$1","a$$1","hasRegular","autoFetchSvg","shimLookups","maybeNameMaybeUnicode","unicodes","getCanonicalPrefix","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","c$$1","emptyCanonicalIcon","styleOrPrefix","PREFIXES_FOR_FAMILY","getCanonicalIcon","skipLookups","famProps","givenPrefix","nonDuotoneFamilyIds","v$$1","aliasIconName","defaultProviderKeys","chainHooks","hookFns","hookFn","callProvided","findIconDefinition","iconLookup","library","Library","additions","_pullDefinitions","longPrefix","noAuto","i2svg","autoReplaceSvgRoot","domready","autoReplace","canonicalIcon","domVariants","abstractCreator","abstract","makeInlineSvgAbstract","maskId","watchable","isUploadedIcon","attrClass","uploadedIconWidthStyle","asSymbol","asIcon","makeLayersTextAbstract","transformForCss","startCentered","styleString","styles$1","asFoundIcon","vectorData","missingIconResolutionMixin","findIcon","maybeNotifyMissing","noop$1","p$2","preamble","noop$2","isWatched","convertSVG","abstractObj","ceFn","mutators","nodeAsComment","nest","forSvg","splitClasses","toSvg","newInnerHTML","performOperationSync","mutations","callbackFunction","getMutator","disableObservation","enableObservation","mo$1","treeCallback","nodeCallback","pseudoElementsCallback","observeMutationsRoot","defaultPrefix","mutationRecord","hasPrefixAndIcon","hasBeenReplaced","childList","subtree","parseMeta","styleParser","extraClasses","classParser","existingPrefix","existingIconName","byLigature","extraAttributes","attributesParser","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","knownPrefixes","onTree","htmlClassList","hclAdd","hclRemove","f$$1","prefixesDomQuery","p$$1","candidates","e$$1","resolvedMutations","onNode","iconDefinition","ReplaceElements","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","generateSvgReplacementMutation","generateAbstractIcon","iconWidth","assembler","LayersCounter","makeLayersCounterAbstract","LayersText","generateLayersText","computedFontSize","boundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","_FONT_FAMILY_WEIGHT_TO_PREFIX","FontAwesome","FONT_FAMILY_WEIGHT_TO_PREFIX","FONT_FAMILY_WEIGHT_FALLBACK","weights","replaceForPosition","pendingAttribute","alreadyProcessedPseudoElement","fontFamilyMatch","getPrefix","fontFamilySanitized","fontWeightInteger","fontWeightSanitized","hexValue","hexValueFromContent","cleaned","isPrependTen","isDoubled","isV4","iconIdentifier","iconName4","byOldUnicode","oldUnicode","newUnicode","blankMeta","processable","_unwatched","parseTransformString","ALL_SPACE","fillBlack","deGroup","registerPlugins","nextPlugins","mixoutsTo","tk","sk","pseudoElements2svg","unwatch","parseNodeAttributes","generateAbstractTransformGrouping","innerTranslate","innerScale","innerRotate","maskData","generateAbstractMask","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","reduceMotion","missingIconAbstract","gChildren","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","symbolData","parse$1","faClassList","fixedWidth","stackItemSize","FaConfig","fallbackIcon","FaIconLibrary","addIcons","addIconPacks","packs","getIconDefinition","FaStackItemSizeDirective","FaStackComponent","FaIconComponent","spin","iconLibrary","stackItem","buildParams","renderIcon","faWarnIfIconSpecMissing","faNormalizeIconSpec","iconSpec","isIconLookup","faWarnIfIconDefinitionMissing","classOpts","parsedTransform","a11yRole","renderedIcon","renderedIconHTML","faExclamationTriangle","faExclamation","defaultDispose","newest","oldest","getNode","_WeakRef","deref","_WeakMap","_FinalizationRegistry","unfinalizedNodes","finalizationScheduled","keyRef","deleteNode","scheduleFinalization","previousComparisons","__WEBPACK_DEFAULT_EXPORT__","previouslyCompared","definedKeys","keyCount","aIterator","aKey","aCode","nativeCodeSuffix","isDefinedKey","bSet","defaultMakeData","weakness","makeData","getChildTrie","peekArray","mapFor","removeArray","weak","strong","isObjRef","Positioning","isStaticPositioned","offsetParentEl","parentOffset","clientTop","clientLeft","elBcr","viewportOffset","elOffset","positionElements","appendToBody","placementPrimary","placementSecondary","hostElPosition","targetElStyles","topPosition","targetElBCR","placementSeparator","positionService","DAYS_OF_WEEK","TUESDAY","WEDNESDAY","FRIDAY","SATURDAY","DEFAULT_WEEKEND_DAYS","DAYS_IN_WEEK","SECONDS_IN_DAY","getExcludedSeconds","dateAdapter","dayStart","dayEnd","excludedDay","calculateExcludedSeconds","getEventsInPeriod","periodStart","periodEnd","isEventIsPeriod","eventStart","eventEnd","getWeekDay","weekendDays","isToday","isWeekend","getWeekViewHeader","viewStart","viewEnd","getAllDayWeekEvents","absolutePositionedEvents","maxRange","getDifferenceInDaysWithExclusions","totalDaysInView","eventsMapped","allDay","getWeekViewEventOffset","startOfWeekDate","getWeekViewEventSpan","secondsInView","startsBeforeWeek","endsAfterWeek","startSecondsDiff","allDayEventRows","allocatedEvents","rowSpan_1","otherRowEvents","nextEvent","nextEventOffset","weekEvents","weekEvent","getWeekViewHourGrid","hourSegments","hourDuration","segmentHeight","minimumEventHeight","dayViewHourGrid","getDayViewHourGrid","startOfView","sanitiseHours","sanitiseMinutes","endOfView","segmentDuration","startOfViewDay","endOfViewDay","dateAdjustment","dayDuration","HOURS_IN_DAY","weekDays","dayView","getDayView","eventWidth","previousDayEvents","eventsInPeriod","dayViewEvents","eventA","eventB","startsBeforeDay","endsAfterDay","hourHeightModifier","eventOffset","overlappingPreviousEvents","getOverLappingWeekViewEvents","previousEvent","dayEvent","allDayEvents","getColumnCount","allEvents","prevOverlappingEvents","iEvent","nextOverlappingEvents","mappedEvents","overLappingEvents","otherEvent","previousEventTop","previousEventBottom","EventValidationErrorMessage","NotArray","StartPropertyMissing","StartPropertyNotDate","EndPropertyNotDate","EndsBeforeStart","CountOperator","CountSubscriber","_tryPredicate","pairwise","PairwiseOperator","PairwiseSubscriber","hasPrev","arguments$1","isElement$1","indexOfElement","resolveElement","hasElement","addElements","pushElements","noThrow","getClientRect","createWindowRect","Temp","propertiesObject","objectCreate$1","mouseEventProps","createMoveInit","defaultSettings","initMove","setSpecial","ttc","cancelFrame","AutoScroller","maxSpeed","scrolling","scrollWhenOutside","pointCB","createPointCB","targetTouches","eventDoc","dispatcher","createDispatcher","createEventObject","autoScroll","syncMove","forceCleanAnimation","onDown","onUp","setScroll","cleanAnimation","windowAnimationFrame","animationFrame","getElementUnderPoint","underPoint","getTarget","scrollWindow","scrollx","scrolly","pointInside","classToAdd","classToRemove","DraggableHelper","currentDrag","DraggableScrollContainerDirective","DraggableDirective","draggableHelper","vcr","dragSnapGrid","ghostDragEnabled","showOriginalElementWhileDragging","dragCursor","dragPointerDown","ghostElementCreated","dragEnd","pointerDown$","pointerMove$","pointerUp$","eventListenerSubscriptions","timeLongPress","timerBegin","timerEnd","checkEventListeners","pointerDragged$","canDrag","pointerDownEvent","globalDragStyle","startScrollPosition","scrollContainerScroll$","currentDrag$","cancelDrag$","dragComplete$","pointerMove","pointerMoveEvent","transformX","transformY","moveData","validateDrag","dragStarted$","dragEnded$","scroller","AutoScrollerFactory","dragActiveClass","ghostElementAppendTo","ghostElement","setElementStyles","willChange","ghostElementTemplate","dragEndData","dragEndData$","calledCount","dragCancelled","dropData","unsubscribeEventListeners","hasEventListeners","touchstart","touchend","touchcancel","mouseenter","mouseleave","isDragActivated","hasContainerScrollbar","touchStartLongPress","hasScrollbar","touchmove","contextMenuListener","touchMoveListener","touchMoveEvent","shouldBeginDrag","enableScroll","getScrollElement","moveScrollPosition","deltaScroll","longPressConfig","disableScroll","isCoordinateWithinRectangle","DroppableDirective","dragEnter","dragLeave","dragOver","currentDragSubscription","drag$","droppableElement","updateCache","deregisterScrollListener","currentDragEvent","overlaps$","isWithinElement","isDropAllowed","validateDrop","overlapsChanged$","dragOverActive","overlapsNow","dragOverClass","didOverlap","DragAndDropModule","leftOrRight","topOrBottom","ResizableModule","CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template","action_r7","event_r3","CalendarEventActionsComponent_ng_template_0_span_0_Template","trackByActionId_r4","trackByActionId","CalendarEventActionsComponent_ng_template_0_Template","CalendarEventActionsComponent_ng_template_2_Template","CalendarEventTitleComponent_ng_template_0_Template","CalendarEventTitleComponent_ng_template_2_Template","CalendarTooltipWindowComponent_ng_template_0_Template","contents_r3","CalendarTooltipWindowComponent_ng_template_2_Template","CalendarMonthCellComponent_ng_template_0_span_3_Template","day_r3","badgeTotal","draggedFrom","CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template","event_r19","highlightDay_r7","highlightDay","unhighlightDay_r8","unhighlightDay","eventClicked_r9","eventClicked","tooltipPlacement_r6","tooltipTemplate_r10","tooltipAppendToBody_r11","tooltipDelay_r12","tooltipDelay","validateDrag_r14","CalendarMonthCellComponent_ng_template_0_div_7_Template","trackByEventId_r13","trackByEventId","CalendarMonthCellComponent_ng_template_0_Template","locale_r5","CalendarMonthCellComponent_ng_template_2_Template","a5","a6","a7","a8","a9","openDay","_c11","_c12","CalendarOpenDayEventsComponent_ng_template_0_div_0_div_5_Template","event_r10","eventClicked_r4","validateDrag_r7","eventTitleTemplate","eventActionsTemplate","_c13","CalendarOpenDayEventsComponent_ng_template_0_div_0_Template","events_r3","trackByEventId_r6","CalendarOpenDayEventsComponent_ng_template_0_Template","CalendarOpenDayEventsComponent_ng_template_2_Template","_c14","CalendarMonthViewHeaderComponent_ng_template_0_div_1_Template","day_r7","columnHeaderClicked","isoDayNumber","locale_r4","CalendarMonthViewHeaderComponent_ng_template_0_Template","days_r3","trackByWeekDayHeaderDate_r5","trackByWeekDayHeaderDate","CalendarMonthViewHeaderComponent_ng_template_2_Template","CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template","toggleDayHighlight","eventDropped","cellTemplate","CalendarMonthViewComponent_div_3_Template","rowIndex_r1","totalDaysVisibleInWeek","trackByDate","openRowIndex","openDayEventsTemplate","ClickDirective","clickListenerDisabled","KeydownEnterDirective","keydown","keydownListener","CalendarA11y","i18nPlural","monthCell","openDayEventsLandmark","openDayEventsAlert","eventDescription","allDayEventDescription","aria","actionButtonLabel","a11yLabel","monthCellTabIndex","hideMonthCellEvents","hideEventTitle","hideWeekHourSegment","hideDayHourSegment","CalendarA11yPipe","calendarA11y","a11yParams","allowedMethods","iMethod","CalendarEventActionsComponent","customTemplate","CalendarEventTitleFormatter","monthTooltip","weekTooltip","dayTooltip","CalendarEventTitlePipe","calendarEventTitle","titleType","CalendarEventTitleComponent","CalendarTooltipWindowComponent","CalendarTooltipDirective","cancelTooltipDelay$","tooltipFactory","tooltipRef","previousPositions","placementVals","allowedPlacements","addClassesToTarget","targetPlacement","classname","placementToRemove","hasAuto","testPlacement","isInViewport","placementVals_1","addedClasses","Week","addDaysWithExclusions","daysCounter","daysToAdd","changeDays","isWithinThreshold","DRAG_THRESHOLD","CalendarPreviousViewDirective","excludeDays","viewDateChange","subFn","daysInWeek","CalendarNextViewDirective","addFn","CalendarAngularDateFormatter","monthViewColumnHeader","monthViewDayNumber","monthViewTitle","weekViewColumnHeader","weekViewColumnSubHeader","weekViewTitle","getWeekViewPeriod","dateToFormat","showYear","weekViewHour","dayViewHour","dayViewTitle","CalendarDateFormatter","ɵCalendarDateFormatter_BaseFactory","CalendarDatePipe","CalendarUtils","getMonthView","eventsInMonth","initialViewDays","inMonth","rowOffsets","getWeekView","hourColumns","CalendarEventTimesChangedEventType","Drag","Drop","Resize","CalendarCommonModule","eventTitleFormatter","a11y","CalendarMonthCellComponent","collapseAnimation","CalendarOpenDayEventsComponent","CalendarMonthViewHeaderComponent","CalendarMonthViewComponent","beforeViewRender","eventTimesChanged","trackByRowOffset","refreshSubscription","refreshAll","refreshBody","validateEvents","validateEvents$1","emitBeforeViewRender","activeDay","checkActiveDayIsOpen","droppedOn","secondsDiff","columnHeaders","headerTemplate","CalendarMonthModule","CalendarWeekModule","CalendarDayModule","BufferTimeOperator","bufferTimeSpan","bufferCreationInterval","maxBufferSize","BufferTimeSubscriber","openContext","timespanOnly","closeAction","dispatchBufferTimeSpanOnly","creationState","dispatchBufferClose","dispatchBufferCreation","filledBufferContext","onBufferFull","closeContext","prevContext","UserIdleConfig","provideUserIdleConfig","UserIdleService","timerStart$","idleDetected$","timeout$","idleMillisec","idleSensitivityMillisec","pingMillisec","isTimeout","isInactivityTimer","isIdleDetected","activityEvents$","idle$","idleSubscription","bufferTime","setupTimer","setupPing","resetTimer","timer$","onIdleStatusChanged","idleSensitivity","setConfigValues","setCustomActivityEvents","customEvents","ping$","NetworkStatus","setVariables","fetchMore","refetch","poll","isNetworkRequestInFlight","networkStatus","serializeFetchParameter","serialized","parseError","readerIterator","responseIterator","isNodeResponse","isAsyncIterableIterator","isReadableStream","getReader","isStreamableBlob","promiseIterator","isNodeReadableStream","nodeStreamIterator","shiftedArr","throwServerError","PROTOCOL_ERRORS_SYMBOL","ApolloError","graphQLErrors","protocolErrors","clientErrors","networkError","extraInfo","generateErrorMessage","isExecutionPatchIncrementalResult","isApolloPayloadResult","mergeIncrementalData","prevResult","mergedData","parseHeaders","headerText","headersInit","parseJsonBody","bodyText","getResult","fallbackHttpConfig","preserveHeaderCase","defaultPrinter","fromError","backupFetch","createHttpLink","linkOptions","preferredFetch","includeUnusedVariables","fetcher","checkFetcher","linkConfig","fetchOptions","chosenURI","fallbackURI","selectURI","clientAwarenessHeaders","contextHeaders","contextConfig","transformedQuery","selectHttpOptionsAndBodyInternal","removeDuplicateHeaders","normalizedHeaders_1","originalName","normalizedHeaders","filterOperationVariables","unusedNames","isSubscription","definitionIsSubscription","hasDefer","acceptHeader","rewriteURIForGET","addQueryParam","serializedVariables","serializedExtensions","preFragment","fragmentStart","queryParamsPrefix","newURI","currentFetch","observerNext","ctype","readMultipartBody","boundaryVal","boundary","searchFrom","contentType_1","parseAndCheckHttpResponse","asyncMap","mapFn","catchFn","makeCallback","examiner","both","graphQLResultHasError","getGraphQLErrorsFromResult","incrementalResult","iterateObserversSafely","observersWithMethod","fixObservableSubclass","Concast","addObserver","removeObserver","nextResultListeners","deliverLastMessage","nextOrError","beforeNext","ObservableQuery","queryInfo","subObserver","defaultSubscriptionObserverErrorCallback","reobserve","tearDownQuery","waitForOwnResult","skipCacheDataFor","isTornDown","watchQuery","defaultFetchPolicy","initialFetchPolicy","queryId","generateQueryId","opDef","queryName","lastQuery","removeQuery","resetDiff","getCurrentResult","saveAsLastResult","getLastResult","hasForcedResolvers","updateWatch","getDiff","partialRefetch","logMissingFieldErrors","updateLastResult","isDifferentFromLastResult","newResult","hasNonreactiveDirective","variablesMustMatch","getLastError","resetLastResults","resetQueryStoreErrors","reobserveOptions","pollInterval","resetLastWrite","fetchMoreOptions","combinedOptions","originalNetworkStatus","notifyOnNetworkStatusChange","updatedQuerySet","fetchQuery","fetchMoreResult","reobserveCacheFirst","subscribeToMore","startGraphQLSubscription","subscriptionData","silentSetOptions","broadcastQueries","startPolling","updatePolling","stopPolling","applyNextFetchPolicy","nextFetchPolicy","newNetworkStatus","setObservableQuery","fetchConcastWithInfo","ssrMode","pollingInfo","hasObservers","maybeFetch","skipPollAttempt","reobserveAsConcast","useDisposableConcast","oldVariables","oldFetchPolicy","finishWaitingForOwnResult","concast","reportResult","fromLink","resubscribeAfterError","lastError","isDifferent","errorResult","stopQuery","obsQuery","currentFetchPolicy","isSelectionNode","LocalState","resolvers","fragmentMatcher","selectionsToResolveCache","addResolvers","setFragmentMatcher","resolverGroup","setResolvers","getResolvers","runResolvers","remoteResult","onlyRunForcedResolvers","resolveDocument","localResult","getFragmentMatcher","clientQuery","serverQuery","prepareContext","addExportedVariables","document_1","buildRootValueFromCache","exportedVariables","shouldForceResolvers","forceResolvers","rootValue_1","rootValue","mainDefinition","selectionsToResolve","definitionOperation","defaultOperationType","execContext","collectSelectionsToResolve","resolveSelectionSet","isClientFieldDescendant","resultsToMerge","resolveField","fieldResult","fragmentResult","aliasedFieldName","aliasUsed","defaultResult","resolverType","resolverMap","isClientField","resolveSubSelectedArray","isSingleASTNode","collectByDefinition","definitionNode","matches_1","___","fragmentSelections","destructiveMethodCounts","wrapDestructiveCacheMethod","cancelNotifyTimeout","notifyTimeout","QueryInfo","lastRequestId","observableQuery","getDiffOptions","oq","updateLastDiff","setDiff","oqListener","shouldNotify","watchOptions","watcher","lastWatch","lastWrite","shouldWrite","dmCount","markResult","cacheWriteBehavior","shouldWriteResult","errorPolicy","markReady","markError","ignoreErrors","writeWithErrors","IGNORE","QueryManager","queryDeduplication","onBroadcast","defaultContext","fetchCancelFns","queryIdCounter","requestIdCounter","mutationIdCounter","inFlightLinkObservables","defaultDocumentTransform","mutationStore","stopQueryNoBroadcast","cancelPendingFetches","mutate","mutationId","mutationStoreValue","isOptimistic","optimisticResponse","updateQueries","refetchQueries","awaitRefetchQueries","updateWithProxyFn","onQueryUpdated","keepRootFields","generateMutationId","getVariables","markMutationOptimistic","getObservableFromLink","storeResult","markMutationResult","cacheWrites","skipCache","asQuery","updateQueries_1","currentQueryResult","nextQueryResult","mutationResult","queryVariables","results_1","isFinalResult","isExecutionPatchResult","isExecutionPatchInitialResult","getQueryStore","cacheEntry","defaultVars","generateRequestId","stopQueryInStore","stopQueryInStoreNoBroadcast","clearStore","getObservableQueries","queryNamesAndDocs","legacyQueryOptions","getQuery","included","nameOrDoc","reFetchObservableQueries","includeStandby","observableQueryPromises","makeObservable","hasErrors","hasProtocolErrors","graphQLResultHasProtocolErrors","observablePromise_1","getLocalState","deduplication","inFlightLinkObservables_1","forceFetch","printedServerQuery_1","varJson_1","getResultsFromLink","requestId","linkDocument","aqr","isApolloError","containsDataFromLink","fromVariables","sourcesWithInfo","fetchQueryByPolicy","cleanupCancelFn","includedQueriesById","refetchWritePolicy","oldNetworkStatus","readCache","resultsFromCache","fromData","resultsFromLink","newContext","mergeOptions","hasSuggestedDevtools","ApolloClient","resetStoreCallbacks","clearStoreCallbacks","ssrForceFetchDelay","connectToDevTools","__APOLLO_CLIENT__","typeDefs","clientAwarenessName","clientAwarenessVersion","disableNetworkFetches","resetStore","devToolsHookCb","dataWithOptimisticResults","windowWithDevTools","devtoolsSymbol","__APOLLO_DEVTOOLS_GLOBAL_HOOK__","__actionHookForDevTools","__requestRaw","onResetStore","onClearStore","serializedState","setLocalStateFragmentMatcher","setLink","newLink","fromPromise","ZoneScheduler","queueScheduler","fixObservable","wrapWithZone","pickFlag","QueryRef","useInitialLoading","currentResult","APOLLO_FLAGS","APOLLO_NAMED_OPTIONS","ApolloBase","_client","useMutationLoading","ensureClient","useZone","getClient","setClient","checkInstance","Apollo","apolloOptions","apolloNamedOptions","createDefault","createNamed","removeClient","PROVIDERS","apollo","typedGQLTag","placeholders","gql$1","tauEpsilon","_x0","_y0","_x1","_y1","appendRound","x21","y21","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","MAX_RECURSIVE_DEPTH","seenValues","formatObjectValue","previouslySeenValues","customInspectFn","getCustomFn","nodejsCustomInspectSymbol","formatObject","getObjectTag","defineInspect","classObject","maybeNode","rawString","commonIndent","getBlockStringIndentation","_commonIndent","isEmptyLine","printBlockString","indentation","preferMultipleLines","isSingleLine","printAsMultipleLines","printDocASTReducer","varDefs","argsLine","Argument","IntValue","_ref8","FloatValue","_ref9","StringValue","_ref10","isBlockString","BooleanValue","_ref11","NullValue","EnumValue","_ref12","ListValue","_ref13","ObjectValue","_ref14","ObjectField","_ref15","_ref16","NamedType","_ref17","ListType","_ref18","NonNullType","_ref19","SchemaDefinition","addDescription","_ref20","OperationTypeDefinition","_ref21","ScalarTypeDefinition","_ref22","ObjectTypeDefinition","_ref23","FieldDefinition","_ref24","hasMultilineItems","InputValueDefinition","_ref25","InterfaceTypeDefinition","_ref26","UnionTypeDefinition","_ref27","EnumTypeDefinition","_ref28","EnumValueDefinition","_ref29","InputObjectTypeDefinition","_ref30","DirectiveDefinition","_ref31","SchemaExtension","_ref32","ScalarTypeExtension","_ref33","ObjectTypeExtension","_ref34","InterfaceTypeExtension","_ref35","UnionTypeExtension","_ref36","EnumTypeExtension","_ref37","InputObjectTypeExtension","_ref38","maybeArray","_maybeArray$filter$jo","maybeString","isMultiline","QueryDocumentKeys","visitorKeys","edits","isLeaving","isEdited","_Object$keys2","editOffset","editKey","editValue","_visitorKeys$node$kin","visitFn","getVisitFn","kindVisitor","kindSpecificVisitor","specificVisitor","specificKindVisitor","headerIds","headerPrefix","langPrefix","tokenizer","walkTokens","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","unescapeTest","caret","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","baseUrls","justDomain","relativeBase","noopTest","splitCells","escaped","suffLen","currChar","repeatString","outputLink","inLink","inlineTokens","Tokenizer","codeBlockStyle","fences","indentCodeCompensation","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","_escapes","blockquote","blockTokens","istask","ischecked","blankLine","endsWithBlankLine","nextLine","rawLine","itemContents","endEarly","isordered","ordered","itemRegex","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","spacers","hasMultipleLineBreaks","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","findClosingBracket","linkLen","reflink","nolink","emStrong","maskedSrc","prevChar","lDelim","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","autolink","prevCapZero","_backpedal","inlineText","_paragraph","listItemStart","reflinkSearch","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","endAst","endUnd","_extended_email","inlineQueue","lex","lexInline","cutSrc","lastParagraphClipped","extTokenizer","startBlock","tempSrc","tempStart","getStartIndex","keepPrevChar","startInline","Renderer","infostring","slugger","slug","tablerow","tablecell","TextRenderer","Slugger","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","textRenderer","parseInline","itemBody","renderers","Hooks","preprocess","postprocess","parseMarkdown","origOpt","checkSanitizeDeprecation","changeDefaults","newDefaults","childTokens","prevRenderer","prevTokenizer","prevHook","passThroughHooks","ClipboardButtonComponent","_buttonClick$","copied$","copiedText$","onCopyToClipboardClick","ClipboardOptions","PrismPlugin","CommandLine","LineHighlight","LineNumbers","SECURITY_CONTEXT","MarkdownService","securityContext","clipboardOptions","DEFAULT_MARKED_OPTIONS","DEFAULT_KATEX_OPTIONS","delimiters","DEFAULT_MERMAID_OPTIONS","startOnLoad","DEFAULT_CLIPBOARD_OPTIONS","buttonComponent","DEFAULT_PARSE_OPTIONS","decodeHtml","emoji","mermaid","disableSanitizer","DEFAULT_RENDER_OPTIONS","katex","katexOptions","mermaidOptions","_reload$","reload$","parseOptions","extendRenderer","trimIndentation","emojified","parseEmoji","parseMarked","renderClipboard","renderKatex","renderMermaid","handleExtension","Prism","highlightAllUnder","noLanguageElements","textarea","extendedRenderer","ɵNgxMarkdownRendererExtended","defaultCode","isEscaped","urlProtocolIndex","urlWithoutProtocol","lastSlashIndex","lastUrlSegment","lastDotIndex","joypixels","shortnameToUnicode","renderMathInElement","ClipboardJS","buttonTemplate","preElements","preElement","preWrapperElement","toolbarWrapperElement","embeddedViewRef","clipboardInstance","onmouseover","onmouseout","mermaidElements","indentStart","lineIdentStart","MarkdownComponent","markdownService","_clipboard","_commandLine","_disableSanitizer","_emoji","_inline","_katex","_lineHighlight","_lineNumbers","_mermaid","_srcRelativeLink","destroyed$","srcRelativeLink","lineHighlight","lineNumbers","commandLine","loadContent","handleSrc","handleData","handleTransclusion","renderOptions","clipboardButtonComponent","clipboardButtonTemplate","handlePlugins","setPluginClass","setPluginOptions","dataFilterOutput","filterOutput","dataHost","dataPrompt","dataOutput","dataLine","dataLineOffset","lineOffset","dataStart","toLispCase","upperChars","markdownModuleConfig","MermaidAPI","SecurityLevel","Strict","Loose","Antiscript","Sandbox","Forest","Dark","Neutral","updateLayout","itemsLoaded","pendingItems","masonryInstance","addPendingItem","newItem","itemLoaded","playAnimation","NgxMasonryDirective","imageRef","imageLoaded","Toast_button_0_Template","Toast_div_1_ng_container_2_Template","duplicatesCount","Toast_div_1_Template","Toast_div_2_Template","messageClass","Toast_div_3_Template","Toast_div_4_Template","newestOnTop","BasePortalHost","ToastRef","_afterClosed","_activate","_manualClose","_resetTimeout","_countDuplicate","manualClose","manualClosed","timeoutReset","countDuplicate","afterClosed","afterActivate","onDuplicate","resetTimeout","ToastPackage","toastId","toastType","toastRef","_onTap","_onAction","triggerTap","onTap","triggerAction","onAction","TOAST_CONFIG","DomPortalHost","_hostDomElement","_portalHost","_paneElements","positionClass","overlayContainer","_createOverlayRef","getPaneElement","_createPortalHost","currentlyActive","toasts","toastrConfig","_preBuildNotification","applyConfig","_findToast","activeToast","maxOpened","findDuplicate","resetOnDuplicate","countDuplicates","includeTitleDuplicates","onActivateTick","_buildNotification","toastComponent","duplicate","resetTimeoutOnDuplicate","preventDuplicates","previousToastMessage","keepInactive","autoDismiss","sanitizedMessage","toastPackage","toastInjector","componentInstance","ins","onShown","onHidden","DefaultGlobalConfig","extendedTimeOut","progressBar","toastClass","easeTime","progressAnimation","Toast","toastClasses","originalTimeout","activateToast","sub1","sub2","sub3","displayStyle","outsideTimeout","hideTime","outsideInterval","updateProgress","tapToast","stickAround","delayedHideToast","runInsideAngular","MISSING_VALUE","globalKey","globalHost","slots","noContext","parentEntrySlot","maybeUnsubscribe","entryOrDep","emptySetPool","POOL_TARGET_SIZE","optionalMessage","valueGet","valueCopy","childValues","dirtyChildren","recomputing","mightBeDirty","rememberParent","recompute","reallyRecompute","forgetChildren","recomputeNewValue","maybeSubscribe","setClean","reportClean","reportDirty","eachParent","forgetChild","dependOn","forgetDeps","reportDirtyChild","reportCleanChild","normalizeResult","oldValueCopy","parentCount","parentWasClean","removeDirtyChild","EntryMethods","depsByKey","entryMethodName","defaultKeyTrie","defaultMakeCacheKey","cacheOption","dirtyKey","peekKey","forgetKey","SymbolIterator","SymbolObservable","SymbolSpecies","getSpecies","cleanupSubscription","_cleanup","closeSubscription","notifySubscription","onNotify","flushSubscription","subscriptionObserver","SubscriptionObserver","_subscriber","startNext","completeIfDone","__asyncGenerator","awaitReturn","fulfill","__asyncValues","SuppressedError"],"sourceRoot":"webpack:///","sources":["./src/app/api/access2/api-configuration.ts","./src/app/api/access2/base-service.ts","./src/app/api/access2/request-builder.ts","./src/app/api/access2/services/access-2.service.ts","./src/app/api/care-orch/api-configuration.ts","./src/app/api/care-orch/base-service.ts","./src/app/api/care-orch/request-builder.ts","./src/app/api/care-orch/services/awv.service.ts","./src/app/api/track/api-configuration.ts","./src/app/api/track/base-service.ts","./src/app/api/track/request-builder.ts","./src/app/api/track/services/awv-worklist.service.ts","./src/app/api/track/services/card-widget.service.ts","./src/app/api/track/services/compare.service.ts","./src/app/api/track/services/ed-utilization-worklist.service.ts","./src/app/api/track/services/eula.service.ts","./src/app/api/track/services/facesheet-schedule.service.ts","./src/app/api/track/services/facesheet.service.ts","./src/app/api/track/services/hcc-dashboard.service.ts","./src/app/api/track/services/hierarchy.service.ts","./src/app/api/track/services/notes.service.ts","./src/app/api/track/services/patients.service.ts","./src/app/api/track/services/performance-dashboard.service.ts","./src/app/api/track/services/report-items.service.ts","./src/app/api/track/services/report.service.ts","./src/app/api/track/services/snf.service.ts","./src/app/api/track/services/sp-340-b-claims.service.ts","./src/app/api/track/services/sp-340-b-invoice.service.ts","./src/app/api/track/services/status.service.ts","./src/app/api/track/services/user.service.ts","./src/app/api/track/services/value-calculator.service.ts","./src/app/api/user-detail/api-configuration.ts","./src/app/api/user-detail/base-service.ts","./src/app/api/user-detail/request-builder.ts","./src/app/api/user-detail/services/user-detail.service.ts","./src/app/auth.guard.ts","./src/app/care/views/care-prescriptions/exceptions-cell-renderer/exceptions-cell-renderer.component.ts","./src/app/care/views/care-prescriptions/exceptions-cell-renderer/exceptions-cell-renderer.component.html","./src/app/care/views/care-prescriptions/care-exceptions/care-exceptions.columns.ts","./src/app/shared/models/prescription.ts","./src/app/care/views/care-prescriptions/shared-lib.ts","./src/app/shared/services/prescription/prescription.service.ts","./src/app/care/views/care-prescriptions/care-exceptions/care-exceptions.component.html","./src/app/care/views/care-prescriptions/care-exceptions/care-exceptions.component.ts","./src/app/care/care.component.ts","./src/app/care/care.component.html","./node_modules/date-fns/esm/parseISO/index.js","./node_modules/date-fns/esm/isAfter/index.js","./src/app/care/views/care-patients/disease-cohort-grid/disease-cohort-grid.component.ts","./src/app/care/views/care-patients/disease-cohort-grid/disease-cohort-grid.component.html","./src/app/care/views/care-patients/ed-utilization-grid/ed-utilization-grid.component.ts","./src/app/care/views/care-patients/ed-utilization-grid/ed-utilization-grid.component.html","./src/app/care/components/facesheet-schedule/facesheet-schedule-grid/facesheet-schedule-grid.component.ts","./src/app/care/components/facesheet-schedule/facesheet-schedule-grid/facesheet-schedule-grid.component.html","./src/app/care/components/facesheet-schedule/facesheet-schedule/facesheet-schedule.component.ts","./src/app/care/components/facesheet-schedule/facesheet-schedule/facesheet-schedule.component.html","./src/app/shared/modules/patient-facesheet/patient-facesheet.constants.ts","./src/app/shared/enums/patient-engagement.enum.ts","./src/app/care/views/care-patients/customColumns/riskTrend.html","./src/app/care/views/care-patients/customColumns/riskTrend.ts","./src/app/care/views/care-patients/customColumns/actions.html","./src/app/care/views/care-patients/customColumns/actions.ts","./src/app/care/views/care-patients/customColumns/iheFiles.html","./src/app/care/views/care-patients/customColumns/iheFiles.ts","./src/app/care/views/care-patients/columnDefinitions.ts","./src/app/shared/services/patient-alert/patient-alert.service.ts","./src/app/care/views/care-patients/care-patients-filters/care-patients-preset-group.service.ts","./src/app/care/preset-group/utils/preset-item-base.ts","./src/app/care/preset-group/utils/preset-item.token.ts","./src/app/care/components/facesheet-schedule/interface-source-tiers.service.ts","./src/app/care/preset-group/preset-group.service.ts","./src/app/care/views/care-patients/care-patients-filters/care-patients-filters-settings/care-patients-filters-settings.component.html","./src/app/care/views/care-patients/care-patients-filters/care-patients-filters-settings/care-patients-filters-settings.component.ts","./src/app/care/views/care-patients/care-patients-filters/care-patients-filters.component.html","./src/app/care/views/care-patients/care-patients-filters/care-patients-filters.component.ts","./src/app/shared/enums/assignment.enum.ts","./src/app/shared/enums/loadingMsg.enum.ts","./src/app/care/components/awv-worklist/awv-worklist.service.ts","./src/app/shared/services/filter-data.service.ts","./src/app/shared/modules/patient-facesheet/patient-invite-form/patient-invite-form.component.html","./src/app/shared/modules/patient-facesheet/patient-invite-form/patient-invite-form.component.ts","./src/app/api/care-orch/models/awv-workflow-statuses.ts","./src/app/shared/services/awv-workflow/backend-error.ts","./src/app/shared/services/awv-workflow/awv-activity-change-event.ts","./src/app/shared/services/mixpanel/events/workflow-events.ts","./src/app/shared/services/hierarchy/practice.service.ts","./src/app/shared/services/awv-workflow/awv-workflow.service.ts","./src/app/shared/services/mixpanel/events/workflow-events.service.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-remove-modal-dialog/patient-awv-remove-modal-dialog.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-remove-modal-dialog/patient-awv-remove-modal-dialog.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-pac-navigator/patient-pac-navigator.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-pac-navigator/patient-pac-navigator.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-ihe-worklist/patient-ihe-worklist.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-ihe-worklist/patient-ihe-worklist.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-report/patient-awv-report.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-report/patient-awv-report.component.ts","./src/app/api/care-orch/models/outcome-type.ts","./src/app/api/care-orch/models/properties-type.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-inline-error/patient-awv-inline-error.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-inline-error/patient-awv-inline-error.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-scheduled/patient-workflow-scheduled.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-scheduled/patient-workflow-scheduled.component.ts","./src/app/shared/services/form-validation/awv/next-awv-date-validation.service.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-completed/patient-workflow-completed.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-completed/patient-workflow-completed.component.ts","./src/app/api/care-orch/models/change-types.ts","./src/app/api/care-orch/models/history-source-type.ts","./src/app/api/care-orch/models/callback-reasons.ts","./src/app/api/care-orch/models/removed-reasons.ts","./src/app/api/care-orch/models/activity-type.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-utilities/patient-awv-utilities.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-call-back/patient-workflow-call-back.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-call-back/patient-workflow-call-back.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-remove/patient-workflow-remove.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-remove/patient-workflow-remove.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-callback/patient-awv-callback.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-callback/patient-awv-callback.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-awv-scheduling.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-awv-scheduling.component.ts","./src/app/shared/components/stepper/stepper.component.html","./src/app/shared/components/stepper/stepper.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-scheduled/patient-step-scheduled.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-scheduled/patient-step-scheduled.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-reminder-form/patient-step-reminder-form.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-reminder-form/patient-step-reminder-form.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-reminder/patient-step-reminder.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-reminder/patient-step-reminder.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-completed-form/patient-step-completed-form.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-completed-form/patient-step-completed-form.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-completed/patient-step-completed.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-completed/patient-step-completed.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-awv-reminder.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-awv-reminder.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-removed/patient-awv-removed.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-removed/patient-awv-removed.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-banner/patient-awv-banner.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-banner/patient-awv-banner.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-loading/patient-awv-loading.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-loading/patient-awv-loading.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-history/patient-awv-history.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-history/patient-awv-history.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-completed/patient-awv-completed.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-completed/patient-awv-completed.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-enrol/patient-awv-enrol.service.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-enrol/patient-awv-enrol.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-enrol/patient-awv-enrol.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-last-awv-details/patient-last-awv-details.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-last-awv-details/patient-last-awv-details.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-deferred/patient-awv-deferred.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-deferred/patient-awv-deferred.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-error/patient-awv-error.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-error/patient-awv-error.component.ts","./src/app/care/views/care-patients/care-patient-sidebar/care-patient-sidebar.component.html","./src/app/care/views/care-patients/care-patient-sidebar/care-patient-sidebar.component.ts","./src/app/care/views/care-patients/care-patients.component.html","./src/app/care/views/care-patients/care-patients.component.ts","./src/app/shared/modules/patient-facesheet/patient-action-dropdown/patient-action-dropdown.component.html","./src/app/shared/modules/patient-facesheet/patient-action-dropdown/patient-action-dropdown.component.ts","./src/app/shared/pipes/dx-code-format.pipe.ts","./src/app/care/components/patient-facesheet/patient-facesheet-drag-drop/patient-facesheet-drag-drop.component.html","./src/app/care/components/patient-facesheet/patient-facesheet-drag-drop/patient-facesheet-drag-drop.component.ts","./src/app/care/components/patient-facesheet/patient-chronic-coding-opportunities/patient-chronic-coding-opportunities.component.html","./src/app/care/components/patient-facesheet/patient-chronic-coding-opportunities/patient-chronic-coding-opportunities.component.ts","./src/app/care/components/patient-facesheet/patient-health-maintenance/patient-health-maintenance.component.html","./src/app/care/components/patient-facesheet/patient-health-maintenance/patient-health-maintenance.component.ts","./src/app/care/components/patient-facesheet/patient-utilization/patient-utilization.component.html","./src/app/care/components/patient-facesheet/patient-utilization/patient-utilization.component.ts","./src/app/care/components/patient-facesheet/patient-acute-coding-opportunities/patient-acute-coding-opportunities.component.html","./src/app/care/components/patient-facesheet/patient-acute-coding-opportunities/patient-acute-coding-opportunities.component.ts","./src/app/care/components/patient-facesheet/patient-quality-opportunities/patient-quality-opportunities.component.html","./src/app/care/components/patient-facesheet/patient-quality-opportunities/patient-quality-opportunities.component.ts","./src/app/care/components/patient-care-gaps/patient-care-gaps.component.html","./src/app/care/components/patient-care-gaps/patient-care-gaps.component.ts","./src/app/shared/services/patient/patient-timeline.service.ts","./src/app/shared/modules/patient-facesheet/tabs/chart-timeline/chart-timeline.component.html","./src/app/shared/modules/patient-facesheet/tabs/chart-timeline/chart-timeline.component.ts","./src/app/shared/modules/patient-facesheet/tabs/chart-surveys/chart-surveys.component.html","./src/app/shared/modules/patient-facesheet/tabs/chart-surveys/chart-surveys.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-activity/patient-activity.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-activity/patient-activity.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-alerts/patient-alerts.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-alerts/patient-alerts.component.ts","./src/app/shared/modules/patient-facesheet/shared/patient-alert/patient-alert.component.html","./src/app/shared/modules/patient-facesheet/shared/patient-alert/patient-alert.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-careplan/patient-careplan.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-careplan/patient-careplan.component.ts","./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/BaseColumnSeries.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/ColumnSeries.js","./src/app/shared/modules/patient-facesheet/tabs/sms-standard-schedule/sms-standard-schedule.component.html","./src/app/shared/modules/patient-facesheet/tabs/sms-standard-schedule/sms-standard-schedule.component.ts","./src/app/shared/modules/patient-facesheet/tabs/custom-schedule/custom-schedule.component.html","./src/app/shared/modules/patient-facesheet/tabs/custom-schedule/custom-schedule.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-summary/patient-summary.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-summary/patient-summary.component.ts","./src/app/shared/modules/patient-facesheet/single-patient-invite-form/single-patient-invite-form.component.html","./src/app/shared/modules/patient-facesheet/single-patient-invite-form/single-patient-invite-form.component.ts","./src/app/shared/modules/patient-facesheet/patient-edit-form/patient-edit-form.component.html","./src/app/shared/modules/patient-facesheet/patient-edit-form/patient-edit-form.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-reminders/patient-reminders.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-reminders/patient-reminders.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-workflow/patient-awv-workflow.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-awv-workflow/patient-awv-workflow.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-worklists/patient-worklists.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-worklists/patient-worklists.component.ts","./src/app/shared/modules/patient-facesheet/patient-expanded/patient-expanded.component.html","./src/app/shared/modules/patient-facesheet/patient-expanded/patient-expanded.component.ts","./src/app/shared/modules/patient-facesheet/shared/patient-time-tracking/patient-time-tracking-dropdown/patient-time-tracking-dropdown.component.ts","./src/app/shared/modules/patient-facesheet/shared/patient-time-tracking/patient-time-tracking-dropdown/patient-time-tracking-dropdown.component.html","./src/app/shared/modules/patient-facesheet/shared/patient-time-tracking/patient-time-tracking.component.html","./src/app/shared/modules/patient-facesheet/shared/patient-time-tracking/patient-time-tracking.component.ts","./src/app/shared/modules/patient-facesheet/patient-demographics/patient-demographics.component.html","./src/app/shared/modules/patient-facesheet/patient-demographics/patient-demographics.component.ts","./src/app/shared/modules/patient-facesheet/patient-facesheet.component.html","./src/app/shared/modules/patient-facesheet/patient-facesheet.component.ts","./src/app/care/views/care-patient/care-patient.component.ts","./src/app/care/views/care-patient/care-patient.component.html","./src/app/care/views/care-test/care-test.component.ts","./src/app/care/views/care-test/care-test.component.html","./src/app/care/views/care-settings/care-settings.component.html","./src/app/care/views/care-settings/care-settings.component.ts","./src/app/care/views/care-all-prescriptions/care-all-prescriptions.component.html","./src/app/care/views/care-all-prescriptions/care-all-prescriptions.component.ts","./src/app/care/views/care-prescriptions/care-prescription.columns.ts","./src/app/care/views/care-prescriptions/care-prescriptions.component.html","./src/app/care/views/care-prescriptions/care-prescriptions.component.ts","./src/app/care/views/care-patients/care-prescriptions-processing/care-prescription.columns.ts","./src/app/care/views/care-prescriptions/care-prescriptions-filters/filter-group/filter-group.component.html","./src/app/care/views/care-prescriptions/care-prescriptions-filters/filter-group/filter-group.component.ts","./src/app/care/views/care-prescriptions/care-prescriptions-filters/care-prescriptions-filters.component.html","./src/app/care/views/care-prescriptions/care-prescriptions-filters/care-prescriptions-filters.component.ts","./src/app/care/views/care-patients/care-prescriptions-processing/care-prescriptions-processing-sidebar/tab-switch/tab-switch.component.ts","./src/app/care/views/care-patients/care-prescriptions-processing/care-prescriptions-processing-sidebar/tab-switch/tab-switch.component.html","./src/app/care/views/care-patients/care-prescriptions-processing/care-prescriptions-processing-sidebar/care-prescriptions-processing-sidebar.component.html","./src/app/care/views/care-patients/care-prescriptions-processing/care-prescriptions-processing-sidebar/care-prescriptions-processing-sidebar.component.ts","./src/app/care/views/care-patients/care-prescriptions-processing/care-prescriptions-processing.component.html","./src/app/care/views/care-patients/care-prescriptions-processing/care-prescriptions-processing.component.ts","./src/app/care/views/care-prescriptions-invoicing/care-prescription.columns.ts","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/patient-header/patient-header-help/patient-header-help.component.html","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/patient-header/patient-header-help/patient-header-help.component.ts","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/patient-header/patient-header.component.html","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/patient-header/patient-header.component.ts","./src/app/care/views/care-prescriptions-invoicing/care-prescriptions-invoicing-sidebar/invoicing-tab-switch/invoicing-tab-switch.component.ts","./src/app/care/views/care-prescriptions-invoicing/care-prescriptions-invoicing-sidebar/invoicing-tab-switch/invoicing-tab-switch.component.html","./src/app/care/views/care-prescriptions-invoicing/care-prescriptions-invoicing-sidebar/care-prescriptions-invoicing-sidebar.component.html","./src/app/care/views/care-prescriptions-invoicing/care-prescriptions-invoicing-sidebar/care-prescriptions-invoicing-sidebar.component.ts","./src/app/care/views/care-prescriptions-invoicing/care-prescriptions-invoicing.component.html","./src/app/care/views/care-prescriptions-invoicing/care-prescriptions-invoicing.component.ts","./src/app/care/views/care-patients/refactor-poc/preset-settings.service.ts","./src/app/care/views/care-patients/refactor-poc/care-patients-grid/care-patients-grid.component.ts","./src/app/care/views/care-patients/refactor-poc/care-patients-grid/care-patients-grid.component.html","./src/app/care/views/care-patients/refactor-poc/care-patients-filters/care-patients-filters.component.html","./src/app/care/views/care-patients/refactor-poc/care-patients-filters/care-patients-filters.component.ts","./src/app/care/views/care-patients/refactor-poc/care-patients-container/care-patients-container.component.ts","./src/app/care/views/care-patients/refactor-poc/care-patients-container/care-patients-container.component.html","./src/app/models/summary/summary-tile.order.ts","./src/app/models/summary/summary-tiles.model.ts","./src/app/shared/directives/has-access/has-feature-flag-defined.directive.ts","./src/app/care/views/care-summary-tab/care-summary-tile/care-summary-tile.component.html","./src/app/care/views/care-summary-tab/care-summary-tile/care-summary-tile.component.ts","./src/app/care/views/care-summary-tab/care-summary-tab.component.html","./src/app/care/views/care-summary-tab/care-summary-tab.component.ts","./src/app/care/care-routing.module.ts","./src/app/shared/guards/has-feature.guard.ts","./src/app/shared/services/WellpepperUser.resolver.ts","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/request-note/request-note.component.html","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/request-note/request-note.component.ts","./src/app/care/views/care-prescriptions/sub-fill-dialog/sub-fill-dialog.component.html","./src/app/care/views/care-prescriptions/sub-fill-dialog/sub-fill-dialog.component.ts","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/request-care-coordination-note/request-care-coordination-note.component.html","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/request-care-coordination-note/request-care-coordination-note.component.ts","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/claim-note/claim-note.component.html","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/claim-note/claim-note.component.ts","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/rejected-claim/rejected-claim.component.html","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/rejected-claim/rejected-claim.component.ts","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/file-import/file-control/file-control.component.ts","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/file-import/file-control/file-control.component.html","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/file-import/file-import.component.html","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/file-import/file-import.component.ts","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/care-prescriptions-sidebar.component.html","./src/app/care/views/care-prescriptions/care-prescriptions-sidebar/care-prescriptions-sidebar.component.ts","./src/app/care/views/care-all-prescriptions/care-all-prescriptions-filters/care-all-prescriptions-filters.component.html","./src/app/care/views/care-all-prescriptions/care-all-prescriptions-filters/care-all-prescriptions-filters.component.ts","./src/app/care/preset-group/general/all-patients.preset.ts","./src/app/care/preset-group/clinical-program/clinical-program-copd.preset.ts","./src/app/care/preset-group/clinical-program/clinical-program-heart-failure.preset.ts","./src/app/care/preset-group/clinical-program/clinical-program-hypertension.preset.ts","./src/app/care/preset-group/cohorts/ed-utilization.preset.ts","./src/app/care/preset-group/annual-wellness-visits/awv-billing.preset.ts","./src/app/care/preset-group/annual-wellness-visits/awv-files.preset.ts","./src/app/care/preset-group/annual-wellness-visits/awv-schedule.preset.ts","./src/app/care/preset-group/annual-wellness-visits/hcc-list.preset.ts","./src/app/care/components/awv-worklist/awv-worklist-filters/awv-worklist-filters.component.ts","./src/app/care/components/awv-worklist/awv-worklist-filters/awv-worklist-filters.component.html","./src/app/care/preset-group/annual-wellness-visits/awv-patients-worklist.preset.ts","./src/app/care/components/facesheet-schedule/facesheet-schedule-filters/facesheet-schedule-filters.component.ts","./src/app/care/components/facesheet-schedule/facesheet-schedule-filters/facesheet-schedule-filters.component.html","./src/app/care/preset-group/annual-wellness-visits/facesheet.preset.ts","./src/app/care/preset-group/post-acute-care/pac-navigator-program.preset.ts","./src/app/care/preset-group/chronic-conditions/chronic-conditions-chf.preset.ts","./src/app/care/preset-group/chronic-conditions/care-management-all-program.preset.ts","./src/app/care/preset-group/chronic-conditions/care-management-copd.preset.ts","./src/app/care/preset-group/chronic-conditions/care-management-heart-failure.preset.ts","./src/app/care/preset-group/chronic-conditions/care-management-hypertension.preset.ts","./src/app/shared/enums/sms-programType.enum.ts","./src/app/care/preset-group/chronic-conditions/sms-outreach-program.preset.ts","./src/app/care/preset-group/alerts/active-alerts.preset.ts","./src/environments/environment.coachDev.ts","./src/app/care/preset-group/alerts-and-messages/active-alerts-and-messages.preset.ts","./src/app/care/preset-group/alerts-and-messages/unread-messages.preset.ts","./src/app/care/preset-group/preset-group.module.ts","./src/app/care/care.module.ts","./src/app/care/components/facesheet-schedule/hcc-facesheet-schedule.service.ts","./src/app/care/views/care-patients/care-patients-filters/filter-settings.ts","./src/app/shared/components/attribution-filter-pane/attribution-filter-model.ts","./src/app/shared/components/attribution-filter-pane/attribution-filter-pane.component.html","./src/app/shared/components/attribution-filter-pane/attribution-filter-pane.component.ts","./src/app/shared/components/button-toggle/button-toggle.component.html","./src/app/shared/components/button-toggle/button-toggle.component.ts","./src/app/shared/components/coach-icon/coach-icon.component.ts","./src/app/shared/components/coach-icon/coach-icon.component.html","./src/app/shared/components/coach-tabs/coach-tabs.component.html","./src/app/shared/components/coach-tabs/coach-tabs.component.ts","./src/app/shared/components/coach-toggle-pane/coach-toggle-pane.component.ts","./src/app/shared/components/coach-toggle-pane/coach-toggle-pane.component.html","./src/app/shared/components/coach-toggle/coach-toggle.component.ts","./src/app/shared/components/coach-toggle/coach-toggle.component.html","./src/app/shared/components/eula/eula.component.ts","./src/app/shared/components/eula/eula.component.html","./src/app/shared/components/export-report-button/export-report-button.component.ts","./src/app/shared/components/export-report-button/export-report-button.component.html","./src/app/shared/components/form-validation/invalid-input/invalid-input.component.html","./src/app/shared/components/form-validation/invalid-input/invalid-input.component.ts","./src/app/shared/components/grid/checkbox-header-renderer/checkbox-header-renderer.component.ts","./src/app/shared/components/grid/checkbox-header-renderer/checkbox-header-renderer.component.html","./src/app/shared/components/grid/checkbox-renderer/checkbox-renderer.component.ts","./src/app/shared/components/grid/checkbox-renderer/checkbox-renderer.component.html","./src/app/shared/components/grid/coach-grid-base.ts","./src/app/shared/components/grid/columns-settings/columns-settings/columns-settings.component.html","./src/app/shared/components/grid/columns-settings/columns-settings/columns-settings.component.ts","./src/app/shared/components/grid/grid-filter.service.ts","./src/app/shared/components/grid/grid-functions.ts","./src/app/shared/components/grid/persistent-grid-filters.ts","./src/app/shared/components/grid/router-link-renderer/router-link-renderer.component.ts","./src/app/shared/components/header-breadcrumbs/header-breadcrumbs.component.html","./src/app/shared/components/header-breadcrumbs/header-breadcrumbs.component.ts","./src/app/shared/components/hierarchy-required/hierarchy-required.component.html","./src/app/shared/components/hierarchy-required/hierarchy-required.component.ts","./src/app/shared/components/kill-subscriptions.ts","./src/app/shared/components/loading-container/loading-container.component.html","./src/app/shared/components/loading-container/loading-container.component.ts","./src/app/shared/components/loading-indicator/loading-indicator.component.ts","./src/app/shared/components/loading-indicator/loading-indicator.component.html","./src/app/shared/components/portals/header-title-portal/header-title-portal.component.html","./src/app/shared/components/portals/header-title-portal/header-title-portal.component.ts","./src/app/shared/components/shared-redirect/shared-redirect.component.ts","./src/app/shared/services/performance-dashboard/track-performance-widget-api.service.ts","./src/app/shared/components/track-performance-widget/track-performance-widget.component.html","./src/app/shared/components/track-performance-widget/track-performance-widget.component.ts","./src/app/shared/directives/ag-grid-resize/ag-grid-resize.directive.ts","./src/app/shared/directives/click-away.directive.ts","./src/app/shared/directives/copy-to-clipboard.directive.ts","./src/app/shared/directives/has-access/does-not-have-feature-flag-or-any-components.directive.ts","./src/app/shared/directives/has-access/does-not-have-feature-flag.directive.ts","./src/app/shared/directives/has-access/has-access.ts","./src/app/shared/directives/has-access/has-component.directive.ts","./src/app/shared/directives/has-access/has-feature-flag-and-all-components.directive.ts","./src/app/shared/directives/has-access/has-feature-flag.directive.ts","./src/app/shared/directives/has-access/has-feature.directive.ts","./src/app/shared/directives/has-access/has-module.directive.ts","./src/app/shared/directives/is-not-tier-num.directive.ts","./src/app/shared/models/audit-constants.ts","./src/app/shared/models/constants/app-constants.ts","./src/app/shared/models/exceptions/coach-exception.ts","./src/app/shared/models/forms/form-constants.ts","./src/app/shared/models/module-constants.ts","./src/app/shared/models/patient-ihe-data.ts","./node_modules/lodash-es/_baseHas.js","./node_modules/lodash-es/isArray.js","./node_modules/lodash-es/_freeGlobal.js","./node_modules/lodash-es/_root.js","./node_modules/lodash-es/_Symbol.js","./node_modules/lodash-es/_getRawTag.js","./node_modules/lodash-es/_objectToString.js","./node_modules/lodash-es/_baseGetTag.js","./node_modules/lodash-es/isObjectLike.js","./node_modules/lodash-es/isSymbol.js","./node_modules/lodash-es/_isKey.js","./node_modules/lodash-es/isObject.js","./node_modules/lodash-es/_coreJsData.js","./node_modules/lodash-es/_isMasked.js","./node_modules/lodash-es/_toSource.js","./node_modules/lodash-es/_baseIsNative.js","./node_modules/lodash-es/isFunction.js","./node_modules/lodash-es/_getNative.js","./node_modules/lodash-es/_getValue.js","./node_modules/lodash-es/_nativeCreate.js","./node_modules/lodash-es/_hashGet.js","./node_modules/lodash-es/_hashHas.js","./node_modules/lodash-es/_Hash.js","./node_modules/lodash-es/_hashClear.js","./node_modules/lodash-es/_hashDelete.js","./node_modules/lodash-es/_hashSet.js","./node_modules/lodash-es/eq.js","./node_modules/lodash-es/_assocIndexOf.js","./node_modules/lodash-es/_listCacheDelete.js","./node_modules/lodash-es/_ListCache.js","./node_modules/lodash-es/_listCacheClear.js","./node_modules/lodash-es/_listCacheGet.js","./node_modules/lodash-es/_listCacheHas.js","./node_modules/lodash-es/_listCacheSet.js","./node_modules/lodash-es/_Map.js","./node_modules/lodash-es/_getMapData.js","./node_modules/lodash-es/_isKeyable.js","./node_modules/lodash-es/_MapCache.js","./node_modules/lodash-es/_mapCacheClear.js","./node_modules/lodash-es/_mapCacheDelete.js","./node_modules/lodash-es/_mapCacheGet.js","./node_modules/lodash-es/_mapCacheHas.js","./node_modules/lodash-es/_mapCacheSet.js","./node_modules/lodash-es/memoize.js","./node_modules/lodash-es/_stringToPath.js","./node_modules/lodash-es/_memoizeCapped.js","./node_modules/lodash-es/_baseToString.js","./node_modules/lodash-es/_arrayMap.js","./node_modules/lodash-es/_castPath.js","./node_modules/lodash-es/toString.js","./node_modules/lodash-es/_baseIsArguments.js","./node_modules/lodash-es/isArguments.js","./node_modules/lodash-es/_isIndex.js","./node_modules/lodash-es/_toKey.js","./node_modules/lodash-es/_hasPath.js","./node_modules/lodash-es/isLength.js","./node_modules/lodash-es/has.js","./node_modules/lodash-es/isUndefined.js","./node_modules/lodash-es/get.js","./node_modules/lodash-es/_baseGet.js","./src/app/shared/models/patient.ts","./src/app/shared/models/recent-matchers/index.ts","./src/app/shared/models/recent-matchers/document.matcher.ts","./src/app/shared/models/recent-matchers/patient.matcher.ts","./src/app/shared/models/recent-matchers/report.matcher.ts","./src/app/shared/models/recent-matchers/hcc-dashboard.matcher.ts","./src/app/shared/models/recent-matchers/time-tracking.matcher.ts","./src/app/shared/models/recent-matchers/mssp-value-report.matcher.ts","./src/app/shared/models/recent-matchers/forms.matcher.ts","./src/app/shared/models/recent-matchers/prescriptions.matcher.ts","./src/app/shared/models/recent-matchers/patients-cohort.matcher.ts","./src/app/shared/models/recent-matchers/performance-dashboard.matcher.ts","./node_modules/date-fns/esm/addHours/index.js","./node_modules/date-fns/esm/addMinutes/index.js","./node_modules/date-fns/esm/addSeconds/index.js","./node_modules/date-fns/esm/differenceInCalendarDays/index.js","./node_modules/date-fns/esm/differenceInDays/index.js","./node_modules/date-fns/esm/differenceInMilliseconds/index.js","./node_modules/date-fns/esm/_lib/roundingMethods/index.js","./node_modules/date-fns/esm/differenceInMinutes/index.js","./node_modules/date-fns/esm/differenceInSeconds/index.js","./node_modules/date-fns/esm/endOfWeek/index.js","./node_modules/date-fns/esm/getDay/index.js","./node_modules/date-fns/esm/getMonth/index.js","./node_modules/date-fns/esm/isSameDay/index.js","./node_modules/date-fns/esm/isSameMonth/index.js","./node_modules/date-fns/esm/startOfSecond/index.js","./node_modules/date-fns/esm/isSameSecond/index.js","./node_modules/date-fns/esm/max/index.js","./node_modules/date-fns/esm/setHours/index.js","./node_modules/date-fns/esm/setMinutes/index.js","./node_modules/date-fns/esm/startOfMinute/index.js","./node_modules/date-fns/esm/startOfWeek/index.js","./node_modules/date-fns/esm/getHours/index.js","./node_modules/date-fns/esm/getMinutes/index.js","./node_modules/calendar-utils/date-adapters/esm/date-fns/index.js","./node_modules/date-fns/esm/addWeeks/index.js","./node_modules/date-fns/esm/subWeeks/index.js","./node_modules/date-fns/esm/startOfISOWeek/index.js","./node_modules/date-fns/esm/getISOWeek/index.js","./node_modules/date-fns/esm/startOfISOWeekYear/index.js","./node_modules/date-fns/esm/getISOWeekYear/index.js","./node_modules/date-fns/esm/setDate/index.js","./node_modules/date-fns/esm/setMonth/index.js","./node_modules/date-fns/esm/getDaysInMonth/index.js","./node_modules/date-fns/esm/setYear/index.js","./node_modules/date-fns/esm/getDate/index.js","./node_modules/date-fns/esm/getYear/index.js","./node_modules/angular-calendar/date-adapters/esm/date-fns/index.js","./src/app/shared/modules/patient-facesheet/patient-facesheet.module.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-careplan-editable/patient-careplan-editable.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-careplan-editable/patient-careplan-editable.component.ts","./src/app/shared/modules/patient-facesheet/tabs/patient-careplan/patient-task/patient-task.component.html","./src/app/shared/modules/patient-facesheet/tabs/patient-careplan/patient-task/patient-task.component.ts","./src/app/shared/pipes/age.pipe.ts","./src/app/shared/pipes/classes-join-trim.pipe.ts","./src/app/shared/pipes/format-patient-mbi.pipe.ts","./src/app/shared/pipes/get-initials-from-name.pipe.ts","./src/app/shared/pipes/mask.pipe.ts","./src/app/shared/pipes/minute-seconds.pipe.ts","./src/app/shared/pipes/month-number.pipe.ts","./src/app/shared/pipes/phone.pipe.ts","./src/app/shared/pipes/remove-string-whitespace.pipe.ts","./src/app/shared/pipes/spaces-to-dashes.pipe.ts","./src/app/shared/services/activated-route/activated-route.service.ts","./src/app/shared/services/ag-grid/ag-grid.service.ts","./src/app/shared/services/audit-service/audit.service.ts","./src/app/shared/services/auth-service/auth.service.ts","./src/app/shared/services/azure-api/azure-api-base.ts","./src/app/shared/services/eula-agreement/eula.service.ts","./src/app/shared/services/excel-export/excel.service.ts","./src/app/shared/services/feature-flag/feature-flag.service.ts","./src/app/shared/services/filter-toggle/filter-toggle.service.ts","./src/app/shared/services/folder-lookup/folder-lookup.service.ts","./src/app/shared/services/forms/submit-forms.service.ts","./src/app/shared/services/graphql/fragments.ts","./src/app/shared/services/graphql/access.service.ts","./src/app/shared/services/header-condensed/header-condensed.service.ts","./src/app/shared/models/hierarchy/hierarchy-tier-enum.ts","./src/app/shared/models/hierarchy/hierarchy-tier.ts","./src/app/shared/services/hierarchy/user-tier.service.ts","./src/app/shared/services/hierarchy/hierarchy-tier.service.ts","./src/app/shared/services/logging/error-logging.service.ts","./node_modules/@microsoft/applicationinsights-common/dist-es5/applicationinsights-common.js","./node_modules/@nevware21/ts-utils/dist/es5/mod/ts-utils.js","./node_modules/@microsoft/dynamicproto-js/dist-es5/DynamicProto.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-shims/dist-es5/Constants.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/InternalConstants.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/HelperFuncs.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/EnvUtils.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/RandomHelper.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/DataCacheHelper.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/ConfigDefaults.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/DynamicSupport.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/DynamicProperty.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/AggregationError.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/DynamicState.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/DynamicConfig.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/DbgExtensionUtils.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/DiagnosticLogger.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/PerfManager.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/CoreUtils.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/W3cTraceParent.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/TelemetryHelpers.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/ProcessTelemetryContext.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/UnloadHandlerContainer.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/UnloadHookContainer.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/BaseTelemetryPlugin.js","./node_modules/@microsoft/applicationinsights-angularplugin-js/fesm2020/microsoft-applicationinsights-angularplugin-js.mjs","./node_modules/@microsoft/applicationinsights-shims/dist-es5/TsLibShims.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK.Enums/EnumHelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Enums.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/StorageHelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Constants.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Common/DataSanitizer.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/TelemetryItemCreator.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Event.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Trace.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Common/DataPoint.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Metric.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/HelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/PageView.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/PageViewPerformance.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Exception.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/RequestResponseHeaders.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/UrlHelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Util.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/RemoteDependencyData.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/DomHelperFuncs.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/ConfigDefaultHelpers.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/CookieMgr.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/EventHelpers.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/InstrumentHooks.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/JavaScriptSDK/Telemetry/PageViewManager.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/JavaScriptSDK/Telemetry/PageViewPerformanceManager.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/JavaScriptSDK/AnalyticsPlugin.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/JavaScriptSDK/Telemetry/PageVisitTimeManager.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/JavaScriptSDK/Timing.js","./node_modules/@nevware21/ts-async/dist/es5/mod/ts-async.js","./node_modules/@microsoft/applicationinsights-cfgsync-js/dist-es5/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-cfgsync-js/dist-es5/CfgSyncHelperFuncs.js","./node_modules/@microsoft/applicationinsights-cfgsync-js/dist-es5/CfgSyncPlugin.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Offline.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK.Enums/InitActiveStatusEnum.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/Constants.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/SenderPostManager.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/AsyncUtils.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/ResponseHelpers.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Interfaces/Contracts/ContextTagKeys.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Interfaces/PartAExtensions.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Common/Envelope.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Common/Data.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/InternalConstants.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/EnvelopeCreator.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/SendBuffer.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/Sender.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/Serializer.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/TelemetryProcessors/Sample.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/ConnectionStringParser.js","./node_modules/@microsoft/applicationinsights-common/dist-es5/ThrottleMgr.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/NotificationManager.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/AppInsightsCore.js","./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/TelemetryInitializerPlugin.js","./node_modules/@microsoft/applicationinsights-dependencies-js/dist-es5/InternalConstants.js","./node_modules/@microsoft/applicationinsights-dependencies-js/dist-es5/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-dependencies-js/dist-es5/ajaxRecord.js","./node_modules/@microsoft/applicationinsights-dependencies-js/dist-es5/ajax.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/Application.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/Device.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/Internal.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/Location.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/Session.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/TelemetryTrace.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/User.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/TelemetryContext.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/PropertiesPlugin.js","./node_modules/@microsoft/applicationinsights-web/dist-es5/InternalConstants.js","./node_modules/@microsoft/applicationinsights-web/dist-es5/AISku.js","./node_modules/@microsoft/applicationinsights-web/dist-es5/__DynamicConstants.js","./src/app/shared/services/logging/app-insights-logging.service.ts","./src/app/shared/services/logging/error-handler.service.ts","./src/app/shared/services/message-service/message.service.ts","./src/app/shared/services/mixpanel/events/link-clicked-events.service.ts","./src/app/shared/services/mixpanel/mixpanel.service.ts","./src/app/shared/services/org-service/org.service.ts","./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","./node_modules/date-fns/esm/_lib/format/formatters/index.js","./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","./node_modules/date-fns/esm/_lib/protectedTokens/index.js","./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","./node_modules/date-fns/esm/_lib/defaultLocale/index.js","./node_modules/date-fns/esm/locale/en-US/index.js","./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","./node_modules/date-fns/esm/format/index.js","./node_modules/date-fns/esm/isValid/index.js","./node_modules/date-fns/esm/isDate/index.js","./node_modules/date-fns/esm/subMilliseconds/index.js","./src/app/shared/services/patient/patient.service.ts","./src/app/shared/services/performance-dashboard/track-performance-dashboard-constants.ts","./node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","./node_modules/@microsoft/signalr/dist/esm/Errors.js","./node_modules/@microsoft/signalr/dist/esm/HttpClient.js","./node_modules/@microsoft/signalr/dist/esm/ILogger.js","./node_modules/@microsoft/signalr/dist/esm/Loggers.js","./node_modules/@microsoft/signalr/dist/esm/Utils.js","./node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js","./node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","./node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","./node_modules/@microsoft/signalr/dist/esm/HeaderNames.js","./node_modules/@microsoft/signalr/dist/esm/ITransport.js","./node_modules/@microsoft/signalr/dist/esm/AbortController.js","./node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","./node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","./node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","./node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","./node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","./node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","./node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","./node_modules/@microsoft/signalr/dist/esm/Subject.js","./node_modules/@microsoft/signalr/dist/esm/HubConnection.js","./node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","./node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js","./src/app/shared/services/processing/processing.service.ts","./src/app/shared/services/quality-dashboard/quality.service.ts","./src/app/shared/services/recents-cache/recents-cache.service.ts","./src/app/shared/services/rest-api/rest-api.service.ts","./src/app/shared/services/router-history/router-history.service.ts","./src/app/shared/services/sidebar-toggle/sidebar-toggle.service.ts","./src/app/shared/services/toastr-message/toastr-message.service.ts","./src/app/shared/services/user-access/user-access.service.ts","./src/app/shared/pipes/pipes.module.ts","./src/app/shared/directives/directives.module.ts","./src/app/shared/shared.module.ts","./src/app/shared/utilities.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/clinicians-report/hcc-clinicians-service.service.ts","./src/app/track/track-clinical/hcc-dashboard/hcc-dashboard-filter.service.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/clinicians-report/clinicians-report2/clinicians-report2.component.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/clinicians-report/clinicians-report2/clinicians-report2.component.html","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/clinicians-report/clinicians-report.component.html","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/clinicians-report/clinicians-report.component.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/patient-detail-report/hcc-patient-detail.service.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/patient-detail-report/patient-detail-report2/patient-detail-report2.component.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/patient-detail-report/patient-detail-report2/patient-detail-report2.component.html","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/patient-detail-report/patient-detail-report.component.html","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/patient-detail-report/patient-detail-report.component.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/patient-summary-report/hcc-patient-summary.service.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/patient-summary-report/patient-summary-report2/patient-summary-report2.component.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/patient-summary-report/patient-summary-report2/patient-summary-report2.component.html","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/patient-summary-report/patient-summary-report.component.html","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/patient-summary-report/patient-summary-report.component.ts","./src/app/track/track-clinical/hcc-dashboard/coding-opportunities/hcc-dasbhoard-coding-opportunities.service.ts","./src/app/track/track-clinical/hcc-dashboard/metrics/hcc-dashboard-tier-metrics.service.ts","./node_modules/d3-selection/src/selector.js","./node_modules/d3-selection/src/selectorAll.js","./node_modules/d3-selection/src/matcher.js","./node_modules/d3-selection/src/selection/selectChild.js","./node_modules/d3-selection/src/selection/selectChildren.js","./node_modules/d3-selection/src/selection/sparse.js","./node_modules/d3-selection/src/selection/enter.js","./node_modules/d3-selection/src/selection/data.js","./node_modules/d3-selection/src/selection/sort.js","./node_modules/d3-selection/src/namespaces.js","./node_modules/d3-selection/src/namespace.js","./node_modules/d3-selection/src/selection/attr.js","./node_modules/d3-selection/src/window.js","./node_modules/d3-selection/src/selection/style.js","./node_modules/d3-selection/src/selection/property.js","./node_modules/d3-selection/src/selection/classed.js","./node_modules/d3-selection/src/selection/text.js","./node_modules/d3-selection/src/selection/html.js","./node_modules/d3-selection/src/selection/raise.js","./node_modules/d3-selection/src/selection/lower.js","./node_modules/d3-selection/src/creator.js","./node_modules/d3-selection/src/selection/insert.js","./node_modules/d3-selection/src/selection/remove.js","./node_modules/d3-selection/src/selection/clone.js","./node_modules/d3-selection/src/selection/on.js","./node_modules/d3-selection/src/selection/dispatch.js","./node_modules/d3-selection/src/selection/index.js","./node_modules/d3-selection/src/selection/select.js","./node_modules/d3-selection/src/selection/selectAll.js","./node_modules/d3-selection/src/array.js","./node_modules/d3-selection/src/selection/filter.js","./node_modules/d3-selection/src/constant.js","./node_modules/d3-selection/src/selection/exit.js","./node_modules/d3-selection/src/selection/join.js","./node_modules/d3-selection/src/selection/merge.js","./node_modules/d3-selection/src/selection/order.js","./node_modules/d3-selection/src/selection/call.js","./node_modules/d3-selection/src/selection/nodes.js","./node_modules/d3-selection/src/selection/node.js","./node_modules/d3-selection/src/selection/size.js","./node_modules/d3-selection/src/selection/empty.js","./node_modules/d3-selection/src/selection/each.js","./node_modules/d3-selection/src/selection/append.js","./node_modules/d3-selection/src/selection/datum.js","./node_modules/d3-selection/src/selection/iterator.js","./node_modules/d3-selection/src/select.js","./node_modules/d3-dispatch/src/dispatch.js","./node_modules/d3-color/src/define.js","./node_modules/d3-color/src/color.js","./node_modules/d3-interpolate/src/basis.js","./node_modules/d3-interpolate/src/constant.js","./node_modules/d3-interpolate/src/color.js","./node_modules/d3-interpolate/src/rgb.js","./node_modules/d3-interpolate/src/array.js","./node_modules/d3-interpolate/src/date.js","./node_modules/d3-interpolate/src/number.js","./node_modules/d3-interpolate/src/object.js","./node_modules/d3-interpolate/src/basisClosed.js","./node_modules/d3-interpolate/src/string.js","./node_modules/d3-interpolate/src/numberArray.js","./node_modules/d3-interpolate/src/value.js","./node_modules/d3-timer/src/timer.js","./node_modules/d3-timer/src/timeout.js","./node_modules/d3-transition/src/transition/schedule.js","./node_modules/d3-interpolate/src/transform/decompose.js","./node_modules/d3-interpolate/src/transform/parse.js","./node_modules/d3-interpolate/src/transform/index.js","./node_modules/d3-transition/src/transition/tween.js","./node_modules/d3-transition/src/transition/interpolate.js","./node_modules/d3-transition/src/transition/attr.js","./node_modules/d3-transition/src/transition/attrTween.js","./node_modules/d3-transition/src/transition/delay.js","./node_modules/d3-transition/src/transition/duration.js","./node_modules/d3-transition/src/transition/selection.js","./node_modules/d3-transition/src/transition/style.js","./node_modules/d3-transition/src/transition/index.js","./node_modules/d3-transition/src/transition/select.js","./node_modules/d3-transition/src/transition/selectAll.js","./node_modules/d3-transition/src/transition/filter.js","./node_modules/d3-transition/src/transition/merge.js","./node_modules/d3-transition/src/transition/transition.js","./node_modules/d3-transition/src/transition/on.js","./node_modules/d3-transition/src/transition/styleTween.js","./node_modules/d3-transition/src/transition/text.js","./node_modules/d3-transition/src/transition/textTween.js","./node_modules/d3-transition/src/transition/remove.js","./node_modules/d3-transition/src/transition/ease.js","./node_modules/d3-transition/src/transition/easeVarying.js","./node_modules/d3-transition/src/transition/end.js","./node_modules/d3-transition/src/selection/transition.js","./node_modules/d3-ease/src/cubic.js","./node_modules/d3-transition/src/selection/index.js","./node_modules/d3-transition/src/selection/interrupt.js","./node_modules/d3-transition/src/interrupt.js","./node_modules/d3-brush/src/brush.js","./node_modules/d3-array/src/ascending.js","./node_modules/d3-array/src/descending.js","./node_modules/d3-array/src/bisector.js","./node_modules/d3-array/src/ticks.js","./node_modules/d3-time/src/duration.js","./node_modules/d3-time/src/interval.js","./node_modules/d3-time/src/millisecond.js","./node_modules/d3-time/src/second.js","./node_modules/d3-time/src/minute.js","./node_modules/d3-time/src/hour.js","./node_modules/d3-time/src/day.js","./node_modules/d3-time/src/week.js","./node_modules/d3-time/src/month.js","./node_modules/d3-time/src/year.js","./node_modules/d3-time/src/ticks.js","./node_modules/d3-time-format/src/locale.js","./node_modules/d3-array/src/number.js","./node_modules/d3-time-format/src/defaultLocale.js","./node_modules/d3-array/src/bisect.js","./node_modules/d3-interpolate/src/round.js","./node_modules/d3-scale/src/number.js","./node_modules/d3-scale/src/continuous.js","./node_modules/d3-scale/src/constant.js","./node_modules/d3-scale/src/init.js","./node_modules/d3-format/src/formatSpecifier.js","./node_modules/d3-format/src/formatPrefixAuto.js","./node_modules/d3-format/src/formatDecimal.js","./node_modules/d3-format/src/exponent.js","./node_modules/d3-format/src/formatRounded.js","./node_modules/d3-format/src/formatTypes.js","./node_modules/d3-format/src/identity.js","./node_modules/d3-format/src/locale.js","./node_modules/d3-format/src/defaultLocale.js","./node_modules/d3-scale/src/linear.js","./node_modules/d3-scale/src/tickFormat.js","./node_modules/d3-format/src/precisionPrefix.js","./node_modules/d3-format/src/precisionRound.js","./node_modules/d3-format/src/precisionFixed.js","./node_modules/d3-array/src/range.js","./node_modules/d3-format/src/formatGroup.js","./node_modules/d3-format/src/formatNumerals.js","./node_modules/d3-format/src/formatTrim.js","./node_modules/internmap/src/index.js","./node_modules/d3-scale/src/ordinal.js","./node_modules/d3-scale/src/band.js","./node_modules/d3-array/src/quantile.js","./node_modules/d3-scale/src/quantile.js","./node_modules/d3-shape/src/math.js","./node_modules/d3-shape/src/arc.js","./node_modules/@swimlane/ngx-charts/fesm2020/swimlane-ngx-charts.mjs","./src/app/track/track-clinical/hcc-dashboard/hcc-dashboard-summary/hcc-top-disease-groups/hcc-top-disease-groups.component.html","./src/app/track/track-clinical/hcc-dashboard/hcc-dashboard-summary/hcc-top-disease-groups/hcc-top-disease-groups.component.ts","./node_modules/@amcharts/amcharts5/.internal/core/render/Circle.js","./src/app/track/track-clinical/hcc-dashboard/hcc-dashboard-summary/hcc-closure-rate-chart/hcc-closure-rate-chart.component.html","./src/app/track/track-clinical/hcc-dashboard/hcc-dashboard-summary/hcc-closure-rate-chart/hcc-closure-rate-chart.component.ts","./src/app/track/track-clinical/hcc-dashboard/hcc-dashboard-summary/hcc-dashboard-summary.component.html","./src/app/track/track-clinical/hcc-dashboard/hcc-dashboard-summary/hcc-dashboard-summary.component.ts","./src/app/track/track-clinical/hcc-dashboard/hcc-dashboard.component.html","./src/app/track/track-clinical/hcc-dashboard/hcc-dashboard.component.ts","./src/app/track/track-clinical/track-clinical-widgets/track-clinical-widgets.component.html","./src/app/track/track-clinical/track-clinical-widgets/track-clinical-widgets.component.ts","./src/app/track/track-clinical/track-clinical.component.ts","./src/app/track/track-clinical/track-clinical.component.html","./src/app/track/track-clinical/track-time-tracking/track-time-tracking-filter/track-time-tracking-filter.component.html","./src/app/track/track-clinical/track-time-tracking/track-time-tracking-filter/track-time-tracking-filter.component.ts","./src/app/track/track-clinical/track-time-tracking/track-time-tracking.component.html","./src/app/track/track-clinical/track-time-tracking/track-time-tracking.component.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/practices-report/practices-report.component.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/practices-report/practices-report.component.html","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/cins-report/cins-report.component.ts","./src/app/track/track-clinical/hcc-dashboard/dashboard-reports/cins-report/cins-report.component.html","./src/app/track/track-clinical/track-clincal-routing.module.ts","./src/app/track/track-clinical/track-clinical.module.ts","./src/app/track/track-constants.ts","./src/app/track/track-reports/services/track-report-menu-items.service.ts","./src/app/track/track-reports/services/track-report.service.ts","./src/app/track/track-reports/track-report-filter-type.ts","./src/app/track/track-reports/track-report-widgets/track-report-widgets.component.html","./src/app/track/track-reports/track-report-widgets/track-report-widgets.component.ts","./src/app/track/track.component.ts","./src/app/track/track.component.html","./src/app/track/track-summary/track-summary.component.html","./src/app/track/track-summary/track-summary.component.ts","./src/app/track/track-financial-utilization/track-financial-utilization.component.ts","./src/app/track/track-financial-utilization/track-financial-utilization.component.html","./src/app/track/track-return-on-investment/track-return-on-investment.component.ts","./src/app/track/track-return-on-investment/track-return-on-investment.component.html","./node_modules/ngx-powerbi/fesm2020/ngx-powerbi.mjs","./src/app/track/track-reports/services/track-quarter-years.service.ts","./src/app/track/track-reports/track-time-filters/track-time-filters.component.html","./src/app/track/track-reports/track-time-filters/track-time-filters.component.ts","./src/app/track/track-reports/services/track-report-filter-types.service.ts","./src/app/track/track-reports/track-report-filter-types/track-report-filter-types.component.html","./src/app/track/track-reports/track-report-filter-types/track-report-filter-types.component.ts","./src/app/track/track-reports/track-report/track-report.component.html","./src/app/track/track-reports/track-report/track-report.component.ts","./src/app/track/track-routing.module.ts","./src/app/track/track.module.ts","./src/app/views/home/home.component.html","./src/app/views/home/home.component.ts","./src/app/views/home/home-routing.module.ts","./src/app/views/home/home.module.ts","./src/app/shared/services/doc-exchange/file-download.service.ts","./src/app/views/improve/improve.component.ts","./src/app/views/improve/improve.component.html","./src/app/views/improve/improve-summary/improve-summary.component.html","./src/app/views/improve/improve-summary/improve-summary.component.ts","./src/app/shared/models/docRepo/list.ts","./src/app/views/improve/shared/doc-repo/components/my-team/team-member/team-member.component.ts","./src/app/views/improve/shared/doc-repo/components/my-team/team-member/team-member.component.html","./src/app/views/improve/shared/doc-repo/components/my-team/my-team.component.html","./src/app/views/improve/shared/doc-repo/components/my-team/my-team.component.ts","./src/app/views/improve/shared/doc-repo/components/client-contacts/client-contacts.component.ts","./src/app/views/improve/shared/doc-repo/components/client-contacts/client-contacts.component.html","./src/app/views/improve/shared/doc-repo/components/clinician-roster/clinician-roster.component.html","./src/app/views/improve/shared/doc-repo/components/clinician-roster/clinician-roster.component.ts","./src/app/shared/services/doc-exchange/document.service.ts","./node_modules/rxjs/_esm2015/internal/operators/pluck.js","./node_modules/rxjs/_esm2015/internal/observable/fromEventPattern.js","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js","./node_modules/@angular/youtube-player/fesm2022/youtube-player.mjs","./node_modules/rxjs/_esm2015/internal/operators/combineLatest.js","./node_modules/rxjs/_esm2015/internal/operators/publish.js","./src/app/views/improve/shared/youtube-video/video.component.ts","./src/app/views/improve/shared/doc-repo/components/doc-repo-item/doc-repo-item.component.html","./src/app/views/improve/shared/doc-repo/components/doc-repo-item/doc-repo-item.component.ts","./src/app/views/improve/shared/doc-repo/components/doc-repo-directory/doc-repo-directory.component.html","./src/app/views/improve/shared/doc-repo/components/doc-repo-directory/doc-repo-directory.component.ts","./src/app/views/improve/shared/doc-repo/components/doc-repo-folder-nav/doc-repo-folder-nav.component.ts","./src/app/views/improve/shared/doc-repo/components/doc-repo-folder-nav/doc-repo-folder-nav.component.html","./node_modules/ng2-file-upload/fesm2022/ng2-file-upload.mjs","./src/app/views/improve/shared/doc-upload/doc-upload.component.html","./src/app/views/improve/shared/doc-upload/doc-upload.component.ts","./src/app/views/improve/shared/prizmdoc-viewer-wrapper/prizmdoc-viewer-wrapper.component.html","./src/app/views/improve/shared/prizmdoc-viewer-wrapper/prizmdoc-viewer-wrapper.component.ts","./src/app/views/improve/shared/doc-repo/iframe-tracker.directive.ts","./src/app/views/improve/shared/doc-repo/tab-components/contacts/contacts.component.ts","./src/app/views/improve/shared/doc-repo/tab-components/contacts/contacts.component.html","./src/app/views/improve/shared/doc-repo/tab-components/steering-committee/steering-committee.component.ts","./src/app/views/improve/shared/doc-repo/tab-components/steering-committee/steering-committee.component.html","./src/app/views/improve/shared/doc-repo/tab-components/aco-onboard/aco-onboard.component.ts","./src/app/views/improve/shared/doc-repo/tab-components/aco-onboard/aco-onboard.component.html","./src/app/views/improve/shared/doc-repo/tab-components/practice-improvement/practice-improvement.component.ts","./src/app/views/improve/shared/doc-repo/tab-components/practice-improvement/practice-improvement.component.html","./src/app/views/improve/shared/doc-repo/tab-components/information-technology/information-technology.component.ts","./src/app/views/improve/shared/doc-repo/tab-components/information-technology/information-technology.component.html","./src/app/views/improve/shared/doc-repo/tab-components/events/events.component.ts","./src/app/views/improve/shared/doc-repo/tab-components/events/events.component.html","./src/app/views/improve/shared/doc-repo/doc-repo.component.html","./src/app/views/improve/shared/doc-repo/doc-repo.component.ts","./src/app/views/improve/improve-aco-board/improve-aco-board.component.ts","./src/app/views/improve/improve-aco-board/improve-aco-board.component.html","./src/app/shared/services/doc-exchange/file-search.service.ts","./src/app/views/improve/improve-search/improve-search.component.html","./src/app/views/improve/improve-routing.module.ts","./src/app/views/improve/improve-practice-improvement/improve-practice-improvement.component.ts","./src/app/views/improve/improve-practice-improvement/improve-practice-improvement.component.html","./src/app/views/improve/improve-information-technology/improve-information-technology.component.ts","./src/app/views/improve/improve-information-technology/improve-information-technology.component.html","./src/app/views/improve/improve-contacts/improve-contacts.component.ts","./src/app/views/improve/improve-contacts/improve-contacts.component.html","./src/app/views/improve/improve-search/improve-search.component.ts","./src/app/views/improve/shared/youtube-video/video.module.ts","./src/app/views/improve/improve.module.ts","./src/app/views/submit/shared/components/upcoming-submission-summary/submit-upcoming-submission-summary.component.html","./src/app/views/submit/shared/components/upcoming-submission-summary/upcoming-submission-summary.ts","./src/app/views/submit/submit.component.ts","./src/app/views/submit/submit.component.html","./src/app/views/submit/submit-summary/submit-summary.component.html","./src/app/views/submit/submit-summary/submit-summary.component.ts","./src/app/views/submit/submit-quality/submit-quality.ts","./src/app/views/submit/shared/functions/submit-form-functions.ts","./src/app/shared/validators.ts","./src/app/views/submit/submit-quality/submission-form/form-block/form-block.component.html","./src/app/views/submit/submit-quality/submission-form/form-block/form-block.component.ts","./src/app/views/submit/submit-quality/submit-quality.component.html","./src/app/views/submit/submit-quality/submit-quality.component.ts","./src/app/shared/models/forms/compliance-form-question.ts","./src/app/shared/mocks/mock-compliance-form-questions.ts","./src/app/views/submit/submit-compliance/compliance-form-question/compliance-form-question.component.html","./src/app/views/submit/submit-compliance/compliance-form-question/compliance-form-question.component.ts","./src/app/views/submit/submit-compliance/submit-compliance.component.html","./src/app/views/submit/submit-compliance/submit-compliance.component.ts","./src/app/shared/mocks/forms/forms-select-dropdowns.ts","./src/app/shared/models/forms/form-question-constants.ts","./src/app/views/submit/submit-promoting-interoperability/submit-interoperability-question/submit-interoperability-question.component.html","./src/app/views/submit/submit-promoting-interoperability/submit-interoperability-question/submit-interoperability-question.component.ts","./src/app/views/submit/submit-promoting-interoperability/submit-interoperability-security-risk/submit-interoperability-security-risk.component.html","./src/app/views/submit/submit-promoting-interoperability/submit-interoperability-security-risk/submit-interoperability-security-risk.component.ts","./src/app/views/submit/submit-promoting-interoperability/submit-interoperability-yes-no/submit-interoperability-yes-no.component.html","./src/app/views/submit/submit-promoting-interoperability/submit-interoperability-yes-no/submit-interoperability-yes-no.component.ts","./src/app/views/submit/submit-promoting-interoperability/submit-interoperability-registry-question/submit-interoperability-registry-question.component.html","./src/app/views/submit/submit-promoting-interoperability/submit-interoperability-registry-question/submit-interoperability-registry-question.component.ts","./src/app/views/submit/shared/components/checkbox-question/checkbox-question.component.html","./src/app/views/submit/shared/components/checkbox-question/checkbox-question.component.ts","./src/app/views/submit/submit-promoting-interoperability/submit-interoperability-date-range/submit-interoperability-date-range.component.html","./src/app/views/submit/submit-promoting-interoperability/submit-interoperability-date-range/submit-interoperability-date-range.component.ts","./src/app/views/submit/submit-promoting-interoperability/submit-promoting-interoperability.component.html","./src/app/views/submit/submit-promoting-interoperability/submit-promoting-interoperability.component.ts","./src/app/views/submit/submit-meeting/submit-meeting.ts","./src/app/views/submit/submit-meeting/submit-meeting.component.html","./src/app/views/submit/submit-meeting/submit-meeting.component.ts","./src/app/views/submit/admin-report/shared/clickable.component.ts","./src/app/views/submit/admin-report/shared/clickable.parent.component.ts","./src/app/views/submit/admin-report/shared/admin-report.component.html","./src/app/views/submit/admin-report/shared/admin-report.component.ts","./src/app/views/submit/admin-report/shared/detail-cell-renderer.component.ts","./src/app/views/submit/admin-report/shared/admin-report-practice.component.html","./src/app/views/submit/admin-report/shared/admin-report-practice.component.ts","./src/app/views/submit/admin-report/submit-quality-report/submit-quality-admin-report.component.html","./src/app/views/submit/admin-report/submit-quality-report/submit-quality-admin-report.component.ts","./src/app/views/submit/admin-report/submit-compliance-report/submit-compliance-admin-report.component.html","./src/app/views/submit/admin-report/submit-compliance-report/submit-compliance-admin-report.component.ts","./src/app/views/submit/admin-report/submit-promoting-interoperability-report/submit-promoting-interoperability-admin-report.component.html","./src/app/views/submit/admin-report/submit-promoting-interoperability-report/submit-promoting-interoperability-admin-report.component.ts","./src/app/views/submit/submit-routing.module.ts","./src/app/views/submit/admin-report/shared/clickable.module.ts","./src/app/views/submit/submit.module.ts","./src/environments/environment.coachProd.ts","./src/environments/environmentTypeDef.ts","./src/app/views/eula-agreement/eula-agreement.component.ts","./src/app/views/eula-agreement/eula-agreement.component.html","./src/app/views/timeout/timeout.component.ts","./src/app/views/timeout/timeout.component.html","./src/app/views/signout/signout.component.html","./src/app/views/signout/signout.component.ts","./src/app/views/auto-lopgin/auto-login.component.ts","./src/app/views/auto-lopgin/auto-login.component.html","./src/app/views/no-auth/no-auth.component.ts","./src/app/views/no-auth/no-auth.component.html","./src/app/app-routing.module.ts","./src/app/views/root/root.component.ts","./src/app/views/root/root.component.html","./src/app/core/header/header-scope-overlay/header-scope-overlay.component.ts","./src/app/core/header/header-hierarchy-overlay/header-hierarchy-overlay.component.html","./src/app/core/header/header-hierarchy-overlay/header-hierarchy-overlay.component.ts","./src/app/shared/services/patient/patient-search.service.ts","./src/app/core/header/header-search/header-search.component.html","./src/app/core/header/header-search/header-search.component.ts","./src/app/core/header/header-processes/header-process-progress/header-process-progress.component.html","./src/app/core/header/header-processes/header-process-progress/header-process-progress.component.ts","./src/app/core/header/header-processes/header-processes.component.html","./src/app/core/header/header-processes/header-processes.component.ts","./src/app/shared/models/views.ts","./src/app/shared/services/active-view/active-view.service.ts","./src/app/core/header/header.component.html","./src/app/core/header/header.component.ts","./src/app/core/sidebar/sidebar-logo/sidebar-logo.component.html","./src/app/core/sidebar/sidebar-logo/sidebar-logo.component.ts","./src/app/shared/services/help-panel/help-panel.service.ts","./src/app/core/sidebar/sidebar-menu/sidebar-menu.component.html","./src/app/core/sidebar/sidebar-menu/sidebar-menu.component.ts","./src/app/shared/services/tier-name-lookup/tier-name-lookup.service.ts","./src/app/shared/services/recents-lookup/document-lookup/document-lookup.service.ts","./src/app/shared/services/recents-lookup/report-lookup/report-lookup.service.ts","./src/app/shared/services/recents-lookup/recents-lookup.service.ts","./src/app/core/sidebar/sidebar-recent/sidebar-recent-element/sidebar-recent-element.component.html","./src/app/core/sidebar/sidebar-recent/sidebar-recent-element/sidebar-recent-element.component.ts","./src/app/core/sidebar/sidebar-recent/sidebar-recent.component.html","./src/app/core/sidebar/sidebar-recent/sidebar-recent.component.ts","./src/app/core/sidebar/sidebar-account/sidebar-account-dropdown/sidebar-account-dropdown.component.ts","./src/app/core/sidebar/sidebar-account/sidebar-account-dropdown/sidebar-account-dropdown.component.html","./src/app/core/sidebar/sidebar-account/sidebar-account.component.html","./src/app/core/sidebar/sidebar-account/sidebar-account.component.ts","./src/app/core/sidebar/sidebar.component.html","./src/app/core/sidebar/sidebar.component.ts","./src/app/shared/modules/help-panel/help-panel.component.ts","./src/app/shared/modules/help-panel/help-panel.component.html","./src/app/app.component.html","./src/app/app.component.ts","./src/app/core/sidebar/sidebar.module.ts","./src/app/core/header/header.module.ts","./src/app/core/core.module.ts","./src/app/views/views.module.ts","./src/app/shared/modules/help-panel/help-panel.module.ts","./src/app/shared/services/Auth.Interceptor/auth.Interceptor.ts","./node_modules/apollo-angular/fesm2022/ngApolloLinkHttp.mjs","./node_modules/@apollo/client/cache/core/cache.js","./node_modules/@apollo/client/cache/core/types/common.js","./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js","./node_modules/@apollo/client/cache/inmemory/helpers.js","./node_modules/@apollo/client/cache/inmemory/entityStore.js","./node_modules/@apollo/client/cache/inmemory/object-canon.js","./node_modules/@apollo/client/cache/inmemory/readFromStore.js","./node_modules/@apollo/client/cache/inmemory/key-extractor.js","./node_modules/@apollo/client/cache/inmemory/policies.js","./node_modules/@apollo/client/cache/inmemory/writeToStore.js","./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js","./src/app/graphql.module.ts","./node_modules/@apollo/client/link/context/index.js","./node_modules/@angular/animations/fesm2022/browser.mjs","./node_modules/@angular/platform-browser/fesm2022/animations.mjs","./src/app/api/track/track-api.module.ts","./src/app/api/ih-awv/api-configuration.ts","./src/app/api/ih-awv/base-service.ts","./src/app/api/ih-awv/request-builder.ts","./src/app/api/ih-awv/services/ihe.service.ts","./src/app/api/ih-awv/in-home-awv-api.module.ts","./src/app/api/access2/access-2-api.module.ts","./src/app/api/care-orch/services/audit-log.service.ts","./src/app/api/care-orch/care-orch-api.module.ts","./src/app/shared/services/care-orchestration/care-orch-intercepter.service.ts","./src/app/api/user-detail/user-detail-api.module.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@amcharts/amcharts4/.internal/core/Base.js","./node_modules/@amcharts/amcharts4/.internal/core/Component.js","./node_modules/@amcharts/amcharts4/.internal/core/Container.js","./node_modules/@amcharts/amcharts4/.internal/core/DataItem.js","./node_modules/@amcharts/amcharts4/.internal/core/Options.js","./node_modules/@amcharts/amcharts4/.internal/core/Registry.js","./node_modules/@amcharts/amcharts4/.internal/core/Sprite.js","./node_modules/@amcharts/amcharts4/.internal/core/SpriteEvents.js","./node_modules/@amcharts/amcharts4/.internal/core/SpriteState.js","./node_modules/@amcharts/amcharts4/.internal/core/System.js","./node_modules/@amcharts/amcharts4/.internal/core/data/CSVParser.js","./node_modules/@amcharts/amcharts4/.internal/core/data/DataLoader.js","./node_modules/@amcharts/amcharts4/.internal/core/data/DataParser.js","./node_modules/@amcharts/amcharts4/.internal/core/data/DataSource.js","./node_modules/@amcharts/amcharts4/.internal/core/data/JSONParser.js","./node_modules/@amcharts/amcharts4/.internal/core/defs/SVGDefaults.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/3d/Cone.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/3d/Rectangle3D.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/3d/Slice3D.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Button.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Circle.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Ellipse.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Label.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Line.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Modal.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/PointedRectangle.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/PointedShape.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Polyline.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Polyspline.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/PopupCSS.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Popup.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Rectangle.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/ResizeButton.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/RoundedRectangle.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Scrollbar.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Slice.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/TextLink.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Tooltip.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Trapezoid.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Triangle.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/WavedCircle.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/WavedLine.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/WavedRectangle.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/ZoomOutButton.js","./node_modules/@amcharts/amcharts4/.internal/core/export/Export.js","./node_modules/@amcharts/amcharts4/.internal/core/export/ExportCSS.js","./node_modules/@amcharts/amcharts4/.internal/core/export/ExportMenu.js","./node_modules/@amcharts/amcharts4/.internal/core/formatters/DateFormatter.js","./node_modules/@amcharts/amcharts4/.internal/core/formatters/DurationFormatter.js","./node_modules/@amcharts/amcharts4/.internal/core/formatters/NumberFormatter.js","./node_modules/@amcharts/amcharts4/.internal/core/formatters/TextFormatter.js","./node_modules/@amcharts/amcharts4/.internal/core/interaction/Inertia.js","./node_modules/@amcharts/amcharts4/.internal/core/interaction/Interaction.js","./node_modules/@amcharts/amcharts4/.internal/core/interaction/InteractionKeyboardObject.js","./node_modules/@amcharts/amcharts4/.internal/core/interaction/InteractionObject.js","./node_modules/@amcharts/amcharts4/.internal/core/interaction/InteractionObjectEvents.js","./node_modules/@amcharts/amcharts4/.internal/core/interaction/Mouse.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/AMElement.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/Group.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/Paper.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/Path.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/ResizeSensor.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/SVGContainer.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/Smoothing.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/ColorModifier.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/GradientModifier.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/LinearGradient.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/LinearGradientModifier.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/Pattern.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/RadialGradient.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/DesaturateFilter.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/DropShadowFilter.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/Filter.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/LightenFilter.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Adapter.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Animation.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Array.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/AsyncPending.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Browser.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Cache.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Color.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/ColorSet.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Colors.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/DOM.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Dictionary.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Disposer.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Ease.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/EventDispatcher.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/InterfaceColorSet.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Iterator.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Keyboard.js","./node_modules/@amcharts/amcharts4/lang/en.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Language.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/List.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Log.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Math.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Net.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Number.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Object.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Order.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Percent.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Responsive.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/SortedList.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/String.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Strings.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Time.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Type.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Utils.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Validatable.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Grip.js","./node_modules/@amcharts/amcharts4/.internal/charts/Chart.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/Bullet.js","./node_modules/@amcharts/amcharts4/.internal/charts/Legend.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/Series.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/SerialChart.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisBreak.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/Axis.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLine.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisFill.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/Grid.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLabel.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/Tick.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisTick.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRenderer.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisBullet.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererY.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/ValueAxisBreak.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/ValueAxis.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/DateAxisBreak.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/DateAxis.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererX.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/CategoryAxisBreak.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/CategoryAxis.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/XYSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/XYChartScrollbar.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/XYChart.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/LineSeriesSegment.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/DurationAxis.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/LineSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/RadarSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisFillCircular.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/GridCircular.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLabelCircular.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererCircular.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererRadial.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/RadarChart.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/ClockHand.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/GaugeChart.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/PercentSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/PercentChart.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/PieTick.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/PieSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/PieChart.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/PieSeries3D.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/PieChart3D.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/SlicedChart.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/FlowDiagramNode.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/FlowDiagramLink.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/FlowDiagram.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/LabelBullet.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/SankeyNode.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/SankeyLink.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/SankeyDiagram.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/ChordNode.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/QuadraticCurve.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/ChordLink.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/ChordDiagram.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/Column.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/ColumnSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/TreeMapSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/TreeMap.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererX3D.js","./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererY3D.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/Column3D.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/ColumnSeries3D.js","./node_modules/@amcharts/amcharts4/.internal/charts/types/XYChart3D.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/HeatLegend.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/Candlestick.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/CandlestickSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/OHLC.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/OHLCSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/StepLineSeriesSegment.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/StepLineSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/RadarColumn.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/RadarColumnSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/FunnelSlice.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/FunnelTick.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/FunnelSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/PyramidSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/PictorialStackedSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/ConeColumn.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/ConeSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/CurvedColumn.js","./node_modules/@amcharts/amcharts4/.internal/charts/series/CurvedColumnSeries.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/CircleBullet.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/ErrorBullet.js","./node_modules/@amcharts/amcharts4/.internal/charts/elements/NavigationBar.js","./node_modules/@amcharts/amcharts4/.internal/charts/cursors/Cursor.js","./node_modules/@amcharts/amcharts4/.internal/charts/cursors/XYCursor.js","./node_modules/@amcharts/amcharts4/.internal/charts/cursors/RadarCursor.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Image.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Polyarc.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Morpher.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Polygon.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Preloader.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/CloseButton.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/SwitchButton.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/Slider.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/PlayButton.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/RadialGradientModifier.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/LinePattern.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/CirclePattern.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/RectPattern.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/ColorizeFilter.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/BlurFilter.js","./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/FocusFilter.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/PatternSet.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Plugin.js","./node_modules/@amcharts/amcharts4/.internal/core/elements/AmChartsLogo.js","./node_modules/@amcharts/amcharts4/.internal/core/utils/Instance.js","./node_modules/@amcharts/amcharts4/.internal/themes/animated.js","./node_modules/@amcharts/amcharts5/.internal/core/util/ColorSet.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYChartDefaultTheme.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Chart.js","./node_modules/@amcharts/amcharts5/.internal/core/render/SerialChart.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYChart.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYCursor.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/Axis.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Draw.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Line.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Tick.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisTick.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisLabel.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/CategoryAxis.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/Grid.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis.js","./node_modules/d3-shape/src/area.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/LineSeries.js","./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/XYSeries.js","./node_modules/@amcharts/amcharts5/.internal/core/Registry.js","./node_modules/@amcharts/amcharts5/.internal/core/util/ResizeSensor.js","./node_modules/@amcharts/amcharts5/.internal/core/util/InterfaceColors.js","./node_modules/@amcharts/amcharts5/.internal/core/util/NumberFormatter.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Timezone.js","./node_modules/@amcharts/amcharts5/.internal/core/util/DateFormatter.js","./node_modules/@amcharts/amcharts5/.internal/core/util/DurationFormatter.js","./node_modules/@amcharts/amcharts5/locales/en.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Language.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Matrix.js","./node_modules/svg-arc-to-cubic-bezier/modules/index.js","./node_modules/@amcharts/amcharts5/.internal/core/render/backend/CanvasRenderer.js","./node_modules/@amcharts/amcharts5/.internal/core/Root.js","./node_modules/@amcharts/amcharts5/.internal/core/Theme.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Bullet.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Button.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Data.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Component.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Children.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Container.js","./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/Pattern.js","./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/PicturePattern.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Graphics.js","./node_modules/@amcharts/amcharts5/.internal/core/render/GridLayout.js","./node_modules/@amcharts/amcharts5/.internal/core/render/HorizontalLayout.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Label.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Layout.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Legend.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Rectangle.js","./node_modules/@amcharts/amcharts5/.internal/core/render/RoundedRectangle.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Scrollbar.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Series.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Sprite.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Text.js","./node_modules/@amcharts/amcharts5/.internal/core/render/PointedRectangle.js","./node_modules/@amcharts/amcharts5/.internal/core/render/Tooltip.js","./node_modules/@amcharts/amcharts5/.internal/core/render/VerticalLayout.js","./node_modules/@amcharts/amcharts5/.internal/core/render/backend/Renderer.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Animation.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Array.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Color.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Disposer.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Ease.js","./node_modules/@amcharts/amcharts5/.internal/core/util/States.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Entity.js","./node_modules/@amcharts/amcharts5/.internal/core/util/EventDispatcher.js","./node_modules/@amcharts/amcharts5/.internal/core/util/List.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Math.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Object.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Order.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Percent.js","./node_modules/@amcharts/amcharts5/.internal/core/util/PopulateString.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Template.js","./node_modules/@amcharts/amcharts5/.internal/core/util/TextFormatter.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Time.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Type.js","./node_modules/@amcharts/amcharts5/.internal/core/util/Utils.js","./node_modules/@amcharts/amcharts5/.internal/themes/DefaultTheme.js","./node_modules/@amcharts/amcharts5/themes/Animated.js","./node_modules/@amcharts/amcharts5/.internal/themes/AnimatedTheme.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/clients/sugarpod-client.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/clients/wpapi-client.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/clients/wpdb-client.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/index.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/_common.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/alert.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/anomaly.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/completion.base.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/configurableField.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/configuration.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/episodeOfCare.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/notification.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/organization.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/protocol.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/sugarpod-model.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/survey.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/surveyResponse.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/systemSettings.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/task.base.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/task.facet.repeating.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/task.facet.rules.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/task.type-bloodPressure.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/task.type-bloodSugar.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/task.type-twilioFlow.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/task.type-weight.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/template.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/timeTrackingEvent.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/token.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/user.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/userReport.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/userSurvey.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/wp-model.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/wpapi-model.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/models/wpdb-model.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/sugarpod.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/wpapi.js","./node_modules/@hcd-caravanhealth/pkg-wptypes/dist/src/wpdb.js","./node_modules/ag-grid-angular/fesm2015/ag-grid-angular.js","./node_modules/ag-grid-community/dist/ag-grid-community.auto.esm.js","./node_modules/ag-grid-enterprise/dist/ag-grid-enterprise.auto.esm.js","./node_modules/rxjs/_esm2015/internal/util/TimeoutError.js","./node_modules/rxjs/_esm2015/internal/operators/retryWhen.js","./node_modules/rxjs/_esm2015/internal/operators/timeoutWith.js","./node_modules/angular-auth-oidc-client/fesm2015/angular-auth-oidc-client.js","./node_modules/rxjs/_esm2015/internal/operators/timeout.js","./node_modules/date-fns/esm/_lib/defaultOptions/index.js","./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","./node_modules/date-fns/esm/_lib/requiredArgs/index.js","./node_modules/date-fns/esm/_lib/toInteger/index.js","./node_modules/date-fns/esm/addDays/index.js","./node_modules/date-fns/esm/addMilliseconds/index.js","./node_modules/date-fns/esm/addMonths/index.js","./node_modules/date-fns/esm/constants/index.js","./node_modules/date-fns/esm/compareAsc/index.js","./node_modules/date-fns/esm/differenceInYears/index.js","./node_modules/date-fns/esm/differenceInCalendarYears/index.js","./node_modules/date-fns/esm/endOfDay/index.js","./node_modules/date-fns/esm/endOfMonth/index.js","./node_modules/date-fns/esm/startOfDay/index.js","./node_modules/date-fns/esm/startOfMonth/index.js","./node_modules/date-fns/esm/subDays/index.js","./node_modules/date-fns/esm/subMonths/index.js","./node_modules/date-fns/esm/toDate/index.js","./node_modules/desandro-matches-selector/matches-selector.js","./node_modules/ev-emitter/ev-emitter.js","./node_modules/exceljs/dist/exceljs.min.js","./node_modules/file-saver/dist/FileSaver.min.js","./node_modules/fizzy-ui-utils/utils.js","./node_modules/get-size/get-size.js","./node_modules/graphql/jsutils/isObjectLike.mjs","./node_modules/graphql/polyfills/symbols.mjs","./node_modules/graphql/language/location.mjs","./node_modules/graphql/language/printLocation.mjs","./node_modules/graphql/error/GraphQLError.mjs","./node_modules/graphql/error/syntaxError.mjs","./node_modules/graphql/language/tokenKind.mjs","./node_modules/graphql/jsutils/devAssert.mjs","./node_modules/graphql/language/source.mjs","./node_modules/graphql/language/directiveLocation.mjs","./node_modules/graphql/language/lexer.mjs","./node_modules/graphql/language/parser.mjs","./node_modules/graphql-tag/lib/index.js","./node_modules/jsrsasign-reduced/jsrsasign.js","./node_modules/lodash/lodash.js","./node_modules/masonry-layout/masonry.js","./node_modules/mixpanel-browser/dist/mixpanel.cjs.js","./node_modules/moment/locale/af.js","./node_modules/moment/locale/ar-dz.js","./node_modules/moment/locale/ar-kw.js","./node_modules/moment/locale/ar-ly.js","./node_modules/moment/locale/ar-ma.js","./node_modules/moment/locale/ar-ps.js","./node_modules/moment/locale/ar-sa.js","./node_modules/moment/locale/ar-tn.js","./node_modules/moment/locale/ar.js","./node_modules/moment/locale/az.js","./node_modules/moment/locale/be.js","./node_modules/moment/locale/bg.js","./node_modules/moment/locale/bm.js","./node_modules/moment/locale/bn-bd.js","./node_modules/moment/locale/bn.js","./node_modules/moment/locale/bo.js","./node_modules/moment/locale/br.js","./node_modules/moment/locale/bs.js","./node_modules/moment/locale/ca.js","./node_modules/moment/locale/cs.js","./node_modules/moment/locale/cv.js","./node_modules/moment/locale/cy.js","./node_modules/moment/locale/da.js","./node_modules/moment/locale/de-at.js","./node_modules/moment/locale/de-ch.js","./node_modules/moment/locale/de.js","./node_modules/moment/locale/dv.js","./node_modules/moment/locale/el.js","./node_modules/moment/locale/en-au.js","./node_modules/moment/locale/en-ca.js","./node_modules/moment/locale/en-gb.js","./node_modules/moment/locale/en-ie.js","./node_modules/moment/locale/en-il.js","./node_modules/moment/locale/en-in.js","./node_modules/moment/locale/en-nz.js","./node_modules/moment/locale/en-sg.js","./node_modules/moment/locale/eo.js","./node_modules/moment/locale/es-do.js","./node_modules/moment/locale/es-mx.js","./node_modules/moment/locale/es-us.js","./node_modules/moment/locale/es.js","./node_modules/moment/locale/et.js","./node_modules/moment/locale/eu.js","./node_modules/moment/locale/fa.js","./node_modules/moment/locale/fi.js","./node_modules/moment/locale/fil.js","./node_modules/moment/locale/fo.js","./node_modules/moment/locale/fr-ca.js","./node_modules/moment/locale/fr-ch.js","./node_modules/moment/locale/fr.js","./node_modules/moment/locale/fy.js","./node_modules/moment/locale/ga.js","./node_modules/moment/locale/gd.js","./node_modules/moment/locale/gl.js","./node_modules/moment/locale/gom-deva.js","./node_modules/moment/locale/gom-latn.js","./node_modules/moment/locale/gu.js","./node_modules/moment/locale/he.js","./node_modules/moment/locale/hi.js","./node_modules/moment/locale/hr.js","./node_modules/moment/locale/hu.js","./node_modules/moment/locale/hy-am.js","./node_modules/moment/locale/id.js","./node_modules/moment/locale/is.js","./node_modules/moment/locale/it-ch.js","./node_modules/moment/locale/it.js","./node_modules/moment/locale/ja.js","./node_modules/moment/locale/jv.js","./node_modules/moment/locale/ka.js","./node_modules/moment/locale/kk.js","./node_modules/moment/locale/km.js","./node_modules/moment/locale/kn.js","./node_modules/moment/locale/ko.js","./node_modules/moment/locale/ku-kmr.js","./node_modules/moment/locale/ku.js","./node_modules/moment/locale/ky.js","./node_modules/moment/locale/lb.js","./node_modules/moment/locale/lo.js","./node_modules/moment/locale/lt.js","./node_modules/moment/locale/lv.js","./node_modules/moment/locale/me.js","./node_modules/moment/locale/mi.js","./node_modules/moment/locale/mk.js","./node_modules/moment/locale/ml.js","./node_modules/moment/locale/mn.js","./node_modules/moment/locale/mr.js","./node_modules/moment/locale/ms-my.js","./node_modules/moment/locale/ms.js","./node_modules/moment/locale/mt.js","./node_modules/moment/locale/my.js","./node_modules/moment/locale/nb.js","./node_modules/moment/locale/ne.js","./node_modules/moment/locale/nl-be.js","./node_modules/moment/locale/nl.js","./node_modules/moment/locale/nn.js","./node_modules/moment/locale/oc-lnc.js","./node_modules/moment/locale/pa-in.js","./node_modules/moment/locale/pl.js","./node_modules/moment/locale/pt-br.js","./node_modules/moment/locale/pt.js","./node_modules/moment/locale/ro.js","./node_modules/moment/locale/ru.js","./node_modules/moment/locale/sd.js","./node_modules/moment/locale/se.js","./node_modules/moment/locale/si.js","./node_modules/moment/locale/sk.js","./node_modules/moment/locale/sl.js","./node_modules/moment/locale/sq.js","./node_modules/moment/locale/sr-cyrl.js","./node_modules/moment/locale/sr.js","./node_modules/moment/locale/ss.js","./node_modules/moment/locale/sv.js","./node_modules/moment/locale/sw.js","./node_modules/moment/locale/ta.js","./node_modules/moment/locale/te.js","./node_modules/moment/locale/tet.js","./node_modules/moment/locale/tg.js","./node_modules/moment/locale/th.js","./node_modules/moment/locale/tk.js","./node_modules/moment/locale/tl-ph.js","./node_modules/moment/locale/tlh.js","./node_modules/moment/locale/tr.js","./node_modules/moment/locale/tzl.js","./node_modules/moment/locale/tzm-latn.js","./node_modules/moment/locale/tzm.js","./node_modules/moment/locale/ug-cn.js","./node_modules/moment/locale/uk.js","./node_modules/moment/locale/ur.js","./node_modules/moment/locale/uz-latn.js","./node_modules/moment/locale/uz.js","./node_modules/moment/locale/vi.js","./node_modules/moment/locale/x-pseudo.js","./node_modules/moment/locale/yo.js","./node_modules/moment/locale/zh-cn.js","./node_modules/moment/locale/zh-hk.js","./node_modules/moment/locale/zh-mo.js","./node_modules/moment/locale/zh-tw.js","./node_modules/moment/moment.js","./node_modules/outlayer/item.js","./node_modules/outlayer/outlayer.js","./node_modules/pdfmake/build/pdfmake.js","./node_modules/pdfmake/build/vfs_fonts.js","./node_modules/powerbi-client/dist/powerbi.js","./node_modules/powerbi-models/dist/models.js","./node_modules/rfdc/index.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/interval.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mapTo.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/retry.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/shareReplay.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/rxjs/_esm2015/internal/operators/skipWhile.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/moment/locale/ sync ^\\.\\/.*$","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/AsyncGenerator.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/OverloadYield.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/asyncIterator.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/asyncToGenerator.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js","./node_modules/@angular/animations/fesm2022/animations.mjs","./node_modules/@angular/cdk/fesm2022/a11y.mjs","./node_modules/@angular/cdk/fesm2022/bidi.mjs","./node_modules/@angular/cdk/fesm2022/coercion.mjs","./node_modules/@angular/cdk/fesm2022/keycodes.mjs","./node_modules/@angular/cdk/fesm2022/layout.mjs","./node_modules/rxjs/_esm2015/internal/operators/takeWhile.js","./node_modules/@angular/cdk/fesm2022/overlay.mjs","./node_modules/@angular/cdk/fesm2022/platform.mjs","./node_modules/@angular/cdk/fesm2022/portal.mjs","./node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/_esm2015/internal/util/Immediate.js","./node_modules/rxjs/_esm2015/internal/scheduler/asap.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js","./node_modules/rxjs/_esm2015/internal/operators/audit.js","./node_modules/rxjs/_esm2015/internal/operators/auditTime.js","./node_modules/@angular/cdk/fesm2022/scrolling.mjs","./node_modules/@angular/common/fesm2022/common.mjs","./node_modules/@angular/common/fesm2022/http.mjs","./node_modules/@angular/core/fesm2022/core.mjs","./node_modules/@angular/forms/fesm2022/forms.mjs","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/@angular/material/fesm2022/autocomplete.mjs","./node_modules/@angular/material/fesm2022/core.mjs","./node_modules/@angular/cdk/fesm2022/observers.mjs","./node_modules/@angular/material/fesm2022/form-field.mjs","./node_modules/@angular/cdk/fesm2022/text-field.mjs","./node_modules/@angular/material/fesm2022/input.mjs","./node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs","./node_modules/@angular/router/fesm2022/router.mjs","./node_modules/rxjs/_esm2015/internal/util/isObservable.js","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/@apollo/client/cache/inmemory/reactiveVars.js","./node_modules/@apollo/client/core/equalByQuery.js","./node_modules/@apollo/client/link/core/ApolloLink.js","./node_modules/@apollo/client/link/utils/createOperation.js","./node_modules/@apollo/client/link/utils/transformOperation.js","./node_modules/@apollo/client/link/utils/validateOperation.js","./node_modules/@apollo/client/utilities/caching/caches.js","./node_modules/@apollo/client/utilities/caching/getMemoryInternals.js","./node_modules/@apollo/client/utilities/caching/sizes.js","./node_modules/@apollo/client/utilities/common/arrays.js","./node_modules/@apollo/client/utilities/common/canUse.js","./node_modules/@apollo/client/utilities/common/canonicalStringify.js","./node_modules/@apollo/client/utilities/common/cloneDeep.js","./node_modules/@apollo/client/utilities/common/compact.js","./node_modules/@apollo/client/utilities/common/makeUniqueId.js","./node_modules/@apollo/client/utilities/common/mergeDeep.js","./node_modules/@apollo/client/utilities/common/objects.js","./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js","./node_modules/ts-invariant/lib/invariant.js","./node_modules/@apollo/client/utilities/globals/maybe.js","./node_modules/@apollo/client/utilities/globals/global.js","./node_modules/@apollo/client/utilities/globals/invariantWrappers.js","./node_modules/@apollo/client/utilities/globals/index.js","./node_modules/@apollo/client/utilities/graphql/DocumentTransform.js","./node_modules/@apollo/client/utilities/graphql/directives.js","./node_modules/@apollo/client/utilities/graphql/fragments.js","./node_modules/@apollo/client/utilities/graphql/getFromAST.js","./node_modules/@apollo/client/utilities/graphql/print.js","./node_modules/@apollo/client/utilities/graphql/storeUtils.js","./node_modules/@apollo/client/utilities/graphql/transform.js","./node_modules/@apollo/client/version.js","./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","./node_modules/@fortawesome/angular-fontawesome/fesm2022/angular-fontawesome.mjs","./node_modules/@fortawesome/free-solid-svg-icons/index.mjs","./node_modules/@wry/caches/lib/strong.js","./node_modules/@wry/caches/lib/weak.js","./node_modules/@wry/equality/lib/index.js","./node_modules/@wry/trie/lib/index.js","./node_modules/positioning/dist/positioning.js","./node_modules/calendar-utils/calendar-utils.js","./node_modules/rxjs/_esm2015/internal/operators/count.js","./node_modules/rxjs/_esm2015/internal/operators/pairwise.js","./node_modules/@mattlewis92/dom-autoscroller/dist/bundle.es.js","./node_modules/angular-draggable-droppable/fesm2020/angular-draggable-droppable.mjs","./node_modules/angular-resizable-element/fesm2020/angular-resizable-element.mjs","./node_modules/angular-calendar/fesm2020/angular-calendar.mjs","./node_modules/rxjs/_esm2015/internal/operators/bufferTime.js","./node_modules/angular-user-idle/fesm2020/angular-user-idle.mjs","./node_modules/@apollo/client/core/networkStatus.js","./node_modules/@apollo/client/link/core/execute.js","./node_modules/@apollo/client/link/http/serializeFetchParameter.js","./node_modules/@apollo/client/link/http/iterators/reader.js","./node_modules/@apollo/client/link/http/responseIterator.js","./node_modules/@apollo/client/link/http/iterators/async.js","./node_modules/@apollo/client/link/http/iterators/promise.js","./node_modules/@apollo/client/link/http/iterators/nodeStream.js","./node_modules/@apollo/client/link/utils/throwServerError.js","./node_modules/@apollo/client/errors/index.js","./node_modules/@apollo/client/utilities/common/incrementalResult.js","./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js","./node_modules/@apollo/client/link/http/checkFetcher.js","./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js","./node_modules/@apollo/client/link/utils/fromError.js","./node_modules/@apollo/client/link/http/createHttpLink.js","./node_modules/@apollo/client/link/http/selectURI.js","./node_modules/@apollo/client/link/utils/filterOperationVariables.js","./node_modules/@apollo/client/link/http/rewriteURIForGET.js","./node_modules/@apollo/client/link/http/HttpLink.js","./node_modules/@apollo/client/utilities/observables/asyncMap.js","./node_modules/@apollo/client/utilities/common/errorHandling.js","./node_modules/@apollo/client/utilities/observables/iteration.js","./node_modules/@apollo/client/utilities/observables/subclassing.js","./node_modules/@apollo/client/utilities/observables/Concast.js","./node_modules/@apollo/client/core/ObservableQuery.js","./node_modules/graphql/language/predicates.mjs","./node_modules/@apollo/client/core/LocalState.js","./node_modules/@apollo/client/core/QueryInfo.js","./node_modules/@apollo/client/core/QueryManager.js","./node_modules/@apollo/client/utilities/common/mergeOptions.js","./node_modules/@apollo/client/core/ApolloClient.js","./node_modules/apollo-angular/fesm2022/ngApollo.mjs","./node_modules/d3-shape/src/array.js","./node_modules/d3-shape/src/constant.js","./node_modules/d3-shape/src/curve/linear.js","./node_modules/d3-shape/src/line.js","./node_modules/d3-path/src/path.js","./node_modules/d3-shape/src/path.js","./node_modules/d3-shape/src/point.js","./node_modules/graphql/jsutils/inspect.mjs","./node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","./node_modules/graphql/jsutils/defineInspect.mjs","./node_modules/graphql/jsutils/invariant.mjs","./node_modules/graphql/language/ast.mjs","./node_modules/graphql/language/blockString.mjs","./node_modules/graphql/language/kinds.mjs","./node_modules/graphql/language/printer.mjs","./node_modules/graphql/language/visitor.mjs","./node_modules/marked/lib/marked.esm.js","./node_modules/ngx-markdown/fesm2020/ngx-markdown.mjs","./node_modules/ngx-masonry/fesm2020/ngx-masonry.mjs","./node_modules/ngx-toastr/fesm2020/ngx-toastr.mjs","./node_modules/optimism/node_modules/@wry/trie/lib/index.js","./node_modules/@wry/context/lib/slot.js","./node_modules/optimism/lib/context.js","./node_modules/optimism/lib/helpers.js","./node_modules/optimism/lib/entry.js","./node_modules/optimism/lib/dep.js","./node_modules/optimism/lib/index.js","./node_modules/zen-observable-ts/module.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","./node_modules/@babel/runtime/helpers/esm/typeof.js","./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\n\n/**\n * Global configuration\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiConfiguration {\n rootUrl: string = 'http://localhost:7071/api';\n}\n\n/**\n * Parameters for `Access2ApiModule.forRoot()`\n */\nexport interface ApiConfigurationParams {\n rootUrl?: string;\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiConfiguration } from './api-configuration';\n\n/**\n * Base class for services\n */\n@Injectable()\nexport class BaseService {\n constructor(\n protected config: ApiConfiguration,\n protected http: HttpClient\n ) {\n }\n\n private _rootUrl: string = '';\n\n /**\n * Returns the root url for all operations in this service. If not set directly in this\n * service, will fallback to `ApiConfiguration.rootUrl`.\n */\n get rootUrl(): string {\n return this._rootUrl || this.config.rootUrl;\n }\n\n /**\n * Sets the root URL for API operations in this service.\n */\n set rootUrl(rootUrl: string) {\n this._rootUrl = rootUrl;\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { HttpRequest, HttpParameterCodec, HttpParams, HttpHeaders, HttpContext } from '@angular/common/http';\n\n/**\n * Custom parameter codec to correctly handle the plus sign in parameter\n * values. See https://github.com/angular/angular/issues/18261\n */\nclass ParameterCodec implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\nconst ParameterCodecInstance = new ParameterCodec();\n\n/**\n * Defines the options for appending a parameter\n */\ninterface ParameterOptions {\n style?: string;\n explode?: boolean;\n}\n\n/**\n * Base class for a parameter\n */\nabstract class Parameter {\n constructor(public name: string, public value: any, public options: ParameterOptions, defaultStyle: string, defaultExplode: boolean) {\n this.options = options || {};\n if (this.options.style === null || this.options.style === undefined) {\n this.options.style = defaultStyle;\n }\n if (this.options.explode === null || this.options.explode === undefined) {\n this.options.explode = defaultExplode;\n }\n }\n\n serializeValue(value: any, separator = ','): string {\n if (value === null || value === undefined) {\n return '';\n } else if (value instanceof Array) {\n return value.map(v => this.serializeValue(v).split(separator).join(encodeURIComponent(separator))).join(separator);\n } else if (typeof value === 'object') {\n const array: string[] = [];\n for (const key of Object.keys(value)) {\n let propVal = value[key];\n if (propVal !== null && propVal !== undefined) {\n propVal = this.serializeValue(propVal).split(separator).join(encodeURIComponent(separator));\n if (this.options.explode) {\n array.push(`${key}=${propVal}`);\n } else {\n array.push(key);\n array.push(propVal);\n }\n }\n }\n return array.join(separator);\n } else {\n return String(value);\n }\n }\n}\n\n/**\n * A parameter in the operation path\n */\nclass PathParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(path: string): string {\n let value = this.value;\n if (value === null || value === undefined) {\n value = '';\n }\n let prefix = this.options.style === 'label' ? '.' : '';\n let separator = this.options.explode ? prefix === '' ? ',' : prefix : ',';\n let alreadySerialized = false;\n if (this.options.style === 'matrix') {\n // The parameter name is just used as prefix, except in some cases...\n prefix = `;${this.name}=`;\n if (this.options.explode && typeof value === 'object') {\n prefix = ';';\n if (value instanceof Array) {\n // For arrays we have to repeat the name for each element\n value = value.map(v => `${this.name}=${this.serializeValue(v, ';')}`);\n value = value.join(';');\n alreadySerialized = true;\n } else {\n // For objects we have to put each the key / value pairs\n value = this.serializeValue(value, ';');\n alreadySerialized = true\n }\n }\n }\n value = prefix + (alreadySerialized ? value : this.serializeValue(value, separator));\n // Replace both the plain variable and the corresponding variant taking in the prefix and explode into account\n path = path.replace(`{${this.name}}`, value);\n path = path.replace(`{${prefix}${this.name}${this.options.explode ? '*' : ''}}`, value);\n return path;\n }\n\n // @ts-ignore\n serializeValue(value: any, separator = ','): string {\n var result = typeof value === 'string' ? encodeURIComponent(value) : super.serializeValue(value, separator);\n result = result.replace(/%3D/g, '=');\n result = result.replace(/%3B/g, ';');\n result = result.replace(/%2C/g, ',');\n return result;\n }\n}\n\n/**\n * A parameter in the query\n */\nclass QueryParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'form', true);\n }\n\n append(params: HttpParams): HttpParams {\n if (this.value instanceof Array) {\n // Array serialization\n if (this.options.explode) {\n for (const v of this.value) {\n params = params.append(this.name, this.serializeValue(v));\n }\n } else {\n const separator = this.options.style === 'spaceDelimited'\n ? ' ' : this.options.style === 'pipeDelimited'\n ? '|' : ',';\n return params.append(this.name, this.serializeValue(this.value, separator));\n }\n } else if (this.value !== null && typeof this.value === 'object') {\n // Object serialization\n if (this.options.style === 'deepObject') {\n // Append a parameter for each key, in the form `name[key]`\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(`${this.name}[${key}]`, this.serializeValue(propVal));\n }\n }\n } else if (this.options.explode) {\n // Append a parameter for each key without using the parameter name\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(key, this.serializeValue(propVal));\n }\n }\n } else {\n // Append a single parameter whose values are a comma-separated list of key,value,key,value...\n const array: any[] = [];\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n array.push(key);\n array.push(propVal);\n }\n }\n params = params.append(this.name, this.serializeValue(array));\n }\n } else if (this.value !== null && this.value !== undefined) {\n // Plain value\n params = params.append(this.name, this.serializeValue(this.value));\n }\n return params;\n }\n}\n\n/**\n * A parameter in the HTTP request header\n */\nclass HeaderParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(headers: HttpHeaders): HttpHeaders {\n if (this.value !== null && this.value !== undefined) {\n if (this.value instanceof Array) {\n for (const v of this.value) {\n headers = headers.append(this.name, this.serializeValue(v));\n }\n } else {\n headers = headers.append(this.name, this.serializeValue(this.value));\n }\n }\n return headers;\n }\n}\n\n/**\n * Helper to build http requests from parameters\n */\nexport class RequestBuilder {\n\n private _path = new Map();\n private _query = new Map();\n private _header = new Map();\n _bodyContent: any | null;\n _bodyContentType?: string;\n\n constructor(\n public rootUrl: string,\n public operationPath: string,\n public method: string) {\n }\n\n /**\n * Sets a path parameter\n */\n path(name: string, value: any, options?: ParameterOptions): void {\n this._path.set(name, new PathParameter(name, value, options || {}));\n }\n\n /**\n * Sets a query parameter\n */\n query(name: string, value: any, options?: ParameterOptions): void {\n this._query.set(name, new QueryParameter(name, value, options || {}));\n }\n\n /**\n * Sets a header parameter\n */\n header(name: string, value: any, options?: ParameterOptions): void {\n this._header.set(name, new HeaderParameter(name, value, options || {}));\n }\n\n /**\n * Sets the body content, along with the content type\n */\n body(value: any, contentType = 'application/json'): void {\n if (value instanceof Blob) {\n this._bodyContentType = value.type;\n } else {\n this._bodyContentType = contentType;\n }\n if (this._bodyContentType === 'application/x-www-form-urlencoded' && value !== null && typeof value === 'object') {\n // Handle URL-encoded data\n const pairs: Array<[string, string]> = [];\n for (const key of Object.keys(value)) {\n let val = value[key];\n if (!(val instanceof Array)) {\n val = [val];\n }\n for (const v of val) {\n const formValue = this.formDataValue(v);\n if (formValue !== null) {\n pairs.push([key, formValue]);\n }\n }\n }\n this._bodyContent = pairs.map(p => `${encodeURIComponent(p[0])}=${encodeURIComponent(p[1])}`).join('&');\n } else if (this._bodyContentType === 'multipart/form-data') {\n // Handle multipart form data\n const formData = new FormData();\n if (value !== null && value !== undefined) {\n for (const key of Object.keys(value)) {\n const val = value[key];\n if (val instanceof Array) {\n for (const v of val) {\n const toAppend = this.formDataValue(v);\n if (toAppend !== null) {\n formData.append(key, toAppend);\n }\n }\n } else {\n const toAppend = this.formDataValue(val);\n if (toAppend !== null) {\n formData.set(key, toAppend);\n }\n }\n }\n }\n this._bodyContent = formData;\n } else {\n // The body is the plain content\n this._bodyContent = value;\n }\n }\n\n private formDataValue(value: any): any {\n if (value === null || value === undefined) {\n return null;\n }\n if (value instanceof Blob) {\n return value;\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n }\n\n /**\n * Builds the request with the current set parameters\n */\n build(options?: {\n /** Which content types to accept */\n accept?: string;\n\n /** The expected response type */\n responseType?: 'json' | 'text' | 'blob' | 'arraybuffer';\n\n /** Whether to report progress on uploads / downloads */\n reportProgress?: boolean;\n\n /** Allow passing HttpContext for HttpClient */\n context?: HttpContext;\n }): HttpRequest {\n\n options = options || {};\n\n // Path parameters\n let path = this.operationPath;\n for (const pathParam of this._path.values()) {\n path = pathParam.append(path);\n }\n const url = this.rootUrl + path;\n\n // Query parameters\n let httpParams = new HttpParams({\n encoder: ParameterCodecInstance\n });\n for (const queryParam of this._query.values()) {\n httpParams = queryParam.append(httpParams);\n }\n\n // Header parameters\n let httpHeaders = new HttpHeaders();\n if (options.accept) {\n httpHeaders = httpHeaders.append('Accept', options.accept);\n }\n for (const headerParam of this._header.values()) {\n httpHeaders = headerParam.append(httpHeaders);\n }\n\n // Request content headers\n if (this._bodyContentType && !(this._bodyContent instanceof FormData)) {\n httpHeaders = httpHeaders.set('Content-Type', this._bodyContentType);\n }\n\n // Perform the request\n return new HttpRequest(this.method.toUpperCase(), url, this._bodyContent, {\n params: httpParams,\n headers: httpHeaders,\n responseType: options.responseType,\n reportProgress: options.reportProgress,\n context: options.context\n });\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { Access } from '../models/access';\nimport { UserAccessFull2Result } from '../models/user-access-full-2-result';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Access2Service extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation access2\n */\n static readonly Access2Path = '/access2';\n\n /**\n * Replacement for GQL access endpoint in coach-api (used by coach).\n *\n * GET /access2?tierid=AA01\n * Original API at https://github.com/caravanhealth/coach-api/blob/int/src/resolvers/Access.resolver.ts#L17\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `access2()` instead.\n *\n * This method doesn't expect any request body.\n */\n access2$Response(params: {\n\n /**\n * Internal code for tier node where access is being requested (case insensitive)\n */\n tierid: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Access2Service.Access2Path, 'get');\n if (params) {\n rb.query('tierid', params.tierid, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Replacement for GQL access endpoint in coach-api (used by coach).\n *\n * GET /access2?tierid=AA01\n * Original API at https://github.com/caravanhealth/coach-api/blob/int/src/resolvers/Access.resolver.ts#L17\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `access2$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n access2(params: {\n\n /**\n * Internal code for tier node where access is being requested (case insensitive)\n */\n tierid: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.access2$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as Access)\n );\n }\n\n /**\n * Path part for operation userAccessFull2\n */\n static readonly UserAccessFull2Path = '/userAccessFull2';\n\n /**\n * Replacement for userAccessFull (used by APIs).\n *\n * See also type definitions in dependents:\n * https://github.com/caravanhealth/wpapi/blob/trunk/src/coach-access2.ts#L42\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `userAccessFull2()` instead.\n *\n * This method doesn't expect any request body.\n */\n userAccessFull2$Response(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Access2Service.UserAccessFull2Path, 'get');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Replacement for userAccessFull (used by APIs).\n *\n * See also type definitions in dependents:\n * https://github.com/caravanhealth/wpapi/blob/trunk/src/coach-access2.ts#L42\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `userAccessFull2$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n userAccessFull2(params?: {\n },\n context?: HttpContext\n\n): Observable {\n\n return this.userAccessFull2$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as UserAccessFull2Result)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\n\n/**\n * Global configuration\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiConfiguration {\n rootUrl: string = 'http://localhost:5045';\n}\n\n/**\n * Parameters for `CareOrchApiModule.forRoot()`\n */\nexport interface ApiConfigurationParams {\n rootUrl?: string;\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiConfiguration } from './api-configuration';\n\n/**\n * Base class for services\n */\n@Injectable()\nexport class BaseService {\n constructor(\n protected config: ApiConfiguration,\n protected http: HttpClient\n ) {\n }\n\n private _rootUrl: string = '';\n\n /**\n * Returns the root url for all operations in this service. If not set directly in this\n * service, will fallback to `ApiConfiguration.rootUrl`.\n */\n get rootUrl(): string {\n return this._rootUrl || this.config.rootUrl;\n }\n\n /**\n * Sets the root URL for API operations in this service.\n */\n set rootUrl(rootUrl: string) {\n this._rootUrl = rootUrl;\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { HttpRequest, HttpParameterCodec, HttpParams, HttpHeaders, HttpContext } from '@angular/common/http';\n\n/**\n * Custom parameter codec to correctly handle the plus sign in parameter\n * values. See https://github.com/angular/angular/issues/18261\n */\nclass ParameterCodec implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\nconst ParameterCodecInstance = new ParameterCodec();\n\n/**\n * Defines the options for appending a parameter\n */\ninterface ParameterOptions {\n style?: string;\n explode?: boolean;\n}\n\n/**\n * Base class for a parameter\n */\nabstract class Parameter {\n constructor(public name: string, public value: any, public options: ParameterOptions, defaultStyle: string, defaultExplode: boolean) {\n this.options = options || {};\n if (this.options.style === null || this.options.style === undefined) {\n this.options.style = defaultStyle;\n }\n if (this.options.explode === null || this.options.explode === undefined) {\n this.options.explode = defaultExplode;\n }\n }\n\n serializeValue(value: any, separator = ','): string {\n if (value === null || value === undefined) {\n return '';\n } else if (value instanceof Array) {\n return value.map(v => this.serializeValue(v).split(separator).join(encodeURIComponent(separator))).join(separator);\n } else if (typeof value === 'object') {\n const array: string[] = [];\n for (const key of Object.keys(value)) {\n let propVal = value[key];\n if (propVal !== null && propVal !== undefined) {\n propVal = this.serializeValue(propVal).split(separator).join(encodeURIComponent(separator));\n if (this.options.explode) {\n array.push(`${key}=${propVal}`);\n } else {\n array.push(key);\n array.push(propVal);\n }\n }\n }\n return array.join(separator);\n } else {\n return String(value);\n }\n }\n}\n\n/**\n * A parameter in the operation path\n */\nclass PathParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(path: string): string {\n let value = this.value;\n if (value === null || value === undefined) {\n value = '';\n }\n let prefix = this.options.style === 'label' ? '.' : '';\n let separator = this.options.explode ? prefix === '' ? ',' : prefix : ',';\n let alreadySerialized = false;\n if (this.options.style === 'matrix') {\n // The parameter name is just used as prefix, except in some cases...\n prefix = `;${this.name}=`;\n if (this.options.explode && typeof value === 'object') {\n prefix = ';';\n if (value instanceof Array) {\n // For arrays we have to repeat the name for each element\n value = value.map(v => `${this.name}=${this.serializeValue(v, ';')}`);\n value = value.join(';');\n alreadySerialized = true;\n } else {\n // For objects we have to put each the key / value pairs\n value = this.serializeValue(value, ';');\n alreadySerialized = true\n }\n }\n }\n value = prefix + (alreadySerialized ? value : this.serializeValue(value, separator));\n // Replace both the plain variable and the corresponding variant taking in the prefix and explode into account\n path = path.replace(`{${this.name}}`, value);\n path = path.replace(`{${prefix}${this.name}${this.options.explode ? '*' : ''}}`, value);\n return path;\n }\n\n // @ts-ignore\n serializeValue(value: any, separator = ','): string {\n var result = typeof value === 'string' ? encodeURIComponent(value) : super.serializeValue(value, separator);\n result = result.replace(/%3D/g, '=');\n result = result.replace(/%3B/g, ';');\n result = result.replace(/%2C/g, ',');\n return result;\n }\n}\n\n/**\n * A parameter in the query\n */\nclass QueryParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'form', true);\n }\n\n append(params: HttpParams): HttpParams {\n if (this.value instanceof Array) {\n // Array serialization\n if (this.options.explode) {\n for (const v of this.value) {\n params = params.append(this.name, this.serializeValue(v));\n }\n } else {\n const separator = this.options.style === 'spaceDelimited'\n ? ' ' : this.options.style === 'pipeDelimited'\n ? '|' : ',';\n return params.append(this.name, this.serializeValue(this.value, separator));\n }\n } else if (this.value !== null && typeof this.value === 'object') {\n // Object serialization\n if (this.options.style === 'deepObject') {\n // Append a parameter for each key, in the form `name[key]`\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(`${this.name}[${key}]`, this.serializeValue(propVal));\n }\n }\n } else if (this.options.explode) {\n // Append a parameter for each key without using the parameter name\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(key, this.serializeValue(propVal));\n }\n }\n } else {\n // Append a single parameter whose values are a comma-separated list of key,value,key,value...\n const array: any[] = [];\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n array.push(key);\n array.push(propVal);\n }\n }\n params = params.append(this.name, this.serializeValue(array));\n }\n } else if (this.value !== null && this.value !== undefined) {\n // Plain value\n params = params.append(this.name, this.serializeValue(this.value));\n }\n return params;\n }\n}\n\n/**\n * A parameter in the HTTP request header\n */\nclass HeaderParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(headers: HttpHeaders): HttpHeaders {\n if (this.value !== null && this.value !== undefined) {\n if (this.value instanceof Array) {\n for (const v of this.value) {\n headers = headers.append(this.name, this.serializeValue(v));\n }\n } else {\n headers = headers.append(this.name, this.serializeValue(this.value));\n }\n }\n return headers;\n }\n}\n\n/**\n * Helper to build http requests from parameters\n */\nexport class RequestBuilder {\n\n private _path = new Map();\n private _query = new Map();\n private _header = new Map();\n _bodyContent: any | null;\n _bodyContentType?: string;\n\n constructor(\n public rootUrl: string,\n public operationPath: string,\n public method: string) {\n }\n\n /**\n * Sets a path parameter\n */\n path(name: string, value: any, options?: ParameterOptions): void {\n this._path.set(name, new PathParameter(name, value, options || {}));\n }\n\n /**\n * Sets a query parameter\n */\n query(name: string, value: any, options?: ParameterOptions): void {\n this._query.set(name, new QueryParameter(name, value, options || {}));\n }\n\n /**\n * Sets a header parameter\n */\n header(name: string, value: any, options?: ParameterOptions): void {\n this._header.set(name, new HeaderParameter(name, value, options || {}));\n }\n\n /**\n * Sets the body content, along with the content type\n */\n body(value: any, contentType = 'application/json'): void {\n if (value instanceof Blob) {\n this._bodyContentType = value.type;\n } else {\n this._bodyContentType = contentType;\n }\n if (this._bodyContentType === 'application/x-www-form-urlencoded' && value !== null && typeof value === 'object') {\n // Handle URL-encoded data\n const pairs: Array<[string, string]> = [];\n for (const key of Object.keys(value)) {\n let val = value[key];\n if (!(val instanceof Array)) {\n val = [val];\n }\n for (const v of val) {\n const formValue = this.formDataValue(v);\n if (formValue !== null) {\n pairs.push([key, formValue]);\n }\n }\n }\n this._bodyContent = pairs.map(p => `${encodeURIComponent(p[0])}=${encodeURIComponent(p[1])}`).join('&');\n } else if (this._bodyContentType === 'multipart/form-data') {\n // Handle multipart form data\n const formData = new FormData();\n if (value !== null && value !== undefined) {\n for (const key of Object.keys(value)) {\n const val = value[key];\n if (val instanceof Array) {\n for (const v of val) {\n const toAppend = this.formDataValue(v);\n if (toAppend !== null) {\n formData.append(key, toAppend);\n }\n }\n } else {\n const toAppend = this.formDataValue(val);\n if (toAppend !== null) {\n formData.set(key, toAppend);\n }\n }\n }\n }\n this._bodyContent = formData;\n } else {\n // The body is the plain content\n this._bodyContent = value;\n }\n }\n\n private formDataValue(value: any): any {\n if (value === null || value === undefined) {\n return null;\n }\n if (value instanceof Blob) {\n return value;\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n }\n\n /**\n * Builds the request with the current set parameters\n */\n build(options?: {\n /** Which content types to accept */\n accept?: string;\n\n /** The expected response type */\n responseType?: 'json' | 'text' | 'blob' | 'arraybuffer';\n\n /** Whether to report progress on uploads / downloads */\n reportProgress?: boolean;\n\n /** Allow passing HttpContext for HttpClient */\n context?: HttpContext;\n }): HttpRequest {\n\n options = options || {};\n\n // Path parameters\n let path = this.operationPath;\n for (const pathParam of this._path.values()) {\n path = pathParam.append(path);\n }\n const url = this.rootUrl + path;\n\n // Query parameters\n let httpParams = new HttpParams({\n encoder: ParameterCodecInstance\n });\n for (const queryParam of this._query.values()) {\n httpParams = queryParam.append(httpParams);\n }\n\n // Header parameters\n let httpHeaders = new HttpHeaders();\n if (options.accept) {\n httpHeaders = httpHeaders.append('Accept', options.accept);\n }\n for (const headerParam of this._header.values()) {\n httpHeaders = headerParam.append(httpHeaders);\n }\n\n // Request content headers\n if (this._bodyContentType && !(this._bodyContent instanceof FormData)) {\n httpHeaders = httpHeaders.set('Content-Type', this._bodyContentType);\n }\n\n // Perform the request\n return new HttpRequest(this.method.toUpperCase(), url, this._bodyContent, {\n params: httpParams,\n headers: httpHeaders,\n responseType: options.responseType,\n reportProgress: options.reportProgress,\n context: options.context\n });\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { Activity } from '../models/activity';\nimport { ActivityType } from '../models/activity-type';\nimport { AwvWorkflow } from '../models/awv-workflow';\nimport { AwvWorkflowHistoryPaged } from '../models/awv-workflow-history-paged';\nimport { PageParameters } from '../models/page-parameters';\n\n\n/**\n * Represents resources related to the Annual Wellness Visit Program.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AwvService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation getWorkflowActivities\n */\n static readonly GetWorkflowActivitiesPath = '/programs/{programId}/workflows/{chPatId}';\n\n /**\n * Gets the given patient's workflow in its current state.\n *\n * Gets the given patient's workflow in its current state.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getWorkflowActivities()` instead.\n *\n * This method doesn't expect any request body.\n */\n getWorkflowActivities$Response(params: {\n\n /**\n * Unique identifier for the program.\n */\n programId: number;\n\n /**\n * Unique identifier for the patient.\n */\n chPatId: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, AwvService.GetWorkflowActivitiesPath, 'get');\n if (params) {\n rb.path('programId', params.programId, {});\n rb.path('chPatId', params.chPatId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Gets the given patient's workflow in its current state.\n *\n * Gets the given patient's workflow in its current state.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getWorkflowActivities$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getWorkflowActivities(params: {\n\n /**\n * Unique identifier for the program.\n */\n programId: number;\n\n /**\n * Unique identifier for the patient.\n */\n chPatId: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.getWorkflowActivities$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as AwvWorkflow)\n );\n }\n\n /**\n * Path part for operation updateWorkflowActivity\n */\n static readonly UpdateWorkflowActivityPath = '/programs/{programId}/workflows/{chPatId}';\n\n /**\n * Update a Workflow Activity.\n *\n * Updates a workflow activity\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `updateWorkflowActivity()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n updateWorkflowActivity$Response(params: {\n\n /**\n * Unique identifier for the program.\n */\n programId: number;\n\n /**\n * Unique identifier for the patient.\n */\n chPatId: number;\n\n /**\n * The activity to be updated on a workflow\n */\n body?: Activity\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, AwvService.UpdateWorkflowActivityPath, 'put');\n if (params) {\n rb.path('programId', params.programId, {});\n rb.path('chPatId', params.chPatId, {});\n rb.body(params.body, 'application/json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Update a Workflow Activity.\n *\n * Updates a workflow activity\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `updateWorkflowActivity$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n updateWorkflowActivity(params: {\n\n /**\n * Unique identifier for the program.\n */\n programId: number;\n\n /**\n * Unique identifier for the patient.\n */\n chPatId: number;\n\n /**\n * The activity to be updated on a workflow\n */\n body?: Activity\n },\n context?: HttpContext\n\n): Observable {\n\n return this.updateWorkflowActivity$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as AwvWorkflow)\n );\n }\n\n /**\n * Path part for operation rollbackWorkflowActivity\n */\n static readonly RollbackWorkflowActivityPath = '/programs/{programId}/workflows/{chPatId}/{typeOfActivityToRollback}';\n\n /**\n * Rollback a Workflow Activity.\n *\n * Rollsback a Workflow Activity\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `rollbackWorkflowActivity()` instead.\n *\n * This method doesn't expect any request body.\n */\n rollbackWorkflowActivity$Response(params: {\n\n /**\n * Unique identifier for the program.\n */\n programId: number;\n\n /**\n * Unique identifier for the patient.\n */\n chPatId: number;\n\n /**\n * Unique identifier for the Activity rollback.\n */\n typeOfActivityToRollback: ActivityType;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, AwvService.RollbackWorkflowActivityPath, 'delete');\n if (params) {\n rb.path('programId', params.programId, {});\n rb.path('chPatId', params.chPatId, {});\n rb.path('typeOfActivityToRollback', params.typeOfActivityToRollback, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Rollback a Workflow Activity.\n *\n * Rollsback a Workflow Activity\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `rollbackWorkflowActivity$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n rollbackWorkflowActivity(params: {\n\n /**\n * Unique identifier for the program.\n */\n programId: number;\n\n /**\n * Unique identifier for the patient.\n */\n chPatId: number;\n\n /**\n * Unique identifier for the Activity rollback.\n */\n typeOfActivityToRollback: ActivityType;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.rollbackWorkflowActivity$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as AwvWorkflow)\n );\n }\n\n /**\n * Path part for operation getWorkflowHistoryPaged\n */\n static readonly GetWorkflowHistoryPagedPath = '/programs/{programId}/workflows/{chPatId}/history';\n\n /**\n * Gets the history of the given patient's workflow in pages.\n *\n * Gets the history of the given patient's workflow in pages.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getWorkflowHistoryPaged()` instead.\n *\n * This method doesn't expect any request body.\n */\n getWorkflowHistoryPaged$Response(params: {\n\n /**\n * Unique identifier for the program.\n */\n programId: number;\n\n /**\n * Unique identifier for the patient.\n */\n chPatId: number;\n pageParameters?: PageParameters;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, AwvService.GetWorkflowHistoryPagedPath, 'get');\n if (params) {\n rb.path('programId', params.programId, {});\n rb.path('chPatId', params.chPatId, {});\n rb.query('pageParameters', params.pageParameters, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Gets the history of the given patient's workflow in pages.\n *\n * Gets the history of the given patient's workflow in pages.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getWorkflowHistoryPaged$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getWorkflowHistoryPaged(params: {\n\n /**\n * Unique identifier for the program.\n */\n programId: number;\n\n /**\n * Unique identifier for the patient.\n */\n chPatId: number;\n pageParameters?: PageParameters;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.getWorkflowHistoryPaged$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as AwvWorkflowHistoryPaged)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\n\n/**\n * Global configuration\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiConfiguration {\n rootUrl: string = '';\n}\n\n/**\n * Parameters for `TrackApiModule.forRoot()`\n */\nexport interface ApiConfigurationParams {\n rootUrl?: string;\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiConfiguration } from './api-configuration';\n\n/**\n * Base class for services\n */\n@Injectable()\nexport class BaseService {\n constructor(\n protected config: ApiConfiguration,\n protected http: HttpClient\n ) {\n }\n\n private _rootUrl: string = '';\n\n /**\n * Returns the root url for all operations in this service. If not set directly in this\n * service, will fallback to `ApiConfiguration.rootUrl`.\n */\n get rootUrl(): string {\n return this._rootUrl || this.config.rootUrl;\n }\n\n /**\n * Sets the root URL for API operations in this service.\n */\n set rootUrl(rootUrl: string) {\n this._rootUrl = rootUrl;\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { HttpRequest, HttpParameterCodec, HttpParams, HttpHeaders, HttpContext } from '@angular/common/http';\n\n/**\n * Custom parameter codec to correctly handle the plus sign in parameter\n * values. See https://github.com/angular/angular/issues/18261\n */\nclass ParameterCodec implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\nconst ParameterCodecInstance = new ParameterCodec();\n\n/**\n * Defines the options for appending a parameter\n */\ninterface ParameterOptions {\n style?: string;\n explode?: boolean;\n}\n\n/**\n * Base class for a parameter\n */\nabstract class Parameter {\n constructor(public name: string, public value: any, public options: ParameterOptions, defaultStyle: string, defaultExplode: boolean) {\n this.options = options || {};\n if (this.options.style === null || this.options.style === undefined) {\n this.options.style = defaultStyle;\n }\n if (this.options.explode === null || this.options.explode === undefined) {\n this.options.explode = defaultExplode;\n }\n }\n\n serializeValue(value: any, separator = ','): string {\n if (value === null || value === undefined) {\n return '';\n } else if (value instanceof Array) {\n return value.map(v => this.serializeValue(v).split(separator).join(encodeURIComponent(separator))).join(separator);\n } else if (typeof value === 'object') {\n const array: string[] = [];\n for (const key of Object.keys(value)) {\n let propVal = value[key];\n if (propVal !== null && propVal !== undefined) {\n propVal = this.serializeValue(propVal).split(separator).join(encodeURIComponent(separator));\n if (this.options.explode) {\n array.push(`${key}=${propVal}`);\n } else {\n array.push(key);\n array.push(propVal);\n }\n }\n }\n return array.join(separator);\n } else {\n return String(value);\n }\n }\n}\n\n/**\n * A parameter in the operation path\n */\nclass PathParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(path: string): string {\n let value = this.value;\n if (value === null || value === undefined) {\n value = '';\n }\n let prefix = this.options.style === 'label' ? '.' : '';\n let separator = this.options.explode ? prefix === '' ? ',' : prefix : ',';\n let alreadySerialized = false;\n if (this.options.style === 'matrix') {\n // The parameter name is just used as prefix, except in some cases...\n prefix = `;${this.name}=`;\n if (this.options.explode && typeof value === 'object') {\n prefix = ';';\n if (value instanceof Array) {\n // For arrays we have to repeat the name for each element\n value = value.map(v => `${this.name}=${this.serializeValue(v, ';')}`);\n value = value.join(';');\n alreadySerialized = true;\n } else {\n // For objects we have to put each the key / value pairs\n value = this.serializeValue(value, ';');\n alreadySerialized = true\n }\n }\n }\n value = prefix + (alreadySerialized ? value : this.serializeValue(value, separator));\n // Replace both the plain variable and the corresponding variant taking in the prefix and explode into account\n path = path.replace(`{${this.name}}`, value);\n path = path.replace(`{${prefix}${this.name}${this.options.explode ? '*' : ''}}`, value);\n return path;\n }\n\n // @ts-ignore\n serializeValue(value: any, separator = ','): string {\n var result = typeof value === 'string' ? encodeURIComponent(value) : super.serializeValue(value, separator);\n result = result.replace(/%3D/g, '=');\n result = result.replace(/%3B/g, ';');\n result = result.replace(/%2C/g, ',');\n return result;\n }\n}\n\n/**\n * A parameter in the query\n */\nclass QueryParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'form', true);\n }\n\n append(params: HttpParams): HttpParams {\n if (this.value instanceof Array) {\n // Array serialization\n if (this.options.explode) {\n for (const v of this.value) {\n params = params.append(this.name, this.serializeValue(v));\n }\n } else {\n const separator = this.options.style === 'spaceDelimited'\n ? ' ' : this.options.style === 'pipeDelimited'\n ? '|' : ',';\n return params.append(this.name, this.serializeValue(this.value, separator));\n }\n } else if (this.value !== null && typeof this.value === 'object') {\n // Object serialization\n if (this.options.style === 'deepObject') {\n // Append a parameter for each key, in the form `name[key]`\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(`${this.name}[${key}]`, this.serializeValue(propVal));\n }\n }\n } else if (this.options.explode) {\n // Append a parameter for each key without using the parameter name\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(key, this.serializeValue(propVal));\n }\n }\n } else {\n // Append a single parameter whose values are a comma-separated list of key,value,key,value...\n const array: any[] = [];\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n array.push(key);\n array.push(propVal);\n }\n }\n params = params.append(this.name, this.serializeValue(array));\n }\n } else if (this.value !== null && this.value !== undefined) {\n // Plain value\n params = params.append(this.name, this.serializeValue(this.value));\n }\n return params;\n }\n}\n\n/**\n * A parameter in the HTTP request header\n */\nclass HeaderParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(headers: HttpHeaders): HttpHeaders {\n if (this.value !== null && this.value !== undefined) {\n if (this.value instanceof Array) {\n for (const v of this.value) {\n headers = headers.append(this.name, this.serializeValue(v));\n }\n } else {\n headers = headers.append(this.name, this.serializeValue(this.value));\n }\n }\n return headers;\n }\n}\n\n/**\n * Helper to build http requests from parameters\n */\nexport class RequestBuilder {\n\n private _path = new Map();\n private _query = new Map();\n private _header = new Map();\n _bodyContent: any | null;\n _bodyContentType?: string;\n\n constructor(\n public rootUrl: string,\n public operationPath: string,\n public method: string) {\n }\n\n /**\n * Sets a path parameter\n */\n path(name: string, value: any, options?: ParameterOptions): void {\n this._path.set(name, new PathParameter(name, value, options || {}));\n }\n\n /**\n * Sets a query parameter\n */\n query(name: string, value: any, options?: ParameterOptions): void {\n this._query.set(name, new QueryParameter(name, value, options || {}));\n }\n\n /**\n * Sets a header parameter\n */\n header(name: string, value: any, options?: ParameterOptions): void {\n this._header.set(name, new HeaderParameter(name, value, options || {}));\n }\n\n /**\n * Sets the body content, along with the content type\n */\n body(value: any, contentType = 'application/json'): void {\n if (value instanceof Blob) {\n this._bodyContentType = value.type;\n } else {\n this._bodyContentType = contentType;\n }\n if (this._bodyContentType === 'application/x-www-form-urlencoded' && value !== null && typeof value === 'object') {\n // Handle URL-encoded data\n const pairs: Array<[string, string]> = [];\n for (const key of Object.keys(value)) {\n let val = value[key];\n if (!(val instanceof Array)) {\n val = [val];\n }\n for (const v of val) {\n const formValue = this.formDataValue(v);\n if (formValue !== null) {\n pairs.push([key, formValue]);\n }\n }\n }\n this._bodyContent = pairs.map(p => `${encodeURIComponent(p[0])}=${encodeURIComponent(p[1])}`).join('&');\n } else if (this._bodyContentType === 'multipart/form-data') {\n // Handle multipart form data\n const formData = new FormData();\n if (value !== null && value !== undefined) {\n for (const key of Object.keys(value)) {\n const val = value[key];\n if (val instanceof Array) {\n for (const v of val) {\n const toAppend = this.formDataValue(v);\n if (toAppend !== null) {\n formData.append(key, toAppend);\n }\n }\n } else {\n const toAppend = this.formDataValue(val);\n if (toAppend !== null) {\n formData.set(key, toAppend);\n }\n }\n }\n }\n this._bodyContent = formData;\n } else {\n // The body is the plain content\n this._bodyContent = value;\n }\n }\n\n private formDataValue(value: any): any {\n if (value === null || value === undefined) {\n return null;\n }\n if (value instanceof Blob) {\n return value;\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n }\n\n /**\n * Builds the request with the current set parameters\n */\n build(options?: {\n /** Which content types to accept */\n accept?: string;\n\n /** The expected response type */\n responseType?: 'json' | 'text' | 'blob' | 'arraybuffer';\n\n /** Whether to report progress on uploads / downloads */\n reportProgress?: boolean;\n\n /** Allow passing HttpContext for HttpClient */\n context?: HttpContext;\n }): HttpRequest {\n\n options = options || {};\n\n // Path parameters\n let path = this.operationPath;\n for (const pathParam of this._path.values()) {\n path = pathParam.append(path);\n }\n const url = this.rootUrl + path;\n\n // Query parameters\n let httpParams = new HttpParams({\n encoder: ParameterCodecInstance\n });\n for (const queryParam of this._query.values()) {\n httpParams = queryParam.append(httpParams);\n }\n\n // Header parameters\n let httpHeaders = new HttpHeaders();\n if (options.accept) {\n httpHeaders = httpHeaders.append('Accept', options.accept);\n }\n for (const headerParam of this._header.values()) {\n httpHeaders = headerParam.append(httpHeaders);\n }\n\n // Request content headers\n if (this._bodyContentType && !(this._bodyContent instanceof FormData)) {\n httpHeaders = httpHeaders.set('Content-Type', this._bodyContentType);\n }\n\n // Perform the request\n return new HttpRequest(this.method.toUpperCase(), url, this._bodyContent, {\n params: httpParams,\n headers: httpHeaders,\n responseType: options.responseType,\n reportProgress: options.reportProgress,\n context: options.context\n });\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { AwvOppScheduleStatus } from '../models/awv-opp-schedule-status';\nimport { AwvWorklistMap } from '../models/awv-worklist-map';\nimport { InsertOrUpdateAwvScheduleRequest } from '../models/insert-or-update-awv-schedule-request';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AwvWorklistService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation awvWorklistGet\n */\n static readonly AwvWorklistGetPath = '/AwvWorklist';\n\n /**\n * Load the AWV Worklist.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `awvWorklistGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n awvWorklistGet$Response(params: {\n\n /**\n * Tier number (2 = Community, 3 = Practice)\n */\n TierNum: number;\n\n /**\n * Community or Practice ID\n */\n TierId: string;\n\n /**\n * Start of Date Range\n */\n BeginDate?: string;\n\n /**\n * End of Date Range\n */\n EndDate?: string;\n\n /**\n * Type of visit - AWV or IPPE\n */\n AwvType?: string;\n\n /**\n * Opportunity Status - To Do, Scheduled, or NULL for All\n */\n AwvOppStatus?: string;\n\n /**\n * DOB from Patient Search\n */\n DateOfBirth?: string;\n\n /**\n * Search term to use for searching on patient name\n */\n NameSearchTerm?: string;\n\n /**\n * ID of the component from which the request is being made. Defaults to AWV Worklist component.\n */\n ComponentId?: number;\n\n /**\n * Patient identifier\n */\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, AwvWorklistService.AwvWorklistGetPath, 'get');\n if (params) {\n rb.query('TierNum', params.TierNum, {});\n rb.query('TierId', params.TierId, {});\n rb.query('BeginDate', params.BeginDate, {});\n rb.query('EndDate', params.EndDate, {});\n rb.query('AwvType', params.AwvType, {});\n rb.query('AwvOppStatus', params.AwvOppStatus, {});\n rb.query('DateOfBirth', params.DateOfBirth, {});\n rb.query('NameSearchTerm', params.NameSearchTerm, {});\n rb.query('ComponentId', params.ComponentId, {});\n rb.query('ChPatId', params.ChPatId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Load the AWV Worklist.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `awvWorklistGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n awvWorklistGet(params: {\n\n /**\n * Tier number (2 = Community, 3 = Practice)\n */\n TierNum: number;\n\n /**\n * Community or Practice ID\n */\n TierId: string;\n\n /**\n * Start of Date Range\n */\n BeginDate?: string;\n\n /**\n * End of Date Range\n */\n EndDate?: string;\n\n /**\n * Type of visit - AWV or IPPE\n */\n AwvType?: string;\n\n /**\n * Opportunity Status - To Do, Scheduled, or NULL for All\n */\n AwvOppStatus?: string;\n\n /**\n * DOB from Patient Search\n */\n DateOfBirth?: string;\n\n /**\n * Search term to use for searching on patient name\n */\n NameSearchTerm?: string;\n\n /**\n * ID of the component from which the request is being made. Defaults to AWV Worklist component.\n */\n ComponentId?: number;\n\n /**\n * Patient identifier\n */\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.awvWorklistGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation awvWorklistPost\n */\n static readonly AwvWorklistPostPath = '/AwvWorklist';\n\n /**\n * Create or edit scheduled date.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `awvWorklistPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n awvWorklistPost$Response(params?: {\n body?: InsertOrUpdateAwvScheduleRequest\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, AwvWorklistService.AwvWorklistPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Create or edit scheduled date.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `awvWorklistPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n awvWorklistPost(params?: {\n body?: InsertOrUpdateAwvScheduleRequest\n },\n context?: HttpContext\n\n): Observable {\n\n return this.awvWorklistPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n /**\n * Path part for operation awvWorklistStatusGet\n */\n static readonly AwvWorklistStatusGetPath = '/AwvWorklist/status';\n\n /**\n * Get AWV Worklist Schedule Statuses.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `awvWorklistStatusGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n awvWorklistStatusGet$Response(params?: {\n isEnabled?: boolean;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, AwvWorklistService.AwvWorklistStatusGetPath, 'get');\n if (params) {\n rb.query('isEnabled', params.isEnabled, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Get AWV Worklist Schedule Statuses.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `awvWorklistStatusGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n awvWorklistStatusGet(params?: {\n isEnabled?: boolean;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.awvWorklistStatusGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { CardWidget } from '../models/card-widget';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CardWidgetService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation cardWidgetGet\n */\n static readonly CardWidgetGetPath = '/CardWidget';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `cardWidgetGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n cardWidgetGet$Response(params?: {\n id?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, CardWidgetService.CardWidgetGetPath, 'get');\n if (params) {\n rb.query('id', params.id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `cardWidgetGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n cardWidgetGet(params?: {\n id?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.cardWidgetGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { CompareAwvMissing } from '../models/compare-awv-missing';\nimport { CompareAwvScheduled } from '../models/compare-awv-scheduled';\nimport { CompareCin } from '../models/compare-cin';\nimport { CompareMonthlyAwvResults } from '../models/compare-monthly-awv-results';\nimport { CompareSummaryResults } from '../models/compare-summary-results';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CompareService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation compareSummaryGet\n */\n static readonly CompareSummaryGetPath = '/Compare/summary';\n\n /**\n * Get data for the Compare summary page.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `compareSummaryGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n compareSummaryGet$Response(params?: {\n tierId?: string;\n tierNum?: number;\n attribution?: string;\n communityToggle?: string;\n cinId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, CompareService.CompareSummaryGetPath, 'get');\n if (params) {\n rb.query('tierId', params.tierId, {});\n rb.query('tierNum', params.tierNum, {});\n rb.query('attribution', params.attribution, {});\n rb.query('communityToggle', params.communityToggle, {});\n rb.query('cinId', params.cinId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Get data for the Compare summary page.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `compareSummaryGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n compareSummaryGet(params?: {\n tierId?: string;\n tierNum?: number;\n attribution?: string;\n communityToggle?: string;\n cinId?: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.compareSummaryGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as CompareSummaryResults)\n );\n }\n\n /**\n * Path part for operation compareCinsGet\n */\n static readonly CompareCinsGetPath = '/Compare/cins';\n\n /**\n * Get CIN list for the Compare page.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `compareCinsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n compareCinsGet$Response(params?: {\n attribution?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, CompareService.CompareCinsGetPath, 'get');\n if (params) {\n rb.query('attribution', params.attribution, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Get CIN list for the Compare page.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `compareCinsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n compareCinsGet(params?: {\n attribution?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.compareCinsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation compareMonthlyAwvGet\n */\n static readonly CompareMonthlyAwvGetPath = '/Compare/monthlyAwv';\n\n /**\n * Get Monthly AWV rates for the Compare page.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `compareMonthlyAwvGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n compareMonthlyAwvGet$Response(params?: {\n tierIdList?: string;\n tierNum?: number;\n attribution?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, CompareService.CompareMonthlyAwvGetPath, 'get');\n if (params) {\n rb.query('tierIdList', params.tierIdList, {});\n rb.query('tierNum', params.tierNum, {});\n rb.query('attribution', params.attribution, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Get Monthly AWV rates for the Compare page.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `compareMonthlyAwvGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n compareMonthlyAwvGet(params?: {\n tierIdList?: string;\n tierNum?: number;\n attribution?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.compareMonthlyAwvGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as CompareMonthlyAwvResults)\n );\n }\n\n /**\n * Path part for operation compareScheduledPatientsGet\n */\n static readonly CompareScheduledPatientsGetPath = '/Compare/scheduledPatients';\n\n /**\n * Get Scheduled Patients drillthrough data for Compare page.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `compareScheduledPatientsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n compareScheduledPatientsGet$Response(params?: {\n tierId?: string;\n tierNum?: number;\n monthYear?: string;\n attribution?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, CompareService.CompareScheduledPatientsGetPath, 'get');\n if (params) {\n rb.query('tierId', params.tierId, {});\n rb.query('tierNum', params.tierNum, {});\n rb.query('monthYear', params.monthYear, {});\n rb.query('attribution', params.attribution, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Get Scheduled Patients drillthrough data for Compare page.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `compareScheduledPatientsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n compareScheduledPatientsGet(params?: {\n tierId?: string;\n tierNum?: number;\n monthYear?: string;\n attribution?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.compareScheduledPatientsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation compareMissingPatientsGet\n */\n static readonly CompareMissingPatientsGetPath = '/Compare/missingPatients';\n\n /**\n * Get Missing Patients drillthrough data for Compare page.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `compareMissingPatientsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n compareMissingPatientsGet$Response(params?: {\n tierId?: string;\n tierNum?: number;\n monthYear?: string;\n attribution?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, CompareService.CompareMissingPatientsGetPath, 'get');\n if (params) {\n rb.query('tierId', params.tierId, {});\n rb.query('tierNum', params.tierNum, {});\n rb.query('monthYear', params.monthYear, {});\n rb.query('attribution', params.attribution, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Get Missing Patients drillthrough data for Compare page.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `compareMissingPatientsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n compareMissingPatientsGet(params?: {\n tierId?: string;\n tierNum?: number;\n monthYear?: string;\n attribution?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.compareMissingPatientsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { EdWorklistMap } from '../models/ed-worklist-map';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EdUtilizationWorklistService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation edUtilizationWorklistGet\n */\n static readonly EdUtilizationWorklistGetPath = '/EdUtilizationWorklist';\n\n /**\n * Load the ED Utilization Worklist.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `edUtilizationWorklistGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n edUtilizationWorklistGet$Response(params: {\n\n /**\n * Tier number (1 = ACO, 2 = Community, 3 = Principal Particpant, 4 = Practice)\n */\n TierNum: number;\n\n /**\n * Community or Practice ID\n */\n TierId: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, EdUtilizationWorklistService.EdUtilizationWorklistGetPath, 'get');\n if (params) {\n rb.query('TierNum', params.TierNum, {});\n rb.query('TierId', params.TierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Load the ED Utilization Worklist.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `edUtilizationWorklistGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n edUtilizationWorklistGet(params: {\n\n /**\n * Tier number (1 = ACO, 2 = Community, 3 = Principal Particpant, 4 = Practice)\n */\n TierNum: number;\n\n /**\n * Community or Practice ID\n */\n TierId: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.edUtilizationWorklistGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { UserEula } from '../models/user-eula';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EulaService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation eulaGet\n */\n static readonly EulaGetPath = '/Eula';\n\n /**\n * Get user EULA status.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `eulaGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n eulaGet$Response(params?: {\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, EulaService.EulaGetPath, 'get');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Get user EULA status.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `eulaGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n eulaGet(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.eulaGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation eulaPost\n */\n static readonly EulaPostPath = '/Eula';\n\n /**\n * Update user EULA status.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `eulaPost()` instead.\n *\n * This method doesn't expect any request body.\n */\n eulaPost$Response(params?: {\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, EulaService.EulaPostPath, 'post');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Update user EULA status.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `eulaPost$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n eulaPost(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.eulaPost$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { FacesheetExportDownloadRequest } from '../models/facesheet-export-download-request';\nimport { FacesheetScheduleItem } from '../models/facesheet-schedule-item';\nimport { HccFacesheetScheduleMap } from '../models/hcc-facesheet-schedule-map';\nimport { InterfaceSourceTier } from '../models/interface-source-tier';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FacesheetScheduleService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation facesheetSchedulePdfPost\n */\n static readonly FacesheetSchedulePdfPostPath = '/FacesheetSchedule/pdf';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetSchedulePdfPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n facesheetSchedulePdfPost$Response(params?: {\n body?: Array\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetScheduleService.FacesheetSchedulePdfPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetSchedulePdfPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n facesheetSchedulePdfPost(params?: {\n body?: Array\n },\n context?: HttpContext\n\n): Observable {\n\n return this.facesheetSchedulePdfPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n /**\n * Path part for operation facesheetScheduleExportPost\n */\n static readonly FacesheetScheduleExportPostPath = '/FacesheetSchedule/export';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetScheduleExportPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n facesheetScheduleExportPost$Response(params?: {\n body?: Array\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetScheduleService.FacesheetScheduleExportPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetScheduleExportPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n facesheetScheduleExportPost(params?: {\n body?: Array\n },\n context?: HttpContext\n\n): Observable {\n\n return this.facesheetScheduleExportPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n /**\n * Path part for operation facesheetScheduleGet\n */\n static readonly FacesheetScheduleGetPath = '/FacesheetSchedule';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetScheduleGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetScheduleGet$Response(params?: {\n from?: string;\n to?: string;\n communityId?: string;\n practiceId?: string;\n providerId?: string;\n tier3Id?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetScheduleService.FacesheetScheduleGetPath, 'get');\n if (params) {\n rb.query('from', params.from, {});\n rb.query('to', params.to, {});\n rb.query('communityId', params.communityId, {});\n rb.query('practiceId', params.practiceId, {});\n rb.query('providerId', params.providerId, {});\n rb.query('tier3Id', params.tier3Id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetScheduleGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetScheduleGet(params?: {\n from?: string;\n to?: string;\n communityId?: string;\n practiceId?: string;\n providerId?: string;\n tier3Id?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.facesheetScheduleGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation facesheetScheduleInterfaceTiersGet\n */\n static readonly FacesheetScheduleInterfaceTiersGetPath = '/FacesheetSchedule/interfaceTiers';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetScheduleInterfaceTiersGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetScheduleInterfaceTiersGet$Response(params?: {\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetScheduleService.FacesheetScheduleInterfaceTiersGetPath, 'get');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetScheduleInterfaceTiersGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetScheduleInterfaceTiersGet(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.facesheetScheduleInterfaceTiersGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation facesheetScheduleDownloadExportPost\n */\n static readonly FacesheetScheduleDownloadExportPostPath = '/FacesheetSchedule/downloadExport';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetScheduleDownloadExportPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n facesheetScheduleDownloadExportPost$Response(params?: {\n body?: FacesheetExportDownloadRequest\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetScheduleService.FacesheetScheduleDownloadExportPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetScheduleDownloadExportPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n facesheetScheduleDownloadExportPost(params?: {\n body?: FacesheetExportDownloadRequest\n },\n context?: HttpContext\n\n): Observable {\n\n return this.facesheetScheduleDownloadExportPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { Condition } from '../models/condition';\nimport { FacesheetBatchRequest } from '../models/facesheet-batch-request';\nimport { FacesheetInteractiveConditionRequest } from '../models/facesheet-interactive-condition-request';\nimport { HccCodingOpportunityMap } from '../models/hcc-coding-opportunity-map';\nimport { HccCostUtilization } from '../models/hcc-cost-utilization';\nimport { HccHealthMaintenance } from '../models/hcc-health-maintenance';\nimport { HccHealthMaintenanceDetail } from '../models/hcc-health-maintenance-detail';\nimport { HccPatient } from '../models/hcc-patient';\nimport { HccPreventive } from '../models/hcc-preventive';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FacesheetService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation facesheetGet\n */\n static readonly FacesheetGetPath = '/Facesheet';\n\n /**\n * Get Facesheet demographics for a given patient.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetGet$Response(params?: {\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetService.FacesheetGetPath, 'get');\n if (params) {\n rb.query('Id', params.Id, {});\n rb.query('ChPatId', params.ChPatId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Get Facesheet demographics for a given patient.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetGet(params?: {\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.facesheetGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as HccPatient)\n );\n }\n\n /**\n * Path part for operation facesheetHealthMaintenanceGet\n */\n static readonly FacesheetHealthMaintenanceGetPath = '/Facesheet/healthMaintenance';\n\n /**\n * Get Facesheet health maintenenance for a given patient.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetHealthMaintenanceGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetHealthMaintenanceGet$Response(params?: {\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetService.FacesheetHealthMaintenanceGetPath, 'get');\n if (params) {\n rb.query('Id', params.Id, {});\n rb.query('ChPatId', params.ChPatId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Get Facesheet health maintenenance for a given patient.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetHealthMaintenanceGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetHealthMaintenanceGet(params?: {\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.facesheetHealthMaintenanceGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as HccHealthMaintenance)\n );\n }\n\n /**\n * Path part for operation facesheetCostUtilizationGet\n */\n static readonly FacesheetCostUtilizationGetPath = '/Facesheet/costUtilization';\n\n /**\n * Get Facesheet cost utilization for a given patient.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetCostUtilizationGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetCostUtilizationGet$Response(params?: {\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetService.FacesheetCostUtilizationGetPath, 'get');\n if (params) {\n rb.query('Id', params.Id, {});\n rb.query('ChPatId', params.ChPatId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Get Facesheet cost utilization for a given patient.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetCostUtilizationGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetCostUtilizationGet(params?: {\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.facesheetCostUtilizationGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as HccCostUtilization)\n );\n }\n\n /**\n * Path part for operation facesheetPreventiveGet\n */\n static readonly FacesheetPreventiveGetPath = '/Facesheet/preventive';\n\n /**\n * Get Facesheet preventive care details for a given patient.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetPreventiveGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetPreventiveGet$Response(params?: {\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetService.FacesheetPreventiveGetPath, 'get');\n if (params) {\n rb.query('Id', params.Id, {});\n rb.query('ChPatId', params.ChPatId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Get Facesheet preventive care details for a given patient.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetPreventiveGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetPreventiveGet(params?: {\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.facesheetPreventiveGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as HccPreventive)\n );\n }\n\n /**\n * Path part for operation facesheetOpportunitiesGet\n */\n static readonly FacesheetOpportunitiesGetPath = '/Facesheet/opportunities';\n\n /**\n * Get Facesheet coding opportunities for a given patient.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetOpportunitiesGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetOpportunitiesGet$Response(params?: {\n\n /**\n * Flag specifying whether or not to return chronic coding opportunities\n */\n IsChronic?: boolean;\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetService.FacesheetOpportunitiesGetPath, 'get');\n if (params) {\n rb.query('IsChronic', params.IsChronic, {});\n rb.query('Id', params.Id, {});\n rb.query('ChPatId', params.ChPatId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Get Facesheet coding opportunities for a given patient.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetOpportunitiesGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetOpportunitiesGet(params?: {\n\n /**\n * Flag specifying whether or not to return chronic coding opportunities\n */\n IsChronic?: boolean;\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.facesheetOpportunitiesGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation facesheetConditionsGet\n */\n static readonly FacesheetConditionsGetPath = '/Facesheet/conditions';\n\n /**\n * Get Facesheet conditions for a given patient.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetConditionsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetConditionsGet$Response(params?: {\n\n /**\n * Flag specifying whether or not to return chronic coding opportunities\n */\n IsChronic?: boolean;\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetService.FacesheetConditionsGetPath, 'get');\n if (params) {\n rb.query('IsChronic', params.IsChronic, {});\n rb.query('Id', params.Id, {});\n rb.query('ChPatId', params.ChPatId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Get Facesheet conditions for a given patient.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetConditionsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetConditionsGet(params?: {\n\n /**\n * Flag specifying whether or not to return chronic coding opportunities\n */\n IsChronic?: boolean;\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.facesheetConditionsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as Condition)\n );\n }\n\n /**\n * Path part for operation facesheetHealthMaintenanceDetailsGet\n */\n static readonly FacesheetHealthMaintenanceDetailsGetPath = '/Facesheet/healthMaintenanceDetails';\n\n /**\n * Get Facesheet health maintenance details for a given patient.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetHealthMaintenanceDetailsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetHealthMaintenanceDetailsGet$Response(params?: {\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetService.FacesheetHealthMaintenanceDetailsGetPath, 'get');\n if (params) {\n rb.query('Id', params.Id, {});\n rb.query('ChPatId', params.ChPatId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Get Facesheet health maintenance details for a given patient.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetHealthMaintenanceDetailsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetHealthMaintenanceDetailsGet(params?: {\n\n /**\n * The requested patient's MBI\n */\n Id?: string;\n ChPatId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.facesheetHealthMaintenanceDetailsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation facesheetPdfPost\n */\n static readonly FacesheetPdfPostPath = '/Facesheet/pdf';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetPdfPost()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetPdfPost$Response(params?: {\n chPatId?: number;\n tierId?: string;\n tierNum?: number;\n expanded?: boolean;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetService.FacesheetPdfPostPath, 'post');\n if (params) {\n rb.query('chPatId', params.chPatId, {});\n rb.query('tierId', params.tierId, {});\n rb.query('tierNum', params.tierNum, {});\n rb.query('expanded', params.expanded, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetPdfPost$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n facesheetPdfPost(params?: {\n chPatId?: number;\n tierId?: string;\n tierNum?: number;\n expanded?: boolean;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.facesheetPdfPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n /**\n * Path part for operation facesheetBatchPost\n */\n static readonly FacesheetBatchPostPath = '/Facesheet/batch';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetBatchPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n facesheetBatchPost$Response(params?: {\n body?: FacesheetBatchRequest\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetService.FacesheetBatchPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: parseFloat(String((r as HttpResponse).body)) }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetBatchPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n facesheetBatchPost(params?: {\n body?: FacesheetBatchRequest\n },\n context?: HttpContext\n\n): Observable {\n\n return this.facesheetBatchPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as number)\n );\n }\n\n /**\n * Path part for operation facesheetInteractiveConditionPost\n */\n static readonly FacesheetInteractiveConditionPostPath = '/Facesheet/interactiveCondition';\n\n /**\n * Please check Schema for annotation for DxStatusID.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `facesheetInteractiveConditionPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n facesheetInteractiveConditionPost$Response(params?: {\n body?: FacesheetInteractiveConditionRequest\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, FacesheetService.FacesheetInteractiveConditionPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Please check Schema for annotation for DxStatusID.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `facesheetInteractiveConditionPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n facesheetInteractiveConditionPost(params?: {\n body?: FacesheetInteractiveConditionRequest\n },\n context?: HttpContext\n\n): Observable {\n\n return this.facesheetInteractiveConditionPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { HccDashboardCin } from '../models/hcc-dashboard-cin';\nimport { HccDashboardClinician } from '../models/hcc-dashboard-clinician';\nimport { HccDashboardClosureRate } from '../models/hcc-dashboard-closure-rate';\nimport { HccDashboardCodingOpportunity } from '../models/hcc-dashboard-coding-opportunity';\nimport { HccDashboardDiseaseGroupSummary } from '../models/hcc-dashboard-disease-group-summary';\nimport { HccDashboardMetric } from '../models/hcc-dashboard-metric';\nimport { HccDashboardPatient } from '../models/hcc-dashboard-patient';\nimport { HccDashboardPatientDetail } from '../models/hcc-dashboard-patient-detail';\nimport { HccDashboardPatientDetailV2 } from '../models/hcc-dashboard-patient-detail-v-2';\nimport { HccDashboardPractice } from '../models/hcc-dashboard-practice';\nimport { HccDashboardTierMetric } from '../models/hcc-dashboard-tier-metric';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HccDashboardService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation hccDashboardOpportunitiesGet\n */\n static readonly HccDashboardOpportunitiesGetPath = '/HccDashboard/opportunities';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hccDashboardOpportunitiesGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardOpportunitiesGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HccDashboardService.HccDashboardOpportunitiesGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hccDashboardOpportunitiesGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardOpportunitiesGet(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hccDashboardOpportunitiesGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hccDashboardMetricsGet\n */\n static readonly HccDashboardMetricsGetPath = '/HccDashboard/metrics';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hccDashboardMetricsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardMetricsGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HccDashboardService.HccDashboardMetricsGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hccDashboardMetricsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardMetricsGet(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hccDashboardMetricsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hccDashboardTierMetricsGet\n */\n static readonly HccDashboardTierMetricsGetPath = '/HccDashboard/tierMetrics';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hccDashboardTierMetricsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardTierMetricsGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HccDashboardService.HccDashboardTierMetricsGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hccDashboardTierMetricsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardTierMetricsGet(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hccDashboardTierMetricsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hccDashboardPatientSummaryGet\n */\n static readonly HccDashboardPatientSummaryGetPath = '/HccDashboard/patientSummary';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hccDashboardPatientSummaryGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardPatientSummaryGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n tier1Id?: string;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HccDashboardService.HccDashboardPatientSummaryGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n rb.query('tier1Id', params.tier1Id, {});\n rb.query('attributionStatus', params.attributionStatus, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hccDashboardPatientSummaryGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardPatientSummaryGet(params?: {\n tierNum?: number;\n tierId?: string;\n tier1Id?: string;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hccDashboardPatientSummaryGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hccDashboardPatientDetailsGet\n */\n static readonly HccDashboardPatientDetailsGetPath = '/HccDashboard/patientDetails';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hccDashboardPatientDetailsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardPatientDetailsGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n tier1Id?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HccDashboardService.HccDashboardPatientDetailsGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n rb.query('tier1Id', params.tier1Id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hccDashboardPatientDetailsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardPatientDetailsGet(params?: {\n tierNum?: number;\n tierId?: string;\n tier1Id?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hccDashboardPatientDetailsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hccDashboardPatientDetailsV2Get\n */\n static readonly HccDashboardPatientDetailsV2GetPath = '/HccDashboard/patientDetailsV2';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hccDashboardPatientDetailsV2Get()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardPatientDetailsV2Get$Response(params?: {\n tierNum?: number;\n tierId?: string;\n tier1Id?: string;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HccDashboardService.HccDashboardPatientDetailsV2GetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n rb.query('tier1Id', params.tier1Id, {});\n rb.query('attributionStatus', params.attributionStatus, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hccDashboardPatientDetailsV2Get$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardPatientDetailsV2Get(params?: {\n tierNum?: number;\n tierId?: string;\n tier1Id?: string;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hccDashboardPatientDetailsV2Get$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hccDashboardCliniciansGet\n */\n static readonly HccDashboardCliniciansGetPath = '/HccDashboard/clinicians';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hccDashboardCliniciansGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardCliniciansGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HccDashboardService.HccDashboardCliniciansGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n rb.query('attributionStatus', params.attributionStatus, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hccDashboardCliniciansGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardCliniciansGet(params?: {\n tierNum?: number;\n tierId?: string;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hccDashboardCliniciansGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hccDashboardPracticesGet\n */\n static readonly HccDashboardPracticesGetPath = '/HccDashboard/practices';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hccDashboardPracticesGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardPracticesGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HccDashboardService.HccDashboardPracticesGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n rb.query('attributionStatus', params.attributionStatus, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hccDashboardPracticesGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardPracticesGet(params?: {\n tierNum?: number;\n tierId?: string;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hccDashboardPracticesGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hccDashboardCinsGet\n */\n static readonly HccDashboardCinsGetPath = '/HccDashboard/cins';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hccDashboardCinsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardCinsGet$Response(params?: {\n cinId?: number;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HccDashboardService.HccDashboardCinsGetPath, 'get');\n if (params) {\n rb.query('cinId', params.cinId, {});\n rb.query('attributionStatus', params.attributionStatus, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hccDashboardCinsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardCinsGet(params?: {\n cinId?: number;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hccDashboardCinsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hccDashboardDiseaseGroupsGet\n */\n static readonly HccDashboardDiseaseGroupsGetPath = '/HccDashboard/diseaseGroups';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hccDashboardDiseaseGroupsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardDiseaseGroupsGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HccDashboardService.HccDashboardDiseaseGroupsGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n rb.query('attributionStatus', params.attributionStatus, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hccDashboardDiseaseGroupsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardDiseaseGroupsGet(params?: {\n tierNum?: number;\n tierId?: string;\n attributionStatus?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hccDashboardDiseaseGroupsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hccDashboardClosureRatesGet\n */\n static readonly HccDashboardClosureRatesGetPath = '/HccDashboard/closureRates';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hccDashboardClosureRatesGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardClosureRatesGet$Response(params?: {\n TierId?: string;\n TierNum?: number;\n AttributionStatus?: string;\n Tier1Id?: string;\n Tier2Id?: string;\n Tier3Id?: string;\n DatePart?: string;\n },\n context?: HttpContext\n\n): Observable>>> {\n\n const rb = new RequestBuilder(this.rootUrl, HccDashboardService.HccDashboardClosureRatesGetPath, 'get');\n if (params) {\n rb.query('TierId', params.TierId, {});\n rb.query('TierNum', params.TierNum, {});\n rb.query('AttributionStatus', params.AttributionStatus, {});\n rb.query('Tier1Id', params.Tier1Id, {});\n rb.query('Tier2Id', params.Tier2Id, {});\n rb.query('Tier3Id', params.Tier3Id, {});\n rb.query('DatePart', params.DatePart, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hccDashboardClosureRatesGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hccDashboardClosureRatesGet(params?: {\n TierId?: string;\n TierNum?: number;\n AttributionStatus?: string;\n Tier1Id?: string;\n Tier2Id?: string;\n Tier3Id?: string;\n DatePart?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n return this.hccDashboardClosureRatesGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>>) => r.body as Array>)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { HierarchyTierItem } from '../models/hierarchy-tier-item';\nimport { HierarchyTierName } from '../models/hierarchy-tier-name';\nimport { PracticeListResult } from '../models/practice-list-result';\nimport { ReportTierInfo } from '../models/report-tier-info';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HierarchyService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation hierarchyGet\n */\n static readonly HierarchyGetPath = '/Hierarchy';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hierarchyGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hierarchyGet$Response(params?: {\n tier?: number;\n parentId?: string;\n cin?: number;\n region?: number;\n quarter?: number;\n year?: number;\n menuId?: number;\n tier1Id?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HierarchyService.HierarchyGetPath, 'get');\n if (params) {\n rb.query('tier', params.tier, {});\n rb.query('parentId', params.parentId, {});\n rb.query('cin', params.cin, {});\n rb.query('region', params.region, {});\n rb.query('quarter', params.quarter, {});\n rb.query('year', params.year, {});\n rb.query('menuId', params.menuId, {});\n rb.query('tier1Id', params.tier1Id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hierarchyGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hierarchyGet(params?: {\n tier?: number;\n parentId?: string;\n cin?: number;\n region?: number;\n quarter?: number;\n year?: number;\n menuId?: number;\n tier1Id?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hierarchyGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hierarchyTierGet\n */\n static readonly HierarchyTierGetPath = '/Hierarchy/tier';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hierarchyTierGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hierarchyTierGet$Response(params?: {\n tier?: number;\n tierId?: string;\n chTinId?: number;\n supplementalId?: number;\n quarter?: number;\n year?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, HierarchyService.HierarchyTierGetPath, 'get');\n if (params) {\n rb.query('tier', params.tier, {});\n rb.query('tierId', params.tierId, {});\n rb.query('chTinId', params.chTinId, {});\n rb.query('supplementalId', params.supplementalId, {});\n rb.query('quarter', params.quarter, {});\n rb.query('year', params.year, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hierarchyTierGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hierarchyTierGet(params?: {\n tier?: number;\n tierId?: string;\n chTinId?: number;\n supplementalId?: number;\n quarter?: number;\n year?: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.hierarchyTierGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as HierarchyTierItem)\n );\n }\n\n /**\n * Path part for operation hierarchyTiersGet\n */\n static readonly HierarchyTiersGetPath = '/Hierarchy/tiers';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hierarchyTiersGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hierarchyTiersGet$Response(params?: {\n tierIds?: Array;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HierarchyService.HierarchyTiersGetPath, 'get');\n if (params) {\n rb.query('tierIds', params.tierIds, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hierarchyTiersGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hierarchyTiersGet(params?: {\n tierIds?: Array;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hierarchyTiersGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation hierarchyPracticesGet\n */\n static readonly HierarchyPracticesGetPath = '/Hierarchy/practices';\n\n /**\n * List practices for a given tier.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `hierarchyPracticesGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n hierarchyPracticesGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, HierarchyService.HierarchyPracticesGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * List practices for a given tier.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `hierarchyPracticesGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n hierarchyPracticesGet(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.hierarchyPracticesGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { InsertOrUpdateNoteRequest } from '../models/insert-or-update-note-request';\nimport { Note } from '../models/note';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotesService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation notesGet\n */\n static readonly NotesGetPath = '/Notes';\n\n /**\n * Returns Notes for a given patient.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `notesGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n notesGet$Response(params: {\n\n /**\n * ChPatId of selected patient\n */\n ChPatId: number;\n\n /**\n * Note type requested\n * 1 = AWV Worklist\n * 3 = In-Home AWV\n */\n NoteTypeId: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, NotesService.NotesGetPath, 'get');\n if (params) {\n rb.query('ChPatId', params.ChPatId, {});\n rb.query('NoteTypeId', params.NoteTypeId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Returns Notes for a given patient.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `notesGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n notesGet(params: {\n\n /**\n * ChPatId of selected patient\n */\n ChPatId: number;\n\n /**\n * Note type requested\n * 1 = AWV Worklist\n * 3 = In-Home AWV\n */\n NoteTypeId: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.notesGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation notesPost\n */\n static readonly NotesPostPath = '/Notes';\n\n /**\n * Create or edit a Note.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `notesPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n notesPost$Response(params?: {\n\n /**\n * Note insert/update request\n */\n body?: InsertOrUpdateNoteRequest\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, NotesService.NotesPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: parseFloat(String((r as HttpResponse).body)) }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Create or edit a Note.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `notesPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n notesPost(params?: {\n\n /**\n * Note insert/update request\n */\n body?: InsertOrUpdateNoteRequest\n },\n context?: HttpContext\n\n): Observable {\n\n return this.notesPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as number)\n );\n }\n\n /**\n * Path part for operation notesDelete\n */\n static readonly NotesDeletePath = '/Notes';\n\n /**\n * Deletes a specific Note.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `notesDelete()` instead.\n *\n * This method doesn't expect any request body.\n */\n notesDelete$Response(params: {\n\n /**\n * ID of note to be deleted\n */\n NoteId: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, NotesService.NotesDeletePath, 'delete');\n if (params) {\n rb.query('NoteId', params.NoteId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Deletes a specific Note.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `notesDelete$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n notesDelete(params: {\n\n /**\n * ID of note to be deleted\n */\n NoteId: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.notesDelete$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { CareManagementPatientMapPagedResponse } from '../models/care-management-patient-map-paged-response';\nimport { ChPatId } from '../models/ch-pat-id';\nimport { DiseaseCohortDefinition } from '../models/disease-cohort-definition';\nimport { GlobalPatientSearchResult } from '../models/global-patient-search-result';\nimport { InsertCoachPatientRequest } from '../models/insert-coach-patient-request';\nimport { PatientCohortMapPagedResponse } from '../models/patient-cohort-map-paged-response';\nimport { PatientTimeline } from '../models/patient-timeline';\nimport { TrackPatientMap } from '../models/track-patient-map';\nimport { TrackPatientMapPagedResponse } from '../models/track-patient-map-paged-response';\nimport { UpdateCoachPatientRequest } from '../models/update-coach-patient-request';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PatientsService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation patientsSearchGet\n */\n static readonly PatientsSearchGetPath = '/Patients/search';\n\n /**\n * Search for a patient based on full name, date of birth, or MBI.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `patientsSearchGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsSearchGet$Response(params: {\n NameSearchTerm?: string;\n Mbi?: string;\n DateOfBirth?: string;\n TierId: string;\n TierNum: number;\n RowCount?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, PatientsService.PatientsSearchGetPath, 'get');\n if (params) {\n rb.query('NameSearchTerm', params.NameSearchTerm, {});\n rb.query('Mbi', params.Mbi, {});\n rb.query('DateOfBirth', params.DateOfBirth, {});\n rb.query('TierId', params.TierId, {});\n rb.query('TierNum', params.TierNum, {});\n rb.query('RowCount', params.RowCount, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Search for a patient based on full name, date of birth, or MBI.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `patientsSearchGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsSearchGet(params: {\n NameSearchTerm?: string;\n Mbi?: string;\n DateOfBirth?: string;\n TierId: string;\n TierNum: number;\n RowCount?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.patientsSearchGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation patientsCohortsGet\n */\n static readonly PatientsCohortsGetPath = '/Patients/cohorts';\n\n /**\n * Return a list of patient cohorts.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `patientsCohortsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsCohortsGet$Response(params: {\n CohortId?: number;\n TierNum: number;\n TierId: string;\n OnlyAttributed?: boolean;\n AddedAfter?: string;\n SortColumn?: string;\n SortDirection?: string;\n Skip?: number;\n Take?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, PatientsService.PatientsCohortsGetPath, 'get');\n if (params) {\n rb.query('CohortId', params.CohortId, {});\n rb.query('TierNum', params.TierNum, {});\n rb.query('TierId', params.TierId, {});\n rb.query('OnlyAttributed', params.OnlyAttributed, {});\n rb.query('AddedAfter', params.AddedAfter, {});\n rb.query('SortColumn', params.SortColumn, {});\n rb.query('SortDirection', params.SortDirection, {});\n rb.query('Skip', params.Skip, {});\n rb.query('Take', params.Take, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Return a list of patient cohorts.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `patientsCohortsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsCohortsGet(params: {\n CohortId?: number;\n TierNum: number;\n TierId: string;\n OnlyAttributed?: boolean;\n AddedAfter?: string;\n SortColumn?: string;\n SortDirection?: string;\n Skip?: number;\n Take?: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.patientsCohortsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as PatientCohortMapPagedResponse)\n );\n }\n\n /**\n * Path part for operation patientsListGet\n */\n static readonly PatientsListGetPath = '/Patients/list';\n\n /**\n * Return a list of patients.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `patientsListGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsListGet$Response(params: {\n TierNum: number;\n TierId: string;\n Skip?: number;\n Take?: number;\n ChPatIds?: Array;\n\n /**\n * Flag for returning deceased patients. Defaults to true if not specified.\n */\n IncludeDeceased?: boolean;\n\n /**\n * Number indicating the top percentage of patients to return.\n */\n TopPercent?: number;\n\n /**\n * Indicates the column on which to order the results by. Currently only applies when TopPercent is set. Defaults to \"openhccgapwt\".\n */\n OrderBy?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, PatientsService.PatientsListGetPath, 'get');\n if (params) {\n rb.query('TierNum', params.TierNum, {});\n rb.query('TierId', params.TierId, {});\n rb.query('Skip', params.Skip, {});\n rb.query('Take', params.Take, {});\n rb.query('ChPatIds', params.ChPatIds, {});\n rb.query('IncludeDeceased', params.IncludeDeceased, {});\n rb.query('TopPercent', params.TopPercent, {});\n rb.query('OrderBy', params.OrderBy, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Return a list of patients.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `patientsListGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsListGet(params: {\n TierNum: number;\n TierId: string;\n Skip?: number;\n Take?: number;\n ChPatIds?: Array;\n\n /**\n * Flag for returning deceased patients. Defaults to true if not specified.\n */\n IncludeDeceased?: boolean;\n\n /**\n * Number indicating the top percentage of patients to return.\n */\n TopPercent?: number;\n\n /**\n * Indicates the column on which to order the results by. Currently only applies when TopPercent is set. Defaults to \"openhccgapwt\".\n */\n OrderBy?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.patientsListGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as TrackPatientMapPagedResponse)\n );\n }\n\n /**\n * Path part for operation patientsGet\n */\n static readonly PatientsGetPath = '/Patients';\n\n /**\n * Retrieve a single patient.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `patientsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsGet$Response(params: {\n\n /**\n * Caravan Health Patient ID\n */\n ChPatId: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, PatientsService.PatientsGetPath, 'get');\n if (params) {\n rb.query('ChPatId', params.ChPatId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Retrieve a single patient.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `patientsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsGet(params: {\n\n /**\n * Caravan Health Patient ID\n */\n ChPatId: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.patientsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as TrackPatientMap)\n );\n }\n\n /**\n * Path part for operation patientsInsertPost\n */\n static readonly PatientsInsertPostPath = '/Patients/insert';\n\n /**\n * Insert patient into the CDW.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `patientsInsertPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n patientsInsertPost$Response(params?: {\n body?: InsertCoachPatientRequest\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, PatientsService.PatientsInsertPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Insert patient into the CDW.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `patientsInsertPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n patientsInsertPost(params?: {\n body?: InsertCoachPatientRequest\n },\n context?: HttpContext\n\n): Observable {\n\n return this.patientsInsertPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as ChPatId)\n );\n }\n\n /**\n * Path part for operation patientsUpdatePost\n */\n static readonly PatientsUpdatePostPath = '/Patients/update';\n\n /**\n * Update patient in the CDW.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `patientsUpdatePost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n patientsUpdatePost$Response(params?: {\n body?: UpdateCoachPatientRequest\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, PatientsService.PatientsUpdatePostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Update patient in the CDW.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `patientsUpdatePost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n patientsUpdatePost(params?: {\n body?: UpdateCoachPatientRequest\n },\n context?: HttpContext\n\n): Observable {\n\n return this.patientsUpdatePost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as ChPatId)\n );\n }\n\n /**\n * Path part for operation patientsTimelineGet\n */\n static readonly PatientsTimelineGetPath = '/Patients/timeline';\n\n /**\n * Retrieve timeline for a given patient.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `patientsTimelineGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsTimelineGet$Response(params?: {\n chPatId?: number;\n supplementalId?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, PatientsService.PatientsTimelineGetPath, 'get');\n if (params) {\n rb.query('chPatId', params.chPatId, {});\n rb.query('supplementalId', params.supplementalId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Retrieve timeline for a given patient.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `patientsTimelineGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsTimelineGet(params?: {\n chPatId?: number;\n supplementalId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.patientsTimelineGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation patientsDiseaseCohortDefinitionsGet\n */\n static readonly PatientsDiseaseCohortDefinitionsGetPath = '/Patients/diseaseCohortDefinitions';\n\n /**\n * Retrieve disease cohort definitions.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `patientsDiseaseCohortDefinitionsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsDiseaseCohortDefinitionsGet$Response(params?: {\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, PatientsService.PatientsDiseaseCohortDefinitionsGetPath, 'get');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Retrieve disease cohort definitions.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `patientsDiseaseCohortDefinitionsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsDiseaseCohortDefinitionsGet(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.patientsDiseaseCohortDefinitionsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation patientsHccVipCohortGet\n */\n static readonly PatientsHccVipCohortGetPath = '/Patients/hccVipCohort';\n\n /**\n * Return a list of HCC VIP cohorts.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `patientsHccVipCohortGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsHccVipCohortGet$Response(params: {\n TierNum: number;\n TierId: string;\n TopCount?: number;\n OnlyAttributed?: boolean;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, PatientsService.PatientsHccVipCohortGetPath, 'get');\n if (params) {\n rb.query('TierNum', params.TierNum, {});\n rb.query('TierId', params.TierId, {});\n rb.query('TopCount', params.TopCount, {});\n rb.query('OnlyAttributed', params.OnlyAttributed, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Return a list of HCC VIP cohorts.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `patientsHccVipCohortGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsHccVipCohortGet(params: {\n TierNum: number;\n TierId: string;\n TopCount?: number;\n OnlyAttributed?: boolean;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.patientsHccVipCohortGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation patientsCareManagementGet\n */\n static readonly PatientsCareManagementGetPath = '/Patients/careManagement';\n\n /**\n * Return a list of Care Management patients.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `patientsCareManagementGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsCareManagementGet$Response(params?: {\n TierId?: string;\n TierNum?: number;\n CohortId?: number;\n Skip?: number;\n Take?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, PatientsService.PatientsCareManagementGetPath, 'get');\n if (params) {\n rb.query('TierId', params.TierId, {});\n rb.query('TierNum', params.TierNum, {});\n rb.query('CohortId', params.CohortId, {});\n rb.query('Skip', params.Skip, {});\n rb.query('Take', params.Take, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Return a list of Care Management patients.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `patientsCareManagementGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n patientsCareManagementGet(params?: {\n TierId?: string;\n TierNum?: number;\n CohortId?: number;\n Skip?: number;\n Take?: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.patientsCareManagementGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as CareManagementPatientMapPagedResponse)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { PerformanceDashboardCards } from '../models/performance-dashboard-cards';\nimport { PerformanceDashboardDetail } from '../models/performance-dashboard-detail';\nimport { PerformanceDashboardSummaryItem } from '../models/performance-dashboard-summary-item';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PerformanceDashboardService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation performanceDashboardGet\n */\n static readonly PerformanceDashboardGetPath = '/PerformanceDashboard';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `performanceDashboardGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n performanceDashboardGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, PerformanceDashboardService.PerformanceDashboardGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `performanceDashboardGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n performanceDashboardGet(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.performanceDashboardGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as PerformanceDashboardCards)\n );\n }\n\n /**\n * Path part for operation performanceDashboardSummaryGet\n */\n static readonly PerformanceDashboardSummaryGetPath = '/PerformanceDashboard/summary';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `performanceDashboardSummaryGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n performanceDashboardSummaryGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, PerformanceDashboardService.PerformanceDashboardSummaryGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `performanceDashboardSummaryGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n performanceDashboardSummaryGet(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.performanceDashboardSummaryGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation performanceDashboardDetailsGet\n */\n static readonly PerformanceDashboardDetailsGetPath = '/PerformanceDashboard/details';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `performanceDashboardDetailsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n performanceDashboardDetailsGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n metricId?: number;\n timeFrameId?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, PerformanceDashboardService.PerformanceDashboardDetailsGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n rb.query('metricId', params.metricId, {});\n rb.query('timeFrameId', params.timeFrameId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `performanceDashboardDetailsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n performanceDashboardDetailsGet(params?: {\n tierNum?: number;\n tierId?: string;\n metricId?: number;\n timeFrameId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.performanceDashboardDetailsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { QuarterYear } from '../models/quarter-year';\nimport { ReportAuditRequest } from '../models/report-audit-request';\nimport { ReportDefinition } from '../models/report-definition';\nimport { ReportFilterType } from '../models/report-filter-type';\nimport { ReportMenuItem } from '../models/report-menu-item';\nimport { TrackReportInfo } from '../models/track-report-info';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReportItemsService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation reportAuditPost\n */\n static readonly ReportAuditPostPath = '/report/audit';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `reportAuditPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n reportAuditPost$Response(params?: {\n body?: ReportAuditRequest\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, ReportItemsService.ReportAuditPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `reportAuditPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n reportAuditPost(params?: {\n body?: ReportAuditRequest\n },\n context?: HttpContext\n\n): Observable {\n\n return this.reportAuditPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n /**\n * Path part for operation reportMenuItemsGet\n */\n static readonly ReportMenuItemsGetPath = '/report/menuItems';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `reportMenuItemsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportMenuItemsGet$Response(params?: {\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, ReportItemsService.ReportMenuItemsGetPath, 'get');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `reportMenuItemsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportMenuItemsGet(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.reportMenuItemsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation reportDefinitionGet\n */\n static readonly ReportDefinitionGetPath = '/report/definition';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `reportDefinitionGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportDefinitionGet$Response(params?: {\n id?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, ReportItemsService.ReportDefinitionGetPath, 'get');\n if (params) {\n rb.query('id', params.id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `reportDefinitionGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportDefinitionGet(params?: {\n id?: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.reportDefinitionGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as ReportDefinition)\n );\n }\n\n /**\n * Path part for operation reportQuarterYearsGet\n */\n static readonly ReportQuarterYearsGetPath = '/report/quarterYears';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `reportQuarterYearsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportQuarterYearsGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n menuId?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, ReportItemsService.ReportQuarterYearsGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n rb.query('menuId', params.menuId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `reportQuarterYearsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportQuarterYearsGet(params?: {\n tierNum?: number;\n tierId?: string;\n menuId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.reportQuarterYearsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation reportFilterTypesGet\n */\n static readonly ReportFilterTypesGetPath = '/report/filterTypes';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `reportFilterTypesGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportFilterTypesGet$Response(params?: {\n type?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, ReportItemsService.ReportFilterTypesGetPath, 'get');\n if (params) {\n rb.query('type', params.type, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `reportFilterTypesGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportFilterTypesGet(params?: {\n type?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.reportFilterTypesGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation reportInfoGet\n */\n static readonly ReportInfoGetPath = '/report/info';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `reportInfoGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportInfoGet$Response(params?: {\n reportId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, ReportItemsService.ReportInfoGetPath, 'get');\n if (params) {\n rb.query('reportId', params.reportId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `reportInfoGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportInfoGet(params?: {\n reportId?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.reportInfoGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as TrackReportInfo)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { EmbeddedReport } from '../models/embedded-report';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReportService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation reportGet\n */\n static readonly ReportGetPath = '/Report';\n\n /**\n * Retrieves the access token required to access the Power BI Pro account data.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `reportGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportGet$Response(params?: {\n ReportTierNum?: number;\n ReportTierID?: string;\n AttributionQuarter?: number;\n AttributionYear?: number;\n PHIFlag?: boolean;\n MenuItemId?: number;\n ReportId?: string;\n RegionId?: number;\n CinId?: number;\n CinName?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, ReportService.ReportGetPath, 'get');\n if (params) {\n rb.query('ReportTierNum', params.ReportTierNum, {});\n rb.query('ReportTierID', params.ReportTierID, {});\n rb.query('AttributionQuarter', params.AttributionQuarter, {});\n rb.query('AttributionYear', params.AttributionYear, {});\n rb.query('PHIFlag', params.PHIFlag, {});\n rb.query('MenuItemId', params.MenuItemId, {});\n rb.query('ReportId', params.ReportId, {});\n rb.query('RegionId', params.RegionId, {});\n rb.query('CinId', params.CinId, {});\n rb.query('CinName', params.CinName, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Retrieves the access token required to access the Power BI Pro account data.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `reportGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportGet(params?: {\n ReportTierNum?: number;\n ReportTierID?: string;\n AttributionQuarter?: number;\n AttributionYear?: number;\n PHIFlag?: boolean;\n MenuItemId?: number;\n ReportId?: string;\n RegionId?: number;\n CinId?: number;\n CinName?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.reportGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as EmbeddedReport)\n );\n }\n\n /**\n * Path part for operation reportDashboardGet\n */\n static readonly ReportDashboardGetPath = '/Report/dashboard';\n\n /**\n * Retrieves the access token required to access the specified Power BI dashboard report.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `reportDashboardGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportDashboardGet$Response(params?: {\n reportId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, ReportService.ReportDashboardGetPath, 'get');\n if (params) {\n rb.query('reportId', params.reportId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Retrieves the access token required to access the specified Power BI dashboard report.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `reportDashboardGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportDashboardGet(params?: {\n reportId?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.reportDashboardGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n /**\n * Path part for operation reportAccessTokenGet\n */\n static readonly ReportAccessTokenGetPath = '/Report/accessToken';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `reportAccessTokenGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportAccessTokenGet$Response(params?: {\n reportId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, ReportService.ReportAccessTokenGetPath, 'get');\n if (params) {\n rb.query('reportId', params.reportId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `reportAccessTokenGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportAccessTokenGet(params?: {\n reportId?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.reportAccessTokenGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as EmbeddedReport)\n );\n }\n\n /**\n * Path part for operation reportTokenUsageGet\n */\n static readonly ReportTokenUsageGetPath = '/Report/tokenUsage';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `reportTokenUsageGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportTokenUsageGet$Response(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, ReportService.ReportTokenUsageGetPath, 'get');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: parseFloat(String((r as HttpResponse).body)) }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `reportTokenUsageGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n reportTokenUsageGet(params?: {\n },\n context?: HttpContext\n\n): Observable {\n\n return this.reportTokenUsageGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as number)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { SnfResult } from '../models/snf-result';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SnfService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation snfListGet\n */\n static readonly SnfListGetPath = '/Snf/list';\n\n /**\n * Returns list of SNFs for given tier2_id.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `snfListGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n snfListGet$Response(params: {\n\n /**\n * TierId for SNF list\n */\n Tier2_ID: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, SnfService.SnfListGetPath, 'get');\n if (params) {\n rb.query('Tier2_ID', params.Tier2_ID, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Returns list of SNFs for given tier2_id.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `snfListGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n snfListGet(params: {\n\n /**\n * TierId for SNF list\n */\n Tier2_ID: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.snfListGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { Sp340BceLocation } from '../models/sp-340-bce-location';\nimport { Sp340BClaim } from '../models/sp-340-b-claim';\nimport { Sp340BClaimDetail } from '../models/sp-340-b-claim-detail';\nimport { Sp340BClaimException } from '../models/sp-340-b-claim-exception';\nimport { Sp340BClaimIds } from '../models/sp-340-b-claim-ids';\nimport { Sp340BClaimNote } from '../models/sp-340-b-claim-note';\nimport { Sp340BFileAttachment } from '../models/sp-340-b-file-attachment';\nimport { Sp340BLogMessage } from '../models/sp-340-b-log-message';\nimport { Sp340BPharmacy } from '../models/sp-340-b-pharmacy';\nimport { Sp340BPrescriber } from '../models/sp-340-b-prescriber';\nimport { Sp340BSimpleResponse } from '../models/sp-340-b-simple-response';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Sp340BClaimsService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation sp340BClaimsGet\n */\n static readonly Sp340BClaimsGetPath = '/Sp340BClaims';\n\n /**\n * Get claims data\n * No parameters returns all.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGet$Response(params?: {\n acoId?: string;\n tier2Id?: string;\n tier3Id?: string;\n tier4Id?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsGetPath, 'get');\n if (params) {\n rb.query('acoId', params.acoId, {});\n rb.query('tier2Id', params.tier2Id, {});\n rb.query('tier3Id', params.tier3Id, {});\n rb.query('tier4Id', params.tier4Id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * Get claims data\n * No parameters returns all.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGet(params?: {\n acoId?: string;\n tier2Id?: string;\n tier3Id?: string;\n tier4Id?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BClaimsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsGetDetailGet\n */\n static readonly Sp340BClaimsGetDetailGetPath = '/Sp340BClaims/getDetail';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsGetDetailGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetDetailGet$Response(params?: {\n claimPk?: number;\n claimId?: number;\n acoId?: string;\n tier2_id?: string;\n tier3_id?: string;\n tier4_grpId?: string;\n claimType?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsGetDetailGetPath, 'get');\n if (params) {\n rb.query('claimPk', params.claimPk, {});\n rb.query('claimId', params.claimId, {});\n rb.query('acoId', params.acoId, {});\n rb.query('tier2_id', params.tier2_id, {});\n rb.query('tier3_id', params.tier3_id, {});\n rb.query('tier4_grpId', params.tier4_grpId, {});\n rb.query('claimType', params.claimType, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsGetDetailGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetDetailGet(params?: {\n claimPk?: number;\n claimId?: number;\n acoId?: string;\n tier2_id?: string;\n tier3_id?: string;\n tier4_grpId?: string;\n claimType?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BClaimsGetDetailGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsSetDetailPost\n */\n static readonly Sp340BClaimsSetDetailPostPath = '/Sp340BClaims/setDetail';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsSetDetailPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BClaimsSetDetailPost$Response(params?: {\n body?: Sp340BClaimDetail\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsSetDetailPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsSetDetailPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BClaimsSetDetailPost(params?: {\n body?: Sp340BClaimDetail\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BClaimsSetDetailPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as Sp340BClaimDetail)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsSaveClaimNotePost\n */\n static readonly Sp340BClaimsSaveClaimNotePostPath = '/Sp340BClaims/saveClaimNote';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsSaveClaimNotePost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BClaimsSaveClaimNotePost$Response(params?: {\n body?: Sp340BClaimNote\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsSaveClaimNotePostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsSaveClaimNotePost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BClaimsSaveClaimNotePost(params?: {\n body?: Sp340BClaimNote\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BClaimsSaveClaimNotePost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as Sp340BClaimNote)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsGetApprovedClaimsGet\n */\n static readonly Sp340BClaimsGetApprovedClaimsGetPath = '/Sp340BClaims/getApprovedClaims';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsGetApprovedClaimsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetApprovedClaimsGet$Response(params?: {\n acoId?: string;\n tier2Id?: string;\n tier3Id?: string;\n tier4Id?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsGetApprovedClaimsGetPath, 'get');\n if (params) {\n rb.query('acoId', params.acoId, {});\n rb.query('tier2Id', params.tier2Id, {});\n rb.query('tier3Id', params.tier3Id, {});\n rb.query('tier4Id', params.tier4Id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsGetApprovedClaimsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetApprovedClaimsGet(params?: {\n acoId?: string;\n tier2Id?: string;\n tier3Id?: string;\n tier4Id?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BClaimsGetApprovedClaimsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsGetPrescribersGet\n */\n static readonly Sp340BClaimsGetPrescribersGetPath = '/Sp340BClaims/getPrescribers';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsGetPrescribersGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetPrescribersGet$Response(params?: {\n acoId?: string;\n tier2Id?: string;\n tier3Id?: string;\n tier4Id?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsGetPrescribersGetPath, 'get');\n if (params) {\n rb.query('acoId', params.acoId, {});\n rb.query('tier2Id', params.tier2Id, {});\n rb.query('tier3Id', params.tier3Id, {});\n rb.query('tier4Id', params.tier4Id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsGetPrescribersGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetPrescribersGet(params?: {\n acoId?: string;\n tier2Id?: string;\n tier3Id?: string;\n tier4Id?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BClaimsGetPrescribersGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsGetPharmacyNamesGet\n */\n static readonly Sp340BClaimsGetPharmacyNamesGetPath = '/Sp340BClaims/getPharmacyNames';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsGetPharmacyNamesGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetPharmacyNamesGet$Response(params?: {\n acoId?: string;\n tier2Id?: string;\n tier3Id?: string;\n tier4Id?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsGetPharmacyNamesGetPath, 'get');\n if (params) {\n rb.query('acoId', params.acoId, {});\n rb.query('tier2Id', params.tier2Id, {});\n rb.query('tier3Id', params.tier3Id, {});\n rb.query('tier4Id', params.tier4Id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsGetPharmacyNamesGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetPharmacyNamesGet(params?: {\n acoId?: string;\n tier2Id?: string;\n tier3Id?: string;\n tier4Id?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BClaimsGetPharmacyNamesGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsSetClaimsToProcessedPost\n */\n static readonly Sp340BClaimsSetClaimsToProcessedPostPath = '/Sp340BClaims/setClaimsToProcessed';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsSetClaimsToProcessedPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BClaimsSetClaimsToProcessedPost$Response(params?: {\n body?: Sp340BClaimIds\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsSetClaimsToProcessedPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: String((r as HttpResponse).body) === 'true' }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsSetClaimsToProcessedPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BClaimsSetClaimsToProcessedPost(params?: {\n body?: Sp340BClaimIds\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BClaimsSetClaimsToProcessedPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as boolean)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsGetCeLocationsGet\n */\n static readonly Sp340BClaimsGetCeLocationsGetPath = '/Sp340BClaims/getCELocations';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsGetCeLocationsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetCeLocationsGet$Response(params?: {\n ccn?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsGetCeLocationsGetPath, 'get');\n if (params) {\n rb.query('ccn', params.ccn, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsGetCeLocationsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetCeLocationsGet(params?: {\n ccn?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BClaimsGetCeLocationsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsWriteLogMessagePost\n */\n static readonly Sp340BClaimsWriteLogMessagePostPath = '/Sp340BClaims/writeLogMessage';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsWriteLogMessagePost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BClaimsWriteLogMessagePost$Response(params?: {\n body?: Sp340BLogMessage\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsWriteLogMessagePostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: String((r as HttpResponse).body) === 'true' }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsWriteLogMessagePost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BClaimsWriteLogMessagePost(params?: {\n body?: Sp340BLogMessage\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BClaimsWriteLogMessagePost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as boolean)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsGetDetailWithIdGet\n */\n static readonly Sp340BClaimsGetDetailWithIdGetPath = '/Sp340BClaims/getDetailWithId';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsGetDetailWithIdGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetDetailWithIdGet$Response(params?: {\n claimId?: number;\n claimType?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsGetDetailWithIdGetPath, 'get');\n if (params) {\n rb.query('claimId', params.claimId, {});\n rb.query('claimType', params.claimType, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsGetDetailWithIdGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetDetailWithIdGet(params?: {\n claimId?: number;\n claimType?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BClaimsGetDetailWithIdGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsGetClaimWithIdGet\n */\n static readonly Sp340BClaimsGetClaimWithIdGetPath = '/Sp340BClaims/getClaimWithId';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsGetClaimWithIdGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetClaimWithIdGet$Response(params?: {\n tier2Id?: string;\n claimId?: number;\n claimType?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsGetClaimWithIdGetPath, 'get');\n if (params) {\n rb.query('tier2Id', params.tier2Id, {});\n rb.query('claimId', params.claimId, {});\n rb.query('claimType', params.claimType, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsGetClaimWithIdGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetClaimWithIdGet(params?: {\n tier2Id?: string;\n claimId?: number;\n claimType?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BClaimsGetClaimWithIdGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsGetClaimDetailHistoryGet\n */\n static readonly Sp340BClaimsGetClaimDetailHistoryGetPath = '/Sp340BClaims/getClaimDetailHistory';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsGetClaimDetailHistoryGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetClaimDetailHistoryGet$Response(params?: {\n claimId?: number;\n status?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsGetClaimDetailHistoryGetPath, 'get');\n if (params) {\n rb.query('claimId', params.claimId, {});\n rb.query('status', params.status, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsGetClaimDetailHistoryGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetClaimDetailHistoryGet(params?: {\n claimId?: number;\n status?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BClaimsGetClaimDetailHistoryGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsUploadFilesPost\n */\n static readonly Sp340BClaimsUploadFilesPostPath = '/Sp340BClaims/uploadFiles';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsUploadFilesPost()` instead.\n *\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\n */\n sp340BClaimsUploadFilesPost$Response(params?: {\n body?: {\n'ContentType'?: string;\n'ContentDisposition'?: string;\n'Headers'?: {\n[key: string]: Array;\n};\n'Length'?: number;\n'Name'?: string;\n'FileName'?: string;\n'claimId'?: string;\n'tier2Id'?: string;\n'prescriptionRefID'?: string;\n}\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsUploadFilesPostPath, 'post');\n if (params) {\n rb.body(params.body, 'multipart/form-data');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsUploadFilesPost$Response()` instead.\n *\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\n */\n sp340BClaimsUploadFilesPost(params?: {\n body?: {\n'ContentType'?: string;\n'ContentDisposition'?: string;\n'Headers'?: {\n[key: string]: Array;\n};\n'Length'?: number;\n'Name'?: string;\n'FileName'?: string;\n'claimId'?: string;\n'tier2Id'?: string;\n'prescriptionRefID'?: string;\n}\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BClaimsUploadFilesPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as Sp340BSimpleResponse)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsDeleteUploadedFilePost\n */\n static readonly Sp340BClaimsDeleteUploadedFilePostPath = '/Sp340BClaims/deleteUploadedFile';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsDeleteUploadedFilePost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BClaimsDeleteUploadedFilePost$Response(params?: {\n body?: Sp340BFileAttachment\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsDeleteUploadedFilePostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsDeleteUploadedFilePost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BClaimsDeleteUploadedFilePost(params?: {\n body?: Sp340BFileAttachment\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BClaimsDeleteUploadedFilePost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as Sp340BSimpleResponse)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsGetUploadedFileListGet\n */\n static readonly Sp340BClaimsGetUploadedFileListGetPath = '/Sp340BClaims/getUploadedFileList';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsGetUploadedFileListGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetUploadedFileListGet$Response(params?: {\n tier2Id?: string;\n prescriptionRefId?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsGetUploadedFileListGetPath, 'get');\n if (params) {\n rb.query('tier2Id', params.tier2Id, {});\n rb.query('prescriptionRefId', params.prescriptionRefId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsGetUploadedFileListGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetUploadedFileListGet(params?: {\n tier2Id?: string;\n prescriptionRefId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BClaimsGetUploadedFileListGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsDownloadFileGet\n */\n static readonly Sp340BClaimsDownloadFileGetPath = '/Sp340BClaims/downloadFile';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsDownloadFileGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsDownloadFileGet$Response(params?: {\n tier2Id?: string;\n prescriptionRefId?: string;\n filename?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsDownloadFileGetPath, 'get');\n if (params) {\n rb.query('tier2Id', params.tier2Id, {});\n rb.query('prescriptionRefId', params.prescriptionRefId, {});\n rb.query('filename', params.filename, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsDownloadFileGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsDownloadFileGet(params?: {\n tier2Id?: string;\n prescriptionRefId?: string;\n filename?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BClaimsDownloadFileGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsUndoProcessClaimPost\n */\n static readonly Sp340BClaimsUndoProcessClaimPostPath = '/Sp340BClaims/undoProcessClaim';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsUndoProcessClaimPost()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsUndoProcessClaimPost$Response(params?: {\n coach340BClaimsID?: number;\n claimType?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsUndoProcessClaimPostPath, 'post');\n if (params) {\n rb.query('coach340BClaimsID', params.coach340BClaimsID, {});\n rb.query('claimType', params.claimType, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsUndoProcessClaimPost$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsUndoProcessClaimPost(params?: {\n coach340BClaimsID?: number;\n claimType?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BClaimsUndoProcessClaimPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as Sp340BSimpleResponse)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsGetClaimExceptionsGet\n */\n static readonly Sp340BClaimsGetClaimExceptionsGetPath = '/Sp340BClaims/getClaimExceptions';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsGetClaimExceptionsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetClaimExceptionsGet$Response(params?: {\n tier2Id?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsGetClaimExceptionsGetPath, 'get');\n if (params) {\n rb.query('tier2Id', params.tier2Id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsGetClaimExceptionsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsGetClaimExceptionsGet(params?: {\n tier2Id?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BClaimsGetClaimExceptionsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsMoveExceptionToClaimGet\n */\n static readonly Sp340BClaimsMoveExceptionToClaimGetPath = '/Sp340BClaims/moveExceptionToClaim';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsMoveExceptionToClaimGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsMoveExceptionToClaimGet$Response(params?: {\n exceptionId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsMoveExceptionToClaimGetPath, 'get');\n if (params) {\n rb.query('exceptionId', params.exceptionId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsMoveExceptionToClaimGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsMoveExceptionToClaimGet(params?: {\n exceptionId?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BClaimsMoveExceptionToClaimGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as Sp340BSimpleResponse)\n );\n }\n\n /**\n * Path part for operation sp340BClaimsRejectExceptionGet\n */\n static readonly Sp340BClaimsRejectExceptionGetPath = '/Sp340BClaims/rejectException';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BClaimsRejectExceptionGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsRejectExceptionGet$Response(params?: {\n exceptionId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BClaimsService.Sp340BClaimsRejectExceptionGetPath, 'get');\n if (params) {\n rb.query('exceptionId', params.exceptionId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BClaimsRejectExceptionGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BClaimsRejectExceptionGet(params?: {\n exceptionId?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BClaimsRejectExceptionGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as Sp340BSimpleResponse)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { Sp340BClaimIdList } from '../models/sp-340-b-claim-id-list';\nimport { Sp340BContractInfo } from '../models/sp-340-b-contract-info';\nimport { Sp340BInventoryClaim } from '../models/sp-340-b-inventory-claim';\nimport { Sp340BInvoice } from '../models/sp-340-b-invoice';\nimport { Sp340BInvoiceId } from '../models/sp-340-b-invoice-id';\nimport { Sp340BUserInfo } from '../models/sp-340-b-user-info';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Sp340BInvoiceService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation sp340BInvoiceGet\n */\n static readonly Sp340BInvoiceGetPath = '/Sp340BInvoice';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BInvoiceGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BInvoiceGet$Response(params?: {\n acoId?: string;\n tier2Id?: string;\n tier3Id?: string;\n tier4Id?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BInvoiceService.Sp340BInvoiceGetPath, 'get');\n if (params) {\n rb.query('acoId', params.acoId, {});\n rb.query('tier2Id', params.tier2Id, {});\n rb.query('tier3Id', params.tier3Id, {});\n rb.query('tier4Id', params.tier4Id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BInvoiceGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BInvoiceGet(params?: {\n acoId?: string;\n tier2Id?: string;\n tier3Id?: string;\n tier4Id?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BInvoiceGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BInvoiceSaveInvoicePost\n */\n static readonly Sp340BInvoiceSaveInvoicePostPath = '/Sp340BInvoice/saveInvoice';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BInvoiceSaveInvoicePost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BInvoiceSaveInvoicePost$Response(params?: {\n body?: Sp340BInvoice\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BInvoiceService.Sp340BInvoiceSaveInvoicePostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BInvoiceSaveInvoicePost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BInvoiceSaveInvoicePost(params?: {\n body?: Sp340BInvoice\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BInvoiceSaveInvoicePost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as Sp340BInvoice)\n );\n }\n\n /**\n * Path part for operation sp340BInvoiceGetInvoiceHistoryGet\n */\n static readonly Sp340BInvoiceGetInvoiceHistoryGetPath = '/Sp340BInvoice/getInvoiceHistory';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BInvoiceGetInvoiceHistoryGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BInvoiceGetInvoiceHistoryGet$Response(params?: {\n tier2Id?: string;\n claimId?: number;\n status?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BInvoiceService.Sp340BInvoiceGetInvoiceHistoryGetPath, 'get');\n if (params) {\n rb.query('tier2Id', params.tier2Id, {});\n rb.query('claimId', params.claimId, {});\n rb.query('status', params.status, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BInvoiceGetInvoiceHistoryGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BInvoiceGetInvoiceHistoryGet(params?: {\n tier2Id?: string;\n claimId?: number;\n status?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BInvoiceGetInvoiceHistoryGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BInvoiceGetUserInfoGet\n */\n static readonly Sp340BInvoiceGetUserInfoGetPath = '/Sp340BInvoice/getUserInfo';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BInvoiceGetUserInfoGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BInvoiceGetUserInfoGet$Response(params?: {\n userId?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BInvoiceService.Sp340BInvoiceGetUserInfoGetPath, 'get');\n if (params) {\n rb.query('userId', params.userId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BInvoiceGetUserInfoGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BInvoiceGetUserInfoGet(params?: {\n userId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BInvoiceGetUserInfoGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BInvoiceGetContractInfoGet\n */\n static readonly Sp340BInvoiceGetContractInfoGetPath = '/Sp340BInvoice/getContractInfo';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BInvoiceGetContractInfoGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BInvoiceGetContractInfoGet$Response(params?: {\n tier2Id?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BInvoiceService.Sp340BInvoiceGetContractInfoGetPath, 'get');\n if (params) {\n rb.query('tier2Id', params.tier2Id, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BInvoiceGetContractInfoGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BInvoiceGetContractInfoGet(params?: {\n tier2Id?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BInvoiceGetContractInfoGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation sp340BInvoiceGetInvoiceIdGet\n */\n static readonly Sp340BInvoiceGetInvoiceIdGetPath = '/Sp340BInvoice/getInvoiceId';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BInvoiceGetInvoiceIdGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BInvoiceGetInvoiceIdGet$Response(params?: {\n coach340BClaimsID?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BInvoiceService.Sp340BInvoiceGetInvoiceIdGetPath, 'get');\n if (params) {\n rb.query('coach340BClaimsID', params.coach340BClaimsID, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BInvoiceGetInvoiceIdGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sp340BInvoiceGetInvoiceIdGet(params?: {\n coach340BClaimsID?: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.sp340BInvoiceGetInvoiceIdGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as Sp340BInvoiceId)\n );\n }\n\n /**\n * Path part for operation sp340BInvoiceGetClaimsForInvoicePost\n */\n static readonly Sp340BInvoiceGetClaimsForInvoicePostPath = '/Sp340BInvoice/getClaimsForInvoice';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sp340BInvoiceGetClaimsForInvoicePost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BInvoiceGetClaimsForInvoicePost$Response(params?: {\n body?: Sp340BClaimIdList\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, Sp340BInvoiceService.Sp340BInvoiceGetClaimsForInvoicePostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sp340BInvoiceGetClaimsForInvoicePost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n sp340BInvoiceGetClaimsForInvoicePost(params?: {\n body?: Sp340BClaimIdList\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.sp340BInvoiceGetClaimsForInvoicePost$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { StatusResponse } from '../models/status-response';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation statusGet\n */\n static readonly StatusGetPath = '/Status';\n\n /**\n * Get API status.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `statusGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n statusGet$Response(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, StatusService.StatusGetPath, 'get');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Get API status.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `statusGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n statusGet(params?: {\n },\n context?: HttpContext\n\n): Observable {\n\n return this.statusGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as StatusResponse)\n );\n }\n\n /**\n * Path part for operation statusDelete\n */\n static readonly StatusDeletePath = '/Status';\n\n /**\n * Test application exception.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `statusDelete()` instead.\n *\n * This method doesn't expect any request body.\n */\n statusDelete$Response(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, StatusService.StatusDeletePath, 'delete');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Test application exception.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `statusDelete$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n statusDelete(params?: {\n },\n context?: HttpContext\n\n): Observable {\n\n return this.statusDelete$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n /**\n * Path part for operation statusHealthGet\n */\n static readonly StatusHealthGetPath = '/Status/health';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `statusHealthGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n statusHealthGet$Response(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, StatusService.StatusHealthGetPath, 'get');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `statusHealthGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n statusHealthGet(params?: {\n },\n context?: HttpContext\n\n): Observable {\n\n return this.statusHealthGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as string)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation userUpdateTierInfoGet\n */\n static readonly UserUpdateTierInfoGetPath = '/User/updateTierInfo';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `userUpdateTierInfoGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n userUpdateTierInfoGet$Response(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, UserService.UserUpdateTierInfoGetPath, 'get');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `userUpdateTierInfoGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n userUpdateTierInfoGet(params?: {\n },\n context?: HttpContext\n\n): Observable {\n\n return this.userUpdateTierInfoGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { PopHealthMarginInsertUpdateRequest } from '../models/pop-health-margin-insert-update-request';\nimport { RefreshDates } from '../models/refresh-dates';\nimport { ValueCalculatorDetailsResponse } from '../models/value-calculator-details-response';\nimport { ValueCalculatorNetValueItem } from '../models/value-calculator-net-value-item';\nimport { ValueCalculatorPopHealthMargin } from '../models/value-calculator-pop-health-margin';\nimport { ValueNetworkUtilizationItem } from '../models/value-network-utilization-item';\nimport { ValuePopHealthItem } from '../models/value-pop-health-item';\nimport { ValueSharedSavingsItem } from '../models/value-shared-savings-item';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ValueCalculatorService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation valueCalculatorGet\n */\n static readonly ValueCalculatorGetPath = '/ValueCalculator';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `valueCalculatorGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, ValueCalculatorService.ValueCalculatorGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `valueCalculatorGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorGet(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.valueCalculatorGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as ValueCalculatorDetailsResponse)\n );\n }\n\n /**\n * Path part for operation valueCalculatorSharedSavingsGet\n */\n static readonly ValueCalculatorSharedSavingsGetPath = '/ValueCalculator/sharedSavings';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `valueCalculatorSharedSavingsGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorSharedSavingsGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, ValueCalculatorService.ValueCalculatorSharedSavingsGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `valueCalculatorSharedSavingsGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorSharedSavingsGet(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.valueCalculatorSharedSavingsGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation valueCalculatorNetworkUtilizationGet\n */\n static readonly ValueCalculatorNetworkUtilizationGetPath = '/ValueCalculator/networkUtilization';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `valueCalculatorNetworkUtilizationGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorNetworkUtilizationGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, ValueCalculatorService.ValueCalculatorNetworkUtilizationGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `valueCalculatorNetworkUtilizationGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorNetworkUtilizationGet(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.valueCalculatorNetworkUtilizationGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation valueCalculatorPopHealthGet\n */\n static readonly ValueCalculatorPopHealthGetPath = '/ValueCalculator/popHealth';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `valueCalculatorPopHealthGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorPopHealthGet$Response(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, ValueCalculatorService.ValueCalculatorPopHealthGetPath, 'get');\n if (params) {\n rb.query('tierNum', params.tierNum, {});\n rb.query('tierId', params.tierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `valueCalculatorPopHealthGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorPopHealthGet(params?: {\n tierNum?: number;\n tierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.valueCalculatorPopHealthGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation valueCalculatorGetRefreshDatesGet\n */\n static readonly ValueCalculatorGetRefreshDatesGetPath = '/ValueCalculator/getRefreshDates';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `valueCalculatorGetRefreshDatesGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorGetRefreshDatesGet$Response(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, ValueCalculatorService.ValueCalculatorGetRefreshDatesGetPath, 'get');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `valueCalculatorGetRefreshDatesGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorGetRefreshDatesGet(params?: {\n },\n context?: HttpContext\n\n): Observable {\n\n return this.valueCalculatorGetRefreshDatesGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as RefreshDates)\n );\n }\n\n /**\n * Path part for operation valueCalculatorPopHealthMarginGet\n */\n static readonly ValueCalculatorPopHealthMarginGetPath = '/ValueCalculator/popHealthMargin';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `valueCalculatorPopHealthMarginGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorPopHealthMarginGet$Response(params?: {\n TierNum?: number;\n TierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, ValueCalculatorService.ValueCalculatorPopHealthMarginGetPath, 'get');\n if (params) {\n rb.query('TierNum', params.TierNum, {});\n rb.query('TierId', params.TierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `valueCalculatorPopHealthMarginGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorPopHealthMarginGet(params?: {\n TierNum?: number;\n TierId?: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.valueCalculatorPopHealthMarginGet$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as ValueCalculatorPopHealthMargin)\n );\n }\n\n /**\n * Path part for operation valueCalculatorPopHealthMarginPost\n */\n static readonly ValueCalculatorPopHealthMarginPostPath = '/ValueCalculator/popHealthMargin';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `valueCalculatorPopHealthMarginPost()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n valueCalculatorPopHealthMarginPost$Response(params?: {\n body?: PopHealthMarginInsertUpdateRequest\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, ValueCalculatorService.ValueCalculatorPopHealthMarginPostPath, 'post');\n if (params) {\n rb.body(params.body, 'application/*+json');\n }\n\n return this.http.request(rb.build({\n responseType: 'text',\n accept: '*/*',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `valueCalculatorPopHealthMarginPost$Response()` instead.\n *\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\n */\n valueCalculatorPopHealthMarginPost(params?: {\n body?: PopHealthMarginInsertUpdateRequest\n },\n context?: HttpContext\n\n): Observable {\n\n return this.valueCalculatorPopHealthMarginPost$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as void)\n );\n }\n\n /**\n * Path part for operation valueCalculatorNetValueGet\n */\n static readonly ValueCalculatorNetValueGetPath = '/ValueCalculator/netValue';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `valueCalculatorNetValueGet()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorNetValueGet$Response(params?: {\n TierNum?: number;\n TierId?: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, ValueCalculatorService.ValueCalculatorNetValueGetPath, 'get');\n if (params) {\n rb.query('TierNum', params.TierNum, {});\n rb.query('TierId', params.TierId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `valueCalculatorNetValueGet$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n valueCalculatorNetValueGet(params?: {\n TierNum?: number;\n TierId?: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.valueCalculatorNetValueGet$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\n\n/**\n * Global configuration\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiConfiguration {\n rootUrl: string = 'https://compassapifunctionsdev.azurewebsites.net/api';\n}\n\n/**\n * Parameters for `UserDetailApiModule.forRoot()`\n */\nexport interface ApiConfigurationParams {\n rootUrl?: string;\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiConfiguration } from './api-configuration';\n\n/**\n * Base class for services\n */\n@Injectable()\nexport class BaseService {\n constructor(\n protected config: ApiConfiguration,\n protected http: HttpClient\n ) {\n }\n\n private _rootUrl: string = '';\n\n /**\n * Returns the root url for all operations in this service. If not set directly in this\n * service, will fallback to `ApiConfiguration.rootUrl`.\n */\n get rootUrl(): string {\n return this._rootUrl || this.config.rootUrl;\n }\n\n /**\n * Sets the root URL for API operations in this service.\n */\n set rootUrl(rootUrl: string) {\n this._rootUrl = rootUrl;\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { HttpRequest, HttpParameterCodec, HttpParams, HttpHeaders, HttpContext } from '@angular/common/http';\n\n/**\n * Custom parameter codec to correctly handle the plus sign in parameter\n * values. See https://github.com/angular/angular/issues/18261\n */\nclass ParameterCodec implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\nconst ParameterCodecInstance = new ParameterCodec();\n\n/**\n * Defines the options for appending a parameter\n */\ninterface ParameterOptions {\n style?: string;\n explode?: boolean;\n}\n\n/**\n * Base class for a parameter\n */\nabstract class Parameter {\n constructor(public name: string, public value: any, public options: ParameterOptions, defaultStyle: string, defaultExplode: boolean) {\n this.options = options || {};\n if (this.options.style === null || this.options.style === undefined) {\n this.options.style = defaultStyle;\n }\n if (this.options.explode === null || this.options.explode === undefined) {\n this.options.explode = defaultExplode;\n }\n }\n\n serializeValue(value: any, separator = ','): string {\n if (value === null || value === undefined) {\n return '';\n } else if (value instanceof Array) {\n return value.map(v => this.serializeValue(v).split(separator).join(encodeURIComponent(separator))).join(separator);\n } else if (typeof value === 'object') {\n const array: string[] = [];\n for (const key of Object.keys(value)) {\n let propVal = value[key];\n if (propVal !== null && propVal !== undefined) {\n propVal = this.serializeValue(propVal).split(separator).join(encodeURIComponent(separator));\n if (this.options.explode) {\n array.push(`${key}=${propVal}`);\n } else {\n array.push(key);\n array.push(propVal);\n }\n }\n }\n return array.join(separator);\n } else {\n return String(value);\n }\n }\n}\n\n/**\n * A parameter in the operation path\n */\nclass PathParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(path: string): string {\n let value = this.value;\n if (value === null || value === undefined) {\n value = '';\n }\n let prefix = this.options.style === 'label' ? '.' : '';\n let separator = this.options.explode ? prefix === '' ? ',' : prefix : ',';\n let alreadySerialized = false;\n if (this.options.style === 'matrix') {\n // The parameter name is just used as prefix, except in some cases...\n prefix = `;${this.name}=`;\n if (this.options.explode && typeof value === 'object') {\n prefix = ';';\n if (value instanceof Array) {\n // For arrays we have to repeat the name for each element\n value = value.map(v => `${this.name}=${this.serializeValue(v, ';')}`);\n value = value.join(';');\n alreadySerialized = true;\n } else {\n // For objects we have to put each the key / value pairs\n value = this.serializeValue(value, ';');\n alreadySerialized = true\n }\n }\n }\n value = prefix + (alreadySerialized ? value : this.serializeValue(value, separator));\n // Replace both the plain variable and the corresponding variant taking in the prefix and explode into account\n path = path.replace(`{${this.name}}`, value);\n path = path.replace(`{${prefix}${this.name}${this.options.explode ? '*' : ''}}`, value);\n return path;\n }\n\n // @ts-ignore\n serializeValue(value: any, separator = ','): string {\n var result = typeof value === 'string' ? encodeURIComponent(value) : super.serializeValue(value, separator);\n result = result.replace(/%3D/g, '=');\n result = result.replace(/%3B/g, ';');\n result = result.replace(/%2C/g, ',');\n return result;\n }\n}\n\n/**\n * A parameter in the query\n */\nclass QueryParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'form', true);\n }\n\n append(params: HttpParams): HttpParams {\n if (this.value instanceof Array) {\n // Array serialization\n if (this.options.explode) {\n for (const v of this.value) {\n params = params.append(this.name, this.serializeValue(v));\n }\n } else {\n const separator = this.options.style === 'spaceDelimited'\n ? ' ' : this.options.style === 'pipeDelimited'\n ? '|' : ',';\n return params.append(this.name, this.serializeValue(this.value, separator));\n }\n } else if (this.value !== null && typeof this.value === 'object') {\n // Object serialization\n if (this.options.style === 'deepObject') {\n // Append a parameter for each key, in the form `name[key]`\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(`${this.name}[${key}]`, this.serializeValue(propVal));\n }\n }\n } else if (this.options.explode) {\n // Append a parameter for each key without using the parameter name\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(key, this.serializeValue(propVal));\n }\n }\n } else {\n // Append a single parameter whose values are a comma-separated list of key,value,key,value...\n const array: any[] = [];\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n array.push(key);\n array.push(propVal);\n }\n }\n params = params.append(this.name, this.serializeValue(array));\n }\n } else if (this.value !== null && this.value !== undefined) {\n // Plain value\n params = params.append(this.name, this.serializeValue(this.value));\n }\n return params;\n }\n}\n\n/**\n * A parameter in the HTTP request header\n */\nclass HeaderParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(headers: HttpHeaders): HttpHeaders {\n if (this.value !== null && this.value !== undefined) {\n if (this.value instanceof Array) {\n for (const v of this.value) {\n headers = headers.append(this.name, this.serializeValue(v));\n }\n } else {\n headers = headers.append(this.name, this.serializeValue(this.value));\n }\n }\n return headers;\n }\n}\n\n/**\n * Helper to build http requests from parameters\n */\nexport class RequestBuilder {\n\n private _path = new Map();\n private _query = new Map();\n private _header = new Map();\n _bodyContent: any | null;\n _bodyContentType?: string;\n\n constructor(\n public rootUrl: string,\n public operationPath: string,\n public method: string) {\n }\n\n /**\n * Sets a path parameter\n */\n path(name: string, value: any, options?: ParameterOptions): void {\n this._path.set(name, new PathParameter(name, value, options || {}));\n }\n\n /**\n * Sets a query parameter\n */\n query(name: string, value: any, options?: ParameterOptions): void {\n this._query.set(name, new QueryParameter(name, value, options || {}));\n }\n\n /**\n * Sets a header parameter\n */\n header(name: string, value: any, options?: ParameterOptions): void {\n this._header.set(name, new HeaderParameter(name, value, options || {}));\n }\n\n /**\n * Sets the body content, along with the content type\n */\n body(value: any, contentType = 'application/json'): void {\n if (value instanceof Blob) {\n this._bodyContentType = value.type;\n } else {\n this._bodyContentType = contentType;\n }\n if (this._bodyContentType === 'application/x-www-form-urlencoded' && value !== null && typeof value === 'object') {\n // Handle URL-encoded data\n const pairs: Array<[string, string]> = [];\n for (const key of Object.keys(value)) {\n let val = value[key];\n if (!(val instanceof Array)) {\n val = [val];\n }\n for (const v of val) {\n const formValue = this.formDataValue(v);\n if (formValue !== null) {\n pairs.push([key, formValue]);\n }\n }\n }\n this._bodyContent = pairs.map(p => `${encodeURIComponent(p[0])}=${encodeURIComponent(p[1])}`).join('&');\n } else if (this._bodyContentType === 'multipart/form-data') {\n // Handle multipart form data\n const formData = new FormData();\n if (value !== null && value !== undefined) {\n for (const key of Object.keys(value)) {\n const val = value[key];\n if (val instanceof Array) {\n for (const v of val) {\n const toAppend = this.formDataValue(v);\n if (toAppend !== null) {\n formData.append(key, toAppend);\n }\n }\n } else {\n const toAppend = this.formDataValue(val);\n if (toAppend !== null) {\n formData.set(key, toAppend);\n }\n }\n }\n }\n this._bodyContent = formData;\n } else {\n // The body is the plain content\n this._bodyContent = value;\n }\n }\n\n private formDataValue(value: any): any {\n if (value === null || value === undefined) {\n return null;\n }\n if (value instanceof Blob) {\n return value;\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n }\n\n /**\n * Builds the request with the current set parameters\n */\n build(options?: {\n /** Which content types to accept */\n accept?: string;\n\n /** The expected response type */\n responseType?: 'json' | 'text' | 'blob' | 'arraybuffer';\n\n /** Whether to report progress on uploads / downloads */\n reportProgress?: boolean;\n\n /** Allow passing HttpContext for HttpClient */\n context?: HttpContext;\n }): HttpRequest {\n\n options = options || {};\n\n // Path parameters\n let path = this.operationPath;\n for (const pathParam of this._path.values()) {\n path = pathParam.append(path);\n }\n const url = this.rootUrl + path;\n\n // Query parameters\n let httpParams = new HttpParams({\n encoder: ParameterCodecInstance\n });\n for (const queryParam of this._query.values()) {\n httpParams = queryParam.append(httpParams);\n }\n\n // Header parameters\n let httpHeaders = new HttpHeaders();\n if (options.accept) {\n httpHeaders = httpHeaders.append('Accept', options.accept);\n }\n for (const headerParam of this._header.values()) {\n httpHeaders = headerParam.append(httpHeaders);\n }\n\n // Request content headers\n if (this._bodyContentType && !(this._bodyContent instanceof FormData)) {\n httpHeaders = httpHeaders.set('Content-Type', this._bodyContentType);\n }\n\n // Perform the request\n return new HttpRequest(this.method.toUpperCase(), url, this._bodyContent, {\n params: httpParams,\n headers: httpHeaders,\n responseType: options.responseType,\n reportProgress: options.reportProgress,\n context: options.context\n });\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { UserDetailsResponse } from '../models/user-details-response';\nimport { UsersDetailsRequest } from '../models/users-details-request';\nimport { UsersDetailsResponse } from '../models/users-details-response';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserDetailService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation userDetail\n */\n static readonly UserDetailPath = '/users-details/{userId}';\n\n /**\n * Fetch user details for a single user given a userId.\n *\n * Fetch user details for a single user given the userId in the url. Example: GET /users-details/16092\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `userDetail()` instead.\n *\n * This method doesn't expect any request body.\n */\n userDetail$Response(params: {\n\n /**\n * Internal key for user whose information is being requested\n */\n userId: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, UserDetailService.UserDetailPath, 'get');\n if (params) {\n rb.path('userId', params.userId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Fetch user details for a single user given a userId.\n *\n * Fetch user details for a single user given the userId in the url. Example: GET /users-details/16092\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `userDetail$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n userDetail(params: {\n\n /**\n * Internal key for user whose information is being requested\n */\n userId: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.userDetail$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as UserDetailsResponse)\n );\n }\n\n /**\n * Path part for operation usersDetails\n */\n static readonly UsersDetailsPath = '/users-details';\n\n /**\n * Fetch user details for a list of users.\n *\n * Fetch user details for multiple users given an array of userIds in the request body\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `usersDetails()` instead.\n *\n * This method sends `application/json; charset=utf-8` and handles request body of type `application/json; charset=utf-8`.\n */\n usersDetails$Response(params: {\n\n /**\n * List of userIds\n */\n body: UsersDetailsRequest\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, UserDetailService.UsersDetailsPath, 'post');\n if (params) {\n rb.body(params.body, 'application/json; charset=utf-8');\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Fetch user details for a list of users.\n *\n * Fetch user details for multiple users given an array of userIds in the request body\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `usersDetails$Response()` instead.\n *\n * This method sends `application/json; charset=utf-8` and handles request body of type `application/json; charset=utf-8`.\n */\n usersDetails(params: {\n\n /**\n * List of userIds\n */\n body: UsersDetailsRequest\n },\n context?: HttpContext\n\n): Observable {\n\n return this.usersDetails$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as UsersDetailsResponse)\n );\n }\n\n}\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { AuthService } from '@shared/services/auth-service/auth.service';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map, skipWhile, switchMap, take } from 'rxjs/operators';\r\nimport { EulaService } from '@shared/services/eula-agreement/eula.service';\r\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\r\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\r\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard implements CanActivate, CanActivateChild {\r\n private checkfns = {\r\n 'care': this.careTierAuth,\r\n 'submit': this.submitTierAuth\r\n\r\n }\r\n constructor(private authService: AuthService,\r\n private router: Router,\r\n private eulaService: EulaService,\r\n private userAccessService: UserAccessService,\r\n private hierarchyTierService: HierarchyTierService,\r\n private featureFlagService: FeatureFlagService) {\r\n }\r\n\r\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n return this.canActivate(route, state);\r\n }\r\n\r\n /** Check if user can navigate to route given current access. If navigation is not possible, redirect to the home page */\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const isAuthenticated$ = this.authService.authCheckComplete$.pipe(\r\n switchMap(() => this.isAuthenticated(route, state))).pipe(\r\n switchMap(result => this.hasEula(result))).pipe(\r\n switchMap(result => this.hasAccess(result, route))).pipe(\r\n switchMap(result => this.hasFeatureFlag(result, route)))\r\n .pipe(map(result => result === false ? this.router.parseUrl(this.hierarchyTierService.currentTierUrl) : result)); \r\n\r\n return isAuthenticated$;\r\n }\r\n\r\n isAuthenticated(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n return this.authService.isAuthenticated$.pipe(map((isAuthorized: boolean) => {\r\n console.log('AuthorizationGuard, canActivate isAuthorized: ' + isAuthorized);\r\n // never check tier if not authorized\r\n if (!(isAuthorized && this.checkTierAuth(route))) {\r\n const timedOut: boolean = this.authService.read(AuthService.TIMED_OUT);\r\n if (timedOut) {\r\n this.authService.write(AuthService.TIMED_OUT, null);\r\n return this.router.parseUrl('timeout');\r\n } else {\r\n this.storeUrl(route, state.url);\r\n return this.router.parseUrl('/autologin');\r\n }\r\n }\r\n\r\n return true;\r\n }));\r\n }\r\n\r\n hasAccess(result: boolean | UrlTree, route: ActivatedRouteSnapshot): Observable {\r\n if (result === true && (route.data.moduleId != null || route.data.featureId != null || route.data.componentId != null || route.data.requirePhi)) {\r\n return this.userAccessService.accessHistory$.pipe(take(1)).pipe(map(access => {\r\n let hasAccess = this.userAccessService.accessRestricted(route.data, access);\r\n\r\n if (route.data.requirePhi) {\r\n hasAccess = hasAccess && access.phi;\r\n }\r\n\r\n if (!hasAccess && this.router.routerState.snapshot.url === '') {\r\n this.router.navigate(['/']);\r\n }\r\n\r\n return hasAccess;\r\n }));\r\n }\r\n\r\n return of(result);\r\n }\r\n\r\n /** Check if a feature flag is required for navigation and if so, ensure it exists for current tier */\r\n hasFeatureFlag(result: boolean | UrlTree, route: ActivatedRouteSnapshot): Observable {\r\n if (result === true && (route.data.featureFlag != null)) {\r\n return this.featureFlagService.featureFlags$.pipe(skipWhile(value => value == null), take(1), map(() => {\r\n const hasFlag = this.featureFlagService.hasFeatureFlag(route.data.featureFlag);\r\n return hasFlag;\r\n }));\r\n }\r\n\r\n return of(result);\r\n }\r\n\r\n hasEula(result: boolean | UrlTree): Observable {\r\n if (!result === true || !this.authService.IdToken) {\r\n return of(result);\r\n }\r\n\r\n return this.eulaService.getAllFromCache().pipe(map(x => {\r\n const hasEula = x != null && x.length > 0 && x[0]?.acceptDateTime != null;\r\n\r\n if (!hasEula) {\r\n this.router.navigate(['/eula']);\r\n }\r\n\r\n return hasEula;\r\n }));\r\n }\r\n\r\n storeUrl(route: ActivatedRouteSnapshot, url: string): void {\r\n if (!this.isHomeRoute(url)) {\r\n url = url.split('?')[0];\r\n this.authService.write('coachRedirect', url);\r\n this.authService.write('queryParams', route.queryParams);\r\n\r\n return;\r\n }\r\n\r\n this.authService.write('coachRedirect', null);\r\n this.authService.write('queryParams', null);\r\n }\r\n\r\n private getResolvedUrl(route: ActivatedRouteSnapshot): string {\r\n return route.pathFromRoot\r\n .map(v => v.url.map(segment => segment.toString()).join('/'))\r\n .join('/');\r\n }\r\n\r\n getConfiguredUrl(route: ActivatedRouteSnapshot): string {\r\n return '/' + route.pathFromRoot\r\n .filter(v => v.routeConfig)\r\n .map(v => v.routeConfig!.path)\r\n .join('/');\r\n }\r\n\r\n isHomeRoute(url): boolean {\r\n let isHomeRoute = false;\r\n if (url && url.search('home') >= 0)\r\n isHomeRoute = true;\r\n return isHomeRoute;\r\n\r\n }\r\n checkTierAuth(route: ActivatedRouteSnapshot): boolean {\r\n let isTierAuthorized: boolean = true;\r\n var fn = this.checkfns[route.fragment];\r\n if (typeof fn === 'function') {\r\n isTierAuthorized = fn();\r\n }\r\n else //default is true\r\n isTierAuthorized = true;\r\n return isTierAuthorized;\r\n }\r\n\r\n // these function can be implemnented to provide custom view specific authorization control.\r\n //to add go to custom specifc view instead of Home/Login\r\n private careTierAuth(): boolean {\r\n //this.authService.tiers==\"\"\r\n return true;\r\n }\r\n private submitTierAuth(): boolean {\r\n return true;\r\n }\r\n\r\n}\r\n\r\n","import { Component, ViewChild } from '@angular/core';\nimport { CoachIconComponent } from '@shared/components/coach-icon/coach-icon.component';\nimport { RowNode } from 'ag-grid-community';\n\n@Component({\n selector: 'coach-exceptions-cell-renderer',\n templateUrl: './exceptions-cell-renderer.component.html',\n})\nexport class ExceptionsCellRendererComponent {\n @ViewChild('icon') icon: CoachIconComponent;\n params: any;\n\n agInit(params: any) {\n this.params = params;\n\n params.node.addEventListener(RowNode.EVENT_MOUSE_ENTER, () => {\n this.icon.setIconColor(params.activeColor);\n });\n\n params.node.addEventListener(RowNode.EVENT_MOUSE_LEAVE, () => {\n this.icon.setIconColor('default');\n });\n }\n}\n","\n","import { formatDate } from '@angular/common';\nimport {\n compareDate,\n compareNumber,\n compareString,\n} from '@shared/components/grid/grid-functions';\n\nimport { ExceptionsCellRendererComponent } from '../exceptions-cell-renderer/exceptions-cell-renderer.component';\nimport { ColDef } from 'ag-grid-community';\n\nexport const COLUMN_DEFS: Array = [\n {\n headerName: ' ',\n field: 'ImageYes',\n autoHeight: true,\n minWidth: 30,\n maxWidth: 30,\n cellStyle: {textAlign: 'center', 'padding-top': '12px'},\n sortable: false,\n cellRendererFramework: ExceptionsCellRendererComponent,\n cellRendererParams: {\n activeColor: 'green',\n },\n valueGetter: (params) => {\n return 'check-circle';\n },\n },\n {\n headerName: ' ',\n field: 'ImageNo',\n autoHeight: true,\n minWidth: 40,\n maxWidth: 40,\n cellStyle: {textAlign: 'center', 'padding-top': '12px'},\n sortable: false,\n cellRendererFramework: ExceptionsCellRendererComponent,\n cellRendererParams: {\n activeColor: 'red',\n },\n valueGetter: (params) => {\n return 'x-circle';\n },\n },\n {\n headerName: 'RX NUMBER',\n field: 'rxNumber',\n maxWidth: 120,\n suppressAutoSize: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n valueGetter: (params) => {\n return params.data.rxNum;\n },\n },\n {\n headerName: 'FILLED',\n field: 'fillDate',\n maxWidth: 130,\n suppressAutoSize: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n cellRenderer: (data): string => {\n return data.data?.dispenseDate\n ? formatDate(\n new Date(data.data?.dispenseDate),\n 'MM/dd/yy',\n 'en_US'\n ).trim()\n : '';\n },\n valueGetter: (data: any) => {\n let result = formatDate(\n new Date(data.data?.dispenseDate),\n 'yyyy/MM/dd',\n 'en_US'\n ).trim();\n return result;\n },\n getQuickFilterText: (params) => {\n return params.value;\n },\n sortable: true,\n suppressSizeToFit: true,\n },\n {\n headerName: 'FILL#',\n field: 'clPrescriptionFillNumber',\n maxWidth: 75,\n filter: 'agSetColumnFilter',\n resizable: true,\n hide: false,\n sortable: true,\n cellRenderer: (data: any): string => {\n return data.data?.rxFillNum;\n },\n valueGetter: (params) => {\n return parseInt(params.data?.rxFillNum);\n },\n },\n {\n headerName: 'NAME',\n field: 'patientName',\n minWidth: 240,\n comparator: compareString,\n resizable: true,\n filter: 'agSetColumnFilter',\n sortable: true,\n cellRenderer: (data: any): string => {\n return `${data.data?.patientFirstName.trim() ?? ''} ${data.data?.patientLastName.trim() ?? ''}`;\n },\n valueGetter: (data) => {\n return `${data.data?.patientFirstName.trim() ?? ''} ${data.data?.patientLastName.trim() ?? ''}`;\n },\n },\n {\n headerName: 'DOB',\n field: 'dob',\n maxWidth: 120,\n suppressAutoSize: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n sortable: true,\n cellRenderer: (data: any): string => {\n return formatDate(data.data?.patientDob,\n 'MM/dd/yy',\n 'en_US');\n },\n valueGetter: (data) => {\n return formatDate(data.data?.patientDob,\n 'yyyy/MM/dd',\n 'en_US');\n },\n },\n {\n headerName: 'NDC',\n field: 'ndc',\n maxWidth: 120,\n suppressAutoSize: true,\n comparator: compareNumber,\n filter: 'agSetColumnFilter',\n sortable: true,\n cellRenderer: (data: any): string => {\n return data.data?.medNdc;\n },\n valueGetter: (data: any): number => {\n return parseInt(data.data?.medNdc);\n },\n },\n\n {\n headerName: 'PRESCRIPTION',\n field: 'medDesc',\n resizable: true,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n minWidth: 320,\n cellRenderer: (data): string => {\n return data.data?.medDesc;\n },\n },\n {\n headerName: 'QTY',\n field: 'medQty',\n resizable: true,\n sortable: true,\n comparator: compareNumber,\n filter: 'agSetColumnFilter',\n },\n];\n","export interface IPrescription {\n claimPk: string,\n claimId: number;\n patientName?: string;\n acoId: string;\n tier2_id: string;\n tier2_Name: string;\n tier3_id: string;\n tier4_grpId: string;\n ccn: string;\n dob?: string;\n mbi?: string;\n firstFilled?: string;\n fillDate?: string;\n prescriptionName?: string;\n prescriberName?: string;\n prescriberCredentials?: string;\n prescriberSpecialty?: string;\n prescriberPhone?: string;\n location?: string;\n status?: number;\n ndc?: string;\n rxNumber?: number;\n enrollmentStatus: string;\n patientSex: string;\n primaryProviderName: string;\n primaryProviderCredentials: string;\n pharmacyName: string;\n pharmacyNameOther: string;\n pharmacyAddress: string;\n pharmacyAddressOther: string;\n chPatId: number;\n clPrescriptionFillNumber: string;\n npi: string;\n servicePharmacyNpi: string;\n createdatetime: string;\n gender: string;\n prescriberFax: string;\n prescriptionRefID: string;\n daysSupplyQty: number,\n serviceUnitQty: number,\n priceRetail: number,\n awpPrice: number,\n claimType: string,\n drugManufacturer: string,\n tpaName: string,\n tpaPrice?: number,\n}\n\nexport interface IApprovedPrescription {\n claimPk: string,\n claimId: number;\n claimType: string;\n tier2_Name?: string;\n patientName?: string;\n acoId: string;\n tier2_id: string;\n tier3_id: string;\n tier4_grpId: string;\n dob?: string;\n mbi?: string;\n firstFilled?: string;\n fillDate?: string;\n prescriptionName?: string;\n prescriberName?: string;\n prescriberCredentials?: string;\n prescriberSpecialty?: string;\n prescriberPhone?: string;\n location?: string;\n status?: number;\n ndc?: string;\n rxNumber?: number;\n npi: string;\n orgName: string;\n pharmacy_Address: string;\n pharmacyName: string;\n pharmacyNameOther: string;\n sex: string;\n patientZip: string;\n prescriptionQuantity: number\n clPrescriptionFillNumber: string;\n daysSupply: number;\n prescriberDEA: string;\n prescriberNPI: string;\n medicationDescription: string;\n gender: string;\n pharmacyNpi: string;\n pharmacyOtherAddress: string;\n pharmacyOtherCity: string;\n pharmacyOtherPhone: string;\n pharmacyOtherState: string;\n pharmacyOtherZip: string;\n prescriptionRefID: string;\n servicePharmacyNpi?: string;\n pharmacyAddress?: string;\n pharmacyAddressOther?: string;\n priceRetail: number;\n awpPrice: number;\n drugManufacturer: string;\n tpaName: string;\n tpaPrice: number;\n}\n\nexport interface IPrescriptionInvoice {\n userId?: number;\n contractPharmacy?: string;\n tpaName?: string;\n claimType?: string;\n}\n\nexport interface IContractInfo {\n priceTypeId: number;\n caravanPct: number;\n}\n\nexport interface IPrescriber {\n npi: string;\n name: string;\n}\n\nexport interface IPharmacyNamesOrig {\n pharmacy_Org_Name: string;\n pharmacy_Other_Org_Name: string;\n}\n\nexport interface IPharmacyNames {\n firstName: string;\n secondName: string;\n}\n\nexport interface IPrescriberOrig {\n prescribing_Provider_NPI: string;\n prescribing_Provider_Name: string;\n}\n\nexport interface ICCNLocation {\n display: string;\n}\n\nexport interface IClaimException {\n claimDate: Date;\n claimIdSource: string;\n clientIdSource: string;\n clientName: string;\n clientType: string;\n createDate: Date;\n dispenseDate: Date;\n fillDate: Date,\n exceptionId: number;\n groupCat: number;\n hashValue: string;\n insureId: string;\n insuredDob: Date;\n insuredFirstName: string;\n insuredLastName: string;\n isDeleted: boolean;\n isMovedToClaim: boolean;\n medDaysSupply: number;\n medDesc: string;\n medNdc: string;\n medPkgQty: number;\n medQty: number;\n medUnitsPerPkg: number;\n patientDob: Date;\n patientFirstName: string;\n patientGender: number;\n patientLastName: string;\n patientMrn: string;\n pharmacyIdSource: string;\n pharmacyNCPDP: number;\n pharmacyName: string;\n pharmacyNpi: string;\n prescriberDea: string;\n prescriberFirstName: string;\n prescriberLastName: string;\n prescriberNpi: string;\n processedDate: Date;\n profitLossAmount: number;\n recordNumber: number;\n rxFillNum: number;\n rxNum: string;\n rxWrittenDate: Date;\n rxWrittenLocation: string;\n serviceDate: Date;\n totalCollected: number;\n tpaClaimFileId: number;\n unitPrice: number;\n visitDate: Date;\n wacPkgPrice: number;\n wacUnitPrice: number;\n prescriptionRefId: string;\n}\n\nexport interface IPrescriptionDetail {\n acoId: string;\n tier2_id: string;\n tier3_id: string;\n tier4_grpId: string;\n claimPk: string;\n\n cuR_CLM_UNIQ_ID: number;\n\n acO_ID: string;\n coach340BClaimsID: string;\n tier2_ID: string;\n tier3_ID: string;\n tier4_GrpID: string;\n\n visit_Note_Visit_Date: string;\n visit_Note_Missing: number;\n visit_Note_Diagnosis: string;\n visit_Note_Requested_Date: string;\n cE_Visit_Date: string;\n cE_Visit_Note_Missing: number;\n cE_Provider: string;\n cE_Location: string;\n cE_Related_Referral_Date: string;\n cE_Related_Referral_Missing: number;\n follow_Up_Plan: string;\n claim_Note: string;\n claim_Status: number;\n claim_Status_Set_By: string;\n claim_Status_Set_On_Date: string;\n\n // sysStartTime: string;\n // sysEndTime: string;\n}\n\nexport interface ICareCoordinationNote {\n cuR_CLM_UNIQ_ID: number;\n tier_Num: number;\n tier_Id: string;\n creatorName: string;\n creationDate: string;\n prescriptionName: string;\n prescriptionFilledBy: string;\n prescriptionFilledDate: string;\n provider: string;\n providerSpecialty: string;\n providerVisitDate: string;\n rxDiagnosis: string;\n relatedDocumentationPresent: number;\n referralDocumentationPresent: number;\n followUpPlanWithCE: string;\n followUpPlanWithProvider: string;\n // sysStartTime: string;\n // sysEndTime: string;\n}\n\nexport interface IPrescriptionOrig {\n acO_ID: string,\n acO_Name: string,\n tier4_ID_CCN: string,\n available340B: number,\n benE_FullName: string,\n bene_dob: string,\n chPatID: number,\n clPrescriptionFillNumber: string,\n clPrescriptionServiceReference: number,\n comment: string,\n cuR_CLM_UNIQ_ID: number,\n current_MBI: string,\n date_Initial_Fill: string,\n enrollment_Status: string,\n group_Cat: number,\n lastMBIUpdate: string,\n location_Restrictions: string,\n mbi: string,\n medication_Broad: string,\n medication_Description: string,\n ndc: string,\n orphan_Drug: number,\n pharmacy_Address: string,\n pharmacy_Org_Name: string,\n pharmacy_Other_Org_name: string,\n ppBusinessPracticeLocation: string,\n prescribing_Provider_NPI: string,\n prescribing_Provider_Name: string,\n prescribing_Provider_Credentials: string,\n prescribing_Provider_Specialty: string,\n prescribing_Provider_Phone: string,\n prescriptionFilledDate: string,\n price_Retail: number,\n priorEMVisit: number,\n providerInCommunity: number,\n providerTINasCE: number,\n service_Pharmacy_NPI: string,\n tier2_ID: string,\n tier2_Name: string;\n tier3_ID: string,\n tier4_ID: string,\n claim_Status: number,\n benE_SEX_CD: string,\n primary_Provider_Name: string,\n primary_Provider_Credentials: string,\n benE_ZIP_CD: string,\n clM_LINE_SRVC_UNIT_QTY: number,\n clM_LINE_DAYS_SUPLY_QTY: number,\n prescribing_Provider_DEA_Number: string,\n coach340BClaimsID: string,\n createdatetime: string;\n gender: string;\n prescriberFax: string;\n pharmacyOtherAddress: string;\n pharmacyOtherCity: string;\n pharmacyOtherPhone: string;\n pharmacyOtherState: string;\n pharmacyOtherZip: string;\n prescriptionRefID: string;\n claimType: string;\n drugManufacturer: string;\n tpaName: string;\n tpaPrice: number;\n}\n\nexport enum PrescriptionStatus {\n Approve = 0,\n Pending = 1,\n Reject = 2\n}\n\nexport function convertOrig2Columns (prescription: IPrescriptionOrig):IPrescription {\n if (!prescription) {\n return null;\n }\n const result = {\n claimPk: prescription.coach340BClaimsID,\n claimId: prescription.cuR_CLM_UNIQ_ID,\n patientName: prescription.benE_FullName,\n acoId: prescription.acO_ID,\n tier2_id: prescription.tier2_ID,\n tier2_Name: prescription.tier2_Name,\n tier3_id: prescription.tier3_ID,\n tier4_grpId: prescription.tier4_ID,\n dob: prescription.bene_dob,\n mbi: prescription.mbi,\n firstFilled: prescription.date_Initial_Fill,\n fillDate: prescription.prescriptionFilledDate,\n prescriptionName: prescription.medication_Description,\n prescriberName: prescription.prescribing_Provider_Name,\n prescriberCredentials: prescription.prescribing_Provider_Credentials,\n prescriberSpecialty: prescription.prescribing_Provider_Specialty,\n prescriberPhone: prescription.prescribing_Provider_Phone,\n location: prescription.ppBusinessPracticeLocation,\n enrollmentStatus: prescription.enrollment_Status,\n ndc: prescription.ndc,\n rxNumber: prescription.clPrescriptionServiceReference,\n status: prescription.claim_Status,\n patientSex: prescription.benE_SEX_CD,\n primaryProviderName: prescription.primary_Provider_Name,\n primaryProviderCredentials: prescription.primary_Provider_Credentials,\n pharmacyName: prescription.pharmacy_Org_Name,\n pharmacyNameOther: prescription.pharmacy_Other_Org_name,\n chPatId: prescription.chPatID,\n ccn: prescription.tier4_ID_CCN,\n clPrescriptionFillNumber: prescription.clPrescriptionFillNumber,\n npi: prescription.prescribing_Provider_NPI,\n servicePharmacyNpi: prescription.service_Pharmacy_NPI,\n createdatetime: prescription.createdatetime,\n gender: prescription.gender,\n prescriberFax: prescription.prescriberFax,\n pharmacyAddress: prescription.pharmacy_Address,\n prescriptionRefID: prescription.prescriptionRefID,\n pharmacyAddressOther: prescription.pharmacyOtherAddress,\n daysSupplyQty: prescription.clM_LINE_DAYS_SUPLY_QTY,\n serviceUnitQty: prescription.clM_LINE_SRVC_UNIT_QTY,\n priceRetail: prescription.price_Retail,\n awpPrice: prescription.price_Retail * prescription.clM_LINE_SRVC_UNIT_QTY,\n claimType: prescription.claimType,\n drugManufacturer: prescription.drugManufacturer,\n tpaName: prescription.tpaName ? prescription.tpaName : 'CMS',\n tpaPrice: prescription.tpaPrice ?? 0,\n }\n return result;\n}\n\nexport function convertOrig2ColumnsProcessing (prescription: IPrescriptionOrig):IApprovedPrescription {\n return {\n claimPk: prescription.coach340BClaimsID,\n claimId: prescription.cuR_CLM_UNIQ_ID,\n claimType: prescription.claimType,\n patientName: prescription.benE_FullName,\n acoId: prescription.acO_ID,\n tier2_id: prescription.tier2_ID,\n tier2_Name: prescription.tier2_Name,\n tier3_id: prescription.tier3_ID,\n tier4_grpId: prescription.tier4_ID,\n dob: prescription.bene_dob,\n mbi: prescription.mbi,\n firstFilled: prescription.date_Initial_Fill,\n prescriptionName: prescription.medication_Description,\n prescriberName: prescription.prescribing_Provider_Name,\n prescriberCredentials: prescription.prescribing_Provider_Credentials,\n prescriberSpecialty: prescription.prescribing_Provider_Specialty,\n prescriberPhone: prescription.prescribing_Provider_Phone,\n location: prescription.ppBusinessPracticeLocation,\n status: prescription.claim_Status,\n ndc: prescription.ndc,\n rxNumber: prescription.clPrescriptionServiceReference,\n npi: prescription.prescribing_Provider_NPI,\n orgName: prescription.pharmacy_Org_Name,\n pharmacy_Address: prescription.pharmacy_Address,\n pharmacyName: prescription.pharmacy_Org_Name,\n pharmacyNameOther: prescription.pharmacy_Other_Org_name,\n sex: prescription.benE_SEX_CD,\n patientZip: prescription.benE_ZIP_CD,\n prescriptionQuantity: prescription.clM_LINE_SRVC_UNIT_QTY,\n clPrescriptionFillNumber: prescription.clPrescriptionFillNumber,\n daysSupply: prescription.clM_LINE_DAYS_SUPLY_QTY,\n prescriberDEA: prescription.prescribing_Provider_DEA_Number,\n prescriberNPI: prescription.prescribing_Provider_NPI,\n medicationDescription: prescription.medication_Description,\n fillDate: prescription.prescriptionFilledDate,\n gender: prescription.gender,\n pharmacyNpi: prescription.service_Pharmacy_NPI,\n servicePharmacyNpi: prescription.service_Pharmacy_NPI,\n pharmacyOtherAddress: prescription.pharmacyOtherAddress,\n pharmacyOtherCity: prescription.pharmacyOtherCity,\n pharmacyOtherPhone: prescription.pharmacyOtherPhone,\n pharmacyOtherState: prescription.pharmacyOtherState,\n pharmacyOtherZip: prescription.pharmacyOtherZip,\n prescriptionRefID: prescription.prescriptionRefID,\n priceRetail: prescription.price_Retail,\n awpPrice: prescription.price_Retail * prescription.clM_LINE_SRVC_UNIT_QTY,\n drugManufacturer: prescription.drugManufacturer,\n tpaName: prescription.tpaName ? prescription.tpaName : 'CMS',\n tpaPrice: prescription.tpaPrice ?? 0,\n }\n}\n\nexport function convertPrescriberToCols(prescribers: any): IPrescriber {\n return {\n npi: prescribers.prescribing_Provider_NPI,\n name: prescribers.prescribing_Provider_Name\n };\n}\n\nexport function convertPharmacyNameToCols(pharmacyNames: IPharmacyNamesOrig): IPharmacyNames {\n return {\n firstName: pharmacyNames.pharmacy_Org_Name,\n secondName: pharmacyNames.pharmacy_Other_Org_Name\n }\n}\n","import { first } from '@amcharts/amcharts4/.internal/core/utils/Array';\nimport { IPrescriptionDetail } from '@shared/models/prescription';\n\nexport enum ClaimStatusSteps {\n PENDING = 1000,\n NO,\n YES,\n}\n\nexport enum ClaimStatus {\n PENDING = 1000,\n REJECTED,\n APPROVED,\n NEW,\n HAS_NOTE,\n PROCESSED,\n EXPIRED,\n}\n\nexport enum InvoiceStatus {\n PENDING = 1,\n INVOICING,\n INVOICED,\n REJECTED,\n REJECTED_NEEDS_CREDIT,\n CREDITED\n}\n\nexport enum InvoiceRejectionReason {\n NONE = 1000\n}\n\nexport function mapInvoiceStatusToString(status: number): string {\n switch (status) {\n case InvoiceStatus.PENDING:\n return 'Pending';\n case InvoiceStatus.INVOICING:\n return 'Invoicing';\n case InvoiceStatus.INVOICED:\n return 'Invoiced';\n case InvoiceStatus.REJECTED:\n return 'Rejected';\n case InvoiceStatus.REJECTED_NEEDS_CREDIT:\n return 'Rejected Needs Credit';\n case InvoiceStatus.CREDITED:\n return 'Credited';\n default:\n return 'Unknown';\n }\n}\n\nexport function mapOptionsToStrings(optionValue) {\n switch (optionValue) {\n case ClaimStatusSteps.NO:\n return 'No';\n case ClaimStatusSteps.YES:\n return 'Yes';\n case ClaimStatusSteps.PENDING:\n default:\n return 'Pending';\n }\n}\n\nexport function mapStringsToOptions(str) {\n switch (str) {\n case 'no':\n return ClaimStatusSteps.NO;\n case 'yes':\n return ClaimStatusSteps.YES;\n case 'pending':\n return ClaimStatusSteps.PENDING;\n }\n}\n\nexport function mapOverallOptionsToStrings(optionValue) {\n switch (optionValue) {\n case ClaimStatus.PENDING:\n return 'Pending';\n case ClaimStatus.REJECTED:\n return 'Rejected';\n case ClaimStatus.APPROVED:\n return 'Approved';\n case ClaimStatus.NEW:\n return 'New';\n case ClaimStatus.HAS_NOTE:\n return 'Has Note';\n case ClaimStatus.PROCESSED:\n return 'Processed';\n case ClaimStatus.EXPIRED:\n return 'Expired';\n default:\n return 'Unknown';\n }\n}\n\nexport const statusSortPriorityMap = new Map();\nstatusSortPriorityMap.set(ClaimStatus.NEW, 1);\nstatusSortPriorityMap.set(ClaimStatus.HAS_NOTE, 2);\nstatusSortPriorityMap.set(ClaimStatus.PENDING, 3);\nstatusSortPriorityMap.set(ClaimStatus.REJECTED, 4);\nstatusSortPriorityMap.set(ClaimStatus.PROCESSED, 5);\nstatusSortPriorityMap.set(ClaimStatus.EXPIRED, 6);\n\nexport const invoiceStatusPriorityMap = new Map();\ninvoiceStatusPriorityMap.set(mapInvoiceStatusToString(InvoiceStatus.PENDING), 1);\ninvoiceStatusPriorityMap.set(mapInvoiceStatusToString(InvoiceStatus.INVOICING), 2);\ninvoiceStatusPriorityMap.set(mapInvoiceStatusToString(InvoiceStatus.INVOICED), 3);\ninvoiceStatusPriorityMap.set(mapInvoiceStatusToString(InvoiceStatus.REJECTED), 4);\ninvoiceStatusPriorityMap.set(mapInvoiceStatusToString(InvoiceStatus.REJECTED_NEEDS_CREDIT), 5);\ninvoiceStatusPriorityMap.set(mapInvoiceStatusToString(InvoiceStatus.CREDITED), 6);\n\nexport function getDefaultPrescriptionData(\n claimId,\n acO_ID,\n tier2_ID,\n tier3_ID,\n tier4_GrpID,\n coach340BClaimsID\n): any {\n const now = new Date().toISOString();\n\n return {\n cuR_CLM_UNIQ_ID: claimId,\n\n acoId: acO_ID,\n tier2_id: tier2_ID,\n tier3_id: tier3_ID,\n tier4_grpId: tier4_GrpID,\n coach340BClaimsID: coach340BClaimsID,\n\n visit_Note_Visit_Date: null,\n visit_Note_Missing: 0,\n visit_Note_Diagnosis: '',\n visit_Note_Requested_Date: null,\n cE_Visit_Date: null,\n cE_Visit_Note_Missing: 0,\n cE_Provider: '',\n cE_Location: '',\n cE_Related_Referral_Date: null,\n cE_Related_Referral_Missing: 0,\n follow_Up_Plan: '',\n claim_Note: '',\n claim_Status: ClaimStatus.NEW,\n claim_Status_Set_By: '',\n claim_Status_Set_On_Date: null,\n\n // sysStartTime: new Date().toISOString(),\n // sysEndTime: new Date().toISOString()\n };\n}\n\nexport function compareDates(fillDate, otherDate) {\n if (!otherDate || otherDate.toLocaleDateString() == '12/31/1969' || otherDate.toLocaleDateString() == 'mm/dd/yyyy' || otherDate.getFullYear() === 1970) {\n return false;\n }\n const format = 'Www, dd Mmm yyyy';\n fillDate = new Date(fillDate.toUTCString().slice(0, format.length));\n otherDate = new Date(otherDate.toUTCString().slice(0, format.length));\n return fillDate >= otherDate;\n}\n\nexport function formatDate(dateStr) {\n return new Date(dateStr).toLocaleDateString(\"en-US\", {month: '2-digit', year: '2-digit', day: '2-digit'});\n}\n\nexport function formatDateFourDigitYear(dateStr) {\n return new Date(dateStr).toLocaleDateString(\"en-US\", {month: '2-digit', year: 'numeric', day: '2-digit'});\n}\n\nexport function removeLeadingZeros(str) {\n var result = '0';\n if (str) {\n result = str.replace(/0{2,}/, '');\n if (result.length === 0) {\n result = '0';\n }\n }\n return result;\n}\n\n// 340B CSV Export Functions\n\nexport function toCsv(table) {\n // Query all rows\n const rows = table.querySelectorAll('tr');\n\n return [].slice\n .call(rows)\n .map(function (row) {\n // Query all cells\n const cells = row.querySelectorAll('th,td');\n return [].slice\n .call(cells)\n .map(function (cell) {\n return cell.textContent;\n })\n .join(',');\n })\n .join('\\n');\n}\n\nexport function download(text, fileName) {\n const link = document.createElement('a');\n link.setAttribute('href', `data:text/csv;charset=utf-8,${encodeURIComponent(text)}`);\n link.setAttribute('download', fileName);\n\n link.style.display = 'none';\n document.body.appendChild(link);\n\n link.click();\n\n document.body.removeChild(link);\n};\n\nexport function generateTableHead(table, data) {\n let thead = table.createTHead();\n let row = thead.insertRow();\n for (let key in data) {\n let th = document.createElement(\"th\");\n let text = document.createTextNode(key);\n th.appendChild(text);\n row.appendChild(th);\n }\n}\n\nexport function generateTable(table, data) {\n for (let element of data) {\n let row = table.insertRow();\n for (let key in element) {\n let cell = row.insertCell();\n let text = document.createTextNode(element[key]);\n cell.appendChild(text);\n }\n }\n}\n\nexport function basicNameSplit(fullName: string) {\n const parts = fullName?.split(/\\s+/);\n return parts ? [capitalize(parts[0]), capitalize(parts[parts.length - 1])] : [];\n}\n\nexport function capitalize(s: string) {\n return s && s[0].toUpperCase() + s.slice(1).toLowerCase();\n}\nexport class B340StringConstants {\n public EXPORT_MENU_TITLE: string = 'Exports';\n public EXPORT_MACRO_HELIX: string = 'Macro Helix';\n public EXPORT_CVS: string = 'CVS';\n public EXPORT_INVOICE_DATA = 'Invoice Data';\n\n public EXPORTS_PATIENT_LIST = 'Patient List';\n public EXPORTS_EXPORT = 'Export';\n\n public FILTER_SHARED_OPTION_LABELS_TPANAME = ['CMS', 'MacroHelix', 'WellPartner'];\n}\n","import { EventEmitter, Injectable, Output } from '@angular/core';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { HierarchyTierService } from '../hierarchy/hierarchy-tier.service';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport {\n IPrescription,\n IApprovedPrescription,\n IPrescriptionOrig,\n IPrescriptionDetail,\n convertOrig2Columns,\n convertOrig2ColumnsProcessing,\n convertPrescriberToCols,\n convertPharmacyNameToCols,\n IPrescriber,\n IPrescriberOrig,\n IPharmacyNames,\n IPharmacyNamesOrig,\n ICCNLocation,\n IPrescriptionInvoice,\n IContractInfo,\n IClaimException,\n} from '@shared/models/prescription';\nimport {\n ClaimStatus,\n InvoiceStatus,\n mapOverallOptionsToStrings,\n} from '../../../care/views/care-prescriptions/shared-lib';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { Observable, Subscription } from 'rxjs';\n\nexport interface IInvoiceStatusId {\n id: number\n}\n@Injectable({\n providedIn: 'root',\n})\nexport class PrescriptionService extends KillSubscriptions {\n private static tempOcp_Apim_Sub_Key: string =\n // '83906f50df4a486a89a6f116e276e56a';\n environment.ocpApimSubscriptionKey;\n\n trackBaseURL: string = environment.trackApiUrl;\n apiBaseURL: string = environment.apiBaseUrl;\n // trackBaseURL: string = `https://localhost:44395`;\n\n prescriptions: any[];\n\n public tier: IHierarchyTier = null;\n claimInfo = null;\n processingClaim = null;\n invoicingClaim = null;\n\n @Output() claimInfoUpdated = new EventEmitter();\n @Output() processingClaimInfoUpdated = new EventEmitter();\n @Output() invoicingClaimInfoUpdated = new EventEmitter();\n\n constructor(\n private http: HttpClient,\n private _authService: AuthService,\n private HierarchyTierService: HierarchyTierService,\n private ToastrMessageService: ToastrMessageService\n ) {\n super();\n\n HierarchyTierService.currentTier$\n .pipe(takeUntil(this.killTrigger))\n .subscribe(async (tier) => {\n if (this.tier?.selectedTierId !== tier?.selectedTierId) {\n this.tier = tier;\n }\n });\n }\n\n getStandardHeaders() {\n return {\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': PrescriptionService.tempOcp_Apim_Sub_Key,\n };\n }\n\n async getPrescriptions(\n acoId?: string,\n tier2Id?: string,\n tier3Id?: string,\n tier4Id?: string,\n userId: any = null\n ): Promise> {\n try {\n const headers = this.getStandardHeaders();\n\n const url = `${this.trackBaseURL}/Sp340BClaims`;\n const params = {\n acoId: acoId || null,\n ...(tier2Id && { tier2Id: tier2Id }),\n ...(tier3Id && { tier3Id: tier3Id }),\n ...(tier4Id && { tier4Id: tier4Id }),\n };\n const options = {\n headers,\n params: params,\n };\n\n if (userId) {\n await this.writeAuditMessage({\n entityid: parseInt(userId),\n moduleid: 2, // care\n componentid: 36,\n actionid: 6, // phi access\n tablename: 'Coach340BClaims',\n auditdesc: `User ID ${userId} Accessed 340B Work Queue`,\n applicationID: 2,\n });\n }\n\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionOrigs: Array) => {\n return PrescriptionOrigs.map((PrescriptionOrig) =>\n convertOrig2Columns(PrescriptionOrig)\n );\n })\n )\n .toPromise()) as Array;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async getPrescriptionWithId(tier2Id: string, claimId: number, claimType: string): Promise {\n try {\n const headers = this.getStandardHeaders();\n\n const url = `${this.trackBaseURL}/Sp340BClaims/getClaimWithId`;\n const params: any = {\n tier2Id,\n userId: this.tier.selectedItem.userID,\n claimId,\n claimType\n };\n const options = {\n headers,\n params,\n };\n\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionOrigs: Array) => {\n const result = convertOrig2Columns(PrescriptionOrigs[0]);\n return result;\n })\n )\n .toPromise()) as IPrescription;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async getClaimsForInvoice(cmsClaims: string, tpaClaims: string): Promise {\n const headers = this.getStandardHeaders();\n headers['content-type'] = 'application/json';\n\n const url = `${this.trackBaseURL}/Sp340BInvoice/getClaimsForInvoice`;\n const bodyObj: any = {\n cmsClaims,\n tpaClaims\n };\n const body = JSON.stringify(bodyObj);\n \n let result = await fetch(url, { method: 'post', body, headers });\n let jsonResponse = await result.json();\n return jsonResponse;\n }\n\n async getApprovedClaims(\n acoId?: string,\n tier2Id?: string,\n tier3Id?: string,\n tier4Id?: string\n ): Promise> {\n try {\n const headers = this.getStandardHeaders();\n\n const url = `${this.trackBaseURL}/Sp340BClaims/getApprovedClaims`;\n const options = {\n headers,\n params: {\n acoId: acoId || null,\n ...(tier2Id && { tier2Id: tier2Id }),\n ...(tier3Id && { tier3Id: tier3Id }),\n ...(tier4Id && { tier4Id: tier4Id }),\n },\n };\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionOrigs: Array) => {\n return PrescriptionOrigs.map((PrescriptionOrig) =>\n convertOrig2ColumnsProcessing(PrescriptionOrig)\n );\n })\n )\n .toPromise()) as Array;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async getPrescribers(\n acoId?: string,\n tier2Id?: string,\n tier3Id?: string,\n tier4Id?: string\n ): Promise> {\n try {\n const headers = this.getStandardHeaders();\n\n const url = `${this.trackBaseURL}/Sp340BClaims/getPrescribers`;\n const params = {\n acoId: acoId || null,\n ...(tier2Id && { tier2Id: tier2Id }),\n ...(tier3Id && { tier3Id: tier3Id }),\n ...(tier4Id && { tier4Id: tier4Id }),\n };\n const options = {\n headers,\n params,\n };\n const result = (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionOrigs: Array) => {\n let result = PrescriptionOrigs.map((PrescriptionOrig) =>\n convertPrescriberToCols(PrescriptionOrig)\n );\n result.unshift({ npi: 'allPrescribers', name: 'All' });\n return result;\n })\n )\n .toPromise()) as Array;\n return result;\n } catch (e) {\n if (environment.production) {\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async getPharmacyNames(\n acoId,\n tier2Id,\n tier3Id,\n tier4Id\n ): Promise> {\n try {\n const headers = this.getStandardHeaders();\n \n const params = {\n acoId: acoId || null,\n ...(tier2Id && { tier2Id: tier2Id }),\n ...(tier3Id && { tier3Id: tier3Id }),\n ...(tier4Id && { tier4Id: tier4Id }),\n };\n const url = `${this.trackBaseURL}/Sp340BClaims/getPharmacyNames`;\n const options = {\n headers,\n params,\n };\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionOrigs: Array) => {\n return PrescriptionOrigs.map((PrescriptionOrig) =>\n convertPharmacyNameToCols(PrescriptionOrig)\n );\n })\n )\n .toPromise()) as Array;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async getPrescriptionDetail(\n claimPk?: string,\n acoId?: string,\n tier2_id?: string,\n tier3_id?: string,\n tier4_grpId?: string,\n claimId?: number,\n userId: any = null,\n selectedPatientInfo: any = null\n ): Promise {\n try {\n const headers = this.getStandardHeaders();\n const url = `${this.trackBaseURL}/Sp340BClaims/getDetail`;\n\n const options = {\n headers,\n params: {\n claimPk,\n claimId: claimId?.toString() ?? '-1',\n acoId,\n tier2_id,\n tier3_id,\n tier4_grpId,\n claimType: selectedPatientInfo.claimType,\n },\n };\n\n if (userId) {\n this.writeAuditMessage({\n entityid: parseInt(userId),\n moduleid: 2, // care\n componentid: 36,\n actionid: 6,\n tablename: 'Coach340BDetail',\n auditdesc: `User ID ${userId} Accessed Patient: ${selectedPatientInfo.mbi}, ${selectedPatientInfo.patientName}, ${selectedPatientInfo.patientDob}`,\n applicationID: 2,\n });\n }\n\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionDetails: Array) => {\n return PrescriptionDetails[0];\n })\n )\n .toPromise()) as IPrescriptionDetail;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async getPrescriptionHistoryDetail(\n tier2_id: string,\n claimId: number,\n newDate: string\n ): Promise {\n\n const approved = this.getPrescriptionHistoryDetailRecord(\n claimId,\n ClaimStatus.APPROVED\n );\n const processed = this.getPrescriptionHistoryDetailRecord(\n claimId,\n ClaimStatus.PROCESSED\n );\n\n const pending = this.getInvoiceHistoryRecord(\n tier2_id,\n claimId,\n InvoiceStatus.PENDING\n );\n const invoicing = this.getInvoiceHistoryRecord(\n tier2_id,\n claimId,\n InvoiceStatus.INVOICING\n );\n const invoiced = this.getInvoiceHistoryRecord(\n tier2_id,\n claimId,\n InvoiceStatus.INVOICED\n );\n const rejected = this.getInvoiceHistoryRecord(\n tier2_id,\n claimId,\n InvoiceStatus.REJECTED\n );\n const rejectedNeedsCredit = this.getInvoiceHistoryRecord(\n tier2_id,\n claimId,\n InvoiceStatus.REJECTED_NEEDS_CREDIT\n );\n const credited = this.getInvoiceHistoryRecord(\n tier2_id,\n claimId,\n InvoiceStatus.CREDITED\n );\n\n const approvedObj = await approved;\n const processedObj = await processed;\n\n const pendingObj = await pending;\n const invoicingObj = await invoicing;\n const invoicedObj = await invoiced;\n const rejectedObj = await rejected;\n const needsCreditObj = await rejectedNeedsCredit;\n const creditedObj = await credited;\n\n const newStatus = { newDate, newBy: 'System' };\n const approvedStatus = {\n approvedDate: approvedObj?.claim_Status_Set_On_Date ?? null,\n approvedBy: approvedObj?.claim_Status_Set_By ?? 'System',\n };\n\n const processedStatus = {\n processedDate: processedObj?.claim_Status_Set_On_Date ?? null,\n processedBy: processedObj?.claim_Status_Set_By ?? 'System',\n };\n\n const pendingStatus = pendingObj\n ? {\n pendingDate: pendingObj?.lastUpdatedOn ?? null,\n pendingBy: await this.getUserFullName(\n pendingObj?.lastUpdateUserId ?? 1\n ),\n }\n : null;\n const invoicingStatus = invoicingObj\n ? {\n invoicingDate: invoicingObj?.lastUpdatedOn ?? null,\n invoicingBy: await this.getUserFullName(\n invoicingObj?.lastUpdateUserId ?? 1\n ),\n }\n : null;\n const invoicedStatus = invoicedObj\n ? {\n invoicedDate: invoicedObj?.lastUpdatedOn ?? null,\n invoicedBy: await this.getUserFullName(\n invoicedObj?.lastUpdateUserId ?? 1\n ),\n }\n : null;\n const rejectedStatus = rejectedObj\n ? {\n rejectedDate: rejectedObj?.lastUpdatedOn ?? null,\n rejectedBy: await this.getUserFullName(\n rejectedObj?.lastUpdateUserId ?? 1\n ),\n }\n : null;\n const needsCreditStatus = needsCreditObj\n ? {\n needsCreditDate: needsCreditObj?.lastUpdatedOn ?? null,\n needsCreditBy: await this.getUserFullName(\n needsCreditObj?.lastUpdateUserId ?? 1\n ),\n }\n : null;\n const creditedStatus = creditedObj\n ? {\n creditedDate: creditedObj?.lastUpdatedOn ?? null,\n creditedBy: await this.getUserFullName(\n creditedObj?.lastUpdateUserId ?? 1\n ),\n }\n : null;\n\n return {\n newStatus,\n approvedStatus,\n processedStatus,\n pendingStatus,\n invoicingStatus,\n invoicedStatus,\n rejectedStatus,\n needsCreditStatus,\n creditedStatus,\n };\n }\n\n private static userNames = new Map();\n async getUserFullName(userId: any) {\n const fullName = await this.getUserInfo(userId);\n return fullName?.displayName || 'System';\n }\n\n async getPrescriptionHistoryDetailRecord(\n claimId: number,\n status: number\n ): Promise {\n try {\n const headers = this.getStandardHeaders();\n const url = `${this.trackBaseURL}/Sp340BClaims/getClaimDetailHistory`;\n\n const options = {\n headers,\n params: {\n userId: this.tier.selectedItem.userID.toString(),\n claimId: claimId.toString(),\n status: status.toString(),\n },\n };\n\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionDetails: Array) => {\n return PrescriptionDetails[0];\n })\n )\n .toPromise()) as IPrescriptionDetail;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async getUserInfo(userId: number): Promise {\n try {\n const headers = this.getStandardHeaders();\n const url = `${this.trackBaseURL}/Sp340BInvoice/getUserInfo`;\n\n const options = {\n headers,\n params: {\n userId: userId.toString(),\n },\n };\n\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionDetails: any) => {\n return PrescriptionDetails[0];\n })\n )\n .toPromise()) as any;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async getInvoiceHistoryRecord(tier2_id: string, claimId: number, status: number): Promise {\n try {\n const headers = this.getStandardHeaders();\n const url = `${this.trackBaseURL}/Sp340BInvoice/getInvoiceHistory`;\n\n const options = {\n headers,\n params: {\n tier2Id: tier2_id,\n claimId: claimId.toString(),\n status: status.toString(),\n },\n };\n\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionDetails: Array) => {\n return PrescriptionDetails[0];\n })\n )\n .toPromise()) as IPrescriptionInvoice;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async getCELocations(ccn: string): Promise {\n try {\n const headers = this.getStandardHeaders();\n \n const url = `${this.trackBaseURL}/Sp340BClaims/getCELocations`;\n const options = {\n headers,\n params: {\n ccn,\n },\n };\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionDetails: Array, index: number) => {\n PrescriptionDetails.unshift({ display: 'None' });\n return PrescriptionDetails;\n })\n )\n .toPromise()) as ICCNLocation[];\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async getContractInfo(tierId: string): Promise {\n try {\n const headers = this.getStandardHeaders();\n const url = `${this.trackBaseURL}/Sp340BInvoice/getContractInfo`;\n\n const options = {\n headers,\n params: {\n tier2Id: tierId,\n },\n };\n\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionDetails: Array) => {\n return PrescriptionDetails[0];\n })\n )\n .toPromise()) as IContractInfo;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n /**\n * Constructs a request which interprets the body as a JSON object and returns the full\n * `HTTPResponse` as a JSON object.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HTTPResponse`, with the response body of type `Object`.\n */\n async setPrescriptionDetail(\n details: any,\n isRejected: boolean = false,\n subsequentFillLogicOptOut: boolean = null\n ): Promise {\n const headers = this.getStandardHeaders();\n headers['content-type'] = 'application/json';\n\n details.visit_Note_Missing = details.visit_Note_Missing ? 1 : 0;\n details.cE_Visit_Note_Missing = details.cE_Visit_Note_Missing ? 1 : 0;\n details.cE_Related_Referral_Missing = details.cE_Related_Referral_Missing\n ? 1\n : 0;\n\n details.acO_ID = details.acoId;\n details.coach340BClaimsID = details.claimPk;\n details.tier2_ID = details.tier2_id;\n details.tier3_ID = details.tier3_id;\n details.tier4_GrpID = details.tier4_grpId;\n\n if (!details.cuR_CLM_UNIQ_ID) {\n details.cuR_CLM_UNIQ_ID = -1;\n }\n \n details.claim_Status = details.claim_Status === ClaimStatus.NEW\n ? ClaimStatus.PENDING : details.claim_Status; \n \n if (details.userId) {\n await this.writeAuditMessage({\n entityid: parseInt(details.userId),\n moduleid: 2, // care\n componentid: 36,\n actionid: 3,\n tablename: 'Coach340BDetail',\n auditdesc: `User ID ${details.userId} Updated 340B claim record (${\n details.claimPk\n }) (${mapOverallOptionsToStrings(\n details.claim_Status\n )}) for Drug name: ${\n details.selectedPatientInfo.prescriptionName\n } (NDC#: ${details.selectedPatientInfo.ndc}) for patient: ${\n details.selectedPatientInfo.mbi\n }, ${details.selectedPatientInfo.patientName}, ${\n details.selectedPatientInfo.patientDob\n }`,\n applicationID: 2,\n });\n }\n \n details.subsequentFillLogicOptOut = subsequentFillLogicOptOut;\n \n const url = `${this.trackBaseURL}/Sp340BClaims/setDetail`;\n const body = JSON.stringify(details);\n \n let result = fetch(url, { method: 'post', body, headers });\n return result;\n }\n\n async setClaimToProcessed(claimIds): Promise {\n const headers = this.getStandardHeaders();\n headers['content-type'] = 'application/json';\n\n const url = `${this.trackBaseURL}/Sp340BClaims/setClaimsToProcessed`;\n let result;\n\n claimIds.forEach(async (idObj) => {\n const body = JSON.stringify({\n claimIds: idObj.claimId,\n prescriptionId: idObj.prescriptionId,\n });\n result = await fetch(url, { method: 'post', body, headers });\n });\n\n return result;\n }\n\n async saveClaimNote(claimNote: any): Promise {\n const headers = this.getStandardHeaders();\n headers['content-type'] = 'application/json';\n\n const url = `${this.trackBaseURL}/Sp340BClaims/saveClaimNote`;\n const body = JSON.stringify(claimNote);\n\n let result = fetch(url, { method: 'post', body, headers });\n return result;\n }\n\n async writeAuditMessage(message: any): Promise {\n const headers = this.getStandardHeaders();\n headers['content-type'] = 'application/json';\n\n const url = `${this.trackBaseURL}/Sp340BClaims/writeLogMessage`;\n const body = JSON.stringify(message);\n\n let result = fetch(url, { method: 'post', body, headers });\n return result;\n }\n\n setSelectedClaimInfo(selectedClaimInfo) {\n this.claimInfo = Object.assign({}, selectedClaimInfo);\n this.claimInfoUpdated.emit(this.claimInfo);\n }\n\n getSelectedClaimInfo() {\n return this.claimInfo;\n }\n\n setSelectedProcessingClaimInfo(selectedProcessingClaim) {\n this.processingClaim = Object.assign({}, selectedProcessingClaim);\n this.processingClaimInfoUpdated.emit(this.processingClaim);\n }\n\n setSelectedInvoicingClaimInfo(selectedInvoicingClaim) {\n this.invoicingClaim = Object.assign({}, selectedInvoicingClaim);\n this.invoicingClaimInfoUpdated.emit(this.invoicingClaim);\n }\n\n getSelectedProcessingClaimInfo() {\n return this.processingClaim;\n }\n\n async getInvoices(\n acoId?: string,\n tier2Id?: string,\n tier3Id?: string,\n tier4Id?: string,\n userId: any = null\n ): Promise> {\n try {\n const headers = this.getStandardHeaders();\n\n const url = `${this.trackBaseURL}/Sp340BInvoice`;\n const params = {\n userId: this.tier.selectedItem.userID.toString(),\n acoId: acoId || null,\n ...(tier2Id && { tier2Id: tier2Id }),\n ...(tier3Id && { tier3Id: tier3Id }),\n ...(tier4Id && { tier4Id: tier4Id }),\n };\n const options = {\n headers,\n params: params,\n };\n\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionOrigs: Array) => {\n return PrescriptionOrigs.map((PrescriptionOrig) => {\n PrescriptionOrig.tpaName = PrescriptionOrig.tpaName ? PrescriptionOrig.tpaName : 'CMS';\n return PrescriptionOrig;\n }\n );\n })\n )\n .toPromise()) as Array;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n \n async getInvoiceId(\n coach340BClaimsID: number\n ): Promise {\n try {\n const headers = this.getStandardHeaders();\n\n const url = `${this.trackBaseURL}/Sp340BInvoice/getInvoiceId`;\n const params = {\n coach340BClaimsID: coach340BClaimsID.toString()\n };\n const options = {\n headers,\n params: params,\n };\n\n return (await this.http\n .get(url, options)\n .toPromise()) as IInvoiceStatusId;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async submitInvoices(invoices: Array): Promise {\n const headers = this.getStandardHeaders();\n headers['content-type'] = 'application/json';\n\n const url = `${this.trackBaseURL}/Sp340BInvoice/saveInvoice`;\n let result;\n\n invoices.forEach(async (invoice) => {\n invoice.userId = this.tier.selectedItem.userID;\n const body = JSON.stringify(invoice);\n result = await fetch(url, { method: 'post', body, headers });\n });\n\n return result;\n }\n\n async getPrescriptionDetailWithId(claimId, claimType): Promise {\n try {\n const headers = this.getStandardHeaders();\n const url = `${this.trackBaseURL}/Sp340BClaims/getDetailWithId`;\n\n const options = {\n headers,\n params: {\n userId: this.tier.selectedItem.userID.toString(),\n claimId,\n claimType,\n },\n };\n\n return (await this.http\n .get(url, options)\n .pipe(\n map((PrescriptionDetails: Array) => {\n return PrescriptionDetails[0];\n })\n )\n .toPromise()) as IPrescriptionDetail;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async sendFax(claimsId, toFax, claimType): Promise {\n const headers = {\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': PrescriptionService.tempOcp_Apim_Sub_Key,\n 'content-type': 'application/json',\n };\n const url = `${this.apiBaseURL}/fax/sendFax`;\n\n const body = JSON.stringify({ claimsId, toFax, claimType });\n const result = await fetch(url, {\n method: 'post',\n body,\n headers,\n });\n\n return result;\n }\n\n async uploadFile(formData: FormData): Promise> {\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': PrescriptionService.tempOcp_Apim_Sub_Key,\n }),\n };\n\n const url = `${this.trackBaseURL}/Sp340BClaims/uploadFiles`;\n const upload$ = this.http.post(url, formData, httpOptions);\n\n return upload$;\n }\n\n async deleteUploadedFile(tier2Id: string, prescriptionRefId: string, filename: string) {\n const headers = this.getStandardHeaders();\n headers['content-type'] = 'application/json';\n\n let data = { filename, prescriptionRefId, tier2Id };\n let body = JSON.stringify(data);\n\n const url = `${this.trackBaseURL}/Sp340BClaims/deleteUploadedFile`;\n let result = await fetch(url, { method: 'post', body, headers });\n return result;\n }\n\n async getFileAttachments(tier2Id: string, prescriptionRefId: string): Promise {\n\n try {\n const headers = this.getStandardHeaders();\n const url = `${this.trackBaseURL}/Sp340BClaims/getUploadedFileList`;\n\n const options = {\n headers,\n params: {\n tier2Id,\n prescriptionRefId,\n },\n };\n\n return (await this.http.get(url, options).toPromise()) as any;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async downloadAttachedFiles(tier2Id: string, prescriptionRefId: string) {\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': PrescriptionService.tempOcp_Apim_Sub_Key,\n }),\n };\n\n const url = `${this.trackBaseURL}/Sp340BClaims/downloadFile`;\n\n let filenames = await this.getFileAttachments(tier2Id, prescriptionRefId);\n filenames.forEach((filename) => {\n let name = filename['fileName'];\n this.downloadFile(`${url}?tier2Id=${tier2Id}&prescriptionRefId=${prescriptionRefId}&filename=${name}`, name);\n });\n }\n\n downloadFile(route: string, filename: string = null): void {\n const headers = new HttpHeaders({\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': PrescriptionService.tempOcp_Apim_Sub_Key,\n });\n\n this.http\n .get(route, { headers, responseType: 'blob' as 'json' })\n .subscribe((response: any) => {\n let dataType = response.type;\n let binaryData = [];\n binaryData.push(response);\n let downloadLink = document.createElement('a');\n downloadLink.href = window.URL.createObjectURL(\n new Blob(binaryData, { type: dataType })\n );\n if (filename) downloadLink.setAttribute('download', filename);\n document.body.appendChild(downloadLink);\n downloadLink.click();\n });\n }\n\n async getClaimExceptions(\n tier2Id: string,\n ): Promise> {\n const headers = this.getStandardHeaders();\n\n const url = `${this.trackBaseURL}/Sp340BClaims/getClaimExceptions`;\n const params = {\n tier2Id\n };\n const options = {\n headers,\n params: params,\n };\n\n const result = await this.http.get(url, options).toPromise() as Array;\n return result;\n }\n\n async moveExceptionToClaim(exceptionId: number) {\n try {\n const headers = this.getStandardHeaders();\n const url = `${this.trackBaseURL}/Sp340BClaims/moveExceptionToClaim`;\n\n const options = {\n headers,\n params: {\n exceptionId: exceptionId.toString()\n },\n };\n\n return (await this.http\n .get(url, options)\n .toPromise());\n } catch (e) {\n if (environment.production) {\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async rejectException(exceptionId: number) {\n try {\n const headers = this.getStandardHeaders();\n const url = `${this.trackBaseURL}/Sp340BClaims/rejectException`;\n\n const options = {\n headers,\n params: {\n exceptionId: exceptionId.toString()\n },\n };\n\n return (await this.http\n .get(url, options)\n .toPromise());\n } catch (e) {\n if (environment.production) {\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async undoProcessClaim(claimId: number, claimType: string): Promise {\n const headers = this.getStandardHeaders();\n headers['content-type'] = 'application/json';\n\n const url = `${this.trackBaseURL}/Sp340BClaims/undoProcessClaim?coach340BClaimsID=${claimId}&claimType=${claimType}`;\n\n let result = fetch(url, { method: 'post', headers });\n return result;\n }\n}\n","
\n
\n
\n
\n
\n
340B Claim Exceptions
\n
\n\n \n
\n
\n
\n
\n
\n \n \n
\n
\n
","import {\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\n\n\nimport { COLUMN_DEFS } from './care-exceptions.columns';\nimport {\n IClaimException,\n} from '@shared/models/prescription';\nimport { IPrescriptionFilterPreset } from '@shared/models/prescription-filters';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { takeUntil } from 'rxjs/operators';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { ToastrService } from 'ngx-toastr';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { Subscription } from 'rxjs';\nimport {\n ClaimStatus,\n} from '../../care-prescriptions/shared-lib';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { FilterOption } from '../../care-all-prescriptions/care-all-prescriptions.component';\nimport { ColDef, ColumnApi, GridApi } from 'ag-grid-community';\n\n@Component({\n selector: 'coach-care-exceptions',\n templateUrl: './care-exceptions.component.html',\n host: {\n class: 'page-content coach-care-prescriptions',\n },\n})\nexport class CareExceptionsComponent\n extends KillSubscriptions\n implements OnInit, OnDestroy\n{\n public static ACCESS_EXCEPTION_QUEUE = 'Accessed 340B Exception Queue';\n\n public claimExceptions: Array = [];\n public dataLoaded: boolean = false;\n public loadingStatus = true;\n public cancelLoadingBool = false;\n public resetFilter = false;\n public selectedPreset: IPrescriptionFilterPreset;\n \n public gridApi: GridApi;\n public columnApi: ColumnApi;\n public selectedPatientInfo: any;\n readonly defaultColDef: ColDef = {\n resizable: true,\n };\n readonly columnDefs = COLUMN_DEFS;\n\n public dateRangeLow: Date;\n public dateRangeHigh: Date;\n\n public orgId: string = null;\n public tier: IHierarchyTier = null;\n public rowCount: number = 10;\n public pageNo: number = 1;\n\n public gridObject: any = null;\n public currentRow: any = null;\n public redrawRowInterval: any;\n\n authSubscription: Subscription;\n currentUser: any;\n\n filterOptions: FilterOption[];\n ExceptionQueue: boolean;\n \n @Output() public gridApiEmitter: EventEmitter = new EventEmitter();\n @Output() public filterOptionsEmitter: EventEmitter =\n new EventEmitter();\n\n constructor(\n private _route: ActivatedRoute,\n private HierarchyTierService: HierarchyTierService,\n private PrescriptionService: PrescriptionService,\n private toastr: ToastrService,\n private router: Router,\n protected featureFlagService: FeatureFlagService,\n private authService: AuthService\n ) {\n super();\n HierarchyTierService.currentTier$\n .pipe(takeUntil(this.killTrigger))\n .subscribe(async (tier) => {\n if (this.tier?.selectedTierId !== tier?.selectedTierId) {\n this.tier = tier;\n this.claimExceptions = (await this.getClaimExceptions()).map(ex => {\n ex.fillDate = ex.dispenseDate;\n return ex;\n });\n this.initializeFilter();\n }\n });\n this.ExceptionQueue = this.featureFlagService.hasFeatureFlag(\n CareFeatureConstants.ExceptionQueue340B\n );\n }\n\n ngOnInit(): void {\n this.authSubscription = this.authService.userInfo$.subscribe(\n (currentUser) => (this.currentUser = currentUser)\n );\n }\n\n ngOnDestroy(): void {\n this.authSubscription.unsubscribe();\n clearInterval(this.redrawRowInterval);\n }\n \n initializeFilter() {\n this.filterOptions = [];\n this.filterOptionsEmitter.emit(this.filterOptions);\n this.gridApi.refreshCells();\n this.loadingStatus = false;\n }\n\n onGridReady(param: any): void {\n this.gridApi = param.api;\n this.columnApi = param.columnApi;\n this.rowCount = this.gridApi.getDisplayedRowCount();\n this.pageNo = 1;\n\n this.setDefaultSortOrder();\n this.gridApiEmitter.emit(this.gridApi);\n }\n\n onFirstDataRendered(params: any): void {\n this.gridObject = params;\n this.dataLoaded = true;\n }\n\n setDefaultSortOrder() {\n this.columnApi.applyColumnState({\n state: [\n {\n colId: 'rxNumber',\n sort: 'asc',\n sortIndex: 0,\n },\n {\n colId: 'fillDate',\n sort: 'asc',\n sortIndex: 1,\n }\n ],\n defaultState: { sort: null },\n });\n }\n\n public cancelPrescriptionsLoadingProcess(): void {\n this.cancelLoadingBool = true;\n this.loadingStatus = false;\n this.resetFilter = true;\n let that = this;\n setTimeout(function () {\n that.resetFilter = false;\n }, 0);\n }\n\n async getClaimExceptions(): Promise {\n const { selectedItem } = this.tier;\n let prescriptions;\n try {\n prescriptions = this.PrescriptionService.getClaimExceptions(\n selectedItem.tier2_ID,\n );\n } catch (e) {\n this.toastr.error(`${e.status}: ${e.statusText}`, 'Error');\n }\n\n return prescriptions; \n }\n\n writeAccessAuditMessage(action: string) {\n const dateRange = this.getAuditMessageDateRange();\n setTimeout(async () => {\n this.PrescriptionService.writeAuditMessage({\n entityid: parseInt(this.currentUser.dnn_id),\n moduleid: 2, // care\n componentid: 36,\n actionid: 6, // phi access\n tablename: 'Coach340BClaims',\n auditdesc: `User ID ${this.currentUser.dnn_id} ${action} for date range ${dateRange}`,\n applicationID: 2,\n });\n }, 0);\n }\n\n getAuditMessageDateRange() {\n return `${this.dateRangeLow?.toLocaleDateString() ?? 'All'} - ${\n this.dateRangeHigh?.toLocaleDateString() ?? 'All'\n }`;\n }\n\n onCellClicked(event) {\n switch (event.value) {\n case 'check-circle':\n this.loadingStatus = true;\n this.PrescriptionService.moveExceptionToClaim(event.data.exceptionId)\n .then(() => {\n this.removeAffectedRows(event);\n this.loadingStatus = false;\n });\n break;\n case 'x-circle':\n this.loadingStatus = true;\n this.PrescriptionService.rejectException(event.data.exceptionId)\n .then(() => {\n this.removeAffectedRows(event);\n this.loadingStatus = false;\n });\n break;\n }\n }\n\n removeAffectedRows(event) {\n const affectedRows = [];\n event.api.forEachNode((node) => {\n if (event.data.exceptionId == node.data.exceptionId) {\n affectedRows.push(node.data);\n }\n });\n this.gridApi.applyTransaction({ remove: affectedRows });\n }\n\n}\n","import { Component } from '@angular/core';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { CareExceptionsComponent } from './views/care-prescriptions/care-exceptions/care-exceptions.component';\n\nconst {\n PatientsFeature,\n CarePrescriptionFeature,\n CarePrescriptionProcessingFeature,\n CarePrescriptionInvoicingFeature,\n FeatureFlag340B,\n HiddenFeatureFlag340B,\n UIUpdates340B,\n ExceptionQueue340B,\n CareLandingPageFlag\n} = CareFeatureConstants;\n\n@Component({\n selector: 'coach-care',\n templateUrl: './care.component.html',\n host: {\n class: 'coach-care',\n },\n})\nexport class CareComponent {\n public tabsData = [\n {\n name: 'Summary',\n routerLink: ['summary-tab'],\n featureFlag: CareLandingPageFlag,\n },\n {\n name: 'Patients',\n routerLink: ['patients'],\n featureId: PatientsFeature,\n },\n {\n name: '340B Prescriptions',\n routerLink: ['allPrescriptions'],\n featureId: CarePrescriptionFeature,\n featureFlag: UIUpdates340B,\n },\n {\n name: 'Pre-validation Exceptions',\n routerLink: ['prescriptions-exceptions'],\n featureId: CareExceptionsComponent,\n featureFlag: ExceptionQueue340B,\n hideIfFeatureFlagIsActive: UIUpdates340B\n },\n {\n name: 'Validate 340B',\n routerLink: ['prescriptions'],\n featureId: CarePrescriptionFeature,\n featureFlag: FeatureFlag340B,\n hideIfFeatureFlagIsActive: UIUpdates340B\n },\n {\n name: 'Process 340B',\n routerLink: ['prescriptions-processing'],\n featureId: CarePrescriptionProcessingFeature,\n featureFlag: FeatureFlag340B,\n hideIfFeatureFlagIsActive: UIUpdates340B\n },\n {\n name: 'Invoice 340B',\n routerLink: ['prescriptions-invoicing'],\n featureId: CarePrescriptionInvoicingFeature,\n featureFlag: HiddenFeatureFlag340B,\n hideIfFeatureFlagIsActive: UIUpdates340B\n },\n ];\n\n constructor() {}\n}\n","\n\n","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import {\n Component,\n OnInit,\n Input,\n OnChanges,\n SimpleChanges,\n Inject,\n LOCALE_ID,\n EventEmitter,\n Output,\n ChangeDetectorRef\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { formatDate } from '@angular/common';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { GridFilterService, DISEASE_COHORT_GRID_KEY } from '@shared/components/grid/grid-filter.service';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { PhonePipe } from '@shared/pipes/phone.pipe';\nimport { currencyCellRenderer } from '@shared/components/grid/grid-functions';\nimport { AgGridLocalSettingsService } from '@shared/services/ag-grid/ag-grid.service';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { PatientViewModel } from '@shared/models/patient';\nimport { ColDef, ColumnApi, GridApi, FilterChangedEvent } from 'ag-grid-community';\n\n@Component({\n selector: 'coach-disease-cohort-grid',\n templateUrl: './disease-cohort-grid.component.html',\n styleUrls: ['./disease-cohort-grid.component.scss'],\n providers: [MaskPipe, PhonePipe]\n})\nexport class DiseaseCohortGridComponent extends PersistentGridFilters implements OnInit, OnChanges {\n @Input() rowData: any[];\n @Input() tierNum: number;\n @Input() tierId: string;\n @Input() filterName: string;\n @Input() columnDefs: Array;\n @Input() localeText: { [key: string]: string };\n @Input() loadingStatus: boolean;\n @Input() hiddenColumnsByDefault: string[];\n @Output() public selectedPatients: EventEmitter = new EventEmitter();\n @Output() public secondaryColumnApiEmitter: EventEmitter = new EventEmitter(); // sends columnApi to care-patients where it's used in columnsSettingsModal to hide/display columns;\n @Output() public agFilterChangedEmitter: EventEmitter = new EventEmitter(); // sends gridApi instance to care-patients when filter is applied;\n @Output() public setSelectedPatientId: EventEmitter = new EventEmitter();\n \n public gridApi: GridApi;\n public columnApi: ColumnApi;\n private currentUrl: string;\n AgGridCustomFilteringFlag: string = CareFeatureConstants.AgGridCustomFilteringFlag;\n\n private defSortModel: any = [\n {\n colId: 'predictedRiskLevel'\n },\n {\n colId: 'fullName',\n sort: 'asc'\n }\n ];\n constructor(\n protected filterService: GridFilterService,\n private router: Router,\n private route: ActivatedRoute,\n private mask: MaskPipe,\n private phone: PhonePipe,\n @Inject(LOCALE_ID) private locale: string,\n private agGridLocalSettingsService: AgGridLocalSettingsService,\n private featureFlagService: FeatureFlagService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super(filterService, DISEASE_COHORT_GRID_KEY);\n }\n\n ngOnInit(): void {}\n\n public clear() {\n this.gridApi.setFilterModel(null);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.currentUrl = this.router.url;\n if (this.hasFilterModel()) {\n if (this.currentUrl === this.getFilterModel().url) {\n this.restoreColumnState(this.columnApi, this.gridApi);\n } else {\n this.columnApi?.resetColumnState();\n this.columnApi?.applyColumnState({ state: this.defSortModel });\n this.setLocalColumnSettings();\n }\n } else {\n if (this.columnApi) {\n this.columnApi?.resetColumnState();\n this.columnApi?.applyColumnState({ state: this.defSortModel });\n this.setLocalColumnSettings();\n }\n }\n if (this.columnDefs) {\n this.setLocalColumnSettings();\n }\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.columnApi = params.columnApi;\n this.secondaryColumnApiEmitter.emit(this.columnApi);\n params.api.setSortModel(this.defSortModel);\n\n this.setLocalColumnSettings();\n this.gridApi.deselectAll();\n this.selectedPatients.emit([]);\n this.getAndApplyFilterModel();\n }\n\n onFirstDataRendered(params: any): void {\n if (this.hasFilterModel()) {\n params.api.setFilterModel(this.getFilterModel().filterModel);\n }\n\n params.api.sizeColumnsToFit();\n }\n\n public onRowClicked(event: any): void {\n this.saveColumnState(this.columnApi, this.gridApi, this.currentUrl);\n\n var sourceCell = event.event.srcElement;\n if (sourceCell.className.includes('cell-patient-navigation')) {\n // this.router.navigate([`../patient/${event.data.chPatId}`], {\n // relativeTo: this.route,\n // });\n this.setSelectedPatientId.emit(event.data.chPatId);\n }\n }\n\n public onExportClick(): void {\n const reportCohort = this.route.snapshot.queryParamMap.get('filterPreset');\n const timestamp = formatDate(new Date(), 'yyyy-MM-dd', this.locale);\n this.gridApi.exportDataAsCsv({\n suppressQuotes: false,\n columnSeparator: ',',\n fileName: `DiseaseCohortsReport_${reportCohort}_${timestamp}.csv`\n });\n }\n public onSelectionChanged(event: any): void {\n let patients: PatientViewModel[] = [];\n this.gridApi?.forEachNodeAfterFilter(patient => {\n if (patient.isSelected()) {\n patients.push(patient.data);\n }\n });\n this.selectedPatients.emit(patients);\n }\n public exportCSV(): void {\n let selectedItems = this.gridApi.getSelectedRows();\n if (selectedItems.length < 1) {\n return;\n }\n const reportCohort = this.route.snapshot.queryParamMap.get('filterPreset');\n const timestamp = formatDate(new Date(), 'yyyy-MM-dd', this.locale);\n this.gridApi.exportDataAsCsv({\n processCellCallback: (params: any): string => {\n switch (params.column.getColId()) {\n case 'lastActivityAt':\n case 'lastAWVDate':\n case 'lastVisit':\n return params.value ? formatDate(new Date(params.value), 'MM/dd/yyyy', this.locale) : '';\n case 'phone1':\n case 'phone2':\n return params.value ? this.phone.transform(params.value) : '';\n case 'totalSpend':\n case 'totalCost':\n return currencyCellRenderer(params);\n case 'patientId':\n case 'current_MBI':\n return this.mask.transform(params.value, 6);\n default:\n return params.value;\n }\n },\n suppressQuotes: false,\n columnSeparator: ',',\n onlySelected: true,\n columnKeys: this.agGridLocalSettingsService.getActiveColumnNames(this.columnApi),\n fileName: `DiseaseCohortsReport_${reportCohort}_${timestamp}.csv`\n });\n }\n onColumnUpdated(): void {\n this.agGridLocalSettingsService.storeColumnSettingsInLocalStorage(\n this.filterName,\n this.columnApi.getColumnState(),\n null\n );\n }\n setLocalColumnSettings(): void {\n this.changeDetectorRef.detectChanges();\n this.agGridLocalSettingsService.setColumnSettings(\n this.columnApi,\n this.filterName,\n null,\n null,\n this.hiddenColumnsByDefault\n );\n }\n\n agFilterChanged(event: FilterChangedEvent): void {\n this.agFilterChangedEmitter.emit(this.gridApi);\n if (event?.afterDataChange != null) {\n this.storeFilterModel();\n }\n }\n storeFilterModel(): void {\n this.agGridLocalSettingsService.storeFilterModelInLocalStorage(\n 'CHRONIC CONDITIONS',\n this.filterName,\n this.gridApi.getFilterModel()\n );\n }\n async getAndApplyFilterModel() {\n let storedFilterModel = await this.agGridLocalSettingsService.getStoredFilterModelFromLocalStorage(\n 'CHRONIC CONDITIONS',\n this.filterName\n );\n this.gridApi.setFilterModel(storedFilterModel);\n }\n}\n","\n\n","import {\n Component,\n OnInit,\n Input,\n OnChanges,\n Inject,\n LOCALE_ID,\n Output,\n EventEmitter,\n ChangeDetectorRef\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { formatDate } from '@angular/common';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { GridFilterService, ED_UTILIZATION_GRID_KEY } from '@shared/components/grid/grid-filter.service';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { PhonePipe } from '@shared/pipes/phone.pipe';\nimport { AgGridLocalSettingsService } from '@shared/services/ag-grid/ag-grid.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { PatientViewModel } from '@shared/models/patient';\nimport { currencyCellRenderer } from '@shared/components/grid/grid-functions';\nimport { ColDef, ColumnApi, ColumnState, ColumnStateParams, FilterChangedEvent, GridApi } from 'ag-grid-community';\n\n@Component({\n selector: 'coach-ed-utilization-grid',\n templateUrl: './ed-utilization-grid.component.html',\n styleUrls: ['./ed-utilization-grid.component.scss'],\n providers: [MaskPipe, PhonePipe]\n})\nexport class EdUtilizationGridComponent extends PersistentGridFilters implements OnInit, OnChanges {\n @Input() rowData: any[];\n @Input() tierNum: number;\n @Input() tierId: string;\n @Input() reportName: string;\n @Input() columnDefs: Array;\n @Input() localeText: { [key: string]: string };\n @Input() loadingStatus: boolean;\n @Output() public selectedPatients: EventEmitter = new EventEmitter();\n @Output() public secondaryColumnApiEmitter: EventEmitter = new EventEmitter(); // sends columnApi to care-patients where it's used in columnsSettingsModal to hide/display columns;\n @Output() public agFilterChangedEmitter: EventEmitter = new EventEmitter(); // sends gridApi instance to care-patients when filter is applied;\n @Input() hiddenColumnsByDefault: string[];\n @Output() public setSelectedPatientId: EventEmitter = new EventEmitter();\n \n public gridApi: GridApi;\n public gridColumnApi: ColumnApi;\n private currentUrl: string;\n AgGridCustomFilteringFlag: string = CareFeatureConstants.AgGridCustomFilteringFlag;\n\n defSortModel: any = [\n {\n colId: 'predictedRiskLevel',\n sort: 'asc'\n },\n {\n colId: 'patientName',\n sort: 'asc'\n }\n ];\n user: wpapi.model.Professional;\n constructor(\n protected filterService: GridFilterService,\n private router: Router,\n private route: ActivatedRoute,\n private mask: MaskPipe,\n private authService: AuthService,\n @Inject(LOCALE_ID) private locale: string,\n private agGridLocalSettingsService: AgGridLocalSettingsService,\n private featureFlagService: FeatureFlagService,\n private phone: PhonePipe,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super(filterService, ED_UTILIZATION_GRID_KEY);\n }\n\n ngOnInit(): void {}\n\n ngOnChanges(): void {\n this.currentUrl = this.router.url;\n if (this.hasFilterModel()) {\n if (this.currentUrl === this.getFilterModel().url) {\n console.log('Restoring');\n this.restoreColumnState(this.gridColumnApi, this.gridApi);\n } else {\n console.log('Resetting');\n this.gridColumnApi?.resetColumnState();\n\n this.gridColumnApi.applyColumnState({\n state: this.defSortModel\n });\n this.setLocalColumnSettings();\n }\n } else {\n console.log('No filter model');\n if (this.gridColumnApi) {\n this.gridColumnApi.resetColumnState();\n this.gridColumnApi.applyColumnState({\n state: this.defSortModel\n });\n this.setLocalColumnSettings();\n }\n }\n }\n\n public clear() {\n this.gridApi.setFilterModel(null);\n }\n\n onFirstDataRendered(params: any): void {\n if (this.hasFilterModel()) {\n params.api.setFilterModel(this.getFilterModel().filterModel);\n }\n\n params.api.sizeColumnsToFit();\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n this.setLocalColumnSettings();\n this.gridApi.deselectAll();\n this.selectedPatients.emit([]);\n this.secondaryColumnApiEmitter.emit(this.gridColumnApi);\n this.getAndApplyFilterModel();\n }\n\n public onRowClicked(event: any): void {\n console.log('saving column state');\n this.saveColumnState(this.gridColumnApi, this.gridApi, this.currentUrl);\n\n const sourceCell = event.event.srcElement;\n if (sourceCell.className.includes('cell-patient-navigation')) {\n // CC-2955 incorrect case for 'chPatID'\n // this.router.navigate([`../patient/${event.data.chPatID}`], {\n this.setSelectedPatientId.emit(event.data.chPatId);\n }\n }\n\n public onExportClick(): void {\n const reportCohort = this.route.snapshot.queryParamMap.get('filterPreset');\n const timestamp = formatDate(new Date(), 'yyyy-MM-dd', this.locale);\n this.gridApi.exportDataAsCsv({\n suppressQuotes: false,\n columnSeparator: ',',\n fileName: `EDUtilizationReport_${reportCohort}_${timestamp}.csv`\n });\n }\n\n private currencyCellRenderer(params: any): string {\n const inrFormat = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2\n });\n\n return inrFormat.format(params.value);\n }\n public onSelectionChanged(event: any): void {\n let patients: PatientViewModel[] = [];\n this.gridApi?.forEachNodeAfterFilter(patient => {\n if (patient.isSelected()) {\n patients.push(patient.data);\n }\n });\n this.selectedPatients.emit(patients);\n }\n public exportCSV(): void {\n let selectedItems = this.gridApi.getSelectedRows();\n if (selectedItems.length < 1) {\n return;\n }\n const reportCohort = this.route.snapshot.queryParamMap.get('filterPreset');\n const timestamp = formatDate(new Date(), 'yyyy-MM-dd', this.locale);\n\n this.gridApi.exportDataAsCsv({\n processCellCallback: (params: any): string => {\n switch (params.column.getColId()) {\n case 'lastActivityAt':\n case 'lastAWVDate':\n case 'lastVisit':\n return params.value ? formatDate(new Date(params.value), 'MM/dd/yyyy', this.locale) : '';\n case 'phone1':\n case 'phone2':\n return params.value ? this.phone.transform(params.value) : '';\n case 'totalSpend':\n case 'totalCost':\n return currencyCellRenderer(params);\n case 'patientId':\n case 'current_MBI':\n return this.mask.transform(params.value, 6);\n default:\n return params.value;\n }\n },\n suppressQuotes: false,\n columnSeparator: ',',\n onlySelected: true,\n columnKeys: this.agGridLocalSettingsService.getActiveColumnNames(this.gridColumnApi),\n fileName: `EDUtilizationReport_${reportCohort}_${timestamp}.csv`\n });\n }\n\n public dataExists(): boolean {\n return this.rowData?.length > 0;\n }\n onColumnUpdated(): void {\n this.agGridLocalSettingsService.storeColumnSettingsInLocalStorage(\n 'ED Utilization',\n this.gridColumnApi.getColumnState(),\n null\n );\n }\n async setLocalColumnSettings() {\n if (!this.user) {\n this.user = await this.authService.getWellpepperUserInfo();\n }\n this.agGridLocalSettingsService.setColumnSettings(\n this.gridColumnApi,\n 'ED Utilization',\n this.user._id,\n null,\n this.hiddenColumnsByDefault\n );\n }\n agFilterChanged(event: FilterChangedEvent): void {\n this.agFilterChangedEmitter.emit(this.gridApi);\n if (event?.afterDataChange != null) {\n this.storeFilterModel();\n }\n }\n storeFilterModel(): void {\n this.changeDetectorRef.detectChanges();\n this.agGridLocalSettingsService.storeFilterModelInLocalStorage(\n 'COHORTS',\n 'ED Utilization',\n this.gridApi.getFilterModel()\n );\n }\n async getAndApplyFilterModel() {\n let storedFilterModel = await this.agGridLocalSettingsService.getStoredFilterModelFromLocalStorage(\n 'COHORTS',\n 'ED Utilization'\n );\n this.gridApi.setFilterModel(storedFilterModel);\n }\n}\n","
\n
\n \n \n\n
\n
\n","import { formatDate } from '@angular/common';\nimport { EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { Component, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FACESHEET_SCHEDULE_GRID_KEY, GridFilterService } from '@shared/components/grid/grid-filter.service';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { RouterLinkRendererComponent } from '@shared/components/grid/router-link-renderer/router-link-renderer.component';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { environment } from 'src/environments/environment';\nimport { HccFacesheetSchedule } from '../hcc-facesheet-schedule';\nimport { HccFacesheetScheduleService } from '../hcc-facesheet-schedule.service';\nimport { FilterToggleService } from '@shared/services/filter-toggle/filter-toggle.service';\nimport { compareString, compareRiskCategory } from \"@shared/components/grid/grid-functions\"\nimport { AgGridLocalSettingsService } from '@shared/services/ag-grid/ag-grid.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { CarePatientItem, PresetCategory } from '@shared/models/module-constants';\nimport { ColumnApi, FilterChangedEvent, GridApi } from 'ag-grid-community';\n\n@Component({\n selector: 'coach-facesheet-schedule-grid',\n templateUrl: './facesheet-schedule-grid.component.html',\n styleUrls: ['./facesheet-schedule-grid.component.scss'],\n providers: [MaskPipe]\n})\n\nexport class FacesheetScheduleGridComponent extends PersistentGridFilters implements OnInit {\n columnDefs = [\n { headerName: 'Status', field: 'status', sortable: true, filter: true, minWidth: 125, width: 125, checkboxSelection: true, headerCheckboxSelection: true, resizable: true, suppressSizeToFit: true },\n { headerName: 'Appointment Date', field: 'appointmentDate', sortable: true, filter: true, minWidth: 150, width: 150, valueFormatter: params => formatDate(params.value, 'MM/dd/yyyy', this.locale), resizable: true, suppressSizeToFit: true },\n { headerName: 'Appointment Time', field: 'appointmentTime', sortable: true, filter: true, minWidth: 150, width: 150, valueFormatter: params => formatDate(params.value, 'h:mm a', this.locale), resizable: true, suppressSizeToFit: true },\n {\n headerName: 'Clinician', field: 'clinicianName', sortable: true, filter: true, resizable: true, suppressSizeToFit: true, filterParams: {\n showTooltips: true,\n }\n },\n {\n headerName: 'Patient Name', field: 'patientName', sortable: true, filter: true, resizable: true, suppressSizeToFit: true,\n cellRendererFramework: RouterLinkRendererComponent,\n cellRendererParams: {\n linkClicked: (data: HccFacesheetSchedule): void => {\n this.setSelectedPatientId.emit(data.chPatId.toString())\n },\n isDisabled: (data: HccFacesheetSchedule): boolean => {\n return data == null || !data.isAvailable;\n }\n },\n filterParams: {\n showTooltips: true,\n }\n },\n { headerName: 'Patient ID', field: 'patientId', sortable: true, filter: true, resizable: true, suppressSizeToFit: true },\n { headerName: 'Date of Birth', field: 'dob', sortable: true, filter: true, minWidth: 125, width: 125, valueFormatter: params => formatDate(params.value, 'MM/dd/yyyy', this.locale), resizable: true, suppressSizeToFit: true },\n {\n headerName: 'MBI', field: 'mbi', sortable: true, filter: true, resizable: true, suppressSizeToFit: true, valueFormatter: params => {\n const patient: HccFacesheetSchedule = params.data;\n\n if (patient == null) {\n return null;\n }\n else if (environment.maskSensitiveData) {\n return this.mask.transform(patient.mbi, 6);\n }\n else {\n return patient.mbi;\n }\n }, keyCreator: params => {\n if (environment.maskSensitiveData) {\n return this.mask.transform(params.value, 6);\n }\n else {\n return params.value;\n }\n },\n cellRenderer: params => {\n return `${params.value}`;\n }\n },\n { headerName: 'Assignment', field: 'assignment', filter: true, minWidth: 140, sortable: true },\n {\n headerName: 'Attributed Provider',\n field: 'attributedCP',\n minWidth: 200,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n filterParams: {\n showTooltips: true,\n }\n },\n {\n headerName: 'Appointment Info', field: 'appointmentInfo', sortable: true, filter: true, resizable: true, suppressSizeToFit: true, filterParams: {\n showTooltips: true,\n }\n },\n { headerName: 'Location ID', field: 'locationId', sortable: true, filter: true, resizable: true, suppressSizeToFit: true },\n // { headerName: 'Current Risk Category', field: 'currentRiskLevel', filter:true, minWidth: 185, sortable: true, comparator: compareRiskCategory },\n { headerName: 'Predicted Risk Category', field: 'predictedRiskLevel', filter: true, minWidth: 190, sortable: true, comparator: compareRiskCategory },\n // { headerName: 'Probability Risk Category', field: 'probability', filter:true, minWidth: 205, sortable: true },\n //{ headerName: 'Risk Trend', field: 'riskTrend', filter:true, minWidth: 120, sortable: true, cellRendererFramework: LinkCellRendererComponent,\n // comparator: compareRiskTrend },\n ];\n @Input() patientDataByChPatId: any[]\n @Input() localeText: { [key: string]: string };\n @Output() public selectedPatients: EventEmitter = new EventEmitter();\n @Output() public secondaryColumnApiEmitter: EventEmitter = new EventEmitter() // sends columnApi to care-patients where it's used in columnsSettingsModal to hide/display columns;\n @Output() public agFilterChangedEmitter: EventEmitter = new EventEmitter() // sends gridApi instance to care-patients when filter is applied;\n @Output() public setSelectedPatientId: EventEmitter = new EventEmitter() \n \n rowData: any;\n\n user: wpapi.model.Professional;\n \n loadingStatus: boolean = false;\n constructor(@Inject(LOCALE_ID) private locale: string,\n private hccFacesheetScheduleService: HccFacesheetScheduleService,\n private mask: MaskPipe, private router: Router,\n private route: ActivatedRoute,\n protected filterService: GridFilterService,\n public filterToggleService: FilterToggleService,\n private agGridLocalSettingsService: AgGridLocalSettingsService,\n private authService: AuthService) {\n\n super(filterService, FACESHEET_SCHEDULE_GRID_KEY);\n if (!environment.displayRiskLevel) {\n this.columnDefs.splice(this.columnDefs.length - 1, 1); // CHANGE TO ADD ADDITIONAL RISK COLUMNS splice(this.columnDefs.length -4 , 4);\n this.columnDefs = this.columnDefs.filter(col => col.field != 'predictedRiskLevel');\n\n }\n }\n\n ngOnInit(): void { }\n\n /**\n * \n * @param from From date\n * @param to To date\n * @param communityId Community on which to filter\n * @param practiceId Practice on which to filter\n * @param providerNpi Provider NPI on which to filter\n * @param isFirstFilter Indicates whether or not this is the initial load of the grid data\n */\n filter(from: string, to: string, communityId: string, practiceId: string, providerNpi: string, isFirstFilter: boolean,tier3Id: string): void {\n this.loadingStatus = true;\n this.skipUpdate = true;\n this.rowData = this.hccFacesheetScheduleService.getSchedules(from, to, communityId, practiceId, providerNpi,tier3Id);\n const component = this;\n this.rowData.subscribe((data) => {\n this.loadingStatus = false;\n setTimeout(() => {\n const filterInstance = component.gridApi.getFilterInstance('status');\n if (isFirstFilter) {\n filterInstance.setModel({\n type: 'set',\n values: ['Available'],\n });\n } else if (this.hasFilterModel()) {\n this.restoreFilterModel(this.gridApi);\n }\n\n component.gridApi.selectAll();\n component.gridApi.sizeColumnsToFit();\n component.gridApi.onFilterChanged();\n });\n });\n }\n\n isRowSelectable(rowNode: any): boolean {\n const scheduleItem: HccFacesheetSchedule = rowNode.data;\n return scheduleItem != null ? scheduleItem.isAvailable : false;\n }\n\n getSelectedItems(): HccFacesheetSchedule[] {\n const nodes: HccFacesheetSchedule[] = [];\n\n this.gridApi?.forEachNodeAfterFilter(node => {\n if (node.isSelected()) {\n nodes.push(node.data);\n }\n });\n\n return nodes;\n }\n\n \n public clear(){ \n this.gridApi.setFilterModel(null);\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n params.api.sizeColumnsToFit();\n\n this.gridColumnApi.getColumn('appointmentTime').setSort('asc');\n this.setLocalColumnSettings();\n this.secondaryColumnApiEmitter.emit(this.gridColumnApi);\n this.getAndApplyFilterModel()\n }\n\n onFirstDataRendered(params: any): void {\n if (this.hasFilterModel()) {\n this.restoreFilterModel(params.api);\n }\n\n const filterInstance = params.api.getFilterInstance('status');\n filterInstance.setModel({\n filterType: 'set',\n values: ['Available'],\n });\n this.gridApi.onFilterChanged();\n\n params.api.sizeColumnsToFit();\n }\n\n public onSelectionChanged(event: any): void {\n const nodes: any[] = this.gridApi.getSelectedNodes();\n const patients = [];\n nodes.forEach(p => {\n const patient = p.data;\n const parts = patient.patientName.split(' ');\n if (parts.length > 0) {\n patient.lastName = parts.pop();\n patient.firstName = parts.join(' ');\n }\n patient.careId = this.patientDataByChPatId?.[patient.chPatId]?.careId;\n patients.push(patient);\n });\n this.selectedPatients.emit(patients);\n }\n onColumnUpdated(): void {\n this.agGridLocalSettingsService.storeColumnSettingsInLocalStorage(CarePatientItem.FacesheetSchedule, this.gridColumnApi.getColumnState(), null);\n }\n\n async setLocalColumnSettings(): Promise {\n if (!this.user) {\n this.user = await this.authService.getWellpepperUserInfo();\n }\n this.agGridLocalSettingsService.setColumnSettings(this.gridColumnApi, CarePatientItem.FacesheetSchedule, this.user._id, null , null);\n }\n\n agFilterChanged(event: FilterChangedEvent): void {\n this.agFilterChangedEmitter.emit(this.gridApi);\n if(event?.afterDataChange != null){ \n this.storeFilterModel(); \n }\n }\n storeFilterModel(): void { \n this.agGridLocalSettingsService.storeFilterModelInLocalStorage(PresetCategory.Facesheet, CarePatientItem.FacesheetSchedule, this.gridApi.getFilterModel());\n }\n async getAndApplyFilterModel() {\n let storedFilterModel = await this.agGridLocalSettingsService.getStoredFilterModelFromLocalStorage(PresetCategory.Facesheet, CarePatientItem.FacesheetSchedule)\n this.gridApi.setFilterModel(storedFilterModel)\n }\n onRowDataChanged(): void {\n this.getAndApplyFilterModel();\n }\n}\n\n","\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FACESHEET_SCHEDULE_GRID_KEY, GridFilterService } from '@shared/components/grid/grid-filter.service';\nimport { FacesheetScheduleGridComponent } from '../facesheet-schedule-grid/facesheet-schedule-grid.component';\nimport { HccFacesheetScheduleItem } from '../hcc-facesheet-schedule-item';\nimport { HccFacesheetScheduleService } from '../hcc-facesheet-schedule.service';\nimport { printPdf } from '@shared/utilities';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { CareComponentConstants, TrackFeatureConstants } from '@shared/models/module-constants';\nimport { ColumnApi, GridApi } from 'ag-grid-community';\n@Component({\n selector: 'coach-facesheet-schedule',\n templateUrl: './facesheet-schedule.component.html',\n styleUrls: ['./facesheet-schedule.component.scss']\n})\nexport class FacesheetScheduleComponent extends KillSubscriptions implements OnInit {\n\n communitiesLoading: boolean;\n practicesLoading: boolean;\n acosLoading: boolean;\n hasData: boolean;\n\n @ViewChild(FacesheetScheduleGridComponent) facesheetGrid: FacesheetScheduleGridComponent;\n @Input() patientDataByChPatId: any[]\n @Input() fcButtonsStatus: {fcPdfLoading: boolean, fcPrintLoading: boolean}\n @Input() localeText: {[key: string]: string};\n @Output() public selectedPatients: EventEmitter = new EventEmitter(); \n @Output() public secondaryColumnApiEmitter: EventEmitter = new EventEmitter() // sends columnApi to care-patients where it's used in columnsSettingsModal to hide/display columns;\n @Output() public agFilterChangedEmitter: EventEmitter = new EventEmitter() // sends gridApi instance to care-patients when filter is applied;\n @Output() public setSelectedPatientId: EventEmitter = new EventEmitter();\n\n constructor(public hccFacesheetScheduleService: HccFacesheetScheduleService, \n protected gridFilterService: GridFilterService,\n private hierarchyTierService: HierarchyTierService,\n private featureFlagService: FeatureFlagService) { \n super();\n }\n\n ngOnInit(): void {\n this.hccFacesheetScheduleService.loadSchedules$.pipe(takeUntil(this.killTrigger)).subscribe(() => {\n this.loadSchedules(false);\n });\n }\n\n ngAfterViewInit(): void {\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger)).subscribe(tier => {\n if (tier != null) {\n this.loadSchedules(true);\n }\n });\n }\n \n clear(): void {\n this.facesheetGrid.clear(); \n }\n\n filter(isFirstFilter: boolean): void {\n const community = this.hierarchyTierService.currentTier$.value?.selectedItem.tier2_ID;\n const practice = this.hierarchyTierService.currentTier$.value?.selectedItem.tier4_ID;\n const tier3Id = this.hierarchyTierService.currentTier$.value?.selectedItem.tier3_ID;\n const fromDate = this.hccFacesheetScheduleService.fromDate.value;\n const toDate = this.hccFacesheetScheduleService.toDate.value;\n\n this.facesheetGrid?.filter(fromDate, toDate, community, practice, null, isFirstFilter,tier3Id);\n }\n\n loadSchedules(isFirstFilter: boolean): void {\n if (isFirstFilter) {\n this.gridFilterService.resetFilters(FACESHEET_SCHEDULE_GRID_KEY);\n }\n \n this.filter(isFirstFilter);\n this.facesheetGrid?.rowData.subscribe((rd) => {\n this.hasData = rd.length > 0 ? true : false;\n });\n }\n\n getSelectedItems(): HccFacesheetScheduleItem[] {\n const selectedItems = this.facesheetGrid?.getSelectedItems();\n if (selectedItems?.length === 0) {\n return;\n }\n\n return selectedItems.map(patient => {\n const item: HccFacesheetScheduleItem = { patientMbi: patient.currentMbi, facesheetScheduleID: patient.facesheetScheduleID, batchStageId: patient.batchStageId, chPatId: patient.chPatId };\n return item;\n });\n }\n\n print(expanded: boolean, tierNum: number, tierId: string): void {\n if (this.featureFlagService.hasFeatureFlag(TrackFeatureConstants.FacesheetExportAsyncFeatureFlag)) {\n this.startExport(false, expanded, tierNum, tierId);\n } else {\n this.printSynchronous(expanded);\n }\n }\n\n printSynchronous(expanded?: boolean): void {\n const selectedPatients = this.getSelectedItems();\n\n if (selectedPatients == null || selectedPatients.length === 0) {\n return;\n }\n\n this.fcButtonsStatus.fcPrintLoading = true;\n this.hccFacesheetScheduleService.printPdf(selectedPatients).subscribe(x => {\n printPdf(x, this.hierarchyTierService.currentTier$.value?.selectedItem.tierName);\n\n this.fcButtonsStatus.fcPrintLoading = false;\n }, () => {\n this.fcButtonsStatus.fcPrintLoading = false;\n });\n }\n\n export(expanded: boolean, tierNum: number, tierId: string): void {\n if (this.featureFlagService.hasFeatureFlag(TrackFeatureConstants.FacesheetExportAsyncFeatureFlag)) {\n this.startExport(true, expanded, tierNum, tierId);\n } else {\n this.exportSynchronous(expanded);\n }\n }\n\n exportSynchronous(expanded?: boolean): void {\n const selectedPatients = this.getSelectedItems();\n if (selectedPatients == null || selectedPatients.length === 0) {\n return;\n }\n\n this.fcButtonsStatus.fcPdfLoading = true\n this.hccFacesheetScheduleService.exportPdfs(selectedPatients).subscribe(x => {\n const url = window.URL.createObjectURL(new Blob([x as BlobPart], { type: 'application/zip' }));\n\n const link = document.createElement('a');\n document.body.appendChild(link);\n link.setAttribute('style', 'display: none');\n link.href = url;\n link.download = this.hierarchyTierService.currentTier$.value?.selectedItem.tierName + '.zip';\n link.click();\n this.fcButtonsStatus.fcPdfLoading = false;\n }, () => {\n this.fcButtonsStatus.fcPdfLoading = false;\n });\n }\n\n\n private startExport(exportToZip: boolean, expanded: boolean, tierNum: number, tierId: string): void {\n const selectedPatients = this.getSelectedItems();\n if (selectedPatients == null || selectedPatients.length === 0) {\n return;\n }\n\n const batchStageId = selectedPatients[0].batchStageId;\n this.hccFacesheetScheduleService.bulkExportPrint(exportToZip, selectedPatients, CareComponentConstants.HccFacesheetBySchedule, batchStageId.toString(), batchStageId, expanded, tierNum, tierId);\n }\n\n public externalPatientSelected(patients: []): void {\n this.selectedPatients.emit(patients);\n }\n externalSecondaryColumnApiEmitter(columnApi: ColumnApi): void {\n this.secondaryColumnApiEmitter.emit(columnApi)\n }\n externalAgFilterChangedEmitterEmitter(gridApi: GridApi): void {\n this.agFilterChangedEmitter.emit(gridApi)\n }\n emitSelectedPatientId(id: string): void{\n this.setSelectedPatientId.emit(id)\n }\n}\n\n","
\n
\n \n
\n
","import { IPatientSubtab } from '@shared/models/patient-subtab';\n\nexport const PatientSubtabsPrimaryWithPatientEngagement: IPatientSubtab[] = [\n {\n label: 'Plan',\n queryParam: {\n primarySubtab: 'plan',\n },\n forAllPatients: false\n },\n {\n label: 'Facesheet',\n queryParam: {\n primarySubtab: 'care-gaps',\n },\n forAllPatients: true\n },\n {\n label: 'SMS Programs',\n queryParam: {\n primarySubtab: 'sms-programs',\n },\n forAllPatients: false\n },\n {\n label: 'Timeline',\n queryParam: {\n primarySubtab: 'timeline',\n },\n forAllPatients: true\n },\n {\n label: 'Surveys',\n queryParam: {\n primarySubtab: 'surveys',\n },\n forAllPatients: false\n },\n {\n label: 'Reminders',\n queryParam: {\n primarySubtab: 'reminders',\n },\n forAllPatients: false\n },\n {\n label: 'Worklist Details',\n queryParam: {\n primarySubtab: 'worklist-details',\n },\n forAllPatients: true\n }\n]\nexport const PatientSubtabsPrimaryCarePatientOnly: IPatientSubtab[] = [\n {\n label: 'Plan',\n queryParam: {\n primarySubtab: 'plan',\n },\n forAllPatients: false\n },\n {\n label: 'SMS Programs',\n queryParam: {\n primarySubtab: 'sms-programs',\n },\n forAllPatients: false\n },\n {\n label: 'Surveys',\n queryParam: {\n primarySubtab: 'surveys',\n },\n forAllPatients: false\n },\n {\n label: 'Reminders',\n queryParam: {\n primarySubtab: 'reminders',\n },\n forAllPatients: false\n },\n {\n label: 'Worklist Details',\n queryParam: {\n primarySubtab: 'worklist-details',\n },\n forAllPatients: true\n }\n]\nexport const PatientSubtabsPrimaryWithoutPatientEngagement: IPatientSubtab[] = [\n {\n label: 'Facesheet',\n queryParam: {\n primarySubtab: 'care-gaps',\n },\n forAllPatients: true\n },\n {\n label: 'Timeline',\n queryParam: {\n primarySubtab: 'timeline',\n },\n forAllPatients: true\n },\n {\n label: 'Worklist Details',\n queryParam: {\n primarySubtab: 'worklist-details',\n },\n forAllPatients: true\n }\n]\n\nexport const PatientSubtabsSecondary: IPatientSubtab[] = [\n {\n label: 'Alerts',\n queryParam: {\n secondarySubtab: 'alerts',\n },\n icon: 'alert',\n forAllPatients: false\n },\n {\n label: 'Activity',\n queryParam: {\n secondarySubtab: 'activity',\n },\n icon: 'history',\n forAllPatients: false\n },\n]\nexport const defaultInputLength = {\n comment: 200,\n message: 2000,\n} \nexport const timeTrackingInputLength = {\n comment: 5000,\n message: 2000,\n} \nexport const alertInputLength = {\n comment: 5000,\n message: 2000,\n} \n\n\n\n\n","export enum PatientEngagement {\n PatientApp = 9,\n PatientTwilioSMS = 49,\n}\n\nexport const PatientEngagementComponentIds = [PatientEngagement.PatientApp, PatientEngagement.PatientTwilioSMS];","
\n \n \n \n \n \n
","import { Component } from '@angular/core';\n@Component({\n templateUrl: 'riskTrend.html'\n})\nexport class RiskTrendColumnRendererComponent {\n riskTrend: string;\n agInit(params): void {\n this.riskTrend = params.data?.riskTrend;\n }\n}\n","\n","import { Component } from '@angular/core';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\n@Component({\n templateUrl: 'actions.html'\n})\nexport class ActionsColumnRendererComponent {\n link: string;\n alertsCount: number;\n id: string;\n tier: IHierarchyTier;\n withoutFacesheet:boolean;\n agInit(params): void {\n this.id = params.value.id;\n this.tier = params.value.tier;\n this.link = `/${this.tier?.abbreviation}/${this.tier?.selectedTierId}/care/patient/${this.id}`;\n this.alertsCount = params.value.alertsCount || 0;\n }\n}\n","
\n
\n
\n \n \n
\n
\n
\n\n
\n \n \n
\n
\n
","import { Component } from '@angular/core';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { fileStatus, PatientIHEFileInfo } from '@shared/models/patient-ihe-data';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { GridApi } from 'ag-grid-community/main';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { PatientViewModel } from '@shared/models/patient';\n\n@Component({\n templateUrl: 'iheFiles.html'\n})\nexport class IheFilesColumnRendererComponent {\n downloadStatus: { [key: string]: 'not downloaded' | 'downloading' | 'downloaded' } = {\n summary: 'not downloaded',\n CMR: 'not downloaded'\n }\n tierId: string;\n tierNum: number;\n chPatId: string;\n files: Array = [];\n splittedFiles: { [key: string]: PatientIHEFileInfo[] } = {\n CMR: [], // Case Management Referral\n summary: [] // Assessment, PPP, PCP Summary\n };\n CMRFileIds: string[] = [];\n summaryFileIds: string[] = [];\n fullName: string = '';\n user: wpapi.model.Professional;\n gridApi: GridApi = null;\n testObj: any;\n patientData: PatientViewModel;\n emitUpdatingPatientByIdInList: any;\n\n constructor(private PatientService: PatientService, private authService: AuthService) {\n this.getCurrentUserInfo();\n }\n agInit(params): void {\n this.patientData = params.data;\n this.files = params.data.trackPatient?.fileInfo;\n this.files.forEach(file => {\n if (file.fileType == 'Casemgmt') {\n this.splittedFiles.CMR.push(file);\n this.CMRFileIds.push(file.fileId)\n } else {\n this.splittedFiles.summary.push(file);\n this.summaryFileIds.push(file.fileId)\n }\n })\n this.tierId = params.getTierId();\n this.tierNum = params.getTierNum();\n this.gridApi = params.getGridApi();\n this.chPatId = params.data.chPatId;\n this.fullName = params.data.fullName;\n this.emitUpdatingPatientByIdInList = params.updatePatientByIdInList;\n if (params.data.IHEAssessmentFilesLastDownloaded || this.splittedFiles.summary.filter(f => f.fileDownloadStatus == 'Downloaded').length == this.splittedFiles.summary.length) {\n this.downloadStatus.summary = 'downloaded';\n }\n if (params.data.IHECMRFileLastDownloaded || this.splittedFiles.CMR.filter(f => f.fileDownloadStatus == 'Downloaded').length == this.splittedFiles.CMR.length) {\n this.downloadStatus.CMR = 'downloaded';\n }\n }\n async downloadFile(fileIds: string[], listName: string) {\n this.downloadStatus[listName] = 'downloading';\n let tempDownloadStatus: { [key: string]: fileStatus } = {}\n\n for (let id in fileIds) {\n let file = this.files.find(file => file.fileId == fileIds[id]);\n if (file) {\n tempDownloadStatus[file.fileId] = _.clone(file.fileDownloadStatus);\n file.fileDownloadStatus = \"Downloading\";\n }\n }\n try {\n await this.PatientService.downloadIHEFile(fileIds, this.chPatId, this.tierId, this.tierNum, listName == 'summary' ? `Assessment_Files_${this.patientData.firstName}_${this.patientData.lastName}` : `CMR_${this.patientData.firstName}_${this.patientData.lastName}`);\n for (let id in fileIds) {\n let file = this.files.find(file => file.fileId == fileIds[id]);\n if (file) {\n tempDownloadStatus[file.fileId] = _.clone(file.fileDownloadStatus);\n file.fileDownloadStatus = \"Downloaded\";\n this.updateFileDownloadHistoryInfo(file);\n }\n }\n this.patientData.IHEDownloadDate = moment.utc().toDate();\n\n let fileInfoDatesResult = PatientViewModel.getLatestFileInfoDates(this.files);\n PatientViewModel.assignLatestFileInfoDates(this.patientData, fileInfoDatesResult)\n this.gridApi.refreshCells();\n this.emitUpdatingPatientByIdInList(this.patientData)\n } catch (error) {\n this.downloadStatus[listName] = 'not downloaded';\n console.error(error);\n for (let id in fileIds) {\n let file = this.files.find(file => file.fileId == fileIds[id]);\n if (file) {\n file.fileDownloadStatus = tempDownloadStatus[file.fileId];\n }\n }\n }\n this.downloadStatus[listName] = 'downloaded';\n }\n getIconName(listStatus: string): string {\n switch (listStatus) {\n case 'downloaded':\n return 'check-circle-2';\n case 'not downloaded':\n return 'arrow-down-circle-filled';\n case 'downloading':\n return 'check-circle-2';\n }\n }\n updateFileDownloadHistoryInfo(file: PatientIHEFileInfo): void {\n if (file.downloadInfo.current) {\n if (!file.downloadInfo.history) {\n file.downloadInfo.history = []\n }\n file.downloadInfo.history.push(file.downloadInfo.current)\n }\n file.downloadInfo.current = {\n downloadedAtUtc: moment.utc().toString(),\n downloadedByName: this.user.firstName + \" \" + this.user.lastName,\n downloadedByUserId: null\n };\n }\n async getCurrentUserInfo() {\n this.user = await this.authService.getWellpepperUserInfo()\n }\n}\n\n","\nimport {\n compareString,\n compareStringPlain,\n compareNumber,\n compareRiskTrend,\n compareRiskCategory,\n currencyCellRenderer,\n convertDateAndCompare,\n compareActions\n} from '@shared/components/grid/grid-functions';\nimport { getDisplayStringForAWVWorklistStatusEnum, PatientViewModel } from '@shared/models/patient';\nimport moment from 'moment';\nimport { formatDate } from '@angular/common';\nimport {\n dateFormat\n} from '@shared/services/ag-grid/ag-grid.service';\n\nimport { RiskTrendColumnRendererComponent } from './customColumns/riskTrend';\nimport { ActionsColumnRendererComponent } from './customColumns/actions';\nimport { IheFilesColumnRendererComponent } from './customColumns/iheFiles';\n\n\nimport { IColumnOptions } from '@shared/models/forms/form-admin-model';\nimport { ColDef } from 'ag-grid-community';\n\nexport function getColumnDefinitions(exportParams: IColumnOptions): ColDef[] {\n return [{\n headerName: '',\n field: 'select',\n minWidth: 25,\n maxWidth: 25,\n headerCheckboxSelection: true,\n checkboxSelection: true,\n cellClass: 'cell-patient-navigation'\n },\n {\n headerName: 'Name',\n headerTooltip: 'Patient Name',\n field: 'fullName',\n minWidth: 250,\n cellClass: 'cell-patient-navigation',\n comparator: compareString,\n sortable: true,\n filter: 'agSetColumnFilter',\n filterParams: {\n showTooltips: true,\n },\n cellStyle: params => {\n if (params.data?.withoutFacesheet){\n return {color : 'black', cursor: 'not-allowed'}\n }\n }\n },\n {\n headerName: 'Name',\n headerTooltip: 'Patient Name',\n field: 'patientName',\n minWidth: 250,\n cellClass: 'cell-patient-navigation',\n comparator: compareString,\n sortable: true,\n filter: 'agSetColumnFilter',\n filterParams: {\n showTooltips: true,\n },\n cellStyle: params => {\n if (params.data?.withoutFacesheet){\n return {color : 'black', cursor: 'not-allowed'}\n }\n }\n },\n {\n headerName: 'BP',\n field: 'bp',\n minWidth: 80,\n sortable: true,\n cellClass: 'u-color--brand--3',\n comparator: (_a: PatientViewModel, _b: PatientViewModel) => {\n const a = _a.systolic;\n const b = _b.systolic;\n if (a == b) {\n return 0;\n }\n if (!a) {\n return -1;\n }\n if (!b) {\n return 1;\n }\n return b - a;\n },\n },\n {\n headerName: 'Pulse',\n field: 'pulse',\n minWidth: 75,\n sortable: true,\n },\n {\n headerName: 'Sugar',\n field: 'bloodSugar',\n minWidth: 75,\n sortable: true,\n cellClass: 'u-color--brand--3',\n },\n {\n headerName: 'Weight',\n field: 'weight',\n minWidth: 75,\n sortable: true,\n cellClass: 'u-color--brand--3',\n },\n {\n headerName: 'Gain',\n field: 'gain',\n minWidth: 120,\n sortable: true,\n cellClass: 'u-color--brand--3',\n },\n {\n headerName: 'DOB (Age)',\n headerTooltip: 'Date of birth',\n field: 'dob_age',\n minWidth: 140,\n sortable: true,\n // REVIEW - replace use of \"any\" - see all cell renderers - can also factor out the function so it can be tested\n cellRenderer: (data: any): string => {\n const patient: PatientViewModel = data.data;\n const dobMoment = moment(patient?.dob);\n const dobString = dobMoment.isValid() ? dobMoment.format('L') : '-';\n const age = patient?.age;\n return `${dobString} ${age ? age + 'y' : ''\n }`;\n },\n comparator: (a, b, nodeA, nodeB, isInverted) => {\n return compareNumber(a?.age, b?.age, nodeA, nodeB, isInverted);\n },\n },\n {\n headerName: 'DOB (Age)',\n headerTooltip: 'Date of birth',\n field: 'dob',\n sortable: true,\n suppressSizeToFit: true,\n filter: false,\n valueGetter: (data: any): string => {\n return data?.data?.dob && moment(data.data.dob).isValid()\n ? `${formatDate(data.data.dob, dateFormat, exportParams.locale)}`\n : null;\n },\n cellRenderer: (data: any): string => {\n if (data?.data?.dob && moment(data.data.dob).isValid()) {\n const date = formatDate(\n new Date(data.data.dob),\n dateFormat,\n exportParams.locale\n );\n return `${date} ${data.data.age}y`;\n } else {\n return null;\n }\n },\n },\n {\n headerName: 'Date of death',\n headerTooltip: 'Displays the patient’s date of death.',\n field: 'dodBoolean',\n sortable: true,\n filter: 'agSetColumnFilter',\n suppressSizeToFit: true,\n valueGetter: (data: any): string => {\n return data?.data?.dodBoolean;\n },\n cellRenderer: (data: any): string => {\n if (data?.data?.dod && moment(data.data.dod).isValid()) {\n return formatDate(new Date(data.data.dod), dateFormat, exportParams.locale);\n } else {\n return null;\n }\n },\n },\n {\n headerName: 'Gender',\n headerTooltip: 'Gender',\n field: 'gender',\n minWidth: 80,\n sortable: true,\n cellRenderer: (data): string => {\n if (data.value === 'M') {\n return 'Male';\n } else if (data.value === 'F') {\n return 'Female';\n } else {\n return data.value;\n }\n },\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'Patient Id',\n field: 'patientId', //shown by AWV Only\n minWidth: 130,\n maxWidth: 140,\n },\n {\n headerName: 'MBI',\n headerTooltip: 'Medicare Beneficiary Identifier',\n field: 'current_MBI', // used by cohorts\n minWidth: 130,\n maxWidth: 140,\n suppressSizeToFit: true,\n cellRenderer: params => {\n return `${exportParams.mask.transform(params.value, 6)}`;\n }\n },\n {\n headerName: 'MBI',\n headerTooltip: 'Medicare Beneficiary Identifier',\n field: 'mbi',\n minWidth: 130,\n maxWidth: 140,\n suppressSizeToFit: true,\n cellRenderer: params => {\n return `${exportParams.mask.transform(params.value, 6)}`;\n }\n },\n {\n headerName: 'Phone',\n field: 'phoneNumber',\n minWidth: 150,\n sortable: true,\n comparator: compareStringPlain,\n },\n {\n headerName: 'Phone 1',\n field: 'phone1',\n minWidth: 150,\n sortable: true,\n comparator: compareStringPlain,\n },\n {\n headerName: 'Phone 2',\n field: 'phone2',\n minWidth: 150,\n sortable: true,\n comparator: compareStringPlain,\n },\n {\n headerName: 'Care Coordinator',\n headerTooltip: 'Displays the name of the care coordinator assigned to monitor the patient in Wellpepper.',\n field: 'professionalName',\n minWidth: 200,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n filterParams: {\n showTooltips: true,\n },\n },\n {\n headerName: 'Assignment',\n headerTooltip: 'Displays the patient assignment status',\n field: 'assignment',\n minWidth: 140,\n sortable: true,\n comparator: compareString,\n filter: true,\n },\n {\n headerName: 'Attributed Provider',\n headerTooltip: 'Displays the name of the provider that the beneficiary is attributed/assignable to. For RHC/FQHCs, the name of the practice is displayed as the beneficiaries cannot be attributed or assigned below the practice level.',\n field: 'attributedCP',\n minWidth: 200,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n filterParams: {\n showTooltips: true,\n },\n },\n {\n headerName: 'Attributed Practice',\n headerTooltip: 'Displays the name of the practice that the beneficiary is attributed/assignable based on plurality of claims',\n field: 'attributedPractice',\n minWidth: 200,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n filterParams: {\n showTooltips: true,\n },\n },\n {\n headerName: 'Last Provider Visit',\n headerTooltip: 'Displays the date of the most recent provider visit within that practice.',\n field: 'lastVisit',\n sortable: true,\n suppressSizeToFit: true,\n filter: 'agDateColumnFilter',\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${formatDate(date, dateFormat, exportParams.locale)}`;\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n },\n {\n headerName: 'CPT Code',\n headerTooltip: 'Displays the CPT code to be billed',\n field: 'cptCode',\n suppressSizeToFit: true,\n resizable: true,\n filterParams: {},\n },\n {\n headerName: 'Claim Frequency Code',\n headerTooltip: 'Displays the Claim Frequency Code for the In-Home Annual Wellness Visit claim.',\n field: 'claimFrequencyCode',\n sortable: true,\n comparator: compareString,\n suppressSizeToFit: true,\n resizable: true,\n filterParams: {},\n },\n {\n headerName: 'In-Home AWV Status',\n headerTooltip: 'Displays the patient\\'s IH-AWV scheduling status.',\n field: 'ihAwvPatient',\n sortable: true,\n comparator: compareString,\n suppressSizeToFit: true,\n resizable: true,\n filter: 'agSetColumnFilter',\n filterParams: {\n showTooltips: true,\n },\n },\n {\n headerName: 'Visit Date',\n headerTooltip: 'Displays the date the patient\\'s In-Home Annual Wellness was completed',\n field: 'IHEAWVVisitDate',\n sortable: true,\n suppressSizeToFit: true,\n filter: 'agDateColumnFilter',\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${formatDate(date, dateFormat, exportParams.locale)}`;\n }\n return '';\n },\n filterParams: {\n filterOptions: ['inRange'],\n inRangeInclusive: true,\n comparator: convertDateAndCompare,\n }\n },\n {\n headerName: 'Batch Date',\n headerTooltip: 'Displays the date the billing output was available for download',\n field: 'IHEAWVBatchDate',\n sortable: true,\n suppressSizeToFit: true,\n filter: false,\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${formatDate(date, dateFormat, exportParams.locale)}`;\n }\n return '';\n },\n },\n {\n headerName: 'Files',\n headerTooltip: 'Displays all files available from the patient’s In-Home Annual Wellness Visit - Assessment, Personal Prevention Plan, Primary Care Provider Summary, and Case Management Referral.',\n field: 'IHEfileActions',\n sortable: true,\n suppressSizeToFit: true,\n filter: false,\n cellRendererFramework: IheFilesColumnRendererComponent,\n cellRendererParams: { ...exportParams.agGridCellRendererParams }\n },\n {\n headerName: 'Download Status',\n headerTooltip: 'Displays the download state of available files - New, Partial or Done',\n field: 'IHEDownloadStatus',\n sortable: true,\n suppressSizeToFit: true,\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'Last Download Date',\n headerTooltip: 'Displays the date the last file was downloaded',\n field: 'IHEDownloadDate',\n sortable: true,\n suppressSizeToFit: true,\n filter: false,\n cellRenderer: (data): string => {\n return data.value\n ? formatDate(data.value, 'MMM d, y, h:mm:ss a', exportParams.locale)\n : '';\n },\n },\n {\n headerName: 'Last Activity',\n headerTooltip: 'Displays the date the patient last logged into Wellpepper.',\n field: 'lastActivityAt',\n minWidth: 100,\n cellRenderer: (data): string => {\n return data.value\n ? formatDate(data.value, dateFormat, 'en_US')\n : '';\n },\n sortable: true,\n comparator: compareString,\n suppressSizeToFit: true,\n },\n {\n headerName: 'Alerts',\n headerTooltip: 'Displays whether or not a patient has an outstanding alert or message that needs attention from the Care Team.',\n field: 'actions',\n suppressSizeToFit: true,\n comparator: compareActions,\n sortable: true,\n cellRendererFramework: ActionsColumnRendererComponent,\n },\n {\n headerName: 'Previous Year Chronic Condition Weight Closed',\n headerTooltip: 'Displays beneficiary\\'s Closed Chronic Conditions for the previous calendar year.',\n field: 'pyRaf',\n suppressSizeToFit: true,\n sortable: true,\n comparator: compareNumber,\n filter: 'agSetColumnFilter',\n valueGetter(data: any): number | string {\n return data.data.pyRaf?.length > 0 ? data.data.pyRaf : 'N/A';\n },\n },\n {\n headerName: 'Chronic Condition Weight Closed YTD',\n headerTooltip: 'Displays beneficiary\\'s Closed Chronic Conditions for the current calendar year.',\n field: 'raF_YTD',\n minWidth: 30,\n maxWidth: 400,\n suppressSizeToFit: true,\n sortable: true,\n comparator: compareNumber,\n filter: 'agSetColumnFilter',\n valueGetter(data: any): number | string {\n return data.data.raF_YTD?.length > 0 ? data.data.raF_YTD : 'N/A';\n },\n },\n {\n headerName: 'Total Gap Weight',\n headerTooltip: 'Displays the highest possible weight that can be coded if all open chronic Chronic Conditions gaps are closed',\n field: 'openRAFWt',\n minWidth: 150,\n maxWidth: 200,\n sortable: true,\n comparator: compareNumber,\n filter: 'agNumberColumnFilter',\n filterParams: {\n filterOptions: ['empty', 'inRange', 'lessThan', 'lessThanOrEqual', 'greaterThan', 'greaterThanOrEqual'],\n suppressAndOrCondition: true,\n inRangeInclusive: true,\n includeBlanksInLessThan: true\n },\n valueGetter(data: any): number | string {\n return data.data.openRAFWt;\n },\n valueFormatter(data: any): string {\n return data.value?.toFixed(3) || 'N/A';\n }\n },\n {\n headerName: 'AWV/IPPE',\n headerTooltip: 'Type of service the patient is next eligible for',\n field: 'awvTypeDue',\n suppressSizeToFit: true,\n minWidth: 30,\n maxWidth: 120,\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'Last Claims AWV/IPPE Date',\n headerTooltip: 'Displays the date of service for the last AWV or IPPE based on CMS claims data.',\n field: 'lastAWVDate',\n sortable: true,\n suppressSizeToFit: true,\n filter: 'agDateColumnFilter',\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${formatDate(date, dateFormat, exportParams.locale)}`;\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n },\n {\n headerName: 'Last Claims AWV/IPPE Date',\n headerTooltip: 'Displays the date of service for the last AWV or IPPE based on CMS claims data.',\n field: 'lastClaimAWVDate',\n sortable: true,\n suppressSizeToFit: true,\n filter: 'agDateColumnFilter',\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${formatDate(date, dateFormat, exportParams.locale)}`;\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n },\n {\n headerName: '',\n field: 'hasNotes',\n minWidth: 10,\n },\n {\n headerName: 'Current Risk Category',\n field: 'currentRiskLevel',\n filter: true,\n minWidth: 185,\n sortable: true,\n comparator: compareRiskCategory,\n },\n {\n headerName: 'Predicted Risk Category',\n headerTooltip: 'Displays beneficiary\\'s Predicted Risk Category (PRC). PRCs is a predictive model designed to identify patients who are likely to incur high levels of expenditures in the next 12 months.',\n field: 'predictedRiskLevel',\n filter: true,\n minWidth: 190,\n sortable: true,\n comparator: compareRiskCategory,\n },\n {\n headerName: 'Last Claims AWV/IPPE Provider',\n field: 'lastAWVProvider',\n headerTooltip: 'Displays the name of the provider who performed the last AWV or IPPE based on CMS claims data.',\n minWidth: 250,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n filterParams: {\n showTooltips: true,\n },\n },\n {\n headerName: 'Last Claims AWV/IPPE Provider',\n field: 'lastClaimAWVProvider',\n headerTooltip: 'Displays the name of the provider who performed the last AWV or IPPE based on CMS claims data',\n minWidth: 250,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n filterParams: {\n showTooltips: true,\n },\n },\n {\n headerName: 'Probability Risk Category',\n field: 'probability',\n filter: true,\n minWidth: 205,\n sortable: true,\n },\n {\n headerName: 'Risk Trend',\n field: 'riskTrend',\n filter: true,\n minWidth: 120,\n sortable: true,\n cellRendererFramework: RiskTrendColumnRendererComponent,\n comparator: compareRiskTrend,\n },\n {\n headerName: 'CCM Eligible',\n headerTooltip: 'Displays if the patient meets CCM eligibility due to 2+ diagnosis codes in an Chronic Conditions Category.',\n field: 'ccmEligible',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter'\n },\n {\n headerName: 'Last CCM Date',\n headerTooltip: 'The date for the last billed chronic care management visit',\n field: 'lastCcmDate',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agDateColumnFilter',\n resizable: true,\n cellRenderer: (params): string => {\n if (params.value) {\n return moment.utc(params.value).format(\"MM/DD/YYYY\")\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n },\n {\n headerName: 'Chronic Conditions',\n headerTooltip: 'Displays the name of each Caravan Chronic Condition the patient qualifies for.',\n field: 'diseaseCohorts',\n minWidth: 200,\n suppressSizeToFit: true,\n cellRenderer: (data): string => {\n return data?.value?.join(', ');\n },\n sortable: true,\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'Health Care Cost',\n headerTooltip: 'Displays a sum of the total paid amounts for claims within the previous 15 (12 + 3) months. The 3 additional months account for CMS claims lag.',\n field: 'totalCost',\n sortable: true,\n resizable: true,\n suppressSizeToFit: true,\n comparator: (\n valueA: number,\n valueB: number,\n nodeA,\n nodeB,\n isInverted\n ) => {\n return valueA - valueB;\n },\n cellRenderer: currencyCellRenderer,\n },\n {\n headerName: 'ED Utilization',\n headerTooltip: 'Number of visits to the Emergency Department in the last 15 (12+3) months.',\n field: 'edVisits',\n sortable: true,\n filter: true,\n resizable: true,\n suppressSizeToFit: true,\n comparator: (valueA: string, valueB: string) => {\n return Number(valueA) - Number(valueB);\n },\n },\n {\n headerName: 'Health Care Costs',\n headerTooltip: 'Displays a sum of the total paid amounts for claims within the previous 15 (12 + 3) months. The 3 additional months account for CMS claims lag. ',\n field: 'totalSpend',\n sortable: true,\n resizable: true,\n suppressSizeToFit: true,\n comparator: (\n valueA: number,\n valueB: number,\n nodeA,\n nodeB,\n isInverted\n ) => {\n return valueA - valueB;\n },\n cellRenderer: currencyCellRenderer,\n },\n {\n headerName: 'Appointment Time',\n field: 'appointmentTime',\n sortable: true,\n filter: true,\n minWidth: 150,\n width: 150,\n valueFormatter: (params) =>\n params?.value ? formatDate(params.value, 'h:mm a', exportParams.locale) : null,\n resizable: true,\n suppressSizeToFit: true,\n },\n {\n headerName: 'Status',\n field: 'status',\n sortable: true,\n filter: true,\n minWidth: 125,\n width: 125,\n resizable: true,\n suppressSizeToFit: true,\n headerTooltip: 'Displays if the patient is enrolled or unenrolled in the program',\n },\n {\n headerName: 'Last Download Date',\n field: 'IHEModifiedDate',\n headerTooltip: 'Displays the date the last file was downloaded',\n sortable: true,\n filter: true,\n minWidth: 125,\n width: 125,\n resizable: true,\n suppressSizeToFit: true,\n },\n {\n headerName: 'Appointment Date',\n field: 'appointmentDate',\n sortable: true,\n filter: true,\n minWidth: 150,\n width: 150,\n valueFormatter: (params) =>\n params?.value\n ? formatDate(params.value, dateFormat, exportParams.locale)\n : null,\n resizable: true,\n suppressSizeToFit: true,\n },\n {\n headerName: 'Clinician',\n field: 'clinicianName',\n sortable: true,\n filter: true,\n resizable: true,\n suppressSizeToFit: true,\n filterParams: {\n showTooltips: true,\n },\n },\n {\n headerName: 'Appointment Info',\n field: 'appointmentInfo',\n sortable: true,\n filter: true,\n resizable: true,\n suppressSizeToFit: true,\n filterParams: {\n showTooltips: true,\n },\n },\n {\n headerName: 'Location ID',\n field: 'locationId',\n sortable: true,\n filter: true,\n resizable: true,\n suppressSizeToFit: true,\n },\n //Hidden with CC2-579 for all cohorts.\n // {\n // headerName: 'HCC Closure Gaps',\n // headerTooltip: 'Displays the number of open Chronic Hierarchical Condition Category (HCC) gaps.',\n // field: 'hccGapCount',\n // minWidth: 100,\n // suppressSizeToFit: true,\n // sortable: true,\n // filter: 'agSetColumnFilter',\n // },\n {\n headerName: 'SNF Name', // string\n headerTooltip: 'The name of the Skilled Nursing Facility housing a patient.',\n field: 'snfName',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'SNF Flags List', // string\n field: 'snfFlagsList',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n hide: true\n },\n // CC-3535 new cohort columns\n {\n headerName: 'Last Spirometry Date',\n headerTooltip: 'Date of the last Spirometry',\n field: 'spirometryProcedure_LastDate',\n sortable: true,\n filter: true,\n minWidth: 150,\n width: 150,\n valueFormatter: (params) =>\n params?.value\n ? formatDate(params.value, dateFormat, exportParams.locale)\n : null,\n resizable: true,\n suppressSizeToFit: true,\n },\n {\n headerName: 'Pulmonologist',\n headerTooltip: 'Last Pulmonologist that billed for a service ',\n field: 'pulmonologistProcedure_LastProviderName',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'SNF Admission', // date\n headerTooltip: 'The date the patient is admitted to the Skilled Nursing Facility.',\n field: 'snfAdmittedAt',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n cellRenderer: (data): string => {\n return data.value\n ? formatDate(data.value, dateFormat, exportParams.locale)\n : '';\n }\n },\n {\n headerName: 'Last Pulmonologist Visit Date',\n headerTooltip: 'Last Pulmonologist Visit Date',\n field: 'pulmonologistProcedure_LastDate',\n sortable: true,\n filter: true,\n minWidth: 150,\n width: 150,\n valueFormatter: (params) =>\n params?.value\n ? formatDate(params.value, dateFormat, exportParams.locale)\n : null,\n resizable: true,\n suppressSizeToFit: true,\n },\n {\n headerName: 'Last Echo Date',\n headerTooltip: 'Date of the last echo code billed',\n field: 'echoProcedure_LastDate',\n sortable: true,\n filter: true,\n minWidth: 150,\n width: 150,\n valueFormatter: (params) =>\n params?.value\n ? formatDate(params.value, dateFormat, exportParams.locale)\n : null,\n resizable: true,\n suppressSizeToFit: true,\n },\n {\n headerName: 'SNF Discharge', // date\n headerTooltip: 'The date the patient is discharged from the Skilled Nursing Facility.',\n field: 'snfDischargedAt',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n cellRenderer: (data): string => {\n return data.value\n ? formatDate(data.value, dateFormat, exportParams.locale)\n : '';\n },\n },\n {\n headerName: 'COPD DX Count',\n headerTooltip: 'Number of times COPD appeared on a claim within the last 27 (24+3) months. The 3 additional months account for CMS claims lag.',\n field: 'copdDxCount',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n },\n\n {\n headerName: 'Cardiologist ',\n headerTooltip: 'Last Cardiologist that billed for a service ',\n field: 'cardiologistProcedure_LastProviderName',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n },\n {\n headerName: 'Patient Status', // string list\n headerTooltip: 'The patient\\'s status - Admitted, Discharged, Discharged after 30 days or Removed.',\n field: 'snfStatus',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: false,\n filter: 'agSetColumnFilter',\n filterParams: {\n suppressSelectAll: true,\n },\n /* cp.snfInfo?.current?.snfStatus?.map( flag => flag[0] + flag.slice(1, flag.length).replace(/([A-Z])/g, ' $1').trim() ).join(\", \")\n cellRenderer: (data): string => {\n return data.value?.length ? data.value.map( flag => flag[0] + flag.slice(1, flag.length).replace(/([A-Z])/g, ' $1').trim() ).join(\", \") : '';\n },*/\n },\n {\n headerName: 'Last Cardiologist Visit Date',\n headerTooltip: 'Last Cardiologist Visit Date',\n field: 'cardiologistProcedure_LastDate',\n sortable: true,\n filter: true,\n minWidth: 150,\n width: 150,\n valueFormatter: (params) =>\n params?.value\n ? formatDate(params.value, dateFormat, exportParams.locale)\n : null,\n resizable: true,\n suppressSizeToFit: true,\n },\n {\n headerName: 'HF DX Count',\n headerTooltip: 'Number of times Heart Failure appeared on a claim within the last 27 (24+3) months. The 3 additional months account for CMS claims lag',\n field: 'hfDxCount',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n resizable: true,\n comparator: compareNumber,\n filter: 'agNumberColumnFilter',\n },\n {\n headerName: 'DX Count',\n headerTooltip: 'Displays the count of diagnoses included on the CSV billing output',\n field: 'iheDxCount',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n },\n {\n headerName: 'Office Visits',\n headerTooltip: 'Number of office visits in the last 15 (12 + 3) months with any care provider. The 3 additional months account for CMS claims lag.',\n field: 'officeVisits',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n },\n {\n headerName: 'IP Admissions',\n headerTooltip: 'Number of inpatient admissions in the last 15 (12 + 3) months. The 3 additional months account for CMS claims lag.',\n field: 'inpatientVisits',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n },\n {\n headerName: 'Last CCM Code',\n headerTooltip: 'The code for the last billed chronic care management visit',\n field: 'ccmLastProcCode',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n },\n {\n headerName: 'Most Impactable',\n headerTooltip: 'Most impactable patients that were identified each quarter for shared savings in the performance dashboard denominator.',\n field: 'isMostImpactable',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n }, {\n headerName: 'Address',\n headerTooltip: 'Displays the patient\\'s address',\n field: 'address',\n minWidth: 300,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n }, {\n headerName: 'Schedule Status',\n headerTooltip: 'Displays the scheduling status of patients on the In-Home Annual Wellness Visit List',\n field: 'scheduleStatus',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n }, {\n headerName: 'Scheduling Description',\n headerTooltip: 'Displays the scheduling status details for patients on the In-Home Annual Wellness Visit List',\n field: 'schedulingDescription',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n }, {\n headerName: 'Last Outreach Date',\n headerTooltip: 'Displays the last date the patient was contacted',\n field: 'callDate',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n valueFormatter: (params) =>\n params?.value\n ? formatDate(params.value, dateFormat, exportParams.locale)\n : null,\n }, {\n headerName: 'Appointment Date',\n headerTooltip: 'Displays the date of the scheduled In-Home Annual Wellness Visit',\n field: 'dateOfService',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agDateColumnFilter',\n resizable: true,\n valueFormatter: (params) =>\n params?.value\n ? formatDate(params.value, dateFormat, exportParams.locale)\n : null,\n filterParams: {\n comparator: convertDateAndCompare,\n filterOptions: ['inRange'],\n inRangeInclusive: true\n }\n }, {\n headerName: 'Rendering Provider',\n headerTooltip: 'Displays the Signify clinician that completed the In-Home Annual Wellness Visit',\n field: 'renderingProvider',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n },\n {\n headerName: 'Rendering Provider',\n field: 'renderingProviderName',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n },\n {\n headerName: 'Alert',\n field: 'alert',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n headerTooltip: 'Displays if the patient triggered an alert or not',\n },\n {\n headerName: 'Self-Reported Date',\n field: 'statusDate',\n headerTooltip: 'Self-reported AWV date, patient will be removed from this list when the AWV claim is received.',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${moment(date).utc().format('MM/DD/yyyy')}`;\n }\n return '';\n },\n },\n {\n headerName: 'Last Response',\n field: 'lastResponse',\n minWidth: 200,\n suppressSizeToFit: true,\n sortable: true,\n resizable: true,\n filter: 'agSetColumnFilter',\n cellRenderer: (params): string => {\n if (params.value?.includes(\"Response: \")) {\n return params.value.replace(\"Response: \", \"\");\n }\n return params.value;\n },\n },\n {\n headerName: 'Last Response Date',\n field: 'lastResponseDate',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agDateColumnFilter',\n resizable: true,\n headerTooltip: 'Displays the date of the patient’s last response.',\n filterParams: {\n filterOptions: ['equals', 'inRange'], // https://www.ag-grid.com/javascript-data-grid/filter-provided-simple/\n suppressAndOrCondition: true,\n inRangeInclusive: true,\n comparator: convertDateAndCompare\n },\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${formatDate(date, dateFormat, exportParams.locale)}`;\n }\n return '';\n },\n },\n {\n headerName: 'Enrollment Date',\n field: 'enrollmentDate',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n valueFormatter: (params) =>\n params?.value\n ? formatDate(params.value, dateFormat, exportParams.locale)\n : null,\n },\n {\n headerName: 'SMS Program',\n headerTooltip: 'Displays the name of the SMS program the patient is enrolled in',\n field: 'smsProgram',\n minWidth: 200,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n filterParams: {\n showTooltips: true,\n },\n },\n {\n headerName: 'Enrollment Status',\n field: 'enrollmentType',\n headerTooltip: 'Enrollment Status - Displays reason for enrollment in Medicare',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true\n }, {\n headerName: 'Shared Savings Denominator',\n field: 'ssDenom',\n headerTooltip: 'Patients meet shared savings criteria',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n resizable: true,\n filter: 'agSetColumnFilter',\n valueGetter: (params) => {\n return params.data.ssDenom == 1 ? \"Yes\" : \"No\"\n },\n }, {\n headerName: '', // need to hide this column\n field: 'ssPercent',\n // headerTooltip: 'Patients meet shared savings criteria',\n width: 1,\n resizable: false,\n\n // suppressSizeToFit: true,\n // sortable: true,\n comparator: compareNumber,\n filter: 'agNumberColumnFilter',\n suppressMenu: true,\n filterParams: {\n filterOptions: ['empty', 'inRange', 'lessThan', 'lessThanOrEqual', 'greaterThan', 'greaterThanOrEqual'],\n suppressMenu: true,\n inRangeInclusive: true,\n includeBlanksInLessThan: true\n },\n cellRenderer: (params): string => {\n return '';\n }\n }, {\n headerName: 'Spirometry last date',\n field: 'cohortProcedureLastDate',\n headerTooltip: 'Spirometry last date',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agDateColumnFilter',\n resizable: true,\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${formatDate(date, dateFormat, exportParams.locale)}`;\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n }, {\n headerName: 'Pulmonologist Name',\n field: 'cohortSpecialistLastProviderName',\n headerTooltip: 'Pulmonologist Name',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true\n }, {\n headerName: 'Pulmonologist last date',\n field: 'cohortSpecialistLastDate',\n headerTooltip: 'Pulmonologist last date',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agDateColumnFilter',\n resizable: true,\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${formatDate(date, dateFormat, exportParams.locale)}`;\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n },\n {\n headerName: 'Align to Clinical Program',\n headerTooltip: 'Patients that align to the clinical program criteria for patient outreach',\n field: 'alignToClinical',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n valueGetter(data: any): string {\n return data.data.alignToClinical == \"Y\" ? \"Yes\" : \"No\";\n },\n },\n {\n headerName: 'Echo last date',\n field: 'hfCohortProcedureLastDate',\n headerTooltip: 'Echo last date',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agDateColumnFilter',\n resizable: true,\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${formatDate(date, dateFormat, exportParams.locale)}`;\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n }, {\n headerName: 'Cardiologist',\n field: 'hfCohortSpecialistLastProviderName',\n headerTooltip: 'Cardiologist',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true\n }, {\n headerName: 'Cardiologist last date',\n field: 'hfCohortSpecialistLastDate',\n headerTooltip: 'Cardiologist last date',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agDateColumnFilter',\n resizable: true,\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${formatDate(date, dateFormat, exportParams.locale)}`;\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n }, {\n headerName: 'Total Gap Weight',\n headerTooltip: 'Displays the highest possible weight that can be coded if all open chronic Chronic Conditions gaps are closed',\n field: 'totalGapWt',\n minWidth: 150,\n maxWidth: 200,\n sortable: true,\n comparator: compareNumber,\n filter: 'agNumberColumnFilter',\n filterParams: {\n filterOptions: ['empty', 'inRange', 'lessThan', 'lessThanOrEqual', 'greaterThan', 'greaterThanOrEqual'],\n suppressAndOrCondition: true,\n inRangeInclusive: true,\n includeBlanksInLessThan: true\n },\n valueFormatter(data: any): string {\n return data.value?.toFixed(3) || 'N/A';\n }\n },{\n headerName: 'Last G2025-CS',\n field: 'lastCsthDate',\n headerTooltip: 'Date of the last billed G2025 code with a CS modifer',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n resizable: true,\n filter: 'agDateColumnFilter',\n cellRenderer: (params): string => {\n if (params.value) {\n const date = new Date(params.value);\n return `${formatDate(date, dateFormat, exportParams.locale)}`;\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n },{\n headerName: 'AWV Workflow Status',\n field: 'allAWVPatientsListStatus',\n headerTooltip: 'Displays which status the patient is in within the AWV Opportunities workflow',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n resizable: true,\n filter: 'agSetColumnFilter',\n valueGetter(data: any): string {\n return data.data.allAWVPatientsListStatus;\n },\n cellRenderer: (params): string => {\n return getDisplayStringForAWVWorklistStatusEnum(params.value);\n },\n filterParams: {\n valueFormatter: (data: any) => {\n return getDisplayStringForAWVWorklistStatusEnum(data.value);\n },\n }\n },\n {\n headerName: 'Last Self-Reported AWV/IPPE Date',\n field: 'newStatusDate',\n headerTooltip: 'Displays the date of service for the last AWV that has been Self Reported',\n minWidth: 250,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agDateColumnFilter',\n resizable: true,\n cellRenderer: (params): string => {\n if (params.value) {\n return moment.utc(params.value).format(\"MM/DD/YYYY\")\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n },\n {\n headerName: 'Last EHR AWV/IPPE Date',\n field: 'lastEHRAWVIPPEDate',\n headerTooltip: 'Displays the date of service for the last AWV or IPPE reported by an EHR feed',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agDateColumnFilter',\n resizable: true,\n cellRenderer: (params): string => {\n if (params.value) {\n return moment.utc(params.value).format(\"MM/DD/YYYY\")\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n },\n {\n headerName: 'Last EHR AWV/IPPE Community',\n headerTooltip: 'Displays the community who reported the data for the last reported AWV/IPPE from the EHR source',\n field: 'ehrLastAwvCommunity',\n minWidth: 250,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n hide: true\n },\n {\n headerName: 'Last EHR AWV/IPPE Provider',\n headerTooltip: 'Displays the provider who performed the AWV/IPPE from the EHR source',\n field: 'ehrLastAwvProvider',\n minWidth: 250,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n hide: true\n },\n {\n headerName: 'Last Reported AWV/IPPE Source',\n headerTooltip: 'Displays the source of the last reported AWV/IPPE',\n field: 'ehrReportedLastAwvSource',\n minWidth: 250,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n resizable: true,\n },\n {\n headerName: 'Last Reported AWV/IPPE Date',\n field: 'ehrReportedLastAwvDate',\n headerTooltip: 'Displays the date of the last reported AWV/IPPE',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n filter: 'agDateColumnFilter',\n resizable: true,\n cellRenderer: (params): string => {\n if (params.value) {\n return moment.utc(params.value).format(\"MM/DD/YYYY\")\n }\n return '';\n },\n filterParams: {\n comparator: convertDateAndCompare\n }\n },{\n headerName: '3 Day Waiver',\n field: 'isUsingSnf3DayWaiver',\n headerTooltip: '3 Day Waiver has been used for this patient\\'s admission',\n minWidth: 100,\n suppressSizeToFit: true,\n sortable: true,\n resizable: true,\n filter: 'agSetColumnFilter',\n valueGetter: (params) => {\n return params.data.isUsingSnf3DayWaiver ? \"Yes\" : \"No\"\n },\n },\n ]\n};\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { Patient, PatientAlert } from '../../models/patient';\nimport { PATIENT_ALERTS } from '../../mocks/mock-patient-alerts';\nimport { HttpClient } from '@angular/common/http';\nimport { AuthService} from '@shared/services/auth-service/auth.service';\nimport { environment } from 'src/environments/environment';\nimport { wpapi } from \"@hcd-caravanhealth/pkg-wptypes\";\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PatientAlertService {\n get wpBaseURL() { return environment.wpApiUrl; }\n get userToken() { return this.AuthService.IdToken; }\n constructor(private http: HttpClient, private AuthService: AuthService, private ToastrMessageService: ToastrMessageService) { \n }\n\n async getWPAPIorgAlerts(orgId): Promise> {\n let url = `${this.wpBaseURL}/orgs/${orgId}/alerts?isActive=true`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n 'Authorization': 'Bearer ' + this.userToken\n }\n }\n try {\n return await this.http.get>(url, options).toPromise();\n } catch (err) {\n this.ToastrMessageService.error(err);\n throw err;\n }\n }\n async getPatientAlerts(orgId:string,patientId:string): Promise> {\n let alerts;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n 'Authorization': 'Bearer ' + this.userToken,\n }\n };\n​\n let url = `${this.wpBaseURL}/users/${patientId}/alerts`;\n​\n try {\n alerts = await this.http.get(url, options).toPromise() as Promise>;\n return alerts;\n } catch(e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e)\n }\n console.error(e);\n }\n }\n async getPatientCompletion(orgId, patientId, completionId): Promise{\n let completion;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n 'Authorization': 'Bearer ' + this.userToken,\n }\n };\n​\n let url = `${this.wpBaseURL}/users/${patientId}/completions/${completionId}`;\n \n try {\n completion = await this.http.get(url, options).toPromise() as wpapi.model.Completion;\n return completion;\n } catch(e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e)\n }\n console.error(e);\n }\n }\n async updatePatientAlert(orgId, patientId, alert): Promise{\n let updatedAlertResponse;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n 'Authorization': 'Bearer ' + this.userToken,\n }\n };\n let userInfo = await this.AuthService.getWellpepperUserInfo();\n​ let updatedAlert = {\n inactiveAt: new Date(),\n inactiveBy: userInfo._id,\n inactiveReason: alert.inactiveReason,\n inactiveReasonText: alert.inactiveReasonText,\n isActive: false,\n _id: alert._id\n }\n let url = `${this.wpBaseURL}/users/${patientId}/alerts/${alert._id}`;\n​\n try {\n updatedAlertResponse = await this.http.put(url, updatedAlert, options).toPromise() as Promise;\n return updatedAlertResponse;\n } catch(e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e)\n }\n console.error(e);\n return false\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CareFeatureConstants, CareOrchestrationConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { Access } from '@shared/services/graphql/access.service';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { IPatientFilterPreset, IPatientFilterPresetGroup } from '@shared/models/patient-filters';\nimport { map, switchMap } from 'rxjs/operators';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CarePatientsPresetGroupService {\n userAccess: Access = null;\n EHRflag: string = CareFeatureConstants.EHR;\n AgGridCustomFilteringFlag: string = CareFeatureConstants.AgGridCustomFilteringFlag;\n PatientListsUpdateFlag: string = CareFeatureConstants.PatientListsUpdateFlag;\n ClinicalProgramsListFlag: string = CareFeatureConstants.ClinicalProgramsListFlag;\n HCCVIPCohortList: string = CareFeatureConstants.HCCVIPCohortList;\n PACNavigatorProgram: string = CareFeatureConstants.PACNavigatorProgram;\n IHECohort: string = CareFeatureConstants.IHECohort;\n SMSOutreachProgram: string = CareFeatureConstants.SMSOutreachProgram;\n InHomeAWVScheduleList: string = CareFeatureConstants.InHomeAWVScheduleList;\n CareOrchAccessReqs = CareOrchestrationConstants.GridViewAccessRequirements;\n HCCListRevamp: string = CareFeatureConstants.HCCListRevamp;\n CombineSMSCohorts: string = CareFeatureConstants.CombineSMSCohorts;\n isHCCVIPCohortListEnabled = false;\n isPACNavigatorProgramEnabled = false;\n isPatientListsUpdateFlagEnabled = false;\n isIHECohortEnabled = false;\n isSMSOutreachProgramEnabled = false;\n isCombineSMSCohortsEnabled = false;\n isInHomeAWVScheduleList = false;\n isHCCListRevampEnabled = false;\n isCombinedSMSCohortsEnabled = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CombineSMSCohorts);\n smsAlerts: number = 0;\n\n activeOrgAlerts: Array = [];\n presetsColumns: { [key: string]: Array<{ [key: string]: boolean | string }> };\n \n constructor(private featureFlagService: FeatureFlagService, private userAccessService: UserAccessService) {\n this.userAccessService.currentAccess$\n .pipe(\n map(access => {\n if (access == null) {\n return;\n }\n this.userAccess = access;\n }),\n switchMap(() => this.featureFlagService.featureFlags$),\n map(() => {\n this.intializeFeatureFlags();\n })\n )\n .subscribe(() => {\n // this.initializeColumns();\n // this.initializePresetGroups();\n });\n }\n\n intializeFeatureFlags(): void {\n this.isPatientListsUpdateFlagEnabled =\n this.featureFlagService.hasFeatureFlag(this.PatientListsUpdateFlag);\n this.isHCCVIPCohortListEnabled =\n this.featureFlagService.hasFeatureFlag(this.HCCVIPCohortList);\n this.isPACNavigatorProgramEnabled =\n this.featureFlagService.hasFeatureFlag(this.PACNavigatorProgram);\n this.isHCCListRevampEnabled = this.featureFlagService.hasFeatureFlag(\n this.HCCListRevamp\n );\n this.isIHECohortEnabled = this.featureFlagService.hasFeatureFlag(\n this.IHECohort\n );\n this.isSMSOutreachProgramEnabled =\n this.featureFlagService.hasFeatureFlag(this.SMSOutreachProgram);\n this.isInHomeAWVScheduleList = this.featureFlagService.hasFeatureFlag(\n this.InHomeAWVScheduleList);\n this.isCombineSMSCohortsEnabled = this.featureFlagService.hasFeatureFlag(this.CombineSMSCohorts);\n\n }\n\n private hasCareOrchFeatureFlagAndComponents(): boolean {\n return (\n this.featureFlagService.hasFeatureFlag(this.CareOrchAccessReqs.featureFlagId) &&\n this.CareOrchAccessReqs.componentIds.every(id =>\n this.userAccessService.hasComponent(this.userAccessService.currentAccess$.value, id)\n )\n );\n }\n\n /**\n * filters presets that meet featureFlagRequired and hideIfFeatureFlagIsActive conditions\n * @param presetGroups\n * @returns\n */\n filterPresetGroupsByFeatureFlag(presetGroups: IPatientFilterPresetGroup[]): IPatientFilterPresetGroup[] {\n return presetGroups.filter(pg => {\n if (pg.featureFlagRequired) {\n return this.featureFlagService.hasFeatureFlag(pg.featureFlagRequired);\n }\n if (pg.hideIfFeatureFlagIsActive) {\n return !this.featureFlagService.hasFeatureFlag(pg.hideIfFeatureFlagIsActive);\n }\n return true;\n });\n }\n\n splitStringIntoWords(string: string): string {\n return (\n string[0] +\n string\n .slice(1, string.length)\n .replace(/([A-Z])/g, ' $1')\n .trim()\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { PatientEngagement, PatientEngagementComponentIds } from '@shared/enums';\nimport { CareComponentConstants, CareFeatureConstants } from '@shared/models/module-constants';\nimport { SpacesToDashesPipe } from '@shared/pipes/spaces-to-dashes.pipe';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { Access } from '@shared/services/graphql/access.service';\nimport { OrgService } from '@shared/services/org-service/org.service';\nimport { PatientAlertService } from '@shared/services/patient-alert/patient-alert.service';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { map, switchMap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PresetItemBase {\n protected userAccess: Access = null;\n protected hasPatientApp: boolean = null;\n protected hasPatientTwilioSMS: boolean = null;\n protected hidePresetAdditionCondition: boolean = null;\n protected agGridCustomFilteringFlag: boolean = null;\n protected awvPatientsWorklist: boolean = null;\n protected ehrFlag: boolean = null;\n protected isIHECohortEnabled: boolean = null;\n protected isInHomeAWVScheduleList: boolean = null;\n protected isHCCVIPCohortListEnabled: boolean = null;\n protected isSMSOutreachProgramEnabled: boolean = null;\n protected isHCCListRevampEnabled: boolean = null;\n protected hasPAC3DayWaiver: boolean = null;\n protected get userId() {\n return this.authService.wellpepperUser?._id;\n }\n\n constructor(\n public featureFlagService: FeatureFlagService,\n public userAccessService: UserAccessService,\n public _orgService: OrgService,\n public _patientAlertService: PatientAlertService,\n public spacesToDashes: SpacesToDashesPipe,\n public authService: AuthService\n ) {\n this.userAccessService.currentAccess$\n .pipe(\n map(access => {\n if (access == null) {\n return;\n }\n this.userAccess = access;\n this.hasPatientApp = this.userAccessService.hasComponent(this.userAccess, PatientEngagement.PatientApp);\n this.hasPatientTwilioSMS = this.userAccessService.hasComponent(\n this.userAccess,\n PatientEngagement.PatientTwilioSMS\n );\n this.hidePresetAdditionCondition = this.userAccessService.hasComponent(\n this.userAccess,\n CareComponentConstants.CareManagement\n );\n\n this.awvPatientsWorklist = this.userAccessService.hasComponent(\n this.userAccess,\n CareComponentConstants.AwvPatientsWorklist\n );\n\n this.hasPAC3DayWaiver = this.userAccessService.hasComponent(\n this.userAccess,\n CareComponentConstants.PAC3DayWaiver\n );\n\n }),\n switchMap(() => this.featureFlagService.featureFlags$)\n )\n .subscribe(() => {\n this.agGridCustomFilteringFlag = this.featureFlagService.hasFeatureFlag(\n CareFeatureConstants.AgGridCustomFilteringFlag\n );\n\n this.ehrFlag = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.EHR);\n\n this.isIHECohortEnabled = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.IHECohort);\n\n this.isInHomeAWVScheduleList = this.featureFlagService.hasFeatureFlag(\n CareFeatureConstants.InHomeAWVScheduleList\n );\n\n this.isHCCVIPCohortListEnabled = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.HCCVIPCohortList);\n\n this.isHCCListRevampEnabled = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.HCCListRevamp);\n\n this.isSMSOutreachProgramEnabled = this.featureFlagService.hasFeatureFlag(\n CareFeatureConstants.SMSOutreachProgram\n ); \n\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IPresetItemContract } from './preset-item-contract.model';\n\nexport const PRESET_ITEMS = new InjectionToken('preset-items');\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { environment } from 'src/environments/environment';\nimport { InterfaceSourceTier } from './interface-source-tier';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InterfaceSourceTiersService extends AzureApiBase {\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/facesheetSchedule/interfaceTiers');\n }\n\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport { Inject, Injectable } from '@angular/core';\nimport { PRESET_ITEMS, IPresetItemContract } from './utils';\nimport { CareFeatureConstants, CarePatientItem, PresetCategory } from '@shared/models/module-constants';\nimport { IPatientFilterPreset, IPatientFilterPresetGroup } from '@shared/models/patient-filters';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { InterfaceSourceTier } from '@care/components/facesheet-schedule/interface-source-tier';\nimport { AgGridLocalSettingsService, FilterSettings } from '@shared/services/ag-grid/ag-grid.service';\nimport { cloneDeep } from 'lodash';\nimport {\n AgGridTableFilterSetting,\n filterSettings\n} from '@care/views/care-patients/care-patients-filters/filter-settings';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { InterfaceSourceTiersService } from '@care/components/facesheet-schedule/interface-source-tiers.service';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { Access } from '@shared/services/graphql/access.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PresetGroupService {\n private allPresetGroups: IPatientFilterPresetGroup[] = [];\n private user: wpapi.model.Professional = null;\n private userAccess: Access;\n newPreset: IPatientFilterPreset = null;\n\n private get allPresetItems() {\n return this.presetItems.map(r => r.getPresetItem());\n }\n\n private get generalPresetItems() {\n return this.allPresetItems.filter(p => p.category === PresetCategory.General);\n }\n\n private get facesheetPresetItems() {\n return this.allPresetItems.filter(p => p.category === PresetCategory.Facesheet);\n }\n\n private get cohortPresetItems() {\n return this.allPresetItems.filter(p => p.category === PresetCategory.Cohorts);\n }\n\n private get clinicalProgramPresetItems() {\n return this.allPresetItems.filter(p => p.category === PresetCategory.ClinicalProgram);\n }\n\n private get worklistsPresetItems() {\n return this.allPresetItems.filter(p => p.category === PresetCategory.Worklists);\n }\n\n private get chronicConditionsPresetItems() {\n return this.allPresetItems.filter(p => p.category === PresetCategory.ChronicConditions);\n }\n private get annualWellnessVisitsPresetItems() {\n return this.allPresetItems.filter(p => p.category === PresetCategory.AnnualWellnessVisits);\n }\n private get postAcuteCarePresetItems() {\n return this.allPresetItems.filter(p => p.category === PresetCategory.PostAcuteCare);\n }\n\n get presetGroups() {\n return this.allPresetGroups;\n }\n\n constructor(\n private featureFlagService: FeatureFlagService,\n private authService: AuthService,\n private hierarchyTierService: HierarchyTierService,\n private agGridLocalSettingsService: AgGridLocalSettingsService,\n private interfaceSourceTiersService: InterfaceSourceTiersService,\n private userAccessService: UserAccessService,\n @Inject(PRESET_ITEMS) private presetItems: ReadonlyArray\n ) {\n this.userAccessService.currentAccess$.subscribe(async access => {\n if (access == null) {\n return;\n }\n this.userAccess = access;\n });\n\n this.getPresetGroup();\n }\n\n private async getPresetGroup() {\n this.user = await this.authService.getWellpepperUserInfo();\n\n const presetGroups = [\n {\n category: PresetCategory.CustomList,\n hideGroup: false,\n presets: []\n },\n {\n category: PresetCategory.AnnualWellnessVisits,\n hideGroup: false,\n featureFlagRequired: CareFeatureConstants.CareLandingPageFlag,\n presets: this.annualWellnessVisitsPresetItems\n },\n {\n category: PresetCategory.ChronicConditions,\n hideGroup: false,\n featureFlagRequired: CareFeatureConstants.CareLandingPageFlag,\n presets: this.chronicConditionsPresetItems\n },\n {\n category: PresetCategory.PostAcuteCare,\n hideGroup: false,\n featureFlagRequired: CareFeatureConstants.CareLandingPageFlag,\n presets: this.postAcuteCarePresetItems\n },\n {\n category: PresetCategory.General,\n hideGroup: false,\n presets: this.generalPresetItems\n },\n {\n category: PresetCategory.Facesheet,\n hideGroup: false,\n hideIfFeatureFlagIsActive: CareFeatureConstants.CareLandingPageFlag,\n presets: this.facesheetPresetItems\n },\n {\n category: PresetCategory.Cohorts,\n hideGroup: false,\n hideIfFeatureFlagIsActive: CareFeatureConstants.CareLandingPageFlag,\n presets: this.cohortPresetItems\n },\n {\n category: PresetCategory.Worklists,\n hideGroup: false,\n hideIfFeatureFlagIsActive: CareFeatureConstants.CareLandingPageFlag,\n presets: this.worklistsPresetItems\n },\n ];\n\n this.allPresetGroups = presetGroups.filter(pg => {\n return true;\n });\n\n this.allPresetGroups = presetGroups.filter(pg => {\n if (pg.featureFlagRequired) {\n return this.featureFlagService.hasFeatureFlag(pg.featureFlagRequired);\n }\n if (pg.hideIfFeatureFlagIsActive) {\n return !this.featureFlagService.hasFeatureFlag(pg.hideIfFeatureFlagIsActive);\n }\n return true;\n });\n await this.grantAccessToPresetGroups();\n }\n\n async grantAccessToPresetGroups() {\n let user = await this.authService.getWellpepperUserInfo();\n let group: IPatientFilterPresetGroup;\n let preset: IPatientFilterPreset;\n\n for (let g in this.allPresetGroups) {\n group = this.allPresetGroups[g];\n for (let p in group.presets) {\n preset = group.presets[p];\n if ('filterSettings' in preset && !preset.filterSettings) {\n if (this.featureFlagService.hasFeatureFlag(CareFeatureConstants.AgGridCustomFilteringFlag)) {\n const filterSetting = this.getSkeletonFilterSettingsByName(preset);\n const originName = preset.origin || preset.presetKey;\n preset.filterSettings = await this.getLocalstorageFilterSettings(\n preset.category,\n preset.presetKey,\n filterSetting,\n user?._id,\n originName\n );\n } else {\n preset.filterSettings = null;\n }\n }\n if (preset.componentId != null) {\n preset.hidePreset =\n !this.userAccessService.hasComponent(this.userAccess, preset.componentId) ||\n preset.hidePresetAdditionCondition;\n }\n }\n group.hideGroup = group.presets.every(preset => preset.hidePreset);\n }\n\n const facesheetGroup = this.allPresetGroups.find(x => x.category === PresetCategory.Facesheet);\n if (facesheetGroup && !facesheetGroup.hideGroup) {\n this.interfaceSourceTiersService.getAllFromCache().subscribe(interfaceTiers => {\n let hasInterface = false;\n interfaceTiers.forEach(interfaceTier => {\n hasInterface = hasInterface || this.hasInterface(interfaceTier);\n });\n\n facesheetGroup.hideGroup = !hasInterface;\n });\n }\n }\n\n getSkeletonFilterSettingsByName(preset: IPatientFilterPreset): FilterSettings {\n // after CC-4422 some of the filter names don't have spaces, so in some cases we need to remove spaces by using .replace(/\\s/g,'')\n return cloneDeep(\n filterSettings?.[preset.presetKey] ||\n filterSettings?.[preset.name] ||\n filterSettings?.[preset.origin?.replace(/\\s/g, '')]\n );\n }\n\n hasInterface(interfaceTier: InterfaceSourceTier): boolean {\n const currentTier = this.hierarchyTierService.currentTier$.value;\n\n if (currentTier == null || interfaceTier == null) {\n return false;\n }\n\n let hasInterface = false;\n\n switch (interfaceTier.configTier) {\n case 4:\n hasInterface =\n interfaceTier.ACO_ID === currentTier.selectedItem.tier1_ID &&\n interfaceTier.tier2_ID === currentTier.selectedItem.tier2_ID &&\n interfaceTier.tier3_ID === currentTier.selectedItem.tier3_ID &&\n interfaceTier.tier4_ID === currentTier.selectedItem.tier4_ID;\n break;\n case 3:\n hasInterface =\n interfaceTier.ACO_ID === currentTier.selectedItem.tier1_ID &&\n interfaceTier.tier2_ID === currentTier.selectedItem.tier2_ID &&\n interfaceTier.tier3_ID === currentTier.selectedItem.tier3_ID;\n break;\n case 2:\n hasInterface =\n interfaceTier.ACO_ID === currentTier.selectedItem.tier1_ID &&\n interfaceTier.tier2_ID === currentTier.selectedItem.tier2_ID;\n break;\n case 1:\n hasInterface = interfaceTier.ACO_ID === currentTier.selectedItem.tier1_ID;\n break;\n }\n\n return hasInterface;\n }\n\n async getLocalstorageFilterSettings(\n categoryName: PresetCategory,\n filterName: string,\n currentFilterSettings: FilterSettings,\n userId: string,\n originName: CarePatientItem | string\n ): Promise {\n const storedFilterSettings: FilterSettings =\n await this.agGridLocalSettingsService.getStoredFilterSettingsFromLocalStorage(\n categoryName,\n filterName,\n userId,\n originName\n );\n if (storedFilterSettings?.rows) {\n let currentFilterSettingsElement: AgGridTableFilterSetting;\n let storedFilterSettingsElement: AgGridTableFilterSetting;\n for (let r in storedFilterSettings.rows) {\n // here it pulls stored filter settings and merges it with filter settings skeleton\n for (let fs in currentFilterSettings?.rows) {\n currentFilterSettingsElement = currentFilterSettings.rows[fs];\n storedFilterSettingsElement = storedFilterSettings.rows[fs];\n if (currentFilterSettingsElement.title == storedFilterSettingsElement.title) {\n currentFilterSettingsElement.excluded = storedFilterSettingsElement.excluded;\n currentFilterSettingsElement.dateFrom = storedFilterSettingsElement.dateFrom;\n currentFilterSettingsElement.dateTo = storedFilterSettingsElement.dateTo;\n currentFilterSettingsElement.filter = storedFilterSettingsElement.filter;\n currentFilterSettingsElement.filterTo = storedFilterSettingsElement.filterTo;\n currentFilterSettingsElement.filterType = storedFilterSettingsElement.filterType;\n currentFilterSettingsElement.type = storedFilterSettingsElement.type;\n }\n }\n }\n }\n\n return currentFilterSettings;\n }\n\n getAllPresets() {\n if (this.allPresetGroups && this.allPresetGroups.length) {\n return this.allPresetGroups.reduce(\n (presets: IPatientFilterPreset[], group: IPatientFilterPresetGroup) => presets.concat(group.presets),\n []\n );\n }\n return this.allPresetItems;\n }\n\n /** Find a preset based on it's name */\n getPresetByName(carePatientItem: CarePatientItem | string): IPatientFilterPreset {\n return this.getAllPresets().find(r => r.name === carePatientItem);\n }\n\n /** Find a preset from query params - this is specialized logic to deal with legacy\n * URLs\n * @param filterPresetQueryParam - the query param tthat contains the preset name from the enum CarePatientItem\n * @param filterTitleQueryParam - support looking up legacy routes using the urlLabel property in the preset\n */\n getPresetByFilterQueryParams(filterPresetQueryParam: string, filterTitleQueryParam: string): IPatientFilterPreset {\n if (!filterPresetQueryParam) { //CC-4850 Alert list is loaded dynamically so \"name\" field is assigned undefined at the start.\n return;\n }\n return (\n this.getPresetByMatchingNameOrTitle(filterPresetQueryParam, filterTitleQueryParam) ||\n this.getPresetByMatchingNameWithLabel(filterPresetQueryParam)\n );\n }\n\n /** CC-4507 match \"filterPreset=awv-opportunities\" with preset.urlLabel:\"AWV opportunities\" */\n getPresetByMatchingNameWithLabel(filterPresetQueryParam: string): IPatientFilterPreset {\n filterPresetQueryParam = filterPresetQueryParam?.toLowerCase()?.replace(/-/g, ' ');\n return this.getAllPresets().find(r => {\n const labelLowered = r.label?.toLowerCase();\n return labelLowered === filterPresetQueryParam; // Match filterTitle=AWV%20Opportunities\n });\n }\n\n /** Match either preset.name or preset.title with the filterPreset or filterTitle query params respectively */\n getPresetByMatchingNameOrTitle(filterPresetQueryParam: string, filterTitleQueryParam: string): IPatientFilterPreset {\n filterPresetQueryParam = filterPresetQueryParam?.toLowerCase();\n filterTitleQueryParam = filterTitleQueryParam?.toLowerCase();\n\n return this.getAllPresets().find(r => {\n const nameLowered = r.name?.toLowerCase();\n const urlLabelLowered = r.urlLabel?.toLowerCase();\n return (\n nameLowered === filterPresetQueryParam || // Match filterPreset=AWVOpportunities with name:\"AWVOpportunities\"\n nameLowered?.replace(/-/g, ' ') === filterPresetQueryParam || // ???\n (filterTitleQueryParam && urlLabelLowered === filterTitleQueryParam) // Match filterTitle=AWV%20Opportunities with urlLabel:\"AWV Opportunities\"\n );\n });\n }\n\n // REVIEW: need to find a better way to initialize the temp preset\n setTempPreset(preset: IPatientFilterPreset): void {\n // pulls temporary custom filter preset\n this.newPreset = preset;\n }\n getTempPreset(): IPatientFilterPreset {\n return this.newPreset;\n }\n}\n","
\n
\n \n
0) || row.type != 'set'\">\n
\n
\n {{row.title}}\n
\n \n \n {{doesExcludedContainValue(r_idx, 'Yes')?'No':'Yes'}}\n \n \n\n \n \n {{selected}}\n ,\n \n \n \n \n {{getRowValueLabelText(row)}}\n \n \n\n
\n
\n \n \n \n \n
\n
\n \n \n \n
\n \n \n
\n
\n \n \n
\n
\n \n
\n \n \n \n \n \n \n row.filterTo)\" id=\"filterNumberInput\" [(ngModel)]=\"row.filter\" type=\"number\">\n row.filterTo\" id=\"filterNumberToInput\" [(ngModel)]=\"row.filterTo\" type=\"number\">\n \n \n \n \n \n \n \n \n \n
\n
\n
\n\n \n \n
\n \n \n \n \n
\n
\n\n \n \n \n
\n \n \n = 16\">\n \n = 16\">\n
\n
\n \n
\n
\n
\n
20
\n
40
\n
60
\n
80
\n
All
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n \n \n\n \n
\n
\n\n \n
\n \n \n \n
\n\n\n
\n \n
\n \n Name is missing\n This name is already in use\n \n \n
\n
\n
\n\n\n
\n\n\n
\n \n
\n\n\n\n
\n
\n
\n
\n
Save custom filter
\n
\n
\n
\n \n
\n
\n This name is already in\n use\n \n \n
\n
\n
\n
\n\n\n\n
\n
\n
\n
\n
Delete custom filter
\n
\n
\n
\n

Are you sure you want to delete {{filterName}}?

\n
\n
\n \n \n
\n
\n
\n
\n","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy } from '@angular/core';\nimport { FilterSettings, AgGridLocalSettingsService } from \"@shared/services/ag-grid/ag-grid.service\"\nimport _ from 'lodash';\nimport { faTrash, IconDefinition, faSave } from '@fortawesome/free-solid-svg-icons';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { CareFeatureConstants, CarePatientItem, PresetCategory } from '@shared/models/module-constants';\nimport { AgGridTableFilterSetting } from '../filter-settings';\nimport moment from 'moment';\n\n@Component({\n selector: 'coach-care-patients-filters-settings',\n templateUrl: './care-patients-filters-settings.component.html',\n styleUrls: ['./care-patients-filters-settings.component.scss']\n})\nexport class CarePatientsFiltersSettingsComponent implements OnInit, OnDestroy {\n @Input() selectedPresetSettings?: FilterSettings;\n filterSettingsObservableSubscriber;\n @Input() filterName: CarePatientItem;\n @Input() category: PresetCategory;\n @Input() versionKey: string;\n @Input() origin: string;\n @Input() filterNames: string[];\n @Input() loadingStatus: boolean;\n @Input() isNewFilter: boolean;\n @Input() filterNameIsAlreadyUsed: boolean;\n @Input() defaultFilterModel: { [key: string]: any };\n @Input() filterNewName: CarePatientItem;\n @Output() newFilterSettings: EventEmitter<{ name: string, filters: FilterSettings }> = new EventEmitter();\n @Output() updateFilterName: EventEmitter<{ oldName: string, newName: string }> = new EventEmitter();\n newFilter: string = '';\n openSaveFilterModal: boolean = false;\n PatientListsUpdateFlag: string = CareFeatureConstants.PatientListsUpdateFlag;\n isPatientListsUpdateFlagEnabled: boolean = false;\n openDeleteFilterModal: boolean = false;\n settings: FilterSettings = null;\n @Output() updatedFilterSettings: EventEmitter = new EventEmitter();\n @Output() deleteCustomFilterPreset: EventEmitter = new EventEmitter();\n checkedOptions: Array = [];\n faTrash: IconDefinition = faTrash;\n faSave: IconDefinition = faSave;\n constructor(private agGridLocalSettingsService: AgGridLocalSettingsService, private featureFlagService: FeatureFlagService) {\n this.isPatientListsUpdateFlagEnabled = this.featureFlagService.hasFeatureFlag(this.PatientListsUpdateFlag)\n this.filterSettingsObservableSubscriber = this.agGridLocalSettingsService.currentFilterSettings.subscribe(filterSettings => {\n this.assignSettings(this.selectedPresetSettings)\n })\n }\n\n\n ngOnInit(): void {\n }\n ngOnChanges(changes): void {\n if (changes?.selectedPresetSettings?.currentValue) {\n this.assignSettings(this.selectedPresetSettings)\n }\n }\n assignSettings(filterSettings: FilterSettings): void {\n this.settings = _.cloneDeep(filterSettings)\n this.settings?.rows?.forEach((r, i) => {\n r.isOpen = false\n this.updateCheckedOptions(i)\n if (r.filterType == 'date') {\n if (r.dateTo) r.dateTo = moment(r.dateTo).format(\"YYYY-MM-DD\")\n if (r.dateFrom) r.dateFrom = moment(r.dateFrom).format(\"YYYY-MM-DD\")\n }\n if(r.percentage && r.filter === null) {\n r.filter = 100;\n }\n })\n }\n openAccordion(list_idx: number): void {\n this.settings.rows.forEach((r, i) => {\n r.isOpen = i == list_idx && !r.isOpen\n })\n }\n ngOnDestroy(): void {\n this.filterSettingsObservableSubscriber.unsubscribe()\n }\n getChevronStatus(list_idx: number): string {\n return this.settings.rows?.[list_idx]?.isOpen ? 'chevron-up' : 'chevron-down'\n }\n isOptionChecked(optionName: string, list_idx: number): boolean {\n return !this.settings.rows[list_idx]?.excluded?.includes(optionName)\n }\n checkOption(optionName: string, list_idx: number): void {\n this.isOptionChecked(optionName, list_idx) ? this.settings.rows[list_idx].excluded.push(optionName) : this.settings.rows[list_idx].excluded = this.settings.rows[list_idx]?.excluded.filter(option => option != optionName)\n this.updateCheckedOptions(list_idx)\n }\n checkAllOptions(list_idx: number): void {\n let row = this.settings.rows[list_idx];\n if (row.type == 'set') {\n row.excluded = row.excluded.length == 0 ? row.excluded.concat(row.options) : []\n this.updateCheckedOptions(list_idx)\n } else if(row.percentage) {\n row.filter = 100;\n } else {\n row.filter = null\n row.filterTo = null\n row.dateFrom = null\n row.dateTo = null\n row.filterTo = null\n row.type = null\n }\n }\n updateCheckedOptions(list_idx: number): void {\n if (this.settings.rows[list_idx].type == 'set') {\n this.checkedOptions[list_idx] = this.settings.rows[list_idx].excluded.length == 0 ? [\"All\"] : this.settings.rows[list_idx].options.filter(o => !this.settings.rows[list_idx].excluded.includes(o))\n }\n }\n isRowValid(row: AgGridTableFilterSetting): boolean {\n if (row.includeAllOrNoneSelection || row.percentage) {\n return true\n } else if (row.type == 'set' && row.excluded.length == row.options.length && row.excluded.length > 0) { // check if nothing checked\n return false\n } else if (row.type == 'inRange' && row.filterType !== 'date' && row.filter > row.filterTo) {\n return false\n } else if ((row.type && row.type != 'unset') && row.type !== 'set' && row.filterType !== 'date' && (!row.filter && row.filter !== 0)) {\n return false\n } else if (row.filterType == 'date') {\n //list of types: inRange, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual\n if ((row.dateFrom && !row.dateTo) || (!row.dateFrom && row.dateTo)) return false;\n if (moment(row.dateFrom).isAfter(moment(row.dateTo))) return false;\n } else if(row.type == 'unset' && (row.filter || row.dateFrom) ) { // if filter is unset, but values are selected\n return false;\n }\n return true\n }\n updateFilterValue(row: AgGridTableFilterSetting): void {\n if(!row.type || row.type == 'unset') {\n row.filter = null;\n row.filterTo = null;\n }\n }\n isFormChanged(): boolean {\n if(this.filterName != this.filterNewName) return true; // if name was changed\n\n let currentFilterSettings = _.cloneDeep(this.settings);\n let oldFilterSettings = _.cloneDeep(this.selectedPresetSettings);\n for (let row in currentFilterSettings.rows) {\n delete currentFilterSettings.rows[row].isOpen;\n delete oldFilterSettings.rows[row].isOpen;\n if (currentFilterSettings.rows[row].filterType == 'date') {\n if (currentFilterSettings.rows[row].dateTo) currentFilterSettings.rows[row].dateTo = moment(currentFilterSettings.rows[row].dateTo).format(\"YYYY-MM-DD\")\n if (currentFilterSettings.rows[row].dateFrom) currentFilterSettings.rows[row].dateFrom = moment(currentFilterSettings.rows[row].dateFrom).format(\"YYYY-MM-DD\")\n }\n if (currentFilterSettings.rows[row].percentage && currentFilterSettings.rows[row].filter === null) {\n currentFilterSettings.rows[row].filter = 100;\n }\n if (currentFilterSettings.rows[row].filterType == 'number') {\n currentFilterSettings.rows[row].filter = Number(currentFilterSettings.rows[row].filter || 0);\n oldFilterSettings.rows[row].filter = Number(oldFilterSettings.rows[row].filter || 0);\n }\n if (!_.isEqual(JSON.stringify(currentFilterSettings.rows[row]), JSON.stringify(oldFilterSettings.rows[row]))) {\n return true;\n }\n };\n return false;\n }\n isFormValid(): boolean {\n if(this.filterNewName != this.filterName && this.filterNames?.includes(this.filterNewName)) return false; // checks if name is already taken\n for (let r in this.settings.rows) {\n if (!this.isRowValid(this.settings.rows[r])) {\n return false\n }\n }\n return true\n }\n saveChanges(): void {\n let clonedSettings = _.cloneDeep(this.settings);\n // change date format\n clonedSettings.rows?.forEach( row => {\n if (row.filterType == 'date') {\n if (row.dateTo) {\n row.dateTo = moment(row.dateTo).format(\"YYYY-MM-DD\");\n row.type = 'inRange';\n } else {\n row.type = null;\n };\n if (row.dateFrom) {\n row.dateFrom = moment(row.dateFrom).format(\"YYYY-MM-DD\");\n };\n }\n if(row.type == null || row.type == 'unset') {\n row.filter = null;\n row.filterTo = null;\n row.dateFrom = null;\n row.dateTo = null;\n }\n })\n if(this.filterNewName != this.filterName){ // in case if a name was edited \n this.agGridLocalSettingsService.renameCustomPreset(this.category, this.filterName, this.filterNewName, this.versionKey)\n this.agGridLocalSettingsService.storeFilterSettingsInLocalStorage(this.category, this.filterNewName, clonedSettings)\n this.updateFilterName.emit({oldName: this.filterName, newName: this.filterNewName})\n }else{\n this.agGridLocalSettingsService.storeFilterSettingsInLocalStorage(this.category, this.filterName, clonedSettings)\n }\n this.updatedFilterSettings.emit(clonedSettings);\n }\n createNewFilter(): void {\n this.newFilterSettings.emit({\n name: this.isPatientListsUpdateFlagEnabled ? this.filterNewName : this.newFilter,\n filters: this.settings\n })\n }\n\n clearFilters(): void { \n this.settings.rows.forEach((row, idx) => {\n if (row.type == 'set') {\n row.excluded = [];\n this.updateCheckedOptions(idx);\n } else if (row.percentage) {\n row.filter = this.defaultFilterModel?.ssPercent?.filter;\n } else {\n row.filter = null\n row.filterTo = null\n row.type = null\n row.dateFrom = null\n row.dateTo = null\n }\n })\n this.agGridLocalSettingsService.storeFilterSettingsInLocalStorage(this.category, this.filterName, this.settings)\n this.updatedFilterSettings.emit(this.settings)\n }\n\n deleteCustomFilter(): void {\n this.agGridLocalSettingsService.deleteCustomPreset(this.category, this.filterName, this.versionKey)\n this.deleteCustomFilterPreset.emit()\n this.openDeleteFilterModal = false;\n }\n\n getRowValueLabelText(row): string {\n let setLabel = row.filterOptions?.filter(fo => fo.value == row.type)[0]?.label // matching filter type\n if (setLabel && row.filterType !== 'date') {\n setLabel += ` ${row.filter ? row.filter : (row.dateFrom ? moment(row.dateFrom).format(\"MM/DD/YYYY\") : \"\")}`;\n if (row.type == 'inRange' && (row.filterTo || row.dateTo)) {\n setLabel += ` to ${row.filterTo ? row.filterTo : moment(row.dateTo).format('MM/DD/YYYY')}`;\n }\n } else if (row.filterType == 'date' && row.dateFrom) {\n setLabel = \"From \" + moment(row.dateFrom).format(\"MM/DD/YYYY\");\n if (row.dateTo) {\n setLabel += ` to ${moment(row.dateTo).format('MM/DD/YYYY')}`;\n }\n } else if(row.percentage) {\n setLabel = row.filter < 100 ? `Top ${row.filter}%` : 'All';\n }\n return setLabel;\n }\n\n /**\n * @list_idx list index is used as a pointer to find a selected filter setting\n * @value is a string represents an option, whether it's checked or not\n */\n doesExcludedContainValue(list_idx: number, value: string): boolean {\n\n return this.settings.rows[list_idx].excluded.includes(value)\n }\n /**\n * @list_idx list index is used as a pointer to find a selected filter setting\n * @checkedAsYes is a boolean represents \"Yes\" (as true) and \"No\" (as false)\n */\n checkIncludeAllOrNoneSelection(list_idx: number, checkedAsYes: boolean): void {\n if (!checkedAsYes && !this.doesExcludedContainValue(list_idx, 'Yes')) {\n this.settings.rows[list_idx].excluded.push('Yes')\n } else if (checkedAsYes) {\n this.settings.rows[list_idx].excluded = []\n }\n }\n preventValueToBeBelowMin(value: number, min: number): void {\n if (value < min) {\n value = min;\n }\n }\n displayCheckAllOptionsButton(row: AgGridTableFilterSetting): boolean {\n return !row.includeAllOrNoneSelection \n && (\n (row.type && row.type != 'unset' && row.type != 'set' && !row.percentage) \n || \n (row.type == 'set' && row.excluded.length > 0)\n ||\n (row.filter < 100 && row.percentage)\n )\n }\n}\n","\n
\n
\n
Patient Lists
\n
\n \n
\n
\n
\n
Filters
\n
\n
\n
\n
Standard
\n
Custom
\n
\n
\n
\n \n \n\n 0)\" >\n
\n

No custom patient lists created

\n
\n
\n\n \n
{{presetGroup.category}}
\n
\n \n
\n
\n
\n
{{preset.label}}
{{preset.alerts > 99 ? \"99+\" : preset.alerts}}
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n
{{selectedPreset?.label}}
\n \n \n
\n
\n
{{selectedPreset?.label}}
\n
\n \n
\n
\n
\n \n \n
\n \n \n \n \n \n \n
\n
\n
\n","import {\n Component,\n OnInit,\n Output,\n EventEmitter,\n HostBinding,\n Input,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n ComponentFactoryResolver,\n ComponentRef,\n OnChanges\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { SpacesToDashesPipe } from '@shared/pipes/spaces-to-dashes.pipe';\nimport { PatientAlertService } from '@shared/services/patient-alert/patient-alert.service';\nimport { FilterToggleService } from '@shared/services/filter-toggle/filter-toggle.service';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\n\nimport {\n IPatientFilterPresetGroup,\n IPatientFilterPreset,\n IPatientFilter,\n} from '@shared/models/patient-filters';\nimport {\n CarePatientItem,\n PresetCategory,\n} from '@shared/models/module-constants';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { ActivatedRouteService } from '@shared/services/activated-route/activated-route.service';\n\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { Access } from '@shared/services/graphql/access.service';\n\nimport { filterSettings, AgGridTableFilterSetting } from './filter-settings';\nimport {\n AgGridLocalSettingsService,\n FilterSettings\n} from '@shared/services/ag-grid/ag-grid.service';\nimport _ from 'lodash';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\n\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { PatientEngagement } from '@shared/enums';\nimport { ClinicalProgram } from '@shared/models/module-constants';\nimport { CarePatientsPresetGroupService } from './care-patients-preset-group.service';\nimport { PresetGroupService } from '@care/preset-group/preset-group.service';\nimport { LinkClickedEventsService } from '@shared/services/mixpanel/events/link-clicked-events.service';\n\nexport type FilterOpenState = 'is-open' | 'is-closed';\n\n@Component({\n selector: 'coach-care-patients-filters',\n templateUrl: './care-patients-filters.component.html',\n providers: [SpacesToDashesPipe],\n})\nexport class CarePatientsFiltersComponent\n extends KillSubscriptions\n implements OnInit, OnChanges\n{\n @Input() public loadingStatus: boolean;\n @Input() public resetFilter: boolean;\n @Input() public selectedPresetSettings: FilterSettings;\n @Input() clinicalProgram: ClinicalProgram = ClinicalProgram.AllProgram; // Pass clinical program and set All Program as default\n // @Output() public presetSelected: EventEmitter = new EventEmitter();\n // REVIEW - can we remove these events and/or move them to a shared filter settings service or replace them with observables?\n @Output() public storeFilterModel: EventEmitter =\n new EventEmitter();\n @Output()\n public updatePresetFilterSettingsTrigger: EventEmitter =\n new EventEmitter();\n AgGridCustomFilteringFlag: string =\n CareFeatureConstants.AgGridCustomFilteringFlag;\n PatientListsUpdateFlag: string = CareFeatureConstants.PatientListsUpdateFlag;\n ClinicalProgramsListFlag: string =\n CareFeatureConstants.ClinicalProgramsListFlag;\n HCCVIPCohortList: string = CareFeatureConstants.HCCVIPCohortList;\n PACNavigatorProgram: string = CareFeatureConstants.PACNavigatorProgram;\n IHECohort: string = CareFeatureConstants.IHECohort;\n SMSOutreachProgram: string = CareFeatureConstants.SMSOutreachProgram;\n InHomeAWVScheduleList: string = CareFeatureConstants.InHomeAWVScheduleList;\n HCCListRevamp: string = CareFeatureConstants.HCCListRevamp;\n isHCCVIPCohortListEnabled: boolean = false;\n isPACNavigatorProgramEnabled: boolean = false;\n isPatientListsUpdateFlagEnabled: boolean = false;\n isHCCListRevampEnabled: boolean = false;\n public isIHECohortEnabled : boolean = false;\n public isSMSOutreachProgramEnabled : boolean = false;\n public isInHomeAWVScheduleList : boolean = false;\n public isCombinedSMSCohortsEnabled = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CombineSMSCohorts);\n\n public isPatientFiltersOpen: boolean = true;\n public isDrillInOpen: boolean = false;\n\n public facesheetCategory = 'FACESHEET';\n\n public selectedPreset: IPatientFilterPreset;\n public allFilters: IPatientFilter[];\n public selectedCategory: string;\n public selectedFilters: IPatientFilter[];\n private tier: IHierarchyTier;\n private userAccess: Access;\n carePatientsFiltersSettingsRef: ComponentRef;\n orgId: string;\n smsAlerts: number;\n\n @HostBinding('class')\n get pclass() {\n const sharedClasses =\n 'queue border-right u-position--relative coach-care-patients-filters';\n return this.isPatientFiltersOpen\n ? `${sharedClasses} is-open`\n : `${sharedClasses} is-closed`;\n }\n\n\n get allPresetGroups(){\n return this.presetGroupService.presetGroups;\n }\n\n dynamicFilters: any = {};\n filterSettings: any = filterSettings;\n isNewFilterDrawerOpen: boolean = false;\n newPreset: IPatientFilterPreset;\n activeTab: 'standard' | 'custom' = 'standard';\n previousPreset: CarePatientItem | string = null;\n presetNameEditorToggle: boolean = false;\n activeOrgAlerts: Array<\n wpapi.model.Alert & { filterDesc?: string; userId?: string }\n > = [];\n @ViewChild('customFilters', { read: ViewContainerRef })\n presetFiltersComponent: ViewContainerRef;\n\n constructor(\n private _router: Router,\n private _route: ActivatedRoute,\n private _routeService: ActivatedRouteService,\n private _patientAlertService: PatientAlertService,\n private PatientService: PatientService,\n private userAccessService: UserAccessService,\n private filterToggleService: FilterToggleService,\n private hierarchyTierService: HierarchyTierService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private featureFlagService: FeatureFlagService,\n private agGridLocalSettingsService: AgGridLocalSettingsService,\n private authService: AuthService,\n private carePatientsPresetGroupService: CarePatientsPresetGroupService,\n private presetGroupService: PresetGroupService,\n private linkClickedEventsService: LinkClickedEventsService,\n ) {\n super();\n this.featureFlagService.featureFlags$.subscribe(async () => {\n this.isPatientListsUpdateFlagEnabled =\n this.featureFlagService.hasFeatureFlag(this.PatientListsUpdateFlag);\n this.isHCCVIPCohortListEnabled = this.featureFlagService.hasFeatureFlag(\n this.HCCVIPCohortList\n );\n this.isPACNavigatorProgramEnabled =\n this.featureFlagService.hasFeatureFlag(this.PACNavigatorProgram);\n this.isHCCListRevampEnabled = this.featureFlagService.hasFeatureFlag(\n this.HCCListRevamp\n );\n this.isIHECohortEnabled = this.featureFlagService.hasFeatureFlag(\n this.IHECohort\n );\n this.isSMSOutreachProgramEnabled = this.featureFlagService.hasFeatureFlag(\n this.SMSOutreachProgram\n );\n this.isInHomeAWVScheduleList = this.featureFlagService.hasFeatureFlag(\n this.InHomeAWVScheduleList\n );\n await this.refreshPresetsList();\n });\n\n this.userAccessService.currentAccess$\n .pipe(takeUntil(this.killTrigger))\n .subscribe(async (access) => {\n if (access == null) {\n return;\n }\n this.userAccess = access;\n await this.refreshPresetsList();\n });\n\n this.hierarchyTierService.currentTier$\n .pipe(takeUntil(this.killTrigger))\n .subscribe(async (tier) => {\n if (this.tier?.selectedTierId !== tier?.selectedTierId) {\n this.tier = tier;\n if (this.tier?.selectedTierId) {\n this.orgId = await this.PatientService.getWpOrgIdFromTierId(\n this.tier.selectedTierId\n );\n } else {\n this.orgId = null;\n }\n await this.refreshPresetsList();\n const filterPreset = this._route.snapshot.queryParams['filterPreset'];\n const filterTitle = this._route.snapshot.queryParams['filterTitle'];\n\n if (filterPreset) {\n if (!this.selectPresetWithString(filterPreset, filterTitle)) {\n this.selectFirstPreset();\n }\n } else if (!this.selectedPreset) {\n this.selectFirstPreset();\n }\n }\n });\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes?.tier) {\n await this.refreshPresetsList();\n const filterPresetURLName =\n this._route.snapshot.queryParams['filterPreset']?.toLowerCase();\n filterPresetURLName\n ? this.selectPresetWithString(filterPresetURLName)\n : this.selectFirstPreset();\n }\n if (this.resetFilter) { \n this.selectPreset(null);\n }\n }\n\n async ngOnInit() {\n this._routeService.currentRoute$\n .pipe(takeUntil(this.killTrigger))\n .subscribe(async (event) => {\n const filterPreset =\n this._route.snapshot.queryParams['filterPreset']?.toLowerCase();\n const filterTitle = this._route.snapshot.queryParams['filterTitle'];\n\n if (filterPreset) {\n this.selectPresetWithString(filterPreset, filterTitle);\n } else if (!this.selectedPreset) {\n this.selectFirstPreset();\n }\n });\n\n }\n\n isActivePreset(preset: IPatientFilterPreset) {\n return (\n this.selectedPreset &&\n (preset.name == this.selectedPreset.name ||\n (preset.label === 'Care Management' &&\n this.selectedPreset.label === preset.label))\n );\n }\n\n async refreshPresetsList() {\n\n if (\n !this.userAccess ||\n !this.featureFlagService.featureFlags$?.value?.length ||\n !this.tier\n ) {\n return;\n }\n // REVIEW - would suggest moving all preset group initialization to a service which\n // may mean all of these following lines.\n await this.getAlertsAndMessages();\n await this.retrieveAllCustomPresets('Custom list');\n if (this.selectedPreset) { \n this.selectPreset(this.selectedPreset);\n } else {\n const filterPreset =\n this._route.snapshot.queryParams['filterPreset']?.toLowerCase();\n const filterTitle = this._route.snapshot.queryParams['filterTitle'];\n if (filterPreset) {\n this.selectPresetWithString(filterPreset, filterTitle);\n } else if (!this.selectedPreset) {\n this.selectFirstPreset();\n }\n }\n }\n\n /** Select a preset based on stuff in the query string\n * @param filterPresetQueryParam - the filterPreset query param - this is matched to \"name\" case-insensitive\n * @param filterTitleQueryParam - the filterTitle query param - this is matched to \"urlLabel\"\n * case-insensitive after replacing hyphens with spaces\n */\n public selectPresetWithString(\n filterPresetQueryParam: string,\n filterTitleQueryParam?: string\n ): boolean {\n if (this.selectedPreset?.name == filterPresetQueryParam) {\n return true;\n }\n const preset =\n this.presetGroupService.getPresetByFilterQueryParams(\n filterPresetQueryParam,\n filterTitleQueryParam\n );\n if (preset) { \n this.isDrillInOpen = false;\n this.selectPreset(preset);\n return true;\n }\n return false;\n }\n\n public toggleDrillInOpen(preset: IPatientFilterPreset = null): void {\n if (this.loadingStatus) {\n return;\n }\n if (preset) {\n if(preset.name !== CarePatientItem.CareManagementAllProgram) {\n preset.newName = preset.name;\n }\n if(preset.category === PresetCategory.CustomList){\n preset.presetKey = preset.name;\n }\n }\n this.isDrillInOpen = !this.isDrillInOpen;\n if (!this.isDrillInOpen) {\n this.presetNameEditorToggle = false;\n }\n if (this.isNewFilterDrawerOpen && this.isPatientListsUpdateFlagEnabled) {\n // close new filter form\n this.isNewFilterDrawerOpen = false;\n const updatedPreset = this.presetGroupService.getPresetByName(\n this.previousPreset || CarePatientItem.AllPatients\n );\n \n this.selectPreset(updatedPreset); // switch back either to previous filter/preset or to \"All Patients\"\n }\n this.presetFiltersComponent.clear();\n if (this.isDrillInOpen && preset?.filterComponent != null) {\n const componentFactory =\n this.componentFactoryResolver.resolveComponentFactory(\n preset.filterComponent\n );\n const ref = this.presetFiltersComponent.createComponent(componentFactory);\n }\n }\n\n public selectFirstPreset(): void {\n if (!this.selectedPreset && typeof this.selectedPreset == 'object') {\n return;\n }\n let allPresetGroups = this.allPresetGroups.filter((pg) => !pg.hideGroup);\n this.selectedPreset = null;\n allPresetGroups.forEach((pg) => {\n pg.presets.forEach((p) => {\n if (p.selectedByDefault) {\n this.selectedPreset = p;\n }\n });\n });\n if (!this.selectedPreset) {\n this.selectedPreset = allPresetGroups[0]?.presets?.[0];\n }\n this.filterFilters();\n this.emitPreset();\n this.updateUrl();\n }\n\n public async selectPreset(preset: IPatientFilterPreset) {\n \n if (preset?.name !== this.selectedPreset?.name) {\n this.isDrillInOpen = false;\n this.selectedPreset = preset;\n if (this.selectedPreset && 'filterSettings' in this.selectedPreset) {\n let user = await this.authService.getWellpepperUserInfo();\n const filterSetting = this.presetGroupService.getSkeletonFilterSettingsByName(preset);\n const originName =\n preset.origin ||\n preset.presetKey;\n preset.filterSettings = await this.getLocalstorageFilterSettings(\n preset.category,\n preset.presetKey,\n filterSetting,\n user?._id,\n originName\n );\n }\n\n this.filterFilters();\n this.emitPreset();\n this.updateUrl();\n }\n }\n\n public emitPreset(): void {\n this.switchListsActiveTab(\n this.selectedPreset?.category == PresetCategory.CustomList\n ? 'custom'\n : 'standard'\n );\n // this.presetSelected.emit(this.selectedPreset);\n }\n\n onSelectPreset(preset: IPatientFilterPreset) {\n // this.loadingStatus ? null : this.selectPreset((this.selectedPreset && preset.label == this.selectedPreset.label) ? this.selectedPreset : preset)\n if (this.loadingStatus || this.selectedPreset?.label == preset.label) {\n return;\n }\n\n // Send preset click event to MixPanel\n this.linkClickedEventsService.sendLinkClickedEvent({\n sourceSection: 'Patient Lists',\n sourceSubSection: preset.category,\n linkText: preset.label,\n targetPage: '/care/patients',\n filterPreset: preset.presetKey\n });\n\n this.selectPreset(preset);\n }\n\n public togglePatientFilters(): void {\n this.isPatientFiltersOpen = !this.isPatientFiltersOpen;\n this.filterToggleService.toggleFilterPane(this.isPatientFiltersOpen);\n }\n\n public filterFilters(): void {\n this.selectedCategory = this.selectedPreset?.category;\n }\n\n public updateUrl(): void {\n let attemptCounter: number;\n /*\n REVIEW: find a more elegant way to handle this.\n Need attemptCounter to refresh URL, technically.\n There’s a race condition issue: open any other list but AWV Opportunities, refresh the page, then the list won’t get loaded.\n What happens: after page reload, the URL listener in CarePatients is trying to call filterChange(),\n but CarePatientsPresetGroupService and CarePatientsFiltersComponent\n are not ready at that moment and there are no available cohorts. As soon as the lists are initialized,\n the URL remains the same and there was no way to notify CarePatients about it, so by updating one of the query params,\n it triggers the URL listener again.\n */\n const filterPreset = this._route.snapshot.queryParams['filterPreset'];\n const AWVPatientsStatus = this.selectedPreset.AWVPatientsStatusURLQuery\n ? this._route.snapshot.queryParams['AWVPatientsStatus']\n : null;\n if (filterPreset == this.selectedPreset.name) {\n attemptCounter = this._route.snapshot.queryParams['attemptCounter']\n ? Number(this._route.snapshot.queryParams['attemptCounter']) + 1\n : 1;\n } else {\n attemptCounter = 0;\n }\n this._router.navigate([], {\n relativeTo: this._route,\n queryParams: {\n filterPreset: this.selectedPreset.name,\n filterTitle:\n this.selectedPreset?.urlLabel ||\n this.selectedPreset?.label ||\n this.selectedPreset?.name,\n newPreset: this.selectedPreset.temporary,\n attemptCounter: attemptCounter,\n AWVPatientsStatus: AWVPatientsStatus,\n },\n });\n }\n\n async getAlertsAndMessages(): Promise {\n if (!this.tier?.selectedTierId) {\n return;\n }\n if (\n !(\n this.userAccessService.hasComponent(\n this.userAccess,\n PatientEngagement.PatientApp\n ) ||\n this.userAccessService.hasComponent(\n this.userAccess,\n PatientEngagement.PatientTwilioSMS\n )\n )\n ) {\n return;\n }\n const orgId = await this.PatientService.getWpOrgIdFromTierId(\n this.tier?.selectedTierId\n );\n\n let activeAlertsByFilterDesc: { [filterDesc: string]: boolean } = {};\n\n if (!this.activeOrgAlerts.length) {\n this.activeOrgAlerts = orgId\n ? await this._patientAlertService.getWPAPIorgAlerts(orgId)\n : [];\n }\n\n if(this.isCombinedSMSCohortsEnabled){\n this.smsAlerts = 0;\n this.activeOrgAlerts.forEach(alert => {\n if(alert.filterDesc === \"COPD SMS Alert\" || alert.filterDesc === \"COPD SMS Alert - Help Requested\"){\n this.smsAlerts += 1\n }\n })\n let worklists = this.allPresetGroups.findIndex(e => e.category === 'Chronic Conditions')\n let preset = this.allPresetGroups[worklists].presets.findIndex(e => e.name === 'SmsOutreachProgram')\n this.allPresetGroups[worklists].presets[preset].alerts = this.smsAlerts;\n }\n\n this.activeOrgAlerts = this.activeOrgAlerts.filter(alert =>{\n if(alert.filterDesc === \"COPD SMS Alert\" || alert.filterDesc === \"COPD SMS Alert - Help Requested\"){\n return !this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CombineSMSCohorts);\n }\n return true;\n });\n\n this.activeOrgAlerts.forEach(alert => {\n activeAlertsByFilterDesc[alert.filterDesc] = true;\n });\n }\n\n // ========================= CUSTOM FILTER SETTINGS ============================\n\n async retrieveAllCustomPresets(categoryName: string) {\n const originColumns = this.presetGroupService.getPresetByName(\n CarePatientItem.AllPatients\n ).columns;\n let presets: IPatientFilterPreset[] =\n await this.agGridLocalSettingsService.retrieveAllCustomPresets(\n categoryName,\n originColumns\n );\n if (presets.length < 1) {\n return;\n }\n presets.forEach((preset) => {\n if (!preset.label) {\n preset.label = preset.name;\n }\n });\n let targetCategory: IPatientFilterPresetGroup = this.allPresetGroups.filter(\n (pg) => pg.category == categoryName\n )?.[0];\n if (targetCategory) {\n targetCategory.presets = presets;\n targetCategory.hideGroup = false;\n }\n }\n\n async getLocalstorageFilterSettings(\n categoryName: PresetCategory,\n filterName: string,\n currentFilterSettings: FilterSettings,\n userId: string,\n originName: CarePatientItem | string\n ): Promise {\n let storedFilterSettings: FilterSettings =\n await this.agGridLocalSettingsService.getStoredFilterSettingsFromLocalStorage(\n categoryName,\n filterName,\n userId,\n originName\n );\n if (storedFilterSettings?.rows) {\n let currentFilterSettingsElement: AgGridTableFilterSetting;\n let storedFilterSettingsElement: AgGridTableFilterSetting;\n for (let r in storedFilterSettings.rows) {\n // here it pulls stored filter settings and merges it with filter settings skeleton\n for (let fs in currentFilterSettings?.rows) {\n currentFilterSettingsElement = currentFilterSettings.rows[fs];\n storedFilterSettingsElement = storedFilterSettings.rows[fs];\n if (\n currentFilterSettingsElement.title ==\n storedFilterSettingsElement.title\n ) {\n currentFilterSettingsElement.excluded =\n storedFilterSettingsElement.excluded;\n currentFilterSettingsElement.dateFrom =\n storedFilterSettingsElement.dateFrom;\n currentFilterSettingsElement.dateTo =\n storedFilterSettingsElement.dateTo;\n currentFilterSettingsElement.filter =\n storedFilterSettingsElement.filter;\n currentFilterSettingsElement.filterTo =\n storedFilterSettingsElement.filterTo;\n currentFilterSettingsElement.filterType =\n storedFilterSettingsElement.filterType;\n currentFilterSettingsElement.type =\n storedFilterSettingsElement.type;\n }\n }\n }\n }\n\n return currentFilterSettings;\n }\n\n updateFilterSettings(filterSettings: FilterSettings): void {\n this.presetNameEditorToggle = false;\n if (this.selectedPreset) {\n this.selectedPreset.filterSettings = _.cloneDeep(filterSettings);\n this.updatePresetFilterSettingsTrigger.emit(filterSettings);\n }\n }\n deleteCustomFilterPreset() {\n let category: IPatientFilterPresetGroup = this.allPresetGroups.filter(\n (pg) => pg.category == this.selectedPreset.category\n )[0];\n if (category) {\n category.presets =\n category.presets?.filter(\n (preset) => preset.name !== this.selectedPreset.name\n ) || [];\n if (category.presets?.length == 0) {\n category.hideGroup = true;\n }\n }\n this.selectPresetWithString(this.selectedPreset?.origin);\n this.switchListsActiveTab('standard');\n }\n getUsedFilterNames(): string[] {\n /**\n * need to add \"storedPresetNames\" to avoid overwriting storedPresetNames list in localStorage\n * `agGrid_${categoryName}_storedPresetNames_${userId}` = stores all custom preset/filter names (string[])\n * `agGrid_${categoryName}_${filterName}_${userId}` = stores custom preset/filter\n */\n let names = ['storedPresetNames'];\n this.allPresetGroups.forEach((pg) => {\n names = names.concat(pg.presets.map((p) => p.name));\n });\n return names;\n }\n filterNameIsAlreadyUsed(newName: string): boolean {\n return this.selectedPreset.name == newName\n ? this.getUsedFilterNames().filter((f) => f == newName).length > 1\n : this.getUsedFilterNames().includes(newName);\n }\n async addCustomFilterPreset(settings: {\n name: CarePatientItem;\n filters: FilterSettings;\n }) {\n let indexForGeneralCategory: number | undefined = undefined;\n let indexForAllPatients: number | undefined = undefined;\n for (let i = 0; i < this.allPresetGroups.length; i++) {\n if (this.allPresetGroups[i].category === 'General') {\n for(let y = 0; y < this.allPresetGroups[i].presets.length; y++){\n if(this.allPresetGroups[i].presets[y].name==='AllPatients'){\n indexForGeneralCategory = i;\n indexForAllPatients = y;\n break;\n }\n }\n break;\n }\n }\n let preset = await this.agGridLocalSettingsService.addNewCustomPreset(\n PresetCategory.CustomList,\n settings.name,\n this.allPresetGroups[indexForGeneralCategory].presets[indexForAllPatients],\n _.cloneDeep(settings.filters)\n );\n let category: IPatientFilterPresetGroup = this.allPresetGroups.filter(\n (pg) => pg.category == PresetCategory.CustomList\n )[0];\n preset.temporary = false;\n\n if (category) {\n category.presets.push(preset);\n category.hideGroup = false;\n }\n if (this.isPatientListsUpdateFlagEnabled) {\n this.isDrillInOpen = false;\n this.isNewFilterDrawerOpen = false;\n this.presetNameEditorToggle = false;\n } else {\n this.toggleDrillInOpen();\n }\n this.selectedPreset = preset;\n this.updateUrl();\n this.switchListsActiveTab('custom');\n }\n async renameCustomFilterPreset(settings: {\n oldName: CarePatientItem;\n newName: CarePatientItem;\n }) {\n let preset = this.presetGroupService.getPresetByName(\n settings.oldName\n );\n if (preset) {\n preset.name = settings.newName;\n preset.label = settings.newName;\n this.updateUrl();\n }\n this.presetNameEditorToggle = false;\n }\n\n openNewFilterDrawer(): void {\n if (this.isNewFilterDrawerOpen) {\n return;\n }\n\n // store previous preset name in order to switch back if saving is canceled\n this.previousPreset = this.selectedPreset?.name;\n\n // cloning \"All Patients\" list\n this.newPreset = _.cloneDeep(\n this.presetGroupService.getPresetByName(\n CarePatientItem.AllPatients\n )\n );\n this.newPreset.origin = CarePatientItem.AllPatients;\n this.newPreset.name = CarePatientItem.CustomPatientList;\n\n // need to check if name \"Custom Patient List\" is not in use.\n // the loop bellow adds extra number to the end of the name\n if (\n this.presetGroupService.getPresetByName(this.newPreset.name)\n ) {\n let idx = 1;\n while (\n this.presetGroupService.getPresetByName(\n (this.newPreset.name + idx) as CarePatientItem\n )\n ) {\n idx++;\n }\n this.newPreset.name = this.newPreset.name.concat(\n idx.toString()\n ) as CarePatientItem;\n this.newPreset.label = this.newPreset.name;\n }\n\n this.newPreset.category = PresetCategory.CustomList;\n this.newPreset.origin = CarePatientItem.AllPatients;\n this.newPreset.presetKey = this.newPreset.name;\n\n // need to clear all filter settings\n this.newPreset.filterSettings?.rows.forEach((r) => {\n r.excluded = [];\n });\n\n // mark as temprorary filter in order to block storing filter model\n this.newPreset.temporary = true;\n this.presetGroupService.setTempPreset(this.newPreset);\n \n this.selectPreset(this.newPreset);\n if (this.isDrillInOpen) {\n this.isDrillInOpen = false;\n }\n this.toggleDrillInOpen(this.newPreset);\n this.isNewFilterDrawerOpen = true;\n }\n\n switchListsActiveTab(tab: 'standard' | 'custom'): void {\n if (!this.isNewFilterDrawerOpen && !this.isDrillInOpen) {\n this.activeTab = tab;\n }\n }\n\n /**\n * filters presets that meet featureFlagRequired and hideIfFeatureFlagIsActive conditions\n * @param presetGroups\n * @returns\n */\n filterPresetGroupsByFeatureFlag(\n presetGroups: IPatientFilterPresetGroup[]\n ): IPatientFilterPresetGroup[] {\n return presetGroups.filter((pg) => {\n if (pg.featureFlagRequired) {\n return this.featureFlagService.hasFeatureFlag(pg.featureFlagRequired);\n }\n if (pg.hideIfFeatureFlagIsActive) {\n return !this.featureFlagService.hasFeatureFlag(\n pg.hideIfFeatureFlagIsActive\n );\n }\n return true;\n });\n }\n splitStringIntoWords(string: string): string {\n return (\n string[0] +\n string\n .slice(1, string.length)\n .replace(/([A-Z])/g, ' $1')\n .trim()\n );\n }\n}\n","export enum Assignment {\n Attributed = 'Attributed',\n MostAssignable = 'Most Assignable',\n PreStep = 'Pre-step'\n}\n","export enum LoadingMsgEnum {\n Loading = 'Loading',\n NoData = 'No data' \n}\n","import { formatDate } from '@angular/common';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { AbstractControl, UntypedFormControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport moment from 'moment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AwvWorklistService {\n constructor(@Inject(LOCALE_ID) private locale: string) {\n const today = new Date();\n this.fromDate = new UntypedFormControl();\n this.toDate = new UntypedFormControl(formatDate(today, 'yyyy-MM-dd', this.locale), [Validators.required, this.awvCustomDateValidator(this.fromDate)]);\n }\n\n fromDate: UntypedFormControl;\n toDate: UntypedFormControl;\n loadItems$: Subject = new Subject();\n \n // Resets fromDate and toDate\n public clearDates(){\n const today = new Date();\n this.fromDate.setValue(null);\n this.toDate.setValue(formatDate(today, 'yyyy-MM-dd', this.locale)); \n }\n\n public hasDateChanged(): boolean {\n let fromDateChanged = false;\n if (this.fromDate.value){\n const momFromDate = moment(this.fromDate.value).startOf('day');\n const momDefDate = moment('1901-01-01');\n fromDateChanged = !momFromDate.isSame(momDefDate, 'day');\n }\n\n let toDateChanged = false;\n if (!this.toDate.value){\n toDateChanged = true;\n }\n else if (this.toDate.value){\n const momToDate = moment(this.toDate.value).startOf('day');\n const momToday = moment();\n toDateChanged = !momToDate.isSame(momToday, 'day');\n \n }\n return fromDateChanged || toDateChanged;\n }\n\n private awvCustomDateValidator(otherDateControl: AbstractControl): ValidatorFn {\n const defaultDate: Date = new Date('1901-01-01');\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value == null || otherDateControl.value == null) {\n return null;\n }\n\n const controlDate = new Date(control.value);\n const otherDate = otherDateControl.value === \"\" ? defaultDate : new Date(otherDateControl.value);\n const isAfter = controlDate >= otherDate;\n return isAfter ? null : { dateMinimum: true };\n };\n }\n}\n","import { ChangeDetectorRef, Injectable } from '@angular/core';\n\nimport { PatientViewModel } from '@shared/models/patient';\n\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport _ from 'lodash';\nexport class FilterSettings {\n rows: AgGridTableFilterSetting[];\n}\nimport {\n AgGridTableFilterSetting,\n filterSettings\n} from '@care/views/care-patients/care-patients-filters/filter-settings';\nexport const AG_GRID_LOCALE_CARE = {\n // overwrites agGrid wordings (CC-2939)\n selectAll: 'All',\n blanks: 'None',\n empty: 'Unset'\n};\nimport { AgGridLocalSettingsService } from './ag-grid/ag-grid.service';\nimport { AwvWorklistService } from '@care/components/awv-worklist/awv-worklist.service';\nimport { CarePatientItem } from '@shared/models/module-constants';\nimport { GridApi, ColumnApi } from 'ag-grid-community';\n@Injectable({\n providedIn: 'root'\n})\nexport class FilterDataService {\n constructor(\n private agGridLocalSettingsService: AgGridLocalSettingsService,\n private awvWorklistService: AwvWorklistService\n ) {}\n\n // ====================== FILTER SETTINGS ========================\n\n updateFilterSettings(\n selectedPreset: IPatientFilterPreset,\n patients: PatientViewModel[],\n gridApi: GridApi,\n useDefaultFilterModel?: boolean\n ): void {\n if (selectedPreset?.filterSettings?.rows && patients?.length) {\n selectedPreset.filterSettings.rows = this.agGridLocalSettingsService.updateFilterSettings(\n selectedPreset,\n patients,\n useDefaultFilterModel,\n gridApi.getFilterModel()\n );\n }\n }\n\n async applyFilterSettings(\n selectedPreset: IPatientFilterPreset,\n filterSettings: FilterSettings,\n gridApi: GridApi,\n keepPreviousFilterModel: boolean,\n ignoreDefaultAndCurrentFilterModels?: boolean\n ) {\n // Get filter from local storage or from the defaultFilterModel, on clear() default is skipped\n let currentFilterModel = gridApi?.getFilterModel() || {};\n //Column Defs is not able to grab and this is causing the filter to not get applied not sure why\n if (\n (!keepPreviousFilterModel || !Object.keys(currentFilterModel)?.length) &&\n selectedPreset.defaultFilterModel &&\n !ignoreDefaultAndCurrentFilterModels\n ) {\n currentFilterModel = { ...currentFilterModel, ...selectedPreset.defaultFilterModel };\n }\n if (filterSettings && gridApi?.getColumnDefs()?.length > 0) {\n selectedPreset.filterSettings = filterSettings;\n this.agGridLocalSettingsService.applyFilterSettings(\n filterSettings?.rows,\n gridApi,\n keepPreviousFilterModel,\n ignoreDefaultAndCurrentFilterModels ? null : currentFilterModel\n );\n }\n }\n\n async applyDefaultFilterModel(selectedPreset: IPatientFilterPreset, gridApi: GridApi) {\n if (\n !selectedPreset.defaultFilterModel ||\n !gridApi?.getFilterModel() ||\n Object.keys(gridApi?.getFilterModel())?.length\n ) {\n return;\n }\n // check if there's no default stored filter model\n // if object exists (even empty object), then stop, otherwise apply default filter model\n let storedFilterModel = await this.agGridLocalSettingsService.getStoredFilterModelFromLocalStorage(\n selectedPreset.category,\n selectedPreset.name\n );\n if (!storedFilterModel) {\n this.setFilterModel(selectedPreset.defaultFilterModel, gridApi);\n }\n }\n\n async updatePresetFilterSettings(\n selectedPreset: IPatientFilterPreset,\n newFilterSettings: FilterSettings,\n gridApi: GridApi\n ) {\n // This is not used\n selectedPreset.filterSettings = newFilterSettings;\n await this.applyFilterSettings(selectedPreset, selectedPreset?.filterSettings, gridApi, true, true);\n await this.storeFilterModelAndMatchFilterSettings(selectedPreset, gridApi);\n }\n\n /**\n * Helper function check if all items are selected on a specified column\n * needed to compare it with ag-grid applied filter since it will not return any data\n * @param colId - the column id we need the data for\n * @param gridApi -\n * @param possibleValues - the possible values for that column\n * @returns: an object with 2 types isAllSelected: boolean, size:number\n */\n checkIfAllItemsSelected(\n colId: string,\n gridApi: GridApi,\n possibleValues: string[]\n ): { isAllSelected: boolean; size: number } {\n let filteredRowsData = [] as string[];\n\n gridApi.forEachNodeAfterFilter(node => {\n if (filteredRowsData.indexOf(node.data[colId]) === -1)\n // unique only\n filteredRowsData.push(node.data[colId]);\n });\n\n if (possibleValues.length === filteredRowsData.length) {\n // all unique items selected\n return {\n isAllSelected: true,\n size: possibleValues.length\n };\n } else {\n return {\n isAllSelected: false,\n size: possibleValues.length\n };\n }\n }\n\n /**\n * Helper function to get all unique values for a column\n * @param colId - the column id we need the data for\n * @param gridApi -\n * @param columnApi\n * @returns: a string array of unique column values\n */\n getValuesForColumn(colId: string, gridApi: GridApi, columnApi: ColumnApi): string[] {\n var values = [];\n gridApi.forEachNode(rowNode => {\n var value = rowNode.data[colId];\n let column = columnApi.getColumn(colId);\n let colDef = column.getColDef();\n let valueGetter = colDef.valueGetter;\n if (typeof valueGetter === 'function') {\n // If there is a valueGetter func definied in columnDefinitions ex: api input ['Y', 'N'] after ['YES', 'NO']\n const inputValue = { [colId]: value };\n const params = {\n data: inputValue,\n node: rowNode,\n colDef: colDef,\n api: gridApi,\n columnApi: columnApi,\n context: null,\n column: column,\n getValue: (colId: any) => rowNode.data[colId]\n };\n value = valueGetter(params);\n }\n\n if (values.indexOf(value) === -1) {\n // Unique only\n values.push(value);\n }\n });\n return values;\n }\n\n /**\n * On inputed defaultFilterModel removes not needed columns and/or sub-values on columns\n * Handles these scenarios:\n * - If the column exists in the defaultFilterModel but it is removed in the columnDefinitions or behind a featureFlag\n * - If the data returned to the grid is empty\n * - If All the values are selected on a specific column and ag-grid appliedFilters will not detect a change\n * - If a suppressSelectAll:true is set on the columnDefinitions and the column is missing the 'All' value\n * - If all values are selected on specific column and ag-grid appliedFilters doesn't detect it as a change\n * @param dfm - the defaultFilterModel comming in from columnPresets\n * @param gridApi - ag-grid api\n * @param columnApi - ag-grid columnApi to get access to the columns\n * @returns: a parsed down defaultFilterModel that has specific items removed\n */\n cleanDefaultFilterModel(dfm: { [key: string]: any }, gridApi: GridApi, columnApi: ColumnApi) {\n const cleanedDFM: { [key: string]: any } = {};\n for (let key in dfm) {\n columnApi?.getColumns().forEach(col => {\n if (key === col.getColId()) {\n // if the column is visible in the grid\n const possibleValues = this.getValuesForColumn(key, gridApi, columnApi);\n const colDef = col.getColDef();\n if (colDef.filterParams?.suppressSelectAll && possibleValues.length === 0) return; // suppressSelectAll in columnDefinitions prevents showing 'All' as values\n\n cleanedDFM[key] = _.cloneDeep(dfm[key]); // copy the column from dfm to the cleanedDFM\n\n const cleanedDFMValues = cleanedDFM[key].values;\n if (cleanedDFMValues) {\n // filter the Default Filter Model values to have only the ones that are possible: are returned in the grid\n const filteredValues = cleanedDFMValues.filter((value: string) => possibleValues.includes(value));\n cleanedDFM[key].values = filteredValues;\n // check for scenario where all items are selected and gridApi?.getFilterModel() will return empty\n const objAllItemsSelected = this.checkIfAllItemsSelected(key, gridApi, possibleValues);\n if (objAllItemsSelected.isAllSelected) {\n if (cleanedDFM[key].values.length === objAllItemsSelected.size) {\n delete cleanedDFM[key];\n }\n }\n }\n }\n });\n }\n return cleanedDFM;\n }\n\n /**\n * Decides whether to show the \"filter applied\" and \"clear\" elements\n * in the UI by updating the view model property filterAppliedBool\n * @param selectedPreset - We get the defaultFilterModel from the selectedPreset\n * @param gridApi - We use it to get the applied filters on the grid\n * @param columnApi - To get allColumns in the grid, used in the parseDefaultFilterModel func\n * @param AWVPatientsStatus - Used in AWV Button selection, comes from the url on specific button pressed. ex: AWVPatientsStatus=ReadyToSchedule\n * @param fromDate - AWV side menu fromDate; used to detect change from default value 1901-01-01 to display clear button on ag-grid\n * @returns: True if the grid aplied filters are different from the defaultFilterModel, False if they are the same\n */\n checkIfFilterIsApplied(selectedPreset: IPatientFilterPreset, gridApi: GridApi, columnApi: ColumnApi): boolean {\n if (selectedPreset.name == CarePatientItem.AwvOpportunities && this.awvWorklistService.hasDateChanged())\n return true;\n\n const appliedFilters = gridApi?.getFilterModel();\n if (!appliedFilters) return false; // disable checks on loading and empty filterModel...\n\n if (selectedPreset?.defaultFilterModel) {\n const dfm = selectedPreset?.defaultFilterModel;\n const matchingDFM = this.cleanDefaultFilterModel(dfm, gridApi, columnApi);\n if ('allAWVPatientsListStatus' in matchingDFM && !('allAWVPatientsListStatus' in appliedFilters)) {\n // AWV Button check\n delete matchingDFM['allAWVPatientsListStatus'];\n }\n\n return !_.isEqual(matchingDFM, appliedFilters);\n }\n return Object.keys(appliedFilters)?.length > 0;\n }\n\n matchFilterSettingsWithCurrentFilterModel(\n selectedPreset: IPatientFilterPreset,\n gridApi: GridApi,\n shouldStoreFilterModel?: boolean\n ): void {\n let updatedFilterSettings = this.agGridLocalSettingsService.matchAndUpdateFilterSettings(\n selectedPreset.filterSettings,\n gridApi\n );\n if (selectedPreset.filterSettings && gridApi && updatedFilterSettings) {\n selectedPreset.filterSettings = updatedFilterSettings;\n if (shouldStoreFilterModel) {\n this.storeFilterSettings(selectedPreset);\n }\n }\n }\n storeFilterSettings(selectedPreset: IPatientFilterPreset) {\n this.agGridLocalSettingsService.storeFilterSettingsInLocalStorage(\n selectedPreset.category,\n selectedPreset?.presetKey,\n selectedPreset.filterSettings\n );\n }\n getNonActiveColumnsBetweenPresetAndFilterModel(\n columns: Array<{ [key: string]: boolean | string }>,\n filterModel: { [key: string]: any }\n ): string[] {\n let columnNames: string[] = [];\n for (let key in filterModel) {\n if (!columns.find(column => key in column)) {\n columnNames.push(key);\n }\n }\n return columnNames;\n }\n async storeFilterModelAndMatchFilterSettings(preset: IPatientFilterPreset, gridApi: GridApi) {\n // before it make sure to call this.changeDetectorRef.detectChanges()\n if (!preset.temporary && gridApi?.getColumnDefs().length > 0) {\n let filterModel = gridApi.getFilterModel();\n // CC-4491: need to check whether there are non-active columns that we need to keep in filter model.\n // Some of care management presets have different list of columns, but share the same filter model settings.\n // Here we need to find columns that are not available on the current preset,\n // but still want to keep them for the right care management preset because those columns are going to be removed by storing current filter model.\n // Confused?\n // For example: presetA has columns ['a', 'b'], while presetB has ['a', 'b', 'c'], both share the same filter settings.\n // Shared filter model between both presets has columns \"a\" to equal \"123\" and \"c\" to be \"321\": [{ a: { equalsTo: 123 } },{ c: { equalsTo: 321 } }].\n // When user switches to presetA, the logic pulls stored filter model that has column \"c\",\n // and before it applies stored filter model, it removes column \"c\" (by finding that column name from getNonActiveColumnsBetweenPresetAndFilterModel() result).\n // Then, on any filter change on presetA, filter model would be like [{a: {equalsTo: 111}}], but on filter storing process we going to lose column \"c\" values,\n // and that's what we need to prevent. While filter model is [{a: {equalsTo: 111}}], get stored filter model,\n // find columns that are in stored filter model and not in current preset (by calling getNonActiveColumnsBetweenPresetAndFilterModel()).\n // That should get us column \"c\". After that, merge new filter model with stored filter that has only non-active column:\n // new filter model is [{a: {equalsTo: 111}}], stored filter model [{ a: { equalsTo: 123 } },{ c: { equalsTo: 321 } }], make it equal to [{ a: { equalsTo: 111 } },{ c: { equalsTo: 321 } }].\n let storedFilterModel = await this.agGridLocalSettingsService.getStoredFilterModelFromLocalStorage(\n preset.category,\n preset?.presetKey\n );\n let nonActiveColumns = this.getNonActiveColumnsBetweenPresetAndFilterModel(preset.columns, storedFilterModel);\n for (let column of nonActiveColumns) {\n filterModel[column] = storedFilterModel[column];\n }\n\n this.agGridLocalSettingsService.storeFilterModelInLocalStorage(preset.category, preset.presetKey, filterModel);\n if (preset.filterSettings?.rows) {\n for (let r in preset.filterSettings.rows) {\n let row: AgGridTableFilterSetting = preset.filterSettings.rows[r];\n let newFilterValues = filterModel[row.name];\n if (newFilterValues) {\n if (newFilterValues.values) {\n preset.filterSettings.rows[r].excluded = row.options.filter(\n option => !newFilterValues.values.includes(option == 'None' ? null : option)\n );\n } else if (newFilterValues.filterType == 'date' || newFilterValues.filterType == 'number') {\n preset.filterSettings.rows[r] = { ...row, ...newFilterValues };\n }\n } else {\n if (preset.filterSettings.rows[r].excluded) {\n preset.filterSettings.rows[r].excluded = [];\n } else {\n preset.filterSettings.rows[r].dateFrom = null;\n preset.filterSettings.rows[r].dateTo = null;\n preset.filterSettings.rows[r].filter = null;\n preset.filterSettings.rows[r].filterTo = null;\n }\n }\n }\n this.agGridLocalSettingsService.updateCurrentFilterSettingsObservable(preset.filterSettings?.rows);\n }\n }\n }\n async applyStoredFilterModel(preset: IPatientFilterPreset, gridApi: GridApi, filterModel?: { [key: string]: any }) {\n let storedFilterModel =\n filterModel ||\n (await this.agGridLocalSettingsService.getStoredFilterModelFromLocalStorage(preset.category, preset?.presetKey));\n // CC-4491: need to remove missed columns from new filter model before applying it\n let nonActiveColumns = this.getNonActiveColumnsBetweenPresetAndFilterModel(preset.columns, storedFilterModel);\n for (let column of nonActiveColumns) {\n delete storedFilterModel[column];\n }\n this.setFilterModel(storedFilterModel, gridApi);\n }\n setFilterModel(filterModel: { [key: string]: any }, gridApi: GridApi): void {\n // before it call this.changeDetectorRef.detectChanges()\n // this.changeDetectorRef.detectChanges();\n gridApi.setFilterModel(filterModel);\n }\n resetFilterSettings(preset: IPatientFilterPreset): void {\n preset.filterSettings?.rows?.forEach((row, idx) => {\n if (row.type == 'set') {\n row.excluded = [];\n } else {\n row.filter = null;\n row.filterTo = null;\n row.type = 'unset';\n row.dateFrom = null;\n row.dateTo = null;\n }\n });\n }\n}\n","
\n \n
\n
\n
\n Patients Invite Form\n
\n
\n This invitation will be sent to\n {{ getValidPatientsLength() }} of\n {{ patients.length }} patients\n This invitation will be sent to all selected\n patients\n
\n

Step {{formStep}} of 3

\n
\n
\n \n \n \n
\n\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n\n \n
\n
\n
\n \n \n
\n
\n \n
\n \n \n \n \n
\n
\n
\n
\n\n \n \n \n
\n Invalid email \n
\n\n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n Invalid phone format \n
\n
\n\n \n
\n
\n \n
\n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n {{ patient.fullName || patient.patientName }}\n
\n
\n
0\n }\">First name
\n
0\n }\">Last name
\n
Email
\n
Phone number
\n
0\n }\">DOB
\n
\n
\n
Patient already invited
\n
\n
\n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n\n\n\n\n \n
\n
\n \n \n
\n
\n
\n \n {{ orgData.availableProceduresProcedureUILabel || \"Procedure\"}} Configuration\n Protocol Configuration\n
\n
\n\n \n

No protocols found.

\n \n
{{procedure.title}}
\n
\n\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n {{getSelectedModules(protocolId).length}}\n of\n {{protocolsById[protocolId].modules.length}} modules\n
\n
\n
\n
0\"\n (click)=\"toggleModuleSelectorOpen(protocolId)\">\n \n
\n
\n
\n
\n
\n
Select modules
\n
\n \n
\n\n \n
\n \n \n
\n
\n

Can't find protocol

\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n\n \n
\n

Summary

\n \n
\n \n
\n
{{patientClone.lastName}} {{patientClone.nickName}},\n {{patientClone.firstName}}
\n

{{patientClone.email}}

\n

{{patientClone.phoneNumber}}

\n
\n
\n \n
\n
\n \n
\n
\n
\n {{ patient.fullName }}\n
\n
\n
\n {{patient.inviteStatus.message}}\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
{{procedure.title}}: {{protocolsById[protocolId].name}}
\n
    \n
  • \n {{modulesById[module.protocolId] ? modulesById[module.protocolId].name :\n module.protocolId}}
  • \n
\n
\n
\n
\n\n
\n \n \n
\n\n

Ready to send?

\n
\n
\n
\n \n \n \n
\n
\n \n \n {{patientClone.inviteStatus?.message}}\n\n \n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n
\n
\n
\n Patient Re-Invite Form\n
\n
\n
\n
\n \n
\n \n
\n
{{patientClone.lastName}} {{patientClone.nickName}},\n {{patientClone.firstName}}
\n

{{patientClone.email}}

\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n {{patientClone.inviteStatus?.message}}\n\n \n
\n
\n
\n","import {\n Component,\n OnInit,\n Output,\n EventEmitter,\n Input,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\nimport { OrgService } from '@shared/services/org-service/org.service';\nimport { Patient } from '@shared/models/patient';\nimport { PatientService, ITrackApiAwvPatient, EpisodeOfCareProtocolAssignmentViewModel } from '@shared/services/patient/patient.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport _ from 'lodash';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { faUser, faFileAlt } from '@fortawesome/free-solid-svg-icons';\nimport { common } from '@hcd-caravanhealth/pkg-wptypes';\nimport { environment } from 'src/environments/environment';\nimport moment from 'moment';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\nimport {\n SubComponentId,\n ComponentId,\n ActionId,\n} from '@shared/models/audit-constants';\nimport { Activity } from '@shared/models/activity';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport { Protocol } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/protocol';\nimport { Procedure } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/organization';\nimport { PatientIdentifiersIssuers } from '@shared/models/module-constants';\nimport { PatientEngagement } from '@shared/enums';\nimport { ToastrService } from 'ngx-toastr';\n\n\n@Component({\n selector: 'coach-patient-invite-form',\n templateUrl: './patient-invite-form.component.html',\n styleUrls: ['./patient-invite-form.component.scss'],\n})\nexport class PatientInviteFormComponent implements OnInit, OnChanges {\n @Input() public patient;\n @Input() public patients;\n @Output() public closeForm: EventEmitter = new EventEmitter();\n @Output() public patientInvited: EventEmitter<{ _id: string }>;\n @Input() tier: IHierarchyTier;\n\n isModuleSelectorIsOpen: boolean;\n bulkInviteStatus: { message: string; counter: number };\n patientClone: Patient & {\n inviteStatus?: { loading: number; message: string };\n } = null;\n orgData: any = null;\n selectHolder: any = {\n primaryProfessional: {},\n newProtocol: {},\n newModules: [],\n newProcedure: {\n allowedProtocols: [],\n },\n extendedFields: {},\n };\n protocols: any = [];\n protocolsById: any = {};\n modulesById: any = {};\n professionals: wpapi.model.Professional[] = null;\n professionalsById: any = {};\n inviteStatus: any = {\n loading: 0, // 0 - no activity, 1 - loading, 2 - success, -1 - failed\n message: '',\n };\n welcomeMail: any = {};\n orgId: string = null;\n formStep: 1 | 2 | 3 = 1;\n private emitter: any;\n selectedProtocol: string = null;\n selectedProcedure: string = null;\n faUser = faUser;\n faFileAlt = faFileAlt;\n bulkPatientsProfessionalId: string;\n isPatientInvited: boolean = false;\n assignedProcedures: Procedure[];\n smsEnrollmentAgreed: boolean = false;\n private currentUser: wpapi.model.Professional;\n PatientEngagement = PatientEngagement;\n\n constructor(\n private OrgService: OrgService,\n private PatientService: PatientService,\n private auditService: AuditService,\n private ToastrMessageService: ToastrMessageService,\n private AuthService: AuthService,\n private toast: ToastrService,\n ) {\n this.getCurrentUserInfo();\n }\n\n // Note: Angular doesn't wait if you mark ngOnInit async\n ngOnInit() {\n this.getAndStoreProtocolsForOrg();\n this.loadPatientInviteDetailsForOrg();\n if (this.patients) {\n this.patients.forEach((p) => {\n if (p.dob) {\n p.dob = moment(p.dob).format('MM/DD/YYYY');\n }\n });\n this.bulkInviteStatus = {\n message: '',\n counter: 0,\n };\n }\n this.isPatientInvited =\n this.patient?.carePatient?.accountType === 'patient';\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.selectHolder = {\n primaryProfessional: {},\n newProtocol: {},\n newModules: [],\n newProcedure: {\n allowedProtocols: [],\n },\n extendedFields: {},\n };\n }\n ngOnChanges(changes: SimpleChanges) {\n if (\n changes.patient &&\n changes.patient.currentValue &&\n changes.patient.currentValue != changes.patient.previousValue\n ) {\n this.patientClone = _.cloneDeep(changes.patient.currentValue);\n }\n }\n close(action_target: string): void {\n this.closeForm.emit(action_target);\n }\n // ======== DATA GETTERS ============\n\n private async getCurrentUserInfo() {\n this.currentUser = await this.AuthService.getWellpepperUserInfo();\n }\n\n async getAndStoreProtocolsForOrg() {\n if(!this.orgId) {\n this.orgId = await this.PatientService.getWpOrgIdFromTierId(\n this.tier?.selectedTierId\n );\n }\n let protocols: any = await this.OrgService.getProtocolsForOrg(this.orgId);\n protocols.forEach((p) => {\n this.protocolsById[p._id] = p;\n this.storeModuleNames(p.modules);\n });\n };\n async loadPatientInviteDetailsForOrg() {\n if(!this.orgId) {\n this.orgId = await this.PatientService.getWpOrgIdFromTierId(\n this.tier?.selectedTierId\n );\n }\n\n return Promise.all([\n this.getProfessionalsForOrg(this.orgId),\n this.OrgService.getOrg(this.orgId)\n .then(org=>\n { this.orgData=org;\n })\n ]);\n }\n async getProfessionalsForOrg(orgId) {\n this.professionals = await this.OrgService.getProfessionalsForOrg(orgId);\n this.professionals = this.professionals.filter(\n (p) =>\n p.elegibleRoles?.filter((er) => er == 'primaryProfessional').length > 0\n );\n this.professionals.forEach((p) => {\n this.professionalsById[p._id] = p;\n });\n }\n storeModuleNames(modules) {\n if (modules) {\n modules.forEach(async (m) => {\n this.modulesById[m.protocolId] = await this.OrgService.getModuleName(\n m.protocolId\n );\n });\n }\n }\n\n // ========= RE-INVITE =============\n async reinvite(\n patient: Patient & { inviteStatus?: { loading: number; message: string } }\n ) {\n /**\n * @steps\n * 1. check whether org or protocol have inviteEmail\n * 2. Update patient's password\n * 3. Send invitation\n */\n\n let activeEpisodesOfCare = await this.PatientService.getPatientEpisodesOfCare(this.tier?.selectedTierId, this.patient);\n\n if (!patient.inviteStatus) {\n patient.inviteStatus = {\n loading: null,\n message: null,\n };\n }\n patient.inviteStatus.loading = 1;\n this.welcomeMail = Object.assign(\n { variables: {} },\n defaultWelcomeMail,\n this.orgData?.invitations?.welcomeMail,\n { shouldSend: false }\n );\n let newPassword = this.genRandomPassword();\n let wpUpdate = await this.PatientService.updateCarePatient(\n patient.carePatient._id,\n {\n password: newPassword,\n }\n );\n if (!wpUpdate) {\n patient.inviteStatus.loading = -1;\n patient.inviteStatus.message = \"Can't send invitation\";\n return;\n }\n this.welcomeMail.variables.password = newPassword;\n this.welcomeMail.sender = patient.professionalId;\n let addNotificationForPatient =\n await this.PatientService.addNotificationForPatient(\n patient.carePatient._id,\n this.welcomeMail\n );\n if(this.patient.notifications){\n this.patient.notifications.push(addNotificationForPatient);\n }\n let userId = this.patient.carePatient._id;\n let taskList = await this.PatientService.getTasks(this.tier, this.patient);\n let taskId = \"\";\n let userHasSeenSMSOptOut = false;\n for (const task of taskList ){\n if (task.userId == userId && task.type == 'twilioStudioFlow'){\n taskId = task._id;\n }\n }\n let triggerTwilioFlowForPatient = await this.PatientService.triggerTwilioFlowForPatient(this.orgId, userId, taskId, userHasSeenSMSOptOut);\n\n if (!addNotificationForPatient) {\n patient.inviteStatus.loading = -1;\n patient.inviteStatus.message = \"Can't send invitation\";\n return false;\n } else {\n patient.inviteStatus.loading = 2;\n patient.inviteStatus.message = 'Successfully sent invitation';\n return true;\n }\n }\n\n // ========= CREATE A NEW PATIENT =============\n async submit(\n patient: Patient & {\n inviteStatus?: { loading: number; message: string };\n professionalName?: string;\n } & {\n trackAwvPatient?: ITrackApiAwvPatient;\n },\n professionalId: string\n ) {\n if (!patient.inviteStatus) {\n patient.inviteStatus = {\n loading: null,\n message: null,\n };\n }\n patient.inviteStatus.loading = 1;\n patient.inviteStatus.message = 'Storing patient';\n\n let patientResult = await this.createUser(patient, professionalId);\n if (!patientResult) {\n patient.inviteStatus.loading = -1;\n\n if(!patient.inviteStatus.message)\n {\n\n patient.inviteStatus.message =\n patientResult?.error?.message || \"Can't create user\";\n }\n return;\n }\n let assignedProceduresAndProtocolsResult =\n await this.assignProceduresAndProtocols(\n patient,\n professionalId,\n patientResult\n );\n if (!assignedProceduresAndProtocolsResult) {\n return;\n }\n\n /*\n // SMS is sent automatically from the backend\n if (this.emailAndSmsInvitationEligible.email) {\n await this.sendEmailInvite(patient, professionalId, patientResult);\n\n }\n */\n\n if(this.smsEnrollmentAgreed){\n\n let enrolledinSMSby = `${\n this.currentUser.lastName && this.currentUser.firstName\n ? ` ${this.currentUser.firstName} ${this.currentUser.lastName} `\n : `${this.currentUser.email}`\n }`;\n let invitedtoSMS: Activity = {\n type: 'invitation',\n date: new Date().toString(),\n title: 'Enrolled in SMS by ' + enrolledinSMSby,\n description: null,\n detail: null,\n };\n this.patient.activities.push(invitedtoSMS);\n this.patient.activities.sort((a, b) => {\n if (moment(a.createdAt).isAfter(moment(b.createdAt))){\n return -1;\n }\n else if (moment(a.createdAt).isSame(moment(b.createdAt))){\n return 0;\n }\n else{\n return 1;\n }\n });\n }\n patient.inviteStatus.loading = 2;\n patient.inviteStatus.message =\n 'Successfully invited and sent notification';\n let invitedAct: Activity = {\n type: 'invitation',\n date: new Date().toString(),\n title: 'Invited',\n description: null,\n detail: null,\n };\n this.patient.activities.push(invitedAct);\n return true;\n\n\n }\n\n async createUser(\n patient: Patient & {\n inviteStatus?: { loading: number; message: string };\n professionalName?: string;\n } & {\n trackAwvPatient?: ITrackApiAwvPatient;\n },\n professionalId: string\n ): Promise {\n let date = new Date();\n // TODO - Add a \"PatientCreate\" type in wpapi.model\n\n const orgMappedTierId =\n await this.PatientService.getWpMappedTierIdFromTierId(\n this.tier?.selectedTierId\n );\n const orgMappedTierNum =\n await this.PatientService.getWpMappedTierNumFromTierId(\n this.tier?.selectedTierId\n );\n let patientDetails: wpapi.model.Patient &\n common.PermissionedObject & {\n password: string;\n requiresPasswordReset: boolean;\n } = {\n ACL: {\n '57980332bba6670e7409e9e5': { read: true, write: true },\n [this.orgId]: { read: true, write: true },\n [professionalId]: { read: true, write: true },\n },\n accountType: 'patient',\n currentTimeZoneName:\n patient.currentTimeZoneName ||\n Intl.DateTimeFormat().resolvedOptions().timeZone,\n currentTimeZoneOffsetSec:\n patient.currentTimeZoneOffsetSec || date.getTimezoneOffset() * -60,\n dob:\n patient.dob ||\n patient.trackPatient?.dob ||\n patient.trackAwvPatient?.dob, // trackAwvPatient\n email:\n patient.email ||\n patient.trackPatient?.email ||\n patient.trackAwvPatient?.email,\n firstName: patient.firstName,\n gender: this.getGenderFromString(\n patient.gender ||\n patient.trackPatient?.gender ||\n patient.trackAwvPatient?.gender\n ),\n lastName: patient.lastName,\n mbi:\n patient.mbi ||\n patient.trackPatient?.mbi ||\n patient.trackAwvPatient?.mbi,\n mrn:\n patient.mrn\n // Track API doesn't return a MRN afaik\n /* ||\n patient.trackPatient?.mrn ||\n patient.trackAwvPatient?.mrn,\n */,\n\n nickName:\n patient.nickName?.trim() ||\n patient.trackPatient?.preferredName ||\n patient.trackAwvPatient?.preferredName ||\n '',\n // CC-3242 would like to generate the initial password on the server side\n // but this doesn't work because the API currently doesn't integrate sending a\n // the invitation email with temporary password.\n // The password is generated but then the cleartext value is thrown away.\n // hints: {\n // generatePassword: true\n // },\n // Leaving the password generation here\n password: this.genRandomPassword(),\n requiresPasswordReset: true,\n phoneNumber: patient.phoneNumber?.replace(/\\D+/g, '') || '',\n professionalId: professionalId,\n userMustConfirmDetails: true,\n // CC-1727 - username may have been pre-generated, don't use it for an email address which would have been collected in this form.\n username:\n patient.email ||\n patient.trackPatient?.email ||\n patient.trackAwvPatient?.email,\n identifiers: [\n // Don't save chPatId as an identifier - it's not going to be unique\n {\n type: 'custom',\n issuer: environment.patientIdentityProvider.issuer,\n subject: environment.patientIdentityProvider.formatSubject(\n orgMappedTierId,\n patient.chPatId\n ),\n createdAt: new Date().toDateString(),\n provider: 'custom'\n }\n ],\n };\n\n\n if(this.emailAndSmsInvitationEligible.sms) {\n try {\n if(this.smsEnrollmentAgreed){\n let enrolledinSMSby = `${\n this.currentUser.lastName && this.currentUser.firstName\n ? ` ${this.currentUser.firstName} ${this.currentUser.lastName} `\n : `${this.currentUser.email}`\n }`;\n\n let today = new Date();\n let dd = String(today.getDate()).padStart(2, '0');\n let mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!\n let yyyy = today.getFullYear();\n\n patientDetails.verbalConsent = {\n acceptedBy: this.currentUser._id,\n acceptedByName: enrolledinSMSby,\n acceptedByEulaId: 'ObjectId(\"639b9ced9ebf57f25b5da44a\")', /* Hardcoded for now */\n acceptedDate: mm + '/' + dd + '/' + yyyy,\n };\n }\n }\n catch(e){\n console.log('SMS Enrollment Error:' , e);\n }\n\n }\n\n if(this.emailAndSmsInvitationEligible.sms) {\n patientDetails.identifiers.push({\n issuer: PatientIdentifiersIssuers.SmsCarePlanPhoneNumber,\n type: 'custom',\n subject: this.PatientService.formatPhoneNumberForTwilio(patient.phoneNumber),\n createdAt: new Date().toDateString(),\n provider: 'custom',\n canBeUpdated: true\n })\n }\n if (patient?.carePatient?._id) {\n patientDetails._id = patient.carePatient._id;\n }\n let patientResult: any = await this.PatientService.createUser(\n patientDetails\n );\n if (!patientResult || patientResult.error) {\n //Temporary placeholder only, need to pre-check the dusplicate phone number/email in an earlier screen in next story.\n if(patientResult.status === 409 && this.smsEnrollmentAgreed){\n const isEmailAndSmsSubscribed = Object.values(this.protocolsById).filter((r:any)=> r.isSelected).length > 1;\n patient.inviteStatus.message =\n `This phone number ${isEmailAndSmsSubscribed ? 'or email' : ''} is already in use, please ${isEmailAndSmsSubscribed ? '' : 'update phone number or '}contact Signify Health for help`\n\n }\n return false;\n } else if (this.patientClone) {\n // Using Object.assign generates errors when assigning to read-only properties\n this.patient.refreshFromCareAndTrackPatient(\n patientResult,\n this.patientClone.trackPatient\n ); // Object.assign(patient, patientResult)\n this.patient.professional = await this.PatientService.getProfessional(\n patientResult.professionalId\n );\n this.patient.phoneNumber = Patient.formatPhoneNumber(\n this.patient.phoneNumber\n );\n } else {\n patient.carePatient = patientResult;\n patient.professionalName = (\n await this.PatientService.getProfessional(patientResult.professionalId)\n ).firstName;\n }\n\n await this.PatientService.updateTrackPatient(\n orgMappedTierId,\n orgMappedTierNum,\n {\n email: patientDetails.email,\n preferredName: patientDetails.nickName || '',\n phone: patientDetails.phoneNumber,\n tierID: orgMappedTierId,\n tierNum: orgMappedTierNum,\n carePatientId: patientResult._id,\n mbi: patientDetails.mbi,\n firstName: patient.firstName,\n lastName: patient.lastName,\n middleName: patient.middleName,\n dateOfBirth: patientDetails.dob,\n gender: patientDetails.gender?.toUpperCase()?.[0],\n chPatId: Number(patient.chPatId),\n ChPatID: Number(patient.chPatId),\n supplementalId:\n patient.supplementalId || patient.trackPatient?.supplementalID,\n }\n );\n\n this.auditService.auditLog(\n 'Invite Patient',\n PatientEngagement.PatientApp,\n SubComponentId.Invitations,\n ActionId.Insert,\n patient.chPatId,\n {\n tier: orgMappedTierNum,\n selectedTierId: orgMappedTierId,\n } as IHierarchyTier,\n null\n );\n patientResult.password = patientDetails.password;\n this.patient.phoneNumber = patientDetails.phoneNumber;\n return patientResult;\n }\n async assignProceduresAndProtocols(\n patient: Patient & {\n inviteStatus?: { loading: number; message: string };\n professionalName?: string;\n } & {\n trackAwvPatient?: ITrackApiAwvPatient;\n },\n professionalId: string,\n patientResult: any\n ): Promise {\n for (let p in this.orgData.availableProcedures) {\n if (this.orgData.availableProcedures[p].isSelected) {\n patient.inviteStatus.message = `Assigning procedure ${this.orgData.availableProcedures[p].title}`;\n // assignedProcedures\n var episodeOfCare: any = { isActive: true };\n if (this.orgData.hasProcedures) {\n var newProcedure = this.orgData.availableProcedures[p];\n episodeOfCare.procedureName = newProcedure\n ? newProcedure.name\n : 'Procedure';\n if (newProcedure && newProcedure.shortName) {\n episodeOfCare.procedureShortName = newProcedure.shortName;\n }\n if (newProcedure && newProcedure.extendedFields) {\n episodeOfCare.extendedFields = newProcedure.extendedFields;\n }\n } else {\n episodeOfCare = {\n isActive: true,\n procedureName: 'Surgery',\n procedureShortName: 'Surgery',\n };\n }\n episodeOfCare.procedureTimeZoneName = professionalId\n ? this.professionalsById[professionalId].currentTimeZoneName\n : patient.currentTimeZoneName ||\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n let assignedEpisodeOfCare =\n await this.PatientService.assignEpisodeOfCare({\n episodeOfCare: episodeOfCare,\n patient: patientResult,\n });\n if (!assignedEpisodeOfCare) {\n patient.inviteStatus.loading = -1;\n patient.inviteStatus.message = \"Can't assign episode of care\";\n return false;\n }\n // =================== ASSIGNING PROTOCOLS ===================\n for (let p2 in this.orgData.availableProcedures[p].allowedProtocols) {\n let prot = this.orgData.availableProcedures[p].allowedProtocols[p2];\n if (this.protocolsById[prot]?.isSelected) {\n patient.inviteStatus.message = `Assigning protocol ${this.protocolsById[prot].name}`;\n let modules = {};\n this.protocolsById[prot]?.modules?.forEach((m) => {\n if (m.isActive) {\n modules[m['protocolId']] = {\n isActive: true,\n };\n }\n });\n let assignedProtocol = await this.PatientService.assignProtocol({\n protocol: this.protocolsById[prot],\n patient: patientResult,\n modules: modules,\n episodeOfCare: assignedEpisodeOfCare,\n });\n if (this.doesProtocolHaveTwilioFlowTask(this.protocolsById[prot])){\n let userId = this.patient.carePatient._id;\n let taskId = '';\n let userHasSeenSMSOptOut = false;\n let taskList : any = assignedProtocol.tasks;\n for (const task of taskList ){\n if (task.userId == userId && task.type == 'twilioStudioFlow'){\n taskId = task._id;\n }\n }\n let triggerTwilioFlowForPatient = await this.PatientService.triggerTwilioFlowForPatient(this.orgId, userId, taskId, userHasSeenSMSOptOut);\n if(triggerTwilioFlowForPatient){\n this.toast.success('Invitation for Daily Monitoring Program is sent. It may take a few minutes for delivery.');\n }\n }\n if (!assignedProtocol) {\n patient.inviteStatus.loading = -1;\n patient.inviteStatus.message = \"Can't assign protocol\";\n return false;\n }\n }\n }\n }\n }\n return true;\n }\n async sendEmailInvite(\n patient: Patient & {\n inviteStatus?: { loading: number; message: string };\n professionalName?: string;\n } & {\n trackAwvPatient?: ITrackApiAwvPatient;\n },\n professionalId: string,\n patientResult: any\n ): Promise {\n\n this.welcomeMail = Object.assign(\n { variables: {} },\n defaultWelcomeMail,\n this.orgData?.invitations?.welcomeMail,\n { shouldSend: true }\n );\n if(!this.welcomeMail.text){\n patient.inviteStatus.message = 'Successfully invited. Notification process is skipped. Organization doesn\\'t have the invite text.';\n return true;\n }\n this.welcomeMail.variables.password = patientResult.password;\n this.welcomeMail.sender = professionalId;\n let addNotificationForPatient = await this.PatientService.addNotificationForPatient(patientResult._id, this.welcomeMail);\n\n if (!addNotificationForPatient) {\n patient.inviteStatus.loading = -1;\n patient.inviteStatus.message = \"Can't send notification, but patient was successfully added\";\n }else {\n patient.inviteStatus.loading = 2;\n patient.inviteStatus.message =\n 'Successfully invited and sent notification';\n let invitedAct: Activity = {\n type: 'invitation',\n date: new Date().toString(),\n title: 'Invited',\n description: null,\n detail: null,\n };\n this.patient.activities.push(invitedAct);\n return true;\n }\n };\n\n switchPage(num: number): void {\n this.formStep += num;\n }\n public toggleModuleSelectorOpen(protocolId?: string): void {\n for (let p_Id in this.protocolsById) {\n if (this.protocolsById[p_Id]) {\n this.protocolsById[p_Id].isModuleSelectorIsOpen =\n p_Id == protocolId && !this.protocolsById[p_Id].isModuleSelectorIsOpen\n ? true\n : false;\n }\n }\n }\n selectProtocol(procedure: any, protocolId: string): void {\n if (this.protocolsById[protocolId]) {\n this.protocolsById[protocolId].isSelected = this.protocolsById[protocolId]\n .isSelected\n ? false\n : true;\n }\n procedure.isSelected =\n procedure.allowedProtocols.filter(\n (protocol) => this.protocolsById[protocol]?.isSelected\n ).length > 0\n ? true\n : false;\n }\n checkProcedureAndProtocol(procedure: any, protocolId: string): void {\n if (\n this.protocolsById[protocolId] &&\n this.getSelectedModules(protocolId).length > 0\n ) {\n this.protocolsById[protocolId].isSelected = true;\n procedure.isSelected =\n procedure.allowedProtocols.filter(\n (protocol) => this.protocolsById[protocol]?.isSelected\n ).length > 0\n ? true\n : false;\n }\n }\n getSelectedModules(protocolId: string): any[] {\n return this.protocolsById[protocolId]?.modules\n ? this.protocolsById[protocolId].modules.filter((m) => m.isActive)\n : [];\n }\n public getSelectedProceduresLength(): number {\n // Add more rules if needed\n return this.orgData.availableProcedures.filter(\n (procedure) => procedure.isSelected\n ).length;\n }\n isPatientValid(): boolean {\n return (\n this.patientClone.professionalId?.length > 0 &&\n this.patientClone.gender?.length > 0 &&\n this.isInputValid(this.patientClone, 'phoneNumber') &&\n this.isInputValid(this.patientClone, 'email') &&\n this.patientClone.email?.length > 1\n );\n }\n isInputValid(patient: Patient, target: string): boolean {\n switch(target){\n case 'email':\n return this.PatientService.isEmailFormatValid(patient[target])\n case 'nickName':\n return patient[target].length > 0\n case 'phoneNumber':\n return this.PatientService.isPhoneNumberFormatValid(patient[target])\n }\n }\n doesProtocolHaveTwilioFlowTask(protocol: Protocol | EpisodeOfCareProtocolAssignmentViewModel): boolean {\n return !!protocol.tasks?.find(t => t.type == \"twilioStudioFlow\");\n }\n\n get isSMSPatient(): boolean {\n let result = false\n const smsTask = this.patient.tasks.find(task => task.isActive && task.type == \"twilioStudioFlow\")\n \n if(smsTask)\n return true;\n else\n return false;\n }\n /**\n * Check whether selected protocol will send an SMS or email invitation\n */\n get emailAndSmsInvitationEligible(): { email: boolean, sms: boolean } {\n let result = { email: !!this.orgData?.invitations?.welcomeMail, sms: false };\n for (let procedure in this.orgData?.availableProcedures) {\n if (this.orgData.availableProcedures[procedure].isSelected) {\n for (let allowedProtocolId in this.orgData.availableProcedures[procedure].allowedProtocols) {\n if (result.email && result.sms) return result;\n const prot = this.orgData.availableProcedures[procedure].allowedProtocols[allowedProtocolId];\n if (this.protocolsById[prot]?.isSelected) {\n if (this.doesProtocolHaveTwilioFlowTask(this.protocolsById[prot])) {\n result.sms = true\n } else if (!result.email) {\n result.email = !!this.protocolsById[prot].invitations?.welcomeMail; // if org invite is missing, then check protocol invite\n }\n }\n }\n }\n };\n return result;\n }\n\n\n\n async test() {\n let result = { email: !!this.orgData?.invitations?.welcomeMail, sms: false };\n\n console.log(\"result =>\", result)\n return result;\n }\n // ========= BULK INVITE =============\n isPatientValidForInvitation(\n patient: Patient & { inviteStatus?: any; careId?: string }\n ): boolean {\n return (\n (!patient.carePatient || patient.inviteStatus) &&\n this.isInputValid(patient, 'email') &&\n this.isInputValid(patient, 'phoneNumber') &&\n (patient.dob?.length > 0 || patient.dob?.length > 0) &&\n patient.firstName?.length > 0 &&\n patient.lastName?.length > 0 &&\n !patient.careId\n );\n }\n getValidPatientsLength(): number {\n return this.patients.filter((p) => this.isPatientValidForInvitation(p))\n .length;\n }\n checkAllPatientsInvitedStatus(loadingCode: number): number {\n return this.patients.filter(\n (p) =>\n this.isPatientValidForInvitation(p) &&\n p.inviteStatus?.loading == loadingCode\n ).length;\n }\n async submitMultiplePatients() {\n this.bulkInviteStatus.counter = 0;\n this.patients.forEach((patient) => {\n if (this.isPatientValidForInvitation(patient)) {\n this.submit(patient, this.bulkPatientsProfessionalId);\n }\n this.bulkInviteStatus.counter++;\n });\n this.bulkInviteStatus.message = 'done';\n }\n // ========= PASSWORD GENERATOR =========\n getRandomNum(lbound: number, ubound: number): number {\n 'use strict';\n\n // CC-3242 use Crypto.getRandomValues instead of Math.random\n const arr = new Uint32Array(1);\n crypto.getRandomValues(arr);\n const val = arr[0].valueOf()/Math.pow(2,32);\n return Math.floor(val * (ubound - lbound)) + lbound;\n }\n\n getRandomChar(number, lower, upper, other, extra): string {\n 'use strict';\n var numberChars = '23456789';\n var lowerChars = 'abcdefghijkmnpqrstuvwxyz';\n var upperChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n var otherChars = '`~!@#$%^&*()-_=+[{]}\\\\|;:\\'\",<.>/? ';\n var charSet = extra;\n if (number === true) {\n charSet += numberChars;\n }\n if (lower === true) {\n charSet += lowerChars;\n }\n if (upper === true) {\n charSet += upperChars;\n }\n if (other === true) {\n charSet += otherChars;\n }\n return charSet.charAt(this.getRandomNum(0, charSet.length));\n }\n\n genPassword(\n length,\n extraChars,\n firstNumber,\n firstLower,\n firstUpper,\n firstOther,\n latterNumber,\n latterLower,\n latterUpper,\n latterOther\n ): string {\n 'use strict';\n\n var rc = '';\n if (length > 0) {\n rc =\n rc +\n this.getRandomChar(\n firstNumber,\n firstLower,\n firstUpper,\n firstOther,\n extraChars\n );\n }\n // this enforces that the password satisfies the (current) wp password complexity criteria\n if (latterNumber && !firstNumber) {\n rc = rc + this.getRandomChar(true, false, false, false, extraChars);\n }\n if (latterLower && !firstLower) {\n rc = rc + this.getRandomChar(false, true, false, false, extraChars);\n }\n if (latterUpper && !firstUpper) {\n rc = rc + this.getRandomChar(false, false, true, false, extraChars);\n }\n if (latterOther && !firstOther) {\n rc = rc + this.getRandomChar(false, false, false, true, extraChars);\n }\n for (var idx = rc.length; idx < length; ++idx) {\n rc =\n rc +\n this.getRandomChar(\n latterNumber,\n latterLower,\n latterUpper,\n latterOther,\n extraChars\n );\n }\n return rc;\n }\n\n getGenderFromString(s: string): common.UserGender {\n if (!s || s.length < 1) {\n return 'unknown';\n }\n\n switch (s[0].toLowerCase()) {\n case 'm':\n return 'male';\n case 'f':\n return 'female';\n case 'o':\n return 'other';\n default:\n return 'unknown';\n }\n }\n\n genRandomPassword(): string {\n // randomly start with a letter or number\n var firstNum = this.getRandomNum(0, 2) == 1;\n return this.genPassword(\n 8, //length\n '', //extraChars,\n firstNum, // firstNumber,\n !firstNum, // firstLower,\n false, // firstUpper,\n false, // firstOther,\n true, // latterNumber,\n true, // latterLower,\n false, // latterUpper,\n false\n ); //latterOther)\n }\n}\n\nconst defaultWelcomeMail = {\n method: 'email',\n subject: 'Welcome to Wellpepper',\n text: `Dear {{recipient.firstName}},\n\nWe get it - when you have health concerns, you want answers fast.\nThat’s why our staff here at {{sender.organizationName}} are using an app called Wellpepper to communicate with our patients\n\nThis free app lets you:\n\\t• Send/receive messages with your clinical team\n\\t• Take surveys related to your health\n\\t• Get education on your specific health conditions\n\\t• Track and share your vitals\n\\t• And much more!\n\nStill have questions? Our nurses can help you understand the app and any privacy concerns you may have.\n\nTo get started, download the app and sign in with your user name and temporary password provided below.\n\nfor iOS (iPhone, iPad): https://wppr.co/ios\nfor Android: https://wppr.co/android\nor visit our web portal: {{link_patientweb}}\nIf the above link doesn’t work for you, please visit https://patient.wellpepper.com and enter in your username and temporary password.\n\nYour username: {{recipient.username}}\nnYour temporary password: {{password}}\n\nWe look forward to hearing from you.\n\nYour {{sender.organizationName}} doctors and nurses\n`,\n html: `\n\n\n\n\n Wellpepper Invitation\n \n \n \n \n\n\n\n \n
Staying connected at home
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n
\n \n
\n \n \n \n \n \n
\n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Dear {{recipient.firstName}},
We get it – when you have health\n concerns, you want answers fast.
That’s why our staff here at\n {{sender.organizationName}} are using an app called Wellpepper to\n communicate with our patients
This free app lets you:
\n
    \n
  • Send/receive messages with your clinical team
  • \n
  • Take surveys related to your health
  • \n
  • Get education on your specific health conditions
  • \n
  • Track and share your vitals
  • \n
  • And much more!
  • \n
\n
Still have questions? Our nurses can\n help you understand the app and any privacy concerns you may have.\n {{organization.phoneNumber}}
We look forward to hearing from you.\n
Your\n {{sender.organizationName}} doctors and nurses
\n
\n
\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n
Get the App
To get started, download the app\n and sign in with your user name and temporary password provided below.
\n
\n \n \n \n \n \n
\n \n
\n \n \n \n \n
\n \n \n \n \n
\n \n \n \n \n
\n
\n
\n
\n \n
\n \n \n \n \n
\n \n \n \n \n
\n \n \n \n \n
\n \n \n \n \n
\n
\n
\n
\n
\n \n
\n \n
\n \n \n \n \n \n
\n \n
\n \n \n \n \n
\n \n \n \n \n
\n \n \n \n \n \n \n \n
USER\n NAME:
{{recipient.username}}\n
\n
\n
\n
\n \n
\n \n \n \n \n
\n \n \n \n \n
\n \n \n \n \n
\n \n \n \n \n \n \n \n
TEMPORARY PASSWORD:
\n {{password}}
\n
\n
\n
\n
\n \n
\n \n
\n \n \n \n \n \n
Or Visit Our Web Portal
\n
\n \n \n \n \n \n
\n \n \n \n \n
Web Portal →
\n
\n
\n \n \n \n \n \n
If the above link doesn’t work for\n you, please visit https://patient.wellpepper.com and enter in your username and temporary password.\n
\n
\n \n
\n \n \n \n \n \n
\n\n\n\n`,\n};\n","/* tslint:disable */\n/* eslint-disable */\n\n/**\n * status of a workflow\n */\nexport enum AwvWorkflowStatuses {\n ReadyForOutreach = 'READY_FOR_OUTREACH',\n OutreachAttempted = 'OUTREACH_ATTEMPTED',\n Scheduled = 'SCHEDULED',\n Completed = 'COMPLETED',\n Declined = 'DECLINED',\n Ineligible = 'INELIGIBLE',\n DeferredToSignify = 'DEFERRED_TO_SIGNIFY',\n Other = 'OTHER'\n}\n","export class BackendError {\n errorStatus: number = null;\n errorStatusText = '';\n userFriendlyErrorMessage = '';\n constructor(errorStatus: number, errorStatusText: string, userFriendlyErrorMessage: string){\n this.errorStatus = errorStatus;\n this.userFriendlyErrorMessage = userFriendlyErrorMessage;\n this.errorStatusText = errorStatusText;\n }\n}\n","import { AwvWorkflowStatuses } from '@api/care-orch/models/awv-workflow-statuses';\nimport { AwvWorkflow } from '@api/care-orch/models/awv-workflow';\n\nexport class AwvActivityChangeEvent {\n chPatId: number = null;\n before?: AwvActivityChangeEventDetails;\n after: AwvActivityChangeEventDetails = null;\n constructor(chPatId: number, beforeAwvWorkflow: AwvWorkflow, afterAwvWorkflow: AwvWorkflow){\n this.before = beforeAwvWorkflow === null ? null :\n new AwvActivityChangeEventDetails(beforeAwvWorkflow.status, new Date(beforeAwvWorkflow.dueDateTime));\n this.after = new AwvActivityChangeEventDetails(afterAwvWorkflow.status, new Date(afterAwvWorkflow.dueDateTime));\n this.chPatId = chPatId;\n }\n}\n\nexport class AwvActivityChangeEventDetails {\n status: AwvWorkflowStatuses = null;\n dueDate: Date = null;\n constructor(status: AwvWorkflowStatuses, dueDate: Date) {\n this.status = status;\n this.dueDate = dueDate;\n }\n}\n\n\n","import { Activity } from '@api/care-orch/models/activity';\nimport { ActivityType } from '@api/care-orch/models/activity-type';\nimport { AwvWorkflowStatuses } from '@api/care-orch/models/awv-workflow-statuses';\n\nexport abstract class WorkflowChangeEvent {\n protected constructor(public program: string,\n public chPatId: number,\n public userEmail: string,\n public oldStatus: AwvWorkflowStatuses,\n public newStatus: AwvWorkflowStatuses,\n public durationInMs: number,\n public tierIds: TierIds,\n public error?: any) {}\n}\n\nexport class WorkflowSaveEvent extends WorkflowChangeEvent {\n constructor(public program: string,\n public chPatId: number,\n public userEmail: string,\n public oldStatus: AwvWorkflowStatuses,\n public newStatus: AwvWorkflowStatuses,\n public durationInMs: number,\n public tierIds: TierIds,\n public error: any,\n public activity: Activity) {\n super(program, chPatId, userEmail, oldStatus, newStatus, durationInMs, tierIds, error);\n }\n}\n\nexport class WorkflowEditEvent extends WorkflowChangeEvent {\n constructor(public program: string,\n public chPatId: number,\n public userEmail: string,\n public oldStatus: AwvWorkflowStatuses,\n public newStatus: AwvWorkflowStatuses,\n public durationInMs: number,\n public tierIds: TierIds,\n public error: any,\n public oldActivity: Activity,\n public newActivity: Activity) {\n super(program, chPatId, userEmail, oldStatus, newStatus, durationInMs, tierIds, error);\n }\n}\n\nexport class WorkflowDeleteEvent extends WorkflowChangeEvent {\n constructor(public program: string,\n public chPatId: number,\n public userEmail: string,\n public oldStatus: AwvWorkflowStatuses,\n public newStatus: AwvWorkflowStatuses,\n public durationInMs: number,\n public tierIds: TierIds,\n public error: any,\n public deletedActivityType: ActivityType) {\n super(program, chPatId, userEmail, oldStatus, newStatus, durationInMs, tierIds, error);\n }\n}\n\nexport enum Program {\n AWV = 'AWV'\n}\n\nexport enum ChangeType {\n SAVE = 'Save',\n EDIT = 'Edit',\n DELETE = 'Delete'\n}\n\nexport enum WorkflowEventId {\n WORKFLOW_SAVE = 'Workflow Save',\n WORKFLOW_EDIT = 'Workflow Edit',\n WORKFLOW_DELETE = 'Workflow Delete'\n}\n\nexport class TierIds {\n constructor(public tier2Id: string,\n public tier3Id: string,\n public tier4Id: string) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport {PracticeListResult} from \"@api/track/models/practice-list-result\";\nimport {HierarchyService} from \"@api/track/services/hierarchy.service\";\nimport {ToastrMessageService} from \"@shared/services/toastr-message/toastr-message.service\";\nimport {Patient} from \"@shared/models/patient\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PracticeService {\n\n lastTierNum: number;\n lastTierId: string;\n lastPracticeList: PracticeListResult[];\n\n constructor(private hierarchyService: HierarchyService, private toastrMessageService: ToastrMessageService) {}\n\n public async getPracticeById(patient: Patient, practiceId: string): Promise {\n return (await this.getPractices(patient)).find(p => p.tier4Id === practiceId).tier4Name;\n }\n\n public async getPractices(patient: Patient): Promise {\n let tierId = patient.tier3_ID;\n let tierNum = 3;\n\n if (!tierId) {\n tierId = patient.tier2_ID;\n tierNum = 2;\n }\n\n if (!tierId) {\n console.error('No tier 2 for this patient, unable to fetch practices list');\n this.resetLastResult();\n return [];\n }\n\n // if we haven't dealt with this tier 3 in the past, we need to go fetch its list of practices\n if (this.lastPracticeList == null || this.lastTierNum !== tierNum || this.lastTierId !== tierId) {\n this.resetLastResult();\n\n try {\n const resp = await this.hierarchyService.hierarchyPracticesGet({tierNum, tierId}).toPromise();\n this.lastTierNum = tierNum;\n this.lastTierId = tierId;\n this.lastPracticeList = resp;\n } catch (e) {\n this.toastrMessageService.error(e);\n }\n }\n\n return this.lastPracticeList;\n }\n\n private resetLastResult(): void {\n this.lastTierNum = null;\n this.lastTierId = null;\n this.lastPracticeList = null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {BackendError} from '@shared/services/awv-workflow/backend-error';\nimport { AwvActivityChangeEvent } from '@shared/services/awv-workflow/awv-activity-change-event';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AwvWorkflowService {\n private _backendError$ = new Subject();\n private _updateSuccessful$ = new Subject();\n private _awvActivityChangeEvent$ = new Subject();\n/*\nExpose backendError as observable to conceal subject like behaviour.\n*/\n public get backendError$(): Observable {\n return this._backendError$;\n }\n public get updateSuccessful$(): Observable {\n return this._updateSuccessful$;\n }\n public get awvActivityChangeEvent$(): Observable {\n return this._awvActivityChangeEvent$;\n }\n public publishBackendError(backendError: BackendError): void{\n this._backendError$.next(backendError);\n }\n\n public publishUpdateSuccessful(): void {\n this._updateSuccessful$.next();\n }\n\n public publishAwvActivityChangeEvent(awvActivityChangeEvent: AwvActivityChangeEvent): void{\n this._awvActivityChangeEvent$.next(awvActivityChangeEvent);\n }\n\n}\n","import { AwvWorkflow } from '@api/care-orch/models/awv-workflow';\nimport { Activity } from '@api/care-orch/models/activity';\nimport {\n ChangeType,\n Program,\n TierIds,\n WorkflowChangeEvent,\n WorkflowDeleteEvent,\n WorkflowEditEvent,\n WorkflowEventId,\n WorkflowSaveEvent\n} from '@shared/services/mixpanel/events/workflow-events';\nimport { Injectable } from '@angular/core';\nimport { MixpanelService } from '@shared/services/mixpanel/mixpanel.service';\nimport { ActivityType } from '@api/care-orch/models/activity-type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WorkflowEventsService {\n program: Program;\n chPatId: number;\n userEmail: string;\n startTime: number;\n changeType: ChangeType;\n activity: Activity;\n activityType: ActivityType;\n tierIds: TierIds;\n\n constructor(private mixpanel: MixpanelService) {}\n\n private clearTrackedState(): void {\n this.startTime = null;\n this.changeType = null;\n this.activity = null;\n this.activityType = null;\n }\n\n public trackProgramWithPatient(program: Program, chPatId: number, tierIds: TierIds, userEmail: string): void {\n this.clearTrackedState();\n this.program = program;\n this.chPatId = chPatId;\n this.tierIds = tierIds;\n this.userEmail = userEmail;\n }\n\n public trackSave(activity: Activity): void {\n this.changeType = ChangeType.SAVE;\n this.startTime = Date.now();\n this.activity = activity;\n }\n\n public trackEdit(newActivity: Activity): void {\n this.changeType = ChangeType.EDIT;\n this.startTime = Date.now();\n this.activity = newActivity;\n }\n\n public trackDelete(activityType: ActivityType): void {\n this.changeType = ChangeType.DELETE;\n this.startTime = Date.now();\n this.activityType = activityType;\n }\n\n public emit(oldWorkflow: AwvWorkflow, newWorkflow: AwvWorkflow, error?: any): void {\n const durationInMs = Date.now() - this.startTime;\n\n let event: WorkflowChangeEvent;\n let eventId: string;\n switch (this.changeType) {\n case ChangeType.SAVE:\n event = new WorkflowSaveEvent(this.program, this.chPatId, this.userEmail,\n oldWorkflow.status, newWorkflow.status, durationInMs, this.tierIds, error, this.activity);\n eventId = WorkflowEventId.WORKFLOW_SAVE;\n break;\n case ChangeType.EDIT:\n const oldActivity = oldWorkflow.completedActivities.concat(oldWorkflow.inProgressActivities)\n .find((a) => a.type === this.activity.type);\n event = new WorkflowEditEvent(this.program, this.chPatId, this.userEmail,\n oldWorkflow.status, newWorkflow.status, durationInMs, this.tierIds,\n error, oldActivity, this.activity);\n eventId = WorkflowEventId.WORKFLOW_EDIT;\n break;\n case ChangeType.DELETE:\n event = new WorkflowDeleteEvent(this.program, this.chPatId, this.userEmail,\n oldWorkflow.status, newWorkflow.status, durationInMs, this.tierIds, error, this.activityType);\n eventId = WorkflowEventId.WORKFLOW_DELETE;\n break;\n }\n\n this.mixpanel.track(eventId, event);\n this.clearTrackedState();\n }\n}\n\n","
\n
\n \n
\n
{{dialogHeader}}
\n \n
\n
\n
{{dialogMessage}}
\n
\n
\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'coach-patient-awv-remove-modal-dialog',\n templateUrl: './patient-awv-remove-modal-dialog.component.html',\n styleUrls: ['./patient-awv-remove-modal-dialog.component.scss']\n})\nexport class PatientAwvRemoveModalDialogComponent {\n @Input()\n dialogMessage = 'This will remove the saved activity and revert the patient to the previous status';\n\n @Input()\n dialogHeader = 'Remove Saved Activity';\n\n @Input()\n showDialog = false;\n\n @Output() buttonClicked = new EventEmitter();\n\n onButtonClicked(buttonValue: string): void {\n this.buttonClicked.emit(buttonValue);\n }\n}\n","
\n
\n
\n
\n PAC Navigator Program\n
\n
\n \n \n
\n \n \n \n
\n
\n The PAC Navigator Worklist allows you to track patients in a Skilled Nursing Facility and work through any\n issues related to their stay.\n
\n \n Add this patient to\n the PAC Navigator Worklist\n \n
\n
\n \n
\n \n \n \n \n \n
\n 3 Day Waiver\n Completed {{ snfInfo.snfName }} {{ ACOProviderEvalDate }}\n
\n \n
\n \n \n \n \n\n \n All fields are required\n\n \n \n \n \n \n
\n \n Submission of waiver use must be completed within 24 hours of use\n
\n At the time of admission the client is responsible for ensuring the SNF has a 3 star rating\n
\n
\n \n \n
\n
\n \n \n
\n \n \n
\n \n \n
\n \n \n
\n \n \n \n Note: Independent or Assisted Living Facilities are not included in this category\n \n
\n
\n \n \n
\n
\n Please select an Admission date below and click Save\n {{ snfAdmittedAtModel.control.markAsTouched() }}\n
\n \n \n \n\n \n\n \n Save\n \n
\n\n \n
\n \n \n\n \n \n \n \n\n \n \n\n \n \n \n
\n \n
\n \n \n
\n
\n
\n \n \n
\n
\n \n Update\n \n \n Remove\n \n
\n \n \n \n
\n \n
\n
\n
\n \n
\n {{ proName(log.createdBy) | initialsFromName }}\n
\n
\n
\n
\n
\n
\n {{ proName(log.createdBy) }}\n (name not found)\n
\n \n {{ log.createdAt | date : 'medium' }}\n Patient was discharged\n
\n
\n \n
\n \n
\n {{ update.text }}\n
\n
\n \n \n \n
\n \n \n Edit\n \n
\n \n \n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { CaravanPatient, PatientSnfInfo, PatientSnfStatusItem } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/user';\nimport { Patient } from '@shared/models/patient';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { CareComponentConstants, PatientSnfStatusItemAllowedTypes } from '@shared/models/module-constants';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport {\n IconDefinition,\n faArrowRight,\n faEdit,\n faTimes,\n faMinus,\n faPlus,\n faCheckCircle,\n faCheck,\n faComment\n} from '@fortawesome/free-solid-svg-icons';\nimport { UntypedFormControl } from '@angular/forms';\nimport { Access } from '@shared/services/graphql/access.service';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { SnfService } from '@api/track/services';\nimport { SnfResult } from '@api/track/models';\n\nexport interface snfInfoDetails extends PatientSnfInfo {\n updates?: Array;\n}\nexport interface snfInfoDetailUpdate {\n faIcon?: IconDefinition;\n text: string;\n label?: string;\n}\n@Component({\n selector: 'coach-patient-pac-navigator',\n templateUrl: './patient-pac-navigator.component.html',\n styleUrls: ['./patient-pac-navigator.component.scss']\n})\nexport class PatientPacNavigatorComponent implements OnInit {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n @Input() public mobileScreenSize: boolean;\n @Input() sidebarMode?: boolean;\n @Input() public isTabOpen: boolean;\n @Output() patientUpdated: EventEmitter = new EventEmitter();\n private get tierId(): string {\n return this?.tier?.selectedTierId;\n }\n // patientSnfStatusItem: Patient.PatientSnfStatusItem;\n isFormOpen = false;\n editMode = false;\n patientSnfStatusItemAllowedTypes: string[] = [];\n patientSnfStatusItemDefinitions: { [key: string]: string } = {};\n patientSnfStatusItemLabels: { [key: string]: string } = {};\n selectedStatusFlags: { [key: string]: boolean } = {};\n snfInfo: PatientSnfInfo = {\n snfName: '',\n snfId: null,\n snfAdmittedAt: '',\n snfDischargedAt: '',\n isUsingSnf3DayWaiver: false,\n isVerified3StarRating: false,\n snfStatus: [],\n isACOCertified: false,\n ACOProviderName: '',\n isPatientEvaluated: false,\n ACOProviderEvalDate: null,\n isPatientNotResident: false,\n createdAt: null,\n createdBy: null,\n snfComment: null\n };\n snfHistory: PatientSnfInfo[] = [];\n professionalsById: { [key: string]: wpapi.model.Professional } = {};\n snfHistoryDetails: snfInfoDetails[];\n today: moment.Moment = moment();\n thirtyDaysAgoDate: moment.Moment = this.today.subtract(30, 'days').startOf('day');\n loadingStatus = false;\n waiverSelectionControl = new UntypedFormControl(null);\n snfNameControl = new UntypedFormControl('');\n snfList: SnfResult[] = [];\n private userAccess: Access;\n hasSNFFeature = false;\n readonly medicareUrl = 'https://www.medicare.gov/care-compare/?providerType=NursingHome';\n isWaiverSubmitted = false;\n expandSubmittedWaiver = false;\n showDeleteDialog = false;\n\n constructor(\n private PatientService: PatientService,\n private userAccessService: UserAccessService,\n private snfService: SnfService\n ) {\n this.patientSnfStatusItemAllowedTypes = PatientSnfStatusItemAllowedTypes.Names;\n this.patientSnfStatusItemDefinitions = PatientSnfStatusItemAllowedTypes.Definitions;\n this.patientSnfStatusItemAllowedTypes.forEach(flag => {\n this.selectedStatusFlags[flag] = false;\n this.patientSnfStatusItemLabels[flag] = this.splitStringIntoWords(flag);\n });\n this.userAccessService.currentAccess$.subscribe(async access => {\n if (access == null) {\n return;\n }\n this.userAccess = access;\n });\n }\n\n ngOnChanges(): void {\n if (this.patient?.snfInfo) {\n this.clearForm();\n this.assignSnfInfoValues(_.cloneDeep(this.patient.snfInfo));\n }\n }\n\n ngOnInit(): void {\n this.waiverSelectionControl.valueChanges.subscribe(value => {\n this.snfNameControl.reset('', { emitEvent: false });\n });\n\n this.hasSNFFeature = this.userAccessService.hasComponent(this.userAccess, CareComponentConstants.PAC3DayWaiver);\n this.snfNameControl.valueChanges.subscribe(value => {\n const snfItem = this.snfList.find(r => r.pacNavSNFID === +value);\n this.snfInfo.snfName = snfItem.snfName;\n this.snfInfo.snfId = snfItem.pacNavSNFID;\n });\n\n this.loadSNFList();\n }\n\n loadSNFList(): void {\n this.snfService.snfListGet({ Tier2_ID: this.patient.tier2_ID }).subscribe(snfList => {\n this.snfList = snfList;\n });\n }\n\n assignSnfInfoValues(snfInfo: { current?: PatientSnfInfo; history?: Array }): void {\n this.snfInfo.snfName = snfInfo?.current.snfName || '';\n this.snfInfo.snfId = snfInfo?.current.snfId || null;\n this.snfNameControl.setValue(snfInfo?.current.snfId, { emitEvent: false });\n this.snfInfo.isVerified3StarRating = snfInfo?.current.isVerified3StarRating || false;\n this.snfInfo.isUsingSnf3DayWaiver = snfInfo?.current.isUsingSnf3DayWaiver || false;\n this.waiverSelectionControl.setValue(snfInfo?.current.isUsingSnf3DayWaiver || false, { emitEvent: false });\n this.snfInfo.snfAdmittedAt = snfInfo?.current.snfAdmittedAt || '';\n this.snfInfo.snfDischargedAt = snfInfo?.current?.snfDischargedAt || '';\n this.snfInfo.snfComment = snfInfo?.current?.snfComment || null;\n this.snfInfo.isACOCertified = snfInfo?.current?.isACOCertified || false;\n this.snfInfo.ACOProviderName = snfInfo?.current?.ACOProviderName;\n this.snfInfo.isPatientEvaluated = snfInfo?.current?.isPatientEvaluated || false;\n this.snfInfo.ACOProviderEvalDate = snfInfo?.current?.ACOProviderEvalDate;\n this.snfInfo.isPatientNotResident = snfInfo?.current?.isPatientNotResident || false;\n this.snfInfo.isPatientAdmissible = snfInfo?.current?.isPatientAdmissible || false;\n this.snfInfo.snfStatus = snfInfo?.current?.snfStatus || [];\n this.snfInfo.snfStatus.forEach(flag => {\n this.selectedStatusFlags[flag] = true;\n });\n this.snfHistory = snfInfo.history || [];\n let proIds = [\n ...new Set(\n [snfInfo?.current?.createdBy?.toString()].concat(snfInfo?.history?.map(snf => snf.createdBy?.toString()) || [])\n )\n ]; // pulls ids from current and history list, concats into one list, and then removes duplicates\n this.getProfessionalsInfo(proIds);\n this.snfHistoryDetails = this.assignSnfHistoryDetails(snfInfo);\n this.isFormOpen = !!this.snfInfo.snfName?.length && !this.snfInfo.snfDischargedAt;\n if (this.snfInfo.isVerified3StarRating && !!this.snfInfo.snfName?.length) {\n this.isWaiverSubmitted = true;\n this.expandSubmittedWaiver = false;\n }\n }\n\n assignSnfHistoryDetails(snfInfo: { current?: PatientSnfInfo; history?: Array }): snfInfoDetails[] {\n let result: snfInfoDetails[] = [];\n // start from the oldest element, check the previous element for differences and store them as snfInfoDetails.updates\n for (let i = 0; i < snfInfo.history?.length; i++) {\n result.push(\n this.getChangesBetweenTwoLogs(\n _.cloneDeep(snfInfo.history[i]),\n _.cloneDeep(snfInfo.history[i - 1]),\n i - 1,\n snfInfo.history\n )\n );\n }\n // add the current element as the latest one\n result.push(\n this.getChangesBetweenTwoLogs(\n _.cloneDeep(snfInfo.current),\n _.cloneDeep(snfInfo.history[snfInfo.history?.length - 1]),\n snfInfo.history?.length - 1,\n snfInfo.history\n )\n );\n let results2 = result.map(x => x.updates);\n return result;\n }\n getChangesBetweenTwoLogs(\n currentLog: PatientSnfInfo,\n previousLog: PatientSnfInfo,\n previousLogIdx: number,\n historyList: Array\n ): snfInfoDetails {\n let snfInfoDetails = currentLog as snfInfoDetails;\n snfInfoDetails.updates = [];\n try {\n if (previousLog?.snfDischargedAt && !currentLog.isEdit) {\n previousLog = { createdAt: null, createdBy: null } as PatientSnfInfo;\n }\n\n if (!currentLog.snfName) {\n if (previousLog?.isUsingSnf3DayWaiver) {\n snfInfoDetails.updates.push({ faIcon: faMinus, text: '3 day waiver removed from patient' });\n } else {\n snfInfoDetails.updates.push({ faIcon: faMinus, text: 'Patient removed from Worklist' });\n }\n\n // need to check whether if was removed because of expired admittedAt date.\n // compare previousLog.snfAdmittedAt with currentLog.createdAt subtracted 30 days.\n // remove currentLog.createdAt to display \"Automatically removed\"\n if (previousLog?.snfDischargedAt) {\n currentLog.createdAt = null;\n }\n if (currentLog.snfComment != previousLog?.snfComment && currentLog?.snfComment?.length) {\n snfInfoDetails.updates.push({ faIcon: faComment, text: currentLog.snfComment });\n }\n return snfInfoDetails; // no need to compare values further\n } else {\n if (!currentLog.isEdit && (!previousLog || !previousLog?.snfName || previousLog?.snfDischargedAt)) {\n snfInfoDetails.updates.push({ faIcon: faPlus, text: 'Patient added to Worklist' });\n } else if (!previousLog?.snfName && currentLog.isEdit) {\n // in case if record was removed, we need to compare it the pre-deleleted record\n let idx = previousLogIdx - 1;\n while (!historyList[idx].snfName && idx > 0) {\n idx--;\n }\n previousLog = historyList[idx];\n }\n }\n\n // snf name\n if (!previousLog || (previousLog?.snfDischargedAt && !currentLog.isEdit)) {\n snfInfoDetails.updates.push({ faIcon: faEdit, text: `SNF Name: ${currentLog.snfName}` });\n } else if (currentLog.snfName != previousLog?.snfName) {\n snfInfoDetails.updates.push({\n faIcon: faEdit,\n text: `SNF Name${previousLog?.snfName?.length ? ' changed to' : ':'} ${currentLog.snfName}`\n });\n }\n\n if (currentLog.isUsingSnf3DayWaiver && currentLog.isUsingSnf3DayWaiver !== previousLog?.isUsingSnf3DayWaiver) {\n snfInfoDetails.updates.push({ faIcon: faArrowRight, text: `3-day waiver used` });\n }\n\n if (currentLog.isVerified3StarRating && currentLog.isVerified3StarRating !== previousLog?.isVerified3StarRating) {\n snfInfoDetails.updates.push({ faIcon: faArrowRight, text: `Rating verifications completed` });\n }\n\n // snfAdmittedAt\n if (currentLog.snfAdmittedAt != previousLog?.snfAdmittedAt) {\n snfInfoDetails.updates.push({\n faIcon: faArrowRight,\n text: `Patient admitted ${currentLog.isEdit ? 'date changed to' : 'on'} ${moment(\n currentLog.snfAdmittedAt\n ).format('l')}`\n });\n }\n\n // snfDischargedAt\n if (\n !!currentLog.snfDischargedAt != !!previousLog?.snfDischargedAt &&\n currentLog.snfDischargedAt != previousLog?.snfDischargedAt\n ) {\n let snfDischargedAtInfo: snfInfoDetailUpdate = {\n faIcon: faCheckCircle,\n text: `Patient discharge date was ${currentLog.isEdit ? 'changed' : 'set'} to ${moment(\n currentLog.snfDischargedAt\n ).format('l')}`\n };\n snfInfoDetails.updates.push(snfDischargedAtInfo);\n }\n\n if (currentLog.snfStatus != previousLog?.snfStatus) {\n let snfStatusAdded = currentLog.snfStatus.filter(x => !previousLog?.snfStatus?.includes(x));\n let snfStatusRemoved = previousLog?.snfStatus?.filter(x => !currentLog?.snfStatus.includes(x)) || [];\n if (snfStatusAdded.length) {\n snfInfoDetails.updates.push({\n faIcon: faCheck,\n text: snfStatusAdded.map(status => this.patientSnfStatusItemLabels[status] || status).join(', ')\n });\n }\n if (snfStatusRemoved.length) {\n snfInfoDetails.updates.push({\n faIcon: faTimes,\n text: snfStatusRemoved.map(status => this.patientSnfStatusItemLabels[status] || status).join(', ')\n });\n }\n }\n if (currentLog.snfComment != previousLog?.snfComment && currentLog.snfComment?.length > 0) {\n snfInfoDetails.updates.push({ faIcon: faComment, text: currentLog.snfComment });\n }\n } catch (error) {\n console.error(error);\n }\n if (!snfInfoDetails.updates.length) {\n snfInfoDetails.updates = null;\n }\n return snfInfoDetails;\n }\n\n assignSnfInfoDetailsElement(snfInfo: PatientSnfInfo): snfInfoDetails {\n return snfInfo as snfInfoDetails;\n }\n\n splitStringIntoWords(string: string): string {\n return (\n string[0] +\n string\n .slice(1, string.length)\n .replace(/([A-Z])/g, ' $1')\n .trim()\n );\n }\n async update() {\n this.loadingStatus = true;\n this.snfInfo.snfStatus = [];\n for (let key in this.selectedStatusFlags) {\n if (this.selectedStatusFlags[key]) {\n this.snfInfo.snfStatus.push(key as PatientSnfStatusItem);\n }\n }\n if (this.waiverSelectionControl.value) {\n const snfItem = this.snfList.find(r => r.pacNavSNFID === +this.snfNameControl.value);\n this.snfInfo.snfName = snfItem.snfName;\n this.snfInfo.snfId = snfItem.pacNavSNFID;\n this.snfInfo.isUsingSnf3DayWaiver = this.waiverSelectionControl.value;\n }\n\n try {\n let updatedSnfInfo: CaravanPatient['snfInfo'] = await this.PatientService.updatePatientSnfInfo(\n this.tierId,\n this.patient.chPatId,\n _.clone(this.snfInfo)\n );\n if (updatedSnfInfo) {\n this.patient.snfInfo = updatedSnfInfo;\n this.patient.carePatient = { ...this.patient.carePatient, ...{ snfInfo: updatedSnfInfo } };\n this.patientUpdated.emit();\n this.assignSnfInfoValues(updatedSnfInfo);\n this.editMode = false;\n }\n } catch (error) {}\n this.loadingStatus = false;\n }\n\n remove(): void {\n let fieldsToIgnore =\n this.snfInfo.snfComment != this.patient.snfInfo?.current?.snfComment\n ? { snfComment: this.snfInfo.snfComment }\n : {}; // check if comment was changed\n this.clearForm(fieldsToIgnore);\n this.update();\n }\n\n onDialogButtonClick(buttonValue: string): void {\n switch (buttonValue) {\n case 'cancel':\n this.showDeleteDialog = !this.showDeleteDialog;\n break;\n case 'delete':\n this.showDeleteDialog = false;\n this.remove();\n }\n }\n\n showDialog(): void {\n this.showDeleteDialog = true;\n }\n\n clearForm(ignoreFields: { [key: string]: any } = {}): void {\n this.snfInfo = {\n ...{\n snfName: '',\n snfId: null,\n snfAdmittedAt: '',\n snfDischargedAt: '',\n snfStatus: [],\n createdAt: null,\n isUsingSnf3DayWaiver: false,\n isVerified3StarRating: false,\n createdBy: null,\n snfComment: null,\n isACOCertified: false,\n ACOProviderName: '',\n isPatientEvaluated: false,\n ACOProviderEvalDate: null,\n isPatientNotResident: false\n },\n ...ignoreFields\n };\n this.selectedStatusFlags = {};\n this.waiverSelectionControl.reset(null, { emitEvent: false });\n this.snfNameControl.reset('', { emitEvent: false });\n this.isWaiverSubmitted = false;\n this.expandSubmittedWaiver = false;\n this.editMode = false;\n }\n\n get isWaiverValid() {\n return (\n this.snfInfo.snfId &&\n this.waiverSelectionControl.value &&\n this.snfInfo.isVerified3StarRating &&\n this.snfInfo.isACOCertified &&\n this.snfInfo.ACOProviderName &&\n this.snfInfo.isPatientEvaluated &&\n this.snfInfo.ACOProviderEvalDate &&\n this.snfInfo.isPatientNotResident &&\n this.snfInfo.isPatientAdmissible\n );\n }\n\n isFormUpdated(): boolean {\n let oldSnfInfo: PatientSnfInfo = this.editMode\n ? this.getPreviousEligibleEntry()\n : _.clone(this.patient?.snfInfo?.current);\n this.snfInfo.snfStatus = [];\n for (let key in this.selectedStatusFlags) {\n if (this.selectedStatusFlags[key]) {\n this.snfInfo.snfStatus.push(key as PatientSnfStatusItem);\n }\n }\n let ignoreProperties: string[] = ['createdAt', 'createdBy', 'isEdit'];\n return !_.isEqual(_.omit(oldSnfInfo, ignoreProperties), _.omit(this.snfInfo, ignoreProperties));\n }\n\n activateForm(): void {\n this.isFormOpen = true;\n this.clearForm();\n }\n\n statusFlagUpdated(flagName: PatientSnfStatusItem, value: boolean) {\n if (value) {\n if (!this.snfInfo.snfStatus.includes(flagName)) {\n this.snfInfo.snfStatus.push(flagName);\n }\n } else {\n this.snfInfo.snfStatus = this.snfInfo.snfStatus.filter(flag => flag != flagName);\n }\n }\n\n isFormValid(): boolean {\n if (\n this.snfInfo.snfAdmittedAt &&\n this.snfInfo.snfDischargedAt &&\n moment(this.snfInfo.snfDischargedAt).isBefore(this.snfInfo.snfAdmittedAt)\n ) {\n return false;\n }\n if (this.snfInfo.snfDischargedAt && !moment(this.snfInfo.snfDischargedAt).isValid()) {\n return false;\n }\n if (\n this.waiverSelectionControl.value &&\n (!this.snfInfo.isVerified3StarRating ||\n !this.snfInfo.snfId ||\n !this.snfInfo.isACOCertified ||\n !this.snfInfo.ACOProviderName ||\n !this.snfInfo.isPatientEvaluated ||\n !this.snfInfo.ACOProviderEvalDate ||\n !this.snfInfo.isPatientNotResident ||\n !this.snfInfo.isPatientAdmissible)\n ) {\n return false;\n }\n\n let oldSnfInfo: PatientSnfInfo = _.clone(this.patient?.snfInfo?.current);\n if (!oldSnfInfo?.snfName && !this.snfInfo.snfName) {\n return false;\n }\n\n return this.snfInfo.snfName.length > 0;\n }\n\n getProfessionalsInfo(proIds: string[]) {\n proIds?.forEach(id => {\n if (!this.professionalsById[id]) {\n this.PatientService.getProfessional(id).then(professional => {\n this.professionalsById[id] = professional;\n });\n }\n });\n }\n\n clonePreviousEntry(): void {\n let previousSnfLog = this.getPreviousEligibleEntry();\n this.snfInfo = _.cloneDeep(previousSnfLog);\n previousSnfLog.snfStatus.forEach(status => {\n this.selectedStatusFlags[status] = true;\n });\n this.snfInfo.isEdit = true;\n this.isFormOpen = true;\n this.editMode = true;\n }\n\n getPreviousEligibleEntry(): PatientSnfInfo {\n let inputs = this.patient?.snfInfo.current;\n if (!inputs?.snfName) {\n // in case if snf was removed\n inputs = this.patient?.snfInfo.history[this.patient?.snfInfo.history.length - 1];\n }\n return inputs;\n }\n\n isFormEditable(): boolean {\n /**\n * Add an edit button to the form when a patient is:\n Discharged \n Discharged after 30 days\n Removed\n */\n return !!(this.patient?.snfInfo?.current?.snfDischargedAt || !this.patient?.snfInfo?.current?.snfName);\n }\n\n canInfoBeRemoved(): boolean {\n return !!this.patient?.snfInfo?.current?.snfName;\n }\n\n proAvatar(proId: string): string {\n return this.professionalsById?.[proId]?.avatar?.url;\n }\n\n proName(proId: string): string {\n let fName = this.professionalsById?.[proId]?.firstName;\n if (fName) {\n fName += ' ';\n }\n return fName + this.professionalsById?.[proId]?.lastName;\n }\n\n cancelWaiver() {\n if (this.isWaiverSaved) {\n this.onSave();\n return;\n }\n\n this.clearForm();\n if (this.patient?.snfInfo) {\n this.assignSnfInfoValues(_.cloneDeep(this.patient.snfInfo));\n }\n }\n\n onSave() {\n this.isWaiverSubmitted = true;\n this.expandSubmittedWaiver = false;\n this.update();\n }\n\n toggleSubmittedWaiver() {\n this.expandSubmittedWaiver = true;\n }\n\n get ACOProviderEvalDate() {\n if (this.snfInfo.ACOProviderEvalDate) {\n return new Date(this.snfInfo?.ACOProviderEvalDate).toLocaleDateString();\n }\n }\n\n get isWaiverSaved() {\n return this.patient.snfInfo?.current?.snfId && !this.patient.snfInfo?.current?.snfDischargedAt;\n }\n\n get isVerified3StarRating() {\n return this.patient.snfInfo?.current?.isVerified3StarRating;\n }\n\n get isSnfAdmittedAtValid() {\n return (\n this.snfInfo.snfAdmittedAt &&\n this.snfInfo.snfAdmittedAt.length > 0 &&\n moment(this.snfInfo.snfAdmittedAt).isValid()\n );\n }\n}\n","
\n
\n
\n
\n In-Home Annual Wellness Visit\n {{inHomeVisitDate.toLocaleDateString()}}\n
\n
\n \n
\n
\n
\n
\n In-Home Annual Wellness Visit on\n {{inHomeVisitDate.toLocaleDateString()}}\n\n
0\">\n FILES\n \n
\n \n
\n\n \n
\n
{{patientIHEFileTypeLabels[file.key]}}
\n
\n \n {{getFormattedDownloadDetails(file)}}\n
\n
\n
\n
\n
\n
\n \n
\n

Download Status

\n

\n {{getDownloadStatus()}}\n

\n
\n
\n
\n \n
\n
\n \n \n
\n
\n
0\" class=\"u-display--flex u-flex-direction--column history-wrapper span--6\" [ngClass]=\"{'u-width--webkit-fill-available': mobileScreenSize }\">\n
\n HISTORY\n \n
\n
\n
\n \n
\n {{ log.createdBy | initialsFromName }}\n
\n
\n
\n
\n
\n
\n {{log.createdBy}}\n (name not found)\n
\n
\n {{log.createdAt | date: \"medium\"}}\n
\n
\n
\n
\n
\n \n
\n {{log.noteText}}\n Downloaded {{log.fileType}}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { ITrackApiIHEFilesListVisitInfo, PatientService } from '@shared/services/patient/patient.service';\nimport moment from 'moment';\nimport { IconDefinition, faComment, faDownload } from '@fortawesome/free-solid-svg-icons';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { fileStatus, PatientIHEFileDownloadInfo, PatientIHEFileInfo, PatientIHEFileType, PatientIHEFileTypeLabels, AssessmentFileTypes } from '@shared/models/patient-ihe-data';\nimport _, { forEach } from 'lodash';\nimport { PatientViewModel } from '@shared/models/patient';\n\n\n//TODO - Change once we have an IHE data type\nexport interface iheHistoryElement {\n createdBy?: string,\n createdById?: number,\n createdAt?: string,\n proName: string,\n proAvatar?: string,\n action?: 'upload' | 'download' | 'note'\n noteText?: string,\n noteId?: number,\n faIcon?: IconDefinition,\n fileType?: PatientIHEFileType\n}\n\nexport interface fileInfo {\n name: string,\n downloadStatus: fileStatus;\n downloadDetails?: {\n userName: string;\n downloadDate: Date;\n }\n}\nexport interface note {\n createDateTime: string;\n createUserDisplayName?: string;\n createUserFullName: string;\n createUserName: string;\n createdByUserID: number;\n lastUpdateDateTime: string;\n lastUpdateUserID: number;\n lastUpdateUserFullName?: string;\n noteID: number;\n noteText: string;\n updateUserName: string;\n}\nexport interface downloadInfo {\n downloadedAtUtc: string;\n downloadedByName: string;\n downloadedByUserId: number;\n}\n\nexport interface IHEDownloadStatusObject {\n IHEAssessmentFilesLastUpdated: Date,\n IHEAssessmentFilesLastDownloaded: Date,\n IHECMRFileLastUpdated: Date,\n IHECMRFileLastDownloaded: Date,\n IHEDownloadDate: Date;\n notOnlyCMRFile: boolean;\n}\n\ntype downloadStatus = 'New' | 'Partial' | 'Done';\n\n\n@Component({\n selector: 'coach-patient-ihe-worklist',\n templateUrl: './patient-ihe-worklist.component.html',\n styleUrls: ['./patient-ihe-worklist.component.scss']\n})\nexport class PatientIHEWorklistComponent implements OnInit {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n @Input() public mobileScreenSize: boolean;\n @Input() sidebarMode?: boolean;\n @Input() public isTabOpen: boolean;\n @Output() patientUpdated: EventEmitter = new EventEmitter()\n\n isFormOpen = false;\n historyDetails: iheHistoryElement[] = [];\n professionalsById: { [key: string]: wpapi.model.Professional } = {};\n inHomeVisitDate: Date;\n downloadStatus: downloadStatus = 'New';\n files: Array = [];\n note: string = '';\n notes: note[] = [];\n user: wpapi.model.Professional;\n filesStatus: { [key: string]: string } = {};\n ITrackApiIHEFilesListVisitInfo: ITrackApiIHEFilesListVisitInfo = null;\n private get tierId(): string {\n return this?.tier?.selectedTierId;\n };\n private get tierNum(): number {\n return this?.tier?.tier;\n };\n\n downloading = false;\n patientIHEFileTypeLabels: { [key in PatientIHEFileType]: string } = PatientIHEFileTypeLabels;\n filesByTypeName: { [key in PatientIHEFileType]?: PatientIHEFileInfo } = {};\n areAllFilesAvailable: boolean = false;\n\n constructor(private PatientService: PatientService, private router: Router, private activatedRoute: ActivatedRoute, private authService: AuthService) { }\n\n ngOnInit(): void {\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (this.patient) {\n this.resetInfo();\n this.getIheFilesInfo();\n this.getNotes();\n this.getCurrentUserInfo();\n }\n }\n\n resetInfo(): void {\n this.files = [];\n this.filesByTypeName = {};\n this.ITrackApiIHEFilesListVisitInfo = null;\n this.note = '';\n this.inHomeVisitDate = null;\n this.historyDetails = [];\n }\n\n\n updateFileInPatientData(file): void {\n if (this.patient.trackPatient?.visitInfo) {\n for (let f in this.patient.trackPatient?.visitInfo?.fileInfo) {\n if (this.patient.trackPatient?.visitInfo?.fileInfo[f].fileId == file.fileId) {\n this.patient.trackPatient.visitInfo.fileInfo[f] = file;\n break;\n }\n }\n }\n }\n\n // FILE FUNCTIONS -----------------------------------------------------------------------------------------------------------------------------------------\n async downloadFile(file: PatientIHEFileInfo) {\n let tempFileDownloadStatus = _.clone(file.fileDownloadStatus);\n file.fileDownloadStatus = 'Downloading';\n try {\n await this.PatientService.downloadIHEFile(file.fileId, this.patient.chPatId, this.tierId, this.tierNum, `${file.fileType}_${this.patient.firstName + \"_\" + this.patient.lastName}`);\n file.fileDownloadStatus = 'Downloaded';\n this.updateFileDownloadHistoryInfo(file);\n this.updateFileInPatientData(file);\n this.patientUpdated.emit();\n } catch (error) {\n file.fileDownloadStatus = tempFileDownloadStatus;\n console.error(error);\n }\n }\n async downloadAllFiles() {\n if (this.downloading) {\n return;\n }\n this.downloading = true;\n let tempDownloadStatus: { [key: string]: fileStatus } = {}\n for (let file_idx in this.files) {\n tempDownloadStatus[file_idx] = _.clone(this.files[file_idx].fileDownloadStatus)\n this.files[file_idx].fileDownloadStatus = 'Downloading';\n };\n try {\n await this.PatientService.downloadIHEFile(this.files.map(file => file.fileId), this.patient.chPatId, this.tierId, this.tierNum, `IH_AWV_Files_${this.patient.firstName + \"_\" + this.patient.lastName}`)\n for (let file_idx in this.files) {\n this.files[file_idx].fileDownloadStatus = 'Downloaded';\n this.updateFileDownloadHistoryInfo(this.files[file_idx]);\n this.updateFileInPatientData(this.files[file_idx]);\n };\n this.downloading = false;\n this.patientUpdated.emit();\n\n } catch (error) {\n console.log(\"error\", error)\n for (let file_idx in this.files) {\n this.files[file_idx].fileDownloadStatus = tempDownloadStatus[file_idx];\n };\n this.downloading = false;\n throw error;\n }\n }\n updateFileDownloadHistoryInfo(file: PatientIHEFileInfo): void {\n if (file.downloadInfo.current) {\n if (!file.downloadInfo.history) {\n file.downloadInfo.history = []\n }\n file.downloadInfo.history.push(file.downloadInfo.current)\n }\n file.downloadInfo.current = {\n downloadedAtUtc: moment.utc().toString(),\n downloadedByName: this.user.firstName + ' ' + this.user.lastName,\n downloadedByUserId: null\n };\n }\n // END OF FILE FUNCTIONS ----------------------------------------------------------------------------------------------------------------------------------\n\n\n // NOTE FUNCTIONS -----------------------------------------------------------------------------------------------------------------------------------------\n\n async getNotes() {\n let notesHistory: note[] = await this.PatientService.getNote(this.patient.chPatId, 3);\n this.notes = notesHistory;\n }\n async postNote() {\n let noteId = await this.PatientService.postNote(this.patient.chPatId, this.note, 3, null, null)\n this.notes.push({\n createDateTime: moment.utc().toString(),\n createUserFullName: this.user?.firstName + ' ' + this.user?.lastName,\n createUserName: this.user?.email,\n createdByUserID: null,\n lastUpdateDateTime: moment.utc().toString(),\n lastUpdateUserID: null,\n lastUpdateUserFullName: null,\n noteID: noteId,\n noteText: this.note,\n updateUserName: this.user?.email,\n })\n this.note = '';\n }\n // END OF NOTE FUNCTIONS ----------------------------------------------------------------------------------------------------------------------------------\n\n\n // FILES LIST ---------------------------------------------------------------------------------------------------------------------------------------------\n async getIheFilesInfo() {\n try {\n if (this.patient.trackPatient.fileInfo) {\n this.files = this.patient.trackPatient.fileInfo;\n } else {\n let ITrackApiIHEFilesListVisitInfos = await this.PatientService.getIHEDataForPatient(this.tierNum, this.tierId, this.patient.chPatId);\n this.ITrackApiIHEFilesListVisitInfo = ITrackApiIHEFilesListVisitInfos?.[0]\n this.files = this.ITrackApiIHEFilesListVisitInfo?.fileInfo;\n }\n if (!this.files) {\n this.files = [];\n }\n this.files.forEach(file => {\n this.filesByTypeName[file.fileType] = file;\n if (!file.fileDownloadStatus) {\n file.fileDownloadStatus = file.downloadInfo?.current ? 'Downloaded' : 'New'\n }\n })\n\n this.sortHistoryListByDate();\n\n this.areAllFilesAvailable = Object.keys(this.filesByTypeName).length == Object.keys(this.patientIHEFileTypeLabels).length;\n\n this.getDownloadStatus();\n const visitDate = this.patient.trackPatient?.IHEAWVVisitDate || this.ITrackApiIHEFilesListVisitInfo?.visitDate;\n this.inHomeVisitDate = visitDate ? moment(visitDate).toDate() : null;\n } catch (error) {\n console.log(error);\n }\n }\n // END OF FILES LIST --------------------------------------------------------------------------------------------------------------------------------------\n\n\n // HISTORY LIST -------------------------------------------------------------------------------------------------------------------------------------------\n convertFilesHistoryElementIntoIHEHistoryElements(downloadInfo: { current?: PatientIHEFileDownloadInfo, history?: PatientIHEFileDownloadInfo[] }, fileType: PatientIHEFileType): iheHistoryElement[] {\n\n let result: iheHistoryElement[] = [];\n if (downloadInfo.current) {\n downloadInfo.current.downloadedAtUtc = moment.utc(downloadInfo.current.downloadedAtUtc).toString();\n result.push(this.convertFilesHistoryElementIntoIHEHistoryElement(downloadInfo.current, fileType))\n }\n if (downloadInfo.history?.length) {\n downloadInfo.history.forEach(info => {\n info.downloadedAtUtc = moment.utc(info.downloadedAtUtc).toString();\n result.push(this.convertFilesHistoryElementIntoIHEHistoryElement(info, fileType))\n })\n }\n return result;\n }\n convertFilesHistoryElementIntoIHEHistoryElement(downloadInfo: PatientIHEFileDownloadInfo, fileType: PatientIHEFileType): iheHistoryElement {\n return {\n createdBy: downloadInfo.downloadedByName,\n createdById: downloadInfo.downloadedByUserId,\n createdAt: moment(downloadInfo.downloadedAtUtc).local().format('YYYY-MM-DD HH:mm:ss'),\n proName: downloadInfo.downloadedByName,\n fileType: fileType,\n action: 'download',\n faIcon: faDownload\n };\n }\n convertNotesElementIntoIHEHistoryElement(note: note): iheHistoryElement {\n return {\n createdBy: note.createUserFullName?.trim() || note.createUserDisplayName,\n createdById: note.createdByUserID,\n createdAt: moment(note.createDateTime).local().format('YYYY-MM-DD HH:mm:ss'),\n proName: note.createUserName,\n noteText: note.noteText,\n noteId: note.noteID,\n action: 'note',\n faIcon: faComment\n }\n }\n addElementIntoHistoryList(el: iheHistoryElement): void {\n this.historyDetails.push(el);\n };\n sortHistoryListByDate(): void {\n this.historyDetails.sort((a, b) => {\n if (moment(a.createdAt).isBefore(moment(b.createdAt))) return 1;\n else if (moment(a.createdAt).isAfter(moment(b.createdAt))) return -1;\n else return 0;\n });\n }\n\n getLiveUpdatedHistoryList(): iheHistoryElement[] {\n let result: iheHistoryElement[] = [];\n //notes\n this.notes.forEach(note => {\n note.createDateTime = moment.utc(note.createDateTime).toString();\n result.push(this.convertNotesElementIntoIHEHistoryElement(note));\n })\n\n // files\n\n this.files.forEach(file => {\n result = result.concat(this.convertFilesHistoryElementIntoIHEHistoryElements(file.downloadInfo, file.fileType))\n })\n if (result.length != this.historyDetails.length) {\n result.sort((a, b) => {\n if (moment(a.createdAt).isBefore(moment(b.createdAt))) return 1;\n else if (moment(a.createdAt).isAfter(moment(b.createdAt))) return -1;\n else return 0;\n });\n this.historyDetails = result;\n }\n return this.historyDetails;\n }\n // END OF HISTORY LIST ------------------------------------------------------------------------------------------------------------------------------------\n\n\n // USER FUNCTIONS -----------------------------------------------------------------------------------------------------------------------------------------\n async getCurrentUserInfo() {\n this.user = await this.authService.getWellpepperUserInfo()\n }\n getProfessionalsInfo(proIds: string[]): void {\n proIds?.forEach(id => {\n if (!this.professionalsById[id]) {\n this.PatientService.getProfessional(id).then(professional => {\n this.professionalsById[id] = professional;\n })\n }\n })\n }\n\n proAvatar(proId: string): string {\n return this.professionalsById?.[proId]?.avatar?.url;\n }\n\n proName(proId: string): string {\n let fName = this.professionalsById?.[proId]?.firstName;\n if (fName) {\n fName += ' ';\n }\n return fName + this.professionalsById?.[proId]?.lastName;\n }\n\n getFormattedDownloadDetails(file: fileInfo): string {\n return file.downloadDetails.userName + ' ' + file.downloadDetails.downloadDate.toLocaleString();\n }\n\n getDownloadStatus(): downloadStatus {\n let fileInfoDatesResult = PatientViewModel.getLatestFileInfoDates(this.files);\n let IHEDownloadStatusObject: IHEDownloadStatusObject = PatientViewModel.assignLatestFileInfoDates(null, fileInfoDatesResult)\n if (IHEDownloadStatusObject.IHEAssessmentFilesLastUpdated && IHEDownloadStatusObject.IHECMRFileLastUpdated &&\n IHEDownloadStatusObject.IHEAssessmentFilesLastDownloaded && IHEDownloadStatusObject.IHECMRFileLastDownloaded) {\n return 'Done';\n } else if(IHEDownloadStatusObject.notOnlyCMRFile && IHEDownloadStatusObject.IHECMRFileLastUpdated && IHEDownloadStatusObject.IHECMRFileLastDownloaded){\n return ('Done')\n }else if (!IHEDownloadStatusObject.IHEAssessmentFilesLastUpdated && !IHEDownloadStatusObject.IHEAssessmentFilesLastDownloaded && IHEDownloadStatusObject.IHECMRFileLastUpdated && IHEDownloadStatusObject.IHECMRFileLastDownloaded) {\n return 'Partial';\n } else if (IHEDownloadStatusObject.IHEAssessmentFilesLastUpdated && IHEDownloadStatusObject.IHEAssessmentFilesLastDownloaded && !IHEDownloadStatusObject.IHECMRFileLastUpdated && !IHEDownloadStatusObject.IHECMRFileLastDownloaded) {\n return 'Done';\n } else if (IHEDownloadStatusObject.IHEDownloadDate) {\n return 'Partial';\n } else {\n return 'New';\n }\n }\n // END OF USER FUNCTIONS ----------------------------------------------------------------------------------------------------------------------------------\n\n}\n\n","
\n
\n
\n
\n AWV Self-reported date\n \n
\n
\n \n
\n
\n
\n
\n
\n \n \n
\n Invalid date, this field requires a date no earlier than one year from today's date\n
\n
\n Invalid date, future dates are not allowed\n
\n
\n
\n \n
\n
\n \n \n
\n
\n
0\" class=\"u-display--flex u-flex-direction--column history-wrapper span--6\" [ngClass]=\"{'u-width--webkit-fill-available': mobileScreenSize }\">\n
\n HISTORY\n \n
\n
\n
\n \n
\n {{ log.createdBy | initialsFromName }}\n
\n
\n
\n
\n
\n
\n {{log.createdBy}}\n (name not found)\n
\n
\n {{log.createdAt | date: \"medium\"}}\n
\n
\n
\n
\n
\n \n
\n {{log.noteText}}\n Downloaded {{log.fileType}}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { ITrackApiIHEFilesListVisitInfo, PatientService } from '@shared/services/patient/patient.service';\nimport moment from 'moment';\nimport { IconDefinition, faComment, faDownload } from '@fortawesome/free-solid-svg-icons';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { fileStatus, PatientIHEFileDownloadInfo, PatientIHEFileInfo, PatientIHEFileType, PatientIHEFileTypeLabels, AssessmentFileTypes } from '@shared/models/patient-ihe-data';\nimport _, { forEach } from 'lodash';\nimport { PatientViewModel } from '@shared/models/patient';\nimport { is } from 'date-fns/locale';\nimport { AwvWorklistFiltersComponent } from '@care/components/awv-worklist/awv-worklist-filters/awv-worklist-filters.component';\nimport { note } from '@shared/modules/patient-facesheet/tabs/patient-ihe-worklist/patient-ihe-worklist.component';\n\nexport interface awvHistoryElement {\n createdBy?: string,\n createdById?: number,\n createdAt?: string,\n proName: string,\n proAvatar?: string,\n action?: 'upload' | 'download' | 'note'\n noteText?: string,\n noteId?: number,\n faIcon?: IconDefinition,\n fileType?: PatientIHEFileType\n}\n@Component({\n selector: 'coach-patient-awv-report',\n templateUrl: './patient-awv-report.component.html',\n styleUrls: ['./patient-awv-report.component.scss']\n})\nexport class PatientAwvReportComponent implements OnInit {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n @Input() public mobileScreenSize: boolean;\n @Input() sidebarMode?: boolean;\n @Input() public isTabOpen: boolean;\n @Output() patientUpdated: EventEmitter = new EventEmitter();\n\n historyDetails: awvHistoryElement[] = [];\n note: string = '';\n notes: note[] = [];\n user: wpapi.model.Professional;\n professionalsById: { [key: string]: wpapi.model.Professional } = {};\n dateChange: boolean = false;\n statusDate: string ='';\n\n\n today: string = moment().format(\"yyyy-MM-DD\");\n oneYearAgo: string = moment().subtract(1,'year').format(\"yyyy-MM-DD\");\n private get tierId() {\n return this?.tier?.selectedTierId;\n }\n private get tierNum() {\n return this?.tier?.tier;\n }\n constructor(private patientService: PatientService,private authService: AuthService) { }\n\n async ngOnInit() {\n if (!this.patient?.trackAwvPatient && this.patient?.chPatId) {\n await this.getAndAssignStatusDateFromTrackAwvPatientInfo();\n }\n this.statusDate = this.patient.statusDate;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.patient) {\n this.resetInfo();\n this.getNotes();\n this.getCurrentUserInfo();\n }\n }\n\n resetInfo(): void {\n this.note = '';\n this.historyDetails = [];\n this.statusDate = this.patient.statusDate;\n }\n async setChangeDateFlag(){\n this.dateChange = true;\n }\n async updateStatusDate() {\n if ((this.patient.trackAwvPatient?.statusDate != this.statusDate) || !this.statusDate ) {\n try {\n let scheduleId: number = null; // get patient schedule ID\n await this.patientService.updateAwvStatusDate(Number(this.patient.chPatId || this.patient.id), this.statusDate || null, scheduleId)\n if (this.patient?.trackAwvPatient) {\n this.patient.trackAwvPatient.statusDate = this.statusDate ? moment(this.statusDate).format(\"MM/DD/YYYY\") : null;\n this.patient.statusDate = this.patient.trackAwvPatient.statusDate;\n this.patientUpdated.emit();\n }\n this.dateChange = false;\n return;\n } catch (error) {\n console.error(error)\n }\n }\n };\n async getNotes() {\n let notesHistory: note[] = await this.patientService.getNote(this.patient.chPatId, 1);\n this.notes = notesHistory;\n }\n async postNote() {\n if(!this.note.length){\n\n } else{\n let noteId = await this.patientService.postNote(this.patient.chPatId, this.note, 1, null, null)\n this.notes.push({\n createDateTime: moment.utc().toString(),\n createUserFullName: this.user?.firstName + ' ' + this.user?.lastName,\n createUserName: this.user?.email,\n createdByUserID: null,\n lastUpdateDateTime: moment.utc().toString(),\n lastUpdateUserID: null,\n lastUpdateUserFullName: null,\n noteID: noteId,\n noteText: this.note,\n updateUserName: this.user?.email,\n })\n this.note = '';\n }\n }\n convertNotesElementIntoIHEHistoryElement(note: note): awvHistoryElement {\n return {\n createdBy: note.createUserFullName?.trim() || note.createUserDisplayName,\n createdById: note.createdByUserID,\n createdAt: moment(note.createDateTime).local().format('YYYY-MM-DD HH:mm:ss'),\n proName: note.createUserName,\n noteText: note.noteText,\n noteId: note.noteID,\n action: 'note',\n faIcon: faComment\n }\n }\n addElementIntoHistoryList(el: awvHistoryElement): void {\n this.historyDetails.push(el);\n };\n getLiveUpdatedHistoryList(): awvHistoryElement[] {\n let result: awvHistoryElement[] = [];\n //notes\n this.notes.forEach(note => {\n note.createDateTime = moment.utc(note.createDateTime).toString();\n result.push(this.convertNotesElementIntoIHEHistoryElement(note));\n })\n if (result.length != this.historyDetails.length) {\n result.sort((a, b) => {\n if (moment(a.createdAt).isBefore(moment(b.createdAt))) return 1;\n else if (moment(a.createdAt).isAfter(moment(b.createdAt))) return -1;\n else return 0;\n });\n this.historyDetails = result;\n }\n return this.historyDetails;\n }\n async getCurrentUserInfo() {\n this.user = await this.authService.getWellpepperUserInfo()\n }\n getProfessionalsInfo(proIds: string[]): void {\n proIds?.forEach(id => {\n if (!this.professionalsById[id]) {\n this.patientService.getProfessional(id).then(professional => {\n this.professionalsById[id] = professional;\n })\n }\n })\n}\n proAvatar(proId: string): string {\n return this.professionalsById?.[proId]?.avatar?.url;\n }\n async getAndAssignStatusDateFromTrackAwvPatientInfo() {\n const awvPatientInfo = await this.patientService.getTrackAwvPatients(this.tierNum, this.tierId, null, null, this.patient.chPatId);\n if (awvPatientInfo?.[0]) {\n this.patient.statusDate = moment(awvPatientInfo[0].statusDate).format(\"yyyy-MM-DD\");\n }\n }\n sortHistoryListByDate(): void {\n this.historyDetails.sort((a, b) => {\n if (moment(a.createdAt).isBefore(moment(b.createdAt))) return 1;\n else if (moment(a.createdAt).isAfter(moment(b.createdAt))) return -1;\n else return 0;\n });\n }\n isDateBeforeOneYearAgo(): boolean {\n if (!this.statusDate) return false;\n const targetDate = moment(this.statusDate).add(1,'day');\n return targetDate.isValid() && targetDate.isBefore(moment().subtract(1,'year'));\n }\n isDateAfterToday(): boolean {\n if (!this.statusDate) return false;\n const targetDate = moment(this.statusDate);\n return targetDate.isValid() && targetDate.isAfter(moment());\n }\n}\n\n\n","/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The outcome from an activity\n */\nexport enum OutcomeType {\n ScheduledOutcome = 'ScheduledOutcome',\n CompletedOutcome = 'CompletedOutcome',\n CallBackOutcome = 'CallBackOutcome',\n RemovedOutcome = 'RemovedOutcome',\n DeferredToSignifyOutcome = 'DeferredToSignifyOutcome',\n PatientWasRemindedOutcome = 'PatientWasRemindedOutcome',\n PatientDidNotAnswerOutcome = 'PatientDidNotAnswerOutcome',\n PatientAttendedOutcome = 'PatientAttendedOutcome',\n PatientDidNotAttendOutcome = 'PatientDidNotAttendOutcome'\n}\n","/* tslint:disable */\n/* eslint-disable */\n\n/**\n * TODO\n */\nexport enum PropertiesType {\n ScheduledProperties = 'ScheduledProperties',\n CompletedProperties = 'CompletedProperties',\n CallBackProperties = 'CallBackProperties',\n RemovedProperties = 'RemovedProperties',\n PatientWasRemindedProperties = 'PatientWasRemindedProperties',\n PatientDidNotAnswerProperties = 'PatientDidNotAnswerProperties',\n PatientAttendedProperties = 'PatientAttendedProperties',\n PatientDidNotAttendProperties = 'PatientDidNotAttendProperties'\n}\n","import moment from 'moment';\n\nexport class WorkflowDateTimeUtil {\n\n public static dateTimeStringToDateOnlyString(dateTime: string): string {\n if (!dateTime){\n return '';\n }\n return moment(dateTime).format('yyyy-MM-DD');\n }\n\n public static dateTimeStringToUSDateOnlyString(dateTime: string): string {\n return moment(dateTime).format('MM/DD/yyyy');\n }\n\n public static todayDateOnlyString(): string {\n return moment().format('yyyy-MM-DD');\n }\n\n public static dateTimeStringToMonthDateFormat(dateTime: string): string {\n return moment(dateTime).format('MM/DD');\n }\n\n public static todayToMonthDateFormat(): string {\n return moment().format('MM/DD');\n }\n\n public static minNextAwvDate(scheduledOrCompletedDate?: string): string {\n const date = scheduledOrCompletedDate ? moment(scheduledOrCompletedDate) : moment();\n return date.add(1, 'year').startOf('month').format('yyyy-MM-DD');\n }\n\n public static maxNextAwvDate(scheduledOrCompletedDate?: string): string {\n const date = scheduledOrCompletedDate ? moment(scheduledOrCompletedDate) : moment();\n return date.add(2, 'year').startOf('month').format('yyyy-MM-DD');\n }\n}\n","
\n
\n \n
{{backendError.userFriendlyErrorMessage}}
\n
\n
{{backendError.errorStatus}} - {{backendError.errorStatusText}}
\n
\n\n","import { AfterViewInit, Component, ElementRef, OnInit } from '@angular/core';\nimport {AwvWorkflowService} from '@shared/services/awv-workflow/awv-workflow.service';\nimport {BackendError} from '@shared/services/awv-workflow/backend-error';\n\n@Component({\n selector: 'coach-patient-awv-inline-error',\n templateUrl: './patient-awv-inline-error.component.html',\n styleUrls: ['./patient-awv-inline-error.component.scss']\n})\nexport class PatientAwvInlineErrorComponent implements OnInit{\n backendError: BackendError;\n constructor(private awvWorkflowService: AwvWorkflowService, private elementRef: ElementRef) {\n }\n ngOnInit(): void {\n const element = this.elementRef.nativeElement;\n this.awvWorkflowService.backendError$.subscribe((error: BackendError) => {\n // need this check so that the component is only displayed for the open form\n if (element.offsetParent !== null) {\n this.backendError = error;\n }\n } );\n }\n}\n","
\n
\n\n
\n\n \n \n
\n
\n
\n \n \n \n {{practice.tier4Name}}\n \n \n
\n\n
\n\n
\n \n
\n
\n \n
\n\n
\n
{{commentbox.value.length}}/{{commentCharacterLimit}}
\n
Copy text
\n
\n \n
\n \n \n \n \n \n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport moment from 'moment/moment';\nimport { ScheduledOutcome } from '../../../../../../api/care-orch/models/scheduled-outcome';\nimport { OutcomeType } from '../../../../../../api/care-orch/models/outcome-type';\nimport { PropertiesType } from '../../../../../../api/care-orch/models/properties-type';\nimport { ScheduledProperties } from '../../../../../../api/care-orch/models/scheduled-properties';\nimport {CareOrchestrationConstants} from '@shared/models/module-constants';\nimport {PracticeListResult} from '@api/track/models/practice-list-result';\nimport {\n WorkflowDateTimeUtil\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util';\nimport { PracticeService } from '@shared/services/hierarchy/practice.service';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\n\nexport class Practice {\n name: string;\n constructor(name) { this.name = name; }\n}\n\nexport class Comment {\n createdDateTime: string;\n createdUserDisplayName: string;\n commentText: string;\n constructor(createdDateTime, createdUserDisplayName, commentText) {\n this.createdDateTime = createdDateTime;\n this.createdUserDisplayName = createdUserDisplayName;\n this.commentText = commentText;\n }\n}\n\n@Component({\n selector: 'coach-patient-workflow-scheduled',\n templateUrl: './patient-workflow-scheduled.component.html',\n styleUrls: ['./patient-workflow-scheduled.component.scss']\n})\nexport class PatientWorkflowScheduledComponent implements OnInit {\n @Input() public set patient(patient: Patient){\n if (patient) {\n this.clearFields();\n this.loadPracticesDropdown(patient);\n }\n }\n @Input() public properties: ScheduledProperties;\n @Input() public editModeActive = false;\n @Output() outcomeSaved: EventEmitter = new EventEmitter();\n @Output() deleteActivity: EventEmitter = new EventEmitter();\n\n scheduledDate = '';\n scheduledPracticeId = '';\n providerName = '';\n comment = '';\n practices: PracticeListResult[];\n allFieldsEmpty = true;\n requiredFieldsSatisfied = false;\n commentCharacterLimit = CareOrchestrationConstants.commentBoxCharacterLimit;\n providerFieldCharacterLimit = CareOrchestrationConstants.providerFieldCharacterLimit;\n showRemoveDialog = false;\n minScheduledDate = moment().subtract(1, 'year').format('yyyy-MM-DD');\n maxScheduledDate = moment().add(1, 'year').format('yyyy-MM-DD');\n control = new UntypedFormControl();\n filteredPractices: PracticeListResult[];\n practiceOnLoad: string;\n\n constructor(private practiceService: PracticeService) { }\n\n ngOnInit(): void {\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.properties){\n if (this.properties.date) {\n this.scheduledDate = WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.properties.date);\n }\n this.providerName = this.properties.providerName;\n }\n }\n private _filter(value: string): PracticeListResult[] {\n const filterValue = this._normalizeValue(value);\n return this.practices.filter(practice => this._normalizeValue(practice.tier4Name).includes(filterValue));\n }\n\n private _normalizeValue(value: string): string {\n return value.toLowerCase().replace(/\\s/g, '');\n }\n\n loadPracticesDropdown(patient: Patient): void {\n this.practiceService.getPractices(patient).then(practices => {\n this.practices = practices;\n this.filteredPractices = this._filter('');\n if (this.properties && this.properties.practiceId) {\n this.scheduledPracticeId = this.properties.practiceId;\n this.practiceOnLoad = this.practices.find(x => x.tier4Id === this.scheduledPracticeId).tier4Name.toString();\n this.control.setValue(this.practiceOnLoad);\n } else {\n this.scheduledPracticeId = '';\n }\n });\n }\n filterPractices(value: string ): void{\n this.filteredPractices = value ? this._filter(value) : [...this.practices];\n }\n displayFn(practice?: string): string {\n return practice;\n }\n getPracticeId(event: MatAutocompleteSelectedEvent): void{\n this.scheduledPracticeId = event.option.id;\n this.fieldChanged();\n }\n\ncopyComment(commentBox): void {\n commentBox.select();\n document.execCommand('copy');\n commentBox.setSelectionRange(0, 0);\n }\n\n fieldChanged(): void {\n this.checkAnyFieldHasValue();\n this.checkRequiredFieldsSatisfied();\n\n }\n\n private checkAnyFieldHasValue(): void {\n if (this.scheduledDate === '' && this.scheduledPracticeId === '' && this.comment === '' && this.providerName === '') {\n this.allFieldsEmpty = true;\n return;\n }\n\n this.allFieldsEmpty = false;\n }\n\n public isScheduledDateValid(): boolean {\n const scheduledToDate = moment(this.scheduledDate, 'YYYY-MM-DD').toDate();\n const minScheduledToDate = moment(this.minScheduledDate, 'YYYY-MM-DD').toDate();\n const maxScheduledToDate = moment(this.maxScheduledDate, 'YYYY-MM-DD').toDate();\n\n return scheduledToDate >= minScheduledToDate && scheduledToDate <= maxScheduledToDate;\n }\n\n private checkRequiredFieldsSatisfied(): void {\n if (!this.editModeActive){\n if (this.isScheduledDateValid()) {\n this.requiredFieldsSatisfied = true;\n return;\n }\n this.requiredFieldsSatisfied = false;\n }\n else {\n this.checkIfFieldsWereEdited();\n }\n }\n private checkIfFieldsWereEdited(): void {\n let date = this.properties.date;\n date = date.substring(0, 10);\n if (date !== this.scheduledDate && this.isScheduledDateValid()) {\n this.requiredFieldsSatisfied = true;\n return;\n }\n if (this.properties.providerName !== this.providerName) {\n this.requiredFieldsSatisfied = true;\n return;\n }\n if (this.properties.practiceId !== this.scheduledPracticeId) {\n this.requiredFieldsSatisfied = true;\n return;\n }\n if ('' !== this.comment) {\n this.requiredFieldsSatisfied = true;\n return;\n }\n this.requiredFieldsSatisfied = false;\n }\n\n clearFields(): void {\n if (!this.editModeActive) {\n this.scheduledDate = '';\n this.scheduledPracticeId = '';\n this.control.setValue('');\n this.providerName = '';\n this.comment = '';\n this.fieldChanged();\n }\n else{\n this.resetFields();\n }\n }\n private resetFields(): void {\n this.scheduledDate = this.properties.date.substring(0, 10);\n this.scheduledPracticeId = this.properties.practiceId;\n this.control.setValue(this.practiceOnLoad);\n this.providerName = this.properties.providerName;\n this.comment = '';\n this.requiredFieldsSatisfied = false;\n this.allFieldsEmpty = true;\n }\n\n save() {\n const scheduledOutcome = {\n type: OutcomeType.ScheduledOutcome,\n properties: {\n type: PropertiesType.ScheduledProperties,\n date: WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.scheduledDate),\n practiceId: this.scheduledPracticeId ? this.scheduledPracticeId : null,\n providerName: this.providerName ? this.providerName : null,\n comment: this.comment ? this.comment : null,\n } as unknown as ScheduledProperties\n } as ScheduledOutcome;\n if (scheduledOutcome != null) {\n this.outcomeSaved.emit(scheduledOutcome);\n }\n\n this.clearFields();\n }\n\n onDialogButtonClick(buttonValue: string): void {\n switch (buttonValue){\n case 'cancel':\n this.showRemoveDialog = false;\n break;\n case 'delete':\n this.deleteActivity.emit();\n }\n }\n\n showDialog(): void {\n this.showRemoveDialog = true;\n }\n\n stringifyForm(): string {\n if (!this.scheduledDate) {\n return '';\n }\n\n let value = 'AWV scheduled for ' + WorkflowDateTimeUtil.dateTimeStringToMonthDateFormat(this.scheduledDate);\n\n if (this.providerName) {\n value += ' with ' + this.providerName;\n }\n\n if (this.scheduledPracticeId) {\n value += ' at ' + this.practices.find(p => p.tier4Id === this.scheduledPracticeId).tier4Name;\n }\n\n if (this.comment) {\n value += '. ' + this.comment;\n }\n\n return value;\n }\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { OutcomeType } from '@api/care-orch/models/outcome-type';\nimport { PatientAttendedOutcome } from '@api/care-orch/models/patient-attended-outcome';\nimport { WorkflowDateTimeUtil } from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util';\nimport { Outcome } from '@api/care-orch/models/outcome';\nimport { CompletedProperties } from '@api/care-orch/models/completed-properties';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NextAwvDateValidationService {\n\n constructor() { }\n\n isNextAwvDateChangedAndHasValidValue( nextAwvDateChecked: boolean, nextAwvDate: string,\n minNextAwvDate: string, maxNextAwvDate: string, outcome: Outcome): boolean{\n const newFormFill = () => nextAwvDateChecked && !this.nextAwvDateWasPreviouslySaved(outcome)\n && nextAwvDate !== \"\" && (nextAwvDate > minNextAwvDate && nextAwvDate < maxNextAwvDate);\n if (newFormFill()){\n return true;\n }\n const nextAwvDatePreviouslyUncheckedButIsNowChecked = () => !nextAwvDateChecked && this.nextAwvDateWasPreviouslySaved(outcome);\n if (nextAwvDatePreviouslyUncheckedButIsNowChecked()){\n return true;\n }\n const previouslySavedNextAwvDateChanged = () => nextAwvDateChecked && this.nextAwvDateWasPreviouslySaved(outcome) &&\n this.nextAwvDateWasSavedPreviouslyAndChanged(outcome, nextAwvDate) && (nextAwvDate > minNextAwvDate && nextAwvDate < maxNextAwvDate);\n if (previouslySavedNextAwvDateChanged()){\n return true;\n }\n return false;\n }\n\n isNextAwvDateChangedAndHasValidValueForCompleted(nextAwvDateChecked: boolean, nextAwvDate: string,\n minNextAwvDate: string, maxNextAwvDate: string,\n properties: CompletedProperties): boolean{\n const newFormFill = () => nextAwvDateChecked\n && !this.nextAwvDateWasPreviouslySavedForCompleted(properties)\n && nextAwvDate !== \"\" && (nextAwvDate > minNextAwvDate && nextAwvDate < maxNextAwvDate);\n if (newFormFill()){\n return true;\n }\n const nextAwvDatePreviouslyUncheckedButIsNowChecked = () => !nextAwvDateChecked\n && this.nextAwvDateWasPreviouslySavedForCompleted(properties);\n if (nextAwvDatePreviouslyUncheckedButIsNowChecked()){\n return true;\n }\n const previouslySavedNextAwvDateChanged = () => nextAwvDateChecked\n && this.nextAwvDateWasPreviouslySavedForCompleted(properties) &&\n this.nextAwvDateWasSavedPreviouslyAndChangedForCompleted(properties, nextAwvDate)\n && (nextAwvDate > minNextAwvDate && nextAwvDate < maxNextAwvDate);\n if (previouslySavedNextAwvDateChanged()){\n return true;\n }\n return false;\n }\n\n nextAwvDateWasPreviouslySaved(outcome: Outcome): boolean {\n if (null == outcome){\n return false;\n }\n switch (outcome.type) {\n case OutcomeType.PatientAttendedOutcome:\n const attendedOutcome = outcome as PatientAttendedOutcome;\n if (attendedOutcome.properties.nextAwvDate !== '') {\n return true;\n }\n else {\n return false;\n }\n case OutcomeType.PatientDidNotAttendOutcome:\n return false;\n }\n }\n\n nextAwvDateWasSavedPreviouslyAndChanged(outcome: Outcome, nextAwvDate: string): boolean {\n if (null == outcome){\n return false;\n }\n switch (outcome.type) {\n case OutcomeType.PatientAttendedOutcome:\n const attendedOutcome = outcome as PatientAttendedOutcome;\n if (WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(attendedOutcome.properties.nextAwvDate) !== nextAwvDate) {\n return true;\n }\n else {\n return false;\n }\n case OutcomeType.PatientDidNotAttendOutcome:\n return false;\n }\n }\n\n nextAwvDateWasPreviouslySavedForCompleted(properties: CompletedProperties): boolean {\n if (null == properties){\n return false;\n }\n if (properties.nextAwvDate !== '') {\n return true;\n }\n else {return false; }\n }\n\n nextAwvDateWasSavedPreviouslyAndChangedForCompleted(properties: CompletedProperties, nextAwvDate: string): boolean {\n if (null == properties){\n return false;\n }\n if (WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(properties.nextAwvDate) !== nextAwvDate) {\n return true;\n }\n else {return false; }\n }\n}\n","
\n
\n\n
\n\n \n \n
\n
\n \n \n \n {{practice.tier4Name}}\n \n \n
\n\n\n
\n \n
\n\n
\n \n \n
\n\n
\n \n
\n
\n \n
\n\n
\n \n
\n\n
\n
{{commentbox.value.length}}/{{commentCharacterLimit}}
\n
Copy text
\n
\n \n
\n \n \n \n \n \n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport moment from 'moment/moment';\nimport { OutcomeType } from '@api/care-orch/models/outcome-type';\nimport { PropertiesType } from '@api/care-orch/models/properties-type';\nimport { CompletedProperties } from '@api/care-orch/models/completed-properties';\nimport { CompletedOutcome } from '@api/care-orch/models/completed-outcome';\nimport { CareOrchestrationConstants } from '@shared/models/module-constants';\nimport { PracticeListResult } from '@api/track/models/practice-list-result';\nimport { ActivityType } from '@api/care-orch/models/activity-type';\nimport {\n WorkflowDateTimeUtil\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util';\nimport { PracticeService } from '@shared/services/hierarchy/practice.service';\nimport { OnChanges } from '@angular/core';\nimport { NextAwvDateValidationService } from '@shared/services/form-validation/awv/next-awv-date-validation.service';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\n\nexport class Comment {\n createdDateTime: string;\n createdUserDisplayName: string;\n commentText: string;\n constructor(createdDateTime: string, createdUserDisplayName: string, commentText: string) {\n this.createdDateTime = createdDateTime;\n this.createdUserDisplayName = createdUserDisplayName;\n this.commentText = commentText;\n }\n}\n\n@Component({\n selector: 'coach-patient-workflow-completed',\n templateUrl: './patient-workflow-completed.component.html',\n styleUrls: ['./patient-workflow-completed.component.scss']\n})\nexport class PatientWorkflowCompletedComponent implements OnChanges{\n @Input() public set patient(patient: Patient){\n if (patient) {\n this.clearFields();\n this.loadPracticesDropdown(patient);\n }\n }\n @Input() public properties: CompletedProperties;\n @Input() public editModeActive = false;\n @Output() outcomeSaved: EventEmitter = new EventEmitter();\n @Output() deleteActivity: EventEmitter = new EventEmitter();\n @Output() public activityDeleted: EventEmitter = new EventEmitter();\n\n completedDate = '';\n today: string = WorkflowDateTimeUtil.todayDateOnlyString();\n minNextAwvDate: string = WorkflowDateTimeUtil.minNextAwvDate();\n maxNextAwvDate: string = WorkflowDateTimeUtil.maxNextAwvDate();\n completedPracticeId = '';\n providerName = '';\n alternativePractice = false;\n comment = '';\n nextAwvDate = '';\n practices: PracticeListResult[];\n allFieldsEmpty = true;\n requiredFieldsSatisfied = false;\n commentCharacterLimit = CareOrchestrationConstants.commentBoxCharacterLimit;\n minCompletedDate = moment().subtract(1, 'year').format('yyyy-MM-DD');\n nextAwvDateChecked = false;\n providerFieldCharacterLimit = CareOrchestrationConstants.providerFieldCharacterLimit;\n showRemoveDialog = false;\n control = new UntypedFormControl();\n filteredPractices: PracticeListResult[];\n otherPractice: PracticeListResult = {\n tier4Id: '',\n tier4Name: 'OTHER'\n };\n practiceOnLoad: string;\n\n constructor(private practiceService: PracticeService, private nextAwvDateValidationService: NextAwvDateValidationService ) { }\n\n private _filter(value: string): PracticeListResult[] {\n const filterValue = this._normalizeValue(value);\n return this.practices?.filter(practice => this._normalizeValue(practice.tier4Name).includes(filterValue));\n }\n\n private _normalizeValue(value: string): string {\n return value.toLowerCase().replace(/\\s/g, '');\n }\n\n ngOnChanges(): void {\n if (this.properties){\n if (this.properties.providerName){\n this.providerName = this.properties.providerName;\n }\n if (this.properties.externalPractice){\n this.alternativePractice = this.properties.externalPractice;\n }\n this.completedDate = WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.properties.date);\n this.updateNextAwvDateRestrictions();\n if (this.properties.nextAwvDate) {\n this.nextAwvDate = WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.properties.nextAwvDate);\n this.nextAwvDateChecked = true;\n }\n }\n }\n\n filterPractices(value: string ): void{\n this.filteredPractices = value ? this._filter(value) : [...this.practices];\n }\n\n displayFn(practice?: string): string {\n return practice ;\n }\n\n loadPracticesDropdown(patient: Patient): void {\n this.practiceService.getPractices(patient).then(practices => {\n this.practices = practices.slice();\n if (!this.practices.some(o => o.tier4Name === 'OTHER')) {\n this.practices.unshift(this.otherPractice);\n }\n this.filteredPractices = this._filter('');\n\n if (this.properties && this.properties.externalPractice){\n this.control.setValue(this.otherPractice.tier4Name);\n }\n else if (this.properties && this.properties.practiceId) {\n this.completedPracticeId = this.properties.practiceId;\n this.practiceOnLoad = this.practices.find(x => x.tier4Id === this.completedPracticeId).tier4Name.toString();\n this.control.setValue(this.practiceOnLoad);\n } else {\n this.completedPracticeId = '';\n }\n });\n }\n\n getPracticeId(event: MatAutocompleteSelectedEvent): void {\n this.completedPracticeId = event.option.id;\n this.fieldChanged();\n }\n\n copyComment(commentBox: HTMLTextAreaElement): void{\n commentBox.select();\n document.execCommand('copy');\n\n commentBox.setSelectionRange(0, 0);\n }\n\n fieldChanged(): void {\n this.checkAnyFieldHasValue();\n this.checkRequiredFieldsSatisfied();\n }\n\n private checkAnyFieldHasValue(): void {\n if (!this.completedDate && !this.completedPracticeId && !this.comment\n && !this.providerName && !this.nextAwvDate) {\n this.allFieldsEmpty = true;\n return;\n }\n\n this.allFieldsEmpty = false;\n }\n\n private checkRequiredFieldsSatisfied(): void {\n if (this.completedDate && this.completedDate >= this.minCompletedDate && this.completedDate <= this.today){\n if (this.nextAwvDateChecked){\n if (this.nextAwvDate && this.nextAwvDateValidationService.isNextAwvDateChangedAndHasValidValueForCompleted(this.nextAwvDateChecked, this.nextAwvDate,\n this.minNextAwvDate, this.maxNextAwvDate, this.properties)){\n this.requiredFieldsSatisfied = true;\n }\n else {\n this.requiredFieldsSatisfied = false;\n return;\n }\n }\n\n this.requiredFieldsSatisfied = true;\n return;\n }\n\n this.requiredFieldsSatisfied = false;\n }\n\n clearFields(): void {\n if (!this.editModeActive) {\n this.completedDate = '';\n this.completedPracticeId = '';\n this.control.setValue('');\n this.providerName = '';\n this.comment = '';\n this.nextAwvDate = '';\n this.nextAwvDateChecked = false;\n this.alternativePractice = false;\n this.fieldChanged();\n }\n else{\n this.resetFields();\n }\n }\n\n private resetFields(): void{\n this.completedDate = this.properties.date.substring(0, 10);\n this.completedPracticeId = this.properties.practiceId;\n this.providerName = this.properties.providerName;\n this.control.setValue(this.practiceOnLoad);\n this.comment = '';\n this.requiredFieldsSatisfied = false;\n this.allFieldsEmpty = true;\n this.nextAwvDate = WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.properties.nextAwvDate);\n if (this.nextAwvDate) {\n this.nextAwvDateChecked = true;\n } else {\n this.nextAwvDateChecked = false;\n }\n if (this.properties.externalPractice){\n this.alternativePractice = this.properties.externalPractice;\n } else {\n this.alternativePractice = false;\n }\n }\n\n save(): void {\n if (this.completedPracticeId === ''){\n this.alternativePractice = true;\n }\n else {\n this.alternativePractice = false;\n }\n const completedOutcome = {\n type: OutcomeType.CompletedOutcome,\n properties: {\n type: PropertiesType.CompletedProperties,\n date: WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.completedDate),\n nextAwvDate: this.nextAwvDate ? WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.nextAwvDate) : null,\n practiceId: this.completedPracticeId ? this.completedPracticeId : null,\n providerName: this.providerName ? this.providerName : null,\n comment: this.comment ? this.comment : null,\n externalPractice: this.alternativePractice,\n } as unknown as CompletedProperties\n } as CompletedOutcome;\n if (completedOutcome != null) {\n this.outcomeSaved.emit(completedOutcome);\n }\n this.clearFields();\n }\n\n updateNextAwvDateRestrictions(): void {\n if (this.completedDate) {\n this.minNextAwvDate = WorkflowDateTimeUtil.minNextAwvDate(this.completedDate);\n this.maxNextAwvDate = WorkflowDateTimeUtil.maxNextAwvDate(this.completedDate);\n }\n }\n\n onDialogButtonClick(buttonValue: string): void {\n switch (buttonValue){\n case 'cancel':\n this.showRemoveDialog = !this.showRemoveDialog;\n break;\n case 'delete':\n this.deleteActivity.emit();\n }\n }\n\n showDialog(): void {\n this.showRemoveDialog = true;\n }\n\n stringifyForm(): string {\n if (!this.completedDate) {\n return '';\n }\n\n let value = 'AWV completed on ' + WorkflowDateTimeUtil.dateTimeStringToMonthDateFormat(this.completedDate);\n\n if (this.providerName) {\n value += ' with ' + this.providerName;\n }\n\n if (this.completedPracticeId) {\n value += ' at ' + this.practices.find(p => p.tier4Id === this.completedPracticeId).tier4Name;\n }\n\n if (this.nextAwvDate) {\n value += '. Next AWV date scheduled for ' + WorkflowDateTimeUtil.dateTimeStringToMonthDateFormat(this.nextAwvDate);\n }\n\n if (this.comment) {\n value += '. ' + this.comment;\n }\n\n return value;\n }\n\n toggleNextAwvDateInput(): void{\n this.nextAwvDateChecked = !this.nextAwvDateChecked;\n if (!this.nextAwvDateChecked) {\n this.nextAwvDate = '';\n } else {\n if (this.properties?.nextAwvDate) {\n this.nextAwvDate = WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.properties.nextAwvDate);\n }\n }\n this.fieldChanged();\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n\n/**\n * ChangeTypes\n */\nexport enum ChangeTypes {\n Create = 'Create',\n Update = 'Update',\n Rollback = 'Rollback',\n Edit = 'Edit'\n}\n","/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Source of a history change\n */\nexport enum HistorySourceType {\n CareOrchSystem = 'CareOrchSystem',\n CareOrchSelfReported = 'CareOrchSelfReported',\n CareOrchAdmin = 'CareOrchAdmin',\n PepSystem = 'PepSystem',\n PepSelfReported = 'PepSelfReported',\n CmsClaimsData = 'CmsClaimsData',\n EhrClinicalData = 'EhrClinicalData',\n InHomeAwv = 'InHomeAwv'\n}\n","/* tslint:disable */\n/* eslint-disable */\nexport enum CallbackReasons {\n PatientUnreachable = 'PATIENT_UNREACHABLE',\n PatientTraveling = 'PATIENT_TRAVELING',\n PatientRequestedCallback = 'PATIENT_REQUESTED_CALLBACK',\n PatientRequiresTranslator = 'PATIENT_REQUIRES_TRANSLATOR',\n ProviderRequestedCallback = 'PROVIDER_REQUESTED_CALLBACK',\n PatientIsInASkilledNursingFacility = 'PATIENT_IS_IN_A_SKILLED_NURSING_FACILITY',\n PatientIsInAnInpatientFacility = 'PATIENT_IS_IN_AN_INPATIENT_FACILITY',\n Other = 'OTHER'\n}\n","/* tslint:disable */\n/* eslint-disable */\nexport enum RemovedReasons {\n PatientHasDeclined = 'PATIENT_HAS_DECLINED',\n PatientIsUnreachable = 'PATIENT_IS_UNREACHABLE',\n PatientIsUnderHospiceCare = 'PATIENT_IS_UNDER_HOSPICE_CARE',\n PatientIsInASkilledNursingFacility = 'PATIENT_IS_IN_A_SKILLED_NURSING_FACILITY',\n PatientIsInAnInpatientFacility = 'PATIENT_IS_IN_AN_INPATIENT_FACILITY',\n PatientIsDeceased = 'PATIENT_IS_DECEASED',\n PatientMovedOutOfTheServiceArea = 'PATIENT_MOVED_OUT_OF_THE_SERVICE_AREA',\n InsurancePlanDoesNotCoverAwv = 'INSURANCE_PLAN_DOES_NOT_COVER_AWV',\n AwvWasCompletedByExternalProvider = 'AWV_WAS_COMPLETED_BY_EXTERNAL_PROVIDER',\n Other = 'OTHER'\n}\n","/* tslint:disable */\n/* eslint-disable */\n\n/**\n * TODO\n */\nexport enum ActivityType {\n SchedulingActivity = 'SchedulingActivity',\n ReminderActivity = 'ReminderActivity',\n AttendedActivity = 'AttendedActivity'\n}\n","import {CallbackReasons, RemovedReasons} from '@api/care-orch/models';\n\nexport class PatientAwvUtilities {\n public static removeReasonToEnum(reason: string): string {\n switch (reason) {\n case ('Patient has declined'):\n return 'PATIENT_HAS_DECLINED';\n case ('Patient is unreachable'):\n return 'PATIENT_IS_UNREACHABLE';\n case ('Patient is under hospice care'):\n return 'PATIENT_IS_UNDER_HOSPICE_CARE';\n case ('Patient is in a skilled nursing facility'):\n return 'PATIENT_IS_IN_A_SKILLED_NURSING_FACILITY';\n case ('Patient is in an inpatient facility'):\n return 'PATIENT_IS_IN_AN_INPATIENT_FACILITY';\n case ('Patient is deceased'):\n return 'PATIENT_IS_DECEASED';\n case ('Patient moved out of the service area'):\n return 'PATIENT_MOVED_OUT_OF_THE_SERVICE_AREA';\n case ('Insurance plan does not cover AWV'):\n return 'INSURANCE_PLAN_DOES_NOT_COVER_AWV';\n case ('AWV was completed by external provider'):\n return 'AWV_WAS_COMPLETED_BY_EXTERNAL_PROVIDER';\n case ('Other'):\n return 'OTHER';\n default:\n return 'PATIENT_IS_UNREACHABLE';\n }\n }\n public static removedReasonToString(reason: string): string {\n switch (reason) {\n case RemovedReasons.PatientHasDeclined:\n return 'Patient has declined';\n case RemovedReasons.PatientIsUnreachable:\n return 'Patient is unreachable';\n case RemovedReasons.PatientIsUnderHospiceCare:\n return 'Patient is under hospice care';\n case RemovedReasons.PatientIsInASkilledNursingFacility:\n return 'Patient is in a skilled nursing facility';\n case RemovedReasons.PatientIsInAnInpatientFacility:\n return 'Patient is in an inpatient facility';\n case RemovedReasons.PatientIsDeceased:\n return 'Patient is deceased';\n case RemovedReasons.PatientMovedOutOfTheServiceArea:\n return 'Patient moved out of the service area';\n case RemovedReasons.InsurancePlanDoesNotCoverAwv:\n return 'Insurance plan does not cover AWV';\n case RemovedReasons.AwvWasCompletedByExternalProvider:\n return 'AWV was completed by external provider';\n case RemovedReasons.Other:\n return 'Other';\n default:\n return '';\n }\n }\n\n public static callBackReasonToEnum(reason: string): string {\n switch (reason) {\n case ('Patient unreachable'):\n return 'PATIENT_UNREACHABLE';\n case ('Patient traveling'):\n return 'PATIENT_TRAVELING';\n case ('Patient requested callback'):\n return 'PATIENT_REQUESTED_CALLBACK';\n case ('Patient requires translator'):\n return 'PATIENT_REQUIRES_TRANSLATOR';\n case ('Provider requested callback'):\n return 'PROVIDER_REQUESTED_CALLBACK';\n case ('Patient is in a skilled nursing facility'):\n return 'PATIENT_IS_IN_A_SKILLED_NURSING_FACILITY';\n case ('Patient is in an inpatient facility'):\n return 'PATIENT_IS_IN_AN_INPATIENT_FACILITY';\n case ('Other'):\n return 'OTHER';\n }\n }\n\n public static callBackReasonToString(reason: string): string {\n switch (reason) {\n case (CallbackReasons.PatientUnreachable):\n return 'Patient unreachable';\n case (CallbackReasons.PatientTraveling):\n return 'Patient traveling';\n case (CallbackReasons.PatientRequestedCallback):\n return 'Patient requested callback';\n case (CallbackReasons.PatientRequiresTranslator):\n return 'Patient requires translator';\n case (CallbackReasons.ProviderRequestedCallback):\n return 'Provider requested callback';\n case (CallbackReasons.PatientIsInASkilledNursingFacility):\n return 'Patient is in a skilled nursing facility';\n case (CallbackReasons.PatientIsInAnInpatientFacility):\n return 'Patient is in an inpatient facility';\n case (CallbackReasons.Other):\n return 'Other';\n }\n }\n}\n","
\n
\n\n
\n \n \n \n \n
\n
Selected Date: {{reminderDate | date: 'MM/dd/yy'}}
\n\n
\n \n \n
\n\n
\n \n
\n
\n \n
\n\n
\n \n
\n
\n \n
\n\n
\n \n
\n \n
\n
{{commentbox.value.length}}/{{commentCharacterLimit}}
\n
Copy text
\n
\n
\n \n \n \n
\n
\n
\n","import {Component, EventEmitter, Input, OnInit, Output, SimpleChanges} from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport moment from 'moment/moment';\nimport { OutcomeType } from '@api/care-orch/models/outcome-type';\nimport { PropertiesType } from '@api/care-orch/models/properties-type';\nimport { CallbackProperties } from '@api/care-orch/models/callback-properties';\nimport { CallBackOutcome } from '@api/care-orch/models/call-back-outcome';\nimport { CompletedOutcome } from '@api/care-orch/models/completed-outcome';\nimport { PatientAwvUtilities } from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/patient-awv-utilities.component';\nimport {CareOrchestrationConstants} from '@shared/models/module-constants';\nimport {\n WorkflowDateTimeUtil\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util';\n\nconst oneWeeksTime = moment().add(1, 'week').format('MM/DD/yyyy');\n\nexport class Comment {\n createdDateTime: string;\n createdUserDisplayName: string;\n commentText: string;\n constructor(createdDateTime, createdUserDisplayName, commentText) {\n this.createdDateTime = createdDateTime;\n this.createdUserDisplayName = createdUserDisplayName;\n this.commentText = commentText;\n }\n}\n\n@Component({\n selector: 'coach-patient-workflow-call-back',\n templateUrl: './patient-workflow-call-back.component.html',\n styleUrls: ['./patient-workflow-call-back.component.scss']\n})\nexport class PatientWorkflowCallBackComponent implements OnInit {\n @Input() public patient: Patient;\n @Output() outcomeSaved: EventEmitter = new EventEmitter();\n @Input() public properties: CallbackProperties;\n\n user: wpapi.model.Professional;\n professionalsById: { [key: string]: wpapi.model.Professional } = {};\n selectedReminder = 0;\n reminderDate: string = oneWeeksTime;\n checked = false;\n reminderDateMin: string = moment().add(1, 'days').format('YYYY-MM-DD');\n reminderDateMax: string = moment().add(1, 'year').format('YYYY-MM-DD');\n callBackReason = '';\n comment = '';\n reasons: string[];\n allFieldsEmpty = true;\n requiredFieldsSatisfied = false;\n commentCharacterLimit = CareOrchestrationConstants.commentBoxCharacterLimit;\n\n constructor(private patientService: PatientService, private authService: AuthService) {\n this.setReminderDateMin();\n }\n\n ngOnInit(): void {\n this.reminderDate = oneWeeksTime;\n this.reasons = [\n 'Person unreachable',\n 'Patient traveling',\n 'Patient requested callback',\n 'Patient requires translator',\n 'Provider requested callback',\n 'Patient is in a skilled nursing facility',\n 'Patient is in an inpatient facility',\n 'Other'\n ];\n this.getCurrentUserInfo();\n }\n\n setReminderDateMin() {\n this.reminderDateMin = moment().add(1, 'days').format('YYYY-MM-DD');\n }\n\n setSelectedReminderDate(reminderNumber) {\n this.selectedReminder = reminderNumber;\n switch (reminderNumber){\n case 1:\n this.reminderDate = moment().add(1, 'days').format('MM/DD/yyyy');\n break;\n case 2:\n this.reminderDate = moment().add(1, 'week').format('MM/DD/yyyy');\n break;\n case 3:\n this.reminderDate = moment().add(1, 'month').format('MM/DD/yyyy');\n break;\n case 4:\n this.reminderDate = moment().add(3, 'months').format('MM/DD/yyyy');\n break;\n }\n this.fieldChanged();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.patient) {\n this.clearFields();\n }\n this.selectedReminder = 2;\n }\n\n copyComment(commentBox){\n commentBox.select();\n document.execCommand('copy');\n commentBox.setSelectionRange(0, 0);\n }\n\n fieldChanged() {\n this.checkAnyFieldHasValue();\n this.checkRequiredFieldsSatisfied();\n }\n\n private checkAnyFieldHasValue() {\n if (this.selectedReminder === 2 && this.reminderDate === '' && this.callBackReason === '' && this.comment === '') {\n this.allFieldsEmpty = true;\n return;\n }\n\n this.allFieldsEmpty = false;\n }\n\n public isReminderDateValid(): boolean {\n return this.reminderDate !== '' && this.reminderDate >= this.reminderDateMin && this.reminderDate <= this.reminderDateMax;\n }\n\n private checkRequiredFieldsSatisfied() {\n if ((this.selectedReminder !== 0 || this.isReminderDateValid()) && this.callBackReason !== '') {\n this.requiredFieldsSatisfied = true;\n return;\n }\n\n this.requiredFieldsSatisfied = false;\n }\n\n clearFields() {\n this.selectedReminder = 2;\n this.reminderDate = oneWeeksTime;\n this.callBackReason = '';\n this.comment = '';\n this.checked = false;\n this.fieldChanged();\n }\n\n save() {\n const reminderOutcome = {\n type: OutcomeType.CallBackOutcome,\n properties: {\n type: PropertiesType.CallBackProperties,\n date: WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.reminderDate),\n reason: PatientAwvUtilities.callBackReasonToEnum(this.callBackReason),\n comment: this.comment ? this.comment : null,\n } as unknown as CallbackProperties\n } as CallBackOutcome;\n this.outcomeSaved.emit(reminderOutcome);\n this.clearFields();\n }\n\n getCurrentUserInfo(): void {\n this.authService.getWellpepperUserInfo().then(user => this.user = user);\n }\n\n getProfessionalsInfo(proIds: string[]): void {\n proIds?.forEach(id => {\n if (!this.professionalsById[id]) {\n this.patientService.getProfessional(id).then(professional => {\n this.professionalsById[id] = professional;\n });\n }\n });\n }\n\n customDateChange(){\n this.checked = !this.checked;\n if (this.checked === true) {\n this.selectedReminder = 0;\n this.reminderDate = '';\n } else{\n if (this.checked === false) {\n this.selectedReminder = 2;\n this.reminderDate = oneWeeksTime;\n }\n }\n this.fieldChanged();\n }\n\n stringifyForm(): string {\n if (!this.callBackReason || !this.reminderDate) {\n return '';\n }\n\n let value = 'AWV outreach attempted. ' + this.callBackReason + '. Next outreach on ' +\n WorkflowDateTimeUtil.dateTimeStringToMonthDateFormat(this.reminderDate);\n\n if (this.comment) {\n value += '. ' + this.comment;\n }\n\n return value;\n }\n}\n\n\n","
\n
\n\n
\n \n
\n
\n \n
\n\n
\n \n
\n\n
\n
{{commentbox.value.length}}/{{commentCharacterLimit}}
\n
Copy text
\n
\n \n
\n \n \n \n \n \n
\n
\n
\n","import {Component, EventEmitter, Input, OnInit, Output, SimpleChanges} from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { OutcomeType } from '@api/care-orch/models/outcome-type';\nimport { PatientAwvUtilities } from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/patient-awv-utilities.component';\nimport { RemovedOutcome } from '@api/care-orch/models/removed-outcome';\nimport {PropertiesType, RemovedProperties, RemovedReasons} from '@api/care-orch/models';\nimport {CareOrchestrationConstants} from '@shared/models/module-constants';\n\nexport class Comment {\n createdDateTime: string;\n createdUserDisplayName: string;\n commentText: string;\n constructor(createdDateTime, createdUserDisplayName, commentText) {\n this.createdDateTime = createdDateTime;\n this.createdUserDisplayName = createdUserDisplayName;\n this.commentText = commentText;\n }\n}\n\n@Component({\n selector: 'coach-patient-workflow-remove',\n templateUrl: './patient-workflow-remove.component.html',\n styleUrls: ['./patient-workflow-remove.component.scss']\n})\nexport class PatientWorkflowRemoveComponent implements OnInit {\n @Input() public patient: Patient;\n @Input() public removedOutcome: RemovedOutcome;\n @Input() public editModeActive = false;\n @Output() outcomeSaved: EventEmitter = new EventEmitter();\n @Output() deleteActivity: EventEmitter = new EventEmitter();\n\n user: wpapi.model.Professional;\n professionalsById: { [key: string]: wpapi.model.Professional } = {};\n\n removeReason = '';\n comment = '';\n reasons: string[];\n allFieldsEmpty = true;\n requiredFieldsSatisfied = false;\n commentCharacterLimit = CareOrchestrationConstants.commentBoxCharacterLimit;\n showRemoveDialog = false;\n\n constructor(private patientService: PatientService, private authService: AuthService) { }\n\n ngOnInit(): void {\n this.reasons = Object.values(RemovedReasons).map(r => PatientAwvUtilities.removedReasonToString(r));\n this.getCurrentUserInfo();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.patient) {\n this.clearFields();\n }\n if (this.removedOutcome){\n this.removeReason = PatientAwvUtilities.removedReasonToString(this.removedOutcome.properties.reason);\n }\n }\n\n copyComment(commentBox){\n commentBox.select();\n document.execCommand('copy');\n commentBox.setSelectionRange(0, 0);\n }\n\n fieldChanged() {\n this.checkAnyFieldHasValue();\n this.checkRequiredFieldsSatisfied();\n }\n\n private checkAnyFieldHasValue() {\n if (this.removeReason === '' && this.comment === '') {\n this.allFieldsEmpty = true;\n return;\n }\n\n this.allFieldsEmpty = false;\n }\n\n private checkRequiredFieldsSatisfied() {\n if (this.removeReason !== '' || (this.editModeActive && ('' !== this.comment))) {\n this.requiredFieldsSatisfied = true;\n return;\n }\n this.requiredFieldsSatisfied = false;\n }\n\n clearFields() {\n if (!this.editModeActive) {\n this.removeReason = '';\n this.comment = '';\n this.fieldChanged();\n }\n else{\n this.resetFields();\n }\n }\n private resetFields(){\n this.removeReason = PatientAwvUtilities.removedReasonToString(this.removedOutcome.properties.reason);\n this.comment = '';\n this.requiredFieldsSatisfied = false;\n this.allFieldsEmpty = true;\n }\n\n save() {\n const removedOutcome = {\n type: OutcomeType.RemovedOutcome,\n properties: {\n reason: PatientAwvUtilities.removeReasonToEnum(this.removeReason),\n comment: this.comment ? this.comment : null,\n type: PropertiesType.RemovedProperties\n } as unknown as RemovedProperties\n } as RemovedOutcome;\n if (removedOutcome != null) {\n this.outcomeSaved.emit(removedOutcome);\n }\n this.clearFields();\n }\n\n getCurrentUserInfo(): void {\n this.authService.getWellpepperUserInfo().then(user => this.user = user);\n }\n\n getProfessionalsInfo(proIds: string[]): void {\n proIds?.forEach(id => {\n if (!this.professionalsById[id]) {\n this.patientService.getProfessional(id).then(professional => {\n this.professionalsById[id] = professional;\n });\n }\n });\n }\n\n onDialogButtonClick(buttonValue: string): void {\n switch (buttonValue){\n case 'cancel':\n this.showRemoveDialog = !this.showRemoveDialog;\n break;\n case 'delete':\n this.deleteActivity.emit();\n }\n }\n\n showDialog(): void {\n this.showRemoveDialog = true;\n }\n\n stringifyForm(): string {\n if (!this.removeReason) {\n return '';\n }\n\n let value = 'Removed from AWV default list because: ' + this.removeReason;\n\n if (this.comment) {\n value += '. ' + this.comment;\n }\n\n return value;\n }\n}\n\n\n","import {Component, Input} from '@angular/core';\nimport { AwvWorkflow } from '@api/care-orch/models/awv-workflow';\nimport { AwvService } from '@api/care-orch/services/awv.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { History } from '@shared/modules/patient-facesheet/tabs/patient-awv-history/patient-awv-history.component';\nimport { Patient } from '@shared/models/patient';\nimport { CallbackProperties } from '@api/care-orch/models/callback-properties';\nimport { PatientAwvUtilities } from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/patient-awv-utilities.component';\nimport {\n WorkflowDateTimeUtil\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util';\n\n\n@Component({\n selector: 'coach-patient-awv-callback',\n templateUrl: './patient-awv-callback.component.html',\n styleUrls: ['./patient-awv-callback.component.scss']\n})\nexport class PatientAwvCallbackComponent {\n @Input() public patientId: string;\n @Input() public patient: Patient;\n @Input() public awvWorkflow: AwvWorkflow;\n @Input() public properties: CallbackProperties;\n\n callbackReason = '';\n callbackDate = '';\n comment = '';\n history: History[] = [];\n\n constructor(private awvService: AwvService, private authService: AuthService) {\n console.log(this.awvWorkflow);\n }\n\n ngOnChanges(){\n if (this.properties){\n this.callbackReason = PatientAwvUtilities.callBackReasonToString(this.properties.reason);\n this.callbackDate = WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.properties.date);\n this.comment = this.properties.comment;\n }\n }\n}\n","
\n
\n
\n
\n \n
{{callbackDate}}
\n
\n
\n
\n
\n
{{callbackReason}}
\n
\n
{{comment}}\n
\n
\n
\n","
\n
\n
\n
\n AWV Scheduling\n \n
\n
\n \n
\n
\n
\n
\n
\n
Call patient to schedule their AWV
\n
\n \n
\n \n \n \n \n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport {\n PatientWorkflowScheduledComponent\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-scheduled/patient-workflow-scheduled.component';\nimport {\n PatientWorkflowCompletedComponent\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-completed/patient-workflow-completed.component';\nimport {\n PatientWorkflowCallBackComponent\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-call-back/patient-workflow-call-back.component';\nimport {\n PatientWorkflowRemoveComponent\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-remove/patient-workflow-remove.component';\nimport { AwvService } from '../../../../../api/care-orch/services/awv.service';\nimport { AwvWorkflow } from '../../../../../api/care-orch/models/awv-workflow';\nimport { Outcome } from '../../../../../api/care-orch/models/outcome';\nimport {\n ActivityType,\n AwvWorkflowStatuses,\n CallBackOutcome,\n CallbackProperties,\n OutcomeType,\n ScheduledOutcome,\n ScheduledProperties,\n SchedulingActivity\n} from '../../../../../api/care-orch/models';\nimport { CareOrchestrationConstants } from '@shared/models/module-constants';\nimport { Observable } from 'rxjs';\nimport {\n WorkflowDateTimeUtil\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util';\nimport { Program } from '@shared/services/mixpanel/events/workflow-events';\nimport { WorkflowEventsService } from '@shared/services/mixpanel/events/workflow-events.service';\n\n@Component({\n selector: 'coach-patient-awv-scheduling',\n templateUrl: './patient-awv-scheduling.component.html',\n styleUrls: ['./patient-awv-scheduling.component.scss']\n})\nexport class PatientAwvSchedulingComponent {\n @Input() public patient: Patient;\n @Input() public awvWorkflow: AwvWorkflow;\n @Input() public tier: IHierarchyTier;\n @Input() public mobileScreenSize: boolean;\n @Input() sidebarMode?: boolean;\n @Input() public isTabOpen: boolean;\n @Input() public properties: CallbackProperties;\n @Output() patientUpdated: EventEmitter = new EventEmitter();\n @Output() awvWorkflowUpdated: EventEmitter> = new EventEmitter();\n @Output() public activityDeleted: EventEmitter = new EventEmitter();\n\n @ViewChild(PatientWorkflowScheduledComponent) patientWorkflowScheduledComponent: PatientWorkflowScheduledComponent;\n @ViewChild(PatientWorkflowCompletedComponent) patientWorkflowCompletedComponent: PatientWorkflowCompletedComponent;\n @ViewChild(PatientWorkflowCallBackComponent) patientWorkflowCallBackComponent: PatientWorkflowCallBackComponent;\n @ViewChild(PatientWorkflowRemoveComponent) patientWorkflowRemoveComponent: PatientWorkflowRemoveComponent;\n\n user: wpapi.model.Professional;\n professionalsById: { [key: string]: wpapi.model.Professional } = {};\n today: string = WorkflowDateTimeUtil.todayDateOnlyString();\n selectedActivity: number = 0;\n scheduledOutcomeProperties = {} as ScheduledProperties;\n callbackOutcomeProperties = {} as CallbackProperties;\n allAwvWorkflowStatuses = AwvWorkflowStatuses;\n\n constructor(private awvService: AwvService, private workflowEvents: WorkflowEventsService) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.patient) {\n this.setSelectedActivity(0);\n }\n if (this.awvWorkflow){\n this.scheduledOutcomeProperties = null;\n this.callbackOutcomeProperties = null;\n if (this.awvWorkflow.status === this.allAwvWorkflowStatuses.Scheduled){\n const schedulingActivities = this.awvWorkflow.completedActivities\n .filter( x => x.type === 'SchedulingActivity').map(x => x as SchedulingActivity);\n const scheduledOutcome = schedulingActivities.find( x => x.outcome.type === OutcomeType.ScheduledOutcome).outcome as ScheduledOutcome;\n this.scheduledOutcomeProperties = scheduledOutcome.properties;\n }\n if (this.awvWorkflow.status === this.allAwvWorkflowStatuses.OutreachAttempted) {\n const callbackActivities = this.awvWorkflow.inProgressActivities\n .filter(x => x.type === 'SchedulingActivity').map(x => x as SchedulingActivity);\n const callbackOutcome = callbackActivities.find(x => x.outcome.type === OutcomeType.CallBackOutcome).outcome as CallBackOutcome;\n this.callbackOutcomeProperties = callbackOutcome.properties;\n }\n }\n }\n clearUnselectedActivityForms(){\n if (this.selectedActivity === 1){\n this.patientWorkflowScheduledComponent.clearFields();\n }\n else if (this.selectedActivity === 2){\n this.patientWorkflowCompletedComponent.clearFields();\n }\n else if (this.selectedActivity === 3){\n this.patientWorkflowCallBackComponent.clearFields();\n }\n else if (this.selectedActivity === 4){\n this.patientWorkflowRemoveComponent.clearFields();\n }\n }\n setSelectedActivity(activityNumber) {\n\n // Clearing the form(s) before selecting/unselecting the workflow(s)\n this.clearUnselectedActivityForms();\n\n if (this.selectedActivity === activityNumber) {\n this.selectedActivity = 0;\n }\n else\n {\n this.selectedActivity = activityNumber;\n }\n }\n\n outcomeSaved(outcome: Outcome): void {\n const activityToSave = { type: ActivityType.SchedulingActivity, outcome } as SchedulingActivity;\n if (this.scheduledOutcomeProperties || this.callbackOutcomeProperties) {\n this.workflowEvents.trackEdit(activityToSave);\n } else {\n this.workflowEvents.trackSave(activityToSave);\n }\n\n const obsUpdatedWorkflow = this.awvService.updateWorkflowActivity({\n programId: CareOrchestrationConstants.AwvProgramId,\n chPatId: this.patient.trackAwvPatient?.chPatID || Number(this.patient.trackPatient.chPatId),\n body: activityToSave\n });\n\n this.awvWorkflowUpdated.emit(obsUpdatedWorkflow);\n }\n\n activityDeletedEvent(activityType: ActivityType): void {\n this.activityDeleted.emit(activityType);\n }\n}\n\n\n","
\n
\n \n
\n\n","import {Component, Input, OnInit, } from '@angular/core';\nimport {Patient} from '../../models/patient';\nimport {PatientService} from '../../services/patient/patient.service';\nimport {AuthService} from '../../services/auth-service/auth.service';\n\n@Component({\n selector: 'coach-stepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss']\n})\nexport class StepperComponent implements OnInit{\n @Input() public mobileScreenSize: boolean;\n @Input() public patient: Patient;\n @Input() sidebarMode?: boolean;\n @Input() public icon: string;\n @Input() public activityCompleted = true;\n @Input() public isLastStep = false;\n constructor(private patientService: PatientService, private authService: AuthService ) {}\n\n ngOnInit(): void {\n }\n}\n\n\n","
\n
\n \n
\n
\n
\n
\n
AWV Scheduled
\n
{{scheduledOutcomeProperties.date | date:'MM/dd/yyyy'}} {{scheduledOutcomeProperties.practiceId? ('at ' + practiceName) : ''}}
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n\n\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport {Patient} from '@shared/models/patient';\nimport {AwvWorkflow} from '@api/care-orch/models/awv-workflow';\nimport {SchedulingActivity} from '@api/care-orch/models/scheduling-activity';\nimport {OutcomeType} from '@api/care-orch/models/outcome-type';\nimport {ScheduledOutcome} from '@api/care-orch/models/scheduled-outcome';\nimport {ScheduledProperties} from '@api/care-orch/models/scheduled-properties';\nimport {PracticeService} from '@shared/services/hierarchy/practice.service';\nimport {Activity} from '@api/care-orch/models/activity';\nimport {Outcome} from '@api/care-orch/models/outcome';\nimport {ActivityType} from '@api/care-orch/models/activity-type';\nimport { AwvWorkflowService } from '@shared/services/awv-workflow/awv-workflow.service';\nimport { OnChanges } from '@angular/core';\nimport { WorkflowEventsService } from '@shared/services/mixpanel/events/workflow-events.service';\n\n@Component({\n selector: 'coach-patient-step-scheduled',\n templateUrl: './patient-step-scheduled.component.html',\n styleUrls: ['./patient-step-scheduled.component.scss']\n})\nexport class PatientStepScheduledComponent implements OnInit, OnChanges{\n @Input() public mobileScreenSize: boolean;\n @Input() public patient: Patient;\n @Input() sidebarMode?: boolean;\n @Input() public activityStatus: string;\n @Input() public awvWorkflow: AwvWorkflow;\n @Output() public activitySaved: EventEmitter = new EventEmitter();\n @Output() public activityDeleted: EventEmitter = new EventEmitter();\n\n isTabOpen = false;\n scheduledOutcomeProperties = {} as ScheduledProperties;\n practiceName = '';\n\n constructor(private practiceService: PracticeService,\n private awvWorkflowService: AwvWorkflowService,\n private workflowEvents: WorkflowEventsService) {}\n\n ngOnInit(): void {\n this.awvWorkflowService.updateSuccessful$.subscribe(() => this.isTabOpen = false);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.awvWorkflow){\n const schedulingActivities = this.awvWorkflow.completedActivities\n .filter( x => x.type === 'SchedulingActivity').map(x => x as SchedulingActivity);\n const scheduledOutcome = schedulingActivities.find( x => x.outcome.type === OutcomeType.ScheduledOutcome).outcome as ScheduledOutcome;\n this.scheduledOutcomeProperties = scheduledOutcome.properties;\n if (scheduledOutcome.properties.practiceId) {\n this.practiceService.getPracticeById(this.patient, scheduledOutcome.properties.practiceId).then(p => this.practiceName = p);\n }\n }\n }\n\n outcomeSaved(outcome: Outcome): void {\n const activity = {\n type: 'SchedulingActivity',\n outcome\n } as SchedulingActivity;\n\n if (this.scheduledOutcomeProperties) {\n this.workflowEvents.trackEdit(activity);\n } else {\n this.workflowEvents.trackSave(activity);\n }\n\n this.activitySaved.emit(activity);\n }\n\n deleteSchedulingActivity(): void {\n this.activityDeleted.emit(ActivityType.SchedulingActivity);\n }\n}\n\n\n","
\n
\n\n
\n \n \n\n
\n \n \n\n \n \n\n \n \n\n
Patient reminded to bring:
\n\n \n \n\n \n \n
\n\n \n
\n
\n\n
\n \n
\n\n
\n
{{commentbox.value.length}}/{{commentCharacterLimit}}
\n
Copy text
\n
\n \n
\n \n \n \n
\n
\n
\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport {Patient} from '@shared/models/patient';\nimport {ToastrMessageService} from '@shared/services/toastr-message/toastr-message.service';\nimport {\n Outcome,\n OutcomeType,\n PatientDidNotAnswerOutcome,\n PatientDidNotAnswerProperties,\n PatientWasRemindedOutcome,\n PatientWasRemindedProperties,\n PropertiesType\n} from '@api/care-orch/models';\nimport {CareOrchestrationConstants} from '@shared/models/module-constants';\nimport {\n WorkflowDateTimeUtil\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util';\n\nexport enum WasRemindedOutcome {\n PATIENT_WAS_REMINDED,\n PATIENT_DID_NOT_ANSWER\n}\n\nconst DefaultOutcome = WasRemindedOutcome.PATIENT_WAS_REMINDED;\n\n@Component({\n selector: 'coach-patient-step-reminder-form',\n templateUrl: './patient-step-reminder-form.component.html',\n styleUrls: ['./patient-step-reminder-form.component.scss']\n})\nexport class PatientStepReminderFormComponent implements OnChanges, OnInit{\n @Input() public patient: Patient;\n @Input() public outcome: Outcome;\n @Input() public attendedOutcome: Outcome;\n @Output() public outcomeSaved: EventEmitter = new EventEmitter();\n\n WasRemindedOutcome = WasRemindedOutcome;\n\n selectedOutcome = DefaultOutcome;\n healthRisk = false;\n needsTransportation = false;\n needsInterpreter = false;\n medications = false;\n labsDocumentation = false;\n comment = '';\n isReadOnly = false;\n allFieldsEmpty = true;\n requiredFieldsSatisfied = true;\n commentCharacterLimit = CareOrchestrationConstants.commentBoxCharacterLimit;\n\n constructor(private toastrMessageService: ToastrMessageService) {\n }\n\n ngOnChanges(_: SimpleChanges): void {\n if (this.patient) {\n this.clearFields();\n }\n if (this.outcome) {\n this.prePopWithReminderOutcome();\n }\n this.fieldChanged();\n }\n\n ngOnInit(){\n if (this.attendedOutcome) {\n this.isReadOnly = true;\n this.requiredFieldsSatisfied = false;\n }\n }\n\n copyComment(commentBox): void{\n commentBox.select();\n document.execCommand('copy');\n commentBox.setSelectionRange(0, 0);\n }\n\n fieldChanged(): void {\n if (this.selectedOutcome !== WasRemindedOutcome.PATIENT_WAS_REMINDED) {\n this.clearPatientWasRemindedSubFields();\n }\n this.checkAnyFieldHasValue();\n this.checkRequiredFieldsSatisfied();\n }\n\n private checkAnyFieldHasValue(): void {\n if (this.outcome) {\n this.allFieldsEmpty = (this.outcome.type === OutcomeType.PatientWasRemindedOutcome\n && this.selectedOutcome === WasRemindedOutcome.PATIENT_WAS_REMINDED) ||\n (this.outcome.type === OutcomeType.PatientDidNotAnswerOutcome\n && this.selectedOutcome === WasRemindedOutcome.PATIENT_DID_NOT_ANSWER);\n } else {\n this.allFieldsEmpty = this.selectedOutcome === DefaultOutcome;\n }\n\n if (!this.isReadOnly && (this.healthRisk || this.needsTransportation || this.needsInterpreter || this.medications ||\n this.labsDocumentation || this.comment)) {\n this.allFieldsEmpty = false;\n }\n }\n\n private checkRequiredFieldsSatisfied(): void {\n // if the reminder form is editable, the save button should be active\n this.requiredFieldsSatisfied = !this.isReadOnly;\n }\n\n clearPatientWasRemindedSubFields(): void {\n this.healthRisk = false;\n this.needsTransportation = false;\n this.needsInterpreter = false;\n this.medications = false;\n this.labsDocumentation = false;\n }\n\n clearFields() {\n if (this.outcome) {\n this.prePopWithReminderOutcome();\n } else {\n this.selectedOutcome = DefaultOutcome;\n this.clearPatientWasRemindedSubFields();\n }\n this.comment = '';\n this.fieldChanged();\n }\n\n save() {\n let outcome;\n\n switch (this.selectedOutcome) {\n case WasRemindedOutcome.PATIENT_WAS_REMINDED:\n outcome = this.buildPatientWasRemindedOutcome();\n break;\n case WasRemindedOutcome.PATIENT_DID_NOT_ANSWER:\n outcome = this.buildPatientDidNotAnswerOutcome();\n break;\n default:\n this.toastrMessageService.error(new Error('The selected outcome for the reminder activity is not recognized!'));\n return;\n }\n\n if (outcome != null) {\n this.outcomeSaved.emit(outcome);\n }\n }\n\n private buildPatientWasRemindedOutcome(): PatientWasRemindedOutcome {\n return {\n properties: {\n remindedDateTime: WorkflowDateTimeUtil.todayDateOnlyString(),\n healthRiskAssessmentStarted: this.healthRisk,\n needsTransportation: this.needsTransportation,\n needsInterpreter: this.needsInterpreter,\n medications: this.medications,\n labsDocumentation: this.labsDocumentation,\n comment: this.comment ? this.comment : null,\n type: PropertiesType.PatientWasRemindedProperties\n } as PatientWasRemindedProperties,\n type: OutcomeType.PatientWasRemindedOutcome\n };\n }\n\n private buildPatientDidNotAnswerOutcome(): PatientDidNotAnswerOutcome {\n return {\n properties: {\n comment: this.comment ? this.comment : null,\n type: PropertiesType.PatientDidNotAnswerProperties\n } as PatientDidNotAnswerProperties,\n type: OutcomeType.PatientDidNotAnswerOutcome\n };\n }\n\n private prePopWithReminderOutcome(): void {\n switch (this.outcome.type) {\n case OutcomeType.PatientWasRemindedOutcome:\n this.prePopPatWasRemindedOutcome(this.outcome as PatientWasRemindedOutcome);\n break;\n case OutcomeType.PatientDidNotAnswerOutcome:\n this.prePopPatDidNotAnswerOutcome();\n break;\n default:\n this.toastrMessageService.error(new Error('The incoming outcome for the reminder activity is not recognized!'));\n }\n }\n\n private prePopPatWasRemindedOutcome(outcome: PatientWasRemindedOutcome): void {\n this.selectedOutcome = WasRemindedOutcome.PATIENT_WAS_REMINDED;\n this.healthRisk = outcome.properties.healthRiskAssessmentStarted;\n this.needsTransportation = outcome.properties.needsTransportation;\n this.needsInterpreter = outcome.properties.needsInterpreter;\n this.medications = outcome.properties.medications;\n this.labsDocumentation = outcome.properties.labsDocumentation;\n this.isReadOnly = true;\n }\n\n private prePopPatDidNotAnswerOutcome(): void {\n this.selectedOutcome = WasRemindedOutcome.PATIENT_DID_NOT_ANSWER;\n }\n\n stringifyForm(): string {\n let value = '';\n\n switch (this.selectedOutcome) {\n case WasRemindedOutcome.PATIENT_WAS_REMINDED:\n if (this.outcome) {\n value = 'Patient reminded of AWV appointment on ' +\n WorkflowDateTimeUtil.dateTimeStringToMonthDateFormat((this.outcome as PatientWasRemindedOutcome)\n .properties.remindedDateTime);\n } else {\n value = 'Patient reminded of AWV appointment on ' + WorkflowDateTimeUtil.todayToMonthDateFormat();\n }\n\n if (this.healthRisk) {\n value += '. Health Risk Assessment Started';\n }\n\n if (this.needsTransportation) {\n value += '. Patient needs transportation';\n }\n\n if (this.needsInterpreter) {\n value += '. Patient needs interpreter';\n }\n\n if (this.medications || this.labsDocumentation) {\n value += '. Patient reminded to bring';\n\n if (this.medications) {\n value += ' medications';\n\n if (this.labsDocumentation) {\n value += ' and';\n }\n }\n\n if (this.labsDocumentation) {\n value += ' labs/documentation';\n }\n }\n break;\n case WasRemindedOutcome.PATIENT_DID_NOT_ANSWER:\n if (this.outcome) {\n value = 'Patient did not answer AWV reminder call on ' +\n WorkflowDateTimeUtil.dateTimeStringToMonthDateFormat((this.outcome as PatientWasRemindedOutcome)\n .properties.remindedDateTime);\n } else {\n value = 'Patient did not answer AWV reminder call on ' + WorkflowDateTimeUtil.todayToMonthDateFormat();\n }\n }\n\n if (this.comment) {\n value += '. ' + this.comment;\n }\n\n return value;\n }\n}\n\n\n","
\n
\n \n
\n
\n
\n
\n
Appointment Reminder
\n
Due: {{ dueDateTime | date:'MM/dd/yyyy' }}
\n \n
Reminded on {{ remindedDateTime | date:'MM/dd/yyyy' }}
\n
No answer
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport {ReminderActivity} from '@api/care-orch/models/reminder-activity';\nimport {AwvWorkflow} from '@api/care-orch/models/awv-workflow';\nimport {Outcome} from '@api/care-orch/models/outcome';\nimport {OutcomeType} from '@api/care-orch/models/outcome-type';\nimport {Activity} from '@api/care-orch/models/activity';\nimport {PatientWasRemindedOutcome} from '@api/care-orch/models/patient-was-reminded-outcome';\nimport {AttendedActivity} from '@api/care-orch/models/attended-activity';\nimport {PatientAttendedOutcome} from '@api/care-orch/models/patient-attended-outcome';\nimport {\n WorkflowDateTimeUtil\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util';\nimport { OnChanges } from '@angular/core';\nimport { AwvWorkflowService } from '@shared/services/awv-workflow/awv-workflow.service';\nimport { WorkflowEventsService } from '@shared/services/mixpanel/events/workflow-events.service';\n\n\n@Component({\n selector: 'coach-patient-step-reminder',\n templateUrl: './patient-step-reminder.component.html',\n styleUrls: ['./patient-step-reminder.component.scss']\n})\nexport class PatientStepReminderComponent implements OnInit, OnChanges{\n @Input() public awvWorkflow: AwvWorkflow;\n @Output() public activitySaved: EventEmitter = new EventEmitter();\n\n public attendedOutcome: Outcome;\n public isTabOpen: boolean;\n public reminderOutcome: Outcome;\n public isActivityComplete = false;\n public dueDateTime = '';\n public remindedDateTime = '';\n public outcomeTypes = OutcomeType;\n\n constructor(private awvWorkflowService: AwvWorkflowService, private workflowEvents: WorkflowEventsService) {\n }\n\n ngOnInit(): void {\n this.awvWorkflowService.updateSuccessful$.subscribe(() => this.isTabOpen = false);\n }\n\n ngOnChanges(_: SimpleChanges): void {\n if (this.awvWorkflow){\n this.reminderOutcome = null;\n this.isActivityComplete = false;\n this.attendedOutcome = null;\n this.remindedDateTime = '';\n this.dueDateTime = WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.awvWorkflow.dueDateTime);\n\n const completeReminderActivities = this.awvWorkflow.completedActivities\n .filter( x => x.type === 'ReminderActivity').map(x => x as ReminderActivity);\n const inProgressReminderActivities = this.awvWorkflow.inProgressActivities\n .filter( x => x.type === 'ReminderActivity').map(x => x as ReminderActivity);\n const completeAttendedActivities = this.awvWorkflow.completedActivities\n .filter( x => x.type === 'AttendedActivity').map(x => x as AttendedActivity);\n if (completeReminderActivities.length === 1) {\n this.reminderOutcome = completeReminderActivities.pop().outcome;\n\n if (this.reminderOutcome.type === OutcomeType.PatientWasRemindedOutcome) {\n this.isActivityComplete = true;\n this.remindedDateTime = (this.reminderOutcome as PatientWasRemindedOutcome).properties.remindedDateTime;\n }\n }\n if (completeAttendedActivities.length > 0){\n this.attendedOutcome = completeAttendedActivities.find(x => x.outcome.type === OutcomeType.PatientAttendedOutcome)\n .outcome as PatientAttendedOutcome;\n }\n if (inProgressReminderActivities.length === 1) {\n this.reminderOutcome = inProgressReminderActivities.pop().outcome;\n }\n }\n }\n\n outcomeSaved(outcome: Outcome): void {\n const activity = {\n type: 'ReminderActivity',\n outcome\n } as ReminderActivity;\n\n if (this.reminderOutcome) {\n this.workflowEvents.trackEdit(activity);\n } else {\n this.workflowEvents.trackSave(activity);\n }\n\n this.activitySaved.emit(activity);\n }\n}\n\n\n","
\n
\n
\n \n \n
\n \n \n
\n\n
\n \n
\n
\n \n
\n \n \n
\n
\n \n
\n
\n {{commentbox.value.length}}/{{commentCharacterlimit}}\n
Copy text
\n
\n
\n \n
\n \n \n \n \n \n
\n
\n
\n
\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {Patient} from '@shared/models/patient';\nimport {OutcomeType} from '@api/care-orch/models/outcome-type';\nimport {CareOrchestrationConstants} from '@shared/models/module-constants';\nimport {PracticeListResult} from '@api/track/models/practice-list-result';\nimport {ToastrMessageService} from '@shared/services/toastr-message/toastr-message.service';\nimport {PatientAttendedOutcome} from '@api/care-orch/models/patient-attended-outcome';\nimport {PatientAttendedProperties} from '@api/care-orch/models/patient-attended-properties';\nimport {PropertiesType} from '@api/care-orch/models/properties-type';\nimport {PatientDidNotAttendOutcome} from '@api/care-orch/models/patient-did-not-attend-outcome';\nimport {PatientDidNotAttendProperties} from '@api/care-orch/models/patient-did-not-attend-properties';\nimport {Outcome} from '@api/care-orch/models/outcome';\nimport {ActivityType} from '@api/care-orch/models/activity-type';\nimport {\n WorkflowDateTimeUtil\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util';\nimport { ScheduledOutcome } from '@api/care-orch/models';\nimport { PracticeService } from '@shared/services/hierarchy/practice.service';\nimport { OnChanges } from '@angular/core';\nimport { NextAwvDateValidationService } from '@shared/services/form-validation/awv/next-awv-date-validation.service';\n\nexport class Comment {\n createdDateTime: string;\n createdUserDisplayName: string;\n commentText: string;\n constructor(createdDateTime, createdUserDisplayName, commentText) {\n this.createdDateTime = createdDateTime;\n this.createdUserDisplayName = createdUserDisplayName;\n this.commentText = commentText;\n }\n}\n\nexport enum AttendOutcome{\n PATIENT_ATTENDED_AWV,\n PATIENT_DID_NOT_ATTEND_AWV\n}\n\nconst DefaultOutcome = AttendOutcome.PATIENT_ATTENDED_AWV;\n\n@Component({\n selector: 'coach-patient-step-completed-form',\n templateUrl: './patient-step-completed-form.component.html',\n styleUrls: ['./patient-step-completed-form.component.scss']\n})\nexport class PatientStepCompletedFormComponent implements OnChanges {\n @Input() public patient: Patient;\n @Input() public editModeActive = false;\n @Input() public outcome: Outcome;\n @Input() public scheduledOutcome: ScheduledOutcome;\n @Output() outcomeSaved: EventEmitter = new EventEmitter();\n @Output() deleteActivity: EventEmitter = new EventEmitter();\n\n today: string = WorkflowDateTimeUtil.todayDateOnlyString();\n minNextAwvDate: string = WorkflowDateTimeUtil.minNextAwvDate();\n maxNextAwvDate: string = WorkflowDateTimeUtil.maxNextAwvDate();\n comment = '';\n nextAwvDate = '';\n practices: PracticeListResult[];\n allFieldsEmpty = true;\n requiredFieldsSatisfied = true;\n commentCharacterlimit = CareOrchestrationConstants.commentBoxCharacterLimit;\n @ViewChild('extprovchkbx') checkbox: ElementRef;\n nextAwvDateChecked = false;\n AttendOutcome = AttendOutcome;\n isReadOnly = false;\n attendedAwv = false;\n selectedOutcome = DefaultOutcome;\n showRemoveDialog = false;\n scheduledDate = '';\n scheduledPracticeId = '';\n attendedOutcome: PatientAttendedOutcome;\n\n constructor(private practiceService: PracticeService, private toastrMessageService: ToastrMessageService,\n private nextAwvDateValidationService: NextAwvDateValidationService) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.patient) {\n this.clearFields();\n this.loadPracticesDropdown();\n }\n if (this.scheduledOutcome) {\n this.scheduledDate = this.scheduledOutcome.properties.date;\n }\n if (this.scheduledDate) {\n this.minNextAwvDate = WorkflowDateTimeUtil.minNextAwvDate(this.scheduledDate);\n this.maxNextAwvDate = WorkflowDateTimeUtil.maxNextAwvDate(this.scheduledDate);\n\n if (this.outcome){\n this.prePopWithCompletedOutcome();\n this.requiredFieldsSatisfied = false; // Flag set to false which disables \"save\" button on opening edit view\n } else {\n // logic for enabling/disabling completed view when scheduled date changed accordingly\n if (this.isScheduledDateGreaterThanToday()) {\n this.isReadOnly = true;\n this.requiredFieldsSatisfied = false;\n } else{\n this.isReadOnly = false;\n this.requiredFieldsSatisfied = true;\n }\n\n this.allFieldsEmpty = true;\n }\n }\n }\n\n loadPracticesDropdown(): void {\n this.practiceService.getPractices(this.patient).then(practices => {\n this.practices = practices;\n\n if (this.scheduledOutcome && this.scheduledOutcome.properties.practiceId) {\n this.scheduledPracticeId = this.scheduledOutcome.properties.practiceId;\n } else {\n this.scheduledPracticeId = '';\n }\n });\n }\n\n copyComment(commentBox): void{\n commentBox.select();\n document.execCommand('copy');\n commentBox.setSelectionRange(0, 0);\n }\n\n fieldChanged(shouldClearFields): void {\n // clearing of all fields only if we switch between radio buttons\n if (shouldClearFields){\n this.clearFields();\n }\n this.checkAnyFieldHasValue(shouldClearFields);\n this.checkRequiredFieldsSatisfied(shouldClearFields);\n }\n\n\n private prePopWithCompletedOutcome(): void {\n switch (this.outcome.type) {\n case OutcomeType.PatientAttendedOutcome:\n this.attendedOutcome = this.outcome as PatientAttendedOutcome;\n this.prePopPatAttendedOutcome(this.attendedOutcome);\n this.attendedAwv = true;\n break;\n case OutcomeType.PatientDidNotAttendOutcome:\n this.prePopPatDidNotAttendOutcome();\n break;\n default:\n this.toastrMessageService.error(new Error('The incoming outcome for the reminder activity is not recognized!'));\n }\n }\n\n private prePopPatAttendedOutcome(outcome: PatientAttendedOutcome): void{\n this.selectedOutcome = AttendOutcome.PATIENT_ATTENDED_AWV;\n this.nextAwvDate = outcome.properties.nextAwvDate ? WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(outcome.properties.nextAwvDate) : '';\n if (this.nextAwvDate) {\n this.nextAwvDateChecked = true;\n } else {\n this.nextAwvDateChecked = false;\n }\n }\n\n private prePopPatDidNotAttendOutcome(): void{\n this.selectedOutcome = AttendOutcome.PATIENT_DID_NOT_ATTEND_AWV;\n }\n private checkAnyFieldHasValue(shouldClearFields: boolean): void {\n if (shouldClearFields){\n this.allFieldsEmpty = false;\n return;\n }\n else {\n if (this.comment && this.nextAwvDate !== this.attendedOutcome.properties.nextAwvDate ?\n WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.attendedOutcome.properties.nextAwvDate) : '') {\n this.allFieldsEmpty = true;\n return;\n }\n }\n\n this.allFieldsEmpty = false;\n }\n\n isNextAwvDateChangedAndHasValidValue(): boolean{\n return this.nextAwvDateValidationService.isNextAwvDateChangedAndHasValidValue(this.nextAwvDateChecked, this.nextAwvDate,\n this.minNextAwvDate, this.maxNextAwvDate, this.outcome);\n }\n\n private checkRequiredFieldsSatisfied(shouldClearFields: boolean): void {\n if (shouldClearFields){\n this.requiredFieldsSatisfied = true;\n return;\n }\n if (this.nextAwvDateValidationService.isNextAwvDateChangedAndHasValidValue(this.nextAwvDateChecked, this.nextAwvDate,\n this.minNextAwvDate, this.maxNextAwvDate, this.outcome)) {\n this.requiredFieldsSatisfied = true;\n return;\n }\n this.requiredFieldsSatisfied = false;\n return;\n }\n\n clearFields(): void {\n if (!this.editModeActive) {\n this.comment = '';\n this.nextAwvDate = '';\n this.nextAwvDateChecked = false;\n }\n else{\n this.resetFields();\n }\n }\n\n private resetFields(): void{\n this.allFieldsEmpty = true;\n if (null !== this.outcome) {\n this.requiredFieldsSatisfied = false;\n this.prePopPatAttendedOutcome(this.outcome as PatientAttendedOutcome);\n }\n else{\n this.requiredFieldsSatisfied = true;\n this.nextAwvDate = '';\n this.nextAwvDateChecked = false;\n this.selectedOutcome = AttendOutcome.PATIENT_ATTENDED_AWV;\n }\n this.comment = '';\n }\n\n isScheduledDateGreaterThanToday(): boolean{\n return WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.scheduledDate) > this.today;\n }\n\n private buildPatientAttendedAWVOutcome(): PatientAttendedOutcome{\n return{\n type: OutcomeType.PatientAttendedOutcome,\n properties: {\n type: PropertiesType.PatientAttendedProperties,\n nextAwvDate: this.nextAwvDate ? WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.nextAwvDate) : null,\n completedDate: WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(this.scheduledDate),\n comment: this.comment ? this.comment : null\n }as PatientAttendedProperties\n };\n\n }\n private buildPatientDidNotAttendOutcome(): PatientDidNotAttendOutcome{\n return{\n type: OutcomeType.PatientDidNotAttendOutcome,\n properties: {\n type: PropertiesType.PatientDidNotAttendProperties,\n comment: this.comment ? this.comment : null\n }as PatientDidNotAttendProperties,\n };\n }\n save(): void {\n let outcome;\n switch (this.selectedOutcome){\n case AttendOutcome.PATIENT_ATTENDED_AWV:\n outcome = this.buildPatientAttendedAWVOutcome();\n break;\n case AttendOutcome.PATIENT_DID_NOT_ATTEND_AWV:\n outcome = this.buildPatientDidNotAttendOutcome();\n break;\n default:\n this.toastrMessageService.error(new Error('The selected outcome for the completed/attended activity is not recognized!'));\n return;\n }\n if (outcome != null) {\n this.outcomeSaved.emit(outcome);\n this.clearFields();\n }\n }\n\n onDialogButtonClick(buttonValue: string): void {\n switch (buttonValue){\n case 'cancel':\n this.showRemoveDialog = !this.showRemoveDialog;\n break;\n case 'delete':\n this.showRemoveDialog = false;\n this.deleteActivity.emit(ActivityType.AttendedActivity);\n }\n }\n\n showDialog(): void {\n this.showRemoveDialog = true;\n }\n\n stringifyForm(): string {\n let value = '';\n\n if (!this.scheduledDate) {\n return '';\n }\n\n switch (this.selectedOutcome) {\n case AttendOutcome.PATIENT_ATTENDED_AWV:\n value = 'AWV completed on ' + WorkflowDateTimeUtil.dateTimeStringToMonthDateFormat(this.scheduledDate);\n break;\n case AttendOutcome.PATIENT_DID_NOT_ATTEND_AWV:\n value = 'AWV not attended on ' + WorkflowDateTimeUtil.dateTimeStringToMonthDateFormat(this.scheduledDate);\n break;\n }\n\n if (this.scheduledOutcome) {\n if (this.scheduledOutcome.properties.providerName) {\n value += ' with ' + this.scheduledOutcome.properties.providerName;\n }\n\n if (this.scheduledPracticeId) {\n value += ' at ' + this.practices.find(p => p.tier4Id === this.scheduledPracticeId).tier4Name;\n }\n }\n\n if (this.nextAwvDate) {\n value += '. Next AWV date scheduled for ' + WorkflowDateTimeUtil.dateTimeStringToMonthDateFormat(this.nextAwvDate);\n }\n\n if (this.comment) {\n value += '. ' + this.comment;\n }\n\n return value;\n }\n\n toggleNextAwvDateInput(): void{\n this.nextAwvDateChecked = !this.nextAwvDateChecked;\n if (this.nextAwvDateChecked === false) {\n this.nextAwvDate = '';\n } else {\n if (this.outcome && (this.outcome as PatientAttendedOutcome).properties.nextAwvDate) {\n this.nextAwvDate =\n WorkflowDateTimeUtil.dateTimeStringToDateOnlyString((this.outcome as PatientAttendedOutcome).properties.nextAwvDate);\n }\n }\n this.fieldChanged(false);\n }\n}\n\n\n","
\n
\n \n
\n
\n
\n
\n
AWV Completed
\n
\n \n
Attended on {{ scheduledDate | date:'MM/dd/yyyy' }}
\n
Did Not Attend
\n
\n
today\" class=\"u-color--default u-font-weight--light\">Available to complete {{ scheduledDate | date:'MM/dd/yyyy' }}
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n","import { Component, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output, SimpleChanges } from '@angular/core';\nimport {Patient} from '@shared/models/patient';\nimport {PatientService} from '@shared/services/patient/patient.service';\nimport {AuthService} from '@shared/services/auth-service/auth.service';\nimport {Outcome} from '@api/care-orch/models/outcome';\nimport {OutcomeType} from '@api/care-orch/models/outcome-type';\nimport {AttendedActivity} from '@api/care-orch/models/attended-activity';\nimport {AwvWorkflow} from '@api/care-orch/models/awv-workflow';\nimport {SchedulingActivity} from '@api/care-orch/models/scheduling-activity';\nimport {ScheduledOutcome} from '@api/care-orch/models/scheduled-outcome';\nimport {ActivityType} from '@api/care-orch/models/activity-type';\nimport {\n WorkflowDateTimeUtil\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util';\nimport { AwvWorkflowService } from '@shared/services/awv-workflow/awv-workflow.service';\nimport { OnChanges } from '@angular/core';\nimport { WorkflowEventsService } from '@shared/services/mixpanel/events/workflow-events.service';\n\n@Component({\n selector: 'coach-patient-step-completed',\n templateUrl: './patient-step-completed.component.html',\n styleUrls: ['./patient-step-completed.component.scss']\n})\nexport class PatientStepCompletedComponent implements OnInit, OnChanges{\n @Input() public mobileScreenSize: boolean;\n @Input() public awvWorkflow: AwvWorkflow;\n @Input() public patient: Patient;\n @Input() sidebarMode?: boolean;\n @Output() public activitySaved: EventEmitter = new EventEmitter();\n @Output() public activityDeleted: EventEmitter = new EventEmitter();\n\n public isActivityComplete = false;\n isTabOpen = false;\n scheduledOutcome: ScheduledOutcome;\n scheduledDate = '';\n public outcomeTypes = OutcomeType;\n public completedOutcome: Outcome;\n today: string = WorkflowDateTimeUtil.todayDateOnlyString();\n\n constructor(private patientService: PatientService,\n private authService: AuthService,\n @Inject(LOCALE_ID) private userLocale: string,\n private awvWorkflowService: AwvWorkflowService,\n private workflowEvents: WorkflowEventsService) {\n}\n\n ngOnInit(): void {\n this.awvWorkflowService.updateSuccessful$.subscribe(() => this.isTabOpen = false);\n }\n ngOnChanges(_: SimpleChanges): void {\n if (this.awvWorkflow) {\n this.completedOutcome = null;\n this.isActivityComplete = false;\n this.scheduledOutcome = null;\n this.scheduledDate = '';\n const completeActivities = this.awvWorkflow.completedActivities\n .filter( x => x.type === 'AttendedActivity').map(x => x as AttendedActivity);\n if(completeActivities.length > 0) {\n this.completedOutcome = completeActivities.pop().outcome;\n if(this.completedOutcome) {\n this.isActivityComplete = true;\n }\n }\n const schedulingActivities = this.awvWorkflow.completedActivities\n .filter( x => x.type === 'SchedulingActivity').map(x => x as SchedulingActivity);\n if (schedulingActivities.length > 0){\n this.scheduledOutcome = schedulingActivities.find(x => x.outcome.type === OutcomeType.ScheduledOutcome).outcome as ScheduledOutcome;\n if (this.scheduledOutcome){\n const scheduledOutcomeProperties = this.scheduledOutcome.properties;\n this.scheduledDate = WorkflowDateTimeUtil.dateTimeStringToDateOnlyString(scheduledOutcomeProperties.date);\n }\n }\n }\n }\n\n outcomeSaved(outcome: Outcome): void {\n const activity = {\n type: 'AttendedActivity',\n outcome\n } as AttendedActivity;\n\n if (this.completedOutcome) {\n this.workflowEvents.trackEdit(activity);\n } else {\n this.workflowEvents.trackSave(activity);\n }\n\n this.activitySaved.emit(activity);\n }\n deleteActivity(activityType: ActivityType): void {\n this.activityDeleted.emit(activityType);\n }\n}\n\n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { AwvWorkflow } from '@api/care-orch/models/awv-workflow';\nimport { CareOrchestrationConstants } from '@shared/models/module-constants';\nimport { AwvService } from '@api/care-orch/services/awv.service';\nimport { Observable } from 'rxjs';\nimport { Activity } from '@api/care-orch/models/activity';\nimport { ActivityType } from '@api/care-orch/models/activity-type';\n\n\n@Component({\n selector: 'coach-patient-awv-reminder',\n templateUrl: './patient-awv-reminder.component.html',\n styleUrls: ['./patient-awv-reminder.component.scss']\n})\nexport class PatientAwvReminderComponent {\n @Input() public mobileScreenSize: boolean;\n @Input() public patient: Patient;\n @Input() sidebarMode?: boolean;\n @Input() public awvWorkflow: AwvWorkflow;\n @Output() public awvWorkflowUpdated: EventEmitter> = new EventEmitter();\n @Output() public activityDeleted: EventEmitter = new EventEmitter();\n\n constructor(private awvService: AwvService) {}\n\n activitySaved(activity: Activity): void {\n const obsUpdatedWorkflow = this.awvService.updateWorkflowActivity({\n programId: CareOrchestrationConstants.AwvProgramId,\n chPatId: this.patient.trackAwvPatient?.chPatID || Number(this.patient.trackPatient.chPatId),\n body: activity\n });\n\n this.awvWorkflowUpdated.emit(obsUpdatedWorkflow);\n }\n\n activityDeletedEvent(activityType: ActivityType): void {\n this.activityDeleted.emit(activityType);\n }\n}\n\n\n","
\n
\n \n \n \n
\n
\n","
\n
\n \n
\n
\n
\n
\n
Remove from list
\n
{{removedReasonToString(removedOutcome.properties.reason)}}
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n\n","import {Component, EventEmitter, Input, OnInit, Output, SimpleChanges} from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { AwvWorkflow } from '@api/care-orch/models/awv-workflow';\nimport { PatientAwvUtilities } from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/patient-awv-utilities.component';\nimport { SchedulingActivity } from '@api/care-orch/models/scheduling-activity';\nimport { RemovedOutcome } from '@api/care-orch/models/removed-outcome';\nimport {ActivityType, Outcome, OutcomeType} from '@api/care-orch/models';\nimport {OnChanges} from '@angular/core';\nimport {CareOrchestrationConstants} from '@shared/models/module-constants';\nimport {AwvService} from '@api/care-orch/services/awv.service';\nimport {Observable} from 'rxjs';\nimport { AwvWorkflowService } from '@shared/services/awv-workflow/awv-workflow.service';\nimport { Program } from '@shared/services/mixpanel/events/workflow-events';\nimport { WorkflowEventsService } from '@shared/services/mixpanel/events/workflow-events.service';\n\n@Component({\n selector: 'coach-patient-awv-removed',\n templateUrl: './patient-awv-removed.component.html',\n styleUrls: ['./patient-awv-removed.component.scss']\n})\nexport class PatientAwvRemovedComponent implements OnInit, OnChanges {\n @Input() public patient: Patient;\n @Input() public awvWorkflow: AwvWorkflow;\n @Input() public mobileScreenSize: boolean;\n @Input() sidebarMode?: boolean;\n @Output() awvWorkflowUpdated: EventEmitter> = new EventEmitter();\n @Output() public activityDeleted: EventEmitter = new EventEmitter();\n\n isTabOpen = false;\n removedOutcome = { } as RemovedOutcome;\n\n constructor(private awvService: AwvService,\n private awvWorkflowService: AwvWorkflowService,\n private workflowEvents: WorkflowEventsService) {}\n\n ngOnInit(): void {\n this.awvWorkflowService.updateSuccessful$.subscribe(() => this.isTabOpen = false);\n }\n\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.awvWorkflow){\n const schedulingActivities = this.awvWorkflow.completedActivities\n .filter( x => x.type === 'SchedulingActivity').map(x => x as SchedulingActivity);\n this.removedOutcome = schedulingActivities.find( x => x.outcome.type === OutcomeType.RemovedOutcome).outcome as RemovedOutcome;\n }\n }\n public removedReasonToString( enumValue): string {\n return PatientAwvUtilities.removedReasonToString(enumValue);\n }\n\n outcomeSaved(outcome: Outcome): void {\n const activityToSave = { type: ActivityType.SchedulingActivity, outcome } as SchedulingActivity;\n if (this.removedOutcome) {\n this.workflowEvents.trackEdit(activityToSave);\n } else {\n this.workflowEvents.trackSave(activityToSave);\n }\n\n const obsUpdatedWorkflow = this.awvService.updateWorkflowActivity({\n programId: CareOrchestrationConstants.AwvProgramId,\n chPatId: this.patient.trackAwvPatient?.chPatID || Number(this.patient.trackPatient.chPatId),\n body: activityToSave\n });\n\n this.awvWorkflowUpdated.emit(obsUpdatedWorkflow);\n }\n\n deleteSchedulingActivity(): void {\n this.activityDeleted.emit(ActivityType.SchedulingActivity);\n }\n}\n","
\n
AWV Workflow
\n
{{convertAwvStatusToCamelCase(awvWorkflowStatus)}}\n
\n
\n
\n
Patient will be re-evaluated at a later date
\n
\n","import {Component, Input} from '@angular/core';\nimport {Patient} from '@shared/models/patient';\nimport {AwvWorkflowStatuses} from '../../../../../api/care-orch/models/awv-workflow-statuses';\n\n@Component({\n selector: 'coach-patient-awv-banner',\n templateUrl: './patient-awv-banner.component.html',\n styleUrls: ['./patient-awv-banner.component.scss']\n})\nexport class PatientAwvBannerComponent {\n @Input() public mobileScreenSize: boolean;\n @Input() public patient: Patient;\n @Input() sidebarMode?: boolean;\n @Input() public isTabOpen: boolean;\n @Input() public awvWorkflowStatus: AwvWorkflowStatuses;\n @Input() public awvWorkflowStatusToString: string;\n @Input() public minimalView: boolean = false;\n @Input() public isLoading: boolean;\n\n constructor() {}\n\n public convertAwvStatusToCamelCase(awvWorkflowStatus: AwvWorkflowStatuses): string {\n switch (awvWorkflowStatus) {\n case AwvWorkflowStatuses.ReadyForOutreach: {\n return 'Ready for outreach';\n }\n case AwvWorkflowStatuses.OutreachAttempted: {\n return 'Outreach attempted';\n }\n case AwvWorkflowStatuses.Scheduled: {\n return 'Scheduled';\n }\n case AwvWorkflowStatuses.Completed: {\n return 'Completed';\n }\n case AwvWorkflowStatuses.Declined: {\n return 'Patient declined';\n }\n case AwvWorkflowStatuses.Ineligible: {\n return 'Ineligible';\n }\n case AwvWorkflowStatuses.DeferredToSignify: {\n return 'Deferred';\n }\n case AwvWorkflowStatuses.Other:\n default: {\n return 'Inactive';\n }\n }\n }\n}\n","\n
\n \n
\n
\n
Loading patient details
\n
\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'coach-patient-awv-loading',\n templateUrl: './patient-awv-loading.component.html',\n styleUrls: ['./patient-awv-loading.component.scss']\n})\nexport class PatientAwvLoadingComponent {\n @Input() public isLoading: boolean;\n @Input() public isHistory = false;\n}\n","
\n
0 || isLoading\" class=\"u-display--flex u-flex-direction--column history-wrapper span--12\" id='testHistoryWrapper'>\n
\n HISTORY\n \n \n
\n
\n
\n
\n {{ change.displayName | initialsFromName }}\n
\n
P
\n
\n
\n
\n
\n
\n {{change.displayName}}\n {{coachUser}}\n
\n
\n {{change.recordedChange.submissionInfo.submittedDate | date: 'MM/dd/yy h:mm a'}}\n
\n
\n
\n
\n {{change.description}}\n
\n
\n
\n
\n {{change.comment}}\n
\n
\n
\n
\n
\n
\n
\n
\n","import {Component, Input, SimpleChanges} from '@angular/core';\nimport {AwvService} from '@api/care-orch/services/awv.service';\nimport {CareOrchestrationConstants} from '@shared/models/module-constants';\nimport {WorkflowHistoryChange} from '@api/care-orch/models/workflow-history-change';\nimport {ChangeTypes} from '@api/care-orch/models/change-types';\nimport {SchedulingActivity} from '@api/care-orch/models/scheduling-activity';\nimport {OutcomeType} from '@api/care-orch/models/outcome-type';\nimport {ScheduledOutcome} from '@api/care-orch/models/scheduled-outcome';\nimport {AwvWorkflow} from '@api/care-orch/models/awv-workflow';\nimport {RemovedOutcome} from '@api/care-orch/models/removed-outcome';\nimport {CompletedOutcome} from '@api/care-orch/models/completed-outcome';\nimport {\n PatientAwvUtilities\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/patient-awv-utilities.component';\nimport {AuthService} from '@shared/services/auth-service/auth.service';\nimport {ReminderActivity} from '@api/care-orch/models/reminder-activity';\nimport {PatientWasRemindedOutcome} from '@api/care-orch/models/patient-was-reminded-outcome';\nimport {PatientDidNotAnswerOutcome} from '@api/care-orch/models/patient-did-not-answer-outcome';\nimport {CallBackOutcome} from '@api/care-orch/models/call-back-outcome';\nimport {AttendedActivity} from '@api/care-orch/models/attended-activity';\nimport {PatientDidNotAttendOutcome} from '@api/care-orch/models/patient-did-not-attend-outcome';\nimport {PatientAttendedOutcome} from '@api/care-orch/models/patient-attended-outcome';\nimport {SubmissionInfo} from '@api/care-orch/models/submission-info';\nimport {HistorySourceType} from '@api/care-orch/models/history-source-type';\nimport {\n WorkflowDateTimeUtil\n} from '@shared/modules/patient-facesheet/tabs/patient-awv-utilities/workflow-date-time-util';\nimport {UserDetailService} from '@api/user-detail/services/user-detail.service';\nimport {UsersDetailsResponse} from '@api/user-detail/models/users-details-response';\nimport _ from 'lodash';\nimport {ToastrService} from 'ngx-toastr';\nimport {AwvWorkflowHistoryPaged} from '@api/care-orch/models/awv-workflow-history-paged';\n\nexport interface History {\n recordedChange: WorkflowHistoryChange;\n displayName: string;\n changeType: ChangeTypes;\n description: string;\n comment: string;\n}\n\nconst userSources = [HistorySourceType.PepSelfReported, HistorySourceType.CareOrchSelfReported]\n\n@Component({\n selector: 'coach-patient-awv-history',\n templateUrl: './patient-awv-history.component.html',\n styleUrls: ['./patient-awv-history.component.scss']\n})\nexport class PatientAwvHistoryComponent {\n @Input() public patientId: string;\n @Input() public awvWorkflow: AwvWorkflow;\n\n history: History[] = [];\n loadingHistory: History[] = [];\n usersDetailsResponse: UsersDetailsResponse;\n workflowHistoryPagedResponse: AwvWorkflowHistoryPaged;\n userIds = Array();\n coachUser = CareOrchestrationConstants.coachUser;\n isLoading = false;\n constructor(private awvService: AwvService, private authService: AuthService, private userDetailService: UserDetailService, private toastr: ToastrService) {}\n\n async ngOnChanges(changes: SimpleChanges) {\n if (this.patientId) {\n await this.fetchHistory();\n } else {\n this.history = [];\n this.loadingHistory = [];\n }\n }\n\n private async fetchHistory() {\n let fetchedHistory = [];\n this.loadingHistory = [];\n this.history = [];\n let remainingPages = 1;\n let currentPage = 1;\n this.isLoading = true;\n\n while (remainingPages > 0) {\n const pagedHistory = await this.getNextHistoryPage(currentPage);\n remainingPages = pagedHistory.pageCount - currentPage;\n // for each pageHistory.results we want to extract the userId if we don't already know about the userID\n pagedHistory.results.forEach( (element) => {\n const submissionInfo = element.submissionInfo;\n const userId = submissionInfo.submittedByUserId;\n if (!_.isNil(userId) && !this.userIds.includes(userId)){\n this.userIds.push(userId);\n }\n });\n fetchedHistory = fetchedHistory.concat(pagedHistory.results\n .map(change => this.enrichChange(change)));\n currentPage++;\n }\n this.loadingHistory = fetchedHistory.reverse();\n // Make one batch call to the userDetails service with the list of ids\n if (!_.isEmpty(this.userIds)){\n await this.callUsersDetails();\n }\n else {\n this.history = this.loadingHistory;\n }\n this.isLoading = false;\n }\n\n private enrichChange(change: WorkflowHistoryChange): History {\n const recordedChange = change;\n const displayName = this.getDisplayName(change.submissionInfo);\n const changeType = change.type;\n let description = '';\n let comment: string;\n\n switch (change.type) {\n case ChangeTypes.Create:\n description = 'Created AWV Opportunity';\n break;\n\n case ChangeTypes.Update:\n const updatedActivity = change.activity;\n\n if (updatedActivity == null && change.legacyAwvNote != null) {\n description = 'Added Comment';\n comment = change.legacyAwvNote;\n } else {\n switch (updatedActivity.type) {\n case 'SchedulingActivity':\n const schedulingActivity = updatedActivity as SchedulingActivity;\n switch (schedulingActivity.outcome.type) {\n case OutcomeType.ScheduledOutcome:\n const scheduledOutcome = schedulingActivity.outcome as ScheduledOutcome;\n description = 'AWV scheduled for ' + WorkflowDateTimeUtil.dateTimeStringToUSDateOnlyString(scheduledOutcome.properties.date);\n comment = scheduledOutcome.properties.comment;\n break;\n case OutcomeType.CompletedOutcome:\n const completedOutcome = schedulingActivity.outcome as CompletedOutcome;\n description = 'AWV completed on ' + WorkflowDateTimeUtil.dateTimeStringToUSDateOnlyString(completedOutcome.properties.date);\n comment = completedOutcome.properties.comment;\n break;\n case OutcomeType.CallBackOutcome:\n const callbackOutcome = schedulingActivity.outcome as CallBackOutcome;\n description = 'Outreach attempted';\n comment = callbackOutcome.properties.comment;\n break;\n case OutcomeType.RemovedOutcome:\n const removedOutcome = schedulingActivity.outcome as RemovedOutcome;\n description = 'Removed from list - ' + PatientAwvUtilities.removedReasonToString(removedOutcome.properties.reason);\n comment = removedOutcome.properties.comment;\n break;\n case OutcomeType.DeferredToSignifyOutcome:\n description = 'Patient was added to the In-Home AWV list';\n break;\n }\n break;\n case 'ReminderActivity':\n const reminderActivity = updatedActivity as ReminderActivity;\n switch (reminderActivity.outcome.type) {\n case OutcomeType.PatientWasRemindedOutcome:\n const patientWasRemindedOutcome = reminderActivity.outcome as PatientWasRemindedOutcome;\n description = 'Patient reminded of appointment';\n comment = patientWasRemindedOutcome.properties.comment;\n break;\n case OutcomeType.PatientDidNotAnswerOutcome:\n const patientDidNotAnswerOutcome = reminderActivity.outcome as PatientDidNotAnswerOutcome;\n description = 'Patient did not answer';\n comment = patientDidNotAnswerOutcome.properties.comment;\n break;\n }\n break;\n case 'AttendedActivity':\n const attendedActivity = updatedActivity as AttendedActivity;\n switch (attendedActivity.outcome.type) {\n case OutcomeType.PatientAttendedOutcome:\n const attendedOutcome = attendedActivity.outcome as PatientAttendedOutcome;\n description = 'AWV completed on ' + WorkflowDateTimeUtil.dateTimeStringToUSDateOnlyString(attendedOutcome.properties.completedDate);\n comment = attendedOutcome.properties.comment;\n break;\n case OutcomeType.PatientDidNotAttendOutcome:\n const patientDidNotAttendOutcome = attendedActivity.outcome as PatientDidNotAttendOutcome;\n description = 'Patient did not attend AWV';\n comment = patientDidNotAttendOutcome.properties.comment;\n break;\n }\n break;\n }\n }\n break;\n\n case ChangeTypes.Rollback:\n description = 'Deleted AWV activity';\n break;\n\n case ChangeTypes.Edit:\n description = 'Updated AWV Details';\n const editedActivity = change.activity;\n switch (editedActivity.type) {\n case 'SchedulingActivity':\n const schedulingActivity = editedActivity as SchedulingActivity;\n switch (schedulingActivity.outcome.type) {\n case OutcomeType.ScheduledOutcome:\n const scheduledOutcome = schedulingActivity.outcome as ScheduledOutcome;\n comment = scheduledOutcome.properties.comment;\n break;\n case OutcomeType.CompletedOutcome:\n const completedOutcome = schedulingActivity.outcome as CompletedOutcome;\n comment = completedOutcome.properties.comment;\n break;\n case OutcomeType.CallBackOutcome:\n const callbackOutcome = schedulingActivity.outcome as CallBackOutcome;\n comment = callbackOutcome.properties.comment;\n break;\n case OutcomeType.RemovedOutcome:\n const removedOutcome = schedulingActivity.outcome as RemovedOutcome;\n comment = removedOutcome.properties.comment;\n break;\n }\n break;\n case 'ReminderActivity':\n const reminderActivity = editedActivity as ReminderActivity;\n switch (reminderActivity.outcome.type) {\n case OutcomeType.PatientWasRemindedOutcome:\n const patientWasRemindedOutcome = reminderActivity.outcome as PatientWasRemindedOutcome;\n comment = patientWasRemindedOutcome.properties.comment;\n break;\n case OutcomeType.PatientDidNotAnswerOutcome:\n const patientDidNotAnswerOutcome = reminderActivity.outcome as PatientDidNotAnswerOutcome;\n comment = patientDidNotAnswerOutcome.properties.comment;\n break;\n }\n break;\n case 'AttendedActivity':\n const attendedActivity = editedActivity as AttendedActivity;\n switch (attendedActivity.outcome.type) {\n case OutcomeType.PatientAttendedOutcome:\n const patientAttendedOutcome = attendedActivity.outcome as PatientAttendedOutcome;\n comment = patientAttendedOutcome.properties.comment;\n break;\n case OutcomeType.PatientDidNotAttendOutcome:\n const patientDidNotAttendOutcome = attendedActivity.outcome as PatientDidNotAttendOutcome;\n comment = patientDidNotAttendOutcome.properties.comment;\n break;\n }\n break;\n }\n break;\n }\n\n return {\n recordedChange,\n displayName,\n changeType,\n description,\n comment\n };\n }\n\n private async getNextHistoryPage(pageNumber: number) {\n const obsWorkflowHistoryPagedResponse = await this.awvService.getWorkflowHistoryPaged({\n programId: CareOrchestrationConstants.AwvProgramId,\n chPatId: parseInt(this.patientId),\n pageParameters: {\n pageNumber,\n pageSize: CareOrchestrationConstants.FetchAwvWorkflowHistoryPageSize\n }\n });\n try {\n this.workflowHistoryPagedResponse = await obsWorkflowHistoryPagedResponse.toPromise();\n } catch (e) {\n this.toastr.error(`${e.status}: ${e.message}`, CareOrchestrationConstants.workflowHistoryErrorMessageFrontend);\n this.isLoading = false;\n }\n return this.workflowHistoryPagedResponse;\n }\n\n private getDisplayName(submissionInfo: SubmissionInfo): string {\n switch (submissionInfo.submittedBySource) {\n case HistorySourceType.PepSystem:\n case HistorySourceType.CareOrchSystem:\n return 'System';\n case HistorySourceType.CareOrchAdmin:\n return 'Admin';\n case HistorySourceType.CmsClaimsData:\n return 'CMS Claims Data';\n case HistorySourceType.EhrClinicalData:\n return 'EHR Feed';\n case HistorySourceType.InHomeAwv:\n return 'In Home AWV';\n case HistorySourceType.PepSelfReported:\n return this.coachUser;\n case HistorySourceType.CareOrchSelfReported:\n default:\n return null;\n }\n }\n\n private async callUsersDetails(): Promise{\n const obsUsersDetailsResponse = await this.userDetailService.usersDetails({body: {userIds: this.userIds}});\n obsUsersDetailsResponse.subscribe(UsersDetailResponse => {\n this.usersDetailsResponse = UsersDetailResponse;\n this.mapUsersDetails();\n }, error => this.toastr.error(`${error.status}: ${error.message}`, CareOrchestrationConstants.userDetailsErrorMessageFrontend));\n }\n\n private mapUsersDetails(): void {\n // map usersDetails API Response object to each element in the history\n this.loadingHistory.forEach((element) => {\n const userId = element.recordedChange.submissionInfo.submittedByUserId;\n if (userId == null || !userSources.includes(element.recordedChange.submissionInfo.submittedBySource)) {\n return;\n }\n const userDetails = this.usersDetailsResponse.usersDetails[userId.toString()];\n if (userDetails !== undefined){\n const firstName = userDetails.firstName;\n const lastName = userDetails.lastName;\n const displayName = userDetails.displayName;\n const email = userDetails.email;\n if (firstName.length !== 0 && lastName.length !== 0) {\n element.displayName = firstName + ' ' + lastName;\n return;\n }\n if (displayName.length !== 0) {\n element.displayName = displayName;\n return;\n }\n if (email.length !== 0) {\n element.displayName = email;\n return;\n }\n else {\n element.displayName = 'Me';\n }\n }\n });\n this.history = this.loadingHistory;\n }\n}\n","
\n
\n \n
\n
\n
\n
\n
AWV Completed
\n
{{ completedOutcomeProperties.date | date: 'shortDate' }} {{completedOutcomeProperties.practiceId? ('at ' + practiceName) : ''}}
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { AwvWorkflow } from '@api/care-orch/models/awv-workflow';\nimport { SchedulingActivity } from '@api/care-orch/models/scheduling-activity';\nimport {ActivityType, CompletedOutcome, CompletedProperties, Outcome, OutcomeType} from '@api/care-orch/models';\nimport {OnChanges} from '@angular/core';\nimport {PracticeService} from '@shared/services/hierarchy/practice.service';\nimport {CareOrchestrationConstants} from '@shared/models/module-constants';\nimport {AwvService} from '@api/care-orch/services/awv.service';\nimport {Observable} from 'rxjs';\nimport { AwvWorkflowService } from '@shared/services/awv-workflow/awv-workflow.service';\nimport { WorkflowEventsService } from '@shared/services/mixpanel/events/workflow-events.service';\n\n@Component({\n selector: 'coach-patient-awv-completed',\n templateUrl: './patient-awv-completed.component.html',\n styleUrls: ['./patient-awv-completed.component.scss']\n})\nexport class PatientAwvCompletedComponent implements OnInit, OnChanges {\n @Input() public patient: Patient;\n @Input() public awvWorkflow: AwvWorkflow;\n @Input() public mobileScreenSize: boolean;\n @Input() sidebarMode?: boolean;\n @Input() public isTabOpen: boolean;\n @Output() awvWorkflowUpdated: EventEmitter> = new EventEmitter();\n @Output() public activityDeleted: EventEmitter = new EventEmitter();\n\n completedOutcomeProperties = {} as CompletedProperties;\n practiceName = '';\n\n constructor(private awvService: AwvService,\n private practiceService: PracticeService,\n private awvWorkflowService: AwvWorkflowService,\n private workflowEvents: WorkflowEventsService) {}\n\n ngOnInit(): void {\n this.awvWorkflowService.updateSuccessful$.subscribe(() => this.isTabOpen = false);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.awvWorkflow){\n const schedulingActivities = this.awvWorkflow.completedActivities\n .filter( x => x.type === 'SchedulingActivity').map(x => x as SchedulingActivity);\n const completedOutcome = schedulingActivities.find(x => x.outcome.type === OutcomeType.CompletedOutcome).outcome as CompletedOutcome;\n this.completedOutcomeProperties = completedOutcome.properties;\n if (completedOutcome.properties.practiceId) {\n this.practiceService.getPracticeById(this.patient, completedOutcome.properties.practiceId).then(p => this.practiceName = p);\n }\n }\n }\n\n outcomeSaved(outcome: Outcome): void {\n const activityToSave = { type: ActivityType.SchedulingActivity, outcome } as SchedulingActivity;\n\n if (this.completedOutcomeProperties) {\n this.workflowEvents.trackEdit(activityToSave);\n } else {\n this.workflowEvents.trackSave(activityToSave);\n }\n\n const obsUpdatedWorkflow = this.awvService.updateWorkflowActivity({\n programId: CareOrchestrationConstants.AwvProgramId,\n chPatId: this.patient.trackAwvPatient?.chPatID || Number(this.patient.trackPatient.chPatId),\n body: activityToSave\n });\n\n this.awvWorkflowUpdated.emit(obsUpdatedWorkflow);\n }\n\n deleteSchedulingActivity(): void {\n this.activityDeleted.emit(ActivityType.SchedulingActivity);\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {environment} from \"../../../../../../environments/environment\";\nimport {CareOrchestrationConstants} from \"@shared/models/module-constants\";\n\n/*\nTemporary Service for Care Orchestration - simulating patient enrolment\n */\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PatientAwvEnrolService {\n\n constructor(private http: HttpClient) { }\n\n public async enrol(patientId: string) {\n console.info(`Enrolling patient ${patientId}`);\n let url = `${environment.careOrchApiUrl}/programs/awv/enrolments/`;\n\n try {\n let lastYear = new Date();\n lastYear.setFullYear(lastYear.getFullYear() - 1);\n let requestBody = {\n chPatId: patientId,\n communityId: 'AR10',\n criteriaSatisfiedDateTime: new Date().toISOString(),\n lastAwvDetails: {\n date: lastYear.toISOString().split('T')[0],\n source: 'PepClinicalData'\n }\n };\n return await this.http.post(url, requestBody).toPromise();\n } catch (e) {\n console.error(e);\n }\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { PatientAwvEnrolService } from \"@shared/modules/patient-facesheet/tabs/patient-awv-enrol/patient-awv-enrol.service\";\nimport { AwvWorkflow } from '@api/care-orch/models/awv-workflow';\nimport { CareOrchestrationConstants } from '@shared/models/module-constants';\nimport { AwvService } from '@api/care-orch/services/awv.service';\nimport { Observable } from 'rxjs';\n\n/*\nTemporary Component for Care Orchestration - simulating patient enrolment\n */\n\n@Component({\n selector: 'coach-patient-awv-enrol',\n templateUrl: './patient-awv-enrol.component.html'\n})\nexport class PatientAwvEnrolComponent {\n @Input() public patient: Patient;\n @Output() awvWorkflowUpdated: EventEmitter> = new EventEmitter();\n\n constructor(private awvService: AwvService, private enrolService: PatientAwvEnrolService) {}\n\n async enrol() {\n await this.enrolService.enrol(this.patient.chPatId);\n console.info(`Enrolled patient ${this.patient.chPatId}`);\n let obsWorkflow = this.awvService.getWorkflowActivities(\n {programId: CareOrchestrationConstants.AwvProgramId, chPatId: parseInt(this.patient.chPatId)});\n this.awvWorkflowUpdated.emit(obsWorkflow);\n }\n}\n","\n
\n
This patient is not enrolled!
\n \n
\n\n","
\n
\n
LAST AWV (CLAIMS)
\n
{{lastAwvDate | date:'MM/dd/yyyy'}}
\n
No Record Found
\n
\n
\n","import {Component, Input, SimpleChanges} from '@angular/core';\nimport {Patient} from '@shared/models/patient';\n\n@Component({\n selector: 'coach-patient-last-awv-details',\n templateUrl: './patient-last-awv-details.component.html'\n})\nexport class PatientLastAwvDetailsComponent {\n @Input() public patient: Patient;\n\n lastAwvDate: string;\n\n ngOnChanges(_: SimpleChanges): void {\n if (this.patient) {\n this.lastAwvDate = null;\n\n if (this.patient.trackAwvPatient) {\n this.lastAwvDate = this.patient.trackAwvPatient.lastAWVDate;\n } else if(this.patient.trackPatient) {\n this.lastAwvDate = this.patient.trackPatient.lastAWVDate;\n }\n }\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'coach-patient-awv-deferred',\n templateUrl: './patient-awv-deferred.component.html',\n styleUrls: ['./patient-awv-deferred.component.scss']\n})\nexport class PatientAwvDeferredComponent {}\n","
\n
\n \n
\n
\n
\n
\n
Deferred to Signify
\n
On in home AWV list
\n
\n
\n
\n
\n\n","
\n
\n \n
\n
{{errorTitle}}
\n
{{errorMessage}}
\n
\n\n","import {Component, Input, OnInit} from '@angular/core';\n\n@Component({\n selector: 'coach-patient-awv-error',\n templateUrl: './patient-awv-error.component.html',\n styleUrls: ['./patient-awv-error.component.scss']\n})\nexport class PatientAwvErrorComponent {\n\n @Input() public inError: boolean;\n @Input() public errorTitle: string;\n @Input() public errorMessage: string;\n\n}\n","
\n \n
\n \n \n
\n
\n \n \n
\n \n
\n
\n \"patient\n {{ patient.displayInitials() | initialsFromName }}\n \n
\n
\n \n
\n {{patient.displayAge()}}, {{patient.displayGender()}} | {{patient.displayDob()}}\n
\n
\n {{ patient.displayDod() }}\n
\n
\n MBI: {{patient.mbi | mask: 6 }}\n
\n
\n Attributed Provider: {{ patient.tier5_Name?patient.tier5_Name:patient.tier4_Name }}\n
\n
\n
\n \n \n \n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { Patient, PatientViewModel } from '@shared/models/patient';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { ActivatedRoute } from '@angular/router';\nimport { CareOrchestrationConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { AwvWorkflowStatuses } from '../../../../api/care-orch/models/awv-workflow-statuses';\nimport { AwvService } from '../../../../api/care-orch/services/awv.service';\nimport { AwvWorkflow } from '../../../../api/care-orch/models/awv-workflow';\nimport { Observable } from 'rxjs';\nimport { AttendedActivity } from '@api/care-orch/models/attended-activity';\nimport { ActivityType } from '@api/care-orch/models/activity-type';\nimport { environment } from '../../../../../environments/environment';\nimport { EnvironmentType } from '../../../../../environments/environmentTypeDef';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { PracticeService } from '@shared/services/hierarchy/practice.service';\nimport { AwvWorkflowService } from '@shared/services/awv-workflow/awv-workflow.service';\nimport { BackendError } from '@shared/services/awv-workflow/backend-error';\nimport { AwvActivityChangeEvent } from '@shared/services/awv-workflow/awv-activity-change-event';\nimport { WorkflowEventsService } from '@shared/services/mixpanel/events/workflow-events.service';\nimport { Program, TierIds } from '@shared/services/mixpanel/events/workflow-events';\nimport { OnChanges } from '@angular/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\n\n@Component({\n selector: 'coach-care-patient-sidebar',\n templateUrl: './care-patient-sidebar.component.html',\n styleUrls: ['./care-patient-sidebar.component.scss']\n})\nexport class CarePatientSidebarComponent implements OnInit, OnChanges {\n isSidebarOpen = false;\n @Input() tier: IHierarchyTier;\n private get tierId(): string {\n return this?.tier?.selectedTierId;\n }\n @Input() orgId: string;\n @Input() forcePatientSideBar: { open: boolean } = { open: false }; // force sidebar close from parent component\n @Input() patientId: string;\n @Input() selectedPatient: PatientViewModel;\n @Input() patientUrlQueryParams: string[];\n @Output() updatePatientByIdInList: EventEmitter = new EventEmitter();\n\n filterTitle: string = null;\n patient: Patient = null;\n patientUrl: string = null;\n public readonly CareOrchAccessReqs = CareOrchestrationConstants.SideBarAccessRequirements;\n awvWorkflowStatus: AwvWorkflowStatuses = AwvWorkflowStatuses.Other;\n awvWorkflow?: AwvWorkflow = null;\n allAwvWorkflowStatuses = AwvWorkflowStatuses;\n isLoading = false;\n attendedActivityWasSubmitted = false;\n inError = false;\n errorTitle = '';\n errorMessage = '';\n isLinkDisabled = false;\n\n constructor(private patientService: PatientService,\n private route: ActivatedRoute,\n private careOrchService: AwvService,\n private featureFlagService: FeatureFlagService,\n private userAccessService: UserAccessService,\n private practiceService: PracticeService,\n private awvWorkflowService: AwvWorkflowService,\n private authService: AuthService,\n private workflowEvents: WorkflowEventsService)\n {}\n\n ngOnInit(): void {\n this.filterTitle = this.route.snapshot.queryParamMap.get('filterTitle');\n }\n ngOnChanges(changes: SimpleChanges): void {\n this.isLinkDisabled = false;\n if (!this.filterTitle || this.filterTitle !== this.route.snapshot.queryParamMap.get('filterTitle')) {\n this.filterTitle = this.route.snapshot.queryParamMap.get('filterTitle');\n }\n if (this.patientId) {\n this.getPatientData().then(r => {\n const tier2ID = this.patient.tier2_ID;\n const tier3ID = this.patient.tier3_ID;\n let tier4ID = null;\n if (this.patient.trackPatient){\n tier4ID = this.patient.trackPatient.tier4_ID;\n }\n const tierIds = new TierIds(tier2ID, tier3ID, tier4ID);\n this.getUserInfo().then((user) => {\n this.workflowEvents.trackProgramWithPatient(Program.AWV, Number(this.patientId),\n tierIds, user.email);\n });\n });\n this.isSidebarOpen = true;\n\n if (this.hasCareOrchFeatureFlagAndComponents() && this.filterTitle === 'AWV Opportunities') {\n this.practiceService.getPractices(this.patient).then();\n this.awvWorkflowStatus = AwvWorkflowStatuses.Other;\n this.awvWorkflow = null;\n this.attendedActivityWasSubmitted = false;\n const obsAwvWorkflow = this.careOrchService.getWorkflowActivities(\n {programId: CareOrchestrationConstants.AwvProgramId, chPatId: parseInt(this.patientId)});\n this.awvWorkflowUpdated(obsAwvWorkflow);\n }\n }\n\n if (this.forcePatientSideBar?.open) {\n this.isSidebarOpen = true;\n }\n if (this.selectedPatient.trackAwvPatient !== undefined && this.selectedPatient.trackAwvPatient.hasFacesheet === 0) {\n this.isLinkDisabled = true;\n }\n }\n\n async getUserInfo(): Promise {\n return await this.authService.getWellpepperUserInfo();\n }\n\n private hasCareOrchFeatureFlagAndComponents(): boolean {\n return this.featureFlagService.hasFeatureFlag(this.CareOrchAccessReqs.featureFlagId) &&\n this.CareOrchAccessReqs.componentIds.every(id =>\n this.userAccessService.hasComponent(this.userAccessService.currentAccess$.value, id));\n }\n\n public toggleValidatePanel(): void {\n this.isSidebarOpen = !this.isSidebarOpen;\n }\n async getPatientData(): Promise {\n if (this.selectedPatient.trackPatient) {\n this.patient = Patient.fromCareAndTrackPatient(this.selectedPatient.carePatient, this.selectedPatient.trackPatient);\n } else if (this.selectedPatient.trackAwvPatient) {\n this.patient = Patient.fromCareAndTrackAwvPatient(this.selectedPatient.carePatient, this.selectedPatient.trackAwvPatient);\n }\n this.patientUrl = `../patient/${this.patientId}`;\n }\n patientUpdated(): void {\n this.updatePatientByIdInList.emit(this.patient);\n }\n\n awvWorkflowUpdated(obsAwvWorkflow: Observable): void {\n this.isLoading = true;\n this.inError = false;\n\n obsAwvWorkflow.subscribe(awvWorkflow => {\n const awvActivityChangeEvent = new AwvActivityChangeEvent(Number(this.patient.chPatId), this.awvWorkflow, awvWorkflow);\n this.awvWorkflowService.publishAwvActivityChangeEvent(awvActivityChangeEvent);\n this.workflowEvents.emit(this.awvWorkflow, awvWorkflow);\n this.awvWorkflow = awvWorkflow;\n this.awvWorkflowStatus = this.awvWorkflow.status;\n this.isLoading = false;\n const attendedActivities = this.awvWorkflow.completedActivities.filter(x => x.type === 'AttendedActivity')\n .map(x => x as AttendedActivity);\n this.attendedActivityWasSubmitted = attendedActivities.length > 0;\n this.awvWorkflowService.publishUpdateSuccessful();\n }, error => {\n this.workflowEvents.emit(this.awvWorkflow, this.awvWorkflow, error);\n this.isLoading = false;\n let backendError = null;\n if (error.status === 404){\n // no workflow found for this patient, so show default screen\n this.awvWorkflowStatus = AwvWorkflowStatuses.Other;\n } else if (this.awvWorkflow === null){\n this.inError = true;\n this.errorTitle = error.status + ' Error';\n this.errorMessage = CareOrchestrationConstants.serverErrorMessageFrontend;\n } else {\n let userFriendlyErrorMessage = null;\n if (error.status === 403 && error.error.detail.includes(CareOrchestrationConstants.forbiddenErrorMessageBackend)){\n userFriendlyErrorMessage = CareOrchestrationConstants.forbiddenErrorMessageFrontend;\n } else if (error.status === 409){\n userFriendlyErrorMessage = CareOrchestrationConstants.conflictErrorMessageFrontend;\n } else {\n userFriendlyErrorMessage = CareOrchestrationConstants.defaultErrorMessage;\n }\n backendError = new BackendError(error.status, error.statusText, userFriendlyErrorMessage);\n this.awvWorkflowService.publishBackendError(backendError);\n }\n });\n }\n\n activityDeleted(activityType: ActivityType): void{\n this.workflowEvents.trackDelete(activityType);\n\n const awvWorflowObs = this.careOrchService.rollbackWorkflowActivity({\n programId: CareOrchestrationConstants.AwvProgramId,\n chPatId: Number(this.patientId),\n typeOfActivityToRollback: activityType,\n });\n\n this.awvWorkflowUpdated(awvWorflowObs);\n }\n\n isLowerEnvironment(): boolean {\n return (environment.environmentId === EnvironmentType.dev || environment.environmentId === EnvironmentType.qa);\n }\n}","\n\n\n
\n
\n
\n
\n
\n
\n
\n {{ selectedPreset?.label }}\n
\n \n \n {{selectedPreset.listDefinition}}\n
\n
\n \n \n Filter applied - \n \n \n
\n \n
\n\n
\n
\n \n \n
\n\n \n \n \n
\n
\n
\n
\n\n \n
\n
\n
\n \n\n
\n\n\n \n\n \n \n
\n
\n
\n
\n\n \n
\n \n \n
\n
\n \n
\n
\n \n
\n \n \n \n
\n
\n\n\n
\n \n \n \n\n \n \n
\n\n
\n \n\n \n \n \n\n \n \n\n \n
\n
\n\n\n\n\n \n
\n \n
\n \n
\n\n\n\n
\n
\n \n
\n
\n
\n\n\n\n\n
\n
\n
\n
Select Facesheet Version
\n
\n
\n
\n
\n
\n
\n \n\n \n
\n
\n
\n
\n","import _ from 'lodash';\nimport { isAfter, parseISO, subDays, toDate } from 'date-fns';\nimport { BehaviorSubject } from 'rxjs';\nimport {\n Component,\n OnInit,\n LOCALE_ID,\n Inject,\n ViewChild,\n ChangeDetectorRef\n} from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { AwvWorkflowStatusForPatientListDisplay, Patient, PatientViewModel } from '@shared/models/patient';\nimport {\n PatientService,\n ITrackApiPatient,\n IWPAPIPatient,\n ITrackApiIHEFilesListVisitInfo as ITrackApiIHEFilesListVisitInfo,\n ITrackApiIHEBillingListVisitInfo,\n} from '@shared/services/patient/patient.service';\nimport {\n IPatientFilterPreset,\n ITrackAPIParams,\n IWPAPIParams,\n} from '@shared/models/patient-filters';\n\nimport {\n DISEASE_COHORT_GRID_KEY,\n GridFilterService,\n} from '@shared/components/grid/grid-filter.service';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { AwvWorklistService } from '@care/components/awv-worklist/awv-worklist.service';\nimport { formatDate } from '@angular/common';\nimport { DiseaseCohortGridComponent } from './disease-cohort-grid/disease-cohort-grid.component';\nimport { EdUtilizationGridComponent } from './ed-utilization-grid/ed-utilization-grid.component';\nimport { FacesheetScheduleComponent } from './../../components/facesheet-schedule/facesheet-schedule/facesheet-schedule.component';\nimport {\n CareFeatureConstants,\n CareOrchestrationConstants,\n CarePatientItem,\n ClinicalProgramPresetMap,\n PresetCategory,\n} from '@shared/models/module-constants';\nimport { skip, takeUntil } from 'rxjs/operators';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\nimport {\n SubComponentId,\n ComponentId,\n ActionId,\n} from '@shared/models/audit-constants';\nimport { faPaperclip, faPaperPlane } from '@fortawesome/free-solid-svg-icons';\nimport { defaultInputLength } from '@shared/modules/patient-facesheet/patient-facesheet.constants';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport {\n AgGridLocalSettingsService,\n FilterSettings,\n AG_GRID_LOCALE_CARE,\n dateFormat,\n} from '@shared/services/ag-grid/ag-grid.service';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { compareString, currencyCellRenderer, dodCellRenderer } from '@shared/components/grid/grid-functions';\nimport { Access } from '@shared/services/graphql/access.service';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport { ErrorHandlerService } from '@shared/services/logging/error-handler.service';\nimport { HccFacesheetScheduleService } from '@care/components/facesheet-schedule/hcc-facesheet-schedule.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { CareComponentConstants } from '@shared/models/module-constants';\nimport { OrgService } from '@shared/services/org-service/org.service';\nimport {\n PatientEngagement,\n PatientEngagementComponentIds,\n} from '@shared/enums';\nimport { UntypedFormControl } from '@angular/forms';\nimport { ClinicalProgram } from '@shared/models/module-constants';\nimport { SpacesToDashesPipe } from '@shared/pipes/spaces-to-dashes.pipe';\nimport { DiseaseCohortDefinition } from 'src/app/api/track/models/disease-cohort-definition';\nimport { getColumnDefinitions } from './columnDefinitions';\nimport { FilterDataService } from '@shared/services/filter-data.service';\nimport { ActivatedRouteService } from '@shared/services/activated-route/activated-route.service';\nimport { CarePatientsFiltersComponent } from './care-patients-filters/care-patients-filters.component';\nimport { PresetGroupService } from '@care/preset-group/preset-group.service';\nimport { Assignment } from '@shared/enums/assignment.enum';\nimport { IColumnOptions } from '@shared/models/forms/form-admin-model';\nimport { LinkClickedEventsService } from '@shared/services/mixpanel/events/link-clicked-events.service';\nimport { LoadingMsgEnum } from '@shared/enums/loadingMsg.enum';\nimport { ColDef, ColumnApi, ColumnState, FilterChangedEvent, GridApi, ProcessCellForExportParams } from 'ag-grid-community';\n\nimport 'ag-grid-enterprise';\nimport 'ag-grid-community';\n\n\n/** Helper function\n * sortValue - comma delimited list of strings\n * @returns -1 if the first value sorts before the second one\n * 0 if they are equal\n * 1 if the first value sorts after the second one\n * TODO - could use a bit more refactoring\n * TODO - support inverted compare\n */\nexport function compare(a: any, b: any, sortValue: string): -1 | 0 | 1 {\n if (!a) {\n return 1;\n }\n if (!b) {\n return -1;\n }\n let properties = sortValue.split(',');\n\n for (var i = 0; i < properties.length; i++) {\n let key = properties[i].trim();\n if (null == a && null == b) {\n continue;\n } else if (null == a) {\n return 1; // Sort nulls to the end\n } else if (null == b) {\n return -1;\n }\n\n let aString = a[key]?.toString()?.toLowerCase();\n let bString = b[key]?.toString()?.toLowerCase();\n const c = compareString(aString, bString);\n if (0 == c) {\n continue;\n }\n return c;\n }\n return 0;\n}\n\n@Component({\n selector: 'coach-care-patients',\n templateUrl: './care-patients.component.html',\n host: {\n class: 'page-content coach-care-patients',\n },\n providers: [MaskPipe],\n})\nexport class CarePatientsComponent\n extends PersistentGridFilters\n implements OnInit\n{\n public selectedPatient: PatientViewModel;\n public allPatients: PatientViewModel[];\n public readonly carePatientsFeature = CareFeatureConstants.PatientsFeature;\n public readonly facesheetUIUpdates =\n CareFeatureConstants.FacesheetUIUpdatesFlag;\n PatientEngagement = PatientEngagement;\n PatientEngagementComponentIds = PatientEngagementComponentIds;\n public readonly CareOrchAccessReqs = CareOrchestrationConstants.GridViewAccessRequirements;\n /** What's actually bound to the view */\n public patients: Array = [];\n /** Indexed by page number */\n public allPatientsStore: Array>;\n pageNum: number = 0;\n isProcessingBool: boolean = false;\n public selectedPreset: IPatientFilterPreset;\n public resetFilter: boolean;\n selectedPatientId: string;\n forcePatientSideBar: { open: boolean } = { open: false };\n wpFirstBookmark: number = null;\n wpLastBookmark: number = null;\n trackFirstBookmark: number = null;\n trackLastBookmark: number = null;\n sortValue: string = 'lastName,firstName';\n alerts: any = [];\n filter: string = '';\n loadingStatus: boolean = true;\n newMessage = {\n senderType: 'user',\n senderId: null,\n messageText: '',\n pictureUrl: null,\n videoUrl: null,\n fileUrl: null,\n };\n public facesheetVersionModal: boolean = false;\n public facesheetVersionType: 'print' | 'export' | null = null;\n public facesheetVersionExpanded: boolean = false;\n public bulkInviteModal: boolean = false;\n public selectedPatients: any[];\n public activePatients: number = 0;\n messageBroadcastStatus: {\n messageBroadcastResult: string;\n messageBroadcastProcessStatusBool: boolean;\n progressPercentage: number;\n };\n public inviteList: any[];\n public buttonsStatus: {\n BulkInvite: boolean;\n BroadcastMessage: boolean;\n Export: boolean;\n Print: boolean;\n };\n public disableBroadcastButton = new BehaviorSubject(true);\n public disableBulkInviteButton = new BehaviorSubject(true);\n \n public filterModel: any;\n patientDataByChPatId: any;\n patientDataByCareId: { [key: string]: any };\n rowSelection = 'multiple';\n\n columnState: ColumnState[];\n gridApi: GridApi = null;\n columnApi: ColumnApi;\n secondaryColumnApi: ColumnApi;\n patientIds: any = {}; // to prevent duplicates to be displayed on the list\n public tier: IHierarchyTier;\n public orgId: string;\n fcButtonsStatus = {\n fcPdfLoading: false,\n fcPrintLoading: false,\n };\n\n private get tierId() {\n return this?.tier?.selectedTierId;\n }\n private get tierNum() {\n return this?.tier?.tier;\n }\n\n readonly defaultColDef: ColDef = {\n resizable: true,\n };\n columnDefs: Array = [];\n ClinicalProgram = ClinicalProgram;\n\n clinicalProgramFormControl = new UntypedFormControl('');\n externalSelectedList: any[] = [];\n cancelLoadingBool: boolean = false;\n fileUploadingStatusOversizeBool: boolean = false;\n fileUploadingStatusBool: boolean = false;\n faPaperclip = faPaperclip;\n faPaperPlane = faPaperPlane;\n fileUploadObj: { size: number; name: string };\n messageMaxLength = defaultInputLength.message;\n userAccess: Access;\n columnsSettingsModal: boolean = false;\n externalColumnDefs: Array;\n diseaseCohortDefinitions: DiseaseCohortDefinition[] = null;\n filteredDiseaseCohortDefinitions: DiseaseCohortDefinition[] = null;\n filterAppliedBool: boolean = false;\n @ViewChild(DiseaseCohortGridComponent)\n DiseaseCohortGridComponent: DiseaseCohortGridComponent;\n @ViewChild(EdUtilizationGridComponent)\n EdUtilizationGridComponent: EdUtilizationGridComponent;\n @ViewChild(FacesheetScheduleComponent)\n FacesheetScheduleComponent: FacesheetScheduleComponent;\n @ViewChild(CarePatientsFiltersComponent, { static: true })\n carePatientsFiltersComponent: CarePatientsFiltersComponent;\n AG_GRID_LOCALE_CARE: { [key: string]: string } = AG_GRID_LOCALE_CARE;\n user: wpapi.model.Professional = null;\n private _refreshing: boolean = false;\n /** All care patients that have been loaded */\n private _loadedWpPatients: Array = [];\n /** The index of the next patient to return */\n private _nextWpPatientIndex: number = 0;\n private _loadedAllWpPatients: boolean = false;\n private currentColumnDefs: ColDef[] = [];\n private datesCleared = false;\n CarePatientItem = CarePatientItem;\n PresetCategory = PresetCategory;\n AWVPatientsStatus: AwvWorkflowStatusForPatientListDisplay = null;\n AwvWorkflowStatusForPatientListDisplay = AwvWorkflowStatusForPatientListDisplay;\n public AWVOpportunitiesId = CareComponentConstants.AwvPatientsWorklist;\n public loadingMsg = LoadingMsgEnum.Loading;\n columnOptions: IColumnOptions = {\n locale: this.locale,\n mask: this.mask,\n agGridCellRendererParams: {\n getTierId: () => { return this.tierId; },\n getTierNum: () => { return this.tierNum; },\n getGridApi: () => { return this.gridApi; },\n updatePatientByIdInList: patient => { return this.updatePatientByIdInList(patient); }\n }\n };\n\n constructor(\n private _patientService: PatientService,\n private _orgService: OrgService,\n private _route: ActivatedRoute,\n private _router: Router,\n protected filterService: GridFilterService,\n private HierarchyTierService: HierarchyTierService,\n private awvWorklistService: AwvWorklistService,\n private route: ActivatedRoute,\n private auditService: AuditService,\n @Inject(LOCALE_ID) private locale: string,\n private userAccessService: UserAccessService,\n private mask: MaskPipe,\n private agGridLocalSettingsService: AgGridLocalSettingsService,\n private toastrMessageService: ToastrMessageService,\n public hccFacesheetScheduleService: HccFacesheetScheduleService,\n private authService: AuthService,\n private featureFlagService: FeatureFlagService,\n private errorHandlerService: ErrorHandlerService,\n private changeDetectorRef: ChangeDetectorRef,\n private spacesToDashes: SpacesToDashesPipe,\n private filterDataService: FilterDataService,\n private _routeService: ActivatedRouteService,\n private presetGroupService: PresetGroupService,\n private linkClickedEventsService: LinkClickedEventsService\n ) {\n super(filterService, DISEASE_COHORT_GRID_KEY);\n this.trackLastBookmark = 0;\n this.userAccessService.currentAccess$\n .pipe(takeUntil(this.killTrigger))\n .subscribe((access) => {\n this.userAccess = access;\n });\n HierarchyTierService.currentTier$\n .pipe(takeUntil(this.killTrigger))\n .subscribe(async (tier) => {\n if (this.tier?.selectedTierId !== tier?.selectedTierId) {\n this.tier = tier;\n this.selectedPatientId = null;\n if (this.tier?.selectedTierId) {\n this.orgId = await this._patientService.getWpOrgIdFromTierId(this.tier.selectedTierId);\n this.columnDefs = getColumnDefinitions(this.columnOptions);\n } else {\n this.orgId = null;\n }\n\n if(this.selectedPreset && !this._refreshing) {\n await this.refreshPatientsListAndApplyPreset();\n this.changeDetectorRef.detectChanges();\n await this.filterDataService.applyStoredFilterModel(this.selectedPreset, this.gridApi);\n await this.filterDataService.applyDefaultFilterModel(this.selectedPreset, this.gridApi);\n await this.filterDataService.applyFilterSettings(this.selectedPreset, this.selectedPreset?.filterSettings, this.gridApi, false);\n await this.matchAndUpdateFilterSettings();\n this.filterAppliedBool = this.filterDataService.checkIfFilterIsApplied(this.selectedPreset, this.gridApi, this.columnApi);\n }\n }\n });\n this.getUserInfo();\n this.columnDefs = getColumnDefinitions(this.columnOptions);\n\n this._routeService.currentRoute$\n .pipe(takeUntil(this.killTrigger))\n .subscribe(() => {\n const requestedPreset = this._route.snapshot.queryParams[\n 'filterPreset'\n ] as CarePatientItem;\n const requestedPresetFilterTitle = this._route.snapshot.queryParams[\n 'filterTitle'\n ] as string;\n const newPreset: string = this._route.snapshot.queryParams[\n 'newPreset'\n ];\n\n if(!requestedPreset && this.carePatientsFiltersComponent){\n const selectedPresetItem = this.presetGroupService.getPresetByName(CarePatientItem.AwvOpportunities);\n this.carePatientsFiltersComponent.onSelectPreset(selectedPresetItem);\n return;\n }\n let selectedPresetItem =\n this.presetGroupService.getPresetByFilterQueryParams(\n requestedPreset, requestedPresetFilterTitle\n );\n if(newPreset == 'true' && !selectedPresetItem){\n selectedPresetItem = this.presetGroupService.getTempPreset();\n }\n this.filterChange(selectedPresetItem);\n });\n }\n\n ngOnInit(): void {\n this._patientService.getDiseaseCohortData();\n this.awvWorklistService.loadItems$\n .pipe(takeUntil(this.killTrigger))\n .subscribe(async () => {\n this.loadingStatus = true;\n this.loadingMsg = LoadingMsgEnum.Loading;\n this.gridApi?.showLoadingOverlay();\n await this.resetPatientData();\n await this.getAwvPatients(this.selectedPreset?.name);\n this.changeDetectorRef.detectChanges();\n let storedFilterModel = await this.agGridLocalSettingsService.getStoredFilterModelFromLocalStorage(PresetCategory.AnnualWellnessVisits, this.selectedPreset?.presetKey);\n if(!storedFilterModel) {\n storedFilterModel = { ...this.selectedPreset.defaultFilterModel};\n }\n this.gridApi.setFilterModel(storedFilterModel);\n await this.filterDataService.applyFilterSettings(this.selectedPreset, this.selectedPreset?.filterSettings, this.gridApi, true);\n await this.matchAndUpdateFilterSettings();\n this.filterAppliedBool = this.filterDataService.checkIfFilterIsApplied(this.selectedPreset, this.gridApi, this.columnApi);\n\n this.loadingStatus = false;\n this.gridApi?.hideOverlay();\n if(!this.patients?.length) {\n this.loadingMsg = LoadingMsgEnum.NoData;\n this.changeDetectorRef.detectChanges();\n this.gridApi?.showNoRowsOverlay();\n }\n });\n }\n ngOnChanges(changes): void {\n //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.\n //Add '${implements OnChanges}' to the class.\n }\n\n // ================================= GRID LISTENERS =================================\n onGridReady(param: any): void {\n this.gridApi = param.api;\n this.columnApi = param.columnApi;\n this.columnDefs = getColumnDefinitions(this.columnOptions);\n this.setLocalColumnSettings();\n }\n\n public onFirstDataRendered(params: any): void {\n params.api.sizeColumnsToFit();\n this.gridApi.onFilterChanged();\n if (this.patients?.length === 0) {\n this.loadingMsg = LoadingMsgEnum.NoData;\n params.api.showNoRowsOverlay();\n }\n }\n\n async agFilterChanged(event: FilterChangedEvent) {\n this.filterAppliedBool = this.filterDataService.checkIfFilterIsApplied(this.selectedPreset, this.gridApi, this.columnApi);\n\n if (event?.afterDataChange != null && !this.selectedPreset.temporary && this.patients?.length) {\n await this.filterDataService.storeFilterModelAndMatchFilterSettings(this.selectedPreset, this.gridApi);\n // check here if new filter model conflicts with filterSettings\n await this.matchAndUpdateFilterSettings(true);\n }\n\n if (this.loadingStatus == false){\n const displayedRowCount = this.gridApi?.getDisplayedRowCount();\n if (displayedRowCount === 0) {\n this.loadingMsg = LoadingMsgEnum.NoData;\n this.changeDetectorRef.detectChanges();\n this.gridApi?.showNoRowsOverlay();\n } else {\n this.gridApi?.hideOverlay();\n }\n }\n }\n\n async onRowDataChanged(event) {\n return; // temporary disable it. Probably no need in this function, need to see how it works\n // if (this.selectedPreset?.filterSettings && this.patients?.length) {\n // this.filterAppliedBool = false;\n // await this.filterDataService.applyFilterSettings(this.selectedPreset, this.selectedPreset.filterSettings, this.gridApi, true);\n // await this.matchAndUpdateFilterSettings();\n // this.filterAppliedBool = this.filterDataService.checkIfFilterIsApplied(this.selectedPreset, this.gridApi);\n // }\n }\n\n // ================================= PATIENTS LISTS =================================\n\n public resetPatientData() {\n //empty all lists before doing a new pull\n this._nextWpPatientIndex = 0;\n\n this.pageNum = 0;\n this.wpFirstBookmark = 0;\n this.wpLastBookmark = 0;\n this.trackFirstBookmark = 0;\n this.trackLastBookmark = 0;\n\n this.allPatients = [];\n this.patients = [];\n this.allPatientsStore = [];\n }\n async refreshPatientsListAndApplyPreset() {\n if (this._refreshing) {\n return;\n }\n this._refreshing = true;\n this.resetPatientData();\n if (this.selectedPreset) {\n await this.getCorrespondingPatients();\n }\n this._refreshing = false;\n }\n\n /**\n * @returns index - the index of the patient returned\n * patient - a patient from the care api\n */\n async getNextWpPatient(): Promise<{ index: number; patient: IWPAPIPatient }> {\n if (!this._loadedAllWpPatients) {\n let wpPatients = await this._patientService.getWellpepperPatients(\n this.tierId,\n this.sortValue,\n this.filter\n );\n this._loadedWpPatients = wpPatients;\n this._loadedAllWpPatients = true;\n }\n if (this._nextWpPatientIndex >= this._loadedWpPatients.length) {\n return null;\n }\n let res = {\n index: this._nextWpPatientIndex,\n patient: this._loadedWpPatients[this._nextWpPatientIndex],\n };\n this._nextWpPatientIndex++;\n return res;\n }\n private isAlertsOrMessagesFilter(): boolean {\n return (\n this.filter?.search('alerts') == 0 || this.filter?.search('messages') == 0\n );\n }\n\n\n async getCorrespondingPatients() {\n if (!this.diseaseCohortDefinitions) {\n this.diseaseCohortDefinitions = await this._patientService.getDiseaseCohortData();\n this.filteredDiseaseCohortDefinitions = (this.diseaseCohortDefinitions || []).filter(r => r.isVisible === 1);\n }\n if(this.selectedPreset?.label === 'Care Management'){\n const name = this.spacesToDashes.transform(this.selectedPreset?.name || '');\n let cohortId =null;\n if(name.toLowerCase().includes('copd')){\n cohortId = this.filteredDiseaseCohortDefinitions.find(r=> r.cohortName === ClinicalProgram.COPD);\n\n } else if(name.toLowerCase().includes('hypertension')){\n cohortId = this.filteredDiseaseCohortDefinitions.find(r=> r.cohortName === ClinicalProgram.Hypertension);\n\n } else if(name.toLowerCase().includes('heartfailure')){\n cohortId = this.filteredDiseaseCohortDefinitions.find(r=> r.cohortName === ClinicalProgram.HeartFailure);\n }\n this.clinicalProgramFormControl.setValue(cohortId?.cohortID || '', { emitEvent : false});\n }\n switch (this.selectedPreset?.name) {\n case CarePatientItem.AwvOpportunities:\n await this.getAwvPatients(this.selectedPreset?.name);\n break;\n\n case CarePatientItem.EdUtilization:\n await this.getEdUtilizationPatients(this.selectedPreset?.name);\n break;\n case CarePatientItem.Chf:\n case CarePatientItem.ClinicalProgramHeartFailure:\n case CarePatientItem.ClinicalProgramCOPD:\n case CarePatientItem.Diabetes:\n case CarePatientItem.ClinicalProgramHypertension:\n await this.getCohortPatients(\n this.selectedPreset?.name,\n this.selectedPreset?.diseaseCohortNameFromTrackApi\n );\n break;\n case CarePatientItem.HccTop50:\n await this.getHccVipCohortPatients(this.selectedPreset?.name);\n\n break;\n case CarePatientItem.CareManagementAllProgram:\n case CarePatientItem.CareManagementCopd:\n case CarePatientItem.CareManagementHeartFailure:\n case CarePatientItem.CareManagementHypertension:\n await this.getCareManagementCohortPatients(this.selectedPreset?.name);\n break;\n case CarePatientItem.AwvSchedule:\n await this.getIheAwvSchedulePatients(this.selectedPreset?.name);\n break;\n case CarePatientItem.FacesheetSchedule:\n if (\n !this.patientDataByChPatId ||\n Object.keys(this.patientDataByChPatId).length < 1\n ) {\n await this.getCarePatientData();\n }\n break;\n case CarePatientItem.AwvFiles:\n await this.getIHEPatients(this.selectedPreset?.name);\n break;\n case CarePatientItem.AwvBilling:\n await this.getIHEBillingPatients(this.selectedPreset?.name);\n break;\n default:\n // All patients\n await this.getPatients(this.selectedPreset.apiParams, this.selectedPreset?.name);\n break;\n }\n this.changeDetectorRef.detectChanges();\n let page = this._route.snapshot.queryParams['page'];\n if (!isNaN(page)) {\n this.gridApi.paginationGoToPage(Number(page));\n }\n }\n\n async getIHEPatients(presetName: string) {\n this.cancelLoadingBool = false;\n let ihePatients: ITrackApiIHEFilesListVisitInfo[] =\n await this._patientService.getTrackIHEListPatients(\n this.tierNum,\n this.tierId\n );\n if (this.cancelLoadingBool || presetName != this.selectedPreset?.name) {\n console.warn(\"Cancel button was clicked. Stopping the function.\")\n return;\n }\n this.patients = ihePatients?.map(v => PatientViewModel.fromIheVisit(v)) || [];\n this.filterDataService.updateFilterSettings(this.selectedPreset, this.patients, this.gridApi);\n }\n\n async getIHEBillingPatients(presetName: string) {\n this.cancelLoadingBool = false;\n let ihePatients: ITrackApiIHEBillingListVisitInfo[] =\n await this._patientService.getTrackIHEBillingListPatients(\n this.tierNum,\n this.tierId\n );\n if (this.cancelLoadingBool || presetName != this.selectedPreset?.name) {\n console.warn(\"Cancel button was clicked. Stopping the function.\")\n return;\n }\n let patients =\n ihePatients?.map((v) => PatientViewModel.fromIheBilling(v)) || [];\n patients.forEach((patient: any, index: number) => {\n patients[index].diseaseCohorts =\n this._patientService.convertDiseaseCohortIdToName(\n patient.diseaseCohortIds\n );\n });\n this.patients = patients;\n this.filterDataService.updateFilterSettings(this.selectedPreset, this.patients, this.gridApi);\n }\n\n async getPatients(apiParams: {\n track?: ITrackAPIParams;\n wpapi?: IWPAPIParams;\n }, presetName: string) {\n this.cancelLoadingBool = false;\n if (!this.orgId) {\n this.orgId = await this._patientService.getWpOrgIdFromTierId(this.tierId);\n }\n\n if (\n !this.patientDataByCareId ||\n Object.keys(this.patientDataByCareId).length < 1\n ) {\n await this.getCarePatientData();\n }\n\n const [carePatients, trackPatients] = await Promise.all([\n this._patientService.getWellpepperPatients(\n this.tierId,\n this.sortValue,\n this.filter,\n apiParams?.wpapi\n ),\n this._patientService.getTrackPatients(\n this.tierNum,\n this.tierId,\n apiParams?.track\n ),\n ]);\n\n const carePatientsById: { [chpatid: string]: IWPAPIPatient } = {};\n carePatients.forEach((p) => {\n const chPatId = Patient.getChPatIdAndTierIdFromCarePatient(p)?.chPatId;\n chPatId\n ? (carePatientsById[chPatId] = p)\n : console.warn(`getPatients - ${p._id} could not get chPatId`);\n });\n const trackPatientsById: { [chPatId: string]: ITrackApiPatient } = {};\n trackPatients.results.forEach((p) => {\n const chPatId = p.chPatId;\n trackPatientsById[chPatId] = p;\n });\n\n let patients: Array;\n if (this.isAlertsOrMessagesFilter()) {\n patients = [];\n for (let i = 0; i < carePatients.length; i++) {\n const cp = carePatients[i];\n const chPatId = Patient.getChPatIdAndTierIdFromCarePatient(cp)?.chPatId;\n const tPat = trackPatientsById[chPatId];\n const riskProbability = Number(tPat?.probability?.toFixed(2));\n if (tPat) {\n tPat.diseaseCohorts =\n this._patientService.convertDiseaseCohortIdToName(\n tPat.diseaseCohortIDs\n );\n }\n const patient = PatientViewModel.fromTrackAndCare(\n tPat,\n cp,\n this.tier,\n // TODO - these seem redundant\n tPat?.assignment,\n tPat?.currentRiskLevel,\n tPat?.predictedRiskLevel,\n riskProbability,\n tPat?.riskTrend\n );\n if (cp?.weight) {\n const comps = await this._patientService.getCompletionActivity(\n this.tierId,\n patient\n );\n const alertComp = patient?.carePatient?.alerts?.[0];\n if (comps && alertComp) {\n const alertDate = toDate(parseISO(alertComp.reportingDate));\n const alert3lbBound = subDays(alertDate, 2);\n const lastDaysComps = comps.filter((c) => {\n return isAfter(alert3lbBound, toDate(parseISO(c.reportingDate)));\n });\n const lowestWeight = _.min(lastDaysComps.map((c) => c.weight));\n patient.gain =\n lowestWeight <= patient.weight - 3\n ? '5+ since last'\n : '3+ in a day';\n }\n }\n patients.push(patient);\n }\n } else {\n // CC-1842 - for now, only display patients that are BOTH\n // track and care patients.\n patients = trackPatients.results.map((tp) => {\n let cp = carePatientsById[tp.chPatId];\n let cpExtra = cp && this.patientDataByCareId[cp._id];\n tp.diseaseCohorts = this._patientService.convertDiseaseCohortIdToName(\n tp.diseaseCohortIDs\n );\n return PatientViewModel.fromTrackAndCare(\n tp,\n cp,\n this.tier\n );\n });\n }\n\n if (this.cancelLoadingBool || presetName != this.selectedPreset?.name) {\n console.warn(\"Cancel button was clicked. Stopping the function.\")\n return;\n }\n\n this.allPatientsStore.push(patients);\n this.patients = [].concat(...this.allPatientsStore);\n if (this.selectedPreset.patientsDataExtender) {\n this.patients = await this.selectedPreset.patientsDataExtender(\n this.patients,\n this.orgId\n );\n }\n if (this.selectedPreset.requiredPatientFields) {\n await this.filterPatients(this.selectedPreset.requiredPatientFields);\n }\n this.filterDataService.updateFilterSettings(this.selectedPreset, this.patients, this.gridApi);\n }\n async getAwvPatients(presetName: string) {\n const isCareOrchFeatureFlagAndComponents = this.hasCareOrchFeatureFlagAndComponents();\n\n if (!this.orgId) {\n this.orgId = await this._patientService.getWpOrgIdFromTierId(this.tierId);\n }\n this.cancelLoadingBool = false;\n if (\n !this.patientDataByChPatId ||\n Object.keys(this.patientDataByChPatId).length < 1\n ) {\n await this.getCarePatientData();\n }\n let patients: Array = [];\n\n const fromDate =\n this.awvWorklistService.fromDate?.value === '' ||\n this.awvWorklistService.fromDate?.value === null\n ? new Date('1901-01-01')\n : new Date(this.awvWorklistService.fromDate.value);\n const toDate =\n this.awvWorklistService.toDate?.value == null\n ? null\n : new Date(this.awvWorklistService.toDate.value);\n\n let AwvPatientsWorklist: boolean = this.userAccessService.hasComponent(\n this.userAccess,\n CareComponentConstants.AwvPatientsWorklist\n )\n let trackAwvPatients = await this._patientService.getTrackAwvPatients(\n this.tierNum,\n this.tierId,\n fromDate,\n toDate,\n null,\n AwvPatientsWorklist ? CareComponentConstants.AwvPatientsWorklist.toString() : null\n );\n if (!trackAwvPatients) {\n trackAwvPatients = [];\n }\n // console.warn(`getAwvPatients: ${trackAwvPatients.length} track patients`);\n // console.warn(`getAwvPatients: this.AWVPatientsStatus is \"${this.AWVPatientsStatus}\"`);\n trackAwvPatients.forEach((p) => {\n p.diseaseCohorts = this._patientService.convertDiseaseCohortIdToName(\n p.diseaseCohortIDs\n );\n let patient = PatientViewModel.fromAwvAndCare(\n p,\n null,\n this.tier,\n this.patientDataByChPatId[p.chPatID]\n );\n\n if (isCareOrchFeatureFlagAndComponents && this.AWVPatientsStatus) { // filtering on awv buttons\n const status = this.getAwvPatientsStatusFromQueryParams(patient.allAWVPatientsListStatus);\n if(!this.AWVPatientsStatus.includes(status)){\n return;\n }\n }\n\n patients.push(patient);\n });\n // Getting ALL patients\n console.warn('total AWV PAtients:', patients.length);\n if (this.cancelLoadingBool || presetName != this.selectedPreset?.name) {\n console.warn(\"Cancel button was clicked. Stopping the function.\")\n return;\n }\n this.patients = patients.sort(this.fieldSorter(this.sortValue.split(',')));\n }\n\n private hasCareOrchFeatureFlagAndComponents(): boolean {\n return this.featureFlagService.hasFeatureFlag(this.CareOrchAccessReqs.featureFlagId) &&\n this.CareOrchAccessReqs.componentIds.every(id =>\n this.userAccessService.hasComponent(this.userAccessService.currentAccess$.value, id));\n }\n\n async getCohortPatients(cohortName: string, cohortSecondName?: string) {\n if (!this.orgId) {\n this.orgId = await this._patientService.getWpOrgIdFromTierId(this.tierId);\n }\n this.cancelLoadingBool = false;\n if (\n !this.patientDataByChPatId ||\n Object.keys(this.patientDataByChPatId).length < 1\n ) {\n await this.getCarePatientData();\n }\n let patients: Array = [];\n let cohortId = this.diseaseCohortDefinitions.filter(\n (dc) =>\n dc.cohortName == cohortName ||\n (cohortSecondName ? dc.cohortName == cohortSecondName : false)\n )[0]?.cohortID;\n let cohortPatients = await this._patientService.getTrackCohortPatients(\n this.tierNum,\n this.tierId,\n cohortId\n );\n\n try {\n cohortPatients.results.forEach((p) => {\n p.diseaseCohorts = this._patientService.convertDiseaseCohortIdToName(\n p.diseaseCohortIDs\n );\n patients.push(\n PatientViewModel.fromCohortPatient(\n p,\n this.tier,\n this.patientDataByChPatId[p.chPatID]\n )\n );\n });\n } catch (error) {\n console.warn(`ERROR -> ${error}`);\n }\n if (this.cancelLoadingBool || cohortName != this.selectedPreset?.name) {\n console.warn(\"Cancel button was clicked. Stopping the function.\")\n return;\n }\n this.patients = patients;\n }\n\n onClinicalProgramChange(event: any) {\n let selectedPresetItem: IPatientFilterPreset = null;\n let selectedCohort = null;\n if (!this.clinicalProgramFormControl.value) {\n selectedPresetItem =\n this.presetGroupService.getPresetByName(\n CarePatientItem.CareManagementAllProgram\n );\n } else {\n selectedCohort = this.filteredDiseaseCohortDefinitions.find(\n (r) => r.cohortID === this.clinicalProgramFormControl.value\n );\n const selectedItem = ClinicalProgramPresetMap.get(\n selectedCohort.cohortName\n );\n selectedPresetItem =\n this.presetGroupService.getPresetByName(selectedItem);\n }\n\n // Send preset click event to MixPanel\n this.linkClickedEventsService.sendLinkClickedEvent({\n linkId: (event.target as HTMLElement).id,\n sourceSection: 'Care Management',\n sourceSubSection: 'Clinical Program',\n linkText: selectedCohort?.cohortName ?? 'All Programs',\n targetPage: '/care/patients',\n filterPreset: selectedPresetItem.name\n });\n\n this.carePatientsFiltersComponent.selectPreset(selectedPresetItem);\n }\n\n async getCareManagementCohortPatients(presetName: string) {\n if (!this.orgId) {\n this.orgId = await this._patientService.getWpOrgIdFromTierId(this.tierId);\n }\n this.cancelLoadingBool = false;\n this.loadingStatus = true;\n this.loadingMsg = LoadingMsgEnum.Loading;\n this.gridApi?.showLoadingOverlay();\n\n if (\n !this.patientDataByChPatId ||\n Object.keys(this.patientDataByChPatId).length < 1\n ) {\n await this.getCarePatientData();\n }\n let patients: Array = [];\n const cohortId = this.clinicalProgramFormControl.value || '';\n let cohortPatients = await this._patientService.getCareManagementCohort({\n ...{\n TierNum: this.tierNum.toString(),\n TierId: this.tierId,\n CohortId: cohortId,\n },\n ...this.selectedPreset.apiParams?.track,\n });\n try {\n cohortPatients?.results.forEach((patient) => {\n let carePatientInfo = this.patientDataByChPatId[patient.chPatId];\n patient.diseaseCohorts =\n this._patientService.convertDiseaseCohortIdToName(\n patient.chronicConditionList?.split(',')\n );\n patients.push(\n PatientViewModel.fromCareManagementPatient(patient, carePatientInfo)\n );\n });\n } catch (error) {\n this.toastrMessageService.error(error);\n this.errorHandlerService.handleError(error);\n }\n if (this.cancelLoadingBool || presetName != this.selectedPreset?.name) {\n console.warn(\"Cancel button was clicked. Stopping the function.\")\n return;\n }\n\n // 1. check whether there are any percentage filterSettings\n // 1. find columns that are needed to be recalculated\n // 3. for each patient calculate min and max values for ssDenum\n // 4. for each patient update target field to percentage of max/min by formula => 100 - (oldValue/(max - min)) * 100\n if (\n this.selectedPreset.filterSettings?.rows?.find((row) => row.percentage)\n ) {\n // step 1\n let columnsMinMax: { [key: string]: { min: number; max: number } } = {};\n this.selectedPreset.filterSettings.rows.forEach((row) => {\n // step 2\n if (row.percentage) {\n columnsMinMax[row.name] = {\n min: Number.MAX_VALUE,\n max: Number.MIN_VALUE,\n };\n }\n });\n patients.forEach((patient) => {\n // step 3\n for (let key in columnsMinMax) {\n if (patient[key]) {\n if (columnsMinMax[key].max < patient[key]) {\n columnsMinMax[key].max = patient[key];\n } else if (columnsMinMax[key].min > patient[key]) {\n columnsMinMax[key].min = patient[key];\n }\n }\n }\n });\n patients.forEach((patient) => {\n // step 3\n for (let key in columnsMinMax) {\n if (patient[key]) {\n // patient[key] = 100 - (patient[key] / (columnsMinMax[key].max - columnsMinMax[key].min)) * 100;\n }\n }\n });\n }\n //\n this.patients = patients;\n this.loadingStatus = false;\n\n if (this.patients?.length > 0) {\n this.gridApi?.hideOverlay();\n } else {\n this.loadingMsg = LoadingMsgEnum.NoData;\n this.changeDetectorRef.detectChanges();\n this.gridApi?.showNoRowsOverlay();\n }\n this.filterDataService.updateFilterSettings(this.selectedPreset, this.patients, this.gridApi);\n }\n async getHccVipCohortPatients(presetName: string) {\n if (!this.orgId) {\n this.orgId = await this._patientService.getWpOrgIdFromTierId(this.tierId);\n }\n this.cancelLoadingBool = false;\n if (\n !this.patientDataByChPatId ||\n Object.keys(this.patientDataByChPatId).length < 1\n ) {\n await this.getCarePatientData();\n }\n let patients: Array = [];\n let cohortPatients = await this._patientService.getTrackHccVipCohort({\n ...{ TierNum: this.tierNum.toString(), TierId: this.tierId },\n ...this.selectedPreset.apiParams?.track,\n });\n try {\n cohortPatients?.forEach((patient) => {\n patient.diseaseCohorts =\n this._patientService.convertDiseaseCohortIdToName(\n patient.diseaseCohortIDs\n );\n let carePatientInfo = this.patientDataByChPatId[patient.chPatId];\n patients.push(\n PatientViewModel.fromTrackAndCare(\n patient,\n carePatientInfo,\n this.tier\n )\n );\n });\n } catch (error) {\n this.toastrMessageService.error(error);\n this.errorHandlerService.handleError(error);\n }\n if (this.cancelLoadingBool || presetName != this.selectedPreset?.name) {\n console.warn(\"Cancel button was clicked. Stopping the function.\")\n return;\n }\n this.patients = patients;\n }\n async getIheAwvSchedulePatients(presetName: string) {\n this.cancelLoadingBool = false;\n this.patients = [];\n let ihePatients =\n await this._patientService.getTrackIHEAWVScheduleListPatients(\n this.tierNum,\n this.tierId\n );\n if (this.cancelLoadingBool || presetName != this.selectedPreset?.name) {\n console.warn(\"Cancel button was clicked. Stopping the function.\")\n return;\n }\n this.patients = ihePatients.map((patient) => {\n patient.diseaseCohorts =\n this._patientService.convertDiseaseCohortIdToName(\n patient.diseaseCohortIds?.split(',').map((x) => parseInt(x))\n );\n return PatientViewModel.fromIHEAWVSchedule(patient);\n });\n this.filterDataService.updateFilterSettings(this.selectedPreset, this.patients, this.gridApi);\n }\n async getEdUtilizationPatients(presetName: string) {\n if (!this.orgId) {\n this.orgId = await this._patientService.getWpOrgIdFromTierId(this.tierId);\n }\n this.cancelLoadingBool = false;\n if (\n !this.patientDataByChPatId ||\n Object.keys(this.patientDataByChPatId).length\n ) {\n await this.getCarePatientData();\n }\n let patients: Array = [];\n let edPatients = await this._patientService.getTrackEDUtilizationPatients(\n this.tierNum,\n this.tierId\n );\n try {\n edPatients.forEach((p) => {\n p.diseaseCohorts = this._patientService.convertDiseaseCohortIdToName(\n p.diseaseCohortIDs\n );\n patients.push(\n PatientViewModel.fromEdUtilizationPatient(\n p,\n this.tier,\n this.patientDataByChPatId[p.chPatID]\n )\n );\n });\n } catch (error) {\n console.warn(`Error -> ${error}`);\n }\n if (this.cancelLoadingBool || presetName != this.selectedPreset?.name) {\n console.warn(\"Cancel button was clicked. Stopping the function.\")\n return;\n }\n this.patients = patients;\n }\n\n async getCarePatientData() {\n if (!this.tierId) return;\n let orgId = await this._patientService.getWpOrgIdFromTierId(this.tierId);\n let patients =\n (orgId && (await this._patientService.getCarePatientData(orgId))) || {};\n this.patientDataByCareId = patients;\n this.patientDataByChPatId = {};\n\n for (let p in patients) {\n let patientData = patients[p] as any;\n let id = Patient.getChPatIdAndTierIdFromCarePatient(patientData)?.chPatId;\n if (!id) continue;\n this.patientDataByChPatId[id] = {\n lastLogin: patientData.lastLogin,\n lastActivityAt: patientData.lastActivityAt,\n alertsCount: patientData.alertsCount,\n careId: p,\n };\n }\n }\n public getSelectedPatients(): any[] {\n return !this.selectedPresetIsChronicConditions &&\n this.selectedPreset?.name !== CarePatientItem.EdUtilization &&\n this.selectedPreset?.name !== CarePatientItem.FacesheetSchedule\n ? this.getSelectedRows() || []\n : this.externalSelectedList.length > 0\n ? this.externalSelectedList\n : [];\n }\n getSelectedRows(): PatientViewModel[] {\n let patients: PatientViewModel[] = [];\n this.gridApi?.forEachNodeAfterFilter((patient) => {\n if (patient.isSelected()) {\n patients.push(patient.data);\n }\n });\n return patients;\n }\n\n get selectedClinicalProgramName() {\n if (this.clinicalProgramFormControl.value === '') {\n return ClinicalProgram.AllProgram;\n }\n if (\n this.filteredDiseaseCohortDefinitions &&\n this.clinicalProgramFormControl.value\n ) {\n const clinicalProgram = this.filteredDiseaseCohortDefinitions.find(\n (r) => r.cohortID === this.clinicalProgramFormControl.value\n );\n return clinicalProgram && clinicalProgram.cohortName;\n }\n }\n\n get showCareManagementPreset() {\n const name = this.selectedPreset?.name;\n return (\n name === CarePatientItem.CareManagementAllProgram ||\n name === CarePatientItem.CareManagementCopd ||\n name === CarePatientItem.CareManagementHeartFailure ||\n name === CarePatientItem.CareManagementHypertension\n );\n }\n\n get showAWVButtons() {\n return this.selectedPreset?.name === CarePatientItem.AwvOpportunities;\n }\n\n\n getAwvPatientsStatusFromQueryParams(aWVPatientsStatus: AwvWorkflowStatusForPatientListDisplay[] | AwvWorkflowStatusForPatientListDisplay) {\n if (!Array.isArray(aWVPatientsStatus)) {\n aWVPatientsStatus = [aWVPatientsStatus];\n }\n\n if (aWVPatientsStatus.includes(AwvWorkflowStatusForPatientListDisplay.ReadyToSchedule) || aWVPatientsStatus.includes(AwvWorkflowStatusForPatientListDisplay.CallBackLater)) {\n return AwvWorkflowStatusForPatientListDisplay.ReadyToSchedule;\n } else if (aWVPatientsStatus.includes(AwvWorkflowStatusForPatientListDisplay.ReadyToRemind) || aWVPatientsStatus.includes(AwvWorkflowStatusForPatientListDisplay.Scheduled)) {\n return AwvWorkflowStatusForPatientListDisplay.ReadyToRemind;\n } else if (aWVPatientsStatus.includes(AwvWorkflowStatusForPatientListDisplay.ReadyToSelfReport)) {\n return AwvWorkflowStatusForPatientListDisplay.ReadyToSelfReport;\n }\n return null;\n }\n\n getAwvPatientsStatusOnFilterChange(aWVPatientsStatus: AwvWorkflowStatusForPatientListDisplay[] | AwvWorkflowStatusForPatientListDisplay) {\n // CC-4854 - REVIEW - might not be the best way to fix\n if (!this.hasCareOrchFeatureFlagAndComponents()) {\n return null;\n }\n\n if (!Array.isArray(aWVPatientsStatus)) {\n aWVPatientsStatus = [aWVPatientsStatus];\n }\n if (aWVPatientsStatus.includes(AwvWorkflowStatusForPatientListDisplay.ReadyToSchedule) || aWVPatientsStatus.includes(AwvWorkflowStatusForPatientListDisplay.CallBackLater)) {\n return AwvWorkflowStatusForPatientListDisplay.ReadyToSchedule;\n } else if (aWVPatientsStatus.includes(AwvWorkflowStatusForPatientListDisplay.ReadyToRemind) || aWVPatientsStatus.includes(AwvWorkflowStatusForPatientListDisplay.Scheduled)) {\n return AwvWorkflowStatusForPatientListDisplay.ReadyToRemind;\n } else if (aWVPatientsStatus.includes(AwvWorkflowStatusForPatientListDisplay.ReadyToSelfReport)) {\n return AwvWorkflowStatusForPatientListDisplay.ReadyToSelfReport;\n } else if (aWVPatientsStatus.includes(AwvWorkflowStatusForPatientListDisplay.AllPatients)) {\n // if clicked AWV button for All patients\n return null;\n }\n\n return AwvWorkflowStatusForPatientListDisplay.ReadyToSchedule; // default to ReadyToSchedule button\n }\n\n private getPresetKeyForAwvButton(awvPatientsStatus: AwvWorkflowStatusForPatientListDisplay){\n switch (awvPatientsStatus) {\n case AwvWorkflowStatusForPatientListDisplay.ReadyToRemind:\n return CarePatientItem.AwvOpportunitiesReadyToRemind;\n case AwvWorkflowStatusForPatientListDisplay.ReadyToSchedule:\n return CarePatientItem.AwvOpportunitiesReadyToSchedule\n case AwvWorkflowStatusForPatientListDisplay.ReadyToSelfReport:\n return CarePatientItem.AwvOpportunitiesReadyToSelfReport\n default:\n return CarePatientItem.AwvOpportunities;\n }\n }\n\n// Due to grouping changes, Care Management is now part of chronic conditions instead of cohorts because of\n// which Care Management was shown in as a part of Chronic conditions grid where all filters are different.\n get selectedPresetIsChronicConditions(){\n return this.selectedPreset?.category === PresetCategory.ChronicConditions && (this.selectedPreset?.label !== 'Care Management' && this.selectedPreset?.name !== CarePatientItem.SmsOutreachProgram);\n }\n\n public async filterChange(preset: IPatientFilterPreset) {\n if (!preset || !this.userAccessService.hasComponent(this.userAccess, preset.componentId)){\n this.selectedPreset = null;\n this.filter = null;\n return;\n }\n if ((!preset.patientSidebar || preset.name != this.selectedPreset?.name) && this.selectedPatientId){\n this.selectedPatientId = null;\n }\n this.filterAppliedBool = false;\n const newAWVPatientsStatus = this._route.snapshot.queryParams['AWVPatientsStatus'] || null as AwvWorkflowStatusForPatientListDisplay[] | AwvWorkflowStatusForPatientListDisplay;\n\n // CC-4974: The check of presets bellow prevents a reload of data with the return; statement. Mostly used on custom new lists filtering to prevent reloading data.\n // But when we press the buttons on awv we like the data to be reloaded\n // So if newAWVPatientsStatus != this.AWVPatientsStatus that means the newAWVPatientsStatus from uri is different from the old this.AWVPatientsStatus\n // example: this.AWVPatientsStatus = Ready-to-schedule newAWVPatientsStatus=All_Patients\n // when this happens we don’t wan’t the preset check so isAWVStatusOld gets a true value.\n let isAWVStatusChanged = false;\n if (newAWVPatientsStatus && newAWVPatientsStatus != this.AWVPatientsStatus){\n isAWVStatusChanged = true; // is true when awv buttons pressed\n }\n if (!this.datesCleared && !isAWVStatusChanged && (this.selectedPreset?.name == preset.name && this.selectedPreset?.category == preset.category)) {\n // this scenario happens if filter drawer was changed OR new filter is added. Skipping this when buttons pressed in AWV\n this.selectedPreset = preset;\n if(preset.filterSettings) {\n await this.filterDataService.applyFilterSettings(this.selectedPreset, preset.filterSettings, this.gridApi, true);\n await this.matchAndUpdateFilterSettings();\n await this.filterDataService.storeFilterModelAndMatchFilterSettings(this.selectedPreset, this.gridApi);\n }\n this.filterAppliedBool = this.filterDataService.checkIfFilterIsApplied(this.selectedPreset, this.gridApi, this.columnApi);\n return;\n }\n this.datesCleared = false;\n\n this.AWVPatientsStatus = this.getAwvPatientsStatusOnFilterChange(newAWVPatientsStatus);\n if (preset.name == CarePatientItem.AwvOpportunities && this.hasCareOrchFeatureFlagAndComponents())\n preset.presetKey = this.getPresetKeyForAwvButton(this.AWVPatientsStatus); // individual filter model stored for each button\n\n this.resetColumns();\n\n this.loadingStatus = true;\n this.loadingMsg = LoadingMsgEnum.Loading;\n this.gridApi?.showLoadingOverlay();\n\n try {\n this.selectedPreset = preset;\n\n //need a better check once we get a new view\n this.sortValue = 'lastName,firstName';\n this.filter =\n !preset.dontStoreName && preset.origin != CarePatientItem.AllPatients\n ? `${preset.type},${preset.name}`\n : '';\n\n await this.refreshPatientsListAndApplyPreset();\n this.changeDetectorRef.markForCheck();\n // Set Avw columns in the filter and make the visible\n // first disable all and then make the new one visible.\n // also need to make the code renterant\n if (this.selectedPreset) {\n this.externalColumnDefs = [];\n let sortModel: Array<{ colId: string; sort: string }> = [];\n let newColumnDefs: Array = [];\n for(let c in this.selectedPreset.columns) {\n let column = this.selectedPreset.columns[c];\n const field = Object.keys(column)[0];\n const show = column[field];\n if (show) {\n let columnDefinition = _.cloneDeep(this.columnDefs.find(\n (x) => x.field === field\n ));\n if (columnDefinition) {\n if (column.sort) {\n sortModel.push({ colId: field, sort: column.sort.toString() });\n columnDefinition.sort = column.sort as any;\n }\n newColumnDefs.push(columnDefinition);\n }\n }\n }\n if (this.selectedPreset.csvAddition) {\n let additionalColumns = [];\n for (let col in this.selectedPreset.csvAddition) {\n let column = this.selectedPreset.csvAddition[col];\n additionalColumns = [\n ...additionalColumns,\n ...column.additionalGridColumns,\n ];\n }\n newColumnDefs = [...newColumnDefs, ...additionalColumns];\n }\n if (\n this.selectedPresetIsChronicConditions ||\n this.selectedPreset?.name == CarePatientItem.EdUtilization ||\n this.selectedPreset?.name == CarePatientItem.FacesheetSchedule\n ) {\n this.externalColumnDefs = newColumnDefs;\n } else {\n if (!this.gridApi) {\n this.currentColumnDefs = newColumnDefs;\n }\n this.columnApi?.resetColumnState();\n this.gridApi?.setColumnDefs(newColumnDefs);\n this.gridApi?.sizeColumnsToFit();\n \n this.columnApi?.applyColumnState({state: sortModel.length > 0 ? sortModel as any : []});\n if(this.gridApi){\n await this.filterDataService.applyStoredFilterModel(this.selectedPreset, this.gridApi);\n await this.filterDataService.applyDefaultFilterModel(this.selectedPreset, this.gridApi);\n await this.filterDataService.applyFilterSettings(this.selectedPreset, preset.filterSettings, this.gridApi, true);\n await this.matchAndUpdateFilterSettings();\n this.filterAppliedBool = this.filterDataService.checkIfFilterIsApplied(this.selectedPreset, this.gridApi, this.columnApi);\n this.setLocalColumnSettings();\n }\n }\n }\n } catch (error) {\n console.error(error);\n this.toastrMessageService.error(error);\n throw error;\n } finally {\n this.loadingStatus = false;\n if (this.patients?.length > 0) {\n this.gridApi?.hideOverlay();\n } else {\n this.loadingMsg = LoadingMsgEnum.NoData;\n this.changeDetectorRef.detectChanges();\n this.gridApi?.showNoRowsOverlay();\n }\n }\n\n if (preset.name != CarePatientItem.AwvOpportunities)\n this.auditService.auditLog(\n `Patient List Filter:${preset.name}`,\n ComponentId.PatientList,\n SubComponentId.TimeLine,\n ActionId.PHIAccess,\n null,\n this.tier,\n null\n );\n else\n this.auditService.auditLog(\n `Patient List Filter:${preset.name}`,\n ComponentId.AWVWorklist,\n SubComponentId.PatientList,\n ActionId.PHIAccess,\n null,\n this.tier,\n null\n );\n }\n /**\n * Clears the filters on different ag-grid components based on the selected category and preset\n * Also removes the stored filter model from storage to prevent re-aplying filter on page refresh\n */\n\n async clear() {\n if (this.selectedPreset.name == CarePatientItem.AwvOpportunities && this.awvWorklistService.hasDateChanged()){\n this.awvWorklistService.clearDates();\n this.datesCleared = true;\n }\n\n if (this.selectedPresetIsChronicConditions) {\n this.agGridLocalSettingsService.removeFilterModelFromLocalStorage(\n this.selectedPreset.category,\n this.selectedPreset.name,\n this.user?._id\n );\n this.DiseaseCohortGridComponent.clear();\n } else if (this.selectedPreset?.name == CarePatientItem.EdUtilization) {\n this.agGridLocalSettingsService.removeFilterModelFromLocalStorage(\n this.selectedPreset.category,\n this.selectedPreset.name,\n this.user?._id\n );\n this.EdUtilizationGridComponent.clear();\n return;\n } else if (this.selectedPreset?.name == CarePatientItem.FacesheetSchedule) {\n this.agGridLocalSettingsService.removeFilterModelFromLocalStorage(\n this.selectedPreset.category,\n this.selectedPreset.name,\n this.user?._id\n );\n this.FacesheetScheduleComponent.clear();\n } else {\n this.agGridLocalSettingsService.removeFilterModelFromLocalStorage(this.selectedPreset.category, this.selectedPreset.presetKey, this.user?._id);\n this.changeDetectorRef.detectChanges();\n this.filterDataService.setFilterModel(this.selectedPreset?.defaultFilterModel, this.gridApi);\n await this.filterDataService.storeFilterModelAndMatchFilterSettings(this.selectedPreset, this.gridApi);\n if (this.selectedPreset.filterSettings) {\n this.filterDataService.resetFilterSettings(this.selectedPreset);\n await this.matchAndUpdateFilterSettings();\n this.agGridLocalSettingsService.storeFilterSettingsInLocalStorage(\n this.selectedPreset.category,\n this.selectedPreset.presetKey,\n this.selectedPreset.filterSettings\n );\n }\n this.filterChange(this.selectedPreset);\n this.filterDataService.updateFilterSettings(this.selectedPreset, this.patients, this.gridApi);\n }\n }\n /*\n This function is to hide Filter applied message if the patient list is pre-filtered.\n But CC-3905 require the user to be notified if the patient list is pre-filtered so this method is no longer is in service.\n\n isFilterModelActive(model: { [key: string]: any }): boolean {\n if (!model) return false;\n let currentFilterModel = this.gridApi.getFilterModel();\n let modelKeys = Object.keys(model);\n let currentFilterModelKeys = Object.keys(currentFilterModel);\n let intersection = currentFilterModelKeys.filter(key => modelKeys.includes(key));\n if (intersection.length < currentFilterModelKeys.length) return false;\n for (let key in model) {\n if (!currentFilterModel[key]) return false;\n if (model[key].values) {\n intersection = model[key].values.filter(x => currentFilterModel[key]?.values?.includes(x));\n if (!_.isEqual(intersection, currentFilterModel[key]?.values)) return false;\n }\n }\n return true;\n }\n */\n filterPatients(keys: string[]): void {\n let clonedPatients = _.cloneDeep(\n this.patients.filter((patient) => {\n for (let key of keys) {\n if (!patient[key]) {\n return false;\n }\n }\n return true;\n })\n );\n this.patients = clonedPatients;\n }\n\n // =================== CLICK EVENTS ====================\n public onRowClicked(event: any): void {\n var sourceCell = event.event.srcElement;\n if (sourceCell.className.includes('cell-patient-navigation') && !event.data.withoutFacesheet) {\n this.setSelectedPatientId(event.data.chPatId);\n }\n }\n setSelectedPatientId(id: string): void {\n // PatientSideBar\n const patient = this.patients.find((p) => p.chPatId === id);\n if (\n this.featureFlagService.hasFeatureFlag(\n CareFeatureConstants.PatientSideBar\n ) &&\n this.selectedPreset.patientSidebar\n ) {\n this.selectedPatient = patient;\n this.selectedPatientId == id\n ? (this.forcePatientSideBar = { open: true })\n : (this.selectedPatientId = id);\n } else {\n this._router.navigate([`../patient/${id}`], {\n relativeTo: this._route,\n });\n }\n }\n\n public onSelectionChanged(event: any): void {\n let nodes: any[] = this.gridApi.getSelectedNodes();\n this.disableBroadcastButton.next(nodes.length == 0);\n this.disableBulkInviteButton.next(nodes.length == 0);\n }\n closeModalOnBackgroundClick(clickedElement: any, target: any): void {\n if (clickedElement.getAttribute('role') == 'modal-background') {\n this[target] = false;\n }\n }\n public exportCSV(): void {\n let selectedPatients = this.getSelectedPatients();\n if (selectedPatients.length < 1) {\n return;\n }\n const reportCohort = this.route.snapshot.queryParamMap.get('filterPreset');\n const timestamp = formatDate(new Date(), 'yyyy-MM-dd', this.locale);\n let columnKeys: string[] =\n this.agGridLocalSettingsService.getActiveColumnNames(this.columnApi);\n let csvAddition = this.selectedPreset.csvAddition;\n let csvAdditionKeys: string[] = [];\n if (csvAddition) {\n csvAdditionKeys =\n this.agGridLocalSettingsService.getCsvAdditionalColumns(csvAddition);\n selectedPatients.forEach((patient) => {\n for (let c in csvAddition) {\n let targetFieldValue = patient[c];\n let fieldSettings = csvAddition[c];\n\n if (fieldSettings.addPatientColumns) {\n fieldSettings.addPatientColumns(targetFieldValue, patient);\n }\n }\n });\n columnKeys = [...columnKeys, ...csvAdditionKeys];\n }\n\n this.gridApi.exportDataAsCsv({\n processCellCallback: (params: ProcessCellForExportParams): string => {\n switch (params.column.getColId()) {\n case 'lastActivityAt':\n case 'lastAWVDate':\n case 'lastVisit':\n return params.value\n ? formatDate(params.value, dateFormat, this.locale)\n : '';\n case 'totalSpend':\n case 'totalCost':\n return currencyCellRenderer(params);\n case 'patientId':\n case 'current_MBI':\n return this.mask.transform(params.value, 6);\n case 'openRAFWt':\n return params.value?.toFixed(3) || 'N/A';\n case 'dodBoolean':\n const dodValue = dodCellRenderer(params);\n return dodValue ? formatDate(dodValue, dateFormat, this.locale) : null;\n default:\n return params.value;\n }\n },\n\n suppressQuotes: false,\n columnSeparator: ',',\n onlySelected: true,\n columnKeys: columnKeys,\n fileName: `GeneralList_${reportCohort}_${timestamp}.csv`,\n });\n }\n\n public onFacesheetExportClick(): void {\n this.FacesheetScheduleComponent.export(\n this.facesheetVersionExpanded,\n this.tierNum,\n this.tierId\n );\n }\n public onFacesheetPrintClick(): void {\n this.FacesheetScheduleComponent.print(\n this.facesheetVersionExpanded,\n this.tierNum,\n this.tierId\n );\n }\n\n public facesheetExport(action: 'export' | 'print'): void {\n if (this.selectedPreset?.name == CarePatientItem.FacesheetSchedule) {\n action == 'export'\n ? this.onFacesheetExportClick()\n : this.onFacesheetPrintClick();\n } else {\n let selectedPatients: any[] = [];\n\n\n selectedPatients = this.getSelectedPatients();\n\n if(this.selectedPreset.name === CarePatientItem.AllPatients || this.selectedPreset.name === CarePatientItem.AwvOpportunities){\n selectedPatients = selectedPatients.filter(p=> p.assignment !== Assignment.PreStep);\n }\n\n selectedPatients = selectedPatients.map(p=>({\n patientMbi: p.mbi || p.current_MBI,\n chPatId: p.chPatId}));\n\n this.hccFacesheetScheduleService.bulkExportPrint(\n action == 'export' ? true : false,\n selectedPatients,\n this.selectedPreset.componentId ??\n CareComponentConstants.HccFacesheetBySchedule,\n null,\n null,\n this.facesheetVersionExpanded,\n this.tierNum,\n this.tierId\n );\n }\n this.facesheetVersionModal = false;\n }\n\n public onExportCSVClick(): void {\n if (this.selectedPresetIsChronicConditions) {\n this.DiseaseCohortGridComponent.exportCSV();\n } else if (this.selectedPreset?.name == CarePatientItem.EdUtilization) {\n this.EdUtilizationGridComponent.exportCSV();\n } else if (this.selectedPreset?.name == CarePatientItem.FacesheetSchedule) {\n return;\n } else {\n this.exportCSV();\n }\n }\n public externalPatientSelected(patients: Patient[]) {\n this.externalSelectedList = patients;\n this.disableBroadcastButton.next(this.externalSelectedList.length == 0);\n this.disableBulkInviteButton.next(this.externalSelectedList.length == 0);\n }\n public cancelPatientsLoadingProcess(): void {\n this.cancelLoadingBool = true;\n this.loadingStatus = false;\n this.resetFilter = true;\n this._refreshing = false;\n this.changeDetectorRef.detectChanges();\n }\n updatePatientByIdInList(patient: PatientViewModel): void {\n let trackPatient = patient.trackPatient;\n let carePatient = patient.carePatient;\n let updatedPatient: PatientViewModel;\n switch (this.selectedPreset?.name) {\n case CarePatientItem.AwvFiles:\n updatedPatient = PatientViewModel.fromIheVisit(\n patient.trackPatient?.visitInfo\n );\n break;\n case CarePatientItem.AwvOpportunities:\n updatedPatient = PatientViewModel.fromAwvAndCare(\n patient.trackAwvPatient,\n null,\n this.tier,\n this.patientDataByChPatId[patient.chPatId]\n );\n break;\n default:\n const riskProbability = Number(trackPatient?.probability?.toFixed(2));\n updatedPatient = PatientViewModel.fromTrackAndCare(\n trackPatient,\n carePatient as IWPAPIPatient,\n this.tier,\n trackPatient?.assignment,\n trackPatient?.currentRiskLevel,\n trackPatient?.predictedRiskLevel,\n riskProbability,\n trackPatient?.riskTrend\n );\n break;\n }\n if (this.selectedPreset.name == CarePatientItem.PacNavigatorProgram) {\n if (!this.patients.find((p) => p.chPatId == patient.chPatId)) {\n // clear patient ID and close sidebar if patient\n this.selectedPatientId = null;\n }\n }\n // CC-4317 don't replace the entire list, just replace the updated patient\n // This way the sort order isn't messed up.\n // REVIEW we'd perhaps want to just update the fields that were updated and not replace the\n // entire object\n const index = this.patients.findIndex((p) => p.chPatId == patient.chPatId);\n if (index < 0) {\n throw new Error(`Unexpected couldn't update patient ${updatedPatient.chPatId}`);\n }\n this.patients[index] = updatedPatient;\n // REVIEW - would be preferable to set gridOptions.getRowNodeId to be a function that returns chpatid\n // but beware that can break in certain grids e.g. the ih-awv schedule which is really by\n // appointment/visit, not patient\n this.gridApi.getModel().forEachNode((rowNode) => {\n if (rowNode.data.chPatId == patient.chPatId) {\n // Need to do setData - updating the data in the bound list isn't enough.\n rowNode.setData(updatedPatient);\n // Explicit refresh isn't needed.\n // this.gridApi.refreshCells({rowNodes: [rowNode]});\n }\n });\n this.gridApi.refreshCells({force: true});\n }\n\n // =================== BULK INVITE ====================\n public openBulkInvite(): void {\n this.newMessage.messageText = null;\n this.inviteList =\n !this.selectedPresetIsChronicConditions &&\n this.selectedPreset?.name !== CarePatientItem.EdUtilization &&\n this.selectedPreset?.name !== CarePatientItem.FacesheetSchedule\n ? this.gridApi?.getSelectedRows() || []\n : this.externalSelectedList;\n this.disableBulkInviteButton.next(this.inviteList.length == 0);\n if (this.inviteList.length == 0) return;\n this.bulkInviteModal = true;\n }\n isPatientValidForInvitation(patient: Patient): boolean {\n return (\n patient.trackPatient.email?.length > 0 &&\n patient.trackPatient.dob?.length > 0 &&\n patient.trackPatient.firstName?.length > 0 &&\n patient.trackPatient.lastName?.length > 0\n );\n }\n getValidPatientsLength(): number {\n return this.inviteList.filter((p) =>\n this.isPatientValidForInvitation(p.data)\n ).length;\n }\n closeBulkInviteModal(event: any): void {\n this.bulkInviteModal = false;\n // this.gridApi?.deselectAll();\n }\n\n // ====================== COLUMN SETTINGS ========================\n\n public fieldSorter = (fields) => (a, b) =>\n fields\n .map((o) => {\n let dir = 1;\n if (o[0] === '-') {\n dir = -1;\n o = o.substring(1);\n }\n if (a[o] && !b[o]) return -1;\n if (!a[o] && b[o]) return 1;\n let valA = typeof a[o] == 'string' ? a[o].toLowerCase() : a[o];\n let valB = typeof b[o] == 'string' ? b[o].toLowerCase() : b[o];\n return valA > valB ? dir : valA < valB ? -dir : 0;\n })\n .reduce((p, n) => (p ? p : n), 0);\n\n formatPhoneNumber = (str: string) => {\n let cleaned = ('' + str).replace(/\\D/g, '');\n let match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\n if (match) {\n return `(${match[1]}) ${match[2]}-${match[3]} ${str.slice(-1)}`;\n }\n return '';\n };\n columnEverythingChanged(event) {\n // event.source: 'contextMenu' => when user clicks on column -> Reset Columns\n // event.source: 'api' => when user updates columns from the gear button menu\n // if(event?.source == 'contextMenu') {\n // temporary removed\n // }\n if(event.source == 'contextMenu') {\n this.agGridLocalSettingsService.removeColumnSettingsFromLocalStorage(\n this.selectedPreset.name,\n this.selectedPreset.versionKey,\n this.user?._id,\n )\n this.setLocalColumnSettings()\n }\n }\n onColumnUpdated(): void {\n this.agGridLocalSettingsService.storeColumnSettingsInLocalStorage(\n this.selectedPreset.presetKey,\n this.columnApi.getColumnState(),\n this.selectedPreset.versionKey\n );\n }\n setLocalColumnSettings(): void {\n if (this.selectedPreset) {\n this.changeDetectorRef.detectChanges();\n this.agGridLocalSettingsService.setColumnSettings(\n this.columnApi,\n this.selectedPreset.name,\n this.user?._id,\n this.selectedPreset.versionKey,\n this.selectedPreset.hiddenColumnsByDefault\n );\n }\n }\n\n updateSecondaryColumnApi(columnApi: ColumnApi): void {\n this.secondaryColumnApi = columnApi;\n }\n\n autoSizeColumns() {\n var allColumnIds = [];\n this.columnApi?.getColumns().forEach(function (column) {\n allColumnIds.push(column['colId']);\n });\n this.columnApi?.autoSizeColumns(allColumnIds, false);\n }\n\n resetColumns(): void {\n this.gridApi?.setColumnDefs([]);\n this.autoSizeColumns();\n this.gridApi?.sizeColumnsToFit();\n }\n // ====================== FILTER SETTINGS ========================\n\n\n\n // need to find a way to call:\n // 1. this.matchAndUpdateFilterSettings();\n // 2. this.checkIfFilterIsApplied(this.gridApi);\n\n async updatePresetFilterSettings(filterSettings: FilterSettings) {\n this.selectedPreset.filterSettings = filterSettings;\n await this.filterDataService.applyFilterSettings(this.selectedPreset, this.selectedPreset?.filterSettings, this.gridApi, true, true);\n this.filterAppliedBool = this.filterDataService.checkIfFilterIsApplied(this.selectedPreset, this.gridApi, this.columnApi);\n this.storeFilterModel(this.selectedPreset);\n }\n /** Decides whether to show the \"filter applied\" and \"clear\" elements\n * in the UI by updating the view model property filterAppliedBool\n */\n checkIfFilterIsApplied(gridApi: GridApi): void {\n this.filterAppliedBool = this.filterDataService.checkIfFilterIsApplied(this.selectedPreset, gridApi, this.columnApi);\n }\n\n matchAndUpdateFilterSettings(shouldStoreFilterModel?: boolean): void {\n this.changeDetectorRef.detectChanges();\n this.filterDataService.matchFilterSettingsWithCurrentFilterModel(this.selectedPreset, this.gridApi, shouldStoreFilterModel);\n }\n storeFilterModel(preset: IPatientFilterPreset) {\n this.filterDataService.storeFilterModelAndMatchFilterSettings(preset, this.gridApi);\n }\n // ====================== MISC SETTINGS ========================\n\n async getUserInfo() {\n this.user = await this.authService.getWellpepperUserInfo();\n }\n\n setAWVPatientsStatusURLParams(linkText: string, value: AwvWorkflowStatusForPatientListDisplay[]) {\n const queryParams = { AWVPatientsStatus: value};\n\n this.sendAWVPatientStatusLinkClickedEvent(linkText, value);\n\n this._router.navigate([], {\n queryParams: queryParams,\n queryParamsHandling: 'merge', // remove to replace all query params by provided\n });\n }\n\n private sendAWVPatientStatusLinkClickedEvent(linkText, value: AwvWorkflowStatusForPatientListDisplay[]):void {\n try {\n const AWVPatientsStatus = value.length > 0 ? value[0] : AwvWorkflowStatusForPatientListDisplay.AllPatients;\n\n this.linkClickedEventsService.sendLinkClickedEvent({\n filterPreset: this._route.snapshot.queryParams['filterPreset'],\n linkText,\n targetPage: '/care/patients',\n AWVPatientsStatus\n });\n } catch (error) {\n // do nothing\n console.log('Error sending data to mixpanel', error);\n }\n }\n\n}\n\nexport type CellAction = (params) => void;\n","
\n
\n \n
\n \n
\n
\n\n \n
\n \n
\n
\n\n
\n \n
\n \n
\n
\n
\n
\n","import { Component, Inject, InjectionToken, Output, OnInit, EventEmitter } from '@angular/core';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { PatientEngagementComponentIds } from '@shared/enums';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { Patient } from '@shared/models/patient';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { takeUntil } from 'rxjs/operators';\n\nexport interface NavigationPortalData {\n emitter: any;\n patient: Patient;\n}\nexport const NAVIGATION_PORTAL_DATA = new InjectionToken('NAVIGATION_PORTAL_DATA');\n@Component({\n selector: 'patient-action-dropdown',\n templateUrl: './patient-action-dropdown.component.html',\n styleUrls: ['./patient-action-dropdown.component.scss'],\n host : {\n class: 'scopeSelectDropdownWrapper'\n }\n})\nexport class PatientActionDropdownComponent extends KillSubscriptions implements OnInit {\n @Output() newItemEvent = new EventEmitter();\n private emitter: any;\n patient: Patient;\n modalTest: boolean = false\n counter: number = 0;\n loadingPdf:boolean = false;\n /** Wellpepper org id */\n orgId: string;\n tier: IHierarchyTier;\n PatientEngagementComponentIds=PatientEngagementComponentIds;\n detailedPdf: boolean = false;\n\n constructor(\n @Inject(NAVIGATION_PORTAL_DATA) data: NavigationPortalData,\n private patientService : PatientService,\n private hierarchyTierService: HierarchyTierService\n ) {\n super();\n this.emitter = data.emitter;\n this.patient = data.patient;\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger)).subscribe(async (tier) => {\n this.tier = tier;\n if (tier?.selectedTierId) {\n this.orgId = await(this.patientService.getWpOrgIdFromTierId(tier.selectedTierId));\n } else {\n this.orgId = null;\n }\n });\n }\n\n ngOnInit(): void {\n }\n emitAction(action_target: string): void{\n this.emitter(action_target)\n }\n get isPatientInvited():boolean {\n return this?.patient?.carePatient?.accountType === 'patient';\n }\n printPdfClick() {\n this.openTrackPatientFacesheetPdf(this.patient.trackPatient?.chPatId)\n }\n public openTrackPatientFacesheetPdf(CHPatID:string){\n {\n this.loadingPdf = true;\n this.patientService.postTrackPatientFacesheetPdf(CHPatID, this.tier.selectedTierId, this.tier.selectedItem.tier, this.detailedPdf).subscribe(res => {\n console.log(res);\n const url = window.URL.createObjectURL(res);\n window.open(url,'_blank');\n }, error => {\n // using tap to log it in the service\n //console.error(error);\n //this.ToastrMessageService.error(error);\n }, ()=>{\n this.loadingPdf = false;\n })\n }\n\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'DXCodeFormat'\n})\n\n// Formats the DXCode in the standard formatting \n// ex: input E11649 -> E11.649\nexport class DXCodeFormatPipe implements PipeTransform {\n transform(dx:string): string {\n if (!dx) return '';\n dx = dx.replace(/\\s+/g, ''); // remove all whitespace \n if (dx.length > 3 ){\n return `${dx.substring(0, 3)}.${dx.substring(3)}` \n } else {\n return dx;\n }\n }\n}\n","
\n
\n
\n
\n OPEN GAPS\n
\n \n
\n
\n
\n
\n\n \n\n \n\n
\n
\n
\n
\n
CLOSED GAPS
\n
\n \n
\n
\n
\n
\n
None
\n\n \n
    0\">\n
  • \n
    \n Marked as Closed via Assessment\n
    \n\n
      \n
    • \n
      \n
      \n \n \n \n
      \n\n
      \n {{diag.dx | DXCodeFormat}}: {{diag.desc}}\n \n {{ diag.isChronic ? 'Chronic' : 'Acute' }}\n \n
      \n\n
      \n
      \n \n |\n {{diag.providername | titlecase}}, {{diag.dos | date:'MM/dd/yy'}}\n
      \n
      \n
      \n
    • \n
    \n
  • \n
\n\n \n
    0\">\n
  • \n
    \n Marked as Not Applicable via Assessment\n
    \n\n
      \n
    • \n
      \n
      \n \n \n \n
      \n\n
      \n {{diag.dx | DXCodeFormat}}: {{diag.desc}}\n \n {{ diag.isChronic ? 'Chronic' : 'Acute' }}\n \n
      \n\n
      \n
      \n \n |\n {{diag.providername | titlecase}}, {{diag.dos | date:'MM/dd/yy'}}\n
      \n
      \n
      \n
    • \n
    \n
  • \n
\n\n \n
    \n
  • \n
    \n Closed via claim\n
    \n\n
      \n
    • \n
      \n
      \n \n \n \n
      \n\n
      \n {{diag.dx | DXCodeFormat}}: {{diag.desc}}\n \n {{ diag.isChronic ? 'Chronic' : 'Acute' }}\n \n\n\n
      \n\n
      \n
      {{diag.providername | titlecase}}, {{diag.dos | date:'MM/dd/yy'}}\n
      \n
      \n
      \n\n\n
    • \n
    \n
  • \n
\n\n \n
    \n
  • \n
    \n Closed due to hierarchy\n
    \n\n
      \n
    • \n
      \n
      \n \n \n \n
      \n\n
      \n {{diag.dx | DXCodeFormat}}: {{diag.desc}}\n \n {{ diag.isChronic ? 'Chronic' : 'Acute' }}\n \n
      \n\n
      \n
      {{diag.providername | titlecase}}, {{diag.dos | date:'MM/dd/yy'}}\n
      \n
      \n
      \n
    • \n
    \n
  • \n
\n
\n
","import { Component, OnInit, Input } from '@angular/core';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { Patient } from '@shared/models/patient';\nimport {\n Diagnosis,\n Diseasegroup,\n FacesheetInteractiveConditionRequest,\n Facesheets,\n Interaction\n} from '@api/track/models';\nimport { FacesheetService } from '@api/track/services';\nimport { ExtendedDiagnosis } from '../facesheet-extended-models/diagnosis';\nimport { ExtendedDiseasegroup } from '../facesheet-extended-models/diseasegroup';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport { ErrorHandlerService } from '@shared/services/logging/error-handler.service';\nimport { forkJoin } from 'rxjs';\nimport { debounce } from 'lodash';\n\nexport enum DxStatusID {\n MarkedNotApplicableViaAssessment = 1,\n MarkedClosedViaAssessment = 2,\n ClosedByClaim = 3,\n ClosedByHierarchy = 4\n}\n\n@Component({\n selector: 'coach-patient-facesheet-drag-drop',\n templateUrl: './patient-facesheet-drag-drop.component.html',\n styleUrls: ['./patient-facesheet-drag-drop.scss']\n})\nexport class PatientFacesheetDragDropComponent implements OnInit {\n private _patient: Patient;\n\n @Input()\n set patient(value: Patient) {\n this._patient = value;\n if (value && value.trackPatient && value.trackPatient.chPatId) {\n this.chPatId = parseInt(value.trackPatient.chPatId);\n this.loadFacesheet();\n }\n }\n\n get patient(): Patient {\n return this._patient;\n }\n\n public loading = true;\n openGaps: Array = [];\n closedByClaim: Array = [];\n closedByHierarchy: Array = [];\n closedNotApplicable: Array = [];\n closedViaAssessment: Array = [];\n chPatId: number;\n showNoneStatus: boolean;\n\n constructor(\n private _facesheetService: FacesheetService,\n private toastrMessageService: ToastrMessageService,\n private errorHandlerService: ErrorHandlerService\n ) {}\n\n markAsClosed(item: ExtendedDiagnosis): void {\n if (!item.disabled) {\n this.loading = true;\n item.disabled = true; // prevent double click\n const bodyPayload: FacesheetInteractiveConditionRequest = {\n chPatID: this.chPatId,\n dxCode: item.dx,\n dxStatusID: DxStatusID.MarkedClosedViaAssessment, // 0,1,2,3\n undo: 0\n };\n\n this._facesheetService.facesheetInteractiveConditionPost({ body: bodyPayload }).subscribe(\n () => {\n this.loadFacesheetDebounced();\n },\n errors => {\n this.toastrMessageService.error(errors);\n this.errorHandlerService.handleError(errors);\n }\n );\n }\n }\n\n markAsNotApplicable(item: ExtendedDiagnosis): void {\n if (!item.disabled) {\n this.loading = true;\n item.disabled = true;\n const bodyPayload: FacesheetInteractiveConditionRequest = {\n chPatID: this.chPatId,\n dxCode: item.dx,\n dxStatusID: DxStatusID.MarkedNotApplicableViaAssessment,\n undo: 0\n };\n\n this._facesheetService.facesheetInteractiveConditionPost({ body: bodyPayload }).subscribe(\n () => {\n this.loadFacesheetDebounced();\n },\n errors => {\n this.toastrMessageService.error(errors);\n this.errorHandlerService.handleError(errors);\n }\n );\n }\n }\n\n undoClosed(item: ExtendedDiagnosis): void {\n if (!item.disabled) {\n this.loading = true;\n item.disabled = true; // prevent double click\n const bodyPayload: FacesheetInteractiveConditionRequest = {\n chPatID: this.chPatId,\n dxCode: item.dx,\n dxStatusID: DxStatusID.MarkedClosedViaAssessment,\n undo: 1\n };\n\n this._facesheetService.facesheetInteractiveConditionPost({ body: bodyPayload }).subscribe(\n () => {\n this.loadFacesheetDebounced();\n },\n errors => {\n this.toastrMessageService.error(errors);\n this.errorHandlerService.handleError(errors);\n }\n );\n }\n }\n\n undoNotApplicable(item: ExtendedDiagnosis): void {\n if (!item.disabled) {\n this.loading = true;\n item.disabled = true; // prevent double click\n const bodyPayload: FacesheetInteractiveConditionRequest = {\n chPatID: this.chPatId,\n dxCode: item.dx,\n dxStatusID: DxStatusID.MarkedNotApplicableViaAssessment,\n undo: 1\n };\n\n this._facesheetService.facesheetInteractiveConditionPost({ body: bodyPayload }).subscribe(\n () => {\n this.loadFacesheetDebounced();\n },\n errors => {\n this.toastrMessageService.error(errors);\n this.errorHandlerService.handleError(errors);\n }\n );\n }\n }\n\n showTooltip(groupIdx: number, diagIdx: number) {\n this.openGaps[groupIdx].diagnoses[diagIdx].tooltipInteractions = true;\n }\n\n hideTooltip(groupIdx: number, diagIdx: number) {\n this.openGaps[groupIdx].diagnoses[diagIdx].tooltipInteractions = false;\n }\n\n showTooltipClosed(groupIdx: number, diagIdx: number) {\n this.openGaps[groupIdx].diagnoses[diagIdx].tooltipMarkAsClosed = true;\n }\n\n hideTooltipClosed(groupIdx: number, diagIdx: number) {\n this.openGaps[groupIdx].diagnoses[diagIdx].tooltipMarkAsClosed = false;\n }\n\n showTooltipNotApplicable(groupIdx: number, diagIdx: number) {\n this.openGaps[groupIdx].diagnoses[diagIdx].tooltipMarkAsNotApplicable = true;\n }\n\n hideTooltipNotApplicable(groupIdx: number, diagIdx: number) {\n this.openGaps[groupIdx].diagnoses[diagIdx].tooltipMarkAsNotApplicable = false;\n }\n\n ngOnInit() {}\n\n private loadFacesheetDebounced = debounce(() => {\n this.loadFacesheet();\n }, 200);\n\n private loadFacesheet(): void {\n this.loading = true;\n\n forkJoin({\n chronicCondition: this._facesheetService.facesheetConditionsGet({\n ChPatId: this.chPatId,\n IsChronic: true\n }),\n acuteCondition: this._facesheetService.facesheetConditionsGet({\n ChPatId: this.chPatId,\n IsChronic: false\n })\n }).subscribe(\n ({ chronicCondition, acuteCondition }) => {\n this.openGaps = [];\n this.closedByClaim = [];\n this.closedByHierarchy = [];\n this.closedViaAssessment = [];\n this.closedNotApplicable = [];\n\n this.updateFacesheet(chronicCondition?.facesheet, acuteCondition?.facesheet);\n\n this.setNoneStatus();\n this.loading = false;\n },\n errors => {\n this.toastrMessageService.error(errors);\n this.errorHandlerService.handleError(errors);\n this.loading = false;\n }\n );\n }\n\n\n private setNoneStatus() {\n if (\n this.closedViaAssessment?.length === 0 &&\n this.closedNotApplicable?.length === 0 &&\n this.closedByClaim?.length === 0 &&\n this.closedByHierarchy?.length === 0\n ) {\n this.showNoneStatus = true;\n } else {\n this.showNoneStatus = false;\n }\n }\n\n // Groups together by groupname chronic and acute diagnosis\n mergeArrays(arr1: Diseasegroup[], arr2: Diseasegroup[]): Diseasegroup[] {\n arr2.forEach(item => {\n const existingIndex = arr1.findIndex(res => res.groupname === item.groupname);\n if (existingIndex !== -1) {\n // set it if it doesn't exist\n arr1[existingIndex].diagnoses = arr1[existingIndex].diagnoses.concat(item.diagnoses);\n } else {\n // merge if it does...\n arr1.push({ ...item });\n }\n });\n arr1.sort((a, b) => a.groupid - b.groupid);\n return arr1;\n }\n\n // Removes null values from tooltips\n cleanupTooltips(input: ExtendedDiseasegroup[]): ExtendedDiseasegroup[] {\n input.forEach((item: ExtendedDiseasegroup) => {\n item.diagnoses.forEach((item2: ExtendedDiagnosis) => {\n item2.disabled = false;\n item2.interactions = item2.interactions.filter(\n (item3: Interaction) => item3 != null && item3.interactionname != null\n );\n });\n });\n return input;\n }\n\n private getExtendedDiagnosis(input: Diagnosis[]): ExtendedDiagnosis[] {\n const extendedDiagnosis = input as ExtendedDiagnosis[];\n extendedDiagnosis.forEach(extendedDiag => (extendedDiag.disabled = false)); // set to false to avoid accidental double clicks on undo button\n return extendedDiagnosis;\n }\n\n updateFacesheet(facesheetChronic: Facesheets[] = [], facesheetAcute: Facesheets[] = []) {\n try {\n // Open\n const chronicOpen = facesheetChronic.find(item => item.status === 'Open');\n if (chronicOpen && chronicOpen.diseasegroup) {\n this.openGaps = chronicOpen.diseasegroup as ExtendedDiseasegroup[];\n }\n const acuteOpen = facesheetAcute.find(item => item.status === 'Open');\n if (acuteOpen && acuteOpen.diseasegroup) {\n this.openGaps = this.mergeArrays(this.openGaps, acuteOpen.diseasegroup) as ExtendedDiseasegroup[];\n }\n this.openGaps = this.cleanupTooltips(this.openGaps);\n\n // Claim\n const chronicClosedByClaim = facesheetChronic.find(item => item.status === 'Closed By Claim');\n if (chronicClosedByClaim && chronicClosedByClaim.diseasegroup) {\n this.closedByClaim = chronicClosedByClaim.diseasegroup;\n }\n const acuteClosedByClaim = facesheetAcute.find(item => item.status === 'Closed By Claim');\n if (acuteClosedByClaim && acuteClosedByClaim.diseasegroup) {\n this.closedByClaim = this.mergeArrays(this.closedByClaim, acuteClosedByClaim.diseasegroup);\n }\n\n // Hierarchy\n const chronicClosedByHierarchy = facesheetChronic.find(item => item.status === 'Closed By Hierarchy');\n if (chronicClosedByHierarchy && chronicClosedByHierarchy.diseasegroup) {\n this.closedByHierarchy = chronicClosedByHierarchy.diseasegroup;\n }\n\n const acuteClosedByHierarchy = facesheetAcute.find(item => item.status === 'Closed By Hierarchy');\n if (acuteClosedByHierarchy && acuteClosedByHierarchy.diseasegroup) {\n this.closedByHierarchy = this.mergeArrays(this.closedByHierarchy, acuteClosedByHierarchy.diseasegroup);\n }\n\n // Marked as Closed via Assessment\n const chronicClosedGroup = facesheetChronic.find(obj => obj.status === 'Marked as Closed via Assessment');\n if (chronicClosedGroup && chronicClosedGroup.diseasegroup) {\n chronicClosedGroup.diseasegroup.forEach(dg => {\n this.closedViaAssessment.push(...this.getExtendedDiagnosis(dg.diagnoses));\n });\n }\n\n const acuteClosedGroup = facesheetAcute.find(obj => obj.status === 'Marked as Closed via Assessment');\n if (acuteClosedGroup && acuteClosedGroup.diseasegroup) {\n acuteClosedGroup.diseasegroup.forEach(dg => {\n this.closedViaAssessment.push(...this.getExtendedDiagnosis(dg.diagnoses));\n });\n }\n\n // Marked as Not Applicable via Assessment\n const chronicNotApplicableGroup = facesheetChronic.find(obj => obj.status === 'Marked as Not Applicable via Assessment');\n if (chronicNotApplicableGroup && chronicNotApplicableGroup.diseasegroup) {\n chronicNotApplicableGroup.diseasegroup.forEach(item => {\n this.closedNotApplicable.push(...this.getExtendedDiagnosis(item.diagnoses));\n });\n }\n const acuteNotApplicableGroup = facesheetAcute.find(obj => obj.status === 'Marked as Not Applicable via Assessment');\n if (acuteNotApplicableGroup && acuteNotApplicableGroup.diseasegroup) {\n acuteNotApplicableGroup.diseasegroup.forEach(item => {\n this.closedNotApplicable.push(...this.getExtendedDiagnosis(item.diagnoses));\n });\n }\n } catch (errors) {\n this.toastrMessageService.error(errors);\n this.errorHandlerService.handleError(errors);\n }\n }\n}\n","
\n \n
\n
\n
\n Chronic Conditions\n
\n
\n
\n\n \n\n
\n \n
\n \n \n
\n
\n
\n Last year\n
\n
\n {{patient.trackPatient.pyRaf | number : '1.3-3'}}\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n This year\n
\n
\n {{patient.trackPatient.raF_YTD | number : '1.3-3'}}\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n {{(patient.trackPatient.raF_YTD + patient.trackPatient.openRAFWt).toFixed(3) | number : '1.3-3'}}\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n\n\n \n\n \n \n \n\n \n \n
\n
\n
{{opportunity.hccDescription}}
\n \n
\n
{{hccCode.code}}: {{hccCode.name}}
\n
{{opportunity.providerName | titlecase}}, {{opportunity.dateOfService | date:'MM/dd/yyyy'}}
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
{{childOpportunity.hccDescription}}
\n \n
\n
{{hccCode.code}}: {{hccCode.name}}
\n
{{childOpportunity.providerName | titlecase}}, {{childOpportunity.dateOfService | date:'MM/dd/yyyy'}}
\n
\n
\n
\n
\n\n
\n\n \n
\n DISEASE INTERACTIONS\n
\n \n \n
\n
\n
{{opportunity.hccDescription}}
\n
\n
\n
\n\n \n \n
\n POTENTIAL NEW OPPORTUNITIES\n
\n\n \n
\n
+\n 1.051
\n
\n
Title
\n
\n
Some comment
\n
Name, Date
\n
\n
\n
\n
\n\n\n \n \n
\n CLOSED GAPS\n
\n\n \n
\n
✓ 1.051
\n
\n
Title
\n
\n
Some comment
\n
Name, Date
\n
\n
\n
\n
\n
\n\n\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { Patient } from '@shared/models/patient';\nimport { forkJoin } from 'rxjs';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { HccCodingOpportunity } from '@shared/models/hcc-care-gaps';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport { ErrorHandlerService } from '@shared/services/logging/error-handler.service';\nimport { HccPatient } from '@api/track/models/hcc-patient';\nimport { FacesheetService } from '@api/track/services/facesheet.service';\nimport { Facesheets } from '@api/track/models';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\n\n@Component({\n selector: 'coach-patient-chronic-coding-opportunities',\n templateUrl: './patient-chronic-coding-opportunities.component.html',\n styleUrls: ['./patient-chronic-coding-opportunities.component.scss']\n})\nexport class PatientChronicCodingOpportunitiesComponent implements OnInit {\n @Input() patient: Patient;\n @Input() tier: IHierarchyTier;\n @Input() mobileScreenSize: boolean;\n\n progress = 75;\n showClosedGaps = false;\n showPotentialOpportunities = false;\n showMoreOpportunities = false;\n opportunities = []; // TODO: create opportunity model\n chronicOpportunities: HccCodingOpportunity[] = [];\n diseaseInteractions: HccCodingOpportunity[] = [];\n hccPatient: HccPatient;\n FacesheetV28: string = CareFeatureConstants.FacesheetV28;\n\n get tierId(): string {\n return this?.tier?.selectedTierId;\n }\n get tierNum(): number {\n return this?.tier?.tier;\n }\n\n constructor(\n private _patientService: PatientService,\n private _facesheetService: FacesheetService,\n private toastrMessageService: ToastrMessageService,\n private errorHandlerService: ErrorHandlerService,\n private featureFlagService: FeatureFlagService\n ) {}\n\n ngOnInit(): void {\n this.loadHealthData();\n }\n\n private async loadHealthData(): Promise {\n if (this.patient) {\n const hasFacesheetV28Flag = await this.featureFlagService.hasFeatureFlag(this.FacesheetV28);\n if (!hasFacesheetV28Flag && this.patient?.trackPatient?.chPatId) {\n forkJoin({\n reqChronicOpportunities: this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'opportunities',\n true\n ),\n reqAcuteOpportunities: this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'opportunities',\n false\n ),\n hccPatient: this._facesheetService.facesheetGet({\n Id: this.patient.trackPatient.mbi,\n ChPatId: parseInt(this.patient.trackPatient.chPatId)\n }) \n }).subscribe(\n ({ reqChronicOpportunities, reqAcuteOpportunities, hccPatient }) => {\n this.chronicOpportunities = reqChronicOpportunities.filter(co => !co.isInteraction) || [];\n this.diseaseInteractions =\n reqChronicOpportunities\n .filter(co => co.isInteraction)\n .concat(reqAcuteOpportunities?.filter(co => co.isInteraction) || []) || [];\n this.hccPatient = hccPatient;\n },\n errors => {\n this.toastrMessageService.error(errors);\n this.errorHandlerService.handleError(errors);\n }\n );\n }\n }\n }\n}\n","
\n \n
\n
\n
\n HEALTH MAINTENANCE\n
\n
\n
\n \n\n\n \n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n Annual Wellness Visit \n ({{maintenance.awvLastVisit ? getDateDifference(maintenance.awvLastVisit) : 'No Record Found'}}) \n \n
\n {{getCodeAndProviderNameAsString(awvDetails.procCodeList, awvDetails.provider)}}{{maintenance.awvLastVisit | date:'MM/dd/yy'}}\n
\n
\n \n \n Advance Care Planning \n ({{ maintenance.acpLastVisit ? getDateDifference(maintenance.acpLastVisit) : 'No Record Found'}})\n \n
\n {{getCodeAndProviderNameAsString(acpDetails.procCodeList, acpDetails.provider)}}{{maintenance.acpLastVisit | date:'MM/dd/yy'}}\n
\n
\n \n \n Chronic Care Management \n ({{ maintenance.ccmLastVisit ? getDateDifference(maintenance.ccmLastVisit) : 'No Record Found'}}) \n \n
\n {{getCodeAndProviderNameAsString(ccmDetails.procCodeList, ccmDetails.provider)}}{{maintenance.ccmLastVisit | date:'MM/dd/yy'}}\n
\n \n CCM\n Eligible\n
\n
\n
\n
\n\n
","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { Patient } from '@shared/models/patient';\nimport { HccHealthMaintenanceDetails } from '@shared/models/hcc-care-gaps';\nimport { forkJoin } from 'rxjs';\nimport moment from 'moment';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport { ErrorHandlerService } from '@shared/services/logging/error-handler.service'\n\n\n@Component({\n selector: 'coach-patient-health-maintenance',\n templateUrl: './patient-health-maintenance.component.html',\n styleUrls: ['./patient-health-maintenance.component.scss']\n})\n\nexport class PatientHealthMaintenanceComponent implements OnInit, OnChanges {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n\n public loading = true;\n\n public maintenance: any = {};\n public maintenanceDetailsByDateDesc: any[] = [];\n\n acpCategory = 'ACP';\n awvCategory = 'AWV';\n ccmCategory = 'CCM';\n\n acpDetails: HccHealthMaintenanceDetails;\n awvDetails: HccHealthMaintenanceDetails;\n ccmDetails: HccHealthMaintenanceDetails;\n today: moment.Moment;\n\n constructor(\n private _patientService: PatientService, private toastrMessageService: ToastrMessageService, private errorHandlerService: ErrorHandlerService\n ) {\n this.today = moment();\n }\n\n ngOnInit(): void {\n if (this.patient) this.loading = true;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.loadHealthData();\n }\n\n private OnDataReceived() {\n this.getDetails();\n }\n\n private getDetails() {\n // ACP\n this.acpDetails = this.maintenanceDetailsByDateDesc.find(\n (y) => y.category == this.acpCategory\n );\n // AWV\n this.awvDetails = this.maintenanceDetailsByDateDesc.find(\n (y) => y.category == this.awvCategory\n );\n \n // CCM\n this.ccmDetails = this.maintenanceDetailsByDateDesc.find(\n (y) => y.category == this.ccmCategory\n );\n }\n\n private loadHealthData() {\n if (this.patient) {\n if (this.patient?.trackPatient?.chPatId) {\n forkJoin({\n reqHealthMaintenance: this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'healthMaintenance'\n ),\n reqHealthMaintenanceDetails:\n this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'healthMaintenanceDetails'\n ),\n }).subscribe(\n ({\n reqHealthMaintenance,\n reqHealthMaintenanceDetails,\n\n }) => {\n this.maintenance = reqHealthMaintenance || {};\n // sort details by date so the most recent is first, getDetails() will use the first matching items in the list\n this.maintenanceDetailsByDateDesc = reqHealthMaintenanceDetails?.sort((a, b) => moment(b.lastDate).diff(moment(a.lastDate))) || [];\n },\n (errors) => {\n this.toastrMessageService.error(errors)\n this.errorHandlerService.handleError(errors)\n },\n () => {\n this.OnDataReceived();\n }\n );\n }\n }\n } \n getDateDifference(date: string): string {\n let result = ''\n var diffDuration = moment.duration(moment().diff(date));\n let years = diffDuration.years()\n let months = diffDuration.months()\n let days = diffDuration.days() \n if (years) {\n result += `${years}y`\n }\n if (months) {\n result += `${result.length > 0 ? ' ' : ''}${months}m`\n }\n if (!years && !months && days) {\n result = \"<1mo\"\n }\n return result.length ? result + \" ago\" : \"No Record Found\";\n };\n public getDaysDifference(date: string): boolean {\n let years =\n this.today.diff(date, 'years', false) > 0\n ? `${this.today.diff(date, 'years', false)}yr`\n : '';\n return (years.length >= 1);\n }\n\n public getFormattedName(name: string): string {\n if (name.indexOf(',') != -1) {\n let segments = name.split(',');\n let reformattedName = segments[1] + ' ' + segments[0];\n return this.toTitleCase(reformattedName.trim());\n }\n else {\n return this.toTitleCase(name);\n }\n }\n toTitleCase(str: string): string {\n if(!str) return '';\n return str.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n }\n getCodeAndProviderNameAsString(code: string, providerName: string): string {\n if (!code && !providerName) return '';\n return (code ? `${code} - ` : '') + (providerName ? this.getFormattedName(providerName) : 'unknown') + ', ';\n }\n}\n","
\n\n \n
\n
\n
\n \n \n UTILIZATION\n \n
\n
\n
\n\n \n
\n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{( (!costUtilization.edVisits) || costUtilization.edVisits == 0)? 0 : costUtilization.edVisits}}\n \n Emergency Department Visits (15 mo)\n
\n \n \n \n \n
\n
\n \n {{costUtilization.edLastVisitDxCode}} : {{costUtilization.edLastVisitDxDesc}}\n \n
\n
{{toTitleCase(costUtilization.edLastVisitFacility)}}, {{costUtilization.edLastVisitDOS | date:'MM/dd/yy'}}\n
\n
\n No Record Found\n
\n {{(!costUtilization.inpatientVisits || (costUtilization.inpatientVisits == 0))? 0 :\n costUtilization.inpatientVisits }}\n \n Inpatient Stay (15 mo)\n
\n \n \n \n \n
\n
\n {{costUtilization.ipLastVisitDxCode}} : {{costUtilization.ipLastVisitDxDesc}}\n
\n
{{toTitleCase(costUtilization.ipLastVisitFacility)}}, {{costUtilization.ipLastVisitDOS | date:'MM/dd/yy'}}\n
\n
\n No Record Found\n
\n \n {{ costUtilization.postAcute }}, Post Acute Care (6 mo)\n \n {{(!costUtilization.postAcute || costUtilization.postAcute == 0)? 0 : costUtilization.postAcute}}\n \n \n Post Acute Care (6 mo)\n
\n \n \n \n \n
\n
\n {{costUtilization.pacLastVisitDxCode}} : {{costUtilization.pacLastVisitDxDesc}}\n
\n
{{toTitleCase(costUtilization.pacLastVisitFacility)}}, {{costUtilization.pacLastVisitDOS |\n date:'MM/dd/yy'}}
\n
\n No Record Found\n
\n
\n
\n","import { Component, OnInit, Input, OnChanges } from '@angular/core';\nimport { PatientService, ITrackApiPatient } from '@shared/services/patient/patient.service';\nimport { Patient } from '@shared/models/patient';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport moment from 'moment';\nimport { forkJoin } from 'rxjs';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\n\n@Component({\n selector: 'coach-patient-utilization',\n templateUrl: './patient-utilization.component.html',\n styleUrls: ['./patient-utilization.component.scss']\n})\nexport class PatientUtilizationComponent implements OnInit {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n @Input() public tp: ITrackApiPatient;\n public loading = true;\n today: moment.Moment;\n public facesheet: any = {};\n public costUtilization: any = {};\n public isLoaded = false;\n constructor(\n private _patientService: PatientService,\n private auditService: AuditService\n ) {\n this.today = moment();\n }\n\n\n ngOnInit(): void {\n if (this.patient) this.loading = true;\n }\n\n ngOnChanges() {\n this.loadHealthData();\n }\n\n private loadHealthData() {\n if (this.patient) {\n if (this.patient?.trackPatient?.chPatId) {\n forkJoin({\n reqFacesheet: this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n ''\n ),\n reqCostUtilization: this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'costUtilization'\n ),\n }).subscribe(\n ({\n reqFacesheet,\n reqCostUtilization\n }) => {\n this.facesheet = reqFacesheet || {};\n this.costUtilization = reqCostUtilization || {};\n },\n (errors) => {\n console.log('ERROR =>', errors);\n },\n () => {\n this.isLoaded = true;\n }\n );\n\n } else {\n this.isLoaded = false;\n }\n\n }\n }\n toTitleCase(str: string): string {\n if(!str) return '';\n return str.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n }\n\n isNumber(element: any): boolean {\n return !isNaN(element);\n }\n} \n","
\n \n
\n
\n
\n Acute Episodes\n
\n
\n
\n\n \n \n
\n
\n
{{opportunity.hccDescription}}
\n \n
\n
{{hccCode.code}}: {{hccCode.name}}
\n
{{opportunity.providerName | titlecase}}, {{opportunity.dateOfService | date:'MM/dd/yyyy'}}
\n
\n
\n
\n
\n\n
\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { Patient } from '@shared/models/patient';\nimport { forkJoin } from 'rxjs';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { HccCodingOpportunity } from '@shared/models/hcc-care-gaps';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport { ErrorHandlerService } from '@shared/services/logging/error-handler.service'\n\n@Component({\n selector: 'coach-patient-acute-coding-opportunities',\n templateUrl: './patient-acute-coding-opportunities.component.html',\n styleUrls: ['./patient-acute-coding-opportunities.component.scss']\n})\nexport class PatientAcuteCodingOpportunitiesComponent implements OnInit {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n diseaseInteractions: HccCodingOpportunity[] = [];\n acuteOpportunities: HccCodingOpportunity[] = [];\n constructor(private _patientService: PatientService, private toastrMessageService: ToastrMessageService, private errorHandlerService: ErrorHandlerService) { }\n\n ngOnInit(): void {\n }\n ngOnChanges(changes: SimpleChanges): void {\n this.loadHealthData()\n }\n private loadHealthData() {\n if (this.patient) {\n if (this.patient?.trackPatient?.chPatId) {\n forkJoin({\n reqAcuteOpportunities: this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'opportunities',\n false\n ),\n }).subscribe(\n ({\n reqAcuteOpportunities\n }) => {\n this.acuteOpportunities = reqAcuteOpportunities.filter(co => !co.isInteraction) || [];\n },\n (errors) => {\n this.toastrMessageService.error(errors)\n this.errorHandlerService.handleError(errors)\n },\n );\n }\n }\n }\n}\n","
\n \n
\n
\n
\n QUALITY\n
\n
\n
\n\n\n\n\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n\n\n \n \n \n \n \n \n \n
\n \n \n Mammogram\n ({{ qualityData.mammogram_timePeriod }}) \n \n
\n \n {{qualityData.mammogramLastVisitPROCCode}} -\n \n \n {{getFormattedName(qualityData.mammogramLastVisitFacility)}},\n {{ qualityData.mammogram | date:'MM/dd/yy' }}\n
\n
\n \n \n Colorectal Cancer Screening \n ({{ qualityData.colonoscopy_timePeriod }}) \n \n
\n \n {{qualityData.colonoscopyLastVisitPROCCode}} -\n \n \n {{getFormattedName(qualityData.colonoscopyLastVisitFacility)}},\n {{ qualityData.colonoscopy | date:'MM/dd/yy' }}\n
\n
\n \n \n Flu Vaccine \n ({{ qualityData.fluVac_timePeriod }}) \n \n
\n \n {{qualityData.fluLastVisitPROCCode}} -\n \n \n {{getFormattedName(qualityData.fluLastVisitFacility)}},\n {{ qualityData.fluVac | date:'MM/dd/yy' }}\n
\n
\n \n \n Pneumococcal Vaccine \n ({{ qualityData.pneumococcalVac_timePeriod }}) \n \n
\n \n {{qualityData.pneumoniaLastVisitPROCCode}} -\n \n \n {{getFormattedName(qualityData.pneumoniaLastVisitFacility)}},\n {{ qualityData.pneumococcalVac | date:'MM/dd/yy' }}\n
\n
\n
\n\n
","import { Component, Input, OnInit } from '@angular/core';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { Patient } from '@shared/models/patient';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport moment from 'moment';\n\n@Component({\n selector: 'coach-patient-quality-opportunities',\n templateUrl: './patient-quality-opportunities.component.html',\n styleUrls: ['./patient-quality-opportunities.component.scss']\n})\nexport class PatientQualityOpportunitiesComponent implements OnInit {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n qualityData: { [key: string]: string } = {};\n constructor(private _patientService: PatientService) { \n \n }\n\n ngOnInit(): void { \n }\n ngOnChanges(): void {\n this.getPreventiveData();\n }\n async getPreventiveData() {\n this.qualityData = await this._patientService?.getTrackPatientFacesheet(\n this.patient?.trackPatient.chPatId,\n 'preventive'\n )\n this.qualityData.colonoscopy_timePeriod = this.getDateDifference(this.qualityData.colonoscopy)\n this.qualityData.fluVac_timePeriod = this.getDateDifference(this.qualityData.fluVac) \n this.qualityData.mammogram_timePeriod = this.getDateDifference(this.qualityData.mammogram) \n this.qualityData.pneumococcalVac_timePeriod = this.getDateDifference(this.qualityData.pneumococcalVac) \n } \n getDateDifference(date: string): string {\n let result = '';\n var diffDuration = moment.duration(moment().diff(moment(date, \"MM/DD/YYYY\")));\n let years = diffDuration.years()\n let months = diffDuration.months()\n let days = diffDuration.days() \n if (years) {\n result += `${years}y`\n }\n if (months) {\n result += `${result.length > 0 ? ' ' : ''}${months}m`\n }\n if (!years && !months && days) {\n result = \"<1mo\"\n }\n return result.length ? result + \" ago\" : \"No Record Found\";\n };\n public getFormattedName(name: string): string {\n if (name.indexOf(',') != -1) {\n let segments = name.split(',');\n let reformattedName = segments[1] + ' ' + segments[0];\n return this.toTitleCase(reformattedName.trim());\n }\n else {\n return this.toTitleCase(name);\n }\n }\n toTitleCase(str: string): string {\n if(!str) return '';\n return str.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n }\n}\n","\n
\n
\n
\n
Population Health Initiatives
\n
\n
\n
Health Maintenance
\n
    \n
  • \n
    \n
    Annual Wellness Visit
    \n
    0)}\">\n 0\">\n ({{getDateDifference(maintenance.awvLastVisit)}})\n {{maintenance.awvLastVisit | date:'MM/dd/yyyy'}}\n 0)\">--/--/----\n
    \n
    \n
      \n
    • \n
      \n
      {{awvDetails.procCodeList}} on {{awvDetails.lastDate | date:'MM/dd/yyyy'}} with\n {{awvDetails.provider ? awvDetails.provider : 'unknown'}}
      \n
      \n
    • \n
    \n
  • \n \n
  • \n
    \n
    Advance Care Planning
    \n
    0)}\">\n 0\">\n ({{getDateDifference(maintenance.acpLastVisit)}})\n {{maintenance.acpLastVisit| date:'MM/dd/yyyy'}}\n 0)\">--/--/----\n
    \n
    \n
      \n
    • \n
      \n
      {{acpDetails.procCodeList}} on {{acpDetails.lastDate | date:'MM/dd/yyyy'}} with\n {{acpDetails.provider ? acpDetails.provider : 'unknown'}}
      \n
      \n
    • \n
    \n
  • \n
\n
\n
\n
Chronic Care Management
\n
    \n
  • \n
    \n
    Last 6 Months
    \n
    0)}\">\n 0\">\n ({{getDateDifference(maintenance.ccmLastVisit)}})\n {{maintenance.ccmLastVisit| date:'MM/dd/yyyy'}}\n 0)\">--/--/----\n
    \n
    \n
      \n
    • \n
      \n
      {{ details.procCodeList }} on {{ details.lastDate | date:'MM/dd/yyyy' }} with {{ details.provider\n ? details.provider : 'unknown' }}
      \n
      \n
    • \n
    \n
  • \n
\n
\n
\n
\n
\n
Preventive Care + Utilization
\n
\n
\n
Preventive Care
\n
    \n
  • \n
    \n
    {{vaccine.name}}
    \n
    0)}\">\n 0\">\n ({{getDateDifference(vaccine.receivedDate)}})\n {{vaccine.receivedDate| date:'MM/dd/yyyy'}}\n 0)\">--/--/----\n
    \n
    \n
  • \n
\n
\n
\n
Utilization
\n
    \n
  • \n
    \n
    Health Costs (12 mo)
    \n
    {{costUtilization.totalCost | currency}}
    \n
    \n
  • \n
  • \n
    \n
    ED Visits (15 mo)
    \n
    {{costUtilization.edVisits}}
    \n
    \n
  • \n
  • \n
    \n
    Inpatient Visits (15 mo)
    \n
    {{costUtilization.inpatientVisits}}
    \n
    \n
  • \n
  • \n
    \n
    Post Acute (6 mo)
    \n
    {{costUtilization.postAcute}}
    \n
    \n
  • \n
\n
\n
\n
\n
\n
Chronic Conditions
\n
\n
\n
Weight
\n
HCC/ICD-Codes
\n
\n\n \n
\n
0}\">\n
{{opportunity.weight}}
\n
\n
{{opportunity.hccId}} - {{opportunity.hccDescription}}
\n
\n {{opportunity.dateOfService | date:'MM/dd/yyyy'}}\n {{opportunity.providerName | titlecase}}\n
\n
    \n
  • {{code.code}} - {{code.name}}
  • \n
\n
\n
\n 0\">\n
\n
{{opportunityChild.weight}}
\n
\n
{{opportunityChild.hccId}} - {{opportunityChild.hccDescription}}
\n
\n {{opportunityChild.dateOfService | date:'MM/dd/yyyy'}}\n {{opportunityChild.providerName | titlecase}}\n
\n
    \n
  • {{code.code}} - {{code.name}}
  • \n
\n
\n
\n
\n
\n
\n\n
\n
{{interaction.weight}}
\n
\n
{{interaction.hccDescription}}
\n
\n
\n\n
\n
{{totalChronicWeight | number:'1.3-3'}}
\n
Total Outstanding Chronic Closure Weight
\n
\n\n
\n
\n
\n
Acute Episodes
\n
\n
\n
Weight
\n
HCC/ICD-Codes
\n
\n\n \n
\n
0}\">\n
{{opportunity.weight}}
\n
\n
{{formatAcuteOpportunity(opportunity)}}
\n
\n {{opportunity.dateOfService | date:'MM/dd/yyyy'}}\n {{opportunity.providerName | titlecase}}\n
\n
\n
    \n
  • {{code.code}} - {{code.name}}
  • \n
\n
\n
\n
\n 0\">\n
\n
{{opportunityChild.weight}}
\n
\n
{{opportunityChild.hccId}} - {{opportunityChild.hccDescription}}
\n
\n {{opportunityChild.dateOfService | date:'MM/dd/yyyy'}}\n {{opportunityChild.providerName | titlecase}}\n
\n
    \n
  • {{code.code}} - {{code.name}}
  • \n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n \n\n\n \n \n \n\n \n \n \n \n \n\n\n\n\n\n \n\n\n\n \n \n\n\n \n \n\n \n \n\n
\n The data provided herein are solely for informational and consideration purposes only. The displayed patient\n information is based on historical claims data related to that patient. These data do not purport to require, nor\n should be construed as requiring, any specific clinical treatment, standard of care, or course of action for the\n displayed patient. All patient care decisions are at the independent clinical discretion and judgement of the\n applicable patient's treating clinician. Providers should independently assess whether a patient's clinical\n conditions are accurate and should be documented.\n
\n\n
\n
\n Coach Disclaimer: \n \n As noted in the legal disclaimer, this facesheet is \"solely for information and consideration purposes only.\"\n The\n purpose of the interaction component of this facesheet is to allow for the provider and care team to correct\n diagnosis codes which have been presented based upon historic information. This will improve the accuracy of\n future facesheet data. All applicable diagnoses should be reviewed and entered within your own electronic\n medical\n record. Information entered into Coach does not constitute billing codes and does not go to CMS.\n \n
\n
\n Legal Disclaimer: \n \n The data provided herein are solely for informational and consideration purposes only. The displayed patient\n information is based on historical claims data related to that patient. These data do not purport to require,\n nor\n should be construed as requiring, any specific clinical treatment, standard of care, or course of action for the\n displayed patient. All patient care decisions are at the independent clinical discretion and judgement of the\n applicable patient's treating clinician. Providers should independently assess whether a patient's clinical\n conditions are accurate and should be documented.\n \n
\n
\n
","import { Component, OnInit, Input, OnChanges } from '@angular/core';\nimport { forkJoin } from 'rxjs';\nimport { PatientService, ITrackApiPatient } from '@shared/services/patient/patient.service';\nimport { Patient } from '@shared/models/patient';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport moment from 'moment';\nimport {\n HccVaccination,\n HccHealthMaintenanceDetails,\n HccCodingOpportunity,\n} from '@shared/models/hcc-care-gaps';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\nimport {\n SubComponentId,\n ComponentId,\n ActionId,\n} from '@shared/models/audit-constants';\nimport { CareFeatureConstants } from \"@shared/models/module-constants\";\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\n\n@Component({\n selector: 'patient-care-gaps',\n templateUrl: './patient-care-gaps.component.html',\n})\nexport class PatientCareGapsComponent implements OnInit, OnChanges {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n @Input () public tp : ITrackApiPatient; \n @Input() public mobileScreenSize: boolean;\n\n public loading = true;\n\n private get tierId() {\n return this?.tier?.selectedTierId;\n }\n private get tierNum() {\n return this?.tier?.tier;\n }\n\n public facesheet: any = {};\n public maintenance: any = {};\n public costUtilization: any = {};\n public preventive: any = {};\n public maintenanceDetails: any[] = [];\n\n public isLoaded = false;\n acpCategory = 'ACP';\n awvCategory = 'AWV';\n ccmCategory = 'CCM';\n\n currentVaccinations: HccVaccination[] = [];\n acpDetails: HccHealthMaintenanceDetails;\n awvDetails: HccHealthMaintenanceDetails;\n ccmDetails: HccHealthMaintenanceDetails[];\n\n chronicOpportunities: HccCodingOpportunity[] = [];\n acuteOpportunities: HccCodingOpportunity[] = [];\n chronicInteractions: HccCodingOpportunity[];\n totalChronicWeight: number;\n isChronicLoaded: boolean;\n isAcuteLoaded: boolean;\n today: moment.Moment;\n showDetails: boolean = true;\n FacesheetUIUpdatesFeatureFlag: string = CareFeatureConstants.FacesheetUIUpdatesFlag;\n FacesheetV28: string = CareFeatureConstants.FacesheetV28;\n\n progress: number = 75;\n constructor(\n private _patientService: PatientService,\n private auditService: AuditService,\n private featureFlagService: FeatureFlagService\n ) {\n this.today = moment();\n }\n\n ngOnInit(): void {\n if (this.patient) this.loading = true;\n }\n\n ngOnChanges() {\n this.loadHealthData();\n }\n private OnDataReceived() {\n this.currentVaccinations = [];\n this.currentVaccinations.push({\n name: 'Colonoscopy Screening',\n receivedDate: this.preventive.colonoscopy,\n });\n this.currentVaccinations.push({\n name: 'Flu Vaccine',\n receivedDate: this.preventive.fluVac,\n });\n this.currentVaccinations.push({\n name: 'Pneumococcal Vaccine',\n receivedDate: this.preventive.pneumococcalVac,\n });\n let mammogram: HccVaccination = {\n name: 'Mammogram',\n receivedDate: this.preventive.mammogram,\n };\n if (this.facesheet.gender == 'Female')\n this.currentVaccinations.unshift(mammogram);\n this.getDetails();\n this.filterCodingOpportunties();\n }\n private getDetails() {\n this.acpDetails = this.maintenanceDetails.find(\n (y) => y.category == this.acpCategory\n );\n this.awvDetails = this.maintenanceDetails.find(\n (y) => y.category == this.awvCategory\n );\n this.ccmDetails = this.maintenanceDetails.filter(\n (y) => y.category == this.ccmCategory\n );\n }\n filterInteractions(\n opportunities: HccCodingOpportunity[]\n ): HccCodingOpportunity[] {\n let interactions: HccCodingOpportunity[] = [];\n interactions = opportunities.filter((x) => x.isInteraction);\n interactions.forEach((x) => {\n const i = opportunities.indexOf(x);\n opportunities.splice(i, 1);\n });\n return interactions;\n }\n\n private filterCodingOpportunties() {\n this.totalChronicWeight = this.chronicOpportunities.reduce(\n (prev, next) => prev + next.weight,\n 0\n );\n this.chronicInteractions = this.filterInteractions(\n this.chronicOpportunities\n );\n }\n private loadHealthData() {\n if (this.patient && !this.featureFlagService.hasFeatureFlag(this.FacesheetUIUpdatesFeatureFlag)) {\n if (this.patient?.trackPatient?.chPatId) {\n this.isLoaded = false;\n forkJoin({\n reqFacesheet: this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n ''\n ),\n reqHealthMaintenance: this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'healthMaintenance'\n ),\n reqCostUtilization: this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'costUtilization'\n ),\n reqPreventive: this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'preventive'\n ),\n reqHealthMaintenanceDetails:\n this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'healthMaintenanceDetails'\n ),\n reqChronicOpportunities:\n this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'opportunities',\n true\n ),\n reqAcuteOpportunities: this._patientService.getTrackPatientFacesheet(\n this.patient.trackPatient.chPatId,\n 'opportunities',\n false\n ),\n }).subscribe(\n ({\n reqFacesheet,\n reqHealthMaintenance,\n reqCostUtilization,\n reqPreventive,\n reqHealthMaintenanceDetails,\n reqChronicOpportunities,\n reqAcuteOpportunities,\n }) => {\n this.facesheet = reqFacesheet || {};\n this.maintenance = reqHealthMaintenance || {};\n this.costUtilization = reqCostUtilization || {};\n this.preventive = reqPreventive || {};\n this.maintenanceDetails = reqHealthMaintenanceDetails || [];\n this.chronicOpportunities = reqChronicOpportunities || [];\n this.acuteOpportunities = reqAcuteOpportunities || [];\n },\n (errors) => {\n console.log('ERROR =>', errors);\n this.isLoaded = true;\n },\n () => {\n this.isLoaded = true;\n this.OnDataReceived();\n }\n );\n this.auditService.auditLog(\n 'Patient Care Gaps',\n ComponentId.PatientCareGaps,\n SubComponentId.PatientDetail,\n ActionId.PHIAccess,\n this.patient.chPatId,\n this.tier,\n null\n );\n } else {\n this.isLoaded = false;\n }\n this.auditService.auditLog(\n 'Patient Care Gaps',\n ComponentId.PatientCareGaps,\n SubComponentId.PatientDetail,\n ActionId.PHIAccess,\n this.patient.chPatId,\n this.tier,\n null\n );\n }\n }\n\n public getDateDifference(date: string): string {\n let years =\n this.today.diff(date, 'years', false) > 0\n ? `${this.today.diff(date, 'years', false)}yr`\n : '';\n let months =\n this.today.diff(date, 'months', false) % 12 > 0\n ? `${this.today.diff(date, 'months', false) % 12}mo`\n : '';\n let days =\n this.today.diff(date, 'months', false) < 1\n ? `${this.today.diff(date, 'days', false) % 30} days`\n : '';\n return `${years}${\n years.length > 0 && months.length > 0 ? ', ' : ''\n }${months}${days}`;\n }\n\n public formatAcuteOpportunity(\n acuteOpportunity: HccCodingOpportunity\n ): string {\n return !acuteOpportunity.isInteraction\n ? `${acuteOpportunity.hccId} - ${acuteOpportunity.hccDescription}`\n : `${acuteOpportunity.hccDescription}`;\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth-service/auth.service';\nimport { AzureApiBase } from '../azure-api/azure-api-base';\nimport { PatientTimeline } from './patient-timeline-item';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PatientTimelineService extends AzureApiBase {\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/patients/timeline');\n }\n\n getTimelineItems(chPatId: number, supplementalId: number): Observable {\n const params = new HttpParams().set('chPatId', chPatId.toString())\n .append('supplementalId', supplementalId.toString());\n return this.getAll(null, params);\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Dates of ServiceProvider (NPI) / FacilityDiagnosis / Procedures
\n
\n
{{ item.claimFromDate | date:'MMM d' }}\n
{{ item.renderingName | titlecase }} ({{ item.renderingNPI }})
\n
\n
{{ item.primaryDx }} {{ item.primaryDxDesc ? ': ' + item.primaryDxDesc : '' }}
\n
\n
    \n
  • {{ item.procedureCode }} {{ item.procedureDesc ? ': ' + item.procedureDesc : '' }}
  • \n
\n
\n
","import { Component, OnInit, Input } from '@angular/core';\nimport { DatePipe, TitleCasePipe } from '@angular/common';\nimport { Patient } from '@shared/models/patient';\nimport { PatientTimelineService } from '@shared/services/patient/patient-timeline.service';\n\nimport { Subscription } from 'rxjs';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\nimport {\n SubComponentId,\n ComponentId,\n ActionId,\n} from '@shared/models/audit-constants';\nimport { PatientService } from '@shared/services/patient/patient.service';\n\n@Component({\n selector: 'coach-chart-timeline',\n templateUrl: './chart-timeline.component.html',\n providers: [DatePipe],\n})\nexport class ChartTimelineComponent implements OnInit {\n @Input() public tier: IHierarchyTier;\n\n public timelineItems = [];\n public timlineItemsSub: Subscription;\n private get tierId() {\n return this?.tier?.selectedTierId;\n }\n @Input() set patient(value: Patient) {\n if (value != null) {\n this.timlineItemsSub = this.patientTimelineService\n .getTimelineItems(\n parseInt(value.trackPatient?.chPatId),\n value.trackPatient?.supplementalID\n )\n .subscribe((item) => {\n this.timelineItems = item;\n let currentMonth: string;\n let previousMonth: string;\n this.timelineItems.forEach((timelineItem) => {\n currentMonth = this.datePipe.transform(\n timelineItem.claimFromDate,\n 'MMMM y'\n );\n if (currentMonth !== previousMonth) {\n timelineItem.newMonthSeparator = true;\n } else {\n timelineItem.newMonthSeparator = false;\n }\n previousMonth = this.datePipe.transform(\n timelineItem.claimFromDate,\n 'MMMM y'\n );\n });\n });\n //should we also get the TierId?\n //(detail, compId, subComp, actionId, chPatId, tierId, orgId);\n this.auditService.auditLog(\n 'Patient Timeline',\n ComponentId.Dashboard,\n SubComponentId.TimeLine,\n ActionId.PHIAccess,\n value.trackPatient?.chPatId,\n this.tier,\n null\n );\n }\n }\n\n constructor(\n private patientTimelineService: PatientTimelineService,\n private datePipe: DatePipe,\n private auditService: AuditService,\n private PatientService: PatientService\n ) {}\n\n ngOnInit(): void {}\n}\n","
\n
\n \n
\n
\n {{viewDateHeader}}\n \n
\n
\n \n
\n
\n
\n \n \n
\n\n\n\n
\n
\n\n
\n
\n
\n
{{sr.name}}\n
\n
\n
\n {{ordinal(i+1)}} survey\n
\n
\n {{selectedDay}}\n
\n
\n
\n
\n
\n
\n
\n
\n
{{line.question}}\n
\n
\n
\n
{{line.answer}}
\n
\n
\n
\n\n
\n
\n\n
\n
\n
\n
No surveys completed on this date\n
\n
\n
\n
\n
\n {{selectedDay}}\n
\n
\n
\n\n
\n
\n\n
\n \n \n
\n
\n
\n
","import {\n Component,\n Input,\n OnInit,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { CalendarEvent, CalendarView } from 'angular-calendar';\nimport { Subject } from 'rxjs';\nimport { startOfDay, endOfDay } from 'date-fns';\n\nimport moment from 'moment';\nimport { ToastrService } from 'ngx-toastr';\n\n@Component({\n selector: 'coach-chart-surveys',\n templateUrl: './chart-surveys.component.html',\n styleUrls: ['./chart-surveys.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartSurveysComponent implements OnInit {\n @Input() public patient: Patient;\n view: CalendarView = CalendarView.Month;\n CalendarView = CalendarView;\n viewDate: Date = new Date();\n selectedDay: string;\n showEmptyDayMessage: boolean = false;\n surveys: any[];\n showModalSurvey: boolean = false;\n refresh: Subject = new Subject();\n events: CalendarEvent[] = [];\n activeDayIsOpen: boolean = false;\n clipboardText: string = '';\n viewDateHeader: string;\n public cssBottom = '0';\n\n constructor(\n private ref: ChangeDetectorRef,\n private patientService: PatientService,\n private toastr: ToastrService\n ) {}\n\n private get patientId() {\n if (!this.patient) return false;\n return this?.patient.carePatient._id;\n }\n\n private get limit() {\n return 3000;\n }\n\n private get skip() {\n return 0;\n }\n\n private get color() {\n return {\n primary: '#df442f',\n secondary: '#FAE3E3',\n };\n }\n\n private get where() {\n const momentViewDate = moment(this.viewDate);\n const startDate = momentViewDate.startOf('month').format('YYYY-MM-DD');\n const endDate = momentViewDate.endOf('month').format('YYYY-MM-DD');\n return escape(\n `{\"$and\":[{\"reportingDate\":{\"$gte\":\"${startDate}\"}},{\"reportingDate\":{\"$lte\":\"${endDate}\"}}]}`\n );\n }\n\n public closeSurvey() {\n this.showModalSurvey = false;\n }\n\n async dayClicked({ date, events }: { date: Date; events: CalendarEvent[] }) {\n this.viewDate = date;\n this.selectedDay = moment(date).format('MMM DD, YYYY');\n this.surveys = [];\n this.showEmptyDayMessage = false;\n this.showModalSurvey = true;\n this.clipboardText = '';\n await Promise.all(\n events.map(async (event) => {\n let responseSurvey = await this.patientService.getSurvey(\n event.id.toString()\n );\n const responses = event.meta;\n const newSurvey = {\n name: responseSurvey.name,\n lines: [],\n };\n this.clipboardText += `${responseSurvey.name}\\n`;\n let allItems = responseSurvey.pages\n .map((page) => {\n return page.items;\n })\n .reduce((pre, cur) => {\n return pre.concat(cur);\n });\n\n allItems.forEach((item) => {\n const answer = responses[item.qid];\n const line = {\n question: item.text,\n answer: answer,\n };\n if (answer) {\n newSurvey.lines.push(line);\n this.clipboardText += `${item.text} ${answer} \\n`;\n }\n });\n\n this.surveys.push(newSurvey); \n })\n );\n // CC-2030 fix. if popup has more than 20 lines extend overlay \n const numberOfLines =\n this.surveys\n .map((x) => x.lines)\n .reduce((acc, element) => acc + element.length, 0) +\n this.surveys.length * 2;\n this.cssBottom = numberOfLines > 20 ? 'auto' : '0';\n\n\n if (this.surveys.length === 0) this.showEmptyDayMessage = true;\n this.ref.detectChanges();\n }\n\n async handleEvent(status, event) {\n this.viewDate = event.start;\n this.selectedDay = moment(event.start).format('MMM DD, YYYY');\n this.surveys = [];\n this.showModalSurvey = true;\n this.showEmptyDayMessage = false;\n\n // console.log('event', event);\n\n let responseSurvey = await this.patientService.getSurvey(\n event.id.toString()\n );\n const responses = event.meta;\n const newSurvey = {\n name: responseSurvey.name,\n lines: [],\n };\n let allItems = responseSurvey.pages\n .map((page) => {\n return page.items;\n })\n .reduce((pre, cur) => {\n return pre.concat(cur);\n });\n\n allItems.forEach((item) => {\n const answer = responses[item.qid];\n const line = {\n question: item.text,\n answer: answer,\n };\n if (answer) newSurvey.lines.push(line);\n });\n\n this.surveys.push(newSurvey);\n this.ref.detectChanges();\n }\n\n copyMessage(val: string) {\n const selBox = document.createElement('textarea');\n selBox.style.position = 'fixed';\n selBox.style.left = '0';\n selBox.style.top = '0';\n selBox.style.opacity = '0';\n selBox.value = this.clipboardText;\n document.body.appendChild(selBox);\n selBox.focus();\n selBox.select();\n document.execCommand('copy');\n document.body.removeChild(selBox);\n this.toastr.success('The text has been copied to your clipboard');\n }\n\n ordinal(number) {\n switch (number) {\n case 1:\n case 21:\n return number + 'st';\n break;\n case 2:\n case 22:\n return number + 'nd';\n break;\n case 3:\n case 23:\n return number + 'rd';\n break;\n default:\n return number + 'th';\n }\n }\n\n setView(view: CalendarView) {\n this.view = view;\n }\n\n previous() {\n if (this.patientId) {\n this.getData();\n }\n }\n\n next() {\n if (this.patientId) {\n this.getData();\n }\n }\n\n ngOnChanges() {\n if (this.patientId) {\n this.getData();\n }\n }\n\n ngOnInit(): void {}\n\n // Main method for filling the events for each day in the calendar\n async getData() {\n this.viewDateHeader = moment(this.viewDate).format('MMMM YYYY');\n this.events = [];\n let reportsData = await this.patientService.getSurveyResponses(\n this.patientId,\n this.limit,\n this.skip,\n this.where\n );\n // console.log(reportsData);\n\n for (let item in reportsData) {\n this.events.push({\n id: reportsData[item].surveyTypeId,\n title: reportsData[item].surveyType,\n start: startOfDay(new Date(reportsData[item].createdAt)),\n end: endOfDay(new Date(reportsData[item].createdAt)),\n color: this.color,\n meta: reportsData[item].responses,\n });\n }\n this.refresh.next();\n }\n}\n","\n
\n
\n \n
\n
\n
\n
{{activity.date|date :\"MMM dd, yyyy hh:mm\"}}
\n
{{activity.title}}
\n
\n
\n
{{detail.label}}
\n
{{detail.content}}
\n
\n
\n
\n
","import { Component, OnInit, Input, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { Patient } from '@shared/models/patient';\nimport {Activity, Detail} from '@shared/models/activity';\nimport { DatePipe } from '@angular/common';\nimport {UserActivity, Login, ReadSession} from '@shared/models/user-activity';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { wpapi } from \"@hcd-caravanhealth/pkg-wptypes\";\n\n@Component({\n selector: 'coach-patient-activity',\n templateUrl: './patient-activity.component.html',\n styleUrls: ['./patient-activity.component.scss']\n})\n\nexport class PatientActivityComponent implements OnInit {\n @Input() public patient: Patient & { activities?: Array};\n @Input() public tier: IHierarchyTier;\n constructor(\n private _patientService: PatientService,\n private _route: ActivatedRoute) {\n }\n\n private get tierId() {\n return this?.tier?.selectedTierId;\n } \n ngOnInit(): void { \n\n }\n\n}\n","
0\">Unhandled ({{patient.alerts.unhandled.length}})
\n
0\">\n
\n
\n
{{alert.filterDesc}}
\n
{{alert.updatedAt | date}}
\n
\n
\n

{{alert.desc}}

\n
\n
\n
{{alert.completion.systolic}}/{{alert.completion.diastolic}}
\n
{{alert.completion.bloodSugar}} {{alert.completion.bloodSugarUnits}}
\n
Weight: {{alert.completion.weight}} {{alert.completion.weightUnits}}
\n
\n
\n \n \n \n \n \n \n
\n
\n \n
{{alert.inactiveReasonText?alert.inactiveReasonText.length:0}}/{{commentMaxLength}}
\n
\n
\n \n \n
\n
\n
\n
0\">Previously Handled ({{patient.alerts.handled.length}})
\n
0\">\n
\n
\n
{{alert.filterDesc}}
\n
{{alert.createdAt | date}}
\n
\n
\n

{{alert.desc}}

\n
\n
\n
{{alert.completion.systolic}}/{{alert.completion.diastolic}}
\n
{{alert.completion.bloodSugar}} {{alert.completion.bloodSugarUnits}}
\n
Weight: {{alert.completion.weight}} {{alert.completion.weightUnits}}
\n
\n
\n

Dismissed by {{dismissedByNameForAlert(alert)}}

\n

{{alert.inactiveAt | date}}

\n
\n
\n \n \n \n \n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n\n\n
\n
\n
\n
\n
Copy to Clipboard
\n
Click the copy button to copy the below text to the clipboard
\n
\n
\n
\n

Name: {{patient.lastName}} {{patient.firstName}}

\n

DOB: {{patient.dob | date }}

\n

MRN: {{ patient.mrn | mask: 6 }}

\n

Alert: {{copyToClipBoardAlert.filterDesc}}

\n

Date Reported: {{copyToClipBoardAlert.createdAt | date: \"medium\"}}

\n

Description: {{copyToClipBoardAlert.desc}}

\n

Pressure: {{copyToClipBoardAlert.completion.systolic}}/{{copyToClipBoardAlert.completion.diastolic}}

\n

Sugar: {{copyToClipBoardAlert.completion.bloodSugar}} {{copyToClipBoardAlert.completion.bloodSugarUnits}}

\n

Weight: {{copyToClipBoardAlert.completion.weight}} {{copyToClipBoardAlert.completion.weightUnits}}

\n

Dismissed by {{dismissedByNameForAlert(copyToClipBoardAlert)}}

\n

Dismissed at {{copyToClipBoardAlert.inactiveAt | date: \"medium\"}}

\n

Action done: \n Phoned patient\n Sent message to patient\n Handed off to PA/MD\n Reviewed\n Ignored\n

\n

0\">Comment: {{copyToClipBoardAlert.inactiveReasonText}}

\n
\n
\n \n \n
\n
\n
\n
","import { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { PatientAlertService } from '@shared/services/patient-alert/patient-alert.service';\nimport {\n faPhone,\n faSms,\n faMinus,\n faUserMd,\n faCheckSquare,\n faTimesCircle,\n} from '@fortawesome/free-solid-svg-icons';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\nimport {\n SubComponentId,\n ComponentId,\n ActionId,\n} from '@shared/models/audit-constants';\nimport { defaultInputLength } from '@shared/modules/patient-facesheet/patient-facesheet.constants';\nimport moment from 'moment';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\n@Component({\n selector: 'patient-alerts',\n templateUrl: './patient-alerts.component.html',\n styleUrls: ['./patient-alerts.component.scss'],\n})\nexport class PatientAlertsComponent implements OnInit, OnChanges {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n private get tierId() {\n return this?.tier?.selectedTierId;\n }\n selectedAlert: wpapi.model.Alert = null;\n faMinus = faMinus;\n faPhone = faPhone;\n faSms = faSms;\n faUserMd = faUserMd;\n faCheckSquare = faCheckSquare;\n faTimesCircle = faTimesCircle;\n copyToClipBoardAlert: any = null;\n actionsList = {\n phone: 'Phoned patient',\n message: 'Sent message to patient',\n handoff: 'Handed off to PA/MD',\n reviewed: 'Reviewed',\n ignore: 'Ignored',\n };\n mask = new MaskPipe();\n private currentUser: wpapi.model.Professional;\n commentMaxLength = defaultInputLength.comment;\n constructor(\n private PatientAlertService: PatientAlertService,\n private AuthService: AuthService,\n private auditService: AuditService,\n private patientService: PatientService\n ) {\n this.getCurrentUserInfo();\n }\n\n ngOnInit(): void {}\n ngOnChanges(): void {\n //(detail, compId, subComp, actionId, chPatId, tierId, orgId);\n if (this.patient)\n this.auditService.auditLog(\n 'Patient Alerts',\n ComponentId.Events,\n SubComponentId.AlertManagement,\n ActionId.PHIAccess,\n this.patient.chPatId,\n this.tier,\n null\n );\n }\n private async getCurrentUserInfo() {\n this.currentUser = await this.AuthService.getWellpepperUserInfo();\n }\n selectAlert(alert: wpapi.model.Alert): void {\n if (this.selectedAlert !== alert) {\n this.selectedAlert = alert;\n }\n }\n deselectAlert(): void {\n this.selectedAlert = null;\n }\n async dismissAlert(alert: wpapi.model.Alert) {\n let updatedAlertConfirmation =\n await this.PatientAlertService.updatePatientAlert(\n this.tierId,\n this.patient.carePatient._id,\n alert\n );\n\n if (updatedAlertConfirmation) {\n this.deselectAlert();\n this.patient.alerts.unhandled = this.patient.alerts.unhandled.filter(\n (a) => a !== alert\n );\n alert.inactiveByFullName = `${\n this.currentUser.lastName && this.currentUser.firstName\n ? `${this.currentUser.lastName} ${this.currentUser.firstName}`\n : `${this.currentUser.email}`\n }`;\n alert.inactiveAt = new Date().toString();\n alert.isActive = false;\n console.log('alert =>', alert);\n this.patient.alerts.handled.push(alert);\n this.patient.alerts.handled.sort((a, b) => {\n if (moment(a.createdAt).isAfter(moment(b.createdAt))) return -1;\n else return 1;\n });\n //(detail, compId, subComp, actionId, chPatId, tierId, orgId);\n this.auditService.auditLog(\n 'Patient Alert Dissimal',\n ComponentId.Events,\n SubComponentId.AlertManagement,\n ActionId.PHIAccess,\n this.patient.chPatId,\n this.tier,\n null\n );\n }\n }\n openModalCopyToClipBoard(alert: wpapi.model.Alert): void {\n this.copyToClipBoardAlert = alert;\n }\n copyToClipBoardText(): void {\n let result = `\n Name: ${this.patient.lastName} ${this.patient.firstName}\n DOB: ${this.patient.dob} \\n\n ${\n this.patient.mrn ? `MRN: ${this.mask.transform(this.patient.mrn, 6)}` : ''\n }\n Alert: ${this.copyToClipBoardAlert.filterDesc}\n Date Reported: ${new Date(\n this.copyToClipBoardAlert.createdAt\n ).toLocaleString()}\n Description: ${this.copyToClipBoardAlert.desc}\n `;\n this.copyToClipBoardAlert.completion &&\n this.copyToClipBoardAlert.completion.systolic != null &&\n this.copyToClipBoardAlert.completion.diastolic != null\n ? (result += `Pressure: ${this.copyToClipBoardAlert.completion.systolic}/${this.copyToClipBoardAlert.completion.diastolic}\\n`)\n : null;\n this.copyToClipBoardAlert.completion &&\n this.copyToClipBoardAlert.completion.bloodSugar != null\n ? (result += `Sugar: ${this.copyToClipBoardAlert.completion.bloodSugar} ${this.copyToClipBoardAlert.completion.bloodSugarUnits}\\n`)\n : null;\n this.copyToClipBoardAlert.completion &&\n this.copyToClipBoardAlert.completion.weight != null\n ? (result += `Weight: ${this.copyToClipBoardAlert.completion.weight} ${this.copyToClipBoardAlert.completion.weightUnits}\\n`)\n : null;\n !this.copyToClipBoardAlert.isActive &&\n this.copyToClipBoardAlert.inactiveByFullName\n ? (result += `Dismissed by: ${this.dismissedByNameForAlert(\n this.copyToClipBoardAlert\n )} \\n`)\n : null;\n !this.copyToClipBoardAlert.isActive && this.copyToClipBoardAlert.inactiveAt\n ? (result += `Dismissed at: ${new Date(\n this.copyToClipBoardAlert.inactiveAt\n ).toLocaleString()} \\n`)\n : null;\n !this.copyToClipBoardAlert.isActive &&\n this.actionsList[this.copyToClipBoardAlert.inactiveReason]\n ? (result += `Action done: ${\n this.actionsList[this.copyToClipBoardAlert.inactiveReason]\n } \\n`)\n : null;\n this.copyToClipBoardAlert.inactiveReasonText &&\n this.copyToClipBoardAlert.inactiveReasonText.length > 0\n ? (result += `Comment: ${this.copyToClipBoardAlert.inactiveReasonText}\\n`)\n : null;\n const selBox = document.createElement('textarea');\n selBox.style.position = 'fixed';\n selBox.style.left = '0';\n selBox.style.top = '0';\n selBox.style.opacity = '0';\n selBox.value = result;\n document.body.appendChild(selBox);\n selBox.focus();\n selBox.select();\n document.execCommand('copy');\n document.body.removeChild(selBox);\n }\n closeModalOnBackgroundClick(target: any): void {\n if (target.getAttribute('role') == 'modal-background') {\n this.copyToClipBoardAlert = null;\n }\n }\n\n dismissedByNameForAlert(alert: wpapi.model.Alert): string {\n const name = alert?.inactiveByFullName?.trim();\n if (name) {\n return name;\n }\n return '[no name found]';\n }\n}\n","
\n
Patient goal: {{goal?goal:'Not set by patient'}}
\n
\n","import {\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { Patient } from '@shared/models/patient';\n@Component({\n selector: 'coach-patient-alert',\n templateUrl: './patient-alert.component.html',\n styleUrls: ['./patient-alert.component.scss'],\n})\nexport class PatientAlertComponent implements OnInit, OnChanges {\n @Input() public patient: Patient;\n goal = '';\n\n constructor() {}\n\n private get userGoal() {\n return this.patient?.carePatient?.userGoal || null\n }\n\n ngOnInit(): void {}\n\n ngOnChanges() {\n this.goal = this.userGoal;\n }\n get isPatientInvited():boolean {\n return this?.patient?.carePatient?.accountType === 'patient';\n } \n}\n","
\n
\n
\n
\n
{{eoc.name}}
\n
\n
\n \n | \n \n
\n
\n
\n \n
\n
0\">\n
\n
\n \n
\n \n \n
\n
\n
Once
\n
Daily
\n
Weekly
\n
Monthly
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n \n
\n
0\">\n
Assigned tasks
\n
\n
0\">\n
Once
\n
Daily
\n
Weekly
\n
Monthly
\n
\n
0\">\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n
Template tasks (module not assigned)
\n
\n
\n
Once
\n
Daily
\n
Weekly
\n
Monthly
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n
{{ x.operation }} {{ x.module.protocol.name }}
\n
\n
\n
\n
0\">\n
These tasks will be assigned to the patient
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
0\">\n
These tasks will be activated
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
0\">\n
These tasks are already active in another module and will be left unchanged
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
0\">\n
{{x.tasksToBeDeactivated.length}} tasks will be deactivated
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
","import {\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport * as _ from 'lodash';\n\nimport { Patient } from '@shared/models/patient';\nimport { PatientService, ModuleActivateDeactivateDialogViewModel, EpisodeOfCareProtocolAssignmentViewModel, EpisodeOfCareViewModel, EpisodeOfCareModuleAssignmentViewModel, TaskViewModel, CarePlanViewModel, ProtocolTaskViewModel } from '@shared/services/patient/patient.service';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\nimport {\n SubComponentId,\n ComponentId,\n ActionId,\n} from '@shared/models/audit-constants';\nimport { Task } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/wp-model';\nimport { OrgService } from '@shared/services/org-service/org.service';\n\n\n/** We are caching protocols - they change very rarely */\nconst protocols: { [key: string]: wpapi.model.Protocol } = {};\n\n@Component({\n selector: 'coach-care-patient-careplan',\n templateUrl: './patient-careplan.component.html',\n styleUrls: ['./patient-careplan.component.scss'],\n})\nexport class CarePatientCareplanComponent implements OnInit, OnChanges {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n\n get tierId() {\n return this?.tier?.selectedTierId;\n }\n\n vm: CarePlanViewModel;\n\n constructor(\n private PatientService: PatientService,\n private auditService: AuditService,\n private OrgService: OrgService\n ) {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.patient && this.tier) {\n this.refresh();\n //(detail, compId, subComp, actionId, chPatId, tierId, orgId);\n this.auditService.auditLog(\n 'Patient CarePlan',\n ComponentId.Dashboard,\n SubComponentId.CarePlan,\n ActionId.PHIAccess,\n this.patient.chPatId,\n this.tier,\n null\n );\n }\n }\n\n async refresh() {\n this.vm = {\n episodesOfCare: await this.PatientService.getPatientEpisodesOfCare(\n this.tierId,\n this.patient\n ),\n moduleActivateDeactivateInfo: null,\n };\n\n let tasks = await this.PatientService.getPatientTasks(\n this.tierId,\n this.patient\n );\n for (let eoc of this.vm.episodesOfCare) {\n for (let p of eoc.protocols) {\n p.isOpen = true;\n p.parentEpisodeOfCare = eoc;\n\n if (!protocols[p.protocolId]) {\n protocols[p.protocolId] = await this.OrgService.getProtocol(\n p.protocolId\n );\n }\n const protocol = protocols[p.protocolId];\n p.tasks = protocol.tasks\n .map((pt) => {\n const tt = tasks.find(\n (t) => t.protocolTaskId === pt.protocolTaskId\n );\n if (!tt) {\n return null;\n }\n let tvm = tt as TaskViewModel;\n tvm.swimlane = this.getSwimlaneForTask(tt);\n return tvm;\n })\n .filter((tvm) => !!tvm);\n p.activeTaskCount = p.tasks.reduce(\n (count, t) => (t.isActive ? count + 1 : count),\n 0\n );\n\n if (p.modules) {\n for (let m of p.modules) {\n m.isOpen = true;\n m.parentProtocol = p;\n if (!protocols[m.protocolId]) {\n protocols[m.protocolId] = await this.OrgService.getProtocol(\n m.protocolId\n );\n }\n m.protocol = protocols[m.protocolId];\n m.templateTasks = this.templateTasksForModule(\n m.protocol,\n m.protocolId\n );\n m.assignedTasks = m.templateTasks\n .map((tt) => {\n let t = tasks.find(\n (t) => t.protocolTaskId === tt.protocolTaskId\n );\n if (!t) {\n return null;\n }\n\n let tvm = t as TaskViewModel;\n tvm.swimlane = this.getSwimlaneForTask(t);\n return tvm;\n })\n .filter((t) => !!t);\n m.activeTaskCount = m.assignedTasks.reduce(\n (count, t) => (t.isActive ? count + 1 : count),\n 0\n );\n }\n }\n\n p.protocol = protocols[p.protocolId];\n }\n }\n }\n\n updateCalculatedValues() {\n for (let eoc of this.vm.episodesOfCare) {\n for (let p of eoc.protocols) {\n p.activeTaskCount = p.tasks.reduce(\n (count, t) => (t.isActive ? count + 1 : count),\n 0\n );\n if (p.modules) {\n for (let m of p.modules) {\n m.activeTaskCount = m.assignedTasks.reduce(\n (count, t) => (t.isActive ? count + 1 : count),\n 0\n );\n }\n }\n }\n }\n }\n\n // Event handlers\n async onTaskUpdated(t: ProtocolTaskViewModel) {\n // this.refresh()\n this.vm.episodesOfCare?.forEach((eoc) => {\n eoc.protocols?.[0]?.tasks?.forEach((task) => {\n if (task._id == t._id) {\n task = t;\n return;\n }\n });\n });\n this.updateCalculatedValues();\n }\n\n async moduleCheckClicked(module: EpisodeOfCareModuleAssignmentViewModel) {\n this.vm.moduleActivateDeactivateInfo = this.getModuleActivateDeactivateInfo(\n module,\n module.state !== 'active'\n );\n }\n\n async activateOrDeactivateModule(\n info: ModuleActivateDeactivateDialogViewModel\n ) {\n const activate: boolean = info.operation != 'Deactivate';\n await this.PatientService.activateOrDeactivateModule({\n userId: this.patient.carePatient._id,\n episodeOfCareId: info.module.parentProtocol.parentEpisodeOfCare._id,\n protocolId: info.module.parentProtocol.protocolId,\n moduleId: info.module.protocolId,\n activate: activate,\n });\n\n await this.refresh();\n }\n\n expandCollapseAll(expand: boolean, index: number) {\n this.vm?.episodesOfCare?.[index]?.protocols?.forEach((p) => {\n p.isOpen = expand;\n p.modules?.forEach((m) => {\n m.isOpen = expand;\n });\n });\n }\n\n // Helpers\n getSwimlaneForTask(t: Task): 'once' | 'daily' | 'weekly' | 'monthly' {\n // @ts-ignore\n let ruleText = t?.relativeSchedule?.recurRule?.toLowerCase();\n if (!ruleText) {\n return 'once';\n }\n if (ruleText.indexOf('freq=daily') >= 0) {\n return 'daily';\n } else if (ruleText.indexOf('freq=weekly') >= 0) {\n return 'weekly';\n } else if (ruleText.indexOf('freq=monthly') >= 0) {\n return 'monthly';\n } else {\n // Not a valid value, really.\n return 'once';\n }\n }\n\n tasksForSwimlane(\n tasks: Array,\n swimlane: 'once' | 'daily' | 'weekly' | 'monthly'\n ) {\n if (!tasks) {\n return [];\n }\n return tasks.filter((t) => swimlane == t.swimlane);\n }\n\n /** Calculate the effect of assigning/activating/deactivating a module */\n public getModuleActivateDeactivateInfo(\n mod: EpisodeOfCareModuleAssignmentViewModel,\n activate: boolean\n ): ModuleActivateDeactivateDialogViewModel {\n let result: ModuleActivateDeactivateDialogViewModel = {\n module: mod,\n operation: null,\n tasksToAssign: [],\n tasksToActivate: [],\n tasksToBeDeactivated: [],\n tasksNotToBeDeactivated: [],\n tasksToLeaveAlone: [],\n };\n\n if (activate) {\n const moduleIsAssigned = mod.stateHistory.find(\n (sh) => sh.state === 'active'\n );\n if (moduleIsAssigned) {\n result.operation = 'Activate';\n _.each(mod.assignedTasks, (t) => {\n if (!t.isActive) {\n result.tasksToActivate.push(t);\n } else {\n result.tasksToLeaveAlone.push(t);\n }\n });\n } else {\n result.operation = 'Assign';\n _.each(mod.templateTasks, (tt) => {\n let t = this.findAssignedTaskByProtocolTaskId(tt.protocolTaskId);\n if (t) {\n // Is assigned\n if (t.isActive) {\n result.tasksToLeaveAlone.push(t);\n } else {\n result.tasksToActivate.push(t);\n }\n } else {\n result.tasksToAssign.push(tt);\n }\n });\n }\n } else {\n result.operation = 'Deactivate';\n // Tasks to be deactivated will be unless they are in another module and already active.\n _.each(mod.assignedTasks, (t) => {\n if (this.isTaskActiveInAnotherModule(t._id, mod)) {\n result.tasksNotToBeDeactivated.push(t);\n } else {\n result.tasksToBeDeactivated.push(t);\n }\n });\n }\n return result;\n }\n\n public findAssignedTaskByProtocolTaskId(\n protocolTaskId: string\n ): ProtocolTaskViewModel {\n // REVIEW - could probably be shortened by using Array.find()\n for (let i = 0; i < this.vm.episodesOfCare.length; i++) {\n let e = this.vm.episodesOfCare[i];\n for (let j = 0; j < e.protocols.length; j++) {\n let p = e.protocols[j];\n for (let k = 0; k < p.tasks.length; k++) {\n let t = p.tasks[k];\n if (t.protocolTaskId === protocolTaskId) {\n return t;\n }\n }\n if (p.modules) {\n for (let l = 0; l < p.modules.length; l++) {\n const assignedTasks = p.modules[l]?.assignedTasks;\n if (assignedTasks) {\n for (let m = 0; m < assignedTasks.length; m++) {\n let at = assignedTasks[m];\n if (protocolTaskId === at.protocolTaskId) {\n return at;\n }\n }\n }\n }\n }\n }\n }\n return null;\n }\n public isTaskActiveInAnotherModule(\n taskId: string,\n mod: EpisodeOfCareModuleAssignmentViewModel\n ) {\n return this.vm.episodesOfCare?.find((e) => {\n return e.protocols?.find((p) => {\n return p.modules?.find((mm) => {\n if (mm === mod) {\n return false;\n }\n if (mm.state !== 'active') {\n return false;\n }\n // REVIEW - not sure why assignedTasks is sometimes undefined\n if (!mm.assignedTasks) {\n return false;\n }\n return mm.assignedTasks.find((at) => {\n return taskId === at._id;\n });\n });\n });\n });\n }\n\n /** Get tasks from the module, which is a protocol */\n templateTasksForModule(\n mod: wpapi.model.Protocol,\n protocolId: string\n ): Array {\n if (mod) {\n return (\n mod.tasks\n // NUD-3736 - filter out certain tasks - TODO - should have a more general way of dealing with this.\n .filter(\n (t) =>\n t.type !== 'patientsatisfaction' || t.subType !== 'wellpepper'\n )\n .map((t) => {\n const copy: ProtocolTaskViewModel =\n _.cloneDeep(t);\n copy.swimlane = this.getSwimlaneForTask(t as Task);\n return copy;\n })\n ); // Make sure we don't change template tasks.\n }\n return [];\n }\n\n getTaskTypeText(task: ProtocolTaskViewModel) {\n if (!task.type) {\n return 'Exercise';\n }\n var s = task.type.toLowerCase();\n s = s.toLowerCase();\n switch (s) {\n case 'activitytracker':\n s = 'activity tracker';\n break;\n case 'aboutinfo':\n s = 'about info';\n break;\n case 'painmedication':\n s = 'pain medication';\n break;\n case 'startdoing':\n s = 'start doing';\n break;\n case 'stopdoing':\n s = 'stop doing';\n break;\n case 'patientsatisfaction':\n s = 'patient satisfaction';\n if (task.subType === 'wellpepper') {\n s += ' (Wellpepper)';\n }\n break;\n case 'didyoufall':\n s = 'did you fall';\n break;\n case 'quicktips':\n s = 'quick tips';\n break;\n case 'videodiary':\n s = 'video diary';\n break;\n case 'food diary':\n case 'fooddiary':\n s = 'food diary';\n break;\n case 'meddiary':\n s = 'med diary';\n break;\n case 'goaltracking':\n s = 'goal';\n break;\n case 'bloodpressure':\n s = 'blood pressure';\n break;\n case 'bloodsugar':\n s = 'blood sugar';\n break;\n case 'tasksetup':\n switch ((task.subType || '').toString().toLowerCase()) {\n case 'activity':\n s = 'activity';\n break;\n case 'weight':\n s = 'weight';\n break;\n case 'bloodpressure':\n s = 'blood pressure';\n break;\n default:\n s = 'tracking';\n break;\n }\n break;\n case 'educationvideo':\n case 'educationwebvideo':\n s = 'education video';\n break;\n case 'weighttracker':\n s = 'weight tracker';\n break;\n }\n s = s.replace(/_/g, ' ');\n return s.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n }\n}","import { __awaiter } from \"tslib\";\r\nimport { XYSeries } from \"./XYSeries\";\r\nimport { Percent } from \"../../../core/util/Percent\";\r\nimport { visualSettings } from \"../../../core/render/Graphics\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $type from \"../../../core/util/Type\";\r\n/**\r\n * Base class for all \"column-based\" series\r\n */\r\nexport class BaseColumnSeries extends XYSeries {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_ph\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_pw\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n }\r\n _makeGraphics(listTemplate, dataItem) {\r\n return this.makeColumn(dataItem, listTemplate);\r\n }\r\n _makeFieldNames() {\r\n super._makeFieldNames();\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const categoryAxis = \"CategoryAxis\";\r\n const valueAxis = \"ValueAxis\";\r\n if (xAxis.isType(categoryAxis)) {\r\n if (!this.get(\"openCategoryXField\")) {\r\n this._xOpenField = this._xField;\r\n }\r\n }\r\n if (xAxis.isType(valueAxis)) {\r\n if (!this.get(\"openValueXField\")) {\r\n this._xOpenField = this._xField;\r\n }\r\n }\r\n if (yAxis.isType(categoryAxis)) {\r\n if (!this.get(\"openCategoryYField\")) {\r\n this._yOpenField = this._yField;\r\n }\r\n }\r\n if (yAxis.isType(valueAxis)) {\r\n if (!this.get(\"openValueYField\")) {\r\n this._yOpenField = this._yField;\r\n }\r\n }\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const len = this.dataItems.length;\r\n const startIndex = Math.max(0, this.startIndex() - 2);\r\n const endIndex = Math.min(this.endIndex() + 2, len - 1);\r\n if (xAxis.inited && yAxis.inited) {\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n let dataItem = this.dataItems[i];\r\n this._createGraphics(dataItem);\r\n }\r\n }\r\n }\r\n _updateChildren() {\r\n const chart = this.chart;\r\n if (chart) {\r\n this._ph = chart.plotContainer.height();\r\n this._pw = chart.plotContainer.width();\r\n }\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const columnsTemplate = this.columns.template;\r\n if (this.isDirty(\"fill\")) {\r\n if (columnsTemplate.get(\"fill\") == null) {\r\n columnsTemplate.set(\"fill\", this.get(\"fill\"));\r\n }\r\n }\r\n if (this.isDirty(\"stroke\")) {\r\n if (columnsTemplate.get(\"stroke\") == null) {\r\n columnsTemplate.set(\"stroke\", this.get(\"stroke\"));\r\n }\r\n }\r\n let index = 0;\r\n let clusterCount = 0;\r\n let i = 0;\r\n $array.each(baseAxis.series, (series) => {\r\n if (series instanceof BaseColumnSeries) {\r\n const stacked = series.get(\"stacked\");\r\n if (stacked && i == 0) {\r\n clusterCount++;\r\n }\r\n if (!stacked && series.get(\"clustered\")) {\r\n clusterCount++;\r\n }\r\n }\r\n if (series === this) {\r\n index = clusterCount - 1;\r\n }\r\n i++;\r\n });\r\n if (!this.get(\"clustered\")) {\r\n index = 0;\r\n clusterCount = 1;\r\n }\r\n if (clusterCount === 0) {\r\n clusterCount = 1;\r\n index = 0;\r\n }\r\n const xRenderer = xAxis.get(\"renderer\");\r\n const yRenderer = yAxis.get(\"renderer\");\r\n const cellStartLocation = \"cellStartLocation\";\r\n const cellEndLocation = \"cellEndLocation\";\r\n const cellLocationX0 = xRenderer.get(cellStartLocation, 0);\r\n const cellLocationX1 = xRenderer.get(cellEndLocation, 1);\r\n const cellLocationY0 = yRenderer.get(cellStartLocation, 0);\r\n const cellLocationY1 = yRenderer.get(cellEndLocation, 1);\r\n this._aLocationX0 = cellLocationX0 + (index / clusterCount) * (cellLocationX1 - cellLocationX0);\r\n this._aLocationX1 = cellLocationX0 + (index + 1) / clusterCount * (cellLocationX1 - cellLocationX0);\r\n ;\r\n this._aLocationY0 = cellLocationY0 + (index / clusterCount) * (cellLocationY1 - cellLocationY0);\r\n this._aLocationY1 = cellLocationY0 + (index + 1) / clusterCount * (cellLocationY1 - cellLocationY0);\r\n if (xAxis.inited && yAxis.inited) {\r\n if (this._axesDirty || this._valuesDirty || this._stackDirty || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this._sizeDirty) {\r\n const len = this.dataItems.length;\r\n let startIndex = Math.max(0, this.startIndex() - 2);\r\n let endIndex = Math.min(this.endIndex() + 2, len - 1);\r\n for (let i = 0; i < startIndex; i++) {\r\n this._toggleColumn(this.dataItems[i], false);\r\n }\r\n let previous = this.dataItems[startIndex];\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n let dataItem = this.dataItems[i];\r\n if (dataItem.get(\"valueX\") != null && dataItem.get(\"valueY\") != null) {\r\n previous = dataItem;\r\n if (i > 0 && startIndex > 0) {\r\n for (let j = i - 1; j >= 0; j--) {\r\n let dataItem = this.dataItems[j];\r\n if (dataItem.get(\"valueX\") != null && dataItem.get(\"valueY\") != null) {\r\n previous = dataItem;\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n else {\r\n this._toggleColumn(dataItem, false);\r\n }\r\n }\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n let dataItem = this.dataItems[i];\r\n this._updateGraphics(dataItem, previous);\r\n if (dataItem.get(\"valueX\") != null && dataItem.get(\"valueY\") != null) {\r\n previous = dataItem;\r\n }\r\n }\r\n for (let i = endIndex + 1; i < len; i++) {\r\n this._toggleColumn(this.dataItems[i], false);\r\n }\r\n }\r\n }\r\n else {\r\n this._skipped = true;\r\n }\r\n this.updateLegendMarker(this.get(\"tooltipDataItem\"));\r\n super._updateChildren();\r\n }\r\n _createGraphics(dataItem) {\r\n let graphics = dataItem.get(\"graphics\");\r\n if (!graphics) {\r\n graphics = this._makeGraphics(this.columns, dataItem);\r\n dataItem.set(\"graphics\", graphics);\r\n graphics._setDataItem(dataItem);\r\n const legendDataItem = dataItem.get(\"legendDataItem\");\r\n if (legendDataItem) {\r\n const markerRectangle = legendDataItem.get(\"markerRectangle\");\r\n if (markerRectangle) {\r\n const ds = markerRectangle.states.lookup(\"default\");\r\n $array.each(visualSettings, (setting) => {\r\n const value = graphics.get(setting, this.get(setting));\r\n markerRectangle.set(setting, value);\r\n ds.set(setting, value);\r\n });\r\n }\r\n }\r\n let graphicsArray = dataItem.get(\"rangeGraphics\");\r\n if (graphicsArray) {\r\n $array.each(graphicsArray, (graphics) => {\r\n graphics.dispose();\r\n });\r\n }\r\n graphicsArray = [];\r\n dataItem.setRaw(\"rangeGraphics\", graphicsArray);\r\n this.axisRanges.each((axisRange) => {\r\n const container = axisRange.container;\r\n const rangeGraphics = this._makeGraphics(axisRange.columns, dataItem);\r\n if (graphicsArray) {\r\n graphicsArray.push(rangeGraphics);\r\n }\r\n rangeGraphics.setPrivate(\"list\", axisRange.columns);\r\n container.children.push(rangeGraphics);\r\n });\r\n }\r\n }\r\n createAxisRange(axisDataItem) {\r\n $array.each(this.dataItems, (dataItem) => {\r\n const graphics = dataItem.get(\"graphics\");\r\n if (graphics) {\r\n graphics.dispose();\r\n dataItem.set(\"graphics\", undefined);\r\n }\r\n });\r\n return super.createAxisRange(axisDataItem);\r\n }\r\n _updateGraphics(dataItem, previousDataItem) {\r\n let graphics = dataItem.get(\"graphics\");\r\n //if (!graphics) {\r\n //\tthis._createGraphics(dataItem);\r\n //\tgraphics = dataItem.get(\"graphics\")!;\r\n //}\r\n const xField = this._xField;\r\n const yField = this._yField;\r\n const valueX = dataItem.get(xField);\r\n const valueY = dataItem.get(yField);\r\n if (valueX != null && valueY != null) {\r\n const xOpenField = this._xOpenField;\r\n const yOpenField = this._yOpenField;\r\n const locationX = this.get(\"locationX\", dataItem.get(\"locationX\", 0.5));\r\n const locationY = this.get(\"locationY\", dataItem.get(\"locationY\", 0.5));\r\n const openLocationX = this.get(\"openLocationX\", dataItem.get(\"openLocationX\", locationX));\r\n const openLocationY = this.get(\"openLocationY\", dataItem.get(\"openLocationY\", locationY));\r\n const width = graphics.get(\"width\");\r\n const height = graphics.get(\"height\");\r\n const stacked = this.get(\"stacked\");\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const xStart = xAxis.get(\"start\");\r\n const xEnd = xAxis.get(\"end\");\r\n const yStart = yAxis.get(\"start\");\r\n const yEnd = yAxis.get(\"end\");\r\n let l;\r\n let r;\r\n let t;\r\n let b;\r\n let vcy = this.get(\"vcy\", 1);\r\n let vcx = this.get(\"vcx\", 1);\r\n let fitW = false;\r\n let fitH = false;\r\n if (yAxis.isType(\"CategoryAxis\") && xAxis.isType(\"CategoryAxis\")) {\r\n let startLocation = this._aLocationX0 + openLocationX - 0.5;\r\n let endLocation = this._aLocationX1 + locationX - 0.5;\r\n if (width instanceof Percent) {\r\n let offset = (endLocation - startLocation) * (1 - width.value) / 2;\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n l = xAxis.getDataItemPositionX(dataItem, xOpenField, startLocation, vcx);\r\n r = xAxis.getDataItemPositionX(dataItem, xField, endLocation, vcx);\r\n startLocation = this._aLocationY0 + openLocationY - 0.5;\r\n endLocation = this._aLocationY1 + locationY - 0.5;\r\n if (height instanceof Percent) {\r\n let offset = (endLocation - startLocation) * (1 - height.value) / 2;\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n t = yAxis.getDataItemPositionY(dataItem, yOpenField, startLocation, vcy);\r\n b = yAxis.getDataItemPositionY(dataItem, yField, endLocation, vcy);\r\n dataItem.setRaw(\"point\", { x: l + (r - l) / 2, y: t + (b - t) / 2 });\r\n }\r\n else if (xAxis === baseAxis) {\r\n let startLocation = this._aLocationX0 + openLocationX - 0.5;\r\n let endLocation = this._aLocationX1 + locationX - 0.5;\r\n if (width instanceof Percent) {\r\n let offset = (endLocation - startLocation) * (1 - width.value) / 2;\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n l = xAxis.getDataItemPositionX(dataItem, xOpenField, startLocation, vcx);\r\n r = xAxis.getDataItemPositionX(dataItem, xField, endLocation, vcx);\r\n t = yAxis.getDataItemPositionY(dataItem, yField, locationY, vcy);\r\n if (this._yOpenField !== this._yField) {\r\n b = yAxis.getDataItemPositionY(dataItem, yOpenField, openLocationY, vcy);\r\n }\r\n else {\r\n if (stacked) {\r\n let stackToItemY = dataItem.get(\"stackToItemY\");\r\n if (stackToItemY) {\r\n b = yAxis.getDataItemPositionY(stackToItemY, yField, openLocationY, stackToItemY.component.get(\"vcy\"));\r\n }\r\n else {\r\n b = yAxis.basePosition();\r\n }\r\n }\r\n else {\r\n b = yAxis.basePosition();\r\n }\r\n }\r\n dataItem.setRaw(\"point\", { x: l + (r - l) / 2, y: t });\r\n fitH = true;\r\n }\r\n else if (yAxis === baseAxis) {\r\n let startLocation = this._aLocationY0 + openLocationY - 0.5;\r\n let endLocation = this._aLocationY1 + locationY - 0.5;\r\n if (height instanceof Percent) {\r\n let offset = (endLocation - startLocation) * (1 - height.value) / 2;\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n t = yAxis.getDataItemPositionY(dataItem, yOpenField, startLocation, vcy);\r\n b = yAxis.getDataItemPositionY(dataItem, yField, endLocation, vcy);\r\n r = xAxis.getDataItemPositionX(dataItem, xField, locationX, vcx);\r\n if (this._xOpenField !== this._xField) {\r\n l = xAxis.getDataItemPositionX(dataItem, xOpenField, openLocationX, vcx);\r\n }\r\n else {\r\n if (stacked) {\r\n let stackToItemX = dataItem.get(\"stackToItemX\");\r\n if (stackToItemX) {\r\n l = xAxis.getDataItemPositionX(stackToItemX, xField, openLocationX, stackToItemX.component.get(\"vcx\"));\r\n }\r\n else {\r\n l = xAxis.basePosition();\r\n }\r\n }\r\n else {\r\n l = xAxis.basePosition();\r\n }\r\n }\r\n fitW = true;\r\n dataItem.setRaw(\"point\", { x: r, y: t + (b - t) / 2 });\r\n }\r\n this._updateSeriesGraphics(dataItem, graphics, l, r, t, b, fitW, fitH);\r\n if ((l < xStart && r < xStart) || (l > xEnd && r > xEnd) || (t < yStart && b <= yStart) || (t >= yEnd && b > yEnd) || $type.isNaN(l) || $type.isNaN(t)) {\r\n this._toggleColumn(dataItem, false);\r\n }\r\n else {\r\n this._toggleColumn(dataItem, true);\r\n }\r\n let rangeGraphics = dataItem.get(\"rangeGraphics\");\r\n if (rangeGraphics) {\r\n $array.each(rangeGraphics, (graphics) => {\r\n this._updateSeriesGraphics(dataItem, graphics, l, r, t, b, fitW, fitH);\r\n });\r\n }\r\n this._applyGraphicsStates(dataItem, previousDataItem);\r\n }\r\n }\r\n _updateSeriesGraphics(dataItem, graphics, l, r, t, b, fitW, fitH) {\r\n const width = graphics.get(\"width\");\r\n const height = graphics.get(\"height\");\r\n const maxWidth = graphics.get(\"maxWidth\");\r\n const maxHeight = graphics.get(\"maxHeight\");\r\n const ptl = this.getPoint(l, t);\r\n const pbr = this.getPoint(r, b);\r\n const tooltipPoint = dataItem.get(\"point\");\r\n if (tooltipPoint) {\r\n const point = this.getPoint(tooltipPoint.x, tooltipPoint.y);\r\n tooltipPoint.x = point.x + this._x;\r\n tooltipPoint.y = point.y + this._y;\r\n }\r\n l = ptl.x;\r\n r = pbr.x;\r\n t = ptl.y;\r\n b = pbr.y;\r\n if ($type.isNumber(width)) {\r\n const offset = ((r - l) - width) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n if ($type.isNumber(maxWidth) && maxWidth < Math.abs(r - l)) {\r\n const offset = ((r - l) - maxWidth) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n if ($type.isNumber(height)) {\r\n const offset = ((b - t) - height) / 2;\r\n t += offset;\r\n b -= offset;\r\n }\r\n if ($type.isNumber(maxHeight) && maxHeight < Math.abs(b - t)) {\r\n const offset = ((b - t) - maxHeight) / 2;\r\n t += offset;\r\n b -= offset;\r\n }\r\n if (this.get(\"adjustBulletPosition\")) {\r\n if (fitW) {\r\n r = Math.min(Math.max(0, r), this._pw);\r\n l = Math.min(Math.max(0, l), this._pw);\r\n }\r\n if (fitH) {\r\n t = Math.min(Math.max(0, t), this._ph);\r\n b = Math.min(Math.max(0, b), this._ph);\r\n }\r\n }\r\n dataItem.setRaw(\"left\", l);\r\n dataItem.setRaw(\"right\", r);\r\n dataItem.setRaw(\"top\", t);\r\n dataItem.setRaw(\"bottom\", b);\r\n graphics.setPrivate(\"width\", r - l);\r\n graphics.setPrivate(\"height\", b - t);\r\n graphics.set(\"x\", l);\r\n graphics.set(\"y\", b - (b - t));\r\n }\r\n _handleDataSetChange() {\r\n super._handleDataSetChange();\r\n $array.each(this._dataItems, (dataItem) => {\r\n this._toggleColumn(dataItem, false);\r\n });\r\n }\r\n _applyGraphicsStates(dataItem, previousDataItem) {\r\n const graphics = dataItem.get(\"graphics\");\r\n const dropFromOpen = graphics.states.lookup(\"dropFromOpen\");\r\n const riseFromOpen = graphics.states.lookup(\"riseFromOpen\");\r\n const dropFromPrevious = graphics.states.lookup(\"dropFromPrevious\");\r\n const riseFromPrevious = graphics.states.lookup(\"riseFromPrevious\");\r\n if (dropFromOpen || dropFromPrevious || riseFromOpen || riseFromPrevious) {\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n let open;\r\n let close;\r\n let previousClose;\r\n if (baseAxis === xAxis && yAxis.isType(\"ValueAxis\")) {\r\n open = dataItem.get(this._yOpenField);\r\n close = dataItem.get(this._yField);\r\n previousClose = previousDataItem.get(this._yField);\r\n }\r\n else if (baseAxis === yAxis && xAxis.isType(\"ValueAxis\")) {\r\n open = dataItem.get(this._xOpenField);\r\n close = dataItem.get(this._xField);\r\n previousClose = previousDataItem.get(this._xField);\r\n }\r\n if ($type.isNumber(open) && $type.isNumber(close)) {\r\n if (close < open) {\r\n if (dropFromOpen) {\r\n dropFromOpen.apply();\r\n }\r\n }\r\n else {\r\n if (riseFromOpen) {\r\n riseFromOpen.apply();\r\n }\r\n }\r\n if ($type.isNumber(previousClose)) {\r\n if (close < previousClose) {\r\n if (dropFromPrevious) {\r\n dropFromPrevious.apply();\r\n }\r\n }\r\n else {\r\n if (riseFromPrevious) {\r\n riseFromPrevious.apply();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n disposeDataItem(dataItem) {\r\n super.disposeDataItem(dataItem);\r\n const graphics = dataItem.get(\"graphics\");\r\n if (graphics) {\r\n this.columns.removeValue(graphics);\r\n graphics.dispose();\r\n }\r\n const rangeGraphics = dataItem.get(\"rangeGraphics\");\r\n if (rangeGraphics) {\r\n $array.each(rangeGraphics, (graphics) => {\r\n const list = graphics.getPrivate(\"list\");\r\n if (list) {\r\n list.removeValue(graphics);\r\n }\r\n graphics.dispose();\r\n });\r\n }\r\n }\r\n /**\r\n * Hides series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n hideDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n hideDataItem: { get: () => super.hideDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.hideDataItem.call(this, dataItem, duration)];\r\n const graphics = dataItem.get(\"graphics\");\r\n if (graphics) {\r\n promises.push(graphics.hide(duration));\r\n }\r\n const rangeGraphics = dataItem.get(\"rangeGraphics\");\r\n if (rangeGraphics) {\r\n $array.each(rangeGraphics, (graphics) => {\r\n promises.push(graphics.hide(duration));\r\n });\r\n }\r\n yield Promise.all(promises);\r\n });\r\n }\r\n _toggleColumn(dataItem, visible) {\r\n const graphics = dataItem.get(\"graphics\");\r\n if (graphics) {\r\n graphics.setPrivate(\"visible\", visible);\r\n }\r\n const rangeGraphics = dataItem.get(\"rangeGraphics\");\r\n if (rangeGraphics) {\r\n $array.each(rangeGraphics, (graphics) => {\r\n graphics.setPrivate(\"visible\", visible);\r\n });\r\n }\r\n const bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n bullet.setPrivate(\"hidden\", !visible);\r\n });\r\n }\r\n }\r\n /**\r\n * Shows series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n showDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n showDataItem: { get: () => super.showDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.showDataItem.call(this, dataItem, duration)];\r\n const graphics = dataItem.get(\"graphics\");\r\n if (graphics) {\r\n promises.push(graphics.show(duration));\r\n }\r\n const rangeGraphics = dataItem.get(\"rangeGraphics\");\r\n if (rangeGraphics) {\r\n $array.each(rangeGraphics, (graphics) => {\r\n promises.push(graphics.show(duration));\r\n });\r\n }\r\n yield Promise.all(promises);\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLegendMarker(dataItem) {\r\n let legendDataItem = this.get(\"legendDataItem\");\r\n if (this.get(\"useLastColorForLegendMarker\")) {\r\n if (!dataItem) {\r\n const lastDataItem = this.dataItems[this.endIndex() - 1];\r\n if (lastDataItem) {\r\n dataItem = lastDataItem;\r\n }\r\n }\r\n }\r\n if (legendDataItem) {\r\n let graphics = this.columns.template;\r\n if (dataItem) {\r\n let column = dataItem.get(\"graphics\");\r\n if (column) {\r\n graphics = column;\r\n }\r\n }\r\n const markerRectangle = legendDataItem.get(\"markerRectangle\");\r\n if (markerRectangle) {\r\n if (!legendDataItem.get(\"itemContainer\").get(\"disabled\")) {\r\n const ds = markerRectangle.states.lookup(\"default\");\r\n $array.each(visualSettings, (setting) => {\r\n const value = graphics.get(setting, this.get(setting));\r\n markerRectangle.set(setting, value);\r\n ds.set(setting, value);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n _getTooltipTarget(dataItem) {\r\n if (this.get(\"seriesTooltipTarget\") == \"bullet\") {\r\n return super._getTooltipTarget(dataItem);\r\n }\r\n let column = dataItem.get(\"graphics\");\r\n if (column) {\r\n return column;\r\n }\r\n return this;\r\n }\r\n}\r\nObject.defineProperty(BaseColumnSeries, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"BaseColumnSeries\"\r\n});\r\nObject.defineProperty(BaseColumnSeries, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: XYSeries.classNames.concat([BaseColumnSeries.className])\r\n});\r\n","import { BaseColumnSeries } from \"./BaseColumnSeries\";\r\nimport { Template } from \"../../../core/util/Template\";\r\nimport { ListTemplate } from \"../../../core/util/List\";\r\nimport { RoundedRectangle } from \"../../../core/render/RoundedRectangle\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\nexport class ColumnSeries extends BaseColumnSeries {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * A [[TemplateList]] of all columns in series.\r\n *\r\n * `columns.template` can be used to set default settings for all columns,\r\n * or to change on existing ones.\r\n */\r\n Object.defineProperty(this, \"columns\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => RoundedRectangle._new(this._root, {\r\n position: \"absolute\",\r\n themeTags: $utils.mergeTags(this.columns.template.get(\"themeTags\", []), [\"series\", \"column\"])\r\n }, [this.columns.template]))\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeColumn(dataItem, listTemplate) {\r\n const column = this.mainContainer.children.push(listTemplate.make());\r\n column._setDataItem(dataItem);\r\n listTemplate.push(column);\r\n return column;\r\n }\r\n _processAxisRange(axisRange) {\r\n super._processAxisRange(axisRange);\r\n axisRange.columns = new ListTemplate(Template.new({}), () => RoundedRectangle._new(this._root, {\r\n position: \"absolute\",\r\n themeTags: $utils.mergeTags(axisRange.columns.template.get(\"themeTags\", []), [\"series\", \"column\"]),\r\n }, [this.columns.template, axisRange.columns.template]));\r\n }\r\n}\r\nObject.defineProperty(ColumnSeries, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"ColumnSeries\"\r\n});\r\nObject.defineProperty(ColumnSeries, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: BaseColumnSeries.classNames.concat([ColumnSeries.className])\r\n});\r\n","
\n
\n
\n
{{program}} SMS OUTREACH PROGRAM - Settings
\n
\n
\n
\n
\n
\n \n
Can you do your usual activities without feeling more short of breath, having trouble breathing or coughing more?
\n
\n \n
\n \n
\n
\n
\n
{{i + 1}}
\n

{{phase.frequencyDescription}}

for {{phase.duration.period}} {{phase.duration.units}}

\n
\n

Finished:

\n

Started:

\n

Stopped by {{this.currentUser.firstName + ' ' + this.currentUser.lastName}} :

\n

Stopped by {{ phase.stoppedBy.firstName + ' ' + phase.stoppedBy.lastName}} :

\n

Starts:

\n
\n

{{formatDate(phase.startDate)}}

\n

-

\n

{{formatDate(phase.finishDate)}}

\n

no end date

\n

{{getCurrentDate()}}

\n
\n

{{formatDate(phase.startDate)}}

\n

-

\n

{{formatDate(phase.finishDate)}}

\n

{{formatDate(phase.stoppedAt)}}

\n

no end date

\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n \n
\n
","import {\n Component,\n OnInit,\n Output,\n EventEmitter,\n Input,\n} from '@angular/core';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { Patient } from '@shared/models/patient';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { AuthService } from '@shared/services/auth-service/auth.service'; \n@Component({\n selector: 'coach-sms-standard-schedule',\n templateUrl: './sms-standard-schedule.component.html',\n styleUrls: ['./sms-standard-schedule.component.scss']\n})\n\nexport class SmsStandardScheduleComponent implements OnInit {\n @Input() public patient: Patient;\n @Input() public phases: Array;\n @Input() public program: string;\n @Output() onCancel = new EventEmitter();\n isStopped : boolean = false;\n isStopRequested : boolean = false;\n scheduleStopped: boolean = false;\n currentUser: wpapi.model.Professional;\n\n constructor(\n private AuthService: AuthService,\n private patientService: PatientService,\n ) {\n this.getCurrentUserInfo();\n }\n\n ngOnChanges(){\n if(this.phases.find(phase => phase.status == 'Stopped')){\n this.isStopped = true;\n } else {\n this.isStopped = false;\n }\n }\n\n close(switchToCustom: boolean) {\n this.onCancel.emit(switchToCustom);\n }\n\n private async getCurrentUserInfo() {\n this.currentUser = await this.AuthService.getWellpepperUserInfo();\n }\n\n formatDate(date: wpapi.model.LocalDate): string {\n return new Date(date.year,date.month - 1, date.date).toLocaleDateString('en-US')\n }\n\n get twilioTask() {\n return this.patient?.tasks?.find(task => task.type == \"twilioStudioFlow\" && task.isActive);\n }\n\n stopRequest(request : boolean) {\n this.isStopRequested = request; \n }\n \n async onSave() {\n let userId = this.patient.carePatient._id;\n if (this.isStopRequested){\n this.stopSchedule(userId);\n window.location.reload();\n }\n }\n\n async stopSchedule(userId: string) {\n let stopTwilioFlowSchedule = await this.patientService.stopTwilioFlowSchedule(userId, this.twilioTask._id);\n return stopTwilioFlowSchedule;\n }\n\n getCurrentDate(): string{\n const today = new Date();\n const yyyy = today.getFullYear();\n let mm = today.getMonth() + 1; \n let dd = today.getDate();\n \n \n const currentDate = mm + '/' + dd + '/' + yyyy;\n return currentDate;\n }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n
\n
{{program}} SMS OUTREACH PROGRAM - CUSTOM SCHEDULE\n
\n
\n
\n
\n
\n
\n \n
Can you do your usual\n activities without feeling more short of breath, having trouble breathing or coughing more?
\n
\n\n
\n \n \n
\n
\n
\n
{{i + 1}}\n
\n
\n

{{phase.frequencyDescription}}

\n

for {{phase.duration.period}} {{phase.duration.units}}

\n
\n
\n

\n Stopped by {{this.currentUser.firstName? this.currentUser.firstName + ' ' + this.currentUser.lastName : this.currentUser.email}} :

\n

{{formatDate(phase.startDate)}}

\n

-

\n

{{today | date:'MM/dd/yyyy'}}

\n

no end date

\n
\n
\n
\n
\n
\n \n
\n
\n
\n
{{i+1}}\n
\n
\n

{{phase.frequencyDescription}}

\n

for {{phase.duration.period}} {{phase.duration.units}}

\n
\n
\n

Finished:

\n

Stopped by \n {{stoppedbyUser}} :

\n

{{formatDate(phase.startDate)}}

\n

-

\n

{{formatDate(phase.stopDate)}}

\n

no end date

\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n \n
\n
...
\n
\n

{{customSchedulesettings.frequency}}

\n
\n\n
\n

Started by :\n {{customSchedulesettings.stratedBy}}

\n

{{customSchedulesettings.startDate}}

\n

-

\n

STOP

\n
\n\n
\n

\n Stopped by {{this.currentUser.firstName? this.currentUser.firstName + ' ' + this.currentUser.lastName : this.currentUser.email}} :

\n

{{customSchedulesettings.startDate}}

\n

-

\n

{{today | date:'MM/dd/yyyy'}}

\n
\n\n
\n
\n
\n
\n \n \n
\n
\n
+
\n \n

{{onTextContent}}

\n
\n
\n {{day.substring(0,1)}}\n
\n
\n
\n
\n \n \n
\n\n

Click Save to Start

\n

Click Save to Stop

\n\n
\n \n \n
\n
","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { common as wp, wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { PatientService } from '@shared/services/patient/patient.service';\n\n\ntype SMSScheduleSettings = {\n startDate: string;\n endDate?: string;\n frequency: string;\n duration: wpapi.model.Duration;\n currentStep: number;\n totalSteps: number;\n phases: Array;\n};\n\ntype CustomScheduleSettings = {\n startDate: string;\n frequency: string;\n stratedBy: string;\n}\n\ntype frequency = {\n Monthly: string;\n Weekdays: string;\n MWF: string;\n Weekly: string;\n Biweekly: string;\n}\n\n@Component({\n selector: 'coach-custom-schedule',\n templateUrl: './custom-schedule.component.html',\n styleUrls: ['./custom-schedule.component.scss']\n})\n\nexport class CustomScheduleComponent implements OnInit {\n @Input() public patient: Patient;\n @Input() public phases: Array;\n @Input() public adaptivephases: Array;\n @Input() public customSchedulesettings: CustomScheduleSettings;\n @Input() public stoppedbyUser: string;\n @Input() public isScheduleStopped: boolean;\n @Input() public program: string;\n @Output() cancelClicked : EventEmitter = new EventEmitter();\n\n currentUser: wpapi.model.Professional;\n selectedFrequency: string;\n customInviteStatus: boolean = false;\n scheduleSettings: SMSScheduleSettings;\n customPhases: Array;\n showCustomScheduleSelection: boolean = false;\n isStopRequested: boolean = false;\n today = new Date();\n frequency: frequency = {\n Monthly: 'monthly',\n Weekdays: 'weekday',\n MWF: 'mwf',\n Weekly: 'weekly',\n Biweekly: 'biweekly'\n }\n daysOfWeek : string []; \n greyDaysOfWeek : any; \n onTextContent : string; \n\n constructor(\n private AuthService: AuthService,\n private PatientService: PatientService,\n ) {\n\n }\n\n ngOnChanges() {\n this.getcustomPhases();\n }\n\n private async getCurrentUserInfo() {\n this.currentUser = await this.AuthService.getWellpepperUserInfo();\n }\n\n private get patientId() {\n return this?.patient?.carePatient?._id;\n }\n\n get twilioTask() {\n return this.patient?.tasks?.find(task => task.type == \"twilioStudioFlow\" && task.isActive);\n }\n\n formatDate(date: wpapi.model.LocalDate): string {\n return new Date(date.year, date.month - 1, date.date).toLocaleDateString('en-US')\n }\n\n\n onClick() {\n }\n\n ngOnInit(): void {\n this.getCurrentUserInfo();\n this.getcustomPhases();\n }\n\n get isScheduleCustom() {\n return this.twilioTask?.schedule?.isCustom === true;\n }\n\n get isScheduleActive() {\n return this.twilioTask?.schedule;\n }\n\n\n getcustomPhases() {\n let frequencies = this.twilioTask?.twilioInfo?.scheduleDefinition?.frequencyKeyMap;\n if (frequencies) {\n this.customPhases = Object.values(frequencies).map(item => item.label);\n this.selectedFrequency = this.customPhases[0];\n this.onFrequencyChange();\n }\n }\n\n customScheduleSelection(show: boolean) {\n this.selectedFrequency = this.customPhases[0];\n this.showCustomScheduleSelection = show;\n }\n\n stopRequest(request: boolean) {\n this.isStopRequested = request;\n }\n\n onFrequencyChange() {\n const greyDays = {\n '5 times/week': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],\n '3 times/week': ['Monday', 'Wednesday', 'Friday'],\n '1 time/week': ['Monday'],\n 'Every other week': ['Monday'],\n 'Monthly': ['Monday'],\n };\n this.daysOfWeek = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\n const selectedFrequencyLabel = this.selectedFrequency;\n const daysToGrey = greyDays[selectedFrequencyLabel];\n this.greyDaysOfWeek = {};\n this.daysOfWeek.forEach(day => {\n this.greyDaysOfWeek[day] = daysToGrey.includes(day);\n });\n this.onTextContent = (this.selectedFrequency === 'Monthly')? 'On First' : 'On';\n }\n\n\n async stopSchedule(userId: string) {\n let stopTwilioFlowSchedule = await this.PatientService.stopTwilioFlowSchedule(userId, this.twilioTask._id);\n return stopTwilioFlowSchedule;\n }\n\n\n async onSave() {\n let userId = this.patient.carePatient._id;\n if (this.isScheduleCustom && this.isStopRequested) {\n let stopTwilioFlowSchedule = await this.stopSchedule(userId);\n if (stopTwilioFlowSchedule) {\n window.location.reload();\n }\n }\n else if (!this.isScheduleCustom || this.showCustomScheduleSelection) {\n if (this.twilioTask?.twilioInfo?.scheduleDefinition) {\n let frequency: string = '';\n switch (this.selectedFrequency) {\n case '5 times/week':\n frequency = this.frequency.Weekdays;\n break;\n case '3 times/week':\n frequency = this.frequency.MWF;\n break;\n case '1 time/week':\n frequency = this.frequency.Weekly;\n break;\n case 'Every other week':\n frequency = this.frequency.Biweekly;\n break;\n case 'Monthly':\n frequency = this.frequency.Monthly;\n break;\n }\n let isAdaptive = false;\n let stopTwilioFlowSchedule\n if (!this.isScheduleStopped) {\n stopTwilioFlowSchedule = await this.stopSchedule(userId);\n if (stopTwilioFlowSchedule) {\n let twilioFlowSchedule = await this.PatientService.createTwilioFlowSchedule(userId, this.twilioTask._id, frequency, isAdaptive);\n if (twilioFlowSchedule) {\n this.showCustomScheduleSelection = true;\n window.location.reload();\n }\n }\n } else {\n let twilioFlowSchedule = await this.PatientService.createTwilioFlowSchedule(userId, this.twilioTask._id, frequency, isAdaptive);\n if (twilioFlowSchedule) {\n this.showCustomScheduleSelection = true;\n window.location.reload();\n }\n }\n }\n }\n\n }\n\n\n cancel() {\n this.cancelClicked.emit();\n }\n}\n","\n
\n
\n
\n
Blood pressure
\n
\n \n \n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Date/TimeBPPULSECommentAlert
{{report.date | date: 'medium'}}\n \n report.goal_systolic_top) }\">\n {{report.systolic}}\n \n /\n report.goal_diastolic_top) }\">\n {{report.diastolic}}\n \n \n {{report.pulse}}{{report.comment}}\n
\n {{alert.desc}}\n \n
\n \n \n

Closed by {{alert.inactiveByFullName}}[name not found],\n {{alert.inactiveAt | date: 'medium'}}

\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
Blood sugar
\n
\n \n \n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Date/TimeSUGARLast ateCommentAlert
{{report.date | date: 'medium'}}\n \n report.goal_sugar_top || (connectAlertWithCompletion(report._id) && connectAlertWithCompletion(report._id).length > 0) }\">\n {{report.bloodSugar}}\n \n \n {{report.lastAte}} {{report.lastAteUnits}}{{report.comment}}\n
\n {{alert.desc}}\n \n
\n \n \n

Closed by {{alert.inactiveByFullName}}[name not found],\n {{alert.inactiveAt | date: 'medium'}}

\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
weight
\n
\n \n \n
\n
\n
\n \n \n \n
\n
\n
\">\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Date/TimeWeightCommentAlert
{{report.date | date: 'medium'}} report.goal_weight_top) || (connectAlertWithCompletion(report._id) && connectAlertWithCompletion(report._id).length > 0) }\">\n {{report.weight}}\n {{report.weightUnits}} {{report.comment}}\n
\n {{alert.desc}}\n \n
\n \n \n

Closed by {{alert.inactiveByFullName}}[name not found],\n {{alert.inactiveAt | date: 'medium'}}

\n
\n
\n
\n
\n
\n
\n\n\n
\n\n
\n
\n
\n
\n
COPD SMS Responses
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n
\n \n
\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Date/TimeMessageCategoryAlert
{{report.date | date: 'medium'}}{{report.msg}}{{report.type}}\n {{report.type == '2' ? 'Yes' : 'No'}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Month12Other
{{report.month}}{{report[1]}}{{report[2]}}{{report.Other}}
\n
\n
\n
\n

CUSTOM SCHEDULE:

\n

{{customScheduleSettings.frequency}}

\n

Started: {{customScheduleSettings.startDate}}

\n

|

\n

Edit

\n
\n\n
\n

SCHEDULE (Step {{smsChartSettingsCOPD.scheduleSettings.currentStep}} of {{smsChartSettingsCOPD.scheduleSettings.totalSteps}}) : {{smsChartSettingsCOPD.scheduleSettings.frequency}} for {{smsChartSettingsCOPD.scheduleSettings.duration.period}} {{smsChartSettingsCOPD.scheduleSettings.duration.units}}. Started : {{smsChartSettingsCOPD.scheduleSettings.startDate}}

\n

- {{smsChartSettingsCOPD.scheduleSettings.endDate}}

\n

|

\n

Edit

\n
\n\n
\n
\n

Stopped by: {{customScheduleSettings?.stoppedBy}} on {{customScheduleSettings?.stoppedAt}}

\n

|

\n

Edit

\n
\n
\n\n
\n
\n\n
\n
\n
\n
\n
Heart Failure SMS Responses
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n
\n \n
\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Date/TimeMessageCategoryAlert
{{report.date | date: 'medium'}}{{report.msg}}{{report.type}}\n {{report.type == '2' ? 'Yes' : 'No'}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Month12Other
{{report.month}}{{report[1]}}{{report[2]}}{{report.Other}}
\n
\n
\n
\n

CUSTOM SCHEDULE:

\n

{{customScheduleSettings.frequency}}

\n

Started: {{customScheduleSettings.startDate}}

\n

|

\n

Edit

\n
\n
\n

SCHEDULE (Step {{smsChartSettingsHF.scheduleSettings.currentStep}} of {{smsChartSettingsHF.scheduleSettings.totalSteps}}) : {{smsChartSettingsHF.scheduleSettings.frequency}} for {{smsChartSettingsHF.scheduleSettings.duration.period}} {{smsChartSettingsHF.scheduleSettings.duration.units}}. Started : {{smsChartSettingsHF.scheduleSettings.startDate}}

\n

- {{smsChartSettingsHF.scheduleSettings.endDate}}

\n

|

\n

Edit

\n
\n
\n

Stopped by: {{customScheduleSettings?.stoppedBy}} on {{customScheduleSettings?.stoppedAt}} | Edit

\n
\n
\n
\n
\n\n\n \n\n\n \n\n\n ","import {\n Component,\n OnInit,\n Input,\n SimpleChanges,\n OnChanges,\n HostListener,\n} from '@angular/core';\nimport * as am4core from '@amcharts/amcharts4/core';\nimport * as am4charts from '@amcharts/amcharts4/charts';\nimport * as am5 from '@amcharts/amcharts5';\nimport * as am5xy from '@amcharts/amcharts5/xy';\nimport am4themes_animated from '@amcharts/amcharts4/themes/animated';\nimport am5themes_animated from '@amcharts/amcharts5/themes/Animated';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { Patient } from '@shared/models/patient';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { faChartLine, faList } from '@fortawesome/free-solid-svg-icons';\nimport {\n Alert,\n} from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/alert';\nimport { common as wp, wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\nimport {\n SubComponentId,\n ComponentId,\n ActionId,\n} from '@shared/models/audit-constants';\nimport moment from 'moment';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { wpdb } from '@hcd-caravanhealth/pkg-wptypes';\nimport { ChangeDetectorRef } from '@angular/core';\n\n\n\nexport interface SMSCopdChartCompletion {\n date?: string;\n dateLabel?: string;\n msg?: string;\n time?: number;\n type?: string;\n Yes?: number;\n No?: number;\n Other?: number;\n}\n\ntype SmsChartSettings = {\n chartRange: string;\n completions: any[] | null;\n chartType: string;\n fourWeeksReports?: any;\n sixMonthReports?: any;\n listToChartToggle?: any;\n scheduleSettings?: SMSScheduleSettings;\n};\n\ntype SMSScheduleSettings = {\n startDate: string;\n endDate?: string;\n stoppedDate?: string;\n stoppedBy?: {\n firstName?: string;\n lastName?: string;\n }\n frequency: string;\n duration: wpapi.model.Duration;\n currentStep: number;\n totalSteps: number;\n phases: Array;\n};\n\ntype CustomScheduleSettings = {\n startDate?: string;\n frequency?: string;\n stratedBy?: string;\n stoppedBy?: string;\n stoppedAt?: string;\n};\n\ntype frequency = {\n Monthly: string;\n Weekdays: string;\n MWF: string;\n Weekly: string;\n Biweekly: string;\n};\n\n\n@Component({\n selector: 'coach-patient-summary',\n templateUrl: './patient-summary.component.html',\n styleUrls: ['./patient-summary.component.scss'],\n})\nexport class PatientSummaryComponent implements OnInit, OnChanges {\n @Input() public patient: Patient;\n @Input() public patientCompletions: wpdb.model.Completion[];\n @Input() public patientTasks: wpdb.model.Task[];\n @Input() public tier: IHierarchyTier;\n showStandardSchedule = false;\n showCustomSchedule = false;\n schedulePhases: Array = []\n isMobile = true;\n faChartLine = faChartLine;\n faList = faList;\n bpChartSettings: any = {};\n sugarChartSettings: any = {};\n weightChartSettings: any = {};\n subType: string;\n enrolledPrograms: any = {\n hasCOPD: false,\n hasHF: false\n }\n programCompletions: any = {};\n private get tierId() {\n return this?.tier?.selectedTierId;\n }\n private get patientId() {\n return this?.patient?.carePatient?._id;\n }\n mask = new MaskPipe();\n msgCategories: { [key: string]: { label: string, value: number } } = {\n OK: { label: \"1\", value: 1 },\n messageFromUser: { label: \"1\", value: 1 },\n trouble: { label: \"2\", value: -1 },\n createAlert: { label: \"2\", value: -1 }\n }\n smsChartSettingsCOPD: SmsChartSettings = {\n chartRange: \"4w\",\n completions: null,\n chartType: \"sms\"\n };\n\n smsChartSettingsHF: SmsChartSettings = {\n chartRange: \"4w\",\n completions: null,\n chartType: \"sms\"\n }\n isScheduleCustom: boolean = false;\n isScheduleAdaptive: boolean = false;\n customScheduleSettings: CustomScheduleSettings;\n Adaptivephases: Array;\n stoppedByUser: string;\n frequency: frequency = {\n Monthly: 'monthly',\n Weekdays: 'weekday',\n MWF: 'mwf',\n Weekly: 'weekly',\n Biweekly: 'biweekly'\n }\n isCustomScheduleActive: boolean;\n isScheduleStopped: boolean = false;\n scheduleProgram: string = \"\";\n\n\n constructor(\n private PatientService: PatientService,\n private auditService: AuditService,\n private cdr: ChangeDetectorRef\n ) {\n am4core.useTheme(am4themes_animated);\n let COPDTask = this.patient?.tasks?.find(task => task.type == \"twilioStudioFlow\" && task.subType == \"COPD\");\n if (COPDTask) {\n this.getReport(COPDTask, \"COPD\");\n }\n let HFTask = this.patient?.tasks?.find(task => task.type == \"twilioStudioFlow\" && task.subType === \"Heart Failure\");\n if (HFTask) {\n this.getReport(HFTask, \"HF\");\n }\n }\n ngOnInit() {\n this.isMobile = window.innerWidth < 400;\n }\n\n\n ngAfterViewInit(){\n this.buildCharts();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.patientId || this.patientCompletions || this.patientTasks) {\n if (!this.bpChartSettings.reportsData) {\n this.renderChart(\n this.patientId,\n 'bpChartSettings',\n 'bloodPressure',\n 'bpChart',\n 'Blood Pressure',\n [\n {\n label: 'systolic',\n rangeLabel: 'systolic',\n title: 'Systolic',\n color: 'rgba(50, 157, 189, 0.5)',\n },\n {\n label: 'diastolic',\n rangeLabel: 'diastolic',\n title: 'Diastolic',\n color: 'rgba(243, 140, 32, 0.6)',\n },\n ],\n true\n );\n }\n if (!this.sugarChartSettings.reportsData) {\n this.renderChart(\n this.patientId,\n 'sugarChartSettings',\n 'bloodSugar',\n 'sugarChart',\n 'Blood Sugar',\n [\n {\n label: 'bloodSugar',\n rangeLabel: 'bloodSugar',\n title: 'Sugar',\n color: 'rgba(50, 157, 189, 0.5)',\n },\n ],\n true\n );\n }\n if (!this.bpChartSettings.reportsData) {\n this.renderChart(\n this.patientId,\n 'weightChartSettings',\n 'weight',\n 'weightChart',\n 'Weight',\n [\n {\n label: 'weight',\n rangeLabel: 'weight',\n title: 'Weight',\n color: 'rgba(50, 157, 189, 0.5)',\n },\n ],\n true\n );\n }\n\n let twilioStudioTasks = this.patient.tasks?.filter(task => task.type == \"twilioStudioFlow\");\n let enrolledProgramsList = twilioStudioTasks.map(task => task.subType);\n\n enrolledProgramsList.forEach(subType => {\n if (subType === \"COPD\") {\n this.enrolledPrograms.hasCOPD = true;\n }\n else if (subType === \"Heart Failure\") {\n this.enrolledPrograms.hasHF = true;\n }\n })\n this.cdr.detectChanges();\n this.buildCharts();\n\n\n this.auditService.auditLog(\n 'Patient Summary',\n ComponentId.Dashboard,\n SubComponentId.PatientSummary,\n ActionId.PHIAccess,\n this.patient.chPatId,\n this.tier,\n null\n );\n }\n }\n\n async buildCharts(){\n if (this.patient.completions && (!(this.smsChartSettingsCOPD.completions?.length) || !(this.smsChartSettingsHF.completions?.length)) && this.patient.tasks?.find(task => task.type == \"twilioStudioFlow\")) {\n if (this.enrolledPrograms.hasCOPD) {\n let programTask = this.patient.tasks?.find(task => task.type == \"twilioStudioFlow\" && task.subType == \"COPD\");\n let report = this.getReport(programTask, \"COPD\");\n this.programCompletions = this.patient.completions?.filter(completions => completions.taskId == programTask._id);\n this.smsChartSettingsCOPD.completions = this.prepareCompletionsIntoChartColumns(this.programCompletions);\n this.create4WeeksSMSCOPDChart(\"smsChart4weeksCOPD\", this.smsChartSettingsCOPD.completions.filter(r => moment(r.date).isAfter(moment().subtract(4, \"week\"))), this.smsChartSettingsCOPD);\n this.create6MonthSMSCOPDChart(\"smsChart6monthCOPD\", this.smsChartSettingsCOPD.completions.filter(r => moment(r.date).isAfter(moment().subtract(6, \"month\"))), this.smsChartSettingsCOPD);\n }\n if (this.enrolledPrograms.hasHF) {\n let programTask = this.patient.tasks?.find(task => task.type == \"twilioStudioFlow\" && task.subType == \"Heart Failure\");\n this.programCompletions = this.patient.completions?.filter(completions => completions.taskId == programTask._id);\n this.smsChartSettingsHF.completions = this.prepareCompletionsIntoChartColumns(this.programCompletions);\n let report = this.getReport(programTask, \"HF\");\n this.create4WeeksSMSCOPDChart(\"smsChart4weeksHF\", this.smsChartSettingsHF.completions.filter(r => moment(r.date).isAfter(moment().subtract(4, \"week\"))), this.smsChartSettingsHF);\n this.create6MonthSMSCOPDChart(\"smsChart6monthHF\", this.smsChartSettingsHF.completions.filter(r => moment(r.date).isAfter(moment().subtract(6, \"month\"))), this.smsChartSettingsHF);\n }\n\n };\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.isMobile = window.innerWidth < 400;\n }\n\n prepareCompletionsIntoChartColumns(completions: wpdb.model.TwilioCompletion[]): SMSCopdChartCompletion[] {\n let result: SMSCopdChartCompletion[] = [];\n completions.forEach(completion => {\n // this.subType = this.patient.tasks?.find(task => (task.type == \"twilioStudioFlow\" && (task._id == new ObjectId(completion.taskId)))).subType;\n if (!!(completion.event?.msg) && completion.taskType == \"twilioStudioFlow\") {\n try {\n let SMSCopdChartCompletion: SMSCopdChartCompletion = {\n date: completion.event.time,\n dateLabel: moment(completion.event.time).format('MMMM Do YYYY, h:mm:ss a'),\n msg: completion.event.msg,\n time: moment(completion.event.time).toDate().getTime()\n }\n let msgCategory = completion.msgCategory || completion.event?.event;\n if (this.msgCategories[msgCategory]) {\n SMSCopdChartCompletion[this.msgCategories[msgCategory]?.label] = this.msgCategories[msgCategory]?.value;\n } else {\n SMSCopdChartCompletion.Other = -1;\n }\n SMSCopdChartCompletion.type = this.msgCategories[msgCategory]?.label || 'Other';\n result.push(SMSCopdChartCompletion);\n } catch (error) {\n console.error(error)\n }\n }\n })\n return result.sort((a, b) => {\n return moment(a.date).isAfter(moment(b.date)) ? 1 : moment(a.date).isBefore(moment(b.date)) ? -1 : 0\n });\n }\n // =========================================== CHART LOGIC ===========================================\n // Documentation read here => https://www.amcharts.com/docs/v4/\n\n async renderChart(\n patientId: string,\n chartObjectName: string,\n chartType: string,\n chartId: string,\n chartLabel: string,\n labels: any[],\n includeGoals?: boolean\n ) {\n\n let reportsData = this[chartObjectName].completions || await this.PatientService.getUserChartReports(patientId, chartType, null, null);\n if (!reportsData || reportsData.length < 1) {\n return;\n }\n\n reportsData.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());\n\n this[chartObjectName] = {\n days: 'all',\n listToChartToggle: false,\n chartDateReserve: [],\n reportsData: reportsData,\n dataExists: true,\n chart: this.createChart(chartId),\n chartLabel: chartLabel,\n chartType: chartType,\n tableDisplayDays: 'all',\n };\n let chartObject = this[chartObjectName];\n this.setupChartSettings(chartObject.chart);\n chartObject.chart.data = this.convertReportsData(reportsData, labels);\n\n\n\n let reports = chartObject.chart.data;\n\n let lastReport = reports[reports.length - 1];\n if (includeGoals) {\n let firstReportCreatedAt = reports[0]?.createdAt\n ? moment(reports[0]?.createdAt)\n .subtract(1, 'day')\n .format('YYYY-MM-DD HH:mm:ss')\n : null;\n\n // SET 1st and last GOALS\n if (reports?.filter((data) => data.goal).length > 0) {\n // SET OPENING GOAL\n for (let report = 0; report < reports.length; report++) {\n if (\n reports[report].goal_effectiveOn &&\n moment(reports[report].goal_effectiveOn).isBefore(\n moment(firstReportCreatedAt)\n )\n ) {\n reports[report].goal_effectiveOn = firstReportCreatedAt;\n } else {\n break;\n }\n }\n // ADD CLOSING GOAL\n let closingGoal = {\n goal_effectiveOn: lastReport?.createdAt\n ? moment(lastReport.createdAt)\n .add(1, 'day')\n .format('YYYY-MM-DD HH:mm:ss')\n : null,\n };\n reports.push(closingGoal);\n }\n\n } else {\n\n }\n try {\n // CREATE CHART LINES\n labels.forEach((l) => {\n if (includeGoals) {\n this.createChartLines(l.label, l.title, l.color, chartObject);\n if (reports.filter((data) => data.goal).length > 0) {\n (reports[reports.length - 1][`goal_${l.rangeLabel}_bottom`] =\n lastReport[`goal_${l.rangeLabel}_bottom`]),\n (reports[reports.length - 1][`goal_${l.rangeLabel}_top`] =\n lastReport[`goal_${l.rangeLabel}_top`]);\n this.createBackgroundGoalLine(\n chartObject,\n `goal_${l.rangeLabel}_bottom`,\n `goal_${l.rangeLabel}_top`,\n 0.3,\n l.color,\n l.color,\n `goal_effectiveOn`\n );\n this.createBackgroundGoalLine(\n chartObject,\n null,\n `goal_${l.rangeLabel}_bottom`,\n null,\n l.color,\n null,\n `goal_effectiveOn`\n );\n }\n } else {\n // this.createColumnLines(l.label, l.title, l.color, chartObject);\n }\n });\n chartObject.chart.legend = new am4charts.Legend();\n chartObject.chart.cursor = new am4charts.XYCursor();\n chartObject.chart.scrollbarX = new am4core.Scrollbar();\n } catch (error) {\n console.error(error)\n }\n }\n createChart(chartId: string): am4charts.Chart {\n let chart = am4core.create(chartId, am4charts.XYChart);\n chart.dateFormatter.inputDateFormat = 'yyyy-MM-dd HH:mm:ss';\n return chart;\n }\n create4WeeksSMSCOPDChart(chartId, reports, smsChartSettings): void {\n\n // Create Y-axis\n try {\n let root = am5.Root.new(chartId);\n root.setThemes([\n am5themes_animated.new(root)\n ]);\n\n\n // Create chart\n // https://www.amcharts.com/docs/v5/charts/xy-chart/\n let chart = root.container.children.push(am5xy.XYChart.new(root, {\n panX: false,\n panY: false,\n wheelX: \"panX\",\n wheelY: \"zoomX\",\n layout: root.verticalLayout\n }));\n\n // Add cursor\n // https://www.amcharts.com/docs/v5/charts/xy-chart/cursor/\n let cursor = chart.set(\"cursor\", am5xy.XYCursor.new(root, {\n behavior: \"zoomX\"\n }));\n cursor.lineY.set(\"visible\", false);\n\n // Create axes\n // https://www.amcharts.com/docs/v5/charts/xy-chart/axes/\n let xAxis = chart.xAxes.push(am5xy.DateAxis.new(root, {\n maxDeviation: 0,\n baseInterval: {\n timeUnit: \"day\",\n count: 1\n },\n renderer: am5xy.AxisRendererX.new(root, {}),\n tooltip: am5.Tooltip.new(root, {})\n }));\n\n let yRenderer = am5xy.AxisRendererY.new(root, {})\n yRenderer.labels.template.set('visible', false); // removes labels https://stackoverflow.com/questions/71766069/amcharts-5-remove-y-axis\n\n let yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, {\n renderer: yRenderer,\n min: -3,\n max: 3,\n }));\n\n // SET UP LEGEND\n let legend = chart.children.push(am5.Legend.new(root, {\n centerX: am5.p50,\n x: am5.p50\n }));\n\n // SET UP COLUMNS/SERIES\n const makeSeries = function(name, backgroundColor) {\n let series = chart.series.push(am5xy.ColumnSeries.new(root, {\n name: name,\n xAxis: xAxis,\n yAxis: yAxis,\n valueYField: name,\n valueXField: \"time\",\n tooltip: am5.Tooltip.new(root, {\n labelText: \"{msg}\\n{dateLabel}\"\n }),\n fill: am5.color(backgroundColor)\n }));\n\n series.data.setAll(reports.filter(el => el.hasOwnProperty(name)));\n series.appear();\n series.columns.template.setAll({\n cornerRadiusTL: 5,\n cornerRadiusTR: 5,\n width: 15\n });\n // add series into legend\n legend.data.push(series);\n };\n\n // add series\n makeSeries(\"1\", \"rgba(154, 187, 190, 1)\");\n makeSeries(\"2\", \"rgba(250, 86, 9, 1)\");\n makeSeries(\"Other\", \"rgba(250, 212, 20, 1)\");\n\n\n chart.appear(1000, 100);\n smsChartSettings.fourWeeksReports = reports\n } catch (error) {\n console.error(error)\n }\n\n }\n create6MonthSMSCOPDChart(chartId, reports, smsChartSettings): void {\n let dataByMonth = {};\n\n let data = [];\n reports.forEach(completion => {\n try {\n let completionMonth = moment(completion.date).startOf('month').valueOf();\n if (!dataByMonth[completionMonth]) {\n dataByMonth[completionMonth] = [];\n }\n dataByMonth[completionMonth].push(completion)\n } catch (error) {\n console.error(error)\n }\n })\n let sixMonthsAgo = moment().subtract(5, \"month\").startOf('month');\n while (sixMonthsAgo.isBefore(moment())) {\n let monthSum = {\n \"1\": 0,\n \"2\": 0,\n \"Other\": 0,\n \"month\": moment(Number(sixMonthsAgo)).format('MMMM')\n };\n if (dataByMonth[sixMonthsAgo.valueOf()]) {\n dataByMonth[sixMonthsAgo.valueOf()].forEach(completion => {\n monthSum[completion.type]++;\n });\n }\n data.push(monthSum);\n sixMonthsAgo.add(1, \"month\")\n }\n let root = am5.Root.new(chartId);\n root.numberFormatter.setAll({\n numberFormat: \"#,###\",\n numericFields: [\"valueY\"]\n })\n\n let chart = root.container.children.push(am5xy.XYChart.new(root, {\n panX: false,\n panY: false,\n wheelX: \"panX\",\n wheelY: \"zoomX\",\n layout: root.verticalLayout\n }));\n\n // Add scrollbar\n // https://www.amcharts.com/docs/v5/charts/xy-chart/scrollbars/\n chart.set(\"scrollbarX\", am5.Scrollbar.new(root, {\n orientation: \"vertical\",\n forceHidden: true\n }));\n\n\n\n // Create axes\n // https://www.amcharts.com/docs/v5/charts/xy-chart/axes/\n let xAxis = chart.xAxes.push(am5xy.CategoryAxis.new(root, {\n categoryField: \"month\",\n renderer: am5xy.AxisRendererX.new(root, {}),\n tooltip: am5.Tooltip.new(root, {\n labelText: 'test'\n }),\n }));\n\n xAxis.data.setAll(data);\n // Y-Axis\n // let yRenderer = am5xy.AxisRendererY.new(root, { })\n // yRenderer.labels.template.set('visible', false); // removes labels https://stackoverflow.com/questions/71766069/amcharts-5-remove-y-axis\n let yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, {\n min: 0,\n renderer: am5xy.AxisRendererY.new(root, {})\n }));\n\n\n // Add legend\n // https://www.amcharts.com/docs/v5/charts/xy-chart/legend-xy-series/\n let legend = chart.children.push(am5.Legend.new(root, {\n centerX: am5.p50,\n x: am5.p50\n }));\n\n\n // Add series\n // https://www.amcharts.com/docs/v5/charts/xy-chart/series/\n function makeSeries(name, backgroundColor) {\n let series = chart.series.push(am5xy.ColumnSeries.new(root, {\n name: name,\n // stacked: true,\n xAxis: xAxis,\n yAxis: yAxis,\n valueYField: name,\n categoryXField: \"month\",\n fill: am5.color(backgroundColor),\n sequencedInterpolation: true,\n marginLeft: -5,\n marginRight: -5,\n }));\n\n series.columns.template.setAll({\n tooltipText: \"{name}: {valueY}\",\n tooltipY: am5.percent(10),\n width: am5.percent(90)\n });\n series.data.setAll(data);\n\n // Make stuff animate on load\n // https://www.amcharts.com/docs/v5/concepts/animations/\n series.appear();\n\n series.bullets.push(function () {\n return am5.Bullet.new(root, {\n sprite: am5.Label.new(root, {\n text: \"{valueY}\",\n fill: root.interfaceColors.get(\"alternativeText\"),\n centerY: am5.p50,\n centerX: am5.p50,\n populateText: true\n })\n });\n });\n\n legend.data.push(series);\n }\n\n makeSeries(\"1\", \"rgba(154, 187, 190, 1)\");\n makeSeries(\"2\", \"rgba(250, 86, 9, 1)\");\n makeSeries(\"Other\", \"rgba(250, 212, 20, 1)\");\n smsChartSettings.sixMonthReports = data\n return;\n }\n setupChartSettings(chart: any) {\n let dateAxis = chart.xAxes.push(new am4charts.DateAxis());\n dateAxis.renderer.grid.template.location = 0;\n dateAxis.renderer.minGridDistance = 50;\n dateAxis.baseInterval = {\n timeUnit: 'minute',\n count: 1,\n };\n dateAxis.tooltipDateFormat = 'HH:mm, d MMMM';\n chart.yAxes.push(new am4charts.ValueAxis());\n }\n createChartLines(\n field: string,\n name: string,\n color: string,\n targetChartObj: any\n ): void {\n let series = targetChartObj.chart.series.push(new am4charts.LineSeries());\n series.dataFields.valueY = field;\n series.dataFields.dateX = 'date';\n series.name = name;\n series.tooltipText = `[b]{valueY}[/]`;\n series.strokeWidth = 8;\n series.tooltip.getFillFromObject = false;\n series.tooltip.background.fill = am4core.color(color);\n if (color) {\n series.stroke = am4core.color(color);\n }\n\n let circleBullet = series.bullets.push(new am4charts.CircleBullet());\n circleBullet.circle.radius = 10;\n circleBullet.circle.fill = am4core.color(color);\n circleBullet.circle.fillOpacity = 0.5;\n circleBullet.circle.stroke = am4core.color(color);\n circleBullet.circle.strokeOpacity = 0.5;\n }\n createBackgroundGoalLine(\n targetChartObj: any,\n openValueY: string,\n valueY: string,\n fillOpacity: number,\n stroke: am4core.Color,\n fill: am4core.Color,\n effectiveOn?\n ): void {\n let backgroundGoalLine = targetChartObj.chart.series.push(\n new am4charts.LineSeries()\n );\n if (effectiveOn) backgroundGoalLine.dataFields.dateX = effectiveOn;\n // || null;\n backgroundGoalLine.dataFields.valueY = valueY;\n backgroundGoalLine.sequencedInterpolation = true;\n if (openValueY) {\n backgroundGoalLine.dataFields.openValueY = openValueY;\n }\n if (fillOpacity) {\n backgroundGoalLine.fillOpacity = fillOpacity;\n }\n if (stroke) {\n backgroundGoalLine.stroke = stroke;\n }\n if (fill) {\n backgroundGoalLine.fill = fill;\n }\n backgroundGoalLine.tensionX = 0.8;\n backgroundGoalLine.hiddenInLegend = true;\n backgroundGoalLine.hideTooltip();\n }\n isDateInRange(date: any, range: any): boolean {\n if (!range || range == 'all') {\n return true;\n }\n let rangeDate = new Date();\n rangeDate.setDate(rangeDate.getDate() - range);\n return rangeDate.getTime() < new Date(date).getTime();\n }\n convertReportsData(dataList: Array, labels: any[]): Array {\n dataList.forEach((el) => {\n el.date = moment(el.recordedAt ? el.recordedAt : el.createdAt).format(\n 'YYYY-MM-DD HH:mm:ss'\n );\n labels.forEach((l) => {\n el[`goal_${l.label}_top`] =\n el.goal?.[l.label]?.rangeTop || el.goal?.[l.label]?.top || null;\n el[`goal_${l.label}_bottom`] =\n el.goal?.[l.label]?.rangeBottom || el.goal?.[l.label]?.bottom || null;\n });\n\n el.goal_effectiveOn = el.goal?.effectiveOn\n ? moment(el.goal.effectiveOn).format('YYYY-MM-DD HH:mm:ss')\n : null;\n });\n return dataList;\n }\n\n // =========================================== EXPORT FUNCTIONS ======================================\n\n export(action: 'csv' | 'copy', target: any): void {\n try {\n let filename: string = \"\";\n let extraColumns;\n if (target.chartType == 'bloodPressure') {\n extraColumns = `\"BP\", \"Pulse\",`;\n } else if (target.chartType == 'bloodSugar') {\n extraColumns = '\"Sugar\", \"Last ate\",';\n } else if (target.chartType == 'weight') {\n extraColumns = '\"Weight,\"';\n }\n let data = `\"Patient Name: ${this.patient.lastName}, ${this.patient.firstName}\"\\n`;\n data += `\"DOB: ${this.patient.dob}\"\\n`;\n data += `\"MRN: ${this.patient.mrn ? this.mask.transform(this.patient.mrn, 6) : 'not found'}\"\\n`;\n let today: string = moment().format('l');\n let startDate: string = \"\";\n if (target.chartType !== 'sms') {\n startDate = `${target.tableDisplayDays !== 'all' ? `from ${moment(moment().subtract(target.tableDisplayDays, 'days')).format('l')} to ` : ''}`;\n } else {\n startDate = `from ${target.chartRange == '4w' ? `${moment().subtract(4, \"weeks\").format(\"l\")}` : `${moment().subtract(5, \"months\").format(\"l\")}`} to `;\n }\n filename = `Summary Report ${startDate}${today}`;\n data += `\"${filename}\"\\n`;\n data += `\"Date/Time\",`;\n if (target.chartType == 'bloodPressure') {\n data += `\"BP\", \"Pulse\"`;\n } else if (target.chartType == 'bloodSugar') {\n data += '\"Sugar\", \"Last ate\"';\n } else if (target.chartType == 'weight') {\n data += '\"Weight\"';\n } else if (target.chartType == 'sms') {\n if (target.chartRange == '4w') {\n data += '\"Message\", Category';\n } else {\n data += 'Yes, No, Other';\n }\n }\n if (target.chartType !== 'sms') {\n data += `,\"Comment\", \"Alert\"`;\n }\n data += `\\n`;\n (target.reportsData || (target.chartRange == '4w' ? target.fourWeeksReports : target.sixMonthReports))?.forEach((report) => {\n if (report._id && (target.tableDisplayDays == 'all' || moment(report.createdAt).isAfter(moment().subtract(target.tableDisplayDays, 'days')))) {\n let alertToText = '';\n this.connectAlertWithCompletion(report._id).forEach((alert, idx) => {\n alertToText += `${this.connectAlertWithCompletion(report._id).length > 1\n ? `${idx + 1}) `\n : ''\n }Desc: ${alert.desc}${alert.isActive\n ? ''\n : `; Closed by ${alert.inactiveByFullName || '[name not found]'\n } ${alert.inactiveAt\n ? `at ${moment(alert.inactiveAt).format(\n 'MMM Do YYYY h:mm:ss a'\n )}`\n : ''\n }`\n }. `;\n });\n data += `\"${moment(report.createdAt || report.date).format('lll')}\",`;\n if (target.chartType == 'bloodPressure') {\n data += `${report.systolic}/${report.diastolic}, ${report.pulse},`;\n } else if (target.chartType == 'bloodSugar') {\n data += `${report.bloodSugar}, ${report.lastAte} ${report.lastAteUnits},`;\n } else if (target.chartType == 'weight') {\n data += `${report.weight},`;\n }\n data += `${report.comment || ''}, ${alertToText}\\n`;\n } else if (target.chartType == 'sms') {\n if (target.chartRange == '4w') {\n data += `\"${moment(report.date).format('lll')}\", ${report.msg}, ${report.type}\\n`;\n } else {\n data += `\"${report.month}\", ${report.yes}, ${report.no}, ${report.other}\\n`;\n }\n }\n });\n if (action == 'copy') {\n let el = document.createElement('textarea');\n el.value = data;\n document.body.appendChild(el);\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n } else {\n let hiddenElement = document.createElement('a');\n hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(data);\n hiddenElement.target = '_blank';\n hiddenElement.download = `${filename}.csv`;\n hiddenElement.click();\n }\n } catch (error) {\n console.error(error)\n }\n }\n\n // =========================================== HELPERS ===============================================\n connectAlertWithCompletion(completionId: string): Alert[] {\n return this.patient?.alerts\n ? this.patient.alerts.handled\n .filter((a) => a.relatedObjects[0]?.id == completionId)\n .concat(\n this.patient.alerts.unhandled.filter(\n (a) => a.relatedObjects[0]?.id == completionId\n )\n )\n : [];\n }\n\n toggleStandardSchedule() {\n if (this.isScheduleCustom) {\n this.showCustomSchedule = !this.showCustomSchedule;\n }\n else {\n this.showStandardSchedule = !this.showStandardSchedule;\n }\n };\n\n hideStandardSchedule(value: boolean) {\n this.showStandardSchedule = false;\n if (value) {\n this.showCustomSchedule = true;\n }\n else{\n this.cdr.detectChanges();\n this.buildCharts();\n }\n }\n\n hideCustomSchedule(value: boolean) {\n this.showCustomSchedule = false;\n if (value) {\n this.showCustomSchedule = true;\n }\n }\n\n async getReport(twilioTask, program) {\n this.scheduleProgram = program;\n let report = this.PatientService.getSMSScheduleReport(this.patientId, twilioTask._id);\n this.isScheduleCustom = twilioTask?.schedule?.isCustom === true || twilioTask?.scheduleRevisions && !twilioTask?.schedule;\n this.isScheduleStopped = twilioTask?.scheduleRevisions && !twilioTask?.schedule\n this.isScheduleAdaptive = twilioTask?.schedule?.isAdaptive === true;\n report.then((res) => {\n if (this.isScheduleAdaptive) {\n let currentReport = res.report.find((report) => report.status === 'Current') as wpapi.model.TwilioAdaptiveScheduleReport\n let stoppedReport = res.report.find((report) => report.status === 'Stopped') as wpapi.model.TwilioAdaptiveScheduleReport\n if (currentReport) {\n let currentPhase = currentReport.phases.find((phase) => phase.status === 'Current')\n if (currentPhase) {\n let scheduleSettings: SMSScheduleSettings = {\n startDate: new Date(currentPhase.startDate.year, currentPhase.startDate.month - 1, currentPhase.startDate.date).toLocaleDateString('en-US'),\n endDate: new Date(currentPhase.finishDate.year, currentPhase.finishDate.month - 1, currentPhase.finishDate.date).toLocaleDateString('en-US'),\n frequency: currentPhase.frequencyDescription,\n duration: currentPhase.duration,\n currentStep: currentReport.phases.indexOf(currentPhase) + 1,\n totalSteps: currentReport.phases.length,\n phases: currentReport.phases\n };\n this.schedulePhases = scheduleSettings.phases;\n if (program === \"COPD\") {\n this.smsChartSettingsCOPD.scheduleSettings = scheduleSettings;\n }\n else if (program == \"HF\") {\n this.smsChartSettingsHF.scheduleSettings = scheduleSettings;\n }\n\n this.Adaptivephases = currentReport.phases;\n }\n } else if(stoppedReport) {\n let stoppedPhase = stoppedReport.phases.find((phase) => phase.status == 'Stopped')\n if (stoppedPhase) {\n let scheduleSettings: SMSScheduleSettings = {\n startDate: new Date(stoppedPhase.startDate.year, stoppedPhase.startDate.month - 1, stoppedPhase.startDate.date).toLocaleDateString('en-US'),\n endDate: new Date(stoppedPhase.finishDate.year, stoppedPhase.finishDate.month - 1, stoppedPhase.finishDate.date).toLocaleDateString('en-US'),\n frequency: stoppedPhase.frequencyDescription,\n duration: stoppedPhase.duration,\n currentStep: stoppedReport.phases.indexOf(stoppedPhase) + 1,\n totalSteps: stoppedReport.phases.length,\n phases: stoppedReport.phases,\n stoppedBy: stoppedPhase?.stoppedBy,\n stoppedDate: new Date(stoppedPhase.stopDate.year, stoppedPhase.stopDate.month - 1, stoppedPhase.stopDate.date).toLocaleDateString('en-US'),\n };\n\n this.schedulePhases = scheduleSettings.phases;\n if (program === \"COPD\"){\n this.smsChartSettingsCOPD.scheduleSettings = scheduleSettings;\n }\n else if (program == \"HF\"){\n this.smsChartSettingsHF.scheduleSettings = scheduleSettings;\n }\n }\n }\n }\n else if (this.isScheduleCustom && !this.isScheduleStopped) {\n this.getcustomScheduleSettings(res, true);\n }\n else if ((!this.isScheduleAdaptive && !this.isScheduleCustom) || this.isScheduleStopped) {\n this.getcustomScheduleSettings(res, false);\n }\n })\n .catch((error) => {\n console.error(error);\n })\n }\n\n getcustomScheduleSettings(res, isCustomActive) {\n if (isCustomActive) {\n let previousAdaptiveReport = res.report.find((report) => report.status === \"Stopped\" && report.isCustom == false) as wpapi.model.TwilioAdaptiveScheduleReport;\n this.Adaptivephases = previousAdaptiveReport?.phases;\n let customReport = res.report.find((report) => report.status === 'Current' && report.isCustom == true) as wpapi.model.TwilioNonAdaptiveScheduleReport;\n this.customScheduleSettings = {\n startDate: new Date(customReport?.startDate?.year, customReport?.startDate?.month - 1, customReport?.startDate?.date).toLocaleDateString('en-US'),\n frequency: this.mapCustomFrequency(customReport?.frequency),\n stratedBy: (customReport?.createdBy?.firstName)? customReport?.createdBy?.firstName + ' ' + customReport?.createdBy?.lastName : customReport?.createdBy?.email\n }\n let stoppedAdaptivePhase = previousAdaptiveReport?.phases.find((phase) => phase.status == 'Stopped');\n this.stoppedByUser = (stoppedAdaptivePhase?.stoppedBy?.firstName)? stoppedAdaptivePhase?.stoppedBy?.firstName + ' ' + stoppedAdaptivePhase?.stoppedBy?.lastName : stoppedAdaptivePhase?.stoppedBy?.email \n }\n else if ((!this.isScheduleAdaptive && !this.isScheduleCustom) || this.isScheduleStopped) {\n let customReport = res.report.find((report) => report.status === 'Stopped' && report.isCustom == true) as wpapi.model.TwilioNonAdaptiveScheduleReport;\n let previousAdaptiveReport = res.report.find((report) => report.status === \"Stopped\" && report.isCustom == false) as wpapi.model.TwilioAdaptiveScheduleReport;\n this.Adaptivephases = previousAdaptiveReport?.phases;\n this.customScheduleSettings = {\n stoppedBy: (customReport?.stoppedBy?.firstName)? customReport?.stoppedBy?.firstName + ' ' + customReport?.stoppedBy?.lastName : customReport?.stoppedBy?.email, \n stoppedAt: new Date(customReport?.stoppedAt).toLocaleDateString('en-US', { month: '2-digit', day: '2-digit', year: 'numeric' })\n }\n }\n }\n\n mapCustomFrequency(frequency: string) {\n switch(frequency) {\n case this.frequency.Monthly:\n return \"First Mon of each month\";\n case this.frequency.MWF:\n return \"First Mon of each month\";\n case this.frequency.Weekdays:\n return \"Mon - Fri of each week\";\n case this.frequency.Weekly: \n return \"Mon of each week\"\n case this.frequency.Biweekly: \n return \"Every other Mon\";\n }\n }\n\n\n handleCancel(){\n this.showCustomSchedule = false; \n this.showStandardSchedule = false;\n this.cdr.detectChanges();\n this.buildCharts();\n }\n}","
\n \n
\n
\n
Invite Patient
\n
\n
\n
\n
\n
\n {{patient.displayName()}}\n
\n
\n {{patient.displayAge()}} {{patient.displayGender()}} | {{patient.displayDob()}} |\n | {{\n patient.displayIdentifier() }}\n \n \n MBI: {{patient.mbi | mask: 6 }}\n \n
\n
\n
\n \n \n
\n \n
\n \n \n
\n
\n Invalid phone format \n
\n \n \n \n
\n Invalid email \n
\n \n
\n \n \n
\n
\n \n
\n \n \n

No protocols found.

\n \n
\n \n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n {{patientClone.inviteStatus?.message}}\n\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n Patient Re-Invite Form\n
\n
\n
\n
\n \n
\n \n
\n
{{patientClone.lastName}} {{patientClone.nickName}},\n {{patientClone.firstName}}
\n

{{patientClone.email}}

\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n {{patientClone.inviteStatus?.message}}\n\n \n
\n
\n
\n","import {\n Component,\n OnInit,\n Output,\n EventEmitter,\n Input,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\nimport { OrgService } from '@shared/services/org-service/org.service';\nimport { Patient } from '@shared/models/patient'; \nimport { PatientService, ITrackApiAwvPatient, EpisodeOfCareProtocolAssignmentViewModel } from '@shared/services/patient/patient.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport _ from 'lodash';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { faUser, faFileAlt } from '@fortawesome/free-solid-svg-icons';\nimport { common } from '@hcd-caravanhealth/pkg-wptypes';\nimport { environment } from 'src/environments/environment';\nimport moment from 'moment';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\nimport {\n SubComponentId,\n ActionId,\n} from '@shared/models/audit-constants';\nimport { Activity } from '@shared/models/activity';\nimport { Protocol } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/protocol';\nimport { Procedure } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/organization';\nimport { PatientIdentifiersIssuers } from '@shared/models/module-constants';\nimport { PatientEngagement } from '@shared/enums';\nimport { ToastrService } from 'ngx-toastr';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { wpdb } from '@hcd-caravanhealth/pkg-wptypes';\n\n@Component({\n selector: 'coach-single-patient-invite-form',\n templateUrl: './single-patient-invite-form.component.html',\n styleUrls: ['./single-patient-invite-form.component.scss'],\n})\nexport class SinglePatientInviteFormComponent implements OnInit, OnChanges {\n @Input() public patient;\n @Input() public patients;\n @Output() public closeForm: EventEmitter = new EventEmitter();\n @Output() public patientInvited: EventEmitter<{ _id: string }>;\n @Input() tier: IHierarchyTier;\n\n isModuleSelectorIsOpen: boolean;\n bulkInviteStatus: { message: string; counter: number };\n patientClone: Patient & {\n inviteStatus?: { loading: number; message: string };\n } = null;\n orgData: any = null;\n selectHolder: any = {\n primaryProfessional: {},\n newProtocol: {},\n newModules: [],\n newProcedure: {\n allowedProtocols: [],\n },\n extendedFields: {},\n };\n protocols: any = [];\n protocolsById: any = {};\n modulesById: any = {};\n professionals: wpapi.model.Professional[] = null;\n professionalsById: any = {};\n inviteStatus: any = {\n loading: 0, // 0 - no activity, 1 - loading, 2 - success, -1 - failed\n message: '',\n };\n welcomeMail: any = {};\n orgId: string = null;\n formStep: 1 | 2 | 3 = 1;\n private emitter: any;\n selectedProtocol: string = null;\n selectedProcedure: string = null;\n faUser = faUser;\n faFileAlt = faFileAlt;\n bulkPatientsProfessionalId: string;\n isPatientInvited: boolean = false;\n assignedProcedures: Procedure[];\n smsEnrollmentAgreed: boolean = false;\n private currentUser: wpapi.model.Professional;\n PatientEngagement = PatientEngagement;\n isSMSInviteFlagEnabled: boolean = false;\n SMSInviteFlag: string = CareFeatureConstants.SMSInviteFlag;\n isSMSPatient: boolean = false;\n invitationEligible: boolean = false;\n\n constructor(\n private OrgService: OrgService,\n private PatientService: PatientService,\n private auditService: AuditService,\n private AuthService: AuthService,\n private toast: ToastrService,\n private featureFlagService: FeatureFlagService,\n ) {\n this.getCurrentUserInfo();\n this.isSMSInviteFlagEnabled = this.featureFlagService.hasFeatureFlag(\n this.SMSInviteFlag\n );\n } \n\n async ngOnInit() {\n this.getAndStoreProtocolsForOrg();\n this.loadPatientInviteDetailsForOrg();\n if (this.patients) {\n this.patients.forEach((p) => {\n if (p.dob) {\n p.dob = moment(p.dob).format('MM/DD/YYYY');\n }\n });\n }\n this.isPatientInvited =\n this.patient?.carePatient?.accountType === 'patient';\n this.isInvitationEligible();\n }\n\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.selectHolder = {\n primaryProfessional: {},\n newProtocol: {},\n newModules: [],\n newProcedure: {\n allowedProtocols: [],\n },\n extendedFields: {},\n };\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (\n changes.patient &&\n changes.patient.currentValue &&\n changes.patient.currentValue != changes.patient.previousValue\n ) {\n this.patientClone = _.cloneDeep(changes.patient.currentValue);\n }\n\n const smsTask = this.patient.tasks.find(task => task.isActive && task.type == \"twilioStudioFlow\")\n if(smsTask){\n this.isSMSPatient = true;\n }\n\n this.isInvitationEligible();\n\n }\n\n close(action_target: string): void {\n this.closeForm.emit(action_target);\n }\n // ======== DATA GETTERS ============\n\n isInvitationEligible() {\n for (let procedure in this.orgData?.availableProcedures) {\n if (this.orgData.availableProcedures[procedure].isSelected) {\n for (let protocol in this.orgData.availableProcedures[procedure].allowedProtocols) {\n let prot = this.orgData.availableProcedures[procedure].allowedProtocols[protocol];\n if (this.protocolsById[prot]?.isSelected) {\n if (this.doesProtocolHaveTwilioFlowTask(this.protocolsById[prot])) {\n this.invitationEligible = true\n return\n }\n }\n }\n }\n }\n }\n private async getCurrentUserInfo(): Promise {\n this.currentUser = await this.AuthService.getWellpepperUserInfo();\n }\n\n async getAndStoreProtocolsForOrg(): Promise {\n if(!this.orgId) {\n this.orgId = await this.PatientService.getWpOrgIdFromTierId(\n this.tier?.selectedTierId\n );\n }\n let protocols: any = await this.OrgService.getProtocolsForOrg(this.orgId);\n protocols.forEach((p) => {\n this.protocolsById[p._id] = p;\n this.storeModuleNames(p.modules);\n });\n };\n \n async loadPatientInviteDetailsForOrg(): Promise {\n if(!this.orgId) {\n this.orgId = await this.PatientService.getWpOrgIdFromTierId(\n this.tier?.selectedTierId\n );\n }\n this.getProfessionalsForOrg(this.orgId);\n let org: any = await this.OrgService.getOrg(this.orgId);\n\n function filterProcedureExtendedFields(fields) {\n return _.filter(fields, function (field) {\n switch (field.name) {\n case 'procedure':\n case 'procedureLaterality':\n case 'proceureLaterality': // this spelling is as-built\n return false;\n default:\n return true;\n }\n });\n }\n\n function getAvailableProceduresFromInvitations(org): any[] {\n var availableProcedures = [];\n if (org.data.invitations && org.data.invitations.extendedFields) {\n _.map(org.invitations.extendedFields, function (field) {\n switch (field.name) {\n case 'procedure':\n availableProcedures = _.map(field.options, function (option) {\n var procedure = {\n identifiers: [{ type: 'name', identifier: option.value }],\n name: option.value,\n title: option.title,\n extendedFields: [\n {\n name: 'laterality',\n title: 'Laterality',\n fieldOptions: [\n { value: '', title: 'None' },\n { value: 'Left', title: 'Left' },\n { value: 'Right', title: 'Right' },\n ],\n getTitle: function () {\n var value = this.value;\n var option = _.find(\n this.fieldOptions,\n function (o: { title: string; value: any }) {\n return o.value == value;\n }\n );\n if (option) {\n return option.title;\n }\n return value;\n },\n },\n ],\n };\n return procedure;\n });\n return false;\n }\n });\n }\n return availableProcedures;\n }\n\n if (org) {\n if (!org.availableProcedures) {\n if (org.invitations && org.invitations.extendedFields) {\n org.availableProcedures = getAvailableProceduresFromInvitations(org);\n org.invitations.extendedFields = filterProcedureExtendedFields(\n org.invitations.extendedFields\n );\n org.hasProcedures =\n org.availableProcedures &&\n Array.isArray(org.availableProcedures) &&\n org.availableProcedures.length > 0;\n } else {\n org.hasProcedures = false;\n }\n } else {\n org.hasProcedures = true;\n } \n if (org.invitations && org.invitations.extendedFields) {\n org.invitations.extendedFields = filterProcedureExtendedFields(\n org.invitations.extendedFields\n );\n }\n }\n this.orgData = org;\n }\n\n async getProfessionalsForOrg(orgId) {\n this.professionals = await this.OrgService.getProfessionalsForOrg(orgId);\n this.professionals = this.professionals.filter(\n (p) =>\n p.elegibleRoles?.filter((er) => er == 'primaryProfessional').length > 0\n );\n this.professionals.forEach((p) => {\n this.professionalsById[p._id] = p;\n });\n }\n\n storeModuleNames(modules) {\n if (modules) {\n modules.forEach(async (m) => {\n this.modulesById[m.protocolId] = await this.OrgService.getModuleName(\n m.protocolId\n );\n });\n }\n }\n\n // ========= Send Invite =============\n async sendInvite(\n patient?: Patient & { inviteStatus?: { loading: number; message: string } }, inviteInfo?: {userId: any, taskList: wpapi.model.Task[], taskId: string, userHasSeenSMSOptOut: boolean}\n ) {\n if (!patient.inviteStatus) {\n patient.inviteStatus = {\n loading: null,\n message: null,\n };\n }\n patient.inviteStatus.loading = 1;\n\n let triggerTwilioFlowForPatient: wpapi.model.Notification;\n\n if(inviteInfo) {\n triggerTwilioFlowForPatient = await this.PatientService.triggerTwilioFlowForPatient(this.orgId, inviteInfo.userId, inviteInfo.taskId, inviteInfo.userHasSeenSMSOptOut);\n\n } else {\n let userId = this.patient.carePatient._id;\n let taskList = await this.PatientService.getTasks(this.tier, this.patient);\n let task = taskList.find((task) => { \n return task.userId == userId && task.type == 'twilioStudioFlow' \n });\n let taskId = task._id;\n let userHasSeenSMSOptOut = false;\n triggerTwilioFlowForPatient = await this.PatientService.triggerTwilioFlowForPatient(this.orgId, userId, taskId, userHasSeenSMSOptOut);\n\n if (!triggerTwilioFlowForPatient) {\n patient.inviteStatus.loading = -1;\n patient.inviteStatus.message = \"Invitation failed to resend\";\n return false;\n } else {\n patient.inviteStatus.loading = 2;\n patient.inviteStatus.message = 'Successfully resent invitation';\n return true;\n }\n }\n }\n\n // ========= CREATE A NEW PATIENT =============\n async submit(\n patient: Patient & {\n inviteStatus?: { loading: number; message: string };\n professionalName?: string;\n } & {\n trackAwvPatient?: ITrackApiAwvPatient;\n },\n professionalId: string\n ) {\n if (!patient.inviteStatus) {\n patient.inviteStatus = {\n loading: null,\n message: null,\n };\n }\n patient.inviteStatus.loading = 1;\n patient.inviteStatus.message = 'Storing patient';\n\n let patientResult = await this.createUser(patient, professionalId);\n if (!patientResult) {\n patient.inviteStatus.loading = -1;\n\n if(!patient.inviteStatus.message)\n {\n\n patient.inviteStatus.message =\n patientResult?.error?.message || \"Can't create user\";\n }\n return;\n }\n let assignedProceduresAndProtocolsResult =\n await this.assignProceduresAndProtocols(\n patient,\n professionalId,\n patientResult\n );\n if (!assignedProceduresAndProtocolsResult) {\n return;\n }\n\n if(this.smsEnrollmentAgreed){\n\n let enrolledinSMSby = `${\n this.currentUser.lastName && this.currentUser.firstName\n ? ` ${this.currentUser.firstName} ${this.currentUser.lastName} `\n : `${this.currentUser.email}`\n }`;\n let invitedtoSMS: Activity = {\n type: 'invitation',\n date: new Date().toString(),\n title: 'Enrolled in SMS by ' + enrolledinSMSby,\n description: null,\n detail: null,\n };\n this.patient.activities.push(invitedtoSMS);\n this.patient.activities.sort((a, b) => {\n if (moment(a.createdAt).isAfter(moment(b.createdAt))){\n return -1;\n }\n else if (moment(a.createdAt).isSame(moment(b.createdAt))){\n return 0;\n }\n else{\n return 1;\n }\n });\n }\n patient.inviteStatus.loading = 2;\n patient.inviteStatus.message =\n 'Successfully invited and sent notification';\n let invitedAct: Activity = {\n type: 'invitation',\n date: new Date().toString(),\n title: 'Invited',\n description: null,\n detail: null,\n };\n this.patient.activities.push(invitedAct);\n window.location.reload();\n return true;\n }\n\n async createUser(\n patient: Patient & {\n inviteStatus?: { loading: number; message: string };\n professionalName?: string;\n } & {\n trackAwvPatient?: ITrackApiAwvPatient;\n },\n professionalId: string\n ): Promise {\n let date = new Date();\n this.isInvitationEligible();\n // TODO - Add a \"PatientCreate\" type in wpapi.model\n\n const orgMappedTierId =\n await this.PatientService.getWpMappedTierIdFromTierId(\n this.tier?.selectedTierId\n );\n const orgMappedTierNum =\n await this.PatientService.getWpMappedTierNumFromTierId(\n this.tier?.selectedTierId\n );\n let patientDetails: wpapi.model.Patient &\n common.PermissionedObject = {\n ACL: {\n '57980332bba6670e7409e9e5': { read: true, write: true },\n [this.orgId]: { read: true, write: true },\n [professionalId]: { read: true, write: true },\n },\n \n accountType: 'patient',\n currentTimeZoneName:\n patient.currentTimeZoneName ||\n Intl.DateTimeFormat().resolvedOptions().timeZone,\n currentTimeZoneOffsetSec:\n patient.currentTimeZoneOffsetSec || date.getTimezoneOffset() * -60,\n dob:\n patient.dob ||\n patient.trackPatient?.dob ||\n patient.trackAwvPatient?.dob, // trackAwvPatient\n email:\n patient.email ||\n patient.trackPatient?.email ||\n patient.trackAwvPatient?.email,\n firstName: patient.firstName,\n gender: this.getGenderFromString(\n patient.gender ||\n patient.trackPatient?.gender ||\n patient.trackAwvPatient?.gender\n ),\n lastName: patient.lastName,\n mbi:\n patient.mbi ||\n patient.trackPatient?.mbi ||\n patient.trackAwvPatient?.mbi,\n mrn:\n patient.mrn\n // Track API doesn't return a MRN afaik\n /* ||\n patient.trackPatient?.mrn ||\n patient.trackAwvPatient?.mrn,\n */,\n\n nickName:\n patient.nickName?.trim() ||\n patient.trackPatient?.preferredName ||\n patient.trackAwvPatient?.preferredName ||\n '',\n phoneNumber: patient.phoneNumber?.replace(/\\D+/g, '') || '',\n professionalId: professionalId,\n userMustConfirmDetails: true,\n // CC-1727 - username may have been pre-generated, don't use it for an email address which would have been collected in this form.\n username:\n patient.email ||\n patient.trackPatient?.email ||\n patient.trackAwvPatient?.email,\n identifiers: [\n // Don't save chPatId as an identifier - it's not going to be unique\n {\n type: 'custom',\n issuer: environment.patientIdentityProvider.issuer,\n subject: environment.patientIdentityProvider.formatSubject(\n orgMappedTierId,\n patient.chPatId\n ),\n createdAt: new Date().toDateString(),\n provider: 'custom'\n }\n ],\n };\n\n\n if(this.invitationEligible) {\n try {\n if(this.smsEnrollmentAgreed){\n let enrolledinSMSby = `${\n this.currentUser.lastName && this.currentUser.firstName\n ? ` ${this.currentUser.firstName} ${this.currentUser.lastName} `\n : `${this.currentUser.email}`\n }`;\n\n let today = new Date();\n let dd = String(today.getDate()).padStart(2, '0');\n let mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!\n let yyyy = today.getFullYear();\n\n patientDetails.verbalConsent = {\n acceptedBy: this.currentUser._id,\n acceptedByName: enrolledinSMSby,\n acceptedByEulaId: 'ObjectId(\"639b9ced9ebf57f25b5da44a\")', /* Hardcoded for now */\n acceptedDate: mm + '/' + dd + '/' + yyyy,\n };\n }\n }\n catch(e){\n console.log('SMS Enrollment Error:' , e);\n }\n\n }\n\n if(this.invitationEligible) {\n patientDetails.identifiers.push({\n issuer: PatientIdentifiersIssuers.SmsCarePlanPhoneNumber,\n type: 'custom',\n subject: this.PatientService.formatPhoneNumberForTwilio(patient.phoneNumber),\n createdAt: new Date().toDateString(),\n provider: 'custom',\n canBeUpdated: true\n })\n }\n if (patient?.carePatient?._id) {\n patientDetails._id = patient.carePatient._id;\n }\n let patientResult: any = await this.PatientService.createUser(\n patientDetails\n );\n if (!patientResult || patientResult.error) {\n //Temporary placeholder only, need to pre-check the dusplicate phone number/email in an earlier screen in next story.\n if(patientResult.status === 409 && this.smsEnrollmentAgreed){\n const isEmailAndSmsSubscribed = Object.values(this.protocolsById).filter((r:any)=> r.isSelected).length > 1;\n patient.inviteStatus.message =\n `This phone number ${isEmailAndSmsSubscribed ? 'or email' : ''} is already in use, please ${isEmailAndSmsSubscribed ? '' : 'update phone number or '}contact Signify Health for help`\n\n }\n return false;\n } else if (this.patientClone) {\n // Using Object.assign generates errors when assigning to read-only properties\n this.patient.refreshFromCareAndTrackPatient(\n patientResult,\n this.patientClone.trackPatient\n ); // Object.assign(patient, patientResult)\n this.patient.professional = await this.PatientService.getProfessional(\n patientResult.professionalId\n );\n this.patient.phoneNumber = Patient.formatPhoneNumber(\n this.patient.phoneNumber\n );\n } else {\n patient.carePatient = patientResult;\n patient.professionalName = (\n await this.PatientService.getProfessional(patientResult.professionalId)\n ).firstName;\n }\n\n await this.PatientService.updateTrackPatient(\n orgMappedTierId,\n orgMappedTierNum,\n {\n email: patientDetails.email,\n preferredName: patientDetails.nickName || '',\n phone: patientDetails.phoneNumber,\n tierID: orgMappedTierId,\n tierNum: orgMappedTierNum,\n carePatientId: patientResult._id,\n mbi: patientDetails.mbi,\n firstName: patient.firstName,\n lastName: patient.lastName,\n middleName: patient.middleName,\n dateOfBirth: patientDetails.dob,\n gender: patientDetails.gender?.toUpperCase()?.[0],\n chPatId: Number(patient.chPatId),\n ChPatID: Number(patient.chPatId),\n supplementalId:\n patient.supplementalId || patient.trackPatient?.supplementalID,\n }\n );\n\n this.auditService.auditLog(\n 'Invite Patient',\n PatientEngagement.PatientApp,\n SubComponentId.Invitations,\n ActionId.Insert,\n patient.chPatId,\n {\n tier: orgMappedTierNum,\n selectedTierId: orgMappedTierId,\n } as IHierarchyTier,\n null\n );\n this.patient.phoneNumber = patientDetails.phoneNumber;\n return patientResult;\n }\n async assignProceduresAndProtocols(\n patient: Patient & {\n inviteStatus?: { loading: number; message: string };\n professionalName?: string;\n } & {\n trackAwvPatient?: ITrackApiAwvPatient;\n },\n professionalId: string,\n patientResult: any\n ): Promise {\n for (let p in this.orgData.availableProcedures) {\n if (this.orgData.availableProcedures[p].isSelected) {\n patient.inviteStatus.message = `Assigning procedure ${this.orgData.availableProcedures[p].title}`;\n // assignedProcedures\n var episodeOfCare: any = { isActive: true };\n if (this.orgData.hasProcedures) {\n var newProcedure = this.orgData.availableProcedures[p];\n episodeOfCare.procedureName = newProcedure\n ? newProcedure.name\n : 'Procedure';\n if (newProcedure && newProcedure.shortName) {\n episodeOfCare.procedureShortName = newProcedure.shortName;\n }\n if (newProcedure && newProcedure.extendedFields) {\n episodeOfCare.extendedFields = newProcedure.extendedFields;\n }\n } else {\n episodeOfCare = {\n isActive: true,\n procedureName: 'Surgery',\n procedureShortName: 'Surgery',\n };\n }\n episodeOfCare.procedureTimeZoneName = professionalId\n ? this.professionalsById[professionalId].currentTimeZoneName\n : patient.currentTimeZoneName ||\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n let assignedEpisodeOfCare =\n await this.PatientService.assignEpisodeOfCare({\n episodeOfCare: episodeOfCare,\n patient: patientResult,\n });\n if (!assignedEpisodeOfCare) {\n patient.inviteStatus.loading = -1;\n patient.inviteStatus.message = \"Can't assign episode of care\";\n return false;\n }\n // =================== ASSIGNING PROTOCOLS ===================\n for (let p2 in this.orgData.availableProcedures[p].allowedProtocols) {\n let prot = this.orgData.availableProcedures[p].allowedProtocols[p2];\n if (this.protocolsById[prot]?.isSelected) {\n patient.inviteStatus.message = `Assigning protocol ${this.protocolsById[prot].name}`;\n let modules = {};\n this.protocolsById[prot]?.modules?.forEach((m) => {\n if (m.isActive) {\n modules[m['protocolId']] = {\n isActive: true,\n };\n }\n });\n let assignedProtocol = await this.PatientService.assignProtocol({\n protocol: this.protocolsById[prot],\n patient: patientResult,\n modules: modules,\n episodeOfCare: assignedEpisodeOfCare,\n });\n if (this.doesProtocolHaveTwilioFlowTask(this.protocolsById[prot])){\n let userId = this.patient.carePatient._id;\n let taskId = '';\n let userHasSeenSMSOptOut = false;\n let taskList : any = assignedProtocol.tasks;\n let twiliotask : wpdb.model.TwilioFlowTask;\n for (const task of taskList ){\n if (task.userId == userId && task.type == 'twilioStudioFlow' && task.isActive){\n taskId = task._id;\n twiliotask = task\n }\n }\n \n if (twiliotask?.twilioInfo?.scheduleDefinition){\n const frequency = 'weekday'; \n const isAdaptive = true;\n const twilioFlowSchedule = await this.PatientService.createTwilioFlowSchedule(userId, taskId, frequency,isAdaptive);\n } \n let triggerTwilioFlowForPatient = await this.PatientService.triggerTwilioFlowForPatient(this.orgId, userId, taskId, userHasSeenSMSOptOut);\n if(triggerTwilioFlowForPatient){\n this.toast.success('Invitation for Daily Monitoring Program is sent. It may take a few minutes for delivery.');\n let inviteInfo = {\n userId: userId,\n taskList: taskList,\n taskId: taskId,\n userHasSeenSMSOptOut: userHasSeenSMSOptOut\n }\n this.sendInvite(null, inviteInfo)\n }\n if (!assignedProtocol) {\n patient.inviteStatus.loading = -1;\n patient.inviteStatus.message = \"Can't assign protocol\";\n return false;\n }\n }\n }\n }\n }\n return true;\n }\n}\n\n public toggleModuleSelectorOpen(protocolId?: string): void {\n for (let p_Id in this.protocolsById) {\n if (this.protocolsById[p_Id]) {\n this.protocolsById[p_Id].isModuleSelectorIsOpen =\n p_Id == protocolId && !this.protocolsById[p_Id].isModuleSelectorIsOpen\n ? true\n : false;\n }\n }\n }\n\n selectProtocol(procedure: any, protocolId: string): void {\n for (const key in this.protocolsById) {\n if(protocolId === key){\n this.protocolsById[protocolId].isSelected = this.protocolsById[protocolId]\n .isSelected\n ? false\n : true;\n } else {\n this.protocolsById[key].isSelected = false;\n }\n }\n\n this.orgData.availableProcedures.forEach((p, index) => {\n if(procedure === p){\n this.orgData.availableProcedures[index].isSelected = true;\n } else {\n this.orgData.availableProcedures[index].isSelected = false;\n }\n });\n }\n\n checkProcedureAndProtocol(procedure: any, protocolId: string): void {\n if (\n this.protocolsById[protocolId] &&\n this.getSelectedModules(protocolId).length > 0\n ) {\n this.protocolsById[protocolId].isSelected = true;\n procedure.isSelected =\n procedure.allowedProtocols.filter(\n (protocol) => this.protocolsById[protocol]?.isSelected\n ).length > 0\n ? true\n : false;\n }\n }\n\n getSelectedModules(protocolId: string): any[] {\n return this.protocolsById[protocolId]?.modules\n ? this.protocolsById[protocolId].modules.filter((m) => m.isActive)\n : [];\n }\n\n public getSelectedProceduresLength(): number {\n // Add more rules if needed\n return this.orgData.availableProcedures.filter(\n (procedure) => procedure.isSelected\n ).length;\n }\n \n public isProtocolSelected(): boolean {\n // Add more rules if needed\n for(const protocolId in this.protocolsById){\n if(this.protocolsById[protocolId].isSelected){\n return true\n }\n }\n \n return false\n }\n \n isPatientValid(): boolean {\n if(this.isSMSInviteFlagEnabled){\n return (\n this.patientClone.professionalId?.length > 0 &&\n this.patientClone.gender?.length > 0 &&\n this.isInputValid(this.patientClone, 'phoneNumber') &&\n (this.isInputValid(this.patientClone, 'email') || !this.patientClone.email || this.patientClone.email == \"\")\n );\n } else {\n const professional = this.professionals.find((p) => {\n let isDefaultProfessional = p.elegibleRoles.find(role => role === \"defaultProfessional\")\n return isDefaultProfessional ? true : false\n })\n this.patientClone.professionalId = professional._id\n return (\n this.patientClone.gender?.length > 0 &&\n this.isInputValid(this.patientClone, 'phoneNumber') &&\n (this.isInputValid(this.patientClone, 'email') || !this.patientClone.email)\n );\n }\n }\n\n isInputValid(patient: Patient, target: string): boolean {\n switch(target){\n case 'email':\n if(!patient.email || patient.email == \"\"){\n return true; //Email is now optional so no input is valid\n } else {\n return this.PatientService.isEmailFormatValid(patient[target])\n }\n case 'nickName':\n return patient[target].length > 0\n case 'phoneNumber':\n return this.PatientService.isPhoneNumberFormatValid(patient[target])\n }\n }\n\n doesProtocolHaveTwilioFlowTask(protocol: Protocol | EpisodeOfCareProtocolAssignmentViewModel): boolean {\n return !!protocol.tasks?.find(t => t.type == \"twilioStudioFlow\");\n }\n\n getGenderFromString(s: string): common.UserGender {\n if (!s || s.length < 1) {\n return 'unknown';\n }\n\n switch (s[0].toLowerCase()) {\n case 'm':\n return 'male';\n case 'f':\n return 'female';\n case 'o':\n return 'other';\n default:\n return 'unknown';\n }\n }\n\n}","\n
\n
\n
\n Edit Patient Form\n
\n
\n
\n
\n\n \n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n\n \n
\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n
\n Invalid email \n
\n
\n Invalid phone format\n \n
\n
\n
\n
\n
\n
\n First digit has to be 2-9 \n
\n
\n
\n
\n
\n\n\n \n \n
\n
\n","import { Component, OnInit, Output, EventEmitter, Input, SimpleChanges } from '@angular/core';\nimport { PatientService } from '@shared/services/patient/patient.service'\nimport { Patient } from '@shared/models/patient';\nimport _ from 'lodash';\nimport { wpapi, wpdb } from \"@hcd-caravanhealth/pkg-wptypes\";\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\n\n\n@Component({\n selector: 'coach-patient-edit-form',\n templateUrl: './patient-edit-form.component.html',\n styleUrls: ['./patient-edit-form.component.scss']\n})\n\nexport class PatientEditFormComponent implements OnInit {\n @Input() public patient: Patient;\n @Output() public closeForm: EventEmitter = new EventEmitter();\n @Input() tier: IHierarchyTier;\n\n patientClone: Patient;\n patientEditStatus: 'failed' | 'ready' | 'success' | 'processing' = 'ready'\n isModuleSelectorIsOpen: boolean;\n\n public get tierId() {\n return this?.tier?.selectedTierId;\n }\n private get tierNum() { return this?.tier?.tier };\n private emitter: any;\n constructor(private PatientService: PatientService) { }\n ngOnChanges(changes: SimpleChanges): void {\n //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.\n //Add '${implements OnChanges}' to the class.\n if(changes?.patient?.currentValue){\n this.patientClone = _.cloneDeep(changes.patient.currentValue)\n }\n }\n async ngOnInit() {\n\n }\n close(action_target: string): void {\n this.closeForm.emit(action_target);\n }\n\n async updatePatient() {\n this.patientEditStatus = 'processing';\n this.patientClone.phoneNumber = Patient.formatPhoneNumber(this.patientClone.phoneNumber);\n if (this.patientClone.carePatient) {\n const smsIdentifierIndex = this.patientClone.carePatient.identifiers.findIndex(identifier => identifier.issuer === 'https://identity.caravanhealth.com/smscareplanphonenumber');\n \n try {\n if (smsIdentifierIndex !== -1) {\n const wpUpdate = await this.PatientService.updateCarePatient(this.patientClone.carePatient._id, {\n email: this.patientClone.email,\n nickName: this.patientClone.nickName?.trim() || \"\",\n phoneNumber: this.patientClone.phoneNumber.replace(/\\D+/g, ''),\n identifiers: [{\n issuer: this.patientClone.carePatient.identifiers[smsIdentifierIndex].issuer,\n type: this.patientClone.carePatient.identifiers[smsIdentifierIndex].type,\n subject: '+1' + this.patientClone.phoneNumber.replace(/\\D+/g, ''),\n createdAt: this.patientClone.carePatient.identifiers[smsIdentifierIndex].createdAt,\n provider: this.patientClone.carePatient.identifiers[smsIdentifierIndex].provider,\n canBeUpdated: true\n }]\n }); \n }\n else{\n const wpUpdate = await this.PatientService.updateCarePatient(this.patientClone.carePatient._id, {\n email: this.patientClone.email,\n nickName: this.patientClone.nickName?.trim() || \"\",\n phoneNumber: this.patientClone.phoneNumber.replace(/\\D+/g, '')\n }); \n } \n } catch (error) {\n this.patientEditStatus = 'failed';\n console.log(error);\n return;\n }\n }\n \n if (this.patientClone.trackPatient){\n try{\n let trackUpdate = await this.PatientService.updateTrackPatient(this.tierId, this.tierNum, {\n email:this.patientClone.email,\n preferredName: this.patientClone.nickName?.trim() ||this.patientClone.preferredName || \"\",\n phone:this.patientClone.phoneNumber.replace(/\\D+/g, ''),\n tierID: this.tierId,\n tierNum: this.tierNum,\n carePatientId:this.patientClone.carePatient._id,\n mbi:this.patientClone.mbi,\n firstName:this.patientClone.firstName,\n lastName:this.patientClone.lastName,\n middleName:this.patientClone.middleName,\n dateOfBirth: this.patientClone.dob,\n gender:this.patientClone.gender[0].toUpperCase(),\n chPatId: Number(this.patientClone.chPatId),\n ChPatID: Number(this.patientClone.chPatId),\n supplementalId:this.patientClone.trackPatient.supplementalID\n });\n } catch(error) {\n this.patientEditStatus = 'failed';\n console.log(error);\n return;\n }\n }\n \n this.patient = Object.assign(this.patient, this.patientClone);\n this.patientEditStatus = 'success';\n }\n\n // VALIDATORS\n isInputValid(target: string): boolean {\n switch(target){\n case 'email':\n return this.PatientService.isEmailFormatValid(this.patientClone[target])\n case 'nickName':\n return this.patientClone[target].length > 0\n case 'phoneNumber':\n return this.PatientService.isPhoneNumberFormatValid(this.patientClone[target])\n }\n }\n isFirstDigitValid(target: string): boolean {\n let regexp = /^(\\+\\d{1,2}\\s)?\\(?[2-9].*$/;\n return regexp.test(this.patientClone[target]);\n\n }\n}\n\n","\n\n
\n
\n
\n
\n Reminder History\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n How to use\n
\n
\n
\n
\n Use the Wellpepper Reminder Composer Form to manually send a reminder to a patient.\n
\n Reminder: information sent through email or text Notification is not secure, and details of the\n patient's\n treatment should not be included in the Notification.\n
\n
\n \n \n\n \n
\n
\n
\n
\n Wellpepper Reminder Composer\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n \n \n
\n
\n \n 160\"\n *ngIf=\"newNotification.method == 'sms'\">{{newNotification.text?.length?newNotification.text.length:0}}/160 characters\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n Variable Substitutions\n
\n \n \n
\n
\n
\n You can use variables in this reminder mail, which will be substituted by the\n server when the Notification is sent. Here are some variables you might like to use:\n
    \n
  • {{recipient.fullName}} is the full name of the recipient. You can also use:
      \n
    • {{recipient.firstName}}
    • \n
    • {{recipient.lastName}}
    • \n
    \n
  • \n
  • {{sender.fullName}} is the full name of the assigned professional. Similarly, you can use:
      \n
    • {{sender.firstName}}
    • \n
    • {{sender.lastName}}
    • \n
    \n
  • \n \n
  • {{sender.organizationName}} is the the assigned professional's organization\n name
  • \n
  • {{link_outcomes}} generates a link to the outcome survey site which allows\n the user to get one-click access to their outcome surveys (e.g. without needing to enter their username\n and temporary password).
  • \n
\n
\n
\n
\n
\n
\n \n\n
\n\n\n\n\n\n\n\n
\n
\n
\n

\n {{selectedNotification.subject}}\n SMS\n Manual\n

\n
\n
\n
\n
\n \n
\n
\n
\n
","import {\n Component,\n Input,\n OnInit,\n LOCALE_ID,\n Inject,\n SimpleChanges,\n ViewEncapsulation,\n OnChanges\n} from '@angular/core';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { Patient } from '@shared/models/patient';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { formatDate } from '@angular/common';\nimport { HeaderCondensedService } from '@shared/services/header-condensed/header-condensed.service';\nimport _ from 'lodash';\nimport { ToastrService } from 'ngx-toastr';\nimport { GridApi, ColumnApi, Module, ColDef } from 'ag-grid-community';\n\n@Component({\n selector: 'coach-patient-reminders',\n templateUrl: './patient-reminders.component.html',\n styleUrls: ['./patient-reminders.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\n\nexport class PatientRemindersComponent implements OnInit, OnChanges {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n @Input() public mobileScreenSize: boolean;\n gridApi: GridApi;\n columnApi: ColumnApi;\n private get tierId() {\n return this?.tier?.selectedTierId;\n }\n private get patientId() {\n return this?.patient?.carePatient?._id;\n }\n \n \n readonly defaultColDef: ColDef = {\n resizable: true,\n };\n readonly columnDefs = [\n {\n headerName: 'Date',\n field: 'createdAt',\n // minWidth: 75,\n sortable: true,\n valueFormatter: (params) =>\n params?.value ? formatDate(params.value, 'MM/dd/yyyy h:mm a', this.locale) : null,\n },\n {\n headerName: 'Type',\n field: 'method',\n // minWidth: 75,\n sortable: true,\n },\n {\n headerName: 'Summary',\n field: 'text',\n // minWidth: 75,\n },\n {\n headerName: 'Status',\n field: 'status',\n // minWidth: 75,\n sortable: true,\n }\n ];\n domLayout: string = 'autoHeight'\n modalViewNotification: boolean = false;\n selectedNotification: wpapi.model.Notification = null\n newNotification: {\n method: \"email\" | \"sms\" | null,\n subject: string,\n text: string,\n variableSubstitutionsAccordionIsOpen: boolean,\n sender?: string\n } = {\n method: null,\n subject: '',\n text: '',\n variableSubstitutionsAccordionIsOpen: false,\n sender: ''\n }\n manualRecordToLog: string = '';\n constructor(private patientService: PatientService, \n @Inject(LOCALE_ID) private locale: string,\n private HeaderCondensedService: HeaderCondensedService,\n private toast: ToastrService,\n ) {\n }\n\n ngOnInit(): void {\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.patientId) {\n this.getNotificationsForPatient(this.patient)\n this.resetReminderForm()\n }\n }\n onGridReady(param: any): void {\n // aggrid on init\n this.gridApi = param.api;\n this.columnApi = param.columnApi;\n this.columnApi.applyColumnState({state:[{ colId: 'createdAt', sort: 'desc' }]}); // set grid status to default\n }\n public onFirstDataRendered(params: any): void {\n params.api.sizeColumnsToFit();\n }\n public onRowClicked(event: any): void {\n if(event?.data){\n this.selectedNotification = event?.data\n console.log(\"this.selectedNotification =>\", this.selectedNotification)\n this.openModal('modalViewNotification')\n }\n }\n\n async getNotificationsForPatient(patient) {\n this.patient.notifications = await this.patientService.getNotificationsForPatient(patient)\n }\n openModal(target: string, closeSidebar?: boolean): void {\n this[target] = true;\n // make modal closable and close sidebar\n if (closeSidebar) {\n this.HeaderCondensedService.setSidebarStatus(true);\n }\n }\n\n resetReminderForm(): void {\n this.newNotification = {\n method: this.patient.email ? 'email' : (this.patient.phoneNumber ? 'sms' : null),\n subject: '',\n text: '',\n variableSubstitutionsAccordionIsOpen: false\n }\n }\n \n getChevronStatus(): string {\n return this.newNotification.variableSubstitutionsAccordionIsOpen ? 'chevron-up' : 'chevron-down'\n }\n isNewNotificationValid(): boolean {\n if(!this.newNotification.text?.length){\n return false\n } else if(this.newNotification.method == 'email' && !this.newNotification.subject?.length){\n return false\n } else if( this.newNotification.method == 'sms' && (!this.patient.phoneNumber || this.newNotification.text?.length > 160)){\n return false\n }\n return true\n }\n\n getPatientProfessionalNameAndOrgName(): string {\n if(this?.patient?.professional){\n return `${this.patient.professional?.firstName} ${this.patient.professional?.lastName} (${this.patient.professional?.organizationName})`\n } else {\n return ''\n }\n }\n\n async sendNotification() {\n this.newNotification.sender = this.patient.professionalId\n let addNotificationForPatient = await this.patientService.addNotificationForPatient( this.patient.carePatient._id, this.newNotification );\n if(addNotificationForPatient){\n this.toast.success('Invitation sent. It may take a few minutes for delivery.')\n this.patient.notifications.push(addNotificationForPatient)\n this.gridApi.setRowData(this.patient.notifications)\n this.resetReminderForm()\n }\n }\n async sendManualLog() {\n //manualRecordToLog\n let addmanualRecordForPatient = await this.patientService.addNotificationForPatient( this.patient.carePatient._id, {method: \"manual\", text: this.manualRecordToLog, sender: this.patient.professionalId} );\n if(addmanualRecordForPatient){\n this.toast.success('Notice is added.')\n this.patient.notifications.push(addmanualRecordForPatient)\n this.gridApi.setRowData(this.patient.notifications)\n this.manualRecordToLog = ''\n }\n }\n splitStringByLines(str: string): string {\n return str.split(\"\\n\").join(\"
\")\n }\n}\n","
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n","import {Component, EventEmitter, Input, Output, SimpleChanges} from '@angular/core';\nimport {Patient} from '@shared/models/patient';\nimport {IHierarchyTier} from '@shared/models/hierarchy/hierarchy-tier';\nimport {CareOrchestrationConstants} from '@shared/models/module-constants';\nimport {AwvWorkflowStatuses} from '@api/care-orch/models/awv-workflow-statuses';\nimport {AwvWorkflow} from '@api/care-orch/models/awv-workflow';\nimport {Observable} from 'rxjs';\nimport {AwvService} from '@api/care-orch/services/awv.service';\nimport {AttendedActivity} from '@api/care-orch/models/attended-activity';\nimport {ActivityType} from '@api/care-orch/models/activity-type';\nimport {ToastrService} from 'ngx-toastr';\nimport {environment} from '../../../../../../environments/environment';\nimport {EnvironmentType} from '../../../../../../environments/environmentTypeDef';\nimport {PracticeService} from '@shared/services/hierarchy/practice.service';\nimport {AwvWorkflowService} from '@shared/services/awv-workflow/awv-workflow.service';\nimport { BackendError } from '@shared/services/awv-workflow/backend-error';\nimport { AwvActivityChangeEvent } from '@shared/services/awv-workflow/awv-activity-change-event';\nimport { Program, TierIds } from '@shared/services/mixpanel/events/workflow-events';\nimport { WorkflowEventsService } from '@shared/services/mixpanel/events/workflow-events.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\n\n@Component({\n selector: 'coach-patient-awv-workflow',\n styleUrls: ['./patient-awv-workflow.component.scss'],\n templateUrl: './patient-awv-workflow.component.html',\n})\nexport class PatientAwvWorkflowComponent {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n @Input() public mobileScreenSize: boolean;\n @Input() sidebarMode?: boolean;\n @Input() public isTabOpen: boolean;\n @Output() patientUpdated: EventEmitter = new EventEmitter();\n\n awvWorkflowStatus: AwvWorkflowStatuses = AwvWorkflowStatuses.Other;\n awvWorkflow?: AwvWorkflow = null;\n allAwvWorkflowStatuses = AwvWorkflowStatuses;\n isLoading = false;\n attendedActivityWasSubmitted = false;\n inError = false;\n errorTitle = '';\n errorMessage = '';\n\n constructor(private careOrchService: AwvService, private practiceService: PracticeService, private toastr: ToastrService,\n private awvWorkflowService: AwvWorkflowService,\n private workflowEvents: WorkflowEventsService, private authService: AuthService,\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.patient) {\n const tier2ID = this.patient.tier2_ID;\n const tier3ID = this.patient.tier3_ID;\n let tier4ID = null;\n if (this.patient.trackPatient){\n tier4ID = this.patient.trackPatient.tier4_ID;\n }\n const tierIds = new TierIds(tier2ID, tier3ID, tier4ID);\n this.getUserInfo().then((user) => this.workflowEvents.trackProgramWithPatient(Program.AWV, Number(this.patient.chPatId),\n tierIds, user.email));\n this.practiceService.getPractices(this.patient).then();\n this.awvWorkflowStatus = AwvWorkflowStatuses.Other;\n this.awvWorkflow = null;\n this.attendedActivityWasSubmitted = false;\n let obsAwvWorkflow = this.careOrchService.getWorkflowActivities(\n {programId: CareOrchestrationConstants.AwvProgramId, chPatId: parseInt(this.patient.chPatId)});\n this.awvWorkflowUpdated(obsAwvWorkflow);\n }\n\n }\n awvWorkflowUpdated(obsAwvWorkflow: Observable): void {\n this.isLoading = true;\n this.inError = false;\n\n obsAwvWorkflow.subscribe(awvWorkflow => {\n const awvActivityChangeEvent = new AwvActivityChangeEvent(Number(this.patient.chPatId), this.awvWorkflow, awvWorkflow);\n this.awvWorkflowService.publishAwvActivityChangeEvent(awvActivityChangeEvent);\n this.workflowEvents.emit(this.awvWorkflow, awvWorkflow);\n this.awvWorkflow = awvWorkflow;\n this.awvWorkflowStatus = this.awvWorkflow.status;\n this.isLoading = false;\n const attendedActivities = this.awvWorkflow.completedActivities.filter(x => x.type === 'AttendedActivity')\n .map(x => x as AttendedActivity);\n this.attendedActivityWasSubmitted = attendedActivities.length > 0;\n this.awvWorkflowService.publishUpdateSuccessful();\n }, error => {\n this.workflowEvents.emit(this.awvWorkflow, this.awvWorkflow, error);\n this.isLoading = false;\n let backendError = null;\n if (error.status >= 500 && this.awvWorkflow === null){\n this.inError = true;\n this.errorTitle = error.status + ' Server Error';\n this.errorMessage = CareOrchestrationConstants.serverErrorMessageFrontend;\n } else {\n if (error.status === 404 ){\n // no workflow found for this patient, so show default screen\n this.awvWorkflowStatus = AwvWorkflowStatuses.Other;\n } else {\n let userFriendlyErrorMessage = null;\n if (error.status === 403 && error.error.detail.includes(CareOrchestrationConstants.forbiddenErrorMessageBackend)){\n userFriendlyErrorMessage = CareOrchestrationConstants.forbiddenErrorMessageFrontend;\n } else if (error.status === 409){\n userFriendlyErrorMessage = CareOrchestrationConstants.conflictErrorMessageFrontend;\n } else {\n userFriendlyErrorMessage = CareOrchestrationConstants.defaultErrorMessage;\n }\n backendError = new BackendError(error.status, error.statusText, userFriendlyErrorMessage);\n this.awvWorkflowService.publishBackendError(backendError);\n }\n } });\n }\n\n activityDeleted(activityType: ActivityType): void{\n this.workflowEvents.trackDelete(activityType);\n\n const awvWorflowObs = this.careOrchService.rollbackWorkflowActivity({\n programId: CareOrchestrationConstants.AwvProgramId,\n chPatId: Number(this.patient.chPatId),\n typeOfActivityToRollback: activityType,\n });\n\n this.awvWorkflowUpdated(awvWorflowObs);\n }\n\n isLowerEnvironment(): boolean {\n return (environment.environmentId === EnvironmentType.dev || environment.environmentId === EnvironmentType.qa);\n }\n\n isInactiveStatus(): boolean {\n return (this.awvWorkflowStatus === AwvWorkflowStatuses.Other ||\n this.awvWorkflowStatus === AwvWorkflowStatuses.DeferredToSignify ||\n this.awvWorkflowStatus === null);\n }\n\n async getUserInfo(): Promise {\n return await this.authService.getWellpepperUserInfo();\n }\n}\n","
\n
\n Expand All\n |\n Collapse All\n
\n \n \n \n \n \n \n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { ActivatedRoute } from '@angular/router';\nimport { CareFeatureConstants, CareOrchestrationConstants, CareComponentConstants } from '@shared/models/module-constants';\n\n@Component({\n selector: 'coach-patient-worklists',\n templateUrl: './patient-worklists.component.html',\n styleUrls: ['./patient-worklists.component.scss']\n})\nexport class PatientWorklistsComponent implements OnInit {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n @Input() public mobileScreenSize: boolean;\n @Input() sidebarMode?: boolean;\n openTabs: {[key: string]: boolean} = {}\n public readonly IHECohort = CareFeatureConstants.IHECohort;\n public readonly IHECohortComponentId = CareComponentConstants.IHECohort;\n public readonly CareOrchAccessReqs = CareOrchestrationConstants.FacesheetAccessRequirements;\n\n constructor(private route: ActivatedRoute){\n }\n\n ngOnInit(): void {\n let subtab = this.route.snapshot.queryParamMap.get('subtab');\n this.openTabs[subtab] = true;\n }\n\n openAllTabs(): void {\n this.openTabs['PAC Navigator Program'] = true;\n this.openTabs['In Home AWV Files'] = true;\n this.openTabs['AWV Opportunities'] = true;\n }\n\n closeAllTabs(): void {\n this.openTabs['PAC Navigator Program'] = false;\n this.openTabs['In Home AWV Files'] = false;\n this.openTabs['AWV Opportunities'] = false;\n }\n\n}\n","\n \n\n
\n
\n \n
\n \n
\n \n
\n
\n
\n \n
0\">{{patient.alerts.unhandled.length}}
\n
\n
{{subtab.label}}
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n
{{subtab.label}}
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n \n \n
\n \n \n
0\">\n {{patient.alerts.unhandled.length}}
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n \n
{{subtab.label}}
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n
\n
\n \n \n
\n \n
\n
\n
\n
{{activeSubtabSecondary}}
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n
\n\n\n\n
\n
\n \n \n \n
\n
\n
\n","import { Component, OnInit, Input, ViewChild, Injector, ElementRef, ViewContainerRef, OnChanges, OnDestroy } from '@angular/core';\nimport { Patient } from '@shared/models/patient';\nimport { IPatientSubtab } from '@shared/models/patient-subtab';\nimport { PatientSubtabsPrimaryWithoutPatientEngagement, PatientSubtabsPrimaryWithPatientEngagement, PatientSubtabsSecondary, PatientSubtabsPrimaryCarePatientOnly } from '@shared/modules/patient-facesheet/patient-facesheet.constants';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { PatientActionDropdownComponent, NAVIGATION_PORTAL_DATA } from './../patient-action-dropdown/patient-action-dropdown.component';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport _ from 'lodash';\nimport { LocationStrategy } from '@angular/common';\nimport { CareComponentConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\n\nimport { Subscription } from 'rxjs';\nimport { PatientEngagement, PatientEngagementComponentIds } from '@shared/enums';\n\n@Component({\n selector: 'coach-patient-expanded',\n templateUrl: './patient-expanded.component.html',\n providers: [Overlay]\n})\nexport class PatientExpandedComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n @Input() public isSMSTaskAdaptive : boolean; \n @Input() public isScreenSmall: boolean;\n\n public get tierId() {\n return this?.tier?.selectedTierId;\n }\n\n PatientEngagement = PatientEngagement;\n PatientEngagementComponentIds = PatientEngagementComponentIds;\n public subtabsSecondary: IPatientSubtab[] = PatientSubtabsSecondary;\n\n\n public activeSubtabPrimary: string = 'Facesheet';\n public activeSubtabSecondary: string = 'Alerts';\n\n public isAlertsAndMessagesClosed: boolean = false;\n public get isCarePatient() {\n return this?.patient?.carePatient?.accountType === \"patient\";\n }\n isPatientNavDropdownOpen = false;\n private overlayRef: OverlayRef;\n public currentUrl: string = null;\n public modalStatus: { isOpen: boolean, target: string };\n public modalPatientInviteForm: boolean = false;\n public modalPatientEditForm: boolean = false;\n scopeSelectDropdownPortal: ComponentPortal;\n public readonly careComponentConstants = CareComponentConstants;\n CoachPatientReminderTab: string = CareFeatureConstants.CoachPatientReminderTab;\n isCoachPatientReminderTabEnabled: boolean = false;\n currentUrlSubscriber: Subscription = new Subscription();\n isSMSInviteFlagEnabled: boolean = false;\n SMSInviteFlag: string = CareFeatureConstants.SMSInviteFlag;\n subtabsPrimary: IPatientSubtab[];\n\n\n constructor(private route: ActivatedRoute,\n private _injector: Injector,\n public overlay: Overlay,\n private vcRef: ViewContainerRef,\n private Router: Router,\n private featureFlagService: FeatureFlagService,\n private location: LocationStrategy) {\n this.isSMSInviteFlagEnabled = this.featureFlagService.hasFeatureFlag(\n this.SMSInviteFlag\n );\n this.currentUrlSubscriber = this.Router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.currentUrl = unescape(this.Router.url).split('?')[0];\n }\n });\n\n this.currentUrl = unescape(this.Router.url).split('?')[0]\n\n this.modalStatus = {\n isOpen: false,\n target: null\n };\n this.location.onPopState(() => this.overlayRef.detach());\n }\n @ViewChild('scopeSelectOrigin') scopeSelectOrigin: ElementRef\n ngOnInit(): void {\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.currentUrlSubscriber.unsubscribe()\n }\n ngOnChanges(): void {\n if (this.patient) {\n this.route.queryParams.subscribe(params => {\n if (params.sidebar) {\n if (params.sidebar != this.activeSubtabSecondary || (params.sidebar == this.activeSubtabSecondary && this.isAlertsAndMessagesClosed)) {\n this.activeSubtabSecondary = params.sidebar;\n this.isAlertsAndMessagesClosed = false;\n }\n } else {\n this.activeSubtabSecondary = \"Alerts\";\n }\n });\n this.handleAsyncOperation();\n }\n }\n\n async handleAsyncOperation() {\n this.getsubtabsPrimary();\n }\n\n public getsubtabsPrimary() {\n let subTabs;\n if (this.patient && !this.patient.trackPatient) {\n subTabs = PatientSubtabsPrimaryCarePatientOnly;\n } else if (this.isPatientInvited) {\n subTabs = PatientSubtabsPrimaryWithPatientEngagement;\n if (this.isSMSTaskAdaptive) { \n subTabs = subTabs.filter(st => st.label != 'Plan');\n }\n } else {\n subTabs = PatientSubtabsPrimaryWithoutPatientEngagement;\n }\n if (!this.isCoachPatientReminderTabEnabled) {\n subTabs = subTabs.filter(st => st.label != 'Reminders')\n }\n this.subtabsPrimary = subTabs;\n if (this.patient) {\n this.route.queryParams.subscribe(params => {\n if (this.isSMSTaskAdaptive) {\n this.activeSubtabPrimary = params.tab ? params.tab : (this.patient?.trackPatient ? 'Facesheet' : 'SMS Programs')\n } else {\n this.activeSubtabPrimary = params.tab ? params.tab : (this.patient?.trackPatient ? 'Facesheet' : 'Summary')\n }\n })\n }\n }\n\n public titleLine(fields: string[], separator = ' | '): string {\n return fields.filter(f => !!f).join(separator);\n }\n\n public switchTab(tab: string, isSecondary: boolean = false): void {\n if (!isSecondary) {\n this.activeSubtabPrimary = tab;\n } else {\n if (this.activeSubtabSecondary === tab) {\n this.toggleAlertsAndMessages();\n } else if (!this.activeSubtabSecondary) {\n this.activeSubtabSecondary = tab;\n this.toggleAlertsAndMessages();\n } else {\n this.activeSubtabSecondary = tab;\n }\n }\n }\n\n public toggleAlertsAndMessages(): void {\n this.isAlertsAndMessagesClosed = !this.isAlertsAndMessagesClosed;\n if (this.isAlertsAndMessagesClosed) {\n this.activeSubtabSecondary = null;\n }\n }\n createInjector(dataToPass): PortalInjector {\n const injectorTokens = new WeakMap();\n injectorTokens.set(NAVIGATION_PORTAL_DATA, dataToPass);\n return new PortalInjector(this._injector, injectorTokens);\n }\n public openScopeSelectDropdown() {\n const scopeSelectDropdownPortal = new ComponentPortal(PatientActionDropdownComponent, this.vcRef, this.createInjector({\n emitter: this.dropDownEmitterFunc,\n patient: this.patient\n }));\n const config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay.position().flexibleConnectedTo(this.scopeSelectOrigin)\n .withPositions([\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }])\n });\n this.overlayRef = this.overlay.create(config);\n this.overlayRef.attach(scopeSelectDropdownPortal);\n this.overlayRef.backdropClick().subscribe(() => this.overlayRef.detach());\n this.overlayRef.outsidePointerEvents().subscribe(() => this.overlayRef.detach());\n }\n get dropDownEmitterFunc() {\n return this.dropDownEmitter.bind(this);\n }\n\n dropDownEmitter(action: string): void {\n this.overlayRef.detach()\n this.modalStatus = {\n isOpen: true,\n target: action\n }\n }\n closeModalOnBackgroundClick(event: any): void {\n if (event.target.getAttribute('role') == 'modal-background') {\n this.closeModal()\n }\n }\n closeModal(): void {\n this.modalStatus = {\n isOpen: false,\n target: null\n }\n }\n get isPatientInvited(): boolean {\n return this?.patient?.carePatient?.accountType === 'patient';\n }\n\n public isSelectOptionSelected(tab: string): boolean {\n return this.subtabsPrimary.some((tab) => tab.label === this.activeSubtabPrimary);\n }\n\n getSubtabComponentId(subtabLabel: string): number | number[] {\n switch (subtabLabel) {\n case 'Facesheet':\n case 'Timeline':\n return this.careComponentConstants.Default;\n case 'Plan':\n return PatientEngagementComponentIds;\n case 'Summary':\n return PatientEngagementComponentIds;\n case 'SMS Programs':\n return PatientEngagementComponentIds;\n case 'Worklist Details':\n return this.careComponentConstants.PACNavigatorProgram;\n default:\n return PatientEngagement.PatientApp;\n }\n }\n\n}\n","import { Component, Inject, InjectionToken, Output, OnInit, EventEmitter } from '@angular/core';\n\nexport interface NavigationPortalData {\n emitter: any;\n}\nexport const NAVIGATION_PORTAL_DATA = new InjectionToken('NAVIGATION_PORTAL_DATA');\n\ninterface TierInfo {\n hierarchyTier: any;\n parentId: string;\n}\n@Component({\n selector: 'patient-time-tracking-dropdown',\n templateUrl: './patient-time-tracking-dropdown.component.html',\n styleUrls: ['./patient-time-tracking-dropdown.component.scss'],\n host: {\n class: 'scopeSelectDropdownWrapper'\n }\n})\nexport class TimeTrackingDropdownComponent implements OnInit {\n @Output() newItemEvent = new EventEmitter();\n private emitter: any;\n constructor(\n @Inject(NAVIGATION_PORTAL_DATA) data: NavigationPortalData,\n ) {\n this.emitter = data.emitter;\n }\n\n ngOnInit(): void {\n }\n emitAction(action_number: string): void {\n this.emitter(action_number)\n }\n}\n","
\n
\n
Start Timer
\n
Add Time
\n
View Details
\n
\n
\n","
\n \n
\n
\n
\n Time Tracker\n
\n
\n
\n
\n
\n
\n
\n \n \n \n 20}\">\n \n
\n
\n
{{ timeTrackerTotal }}
\n
\n
\n
min
\n
\n
\n
\n
\n
\n {{startOfMonth | date: 'MMM, yyyy' }}\n
\n \n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
{{newTimeTrackingEvent.notes.length}}/{{commentMaxLength}}
\n
\n
\n \n
\n \n \n \n \n
\n \n
\n
\n \n \n \n 20}\">\n \n
\n
{{ timeTrackerTotal }}
\n
min
\n
\n \n
\n \n
\n \n
\n
\n
\n\n \n
\n
\n
\n \n \n \n 20}\">\n \n
\n
\n
{{ timeTrackerTotal }}
\n
\n
\n
min
\n
\n
\n
\n
\n \n
\n
\n \n \n \n\n\n \n\n \n \n
\n
\n
\n
\n
Add Time
\n
Time Tracker
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n \n \n \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n \n
{{newTimeTrackingEvent.notes.length}}/{{commentMaxLength}}
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n\n \n \n
\n
\n
\n
\n
Edit Time
\n
Time Tracker
\n
\n
\n \n
\n
\n \n \n
\n
\n \n
\n \n \n \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n \n
{{currentTimeTrackingEvent.notes.length}}/{{commentMaxLength}}
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n\n \n \n
\n
\n
\n
\n
\n \n
\n
\n
{{startOfMonth | date: 'MMMM yyyy' }}
\n
\n
\n
Time Tracker
\n
\n
\n \n
\n \n
\n
\n
\n
No data found
\n
0\">\n
\n
{{day.value.date| date}}
\n
\n
\n
\n
{{timeTrackerActionLabels[event.activity]}}
\n
{{roundUpMinutes(event.durationSeconds, 'sec')}} mins
\n
\n
\n
{{event.notes}}
\n
\n
\n
by {{getCreatorFullNameAsString(event.createdByName)}}
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n
\n
0\" >\n
\n \n \n \n
\n
\n
0\">\n
\n
{{day.value.date| date}}
\n
\n
\n
\n
{{timeTrackerActionLabels[event.activity]}}
\n
{{roundUpMinutes(event.durationSeconds, 'sec')}} mins
\n
\n
\n
{{event.notes}}
\n
\n
\n
by {{getCreatorFullNameAsString(event.createdByName)}}
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n \n \n \n
\n
\n
\n
\n\n \n \n
\n
\n
\n
\n
{{modalMessage.title}}
\n
\n
\n
\n

{{message.key}}: {{message.value}}

\n
\n
\n \n
\n
\n
\n
\n\n \n \n
\n
\n
\n
\n
Time Total {{roundUpMinutes(newTimeTrackingEvent.durationSeconds, 'sec')}}
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n \n
{{newTimeTrackingEvent.notes.length}}/{{commentMaxLength}}
\n
\n
\n
\n \n \n
\n
\n
\n
\n
","import {\n Component,\n OnInit,\n Input,\n Output,\n SimpleChanges,\n ViewChild,\n HostListener,\n Injector,\n ElementRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n faPhone,\n faSms,\n faChartLine,\n faCommentDots,\n faEnvelope,\n faStop\n} from '@fortawesome/free-solid-svg-icons';\nimport { startOfMonth, endOfMonth, subMonths } from 'date-fns';\nimport {\n\n ComponentPortal,\n PortalInjector,\n} from '@angular/cdk/portal';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\n\nimport { Patient } from '@shared/models/patient';\nimport {\n ITimeTrackingEvent,\n PatientService,\n} from '@shared/services/patient/patient.service';\nimport {\n TimeTrackingDropdownComponent,\n NAVIGATION_PORTAL_DATA,\n} from './patient-time-tracking-dropdown/patient-time-tracking-dropdown.component';\nimport { HeaderCondensedService } from '@shared/services/header-condensed/header-condensed.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport _ from 'lodash';\nimport { timeTrackingInputLength } from \"@shared/modules/patient-facesheet/patient-facesheet.constants\"\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { ToastrService } from 'ngx-toastr';\n\ninterface TimeTrackingEvent extends ITimeTrackingEvent {\n /** Used only for data binding to an input control */\n durationMinsText?: string;\n durationMins: number;\n startDatePicker?: string;\n}\n\n@Component({\n selector: 'coach-patient-time-tracking',\n templateUrl: './patient-time-tracking.component.html',\n styleUrls: ['./patient-time-tracking.component.scss'],\n providers: [Overlay],\n})\nexport class PatientTimeTrackingComponent implements OnInit {\n @HostListener('window:beforeunload')\n beforeUnloadHandler(): void {\n // this is triggered in case if bookmark/browser/window is closed\n if (this.differenceCounter) {\n this.stopTimer(false);\n }\n }\n @Input()\n public patient: Patient;\n @Input() public tier: IHierarchyTier;\n @Input() public desktopSize: boolean;\n private get tierId(): string {\n return this?.tier?.selectedTierId;\n }\n\n // View model\n public today: Date = null;\n public startOfMonth: Date = null;\n public endOfMonth: Date = null;\n public startCounter: Date = null;\n public differenceCounter: Date = null;\n time: number = 0;\n showDeleted = false;\n display;\n interval;\n timeTrackerActionLabels: object = {\n chart: 'Update chart',\n email: 'Send Email',\n phone: 'Call patient',\n sms: 'Send SMS',\n other: 'Other',\n };\n patientId: string;\n patientSrc: string;\n newTimeTrackingEvent: TimeTrackingEvent;\n currentTimeTrackingEvent: TimeTrackingEvent;\n timeTrackerActionComment: string = '';\n timeTrackerTotal: number = 0;\n timeTrackerEvents: any = {};\n timeTrackerEvents_loadingStatus: boolean;\n deletedTimeTrackerEvents: any = {};\n deletedTimeTrackerEvents_loadingStatus: boolean;\n\n modalAddTimeDisplayBool: boolean = false;\n modalEditTimeDisplayBool: boolean = false;\n modalViewDetailsDisplayBool: boolean = false;\n modalMessageDisplayBool: boolean = false;\n modalMobileEndTimerBool: boolean = false;\n modalMessage: any = {};\n\n\n // Icons\n faPhone = faPhone;\n faSms = faSms;\n faChartLine = faChartLine;\n faCommentDots = faCommentDots;\n faEnvelope = faEnvelope;\n faStop = faStop;\n\n\n private overlayRef: OverlayRef;\n commentMaxLength = timeTrackingInputLength.comment\n mask = new MaskPipe();\n public totalNoOfDeletedEvents = 0;\n constructor(\n private _route: ActivatedRoute,\n private _patientService: PatientService,\n private _injector: Injector,\n public overlay: Overlay,\n private vcRef: ViewContainerRef,\n private HeaderCondensedService: HeaderCondensedService,\n private toastr: ToastrService\n ) {\n this.today = new Date();\n this.startOfMonth = startOfMonth(this.today);\n this.endOfMonth = endOfMonth(this.today);\n this.resetNewTimeTrackingEvent();\n }\n @ViewChild('scopeSelectOrigin') scopeSelectOrigin: ElementRef;\n ngOnInit(): void {\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.patient && changes.patient.currentValue) {\n this.patientSrc = this._route.snapshot.paramMap.get('src');\n this.patientId = this.patient.chPatId;\n this.getTimeTrackingEvents(this.patientId);\n this.getDeletedTimeTrackingEvents(this.patientId);\n }\n }\n ngOnDestroy(): void {\n // Called once, before the instance is destroyed.\n // this is triggered on page change\n if (this.differenceCounter) {\n this.stopTimer(false);\n }\n }\n\n // ------------------------------------------------------------------------------\n // ----------------------------- LISTENERS --------------------------------------\n // ------------------------------------------------------------------------------\n startTimer(): void {\n this.startCounter = new Date();\n this.resetNewTimeTrackingEvent();\n this.newTimeTrackingEvent.start = this.startCounter.toISOString();\n this.interval = setInterval(async () => {\n let currentTime = new Date();\n let difference = currentTime.getTime() - this.startCounter.getTime();\n this.differenceCounter = new Date(difference);\n let seconds = Math.floor(this.differenceCounter.getTime() / 1000);\n if (seconds / 60 >= 1 && seconds % 60 == 0) {\n this.newTimeTrackingEvent.durationSeconds = Math.floor(\n this.differenceCounter.getTime() / 1000\n );\n // CC-1858 await isn't strictly needed here but adding it in case more code is\n // added after it.\n await this.updateTrackingEvent(this.newTimeTrackingEvent, false, 'timer');\n }\n }, 1000);\n }\n /**\n * @param mobile a boolean that opens modalMobileEndTimer in order to enter a time entry inputs such as comment, type, and etc\n */\n async stopTimer(mobile: boolean) {\n clearInterval(this.interval);\n // 2 second grace\n if (this.differenceCounter.getTime() / 1000 >= 2) {\n // add 1 minute if less than that. multiply by 60 since its stored in seconds\n this.newTimeTrackingEvent.durationSeconds = this.roundUpMinutes(\n this.differenceCounter.getTime(), 'ms') * 60;\n if (mobile) {\n this.openModal('modalMobileEndTimerBool', true);\n }\n await this.updateTrackingEvent(this.newTimeTrackingEvent, !mobile, 'timer');\n if (!mobile) {\n this.resetNewTimeTrackingEvent();\n }\n }\n this.differenceCounter = null;\n }\n\n roundUpMinutes(time: number, type: 'ms' | 'sec'): number {\n return Math.ceil(type == 'ms' ? time / 60000 : time / 60);\n }\n openCloseModal(target: any): void {\n this[target] = !this[target];\n }\n closeModalOnBackgroundClick(target: string, event: any): void {\n if (event.target.getAttribute('role') == 'modal-background') {\n this[target] = false;\n }\n }\n openEditModal(target: TimeTrackingEvent): void {\n this.modalViewDetailsDisplayBool = false;\n this.currentTimeTrackingEvent = JSON.parse(JSON.stringify(target));\n this.currentTimeTrackingEvent.durationMinsText = this.currentTimeTrackingEvent.durationMins.toString()\n this.openModal('modalEditTimeDisplayBool');\n }\n selectMonth(pivot: number): void {\n // History pagination\n this.startOfMonth = subMonths(this.startOfMonth, pivot);\n this.endOfMonth = endOfMonth(this.startOfMonth);\n this.getTimeTrackingEvents(this.patientId);\n }\n export(action: string): void {\n let data = `\"Patient Name: ${this.patient.lastName}, ${this.patient.firstName}\"\\n`;\n data += `\"DOB: ${this.patient.dob}\"\\n`;\n data += `\"MRN: ${this.patient.mrn ? this.mask.transform(this.patient.mrn, 6) : 'not found'}\"\\n`;\n data += `\"Time Tracker Report for ${this.startOfMonth.getMonth() + 1\n }/${this.startOfMonth.getUTCFullYear()}\"\\n`;\n data += `Total Time: ${this.timeTrackerTotal} minutes \\n`;\n data += '\"Created At\",\"Duration in Minutes\",\"Activity\",\"Notes\",\"Created By\"\\n';\n for (let day in this.timeTrackerEvents) {\n for (let event in this.timeTrackerEvents[day].events) {\n let entry = this.timeTrackerEvents[day].events[event];\n let createdAt = new Date(entry.createdAt);\n let escapedNotes = entry.notes ? entry.notes.replaceAll(',', ' ') : '';\n data += `\"${createdAt.getFullYear()}-${createdAt.getMonth() + 1\n }-${createdAt.getDate()}\", ${Math.floor(entry.durationSeconds / 60)}, ${this.timeTrackerActionLabels[entry.activity]\n }, ${escapedNotes}, ${this.getCreatorFullNameAsString(entry.createdByName) || 'name not found'}\\n`;\n }\n }\n if (action == 'copy') {\n let el = document.createElement('textarea');\n el.value = data;\n document.body.appendChild(el);\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n } else {\n let filename = `PHI_TimeReport_${this.patient.lastName},${this.patient.firstName\n }_${this.startOfMonth.getMonth() + 1\n }/${this.startOfMonth.getUTCFullYear()}.csv`;\n let hiddenElement = document.createElement('a');\n hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(data);\n hiddenElement.target = '_blank';\n hiddenElement.download = filename;\n hiddenElement.click();\n }\n }\n async updateEntry(event: TimeTrackingEvent, inputType: 'direct' | 'timer') {\n if (\"direct\" === inputType) {\n // Sync numeric value with bound text\n event.durationMins = parseInt(event.durationMinsText);\n }\n event.durationSeconds =\n event.durationMins != 0\n ? event.durationMins * 60\n : event.durationSeconds || 0;\n //need to compare if startDatePicker value was changed\n let tempStartValue: any = new Date(\n new Date(event.start).setHours(0, 0, 0, 0)\n );\n tempStartValue = tempStartValue.toISOString().split('T')[0];\n if (tempStartValue != event.startDatePicker) {\n let newDateStamp = new Date();\n newDateStamp.setFullYear(Number(event.startDatePicker.split('-')[0]));\n newDateStamp.setMonth(Number(event.startDatePicker.split('-')[1]) - 1);\n newDateStamp.setDate(Number(event.startDatePicker.split('-')[2]));\n event.start = newDateStamp.toISOString();\n }\n await this.updateTrackingEvent(event, false, inputType);\n this.resetNewTimeTrackingEvent();\n }\n async deleteEntry(event: TimeTrackingEvent) {\n await this.deleteTrackingEvent(event);\n }\n\n displayMessage(title: string, body: object): void {\n this.modalMessage = {\n title: title,\n body: body,\n };\n this.openModal('modalMessageDisplayBool');\n }\n getCreatorFullNameAsString(createdByName: { firstName: string, lastName: string }): string {\n return `${createdByName?.lastName?.length > 0 ? createdByName.lastName : ''}${createdByName?.firstName?.length > 0 ? \" \" + createdByName?.firstName : ''}`\n }\n // ------------------------------------------------------------------------------\n // --------------------------- BACKEND CALLS ------------------------------------\n // ------------------------------------------------------------------------------\n async getTimeTrackingEvents(chPatId: string) {\n try {\n this.timeTrackerEvents_loadingStatus = true;\n let allTimeTrackingEvents: any = await this._patientService.getTimeTrackingEvents(\n this.tierId,\n chPatId,\n this.startOfMonth,\n this.endOfMonth\n );\n allTimeTrackingEvents.sort((a: any, b: any) => {\n let valA = new Date(a.start);\n let valB = new Date(b.start);\n return valA > valB;\n });\n this.timeTrackerEvents = {};\n this.timeTrackerTotal = 0;\n allTimeTrackingEvents.forEach((event) => {\n event.durationMins = Math.floor((event.durationSeconds || 0) / 60);\n let startDatePicker = new Date(\n new Date(event.start).setHours(0, 0, 0, 0)\n ); // need to have a separate value for a datipicker because of time format. Datepicker won't accept dates with time stamp\n event.startDatePicker = startDatePicker.toISOString().split('T')[0];\n event.old_start = startDatePicker.toISOString().split('T')[0];\n this.timeTrackerTotal += this.roundUpMinutes(\n event.durationSeconds || 0,\n 'sec'\n );\n let dateKey = new Date(\n new Date(event.start).setHours(0, 0, 0, 0)\n ).getTime();\n if (!this.timeTrackerEvents[dateKey]) {\n this.timeTrackerEvents[dateKey] = {\n date: dateKey,\n events: [],\n };\n }\n this.timeTrackerEvents[dateKey].events.push(event);\n });\n this.timeTrackerEvents_loadingStatus = false;\n } catch (err) {\n // TODO - can there be a better way of handling different error types that could be thrown?\n const message = err.error?.message || err.status || err.message;\n this.toastr.error(\n `I couldn't get time tracking events. If this error persists, please contact support: ${message}`\n );\n }\n }\n\n async getDeletedTimeTrackingEvents(chPatId: string) {\n try {\n this.deletedTimeTrackerEvents_loadingStatus = true;\n let allTimeTrackingEvents: any = await this._patientService.getDeletedTimeTrackingEvents(\n this.tierId,\n chPatId,\n this.startOfMonth,\n this.endOfMonth\n );\n allTimeTrackingEvents.sort((a: any, b: any) => {\n let valA = new Date(a.start);\n let valB = new Date(b.start);\n return valA > valB;\n });\n this.deletedTimeTrackerEvents = {};\n allTimeTrackingEvents.forEach((event) => {\n event.durationMins = Math.floor((event.durationSeconds || 0) / 60);\n let startDatePicker = new Date(\n new Date(event.start).setHours(0, 0, 0, 0)\n ); // need to have a separate value for a datipicker because of time format. Datepicker won't accept dates with time stamp\n event.startDatePicker = startDatePicker.toISOString().split('T')[0];\n event.old_start = startDatePicker.toISOString().split('T')[0];\n let dateKey = new Date(\n new Date(event.start).setHours(0, 0, 0, 0)\n ).getTime();\n if (!this.deletedTimeTrackerEvents[dateKey]) {\n this.deletedTimeTrackerEvents[dateKey] = {\n date: dateKey,\n events: [],\n };\n }\n this.deletedTimeTrackerEvents[dateKey].events.push(event);\n this.totalNoOfDeletedEvents++;\n });\n this.deletedTimeTrackerEvents_loadingStatus = false;\n } catch (err) {\n // TODO - can there be a better way of handling different error types that could be thrown?\n const message = err.error?.message || err.status || err.message;\n this.toastr.error(\n `I couldn't get deleted time tracking events. If this error persists, please contact support: ${message}`\n );\n }\n }\n async updateTrackingEvent(\n targetEvent: TimeTrackingEvent,\n openModal: boolean,\n source: 'direct' | 'timer'\n ) {\n targetEvent.patientId = this.patientId;\n targetEvent.source = source;\n try {\n let newTimeEvent: any = await this._patientService.uploadTimeTrackingEvent(\n this.tierId,\n targetEvent\n );\n if (!newTimeEvent) {\n return;\n }\n targetEvent._id\n ? this.updateExistingTimeEntry(targetEvent, newTimeEvent)\n : this.addNewTimeEntry(newTimeEvent);\n this.timeTrackerTotal += this.roundUpMinutes(\n newTimeEvent.durationSeconds || 0,\n 'sec'\n );\n if (openModal) {\n let dateStamp = new Date(newTimeEvent.start);\n this.displayMessage(\n `New entry added for ${dateStamp.getMonth() + 1\n }/${dateStamp.getDate()}/${dateStamp.getFullYear()}`,\n {\n 'Recorded time': this.roundUpMinutes(newTimeEvent.durationSeconds, 'sec'),\n Activity: `${this.timeTrackerActionLabels[newTimeEvent.activity]}`,\n Comments: `${newTimeEvent.notes ? newTimeEvent.notes : '-'}`,\n }\n );\n }\n } catch (err) {\n // TODO - can there be a better way of handling different error types that could be thrown?\n const message = err.error?.message || err.status || err.message;\n alert(\n `I couldn't save the time tracking event. If this error persists, please contact support: ${message}`\n );\n }\n }\n\n\n OnDeleteEntryClick(): void {\n this.modalEditTimeDisplayBool = false;\n this.deleteEntry(this.currentTimeTrackingEvent);\n this.openModal('modalViewDetailsDisplayBool');\n }\n async deleteTrackingEvent(\n targetEvent: TimeTrackingEvent) {\n targetEvent.patientId = this.patientId;\n try {\n await this._patientService.deleteTimeTrackingEvent(\n this.tierId,\n targetEvent\n );\n this.addDeletedTimeEntry(targetEvent);\n } catch (err) {\n // TODO - can there be a better way of handling different error types that could be thrown?\n const message = err.error?.message || err.status || err.message;\n alert(\n `I couldn't save the time tracking event. If this error persists, please contact support: ${message}`\n );\n }\n }\n /** Refresh view model after entry delete */\n addDeletedTimeEntry(timeEvent: TimeTrackingEvent): void {\n let date;\n for (date in this.timeTrackerEvents) {\n for (let event in this.timeTrackerEvents[date].events) {\n this.timeTrackerEvents[date].events = this.timeTrackerEvents[date]\n .events.filter((item) => item._id !== timeEvent._id);\n if (this.timeTrackerEvents[date].events.length === 0) {\n delete this.timeTrackerEvents[date];\n }\n }\n }\n //deduct time\n this.timeTrackerTotal -= this.roundUpMinutes(\n timeEvent.durationSeconds || 0,\n 'sec'\n );\n //add to delete list\n if (!this.deletedTimeTrackerEvents[date]) {\n this.deletedTimeTrackerEvents[date] = {\n date: date,\n events: [],\n };\n }\n this.deletedTimeTrackerEvents[date].events.push(timeEvent);\n this.totalNoOfDeletedEvents++;\n }\n /** Refresh view model after new entry added */\n addNewTimeEntry(newTimeEvent: TimeTrackingEvent): void {\n this.newTimeTrackingEvent._id = newTimeEvent._id;\n let newDateKey = new Date(\n new Date(newTimeEvent.start).setHours(0, 0, 0, 0)\n );\n let startDatePicker = new Date(\n new Date(newTimeEvent.start).setHours(0, 0, 0, 0)\n );\n newTimeEvent.startDatePicker = startDatePicker.toISOString().split('T')[0];\n newTimeEvent.durationMins = Math.ceil(\n (newTimeEvent.durationSeconds || 0) / 60\n );\n if (!this.timeTrackerEvents[newDateKey.getTime()]) {\n this.timeTrackerEvents[newDateKey.getTime()] = {\n date: newDateKey,\n events: [],\n };\n }\n this.timeTrackerEvents[newDateKey.getTime()].events.push(newTimeEvent);\n }\n /** Refresh view model after entry updated */\n updateExistingTimeEntry(\n timeEvent: TimeTrackingEvent,\n newTimeEvent: TimeTrackingEvent\n ): void {\n let newDateKey = new Date(\n new Date(newTimeEvent.start).setHours(0, 0, 0, 0)\n );\n let startDatePicker = new Date(\n new Date(newTimeEvent.start).setHours(0, 0, 0, 0)\n );\n newTimeEvent.startDatePicker = startDatePicker.toISOString().split('T')[0];\n newTimeEvent.durationMins = Math.floor(\n (newTimeEvent.durationSeconds || 0) / 60\n );\n newTimeEvent.createdByName = timeEvent.createdByName\n for (let date in this.timeTrackerEvents) {\n for (let event in this.timeTrackerEvents[date].events) {\n if (timeEvent._id == this.timeTrackerEvents[date].events[event]._id) {\n this.timeTrackerTotal -= this.roundUpMinutes(\n this.timeTrackerEvents[date].events[event].durationSeconds || 0,\n 'sec'\n );\n if (\n this.timeTrackerEvents[date].events[event].start ===\n newTimeEvent.start\n ) {\n // if dates match\n this.timeTrackerEvents[date].events[event] = newTimeEvent;\n } else if (\n this.timeTrackerEvents[date].events[event].start !==\n newTimeEvent.start\n ) {\n // if dates don't match\n // removes old entry from date list\n this.timeTrackerEvents[date].events = this.timeTrackerEvents[\n date\n ].events.filter((item) => item._id !== timeEvent._id);\n // remove date list if it's empty\n if (this.timeTrackerEvents[date].events.length === 0) {\n delete this.timeTrackerEvents[date];\n }\n // add a new value into another date list\n if (!this.timeTrackerEvents[newDateKey.getTime()]) {\n this.timeTrackerEvents[newDateKey.getTime()] = {\n date: newDateKey,\n events: [],\n };\n }\n this.timeTrackerEvents[newDateKey.getTime()].events.push(\n newTimeEvent\n );\n }\n break;\n }\n }\n }\n }\n // ------------------------------------------------------------------------------\n // ------------------------------- MISC -----------------------------------------\n // ------------------------------------------------------------------------------\n openModal(target: string, closeSidebar?: boolean): void {\n this[target] = true;\n // make modal closable and close sidebar\n if (closeSidebar) {\n this.HeaderCondensedService.setSidebarStatus(true);\n }\n }\n getObjectLength(obj: object): number {\n return Object.keys(obj).length;\n }\n\n resetNewTimeTrackingEvent(): void {\n let startDatePicker = new Date(new Date().setHours(0, 0, 0, 0)); // need to have a separate value for a datipicker because of time format. Datepicker won't accept dates with time stamp\n this.newTimeTrackingEvent = {\n activity: 'other',\n durationMins: 0,\n durationSeconds: 0,\n notes: '',\n start: null,\n startDatePicker: startDatePicker.toISOString().split('T')[0],\n };\n }\n getValueType(value: any): string {\n return typeof value;\n }\n scopeSelectDropdownPortal: ComponentPortal;\n createInjector(dataToPass): PortalInjector {\n const injectorTokens = new WeakMap();\n injectorTokens.set(NAVIGATION_PORTAL_DATA, dataToPass);\n return new PortalInjector(this._injector, injectorTokens);\n }\n public openScopeSelectDropdown() {\n const scopeSelectDropdownPortal = new ComponentPortal(\n TimeTrackingDropdownComponent,\n this.vcRef,\n this.createInjector({\n emitter: this.dropDownEmitterFunc,\n })\n );\n const config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.scopeSelectOrigin)\n .withPositions([ { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }]),\n });\n this.overlayRef = this.overlay.create(config);\n this.overlayRef.attach(scopeSelectDropdownPortal);\n this.overlayRef.backdropClick().subscribe(() => this.overlayRef.detach());\n this.overlayRef\n .outsidePointerEvents()\n .subscribe(() => this.overlayRef.detach());\n }\n get dropDownEmitterFunc() {\n return this.dropDownEmitter.bind(this);\n }\n\n dropDownEmitter(action: string): void {\n this.overlayRef.detach();\n switch (action) {\n case 'startTimer':\n this.startTimer();\n break;\n case 'addTime':\n this.openModal('modalAddTimeDisplayBool', true);\n break;\n case 'viewDetails':\n this.showDeleted = false;\n this.openModal('modalViewDetailsDisplayBool', true);\n break;\n }\n }\n\n get disableNewEventSave() {\n return !this.isValidDurationMins(this.newTimeTrackingEvent?.durationMinsText) || !this.newTimeTrackingEvent?.startDatePicker;\n }\n\n get disableCurrentEventSave() {\n return !this.isValidDurationMins(this.currentTimeTrackingEvent?.durationMinsText) || !this.currentTimeTrackingEvent?.startDatePicker;\n }\n\n addTimeToNewEvent(mins: number) {\n this.addTimeToEvent(this.newTimeTrackingEvent, mins);\n }\n\n addTimeToCurrentEvent(mins: number) {\n this.addTimeToEvent(this.currentTimeTrackingEvent, mins);\n }\n\n addTimeToEvent(event: TimeTrackingEvent, mins: number) {\n event.durationMins = parseInt(event.durationMinsText || \"0\");\n if (isNaN(event.durationMins)) {\n return;\n }\n event.durationMins += mins;\n if (event.durationMins > 999) {\n event.durationMins = 999;\n }\n event.durationMinsText = event.durationMins.toString();\n }\n\n isValidDurationMins(val: string): boolean {\n // Good to know that:\n // parseInt(\"2x\") => 2, not NaN, so using a regex check instead\n return /^[1-9][0-9]{0,2}$/.test(val);\n }\n}\n","
\n
\n \n\n \n
\n
\n \"patient\n {{ patient.displayInitials() | initialsFromName }}\n
\n
\n
\n
\n {{patient.displayName()}}\n
\n
\n {{patient.displayAge()}} {{patient.displayGender()}} | {{patient.displayDob()}} | {{\n patient.displayIdentifier() }} |\n MBI: {{patient.mbi | mask: 6 }}\n \n
\n\n
\n {{ titleLine([patient.displayPhone(), patient.email]) }}\n
\n
\n {{ patient.displayDod() }}\n
\n
\n Not attributed\n
\n
\n
\n
\n
\n
{{displayPatientProviderAssignment}}
\n
{{ displayProviderName }}
\n
\n
\n
Projected Risk
\n
\n {{ patient?.trackPatient?.predictedRiskLevel}}\n \n \n \n \n \n \n \n \n
\n
\n
\n
Enrollment Status
\n
{{ displayEnrollmentType }}
\n
\n\n
\n
\n \n
\n
\n
\n
\n\n \n\n\n
\n
\n \"patient\n {{ patient.displayInitials() | initialsFromName }}\n
\n
\n
\n
\n {{patient.displayName()}}\n
\n
\n {{patient.displayAge()}} {{patient.displayGender()}} | {{patient.displayDob()}}\n | {{\n patient.displayIdentifier() }}\n \n
\n
\n MBI: {{patient.mbi | mask: 6 }}\n
\n\n
\n {{ patient.displayPhone() }}\n
\n
\n {{ patient.email }}\n
\n
\n {{ patient.displayDod() }}\n
\n
\n Not attributed\n
\n
\n
\n
\n
\n
{{displayPatientProviderAssignment}}
\n
{{ displayProviderName }}
\n
\n
\n
Projected Risk
\n
\n {{ patient?.trackPatient?.predictedRiskLevel}}\n \n \n \n \n \n \n \n \n
\n
\n
\n
Enrollment Status
\n
{{ displayEnrollmentType }}
\n
\n
\n
\n \n
\n
\n
\n
\n\n\n \n\n\n
\n
\n \"patient\n {{ patient.displayInitials() | initialsFromName }}\n
\n
\n\n \n \n\n \n \n
\n \n \n
\n
\n\n\n
\n\n
\n
\n {{patient.displayName()}}\n
\n
\n
{{patient.displayAge()}} {{patient.displayGender()}}
\n
{{patient.displayDob()}}
\n
MBI: {{patient.mbi}}\n
\n
0\">{{patient.displayIdentifier()}}\n
\n
{{patient.displayPhone()}}
\n
{{patient.email}}
\n
{{\n patient.displayDod() }}
\n
\n Not attributed\n
\n
\n

\n {{displayPatientProviderAssignment}}: {{ displayProviderName }}\n

\n

\n Projected Risk: {{ patient?.trackPatient?.predictedRiskLevel }}\n

\n

\n Enrollment Status {{ displayEnrollmentType }}\n

\n\n
\n\n\n
\n
\n \n \n
\n
\n
\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, SimpleChanges, ViewChild, HostListener, Injector, ElementRef, ViewContainerRef, OnChanges } from '@angular/core';\nimport { Location, LocationStrategy } from '@angular/common';\nimport { Router, ActivatedRoute } from '@angular/router';\n\nimport { IQueryParam } from '@shared/models/query-param';\nimport { Patient } from '@shared/models/patient';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { CdkPortalOutletAttachedRef, ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { PatientActionDropdownComponent, NAVIGATION_PORTAL_DATA } from './../patient-action-dropdown/patient-action-dropdown.component';\nimport { environment } from 'src/environments/environment'\nimport { CareComponentConstants } from '@shared/models/module-constants';\nimport { CareFeatureConstants } from \"@shared/models/module-constants\";\n@Component({\n selector: 'coach-patient-demographics',\n templateUrl: './patient-demographics.component.html',\n styleUrls: ['./patient-demographics.component.scss']\n})\nexport class PatientDemographicsComponent implements OnInit {\n @Input() public patient: Patient;\n @Input() tier: IHierarchyTier;\n @Input() patientFacesheetSize: 'mobile' | 'tablet' | 'desktop';\n private get tierId() {\n return this?.tier?.selectedTierId;\n }\n private overlayRef: OverlayRef;\n public modalStatus: { isOpen: boolean, target: string };\n public modalPatientInviteForm: boolean = false;\n public modalPatientEditForm: boolean = false;\n public readonly careFeatureConstants = CareFeatureConstants;\n scopeSelectDropdownPortal: ComponentPortal;\n\n constructor(\n private location: Location,\n private locationStrategy: LocationStrategy,\n private _router: Router,\n private _route: ActivatedRoute,\n private cdRef: ChangeDetectorRef,\n private _injector: Injector,\n public overlay: Overlay,\n private vcRef: ViewContainerRef) {\n this.modalStatus = {\n isOpen: false,\n target: null\n }\n }\n @ViewChild('scopeSelectOrigin') scopeSelectOrigin: ElementRef\n ngOnInit(): void {\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.overlayRef?.dispose()\n this.overlayRef = null;\n }\n public get isCarePatient() {\n return this?.patient?.carePatient?.accountType === \"patient\";\n }\n public get displayPatientProviderAssignment() {\n return `Provider${this?.patient?.trackPatient?.assignment ? ` (${this?.patient?.trackPatient?.assignment})` : ''}`;\n }\n public get displayProviderName() {\n return (this.patient.tier5_Name ? this.patient.tier5_Name : this.patient.tier4_Name)?.toLowerCase();\n }\n public get displayRiskLevel() {\n return environment.displayRiskLevel;\n }\n public get displayEnrollmentType() {\n return this?.patient?.enrollmentType;\n }\n createInjector(dataToPass): PortalInjector {\n const injectorTokens = new WeakMap();\n injectorTokens.set(NAVIGATION_PORTAL_DATA, dataToPass);\n return new PortalInjector(this._injector, injectorTokens);\n }\n public openScopeSelectDropdown() {\n const scopeSelectDropdownPortal = new ComponentPortal(PatientActionDropdownComponent, this.vcRef, this.createInjector({\n emitter: this.dropDownEmitterFunc,\n patient: this.patient\n }));\n const config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay.position().flexibleConnectedTo(this.scopeSelectOrigin)\n .withPositions([\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }])\n });\n this.overlayRef = this.overlay.create(config);\n this.overlayRef.attach(scopeSelectDropdownPortal);\n this.overlayRef.backdropClick().subscribe(() => this.overlayRef.detach());\n this.overlayRef.outsidePointerEvents().subscribe(() => this.overlayRef.detach());\n }\n get dropDownEmitterFunc() {\n return this.dropDownEmitter.bind(this);\n }\n\n dropDownEmitter(action: string): void {\n this.overlayRef.detach()\n this.modalStatus = {\n isOpen: true,\n target: action\n }\n }\n closeModalOnBackgroundClick(event: any): void{\n if(event.target.getAttribute('role') == 'modal-background'){\n this.closeModal()\n }\n }\n closeModal(): void {\n this.modalStatus = {\n isOpen: false,\n target: null\n }\n }\n public titleLine(fields: string[], separator = ' | '): string {\n return fields.filter(f => !!f).join(separator);\n }\n}\n","
\n\n
\n \n\n \n
\n
\n
\n \"patient\n {{ patient.displayInitials() | initialsFromName }}\n
\n
\n
\n {{patient.displayName()}}\n
\n
\n Gender: {{patient.displayGender()}} | {{ titleLine([patient.displayAge(), patient.displayDob(),\n patient.displayIdentifier()]) }} |\n MBI: {{patient.mbi | mask: 6 }}\n \n
\n\n
\n {{ titleLine([patient.displayPhone(), patient.email]) }}\n
\n
\n {{ patient.displayDod() }}\n
\n
\n Not attributed\n
\n
\n
\n
\n
\n
\n
Attributed Provider
\n
{{ patient.attributedCP }}
\n
\n
\n
Chronic Conditions Risk Adjustment (YTD)
\n
\n {{ patient.raF_YTD }} \n ({{ titleLine([patient.assignment, patient.enrollmentType], ', ') }})\n
\n
\n
\n
Predicted Risk Category
\n
\n {{ patient?.trackPatient?.predictedRiskLevel}}\n \n \n \n \n \n \n \n \n
\n
\n\n
\n
\n \n
\n
\n
\n\n \n
\n
\n \"patient\n {{ patient.displayInitials() | initialsFromName }}\n
\n
\n
\n {{patient.displayName()}}\n
\n
\n
Gender: {{patient.displayGender()}}
\n
{{patient.displayAge()}}
\n
{{patient.displayDob()}}
\n
{{patient.displayIdentifier()}}
\n
MBI: {{patient.mbi}}
\n
\n
\n
Phone: {{patient.displayPhone()}}
\n
Email: {{patient.email}}
\n
{{ patient.displayDod() }}
\n
\n
\n Not attributed\n
\n
\n \n
\n
\n
\n
\n
\n
\n
Attributed Provider
\n
{{patient.attributedCP}}
\n
\n
\n
Chronic Conditions Risk Adjustment (YTD)
\n
\n {{ patient.raF_YTD }} \n ({{ titleLine([patient.assignment, patient.enrollmentType], ', ') }})\n
\n
\n
\n
Predicted Risk Category
\n
\n {{ patient?.trackPatient?.predictedRiskLevel}}\n \n \n \n \n \n \n \n
\n
\n
\n
\n\n \n
\n
\n \"patient\n {{ patient.displayInitials() | initialsFromName }}\n
\n
\n\n \n \n\n \n \n
\n \n \n
\n
\n\n\n
\n \n
\n
\n {{patient.displayName()}}\n
\n
\n
Gender: {{patient.displayGender()}}
\n
{{patient.displayAge()}}
\n
{{patient.displayDob()}}
\n
MBI: {{patient.mbi}}
\n
0\">{{patient.displayIdentifier()}}
\n
Phone {{patient.displayPhone()}}
\n
Email {{patient.email}}
\n
{{ patient.displayDod() }}
\n
\n Not attributed\n
\n
\n

\n Attributed Provider: {{ patient.attributedCP }}\n

\n

\n Chronic Conditions Risk Adjustment (YTD): {{ patient.raF_YTD }} \n ({{ titleLine([patient.assignment, patient.enrollmentType], ', ') }})\n

\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n \n \n
\n
\n
\n","import {\n Component,\n OnInit,\n Input,\n ChangeDetectorRef,\n ViewChild,\n HostListener,\n Injector,\n ElementRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Location, LocationStrategy } from '@angular/common';\nimport { Router, ActivatedRoute } from '@angular/router';\n\nimport { IQueryParam } from '@shared/models/query-param';\nimport { Patient } from '@shared/models/patient';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { PatientActionDropdownComponent, NAVIGATION_PORTAL_DATA } from './patient-action-dropdown/patient-action-dropdown.component';\nimport { environment } from 'src/environments/environment'\nimport { CareComponentConstants } from '@shared/models/module-constants';\nimport { CareFeatureConstants } from \"@shared/models/module-constants\";\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { PatientService } from '@shared/services/patient/patient.service';\n@Component({\n selector: 'coach-patient-facesheet',\n templateUrl: './patient-facesheet.component.html',\n host: {\n '[class]': 'classNames'\n }\n\n})\n\nexport class PatientFacesheetComponent implements OnInit {\n\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n isSMSInviteFlagEnabled: boolean = false;\n SMSInviteFlag: string = CareFeatureConstants.SMSInviteFlag;\n isSMSTaskAdaptive : boolean = true; \n\n private get tierId() {\n return this?.tier?.selectedTierId;\n }\n\n @ViewChild('chartContainer') chartContainer: ElementRef;\n public patientFacesheetSize: string = 'desktop';\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.updateChartViewType();\n }\n public get isCarePatient() {\n return this?.patient?.carePatient?.accountType === \"patient\";\n }\n public get displayRiskLevel() {\n return environment.displayRiskLevel;\n }\n\n private overlayRef: OverlayRef;\n public modalStatus: { isOpen: boolean, target: string };\n public modalPatientInviteForm: boolean = false;\n public modalPatientEditForm: boolean = false;\n scopeSelectDropdownPortal: ComponentPortal;\n public readonly careComponentConstants = CareComponentConstants;\n public readonly careFeatureConstants = CareFeatureConstants;\n FacesheetUIUpdatesFeatureFlag: string = CareFeatureConstants.FacesheetUIUpdatesFlag;\n classNames: string; // used to set the component's class\n componentScreenSize: number = null;\n constructor(\n private location: Location,\n private locationStrategy: LocationStrategy,\n private _router: Router,\n private _route: ActivatedRoute,\n private cdRef: ChangeDetectorRef,\n private _injector: Injector,\n public overlay: Overlay,\n private vcRef: ViewContainerRef,\n private featureFlagService: FeatureFlagService,\n private PatientService: PatientService,\n ) {\n this.isSMSInviteFlagEnabled = this.featureFlagService.hasFeatureFlag(\n this.SMSInviteFlag\n );\n this.modalStatus = {\n isOpen: false,\n target: null\n }\n this.classNames = 'column u-height--full';\n }\n\n @ViewChild('scopeSelectOrigin') scopeSelectOrigin: ElementRef\n ngOnInit(): void {\n this.locationStrategy.onPopState(() => this.overlayRef?.detach());\n }\n\n ngOnChanges(): void {\n this.handleAsyncOperations();\n }\n \n ngAfterViewChecked(): void {\n if (this.componentScreenSize != this.chartContainer.nativeElement.offsetWidth) {\n setTimeout(() => { // prevents error => NG0100: Expression has changed after it was checked\n this.updateChartViewType();\n }, 0)\n }\n\n\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n \n async handleAsyncOperations() {\n await this.isSMSAdaptive();\n }\n\n public updateChartViewType() {\n\n this.componentScreenSize = this.chartContainer.nativeElement.offsetWidth;\n if (this.componentScreenSize > 1221 && this.patientFacesheetSize != 'desktop') {\n this.patientFacesheetSize = 'desktop';\n this.classNames = 'column u-height--full';\n } else if (this.componentScreenSize >= 800 && this.componentScreenSize <= 1221 && this.patientFacesheetSize != 'tablet') {\n this.patientFacesheetSize = 'tablet';\n this.classNames = 'column';\n } else if (this.componentScreenSize < 800 && this.patientFacesheetSize != 'mobile') {\n this.patientFacesheetSize = 'mobile';\n this.classNames = 'column';\n }\n }\n public goBack(): void {\n this.location.back();\n }\n\n public updateUrl(id: string): void {\n const param: IQueryParam = { patientId: id };\n this._router.navigate([], {\n relativeTo: this._route,\n queryParams: param,\n queryParamsHandling: 'merge',\n replaceUrl: true\n });\n }\n\n public titleLine(fields: string[], separator = ' | '): string {\n return fields.filter(f => !!f).join(separator);\n }\n\n createInjector(dataToPass): PortalInjector {\n const injectorTokens = new WeakMap();\n injectorTokens.set(NAVIGATION_PORTAL_DATA, dataToPass);\n return new PortalInjector(this._injector, injectorTokens);\n }\n public openScopeSelectDropdown() {\n const scopeSelectDropdownPortal = new ComponentPortal(PatientActionDropdownComponent, this.vcRef, this.createInjector({\n emitter: this.dropDownEmitterFunc,\n patient: this.patient\n }));\n const config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay.position()\n .flexibleConnectedTo(this.scopeSelectOrigin)\n .withPositions([{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }])\n });\n this.overlayRef = this.overlay.create(config);\n this.overlayRef.attach(scopeSelectDropdownPortal);\n this.overlayRef.backdropClick().subscribe(() => this.overlayRef.detach());\n this.overlayRef.outsidePointerEvents().subscribe(() => this.overlayRef.detach());\n }\n get dropDownEmitterFunc() {\n return this.dropDownEmitter.bind(this);\n }\n\n dropDownEmitter(action: string): void {\n this.overlayRef.detach()\n this.modalStatus = {\n isOpen: true,\n target: action\n }\n }\n closeModalOnBackgroundClick(event: any): void {\n if (event.target.getAttribute('role') == 'modal-background') {\n this.closeModal()\n }\n }\n closeModal(): void { \n this.modalStatus = { \n isOpen: false,\n target: null\n } \n }\n\n async isSMSAdaptive() { \n let taskList = await this.PatientService.getTasks(this.tierId, this.patient);\n let twiliotask;\n for (const task of taskList) {\n if (task.userId == this.patient?.carePatient?._id && task.type == 'twilioStudioFlow') {\n twiliotask = task;\n }\n }\n if (twiliotask){\n this.isSMSTaskAdaptive = twiliotask?.twilioInfo?.scheduleDefinition? true : false; \n }\n }\n}\n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { HeaderCondensedService } from '@shared/services/header-condensed/header-condensed.service';\nimport { PatientAlertService } from '@shared/services/patient-alert/patient-alert.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\n\nimport { Patient } from '@shared/models/patient';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { Activity } from '@shared/models/activity';\nimport { EpisodeOfCare } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/wp-model';\nimport moment from 'moment';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\n\nconst MESSAGE_REFRESH_INTERVAL_MS: number = 10000;\n\n@Component({\n selector: 'coach-care-patient',\n templateUrl: './care-patient.component.html',\n inputs: ['patient'],\n})\nexport class CarePatientComponent implements OnInit, OnDestroy {\n @Input() patient: Patient;\n public patientId: string;\n public src: string;\n public tier: IHierarchyTier = null;\n private tierId: string;\n interval;\n private orgId: string = null;\n private professionList = new Array();\n constructor(\n private _route: ActivatedRoute,\n private _isHeaderCondensed: HeaderCondensedService,\n private PatientService: PatientService,\n private patientAlertService: PatientAlertService,\n private HierarchyTierService: HierarchyTierService,\n private ToastrMessageService: ToastrMessageService\n ) {\n // CC-2818 Don't need to subscribe to this since we're now refreshing\n // when the route params change\n // HierarchyTierService.currentTier$.subscribe((tier) => {\n // this.tier = tier;\n // this.tierId = this?.tier?.selectedTierId;\n // if (tier) {\n // this.refresh();\n // }\n // });\n\n _route.params.subscribe((next: Params) => {\n this.tier = HierarchyTierService.currentTier$.getValue();\n this.tierId = this.tier?.selectedTierId;\n this.refresh();\n });\n }\n\n ngOnInit(): void {\n this._isHeaderCondensed.setHeaderCondensed(true);\n }\n ngOnDestroy(): void {\n this._isHeaderCondensed.setHeaderCondensed(false);\n }\n\n async refresh() {\n const orgId = await this.PatientService.getWpOrgIdFromTierId(this.tierId);\n const params = this._route.snapshot.params;\n this.patient = await this.PatientService.getPatient(orgId, params.id);\n if(!this.patient.id) {\n this.ToastrMessageService.error(new Error(`Patient ${params.id} not found`));\n }\n this.patient.hideTabsAndDisableTimeTracking = orgId ? false : true;\n this.patient.activities = [];\n if (!this.patient) {\n return;\n }\n let promises: Array> = [];\n if (this.patient?.carePatient?._id && this.tierId) {\n // CC-4562 - getTasks needs completions initialized but before that was only happening in this.getPatientAlerts\n await this.getCompletions();\n const wpPatientId = this.patient.carePatient._id;\n await Promise.all([\n this.getTasks(),\n this.addPatientHistoryToActivityList(),\n this.getUserActivity(),\n this.getPatientAlerts(wpPatientId)\n ]);\n }\n promises.push(\n this.PatientService.getProfessional(this.patient.professionalId).then(\n (p) => {\n this.patient.professional = p;\n }\n )\n );\n await Promise.all(promises);\n }\n\n // ============== GETTERS ======================\n async getCompletions() {\n if (this.patient.completions) {\n return;\n }\n this.patient.completions =\n (await this.PatientService.getCompletionActivity(\n this.tierId,\n this.patient\n )) || [];\n let completionById = {};\n for (let c in this.patient.completions) {\n completionById[this.patient.completions[c]._id] = this.patient.completions[c];\n }\n }\n\n async getPatientAlerts(id: string) {\n if (!id) {\n return;\n }\n let alerts = await this.patientAlertService.getPatientAlerts(\n this.tierId,\n id\n );\n if (alerts) {\n alerts.sort((a, b) => {\n if (moment(a.createdAt).isAfter(moment(b.createdAt))) return -1;\n else return 1;\n });\n let completionById = {};\n alerts.forEach(async (a) => {\n // console.log(\"a.createdAt =>\", a.createdAt)\n if (a.relatedObjects) {\n a.completion = completionById[a.relatedObjects[0].id];\n }\n });\n this.patient.alerts = {\n handled: alerts.filter((a) => !a.isActive),\n unhandled: alerts.filter((a) => a.isActive),\n all: alerts,\n };\n }\n this.addInactiveByProfessionalNamesAndActivityList().then;\n }\n private async addInactiveByProfessionalNamesAndActivityList() {\n this.gatherInactiveByProfesionalNamesIds();\n let promises = new Array();\n this.professionList.forEach((element) => {\n promises.push(this.PatientService.getProfessional(element.inactiveById));\n });\n const completeResult = Promise.all(promises)\n .then((profs) => {\n let i = 0;\n profs.forEach((prof) => {\n this.professionList[i].firstName = prof.firstName;\n this.professionList[i].lastName = prof.lastName;\n i++;\n });\n this.addAlertsToActivityList();\n })\n .catch((error) => {\n console.log(error);\n });\n }\n private gatherInactiveByProfesionalNamesIds() {\n this.patient.alerts.all.forEach((a) => {\n if (a.inactiveAt && Date.parse(a.updatedAt.toString()) < Date.now()) {\n if (a.inactiveBy) {\n //&& self.professionals) {\n if (\n !this.professionList.find(\n ({ inactiveById }) => inactiveById === a.inactiveBy\n )\n ) {\n let handledByProfessional = {\n inactiveById: a.inactiveBy,\n firstName: null,\n lastName: null,\n };\n this.professionList.push(handledByProfessional);\n }\n }\n }\n });\n }\n\n async getUserActivity() {\n this.patient.userActivity = await this.PatientService.getUserActivity(\n this.tierId,\n this.patient\n );\n this.addLoginHistoryToActivityList();\n }\n async getTasks() {\n this.patient.tasks = await this.PatientService.getTasks(\n this.tierId,\n this.patient\n );\n this.addCompletionsToActivityList();\n }\n private getTaskFromId(id) {\n let task;\n if (this.patient.tasks) {\n for (var i = 0; i < this.patient.tasks.length; i++) {\n if (this.patient.tasks[i]._id == id) {\n task = this.patient.tasks[i];\n break;\n }\n }\n }\n return task;\n }\n\n // =============== ADDERS ======================\n private addLoginHistoryToActivityList(): void {\n // Invited\n if (this.patient.userActivity && this.patient.userActivity.logins) {\n let loginAct: Activity;\n this.patient.userActivity.logins.forEach((l) => {\n loginAct = {\n type: 'login',\n date: l.createdAt,\n title: 'login',\n description: null,\n detail: [\n {\n label: `login attempts: ${l.loginAttempts}`,\n content: l.success ? 'success' : 'failure',\n },\n ],\n };\n this.patient.activities.push(loginAct);\n });\n this.patient.activities.sort((a, b) => {\n if (Date.parse(a.date) > Date.parse(b.date)) return -1;\n else return 1;\n });\n }\n }\n private addPatientHistoryToActivityList(): void {\n // Invited\n if (!this.patient) return;\n if (this.patient.carePatient?.createdAt) {\n let invitedAct: Activity = {\n type: 'invitation',\n date: this.patient.carePatient.createdAt,\n title: 'Invited',\n description: null,\n detail: null,\n };\n this.patient.activities.push(invitedAct);\n }\n\n // Procedure date\n if (this.patient.includedObjects?.episodesOfCare) {\n this.patient.includedObjects.episodesOfCare.forEach((ep) => {\n let eps: EpisodeOfCare = ep;\n let procedureDateAsUtc = Date.parse(eps.procedureDate);\n let procedureDateLocal = new Date(procedureDateAsUtc).toDateString();\n let epsAct: Activity = {\n type: 'procedure',\n date: procedureDateLocal,\n title: eps.procedureName,\n description: eps.procedureName,\n detail: null,\n };\n this.patient.activities.push(epsAct);\n });\n }\n // Dischareg/Readmit\n if (this.patient.statusHistory) {\n this.patient.statusHistory.forEach((sh) => {\n let shAct: Activity;\n if (sh.hasOwnProperty('isDischarged')) {\n if (sh.isDischarged) {\n //let event = new Event(\"discharge\", moment(sh.updatedAt.iso), \"Discharged\", \"Patient discharged\");\n shAct = {\n type: 'discharge',\n date: sh.updatedAt.iso,\n title: 'Discharged',\n description: 'Patient discharged',\n detail: null,\n };\n this.patient.activities.push(shAct);\n } else {\n //let event = new Event(\"admit\", moment(sh.updatedAt.iso), \"Admitted\", \"Patient admitted\");\n shAct = {\n type: 'admit',\n date: sh.updatedAt.iso,\n title: 'Admitted',\n description: 'Patient admitted',\n detail: null,\n };\n this.patient.activities.push(shAct);\n }\n }\n });\n }\n this.patient.activities.sort((a, b) => {\n if (Date.parse(a.date) > Date.parse(b.date)) return -1;\n else return 1;\n });\n }\n private addCompletionsToActivityList(): void {\n this.patient.completions &&\n this.patient.completions.forEach((c) => {\n if (this.shouldShowCompletionInHistory(c)) {\n let completionDate = new Date(c.createdAt); // date object treated as local beginning-of-day\n if (Date.parse(c.createdAt) < Date.now()) {\n let cActivity;\n let t;\n if (!c.name && (t = this.getTaskFromId(c.taskId))) {\n c.name = t.name;\n }\n if (!c.surveyResponseId) {\n cActivity = {\n type: 'completion',\n date: c.createdAt,\n title: 'Task completion',\n description: c.name,\n detail: [\n {\n label: 'Task',\n content: c.name,\n },\n ],\n };\n //type: string, date: moment.Moment, title: string, desc: string\n //cActivity = new Event(\"completion\", moment(completionDate), \"Task completion\", c.name);\n //cActivity.detail.push({label:\"Task\", content:c.name});\n } else if (c.surveyResponseId) {\n //cActivity = new Event(\"completion\", moment(completionDate), \"Survey completion\", c.name);\n //cActivity.detail.push({label:\"Survey\", content:c.name});\n cActivity = {\n type: 'completion',\n date: c.createdAt,\n title: 'Survey completion',\n description: c.name,\n detail: [\n {\n label: 'Survey',\n content: c.name,\n },\n ],\n };\n } else {\n // TODO - Don't have anything sensible to say about other completion events. We'll add them\n // here once we figure out what we want to do with them.\n // completionEvent = new Event(\"completion\", moment(completionDate), \"Completion\", c.name);\n }\n if (cActivity) {\n //cActivity._source = c;\n this.patient.activities.push(cActivity);\n }\n }\n }\n });\n this.patient.activities &&\n this.patient.activities.sort((a, b) => {\n if (Date.parse(a.date) > Date.parse(b.date)) return -1;\n else return 1;\n });\n }\n public addAlertsToActivityList(): void {\n this.patient.alerts?.all?.forEach((a) => {\n if (!a.inactiveAt && Date.parse(a.createdAt.toString()) < Date.now()) {\n this.patient.activities.push({\n type: 'alert raised',\n date: a.createdAt,\n title: 'Alert raised',\n description: 'Alert raised',\n detail: [\n {\n label: 'Alert',\n content: a.title,\n },\n ],\n });\n } else if (\n a.inactiveAt &&\n Date.parse(a.updatedAt.toString()) < Date.now()\n ) {\n const activity = {\n type: 'alert dismissed',\n date: `${a.inactiveAt}`,\n title: 'Alert closed',\n description: 'Alert closed',\n detail: [\n {\n label: 'Alert',\n content: a.title,\n },\n ],\n };\n this.patient.activities.push(activity);\n\n if (a.inactiveBy) {\n let handledByProfessional;\n if (\n !(handledByProfessional = this.professionList.find(\n ({ inactiveById }) => inactiveById === a.inactiveBy\n ))\n ) {\n handledByProfessional = { firstName: 'unknown', lastName: '' }; //_.find(self.professionals, (p:any) => p._id === a.inactiveBy);\n console.error('professionl Name not found: ', a.inactiveBy);\n }\n if (handledByProfessional) {\n activity.detail.push({\n label: 'Closed by',\n content:\n handledByProfessional.firstName +\n ' ' +\n handledByProfessional.lastName,\n });\n }\n }\n if (a.inactiveAt) {\n activity.detail.push({\n label: 'Original alert raised',\n content: moment(a.createdAt)\n .format('MMM DD, yyyy hh:mm')\n .toString(),\n });\n }\n if (a.inactiveReason) {\n activity.detail.push({\n label: 'Reason',\n //inActiveReason\n //Info is cached\n content: this.inactiveReasonTextFromAlertDismissReason(\n a.inactiveReason\n ),\n });\n }\n }\n });\n this.patient.activities.sort((a, b) => {\n if (Date.parse(a.date) > Date.parse(b.date)) return -1;\n else return 1;\n });\n }\n\n // ================ HELPERS ===================\n formatDate(date: string): string {\n var d = new Date(date),\n month = '' + (d.getMonth() + 1),\n day = '' + d.getDate(),\n year = d.getFullYear();\n\n if (month.length < 2) month = '0' + month;\n if (day.length < 2) day = '0' + day;\n\n return [year, month, day].join('-');\n }\n public inactiveReasonTextFromAlertDismissReason(reason: string): string {\n switch (reason) {\n case 'ignore':\n return 'Ignored';\n case 'phone':\n return 'Phoned patient';\n case 'handoff':\n return 'Handed off to PA or MD';\n case 'message':\n return 'Messaged patient';\n case 'reviewed':\n return 'Reviewed';\n default:\n if (reason && reason.length) {\n return reason.substring(0, 1).toUpperCase() + reason.substring(1);\n }\n }\n }\n private shouldShowCompletionInHistory(c: any): boolean {\n if (c && c.taskType === 'patientsatisfaction') {\n return false;\n }\n return true;\n }}\n","\n","import { Component, OnInit } from '@angular/core';\nimport * as am4core from \"@amcharts/amcharts4/core\";\nimport * as am4charts from \"@amcharts/amcharts4/charts\";\nimport am4themes_animated from \"@amcharts/amcharts4/themes/animated\";\n@Component({\n selector: 'coach-care-test',\n templateUrl: './care-test.component.html',\n styleUrls: ['./care-test.component.scss']\n})\nexport class CareTestComponent implements OnInit {\n days: number;\n chart: am4charts.XYChart;\n systolic_range: Array;\n diastolic_range: Array;\n systolic_goal_range: Array;\n diastolic_goal_range: Array;\n chartDateReserve: Array;\n constructor() { };\n\n ngOnInit(): void {\n this.days = 100;\n this.systolic_range = [85, 125];\n this.diastolic_range = [55, 85];\n this.systolic_goal_range = [90, 120];\n this.diastolic_goal_range = [60, 80];\n this.chartDateReserve = [];\n this.renderBPChart()\n }\n renderBPChart() {\n /**\n clinicportal \n look at src/app/patients/PatientsDetailsCtrl.ts $scope.updateTimelineArea = function()\n ReportsSvc.getUserReportById(sessionToken, $scope.patientId, reportToShowInsteadOfTimeline) \n */\n let tempData = {\n \"type\": \"line\",\n \"label\": \"Blood Pressure Over Time\",\n \"data\": [\n {\n \"label\": \"Systolic Measurement\",\n \"data\": [\n [\n \"2020-06-17T05:01:05\",\n 100\n ],\n [\n \"2020-06-17T09:36:34\",\n 180\n ],\n [\n \"2020-06-17T09:42:55\",\n 130\n ],\n [\n \"2020-06-17T10:57:49\",\n 100\n ],\n [\n \"2020-06-18T02:50:39\",\n 120\n ],\n [\n \"2020-06-26T08:08:58\",\n 120\n ],\n [\n \"2020-06-26T17:27:06\",\n 100\n ]\n ]\n },\n {\n \"label\": \"Diastolic Measurement\",\n \"data\": [\n [\n \"2020-06-17T10:01:05\",\n 99\n ],\n [\n \"2020-06-17T12:01:05\",\n 130\n ],\n [\n \"2020-06-17T19:36:34\",\n 120\n ],\n [\n \"2020-06-18T19:36:34\",\n 130\n ],\n [\n \"2020-06-19T19:36:34\",\n 110\n ],\n [\n \"2020-06-20T19:36:34\",\n 80\n ]\n ]\n }\n ],\n \"xaxis\": {\n \"axisLabel\": \" \",\n \"mode\": \"time\",\n \"tickSize\": [\n 3, \"day\"\n ],\n \"ticks\": [\n [\n 1, \"06/17/2020\"\n ],\n [\n 3, \"06/17/2020\"\n ],\n [\n 5, \"06/26/2020\"\n ]\n ]\n },\n \"yaxis\": {\n \"axisLabel\": \"Pressure (mmHg)\",\n \"min\": 30,\n \"max\": 200\n },\n \"series\": {\n \"points\": {\n \"show\": true\n }\n },\n \"name\": \"bpTracking\",\n \"tooltips\": [\n [\n {\n \"text\": \"Jun 17, 2020\",\n \"value\": 100\n },\n {\n \"text\": \"Jun 17, 2020\",\n \"value\": 180\n },\n {\n \"text\": \"Jun 17, 2020\",\n \"value\": 180\n },\n {\n \"text\": \"Jun 17, 2020\",\n \"value\": 0\n }, {\n \"text\": \"Jun 18, 2020\",\n \"value\": 120\n }, {\n \"text\": \"Jun 26, 2020\",\n \"value\": 120\n }, {\n \"text\": \"Jun 26, 2020\",\n \"value\": 120\n }, {\n \"text\": \"Aug 7, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 8, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 9, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 10, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 11, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 12, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 13, 2020\",\n \"value\": null\n }\n ],\n [\n {\n \"text\": \"Jun 17, 2020\",\n \"value\": 88\n },\n {\n \"text\": \"Jun 17, 2020\",\n \"value\": 120\n },\n {\n \"text\": \"Jun 17, 2020\",\n \"value\": 120\n },\n {\n \"text\": \"Jun 17, 2020\",\n \"value\": 0\n }, {\n \"text\": \"Jun 18, 2020\",\n \"value\": 80\n }, {\n \"text\": \"Jun 26, 2020\",\n \"value\": 80\n }, {\n \"text\": \"Jun 26, 2020\",\n \"value\": 80\n }, {\n \"text\": \"Aug 7, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 8, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 9, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 10, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 11, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 12, 2020\",\n \"value\": null\n }, {\n \"text\": \"Aug 13, 2020\",\n \"value\": null\n }\n ]\n ],\n \"grid\": {\n \"markings\": [\n { // SYSTOLIC\n \"xaxis\": {\n \"from\": 0,\n \"to\": 9\n },\n \"yaxis\": {\n \"from\": 90, // GOAL RANGE VALUES\n \"to\": 130\n },\n \"color\": \"rgba(50, 157, 189, 0.2)\"\n }, { // DIASTOLIC\n \"xaxis\": {\n \"from\": 0,\n \"to\": 9\n },\n \"yaxis\": {\n \"from\": 60,\n \"to\": 80\n },\n \"color\": \"rgb(243, 140, 32, 0.2)\"\n }\n ]\n },\n \"chartId\": \"line-chart-1597211028990-859\"\n }\n /**\n Skeleton:\n {\n \"date\": tooltip,\n \"value\": value,\n \"value2\": value\n }\n */\n am4core.useTheme(am4themes_animated);\n let chart = am4core.create(\"bpChart\", am4charts.XYChart);\n chart.dateFormatter.inputDateFormat = \"yyyy-MM-dd HH:mm:ss\";\n this.chart = chart;\n\n am4core.useTheme(am4themes_animated);\n let data = [];\n // let temp_map = {}\n // for (let el in tempData.data[0].data) {\n // if (!tempData.data[0].data[el][1]) {\n // continue\n // }\n // let key = new Date(tempData.data[0].data[el][0])\n\n // if (!temp_map[key.getTime()]) {\n // temp_map[key.getTime()] = {\n // 'systolic': null,\n // 'diastolic': null,\n // 'goal_diastolic_top': tempData.grid.markings[1].yaxis.to,\n // 'goal_diastolic_bottom': tempData.grid.markings[1].yaxis.from,\n // 'goal_systolic_top': tempData.grid.markings[0].yaxis.to,\n // 'goal_systolic_bottom': tempData.grid.markings[0].yaxis.from\n // }\n // }\n // temp_map[key.getTime()].systolic = tempData.data[0].data[el][1]\n // }\n // for (let el in tempData.data[1].data) {\n // if (!tempData.data[1].data[el][1]) {\n // continue\n // }\n // let key = new Date(tempData.data[1].data[el][0])\n\n // if (!temp_map[key.getTime()]) {\n // temp_map[key.getTime()] = {\n // 'systolic': null,\n // 'diastolic': null,\n // 'goal_diastolic_top': tempData.grid.markings[1].yaxis.to,\n // 'goal_diastolic_bottom': tempData.grid.markings[1].yaxis.from,\n // 'goal_systolic_top': tempData.grid.markings[0].yaxis.to,\n // 'goal_systolic_bottom': tempData.grid.markings[0].yaxis.from\n // }\n // }\n // temp_map[key.getTime()].diastolic = tempData.data[1].data[el][1]\n // }\n // Create axes\n var dateAxis = chart.xAxes.push(new am4charts.DateAxis());\n dateAxis.renderer.grid.template.location = 0;\n dateAxis.renderer.minGridDistance = 50;\n dateAxis.baseInterval = {\n timeUnit: \"minute\",\n count: 1\n };\n dateAxis.tooltipDateFormat = \"HH:mm, d MMMM\";\n var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\n\n // populating data array OLD\n // for (let el in temp_map) {\n // console.log(el, new Date(Number(el)))\n // chart.data.push({\n // 'date': new Date(Number(el)),\n // 'systolic': temp_map[el].systolic,\n // 'diastolic': temp_map[el].diastolic,\n // 'goal_diastolic_top': temp_map[el].goal_diastolic_top,\n // 'goal_diastolic_bottom': temp_map[el].goal_diastolic_bottom,\n // 'goal_systolic_top': temp_map[el].goal_systolic_top,\n // 'goal_systolic_bottom': temp_map[el].goal_systolic_bottom\n // })\n // }\n\n \n // chart.data.sort((a, b) => (a.date > b.date) ? 1 : -1)\n // Create values\n this.chartRenderValues(this.generateRandomValues()) \n // GOAL DIASTOLIC RANGE\n var goal_diastolic_top = this.chart.series.push(new am4charts.LineSeries());\n goal_diastolic_top.dataFields.dateX = \"date\";\n goal_diastolic_top.dataFields.openValueY = \"goal_diastolic_bottom\";\n goal_diastolic_top.dataFields.valueY = \"goal_diastolic_top\";\n goal_diastolic_top.sequencedInterpolation = true;\n goal_diastolic_top.fillOpacity = 0.3;\n goal_diastolic_top.tensionX = 0.8;\n goal_diastolic_top.hiddenInLegend = true;\n goal_diastolic_top.hideTooltip()\n goal_diastolic_top.stroke = am4core.color(\"#f7d5b8\")\n goal_diastolic_top.fill = am4core.color(\"#f7d5b8\")\n\n var goal_diastolic_bottom = this.chart.series.push(new am4charts.LineSeries());\n goal_diastolic_bottom.dataFields.dateX = \"date\";\n goal_diastolic_bottom.dataFields.valueY = \"goal_diastolic_bottom\";\n goal_diastolic_bottom.sequencedInterpolation = true;\n goal_diastolic_bottom.stroke = this.chart.colors.getIndex(6);\n goal_diastolic_bottom.tensionX = 0.8;\n goal_diastolic_bottom.hiddenInLegend = true;\n goal_diastolic_bottom.hideTooltip()\n goal_diastolic_bottom.stroke = am4core.color(\"#f7d5b8\")\n\n // GOAL SYSTOLIC RANGE\n var goal_systolic_top = this.chart.series.push(new am4charts.LineSeries());\n goal_systolic_top.dataFields.dateX = \"date\";\n goal_systolic_top.dataFields.openValueY = \"goal_systolic_bottom\";\n goal_systolic_top.dataFields.valueY = \"goal_systolic_top\";\n goal_systolic_top.sequencedInterpolation = true;\n goal_systolic_top.fillOpacity = 0.3;\n goal_systolic_top.tensionX = 0.8;\n goal_systolic_top.hiddenInLegend = true;\n goal_systolic_top.hideTooltip()\n goal_systolic_top.stroke = am4core.color(\"#9fd4e4\")\n goal_systolic_top.fill = am4core.color(\"#9fd4e4\")\n\n var goal_systolic_bottom = this.chart.series.push(new am4charts.LineSeries());\n goal_systolic_bottom.dataFields.dateX = \"date\";\n goal_systolic_bottom.dataFields.valueY = \"goal_systolic_bottom\";\n goal_systolic_bottom.sequencedInterpolation = true;\n goal_systolic_bottom.stroke = this.chart.colors.getIndex(6);\n goal_systolic_bottom.tensionX = 0.8;\n goal_systolic_bottom.hiddenInLegend = true;\n goal_systolic_bottom.hideTooltip()\n goal_systolic_bottom.stroke = am4core.color(\"#9fd4e4\")\n\n this.chart.legend = new am4charts.Legend();\n this.chart.cursor = new am4charts.XYCursor();\n this.chart.scrollbarX = new am4core.Scrollbar();\n this.createSeries(\"systolic\", \"Systolic\", \"rgba(50, 157, 189, 0.5)\");\n this.createSeries(\"diastolic\", \"Diastolic\", \"rgba(243, 140, 32, 0.6)\");\n }\n createSeries(field, name, color) {\n var series = this.chart.series.push(new am4charts.LineSeries());\n series.dataFields.valueY = field;\n series.dataFields.dateX = \"date\";\n series.name = name;\n series.tooltipText = `[b]{valueY}[/]`;\n series.strokeWidth = 8;\n series.tooltip.getFillFromObject = false;\n series.tooltip.background.fill = am4core.color(color);\n if (color) {\n series.stroke = am4core.color(color);\n }\n\n var circleBullet = series.bullets.push(new am4charts.CircleBullet());\n circleBullet.circle.radius = 10;\n circleBullet.circle.fill = am4core.color(color);\n circleBullet.circle.fillOpacity = 0.5;\n circleBullet.circle.stroke = am4core.color(color);\n circleBullet.circle.strokeOpacity = 0.5;\n return series;\n }\n chartRenderValues(data) {\n this.chart.data = data;\n if(this.days == 100){\n this.chartDateReserve = data\n } \n }\n daysChange(val, force?) { \n if (val === this.days && !force) return;\n this.days = val;\n let data = []\n var d = new Date();\n d.setDate(d.getDate() - this.days);\n for (let i = 0; i < this.chartDateReserve.length; i++) { \n if (d <= this.chartDateReserve[i]['date']) {\n data.push(this.chartDateReserve[i])\n }\n }\n this.chartRenderValues(data)\n }\n generateRandomValues(){\n let data = []\n for (let i = 0; i < 100; i++) {\n if ((Math.floor(Math.random() * 3) + 1) % 2 == 0) { // randomly skips every thrid day to make inputs realistic\n continue\n }\n var d = new Date();\n d.setDate(d.getDate() - (100 - i)); \n d.setHours(Math.floor(Math.random() * 24), Math.floor(Math.random() * 60),Math.floor(Math.random() * 60) )\n data.push({\n 'date': d,\n 'systolic': Math.floor(Math.random() * (this.systolic_range[1] - this.systolic_range[0] + 1) + this.systolic_range[0]),\n 'diastolic': Math.floor(Math.random() * (this.diastolic_range[1] - this.diastolic_range[0] + 1) + this.diastolic_range[0]),\n 'goal_diastolic_top': this.diastolic_goal_range[1],\n 'goal_diastolic_bottom': this.diastolic_goal_range[0],\n 'goal_systolic_top': this.systolic_goal_range[1],\n 'goal_systolic_bottom': this.systolic_goal_range[0]\n })\n\n }\n return data\n }\n randomizeData() { \n this.chartDateReserve = this.generateRandomValues();\n this.daysChange(this.days, true)\n }\n rangeChange(val, target, idx) {\n this[target][idx] = val\n for (let el in this.chart.data) {\n let target_type = target.split(\"_\")[0]\n if (idx == 0 && this.chart.data[el][target_type] < this[target][idx]) {\n // console.log(\"ues\")\n this.chart.data[el][target_type] = this[target][idx]\n } else if (idx == 1 && this.chart.data[el][target_type] > this[target][idx]) {\n this.chart.data[el][target_type] = this[target][idx]\n }\n }\n }\n}\n","
\n
\n
\n
\n
\n \n \n\n \n \n
\n
\n
\n
100 Days
\n
Month
\n
2 weeks
\n
1 week
\n \n
\n
\n\n\n
","
\n
\n
\n
Default Typeface
\n
\n

Lato

\n
\n
\n
Regular
\n
Bold
\n
Bolder
\n
Light
\n
Italic
View Specimen\n
\n
\n \n
\n
\n

Header One h1. Rendered\n at 40px @ 1.6rem base font config

\n

Header Two h2. 32px\n @ 1.6rem

\n

Header Three h3. 26px\n @ 1.6rem

\n

Header Four h4. 20px\n @ 1.6rem

\n
Header Five h5. 14px\n @ 1.6rem
\n
Header Six h6. 14px\n @ 1.6rem
\n
\n
\n
Titles t1 > Title
\n
subtitle down below
\n
\n
\n
Titles t2 > Title
\n
subtitle down below
\n
\n
\n
Titles t3 > Title
\n
subtitle down below
\n
\n
\n
Titles t4 > Title
\n
subtitle down below
\n
\n
\n
Titles t5 > Title
\n
subtitle down below
\n
\n
\n
Titles t6 > Title
\n
subtitle down below
\n
\n
\n
Titles > Title Above
\n
subtitle down below
\n
\n
\n
Subheader
\n
\n
\n
Native Typography Elements
\n
\n

Lorem ipsum b tag along with strong tag and small tag dolor amet Hyperlink Text seitan pork belly unicorn put a bird on it ramps. Cred deep v level\n sustainable offal.\n Microdosing wolf VHS distillery. Messenger bag meh ethical fixie, 3 wolf portland moon\n next level lomo humblebrag XOXO street art salvia.

\n
\n
\n
\n
Light
\n

A bit lighter, WCAG

\n
\n

Lorem ipsum b tag along with strong tag and small\n tag dolor amet Hyperlink Text seitan pork belly unicorn put a bird on it ramps.\n Cred deep v\n level sustainable offal. Microdosing wolf VHS distillery. Messenger bag meh ethical fixie,\n 3 wolf portland moon next level lomo humblebrag XOXO street art salvia.

\n
\n
\n
\n
lighter
\n

Slightly lighter, WCAG

\n
\n

Lorem ipsum b tag along with strong tag and\n small tag dolor amet Hyperlink Text seitan pork belly unicorn put a bird on\n it ramps. Cred deep v\n level sustainable offal. Microdosing wolf VHS distillery. Messenger bag meh ethical fixie,\n 3 wolf portland moon next level lomo humblebrag XOXO street art salvia.

\n
\n
\n
\n
lightest
\n

Much lighter, Fails WCAG

\n
\n

Lorem ipsum b tag along with strong tag and\n small tag dolor amet Hyperlink Text seitan pork belly unicorn put a bird on\n it ramps. Cred deep v\n level sustainable offal. Microdosing wolf VHS distillery. Messenger bag meh ethical fixie,\n 3 wolf portland moon next level lomo humblebrag XOXO street art salvia.

\n
\n
\n
\n
\n
Display One
\n
Display Two
\n
Display Three
\n
Display Four
\n
Display Five
\n
Display Six
\n
\n
\n
Font sizes
\n
\n
u-font-size--small Lorem ipsum dolor amet tofu keffiyeh glossier\n craft beer sartorial. Banh mi vice mixtape, keytar celiac next level raw denim. Crucifix food truck hexagon,\n tousled raclette\n thundercats
\n
Default Lorem ipsum dolor amet tofu keffiyeh glossier craft beer sartorial. Banh mi\n vice mixtape, keytar celiac next level raw denim. Crucifix food truck hexagon, tousled raclette thundercats\n
\n
u-font-size--large Lorem ipsum dolor amet tofu keffiyeh glossier\n craft beer sartorial. Banh mi vice mixtape, keytar celiac next level raw denim. Crucifix food truck hexagon,\n tousled raclette\n thundercats
\n
\n
\n
\n
Interaction Color for buttons,etc
\n
\n
\n
\n
\n
Interaction
\n
\n
\n
\n
\n
UX States
\n
\n
Active State
\n
Focused State
\n
\n
Alert Colors
\n
\n
Info
\n
Success
\n
Warning
\n
Danger
\n
\n
Brand/Theme Colors
\n
\n \n \n
1
\n
\n \n
2
\n
\n \n
3
\n
\n \n
4
\n \n \n
5
\n \n \n
6
\n \n \n
Gradients
\n
\n
\n
Default
\n
\n
\n
\n
\n
Cool
\n
\n
\n
Warm
\n
\n
\n
Mix
\n
\n
\n
Background Blacks/Whites
\n
\n
\n \n
0
\n
1
\n
2
\n
3
\n
4
\n
5
\n
\n
\n \n
0
\n
1
\n
2
\n
3
\n
4
\n
5
\n
\n
\n
Shadows
\n
\n
Shadow 0
\n
Shadow 1
\n
Shadow 2
\n
Shadow 3
\n
\n
Default spacing sizes
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Atomic UI Elements

\n
\n

h1

\n

h2

\n

h3

\n

h4

\n
h5
\n
h6
\n
D1
\n
D2
\n
D3
\n
D4
\n
D5
\n
D6
\n

paragraph

\n Anchor Tag\n \n \n \n \n \n \n \n Small Button\n \n \n \n \n
\n
\n
\n
Bean
\n
Bean--interactive \n \n
\n
Bean is-small
\n \n \n \n \n \n
\n
\n
    \n
  • Item 1
  • \n
  • Item 2
  • \n
  • Item 3
  • \n
\n
    \n
  • Item 1
  • \n
  • Item 2
      \n
    • Item 2.1
    • \n
    • Item 2.2
    • \n
    • Item 2.3
    • \n
    \n
  • \n
  • Item 3
  • \n
\n
    \n
  1. Item 1
  2. \n
  3. Item 2
  4. \n
  5. Item 3
  6. \n
\n
    \n
  1. Item 1
  2. \n
  3. Item 2
      \n
    1. Item 2.1
    2. \n
    3. Item 2.2
    4. \n
    5. Item 2.3
    6. \n
    \n
  4. \n
  5. Item 3
  6. \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n\n
\n
\n \n
\n
\n JG\n
\n
\n \n
\n
\n JG\n
\n
\n \n
\n
\n JG\n
\n
\n \n
\n
\n JG\n
\n
\n \n
\n
\n JG\n
\n
\n\n\n\n

Molecules

\n\n
\n\n
Ideal Patterns
\n
\n
\n
list-item (plain)
\n
Field 2
\n
\n
\n\n
\n
\n
list-item (plain)
\n
Field 2
\n
\n
\n
Third field here
\n
#4
\n
\n
\n\n
\n
\n
\n
list-item--complex
\n
Field 2
\n
\n
\n
\n action\n
\n
\n\n
\n
\n
\n
list-item--complex
\n
Field 2
\n
\n
\n
Third field here
\n
#4
\n
\n
\n
\n action\n
\n
\n\n
\n
\n
\n
\n
\n
\n
Robert \"Robby\" Smith
\n
\n
1
\n
2
\n
\n
\n
\n
I'm built with row--verticalCenter
\n
\n
\n
\n\n
\n
\n \n
list-item (plain)
\n
Field 2
\n
\n
\n\n\n
\n
\n \n
\n
\n
\n
list-item (plain)
\n
Field 2
\n
\n
\n
Third field here
\n
#4
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
Robert \"Robby\" Smith
\n
\n
1
\n
2
\n
\n
\n
\n
I'm built with list-item-complex
\n
\n
\n
\n
\n action\n
\n
\n 2\n
\n
\n\n\n
Stress Testing
\n\n
\n
\n
Jeff Garlin
\n
#9271
\n
\n
\n
Just a plain old list-item
\n
11/12/1960
\n
\n
\n\n
\n
\n
Jeff Garlin
\n
#9271
\n
\n
\n
Jeffy@jeff.com
\n
11/12/1960
\n
\n
\n\n
\n
\n
\n
list-item--complex
\n
#9271
\n
\n
\n
Jeffy@jeff.com
\n
11/12/1960
\n
\n
\n
\n action\n
\n
\n\n
\n
\n
\n
list-item--complex
\n
#9271
\n
\n
\n
Jeffy@jeff.com
\n
11/12/1960
\n
\n
\n
\n action\n
\n
\n\n
\n
\n
\n
\n
\n
\n
Robert \"Robby\" Smith
\n
\n
1
\n
2
\n
\n
\n
\n
I'm built with row--verticalCenter
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
Robert \"Robby\" Smith
\n
\n
1
\n
2
\n
\n
\n
\n
I'm built with list-item--complex and --singleHitArea
\n
\n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
list-item row row--verticalCenter
\n
#9271
\n
\n
\n
list-item row row--verticalCenter
\n
11/12/1960
\n
\n
\n
\n\n\n\n
\n
\n
\n
\n \n
\n
\n
\n
\n
primary field
\n
#9271
\n
\n
\n
list-item--complex > list-item-main row--verticalCenter
\n
11/12/1960
\n
\n
\n
\n
\n \n
\n
\n\n
\n
\n
\n
list-item--complex
\n
#9271
\n
\n
\n
Jeffy@jeff.com
\n
11/12/1960
\n
\n
\n
\n \n
\n
\n\n
\n
\n
\n
list-item--multipleClickAreas
\n
#9271
\n
\n
\n
Jeffy@jeff.com
\n
11/12/1960
\n
\n
\n
\n \n
\n
\n click area\n
\n
\n\n
\n
\n
\n
list-item--multipleClickAreas
\n
#9271
\n
\n
\n
Jeffy@jeff.com
\n
11/12/1960
\n
\n
\n
\n \n
\n
\n\n
\n
\n
\n
formatting--none
\n
#9271
\n
\n
\n
Jeffy@jeff.com
\n
11/12/1960
\n
\n
\n
\n 1\n
\n
\n 2\n
\n
\n\n
\n
\n
\n
formatting--none
\n
#9271
\n
\n
\n
Jeffy@jeff.com
\n
11/12/1960
\n
\n
\n
\n \n
\n
\n\n
\n
\n
\n
Jeff Garlin
\n
#9271
\n
\n
\n
Jeffy@jeff.com
\n
11/12/1960
\n
\n
\n
\n \n
\n
\n\n
\n
\n
\n
padding-- modifier
\n
#9271
\n
\n
\n
Jeffy@jeff.com
\n
11/12/1960
\n
\n
\n
\n \n
\n
\n\n
\n
\n
Chronic Conditions Dashboard
\n
06/12/20
\n
\n
\n
\n
\n
Custom View
\n \n
\n
\n
\n
\n
\n
Practice Name
\n
Label here
\n
\n
\n
\n \n
\n
\n
\n
\n
High BP Alerts
\n
14
\n
\n
\n
\n
\n \n
\n
\n
\n
Schedules AWVs
\n
132
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
Robert \"Robby\" Smith
\n
\n
1
\n
2
\n
\n
\n
\n
My last two readings were in the normal range!
\n
\n
\n
\n click\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
Yuna “June” Takahashi
\n
\n
1
\n
1
\n
\n
\n
\n
Can you calll me? My ear is really aching this morning.
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
Field here yeah
\n
\n
\n
second row below
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
Primary field here
\n
#000asd0123
\n
\n
\n
\n
\n\n

Organisms

\n\n \n\n \n
\n
\n
\n
\n
Modal
\n
some modal thing
\n
\n
\n
I'm some cool modal stuff.
\n
\n \n \n
\n
\n
\n
\n\n

Custom Components

\n

Loading Indicator

\n \n

Button Toggle

\n \n

Fontawesome Icons

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n

Border radius

\n
\n \n \n \n \n \n \n
\n\n\n","import { Component, OnInit } from '@angular/core';\nimport { faPhone, faSms, faMinus, faUserMd, faCheckSquare, faTimesCircle } from '@fortawesome/free-solid-svg-icons';\n@Component({\n selector: 'coach-care-settings',\n templateUrl: './care-settings.component.html'\n})\nexport class CareSettingsComponent implements OnInit {\n faMinus = faMinus;\n faPhone = faPhone;\n faSms = faSms;\n faUserMd = faUserMd;\n faCheckSquare = faCheckSquare;\n faTimesCircle = faTimesCircle;\n constructor() { }\n\n ngOnInit(): void {\n }\n\n public showModalDemo: boolean = false;\n\n public toggleModalDemo() {\n this.showModalDemo = !this.showModalDemo;\n }\n\n}\n","\n\n\n \n \n \n \n \n \n \n \n","import { Component, OnInit } from '@angular/core';\nimport { CoachTabs } from '@shared/components/coach-tabs/coach-tabs';\nimport { GridApi } from 'ag-grid-community';\nexport interface FilterOption {\n headerLabel: string;\n filterInstanceLabel: string;\n optionLabels: string[];\n checkedByDefault: string[];\n dataMapper: (data: any) => string;\n customMonthLabelPresent?: boolean;\n customMonthLabel?: string;\n filterByDateAndStatus?: boolean;\n}\n@Component({\n selector: 'coach-care-all-prescriptions',\n templateUrl: './care-all-prescriptions.component.html',\n host: {\n class: 'page-content coach-care-patients',\n },\n styleUrls: ['./care-all-prescriptions.component.scss']\n})\nexport class CareAllPrescriptionsComponent implements OnInit {\n selectedList: CoachTabs;\n gridApi: GridApi;\n filterOptions: FilterOption[];\n constructor() { }\n\n ngOnInit(): void {\n }\n listSelected(list: CoachTabs): void {\n this.selectedList = list;\n }\n\n gridApiChanged(gridApi: GridApi): void {\n this.gridApi = gridApi;\n }\n filterOptionsChanged(filterOptions: FilterOption[]): void {\n this.filterOptions = filterOptions;\n }\n}\n","import { formatDate } from '@angular/common';\nimport {removeLeadingZeros, mapOverallOptionsToStrings} from '../care-prescriptions/shared-lib';\nimport {formatDate as fmtDate, statusSortPriorityMap} from '../care-prescriptions/shared-lib';\nimport { compareString, compareStringPlain, compareNumber, compareRiskTrend, compareRiskCategory, compareDate} from \"@shared/components/grid/grid-functions\"\n\nimport moment from 'moment';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { ColDef } from 'ag-grid-community';\n\n\nexport const COLUMN_DEFS: Array = [\n {\n headerName: 'STATUS',\n field: 'status',\n maxWidth: 128,\n suppressAutoSize: true,\n sortable: true,\n resizable: true,\n cellRenderer: (data) => {\n return mapOverallOptionsToStrings(data.data?.status ?? -1);\n },\n comparator: (s1, s2) => {\n let sx1 = statusSortPriorityMap.get(s1);\n let sx2 = statusSortPriorityMap.get(s2);\n return sx1 - sx2;\n },\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'NAME',\n field: 'patientName',\n maxWidth: 200,\n comparator: compareString,\n resizable: true,\n filter: 'agSetColumnFilter',\n sortable: true,\n cellRenderer: (data: any): string => {\n return data.data?.patientName;\n },\n },\n {\n headerName: 'DOB',\n field: 'dob',\n maxWidth: 120,\n suppressAutoSize: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n sortable: true,\n cellRenderer: (data: any): string => {\n return moment(data.data?.dob).format('L');\n },\n },\n // This may come back -- DJ\n // {\n // headerName: 'MBI',\n // field: 'mbi',\n // maxWidth: 170,\n // suppressAutoSize: true,\n // resizable: true,\n // comparator: compareStringPlain,\n // filter: 'agSetColumnFilter',\n // cellRenderer: (data): string => {\n // return mask.transform(data.data?.mbi, 6);\n // },\n // valueGetter: params => {\n // return mask.transform(params.data?.mbi, 6);\n // }\n // },\n {\n headerName: 'FIRST FILL',\n field: 'firstFillDate',\n maxWidth: 130,\n suppressAutoSize: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n cellRenderer: (data): string => {\n return data.data?.firstFilled\n ? formatDate(new Date(data.data?.firstFilled), 'MM/dd/yy', 'en_US').trim()\n : '';\n },\n valueGetter: (data: any) => {\n let result = formatDate(new Date(data.data?.firstFilled), 'yyyy/MM/dd', 'en_US').trim();\n return result;\n },\n getQuickFilterText: params => {\n return params.value;\n },\n sortable: true,\n suppressSizeToFit: true,\n },\n {\n headerName: 'FILL#',\n field: 'clPrescriptionFillNumber',\n maxWidth: 120,\n filter: 'agSetColumnFilter',\n resizable: true,\n hide: false,\n sortable: true,\n cellRenderer: (data: any): string => {\n return removeLeadingZeros(data.data?.clPrescriptionFillNumber);\n },\n valueGetter: params => {\n return params.data?.clPrescriptionFillNumber\n ? parseInt(params.data?.clPrescriptionFillNumber)\n : '';\n }\n },\n {\n headerName: 'FILL DATE',\n field: 'fillDate',\n maxWidth: 130,\n suppressAutoSize: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n hide: false,\n cellRenderer: (data): string => {\n return data.data?.firstFilled\n ? formatDate(new Date(data.data?.fillDate), 'MM/dd/yy', 'en_US').trim()\n : '';\n },\n valueGetter: (data: any) => {\n let result = formatDate(new Date(data.data?.fillDate), 'yyyy/MM/dd', 'en_US').trim();\n return result;\n },\n getQuickFilterText: params => {\n return params.value;\n },\n sortable: true,\n suppressSizeToFit: true,\n },\n {\n headerName: 'PRESCRIPTION',\n field: 'prescriptionName',\n resizable: true,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n cellRenderer: (data): string => {\n return data.data?.prescriptionName;\n },\n },\n {\n headerName: 'PRESCRIBER',\n field: 'prescriberName',\n resizable: true,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n cellRenderer: (data): string => {\n return data.data?.prescriberName;\n },\n },\n {\n headerName: 'RX NUMBER',\n field: 'rxNumber',\n maxWidth: 120,\n suppressAutoSize: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n // hide: true,\n valueGetter: params => {\n return params.data.rxNumber;\n }\n },\n {\n headerName: 'PHARMACY',\n field: 'pharmacyName',\n resizable: true,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n cellRenderer: (data): string => {\n return data.data?.pharmacyName;\n },\n valueGetter: data => {\n return data.data?.pharmacyName;\n }\n },\n {\n headerName: 'PHARMACY (OTHER)',\n field: 'pharmacyNameOther',\n resizable: true,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n cellRenderer: (data): string => {\n return data.data?.pharmacyNameOther;\n },\n valueGetter: data => {\n return data.data?.pharmacyNameOther;\n }\n },\n {\n headerName: 'PHARMACY ADDRESS',\n field: 'pharmacyAddress',\n resizable: true,\n sortable: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n cellRenderer: (data): string => {\n return data.data?.pharmacyAddress;\n },\n valueGetter: data => {\n return data.data?.pharmacyAddress;\n }\n },\n {\n headerName: 'FIRST FILLED HIDDEN',\n field: 'firstFilledHidden',\n maxWidth: 120,\n suppressAutoSize: true,\n hide: true,\n valueGetter: params => {\n return fmtDate(params.data.firstFilled);\n }\n },\n {\n headerName: 'NPI HIDDEN',\n field: 'npi',\n maxWidth: 120,\n suppressAutoSize: true,\n hide: true,\n valueGetter: params => {\n return params.data.npi;\n }\n },\n {\n headerName: 'Price',\n field: 'tpaPrice',\n resizable: true,\n sortable: true,\n comparator: compareNumber,\n filter: 'agSetColumnFilter',\n cellRenderer: (data): string => {\n const price = data.data?.claimType === 'CMS'\n ? `$${data.data?.awpPrice.toFixed(2)}`\n : `$${data.data?.tpaPrice.toFixed(2)}`;\n return price;\n },\n valueGetter: data => {\n const price = data.data?.claimType === 'CMS'\n ? +data.data?.awpPrice.toFixed(2)\n : +data.data?.tpaPrice.toFixed(2);\n return price;\n }\n },\n {\n headerName: 'Claim Source',\n field: 'tpaName',\n minWidth: 120,\n suppressAutoSize: true,\n hide: false,\n filter: 'agSetColumnFilter',\n sortable: true,\n },\n {\n headerName: 'Drug Manufacturer',\n field: 'drugManufacturer',\n minWidth: 120,\n suppressAutoSize: true,\n hide: false,\n filter: 'agSetColumnFilter',\n sortable: true,\n },\n];\n","\n\n\n\n\n
\n
\n
\n
\n
\n
340B External Prescriptions
\n
\n\n
\n \n \n \n \n \n
\n\n \n \n
\n
\n Cancel\n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\n\n\nimport { COLUMN_DEFS } from './care-prescription.columns';\nimport {\n IPrescription,\n IPrescriptionDetail,\n} from '@shared/models/prescription';\nimport { IPrescriptionFilterPreset } from '@shared/models/prescription-filters';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { takeUntil } from 'rxjs/operators';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { ToastrService } from 'ngx-toastr';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { Subscription } from 'rxjs';\nimport {\n ClaimStatus,\n mapOverallOptionsToStrings,\n formatDate,\n formatDateFourDigitYear,\n B340StringConstants,\n} from './shared-lib';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { FilterOption } from '../care-all-prescriptions/care-all-prescriptions.component';\nimport { GridApi, ColumnApi, ColDef } from 'ag-grid-community';\n\n// THIS IS A TEST FOR GITHUB INTEGRATION AND WILL BE REMOVED IN THE FUTURE\n@Component({\n selector: 'coach-care-prescriptions',\n templateUrl: './care-prescriptions.component.html',\n host: {\n class: 'page-content coach-care-prescriptions',\n },\n})\nexport class CarePrescriptionsComponent\n extends KillSubscriptions\n implements OnInit, OnDestroy\n{\n public static ACCESS_AUDIT_MESSAGE = 'Accessed 340B Work Queue';\n public static PRINTED_AUDIT_MESSAGE = 'Printed 340B patient list';\n\n public prescriptions: Array = [];\n public dataLoaded: boolean = false;\n public loadingStatus = true;\n public cancelLoadingBool = false;\n public resetFilter = false;\n public selectedPreset: IPrescriptionFilterPreset;\n public prescriptionDetail: IPrescriptionDetail;\n \n public gridApi: GridApi;\n public columnApi: ColumnApi;\n public selectedPatientInfo: any;\n readonly defaultColDef: ColDef = {\n resizable: true,\n };\n readonly columnDefs = COLUMN_DEFS;\n\n dateRangeLow: Date;\n dateRangeHigh: Date;\n\n public orgId: string = null;\n public tier: IHierarchyTier = null;\n public rowCount: number = 10;\n public pageNo: number = 1;\n\n public gridObject: any = null;\n public currentRow: any = null;\n public redrawRowInterval: any;\n\n b340StringConstants: B340StringConstants = new B340StringConstants();\n \n ceLocations;\n\n public claimPanelStatus: number = 1;\n\n authSubscription: Subscription;\n currentUser: any;\n\n filterOptions: FilterOption[];\n UIUpdates340BFeatureFlag: boolean;\n @Output() public gridApiEmitter: EventEmitter = new EventEmitter();\n @Output() public filterOptionsEmitter: EventEmitter =\n new EventEmitter();\n\n exportOptions = [\"Exports\", \"Patient List\", \"Export\"];\n selectedExportOption = this.exportOptions[0];\n\n constructor(\n private _route: ActivatedRoute,\n private HierarchyTierService: HierarchyTierService,\n private PrescriptionService: PrescriptionService,\n private toastr: ToastrService,\n private router: Router,\n protected featureFlagService: FeatureFlagService,\n private authService: AuthService\n ) {\n super();\n HierarchyTierService.currentTier$\n .pipe(takeUntil(this.killTrigger))\n .subscribe(async (tier) => {\n if (this.tier?.selectedTierId !== tier?.selectedTierId) {\n this.tier = tier;\n this.prescriptions = await this.getPrescriptions();\n this.initializeFilter();\n }\n });\n this.UIUpdates340BFeatureFlag = this.featureFlagService.hasFeatureFlag(\n CareFeatureConstants.UIUpdates340B\n );\n }\n\n ngOnInit(): void {\n this.authSubscription = this.authService.userInfo$.subscribe(\n (currentUser) => (this.currentUser = currentUser)\n );\n }\n\n ngOnDestroy(): void {\n this.authSubscription.unsubscribe();\n clearInterval(this.redrawRowInterval);\n }\n\n initializeFilter() {\n const { selectedItem } = this.tier;\n\n this.PrescriptionService.getPrescribers(\n selectedItem.tier1_ID,\n selectedItem.tier2_ID,\n selectedItem.tier3_ID,\n selectedItem.tier4_ID\n )\n .then((prescribers) => {\n const filterOptions = [\n {\n headerLabel: 'Status',\n filterInstanceLabel: 'status',\n optionLabels: ['Has Note', 'Pending', 'New', 'Rejected', 'Expired'],\n checkedByDefault: ['Has Note', 'Pending', 'New'],\n dataMapper: (data) => {\n switch (data) {\n case 'Has Note':\n return `${ClaimStatus.HAS_NOTE}`;\n case 'Pending':\n return `${ClaimStatus.PENDING}`;\n case 'New':\n return `${ClaimStatus.NEW}`;\n case 'Rejected':\n return `${ClaimStatus.REJECTED}`;\n case 'Expired':\n return `${ClaimStatus.EXPIRED}`;\n }\n },\n },\n ];\n\n prescribers.shift();\n\n filterOptions.push({\n headerLabel: 'External Prescribers',\n filterInstanceLabel: 'prescriberName',\n checkedByDefault: ['All'],\n optionLabels: prescribers\n .filter(prescriber => prescriber.name && prescriber.name !== ' ')\n .map((prescriber) => {\n return prescriber.name;\n }),\n dataMapper: null,\n });\n\n filterOptions.push({\n headerLabel: 'Claim Source',\n filterInstanceLabel: 'tpaName',\n checkedByDefault: ['All'],\n optionLabels: this.b340StringConstants.FILTER_SHARED_OPTION_LABELS_TPANAME,\n dataMapper: null,\n });\n\n this.filterOptions = filterOptions;\n this.filterOptionsEmitter.emit(this.filterOptions);\n\n this.loadingStatus = false;\n });\n }\n\n exportSelectionChanged(e) {\n switch (e.target.value) {\n case this.b340StringConstants.EXPORTS_PATIENT_LIST:\n this.generatePatientOutputFile();\n break;\n case this.b340StringConstants.EXPORTS_EXPORT:\n this.exportExtendedClaimsData();\n break;\n default:\n break;\n }\n\n setTimeout(() => {\n this.selectedExportOption = this.b340StringConstants.EXPORT_MENU_TITLE;\n }, 0);\n }\n\n generatePatientOutputFile() {\n const dateRange = this.getAuditMessageDateRange();\n const auditOptions = {\n entityid: parseInt(this.currentUser.dnn_id),\n moduleid: 2, // care\n componentid: 36,\n actionid: 9,\n tablename: 'Coach340BDetail',\n auditdesc: `User ID ${this.currentUser.dnn_id} Printed 340B patient list for date range ${dateRange}`,\n applicationID: 2,\n };\n this.PrescriptionService.writeAuditMessage(auditOptions);\n\n this.gridApi.exportDataAsExcel({\n processCellCallback: (params) => {\n switch (params.column.getColId()) {\n case 'status':\n return mapOverallOptionsToStrings(params.value);\n case 'dob':\n case 'firstFilled':\n return formatDate(params.value);\n case 'fillDate':\n return formatDate(params.value);\n case 'claimType':\n return params.value === \"CMS\" ? \"CMS\" : params.node.data.tpaName;\n default:\n return params.value;\n }\n },\n });\n }\n\n exportExtendedClaimsData() {\n let tbl = document.createElement('table');\n let data = this.buildTableData();\n let visibleNodes = this.buildVisibleClaimsNodeSet();\n\n let filteredData = data.filter(claimObj => {\n for (let node of visibleNodes) {\n if (node.claimPk === claimObj.claimPk && node.claimType === claimObj.claimType) {\n return true;\n }\n }\n return false;\n }).map(claimObj => {\n delete claimObj.claimPk;\n delete claimObj.claimType;\n claimObj.drugManufacturer = claimObj.drugManufacturer ?? '';\n claimObj.tpaName = claimObj.tpaName ? claimObj.tpaName : \"CMS\";\n claimObj[\"Claim Source\"] = claimObj.tpaName;\n delete claimObj.tpaName;\n return claimObj;\n });\n\n this.generateTable(tbl, filteredData);\n this.generateTableHead(tbl, filteredData[0]);\n\n const csv = this.toCsv(tbl);\n this.download(csv, 'download.csv');\n }\n\n buildVisibleClaimsNodeSet() {\n let pageCount = this.gridApi.paginationGetTotalPages();\n let originalPage = this.gridApi.paginationGetCurrentPage();\n this.gridApi.paginationGoToFirstPage();\n let nodes = [];\n for (let i = 0; i < pageCount; i++) {\n let currentPageNodes = this.gridApi.getRenderedNodes();\n nodes.push(currentPageNodes);\n this.gridApi.paginationGoToNextPage();\n }\n this.gridApi.paginationGoToPage(originalPage);\n return new Set(nodes.flat(1).map(node => {return {claimPk: node.data.claimPk, claimType: node.data.claimType}}));\n }\n\n buildTableData(): any {\n return this.prescriptions.map(p => {\n return {\n \"claimPk\": p.claimPk,\n \"Tier2_Name\": p.tier2_Name,\n \"Rx Number\": p.rxNumber,\n \"Bene_Full Name\": `\"${p.patientName}\"`,\n \"Bene DOB\": formatDateFourDigitYear(p.dob),\n \"NDC\": p.ndc,\n \"Medication_Description\": `\"${p.prescriptionName}\"`,\n \"Fill Number\": p.clPrescriptionFillNumber,\n \"Prescription_Filled_Date\": formatDateFourDigitYear(p.fillDate),\n \"Date_Initial_Fill\": formatDateFourDigitYear(p.firstFilled),\n \"Prescribing_Provider_NPI\": p.npi,\n \"Prescribing_Provider_Name\": `\"${p.prescriberName}\"`,\n \"Provider_Address\": `\"${p.location}\"`,\n \"Prescribing_Provider_Specialty\": `\"${p.prescriberSpecialty}\"`,\n \"Service_Pharmacy_NPI\": p.servicePharmacyNpi,\n \"Pharmacy_Org_Name\": `\"${p.pharmacyName}\"`,\n \"Pharmacy_Other_Org_Name\": `\"${p.pharmacyNameOther}\"`,\n \"Pharmacy_Address\": `\"${p.pharmacyAddress}\"`,\n \"Pharmacy_Address_Other\": `\"${p.pharmacyAddressOther || ''}\"`,\n \"Price\": `$${p.claimType === 'CMS' ? p.awpPrice : p.tpaPrice}`,\n \"claimType\": p.claimType,\n \"Claim Source\": null,\n \"drugManufacturer\": p.drugManufacturer,\n \"tpaName\": p.tpaName,\n }\n })\n }\n \n toCsv = function (table) {\n // Query all rows\n const rows = table.querySelectorAll('tr');\n\n return [].slice\n .call(rows)\n .map(function (row) {\n // Query all cells\n const cells = row.querySelectorAll('th,td');\n return [].slice\n .call(cells)\n .map(function (cell) {\n return cell.textContent;\n })\n .join(',');\n })\n .join('\\n');\n };\n \n download = function (text, fileName) {\n const link = document.createElement('a');\n link.setAttribute('href', `data:text/csv;charset=utf-8,${encodeURIComponent(text)}`);\n link.setAttribute('download', fileName);\n\n link.style.display = 'none';\n document.body.appendChild(link);\n\n link.click();\n\n document.body.removeChild(link);\n };\n\n generateTableHead(table, data) {\n let thead = table.createTHead();\n let row = thead.insertRow();\n for (let key in data) {\n let th = document.createElement(\"th\");\n let text = document.createTextNode(key);\n th.appendChild(text);\n row.appendChild(th);\n }\n }\n\n generateTable(table, data) {\n for (let element of data) {\n let row = table.insertRow();\n for (let key in element) {\n let cell = row.insertCell();\n let text = document.createTextNode(element[key]);\n cell.appendChild(text);\n }\n }\n }\n\n onGridReady(param: any): void {\n this.gridApi = param.api;\n this.columnApi = param.columnApi;\n this.rowCount = this.gridApi.getDisplayedRowCount();\n this.pageNo = 1;\n\n this.setDefaultSortOrder();\n this.gridApiEmitter.emit(this.gridApi);\n }\n\n onFirstDataRendered(params: any): void {\n this.gridObject = params;\n this.dataLoaded = true;\n }\n\n setDefaultSortOrder() {\n this.columnApi.applyColumnState({\n state: [\n {\n colId: 'status',\n sort: 'asc',\n sortIndex: 0,\n },\n {\n colId: 'tpaPrice',\n sort: 'desc',\n sortIndex: 1,\n },\n {\n colId: 'fillDate',\n sort: 'asc',\n sortIndex: 2,\n },\n {\n colId: 'clPrescriptionFillNumber',\n sort: 'asc',\n sortIndex: 3,\n },\n ],\n defaultState: { sort: null },\n });\n }\n\n async refreshGridAndUpdateStatus(status: ClaimStatus) {\n let currentRowId = this.currentRow.node.id;\n let rowNode = this.gridApi.getRowNode(currentRowId);\n rowNode.setDataValue('status', status);\n this.gridApi.refreshClientSideRowModel();\n }\n\n removeRow(subsequentFillLogicOptOut) {\n const selectedData = this.gridApi.getSelectedRows();\n if (selectedData.length === 1) {\n const rxNumber = selectedData[0].rxNumber;\n const fillNumber = parseInt(selectedData[0].clPrescriptionFillNumber);\n this.gridApi.forEachNode((rowNode, index) => {\n \n if (rowNode.data.status === ClaimStatus.EXPIRED) {\n rowNode.setSelected(false);\n return;\n }\n\n if (rowNode.data.rxNumber === rxNumber) {\n if (parseInt(rowNode.data.clPrescriptionFillNumber) === fillNumber) {\n rowNode.setSelected(true);\n }\n if (parseInt(rowNode.data.clPrescriptionFillNumber) > fillNumber && !subsequentFillLogicOptOut) {\n rowNode.setSelected(true);\n }\n }\n });\n }\n this.gridApi.applyTransaction({ remove: this.gridApi.getSelectedRows() });\n }\n\n onRejectClaim(subsequentFillLogicOptOut: boolean = false) {\n this.changeClaimStatus(ClaimStatus.REJECTED, subsequentFillLogicOptOut);\n }\n\n changeClaimStatus(status: ClaimStatus, subsequentFillLogicOptOut: boolean = false) {\n if (status != ClaimStatus.REJECTED && status != ClaimStatus.APPROVED && status != ClaimStatus.EXPIRED) {\n let currentRowId = this.currentRow.node.id;\n let rowNode = this.gridApi.getRowNode(currentRowId);\n rowNode.setDataValue('status', status);\n } else {\n const selectedData = this.gridApi.getSelectedRows();\n const fillNumber = parseInt(selectedData[0].clPrescriptionFillNumber);\n\n if (selectedData.length === 1) {\n this.gridApi.forEachNode((rowNode, index) => {\n if (rowNode.data.rxNumber === selectedData[0].rxNumber) {\n if (rowNode.data.status !== ClaimStatus.EXPIRED) {\n if (parseInt(rowNode.data.clPrescriptionFillNumber) === fillNumber) {\n rowNode.setDataValue('status', status);\n }\n if (parseInt(rowNode.data.clPrescriptionFillNumber) > fillNumber && !subsequentFillLogicOptOut) {\n rowNode.setDataValue('status', status);\n }\n }\n } \n });\n }\n }\n this.gridApi.refreshClientSideRowModel();\n }\n\n public async onRowClicked(event: any): Promise {\n this.selectedPatientInfo = {\n claimPk: event.data.claimPk,\n claimId: event.data.claimId,\n acoId: event.data.acoId,\n tier2_id: event.data.tier2_id,\n tier3_id: event.data.tier3_id,\n tier4_grpId: event.data.tier4_grpId,\n patientName: event.data.patientName,\n patientDob: event.data.dob,\n patientSex: event.data.patientSex,\n mbi: event.data.mbi,\n patientPrimaryCare: '',\n prescriptionName: event.data.prescriptionName,\n prescriberName: event.data.prescriberName,\n prescriberCredentials: event.data.prescriberCredentials,\n prescriberSpecialty: event.data.prescriberSpecialty,\n prescriberPhone: event.data.prescriberPhone,\n location: event.data.location,\n firstFilled: event.data.firstFilled,\n claim_Status: event.data.status,\n primaryProviderName: event.data.primaryProviderName,\n primaryProviderCredentials: event.data.primaryProviderCredentials,\n pharmacyName: event.data.pharmacyName,\n pharmacyNameOther: event.data.pharmacyNameOther,\n chPatId: event.data.chPatId,\n ccn: event.data.ccn,\n userId: this.currentUser.dnn_id,\n ndc: event.data.ndc,\n clPrescriptionFillNumber: event.data.clPrescriptionFillNumber,\n rxNumber: event.data.rxNumber,\n npi: event.data.npi,\n servicePharmacyNpi: event.data.servicePharmacyNpi,\n gender: event.data.gender,\n prescriberFax: event.data.prescriberFax,\n pharmacyAddress: event.data.pharmacyAddress,\n prescriptionRefID: event.data.prescriptionRefID,\n enrollmentStatus: event.data.enrollmentStatus,\n claimType: event.data.claimType,\n drugManufacturer: event.data.drugManufacturer,\n };\n\n this.ceLocations = await this.PrescriptionService.getCELocations(\n this.selectedPatientInfo.tier2_id\n );\n\n this.PrescriptionService.setSelectedClaimInfo({\n selectedPatientInfo: this.selectedPatientInfo,\n ceLocations: this.ceLocations,\n claimId: event.data.claimId,\n claimType: event.data.claimType,\n });\n\n this.currentRow = event;\n }\n\n public cancelPrescriptionsLoadingProcess(): void {\n this.cancelLoadingBool = true;\n this.loadingStatus = false;\n this.resetFilter = true;\n let that = this;\n setTimeout(function () {\n that.resetFilter = false;\n }, 1000);\n }\n\n async getPrescriptions(): Promise {\n const { selectedItem } = this.tier;\n let prescriptions;\n try {\n prescriptions = this.PrescriptionService.getPrescriptions(\n selectedItem.tier1_ID,\n selectedItem.tier2_ID,\n selectedItem.tier3_ID,\n selectedItem.tier4_ID\n );\n } catch (e) {\n this.toastr.error(`${e.status}: ${e.statusText}`, 'Error');\n }\n\n this.writeAccessAuditMessage(\n CarePrescriptionsComponent.ACCESS_AUDIT_MESSAGE\n );\n\n return prescriptions;\n }\n\n writeAccessAuditMessage(action: string) {\n const dateRange = this.getAuditMessageDateRange();\n setTimeout(async () => {\n this.PrescriptionService.writeAuditMessage({\n entityid: parseInt(this.currentUser.dnn_id),\n moduleid: 2, // care\n componentid: 36,\n actionid: 6, // phi access\n tablename: 'Coach340BClaims',\n auditdesc: `User ID ${this.currentUser.dnn_id} ${action} for date range ${dateRange}`,\n applicationID: 2,\n });\n }, 0);\n }\n\n getAuditMessageDateRange() {\n return `${this.dateRangeLow?.toLocaleDateString() ?? 'All'} - ${\n this.dateRangeHigh?.toLocaleDateString() ?? 'All'\n }`;\n }\n}\n","\nimport { formatDate } from '@angular/common';\nimport moment from 'moment';\nimport {\n formatDate as fmtDate,\n mapOverallOptionsToStrings,\n statusSortPriorityMap,\n removeLeadingZeros\n} from '../../care-prescriptions/shared-lib';\nimport { compareString } from '@shared/components/grid/grid-functions';\nimport { ColDef } from 'ag-grid-community';\n\nexport function compareStringPlain(\n a: string,\n b: string,\n nodeA?,\n nodeB?,\n isInverted?\n): 0 | 1 | -1 {\n a == null ? (a = '') : (a = a.trim());\n b == null ? (b = '') : (b = b.trim());\n if (a == b) {\n return 0;\n }\n if (a == '') return isInverted ? -1 : 1;\n if (b == '') return isInverted ? 1 : -1;\n const c = a.localeCompare(b, undefined, {\n sensitivity: 'base',\n numeric: false,\n });\n return c == 0 ? 0 : c < 0 ? -1 : 1;\n}\n\nexport function compareDate(a: Date, b: Date): 0 | 1 | -1 {\n if (a.getTime() == b.getTime()) {\n return 0;\n }\n return a.getTime() < b.getTime() ? 1 : -1;\n}\n\nexport const COLUMN_DEFS: Array = [\n {\n headerName: '',\n field: 'isProcessed',\n minWidth: 30,\n maxWidth: 30,\n resizable: false,\n checkboxSelection: true,\n suppressSizeToFit: true,\n headerCheckboxSelection: true,\n },\n {\n headerName: 'RxNumber',\n field: 'rxNumber',\n minWidth: 100,\n resizable: true,\n sortable: true,\n cellRenderer: (data: any): string => {\n return data.data?.rxNumber;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'NAME',\n field: 'patientName',\n maxWidth: 200,\n minWidth: 200,\n comparator: compareString,\n sortable: true,\n resizable: true,\n filter: 'agSetColumnFilter',\n cellRenderer: (data: any): string => {\n return data.data?.patientName;\n },\n },\n {\n headerName: 'PatientDOB',\n field: 'dob',\n maxWidth: 130,\n minWidth: 110,\n suppressAutoSize: true,\n sortable: true,\n comparator: compareString,\n cellRenderer: (data: any): string => {\n return moment(data.data?.dob).format('L');\n },\n valueGetter: params => {\n return fmtDate(params.data.dob);\n },\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'Dispensed',\n field: 'dispensedFillDate',\n maxWidth: 120,\n minWidth: 110,\n suppressAutoSize: false,\n cellRenderer: (data): string => {\n return data.data?.firstFilled\n ? formatDate(new Date(data.data?.fillDate), 'MM/dd/yy', 'en_US').trim()\n : '';\n },\n valueGetter: (data: any): string => {\n return fmtDate(data.data?.fillDate);\n },\n getQuickFilterText: params => {\n return params.value;\n },\n sortable: true,\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'FILL DATE HIDDEN',\n field: 'fillDate',\n maxWidth: 130,\n suppressAutoSize: true,\n comparator: compareString,\n filter: 'agSetColumnFilter',\n hide: true,\n cellRenderer: (data): string => {\n return data.data?.firstFilled\n ? formatDate(new Date(data.data?.fillDate), 'MM/dd/yy', 'en_US').trim()\n : '';\n },\n valueGetter: (data: any) => {\n let result = formatDate(new Date(data.data?.fillDate), 'yyyy/MM/dd', 'en_US').trim();\n return result;\n },\n getQuickFilterText: params => {\n return params.value;\n },\n sortable: true,\n suppressSizeToFit: true,\n },\n {\n headerName: 'FillNumber',\n field: 'clPrescriptionFillNumber',\n maxWidth: 100,\n minWidth: 60,\n resizable: true,\n sortable: true,\n cellRenderer: (data: any): string => {\n return removeLeadingZeros(data.data?.clPrescriptionFillNumber);\n },\n valueGetter: (data: any): string => {\n return removeLeadingZeros(data.data?.clPrescriptionFillNumber);\n },\n filter: 'agSetColumnFilter',\n comparator: (valueA, valueB, nodeA, nodeB, isDescending) => {\n valueA = new Number(valueA);\n valueB = new Number(valueB);\n if (valueA == valueB) return 0;\n return (valueA > valueB) ? 1 : -1;\n }\n },\n {\n headerName: 'NDCDesc',\n field: 'medicationDescription',\n resizable: true,\n sortable: true,\n filter: 'agSetColumnFilter',\n comparator: compareStringPlain,\n cellRenderer: (data): string => {\n return data.data?.medicationDescription;\n },\n },\n {\n headerName: 'NDC',\n field: 'ndc',\n maxWidth: 120,\n suppressAutoSize: true,\n sortable: true,\n cellRenderer: (data): string => {\n return data.data?.ndc;\n },\n suppressSizeToFit: true,\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'PRESCRIBER',\n field: 'prescriberName',\n maxWidth: 220,\n resizable: true,\n sortable: true,\n comparator: compareString,\n cellRenderer: (data): string => {\n return data.data?.prescriberName;\n },\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'PRESCRIBER PHONE',\n field: 'prescriberPhone',\n maxWidth: 160,\n suppressAutoSize: true,\n hide: true,\n comparator: compareStringPlain,\n cellRenderer: (data): string => {\n return data.data?.prescriberPhone;\n },\n },\n {\n headerName: 'LOCATION',\n field: 'location',\n resizable: true,\n hide: true,\n comparator: compareStringPlain,\n cellRenderer: (data): string => {\n return data.data?.location;\n },\n },\n {\n headerName: 'PatientZip',\n field: 'patientZip',\n resizable: true,\n hide: true,\n comparator: compareStringPlain,\n cellRenderer: (data): string => {\n return data.data?.patientZip;\n },\n },\n {\n headerName: 'PatientLast',\n field: 'patientLastName',\n minWidth: 200,\n comparator: compareString,\n resizable: true,\n hide: true,\n valueGetter: (data: any): string => {\n const fullName = data.data.patientName;\n let splitName = fullName.split(' ').filter(x => x !== '');\n return splitName[splitName.length - 1];\n },\n },\n {\n headerName: 'PatientFirst',\n field: 'patientFirstName',\n minWidth: 200,\n comparator: compareString,\n resizable: true,\n hide: true,\n valueGetter: (data: any): string => {\n const fullName = data.data.patientName;\n let splitName = fullName.split(' ').filter(x => x !== '');\n return splitName[0];\n },\n },\n {\n headerName: 'Quantity',\n field: 'prescriptionQuantity',\n minWidth: 200,\n resizable: true,\n hide: true,\n cellRenderer: (data: any): string => {\n return data.data?.prescriptionQuantity;\n },\n },\n {\n headerName: 'DaysSupply',\n field: 'daysSupply',\n minWidth: 200,\n resizable: true,\n hide: true,\n cellRenderer: (data: any): string => {\n return data.data?.daysSupply;\n },\n },\n {\n headerName: 'DEA',\n field: 'prescriberDEA',\n minWidth: 200,\n resizable: true,\n hide: true,\n cellRenderer: (data: any): string => {\n return data.data?.prescriberDEA;\n },\n },\n {\n headerName: 'NPI',\n field: 'prescriberNPI',\n minWidth: 200,\n resizable: true,\n hide: true,\n cellRenderer: (data: any): string => {\n return data.data?.prescriberNPI;\n },\n },\n {\n headerName: 'FIRST FILLED HIDDEN',\n field: 'firstFilledHidden',\n maxWidth: 120,\n suppressAutoSize: true,\n hide: true,\n valueGetter: (params) => {\n return fmtDate(params.data.firstFilled);\n },\n },\n {\n headerName: 'PHARMACY NAME',\n field: 'pharmacyNamesHidden',\n resizable: true,\n sortable: true,\n comparator: compareStringPlain,\n cellRenderer: (data): string => {\n return data.data.pharmacyName;\n },\n valueGetter: (params) => {\n return params.data.pharmacyName;\n },\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'PHARMACY NAME (OTHER)',\n field: 'pharmacyNamesOtherHidden',\n resizable: true,\n sortable: true,\n comparator: compareStringPlain,\n cellRenderer: (data): string => {\n let result = data.data?.pharmacyNameOther ? data.data?.pharmacyNameOther : data.data?.pharmacyName;\n return result;\n },\n valueGetter: (params) => {\n let result = params.data?.pharmacyNameOther ? params.data?.pharmacyNameOther : params.data?.pharmacyName;\n return result;\n },\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'PHARMACY ADDRESS',\n field: 'pharmacyAddress',\n resizable: true,\n sortable: true,\n comparator: compareStringPlain,\n cellRenderer: (data): string => {\n return data.data.pharmacy_Address;\n },\n valueGetter: (params) => {\n return params.data.pharmacy_Address;\n },\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'STATUS',\n field: 'status',\n maxWidth: 140,\n suppressAutoSize: true,\n sortable: true,\n resizable: true,\n hide: true,\n getQuickFilterText: (params) => {\n return params.value;\n },\n cellRenderer: (data) => {\n return mapOverallOptionsToStrings(data.data?.status ?? -1);\n },\n comparator: (s1, s2) => {\n let sx1 = statusSortPriorityMap.get(s1);\n let sx2 = statusSortPriorityMap.get(s2);\n return sx1 - sx2;\n },\n },\n {\n headerName: 'Revenue',\n field: 'revenue',\n resizable: true,\n comparator: compareStringPlain,\n hide: true,\n cellRenderer: (data): string => {\n return '';\n },\n valueGetter: (params) => {\n return '';\n },\n },\n {\n headerName: 'BIN',\n field: 'bin',\n resizable: true,\n comparator: compareStringPlain,\n hide: true,\n cellRenderer: (data): string => {\n return '';\n },\n valueGetter: (params) => {\n return '';\n },\n },\n {\n headerName: 'PCN',\n field: 'pcn',\n resizable: true,\n comparator: compareStringPlain,\n hide: true,\n cellRenderer: (data): string => {\n return '';\n },\n valueGetter: (params) => {\n return '';\n },\n },\n {\n headerName: 'GroupNumber',\n field: 'groupNumber',\n resizable: true,\n comparator: compareStringPlain,\n hide: true,\n cellRenderer: (data): string => {\n return '';\n },\n valueGetter: (params) => {\n return '';\n },\n },\n {\n headerName: 'DateWritten',\n field: 'dateWritten',\n resizable: true,\n comparator: compareStringPlain,\n hide: true,\n cellRenderer: (data): string => {\n return '';\n },\n valueGetter: (params) => {\n return '';\n },\n },\n {\n headerName: 'PHARMACY NPI',\n field: 'npi',\n minWidth: 120,\n resizable: true,\n sortable: true,\n valueGetter: (data: any): string => {\n return data.data?.pharmacyNpi;\n },\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'MCOCardholderID',\n field: 'mcoCardholderId',\n resizable: true,\n comparator: compareStringPlain,\n hide: true,\n cellRenderer: (data): string => {\n return '';\n },\n valueGetter: (params) => {\n return '';\n },\n },\n {\n headerName: 'Price',\n field: 'awpPrice',\n minWidth: 100,\n resizable: true,\n sortable: true,\n cellRenderer: (data): string => {\n const price = data.data?.claimType === 'CMS'\n ? `$${data.data?.awpPrice.toFixed(2)}`\n : `$${data.data?.tpaPrice.toFixed(2)}`;\n return price;\n },\n valueGetter: data => {\n const price = data.data?.claimType === 'CMS'\n ? +data.data?.awpPrice.toFixed(2)\n : +data.data?.tpaPrice.toFixed(2);\n return price;\n },\n filter: 'agSetColumnFilter',\n },\n\n {\n headerName: 'Claim Source',\n field: 'tpaName',\n minWidth: 120,\n suppressAutoSize: true,\n hide: false,\n filter: 'agSetColumnFilter',\n sortable: true,\n },\n\n {\n headerName: 'Claim Type',\n field: 'claimType',\n minWidth: 100,\n resizable: true,\n sortable: true,\n hide: true,\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'Drug Manufacturer',\n field: 'drugManufacturer',\n minWidth: 120,\n suppressAutoSize: true,\n hide: false,\n filter: 'agSetColumnFilter',\n sortable: true,\n },\n];\n","
\n
\n {{ groupOptions.headerLabel }}\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n\n\n
\n
\n
\n {{ groupOptions.headerLabel }}\n
\n 0\">\n \n All\n \n \n 0\">\n \n {{selected}}\n ,\n \n \n \n \n None\n \n \n \n
\n
\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n
\n\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, UntypedFormArray, UntypedFormControl } from '@angular/forms';\n\n@Component({\n selector: 'coach-filter-group',\n templateUrl: './filter-group.component.html',\n styleUrls: ['./filter-group.component.scss'],\n})\nexport class FilterGroupComponent implements OnInit {\n public static idInc: number = 0;\n\n @Input() groupOptions;\n @Input() UIUpdates340BFeatureFlag: boolean;\n @Input() idx: number;\n @Input() activeDropdownPointer: number | 'month' | null;\n @Input() isDateSelected: boolean = false;\n @Output() optionChecked = new EventEmitter();\n @Output() radioChecked = new EventEmitter();\n @Output() activeDropdownPointerSelected: EventEmitter = new EventEmitter();\n\n allIsChecked: boolean = false;\n uniqueAllCheckboxId: string = `All-${FilterGroupComponent.idInc++}`;\n useRadioButtons: boolean = false;\n\n form: UntypedFormGroup;\n options: Array;\n\n constructor(private fb: UntypedFormBuilder) {\n this.form = this.fb.group({\n isArray: this.fb.array([]),\n });\n }\n\n ngOnInit(): void {\n this.useRadioButtons = this.groupOptions.useRadioButtons ?? false;\n\n this.options = this.groupOptions.optionLabels.map((option) => {\n let isSelected = this.groupOptions.checkedByDefault.includes(option);\n return { name: option, value: option, isSelected: isSelected };\n });\n\n if (!this.useRadioButtons) {\n this.initializeCheckboxes();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.isDateSelected) {\n let radioButtons: any = document.getElementsByName('itemSelect');\n for (let i = 0; i < radioButtons.length; i++) {\n if (radioButtons[i].checked) {\n radioButtons[i].checked = false;\n }\n }\n }\n }\n\n getUniqueAllCheckboxId() {\n return this.uniqueAllCheckboxId;\n }\n\n initializeCheckboxes() {\n if (this.groupOptions.checkedByDefault.includes('All')) {\n this.allIsChecked = true;\n this.setCheckedTo(true);\n } else {\n this.options.forEach((option) => {\n this.onCbChange({\n target: {\n checked: option.isSelected,\n value: option.value,\n },\n }, option);\n });\n }\n }\n\n setCheckedTo(state) {\n this.options.forEach((option) => {\n option.isSelected = state;\n this.onCbChange({\n target: {\n checked: state,\n value: option.value,\n },\n }, option);\n });\n }\n\n onAllChecked(e) {\n const isArray: UntypedFormArray = this.form.get('isArray') as UntypedFormArray;\n if (e.srcElement.checked) {\n this.setCheckedTo(true);\n } else {\n this.setCheckedTo(false);\n isArray.controls.splice(0);\n }\n this.allIsChecked = e.srcElement.checked;\n this.onSubmit();\n }\n\n confirmClick(event) {\n if (!this.isDateSelected) {\n event.preventDefault();\n alert(\"Please select a month from the dropdown to filter on.\");\n }\n }\n\n onRadioChange(event, option) {\n this.radioChecked.emit({event, option});\n }\n\n onCbChange(e, option) {\n const isArray: UntypedFormArray = this.form.get('isArray') as UntypedFormArray;\n\n if (e.target.checked) {\n isArray.push(new UntypedFormControl(e.target.value));\n option.isSelected = true;\n } else {\n let i: number = 0;\n option.isSelected = false;\n isArray.controls.forEach((item: UntypedFormControl) => {\n if (item.value == e.target.value) {\n isArray.removeAt(i);\n return;\n }\n i++;\n });\n }\n\n this.onSubmit();\n }\n\n onSubmit() {\n this.optionChecked.emit({\n headerLabel: this.groupOptions.headerLabel,\n options: this.form.value,\n });\n }\n getSelectedOptions(): string[] {\n return this.options.filter(option => option.isSelected).map(option => option.name);\n }\n openAccordion(): void {\n this.activeDropdownPointer = this.activeDropdownPointer == this.idx ? null : this.idx;\n this.activeDropdownPointerSelected.emit(this.idx)\n }\n getChevronStatus(): string {\n return this.activeDropdownPointer == this.idx ? 'chevron-up' : 'chevron-down';\n }\n checkAllOptions(): void {\n document.getElementById(this.uniqueAllCheckboxId).click()\n }\n\n}\n","\n \n\n
\n
\n
\n
\n
\n {{customDateFilterLabel}}\n
\n {{ selectedDateLabel }}\n
\n
\n \n \n \n \n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
Filters
\n
\n
\n\n
\n Month\n \n \n\n
\n \n
\n
\n\n","import { Input, Output } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { Component, OnInit, HostBinding } from '@angular/core';\nimport moment from 'moment';\nimport { formatDate } from '../shared-lib';\n\nexport type FilterOpenState = 'is-open' | 'is-closed';\n@Component({\n selector: 'coach-care-prescriptions-filters',\n templateUrl: './care-prescriptions-filters.component.html',\n styleUrls: ['./_care-prescriptions-filters.scss']\n})\nexport class CarePrescriptionsFiltersComponent implements OnInit {\n public isPatientFiltersOpen: boolean = false;\n\n // The api object of the relevant ag-grid\n @Input() gridApi;\n @Input() UIUpdates340BFeatureFlag: boolean = false;\n @Input() customDateFilterLabel: string = 'Fill Date (Month/Year)';\n\n // Configure the filter by passing the following data:\n // [...] = { headerLabel, optionLabels, filterInstanceLabel }\n @Input() configData;\n \n @Output() onFilterChanged = new EventEmitter();\n @Output() onRadioClicked = new EventEmitter();\n \n dateFilterMonthCount: number = 12;\n isInitialDateSelected: boolean = false;\n\n selectedOptionValues = null;\n\n filterOptionMap = new Map([\n ['Pending', 'pendingDate'],\n ['Invoicing', 'invoicingDate'],\n ['Invoiced', 'invoicedDate'],\n ['Rejected', 'rejectedDate'],\n ['Rejected Needs Credit', 'rejectedNeedsCreditDate'],\n ['Credited', 'creditedDate'],\n ]);\n \n filterByDateAndStatus: boolean = false;\n currentRadioFilter: string = 'Invoicing';\n dateOptions: string[];\n selectedDateModel: string;\n selectedDateLabel: string = 'All';\n selectedDateStr: string = null;\n activeDropdownPointer: number | 'month' | null = null;\n @HostBinding('class')\n get pclass() {\n const sharedClasses = 'queue u-position--relative';\n return this.isPatientFiltersOpen ? `is-open ${sharedClasses}` : `is-closed ${sharedClasses}`;\n }\n\n lastSelectedRadioFilter = null;\n\n constructor() { }\n\n async ngOnInit() {\n this.dateOptions = this.createDateOptions(this.configData);\n this.selectedDateModel = this.dateOptions[0]\n this.isPatientFiltersOpen = this.UIUpdates340BFeatureFlag ? true : false;\n }\n\n private createDateOptions(config) {\n const monthHeaderConfig = this.configData.find(obj => obj.customMonthLabelPresent);\n this.customDateFilterLabel = monthHeaderConfig ? monthHeaderConfig.customMonthLabel : this.customDateFilterLabel;\n this.filterByDateAndStatus = monthHeaderConfig ? monthHeaderConfig.filterByDateAndStatus : false;\n\n const dates = this.generateDates();\n dates.unshift('All');\n return dates;\n }\n\n generateDates(): Array {\n const dates = [];\n\n var monthName = new Array(\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n );\n var d = new Date();\n d.setDate(1);\n // The use of hardcoded values for the maximum month and year is a temporary fix until we implement more thorough logic\n // for detecting the first month that claims were invoiced for a particular community.\n for (let i = 0; d.getMonth() !== 6 || d.getFullYear() !== 2021; i++) {\n dates.push(monthName[d.getMonth()] + ' ' + d.getFullYear());\n d.setMonth(d.getMonth() - 1);\n }\n\n return dates;\n }\n\n onDateSelected(e) {\n this.isInitialDateSelected = true;\n\n this.selectedDateStr = e.target.value.includes('All') ? 'All' : e.target.value;\n const dateStr = `1 ${e.target.value}`;\n if (dateStr.includes('All')) {\n if (this.filterByDateAndStatus) {\n this.filterByDateAndByStatus(\n `1 January 2020`,\n `31 December ${new Date().getFullYear()}`,\n true\n );\n } else {\n this.filterByDate(\n `1 January 2020`,\n `31 December ${new Date().getFullYear()}`\n );\n }\n this.selectedDateLabel = 'All'\n } else {\n if (this.filterByDateAndStatus) {\n this.filterByDateAndByStatus(dateStr);\n } else {\n this.filterByDate(dateStr);\n }\n this.selectedDateLabel = moment(dateStr).format('MMMM yyyy') // THIS LINE MAY NEED TO MOVE UP INTO THE ELSE ABOVE IT\n }\n this.onFilterChanged.emit(true);\n }\n\n clearRadioDateFilters(statusOption) {\n const labels = statusOption.optionLabels;\n for (let label of labels) {\n const statusFilter = this.gridApi?.getFilterInstance(\n this.filterOptionMap.get(label)\n );\n statusFilter?.setModel(null);\n }\n this.gridApi?.onFilterChanged();\n }\n\n filterByDateAndByStatus(dateStr, endDateStr = null, doClear = false) {\n if (doClear) {\n this.isInitialDateSelected = false;\n this.clearRadioDateFilters(this.configData[0]);\n return;\n }\n \n const statusConfig = this.configData.find(c => c.headerLabel === 'Status');\n const msPerDay = 86400000;\n\n const date = new Date(dateStr);\n date.setHours(0, 0, 0, 0);\n let endDate = !endDateStr ? new Date(dateStr) : new Date(endDateStr);\n endDate.setHours(0, 0, 0, 0);\n\n if (!endDateStr) {\n endDate.setMonth(date.getMonth() + 1);\n }\n\n const ustart = date.getTime();\n const uend = endDate.getTime();\n\n const dates = [];\n\n for (let unix = ustart; unix <= uend; unix += msPerDay) {\n dates.push(new Date(unix));\n }\n\n if (\n dates[dates.length - 1].getMonth() !== dates[dates.length - 2].getMonth()\n ) {\n dates.pop();\n }\n\n const dateStrings = dates.map((date) => {\n let year = date.getFullYear();\n let month = date.getMonth() + 1;\n let day = date.getDate();\n let result = `${year}/${month < 10 ? `0${month}` : month}/${day < 10 ? `0${day}` : day}`;\n return result;\n });\n\n if (this.lastSelectedRadioFilter) {\n let statusFilter = this.gridApi?.getFilterInstance(\n this.filterOptionMap.get(this.lastSelectedRadioFilter)\n );\n\n statusFilter?.setModel(null);\n this.lastSelectedRadioFilter = null;\n }\n \n const statusFilter = this.gridApi?.getFilterInstance(\n this.filterOptionMap.get(this.currentRadioFilter)\n );\n\n statusFilter?.setModel({\n type: 'set',\n values: dateStrings,\n });\n \n this.lastSelectedRadioFilter = this.currentRadioFilter;\n this.gridApi?.onFilterChanged();\n }\n\n filterByDate(dateStr, endDateStr = null) {\n const dateHeaderLabel = 'fillDate';\n const msPerDay = 86400000;\n\n const date = new Date(dateStr);\n date.setHours(0, 0, 0, 0);\n let endDate = !endDateStr ? new Date(dateStr) : new Date(endDateStr);\n endDate.setHours(0, 0, 0, 0);\n\n if (!endDateStr) {\n endDate.setMonth(date.getMonth() + 1);\n }\n\n const ustart = date.getTime();\n const uend = endDate.getTime();\n\n const dates = [];\n\n for (let unix = ustart; unix <= uend; unix += msPerDay) {\n dates.push(new Date(unix));\n }\n\n if (\n dates[dates.length - 1].getMonth() !== dates[dates.length - 2].getMonth()\n ) {\n dates.pop();\n }\n\n const dateStrings = dates.map((date) => {\n let year = date.getFullYear();\n let month = date.getMonth() + 1;\n let day = date.getDate();\n let result = `${year}/${month < 10 ? `0${month}` : month}/${day < 10 ? `0${day}` : day}`;\n return result;\n });\n\n const statusFilterInstance = this.gridApi?.getFilterInstance(\n dateHeaderLabel\n );\n\n statusFilterInstance?.setModel({\n type: 'set',\n values: dateStrings,\n });\n\n this.gridApi?.onFilterChanged();\n }\n\n filterDoneTimeout = null;\n\n onRadioChecked(event) {\n this.currentRadioFilter = event.option.name;\n\n let e = {target: {value: this.selectedDateStr ?? 'Any'}}\n this.onDateSelected(e);\n }\n \n onOptionChecked(event) {\n let optionValues = event.options.isArray;\n\n let config = this.configData.find(\n (config) => config.headerLabel === event.headerLabel\n );\n if (!config) {\n return;\n }\n\n if (config.dataMapper) {\n optionValues = optionValues.map((option) => config.dataMapper(option));\n }\n\n if (this.filterByDateAndStatus && config.headerLabel === 'Status') {\n this.selectedOptionValues = optionValues;\n } else {\n this.selectedOptionValues = null;\n }\n \n const statusFilterInstance = this.gridApi?.getFilterInstance(\n config.filterInstanceLabel\n );\n statusFilterInstance?.setModel({\n type: 'set',\n values: optionValues,\n });\n\n if (this.filterDoneTimeout) {\n clearTimeout(this.filterDoneTimeout);\n this.filterDoneTimeout = null;\n }\n\n this.filterDoneTimeout = setTimeout(() => {\n this.gridApi?.onFilterChanged();\n this.onFilterChanged.emit(true);\n this.filterDoneTimeout = null;\n }, 25);\n\n }\n\n public togglePatientFilters(): void {\n this.isPatientFiltersOpen = !this.isPatientFiltersOpen;\n }\n\n getChevronStatus(dropdownPointer?: number | 'month'): string {\n if (!dropdownPointer) {\n dropdownPointer = 'month'\n }\n return this.activeDropdownPointer == dropdownPointer ? 'chevron-up' : 'chevron-down';\n }\n openAccordion(dropdownPointer: number | 'month'): void {\n this.activeDropdownPointer = this.activeDropdownPointer == dropdownPointer ? null : dropdownPointer;\n }\n checkAllOptions(): void {\n this.onDateSelected({ target: { value: 'All' } })\n this.selectedDateModel = this.dateOptions[0]\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ICurrentRoute } from '@shared/models/activated-route';\n\nexport interface TabSwitchState {\n isSummaryTabSelected: boolean;\n isQuickFillTabSelected: boolean;\n isCareNoteSelected: boolean;\n}\n\n@Component({\n selector: 'coach-tab-switch',\n templateUrl: './tab-switch.component.html',\n styleUrls: ['./tab-switch.component.scss'],\n})\nexport class TabSwitchComponent implements OnInit {\n public isTabDropdownOpen = true;\n public currentRoute$: BehaviorSubject;\n public activeView: ICurrentRoute;\n public isSidebarOpen: boolean = true;\n\n @Input() isSummaryTabSelected: boolean;\n @Input() isQuickFillTabSelected: boolean;\n @Input() isCareNoteSelected: boolean;\n\n @Output() onTabClicked = new EventEmitter();\n\n constructor() {}\n\n updateTabs(): void {\n }\n\n ngOnInit(): void {\n }\n\n onSummaryTabSelected() {\n this.isSummaryTabSelected = true;\n this.isQuickFillTabSelected = false;\n this.isCareNoteSelected = false;\n this.emitEvent();\n }\n\n onQuickFillTabSelected() {\n this.isSummaryTabSelected = false;\n this.isQuickFillTabSelected = true;\n this.isCareNoteSelected = false;\n this.emitEvent();\n }\n\n onCareNoteSelected() {\n this.isSummaryTabSelected = false;\n this.isQuickFillTabSelected = false;\n this.isCareNoteSelected = true;\n this.emitEvent();\n }\n\n emitEvent() {\n this.onTabClicked.emit({\n isSummaryTabSelected: this.isSummaryTabSelected,\n isQuickFillTabSelected: this.isQuickFillTabSelected,\n isCareNoteSelected: this.isCareNoteSelected\n });\n }\n}\n","
\n \n \n Summary\n \n \n Quick Fill\n \n \n Care Coordination Note\n \n \n
\n","\n \n \n \n
\n
\n \n
\n
\n {{ selectedPatientInfo.patientName }}\n
\n
\n DOB: {{ formatDate(selectedPatientInfo.patientDob) }} | Sex:\n {{ getPatientSex() }}
\n MBI: {{ getMbi() }}
\n ZIP: {{ selectedPatientInfo.patientZip }}
\n
\n
\n
\n\n
\n \n
\n\n
\n Approved\n by\n {{\n prescriptionDetails ? prescriptionDetails.claim_Status_Set_By : \"\"\n }},\n {{\n prescriptionDetails\n ? formatDate(prescriptionDetails.claim_Status_Set_On_Date)\n : \"\"\n }}\n
\n\n \n\n
\n
\n
\n \"Rx\n
\n
\n
\n {{ selectedPatientInfo.prescriptionName }}\n
\n RX # {{ selectedPatientInfo.rxNumber }}
\n NDC {{ selectedPatientInfo.ndc }}
\n\n
\n QTY\n {{\n selectedPatientInfo.prescriptionQuantity\n ? (selectedPatientInfo.prescriptionQuantity + \" \").padStart(\n 4,\n \"0\"\n )\n : \"\"\n }}\n DAYS SUPPLY {{ selectedPatientInfo.daysSupply }} \n
\n\n
\n {{\n getFillInfo(formatDate(selectedPatientInfo.firstFilled), stripLeadingZeros(selectedPatientInfo.clPrescriptionFillNumber))\n }}\n
\n
\n\n
\n

\n PHARMACY
\n \n {{ selectedPatientInfo.orgName }}
\n
\n \n NPI: {{selectedPatientInfo.pharmacyNpi}}
\n
\n \n {{ selectedPatientInfo.pharmacyOtherAddress }}
\n {{ formatPhone(selectedPatientInfo.pharmacyOtherPhone) }}
\n
\n

\n\n PRESCRIBER
\n \n {{ selectedPatientInfo.prescriberName }} -\n {{ selectedPatientInfo.prescriberSpecialty }}
\n
\n \n NPI: {{ selectedPatientInfo.npi\n }}
\n {{ selectedPatientInfo.location }}
\n {{ formatPhone(selectedPatientInfo.prescriberPhone) }}

\n
\n\n RELATED VISIT BY COVERED ENTITY
\n \n {{ prescriptionDetails ? prescriptionDetails.cE_Provider : \"\" }}
\n
\n \n {{ prescriptionDetails ? prescriptionDetails.cE_Location : \"\" }}
\n Visit Date:\n {{\n prescriptionDetails\n ? formatDate(prescriptionDetails.cE_Related_Referral_Date)\n : \"\"\n }}
\n
\n
\n
\n\n
\n \n Use these buttons to copy the data to paste into your TPA\n

\n\n
\n PATIENT
\n \n \n \n \n \n \n \n \n \n
\n \n
\n First Name
{{\n getPatientFirstName()\n }}\n
\n \n
\n \n
\n Last Name
{{\n getPatientLastName()\n }}\n
\n \n
\n \n
\n DOB
{{\n formatDate(selectedPatientInfo.patientDob)\n }}\n
\n \n
\n \n
\n Zip
{{\n selectedPatientInfo.patientZip\n }}\n
\n \n
\n
\n\n
\n PRESCRIPTION
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n Rx #
{{\n selectedPatientInfo.rxNumber\n }}\n
\n \n
\n \n
\n NDC
{{\n selectedPatientInfo.ndc\n }}\n
\n \n
\n \n
\n Pharmacy NPI
{{\n selectedPatientInfo.pharmacyNpi\n }}\n
\n \n
\n \n
\n Provider NPI
{{\n selectedPatientInfo.npi\n ? selectedPatientInfo.npi\n : \"None\"\n }}\n
\n \n
\n \n
\n Qty
{{\n selectedPatientInfo.prescriptionQuantity\n }}\n
\n \n
\n \n
\n Days Supply
{{\n selectedPatientInfo.daysSupply\n }}\n
\n \n
\n \n
\n Fill #
{{\n stripLeadingZeros(selectedPatientInfo.clPrescriptionFillNumber)\n }}\n
\n \n
\n
\n\n
\n RELATED VISIT BY COVERED ENTITY
\n \n \n \n \n
\n \n
\n CE Visit
{{\n formatDate(prescriptionDetails.cE_Visit_Date)\n }}\n
\n \n
\n
\n
\n
\n\n
\n CARE COORDINATION NOTE
\n Patient Name: {{ patientName }}
\n DOB: {{ patientDobText }}
\n MBI: {{ patientMbi | mask: 6 }}
\n By: {{ prescriptionDetails.claim_Status_Set_By }}
\n Date: {{ formatDate(prescriptionDetails.claim_Status_Set_On_Date) }}

\n \n 340B External Prescription
\n {{ selectedPatientInfo.prescriptionName }}
\n by {{ selectedPatientInfo.prescriberName }}, {{selectedPatientInfo.prescriberSpecialty}}
\n First filled {{ formatDate(selectedPatientInfo.firstFilled) }}

\n\n Visit Note from {{ selectedPatientInfo.prescriberName }}
\n\n
\n

\n Visit Date: {{ formatDate(prescriptionDetails.visit_Note_Visit_Date)\n }}
\n Rx Diagnosis: {{ prescriptionDetails.visit_Note_Diagnosis }}\n

\n
\n\n
\n

\n Related Visit By Covered Entity:\n

\n \n Visit Date: {{ formatDate(prescriptionDetails.cE_Visit_Date) }}
\n Provider: {{ prescriptionDetails.cE_Provider }}
\n CE Location: {{ prescriptionDetails.cE_Location }}
\n
\n
\n
\n\n
\n

\n Related Referral By Covered Entity:\n

\n \n Referral Date:\n {{ formatDate(prescriptionDetails.cE_Related_Referral_Date) }}
\n
\n
\n
\n\n
\n

\n Follow-Up Plan:\n

\n
\n
\n
\n
\n\n
\n \n {{selectedPatientInfo.status === 1005 ? \"Mark As Pending\" : \"Mark As Processed\"}}\n \n \n Mark as Pending\n \n
\n
\n\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { IPrescriptionDetail } from '@shared/models/prescription';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\nimport { Subscription } from 'rxjs';\nimport { copyTextToClipboard } from '@shared/utilities';\nimport { TabSwitchState } from './tab-switch/tab-switch.component';\nimport { formatDate, basicNameSplit, removeLeadingZeros } from '@care/views/care-prescriptions/shared-lib';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\n\nimport pdfMake from \"pdfmake/build/pdfmake\"; \nimport pdfFonts from \"pdfmake/build/vfs_fonts\"; \nimport { CareFeatureConstants } from '@shared/models/module-constants';\npdfMake.vfs = pdfFonts.pdfMake.vfs;\n\n@Component({\n selector: 'coach-care-prescriptions-processing-sidebar',\n templateUrl: './care-prescriptions-processing-sidebar.component.html',\n styleUrls: ['./care-prescriptions-processing-sidebar.component.scss'],\n})\nexport class CarePrescriptionsProcessingSidebarComponent implements OnInit, OnDestroy {\n importFeatureFlag: string = CareFeatureConstants.FileImport340B;\n\n @Input() selectedPatientInfo: any = [];\n @Input() show: boolean;\n \n @Output() onProcessClaim = new EventEmitter();\n @Output() onUndoProcessClaim = new EventEmitter();\n\n claimId: number;\n\n currentUser: any;\n creatorName: string;\n creatorDate: Date;\n\n authSubscription: Subscription;\n\n isValidationPanelOpen: boolean = false;\n isClaimSelected: boolean = false;\n notes: string = '';\n toggleVisitNoteModal: boolean = false;\n toggleCareCoordinationNoteModal: boolean = false;\n currentRowId: number;\n\n prescriptionDetails: IPrescriptionDetail;\n prescriptionSubscription: Subscription;\n\n isSummaryTabSelected: boolean = true;\n isQuickFillTabSelected: boolean = false;\n isCareNoteSelected: boolean = false;\n\n patientName: string;\n patientDobText: string;\n patientMbi: string;\n\n constructor(\n private prescriptionService: PrescriptionService,\n private authService: AuthService,\n private mask: MaskPipe\n ) {}\n\n ngOnInit(): void {\n this.prescriptionSubscription = this.prescriptionService.processingClaimInfoUpdated.subscribe((claim:any) => {\n this.selectedPatientInfo = claim.selectedPatientInfo;\n this.currentRowId = claim.rowId;\n this.updatePrescriptionDetailsData(this.selectedPatientInfo.claimId);\n })\n this.authSubscription = this.authService.userInfo$.subscribe(\n (currentUser) => {\n this.currentUser = currentUser\n this.creatorName = this.currentUser.name || this.currentUser.email;\n this.creatorDate = new Date();\n }\n );\n }\n\n ngOnDestroy(): void {\n this.authSubscription.unsubscribe();\n }\n\n setTabStatus(e: TabSwitchState) {\n this.isSummaryTabSelected = e.isSummaryTabSelected;\n this.isQuickFillTabSelected = e.isQuickFillTabSelected;\n this.isCareNoteSelected = e.isCareNoteSelected;\n }\n\n updatePrescriptionDetailsData(claimId) {\n if (!this.isValidationPanelOpen) {\n this.toggleValidatePanel();\n }\n this.prescriptionService\n .getPrescriptionDetail(\n this.selectedPatientInfo.claimPk,\n this.selectedPatientInfo.acoId,\n this.selectedPatientInfo.tier2_id,\n this.selectedPatientInfo.tier3_id,\n this.selectedPatientInfo.tier4_grpId,\n claimId,\n this.selectedPatientInfo.userId,\n this.selectedPatientInfo\n )\n .then((data) => {\n this.prescriptionDetails = data;\n this.patientName = basicNameSplit(this.selectedPatientInfo.patientName).join(' ');\n this.patientDobText = this.formatDate(this.selectedPatientInfo.patientDob);\n this.patientMbi = this.selectedPatientInfo.mbi ? this.selectedPatientInfo.mbi : 'N/A';\n })\n .catch((err) => console.log(err));\n }\n\n getFillInfo(firstFilled: string, fillNumber: string): string {\n let requiredSpaces = firstFilled.split('/')[0].length > 1 ? 22 : 24;\n let filledStr = `Filled ${firstFilled}`.padEnd(requiredSpaces, '\\xa0');\n return `${filledStr} FILL # ${fillNumber}`;\n }\n \n processThisClaim() {\n this.onProcessClaim.emit(this.selectedPatientInfo.claimPk);\n this.toggleValidatePanel();\n }\n\n undoProcessThisClaim() {\n this.onUndoProcessClaim.emit(this.selectedPatientInfo.claimPk);\n this.toggleValidatePanel();\n }\n\n getPatientFirstName() {\n let nameMatches = this.getPatientName();\n return nameMatches[1];\n }\n\n getPatientLastName() {\n let names = this.selectedPatientInfo.patientName.split(' ');\n return names[names.length - 1];\n }\n\n getPatientName() {\n let regex = /(\\w+)\\s+(\\w+)/;\n return this.selectedPatientInfo.patientName.match(regex);\n }\n\n stripLeadingZeros(str) {\n if (str) {\n return str.replace(/0{2,}/, '');\n }\n return '';\n }\n\n copyData(text) {\n copyTextToClipboard(text);\n }\n\n public formatDate(dateStr) {\n return new Date(dateStr).toLocaleDateString();\n }\n\n public formatPhone(value) {\n if (!value) {\n return '';\n }\n\n let cleaned = ('' + value).replace(/\\D/g, '');\n let match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\n if (match) {\n return `(${match[1]}) ${match[2]}-${match[3]}`;\n }\n return '';\n }\n\n public getPatientSex() {\n return this.selectedPatientInfo.gender;\n }\n\n getMbi() {\n if (this.selectedPatientInfo && this.selectedPatientInfo.claimType !== 'TPA') {\n return this.mask.transform(this.selectedPatientInfo.mbi, 6)\n } else {\n return \"N/A\";\n }\n }\n\n // Right Panel Operation\n public toggleValidatePanel() {\n this.isValidationPanelOpen = !this.isValidationPanelOpen;\n }\n\n exportClaimFiles(): void {\n this.prescriptionService.downloadAttachedFiles(this.selectedPatientInfo.tier2_id, this.selectedPatientInfo.prescriptionRefId);\n this.generatePDF();\n }\n\n async generatePDF() {\n let username = await this.prescriptionService.getUserFullName(parseInt(this.selectedPatientInfo.userId));\n\n let docDefinition = { \n content: [\n {\n text: 'Care Coordination Note',\n fontSize: 14,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n },\n {\n text: `Patient Name: ${this.patientName}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: `DOB: ${this.patientDobText}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: `MBI: ${this.mask.transform(this.patientMbi, 6)}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: `By: ${this.prescriptionDetails.claim_Status_Set_By}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: `Date: ${formatDate(this.prescriptionDetails.claim_Status_Set_On_Date)}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: ' ',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: '340B External Prescription',\n fontSize: 14,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n },\n {\n text: this.selectedPatientInfo.prescriptionName,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: true\n },\n {\n text: `by ${this.selectedPatientInfo.prescriberName}${this.selectedPatientInfo.prescriberCredentials \n ? \", \" + this.selectedPatientInfo.prescriberCredentials : ''}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: `First filled ${formatDate(this.selectedPatientInfo.firstFilled)}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: ' ',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: 'Follow-Up Plan:',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n },\n {\n text: `${this.prescriptionDetails.follow_Up_Plan.replace(/
/g, '\\n')}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: ' ',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: `Visit Note from ${this.selectedPatientInfo.prescriberName}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n },\n {\n text: `Visit Date: ${formatDate(this.prescriptionDetails.visit_Note_Visit_Date)}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n },\n {\n text: `Rx Diagnosis: ${this.prescriptionDetails.visit_Note_Diagnosis}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n },\n {\n text: ' ',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n ]\n };\n\n const ceRelatedReferralDate = formatDate(this.prescriptionDetails.cE_Related_Referral_Date);\n const ceVisitDate = formatDate(this.prescriptionDetails.cE_Visit_Date);\n\n if (ceVisitDate !== '12/31/69'\n && ceVisitDate !== '01/01/70') {\n docDefinition.content.push({\n text: 'Related Visit By Covered Entity:',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n });\n docDefinition.content.push({\n text: `Visit Date: ${ceVisitDate}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n });\n docDefinition.content.push({\n text: `Provider: ${this.prescriptionDetails.cE_Provider}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n });\n docDefinition.content.push({\n text: `CE Location: ${this.prescriptionDetails.cE_Location}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n });\n docDefinition.content.push({\n text: ' ',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n })\n }\n if (ceRelatedReferralDate !== '12/31/69'\n && ceRelatedReferralDate !== '01/01/70') {\n docDefinition.content.push({\n text: 'Related Referral By Covered Entity:',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n });\n docDefinition.content.push({\n text: `Referral Date: ${ceRelatedReferralDate}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n });\n }\n \n pdfMake.createPdf(docDefinition).download();\n }\n}\n","\n\n\n\n\n
\n
\n
\n
\n
\n
340B Prescription Processing
\n
\n\n \n \n Mark as Processed\n \n \n \n \n \n \n \n\n
\n \n \n
\n
\n Cancel\n \n
\n
\n
\n
\n
\n \n \n
\n
\n\n","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\n\nimport { COLUMN_DEFS } from './care-prescription.columns';\nimport {\n IApprovedPrescription,\n IPrescription,\n IPrescriptionDetail,\n} from '@shared/models/prescription';\nimport { IPrescriptionFilterPreset } from '@shared/models/prescription-filters';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { takeUntil } from 'rxjs/operators';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { ToastrService } from 'ngx-toastr';\nimport { ClaimStatus, InvoiceStatus, InvoiceRejectionReason, B340StringConstants, formatDateFourDigitYear } from '../../care-prescriptions/shared-lib';\nimport { Subscription } from 'rxjs';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { FilterOption } from '@care/views/care-all-prescriptions/care-all-prescriptions.component'\nimport { Exception } from '@microsoft/applicationinsights-web';\nimport { GridApi, ColumnApi, ColDef } from 'ag-grid-community';\ninterface Tpa {\n tpaId: number;\n tpaName: string;\n}\n\n@Component({\n selector: 'coach-care-prescriptions-processing',\n templateUrl: './care-prescriptions-processing.component.html',\n host: {\n class: 'page-content coach-care-prescriptions',\n },\n})\nexport class CarePrescriptionsProcessingComponent\n extends KillSubscriptions\n implements OnInit, OnDestroy\n{\n public static AUDIT_ACCESS_MESSAGE = 'Accessed 340B Processing Queue';\n public static AUDIT_PRINT_MESSAGE = 'Printed 340B TPA Approved List';\n\n public isClaimSelected: boolean = false;\n\n public prescriptions: Array = [];\n public dataLoaded: boolean = false;\n public loadingStatus = true;\n public cancelLoadingBool = false;\n public resetFilter = false;\n public selectedPreset: IPrescriptionFilterPreset;\n public prescriptionDetail: IPrescriptionDetail;\n \n public gridApi: GridApi;\n public columnApi: ColumnApi;\n public selectedPatientInfo: any;\n readonly defaultColDef: ColDef = {\n resizable: true,\n headerCheckboxSelectionFilteredOnly: true,\n };\n readonly columnDefs = COLUMN_DEFS;\n\n public orgId: string = null;\n public tier: IHierarchyTier = null;\n public rowCount: number = 10;\n public pageNo: number = 1;\n\n public redrawRowInterval: any;\n\n dateRangeLower: Date;\n dateRangeHigher: Date;\n\n public gridObject: any = null;\n\n authSubscription: Subscription;\n currentUser: any;\n\n currentRow;\n\n filterOptions: FilterOption[];\n isPatientFiltersOpen: boolean = false;\n tpa: Tpa;\n\n public claimPanelStatus: number = 1;\n \n UIUpdates340BFeatureFlag: boolean;\n @Output() public gridApiEmitter: EventEmitter = new EventEmitter();\n @Output() public filterOptionsEmitter: EventEmitter = new EventEmitter();\n \n b340StringConstants: B340StringConstants = new B340StringConstants();\n selectedExportOption = this.b340StringConstants.EXPORT_MENU_TITLE;\n\n constructor(\n private _route: ActivatedRoute,\n private HierarchyTierService: HierarchyTierService,\n private PrescriptionService: PrescriptionService,\n private toastr: ToastrService,\n private router: Router,\n private authService: AuthService,\n protected featureFlagService: FeatureFlagService,\n ) {\n super();\n HierarchyTierService.currentTier$\n .pipe(takeUntil(this.killTrigger))\n .subscribe(async (tier) => {\n if (this.tier?.selectedTierId !== tier?.selectedTierId) {\n this.tier = tier;\n this.prescriptions = await this.getPrescriptions();\n this.initializeFilter();\n }\n });\n this.UIUpdates340BFeatureFlag = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.UIUpdates340B)\n }\n\n ngOnInit(): void {\n this.authSubscription = this.authService.userInfo$.subscribe(\n (currentUser) => (this.currentUser = currentUser)\n );\n }\n\n ngOnDestroy(): void {\n this.authSubscription.unsubscribe();\n clearInterval(this.redrawRowInterval);\n }\n\n onGridReady(param: any): void {\n this.gridApi = param.api;\n this.columnApi = param.columnApi;\n this.rowCount = this.gridApi.getDisplayedRowCount();\n this.pageNo = 1;\n this.gridApiEmitter.emit(this.gridApi)\n }\n\n autoSizeAll() {\n const allColumnIds = [];\n this.columnApi.getColumns().forEach(function (column) {\n allColumnIds.push(column.getColId());\n });\n this.columnApi.autoSizeColumns(allColumnIds);\n }\n\n onFirstDataRendered(params: any): void {\n this.gridObject = params;\n this.dataLoaded = true;\n }\n\n public async filterChange(event: any) {}\n\n public togglePatientFilters(): void {\n this.isPatientFiltersOpen = !this.isPatientFiltersOpen;\n }\n\n removeRow(id: number = -1) {\n let selectedData = this.gridApi.getSelectedRows();\n if (id !== -1) {\n selectedData = selectedData.filter(item => item.claimPk === id);\n }\n this.gridApi.applyTransaction({ remove: selectedData });\n }\n\n public async onRowClicked(event: any): Promise {\n this.selectedPatientInfo = {\n claimPk: event.data.claimPk,\n claimId: event.data.claimId,\n claimType: event.data.claimType,\n acoId: event.data.acoId,\n tier2_id: event.data.tier2_id,\n tier3_id: event.data.tier3_id,\n tier4_grpId: event.data.tier4_grpId,\n rxNumber: event.data.rxNumber,\n patientName: event.data.patientName,\n patientDob: event.data.dob,\n patientSex: event.data.sex,\n mbi: event.data.mbi,\n patientPrimaryCare: '',\n ndc: event.data.ndc,\n prescriptionName: event.data.prescriptionName,\n prescriberName: event.data.prescriberName,\n prescriberCredentials: event.data.prescriberCredentials,\n prescriberSpecialty: event.data.prescriberSpecialty,\n prescriberPhone: event.data.prescriberPhone,\n location: event.data.location,\n firstFilled: event.data.firstFilled,\n npi: event.data.npi,\n orgName: event.data.pharmacyNameOther\n ? event.data.pharmacyNameOther\n : event.data.pharmacyName,\n pharmacy_Address: event.data.pharmacy_Address,\n patientZip: event.data.patientZip,\n prescriptionQuantity: event.data.prescriptionQuantity,\n clPrescriptionFillNumber: event.data.clPrescriptionFillNumber,\n daysSupply: event.data.daysSupply,\n prescriberDEA: event.data.prescriberDEA,\n prescriberNPI: event.data.prescriberNPI,\n status: event.data.status,\n userId: this.currentUser.dnn_id,\n medicationDescription: event.medicationDescription,\n gender: event.data.gender,\n pharmacyNpi: event.data.pharmacyNpi,\n pharmacyOtherAddress: event.data.pharmacyOtherAddress,\n pharmacyOtherCity: event.data.pharmacyOtherCity,\n pharmacyOtherPhone: event.data.pharmacyOtherPhone,\n pharmacyOtherState: event.data.pharmacyOtherState,\n pharmacyOtherZip: event.data.pharmacyOtherZip,\n prescriptionRefId: event.data.prescriptionRefID,\n drugManufacturer: event.data.drugManufacturer,\n };\n\n this.PrescriptionService.setSelectedProcessingClaimInfo({\n selectedPatientInfo: this.selectedPatientInfo,\n rowId: event.node.id,\n });\n\n this.currentRow = event;\n }\n\n public cancelPrescriptionsLoadingProcess(): void {\n this.cancelLoadingBool = true;\n this.loadingStatus = false;\n this.resetFilter = true;\n let that = this;\n setTimeout(function () {\n that.resetFilter = false;\n }, 1000);\n }\n\n initializeFilter() {\n const { selectedItem } = this.tier;\n\n this.PrescriptionService.getPrescribers(\n selectedItem.tier1_ID,\n selectedItem.tier2_ID,\n selectedItem.tier3_ID,\n selectedItem.tier4_ID\n ).then((prescribers) => {\n const filterOptions = [\n {\n headerLabel: 'Status',\n filterInstanceLabel: 'status',\n optionLabels: ['Approved', 'Processed'],\n checkedByDefault: ['Approved'],\n dataMapper: (data) => {\n switch (data) {\n case 'Approved':\n return `${ClaimStatus.APPROVED}`;\n case 'Processed':\n return `${ClaimStatus.PROCESSED}`;\n }\n },\n },\n ];\n prescribers.shift();\n\n filterOptions.push({\n headerLabel: 'External Prescribers',\n filterInstanceLabel: 'prescriberName',\n checkedByDefault: ['All'],\n optionLabels: prescribers\n .filter(p => p.name && p.name !== ' ')\n .map((prescriber) => {\n return prescriber.name;\n }),\n dataMapper: null,\n });\n \n let pharmacyNames = [];\n\n this.PrescriptionService.getPharmacyNames(\n selectedItem.tier1_ID,\n selectedItem.tier2_ID,\n selectedItem.tier3_ID,\n selectedItem.tier4_ID\n ).then((names) => {\n\n pharmacyNames = names.map((pair) => {\n return pair.secondName ? pair.secondName : pair.firstName;\n });\n\n pharmacyNames = Array.from(new Set(pharmacyNames));\n \n filterOptions.unshift({\n headerLabel: 'Pharmacy Names',\n filterInstanceLabel: 'pharmacyNamesOtherHidden',\n optionLabels: pharmacyNames,\n checkedByDefault: ['All'],\n dataMapper: null,\n });\n\n filterOptions.push({\n headerLabel: 'Claim Source',\n filterInstanceLabel: 'tpaName',\n checkedByDefault: ['All'],\n optionLabels: this.b340StringConstants.FILTER_SHARED_OPTION_LABELS_TPANAME,\n dataMapper: null,\n });\n\n this.filterOptions = filterOptions;\n this.filterOptionsEmitter.emit(this.filterOptions)\n\n this.loadingStatus = false;\n });\n });\n }\n\n generateTpaOutputFile() {\n const dateRange = this.getFilterDateRange();\n const auditOptions = {\n entityid: parseInt(this.currentUser.dnn_id),\n moduleid: 2, // care\n componentid: 36,\n actionid: 9,\n tablename: 'Coach340BDetail',\n auditdesc: `User ID ${this.currentUser.dnn_id} Printed 340B TPA approved list for date range ${dateRange}`,\n applicationID: 2,\n };\n this.PrescriptionService.writeAuditMessage(auditOptions);\n\n function removeEntryFromKey(keys, toRemove) {\n const index = keys.findIndex((column) => column === toRemove);\n if (index >= 0) {\n keys.splice(index, 1);\n }\n }\n\n const generateColumnsForExcel = () => {\n const keys = this.columnApi\n .getColumns()\n .map((column) => column.getColId());\n\n removeEntryFromKey(keys, 'isProcessed');\n removeEntryFromKey(keys, 'patientName');\n removeEntryFromKey(keys, 'mbi');\n removeEntryFromKey(keys, 'prescriberPhone');\n removeEntryFromKey(keys, 'location');\n removeEntryFromKey(keys, 'prescriberName');\n removeEntryFromKey(keys, 'prescriptionName');\n removeEntryFromKey(keys, 'firstFilledHidden');\n removeEntryFromKey(keys, 'pharmacyNamesHidden');\n removeEntryFromKey(keys, 'status');\n removeEntryFromKey(keys, 'awpPrice');\n removeEntryFromKey(keys, 'claimType');\n removeEntryFromKey(keys, 'drugManufacturer');\n removeEntryFromKey(keys, 'claimType_1');\n removeEntryFromKey(keys, 'tpaName');\n\n return keys;\n };\n\n const columnKeys = generateColumnsForExcel();\n\n const swapColumns = (col1, col2) => {\n const col1Index = columnKeys.findIndex((column) => column === col1);\n const col2Index = columnKeys.findIndex((column) => column === col2);\n const temp = columnKeys[col1Index];\n columnKeys[col1Index] = columnKeys[col2Index];\n columnKeys[col2Index] = temp;\n };\n\n swapColumns('rxNumber', 'dob');\n swapColumns('dob', 'ndc');\n swapColumns('dob', 'medicationDescription');\n swapColumns('patientZip', 'dob');\n swapColumns('patientZip', 'prescriptionQuantity');\n swapColumns('clPrescriptionFillNumber', 'prescriptionQuantity');\n swapColumns('revenue', 'daysSupply');\n swapColumns('prescriberDEA', 'clPrescriptionFillNumber');\n swapColumns('prescriberNPI', 'daysSupply');\n swapColumns('prescriberDEA', 'prescriberNPI');\n swapColumns('bin', 'prescriberNPI');\n swapColumns('bin', 'pcn');\n swapColumns('groupNumber', 'pcn');\n swapColumns('groupNumber', 'dateWritten');\n swapColumns('rxNumber', 'fillDate');\n swapColumns('prescriptionQuantity', 'ndc');\n swapColumns('medicationDescription', 'dateWritten');\n swapColumns('dateWritten', 'patientLastName');\n swapColumns('dateWritten', 'patientFirstName');\n swapColumns('dob', 'dateWritten');\n swapColumns('revenue', 'prescriptionQuantity');\n swapColumns('revenue', 'clPrescriptionFillNumber');\n swapColumns('clPrescriptionFillNumber', 'daysSupply');\n swapColumns('pharmacyNamesOtherHidden', 'daysSupply');\n swapColumns('pharmacyAddress', 'prescriberDEA');\n swapColumns('pharmacyAddress', 'prescriberNPI');\n swapColumns('pharmacyAddress', 'bin');\n swapColumns('dateWritten', 'npi');\n\n let ndcIndex = columnKeys.findIndex(\n (elem) => elem === 'pharmacyNamesOtherHidden'\n );\n columnKeys.splice(ndcIndex, 1);\n\n ndcIndex = columnKeys.findIndex(\n (elem) => elem === 'npi'\n );\n columnKeys.splice(ndcIndex, 1);\n\n ndcIndex = columnKeys.findIndex(\n (elem) => elem === 'pharmacyAddress'\n );\n columnKeys.splice(ndcIndex, 1);\n\n removeEntryFromKey(columnKeys, 'fillDate');\n\n this.gridApi.exportDataAsExcel({\n columnKeys,\n onlySelected: true,\n processCellCallback: (params) => {\n switch (params.column.getColId()) {\n case 'patientName_1':\n var fullName = params.value;\n var commaIndex = fullName.indexOf(',');\n var lastName = fullName.substring(0, commaIndex);\n return lastName;\n case 'patientName_2':\n fullName = params.value;\n commaIndex = fullName.indexOf(',');\n var firstName = fullName.substring(commaIndex + 1);\n return firstName.trim();\n default:\n return params.value;\n }\n },\n });\n }\n\n markSelectedRowsAsProcessed() {\n if (this.onCanProcessClaims()) {\n const selectedData = this.gridApi.getSelectedRows();\n this.PrescriptionService.setClaimToProcessed(\n selectedData.map((claim) => {\n return {\n claimId: claim.claimId,\n prescriptionId: claim.claimPk\n };\n })\n )\n .then(() => {\n const invoices = selectedData.map((claim) => {\n return {\n id: null,\n claimId: claim.claimPk,\n claimType: claim.claimType,\n invoiceQStateID: 1,\n priceSpread: 0,\n costAmount: 0,\n tpaId: null,\n tpaName: '',\n rejectByUserId: null,\n rejectDateTime: null,\n rejectNote: '',\n rejectReasonId: null,\n isEnabled: 1,\n createdOn: null,\n lastUpdateUserId: parseInt(this.currentUser.dnn_id),\n lastUpdatedOn: null,\n rxNumber: null,\n fillNumber: null,\n ndc: null,\n medicationDescription: null,\n status: null\n };\n });\n this.PrescriptionService.submitInvoices(invoices);\n })\n .then(() => this.removeRow())\n }\n }\n\n async undoProcessedClaim(id: number) {\n this.loadingStatus = true;\n const invoiceStatusId = await this.PrescriptionService.getInvoiceId(id);\n if (invoiceStatusId.id < 3) {\n this.PrescriptionService.undoProcessClaim(id, this.selectedPatientInfo.claimType).then(() => this.removeRow(id));\n } else {\n alert('Sorry, but that claim has already been invoiced and cannot be reset.');\n }\n this.loadingStatus = false;\n }\n\n onRowSelected() {\n const claims = this.gridApi.getSelectedNodes();\n if (\n claims.length > 0 &&\n claims.every((claim) => claim.data.status == ClaimStatus.APPROVED)\n ) {\n this.isClaimSelected = true;\n } else {\n this.isClaimSelected = false;\n }\n }\n\n onCanProcessClaims(): boolean {\n const selectedData = this.gridApi.getSelectedRows();\n return selectedData.every((claim) => claim.status == ClaimStatus.APPROVED);\n }\n\n selectionChanged(e) {\n switch (e.target.value) {\n case this.b340StringConstants.EXPORT_MACRO_HELIX:\n this.generateTpaOutputFile();\n break;\n case this.b340StringConstants.EXPORT_CVS:\n this.generateCvsFile();\n break;\n case this.b340StringConstants.EXPORTS_EXPORT:\n this.generateFullExport();\n break;\n default:\n break;\n }\n\n setTimeout(() => {\n this.selectedExportOption = this.b340StringConstants.EXPORT_MENU_TITLE;\n }, 0);\n }\n\n generateFullExport() {\n let tbl = document.createElement('table');\n let data = this.buildTableData();\n let visibleNodes = this.buildVisibleClaimsNodeSet();\n let filteredData = data.filter(claimObj => visibleNodes.has(claimObj.claimPk)).map(claimObj => {\n delete claimObj.claimPk;\n claimObj.drugManufacturer = claimObj.drugManufacturer ?? '';\n return claimObj;\n });\n\n this.generateTable(tbl, filteredData);\n this.generateTableHead(tbl, filteredData[0]);\n\n const csv = this.toCsv(tbl);\n this.download(csv, 'download.csv');\n }\n\n generateTable(table, data) {\n for (let element of data) {\n let row = table.insertRow();\n for (let key in element) {\n let cell = row.insertCell();\n let text = document.createTextNode(element[key]);\n cell.appendChild(text);\n }\n }\n }\n\n generateTableHead(table, data) {\n let thead = table.createTHead();\n let row = thead.insertRow();\n for (let key in data) {\n let th = document.createElement(\"th\");\n let text = document.createTextNode(key);\n th.appendChild(text);\n row.appendChild(th);\n }\n }\n\n toCsv = function (table) {\n // Query all rows\n const rows = table.querySelectorAll('tr');\n\n return [].slice\n .call(rows)\n .map(function (row) {\n // Query all cells\n const cells = row.querySelectorAll('th,td');\n return [].slice\n .call(cells)\n .map(function (cell) {\n return cell.textContent;\n })\n .join(',');\n })\n .join('\\n');\n };\n \n download = function (text, fileName) {\n const link = document.createElement('a');\n link.setAttribute('href', `data:text/csv;charset=utf-8,${encodeURIComponent(text)}`);\n link.setAttribute('download', fileName);\n\n link.style.display = 'none';\n document.body.appendChild(link);\n\n link.click();\n\n document.body.removeChild(link);\n };\n\n buildTableData(): any {\n return this.prescriptions.map(p => {\n return {\n \"claimPk\": p.claimPk,\n \"Tier2_Name\": p.tier2_Name,\n \"Rx Number\": p.rxNumber,\n \"Bene_Full Name\": `\"${p.patientName}\"`,\n \"Bene DOB\": formatDateFourDigitYear(p.dob),\n \"NDC\": p.ndc,\n \"Medication_Description\": `\"${p.prescriptionName}\"`,\n \"Fill Number\": p.clPrescriptionFillNumber,\n \"Prescription_Filled_Date\": formatDateFourDigitYear(p.fillDate),\n \"Date_Initial_Fill\": formatDateFourDigitYear(p.firstFilled),\n \"Prescribing_Provider_NPI\": p.npi,\n \"Prescribing_Provider_Name\": `\"${p.prescriberName}\"`,\n \"Provider_Address\": `\"${p.location}\"`,\n \"Prescribing_Provider_Specialty\": `\"${p.prescriberSpecialty}\"`,\n \"Service_Pharmacy_NPI\": p.servicePharmacyNpi,\n \"Pharmacy_Org_Name\": `\"${p.pharmacyName}\"`,\n \"Pharmacy_Other_Org_Name\": `\"${p.pharmacyNameOther}\"`,\n \"Pharmacy_Address\": `\"${p.pharmacy_Address}\"`,\n \"Pharmacy_Address_Other\": `\"${p.pharmacyOtherAddress || ''}\"`,\n \"Price\": `$${p.claimType === 'CMS' ? p.awpPrice : p.tpaPrice}`,\n \"Claim Source\": p.claimType === \"CMS\" ? \"CMS\" : p.tpaName,\n \"drugManufacturer\": p.drugManufacturer,\n }\n })\n }\n\n buildVisibleClaimsNodeSet() {\n let pageCount = this.gridApi.paginationGetTotalPages();\n let originalPage = this.gridApi.paginationGetCurrentPage();\n this.gridApi.paginationGoToFirstPage();\n let nodes = [];\n for (let i = 0; i < pageCount; i++) {\n let currentPageNodes = this.gridApi.getRenderedNodes();\n nodes.push(currentPageNodes);\n this.gridApi.paginationGoToNextPage();\n }\n this.gridApi.paginationGoToPage(originalPage);\n return new Set(nodes.flat(1).map(node => node.data.claimPk));\n }\n\n generateCvsFile() {\n const columnKeys = ['rxNumber', 'npi', 'clPrescriptionFillNumber']\n this.gridApi.exportDataAsExcel({\n onlySelected: true,\n columnKeys\n });\n }\n\n markCurrentRowAsProcessed(id) {\n this.gridApi.forEachNode((rowNode, index) => {\n if (rowNode.data.claimPk === id) {\n rowNode.setSelected(true);\n } else {\n rowNode.setSelected(false);\n }\n });\n this.markSelectedRowsAsProcessed();\n }\n\n async getPrescriptions(): Promise {\n const { selectedItem } = this.tier;\n let prescriptions;\n try {\n prescriptions = this.PrescriptionService.getApprovedClaims(\n selectedItem.tier1_ID,\n selectedItem.tier2_ID,\n selectedItem.tier3_ID,\n selectedItem.tier4_ID\n );\n } catch (e) {\n this.toastr.error(`${e.status}: ${e.statusText}`, 'Error');\n }\n\n this.writeAccessAuditMessage(\n CarePrescriptionsProcessingComponent.AUDIT_ACCESS_MESSAGE\n );\n\n return prescriptions;\n }\n\n writeAccessAuditMessage(action: string) {\n const dateRange = this.getFilterDateRange();\n\n setTimeout(async () => {\n this.PrescriptionService.writeAuditMessage({\n entityid: parseInt(this.currentUser.dnn_id),\n moduleid: 2, // care\n componentid: 36,\n actionid: 6, // phi access\n tablename: 'Coach340BClaims',\n auditdesc: `User ID ${this.currentUser.dnn_id} ${action} for date range ${dateRange}`,\n applicationID: 2,\n });\n }, 0);\n }\n\n getFilterDateRange() {\n return `${this.dateRangeLower?.toLocaleDateString() ?? 'All'} - ${\n this.dateRangeHigher?.toLocaleDateString() ?? 'All'\n }`;\n }\n\n async getPrescriptionDetail(claimId: number): Promise {\n try {\n this.prescriptionDetail =\n await this.PrescriptionService.getPrescriptionDetail(\n this.selectedPatientInfo.claimPk,\n this.selectedPatientInfo.acoId,\n this.selectedPatientInfo.tier2_id,\n this.selectedPatientInfo.tier3_id,\n this.selectedPatientInfo.tier4_grpId,\n claimId,\n this.currentUser.dnn_id,\n this.selectedPatientInfo\n );\n } catch (e) {\n this.toastr.error(`${e.status}: ${e.statusText}`, `Error`);\n }\n }\n}\n","\nimport { formatDate } from '@angular/common';\nimport { toInteger } from 'lodash';\nimport {\n formatDate as fmtDate,\n invoiceStatusPriorityMap,\n} from '../care-prescriptions/shared-lib';\nimport { ColDef } from 'ag-grid-community';\n\nfunction getSortCompatibleDate(dateStr) {\n let date = new Date(dateStr);\n let year = date.getFullYear();\n let month = date.getMonth() + 1;\n let day = date.getDate();\n let result = `${year}/${month < 10 ? `0${month}` : month}/${day < 10 ? `0${day}` : day}`;\n return result;\n}\n\nexport const COLUMN_DEFS: Array = [\n {\n headerName: 'Status',\n field: 'status',\n maxWidth: 180,\n resizable: true,\n cellRenderer: (data: any): string => {\n return data.data?.status;\n },\n comparator: (s1, s2) => {\n let sx1 = invoiceStatusPriorityMap.get(s1);\n let sx2 = invoiceStatusPriorityMap.get(s2);\n return sx1 - sx2;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n sortable: true,\n },\n {\n headerName: 'Claim ID',\n field: 'claimId',\n maxWidth: 120,\n resizable: true,\n cellRenderer: (data: any): string => {\n return data.data?.claimId;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n sortable: true,\n },\n {\n headerName: 'Rx Number',\n field: 'rxNumber',\n maxWidth: 120,\n resizable: true,\n cellRenderer: (data: any): string => {\n return data.data?.rxNumber;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n sortable: true,\n },\n {\n headerName: 'Fill Number',\n field: 'fillNumber',\n maxWidth: 120,\n resizable: true,\n cellRenderer: (data: any): string => {\n let result = data.data?.fillNumber?.replace(/^0+/, '');\n return result || '0';\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n valueGetter: (data: any): number => {\n return toInteger(data.data?.fillNumber);\n },\n sortable: true,\n },\n {\n headerName: 'NDC',\n field: 'ndc',\n resizable: true,\n cellRenderer: (data: any): string => {\n return data.data?.ndc;\n },\n valueGetter: (data: any): number => {\n return toInteger(data.data?.ndc);\n },\n sortable: true,\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n },\n {\n headerName: 'NDC Description',\n field: 'medicationDescription',\n resizable: true,\n cellRenderer: (data: any): string => {\n return data.data?.medicationDescription;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n sortable: true,\n },\n {\n headerName: 'Cost Amount',\n field: 'costAmount',\n resizable: true,\n cellRenderer: (data: any): string => {\n return `$${(data?.data.costAmount).toFixed(2)}`;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n editable: false,\n valueGetter: (data: any): number => {\n return toInteger(data.data?.costAmount);\n },\n sortable: true,\n },\n {\n headerName: 'Caravan Fee',\n field: 'caravanFee',\n resizable: true,\n cellRenderer: (data: any): string => {\n return `$${(data?.data?.caravanFee).toFixed(2)}`;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n editable: false,\n valueGetter: (data: any): number => {\n return parseFloat(data.data?.caravanFee);\n },\n sortable: true,\n },\n {\n headerName: 'Created On',\n field: 'fillDate',\n resizable: true,\n hide: true,\n cellRenderer: (data: any): string => {\n return fmtDate(data.data?.createdOn);\n },\n valueGetter: (data: any): string => {\n let result = formatDate(new Date(data.data?.createdOn), 'yyyy/MM/dd', 'en_US').trim();\n return result;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n editable: false,\n },\n {\n headerName: 'Contract Pharmacy',\n field: 'contractPharmacy',\n resizable: true,\n hide: true,\n cellRenderer: (data: any): string => {\n return data.data?.contractPharmacy;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n editable: false,\n },\n {\n headerName: 'TPA Name',\n field: 'tpaName',\n resizable: true,\n hide: true,\n cellRenderer: (data: any): string => {\n return data.data?.tpaName;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n editable: false,\n },\n {\n headerName: 'Claim Type',\n field: 'claimType',\n minWidth: 100,\n resizable: true,\n sortable: true,\n hide: true,\n filter: 'agSetColumnFilter',\n },\n\n {\n headerName: 'Claim Source',\n field: 'tpaName',\n minWidth: 120,\n suppressAutoSize: true,\n hide: false,\n filter: 'agSetColumnFilter',\n sortable: true,\n },\n\n {\n headerName: 'Drug Manufacturer',\n field: 'drugManufacturer',\n minWidth: 120,\n suppressAutoSize: true,\n hide: false,\n filter: 'agSetColumnFilter',\n sortable: true,\n },\n \n {\n headerName: 'Pending On',\n field: 'pendingDate',\n resizable: true,\n cellRenderer: (data: any): string => {\n return data.data?.pendingDate ? formatDate(data.data?.pendingDate, 'MM/dd/yy', 'en_US').trim() : '';\n },\n valueGetter: (data: any): string => {\n let result;\n if (data.data?.pendingDate) {\n result = formatDate(new Date(data.data?.pendingDate), 'yyyy/MM/dd', 'en_US').trim();\n } else {\n result = '';\n }\n return result;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n editable: false,\n },\n {\n headerName: 'Invoicing On',\n field: 'invoicingDate',\n resizable: true,\n cellRenderer: (data: any): string => {\n return data.data?.invoicingDate ? formatDate(data.data?.invoicingDate, 'MM/dd/yy', 'en_US').trim() : '';\n },\n valueGetter: (data: any): string => {\n let result;\n if (data.data?.invoicingDate) {\n result = formatDate(new Date(data.data?.invoicingDate), 'yyyy/MM/dd', 'en_US').trim();\n } else {\n result = '';\n }\n return result;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n editable: false,\n },\n {\n headerName: 'Invoiced On',\n field: 'invoicedDate',\n resizable: true,\n cellRenderer: (data: any): string => {\n return data.data?.invoicedDate ? formatDate(data.data?.invoicedDate, 'MM/dd/yy', 'en_US').trim() : '';\n },\n valueGetter: (data: any): string => {\n let result;\n if (data.data?.invoicedDate) {\n result = formatDate(new Date(data.data?.invoicedDate), 'yyyy/MM/dd', 'en_US').trim();\n } else {\n result = '';\n }\n return result;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n editable: false,\n },\n {\n headerName: 'Rejected On',\n field: 'rejectedDate',\n resizable: true,\n cellRenderer: (data: any): string => {\n return data.data?.rejectedDate ? formatDate(data.data?.rejectedDate, 'MM/dd/yy', 'en_US').trim() : '';\n },\n valueGetter: (data: any): string => {\n let result;\n if (data.data?.rejectedDate) {\n result = formatDate(new Date(data.data?.rejectedDate), 'yyyy/MM/dd', 'en_US').trim();\n } else {\n result = '';\n }\n return result;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n editable: false,\n },\n {\n headerName: 'Rejected Needs Credit On',\n field: 'rejectedNeedsCreditDate',\n resizable: true,\n cellRenderer: (data: any): string => {\n return data.data?.rejectedNeedsCreditDate ? formatDate(data.data?.rejectedNeedsCreditDate, 'MM/dd/yy', 'en_US').trim() : '';\n },\n valueGetter: (data: any): string => {\n let result;\n if (data.data?.rejectedNeedsCreditDate) {\n result = formatDate(new Date(data.data?.rejectedNeedsCreditDate), 'yyyy/MM/dd', 'en_US').trim();\n } else {\n result = '';\n }\n return result;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n editable: false,\n }, \n {\n headerName: 'Credited On',\n field: 'creditedDate',\n resizable: true,\n cellRenderer: (data: any): string => {\n return data.data?.creditedDate ? formatDate(data.data?.creditedDate, 'MM/dd/yy', 'en_US').trim() : '';\n },\n valueGetter: (data: any): string => {\n let result;\n if (data.data?.creditedDate) {\n result = formatDate(new Date(data.data?.creditedDate), 'yyyy/MM/dd', 'en_US').trim();\n } else {\n result = '';\n }\n return result;\n },\n suppressSizeToFit: false,\n filter: 'agSetColumnFilter',\n editable: false,\n }, \n];\n","\n
\n

\n For this Rx to be 340B eligible you need...\n

\n \n
\n\n
\n \n\n
\n Visit note from the external prescriber that supports this Rx before\n {{fillDate}}
\n
\n\n

\n\n \n\n
\n Visit and referral for a related diagnosis from a Covered Entity before\n {{fillDate}}\n
\n\n

\n\n \n\n
\n Follow-up plan that shows you are coordinating care\n
\n
\n\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnInit,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { BooleanValueNode } from 'graphql';\n\n@Component({\n selector: 'coach-patient-header-help',\n templateUrl: './patient-header-help.component.html',\n styleUrls: ['./patient-header-help.component.scss'],\n})\nexport class PatientHeaderHelpComponent implements OnInit, AfterViewInit {\n private static IS_HIDDEN: string = 'HELP_PANEL_IS_HIDDEN';\n\n isHidden: boolean;\n @ViewChild('mainDiv') mainDiv: ElementRef;\n @ViewChild('expanderArrow') expanderArrow: ElementRef;\n @Input() fillDate: Date;\n @Input() showInstructions: boolean = true;\n\n activeColor: string = '#E8D2F2';\n inactiveColor: string = '#e0e0e0';\n\n activeArrow: string = 'chevron-up';\n inactiveArrow: string = 'chevron-down';\n currentArrow: string;\n\n activeBottomPadding: string = '24px';\n inactiveBottomPadding: string = '0';\n\n storage: any;\n\n constructor(private renderer: Renderer2) {}\n\n ngOnInit(): void {\n this.storage = window.localStorage;\n this.isHidden =\n this.storage.getItem(PatientHeaderHelpComponent.IS_HIDDEN) === 'true' || !this.showInstructions;\n this.flipArrow();\n }\n\n ngAfterViewInit(): void {\n this.setColor();\n }\n\n toggleDisplay() {\n this.isHidden = !this.isHidden;\n this.setColor();\n this.flipArrow();\n this.storage.setItem(\n PatientHeaderHelpComponent.IS_HIDDEN,\n this.isHidden ? 'true' : 'false'\n );\n }\n\n setColor() {\n const newColor = this.isHidden ? this.inactiveColor : this.activeColor;\n this.renderer.setStyle(\n this.mainDiv.nativeElement,\n 'background-color',\n newColor\n );\n const paddingAmount = this.isHidden ? this.inactiveBottomPadding : this.activeBottomPadding;\n this.renderer.setStyle(this.mainDiv.nativeElement, 'padding-bottom', paddingAmount);\n }\n\n flipArrow() {\n this.currentArrow = this.isHidden ? this.inactiveArrow : this.activeArrow;\n }\n}\n","
\n
\n
\n
\n {{ selectedPatientInfo?.patientName }}\n
\n
\n DOB:\n {{ formatDate(selectedPatientInfo?.patientDob) }} | Sex:\n {{ getPatientSex() }}
\n MBI: {{ getMbi() }}
\n Primary Care:\n {{ selectedPatientInfo?.primaryProviderName }}\n {{ selectedPatientInfo?.primaryProviderCredentials }}\n
\n
\n
\n \n
\n
\n
\n\n\n\n
\n
\n \"Rx\n
\n
\n
\n {{ selectedPatientInfo?.prescriptionName }}\n
\n By {{ selectedPatientInfo?.prescriberName }} -\n {{ selectedPatientInfo?.prescriberSpecialty }}
\n {{ formatPhone(selectedPatientInfo?.prescriberPhone) }}
\n First filled {{ formatDate(selectedPatientInfo?.firstFilled) }}\n
\n
","import { Component, Input, OnInit, SimpleChange, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\n\nimport { formatDate } from '../../shared-lib';\n\nimport pdfMake from \"pdfmake/build/pdfmake\"; \nimport pdfFonts from \"pdfmake/build/vfs_fonts\"; \nimport { CareFeatureConstants } from '@shared/models/module-constants';\npdfMake.vfs = pdfFonts.pdfMake.vfs;\n\n@Component({\n selector: 'coach-patient-header',\n templateUrl: './patient-header.component.html',\n styleUrls: ['./patient-header.component.scss'],\n})\nexport class PatientHeaderComponent implements OnInit {\n importFeatureFlag: string = CareFeatureConstants.FileImport340B;\n \n @Input() selectedPatientInfo: any = [];\n @Input() prescriptionDetail: any;\n @Input() route: ActivatedRoute;\n @Input() showInstructions: boolean = true;\n @Input() claimStatus: number;\n @Input() tier2Id: string;\n @Input() showPatientFaceSheet: boolean = false;\n\n constructor(\n private router: Router,\n private prescriptionService: PrescriptionService,\n private mask: MaskPipe\n ) {}\n \n ngOnInit(): void {}\n \n public formatDate(dateStr) {\n return dateStr ? new Date(dateStr).toLocaleDateString() : 'Unknown';\n }\n\n public formatPhone(value) {\n if (!value) {\n return '';\n }\n\n let cleaned = ('' + value).replace(/\\D/g, '');\n let match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\n if (match) {\n return `(${match[1]}) ${match[2]}-${match[3]}`;\n }\n return '';\n }\n\n public getPatientSex() {\n return this.selectedPatientInfo?.gender ?? '';\n }\n\n navigateToPatientFacesheet() {\n if (this.showPatientFaceSheet) {\n this.router.navigate([`../patient/${this.selectedPatientInfo.chPatId}`], {\n relativeTo: this.route,\n });\n }\n }\n\n exportClaimFiles(): void {\n this.prescriptionService.downloadAttachedFiles(this.tier2Id, this.selectedPatientInfo.prescriptionRefID);\n this.generatePDF();\n }\n\n getVisitDate() {\n let aDate = Date.parse(this.prescriptionDetail.visit_Note_Visit_Date);\n let defaultDate = Date.parse('01/01/70');\n\n if (aDate == defaultDate) {\n return '';\n }\n return this.prescriptionDetail.visit_Note_Visit_Date;\n }\n\n getMbi() {\n if (this.selectedPatientInfo && this.selectedPatientInfo.claimType !== 'TPA') {\n return this.mask.transform(this.selectedPatientInfo.mbi, 6)\n } else {\n return \"N/A\";\n }\n }\n\n async generatePDF() {\n let originalVisitDate = this.prescriptionDetail.visit_Note_Visit_Date;\n let newVisitDate = new Date(originalVisitDate);\n newVisitDate.setDate(newVisitDate.getDate() + 1);\n\n let dateFormat = /d{4}-d{2}-d{2}/;\n if (!dateFormat.test(this.prescriptionDetail.visit_Note_Visit_Date)) {\n this.prescriptionDetail.visit_Note_Visit_Date = formatDate(newVisitDate);\n if (this.prescriptionDetail.visit_Note_Visit_Date === '12/31/69') {\n this.prescriptionDetail.visit_Note_Visit_Date = 'n/a';\n }\n }\n \n let username = await this.prescriptionService.getUserFullName(parseInt(this.selectedPatientInfo.userId));\n let followUpPlan = this.prescriptionDetail.follow_Up_Plan\n .replace('[CE Location]', this.prescriptionDetail.cE_Location)\n \n let docDefinition = { \n content: [\n {\n text: 'Care Coordination Note',\n fontSize: 14,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n },\n \n {\n text: `Patient Name: ${this.selectedPatientInfo.patientName}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: `DOB: ${formatDate(this.selectedPatientInfo.patientDob)}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: `MBI: ${ this.getMbi() }`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n\n {\n text: `By: ${this.prescriptionDetail.claim_Status_Set_By}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: `Date: ${formatDate(this.prescriptionDetail.claim_Status_Set_On_Date)}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: ' ',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: '340B External Prescription',\n fontSize: 14,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n },\n {\n text: this.selectedPatientInfo.prescriptionName,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: true\n },\n {\n text: `by ${this.selectedPatientInfo.prescriberName}${this.selectedPatientInfo.prescriberCredentials \n ? \", \" + this.selectedPatientInfo.prescriberCredentials : ''}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: `First filled ${formatDate(this.selectedPatientInfo.firstFilled)}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: ' ',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: `Visit Note from ${this.prescriptionDetail.visitProvider}:`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n },\n {\n text: `Visit Date: ${this.getVisitDate()}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n },\n {\n text: `Rx Diagnosis: ${this.prescriptionDetail.visit_Note_Diagnosis}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n },\n {\n text: ' ',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n {\n text: 'Follow-Up Plan:',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n },\n {\n text: `${followUpPlan}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false\n },\n ]\n };\n\n const ceRelatedReferralDate = formatDate(this.selectedPatientInfo.ceRelatedReferralDate);\n const ceVisitDate = formatDate(this.selectedPatientInfo.ceVisitDate);\n\n if (ceVisitDate !== '12/31/69'\n && ceVisitDate !== '01/01/70') {\n docDefinition.content.push({\n text: 'Related Visit By Covered Entity:',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n });\n docDefinition.content.push({\n text: `Visit Date: ${ceVisitDate}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n });\n docDefinition.content.push({\n text: `Provider: ${this.prescriptionDetail.cE_Provider}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n });\n docDefinition.content.push({\n text: `CE Location: ${this.prescriptionDetail.cE_Location}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n });\n docDefinition.content.push({\n text: ' ',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n });\n }\n if (ceRelatedReferralDate !== '12/31/69'\n && ceRelatedReferralDate !== '01/01/70') {\n docDefinition.content.push({\n text: 'Related Referral By Covered Entity:',\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: true,\n decoration: 'underline'\n });\n docDefinition.content.push({\n text: `Referral Date: ${ceRelatedReferralDate}`,\n fontSize: 11,\n alignment: 'left',\n color: '#000000',\n bold: false,\n });\n }\n \n pdfMake.createPdf(docDefinition).download();\n\n this.prescriptionDetail.visit_Note_Visit_Date = originalVisitDate;\n } \n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ICurrentRoute } from '@shared/models/activated-route';\n\nexport interface TabSwitchState {\n isInvoiceDetailsTabSelected: boolean;\n isClaimInfoTabSelected: boolean;\n isClaimHistorySelected: boolean;\n}\n\n@Component({\n selector: 'coach-invoicing-tab-switch',\n templateUrl: './invoicing-tab-switch.component.html',\n styleUrls: ['./invoicing-tab-switch.component.scss']\n})\nexport class InvoicingTabSwitchComponent implements OnInit {\n\n public isTabDropdownOpen = true;\n public currentRoute$: BehaviorSubject;\n public activeView: ICurrentRoute;\n public isSidebarOpen: boolean = true;\n\n @Input() isInvoiceDetailsTabSelected: boolean;\n @Input() isClaimInfoTabSelected: boolean;\n @Input() isClaimHistorySelected: boolean;\n\n @Output() onTabClicked = new EventEmitter();\n\n constructor() {}\n\n updateTabs(): void {\n }\n\n ngOnInit(): void {\n }\n\n onSummaryTabSelected() {\n this.isInvoiceDetailsTabSelected = true;\n this.isClaimInfoTabSelected = false;\n this.isClaimHistorySelected = false;\n this.emitEvent();\n }\n\n onQuickFillTabSelected() {\n this.isInvoiceDetailsTabSelected = false;\n this.isClaimInfoTabSelected = true;\n this.isClaimHistorySelected = false;\n this.emitEvent();\n }\n\n onCareNoteSelected() {\n this.isInvoiceDetailsTabSelected = false;\n this.isClaimInfoTabSelected = false;\n this.isClaimHistorySelected = true;\n this.emitEvent();\n }\n\n emitEvent() {\n this.onTabClicked.emit({\n isInvoiceDetailsTabSelected: this.isInvoiceDetailsTabSelected,\n isClaimInfoTabSelected: this.isClaimInfoTabSelected,\n isClaimHistorySelected: this.isClaimHistorySelected\n });\n }\n\n}\n","
\n \n \n Invoice Details\n \n \n Claim Info\n \n \n Claim History\n \n \n
\n","
\n \n
\n\n \n\n \n\n
\n
\n

\n Invoicing Status\n \n

\n\n
\n Price Spread\n \n

\n
\n
\n\n
\n
Reason for Rejection:
\n \n
\n\n \n Rejection Notes:\n \n \n
\n
\n\n
\n CARE COORDINATION NOTE
\n\n Patient Name: {{ patientName }}
\n DOB: {{ patientDobText }}
\n MBI: {{ patientMbi | mask: 6 }}
\n By: {{ prescriptionDetails.claim_Status_Set_By }}
\n Date: {{ formatDate(prescriptionDetails.claim_Status_Set_On_Date) }}

\n\n\n 340B External Prescription
\n {{ selectedPatientInfo.prescriptionName }}
\n by {{ selectedPatientInfo.prescriberName }}, {{selectedPatientInfo.prescriberSpecialty}}
\n First filled {{ formatDate(selectedPatientInfo.firstFilled) }}

\n\n \n Visit Note from {{ selectedPatientInfo.prescriberName }}
\n\n
\n

\n Visit Date: {{ formatDate(prescriptionDetails.visit_Note_Visit_Date)\n }}
\n Rx Diagnosis: {{ prescriptionDetails.visit_Note_Diagnosis }}\n

\n
\n\n
\n

\n Related Visit By Covered Entity:\n

\n \n Visit Date: {{ formatDate(prescriptionDetails.cE_Visit_Date) }}
\n Provider: {{ prescriptionDetails.cE_Provider }}
\n CE Location: {{ prescriptionDetails.cE_Location }}
\n
\n
\n
\n\n
\n

\n Related Referral By Covered Entity:\n

\n \n Referral Date:\n {{ formatDate(prescriptionDetails.cE_Related_Referral_Date) }}
\n
\n
\n
\n\n
\n

\n Follow-Up Plan:\n

\n
\n
\n
\n
\n\n
\n
\n

Claim History (Validation + Invoice)

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
StatusDateUser
New{{formatDate(historyDetail.newStatus.newDate)}}{{historyDetail.newStatus.newBy}}
Approved{{formatDate(historyDetail.approvedStatus.approvedDate)}}{{historyDetail.approvedStatus.approvedBy}}
Processed{{formatDate(historyDetail.processedStatus.processedDate)}}{{historyDetail.processedStatus.processedBy}}
Pending Invoicing{{formatDate(historyDetail.pendingStatus.pendingDate)}}{{historyDetail.pendingStatus.pendingBy}}
Invoicing{{formatDate(historyDetail.invoicingStatus.invoicingDate)}}{{historyDetail.invoicingStatus.invoicingBy}}
Invoiced{{formatDate(historyDetail.invoicedStatus.invoicedDate)}}{{historyDetail.invoicedStatus.invoicedBy}}
Rejected{{formatDate(historyDetail.rejectedStatus.rejectedDate)}}{{historyDetail.rejectedStatus.rejectedBy}}
Rejected Needs Credit{{formatDate(historyDetail.needsCreditStatus.needsCreditDate)}}{{historyDetail.needsCreditStatus.needsCreditBy}}
Credited{{formatDate(historyDetail.creditedStatus.creditedDate)}}{{historyDetail.creditedStatus.creditedBy}}
\n
\n
\n\n \n \n\n \n\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { IContractInfo, IPrescriptionDetail } from '@shared/models/prescription';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\nimport { Subscription } from 'rxjs';\nimport { copyTextToClipboard } from '@shared/utilities';\nimport { TabSwitchState } from './invoicing-tab-switch/invoicing-tab-switch.component';\nimport {\n InvoiceStatus,\n mapInvoiceStatusToString,\n formatDate,\n basicNameSplit,\n removeLeadingZeros\n} from '@care/views/care-prescriptions/shared-lib';\n\n@Component({\n selector: 'coach-care-prescriptions-invoicing-sidebar',\n templateUrl: './care-prescriptions-invoicing-sidebar.component.html',\n styleUrls: ['./care-prescriptions-invoicing-sidebar.component.scss'],\n})\nexport class CarePrescriptionsInvoicingSidebarComponent\n implements OnInit, OnDestroy\n{\n @Input() selectedPatientInfo: any = [];\n @Input() show: boolean;\n @Input() selectedInvoice: any;\n @Input() contractInfo: IContractInfo;\n @Input() tier2_id: string;\n\n @Output() onProcessClaim = new EventEmitter();\n @Output() onSaveInvoice = new EventEmitter();\n\n areChangesMade: boolean = false;\n\n patientDemographics: any;\n \n thePriceSpread: number = 0;\n theRejectNote: string = null;\n theRejectReason: number = null;\n theInvoiceStatus: number = null;\n\n patientName: string;\n patientDobText: string;\n patientMbi: string;\n\n claimId: number;\n\n isRecordInEndStateStatus: boolean = false;\n\n currentUser: any;\n creatorName: string;\n creatorDate: Date;\n\n authSubscription: Subscription;\n\n isValidationPanelOpen: boolean = false;\n isClaimSelected: boolean = false;\n notes: string = '';\n toggleVisitNoteModal: boolean = false;\n toggleCareCoordinationNoteModal: boolean = false;\n currentRowId: number;\n\n prescriptionDetails: IPrescriptionDetail;\n prescriptionSubscription: Subscription;\n\n isInvoiceDetailsTabSelected: boolean = true;\n isClaimInfoTabSelected: boolean = false;\n isClaimHistorySelected: boolean = false;\n\n historyDetail: any;\n\n constructor(\n private prescriptionService: PrescriptionService,\n private authService: AuthService\n ) {}\n\n ngOnInit(): void {\n this.prescriptionSubscription =\n this.prescriptionService.invoicingClaimInfoUpdated.subscribe(\n (invoice:any) => {\n setTimeout(() => {\n this.selectedInvoice = invoice.selectedPatientInfo;\n this.thePriceSpread = invoice.selectedPatientInfo.priceSpread;\n this.theRejectNote = invoice.selectedPatientInfo.rejectNote;\n this.theRejectReason = invoice.selectedPatientInfo.rejectReasonId;\n this.theInvoiceStatus = this.selectedInvoice.invoiceQStateID;\n this.currentRowId = invoice.rowId;\n this.updateInvoiceDetailsData(this.selectedPatientInfo.claimId);\n\n this.setRecordEndStateStatus();\n\n this.prescriptionService.getPrescriptionWithId(this.tier2_id, this.selectedInvoice.claimId, this.selectedInvoice.claimType).then(demo => {\n this.patientDemographics = demo;\n this.patientDemographics.patientDob = this.patientDemographics.dob;\n });\n \n this.resetControls();\n this.setChangesMade(false);\n\n this.prescriptionService\n .getPrescriptionDetailWithId(this.selectedInvoice.claimId, this.selectedInvoice.claimType)\n .then((prescriptionInfo) => {\n this.prescriptionDetails = prescriptionInfo;\n });\n\n this.prescriptionService\n .getPrescriptionWithId(this.tier2_id, this.selectedInvoice.claimId, this.selectedInvoice.claimType)\n .then((result) => {\n this.selectedPatientInfo = result;\n this.patientName = basicNameSplit(this.selectedPatientInfo.patientName).join(' ');\n this.patientDobText = this.formatDate(this.selectedPatientInfo.dob);\n this.patientMbi = this.selectedPatientInfo.mbi ? this.selectedPatientInfo.mbi : 'N/A';\n\n this.historyDetail = this.prescriptionService\n .getPrescriptionHistoryDetail(\n this.tier2_id,\n invoice.selectedPatientInfo.claimId,\n result.createdatetime\n )\n .then((result) => {\n this.historyDetail = result;\n });\n });\n }, 0);\n }\n );\n\n this.authSubscription = this.authService.userInfo$.subscribe(\n (currentUser) => {\n this.currentUser = currentUser;\n this.creatorName = this.currentUser.name || this.currentUser.email;\n this.creatorDate = new Date();\n }\n );\n }\n\n setRecordEndStateStatus() {\n const invoiceStatus = Number(this.theInvoiceStatus);\n switch (invoiceStatus) {\n case InvoiceStatus.INVOICED:\n case InvoiceStatus.REJECTED:\n case InvoiceStatus.REJECTED_NEEDS_CREDIT:\n case InvoiceStatus.CREDITED:\n this.isRecordInEndStateStatus = true;\n return; \n }\n this.isRecordInEndStateStatus = false;\n }\n \n ngOnDestroy(): void {\n this.authSubscription.unsubscribe();\n this.prescriptionSubscription.unsubscribe();\n }\n\n updateInvoiceStatus(status) {\n if (status != InvoiceStatus.REJECTED) {\n this.theRejectReason = undefined;\n this.theRejectNote = '';\n }\n\n this.theInvoiceStatus = status;\n this.setRecordEndStateStatus();\n this.setChangesMade(true);\n }\n\n resetControls() {\n if (this.isInvoiceDetailsTabSelected) {\n if (this.contractInfo?.priceTypeId == 1) {\n this.thePriceSpread = this.selectedInvoice.priceSpread;\n }\n }\n }\n\n setChangesMade(isChangeMade: boolean = true) {\n this.areChangesMade = isChangeMade;\n }\n\n okayToSave(): boolean {\n return this.areChangesMade && (!this.isRejectedSelected() || this.theRejectReason != null);\n }\n\n isRejectedSelected() {\n const isSelected = this.theInvoiceStatus == InvoiceStatus.REJECTED;\n if (!isSelected && this.selectedInvoice) {\n this.resetControls();\n }\n return isSelected;\n }\n\n setTabStatus(e: TabSwitchState) {\n this.isInvoiceDetailsTabSelected = e.isInvoiceDetailsTabSelected;\n this.isClaimInfoTabSelected = e.isClaimInfoTabSelected;\n this.isClaimHistorySelected = e.isClaimHistorySelected;\n\n setTimeout(() => {\n this.resetControls();\n }, 0);\n }\n\n updateInvoiceDetailsData(claimId) {\n if (!this.isValidationPanelOpen) {\n this.toggleValidatePanel();\n }\n }\n\n processThisClaim() {\n this.onProcessClaim.emit(this.selectedPatientInfo.claimPk);\n }\n\n copyData(text) {\n copyTextToClipboard(text);\n }\n\n public formatDate(dateStr) {\n if (dateStr) {\n return new Date(dateStr).toLocaleDateString();\n } else {\n return '';\n }\n }\n\n // Right Panel Operation\n public toggleValidatePanel() {\n this.isValidationPanelOpen = !this.isValidationPanelOpen;\n }\n\n public saveChanges() {\n const oldStatus = this.selectedInvoice.invoiceQStateID;\n this.selectedInvoice.invoiceQStateID = parseFloat(this.theInvoiceStatus.toString());\n this.selectedInvoice.rejectReasonId = this.theRejectReason ? parseInt(this.theRejectReason.toString()) : null;\n this.selectedInvoice.rejectNote = this.theRejectNote;\n this.selectedInvoice.priceSpread = this.thePriceSpread ? Number.parseFloat(this.thePriceSpread.toString()) : 0;\n\n if (this.thePriceSpread != 0 && this.theInvoiceStatus == InvoiceStatus.PENDING) {\n this.selectedInvoice.invoiceQStateID = this.theInvoiceStatus = InvoiceStatus.INVOICING;\n }\n\n if (\n this.theInvoiceStatus == InvoiceStatus.REJECTED &&\n oldStatus == InvoiceStatus.INVOICED\n ) {\n this.selectedInvoice.invoiceQStateID = this.theInvoiceStatus =\n InvoiceStatus.REJECTED_NEEDS_CREDIT;\n }\n\n this.selectedInvoice.status = mapInvoiceStatusToString(\n this.selectedInvoice.invoiceQStateID\n );\n\n if (this.selectedInvoice.priceSpread) {\n this.selectedInvoice.costAmount = this.selectedInvoice.priceSpread;\n this.selectedInvoice.caravanFee = this.selectedInvoice.costAmount * this.contractInfo.caravanPct;\n }\n \n this.prescriptionService.submitInvoices([this.selectedInvoice]).then(() => {\n this.toggleValidatePanel();\n this.onSaveInvoice.emit(true);\n });\n }\n}\n","\n\n\n\n\n\n
\n
\n
\n
\n
\n
340B Prescription Invoicing
\n
\n\n
\n \n \n \n \n
\n\n \n \n
\n
\n Cancel\n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n\n","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\n\n\nimport { COLUMN_DEFS } from './care-prescription.columns';\nimport {\n IPrescription,\n IApprovedPrescription,\n IContractInfo,\n IPharmacyNames,\n IPrescriptionDetail,\n IPrescriptionInvoice,\n} from '@shared/models/prescription';\nimport { IPrescriptionFilterPreset } from '@shared/models/prescription-filters';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { takeUntil } from 'rxjs/operators';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { ToastrService } from 'ngx-toastr';\nimport { ClaimStatus, formatDate, formatDateFourDigitYear, toCsv, download, generateTable, generateTableHead, B340StringConstants } from '../care-prescriptions/shared-lib';\nimport { Subscription } from 'rxjs';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { FilterOption } from '../care-all-prescriptions/care-all-prescriptions.component';\nimport { GridApi, ColumnApi, ColDef } from 'ag-grid-community';\n@Component({\n selector: 'coach-care-prescriptions-invoicing',\n templateUrl: './care-prescriptions-invoicing.component.html',\n styleUrls: ['./care-prescriptions-invoicing.component.scss'],\n host: {\n class: 'page-content coach-care-prescriptions',\n },\n})\nexport class CarePrescriptionsInvoicingComponent extends KillSubscriptions\nimplements OnInit, OnDestroy {\n\n public static AUDIT_ACCESS_MESSAGE = 'Accessed 340B Processing Queue';\n public static AUDIT_PRINT_MESSAGE = 'Printed 340B TPA Approved List';\n\n public isClaimSelected: boolean = false;\n\n public static ACCESS_AUDIT_MESSAGE = 'Accessed 340B Work Queue';\n \n public prescriptions: Array = [];\n public dataLoaded: boolean = false;\n public loadingStatus = true;\n public cancelLoadingBool = false;\n public resetFilter = false;\n public selectedPreset: IPrescriptionFilterPreset;\n public prescriptionDetail: IPrescriptionDetail;\n \n public gridApi: GridApi;\n public columnApi: ColumnApi;\n public selectedPatientInfo: any;\n readonly defaultColDef: ColDef = {\n resizable: true,\n headerCheckboxSelectionFilteredOnly: true,\n };\n readonly columnDefs = COLUMN_DEFS;\n\n b340StringConstants: B340StringConstants = new B340StringConstants();\n selectedExportOption = this.b340StringConstants.EXPORT_MENU_TITLE;\n\n public orgId: string = null;\n public tier: IHierarchyTier = null;\n public tier2_id: string = null;\n public rowCount: number = 10;\n public pageNo: number = 1;\n\n public redrawRowInterval: any;\n\n dateRangeLower: Date;\n dateRangeHigher: Date;\n\n public gridObject: any = null;\n\n authSubscription: Subscription;\n currentUser: any;\n\n currentRow;\n\n filterOptions: FilterOption[];\n isPatientFiltersOpen: boolean = false;\n filterByDateAndStatus: boolean = true;\n\n invoices: Array;\n selectedInvoice: IPrescriptionInvoice;\n\n contractInfo: IContractInfo;\n\n pharmacyNames: Array;\n\n public claimPanelStatus: number = 1;\n UIUpdates340BFeatureFlag: boolean;\n \n @Output() public gridApiEmitter: EventEmitter = new EventEmitter();\n @Output() public filterOptionsEmitter: EventEmitter = new EventEmitter();\n\n constructor(\n private _route: ActivatedRoute,\n private HierarchyTierService: HierarchyTierService,\n private PrescriptionService: PrescriptionService,\n private toastr: ToastrService,\n private router: Router,\n protected featureFlagService: FeatureFlagService,\n private authService: AuthService\n ) {\n super();\n this.gridApi = null;\n HierarchyTierService.currentTier$\n .pipe(takeUntil(this.killTrigger))\n .subscribe(async (tier) => {\n if (this.tier?.selectedTierId !== tier?.selectedTierId) {\n this.tier = tier;\n this.tier2_id = this.tier.selectedItem.tier2_ID;\n let getInvoices = this.getInvoices();\n let contractInfo = this.getContractInfo();\n let pharmacyNames = this.PrescriptionService.getPharmacyNames(this.tier.selectedItem.tier1_ID, this.tier.selectedItem.tier2_ID, null, null)\n\n await getInvoices;\n await contractInfo;\n this.pharmacyNames = await pharmacyNames;\n\n this.initializeFilter();\n }\n });\n this.UIUpdates340BFeatureFlag = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.UIUpdates340B)\n }\n\n async getContractInfo() {\n const tierId = this.tier.selectedItem.tier2_ID;\n this.PrescriptionService.getContractInfo(tierId).then(contractData => {\n this.contractInfo = contractData;\n });\n }\n\n ngOnInit(): void {\n this.authSubscription = this.authService.userInfo$.subscribe(\n (currentUser) => (this.currentUser = currentUser)\n );\n }\n\n ngOnDestroy(): void {\n this.authSubscription.unsubscribe();\n }\n\n allowSorting: boolean = false;\n onGridReady(param: any): void {\n this.gridApi = param.api;\n this.columnApi = param.columnApi;\n this.rowCount = this.gridApi.getDisplayedRowCount();\n this.pageNo = 1;\n\n this.setDefaultSortOrder();\n this.gridApiEmitter.emit(this.gridApi)\n this.allowSorting = true;\n }\n\n onFirstDataRendered(params: any): void {\n this.gridObject = params;\n this.dataLoaded = true;\n }\n\n public async filterChange(event: any) {}\n\n onFilterChanged(): void {}\n\n public togglePatientFilters(): void {\n this.isPatientFiltersOpen = !this.isPatientFiltersOpen;\n }\n\n removeRow() {\n const selectedData = this.gridApi.getSelectedRows();\n this.gridApi.applyTransaction({ remove: selectedData });\n }\n\n public async onRowClicked(event: any): Promise {\n this.selectedInvoice = event.data;\n\n this.PrescriptionService.setSelectedInvoicingClaimInfo({\n selectedPatientInfo: this.selectedInvoice,\n rowId: event.node.id,\n });\n\n this.currentRow = event;\n }\n\n exportSelectionChanged(e) {\n switch (e.target.value) {\n case this.b340StringConstants.EXPORT_INVOICE_DATA:\n this.exportExtendedClaimsData();\n break;\n default:\n break;\n }\n\n setTimeout(() => {\n this.selectedExportOption = this.b340StringConstants.EXPORT_MENU_TITLE;\n }, 0);\n }\n\n async exportExtendedClaimsData() {\n let tbl = document.createElement('table');\n let visibleNodes = this.buildVisibleClaimsNodeSet();\n \n let claimIds = this.buildClaimIdStrings(visibleNodes); \n\n this.prescriptions = await this.PrescriptionService.getClaimsForInvoice(claimIds.cmsClaimIds, claimIds.tpaClaimIds);\n let data = this.buildTableData();\n\n let filteredData = data.filter((item) => {\n for (let node of visibleNodes) {\n if (node.claimId === item.claimPk && node.claimType === item.claimType) {\n return true;\n }\n }\n return false;\n })\n .map(claimObj => {\n delete claimObj.claimPk;\n delete claimObj.claimType;\n claimObj.drugManufacturer = claimObj.drugManufacturer ?? '';\n return claimObj;\n });\n\n generateTable(tbl, filteredData);\n generateTableHead(tbl, filteredData[0]);\n\n const csv = toCsv(tbl);\n download(csv, 'download.csv');\n }\n\n buildClaimIdStrings(visibleNodes) {\n let cmsClaimIds = [];\n let tpaClaimIds = [];\n \n for (let node of visibleNodes) {\n if (node.claimType === 'CMS') {\n cmsClaimIds.push(node.claimId);\n } else if(node.claimType === 'TPA') {\n tpaClaimIds.push(node.claimId);\n }\n }\n\n return { cmsClaimIds: cmsClaimIds.join(','), tpaClaimIds: tpaClaimIds.join(',') };\n }\n\n async fetchPrescriptions(nodes: Set): Promise {\n let prescriptions = [];\n let prescriptionPromises = [];\n let approvedByPromises = [];\n let approvers = new Map();\n\n try {\n for (let node of nodes) {\n prescriptionPromises.push(this.PrescriptionService.getPrescriptionWithId(this.tier.selectedItem.tier2_ID, node.claimId, node.claimType));\n approvedByPromises.push(this.PrescriptionService.getPrescriptionHistoryDetailRecord(node.claimId, ClaimStatus.APPROVED));\n }\n for (let promise of approvedByPromises) {\n let resolved = await promise;\n\n if (!resolved) {\n continue;\n }\n\n approvers.set(resolved.coach340BClaimsID, resolved);\n }\n for (let promise of prescriptionPromises) {\n let prescription = await promise;\n \n // Non-participating prescription\n if (!prescription) {\n continue;\n }\n\n let approver = approvers.get(prescription.claimPk);\n\n if (!approver) {\n continue;\n }\n\n prescription.approvedBy = approver.claim_Status_Set_By;\n prescription.approvedOn = approver.claim_Status_Set_On_Date;\n prescriptions.push(prescription);\n }\n } catch (e) {\n this.toastr.error(`${e.status}: ${e.statusText}`, 'Error');\n }\n \n this.writeAccessAuditMessage(\n CarePrescriptionsInvoicingComponent.ACCESS_AUDIT_MESSAGE\n );\n \n return prescriptions;\n }\n\n buildVisibleClaimsNodeSet() {\n let pageCount = this.gridApi.paginationGetTotalPages();\n let originalPage = this.gridApi.paginationGetCurrentPage();\n this.gridApi.paginationGoToFirstPage();\n let nodes = [];\n for (let i = 0; i < pageCount; i++) {\n let currentPageNodes = this.gridApi.getRenderedNodes();\n nodes.push(currentPageNodes);\n this.gridApi.paginationGoToNextPage();\n }\n this.gridApi.paginationGoToPage(originalPage);\n let result = new Set(nodes.flat(1).map(node => {\n return {'claimId': node.data.claimId, 'claimType': node.data.claimType};\n }));\n return result;\n }\n\n buildTableData(): any {\n let prescriptions: any = this.prescriptions;\n let result = prescriptions.map(p => {\n const invoices: any = this.invoices;\n const relevantInvoice: any = invoices.find(invoice => invoice.claimId == p.coach340BClaimsID);\n const costAmount = relevantInvoice.costAmount;\n const caravanFee = relevantInvoice.caravanFee;\n const priceSpread = relevantInvoice.priceSpread;\n\n return {\n \"claimPk\": p.coach340BClaimsID,\n \"Tier2_ID\": p.tier2_ID,\n \"Tier2_Name\": p.tier2_Name,\n \"Bene_FullName\": `\"${p.benE_FullName}\"`,\n \"Bene DOB\": formatDateFourDigitYear(p.bene_dob),\n \"Prescription_Filled_Date\": formatDateFourDigitYear(p.prescriptionFilledDate),\n \"NDC\": `\"${p.ndc}\"`,\n \"Medication_Description\": `\"${p.medication_Description}\"`,\n \"Rx Number\": p.clPrescriptionServiceReference,\n \"Fill Number\": p.clPrescriptionFillNumber,\n \"Prescribing_Provider_NPI\": p.prescribing_Provider_NPI,\n \"Prescribing_Provider_Name\": `\"${p.prescribing_Provider_Name}\"`,\n \"Provider_Address\": `\"${p.ppBusinessPracticeLocation}\"`,\n \"Prescribing_Provider_Specialty\": `\"${p.prescribing_Provider_Specialty}\"`,\n \"Service_Pharmacy_NPI\": p.service_Pharmacy_NPI,\n \"Pharmacy_Org_Name\": `\"${p.pharmacy_Org_Name}\"`,\n \"Pharmacy_Address\": `\"${p.pharmacy_Address}\"`,\n \"Pharmacy_Other_Org_Name\": `\"${p.pharmacy_Other_Org_name}\"`,\n \"Pharmacy_Address_Other\": `\"${p.pharmacyOtherAddress || ''}\"`,\n \"Date_Initial_Fill\": formatDateFourDigitYear(p.date_Initial_Fill),\n \n \"Cost_Amount\": `$${costAmount.toFixed(2)}`,\n \"Caravan_Fee\": `$${caravanFee.toFixed(2)}`,\n \"Price_Spread\": `$${priceSpread.toFixed(2)}`,\n \n \"Approved_By\": p.approved_By ?? '',\n \"Approved_On\": p.approved_On ? formatDateFourDigitYear(p.approved_On) : '',\n \"claimType\": p.claimType,\n \"Claim Source\": relevantInvoice.claimType === \"CMS\" ? \"CMS\" : relevantInvoice.tpaName,\n \"drugManufacturer\": p.drugManufacturer,\n \"PendingDate\": p.pendingDate ? formatDate(p.pendingDate) : '',\n \"InvoicingDate\": p.invoicingDate ? formatDate(p.invoicingDate) : '',\n \"InvoicedDate\": p.invoicedDate ? formatDate(p.invoicedDate) : '',\n \"RejectedDate\": p.rejectedDate ? formatDate(p.rejectedDate) : '',\n \"RejectedNeedsCreditDate\": p.rejectedNeedsCreditDate ? formatDate(p.rejectedNeedsCreditDate) : '',\n \"CreditedDate\": p.creditedDate ? formatDate(p.creditedDate) : '',\n }\n });\n\n return result;\n }\n \n setDefaultSortOrder() {\n this.columnApi.applyColumnState({\n state: [\n {\n colId: 'status',\n sort: 'asc',\n sortIndex: 0,\n },\n ],\n defaultState: { sort: null },\n });\n }\n\n public cancelPrescriptionsLoadingProcess(): void {\n this.cancelLoadingBool = true;\n this.loadingStatus = false;\n this.resetFilter = true;\n let that = this;\n setTimeout(function () {\n that.resetFilter = false;\n }, 1000);\n }\n\n initializeFilter() {\n const { selectedItem } = this.tier;\n\n const filterOptions = [\n {\n headerLabel: 'Status',\n filterInstanceLabel: 'status',\n optionLabels: ['Pending', 'Invoicing', 'Invoiced', 'Rejected', 'Rejected Needs Credit', 'Credited'],\n // checkedByDefault: ['Pending', 'Invoicing'],\n checkedByDefault: [],\n dataMapper: null,\n customMonthLabelPresent: true,\n customMonthLabel: 'Month',\n filterByDateAndStatus: true,\n useRadioButtons: true,\n },\n {\n headerLabel: 'Contract Pharmacy',\n filterInstanceLabel: 'contractPharmacy',\n optionLabels: [...new Set(this.invoices.map(invoice => invoice.contractPharmacy))],\n checkedByDefault: ['All'],\n dataMapper: null,\n },\n {\n headerLabel: 'Claim Source',\n filterInstanceLabel: 'tpaName',\n checkedByDefault: ['All'],\n optionLabels: this.b340StringConstants.FILTER_SHARED_OPTION_LABELS_TPANAME,\n dataMapper: null,\n },\n ];\n\n this.filterOptions = filterOptions;\n this.filterOptionsEmitter.emit(this.filterOptions)\n\n this.loadingStatus = false;\n }\n\n markSelectedRowsAsProcessed() {\n if (this.onCanProcessClaims()) {\n const selectedData = this.gridApi.getSelectedRows();\n this.PrescriptionService.setClaimToProcessed(\n selectedData.map((claim) => claim.claimId)\n )\n .then(() => this.removeRow())\n }\n }\n\n onRowSelected() {\n const claims = this.gridApi.getSelectedNodes();\n if (\n claims.length > 0 &&\n claims.every((claim) => claim.data.status == ClaimStatus.APPROVED)\n ) {\n this.isClaimSelected = true;\n } else {\n this.isClaimSelected = false;\n }\n }\n\n onCanProcessClaims(): boolean {\n const selectedData = this.gridApi.getSelectedRows();\n return selectedData.every((claim) => claim.status == ClaimStatus.APPROVED);\n }\n\n markCurrentRowAsProcessed(id) {\n this.gridApi.forEachNode((rowNode, index) => {\n if (rowNode.data.claimPk === id) {\n rowNode.setSelected(true);\n } else {\n rowNode.setSelected(false);\n }\n });\n this.markSelectedRowsAsProcessed();\n }\n\n async getInvoices(): Promise {\n const { selectedItem } = this.tier;\n try {\n this.invoices = await this.PrescriptionService.getInvoices(\n selectedItem.tier1_ID,\n selectedItem.tier2_ID,\n selectedItem.tier3_ID,\n selectedItem.tier4_ID\n );\n } catch (e) {\n this.toastr.error(`${e.status}: ${e.statusText}`, 'Error');\n }\n }\n\n writeAccessAuditMessage(action: string) {\n const dateRange = this.getFilterDateRange();\n\n setTimeout(async () => {\n this.PrescriptionService.writeAuditMessage({\n entityid: parseInt(this.currentUser.dnn_id),\n moduleid: 2, // care\n componentid: 36,\n actionid: 6, // phi access\n tablename: 'Coach340BClaims',\n auditdesc: `User ID ${this.currentUser.dnn_id} ${action} for date range ${dateRange}`,\n applicationID: 2,\n });\n }, 0);\n }\n\n getFilterDateRange() {\n return `${this.dateRangeLower?.toLocaleDateString() ?? 'All'} - ${\n this.dateRangeHigher?.toLocaleDateString() ?? 'All'\n }`;\n }\n\n async getPrescriptionDetail(claimId: number): Promise {\n try {\n this.prescriptionDetail =\n await this.PrescriptionService.getPrescriptionDetail(\n this.selectedPatientInfo.claimPk,\n this.selectedPatientInfo.acoId,\n this.selectedPatientInfo.tier2_id,\n this.selectedPatientInfo.tier3_id,\n this.selectedPatientInfo.tier4_grpId,\n claimId,\n this.currentUser.dnn_id,\n this.selectedPatientInfo\n );\n } catch (e) {\n this.toastr.error(`${e.status}: ${e.statusText}`, `Error`);\n }\n }\n\n onSaveInvoice(e: boolean) {\n this.gridApi.refreshCells();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PatientEngagement } from '@shared/enums';\nimport { CareComponentConstants, CarePatientItem, PresetCategory } from '@shared/models/module-constants';\nimport { IPatientFilterPreset, IPatientFilterPresetGroup } from '@shared/models/patient-filters';\nimport { AgGridLocalSettingsService } from '@shared/services/ag-grid/ag-grid.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { CareFeatureConstants } from \"@shared/models/module-constants\";\nimport { Assignment } from '@shared/enums/assignment.enum';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PresetSettingsService {\n\n private selectedPreset = new BehaviorSubject(null);\n public selectedPreset$ = this.selectedPreset.asObservable();\n private facesheetCategory = PresetCategory.Facesheet;\n private allPatientsPresetName = CarePatientItem.AllPatients;\n private isCombinedSMSCohortsEnabled = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CombineSMSCohorts);\n\n constructor(private agGridLocalSettingsService: AgGridLocalSettingsService, private featureFlagService: FeatureFlagService) { }\n\n // REVIEW I'm not sure this belongs in this service, I feel the current preset is something the presentation\n // component (in this case care-patients-filters.component.ts) owns. I feel this service could have two jobs\n // (1) building the preset list from static & dynamically retrieved values and\n // (2) saving and restoring the filter settings for a particular preset\n public async selectPreset(preset: IPatientFilterPreset): Promise {\n const currentName = this.selectedPreset?.value?.name ?? null;\n if (preset.name !== currentName) {\n const filterSettings = await this.agGridLocalSettingsService.getStoredFilterSettingsFromLocalStorage(preset.category, preset.keyForFilterSettingsInLocalStorage || preset.name, null, preset.origin ? preset.origin : preset.keyForFilterSettingsInLocalStorage || preset.name);\n if (filterSettings) {\n preset.filterSettings = filterSettings;\n }\n\n this.selectedPreset.next(preset);\n }\n }\n\n public getPresetGroups(): IPatientFilterPresetGroup[] {\n return [\n {\n category: PresetCategory.General,\n hideGroup: true,\n presets: [\n {\n category: PresetCategory.General,\n name: this.allPatientsPresetName,\n label: this.allPatientsPresetName,\n filters: [],\n componentId: CareComponentConstants.PatientList,\n hidePreset: true,\n filterComponent: null,\n filterSettings: null,\n dontStoreName: true,\n columns: [\n { select: true },\n { fullName: true },\n { mbi: true },\n { dob_age: true },\n { gender: true },\n { assignment: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { attributedCP: true },\n { awvTypeDue: true },\n { lastAWVDate: true },\n { lastClaimAWVDate: true },\n { lastAWVProvider: true },\n { lastClaimAWVProvider: true },\n { ihAwvPatient: true },\n { lastCCMDateAndCode: true },\n { raF_YTD: true },\n { pyRaf: true },\n { openRAFWt: true },\n { lastVisit: true },\n { attributedPractice: true },\n { totalCost: true },\n { edVisits: true },\n { officeVisits: true },\n { inpatientVisits: true },\n { enrollmentType: true },\n { phoneNumber: true },\n { dodBoolean: true },\n ]\n },\n ],\n },\n {\n category: this.facesheetCategory,\n hideGroup: true,\n presets: [\n {\n category: this.facesheetCategory,\n name: CarePatientItem.FacesheetSchedule,\n label: 'Facesheet Schedule',\n filters: [],\n componentId: CareComponentConstants.HccFacesheetBySchedule,\n hidePreset: true,\n /**\n TODO:\n move this preset columnDefs into care-patients component.\n Currently, FacesheetScheduleGridComponent ignores this list\n */\n columns: [{ status: true },\n { appointmentDate: true },\n { appointmentTime: true },\n { clinicianName: true },\n { patientName: true },\n { patientId: true },\n { dob: true },\n { mbi: true },\n { assignment: true },\n { attributedCP: true },\n { appointmentInfo: true },\n { locationId: true },\n { currentRiskLevel: true },\n { predictedRiskLevel: environment.displayRiskLevel }],\n }\n ]\n },\n {\n category: PresetCategory.Cohorts,\n hideGroup: true,\n presets: [\n {\n category: PresetCategory.Cohorts,\n name: CarePatientItem.AwvOpportunities,\n label: 'AWV Opportunities',\n filters: [],\n componentId: CareComponentConstants.PatientDiseaseCohorts,\n hidePreset: true,\n dontStoreName: true,\n patientSidebar: true,\n patientUrlQueryParams: { tab: 'Worklist Details', subtab: 'AWV Opportunities' },\n columns: [\n { select: true },\n { fullName: true },\n { mbi: true },\n { dob_age: true },\n { gender: true },\n { assignment: true },\n { predictedRiskLevel: environment.displayRiskLevel, sort: 'desc' },\n { attributedCP: true },\n { awvTypeDue: true },\n { statusDate: true },\n { lastAWVDate: true },\n { lastAWVProvider: true },\n { ihAwvPatient: true },\n { lastCCMDateAndCode: true },\n { openRAFWt: true },\n { lastVisit: true },\n { attributedPractice: true },\n { totalCost: true },\n { edVisits: true },\n { officeVisits: true },\n { inpatientVisits: true },\n { enrollmentType: true },\n { phoneNumber: true },\n ],\n defaultFilterModel: {\n assignment: {\n filterType: 'set',\n values: [Assignment.Attributed]\n },\n statusDate: {\n filterType: 'set',\n values: [null]\n }\n },\n\n },\n {\n category: PresetCategory.Cohorts,\n name: CarePatientItem.EdUtilization,\n label: 'ED Utilization',\n filters: [],\n componentId: CareComponentConstants.EdUtilizationWorklist,\n hidePreset: true,\n columns: [\n { select: true },\n { patientName: true },\n { dob: true },\n { gender: true },\n { assignment: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { pyRaf: true },\n { mbi: true },\n { attributedCP: true },\n { lastVisit: true },\n { totalCost: true },\n { edVisits: true },\n { openRAFWt: true },\n { attributedPractice: true },\n { phoneNumber: true },\n { awvTypeDue: true },\n { lastAWVDate: true },\n ],\n apiParams: { track: { TopCount: \"20\", OrderBy: 'openRAFWt', IncludeDeceased: 'false' } }\n },\n {\n category: PresetCategory.Cohorts,\n name: CarePatientItem.CareManagementAllProgram,\n label: 'Care Management',\n filters: [],\n componentId: CareComponentConstants.CareManagement,\n hidePreset: true,\n filterComponent: null,\n filterSettings: null,\n listDefinition: 'Target your patients for care management and clinical programs',\n columns: [\n { select: true },\n { mbi: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { lastCCMDateAndCode: true },\n { ccmEligible: true },\n { lastVisit: true },\n { officeVisits: true },\n { edVisits: true },\n { inpatientVisits: true },\n { ssDenom: true },\n { pyRaf: true },\n { openRAFWt: true },\n { totalSpend: true },\n { hccGapCount: true },\n { awvTypeDue: true },\n { lastAWVDate: true },\n { attributedPractice: true },\n { enrollmentType: true },\n { ssPercent: true },\n { attributedPractice: true },\n ],\n hiddenColumnsByDefault: [\n 'raF_YTD',\n 'pyRaf',\n 'openRAFWt',\n 'totalSpend',\n 'hccGapCount',\n 'awvTypeDue',\n 'lastAWVDate',\n 'attributedPractice',\n 'enrollmentType',\n 'attributedPractice'\n ],\n defaultFilterModel: {\n ssPercent: {\n filterType: 'number',\n type: 'lessThanOrEqual',\n filter: 15,\n }\n },\n },\n ],\n },\n // {\n // category: 'Clinical programs',\n // hideGroup: true,\n // presets: [\n // {\n // category: 'Clinical programs',\n // name: 'Heart Failure',\n // label: 'Heart Failure',\n // diseaseCohortNameFromTrackApi: 'Heart Failure Clinical Program',\n // filters: [],\n // componentId: CareComponentConstants.PatientDiseaseCohorts,\n // hidePreset: true,\n // settingsName: 'Clinical_programs-Heart_Failure',\n // columns: [\n // { select: true },\n // { fullName: true },\n // { attributedCP: true },\n // { dob_age: true },\n // { gender: true },\n // { current_MBI: true },\n // { predictedRiskLevel: environment.displayRiskLevel },\n // { echoProcedure_LastDate: true },\n // { cardiologistProcedure_LastProviderName: true },\n // { cardiologistProcedure_LastDate: true },\n // { hfDxCount: true },\n // { lastCCMDateAndCode: true },\n // { isMostImpactable: true },\n // { lastVisit: true },\n // { edVisits: true },\n // { officeVisits: true },\n // { inpatientVisits: true },\n // { totalSpend: true },\n // { openRAFWt: true },\n // { attributedPractice: true },\n // { awvTypeDue: true },\n // { lastAWVDate: true },\n // { pyRaf: true },\n // { phone1: true },\n // { phone2: true },\n // ],\n // hiddenColumnsByDefault: [ // https://caravanhealth.atlassian.net/browse/CC-3535\n // 'attributedPractice',\n // 'pyRaf',\n // 'raF_YTD',\n // 'openRAFWt',\n // 'awvTypeDue',\n // 'lastAWVDate',\n // 'ccmEligible',\n // 'diseaseCohorts',\n // 'phone1',\n // 'phone2',\n // 'current_MBI',\n // 'hccGapCount',\n // 'totalSpend'\n // ],\n // defaultFilterModel: {\n // isMostImpactable: {\n // filterType: 'set',\n // values: ['Yes']\n // }\n // },\n // },\n // {\n // category: 'Clinical programs',\n // name: 'COPD',\n // label: 'COPD',\n // filters: [],\n // diseaseCohortNameFromTrackApi: 'COPD Clinical Program',\n // componentId: CareComponentConstants.PatientDiseaseCohorts,\n // hidePreset: true,\n // settingsName: 'Clinical_programs-COPD',\n // columns: [\n // { select: true },\n // { fullName: true },\n // { attributedCP: true },\n // { dob_age: true },\n // { gender: true },\n // { current_MBI: true },\n // { predictedRiskLevel: environment.displayRiskLevel },\n // { spirometryProcedure_LastDate: true },\n // { pulmonologistProcedure_LastProviderName: true },\n // { pulmonologistProcedure_LastDate: true },\n // { copdDxCount: true },\n // { lastCCMDateAndCode: true },\n // { isMostImpactable: true },\n // { lastVisit: true },\n // { edVisits: true },\n // { officeVisits: true },\n // { inpatientVisits: true },\n // { totalSpend: true },\n // { openRAFWt: true },\n // { attributedPractice: true },\n // { awvTypeDue: true },\n // { lastAWVDate: true },\n // { pyRaf: true },\n // { phone1: true },\n // { phone2: true },\n // ],\n // hiddenColumnsByDefault: [ // https://caravanhealth.atlassian.net/browse/CC-3535\n // 'attributedPractice',\n // 'pyRaf',\n // 'raF_YTD',\n // 'openRAFWt',\n // 'awvTypeDue',\n // 'lastAWVDate',\n // 'ccmEligible',\n // 'diseaseCohorts',\n // 'phone1',\n // 'phone2',\n // 'current_MBI',\n // 'hccGapCount',\n // 'totalSpend'\n // ],\n // defaultFilterModel: {\n // isMostImpactable: {\n // filterType: 'set',\n // values: ['Yes']\n // }\n // },\n // },\n // {\n // category: 'Clinical programs',\n // name: 'Hypertension',\n // label: 'Hypertension',\n // filters: [],\n // componentId: CareComponentConstants.PatientDiseaseCohorts,\n // hidePreset: true,\n // columns: [{ select: true },\n // { fullName: true },\n // { current_MBI: true },\n // { attributedCP: true },\n // { dob_age: true },\n // { gender: true },\n // { assignment: true },\n // { predictedRiskLevel: environment.displayRiskLevel, sort: 'desc' },\n // { totalSpend: true },\n // { openRAFWt: true },\n // { lastVisit: true },\n // { attributedPractice: true },\n // { awvTypeDue: true },\n // { lastAWVDate: true },\n // { edVisits: true },\n // { pyRaf: true },\n // ],\n // defaultFilterModel: {\n // predictedRiskLevel: {\n // filterType: 'set',\n // values: ['High']\n // }\n // },\n // },\n // ]\n // },\n {\n category: PresetCategory.Worklists,\n hideGroup: true,\n presets: [\n {\n category: PresetCategory.Worklists,\n name: CarePatientItem.AwvSchedule,\n label: 'In Home AWV Schedule',\n filters: [],\n componentId: CareComponentConstants.IHESchedule,\n hidePreset: true,\n filterSettings: null,\n listDefinition: 'View patient status in the In-Home Annual Wellness Visit program',\n columns: [\n { select: true },\n { mbi: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { phoneNumber: true },\n { address: true },\n { scheduleStatus: true },\n { schedulingDescription: true },\n { callDate: true },\n { dateOfService: true },\n { assignment: true },\n { renderingProvider: true },\n { attributedPractice: true },\n { attributedCP: true },\n { hccGapCount: true },\n { predictedRiskLevel: true },\n { lastAWVDate: true },\n { lastCCMDate: true },\n { ccmEligible: true },\n { lastVisit: true },\n { diseaseCohorts: true },\n { totalCost: true },\n { edVisits: true },\n { openRAFWt: true },\n { raF_YTD: true },\n ]\n },\n {\n category: PresetCategory.Worklists,\n name: CarePatientItem.AwvFiles,\n label: 'In Home AWV Files',\n filters: [],\n componentId: CareComponentConstants.IHECohort,\n hidePreset: true,\n dontStoreName: true,\n patientSidebar: true,\n filterSettings: null,\n listDefinition: 'Download files from In-Home Annual Wellness Visit',\n columns: [\n { select: true },\n { current_MBI: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { IHEAWVVisitDate: true },\n { IHEfileActions: true },\n { IHEDownloadDate: true },\n { IHEDownloadStatus: true },\n { assignment: true },\n { attributedPractice: true },\n { attributedCP: true },\n { renderingProviderName: true },\n ],\n patientUrlQueryParams: { tab: 'Worklist Details', subtab: 'In Home AWV Files' },\n defaultFilterModel: {\n IHEDownloadStatus: {\n filterType: 'set',\n values: ['New', 'Partial']\n }\n },\n },\n {\n category: PresetCategory.Worklists,\n name: CarePatientItem.AwvBilling,\n label: 'In-Home AWV Billing',\n filters: [],\n componentId: CareComponentConstants.IHEBilling,\n hidePreset: true,\n filterSettings: null,\n columns: [\n { select: true },\n { mbi: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { phoneNumber: true },\n { address: true },\n { IHEAWVVisitDate: true },\n { cptCode: true },\n { claimFrequencyCode: true },\n { IHEAWVBatchDate: true },\n { iheDxCount: true },\n { renderingProvider: true },\n { attributedPractice: true },\n { attributedCP: true },\n ],\n patientUrlQueryParams: { tab: 'Worklist Details' },\n },\n {\n category: PresetCategory.Worklists,\n name: CarePatientItem.PacNavigatorProgram,\n label: 'PAC Navigator Program',\n filters: [],\n componentId: CareComponentConstants.PACNavigatorProgram,\n hidePreset: true,\n dontStoreName: true,\n columns: [\n { select: true },\n { fullName: true },\n { dob: true },\n { mbi: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { attributedCP: true },\n { snfName: true },\n { snfAdmittedAt: true },\n { snfDischargedAt: true },\n { snfStatus: true },\n { snfFlagsList: true },\n { assignment: true },\n { gender: true },\n { attributedPractice: true },\n { lastAWVDate: true },\n { lastAWVProvider: true },\n { ihAwvPatient: true },\n { hccGapCount: true },\n { openRAFWt: true },\n { pyRaf: true },\n { lastCCMDate: true },\n { edVisits: true },\n { inpatientVisits: true },\n { officeVisits: true },\n { lastVisit: true },\n { enrollmentType: true },\n ],\n patientSidebar: true,\n patientUrlQueryParams: { tab: 'Worklist Details', subtab: 'PAC Navigator Program' },\n defaultFilterModel: {\n snfStatus: {\n filterType: 'set',\n values: ['Admitted', 'Discharged']\n }\n },\n requiredPatientFields: ['snfStatus'],\n }, {\n category: PresetCategory.Worklists,\n name: CarePatientItem.SmsOutreachProgram,\n label: 'SMS Outreach Program',\n filters: [],\n componentId: PatientEngagement.PatientTwilioSMS,\n hidePreset: true,\n dontStoreName: true,\n columns: [\n { select: true },\n { mbi: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { actions: this.isCombinedSMSCohortsEnabled },\n { lastResponse: true },\n { lastResponseDate: true },\n { enrollmentDate: true },\n { status: true },\n { professionalName: this.isCombinedSMSCohortsEnabled },\n { lastCCMDate: this.isCombinedSMSCohortsEnabled },\n { ccmLastProcCode: this.isCombinedSMSCohortsEnabled },\n { phoneNumber: true },\n { attributedPractice: true },\n { lastVisit: true },\n { lastAWVDate: true },\n { diseaseCohorts: true },\n { openRAFWt: true },\n { raF_YTD: true },\n { hccGapCount: true },\n { ccmEligible: this.isCombinedSMSCohortsEnabled },\n { assignment:this.isCombinedSMSCohortsEnabled },\n ],\n hiddenColumnsByDefault: this.isCombinedSMSCohortsEnabled ?\n [\n 'lastAWVDate',\n 'ccmEligible',\n 'diseaseCohorts',\n 'openRAFWt',\n 'raF_YTD',\n 'hccGapCount',\n 'assignment'\n ] : [] ,\n defaultFilterModel: {\n status: {\n filterType: 'set',\n values: ['Active']\n }\n },\n // patientsDataExtender: async (patients: PatientViewModel[]): Promise => {\n // let tasks = await this._orgService.getTasksByOrg(this.orgId, 'twilioStudioFlow');\n // let completions = await this._orgService.getCompletionsByOrg(this.orgId, 'twilioStudioFlow');\n // let patientDataById = {};\n // tasks?.forEach(task => {\n // if (!patientDataById[task.userId]) {\n // patientDataById[task.userId] = {};\n // };\n // patientDataById[task.userId].status = task.isActive;\n // });\n // completions?.forEach(completion => {\n // if (completion.event?.msg && completion.event?.event != 'undeliverable') {\n // if (!patientDataById[completion.userId]) {\n // patientDataById[completion.userId] = {};\n // };\n // patientDataById[completion.userId].lastResponseDate = completion.event?.time || '';\n // patientDataById[completion.userId].lastResponse = completion.event?.event == 'undeliverable' ? 'Undeliverable' : completion.event?.msg;\n // }\n // });\n // let filteredPatients: PatientViewModel[] = [];\n // patients?.forEach(patient => {\n // if (patientDataById[patient?.carePatient?._id]) {\n // patient.status = patientDataById[patient.carePatient._id].status ? \"Active\" : \"Inactive\";\n // patient.lastResponseDate = patientDataById[patient.carePatient._id].lastResponseDate;\n // patient.lastResponse = patientDataById[patient.carePatient._id].lastResponse;\n // if (patient.carePatient?.identifiers?.find(identifier => identifier.issuer == \"https://identity.caravanhealth.com/smscareplanphonenumber\")) {\n // patient.enrollmentDate = patient.carePatient?.identifiers?.find(identifier => identifier.issuer == \"https://identity.caravanhealth.com/smscareplanphonenumber\")?.createdAt;\n // };\n // filteredPatients.push(patient);\n // };\n // });\n // return filteredPatients;\n // }\n },\n ]\n },\n // {\n // category: 'CHRONIC CONDITIONS',\n // hideGroup: true,\n // presets: [\n // {\n // category: 'CHRONIC CONDITIONS',\n // name: 'CHF',\n // label: 'CHF',\n // diseaseCohortNameFromTrackApi: 'Heart Failure',\n // filters: [],\n // componentId: CareComponentConstants.PatientDiseaseCohorts,\n // hidePreset: true,\n // columns: [\n // { select: true },\n // { fullName: true },\n // { current_MBI: true },\n // { attributedCP: true },\n // { phone1: true },\n // { phone2: true },\n // { dob_age: true },\n // { gender: true },\n // { assignment: true },\n // { predictedRiskLevel: environment.displayRiskLevel },\n // { actions: true },\n // { totalSpend: true },\n // { openRAFWt: true },\n // { lastVisit: true },\n // { attributedPractice: true },\n // { awvTypeDue: true },\n // { lastAWVDate: true },\n // { edVisits: true },\n // { pyRaf: true },\n // ],\n // },\n // {\n // category: 'CHRONIC CONDITIONS',\n // name: 'COPD',\n // label: 'COPD',\n // filters: [],\n // componentId: CareComponentConstants.PatientDiseaseCohorts,\n // hidePreset: true,\n // columns: [{ select: true },\n // { fullName: true },\n // { current_MBI: true },\n // { attributedCP: true },\n // { phone1: true },\n // { phone2: true },\n // { dob_age: true },\n // { gender: true },\n // { assignment: true },\n // { predictedRiskLevel: environment.displayRiskLevel },\n // { totalSpend: true },\n // { openRAFWt: true },\n // { lastVisit: true },\n // { attributedPractice: true },\n // { awvTypeDue: true },\n // { lastAWVDate: true },\n // { edVisits: true },\n // { pyRaf: true },\n // ],\n // },\n // {\n // category: 'CHRONIC CONDITIONS',\n // name: 'Diabetes',\n // label: 'Diabetes',\n // filters: [],\n // componentId: CareComponentConstants.PatientDiseaseCohorts,\n // hidePreset: true,\n // columns: [{ select: true },\n // { fullName: true },\n // { current_MBI: true },\n // { attributedCP: true },\n // { phone1: true },\n // { phone2: true },\n // { dob_age: true },\n // { gender: true },\n // { assignment: true },\n // { predictedRiskLevel: environment.displayRiskLevel },\n // { totalSpend: true },\n // { openRAFWt: true },\n // { lastVisit: true },\n // { attributedPractice: true },\n // { awvTypeDue: true },\n // { lastAWVDate: true },\n // { edVisits: true },\n // { pyRaf: true },\n // ],\n // }\n // ],\n // }\n ];\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { AG_GRID_LOCALE_CARE } from '@shared/services/ag-grid/ag-grid.service';\nimport { ColDef } from 'ag-grid-community';\nimport { PresetSettingsService } from '../preset-settings.service';\n\n@Component({\n selector: 'coach-care-patients-grid',\n templateUrl: './care-patients-grid.component.html',\n styleUrls: ['./care-patients-grid.component.scss']\n})\nexport class CarePatientsGridComponent implements OnInit {\n\n selectedPreset: IPatientFilterPreset;\n AG_GRID_LOCALE_CARE: { [key: string]: string } = AG_GRID_LOCALE_CARE;\n\n constructor(private presetSettingsService: PresetSettingsService) { }\n\n ngOnInit(): void {\n this.presetSettingsService.selectedPreset$.subscribe(preset => {\n this.selectedPreset = preset;\n });\n }\n\n}\n","

{{selectedPreset?.name}}

\n","\n
\n
\n
Patient Lists
\n
\n
\n
\n
\n
\n
\n \n \n
{{presetGroup.category}}
\n
\n \n
\n
\n
\n
{{preset.label}}
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { CarePatientItem } from '@shared/models/module-constants';\nimport { IPatientFilterPreset, IPatientFilterPresetGroup } from '@shared/models/patient-filters';\nimport { FilterSettings } from '@shared/services/ag-grid/ag-grid.service';\nimport { PresetSettingsService } from '../preset-settings.service';\n\n@Component({\n selector: 'coach-care-patients-filters-2',\n templateUrl: './care-patients-filters.component.html',\n styleUrls: ['./care-patients-filters.component.scss']\n})\nexport class CarePatientsFiltersComponent implements OnInit {\n\n isPatientFiltersOpen = true;\n allPresetGroups: IPatientFilterPresetGroup[] = [];\n\n selectedPresetSettings: FilterSettings;\n selectedPreset: IPatientFilterPreset;\n loadingStatus: boolean;\n\n constructor(\n private presetSettingsService: PresetSettingsService,\n private router: Router,\n private activatedRoute: ActivatedRoute) { }\n\n ngOnInit(): void {\n this.allPresetGroups = this.presetSettingsService.getPresetGroups();\n\n this.presetSettingsService.selectedPreset$.subscribe(preset => {\n this.selectedPreset = preset;\n });\n\n const requestedPreset = this.activatedRoute.snapshot.queryParams['filterPreset'];\n this.selectPresetByName(requestedPreset);\n }\n\n public togglePatientFilters(): void {\n this.isPatientFiltersOpen = !this.isPatientFiltersOpen;\n }\n\n public isActivePreset(preset: IPatientFilterPreset): boolean {\n return this.selectedPreset && (preset.name == this.selectedPreset.name || (preset.label === 'Care Management' && this.selectedPreset.label === preset.label));\n }\n\n public async selectPreset(preset: IPatientFilterPreset): Promise {\n this.presetSettingsService.selectPreset(preset);\n\n const queryParams: Params = { filterPreset: preset.name };\n\n this.router.navigate([],\n {\n relativeTo: this.activatedRoute,\n queryParams: queryParams,\n queryParamsHandling: 'merge',\n });\n }\n\n private selectPresetByName(presetName: string): void {\n let preset = this.findPresetByName(presetName);\n\n if (!preset) {\n preset = this.findPresetByName(CarePatientItem.AwvOpportunities);\n }\n\n if (preset) {\n this.selectPreset(preset);\n }\n }\n\n private findPresetByName(presetName: string): IPatientFilterPreset {\n return this.allPresetGroups\n .flatMap(presetGroup => presetGroup.presets)\n .find(p => p.name === presetName);\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'coach-care-patients-container',\n templateUrl: './care-patients-container.component.html',\n styleUrls: ['./care-patients-container.component.scss']\n})\nexport class CarePatientsContainerComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n \n \n
","export const SummaryTileOrder = [\n 'Annual Wellness Visits',\n 'Chronic Conditions',\n 'Post-Acute Care',\n 'General',\n '340B Prescriptions'\n];\n","import { CareComponentConstants, CareFeatureConstants, CarePatientItem } from '@shared/models/module-constants';\nimport { SummaryTile } from './summary-title.model';\nimport { AwvWorkflowStatusForPatientListDisplay } from '@shared/models/patient';\nimport { PatientEngagement } from '@shared/enums';\n\nexport const SUMMARY_TILES: SummaryTile[] = [\n {\n title: 'Annual Wellness Visits',\n description:\n 'Annual Wellness cohorts can be used to develop targeted approaches to scheduling and tracking annual wellness visits in the platform. Facesheet schedule and Top 50 are great resources for pre-visit planning to get the most out of annual wellness visits.',\n\n imagePath:\n 'assets/img/sh-platform-care-sum-illustrations/SH_PEP_Illustrations_Care_Sum_AnnualWellnessVisit_1700x1100_20230526.svg',\n tileItems: [\n {\n linkText: 'AWV Opportunities',\n filterPreset: CarePatientItem.AwvOpportunities,\n filterTitle: 'AWV Opportunities',\n awvPatientsStatus: AwvWorkflowStatusForPatientListDisplay.AllPatients,\n subLinks: [\n {\n linkText: 'Ready to Schedule',\n filterPreset: CarePatientItem.AwvOpportunities,\n filterTitle: 'AWV Opportunities',\n componentId:CareComponentConstants.AwvPatientsWorklist,\n awvPatientsStatus: AwvWorkflowStatusForPatientListDisplay.ReadyToSchedule\n },\n {\n linkText: 'Ready to Remind',\n filterPreset: CarePatientItem.AwvOpportunities,\n filterTitle: 'AWV Opportunities',\n componentId:CareComponentConstants.AwvPatientsWorklist,\n awvPatientsStatus: AwvWorkflowStatusForPatientListDisplay.ReadyToRemind\n },\n {\n linkText: 'Ready to Self-Report',\n filterPreset: CarePatientItem.AwvOpportunities,\n filterTitle: 'AWV Opportunities',\n componentId:CareComponentConstants.AwvPatientsWorklist,\n awvPatientsStatus: AwvWorkflowStatusForPatientListDisplay.ReadyToSelfReport\n }\n ]\n },\n {\n linkText: 'In Home AWV Schedule',\n filterPreset: CarePatientItem.AwvSchedule,\n componentId: CareComponentConstants.IHESchedule,\n featureFlag: CareFeatureConstants.InHomeAWVScheduleList,\n filterTitle: 'In Home AWV Schedule'\n },\n {\n linkText: 'In Home AWV Files',\n filterPreset: CarePatientItem.AwvFiles,\n componentId: CareComponentConstants.IHECohort,\n featureFlag: CareFeatureConstants.IHECohort,\n filterTitle: 'In Home AWV Files'\n },\n {\n linkText: 'Facesheet Schedule',\n filterPreset: CarePatientItem.FacesheetSchedule,\n componentId: CareComponentConstants.HccFacesheetBySchedule,\n filterTitle: 'Facesheet Schedule'\n },\n {\n linkText: 'Top 50',\n filterPreset: CarePatientItem.HccTop50,\n filterTitle: 'TOP 50'\n }\n ]\n },\n {\n title: 'Chronic Conditions',\n description:\n 'Streamline your workflows for identifying your most vulnerable patients for care management services and disease management clinical programs that lead to more healthy days at home.',\n imagePath:\n 'assets/img/sh-platform-care-sum-illustrations/SH_PEP_Illustrations_Care_Sum_ChronicConditions_1700x1100_20230526.svg',\n\n tileItems: [\n {\n linkText: 'Care Management',\n filterPreset: CarePatientItem.CareManagementAllProgram,\n filterTitle: 'Care Management',\n subLinks: [\n {\n linkText: 'Heart Failure',\n filterPreset: CarePatientItem.CareManagementHeartFailure,\n filterTitle: 'Care Management Heart Failure'\n },\n {\n linkText: 'COPD',\n filterPreset: CarePatientItem.CareManagementCopd,\n filterTitle: 'Care Management COPD'\n },\n {\n linkText: 'Hypertension',\n filterPreset: CarePatientItem.CareManagementHypertension,\n filterTitle: 'Care Management Hypertension'\n }\n ]\n },\n {\n linkText: 'SMS Outreach Program',\n filterPreset: CarePatientItem.SmsOutreachProgram,\n componentId: PatientEngagement.PatientTwilioSMS,\n featureFlag: CareFeatureConstants.SMSOutreachProgram,\n filterTitle: 'SMS Outreach Program'\n }\n ]\n },\n {\n title: 'Post-Acute Care',\n description:\n 'The Post-Acute Care Navigator Program is the first step in helping health systems manage quality, cost and utilization of their patients during their post-acute journey.',\n imagePath:\n 'assets/img/sh-platform-care-sum-illustrations/SH_PEP_Illustrations_Care_Sum_PostAcuteCare_1700x1100_20230526.svg',\n tileItems: [\n {\n linkText: 'PAC Navigator Program',\n filterPreset: CarePatientItem.PacNavigatorProgram,\n filterTitle: 'PAC Navigator Program'\n }\n ]\n },\n {\n title: 'General',\n description:\n 'The All Patient List provides a view of your entire traditional Medicare population. By using the All Patients list, you can create and save your own custom list using the advanced filter tray and column settings.',\n imagePath:\n 'assets/img/sh-platform-care-sum-illustrations/SH_PEP_Illustrations_Care_Sum_Administrative_1700x1100_20230526.svg',\n tileItems: [\n {\n linkText: 'All Patients',\n filterPreset: CarePatientItem.AllPatients,\n filterTitle: 'All Patients'\n }\n ]\n },\n {\n title: '340B Prescriptions',\n featureFlag: CareFeatureConstants.FeatureFlag340B,\n featureId: CareFeatureConstants.CarePrescriptionFeature,\n description:\n 'Our referral prescription compliance program uncovers hidden opportunities to double the number of profitable contract pharmacies and eligible prescriptions.',\n imagePath:\n 'assets/img/sh-platform-care-sum-illustrations/SH_PEP_Illustrations_Care_Sum_Prescriptions_1700x1100_20230526.svg',\n tileItems: [\n {\n linkText: '340B Prescriptions',\n path: '../care/allPrescriptions',\n filterPreset: null,\n filterTitle: null\n }\n ]\n }\n];\n","import { Directive, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject, combineLatest } from 'rxjs';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\n\n@Directive({\n selector: '[hasFeatureFlagDefined]'\n})\nexport class HasFeatureFlagDefinedDirective implements OnInit, OnDestroy {\n @Input()\n set hasFeatureFlagDefined(value: string) {\n this.featureFlag = value;\n }\n\n @Input()\n set hasFeatureFlagDefinedFeatureId(value: number) {\n this.featureId = value;\n }\n\n @Input()\n set hasFeatureFlagDefinedComponentId(value: number) {\n this.componentId = value;\n }\n\n private featureFlag: string;\n private featureId: number;\n private componentId: number;\n private destroy$ = new Subject();\n private hasView = false;\n\n constructor(\n private templateRef: TemplateRef,\n private viewContainer: ViewContainerRef,\n private featureFlagService: FeatureFlagService,\n private userAccessService: UserAccessService\n ) {}\n\n ngOnInit(): void {\n combineLatest([this.featureFlagService.featureFlags$, this.userAccessService.currentAccess$])\n .pipe(takeUntil(this.destroy$))\n .subscribe(([featureFlags, currentAccess]) => {\n if (this.featureFlag && !this.featureFlagService.hasFeatureFlag(this.featureFlag)) {\n this.viewContainer.clear();\n this.hasView = false;\n return;\n } else if (\n this.featureId &&\n !this.userAccessService.currentAccess$.value.modules.some(m =>\n m.features.some(f => f.featureId === this.featureId)\n )\n ) {\n this.viewContainer.clear();\n this.hasView = false;\n return;\n } else if (this.componentId && !this.userAccessService.hasComponent(currentAccess, this.componentId)) {\n this.viewContainer.clear();\n this.hasView = false;\n return;\n }\n \n if (!this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","
\n
\n
\n
{{ summaryTile.title }}
\n
\n
\n
\n \n

\n {{ summaryTile.description }}\n

\n \n
\n
\n","import { Component, Input } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { SummaryTile, SummaryTileItem } from '@models/summary';\nimport { LinkClickedEventsService } from '@shared/services/mixpanel/events/link-clicked-events.service';\n\n@Component({\n selector: 'coach-care-summary-tile',\n templateUrl: './care-summary-tile.component.html',\n host: {\n class: 'coach-care-summary-tile'\n }\n})\nexport class CareSummaryTileComponent {\n @Input()\n summaryTile: SummaryTile;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private linkClickedEventsService: LinkClickedEventsService\n ) {}\n\n onItemClick(event: Event, item: SummaryTileItem, subItem?: SummaryTileItem): void {\n event.preventDefault();\n const updatedPath = item.path ? item.path : '../care/patients';\n\n this.trackLinkClick(event, this.summaryTile, item, subItem);\n\n this.router.navigate([updatedPath], {\n relativeTo: this.activatedRoute.parent,\n queryParams: {\n filterPreset: subItem ? subItem.filterPreset : item.filterPreset,\n filterTitle: subItem ? subItem.filterTitle : item.filterTitle,\n AWVPatientsStatus: subItem ? subItem.awvPatientsStatus : item.awvPatientsStatus || null\n }\n });\n }\n\n /**\n * Send link clicks to mixpanel\n */\n trackLinkClick(event: Event, summaryTile: SummaryTile, item: SummaryTileItem, subItem: SummaryTileItem): void {\n try {\n const filterPreset = subItem ? subItem.filterPreset : item.filterPreset;\n const AWVPatientsStatus = subItem ? subItem.awvPatientsStatus : item.awvPatientsStatus ?? undefined;\n\n const linkText = (event.target as HTMLElement).innerText;\n const targetPage = item.path ? item.path : '/care/patients';\n this.linkClickedEventsService.sendLinkClickedEvent({\n linkText,\n filterPreset,\n sourceSection: summaryTile.title,\n sourceSubSection: subItem ? item.linkText : undefined,\n targetPage,\n AWVPatientsStatus\n });\n } catch (error) {\n console.error(error);\n }\n }\n}\n","
\n
\n
\n \n \n
\n
\n
","import { Component } from '@angular/core';\nimport { SummaryTile, SUMMARY_TILES, SummaryTileOrder } from '@models/summary';\n\n@Component({\n selector: 'coach-care-summary-tab',\n templateUrl: './care-summary-tab.component.html',\n host: {\n class: 'page-content'\n }\n})\nexport class CareSummaryTabComponent {\n summaryTiles: SummaryTile[] = SUMMARY_TILES.sort(\n (s1, s2) => SummaryTileOrder.indexOf(s1.title) - SummaryTileOrder.indexOf(s2.title)\n );\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { CareComponent } from '@care/care.component';\nimport { CarePatientsComponent } from '@care/views/care-patients/care-patients.component';\nimport { CarePatientComponent } from '@care/views/care-patient/care-patient.component';\nimport { CareSettingsComponent } from '@care/views/care-settings/care-settings.component';\nimport { CareAllPrescriptionsComponent } from './views/care-all-prescriptions/care-all-prescriptions.component';\nimport { CarePrescriptionsComponent } from './views/care-prescriptions/care-prescriptions.component';\nimport { CarePrescriptionsProcessingComponent } from './views/care-patients/care-prescriptions-processing/care-prescriptions-processing.component';\nimport { CarePrescriptionsInvoicingComponent } from './views/care-prescriptions-invoicing/care-prescriptions-invoicing.component';\nimport { CarePatientsContainerComponent } from './views/care-patients/refactor-poc/care-patients-container/care-patients-container.component';\nimport { CareSummaryTabComponent } from './views/care-summary-tab';\nimport { HasFeatureGuard } from '@shared/guards';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { WellpepperResolverService } from '@shared/services/WellpepperUser.resolver';\n\nconst routes: Routes = [\n {\n path: '',\n component: CareComponent,\n data: {\n label: 'Care',\n helpfile: 'LEARN_CARE_General_2020'\n },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'patients'\n },\n {\n path: 'summary-tab',\n component: CareSummaryTabComponent,\n data: {\n label: 'Summary-Tile',\n featureFlag:CareFeatureConstants.CareLandingPageFlag\n },\n canActivate:[HasFeatureGuard]\n },\n {\n path: 'patients',\n component: CarePatientsComponent,\n resolve: { user: WellpepperResolverService },\n data: {\n label: 'Patients'\n }\n },\n {\n path: 'patients2',\n component: CarePatientsContainerComponent,\n data: {\n label: 'Patients'\n }\n },\n {\n path: 'patient/:id',\n component: CarePatientComponent,\n data: {\n label: 'Patient',\n helpfile: 'LEARN_CARE_AM_HCCFacesheet_2020'\n }\n },\n {\n path: 'settings',\n component: CareSettingsComponent,\n data: {\n label: 'Settings'\n }\n },\n {\n path: 'allPrescriptions',\n component: CareAllPrescriptionsComponent,\n data: {\n label: '340B Prescriptions',\n helpfile: 'LEARN_CARE_340B'\n }\n },\n {\n path: 'prescriptions',\n component: CarePrescriptionsComponent,\n data: {\n label: 'Prescriptions',\n helpfile: 'LEARN_CARE_340B'\n }\n },\n {\n path: 'prescriptions-processing',\n component: CarePrescriptionsProcessingComponent,\n data: {\n label: 'Prescriptions-Processing',\n helpfile: 'LEARN_CARE_340B'\n }\n },\n {\n path: 'prescriptions-invoicing',\n component: CarePrescriptionsInvoicingComponent,\n data: {\n label: 'Invoicing',\n helpfile: 'LEARN_CARE_340B'\n }\n }\n ]\n }\n // {\n // path: '**',\n // pathMatch: 'full',\n // redirectTo: ''\n // }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class CareRoutingModule {}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { filter, map, take } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class HasFeatureGuard implements CanActivate {\n constructor(private featureFlagService: FeatureFlagService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const feature = route.data?.featureFlag;\n return this.featureFlagService.featureFlags$.pipe(\n filter((value) => !!value),\n take(1),\n map(() => this.featureFlagService.hasFeatureFlag(feature))\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Resolve } from '@angular/router';\nimport { AuthService } from './auth-service/auth.service';\nimport { PresetItemBase } from '@care/preset-group/utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WellpepperResolverService implements Resolve {\n constructor(private authService: AuthService, private presetItemBase: PresetItemBase) {}\n async resolve(route: ActivatedRouteSnapshot) {\n const user = await this.authService.getWellpepperUserInfo();\n this.authService.setWellpepperUser(user);\n return user;\n }\n}\n","\n
\n
\n
\n
\n
Request Visit Note
\n \n \n
\n Paste this into an email or fax\n
\n
\n
\n
\n

\n Fax:\n

\n
\n \n
\n \n \n {{formatDate(visitNoteRequestedDate)}}\n \n
\n
\n
\n
\n Dear {{ selectedPatientInfo.prescriberName }},

\n {{selectedPatientInfo.primaryProviderName}} is the primary care provider for:

\n {{ selectedPatientInfo.patientName }}
\n DOB: {{ formatDate(selectedPatientInfo.patientDob) }} | Sex:\n {{ getPatientSex() }}
\n MBI: {{ selectedPatientInfo.mbi | mask: 6 }}

\n You prescribed:\n {{ selectedPatientInfo.prescriptionName }}
\n First filled on: {{ formatDate(selectedPatientInfo.firstFilled)\n }}

\n Please provide a summary of the visit prior to the fill date that resulted in this prescription and any updates you may have on the patient’s condition.\n
\n
\n \n
\n \n \n \n
\n \n
\n
\n
\n
\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { SelectedPatientInfo } from '@shared/models/care/prescriptions';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\n\n@Component({\n selector: 'coach-request-note',\n templateUrl: './request-note.component.html',\n styleUrls: ['./request-note.component.scss'],\n})\nexport class RequestNoteComponent implements OnInit, OnChanges {\n @Input() selectedPatientInfo: SelectedPatientInfo;\n @Input() showModal = false;\n @Input() visitNoteRequestedDate: string;\n @ViewChild('noteContent') noteContent: ElementRef;\n @Output() modalToggled = new EventEmitter();\n @Output() noteRequested = new EventEmitter();\n faxNum = '';\n sendingFaxLoading = false;\n\n public Fax340bOutboundFeature = CareFeatureConstants.Fax340bOutboundFeature;\n\n faxRegex = /^\\([0-9]{3}\\)[ ]*[0-9]{3}-[0-9]{4}$/;\n\n constructor(private prescriptionService: PrescriptionService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.faxNum = this.selectedPatientInfo.prescriberFax\n ? `(${this.selectedPatientInfo.prescriberFax.substring(\n 0,\n 3\n )}) ${this.selectedPatientInfo.prescriberFax.substring(\n 3,\n 6\n )}-${this.selectedPatientInfo.prescriberFax.substring(6, 10)}`\n : '';\n }\n\n ngOnInit(): void {}\n\n public formatDate(dateStr) {\n return new Date(dateStr).toLocaleDateString();\n }\n\n toggleVisitNoteModal() {\n this.modalToggled.emit(this.showModal);\n }\n\n formatPhoneNumber(value) {\n if (!value) {\n this.faxNum = value;\n return; \n }\n\n if (!'1234567890'.includes(value.substring(value.length - 1))) {\n this.faxNum = this.faxNum.substring(0, this.faxNum.length - 1);\n return;\n }\n\n const phoneNumber = value.replace(/[^\\d]/g, '');\n const phoneNumberLength = phoneNumber.length;\n\n if (phoneNumberLength > 10) {\n this.faxNum = this.faxNum.substring(0, this.faxNum.length - 1);\n return;\n }\n\n if (phoneNumberLength < 4) {\n this.faxNum = phoneNumber;\n return;\n }\n\n if (phoneNumberLength < 7) {\n this.faxNum = `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3)}`;\n return;\n }\n\n this.faxNum = `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(\n 3,\n 6\n )}-${phoneNumber.slice(6, 10)}`;\n }\n\n public faxNumberValid() {\n if (this.faxNum.length == 0 || !this.faxNum.match(this.faxRegex))\n return false;\n else return true;\n }\n\n getPatientSex() {\n return this.selectedPatientInfo.gender;\n }\n\n sendFax(faxnumber: any) {\n this.sendingFaxLoading = true;\n this.prescriptionService\n .sendFax(this.selectedPatientInfo.claimPk, faxnumber, this.selectedPatientInfo.claimType)\n .then(() => {\n this.sendingFaxLoading = false;\n const dateConfig: any = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n };\n this.toggleVisitNoteModal();\n this.noteRequested.emit(true);\n });\n }\n\n copyTextAndClose() {\n this.copyMessage(this.noteContent.nativeElement.innerText);\n this.toggleVisitNoteModal();\n this.noteRequested.emit(true);\n }\n\n copyMessage(val: string) {\n const selBox = document.createElement('textarea');\n selBox.style.position = 'fixed';\n selBox.style.left = '0';\n selBox.style.top = '0';\n selBox.style.opacity = '0';\n selBox.value = val;\n document.body.appendChild(selBox);\n selBox.focus();\n selBox.select();\n document.execCommand('copy');\n document.body.removeChild(selBox);\n }\n}\n","
\n
\n \n

{{dialogMessage}}

\n
\n \n \n \n
\n
\n
\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'coach-sub-fill-dialog',\n templateUrl: './sub-fill-dialog.component.html',\n styleUrls: ['./sub-fill-dialog.component.scss']\n})\nexport class SubFillDialogComponent implements OnInit {\n\n @Input() showDialog: boolean = false;\n @Input() dialogMessage: string = 'Are you sure?';\n @Output() buttonClicked = new EventEmitter();\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n onButtonClicked(buttonValue: string) {\n this.buttonClicked.emit(buttonValue);\n }\n\n}\n","\n \n\n
\n
\n
\n
\n
\n Approve Rx\n
\n
\n Paste text into EMR and then approve\n
\n
\n
\n
\n CARE COORDINATION NOTE
\n Patient Name: {{ patientName }}
\n DOB: {{ patientDobText }}
\n MBI: {{ patientMbi | mask: 6 }}
\n By: {{ creatorName }}
\n Date: {{ formatDate(creatorDate) }}

\n\n\n 340B External Prescription
\n {{ selectedPatientInfo.prescriptionName }}
\n by {{ selectedPatientInfo.prescriberName }}
\n First filled {{ formatDate(selectedPatientInfo.firstFilled)\n }}

\n\n Visit Note from {{ selectedPatientInfo.prescriberName }}
\n\n
\n

\n Visit Date: {{ formatDate(prescriptionInfo.visit_Note_Visit_Date)\n }}
\n Rx Diagnosis: {{ prescriptionInfo.visit_Note_Diagnosis }}\n

\n
\n\n
\n

\n Related Visit By Covered Entity:\n

\n \n Visit Date: {{ formatDate(prescriptionInfo.cE_Visit_Date) }}
\n Provider: {{ prescriptionInfo.cE_Provider }}
\n CE Location: {{ prescriptionInfo.cE_Location }}
\n
\n
\n
\n\n
\n

\n Related Referral By Covered Entity:\n

\n \n Referral Date:\n {{ formatDate(prescriptionInfo.cE_Related_Referral_Date) }}
\n
\n
\n
\n\n
\n

\n Follow-Up Plan:\n

\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
","import {\n EventEmitter,\n Component,\n OnInit,\n Input,\n ViewChild,\n ElementRef,\n Output,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { IPrescriptionDetail } from '@shared/models/prescription';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\nimport { Subscription } from 'rxjs';\nimport { ClaimStatus, formatDate, basicNameSplit, removeLeadingZeros } from '../../shared-lib';\n\n@Component({\n selector: 'coach-request-care-coordination-note',\n templateUrl: './request-care-coordination-note.component.html',\n styleUrls: ['./request-care-coordination-note.component.scss'],\n})\nexport class RequestCareCoordinationNoteComponent\n implements OnInit, OnDestroy, OnChanges {\n @Input() selectedPatientInfo: any;\n @Input() prescriptionInfo: any;\n @Input() showModal: boolean = false;\n @ViewChild('noteContent') noteContent: ElementRef;\n @Output() modalToggled = new EventEmitter();\n @Output() claimApproved = new EventEmitter();\n\n authSubscription: Subscription;\n\n patientName: string;\n patientDobText: string;\n patientMbi: string;\n\n provider: string = '';\n providerVisitDate: Date;\n rxDiagnosis: string = '';\n relatedDxPresent: number;\n referralDxPresent: number;\n followUpPlanWithCE: string = '';\n followUpPlanWithProvider: string = '';\n formattedFollowUpPlan: string = '';\n\n careCoordNote: any;\n\n referralDocSelection: any;\n\n currentUser: any;\n creatorName: string;\n creatorDate: Date;\n\n showSubFillDialog: boolean = false;\n\n constructor(\n private prescriptionService: PrescriptionService,\n private authService: AuthService\n ) {}\n\n ngOnInit(): void {\n this.authSubscription = this.authService.userInfo$.subscribe(\n (currentUser) => {\n this.currentUser = currentUser\n this.creatorName = this.currentUser.name || this.currentUser.email;\n this.creatorDate = new Date();\n }\n );\n }\n\n ngOnDestroy(): void {\n this.authSubscription.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.showModal && changes.showModal.currentValue) {\n this.formattedFollowUpPlan = this.prescriptionInfo.follow_Up_Plan.replace(/\\n/g, '
')\n }\n \n if (changes.selectedPatientInfo) {\n \n this.patientName = basicNameSplit(this.selectedPatientInfo.patientName).join(' ');\n this.patientDobText = this.formatDate(this.selectedPatientInfo.patientDob);\n this.patientMbi = this.selectedPatientInfo.mbi ? this.selectedPatientInfo.mbi : 'N/A';\n\n setTimeout(() => {\n if (this.showModal) {\n this.toggleVisitNoteModal();\n }\n }, 0);\n }\n }\n\n public formatDate(dateStr) {\n return dateStr ? new Date(dateStr).toISOString().split('T')[0] : null;\n }\n\n toggleSubFillDialog() {\n this.showSubFillDialog = !this.showSubFillDialog;\n }\n\n onSubFillButtonClicked(buttonValue: string) {\n switch (buttonValue.toLowerCase()) {\n case 'cancel':\n break;\n case 'yes':\n this.save(false);\n break;\n case 'no':\n this.save(true);\n break;\n default:\n throw new Error(\"onSubFillButtonClicked: invalid value\");\n }\n this.toggleSubFillDialog();\n }\n \n save(applySubFillLogic: boolean = false) {\n this.prescriptionInfo.claim_Status = ClaimStatus.APPROVED;\n this.prescriptionInfo.claim_Status_Set_By = this.creatorName;\n this.prescriptionInfo.claim_Status_Set_On_Date = this.creatorDate.toISOString();\n\n this.prescriptionInfo.acoId = this.selectedPatientInfo.acoId;\n this.prescriptionInfo.claimPk = this.selectedPatientInfo.claimPk;\n this.prescriptionInfo.tier2_id = this.selectedPatientInfo.tier2_id;\n this.prescriptionInfo.tier3_id = this.selectedPatientInfo.tier3_id;\n this.prescriptionInfo.tier4_grpId = this.selectedPatientInfo.tier4_grpId;\n\n this.prescriptionInfo.selectedPatientInfo = this.selectedPatientInfo;\n this.prescriptionInfo.userId = this.selectedPatientInfo.userId;\n\n this.prescriptionInfo.claimType = this.selectedPatientInfo.claimType;\n\n this.prescriptionInfo.follow_Up_Plan = this.prescriptionInfo.follow_Up_Plan.replace(/\\n/g, '
');\n\n this.prescriptionService.setPrescriptionDetail(this.prescriptionInfo, true, applySubFillLogic);\n \n this.claimApproved.emit(applySubFillLogic);\n this.toggleVisitNoteModal();\n }\n\n toggleVisitNoteModal() {\n this.modalToggled.emit(this.showModal);\n }\n\n copyNote() {\n this.copyMessage(this.noteContent.nativeElement.innerText);\n }\n\n getFormattedFollowUpPlan() {\n return this.prescriptionInfo.follow_Up_Plan.replace(/\\n/g, '
')\n }\n\n copyMessage(val: string) {\n const selBox = document.createElement('textarea');\n selBox.style.position = 'fixed';\n selBox.style.left = '0';\n selBox.style.top = '0';\n selBox.style.opacity = '0';\n selBox.value = this.addFieldData(val);\n document.body.appendChild(selBox);\n selBox.focus();\n selBox.select();\n document.execCommand('copy');\n document.body.removeChild(selBox);\n }\n\n addFieldData(text: string): string {\n const textTerminationIndex = text.indexOf('Visit Date:') - 3;\n let header = text.substring(0, textTerminationIndex);\n\n let visitDate = new Date(this.prescriptionInfo.visit_Note_Visit_Date);\n let rxDiagnosis = this.prescriptionInfo.visit_Note_Diagnosis;\n\n let displayDate = visitDate.toISOString();\n displayDate = displayDate.substring(0, displayDate.indexOf('T'));\n\n return `\n${header}\nVisit Date: ${displayDate}\nRx Diagnosis: ${rxDiagnosis}\n\nRelated Visit by Covered Entity:\nVisit Date: ${this.formatDate(this.prescriptionInfo.cE_Visit_Date)}\nProvider: ${this.prescriptionInfo.cE_Provider}\nCE Location: ${this.prescriptionInfo.cE_Location}\n\nRelated Referral by Covered Entity:\nReferral Date: ${this.formatDate(this.prescriptionInfo.cE_Related_Referral_Date)}\n\nFollow-up plan:\n${this.prescriptionInfo.follow_Up_Plan}\n `.trim();\n }\n}\n","\n
\n
\n
\n
\n
\n Edit Note\n
\n \n
\n \n
\n
\n
\n
\n \n \"trash-icon\"\n \n Cancel\n \n \n
\n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\n@Component({\n selector: 'coach-claim-note',\n templateUrl: './claim-note.component.html',\n styleUrls: ['./claim-note.component.scss'],\n})\nexport class ClaimNoteComponent implements OnInit, OnChanges {\n @Input() claimNote: string;\n @Input() showModal: boolean = false;\n @Input() selectedPatientInfo: any;\n @Output() modalToggled = new EventEmitter();\n @Output() saveClaimNote = new EventEmitter();\n\n cancelClicked: boolean = false;\n originalNote: string = null;\n\n constructor() {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.selectedPatientInfo) {\n setTimeout(() => {\n if (this.showModal) {\n this.cancel();\n }\n }, 0);\n }\n\n if (changes.showModal) {\n if (changes.showModal.currentValue === false && this.cancelClicked) {\n this.claimNote = this.originalNote;\n this.originalNote = null;\n setTimeout(() => {\n this.cancelClicked = false;\n }, 0);\n }\n if (changes.showModal.currentValue === true && !this.originalNote) {\n this.originalNote = this.claimNote;\n }\n }\n }\n\n toggleVisitNoteModal() {\n this.modalToggled.emit(this.showModal);\n }\n\n saveNote() {\n this.saveClaimNote.emit(this.claimNote);\n this.toggleVisitNoteModal();\n }\n\n cancel() {\n this.cancelClicked = true;\n this.toggleVisitNoteModal();\n }\n\n deleteNote() {\n this.claimNote = '';\n this.saveNote();\n }\n}\n","\n \n\n
\n
\n
\n
\n
Reject Rx
\n \n Paste text into EMR and then reject\n
\n
\n
\n\n
\n

\n This RX was not eligible for 340B due to the
following reason(s):\n

\n
    \n \n\n
  • \n Unknown\n
  • \n\n \n
  • \n There was no visit for a Dx prior to\n {{ formatDate(selectedPatientInfo.firstFilled) }}\n
  • \n
  • \n There was no visit for a related Dx at a covered entity prior to\n {{ formatDate(selectedPatientInfo.firstFilled) }}\n
  • \n
  • \n There was no referral to {{ selectedPatientInfo.prescriberName }}\n
  • \n
  • \n There was no follow-up plan\n
  • \n
    \n
\n
\n\n
\n CARE COORDINATION NOTE
\n Patient Name: {{ patientName }}
\n DOB: {{ patientDobText }}
\n MBI: {{ patientMbi | mask: 6 }}
\n By: {{ getLoggedInUserName() }}
\n Date: {{ formatDate(getTodaysDate()) }}

\n\n 340B External Prescription
\n {{ selectedPatientInfo.prescriptionName }}
\n by {{ selectedPatientInfo.prescriberName }}
\n First filled {{ formatDate(selectedPatientInfo.firstFilled)\n }}

\n\n
\n Visit Note from {{ selectedPatientInfo.prescriberName }}
\n\n
\n

\n Visit Date: {{ formatDate(prescriptionInfo.visit_Note_Visit_Date)\n }}
\n Rx Diagnosis: {{ prescriptionInfo.visit_Note_Diagnosis }}\n

\n
\n
\n\n
\n

\n Related Visit By Covered Entity:\n

\n \n Visit Date: {{ formatDate(prescriptionInfo.cE_Visit_Date) }}
\n Provider: {{ prescriptionInfo.cE_Provider }}
\n CE Location: {{ prescriptionInfo.cE_Location }}
\n
\n
\n
\n\n
\n

\n Related Referral By Covered Entity:\n

\n \n Referral Date:\n {{ formatDate(prescriptionInfo.cE_Related_Referral_Date) }}
\n
\n
\n
\n\n
\n

\n Follow-Up Plan:\n

\n
\n
\n
\n
\n \n \n \n \n
\n \n \n
\n","import { SimpleChanges } from '@angular/core';\nimport {\n EventEmitter,\n Component,\n OnInit,\n Input,\n ViewChild,\n ElementRef,\n Output,\n OnDestroy,\n OnChanges,\n} from '@angular/core';\nimport { IPrescriptionDetail } from '@shared/models/prescription';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\nimport { Subscription } from 'rxjs';\nimport { ClaimStatus, compareDates, formatDate, basicNameSplit, removeLeadingZeros } from '../../shared-lib';\n\n@Component({\n selector: 'coach-rejected-claim',\n templateUrl: './rejected-claim.component.html',\n styleUrls: ['./rejected-claim.component.scss'],\n})\nexport class RejectedClaimComponent implements OnInit, OnDestroy, OnChanges {\n @Input() selectedPatientInfo: any;\n @Input() prescriptionInfo: any;\n @Input() showModal: boolean = false;\n @ViewChild('noteContent') noteContent: ElementRef;\n @Output() modalToggled = new EventEmitter();\n @Output() claimRejected = new EventEmitter();\n\n authSubscription: Subscription;\n\n patientName: string;\n patientDobText: string;\n patientMbi: string;\n\n provider: string = '';\n providerVisitDate: Date;\n rxDiagnosis: string = '';\n relatedDxPresent: number;\n referralDxPresent: number;\n followUpPlanWithCE: string = '';\n followUpPlanWithProvider: string = '';\n formattedFollowUpPlan: string = '';\n\n careCoordNote: any;\n\n referralDocSelection: any;\n\n currentUser: any;\n creatorName: string;\n creatorDate: Date;\n\n showSubFillDialog: boolean = false;\n\n constructor(\n private prescriptionService: PrescriptionService,\n private authService: AuthService\n ) {}\n\n ngOnInit(): void {\n this.authSubscription = this.authService.userInfo$.subscribe(\n (currentUser) => {\n this.currentUser = currentUser;\n this.creatorName = this.currentUser.name || this.currentUser.email;\n this.creatorDate = new Date();\n }\n );\n }\n\n ngOnDestroy(): void {\n this.authSubscription.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.showModal && changes.showModal.currentValue) {\n this.formattedFollowUpPlan = this.prescriptionInfo.follow_Up_Plan.replace(/\\n/g, '
')\n }\n\n if (changes.prescriptionInfo) {\n const pi = changes.prescriptionInfo.currentValue;\n if (\n !pi.cE_Related_Referral_Date ||\n pi.cE_Related_Referral_Date === 'mm/dd/yyyy'\n ) {\n this.prescriptionInfo.cE_Related_Referral_Date = new Date('1970-01-01');\n }\n if (!pi.cE_Visit_Date || pi.cE_Visit_Date === 'mm/dd/yyyy') {\n this.prescriptionInfo.cE_Visit_Date = new Date('1970-01-01');\n }\n if (\n !pi.visit_Note_Visit_Date ||\n pi.visit_Note_Visit_Date === 'mm/dd/yyyy'\n ) {\n this.prescriptionInfo.visit_Note_Visit_Date = new Date('1970-01-01');\n }\n }\n if (changes.selectedPatientInfo) {\n this.patientName = basicNameSplit(this.selectedPatientInfo.patientName).join(' ');\n this.patientDobText = this.formatDate(this.selectedPatientInfo.patientDob);\n this.patientMbi = this.selectedPatientInfo.mbi ? this.selectedPatientInfo.mbi : 'N/A';\n\n setTimeout(() => {\n if (this.showModal) {\n this.toggleVisitNoteModal();\n }\n }, 0);\n }\n }\n\n public formatDate(dateStr) {\n if (dateStr == new Date(null).toString()) {\n return \"\";\n }\n if (dateStr) {\n return new Date(dateStr).toISOString().split('T')[0];\n }\n return \"\";\n }\n\n getTodaysDate(): Date {\n return new Date();\n }\n\n getLoggedInUserName(): string {\n return this.creatorName;\n }\n\n toggleSubFillDialog() {\n this.showSubFillDialog = !this.showSubFillDialog;\n }\n\n onSubFillButtonClicked(buttonValue: string) {\n switch (buttonValue.toLowerCase()) {\n case 'cancel':\n break;\n case 'yes':\n this.reject(false);\n break;\n case 'no':\n this.reject(true);\n break;\n default:\n throw new Error(\"onSubFillButtonClicked: invalid value\");\n }\n this.toggleSubFillDialog();\n }\n\n reject(applySubFillLogic: boolean = true) {\n this.prescriptionInfo.claim_Status = ClaimStatus.REJECTED;\n\n this.prescriptionInfo.acoId = this.selectedPatientInfo.acoId;\n this.prescriptionInfo.claimPk = this.selectedPatientInfo.claimPk;\n this.prescriptionInfo.tier2_id = this.selectedPatientInfo.tier2_id;\n this.prescriptionInfo.tier3_id = this.selectedPatientInfo.tier3_id;\n this.prescriptionInfo.tier4_grpId = this.selectedPatientInfo.tier4_grpId;\n\n this.prescriptionInfo.selectedPatientInfo = this.selectedPatientInfo;\n this.prescriptionInfo.userId = this.selectedPatientInfo.userId;\n\n this.prescriptionInfo.claim_Status_Set_By = this.creatorName;\n this.prescriptionInfo.claim_Status_Set_On_Date = this.creatorDate.toISOString();\n\n this.prescriptionInfo.cE_Related_Referral_Date = this.prescriptionInfo.cE_Related_Referral_Date ?\n this.prescriptionInfo.cE_Related_Referral_Date : null;\n this.prescriptionInfo.visit_Note_Visit_Date = this.prescriptionInfo.visit_Note_Visit_Date ?\n this.prescriptionInfo.visit_Note_Visit_Date : null;\n this.prescriptionInfo.cE_Visit_Date = this.prescriptionInfo.cE_Visit_Date ?\n this.prescriptionInfo.cE_Visit_Date : null;\n\n this.prescriptionInfo.claimType = this.prescriptionInfo.selectedPatientInfo.claimType;\n\n this.prescriptionService.setPrescriptionDetail(this.prescriptionInfo, true, applySubFillLogic);\n \n this.claimRejected.emit(applySubFillLogic);\n this.toggleVisitNoteModal();\n }\n\n toggleVisitNoteModal() {\n this.modalToggled.emit(this.showModal);\n }\n\n copyNote() {\n this.copyMessage(this.noteContent.nativeElement.innerText);\n }\n\n copyMessage(val: string) {\n const selBox = document.createElement('textarea');\n selBox.style.position = 'fixed';\n selBox.style.left = '0';\n selBox.style.top = '0';\n selBox.style.opacity = '0';\n selBox.value = this.addFieldData(val);\n document.body.appendChild(selBox);\n selBox.focus();\n selBox.select();\n document.execCommand('copy');\n document.body.removeChild(selBox);\n }\n\n addFieldData(text: string): string {\n const textTerminationIndex = text.indexOf('First filled');\n let header = text.substring(0, textTerminationIndex);\n\n let visitDate = new Date(this.prescriptionInfo.visit_Note_Visit_Date);\n let rxDiagnosis = this.prescriptionInfo.visit_Note_Diagnosis;\n\n let displayDate = visitDate.toISOString();\n displayDate = displayDate.substring(0, displayDate.indexOf('T'));\n\n let result =\n header +\n `First filled: ${this.formatDate(this.selectedPatientInfo.firstFilled)}` +\n '\\n';\n if (!this.prescriptionInfo.visit_Note_Missing) {\n result += `\nVisit note from ${this.selectedPatientInfo.prescriberName}:\nVisit Date: ${this.formatDate(this.prescriptionInfo.visit_Note_Visit_Date)}\nRx Diagnosis: ${rxDiagnosis}\n `;\n }\n\n if (!this.prescriptionInfo.cE_Visit_Note_Missing) {\n result += `\nRelated Visit by Covered Entity:\nVisit Date: ${this.formatDate(this.prescriptionInfo.cE_Visit_Date)}\nProvider: ${this.prescriptionInfo.cE_Provider}\nCE Location: ${this.prescriptionInfo.cE_Location}\n `;\n }\n\n if (!this.prescriptionInfo.cE_Related_Referral_Missing) {\n result += `\nRelated Referral by Covered Entity:\nReferral Date: ${this.formatDate(\n this.prescriptionInfo.cE_Related_Referral_Date\n )}\n `;\n }\n\n if (this.prescriptionInfo.follow_Up_Plan) {\n result += `\nFollow-up plan:\n${this.prescriptionInfo.follow_Up_Plan}\n `;\n }\n\n return result.trim();\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\n\n@Component({\n selector: 'coach-file-control',\n templateUrl: './file-control.component.html',\n styleUrls: ['./file-control.component.scss']\n})\nexport class FileControlComponent implements OnInit {\n\n @Input() filename: string;\n @Input() tier2Id: string;\n @Input() prescriptionRefId: string;\n @Output() setMessage: EventEmitter = new EventEmitter();\n @Output() removeFile: EventEmitter = new EventEmitter();\n\n maxFilenameLength: number = 40;\n \n constructor(private prescriptionService: PrescriptionService) { }\n\n ngOnInit(): void {\n }\n\n deleteFile(): void {\n let result = this.prescriptionService.deleteUploadedFile(this.tier2Id, this.prescriptionRefId, this.filename);\n this.setMessage.emit(result['description']);\n this.removeFile.emit(this.filename);\n }\n\n}\n","
\n
\n
\n

{{filename.length > maxFilenameLength ? filename.substring(0, maxFilenameLength) : filename}}

\n
\n
\n \n
\n
\n
","\n\nAttach\n File\n\n
\n \n
\n

{{message}}

\n","import { Component, ElementRef, Input, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\n\n@Component({\n selector: 'coach-file-import',\n templateUrl: './file-import.component.html',\n styleUrls: ['./file-import.component.scss'],\n})\nexport class FileImportComponent implements OnInit, OnChanges {\n importFeatureFlag: string = CareFeatureConstants.FileImport340B;\n @Input() claimId: string;\n @Input() prescriptionRefID: string;\n @Input() tier2Id: string;\n @ViewChild(\"fileUpload\") fileUploadControl: ElementRef;\n\n message: string;\n\n files: Array;\n\n constructor(private prescriptionService: PrescriptionService) {}\n \n ngOnInit(): void {}\n \n ngOnChanges(changes: SimpleChanges): void {\n if (this.claimId) {\n this.prescriptionService.getFileAttachments(this.tier2Id, this.prescriptionRefID).then(attachments => {\n this.files = [];\n attachments.forEach(attachment => this.files.push(attachment['fileName']));\n this.message = '';\n });\n }\n }\n\n onFileInputClicked(e) {\n for (let file of e.target.files) {\n if (file) {\n const formData = new FormData();\n formData.append('claimId', this.claimId);\n formData.append('tier2Id', this.tier2Id);\n formData.append('prescriptionRefID', this.prescriptionRefID);\n formData.append('file', file);\n \n this.prescriptionService.uploadFile(formData).then(upload$ => {\n let sub = upload$.subscribe(x => {\n \n switch (x['statusCode']) {\n case 'FT0000':\n this.message = 'Upload successful';\n let fileName = file.name;\n this.files.push(fileName);\n break;\n case 'FT0001':\n this.message = 'File already exists';\n break;\n case 'FT0002':\n this.message = 'Filetype not allowed';\n break;\n default:\n console.log(x);\n }\n \n sub.unsubscribe();\n });\n });\n }\n }\n }\n\n onImportButtonClick() {\n this.fileUploadControl.nativeElement.click();\n }\n\n setMessage(message: string): void {\n this.message = message;\n }\n\n removeFile(filename: string): void {\n this.files = this.files.filter(file => file !== filename);\n }\n}\n","
\n \n \n \n \n \n \n\n \n\n
\n \n\n
\n
\n
\n Visit Note from {{ selectedPatientInfo.prescriberName }}\n
\n\n
\n

\n Visit Date:\n

\n \n
\n \n \n
\n
\n
\n\n

\n Date must be prior to\n {{ formatDate(selectedPatientInfo.firstFilled) }}\n

\n\n
\n

\n Diagnosis:\n

\n \n
\n
\n\n \n Can't find the note in your EMR?\n Note was requested on\n {{\n formatDate(prescriptionDetails.visit_Note_Requested_Date)\n }}\n Request Note...\n Request again\n | \n \n \n
\n
\n\n
\n Related Referral by Covered Entity\n
\n\n
\n

Refer Date:

\n \n
\n \n \n
\n
\n\n

\n Date must be prior to\n {{ formatDate(selectedPatientInfo.firstFilled) }}\n

\n\n
\n Related Visit by Covered Entity\n
\n\n
\n

Visit Date:

\n \n
\n \n \n
\n
\n
\n\n

\n Date must be prior to\n {{ formatDate(selectedPatientInfo.firstFilled) }}\n

\n\n
\n

Provider:

\n \n
\n\n
\n

CE Location:

\n \n
\n\n
\n
Follow-Up Plan
\n
\n \n
\n
\n\n
\n \n
\n
\n Save as Has Note\n
\n Save as Pending \n
\n \n \n
\n
\n
\n
\n\n","import { EventEmitter, Injector, OnDestroy } from '@angular/core';\nimport {\n Component,\n ElementRef,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PrescriptionService } from '@shared/services/prescription/prescription.service';\nimport { Subscription } from 'rxjs';\nimport { CarePrescriptionsComponent } from '../care-prescriptions.component';\n\nimport { formatDate as fmtDate } from '@angular/common';\n\nimport {\n compareDates,\n ClaimStatus,\n getDefaultPrescriptionData,\n} from '../shared-lib';\n\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { UserInfo } from '@shared/services/auth-service/auth-interface';\n\n@Component({\n selector: 'coach-care-prescriptions-sidebar',\n templateUrl: './care-prescriptions-sidebar.component.html',\n styleUrls: ['./care-prescriptions-sidebar.component.scss'],\n})\nexport class CarePrescriptionsSidebarComponent implements OnInit, OnDestroy {\n selectedPatientInfo: any = [];\n @Input() show: boolean;\n @Input() ceLocations;\n @Output() removeRow = new EventEmitter();\n @ViewChild('mainPanel') mainPanel: ElementRef;\n @ViewChild('ceLocationsSelect') ceLocationsSelect: ElementRef;\n\n importFeatureFlag: string = CareFeatureConstants.FileImport340B;\n\n acoId: string;\n tier2Id: string;\n tier3Id: string;\n \n claimId: number;\n claimPk: number;\n claimType: string;\n prescriptionRefID: string;\n\n isValidationPanelOpen = false;\n isClaimSelected = false;\n toggleVisitNoteModal = false;\n toggleCareCoordinationNoteModal = false;\n toggleRejectionModal = false;\n\n selectedCeLocation: string;\n\n showClaimNote = false;\n\n prescriptionDetails: any;\n\n providerVisitDate: Date;\n\n visitDateIsValid = true;\n ceVisitDateIsValid = true;\n ceReferralDateIsValid = true;\n\n approveButtonEnabled = false;\n rejectButtonEnabled = false;\n\n debounceTimer: any = null;\n\n prescriptionSubscription: Subscription;\n authSubscription: Subscription;\n\n currentUser: UserInfo;\n creatorName: string;\n creatorDate: Date;\n\n constructor(\n private prescriptionService: PrescriptionService,\n public route: ActivatedRoute,\n private injector: Injector,\n private authService: AuthService\n ) {}\n\n ngOnInit(): void {\n\n this.authSubscription = this.authService.userInfo$.subscribe(\n (currentUser) => {\n this.currentUser = currentUser\n this.creatorName = this.currentUser.name || this.currentUser.email;\n this.creatorDate = new Date();\n }\n );\n\n this.prescriptionSubscription =\n this.prescriptionService.claimInfoUpdated.subscribe((claimInfo: any) => {\n this.selectedPatientInfo = claimInfo?.selectedPatientInfo;\n this.ceLocations = claimInfo.ceLocations;\n this.claimPk = claimInfo.selectedPatientInfo.claimPk;\n this.claimId = claimInfo.claimId;\n this.acoId = claimInfo.selectedPatientInfo.acoId;\n this.tier2Id = claimInfo.selectedPatientInfo.tier2_id;\n this.tier3Id = claimInfo.selectedPatientInfo.tier3_id;\n this.prescriptionRefID = this.selectedPatientInfo.prescriptionRefID;\n this.claimPk = claimInfo.selectedPatientInfo.claimPk;\n this.claimType = claimInfo.selectedPatientInfo.claimType;\n\n if (!this.isValidationPanelOpen) {\n this.isValidationPanelOpen = !this.isValidationPanelOpen;\n }\n\n if (\n !this.selectedPatientInfo.follow_Up_Plan ||\n this.selectedPatientInfo.follow_Up_Plan === ''\n ) {\n this.setDefaultFollowUpPlan(this.selectedPatientInfo);\n }\n\n this.updatePrescriptionDetailsData(this.claimId, this.claimType);\n \n this.onUpdateProvider();\n });\n\n this.prescriptionDetails = getDefaultPrescriptionData(\n this.selectedPatientInfo.claimId,\n this.selectedPatientInfo.acoId,\n this.selectedPatientInfo.tier2_id,\n this.selectedPatientInfo.tier3_id,\n this.selectedPatientInfo.tier4_grpId,\n this.selectedPatientInfo.coach340BClaimsID\n );\n }\n\n setDefaultFollowUpPlan(data: any): void {\n data.follow_Up_Plan = `1. Continue referral to ${data.prescriberName}\n2. Follow up with ${\n data.primaryProviderName ?? 'provider'\n } at [CE Location] within 30 days.\n `;\n }\n\n ngOnDestroy() {\n this.prescriptionSubscription.unsubscribe();\n this.authSubscription.unsubscribe();\n }\n\n onRejectClaim(subsequentFillLogicOptOut: boolean = false) {\n let grid = this.injector.get(CarePrescriptionsComponent);\n grid.onRejectClaim(subsequentFillLogicOptOut);\n this.toggleValidatePanel();\n }\n\n removeClaimFromGrid(subsequentFillLogicOptOut) {\n let parentComponent = this.injector.get(CarePrescriptionsComponent);\n parentComponent.removeRow(subsequentFillLogicOptOut);\n this.toggleValidatePanel();\n }\n\n updateReferralDate(date) {\n this.prescriptionDetails.cE_Related_Referral_Date = date;\n this.validateClaim();\n }\n\n updateCeVisitDate(date) {\n this.prescriptionDetails.cE_Visit_Date = date;\n this.validateClaim();\n }\n\n updateVisitDate(date) {\n this.prescriptionDetails.visit_Note_Visit_Date = date;\n this.validateClaim();\n }\n\n updateVisitNoteMissing(status) {\n this.prescriptionDetails.visit_Note_Missing = status;\n this.validateClaim();\n }\n\n updateCeVisitNoteMissing(status) {\n this.prescriptionDetails.cE_Visit_Note_Missing = status;\n this.validateClaim();\n }\n\n updateCeRelatedReferralMissing(status) {\n this.prescriptionDetails.cE_Related_Referral_Missing = status;\n this.validateClaim();\n }\n\n onUpdateProvider() {\n setTimeout(() => {\n const pattern = /with [^]* at/;\n const updatedPlan = this.prescriptionDetails.follow_Up_Plan.replace(\n pattern,\n () => `with ${this.prescriptionDetails.cE_Provider} at`\n );\n this.prescriptionDetails.follow_Up_Plan = updatedPlan;\n\n this.onUpdateTypedText();\n }, 0);\n }\n\n onUpdateTypedText() {\n this.debouncedExecute(() => this.validateClaim(), 150);\n }\n\n debouncedExecute(func, timeMs) {\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n this.debounceTimer = setTimeout(() => {\n func();\n this.debounceTimer = null;\n }, timeMs);\n }\n\n onNoteRequested(isRequested: boolean) {\n this.prescriptionDetails.visit_Note_Requested_Date =\n new Date().toISOString();\n \n this.prescriptionDetails.claimPk = this.claimPk;\n this.prescriptionDetails.acoId = this.acoId;\n this.prescriptionDetails.tier2_id = this.tier2Id;\n this.prescriptionDetails.tier3_id = this.tier3Id;\n this.prescriptionDetails.claimType = this.claimType;\n\n this.prescriptionService.setPrescriptionDetail(this.prescriptionDetails)\n .then(() => {\n let parentComponent = this.injector.get(CarePrescriptionsComponent);\n if (this.prescriptionDetails.claim_Status === ClaimStatus.PENDING) {\n parentComponent.refreshGridAndUpdateStatus(ClaimStatus.PENDING);\n }\n })\n .then(() => {\n this.toggleValidatePanel(); \n });\n }\n\n onClickClaimNote() {\n this.showClaimNote = !this.showClaimNote;\n }\n\n saveClaimNote(note: string) {\n const status = this.selectedPatientInfo.claim_Status\n ? this.selectedPatientInfo.claim_Status\n : ClaimStatus.NEW;\n this.prescriptionDetails.claim_Note = note;\n this.savePrescriptionDetailsData(status);\n\n let parentComponent = this.injector.get(CarePrescriptionsComponent);\n if (this.prescriptionDetails.claim_Status === ClaimStatus.PENDING) {\n parentComponent.refreshGridAndUpdateStatus(ClaimStatus.PENDING);\n }\n }\n\n requestVisitNote() {\n this.toggleVisitNoteModal = !this.toggleVisitNoteModal;\n }\n\n requestCareCoordinationNote() {\n this.toggleCareCoordinationNoteModal =\n !this.toggleCareCoordinationNoteModal;\n }\n\n toggleRejectModal() {\n this.toggleRejectionModal = !this.toggleRejectionModal;\n }\n\n validateClaim(): boolean {\n const visitDate = this.prescriptionDetails.visit_Note_Visit_Date\n ? new Date(this.prescriptionDetails.visit_Note_Visit_Date)\n : null;\n const ceVisitDate = this.prescriptionDetails.cE_Visit_Date\n ? new Date(this.prescriptionDetails.cE_Visit_Date)\n : null;\n const referralDate = this.prescriptionDetails.cE_Related_Referral_Date\n ? new Date(this.prescriptionDetails.cE_Related_Referral_Date)\n : null;\n const filledDate = new Date(this.selectedPatientInfo.firstFilled);\n\n let claimIsValid = true;\n\n if (!visitDate || !compareDates(filledDate, visitDate)) {\n this.visitDateIsValid = false;\n claimIsValid = false;\n } else {\n this.visitDateIsValid = true;\n }\n\n if (!ceVisitDate || !compareDates(filledDate, ceVisitDate)) {\n this.ceVisitDateIsValid = false;\n claimIsValid = false;\n } else {\n this.ceVisitDateIsValid = true;\n }\n\n if (!referralDate || !compareDates(filledDate, referralDate)) {\n this.ceReferralDateIsValid = false;\n claimIsValid = false;\n } else {\n this.ceReferralDateIsValid = true;\n }\n\n if (\n this.prescriptionDetails.visit_Note_Missing ||\n this.prescriptionDetails.cE_Visit_Note_Missing ||\n this.prescriptionDetails.cE_Related_Referral_Missing ||\n this.prescriptionDetails.cE_Location === 'None' ||\n this.prescriptionDetails.cE_Provider.length < 3 ||\n !/\\S/.test(this.prescriptionDetails.visit_Note_Diagnosis) ||\n !/\\S/.test(this.prescriptionDetails.cE_Provider) ||\n !/\\S/.test(this.prescriptionDetails.follow_Up_Plan)\n ) {\n claimIsValid = false;\n }\n\n this.approveButtonEnabled = claimIsValid;\n this.rejectButtonEnabled =\n this.prescriptionDetails.visit_Note_Missing ||\n this.prescriptionDetails.cE_Visit_Note_Missing ||\n this.prescriptionDetails.cE_Related_Referral_Missing\n ? true\n : false;\n\n this.prescriptionDetails.follow_Up_Plan = this.prescriptionDetails.follow_Up_Plan.replace(/
/g, '\\n');\n\n return claimIsValid;\n }\n\n onRejectClicked() {\n this.savePrescriptionDetailsData(ClaimStatus.REJECTED);\n this.toggleValidatePanel();\n }\n\n updatePrescriptionDetailsData(claimId, claimType) {\n if (!this.isValidationPanelOpen) {\n this.toggleValidatePanel();\n }\n\n this.prescriptionService\n .getPrescriptionDetail(\n this.selectedPatientInfo.claimPk,\n this.selectedPatientInfo.acoId,\n this.selectedPatientInfo.tier2_id,\n this.selectedPatientInfo.tier3_id,\n this.selectedPatientInfo.tier4_grpId,\n claimId,\n this.selectedPatientInfo.userId,\n this.selectedPatientInfo\n )\n .then((data) => {\n if (!data) {\n data = getDefaultPrescriptionData(\n claimId,\n this.selectedPatientInfo.acoId,\n this.selectedPatientInfo.tier2_id,\n this.selectedPatientInfo.tier3_id,\n this.selectedPatientInfo.tier4_grpId,\n this.selectedPatientInfo.coach340BClaimsID\n );\n }\n\n if (!data.follow_Up_Plan || data.follow_Up_Plan === '') {\n data.follow_Up_Plan = this.selectedPatientInfo.follow_Up_Plan;\n }\n\n this.prescriptionDetails = data;\n this.prescriptionDetails.visitProvider = this.selectedPatientInfo.prescriberName;\n\n this.selectedPatientInfo.ceVisitDate = this.prescriptionDetails.cE_Visit_Date;\n this.selectedPatientInfo.ceRelatedReferralDate = this.prescriptionDetails.cE_Related_Referral_Date\n\n this.selectedCeLocation =\n data.cE_Location && data.cE_Location !== ''\n ? data.cE_Location\n : 'None';\n this.ceLocationsSelect.nativeElement.value = this.selectedCeLocation;\n this.updateFollowUpPlan();\n\n this.validateClaim();\n\n data.visit_Note_Visit_Date = fmtDate(\n new Date(data.visit_Note_Visit_Date),\n 'yyyy-MM-dd',\n 'en-US'\n );\n data.cE_Visit_Date = fmtDate(\n new Date(data.cE_Visit_Date),\n 'yyyy-MM-dd',\n 'en-US'\n );\n data.cE_Related_Referral_Date = fmtDate(\n new Date(data.cE_Related_Referral_Date),\n 'yyyy-MM-dd',\n 'en-US'\n );\n\n if (this.isDefaultDate(data.visit_Note_Visit_Date)) {\n data.visit_Note_Visit_Date = 'mm/dd/yyyy';\n }\n if (this.isDefaultDate(data.cE_Visit_Date)) {\n data.cE_Visit_Date = 'mm/dd/yyyy';\n }\n if (this.isDefaultDate(data.cE_Related_Referral_Date)) {\n data.cE_Related_Referral_Date = 'mm/dd/yyyy';\n }\n\n const oldRejectState = this.rejectButtonEnabled;\n const oldApproveState = this.approveButtonEnabled;\n this.rejectButtonEnabled = false;\n this.approveButtonEnabled = false;\n setTimeout(() => {\n this.rejectButtonEnabled = oldRejectState;\n this.approveButtonEnabled = oldApproveState;\n }, 1000);\n });\n }\n\n isDefaultDate(date): boolean {\n return date == '1969-12-31' || date == '1970-01-01';\n }\n\n updateFollowUpPlan() {\n const match = /at (.+) within/;\n const oldValue = this.prescriptionDetails.follow_Up_Plan.match(match);\n\n if (oldValue) {\n const startIndex = oldValue.input.indexOf(oldValue[1]);\n const endIndex = startIndex + oldValue[1].length;\n const newValue = `${oldValue.input.substring(0, startIndex)}${\n this.ceLocationsSelect.nativeElement.value\n } ${oldValue.input.substring(endIndex + 1)}`;\n this.prescriptionDetails.follow_Up_Plan = newValue;\n }\n\n this.selectedCeLocation = this.ceLocationsSelect.nativeElement.value;\n this.prescriptionDetails.cE_Location = this.selectedCeLocation;\n }\n\n validateHasNote(): boolean {\n try {\n const match = this.prescriptionDetails.visit_Note_Visit_Date.match(\n /(\\d){4}-(\\d){2}-(\\d){2}/\n );\n\n if (!match) {\n return false;\n }\n\n const visitDate = new Date(match[0]);\n const firstFillDate = new Date(\n this.formatDate(this.selectedPatientInfo.firstFilled)\n );\n\n if (visitDate > firstFillDate) {\n return false;\n } else {\n return true && this.prescriptionDetails.visit_Note_Diagnosis;\n }\n } catch (e) {\n if (this.prescriptionDetails.visit_Note_Visit_Date == null) {\n return false;\n }\n const year = this.prescriptionDetails.visit_Note_Visit_Date.getFullYear();\n\n return (\n this.prescriptionDetails.visit_Note_Visit_Date &&\n year !== 1969 &&\n year != 1970 &&\n this.prescriptionDetails.visit_Note_Diagnosis\n );\n }\n }\n\n async onSaveAsPending(labelText) {\n let status = this.validateHasNote()\n ? ClaimStatus.HAS_NOTE\n : ClaimStatus.PENDING;\n\n this.prescriptionDetails.userId = this.selectedPatientInfo.userId;\n\n await this.savePrescriptionDetailsData(status);\n\n let parentComponent = this.injector.get(CarePrescriptionsComponent);\n parentComponent.changeClaimStatus(status);\n this.toggleValidatePanel();\n }\n\n async savePrescriptionDetailsData(status: ClaimStatus): Promise {\n if (!this.prescriptionDetails) {\n this.prescriptionDetails = getDefaultPrescriptionData(\n this.selectedPatientInfo.claimId,\n this.selectedPatientInfo.acoId,\n this.selectedPatientInfo.tier2_id,\n this.selectedPatientInfo.tier3_id,\n this.selectedPatientInfo.tier4_grpId,\n this.selectedPatientInfo.coach340BClaimsID\n );\n }\n\n this.prescriptionDetails.claim_Status = status;\n this.prescriptionDetails.claim_Status_Set_By = this.creatorName;\n this.prescriptionDetails.claim_Status_Set_On_Date = this.creatorDate.toISOString();\n\n this.prescriptionDetails.cE_Location =\n this.ceLocationsSelect.nativeElement.value;\n\n const isRejected = status === ClaimStatus.REJECTED;\n\n this.prescriptionDetails.acoId = this.selectedPatientInfo.acoId;\n this.prescriptionDetails.claimPk = this.selectedPatientInfo.claimPk;\n this.prescriptionDetails.tier2_id = this.selectedPatientInfo.tier2_id;\n this.prescriptionDetails.tier3_id = this.selectedPatientInfo.tier3_id;\n this.prescriptionDetails.tier4_grpId = this.selectedPatientInfo.tier4_grpId;\n\n this.prescriptionDetails.claimType = this.selectedPatientInfo.claimType;\n\n this.prescriptionDetails.selectedPatientInfo = this.selectedPatientInfo;\n\n if (this.prescriptionDetails.visit_Note_Visit_Date == 'mm/dd/yyyy') {\n this.prescriptionDetails.visit_Note_Visit_Date = '1970-01-01';\n }\n if (this.prescriptionDetails.cE_Visit_Date == 'mm/dd/yyyy') {\n this.prescriptionDetails.cE_Visit_Date = '1970-01-01';\n }\n if (this.prescriptionDetails.cE_Related_Referral_Date == 'mm/dd/yyyy') {\n this.prescriptionDetails.cE_Related_Referral_Date = '1970-01-01';\n }\n\n if (this.prescriptionDetails.visit_Note_Visit_Date == '') {\n this.prescriptionDetails.visit_Note_Visit_Date = null;\n }\n if (this.prescriptionDetails.cE_Visit_Date == '') {\n this.prescriptionDetails.cE_Visit_Date = null;\n }\n if (this.prescriptionDetails.cE_Related_Referral_Date == '') {\n this.prescriptionDetails.cE_Related_Referral_Date = null;\n }\n let result = await this.prescriptionService.setPrescriptionDetail(\n this.prescriptionDetails,\n isRejected\n );\n if (this.prescriptionDetails.visit_Note_Visit_Date == null) {\n this.prescriptionDetails.visit_Note_Visit_Date = '';\n }\n if (this.prescriptionDetails.cE_Visit_Date == null) {\n this.prescriptionDetails.cE_Visit_Date = '';\n }\n if (this.prescriptionDetails.cE_Related_Referral_Date == null) {\n this.prescriptionDetails.cE_Related_Referral_Date = '';\n }\n\n return result;\n }\n\n setCeLocation(ceLocation: string): void {}\n\n updateCeLocationInFollowUpPlan() {\n this.updateFollowUpPlan();\n this.validateClaim();\n }\n\n public formatDate(dateStr) {\n return new Date(dateStr).toLocaleDateString();\n }\n\n public formatPhone(value) {\n if (!value) {\n return '';\n }\n\n let cleaned = ('' + value).replace(/\\D/g, '');\n let match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\n if (match) {\n return `(${match[1]}) ${match[2]}-${match[3]}`;\n }\n return '';\n }\n\n public getPatientSex() {\n return this.selectedPatientInfo?.patientSex?.startsWith('M') ||\n this.selectedPatientInfo.patientSex.startsWith('m')\n ? 'Male'\n : 'Female';\n }\n\n public toggleValidatePanel() {\n this.isValidationPanelOpen = !this.isValidationPanelOpen;\n }\n}\n","\n
\n \n
340B Worklists
\n
\n \n
\n
\n\n
\n
Standard
\n \n
\n
\n
\n
\n \n
\n
\n
\n
{{list.name}}
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n\n
\n
\n \n
\n
{{selectedList?.name}}
\n
\n
\n \n \n
\n \n
\n\n
\n
","import { Component, EventEmitter, HostBinding, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FilterToggleService } from '@shared/services/filter-toggle/filter-toggle.service';\nimport { CareFeatureConstants } from '@shared/models/module-constants';\nimport { CoachTabs } from '@shared/components/coach-tabs/coach-tabs';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { SpacesToDashesPipe } from '@shared/pipes/spaces-to-dashes.pipe';\nimport { FilterOption } from '../care-all-prescriptions.component';\nimport _ from 'lodash';\nimport { GridApi } from 'ag-grid-community';\nexport type FilterOpenState = 'is-open' | 'is-closed';\n\nconst {\n PatientsFeature,\n CarePrescriptionFeature,\n CarePrescriptionProcessingFeature,\n CarePrescriptionInvoicingFeature,\n FeatureFlag340B,\n HiddenFeatureFlag340B,\n UIUpdates340B,\n ExceptionQueue340B,\n CareExceptionsComponent\n} = CareFeatureConstants;\n@Component({\n selector: 'care-all-prescriptions-filters',\n templateUrl: './care-all-prescriptions-filters.component.html',\n providers: [SpacesToDashesPipe],\n styleUrls: ['./care-all-prescriptions-filters.component.scss']\n})\nexport class CareAllPrescriptionsFiltersComponent implements OnInit, OnChanges {\n @Input() public gridApi: GridApi;\n @Input() public filterOptions: FilterOption[];\n @Output() public listSelected: EventEmitter = new EventEmitter();\n\n isListFiltersOpen: boolean = true;\n activeTab: 'standard' | 'custom' = 'standard';\n isDrillInOpen: boolean = false;\n isNewListDrawerOpen: boolean = false;\n allLists: CoachTabs[] = [\n {\n name: 'Pre-validation Exceptions',\n featureId: CareExceptionsComponent,\n featureFlag: ExceptionQueue340B\n },\n {\n name: 'Validate 340B',\n featureId: CarePrescriptionFeature,\n featureFlag: FeatureFlag340B\n },\n {\n name: 'Process 340B',\n featureId: CarePrescriptionProcessingFeature,\n featureFlag: FeatureFlag340B\n },\n {\n name: 'Invoice 340B',\n featureId: CarePrescriptionInvoicingFeature,\n featureFlag: HiddenFeatureFlag340B\n }\n ];\n selectedList: CoachTabs;\n @HostBinding('class')\n get pclass() {\n const sharedClasses = 'queue border-right u-position--relative coach-care-patients-filters';\n return this.isListFiltersOpen ? `${sharedClasses} is-open` : `${sharedClasses} is-closed`;\n }\n loadingStatus: boolean = false;\n constructor(\n private filterToggleService: FilterToggleService,\n protected featureFlagService: FeatureFlagService,\n private spacesToDashes: SpacesToDashesPipe\n ) {}\n ngOnChanges(changes: SimpleChanges): void {\n //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.\n //Add '${implements OnChanges}' to the class.\n if (changes?.filterOptions?.currentValue) {\n this.loadingStatus = false;\n }\n }\n ngOnInit(): void {\n this.allLists = this.allLists.filter(tab => {\n return this.featureFlagService.hasFeatureFlag(tab.featureFlag);\n });\n this.selectList(this.allLists[0]);\n }\n\n toggleListFilters(): void {\n this.isListFiltersOpen = !this.isListFiltersOpen;\n this.filterToggleService.toggleFilterPane(this.isListFiltersOpen);\n }\n\n openNewListDrawer(): void {}\n switchListsActiveTab(tab: 'standard' | 'custom'): void {\n if (!this.isNewListDrawerOpen && !this.isDrillInOpen) {\n this.activeTab = tab;\n }\n }\n selectList(list: CoachTabs): void {\n if (_.isEqual(this.selectedList, list)) {\n return;\n }\n this.selectedList = list;\n this.loadingStatus = true;\n this.listSelected.emit(this.selectedList);\n }\n toggleDrillInOpen(list: CoachTabs): void {\n this.selectList(list);\n this.isDrillInOpen = !this.isDrillInOpen;\n }\n}\n","import { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport {\n CareComponentConstants,\n CareFeatureConstants,\n CarePatientItem,\n PresetCategory\n} from '@shared/models/module-constants';\nimport { environment } from 'src/environments/environment';\nimport { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { Assignment } from '@shared/enums/assignment.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AllPatientsPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const item: IPatientFilterPreset = {\n category: PresetCategory.General,\n name: CarePatientItem.AllPatients,\n presetKey: CarePatientItem.AllPatients,\n label: 'All Patients',\n filters: [],\n componentId: CareComponentConstants.PatientList,\n hidePreset: true,\n filterComponent: null,\n filterSettings: null,\n dontStoreName: true,\n columns: this.getPresetColumns(),\n hiddenColumnsByDefault: ['lastCsthDate'],\n defaultFilterModel: {\n assignment: {\n filterType: 'set',\n values: [Assignment.Attributed, Assignment.MostAssignable]\n },\n },\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean | string }[] {\n const agGridCustomFilteringFlag = this.featureFlagService.hasFeatureFlag(\n CareFeatureConstants.AgGridCustomFilteringFlag\n );\n return [\n { select: true },\n { fullName: true },\n { mbi: true },\n { dob_age: true },\n { gender: true },\n { assignment: true },\n {\n predictedRiskLevel: environment.displayRiskLevel\n },\n { attributedCP: true },\n { awvTypeDue: true },\n { lastAWVDate: true },\n { lastAWVProvider: true },\n { ihAwvPatient: true },\n { hccGapCount: agGridCustomFilteringFlag },\n { diseaseCohorts: agGridCustomFilteringFlag },\n { lastCcmDate: true },\n { ccmLastProcCode: true},\n { ccmEligible: agGridCustomFilteringFlag },\n { raF_YTD: true },\n { pyRaf: true },\n { openRAFWt: true },\n { lastVisit: true },\n { attributedPractice: true },\n { totalCost: true },\n { edVisits: true },\n { officeVisits: true },\n { inpatientVisits: true },\n { enrollmentType: true },\n { phoneNumber: true },\n { lastActivityAt: this.hasPatientApp },\n { professionalName: this.hasPatientApp || this.hasPatientTwilioSMS },\n { actions: this.hasPatientApp },\n { dodBoolean: true },\n { lastCsthDate: true }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { environment } from 'src/environments/environment';\nimport { PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClinicalProgramCopdPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const item: IPatientFilterPreset = {\n category: PresetCategory.ClinicalProgram,\n name: CarePatientItem.ClinicalProgramCOPD,\n\n label: 'COPD',\n filters: [],\n diseaseCohortNameFromTrackApi: 'COPD Clinical Program',\n componentId: CareComponentConstants.PatientDiseaseCohorts,\n hidePreset: true,\n hidePresetAdditionCondition: this.userAccessService.hasComponent(\n this.userAccess,\n CareComponentConstants.CareManagement\n ),\n presetKey: 'Clinical_programs-COPD',\n versionKey: `columnState_${this.userId}_${CarePatientItem.ClinicalProgramCOPD}`,\n columns: this.getPresetColumns(),\n hiddenColumnsByDefault: [\n // https://caravanhealth.atlassian.net/browse/CC-3535\n 'attributedPractice',\n 'pyRaf',\n 'raF_YTD',\n 'openRAFWt',\n 'awvTypeDue',\n 'lastAWVDate',\n 'ccmEligible',\n 'diseaseCohorts',\n 'phone1',\n 'phone2',\n 'current_MBI',\n 'hccGapCount',\n 'totalSpend'\n ],\n defaultFilterModel: {\n isMostImpactable: {\n filterType: 'set',\n values: ['Yes']\n }\n }\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean }[] {\n return [\n { select: true },\n { fullName: true },\n { attributedCP: true },\n { dob_age: true },\n { gender: true },\n { current_MBI: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { spirometryProcedure_LastDate: true },\n { pulmonologistProcedure_LastProviderName: true },\n { pulmonologistProcedure_LastDate: true },\n { copdDxCount: true },\n { lastCcmDate: true },\n { ccmLastProcCode: true},\n { isMostImpactable: true },\n { lastVisit: true },\n { edVisits: true },\n { officeVisits: true },\n { inpatientVisits: true },\n {\n hccGapCount: this.agGridCustomFilteringFlag\n },\n { totalSpend: true },\n {\n diseaseCohorts: this.agGridCustomFilteringFlag\n },\n {\n ccmEligible: this.agGridCustomFilteringFlag\n },\n {\n raF_YTD: this.agGridCustomFilteringFlag\n },\n { openRAFWt: true },\n { attributedPractice: true },\n { awvTypeDue: true },\n { lastAWVDate: true },\n { pyRaf: true },\n { phone1: true },\n { phone2: true }\n ];\n }\n}\n","import { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { CareComponentConstants, CarePatientItem, PresetCategory } from '@shared/models/module-constants';\nimport { environment } from 'src/environments/environment';\nimport { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClinicalProgramHeartFailurePreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const item: IPatientFilterPreset = {\n category: PresetCategory.ClinicalProgram,\n name: CarePatientItem.ClinicalProgramHeartFailure,\n label: 'Heart Failure',\n diseaseCohortNameFromTrackApi: 'Heart Failure Clinical Program',\n filters: [],\n componentId: CareComponentConstants.PatientDiseaseCohorts,\n hidePreset: true,\n hidePresetAdditionCondition: this.hidePresetAdditionCondition,\n presetKey: 'Clinical_programs-Heart_Failure',\n columns: this.getPresetColumns(),\n hiddenColumnsByDefault: [\n // https://caravanhealth.atlassian.net/browse/CC-3535\n 'attributedPractice',\n 'pyRaf',\n 'raF_YTD',\n 'openRAFWt',\n 'awvTypeDue',\n 'lastAWVDate',\n 'ccmEligible',\n 'diseaseCohorts',\n 'phone1',\n 'phone2',\n 'current_MBI',\n 'hccGapCount',\n 'totalSpend'\n ],\n defaultFilterModel: {\n isMostImpactable: {\n filterType: 'set',\n values: ['Yes']\n }\n }\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean }[] {\n return [\n { select: true },\n { fullName: true },\n { attributedCP: true },\n { dob_age: true },\n { gender: true },\n { current_MBI: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { echoProcedure_LastDate: true },\n { cardiologistProcedure_LastProviderName: true },\n { cardiologistProcedure_LastDate: true },\n { hfDxCount: true },\n { lastCcmDate: true },\n { ccmLastProcCode: true},\n { isMostImpactable: true },\n { lastVisit: true },\n { edVisits: true },\n { officeVisits: true },\n { inpatientVisits: true },\n {\n hccGapCount: this.agGridCustomFilteringFlag\n },\n { totalSpend: true },\n {\n diseaseCohorts: this.agGridCustomFilteringFlag\n },\n {\n ccmEligible: this.agGridCustomFilteringFlag\n },\n {\n raF_YTD: this.agGridCustomFilteringFlag\n },\n { openRAFWt: true },\n { attributedPractice: true },\n { awvTypeDue: true },\n { lastAWVDate: true },\n { pyRaf: true },\n { phone1: true },\n { phone2: true }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { environment } from 'src/environments/environment';\nimport { PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClinicalProgramHypertensionPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const item: IPatientFilterPreset = {\n category: PresetCategory.ClinicalProgram,\n name: CarePatientItem.ClinicalProgramHypertension,\n presetKey: CarePatientItem.ClinicalProgramHypertension,\n label: 'Hypertension',\n filters: [],\n componentId: CareComponentConstants.PatientDiseaseCohorts,\n hidePreset: true,\n hidePresetAdditionCondition: this.userAccessService.hasComponent(\n this.userAccess,\n CareComponentConstants.CareManagement\n ),\n columns: this.getPresetColumns(),\n defaultFilterModel: {\n predictedRiskLevel: {\n filterType: 'set',\n values: ['High']\n }\n }\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean | string }[] {\n return [\n { select: true },\n { fullName: true },\n { current_MBI: true },\n { attributedCP: true },\n { dob_age: true },\n { gender: true },\n { assignment: true },\n {\n predictedRiskLevel: environment.displayRiskLevel\n },\n { totalSpend: true },\n {\n hccGapCount: this.agGridCustomFilteringFlag\n },\n {\n diseaseCohorts: this.agGridCustomFilteringFlag\n },\n {\n raF_YTD: this.agGridCustomFilteringFlag\n },\n { openRAFWt: true },\n { lastVisit: true },\n { attributedPractice: true },\n { awvTypeDue: true },\n { lastAWVDate: true },\n { edVisits: true },\n { pyRaf: true }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { environment } from 'src/environments/environment';\nimport { PatientEngagement, PatientEngagementComponentIds } from '@shared/enums';\nimport { PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EdUtilizationPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const item: IPatientFilterPreset = {\n category: PresetCategory.Cohorts,\n name: CarePatientItem.EdUtilization,\n presetKey: CarePatientItem.EdUtilization,\n label: 'ED Utilization',\n filters: [],\n componentId: CareComponentConstants.EdUtilizationWorklist,\n hidePreset: true,\n hidePresetAdditionCondition: this.userAccessService.hasComponent(\n this.userAccess,\n CareComponentConstants.CareManagement\n ),\n columns: this.getPresetColumns(),\n apiParams: {\n track: {\n TopCount: '20',\n OrderBy: 'openRAFWt',\n IncludeDeceased: 'false'\n }\n }\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean }[] {\n return [\n { select: true },\n { patientName: true },\n { dob: true },\n { gender: true },\n { assignment: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n {\n actions: this.userAccessService.hasComponent(this.userAccess, PatientEngagementComponentIds)\n },\n { pyRaf: true },\n { mbi: true },\n { attributedCP: true },\n { lastVisit: true },\n { totalCost: true },\n { edVisits: true },\n {\n hccGapCount: this.agGridCustomFilteringFlag\n },\n {\n diseaseCohorts: this.agGridCustomFilteringFlag\n },\n {\n ccmEligible: this.agGridCustomFilteringFlag\n },\n {\n raF_YTD: this.agGridCustomFilteringFlag\n },\n { openRAFWt: true },\n { attributedPractice: true },\n { phoneNumber: true },\n { awvTypeDue: true },\n { lastAWVDate: true }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { CareFeatureConstants,PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AwvBillingPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const categoryName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.AnnualWellnessVisits: PresetCategory.Worklists;\n const item: IPatientFilterPreset = {\n category: categoryName,\n name: CarePatientItem.AwvBilling,\n presetKey: CarePatientItem.AwvBilling,\n label: 'In-Home AWV Billing',\n filters: [],\n componentId: CareComponentConstants.IHEBilling,\n hidePreset: true,\n filterSettings: null,\n columns: this.getPresetColumns(),\n patientUrlQueryParams: { tab: 'Worklist Details' }\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean | string }[] {\n return [\n { select: true },\n { mbi: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { phoneNumber: true },\n { address: true },\n { IHEAWVVisitDate: true },\n { cptCode: true },\n { claimFrequencyCode: true },\n { IHEAWVBatchDate: true },\n { iheDxCount: true },\n { renderingProvider: true },\n { attributedPractice: true },\n { attributedCP: true }\n ];\n }\n\n}\n\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { CareFeatureConstants, PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AwvFilesPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const categoryName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.AnnualWellnessVisits: PresetCategory.Worklists;\n const item: IPatientFilterPreset = {\n category: categoryName,\n name: CarePatientItem.AwvFiles,\n presetKey: CarePatientItem.AwvFiles,\n label: 'In Home AWV Files',\n filters: [],\n componentId: this.isIHECohortEnabled ? CareComponentConstants.IHECohort : null,\n hidePreset: true,\n dontStoreName: true,\n patientSidebar: true,\n filterSettings: null,\n listDefinition: 'Download files from In-Home Annual Wellness Visit',\n columns: this.getPresetColumns(),\n patientUrlQueryParams: {\n tab: 'Worklist Details',\n subtab: 'In Home AWV Files'\n },\n defaultFilterModel: {\n IHEDownloadStatus: {\n filterType: 'set',\n values: ['New', 'Partial']\n }\n }\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean | string }[] {\n return [\n { select: true },\n { current_MBI: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { IHEAWVVisitDate: true },\n { IHEfileActions: true },\n { IHEDownloadDate: true },\n { IHEDownloadStatus: true },\n { assignment: true },\n { attributedPractice: true },\n { attributedCP: true },\n { renderingProviderName: true }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { CareFeatureConstants, PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AwvSchedulePreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const categoryName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.AnnualWellnessVisits: PresetCategory.Worklists;\n const item: IPatientFilterPreset = {\n category: categoryName,\n name: CarePatientItem.AwvSchedule,\n presetKey: CarePatientItem.AwvSchedule,\n label: 'In Home AWV Schedule',\n filters: [],\n componentId: this.isInHomeAWVScheduleList ? CareComponentConstants.IHESchedule : null,\n hidePreset: true,\n filterSettings: null,\n listDefinition: 'View patient status in the In-Home Annual Wellness Visit program',\n columns: this.getPresetColumns()\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean | string }[] {\n return [\n { select: true },\n { mbi: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { phoneNumber: true },\n { address: true },\n { scheduleStatus: true },\n { schedulingDescription: true },\n { callDate: true },\n { dateOfService: true },\n { assignment: true },\n { renderingProvider: true },\n { attributedPractice: true },\n { attributedCP: true },\n { hccGapCount: true },\n { predictedRiskLevel: true },\n { lastAWVDate: true },\n { lastCCMDate: true },\n { ccmEligible: true },\n { lastVisit: true },\n { diseaseCohorts: true },\n { totalCost: true },\n { edVisits: true },\n { openRAFWt: true },\n { raF_YTD: true }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { CareFeatureConstants, PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HccListPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const categoryName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.AnnualWellnessVisits: PresetCategory.Cohorts;\n if (this.isHCCListRevampEnabled) {\n const item: IPatientFilterPreset = {\n category: categoryName,\n name: CarePatientItem.HccTop50,\n presetKey: CarePatientItem.HccTop50,\n label: 'TOP 50',\n filters: [],\n componentId: this.isHCCVIPCohortListEnabled ? CareComponentConstants.PatientList : null,\n hidePreset: true,\n dontStoreName: true,\n columns: this.getPresetColumns(),\n hiddenColumnsByDefault: ['lastCsthDate']\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n const item: IPatientFilterPreset = {\n category: PresetCategory.Cohorts,\n name: CarePatientItem.HccVipCohort,\n presetKey: CarePatientItem.HccVipCohort,\n label: 'Chronic Conditions VIP Cohort',\n filters: [],\n componentId: this.isHCCVIPCohortListEnabled ? CareComponentConstants.PatientList : null,\n hidePreset: true,\n dontStoreName: true,\n columns: this.getPresetColumns(),\n apiParams: {\n track: {\n TopPercent: '20',\n OrderBy: 'openRAFWt',\n IncludeDeceased: 'false'\n }\n }\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean | string}[] {\n if (this.isHCCListRevampEnabled) {\n return [\n { select: true },\n { fullName: true },\n { mbi: true },\n { gender: true },\n { dob_age: true },\n { phoneNumber: true },\n { assignment: true },\n { attributedPractice: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n {\n hccGapCount: this.agGridCustomFilteringFlag\n },\n { openRAFWt: true, sort: 'desc' },\n { raF_YTD: true },\n { lastAWVDate: true },\n { lastAWVProvider: true },\n { ihAwvPatient: true },\n { lastVisit: true },\n { lastCcmDate: true },\n { ccmLastProcCode: true},\n {\n diseaseCohorts: this.agGridCustomFilteringFlag\n },\n { totalCost: true },\n { edVisits: true },\n { officeVisits: true },\n { inpatientVisits: true },\n { enrollmentType: true },\n { lastCsthDate: true }\n ];\n }\n\n return [\n { select: true },\n { fullName: true },\n { dob_age: true },\n { gender: true },\n { mbi: true },\n {\n lastActivityAt: this.hasPatientApp\n },\n { phoneNumber: true },\n {\n professionalName: this.hasPatientApp\n },\n { assignment: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n {\n actions: this.hasPatientApp\n },\n {\n ccmEligible: this.agGridCustomFilteringFlag\n },\n {\n diseaseCohorts: this.agGridCustomFilteringFlag\n },\n { totalCost: true },\n { raF_YTD: true },\n { awvTypeDue: true },\n { lastAWVDate: true },\n {\n hccGapCount: this.agGridCustomFilteringFlag\n },\n { edVisits: true },\n { attributedPractice: true },\n { openRAFWt: true, sort: 'desc' },\n { lastVisit: true }\n ];\n }\n}\n","import { Component, OnInit, LOCALE_ID, Inject} from '@angular/core';\nimport { formatDate } from '@angular/common';\n\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { AwvWorklistService } from '../awv-worklist.service';\n\n@Component({\n selector: 'coach-awv-worklist-filters',\n templateUrl: './awv-worklist-filters.component.html',\n styleUrls: ['./awv-worklist-filters.component.scss']\n})\nexport class AwvWorklistFiltersComponent implements OnInit {\n\n filtersForm: UntypedFormGroup;\n minDate: string = formatDate(new Date('1901-01-01'), 'MM/dd/yyyy', this.locale);\n constructor(private formBuilder: UntypedFormBuilder, public awvWorklistService: AwvWorklistService, @Inject(LOCALE_ID) private locale: string) { }\n\n ngOnInit(): void {\n this.filtersForm = this.formBuilder.group({\n fromDate: this.awvWorklistService.fromDate,\n toDate: this.awvWorklistService.toDate\n });\n }\n\n loadItems(): void {\n this.awvWorklistService.loadItems$.next();\n }\n\n onFromDateChange(event: any): void {\n if (event.target.value === \"\") {\n this.minDate = formatDate('1901-01-01', 'MM/dd/yyyy', this.locale);\n } else {\n this.minDate = formatDate(event.target.value, 'MM/dd/yyyy', this.locale);\n }\n const fromDate = new Date(this.minDate);\n const toDate = new Date(this.filtersForm.controls.toDate.value);\n \n if (fromDate > toDate) {\n this.filtersForm.controls.toDate.setValue(event.target.value);\n }\n }\n\n onToDateChange(): void {\n if (this.filtersForm.controls.fromDate.value === \"\") {\n this.filtersForm.controls.fromDate.value === formatDate(new Date(), 'MM/dd/yyyy', this.locale);\n } \n }\n}\n","
\n \n \n \n \n \n
","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport {\n CareComponentConstants,\n CareFeatureConstants,\n CareOrchestrationConstants,\n CarePatientItem,\n PresetCategory\n} from '@shared/models/module-constants';\nimport { AwvWorklistFiltersComponent } from '@care/components/awv-worklist/awv-worklist-filters/awv-worklist-filters.component';\nimport moment from 'moment';\nimport { PatientEngagementComponentIds } from '@shared/enums';\nimport { environment } from 'src/environments/environment';\nimport { Assignment } from '@shared/enums/assignment.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AwvPatientsWorklistPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const categotyName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.AnnualWellnessVisits: PresetCategory.Cohorts;\n if (this.awvPatientsWorklist) {\n const item: IPatientFilterPreset = {\n category: categotyName,\n name: CarePatientItem.AwvOpportunities,\n presetKey: CarePatientItem.AwvOpportunities,\n label: 'AWV Opportunities',\n filters: [],\n componentId: CareComponentConstants.AwvPatientsWorklist,\n hidePreset: true,\n filterComponent: AwvWorklistFiltersComponent,\n dontStoreName: true,\n patientSidebar: true,\n patientUrlQueryParams: {\n tab: 'Facesheet',\n subtab: 'AWV Opportunities'\n },\n columns: this.getPresetColumns(),\n hiddenColumnsByDefault: this.getHiddenColumns(),\n defaultFilterModel: {\n assignment: {\n filterType: 'set',\n values: [Assignment.Attributed]\n },\n lastAWVDate: {\n dateFrom: moment().subtract(1, 'year').format('YYYY-MM-DD hh:mm:ss'), // format \"2023-05-02 00:00:00\",\n dateTo: null,\n filterType: 'date',\n type: 'lessThanOrEqual'\n },\n allAWVPatientsListStatus: {\n filterType: 'set',\n values: ['READY_TO_SCHEDULE', 'READY_TO_REMIND', 'READY_TO_SELF_REPORT']\n }\n },\n selectedByDefault: true,\n AWVPatientsStatusURLQuery: true\n };\n\n item.versionKey = this.getVersionKey(item.presetKey);\n return item;\n } else {\n // If user doesn't have acccess it uses this.\n const item: IPatientFilterPreset = {\n category: PresetCategory.AnnualWellnessVisits,\n name: CarePatientItem.AwvOpportunities,\n presetKey: CarePatientItem.AwvOpportunities,\n label: 'AWV Opportunities',\n filters: [],\n componentId: CareComponentConstants.PatientDiseaseCohorts,\n hidePreset: true,\n filterComponent: AwvWorklistFiltersComponent,\n dontStoreName: true,\n patientSidebar: true,\n patientUrlQueryParams: {\n tab: 'Facesheet',\n subtab: 'AWV Opportunities'\n },\n columns: this.getPresetColumns(),\n hiddenColumnsByDefault: this.getHiddenColumns(),\n defaultFilterModel: {\n assignment: {\n filterType: 'set',\n values: [Assignment.Attributed]\n }, \n newStatusDate: {\n filterType: 'set',\n values: [null]\n }\n },\n selectedByDefault: true\n };\n\n item.versionKey = this.getVersionKey(item.presetKey);\n return item;\n }\n }\n\n private getPresetColumns(): { [key in string]: boolean | string }[] {\n if (this.awvPatientsWorklist) {\n return [\n { select: true },\n { fullName: true },\n { mbi: true },\n { dob_age: true },\n { gender: true },\n { assignment: true },\n {\n predictedRiskLevel: environment.displayRiskLevel,\n sort: 'desc'\n },\n { attributedCP: true },\n {\n allAWVPatientsListStatus: true\n },\n { awvTypeDue: true },\n { lastAWVDate: !this.ehrFlag },\n { lastClaimAWVDate: this.ehrFlag },\n { lastAWVProvider: !this.ehrFlag },\n { lastClaimAWVProvider: this.ehrFlag },\n { statusDate: !this.ehrFlag },\n { newStatusDate: this.ehrFlag },\n { lastEHRAWVIPPEDate: this.ehrFlag },\n { ehrLastAwvCommunity: this.ehrFlag },\n { ehrLastAwvProvider: this.ehrFlag },\n { ehrReportedLastAwvDate: this.ehrFlag },\n { ehrReportedLastAwvSource: this.ehrFlag },\n { ihAwvPatient: true },\n {\n hccGapCount: this.agGridCustomFilteringFlag\n },\n {\n diseaseCohorts: this.agGridCustomFilteringFlag\n },\n { lastCcmDate: true },\n { ccmLastProcCode: true},\n {\n ccmEligible: this.agGridCustomFilteringFlag\n },\n {\n raF_YTD: this.agGridCustomFilteringFlag\n },\n {\n pyRaf: this.agGridCustomFilteringFlag\n },\n { openRAFWt: true },\n { lastVisit: true },\n { attributedPractice: true },\n { totalCost: true },\n { edVisits: true },\n { officeVisits: true },\n { inpatientVisits: true },\n { enrollmentType: true },\n { phoneNumber: true },\n\n {\n actions: this.userAccessService.hasComponent(this.userAccess, PatientEngagementComponentIds)\n },\n { lastCsthDate: true },\n { awvWorkflowStatus: true }\n ];\n }\n\n return [\n { select: true },\n { fullName: true },\n { mbi: true },\n { dob_age: true },\n { gender: true },\n { assignment: true },\n {\n predictedRiskLevel: environment.displayRiskLevel, sort: 'desc'\n },\n { attributedCP: true },\n {\n awvWorkflowStatus: this.hasCareOrchFeatureFlagAndComponents()\n },\n { awvTypeDue: true },\n { lastAWVDate: !this.ehrFlag },\n {\n lastClaimAWVDate: this.ehrFlag\n },\n {\n lastAWVProvider: !this.ehrFlag\n },\n {\n lastClaimAWVProvider: this.ehrFlag\n },\n { statusDate: !this.ehrFlag },\n { newStatusDate: this.ehrFlag },\n {\n lastEHRAWVIPPEDate: this.ehrFlag\n },\n {\n ehrLastAwvCommunity: this.ehrFlag\n },\n {\n ehrLastAwvProvider: this.ehrFlag\n },\n {\n ehrReportedLastAwvDate: this.ehrFlag\n },\n {\n ehrReportedLastAwvSource: this.ehrFlag\n },\n { ihAwvPatient: true },\n {\n hccGapCount: this.agGridCustomFilteringFlag\n },\n {\n diseaseCohorts: this.agGridCustomFilteringFlag\n },\n { lastCcmDate: true },\n { ccmLastProcCode: true},\n {\n ccmEligible: this.agGridCustomFilteringFlag\n },\n {\n raF_YTD: this.agGridCustomFilteringFlag\n },\n {\n pyRaf: this.agGridCustomFilteringFlag\n },\n { openRAFWt: true },\n { lastVisit: true },\n { attributedPractice: true },\n { totalCost: true },\n { edVisits: true },\n { officeVisits: true },\n { inpatientVisits: true },\n { enrollmentType: true },\n { phoneNumber: true },\n\n {\n actions: this.userAccessService.hasComponent(this.userAccess, PatientEngagementComponentIds)\n },\n { lastCsthDate: true }\n ];\n }\n\n private hasCareOrchFeatureFlagAndComponents(): boolean {\n return (\n this.featureFlagService.hasFeatureFlag(CareOrchestrationConstants.GridViewAccessRequirements.featureFlagId) &&\n CareOrchestrationConstants.GridViewAccessRequirements.componentIds.every(id =>\n this.userAccessService.hasComponent(this.userAccessService.currentAccess$.value, id)\n )\n );\n }\n\n private getHiddenColumns(): string[] {\n const hiddenColumns = ['lastCsthDate', 'ehrLastAwvProvider', 'ehrLastAwvCommunity'];\n\n if (!this.hideEhrColumnsInAwvOpportunities) {\n return hiddenColumns;\n }\n\n return hiddenColumns.concat(['newStatusDate', 'lastEHRAWVIPPEDate']);\n }\n\n private getVersionKey(presetKey: string) {\n if (this.hideEhrColumnsInAwvOpportunities) {\n return `columnState_v2_${this.userId}_${presetKey}`;\n }\n return `columnState_${this.userId}_${presetKey}`;\n }\n\n private get hideEhrColumnsInAwvOpportunities() {\n return this.featureFlagService.hasFeatureFlag(CareFeatureConstants.HideEHRColumnsInAwvOpportunities);\n }\n}\n","import { formatDate } from '@angular/common';\nimport { Component, OnInit, LOCALE_ID, Inject } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { HccFacesheetScheduleService } from '../hcc-facesheet-schedule.service';\n\n@Component({\n selector: 'coach-facesheet-schedule-filters',\n templateUrl: './facesheet-schedule-filters.component.html',\n styleUrls: ['./facesheet-schedule-filters.component.scss']\n})\nexport class FacesheetScheduleFiltersComponent implements OnInit {\n\n scheduleForm: UntypedFormGroup;\n minDate: string = formatDate(new Date(), 'MM/dd/yyyy', this.locale);\n\n constructor(private formBuilder: UntypedFormBuilder, \n public hccFacesheetScheduleService: HccFacesheetScheduleService,\n @Inject(LOCALE_ID) private locale: string) { }\n\n ngOnInit(): void {\n this.scheduleForm = this.formBuilder.group({\n fromDate: this.hccFacesheetScheduleService.fromDate,\n toDate: this.hccFacesheetScheduleService.toDate\n });\n }\n\n loadSchedules(): void {\n this.hccFacesheetScheduleService.loadSchedules$.next();\n }\n\n onFromDateChange(event: any): void {\n this.minDate = formatDate(event.target.value, 'MM/dd/yyyy', this.locale);\n const fromDate = new Date(this.minDate);\n const toDate = new Date(this.scheduleForm.controls.toDate.value);\n\n if (fromDate > toDate) {\n this.scheduleForm.controls.toDate.setValue(event.target.value);\n }\n }\n\n}\n","
\n \n \n \n \n \n
","import { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { CareFeatureConstants,CareComponentConstants, CarePatientItem, PresetCategory } from '@shared/models/module-constants';\nimport { FacesheetScheduleFiltersComponent } from '@care/components/facesheet-schedule/facesheet-schedule-filters/facesheet-schedule-filters.component';\nimport { environment } from 'src/environments/environment';\nimport { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FacesheetPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const categoryName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.AnnualWellnessVisits: PresetCategory.Facesheet;\n const item: IPatientFilterPreset = {\n category: categoryName,\n name: CarePatientItem.FacesheetSchedule,\n presetKey: CarePatientItem.FacesheetSchedule,\n label: 'Facesheet Schedule',\n filters: [],\n componentId: CareComponentConstants.HccFacesheetBySchedule,\n hidePreset: true,\n columns: this.getPresetColumns(),\n filterComponent: FacesheetScheduleFiltersComponent\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean }[] {\n return [\n { status: true },\n { appointmentDate: true },\n { appointmentTime: true },\n { clinicianName: true },\n { patientName: true },\n { patientId: true },\n { dob: true },\n { mbi: true },\n { assignment: true },\n { attributedCP: true },\n { appointmentInfo: true },\n { locationId: true },\n { currentRiskLevel: true },\n { predictedRiskLevel: environment.displayRiskLevel }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { environment } from 'src/environments/environment';\nimport { AllPatientSnfStatusItems, Patient } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/user';\nimport { CareFeatureConstants, PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PacNavigatorProgramPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const categoryName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.PostAcuteCare: PresetCategory.Worklists;\n const item: IPatientFilterPreset = {\n category: categoryName,\n name: CarePatientItem.PacNavigatorProgram,\n presetKey: CarePatientItem.PacNavigatorProgram,\n label: 'PAC Navigator Program',\n filters: [],\n componentId: CareComponentConstants.PACNavigatorProgram,\n hidePreset: true,\n dontStoreName: true,\n columns: this.getPresetColumns(),\n patientSidebar: true,\n patientUrlQueryParams: {\n tab: 'Worklist Details',\n subtab: 'PAC Navigator Program'\n },\n defaultFilterModel: {\n snfStatus: {\n filterType: 'set',\n values: ['Admitted', 'Discharged']\n }\n },\n requiredPatientFields: ['snfStatus'],\n csvAddition: {\n snfFlagsList: {\n additionalGridColumns: AllPatientSnfStatusItems.map(column => {\n return {\n headerName: this.splitStringIntoWords(column),\n field: column,\n hide: true,\n displayInCSV: true\n };\n }),\n additionalCsvColumns: AllPatientSnfStatusItems,\n addPatientColumns(originalValue: string[], patient: Patient): void {\n AllPatientSnfStatusItems.forEach(item => {\n patient[item] = originalValue?.includes(item) ? 'Yes' : 'No';\n });\n }\n }\n }\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean | string }[] {\n return [\n { select: true },\n { fullName: true },\n { dob: true },\n { mbi: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { attributedCP: true },\n { snfName: true },\n { snfAdmittedAt: true },\n { snfDischargedAt: true },\n { snfStatus: true },\n { snfFlagsList: true },\n { assignment: true },\n { gender: true },\n { attributedPractice: true },\n { lastAWVDate: true },\n { lastAWVProvider: true },\n { ihAwvPatient: true },\n { hccGapCount: true },\n { openRAFWt: true },\n { pyRaf: true },\n { lastCCMDate: true },\n { edVisits: true },\n { inpatientVisits: true },\n { officeVisits: true },\n { lastVisit: true },\n { enrollmentType: true },\n { isUsingSnf3DayWaiver: this.hasPAC3DayWaiver }\n ];\n }\n\n splitStringIntoWords(string: string): string {\n return (\n string[0] +\n string\n .slice(1, string.length)\n .replace(/([A-Z])/g, ' $1')\n .trim()\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { PatientEngagement, PatientEngagementComponentIds } from '@shared/enums';\nimport { PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\nimport { environment } from 'src/environments/environment.coachDev';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ChronicConditionsChfPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const item: IPatientFilterPreset = {\n category: PresetCategory.ChronicConditions,\n name: CarePatientItem.Chf,\n label: 'CHF',\n diseaseCohortNameFromTrackApi: 'Heart Failure',\n filters: [],\n componentId: CareComponentConstants.PatientDiseaseCohorts,\n hidePreset: true,\n columns: this.getPresetColumns(),\n presetKey: CarePatientItem.Chf\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean }[] {\n return [\n { select: true },\n { fullName: true },\n { current_MBI: true },\n { attributedCP: true },\n { phone1: true },\n { phone2: true },\n { dob_age: true },\n { gender: true },\n { assignment: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n {\n actions: this.userAccessService.hasComponent(this.userAccess, PatientEngagementComponentIds)\n },\n { totalSpend: true },\n {\n hccGapCount: this.agGridCustomFilteringFlag\n },\n {\n diseaseCohorts: this.agGridCustomFilteringFlag\n },\n {\n ccmEligible: this.agGridCustomFilteringFlag\n },\n {\n raF_YTD: this.agGridCustomFilteringFlag\n },\n { openRAFWt: true },\n { lastVisit: true },\n { attributedPractice: true },\n { awvTypeDue: true },\n { lastAWVDate: true },\n { edVisits: true },\n { pyRaf: true }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { environment } from 'src/environments/environment';\nimport { CareFeatureConstants, PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CareManagementAllProgramPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const categoryName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.ChronicConditions : PresetCategory.Cohorts;\n const item: IPatientFilterPreset = {\n category: categoryName,\n name: CarePatientItem.CareManagementAllProgram,\n presetKey: 'Care Management',\n label: 'Care Management',\n urlLabel: 'Care Management AllProgram',\n filters: [],\n componentId: CareComponentConstants.CareManagement,\n hidePreset: true,\n filterComponent: null,\n filterSettings: null,\n listDefinition: 'Target your patients for care management and clinical programs',\n columns: this.getPresetColumns(),\n hiddenColumnsByDefault: [\n 'raF_YTD',\n 'pyRaf',\n 'totalSpend',\n 'hccGapCount',\n 'openRAFWt',\n 'awvTypeDue',\n 'lastAWVDate',\n 'attributedPractice',\n 'enrollmentType',\n ],\n defaultFilterModel: { \n ssPercent: {\n filterType: 'number',\n type: 'lessThanOrEqual',\n filter: 15\n }\n }\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}_2`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean }[] {\n return [\n { select: true },\n { mbi: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { diseaseCohorts: true },\n { ccmLastProcCode: true},\n { lastCcmDate: true },\n { ccmEligible: true },\n { lastVisit: true },\n { officeVisits: true },\n { edVisits: true },\n { inpatientVisits: true },\n { ssDenom: true },\n { raF_YTD: this.agGridCustomFilteringFlag },\n { pyRaf: true },\n { totalSpend: true },\n { hccGapCount: true },\n { openRAFWt: true },\n { awvTypeDue: true }, \n { lastAWVDate: true },\n { attributedPractice: true },\n { enrollmentType: true },\n { ssPercent: true }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { environment } from 'src/environments/environment';\nimport {CareFeatureConstants,PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CareManagementCopdPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const categoryName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.ChronicConditions: PresetCategory.Cohorts;\n const item: IPatientFilterPreset = {\n category: categoryName,\n name: CarePatientItem.CareManagementCopd,\n label: 'Care Management',\n urlLabel: 'Care Management COPD',\n filters: [],\n componentId: CareComponentConstants.CareManagement,\n hidePreset: true,\n hidePresetAdditionCondition: true,\n filterComponent: null,\n filterSettings: null,\n columns: this.getPresetColumns(),\n hiddenColumnsByDefault: [\n 'raF_YTD',\n 'pyRaf',\n 'openRAFWt',\n 'awvTypeDue',\n 'lastAWVDate',\n 'attributedPractice',\n 'enrollmentType',\n ],\n listDefinition: 'Target your patients for care management and clinical programs',\n defaultFilterModel: { \n ssPercent: { \n filterType: 'number',\n type: 'lessThanOrEqual',\n filter: 15\n }\n },\n presetKey: 'Care Management'\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}_2`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean }[] {\n return [\n { select: true },\n { mbi: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { cohortProcedureLastDate: true },\n { cohortSpecialistLastProviderName: true },\n { cohortSpecialistLastDate: true },\n { copdDxCount: true },\n { ccmLastProcCode: true},\n { lastCcmDate: true },\n { ccmEligible: true },\n { lastVisit: true },\n { officeVisits: true },\n { inpatientVisits: true },\n { edVisits: true },\n { hccGapCount: true },\n { totalSpend: true },\n { alignToClinical: true },\n { ssDenom: true },\n { raF_YTD: this.agGridCustomFilteringFlag },\n { pyRaf: true },\n { openRAFWt: true },\n { awvTypeDue: true }, \n { lastAWVDate: true },\n { attributedPractice: true },\n { enrollmentType: true },\n { ssPercent: true }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { environment } from 'src/environments/environment';\nimport { CareFeatureConstants, PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CareManagementHeartFailurePreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const categoryName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.ChronicConditions: PresetCategory.Cohorts;\n const item: IPatientFilterPreset = {\n category: categoryName,\n name: CarePatientItem.CareManagementHeartFailure,\n label: 'Care Management',\n urlLabel: 'Care Management Heart Failure',\n filters: [],\n componentId: CareComponentConstants.CareManagement,\n hidePreset: true,\n hidePresetAdditionCondition: true,\n filterComponent: null,\n filterSettings: null,\n columns: this.getPresetColumns(),\n listDefinition: 'Target your patients for care management and clinical programs',\n hiddenColumnsByDefault: [\n 'raF_YTD',\n 'pyRaf',\n 'openRAFWt',\n 'awvTypeDue',\n 'lastAWVDate',\n 'attributedPractice',\n 'enrollmentType',\n ],\n defaultFilterModel: { \n ssPercent: { \n filterType: 'number',\n type: 'lessThanOrEqual',\n filter: 15\n }\n },\n presetKey: 'Care Management'\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}_2`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean }[] {\n return [\n { select: true },\n { mbi: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { hfCohortProcedureLastDate: true },\n { hfCohortSpecialistLastProviderName: true },\n { hfCohortSpecialistLastDate: true },\n { hfDxCount: true },\n { ccmLastProcCode: true},\n { lastCcmDate: true },\n { ccmEligible: true },\n { lastVisit: true },\n { officeVisits: true },\n { inpatientVisits: true },\n { edVisits: true },\n { hccGapCount: true },\n { totalSpend: true },\n { alignToClinical: true },\n { ssDenom: true },\n { raF_YTD: this.agGridCustomFilteringFlag },\n { pyRaf: true },\n { openRAFWt: true },\n { awvTypeDue: true }, \n { lastAWVDate: true },\n { attributedPractice: true },\n { enrollmentType: true },\n { ssPercent: true }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { environment } from 'src/environments/environment';\nimport { CareFeatureConstants,PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CareManagementHypertensionPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const categoryName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.ChronicConditions: PresetCategory.Cohorts;\n const item: IPatientFilterPreset = {\n category: categoryName,\n name: CarePatientItem.CareManagementHypertension,\n label: 'Care Management',\n urlLabel: 'Care Management Hypertension',\n filters: [],\n componentId: CareComponentConstants.CareManagement,\n hidePreset: true,\n hidePresetAdditionCondition: true,\n filterComponent: null,\n filterSettings: null,\n columns: this.getPresetColumns(),\n hiddenColumnsByDefault: [],\n listDefinition: 'Target your patients for care management and clinical programs',\n defaultFilterModel: { \n ssPercent: { \n filterType: 'number',\n type: 'lessThanOrEqual',\n filter: 15\n }\n },\n presetKey: 'Care Management'\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}_2`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean | string }[] {\n return [\n { select: true },\n { mbi: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { ccmEligible: this.agGridCustomFilteringFlag },\n { totalSpend: true },\n { hccGapCount: true },\n { diseaseCohorts: this.agGridCustomFilteringFlag },\n { raF_YTD: true },\n { totalGapWt: true },\n { lastVisit: true },\n { attributedPractice: true },\n { awvTypeDue: true },\n { lastAWVDate: true },\n { edVisits: true },\n { pyRaf: true },\n { ssDenom: true },\n { ssPercent: true }\n ];\n }\n}\n","export enum smsProgramType {\n COPD = \"COPD\", \n HF = \"Heart Failure\"\n } ","import { Injectable } from '@angular/core';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { PatientEngagement, } from '@shared/enums';\nimport { PresetCategory, CarePatientItem } from '@shared/models/module-constants';\nimport { PatientViewModel } from '@shared/models/patient';\nimport { environment } from 'src/environments/environment';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { CareFeatureConstants } from \"@shared/models/module-constants\";\nimport { smsProgramType } from '@shared/enums/sms-programType.enum';\nimport moment from 'moment';\n@Injectable({\n providedIn: 'root'\n})\nexport class SmsOutreachProgramPreset extends PresetItemBase implements IPresetItemContract {\n activeOrgAlerts: Array = [];\n private isCombinedSMSCohortsEnabled = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CombineSMSCohorts);\n getPresetItem(): IPatientFilterPreset {\n const categoryName: PresetCategory = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag) ? PresetCategory.ChronicConditions: PresetCategory.Worklists;\n const item: IPatientFilterPreset = {\n category: categoryName,\n name: CarePatientItem.SmsOutreachProgram,\n presetKey: CarePatientItem.SmsOutreachProgram,\n label: 'SMS Outreach Program',\n filters: [],\n componentId: this.isSMSOutreachProgramEnabled ? PatientEngagement.PatientTwilioSMS : null,\n hidePreset: true,\n dontStoreName: true,\n hiddenColumnsByDefault: this.getHiddenColumns(),\n columns: this.getPresetColumns(),\n defaultFilterModel: {\n status: {\n filterType: 'set',\n values: ['Active']\n }\n },\n patientsDataExtender: async (patients: PatientViewModel[], orgId: string): Promise => {\n let tasks = await this._orgService.getTasksByOrg(orgId, 'twilioStudioFlow');\n let completions = await this._orgService.getCompletionsByOrg(orgId, 'twilioStudioFlow');\n let patientDataById = {};\n tasks?.forEach(task => {\n if (!patientDataById[task.userId]) {\n patientDataById[task.userId] = {};\n }\n patientDataById[task.userId].status = task.isActive;\n let smsProgram : smsProgramType;\n if (task.type === \"twilioStudioFlow\") {\n switch (task.subType) {\n case \"COPD\":\n smsProgram = smsProgramType.COPD;\n break;\n case \"Heart Failure\":\n smsProgram = smsProgramType.HF;\n break;\n }\n }\n patientDataById[task.userId].smsProgram = this.programTypeDisplayString(smsProgram);\n });\n completions?.forEach(completion => {\n if (completion.event?.msg) {\n if (!patientDataById[completion.userId]) {\n patientDataById[completion.userId] = {};\n }\n patientDataById[completion.userId].lastResponseDate = completion.event?.time || '';\n patientDataById[completion.userId].lastResponse =\n completion.event?.event == 'undeliverable' ? 'Undeliverable' : completion.event?.msg;\n }\n });\n\n if (!this.activeOrgAlerts?.length) {\n this.activeOrgAlerts = await this._patientAlertService.getWPAPIorgAlerts(orgId);\n }\n this.activeOrgAlerts?.forEach(alert => {\n if (alert.title == 'COPD SMS Alert') {\n if (!patientDataById[alert.userId]) {\n patientDataById[alert.userId] = {};\n }\n patientDataById[alert.userId].alert = true;\n }\n });\n let filteredPatients: PatientViewModel[] = [];\n patients?.forEach(patient => {\n if (patientDataById[patient?.carePatient?._id]) {\n patient.status = patientDataById[patient.carePatient._id].status ? 'Active' : 'Inactive';\n const lastResponseDateTemp = patientDataById[patient.carePatient._id].lastResponseDate;\n if (lastResponseDateTemp) {\n patient.lastResponseDate = moment.utc(lastResponseDateTemp).format(\"YYYY-MM-DD\");\n } else {\n patient.lastResponseDate = \"\";\n }\n patient.lastResponse = patientDataById[patient.carePatient._id].lastResponse;\n patient.smsProgram = patientDataById[patient.carePatient._id].smsProgram;\n if (\n patient.carePatient?.identifiers?.find(\n identifier => identifier.issuer == 'https://identity.caravanhealth.com/smscareplanphonenumber'\n )\n ) {\n patient.enrollmentDate = patient.carePatient?.identifiers?.find(\n identifier => identifier.issuer == 'https://identity.caravanhealth.com/smscareplanphonenumber'\n )?.createdAt;\n patient.enrollmentDate = patient.enrollmentDate ? moment.utc(patient.enrollmentDate).format(\"YYYY-MM-DD\") : \"\";\n }\n filteredPatients.push(patient);\n }\n });\n return filteredPatients;\n }\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private programTypeDisplayString(taskSubType : smsProgramType) : string{\n if (taskSubType == smsProgramType.COPD){\n return \"COPD\";\n }\n else if (taskSubType == smsProgramType.HF){\n return \"Heart Failure\"\n }\n }\n\n private getHiddenColumns(): string[] {\n return this.isCombinedSMSCohortsEnabled ?\n [\n 'lastAWVDate',\n 'ccmEligible',\n 'diseaseCohorts',\n 'openRAFWt',\n 'raF_YTD',\n 'hccGapCount',\n 'assignment'\n ] : []\n }\n\n private getPresetColumns(): { [key in string]: boolean | string }[] {\n return [\n { select: true },\n { mbi: true },\n { fullName: true },\n { dob: true },\n { gender: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { actions: this.isCombinedSMSCohortsEnabled, sort: 'desc' },\n { lastResponse: true },\n { lastResponseDate: true },\n { enrollmentDate: true },\n { smsProgram : true},\n { status: true },\n { professionalName: this.isCombinedSMSCohortsEnabled },\n { lastCcmDate: this.isCombinedSMSCohortsEnabled },\n { ccmLastProcCode: this.isCombinedSMSCohortsEnabled },\n { phoneNumber: true },\n { attributedPractice: true },\n { lastVisit: true },\n { lastAWVDate: true },\n { ccmEligible: this.isCombinedSMSCohortsEnabled },\n { diseaseCohorts: true },\n { openRAFWt: true },\n { raF_YTD: true },\n { hccGapCount: true },\n { assignment:this.isCombinedSMSCohortsEnabled },\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { PresetCategory, CareComponentConstants } from '@shared/models/module-constants';\nimport { environment } from 'src/environments/environment.coachDev';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActiveAlertsPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(name?: string, label?: string): IPatientFilterPreset {\n const item: IPatientFilterPreset = {\n category: PresetCategory.Alerts,\n name,\n label,\n filters: [],\n hidePreset: true,\n type: 'alerts',\n componentId: CareComponentConstants.PatientList,\n columns: this.getPresetColumns(name),\n presetKey: name\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(alert: string): { [key in string]: boolean }[] {\n if (!alert) {\n return [];\n }\n\n return [\n { select: true },\n { fullName: true },\n { bp: alert.toLowerCase().includes('blood pressure') },\n { pulse: alert.toLowerCase().includes('blood pressure') },\n { weight: alert.toLowerCase().includes('rapid weight gain') },\n { gain: alert.toLowerCase().includes('rapid weight gain') },\n { bloodSugar: alert.toLowerCase().includes('blood sugar') },\n { dob_age: true },\n { gender: true },\n { mbi: true },\n { phoneNumber: true },\n { professionalName: this.hasPatientApp },\n { assignment: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { ccmEligible: this.agGridCustomFilteringFlag },\n { actions: this.hasPatientApp },\n { hccGapCount: this.agGridCustomFilteringFlag },\n { diseaseCohorts: this.agGridCustomFilteringFlag },\n { raF_YTD: this.agGridCustomFilteringFlag },\n { openRAFWt: true },\n { lastVisit: true },\n { attributedPractice: true },\n { pyRaf: true }\n ];\n }\n}\n","import { common as wp } from '@hcd-caravanhealth/pkg-wptypes';\nimport { EnvironmentType, IEnvironment } from './environmentTypeDef';\nimport { TrackFeatureConstants } from '../app/shared/models/module-constants';\n\nexport const environment: IEnvironment = {\n production: true,\n environmentId: EnvironmentType.dev,\n wpApiUrl: 'https://api.int.caravan.health/wpapi/2',\n // wpApiUrl: 'https://wellpepper-dev-wpapi-as.azurewebsites.net/2',\n trackApiUrl: 'https://api.int.caravan.health/track',\n userDetailApiUrl: 'https://api.int.caravan.health/access',\n apiBaseUrl: 'https://api.int.caravan.health',\n ocpApimSubscriptionKey: '56ed966789434fba9a3750c2715bcbcc',\n chEndPoint:\n 'https://portaldevidservice-as.azurewebsites.net/connect/userinfo',\n authWellknownEndpoint:\n 'https://chprodb2c.b2clogin.com/chprodb2c.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1A_signup_signinCaravanHealth',\n stsServer: 'https://login.microsoftonline.com/chprodb2c.onmicrosoft.com/v2.0',\n authClientId: '93b14305-c16a-4f29-bcd1-abe5680ab49e',\n authConfigScope:\n 'openid https://chprodb2c.onmicrosoft.com/coachApi/demo.write https://chprodb2c.onmicrosoft.com/coachApi/demo.read',\n coachApiUrl: 'https://api.int.caravan.health/coach',\n qualityInitiativeApiUrl: 'https://api.int.caravan.health/coach',\n prizmApiUrl: 'https://prizmapi.dev.caravan.health',\n careOrchApiUrl: 'https://api.int.caravan.health/careorchservice',\n patientIdentityProvider:\n wp.IdentifierProviders.CaravanHealthPatientInHierarchyNodeDevEnvironment,\n blobStorageUrl: 'https://caravancoachdocrepo.blob.core.windows.net/documents',\n maskSensitiveData: true,\n useHashStrategy: false,\n idleStart: 1500,\n idleTimeout: 300,\n idlePing: 120,\n mixpanel: {\n projectId: '70bb633cfc1b8aa514d859c151271aea',\n debug: false,\n pageViews: true\n },\n appInsights: {\n connectionString: 'InstrumentationKey=05f44bd5-f4dd-4776-b77e-06a066a716b6',\n },\n e2e: {\n Username: 'CompassHCCPHI#caravan.com',\n Password: 'Welcome3#',\n },\n displayRiskLevel: true,\n serverEventsEndpoint: 'https://coachsignalr-int-as.azurewebsites.net',\n};\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { PatientEngagement } from '@shared/enums';\nimport { PresetCategory, CareComponentConstants } from '@shared/models/module-constants';\nimport { environment } from 'src/environments/environment.coachDev';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActiveAlertsAndMessagesPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(name?: string, label?: string): IPatientFilterPreset {\n const item: IPatientFilterPreset = {\n category: PresetCategory.AlertsAndMessages,\n name,\n label,\n hidePreset: false,\n filters: [],\n type: 'alerts',\n componentId: CareComponentConstants.PatientList,\n columns: this.getPresetColumns(name),\n presetKey: name\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(alert: string): { [key in string]: boolean }[] {\n if (!alert) {\n return [];\n }\n return [\n { select: true },\n { fullName: true },\n { dob_age: true },\n { gender: true },\n { mbi: true },\n { bp: alert.toLowerCase().includes('blood pressure') },\n { pulse: alert.toLowerCase().includes('blood pressure') },\n { weight: alert.toLowerCase().includes('rapid weight gain') },\n { gain: alert.toLowerCase().includes('rapid weight gain') },\n { bloodSugar: alert.toLowerCase().includes('blood sugar') },\n { phoneNumber: true },\n {\n professionalName: this.hasPatientApp\n },\n { assignment: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n {\n ccmEligible: this.agGridCustomFilteringFlag\n },\n {\n actions: this.hasPatientApp\n },\n {\n hccGapCount: this.agGridCustomFilteringFlag\n },\n {\n diseaseCohorts: this.agGridCustomFilteringFlag\n },\n {\n raF_YTD: this.agGridCustomFilteringFlag\n },\n { openRAFWt: true },\n { lastVisit: true },\n { attributedPractice: true },\n { pyRaf: true }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PresetItemBase, IPresetItemContract } from '../utils';\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport { PresetCategory, CarePatientItem, CareComponentConstants } from '@shared/models/module-constants';\nimport { environment } from 'src/environments/environment.coachDev';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UnreadMessagesPreset extends PresetItemBase implements IPresetItemContract {\n getPresetItem(): IPatientFilterPreset {\n const item: IPatientFilterPreset = {\n category: PresetCategory.AlertsAndMessages,\n name: CarePatientItem.UnreadMessages,\n label: 'Unread messages',\n hidePreset: false,\n filters: [],\n type: 'messages',\n componentId: CareComponentConstants.PatientList,\n columns: this.getPresetColumns(),\n presetKey: CarePatientItem.UnreadMessages\n };\n\n item.versionKey = `columnState_${this.userId}_${item.presetKey}`;\n return item;\n }\n\n private getPresetColumns(): { [key in string]: boolean }[] {\n return [\n { select: true },\n { fullName: true },\n { dob_age: true },\n { gender: true },\n { mbi: true },\n { phoneNumber: true },\n { professionalName: this.hasPatientApp },\n { assignment: true },\n { attributedCP: true },\n { predictedRiskLevel: environment.displayRiskLevel },\n { ccmEligible: this.agGridCustomFilteringFlag },\n { actions: this.hasPatientApp },\n { hccGapCount: this.agGridCustomFilteringFlag },\n { diseaseCohorts: this.agGridCustomFilteringFlag },\n { raF_YTD: this.agGridCustomFilteringFlag },\n { openRAFWt: true },\n { lastVisit: true },\n { attributedPractice: true },\n { pyRaf: true }\n ];\n }\n}\n","import { NgModule } from '@angular/core';\nimport { PRESET_ITEMS } from './utils';\nimport { AllPatientsPreset } from './general';\nimport {\n ClinicalProgramCopdPreset,\n ClinicalProgramHeartFailurePreset,\n ClinicalProgramHypertensionPreset\n} from './clinical-program';\nimport {\n EdUtilizationPreset,\n} from './cohorts';\nimport {\n AwvPatientsWorklistPreset,\n HccListPreset,\n AwvBillingPreset,\n AwvFilesPreset,\n AwvSchedulePreset,\n FacesheetPreset\n} from './annual-wellness-visits'\nimport {\n PacNavigatorProgramPreset,\n} from './post-acute-care';\nimport {\n CareManagementAllProgramPreset,\n CareManagementCopdPreset,\n CareManagementHeartFailurePreset,\n CareManagementHypertensionPreset,\n SmsOutreachProgramPreset\n} from './chronic-conditions';\nimport { ActiveAlertsPreset } from './alerts';\nimport { ActiveAlertsAndMessagesPreset, UnreadMessagesPreset } from './alerts-and-messages';\n\n@NgModule({\n providers: [\n {\n provide: PRESET_ITEMS,\n useExisting: AwvPatientsWorklistPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: AwvSchedulePreset,\n multi: true\n },\n { provide: PRESET_ITEMS, useExisting: AllPatientsPreset, multi: true },\n {\n provide: PRESET_ITEMS,\n useExisting: ClinicalProgramHeartFailurePreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: AwvFilesPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: AwvBillingPreset,\n multi: true\n },\n { provide: PRESET_ITEMS, useExisting: FacesheetPreset, multi: true },\n {\n provide: PRESET_ITEMS,\n useExisting: CareManagementAllProgramPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: CareManagementCopdPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: CareManagementHeartFailurePreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: CareManagementHypertensionPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: ClinicalProgramCopdPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: ClinicalProgramHypertensionPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: EdUtilizationPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: HccListPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: SmsOutreachProgramPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: PacNavigatorProgramPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: ActiveAlertsPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: ActiveAlertsAndMessagesPreset,\n multi: true\n },\n {\n provide: PRESET_ITEMS,\n useExisting: UnreadMessagesPreset,\n multi: true\n }\n ]\n})\nexport class PresetGroupModule {}\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '@shared/shared.module';\nimport { CareRoutingModule } from '@care/care-routing.module';\nimport { CareComponent } from '@care/care.component';\nimport { CarePatientsComponent } from '@care/views/care-patients/care-patients.component';\nimport { RiskTrendColumnRendererComponent } from '@care/views/care-patients/customColumns/riskTrend';\nimport { ActionsColumnRendererComponent } from '@care/views/care-patients/customColumns/actions';\nimport { IheFilesColumnRendererComponent } from '@care/views/care-patients/customColumns/iheFiles';\nimport { CareSettingsComponent } from '@care/views/care-settings/care-settings.component';\nimport { CarePatientComponent } from '@care/views/care-patient/care-patient.component';\nimport { CareTestComponent } from '@care/views/care-test/care-test.component';\nimport { RouterModule } from '@angular/router';\nimport { PatientFacesheetModule } from '@shared/modules/patient-facesheet/patient-facesheet.module';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { CarePatientsFiltersComponent } from './views/care-patients/care-patients-filters/care-patients-filters.component';\nimport { DiseaseCohortGridComponent } from './views/care-patients/disease-cohort-grid/disease-cohort-grid.component';\nimport { EdUtilizationGridComponent } from './views/care-patients/ed-utilization-grid/ed-utilization-grid.component';\nimport { FacesheetScheduleGridComponent } from './components/facesheet-schedule/facesheet-schedule-grid/facesheet-schedule-grid.component';\nimport { FacesheetScheduleComponent } from './components/facesheet-schedule/facesheet-schedule/facesheet-schedule.component';\nimport { FacesheetScheduleFiltersComponent } from './components/facesheet-schedule/facesheet-schedule-filters/facesheet-schedule-filters.component';\nimport { AwvWorklistFiltersComponent } from './components/awv-worklist/awv-worklist-filters/awv-worklist-filters.component';\nimport { CarePrescriptionsComponent } from './views/care-prescriptions/care-prescriptions.component';\nimport { CarePrescriptionsFiltersComponent } from './views/care-prescriptions/care-prescriptions-filters/care-prescriptions-filters.component';\nimport { CarePrescriptionsSidebarComponent } from './views/care-prescriptions/care-prescriptions-sidebar/care-prescriptions-sidebar.component';\nimport { EmptyRouteComponent } from './views/care-prescriptions/care-prescriptions-sidebar/empty-route/empty-route.component';\nimport { RequestNoteComponent } from './views/care-prescriptions/care-prescriptions-sidebar/request-note/request-note.component';\nimport { RequestCareCoordinationNoteComponent } from './views/care-prescriptions/care-prescriptions-sidebar/request-care-coordination-note/request-care-coordination-note.component';\nimport { CarePrescriptionsProcessingComponent } from './views/care-patients/care-prescriptions-processing/care-prescriptions-processing.component';\nimport { CarePrescriptionsProcessingSidebarComponent } from './views/care-patients/care-prescriptions-processing/care-prescriptions-processing-sidebar/care-prescriptions-processing-sidebar.component';\nimport { PatientHeaderComponent } from './views/care-prescriptions/care-prescriptions-sidebar/patient-header/patient-header.component';\nimport { OptionToggleComponent } from './views/care-prescriptions/care-prescriptions-sidebar/request-care-coordination-note/option-toggle/option-toggle.component';\nimport { PatientHeaderHelpComponent } from './views/care-prescriptions/care-prescriptions-sidebar/patient-header/patient-header-help/patient-header-help.component';\nimport { ClaimNoteComponent } from './views/care-prescriptions/care-prescriptions-sidebar/claim-note/claim-note.component';\nimport { RejectedClaimComponent } from './views/care-prescriptions/care-prescriptions-sidebar/rejected-claim/rejected-claim.component';\nimport { FilterGroupComponent } from './views/care-prescriptions/care-prescriptions-filters/filter-group/filter-group.component';\nimport { FacesheetExportComponent } from './components/facesheet-schedule/facesheet-export/facesheet-export.component';\nimport { TabSwitchComponent } from './views/care-patients/care-prescriptions-processing/care-prescriptions-processing-sidebar/tab-switch/tab-switch.component';\nimport { CarePrescriptionsInvoicingComponent } from './views/care-prescriptions-invoicing/care-prescriptions-invoicing.component';\nimport { CarePrescriptionsInvoicingSidebarComponent } from './views/care-prescriptions-invoicing/care-prescriptions-invoicing-sidebar/care-prescriptions-invoicing-sidebar.component';\nimport { InvoicingTabSwitchComponent } from './views/care-prescriptions-invoicing/care-prescriptions-invoicing-sidebar/invoicing-tab-switch/invoicing-tab-switch.component';\nimport { CarePatientsFiltersSettingsComponent } from './views/care-patients/care-patients-filters/care-patients-filters-settings/care-patients-filters-settings.component';\nimport { FileImportComponent } from './views/care-prescriptions/care-prescriptions-sidebar/file-import/file-import.component';\nimport { FileControlComponent } from './views/care-prescriptions/care-prescriptions-sidebar/file-import/file-control/file-control.component';\nimport { CareAllPrescriptionsComponent } from './views/care-all-prescriptions/care-all-prescriptions.component';\nimport { CareAllPrescriptionsFiltersComponent } from './views/care-all-prescriptions/care-all-prescriptions-filters/care-all-prescriptions-filters.component';\nimport { SubFillDialogComponent } from './views/care-prescriptions/sub-fill-dialog/sub-fill-dialog.component';\nimport { CareExceptionsComponent } from './views/care-prescriptions/care-exceptions/care-exceptions.component';\nimport { ExceptionsCellRendererComponent } from './views/care-prescriptions/exceptions-cell-renderer/exceptions-cell-renderer.component';\nimport { CarePatientSidebarComponent } from './views/care-patients/care-patient-sidebar/care-patient-sidebar.component';\nimport { CarePatientsContainerComponent } from './views/care-patients/refactor-poc/care-patients-container/care-patients-container.component';\nimport { CarePatientsFiltersComponent as CarePatientsFiltersComponent2 } from './views/care-patients/refactor-poc/care-patients-filters/care-patients-filters.component';\nimport { CarePatientsGridComponent } from './views/care-patients/refactor-poc/care-patients-grid/care-patients-grid.component';\nimport { CareSummaryTabComponent,CareSummaryTileComponent } from './views/care-summary-tab';\nimport { NgxMasonryModule } from 'ngx-masonry';\nimport { PresetGroupModule } from './preset-group/preset-group.module';\n\n@NgModule({\n declarations: [\n CareComponent,\n CarePatientComponent,\n CarePatientsComponent,\n CarePatientsFiltersComponent,\n CareSettingsComponent,\n CareTestComponent,\n RiskTrendColumnRendererComponent,\n ActionsColumnRendererComponent,\n IheFilesColumnRendererComponent,\n DiseaseCohortGridComponent,\n EdUtilizationGridComponent,\n FacesheetScheduleGridComponent,\n FacesheetScheduleComponent,\n FacesheetScheduleFiltersComponent,\n AwvWorklistFiltersComponent,\n CarePrescriptionsComponent,\n CarePrescriptionsFiltersComponent,\n CarePrescriptionsSidebarComponent,\n EmptyRouteComponent,\n RequestNoteComponent,\n RequestCareCoordinationNoteComponent,\n CarePrescriptionsProcessingComponent,\n CarePrescriptionsProcessingSidebarComponent,\n PatientHeaderComponent,\n OptionToggleComponent,\n PatientHeaderHelpComponent,\n ClaimNoteComponent,\n RejectedClaimComponent,\n FilterGroupComponent,\n FacesheetExportComponent,\n TabSwitchComponent,\n CarePrescriptionsInvoicingComponent,\n CarePrescriptionsInvoicingSidebarComponent,\n InvoicingTabSwitchComponent,\n CarePatientsFiltersSettingsComponent,\n FileImportComponent,\n FileControlComponent,\n CareAllPrescriptionsComponent,\n CareAllPrescriptionsFiltersComponent,\n SubFillDialogComponent,\n CareExceptionsComponent,\n ExceptionsCellRendererComponent,\n CarePatientSidebarComponent,\n CarePatientsContainerComponent,\n CarePatientsGridComponent,\n CarePatientsFiltersComponent2,\n CareSummaryTabComponent,\n CareSummaryTileComponent\n ],\n imports: [\n AgGridModule,\n CareRoutingModule,\n PatientFacesheetModule,\n SharedModule,\n RouterModule,\n FontAwesomeModule,\n NgxMasonryModule,\n PresetGroupModule\n ]\n})\nexport class CareModule {}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { ComponentFactoryResolver, Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { UntypedFormControl, Validators } from '@angular/forms';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { environment } from 'src/environments/environment';\nimport { HccFacesheetSchedule } from './hcc-facesheet-schedule';\nimport { HccFacesheetScheduleItem } from './hcc-facesheet-schedule-item';\nimport { Observable, Subject } from 'rxjs';\nimport { DateValidators } from '@shared/utilities';\nimport { formatDate } from '@angular/common';\nimport { FacesheetExportDownloadRequest } from './facesheet-download-request';\nimport { FacesheetExportBatch } from './facesheet-schedule/facesheet-export-batch';\nimport { Process } from '@shared/services/processing/process';\nimport { ProcessingService } from '@shared/services/processing/processing.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HccFacesheetScheduleService extends AzureApiBase {\n constructor(http: HttpClient,\n authService: AuthService,\n @Inject(LOCALE_ID) private locale: string,\n private processingService: ProcessingService,\n private componentFactoryResolver: ComponentFactoryResolver) {\n\n super(http, authService, environment.trackApiUrl, '/facesheetSchedule');\n\n const today = formatDate(new Date(), 'yyyy-MM-dd', this.locale);\n this.fromDate = new UntypedFormControl(today, [Validators.required]);\n this.toDate = new UntypedFormControl(today, [Validators.required, DateValidators.dateGreaterThanOrEqual(this.fromDate)]);\n }\n\n fromDate: UntypedFormControl;\n toDate: UntypedFormControl;\n loadSchedules$: Subject = new Subject();\n\n getSchedules(from: string, to: string, communityId: string, practiceId: string, providerId: string,tier3Id: string): Observable {\n let params: HttpParams = new HttpParams()\n .set('from', from)\n .set('to', to)\n .set('communityId', communityId);\n\n if (practiceId != null) {\n params = params.append('practiceId', practiceId);\n }\n\n if (providerId != null) {\n params = params.append('providerId', providerId);\n }\n\n if (tier3Id != null) {\n params = params.append('tier3Id', tier3Id);\n }\n\n return this.getAll(null, params);\n }\n\n printPdf(items: HccFacesheetScheduleItem[]): Observable {\n return this.postPdf(items, '/pdf');\n }\n\n exportPdfs(items: HccFacesheetScheduleItem[]): Observable {\n return this.postZip(items, '/export');\n }\n\n downloadExport(request: FacesheetExportDownloadRequest): Observable {\n return this.postZip(request, '/downloadExport');\n }\n\n /** Export or Print multiple patient facesheets\n * @param {boolean} exportToZip Set to true for exporting individual PDFs that will be zipped together, otherwise a single PDF will be generated\n * @param {HccFacesheetScheduleItem[]} selectedPatients List of patients to export/print\n * @param {number} componentId Component from which the export is initiated (for logging purposes)\n * @param {string} fileNameIdentifier String to be appended to generated file name\n * @param {number} batchStageId Set batch stage ID if this export was previously staged (currently only applies to facesheet by schedule)\n */\n bulkExportPrint(exportToZip: boolean, selectedPatients: HccFacesheetScheduleItem[], componentId: number, fileNameIdentifier: string, batchStageId: number = null, expanded: boolean, tierNum: number, tierId: string): void {\n const facesheetExport: FacesheetExportBatch = {\n exportToZip: exportToZip,\n facesheetScheduleItems: selectedPatients,\n fileNameIdentifier: fileNameIdentifier,\n componentId: componentId,\n batchStageId: batchStageId,\n expanded: expanded,\n tierNum: tierNum,\n tierId: tierId\n };\n\n import('./facesheet-export/facesheet-export.component').then(c =>{\n const process: Process = {\n componentFactory: this.componentFactoryResolver.resolveComponentFactory(c.FacesheetExportComponent),\n message: JSON.stringify(facesheetExport),\n queue: 'facesheet-export',\n status: {\n completionPercentage: 0,\n details: '',\n isComplete: false,\n isFailed: false,\n isCancelled: false\n },\n title: `Facesheet`,\n }; \n \n this.processingService.addNewProcess(process);\n }); \n }\n}\n","import { CarePatientItem } from '@shared/models/module-constants';\n\nexport interface AgGridTableFilterSetting {\n // AgGrid custom filter documentation https://www.ag-grid.com/javascript-data-grid/filter-provided-simple/\n excluded?: string[]; // list of excluded options from options list. If option in options list is unchecked it goes into this list\n name: string; // display name\n options?: string[]; // list of available options to select\n title: string; // aggrid filter/column name\n keys?: Array<{ label: string; name: string }>;\n isOpen?: boolean; // is used to expand/collapse dropdown\n type?: string; // type of filter https://www.ag-grid.com/javascript-data-grid/filter-provided-simple/#simple-filter-options\n list?: boolean; // checks whether filter is list or not. Used in AgGridLocalSettingsService.updateFilterSettings() to populate filter drawer settings.\n filter?: number; // The number value(s) associated with the filter. Custom filters can have no values (hence both are optional). Range filter has two values (from and to). https://www.ag-grid.com/javascript-data-grid/filter-provided-simple/#reference-NumberFilterModel\n filterTo?: number; // Range filter to value.\n filterType?: string;\n filterOptions?: string[] | Array<{ value: string; label: string }>; // list of filter options for a dropdown https://www.ag-grid.com/angular-data-grid/filter-provided-simple/#simple-filter-options\n includeAllOrNoneSelection?: boolean; // toggle for \"All or None\" filter type\n dateFrom?: string; // The date value(s) associated with the filter. The type is string and format is always YYYY-MM-DD e.g. 2019-05-24. Custom filters can have no values (hence both are optional). Range filter has two values (from and to). https://www.ag-grid.com/angular-data-grid/filter-provided-simple/#reference-DateFilterModel\n dateTo?: string; // Range filter to date value.\n percentage?: boolean;\n}\n\n\nconst careManagementFilterSetttings ={\n rows: [\n {\n title: 'Attributed Practice',\n name: 'attributedPractice',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'Attributed Provider',\n name: 'attributedCP',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'CCM Eligible',\n name: 'ccmEligible',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'Highest Risk Percentile',\n name: 'ssPercent',\n type: 'lessThanOrEqual',\n percentage: true,\n filterType: 'number',\n },\n ],\n }\n\nexport const filterSettings = {\n [CarePatientItem.AllPatients]: {\n rows: [\n {\n title: 'Chronic Conditions',\n name: 'diseaseCohorts',\n options: [],\n excluded: [],\n type: 'set',\n list: true,\n },\n {\n title: 'Attributed Provider',\n name: 'attributedCP',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'Care Coordinator',\n name: 'professionalName',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'Assignment',\n name: 'assignment',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'CCM Eligible',\n name: 'ccmEligible',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'Predicted Risk Category',\n name: 'predictedRiskLevel',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n /**\n * @documentation for Simple Filter Options\n * https://www.ag-grid.com/angular-data-grid/filter-provided-simple/#simple-filter-options\n */\n title: 'Total Gap Weight',\n name: 'openRAFWt',\n type: null,\n filter: null,\n filterTo: null,\n filterType: 'number',\n filterOptions: [\n { value: 'inRange', label: 'In range' },\n { value: 'lessThan', label: 'Less than' },\n { value: 'lessThanOrEqual', label: 'Less than or equal' },\n { value: 'greaterThan', label: 'Greater than' },\n { value: 'greaterThanOrEqual', label: 'Greater than or equal' },\n ],\n },\n {\n title: 'Include Deceased',\n name: 'dodBoolean',\n type: 'set',\n options: ['Yes', 'No'],\n excluded: [],\n includeAllOrNoneSelection: true, // is needed to pull all options at once, in other words it checks whether value exists OR null\n },\n ],\n },\n [CarePatientItem.AwvSchedule]: {\n rows: [\n {\n title: 'Schedule Status',\n name: 'scheduleStatus',\n options: [],\n excluded: [],\n type: 'set',\n },\n {\n title: 'Assignment',\n name: 'assignment',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'Appointment Date',\n name: 'dateOfService',\n dateFrom: null,\n dateTo: null,\n filterType: 'date',\n filterOptions: [{ value: 'inRange', label: 'In range' }],\n },\n ],\n },\n [CarePatientItem.AwvFiles]: {\n rows: [\n {\n title: 'Status',\n name: 'IHEDownloadStatus',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'Attributed Provider',\n name: 'attributedCP',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'Assignment',\n name: 'assignment',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'Visit Date',\n name: 'IHEAWVVisitDate',\n dateFrom: null,\n dateTo: null,\n filterType: 'date',\n filterOptions: [{ value: 'inRange', label: 'In range' }],\n },\n ],\n },\n [CarePatientItem.AwvBilling]: {\n rows: [\n {\n title: 'Batch Date',\n name: 'IHEAWVBatchDate',\n dateFrom: null,\n dateTo: null,\n filterType: 'date',\n filterOptions: [{ value: 'inRange', label: 'In range' }],\n },\n {\n title: 'Claim Frequency Code',\n name: 'claimFrequencyCode',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'Dx Count',\n name: 'dxCount',\n type: 'set',\n options: [],\n excluded: [],\n },\n {\n title: 'Visit Date',\n name: 'IHEAWVVisitDate',\n dateFrom: null,\n dateTo: null,\n filterType: 'date',\n filterOptions: [{ value: 'inRange', label: 'In range' }],\n },\n ],\n },\n [CarePatientItem.CareManagementAllProgram]: careManagementFilterSetttings,\n [CarePatientItem.CareManagementCopd]:careManagementFilterSetttings,\n [CarePatientItem.CareManagementHeartFailure]:careManagementFilterSetttings,\n [CarePatientItem.CareManagementHypertension]:careManagementFilterSetttings,\n\n};\n\n","import { CompareCin } from '@api/track/models';\n\nexport class AttributionFilterModel {\n public isMostAssignable = false;\n public isCinSelected = false;\n public selectedCin?: CompareCin;\n}","
\n \n
\n
\n
{{title}}
\n
Filters
\n
\n
\n\n
\n
\n
\n
\n Assignment\n
\n \n Attributed{{ currentFilterModel.isMostAssignable ? ' + Most Assignable' : ''}}\n \n
\n
\n\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n\n
\n
\n
\n CIN\n
\n \n {{currentFilterModel.isCinSelected ? currentFilterModel.selectedCin?.name : ''}}\n \n
\n
\n \n \n
\n
\n
Use this if you want to view the data grouped by a CIN instead of the traditional ACO structure
\n
\n \n \n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AttributionFilterModel } from './attribution-filter-model';\nimport { CompareService } from '@api/track/services';\nimport { CompareCin, ReportFilterType } from '@api/track/models';\nimport { ATTRIBUTED, MOST_ASSIGNABLE } from '@track/track-constants';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { KillSubscriptions } from '../kill-subscriptions';\n\n@Component({\n selector: 'coach-attribution-filter-pane',\n templateUrl: './attribution-filter-pane.component.html',\n styleUrls: ['./attribution-filter-pane.component.scss']\n})\nexport class AttributionFilterPaneComponent extends KillSubscriptions implements OnInit {\n\n @Input() title: string;\n\n @Input() isQueueOpen = true;\n @Output() isQueueOpenChange = new EventEmitter();\n\n @Input() currentFilterModel = new AttributionFilterModel();\n @Output() currentFilterModelChange = new EventEmitter();\n\n public isAssignmentOpen = true;\n public hasModelChanged = false;\n public previousFilterModel: AttributionFilterModel = new AttributionFilterModel();\n\n public hasCinAccess = false;\n public isCinOpen = true;\n public isCinLoading = false;\n public cinItems: CompareCin[] = [];\n\n constructor(private compareService: CompareService, private hierarchyTierService: HierarchyTierService) { \n super();\n }\n\n ngOnInit(): void {\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger)).subscribe(tier => {\n this.hasCinAccess = tier.selectedItem.cinFlag === 1;\n\n if (this.hasCinAccess) {\n this.getCinList();\n } else {\n this.previousFilterModel.isCinSelected = this.currentFilterModel.isCinSelected = false;\n this.previousFilterModel.selectedCin = this.currentFilterModel.selectedCin = undefined;\n }\n });\n }\n\n public toggleQueueOpen(): void {\n this.isQueueOpen = !this.isQueueOpen;\n this.isQueueOpenChange.emit(this.isQueueOpen);\n }\n\n public mostAssignableSelected(): void {\n this.currentFilterModel.isMostAssignable = !this.currentFilterModel.isMostAssignable;\n this.hasModelChanged = this.hasFilterModelChanged();\n\n if (this.hasCinAccess) {\n this.getCinList();\n }\n }\n\n public getCinList(): void {\n this.isCinLoading = true;\n this.compareService.compareCinsGet({ attribution: this.currentFilterModel.isMostAssignable ? MOST_ASSIGNABLE : ATTRIBUTED }).subscribe({\n next: items => {\n this.cinItems = items;\n\n if (this.currentFilterModel.selectedCin != null) {\n this.currentFilterModel.selectedCin = this.cinItems.find(x => x.id === this.currentFilterModel.selectedCin.id);\n }\n\n if (this.currentFilterModel.isCinSelected && items != null && items.length > 0) {\n if (this.currentFilterModel.selectedCin == null) {\n this.currentFilterModel.selectedCin = items[0];\n }\n\n this.previousFilterModel.selectedCin = this.currentFilterModel.selectedCin;\n }\n }, complete: () => this.isCinLoading = false\n });\n }\n\n private hasFilterModelChanged(): boolean {\n return this.currentFilterModel.isMostAssignable !== this.previousFilterModel.isMostAssignable ||\n this.currentFilterModel.isCinSelected !== this.previousFilterModel.isCinSelected ||\n (this.currentFilterModel.isCinSelected && this.currentFilterModel.selectedCin?.id !== this.previousFilterModel.selectedCin?.id);\n }\n\n public viewCinSelected(): void {\n this.currentFilterModel.isCinSelected = !this.currentFilterModel.isCinSelected;\n\n if (!this.currentFilterModel.isCinSelected) {\n this.currentFilterModel.selectedCin = undefined;\n } else if (this.currentFilterModel.selectedCin == null && this.cinItems.length > 0) {\n this.currentFilterModel.selectedCin = this.cinItems[0];\n }\n this.hasModelChanged = this.hasFilterModelChanged();\n }\n\n public cinSelected(item: ReportFilterType): void {\n this.hasModelChanged = this.hasFilterModelChanged();\n }\n\n public applyChanges(): void {\n this.isQueueOpen = false;\n this.currentFilterModelChange.emit(this.currentFilterModel);\n\n this.previousFilterModel.isMostAssignable = this.currentFilterModel.isMostAssignable;\n this.previousFilterModel.selectedCin = this.currentFilterModel.selectedCin;\n this.previousFilterModel.isCinSelected = this.currentFilterModel.isCinSelected;\n\n this.hasModelChanged = false;\n }\n\n}\n","
\n
\n \n
\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n/**\n * A button toggle component that displays a list of selectable options.\n * \n * @example\n * \n * \n */\n@Component({\n selector: 'coach-button-toggle',\n templateUrl: './button-toggle.component.html',\n styleUrls: ['./button-toggle.component.scss']\n})\nexport class ButtonToggleComponent {\n\n private _options: string[];\n /** Array of selectable options as strings */\n @Input() set options(value: string[]) {\n this._options = value;\n\n if (this.selectedItem == null && this._options.length > 0) {\n this.selectedItem = this._options[0];\n }\n }\n get options(): string[] {\n return this._options;\n }\n\n /** Currently selected option */\n @Input() selectedItem: string;\n @Output() selectedItemChange: EventEmitter = new EventEmitter();\n \n public selectedValue = '';\n\n constructor() { }\n\n selectOption(option: string): void {\n this.selectedItem = option;\n this.selectedItemChange.emit(this.selectedItem);\n }\n\n}\n","import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ClassesJoinTrimPipe } from '@shared/pipes/classes-join-trim.pipe';\n\n/**\n * Component used for displaying icons. Icon definitions are stored in the \n * Magicons.svg file.\n * \n * @example\n * \n * \n */\n@Component({\n selector: 'coach-icon',\n templateUrl: './coach-icon.component.html',\n host: {\n class: 'coach-icon'\n },\n providers: [\n ClassesJoinTrimPipe\n ]\n})\nexport class CoachIconComponent implements OnInit, OnChanges {\n\n /** Icon name. Must match an icon defition in Magicons.svg */\n @Input() iconName: string = 'home';\n /** Icon color (default, primary, white, currentColor) */\n @Input() iconColor: string = null;\n /** Icon size (small, large) */\n @Input() iconSize: string = null;\n /** Icon weight (thin, bolder) */\n @Input() iconWeight: string = null;\n\n public iconUseTag: SafeHtml;\n\n constructor(private sanitizer: DomSanitizer, private _classesJoinTrim: ClassesJoinTrimPipe) { }\n\n ngOnInit(): void {\n this.iconUseTag = this.buildIconUseTag(this.iconName);\n this.setIconColor(this.iconColor);\n this.setIconSize(this.iconSize);\n this.setIconWeight(this.iconWeight);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.iconName.firstChange) {\n this.iconUseTag = this.buildIconUseTag(changes.iconName.currentValue);\n }\n }\n\n public setIconColor(color: string) {\n this.iconColor = color ? `icon--${color}` : null;\n }\n\n public setIconSize(size: string) {\n if (size) {\n size = size.toLowerCase();\n switch (size) {\n case 'small' || 'is-small':\n this.iconSize = 'is-small';\n break;\n case 'large' || 'is-large':\n this.iconSize = 'is-large';\n break;\n case 'medium' || 'is-medium':\n this.iconSize = 'is-medium';\n break;\n default:\n this.iconSize = null;\n break;\n }\n } else {\n this.iconSize = null;\n }\n }\n\n public setIconWeight(weight: string): string {\n if (weight) {\n weight = weight.toLowerCase();\n switch (weight) {\n case 'thin':\n this.iconWeight = 'is-thin';\n break;\n case 'bolder':\n this.iconWeight = 'is-bolder';\n break;\n default:\n this.iconWeight = null;\n break;\n }\n } else {\n return null;\n }\n }\n\n public buildIconUseTag(iconName: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(\n ''\n );\n }\n\n public iconClasses(): string {\n var classes = [\n this.iconColor,\n this.iconSize,\n this.iconWeight\n ];\n return this._classesJoinTrim.transform(classes);\n }\n\n}\n","","\n \n \n {{ tab.name }}\n \n \n\n\n\n \n \n {{ activeTab }}\n \n \n \n\n \n
\n
\n \n \n {{ tab.name }}\n
\n \n
\n \n \n\n","import { Component, OnInit, Input, HostListener } from '@angular/core';\nimport { ActivatedRouteService } from '@shared/services/activated-route/activated-route.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { ICurrentRoute } from '@shared/models/activated-route';\nimport { CoachTabs } from './coach-tabs';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { KillSubscriptions } from '../kill-subscriptions';\nimport { takeUntil } from 'rxjs/operators';\nimport { SideBarToggleService } from '@shared/services/sidebar-toggle/sidebar-toggle.service';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { Router } from '@angular/router';\n\n/**\n * Component for displaying tab navigation.\n *\n * @example\n * \n * \n */\n@Component({\n selector: 'coach-tabs',\n templateUrl: './coach-tabs.component.html',\n host: {\n class: 'coach-tabs',\n },\n})\nexport class CoachTabsComponent extends KillSubscriptions implements OnInit {\n private _tabsData: CoachTabs[];\n /** (Required) Array containing the tab definitions */\n @Input() set tabsData(value: CoachTabs[]) {\n this._tabsData = value;\n this.updateTabs();\n }\n get tabsData(): CoachTabs[] {\n return this._tabsData;\n }\n\n availableTabs: CoachTabs[];\n\n public isTabDropdownOpen = false;\n public currentRoute$: BehaviorSubject;\n public activeView: ICurrentRoute;\n public isSidebarOpen: boolean;\n public activeTab: string;\n\n constructor(\n private _activatedRoute: ActivatedRouteService,\n private userAccessService: UserAccessService,\n private sidebarToggleService: SideBarToggleService,\n protected featureFlagService: FeatureFlagService,\n private router: Router\n ) {\n super();\n this.sidebarToggleService.sidebarToggle\n .pipe(takeUntil(this.killTrigger))\n .subscribe((isOpen) => {\n this.isSidebarOpen = isOpen;\n });\n\n this.currentRoute$ = this._activatedRoute.currentRoute$;\n this.currentRoute$\n .pipe(takeUntil(this.killTrigger))\n .subscribe((whenChanged) => (this.activeView = this.currentRoute$.value));\n this.userAccessService.currentAccess$\n .pipe(takeUntil(this.killTrigger))\n .subscribe((access) => {\n this.updateTabs();\n });\n\n this.featureFlagService.featureFlags$.pipe(takeUntil(this.killTrigger)).subscribe(() => { this.updateTabs(); });\n }\n\n updateTabs(): void {\n if (\n this.userAccessService.currentAccess$.value != null &&\n this.tabsData != null\n ) {\n this.availableTabs = this.tabsData?.filter((tab) => {\n const hasFeatureId = tab.featureId == null ||\n this.userAccessService.currentAccess$.value.modules.some((m) =>\n m.features.some((f) => f.featureId === tab.featureId)\n );\n const hasFeatureFlag = tab.featureFlag == null || this.featureFlagService.hasFeatureFlag(tab.featureFlag);\n const hideIfFeatureFlagIsActive: boolean = this.featureFlagService.hasFeatureFlag(tab.hideIfFeatureFlagIsActive)\n return hasFeatureId && hasFeatureFlag && !hideIfFeatureFlagIsActive\n });\n }\n }\n\n ngOnInit(): void {\n this.activeView = this.currentRoute$.value;\n // Determine initial tab based on current URL\n const urlSegments = this.router.url.split('/');\n this.activeTab = this.tabsData.find(\n x => x.routerLink.some(\n routerLink => urlSegments.some(segment => segment === routerLink)\n )\n )?.name ?? this.activeView?.label;\n }\n\n public switchTab(selectedTab: string): void {\n this.activeTab = selectedTab;\n this.isTabDropdownOpen = false;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n/**\n * Component for adding a toggle-able side panel. Uses content projection\n * to specify header and body sections.\n * \n * @example\n * \n *
...
\n *
...
\n * \n */\n@Component({\n selector: 'coach-toggle-pane',\n templateUrl: './coach-toggle-pane.component.html',\n host: {\n class: 'coach-toggle-pane'\n }\n})\nexport class CoachTogglePaneComponent implements OnInit {\n\n public toggledOpenDefault: boolean;\n\n @Input() public iconName = 'chevrons-right';\n @Input() public iconRotates = true;\n @Input() public isOpen: boolean;\n @Output() isOpenChange: EventEmitter = new EventEmitter();\n\n constructor() { }\n\n ngOnInit(): void {\n this.toggledOpenDefault = this.isOpen;\n }\n\n paneToggled(): void {\n this.isOpen = !this.isOpen;\n\n this.isOpenChange.emit(this.isOpen);\n }\n}\n","
\n \n
\n \n
\n
\n
\n \n
\n
\n
","import { Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\n\n/**\n * Toggle button.\n * \n * @example\n * \n * \n */\n@Component({\n selector: 'coach-toggle',\n templateUrl: './coach-toggle.component.html',\n host: {\n class: 'coach-toggle'\n }\n})\nexport class CoachToggleComponent implements OnInit {\n\n /** Indicates whether or not component starts toggled or not */\n @Input() public toggledOpenDefault: boolean;\n /** Used to manually toggle the component */\n @Input() public set toggle(value: boolean) {\n this.isOpen = value;\n }\n /** Icon name to use for button. Corresponds to icons found in Magicons.svg */\n @Input() public iconName: string = 'chevrons-right';\n /** Indicates whether or not the icon should flip on toggle */\n @Input() public iconRotates: boolean = true;\n /** Method to call when toggle event occurs */\n @Output() public onToggle: EventEmitter = new EventEmitter();\n\n public isOpen: boolean;\n\n constructor() { }\n\n ngOnInit(): void {\n this.isOpen = this.toggledOpenDefault;\n }\n\n public doToggle() {\n this.isOpen = !this.isOpen;\n this.emitIsOpen();\n }\n\n public emitIsOpen() {\n this.onToggle.emit(this.isOpen);\n }\n\n}\n","","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { EulaService } from '@shared/services/eula-agreement/eula.service';\nimport { UserEula } from '@shared/services/eula-agreement/user-eula';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { KillSubscriptions } from '../kill-subscriptions';\n\n@Component({\n selector: 'coach-eula',\n templateUrl: './eula.component.html',\n styleUrls: ['./eula.component.scss']\n})\nexport class EulaComponent extends KillSubscriptions implements OnInit {\n\n public isLoading = false;\n public eula$: Observable;\n\n constructor(\n private eulaService: EulaService,\n private router: Router,\n private hierarchyTierService: HierarchyTierService,\n protected authService: AuthService\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.eula$ = this.eulaService.getAllFromCache();\n }\n\n public acceptEULA(): void {\n this.eulaService.setShowEULA(false);\n this.isLoading = true;\n this.eulaService.post().subscribe({ next: () => {\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger)).subscribe(tier => {\n if (tier != null) {\n this.router.navigate([tier.abbreviation, tier.selectedTierIdForDisplay, 'home']);\n }\n });\n }, complete: () => this.isLoading = false });\n }\n\n public declineEULA(): void {\n this.authService.logout();\n }\n\n}\n","
\n
\n
\n
\n
End User License Agreement
\n
\n
\n
\n\n
\n
\n \n \n
\n
\n
\n","import { Component, OnInit, Input, Inject, LOCALE_ID } from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { GridApi, Column, CsvExportParams } from 'ag-grid-community';\n\n@Component({\n selector: 'coach-export-report-button',\n templateUrl: './export-report-button.component.html',\n styleUrls: ['./export-report-button.component.scss']\n})\nexport class ExportReportButtonComponent implements OnInit {\n\n private seperator = '|';\n\n @Input()\n reportName: string;\n\n @Input()\n gridApi: GridApi;\n\n @Input()\n buttonText: string = \"Export\";\n\n @Input()\n allColumns: boolean = false;\n\n @Input()\n columnKeys: (string | Column)[] = null;\n\n constructor(@Inject(LOCALE_ID) private locale: string) { }\n\n ngOnInit(): void {\n }\n\n exportReport(): void {\n const timestamp = formatDate(new Date(), 'yyyy-MM-dd', this.locale);\n const exportOptions: CsvExportParams = { suppressQuotes: false, allColumns: this.allColumns, columnKeys:this.columnKeys, columnSeparator: this.seperator, customHeader: `SEP=${this.seperator}`, fileName: `${this.reportName}_${timestamp}.csv` };\n\n this.gridApi.exportDataAsCsv(exportOptions);\n }\n\n}\n","\n","\n\n
Required
\n
\n\n\n
Must be later than or equal to {{input?.min | date: 'MM/dd/yyyy'}}
\n
\n\n\n
Must be earlier than or equal to {{input?.max | date: 'MM/dd/yyyy'}}
\n
\n","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { OnChanges } from '@angular/core';\n\n\nconst invalidClasses = ['ng-invalid', 'ng-touched'];\n\n@Component({\n selector: 'coach-invalid-input',\n templateUrl: './invalid-input.component.html',\n styleUrls: []\n})\nexport class InvalidInputComponent implements OnChanges {\n @Input() public input: HTMLInputElement;\n @Input() public select: HTMLSelectElement;\n\n public observer: MutationObserver;\n public requiredError = false;\n public minError = false;\n public maxError = false;\n public hasBeenTouched = false;\n\n ngOnChanges(_: SimpleChanges): void {\n if (this.input) {\n const validationFn = () => this.validateInput();\n this.observer = new MutationObserver(validationFn);\n this.observer.observe(this.input, { attributeOldValue: true, attributeFilter: ['required', 'min', 'max'] });\n this.input.addEventListener('focusin', () => this.hasBeenTouched = true);\n this.input.addEventListener('focusout', validationFn);\n this.input.addEventListener('input', validationFn);\n }\n\n if (this.select) {\n const validationFn = () => this.validateSelect();\n this.observer = new MutationObserver(validationFn);\n this.observer.observe(this.select, { attributeOldValue: true, attributeFilter: ['required'] });\n this.select.addEventListener('focusin', () => this.hasBeenTouched = true);\n this.select.addEventListener('focusout', validationFn);\n this.select.addEventListener('change', validationFn);\n }\n }\n\n private validateInput(): void {\n if (!this.hasBeenTouched) {\n return;\n }\n\n const value = this.input.value;\n const min = this.input.min;\n const max = this.input.max;\n const required = this.input.required;\n\n this.resetErrors(this.input);\n\n if (value) {\n if (min && value < min) {\n this.minError = true;\n this.input.classList.add(...invalidClasses);\n }\n\n if (max && value > max) {\n this.maxError = true;\n this.input.classList.add(...invalidClasses);\n }\n } else {\n if (required) {\n this.requiredError = true;\n this.input.classList.add(...invalidClasses);\n }\n }\n }\n\n private validateSelect(): void {\n if (!this.hasBeenTouched) {\n return;\n }\n\n const value = this.select.value;\n const required = this.select.required;\n\n this.resetErrors(this.select);\n\n if (required && !value) {\n this.requiredError = true;\n this.select.classList.add(...invalidClasses);\n }\n }\n\n private resetErrors(el: HTMLElement): void {\n this.requiredError = false;\n this.minError = false;\n this.maxError = false;\n el.classList.remove(...invalidClasses);\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { IHeaderAngularComp } from 'ag-grid-angular';\nimport { IHeaderParams, RowSelectedEvent } from 'ag-grid-community';\n\n/**\n * Custom AG Grid header renderer for checkbox selection\n * Uses Coach themed checkboxes and incorporates custom behavior\n * \n * @param {number?} maxSelected: optional number indicating the maximum amount of selected rows\n * \n * @example\n * public columnDefs: ColDef[] = [\n * { headerComponentFramework: CheckboxHeaderRendererComponent, headerComponentParams: { maxSelected: 20 } }\n * ];\n */\n@Component({\n selector: 'coach-checkbox-header-renderer',\n templateUrl: './checkbox-header-renderer.component.html',\n styleUrls: ['./checkbox-header-renderer.component.scss']\n})\nexport class CheckboxHeaderRendererComponent implements IHeaderAngularComp, OnDestroy {\n public params: any;\n isSelected: boolean;\n\n private rowListener = (params: RowSelectedEvent) => {\n const totalNodes = this.params.api.getRenderedNodes();\n const selectedNodes = this.params.api.getSelectedNodes();\n\n this.isSelected = totalNodes.length === selectedNodes.length || (this.params.maxSelected && selectedNodes.length >= this.params.maxSelected);\n };\n\n refresh(params: IHeaderParams): boolean {\n return false;\n }\n\n agInit(params: IHeaderParams): void {\n this.params = params;\n\n params?.api?.addEventListener('rowSelected', this.rowListener);\n }\n\n ngOnDestroy(): void {\n this.params?.api?.removeEventListener('rowSelected', this.rowListener);\n }\n\n onSelected(): void {\n if (this.isSelected) {\n const nodes = this.params.api.getRenderedNodes();\n if (this.params.maxSelected && nodes.length > this.params.maxSelected) {\n let selectedNodeCount: number = this.params.api.getSelectedNodes().length;\n nodes.forEach((node, i) => {\n if (selectedNodeCount < this.params.maxSelected && !node.isSelected()) {\n node.setSelected(true);\n selectedNodeCount++;\n }\n });\n } else {\n this.params.api.selectAllFiltered();\n }\n } else {\n this.params.api.deselectAll();\n }\n }\n\n}\n","
\n \n \n
\n","import { Component, OnDestroy } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams, RowSelectedEvent } from 'ag-grid-community';\n\n/**\n * Custom AG Grid cell renderer for checkbox selection\n * Uses Coach themed checkboxes and incorporates custom behavior\n * \n * @param {number?} maxSelected: optional number indicating the maximum amount of selected rows\n * \n * @example\n * public columnDefs: ColDef[] = [\n * { cellRendererFramework: CheckboxRendererComponent, cellRendererParams: { maxSelected: 20 } }\n * ];\n */\n@Component({\n selector: 'coach-checkbox-renderer',\n templateUrl: './checkbox-renderer.component.html',\n styleUrls: ['./checkbox-renderer.component.scss']\n})\nexport class CheckboxRendererComponent implements ICellRendererAngularComp, OnDestroy {\n \n params: any;\n isSelected: boolean = false;\n isDisabled: boolean = false;\n\n private rowListener = (params: RowSelectedEvent) => {\n if (params.node.rowIndex == this.params.node.rowIndex) {\n this.isSelected = params.node.isSelected();\n }\n\n this.isDisabled = this.checkDisabled();\n };\n\n agInit(params: ICellRendererParams) {\n this.params = params;\n this.isSelected = params.node.isSelected();\n this.isDisabled = this.checkDisabled();\n\n params.api.addEventListener('rowSelected', this.rowListener);\n }\n\n ngOnDestroy(): void {\n this.params?.api?.removeEventListener('rowSelected', this.rowListener);\n }\n\n checkDisabled(): boolean {\n return this.params.maxSelected && this.params.api.getSelectedNodes().length >= this.params.maxSelected && !this.isSelected;\n }\n\n refresh(params: ICellRendererParams): boolean {\n return false;\n }\n\n onSelected(): void {\n this.params.node.setSelected(this.isSelected);\n }\n}\n","
\n \n \n
\n","import { KillSubscriptions } from '../kill-subscriptions';\n\nexport abstract class CoachGridBase extends KillSubscriptions {\n public gridApi: any;\n public gridColumnApi: any;\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n }\n\n onGridSizeChanged(params: any): void {\n this.gridApi?.sizeColumnsToFit();\n }\n\n onModelUpdated(): void {\n this.gridApi?.sizeColumnsToFit();\n }\n}\n","
\n
\n
Edit Grid Columns
\n
{{presetName}}
\n
\n Select the columns you want\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { AgGridLocalSettingsService } from '@shared/services/ag-grid/ag-grid.service';\nimport { ColDef, ColumnApi, ColumnState } from 'ag-grid-community';\n@Component({\n selector: 'coach-columns-settings',\n templateUrl: './columns-settings.component.html',\n styleUrls: ['./columns-settings.component.scss']\n})\nexport class ColumnsSettingsComponent implements OnInit {\n @Input() columnDefs: Array;\n @Input() columnApi: ColumnApi\n @Input() presetName: string;\n @Input() presetSettings: string;\n @Input() versionKey: string;\n @Output() public closeForm: EventEmitter = new EventEmitter()\n columnSettingsList: Array = []\n constructor(private agGridLocalSettingsService: AgGridLocalSettingsService) { }\n\n ngOnInit(): void {\n let columnState = this.columnApi?.getColumnState()\n columnState?.forEach(cs => {\n let col = this.columnDefs.filter(cd => cd.field == cs.colId)\n if (col?.[0]?.headerName) {\n this.columnSettingsList.push(Object.assign(cs, { display: !cs.hide, headerName: col[0].headerName }))\n }\n })\n }\n ngOnChanges(): void {\n //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.\n //Add '${implements OnChanges}' to the class.\n\n }\n closeModal(): void {\n this.closeForm.emit()\n }\n submitChanges(): void {\n let oldColumnState = this.columnApi.getColumnState()\n let columnSettingsListObj = {} \n this.columnSettingsList.forEach(cs => {\n columnSettingsListObj[cs.colId] = cs\n })\n for(let i in oldColumnState){\n let ocs = oldColumnState[i]\n if(columnSettingsListObj[ocs.colId]){\n ocs.hide = !columnSettingsListObj[ocs.colId].display\n }\n }\n this.columnApi.applyColumnState({state:oldColumnState})\n this.agGridLocalSettingsService.storeColumnSettingsInLocalStorage(this.presetSettings || this.presetName, this.columnApi.getColumnState(),this.versionKey);\n this.closeModal();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GridFilterModel } from './grid-filter-model';\n\nexport const PATIENT_SUMMARY_GRID_KEY = 'patientSummaryReport';\nexport const CLINICIANS_REPORT_GRID_KEY = 'cliniciansReport';\nexport const PATIENT_DETAIL_REPORT_GRID_KEY = 'patientDetailReport';\nexport const FACESHEET_SCHEDULE_GRID_KEY = 'facesheetSchedule';\nexport const DISEASE_COHORT_GRID_KEY = 'carePatients';\nexport const ED_UTILIZATION_GRID_KEY = 'edUtilizationPatients';\nexport const PRACTICES_REPORT_GRID_KEY = 'practicesReport';\nexport const CINS_REPORT_GRID_KEY = 'cinsReport';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GridFilterService {\n filterModels: GridFilterModel[] = [];\n\n resetFilters(gridKey: string = null): void {\n if (gridKey != null) {\n const model = this.filterModels.find((x) => x.key === gridKey);\n if (model) {\n model.filterModel = null;\n }\n } else {\n this.filterModels = [];\n }\n }\n\n constructor() {}\n}\n","import { ProcessCellForExportParams } from \"ag-grid-community\";\nimport moment from \"moment\";\n\nexport function compareString(\n a: string,\n b: string,\n nodeA?,\n nodeB?,\n isInverted?\n): 0 | 1 | -1 {\n a == null ? (a = '') : (a = a.trim());\n b == null ? (b = '') : (b = b.trim());\n\n if (a == b) {\n return 0;\n }\n // Always sort empty stuff to the end\n if (a == '') return isInverted ? -1 : 1;\n if (b == '') return isInverted ? 1 : -1;\n\n // Strings need to be compared in the same way as the server side\n // REVIEW There's some subtle issues here: sql azure database uses\n // SQL_Latin1_General_CP1_CI_AS while mongodb presumably uses en_US as described here\n // https://docs.mongodb.com/manual/reference/collation-locales-defaults/#collation-languages-locales\n // which should be similar to what happens using localeCompare.\n // Because they're not exactly the same there may be some character combinations\n // which could cause the output to get \"stuck\" on one input stream while trying to merge them.\n const c = a.localeCompare(b, undefined, {\n sensitivity: 'base',\n numeric: true,\n });\n return c == 0 ? 0 : c < 0 ? -1 : 1;\n}\n\nexport function compareStringPlain(\n a: string,\n b: string,\n nodeA?,\n nodeB?,\n isInverted?\n): 0 | 1 | -1 {\n a == null ? (a = '') : (a = a.trim());\n b == null ? (b = '') : (b = b.trim());\n\n if (a == b) {\n return 0;\n }\n // Always sort empty stuff to the end\n if (a == '') return isInverted ? -1 : 1;\n if (b == '') return isInverted ? 1 : -1;\n\n // Strings need to be compared in the same way as the server side\n // REVIEW There's some subtle issues here: sql azure database uses\n // SQL_Latin1_General_CP1_CI_AS while mongodb presumably uses en_US as described here\n // https://docs.mongodb.com/manual/reference/collation-locales-defaults/#collation-languages-locales\n // which should be similar to what happens using localeCompare.\n // Because they're not exactly the same there may be some character combinations\n // which could cause the output to get \"stuck\" on one input stream while trying to merge them.\n const c = a.localeCompare(b, undefined, {\n sensitivity: 'base',\n numeric: false,\n });\n return c == 0 ? 0 : c < 0 ? -1 : 1;\n}\n\nexport function compareNumber(\n a: number,\n b: number,\n nodeA,\n nodeB,\n isInverted\n): 0 | 1 | -1 {\n if (a == b) {\n return 0;\n }\n if (null == a || isNaN(a)) return isInverted ? -1 : 1;\n if (null == b || isNaN(b)) return isInverted ? 1 : -1;\n return a < b ? -1 : 1;\n}\nexport function compareRiskTrend(\n a: string,\n b: string,\n nodeA,\n nodeB,\n isInverted\n): 0 | 1 | -1 {\n if (null == a) return isInverted ? -1 : 1;\n if (null == b) return isInverted ? 1 : -1;\n\n var riskTrends = {};\n riskTrends['Decreasing'] = 0;\n riskTrends['Same'] = 1;\n riskTrends['Increasing'] = 2;\n\n let result = riskTrends[a] - riskTrends[b]\n if (result < -2 || result > 2)\n result = 2;\n\n if (result == 0) {\n return 0;\n }\n\n return result < 0 ? -1 : 1;\n}\n\nexport function compareRiskCategory(\n a: string,\n b: string,\n nodeA,\n nodeB,\n isInverted\n): 0 | 1 | -1 {\n if (null == a) return isInverted ? -1 : 1;\n if (null == b) return isInverted ? 1 : -1;\n var riskCategories = {};\n riskCategories['Low'] = 0;\n riskCategories['Medium'] = 1;\n riskCategories['High'] = 2;\n\n let result = riskCategories[a] - riskCategories[b]\n if (result < -2 || result > 2)\n result = 2;\n\n if (result == 0) {\n return 0;\n }\n\n return result < 0 ? -1 : 1;\n}\nexport function compareDate(\n a: Date,\n b: Date,\n): 0 | 1 | -1 {\n if (a.getTime() == b.getTime()) {\n return 0;\n }\n return a.getTime() < b.getTime() ? 1 : -1;\n}\n\nexport function currencyCellRenderer(params: any) {\n var inrFormat = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n });\n return params.value ? inrFormat.format(params.value) : 'N/A';\n}\n\nexport function dodCellRenderer(params: ProcessCellForExportParams): string | null {\n return params?.node?.data?.dod || null;\n}\n\nexport function compareStringAndNumber(\n a: number,\n b: number,\n nodeA,\n nodeB,\n isInverted\n): 0 | 1 | -1 {\n if (a == b) {\n return 0;\n }\n if (null == a || isNaN(a)) return isInverted ? -1 : 1;\n if (null == b || isNaN(b)) return isInverted ? 1 : -1;\n return a < b ? -1 : 1;\n}\n\nexport function convertDateAndCompare(newDate: Date, oldDate: string): 0 | 1 | -1 {\n if (!oldDate || !newDate) {\n return 0;\n }\n\n const formattedNewDate = moment.utc(newDate).format('YYYY/MM/DD');\n const formattedOldDate = moment.utc(oldDate).format('YYYY/MM/DD');\n\n if (formattedOldDate < formattedNewDate) {\n return -1;\n } else if (formattedOldDate > formattedNewDate) {\n return 1;\n } else {\n return 0;\n }\n }\n\nexport function compareActions(action1, action2) {\n const sum1 = action1.alertsCount || 0;\n const sum2 = action2.alertsCount || 0;\n\n if (sum1 < sum2) {\n return -1;\n } else if (sum1 > sum2) {\n return 1;\n } else {\n return 0;\n }\n}\n\n","import { CoachGridBase } from './coach-grid-base';\nimport { GridFilterModel } from './grid-filter-model';\nimport { GridFilterService } from './grid-filter.service';\n\nexport abstract class PersistentGridFilters extends CoachGridBase {\n constructor(\n protected filterService: GridFilterService,\n public gridKey: string\n ) {\n super();\n }\n\n protected skipUpdate: boolean;\n\n filterChanged(params: any): void {\n if (this.skipUpdate) {\n this.skipUpdate = false;\n return;\n }\n const model = params.api.getFilterModel();\n const existing = this.getFilterModel();\n\n if (existing != null) {\n existing.filterModel = model;\n } else {\n this.filterService.filterModels.push({\n key: this.gridKey,\n filterModel: model,\n });\n }\n }\n\n hasFilterModel(): boolean {\n return this.filterService.filterModels.some(\n (x) => x.key === this.gridKey && x.filterModel != null\n );\n }\n\n getFilterModel(): GridFilterModel {\n return this.filterService.filterModels.find((x) => x.key === this.gridKey);\n }\n\n getColumnState(): any {\n return this.getFilterModel().columnState;\n }\n\n saveColumnState(columnApi: any, api: any, url: string): void {\n const state = columnApi.getColumnState();\n const model = api.getFilterModel();\n const existing = this.getFilterModel();\n console.log(JSON.stringify(model));\n if (existing != null) {\n console.log('Existing not null');\n existing.columnState = state;\n existing.filterModel = model;\n existing.url = url;\n } else {\n console.log('Pushing column state');\n console.log(`State: ${JSON.stringify(state)}`);\n console.log(`Model: ${JSON.stringify(model)}`);\n this.filterService.filterModels.push({\n key: this.gridKey,\n filterModel: model,\n columnState: state,\n url: url,\n });\n }\n }\n\n restoreFilterModel(gridApi: any): void {\n const filterModel = this.getFilterModel();\n if (filterModel != null) {\n gridApi.setFilterModel(filterModel.filterModel);\n this.skipUpdate = true;\n gridApi.onFilterChanged();\n }\n }\n\n restoreColumnState(columnApi: any, gridApi): void {\n const savedColumnState = this.getColumnState();\n if (savedColumnState != null) {\n columnApi.applyColumnState({ state: savedColumnState });\n this.skipUpdate = true;\n }\n this.restoreFilterModel(gridApi);\n }\n}\n","import { Component, NgZone } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AgRendererComponent } from 'ag-grid-angular';\n\n@Component({\n template: '{{value}}{{value}}'\n})\nexport class RouterLinkRendererComponent implements AgRendererComponent {\n params: any;\n isDisabled: boolean;\n value: string;\n\n constructor(\n private ngZone: NgZone,\n private router: Router) { }\n\n agInit(params: any): void {\n this.params = params;\n\n if (this.params != null && this.params.isDisabled != null) {\n this.isDisabled = this.params.isDisabled(this.params.data);\n }\n \n if (this.params?.valueOverride) {\n this.value = this.params.valueOverride(this.params.data);\n } else {\n this.value = this.params.value;\n }\n }\n\n refresh(params: any): boolean {\n return false;\n }\n\n // This was needed to make the link work correctly\n navigate(link): void {\n this.ngZone.run(() => {\n this.router.navigate([link, this.params.value]);\n });\n }\n\n onClick(): void {\n this.params.linkClicked(this.params.data);\n }\n}","","import { Component, OnInit, Input, OnChanges, Output, EventEmitter } from '@angular/core';\nimport { ActivatedRoute, UrlTree, PRIMARY_OUTLET } from '@angular/router';\nimport { IBreadcrumb } from '@shared/models/breadcrumbs';\nimport { BehaviorSubject } from 'rxjs';\nimport { ActivatedRouteService } from '@shared/services/activated-route/activated-route.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\n\n// TEMP\nexport const MockBreadcrumbs = [\n {\n label: 'crumb 1',\n urlSegment: 'crumb-1'\n },\n {\n label: 'crumb 2',\n urlSegment: 'crumb-2'\n },\n {\n label: 'crumb 3',\n urlSegment: 'crumb-3'\n }\n]\n\n@Component({\n selector: 'coach-header-breadcrumbs',\n templateUrl: './header-breadcrumbs.component.html',\n host: {\n class: 'coach-header-breadcrumbs'\n }\n})\nexport class HeaderBreadcrumbsComponent implements OnInit, OnChanges {\n\n @Input() showBreadcrumbs: boolean;\n @Output() activeViewCrumb: EventEmitter = new EventEmitter();\n public activatedRoute$: BehaviorSubject;\n public breadcrumbs: IBreadcrumb[];\n\n private tierRoute = ':tierName';\n private tierIdRoute = ':tierId';\n\n constructor(\n private _activatedRoute: ActivatedRouteService,\n private hierarchyTierService: HierarchyTierService,\n ) {\n this.activatedRoute$ = this._activatedRoute.activatedRoute$;\n }\n \n // --- UNDER CONSTRUCTION ---\n \n ngOnInit(): void {\n if (this.showBreadcrumbs) {\n const route = this.activatedRoute$?.value?.root;\n if(route){\n this.breadcrumbs = this.buildBreadcrumb(this.activatedRoute$.value?.root);\n }\n \n }\n }\n\n ngOnChanges(): void {\n if (this.showBreadcrumbs) {\n const route = this.activatedRoute$?.value?.root;\n if(route){\n this.breadcrumbs = this.buildBreadcrumb(route);\n }\n \n }\n }\n\n public buildBreadcrumb(\n route: ActivatedRoute,\n url: string= '',\n breadcrumbs: IBreadcrumb[]=[]\n ) {\n // shortening for ease\n const r = route;\n const rc = r.routeConfig;\n \n //If no routeConfig is avalailable we are on the root path\n let label = rc && rc.data ? rc.data.label : '';\n let path = rc ? rc.path : '';\n\n if (path.indexOf(this.tierRoute) > -1) {\n const abv = this.hierarchyTierService.getTierAbbreviationFromRoute();\n path = path.replace(this.tierRoute, abv);\n }\n\n if (path.indexOf(this.tierIdRoute) > -1) {\n const tierId = this.hierarchyTierService.getTierIdFromRoute();\n path = path.replace(this.tierIdRoute, tierId);\n }\n\n // check if Patient Facesheet and replace with Patients List\n if (label === 'Patient') {\n label = 'Patients';\n path = 'patients';\n }\n\n //In the routeConfig the complete path is not available, so we rebuild it each time\n const nextUrl = path ? `${url}/${path}` : url;\n \n const breadcrumb: IBreadcrumb = {\n label: label,\n urlSegment: nextUrl,\n };\n\n const isDuplicate = breadcrumbs.some(x => x.label === breadcrumb.label && x.urlSegment === breadcrumb.urlSegment);\n const newBreadcrumbs = breadcrumb.label && !isDuplicate ? [ ...breadcrumbs, breadcrumb ] : [ ...breadcrumbs];\n \n if (r.firstChild) {\n // If we are not on our current path yet, there will be more children to look after, to build our breadcumb\n return this.buildBreadcrumb(r.firstChild, nextUrl, newBreadcrumbs);\n } else {\n this.activeViewCrumb.emit(newBreadcrumbs[0]);\n }\n \n return newBreadcrumbs.slice(1);\n\n }\n\n}\n","
\n
\n
\n
\n
\n {{currentTier?.name}} Selected\n
\n
\n
\n
\n {{pageName}} is not available at the {{currentTier?.name}} level. To continue, select a {{tierName}} in the hierarchy\n selector.\n
\n
\n
\n
","import { Component, Input, OnInit } from '@angular/core';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { KillSubscriptions } from '../kill-subscriptions';\n\n/**\n * Component for displaying an overlay modal message forcing a user to select\n * a required hierarchy tier item from the global hierarchy selectors.\n * \n * @example\n * \n * \n */\n@Component({\n selector: 'coach-hierarchy-required',\n templateUrl: './hierarchy-required.component.html',\n styleUrls: ['./hierarchy-required.component.scss']\n})\nexport class HierarchyRequiredComponent extends KillSubscriptions implements OnInit {\n\n /**\n * (Required) Name of the page to display in the hierarchy required message\n */\n @Input() public pageName: string;\n /**\n * (Required) Tier number required in order to view page (e.g. 1, 2, 3, or 4)\n */\n @Input() public requiredTier: number;\n\n public tierName: string;\n public currentTier: IHierarchyTier;\n\n showModal = false;\n\n constructor(private hierarchyTierService: HierarchyTierService) {\n super();\n }\n\n ngOnInit(): void {\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger)).subscribe(tier => {\n if (tier == null) {\n return;\n }\n\n this.currentTier = tier;\n this.tierName = this.hierarchyTierService.hierarchyTiers.find(x => x.tier === this.requiredTier).name.toLowerCase();\n\n if (tier.tier >= this.requiredTier) {\n this.showModal = false;\n } else {\n this.showModal = true;\n }\n });\n }\n\n}\n","import { Directive, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * Abstract component for unsubscribing to subscriptions on component destruction.\n * \n * @example\n * this.someSubscription.pipe(takeUntil(this.killTrigger)).subscribe(...);\n */\n@Directive()\nexport abstract class KillSubscriptions implements OnDestroy {\n killTrigger: Subject = new Subject();\n\n ngOnDestroy(): void {\n this.killTrigger.next();\n }\n}","\n
\n \n
","import { Component, Input } from '@angular/core';\n\n/**\n * Used to display a loading indicator overlaid on top of child elements. \n * Set position relative on a parent element to position the loading indicator in the desired location.\n *\n * @example \n *
\n * \n * ...child elements\n * \n *
\n */\n@Component({\n selector: 'coach-loading-container',\n templateUrl: './loading-container.component.html',\n styleUrls: ['./loading-container.component.scss']\n})\nexport class LoadingContainerComponent {\n\n /** Whether or not to display the loading indicator */\n @Input() isLoading = false;\n\n @Input() containerCss = '';\n\n constructor() { }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n/**\n * Used to display an indeterminate loading spinner.\n *\n * @example \n * \n * \n */\n@Component({\n selector: 'coach-loading-indicator',\n templateUrl: './loading-indicator.component.html',\n host: {\n class: 'coach-loading-indicator'\n }\n})\nexport class LoadingIndicatorComponent implements OnInit {\n\n /** Height and width in pixels of the loading indicator */\n @Input() size = 20;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
","\n \n","import { DomPortalOutlet, PortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport { AfterViewInit, ApplicationRef, Component, ComponentFactoryResolver, Injector, OnDestroy, ViewChild } from '@angular/core';\n\n/** \n * Portal component used to display content in the global header.\n * \n * @example\n * \n * ...\n * \n */\n@Component({\n selector: 'coach-header-title-portal',\n templateUrl: './header-title-portal.component.html',\n styleUrls: ['./header-title-portal.component.scss']\n})\nexport class HeaderTitlePortalComponent implements AfterViewInit, OnDestroy {\n @ViewChild('portalTemplate') portal: TemplatePortal;\n private portalHost!: PortalOutlet;\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private injector: Injector,\n private appRef: ApplicationRef\n ) {\n }\n\n ngAfterViewInit(): void {\n this.portalHost = new DomPortalOutlet(\n // tslint:disable-next-line:no-non-null-assertion\n document.querySelector('#header-title-container')!,\n this.componentFactoryResolver,\n this.appRef,\n this.injector\n );\n this.portalHost.attach(this.portal);\n }\n\n ngOnDestroy(): void {\n this.portalHost.detach();\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-shared-redirect',\n templateUrl: './shared-redirect.component.html',\n styleUrls: ['./shared-redirect.component.scss'],\n})\nexport class SharedRedirectComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth-service/auth.service';\nimport { AzureApiBase } from '../azure-api/azure-api-base';\nimport { TrackPerformanceWidgetData } from './track-performance-widget-data';\nimport { shareReplay } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TrackPerformanceWidgetApiService extends AzureApiBase {\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/performanceDashboard');\n }\n\n private cache$ = new Map>();\n\n getWidgetData(tierNum: number, tierId: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('tierNum', tierNum?.toString())\n .set('tierId', tierId);\n\n const key = `${tierNum}-${tierId}`;\n if (!this.cache$.get(key)) {\n this.cache$.set(key, this.getAll('/summary', params).pipe(shareReplay(1)));\n }\n\n return this.cache$.get(key);\n }\n}\n","\n
\n
\n
\n
{{performanceDashboardName}}
\n
\n
\n \n \n Track\n
\n
\n
\n \n

\n Check out how you are doing against the core measures and manage your attributed patient population to\n maximize your shared savings.\n

\n
    \n
  • \n
    \n {{data.name}}\n \n\n \n\n \n \n\n \n \n\n \n \n\n \n \n\n !\n\n \n \n
    \n
  • \n
\n
\n
\n
","import { Component, Input, OnInit } from '@angular/core';\nimport { TrackFeatureConstants } from '@shared/models/module-constants';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { TrackPerformanceWidgetApiService } from '@shared/services/performance-dashboard/track-performance-widget-api.service';\nimport { TrackPerformanceWidgetData } from '@shared/services/performance-dashboard/track-performance-widget-data';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { KillSubscriptions } from '../kill-subscriptions';\nimport { TrackPerformanceDashboardTargetStatus } from '@shared/services/performance-dashboard/track-performance-dashboard-constants';\n\nconst {\n NeedsAttention,\n NeedsImprovement,\n HittingTarget,\n Connected,\n NotConnected\n } = TrackPerformanceDashboardTargetStatus;\n\n@Component({\n selector: 'coach-track-performance-widget',\n templateUrl: './track-performance-widget.component.html',\n styleUrls: ['./track-performance-widget.component.scss']\n})\nexport class TrackPerformanceWidgetComponent extends KillSubscriptions implements OnInit {\n\n /** Callback that fires when an item is clicked */\n @Input()\n navigateToItem: (e: Event, path: string, query?: unknown | null) => void;\n\n /** Hide widget illustration */\n @Input()\n hideIllustration = false;\n\n performanceDashboardFeature = TrackFeatureConstants.PerformanceDashboardFeature;\n performanceDashboardFeatureFlag = TrackFeatureConstants.PerformanceDashboardFeatureFlag;\n performanceDashboardName = TrackFeatureConstants.PerformanceDashboardName;\n\n needsAttention = NeedsAttention;\n needsImprovement = NeedsImprovement;\n hittingTarget = HittingTarget;\n connected = Connected;\n notConnected = NotConnected;\n\n widgetData: TrackPerformanceWidgetData[] = [];\n\n constructor(private hierarchyTierService: HierarchyTierService, private trackPerformanceService: TrackPerformanceWidgetApiService) {\n super();\n }\n\n ngOnInit(): void {\n this.hierarchyTierService.currentTier$\n .pipe(takeUntil(this.killTrigger), filter(currentTier => currentTier != null), switchMap(tier => this.trackPerformanceService.getWidgetData(tier?.tier, tier?.selectedTierId)))\n .subscribe(results => {\n this.widgetData = results;\n });\n }\n\n}\n","import { Directive, HostListener, OnInit } from '@angular/core';\nimport { FilterToggleService } from '@shared/services/filter-toggle/filter-toggle.service';\nimport { SideBarToggleService } from '@shared/services/sidebar-toggle/sidebar-toggle.service'\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[coachAgGridResize]'\n})\nexport class AgGridResizeDirective implements OnInit {\n private gridApi: any;\n private filterToggleSubscription: Subscription;\n private sideBarToggleSubscription: Subscription;\n\n constructor(public filterToggleService: FilterToggleService, public sidebarToggleService: SideBarToggleService) { }\n\n ngOnInit() {\n this.filterToggleSubscription = this.filterToggleService.filterToggle.subscribe(() => {\n window.setTimeout(() => this.gridApi ? this.gridApi.sizeColumnsToFit() : '', 300);\n });\n\n this.sideBarToggleSubscription = this.sidebarToggleService.sidebarToggle.subscribe(() => {\n window.setTimeout(() => this.gridApi ? this.gridApi.sizeColumnsToFit() : '', 300);\n })\n }\n\n ngOnDestroy() {\n this.filterToggleSubscription.unsubscribe();\n this.sideBarToggleSubscription.unsubscribe();\n }\n\n @HostListener('window:resize')\n onResize() {\n if (!this.gridApi) return;\n setTimeout(() => {\n this.gridApi.sizeColumnsToFit();\n });\n }\n\n @HostListener('gridReady', ['$event'])\n onGridReady(params: any) {\n this.gridApi = params.api;\n params.api.sizeColumnsToFit();\n }\n}\n","import { Directive, Output, EventEmitter, ElementRef, HostListener, Input } from '@angular/core';\n\n@Directive({\n selector: '[clickAway]'\n})\nexport class ClickAwayDirective {\n\n @Output() public clickAway: EventEmitter = new EventEmitter();\n @Input() public clickAwayDisabled: boolean = false;\n\n constructor(\n private _elementRef: ElementRef\n ) { }\n\n @HostListener('document:click', ['$event.target'])\n public onClickAway(targetElement) {\n if ( !this.clickAwayDisabled ) { \n const clickedInside = this._elementRef.nativeElement.contains(targetElement);\n if (!clickedInside) {\n this.clickAway.emit(null);\n }\n }\n }\n}","import { Directive, ElementRef, Input, HostListener } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\n\nconst ToasterTimeoutInMs = 3000;\n\n@Directive({\n selector: '[copy]'\n})\nexport class CopyToClipboardDirective {\n @Input() copy: string;\n\n constructor(private elementRef: ElementRef, private toaster: ToastrService) { }\n\n @HostListener('document:click', ['$event.target'])\n public onCopy(targetElement: ElementRef): void {\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\n if (clickedInside) {\n if (this.copy) {\n navigator.clipboard.writeText(this.copy)\n .then(v => this.toaster.success(null, 'Copied to clipboard!', { timeOut: ToasterTimeoutInMs }));\n } else {\n this.toaster.error(null, 'All mandatory fields required to copy form!', { timeOut: ToasterTimeoutInMs });\n }\n }\n }\n}\n","import {Directive, Input, OnDestroy, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {UserAccessService} from '@shared/services/user-access/user-access.service';\nimport {takeUntil} from 'rxjs/operators';\nimport {FeatureFlagService} from '@shared/services/feature-flag/feature-flag.service';\nimport {Subject} from 'rxjs';\n\n/**\n * Only renders element if the user's current access exclude either the provided feature flag or one of the provided\n * components\n *\n * @example - with feature flag ID and component IDs\n *
\n *\n */\n@Directive({\n selector: '[doesNotHaveFeatureFlagOrAnyComponents]'\n})\nexport class DoesNotHaveFeatureFlagOrAnyComponents implements OnDestroy {\n constructor(\n protected featureFlagService: FeatureFlagService,\n protected userAccessService: UserAccessService,\n protected templateRef: TemplateRef,\n protected viewContainer: ViewContainerRef\n ) {\n featureFlagService.featureFlags$.pipe(takeUntil(this.killTrigger)).subscribe(_ => this.updateAccess());\n userAccessService.currentAccess$.pipe(takeUntil(this.killTrigger)).subscribe(_ => this.updateAccess());\n }\n\n featureFlagId: string;\n componentIds: Array = [];\n\n @Input()\n set doesNotHaveFeatureFlagOrAnyComponents(params: { featureFlagId: string, componentIds: number|Array }) {\n this.featureFlagId = params.featureFlagId;\n if (Array.isArray(params.componentIds)) {\n this.componentIds = params.componentIds;\n } else {\n this.componentIds = [params.componentIds];\n }\n\n this.updateAccess();\n }\n\n killTrigger: Subject = new Subject();\n private hasView = false;\n\n ngOnDestroy(): void {\n this.killTrigger.next();\n }\n\n updateAccess(): void {\n const hasAccess = this.doesNotHaveFlag() || this.doesNotHaveAnyComponents();\n if (hasAccess && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!hasAccess && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n\n doesNotHaveFlag(): boolean {\n return !this.featureFlagService.hasFeatureFlag(this.featureFlagId);\n }\n\n doesNotHaveAnyComponents(): boolean {\n return this.componentIds.some(id =>\n !this.userAccessService.hasComponent(this.userAccessService.currentAccess$.value, id))\n }\n}\n","import { Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * Only renders element if the feature flag is enabled globally or for current tier. \n * \n * @example\n *
\n */\n@Directive({\n selector: '[doesNotHaveFeatureFlag]'\n})\nexport class DoesNotHaveFeatureFlagDirective extends KillSubscriptions implements OnInit {\n\n private doesNotHaveView = false;\n private featureFlag: string;\n\n constructor(protected templateRef: TemplateRef,\n protected viewContainer: ViewContainerRef,\n protected featureFlagService: FeatureFlagService) {\n super();\n }\n\n @Input()\n set doesNotHaveFeatureFlag(value: string) {\n this.featureFlag = value;\n }\n\n ngOnInit(): void {\n this.featureFlagService.featureFlags$.pipe(takeUntil(this.killTrigger)).subscribe(() => this.updateAccess());\n }\n\n updateAccess(): void {\n const hasFlag = this.featureFlagService.hasFeatureFlag(this.featureFlag);\n if (hasFlag && this.doesNotHaveView) {\n this.viewContainer.clear();\n this.doesNotHaveView = true;\n } else if (!hasFlag && !this.doesNotHaveView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.doesNotHaveView = true;\n }\n }\n\n}\n","import { Directive, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Access } from '@shared/services/graphql/access.service';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive()\nexport abstract class HasAccessBase implements OnDestroy {\n\n constructor(protected userAccessService: UserAccessService,\n protected templateRef: TemplateRef,\n protected viewContainer: ViewContainerRef) {\n userAccessService.currentAccess$.pipe(takeUntil(this.killTrigger)).subscribe(access => {\n this.updateAccess(access);\n });\n }\n\n killTrigger: Subject = new Subject();\n private hasView = false;\n\n ngOnDestroy(): void {\n this.killTrigger.next();\n }\n\n updateAccess(access: Access): void {\n const hasAccess = this.getAccess(access);\n if (hasAccess && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!hasAccess && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n\n abstract getAccess(access: Access): boolean;\n\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Access } from '@shared/services/graphql/access.service';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { HasAccessBase } from './has-access';\n\n/**\n * Only renders element if the user's current access includes ANY of the supplied Component IDs\n *\n * @example - with one component ID\n *
\n *\n * @example - will render if has any of the component ids\n *
\n *\n */\n@Directive({\n selector: '[hasComponent]'\n})\nexport class HasComponentDirective extends HasAccessBase {\n constructor(\n protected userAccessService: UserAccessService,\n protected templateRef: TemplateRef,\n protected viewContainer: ViewContainerRef\n ) {\n super(userAccessService, templateRef, viewContainer);\n }\n\n componentIds: Array = [];\n\n @Input()\n set hasComponent(value: number | Array) {\n if (Array.isArray(value)) {\n this.componentIds = value;\n } else {\n this.componentIds = [value];\n }\n this.updateAccess(this.userAccessService.currentAccess$.value);\n }\n\n getAccess(access: Access): boolean { \n if(this.componentIds) {\n\n for (let id of this.componentIds) {\n if (this.userAccessService.hasComponent(access, id)) {\n return true;\n\n }\n }\n }\n return false;\n }\n}\n","import {Directive, Input, OnDestroy, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {UserAccessService} from '@shared/services/user-access/user-access.service';\nimport {takeUntil} from 'rxjs/operators';\nimport {FeatureFlagService} from '@shared/services/feature-flag/feature-flag.service';\nimport {Subject} from 'rxjs';\n\n/**\n * Only renders element if the user's current access includes the provided feature flag and all the provided components\n *\n * @example - with feature flag ID and component IDs\n *
\n *\n */\n@Directive({\n selector: '[hasFeatureFlagAndAllComponents]'\n})\nexport class HasFeatureFlagAndAllComponents implements OnDestroy {\n constructor(\n protected featureFlagService: FeatureFlagService,\n protected userAccessService: UserAccessService,\n protected templateRef: TemplateRef,\n protected viewContainer: ViewContainerRef\n ) {\n featureFlagService.featureFlags$.pipe(takeUntil(this.killTrigger)).subscribe(_ => this.updateAccess());\n userAccessService.currentAccess$.pipe(takeUntil(this.killTrigger)).subscribe(_ => this.updateAccess());\n }\n\n featureFlagId: string;\n componentIds: Array = [];\n\n @Input()\n set hasFeatureFlagAndAllComponents(params: { featureFlagId: string, componentIds: number|Array }) {\n this.featureFlagId = params.featureFlagId;\n if (Array.isArray(params.componentIds)) {\n this.componentIds = params.componentIds;\n } else {\n this.componentIds = [params.componentIds];\n }\n\n this.updateAccess();\n }\n\n killTrigger: Subject = new Subject();\n private hasView = false;\n\n ngOnDestroy(): void {\n this.killTrigger.next();\n }\n\n updateAccess(): void {\n const hasAccess = this.hasFlag() && this.hasAllComponents();\n if (hasAccess && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!hasAccess && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n\n hasFlag(): boolean {\n return this.featureFlagService.hasFeatureFlag(this.featureFlagId);\n }\n\n hasAllComponents(): boolean {\n return this.componentIds.every(id =>\n this.userAccessService.hasComponent(this.userAccessService.currentAccess$.value, id))\n }\n}\n","import { Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * Only renders element if the feature flag is enabled globally or for current tier. \n * \n * @example\n *
\n */\n@Directive({\n selector: '[hasFeatureFlag]'\n})\nexport class HasFeatureFlagDirective extends KillSubscriptions implements OnInit {\n\n private hasView = false;\n private featureFlag: string;\n\n constructor(protected templateRef: TemplateRef,\n protected viewContainer: ViewContainerRef,\n protected featureFlagService: FeatureFlagService) {\n super();\n }\n\n @Input()\n set hasFeatureFlag(value: string) {\n this.featureFlag = value;\n }\n\n ngOnInit(): void {\n this.featureFlagService.featureFlags$.pipe(takeUntil(this.killTrigger)).subscribe(() => this.updateAccess());\n }\n\n updateAccess(): void {\n const hasFlag = this.featureFlagService.hasFeatureFlag(this.featureFlag);\n\n if (hasFlag && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!hasFlag && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Access } from '@shared/services/graphql/access.service';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { HasAccessBase } from './has-access';\n\n/**\n * Only renders element if the user's current access includes supplied Feature ID\n * \n * @example\n *
\n */\n@Directive({\n selector: '[hasFeature]'\n})\nexport class HasFeatureDirective extends HasAccessBase {\n\n constructor(protected userAccessService: UserAccessService,\n protected templateRef: TemplateRef,\n protected viewContainer: ViewContainerRef) {\n super(userAccessService, templateRef, viewContainer);\n }\n\n featureId: number;\n\n @Input()\n set hasFeature(value: number) {\n this.featureId = value;\n this.updateAccess(this.userAccessService.currentAccess$.value);\n }\n\n getAccess(access: Access): boolean {\n return this.userAccessService.hasFeature(access, this.featureId);\n }\n\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Access } from '@shared/services/graphql/access.service';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { HasAccessBase } from './has-access';\n\n/**\n * Only renders element if the user's current access includes supplied Module ID\n * \n * @example\n *
\n */\n@Directive({\n selector: '[hasModule]'\n})\nexport class HasModuleDirective extends HasAccessBase {\n\n constructor(protected userAccessService: UserAccessService,\n protected templateRef: TemplateRef,\n protected viewContainer: ViewContainerRef) {\n super(userAccessService, templateRef, viewContainer);\n }\n\n moduleId: number;\n\n @Input()\n set hasModule(value: number) {\n this.moduleId = value;\n this.updateAccess(this.userAccessService.currentAccess$.value);\n }\n\n getAccess(access: Access): boolean {\n return this.userAccessService.hasModule(access, this.moduleId);\n }\n\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[isNotTierNum]',\n})\nexport class IsNotTierNumDirective extends KillSubscriptions {\n private hasView = false;\n tierNum: number;\n\n @Input()\n set isNotTierNum(value: number) {\n this.tierNum = value;\n this.updateTier(this.hierarchyTierService.currentTier$.value);\n }\n\n constructor(\n protected hierarchyTierService: HierarchyTierService,\n protected templateRef: TemplateRef,\n protected viewContainer: ViewContainerRef\n ) {\n super();\n hierarchyTierService.currentTier$\n .pipe(takeUntil(this.killTrigger))\n .subscribe((tier) => {\n this.updateTier(tier);\n });\n }\n\n updateTier(tier: IHierarchyTier): void {\n if (this.tierNum && this.tierNum !== tier.tier && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (this.tierNum === tier.tier && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n}\n","import { QualityDashboardComponent } from \"@track/track-quality/quality-dashboard/quality-dashboard.component\";\n\nexport enum ComponentId {\n PatientList = 1,\n AWVWorklist = 2,\n EDUtilizationWorklist = 3,\n PatientDiseaseCohorts = 4,\n PatientCareGaps = 5,\n PatientTimeline = 6,\n TimeTracking = 7,\n HCCFacesheetBySchedule = 8, \n ChronicConditions = 10,\n TimeTrackingReport = 11,\n ACONetworkUtilization = 12,\n ClinicalEpisodes = 13,\n EndofLife = 14,\n KeyPerformanceIndicators = 15,\n PostAcuteCare = 16,\n PromotingInteroperabilitySubmission = 17,\n QualityPortalSubmission = 18,\n UnofficialCMSQuality = 19,\n Dashboard = 20,\n Contacts = 21,\n ACOBoard = 22,\n SteeringCommitee = 23,\n PracticeImprovement = 24,\n InformationTechnology = 25,\n Events = 26,\n QualityFormv = 27,\n ComplianceForm = 28,\n PromotingInteroperabilityForm = 29,\n MeetingFormPartnership = 30,\n Learn = 31,\n EULA = 32,\n Banner = 33,\n Application = 34,\n Recents = 40,\n PerformanceDashboard = 52,\n QualityDashboardComponent = 63\n}\n\nexport enum SubComponentId {\n PatientList = 1,\n PatientSummary = 2,\n CarePlan = 3,\n AlertManagement = 4,\n Messaging = 5,\n Surveys = 6,\n Invitations = 7,\n ProviderReport = 8,\n TimeLine = 9,\n PatientDetail = 10,\n PerformanceDashboard = 26,\n QualityDashboardSubComponentMeasure = 16,\n QualityDashboardSubComponentAllMeasures = 17,\n QualityDashboardSubComponentPatientsList = 18\n}\n\nexport enum LogAuditElementID {\n ACO_ID = 4,\n ChPatId = 19,\n Tier2_ID = 12,\n Tier3_ID = 13,\n Tier4_ID = 14,\n Tier5_ID = 15,\n OrgId = 20,\n DocumentOwner = 21,\n DocumentEntryId = 22,\n ReportGUID = 23,\n}\n\nexport enum ActionId {\n Delete = 1,\n Move = 2,\n Update = 3,\n Login = 4,\n ReportAccess = 5,\n PHIAccess = 6,\n Insert = 7,\n Approve = 8,\n PrintExport = 9,\n Navigate = 11,\n}\n\nexport class UrlExceptionsToRemove {\n public static readonly Params = [\n 'attemptCounter'\n ];\n}\n","export class AppConstants {\n public static readonly ApplicationName = 'Coach';\n public static readonly CompanyName = 'Signify';\n public static readonly CompanyNameFull = 'Signify Health';\n public static readonly SupportEmail = 'ACO_Support@signifyhealth.com';\n }\n","import { LogError } from '../../services/logging/log-error';\n\nexport class CoachException extends Error {\n\n /** Custom exception used to log errors to the CoachSQL database */\n constructor(error: LogError, message?: string) {\n super(message == null ? error.errorDescription : message);\n this.logError = error;\n }\n\n logError: LogError;\n}","export class FormConstants {\n public static Quality = {\n overviewTitle: 'Quality Submissions',\n title: 'Quality Form',\n submissionPeriod: 'Loading',\n dueDate3rdParagraph: '',\n requirements: '',\n instructionsPart1:\n 'Before moving to step 1, please be prepared with an EHR Quality report with aggregated numerator and denominator counts for patient screenings and care gaps closed between ',\n instructionsPart2:\n ' on your clinical quality measures. Please review the instructions in steps 1 and 2 before submitting the form.',\n noteTextPart1: 'Note: ',\n noteTextPart2:\n ' On the form, if your practice EHR configuration covers all practices listed, then one submission will cover all your practices. If your practices are on disparate EHRs or databases, to the extent possible and/or applicable, please submit data for ',\n noteTextPart3: ' each of your practices',\n noteTextPart4: ' participating in the ACO.',\n disclaimer:\n 'Disclaimer: This tool is intended for estimating purposes only, and does not reflect or predict the ACO or MIPS Quality score assigned by CMS.',\n dataSourceToolTipText:\n 'Data should be generated from your EHR dashboard for the 2021 calendar year. No other options available during this submission period.',\n shwSpecialStatus: true,\n useCurrentHierarchy: true,\n drpDataSource: ['From EHR'],\n drpEHR: ['Allscripts|AthenaHealth|Cerner|CPSI|eClinicalWorks|e-MDs|Epic|GE Healthcare|Greenway Health|Healthland|Meditech|NextGen|Other'],\n drpPatientPop: ['All Payors'],\n instructionDataSrc: 'Select data source',\n stepSpecialStatus1Text: 'The following practices have been previously identified as having a special status and therefore exempt from this submission process.',\n stepSpecialStatus2Text: 'Please review to ensure that these exemptions are still accurate. If a practice status has changed, update to the appropriate status or click remove so that we can include the practice in this submission.',\n stepAddEditText: 'We keep track of all forms submitted or saved as draft. Come back here to review and update any submitted or saved forms prior to the submission deadline of ',\n\n tooltipEHRText: '

The twelve most popular EHRs are listed. If your EHR is not indicated, please select Other.

',\n tooltipDataSourceText: '

Data should be generated from your EHR dashboard for the 2021 calendar year. No other options available during this submission period.

',\n tooltipPatientPopText: '

Data should represent patients from All Payors to mirror and prepare for upcoming CMS changes for PY2022

',\n\n tooltipPracticeText: '

Lists practice(s) with attribution in the ACO. Click all practices that share an EHR to indicate that the submitted Quality data covers all selected practices.

',\n tooltipExemptText: '

Indicate whether selected practice(s) are exempt. If exempt, please indicate the reason in \"Special Status\" below.

',\n tooltipSpecialStatusText: '

Select a new Special Status, for a particular practice.

',\n tooltipUploadQualityMeasureReportText: '

Before submitting, please upload an electronic copy of the EHR report or excel template used to complete the form for verification and accountability.

',\n };\n public static QualityOpeningInfo = '2021 YTD - 8/31, EHR only ';\n public static QualityOpenDueDate = '(Opening January 2022)';\n public static QualityPatientPopulationToolTipText =\n 'Data should represent patients from All Payors. The Medicare Only option is not available during this submission period.';\n\n public static ComplianceOpeningInfo = '2021 Self-Assessment ';\n public static ComplianceOpenDueDate = '(Not Open)';\n\n public static PIOpeningInfo = '2021 Best 90 days ';\n public static PIOpenDueDate = '(Opening January 2022)';\n\n\n public static MeetingWidgetName = 'Partnership Meetings';\n public static MeetingOpeningInfo = 'Meeting Upload(s) ';\n public static MeetingOpenDueDate = '(due End of Month, Recurring)';\n public static MeetingCommunitySelection =\n \"From the hierarchy above, please change 'Principle Participants' and 'Practice' to 'All'\";\n\n public static PromotingInterop = {\n overviewTitle: 'Promoting Interoperability',\n title: 'Promoting Interoperability',\n submissionPeriod: 'Loading',\n instructionsPart1:\n 'Please be prepared with numerator and denominator counts for the ',\n instructionsPart2:\n 'best 90 day period',\n instructionsPart3:\n ' (or YTD depending on EHR capability) on the Promoting Interoperability measures',\n instructionsPart4:\n 'Then follow the steps to submit your form(s) for each practice participating in the ACO.',\n noteTextPart1: 'Note: ',\n noteTextPart2:\n ' To the extent possible and/or applicable, we\\'d like to collect distinct measure data from the patient populations of',\n noteTextPart3:\n 'each of your practices ',\n noteTextPart4:\n 'participating in the ACO.',\n disclaimer:\n 'Disclaimer: This tool is intended for estimating purposes only, and does not reflect or predict the ACO or MIPS Quality score assigned by CMS.',\n shwSpecialStatus: true,\n drpEHR: ['Allscripts|AthenaHealth|Cerner|CPSI|eClinicalWorks|e-MDs|Epic|GE Healthcare|Greenway Health|Healthland|Meditech|NextGen|Other'],\n infoMeasureLinkFolder: '1025025',\n infoScoringLinkFolder: '1025016',\n infoScoringLinkFile: '1025595',\n formNoteInternal:\n 'Fill in the following fields based on the best 90-day snapshot in the reporting period.',\n stepSpecialStatus1Text:\n 'The following practices have been previously identified as having a special status and therefore exempt from this submission process.',\n stepSpecialStatus2Text:\n 'Please review to ensure that these exemptions are still accurate. If a practice status has changed, update to the appropriate status or or click remove so that we can include the practice in this submission.',\n stepAddEditText:\n 'We keep track of all forms submitted or saved as draft. Come back here to review and update any submitted or saved forms prior to the submission deadline of ',\n\n };\n\n public static Compliance = {\n overviewTitle: 'Compliance Submissions',\n title: 'Compliance Form',\n submissionPeriod: 'Loading',\n requirements: '',\n instructionsPart1:\n 'The 2022 self-assessment has officially begun! Completed self-assessments are due no later than ',\n instructionsPart2:\n '. To assist you in completing the self-assessment, we have a number of resources available including an FAQ and \\'how to\\' instructional video. Please find these resources via the following path Caravan Coach > Improve > Practice Improvement > Compliance > Self-Assessment',\n noteTextPart1: 'Note: ',\n noteTextPart2:\n 'While the self-assessment exercise ends on ',\n noteTextPart3: 'April 4th',\n noteTextPart4: ', remember you have until ',\n noteTextPart5: 'May 6th',\n noteTextPart6: ' to resubmit your self-assessment for improved credit.',\n disclaimer:\n '',\n dataSourceToolTipText:\n '',\n dueDateSoft: '',\n remediationCloseDate: '',\n };\n\n}\n\nexport interface QualityFormSettings {\n overviewTitle: string;\n title: string;\n submissionPeriod: string;\n dueDate3rdParagraph: string;\n requirements: string;\n instructionsPart1: string;\n instructionsPart2: string;\n noteTextPart1: string;\n noteTextPart2: string;\n noteTextPart3: string;\n noteTextPart4: string;\n disclaimer: string;\n dataSourceToolTipText: string;\n shwSpecialStatus: boolean;\n useCurrentHierarchy: boolean;\n drpDataSource: string[];\n drpEHR: string[];\n drpPatientPop: string[];\n instructionDataSrc: string;\n stepSpecialStatus1Text: string;\n stepSpecialStatus2Text: string;\n stepAddEditText: string;\n\n tooltipEHRText: string;\n tooltipDataSourceText: string;\n tooltipPatientPopText: string;\n tooltipPracticeText: string;\n tooltipExemptText: string;\n tooltipSpecialStatusText: string;\n tooltipUploadQualityMeasureReportText: string;\n\n\n\n}\n\nexport interface PromotingInteropFormSettings {\n overviewTitle: string;\n title: string;\n submissionPeriod: string;\n instructionsPart1: string;\n instructionsPart2: string;\n instructionsPart3: string;\n instructionsPart4: string;\n noteTextPart1: string;\n noteTextPart2: string;\n noteTextPart3: string;\n noteTextPart4: string;\n disclaimer: string;\n shwSpecialStatus: boolean;\n drpEHR: string[];\n infoMeasureLinkFolder: string;\n infoScoringLinkFolder: string;\n infoScoringLinkFile: string;\n formNoteInternal: string;\n stepSpecialStatus1Text: string;\n stepSpecialStatus2Text: string;\n stepAddEditText: string;\n\n}\n\nexport interface ComplianceFormSettings {\n overviewTitle: string;\n title: string;\n submissionPeriod: string;\n requirements: string;\n instructionsPart1: string;\n instructionsPart2: string;\n noteTextPart1: string;\n noteTextPart2: string;\n noteTextPart3: string;\n noteTextPart4: string;\n noteTextPart5: string;\n noteTextPart6: string;\n disclaimer: string;\n dataSourceToolTipText: string;\n dueDateSoft: string;\n remediationCloseDate: string;\n}\n","import { ComponentId } from '@shared/models/audit-constants';\n\nexport class ModuleConstants {\n public static readonly HomeModule = 1;\n public static readonly CareModule = 2;\n public static readonly TrackModule = 3;\n public static readonly ImproveModule = 4;\n public static readonly SubmitModule = 5;\n public static readonly LearnModule = 6;\n}\n\nexport class CareFeatureConstants {\n public static readonly PatientsFeature = 1;\n public static readonly CareApiPhiFeature = 2;\n public static readonly CarePrescriptionFeature = 22;\n public static readonly CarePrescriptionExceptionsFeature = 22;\n public static readonly CarePrescriptionProcessingFeature = 22;\n public static readonly CarePrescriptionInvoicingFeature = 22;\n public static readonly CareExceptionsComponent = 28;\n public static readonly FeatureFlag340B = '340BFeatureFlag';\n public static readonly HiddenFeatureFlag340B = '340BHiddenFeatureFlag';\n public static readonly FileImport340B = 'FileImport340B';\n public static readonly AgGridCustomFilteringFlag = 'AgGridCustomFiltering';\n public static readonly PatientListsUpdateFlag = 'CC2909-PatientListsUpdate';\n public static readonly ClinicalProgramsListFlag = 'ClinicalProgramsListFlag';\n public static readonly CoachPatientReminderTab = 'CoachPatientReminderTab';\n public static readonly HCCVIPCohortList = 'HCCVIPCohortList';\n public static readonly Fax340bOutboundFeature = '340bFaxOutbound';\n public static readonly UIUpdates340B = '340BUIUpdates';\n public static readonly FacesheetUIUpdatesFlag = 'FacesheetUIUpdates';\n public static readonly ExceptionQueue340B = 'ExceptionQueue340B';\n public static readonly PACNavigatorProgram = 'PACNavigatorProgram';\n public static readonly PatientSideBar = 'PatientSideBar';\n public static readonly HCCListRevamp = 'HCCListRevamp';\n public static readonly IHECohort = 'IHECohort';\n public static readonly InHomeAWVScheduleList = 'InHomeAWVScheduleList';\n public static readonly SMSOutreachProgram = 'SMSOutreachProgram';\n public static readonly EHR = 'AWVDateAutoPopulated';\n public static readonly CombineSMSCohorts = 'CombineSMSCohorts';\n public static readonly CareLandingPageFlag ='CareLandingPage';\n public static readonly HideEHRColumnsInAwvOpportunities = 'hideEHRColumnsInAwvOpportunities';\n public static readonly SMSInviteFlag = 'SMSInvite';\n public static readonly FacesheetV28 = 'FacesheetV28';\n}\n\nexport class CareComponentConstants {\n public static readonly Default = 0;\n public static readonly PatientList = 1;\n public static readonly AwvWorklist = 2;\n public static readonly EdUtilizationWorklist = 3;\n public static readonly PatientDiseaseCohorts = 4;\n public static readonly PatientCareGaps = 5;\n public static readonly PatientTimeline = 6;\n public static readonly Timeracking = 7;\n public static readonly HccFacesheetBySchedule = 8;\n public static readonly PACNavigatorProgram = 50;\n public static readonly IHECohort = 53;\n public static readonly IHESchedule = 54;\n public static readonly IHEBilling = 56;\n public static readonly CareManagement = 58;\n public static readonly AwvPatientsWorklist = 60;\n public static readonly PAC3DayWaiver = 64;\n}\n\nexport class TrackComponentConstants {\n public static readonly TimeTrackingReport = 11;\n public static readonly ChronicConditions = 10;\n public static readonly AcoNetworkUtilization = 12;\n public static readonly ClinicalEpisodes = 13;\n public static readonly EndOfLife = 14;\n public static readonly KeyPerformanceIndicators = 15;\n public static readonly PostAcuteCare = 16;\n public static readonly PromotingInteroperabilitySubmission = 17;\n public static readonly QualityPortalSubmission = 18;\n public static readonly UnofficialCmsQuality = 19;\n public static readonly ValueCalculator = 38;\n public static readonly PerformanceDashboard = 52;\n public static readonly CompareComponent = 59;\n public static readonly QualityDashboardComponent = 63;\n\n public static readonly ValueCalculatorReportName = 'MSSP Value Report';\n}\n\nexport class TrackFeatureConstants {\n public static readonly ClinicalFeature = 3;\n public static readonly FinancialUtilizationFeature = 4;\n public static readonly QualityFeature = 5;\n public static readonly SummaryFeature = 6;\n public static readonly MicroServiceApiFeature = 7;\n public static readonly ValueCalculatorFeature = 23;\n public static readonly PerformanceDashboardFeature = 26;\n public static readonly CompareFeature = 30;\n\n public static readonly CompareFeatureName = 'Compare';\n public static readonly QualityFeatureName = 'Quality + Interop';\n public static readonly ValueCalculatorName = 'MSSP Value';\n public static readonly ValueCalculatorFeatureFlag = 'MSSPValueReport';\n public static readonly ValueReportOverviewFeatureFlag = 'MSSPValueOverview';\n public static readonly FacesheetExportAsyncFeatureFlag =\n 'FacesheetExportAsync';\n public static readonly PerformanceDashboardFeatureFlag =\n 'TrackPerformanceDashboard';\n public static readonly PerformanceDashboardName = 'Performance Dashboard';\n public static readonly HccDashboardEnhancedFeatureFlag =\n 'HccDashboardEnhanced';\n public static readonly CompareFeatureFlag = 'TrackCompare';\n public static readonly ComparePhase2FeatureFlag = 'TrackComparePhase2';\n public static readonly QualityDashboardFeatureFlag = 'QIDashboard';\n public static readonly HccDashboardEnhanced2FeatureFlag =\n 'HccDashboardEnhanced2';\n}\n\nexport class CareOrchestrationConstants {\n // Access Requirements\n private static readonly GridViewComponentId = 60;\n private static readonly SideBarSubComponentId = 12;\n private static readonly FacesheetViewComponentId = 61;\n private static readonly FacesheetTabSubComponentId = 13;\n public static readonly FeatureFlagId = 'CareOrchestration';\n public static readonly GridViewAccessRequirements = {\n featureFlagId: CareOrchestrationConstants.FeatureFlagId,\n componentIds: [CareOrchestrationConstants.GridViewComponentId],\n };\n public static readonly SideBarAccessRequirements = {\n featureFlagId: CareOrchestrationConstants.FeatureFlagId,\n componentIds: [\n CareOrchestrationConstants.GridViewComponentId\n ],\n };\n public static readonly FacesheetAccessRequirements = {\n featureFlagId: CareOrchestrationConstants.FeatureFlagId,\n componentIds: [\n CareOrchestrationConstants.FacesheetViewComponentId\n ],\n };\n\n public static readonly AwvProgramId = 1;\n public static readonly FetchAwvWorkflowHistoryPageSize = 100;\n public static readonly commentBoxCharacterLimit = 200;\n public static readonly providerFieldCharacterLimit = 100;\n public static readonly forbiddenErrorMessageBackend =\n 'due a change in the rollback sequence being made by a non-user!';\n public static readonly forbiddenErrorMessageFrontend = `Cannot update patient where the latest update source was System(claims, in home AWV, or clinical (EHR))`;\n public static readonly conflictErrorMessageFrontend = `Cannot update patient because concurrent update attempted, please try again.`;\n public static readonly userDetailsErrorMessageFrontend = `Cannot retrieve user details from Access backend system`;\n public static readonly serverErrorMessageFrontend = `Please try to refresh the page. If the problem persists you can contact aco_support@signifyhealth.com`;\n public static readonly defaultErrorMessage = `Cannot update patient details`;\n public static readonly coachUser = 'Coach User';\n public static readonly workflowHistoryErrorMessageFrontend = `Cannot retrieve patient's history from the backend system`;\n}\n\nexport class ImproveFeatureConstants {\n public static readonly SummaryFeature = 8;\n public static readonly ContactsFeature = 9;\n public static readonly ACOBoardFeature = 10;\n public static readonly SteeringCommiteeFeature = 11;\n public static readonly PracticeImprovementFeature = 12;\n public static readonly InformationTechnologyFeature = 13;\n public static readonly EventsFeature = 14;\n}\n\n// Modules Features Components Authorization Ids\nexport class SubmitFeatureConstants {\n public static readonly SummaryFormFeature = 21;\n public static readonly QualityFormFeature = 18;\n public static readonly MeetingFormFeature = 15;\n public static readonly ComplianceFormFeature = 19;\n public static readonly PromotingInteroperabilityFormFeature = 20;\n public static readonly FormsAdminFormFeature = 24;\n public static readonly FormsAdminFormFeatureFlag = 'FormAdminReport';\n}\n\n// Form Ids in DB.\nexport class SubmitFormConstants {\n public static PromotingInteroperabilityFormComponent = 1;\n public static QualityFormComponent = 2;\n public static ComplianceFormComponent = 3;\n public static CommunicationFormComponent = 4;\n public static MeetingFormComponent = 5;\n}\n\n// Constants for Audit Logging.\nexport class SubmitComponentConstants {\n public static QualityFormComponent = 27;\n public static ComplianceFormComponent = 28;\n public static PromotingInteroperabilityFormComponent = 29;\n public static MeetingFormComponent = 30;\n public static SubmitSummaryFormComponent = 35;\n}\n\nexport class SubmitFeatureToFormId {\n public static map = new Map([\n [\n SubmitFeatureConstants.PromotingInteroperabilityFormFeature,\n SubmitFormConstants.PromotingInteroperabilityFormComponent,\n ],\n [\n SubmitFeatureConstants.QualityFormFeature,\n SubmitFormConstants.QualityFormComponent,\n ],\n [\n SubmitFeatureConstants.ComplianceFormFeature,\n SubmitFormConstants.ComplianceFormComponent,\n ],\n [\n SubmitFeatureConstants.SummaryFormFeature,\n SubmitFormConstants.CommunicationFormComponent,\n ],\n [\n SubmitFeatureConstants.MeetingFormFeature,\n SubmitFormConstants.MeetingFormComponent,\n ],\n ]);\n}\n\nexport class LearnFeatureConstants {\n public static readonly LearnFeature = 16;\n}\n\nexport class HomeFeatureConstants {\n public static readonly ApplicationFeature = 17;\n}\n\nexport class HomeComponentConstants {\n public static readonly MarketingWidget = 45;\n public static readonly MarketingWidget2 = 46;\n}\n\nexport class DocRepoConstants {\n public static readonly YoutubeEntryType = 'youtube';\n public static readonly TextPlainEntryType = 'text/plain';\n public static readonly TextHtmlEntryType = 'text/html';\n public static readonly PageEntryType = 'Page';\n public static readonly URLEntryType = 'URL';\n}\n\nexport class RecentsConstants {\n public static readonly RecentsFeatureFlag = 'Recents';\n}\n\nexport class ImproveFeatureNames {\n public static readonly Contacts = 'Contacts';\n public static readonly ACOBoard = 'ACO Board';\n public static readonly SteeringCommittee = 'Steering Committee';\n public static readonly PracticeImprovement = 'Practice Improvement';\n public static readonly InformationTechnology = 'Information Technology';\n public static readonly Events = 'Events';\n}\n\nexport class ImproveFeatureNamesToAuditComponentId {\n public static map = new Map([\n [ImproveFeatureNames.Contacts, ComponentId.Contacts],\n [ImproveFeatureNames.ACOBoard, ComponentId.ACOBoard],\n [ImproveFeatureNames.SteeringCommittee, ComponentId.SteeringCommitee],\n [ImproveFeatureNames.PracticeImprovement, ComponentId.PracticeImprovement],\n [\n ImproveFeatureNames.InformationTechnology,\n ComponentId.InformationTechnology,\n ],\n [ImproveFeatureNames.Events, ComponentId.Events],\n ]);\n}\nexport class ImproveFeatureNamesAuditComponentIdMap {\n public static map = {\n ImproveFeatureNames,\n };\n}\n\nexport class SubmitFeatureNames {\n public static readonly Summary = 'Summary';\n public static readonly Quality = 'Quality';\n public static readonly PI = 'Promoting Interoperability';\n public static readonly Compliance = 'Compliance';\n public static readonly Meeting = 'Meeting Uploads';\n public static readonly FormAdministration = 'Forms Administration';\n}\n\nexport class PatientSnfStatusItemAllowedTypes {\n public static readonly Names = [\n 'ServiceDelay',\n 'ClinicianDelay',\n 'PatientDecompensation',\n 'PatientDelay',\n 'DischargeIssue',\n 'InpatientTransfer',\n 'Other',\n 'None',\n ];\n public static readonly Definitions = {\n ServiceDelay:\n 'Services or DME did not show up as planned leading to missed services',\n ClinicianDelay:\n 'Delay in getting discharge order and/or services and supply orders',\n PatientDecompensation:\n 'Patient develops worsening symptoms and is unable to participate',\n PatientDelay: 'Patient refusing treatment and/or patient family issues',\n DischargeIssue:\n 'Transportation and/or services not arranged in timely manner',\n InpatientTransfer: 'Admitted to IP during SNF stay',\n Other: 'Issues not reflected in other options',\n None: 'No issues',\n };\n}\n\nexport class PatientIdentifiersIssuers {\n public static readonly SmsCarePlanPhoneNumber =\n 'https://identity.caravanhealth.com/smscareplanphonenumber';\n}\n\nexport enum ClinicalProgram {\n Hypertension = 'Hypertension',\n COPD = 'COPD',\n HeartFailure = 'Heart Failure',\n AllProgram = 'AllProgram',\n}\n\nexport enum CarePatientItem {\n AllPatients = 'AllPatients',\n FacesheetSchedule = 'FacesheetSchedule',\n AwvOpportunities = 'AwvOpportunities',\n AwvOpportunitiesReadyToSchedule = 'AwvOpportunities_ReadyToSchedule',\n AwvOpportunitiesReadyToRemind = 'AwvOpportunities_ReadyToRemind',\n AwvOpportunitiesReadyToSelfReport = 'AwvOpportunities_ReadyToSelfReport',\n EdUtilization = 'EdUtilization',\n CareManagementAllProgram = 'CareManagementAllProgram',\n CareManagementCopd = 'CareManagementCopd',\n CareManagementHeartFailure = 'CareManagementHeartFailure',\n CareManagementHypertension = 'CareManagementHypertension',\n HccTop50 = 'Top50',\n HccVipCohort = 'HCCVipCohort',\n ClinicalProgramHeartFailure = 'ClinicalProgramHeartFailure',\n ClinicalProgramCOPD = 'ClinicalProgramCOPD',\n ClinicalProgramHypertension = 'ClinicalProgramHypertension',\n AwvSchedule = 'AwvSchedule',\n AwvFiles = 'AwvFiles',\n AwvBilling = 'AwvBilling',\n PacNavigatorProgram = 'PacNavigatorProgram',\n SmsOutreachProgram = 'SmsOutreachProgram',\n CopdSmsAlert = 'CopdSmsAlert',\n Chf = 'Chf',\n ChronicConditionCOPD = 'ChronicConditionCOPD',\n Diabetes = 'Diabetes',\n CustomPatientList = 'CustomPatientList',\n UnreadMessages = 'Unread messages',\n}\n\nexport enum PresetCategory {\n Alerts = 'Alerts',\n AnnualWellnessVisits = 'Annual Wellness Visits',\n CareManagement = 'CareManagement',\n ChronicConditions = 'Chronic Conditions',\n ClinicalProgram = 'ClinicalProgram',\n Cohorts = 'Cohorts',\n CustomList = 'Custom list',\n Facesheet = 'Facesheet',\n General = 'General',\n Messages = 'Messages',\n AlertsAndMessages = 'Alerts + Messages',\n PostAcuteCare = 'Post Acute Care',\n Worklists = 'Worklists',\n}\n\nexport const ClinicalProgramPresetMap = new Map([\n ['Heart Failure', CarePatientItem.CareManagementHeartFailure],\n ['COPD', CarePatientItem.CareManagementCopd],\n ['Hypertension', CarePatientItem.CareManagementHypertension],\n]);\n\n// If true use Graphql replacement\nexport const FeatureFlagAccess2 = 'Access2';\n","// In home AWV status and file disposition\n//\n\nexport interface PatientIHEFilesNote {\n note: string; // \"file status comment\",\n createdByUserId: number; // 12345,\n createdByName: string; // \"Nora Nurse\"\n createdAt: Date\n}\n\n/**\n * Represents an instance of an in home AWV\n * Patient:Visit is a 1:many relationship\n */\nexport interface PatientIHEVisit {\n /** Read-only from the UI - primary key */\n visitId: string;\n /** Evaluation ID from Signify IHE - not needed to show in the UI at this point */\n evaluationId: string;\n /** Read-only from the coach UI */\n visitDate: string; // YYYY-MM-DD\n /** Relaxed typing on codes & status which may change */\n visitStatusCode?: number;\n visitStatus?: string;\n visitStatusDescription?: string;\n /** Disposition for the files related to a visit - read-only from the coach-web perspective */\n fileInfo: Array;\n /** OPEN - notes are scoped to the visit/evaluation, NOT specifically to the files list */\n notes: Array;\n}\n\n/** A file that is output for a visit */\nexport interface PatientIHEFileInfo {\n fileId: string; // TODO - what exactly should this be?\n fileType: PatientIHEFileType;\n /** TODO could make this an enumerated type */\n fileTypeId: number;\n fileTypeCaption: string;\n fileName: string;\n /** Full URL in blob storage */\n filePath: string;\n batchID: number;\n /** Whether the file has been downloaded */\n downloadInfo?: {\n current?: PatientIHEFileDownloadInfo;\n history?: Array;\n };\n availabilityInfo?: {\n current?: PatientIHEFileAvailabilityInfo;\n history?: Array;\n },\n fileDownloadStatus?: fileStatus\n}\n\nexport declare type PatientIHEFileType =\n \"Assessment\" | // WAS \"assessment\" |\n \"PPP\" | // WAS \"ppp\" |\n \"PCP\" | // WAS \"summary\" |\n \"Casemgmt\" // WAS \"cmr\"\n;\n\nexport const AssessmentFileTypes:PatientIHEFileType[] = [\"Assessment\", \"PPP\", \"PCP\"];\nexport const PatientIHEFileTypeLabels:{[key in PatientIHEFileType]:string} = {\n \"Assessment\" : \"Assessment\",\n \"PPP\" : \"Personal Prevention Plan\",\n \"PCP\" : \"PCP Summary\",\n \"Casemgmt\": \"Case Management Referral\"\n}\n\nexport interface PatientIHEFileDownloadInfo {\n /** ISO8601 */\n downloadedAtUtc: string;\n downloadedByName: string;\n downloadedByUserId: number;\n}\n\nexport interface PatientIHEFileAvailabilityInfo {\n /** ISO8601 */\n statusDateUtc: string;\n statusDescription: string;\n statusUpdatedByName: string;\n}\n\nexport declare type fileStatus = 'New' | 'Downloading' | 'Downloaded';\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import differenceInYears from 'date-fns/differenceInYears';\nimport has from 'lodash-es/has';\nimport isUndefined from 'lodash-es/isUndefined';\nimport get from 'lodash-es/get';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { ITrackApiAwvPatient, ITrackApiPatient } from '@shared/services/patient/patient.service';\nimport moment from 'moment';\nimport { environment } from 'src/environments/environment';\nimport { PatientSnfInfo, PatientSnfStatusItem } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/user';\nimport {AwvWorkflowStatuses as COWorkflowStatus} from 'src/app/api/care-orch/models/awv-workflow-statuses';\nimport {\n IWPAPIPatient,\n ITrackCohortPatient,\n ITrackCareManagementPatient,\n ITrackApiEdUtilizationPatient,\n ITrackApiIHEFilesListVisitInfo as ITrackApiIHEFilesListVisitInfo,\n IIHEAWVPatient,\n ITrackApiIHEBillingListVisitInfo,\n AWVJsonData\n} from '@shared/services/patient/patient.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { PatientIHEFileInfo } from '@shared/models/patient-ihe-data';\nimport { IHEDownloadStatusObject } from '@shared/modules/patient-facesheet/tabs/patient-ihe-worklist/patient-ihe-worklist.component';\n// REVIEW - recommend moving these Care API types to the patient service where they\n// are returned or to the Care API types package.\n// Models stored here should probably be only coach-web internal models\nexport interface IPatient {\n firstName: string;\n nickName?: string;\n middleName?: string;\n lastName: string;\n [key: string]: any; // temprorary solution before we figure out what keys we going to remove\n}\n\nexport interface PatientAlert {\n id: number;\n patientId: string;\n isUnread?: boolean;\n isUnhandled?: boolean;\n alertType?: string;\n}\n\nexport interface PatientMessage {\n id: number;\n patientId: string;\n isUnread?: boolean;\n isReplied?: boolean;\n subject?: string;\n body?: string;\n}\n\nexport class Patient implements IPatient {\n // [key: string]: any;\n\n /** Caravan patient id (chPatId) */\n id:string | number;\n\n // Shared properties\n firstName: string;\n middleName?: string;\n preferredName?: string;\n lastName: string;\n nickName?: string;\n gender?:string;\n dob?:string;\n dod?:string;\n email?:string;\n phoneNumber?:string;\n\n\n /** From carePatient.professionalId */\n professionalId?:string;\n completions?: any[]\n userActivity?: any;\n activities?: any[];\n tasks?: any[];\n attributedCP:string;\n\n\n /**\n * If already invited to patient engagement this should exist. Patient data\n * is partitioned by tierId\n */\n carePatient?: wpapi.model.Patient & {tierId?:string, snfInfo? : {\n current?: PatientSnfInfo,\n history?: PatientSnfInfo[]\n }};\n /** If retrieved from track patient search api */\n trackPatient?: ITrackApiPatient;\n trackAwvPatient?: ITrackApiAwvPatient;\n /** If retrieved from AWV worklist api */\n awvPatient?: ITrackApiAwvPatient;\n /** Patient’s current Tier5 provider name from fctAttributionResults most recent quarter. If Tier 5 name is NULL, display Tier 4 name */\n tier4_Name?: string;\n tier5_Name?: string;\n tier3_ID?: string;\n tier2_ID?: string;\n\n // Calculated or delegated properties\n get currentTimeZoneName() { return this?.carePatient?.currentTimeZoneName }\n set currentTimeZoneName(value:string) { if (this.carePatient) { this.carePatient.currentTimeZoneName = value; } }\n get currentTimeZoneOffsetSec() { return this?.carePatient?.currentTimeZoneOffsetSec }\n set currentTimeZoneOffsetSec(value:number) { if (this.carePatient) { this.carePatient.currentTimeZoneOffsetSec = value; }}\n get chPatId() { return this?.trackPatient?.chPatId || this?.carePatient?.chPatId || this.id?.toString() }\n get mbi() { return this?.trackPatient?.mbi || this?.trackAwvPatient?.mbi || this?.carePatient?.mbi }\n get mrn() { return this?.carePatient?.mrn }\n get username() { return this?.carePatient?.username }\n get statusHistory() { return this?.carePatient?.statusHistory }\n get includedObjects() { return this?.carePatient?.includedObjects }\n get createdAt() { return this?.carePatient?.createdAt }\n get photo() { return this?.carePatient?.avatar?.url }\n get raF_YTD() { return this?.trackPatient?.raF_YTD }\n get enrollmentType() { return this?.trackPatient?.enrollmentType }\n get ssDenom(){return this?.trackPatient?.ssDenom}\n get assignment() { return this?.trackPatient?.assignment }\n\n // Additional view model info\n professional?: wpapi.model.Professional;\n alerts?: {\n handled: Array;\n unhandled: Array;\n all: Array;\n };\n hideTabsAndDisableTimeTracking: boolean;\n supplementalId?: number;\n notifications: Array;\n episodesOfCare?: Array;\n\n snfInfo?: {\n current?: PatientSnfInfo,\n history?: PatientSnfInfo[]\n };\n\n statusDate?: string;\n verbalConsent?: {\n acceptedBy: String;\n acceptedByName: string;\n acceptedByEulaId: string;\n acceptedDate: string;\n }\n\n /** Only use factory methods to construct this object */\n private constructor() {}\n\n\n static fromCareAndTrackPatient(carePatient:wpapi.model.Patient & { tierId?: string}, trackPatient?:ITrackApiPatient) {\n let result = new Patient();\n result.refreshFromCareAndTrackPatient(carePatient, trackPatient);\n return result;\n }\n static fromCareAndTrackAwvPatient(carePatient:wpapi.model.Patient & { tierId?: string}, trackAwvPatient?:ITrackApiAwvPatient) {\n let result = new Patient();\n result.refreshFromCareAndTrackAwvPatient(carePatient, trackAwvPatient);\n return result;\n }\n\n static getChPatIdAndTierIdFromCarePatient(carePatient: wpapi.model.Patient):{tierId:string, chPatId:string} {\n const nowTicks = new Date().valueOf();\n const patientInTierSubject = carePatient?.identifiers?.\n find(i=>\n i.issuer === environment.patientIdentityProvider.issuer &&\n (!i.effectiveAt || (new Date(i.effectiveAt).valueOf() < nowTicks)) &&\n (!i.expiresAt || (new Date(i.expiresAt).valueOf() > nowTicks))\n )?.subject;\n const patientInTierSubjectObj= patientInTierSubject &&\n environment.patientIdentityProvider.parseSubject(patientInTierSubject);\n return <{tierId:string, chPatId:string}>patientInTierSubjectObj;\n }\n\n refreshFromCareAndTrackPatient(carePatient:wpapi.model.CaravanPatient, trackPatient?:ITrackApiPatient) {\n this.id = trackPatient?.chPatId;\n this.carePatient = carePatient;\n this.trackPatient = trackPatient;\n if (carePatient) {\n this.carePatient = carePatient;\n const patientInTierSubjectObj = Patient.getChPatIdAndTierIdFromCarePatient(carePatient);\n carePatient.tierId = patientInTierSubjectObj?.tierId;\n if (trackPatient && this.id != patientInTierSubjectObj?.chPatId) {\n console.error(`Something is wrong! track patient with chPatId ${trackPatient.chPatId} does not match care patient with chPatId ${patientInTierSubjectObj?.chPatId}`);\n // REVIEW - misleading data could be shown. Should we alert the user?\n }\n }\n\n // 20201129 - taking the opportunity to make the type checking stricter\n // Generically copy the other stuff over for now.\n // Object.assign(result, trackPatient);\n // Object.assign(result, carePatient);\n\n if (carePatient) {\n if (carePatient.firstName) this.firstName = carePatient.firstName;\n if (carePatient.lastName) this.lastName = carePatient.lastName;\n this.professionalId = carePatient.professionalId;\n // These values are primary from trackPatient\n this.dob == this.dob || carePatient.gender;\n this.dob == this.dob || carePatient.dob;\n\n // These values can be overridden\n this.email = carePatient.email || this.email;\n this.phoneNumber = Patient.formatPhoneNumber(carePatient.phoneNumber) || this.phoneNumber;\n this.nickName = carePatient.nickName?.trim();\n this.snfInfo = carePatient.snfInfo;\n }\n\n // CC-3159 - track values override care values\n if (trackPatient) {\n this.dob = trackPatient.dob ? moment(trackPatient.dob, \"MM/DD/YYYY\").format(\"YYYY-MM-DD\") : null;\n this.dod = trackPatient.dod ? moment(trackPatient.dod, \"MM/DD/YYYY\").format(\"YYYY-MM-DD\") : null;\n this.firstName = trackPatient.firstName;\n this.lastName = trackPatient.lastName;\n this.gender = trackPatient.gender?.toLowerCase();\n this.email = trackPatient.email;\n this.phoneNumber = Patient.formatPhoneNumber(trackPatient.phone1 || trackPatient.phone2);\n this.attributedCP = trackPatient.attributedCP;\n this.tier4_Name = trackPatient.tier4_Name;\n this.tier5_Name = trackPatient.tier5_Name;\n this.tier3_ID = trackPatient.tier3_ID;\n this.tier2_ID = trackPatient.tier2_ID;\n }\n\n this.carePatient = carePatient;\n this.trackPatient = trackPatient;\n return this;\n }\n refreshFromCareAndTrackAwvPatient(carePatient: wpapi.model.CaravanPatient, trackAwvPatient?: ITrackApiAwvPatient) {\n this.id = trackAwvPatient?.chPatID?.toString();\n this.carePatient = carePatient;\n this.trackAwvPatient = trackAwvPatient;\n if (carePatient) {\n this.carePatient = carePatient;\n const patientInTierSubjectObj = Patient.getChPatIdAndTierIdFromCarePatient(carePatient);\n carePatient.tierId = patientInTierSubjectObj?.tierId;\n if (trackAwvPatient && this.id != patientInTierSubjectObj?.chPatId) {\n console.error(`Something is wrong! track patient with chPatId ${trackAwvPatient.chPatId} does not match care patient with chPatId ${patientInTierSubjectObj?.chPatId}`);\n }\n }\n\n if (carePatient) {\n if (carePatient.firstName) this.firstName = carePatient.firstName;\n if (carePatient.lastName) this.lastName = carePatient.lastName;\n this.professionalId = carePatient.professionalId;\n // These values are primary from trackAwvPatient\n this.dob == this.dob || carePatient.gender;\n this.dob == this.dob || carePatient.dob;\n\n // These values can be overridden\n this.email = carePatient.email || this.email;\n this.phoneNumber = Patient.formatPhoneNumber(carePatient.phoneNumber) || this.phoneNumber;\n this.nickName = carePatient.nickName?.trim();\n this.snfInfo = carePatient.snfInfo;\n }\n\n if (trackAwvPatient) {\n let lastFirst = trackAwvPatient.patientName.split(',').map(x => x.trim());\n this.dob = moment(trackAwvPatient.dob).format(\"YYYY-MM-DD\");\n this.firstName = lastFirst?.[1];\n this.lastName = lastFirst?.[0];\n this.gender = trackAwvPatient.gender?.toLowerCase();\n this.email = trackAwvPatient.email;\n this.phoneNumber = Patient.formatPhoneNumber(trackAwvPatient.phone1);\n this.attributedCP = trackAwvPatient.attributedCP;\n this.tier4_Name = trackAwvPatient.tier4_Name;\n this.tier5_Name = trackAwvPatient.tier5_Name;\n this.tier3_ID = trackAwvPatient.tier3_ID;\n this.tier2_ID = trackAwvPatient.tier2_ID;\n this.statusDate = trackAwvPatient.statusDate;\n }\n\n this.carePatient = carePatient;\n return this;\n }\n displayPreferredName(): string {\n return this.nickName || this.firstName;\n }\n\n isInvited():boolean {\n return this.carePatient && \"patient\" === this.carePatient.accountType;\n }\n displayInitials(): string {\n return `${this.lastName?.[0]} ${this.firstName?.[0]}`\n }\n // Full name for display\n displayName(): string {\n return `${this.lastName}, ${this.firstName} ${this.nickName?.trim().length > 0 ? `\"(${this.nickName.trim()})\"`: ''}`\n }\n\n displayAge(): string {\n return !this.dob || this.dob === 'Unknown' ? '' : `${differenceInYears(this.dod ? new Date(this.dod) : new Date(), new Date(this.dob))}yo`;\n }\n\n displayDob(): string {\n return !this.dob || this.dob === 'Unknown' ? '' : `DOB: ${moment(this.dob).format(\"L\")}`;\n }\n displayDod(): string {\n return !this.dod || this.dod === 'Unknown' ? '' : `Deceased: ${moment(this.dod).format(\"L\")}`;\n }\n\n displayEmail(): string {\n return isUndefined(this.email) ? '' : `${this.email}>`;\n }\n\n displayPhone(): string {\n return this.phoneNumber;\n }\n\n avatarUrl(): string | null {\n return this.photo || get(this, 'avatar.url', null);\n }\n\n identifier(): { name: string; id: string; } {\n switch(true) {\n case has(this, 'mbi'):\n return { name: 'MBI', id: this.mbi };\n case has(this, 'mrn'):\n return { name: 'MRN', id: this.mrn };\n }\n }\n\n displayIdentifier(): string {\n const id = this.identifier();\n return isUndefined(id) ? '' : `${this.identifier().name}: ${this.identifier().id}`;\n }\n displayGender(): string {\n return this.gender ? this.gender.charAt(0).toUpperCase() : 'Unknown'\n }\n static formatPhoneNumber = (phoneNumber: string): string => {\n /**\n * @param str as a phone number in any format\n * @return converted phone number into (XXX) XXX-XXXX format\n */\n phoneNumber = ('' + phoneNumber).replace(/\\D/g, ''); // clears all non-digit chars\n let match = phoneNumber.match(/^(\\d{3})(\\d{3})(\\d{4})$/); // checks if number is valid\n if (match) {\n return `(${match[1]}) ${match[2]}-${match[3]}`;\n }\n return '';\n };\n static displayGender = (gender: string): string => {\n return gender ? gender.charAt(0).toUpperCase() + gender.slice(1) : 'Unknown'\n };\n\n getThisYearPercentageBar(): number {\n return (this.trackPatient?.raF_YTD || 0) / ((this.trackPatient?.raF_YTD || 0) + (this.trackPatient?.openRAFWt || 0)) * 100\n }\n getLastYearPercentageBar(): number {\n return (this.trackPatient?.pyRaf || 0) / ((this.trackPatient?.raF_YTD || 0) + (this.trackPatient?.openRAFWt || 0)) * 100\n }\n}\n\nexport type PatientSnfStatus = 'Admitted' | 'Discharged' | 'Discharged after 30 days' | 'Removed';\nexport type DownloadStatus = 'New' | 'Partial' | 'Done';\nenum YesNoEnum {\n Yes = 1,\n No = 0\n}\n\n// Used for visual presentation\nenum AWVWorklistDisplayStatusEnum {\n ALL_PATIENTS = 'ALL PATIENTS',\n READY_TO_SCHEDULE = 'READY TO SCHEDULE',\n CALL_BACK_LATER = 'CALL BACK LATER',\n READY_TO_REMIND = 'READY TO REMIND',\n SCHEDULED = 'SCHEDULED',\n READY_TO_SELF_REPORT = 'READY TO SELF-REPORT',\n COMPLETED = 'COMPLETED',\n INELIGIBLE = 'INELIGIBLE',\n PATIENT_DECLINED = 'PATIENT DECLINED',\n DEFERRED_TO_SIGNIFY = 'OTHER',\n UNKNOWN = 'UNKNOWN',\n}\nexport class PatientViewModel {\n\n // =========================== fields/columns/types ==========================\n\n select?: boolean;\n fullName?: string;\n src?: string;\n chPatId?: string;\n\n bloodSugar?: number;\n weight?: number;\n gain?: string;\n alertsCounter?: number;\n\n email?: string;\n phoneNumber?: string;\n dob?: Date; // DOB, age, gender\n dod?: Date; // date of death\n dodBoolean?: string;\n professionalName?: string;\n assignment?: string;\n gender?: string;\n patientId?: string | number;\n lastActivityAt?: string;\n lastName?: string;\n firstName?: string;\n\n // Track\n attributedCP?: string;\n currentRiskLevel?: string;\n predictedRiskLevel?: string;\n probability?: string;\n riskTrend?: string;\n raF_YTD?: string;\n openRAFWt?: number;\n totalCost?: string;\n attributedCPTier?: number;\n attributedPractice?: string;\n enrollmentType?: string;\n ssDenom?: number;\n ssPercent?: number;\n alignToClinical?: string;\n cohortProcedureLastDate: string;\n cohortSpecialistLastProviderName: string;\n cohortSpecialistLastDate: string;\n hfCohortProcedureLastDate: string;\n hfCohortSpecialistLastProviderName: string;\n hfCohortSpecialistLastDate: string;\n totalGapWt: number;\n chronicConditionList: string;\n cohortDxCount?: number;\n\n // AWV\n raf?: number;\n pyRaf?: string;\n awvTypeDue?: string;\n lastAWVDate?: string;\n lastClaimAWVDate?: string;\n lastAWVProvider?: string;\n lastClaimAWVProvider?: string;\n awvStatusDisplay?: string;\n hasNotes?: boolean;\n supplementalId?: string;\n lastEHRAWVIPPEDate?: string;\n newStatusDate?: string;\n ehrLastAwvCommunity?: string;\n ehrLastAwvProvider?:string;\n ehrReportedLastAwvSource?:string;\n ehrReportedLastAwvDate?: string;\n //Cohort\n totalSpend?: string;\n // TODO - these duplicate some others and should be reconciled at some point\n current_MBI?: string;\n phone?: string;\n phone1?: string;\n phone2?: string;\n careId?: string;\n lastLogin?: string;\n spirometryProcedure_LastDate?: string;\n pulmonologistProcedure_LastProviderName?: string;\n pulmonologistProcedure_LastDate?: string;\n copdDxCount?: number;\n echoProcedure_LastDate?: string;\n cardiologistProcedure_LastProviderName?: string;\n cardiologistProcedure_LastDate?: string;\n hfDxCount?: number;\n officeVisits?: number;\n inpatientVisits?: number;\n isMostImpactable?: string;\n lastCCMDateAndCode?: string;\n ccmLastProcCode?: string;\n\n //ED\n patientName?: string;\n // age?: string; This is now calculated\n mbi?: string;\n provider?: string;\n lastVisit?: Date;\n edVisits?: string;\n hccGapCount?: number;\n\n // Alert filters\n bp?: string;\n pulse?: number;\n systolic?: number;\n diastolic?: number;\n\n ccmEligible?: string;\n diseaseCohortIds?: number[];\n diseaseCohorts?: string[];\n\n // CC-3471: pac navigator / snf info\n snfAdmittedAt?: string;\n snfDischargedAt?: string;\n snfName?: string;\n snfHistory?: PatientSnfInfo[];\n //snfStatus?: PatientSnfStatus;\n\n //IHE\n /** Date of the visit. Practially not possible within the time frame visible in the view but a patient could have multiple visits */\n IHEAWVVisitDate?: string;\n ihAwvPatient?: string;\n /** REVIEW Not sure whether we need an actual field for this */\n IHEfileActions?: string;\n /** Status of the VISIT */\n IHEStatus?: string;\n IHEStatusLastUpdated?: Date;\n // File info - all are calculated from file download and update history\n IHEAssessmentFilesLastUpdated?: Date;\n IHEAssessmentFilesLastDownloaded?: Date;\n IHECMRFileLastUpdated?: Date;\n IHECMRFileLastDownloaded?: Date;\n notOnlyCMRFile?: boolean;\n awvStatusId?: number;\n //IHELastDownloadDateofAnyFile : Date;\n IHEDownloadDate?: Date;\n renderingProviderName?: string;\n //IHEDownloadStatus?: \"New\" | \"Partial\" | \"Done\";\n IHEAWVBatchDate?: Date;\n cptCode?: string;\n iheDxCount?: string;\n claimFrequencyCode?: string;\n\n snfFlagsList?: PatientSnfStatusItem[];\n address?: string;\n scheduleStatus?: string;\n schedulingDescription?: string;\n callDate?: string // last outreach date\n dateOfService?: string // appointment date\n renderingProvider?: string;\n lastCCMDate?: string;\n lastCcmDate?: string;\n alert?: string;\n status?: string;\n enrollmentDate?: string;\n smsProgram?: string;\n lastResponseDate?: string;\n lastResponse?: string;\n statusDate?: string;\n lastCsthDate?: Date;\n withoutFacesheet?: boolean;\n\n trackPatient?: ITrackApiPatient;\n carePatient?: IWPAPIPatient;\n trackAwvPatient?: ITrackApiAwvPatient;\n trackCohortPatient?: ITrackCohortPatient;\n trackCareManagementPatient?: ITrackCareManagementPatient;\n trackIHEPatient?: ITrackApiIHEFilesListVisitInfo;\n\n actions?: {\n alertsCount?: number;\n tier?: IHierarchyTier;\n id: string;\n totalActionCounts?: number;\n };\n tierId?: string;\n tierNum?: number;\n allAWVPatientsListStatus?: AwvWorkflowStatusForPatientListDisplay;\n isUsingSnf3DayWaiver?: boolean;\n constructor() { }\n\n // ============================ get functions ============================\n get snfStatus(): PatientSnfStatus {\n const thirtyDaysAgoDate = moment().subtract(30, 'days').startOf('day');\n let status: PatientSnfStatus;\n\n if (this.snfName && this.snfAdmittedAt && !this.snfDischargedAt && !(moment(this.snfDischargedAt).isBefore(thirtyDaysAgoDate))) {\n status = 'Admitted';\n }\n else if (this.snfName && this.snfAdmittedAt && this.snfDischargedAt && (moment(this.snfDischargedAt).isBefore(thirtyDaysAgoDate))) {\n status = 'Discharged after 30 days';\n }\n else if (this.snfName && this.snfAdmittedAt && this.snfDischargedAt && (moment(this.snfDischargedAt).isSameOrAfter(thirtyDaysAgoDate))) {\n status = 'Discharged';\n }\n else if (!this.snfName && !this.snfAdmittedAt && this.snfHistory) {\n status = 'Removed';\n }\n return status;\n }\n\n get IHEDownloadStatus(): DownloadStatus {\n let status: DownloadStatus;\n if (this.IHEAssessmentFilesLastUpdated && this.IHECMRFileLastUpdated &&\n this.IHEAssessmentFilesLastDownloaded && this.IHECMRFileLastDownloaded) {\n status = 'Done';\n } else if (this.notOnlyCMRFile && this.IHECMRFileLastUpdated && this.IHECMRFileLastDownloaded && moment(this.IHECMRFileLastUpdated).isBefore(this.IHECMRFileLastDownloaded)) {\n status = 'Done';\n } else if (!this.IHEAssessmentFilesLastUpdated && !this.IHEAssessmentFilesLastDownloaded && this.IHECMRFileLastUpdated && this.IHECMRFileLastDownloaded && moment(this.IHECMRFileLastUpdated).isBefore(this.IHECMRFileLastDownloaded)) {\n status = 'Partial';\n } else if (this.IHEAssessmentFilesLastUpdated && this.IHEAssessmentFilesLastDownloaded && !this.IHECMRFileLastUpdated && !this.IHECMRFileLastDownloaded && moment(this.IHEAssessmentFilesLastUpdated).isBefore(this.IHEAssessmentFilesLastDownloaded)) {\n status = 'Done';\n } else if (this.IHEDownloadDate) {\n status = 'Partial';\n } else {\n status = 'New';\n }\n return status;\n }\n\n /** Return age in years */\n get age(): number {\n let dob = moment(this.dob);\n if (!dob.isValid()) {\n return null;\n }\n\n let years = moment(this.dod ? this.dod : void 0).diff(dob, 'years');\n return years;\n }\n\n get dob_age() {\n return {\n dob: this.dob,\n age: this.age,\n toString: function () {\n let date = new Date(this.dob);\n if (isNaN(date.getTime())) return 'unknown';\n var year = date.getFullYear();\n\n var month = (1 + date.getMonth())?.toString();\n month = month.length > 1 ? month : '0' + month;\n\n var day = date.getDate()?.toString();\n day = day.length > 1 ? day : '0' + day;\n\n return month + '/' + day + '/' + year;\n },\n };\n }\n\n // =========================== model converters ==========================\n\n static fromTrackAndCare(\n tp: ITrackApiPatient,\n cp: IWPAPIPatient,\n tier: IHierarchyTier,\n assignment?: string,\n currentRiskLevel?: string,\n predictedRiskLevel?: string,\n probability?: number,\n riskTrend?: string\n ): PatientViewModel {\n let res: PatientViewModel = new PatientViewModel();\n if (cp) {\n res.chPatId = Patient.getChPatIdAndTierIdFromCarePatient(cp)?.chPatId;\n res.fullName = `${cp.lastName}, ${cp.firstName}`;\n res.lastName = cp.lastName;\n res.firstName = cp.firstName;\n res.dob = cp.dob ? new Date(cp.dob) : null;\n res.gender = Patient.displayGender(cp.gender);\n res.bp = `${cp.systolic || '-'}/${cp.diastolic || '-'}`;\n res.phoneNumber = Patient.formatPhoneNumber(cp.phoneNumber);\n res.professionalName = cp.professionalName;\n res.lastActivityAt = cp.lastActivityAt;\n res.carePatient = cp;\n res.pulse = cp.pulse;\n res.bloodSugar = cp.bloodSugar || '-';\n res.patientId = cp._id;\n res.actions = {\n tier: tier,\n alertsCount: cp['alerts']?.length,\n id: Patient.getChPatIdAndTierIdFromCarePatient(cp)?.chPatId,\n totalActionCounts: cp['alerts']?.length,\n };\n res.alertsCounter = cp['alerts']?.length;\n (res.weight = cp.weight), (res.gain = cp.gain);\n res.mbi = cp.mbi;\n (res.assignment = assignment ? assignment : tp?.assignment),\n (res.currentRiskLevel = currentRiskLevel\n ? currentRiskLevel\n : tp?.currentRiskLevel);\n res.predictedRiskLevel = predictedRiskLevel\n ? predictedRiskLevel\n : tp?.predictedRiskLevel;\n res.probability = probability\n ? probability?.toString()\n : tp?.probability?.toFixed(2);\n res.riskTrend = riskTrend ? riskTrend : tp?.riskTrend;\n res.snfAdmittedAt = cp.snfInfo?.current?.snfAdmittedAt;\n res.snfDischargedAt = cp.snfInfo?.current?.snfDischargedAt;\n res.snfName = cp.snfInfo?.current?.snfName;\n res.snfHistory = cp.snfInfo?.history;\n res.snfFlagsList = cp.snfInfo?.current?.snfStatus;\n res.isUsingSnf3DayWaiver = cp.snfInfo?.current?.isUsingSnf3DayWaiver;\n }\n // CC-3159 track values override care values\n if (tp) {\n res.chPatId = tp.chPatId?.toString();\n res.fullName = `${tp.lastName}, ${tp.firstName}`;\n res.lastName = tp.lastName;\n res.firstName = tp.firstName;\n res.gender = Patient.displayGender(tp.gender);\n res.dob = tp.dob ? new Date(tp.dob) : null;\n res.dod = tp.dod ? new Date(tp.dod) : null;\n res.dodBoolean = tp.dod ? 'Yes' : 'No';\n res.phoneNumber = Patient.formatPhoneNumber(tp.phone1);\n res.patientId = tp.chPatId;\n res.tierId = tier.selectedTierId;\n res.trackPatient = tp;\n res.withoutFacesheet = tp?.hasFacesheet == 0;\n res.actions = { ...{ tier: tier, id: tp.chPatId?.toString(), withoutFacesheet: res.withoutFacesheet}, ...(res.actions || {}) };\n res.mbi = tp.mbi;\n res.email = tp.email;\n res.assignment = tp?.assignment;\n res.attributedCP = tp?.attributedCP;\n res.currentRiskLevel = tp?.currentRiskLevel;\n res.predictedRiskLevel = tp?.predictedRiskLevel;\n res.probability = tp?.probability?.toFixed(2);\n res.riskTrend = tp?.riskTrend;\n res.ccmEligible = tp?.ccmEligible ? 'Eligible' : null;\n res.diseaseCohorts = tp?.diseaseCohorts;\n res.awvTypeDue = tp?.awvTypeDue;\n res.lastAWVDate = changeDateToYYYYMMDDorEmptyString(tp?.lastAWVDate);\n res.lastClaimAWVDate = res.lastAWVDate;\n res.lastAWVProvider = tp?.lastAwvProvider;\n res.lastClaimAWVProvider = tp?.lastAwvProvider;\n res.awvStatusId = tp.awvStatusId;\n res.ihAwvPatient = tp.ihAwvPatient ? 'Enrolled' : 'Not Enrolled';\n res.edVisits = tp?.edVisits?.toString();\n res.hccGapCount = tp?.hccGapCount;\n res.raF_YTD = `${tp.raF_YTD?.toFixed(3) || ''}`;\n res.openRAFWt = tp.openRAFWt;\n res.totalCost = tp.totalCost ? `${tp.totalCost.toFixed(2)}` : null;\n res.attributedCPTier = tp.attributedCPTier;\n res.lastVisit = tp.lastVisit;\n res.attributedPractice = tp.tier4_Name;\n res.enrollmentType = tp.enrollmentType?.toLowerCase() == \"cannot be determined\" ? \"Opted Out of Claims Sharing\" : tp.enrollmentType;\n res.officeVisits = tp.officeVisits;\n res.inpatientVisits = tp.inpatientVisits;\n res.ccmLastProcCode = tp.ccmLastProcCode;\n res.lastCcmDate = changeDateToYYYYMMDDorEmptyString(tp?.lastCCMDate);\n res.lastCCMDate = res.lastCcmDate;\n res.lastCCMDateAndCode = tp.lastCCMDate || tp.ccmLastProcCode ? `${tp.lastCCMDate ? moment(tp.lastCCMDate).format(\"MM/DD/YYYY\") : ''} ${tp.lastCCMDate && tp.ccmLastProcCode ? \"-\" : \"\"} ${tp.ccmLastProcCode || ''}` : null;\n res.pyRaf = `${tp.pyRaf?.toFixed(3) || ''}`;\n res.lastCsthDate = tp?.lastCsthDate;\n }\n return res;\n }\n static fromCareManagementPatient(\n cmp: ITrackCareManagementPatient,\n tier: IHierarchyTier\n ): PatientViewModel {\n let res: PatientViewModel = new PatientViewModel();\n res.lastName = cmp.lastName;\n res.firstName = cmp.firstName;\n res.chPatId = cmp.chPatId?.toString();\n res.fullName = `${cmp.lastName}, ${cmp.firstName}`;\n res.dob = cmp.dateOfBirth ? new Date(cmp.dateOfBirth) : null;\n res.gender = `${(cmp.genderStr && cmp.genderStr[0].toUpperCase()) || '?'}`;\n res.mbi = cmp.currentMbi;\n res.attributedCPTier = cmp.attributedCpTier;\n res.currentRiskLevel = cmp.currentRiskLevel;\n res.predictedRiskLevel = cmp.predictedRiskLevel;\n res.attributedCP = `${cmp.attributedCp}`;\n res.ccmEligible = cmp?.ccmEligible ? 'Eligible' : null;\n res.raF_YTD = `${cmp.ytdRaf?.toFixed(3) || ''}`;\n res.totalSpend = `${cmp.totalSpend?.toFixed(2)}`;\n // res.actions = {\n // alertsCount: additionalParams?.alertsCount,\n // tier: tier,\n // unreadMessagesCount: additionalParams?.unreadMessagesCount,\n // id: cp.chPatID?.toString(),\n // };\n res.careId = null;\n res.lastLogin = null;\n res.lastActivityAt = null;\n res.hccGapCount = cmp.hccGapCount;\n res.diseaseCohorts = cmp?.diseaseCohorts;\n res.lastVisit = cmp.lastProvVisitDate ? moment(cmp.lastProvVisitDate)?.toDate() : null;\n res.openRAFWt = cmp.totalGapWt;\n res.awvTypeDue = cmp.awvTypeDue;\n res.lastAWVDate = changeDateToYYYYMMDDorEmptyString(cmp.lastAwvDate);\n res.edVisits = cmp.edVisits?.toString();\n res.pyRaf = `${cmp.pyRaf?.toFixed(3) || ''}`;\n res.copdDxCount = cmp.cohortDxCount;\n res.hfDxCount = cmp.cohortDxCount;\n res.ccmLastProcCode = cmp.ccmLastProcCode || cmp.lastCcmCode; //Source of the data is still in lastCcmCode.\n res.lastCcmDate = changeDateToYYYYMMDDorEmptyString(cmp.lastCcmDate);\n res.lastCCMDateAndCode = cmp.lastCcmDate || cmp.lastCcmCode ? `${cmp.lastCcmDate ? moment(cmp.lastCcmDate).format(\"MM/DD/YYYY\") : ''} ${cmp.lastCcmDate && cmp.lastCcmCode ? \"-\" : \"\"} ${cmp.lastCcmCode || ''}` : null;\n res.officeVisits = cmp.officeVisits;\n res.inpatientVisits = cmp.inpatientVisits;\n res.ssDenom = cmp.ssDenom;\n res.enrollmentType = cmp.enrollmentStatus;\n res.cohortProcedureLastDate = changeDateToYYYYMMDDorEmptyString(cmp.cohortProcedureLastDate);\n res.cohortSpecialistLastProviderName = cmp.cohortSpecialistLastProviderName;\n res.cohortSpecialistLastDate = changeDateToYYYYMMDDorEmptyString(cmp.cohortSpecialistLastDate);\n res.hfCohortProcedureLastDate = changeDateToYYYYMMDDorEmptyString(cmp.cohortProcedureLastDate);\n res.hfCohortSpecialistLastProviderName = cmp.cohortSpecialistLastProviderName;\n res.hfCohortSpecialistLastDate = changeDateToYYYYMMDDorEmptyString(cmp.cohortSpecialistLastDate);\n res.assignment = cmp.assignment;\n res.totalGapWt = cmp.totalGapWt;\n res.chronicConditionList = cmp?.chronicConditionList;\n res.alignToClinical = cmp.alignToClinical;\n res.attributedPractice = cmp.tier4Name;\n res.ssPercent = (cmp.ssPercent || 1) * 100;\n res.isMostImpactable = YesNoEnum[cmp.alignToClinical];\n return res;\n }\n static fromCohortPatient(\n cp: ITrackCohortPatient,\n tier: IHierarchyTier,\n additionalParams: {\n lastLogin: string;\n lastActivityAt: string;\n alertsCount: number;\n careId: string;\n }\n ): PatientViewModel {\n let res: PatientViewModel = new PatientViewModel();\n res.lastName = cp.lastName;\n res.firstName = cp.firstName;\n res.email = cp.email;\n res.chPatId = cp.chPatID?.toString();\n res.fullName = `${cp.lastName}, ${cp.firstName}`;\n res.dob = cp.dob ? new Date(cp.dob) : null;\n res.gender = `${(cp.genderStr && cp.genderStr[0].toUpperCase()) || '?'}`;\n res.current_MBI = `${cp.current_MBI}`;\n res.assignment = cp.assignment;\n res.currentRiskLevel = cp.currentRiskLevel;\n res.predictedRiskLevel = cp.predictedRiskLevel;\n res.probability = cp.probability?.toFixed(2);\n res.riskTrend = cp.riskTrend;\n res.attributedCP = `${cp.attributedCP}`;\n res.phone = Patient.formatPhoneNumber(cp.phone1);\n res.ccmEligible = cp?.ccmEligible ? 'Eligible' : null;\n res.phone1 = cp.phone1 && cp.phone1_Type ? `${Patient.formatPhoneNumber(cp.phone1)}` : '';\n res.phone2 = cp.phone2 && cp.phone2_Type ? `${Patient.formatPhoneNumber(cp.phone1)}` : '';\n res.raF_YTD = `${cp.raF_YTD?.toFixed(3) || ''}`;\n res.totalSpend = `${cp.totalSpend?.toFixed(2)}`;\n res.actions = {\n alertsCount: additionalParams?.alertsCount,\n tier: tier,\n id: cp.chPatID?.toString(),\n totalActionCounts: additionalParams?.alertsCount,\n };\n res.careId = additionalParams?.careId;\n res.lastLogin = additionalParams?.lastLogin;\n res.lastActivityAt = additionalParams?.lastActivityAt;\n res.hccGapCount = cp.hccGapCount;\n res.diseaseCohorts = cp?.diseaseCohorts;\n res.lastVisit = cp.lastVisit;\n res.openRAFWt = cp.openRAFWt;\n res.attributedPractice = cp.tier4_Name;\n res.awvTypeDue = cp.awvTypeDue;\n res.lastAWVDate = changeDateToYYYYMMDDorEmptyString(cp.lastAWVDate);\n res.edVisits = cp.edVisits?.toString();\n res.pyRaf = `${cp.pyRaf?.toFixed(3) || ''}`;\n res.spirometryProcedure_LastDate = cp.cohortProcedure_LastDate;\n res.pulmonologistProcedure_LastProviderName = cp.cohortSpecialist_LastProviderName;\n res.pulmonologistProcedure_LastDate = cp.cohortSpecialist_LastDate;\n res.copdDxCount = cp.cohortDxCount;\n res.echoProcedure_LastDate = cp.cohortProcedure_LastDate;\n res.cardiologistProcedure_LastProviderName = cp.cohortSpecialist_LastProviderName;\n res.cardiologistProcedure_LastDate = cp.cohortSpecialist_LastDate;\n res.hfDxCount = cp.cohortDxCount;\n res.ccmLastProcCode = cp.ccmLastProcCode;\n res.lastCcmDate = changeDateToYYYYMMDDorEmptyString(cp.lastCcmDate);\n res.lastCCMDateAndCode = cp.lastCcmDate || cp.ccmLastProcCode ? `${cp.lastCcmDate ? moment(cp.lastCcmDate).format(\"MM/DD/YYYY\") : ''} ${cp.lastCcmDate && cp.ccmLastProcCode ? \"-\" : \"\"} ${cp.ccmLastProcCode || ''}` : null;\n res.isMostImpactable = YesNoEnum[cp.alignToClinical];\n res.officeVisits = cp.officeVisits;\n res.inpatientVisits = cp.inpatientVisits;\n return res;\n }\n\n // REVIEW Strictly speaking we probably shouldn't be using a \"patient view model\" as each\n // row is a visit, not a patient.\n // It probably means we should look at this whole area as a candidate for refactoring\n // how we share functionality (e.g. export to csv etc.) between the different grid views\n static fromIheVisit(\n visit: ITrackApiIHEFilesListVisitInfo\n ): PatientViewModel {\n let res: PatientViewModel = new PatientViewModel();\n res.lastName = visit?.patientInfo?.lastName;\n res.firstName = visit?.patientInfo?.firstName;\n res.chPatId = visit?.patientInfo?.chPatId?.toString();\n res.fullName = `${visit?.patientInfo?.lastName}, ${visit?.patientInfo?.firstName}`;\n res.dob = visit?.patientInfo?.dob ? moment(visit?.patientInfo?.dob).toDate() : null;\n res.gender = visit?.patientInfo?.gender;\n res.current_MBI = `${visit?.patientInfo?.mbi}`;\n res.mbi = `${visit?.patientInfo?.mbi}`;\n res.assignment = visit?.patientInfo?.attributionStatus;\n res.attributedCP = visit?.patientInfo?.attributedCp;\n // TODO - need this field\n // res.attributedCP = patient?.patientInfo?.attributedCP;\n res.IHEAWVVisitDate = visit.visitDate ? new Date(visit.visitDate).toLocaleDateString() : null;\n res.trackPatient = visit?.patientInfo;\n res.renderingProviderName = visit?.renderingProviderName;\n if (visit.fileInfo) {\n let fileInfoDatesResult = this.getLatestFileInfoDates(visit.fileInfo);\n this.assignLatestFileInfoDates(res, fileInfoDatesResult);\n\n if (res.trackPatient) {\n res.trackPatient.fileInfo = visit.fileInfo;\n res.trackPatient.visitInfo = visit;\n res.trackPatient.IHEAWVVisitDate = visit.visitDate;\n }\n }\n return res;\n }\n\n static fromIheBilling(\n patient: ITrackApiIHEBillingListVisitInfo\n ): PatientViewModel {\n let res: PatientViewModel = new PatientViewModel();\n res.fullName = patient.fullName;\n res.firstName = patient.firstName;\n res.lastName = patient.lastName;\n res.chPatId = patient.chPatId;\n res.current_MBI = patient.mbi;\n res.mbi = patient.mbi;\n res.dob = moment(patient.mbrDob).toDate();\n res.gender = patient.mbrGender == 'M' ? 'Male' : patient.mbrGender === 'F' ? 'Female' : 'Unknown';\n res.phoneNumber = patient.mbrPhone;\n res.address = PatientViewModel.patientAddressFromIHEAWVPatient(patient);\n res.IHEAWVBatchDate = moment(patient.reportDate).toDate();\n res.cptCode = patient.cptCode;\n res.iheDxCount = patient.dxCount?.toString();\n res.raF_YTD = patient.rafYtd?.toString();\n res.renderingProvider = `${patient?.renderingProviderLastName}, ${patient?.renderingProviderFirstName}`;\n res.attributedPractice = patient.facilityName;\n res.ccmEligible = patient.ccmEligible ? 'Eligible' : null;\n res.hccGapCount = patient.hccGapCount;\n res.predictedRiskLevel = patient.predictedRiskLevel;\n res.diseaseCohortIds = patient.chronicConditions ? patient.chronicConditions.split(',').map((e) => parseInt(e)) : [];\n res.totalCost = patient.totalCost?.toString();\n res.lastVisit = moment(patient.lastProviderVisit).toDate();\n res.edVisits = patient.edVisits?.toString();\n res.openRAFWt = patient.openRafWt;\n res.attributedCP = patient.attributedCp;\n res.IHEAWVVisitDate = patient.dos;\n res.claimFrequencyCode = patient.frequencyType === '1' ? 'New' : patient.frequencyType === '7' ? 'Corrected' : 'Voided';\n res.lastCCMDate = changeDateToYYYYMMDDorEmptyString(patient.lastCcmDate);\n res.lastCcmDate = changeDateToYYYYMMDDorEmptyString(patient.lastCcmDate);\n res.lastAWVDate = changeDateToYYYYMMDDorEmptyString(patient.lastAwvDate);\n return res;\n }\n\n\n static fromEdUtilizationPatient(\n ep: ITrackApiEdUtilizationPatient,\n tier: IHierarchyTier,\n additionalParams: {\n lastLogin: string;\n lastActivityAt: string;\n alertsCount: number;\n careId: string;\n }\n ): PatientViewModel {\n let res = new PatientViewModel();\n res.lastName = ep.patientName.split('; ')[0];\n res.firstName = ep.patientName.split('; ')[1];\n res.email = ep.email || null;\n res.patientName = `${ep.patientName}`;\n res.dob = ep.dob ? new Date(ep.dob) : null;\n res.gender = `${(ep.gender && ep.gender.toUpperCase()) || '?'}`;\n res.mbi = `${ep.mbi}`;\n res.attributedCP = ep.attributedCP;\n res.chPatId = ep.chPatID?.toString();\n res.lastVisit = ep.lastVisit;\n res.pyRaf = `${ep.pyRaf?.toFixed(3) || ''}`;\n res.totalCost = ep?.totalCost?.toString();\n res.assignment = ep.assignment;\n res.currentRiskLevel = ep.currentRiskLevel;\n res.predictedRiskLevel = ep.predictedRiskLevel;\n res.probability = ep.probability?.toFixed(2);\n res.riskTrend = ep.riskTrend;\n res.hccGapCount = ep.hccGapCount;\n res.ccmEligible = ep?.ccmEligible ? 'Eligible' : null;\n res.edVisits = `${ep.edVisits}`;\n res.actions = {\n alertsCount: additionalParams?.alertsCount,\n tier: tier,\n id: ep?.chPatID?.toString(),\n totalActionCounts: additionalParams?.alertsCount\n\n };\n res.careId = additionalParams?.careId;\n res.lastLogin = additionalParams?.lastLogin;\n res.diseaseCohorts = ep?.diseaseCohorts;\n res.lastActivityAt = additionalParams?.lastActivityAt;\n res.raF_YTD = `${ep.raF_YTD?.toFixed(3) || ''}`;\n res.openRAFWt = ep.openRAFWt;\n res.attributedPractice = ep.tier4_Name;\n res.awvTypeDue = ep.awvTypeDue;\n res.phoneNumber = Patient.formatPhoneNumber(ep.phone1);\n res.lastAWVDate = changeDateToYYYYMMDDorEmptyString(ep.lastAWVDate);\n\n return res;\n }\n\n static fromAwvAndCare(\n ap: ITrackApiAwvPatient,\n cp: IWPAPIPatient,\n tier: IHierarchyTier,\n additionalParams: {\n lastLogin: string;\n lastActivityAt: string;\n alertsCount: number;\n careId: string;\n }\n ): PatientViewModel {\n let res = new PatientViewModel();\n // CC-3159 track data now overrides care data\n if (cp) {\n Object.assign(res, {\n fullName: `${cp.lastName}, ${cp.firstName}`,\n lastName: cp.lastName,\n firstName: cp.firstName,\n dob: cp.dob ? new Date(cp.dob) : ap.dob,\n gender: (cp.gender && cp.gender.toUpperCase()) || '?',\n bp: `${cp.systolic || '-'}/${cp.diastolic || '-'}`,\n phoneNumber: Patient.formatPhoneNumber(cp.phoneNumber),\n professionalName: cp.professionalName,\n lastActivityAt: cp.lastActivityAt,\n src: 'wp',\n carePatient: cp,\n pulse: cp.pulse,\n bloodSugar: cp.bloodSugar || '-',\n patientId: cp._id,\n careId: additionalParams?.careId,\n });\n }\n if (ap) {\n let lastFirst = ap.patientName.split(',').map(x => x.trim());\n ap.rankedLastAwvDate = ap.rankedLastAwvDate ? moment(ap.rankedLastAwvDate).format(\"yyyy-MM-DD\") : null;\n res.chPatId = `${ap.chPatID}`;\n res.supplementalId = `${ap.supplementalID}`;\n res.fullName = `${ap.patientName}`;\n res.lastName = lastFirst[0];\n res.firstName = lastFirst.length > 1 ? lastFirst[1] : null;\n res.dob = ap.dob ? new Date(ap.dob) : null;\n res.gender = (ap.gender && ap.gender[0].toUpperCase()) || '?';\n // patientId = ap.mbi; CC-2670 = Not sure why MBI used as PatientId ?\n res.pyRaf = `${ap.pyRaf?.toFixed(3) || ''}`;\n res.attributedCP = ap.attributedCP;\n res.awvTypeDue = ap.awvTypeDue;\n res.lastAWVDate = ap.lastAWVDate;\n res.lastClaimAWVDate = changeDateToYYYYMMDDorEmptyString(ap.lastAWVDate);\n res.awvStatusDisplay = ap.awvStatusDisplay;\n res.hasNotes = ap.hasNotes;\n res.trackAwvPatient = ap;\n res.actions = {\n alertsCount: additionalParams?.alertsCount,\n tier: tier,\n id: ap?.chPatID?.toString(),\n totalActionCounts: additionalParams?.alertsCount\n };\n res.email = ap.email;\n res.careId = additionalParams?.careId;\n res.lastLogin = additionalParams?.lastLogin;\n res.lastActivityAt = additionalParams?.lastActivityAt;\n res.mbi = ap.mbi;\n res.assignment = ap.assignment;\n res.currentRiskLevel = ap.currentRiskLevel;\n res.predictedRiskLevel = ap.predictedRiskLevel;\n res.probability = ap.probability?.toFixed(2);\n res.riskTrend = ap.riskTrend;\n res.hccGapCount = ap.hccGapCount;\n res.ccmEligible = ap?.ccmEligible ? 'Eligible' : null;\n res.diseaseCohorts = ap?.diseaseCohorts;\n res.raF_YTD = `${ap.raF_YTD?.toFixed(3) || ''}`;\n res.lastVisit = ap?.lastVisit;\n res.openRAFWt = ap.openRAFWt;\n res.attributedPractice = ap.tier4_Name;\n res.enrollmentType = ap.enrollmentType?.toLowerCase() == \"cannot be determined\" ? \"Opted Out of Claims Sharing\" : ap.enrollmentType;\n res.edVisits = ap.edVisits;\n res.inpatientVisits = ap.inpatientVisits;\n res.officeVisits = ap.officeVisits;\n res.ccmLastProcCode = ap.ccmLastProcCode;\n res.lastCcmDate = changeDateToYYYYMMDDorEmptyString(ap.lastCcmDate);\n res.lastCCMDateAndCode = ap.lastCcmDate || ap.ccmLastProcCode ? `${ap.lastCcmDate ? moment(ap.lastCcmDate).format(\"MM/DD/YYYY\") : ''} ${ap.lastCcmDate && ap.ccmLastProcCode ? \"-\" : \"\"} ${ap.ccmLastProcCode || ''}` : null;\n res.phoneNumber = Patient.formatPhoneNumber(ap.phone1);\n res.totalCost = ap.totalCost ? `${ap.totalCost.toFixed(2)}` : null;\n res.lastAWVProvider = ap.lastAwvProvider;\n res.lastClaimAWVProvider = ap.lastAwvProvider;\n res.awvStatusId = ap.awvStatusId;\n res.ihAwvPatient = ap.ihAwvPatient ? 'Enrolled' : 'Not Enrolled';\n res.lastCsthDate = ap.lastCsthDate;\n res.allAWVPatientsListStatus = calculateWorkflowStatus(ap.coWorkflowStatus, ap.coWorkflowDueDate, ap.coWorkflowScheduledDate, ap.coWorkflowCompletedDate);\n if(ap.awvJson){\n res.ehrLastAwvCommunity = getDataFromObject(ap.awvJson,'community');\n res.lastEHRAWVIPPEDate = checkAndCutOffTimeFromDate(getDataFromObject(ap.awvJson, 'date'));\n res.ehrLastAwvProvider = getDataFromObject(ap.awvJson, 'provider');\n res.newStatusDate = getSelfReportDateFromAwv(ap.awvJson);\n }\n res.ehrReportedLastAwvSource = changeUIFriendlyName(ap.rankedLastAwvDateSource);\n res.ehrReportedLastAwvDate = checkAndCutOffTimeFromDate(ap.rankedLastAwvDate);\n }\n return res;\n }\n\n static fromIHEAWVSchedule(\n patient: IIHEAWVPatient\n ): PatientViewModel {\n let res: PatientViewModel = new PatientViewModel();\n // CC-3159 track values override care values\n if (patient) {\n res.chPatId = patient.chPatId?.toString();\n res.fullName = `${patient.lastName}, ${patient.firstName}`;\n res.lastName = patient.lastName;\n res.firstName = patient.firstName;\n res.gender = Patient.displayGender(patient.mbrGender);\n res.mbi = patient.mbi;\n res.dob = patient.dob ? new Date(patient.dob) : null;\n res.phoneNumber = patient.mbrTelephone;\n res.address = this.patientAddressFromIHEAWVPatient(patient);\n res.scheduleStatus = patient.outreachSchedulingStatus;\n res.schedulingDescription = patient.outreachSchedulingDesc;\n res.callDate = patient.outreachCallDateTime;\n res.dateOfService = patient.dos;\n res.assignment = patient.assignment;\n res.renderingProvider = patient.evalProviderName;\n res.attributedPractice = patient.tier4Name;\n res.attributedCP = patient.attributedCp;\n res.hccGapCount = patient.hccGapCount;\n res.predictedRiskLevel = patient.predictedRiskLevel;\n res.lastAWVDate = changeDateToYYYYMMDDorEmptyString(patient.lastAwvDate);\n res.lastCCMDate = changeDateToYYYYMMDDorEmptyString(patient.lastCcmDate);\n res.ccmEligible = patient.ccmEligible ? 'Eligible' : null;\n res.lastVisit = patient.lastVisit ? moment(patient.lastVisit).toDate() : null;\n res.diseaseCohorts = patient.diseaseCohorts;\n res.totalCost = patient.totalCost?.toString();\n res.edVisits = patient.edVisits?.toString();\n res.openRAFWt = patient.openRafWt;\n res.raF_YTD = patient.rafYtd?.toString()\n }\n return res;\n }\n\n // =============================== helpers ===============================\n\n static assignLatestFileInfoDates(patient: PatientViewModel, fileInfoDates: {\n mostRecentAssessmentFileUpdatedMoment: moment.Moment,\n lastFullDownloadOfAssessmentFilesMoment: moment.Moment,\n mostRecentCmrFileUpdatedMoment: moment.Moment,\n lastDownloadOfCmrFileMoment: moment.Moment,\n lastDownloadOfAnyFileMoment: moment.Moment\n notOnlyCMRFile: boolean;\n }): IHEDownloadStatusObject {\n let result: IHEDownloadStatusObject = {\n IHEAssessmentFilesLastUpdated: fileInfoDates.mostRecentAssessmentFileUpdatedMoment?.toDate(),\n IHEAssessmentFilesLastDownloaded: fileInfoDates.lastFullDownloadOfAssessmentFilesMoment?.toDate(),\n IHECMRFileLastUpdated: fileInfoDates.mostRecentCmrFileUpdatedMoment?.toDate(),\n IHECMRFileLastDownloaded: fileInfoDates.lastDownloadOfCmrFileMoment?.toDate(),\n IHEDownloadDate: fileInfoDates.lastDownloadOfAnyFileMoment?.toDate(),\n notOnlyCMRFile: fileInfoDates.notOnlyCMRFile\n };\n if (patient) {\n patient.notOnlyCMRFile = fileInfoDates.notOnlyCMRFile;\n patient.IHEAssessmentFilesLastUpdated = fileInfoDates.mostRecentAssessmentFileUpdatedMoment?.toDate();\n patient.IHEAssessmentFilesLastDownloaded = fileInfoDates.lastFullDownloadOfAssessmentFilesMoment?.toDate();\n patient.IHECMRFileLastUpdated = fileInfoDates.mostRecentCmrFileUpdatedMoment?.toDate();\n patient.IHECMRFileLastDownloaded = fileInfoDates.lastDownloadOfCmrFileMoment?.toDate();\n // patient.IHELastDownloadDateofAnyFile = fileInfoDates.lastDownloadOfAnyFileMoment?.toDate();\n if (fileInfoDates.lastDownloadOfAnyFileMoment && !(patient.IHEDownloadDate && moment(patient.IHEDownloadDate).isAfter(fileInfoDates.lastDownloadOfAnyFileMoment))) {\n patient.IHEDownloadDate = fileInfoDates.lastDownloadOfAnyFileMoment.toDate();\n }\n }\n return result;\n }\n static getLatestFileInfoDates(fileInfo: PatientIHEFileInfo[]): {\n mostRecentAssessmentFileUpdatedMoment: moment.Moment,\n lastFullDownloadOfAssessmentFilesMoment: moment.Moment,\n mostRecentCmrFileUpdatedMoment: moment.Moment,\n lastDownloadOfCmrFileMoment: moment.Moment,\n lastDownloadOfAnyFileMoment: moment.Moment,\n notOnlyCMRFile: boolean\n } {\n let mostRecentAssessmentFileUpdatedMoment: moment.Moment = null;\n let lastFullDownloadOfAssessmentFilesMoment: moment.Moment = null;\n let mostRecentCmrFileUpdatedMoment: moment.Moment = null;\n let lastDownloadOfCmrFileMoment: moment.Moment = null;\n let lastDownloadOfAnyFileMoment: moment.Moment = null;\n let notOnlyCMRFile = true;\n let assessmentNotFound: boolean = false;\n fileInfo.forEach(fi => { //changed map to forEach\n let downloadedAtUtc = fi.downloadInfo?.current?.downloadedAtUtc ? moment.utc(fi.downloadInfo?.current?.downloadedAtUtc) : null;\n let updatedAtUtc = fi.availabilityInfo?.current?.statusDateUtc ? moment.utc(fi.availabilityInfo?.current?.statusDateUtc) : null;\n if (downloadedAtUtc && !(lastDownloadOfAnyFileMoment?.isAfter(downloadedAtUtc))) {\n lastDownloadOfAnyFileMoment = downloadedAtUtc;\n }\n if (fi.fileType == \"Casemgmt\") {\n lastDownloadOfCmrFileMoment = downloadedAtUtc;\n mostRecentCmrFileUpdatedMoment = updatedAtUtc;\n } else {\n notOnlyCMRFile = false;\n if (!downloadedAtUtc || assessmentNotFound || (updatedAtUtc && downloadedAtUtc && downloadedAtUtc.isBefore(updatedAtUtc))) { // ned explanation here\n assessmentNotFound = true;\n mostRecentAssessmentFileUpdatedMoment = null;\n lastFullDownloadOfAssessmentFilesMoment = null;\n } else {\n mostRecentAssessmentFileUpdatedMoment = updatedAtUtc;\n lastFullDownloadOfAssessmentFilesMoment = downloadedAtUtc;\n }\n }\n });\n\n return { mostRecentAssessmentFileUpdatedMoment, lastFullDownloadOfAssessmentFilesMoment, mostRecentCmrFileUpdatedMoment, lastDownloadOfCmrFileMoment, lastDownloadOfAnyFileMoment, notOnlyCMRFile };\n };\n static patientAddressFromIHEAWVPatient(patient: IIHEAWVPatient | ITrackApiIHEBillingListVisitInfo): string {\n let addressFields = [patient.mbrAddressLine1, patient.mbrAddressLine2, patient.mbrCity, patient.mbrState, patient.mbrZip];\n let addressString = '';\n addressFields.forEach((field: string, index: number) => {\n if (field && index != addressFields.length - 1) {\n addressString += field + ', ';\n } else if (field) {\n addressString += field;\n }\n });\n return addressString;\n }\n }\nexport enum AwvWorkflowStatusForPatientListDisplay {\n AllPatients = 'ALL_PATIENTS', // Used on front when user selects all patients button\n ReadyToSchedule = 'READY_TO_SCHEDULE',\n CallBackLater = 'CALL_BACK_LATER',\n ReadyToRemind = 'READY_TO_REMIND',\n Scheduled = 'SCHEDULED',\n ReadyToSelfReport = 'READY_TO_SELF_REPORT',\n Completed = 'COMPLETED',\n Ineligible = 'INELIGIBLE',\n PatientDeclined = 'PATIENT_DECLINED',\n Other = 'OTHER',\n Unknown = 'UNKNOWN'\n}\n\nexport enum sourceNametoDisplay{\n CARE_ORCH_SELF_REPORTED = 'Self-Reported',\n PEP_SELF_REPORTED = 'Self-Reported',\n CLINICAL_DATA = 'EHR Feed',\n CMS_CLAIMS_DATA = 'CMS Claims'\n}\n\nexport function calculateWorkflowStatus(\n COWorkflowStatus: COWorkflowStatus,\n COWorkflowDueDate: string,\n COWorkflowScheduledDate: string,\n COWorkflowCompletedDate: string,\n Now?: Date\n ): AwvWorkflowStatusForPatientListDisplay {\n if(!Now) Now = moment().locale('en').toDate();\n if(COWorkflowStatus === 'READY_FOR_OUTREACH')\n return AwvWorkflowStatusForPatientListDisplay.ReadyToSchedule;\n if(COWorkflowStatus === 'OUTREACH_ATTEMPTED' && moment(Now).locale('en').isSameOrAfter(moment(COWorkflowDueDate).locale('en')))\n return AwvWorkflowStatusForPatientListDisplay.ReadyToSchedule;\n if(COWorkflowStatus === 'OUTREACH_ATTEMPTED' && moment(Now).locale('en').isBefore(moment(COWorkflowDueDate).locale('en')))\n return AwvWorkflowStatusForPatientListDisplay.CallBackLater;\n if(COWorkflowStatus === 'SCHEDULED' && moment(Now).locale('en').isSameOrAfter(moment(COWorkflowDueDate).locale('en')) && moment(Now).locale('en').isBefore(moment(COWorkflowScheduledDate).locale('en')))\n return AwvWorkflowStatusForPatientListDisplay.ReadyToRemind;\n if(COWorkflowStatus === 'SCHEDULED' && moment(Now).locale('en').isSameOrBefore(moment(COWorkflowDueDate).locale('en')))\n return AwvWorkflowStatusForPatientListDisplay.Scheduled;\n if(COWorkflowStatus === 'SCHEDULED' && moment(Now).locale('en').isSameOrAfter(moment(COWorkflowScheduledDate).locale('en')))\n return AwvWorkflowStatusForPatientListDisplay.ReadyToSelfReport;\n if(COWorkflowStatus === 'COMPLETED')\n return AwvWorkflowStatusForPatientListDisplay.Completed;\n if(COWorkflowStatus === 'INELIGIBLE')\n return AwvWorkflowStatusForPatientListDisplay.Ineligible;\n if(COWorkflowStatus === 'DECLINED')\n return AwvWorkflowStatusForPatientListDisplay.PatientDeclined;\n if(COWorkflowStatus === 'DEFERRED_TO_SIGNIFY')\n return AwvWorkflowStatusForPatientListDisplay.Other;\n return AwvWorkflowStatusForPatientListDisplay.Unknown;\n}\n\nexport function getDisplayStringForAWVWorklistStatusEnum(status: string): string {\n return AWVWorklistDisplayStatusEnum[status] || status;\n};\n\nfunction getDataFromObject(awvJson: AWVJsonData[], dataType: 'date' | 'provider' | 'community'): string{\n let object;\n if(awvJson[0].Source === 'CLINICAL_DATA'){\n object = awvJson[0];\n }else if(awvJson[1]&& awvJson[1].Source === 'CLINICAL_DATA'){\n object = awvJson[1];\n } else{\n return '';\n }\n switch (dataType) {\n case 'date':\n return object.Date;\n case 'provider':\n return object.Provider;\n case 'community':\n return object.EHRTierName;\n default:\n return '';\n }\n}\nfunction changeDateToYYYYMMDDorEmptyString(input: string): string{\n if(!input) return '';\n\n if(moment(input).isValid()){\n return moment.utc(input).format(\"YYYY-MM-DD\");\n } else {\n return '';\n }\n}\nfunction getSelfReportDateFromAwv(awvJson: AWVJsonData[]): string{\n for (let i = 0; i < awvJson.length; i++) {\n if(awvJson[i].Source == 'SELF_REPORTED') return checkAndCutOffTimeFromDate(awvJson[i].Date);\n }\n return null;\n}\nfunction checkAndCutOffTimeFromDate(input:string):string{\n if(!input) return null;\n\n if(moment(input).isValid()){\n return moment.utc(input).format(\"YYYY-MM-DD\");\n } else {\n // Invalid date format, return the input as is.\n return input;\n }\n}\nfunction changeUIFriendlyName(rankedLastAwvDateSource: string): sourceNametoDisplay{\n return sourceNametoDisplay[rankedLastAwvDateSource] || null;\n}\n","import { DocumentMatcher } from './document.matcher';\nimport { PatientMatcher } from './patient.matcher';\nimport { ReportMatcher } from './report.matcher';\nimport { HCCDashboardMatcher } from './hcc-dashboard.matcher';\nimport { TimeTrackingMatcher } from './time-tracking.matcher';\nimport { MSSPValueReportMatcher } from './mssp-value-report.matcher';\nimport { FormsMatcher } from './forms.matcher';\nimport { PrescriptionsMatcher } from './prescriptions.matcher';\nimport { PatientsCohortMatcher } from './patients-cohort.matcher';\nimport { PerformanceDashboardMatcher } from './performance-dashboard.matcher';\n\nexport const RecentsMatchers = [\n new DocumentMatcher(),\n new PatientMatcher(),\n new ReportMatcher(),\n new HCCDashboardMatcher(),\n new TimeTrackingMatcher(),\n new MSSPValueReportMatcher(),\n new FormsMatcher(),\n new PrescriptionsMatcher(),\n new PatientsCohortMatcher(),\n new PerformanceDashboardMatcher(),\n];\n","import { Params } from '@angular/router';\nimport { RecentLogData } from '@shared/services/router-history/router-history.service';\nimport { LogAuditElementID } from '../audit-constants';\nimport { IRecentMatcher } from './recent-matcher';\nexport class DocumentMatcher implements IRecentMatcher {\n match(url: string): boolean {\n if (url.includes('improve') && url.includes('file=')) {\n return true;\n } else {\n return false;\n }\n }\n\n createLog(url: string, queryParams: Params): RecentLogData {\n return {\n url,\n elements: [\n {\n id: LogAuditElementID.DocumentEntryId,\n value: queryParams.file,\n },\n ],\n };\n }\n\n // null to trigger lookup call\n title(url: string): null {\n return null;\n }\n}\n","import { RecentLogData } from '@shared/services/router-history/router-history.service';\nimport { LogAuditElementID } from '../audit-constants';\nimport { IRecentMatcher } from './recent-matcher';\n\nexport class PatientMatcher implements IRecentMatcher {\n match(url: string): boolean {\n if (url.includes('care/patient/')) {\n return true;\n } else {\n return false;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n createLog(url: string): RecentLogData {\n return {\n url: url.split('?')[0],\n elements: [\n {\n id: LogAuditElementID.ChPatId,\n value: url.split('patient/')[1].split('?')[0],\n },\n ],\n };\n }\n\n // null to trigger lookup call\n title(url: string): null {\n return null;\n }\n}\n","import { RecentLogData } from '@shared/services/router-history/router-history.service';\nimport { LogAuditElementID } from '../audit-constants';\nimport { IRecentMatcher } from './recent-matcher';\nexport class ReportMatcher implements IRecentMatcher {\n match(url: string): boolean {\n if (url.includes('track/report/')) {\n return true;\n } else {\n return false;\n }\n }\n\n createLog(url: string): RecentLogData {\n const segments = url.split('/');\n if (segments.length > 7) {\n segments.length = 7;\n }\n return {\n url: segments.join('/'),\n elements: [\n {\n id: LogAuditElementID.ReportGUID,\n value: url.split('/')[5],\n },\n ],\n };\n }\n\n // null to trigger lookup call\n title(url: string): null {\n return null;\n }\n}\n","import { RecentLogData } from '@shared/services/router-history/router-history.service';\nimport { IRecentMatcher } from './recent-matcher';\nexport class HCCDashboardMatcher implements IRecentMatcher {\n match(url: string): boolean {\n if (url.includes('track/clinical/dashboard')) {\n return true;\n } else {\n return false;\n }\n }\n\n createLog(url: string): RecentLogData {\n return {\n url,\n elements: [],\n };\n }\n\n title(url: string): string {\n if (url.includes('patients')) {\n return 'Chronic Conditions Dashboard | Patients';\n } else if (url.includes('clinicians')) {\n return 'Chronic Conditions Dashboard | Clinicians';\n } else if (url.includes('patientDetails')) {\n return 'Chronic Conditions Dashboard | Patient Details';\n } else if (url.includes('practices')) {\n return 'Chronic Conditions Dashboard | Practices';\n } else if (url.includes('cins')) {\n return 'Chronic Conditions Dashboard | CIN';\n } else {\n return 'Chronic Conditions Dashboard';\n }\n }\n}\n","import { RecentLogData } from '@shared/services/router-history/router-history.service';\nimport { IRecentMatcher } from './recent-matcher';\nexport class TimeTrackingMatcher implements IRecentMatcher {\n match(url: string): boolean {\n if (url.includes('track/clinical/trackTimeTracking')) {\n return true;\n } else {\n return false;\n }\n }\n\n createLog(url: string): RecentLogData {\n return {\n url,\n elements: [],\n };\n }\n\n title(url: string): string {\n return 'Time Tracking';\n }\n}\n","import { RecentLogData } from '@shared/services/router-history/router-history.service';\nimport { IRecentMatcher } from './recent-matcher';\nexport class MSSPValueReportMatcher implements IRecentMatcher {\n match(url: string): boolean {\n if (url.includes('track/value-calculator')) {\n return true;\n } else {\n return false;\n }\n }\n\n createLog(url: string): RecentLogData {\n return {\n url: url.split('valueCalculator/')[0] + 'valueCalculator',\n elements: [],\n };\n }\n\n title(url: string): string {\n return 'MSSP Value Report';\n }\n}\n","import { RecentLogData } from '@shared/services/router-history/router-history.service';\nimport { IRecentMatcher } from './recent-matcher';\nexport class FormsMatcher implements IRecentMatcher {\n match(url: string): boolean {\n if (url.includes('submit/')) {\n return true;\n } else {\n return false;\n }\n }\n\n createLog(url: string): RecentLogData {\n return {\n url,\n elements: [],\n };\n }\n\n // attempt lookup so we get feature name fallback\n title(url: string): null {\n return null;\n }\n}\n","import { RecentLogData } from '@shared/services/router-history/router-history.service';\nimport { IRecentMatcher } from './recent-matcher';\nexport class PrescriptionsMatcher implements IRecentMatcher {\n match(url: string): boolean {\n if (url.includes('care/prescriptions')) {\n return true;\n } else {\n return false;\n }\n }\n\n createLog(url: string): RecentLogData {\n return {\n url,\n elements: [],\n };\n }\n\n title(url: string): string {\n if (url.includes('-processing')) {\n return 'Process 340B';\n } else if (url.includes('-invoicing')) {\n return 'Invoice 340B';\n } else if (url.includes('-exceptions')) {\n return 'Pre-validation Exceptions';\n } else {\n return 'Validate 340B';\n }\n }\n}\n","import { RecentLogData } from '@shared/services/router-history/router-history.service';\nimport { IRecentMatcher } from './recent-matcher';\nimport { getDisplayStringForAWVWorklistStatusEnum } from '@shared/models/patient';\n\nexport class PatientsCohortMatcher implements IRecentMatcher {\n match(url: string): boolean {\n if (url.includes('care/patients?filterPreset')) {\n return true;\n } else {\n return false;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n createLog(url: string): RecentLogData {\n return {\n url: url,\n elements: []\n };\n }\n\n title(url: string): string {\n let queryParams = this.getJsonFromUrl(url);\n if (queryParams?.filterTitle)\n return (\n queryParams?.filterTitle +\n (queryParams?.AWVPatientsStatus\n ? `: ${getDisplayStringForAWVWorklistStatusEnum(queryParams?.AWVPatientsStatus)}`\n : '')\n );\n let filter = queryParams?.filterPreset;\n switch (filter) {\n case 'awv-opportunities':\n return 'AWV Opportunities';\n case 'pac-navigator-program':\n return 'PAC Navigator Program';\n case 'ed-utilization':\n return 'ED Utilization';\n case 'hcc-vip-cohort':\n return 'Chronic Conditions VIP Cohort';\n case 'chf':\n return 'CHF';\n case 'copd':\n return 'COPD';\n case 'care mangement':\n return 'Care Management';\n default:\n return filter\n ?.split('-')\n ?.map(w => (w.length ? w[0].toUpperCase() + w.substring(1) : ''))\n ?.join(' ');\n }\n }\n getJsonFromUrl(url: string): { [key: string]: string } {\n if (!url) url = location.search;\n var query = url.substr(1);\n var result = {};\n query.split('&').forEach(function (part) {\n var item = part.split('=');\n result[item[0]] = decodeURIComponent(item[1]);\n });\n return result;\n }\n}\n","import { RecentLogData } from '@shared/services/router-history/router-history.service';\nimport { IRecentMatcher } from './recent-matcher';\nimport { TrackFeatureConstants } from '../module-constants';\n\nexport class PerformanceDashboardMatcher implements IRecentMatcher {\n match(url: string): boolean {\n return url.includes('track/performance');\n }\n\n createLog(url: string): RecentLogData {\n return {\n url,\n elements: [],\n };\n }\n\n title(url: string): string {\n return TrackFeatureConstants.PerformanceDashboardName;\n }\n}\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport default function startOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}","import startOfSecond from \"../startOfSecond/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second (and hour and day)?\n *\n * @description\n * Are the given dates in the same second (and hour and day)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second (and hour and day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n *\n * @example\n * // Are 4 September 2014 06:00:15.000 and 4 September 2014 06:01.15.000 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 4, 6, 1, 15)\n * )\n * //=> false\n *\n * @example\n * // Are 4 September 2014 06:00:15.000 and 5 September 2014 06:00.15.000 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 5, 6, 0, 15)\n * )\n * //=> false\n */\nexport default function isSameSecond(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft);\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight);\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime();\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport default function startOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import { addDays, addHours, addMinutes, addSeconds, differenceInDays, differenceInMinutes, differenceInSeconds, endOfDay, endOfMonth, endOfWeek, getDay, getMonth, isSameDay, isSameMonth, isSameSecond, max, setHours, setMinutes, startOfDay, startOfMinute, startOfMonth, startOfWeek, getHours, getMinutes, } from 'date-fns';\nfunction getTimezoneOffset(date) {\n return new Date(date).getTimezoneOffset();\n}\nexport function adapterFactory() {\n return {\n addDays: addDays,\n addHours: addHours,\n addMinutes: addMinutes,\n addSeconds: addSeconds,\n differenceInDays: differenceInDays,\n differenceInMinutes: differenceInMinutes,\n differenceInSeconds: differenceInSeconds,\n endOfDay: endOfDay,\n endOfMonth: endOfMonth,\n endOfWeek: endOfWeek,\n getDay: getDay,\n getMonth: getMonth,\n isSameDay: isSameDay,\n isSameMonth: isSameMonth,\n isSameSecond: isSameSecond,\n max: max,\n setHours: setHours,\n setMinutes: setMinutes,\n startOfDay: startOfDay,\n startOfMinute: startOfMinute,\n startOfMonth: startOfMonth,\n startOfWeek: startOfWeek,\n getHours: getHours,\n getMinutes: getMinutes,\n getTimezoneOffset: getTimezoneOffset,\n };\n}\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * const result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function setDate(dirtyDate, dirtyDayOfMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = toInteger(dirtyDayOfMonth);\n date.setDate(dayOfMonth);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n date.setFullYear(year);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import { __assign } from \"tslib\";\nimport { adapterFactory as baseAdapterFactory } from 'calendar-utils/date-adapters/date-fns';\nimport { addWeeks, addMonths, subDays, subWeeks, subMonths, getISOWeek, setDate, setMonth, setYear, getDate, getYear, } from 'date-fns';\nexport function adapterFactory() {\n return __assign(__assign({}, baseAdapterFactory()), { addWeeks: addWeeks, addMonths: addMonths, subDays: subDays, subWeeks: subWeeks, subMonths: subMonths, getISOWeek: getISOWeek, setDate: setDate, setMonth: setMonth, setYear: setYear, getDate: getDate, getYear: getYear });\n}\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '../../shared.module';\nimport { PatientFacesheetComponent } from './patient-facesheet.component';\nimport { PatientCondensedComponent } from './patient-condensed/patient-condensed.component';\nimport { PatientExpandedComponent } from './patient-expanded/patient-expanded.component';\nimport { PatientActionDropdownComponent } from './patient-action-dropdown/patient-action-dropdown.component';\nimport { PatientTimeTrackingComponent } from './shared/patient-time-tracking/patient-time-tracking.component';\nimport { PatientCareGapsComponent } from '@care/components/patient-care-gaps/patient-care-gaps.component';\nimport { ChartTimelineComponent } from './tabs/chart-timeline/chart-timeline.component';\nimport { ChartSurveysComponent } from './tabs/chart-surveys/chart-surveys.component';\nimport { ChartMedicationsComponent } from './tabs/chart-medications/chart-medications.component';\nimport { ChartVitalsComponent } from './tabs/chart-vitals/chart-vitals.component';\nimport { ChartEducationComponent } from './tabs/chart-education/chart-education.component';\nimport { PatientActivityComponent } from './tabs/patient-activity/patient-activity.component';\nimport { PatientAlertsComponent } from './tabs/patient-alerts/patient-alerts.component';\nimport { PatientAlertComponent } from './shared/patient-alert/patient-alert.component';\nimport { PatientSummaryComponent } from './tabs/patient-summary/patient-summary.component';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { ChartInfoComponent } from './tabs/chart-info/chart-info.component';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { PatientInviteFormComponent } from './patient-invite-form/patient-invite-form.component';\nimport { SinglePatientInviteFormComponent } from './single-patient-invite-form/single-patient-invite-form.component';\nimport { PatientEditFormComponent } from './patient-edit-form/patient-edit-form.component';\nimport { CarePatientCareplanComponent } from './tabs/patient-careplan/patient-careplan.component';\nimport { PatientTaskComponent } from './tabs/patient-careplan/patient-task/patient-task.component';\nimport { CalendarModule, DateAdapter } from 'angular-calendar';\nimport { adapterFactory } from 'angular-calendar/date-adapters/date-fns';\nimport { PatientRemindersComponent } from './tabs/patient-reminders/patient-reminders.component';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { PatientDemographicsComponent } from './patient-demographics/patient-demographics.component';\nimport { PatientChronicCodingOpportunitiesComponent } from '@care/components/patient-facesheet/patient-chronic-coding-opportunities/patient-chronic-coding-opportunities.component';\nimport { PatientFacesheetDragDropComponent } from '@care/components/patient-facesheet/patient-facesheet-drag-drop/patient-facesheet-drag-drop.component';\nimport { PatientHealthMaintenanceComponent } from '@care/components/patient-facesheet/patient-health-maintenance/patient-health-maintenance.component';\nimport { PatientUtilizationComponent } from '@care/components/patient-facesheet/patient-utilization/patient-utilization.component';\nimport { PatientAcuteCodingOpportunitiesComponent } from '@care/components/patient-facesheet/patient-acute-coding-opportunities/patient-acute-coding-opportunities.component';\nimport { PatientQualityOpportunitiesComponent } from '@care/components/patient-facesheet/patient-quality-opportunities/patient-quality-opportunities.component';\nimport { PatientPacNavigatorComponent } from './tabs/patient-pac-navigator/patient-pac-navigator.component';\nimport { CarePatientCareplanEditableComponent } from './tabs/patient-careplan-editable/patient-careplan-editable.component';\nimport { TimeTrackingDropdownComponent } from './shared/patient-time-tracking/patient-time-tracking-dropdown/patient-time-tracking-dropdown.component';\nimport { PatientIHEWorklistComponent } from './tabs/patient-ihe-worklist/patient-ihe-worklist.component';\nimport { PatientWorklistsComponent } from './tabs/patient-worklists/patient-worklists.component';\nimport { PatientAwvWorkflowComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-workflow/patient-awv-workflow.component';\nimport { PatientAwvReportComponent } from './tabs/patient-awv-report/patient-awv-report.component';\nimport { PatientAwvSchedulingComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-awv-scheduling.component';\nimport { PatientWorkflowScheduledComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-scheduled/patient-workflow-scheduled.component';\nimport { PatientWorkflowCompletedComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-completed/patient-workflow-completed.component';\nimport { PatientWorkflowCallBackComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-call-back/patient-workflow-call-back.component';\nimport { PatientWorkflowRemoveComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-scheduling/patient-workflow-remove/patient-workflow-remove.component';\nimport { PatientAwvReminderComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-awv-reminder.component';\nimport { PatientStepScheduledComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-scheduled/patient-step-scheduled.component';\nimport { PatientStepCompletedComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-completed/patient-step-completed.component';\nimport { StepperComponent } from '@shared/components/stepper/stepper.component';\nimport { PatientStepReminderComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-reminder/patient-step-reminder.component';\nimport { PatientAwvBannerComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-banner/patient-awv-banner.component';\nimport { PatientAwvHistoryComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-history/patient-awv-history.component';\nimport { PatientAwvRemovedComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-removed/patient-awv-removed.component';\nimport { PatientAwvCompletedComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-completed/patient-awv-completed.component';\nimport { PatientAwvEnrolComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-enrol/patient-awv-enrol.component';\nimport { PatientAwvLoadingComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-loading/patient-awv-loading.component';\nimport { PatientStepReminderFormComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-reminder-form/patient-step-reminder-form.component';\nimport { PatientAwvCallbackComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-callback/patient-awv-callback.component';\nimport { PatientLastAwvDetailsComponent } from '@shared/modules/patient-facesheet/tabs/patient-last-awv-details/patient-last-awv-details.component';\nimport { PatientStepCompletedFormComponent } from '@shared/modules/patient-facesheet/tabs/patient-awv-reminder/patient-step-completed-form/patient-step-completed-form.component';\nimport { PatientAwvRemoveModalDialogComponent } from './tabs/patient-awv-remove-modal-dialog/patient-awv-remove-modal-dialog.component';\nimport { PatientAwvDeferredComponent } from './tabs/patient-awv-deferred/patient-awv-deferred.component';\nimport { PatientAwvErrorComponent } from './tabs/patient-awv-error/patient-awv-error.component';\nimport { PatientAwvInlineErrorComponent } from './tabs/patient-awv-inline-error/patient-awv-inline-error.component';\nimport { SmsStandardScheduleComponent } from './tabs/sms-standard-schedule/sms-standard-schedule.component';\nimport { CustomScheduleComponent } from './tabs/custom-schedule/custom-schedule.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\n\n@NgModule({\n declarations: [\n PatientFacesheetComponent,\n PatientCondensedComponent,\n PatientExpandedComponent,\n PatientActionDropdownComponent,\n PatientTimeTrackingComponent,\n PatientCareGapsComponent,\n ChartTimelineComponent,\n ChartSurveysComponent,\n ChartMedicationsComponent,\n ChartVitalsComponent,\n ChartEducationComponent,\n PatientActivityComponent,\n PatientAlertsComponent,\n PatientAlertComponent,\n CarePatientCareplanComponent,\n PatientSummaryComponent,\n ChartInfoComponent,\n PatientInviteFormComponent,\n SinglePatientInviteFormComponent,\n PatientTaskComponent,\n PatientEditFormComponent,\n PatientRemindersComponent,\n PatientDemographicsComponent,\n PatientChronicCodingOpportunitiesComponent,\n PatientFacesheetDragDropComponent,\n PatientHealthMaintenanceComponent,\n PatientUtilizationComponent,\n PatientAcuteCodingOpportunitiesComponent,\n PatientQualityOpportunitiesComponent,\n PatientPacNavigatorComponent,\n CarePatientCareplanEditableComponent,\n TimeTrackingDropdownComponent,\n PatientIHEWorklistComponent,\n PatientWorklistsComponent,\n PatientAwvWorkflowComponent,\n PatientAwvReportComponent,\n PatientAwvSchedulingComponent,\n PatientWorkflowScheduledComponent,\n PatientWorkflowCompletedComponent,\n PatientWorkflowCallBackComponent,\n PatientWorkflowRemoveComponent,\n PatientAwvReminderComponent,\n PatientStepScheduledComponent,\n PatientStepReminderComponent,\n PatientStepCompletedComponent,\n StepperComponent,\n PatientStepReminderFormComponent,\n PatientAwvBannerComponent,\n PatientAwvHistoryComponent,\n PatientAwvRemovedComponent,\n PatientAwvCompletedComponent,\n PatientAwvEnrolComponent,\n PatientAwvLoadingComponent,\n PatientAwvCallbackComponent,\n PatientLastAwvDetailsComponent,\n PatientStepCompletedFormComponent,\n PatientAwvRemoveModalDialogComponent,\n PatientAwvDeferredComponent,\n PatientAwvErrorComponent,\n PatientAwvInlineErrorComponent,\n SmsStandardScheduleComponent,\n CustomScheduleComponent\n ],\n imports: [\n FontAwesomeModule,\n OverlayModule,\n SharedModule,\n CalendarModule.forRoot({ provide: DateAdapter, useFactory: adapterFactory }),\n AgGridModule,\n MatInputModule,\n MatAutocompleteModule\n ],\n exports: [\n PatientFacesheetComponent,\n SinglePatientInviteFormComponent,\n PatientInviteFormComponent,\n PatientPacNavigatorComponent,\n TimeTrackingDropdownComponent,\n PatientIHEWorklistComponent,\n PatientAwvReportComponent,\n PatientAwvSchedulingComponent,\n PatientAwvReminderComponent,\n PatientAwvRemovedComponent,\n PatientAwvBannerComponent,\n PatientAwvHistoryComponent,\n PatientAwvCompletedComponent,\n PatientAwvEnrolComponent,\n PatientAwvLoadingComponent,\n PatientAwvCallbackComponent,\n PatientLastAwvDetailsComponent,\n PatientStepCompletedFormComponent,\n PatientAwvDeferredComponent,\n PatientAwvErrorComponent,\n PatientAwvInlineErrorComponent\n ]\n})\nexport class PatientFacesheetModule {}\n","
\n
\n
\n
\n
{{eoc.name}}
\n
\n
\n \n | \n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n
\n
0\">\n
\n
\n \n
\n \n \n
\n
\n
Once
\n
Daily
\n
Weekly
\n
Monthly
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n \n
\n
0\">\n
Assigned tasks
\n
\n
0\">\n
Once
\n
Daily
\n
Weekly
\n
Monthly
\n
\n
0\">\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
Template tasks (module not assigned)
\n
\n
\n
Once
\n
Daily
\n
Weekly
\n
Monthly
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
{{ x.operation }} {{ x.module.protocol.name }}
\n
\n
\n
\n
0\">\n
These tasks will be assigned to the patient
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
0\">\n
These tasks will be activated
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
0\">\n
These tasks are already active in another module and will be left unchanged
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
0\">\n
{{x.tasksToBeDeactivated.length}} tasks will be deactivated
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
\n This action also will {{x.operation == 'Deactivate' ? 'deactivate' : 'activate'}} {{x.protocol.name}} protocol\n
\n
\n
\n \n
\n This action also will {{x.operation == 'Deactivate' ? 'deactivate' : 'activate'}} parent protocol\n
\n
\n
\n
{{ x.operation }} {{ x.protocol.name }}
\n
\n
\n
\n
0\">\n
These tasks will be assigned to the patient
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
0\">\n
These tasks will be activated
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
0\">\n
These tasks are already active in another module and will be left unchanged
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
0\">\n
{{x.protocolTasksToBeDeactivated.length}} tasks will be deactivated
\n
\n
\n
{{t.name}}
\n
{{getTaskTypeText(t.type)}}
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n ","import {\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport * as _ from 'lodash';\n\nimport { Patient } from '@shared/models/patient';\nimport { PatientService, ModuleActivateDeactivateDialogViewModel, EpisodeOfCareProtocolAssignmentViewModel, EpisodeOfCareViewModel, EpisodeOfCareModuleAssignmentViewModel, TaskViewModel, CarePlanViewModel, IProcedure, ProtocolTaskViewModel } from '@shared/services/patient/patient.service';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\nimport {\n SubComponentId,\n ComponentId,\n ActionId,\n} from '@shared/models/audit-constants';\nimport { Procedure, Task } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/wp-model';\nimport { OrgService, IProtocol, IModule } from '@shared/services/org-service/org.service';\nimport { Protocol } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/protocol';\nimport { IconDefinition, faSave } from '@fortawesome/free-solid-svg-icons';\nimport { ToastrService } from 'ngx-toastr';\nimport { PatientIdentifiersIssuers } from '@shared/models/module-constants';\n\n/** We are caching protocols - they change very rarely */\nconst protocols: { [key: string]: wpapi.model.Protocol } = {};\n\n@Component({\n selector: 'coach-care-patient-careplan-editable',\n templateUrl: './patient-careplan-editable.component.html',\n styleUrls: ['./patient-careplan-editable.component.scss']\n})\nexport class CarePatientCareplanEditableComponent implements OnInit, OnChanges {\n @Input() public patient: Patient;\n @Input() public tier: IHierarchyTier;\n orgData: any = null;\n orgId: string = null;\n get tierId() {\n return this?.tier?.selectedTierId;\n }\n private get tierNum() {\n return this?.tier?.tier\n };\n\n vm: CarePlanViewModel;\n selectHolder: any = {\n primaryProfessional: {},\n newProtocol: {},\n newModules: [],\n newProcedure: {\n allowedProtocols: [],\n },\n extendedFields: {},\n };\n orgProtocols: any = [];\n protocols: IProtocol[] = [];\n protocolsById: { [key: string]: any } = {};\n activeProtocolsById: { [key: string]: string[] } = {}; // list of protocols by id, each one is list of modules ids\n activeModulesById: { [key: string]: boolean } = {};\n activeEpisodesOfCareByName: { [key: string]: boolean } = {};\n activeEpisodesOfCare: EpisodeOfCareViewModel[] = [];\n modulesById: any = {};\n smsPhoneNumberByProtocolId: { [key: string]: string } = {};\n professionals: wpapi.model.Professional[] = null;\n professionalsById: any = {};\n availableProcedures: IProcedure[] = [];\n availableProceduresByName: { [key: string]: any } = {};\n selectedModuleActivateDeactivateInfo: any = null;\n tasks: any = [];\n activeTasksById: any = {};\n activeTasksByProtocolId: any = {};\n faSave: IconDefinition = faSave;\n phoneNumber: string = null;\n constructor(\n private PatientService: PatientService,\n private auditService: AuditService,\n private OrgService: OrgService,\n private toastr: ToastrService\n ) { }\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.patient && this.tier) {\n this.refresh();\n //(detail, compId, subComp, actionId, chPatId, tierId, orgId);\n this.auditService.auditLog(\n 'Patient CarePlan',\n ComponentId.Dashboard,\n SubComponentId.CarePlan,\n ActionId.PHIAccess,\n this.patient.chPatId,\n this.tier,\n null\n );\n }\n }\n async getAndStoreOrgProtocols() {\n this.protocolsById = {};\n let orgProtocols = await this.OrgService.getProtocolsForOrg(this.orgId);\n let result = [];\n // pull extra info for a protocol. Looks like some details are missing when pulling protocols by org\n orgProtocols?.forEach(async protocol => {\n let protocolDetails = await this.OrgService.getProtocol(protocol._id);\n this.protocolsById[protocolDetails._id] = protocolDetails;\n result.push(protocolDetails)\n })\n return result;\n }\n async getAndStorePatientEpisodesOfCare() {\n this.activeProtocolsById = {};\n let activeEpisodesOfCare = await this.PatientService.getPatientEpisodesOfCare(this.tierId, this.patient);\n activeEpisodesOfCare?.forEach(eoc => {\n this.availableProceduresByName[eoc.name] = eoc;\n eoc.protocols?.forEach(protocol => {\n this.activeProtocolsById[protocol.protocolId] = protocol.modules?.filter(m => m.state == 'active').map(m => m.protocolId)\n })\n eoc.protocols = eoc.protocols?.sort((a, b) => a.name !== b.name ? a.name < b.name ? -1 : 1 : 0)\n })\n return (activeEpisodesOfCare || []).sort((a, b) => a.name !== b.name ? a.name < b.name ? -1 : 1 : 0);\n }\n test(target){\n }\n async getAndStorePatientTasks() {\n this.activeTasksById = {};\n this.activeTasksByProtocolId = {};\n let tasks = await this.PatientService.getPatientTasks(this.tierId, this.patient);\n for(let task of tasks){\n this.activeTasksById[task._id] = task;\n let taskProtocolId = task['moduleId'] || task.protocolId\n if(!this.activeTasksByProtocolId[taskProtocolId]) {\n this.activeTasksByProtocolId[taskProtocolId] = []\n }\n this.activeTasksByProtocolId[taskProtocolId].push(task)\n }\n return tasks;\n }\n async refresh() {\n this.phoneNumber = _.cloneDeep(this.patient.phoneNumber);\n if (!this.orgId) {\n this.orgId = await this.PatientService.getWpOrgIdFromTierId(\n this.tier?.selectedTierId\n );\n }\n try {\n this.activeModulesById = {};\n this.orgData = await this.OrgService.getOrg(this.orgId);\n let availableProcedures = this.orgData.availableProcedures;\n this.orgProtocols = await this.getAndStoreOrgProtocols();\n this.activeEpisodesOfCare = await this.getAndStorePatientEpisodesOfCare();\n this.selectedModuleActivateDeactivateInfo = null;\n this.tasks = await this.getAndStorePatientTasks();\n\n await this.getAndAssignOrgAndPatientData()\n // this.patient.episodesOfCare = this.vm.episodesOfCare;\n for(let procedure of availableProcedures){\n this.availableProceduresByName[procedure.name] = { ...procedure, ...(this.availableProceduresByName[procedure.name] || {}) };\n procedure._id = this.availableProceduresByName[procedure.name]?._id\n procedure.procedureName = procedure.name;\n procedure.protocols = []\n procedure.allowedProtocols?.forEach(async protocolId => {\n let protocol = this.protocolsById[protocolId]\n\n if (protocol) {\n protocol.protocolId = protocol._id;\n this.clearDefaultTasksState(protocol.tasks)\n if (protocol.modules) {\n protocol.modules.forEach(module => {\n module.state = this.activeModulesById[module.protocolId] ? 'active' : 'inactive'\n })\n }\n procedure.protocols.push(await this.protocolHandler(protocol, procedure))\n }\n })\n procedure.isActive = procedure.protocols?.filter(protocol => protocol.isActive)?.length > 0;\n }\n\n this.availableProcedures = availableProcedures\n } catch (error) {\n console.error(\"error =>\", error)\n }\n }\n clearDefaultTasksState(tasks: Task[]): void { // for some reason .isActive has two meanings: 1. is assigned to patient, 2. is available to assign\n tasks?.forEach(task => {\n task.isActive = false;\n })\n }\n async protocolHandler(protocol, procedure) {\n try {\n protocol.isOpen = true;\n protocol.parentEpisodeOfCare = procedure;\n let protocolTasks = this.activeTasksByProtocolId[protocol._id] || protocol.tasks\n protocol.tasks = protocolTasks?.map((protocolTask) => {\n let tvm = protocolTask as TaskViewModel;\n tvm.swimlane = this.getSwimlaneForTask(protocolTask);\n return tvm;\n })?.filter((tvm) => !!tvm);\n\n protocol.activeTaskCount = protocol.tasks.reduce((count, t) => (t.isActive ? count + 1 : count), 0);\n let listOfActiveModuleIds = this.activeProtocolsById[protocol._id]\n if (protocol.modules) {\n for (let m of protocol.modules) {\n if (listOfActiveModuleIds?.includes[m.protocolId]) {\n m.state = 'active'\n }\n m.isOpen = true;\n // store ids only, otherwise it turns into circular object\n m.parentProtocol = {\n protocolId: protocol._id,\n parentEpisodeOfCare: {\n _id: protocol.parentEpisodeOfCare._id,\n name: protocol.parentEpisodeOfCare.name\n }\n };\n if (!this.protocolsById[m.protocolId]) {\n this.protocolsById[m.protocolId] = await this.OrgService.getProtocol(\n m.protocolId\n );\n this.clearDefaultTasksState(this.protocolsById[m.protocolId]?.tasks)\n }\n // this.protocolsById[m.protocolId].isActive = false;\n m.protocol = this.protocolsById[m.protocolId];\n let moduleTasks = this.activeTasksByProtocolId[m.protocolId];\n if (moduleTasks && m.isActive) {\n m.templateTasks = this.templateTasksForModule(\n moduleTasks,\n m.protocolId\n ) || [];\n m.assignedTasks = moduleTasks?.map((moduleTask) => {\n let tvm = moduleTask as TaskViewModel;\n tvm.swimlane = this.getSwimlaneForTask(moduleTask);\n return tvm;\n })?.filter((t) => !!t) || [];\n\n } else {\n m.templateTasks = m.protocol?.tasks.map((moduleTask) => {\n let tvm = moduleTask as TaskViewModel;\n tvm.swimlane = this.getSwimlaneForTask(moduleTask);\n return tvm;\n })?.filter((t) => !!t) || [];\n }\n m.activeTaskCount = m.assignedTasks?.reduce(\n (count, t) => (t.isActive ? count + 1 : count),\n 0\n );\n }\n }\n protocol.isActive = protocol.tasks?.filter(task => task.isActive)?.length || protocol.modules?.filter(module => module.state == 'active')?.length;\n\n return protocol;\n }catch(error){\n console.error(error)\n }\n\n }\n async getAndAssignOrgAndPatientData() {\n this.activeEpisodesOfCare?.forEach(episode => {\n this.activeEpisodesOfCareByName[episode.name] = true;\n episode.protocols?.forEach(protocol => {\n this.activeProtocolsById[protocol.protocolId] = [];\n protocol.modules?.forEach(module => {\n if (module.state == 'active') {\n this.activeProtocolsById[protocol.protocolId].push(module.protocolId);\n this.activeModulesById[module.protocolId] = true;\n }\n })\n })\n })\n await this.loadPatientInviteDetailsForOrg();\n }\n async loadPatientInviteDetailsForOrg() {\n let org = this.orgData\n let protocols = this.orgProtocols;\n protocols.forEach((p) => {\n if (this.activeProtocolsById[p._id]) {\n p.isSelected = true;\n }\n this.protocolsById[p._id] = p;\n this.storeModuleNames(p.modules);\n this.checkModules(p.modules, this.activeProtocolsById[p._id] || [])\n });\n org.hasProcedures =\n org.availableProcedures &&\n Array.isArray(org.availableProcedures) &&\n org.availableProcedures.length > 0;\n org.availableProcedures.forEach( procedure => {\n procedure.isSelected = this.activeEpisodesOfCareByName[procedure.name];\n })\n this.orgData = org;\n }\n\n storeModuleNames(modules: IModule[]) {\n if (modules) {\n modules.forEach(async (m) => {\n this.modulesById[m.protocolId] = await this.OrgService.getModuleName(m.protocolId);\n });\n }\n }\n checkModules(modules: IModule[], activeModules: string[]) {\n if (modules) {\n modules.forEach(async (m) => {\n m.isActive = activeModules.includes(m.protocolId);\n });\n }\n }\n\n\n updateCalculatedValues() {\n for (let eoc of this.availableProcedures) {\n for (let p of eoc.protocols) {\n p.activeTaskCount = p.tasks.reduce(\n (count, t) => (t.isActive ? count + 1 : count),\n 0\n );\n if (p.modules) {\n for (let m of p.modules) {\n m.activeTaskCount = m.assignedTasks.reduce(\n (count, t) => (t.isActive ? count + 1 : count),\n 0\n );\n }\n }\n }\n }\n }\n\n // Event handlers\n async onTaskUpdated(t: ProtocolTaskViewModel) {\n // this.refresh()\n for(let eoc of this.availableProcedures){\n for(let protocol of eoc.protocols) {\n if(protocol._id == t.protocolId || protocol.protocolId == t.protocolId){\n // activate/deactivate protocol\n for(let task of protocol.tasks){\n if(task._id == t._id) {\n task = t;\n protocol.activeTaskCount = protocol.tasks.reduce(\n (count, t) => (t.isActive ? count + 1 : count),\n 0\n );\n if(!protocol.activeTaskCount && !protocol.modules.filter(module => module.isActive).length) {\n protocol.isActive = false;\n }\n break;\n }\n }\n // activate/deactivate module\n for(let module of protocol.modules){\n for(let task of module.assignedTasks){\n if (task._id == t._id) {\n task = t;\n this.updateModuleState(module)\n break;\n }\n }\n for(let task of module.templateTasks){\n if (task._id == t._id) {\n task = t;\n this.updateModuleState(module)\n break;\n }\n }\n }\n }\n }\n };\n }\n async updateModuleState(module) {\n let activeTasks = module.assignedTasks?.filter(t => t.isActive)\n if (activeTasks?.length && module.state != 'active') { // if there are active tasks and module is deactivated, then activate module\n this.activateOrDeactivateModule({ module: module, operation: 'Activate', tasksToAssign: null, tasksNotToBeDeactivated: null, tasksToActivate: null, tasksToLeaveAlone: null, tasksToBeDeactivated: null }, module.assignedTasks.filter(t => !t.isActive))\n } else\n if (!(activeTasks?.length) && module.state == 'active') { // if there are no active tasks and module is active, then deactivate module\n this.activateOrDeactivateModule({ module: module, operation: 'Deactivate', tasksToAssign: null, tasksNotToBeDeactivated: null, tasksToActivate: null, tasksToLeaveAlone: null, tasksToBeDeactivated: null })\n }\n module.activeTaskCount = activeTasks?.length || 0;\n }\n async moduleCheckClicked(module: any) {\n if(!module) return\n this.selectedModuleActivateDeactivateInfo = this.getModuleActivateDeactivateInfo(\n module,\n module.state != 'active'\n );\n\n }\n async protocolCheckClicked(protocol: EpisodeOfCareProtocolAssignmentViewModel) {\n if(!module) return\n this.selectedModuleActivateDeactivateInfo = this.getProtocolActivateDeactivateInfo(protocol, !protocol.isActive);\n }\n async activateOrDeactivateModule(info: ModuleActivateDeactivateDialogViewModel, deactivateTasks?: any[]) {\n const activate: boolean = info.operation != 'Deactivate';\n // need to check whether info.module.parentProtocol.parentEpisodeOfCare._id is not undefined\n try {\n if(info.protocol){\n await this.activateOrDeactivateProtocol(info.protocol, activate, [info.module?.protocolId]) // by this time only 1 active module should be active, and it's going to be activated/deactivated bellow\n }\n if(info.module) {\n await this.PatientService.activateOrDeactivateModule({\n userId: this.patient.carePatient._id,\n episodeOfCareId: info.module.parentProtocol.parentEpisodeOfCare._id,\n protocolId: info.module.parentProtocol.protocolId,\n moduleId: info.module.protocolId,\n activate: activate,\n });\n this.toastr.success(`Module ${info.module.protocol?.name} is successfully ${activate ? 'activated' : 'deactivated'}.`)\n }\n if(deactivateTasks?.length) {\n deactivateTasks.forEach( async task => {\n await this.PatientService.activateOrDeactivateTask(task, false);\n })\n }\n this.selectedModuleActivateDeactivateInfo = null;\n this.toastr.info(`Reloading list...`)\n await this.refresh();\n } catch (error) {\n this.toastr.error(`Can't ${activate ? 'activate' : 'deactivate'} module.`)\n console.error(error)\n }\n }\n getProtocolActivateDeactivateInfo(protocol, activate: boolean) {\n let result = {\n operation: activate ? 'Activate' : 'Deactivate',\n protocolTasksToAssign: [],\n protocolTasksToActivate: [],\n protocolTasksToBeDeactivated: [],\n protocolTasksNotToBeDeactivated: [],\n protocolTasksToLeaveAlone: [],\n protocol: protocol,\n procedure: null,\n modulesToActivate: [],\n modulesToBeDeactivated: [],\n modulesToLeaveAlone: []\n };\n protocol.tasks.forEach( task => {\n if(activate) {\n task.isActive ? result.protocolTasksToLeaveAlone.push(task) : result.protocolTasksToAssign.push(task)\n } else {\n task.isActive ? result.protocolTasksToBeDeactivated.push(task) : result.protocolTasksToLeaveAlone.push(task)\n }\n })\n return result;\n }\n async assignProtocol(protocol, parentEpisodeOfCare, excludeModuleIds?) {\n let activeModules = {};\n protocol.modules?.forEach(module => {\n activeModules[module.protocolId] = !excludeModuleIds.includes[module.protocolId];\n })\n await this.PatientService.assignProtocol({\n protocol: protocol,\n patient: this.patient.carePatient,\n modules: activeModules,\n episodeOfCare: parentEpisodeOfCare,\n });\n }\n async assignProcedure(parentEpisodeOfCare) {\n let episodeOfCare: any = { isActive: true };\n episodeOfCare.procedureName = parentEpisodeOfCare\n ? parentEpisodeOfCare.name\n : 'Procedure';\n if (parentEpisodeOfCare && parentEpisodeOfCare.shortName) {\n episodeOfCare.procedureShortName = parentEpisodeOfCare.shortName;\n }\n if (parentEpisodeOfCare && parentEpisodeOfCare.extendedFields) {\n episodeOfCare.extendedFields = parentEpisodeOfCare.extendedFields;\n }\n episodeOfCare.procedureTimeZoneName = this.patient.professional?.currentTimeZoneName || this.patient.currentTimeZoneName || Intl.DateTimeFormat().resolvedOptions().timeZone;\n return await this.PatientService.assignEpisodeOfCare({ episodeOfCare: episodeOfCare, patient: this.patient.carePatient })\n }\n async activateOrDeactivateProtocol(protocol, activate: boolean, excludeModuleIds?: string[]) { // excludeModuleIds => list of modules that should not be activated\n if (this.doesProtocolHaveTwilioFlowTask(protocol) && !this.isPhoneValid(this.phoneNumber)) return;\n\n if (activate) {\n if (protocol.parentEpisodeOfCare?._id && protocol._id) { // already assigned, just need to reactive\n let tasksToReactivate = protocol?.tasks.filter( task => task._id)\n let tasksToAssign = protocol?.tasks.filter( task => !task._id)\n try {\n tasksToReactivate.length ? await this.activateDeactivateTasks(tasksToReactivate, true) : await this.assignProtocol(protocol, protocol.parentEpisodeOfCare, excludeModuleIds)\n } catch(error) {\n console.error(error)\n }\n } else {\n let parentEpisodeOfCare = this.availableProceduresByName[protocol.parentEpisodeOfCare?.name];\n if (!protocol.parentEpisodeOfCare?._id) {\n parentEpisodeOfCare = await this.assignProcedure(protocol.parentEpisodeOfCare);\n }\n await this.assignProtocol(protocol, parentEpisodeOfCare, excludeModuleIds)\n }\n } else {\n await this.activateDeactivateTasks(protocol?.tasks || [], false)\n for (let module of protocol.modules) {\n if (module.isActive && !(excludeModuleIds?.includes[module.protocolId]))\n await this.PatientService.activateOrDeactivateModule({\n userId: this.patient.carePatient._id,\n episodeOfCareId: module.parentProtocol.parentEpisodeOfCare._id,\n protocolId: module.parentProtocol.protocolId,\n moduleId: module.protocolId,\n activate: false,\n });\n await this.activateDeactivateTasks(module.assignedTasks || [], false);\n }\n }\n this.toastr.success(`Protocol ${protocol?.name} is successfully ${activate ? 'activated' : 'deactivated'}.`)\n };\n async activateDeactivateTasks(tasks, activate: boolean) {\n for(let task of tasks){\n try{\n if(task.isActive != activate) {\n await this.PatientService.activateOrDeactivateTask(task, activate);\n task.isActive = activate\n }\n } catch(error) {\n console.error(error)\n throw error\n }\n }\n }\n expandCollapseAll(expand: boolean, index: number) {\n this.availableProcedures?.[index]?.protocols?.forEach((p) => {\n p.isOpen = expand;\n p.modules?.forEach((m) => {\n m.isOpen = expand;\n });\n });\n }\n\n // Helpers\n getSwimlaneForTask(t: Task): 'once' | 'daily' | 'weekly' | 'monthly' {\n // @ts-ignore\n let ruleText = t?.relativeSchedule?.recurRule?.toLowerCase();\n if (!ruleText) {\n return 'once';\n }\n if (ruleText.indexOf('freq=daily') >= 0) {\n return 'daily';\n } else if (ruleText.indexOf('freq=weekly') >= 0) {\n return 'weekly';\n } else if (ruleText.indexOf('freq=monthly') >= 0) {\n return 'monthly';\n } else {\n // Not a valid value, really.\n return 'once';\n }\n }\n tasksForSwimlane(\n tasks: Array,\n swimlane: 'once' | 'daily' | 'weekly' | 'monthly'\n ) {\n if (!tasks) {\n return [];\n }\n return tasks.filter((t) => swimlane == t.swimlane);\n }\n\n /** Calculate the effect of assigning/activating/deactivating a module */\n public getModuleActivateDeactivateInfo(\n mod,\n activate: boolean\n ) {\n let result = {\n module: mod,\n operation: null,\n tasksToAssign: [],\n tasksToActivate: [],\n tasksToBeDeactivated: [],\n tasksNotToBeDeactivated: [],\n tasksToLeaveAlone: [],\n protocolInfo: null,\n procedure: null\n };\n let protocol = this.protocolsById[mod.parentProtocol?.protocolId]\n try {\n if (activate) {\n const moduleIsAssigned = mod.stateHistory?.find(\n (sh) => sh.state === 'active'\n );\n if (moduleIsAssigned) {\n result.operation = 'Activate';\n _.each(mod.assignedTasks, (t) => {\n if (!t.isActive) {\n result.tasksToActivate.push(t);\n } else {\n result.tasksToLeaveAlone.push(t);\n }\n });\n } else {\n result.operation = 'Assign';\n _.each(mod.templateTasks, (tt) => {\n let t = this.findAssignedTaskByProtocolTaskId(tt.protocolTaskId);\n if (t) {\n // Is assigned\n if (t.isActive) {\n result.tasksToLeaveAlone.push(t);\n } else {\n result.tasksToActivate.push(t);\n }\n } else {\n result.tasksToAssign.push(tt);\n }\n });\n }\n if(!protocol?.isActive) {\n result = {...result, ...this.getProtocolActivateDeactivateInfo(protocol, activate)}\n }\n } else {\n result.operation = 'Deactivate';\n // Tasks to be deactivated will be unless they are in another module and already active.\n _.each(mod.assignedTasks, (t) => {\n if (this.isTaskActiveInAnotherModule(t._id, mod)) {\n result.tasksNotToBeDeactivated.push(t);\n } else {\n result.tasksToBeDeactivated.push(t);\n }\n });\n\n if(protocol?.isActive && !(protocol?.tasks.filter(t => t.isActive).length)) { // check if protocol is active and has no active tasks\n result = {...result, ...this.getProtocolActivateDeactivateInfo(protocol, activate)}\n }\n }\n\n return result;\n\n } catch (error) {\n console.error(error)\n }\n }\n\n public findAssignedTaskByProtocolTaskId(\n protocolTaskId: string\n ): ProtocolTaskViewModel {\n try{\n for (let i = 0; i < this.availableProcedures.length; i++) {\n let e = this.availableProcedures[i];\n for (let j = 0; j < e.protocols.length; j++) {\n let p = e.protocols[j];\n for (let k = 0; k < p.tasks.length; k++) {\n let t = p.tasks[k];\n if (t.protocolTaskId === protocolTaskId) {\n return t;\n }\n }\n if (p.modules) {\n for (let l = 0; l < p.modules.length; l++) {\n const assignedTasks = p.modules[l]?.assignedTasks;\n if (assignedTasks) {\n for (let m = 0; m < assignedTasks.length; m++) {\n let at = assignedTasks[m];\n if (protocolTaskId === at.protocolTaskId) {\n return at;\n }\n }\n }\n }\n }\n }\n }\n } catch (error){\n console.error(error)\n }\n\n return null;\n }\n public isTaskActiveInAnotherModule(\n taskId: string,\n mod: EpisodeOfCareModuleAssignmentViewModel\n ) {\n return this.availableProcedures?.find((e) => {\n return e.protocols?.find((p) => {\n return p.modules?.find((mm) => {\n if (mm === mod) {\n return false;\n }\n if (mm.state !== 'active') {\n return false;\n }\n // REVIEW - not sure why assignedTasks is sometimes undefined\n if (!mm.assignedTasks) {\n return false;\n }\n return mm.assignedTasks.find((at) => {\n return taskId === at._id;\n });\n });\n });\n });\n }\n\n /** Get tasks from the module, which is a protocol */\n templateTasksForModule(\n mod: wpapi.model.Protocol,\n protocolId: string\n ): Array {\n if (mod) {\n return (\n mod.tasks?.filter(\n (t) =>\n t.type !== 'patientsatisfaction' || t.subType !== 'wellpepper'\n ).map((t) => {\n const copy: wpapi.model.ProtocolTask & { swimlane?: string } =\n _.cloneDeep(t);\n copy.swimlane = this.getSwimlaneForTask(t as Task);\n return copy;\n })\n ); // Make sure we don't change template tasks.\n }\n return [];\n }\n\n getTaskTypeText(task: ProtocolTaskViewModel) {\n if (!task.type) {\n return 'Exercise';\n }\n var s = task.type.toLowerCase();\n s = s.toLowerCase();\n switch (s) {\n case 'activitytracker':\n s = 'activity tracker';\n break;\n case 'aboutinfo':\n s = 'about info';\n break;\n case 'painmedication':\n s = 'pain medication';\n break;\n case 'startdoing':\n s = 'start doing';\n break;\n case 'stopdoing':\n s = 'stop doing';\n break;\n case 'patientsatisfaction':\n s = 'patient satisfaction';\n if (task.subType === 'wellpepper') {\n s += ' (Wellpepper)';\n }\n break;\n case 'didyoufall':\n s = 'did you fall';\n break;\n case 'quicktips':\n s = 'quick tips';\n break;\n case 'videodiary':\n s = 'video diary';\n break;\n case 'food diary':\n case 'fooddiary':\n s = 'food diary';\n break;\n case 'meddiary':\n s = 'med diary';\n break;\n case 'goaltracking':\n s = 'goal';\n break;\n case 'bloodpressure':\n s = 'blood pressure';\n break;\n case 'bloodsugar':\n s = 'blood sugar';\n break;\n case 'tasksetup':\n switch ((task.subType || '').toString().toLowerCase()) {\n case 'activity':\n s = 'activity';\n break;\n case 'weight':\n s = 'weight';\n break;\n case 'bloodpressure':\n s = 'blood pressure';\n break;\n default:\n s = 'tracking';\n break;\n }\n break;\n case 'educationvideo':\n case 'educationwebvideo':\n s = 'education video';\n break;\n case 'weighttracker':\n s = 'weight tracker';\n break;\n }\n s = s.replace(/_/g, ' ');\n return s.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n }\n\n doesProtocolHaveTwilioFlowTask(protocol: Protocol): boolean {\n return !!protocol.tasks?.find(t => t.type == \"twilioStudioFlow\");\n }\n isPhoneValid(phoneNumber: string): boolean {\n return this.PatientService.isPhoneNumberFormatValid(phoneNumber)\n }\n\n async updatePhoneNumber() {\n if (this.patient.phoneNumber == this.phoneNumber || !this.isPhoneValid(this.phoneNumber)) return\n try {\n let newPhoneNumber: string = this.phoneNumber?.replace(/\\D+/g, '');\n await this.PatientService.updateCarePatient(this.patient.carePatient._id, {\n phoneNumber: newPhoneNumber,\n identifiers: [{\n issuer: PatientIdentifiersIssuers.SmsCarePlanPhoneNumber,\n type: 'custom',\n subject: this.PatientService.formatPhoneNumberForTwilio(newPhoneNumber),\n createdAt: new Date().toDateString(),\n provider: 'custom',\n canBeUpdated: true\n }]\n })\n await this.PatientService.updateTrackPatient(this.tierId, this.tierNum, {\n email: this.patient.email,\n preferredName: this.patient.nickName?.trim() || this.patient.preferredName || \"\",\n phone: newPhoneNumber,\n tierID: this.tierId,\n tierNum: this.tierNum,\n carePatientId: this.patient.carePatient._id,\n mbi: this.patient.mbi,\n firstName: this.patient.firstName,\n lastName: this.patient.lastName,\n middleName: this.patient.middleName,\n dateOfBirth: this.patient.dob,\n gender: this.patient.gender[0].toUpperCase(),\n chPatId: Number(this.patient.chPatId),\n ChPatID: Number(this.patient.chPatId),\n supplementalId: this.patient.trackPatient.supplementalID\n })\n this.patient.phoneNumber = _.cloneDeep(this.phoneNumber)\n } catch (error) {\n console.error(error)\n return\n }\n }\n}\n","
\n
\n
\n \n
\n \n
\n \n \n
\n
\n Click to edit\n {{name}}\n
\n
\n {{name}}\n
\n
\n \n
\n
\n
\n
\n \n Starts: {{ startDate | date : \"mediumDate\" }}\n \n
\n
\n
\n
\n \n Ends: {{ endDate | date : \"mediumDate\" }}\n \n
\n
\n
\n
\n \n Repeats: {{ recurrenceText | uppercase }}\n \n
\n
\n
\n
\n \n Goal: {{ goalText | titlecase }}\n \n
\n
\n
\n
\n
\n {{ taskTypeText }}\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n
{{clonedTask.name}}
\n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n\n \n \n \n
\n
\n \n \n
\n
\n
\n
Between
\n
\n
\n
\n \n \n
\n
\n
and
\n
\n
\n
\n \n \n \n
\n
\n
{{bloodPressureTask.goals.current.unit}}
\n
\n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
Below
\n
\n
\n
\n \n \n
\n
\n
or above
\n
\n
\n
\n bloodPressureTask.configurableFields.systolicAlerts.systolicAlertRange.value[0] ? bloodPressureTask.configurableFields.systolicAlerts.systolicAlertRange.value[0] : bloodPressureTask.configurableFields.systolicAlerts.systolicAlertRange.value[0]}}\" \n max=\"{{bloodPressureTask.configurableFields.systolicAlerts.systolicAlertRange.upperValue.max\">\n \n bloodPressureTask.configurableFields.systolicAlerts.systolicAlertRange.value[0] ? bloodPressureTask.configurableFields.systolicAlerts.systolicAlertRange.value[0] : bloodPressureTask.configurableFields.systolicAlerts.systolicAlertRange.value[0]}}\" \n max=\"{{bloodPressureTask.configurableFields.systolicAlerts.systolicAlertRange.upperValue.max\">\n
\n
\n
{{bloodPressureTask.goals.current.unit}}
\n
\n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
Below
\n
\n
\n bloodPressureTask.configurableFields.pulseAlerts.pulseAlertRange.value[1] ? bloodPressureTask.configurableFields.pulseAlerts.pulseAlertRange.value[1] : bloodPressureTask.configurableFields.pulseAlerts.pulseAlertRange.lowerValue.max}}\">\n
\n
\n
or above
\n
\n
\n bloodPressureTask.configurableFields.pulseAlerts.pulseAlertRange.value[0] ? bloodPressureTask.configurableFields.pulseAlerts.pulseAlertRange.upperValue.min : bloodPressureTask.configurableFields.pulseAlerts.pulseAlertRange.value[0]}}\" \n max=\"{{bloodPressureTask.configurableFields.pulseAlerts.pulseAlertRange.upperValue.max}}\"\n >\n
\n
\n
bpm
\n
\n
\n
\n
\n\n \n \n \n
\n
\n \n \n
\n
\n
\n
Between
\n
\n
\n \n
\n
\n
and
\n
\n
\n \n
\n
\n
{{weightTask.goals.current.unit}}
\n
\n
\n
\n \n
\n
\n \n \n
\n
Gained 3 lbs in 1 day OR
\n
Gained 5 lbs since the last measurement
\n
Alerting thresholds per 2017 ACC/AHA/HFSA guidelines
\n
\n
\n\n \n \n \n
\n
\n \n \n
\n
\n
\n
Between
\n
\n
\n \n
\n
\n
and
\n
\n
\n \n
\n
\n
{{bloodSugarTask.goals.current.unit}}
\n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
Below
\n
\n
\n \n
\n
\n
or above
\n
\n
\n bloodSugarTask.configurableFields.bloodSugarAlerts.bloodSugarAlertRange.value[0] ? bloodSugarTask.configurableFields.bloodSugarAlerts.bloodSugarAlertRange.lowerValue.min : bloodSugarTask.configurableFields.bloodSugarAlerts.bloodSugarAlertRange.value[0]}}\" \n max=\"{{bloodSugarTask.configurableFields.bloodSugarAlerts.bloodSugarAlertRange.lowerValue.max}}\">\n
\n
\n
{{bloodSugarTask.goals.current.unit}}
\n
\n
\n
\n
\n \n
\n
\n \n
\n \n \n
\n
\n \n
\n
\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { Patient } from '@shared/models/patient';\nimport { PatientService } from '@shared/services/patient/patient.service';\nimport _ from 'lodash';\nimport * as moment from 'moment'\nimport { BloodPressureTask } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/wpapi-model';\n/** Get only the date part from a date string that contains time zone offset */\nfunction normalizedDateFromDateWithOffset(dateString:string):Date {\n const year = parseInt(dateString.substr(0, 4));\n const month = parseInt(dateString.substr(5,2));\n const day = parseInt(dateString.substr(8,2));\n return new Date(year, month-1, day);\n}\n\nexport interface TaskViewModel extends wpapi.model.Task {\n systolicDiastolicAlertOn? : boolean;\n weightAlertOn?: boolean;\n pulseAlertOn?: boolean;\n bloodSugarAlertOn?: boolean;\n}\n\n@Component({\n selector: 'coach-careplan-patient-task',\n templateUrl: './patient-task.component.html',\n styleUrls: ['./patient-task.component.scss']\n})\nexport class PatientTaskComponent implements OnInit {\n public editModalIsOpen: boolean = false\n constructor(private PatientService:PatientService) { }\n @Input() templateTask: wpapi.model.ProtocolTask;\n @Input() assignedTask: wpapi.model.Task;\n @Input() patient: Patient;\n @Input() tier: IHierarchyTier;\n @Input() isDisabled?: boolean;\n @Output() updated = new EventEmitter();\n isActive: boolean = false;\n get tierId() {\n return this?.tier?.selectedTierId;\n }\n clonedTask: TaskViewModel;\n\n get repeatingTask() {\n if (wpapi.model.isRepeatingTask(this.clonedTask)) {\n return this.clonedTask;\n }\n return null;\n }\n get weightTask() {\n if (wpapi.model.isWeightTask(this.clonedTask)) {\n return this.clonedTask;\n }\n return null;\n }\n get bloodPressureTask() {\n if (wpapi.model.isBloodPressureTask(this.clonedTask)) {\n return this.clonedTask;\n }\n return null;\n }\n get bloodSugarTask() {\n if (wpapi.model.isBloodSugarTask(this.clonedTask)) {\n return this.clonedTask;\n }\n }\n today:Date = new Date()\n ngOnInit(): void {\n this.isActive = this.assignedTask?.isActive;\n }\n // Event handlers\n async toggleIsActive(overWriteStatus?: boolean) {\n if (overWriteStatus) {\n this.isActive = overWriteStatus;\n }\n if (this.assignedTask) {\n try {\n await this.PatientService.activateOrDeactivateTask(this.assignedTask, this.isActive);\n this.assignedTask.isActive = this.isActive;\n this.updated.emit(this.assignedTask);\n } catch (error) {\n console.error(error)\n }\n }\n }\n\n public get id() {\n return this.assignedTask?._id\n }\n public get name() {\n if (this.assignedTask) {\n return this.assignedTask.name;\n }\n if (this.templateTask) {\n return this.templateTask.name;\n }\n return \"(uninitialized)\";\n }\n\n public get startDate():Date {\n const startDate = this?.assignedTask?.startDate;\n if (!startDate) {\n return null;\n }\n return normalizedDateFromDateWithOffset(startDate);\n }\n\n public get endDate():Date {\n const endDate = this?.assignedTask?.endDate;\n if (!endDate) {\n return null;\n }\n return normalizedDateFromDateWithOffset(endDate);\n }\n\n public get taskTypeText() {\n const task = this.assignedTask || this.templateTask;\n if (!task) {\n return null;\n }\n if (!task.type) {\n return \"Exercise\";\n }\n var s = task.type.toString().toLowerCase();\n switch (s) {\n case 'twiliostudioflow':\n s = 'SMS PROGRAM';\n break;\n case 'activitytracker':\n s = 'activity tracker';\n break;\n case 'aboutinfo':\n s = 'about info';\n break;\n case 'painmedication':\n s = 'pain medication';\n break;\n case 'startdoing':\n s = 'start doing';\n break;\n case 'stopdoing':\n s = 'stop doing';\n break;\n case 'patientsatisfaction':\n s = 'patient satisfaction';\n if (task.subType === \"wellpepper\") {\n s += \" (Wellpepper)\";\n }\n break;\n case 'didyoufall':\n s = 'did you fall';\n break;\n case 'quicktips':\n s = 'quick tips';\n break;\n case 'videodiary':\n s = 'video diary';\n break;\n case 'food diary':\n case 'fooddiary':\n s = 'food diary';\n break;\n case 'meddiary':\n s = 'med diary';\n break;\n case 'goaltracking':\n s = 'goal';\n break;\n case \"bloodpressure\":\n s = \"blood pressure\";\n break;\n case \"bloodsugar\":\n s = \"blood sugar\";\n break;\n case 'tasksetup':\n switch ((task.subType || \"\").toString().toLowerCase()) {\n case \"activity\":\n s = 'activity';\n break;\n case \"weight\":\n s = 'weight';\n break;\n case \"bloodpressure\":\n s = \"blood pressure\"\n break;\n default:\n s = \"tracking\";\n break;\n }\n break;\n case 'educationvideo':\n case 'educationwebvideo':\n s = 'education video';\n break;\n case \"weighttracker\":\n s = \"weight tracker\";\n break;\n }\n s = s.replace(/_/g, ' ');\n return s.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n }\n\n /** This gets the recurrence from the recurrence configurableField, not the actual rrule */\n public get recurrenceText() {\n if (!this.assignedTask) {\n return null;\n }\n // REVIEW - not sure what the right way is of doing a type downcast is\n if (wpapi.model.isRepeatingTask(this.assignedTask)) {\n const recurTask = this.assignedTask;\n const repeatTextRaw = recurTask?.configurableFields?.recurrence?.repeatInterval.value;\n return repeatTextRaw;\n }\n return null;\n }\n\n public get goalText():string {\n if (!this.assignedTask) {\n return null;\n }\n\n if (wpapi.model.isWeightTask(this.assignedTask)) {\n const goals = this.assignedTask.goals;\n if (!goals || !goals.isGoalTrackingEnabled || !goals.current) {\n return null;\n }\n // return `${goals.current.weight} ${goals.current.unit}`;\n return `${goals.current.weight.rangeBottom} - ${goals.current.weight.rangeTop} ${goals.current.unit}`;\n } else if (wpapi.model.isBloodPressureTask(this.assignedTask)) {\n const goals = this.assignedTask.goals;\n if (!goals || !goals.isGoalTrackingEnabled || !goals.current) {\n return null;\n }\n return `${goals.current.systolic.rangeBottom}/${goals.current.diastolic.rangeBottom} - ${goals.current.systolic.rangeTop}/${goals.current.diastolic.rangeTop} ${goals.current.unit}`;\n } else if (wpapi.model.isBloodSugarTask(this.assignedTask)) {\n const goals = this.assignedTask.goals;\n if (!goals || !goals.isGoalTrackingEnabled || !goals.current) {\n return null;\n }\n return `${goals.current.bloodSugar.rangeBottom} - ${goals.current.bloodSugar.rangeTop} ${goals.current.unit}`;\n } else {\n return null;\n }\n }\n\n\n /*\n public get stateHistoryText(h:wpapi.model.EpisodeOfCareModuleAssignmentHistory) {\n let stateText:string;\n switch(h.state) {\n case \"active\":\n stateText = \"Activated\";\n break;\n case \"available\":\n stateText = \"Unlocked\";\n break;\n case \"inactive\":\n stateText = \"Deactivated\";\n break;\n case \"unavailable\":\n stateText = \"Locked\";\n break;\n default:\n stateText = \"Updated\";\n break;\n }\n\n let stateChangeByText = h.updatedBy ? \"by \" + this.getProfessionalName(h.updatedBy) : \"\";\n let stateChangeOnText = moment(h.effectiveDate || h.createdAt).format(\"ddd MMM D, YYYY HH:mm:ss\");\n\n return `${stateText} ${stateChangeOnText} ${stateChangeByText}`;\n }\n */\n\n public get taskId():string {\n return this.assignedTask?._id || null;\n }\n isTaskEditable(): boolean {\n if (!this.assignedTask || this.assignedTask['isLocked'] || !this.assignedTask.type) {\n return false;\n }\n\n switch (this.assignedTask.type) {\n case \"exercise\":\n case \"activityTracker\":\n case \"activity\":\n case \"bloodPressure\":\n case \"bloodSugar\":\n case \"weight\":\n case \"pain\":\n return true;\n case \"taskSetup\":\n switch(this.assignedTask.subType) {\n case \"activity\":\n return true;\n }\n break;\n default:\n return false;\n }\n }\n closeModalOnBackgroundClick(target: any): void {\n if(target.getAttribute('role') == 'modal-background'){\n this.editModalIsOpen = null\n }\n }\n openEditModal(): void {\n this.clonedTask = _.cloneDeep(this.assignedTask)\n if (wpapi.model.isRepeatingTask(this.clonedTask)) {\n if(this.clonedTask.configurableFields?.recurrence?.startDate?.value){\n this.clonedTask.configurableFields.recurrence.startDate.value = this.formatDateForDateInput(this.clonedTask.configurableFields.recurrence.startDate.value)\n }\n if(this.clonedTask.configurableFields?.recurrence?.endDate?.value){\n this.clonedTask.configurableFields.recurrence.endDate.value = this.formatDateForDateInput(this.clonedTask.configurableFields.recurrence.endDate.value)\n }\n this.clonedTask.configurableFields = Object.assign({recurrence: { startDate: {}, endDate: {}}}, this.clonedTask.configurableFields);\n }\n\n // assign goals\n if(!this.clonedTask.goals.history) this.clonedTask.goals.history = [];\n if(wpapi.model.isBloodPressureTask(this.clonedTask)){\n this.clonedTask.configurableFields = Object.assign({}, this.clonedTask.configurableFields);\n if (!this.clonedTask.goals.current) {\n this.clonedTask.goals.current = {\n createdAt: new Date().toISOString(),\n effectiveOn: new Date().toISOString(),\n unit:\"mmHg\",\n diastolic: {\n rangeBottom: null,\n rangeTop: null\n },\n systolic: {\n rangeBottom: null,\n rangeTop: null\n }\n };\n }\n if(this.clonedTask.configurableFields?.systolicAlerts?.systolicAlertIsActive && this.clonedTask.configurableFields?.diastolicAlerts?.diastolicAlertIsActive){\n this.clonedTask.systolicDiastolicAlertOn = this.clonedTask.configurableFields?.systolicAlerts?.systolicAlertIsActive?.value && this.clonedTask.configurableFields?.diastolicAlerts?.diastolicAlertIsActive?.value\n }\n if(this.clonedTask.configurableFields?.pulseAlerts?.pulseAlertIsActive){\n this.clonedTask.pulseAlertOn = this.clonedTask.configurableFields?.pulseAlerts?.pulseAlertIsActive?.value\n }\n } else if(wpapi.model.isWeightTask(this.clonedTask)){\n if (!this.clonedTask.goals.current) {\n this.clonedTask.goals.current = {\n createdAt: new Date().toISOString(),\n effectiveOn: new Date().toISOString(),\n unit: \"lb\",\n weight: {\n rangeBottom: null,\n rangeTop: null,\n }\n };\n }\n if(this.clonedTask.configurableFields?.weightAlerts?.weightAlertIsActive){\n this.clonedTask.weightAlertOn = this.clonedTask.configurableFields?.weightAlerts?.weightAlertIsActive?.value\n }\n }else if(wpapi.model.isBloodSugarTask(this.clonedTask)){\n if (!this.clonedTask.goals.current) {\n this.clonedTask.goals.current = {\n createdAt: new Date().toISOString(),\n effectiveOn: new Date().toISOString(),\n unit: \"mg/dL\",\n bloodSugar: {\n rangeBottom: null,\n rangeTop: null\n }\n };\n }\n if(this.clonedTask.configurableFields?.bloodSugarAlerts?.bloodSugarAlertIsActive){\n this.clonedTask.bloodSugarAlertOn = this.clonedTask.configurableFields?.bloodSugarAlerts?.bloodSugarAlertIsActive?.value\n }\n }\n\n this.editModalIsOpen = true\n }\n formatDateForDateInput(date: any): string {\n if(date && moment(date).isValid) return moment(date).format(\"YYYY-MM-DD\")\n return null\n }\n updateGoalsHistory(): any[]{ // not used\n let oldGoalRecord = this.assignedTask.goals.current;\n this.clonedTask.goals.history.push(oldGoalRecord)\n return this.clonedTask.goals.history\n }\n\n isBPAlertActive(task:BloodPressureTask): boolean {\n const cf = task?.configurableFields;\n return cf &&\n cf?.diastolicAlerts?.diastolicAlertIsActive.value ||\n cf?.systolicAlerts?.systolicAlertIsActive.value;\n }\n toggleBPAlertIsActive(task:BloodPressureTask): void {\n const isActive = this.isBPAlertActive(task);\n const cf = task?.configurableFields;\n if (cf?.diastolicAlerts?.diastolicAlertIsActive) {\n cf.diastolicAlerts.diastolicAlertIsActive.value = !cf.diastolicAlerts.diastolicAlertIsActive.value;\n }\n if (cf?.systolicAlerts?.systolicAlertIsActive) {\n cf.systolicAlerts.systolicAlertIsActive.value = !cf.systolicAlerts.systolicAlertIsActive.value;\n }\n }\n\n isDateBefore(date1: any, date2: any): boolean {\n return moment(date1).isBefore(date2)\n }\n isTaskValid(): boolean {\n if(this.repeatingTask?.configurableFields?.recurrence?.startDate?.value && this.repeatingTask?.configurableFields?.recurrence?.endDate?.value){\n return this.isDateBefore(this.repeatingTask.configurableFields.recurrence.startDate.value, this.repeatingTask.configurableFields.recurrence.endDate.value)\n }\n return true\n }\n getOriginalDate(date):string{\n return this.assignedTask.configurableFields?.['recurrence']?.[date]?.value || null\n }\n async saveTask() {\n /**\n * Steps:\n * 1. compare goal inputs\n * 2. compare start and end dates\n * 3. compare goal alerts\n * Save any differences between assignedTask and clonedTask\n */\n let result: any = {}\n\n // compare goals\n if(JSON.stringify(this.assignedTask.goals?.current) != JSON.stringify(this.clonedTask.goals?.current)){\n if(this.assignedTask.goals.current){\n this.clonedTask.goals.history.push(this.assignedTask.goals.current)\n }\n }\n result.goals = _.cloneDeep(this.clonedTask.goals);\n result.configurableFields = _.cloneDeep(this.clonedTask.configurableFields)\n result.configurableFields.recurrence.startDate.value = result.configurableFields.recurrence.startDate.value ? moment(result.configurableFields.recurrence.startDate.value).utcOffset(this.patient.currentTimeZoneOffsetSec/3600).format() : null\n result.configurableFields.recurrence.endDate.value = result.configurableFields.recurrence.endDate.value ? moment(result.configurableFields.recurrence.endDate.value).utcOffset(this.patient.currentTimeZoneOffsetSec/3600).format() : null\n let updateTaskConfirmation = await this.PatientService.updateTask(this.tierId, this.patient, this.assignedTask._id, result)\n if(updateTaskConfirmation){\n this.clonedTask.startDate = this.repeatingTask?.configurableFields?.recurrence?.startDate?.value\n this.clonedTask.endDate = this.repeatingTask?.configurableFields?.recurrence?.endDate?.value\n this.assignedTask = _.cloneDeep(this.clonedTask)\n this.editModalIsOpen = false;\n this.updated.emit(this.assignedTask);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport differenceInYears from 'date-fns/differenceInYears';\n\n@Pipe({\n name: 'age'\n})\n\nexport class GetAgeFromDOB implements PipeTransform {\n transform(value:number): number {\n if (value) {\n let age = differenceInYears(new Date(), new Date(value));\n return age\n } else {\n return null;\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'classesJoinTrim'\n})\nexport class ClassesJoinTrimPipe implements PipeTransform {\n transform(classes: string[]): string {\n if (classes && classes.length) {\n return classes.filter(this.isNotNull).join(' ').trim();\n } else {\n return null;\n }\n }\n public isNotNull(element) { \n return (element !== null);\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'mbi',\n})\nexport class MbiFormatPipe implements PipeTransform {\n transform(value: string): string {\n if (value && value.length) {\n return (\n value.substr(0, 4) + '-' + value.substr(4, 3) + '-' + value.substr(7, 4)\n );\n } else {\n return null;\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'initialsFromName'\n})\nexport class GetInitialsFromNamePipe implements PipeTransform {\n transform(name: string): string {\n if (name && name.length) {\n if(name.includes(\" \")) {\n return name.split(\"\")[0] + name.split(\" \").pop().split(\"\")[0];\n } else {\n return name.split(\"\")[0];\n }\n }else {\n return null;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { environment } from 'src/environments/environment';\n\n@Pipe({\n name: 'mask'\n})\nexport class MaskPipe implements PipeTransform {\n\n transform(value: string, maskCount?: number): string {\n if (value == null) {\n return '';\n }\n\n if (!environment.maskSensitiveData) {\n return value;\n }\n\n if (maskCount == null) {\n maskCount = value.length;\n }\n\n let maskedString = value.slice(maskCount + 1);\n maskedString = 'X'.repeat(maskCount) + maskedString;\n\n return maskedString;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'minuteSeconds'\n})\nexport class MinuteSecondsPipe implements PipeTransform {\n\n transform(value: number): string {\n const minutes: number = Math.floor(value / 60);\n const seconds: number = (value - minutes * 60);\n const displaySeconds = seconds > 9 ? seconds : '0' + seconds;\n return minutes + ':' + displaySeconds;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getNameFromMonthNumber } from '@shared/utilities';\n\n/**\n * Returns a formatted month value given a corresponding number (e.g. 0 => Jan, 1 => Feb, etc.)\n */\n@Pipe({\n name: 'monthNumber'\n})\nexport class MonthNumberPipe implements PipeTransform {\n\n transform(value: number, format: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' | undefined = undefined): string {\n return getNameFromMonthNumber(value, format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'phone'\n})\nexport class PhonePipe implements PipeTransform {\n\n transform(value: string): string {\n if (value == 'null null') {\n return '';\n }\n\n let cleaned = ('' + value).replace(/\\D/g, '');\n let match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\n if (match) {\n return `(${match[1]}) ${match[2]}-${match[3]} ${value.slice(-1)}`;\n }\n return '';\n }\n\n}","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'removeWhitespace'\n})\nexport class RemoveStringWhitespacePipe implements PipeTransform {\n transform(text: string): string {\n if (text && text.length) {\n return text.replace(/\\s/g, '');\n } else {\n return null;\n }\n }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'spacesToDashes'\n})\nexport class SpacesToDashesPipe implements PipeTransform {\n transform(text: string): string {\n if (text && text.length) {\n let output = text.toLowerCase();\n output = output.replace(/(^\\s+|[^a-zA-Z0-9 ]+|\\s+$)/g,\"\");\n output = output.replace(/\\s+/g, \"-\");\n return output;\n } else {\n return null;\n }\n }\n}","import { Injectable } from '@angular/core';\nimport {\n Router,\n NavigationEnd,\n ActivatedRoute,\n UrlTree,\n} from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\nimport { filter, distinctUntilChanged } from 'rxjs/operators';\nimport { ICurrentRoute } from '@shared/models/activated-route';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ActivatedRouteService {\n public activatedRoute$: BehaviorSubject;\n public currentUrl$: BehaviorSubject;\n public currentRoute$: BehaviorSubject;\n\n constructor(private _router: Router) {\n this.activatedRoute$ = new BehaviorSubject(null);\n this.currentUrl$ = new BehaviorSubject(null);\n this.currentRoute$ = new BehaviorSubject(null);\n this._router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n distinctUntilChanged()\n )\n .subscribe((e: NavigationEnd) => {\n if (e instanceof NavigationEnd) {\n var routerState = this._router.routerState;\n this.activatedRoute$.next(routerState.root);\n this.currentUrl$.next(\n this._router.parseUrl(routerState.snapshot.url)\n );\n this.getCurrentRoute(routerState.root);\n }\n });\n }\n\n public getCurrentRoute(route: ActivatedRoute): void {\n const r = route;\n const rc = r.routeConfig;\n if (r.firstChild) {\n this.getCurrentRoute(r.firstChild);\n } else {\n this.currentRoute$.next({ label: rc?.data?.label, path: rc?.path });\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service'\nimport { PatientViewModel } from '@shared/models/patient'\nimport { IPatientFilterPreset } from '@shared/models/patient-filters';\nimport _ from 'lodash';\nimport { BehaviorSubject } from 'rxjs';\nexport class FilterSettings {\n rows: AgGridTableFilterSetting[]\n}\nimport { AgGridTableFilterSetting, filterSettings } from '@care/views/care-patients/care-patients-filters/filter-settings'\nexport const AG_GRID_LOCALE_CARE = {\n // overwrites agGrid wordings (CC-2939)\n selectAll: 'All',\n blanks: 'None',\n empty: 'Unset'\n}\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { CarePatientItem, PresetCategory } from '@shared/models/module-constants';\nimport { ColDef, ColumnApi, ColumnState, GridApi } from 'ag-grid-community';\nexport const dateFormat = 'MM/dd/yyyy';\n@Injectable({\n providedIn: 'root'\n})\nexport class AgGridLocalSettingsService {\n columnSettings: { [key: string]: any } = {}\n user: wpapi.model.Professional;\n filterSettings = filterSettings\n private currentFilterSettingsObservable = new BehaviorSubject(null)\n currentFilterSettings = this.currentFilterSettingsObservable.asObservable()\n constructor(private authService: AuthService) {\n this.storeUser()\n }\n async storeUser() {\n if (!this.user) {\n this.user = await this.authService.getWellpepperUserInfo()\n }\n }\n // checks whether there are new options available and removes old ones\n updateFilterSettings(preset: IPatientFilterPreset, patients: Array, useDefaultFilterModel?: boolean, currentFilterModel?: {[key: string]: any}): AgGridTableFilterSetting[] {\n let settingsObj = _.clone(preset.filterSettings.rows)\n let defaultFilterModel = preset.defaultFilterModel\n if (settingsObj.length > 0) {\n\n // CC-2893 need to clear old values from options lists\n settingsObj.forEach( s => {\n if(s.type == 'set'){\n s.options = []\n }\n })\n\n let set;\n let attributedCPtierByName = {}\n patients.forEach(patient => {\n if(patient.attributedCP && !attributedCPtierByName[patient.attributedCP]) {\n attributedCPtierByName[patient.attributedCP] = patient.attributedCPTier\n }\n for (let s in settingsObj) {\n set = settingsObj[s]\n if(set.type == 'set'){\n let value = patient[set.name] || 'None'\n if (set.list) {\n patient[set.name]?.forEach(s => {\n value = s || 'None'\n if (!set.options.includes(value) && set.type == 'set') { // && !set.excluded.includes(value)\n set.options.push(value)\n }\n })\n if (patient[set.name]?.length == 0 && !set.options.includes('None')) {\n set.options.push('None')\n }\n } else {\n if (!set.options.includes(value) && set.type == 'set') { // && !set.excluded.includes(value)\n set.options.push(value)\n }\n }\n }\n }\n })\n settingsObj.forEach(set => {\n if(useDefaultFilterModel && defaultFilterModel[set.name]?.values) {\n set.excluded = (set.excluded || []).concat(set.options?.filter(option => !defaultFilterModel[set.name].values.includes(option) && !set.excluded.includes(option) ));\n set.options = set.options?.filter(option => defaultFilterModel[set.name].values.includes(option));\n }\n if (set.type == 'set') {\n set.excluded = set.excluded.filter(exl => set.options.includes(exl)); // remove non-existing options from excluded list\n set.options.sort((a: string, b: string) => {\n if (a == 'None' || a == 'N/A') return -1\n if (b == 'None' || b == 'N/A') return 1\n if (set.name == 'attributedCP') {\n return a.localeCompare(b) || attributedCPtierByName[a] - attributedCPtierByName[b]\n }\n return a > b ? 1 : -1\n });\n set.excluded.sort((a: string, b: string) => {\n if (a == 'None' || a == 'N/A') return -1\n if (b == 'None' || b == 'N/A') return 1\n if (set.name == 'attributedCP') {\n return a.localeCompare(b) || attributedCPtierByName[a] - attributedCPtierByName[b]\n }\n return a > b ? 1 : -1\n });\n };\n if(currentFilterModel?.[set.name]) {\n let newFilterValues = currentFilterModel?.[set.name];\n if (newFilterValues) {\n if (newFilterValues.values) {\n set.excluded = set.options.filter(option => !newFilterValues.values.includes(option == 'None' ? null : option));\n // set.options = newFilterValues.values;\n } else if (newFilterValues.filterType == 'date') {\n set = { ...set, ...newFilterValues };\n }\n } else {\n if (set.excluded) {\n set.excluded = [];\n } else {\n set.dateFrom = null;\n set.dateTo = null;\n set.filter = null;\n set.filterTo = null;\n }\n }\n }\n });\n this.updateCurrentFilterSettingsObservable(settingsObj);\n }\n return settingsObj\n }\n updateCurrentFilterSettingsObservable(settingsObj: AgGridTableFilterSetting[]): void {\n this.currentFilterSettingsObservable.next({ rows: settingsObj });\n }\n applyFilterSettings(settingsObj: AgGridTableFilterSetting[], gridApi: GridApi, keepPreviousFilterModel: boolean, storedFilterModel: {[key: string]: any;}) {\n let filterObj = {}\n let helperShortcuts = {\n 'None': null\n }\n for (let f in settingsObj) {\n let filter = settingsObj[f]\n if (!filter.name || (!filter.filterType && !filter.type)) {\n continue\n }\n try{\n if (filter.type == 'set') {\n if(!filter.options){\n continue\n }\n let values = filter.options.filter(o => !filter.excluded.includes(o)) || []\n for (let v in values) {\n values[v] = values[v] in helperShortcuts ? helperShortcuts[values[v]] : values[v]\n }\n filterObj[filter.name] = {\n type: filter.type,\n values: values\n }\n } else {\n if(!filter.type) {\n filter.type = 'unset';\n // need to reset filter model, otherwise it will be applied to the grid\n const filterInstance = gridApi.getFilterInstance(filter.name); \n filterInstance.setModel(null);\n } else {\n filterObj[filter.name] = filter;\n }\n\n }\n\n } catch(error) {\n console.error(error)\n }\n }\n // make sure to remove elements that have empty list of options, so they won't cause any problems with filter model\n try{\n // leave it for now, might be useful in the future\n // let filterModel = storedFilterModel.filter(row => row.list && !row.options.length ? false : true ) || gridApi?.getFilterModel(); // either keeps current filter model or pulls a stored one from local storage\n let newFilterModel = { ...gridApi?.getFilterModel(), ...filterObj };\n if (storedFilterModel && Object.keys(storedFilterModel)?.length) {\n newFilterModel = { ...newFilterModel, ...storedFilterModel }\n }\n gridApi?.setFilterModel(newFilterModel);\n } catch(error) {\n console.error(error)\n }\n }\n\n /**\n * localStorage keys:\n * `agGrid_${categoryName}_storedPresetNames_${userId}` = stores all custom preset/filter names (string[])\n * `agGrid_${categoryName}_${filterName}_${userId}` = stores custom preset/filter\n * `agGrid_${categoryName}_${filterName}_filter_settings_${userId}` = stores all filters' settings\n */\n\n async retrieveAllCustomPresets(categoryName: string, originColumns: Array<{[key: string]: boolean | string}>): Promise {\n if (!this.user) {\n await this.storeUser()\n }\n let storedCategoryList: string[] = this.getStoredPresetsFromLocalStorage(categoryName, this.user?._id)\n let presets = []\n if (storedCategoryList?.length > 0) {\n storedCategoryList.forEach(filterName => {\n try {\n let preset: IPatientFilterPreset = this.getStoredPresetFromLocalStorage(categoryName, filterName, this.user?._id)\n if (preset) {\n preset.columns = originColumns;\n presets.push(preset)\n }\n } catch (error) {\n console.warn('retrieveAllCustomPresets: something went wrong', error)\n }\n });\n }\n return presets\n }\n\n async addNewCustomPreset(categoryName: PresetCategory, filterName: CarePatientItem, originPreset: IPatientFilterPreset, filterSettings: FilterSettings) {\n if (!this.user) {\n await this.storeUser();\n }\n let newPreset = _.cloneDeep(originPreset);\n newPreset.category = categoryName;\n newPreset.name = filterName;\n newPreset.label = filterName;\n newPreset.presetKey = filterName;\n newPreset.origin = originPreset.name;\n newPreset.filterSettings = filterSettings\n newPreset.temporary = false;\n let storedCategoryList: string[] = this.getStoredPresetsFromLocalStorage(categoryName, this.user?._id)\n if (!storedCategoryList?.includes(filterName)) {\n storedCategoryList ? storedCategoryList.push(filterName) : storedCategoryList = [filterName]\n this.storeStoredPresetsInLocalStorage(categoryName, this.user?._id, storedCategoryList)\n }\n this.storeStoredPresetInLocalStorage(newPreset.category, newPreset.name, this.user?._id, newPreset)\n this.storeFilterSettingsInLocalStorage(newPreset.category, newPreset.name, newPreset.filterSettings)\n return newPreset;\n }\n\n\n\n async deleteCustomPreset(categoryName: string, filterName: string, versionKey: string) {\n if (!this.user) {\n await this.storeUser();\n }\n this.removeFilterFromStoredPresetsInLocalStorage(categoryName, filterName, this.user?._id)\n this.removeStoredPresetFromLocalStorage(categoryName, filterName, this.user?._id)\n this.removeColumnSettingsFromLocalStorage(filterName, versionKey, this.user?._id)\n this.removeFilterSettingsFromLocalStorage(categoryName, filterName, this.user?._id)\n this.removeFilterModelFromLocalStorage(categoryName, filterName, this.user?._id)\n }\n\n async renameCustomPreset(categoryName: PresetCategory, oldFilterName: CarePatientItem, newFilterName: CarePatientItem, versionKey: string) {\n if (!this.user) {\n await this.storeUser();\n }\n\n // replace preset in storedPresets\n let presets = this.getStoredPresetsFromLocalStorage(categoryName, this.user?._id)\n if(presets){\n for(let p in presets) {\n if(presets[p] == oldFilterName){\n presets[p] = newFilterName\n }\n }\n this.storeStoredPresetsInLocalStorage(categoryName, this.user?._id, presets)\n }\n\n // replace stored preset\n let preset = this.getStoredPresetFromLocalStorage(categoryName, oldFilterName, this.user?._id)\n if(preset){\n preset.name = newFilterName\n preset.label = newFilterName\n this.storeStoredPresetInLocalStorage(categoryName, newFilterName, this.user?._id, preset) // store new filter preset\n this.removeStoredPresetFromLocalStorage(categoryName, oldFilterName, this.user?._id) // delete old one\n }\n // replace column settings\n let columnSettings = this.getColumnSettingsFromLocalStorage(oldFilterName,versionKey, this.user?._id)\n if(columnSettings){\n this.storeColumnSettingsInLocalStorage(newFilterName, columnSettings,versionKey)\n this.removeColumnSettingsFromLocalStorage(oldFilterName, versionKey, this.user?._id)\n }\n\n // replace filter settings\n let filterSettings = await this.getStoredFilterSettingsFromLocalStorage(categoryName, oldFilterName, this.user?._id, CarePatientItem.AllPatients)\n if(filterSettings) {\n this.storeFilterSettingsInLocalStorage(categoryName, newFilterName, filterSettings)\n this.removeFilterSettingsFromLocalStorage(categoryName, oldFilterName, this.user?._id)\n }\n\n let filterModel = await this.getStoredFilterModelFromLocalStorage(categoryName, oldFilterName)\n if(filterModel) {\n this.storeFilterModelInLocalStorage(categoryName, newFilterName, filterModel)\n this.removeFilterModelFromLocalStorage(categoryName, oldFilterName, this.user?._id)\n }\n }\n\n // ======================= localStorage Column Settings getters and setters =======================\n\n async storeColumnSettingsInLocalStorage(presetName: string, settings: ColumnState[],versionKey:string) {\n if (!this.user) {\n await this.storeUser();\n }\n this.columnSettings[`${this.user._id}_${presetName}`] = settings\n const localStorageKey = versionKey || this.getPresetLocalStorageKey(presetName,this.user._id);\n localStorage.setItem(localStorageKey, JSON.stringify(settings || {}))\n }\n setColumnSettings(columnApi: ColumnApi, presetName: string, userId: string, versionKey: string, hiddenColumnsByDefault?: string[]) {\n if (!columnApi || !presetName) {\n console.warn('AgGridLocalSettingsService setColumnSettings:', `columnApi ${columnApi ? 'is here' : 'not found'}`, `presetName ${presetName ? 'is here' : 'not found'}`)\n return;\n }\n let storedColumnSettings = this.getColumnSettingsFromLocalStorage(presetName,versionKey, userId)\n const columnState = columnApi.getColumnState(); // columnApi must be defined, it's checked earlier\n if (storedColumnSettings) {\n const defaultSortModelByColId: { [key: string]: string } = {};\n if (columnState?.length > 0) {\n // in order to prevent aggrid adding new columns to the begging of the table\n const columnDifferences = columnState.filter(x => storedColumnSettings.filter(y => y.colId == x.colId).length < 1) || [];\n storedColumnSettings = storedColumnSettings.filter(x => columnState.filter(y => y.colId == x.colId).length > 0).concat(columnDifferences); // remove old columns that don't exist anymore\n const storedSortModel = storedColumnSettings.map(cs => { return cs.sort ? { colId: cs.colId, sort: cs.sort } : null }).filter(cs => cs);\n\n // check whether sort model is not stored in localStorage, then apply default sort model\n if (storedSortModel.length < 1) {\n columnState.forEach(cs => {\n if (cs.sort) {\n defaultSortModelByColId[cs.colId] = cs.sort\n }\n });\n storedColumnSettings.forEach(cs => {\n cs.sort = defaultSortModelByColId[cs.colId] as any;\n });\n }\n columnApi.applyColumnState({state: storedColumnSettings });\n }\n\n } else if(hiddenColumnsByDefault){\n // if stored settings are not found in localStorage, then hide columns that are mentioned in hiddenColumnsByDefault\n if (columnState) {\n columnState.forEach( cs => {\n cs.hide = hiddenColumnsByDefault.includes(cs.colId);\n })\n columnApi.applyColumnState({state: storedColumnSettings })\n }\n }\n }\n\n getPresetLocalStorageKey(presetName: string, userId?: string) {\n if (presetName === CarePatientItem.AwvOpportunities) {\n return `columnState_v2_${userId || this.user._id}_${presetName}`;\n }\n return `columnState_${userId || this.user._id}_${presetName}`;\n }\n\n getColumnSettingsFromLocalStorage(presetName: string, versionKey: string, userId?: string): ColumnState[] {\n if (!userId && !this.user) {\n console.warn('AgGridLocalSettingsService getColumnSettingsFromLocalStorage: user isn\\'t found', presetName)\n return null\n }\n const localStorageKey = versionKey || this.getPresetLocalStorageKey(presetName,userId);\n return this.columnSettings[`${userId || this.user._id}_${presetName}`] || JSON.parse(localStorage.getItem(localStorageKey) || null)\n }\n getColumnSettingsFromLocalStorageWithCategory(category: string, presetName: string, userId?: string): ColumnState[] {\n if (!userId && !this.user) {\n console.warn('AgGridLocalSettingsService getColumnSettingsFromLocalStorage: user isn\\'t found', presetName)\n return null\n }\n\n category = category.replace(' ','_');\n presetName = presetName.replace(' ','_');\n return this.columnSettings[`${userId || this.user._id}_${presetName}`] || JSON.parse(localStorage.getItem(`columnState_${userId || this.user._id}_${category}-${presetName}`) || null)\n }\n removeColumnSettingsFromLocalStorage(filterName: string, versionKey: string, userId: string): void {\n delete this.columnSettings[`${userId}_${filterName}`];\n const localStorageKey = versionKey || this.getPresetLocalStorageKey(filterName,userId);\n localStorage.removeItem(localStorageKey);\n }\n // ======================= localStorage Filter Settings getters and setters =======================\n\n async getStoredFilterSettingsFromLocalStorage(categoryName: PresetCategory, filterName: string, userId: string, originPresetName: string): Promise {\n if (!userId || !this.user) {\n await this.storeUser()\n }\n\n\n // a possible bug happens if filterSettings file was updated, but local storage still has old values.\n // need to make sure that stored settings aren't outdated.\n // to do so we need to pull const filtersettings and stored filtersettings,\n // and then use const filtersettings as a primary list and pull excluded list from stored filtersettings\n let storedFilterSettings = JSON.parse(localStorage.getItem(`agGrid_${categoryName}_${filterName}_filter_settings_${userId || this.user._id}`) || null)\n\n let originalFilterSettings: any = _.cloneDeep(this.filterSettings[originPresetName]) // for some reason _.cloneDeep returns type of rows: ({...}), instead of rows: {...}\n if (originalFilterSettings) {\n let storedFilterSettingsRowsByName = {}\n storedFilterSettings?.rows.forEach( row => {\n storedFilterSettingsRowsByName[row.name] = row\n })\n for(let r in originalFilterSettings.rows){\n if (storedFilterSettingsRowsByName[originalFilterSettings.rows[r].name]) {\n if (originalFilterSettings.rows[r].filterOptions) { // overriding stored filterOptions\n storedFilterSettingsRowsByName[originalFilterSettings.rows[r].name].filterOptions = originalFilterSettings.rows[r].filterOptions;\n };\n originalFilterSettings.rows[r] = { ...originalFilterSettings.rows[r], ...storedFilterSettingsRowsByName[originalFilterSettings.rows[r].name]} // add new params\n }\n }\n return originalFilterSettings\n }\n return storedFilterSettings\n }\n\n storeFilterSettingsInLocalStorage(categoryName: string, filterName: string, filterSettings: FilterSettings): void {\n localStorage.setItem(`agGrid_${categoryName}_${filterName}_filter_settings_${this.user?._id}`, JSON.stringify(filterSettings))\n }\n removeFilterSettingsFromLocalStorage(categoryName: string, filterName: string, userId: string): void {\n localStorage.removeItem(`agGrid_${categoryName}_${filterName}_filter_settings_${userId}`);\n }\n\n matchAndUpdateFilterSettings(filterSettings: FilterSettings, gridApi: GridApi): FilterSettings {\n let foundDifferences: boolean = false;\n if (filterSettings && gridApi) {\n let filterModel = gridApi.getFilterModel()\n for(let f in filterSettings.rows){\n let filter = filterSettings.rows[f]\n if (filterModel && filterModel[filter.name]) {\n if(filter.type == 'set'){\n let filterClearedOptions = filter.options.filter(option => !filter.excluded.includes(option == 'None' ? null : option));\n for(let option in filterClearedOptions) {\n if(filterClearedOptions[option] === 'None') {\n filterClearedOptions[option] = null;\n }\n }\n if (!_.isEqual(filterModel[filter.name].values, filterClearedOptions)) {\n foundDifferences = true\n filter.excluded = filter.options.filter(option => !filterModel[filter.name].values?.includes(option == 'None' ? null : option))\n }\n }else{\n if(!_.isEqual(filterModel[filter.name], filter)){\n foundDifferences = true\n filterSettings.rows[f] = { ...filterSettings.rows[f], ...filterModel[filter.name]}\n }\n }\n } else if(filterModel && !filterModel[filter.name]) {\n if(filter.type == 'set'){\n filter.excluded = []\n } else {\n filter.filter = null\n filter.filterTo = null\n filter.type = null\n }\n foundDifferences = true\n }\n }\n }\n return foundDifferences ? filterSettings : null\n }\n\n // ======================= localStorage Filter Model getters and setters =======================\n async getStoredFilterModelFromLocalStorage(categoryName: string, filterName: string, userId?: string): Promise<{ [key: string]: any }> {\n if (!userId && !this.user) {\n await this.storeUser();\n }\n return JSON.parse(localStorage.getItem(`agGrid_${categoryName}_${filterName}_filter_model_${userId || this.user?._id}`) || null)\n }\n storeFilterModelInLocalStorage(categoryName: string, filterName: string, filterModel: { [key: string]: any }): void {\n localStorage.setItem(`agGrid_${categoryName}_${filterName}_filter_model_${this.user?._id}`, JSON.stringify(filterModel))\n }\n removeFilterModelFromLocalStorage(categoryName: string, filterName: string, userId: string): void {\n localStorage.removeItem(`agGrid_${categoryName}_${filterName}_filter_model_${userId}`);\n }\n // ======================= localStorage StoredPresets getters and setters =======================\n\n getStoredPresetsFromLocalStorage(categoryName: string, userId: string): string[] {\n return JSON.parse(localStorage.getItem(`agGrid_${categoryName}_storedPresetNames_${userId}`) || null)\n }\n getStoredPresetFromLocalStorage(categoryName: string, filterName: string, userId: string): IPatientFilterPreset {\n return JSON.parse(localStorage.getItem(`agGrid_${categoryName}_${filterName}_${userId}`) || null)\n }\n storeStoredPresetsInLocalStorage(categoryName: string, userId: string, presets: string[]): void {\n localStorage.setItem(`agGrid_${categoryName}_storedPresetNames_${userId}`, JSON.stringify(presets))\n }\n\n removeStoredPresetsFromLocalStorage(categoryName: string, userId: string): void {\n localStorage.removeItem(`agGrid_${categoryName}_storedPresetNames_${userId}`)\n }\n removeStoredPresetFromLocalStorage(categoryName: string, filterName: string, userId: string): void {\n localStorage.removeItem(`agGrid_${categoryName}_${filterName}_${userId}`);\n }\n async removeFilterFromStoredPresetsInLocalStorage(categoryName: string, filterName: string, userId: string) {\n let storedPresetNames: string[] = this.getStoredPresetsFromLocalStorage(categoryName, userId);\n if (storedPresetNames) {\n try {\n storedPresetNames = storedPresetNames.filter(p => p != filterName)\n storedPresetNames.length == 0 ? this.removeStoredPresetsFromLocalStorage(categoryName, userId) : this.storeStoredPresetsInLocalStorage(categoryName, userId, storedPresetNames)\n } catch (error) {\n console.warn('Can\\'t remove preset', { categoryName, filterName, userId })\n }\n }\n }\n\n storeStoredPresetInLocalStorage(categoryName: string, filterName: string, userId: string, preset: IPatientFilterPreset): void {\n localStorage.setItem(`agGrid_${categoryName}_${filterName}_${userId}`, JSON.stringify(preset))\n }\n\n // =================================== misc functions ========================================\n getActiveColumnNames(columnApi: ColumnApi, exceptions: string[] = ['actions', 'select', 'IHEfileActions' , 'ssPercent']): string[] {\n return columnApi?.getColumnState().filter( column => !column.hide && !exceptions.includes(column.colId)).map( column => column.colId)\n\n }\n getCsvAdditionalColumns(csvAddition: { [key: string]: { additionalGridColumns?: ColDef[], additionalCsvColumns?: string[] } }): string[] {\n let result = [];\n for (let c in csvAddition) {\n result = [...result, ...csvAddition[c].additionalCsvColumns];\n }\n return result;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { environment } from 'src/environments/environment';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport {\n ActionId,\n ComponentId,\n LogAuditElementID,\n SubComponentId,\n} from '@shared/models/audit-constants';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { PatientEngagement } from '@shared/enums';\n\nexport interface LogAuditElements {\n LogAuditElementID: number;\n ElementValue: string;\n}\n\nexport interface LogAuditRequest {\n Details: string;\n ComponentId: number;\n ActionId?: number;\n ModuleId?: number;\n SubComponentId?: number;\n LogAuditElements: LogAuditElements[];\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuditService {\n private auditBaseURL: string;\n private moduleIdCare = 2;\n constructor(\n private http: HttpClient,\n private ToastrMessageService: ToastrMessageService\n ) {\n this.auditBaseURL = `${environment.apiBaseUrl}/logging/audit`;\n }\n public auditLog(\n detail: string,\n compId: ComponentId | PatientEngagement,\n subComp: SubComponentId,\n actionId: ActionId,\n chPatId: string,\n tier: IHierarchyTier,\n orgId: string,\n elements?: LogAuditElements[],\n moduleId: number = null\n ): void {\n const logAuditRequest: LogAuditRequest = this.getAuditRequest(\n detail,\n compId,\n subComp,\n actionId,\n chPatId,\n tier,\n orgId,\n elements,\n moduleId\n );\n this.postAuditLogging(logAuditRequest).subscribe(() => {});\n }\n\n private getAuditRequest(\n detail: string,\n compId: ComponentId | PatientEngagement,\n subComp: SubComponentId,\n actionId: ActionId,\n chPatId: string,\n tier: IHierarchyTier,\n orgId: string,\n elements?: LogAuditElements[],\n moduleId: number = null\n ): LogAuditRequest {\n const auditStruct: LogAuditRequest = {\n Details: detail,\n ComponentId: compId,\n ActionId: actionId,\n ModuleId: moduleId ?? this.moduleIdCare,\n SubComponentId: subComp,\n LogAuditElements: elements ? elements : [],\n };\n if (chPatId) {\n auditStruct.LogAuditElements.push({\n LogAuditElementID: LogAuditElementID.ChPatId,\n ElementValue: chPatId,\n });\n }\n if (orgId) {\n auditStruct.LogAuditElements.push({\n LogAuditElementID: LogAuditElementID.OrgId,\n ElementValue: orgId,\n });\n }\n if (tier) {\n let elementId;\n switch (tier.tier) {\n case 1:\n elementId = LogAuditElementID.ACO_ID;\n break;\n case 2:\n elementId = LogAuditElementID.Tier2_ID;\n break;\n case 3:\n elementId = LogAuditElementID.Tier3_ID;\n break;\n case 4:\n elementId = LogAuditElementID.Tier4_ID;\n break;\n }\n if (elementId) {\n auditStruct.LogAuditElements.push({\n LogAuditElementID: elementId,\n ElementValue: tier.selectedTierId,\n });\n }\n }\n return auditStruct;\n }\n public postAuditLogging(logAuditRequest: LogAuditRequest): Observable {\n let url = `${this.auditBaseURL}`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey, // move sub Id to authIntercept too\n //'Authorization': `Bearer ${this.userToken}`,\n },\n params: {},\n responseType: 'blob' as 'json', // hack to allow compilation\n };\n return this.http.post(url, logAuditRequest, options).pipe(\n tap(\n (data) => {},\n // Log the result or error\n (error) => {\n console.error(error);\n this.ToastrMessageService.error(error);\n }\n )\n );\n }\n}\n","import { B2CTokenPayload, UserInfo } from './auth-interface';\nimport { environment } from 'src/environments/environment';\nimport {\n EventTypes,\n OidcClientNotification,\n LogLevel,\n PublicEventsService,\n LoginResponse\n} from 'angular-auth-oidc-client';\nimport { TokenHelperService } from 'angular-auth-oidc-client';\nimport { filter, map } from 'rxjs/operators';\nimport { HashLocationStrategy } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject, ReplaySubject, of } from 'rxjs';\nimport { OidcSecurityService } from 'angular-auth-oidc-client';\nimport { RestApiService } from '@shared/services/rest-api/rest-api.service';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport { Patient } from '@shared/models/patient';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nlet ORIGIN_URL: string;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n public static readonly TIMED_OUT = 'timed_out';\n\n private static i = 0;\n public isAuthenticated$: Observable;\n public userData$: Observable;\n public token: string;\n private _userInfoInternal$ = new BehaviorSubject(null);\n public chEndPoint: string = environment.chEndPoint;\n private _inlogout = false;\n private _wpUserPromise: Promise;\n private _authCheckComplete$ = new ReplaySubject();\n wellpepperUser: wpapi.model.Professional;\n //private oidcSecurityService:OidcSecurityService;\n public get authCheckComplete$(): Observable {\n return this._authCheckComplete$.asObservable();\n }\n\n constructor(\n private oidcSecurityService: OidcSecurityService,\n private readonly publicEventsService: PublicEventsService,\n private tokenHelperService: TokenHelperService,\n private restApiService: RestApiService,\n private hashLocationStrategy: HashLocationStrategy,\n private http: HttpClient,\n private ToastrMessageService: ToastrMessageService\n ) {\n this.debuglog('inC Constructor', ++AuthService.i);\n this.isAuthenticated$ = this.oidcSecurityService.isAuthenticated$.pipe(\n map(({ isAuthenticated }) => isAuthenticated)\n );\n this.publicEventsService\n .registerForEvents()\n .pipe(\n filter(\n notification =>\n notification.type === EventTypes.NewAuthenticationResult || notification.type === EventTypes.IdTokenExpired\n )\n )\n .subscribe(value => this.onNewAuthorizationResult(value));\n }\n public init(base: any): void {\n this.oidcSecurityService.checkAuth().subscribe(\n (loginResponse: LoginResponse) => {\n this._authCheckComplete$.next(true);\n },\n error => {\n this.ToastrMessageService.error(error);\n }\n );\n\n this.userData$ = this.oidcSecurityService.userData$.pipe(map(userDataResult => userDataResult.userData));\n this.token = this.oidcSecurityService.getIdToken();\n this.publishUserInfoIfExists();\n const baseHref = this.hashLocationStrategy.getBaseHref();\n ORIGIN_URL = baseHref !== '/' ? `${window.location.origin}/${baseHref}` : window.location.origin;\n }\n\n onNewAuthorizationResult(oidNotification: OidcClientNotification) {\n if (oidNotification && oidNotification.type === EventTypes.NewAuthenticationResult) {\n this.debuglog('NewAuthorizationResult with value ', oidNotification);\n this.callGetUserInfo();\n } else if (oidNotification.type === EventTypes.IdTokenExpired) {\n // to do: show as signed out\n this.debuglog('idTokenExpired', oidNotification);\n }\n }\n\n get userInfo$(): Observable {\n return this._userInfoInternal$.asObservable();\n }\n\n public getToken(): string {\n return this.oidcSecurityService.getIdToken();\n }\n\n public checkAuthentication(base: any): boolean {\n let checkAuthentication = false;\n this.oidcSecurityService.checkAuth().subscribe(\n isAuthenticated => {\n this._authCheckComplete$.next(true);\n if (isAuthenticated) {\n checkAuthentication = true;\n // to do call it every time u get the tokens\n // this.callGetUserInfo();\n }\n },\n error => {\n this.ToastrMessageService.error(error);\n }\n );\n //to do plug into the login page-for all other pages call Authorize.\n //,()=>this.OnCompleteCheckAuth(checkAuthentication));\n return checkAuthentication;\n }\n\n // private OnCompleteCheckAuth(checkAuthentication) {\n // let checkAuthServer = false;\n // // todo in the scenario where it is already true\n // // if (!checkAuthentication)\n // this.debuglog('checkAuthIncludingServer Enter on Completion:', checkAuthentication);\n // this.oidcSecurityService.checkAuthIncludingServer().subscribe(\n // isAuthenticated => {\n // checkAuthServer = isAuthenticated;\n // this.debuglog('checkAuthIncludingServer Done:', isAuthenticated);\n // },\n // error => {\n // this.ToastrMessageService.error(error);\n // this.debuglog('checkAuthIncludingServer Error:', error);\n // }\n // );\n // }\n\n private callGetUserInfo() {\n const userObj = this.oidcSecurityService.getPayloadFromIdToken(false);\n // quick way to to make sure we are logged in\n if (!userObj) {\n return;\n }\n const userInfoEndPoint: string = userObj.idp + '/connect/userinfo';\n this.debuglog('userInfoEndPoint:', userInfoEndPoint);\n const idp: string = userObj.idp;\n if (this.chEndPoint.search(idp) > -1) {\n this.debuglog('token', userInfoEndPoint);\n this.restApiService.getHttp(userInfoEndPoint, userObj.idp_access_token).subscribe(\n body => {\n const userInfo: UserInfo = body as UserInfo;\n this.setUserInfoToStore(userInfo);\n\n this.debuglog('userInfo:', userInfo);\n },\n error => {\n console.log('error =>', error);\n this.ToastrMessageService.error(error);\n this.restApiService.handleHttpErrorResponse(error, 'GetUserInfo');\n this.resetUserInfoInStore();\n }\n );\n }\n }\n private get endSessionUrl(): string {\n const userObj = this.oidcSecurityService.getPayloadFromIdToken(false);\n if (this.chEndPoint.search(userObj.idp) > -1) {\n this.debuglog('token in getENdSessionUtl', this.oidcSecurityService.getIdToken());\n let token = this.oidcSecurityService.getIdToken();\n token = userObj.idp_access_token;\n token = encodeURI(token);\n const userInfoEndPoint: string =\n userObj.idp +\n '/connect/endSession?' +\n 'id_token_hint=' +\n token +\n '&post_logout_redirect_uri=' +\n encodeURI(ORIGIN_URL);\n this.debuglog('endSessionEndPoint:', userInfoEndPoint);\n return userInfoEndPoint;\n } else {\n return null;\n }\n }\n\n private endSession(url: string) {\n this._wpUserPromise = null;\n // Work around: directly callin IDS server\n // to do: make it work with a no ancestor ifrtame...\n if (url) {\n this.restApiService.redirectTo(url);\n }\n /*\n No longer using get instead using redirectto endsession..\n let userObj = this.oidcSecurityService.getPayloadFromIdToken(false);\n let token = this.oidcSecurityService.getIdToken();//userObj.idp_access_token;\n\n this.restApiService.getHttp(this.getEndSessionUrl(), null).subscribe((params)=>\n {\n\n this.debuglog(\"params:\", params);\n\n },\n error=>{this.restApiService.handleHttpErrorResponse(error,'endSession');\n this.userInfo=null; this.inlogout=false});\n\n }\n */\n }\n\n public logoffLocal() {\n this.oidcSecurityService.logoffLocal();\n this.oidcSecurityService.revokeAccessToken();\n this.oidcSecurityService.revokeRefreshToken();\n }\n\n public logout() {\n this._wpUserPromise = null;\n this._inlogout = true;\n // Alert: getEndSessionUrl will not work after logoff local so cache the value\n const url = this.endSessionUrl;\n this.resetUserInfoInStore();\n // revking and logoff works correctly with IDS now\n // since we now return the the HOME Page after logging out\n // this should help in making sure x-ms-cpim-rc expire\n // this should eliminate the header too long login bug\n this.callLogoffAndRevokeTokens(url);\n }\n\n private callLogoffAndRevokeTokens(url) {\n // COM-5641: This call is returning an error when trying to revoke the access token\n // because Azure B2C does not publish a token revocation endpoint\n // This does not adversely affect the logout process\n\n this.oidcSecurityService.logoffAndRevokeTokens().subscribe(\n result => {\n this._inlogout = false;\n this.debuglog('loggin out:', result);\n //will getcalled for Id servers which do no redirect correctly\n //IDS server redirects correctly so we we never reach this code.\n if (url) this.endSession(url);\n // this.logofflocal();\n },\n error => {\n this.endSession(url);\n this._inlogout = false;\n this.debuglog('loggin out ERROR:', error);\n }\n );\n }\n\n public login() {\n if (this._inlogout) {\n return;\n }\n this.oidcSecurityService.authorize();\n }\n\n private debuglog(...data: any[]): void {\n if (!environment.production) {\n console.error(...data);\n }\n }\n public get IdToken(): string {\n return this.oidcSecurityService.getIdToken();\n }\n\n public getPayloadFromIdToken(): B2CTokenPayload {\n return this.oidcSecurityService.getPayloadFromIdToken(false);\n }\n\n public get idp_access_token(): string {\n let token: string;\n const userObj = this.oidcSecurityService.getPayloadFromIdToken(false);\n if (userObj && userObj.idp_access_token) {\n token = userObj.idp_access_token;\n }\n return token;\n }\n\n public get idp_sub(): string {\n let issuerUserId: string;\n const userObj: B2CTokenPayload = this.oidcSecurityService.getPayloadFromIdToken(false);\n if (userObj && userObj.idp_sub) {\n issuerUserId = userObj.idp_sub;\n }\n return issuerUserId;\n }\n\n private getUserInfoFromStore(): any {\n return this.read('userInfo') || null;\n }\n public getUserId(): string {\n return this.read('userInfo')?.id || null;\n }\n public getUserDnnId(): string {\n return this.read('userInfo')?.dnn_id || null;\n }\n\n private publishUserInfoIfExists() {\n const userInfo: UserInfo = this.getUserInfoFromStore();\n if (userInfo) {\n this._userInfoInternal$.next(userInfo);\n }\n }\n\n private setUserInfoToStore(value: any): void {\n this.write('userInfo', value);\n this._userInfoInternal$.next(value);\n }\n\n private resetUserInfoInStore(): void {\n this.write('userInfo', null);\n this._userInfoInternal$.next(null);\n }\n public write(key: string, value: any): void {\n if (value) {\n localStorage.setItem(key, JSON.stringify(value));\n } else {\n localStorage.removeItem(key);\n }\n }\n public read(key: string): any {\n const data = localStorage.getItem(key);\n if (data) {\n return JSON.parse(data);\n }\n }\n\n setWellpepperUser(user) {\n this.wellpepperUser = user;\n }\n\n /** Get Wellpepper professional info for the currently logged in user.\n * This is cached and won't be refreshed for the session */\n public async getWellpepperUserInfo(): Promise {\n if (this._wpUserPromise) {\n return this._wpUserPromise;\n }\n const url = `${environment.wpApiUrl}/users/me`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this.IdToken\n }\n };\n this._wpUserPromise = this.http.get(url, options).toPromise() as Promise;\n this._wpUserPromise.catch((err: HttpErrorResponse) => {\n // NOTE: many places that call this function do not await the result so the error can be lost\n // Because a failure in the request is possible and can lead to a lot of downstream problems,\n // display a red box error.\n console.log('getCurrentUserInfo failed', err);\n this.ToastrMessageService.error(err);\n });\n return this._wpUserPromise;\n }\n\n // this will return false if not signed in.\n public isIdpExpiring(offsetMins: number = 0): boolean {\n let decodedIdToken = this.getToken();\n if (!decodedIdToken) return true;\n const tokenExpirationDate = this.tokenHelperService.getTokenExpirationDate(decodedIdToken);\n let offsetMilliSeconds = offsetMins * 60 * 1000;\n if (!tokenExpirationDate) {\n return true;\n }\n const tokenExpirationValue = tokenExpirationDate.valueOf();\n let nowDate = new Date();\n const nowWithOffset = nowDate.valueOf() + offsetMilliSeconds;\n const tokenExpired = tokenExpirationValue < nowWithOffset;\n console.log(\n `Has id_token expired=> ${!tokenExpired}, ${tokenExpirationDate.toISOString()} > ${nowDate.toISOString()}`\n );\n return tokenExpired;\n }\n\n // retunrs false if not signed in\n public isIdpExpiringIfSignedIn(offsetMins: number = 0): boolean {\n let decodedIdToken = this.getToken();\n if (!decodedIdToken) return false;\n const tokenExpirationDate = this.tokenHelperService.getTokenExpirationDate(decodedIdToken);\n let offsetMilliSeconds = offsetMins * 60 * 1000;\n if (!tokenExpirationDate) {\n return false;\n }\n const tokenExpirationValue = tokenExpirationDate.valueOf();\n let nowDate = new Date();\n const nowWithOffset = nowDate.valueOf() + offsetMilliSeconds;\n const tokenExpired = tokenExpirationValue < nowWithOffset;\n // console.log(`Has id_token expired=> ${!tokenExpired}, ${tokenExpirationDate.toISOString()} > ${nowDate.toISOString()}`);\n return tokenExpired;\n }\n}\nexport function loadConfig() {\n const originUrl = ORIGIN_URL || window.location.origin + document.querySelector('base').getAttribute('href');\n return {\n authority: environment.stsServer,\n authWellknownEndpointUrl: environment.authWellknownEndpoint,\n redirectUrl: originUrl,\n postLogoutRedirectUri: originUrl,\n clientId: environment.authClientId,\n scope: environment.authConfigScope,\n responseType: 'code',\n silentRenew: true,\n autoUserInfo: false,\n logLevel: LogLevel.Error,\n silentRenewUrl: originUrl + '/silent-renew.html',\n renewTimeBeforeTokenExpiresInSeconds: 60,\n useRefreshToken: true, // for refresh renew, but revocation and one time usage is missing from server impl.\n ignoreNonceAfterRefresh: true,\n disableRefreshIdTokenAuthTimeValidation: true\n };\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\n\nexport class AzureApiBase {\n constructor(protected http: HttpClient, protected authService: AuthService,\n public apiUrl: string, public basePath: string) {\n\n this.value = new BehaviorSubject(null);\n this.values = new BehaviorSubject(null);\n }\n\n private value: BehaviorSubject;\n protected values: BehaviorSubject;\n\n public getFromCache(route: string = null, params: HttpParams = null): Observable {\n if (this.value.value == null) {\n return this.getSingle(route, params);\n }\n\n return this.value.asObservable();\n }\n\n public getAllFromCache(route: string = null, params: HttpParams = null): Observable {\n if (this.values.value == null) {\n return this.getAll(route, params);\n }\n\n return this.values.asObservable();\n }\n\n public getAll(route: string = null, params: HttpParams = null): Observable {\n const observable = this.get(route, params);\n\n observable.subscribe(values => {\n this.values.next(values);\n });\n\n return observable;\n }\n\n public getSingle(route: string = null, params: HttpParams = null): Observable {\n const observable = this.get(route, params);\n\n observable.subscribe(value => {\n this.value.next(value);\n });\n\n return observable;\n }\n\n public get(route: string = null, params: HttpParams = null): Observable {\n const options = this.buildOptions();\n if (params != null) {\n options.params = params;\n }\n\n let observable: Observable;\n\n const url = this.buildUrl(route);\n\n observable = this.http.get(url, options as {}).pipe(share());\n\n return observable;\n }\n\n public post(route: string = null, request: any = null): Observable {\n const url = this.buildUrl(route);\n const observable = this.http.post(url, request, this.buildOptions() as {}).pipe(share());\n\n observable.subscribe(value => {\n if (value == null) {\n return;\n }\n\n if (Array.isArray(value)){\n this.values.next(value);\n } else {\n this.value.next(value as T);\n }\n });\n\n return observable;\n }\n\n public postPdf(request: any, route: string = this.basePath): Observable {\n const url = this.buildUrl(route);\n const options = this.buildOptions();\n options.responseType = 'blob';\n options.headers.set('Accept', 'application/pdf');\n const observable = this.http.post(url, request, options as {}).pipe(share());\n\n return observable;\n }\n\n public postZip(request: any, route: string = this.basePath): Observable {\n const url = this.buildUrl(route);\n const options = this.buildOptions();\n options.responseType = 'arrayBuffer';\n options.headers.set('Accept', 'application/pdf');\n const observable = this.http.post(url, request, options as {}).pipe(share());\n\n return observable;\n }\n\n private buildUrl(route: string): string {\n return `${this.apiUrl}${this.basePath}${route == null ? '' : route}`;\n }\n\n private buildOptions(): {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType?: string;\n withCredentials?: boolean;\n } {\n return {\n headers: new HttpHeaders({\n 'Authorization': `Bearer ${this.authService.IdToken}`,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n })\n };\n }\n}","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth-service/auth.service';\nimport { AzureApiBase } from '../azure-api/azure-api-base';\nimport { UserEula } from './user-eula';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EulaService extends AzureApiBase {\n public showEULA$: BehaviorSubject;\n\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/eula');\n this.showEULA$ = new BehaviorSubject(false);\n }\n\n public setShowEULA(isShown: boolean) {\n this.showEULA$.next(isShown);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport * as FileSaver from 'file-saver';\nimport * as ExcelJS from 'exceljs';\nconst EXCEL_TYPE =\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\nconst EXCEL_EXTENSION = '.xlsx';\n\n/**\n * workSheet is the name of the workSheet. It has to be less than 31 characters in length.\n * In the cases where the type of a worksheet is table, the workSheet name is also the table name without any spaces\n *\n * theme is used for the workSheetTypes `table`. If one is not provided, it will default to TableStyleMedium2\n *\n * Rows is set as Any because the different workSheet types will use the rows differently.\n */\nexport interface workBook {\n workSheet: string;\n workSheetType: WorkSheetTypes;\n theme?: string;\n rows: any[];\n}\n\n/**\n * Sheet will produce a basic sheet where\n */\nexport enum WorkSheetTypes {\n sheet = 'sheet',\n freeForm = 'freeForm',\n table = 'table',\n}\n\n@Injectable()\nexport class ExcelService {\n constructor() {}\n\n /** Service for creating Excel files for download\n *\n * To create an excel file, create an array of worksheets using {@link workBook}\n * In the `workBook` interface there is a {@link workSheetType} which allows for determining how the rows of the workBook will be handled\n * In the case of `workShetTypes` sheet and table, they take a very similar layout with the difference being that table allows for the use of a theme and will produce an Excel table\n *\n * Here is an example of what one might look like with each possible version of a worksheet included (table, sheet and freeForm)\n *\n *\n * workbookData = [\n * {\n * workSheet: \"WS_TableSample\",\n * theme: 'TableStyleMedium1'\n * rows: [\n * { columnA: \"1\", Bcolumn: \"Smith\", columnCValidation: [\"Yes\", \"No\", \"Maybe\"] },\n * { columnA: \"\", Bcolumn: \"\", columnCValidation: \"\" },\n * { columnA: \"4\", Bcolumn: \"Parker\", columnCValidation: [\"Yes\", \"No\", \"Maybe\"] }\n * ]\n * },\n * {\n * workSheet: \"WS_regularSheet\",\n * rows: [\n * { columnA: \"1\", Bcolumn: \"Smith\", columnCValidation: [\"Yes\", \"No\", \"Maybe\"] },\n * { columnA: \"\", Bcolumn: \"\", columnCValidation: \"\" },\n * { columnA: \"4\", Bcolumn: \"Parker\", columnCValidation: [\"Yes\", \"No\", \"Maybe\"] },\n * ]\n * },\n * {\n * workSheet: \"WS_freeForm\",\n * rows: [\n * { row: 1,\n * rowHeight: 10,\n * cols: [{column: 'A',\n * value: 'columnA',\n * styling: {font: {bold: true}, alignment: { vertical: 'bottom', horizontal: 'left'} },\n * columnWidth: 17.43,\n * },\n * {column: 'B',\n * value: 'Bcolumn',\n * styling: {font: {bold: true}, border: {bottom: {style:'thin'}}, alignment: { vertical: 'bottom', horizontal: 'left'} }\n * },\n * {column: 'C',\n * value: 'columnCValidation',\n * styling: {border: {bottom: {style:'thin'}}, alignment: { vertical: 'bottom', horizontal: 'left'} }\n * },\n * ]\n * },\n * { row: 2,\n * cols: [{column: 'A',\n * value: '1',\n * styling: {font: {bold: true}, alignment: { vertical: 'bottom', horizontal: 'left'} }\n * },\n * {column: 'B',\n * value: 'Smith',\n * styling: {font: {bold: true}, alignment: { vertical: 'bottom', horizontal: 'left'} },\n * },\n * {column: 'C',\n * value: [\"Yes\", \"No\", \"Maybe\"]\n * },\n * ]\n * },\n * { row: 4,\n * cols: [{column: 'A',\n * value: '4',\n * styling: {font: {bold: true}, alignment: { vertical: 'bottom', horizontal: 'left'} }\n * },\n * {column: 'B',\n * value: 'Parker',\n * styling: {alignment: { vertical: 'bottom', horizontal: 'left'} },\n * },\n * {column: 'C',\n * value: [\"Yes\", \"No\", \"Maybe\"],\n * styling: {alignment: { vertical: 'top', horizontal: 'right'} },\n * },\n * ]\n * }\n * ]\n * }\n * ];\n *\n * In this example we have the same end result repeated in 3 different ways (with the exception that the freeform one has styling included. Currently sheet doesn't have any styling options and table is limited to the table's theme).\n * In each version, column C is being used to demonstrate the ability to include a data validation drop down.\n *\n * For the sheet and table, you will see that the column names are given as key value. The keys will become row 1 as the column names. Note that if additional columns are included in subsequent rows, those columns will be appended to the end of the already existing columns.\n *\n * For the freeForm workSheet option, we see that the row number is called out per row with row 3 being skipped. The row number will dictate which row the column data will be entered on. Likewise the column letter will dictate with column the data will be entered into.\n * The styling options are just some random examples to show that this can be changed per individual cell. For additional styling information, see the excelJS styles section of their github page https://github.com/exceljs/exceljs#styles\n * Note that rowHeight is used to set an individual row's height as seen in row 1.\n * We can also merge cells together using `mergeCells: 'B18:F25'` as an additional property for a column.\n * For an example of this put into practice see {@link ClinicianRosterComponent}\n *\n * The @param workbookData is the workBook made up of the different worksheets.\n * The @param excelFileName is the name of the created Excel file. (Don't include the extension in the file name)\n */\n\n public async exportAsExcel(workbookData: workBook[], excelFileName: string) {\n const workbook = new ExcelJS.Workbook();\n\n workbookData.forEach(({ workSheet, rows, workSheetType, theme }) => {\n if (workSheetType == WorkSheetTypes.freeForm) {\n const sheet = this.createFreeFormWorkSheet(workbook, workSheet, rows);\n }\n if (workSheetType == WorkSheetTypes.table) {\n const sheet = this.createTableWorkSheet(\n workbook,\n workSheet,\n rows,\n theme\n );\n }\n if (workSheetType == WorkSheetTypes.sheet) {\n const sheet = this.createPlainWorkSheet(workbook, workSheet, rows);\n }\n });\n\n const buffer = await workbook.xlsx.writeBuffer();\n this.saveAsExcelFile(buffer, excelFileName);\n }\n\n /**\n * Creates the freeform style of worksheet.\n */\n private createFreeFormWorkSheet(\n workbook: ExcelJS.Workbook,\n workSheetName: any,\n rows: any[]\n ): any {\n const sheet = workbook.addWorksheet(workSheetName);\n\n rows.forEach((row, cols) => {\n const rownum = row;\n if (rownum.rowHeight) {\n const row = sheet.getRow(rownum.row);\n row.height = rownum.rowHeight;\n }\n row.cols.forEach((entry) => {\n if (entry.mergeCells) {\n sheet.mergeCells(entry.mergeCells);\n }\n const cellLocation = entry.column + row.row;\n const cell = sheet.getCell(cellLocation);\n\n if (Array.isArray(entry.value)) {\n const jsonDropdown = entry.value;\n cell.dataValidation = {\n type: 'list',\n formulae: [`\"${jsonDropdown.join(',')}\"`],\n };\n } else {\n cell.value = entry.value;\n }\n\n if (entry.styling) {\n if (entry.styling.border) {\n cell.border = entry.styling.border;\n }\n if (entry.styling.font) {\n cell.font = entry.styling.font;\n }\n if (entry.styling.alignment) {\n cell.alignment = entry.styling.alignment;\n }\n if (entry.styling.fill) {\n cell.fill = entry.styling.fill;\n }\n if (entry.styling.numFmt) {\n cell.numFmt = entry.styling.numFmt;\n }\n }\n if (entry.columnWidth) {\n const col = sheet.getColumn(entry.column);\n col.width = entry.columnWidth;\n }\n\n if (entry.protection) {\n cell.protection = entry.protection;\n }\n });\n });\n\n return sheet;\n }\n\n /**\n * Creates the table style of worksheet. Filters are currently hard coded in so that you can filter the table's columns by default (As you would if you created a table in Excel).\n */\n private createTableWorkSheet(\n workbook: ExcelJS.Workbook,\n workSheetName: any,\n rows: any[],\n theme: any\n ): any {\n const sheet = workbook.addWorksheet(workSheetName);\n const uniqueHeaders = [\n ...new Set(\n rows.reduce((prev, next) => [...prev, ...Object.keys(next)], [])\n ),\n ];\n\n let output = [];\n\n rows.forEach((entry) => {\n const result = Object.keys(entry).map((key) =>\n key == 'Specify Edit/Remove/Add' ? '' : entry[key]\n );\n output.push(result);\n });\n\n const cols = uniqueHeaders.map((x) => ({\n header: x,\n key: x,\n name: x,\n filterButton: true,\n })) as ExcelJS.TableColumnProperties[];\n\n sheet.addTable({\n name: workSheetName.replace(/\\s/g, ''),\n ref: 'A1',\n headerRow: true,\n totalsRow: false,\n style: {\n theme: theme || 'TableStyleMedium2',\n showRowStripes: true,\n },\n columns: cols,\n rows: output,\n });\n\n rows.forEach((jsonRow, i) => {\n let cellValues = { ...jsonRow };\n\n uniqueHeaders.forEach((header: string, j) => {\n if (Array.isArray(jsonRow[header])) {\n cellValues[header] = '';\n }\n });\n uniqueHeaders.forEach((header: string, j) => {\n if (Array.isArray(jsonRow[header])) {\n const jsonDropdown = jsonRow[header];\n sheet.getCell(\n this.getSpreadSheetCellNumber(i + 1, j)\n ).dataValidation = {\n type: 'list',\n formulae: [`\"${jsonDropdown.join(',')}\"`],\n };\n }\n });\n });\n\n sheet.columns.forEach((column, i) => {\n let maxLength =\n column.values[1].toString().length > 0\n ? column.values[1].toString().length + 5\n : 0; //+5 to give space for the filter button\n column['eachCell']({ includeEmpty: true }, function (cell) {\n const columnLength = cell.value ? cell.value.toString().length : 10;\n if (columnLength > maxLength) {\n maxLength = columnLength;\n }\n });\n column.width = maxLength < 10 ? 10 : maxLength;\n });\n }\n\n /**\n * Creates a plain worksheet without any styling. Basically like the table, but without the table formatting or any filtering.\n */\n private createPlainWorkSheet(\n workbook: ExcelJS.Workbook,\n workSheetName: any,\n rows: any[]\n ): any {\n const sheet = workbook.addWorksheet(workSheetName);\n const uniqueHeaders = [\n ...new Set(\n rows.reduce((prev, next) => [...prev, ...Object.keys(next)], [])\n ),\n ];\n\n sheet.columns = uniqueHeaders.map((x) => ({\n header: x,\n key: x,\n })) as Partial[];\n\n rows.forEach((jsonRow, i) => {\n let cellValues = { ...jsonRow };\n\n uniqueHeaders.forEach((header: string, j) => {\n if (Array.isArray(jsonRow[header])) {\n cellValues[header] = '';\n }\n });\n sheet.addRow(cellValues);\n uniqueHeaders.forEach((header: string, j) => {\n if (Array.isArray(jsonRow[header])) {\n const jsonDropdown = jsonRow[header];\n sheet.getCell(\n this.getSpreadSheetCellNumber(i + 1, j)\n ).dataValidation = {\n type: 'list',\n formulae: [`\"${jsonDropdown.join(',')}\"`],\n };\n }\n });\n });\n }\n\n /**\n * Used to find the spreadsheet's cell number in the sheet and table worksheet options.\n * Currently used when applying data validation lists.\n */\n private getSpreadSheetCellNumber(row, column) {\n let result = '';\n\n // Get spreadsheet column letter\n let n = column;\n while (n >= 0) {\n result = String.fromCharCode((n % 26) + 65) + result;\n n = Math.floor(n / 26) - 1;\n }\n\n // Get spreadsheet row number\n result += `${row + 1}`;\n\n return result;\n }\n\n /**\n * Saves the Excel file to be downloaded\n */\n private saveAsExcelFile(buffer: any, fileName: string): void {\n const data: Blob = new Blob([buffer], {\n type: EXCEL_TYPE,\n });\n FileSaver.saveAs(\n data,\n fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION\n );\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '../auth-service/auth.service';\nimport { AzureApiBase } from '../azure-api/azure-api-base';\nimport { FeatureFlag } from './feature-flag';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { HierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { share } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FeatureFlagService extends AzureApiBase {\n\n /** Subscribe to listen for changes in the current feature flags collection */\n public featureFlags$ = new BehaviorSubject(null);\n\n /** Service for retrieving feature flags for current tier\n * \n * To restrict template by feature flag, see {@link HasFeatureFlagDirective}\n * \n * To restrict access to a route, add `featureFlag` to route data\n * \n * To restrict access to a tab of {@link CoachTabsComponent}, use the `featureFlag` property of {@link CoachTabs}\n * \n * If checking for feature flag directly, use `featureFlags$` behavior subject to subscribe to current feature flags and use `hasFeatureFlag()` to check for a specific flag\n */\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.apiBaseUrl, '/access/featureFlag');\n }\n\n /** Updates the feature flag collection based on the current tier. Should only be called from app component. */\n updateFeatureFlags(tier: HierarchyTier): Observable {\n const observable = this.getFeatureFlags(tier.tier, tier.selectedTierId).pipe(share());\n observable.subscribe(flags => this.featureFlags$.next(flags));\n return observable;\n }\n\n /** Call Feature Flag API endpoint to retrieve flags for current tier*/\n private getFeatureFlags(tierNum: number, tierId: string): Observable {\n const params = new HttpParams().set('tierNum', tierNum?.toString())\n .append('tierId', tierId);\n\n return this.get(null, params);\n }\n\n /** Checks to see if a given feature flag is present in the current flag collection */\n hasFeatureFlag(featureFlag: string): boolean {\n return this.featureFlags$.value?.some(x => x.flagName === featureFlag);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilterToggleService {\n public filterToggle: Subject = new Subject();\n\n constructor() { }\n\n public toggleFilterPane(toggledStatus: boolean) {\n this.filterToggle.next(toggledStatus);\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { HierarchyTierService } from '../hierarchy/hierarchy-tier.service';\n\ninterface FolderLookupResult {\n id: number;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FolderLookupService {\n private currentTier: string;\n public hccvipFolderId$ = new BehaviorSubject(null);\n public fromCaravanPHIFolderId$ = new BehaviorSubject(null);\n public qualityCampaignsFolderId$ = new BehaviorSubject(null);\n\n constructor(\n private httpClient: HttpClient,\n private authService: AuthService,\n private tierService: HierarchyTierService\n ) {\n this.tierService.currentTier$.subscribe((tier) => {\n if (tier && tier.selectedTierId !== this.currentTier) {\n this.currentTier = tier.selectedTierId;\n this.getHccvipFolderId();\n this.getFromCaravanPHIFolderId();\n this.getQualityCampaignsFolderId();\n }\n });\n }\n\n private async getHccvipFolderId(): Promise {\n const authToken = this.authService.getToken();\n const httpHeaders = new HttpHeaders({\n Authorization: `Bearer ${authToken}`,\n });\n const result = await this.httpClient\n .get(\n `${environment.coachApiUrl}/api/docRepo/hccvip/${this.currentTier}`,\n {\n responseType: 'json',\n headers: httpHeaders,\n }\n )\n .toPromise();\n if (result.id) {\n this.hccvipFolderId$.next(result.id);\n } else {\n this.hccvipFolderId$.next(null);\n }\n }\n\n private async getFromCaravanPHIFolderId(): Promise {\n const authToken = this.authService.getToken();\n const httpHeaders = new HttpHeaders({\n Authorization: `Bearer ${authToken}`,\n });\n const result = await this.httpClient\n .get(\n `${environment.coachApiUrl}/api/docRepo/folder/${this.currentTier}/fromcaravanphi`,\n {\n responseType: 'json',\n headers: httpHeaders,\n }\n )\n .toPromise();\n if (result.id) {\n this.fromCaravanPHIFolderId$.next(result.id);\n } else {\n this.fromCaravanPHIFolderId$.next(null);\n }\n }\n\n private async getQualityCampaignsFolderId(): Promise {\n const authToken = this.authService.getToken();\n const httpHeaders = new HttpHeaders({\n Authorization: `Bearer ${authToken}`,\n });\n const result = await this.httpClient\n .get(\n `${environment.coachApiUrl}/api/docRepo/folder/${this.currentTier}/specificFolderGeneric?folderName=Fall 2022&parentFolderName=Quality Campaigns&grandParentfolderName=From Caravan WITH PHI`,\n {\n responseType: 'json',\n headers: httpHeaders,\n }\n )\n .toPromise();\n if (result.id) {\n this.qualityCampaignsFolderId$.next(result.id);\n } else {\n this.qualityCampaignsFolderId$.next(null);\n }\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { AuthService } from '../auth-service/auth.service';\nimport { Observable, Subscription } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { DocRepo } from '@shared/models/docRepo/list';\nimport { BehaviorSubject } from 'rxjs';\nimport { share } from 'rxjs/operators';\nimport {\n FormResponses,\n FormSubmission,\n FormSubmissionResult,\n SpecialStatusSummary,\n UpdateQualityStatusParams,\n CaravanFormRemediationInfo,\n} from '@shared/models/forms/forms-backend';\nimport { HierarchyTierService } from '../hierarchy/hierarchy-tier.service';\nimport {\n SubmitFeatureConstants,\n SubmitFeatureToFormId,\n} from '@shared/models/module-constants';\nimport {CaravanFormAdminACO,\n CaravanFormAdminPracticeRespView,\n CaravanFormAdminICC\n} from '@shared/models/forms/form-admin-model';\nimport {CaravanFormSubmissionPeriodOverview,\n CaravanFormSubmissionPeriod,\n CaravanFormAdminSubmitPeriod,\n CaravanFormAdminResponseReport\n} from '@shared/models/forms/form-submissionID-model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SubmitFormsService implements OnDestroy {\n public generalFolderList$: BehaviorSubject;\n public selectedFolder$: BehaviorSubject;\n private get headers(): HttpHeaders {\n return new HttpHeaders({\n Authorization: `Bearer ${this.authService.IdToken}`,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n });\n }\n public uploadFolders: DocRepo[];\n tierNode: string;\n private tierServiceSubscription: Subscription;\n\n constructor(\n private http: HttpClient,\n private authService: AuthService,\n private tierService: HierarchyTierService\n ) {\n this.generalFolderList$ = new BehaviorSubject([]);\n this.selectedFolder$ = new BehaviorSubject(null);\n this.tierServiceSubscription = this.tierService.currentTier$.subscribe(\n (tier) => {\n if (tier) {\n this.tierNode = tier.selectedTierId;\n }\n }\n );\n }\n ngOnDestroy(): void {\n this.tierServiceSubscription.unsubscribe();\n }\n\n getListOfSpecificTier(\n userFormID: number = null,\n formNumber: number,\n submitPeriodID: string = null,\n specialStatusIncluded: string = null,\n useCurrentHierarchy: string = null\n ): Observable {\n let formType = '';\n switch (formNumber) {\n case SubmitFeatureConstants.QualityFormFeature:\n formType = 'getPractices';\n break;\n case SubmitFeatureConstants.PromotingInteroperabilityFormFeature:\n formType = 'getInteroperabilityPractices';\n break;\n case SubmitFeatureConstants.MeetingFormFeature:\n formType = 'getParticipants';\n break;\n case SubmitFeatureConstants.ComplianceFormFeature:\n formType = 'getParticipants';\n break;\n default:\n return null;\n }\n\n const userFormIdParameter =\n userFormID != null\n ? userFormID.toString()\n : SubmitFeatureToFormId.map.get(formNumber).toString();\n\n const params: HttpParams = new HttpParams()\n .set('userFormID', userFormIdParameter)\n .set('tier', this.tierNode)\n .set('submitPeriodID', submitPeriodID)\n .set('formID', SubmitFeatureToFormId.map.get(formNumber).toString())\n .set('specialStatusIncluded', specialStatusIncluded)\n .set('useCurrentHierarchy', useCurrentHierarchy);\n const response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/' + formType,\n { headers: this.headers, params, responseType: 'text' as 'json' }\n );\n return response;\n }\n\n getStatuses(formID: string): Observable {\n let response: Observable;\n const params: HttpParams = new HttpParams()\n .set('formID', formID)\n .set('tier', this.tierNode);\n response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getStatuses',\n { headers: this.headers, params, responseType: 'text' as 'json' }\n );\n return response;\n }\n\n getStatusSummary(formID: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('formID', formID)\n .set('tier', this.tierNode);\n const response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getStatusSummary',\n { headers: this.headers, params }\n );\n return response;\n }\n\n getSubmissions(formID: string, submitPeriodID: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('formID', formID)\n .set('tier', this.tierNode)\n .set('submitPeriodID', submitPeriodID);\n const response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getSubmissions',\n { headers: this.headers, params }\n );\n return response;\n }\n\n getAdminReportResponseOverview(formID: string, submitPeriodID: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('formID', formID)\n .set('tier', this.tierNode)\n .set('submitPeriodID', submitPeriodID);\n const response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getAdminReportResponseOverview',\n { headers: this.headers, params }\n );\n return response;\n }\n\n getAdminReportPracticeResponseView(formID: string, tierID: string, tierLevel: string, submitPeriodID: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('formID', formID)\n .set('tier', this.tierNode)\n .set('tierID', tierID)\n .set('tierLevel', tierLevel)\n .set('submitPeriodID', submitPeriodID);\n const response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getAdminReportTierResponseView',\n { headers: this.headers, params }\n );\n return response;\n }\n getAdminReportICCOverview(formID: string, tierID: string, tierLevel: string, submitPeriodID: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('formID', formID)\n .set('tier', this.tierNode)\n .set('tierID', tierID)\n .set('tierLevel', tierLevel)\n .set('submitPeriodID', submitPeriodID);\n const response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getAdminReportTierResponseView',\n { headers: this.headers, params }\n );\n return response;\n }\n\n getSavedPractices(formID: string): any {\n let response: Observable;\n const params: HttpParams = new HttpParams()\n .set('formID', formID)\n .set('tier', this.tierNode);\n response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getSavedPractices',\n { headers: this.headers, params, responseType: 'text' as 'json' }\n );\n return response;\n }\n\n getFormResponses(userFormID: number): Observable {\n const params: HttpParams = new HttpParams()\n .set('userFormID', userFormID.toString())\n .set('tier', this.tierNode);\n const response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getFormResponses',\n { headers: this.headers, params }\n );\n return response;\n }\n\n save(files: File[], form: any): Observable {\n const formDataString = JSON.stringify(form);\n\n const formData = new FormData();\n files?.forEach((file) => {\n formData.append('files', file);\n });\n formData.append('formDataString', formDataString);\n formData.append('tier', this.tierNode);\n\n return this.http.post(\n environment.coachApiUrl + '/api/formsRepo/save',\n formData,\n { headers: this.headers, responseType: 'json', reportProgress: true }\n );\n }\n\n updateQualityStatus(params: UpdateQualityStatusParams): Observable {\n params.tier = this.tierNode;\n return this.http.post(\n environment.coachApiUrl + '/api/formsRepo/updateQualityStatus',\n params,\n { headers: this.headers }\n );\n }\n\n savedSubmitPeriodsOverview: Observable;\n\n getSubmitPeriodsOverview(formID: number): Observable {\n if (this.savedSubmitPeriodsOverview) {\n return this.savedSubmitPeriodsOverview;\n } else if (this.tierNode == null) {\n this.tierService.currentTier$.subscribe(\n (tier) => {\n if (tier) {\n this.tierNode = tier.selectedTierId;\n const params: HttpParams = new HttpParams()\n .set('formID', formID.toString())\n .set('tier', this.tierNode);\n this.savedSubmitPeriodsOverview = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getSubmitPeriodsOverview',\n { headers: this.headers, params }\n ).pipe(share());\n return this.savedSubmitPeriodsOverview;\n }\n }\n );\n } else\n if (this.tierNode != null) {\n const params: HttpParams = new HttpParams()\n .set('formID', formID.toString())\n .set('tier', this.tierNode);\n this.savedSubmitPeriodsOverview = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getSubmitPeriodsOverview',\n { headers: this.headers, params }\n ).pipe(share());\n return this.savedSubmitPeriodsOverview;\n }\n}\n\n getSubmitPeriodDetails(formID: number): Observable {\n const params: HttpParams = new HttpParams()\n .set('formID', formID.toString())\n .set('tier', this.tierNode);\n const response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getSubmitPeriodDetails',\n { headers: this.headers, params }\n );\n return response;\n }\n\n getAdminReportSubmitPeriods(formID: number): Observable {\n const params: HttpParams = new HttpParams()\n .set('formID', formID.toString())\n .set('tier', this.tierNode);\n const response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getAdminReportSubmitPeriods',\n { headers: this.headers, params }\n );\n return response;\n }\n\n getFolderGeneric(folder: string, parentFolder: string, grandparentFolder: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('folderName', folder.toString())\n .set('parentFolderName', parentFolder.toString())\n .set('grandParentfolderName', grandparentFolder.toString());\n const response = this.http.get(\n environment.coachApiUrl + `/api/docRepo/folder/${this.tierNode}/specificFolderGeneric`,\n { headers: this.headers, params }\n );\n return response;\n }\n\n getFormRemediationInfo(userFormID: number): Observable {\n const params: HttpParams = new HttpParams()\n .set('userFormID', userFormID.toString())\n .set('tier', this.tierNode);\n const response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getRemediationInfo',\n { headers: this.headers, params }\n );\n return response;\n }\n\n getAdminQuestionResponseReport(formID: number, submitPeriodID: number): Observable {\n const params: HttpParams = new HttpParams()\n .set('formID', formID.toString())\n .set('tier', this.tierNode)\n .set('submitPeriodID', submitPeriodID.toString());\n const response = this.http.get(\n environment.coachApiUrl + '/api/formsRepo/getAdminQuestionResponseReport',\n { headers: this.headers, params }\n );\n return response;\n }\n}\n","import gql from 'graphql-tag';\n\n// A GraphQL Fragment on Access\nexport const modules = gql`\n fragment modules on Access {\n modules {\n name\n moduleId\n features {\n name\n featureId\n components {\n componentId\n }\n }\n }\n }\n`;\n","import { Injectable } from '@angular/core';\nimport { gql, Query } from 'apollo-angular';\nimport { Module } from './module.service';\nimport { modules } from './fragments';\n\nexport interface AccessData {\n access: Access;\n}\n\nexport interface Access {\n tierNum: number;\n tierId: string;\n reporting: boolean | null;\n phi: boolean | null;\n isInternal: boolean | null;\n modules: Module[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AccessGQL extends Query {\n\n document = gql`\n query access($nodeId: String!) {\n access(nodeId: $nodeId) {\n tierNum\n tierId\n phi\n isInternal\n reporting\n ...modules\n }\n }\n ${modules}\n`;\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n// import { PRIMARY_OUTLET, UrlTree } from '@angular/router';\n// import { ActivatedRouteService } from '@shared/services/activated-route/activated-route.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeaderCondensedService {\n\n public isHeaderCondensed$: BehaviorSubject;\n public collapseSidebar$: BehaviorSubject;\n \n constructor(\n // private _activatedRoute: ActivatedRouteService,\n ) {\n \n this.isHeaderCondensed$ = new BehaviorSubject(false);\n this.collapseSidebar$ = new BehaviorSubject(null);\n\n // this._activatedRoute.currentUrl$.subscribe(\n // ( url: UrlTree ) : void => {\n // this.condenseHeaderOnDeepRoute(url);\n // }\n // );\n }\n\n public setHeaderCondensed(isCondensed: boolean) {\n this.isHeaderCondensed$.next(isCondensed);\n }\n public setSidebarStatus(isCollapsed: boolean) {\n this.collapseSidebar$.next(isCollapsed);\n }\n \n // public condenseHeaderOnDeepRoute(url: UrlTree) {\n // if (url) {\n // var segmentCount = url.root.children[PRIMARY_OUTLET].segments.length;\n // this.isHeaderCondensed$.next((segmentCount > 2) ? true : false);\n // }\n // }\n}\n","export enum HierarchyTierEnum {\n Aco,\n Community,\n PrincipalParticipant,\n Practice,\n}\n","import { HierarchyTierEnum } from './hierarchy-tier-enum';\nimport { HierarchyTierItem } from './hierarchy-tier-item';\n\nexport const CHTIN_PREFIX = 'CHTIN';\n\nexport interface IHierarchyTier {\n readonly name: string;\n readonly abbreviation: string;\n readonly type: HierarchyTierEnum;\n readonly tier: number;\n items: HierarchyTierItem[];\n selectedItem: HierarchyTierItem;\n isLoading: boolean;\n highestTier: number;\n selectedTierId: string;\n selectedTierIdForDisplay: string;\n equals(other: IHierarchyTier): boolean;\n getTierId(item: HierarchyTierItem, tierNum: number): string;\n}\n\nexport class HierarchyTier implements IHierarchyTier {\n name: string;\n abbreviation: string;\n type: HierarchyTierEnum;\n tier: number;\n items: HierarchyTierItem[];\n selectedItem: HierarchyTierItem = null;\n isLoading: boolean;\n\n get highestTier(): number {\n if (this.items == null || this.items.length === 0) {\n return null;\n }\n\n return this.items[0].highestAccessTier;\n }\n\n get selectedTierIdForDisplay(): string {\n if (this.type === HierarchyTierEnum.Practice && this.selectedItem?.chtinid != null) {\n return `${CHTIN_PREFIX}.${this.selectedItem?.chtinid}.${this.selectedItem?.supplementalID}`;\n }\n\n return this.getTierId(this.selectedItem, this.tier);\n }\n\n get selectedTierId(): string {\n return this.getTierId(this.selectedItem, this.tier);\n }\n\n getTierId(item: HierarchyTierItem, tierNum: number): string {\n return item == null ? null : item['tier' + tierNum + '_ID'];\n }\n\n equals(other: IHierarchyTier): boolean {\n if (other == null || other.selectedItem == null || this.selectedItem == null) {\n return false;\n }\n\n return other.selectedItem.tier === this.selectedItem.tier &&\n other.selectedItem.tier1_ID === this.selectedItem.tier1_ID &&\n other.selectedItem.tier2_ID === this.selectedItem.tier2_ID &&\n other.selectedItem.tier3_ID === this.selectedItem.tier3_ID &&\n other.selectedItem.tier4_ID === this.selectedItem.tier4_ID;\n }\n}\n\nexport class AcoTier extends HierarchyTier {\n tier = 1;\n name = 'ACO';\n abbreviation = 'aco';\n type = HierarchyTierEnum.Aco;\n}\n\nexport class CommunityTier extends HierarchyTier {\n tier = 2;\n name = 'Community';\n abbreviation = 'com';\n type = HierarchyTierEnum.Community;\n}\n\nexport class PrincipalParticipantTier extends HierarchyTier {\n tier = 3;\n name = 'Principal Participant';\n abbreviation = 'ppr';\n type = HierarchyTierEnum.PrincipalParticipant;\n}\n\nexport class PracticeTier extends HierarchyTier {\n tier = 4;\n name = 'Practice';\n abbreviation = 'pra';\n type = HierarchyTierEnum.Practice;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth-service/auth.service';\nimport { AzureApiBase } from '../azure-api/azure-api-base';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserTierService extends AzureApiBase {\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/user');\n }\n\n updateUserTierInfo(): Observable {\n return this.get('/updateTierInfo');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { HierarchyTierItem, SingleHierarchyTierItem } from '@shared/models/hierarchy/hierarchy-tier-item';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { AuthService } from '../auth-service/auth.service';\nimport { environment } from 'src/environments/environment';\nimport {\n AcoTier,\n CHTIN_PREFIX,\n CommunityTier,\n IHierarchyTier,\n PracticeTier,\n PrincipalParticipantTier\n} from '@shared/models/hierarchy/hierarchy-tier';\nimport { HierarchyTierEnum } from '@shared/models/hierarchy/hierarchy-tier-enum';\nimport { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';\nimport { ActivatedRouteService } from '../activated-route/activated-route.service';\nimport { deepCopy } from '@shared/utilities';\nimport { UserTierService } from './user-tier.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HierarchyTierService extends AzureApiBase {\n public hierarchyTiers: IHierarchyTier[] = [\n new AcoTier(),\n new CommunityTier(),\n new PrincipalParticipantTier(),\n new PracticeTier()\n ];\n /** BehaviorSubject containing the value of the currently selected hierarchy tier. Will emit new values */\n public currentTier$ = new BehaviorSubject(null);\n /** Contains the currently selected tier that will update currentTier$ once the selection is finalized */\n public currentTierStaged: IHierarchyTier;\n\n /** Will emit true once all tiers have loaded (not just currently selected tier) */\n public allTiersLoaded$ = new ReplaySubject(1);\n\n private restoreTier: IHierarchyTier;\n private currentTierKey = 'tier';\n private currentTierIdKey = 'tierId';\n private currentUserIdKey = 'userId';\n constructor(\n http: HttpClient,\n authService: AuthService,\n private route: ActivatedRouteService,\n private userTierService: UserTierService\n ) {\n super(http, authService, environment.trackApiUrl, '/hierarchy');\n\n this.authService.isAuthenticated$?.subscribe(isAuthenticated => {\n if (isAuthenticated) {\n this.userTierService.updateUserTierInfo().subscribe({\n error: () => this.initializeHierarchy(),\n complete: () => this.initializeHierarchy()\n });\n }\n });\n }\n\n public get currentTierUrl(): string {\n const currentTier = this.currentTier$.value;\n\n return currentTier == null ? null : `/${currentTier.abbreviation}/${currentTier.selectedTierIdForDisplay}`;\n }\n\n private async initializeHierarchy() {\n const tierAbbreviation = this.getTierAbbreviationFromRoute();\n let tierId = this.getTierIdFromRoute();\n this.restoreTier = this.hierarchyTiers.find(x => x.abbreviation === tierAbbreviation);\n const storedUserId = this.authService?.read(this.currentUserIdKey);\n\n const freshUserID = this.authService?.idp_sub;\n\n if (this.restoreTier == null) {\n if (freshUserID === storedUserId) {\n const storedTier = this.authService.read(this.currentTierKey);\n tierId = this.authService.read(this.currentTierIdKey);\n this.restoreTier = this.hierarchyTiers.find(x => x.tier === storedTier);\n }\n }\n\n if (this.restoreTier != null && tierId != null) {\n const tierNum = this.restoreTier.tier;\n const chtin = this.getChTin(tierId);\n\n this.getTier(tierNum, tierId, chtin?.chtinid, chtin?.supplementalID).subscribe(tierItem => {\n if (tierItem != null) {\n this.restoreTier.selectedItem = {\n highestAccessTier: 1,\n phiFlag: 0,\n tier: tierNum,\n userID: 0,\n tier1_ID: tierItem.tier1_ID,\n tier1_Name: tierItem.tier1_Name,\n tier2_ID: tierItem.tier2_ID,\n tier2_Name: tierItem.tier2_Name,\n tier3_ID: tierItem.tier3_ID,\n tier3_Name: tierItem.tier3_Name,\n tier4_ID: tierItem.tier4_ID,\n tier4_Name: tierItem.tier4_Name,\n tierName: tierItem['tier' + tierNum + '_Name'],\n chtinid: tierItem.chtinid,\n supplementalID: tierItem.supplementalID,\n cinFlag: tierItem.cinFlag\n };\n this.updateCurrentTier(this.restoreTier);\n }\n\n this.getTiers(this.hierarchyTiers.find(x => x.type === HierarchyTierEnum.Aco));\n });\n } else {\n this.getTiers(this.hierarchyTiers.find(x => x.type === HierarchyTierEnum.Aco));\n }\n }\n\n private getChTin(tierId: string): {\n chtinid: number;\n supplementalID: number;\n } {\n const segments = tierId.split('.');\n if (segments.length < 3 || segments[0] !== CHTIN_PREFIX) {\n return null;\n }\n\n return {\n chtinid: parseInt(segments[1]) || 0,\n supplementalID: parseInt(segments[2]) || 0\n };\n }\n\n private getTiers(tier: IHierarchyTier): void {\n const parentTier = this.getParent(tier.tier);\n let params = new HttpParams().set('tier', tier.tier.toString());\n\n if (parentTier != null && parentTier.selectedItem != null) {\n params = params.append('parentId', parentTier.selectedTierId);\n params = params.append('tier1Id', parentTier.selectedItem.tier1_ID);\n }\n\n tier.isLoading = true;\n this.getAll(null, params).subscribe({\n next: items => {\n tier.items = items;\n const childTier = this.getChild(tier.tier);\n\n // If no tier has been selected and tier is present on route, select item base on route value\n if (this.restoreTier != null) {\n const restoreTierId = this.restoreTier.getTierId(this.restoreTier.selectedItem, tier.tier);\n\n tier.selectedItem = tier.items.find(x => tier.getTierId(x, x.tier) === restoreTierId) || null;\n\n if (tier.selectedItem != null) {\n if (this.restoreTier.tier === tier.tier) {\n this.currentTierStaged = tier;\n this.applyCurrentTier();\n this.restoreTier = null;\n }\n\n if (childTier != null) {\n this.getTiers(childTier);\n }\n }\n }\n\n if (tier.selectedItem == null && tier.items.length > 0 && tier.highestTier >= tier.tier) {\n tier.selectedItem = tier.items[0];\n\n this.updateCurrentTier(tier);\n\n if (childTier != null) {\n this.getTiers(childTier);\n }\n } else if (tier.selectedItem == null || tier.tier == 4) {\n this.allTiersLoaded$.next(true);\n }\n },\n complete: () => (tier.isLoading = false)\n });\n }\n\n private updateCurrentTier(tier: IHierarchyTier): void {\n // Only broadcast if user's highest tier access is less than or equal to selected tier\n if (tier.highestTier <= tier.tier) {\n this.currentTierStaged = tier;\n if (this.currentTier$.value == null) {\n this.applyCurrentTier();\n }\n }\n }\n\n public getRouteValue(position: number): string {\n const url = environment.useHashStrategy ? window.location.hash : window.location.pathname;\n position = environment.useHashStrategy ? position + 1 : position;\n const params = url.split('/');\n if (params != null && params.length > position) {\n return params[position];\n }\n }\n\n public getTierAbbreviationFromRoute(): string {\n return this.getRouteValue(1);\n }\n\n public getTierIdFromRoute(): string {\n return this.getRouteValue(2);\n }\n\n private clearChildren(tier: IHierarchyTier): void {\n let child = this.getChild(tier.tier);\n\n while (child != null) {\n child.items = [];\n child.selectedItem = null;\n child = this.getChild(child.tier);\n }\n }\n\n private getTier(\n tier: number,\n tierId: string,\n chTinId: number = null,\n supplementalId: number = null\n ): Observable {\n let params = new HttpParams().set('tier', tier.toString()).append('tierId', tierId);\n if (chTinId != null) {\n params = params.append('chTinId', chTinId.toString());\n }\n if (supplementalId != null) {\n params = params.append('supplementalId', supplementalId.toString());\n }\n\n return this.get('/tier', params);\n }\n\n public applyCurrentTier(): void {\n if (this.currentTierStaged == null) {\n return;\n }\n\n if (!this.currentTierStaged.equals(this.currentTier$.value)) {\n const newTier = deepCopy(this.currentTierStaged);\n this.currentTier$.next(newTier);\n }\n\n this.authService.write(this.currentTierKey, this.currentTierStaged.tier);\n this.authService.write(this.currentTierIdKey, this.currentTierStaged.selectedTierIdForDisplay);\n this.authService.write(this.currentUserIdKey, this.authService.getUserId());\n }\n\n public tierSelected(item: HierarchyTierItem, tier: IHierarchyTier): void {\n const child = this.getChild(tier.tier);\n\n if (child != null) {\n this.clearChildren(tier);\n }\n\n if (item != null) {\n this.updateCurrentTier(tier);\n\n if (child != null) {\n this.getTiers(child);\n }\n } else {\n const parent = this.getParent(tier.tier);\n this.updateCurrentTier(parent);\n }\n }\n public updateSelectedItem(tierIndex: number, newSelectedItem: HierarchyTierItem): void {\n this.hierarchyTiers[tierIndex].selectedItem = newSelectedItem;\n }\n public getParent(tier: number): IHierarchyTier {\n const hierarchyTier = this.hierarchyTiers.find(x => x.tier === tier - 1);\n\n return hierarchyTier;\n }\n\n public getChild(tier: number): IHierarchyTier {\n const hierarchyTier = this.hierarchyTiers.find(x => x.tier === tier + 1);\n\n return hierarchyTier;\n }\n\n public async hierarchyTierItemFromId(tierId: string): Promise {\n if (!this.hierarchyTiers) {\n return null;\n }\n\n for (let i = 0; i < this.hierarchyTiers.length; i++) {\n let items = this.hierarchyTiers[i].items;\n if (!items) {\n // REVIEW sometimes isLoading is true, what can we wait for to get the whole list?\n // This function ought to be async and wait for the whole accessible\n // hierarchy to be loaded.\n if (!this.hierarchyTiers[i].selectedItem) {\n // probably isLoading is true\n continue;\n }\n // Pushing the selected item seems to work but feels rather icky\n items = [this.hierarchyTiers[i].selectedItem];\n }\n for (let j = 0; j < items.length; j++) {\n const item = items[j];\n if (!item) {\n continue;\n }\n switch (item.tier) {\n case 1:\n if (item.tier1_ID === tierId) {\n return item;\n }\n break;\n case 2:\n if (item.tier2_ID === tierId) {\n return item;\n }\n break;\n case 3:\n if (item.tier3_ID === tierId) {\n return item;\n }\n break;\n case 4:\n if (item.tier4_ID === tierId) {\n return item;\n }\n break;\n default:\n continue;\n }\n }\n }\n return null;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth-service/auth.service';\nimport { AzureApiBase } from '../azure-api/azure-api-base';\nimport { LogError } from './log-error';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ErrorLoggingService extends AzureApiBase {\n\n /** Service for logging errors to the CoachSQL database */\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.apiBaseUrl, '/logging/error');\n }\n\n /** Use the post http method to post a {@link LogError} request object for logging an exception */\n public logError(error: LogError): Observable {\n return this.post(null, error);\n }\n}\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n// Licensed under the\r\nexport { correlationIdSetPrefix, correlationIdGetPrefix, correlationIdCanIncludeCorrelationHeader, correlationIdGetCorrelationContext, correlationIdGetCorrelationContextValue, dateTimeUtilsNow, dateTimeUtilsDuration, isInternalApplicationInsightsEndpoint, createDistributedTraceContextFromTrace } from \"./Util\";\r\nexport { ThrottleMgr } from \"./ThrottleMgr\";\r\nexport { parseConnectionString, ConnectionStringParser } from \"./ConnectionStringParser\";\r\nexport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nexport { Envelope } from \"./Telemetry/Common/Envelope\";\r\nexport { Event } from \"./Telemetry/Event\";\r\nexport { Exception } from \"./Telemetry/Exception\";\r\nexport { Metric } from \"./Telemetry/Metric\";\r\nexport { PageView } from \"./Telemetry/PageView\";\r\nexport { RemoteDependencyData } from \"./Telemetry/RemoteDependencyData\";\r\nexport { Trace } from \"./Telemetry/Trace\";\r\nexport { PageViewPerformance } from \"./Telemetry/PageViewPerformance\";\r\nexport { Data } from \"./Telemetry/Common/Data\";\r\nexport { SeverityLevel } from \"./Interfaces/Contracts/SeverityLevel\";\r\nexport { ConfigurationManager } from \"./Interfaces/IConfig\";\r\nexport { ContextTagKeys } from \"./Interfaces/Contracts/ContextTagKeys\";\r\nexport { dataSanitizeKeyAndAddUniqueness, dataSanitizeKey, dataSanitizeString, dataSanitizeUrl, dataSanitizeMessage, dataSanitizeException, dataSanitizeProperties, dataSanitizeMeasurements, dataSanitizeId, dataSanitizeInput, dsPadNumber } from \"./Telemetry/Common/DataSanitizer\";\r\nexport { TelemetryItemCreator, createTelemetryItem } from \"./TelemetryItemCreator\";\r\nexport { CtxTagKeys, Extensions } from \"./Interfaces/PartAExtensions\";\r\nexport { DistributedTracingModes, EventPersistence } from \"./Enums\";\r\nexport { stringToBoolOrDefault, msToTimeSpan, getExtensionByName, isCrossOriginError } from \"./HelperFuncs\";\r\nexport { isBeaconsSupported as isBeaconApiSupported, createTraceParent, parseTraceParent, isValidTraceId, isValidSpanId, isValidTraceParent, isSampledFlag, formatTraceParent, findW3cTraceParent } from \"@microsoft/applicationinsights-core-js\";\r\nexport { createDomEvent } from \"./DomHelperFuncs\";\r\nexport { utlDisableStorage, utlEnableStorage, utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage, utlRemoveStorage, utlCanUseSessionStorage, utlGetSessionStorageKeys, utlGetSessionStorage, utlSetSessionStorage, utlRemoveSessionStorage, utlSetStoragePrefix } from \"./StorageHelperFuncs\";\r\nexport { urlParseUrl, urlGetAbsoluteUrl, urlGetPathName, urlGetCompleteUrl, urlParseHost, urlParseFullHost } from \"./UrlHelperFuncs\";\r\nexport { createOfflineListener } from \"./Offline\";\r\nexport var PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport var BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport var AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n","/*! https://github.com/nevware21/ts-utils v0.11.3 */\n/*\n * Copyright (c) NevWare21 Solutions LLC and contributors. All rights reserved.\n * Licensed under the MIT license.\n */\n/*#__NO_SIDE_EFFECTS__*/\nfunction _pureAssign(func1, func2) {\n return func1 || func2;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _pureRef(value, name) {\n return value[name];\n}\n\nvar UNDEF_VALUE = undefined;\nvar NULL_VALUE = null;\nvar EMPTY = \"\";\nvar FUNCTION = \"function\";\nvar OBJECT = \"object\";\nvar PROTOTYPE = \"prototype\";\nvar __PROTO__ = \"__proto__\";\nvar UNDEFINED = \"undefined\";\nvar CONSTRUCTOR = \"constructor\";\nvar SYMBOL = \"Symbol\";\nvar POLYFILL_TAG = \"_polyfill\";\nvar LENGTH = \"length\";\nvar NAME = \"name\";\nvar CALL = \"call\";\nvar TO_STRING = \"toString\";\nvar ObjClass = ( /*#__PURE__*/_pureAssign(Object));\nvar ObjProto = ( /*#__PURE__*/_pureRef(ObjClass, PROTOTYPE));\nvar StrCls = ( /*#__PURE__*/_pureAssign(String));\nvar StrProto = ( /*#__PURE__*/_pureRef(StrCls, PROTOTYPE));\nvar MathCls = ( /*#__PURE__*/_pureAssign(Math));\nvar ArrCls = ( /*#__PURE__*/_pureAssign(Array));\nvar ArrProto = ( /*#__PURE__*/_pureRef(ArrCls, PROTOTYPE));\nvar ArrSlice = ( /*#__PURE__*/_pureRef(ArrProto, \"slice\"));\n\nfunction safe(func, argArray) {\n try {\n return {\n v: func.apply(this, argArray)\n };\n }\n catch (e) {\n return { e: e };\n }\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction safeGet(cb, defValue) {\n var result = safe(cb);\n return result.e ? defValue : result.v;\n}\n\nvar _primitiveTypes;\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createIs(theType) {\n return function (value) {\n return typeof value === theType;\n };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createObjIs(theName) {\n var theType = \"[object \" + theName + \"]\";\n return function (value) {\n return !!(value && objToString(value) === theType);\n };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction objToString(value) {\n return ObjProto[TO_STRING].call(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isTypeof(value, theType) {\n return typeof value === theType;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isUndefined(value) {\n return typeof value === UNDEFINED || value === UNDEFINED;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isStrictUndefined(arg) {\n return !isDefined(arg);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isNullOrUndefined(value) {\n return value === NULL_VALUE || isUndefined(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isStrictNullOrUndefined(value) {\n return value === NULL_VALUE || !isDefined(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isDefined(arg) {\n return !!arg || arg !== UNDEF_VALUE;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isPrimitive(value) {\n return value === NULL_VALUE || isPrimitiveType(typeof value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isPrimitiveType(theType) {\n !_primitiveTypes && (_primitiveTypes = [\"string\", \"number\", \"boolean\", UNDEFINED, \"symbol\", \"bigint\"]);\n return theType !== OBJECT && _primitiveTypes.indexOf(theType) !== -1;\n}\nvar isString = ( /*#__PURE__*/_createIs(\"string\"));\nvar isFunction = ( /*#__PURE__*/_createIs(FUNCTION));\n/*#__NO_SIDE_EFFECTS__*/\nfunction isObject(value) {\n if (!value && isNullOrUndefined(value)) {\n return false;\n }\n return !!value && typeof value === OBJECT;\n}\nvar isArray = ( /* #__PURE__*/_pureRef(ArrCls, \"isArray\"));\nvar isDate = ( /*#__PURE__*/_createObjIs(\"Date\"));\nvar isNumber = ( /*#__PURE__*/_createIs(\"number\"));\nvar isBoolean = ( /*#__PURE__*/_createIs(\"boolean\"));\nvar isRegExp = ( /*#__PURE__*/_createObjIs(\"RegExp\"));\nvar isFile = ( /*#__PURE__*/_createObjIs(\"File\"));\nvar isFormData = ( /*#__PURE__*/_createObjIs(\"FormData\"));\nvar isBlob = ( /*#__PURE__*/_createObjIs(\"Blob\"));\nvar isArrayBuffer = ( /*#__PURE__*/_createObjIs(\"ArrayBuffer\"));\nvar isError = ( /*#__PURE__*/_createObjIs(\"Error\"));\n/*#__NO_SIDE_EFFECTS__*/\nfunction isPromiseLike(value) {\n return !!(value && value.then && isFunction(value.then));\n}\nvar isThenable = isPromiseLike;\n/*#__NO_SIDE_EFFECTS__*/\nfunction isPromise(value) {\n return !!(value && value.then && value.catch && isFunction(value.then) && isFunction(value.catch));\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isNotTruthy(value) {\n return !value || !isTruthy(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isTruthy(value) {\n return !(!value || safeGet(function () { return !(value && (0 + value)); }, !value));\n}\n\nvar objGetOwnPropertyDescriptor = ( /* #__PURE__ */_pureRef(ObjClass, \"getOwnPropertyDescriptor\"));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction objHasOwnProperty(obj, prop) {\n return !!obj && ObjProto.hasOwnProperty[CALL](obj, prop);\n}\n\nvar objHasOwn = ( /*#__PURE__*/_pureAssign(( /* #__PURE__ */_pureRef(ObjClass, \"hasOwn\")), polyObjHasOwn));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyObjHasOwn(obj, prop) {\n return objHasOwnProperty(obj, prop) || !!objGetOwnPropertyDescriptor(obj, prop);\n}\n\nfunction objForEachKey(theObject, callbackfn, thisArg) {\n if (theObject && isObject(theObject)) {\n for (var prop in theObject) {\n if (objHasOwn(theObject, prop)) {\n if (callbackfn[CALL](thisArg || theObject, prop, theObject[prop]) === -1) {\n break;\n }\n }\n }\n }\n}\n\nvar propMap = {\n e: \"enumerable\",\n c: \"configurable\",\n v: \"value\",\n w: \"writable\",\n g: \"get\",\n s: \"set\"\n};\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createProp(value) {\n var prop = {};\n prop[propMap[\"c\"]] = true;\n prop[propMap[\"e\"]] = true;\n if (value.l) {\n prop.get = function () { return value.l.v; };\n var desc = objGetOwnPropertyDescriptor(value.l, \"v\");\n if (desc && desc.set) {\n prop.set = function (newValue) {\n value.l.v = newValue;\n };\n }\n }\n objForEachKey(value, function (key, value) {\n prop[propMap[key]] = isUndefined(value) ? prop[propMap[key]] : value;\n });\n return prop;\n}\nvar objDefineProp = ( /*#__PURE__*/_pureRef(ObjClass, \"defineProperty\"));\nvar objDefineProperties = ( /*#__PURE__*/_pureRef(ObjClass, \"defineProperties\"));\nfunction objDefineGet(target, key, value, configurable, enumerable) {\n var _a;\n return objDefineProp(target, key, _createProp((_a = {\n e: enumerable,\n c: configurable\n },\n _a[isFunction(value) ? \"g\" : \"v\"] = value,\n _a)));\n}\nfunction objDefineAccessors(target, prop, getProp, setProp, configurable, enumerable) {\n var desc = {\n e: enumerable,\n c: configurable\n };\n if (getProp) {\n desc.g = getProp;\n }\n if (setProp) {\n desc.s = setProp;\n }\n return objDefineProp(target, prop, _createProp(desc));\n}\nfunction objDefine(target, key, propDesc) {\n return objDefineProp(target, key, _createProp(propDesc));\n}\nfunction objDefineProps(target, propDescMap) {\n var props = {};\n objForEachKey(propDescMap, function (key, value) {\n props[key] = _createProp(value);\n });\n return objDefineProperties(target, props);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createKeyValueMap(values, keyType, valueType, completeFn, writable) {\n var theMap = {};\n objForEachKey(values, function (key, value) {\n _assignMapValue(theMap, key, keyType ? value : key, writable);\n _assignMapValue(theMap, value, valueType ? value : key, writable);\n });\n return completeFn ? completeFn(theMap) : theMap;\n}\nfunction _assignMapValue(theMap, key, value, writable) {\n objDefineProp(theMap, key, {\n value: value,\n enumerable: true,\n writable: !!writable\n });\n}\n\nvar asString = ( /* #__PURE__ */_pureAssign(StrCls));\n\nvar ERROR_TYPE = \"[object Error]\";\n/*#__NO_SIDE_EFFECTS__*/\nfunction dumpObj(object, format) {\n var propertyValueDump = EMPTY;\n var objType = ObjProto[TO_STRING][CALL](object);\n if (objType === ERROR_TYPE) {\n object = { stack: asString(object.stack), message: asString(object.message), name: asString(object.name) };\n }\n try {\n propertyValueDump = JSON.stringify(object, NULL_VALUE, format ? ((typeof format === \"number\") ? format : 4) : UNDEF_VALUE);\n propertyValueDump = (propertyValueDump && propertyValueDump.replace(/\"(\\w+)\"\\s*:\\s{0,1}/g, \"$1: \")) || asString(object);\n }\n catch (e) {\n propertyValueDump = \" - \" + dumpObj(e, format);\n }\n return objType + \": \" + propertyValueDump;\n}\n\nfunction throwError(message) {\n throw new Error(message);\n}\nfunction throwTypeError(message) {\n throw new TypeError(message);\n}\nfunction throwRangeError(message) {\n throw new RangeError(message);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyObjKeys(obj) {\n if (!isObject(obj) || obj === NULL_VALUE) {\n throwTypeError(\"non-object \" + dumpObj(obj));\n }\n var result = [];\n for (var prop in obj) {\n if (objHasOwn(obj, prop)) {\n result.push(prop);\n }\n }\n return result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyObjEntries(value) {\n var result = [];\n objForEachKey(value, function (key, value) {\n result.push([key, value]);\n });\n return result;\n}\n\nvar _objFreeze = ( /* #__PURE__ */_pureRef(ObjClass, \"freeze\"));\nfunction _doNothing(value) {\n return value;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _getProto(value) {\n return value[__PROTO__] || NULL_VALUE;\n}\nvar objAssign = ( /*#__PURE__*/_pureRef(ObjClass, \"assign\"));\nvar objKeys = ( /*#__PURE__*/_pureRef(ObjClass, \"keys\"));\nfunction objDeepFreeze(value) {\n if (_objFreeze) {\n objForEachKey(value, function (key, value) {\n if (isArray(value) || isObject(value)) {\n objDeepFreeze(value);\n }\n });\n }\n return objFreeze(value);\n}\nvar objFreeze = ( /* #__PURE__*/_pureAssign(_objFreeze, _doNothing));\nvar objSeal = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ObjClass, \"seal\")), _doNothing));\nvar objGetPrototypeOf = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ObjClass, \"getPrototypeOf\")), _getProto));\nvar objEntries = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ObjClass, \"entries\")), polyObjEntries));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createEnum(values) {\n return _createKeyValueMap(values, 1 , 0 , objFreeze);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createEnumKeyMap(values) {\n return _createKeyValueMap(values, 0 , 0 , objFreeze);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createEnumValueMap(values) {\n return _createKeyValueMap(values, 1 , 1 , objFreeze);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createSimpleMap(values) {\n var mapClass = {};\n objForEachKey(values, function (key, value) {\n _assignMapValue(mapClass, key, value[1]);\n _assignMapValue(mapClass, value[0], value[1]);\n });\n return objFreeze(mapClass);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createTypeMap(values) {\n return createSimpleMap(values);\n}\n\nvar _wellKnownSymbolMap = /*#__PURE__*/ createEnumKeyMap({\n asyncIterator: 0 ,\n hasInstance: 1 ,\n isConcatSpreadable: 2 ,\n iterator: 3 ,\n match: 4 ,\n matchAll: 5 ,\n replace: 6 ,\n search: 7 ,\n species: 8 ,\n split: 9 ,\n toPrimitive: 10 ,\n toStringTag: 11 ,\n unscopables: 12\n});\n\nvar GLOBAL_CONFIG_KEY = \"__tsUtils$gblCfg\";\nvar _globalCfg;\n/*#__NO_SIDE_EFFECTS__*/\nfunction _getGlobalValue() {\n var result;\n if (typeof globalThis !== UNDEFINED) {\n result = globalThis;\n }\n if (!result && typeof self !== UNDEFINED) {\n result = self;\n }\n if (!result && typeof window !== UNDEFINED) {\n result = window;\n }\n if (!result && typeof global !== UNDEFINED) {\n result = global;\n }\n return result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _getGlobalConfig() {\n if (!_globalCfg) {\n var gbl = safe(_getGlobalValue).v || {};\n _globalCfg = gbl[GLOBAL_CONFIG_KEY] = gbl[GLOBAL_CONFIG_KEY] || {};\n }\n return _globalCfg;\n}\n\nvar _unwrapFunction = ( _unwrapFunctionWithPoly);\n/*#__NO_SIDE_EFFECTS__*/\nfunction _unwrapFunctionWithPoly(funcName, clsProto, polyFunc) {\n var clsFn = clsProto && clsProto[funcName];\n return function (thisArg) {\n var theFunc = (thisArg && thisArg[funcName]) || clsFn;\n if (theFunc || polyFunc) {\n var theArgs = arguments;\n return (theFunc || polyFunc).apply(thisArg, theFunc ? ArrSlice[CALL](theArgs, 1) : theArgs);\n }\n throwTypeError(\"\\\"\" + asString(funcName) + \"\\\" not defined for \" + dumpObj(thisArg));\n };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _unwrapProp(propName) {\n return function (thisArg) {\n return thisArg[propName];\n };\n}\n\nvar mathMin = ( /*#__PURE__*/_pureRef(MathCls, \"min\"));\nvar mathMax = ( /*#__PURE__*/_pureRef(MathCls, \"max\"));\n\nvar strSlice = ( /*#__PURE__*/_unwrapFunction(\"slice\", StrProto));\n\nvar strSubstring = ( /*#__PURE__*/_unwrapFunction(\"substring\", StrProto));\nvar strSubstr = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"substr\", StrProto, polyStrSubstr));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrSubstr(value, start, length) {\n if (isNullOrUndefined(value)) {\n throwTypeError(\"Invalid \" + dumpObj(value));\n }\n if (length < 0) {\n return EMPTY;\n }\n start = start || 0;\n if (start < 0) {\n start = mathMax(start + value[LENGTH], 0);\n }\n if (isUndefined(length)) {\n return strSlice(value, start);\n }\n return strSlice(value, start, start + length);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strLeft(value, count) {\n return strSubstring(value, 0, count);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strRight(value, count) {\n return count <= 0 ? EMPTY : (value[LENGTH] > count ? strSlice(value, -count) : value);\n}\n\nvar UNIQUE_REGISTRY_ID = \"_urid\";\nvar _polySymbols;\n/*#__NO_SIDE_EFFECTS__*/\nfunction _globalSymbolRegistry() {\n if (!_polySymbols) {\n var gblCfg = _getGlobalConfig();\n _polySymbols = gblCfg.gblSym = gblCfg.gblSym || { k: {}, s: {} };\n }\n return _polySymbols;\n}\nvar _wellKnownSymbolCache;\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyNewSymbol(description) {\n var theSymbol = {\n description: asString(description),\n toString: function () { return SYMBOL + \"(\" + description + \")\"; }\n };\n theSymbol[POLYFILL_TAG] = true;\n return theSymbol;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polySymbolFor(key) {\n var registry = _globalSymbolRegistry();\n if (!objHasOwn(registry.k, key)) {\n var newSymbol_1 = polyNewSymbol(key);\n var regId_1 = objKeys(registry.s).length;\n newSymbol_1[UNIQUE_REGISTRY_ID] = function () { return regId_1 + \"_\" + newSymbol_1[TO_STRING](); };\n registry.k[key] = newSymbol_1;\n registry.s[newSymbol_1[UNIQUE_REGISTRY_ID]()] = asString(key);\n }\n return registry.k[key];\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polySymbolKeyFor(sym) {\n if (!sym || !sym[TO_STRING] || strSubstring(sym[TO_STRING](), 0, 6) != SYMBOL) {\n throwTypeError(sym + \" is not a symbol\");\n }\n var regId = sym[POLYFILL_TAG] && sym[UNIQUE_REGISTRY_ID] && sym[UNIQUE_REGISTRY_ID]();\n return regId ? _globalSymbolRegistry().s[regId] : undefined;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyGetKnownSymbol(name) {\n !_wellKnownSymbolCache && (_wellKnownSymbolCache = {});\n var result;\n var knownName = _wellKnownSymbolMap[name];\n if (knownName) {\n result = _wellKnownSymbolCache[knownName] = _wellKnownSymbolCache[knownName] || polyNewSymbol(SYMBOL + \".\" + knownName);\n }\n return result;\n}\n\nvar _globalLazyTestHooks;\nfunction _initTestHooks() {\n _globalLazyTestHooks = _getGlobalConfig();\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getLazy(cb) {\n var lazyValue = {};\n !_globalLazyTestHooks && _initTestHooks();\n lazyValue.b = _globalLazyTestHooks.lzy;\n objDefineProp(lazyValue, \"v\", {\n configurable: true,\n get: function () {\n var result = cb();\n if (!_globalLazyTestHooks.lzy) {\n objDefineProp(lazyValue, \"v\", {\n value: result\n });\n }\n lazyValue.b = _globalLazyTestHooks.lzy;\n return result;\n }\n });\n return lazyValue;\n}\nfunction setBypassLazyCache(newValue) {\n !_globalLazyTestHooks && _initTestHooks();\n _globalLazyTestHooks.lzy = newValue;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createCachedValue(value) {\n return objDefineProp({\n toJSON: function () { return value; }\n }, \"v\", { value: value });\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createDeferredCachedValue(cb) {\n var theValue = {\n toJSON: function () { return theValue.v; }\n };\n return objDefineProp(theValue, \"v\", {\n get: function () {\n var result = cb();\n cb = NULL_VALUE;\n objDefineProp(theValue, \"v\", { value: result });\n return result;\n },\n configurable: true\n });\n}\n\nvar WINDOW = \"window\";\nvar _cachedGlobal;\nfunction _getGlobalInstFn(getFn, theArgs) {\n var cachedValue;\n return function () {\n !_globalLazyTestHooks && _initTestHooks();\n (!cachedValue || _globalLazyTestHooks.lzy) && (cachedValue = createCachedValue(safe(getFn, theArgs).v));\n return cachedValue.v;\n };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction lazySafeGetInst(name) {\n return getLazy(function () { return safe((getInst), [name]).v || UNDEF_VALUE; });\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getGlobal(useCached) {\n !_globalLazyTestHooks && _initTestHooks();\n (!_cachedGlobal || useCached === false || _globalLazyTestHooks.lzy) && (_cachedGlobal = createCachedValue(safe(_getGlobalValue).v || NULL_VALUE));\n return _cachedGlobal.v;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getInst(name, useCached) {\n var gbl = (!_cachedGlobal || useCached === false) ? getGlobal(useCached) : _cachedGlobal.v;\n if (gbl && gbl[name]) {\n return gbl[name];\n }\n if (name === WINDOW) {\n return getWindow();\n }\n return NULL_VALUE;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasDocument() {\n return !!( /*#__PURE__*/getDocument());\n}\nvar getDocument = ( /*#__PURE__*/_getGlobalInstFn(getInst, [\"document\"]));\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasWindow() {\n return !!( /*#__PURE__*/getWindow());\n}\nvar getWindow = ( /*#__PURE__*/_getGlobalInstFn(getInst, [WINDOW]));\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasNavigator() {\n return !!( /*#__PURE__*/getNavigator());\n}\nvar getNavigator = ( /*#__PURE__*/_getGlobalInstFn(getInst, [\"navigator\"]));\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasHistory() {\n return !!( /*#__PURE__*/getHistory());\n}\nvar getHistory = ( /*#__PURE__*/_getGlobalInstFn(getInst, [\"history\"]));\nvar isNode = ( /*#__PURE__*/_getGlobalInstFn(function () {\n return !!( /*#__PURE__*/safe(function () { return (process && (process.versions || {}).node); }).v);\n}));\nvar isWebWorker = ( /*#__PURE__*/_getGlobalInstFn(function () {\n return !!( /*#__PURE__*/safe(function () { return self && self instanceof WorkerGlobalScope; }).v);\n}));\n\nvar _symbol;\nvar _symbolFor;\nvar _symbolKeyFor;\n/*#__NO_SIDE_EFFECTS__*/\nfunction _initSymbol() {\n _symbol = ( /*#__PURE__*/createCachedValue(safe((getInst), [SYMBOL]).v));\n return _symbol;\n}\nfunction _getSymbolKey(key) {\n var gblSym = ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol());\n return (gblSym.v ? gblSym.v[key] : UNDEF_VALUE);\n}\nvar isSymbol = ( /*#__PURE__*/_createIs(\"symbol\"));\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasSymbol() {\n return !!( /*#__PURE__*/getSymbol());\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getSymbol() {\n !_globalLazyTestHooks && _initTestHooks();\n return ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol()).v;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getKnownSymbol(name, noPoly) {\n var knownName = _wellKnownSymbolMap[name];\n !_globalLazyTestHooks && _initTestHooks();\n var sym = ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol());\n return sym.v ? sym.v[knownName || name] : (!noPoly ? polyGetKnownSymbol(name) : UNDEF_VALUE);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction newSymbol(description, noPoly) {\n !_globalLazyTestHooks && _initTestHooks();\n var sym = ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol());\n return sym.v ? sym.v(description) : (!noPoly ? polyNewSymbol(description) : NULL_VALUE);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction symbolFor(key) {\n !_globalLazyTestHooks && _initTestHooks();\n _symbolFor = ((!_globalLazyTestHooks.lzy ? _symbolFor : 0) || ( /*#__PURE__*/createCachedValue(safe((_getSymbolKey), [\"for\"]).v)));\n return (_symbolFor.v || polySymbolFor)(key);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction symbolKeyFor(sym) {\n !_globalLazyTestHooks && _initTestHooks();\n _symbolKeyFor = ((!_globalLazyTestHooks.lzy ? _symbolKeyFor : 0) || ( /*#__PURE__*/createCachedValue(safe((_getSymbolKey), [\"keyFor\"]).v)));\n return (_symbolKeyFor.v || polySymbolKeyFor)(sym);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction isIterator(value) {\n return !!value && isFunction(value.next);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isIterable(value) {\n return !isStrictNullOrUndefined(value) && isFunction(value[getKnownSymbol(3 )]);\n}\n\nvar _iterSymbol$1;\nfunction iterForOf(iter, callbackfn, thisArg) {\n if (iter) {\n if (!isIterator(iter)) {\n !_iterSymbol$1 && (_iterSymbol$1 = createCachedValue(getKnownSymbol(3 )));\n iter = iter[_iterSymbol$1.v] ? iter[_iterSymbol$1.v]() : null;\n }\n if (isIterator(iter)) {\n var err = UNDEF_VALUE;\n var iterResult = UNDEF_VALUE;\n try {\n var count = 0;\n while (!(iterResult = iter.next()).done) {\n if (callbackfn[CALL](thisArg || iter, iterResult.value, count, iter) === -1) {\n break;\n }\n count++;\n }\n }\n catch (failed) {\n err = { e: failed };\n if (iter.throw) {\n iterResult = NULL_VALUE;\n iter.throw(err);\n }\n }\n finally {\n try {\n if (iterResult && !iterResult.done) {\n iter.return && iter.return(iterResult);\n }\n }\n finally {\n if (err) {\n // eslint-disable-next-line no-unsafe-finally\n throw err.e;\n }\n }\n }\n }\n }\n}\n\nfunction fnApply(fn, thisArg, argArray) {\n return fn.apply(thisArg, argArray);\n}\nfunction fnCall(fn, thisArg) {\n return fn.apply(thisArg, ArrSlice[CALL](arguments, 2));\n}\nfunction fnBind(fn, thisArg) {\n return fn.bind.apply(fn, ArrSlice[CALL](arguments, 1));\n}\n\nfunction arrAppend(target, elms) {\n if (!isUndefined(elms) && target) {\n if (isArray(elms)) {\n fnApply(target.push, target, elms);\n }\n else if (isIterator(elms) || isIterable(elms)) {\n iterForOf(elms, function (elm) {\n target.push(elm);\n });\n }\n else {\n target.push(elms);\n }\n }\n return target;\n}\n\nvar arrEvery = /*#__PURE__*/ _unwrapFunction(\"every\", ArrProto);\nvar arrFilter = /*#__PURE__*/ _unwrapFunction(\"filter\", ArrProto);\n\nfunction arrForEach(theArray, callbackfn, thisArg) {\n if (theArray) {\n var len = theArray[LENGTH] >>> 0;\n for (var idx = 0; idx < len; idx++) {\n if (idx in theArray) {\n if (callbackfn[CALL](thisArg || theArray, theArray[idx], idx, theArray) === -1) {\n break;\n }\n }\n }\n }\n}\n\nvar arrIndexOf = ( /*#__PURE__*/_unwrapFunction(\"indexOf\", ArrProto));\nvar arrLastIndexOf = ( /*#__PURE__*/_unwrapFunction(\"lastIndexOf\", ArrProto));\n\nvar arrMap = ( /*#__PURE__*/_unwrapFunction(\"map\", ArrProto));\n\nfunction arrSlice(theArray, start, end) {\n return ((theArray && theArray[\"slice\"]) || ArrSlice).apply(theArray, ArrSlice[CALL](arguments, 1));\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyIsArray(value) {\n if (isNullOrUndefined(value)) {\n return false;\n }\n return objToString(value) === \"[object Array]\";\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyArrIncludes(theArray, searchElement, fromIndex) {\n return arrIndexOf(theArray, searchElement, fromIndex) !== -1;\n}\nfunction polyArrFind(theArray, callbackFn, thisArg) {\n var result;\n var idx = polyArrFindIndex(theArray, callbackFn, thisArg);\n return idx !== -1 ? theArray[idx] : result;\n}\nfunction polyArrFindIndex(theArray, callbackFn, thisArg) {\n var result = -1;\n arrForEach(theArray, function (value, index) {\n if (callbackFn[CALL](thisArg | theArray, value, index, theArray)) {\n result = index;\n return -1;\n }\n });\n return result;\n}\nfunction polyArrFindLast(theArray, callbackFn, thisArg) {\n var result;\n var idx = polyArrFindLastIndex(theArray, callbackFn, thisArg);\n return idx !== -1 ? theArray[idx] : result;\n}\nfunction polyArrFindLastIndex(theArray, callbackFn, thisArg) {\n var result = -1;\n var len = theArray[LENGTH] >>> 0;\n for (var idx = len - 1; idx >= 0; idx--) {\n if (idx in theArray && callbackFn[CALL](thisArg | theArray, theArray[idx], idx, theArray)) {\n result = idx;\n break;\n }\n }\n return result;\n}\nfunction polyArrFrom(theValue, mapFn, thisArg) {\n if (isArray(theValue)) {\n var result_1 = arrSlice(theValue);\n return mapFn ? arrMap(result_1, mapFn, thisArg) : result_1;\n }\n var result = [];\n iterForOf(theValue, function (value, cnt) {\n return result.push(mapFn ? mapFn[CALL](thisArg, value, cnt) : value);\n });\n return result;\n}\n\nvar arrFind = /*#__PURE__*/ _unwrapFunctionWithPoly(\"find\", ArrProto, polyArrFind);\nvar arrFindIndex = /*#__PURE__*/ _unwrapFunctionWithPoly(\"findIndex\", ArrProto, polyArrFindIndex);\nvar arrFindLast = /*#__PURE__*/ _unwrapFunctionWithPoly(\"findLast\", ArrProto, polyArrFindLast);\nvar arrFindLastIndex = /*#__PURE__*/ _unwrapFunctionWithPoly(\"findLastIndex\", ArrProto, polyArrFindLastIndex);\n\nvar arrFrom = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ArrCls, \"from\")), polyArrFrom));\n\nvar arrIncludes = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"includes\", ArrProto, polyArrIncludes));\nvar arrContains = arrIncludes;\n\nvar arrReduce = ( /*#__PURE__*/_unwrapFunction(\"reduce\", ArrProto));\n\nvar arrSome = ( /*#__PURE__*/_unwrapFunction(\"some\", ArrProto));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createFnDeferredProxy(hostFn, funcName) {\n return function () {\n var theArgs = ArrSlice[CALL](arguments);\n var theHost = hostFn();\n return fnApply(theHost[funcName], theHost, theArgs);\n };\n}\nfunction createProxyFuncs(target, host, funcDefs) {\n if (target && host && isArray(funcDefs)) {\n var isDeferred_1 = isFunction(host);\n arrForEach(funcDefs, function (funcDef) {\n var targetName = (funcDef.as || funcDef.n);\n if (funcDef.rp === false && target[targetName]) {\n return;\n }\n target[targetName] = isDeferred_1 ?\n createFnDeferredProxy(host, funcDef.n) :\n fnBind(host[funcDef.n], host);\n });\n }\n return target;\n}\n\nvar _iterSymbol;\n/*#__NO_SIDE_EFFECTS__*/\nfunction readArgs(theArgs, start, end) {\n if (!objHasOwn(theArgs, LENGTH)) {\n !_iterSymbol && (_iterSymbol = createCachedValue(hasSymbol() && getKnownSymbol(3 )));\n var iterFn = _iterSymbol.v && theArgs[_iterSymbol.v];\n if (iterFn) {\n var values_1 = [];\n var from_1 = (start === UNDEF_VALUE || start < 0) ? 0 : start;\n var to_1 = end < 0 || start < 0 ? UNDEF_VALUE : end;\n iterForOf(iterFn[CALL](theArgs), function (value, cnt) {\n if (to_1 !== UNDEF_VALUE && cnt >= to_1) {\n return -1;\n }\n if (cnt >= from_1) {\n values_1.push(value);\n }\n });\n if ((start === UNDEF_VALUE || start >= 0) && (end === UNDEF_VALUE || end >= 0)) {\n return values_1;\n }\n theArgs = values_1;\n }\n }\n return arrSlice(theArgs, start, end);\n}\n\nvar objCreate = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ObjClass, \"create\")), polyObjCreate));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyObjCreate(obj) {\n if (!obj) {\n return {};\n }\n var type = typeof obj;\n if (type !== OBJECT && type !== FUNCTION) {\n throwTypeError(\"Prototype must be an Object or function: \" + dumpObj(obj));\n }\n function tempFunc() { }\n tempFunc[PROTOTYPE] = obj;\n return new tempFunc();\n}\n\nvar _isProtoArray;\nfunction objSetPrototypeOf(obj, proto) {\n var fn = ObjClass[\"setPrototypeOf\"] ||\n function (d, b) {\n var _a;\n !_isProtoArray && (_isProtoArray = createCachedValue((_a = {}, _a[__PROTO__] = [], _a) instanceof Array));\n _isProtoArray.v ? d[__PROTO__] = b : objForEachKey(b, function (key, value) { return d[key] = value; });\n };\n return fn(obj, proto);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createCustomError(name, d, b) {\n safe(objDefine, [d, NAME, { v: name, c: true, e: false }]);\n d = objSetPrototypeOf(d, b);\n function __() {\n this[CONSTRUCTOR] = d;\n safe(objDefine, [this, NAME, { v: name, c: true, e: false }]);\n }\n d[PROTOTYPE] = b === NULL_VALUE ? objCreate(b) : (__[PROTOTYPE] = b[PROTOTYPE], new __());\n return d;\n}\nfunction _setName(baseClass, name) {\n name && (baseClass[NAME] = name);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createCustomError(name, constructCb, errorBase) {\n var theBaseClass = errorBase || Error;\n var orgName = theBaseClass[PROTOTYPE][NAME];\n var captureFn = Error.captureStackTrace;\n return _createCustomError(name, function () {\n var _this = this;\n var theArgs = arguments;\n try {\n safe(_setName, [theBaseClass, name]);\n var _self = fnApply(theBaseClass, _this, ArrSlice[CALL](theArgs)) || _this;\n if (_self !== _this) {\n var orgProto = objGetPrototypeOf(_this);\n if (orgProto !== objGetPrototypeOf(_self)) {\n objSetPrototypeOf(_self, orgProto);\n }\n }\n captureFn && captureFn(_self, _this[CONSTRUCTOR]);\n constructCb && constructCb(_self, theArgs);\n return _self;\n }\n finally {\n safe(_setName, [theBaseClass, orgName]);\n }\n }, theBaseClass);\n}\nvar _unsupportedError;\nfunction throwUnsupported(message) {\n if (!_unsupportedError) {\n _unsupportedError = createCustomError(\"UnsupportedError\");\n }\n throw new _unsupportedError(message);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction utcNow() {\n return (Date.now || polyUtcNow)();\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyUtcNow() {\n return new Date().getTime();\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createTrimFn(exp) {\n return function _doTrim(value) {\n if (isNullOrUndefined(value)) {\n throwTypeError(\"strTrim called [\" + dumpObj(value) + \"]\");\n }\n if (value && value.replace) {\n value = value.replace(exp, EMPTY);\n }\n return value;\n };\n}\nvar polyStrTrim = ( /*#__PURE__*/_createTrimFn(/^\\s+|(?=\\s)\\s+$/g));\nvar polyStrTrimStart = ( /*#__PURE__*/_createTrimFn(/^\\s+/g));\nvar polyStrTrimEnd = ( /*#__PURE__*/_createTrimFn(/(?=\\s)\\s+$/g));\n\nvar strTrim = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"trim\", StrProto, polyStrTrim));\nvar strTrimStart = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"trimStart\", StrProto, polyStrTrimStart));\nvar strTrimLeft = ( /*#__PURE__*/_pureAssign(strTrimStart));\nvar strTrimEnd = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"trimEnd\", StrProto, polyStrTrimEnd));\nvar strTrimRight = ( /*#__PURE__*/_pureAssign(strTrimEnd));\n\nvar strUpper = ( /*#__PURE__*/_unwrapFunction(\"toUpperCase\", StrProto));\nvar strLower = ( /*#__PURE__*/_unwrapFunction(\"toLowerCase\", StrProto));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _convertCase(value, newPrefix, upperWord) {\n return strTrim(asString(value)).replace(/((_|\\W)+(\\w){0,1}|([a-z])([A-Z]))/g, function (_match, _g1, _g2, wordStart, upperPrefix, upperLetter) {\n var convertMatch = wordStart || upperLetter || EMPTY;\n if (upperWord) {\n convertMatch = strUpper(convertMatch);\n }\n return (upperPrefix || EMPTY) + newPrefix + convertMatch;\n });\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strLetterCase(value) {\n return asString(value).replace(/(_|\\b)\\w/g, strUpper);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strCamelCase(value, upperFirst) {\n var result = _convertCase(value, \"\", true);\n return result.replace(/^\\w/, upperFirst ? strUpper : strLower);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strKebabCase(value, scream) {\n var result = _convertCase(value, \"-\");\n return (scream ? strUpper : strLower)(result);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strSnakeCase(value, scream) {\n var result = _convertCase(value, \"_\");\n return (scream ? strUpper : strLower)(result);\n}\n\nvar mathFloor = ( /*#__PURE__*/_pureRef(MathCls, \"floor\"));\nvar mathCeil = ( /*#__PURE__*/_pureRef(MathCls, \"ceil\"));\n\nvar mathTrunc = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(MathCls, \"trunc\")), polyMathTrunc));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyMathTrunc(value) {\n var theValue = +value;\n return (theValue > 0 ? mathFloor : mathCeil)(theValue);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction mathToInt(value, throwInfinity) {\n var result = +value;\n if (result == Infinity && throwInfinity) {\n throwRangeError(\"invalid value [\" + dumpObj(value) + \"]\");\n }\n return result !== result || result === 0 ? 0 : mathTrunc(result);\n}\n\nvar strRepeat = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"repeat\", StrProto, polyStrRepeat));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrRepeat(value, count) {\n if (isNullOrUndefined(value)) {\n throwTypeError(\"can't convert [\" + dumpObj(value) + \"]\");\n }\n count = mathToInt(count, true);\n if (count < 0) {\n throwRangeError(\"invalid count must be >= 0 && < Infinity\");\n }\n var pad = isString(value) ? value : asString(value);\n var result = EMPTY;\n for (; count > 0; (count >>>= 1) && (pad += pad)) {\n if (count & 1) {\n result += pad;\n }\n }\n return result;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _padValue(value, targetLength, padString) {\n var result = EMPTY;\n targetLength = mathToInt(targetLength, true);\n targetLength >>= 0;\n var len = value[LENGTH];\n if (len < targetLength) {\n result = isNullOrUndefined(padString) ? \" \" : asString(padString);\n targetLength = targetLength - len;\n if (targetLength > result[LENGTH]) {\n result = strRepeat(result, mathCeil(targetLength / result[LENGTH]));\n }\n if (result[LENGTH] > targetLength) {\n result = strSubstring(result, 0, targetLength);\n }\n }\n return result;\n}\nvar strPadStart = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"padStart\", StrProto, polyStrPadStart));\nvar strPadEnd = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"padEnd\", StrProto, polyStrPadEnd));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrPadStart(value, targetLength, padString) {\n return _padValue(value, targetLength, padString) + value;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrPadEnd(value, targetLength, padString) {\n return value + _padValue(value, targetLength, padString);\n}\n\nvar DBL_QUOTE = \"\\\"\";\nvar INVALID_JS_NAME = /([^\\w\\d_$])/g;\nvar _htmlEntityCache;\n/*#__NO_SIDE_EFFECTS__*/\nfunction normalizeJsName(jsName, camelCase) {\n var result = asString(jsName).replace(INVALID_JS_NAME, \"_\");\n return !isUndefined(camelCase) ? strCamelCase(result, !camelCase) : result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction encodeAsJson(value, format) {\n var result;\n if (isString(value)) {\n result = DBL_QUOTE + value.replace(/[^\\w .,\\-!@#$%\\^&*\\(\\)_+={}\\[\\]:;|<>?]/g, function (match) {\n if (match === DBL_QUOTE || match === \"\\\\\") {\n return \"\\\\\" + match;\n }\n var hex = match.charCodeAt(0)[TO_STRING](16);\n return \"\\\\u\" + strPadStart(strUpper(hex), 4, \"0\");\n }) + DBL_QUOTE;\n }\n else {\n try {\n result = JSON.stringify(value, NULL_VALUE, format ? (isNumber(format) ? format : 4) : UNDEF_VALUE);\n }\n catch (e) {\n result = DBL_QUOTE + dumpObj(e) + DBL_QUOTE;\n }\n }\n return result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction encodeAsHtml(value) {\n !_htmlEntityCache && (_htmlEntityCache = {\n \"&\": \"amp\",\n \"<\": \"lt\",\n \">\": \"gt\",\n \"\\\"\": \"quot\",\n \"'\": \"#39\"\n });\n return asString(value).replace(/[&<>\"']/g, function (match) { return \"&\" + _htmlEntityCache[match] + \";\"; });\n}\n\nvar _fnToString;\nvar _objCtrFnString;\nvar _gblWindow;\n/*#__NO_SIDE_EFFECTS__*/\nfunction isPlainObject(value) {\n if (!value || typeof value !== OBJECT) {\n return false;\n }\n if (!_gblWindow) {\n _gblWindow = hasWindow() ? getWindow() : true;\n }\n var result = false;\n if (value !== _gblWindow) {\n if (!_objCtrFnString) {\n _fnToString = Function[PROTOTYPE][TO_STRING];\n _objCtrFnString = _fnToString[CALL](ObjClass);\n }\n try {\n var proto = objGetPrototypeOf(value);\n result = !proto;\n if (!result) {\n if (objHasOwnProperty(proto, CONSTRUCTOR)) {\n proto = proto[CONSTRUCTOR];\n }\n result = proto && typeof proto === FUNCTION && _fnToString[CALL](proto) === _objCtrFnString;\n }\n }\n catch (ex) {\n }\n }\n return result;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _defaultDeepCopyHandler(details) {\n details.value && plainObjDeepCopyHandler(details);\n return true;\n}\nvar defaultDeepCopyHandlers = [\n arrayDeepCopyHandler,\n plainObjDeepCopyHandler,\n functionDeepCopyHandler,\n dateDeepCopyHandler\n];\n/*#__NO_SIDE_EFFECTS__*/\nfunction _getSetVisited(visitMap, source, newPath, cb) {\n var theEntry;\n arrForEach(visitMap, function (entry) {\n if (entry.k === source) {\n theEntry = entry;\n return -1;\n }\n });\n if (!theEntry) {\n theEntry = { k: source, v: source };\n visitMap.push(theEntry);\n cb(theEntry);\n }\n return theEntry.v;\n}\nfunction _deepCopy(visitMap, value, ctx, key) {\n var userHandler = ctx.handler;\n var newPath = ctx.path ? (key ? ctx.path.concat(key) : ctx.path) : [];\n var newCtx = {\n handler: ctx.handler,\n src: ctx.src,\n path: newPath\n };\n var theType = typeof value;\n var isPlain = false;\n var isPrim = false;\n if (value && theType === OBJECT) {\n isPlain = isPlainObject(value);\n }\n else {\n isPrim = value === NULL_VALUE || isPrimitiveType(theType);\n }\n var details = {\n type: theType,\n isPrim: isPrim,\n isPlain: isPlain,\n value: value,\n result: value,\n path: newPath,\n origin: ctx.src,\n copy: function (source, newKey) {\n return _deepCopy(visitMap, source, newKey ? newCtx : ctx, newKey);\n },\n copyTo: function (target, source) {\n return _copyProps(visitMap, target, source, newCtx);\n }\n };\n if (!details.isPrim) {\n return _getSetVisited(visitMap, value, newPath, function (newEntry) {\n objDefine(details, \"result\", {\n g: function () {\n return newEntry.v;\n },\n s: function (newValue) {\n newEntry.v = newValue;\n }\n });\n var idx = 0;\n var handler = userHandler;\n while (!(handler || (idx < defaultDeepCopyHandlers.length ? defaultDeepCopyHandlers[idx++] : _defaultDeepCopyHandler))[CALL](ctx, details)) {\n handler = NULL_VALUE;\n }\n });\n }\n if (userHandler && userHandler[CALL](ctx, details)) {\n return details.result;\n }\n return value;\n}\nfunction _copyProps(visitMap, target, source, ctx) {\n if (!isNullOrUndefined(source)) {\n for (var key in source) {\n target[key] = _deepCopy(visitMap, source[key], ctx, key);\n }\n }\n return target;\n}\nfunction objCopyProps(target, source, handler) {\n var ctx = {\n handler: handler,\n src: source,\n path: []\n };\n return _copyProps([], target, source, ctx);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction objDeepCopy(source, handler) {\n var ctx = {\n handler: handler,\n src: source\n };\n return _deepCopy([], source, ctx);\n}\nfunction arrayDeepCopyHandler(details) {\n var value = details.value;\n if (isArray(value)) {\n var target = details.result = [];\n target.length = value.length;\n details.copyTo(target, value);\n return true;\n }\n return false;\n}\nfunction dateDeepCopyHandler(details) {\n var value = details.value;\n if (isDate(value)) {\n details.result = new Date(value.getTime());\n return true;\n }\n return false;\n}\nfunction functionDeepCopyHandler(details) {\n if (details.type === FUNCTION) {\n return true;\n }\n return false;\n}\nfunction plainObjDeepCopyHandler(details) {\n var value = details.value;\n if (value && details.isPlain) {\n var target = details.result = {};\n details.copyTo(target, value);\n return true;\n }\n return false;\n}\n\nfunction _doExtend(target, theArgs) {\n arrForEach(theArgs, function (theArg) {\n objCopyProps(target, theArg);\n });\n return target;\n}\nfunction deepExtend(target, obj1, obj2, obj3, obj4, obj5, obj6) {\n return _doExtend(objDeepCopy(target) || {}, ArrSlice[CALL](arguments));\n}\nfunction objExtend(target, obj1, obj2, obj3, obj4, obj5, obj6) {\n return _doExtend(target || {}, ArrSlice[CALL](arguments));\n}\n\nvar getLength = ( /*#__PURE__*/_unwrapProp(LENGTH));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction getIntValue(value, defValue) {\n if (!isNullOrUndefined(value)) {\n if (isNumber(value)) {\n return value;\n }\n var theValue = parseInt(value, 10);\n return isNaN(theValue) ? defValue : theValue;\n }\n return defValue;\n}\n\nvar _perf;\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasPerformance() {\n return !!getPerformance();\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getPerformance() {\n !_globalLazyTestHooks && _initTestHooks();\n (!_perf || _globalLazyTestHooks.lzy) && (_perf = createCachedValue(safe((getInst), [\"performance\"]).v));\n return _perf.v;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction perfNow() {\n var perf = getPerformance();\n if (perf && perf.now) {\n return perf.now();\n }\n return utcNow();\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction elapsedTime(startTime) {\n return perfNow() - startTime;\n}\n\nvar MATCH_ANY = \"(.*)\";\nvar MATCH_SINGLE = \"(.)\";\nfunction _createRegExp(value, escapeRgx, replaceFn, ignoreCase, fullMatch) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp((fullMatch ? \"^\" : EMPTY) + replaceFn(value.replace(escapeRgx, \"\\\\$1\")) + (fullMatch ? \"$\" : EMPTY), ignoreCase ? \"i\" : \"\");\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createWildcardRegex(value, ignoreCase, fullMatch) {\n return _createRegExp(asString(value), /([-+|^$#.\\?{}()\\[\\]\\\\/\\\"\\'])/g, function (value) {\n return value.replace(/\\*/g, MATCH_ANY);\n }, !!ignoreCase, fullMatch);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createFilenameRegex(value, ignoreCase, fullMatch) {\n return _createRegExp(asString(value), /([-+|^$#.{}()\\\\\\/\\[\\]\\\"\\'])/g, function (value) {\n return value.replace(/(\\\\\\\\|\\\\\\/|\\*|\\?)/g, function (_all, g1) {\n if (g1 == \"\\\\/\" || g1 == \"\\\\\\\\\") {\n return \"[\\\\\\\\\\\\/]{1}\";\n }\n return g1 == \"*\" ? MATCH_ANY : MATCH_SINGLE;\n });\n }, !!ignoreCase, fullMatch);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction makeGlobRegex(value, ignoreCase, fullMatch) {\n return _createRegExp(asString(value), /([-+|^$#.{}()\\\\\\/\\[\\]\\\"\\'])/g, function (value) {\n return value.replace(/(\\*\\*\\\\[\\\\\\/]|\\\\\\\\|\\\\\\/|\\*\\*|\\*|\\?)/g, function (_all, g1) {\n if (g1 == \"**\\\\/\" || g1 == \"**\\\\\\\\\") {\n return \"(.*[\\\\\\\\\\\\/])*\";\n }\n if (g1 === \"\\\\/\" || g1 == \"\\\\\\\\\") {\n return \"[\\\\\\\\\\\\/]{1}\";\n }\n if (g1 === \"**\") {\n return MATCH_ANY;\n }\n return g1 === \"*\" ? \"([^\\\\\\\\\\\\/]*)\" : \"([^\\\\\\\\\\\\/]{1})\";\n });\n }, !!ignoreCase, fullMatch);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction safeGetLazy(cb, defValue) {\n return getLazy(function () {\n var result = safe(cb);\n return result.e ? defValue : result.v;\n });\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _checkLength(value, props) {\n var result;\n arrForEach(props, function (prop) {\n if (prop in value) {\n var propValue = value[prop];\n result = (isFunction(propValue) ? propValue() : propValue) > 0;\n return -1;\n }\n });\n return result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _hasValue(value, depth) {\n var result = value === false || value === 0;\n if (!result && !isNullOrUndefined(value)) {\n if (isArray(value)) {\n result = value[LENGTH] > 0;\n }\n else if (isDate(value)) {\n result = !isNaN(value.getTime());\n }\n else if (isBoolean(value)) {\n return true;\n }\n else if (isObject(value)) {\n try {\n var chkValue = _checkLength(value, [LENGTH, \"byteLength\", \"size\", \"count\"]);\n if (isBoolean(chkValue)) {\n return chkValue;\n }\n if (isFunction(value.valueOf) && depth < 5) {\n return _hasValue(value.valueOf(), ++depth);\n }\n }\n catch (e) {\n }\n return !!objKeys(value)[LENGTH];\n }\n else {\n result = isTruthy(value);\n }\n }\n return result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasValue(value) {\n return _hasValue(value, 0);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createIterable(ctx) {\n return makeIterable({}, ctx);\n}\nfunction makeIterable(target, ctx) {\n var itSymbol = getKnownSymbol(3 );\n function _createIterator() {\n return createIterator(ctx);\n }\n target[itSymbol] = _createIterator;\n return target;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createIterator(ctx) {\n var isDone = false;\n function _value() {\n return ctx.v;\n }\n function _next() {\n isDone = isDone || (ctx.n ? ctx.n(arguments) : true);\n var result = {\n done: isDone\n };\n if (!isDone) {\n objDefine(result, \"value\", { g: _value });\n }\n return result;\n }\n function _return(value) {\n isDone = true;\n return {\n done: true,\n value: ctx.r && ctx.r(value)\n };\n }\n function _throw(e) {\n isDone = true;\n return {\n done: true,\n value: ctx.t && ctx.t(e)\n };\n }\n var theIterator = {\n next: _next\n };\n if (ctx.r) {\n theIterator.return = _return;\n }\n if (ctx.t) {\n theIterator.throw = _throw;\n }\n return theIterator;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createArrayIterator(values) {\n var idx = -1;\n var theValues = values ? values.slice() : [];\n var len = theValues[LENGTH];\n function _value() {\n if (idx >= 0 && idx < len) {\n return theValues[idx];\n }\n }\n function _getNext() {\n idx++;\n return idx >= len;\n }\n var ctx = {\n n: _getNext\n };\n objDefine(ctx, \"v\", { g: _value });\n return createIterator(ctx);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createRangeIterator(start, end, step) {\n var nextValue = start;\n var theValue = UNDEF_VALUE;\n if (isNullOrUndefined(end)) {\n end = start;\n }\n var theStep = step || ((start <= end) ? 1 : -1);\n function _value() {\n return theValue;\n }\n function _getNext() {\n var isDone = false;\n if (theStep > 0) {\n isDone = nextValue > end;\n }\n else {\n isDone = nextValue < end;\n }\n if (!isDone) {\n theValue = nextValue;\n nextValue += theStep;\n }\n return isDone;\n }\n var ctx = {\n n: _getNext\n };\n objDefine(ctx, \"v\", { g: _value });\n return createIterator(ctx);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrSymSplit(value, splitter, limit) {\n var splitFn = splitter && splitter[getKnownSymbol(9 )];\n return splitFn ? splitFn(value, limit) : [value];\n}\n\nvar strSplit = ( /*#__PURE__*/_unwrapFunction(\"split\", StrProto));\nvar strSymSplit = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"split\", StrProto, !hasSymbol() ? polyStrSymSplit : null));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction getValueByKey(target, path, defValue) {\n if (!path || !target) {\n return defValue;\n }\n var parts = strSplit(path, \".\");\n var cnt = parts.length;\n for (var lp = 0; lp < cnt && !isNullOrUndefined(target); lp++) {\n target = target[parts[lp]];\n }\n return (!isNullOrUndefined(target) ? target : defValue);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getValueByIter(target, iter, defValue) {\n if (!iter || !target) {\n return defValue;\n }\n iterForOf(iter, function (value) {\n if (isNullOrUndefined(target)) {\n return -1;\n }\n target = target[value];\n });\n return (!isNullOrUndefined(target) ? target : defValue);\n}\nfunction setValueByKey(target, path, value) {\n if (target && path) {\n var parts = strSplit(path, \".\");\n var lastKey = parts.pop();\n arrForEach(parts, function (key) {\n if (isNullOrUndefined(target[key])) {\n target[key] = {};\n }\n target = target[key];\n });\n target[lastKey] = value;\n }\n}\nfunction setValueByIter(target, iter, value) {\n if (target && iter) {\n var lastKey_1;\n iterForOf(iter, function (key) {\n if (lastKey_1) {\n if (isNullOrUndefined(target[lastKey_1])) {\n target[lastKey_1] = {};\n }\n target = target[lastKey_1];\n }\n lastKey_1 = key;\n });\n target[lastKey_1] = value;\n }\n}\n\nvar strEndsWith = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"endsWith\", StrProto, polyStrEndsWith));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrEndsWith(value, searchString, length) {\n if (!isString(value)) {\n throwTypeError(\"'\" + dumpObj(value) + \"' is not a string\");\n }\n var searchValue = isString(searchString) ? searchString : asString(searchString);\n var end = !isUndefined(length) && length < value[LENGTH] ? length : value[LENGTH];\n return strSubstring(value, end - searchValue[LENGTH], end) === searchValue;\n}\n\nvar strIndexOf = ( /*#__PURE__*/_unwrapFunction(\"indexOf\", StrProto));\nvar strLastIndexOf = ( /*#__PURE__*/_unwrapFunction(\"lastIndexOf\", StrProto));\n\nvar strIncludes = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"includes\", StrProto, polyStrIncludes));\nvar strContains = ( /*#__PURE__*/_pureAssign(strIncludes));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrIncludes(value, searchString, position) {\n if (isRegExp(searchString)) {\n throwTypeError(\"'searchString' must not be a regular expression\" + dumpObj(searchString));\n }\n return strIndexOf(value, asString(searchString), position) !== -1;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction strIsNullOrWhiteSpace(value) {\n if (isString(value)) {\n return value.replace(/[\\s\\t\\r\\n\\f]+/g, EMPTY) === EMPTY;\n }\n return isNullOrUndefined(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strIsNullOrEmpty(value) {\n if (isString(value)) {\n return value === EMPTY;\n }\n return isNullOrUndefined(value);\n}\n\nvar strStartsWith = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"startsWith\", StrProto, polyStrStartsWith));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrStartsWith(value, searchString, position) {\n if (!isString(value)) {\n throwTypeError(\"'\" + dumpObj(value) + \"' is not a string\");\n }\n var searchValue = isString(searchString) ? searchString : asString(searchString);\n var pos = position > 0 ? position : 0;\n return strSubstring(value, pos, pos + searchValue[LENGTH]) === searchValue;\n}\n\nvar REF = \"ref\";\nvar UNREF = \"unref\";\nvar HAS_REF = \"hasRef\";\nvar ENABLED = \"enabled\";\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createTimerHandler(startTimer, refreshFn, cancelFn) {\n var ref = true;\n var timerId = startTimer ? refreshFn(NULL_VALUE) : NULL_VALUE;\n var theTimerHandler;\n function _unref() {\n ref = false;\n timerId && timerId[UNREF] && timerId[UNREF]();\n return theTimerHandler;\n }\n function _cancel() {\n timerId && cancelFn(timerId);\n timerId = NULL_VALUE;\n }\n function _refresh() {\n timerId = refreshFn(timerId);\n if (!ref) {\n _unref();\n }\n return theTimerHandler;\n }\n function _setEnabled(value) {\n !value && timerId && _cancel();\n value && !timerId && _refresh();\n }\n theTimerHandler = {\n cancel: _cancel,\n refresh: _refresh\n };\n theTimerHandler[HAS_REF] = function () {\n if (timerId && timerId[HAS_REF]) {\n return timerId[HAS_REF]();\n }\n return ref;\n };\n theTimerHandler[REF] = function () {\n ref = true;\n timerId && timerId[REF] && timerId[REF]();\n return theTimerHandler;\n };\n theTimerHandler[UNREF] = _unref;\n theTimerHandler = objDefineProp(theTimerHandler, ENABLED, {\n get: function () { return !!timerId; },\n set: _setEnabled\n });\n return {\n h: theTimerHandler,\n dn: function () {\n timerId = NULL_VALUE;\n }\n };\n}\n\nfunction _createTimeoutWith(startTimer, overrideFn, theArgs) {\n var isArr = isArray(overrideFn);\n var len = isArr ? overrideFn.length : 0;\n var setFn = (len > 0 ? overrideFn[0] : (!isArr ? overrideFn : UNDEF_VALUE)) || setTimeout;\n var clearFn = (len > 1 ? overrideFn[1] : UNDEF_VALUE) || clearTimeout;\n var timerFn = theArgs[0];\n theArgs[0] = function () {\n handler.dn();\n fnApply(timerFn, UNDEF_VALUE, ArrSlice[CALL](arguments));\n };\n var handler = _createTimerHandler(startTimer, function (timerId) {\n if (timerId) {\n if (timerId.refresh) {\n timerId.refresh();\n return timerId;\n }\n fnApply(clearFn, UNDEF_VALUE, [timerId]);\n }\n return fnApply(setFn, UNDEF_VALUE, theArgs);\n }, function (timerId) {\n fnApply(clearFn, UNDEF_VALUE, [timerId]);\n });\n return handler.h;\n}\nfunction scheduleTimeout(callback, timeout) {\n return _createTimeoutWith(true, UNDEF_VALUE, ArrSlice[CALL](arguments));\n}\nfunction scheduleTimeoutWith(overrideFn, callback, timeout) {\n return _createTimeoutWith(true, overrideFn, ArrSlice[CALL](arguments, 1));\n}\nfunction createTimeout(callback, timeout) {\n return _createTimeoutWith(false, UNDEF_VALUE, ArrSlice[CALL](arguments));\n}\nfunction createTimeoutWith(overrideFn, callback, timeout) {\n return _createTimeoutWith(false, overrideFn, ArrSlice[CALL](arguments, 1));\n}\n\nvar _defaultIdleTimeout = 100;\nvar _maxExecutionTime = 50;\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasIdleCallback() {\n return !!( /*#__PURE__*/getIdleCallback());\n}\nvar getIdleCallback = ( /*#__PURE__*/_getGlobalInstFn(getInst, [\"requestIdleCallback\"]));\nvar getCancelIdleCallback = ( /*#__PURE__*/_getGlobalInstFn(getInst, [\"cancelIdleCallback\"]));\nfunction setDefaultIdleTimeout(timeout) {\n _defaultIdleTimeout = timeout;\n}\nfunction setDefaultMaxExecutionTime(maxTime) {\n _maxExecutionTime = maxTime;\n}\nfunction scheduleIdleCallback(callback, options) {\n function _createDeadline(timedOut) {\n var startTime = perfNow();\n return {\n didTimeout: timedOut,\n timeRemaining: function () {\n return _maxExecutionTime - elapsedTime(startTime);\n }\n };\n }\n if (hasIdleCallback()) {\n var handler_1 = _createTimerHandler(true, function (idleId) {\n idleId && getCancelIdleCallback()(idleId);\n return getIdleCallback()(function (deadline) {\n handler_1.dn();\n callback(deadline || _createDeadline(false));\n }, options);\n }, function (idleId) {\n getCancelIdleCallback()(idleId);\n });\n return handler_1.h;\n }\n var timeout = (options || {}).timeout;\n if (isUndefined(timeout)) {\n timeout = _defaultIdleTimeout;\n }\n return scheduleTimeout(function () {\n callback(_createDeadline(true));\n }, timeout);\n}\n\nfunction scheduleInterval(callback, timeout) {\n var theArguments = ArrSlice[CALL](arguments);\n var handler = _createTimerHandler(true, function (intervalId) {\n intervalId && clearInterval(intervalId);\n return fnApply(setInterval, UNDEF_VALUE, theArguments);\n }, function (intervalId) {\n fnApply(clearInterval, UNDEF_VALUE, [intervalId]);\n });\n return handler.h;\n}\n\nexport { arrAppend, arrContains, arrEvery, arrFilter, arrFind, arrFindIndex, arrFindLast, arrFindLastIndex, arrForEach, arrFrom, arrIncludes, arrIndexOf, arrLastIndexOf, arrMap, arrReduce, arrSlice, arrSome, arrayDeepCopyHandler, asString, createArrayIterator, createCachedValue, createCustomError, createDeferredCachedValue, createEnum, createEnumKeyMap, createEnumValueMap, createFilenameRegex, createFnDeferredProxy, createIterable, createIterator, createProxyFuncs, createRangeIterator, createSimpleMap, createTimeout, createTimeoutWith, createTypeMap, createWildcardRegex, dateDeepCopyHandler, deepExtend, dumpObj, elapsedTime, encodeAsHtml, encodeAsJson, fnApply, fnBind, fnCall, functionDeepCopyHandler, getCancelIdleCallback, getDocument, getGlobal, getHistory, getIdleCallback, getInst, getIntValue, getKnownSymbol, getLazy, getLength, getNavigator, getPerformance, getSymbol, getValueByIter, getValueByKey, getWindow, hasDocument, hasHistory, hasIdleCallback, hasNavigator, hasPerformance, hasSymbol, hasValue, hasWindow, isArray, isArrayBuffer, isBlob, isBoolean, isDate, isDefined, isError, isFile, isFormData, isFunction, isIterable, isIterator, isNode, isNotTruthy, isNullOrUndefined, isNumber, isObject, isPlainObject, isPrimitive, isPrimitiveType, isPromise, isPromiseLike, isRegExp, isStrictNullOrUndefined, isStrictUndefined, isString, isSymbol, isThenable, isTruthy, isTypeof, isUndefined, isWebWorker, iterForOf, lazySafeGetInst, makeGlobRegex, makeIterable, mathCeil, mathFloor, mathMax, mathMin, mathToInt, mathTrunc, newSymbol, normalizeJsName, objAssign, objCopyProps, objCreate, objDeepCopy, objDeepFreeze, objDefine, objDefineAccessors, objDefineGet, objDefineProp, objDefineProperties, objDefineProps, objEntries, objExtend, objForEachKey, objFreeze, objGetOwnPropertyDescriptor, objGetPrototypeOf, objHasOwn, objHasOwnProperty, objKeys, objSeal, objSetPrototypeOf, objToString, perfNow, plainObjDeepCopyHandler, polyArrFind, polyArrFindIndex, polyArrFindLast, polyArrFindLastIndex, polyArrFrom, polyArrIncludes, polyGetKnownSymbol, polyIsArray, polyNewSymbol, polyObjEntries, polyObjHasOwn, polyObjKeys, polyStrIncludes, polyStrSubstr, polyStrSymSplit, polyStrTrim, polyStrTrimEnd, polyStrTrimStart, polySymbolFor, polySymbolKeyFor, polyUtcNow, readArgs, safe, safeGet, safeGetLazy, scheduleIdleCallback, scheduleInterval, scheduleTimeout, scheduleTimeoutWith, setBypassLazyCache, setDefaultIdleTimeout, setDefaultMaxExecutionTime, setValueByIter, setValueByKey, strCamelCase, strContains, strEndsWith, strIncludes, strIndexOf, strIsNullOrEmpty, strIsNullOrWhiteSpace, strKebabCase, strLastIndexOf, strLeft, strLetterCase, strLower, strPadEnd, strPadStart, strRepeat, strRight, strSlice, strSnakeCase, strSplit, strStartsWith, strSubstr, strSubstring, strSymSplit, strTrim, strTrimEnd, strTrimLeft, strTrimRight, strTrimStart, strUpper, symbolFor, symbolKeyFor, throwError, throwRangeError, throwTypeError, throwUnsupported, utcNow };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar _a;\r\nimport { getGlobal, objCreate, objHasOwnProperty, throwTypeError } from \"@nevware21/ts-utils\";\r\n;\r\nvar UNDEFINED = \"undefined\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * The polyfill version of __proto__ so that it doesn't cause issues for anyone not expecting it to exist\r\n */\r\nvar DynProtoBaseProto = \"_dyn\" + str__Proto;\r\n/**\r\n * Runtime Global holder for dynamicProto settings\r\n */\r\nvar DynProtoGlobalSettings = \"__dynProto$Gbl\";\r\n/**\r\n * Track the current prototype for IE8 as you can't look back to get the prototype\r\n */\r\nvar DynProtoCurrent = \"_dynInstProto\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Pre-lookup to check for the existence of this function\r\n */\r\nvar _objGetOwnProps = Obj[\"getOwnPropertyNames\"];\r\n// Since 1.1.7 moving these to the runtime global to work around mixed version and module issues\r\n// See Issue https://github.com/microsoft/DynamicProto-JS/issues/57 for details\r\nvar _gbl = getGlobal();\r\nvar _gblInst = _gbl[DynProtoGlobalSettings] || (_gbl[DynProtoGlobalSettings] = {\r\n o: (_a = {},\r\n _a[strSetInstFuncs] = true,\r\n _a[strUseBaseInst] = true,\r\n _a),\r\n n: 1000 // Start new global index @ 1000 so we \"fix\" some cases when mixed with 1.1.6 or earlier\r\n});\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n var newProto;\r\n if (target) {\r\n // This method doesn't exist in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n var curProto = target[str__Proto] || target[Prototype] || (target[Constructor] ? target[Constructor][Prototype] : null);\r\n // Using the pre-calculated value as IE8 doesn't support looking up the prototype of a prototype and thus fails for more than 1 base class\r\n newProto = target[DynProtoBaseProto] || curProto;\r\n if (!objHasOwnProperty(target, DynProtoBaseProto)) {\r\n // As this prototype doesn't have this property then this is from an inherited class so newProto is the base to return so save it\r\n // so we can look it up value (which for a multiple hierarchy dynamicProto will be the base class)\r\n delete target[DynProtoCurrent]; // Delete any current value allocated to this instance so we pick up the value from prototype hierarchy\r\n newProto = target[DynProtoBaseProto] = target[DynProtoCurrent] || target[DynProtoBaseProto];\r\n target[DynProtoCurrent] = curProto;\r\n }\r\n }\r\n return newProto;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n var props = [];\r\n if (_objGetOwnProps) {\r\n props = _objGetOwnProps(target);\r\n }\r\n else {\r\n for (var name_1 in target) {\r\n if (typeof name_1 === \"string\" && objHasOwnProperty(target, name_1)) {\r\n props.push(name_1);\r\n }\r\n }\r\n }\r\n if (props && props.length > 0) {\r\n for (var lp = 0; lp < props.length; lp++) {\r\n func(props[lp]);\r\n }\r\n }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || objHasOwnProperty(target, funcName)) && funcName !== str__Proto && funcName !== Prototype);\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n throwTypeError(\"DynamicProto: \" + message);\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n // Get the base proto\r\n var instFuncs = objCreate(null);\r\n // Save any existing instance functions\r\n _forEachProp(thisTarget, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n // Create an instance callback for passing the base function to the caller\r\n instFuncs[name] = thisTarget[name];\r\n }\r\n });\r\n return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n for (var lp = values.length - 1; lp >= 0; lp--) {\r\n if (values[lp] === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n function _instFuncProxy(target, funcHost, funcName) {\r\n var theFunc = funcHost[funcName];\r\n if (theFunc[DynProxyTag] && useBaseInst) {\r\n // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n }\r\n }\r\n return function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n return theFunc.apply(target, arguments);\r\n };\r\n }\r\n // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n var baseFuncs = objCreate(null);\r\n _forEachProp(instFuncs, function (name) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n });\r\n // Get the base prototype functions\r\n var baseProto = _getObjProto(classProto);\r\n var visited = [];\r\n // Don't include base object functions for Object, Array or Function\r\n while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n // look for prototype functions\r\n _forEachProp(baseProto, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n // the Object prototype methods while bypassing the check\r\n if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n }\r\n });\r\n // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(baseProto);\r\n baseProto = _getObjProto(baseProto);\r\n }\r\n return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n var instFunc = null;\r\n // We need to check whether the class name is defined directly on this prototype otherwise\r\n // it will walk the proto chain and return any parent proto classname.\r\n if (target && objHasOwnProperty(proto, DynClassName)) {\r\n var instFuncTable = target[DynInstFuncTable] || objCreate(null);\r\n instFunc = (instFuncTable[proto[DynClassName]] || objCreate(null))[funcName];\r\n if (!instFunc) {\r\n // Avoid stack overflow from recursive calling the same function\r\n _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n }\r\n // We have the instance function, lets check it we can speed up further calls\r\n // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n // If the instance already has an instance function we can't replace it\r\n var canAddInst = !objHasOwnProperty(target, funcName);\r\n // Get current prototype\r\n var objProto = _getObjProto(target);\r\n var visited = [];\r\n // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n var protoFunc = objProto[funcName];\r\n if (protoFunc) {\r\n canAddInst = (protoFunc === currentDynProtoProxy);\r\n break;\r\n }\r\n // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n visited.push(objProto);\r\n objProto = _getObjProto(objProto);\r\n }\r\n try {\r\n if (canAddInst) {\r\n // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n // so it's safe to directly assign for any subsequent calls (for better performance)\r\n target[funcName] = instFunc;\r\n }\r\n // Block further attempts to set the instance function for any\r\n instFunc[DynInstChkTag] = 1;\r\n }\r\n catch (e) {\r\n // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n // And set a flag so we don't try again for any function\r\n instFuncTable[DynAllowInstChkTag] = false;\r\n }\r\n }\r\n }\r\n return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n var protoFunc = proto[funcName];\r\n // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n if (protoFunc === currentDynProtoProxy) {\r\n // It is so lookup the base prototype\r\n protoFunc = _getObjProto(proto)[funcName];\r\n }\r\n if (typeof protoFunc !== strFunction) {\r\n _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n }\r\n return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n function _createDynamicPrototype(proto, funcName) {\r\n var dynProtoProxy = function () {\r\n // Use the instance or prototype function\r\n var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n // eslint-disable-next-line prefer-rest-params\r\n return instFunc.apply(this, arguments);\r\n };\r\n // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n // via which can dynamically replace the prototype function reference)\r\n dynProtoProxy[DynProxyTag] = 1;\r\n return dynProtoProxy;\r\n }\r\n if (!_isObjectOrArrayPrototype(proto)) {\r\n var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || objCreate(null);\r\n if (!_isObjectOrArrayPrototype(instFuncTable)) {\r\n var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || objCreate(null)); // fetch and assign if as it may not exist yet\r\n // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n }\r\n if (!_isObjectOrArrayPrototype(instFuncs_1)) {\r\n _forEachProp(target, function (name) {\r\n // Only add overridden functions\r\n if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n instFuncs_1[name] = target[name];\r\n delete target[name];\r\n // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n if (!objHasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n proto[name] = _createDynamicPrototype(proto, name);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n // As this is primarily a coding time check, don't bother checking if running in IE8 or lower\r\n var visited = [];\r\n var thisProto = _getObjProto(thisTarget);\r\n while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {\r\n if (thisProto === classProto) {\r\n return true;\r\n }\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(thisProto);\r\n thisProto = _getObjProto(thisProto);\r\n }\r\n return false;\r\n }\r\n // If objGetPrototypeOf doesn't exist then just assume everything is ok.\r\n return true;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n if (objHasOwnProperty(target, Prototype)) {\r\n // Look like a prototype\r\n return target.name || unknownValue || UnknownValue;\r\n }\r\n return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n * constructor() {\r\n * dynamicProto(ExampleClass, this, (_self, base) => {\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.newFunc = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * ...\r\n * }\r\n * }\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.myFunction = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * // Call the base version of the function that we are overriding\r\n * base.myFunction();\r\n * }\r\n * ...\r\n * }\r\n * _self.initialize = () => {\r\n * ...\r\n * }\r\n * // Warnings: While the following will work as _self is simply a reference to\r\n * // this, if anyone overrides myFunction() the overridden will be called first\r\n * // as the normal JavaScript method resolution will occur and the defined\r\n * // _self.initialize() function is actually gets removed from the instance and\r\n * // a proxy prototype version is created to reference the created method.\r\n * _self.initialize();\r\n * });\r\n * }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nexport default function dynamicProto(theClass, target, delegateFunc, options) {\r\n // Make sure that the passed theClass argument looks correct\r\n if (!objHasOwnProperty(theClass, Prototype)) {\r\n _throwTypeError(\"theClass is an invalid class definition.\");\r\n }\r\n // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n var classProto = theClass[Prototype];\r\n if (!_checkPrototype(classProto, target)) {\r\n _throwTypeError(\"[\" + _getObjName(theClass) + \"] not in hierarchy of [\" + _getObjName(target) + \"]\");\r\n }\r\n var className = null;\r\n if (objHasOwnProperty(classProto, DynClassName)) {\r\n // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n className = classProto[DynClassName];\r\n }\r\n else {\r\n // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n // function table lookup.\r\n className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _gblInst.n;\r\n _gblInst.n++;\r\n classProto[DynClassName] = className;\r\n }\r\n var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n var useBaseInst = !!perfOptions[strUseBaseInst];\r\n if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n useBaseInst = !!options[strUseBaseInst];\r\n }\r\n // Get the current instance functions\r\n var instFuncs = _getInstanceFuncs(target);\r\n // Get all of the functions for any base instance (before they are potentially overridden)\r\n var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n delegateFunc(target, baseFuncs);\r\n // Don't allow setting instance functions for older IE instances\r\n var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n if (setInstanceFunc && options) {\r\n setInstanceFunc = !!options[strSetInstFuncs];\r\n }\r\n // Populate the Prototype for any overridden instance functions\r\n _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\ndynamicProto[DynProtoDefaultOptions] = _gblInst.o;\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 11\r\nexport var _DYN_BLK_VAL = \"blkVal\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 55\r\nexport var _DYN_RD_ONLY = \"rdOnly\"; // Count: 4\r\nexport var _DYN_NOTIFY = \"notify\"; // Count: 4\r\nexport var _DYN_WARN_TO_CONSOLE = \"warnToConsole\"; // Count: 4\r\nexport var _DYN_THROW_INTERNAL = \"throwInternal\"; // Count: 5\r\nexport var _DYN_SET_DF = \"setDf\"; // Count: 6\r\nexport var _DYN_WATCH = \"watch\"; // Count: 8\r\nexport var _DYN_LOGGER = \"logger\"; // Count: 21\r\nexport var _DYN_APPLY = \"apply\"; // Count: 7\r\nexport var _DYN_PUSH = \"push\"; // Count: 34\r\nexport var _DYN_SPLICE = \"splice\"; // Count: 8\r\nexport var _DYN_HDLR = \"hdlr\"; // Count: 6\r\nexport var _DYN_CANCEL = \"cancel\"; // Count: 6\r\nexport var _DYN_INITIALIZE = \"initialize\"; // Count: 5\r\nexport var _DYN_IDENTIFIER = \"identifier\"; // Count: 8\r\nexport var _DYN_REMOVE_NOTIFICATION_0 = \"removeNotificationListener\"; // Count: 4\r\nexport var _DYN_ADD_NOTIFICATION_LIS1 = \"addNotificationListener\"; // Count: 4\r\nexport var _DYN_IS_INITIALIZED = \"isInitialized\"; // Count: 10\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 2\r\nexport var _DYN__INACTIVE = \"INACTIVE\"; // Count: 3\r\nexport var _DYN_VALUE = \"value\"; // Count: 5\r\nexport var _DYN_GET_NOTIFY_MGR = \"getNotifyMgr\"; // Count: 5\r\nexport var _DYN_GET_PLUGIN = \"getPlugin\"; // Count: 6\r\nexport var _DYN_NAME = \"name\"; // Count: 12\r\nexport var _DYN_I_KEY = \"iKey\"; // Count: 5\r\nexport var _DYN_TIME = \"time\"; // Count: 6\r\nexport var _DYN_PROCESS_NEXT = \"processNext\"; // Count: 15\r\nexport var _DYN_GET_PROCESS_TEL_CONT2 = \"getProcessTelContext\"; // Count: 2\r\nexport var _DYN_POLL_INTERNAL_LOGS = \"pollInternalLogs\"; // Count: 2\r\nexport var _DYN_ENABLED = \"enabled\"; // Count: 6\r\nexport var _DYN_STOP_POLLING_INTERNA3 = \"stopPollingInternalLogs\"; // Count: 2\r\nexport var _DYN_UNLOAD = \"unload\"; // Count: 9\r\nexport var _DYN_ON_COMPLETE = \"onComplete\"; // Count: 5\r\nexport var _DYN_VERSION = \"version\"; // Count: 6\r\nexport var _DYN_LOGGING_LEVEL_CONSOL4 = \"loggingLevelConsole\"; // Count: 2\r\nexport var _DYN_CREATE_NEW = \"createNew\"; // Count: 7\r\nexport var _DYN_TEARDOWN = \"teardown\"; // Count: 9\r\nexport var _DYN_MESSAGE_ID = \"messageId\"; // Count: 4\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 7\r\nexport var _DYN_IS_ASYNC = \"isAsync\"; // Count: 6\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 10\r\nexport var _DYN__DO_TEARDOWN = \"_doTeardown\"; // Count: 5\r\nexport var _DYN_UPDATE = \"update\"; // Count: 6\r\nexport var _DYN_GET_NEXT = \"getNext\"; // Count: 12\r\nexport var _DYN_SET_NEXT_PLUGIN = \"setNextPlugin\"; // Count: 5\r\nexport var _DYN_PROTOCOL = \"protocol\"; // Count: 3\r\nexport var _DYN_USER_AGENT = \"userAgent\"; // Count: 5\r\nexport var _DYN_SPLIT = \"split\"; // Count: 7\r\nexport var _DYN_NODE_TYPE = \"nodeType\"; // Count: 3\r\nexport var _DYN_REPLACE = \"replace\"; // Count: 9\r\nexport var _DYN_LOG_INTERNAL_MESSAGE = \"logInternalMessage\"; // Count: 2\r\nexport var _DYN_TYPE = \"type\"; // Count: 14\r\nexport var _DYN_HANDLER = \"handler\"; // Count: 5\r\nexport var _DYN_STATUS = \"status\"; // Count: 5\r\nexport var _DYN_GET_RESPONSE_HEADER = \"getResponseHeader\"; // Count: 2\r\nexport var _DYN_GET_ALL_RESPONSE_HEA5 = \"getAllResponseHeaders\"; // Count: 2\r\nexport var _DYN_IS_CHILD_EVT = \"isChildEvt\"; // Count: 3\r\nexport var _DYN_DATA = \"data\"; // Count: 7\r\nexport var _DYN_GET_CTX = \"getCtx\"; // Count: 6\r\nexport var _DYN_SET_CTX = \"setCtx\"; // Count: 10\r\nexport var _DYN_COMPLETE = \"complete\"; // Count: 3\r\nexport var _DYN_ITEMS_RECEIVED = \"itemsReceived\"; // Count: 3\r\nexport var _DYN_URL_STRING = \"urlString\"; // Count: 5\r\nexport var _DYN_SEND_POST = \"sendPOST\"; // Count: 3\r\nexport var _DYN_HEADERS = \"headers\"; // Count: 5\r\nexport var _DYN_TIMEOUT = \"timeout\"; // Count: 6\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 2\r\nexport var _DYN_TRACE_ID = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID = \"spanId\"; // Count: 5\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 6\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport var strShimFunction = \"function\";\r\nexport var strShimObject = \"object\";\r\nexport var strShimUndefined = \"undefined\";\r\nexport var strShimPrototype = \"prototype\";\r\nexport var strDefault = \"default\";\r\nexport var ObjClass = Object;\r\nexport var ObjProto = ObjClass[strShimPrototype];\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// ###################################################################################################################################################\r\n// Note: DON'T Export these const from the package as we are still targeting IE/ES5 this will export a mutable variables that someone could change ###\r\n// ###################################################################################################################################################\r\nexport var UNDEFINED_VALUE = undefined;\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_CHANNELS = \"channels\";\r\nexport var STR_CORE = \"core\";\r\nexport var STR_CREATE_PERF_MGR = \"createPerfMgr\";\r\nexport var STR_DISABLED = \"disabled\";\r\nexport var STR_EXTENSION_CONFIG = \"extensionConfig\";\r\nexport var STR_EXTENSIONS = \"extensions\";\r\nexport var STR_PROCESS_TELEMETRY = \"processTelemetry\";\r\nexport var STR_PRIORITY = \"priority\";\r\nexport var STR_EVENTS_SENT = \"eventsSent\";\r\nexport var STR_EVENTS_DISCARDED = \"eventsDiscarded\";\r\nexport var STR_EVENTS_SEND_REQUEST = \"eventsSendRequest\";\r\nexport var STR_PERF_EVENT = \"perfEvent\";\r\nexport var STR_OFFLINE_STORE = \"offlineEventsStored\";\r\nexport var STR_OFFLINE_SENT = \"offlineBatchSent\";\r\nexport var STR_OFFLINE_DROP = \"offlineBatchDrop\";\r\nexport var STR_GET_PERF_MGR = \"getPerfMgr\";\r\nexport var STR_DOMAIN = \"domain\";\r\nexport var STR_PATH = \"path\";\r\nexport var STR_NOT_DYNAMIC_ERROR = \"Not dynamic - \";\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ObjAssign, ObjClass } from \"@microsoft/applicationinsights-shims\";\r\nimport { arrForEach, asString as asString21, isArray, isBoolean, isError, isFunction, isNullOrUndefined, isNumber, isObject, isPlainObject, isString, isUndefined, objDeepFreeze, objDefine, objForEachKey, objHasOwn, strIndexOf, strTrim } from \"@nevware21/ts-utils\";\r\nimport { _DYN_APPLY, _DYN_GET_ALL_RESPONSE_HEA5, _DYN_GET_RESPONSE_HEADER, _DYN_LENGTH, _DYN_NAME, _DYN_REPLACE, _DYN_SPLIT, _DYN_STATUS, _DYN_TO_LOWER_CASE } from \"../__DynamicConstants\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// RESTRICT and AVOID circular dependencies you should not import other contained modules or export the contents of this file directly\r\n// Added to help with minification\r\nvar strGetPrototypeOf = \"getPrototypeOf\";\r\nvar rCamelCase = /-([a-z])/g;\r\nvar rNormalizeInvalid = /([^\\w\\d_$])/g;\r\nvar rLeadingNumeric = /^(\\d+[\\w\\d_$])/;\r\nexport var _getObjProto = Object[strGetPrototypeOf];\r\nexport function isNotUndefined(value) {\r\n return !isUndefined(value);\r\n}\r\nexport function isNotNullOrUndefined(value) {\r\n return !isNullOrUndefined(value);\r\n}\r\n/**\r\n * Validates that the string name conforms to the JS IdentifierName specification and if not\r\n * normalizes the name so that it would. This method does not identify or change any keywords\r\n * meaning that if you pass in a known keyword the same value will be returned.\r\n * This is a simplified version\r\n * @param name - The name to validate\r\n */\r\nexport function normalizeJsName(name) {\r\n var value = name;\r\n if (value && isString(value)) {\r\n // CamelCase everything after the \"-\" and remove the dash\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rCamelCase, function (_all, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rNormalizeInvalid, \"_\");\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rLeadingNumeric, function (_all, match) {\r\n return \"_\" + match;\r\n });\r\n }\r\n return value;\r\n}\r\n/**\r\n * A simple wrapper (for minification support) to check if the value contains the search string.\r\n * @param value - The string value to check for the existence of the search value\r\n * @param search - The value search within the value\r\n */\r\nexport function strContains(value, search) {\r\n if (value && search) {\r\n return strIndexOf(value, search) !== -1;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function toISOString(date) {\r\n return date && date.toISOString() || \"\";\r\n}\r\nexport var deepFreeze = objDeepFreeze;\r\n/**\r\n * Returns the name of object if it's an Error. Otherwise, returns empty string.\r\n */\r\nexport function getExceptionName(object) {\r\n if (isError(object)) {\r\n return object[_DYN_NAME /* @min:%2ename */];\r\n }\r\n return STR_EMPTY;\r\n}\r\n/**\r\n * Sets the provided value on the target instance using the field name when the provided chk function returns true, the chk\r\n * function will only be called if the new value is no equal to the original value.\r\n * @param target - The target object\r\n * @param field - The key of the target\r\n * @param value - The value to set\r\n * @param valChk - [Optional] Callback to check the value that if supplied will be called check if the new value can be set\r\n * @param srcChk - [Optional] Callback to check to original value that if supplied will be called if the new value should be set (if allowed)\r\n * @returns The existing or new value, depending what was set\r\n */\r\nexport function setValue(target, field, value, valChk, srcChk) {\r\n var theValue = value;\r\n if (target) {\r\n theValue = target[field];\r\n if (theValue !== value && (!srcChk || srcChk(theValue)) && (!valChk || valChk(value))) {\r\n theValue = value;\r\n target[field] = theValue;\r\n }\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Returns the current value from the target object if not null or undefined otherwise sets the new value and returns it\r\n * @param target - The target object to return or set the default value\r\n * @param field - The key for the field to set on the target\r\n * @param defValue - [Optional] The value to set if not already present, when not provided a empty object will be added\r\n */\r\nexport function getSetValue(target, field, defValue) {\r\n var theValue;\r\n if (target) {\r\n theValue = target[field];\r\n if (!theValue && isNullOrUndefined(theValue)) {\r\n // Supports having the default as null\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n target[field] = theValue;\r\n }\r\n }\r\n else {\r\n // Expanded for performance so we only check defValue if required\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n }\r\n return theValue;\r\n}\r\nfunction _createProxyFunction(source, funcName) {\r\n var srcFunc = null;\r\n var src = null;\r\n if (isFunction(source)) {\r\n srcFunc = source;\r\n }\r\n else {\r\n src = source;\r\n }\r\n return function () {\r\n // Capture the original arguments passed to the method\r\n var originalArguments = arguments;\r\n if (srcFunc) {\r\n src = srcFunc();\r\n }\r\n if (src) {\r\n return src[funcName][_DYN_APPLY /* @min:%2eapply */](src, originalArguments);\r\n }\r\n };\r\n}\r\n/**\r\n * Effectively assigns all enumerable properties (not just own properties) and functions (including inherited prototype) from\r\n * the source object to the target, it attempts to use proxy getters / setters (if possible) and proxy functions to avoid potential\r\n * implementation issues by assigning prototype functions as instance ones\r\n *\r\n * This method is the primary method used to \"update\" the snippet proxy with the ultimate implementations.\r\n *\r\n * Special ES3 Notes:\r\n * Updates (setting) of direct property values on the target or indirectly on the source object WILL NOT WORK PROPERLY, updates to the\r\n * properties of \"referenced\" object will work (target.context.newValue = 10 => will be reflected in the source.context as it's the\r\n * same object). ES3 Failures: assigning target.myProp = 3 -> Won't change source.myProp = 3, likewise the reverse would also fail.\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param chkSet - An optional callback to determine whether a specific property/function should be proxied\r\n */\r\nexport function proxyAssign(target, source, chkSet) {\r\n if (target && source && isObject(target) && isObject(source)) {\r\n var _loop_1 = function (field) {\r\n if (isString(field)) {\r\n var value = source[field];\r\n if (isFunction(value)) {\r\n if (!chkSet || chkSet(field, true, source, target)) {\r\n // Create a proxy function rather than just copying the (possible) prototype to the new object as an instance function\r\n target[field] = _createProxyFunction(source, field);\r\n }\r\n }\r\n else if (!chkSet || chkSet(field, false, source, target)) {\r\n if (objHasOwn(target, field)) {\r\n // Remove any previous instance property\r\n delete target[field];\r\n }\r\n objDefine(target, field, {\r\n g: function () {\r\n return source[field];\r\n },\r\n s: function (theValue) {\r\n source[field] = theValue;\r\n }\r\n });\r\n }\r\n }\r\n };\r\n // effectively apply/proxy full source to the target instance\r\n for (var field in source) {\r\n _loop_1(field);\r\n }\r\n }\r\n return target;\r\n}\r\n/**\r\n * Creates a proxy function on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param name - The function name that will be added on the target\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param theFunc - The function name on the source that will be proxied on the target\r\n * @param overwriteTarget - If `false` this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctionAs(target, name, source, theFunc, overwriteTarget) {\r\n if (target && name && source) {\r\n if (overwriteTarget !== false || isUndefined(target[name])) {\r\n target[name] = _createProxyFunction(source, theFunc);\r\n }\r\n }\r\n}\r\n/**\r\n * Creates proxy functions on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param functionsToProxy - An array of function names that will be proxied on the target\r\n * @param overwriteTarget - If false this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctions(target, source, functionsToProxy, overwriteTarget) {\r\n if (target && source && isObject(target) && isArray(functionsToProxy)) {\r\n arrForEach(functionsToProxy, function (theFuncName) {\r\n if (isString(theFuncName)) {\r\n proxyFunctionAs(target, theFuncName, source, theFuncName, overwriteTarget);\r\n }\r\n });\r\n }\r\n return target;\r\n}\r\n/**\r\n * Simpler helper to create a dynamic class that implements the interface and populates the values with the defaults.\r\n * Only instance properties (hasOwnProperty) values are copied from the defaults to the new instance\r\n * @param defaults - Simple helper\r\n */\r\nexport function createClassFromInterface(defaults) {\r\n return /** @class */ (function () {\r\n function class_1() {\r\n var _this = this;\r\n if (defaults) {\r\n objForEachKey(defaults, function (field, value) {\r\n _this[field] = value;\r\n });\r\n }\r\n }\r\n return class_1;\r\n }());\r\n}\r\n/**\r\n * A helper function to assist with JIT performance for objects that have properties added / removed dynamically\r\n * this is primarily for chromium based browsers and has limited effects on Firefox and none of IE. Only call this\r\n * function after you have finished \"updating\" the object, calling this within loops reduces or defeats the benefits.\r\n * This helps when iterating using for..in, objKeys() and objForEach()\r\n * @param theObject - The object to be optimized if possible\r\n */\r\nexport function optimizeObject(theObject) {\r\n // V8 Optimization to cause the JIT compiler to create a new optimized object for looking up the own properties\r\n // primarily for object with <= 19 properties for >= 20 the effect is reduced or non-existent\r\n if (theObject && ObjAssign) {\r\n theObject = ObjClass(ObjAssign({}, theObject));\r\n }\r\n return theObject;\r\n}\r\nexport function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {\r\n // Variables\r\n var theArgs = arguments;\r\n var extended = theArgs[0] || {};\r\n var argLen = theArgs[_DYN_LENGTH /* @min:%2elength */];\r\n var deep = false;\r\n var idx = 1;\r\n // Check for \"Deep\" flag\r\n if (argLen > 0 && isBoolean(extended)) {\r\n deep = extended;\r\n extended = theArgs[idx] || {};\r\n idx++;\r\n }\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if (!isObject(extended)) {\r\n extended = {};\r\n }\r\n // Loop through each remaining object and conduct a merge\r\n for (; idx < argLen; idx++) {\r\n var arg = theArgs[idx];\r\n var isArgArray = isArray(arg);\r\n var isArgObj = isObject(arg);\r\n for (var prop in arg) {\r\n var propOk = (isArgArray && (prop in arg)) || (isArgObj && objHasOwn(arg, prop));\r\n if (!propOk) {\r\n continue;\r\n }\r\n var newValue = arg[prop];\r\n var isNewArray = void 0;\r\n // If deep merge and property is an object, merge properties\r\n if (deep && newValue && ((isNewArray = isArray(newValue)) || isPlainObject(newValue))) {\r\n // Grab the current value of the extended object\r\n var clone = extended[prop];\r\n if (isNewArray) {\r\n if (!isArray(clone)) {\r\n // We can't \"merge\" an array with a non-array so overwrite the original\r\n clone = [];\r\n }\r\n }\r\n else if (!isPlainObject(clone)) {\r\n // We can't \"merge\" an object with a non-object\r\n clone = {};\r\n }\r\n // Never move the original objects always clone them\r\n newValue = objExtend(deep, clone, newValue);\r\n }\r\n // Assign the new (or previous) value (unless undefined)\r\n if (newValue !== undefined) {\r\n extended[prop] = newValue;\r\n }\r\n }\r\n }\r\n return extended;\r\n}\r\nexport var asString = asString21;\r\nexport function isFeatureEnabled(feature, cfg) {\r\n var rlt = false;\r\n var ft = cfg && cfg.featureOptIn && cfg.featureOptIn[feature];\r\n if (feature && ft) {\r\n var mode = ft.mode;\r\n // NOTE: None will be considered as true\r\n rlt = (mode == 3 /* FeatureOptInMode.enable */) || (mode == 1 /* FeatureOptInMode.none */);\r\n }\r\n return rlt;\r\n}\r\nexport function getResponseText(xhr) {\r\n try {\r\n return xhr.responseText;\r\n }\r\n catch (e) {\r\n // Best effort, as XHR may throw while XDR wont so just ignore\r\n }\r\n return null;\r\n}\r\nexport function formatErrorMessageXdr(xdr, message) {\r\n if (xdr) {\r\n return \"XDomainRequest,Response:\" + getResponseText(xdr) || \"\";\r\n }\r\n return message;\r\n}\r\nexport function formatErrorMessageXhr(xhr, message) {\r\n if (xhr) {\r\n return \"XMLHttpRequest,Status:\" + xhr[_DYN_STATUS /* @min:%2estatus */] + \",Response:\" + getResponseText(xhr) || xhr.response || \"\";\r\n }\r\n return message;\r\n}\r\nexport function prependTransports(theTransports, newTransports) {\r\n if (newTransports) {\r\n if (isNumber(newTransports)) {\r\n theTransports = [newTransports].concat(theTransports);\r\n }\r\n else if (isArray(newTransports)) {\r\n theTransports = newTransports.concat(theTransports);\r\n }\r\n }\r\n return theTransports;\r\n}\r\nvar strDisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nvar strWithCredentials = \"withCredentials\";\r\nvar strTimeout = \"timeout\";\r\n/**\r\n * Create and open an XMLHttpRequest object\r\n * @param method - The request method\r\n * @param urlString - The url\r\n * @param withCredentials - Option flag indicating that credentials should be sent\r\n * @param disabled - Optional flag indicating that the XHR object should be marked as disabled and not tracked (default is false)\r\n * @param isSync - Optional flag indicating if the instance should be a synchronous request (defaults to false)\r\n * @param timeout - Optional value identifying the timeout value that should be assigned to the XHR request\r\n * @returns A new opened XHR request\r\n */\r\nexport function openXhr(method, urlString, withCredentials, disabled, isSync, timeout) {\r\n if (disabled === void 0) { disabled = false; }\r\n if (isSync === void 0) { isSync = false; }\r\n function _wrapSetXhrProp(xhr, prop, value) {\r\n try {\r\n xhr[prop] = value;\r\n }\r\n catch (e) {\r\n // - Wrapping as depending on the environment setting the property may fail (non-terminally)\r\n }\r\n }\r\n var xhr = new XMLHttpRequest();\r\n if (disabled) {\r\n // Tag the instance so it's not tracked (trackDependency)\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n _wrapSetXhrProp(xhr, strDisabledPropertyName, disabled);\r\n }\r\n if (withCredentials) {\r\n // Some libraries require that the withCredentials flag is set \"before\" open and\r\n // - Wrapping as IE 10 has started throwing when setting before open\r\n _wrapSetXhrProp(xhr, strWithCredentials, withCredentials);\r\n }\r\n xhr.open(method, urlString, !isSync);\r\n if (withCredentials) {\r\n // withCredentials should be set AFTER open (https://xhr.spec.whatwg.org/#the-withcredentials-attribute)\r\n // And older firefox instances from 11+ will throw for sync events (current versions don't) which happens during unload processing\r\n _wrapSetXhrProp(xhr, strWithCredentials, withCredentials);\r\n }\r\n // Only set the timeout for asynchronous requests as\r\n // \"Timeout shouldn't be used for synchronous XMLHttpRequests requests used in a document environment or it will throw an InvalidAccessError exception.\"\"\r\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/timeout\r\n if (!isSync && timeout) {\r\n _wrapSetXhrProp(xhr, strTimeout, timeout);\r\n }\r\n return xhr;\r\n}\r\n/**\r\n* Converts the XHR getAllResponseHeaders to a map containing the header key and value.\r\n* @internal\r\n*/\r\n// tslint:disable-next-line: align\r\nexport function convertAllHeadersToMap(headersString) {\r\n var headers = {};\r\n if (isString(headersString)) {\r\n var headersArray = strTrim(headersString)[_DYN_SPLIT /* @min:%2esplit */](/[\\r\\n]+/);\r\n arrForEach(headersArray, function (headerEntry) {\r\n if (headerEntry) {\r\n var idx = headerEntry.indexOf(\": \");\r\n if (idx !== -1) {\r\n // The new spec has the headers returning all as lowercase -- but not all browsers do this yet\r\n var header = strTrim(headerEntry.substring(0, idx))[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var value = strTrim(headerEntry.substring(idx + 1));\r\n headers[header] = value;\r\n }\r\n else {\r\n headers[strTrim(headerEntry)] = 1;\r\n }\r\n }\r\n });\r\n }\r\n return headers;\r\n}\r\n/**\r\n* append the XHR headers.\r\n* @internal\r\n*/\r\nexport function _appendHeader(theHeaders, xhr, name) {\r\n if (!theHeaders[name] && xhr && xhr[_DYN_GET_RESPONSE_HEADER /* @min:%2egetResponseHeader */]) {\r\n var value = xhr[_DYN_GET_RESPONSE_HEADER /* @min:%2egetResponseHeader */](name);\r\n if (value) {\r\n theHeaders[name] = strTrim(value);\r\n }\r\n }\r\n return theHeaders;\r\n}\r\nvar STR_KILL_DURATION_HEADER = \"kill-duration\";\r\nvar STR_KILL_DURATION_SECONDS_HEADER = \"kill-duration-seconds\";\r\nvar STR_TIME_DELTA_HEADER = \"time-delta-millis\";\r\n/**\r\n* get the XHR getAllResponseHeaders.\r\n* @internal\r\n*/\r\nexport function _getAllResponseHeaders(xhr, isOneDs) {\r\n var theHeaders = {};\r\n if (!xhr[_DYN_GET_ALL_RESPONSE_HEA5 /* @min:%2egetAllResponseHeaders */]) {\r\n // Firefox 2-63 doesn't have getAllResponseHeaders function but it does have getResponseHeader\r\n // Only call these if getAllResponseHeaders doesn't exist, otherwise we can get invalid response errors\r\n // as collector is not currently returning the correct header to allow JS to access these headers\r\n if (!!isOneDs) {\r\n theHeaders = _appendHeader(theHeaders, xhr, STR_TIME_DELTA_HEADER);\r\n theHeaders = _appendHeader(theHeaders, xhr, STR_KILL_DURATION_HEADER);\r\n theHeaders = _appendHeader(theHeaders, xhr, STR_KILL_DURATION_SECONDS_HEADER);\r\n }\r\n }\r\n else {\r\n theHeaders = convertAllHeadersToMap(xhr[_DYN_GET_ALL_RESPONSE_HEA5 /* @min:%2egetAllResponseHeaders */]());\r\n }\r\n return theHeaders;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { getGlobal, strShimObject, strShimPrototype, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { getDocument, getInst, getNavigator, getPerformance, hasNavigator, isFunction, isString, isUndefined, strIndexOf } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH, _DYN_NAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { strContains } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n/**\r\n * This file exists to hold environment utilities that are required to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only use defined methods (functions) in this class so that users of these\r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\nvar strDocumentMode = \"documentMode\";\r\nvar strLocation = \"location\";\r\nvar strConsole = \"console\";\r\nvar strJSON = \"JSON\";\r\nvar strCrypto = \"crypto\";\r\nvar strMsCrypto = \"msCrypto\";\r\nvar strReactNative = \"ReactNative\";\r\nvar strMsie = \"msie\";\r\nvar strTrident = \"trident/\";\r\nvar strXMLHttpRequest = \"XMLHttpRequest\";\r\nvar _isTrident = null;\r\nvar _navUserAgentCheck = null;\r\nvar _enableMocks = false;\r\nvar _useXDomainRequest = null;\r\nvar _beaconsSupported = null;\r\nfunction _hasProperty(theClass, property) {\r\n var supported = false;\r\n if (theClass) {\r\n try {\r\n supported = property in theClass;\r\n if (!supported) {\r\n var proto = theClass[strShimPrototype];\r\n if (proto) {\r\n supported = property in proto;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n if (!supported) {\r\n try {\r\n var tmp = new theClass();\r\n supported = !isUndefined(tmp[property]);\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n }\r\n }\r\n return supported;\r\n}\r\n/**\r\n * Enable the lookup of test mock objects if requested\r\n * @param enabled\r\n */\r\nexport function setEnableEnvMocks(enabled) {\r\n _enableMocks = enabled;\r\n}\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(checkForMock) {\r\n if (checkForMock && _enableMocks) {\r\n var mockLocation = getInst(\"__mockLocation\");\r\n if (mockLocation) {\r\n return mockLocation;\r\n }\r\n }\r\n if (typeof location === strShimObject && location) {\r\n return location;\r\n }\r\n return getInst(strLocation);\r\n}\r\n/**\r\n * Returns the global console object\r\n */\r\nexport function getConsole() {\r\n if (typeof console !== strShimUndefined) {\r\n return console;\r\n }\r\n return getInst(strConsole);\r\n}\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON() {\r\n return Boolean((typeof JSON === strShimObject && JSON) || getInst(strJSON) !== null);\r\n}\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON() {\r\n if (hasJSON()) {\r\n return JSON || getInst(strJSON);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getCrypto() {\r\n return getInst(strCrypto);\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getMsCrypto() {\r\n return getInst(strMsCrypto);\r\n}\r\n/**\r\n * Returns whether the environment is reporting that we are running in a React Native Environment\r\n */\r\nexport function isReactNative() {\r\n // If running in React Native, navigator.product will be populated\r\n var nav = getNavigator();\r\n if (nav && nav.product) {\r\n return nav.product === strReactNative;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Identifies whether the current environment appears to be IE\r\n */\r\nexport function isIE() {\r\n var nav = getNavigator();\r\n if (nav && (nav[_DYN_USER_AGENT /* @min:%2euserAgent */] !== _navUserAgentCheck || _isTrident === null)) {\r\n // Added to support test mocking of the user agent\r\n _navUserAgentCheck = nav[_DYN_USER_AGENT /* @min:%2euserAgent */];\r\n var userAgent = (_navUserAgentCheck || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));\r\n }\r\n return _isTrident;\r\n}\r\n/**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\nexport function getIEVersion(userAgentStr) {\r\n if (userAgentStr === void 0) { userAgentStr = null; }\r\n if (!userAgentStr) {\r\n var navigator_1 = getNavigator() || {};\r\n userAgentStr = navigator_1 ? (navigator_1.userAgent || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // Also check for documentMode in case X-UA-Compatible meta tag was included in HTML.\r\n if (strContains(ua, strMsie)) {\r\n var doc = getDocument() || {};\r\n return Math.max(parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strMsie)[1]), (doc[strDocumentMode] || 0));\r\n }\r\n else if (strContains(ua, strTrident)) {\r\n var tridentVer = parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strTrident)[1]);\r\n if (tridentVer) {\r\n return tridentVer + 4;\r\n }\r\n }\r\n return null;\r\n}\r\nexport function isSafari(userAgentStr) {\r\n if (!userAgentStr || !isString(userAgentStr)) {\r\n var navigator_2 = getNavigator() || {};\r\n userAgentStr = navigator_2 ? (navigator_2.userAgent || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n return (strIndexOf(ua, \"safari\") >= 0);\r\n}\r\n/**\r\n * Checks if HTML5 Beacons are supported in the current environment.\r\n * @param useCached - [Optional] used for testing to bypass the cached lookup, when `true` this will\r\n * cause the cached global to be reset.\r\n * @returns True if supported, false otherwise.\r\n */\r\nexport function isBeaconsSupported(useCached) {\r\n if (_beaconsSupported === null || useCached === false) {\r\n _beaconsSupported = hasNavigator() && Boolean(getNavigator().sendBeacon);\r\n }\r\n return _beaconsSupported;\r\n}\r\n/**\r\n * Checks if the Fetch API is supported in the current environment.\r\n * @param withKeepAlive - [Optional] If True, check if fetch is available and it supports the keepalive feature, otherwise only check if fetch is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isFetchSupported(withKeepAlive) {\r\n var isSupported = false;\r\n try {\r\n isSupported = !!getInst(\"fetch\");\r\n var request = getInst(\"Request\");\r\n if (isSupported && withKeepAlive && request) {\r\n isSupported = _hasProperty(request, \"keepalive\");\r\n }\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nexport function useXDomainRequest() {\r\n if (_useXDomainRequest === null) {\r\n _useXDomainRequest = (typeof XDomainRequest !== strShimUndefined);\r\n if (_useXDomainRequest && isXhrSupported()) {\r\n _useXDomainRequest = _useXDomainRequest && !_hasProperty(getInst(strXMLHttpRequest), \"withCredentials\");\r\n }\r\n }\r\n return _useXDomainRequest;\r\n}\r\n/**\r\n * Checks if XMLHttpRequest is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isXhrSupported() {\r\n var isSupported = false;\r\n try {\r\n var xmlHttpRequest = getInst(strXMLHttpRequest);\r\n isSupported = !!xmlHttpRequest;\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nfunction _getNamedValue(values, name) {\r\n if (values) {\r\n for (var i = 0; i < values[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var value = values[i];\r\n if (value[_DYN_NAME /* @min:%2ename */]) {\r\n if (value[_DYN_NAME /* @min:%2ename */] === name) {\r\n return value;\r\n }\r\n }\r\n }\r\n }\r\n return {};\r\n}\r\n/**\r\n * Helper function to fetch the named meta-tag from the page.\r\n * @param name\r\n */\r\nexport function findMetaTag(name) {\r\n var doc = getDocument();\r\n if (doc && name) {\r\n // Look for a meta-tag\r\n return _getNamedValue(doc.querySelectorAll(\"meta\"), name).content;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Helper function to fetch the named server timing value from the page response (first navigation event).\r\n * @param name\r\n */\r\nexport function findNamedServerTiming(name) {\r\n var value;\r\n var perf = getPerformance();\r\n if (perf) {\r\n // Try looking for a server-timing header\r\n var navPerf = perf.getEntriesByType(\"navigation\") || [];\r\n value = _getNamedValue((navPerf[_DYN_LENGTH /* @min:%2elength */] > 0 ? navPerf[0] : {}).serverTiming, name).description;\r\n }\r\n return value;\r\n}\r\n// TODO: should reuse this method for analytics plugin\r\nexport function dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function createCustomDomEvent(eventName, details) {\r\n var event = null;\r\n var detail = { detail: details || null };\r\n if (isFunction(CustomEvent)) { // Use CustomEvent constructor when available\r\n event = new CustomEvent(eventName, detail);\r\n }\r\n else { // CustomEvent has no constructor in IE\r\n var doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"CustomEvent\");\r\n event.initCustomEvent(eventName, true, true, detail);\r\n }\r\n }\r\n return event;\r\n}\r\nexport function sendCustomEvent(evtName, cfg, customDetails) {\r\n var global = getGlobal();\r\n if (global && global.CustomEvent) {\r\n try {\r\n var details = { cfg: cfg || null, customDetails: customDetails || null };\r\n return dispatchEvent(global, createCustomDomEvent(evtName, details));\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n return false;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { utcNow } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getCrypto, getMsCrypto, isIE } from \"./EnvUtils\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar UInt32Mask = 0x100000000;\r\nvar MaxUInt32 = 0xffffffff;\r\nvar SEED1 = 123456789;\r\nvar SEED2 = 987654321;\r\n// MWC based Random generator (for IE)\r\nvar _mwcSeeded = false;\r\nvar _mwcW = SEED1;\r\nvar _mwcZ = SEED2;\r\n// Takes any integer\r\nfunction _mwcSeed(seedValue) {\r\n if (seedValue < 0) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n seedValue >>>= 0;\r\n }\r\n _mwcW = (SEED1 + seedValue) & MaxUInt32;\r\n _mwcZ = (SEED2 - seedValue) & MaxUInt32;\r\n _mwcSeeded = true;\r\n}\r\nfunction _autoSeedMwc() {\r\n // Simple initialization using default Math.random() - So we inherit any entropy from the browser\r\n // and bitwise XOR with the current milliseconds\r\n try {\r\n var now = utcNow() & 0x7fffffff;\r\n _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);\r\n }\r\n catch (e) {\r\n // Don't crash if something goes wrong\r\n }\r\n}\r\n/**\r\n * Generate a random value between 0 and maxValue, max value should be limited to a 32-bit maximum.\r\n * So maxValue(16) will produce a number from 0..16 (range of 17)\r\n * @param maxValue\r\n */\r\nexport function randomValue(maxValue) {\r\n if (maxValue > 0) {\r\n return Math.floor((random32() / MaxUInt32) * (maxValue + 1)) >>> 0;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * generate a random 32-bit number (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), defaults un-unsigned.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function random32(signed) {\r\n var value = 0;\r\n var c = getCrypto() || getMsCrypto();\r\n if (c && c.getRandomValues) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;\r\n }\r\n if (value === 0 && isIE()) {\r\n // For IE 6, 7, 8 (especially on XP) Math.random is not very random\r\n if (!_mwcSeeded) {\r\n // Set the seed for the Mwc algorithm\r\n _autoSeedMwc();\r\n }\r\n // Don't use Math.random for IE\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = mwcRandom32() & MaxUInt32;\r\n }\r\n if (value === 0) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = Math.floor((UInt32Mask * Math.random()) | 0);\r\n }\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Seed the MWC random number generator with the specified seed or a random value\r\n * @param value - optional the number to used as the seed, if undefined, null or zero a random value will be chosen\r\n */\r\nexport function mwcRandomSeed(value) {\r\n if (!value) {\r\n _autoSeedMwc();\r\n }\r\n else {\r\n _mwcSeed(value);\r\n }\r\n}\r\n/**\r\n * Generate a random 32-bit number between (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), using MWC (Multiply with carry)\r\n * instead of Math.random() defaults to un-signed.\r\n * Used as a replacement random generator for IE to avoid issues with older IE instances.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function mwcRandom32(signed) {\r\n _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;\r\n _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;\r\n var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Generate random base64 id string.\r\n * The default length is 22 which is 132-bits so almost the same as a GUID but as base64 (the previous default was 5)\r\n * @param maxLength - Optional value to specify the length of the id to be generated, defaults to 22\r\n */\r\nexport function newId(maxLength) {\r\n if (maxLength === void 0) { maxLength = 22; }\r\n var base64chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Start with an initial random number, consuming the value in reverse byte order\r\n var number = random32() >>> 0; // Make sure it's a +ve number\r\n var chars = 0;\r\n var result = STR_EMPTY;\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < maxLength) {\r\n chars++;\r\n result += base64chars.charAt(number & 0x3F);\r\n number >>>= 6; // Zero fill with right shift\r\n if (chars === 5) {\r\n // 5 base64 characters === 30 bits so we don't have enough bits for another base64 char\r\n // So add on another 30 bits and make sure it's +ve\r\n number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;\r\n chars = 0; // We need to reset the number every 5 chars (30 bits)\r\n }\r\n }\r\n return result;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { objDefine } from \"@nevware21/ts-utils\";\r\nimport { _DYN_NODE_TYPE } from \"../__DynamicConstants\";\r\nimport { normalizeJsName } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { newId } from \"./RandomHelper\";\r\nvar version = '3.3.0';\r\nvar instanceName = \".\" + newId(6);\r\nvar _dataUid = 0;\r\n// Accepts only:\r\n// - Node\r\n// - Node.ELEMENT_NODE\r\n// - Node.DOCUMENT_NODE\r\n// - Object\r\n// - Any\r\nfunction _canAcceptData(target) {\r\n return target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 1 || target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 9 || !(+target[_DYN_NODE_TYPE /* @min:%2enodeType */]);\r\n}\r\nfunction _getCache(data, target) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n theCache = {};\r\n try {\r\n if (_canAcceptData(target)) {\r\n objDefine(target, data.id, {\r\n e: false,\r\n v: theCache\r\n });\r\n }\r\n }\r\n catch (e) {\r\n // Not all environments allow extending all objects, so just ignore the cache in those cases\r\n }\r\n }\r\n return theCache;\r\n}\r\nexport function createUniqueNamespace(name, includeVersion) {\r\n if (includeVersion === void 0) { includeVersion = false; }\r\n return normalizeJsName(name + (_dataUid++) + (includeVersion ? \".\" + version : STR_EMPTY) + instanceName);\r\n}\r\nexport function createElmNodeData(name) {\r\n var data = {\r\n id: createUniqueNamespace(\"_aiData-\" + (name || STR_EMPTY) + \".\" + version),\r\n accept: function (target) {\r\n return _canAcceptData(target);\r\n },\r\n get: function (target, name, defValue, addDefault) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n if (addDefault) {\r\n // Side effect is adds the cache\r\n theCache = _getCache(data, target);\r\n theCache[normalizeJsName(name)] = defValue;\r\n }\r\n return defValue;\r\n }\r\n return theCache[normalizeJsName(name)];\r\n },\r\n kill: function (target, name) {\r\n if (target && target[name]) {\r\n try {\r\n delete target[name];\r\n }\r\n catch (e) {\r\n // Just cleaning up, so if this fails -- ignore\r\n }\r\n }\r\n }\r\n };\r\n return data;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { asString, isArray, isDefined, isNullOrUndefined, isObject, isPlainObject, isUndefined, objForEachKey, objHasOwn } from \"@nevware21/ts-utils\";\r\nimport { _DYN_BLK_VAL, _DYN_LENGTH, _DYN_RD_ONLY } from \"../__DynamicConstants\";\r\nfunction _isConfigDefaults(value) {\r\n return (value && isObject(value) && (value.isVal || value.fb || objHasOwn(value, \"v\") || objHasOwn(value, \"mrg\") || objHasOwn(value, \"ref\") || value.set));\r\n}\r\nfunction _getDefault(dynamicHandler, theConfig, cfgDefaults) {\r\n var defValue;\r\n var isDefaultValid = cfgDefaults.dfVal || isDefined;\r\n // There is a fallback config key so try and grab that first\r\n if (theConfig && cfgDefaults.fb) {\r\n var fallbacks = cfgDefaults.fb;\r\n if (!isArray(fallbacks)) {\r\n fallbacks = [fallbacks];\r\n }\r\n for (var lp = 0; lp < fallbacks[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var fallback = fallbacks[lp];\r\n var fbValue = theConfig[fallback];\r\n if (isDefaultValid(fbValue)) {\r\n defValue = fbValue;\r\n }\r\n else if (dynamicHandler) {\r\n // Needed to ensure that the fallback value (and potentially) new field is also dynamic even if null/undefined\r\n fbValue = dynamicHandler.cfg[fallback];\r\n if (isDefaultValid(fbValue)) {\r\n defValue = fbValue;\r\n }\r\n // Needed to ensure that the fallback value (and potentially) new field is also dynamic even if null/undefined\r\n dynamicHandler.set(dynamicHandler.cfg, asString(fallback), fbValue);\r\n }\r\n if (isDefaultValid(defValue)) {\r\n // We have a valid default so break out of the look\r\n break;\r\n }\r\n }\r\n }\r\n // If the value is still not defined and we have a default value then use that\r\n if (!isDefaultValid(defValue) && isDefaultValid(cfgDefaults.v)) {\r\n defValue = cfgDefaults.v;\r\n }\r\n return defValue;\r\n}\r\n/**\r\n * Recursively resolve the default value\r\n * @param dynamicHandler\r\n * @param theConfig\r\n * @param cfgDefaults\r\n * @returns\r\n */\r\nfunction _resolveDefaultValue(dynamicHandler, theConfig, cfgDefaults) {\r\n var theValue = cfgDefaults;\r\n if (cfgDefaults && _isConfigDefaults(cfgDefaults)) {\r\n theValue = _getDefault(dynamicHandler, theConfig, cfgDefaults);\r\n }\r\n if (theValue) {\r\n if (_isConfigDefaults(theValue)) {\r\n theValue = _resolveDefaultValue(dynamicHandler, theConfig, theValue);\r\n }\r\n var newValue_1;\r\n if (isArray(theValue)) {\r\n newValue_1 = [];\r\n newValue_1[_DYN_LENGTH /* @min:%2elength */] = theValue[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n else if (isPlainObject(theValue)) {\r\n newValue_1 = {};\r\n }\r\n if (newValue_1) {\r\n objForEachKey(theValue, function (key, value) {\r\n if (value && _isConfigDefaults(value)) {\r\n value = _resolveDefaultValue(dynamicHandler, theConfig, value);\r\n }\r\n newValue_1[key] = value;\r\n });\r\n theValue = newValue_1;\r\n }\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Applies the default value on the config property and makes sure that it's dynamic\r\n * @param theConfig\r\n * @param name\r\n * @param defaultValue\r\n */\r\nexport function _applyDefaultValue(dynamicHandler, theConfig, name, defaultValue) {\r\n // Resolve the initial config value from the provided value or use the defined default\r\n var isValid;\r\n var setFn;\r\n var defValue;\r\n var cfgDefaults = defaultValue;\r\n var mergeDf;\r\n var reference;\r\n var readOnly;\r\n var blkDynamicValue;\r\n if (_isConfigDefaults(cfgDefaults)) {\r\n // looks like a IConfigDefault\r\n isValid = cfgDefaults.isVal;\r\n setFn = cfgDefaults.set;\r\n readOnly = cfgDefaults[_DYN_RD_ONLY /* @min:%2erdOnly */];\r\n blkDynamicValue = cfgDefaults[_DYN_BLK_VAL /* @min:%2eblkVal */];\r\n mergeDf = cfgDefaults.mrg;\r\n reference = cfgDefaults.ref;\r\n if (!reference && isUndefined(reference)) {\r\n reference = !!mergeDf;\r\n }\r\n defValue = _getDefault(dynamicHandler, theConfig, cfgDefaults);\r\n }\r\n else {\r\n defValue = defaultValue;\r\n }\r\n if (blkDynamicValue) {\r\n // Mark the property so that any value assigned will be blocked from conversion, we need to do this\r\n // before assigning or fetching the value to ensure it's not converted\r\n dynamicHandler[_DYN_BLK_VAL /* @min:%2eblkVal */](theConfig, name);\r\n }\r\n // Set the value to the default value;\r\n var theValue;\r\n var usingDefault = true;\r\n var cfgValue = theConfig[name];\r\n // try and get and user provided values\r\n if (cfgValue || !isNullOrUndefined(cfgValue)) {\r\n // Use the defined theConfig[name] value\r\n theValue = cfgValue;\r\n usingDefault = false;\r\n // The values are different and we have a special default value check, which is used to\r\n // override config values like empty strings to continue using the default\r\n if (isValid && theValue !== defValue && !isValid(theValue)) {\r\n theValue = defValue;\r\n usingDefault = true;\r\n }\r\n if (setFn) {\r\n theValue = setFn(theValue, defValue, theConfig);\r\n usingDefault = theValue === defValue;\r\n }\r\n }\r\n if (!usingDefault) {\r\n if (isPlainObject(theValue) || isArray(defValue)) {\r\n // we are using the user supplied value and it's an object\r\n if (mergeDf && defValue && (isPlainObject(defValue) || isArray(defValue))) {\r\n // Resolve/apply the defaults\r\n objForEachKey(defValue, function (dfName, dfValue) {\r\n // Sets the value and makes it dynamic (if it doesn't already exist)\r\n _applyDefaultValue(dynamicHandler, theValue, dfName, dfValue);\r\n });\r\n }\r\n }\r\n }\r\n else if (defValue) {\r\n // Just resolve the default\r\n theValue = _resolveDefaultValue(dynamicHandler, theConfig, defValue);\r\n }\r\n else {\r\n theValue = defValue;\r\n }\r\n // if (theValue && usingDefault && (isPlainObject(theValue) || isArray(theValue))) {\r\n // theValue = _cfgDeepCopy(theValue);\r\n // }\r\n // Needed to ensure that the (potentially) new field is dynamic even if null/undefined\r\n dynamicHandler.set(theConfig, name, theValue);\r\n if (reference) {\r\n dynamicHandler.ref(theConfig, name);\r\n }\r\n if (readOnly) {\r\n dynamicHandler[_DYN_RD_ONLY /* @min:%2erdOnly */](theConfig, name);\r\n }\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isArray, isPlainObject, objForEachKey, symbolFor, throwTypeError } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\n// Using Symbol.for so that if the same symbol was already created it would be returned\r\n// To handle multiple instances using potentially different versions we are not using\r\n// createUniqueNamespace()\r\nexport var CFG_HANDLER_LINK = symbolFor(\"[[ai_dynCfg_1]]\");\r\n/**\r\n * @internal\r\n * @ignore\r\n * The symbol to tag objects / arrays with if they should not be converted\r\n */\r\nvar BLOCK_DYNAMIC = symbolFor(\"[[ai_blkDynCfg_1]]\");\r\n/**\r\n * @internal\r\n * @ignore\r\n * The symbol to tag objects to indicate that when included into the configuration that\r\n * they should be converted into a trackable dynamic object.\r\n */\r\nvar FORCE_DYNAMIC = symbolFor(\"[[ai_frcDynCfg_1]]\");\r\nexport function _cfgDeepCopy(source) {\r\n if (source) {\r\n var target_1;\r\n if (isArray(source)) {\r\n target_1 = [];\r\n target_1[_DYN_LENGTH /* @min:%2elength */] = source[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n else if (isPlainObject(source)) {\r\n target_1 = {};\r\n }\r\n if (target_1) {\r\n // Copying index values by property name as the extensionConfig can be an array or object\r\n objForEachKey(source, function (key, value) {\r\n // Perform a deep copy of the object\r\n target_1[key] = _cfgDeepCopy(value);\r\n });\r\n return target_1;\r\n }\r\n }\r\n return source;\r\n}\r\n/**\r\n * @internal\r\n * Get the dynamic config handler if the value is already dynamic\r\n * @param value\r\n * @returns\r\n */\r\nexport function getDynamicConfigHandler(value) {\r\n if (value) {\r\n var handler = value[CFG_HANDLER_LINK] || value;\r\n if (handler.cfg && (handler.cfg === value || handler.cfg[CFG_HANDLER_LINK] === handler)) {\r\n return handler;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Mark the provided value so that if it's included into the configuration it will NOT have\r\n * its properties converted into a dynamic (reactive) object. If the object is not a plain object\r\n * or an array (ie. a class) this function has not affect as only Objects and Arrays are converted\r\n * into dynamic objects in the dynamic configuration.\r\n *\r\n * When you have tagged a value as both {@link forceDynamicConversion} and blocked force will take precedence.\r\n *\r\n * You should only need to use this function, if you are creating dynamic \"classes\" from objects\r\n * which confirm to the require interface. A common case for this is during unit testing where it's\r\n * easier to create mock extensions.\r\n *\r\n * If `value` is falsy (null / undefined / 0 / empty string etc) it will not be tagged and\r\n * if there is an exception adding the property to the value (because its frozen etc) the\r\n * exception will be swallowed\r\n *\r\n * @example\r\n * ```ts\r\n * // This is a valid \"extension\", but it is technically an object\r\n * // So when included in the config.extensions it WILL be cloned and then\r\n * // converted into a dynamic object, where all of its properties will become\r\n * // get/set object properties and will be tracked. While this WILL still\r\n * // function, when attempt to use a mocking framework on top of this the\r\n * // functions are now technically get accessors which return a function\r\n * // and this can cause some mocking frameworks to fail.\r\n * let mockChannel = {\r\n * pause: () => { },\r\n* resume: () => { },\r\n* teardown: () => { },\r\n* flush: (async: any, callBack: any) => { },\r\n* processTelemetry: (env: any) => { },\r\n* setNextPlugin: (next: any) => { },\r\n* initialize: (config: any, core: any, extensions: any) => { },\r\n* identifier: \"testChannel\",\r\n* priority: 1003\r\n* };\r\n * ```\r\n * @param value - The object that you want to block from being converted into a\r\n * trackable dynamic object\r\n * @returns The original value\r\n */\r\nexport function blockDynamicConversion(value) {\r\n if (value && (isPlainObject(value) || isArray(value))) {\r\n try {\r\n value[BLOCK_DYNAMIC] = true;\r\n }\r\n catch (e) {\r\n // Don't throw for this case as it's an ask only\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * This is the reverse case of {@link blockDynamicConversion} in that this will tag an\r\n * object to indicate that it should always be converted into a dynamic trackable object\r\n * even when not an object or array. So all properties of this object will become\r\n * get / set accessor functions.\r\n *\r\n * When you have tagged a value as both {@link forceDynamicConversion} and blocked force will take precedence.\r\n *\r\n * If `value` is falsy (null / undefined / 0 / empty string etc) it will not be tagged and\r\n * if there is an exception adding the property to the value (because its frozen etc) the\r\n * exception will be swallowed.\r\n * @param value - The object that should be tagged and converted if included into a dynamic\r\n * configuration.\r\n * @returns The original value\r\n */\r\nexport function forceDynamicConversion(value) {\r\n if (value) {\r\n try {\r\n value[FORCE_DYNAMIC] = true;\r\n }\r\n catch (e) {\r\n // Don't throw for this case as it's an ask only\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * @internal\r\n * @ignore\r\n * Helper function to check whether an object can or should be converted into a dynamic\r\n * object.\r\n * @param value - The object to check whether it should be converted\r\n * @returns `true` if the value should be converted otherwise `false`.\r\n */\r\nexport function _canMakeDynamic(getFunc, state, value) {\r\n var result = false;\r\n // Object must exist and be truthy\r\n if (value && !getFunc[state.blkVal]) {\r\n // Tagged as always convert\r\n result = value[FORCE_DYNAMIC];\r\n // Check that it's not explicitly tagged as blocked\r\n if (!result && !value[BLOCK_DYNAMIC]) {\r\n // Only convert plain objects or arrays by default\r\n result = isPlainObject(value) || isArray(value);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Throws an invalid access exception\r\n * @param message - The message to include in the exception\r\n */\r\nexport function throwInvalidAccess(message) {\r\n throwTypeError(\"InvalidAccess:\" + message);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, arrIndexOf, dumpObj, isArray, objDefine, objDefineProp, objForEachKey, objGetOwnPropertyDescriptor } from \"@nevware21/ts-utils\";\r\nimport { UNDEFINED_VALUE } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_APPLY, _DYN_HDLR, _DYN_LOGGER, _DYN_PUSH, _DYN_SPLICE, _DYN_THROW_INTERNAL } from \"../__DynamicConstants\";\r\nimport { CFG_HANDLER_LINK, _canMakeDynamic, blockDynamicConversion, throwInvalidAccess } from \"./DynamicSupport\";\r\nvar arrayMethodsToPatch = [\r\n \"push\",\r\n \"pop\",\r\n \"shift\",\r\n \"unshift\",\r\n \"splice\"\r\n];\r\nexport var _throwDynamicError = function (logger, name, desc, e) {\r\n logger && logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](3 /* eLoggingSeverity.DEBUG */, 108 /* _eInternalMessageId.DynamicConfigException */, \"\".concat(desc, \" [\").concat(name, \"] failed - \") + dumpObj(e));\r\n};\r\nfunction _patchArray(state, target, name) {\r\n if (isArray(target)) {\r\n // Monkey Patch the methods that might change the array\r\n arrForEach(arrayMethodsToPatch, function (method) {\r\n var orgMethod = target[method];\r\n target[method] = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var result = orgMethod[_DYN_APPLY /* @min:%2eapply */](this, args);\r\n // items may be added, removed or moved so need to make some new dynamic properties\r\n _makeDynamicObject(state, target, name, \"Patching\");\r\n return result;\r\n };\r\n });\r\n }\r\n}\r\nfunction _getOwnPropGetter(target, name) {\r\n var propDesc = objGetOwnPropertyDescriptor(target, name);\r\n return propDesc && propDesc.get;\r\n}\r\nfunction _createDynamicProperty(state, theConfig, name, value) {\r\n // Does not appear to be dynamic so lets make it so\r\n var detail = {\r\n n: name,\r\n h: [],\r\n trk: function (handler) {\r\n if (handler && handler.fn) {\r\n if (arrIndexOf(detail.h, handler) === -1) {\r\n // Add this handler to the collection that should be notified when the value changes\r\n detail.h[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n state.trk(handler, detail);\r\n }\r\n },\r\n clr: function (handler) {\r\n var idx = arrIndexOf(detail.h, handler);\r\n if (idx !== -1) {\r\n detail.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n }\r\n };\r\n // Flag to optimize lookup response time by avoiding additional function calls\r\n var checkDynamic = true;\r\n var isObjectOrArray = false;\r\n function _getProperty() {\r\n if (checkDynamic) {\r\n isObjectOrArray = isObjectOrArray || _canMakeDynamic(_getProperty, state, value);\r\n // Make sure that if it's an object that we make it dynamic\r\n if (value && !value[CFG_HANDLER_LINK] && isObjectOrArray) {\r\n // It doesn't look like it's already dynamic so lets make sure it's converted the object into a dynamic Config as well\r\n value = _makeDynamicObject(state, value, name, \"Converting\");\r\n }\r\n // If it needed to be converted it now has been\r\n checkDynamic = false;\r\n }\r\n // If there is an active handler then add it to the tracking set of handlers\r\n var activeHandler = state.act;\r\n if (activeHandler) {\r\n detail.trk(activeHandler);\r\n }\r\n return value;\r\n }\r\n // Tag this getter as our dynamic property and provide shortcut for notifying a change\r\n _getProperty[state.prop] = {\r\n chng: function () {\r\n state.add(detail);\r\n }\r\n };\r\n function _setProperty(newValue) {\r\n if (value !== newValue) {\r\n if (!!_getProperty[state.ro] && !state.upd) {\r\n // field is marked as readonly so return false\r\n throwInvalidAccess(\"[\" + name + \"] is read-only:\" + dumpObj(theConfig));\r\n }\r\n if (checkDynamic) {\r\n isObjectOrArray = isObjectOrArray || _canMakeDynamic(_getProperty, state, value);\r\n checkDynamic = false;\r\n }\r\n // The value must be a plain object or an array to enforce the reference (in-place updates)\r\n var isReferenced = isObjectOrArray && _getProperty[state.rf];\r\n if (isObjectOrArray) {\r\n // We are about to replace a plain object or an array\r\n if (isReferenced) {\r\n // Reassign the properties from the current value to the same properties from the newValue\r\n // This will set properties not in the newValue to undefined\r\n objForEachKey(value, function (key) {\r\n value[key] = newValue ? newValue[key] : UNDEFINED_VALUE;\r\n });\r\n // Now assign / re-assign value with all of the keys from newValue\r\n try {\r\n objForEachKey(newValue, function (key, theValue) {\r\n _setDynamicProperty(state, value, key, theValue);\r\n });\r\n // Now drop newValue so when we assign value later it keeps the existing reference\r\n newValue = value;\r\n }\r\n catch (e) {\r\n // Unable to convert to dynamic property so just leave as non-dynamic\r\n _throwDynamicError((state.hdlr || {})[_DYN_LOGGER /* @min:%2elogger */], name, \"Assigning\", e);\r\n // Mark as not an object or array so we don't try and do this again\r\n isObjectOrArray = false;\r\n }\r\n }\r\n else if (value && value[CFG_HANDLER_LINK]) {\r\n // As we are replacing the value, if it's already dynamic then we need to notify the listeners\r\n // for every property it has already\r\n objForEachKey(value, function (key) {\r\n // Check if the value is dynamic\r\n var getter = _getOwnPropGetter(value, key);\r\n if (getter) {\r\n // And if it is tell it's listeners that the value has changed\r\n var valueState = getter[state.prop];\r\n valueState && valueState.chng();\r\n }\r\n });\r\n }\r\n }\r\n if (newValue !== value) {\r\n var newIsObjectOrArray = newValue && _canMakeDynamic(_getProperty, state, newValue);\r\n if (!isReferenced && newIsObjectOrArray) {\r\n // As the newValue is an object/array lets preemptively make it dynamic\r\n newValue = _makeDynamicObject(state, newValue, name, \"Converting\");\r\n }\r\n // Now assign the internal \"value\" to the newValue\r\n value = newValue;\r\n isObjectOrArray = newIsObjectOrArray;\r\n }\r\n // Cause any listeners to be scheduled for notification\r\n state.add(detail);\r\n }\r\n }\r\n objDefine(theConfig, detail.n, { g: _getProperty, s: _setProperty });\r\n}\r\nexport function _setDynamicProperty(state, target, name, value) {\r\n if (target) {\r\n // To be a dynamic property it needs to have a get function\r\n var getter = _getOwnPropGetter(target, name);\r\n var isDynamic = getter && !!getter[state.prop];\r\n if (!isDynamic) {\r\n _createDynamicProperty(state, target, name, value);\r\n }\r\n else {\r\n // Looks like it's already dynamic just assign the new value\r\n target[name] = value;\r\n }\r\n }\r\n return target;\r\n}\r\nexport function _setDynamicPropertyState(state, target, name, flags) {\r\n if (target) {\r\n // To be a dynamic property it needs to have a get function\r\n var getter = _getOwnPropGetter(target, name);\r\n var isDynamic = getter && !!getter[state.prop];\r\n var inPlace = flags && flags[0 /* _eSetDynamicPropertyFlags.inPlace */];\r\n var rdOnly = flags && flags[1 /* _eSetDynamicPropertyFlags.readOnly */];\r\n var blkProp = flags && flags[2 /* _eSetDynamicPropertyFlags.blockDynamicProperty */];\r\n if (!isDynamic) {\r\n if (blkProp) {\r\n try {\r\n // Attempt to mark the target as blocked from conversion\r\n blockDynamicConversion(target);\r\n }\r\n catch (e) {\r\n _throwDynamicError((state.hdlr || {})[_DYN_LOGGER /* @min:%2elogger */], name, \"Blocking\", e);\r\n }\r\n }\r\n try {\r\n // Make sure it's dynamic so that we can tag the property as per the state\r\n _setDynamicProperty(state, target, name, target[name]);\r\n getter = _getOwnPropGetter(target, name);\r\n }\r\n catch (e) {\r\n // Unable to convert to dynamic property so just leave as non-dynamic\r\n _throwDynamicError((state.hdlr || {})[_DYN_LOGGER /* @min:%2elogger */], name, \"State\", e);\r\n }\r\n }\r\n // Assign the optional flags if true\r\n if (inPlace) {\r\n getter[state.rf] = inPlace;\r\n }\r\n if (rdOnly) {\r\n getter[state.ro] = rdOnly;\r\n }\r\n if (blkProp) {\r\n getter[state.blkVal] = true;\r\n }\r\n }\r\n return target;\r\n}\r\nexport function _makeDynamicObject(state, target, name, desc) {\r\n try {\r\n // Assign target with new value properties (converting into dynamic properties in the process)\r\n objForEachKey(target, function (key, value) {\r\n // Assign and/or make the property dynamic\r\n _setDynamicProperty(state, target, key, value);\r\n });\r\n if (!target[CFG_HANDLER_LINK]) {\r\n // Link the config back to the dynamic config details\r\n objDefineProp(target, CFG_HANDLER_LINK, {\r\n get: function () {\r\n return state[_DYN_HDLR /* @min:%2ehdlr */];\r\n }\r\n });\r\n _patchArray(state, target, name);\r\n }\r\n }\r\n catch (e) {\r\n // Unable to convert to dynamic property so just leave as non-dynamic\r\n _throwDynamicError((state.hdlr || {})[_DYN_LOGGER /* @min:%2elogger */], name, desc, e);\r\n }\r\n return target;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, createCustomError, dumpObj } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nvar aggregationErrorType;\r\n/**\r\n * Throws an Aggregation Error which includes all of the errors that led to this error occurring\r\n * @param message - The message describing the aggregation error (the sourceError details are added to this)\r\n * @param sourceErrors - An array of the errors that caused this situation\r\n */\r\nexport function throwAggregationError(message, sourceErrors) {\r\n if (!aggregationErrorType) {\r\n aggregationErrorType = createCustomError(\"AggregationError\", function (self, args) {\r\n if (args[_DYN_LENGTH /* @min:%2elength */] > 1) {\r\n // Save the provided errors\r\n self.errors = args[1];\r\n }\r\n });\r\n }\r\n var theMessage = message || \"One or more errors occurred.\";\r\n arrForEach(sourceErrors, function (srcError, idx) {\r\n theMessage += \"\\n\".concat(idx, \" > \").concat(dumpObj(srcError));\r\n });\r\n throw new aggregationErrorType(theMessage, sourceErrors || []);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, arrIndexOf, dumpObj, newSymbol, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { throwAggregationError } from \"../JavaScriptSDK/AggregationError\";\r\nimport { _DYN_BLK_VAL, _DYN_CANCEL, _DYN_HDLR, _DYN_LENGTH, _DYN_LOGGER, _DYN_NOTIFY, _DYN_PUSH, _DYN_RD_ONLY, _DYN_SET_DF, _DYN_THROW_INTERNAL } from \"../__DynamicConstants\";\r\nvar symPrefix = \"[[ai_\";\r\nvar symPostfix = \"]]\";\r\nexport function _createState(cfgHandler) {\r\n var _a;\r\n var dynamicPropertySymbol = newSymbol(symPrefix + \"get\" + cfgHandler.uid + symPostfix);\r\n var dynamicPropertyReadOnly = newSymbol(symPrefix + \"ro\" + cfgHandler.uid + symPostfix);\r\n var dynamicPropertyReferenced = newSymbol(symPrefix + \"rf\" + cfgHandler.uid + symPostfix);\r\n var dynamicPropertyBlockValue = newSymbol(symPrefix + \"blkVal\" + cfgHandler.uid + symPostfix);\r\n var dynamicPropertyDetail = newSymbol(symPrefix + \"dtl\" + cfgHandler.uid + symPostfix);\r\n var _waitingHandlers = null;\r\n var _watcherTimer = null;\r\n var theState;\r\n function _useHandler(activeHandler, callback) {\r\n var prevWatcher = theState.act;\r\n try {\r\n theState.act = activeHandler;\r\n if (activeHandler && activeHandler[dynamicPropertyDetail]) {\r\n // Clear out the previously tracked details for this handler, so that access are re-evaluated\r\n arrForEach(activeHandler[dynamicPropertyDetail], function (detail) {\r\n detail.clr(activeHandler);\r\n });\r\n activeHandler[dynamicPropertyDetail] = [];\r\n }\r\n callback({\r\n cfg: cfgHandler.cfg,\r\n set: cfgHandler.set.bind(cfgHandler),\r\n setDf: cfgHandler[_DYN_SET_DF /* @min:%2esetDf */].bind(cfgHandler),\r\n ref: cfgHandler.ref.bind(cfgHandler),\r\n rdOnly: cfgHandler[_DYN_RD_ONLY /* @min:%2erdOnly */].bind(cfgHandler)\r\n });\r\n }\r\n catch (e) {\r\n var logger = cfgHandler[_DYN_LOGGER /* @min:%2elogger */];\r\n if (logger) {\r\n // Don't let one individual failure break everyone\r\n logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](1 /* eLoggingSeverity.CRITICAL */, 107 /* _eInternalMessageId.ConfigWatcherException */, dumpObj(e));\r\n }\r\n // Re-throw the exception so that any true \"error\" is reported back to the called\r\n throw e;\r\n }\r\n finally {\r\n theState.act = prevWatcher || null;\r\n }\r\n }\r\n function _notifyWatchers() {\r\n if (_waitingHandlers) {\r\n var notifyHandlers = _waitingHandlers;\r\n _waitingHandlers = null;\r\n // Stop any timer as we are running them now anyway\r\n _watcherTimer && _watcherTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n _watcherTimer = null;\r\n var watcherFailures_1 = [];\r\n // Now run the handlers\r\n arrForEach(notifyHandlers, function (handler) {\r\n if (handler) {\r\n if (handler[dynamicPropertyDetail]) {\r\n arrForEach(handler[dynamicPropertyDetail], function (detail) {\r\n // Clear out this handler from previously tracked details, so that access are re-evaluated\r\n detail.clr(handler);\r\n });\r\n handler[dynamicPropertyDetail] = null;\r\n }\r\n // The handler may have self removed as part of another handler so re-check\r\n if (handler.fn) {\r\n try {\r\n _useHandler(handler, handler.fn);\r\n }\r\n catch (e) {\r\n // Don't let a single failing watcher cause other watches to fail\r\n watcherFailures_1[_DYN_PUSH /* @min:%2epush */](e);\r\n }\r\n }\r\n }\r\n });\r\n // During notification we may have had additional updates -- so notify those updates as well\r\n if (_waitingHandlers) {\r\n try {\r\n _notifyWatchers();\r\n }\r\n catch (e) {\r\n watcherFailures_1[_DYN_PUSH /* @min:%2epush */](e);\r\n }\r\n }\r\n if (watcherFailures_1[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n throwAggregationError(\"Watcher error(s): \", watcherFailures_1);\r\n }\r\n }\r\n }\r\n function _addWatcher(detail) {\r\n if (detail && detail.h[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n if (!_waitingHandlers) {\r\n _waitingHandlers = [];\r\n }\r\n if (!_watcherTimer) {\r\n _watcherTimer = scheduleTimeout(function () {\r\n _watcherTimer = null;\r\n _notifyWatchers();\r\n }, 0);\r\n }\r\n // Add all of the handlers for this detail (if not already present) - using normal for-loop for performance\r\n for (var idx = 0; idx < detail.h[_DYN_LENGTH /* @min:%2elength */]; idx++) {\r\n var handler = detail.h[idx];\r\n // Add this handler to the collection of handlers to re-execute\r\n if (handler && arrIndexOf(_waitingHandlers, handler) === -1) {\r\n _waitingHandlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n }\r\n }\r\n }\r\n function _trackHandler(handler, detail) {\r\n if (handler) {\r\n var details = handler[dynamicPropertyDetail] = handler[dynamicPropertyDetail] || [];\r\n if (arrIndexOf(details, detail) === -1) {\r\n // If this detail is not already listed as tracked then add it so that we re-evaluate it's usage\r\n details[_DYN_PUSH /* @min:%2epush */](detail);\r\n }\r\n }\r\n }\r\n theState = (_a = {\r\n prop: dynamicPropertySymbol,\r\n ro: dynamicPropertyReadOnly,\r\n rf: dynamicPropertyReferenced\r\n },\r\n _a[_DYN_BLK_VAL /* @min:blkVal */] = dynamicPropertyBlockValue,\r\n _a[_DYN_HDLR /* @min:hdlr */] = cfgHandler,\r\n _a.add = _addWatcher,\r\n _a[_DYN_NOTIFY /* @min:notify */] = _notifyWatchers,\r\n _a.use = _useHandler,\r\n _a.trk = _trackHandler,\r\n _a);\r\n return theState;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dumpObj, isUndefined, objDefine, objForEachKey } from \"@nevware21/ts-utils\";\r\nimport { createUniqueNamespace } from \"../JavaScriptSDK/DataCacheHelper\";\r\nimport { STR_NOT_DYNAMIC_ERROR } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_BLK_VAL, _DYN_LOGGER, _DYN_NOTIFY, _DYN_RD_ONLY, _DYN_SET_DF, _DYN_THROW_INTERNAL, _DYN_WARN_TO_CONSOLE, _DYN_WATCH } from \"../__DynamicConstants\";\r\nimport { _applyDefaultValue } from \"./ConfigDefaults\";\r\nimport { _makeDynamicObject, _setDynamicProperty, _setDynamicPropertyState, _throwDynamicError } from \"./DynamicProperty\";\r\nimport { _createState } from \"./DynamicState\";\r\nimport { CFG_HANDLER_LINK, _cfgDeepCopy, getDynamicConfigHandler, throwInvalidAccess } from \"./DynamicSupport\";\r\n/**\r\n * Identifies a function which will be re-called whenever any of it's accessed configuration values\r\n * change.\r\n * @param configHandler - The callback that will be called for the initial request and then whenever any\r\n * accessed configuration changes are identified.\r\n */\r\nfunction _createAndUseHandler(state, configHandler) {\r\n var handler = {\r\n fn: configHandler,\r\n rm: function () {\r\n // Clear all references to the handler so it can be garbage collected\r\n // This will also cause this handler to never get called and eventually removed\r\n handler.fn = null;\r\n state = null;\r\n configHandler = null;\r\n }\r\n };\r\n objDefine(handler, \"toJSON\", { v: function () { return \"WatcherHandler\" + (handler.fn ? \"\" : \"[X]\"); } });\r\n state.use(handler, configHandler);\r\n return handler;\r\n}\r\n/**\r\n * Creates the dynamic config handler and associates with the target config as the root object\r\n * @param target - The config that you want to be root of the dynamic config\r\n * @param inPlace - Should the passed config be converted in-place or a new proxy returned\r\n * @returns The existing dynamic handler or a new instance with the provided config values\r\n */\r\nfunction _createDynamicHandler(logger, target, inPlace) {\r\n var _a;\r\n var dynamicHandler = getDynamicConfigHandler(target);\r\n if (dynamicHandler) {\r\n // The passed config is already dynamic so return it's tracker\r\n return dynamicHandler;\r\n }\r\n var uid = createUniqueNamespace(\"dyncfg\", true);\r\n var newTarget = (target && inPlace !== false) ? target : _cfgDeepCopy(target);\r\n var theState;\r\n function _notifyWatchers() {\r\n theState[_DYN_NOTIFY /* @min:%2enotify */]();\r\n }\r\n function _setValue(target, name, value) {\r\n try {\r\n target = _setDynamicProperty(theState, target, name, value);\r\n }\r\n catch (e) {\r\n // Unable to convert to dynamic property so just leave as non-dynamic\r\n _throwDynamicError(logger, name, \"Setting value\", e);\r\n }\r\n return target[name];\r\n }\r\n function _watch(configHandler) {\r\n return _createAndUseHandler(theState, configHandler);\r\n }\r\n function _block(configHandler, allowUpdate) {\r\n theState.use(null, function (details) {\r\n var prevUpd = theState.upd;\r\n try {\r\n if (!isUndefined(allowUpdate)) {\r\n theState.upd = allowUpdate;\r\n }\r\n configHandler(details);\r\n }\r\n finally {\r\n theState.upd = prevUpd;\r\n }\r\n });\r\n }\r\n function _ref(target, name) {\r\n var _a;\r\n // Make sure it's dynamic and mark as referenced with it's current value\r\n return _setDynamicPropertyState(theState, target, name, (_a = {}, _a[0 /* _eSetDynamicPropertyFlags.inPlace */] = true, _a))[name];\r\n }\r\n function _rdOnly(target, name) {\r\n var _a;\r\n // Make sure it's dynamic and mark as readonly with it's current value\r\n return _setDynamicPropertyState(theState, target, name, (_a = {}, _a[1 /* _eSetDynamicPropertyFlags.readOnly */] = true, _a))[name];\r\n }\r\n function _blkPropValue(target, name) {\r\n var _a;\r\n // Make sure it's dynamic and mark as readonly with it's current value\r\n return _setDynamicPropertyState(theState, target, name, (_a = {}, _a[2 /* _eSetDynamicPropertyFlags.blockDynamicProperty */] = true, _a))[name];\r\n }\r\n function _applyDefaults(theConfig, defaultValues) {\r\n if (defaultValues) {\r\n // Resolve/apply the defaults\r\n objForEachKey(defaultValues, function (name, value) {\r\n // Sets the value and makes it dynamic (if it doesn't already exist)\r\n _applyDefaultValue(cfgHandler, theConfig, name, value);\r\n });\r\n }\r\n return theConfig;\r\n }\r\n var cfgHandler = (_a = {\r\n uid: null,\r\n cfg: newTarget\r\n },\r\n _a[_DYN_LOGGER /* @min:logger */] = logger,\r\n _a[_DYN_NOTIFY /* @min:notify */] = _notifyWatchers,\r\n _a.set = _setValue,\r\n _a[_DYN_SET_DF /* @min:setDf */] = _applyDefaults,\r\n _a[_DYN_WATCH /* @min:watch */] = _watch,\r\n _a.ref = _ref,\r\n _a[_DYN_RD_ONLY /* @min:rdOnly */] = _rdOnly,\r\n _a[_DYN_BLK_VAL /* @min:blkVal */] = _blkPropValue,\r\n _a._block = _block,\r\n _a);\r\n objDefine(cfgHandler, \"uid\", {\r\n c: false,\r\n e: false,\r\n w: false,\r\n v: uid\r\n });\r\n theState = _createState(cfgHandler);\r\n // Setup tracking for all defined default keys\r\n _makeDynamicObject(theState, newTarget, \"config\", \"Creating\");\r\n return cfgHandler;\r\n}\r\n/**\r\n * Log an invalid access message to the console\r\n * @param message\r\n */\r\nfunction _logInvalidAccess(logger, message) {\r\n if (logger) {\r\n logger[_DYN_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](2 /* eLoggingSeverity.WARNING */, 108 /* _eInternalMessageId.DynamicConfigException */, message);\r\n }\r\n else {\r\n // We don't have a logger so just throw an exception\r\n throwInvalidAccess(message);\r\n }\r\n}\r\n/**\r\n * Create or return a dynamic version of the passed config, if it is not already dynamic\r\n * @param config - The config to be converted into a dynamic config\r\n * @param defaultConfig - The default values to apply on the config if the properties don't already exist\r\n * @param inPlace - Should the config be converted in-place into a dynamic config or a new instance returned, defaults to true\r\n * @returns The dynamic config handler for the config (whether new or existing)\r\n */\r\nexport function createDynamicConfig(config, defaultConfig, logger, inPlace) {\r\n var dynamicHandler = _createDynamicHandler(logger, config || {}, inPlace);\r\n if (defaultConfig) {\r\n dynamicHandler[_DYN_SET_DF /* @min:%2esetDf */](dynamicHandler.cfg, defaultConfig);\r\n }\r\n return dynamicHandler;\r\n}\r\n/**\r\n * Watch and track changes for accesses to the current config, the provided config MUST already be\r\n * a dynamic config or a child accessed via the dynamic config\r\n * @param config\r\n * @param configHandler\r\n * @param logger - The logger instance to use if there is no existing handler\r\n * @returns A watcher handler instance that can be used to remove itself when being unloaded\r\n * @throws TypeError if the provided config is not a dynamic config instance\r\n */\r\nexport function onConfigChange(config, configHandler, logger) {\r\n var handler = config[CFG_HANDLER_LINK] || config;\r\n if (handler.cfg && (handler.cfg === config || handler.cfg[CFG_HANDLER_LINK] === handler)) {\r\n return handler[_DYN_WATCH /* @min:%2ewatch */](configHandler);\r\n }\r\n _logInvalidAccess(logger, STR_NOT_DYNAMIC_ERROR + dumpObj(config));\r\n return createDynamicConfig(config, null, logger)[_DYN_WATCH /* @min:%2ewatch */](configHandler);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getInst } from \"@nevware21/ts-utils\";\r\nimport { _DYN_APPLY, _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar listenerFuncs = [STR_EVENTS_SENT, STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_PERF_EVENT];\r\nvar _aiNamespace = null;\r\nvar _debugListener;\r\nfunction _listenerProxyFunc(name, config) {\r\n return function () {\r\n var args = arguments;\r\n var dbgExt = getDebugExt(config);\r\n if (dbgExt) {\r\n var listener = dbgExt.listener;\r\n if (listener && listener[name]) {\r\n listener[name][_DYN_APPLY /* @min:%2eapply */](listener, args);\r\n }\r\n }\r\n };\r\n}\r\nfunction _getExtensionNamespace() {\r\n // Cache the lookup of the global namespace object\r\n var target = getInst(\"Microsoft\");\r\n if (target) {\r\n _aiNamespace = target[\"ApplicationInsights\"];\r\n }\r\n return _aiNamespace;\r\n}\r\nexport function getDebugExt(config) {\r\n var ns = _aiNamespace;\r\n if (!ns && config.disableDbgExt !== true) {\r\n ns = _aiNamespace || _getExtensionNamespace();\r\n }\r\n return ns ? ns[\"ChromeDbgExt\"] : null;\r\n}\r\nexport function getDebugListener(config) {\r\n if (!_debugListener) {\r\n _debugListener = {};\r\n for (var lp = 0; lp < listenerFuncs[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n _debugListener[listenerFuncs[lp]] = _listenerProxyFunc(listenerFuncs[lp], config);\r\n }\r\n }\r\n return _debugListener;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nvar _a;\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dumpObj, isFunction, isUndefined } from \"@nevware21/ts-utils\";\r\nimport { createDynamicConfig, onConfigChange } from \"../Config/DynamicConfig\";\r\nimport { _DYN_DIAG_LOG, _DYN_LOGGER, _DYN_LOGGING_LEVEL_CONSOL4, _DYN_LOG_INTERNAL_MESSAGE, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_PUSH, _DYN_REPLACE, _DYN_THROW_INTERNAL, _DYN_UNLOAD, _DYN_WARN_TO_CONSOLE } from \"../__DynamicConstants\";\r\nimport { getDebugExt } from \"./DbgExtensionUtils\";\r\nimport { getConsole, getJSON, hasJSON } from \"./EnvUtils\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar STR_WARN_TO_CONSOLE = \"warnToConsole\";\r\n/**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\nvar AiNonUserActionablePrefix = \"AI (Internal): \";\r\n/**\r\n * Prefix of the traces in portal.\r\n */\r\nvar AiUserActionablePrefix = \"AI: \";\r\n/**\r\n * Session storage key for the prefix for the key indicating message type already logged\r\n */\r\nvar AIInternalMessagePrefix = \"AITR_\";\r\nvar defaultValues = {\r\n loggingLevelConsole: 0,\r\n loggingLevelTelemetry: 1,\r\n maxMessageLimit: 25,\r\n enableDebug: false\r\n};\r\nvar _logFuncs = (_a = {},\r\n _a[0 /* eLoggingSeverity.DISABLED */] = null,\r\n _a[1 /* eLoggingSeverity.CRITICAL */] = \"errorToConsole\",\r\n _a[2 /* eLoggingSeverity.WARNING */] = STR_WARN_TO_CONSOLE,\r\n _a[3 /* eLoggingSeverity.DEBUG */] = \"debugToConsole\",\r\n _a);\r\nfunction _sanitizeDiagnosticText(text) {\r\n if (text) {\r\n return \"\\\"\" + text[_DYN_REPLACE /* @min:%2ereplace */](/\\\"/g, STR_EMPTY) + \"\\\"\";\r\n }\r\n return STR_EMPTY;\r\n}\r\nfunction _logToConsole(func, message) {\r\n var theConsole = getConsole();\r\n if (!!theConsole) {\r\n var logFunc = \"log\";\r\n if (theConsole[func]) {\r\n logFunc = func;\r\n }\r\n if (isFunction(theConsole[logFunc])) {\r\n theConsole[logFunc](message);\r\n }\r\n }\r\n}\r\nvar _InternalLogMessage = /** @class */ (function () {\r\n function _InternalLogMessage(msgId, msg, isUserAct, properties) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var _self = this;\r\n _self[_DYN_MESSAGE_ID /* @min:%2emessageId */] = msgId;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] =\r\n (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +\r\n msgId;\r\n var strProps = STR_EMPTY;\r\n if (hasJSON()) {\r\n strProps = getJSON().stringify(properties);\r\n }\r\n var diagnosticText = (msg ? \" message:\" + _sanitizeDiagnosticText(msg) : STR_EMPTY) +\r\n (properties ? \" props:\" + _sanitizeDiagnosticText(strProps) : STR_EMPTY);\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] += diagnosticText;\r\n }\r\n _InternalLogMessage.dataType = \"MessageData\";\r\n return _InternalLogMessage;\r\n}());\r\nexport { _InternalLogMessage };\r\nexport function safeGetLogger(core, config) {\r\n return (core || {})[_DYN_LOGGER /* @min:%2elogger */] || new DiagnosticLogger(config);\r\n}\r\nvar DiagnosticLogger = /** @class */ (function () {\r\n function DiagnosticLogger(config) {\r\n this.identifier = \"DiagnosticLogger\";\r\n /**\r\n * The internal logging queue\r\n */\r\n this.queue = [];\r\n /**\r\n * Count of internal messages sent\r\n */\r\n var _messageCount = 0;\r\n /**\r\n * Holds information about what message types were already logged to console or sent to server.\r\n */\r\n var _messageLogged = {};\r\n var _loggingLevelConsole;\r\n var _loggingLevelTelemetry;\r\n var _maxInternalMessageLimit;\r\n var _enableDebug;\r\n var _unloadHandler;\r\n dynamicProto(DiagnosticLogger, this, function (_self) {\r\n _unloadHandler = _setDefaultsFromConfig(config || {});\r\n _self.consoleLoggingLevel = function () { return _loggingLevelConsole; };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity - {LoggingSeverity} - The severity of the log message\r\n * @param message - {_InternalLogMessage} - The log message.\r\n */\r\n _self[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */] = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n if (_enableDebug) {\r\n throw dumpObj(message);\r\n }\r\n else {\r\n // Get the logging function and fallback to warnToConsole of for some reason errorToConsole doesn't exist\r\n var logFunc = _logFuncs[severity] || STR_WARN_TO_CONSOLE;\r\n if (!isUndefined(message[_DYN_MESSAGE /* @min:%2emessage */])) {\r\n if (isUserAct) {\r\n // check if this message type was already logged to console for this page view and if so, don't log it again\r\n var messageKey = +message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n if (!_messageLogged[messageKey] && _loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n _messageLogged[messageKey] = true;\r\n }\r\n }\r\n else {\r\n // Only log traces if the console Logging Level is >= the throwInternal severity level\r\n if (_loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n }\r\n _logInternalMessage(severity, message);\r\n }\r\n else {\r\n _debugExtMsg(\"throw\" + (severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"Critical\" : \"Warning\"), message);\r\n }\r\n }\r\n };\r\n _self.debugToConsole = function (message) {\r\n _logToConsole(\"debug\", message);\r\n _debugExtMsg(\"warning\", message);\r\n };\r\n _self[_DYN_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */] = function (message) {\r\n _logToConsole(\"warn\", message);\r\n _debugExtMsg(\"warning\", message);\r\n };\r\n _self.errorToConsole = function (message) {\r\n _logToConsole(\"error\", message);\r\n _debugExtMsg(\"error\", message);\r\n };\r\n _self.resetInternalMessageCount = function () {\r\n _messageCount = 0;\r\n _messageLogged = {};\r\n };\r\n _self[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */] = _logInternalMessage;\r\n _self[_DYN_UNLOAD /* @min:%2eunload */] = function (isAsync) {\r\n _unloadHandler && _unloadHandler.rm();\r\n _unloadHandler = null;\r\n };\r\n function _logInternalMessage(severity, message) {\r\n if (_areInternalMessagesThrottled()) {\r\n return;\r\n }\r\n // check if this message type was already logged for this session and if so, don't log it again\r\n var logMessage = true;\r\n var messageKey = AIInternalMessagePrefix + message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n // if the session storage is not available, limit to only one message type per page view\r\n if (_messageLogged[messageKey]) {\r\n logMessage = false;\r\n }\r\n else {\r\n _messageLogged[messageKey] = true;\r\n }\r\n if (logMessage) {\r\n // Push the event in the internal queue\r\n if (severity <= _loggingLevelTelemetry) {\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](message);\r\n _messageCount++;\r\n _debugExtMsg((severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"error\" : \"warn\"), message);\r\n }\r\n // When throttle limit reached, send a special event\r\n if (_messageCount === _maxInternalMessageLimit) {\r\n var throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n var throttleMessage = new _InternalLogMessage(23 /* _eInternalMessageId.MessageLimitPerPVExceeded */, throttleLimitMessage, false);\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](throttleMessage);\r\n if (severity === 1 /* eLoggingSeverity.CRITICAL */) {\r\n _self.errorToConsole(throttleLimitMessage);\r\n }\r\n else {\r\n _self[_DYN_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](throttleLimitMessage);\r\n }\r\n }\r\n }\r\n }\r\n function _setDefaultsFromConfig(config) {\r\n // make sure the config is dynamic\r\n return onConfigChange(createDynamicConfig(config, defaultValues, _self).cfg, function (details) {\r\n var config = details.cfg;\r\n _loggingLevelConsole = config[_DYN_LOGGING_LEVEL_CONSOL4 /* @min:%2eloggingLevelConsole */];\r\n _loggingLevelTelemetry = config.loggingLevelTelemetry;\r\n _maxInternalMessageLimit = config.maxMessageLimit;\r\n _enableDebug = config.enableDebug;\r\n });\r\n }\r\n function _areInternalMessagesThrottled() {\r\n return _messageCount >= _maxInternalMessageLimit;\r\n }\r\n function _debugExtMsg(name, data) {\r\n var dbgExt = getDebugExt(config || {});\r\n if (dbgExt && dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */]) {\r\n dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */](name, data);\r\n }\r\n }\r\n });\r\n }\r\n// Removed Stub for DiagnosticLogger.prototype.consoleLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.throwInternal.\r\n// Removed Stub for DiagnosticLogger.prototype.debugToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.warnToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.errorToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.resetInternalMessageCount.\r\n// Removed Stub for DiagnosticLogger.prototype.logInternalMessage.\r\n// Removed Stub for DiagnosticLogger.prototype.unload.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n DiagnosticLogger.__ieDyn=1;\n\n return DiagnosticLogger;\r\n}());\r\nexport { DiagnosticLogger };\r\nfunction _getLogger(logger) {\r\n return (logger || new DiagnosticLogger());\r\n}\r\n/**\r\n * This is a helper method which will call throwInternal on the passed logger, will throw exceptions in\r\n * debug mode or attempt to log the error as a console warning. This helper is provided mostly to better\r\n * support minification as logger.throwInternal() will not compress the publish \"throwInternal\" used throughout\r\n * the code.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity - {LoggingSeverity} - The severity of the log message\r\n * @param message - {_InternalLogMessage} - The log message.\r\n */\r\nexport function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n _getLogger(logger)[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](severity, msgId, msg, properties, isUserAct);\r\n}\r\n/**\r\n * This is a helper method which will call warnToConsole on the passed logger with the provided message.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param message - {_InternalLogMessage} - The log message.\r\n */\r\nexport function _warnToConsole(logger, message) {\r\n _getLogger(logger)[_DYN_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n}\r\n/**\r\n * Logs a message to the internal queue.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity - {LoggingSeverity} - The severity of the log message\r\n * @param message - {_InternalLogMessage} - The message to log.\r\n */\r\nexport function _logInternalMessage(logger, severity, message) {\r\n _getLogger(logger)[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */](severity, message);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isArray, isFunction, objDefine, utcNow } from \"@nevware21/ts-utils\";\r\nimport { _DYN_COMPLETE, _DYN_GET_CTX, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_CTX, _DYN_TIME } from \"../__DynamicConstants\";\r\nimport { STR_GET_PERF_MGR, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar strExecutionContextKey = \"ctx\";\r\nvar strParentContextKey = \"ParentContextKey\";\r\nvar strChildrenContextKey = \"ChildrenContextKey\";\r\nvar _defaultPerfManager = null;\r\nvar PerfEvent = /** @class */ (function () {\r\n function PerfEvent(name, payloadDetails, isAsync) {\r\n var _self = this;\r\n _self.start = utcNow();\r\n _self[_DYN_NAME /* @min:%2ename */] = name;\r\n _self[_DYN_IS_ASYNC /* @min:%2eisAsync */] = isAsync;\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return false; };\r\n if (isFunction(payloadDetails)) {\r\n // Create an accessor to minimize the potential performance impact of executing the payloadDetails callback\r\n var theDetails_1;\r\n objDefine(_self, \"payload\", {\r\n g: function () {\r\n // Delay the execution of the payloadDetails until needed\r\n if (!theDetails_1 && isFunction(payloadDetails)) {\r\n theDetails_1 = payloadDetails();\r\n // clear it out now so the referenced objects can be garbage collected\r\n payloadDetails = null;\r\n }\r\n return theDetails_1;\r\n }\r\n });\r\n }\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n if (key) {\r\n // The parent and child links are located directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey] || key === PerfEvent[strChildrenContextKey]) {\r\n return _self[key];\r\n }\r\n return (_self[strExecutionContextKey] || {})[key];\r\n }\r\n return null;\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n // Put the parent and child links directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey]) {\r\n // Simple assumption, if we are setting a parent then we must be a child\r\n if (!_self[key]) {\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return true; };\r\n }\r\n _self[key] = value;\r\n }\r\n else if (key === PerfEvent[strChildrenContextKey]) {\r\n _self[key] = value;\r\n }\r\n else {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n }\r\n };\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () {\r\n var childTime = 0;\r\n var childEvts = _self[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (isArray(childEvts)) {\r\n for (var lp = 0; lp < childEvts[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var childEvt = childEvts[lp];\r\n if (childEvt) {\r\n childTime += childEvt[_DYN_TIME /* @min:%2etime */];\r\n }\r\n }\r\n }\r\n _self[_DYN_TIME /* @min:%2etime */] = utcNow() - _self.start;\r\n _self.exTime = _self[_DYN_TIME /* @min:%2etime */] - childTime;\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () { };\r\n };\r\n }\r\n PerfEvent.ParentContextKey = \"parent\";\r\n PerfEvent.ChildrenContextKey = \"childEvts\";\r\n return PerfEvent;\r\n}());\r\nexport { PerfEvent };\r\nvar PerfManager = /** @class */ (function () {\r\n function PerfManager(manager) {\r\n /**\r\n * General bucket used for execution context set and retrieved via setCtx() and getCtx.\r\n * Defined as private so it can be visualized via the DebugPlugin\r\n */\r\n this.ctx = {};\r\n dynamicProto(PerfManager, this, function (_self) {\r\n _self.create = function (src, payloadDetails, isAsync) {\r\n // TODO (@MSNev): at some point we will want to add additional configuration to \"select\" which events to instrument\r\n // for now this is just a simple do everything.\r\n return new PerfEvent(src, payloadDetails, isAsync);\r\n };\r\n _self.fire = function (perfEvent) {\r\n if (perfEvent) {\r\n perfEvent[_DYN_COMPLETE /* @min:%2ecomplete */]();\r\n if (manager && isFunction(manager[STR_PERF_EVENT /* @min:%2eperfEvent */])) {\r\n manager[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n }\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n };\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n return (_self[strExecutionContextKey] || {})[key];\r\n };\r\n });\r\n }\r\n// Removed Stub for PerfManager.prototype.create.\r\n// Removed Stub for PerfManager.prototype.fire.\r\n// Removed Stub for PerfManager.prototype.setCtx.\r\n// Removed Stub for PerfManager.prototype.getCtx.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n PerfManager.__ieDyn=1;\n\n return PerfManager;\r\n}());\r\nexport { PerfManager };\r\nvar doPerfActiveKey = \"CoreUtils.doPerf\";\r\n/**\r\n * Helper function to wrap a function with a perf event\r\n * @param mgrSource - The Performance Manager or a Performance provider source (may be null)\r\n * @param getSource - The callback to create the source name for the event (if perf monitoring is enabled)\r\n * @param func - The function to call and measure\r\n * @param details - A function to return the payload details\r\n * @param isAsync - Is the event / function being call asynchronously or synchronously\r\n */\r\nexport function doPerf(mgrSource, getSource, func, details, isAsync) {\r\n if (mgrSource) {\r\n var perfMgr = mgrSource;\r\n if (perfMgr[STR_GET_PERF_MGR]) {\r\n // Looks like a perf manager provider object\r\n perfMgr = perfMgr[STR_GET_PERF_MGR]();\r\n }\r\n if (perfMgr) {\r\n var perfEvt = void 0;\r\n var currentActive = perfMgr[_DYN_GET_CTX /* @min:%2egetCtx */](doPerfActiveKey);\r\n try {\r\n perfEvt = perfMgr.create(getSource(), details, isAsync);\r\n if (perfEvt) {\r\n if (currentActive && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strParentContextKey], currentActive);\r\n if (currentActive[_DYN_GET_CTX /* @min:%2egetCtx */] && currentActive[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n var children = currentActive[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (!children) {\r\n children = [];\r\n currentActive[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strChildrenContextKey], children);\r\n }\r\n children[_DYN_PUSH /* @min:%2epush */](perfEvt);\r\n }\r\n }\r\n // Set this event as the active event now\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, perfEvt);\r\n return func(perfEvt);\r\n }\r\n }\r\n catch (ex) {\r\n if (perfEvt && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](\"exception\", ex);\r\n }\r\n }\r\n finally {\r\n // fire the perf event\r\n if (perfEvt) {\r\n perfMgr.fire(perfEvt);\r\n }\r\n // Reset the active event to the previous value\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, currentActive);\r\n }\r\n }\r\n }\r\n return func();\r\n}\r\n/**\r\n * Set the global performance manager to use when there is no core instance or it has not been initialized yet.\r\n * @param perfManager - The IPerfManager instance to use when no performance manager is supplied.\r\n */\r\nexport function setGblPerfMgr(perfManager) {\r\n _defaultPerfManager = perfManager;\r\n}\r\n/**\r\n * Get the current global performance manager that will be used with no performance manager is supplied.\r\n * @returns - The current default manager\r\n */\r\nexport function getGblPerfMgr() {\r\n return _defaultPerfManager;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { strSubstr, strSubstring } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { random32 } from \"./RandomHelper\";\r\n// Added to help with minfication\r\nexport var Undefined = strShimUndefined;\r\nexport function newGuid() {\r\n var uuid = generateW3CId();\r\n return strSubstring(uuid, 0, 8) + \"-\" + strSubstring(uuid, 8, 12) + \"-\" + strSubstring(uuid, 12, 16) + \"-\" + strSubstring(uuid, 16, 20) + \"-\" + strSubstring(uuid, 20);\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n if (value && search) {\r\n var len = value[_DYN_LENGTH /* @min:%2elength */];\r\n var start = len - search[_DYN_LENGTH /* @min:%2elength */];\r\n return strSubstring(value, start >= 0 ? start : 0, len) === search;\r\n }\r\n return false;\r\n}\r\n/**\r\n * generate W3C trace id\r\n */\r\nexport function generateW3CId() {\r\n var hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n var oct = STR_EMPTY, tmp;\r\n for (var a = 0; a < 4; a++) {\r\n tmp = random32();\r\n oct +=\r\n hexValues[tmp & 0xF] +\r\n hexValues[tmp >> 4 & 0xF] +\r\n hexValues[tmp >> 8 & 0xF] +\r\n hexValues[tmp >> 12 & 0xF] +\r\n hexValues[tmp >> 16 & 0xF] +\r\n hexValues[tmp >> 20 & 0xF] +\r\n hexValues[tmp >> 24 & 0xF] +\r\n hexValues[tmp >> 28 & 0xF];\r\n }\r\n // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];\r\n return strSubstr(oct, 0, 8) + strSubstr(oct, 9, 4) + \"4\" + strSubstr(oct, 13, 3) + clockSequenceHi + strSubstr(oct, 16, 3) + strSubstr(oct, 19, 12);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { isArray, isString, strLeft, strTrim } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH, _DYN_SPAN_ID, _DYN_SPLIT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_VERSION } from \"../__DynamicConstants\";\r\nimport { generateW3CId } from \"./CoreUtils\";\r\nimport { findMetaTag, findNamedServerTiming } from \"./EnvUtils\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// using {0,16} for leading and trailing whitespace just to constrain the possible runtime of a random string\r\nvar TRACE_PARENT_REGEX = /^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})(-[^\\s]{1,64})?$/i;\r\nvar DEFAULT_VERSION = \"00\";\r\nvar INVALID_VERSION = \"ff\";\r\nvar INVALID_TRACE_ID = \"00000000000000000000000000000000\";\r\nvar INVALID_SPAN_ID = \"0000000000000000\";\r\nvar SAMPLED_FLAG = 0x01;\r\nfunction _isValid(value, len, invalidValue) {\r\n if (value && value[_DYN_LENGTH /* @min:%2elength */] === len && value !== invalidValue) {\r\n return !!value.match(/^[\\da-f]*$/i);\r\n }\r\n return false;\r\n}\r\nfunction _formatValue(value, len, defValue) {\r\n if (_isValid(value, len)) {\r\n return value;\r\n }\r\n return defValue;\r\n}\r\nfunction _formatFlags(value) {\r\n if (isNaN(value) || value < 0 || value > 255) {\r\n value = 0x01;\r\n }\r\n var result = value.toString(16);\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < 2) {\r\n result = \"0\" + result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Create a new ITraceParent instance using the provided values.\r\n * @param traceId - The traceId to use, when invalid a new random W3C id will be generated.\r\n * @param spanId - The parent/span id to use, a new random value will be generated if it is invalid.\r\n * @param flags - The traceFlags to use, defaults to zero (0) if not supplied or invalid\r\n * @param version - The version to used, defaults to version \"01\" if not supplied or invalid.\r\n * @returns\r\n */\r\nexport function createTraceParent(traceId, spanId, flags, version) {\r\n var _a;\r\n return _a = {},\r\n _a[_DYN_VERSION /* @min:version */] = _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,\r\n _a[_DYN_TRACE_ID /* @min:traceId */] = isValidTraceId(traceId) ? traceId : generateW3CId(),\r\n _a[_DYN_SPAN_ID /* @min:spanId */] = isValidSpanId(spanId) ? spanId : strLeft(generateW3CId(), 16),\r\n _a.traceFlags = flags >= 0 && flags <= 0xFF ? flags : 1,\r\n _a;\r\n}\r\n/**\r\n * Attempt to parse the provided string as a W3C TraceParent header value (https://www.w3.org/TR/trace-context/#traceparent-header)\r\n *\r\n * @param value - The value to be parsed\r\n * @param selectIdx - If the found value is comma separated which is the preferred entry to select, defaults to the first\r\n * @returns\r\n */\r\nexport function parseTraceParent(value, selectIdx) {\r\n var _a;\r\n if (!value) {\r\n // Don't pass a null/undefined or empty string\r\n return null;\r\n }\r\n if (isArray(value)) {\r\n // The value may have been encoded on the page into an array so handle this automatically\r\n value = value[0] || \"\";\r\n }\r\n if (!value || !isString(value) || value[_DYN_LENGTH /* @min:%2elength */] > 8192) {\r\n // limit potential processing based on total length\r\n return null;\r\n }\r\n if (value.indexOf(\",\") !== -1) {\r\n var values = value[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n value = values[selectIdx > 0 && values[_DYN_LENGTH /* @min:%2elength */] > selectIdx ? selectIdx : 0];\r\n }\r\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\r\n var match = TRACE_PARENT_REGEX.exec(strTrim(value));\r\n if (!match || // No match\r\n match[1] === INVALID_VERSION || // version ff is forbidden\r\n match[2] === INVALID_TRACE_ID || // All zeros is considered to be invalid\r\n match[3] === INVALID_SPAN_ID) { // All zeros is considered to be invalid\r\n return null;\r\n }\r\n return _a = {\r\n version: (match[1] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](),\r\n traceId: (match[2] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](),\r\n spanId: (match[3] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()\r\n },\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = parseInt(match[4], 16),\r\n _a;\r\n}\r\n/**\r\n * Is the provided W3c Trace Id a valid string representation, it must be a 32-character string\r\n * of lowercase hexadecimal characters for example, 4bf92f3577b34da6a3ce929d0e0e4736.\r\n * If all characters as zero (00000000000000000000000000000000) it will be considered an invalid value.\r\n * @param value - The W3c trace Id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidTraceId(value) {\r\n return _isValid(value, 32, INVALID_TRACE_ID);\r\n}\r\n/**\r\n * Is the provided W3c span id (aka. parent id) a valid string representation, it must be a 16-character\r\n * string of lowercase hexadecimal characters, for example, 00f067aa0ba902b7.\r\n * If all characters are zero (0000000000000000) this is considered an invalid value.\r\n * @param value - The W3c span id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidSpanId(value) {\r\n return _isValid(value, 16, INVALID_SPAN_ID);\r\n}\r\n/**\r\n * Validates that the provided ITraceParent instance conforms to the currently supported specifications\r\n * @param value\r\n * @returns\r\n */\r\nexport function isValidTraceParent(value) {\r\n if (!value ||\r\n !_isValid(value[_DYN_VERSION /* @min:%2eversion */], 2, INVALID_VERSION) ||\r\n !_isValid(value[_DYN_TRACE_ID /* @min:%2etraceId */], 32, INVALID_TRACE_ID) ||\r\n !_isValid(value[_DYN_SPAN_ID /* @min:%2espanId */], 16, INVALID_SPAN_ID) ||\r\n !_isValid(_formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]), 2)) {\r\n // Each known field must contain a valid value\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Is the parsed traceParent indicating that the trace is currently sampled.\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function isSampledFlag(value) {\r\n if (isValidTraceParent(value)) {\r\n return (value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] & SAMPLED_FLAG) === SAMPLED_FLAG;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Format the ITraceParent value as a string using the supported and know version formats.\r\n * So even if the passed traceParent is a later version the string value returned from this\r\n * function will convert it to only the known version formats.\r\n * This currently only supports version \"00\" and invalid \"ff\"\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function formatTraceParent(value) {\r\n if (value) {\r\n // Special Note: This only supports formatting as version 00, future versions should encode any known supported version\r\n // So parsing a future version will populate the correct version value but reformatting will reduce it to version 00.\r\n var flags = _formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]);\r\n if (!_isValid(flags, 2)) {\r\n flags = \"01\";\r\n }\r\n var version = value[_DYN_VERSION /* @min:%2eversion */] || DEFAULT_VERSION;\r\n if (version !== \"00\" && version !== \"ff\") {\r\n // Reduce version to \"00\"\r\n version = DEFAULT_VERSION;\r\n }\r\n // Format as version 00\r\n return \"\".concat(version.toLowerCase(), \"-\").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID).toLowerCase(), \"-\").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID).toLowerCase(), \"-\").concat(flags.toLowerCase());\r\n }\r\n return \"\";\r\n}\r\n/**\r\n * Helper function to fetch the passed traceparent from the page, looking for it as a meta-tag or a Server-Timing header.\r\n * @param selectIdx - If the found value is comma separated which is the preferred entry to select, defaults to the first\r\n * @returns\r\n */\r\nexport function findW3cTraceParent(selectIdx) {\r\n var name = \"traceparent\";\r\n var traceParent = parseTraceParent(findMetaTag(name), selectIdx);\r\n if (!traceParent) {\r\n traceParent = parseTraceParent(findNamedServerTiming(name), selectIdx);\r\n }\r\n return traceParent;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { arrForEach, isFunction } from \"@nevware21/ts-utils\";\r\nimport { _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_INITIALIZE, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_SPAN_ID, _DYN_TEARDOWN, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { createElmNodeData } from \"./DataCacheHelper\";\r\nimport { STR_CORE, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { isValidSpanId, isValidTraceId } from \"./W3cTraceParent\";\r\nvar pluginStateData = createElmNodeData(\"plugin\");\r\nexport function _getPluginState(plugin) {\r\n return pluginStateData.get(plugin, \"state\", {}, true);\r\n}\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config - The current config for the instance\r\n * @param core - THe current core instance\r\n * @param extensions - The extensions\r\n */\r\nexport function initializePlugins(processContext, extensions) {\r\n // Set the next plugin and identified the uninitialized plugins\r\n var initPlugins = [];\r\n var lastPlugin = null;\r\n var proxy = processContext[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n var pluginState;\r\n while (proxy) {\r\n var thePlugin = proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (thePlugin) {\r\n if (lastPlugin && lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */] && thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */]) {\r\n // Set this plugin as the next for the previous one\r\n lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](thePlugin);\r\n }\r\n pluginState = _getPluginState(thePlugin);\r\n var isInitialized = !!pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */];\r\n if (thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]) {\r\n isInitialized = thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]();\r\n }\r\n if (!isInitialized) {\r\n initPlugins[_DYN_PUSH /* @min:%2epush */](thePlugin);\r\n }\r\n lastPlugin = thePlugin;\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n }\r\n // Now initialize the plugins\r\n arrForEach(initPlugins, function (thePlugin) {\r\n var core = processContext[STR_CORE /* @min:%2ecore */]();\r\n thePlugin[_DYN_INITIALIZE /* @min:%2einitialize */](processContext.getCfg(), core, extensions, processContext[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n pluginState = _getPluginState(thePlugin);\r\n // Only add the core to the state if the plugin didn't set it (doesn't extend from BaseTelemetryPlugin)\r\n if (!thePlugin[STR_CORE] && !pluginState[STR_CORE]) {\r\n pluginState[STR_CORE] = core;\r\n }\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = true;\r\n delete pluginState[_DYN_TEARDOWN /* @min:%2eteardown */];\r\n });\r\n}\r\nexport function sortPlugins(plugins) {\r\n // Sort by priority\r\n return plugins.sort(function (extA, extB) {\r\n var result = 0;\r\n if (extB) {\r\n var bHasProcess = extB[STR_PROCESS_TELEMETRY];\r\n if (extA[STR_PROCESS_TELEMETRY]) {\r\n result = bHasProcess ? extA[STR_PRIORITY] - extB[STR_PRIORITY] : 1;\r\n }\r\n else if (bHasProcess) {\r\n result = -1;\r\n }\r\n }\r\n else {\r\n result = extA ? 1 : -1;\r\n }\r\n return result;\r\n });\r\n // sort complete\r\n}\r\n/**\r\n * Teardown / Unload helper to perform teardown/unloading operations for the provided components synchronously or asynchronously, this will call any\r\n * _doTeardown() or _doUnload() functions on the provided components to allow them to finish removal.\r\n * @param components - The components you want to unload\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @param asyncCallback - An optional callback that the plugin must call if it returns true to inform the caller that it has completed any async unload/teardown operations.\r\n * @returns boolean - true if the plugin has or will call asyncCallback, this allows the plugin to perform any asynchronous operations.\r\n */\r\nexport function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {\r\n var idx = 0;\r\n function _doUnload() {\r\n while (idx < components[_DYN_LENGTH /* @min:%2elength */]) {\r\n var component = components[idx++];\r\n if (component) {\r\n var func = component._doUnload || component[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */];\r\n if (isFunction(func)) {\r\n if (func.call(component, unloadCtx, unloadState, _doUnload) === true) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return _doUnload();\r\n}\r\n/**\r\n * Creates a IDistributedTraceContext which optionally also \"sets\" the value on a parent\r\n * @param parentCtx - An optional parent distributed trace instance\r\n * @returns A new IDistributedTraceContext instance that uses an internal temporary object\r\n */\r\nexport function createDistributedTraceContext(parentCtx) {\r\n var trace = {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace[_DYN_TRACE_ID /* @min:%2etraceId */];\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace[_DYN_TRACE_ID /* @min:%2etraceId */] = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace[_DYN_SPAN_ID /* @min:%2espanId */];\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace[_DYN_SPAN_ID /* @min:%2espanId */] = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = newTraceFlags;\r\n }\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { arrForEach, dumpObj, isArray, isFunction, isNullOrUndefined, isUndefined, objForEachKey, objFreeze, objKeys } from \"@nevware21/ts-utils\";\r\nimport { _applyDefaultValue } from \"../Config/ConfigDefaults\";\r\nimport { createDynamicConfig } from \"../Config/DynamicConfig\";\r\nimport { _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_IDENTIFIER, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_DF, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UNLOAD, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nimport { _throwInternal, safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { proxyFunctions } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_DISABLED, STR_EMPTY, STR_EXTENSION_CONFIG, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { _getPluginState } from \"./TelemetryHelpers\";\r\nvar strTelemetryPluginChain = \"TelemetryPluginChain\";\r\nvar strHasRunFlags = \"_hasRun\";\r\nvar strGetTelCtx = \"_getTelCtx\";\r\nvar _chainId = 0;\r\nfunction _getNextProxyStart(proxy, core, startAt) {\r\n while (proxy) {\r\n if (proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]() === startAt) {\r\n return proxy;\r\n }\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n // This wasn't found in the existing chain so create an isolated one with just this plugin\r\n return createTelemetryProxyChain([startAt], core.config || {}, core);\r\n}\r\n/**\r\n * @ignore\r\n * @param telemetryChain\r\n * @param dynamicHandler\r\n * @param core\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n * @returns\r\n */\r\nfunction _createInternalContext(telemetryChain, dynamicHandler, core, startAt) {\r\n // We have a special case where we want to start execution from this specific plugin\r\n // or we simply reuse the existing telemetry plugin chain (normal execution case)\r\n var _nextProxy = null; // By Default set as no next plugin\r\n var _onComplete = [];\r\n if (!dynamicHandler) {\r\n dynamicHandler = createDynamicConfig({}, null, core[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n if (startAt !== null) {\r\n // There is no next element (null) vs not defined (undefined) so use the full chain\r\n _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;\r\n }\r\n var context = {\r\n _next: _moveNext,\r\n ctx: {\r\n core: function () {\r\n return core;\r\n },\r\n diagLog: function () {\r\n return safeGetLogger(core, dynamicHandler.cfg);\r\n },\r\n getCfg: function () {\r\n return dynamicHandler.cfg;\r\n },\r\n getExtCfg: _resolveExtCfg,\r\n getConfig: _getConfig,\r\n hasNext: function () {\r\n return !!_nextProxy;\r\n },\r\n getNext: function () {\r\n return _nextProxy;\r\n },\r\n setNext: function (nextPlugin) {\r\n _nextProxy = nextPlugin;\r\n },\r\n iterate: _iterateChain,\r\n onComplete: _addOnComplete\r\n }\r\n };\r\n function _addOnComplete(onComplete, that) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n if (onComplete) {\r\n _onComplete[_DYN_PUSH /* @min:%2epush */]({\r\n func: onComplete,\r\n self: !isUndefined(that) ? that : context.ctx,\r\n args: args\r\n });\r\n }\r\n }\r\n function _moveNext() {\r\n var nextProxy = _nextProxy;\r\n // Automatically move to the next plugin\r\n _nextProxy = nextProxy ? nextProxy[_DYN_GET_NEXT /* @min:%2egetNext */]() : null;\r\n if (!nextProxy) {\r\n var onComplete = _onComplete;\r\n if (onComplete && onComplete[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(onComplete, function (completeDetails) {\r\n try {\r\n completeDetails.func.call(completeDetails.self, completeDetails.args);\r\n }\r\n catch (e) {\r\n _throwInternal(core[_DYN_LOGGER /* @min:%2elogger */], 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected Exception during onComplete - \" + dumpObj(e));\r\n }\r\n });\r\n _onComplete = [];\r\n }\r\n }\r\n return nextProxy;\r\n }\r\n function _getExtCfg(identifier, createIfMissing) {\r\n var idCfg = null;\r\n var cfg = dynamicHandler.cfg;\r\n if (cfg && identifier) {\r\n var extCfg = cfg[STR_EXTENSION_CONFIG /* @min:%2eextensionConfig */];\r\n if (!extCfg && createIfMissing) {\r\n extCfg = {};\r\n }\r\n // Always set the value so that the property always exists\r\n cfg[STR_EXTENSION_CONFIG] = extCfg; // Note: it is valid for the \"value\" to be undefined\r\n // Calling `ref()` has a side effect of causing the referenced property to become dynamic (if not already)\r\n extCfg = dynamicHandler.ref(cfg, STR_EXTENSION_CONFIG);\r\n if (extCfg) {\r\n idCfg = extCfg[identifier];\r\n if (!idCfg && createIfMissing) {\r\n idCfg = {};\r\n }\r\n // Always set the value so that the property always exists\r\n extCfg[identifier] = idCfg; // Note: it is valid for the \"value\" to be undefined\r\n // Calling `ref()` has a side effect of causing the referenced property to become dynamic (if not already)\r\n idCfg = dynamicHandler.ref(extCfg, identifier);\r\n }\r\n }\r\n return idCfg;\r\n }\r\n function _resolveExtCfg(identifier, defaultValues) {\r\n var newConfig = _getExtCfg(identifier, true);\r\n if (defaultValues) {\r\n // Enumerate over the defaultValues and if not already populated attempt to\r\n // find a value from the root config or use the default value\r\n objForEachKey(defaultValues, function (field, defaultValue) {\r\n // for each unspecified field, set the default value\r\n if (isNullOrUndefined(newConfig[field])) {\r\n var cfgValue = dynamicHandler.cfg[field];\r\n if (cfgValue || !isNullOrUndefined(cfgValue)) {\r\n newConfig[field] = cfgValue;\r\n }\r\n }\r\n _applyDefaultValue(dynamicHandler, newConfig, field, defaultValue);\r\n });\r\n }\r\n return dynamicHandler[_DYN_SET_DF /* @min:%2esetDf */](newConfig, defaultValues);\r\n }\r\n function _getConfig(identifier, field, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var theValue;\r\n var extConfig = _getExtCfg(identifier, false);\r\n var rootConfig = dynamicHandler.cfg;\r\n if (extConfig && (extConfig[field] || !isNullOrUndefined(extConfig[field]))) {\r\n theValue = extConfig[field];\r\n }\r\n else if (rootConfig[field] || !isNullOrUndefined(rootConfig[field])) {\r\n theValue = rootConfig[field];\r\n }\r\n return (theValue || !isNullOrUndefined(theValue)) ? theValue : defaultValue;\r\n }\r\n function _iterateChain(cb) {\r\n // Keep processing until we reach the end of the chain\r\n var nextPlugin;\r\n while (!!(nextPlugin = context._next())) {\r\n var plugin = nextPlugin[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (plugin) {\r\n // callback with the current on\r\n cb(plugin);\r\n }\r\n }\r\n }\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryContext(telemetryChain, cfg, core, startAt) {\r\n var config = createDynamicConfig(cfg);\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(env) {\r\n var nextPlugin = internalContext._next();\r\n if (nextPlugin) {\r\n // Run the next plugin which will call \"processNext()\"\r\n nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, context);\r\n }\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);\r\n }\r\n return createProcessTelemetryContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), config.cfg, core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for handling the unloading of the chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {\r\n var config = createDynamicConfig(core.config);\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(unloadState) {\r\n var nextPlugin = internalContext._next();\r\n nextPlugin && nextPlugin[_DYN_UNLOAD /* @min:%2eunload */](context, unloadState);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);\r\n }\r\n return createProcessTelemetryUnloadContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for updating the configuration\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {\r\n var config = createDynamicConfig(core.config);\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(updateState) {\r\n return context.iterate(function (plugin) {\r\n if (isFunction(plugin[_DYN_UPDATE /* @min:%2eupdate */])) {\r\n plugin[_DYN_UPDATE /* @min:%2eupdate */](context, updateState);\r\n }\r\n });\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);\r\n }\r\n return createProcessTelemetryUpdateContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates an execution chain from the array of plugins\r\n * @param plugins - The array of plugins that will be executed in this order\r\n * @param defItemCtx - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n */\r\nexport function createTelemetryProxyChain(plugins, config, core, startAt) {\r\n var firstProxy = null;\r\n var add = startAt ? false : true;\r\n if (isArray(plugins) && plugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Create the proxies and wire up the next plugin chain\r\n var lastProxy_1 = null;\r\n arrForEach(plugins, function (thePlugin) {\r\n if (!add && startAt === thePlugin) {\r\n add = true;\r\n }\r\n if (add && thePlugin && isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Only add plugins that are processors\r\n var newProxy = createTelemetryPluginProxy(thePlugin, config, core);\r\n if (!firstProxy) {\r\n firstProxy = newProxy;\r\n }\r\n if (lastProxy_1) {\r\n // Set this new proxy as the next for the previous one\r\n lastProxy_1._setNext(newProxy);\r\n }\r\n lastProxy_1 = newProxy;\r\n }\r\n });\r\n }\r\n if (startAt && !firstProxy) {\r\n // Special case where the \"startAt\" was not in the original list of plugins\r\n return createTelemetryProxyChain([startAt], config, core);\r\n }\r\n return firstProxy;\r\n}\r\n/**\r\n * Create the processing telemetry proxy instance, the proxy is used to abstract the current plugin to allow monitoring and\r\n * execution plugins while passing around the dynamic execution state (IProcessTelemetryContext), the proxy instance no longer\r\n * contains any execution state and can be reused between requests (this was not the case for 2.7.2 and earlier with the\r\n * TelemetryPluginChain class).\r\n * @param plugin - The plugin instance to proxy\r\n * @param config - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n * @returns\r\n */\r\nexport function createTelemetryPluginProxy(plugin, config, core) {\r\n var nextProxy = null;\r\n var hasProcessTelemetry = isFunction(plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */]);\r\n var hasSetNext = isFunction(plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]);\r\n var chainId;\r\n if (plugin) {\r\n chainId = plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"-\" + plugin[STR_PRIORITY /* @min:%2epriority */] + \"-\" + _chainId++;\r\n }\r\n else {\r\n chainId = \"Unknown-0-\" + _chainId++;\r\n }\r\n var proxyChain = {\r\n getPlugin: function () {\r\n return plugin;\r\n },\r\n getNext: function () {\r\n return nextProxy;\r\n },\r\n processTelemetry: _processTelemetry,\r\n unload: _unloadPlugin,\r\n update: _updatePlugin,\r\n _id: chainId,\r\n _setNext: function (nextPlugin) {\r\n nextProxy = nextPlugin;\r\n }\r\n };\r\n function _getTelCtx() {\r\n var itemCtx;\r\n // Looks like a plugin didn't pass the (optional) context, so create a new one\r\n if (plugin && isFunction(plugin[strGetTelCtx])) {\r\n // This plugin extends from the BaseTelemetryPlugin so lets use it\r\n itemCtx = plugin[strGetTelCtx]();\r\n }\r\n if (!itemCtx) {\r\n // Create a temporary one\r\n itemCtx = createProcessTelemetryContext(proxyChain, config, core);\r\n }\r\n return itemCtx;\r\n }\r\n function _processChain(itemCtx, processPluginFn, name, details, isAsync) {\r\n var hasRun = false;\r\n var identifier = plugin ? plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] : strTelemetryPluginChain;\r\n var hasRunContext = itemCtx[strHasRunFlags];\r\n if (!hasRunContext) {\r\n // Assign and populate\r\n hasRunContext = itemCtx[strHasRunFlags] = {};\r\n }\r\n // Ensure that we keep the context in sync\r\n itemCtx.setNext(nextProxy);\r\n if (plugin) {\r\n doPerf(itemCtx[STR_CORE /* @min:%2ecore */](), function () { return identifier + \":\" + name; }, function () {\r\n // Mark this component as having run\r\n hasRunContext[chainId] = true;\r\n try {\r\n // Set a flag on the next plugin so we know if it was attempted to be executed\r\n var nextId = nextProxy ? nextProxy._id : STR_EMPTY;\r\n if (nextId) {\r\n hasRunContext[nextId] = false;\r\n }\r\n hasRun = processPluginFn(itemCtx);\r\n }\r\n catch (error) {\r\n var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;\r\n if (hasNextRun) {\r\n // The next plugin after us has already run so set this one as complete\r\n hasRun = true;\r\n }\r\n if (!nextProxy || !hasNextRun) {\r\n // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n // Which means the current one is the root of the failure so log/report this failure\r\n _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 73 /* _eInternalMessageId.PluginException */, \"Plugin [\" + identifier + \"] failed during \" + name + \" - \" + dumpObj(error) + \", run flags: \" + dumpObj(hasRunContext));\r\n }\r\n }\r\n }, details, isAsync);\r\n }\r\n return hasRun;\r\n }\r\n function _processTelemetry(env, itemCtx) {\r\n itemCtx = itemCtx || _getTelCtx();\r\n function _callProcessTelemetry(itemCtx) {\r\n if (!plugin || !hasProcessTelemetry) {\r\n return false;\r\n }\r\n var pluginState = _getPluginState(plugin);\r\n if (pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] || pluginState[STR_DISABLED]) {\r\n return false;\r\n }\r\n // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n // doesn't calls processTelemetry() instead of itemContext.processNext() or some\r\n // other form of error occurred\r\n if (hasSetNext) {\r\n // Backward compatibility setting the next plugin on the instance\r\n plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](nextProxy);\r\n }\r\n plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, itemCtx);\r\n // Process Telemetry is expected to call itemCtx.processNext() or nextPlugin.processTelemetry()\r\n return true;\r\n }\r\n if (!_processChain(itemCtx, _callProcessTelemetry, \"processTelemetry\", function () { return ({ item: env }); }, !(env.sync))) {\r\n // The underlying plugin is either not defined, not enabled or does not have a processTelemetry implementation\r\n // so we still want the next plugin to be executed.\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n }\r\n function _unloadPlugin(unloadCtx, unloadState) {\r\n function _callTeardown() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only teardown the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === unloadCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n // Handle plugins that don't extend from the BaseTelemetryPlugin\r\n pluginState[STR_CORE /* @min:%2ecore */] = null;\r\n pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] = true;\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = false;\r\n if (plugin[_DYN_TEARDOWN /* @min:%2eteardown */] && plugin[_DYN_TEARDOWN /* @min:%2eteardown */](unloadCtx, unloadState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(unloadCtx, _callTeardown, \"unload\", function () { }, unloadState[_DYN_IS_ASYNC /* @min:%2eisAsync */])) {\r\n // Only called if we hasRun was not true\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n }\r\n function _updatePlugin(updateCtx, updateState) {\r\n function _callUpdate() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only update the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === updateCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n if (plugin[_DYN_UPDATE /* @min:%2eupdate */] && plugin[_DYN_UPDATE /* @min:%2eupdate */](updateCtx, updateState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(updateCtx, _callUpdate, \"update\", function () { }, false)) {\r\n // Only called if we hasRun was not true\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n return objFreeze(proxyChain);\r\n}\r\n/**\r\n * This class will be removed!\r\n * @deprecated use createProcessTelemetryContext() instead\r\n */\r\nvar ProcessTelemetryContext = /** @class */ (function () {\r\n /**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n */\r\n function ProcessTelemetryContext(pluginChain, config, core, startAt) {\r\n var _self = this;\r\n var context = createProcessTelemetryContext(pluginChain, config, core, startAt);\r\n // Proxy all functions of the context to this object\r\n proxyFunctions(_self, context, objKeys(context));\r\n }\r\n return ProcessTelemetryContext;\r\n}());\r\nexport { ProcessTelemetryContext };\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, dumpObj } from \"@nevware21/ts-utils\";\r\nimport { _DYN_DIAG_LOG, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nexport function createUnloadHandlerContainer() {\r\n var handlers = [];\r\n function _addHandler(handler) {\r\n if (handler) {\r\n handlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n }\r\n function _runHandlers(unloadCtx, unloadState) {\r\n arrForEach(handlers, function (handler) {\r\n try {\r\n handler(unloadCtx, unloadState);\r\n }\r\n catch (e) {\r\n _throwInternal(unloadCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected error calling unload handler - \" + dumpObj(e));\r\n }\r\n });\r\n handlers = [];\r\n }\r\n return {\r\n add: _addHandler,\r\n run: _runHandlers\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrAppend, arrForEach, dumpObj } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nvar _maxHooks;\r\nvar _hookAddMonitor;\r\n/**\r\n * Test hook for setting the maximum number of unload hooks and calling a monitor function when the hooks are added or removed\r\n * This allows for automatic test failure when the maximum number of unload hooks is exceeded\r\n * @param maxHooks - The maximum number of unload hooks\r\n * @param addMonitor - The monitor function to call when hooks are added or removed\r\n */\r\nexport function _testHookMaxUnloadHooksCb(maxHooks, addMonitor) {\r\n _maxHooks = maxHooks;\r\n _hookAddMonitor = addMonitor;\r\n}\r\n/**\r\n * Create a IUnloadHookContainer which can be used to remember unload hook functions to be executed during the component unloading\r\n * process.\r\n * @returns A new IUnloadHookContainer instance\r\n */\r\nexport function createUnloadHookContainer() {\r\n var _hooks = [];\r\n function _doUnload(logger) {\r\n var oldHooks = _hooks;\r\n _hooks = [];\r\n // Remove all registered unload hooks\r\n arrForEach(oldHooks, function (fn) {\r\n // allow either rm or remove callback function\r\n try {\r\n (fn.rm || fn.remove).call(fn);\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unloading:\" + dumpObj(e));\r\n }\r\n });\r\n if (_maxHooks && oldHooks[_DYN_LENGTH /* @min:%2elength */] > _maxHooks) {\r\n _hookAddMonitor ? _hookAddMonitor(\"doUnload\", oldHooks) : _throwInternal(null, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.MaxUnloadHookExceeded */, \"Max unload hooks exceeded. An excessive number of unload hooks has been detected.\");\r\n }\r\n }\r\n function _addHook(hooks) {\r\n if (hooks) {\r\n arrAppend(_hooks, hooks);\r\n if (_maxHooks && _hooks[_DYN_LENGTH /* @min:%2elength */] > _maxHooks) {\r\n _hookAddMonitor ? _hookAddMonitor(\"Add\", _hooks) : _throwInternal(null, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.MaxUnloadHookExceeded */, \"Max unload hooks exceeded. An excessive number of unload hooks has been detected.\");\r\n }\r\n }\r\n }\r\n return {\r\n run: _doUnload,\r\n add: _addHook\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nvar _a;\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isFunction, objDefine } from \"@nevware21/ts-utils\";\r\nimport { createDynamicConfig } from \"../Config/DynamicConfig\";\r\nimport { _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PROCESS_TEL_CONT2, _DYN_INITIALIZE, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_PROCESS_NEXT, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { isNotNullOrUndefined, proxyFunctionAs } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_EXTENSION_CONFIG, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext } from \"./ProcessTelemetryContext\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nimport { createUnloadHookContainer } from \"./UnloadHookContainer\";\r\nvar strGetPlugin = \"getPlugin\";\r\nvar defaultValues = (_a = {},\r\n _a[STR_EXTENSION_CONFIG] = { isVal: isNotNullOrUndefined, v: {} },\r\n _a);\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nvar BaseTelemetryPlugin = /** @class */ (function () {\r\n function BaseTelemetryPlugin() {\r\n var _self = this; // Setting _self here as it's used outside of the dynamicProto as well\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _isinitialized;\r\n var _rootCtx; // Used as the root context, holding the current config and initialized core\r\n var _nextPlugin; // Used for backward compatibility where plugins don't call the main pipeline\r\n var _unloadHandlerContainer;\r\n var _hookContainer;\r\n _initDefaults();\r\n dynamicProto(BaseTelemetryPlugin, _self, function (_self) {\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, core, extensions, pluginChain) {\r\n _setDefaults(config, core, pluginChain);\r\n _isinitialized = true;\r\n };\r\n _self[_DYN_TEARDOWN /* @min:%2eteardown */] = function (unloadCtx, unloadState) {\r\n var _a;\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (unloadCtx && core !== unloadCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing as either the plugin is not initialized or was not initialized by the current core\r\n return;\r\n }\r\n var result;\r\n var unloadDone = false;\r\n var theUnloadCtx = unloadCtx || createProcessTelemetryUnloadContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUnloadState = unloadState || (_a = {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = false,\r\n _a);\r\n function _unloadCallback() {\r\n if (!unloadDone) {\r\n unloadDone = true;\r\n _unloadHandlerContainer.run(theUnloadCtx, unloadState);\r\n _hookContainer.run(theUnloadCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]());\r\n if (result === true) {\r\n theUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n }\r\n _initDefaults();\r\n }\r\n }\r\n if (!_self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] || _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */](theUnloadCtx, theUnloadState, _unloadCallback) !== true) {\r\n _unloadCallback();\r\n }\r\n else {\r\n // Tell the caller that we will be calling processNext()\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (updateCtx, updateState) {\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (updateCtx && core !== updateCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing\r\n return;\r\n }\r\n var result;\r\n var updateDone = false;\r\n var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n function _updateCallback() {\r\n if (!updateDone) {\r\n updateDone = true;\r\n _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n }\r\n }\r\n if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {\r\n _updateCallback();\r\n }\r\n else {\r\n result = true;\r\n }\r\n return result;\r\n };\r\n proxyFunctionAs(_self, \"_addUnloadCb\", function () { return _unloadHandlerContainer; }, \"add\");\r\n proxyFunctionAs(_self, \"_addHook\", function () { return _hookContainer; }, \"add\");\r\n objDefine(_self, \"_unloadHooks\", { g: function () { return _hookContainer; } });\r\n });\r\n // These are added after the dynamicProto so that are not moved to the prototype\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */] = function (itemCtx) {\r\n return _getTelCtx(itemCtx)[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n };\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () {\r\n return _isinitialized;\r\n };\r\n _self.setInitialized = function (isInitialized) {\r\n _isinitialized = isInitialized;\r\n };\r\n // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n // Sub-classes of this base class *should* not be relying on this value and instead\r\n // should use processNext() function. If you require access to the plugin use the\r\n // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n _self[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */] = function (next) {\r\n _nextPlugin = next;\r\n };\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = function (env, itemCtx) {\r\n if (itemCtx) {\r\n // Normal core execution sequence\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n else if (_nextPlugin && isFunction(_nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Looks like backward compatibility or out of band processing. And as it looks\r\n // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n _nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, null);\r\n }\r\n };\r\n _self._getTelCtx = _getTelCtx;\r\n function _getTelCtx(currentCtx) {\r\n if (currentCtx === void 0) { currentCtx = null; }\r\n var itemCtx = currentCtx;\r\n if (!itemCtx) {\r\n var rootCtx = _rootCtx || createProcessTelemetryContext(null, {}, _self[STR_CORE /* @min:%2ecore */]);\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // Looks like a chain object\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin[strGetPlugin]);\r\n }\r\n else {\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin);\r\n }\r\n }\r\n return itemCtx;\r\n }\r\n function _setDefaults(config, core, pluginChain) {\r\n // Make sure the extensionConfig exists and the config is dynamic\r\n createDynamicConfig(config, defaultValues, safeGetLogger(core));\r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core[_DYN_GET_PROCESS_TEL_CONT2 /* @min:%2egetProcessTelContext */]()[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n var nextPlugin = _nextPlugin;\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // If it looks like a proxy/chain then get the plugin\r\n nextPlugin = _nextPlugin[strGetPlugin]();\r\n }\r\n // Support legacy plugins where core was defined as a property\r\n _self[STR_CORE /* @min:%2ecore */] = core;\r\n _rootCtx = createProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n }\r\n function _initDefaults() {\r\n _isinitialized = false;\r\n _self[STR_CORE /* @min:%2ecore */] = null;\r\n _rootCtx = null;\r\n _nextPlugin = null;\r\n _hookContainer = createUnloadHookContainer();\r\n _unloadHandlerContainer = createUnloadHandlerContainer();\r\n }\r\n }\r\n// Removed Stub for BaseTelemetryPlugin.prototype.initialize.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.teardown.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.update.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addUnloadCb.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addHook.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n BaseTelemetryPlugin.__ieDyn=1;\n\n return BaseTelemetryPlugin;\r\n}());\r\nexport { BaseTelemetryPlugin };\r\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, NgModule } from '@angular/core';\nimport { PropertiesPluginIdentifier, AnalyticsPluginIdentifier } from '@microsoft/applicationinsights-common';\nimport { isFunction, arrForEach, BaseTelemetryPlugin, onConfigChange, isArray, getLocation, generateW3CId, _throwInternal } from '@microsoft/applicationinsights-core-js';\nimport dynamicProto from '@microsoft/dynamicproto-js';\nimport { NavigationEnd } from '@angular/router';\nimport { objDeepFreeze } from '@nevware21/ts-utils';\n\nclass ApplicationinsightsAngularpluginErrorService {\r\n constructor() {\r\n this.errorServices = [];\r\n if (ApplicationinsightsAngularpluginErrorService.instance === null) {\r\n ApplicationinsightsAngularpluginErrorService.instance = this;\r\n }\r\n }\r\n set plugin(analyticsPlugin) {\r\n this.analyticsPlugin = analyticsPlugin;\r\n }\r\n clearErrorHandlers() {\r\n this.errorServices = [];\r\n }\r\n addErrorHandler(errorService) {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n this.errorServices.push(errorService);\r\n }\r\n }\r\n removeErrorHandler(errorService) {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n const idx = this.errorServices.indexOf(errorService);\r\n if (idx !== -1) {\r\n this.errorServices.splice(idx, 1);\r\n }\r\n }\r\n }\r\n handleError(error) {\r\n if (this.analyticsPlugin) {\r\n this.analyticsPlugin.trackException({ exception: error });\r\n }\r\n if (this.errorServices && this.errorServices.length > 0) {\r\n arrForEach(this.errorServices, errorService => {\r\n if (isFunction(errorService.handleError)) {\r\n errorService.handleError(error);\r\n }\r\n });\r\n }\r\n }\r\n}\r\nApplicationinsightsAngularpluginErrorService.instance = null;\r\nApplicationinsightsAngularpluginErrorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nApplicationinsightsAngularpluginErrorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, providedIn: \"root\" });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: \"root\"\r\n }]\r\n }], ctorParameters: function () { return []; } });\n\nlet undefValue;\r\nconst defaultAngularExtensionConfig = objDeepFreeze({\r\n router: { blkVal: true, v: undefValue },\r\n errorServices: { blkVal: true, v: undefValue }\r\n});\r\n// eslint-disable-next-line @angular-eslint/component-class-suffix\r\nclass AngularPlugin extends BaseTelemetryPlugin {\r\n constructor(_injector) {\r\n super();\r\n this._injector = _injector;\r\n this.priority = 186;\r\n this.identifier = \"AngularPlugin\";\r\n let _analyticsPlugin;\r\n let _propertiesPlugin;\r\n let _angularCfg;\r\n let _eventSubscription;\r\n let _isPageInitialLoad;\r\n let _prevRouter;\r\n let _errorServiceInstance;\r\n dynamicProto(AngularPlugin, this, (_self, _base) => {\r\n const _initDefaults = () => {\r\n _analyticsPlugin = null;\r\n _propertiesPlugin = null;\r\n _angularCfg = null;\r\n _eventSubscription = null;\r\n _isPageInitialLoad = true;\r\n _prevRouter = undefValue;\r\n };\r\n _initDefaults();\r\n _self.initialize = (config, core, extensions, pluginChain) => {\r\n super.initialize(config, core, extensions, pluginChain);\r\n _self._addHook(onConfigChange(config, (details) => {\r\n let ctx = _self._getTelCtx();\r\n _angularCfg = ctx.getExtCfg(_self.identifier, defaultAngularExtensionConfig);\r\n _propertiesPlugin = core.getPlugin(PropertiesPluginIdentifier)?.plugin;\r\n _analyticsPlugin = core.getPlugin(AnalyticsPluginIdentifier)?.plugin;\r\n if (_angularCfg.useInjector && _injector) {\r\n _errorServiceInstance = this._injector.get(ApplicationinsightsAngularpluginErrorService);\r\n }\r\n _errorServiceInstance = _errorServiceInstance ? _errorServiceInstance\r\n : ApplicationinsightsAngularpluginErrorService.instance;\r\n // two instance of errorService\r\n if (_analyticsPlugin) {\r\n if (_errorServiceInstance !== null) {\r\n _errorServiceInstance.plugin = _analyticsPlugin;\r\n if (_angularCfg.errorServices && isArray(_angularCfg.errorServices)) {\r\n _errorServiceInstance.clearErrorHandlers();\r\n arrForEach(_angularCfg.errorServices, (errorService) => {\r\n _errorServiceInstance.addErrorHandler(errorService);\r\n });\r\n }\r\n }\r\n }\r\n if (_angularCfg.router !== _prevRouter) {\r\n // router is changed, or has not been initialized yet\r\n // unsubscribe previous router events\r\n if (_eventSubscription) {\r\n _eventSubscription.unsubscribe();\r\n }\r\n if (_angularCfg.router) {\r\n // only track page view if it is the initial page load for this plugin\r\n if (_isPageInitialLoad) {\r\n const pageViewTelemetry = {\r\n uri: _angularCfg.router.url\r\n };\r\n _self.trackPageView(pageViewTelemetry);\r\n }\r\n // subscribe to new router events\r\n _eventSubscription = _angularCfg.router.events.subscribe(event => {\r\n if (_self.isInitialized()) {\r\n if (event instanceof NavigationEnd) {\r\n // for page initial load, do not call trackPageView twice\r\n if (_isPageInitialLoad) {\r\n _isPageInitialLoad = false;\r\n return;\r\n }\r\n const pvt = {\r\n uri: _angularCfg.router.url,\r\n properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0\r\n };\r\n _self.trackPageView(pvt);\r\n }\r\n }\r\n });\r\n }\r\n _prevRouter = _angularCfg.router;\r\n }\r\n }));\r\n // for test purpose only\r\n _self[\"_getDbgPlgTargets\"] = () => _angularCfg;\r\n _self[\"_getErrorService\"] = () => _errorServiceInstance;\r\n };\r\n _self.trackPageView = (pageView) => {\r\n if (_analyticsPlugin) {\r\n const location = getLocation();\r\n if (_propertiesPlugin && _propertiesPlugin.context && _propertiesPlugin.context.telemetryTrace) {\r\n _propertiesPlugin.context.telemetryTrace.traceID = generateW3CId();\r\n _propertiesPlugin.context.telemetryTrace.name = location && location.pathname || \"_unknown_\";\r\n }\r\n _analyticsPlugin.trackPageView(pageView);\r\n }\r\n else {\r\n _throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Analytics plugin is not available, Angular plugin telemetry will not be sent: \");\r\n }\r\n };\r\n _self._doTeardown = (unloadCtx, unloadState, asyncCallback) => {\r\n if (_analyticsPlugin && _errorServiceInstance !== null) {\r\n _errorServiceInstance.plugin = null;\r\n if (_angularCfg) {\r\n if (_angularCfg.errorServices && Array.isArray(_angularCfg.errorServices)) {\r\n _errorServiceInstance.clearErrorHandlers();\r\n }\r\n }\r\n }\r\n if (_eventSubscription) {\r\n _eventSubscription.unsubscribe();\r\n _eventSubscription = null;\r\n }\r\n _initDefaults();\r\n };\r\n });\r\n }\r\n /**\r\n * Add Part A fields to the event\r\n *\r\n * @param event The event that needs to be processed\r\n */\r\n processTelemetry(event, itemCtx) {\r\n this.processNext(event, itemCtx);\r\n }\r\n initialize(config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n }\r\n trackPageView(pageView) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n }\r\n}\r\nAngularPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: AngularPlugin, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });\r\nAngularPlugin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.10\", type: AngularPlugin, selector: \"lib-applicationinsights-angularplugin-js\", usesInheritance: true, ngImport: i0, template: \"\", isInline: true });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: AngularPlugin, decorators: [{\r\n type: Component,\r\n args: [{ selector: \"lib-applicationinsights-angularplugin-js\", template: \"\" }]\r\n }], ctorParameters: function () { return [{ type: i0.Injector }]; } });\n\nclass ApplicationinsightsAngularpluginJsModule {\r\n}\r\nApplicationinsightsAngularpluginJsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nApplicationinsightsAngularpluginJsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.10\", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, declarations: [AngularPlugin], exports: [AngularPlugin] });\r\nApplicationinsightsAngularpluginJsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, providers: [\r\n ApplicationinsightsAngularpluginErrorService\r\n ] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [AngularPlugin],\r\n imports: [],\r\n exports: [AngularPlugin],\r\n providers: [\r\n ApplicationinsightsAngularpluginErrorService\r\n ]\r\n }]\r\n }] });\n\n/*\r\n * Public API Surface of applicationinsights-angularplugin-js\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { AngularPlugin, ApplicationinsightsAngularpluginErrorService, ApplicationinsightsAngularpluginJsModule };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { getGlobal, objAssign, objCreate, objDefineProp, objHasOwnProperty, throwTypeError } from \"@nevware21/ts-utils\";\r\nimport { ObjClass, ObjProto, strDefault, strShimFunction, strShimPrototype } from \"./Constants\";\r\n// Most of these functions have been directly shamelessly \"lifted\" from the https://github.com/@microsoft/tslib and\r\n// modified to be ES5 compatible and applying several minification and tree-shaking techniques so that Application Insights\r\n// can successfully use TypeScript \"importHelpers\" which imports tslib during compilation but it will use these at runtime\r\n// Which is also why all of the functions have not been included as Application Insights currently doesn't use or require\r\n// them.\r\nexport var SymbolObj = (getGlobal() || {})[\"Symbol\"];\r\nexport var ReflectObj = (getGlobal() || {})[\"Reflect\"];\r\nexport var __hasReflect = !!ReflectObj;\r\nvar strDecorate = \"decorate\";\r\nvar strMetadata = \"metadata\";\r\nvar strGetOwnPropertySymbols = \"getOwnPropertySymbols\";\r\nvar strIterator = \"iterator\";\r\nvar strHasOwnProperty = \"hasOwnProperty\";\r\nexport var __objAssignFnImpl = function (t) {\r\n // tslint:disable-next-line: ban-comma-operator\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) {\r\n if (ObjProto[strHasOwnProperty].call(s, p)) {\r\n t[p] = s[p];\r\n }\r\n }\r\n }\r\n return t;\r\n};\r\nexport var __assignFn = objAssign || __objAssignFnImpl;\r\n// tslint:disable-next-line: only-arrow-functions\r\nvar extendStaticsFn = function (d, b) {\r\n extendStaticsFn = ObjClass[\"setPrototypeOf\"] ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n ({ __proto__: [] } instanceof Array && function (d, b) {\r\n d.__proto__ = b;\r\n }) ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n function (d, b) {\r\n for (var p in b) {\r\n if (b[strHasOwnProperty](p)) {\r\n d[p] = b[p];\r\n }\r\n }\r\n };\r\n return extendStaticsFn(d, b);\r\n};\r\nexport function __extendsFn(d, b) {\r\n if (typeof b !== strShimFunction && b !== null) {\r\n throwTypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n }\r\n extendStaticsFn(d, b);\r\n function __() {\r\n this.constructor = d;\r\n }\r\n // tslint:disable-next-line: ban-comma-operator\r\n d[strShimPrototype] = b === null ? objCreate(b) : (__[strShimPrototype] = b[strShimPrototype], new __());\r\n}\r\nexport function __restFn(s, e) {\r\n var t = {};\r\n for (var k in s) {\r\n if (objHasOwnProperty(s, k) && e.indexOf(k) < 0) {\r\n t[k] = s[k];\r\n }\r\n }\r\n if (s != null && typeof ObjClass[strGetOwnPropertySymbols] === strShimFunction) {\r\n for (var i = 0, p = ObjClass[strGetOwnPropertySymbols](s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && ObjProto[\"propertyIsEnumerable\"].call(s, p[i])) {\r\n t[p[i]] = s[p[i]];\r\n }\r\n }\r\n }\r\n return t;\r\n}\r\nexport function __decorateFn(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = ObjClass[\"getOwnPropertyDescriptor\"](target, key) : desc, d;\r\n if (__hasReflect && typeof ReflectObj[strDecorate] === strShimFunction) {\r\n r = ReflectObj[strDecorate](decorators, target, key, desc);\r\n }\r\n else {\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line no-cond-assign\r\n if (d = decorators[i]) {\r\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n }\r\n }\r\n }\r\n // tslint:disable-next-line:ban-comma-operator\r\n return c > 3 && r && objDefineProp(target, key, r), r;\r\n}\r\nexport function __paramFn(paramIndex, decorator) {\r\n return function (target, key) {\r\n decorator(target, key, paramIndex);\r\n };\r\n}\r\nexport function __metadataFn(metadataKey, metadataValue) {\r\n if (__hasReflect && ReflectObj[strMetadata] === strShimFunction) {\r\n return ReflectObj[strMetadata](metadataKey, metadataValue);\r\n }\r\n}\r\nexport function __exportStarFn(m, o) {\r\n for (var p in m) {\r\n if (p !== strDefault && !objHasOwnProperty(o, p)) {\r\n __createBindingFn(o, m, p);\r\n }\r\n }\r\n}\r\nexport function __createBindingFn(o, m, k, k2) {\r\n if (k2 === undefined) {\r\n k2 = k;\r\n }\r\n if (!!objDefineProp) {\r\n objDefineProp(o, k2, {\r\n enumerable: true,\r\n get: function () {\r\n return m[k];\r\n }\r\n });\r\n }\r\n else {\r\n o[k2] = m[k];\r\n }\r\n}\r\nexport function __valuesFn(o) {\r\n var s = typeof SymbolObj === strShimFunction && SymbolObj[strIterator], m = s && o[s], i = 0;\r\n if (m) {\r\n return m.call(o);\r\n }\r\n if (o && typeof o.length === \"number\") {\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) {\r\n o = void 0;\r\n }\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n }\r\n throwTypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\nexport function __readFn(o, n) {\r\n var m = typeof SymbolObj === strShimFunction && o[SymbolObj[strIterator]];\r\n if (!m) {\r\n return o;\r\n }\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\r\n ar.push(r.value);\r\n }\r\n }\r\n catch (error) {\r\n e = {\r\n error: error\r\n };\r\n }\r\n finally {\r\n try {\r\n // tslint:disable-next-line:no-conditional-assignment\r\n if (r && !r.done && (m = i[\"return\"])) {\r\n m.call(i);\r\n }\r\n }\r\n finally {\r\n if (e) {\r\n // eslint-disable-next-line no-unsafe-finally\r\n throw e.error;\r\n }\r\n }\r\n }\r\n return ar;\r\n}\r\n/** @deprecated */\r\nexport function __spreadArraysFn() {\r\n var theArgs = arguments;\r\n // Calculate new total size\r\n for (var s = 0, i = 0, il = theArgs.length; i < il; i++) {\r\n s += theArgs[i].length;\r\n }\r\n // Create new full array\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\r\n for (var a = theArgs[i], j = 0, jl = a.length; j < jl; j++, k++) {\r\n r[k] = a[j];\r\n }\r\n }\r\n return r;\r\n}\r\nexport function __spreadArrayFn(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\r\n to[j] = from[i];\r\n }\r\n return to;\r\n}\r\nexport function __makeTemplateObjectFn(cooked, raw) {\r\n if (objDefineProp) {\r\n objDefineProp(cooked, \"raw\", { value: raw });\r\n }\r\n else {\r\n cooked.raw = raw;\r\n }\r\n return cooked;\r\n}\r\nexport function __importStarFn(mod) {\r\n if (mod && mod.__esModule) {\r\n return mod;\r\n }\r\n var result = {};\r\n if (mod != null) {\r\n for (var k in mod) {\r\n if (k !== strDefault && Object.prototype.hasOwnProperty.call(mod, k)) {\r\n __createBindingFn(result, mod, k);\r\n }\r\n }\r\n }\r\n // Set default module\r\n if (!!objDefineProp) {\r\n objDefineProp(result, strDefault, { enumerable: true, value: mod });\r\n }\r\n else {\r\n result[strDefault] = mod;\r\n }\r\n return result;\r\n}\r\nexport function __importDefaultFn(mod) {\r\n return (mod && mod.__esModule) ? mod : { strDefault: mod };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createEnum, createTypeMap } from \"@nevware21/ts-utils\";\r\n/**\r\n * Create an enum style object which has both the key => value and value => key mappings\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport var createEnumStyle = createEnum;\r\n/**\r\n * Create a 2 index map that maps an enum's key and value to the defined map value, X[\"key\"] => mapValue and X[0] => mapValue.\r\n * Generic values\r\n * - E = the const enum type (typeof eRequestHeaders);\r\n * - V = Identifies the valid values for the keys, this should include both the enum numeric and string key of the type. The\r\n * resulting \"Value\" of each entry identifies the valid values withing the assignments.\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport var createValueMap = createTypeMap;\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\nexport var StorageType = createEnumStyle({\r\n LocalStorage: 0 /* eStorageType.LocalStorage */,\r\n SessionStorage: 1 /* eStorageType.SessionStorage */\r\n});\r\nexport var DistributedTracingModes = createEnumStyle({\r\n AI: 0 /* eDistributedTracingModes.AI */,\r\n AI_AND_W3C: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n W3C: 2 /* eDistributedTracingModes.W3C */\r\n});\r\n/**\r\n * The EventPersistence contains a set of values that specify the event's persistence.\r\n */\r\nexport var EventPersistence = createEnumStyle({\r\n /**\r\n * Normal persistence.\r\n */\r\n Normal: 1 /* EventPersistenceValue.Normal */,\r\n /**\r\n * Critical persistence.\r\n */\r\n Critical: 2 /* EventPersistenceValue.Critical */\r\n});\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_SPLIT = \"split\"; // Count: 6\r\nexport var _DYN_LENGTH = \"length\"; // Count: 41\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_INGESTIONENDPOINT = \"ingestionendpoint\"; // Count: 6\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 9\r\nexport var _DYN_PUSH = \"push\"; // Count: 5\r\nexport var _DYN_REMOVE_ITEM = \"removeItem\"; // Count: 3\r\nexport var _DYN_NAME = \"name\"; // Count: 11\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 10\r\nexport var _DYN_COUNT = \"count\"; // Count: 8\r\nexport var _DYN_PRE_TRIGGER_DATE = \"preTriggerDate\"; // Count: 4\r\nexport var _DYN_DISABLED = \"disabled\"; // Count: 3\r\nexport var _DYN_INTERVAL = \"interval\"; // Count: 3\r\nexport var _DYN_DAYS_OF_MONTH = \"daysOfMonth\"; // Count: 3\r\nexport var _DYN_DATE = \"date\"; // Count: 5\r\nexport var _DYN_GET_UTCDATE = \"getUTCDate\"; // Count: 3\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 4\r\nexport var _DYN_PATHNAME = \"pathname\"; // Count: 4\r\nexport var _DYN_CORRELATION_HEADER_E0 = \"correlationHeaderExcludePatterns\"; // Count: 2\r\nexport var _DYN_EXTENSION_CONFIG = \"extensionConfig\"; // Count: 4\r\nexport var _DYN_EXCEPTIONS = \"exceptions\"; // Count: 6\r\nexport var _DYN_PARSED_STACK = \"parsedStack\"; // Count: 13\r\nexport var _DYN_PROPERTIES = \"properties\"; // Count: 9\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 9\r\nexport var _DYN_SIZE_IN_BYTES = \"sizeInBytes\"; // Count: 11\r\nexport var _DYN_TYPE_NAME = \"typeName\"; // Count: 11\r\nexport var _DYN_SEVERITY_LEVEL = \"severityLevel\"; // Count: 5\r\nexport var _DYN_PROBLEM_GROUP = \"problemGroup\"; // Count: 3\r\nexport var _DYN_IS_MANUAL = \"isManual\"; // Count: 3\r\nexport var _DYN__CREATE_FROM_INTERFA1 = \"CreateFromInterface\"; // Count: 2\r\nexport var _DYN_ASSEMBLY = \"assembly\"; // Count: 7\r\nexport var _DYN_FILE_NAME = \"fileName\"; // Count: 8\r\nexport var _DYN_HAS_FULL_STACK = \"hasFullStack\"; // Count: 6\r\nexport var _DYN_LEVEL = \"level\"; // Count: 5\r\nexport var _DYN_METHOD = \"method\"; // Count: 7\r\nexport var _DYN_LINE = \"line\"; // Count: 6\r\nexport var _DYN_DURATION = \"duration\"; // Count: 4\r\nexport var _DYN_RECEIVED_RESPONSE = \"receivedResponse\"; // Count: 2\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _throwInternal, dumpObj, getExceptionName, getGlobal, getGlobalInst, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { StorageType } from \"./Enums\";\r\nimport { _DYN_PUSH, _DYN_REMOVE_ITEM, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar _canUseLocalStorage = undefined;\r\nvar _canUseSessionStorage = undefined;\r\nvar _storagePrefix = \"\";\r\n/**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getLocalStorageObject() {\r\n if (utlCanUseLocalStorage()) {\r\n return _getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType - Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\nfunction _getVerifiedStorageObject(storageType) {\r\n try {\r\n if (isNullOrUndefined(getGlobal())) {\r\n return null;\r\n }\r\n var uid = (new Date)[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var storage = getGlobalInst(storageType === StorageType.LocalStorage ? \"localStorage\" : \"sessionStorage\");\r\n var name_1 = _storagePrefix + uid;\r\n storage.setItem(name_1, uid);\r\n var fail = storage.getItem(name_1) !== uid;\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name_1);\r\n if (!fail) {\r\n return storage;\r\n }\r\n }\r\n catch (exception) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n}\r\n/**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getSessionStorageObject() {\r\n if (utlCanUseSessionStorage()) {\r\n return _getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Disables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlDisableStorage() {\r\n _canUseLocalStorage = false;\r\n _canUseSessionStorage = false;\r\n}\r\nexport function utlSetStoragePrefix(storagePrefix) {\r\n _storagePrefix = storagePrefix || \"\";\r\n}\r\n/**\r\n * Re-enables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlEnableStorage() {\r\n _canUseLocalStorage = utlCanUseLocalStorage(true);\r\n _canUseSessionStorage = utlCanUseSessionStorage(true);\r\n}\r\n/**\r\n * Returns whether LocalStorage can be used, if the reset parameter is passed a true this will override\r\n * any previous disable calls.\r\n * @param reset - Should the usage be reset and determined only based on whether LocalStorage is available\r\n */\r\nexport function utlCanUseLocalStorage(reset) {\r\n if (reset || _canUseLocalStorage === undefined) {\r\n _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return _canUseLocalStorage;\r\n}\r\nexport function utlGetLocalStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 1 /* _eInternalMessageId.BrowserCannotReadLocalStorage */, \"Browser failed read of local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetLocalStorage(logger, name, data) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 3 /* _eInternalMessageId.BrowserCannotWriteLocalStorage */, \"Browser failed write to local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 5 /* _eInternalMessageId.BrowserFailedRemovalFromLocalStorage */, \"Browser failed removal of local storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlCanUseSessionStorage(reset) {\r\n if (reset || _canUseSessionStorage === undefined) {\r\n _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return _canUseSessionStorage;\r\n}\r\nexport function utlGetSessionStorageKeys() {\r\n var keys = [];\r\n if (utlCanUseSessionStorage()) {\r\n objForEachKey(getGlobalInst(\"sessionStorage\"), function (key) {\r\n keys[_DYN_PUSH /* @min:%2epush */](key);\r\n });\r\n }\r\n return keys;\r\n}\r\nexport function utlGetSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 2 /* _eInternalMessageId.BrowserCannotReadSessionStorage */, \"Browser failed read of session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetSessionStorage(logger, name, data) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 4 /* _eInternalMessageId.BrowserCannotWriteSessionStorage */, \"Browser failed write to session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 6 /* _eInternalMessageId.BrowserFailedRemovalFromSessionStorage */, \"Browser failed removal of session storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will\r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport var SampleRate = \"sampleRate\";\r\nexport var ProcessLegacy = \"ProcessLegacy\";\r\nexport var HttpMethod = \"http.method\";\r\nexport var DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\nexport var DEFAULT_BREEZE_PATH = \"/v2/track\";\r\nexport var strNotSpecified = \"not_specified\";\r\nexport var strIkey = \"iKey\";\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _throwInternal, getJSON, hasJSON, isObject, objForEachKey, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { asString, strSubstr, strSubstring } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH, _DYN_STRINGIFY, _DYN_TO_STRING } from \"../../__DynamicConstants\";\r\nexport function dataSanitizeKeyAndAddUniqueness(logger, key, map) {\r\n var origLength = key[_DYN_LENGTH /* @min:%2elength */];\r\n var field = dataSanitizeKey(logger, key);\r\n // validation truncated the length. We need to add uniqueness\r\n if (field[_DYN_LENGTH /* @min:%2elength */] !== origLength) {\r\n var i = 0;\r\n var uniqueField = field;\r\n while (map[uniqueField] !== undefined) {\r\n i++;\r\n uniqueField = strSubstring(field, 0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ - 3) + dsPadNumber(i);\r\n }\r\n field = uniqueField;\r\n }\r\n return field;\r\n}\r\nexport function dataSanitizeKey(logger, name) {\r\n var nameTrunc;\r\n if (name) {\r\n // Remove any leading or trailing whitespace\r\n name = strTrim(asString(name));\r\n // truncate the string to 150 chars\r\n if (name[_DYN_LENGTH /* @min:%2elength */] > 150 /* DataSanitizerValues.MAX_NAME_LENGTH */) {\r\n nameTrunc = strSubstring(name, 0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 57 /* _eInternalMessageId.NameTooLong */, \"name is too long. It has been truncated to \" + 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ + \" characters.\", { name: name }, true);\r\n }\r\n }\r\n return nameTrunc || name;\r\n}\r\nexport function dataSanitizeString(logger, value, maxLength) {\r\n if (maxLength === void 0) { maxLength = 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; }\r\n var valueTrunc;\r\n if (value) {\r\n maxLength = maxLength ? maxLength : 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; // in case default parameters dont work\r\n value = strTrim(asString(value));\r\n if (value[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n valueTrunc = strSubstring(value, 0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 61 /* _eInternalMessageId.StringValueTooLong */, \"string value is too long. It has been truncated to \" + maxLength + \" characters.\", { value: value }, true);\r\n }\r\n }\r\n return valueTrunc || value;\r\n}\r\nexport function dataSanitizeUrl(logger, url) {\r\n return dataSanitizeInput(logger, url, 2048 /* DataSanitizerValues.MAX_URL_LENGTH */, 66 /* _eInternalMessageId.UrlTooLong */);\r\n}\r\nexport function dataSanitizeMessage(logger, message) {\r\n var messageTrunc;\r\n if (message) {\r\n if (message[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */) {\r\n messageTrunc = strSubstring(message, 0, 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 56 /* _eInternalMessageId.MessageTruncated */, \"message is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */ + \" characters.\", { message: message }, true);\r\n }\r\n }\r\n return messageTrunc || message;\r\n}\r\nexport function dataSanitizeException(logger, exception) {\r\n var exceptionTrunc;\r\n if (exception) {\r\n // Make surte its a string\r\n var value = \"\" + exception;\r\n if (value[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */) {\r\n exceptionTrunc = strSubstring(value, 0, 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 52 /* _eInternalMessageId.ExceptionTruncated */, \"exception is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */ + \" characters.\", { exception: exception }, true);\r\n }\r\n }\r\n return exceptionTrunc || exception;\r\n}\r\nexport function dataSanitizeProperties(logger, properties) {\r\n if (properties) {\r\n var tempProps_1 = {};\r\n objForEachKey(properties, function (prop, value) {\r\n if (isObject(value) && hasJSON()) {\r\n // Stringify any part C properties\r\n try {\r\n value = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"custom property is not valid\", { exception: e }, true);\r\n }\r\n }\r\n value = dataSanitizeString(logger, value, 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */);\r\n prop = dataSanitizeKeyAndAddUniqueness(logger, prop, tempProps_1);\r\n tempProps_1[prop] = value;\r\n });\r\n properties = tempProps_1;\r\n }\r\n return properties;\r\n}\r\nexport function dataSanitizeMeasurements(logger, measurements) {\r\n if (measurements) {\r\n var tempMeasurements_1 = {};\r\n objForEachKey(measurements, function (measure, value) {\r\n measure = dataSanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements_1);\r\n tempMeasurements_1[measure] = value;\r\n });\r\n measurements = tempMeasurements_1;\r\n }\r\n return measurements;\r\n}\r\nexport function dataSanitizeId(logger, id) {\r\n return id ? dataSanitizeInput(logger, id, 128 /* DataSanitizerValues.MAX_ID_LENGTH */, 69 /* _eInternalMessageId.IdTooLong */)[_DYN_TO_STRING /* @min:%2etoString */]() : id;\r\n}\r\nexport function dataSanitizeInput(logger, input, maxLength, _msgId) {\r\n var inputTrunc;\r\n if (input) {\r\n input = strTrim(asString(input));\r\n if (input[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n inputTrunc = strSubstring(input, 0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, _msgId, \"input is too long, it has been truncated to \" + maxLength + \" characters.\", { data: input }, true);\r\n }\r\n }\r\n return inputTrunc || input;\r\n}\r\nexport function dsPadNumber(num) {\r\n var s = \"00\" + num;\r\n return strSubstr(s, s[_DYN_LENGTH /* @min:%2elength */] - 3);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isNullOrUndefined, objForEachKey, throwError, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIkey, strNotSpecified } from \"./Constants\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { _DYN_NAME } from \"./__DynamicConstants\";\r\n/**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item - domain specific properties; part B\r\n * @param baseType - telemetry item type. ie PageViewData\r\n * @param envelopeName - name of the envelope. ie Microsoft.ApplicationInsights..PageView\r\n * @param customProperties - user defined custom properties; part C\r\n * @param systemProperties - system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\nexport function createTelemetryItem(item, baseType, envelopeName, logger, customProperties, systemProperties) {\r\n var _a;\r\n envelopeName = dataSanitizeString(logger, envelopeName) || strNotSpecified;\r\n if (isNullOrUndefined(item) ||\r\n isNullOrUndefined(baseType) ||\r\n isNullOrUndefined(envelopeName)) {\r\n throwError(\"Input doesn't contain all required fields\");\r\n }\r\n var iKey = \"\";\r\n if (item[strIkey]) {\r\n iKey = item[strIkey];\r\n delete item[strIkey];\r\n }\r\n var telemetryItem = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = envelopeName,\r\n _a.time = toISOString(new Date()),\r\n _a.iKey = iKey,\r\n _a.ext = systemProperties ? systemProperties : {},\r\n _a.tags = [],\r\n _a.data = {},\r\n _a.baseType = baseType,\r\n _a.baseData = item // Part B\r\n ,\r\n _a);\r\n // Part C\r\n if (!isNullOrUndefined(customProperties)) {\r\n objForEachKey(customProperties, function (prop, value) {\r\n telemetryItem.data[prop] = value;\r\n });\r\n }\r\n return telemetryItem;\r\n}\r\nvar TelemetryItemCreator = /** @class */ (function () {\r\n function TelemetryItemCreator() {\r\n }\r\n /**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item - domain specific properties; part B\r\n * @param baseType - telemetry item type. ie PageViewData\r\n * @param envelopeName - name of the envelope. ie Microsoft.ApplicationInsights..PageView\r\n * @param customProperties - user defined custom properties; part C\r\n * @param systemProperties - system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\n TelemetryItemCreator.create = createTelemetryItem;\r\n return TelemetryItemCreator;\r\n}());\r\nexport { TelemetryItemCreator };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Event = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the EventTelemetry object\r\n */\r\n function Event(logger, name, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Event.envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n Event.dataType = \"EventData\";\r\n return Event;\r\n}());\r\nexport { Event };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties } from \"./Common/DataSanitizer\";\r\nvar Trace = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the TraceTelemetry object\r\n */\r\n function Trace(logger, message, severityLevel, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n message = message || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, message);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n }\r\n Trace.envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n Trace.dataType = \"MessageData\";\r\n return Trace;\r\n}());\r\nexport { Trace };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar DataPoint = /** @class */ (function () {\r\n function DataPoint() {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n name: 1 /* FieldType.Required */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 1 /* FieldType.Required */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */\r\n };\r\n /**\r\n * Metric type. Single measurement or the aggregated value.\r\n */\r\n this.kind = 0 /* DataPointType.Measurement */;\r\n }\r\n return DataPoint;\r\n}());\r\nexport { DataPoint };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_COUNT, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { DataPoint } from \"./Common/DataPoint\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Metric = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the MetricTelemetry object\r\n */\r\n function Metric(logger, name, value, count, min, max, stdDev, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n metrics: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n var dataPoint = new DataPoint();\r\n dataPoint[_DYN_COUNT /* @min:%2ecount */] = count > 0 ? count : undefined;\r\n dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n dataPoint[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n dataPoint.value = value;\r\n dataPoint.stdDev = isNaN(stdDev) || stdDev === null ? undefined : stdDev;\r\n _self.metrics = [dataPoint];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Metric.envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n Metric.dataType = \"MetricData\";\r\n return Metric;\r\n}());\r\nexport { Metric };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar strEmpty = \"\";\r\nexport function stringToBoolOrDefault(str, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n if (str === undefined || str === null) {\r\n return defaultValue;\r\n }\r\n return str.toString()[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"true\";\r\n}\r\n/**\r\n * Convert ms to c# time span format\r\n */\r\nexport function msToTimeSpan(totalms) {\r\n if (isNaN(totalms) || totalms < 0) {\r\n totalms = 0;\r\n }\r\n totalms = Math.round(totalms);\r\n var ms = strEmpty + totalms % 1000;\r\n var sec = strEmpty + Math.floor(totalms / 1000) % 60;\r\n var min = strEmpty + Math.floor(totalms / (1000 * 60)) % 60;\r\n var hour = strEmpty + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n var days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n ms = ms[_DYN_LENGTH /* @min:%2elength */] === 1 ? \"00\" + ms : ms[_DYN_LENGTH /* @min:%2elength */] === 2 ? \"0\" + ms : ms;\r\n sec = sec[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + sec : sec;\r\n min = min[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + min : min;\r\n hour = hour[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + hour : hour;\r\n return (days > 0 ? days + \".\" : strEmpty) + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n}\r\nexport function getExtensionByName(extensions, identifier) {\r\n var extension = null;\r\n arrForEach(extensions, function (value) {\r\n if (value.identifier === identifier) {\r\n extension = value;\r\n return -1;\r\n }\r\n });\r\n return extension;\r\n}\r\nexport function isCrossOriginError(message, url, lineNumber, columnNumber, error) {\r\n return !error && isString(message) && (message === \"Script error.\" || message === \"Script error\");\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeId, dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageView = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageView(logger, name, url, durationMs, properties, measurements, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n id: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = dataSanitizeId(logger, id);\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n if (!isNaN(durationMs)) {\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(durationMs);\r\n }\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n PageView.envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n PageView.dataType = \"PageviewData\";\r\n return PageView;\r\n}());\r\nexport { PageView };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES, _DYN_RECEIVED_RESPONSE } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageViewPerformance = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageViewPerformance(logger, name, url, unused, properties, measurements, cs4BaseData) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n perfTotal: 0 /* FieldType.Default */,\r\n networkConnect: 0 /* FieldType.Default */,\r\n sentRequest: 0 /* FieldType.Default */,\r\n receivedResponse: 0 /* FieldType.Default */,\r\n domProcessing: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (cs4BaseData) {\r\n _self.domProcessing = cs4BaseData.domProcessing;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = cs4BaseData[_DYN_DURATION /* @min:%2eduration */];\r\n _self.networkConnect = cs4BaseData.networkConnect;\r\n _self.perfTotal = cs4BaseData.perfTotal;\r\n _self[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */] = cs4BaseData[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */];\r\n _self.sentRequest = cs4BaseData.sentRequest;\r\n }\r\n }\r\n PageViewPerformance.envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n PageViewPerformance.dataType = \"PageviewPerformanceData\";\r\n return PageViewPerformance;\r\n}());\r\nexport { PageViewPerformance };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { arrForEach, arrMap, isArray, isError, isFunction, isNullOrUndefined, isObject, isString, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { getWindow, strIndexOf } from \"@nevware21/ts-utils\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_ASSEMBLY, _DYN_EXCEPTIONS, _DYN_FILE_NAME, _DYN_HAS_FULL_STACK, _DYN_IS_MANUAL, _DYN_LENGTH, _DYN_LEVEL, _DYN_LINE, _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_METHOD, _DYN_NAME, _DYN_PARSED_STACK, _DYN_PROBLEM_GROUP, _DYN_PROPERTIES, _DYN_PUSH, _DYN_SEVERITY_LEVEL, _DYN_SIZE_IN_BYTES, _DYN_SPLIT, _DYN_STRINGIFY, _DYN_TO_STRING, _DYN_TYPE_NAME, _DYN__CREATE_FROM_INTERFA1 } from \"../__DynamicConstants\";\r\nimport { dataSanitizeException, dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar NoMethod = \"\";\r\nvar strError = \"error\";\r\nvar strStack = \"stack\";\r\nvar strStackDetails = \"stackDetails\";\r\nvar strErrorSrc = \"errorSrc\";\r\nvar strMessage = \"message\";\r\nvar strDescription = \"description\";\r\nfunction _stringify(value, convertToString) {\r\n var result = value;\r\n if (result && !isString(result)) {\r\n if (JSON && JSON[_DYN_STRINGIFY /* @min:%2estringify */]) {\r\n result = JSON[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n if (convertToString && (!result || result === \"{}\")) {\r\n if (isFunction(value[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n result = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n else {\r\n result = \"\" + value;\r\n }\r\n }\r\n }\r\n else {\r\n result = \"\" + value + \" - (Missing JSON.stringify)\";\r\n }\r\n }\r\n return result || \"\";\r\n}\r\nfunction _formatMessage(theEvent, errorType) {\r\n var evtMessage = theEvent;\r\n if (theEvent) {\r\n if (evtMessage && !isString(evtMessage)) {\r\n evtMessage = theEvent[strMessage] || theEvent[strDescription] || evtMessage;\r\n }\r\n // Make sure the message is a string\r\n if (evtMessage && !isString(evtMessage)) {\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n evtMessage = _stringify(evtMessage, true);\r\n }\r\n if (theEvent[\"filename\"]) {\r\n // Looks like an event object with filename\r\n evtMessage = evtMessage + \" @\" + (theEvent[\"filename\"] || \"\") + \":\" + (theEvent[\"lineno\"] || \"?\") + \":\" + (theEvent[\"colno\"] || \"?\");\r\n }\r\n }\r\n // Automatically add the error type to the message if it does already appear to be present\r\n if (errorType && errorType !== \"String\" && errorType !== \"Object\" && errorType !== \"Error\" && strIndexOf(evtMessage || \"\", errorType) === -1) {\r\n evtMessage = errorType + \": \" + evtMessage;\r\n }\r\n return evtMessage || \"\";\r\n}\r\nfunction _isExceptionDetailsInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return \"hasFullStack\" in value && \"typeName\" in value;\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isExceptionInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return (\"ver\" in value && \"exceptions\" in value && \"properties\" in value);\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isStackDetails(details) {\r\n return details && details.src && isString(details.src) && details.obj && isArray(details.obj);\r\n}\r\nfunction _convertStackObj(errorStack) {\r\n var src = errorStack || \"\";\r\n if (!isString(src)) {\r\n if (isString(src[strStack])) {\r\n src = src[strStack];\r\n }\r\n else {\r\n src = \"\" + src;\r\n }\r\n }\r\n var items = src[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n return {\r\n src: src,\r\n obj: items\r\n };\r\n}\r\nfunction _getOperaStack(errorMessage) {\r\n var stack = [];\r\n var lines = errorMessage[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n for (var lp = 0; lp < lines[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var entry = lines[lp];\r\n if (lines[lp + 1]) {\r\n entry += \"@\" + lines[lp + 1];\r\n lp++;\r\n }\r\n stack[_DYN_PUSH /* @min:%2epush */](entry);\r\n }\r\n return {\r\n src: errorMessage,\r\n obj: stack\r\n };\r\n}\r\nfunction _getStackFromErrorObj(errorObj) {\r\n var details = null;\r\n if (errorObj) {\r\n try {\r\n /* Using bracket notation is support older browsers (IE 7/8 -- dont remember the version) that throw when using dot\r\n notation for undefined objects and we don't want to loose the error from being reported */\r\n if (errorObj[strStack]) {\r\n // Chrome/Firefox\r\n details = _convertStackObj(errorObj[strStack]);\r\n }\r\n else if (errorObj[strError] && errorObj[strError][strStack]) {\r\n // Edge error event provides the stack and error object\r\n details = _convertStackObj(errorObj[strError][strStack]);\r\n }\r\n else if (errorObj[\"exception\"] && errorObj.exception[strStack]) {\r\n details = _convertStackObj(errorObj.exception[strStack]);\r\n }\r\n else if (_isStackDetails(errorObj)) {\r\n details = errorObj;\r\n }\r\n else if (_isStackDetails(errorObj[strStackDetails])) {\r\n details = errorObj[strStackDetails];\r\n }\r\n else if (getWindow() && getWindow()[\"opera\"] && errorObj[strMessage]) {\r\n // Opera\r\n details = _getOperaStack(errorObj[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n else if (errorObj[\"reason\"] && errorObj.reason[strStack]) {\r\n // UnhandledPromiseRejection\r\n details = _convertStackObj(errorObj.reason[strStack]);\r\n }\r\n else if (isString(errorObj)) {\r\n details = _convertStackObj(errorObj);\r\n }\r\n else {\r\n var evtMessage = errorObj[strMessage] || errorObj[strDescription] || \"\";\r\n if (isString(errorObj[strErrorSrc])) {\r\n if (evtMessage) {\r\n evtMessage += \"\\n\";\r\n }\r\n evtMessage += \" from \" + errorObj[strErrorSrc];\r\n }\r\n if (evtMessage) {\r\n details = _convertStackObj(evtMessage);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // something unexpected happened so to avoid failing to report any error lets swallow the exception\r\n // and fallback to the callee/caller method\r\n details = _convertStackObj(e);\r\n }\r\n }\r\n return details || {\r\n src: \"\",\r\n obj: null\r\n };\r\n}\r\nfunction _formatStackTrace(stackDetails) {\r\n var stack = \"\";\r\n if (stackDetails) {\r\n if (stackDetails.obj) {\r\n arrForEach(stackDetails.obj, function (entry) {\r\n stack += entry + \"\\n\";\r\n });\r\n }\r\n else {\r\n stack = stackDetails.src || \"\";\r\n }\r\n }\r\n return stack;\r\n}\r\nfunction _parseStack(stack) {\r\n var parsedStack;\r\n var frames = stack.obj;\r\n if (frames && frames[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n parsedStack = [];\r\n var level_1 = 0;\r\n var totalSizeInBytes_1 = 0;\r\n arrForEach(frames, function (frame) {\r\n var theFrame = frame[_DYN_TO_STRING /* @min:%2etoString */]();\r\n if (_StackFrame.regex.test(theFrame)) {\r\n var parsedFrame = new _StackFrame(theFrame, level_1++);\r\n totalSizeInBytes_1 += parsedFrame[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n parsedStack[_DYN_PUSH /* @min:%2epush */](parsedFrame);\r\n }\r\n });\r\n // DP Constraint - exception parsed stack must be < 32KB\r\n // remove frames from the middle to meet the threshold\r\n var exceptionParsedStackThreshold = 32 * 1024;\r\n if (totalSizeInBytes_1 > exceptionParsedStackThreshold) {\r\n var left = 0;\r\n var right = parsedStack[_DYN_LENGTH /* @min:%2elength */] - 1;\r\n var size = 0;\r\n var acceptedLeft = left;\r\n var acceptedRight = right;\r\n while (left < right) {\r\n // check size\r\n var lSize = parsedStack[left][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n var rSize = parsedStack[right][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n size += lSize + rSize;\r\n if (size > exceptionParsedStackThreshold) {\r\n // remove extra frames from the middle\r\n var howMany = acceptedRight - acceptedLeft + 1;\r\n parsedStack.splice(acceptedLeft, howMany);\r\n break;\r\n }\r\n // update pointers\r\n acceptedLeft = left;\r\n acceptedRight = right;\r\n left++;\r\n right--;\r\n }\r\n }\r\n }\r\n return parsedStack;\r\n}\r\nfunction _getErrorType(errorType) {\r\n // Gets the Error Type by passing the constructor (used to get the true type of native error object).\r\n var typeName = \"\";\r\n if (errorType) {\r\n typeName = errorType.typeName || errorType[_DYN_NAME /* @min:%2ename */] || \"\";\r\n if (!typeName) {\r\n try {\r\n var funcNameRegex = /function (.{1,200})\\(/;\r\n var results = (funcNameRegex).exec((errorType).constructor[_DYN_TO_STRING /* @min:%2etoString */]());\r\n typeName = (results && results[_DYN_LENGTH /* @min:%2elength */] > 1) ? results[1] : \"\";\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n }\r\n return typeName;\r\n}\r\n/**\r\n * Formats the provided errorObj for display and reporting, it may be a String, Object, integer or undefined depending on the browser.\r\n * @param errorObj - The supplied errorObj\r\n */\r\nexport function _formatErrorCode(errorObj) {\r\n if (errorObj) {\r\n try {\r\n if (!isString(errorObj)) {\r\n var errorType = _getErrorType(errorObj);\r\n var result = _stringify(errorObj, false);\r\n if (!result || result === \"{}\") {\r\n if (errorObj[strError]) {\r\n // Looks like an MS Error Event\r\n errorObj = errorObj[strError];\r\n errorType = _getErrorType(errorObj);\r\n }\r\n result = _stringify(errorObj, true);\r\n }\r\n if (strIndexOf(result, errorType) !== 0 && errorType !== \"String\") {\r\n return errorType + \":\" + result;\r\n }\r\n return result;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n // Fallback to just letting the object format itself into a string\r\n return \"\" + (errorObj || \"\");\r\n}\r\nvar Exception = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the ExceptionTelemetry object\r\n */\r\n function Exception(logger, exception, properties, measurements, severityLevel, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n exceptions: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n if (!_isExceptionInternal(exception)) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n if (id) {\r\n properties.id = id;\r\n }\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = [new _ExceptionDetails(logger, exception, properties)];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n if (id) {\r\n _self.id = id;\r\n }\r\n }\r\n else {\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */] || [];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = exception[_DYN_PROPERTIES /* @min:%2eproperties */];\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = exception[_DYN_MEASUREMENTS /* @min:%2emeasurements */];\r\n if (exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */]) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */];\r\n }\r\n if (exception.id) {\r\n _self.id = exception.id;\r\n exception[_DYN_PROPERTIES /* @min:%2eproperties */].id = exception.id;\r\n }\r\n if (exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */]) {\r\n _self[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */] = exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */];\r\n }\r\n // bool/int types, use isNullOrUndefined\r\n if (!isNullOrUndefined(exception[_DYN_IS_MANUAL /* @min:%2eisManual */])) {\r\n _self[_DYN_IS_MANUAL /* @min:%2eisManual */] = exception[_DYN_IS_MANUAL /* @min:%2eisManual */];\r\n }\r\n }\r\n }\r\n Exception.CreateAutoException = function (message, url, lineNumber, columnNumber, error, evt, stack, errorSrc) {\r\n var _a;\r\n var errorType = _getErrorType(error || evt || message);\r\n return _a = {},\r\n _a[_DYN_MESSAGE /* @min:message */] = _formatMessage(message, errorType),\r\n _a.url = url,\r\n _a.lineNumber = lineNumber,\r\n _a.columnNumber = columnNumber,\r\n _a.error = _formatErrorCode(error || evt || message),\r\n _a.evt = _formatErrorCode(evt || message),\r\n _a[_DYN_TYPE_NAME /* @min:typeName */] = errorType,\r\n _a.stackDetails = _getStackFromErrorObj(stack || error || evt),\r\n _a.errorSrc = errorSrc,\r\n _a;\r\n };\r\n Exception.CreateFromInterface = function (logger, exception, properties, measurements) {\r\n var exceptions = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */]\r\n && arrMap(exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */], function (ex) { return _ExceptionDetails[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](logger, ex); });\r\n var exceptionData = new Exception(logger, __assign(__assign({}, exception), { exceptions: exceptions }), properties, measurements);\r\n return exceptionData;\r\n };\r\n Exception.prototype.toInterface = function () {\r\n var _a;\r\n var _b = this, exceptions = _b.exceptions, properties = _b.properties, measurements = _b.measurements, severityLevel = _b.severityLevel, problemGroup = _b.problemGroup, id = _b.id, isManual = _b.isManual;\r\n var exceptionDetailsInterface = exceptions instanceof Array\r\n && arrMap(exceptions, function (exception) { return exception.toInterface(); })\r\n || undefined;\r\n return _a = {\r\n ver: \"4.0\"\r\n },\r\n _a[_DYN_EXCEPTIONS /* @min:exceptions */] = exceptionDetailsInterface,\r\n _a.severityLevel = severityLevel,\r\n _a.properties = properties,\r\n _a.measurements = measurements,\r\n _a.problemGroup = problemGroup,\r\n _a.id = id,\r\n _a.isManual = isManual,\r\n _a;\r\n };\r\n /**\r\n * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n */\r\n Exception.CreateSimpleException = function (message, typeName, assembly, fileName, details, line) {\r\n var _a;\r\n return {\r\n exceptions: [\r\n (_a = {},\r\n _a[_DYN_HAS_FULL_STACK /* @min:hasFullStack */] = true,\r\n _a.message = message,\r\n _a.stack = details,\r\n _a.typeName = typeName,\r\n _a)\r\n ]\r\n };\r\n };\r\n Exception.envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n Exception.dataType = \"ExceptionData\";\r\n Exception.formatError = _formatErrorCode;\r\n return Exception;\r\n}());\r\nexport { Exception };\r\nvar _ExceptionDetails = /** @class */ (function () {\r\n function _ExceptionDetails(logger, exception, properties) {\r\n this.aiDataContract = {\r\n id: 0 /* FieldType.Default */,\r\n outerId: 0 /* FieldType.Default */,\r\n typeName: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n hasFullStack: 0 /* FieldType.Default */,\r\n stack: 0 /* FieldType.Default */,\r\n parsedStack: 2 /* FieldType.Array */\r\n };\r\n var _self = this;\r\n if (!_isExceptionDetailsInternal(exception)) {\r\n var error = exception;\r\n var evt = error && error.evt;\r\n if (!isError(error)) {\r\n error = error[strError] || evt || error;\r\n }\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = dataSanitizeString(logger, _getErrorType(error)) || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, _formatMessage(exception || error, _self[_DYN_TYPE_NAME /* @min:%2etypeName */])) || strNotSpecified;\r\n var stack = exception[strStackDetails] || _getStackFromErrorObj(exception);\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = _parseStack(stack);\r\n // after parsedStack is inited, iterate over each frame object, sanitize its assembly field\r\n if (isArray(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */])) {\r\n arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) {\r\n frame[_DYN_ASSEMBLY /* @min:%2eassembly */] = dataSanitizeString(logger, frame[_DYN_ASSEMBLY /* @min:%2eassembly */]);\r\n frame[_DYN_FILE_NAME /* @min:%2efileName */] = dataSanitizeString(logger, frame[_DYN_FILE_NAME /* @min:%2efileName */]);\r\n });\r\n }\r\n _self[strStack] = dataSanitizeException(logger, _formatStackTrace(stack));\r\n _self.hasFullStack = isArray(_self.parsedStack) && _self.parsedStack[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n if (properties) {\r\n properties[_DYN_TYPE_NAME /* @min:%2etypeName */] = properties[_DYN_TYPE_NAME /* @min:%2etypeName */] || _self[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n }\r\n }\r\n else {\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = exception[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = exception[_DYN_MESSAGE /* @min:%2emessage */];\r\n _self[strStack] = exception[strStack];\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] || [];\r\n _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */] = exception[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */];\r\n }\r\n }\r\n _ExceptionDetails.prototype.toInterface = function () {\r\n var _a;\r\n var _self = this;\r\n var parsedStack = _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return frame.toInterface(); });\r\n var exceptionDetailsInterface = (_a = {\r\n id: _self.id,\r\n outerId: _self.outerId,\r\n typeName: _self[_DYN_TYPE_NAME /* @min:%2etypeName */],\r\n message: _self[_DYN_MESSAGE /* @min:%2emessage */],\r\n hasFullStack: _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */],\r\n stack: _self[strStack]\r\n },\r\n _a[_DYN_PARSED_STACK /* @min:parsedStack */] = parsedStack || undefined,\r\n _a);\r\n return exceptionDetailsInterface;\r\n };\r\n _ExceptionDetails.CreateFromInterface = function (logger, exception) {\r\n var parsedStack = (exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return _StackFrame[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](frame); }))\r\n || exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */];\r\n var exceptionDetails = new _ExceptionDetails(logger, __assign(__assign({}, exception), { parsedStack: parsedStack }));\r\n return exceptionDetails;\r\n };\r\n return _ExceptionDetails;\r\n}());\r\nexport { _ExceptionDetails };\r\nvar _StackFrame = /** @class */ (function () {\r\n function _StackFrame(sourceFrame, level) {\r\n this.aiDataContract = {\r\n level: 1 /* FieldType.Required */,\r\n method: 1 /* FieldType.Required */,\r\n assembly: 0 /* FieldType.Default */,\r\n fileName: 0 /* FieldType.Default */,\r\n line: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n // Not converting this to isString() as typescript uses this logic to \"understand\" the different\r\n // types for the 2 different code paths\r\n if (typeof sourceFrame === \"string\") {\r\n var frame = sourceFrame;\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = level;\r\n _self[_DYN_METHOD /* @min:%2emethod */] = NoMethod;\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = strTrim(frame);\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = \"\";\r\n _self[_DYN_LINE /* @min:%2eline */] = 0;\r\n var matches = frame.match(_StackFrame.regex);\r\n if (matches && matches[_DYN_LENGTH /* @min:%2elength */] >= 5) {\r\n _self[_DYN_METHOD /* @min:%2emethod */] = strTrim(matches[2]) || _self[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = strTrim(matches[4]);\r\n _self[_DYN_LINE /* @min:%2eline */] = parseInt(matches[5]) || 0;\r\n }\r\n }\r\n else {\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = sourceFrame[_DYN_LEVEL /* @min:%2elevel */];\r\n _self[_DYN_METHOD /* @min:%2emethod */] = sourceFrame[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = sourceFrame[_DYN_ASSEMBLY /* @min:%2eassembly */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = sourceFrame[_DYN_FILE_NAME /* @min:%2efileName */];\r\n _self[_DYN_LINE /* @min:%2eline */] = sourceFrame[_DYN_LINE /* @min:%2eline */];\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n }\r\n _self.sizeInBytes += _self.method[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.fileName[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.assembly[_DYN_LENGTH /* @min:%2elength */];\r\n // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] += _StackFrame.baseSize;\r\n _self.sizeInBytes += _self.level.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.line.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n _StackFrame.CreateFromInterface = function (frame) {\r\n return new _StackFrame(frame, null /* level is available in frame interface */);\r\n };\r\n _StackFrame.prototype.toInterface = function () {\r\n var _self = this;\r\n return {\r\n level: _self[_DYN_LEVEL /* @min:%2elevel */],\r\n method: _self[_DYN_METHOD /* @min:%2emethod */],\r\n assembly: _self[_DYN_ASSEMBLY /* @min:%2eassembly */],\r\n fileName: _self[_DYN_FILE_NAME /* @min:%2efileName */],\r\n line: _self[_DYN_LINE /* @min:%2eline */]\r\n };\r\n };\r\n // regex to match stack frames from ie/chrome/ff\r\n // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n _StackFrame.regex = /^([\\s]+at)?[\\s]{0,50}([^\\@\\()]+?)[\\s]{0,50}(\\@|\\()([^\\(\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n _StackFrame.baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n return _StackFrame;\r\n}());\r\nexport { _StackFrame };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createValueMap } from \"@microsoft/applicationinsights-core-js\";\r\nexport var RequestHeaders = createValueMap({\r\n requestContextHeader: [0 /* eRequestHeaders.requestContextHeader */, \"Request-Context\"],\r\n requestContextTargetKey: [1 /* eRequestHeaders.requestContextTargetKey */, \"appId\"],\r\n requestContextAppIdFormat: [2 /* eRequestHeaders.requestContextAppIdFormat */, \"appId=cid-v1:\"],\r\n requestIdHeader: [3 /* eRequestHeaders.requestIdHeader */, \"Request-Id\"],\r\n traceParentHeader: [4 /* eRequestHeaders.traceParentHeader */, \"traceparent\"],\r\n traceStateHeader: [5 /* eRequestHeaders.traceStateHeader */, \"tracestate\"],\r\n sdkContextHeader: [6 /* eRequestHeaders.sdkContextHeader */, \"Sdk-Context\"],\r\n sdkContextHeaderAppIdRequest: [7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */, \"appId\"],\r\n requestContextHeaderLowerCase: [8 /* eRequestHeaders.requestContextHeaderLowerCase */, \"request-context\"]\r\n});\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getDocument, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PATHNAME, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _document = getDocument() || {};\r\nvar _htmlAnchorIdx = 0;\r\n// Use an array of temporary values as it's possible for multiple calls to parseUrl() will be called with different URLs\r\n// Using a cache size of 5 for now as it current depth usage is at least 2, so adding a minor buffer to handle future updates\r\nvar _htmlAnchorElement = [null, null, null, null, null];\r\nexport function urlParseUrl(url) {\r\n var anchorIdx = _htmlAnchorIdx;\r\n var anchorCache = _htmlAnchorElement;\r\n var tempAnchor = anchorCache[anchorIdx];\r\n if (!_document.createElement) {\r\n // Always create the temp instance if createElement is not available\r\n tempAnchor = { host: urlParseHost(url, true) };\r\n }\r\n else if (!anchorCache[anchorIdx]) {\r\n // Create and cache the unattached anchor instance\r\n tempAnchor = anchorCache[anchorIdx] = _document.createElement(\"a\");\r\n }\r\n tempAnchor.href = url;\r\n // Move the cache index forward\r\n anchorIdx++;\r\n if (anchorIdx >= anchorCache[_DYN_LENGTH /* @min:%2elength */]) {\r\n anchorIdx = 0;\r\n }\r\n _htmlAnchorIdx = anchorIdx;\r\n return tempAnchor;\r\n}\r\nexport function urlGetAbsoluteUrl(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a.href;\r\n }\r\n return result;\r\n}\r\nexport function urlGetPathName(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a[_DYN_PATHNAME /* @min:%2epathname */];\r\n }\r\n return result;\r\n}\r\nexport function urlGetCompleteUrl(method, absoluteUrl) {\r\n if (method) {\r\n return method.toUpperCase() + \" \" + absoluteUrl;\r\n }\r\n return absoluteUrl;\r\n}\r\n// Fallback method to grab host from url if document.createElement method is not available\r\nexport function urlParseHost(url, inclPort) {\r\n var fullHost = urlParseFullHost(url, inclPort) || \"\";\r\n if (fullHost) {\r\n var match = fullHost.match(/(www\\d{0,5}\\.)?([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 3 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n return match[2] + (match[3] || \"\");\r\n }\r\n }\r\n return fullHost;\r\n}\r\nexport function urlParseFullHost(url, inclPort) {\r\n var result = null;\r\n if (url) {\r\n var match = url.match(/(\\w{1,150}):\\/\\/([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 2 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n result = match[2] || \"\";\r\n if (inclPort && match[_DYN_LENGTH /* @min:%2elength */] > 2) {\r\n var protocol = (match[1] || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var port = match[3] || \"\";\r\n // IE includes the standard port so pass it off if it's the same as the protocol\r\n if (protocol === \"http\" && port === \":80\") {\r\n port = \"\";\r\n }\r\n else if (protocol === \"https\" && port === \":443\") {\r\n port = \"\";\r\n }\r\n result += port;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, arrIndexOf, dateNow, getPerformance, isNullOrUndefined, isValidSpanId, isValidTraceId } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIndexOf } from \"@nevware21/ts-utils\";\r\nimport { DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH } from \"./Constants\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { urlParseFullHost, urlParseUrl } from \"./UrlHelperFuncs\";\r\nimport { _DYN_CORRELATION_HEADER_E0, _DYN_LENGTH, _DYN_NAME, _DYN_PATHNAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\n// listing only non-geo specific locations\r\nvar _internalEndpoints = [\r\n DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH,\r\n \"https://breeze.aimon.applicationinsights.io\" + DEFAULT_BREEZE_PATH,\r\n \"https://dc-int.services.visualstudio.com\" + DEFAULT_BREEZE_PATH\r\n];\r\nvar _correlationIdPrefix = \"cid-v1:\";\r\nexport function isInternalApplicationInsightsEndpoint(endpointUrl) {\r\n return arrIndexOf(_internalEndpoints, endpointUrl[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) !== -1;\r\n}\r\nexport function correlationIdSetPrefix(prefix) {\r\n _correlationIdPrefix = prefix;\r\n}\r\nexport function correlationIdGetPrefix() {\r\n return _correlationIdPrefix;\r\n}\r\n/**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\nexport function correlationIdCanIncludeCorrelationHeader(config, requestUrl, currentHost) {\r\n if (!requestUrl || (config && config.disableCorrelationHeaders)) {\r\n return false;\r\n }\r\n if (config && config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */]) {\r\n for (var i = 0; i < config.correlationHeaderExcludePatterns[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */][i].test(requestUrl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n var requestHost = urlParseUrl(requestUrl).host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n if (requestHost && (strIndexOf(requestHost, \":443\") !== -1 || strIndexOf(requestHost, \":80\") !== -1)) {\r\n // [Bug #1260] IE can include the port even for http and https URLs so if present\r\n // try and parse it to remove if it matches the default protocol port\r\n requestHost = (urlParseFullHost(requestUrl, true) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n }\r\n if ((!config || !config.enableCorsCorrelation) && (requestHost && requestHost !== currentHost)) {\r\n return false;\r\n }\r\n var includedDomains = config && config.correlationHeaderDomains;\r\n if (includedDomains) {\r\n var matchExists_1;\r\n arrForEach(includedDomains, function (domain) {\r\n var regex = new RegExp(domain.toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n matchExists_1 = matchExists_1 || regex.test(requestHost);\r\n });\r\n if (!matchExists_1) {\r\n return false;\r\n }\r\n }\r\n var excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n if (!excludedDomains || excludedDomains[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return true;\r\n }\r\n for (var i = 0; i < excludedDomains[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n if (regex.test(requestHost)) {\r\n return false;\r\n }\r\n }\r\n // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n // Previously we always returned false for a falsy requestHost\r\n return requestHost && requestHost[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n}\r\n/**\r\n * Combines target appId and target role name from response header.\r\n */\r\nexport function correlationIdGetCorrelationContext(responseHeader) {\r\n if (responseHeader) {\r\n var correlationId = correlationIdGetCorrelationContextValue(responseHeader, RequestHeaders[1 /* eRequestHeaders.requestContextTargetKey */]);\r\n if (correlationId && correlationId !== _correlationIdPrefix) {\r\n return correlationId;\r\n }\r\n }\r\n}\r\n/**\r\n * Gets key from correlation response header\r\n */\r\nexport function correlationIdGetCorrelationContextValue(responseHeader, key) {\r\n if (responseHeader) {\r\n var keyValues = responseHeader[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n for (var i = 0; i < keyValues[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n var keyValue = keyValues[i][_DYN_SPLIT /* @min:%2esplit */](\"=\");\r\n if (keyValue[_DYN_LENGTH /* @min:%2elength */] === 2 && keyValue[0] === key) {\r\n return keyValue[1];\r\n }\r\n }\r\n }\r\n}\r\nexport function AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName) {\r\n var target, name = commandName, data = commandName;\r\n if (absoluteUrl && absoluteUrl[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var parsedUrl = urlParseUrl(absoluteUrl);\r\n target = parsedUrl.host;\r\n if (!name) {\r\n if (parsedUrl[_DYN_PATHNAME /* @min:%2epathname */] != null) {\r\n var pathName = (parsedUrl.pathname[_DYN_LENGTH /* @min:%2elength */] === 0) ? \"/\" : parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n if (pathName.charAt(0) !== \"/\") {\r\n pathName = \"/\" + pathName;\r\n }\r\n data = parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n name = dataSanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n }\r\n else {\r\n name = dataSanitizeString(logger, absoluteUrl);\r\n }\r\n }\r\n }\r\n else {\r\n target = commandName;\r\n name = commandName;\r\n }\r\n return {\r\n target: target,\r\n name: name,\r\n data: data\r\n };\r\n}\r\nexport function dateTimeUtilsNow() {\r\n // returns the window or webworker performance object\r\n var perf = getPerformance();\r\n if (perf && perf.now && perf.timing) {\r\n var now = perf.now() + perf.timing.navigationStart;\r\n // Known issue with IE where this calculation can be negative, so if it is then ignore and fallback\r\n if (now > 0) {\r\n return now;\r\n }\r\n }\r\n return dateNow();\r\n}\r\nexport function dateTimeUtilsDuration(start, end) {\r\n var result = null;\r\n if (start !== 0 && end !== 0 && !isNullOrUndefined(start) && !isNullOrUndefined(end)) {\r\n result = end - start;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Creates a IDistributedTraceContext from an optional telemetryTrace\r\n * @param telemetryTrace - The telemetryTrace instance that is being wrapped\r\n * @param parentCtx - An optional parent distributed trace instance, almost always undefined as this scenario is only used in the case of multiple property handlers.\r\n * @returns A new IDistributedTraceContext instance that is backed by the telemetryTrace or temporary object\r\n */\r\nexport function createDistributedTraceContextFromTrace(telemetryTrace, parentCtx) {\r\n var trace = telemetryTrace || {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace.traceID;\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace.traceID = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace.parentID;\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace.parentID = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace.traceFlags;\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace.traceFlags = newTraceFlags;\r\n }\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { AjaxHelperParseDependencyPath } from \"../Util\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar RemoteDependencyData = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the RemoteDependencyData object\r\n */\r\n function RemoteDependencyData(logger, id, absoluteUrl, commandName, value, success, resultCode, method, requestAPI, correlationContext, properties, measurements) {\r\n if (requestAPI === void 0) { requestAPI = \"Ajax\"; }\r\n this.aiDataContract = {\r\n id: 1 /* FieldType.Required */,\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n resultCode: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n success: 0 /* FieldType.Default */,\r\n data: 0 /* FieldType.Default */,\r\n target: 0 /* FieldType.Default */,\r\n type: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 0 /* FieldType.Default */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */,\r\n dependencyKind: 0 /* FieldType.Default */,\r\n dependencySource: 0 /* FieldType.Default */,\r\n commandName: 0 /* FieldType.Default */,\r\n dependencyTypeName: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = id;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(value);\r\n _self.success = success;\r\n _self.resultCode = resultCode + \"\";\r\n _self.type = dataSanitizeString(logger, requestAPI);\r\n var dependencyFields = AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n _self.data = dataSanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n _self.target = dataSanitizeString(logger, dependencyFields.target);\r\n if (correlationContext) {\r\n _self.target = \"\".concat(_self.target, \" | \").concat(correlationContext);\r\n }\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, dependencyFields[_DYN_NAME /* @min:%2ename */]);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n RemoteDependencyData.envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n RemoteDependencyData.dataType = \"RemoteDependencyData\";\r\n return RemoteDependencyData;\r\n}());\r\nexport { RemoteDependencyData };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getDocument, isFunction } from \"@microsoft/applicationinsights-core-js\";\r\nexport function createDomEvent(eventName) {\r\n var event = null;\r\n if (isFunction(Event)) { // Use Event constructor when available\r\n event = new Event(eventName);\r\n }\r\n else { // Event has no constructor in IE\r\n var doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"Event\");\r\n event.initEvent(eventName, true, true);\r\n }\r\n }\r\n return event;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { asString, isBoolean, isFunction, isNullOrUndefined, isString } from \"@nevware21/ts-utils\";\r\nimport { STR_EMPTY } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_BLK_VAL, _DYN_TO_LOWER_CASE } from \"../__DynamicConstants\";\r\n/**\r\n * @internal\r\n * @ignore\r\n * @param str\r\n * @param defaultValue\r\n * @returns\r\n */\r\nfunction _stringToBoolOrDefault(theValue, defaultValue, theConfig) {\r\n if (!theValue && isNullOrUndefined(theValue)) {\r\n return defaultValue;\r\n }\r\n if (isBoolean(theValue)) {\r\n return theValue;\r\n }\r\n return asString(theValue)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"true\";\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance with the field defined as an object\r\n * that should be merged\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfMerge(defaultValue) {\r\n return {\r\n mrg: true,\r\n v: defaultValue\r\n };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance with the provided field set function\r\n * @param setter - The IConfigCheckFn function to validate the user provided value\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfSet(setter, defaultValue) {\r\n return {\r\n set: setter,\r\n v: defaultValue\r\n };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance with the provided field validator\r\n * @param validator - The IConfigCheckFn function to validate the user provided value\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @param fallBackName - The fallback configuration name if the current value is not available\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfValidate(validator, defaultValue, fallBackName) {\r\n return {\r\n fb: fallBackName,\r\n isVal: validator,\r\n v: defaultValue\r\n };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance that will validate and convert the user\r\n * provided value to a boolean from a string or boolean value\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @param fallBackName - The fallback configuration name if the current value is not available\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfBoolean(defaultValue, fallBackName) {\r\n return {\r\n fb: fallBackName,\r\n set: _stringToBoolOrDefault,\r\n v: !!defaultValue\r\n };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance that will validate that the user\r\n * provided value is a function.\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfFunc(defaultValue) {\r\n return {\r\n isVal: isFunction,\r\n v: defaultValue || null\r\n };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance that will validate that the user\r\n * provided value is a function.\r\n * @param defaultValue - The default string value to apply it not provided or it's not valid, defaults to an empty string\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfString(defaultValue) {\r\n return {\r\n isVal: isString,\r\n v: asString(defaultValue || STR_EMPTY)\r\n };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance identifying that value associated with this property\r\n * should not have it's properties converted into a dynamic config properties.\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfBlockPropValue(defaultValue) {\r\n var _a;\r\n return _a = {},\r\n _a[_DYN_BLK_VAL /* @min:blkVal */] = true,\r\n _a.v = defaultValue,\r\n _a;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a, _b;\r\nimport { arrForEach, arrIndexOf, dumpObj, getDocument, getLazy, getNavigator, isArray, isFunction, isNullOrUndefined, isString, isTruthy, isUndefined, objForEachKey, strEndsWith, strIndexOf, strLeft, strSubstring, strTrim, utcNow } from \"@nevware21/ts-utils\";\r\nimport { cfgDfMerge } from \"../Config/ConfigDefaultHelpers\";\r\nimport { createDynamicConfig, onConfigChange } from \"../Config/DynamicConfig\";\r\nimport { _DYN_ENABLED, _DYN_LENGTH, _DYN_LOGGER, _DYN_PROTOCOL, _DYN_SET_DF, _DYN_SPLIT, _DYN_UNLOAD, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { getLocation, isIE } from \"./EnvUtils\";\r\nimport { getExceptionName, isNotNullOrUndefined, setValue, strContains } from \"./HelperFuncs\";\r\nimport { STR_DOMAIN, STR_EMPTY, STR_PATH, UNDEFINED_VALUE } from \"./InternalConstants\";\r\nvar strToGMTString = \"toGMTString\";\r\nvar strToUTCString = \"toUTCString\";\r\nvar strCookie = \"cookie\";\r\nvar strExpires = \"expires\";\r\nvar strIsCookieUseDisabled = \"isCookieUseDisabled\";\r\nvar strDisableCookiesUsage = \"disableCookiesUsage\";\r\nvar strConfigCookieMgr = \"_ckMgr\";\r\nvar _supportsCookies = null;\r\nvar _allowUaSameSite = null;\r\nvar _parsedCookieValue = null;\r\nvar _doc;\r\nvar _cookieCache = {};\r\nvar _globalCookieConfig = {};\r\n// // `isCookieUseDisabled` is deprecated, so explicitly casting as a key of IConfiguration to avoid typing error\r\n// // when both isCookieUseDisabled and disableCookiesUsage are used disableCookiesUsage will take precedent, which is\r\n// // why its listed first\r\n/**\r\n * Set the supported dynamic config values as undefined (or an empty object) so that\r\n * any listeners will be informed of any changes.\r\n * Explicitly NOT including the deprecated `isCookieUseDisabled` as we don't want to support\r\n * the v1 deprecated field as dynamic for updates\r\n */\r\nvar rootDefaultConfig = (_a = {\r\n cookieCfg: cfgDfMerge((_b = {},\r\n _b[STR_DOMAIN] = { fb: \"cookieDomain\", dfVal: isNotNullOrUndefined },\r\n _b.path = { fb: \"cookiePath\", dfVal: isNotNullOrUndefined },\r\n _b.enabled = UNDEFINED_VALUE,\r\n _b.ignoreCookies = UNDEFINED_VALUE,\r\n _b.blockedCookies = UNDEFINED_VALUE,\r\n _b)),\r\n cookieDomain: UNDEFINED_VALUE,\r\n cookiePath: UNDEFINED_VALUE\r\n },\r\n _a[strDisableCookiesUsage] = UNDEFINED_VALUE,\r\n _a);\r\nfunction _getDoc() {\r\n !_doc && (_doc = getLazy(function () { return getDocument(); }));\r\n}\r\n/**\r\n * @ignore\r\n * DO NOT USE or export from the module, this is exposed as public to support backward compatibility of previous static utility methods only.\r\n * If you want to manager cookies either use the ICookieMgr available from the core instance via getCookieMgr() or create\r\n * your own instance of the CookieMgr and use that.\r\n * Using this directly for enabling / disabling cookie handling will not only affect your usage but EVERY user of cookies.\r\n * Example, if you are using a shared component that is also using Application Insights you will affect their cookie handling.\r\n * @param logger - The DiagnosticLogger to use for reporting errors.\r\n */\r\nfunction _gblCookieMgr(config, logger) {\r\n // Stash the global instance against the BaseCookieMgr class\r\n var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];\r\n if (!inst) {\r\n // Note: not using the getSetValue() helper as that would require always creating a temporary cookieMgr\r\n // that ultimately is never used\r\n inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);\r\n _globalCookieConfig[strConfigCookieMgr] = inst;\r\n }\r\n return inst;\r\n}\r\nfunction _isMgrEnabled(cookieMgr) {\r\n if (cookieMgr) {\r\n return cookieMgr.isEnabled();\r\n }\r\n return true;\r\n}\r\nfunction _isIgnoredCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.ignoreCookies)) {\r\n return arrIndexOf(cookieMgrCfg.ignoreCookies, name) !== -1;\r\n }\r\n return false;\r\n}\r\nfunction _isBlockedCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.blockedCookies)) {\r\n if (arrIndexOf(cookieMgrCfg.blockedCookies, name) !== -1) {\r\n return true;\r\n }\r\n }\r\n return _isIgnoredCookie(cookieMgrCfg, name);\r\n}\r\nfunction _isCfgEnabled(rootConfig, cookieMgrConfig) {\r\n var isCfgEnabled = cookieMgrConfig[_DYN_ENABLED /* @min:%2eenabled */];\r\n if (isNullOrUndefined(isCfgEnabled)) {\r\n // Set the enabled from the provided setting or the legacy root values\r\n var cookieEnabled = void 0;\r\n // This field is deprecated and dynamic updates will not be fully supported\r\n if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {\r\n cookieEnabled = !rootConfig[strIsCookieUseDisabled];\r\n }\r\n // If this value is defined it takes precedent over the above\r\n if (!isUndefined(rootConfig[strDisableCookiesUsage])) {\r\n cookieEnabled = !rootConfig[strDisableCookiesUsage];\r\n }\r\n // Not setting the cookieMgrConfig.enabled as that will update (set) the global dynamic config\r\n // So future \"updates\" then may not be as expected\r\n isCfgEnabled = cookieEnabled;\r\n }\r\n return isCfgEnabled;\r\n}\r\n/**\r\n * Helper to return the ICookieMgr from the core (if not null/undefined) or a default implementation\r\n * associated with the configuration or a legacy default.\r\n * @param core\r\n * @param config\r\n * @returns\r\n */\r\nexport function safeGetCookieMgr(core, config) {\r\n var cookieMgr;\r\n if (core) {\r\n // Always returns an instance\r\n cookieMgr = core.getCookieMgr();\r\n }\r\n else if (config) {\r\n var cookieCfg = config.cookieCfg;\r\n if (cookieCfg && cookieCfg[strConfigCookieMgr]) {\r\n cookieMgr = cookieCfg[strConfigCookieMgr];\r\n }\r\n else {\r\n cookieMgr = createCookieMgr(config);\r\n }\r\n }\r\n if (!cookieMgr) {\r\n // Get or initialize the default global (legacy) cookie manager if we couldn't find one\r\n cookieMgr = _gblCookieMgr(config, (core || {})[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return cookieMgr;\r\n}\r\nexport function createCookieMgr(rootConfig, logger) {\r\n var _a;\r\n var cookieMgrConfig;\r\n var _path;\r\n var _domain;\r\n var unloadHandler;\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n var _enabled;\r\n var _getCookieFn;\r\n var _setCookieFn;\r\n var _delCookieFn;\r\n // Make sure the root config is dynamic as it may be the global config\r\n rootConfig = createDynamicConfig(rootConfig || _globalCookieConfig, null, logger).cfg;\r\n // Will get recalled if the referenced configuration is changed\r\n unloadHandler = onConfigChange(rootConfig, function (details) {\r\n // Make sure the root config has all of the the defaults to the root config to ensure they are dynamic\r\n details[_DYN_SET_DF /* @min:%2esetDf */](details.cfg, rootDefaultConfig);\r\n // Create and apply the defaults to the cookieCfg element\r\n cookieMgrConfig = details.ref(details.cfg, \"cookieCfg\"); // details.setDf(details.cfg.cookieCfg, defaultConfig);\r\n _path = cookieMgrConfig[STR_PATH /* @min:%2epath */] || \"/\";\r\n _domain = cookieMgrConfig[STR_DOMAIN /* @min:%2edomain */];\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n _enabled = _isCfgEnabled(rootConfig, cookieMgrConfig) !== false;\r\n _getCookieFn = cookieMgrConfig.getCookie || _getCookieValue;\r\n _setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n _delCookieFn = cookieMgrConfig.delCookie || _setCookieValue;\r\n }, logger);\r\n var cookieMgr = (_a = {\r\n isEnabled: function () {\r\n var enabled = _isCfgEnabled(rootConfig, cookieMgrConfig) !== false && _enabled && areCookiesSupported(logger);\r\n // Using an indirect lookup for any global cookie manager to support tree shaking for SDK's\r\n // that don't use the \"applicationinsights-core\" version of the default cookie function\r\n var gblManager = _globalCookieConfig[strConfigCookieMgr];\r\n if (enabled && gblManager && cookieMgr !== gblManager) {\r\n // Make sure the GlobalCookie Manager instance (if not this instance) is also enabled.\r\n // As the global (deprecated) functions may have been called (for backward compatibility)\r\n enabled = _isMgrEnabled(gblManager);\r\n }\r\n return enabled;\r\n },\r\n setEnabled: function (value) {\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n _enabled = value !== false;\r\n cookieMgrConfig[_DYN_ENABLED /* @min:%2eenabled */] = value;\r\n },\r\n set: function (name, value, maxAgeSec, domain, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr) && !_isBlockedCookie(cookieMgrConfig, name)) {\r\n var values = {};\r\n var theValue = strTrim(value || STR_EMPTY);\r\n var idx = strIndexOf(theValue, \";\");\r\n if (idx !== -1) {\r\n theValue = strTrim(strLeft(value, idx));\r\n values = _extractParts(strSubstring(value, idx + 1));\r\n }\r\n // Only update domain if not already present (isUndefined) and the value is truthy (not null, undefined or empty string)\r\n setValue(values, STR_DOMAIN, domain || _domain, isTruthy, isUndefined);\r\n if (!isNullOrUndefined(maxAgeSec)) {\r\n var _isIE = isIE();\r\n if (isUndefined(values[strExpires])) {\r\n var nowMs = utcNow();\r\n // Only add expires if not already present\r\n var expireMs = nowMs + (maxAgeSec * 1000);\r\n // Sanity check, if zero or -ve then ignore\r\n if (expireMs > 0) {\r\n var expiry = new Date();\r\n expiry.setTime(expireMs);\r\n setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || STR_EMPTY, isTruthy);\r\n }\r\n }\r\n if (!_isIE) {\r\n // Only replace if not already present\r\n setValue(values, \"max-age\", STR_EMPTY + maxAgeSec, null, isUndefined);\r\n }\r\n }\r\n var location_1 = getLocation();\r\n if (location_1 && location_1[_DYN_PROTOCOL /* @min:%2eprotocol */] === \"https:\") {\r\n setValue(values, \"secure\", null, null, isUndefined);\r\n // Only set same site if not also secure\r\n if (_allowUaSameSite === null) {\r\n _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {})[_DYN_USER_AGENT /* @min:%2euserAgent */]);\r\n }\r\n if (_allowUaSameSite) {\r\n setValue(values, \"SameSite\", \"None\", null, isUndefined);\r\n }\r\n }\r\n setValue(values, STR_PATH, path || _path, null, isUndefined);\r\n //let setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n _setCookieFn(name, _formatCookieValue(theValue, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n get: function (name) {\r\n var value = STR_EMPTY;\r\n if (_isMgrEnabled(cookieMgr) && !_isIgnoredCookie(cookieMgrConfig, name)) {\r\n value = _getCookieFn(name);\r\n }\r\n return value;\r\n },\r\n del: function (name, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n // Only remove the cookie if the manager and cookie support has not been disabled\r\n result = cookieMgr.purge(name, path);\r\n }\r\n return result;\r\n },\r\n purge: function (name, path) {\r\n var _a;\r\n var result = false;\r\n if (areCookiesSupported(logger)) {\r\n // Setting the expiration date in the past immediately removes the cookie\r\n var values = (_a = {},\r\n _a[STR_PATH] = path ? path : \"/\",\r\n _a[strExpires] = \"Thu, 01 Jan 1970 00:00:01 GMT\",\r\n _a);\r\n if (!isIE()) {\r\n // Set max age to expire now\r\n values[\"max-age\"] = \"0\";\r\n }\r\n // let delCookie = cookieMgrConfig.delCookie || _setCookieValue;\r\n _delCookieFn(name, _formatCookieValue(STR_EMPTY, values));\r\n result = true;\r\n }\r\n return result;\r\n }\r\n },\r\n _a[_DYN_UNLOAD /* @min:unload */] = function (isAsync) {\r\n unloadHandler && unloadHandler.rm();\r\n unloadHandler = null;\r\n },\r\n _a);\r\n // Associated this cookie manager with the config\r\n cookieMgr[strConfigCookieMgr] = cookieMgr;\r\n return cookieMgr;\r\n}\r\n/*\r\n* Helper method to tell if document.cookie object is supported by the runtime\r\n*/\r\nexport function areCookiesSupported(logger) {\r\n if (_supportsCookies === null) {\r\n _supportsCookies = false;\r\n !_doc && _getDoc();\r\n try {\r\n var doc = _doc.v || {};\r\n _supportsCookies = doc[strCookie] !== undefined;\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 68 /* _eInternalMessageId.CannotAccessCookie */, \"Cannot access document.cookie - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return _supportsCookies;\r\n}\r\nfunction _extractParts(theValue) {\r\n var values = {};\r\n if (theValue && theValue[_DYN_LENGTH /* @min:%2elength */]) {\r\n var parts = strTrim(theValue)[_DYN_SPLIT /* @min:%2esplit */](\";\");\r\n arrForEach(parts, function (thePart) {\r\n thePart = strTrim(thePart || STR_EMPTY);\r\n if (thePart) {\r\n var idx = strIndexOf(thePart, \"=\");\r\n if (idx === -1) {\r\n values[thePart] = null;\r\n }\r\n else {\r\n values[strTrim(strLeft(thePart, idx))] = strTrim(strSubstring(thePart, idx + 1));\r\n }\r\n }\r\n });\r\n }\r\n return values;\r\n}\r\nfunction _formatDate(theDate, func) {\r\n if (isFunction(theDate[func])) {\r\n return theDate[func]();\r\n }\r\n return null;\r\n}\r\nfunction _formatCookieValue(value, values) {\r\n var cookieValue = value || STR_EMPTY;\r\n objForEachKey(values, function (name, theValue) {\r\n cookieValue += \"; \" + name + (!isNullOrUndefined(theValue) ? \"=\" + theValue : STR_EMPTY);\r\n });\r\n return cookieValue;\r\n}\r\nfunction _getCookieValue(name) {\r\n var cookieValue = STR_EMPTY;\r\n !_doc && _getDoc();\r\n if (_doc.v) {\r\n var theCookie = _doc.v[strCookie] || STR_EMPTY;\r\n if (_parsedCookieValue !== theCookie) {\r\n _cookieCache = _extractParts(theCookie);\r\n _parsedCookieValue = theCookie;\r\n }\r\n cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);\r\n }\r\n return cookieValue;\r\n}\r\nfunction _setCookieValue(name, cookieValue) {\r\n !_doc && _getDoc();\r\n if (_doc.v) {\r\n _doc.v[strCookie] = name + \"=\" + cookieValue;\r\n }\r\n}\r\nexport function uaDisallowsSameSiteNone(userAgent) {\r\n if (!isString(userAgent)) {\r\n return false;\r\n }\r\n // Cover all iOS based browsers here. This includes:\r\n // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n if (strContains(userAgent, \"CPU iPhone OS 12\") || strContains(userAgent, \"iPad; CPU OS 12\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n // - Safari on Mac OS X\r\n // This does not include:\r\n // - Internal browser on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strContains(userAgent, \"Version/\") && strContains(userAgent, \"Safari\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n // - Internal browser on Mac OS X\r\n // This does not include:\r\n // - Safari on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strEndsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n return true;\r\n }\r\n // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n if (strContains(userAgent, \"Chrome/5\") || strContains(userAgent, \"Chrome/6\")) {\r\n return true;\r\n }\r\n // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n // that don't specify their Chrome version as lacking support for SameSite=None.\r\n if (strContains(userAgent, \"UnrealEngine\") && !strContains(userAgent, \"Chrome\")) {\r\n return true;\r\n }\r\n // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n // NB: this rule isn't complete - you need regex to make a complete rule.\r\n // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n if (strContains(userAgent, \"UCBrowser/12\") || strContains(userAgent, \"UCBrowser/11\")) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, arrIndexOf, getDocument, getWindow, isArray, objForEachKey, objKeys } from \"@nevware21/ts-utils\";\r\nimport { _DYN_HANDLER, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE, _DYN_SPLICE, _DYN_SPLIT, _DYN_TYPE } from \"../__DynamicConstants\";\r\nimport { createElmNodeData, createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// Added to help with minfication\r\nvar strOnPrefix = \"on\";\r\nvar strAttachEvent = \"attachEvent\";\r\nvar strAddEventHelper = \"addEventListener\";\r\nvar strDetachEvent = \"detachEvent\";\r\nvar strRemoveEventListener = \"removeEventListener\";\r\nvar strEvents = \"events\";\r\nvar strVisibilityChangeEvt = \"visibilitychange\";\r\nvar strPageHide = \"pagehide\";\r\nvar strPageShow = \"pageshow\";\r\nvar strUnload = \"unload\";\r\nvar strBeforeUnload = \"beforeunload\";\r\nvar strPageHideNamespace = createUniqueNamespace(\"aiEvtPageHide\");\r\nvar strPageShowNamespace = createUniqueNamespace(\"aiEvtPageShow\");\r\nvar rRemoveEmptyNs = /\\.[\\.]+/g;\r\nvar rRemoveTrailingEmptyNs = /[\\.]+$/;\r\nvar _guid = 1;\r\nvar elmNodeData = createElmNodeData(\"events\");\r\nvar eventNamespace = /^([^.]*)(?:\\.(.+)|)/;\r\nfunction _normalizeNamespace(name) {\r\n if (name && name[_DYN_REPLACE /* @min:%2ereplace */]) {\r\n return name[_DYN_REPLACE /* @min:%2ereplace */](/^[\\s\\.]+|(?=[\\s\\.])[\\.\\s]+$/g, STR_EMPTY);\r\n }\r\n return name;\r\n}\r\nfunction _getEvtNamespace(eventName, evtNamespace) {\r\n var _a;\r\n if (evtNamespace) {\r\n var theNamespace_1 = STR_EMPTY;\r\n if (isArray(evtNamespace)) {\r\n theNamespace_1 = STR_EMPTY;\r\n arrForEach(evtNamespace, function (name) {\r\n name = _normalizeNamespace(name);\r\n if (name) {\r\n if (name[0] !== \".\") {\r\n name = \".\" + name;\r\n }\r\n theNamespace_1 += name;\r\n }\r\n });\r\n }\r\n else {\r\n theNamespace_1 = _normalizeNamespace(evtNamespace);\r\n }\r\n if (theNamespace_1) {\r\n if (theNamespace_1[0] !== \".\") {\r\n theNamespace_1 = \".\" + theNamespace_1;\r\n }\r\n // We may only have the namespace and not an eventName\r\n eventName = (eventName || STR_EMPTY) + theNamespace_1;\r\n }\r\n }\r\n var parsedEvent = (eventNamespace.exec(eventName || STR_EMPTY) || []);\r\n return _a = {},\r\n _a[_DYN_TYPE /* @min:type */] = parsedEvent[1],\r\n _a.ns = ((parsedEvent[2] || STR_EMPTY).replace(rRemoveEmptyNs, \".\").replace(rRemoveTrailingEmptyNs, STR_EMPTY)[_DYN_SPLIT /* @min:%2esplit */](\".\").sort()).join(\".\"),\r\n _a;\r\n}\r\n/**\r\n * Get all of the registered events on the target object, this is primarily used for testing cleanup but may also be used by\r\n * applications to remove their own events\r\n * @param target - The EventTarget that has registered events\r\n * @param eventName - [Optional] The name of the event to return the registered handlers and full name (with namespaces)\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n */\r\nexport function __getRegisteredEvents(target, eventName, evtNamespace) {\r\n var theEvents = [];\r\n var eventCache = elmNodeData.get(target, strEvents, {}, false);\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n objForEachKey(eventCache, function (evtType, registeredEvents) {\r\n arrForEach(registeredEvents, function (value) {\r\n var _a;\r\n if (!evtName[_DYN_TYPE /* @min:%2etype */] || evtName[_DYN_TYPE /* @min:%2etype */] === value.evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (!evtName.ns || evtName.ns === evtName.ns) {\r\n theEvents[_DYN_PUSH /* @min:%2epush */]((_a = {},\r\n _a[_DYN_NAME /* @min:name */] = value.evtName[_DYN_TYPE /* @min:%2etype */] + (value.evtName.ns ? \".\" + value.evtName.ns : STR_EMPTY),\r\n _a.handler = value[_DYN_HANDLER /* @min:%2ehandler */],\r\n _a));\r\n }\r\n }\r\n });\r\n });\r\n return theEvents;\r\n}\r\n// Exported for internal unit testing only\r\nfunction _getRegisteredEvents(target, evtName, addDefault) {\r\n if (addDefault === void 0) { addDefault = true; }\r\n var aiEvts = elmNodeData.get(target, strEvents, {}, addDefault);\r\n var registeredEvents = aiEvts[evtName];\r\n if (!registeredEvents) {\r\n registeredEvents = aiEvts[evtName] = [];\r\n }\r\n return registeredEvents;\r\n}\r\nfunction _doDetach(obj, evtName, handlerRef, useCapture) {\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (obj[strRemoveEventListener]) {\r\n obj[strRemoveEventListener](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n }\r\n else if (obj[strDetachEvent]) {\r\n obj[strDetachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n }\r\n }\r\n}\r\nfunction _doAttach(obj, evtName, handlerRef, useCapture) {\r\n var result = false;\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */] && handlerRef) {\r\n if (obj[strAddEventHelper]) {\r\n // all browsers except IE before version 9\r\n obj[strAddEventHelper](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n result = true;\r\n }\r\n else if (obj[strAttachEvent]) {\r\n // IE before version 9\r\n obj[strAttachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n result = true;\r\n }\r\n }\r\n return result;\r\n}\r\nfunction _doUnregister(target, events, evtName, unRegFn) {\r\n var idx = events[_DYN_LENGTH /* @min:%2elength */];\r\n while (idx--) {\r\n var theEvent = events[idx];\r\n if (theEvent) {\r\n if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {\r\n if (!unRegFn || unRegFn(theEvent)) {\r\n _doDetach(target, theEvent.evtName, theEvent[_DYN_HANDLER /* @min:%2ehandler */], theEvent.capture);\r\n // Remove the registered event\r\n events[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction _unregisterEvents(target, evtName, unRegFn) {\r\n if (evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n _doUnregister(target, _getRegisteredEvents(target, evtName[_DYN_TYPE /* @min:%2etype */]), evtName, unRegFn);\r\n }\r\n else {\r\n var eventCache = elmNodeData.get(target, strEvents, {});\r\n objForEachKey(eventCache, function (evtType, events) {\r\n _doUnregister(target, events, evtName, unRegFn);\r\n });\r\n // Cleanup\r\n if (objKeys(eventCache)[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n elmNodeData.kill(target, strEvents);\r\n }\r\n }\r\n}\r\nexport function mergeEvtNamespace(theNamespace, namespaces) {\r\n var newNamespaces;\r\n if (namespaces) {\r\n if (isArray(namespaces)) {\r\n newNamespaces = [theNamespace].concat(namespaces);\r\n }\r\n else {\r\n newNamespaces = [theNamespace, namespaces];\r\n }\r\n // resort the namespaces so they are always in order\r\n newNamespaces = (_getEvtNamespace(\"xx\", newNamespaces).ns)[_DYN_SPLIT /* @min:%2esplit */](\".\");\r\n }\r\n else {\r\n newNamespaces = theNamespace;\r\n }\r\n return newNamespaces;\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj - Object to add the event too.\r\n * @param eventName - String that specifies any of the standard DHTML Events without \"on\" prefix, if may also include an optional (dot \".\" prefixed)\r\n * namespaces \"click\" \"click.mynamespace\" in addition to specific namespaces.\r\n * @param handlerRef - Pointer that specifies the function to call when event fires\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture - [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n var _a;\r\n if (useCapture === void 0) { useCapture = false; }\r\n var result = false;\r\n if (target) {\r\n try {\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n result = _doAttach(target, evtName, handlerRef, useCapture);\r\n if (result && elmNodeData.accept(target)) {\r\n var registeredEvent = (_a = {\r\n guid: _guid++,\r\n evtName: evtName\r\n },\r\n _a[_DYN_HANDLER /* @min:handler */] = handlerRef,\r\n _a.capture = useCapture,\r\n _a);\r\n _getRegisteredEvents(target, evtName.type)[_DYN_PUSH /* @min:%2epush */](registeredEvent);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object - to remove the event from\r\n * @param eventName - {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef - {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture - [Optional] Defaults to false\r\n */\r\nexport function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n if (target) {\r\n try {\r\n var evtName_1 = _getEvtNamespace(eventName, evtNamespace);\r\n var found_1 = false;\r\n _unregisterEvents(target, evtName_1, function (regEvent) {\r\n if ((evtName_1.ns && !handlerRef) || regEvent[_DYN_HANDLER /* @min:%2ehandler */] === handlerRef) {\r\n found_1 = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (!found_1) {\r\n // fallback to try and remove as requested\r\n _doDetach(target, evtName_1, handlerRef, useCapture);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj - Object to add the event too.\r\n * @param eventNameWithoutOn - String that specifies any of the standard DHTML Events without \"on\" prefix and optional (dot \".\" prefixed) namespaces \"click\" \"click.mynamespace\".\r\n * @param handlerRef - Pointer that specifies the function to call when event fires\r\n * @param useCapture - [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object - to remove the event from\r\n * @param eventNameWithoutOn - {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef - {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param useCapture - [Optional] Defaults to false\r\n */\r\nexport function detachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n eventOff(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName - {string} - The name of the event\r\n * @param callback - {any} - The callback function that needs to be executed for the given event\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\nexport function addEventHandler(eventName, callback, evtNamespace) {\r\n var result = false;\r\n var w = getWindow();\r\n if (w) {\r\n result = eventOn(w, eventName, callback, evtNamespace);\r\n result = eventOn(w[\"body\"], eventName, callback, evtNamespace) || result;\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n result = eventOn(doc, eventName, callback, evtNamespace) || result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Trys to remove event handler(s) for the specified event/namespace to the window, body and document\r\n * @param eventName - {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param callback - {any} - - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventHandler(eventName, callback, evtNamespace) {\r\n var w = getWindow();\r\n if (w) {\r\n eventOff(w, eventName, callback, evtNamespace);\r\n eventOff(w[\"body\"], eventName, callback, evtNamespace);\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n eventOff(doc, eventName, callback, evtNamespace);\r\n }\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events - An string array of event names to bind the listener to\r\n * @param listener - The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nfunction _addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && events[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n if (!excludeEvents || arrIndexOf(excludeEvents, name) === -1) {\r\n added = addEventHandler(name, listener, evtNamespace) || added;\r\n }\r\n }\r\n });\r\n }\r\n return added;\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events - An string array of event names to bind the listener to\r\n * @param listener - The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && isArray(events)) {\r\n added = _addEventListeners(events, listener, excludeEvents, evtNamespace);\r\n if (!added && excludeEvents && excludeEvents[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Failed to add any listeners and we excluded some, so just attempt to add the excluded events\r\n added = _addEventListeners(events, listener, null, evtNamespace);\r\n }\r\n }\r\n return added;\r\n}\r\n/**\r\n * Remove the listener from the array of events\r\n * @param events - An string array of event names to bind the listener to\r\n * @param listener - The event callback to call when the event is triggered\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventListeners(events, listener, evtNamespace) {\r\n if (events && isArray(events)) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n removeEventHandler(name, listener, evtNamespace);\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Listen to the 'beforeunload', 'unload' and 'pagehide' events which indicates a page unload is occurring,\r\n * this does NOT listen to the 'visibilitychange' event as while it does indicate that the page is being hidden\r\n * it does not *necessarily* mean that the page is being completely unloaded, it can mean that the user is\r\n * just navigating to a different Tab and may come back (without unloading the page). As such you may also\r\n * need to listen to the 'addPageHideEventListener' and 'addPageShowEventListener' events.\r\n * @param listener - The event callback to call when a page unload event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked, unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageUnloadEventListener(listener, excludeEvents, evtNamespace) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n return addEventListeners([strBeforeUnload, strUnload, strPageHide], listener, excludeEvents, evtNamespace);\r\n}\r\n/**\r\n * Remove any matching 'beforeunload', 'unload' and 'pagehide' events that may have been added via addEventListener,\r\n * addEventListeners, addPageUnloadEventListener or addPageHideEventListener.\r\n * @param listener - The specific event callback to to be removed\r\n * @param evtNamespace - [Optional] Namespace(s) uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function removePageUnloadEventListener(listener, evtNamespace) {\r\n removeEventListeners([strBeforeUnload, strUnload, strPageHide], listener, evtNamespace);\r\n}\r\n/**\r\n * Listen to the pagehide and visibility changing to 'hidden' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page hide event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] A Namespace to append to the event listeners so they can be uniquely identified and removed\r\n * based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageHideEventListener\" can remove these events.\r\n * Suggestion: pass as true if you are also calling addPageUnloadEventListener as that also hooks pagehide\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageHideEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"hidden\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n var pageUnloadAdded = _addEventListeners([strPageHide], listener, excludeEvents, newNamespaces);\r\n if (!excludeEvents || arrIndexOf(excludeEvents, strVisibilityChangeEvt) === -1) {\r\n pageUnloadAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageUnloadAdded;\r\n }\r\n if (!pageUnloadAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageUnloadAdded = addPageHideEventListener(listener, null, evtNamespace);\r\n }\r\n return pageUnloadAdded;\r\n}\r\n/**\r\n * Removes the pageHide event listeners added by addPageHideEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageHideEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageHideEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n removeEventListeners([strPageHide], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n/**\r\n * Listen to the pageshow and visibility changing to 'visible' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page is show event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional/Recommended] A Namespace to append to the event listeners so they can be uniquely\r\n * identified and removed based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageShowEventListener\" can remove these events.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageShowEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"visible\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n var pageShowAdded = _addEventListeners([strPageShow], listener, excludeEvents, newNamespaces);\r\n pageShowAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageShowAdded;\r\n if (!pageShowAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageShowAdded = addPageShowEventListener(listener, null, evtNamespace);\r\n }\r\n return pageShowAdded;\r\n}\r\n/**\r\n * Removes the pageShow event listeners added by addPageShowEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageShowEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageShowEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n removeEventListeners([strPageShow], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strShimFunction, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { getInst, objHasOwnProperty } from \"@nevware21/ts-utils\";\r\nimport { _DYN_APPLY, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { _getObjProto } from \"./HelperFuncs\";\r\nvar aiInstrumentHooks = \"_aiHooks\";\r\nvar cbNames = [\r\n \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n/** @ignore */\r\nfunction _arrLoop(arr, fn) {\r\n if (arr) {\r\n for (var lp = 0; lp < arr[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n if (fn(arr[lp], lp)) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @ignore */\r\nfunction _doCallbacks(hooks, callDetails, cbArgs, hookCtx, type) {\r\n if (type >= 0 /* CallbackType.Request */ && type <= 2 /* CallbackType.HookError */) {\r\n _arrLoop(hooks, function (hook, idx) {\r\n var cbks = hook.cbks;\r\n var cb = cbks[cbNames[type]];\r\n if (cb) {\r\n // Set the specific hook context implementation using a lazy creation pattern\r\n callDetails.ctx = function () {\r\n var ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n return ctx;\r\n };\r\n try {\r\n cb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n catch (err) {\r\n var orgEx = callDetails.err;\r\n try {\r\n // Report Hook error via the callback\r\n var hookErrorCb = cbks[cbNames[2 /* CallbackType.HookError */]];\r\n if (hookErrorCb) {\r\n callDetails.err = err;\r\n hookErrorCb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n }\r\n catch (e) {\r\n // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n }\r\n finally {\r\n // restore the original exception (if any)\r\n callDetails.err = orgEx;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook) {\r\n // Define a temporary method that queues-up a the real method call\r\n return function () {\r\n var _a;\r\n var funcThis = this;\r\n // Capture the original arguments passed to the method\r\n var orgArgs = arguments;\r\n var hooks = aiHook.h;\r\n var funcArgs = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = aiHook.n,\r\n _a.inst = funcThis,\r\n _a.ctx = null,\r\n _a.set = _replaceArg,\r\n _a);\r\n var hookCtx = [];\r\n var cbArgs = _createArgs([funcArgs], orgArgs);\r\n funcArgs.evt = getInst(\"event\");\r\n function _createArgs(target, theArgs) {\r\n _arrLoop(theArgs, function (arg) {\r\n target[_DYN_PUSH /* @min:%2epush */](arg);\r\n });\r\n return target;\r\n }\r\n function _replaceArg(idx, value) {\r\n orgArgs = _createArgs([], orgArgs);\r\n orgArgs[idx] = value;\r\n cbArgs = _createArgs([funcArgs], orgArgs);\r\n }\r\n // Call the pre-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 0 /* CallbackType.Request */);\r\n // Call the original function was called\r\n var theFunc = aiHook.f;\r\n if (theFunc) {\r\n try {\r\n funcArgs.rslt = theFunc[_DYN_APPLY /* @min:%2eapply */](funcThis, orgArgs);\r\n }\r\n catch (err) {\r\n // Report the request callback\r\n funcArgs.err = err;\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 3 /* CallbackType.FunctionError */);\r\n // rethrow the original exception so anyone listening for it can catch the exception\r\n throw err;\r\n }\r\n }\r\n // Call the post-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 1 /* CallbackType.Response */);\r\n return funcArgs.rslt;\r\n };\r\n}\r\n/** @ignore */\r\nfunction _getOwner(target, name, checkPrototype, checkParentProto) {\r\n var owner = null;\r\n if (target) {\r\n if (objHasOwnProperty(target, name)) {\r\n owner = target;\r\n }\r\n else if (checkPrototype) {\r\n owner = _getOwner(_getObjProto(target), name, checkParentProto, false);\r\n }\r\n }\r\n return owner;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target, funcName, callbacks) {\r\n if (target) {\r\n return InstrumentFunc(target[strShimPrototype], funcName, callbacks, false);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target, funcNames, callbacks) {\r\n if (target) {\r\n return InstrumentFuncs(target[strShimPrototype], funcNames, callbacks, false);\r\n }\r\n return null;\r\n}\r\nfunction _createInstrumentHook(owner, funcName, fn, callbacks) {\r\n var aiHook = fn && fn[aiInstrumentHooks];\r\n if (!aiHook) {\r\n // Only hook the function once\r\n aiHook = {\r\n i: 0,\r\n n: funcName,\r\n f: fn,\r\n h: []\r\n };\r\n // Override (hook) the original function\r\n var newFunc = _createFunctionHook(aiHook);\r\n newFunc[aiInstrumentHooks] = aiHook; // Tag and store the function hooks\r\n owner[funcName] = newFunc;\r\n }\r\n var theHook = {\r\n // tslint:disable:object-literal-shorthand\r\n id: aiHook.i,\r\n cbks: callbacks,\r\n rm: function () {\r\n // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n // with the outer this and not the this for theHook instance.\r\n var id = this.id;\r\n _arrLoop(aiHook.h, function (hook, idx) {\r\n if (hook.id === id) {\r\n aiHook.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return 1;\r\n }\r\n });\r\n }\r\n // tslint:enable:object-literal-shorthand\r\n };\r\n aiHook.i++;\r\n aiHook.h[_DYN_PUSH /* @min:%2epush */](theHook);\r\n return theHook;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentFunc(target, funcName, callbacks, checkPrototype, checkParentProto) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n if (target && funcName && callbacks) {\r\n var owner = _getOwner(target, funcName, checkPrototype, checkParentProto);\r\n if (owner) {\r\n var fn = owner[funcName];\r\n if (typeof fn === strShimFunction) {\r\n return _createInstrumentHook(owner, funcName, fn, callbacks);\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentFuncs(target, funcNames, callbacks, checkPrototype, checkParentProto) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n var hooks = null;\r\n _arrLoop(funcNames, function (funcName) {\r\n var hook = InstrumentFunc(target, funcName, callbacks, checkPrototype, checkParentProto);\r\n if (hook) {\r\n if (!hooks) {\r\n hooks = [];\r\n }\r\n hooks[_DYN_PUSH /* @min:%2epush */](hook);\r\n }\r\n });\r\n return hooks;\r\n}\r\n/**\r\n * Add an instrumentation hook to the provided named \"event\" for the target class / object, this doesn't check whether the\r\n * named \"event\" is in fact a function and just assigns the instrumentation hook to the target[evtName]\r\n * @param target - The target object\r\n * @param evtName - The name of the event\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentEvent(target, evtName, callbacks, checkPrototype, checkParentProto) {\r\n if (target && evtName && callbacks) {\r\n var owner = _getOwner(target, evtName, checkPrototype, checkParentProto) || target;\r\n if (owner) {\r\n return _createInstrumentHook(owner, evtName, owner[evtName], callbacks);\r\n }\r\n }\r\n return null;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 4\r\nexport var _DYN_IS_STORAGE_USE_DISAB0 = \"isStorageUseDisabled\"; // Count: 3\r\nexport var _DYN__ADD_HOOK = \"_addHook\"; // Count: 6\r\nexport var _DYN_CORE = \"core\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 8\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 13\r\nexport var _DYN_TRACK = \"track\"; // Count: 7\r\nexport var _DYN_TRACK_PAGE_VIEW = \"trackPageView\"; // Count: 4\r\nexport var _DYN_TRACK_PREVIOUS_PAGE_1 = \"trackPreviousPageVisit\"; // Count: 3\r\nexport var _DYN_SEND_PAGE_VIEW_INTER2 = \"sendPageViewInternal\"; // Count: 7\r\nexport var _DYN_START_TIME = \"startTime\"; // Count: 6\r\nexport var _DYN_PROPERTIES = \"properties\"; // Count: 3\r\nexport var _DYN_DURATION = \"duration\"; // Count: 12\r\nexport var _DYN_SEND_PAGE_VIEW_PERFO3 = \"sendPageViewPerformanceInternal\"; // Count: 3\r\nexport var _DYN_POPULATE_PAGE_VIEW_P4 = \"populatePageViewPerformanceEvent\"; // Count: 3\r\nexport var _DYN_HREF = \"href\"; // Count: 6\r\nexport var _DYN_SEND_EXCEPTION_INTER5 = \"sendExceptionInternal\"; // Count: 2\r\nexport var _DYN_EXCEPTION = \"exception\"; // Count: 3\r\nexport var _DYN_ERROR = \"error\"; // Count: 5\r\nexport var _DYN__ONERROR = \"_onerror\"; // Count: 3\r\nexport var _DYN_ERROR_SRC = \"errorSrc\"; // Count: 3\r\nexport var _DYN_LINE_NUMBER = \"lineNumber\"; // Count: 5\r\nexport var _DYN_COLUMN_NUMBER = \"columnNumber\"; // Count: 5\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 4\r\nexport var _DYN__CREATE_AUTO_EXCEPTI6 = \"CreateAutoException\"; // Count: 3\r\nexport var _DYN_ADD_TELEMETRY_INITIA7 = \"addTelemetryInitializer\"; // Count: 4\r\nexport var _DYN_OVERRIDE_PAGE_VIEW_D8 = \"overridePageViewDuration\"; // Count: 2\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI9 = \"autoTrackPageVisitTime\"; // Count: 2\r\nexport var _DYN_IS_BROWSER_LINK_TRAC10 = \"isBrowserLinkTrackingEnabled\"; // Count: 2\r\nexport var _DYN_LENGTH = \"length\"; // Count: 5\r\nexport var _DYN_ENABLE_AUTO_ROUTE_TR11 = \"enableAutoRouteTracking\"; // Count: 2\r\nexport var _DYN_ENABLE_UNHANDLED_PRO12 = \"enableUnhandledPromiseRejectionTracking\"; // Count: 2\r\nexport var _DYN_AUTO_UNHANDLED_PROMI13 = \"autoUnhandledPromiseInstrumented\"; // Count: 3\r\nexport var _DYN_GET_ENTRIES_BY_TYPE = \"getEntriesByType\"; // Count: 5\r\nexport var _DYN_IS_PERFORMANCE_TIMIN14 = \"isPerformanceTimingSupported\"; // Count: 2\r\nexport var _DYN_GET_PERFORMANCE_TIMI15 = \"getPerformanceTiming\"; // Count: 2\r\nexport var _DYN_NAVIGATION_START = \"navigationStart\"; // Count: 4\r\nexport var _DYN_SHOULD_COLLECT_DURAT16 = \"shouldCollectDuration\"; // Count: 3\r\nexport var _DYN_IS_PERFORMANCE_TIMIN17 = \"isPerformanceTimingDataReady\"; // Count: 2\r\nexport var _DYN_RESPONSE_START = \"responseStart\"; // Count: 5\r\nexport var _DYN_REQUEST_START = \"requestStart\"; // Count: 3\r\nexport var _DYN_LOAD_EVENT_END = \"loadEventEnd\"; // Count: 4\r\nexport var _DYN_RESPONSE_END = \"responseEnd\"; // Count: 5\r\nexport var _DYN_CONNECT_END = \"connectEnd\"; // Count: 4\r\nexport var _DYN_PAGE_VISIT_START_TIM18 = \"pageVisitStartTime\"; // Count: 2\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, dumpObj, getDocument, getExceptionName, getLocation, isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { getPerformance, isUndefined, isWebWorker, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { _DYN_DURATION, _DYN_GET_ENTRIES_BY_TYPE, _DYN_GET_PERFORMANCE_TIMI15, _DYN_HREF, _DYN_IS_PERFORMANCE_TIMIN14, _DYN_IS_PERFORMANCE_TIMIN17, _DYN_LENGTH, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P4, _DYN_PROPERTIES, _DYN_SEND_PAGE_VIEW_INTER2, _DYN_SEND_PAGE_VIEW_PERFO3, _DYN_SHOULD_COLLECT_DURAT16, _DYN_START_TIME, _DYN_TRACK_PAGE_VIEW } from \"../../__DynamicConstants\";\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n dynamicProto(PageViewManager, this, function (_self) {\r\n var queueTimer = null;\r\n var itemQueue = [];\r\n var pageViewPerformanceSent = false;\r\n var firstPageViewSent = false;\r\n var _logger;\r\n if (core) {\r\n _logger = core.logger;\r\n }\r\n function _flushChannels(isAsync) {\r\n if (core) {\r\n core.flush(isAsync, function () {\r\n // Event flushed, callback added to prevent promise creation\r\n });\r\n }\r\n }\r\n function _startTimer() {\r\n if (!queueTimer) {\r\n queueTimer = scheduleTimeout((function () {\r\n queueTimer = null;\r\n var allItems = itemQueue.slice(0);\r\n var doFlush = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (!item()) {\r\n // Not processed so rescheduled\r\n itemQueue.push(item);\r\n }\r\n else {\r\n doFlush = true;\r\n }\r\n });\r\n if (itemQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _startTimer();\r\n }\r\n if (doFlush) {\r\n // We process at least one item so flush the queue\r\n _flushChannels(true);\r\n }\r\n }), 100);\r\n }\r\n }\r\n function _addQueue(cb) {\r\n itemQueue.push(cb);\r\n _startTimer();\r\n }\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n var name = pageView.name;\r\n if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = pageView.name = doc && doc.title || \"\";\r\n }\r\n var uri = pageView.uri;\r\n if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n var location_1 = getLocation();\r\n uri = pageView.uri = location_1 && location_1[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n if (!firstPageViewSent) {\r\n var perf = getPerformance();\r\n // Access the performance timing object\r\n var navigationEntries = (perf && perf[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */] && perf[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */](\"navigation\"));\r\n // Edge Case the navigation Entries may return an empty array and the timeOrigin is not supported on IE\r\n if (navigationEntries && navigationEntries[0] && !isUndefined(perf.timeOrigin)) {\r\n // Get the value of loadEventStart\r\n var loadEventStart = navigationEntries[0].loadEventStart;\r\n pageView[_DYN_START_TIME /* @min:%2estartTime */] = new Date(perf.timeOrigin + loadEventStart);\r\n }\r\n else {\r\n // calculate the start time manually\r\n var duration_1 = ((customProperties || pageView[_DYN_PROPERTIES /* @min:%2eproperties */] || {})[_DYN_DURATION /* @min:%2eduration */] || 0);\r\n pageView[_DYN_START_TIME /* @min:%2estartTime */] = new Date(new Date().getTime() - duration_1);\r\n }\r\n firstPageViewSent = true;\r\n }\r\n // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n // do not provide the duration, set duration to undefined\r\n // Also this is case 4\r\n if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN14 /* @min:%2eisPerformanceTimingSupported */]()) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n if (!isWebWorker()) {\r\n // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 25 /* _eInternalMessageId.NavigationTimingNotSupported */, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n }\r\n return;\r\n }\r\n var pageViewSent = false;\r\n var customDuration;\r\n // if the performance timing is supported by the browser, calculate the custom duration\r\n var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI15 /* @min:%2egetPerformanceTiming */]()[_DYN_NAVIGATION_START /* @min:%2enavigationStart */];\r\n if (start > 0) {\r\n customDuration = dateTimeUtilsDuration(start, +new Date);\r\n if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT16 /* @min:%2eshouldCollectDuration */](customDuration)) {\r\n customDuration = undefined;\r\n }\r\n }\r\n // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n var duration;\r\n if (!isNullOrUndefined(customProperties) &&\r\n !isNullOrUndefined(customProperties[_DYN_DURATION /* @min:%2eduration */])) {\r\n duration = customProperties[_DYN_DURATION /* @min:%2eduration */];\r\n }\r\n if (overridePageViewDuration || !isNaN(duration)) {\r\n if (isNaN(duration)) {\r\n // case 3\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n }\r\n // case 2\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n pageViewSent = true;\r\n }\r\n // now try to send the page view performance telemetry\r\n var maxDurationLimit = 60000;\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n // Queue the event for processing\r\n _addQueue(function () {\r\n var processed = false;\r\n try {\r\n if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN17 /* @min:%2eisPerformanceTimingDataReady */]()) {\r\n processed = true;\r\n var pageViewPerformance = {\r\n name: name,\r\n uri: uri\r\n };\r\n pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P4 /* @min:%2epopulatePageViewPerformanceEvent */](pageViewPerformance);\r\n if (!pageViewPerformance.isValid && !pageViewSent) {\r\n // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n // That's the best value we can get that makes sense.\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n else {\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = pageViewPerformance.durationMs;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n if (!pageViewPerformanceSent) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_PERFO3 /* @min:%2esendPageViewPerformanceInternal */](pageViewPerformance, customProperties);\r\n pageViewPerformanceSent = true;\r\n }\r\n }\r\n }\r\n else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {\r\n // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n processed = true;\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = maxDurationLimit;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 38 /* _eInternalMessageId.TrackPVFailedCalc */, \"trackPageView failed on page load calculation: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return processed;\r\n });\r\n };\r\n _self.teardown = function (unloadCtx, unloadState) {\r\n if (queueTimer) {\r\n queueTimer.cancel();\r\n queueTimer = null;\r\n var allItems = itemQueue.slice(0);\r\n var doFlush_1 = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (item()) {\r\n doFlush_1 = true;\r\n }\r\n });\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for PageViewManager.prototype.trackPageView.\r\n// Removed Stub for PageViewManager.prototype.teardown.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n PageViewManager.__ieDyn=1;\n\n return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, getNavigator, getPerformance, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIndexOf } from \"@nevware21/ts-utils\";\r\nimport { _DYN_CONNECT_END, _DYN_DURATION, _DYN_GET_ENTRIES_BY_TYPE, _DYN_GET_PERFORMANCE_TIMI15, _DYN_IS_PERFORMANCE_TIMIN14, _DYN_IS_PERFORMANCE_TIMIN17, _DYN_LENGTH, _DYN_LOAD_EVENT_END, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P4, _DYN_REQUEST_START, _DYN_RESPONSE_END, _DYN_RESPONSE_START, _DYN_SHOULD_COLLECT_DURAT16, _DYN_START_TIME } from \"../../__DynamicConstants\";\r\nvar MAX_DURATION_ALLOWED = 3600000; // 1h\r\nvar botAgentNames = [\"googlebot\", \"adsbot-google\", \"apis-google\", \"mediapartners-google\"];\r\nfunction _isPerformanceTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && !!perf.timing;\r\n}\r\nfunction _isPerformanceNavigationTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\")[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n}\r\nfunction _isPerformanceTimingDataReady() {\r\n var perf = getPerformance();\r\n var timing = perf ? perf.timing : 0;\r\n return timing\r\n && timing.domainLookupStart > 0\r\n && timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */] > 0\r\n && timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */] > 0\r\n && timing[_DYN_REQUEST_START /* @min:%2erequestStart */] > 0\r\n && timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */] > 0\r\n && timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */] > 0\r\n && timing[_DYN_CONNECT_END /* @min:%2econnectEnd */] > 0\r\n && timing.domLoading > 0;\r\n}\r\nfunction _getPerformanceTiming() {\r\n if (_isPerformanceTimingSupported()) {\r\n return getPerformance().timing;\r\n }\r\n return null;\r\n}\r\nfunction _getPerformanceNavigationTiming() {\r\n if (_isPerformanceNavigationTimingSupported()) {\r\n return getPerformance()[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */](\"navigation\")[0];\r\n }\r\n return null;\r\n}\r\n/**\r\n* This method tells if given durations should be excluded from collection.\r\n*/\r\nfunction _shouldCollectDuration() {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n var _navigator = getNavigator() || {};\r\n // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n var userAgent = _navigator.userAgent;\r\n var isGoogleBot = false;\r\n if (userAgent) {\r\n for (var i = 0; i < botAgentNames[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n isGoogleBot = isGoogleBot || strIndexOf(userAgent.toLowerCase(), botAgentNames[i]) !== -1;\r\n }\r\n }\r\n if (isGoogleBot) {\r\n // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n return false;\r\n }\r\n else {\r\n // for other page views, don't report if it's outside of a reasonable range\r\n for (var i = 0; i < durations[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (durations[i] < 0 || durations[i] >= MAX_DURATION_ALLOWED) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n function PageViewPerformanceManager(core) {\r\n var _logger = safeGetLogger(core);\r\n dynamicProto(PageViewPerformanceManager, this, function (_self) {\r\n _self[_DYN_POPULATE_PAGE_VIEW_P4 /* @min:%2epopulatePageViewPerformanceEvent */] = function (pageViewPerformance) {\r\n pageViewPerformance.isValid = false;\r\n /*\r\n * http://www.w3.org/TR/navigation-timing/#processing-model\r\n * |-navigationStart\r\n * | |-connectEnd\r\n * | ||-requestStart\r\n * | || |-responseStart\r\n * | || | |-responseEnd\r\n * | || | |\r\n * | || | | |-loadEventEnd\r\n * |---network---||---request---|---response---|---dom---|\r\n * |--------------------------total----------------------|\r\n *\r\n * total = The difference between the load event of the current document is completed and the first recorded timestamp of the performance entry : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#duration\r\n * network = Redirect time + App Cache + DNS lookup time + TCP connection time\r\n * request = Request time : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#request_time\r\n * response = Response time\r\n * dom = Document load time : https://html.spec.whatwg.org/multipage/dom.html#document-load-timing-info\r\n * = Document processing time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#document_processing\r\n * + Loading time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#loading\r\n */\r\n var navigationTiming = _getPerformanceNavigationTiming();\r\n var timing = _getPerformanceTiming();\r\n var total = 0;\r\n var network = 0;\r\n var request = 0;\r\n var response = 0;\r\n var dom = 0;\r\n if (navigationTiming || timing) {\r\n if (navigationTiming) {\r\n total = navigationTiming[_DYN_DURATION /* @min:%2eduration */];\r\n /**\r\n * support both cases:\r\n * - startTime is always zero: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\r\n * - for older browsers where the startTime is not zero\r\n */\r\n network = navigationTiming[_DYN_START_TIME /* @min:%2estartTime */] === 0 ? navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */] : dateTimeUtilsDuration(navigationTiming[_DYN_START_TIME /* @min:%2estartTime */], navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */], navigationTiming[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n else {\r\n total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */], timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n if (total === 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 10 /* _eInternalMessageId.ErrorPVCalc */, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (!_self[_DYN_SHOULD_COLLECT_DURAT16 /* @min:%2eshouldCollectDuration */](total, network, request, response, dom)) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 45 /* _eInternalMessageId.InvalidDurationValue */, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n // in this case, don't report client performance from this page\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 8 /* _eInternalMessageId.ClientPerformanceMathError */, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else {\r\n pageViewPerformance.durationMs = total;\r\n // // convert to timespans\r\n pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(total);\r\n pageViewPerformance.networkConnect = msToTimeSpan(network);\r\n pageViewPerformance.sentRequest = msToTimeSpan(request);\r\n pageViewPerformance.receivedResponse = msToTimeSpan(response);\r\n pageViewPerformance.domProcessing = msToTimeSpan(dom);\r\n pageViewPerformance.isValid = true;\r\n }\r\n }\r\n };\r\n _self[_DYN_GET_PERFORMANCE_TIMI15 /* @min:%2egetPerformanceTiming */] = _getPerformanceTiming;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN14 /* @min:%2eisPerformanceTimingSupported */] = _isPerformanceTimingSupported;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN17 /* @min:%2eisPerformanceTimingDataReady */] = _isPerformanceTimingDataReady;\r\n _self[_DYN_SHOULD_COLLECT_DURAT16 /* @min:%2eshouldCollectDuration */] = _shouldCollectDuration;\r\n });\r\n }\r\n// Removed Stub for PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent.\r\n// Removed Stub for PageViewPerformanceManager.prototype.getPerformanceTiming.\r\n// Removed Stub for PageViewPerformanceManager.prototype.isPerformanceTimingSupported.\r\n// Removed Stub for PageViewPerformanceManager.prototype.isPerformanceTimingDataReady.\r\n// Removed Stub for PageViewPerformanceManager.prototype.shouldCollectDuration.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n PageViewPerformanceManager.__ieDyn=1;\n\n return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* ApplicationInsights.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nvar _a;\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPluginIdentifier, Event as EventTelemetry, Exception, Metric, PageView, PageViewPerformance, PropertiesPluginIdentifier, RemoteDependencyData, Trace, createDistributedTraceContextFromTrace, createDomEvent, createTelemetryItem, dataSanitizeString, isCrossOriginError, strNotSpecified, utlDisableStorage, utlEnableStorage, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentEvent, arrForEach, cfgDfBoolean, cfgDfSet, cfgDfString, cfgDfValidate, createProcessTelemetryContext, createUniqueNamespace, dumpObj, eventOff, eventOn, generateW3CId, getDocument, getExceptionName, getHistory, getLocation, getWindow, hasHistory, hasWindow, isFunction, isNullOrUndefined, isString, isUndefined, mergeEvtNamespace, onConfigChange, safeGetCookieMgr, strUndefined, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { isError, objDeepFreeze, objDefine, scheduleTimeout, strIndexOf } from \"@nevware21/ts-utils\";\r\nimport { _DYN_ADD_TELEMETRY_INITIA7, _DYN_AUTO_TRACK_PAGE_VISI9, _DYN_AUTO_UNHANDLED_PROMI13, _DYN_COLUMN_NUMBER, _DYN_CORE, _DYN_DATA_TYPE, _DYN_DIAG_LOG, _DYN_DURATION, _DYN_ENABLE_AUTO_ROUTE_TR11, _DYN_ENABLE_UNHANDLED_PRO12, _DYN_ENVELOPE_TYPE, _DYN_ERROR, _DYN_ERROR_SRC, _DYN_EXCEPTION, _DYN_HREF, _DYN_IS_BROWSER_LINK_TRAC10, _DYN_IS_STORAGE_USE_DISAB0, _DYN_LENGTH, _DYN_LINE_NUMBER, _DYN_MESSAGE, _DYN_OVERRIDE_PAGE_VIEW_D8, _DYN_POPULATE_PAGE_VIEW_P4, _DYN_PROPERTIES, _DYN_SEND_EXCEPTION_INTER5, _DYN_SEND_PAGE_VIEW_INTER2, _DYN_SEND_PAGE_VIEW_PERFO3, _DYN_START_TIME, _DYN_TO_STRING, _DYN_TRACK, _DYN_TRACK_PAGE_VIEW, _DYN_TRACK_PREVIOUS_PAGE_1, _DYN__ADD_HOOK, _DYN__CREATE_AUTO_EXCEPTI6, _DYN__ONERROR } from \"../__DynamicConstants\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageViewPerformanceManager } from \"./Telemetry/PageViewPerformanceManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { Timing } from \"./Timing\";\r\nvar strEvent = \"event\";\r\nfunction _dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n }\r\n}\r\nfunction _getReason(error) {\r\n if (error && error.reason) {\r\n var reason = error.reason;\r\n if (!isString(reason) && isFunction(reason[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n return reason[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n return dumpObj(reason);\r\n }\r\n // Pass the original object down which will eventually get evaluated for any message or description\r\n return error || \"\";\r\n}\r\nvar MinMilliSeconds = 60000;\r\nvar defaultValues = objDeepFreeze((_a = {\r\n sessionRenewalMs: cfgDfSet(_chkConfigMilliseconds, 30 * 60 * 1000),\r\n sessionExpirationMs: cfgDfSet(_chkConfigMilliseconds, 24 * 60 * 60 * 1000),\r\n disableExceptionTracking: cfgDfBoolean()\r\n },\r\n _a[_DYN_AUTO_TRACK_PAGE_VISI9 /* @min:autoTrackPageVisitTime */] = cfgDfBoolean(),\r\n _a[_DYN_OVERRIDE_PAGE_VIEW_D8 /* @min:overridePageViewDuration */] = cfgDfBoolean(),\r\n _a[_DYN_ENABLE_UNHANDLED_PRO12 /* @min:enableUnhandledPromiseRejectionTracking */] = cfgDfBoolean(),\r\n _a[_DYN_AUTO_UNHANDLED_PROMI13 /* @min:autoUnhandledPromiseInstrumented */] = false,\r\n _a.samplingPercentage = cfgDfValidate(_chkSampling, 100),\r\n _a[_DYN_IS_STORAGE_USE_DISAB0 /* @min:isStorageUseDisabled */] = cfgDfBoolean(),\r\n _a[_DYN_IS_BROWSER_LINK_TRAC10 /* @min:isBrowserLinkTrackingEnabled */] = cfgDfBoolean(),\r\n _a[_DYN_ENABLE_AUTO_ROUTE_TR11 /* @min:enableAutoRouteTracking */] = cfgDfBoolean(),\r\n _a.namePrefix = cfgDfString(),\r\n _a.enableDebug = cfgDfBoolean(),\r\n _a.disableFlushOnBeforeUnload = cfgDfBoolean(),\r\n _a.disableFlushOnUnload = cfgDfBoolean(false, \"disableFlushOnBeforeUnload\"),\r\n _a));\r\nfunction _chkConfigMilliseconds(value, defValue) {\r\n value = value || defValue;\r\n if (value < MinMilliSeconds) {\r\n value = MinMilliSeconds;\r\n }\r\n return +value;\r\n}\r\nfunction _chkSampling(value) {\r\n return !isNaN(value) && value > 0 && value <= 100;\r\n}\r\nfunction _updateStorageUsage(extConfig) {\r\n // Not resetting the storage usage as someone may have manually called utlDisableStorage, so this will only\r\n // reset based if the configuration option is provided\r\n if (!isUndefined(extConfig[_DYN_IS_STORAGE_USE_DISAB0 /* @min:%2eisStorageUseDisabled */])) {\r\n if (extConfig[_DYN_IS_STORAGE_USE_DISAB0 /* @min:%2eisStorageUseDisabled */]) {\r\n utlDisableStorage();\r\n }\r\n else {\r\n utlEnableStorage();\r\n }\r\n }\r\n}\r\nvar AnalyticsPlugin = /** @class */ (function (_super) {\r\n __extends(AnalyticsPlugin, _super);\r\n function AnalyticsPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n _this.priority = 180; // take from reserved priority range 100- 200\r\n _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n var _eventTracking;\r\n var _pageTracking;\r\n var _pageViewManager;\r\n var _pageViewPerformanceManager;\r\n var _pageVisitTimeManager;\r\n var _preInitTelemetryInitializers;\r\n var _isBrowserLinkTrackingEnabled;\r\n var _browserLinkInitializerAdded;\r\n var _enableAutoRouteTracking;\r\n var _historyListenerAdded;\r\n var _disableExceptionTracking;\r\n var _autoExceptionInstrumented;\r\n var _enableUnhandledPromiseRejectionTracking;\r\n var _autoUnhandledPromiseInstrumented;\r\n var _extConfig;\r\n var _autoTrackPageVisitTime;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n var _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var _prevUri; // Assigned in the constructor\r\n var _currUri;\r\n var _evtNamespace;\r\n dynamicProto(AnalyticsPlugin, _this, function (_self, _base) {\r\n var _addHook = _base[_DYN__ADD_HOOK /* @min:%2e_addHook */];\r\n _initDefaults();\r\n _self.getCookieMgr = function () {\r\n return safeGetCookieMgr(_self[_DYN_CORE /* @min:%2ecore */]);\r\n };\r\n _self.processTelemetry = function (env, itemCtx) {\r\n _self.processNext(env, itemCtx);\r\n };\r\n _self.trackEvent = function (event, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(event, EventTelemetry[_DYN_DATA_TYPE /* @min:%2edataType */], EventTelemetry[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n _self.startTrackEvent = function (name) {\r\n try {\r\n _eventTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 29 /* _eInternalMessageId.StartTrackEventFailed */, \"startTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackEvent = function (name, properties, measurements) {\r\n try {\r\n _eventTracking.stop(name, undefined, properties, measurements);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 30 /* _eInternalMessageId.StopTrackEventFailed */, \"stopTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackTrace = function (trace, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(trace, Trace[_DYN_DATA_TYPE /* @min:%2edataType */], Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param metric - input object argument. Only name and average are mandatory.\r\n * @param } customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackMetric = function (metric, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(metric, Metric[_DYN_DATA_TYPE /* @min:%2edataType */], Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 36 /* _eInternalMessageId.TrackMetricFailed */, \"trackMetric failed, metric will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry - The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties - Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n try {\r\n var inPv = pageView || {};\r\n _pageViewManager[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */](inPv, __assign(__assign(__assign({}, inPv.properties), inPv.measurements), customProperties));\r\n if (_autoTrackPageVisitTime) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_1 /* @min:%2etrackPreviousPageVisit */](inPv.name, inPv.uri);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageView failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView - Page view item to be sent\r\n * @param properties - Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties - System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */] = function (pageView, properties, systemProperties) {\r\n var doc = getDocument();\r\n if (doc) {\r\n pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n }\r\n if (isNullOrUndefined(pageView[_DYN_START_TIME /* @min:%2estartTime */])) {\r\n // calculate the start time manually\r\n var duration = ((properties || pageView[_DYN_PROPERTIES /* @min:%2eproperties */] || {})[_DYN_DURATION /* @min:%2eduration */] || 0);\r\n pageView[_DYN_START_TIME /* @min:%2estartTime */] = new Date(new Date().getTime() - duration);\r\n }\r\n var telemetryItem = createTelemetryItem(pageView, PageView[_DYN_DATA_TYPE /* @min:%2edataType */], PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n // reset ajaxes counter\r\n _trackAjaxAttempts = 0;\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO3 /* @min:%2esendPageViewPerformanceInternal */] = function (pageViewPerformance, properties, systemProperties) {\r\n var telemetryItem = createTelemetryItem(pageViewPerformance, PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n var inPvp = pageViewPerformance || {};\r\n try {\r\n _pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P4 /* @min:%2epopulatePageViewPerformanceEvent */](inPvp);\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO3 /* @min:%2esendPageViewPerformanceInternal */](inPvp, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageViewPerformance failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name - A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n _self.startTrackPage = function (name) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n _pageTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 31 /* _eInternalMessageId.StartTrackFailed */, \"startTrackPage failed, page view may not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackPage = function (name, url, properties, measurement) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n if (typeof url !== \"string\") {\r\n var loc = getLocation();\r\n url = loc && loc[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n _pageTracking.stop(name, url, properties, measurement);\r\n if (_autoTrackPageVisitTime) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_1 /* @min:%2etrackPreviousPageVisit */](name, url);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 32 /* _eInternalMessageId.StopTrackFailed */, \"stopTrackPage failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n _self[_DYN_SEND_EXCEPTION_INTER5 /* @min:%2esendExceptionInternal */] = function (exception, customProperties, systemProperties) {\r\n // Adding additional edge cases to handle\r\n // - Not passing anything (null / undefined)\r\n var theError = (exception && (exception[_DYN_EXCEPTION /* @min:%2eexception */] || exception[_DYN_ERROR /* @min:%2eerror */])) ||\r\n // - Handle someone calling trackException based of v1 API where the exception was the Error\r\n isError(exception) && exception ||\r\n // - Handles no error being defined and instead of creating a new Error() instance attempt to map so any stacktrace\r\n // is preserved and does not list ApplicationInsights code as the source\r\n { name: (exception && typeof exception), message: exception || strNotSpecified };\r\n // If no exception object was passed assign to an empty object to avoid internal exceptions\r\n exception = exception || {};\r\n var exceptionPartB = new Exception(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), theError, exception[_DYN_PROPERTIES /* @min:%2eproperties */] || customProperties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n var telemetryItem = createTelemetryItem(exceptionPartB, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param exception - Object which contains exception to be sent\r\n * @param } customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackException = function (exception, customProperties) {\r\n if (exception && !exception[_DYN_EXCEPTION /* @min:%2eexception */] && exception[_DYN_ERROR /* @min:%2eerror */]) {\r\n exception[_DYN_EXCEPTION /* @min:%2eexception */] = exception[_DYN_ERROR /* @min:%2eerror */];\r\n }\r\n try {\r\n _self[_DYN_SEND_EXCEPTION_INTER5 /* @min:%2esendExceptionInternal */](exception, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 35 /* _eInternalMessageId.TrackExceptionFailed */, \"trackException failed, exception will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param exception\r\n * @memberof ApplicationInsights\r\n */\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */] = function (exception) {\r\n var error = exception && exception[_DYN_ERROR /* @min:%2eerror */];\r\n var evt = exception && exception.evt;\r\n try {\r\n if (!evt) {\r\n var _window = getWindow();\r\n if (_window) {\r\n evt = _window[strEvent];\r\n }\r\n }\r\n var url = (exception && exception.url) || (getDocument() || {}).URL;\r\n // If no error source is provided assume the default window.onerror handler\r\n var errorSrc = exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] || \"window.onerror@\" + url + \":\" + (exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0) + \":\" + (exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0);\r\n var properties = {\r\n errorSrc: errorSrc,\r\n url: url,\r\n lineNumber: exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0,\r\n columnNumber: exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0,\r\n message: exception[_DYN_MESSAGE /* @min:%2emessage */]\r\n };\r\n if (isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception[_DYN_ERROR /* @min:%2eerror */])) {\r\n _sendCORSException(Exception[_DYN__CREATE_AUTO_EXCEPTI6 /* @min:%2eCreateAutoException */](\"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\", url, exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0, exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0, error, evt, null, errorSrc), properties);\r\n }\r\n else {\r\n if (!exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */]) {\r\n exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] = errorSrc;\r\n }\r\n _self.trackException({ exception: exception, severityLevel: 3 /* eSeverityLevel.Error */ }, properties);\r\n }\r\n }\r\n catch (e) {\r\n var errorString = error ? (error.name + \", \" + error[_DYN_MESSAGE /* @min:%2emessage */]) : \"null\";\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 11 /* _eInternalMessageId.ExceptionWhileLoggingError */, \"_onError threw exception while logging error, error will not be collected: \"\r\n + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });\r\n }\r\n };\r\n _self[_DYN_ADD_TELEMETRY_INITIA7 /* @min:%2eaddTelemetryInitializer */] = function (telemetryInitializer) {\r\n if (_self[_DYN_CORE /* @min:%2ecore */]) {\r\n // Just add to the core\r\n return _self[_DYN_CORE /* @min:%2ecore */][_DYN_ADD_TELEMETRY_INITIA7 /* @min:%2eaddTelemetryInitializer */](telemetryInitializer);\r\n }\r\n // Handle \"pre-initialization\" telemetry initializers (for backward compatibility)\r\n if (!_preInitTelemetryInitializers) {\r\n _preInitTelemetryInitializers = [];\r\n }\r\n _preInitTelemetryInitializers.push(telemetryInitializer);\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n return;\r\n }\r\n if (isNullOrUndefined(core)) {\r\n throwError(\"Error initializing\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n try {\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());\r\n if (_preInitTelemetryInitializers) {\r\n arrForEach(_preInitTelemetryInitializers, function (initializer) {\r\n core[_DYN_ADD_TELEMETRY_INITIA7 /* @min:%2eaddTelemetryInitializer */](initializer);\r\n });\r\n _preInitTelemetryInitializers = null;\r\n }\r\n _populateDefaults(config);\r\n _pageViewPerformanceManager = new PageViewPerformanceManager(_self[_DYN_CORE /* @min:%2ecore */]);\r\n _pageViewManager = new PageViewManager(_self, _extConfig.overridePageViewDuration, _self[_DYN_CORE /* @min:%2ecore */], _pageViewPerformanceManager);\r\n _pageVisitTimeManager = new PageVisitTimeManager(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n _eventTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackEvent\");\r\n _eventTracking.action =\r\n function (name, url, duration, properties, measurements) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n if (!measurements) {\r\n measurements = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n _self.trackEvent({ name: name, properties: properties, measurements: measurements });\r\n };\r\n // initialize page view timing\r\n _pageTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackPageView\");\r\n _pageTracking.action = function (name, url, duration, properties, measurements) {\r\n // duration must be a custom property in order for the collector to extract it\r\n if (isNullOrUndefined(properties)) {\r\n properties = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var pageViewItem = {\r\n name: name,\r\n uri: url,\r\n properties: properties,\r\n measurements: measurements\r\n };\r\n _self[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageViewItem, properties);\r\n };\r\n if (hasWindow()) {\r\n _updateExceptionTracking();\r\n _updateLocationChange();\r\n }\r\n }\r\n catch (e) {\r\n // resetting the initialized state because of failure\r\n _self.setInitialized(false);\r\n throw e;\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _pageViewManager && _pageViewManager.teardown(unloadCtx, unloadState);\r\n // Just register to remove all events associated with this namespace\r\n eventOff(window, null, null, _evtNamespace);\r\n _initDefaults();\r\n };\r\n function _populateDefaults(config) {\r\n var identifier = _self.identifier;\r\n var core = _self[_DYN_CORE /* @min:%2ecore */];\r\n _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(config, function () {\r\n var ctx = createProcessTelemetryContext(null, config, core);\r\n _extConfig = ctx.getExtCfg(identifier, defaultValues);\r\n _autoTrackPageVisitTime = _extConfig[_DYN_AUTO_TRACK_PAGE_VISI9 /* @min:%2eautoTrackPageVisitTime */];\r\n if (config.storagePrefix) {\r\n utlSetStoragePrefix(config.storagePrefix);\r\n }\r\n _updateStorageUsage(_extConfig);\r\n // _updateBrowserLinkTracking\r\n _isBrowserLinkTrackingEnabled = _extConfig[_DYN_IS_BROWSER_LINK_TRAC10 /* @min:%2eisBrowserLinkTrackingEnabled */];\r\n _addDefaultTelemetryInitializers();\r\n }));\r\n }\r\n /**\r\n * Log a page visit time\r\n * @param pageName Name of page\r\n * @param pageVisitDuration Duration of visit to the page in milliseconds\r\n */\r\n function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {\r\n var properties = { PageName: pageName, PageUrl: pageUrl };\r\n _self.trackMetric({\r\n name: \"PageVisitTime\",\r\n average: pageVisitTime,\r\n max: pageVisitTime,\r\n min: pageVisitTime,\r\n sampleCount: 1\r\n }, properties);\r\n }\r\n function _addDefaultTelemetryInitializers() {\r\n if (!_browserLinkInitializerAdded && _isBrowserLinkTrackingEnabled) {\r\n var browserLinkPaths_1 = [\"/browserLinkSignalR/\", \"/__browserLink/\"];\r\n var dropBrowserLinkRequests = function (envelope) {\r\n if (_isBrowserLinkTrackingEnabled && envelope.baseType === RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n var remoteData = envelope.baseData;\r\n if (remoteData) {\r\n for (var i = 0; i < browserLinkPaths_1[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (remoteData.target && strIndexOf(remoteData.target, browserLinkPaths_1[i]) >= 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](_self[_DYN_ADD_TELEMETRY_INITIA7 /* @min:%2eaddTelemetryInitializer */](dropBrowserLinkRequests));\r\n _browserLinkInitializerAdded = true;\r\n }\r\n }\r\n function _sendCORSException(exception, properties) {\r\n var telemetryItem = createTelemetryItem(exception, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n function _updateExceptionTracking() {\r\n var _window = getWindow();\r\n var locn = getLocation(true);\r\n _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(_extConfig, function () {\r\n _disableExceptionTracking = _extConfig.disableExceptionTracking;\r\n if (!_disableExceptionTracking && !_autoExceptionInstrumented && !_extConfig.autoExceptionInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onerror\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, message, url, lineNumber, columnNumber, error) {\r\n if (!_disableExceptionTracking && callDetails.rslt !== true) {\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI6 /* @min:%2eCreateAutoException */](message, url, lineNumber, columnNumber, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoExceptionInstrumented = true;\r\n }\r\n }));\r\n _addUnhandledPromiseRejectionTracking(_window, locn);\r\n }\r\n function _updateLocationChange() {\r\n var win = getWindow();\r\n var locn = getLocation(true);\r\n _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(_extConfig, function () {\r\n _enableAutoRouteTracking = _extConfig[_DYN_ENABLE_AUTO_ROUTE_TR11 /* @min:%2eenableAutoRouteTracking */] === true;\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n if (win && _enableAutoRouteTracking && !_historyListenerAdded && hasHistory()) {\r\n var _history = getHistory();\r\n if (isFunction(_history.pushState) && isFunction(_history.replaceState) && typeof Event !== strUndefined) {\r\n _addHistoryListener(win, _history, locn);\r\n }\r\n }\r\n }));\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n if (!distributedTraceCtx) {\r\n // Fallback when using an older Core and PropertiesPlugin\r\n var properties = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (properties) {\r\n var context = properties.plugin.context;\r\n if (context) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(context.telemetryTrace);\r\n }\r\n }\r\n }\r\n return distributedTraceCtx;\r\n }\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n function _addHistoryListener(win, history, locn) {\r\n if (_historyListenerAdded) {\r\n return;\r\n }\r\n // Name Prefix is only referenced during the initial initialization and cannot be changed afterwards\r\n var namePrefix = _extConfig.namePrefix || \"\";\r\n function _popstateHandler() {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n function _locationChangeHandler() {\r\n // We always track the changes (if the handler is installed) to handle the feature being disabled between location changes\r\n if (_currUri) {\r\n _prevUri = _currUri;\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n else {\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n if (_enableAutoRouteTracking) {\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n if (distributedTraceCtx) {\r\n distributedTraceCtx.setTraceId(generateW3CId());\r\n var traceLocationName = \"_unknown_\";\r\n if (locn && locn.pathname) {\r\n traceLocationName = locn.pathname + (locn.hash || \"\");\r\n }\r\n // This populates the ai.operation.name which has a maximum size of 1024 so we need to sanitize it\r\n distributedTraceCtx.setName(dataSanitizeString(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), traceLocationName));\r\n }\r\n scheduleTimeout((function (uri) {\r\n // todo: override start time so that it is not affected by autoRoutePVDelay\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */]({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n }).bind(_self, _prevUri), _self.autoRoutePVDelay);\r\n }\r\n }\r\n _addHook(InstrumentEvent(history, \"pushState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"pushState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n _addHook(InstrumentEvent(history, \"replaceState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"replaceState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n eventOn(win, namePrefix + \"popstate\", _popstateHandler, _evtNamespace);\r\n eventOn(win, namePrefix + \"locationchange\", _locationChangeHandler, _evtNamespace);\r\n _historyListenerAdded = true;\r\n }\r\n function _addUnhandledPromiseRejectionTracking(_window, _location) {\r\n _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(_extConfig, function () {\r\n _enableUnhandledPromiseRejectionTracking = _extConfig[_DYN_ENABLE_UNHANDLED_PRO12 /* @min:%2eenableUnhandledPromiseRejectionTracking */] === true;\r\n _autoExceptionInstrumented = _autoExceptionInstrumented || _extConfig[_DYN_AUTO_UNHANDLED_PROMI13 /* @min:%2eautoUnhandledPromiseInstrumented */];\r\n if (_enableUnhandledPromiseRejectionTracking && !_autoUnhandledPromiseInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onunhandledrejection\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, error) {\r\n if (_enableUnhandledPromiseRejectionTracking && callDetails.rslt !== true) { // handled could be typeof function\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI6 /* @min:%2eCreateAutoException */](_getReason(error), _location ? _location[_DYN_HREF /* @min:%2ehref */] : \"\", 0, 0, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _extConfig[_DYN_AUTO_UNHANDLED_PROMI13 /* @min:%2eautoUnhandledPromiseInstrumented */] = _autoUnhandledPromiseInstrumented = true;\r\n }\r\n }));\r\n }\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity - {eLoggingSeverity} - The severity of the log message\r\n * @param msgId - {_eInternalLogMessage} - The log message.\r\n */\r\n function _throwInternal(severity, msgId, msg, properties, isUserAct) {\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]().throwInternal(severity, msgId, msg, properties, isUserAct);\r\n }\r\n function _initDefaults() {\r\n _eventTracking = null;\r\n _pageTracking = null;\r\n _pageViewManager = null;\r\n _pageViewPerformanceManager = null;\r\n _pageVisitTimeManager = null;\r\n _preInitTelemetryInitializers = null;\r\n _isBrowserLinkTrackingEnabled = false;\r\n _browserLinkInitializerAdded = false;\r\n _enableAutoRouteTracking = false;\r\n _historyListenerAdded = false;\r\n _disableExceptionTracking = false;\r\n _autoExceptionInstrumented = false;\r\n _enableUnhandledPromiseRejectionTracking = false;\r\n _autoUnhandledPromiseInstrumented = false;\r\n _autoTrackPageVisitTime = false;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var location = getLocation(true);\r\n _prevUri = location && location[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n _currUri = null;\r\n _evtNamespace = null;\r\n _extConfig = null;\r\n // Define _self.config\r\n objDefine(_self, \"config\", {\r\n g: function () { return _extConfig; }\r\n });\r\n }\r\n // For backward compatibility\r\n objDefine(_self, \"_pageViewManager\", { g: function () { return _pageViewManager; } });\r\n objDefine(_self, \"_pageViewPerformanceManager\", { g: function () { return _pageViewPerformanceManager; } });\r\n objDefine(_self, \"_pageVisitTimeManager\", { g: function () { return _pageVisitTimeManager; } });\r\n objDefine(_self, \"_evtNamespace\", { g: function () { return \".\" + _evtNamespace; } });\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AnalyticsPlugin.prototype.getCookieMgr.\r\n// Removed Stub for AnalyticsPlugin.prototype.processTelemetry.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackTrace.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackMetric.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageView.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewPerformanceInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageViewPerformance.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendExceptionInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackException.\r\n// Removed Stub for AnalyticsPlugin.prototype._onerror.\r\n// Removed Stub for AnalyticsPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for AnalyticsPlugin.prototype.initialize.\r\n AnalyticsPlugin.Version = '3.3.0'; // Not currently used anywhere\r\n return AnalyticsPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { AnalyticsPlugin };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseSessionStorage, utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _warnToConsole, dateNow, dumpObj, getJSON, hasJSON, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { objDefine } from \"@nevware21/ts-utils\";\r\nimport { _DYN_PAGE_VISIT_START_TIM18, _DYN_TRACK_PREVIOUS_PAGE_1 } from \"../../__DynamicConstants\";\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of PageVisitTimeManager\r\n * @param pageVisitTimeTrackingHandler - Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n * @returns {}\r\n */\r\n function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n var prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n dynamicProto(PageVisitTimeManager, this, function (_self) {\r\n _self[_DYN_TRACK_PREVIOUS_PAGE_1 /* @min:%2etrackPreviousPageVisit */] = function (currentPageName, currentPageUrl) {\r\n try {\r\n // Restart timer for new page view\r\n var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);\r\n // If there was a page already being timed, track the visit time for it now.\r\n if (prevPageVisitTimeData) {\r\n pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Auto track page visit time failed, metric will not be collected: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n * @param pageName - Name of page to begin timing visit duration\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n */\r\n function restartPageVisitTimer(pageName, pageUrl) {\r\n var prevPageVisitData = null;\r\n try {\r\n prevPageVisitData = stopPageVisitTimer();\r\n if (utlCanUseSessionStorage()) {\r\n if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {\r\n throwError(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n }\r\n var currPageVisitDataStr = getJSON().stringify(new PageVisitData(pageName, pageUrl));\r\n utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Call to restart failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n /**\r\n * Stops timing of current page, if exists.\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n */\r\n function stopPageVisitTimer() {\r\n var prevPageVisitData = null;\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n // Define end time of page's visit\r\n var pageVisitEndTime = dateNow();\r\n // Try to retrieve page name and start time from session storage\r\n var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);\r\n if (pageVisitDataJsonStr && hasJSON()) {\r\n // if previous page data exists, set end time of visit\r\n prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData[_DYN_PAGE_VISIT_START_TIM18 /* @min:%2epageVisitStartTime */];\r\n // Remove data from storage since we already used it\r\n utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Stop page visit timer failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n // For backward compatibility\r\n objDefine(_self, \"_logger\", { g: function () { return logger; } });\r\n objDefine(_self, \"pageVisitTimeTrackingHandler\", { g: function () { return pageVisitTimeTrackingHandler; } });\r\n });\r\n }\r\n// Removed Stub for PageVisitTimeManager.prototype.trackPreviousPageVisit.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n PageVisitTimeManager.__ieDyn=1;\n\n return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n function PageVisitData(pageName, pageUrl) {\r\n this[_DYN_PAGE_VISIT_START_TIM18 /* @min:%2epageVisitStartTime */] = dateNow();\r\n this.pageName = pageName;\r\n this.pageUrl = pageUrl;\r\n }\r\n return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n function Timing(logger, name) {\r\n var _self = this;\r\n var _events = {};\r\n _self.start = function (name) {\r\n if (typeof _events[name] !== \"undefined\") {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 62 /* _eInternalMessageId.StartCalledMoreThanOnce */, \"start was called more than once for this event without calling stop.\", { name: name, key: name }, true);\r\n }\r\n _events[name] = +new Date;\r\n };\r\n _self.stop = function (name, url, properties, measurements) {\r\n var start = _events[name];\r\n if (isNaN(start)) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 63 /* _eInternalMessageId.StopCalledWithoutStart */, \"stop was called without a corresponding start.\", { name: name, key: name }, true);\r\n }\r\n else {\r\n var end = +new Date;\r\n var duration = dateTimeUtilsDuration(start, end);\r\n _self.action(name, url, duration, properties, measurements);\r\n }\r\n delete _events[name];\r\n _events[name] = undefined;\r\n };\r\n }\r\n return Timing;\r\n}());\r\nexport { Timing };\r\n","/*!\n * NevWare21 Solutions LLC - ts-async, 0.5.2\n * https://github.com/nevware21/ts-async\n * Copyright (c) NevWare21 Solutions LLC and contributors. All rights reserved.\n * Licensed under the MIT license.\n */\nimport { isPromiseLike, objDefineProperties, getDocument, createCachedValue, safe, getInst, dumpObj, arrSlice, objDefineProp, hasSymbol, getKnownSymbol, isFunction, throwTypeError, iterForOf, scheduleTimeout, isNode, getWindow, getGlobal, objDefine, objToString, isUndefined, isArray, arrForEach, isIterable, createCustomError, isNumber, scheduleIdleCallback, utcNow, getLength, isIterator, fnCall, arrIndexOf } from '@nevware21/ts-utils';\n\nvar STR_PROMISE = \"Promise\";\nvar DONE = \"done\";\nvar VALUE = \"value\";\nvar RETURN = \"return\";\nvar REJECTED = \"rejected\";\n\nfunction doAwaitResponse(value, cb) {\n return doAwait(value, function (value) {\n return cb ? cb({\n status: \"fulfilled\",\n rejected: false,\n value: value\n }) : value;\n }, function (reason) {\n return cb ? cb({\n status: REJECTED,\n rejected: true,\n reason: reason\n }) : reason;\n });\n}\nfunction doAwait(value, resolveFn, rejectFn, finallyFn) {\n var result = value;\n try {\n if (isPromiseLike(value)) {\n if (resolveFn || rejectFn) {\n result = value.then(resolveFn, rejectFn);\n }\n }\n else {\n try {\n if (resolveFn) {\n result = resolveFn(value);\n }\n }\n catch (err) {\n if (rejectFn) {\n result = rejectFn(err);\n }\n else {\n throw err;\n }\n }\n }\n }\n finally {\n if (finallyFn) {\n doFinally(result, finallyFn);\n }\n }\n return result;\n}\nfunction doFinally(value, finallyFn) {\n var result = value;\n if (finallyFn) {\n if (isPromiseLike(value)) {\n if (value.finally) {\n result = value.finally(finallyFn);\n }\n else {\n result = value.then(function (value) {\n finallyFn();\n return value;\n }, function (reason) {\n finallyFn();\n throw reason;\n });\n }\n }\n else {\n finallyFn();\n }\n }\n return result;\n}\n\nvar _debugState;\nvar _debugResult;\nvar _debugHandled;\nvar _promiseDebugEnabled = false;\nfunction _addDebugState$1(thePromise, stateFn, resultFn, handledFn) {\n _debugState = _debugState || { toString: function () { return \"[[PromiseState]]\"; } };\n _debugResult = _debugResult || { toString: function () { return \"[[PromiseResult]]\"; } };\n _debugHandled = _debugHandled || { toString: function () { return \"[[PromiseIsHandled]]\"; } };\n var props = {};\n props[_debugState] = { get: stateFn };\n props[_debugResult] = { get: resultFn };\n props[_debugHandled] = { get: handledFn };\n objDefineProperties(thePromise, props);\n}\nfunction setPromiseDebugState(enabled, logger) {\n _promiseDebugEnabled = enabled;\n}\n\nvar STRING_STATES = [\n \"pending\", \"resolving\", \"resolved\", REJECTED\n];\n\nvar DISPATCH_EVENT = \"dispatchEvent\";\nvar _hasInitEvent;\nfunction _hasInitEventFn(doc) {\n var evt;\n if (doc && doc.createEvent) {\n evt = doc.createEvent(\"Event\");\n }\n return (!!evt && evt.initEvent);\n}\nfunction emitEvent(target, evtName, populateEvent, useNewEvent) {\n var doc = getDocument();\n !_hasInitEvent && (_hasInitEvent = createCachedValue(!!safe(_hasInitEventFn, [doc]).v));\n var theEvt = _hasInitEvent.v ? doc.createEvent(\"Event\") : (useNewEvent ? new Event(evtName) : {});\n populateEvent && populateEvent(theEvt);\n if (_hasInitEvent.v) {\n theEvt.initEvent(evtName, false, true);\n }\n if (theEvt && target[DISPATCH_EVENT]) {\n target[DISPATCH_EVENT](theEvt);\n }\n else {\n var handler = target[\"on\" + evtName];\n if (handler) {\n handler(theEvt);\n }\n else {\n var theConsole = getInst(\"console\");\n theConsole && (theConsole[\"error\"] || theConsole[\"log\"])(evtName, dumpObj(theEvt));\n }\n }\n}\n\nvar NODE_UNHANDLED_REJECTION = \"unhandledRejection\";\nvar UNHANDLED_REJECTION = NODE_UNHANDLED_REJECTION.toLowerCase();\nvar _currentPromiseId = [];\nvar _uniquePromiseId = 0;\nvar _unhandledRejectionTimeout = 10;\nvar _aggregationError;\nvar _hasPromiseRejectionEvent;\nfunction dumpFnObj(value) {\n if (isFunction(value)) {\n return value.toString();\n }\n return dumpObj(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createAggregationError(values) {\n !_aggregationError && (_aggregationError = createCachedValue(safe(getInst, [\"AggregationError\"]).v || createCustomError(\"AggregationError\", function (self, args) {\n self.errors = args[0];\n })));\n return new _aggregationError.v(values);\n}\nfunction _createPromise(newPromise, processor, executor) {\n var additionalArgs = arrSlice(arguments, 3);\n var _state = 0 ;\n var _hasResolved = false;\n var _settledValue;\n var _queue = [];\n var _id = _uniquePromiseId++;\n var _parentId = _currentPromiseId.length > 0 ? _currentPromiseId[_currentPromiseId.length - 1] : undefined;\n var _handled = false;\n var _unHandledRejectionHandler = null;\n var _thePromise;\n function _then(onResolved, onRejected) {\n try {\n _currentPromiseId.push(_id);\n _handled = true;\n _unHandledRejectionHandler && _unHandledRejectionHandler.cancel();\n _unHandledRejectionHandler = null;\n var thenPromise = newPromise(function (resolve, reject) {\n _queue.push(function () {\n try {\n var handler = _state === 2 ? onResolved : onRejected;\n var value = isUndefined(handler) ? _settledValue : (isFunction(handler) ? handler(_settledValue) : handler);\n if (isPromiseLike(value)) {\n value.then(resolve, reject);\n }\n else if (handler) {\n resolve(value);\n }\n else if (_state === 3 ) {\n reject(value);\n }\n else {\n resolve(value);\n }\n }\n catch (e) {\n reject(e);\n }\n });\n if (_hasResolved) {\n _processQueue();\n }\n }, additionalArgs);\n return thenPromise;\n }\n finally {\n _currentPromiseId.pop();\n }\n }\n function _catch(onRejected) {\n return _then(undefined, onRejected);\n }\n function _finally(onFinally) {\n var thenFinally = onFinally;\n var catchFinally = onFinally;\n if (isFunction(onFinally)) {\n thenFinally = function (value) {\n onFinally && onFinally();\n return value;\n };\n catchFinally = function (reason) {\n onFinally && onFinally();\n throw reason;\n };\n }\n return _then(thenFinally, catchFinally);\n }\n function _strState() {\n return STRING_STATES[_state];\n }\n function _processQueue() {\n if (_queue.length > 0) {\n var pending = _queue.slice();\n _queue = [];\n _handled = true;\n _unHandledRejectionHandler && _unHandledRejectionHandler.cancel();\n _unHandledRejectionHandler = null;\n processor(pending);\n }\n }\n function _createSettleIfFn(newState, allowState) {\n return function (theValue) {\n if (_state === allowState) {\n if (newState === 2 && isPromiseLike(theValue)) {\n _state = 1 ;\n theValue.then(_createSettleIfFn(2 , 1 ), _createSettleIfFn(3 , 1 ));\n return;\n }\n _state = newState;\n _hasResolved = true;\n _settledValue = theValue;\n _processQueue();\n if (!_handled && newState === 3 && !_unHandledRejectionHandler) {\n _unHandledRejectionHandler = scheduleTimeout(_notifyUnhandledRejection, _unhandledRejectionTimeout);\n }\n }\n };\n }\n function _notifyUnhandledRejection() {\n if (!_handled) {\n _handled = true;\n if (isNode()) {\n process.emit(NODE_UNHANDLED_REJECTION, _settledValue, _thePromise);\n }\n else {\n var gbl = getWindow() || getGlobal();\n !_hasPromiseRejectionEvent && (_hasPromiseRejectionEvent = createCachedValue(safe((getInst), [STR_PROMISE + \"RejectionEvent\"]).v));\n emitEvent(gbl, UNHANDLED_REJECTION, function (theEvt) {\n objDefine(theEvt, \"promise\", { g: function () { return _thePromise; } });\n theEvt.reason = _settledValue;\n return theEvt;\n }, !!_hasPromiseRejectionEvent.v);\n }\n }\n }\n _thePromise = {\n then: _then,\n \"catch\": _catch,\n finally: _finally\n };\n objDefineProp(_thePromise, \"state\", {\n get: _strState\n });\n if (_promiseDebugEnabled) {\n _addDebugState$1(_thePromise, _strState, function () { return objToString(_settledValue); }, function () { return _handled; });\n }\n if (hasSymbol()) {\n _thePromise[getKnownSymbol(11 )] = \"IPromise\";\n }\n function _toString() {\n return \"IPromise\" + (_promiseDebugEnabled ? \"[\" + _id + (!isUndefined(_parentId) ? (\":\" + _parentId) : \"\") + \"]\" : \"\") + \" \" + _strState() + (_hasResolved ? (\" - \" + dumpFnObj(_settledValue)) : \"\") + (\"\");\n }\n _thePromise.toString = _toString;\n (function _initialize() {\n if (!isFunction(executor)) {\n throwTypeError(STR_PROMISE + \": executor is not a function - \" + dumpFnObj(executor));\n }\n var _rejectFn = _createSettleIfFn(3 , 0 );\n try {\n executor.call(_thePromise, _createSettleIfFn(2 , 0 ), _rejectFn);\n }\n catch (e) {\n _rejectFn(e);\n }\n })();\n return _thePromise;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createAllPromise(newPromise) {\n return function (input) {\n var additionalArgs = arrSlice(arguments, 1);\n return newPromise(function (resolve, reject) {\n try {\n var values_1 = [];\n var pending_1 = 1;\n iterForOf(input, function (item, idx) {\n if (item) {\n pending_1++;\n doAwait(item, function (value) {\n values_1[idx] = value;\n if (--pending_1 === 0) {\n resolve(values_1);\n }\n }, reject);\n }\n });\n pending_1--;\n if (pending_1 === 0) {\n resolve(values_1);\n }\n }\n catch (e) {\n reject(e);\n }\n }, additionalArgs);\n };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createResolvedPromise(newPromise) {\n return function (value) {\n var additionalArgs = arrSlice(arguments, 1);\n if (isPromiseLike(value)) {\n return value;\n }\n return newPromise(function (resolve) {\n resolve(value);\n }, additionalArgs);\n };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createRejectedPromise(newPromise) {\n return function (reason) {\n var additionalArgs = arrSlice(arguments, 1);\n return newPromise(function (_resolve, reject) {\n reject(reason);\n }, additionalArgs);\n };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createAllSettledPromise(newPromise) {\n return createCachedValue(function (input) {\n var additionalArgs = arrSlice(arguments, 1);\n return newPromise(function (resolve, reject) {\n var values = [];\n var pending = 1;\n function processItem(item, idx) {\n pending++;\n doAwaitResponse(item, function (value) {\n if (value.rejected) {\n values[idx] = {\n status: REJECTED,\n reason: value.reason\n };\n }\n else {\n values[idx] = {\n status: \"fulfilled\",\n value: value.value\n };\n }\n if (--pending === 0) {\n resolve(values);\n }\n });\n }\n try {\n if (isArray(input)) {\n arrForEach(input, processItem);\n }\n else if (isIterable(input)) {\n iterForOf(input, processItem);\n }\n else {\n throwTypeError(\"Input is not an iterable\");\n }\n pending--;\n if (pending === 0) {\n resolve(values);\n }\n }\n catch (e) {\n reject(e);\n }\n }, additionalArgs);\n });\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createRacePromise(newPromise) {\n return createCachedValue(function (input) {\n var additionalArgs = arrSlice(arguments, 1);\n return newPromise(function (resolve, reject) {\n var isDone = false;\n function processItem(item) {\n doAwaitResponse(item, function (value) {\n if (!isDone) {\n isDone = true;\n if (value.rejected) {\n reject(value.reason);\n }\n else {\n resolve(value.value);\n }\n }\n });\n }\n try {\n if (isArray(input)) {\n arrForEach(input, processItem);\n }\n else if (isIterable(input)) {\n iterForOf(input, processItem);\n }\n else {\n throwTypeError(\"Input is not an iterable\");\n }\n }\n catch (e) {\n reject(e);\n }\n }, additionalArgs);\n });\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createAnyPromise(newPromise) {\n return createCachedValue(function (input) {\n var additionalArgs = arrSlice(arguments, 1);\n return newPromise(function (resolve, reject) {\n var theErros = [];\n var pending = 1;\n var isDone = false;\n function processItem(item, idx) {\n pending++;\n doAwaitResponse(item, function (value) {\n if (!value.rejected) {\n isDone = true;\n resolve(value.value);\n return;\n }\n else {\n theErros[idx] = value.reason;\n }\n if (--pending === 0 && !isDone) {\n reject(_createAggregationError(theErros));\n }\n });\n }\n try {\n if (isArray(input)) {\n arrForEach(input, processItem);\n }\n else if (isIterable(input)) {\n iterForOf(input, processItem);\n }\n else {\n throwTypeError(\"Input is not an iterable\");\n }\n pending--;\n if (pending === 0 && !isDone) {\n reject(_createAggregationError(theErros));\n }\n }\n catch (e) {\n reject(e);\n }\n }, additionalArgs);\n });\n}\n\nfunction syncItemProcessor(pending) {\n arrForEach(pending, function (fn) {\n try {\n fn();\n }\n catch (e) {\n }\n });\n}\nfunction timeoutItemProcessor(timeout) {\n var callbackTimeout = isNumber(timeout) ? timeout : 0;\n return function (pending) {\n scheduleTimeout(function () {\n syncItemProcessor(pending);\n }, callbackTimeout);\n };\n}\nfunction idleItemProcessor(timeout) {\n var options;\n if (timeout >= 0) {\n options = {\n timeout: +timeout\n };\n }\n return function (pending) {\n scheduleIdleCallback(function (deadline) {\n syncItemProcessor(pending);\n }, options);\n };\n}\n\nvar _allAsyncSettledCreator;\nvar _raceAsyncCreator;\nvar _anyAsyncCreator;\nfunction createAsyncPromise(executor, timeout) {\n return _createPromise(createAsyncPromise, timeoutItemProcessor(timeout), executor, timeout);\n}\nvar createAsyncAllPromise = /*#__PURE__*/ _createAllPromise(createAsyncPromise);\nvar createAsyncResolvedPromise = /*#__PURE__*/ _createResolvedPromise(createAsyncPromise);\nvar createAsyncRejectedPromise = /*#__PURE__*/ _createRejectedPromise(createAsyncPromise);\nfunction createAsyncAllSettledPromise(input, timeout) {\n !_allAsyncSettledCreator && (_allAsyncSettledCreator = _createAllSettledPromise(createAsyncPromise));\n return _allAsyncSettledCreator.v(input, timeout);\n}\nfunction createAsyncRacePromise(values, timeout) {\n !_raceAsyncCreator && (_raceAsyncCreator = _createRacePromise(createAsyncPromise));\n return _raceAsyncCreator.v(values, timeout);\n}\nfunction createAsyncAnyPromise(values, timeout) {\n !_anyAsyncCreator && (_anyAsyncCreator = _createAnyPromise(createAsyncPromise));\n return _anyAsyncCreator.v(values, timeout);\n}\n\nvar _promiseCls;\nvar _allCreator;\nvar _allNativeSettledCreator;\nvar _raceNativeCreator;\nvar _anyNativeCreator;\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createNativePromiseHelper(name, func) {\n !_promiseCls && (_promiseCls = createCachedValue((safe(getInst, [STR_PROMISE]).v) || null));\n if (_promiseCls.v && _promiseCls.v[name]) {\n return createCachedValue(function (input, timeout) {\n return createNativePromise(function (resolve, reject) {\n _promiseCls.v[name](input).then(resolve, reject);\n });\n });\n }\n return func();\n}\nfunction createNativePromise(executor, timeout) {\n !_promiseCls && (_promiseCls = createCachedValue((safe(getInst, [STR_PROMISE]).v) || null));\n var PrmCls = _promiseCls.v;\n if (!PrmCls) {\n return createAsyncPromise(executor);\n }\n if (!isFunction(executor)) {\n throwTypeError(STR_PROMISE + \": executor is not a function - \" + dumpObj(executor));\n }\n var _state = 0 ;\n function _strState() {\n return STRING_STATES[_state];\n }\n var thePromise = new PrmCls(function (resolve, reject) {\n function _resolve(value) {\n _state = 2 ;\n resolve(value);\n }\n function _reject(reason) {\n _state = 3 ;\n reject(reason);\n }\n executor(_resolve, _reject);\n });\n objDefineProp(thePromise, \"state\", {\n get: _strState\n });\n return thePromise;\n}\nfunction createNativeAllPromise(input, timeout) {\n !_allCreator && (_allCreator = _createNativePromiseHelper(\"all\", function () { return createCachedValue(_createAllPromise(createNativePromise)); }));\n return _allCreator.v(input, timeout);\n}\nvar createNativeResolvedPromise = /*#__PURE__*/ _createResolvedPromise(createNativePromise);\nvar createNativeRejectedPromise = /*#__PURE__*/ _createRejectedPromise(createNativePromise);\nfunction createNativeAllSettledPromise(input, timeout) {\n !_allNativeSettledCreator && (_allNativeSettledCreator = _createNativePromiseHelper(\"allSettled\", function () { return _createAllSettledPromise(createNativePromise); }));\n return _allNativeSettledCreator.v(input, timeout);\n}\nfunction createNativeRacePromise(values, timeout) {\n !_raceNativeCreator && (_raceNativeCreator = _createNativePromiseHelper(\"race\", function () { return _createRacePromise(createNativePromise); }));\n return _raceNativeCreator.v(values, timeout);\n}\nfunction createNativeAnyPromise(values, timeout) {\n !_anyNativeCreator && (_anyNativeCreator = _createNativePromiseHelper(\"any\", function () { return _createAnyPromise(createNativePromise); }));\n return _anyNativeCreator.v(values, timeout);\n}\n\nvar _allSyncSettledCreator;\nvar _raceSyncCreator;\nvar _anySyncCreator;\nfunction createSyncPromise(executor) {\n return _createPromise(createSyncPromise, syncItemProcessor, executor);\n}\nvar createSyncAllPromise = /*#__PURE__*/ _createAllPromise(createSyncPromise);\nvar createSyncResolvedPromise = /*#__PURE__*/ _createResolvedPromise(createSyncPromise);\nvar createSyncRejectedPromise = /*#__PURE__*/ _createRejectedPromise(createSyncPromise);\nfunction createSyncAllSettledPromise(input, timeout) {\n !_allSyncSettledCreator && (_allSyncSettledCreator = _createAllSettledPromise(createSyncPromise));\n return _allSyncSettledCreator.v(input, timeout);\n}\nfunction createSyncRacePromise(values, timeout) {\n !_raceSyncCreator && (_raceSyncCreator = _createRacePromise(createSyncPromise));\n return _raceSyncCreator.v(values, timeout);\n}\nfunction createSyncAnyPromise(values, timeout) {\n !_anySyncCreator && (_anySyncCreator = _createAnyPromise(createSyncPromise));\n return _anySyncCreator.v(values, timeout);\n}\n\nvar _defaultIdleTimeout;\nvar _allIdleSettledCreator;\nvar _raceIdleCreator;\nvar _anyIdleCreator;\nfunction setDefaultIdlePromiseTimeout(idleDeadline) {\n _defaultIdleTimeout = idleDeadline;\n}\nvar setDefaultIdleTimeout = ( setDefaultIdlePromiseTimeout);\nfunction createIdlePromise(executor, timeout) {\n var theTimeout = isUndefined(timeout) ? _defaultIdleTimeout : timeout;\n return _createPromise(createIdlePromise, idleItemProcessor(theTimeout), executor, theTimeout);\n}\nvar createIdleAllPromise = /*#__PURE__*/ _createAllPromise(createIdlePromise);\nvar createIdleResolvedPromise = /*#__PURE__*/ _createResolvedPromise(createIdlePromise);\nvar createIdleRejectedPromise = /*#__PURE__*/ _createRejectedPromise(createIdlePromise);\nfunction createIdleAllSettledPromise(input, timeout) {\n !_allIdleSettledCreator && (_allIdleSettledCreator = _createAllSettledPromise(createIdlePromise));\n return _allIdleSettledCreator.v(input, timeout);\n}\nfunction createIdleRacePromise(values, timeout) {\n !_raceIdleCreator && (_raceIdleCreator = _createRacePromise(createIdlePromise));\n return _raceIdleCreator.v(values, timeout);\n}\nfunction createIdleAnyPromise(values, timeout) {\n !_anyIdleCreator && (_anyIdleCreator = _createAnyPromise(createIdlePromise));\n return _anyIdleCreator.v(values, timeout);\n}\n\nvar _promiseCreator;\nvar _allSettledCreator;\nvar _raceCreator;\nvar _anyCreator;\nfunction setCreatePromiseImpl(creator) {\n _promiseCreator = creator ? createCachedValue(creator) : null;\n}\nfunction createPromise(executor, timeout) {\n !_promiseCreator && (_promiseCreator = createCachedValue(createNativePromise));\n return _promiseCreator.v.call(this, executor, timeout);\n}\nvar createAllPromise = /*#__PURE__*/ _createAllPromise(createPromise);\nvar createResolvedPromise = /*#__PURE__*/ _createResolvedPromise(createPromise);\nvar createRejectedPromise = /*#__PURE__*/ _createRejectedPromise(createPromise);\nfunction createAllSettledPromise(input, timeout) {\n !_allSettledCreator && (_allSettledCreator = _createAllSettledPromise(createPromise));\n return _allSettledCreator.v(input, timeout);\n}\nfunction createRacePromise(values, timeout) {\n !_raceCreator && (_raceCreator = _createRacePromise(createPromise));\n return _raceCreator.v(values, timeout);\n}\nfunction createAnyPromise(values, timeout) {\n !_anyCreator && (_anyCreator = _createAnyPromise(createPromise));\n return _anyCreator.v(values, timeout);\n}\n\nfunction createTimeoutPromise(timeout, resolveReject, message) {\n return createPromise(function (resolve, reject) {\n scheduleTimeout(function () {\n (resolveReject ? resolve : reject)(!isUndefined(message) ? message : \"Timeout of \" + timeout + \"ms exceeded\");\n }, timeout);\n });\n}\n\nfunction _doneChk(isDone, state, value, thisArg) {\n var result = isDone;\n state.res = value;\n if (!result) {\n if (state.isDone && isFunction(state.isDone)) {\n return doAwait(state.isDone.call(thisArg, state), function (done) {\n state.iter++;\n return !!done;\n });\n }\n else {\n result = !!state.isDone;\n }\n }\n state.iter++;\n return result;\n}\nfunction doWhileAsync(callbackFn, isDoneFn, thisArg) {\n var promise;\n var resolve;\n var reject = function (reason) {\n isDone = true;\n throw reason;\n };\n var isDone = false;\n var state = {\n st: utcNow(),\n iter: 0,\n isDone: isDoneFn || false\n };\n if (callbackFn) {\n var _createPromise_1 = function () {\n return createPromise(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n };\n var _handleAsyncDone_1 = function (done) {\n isDone = !!done;\n if (!isDone) {\n _processNext_1();\n }\n else {\n resolve(state.res);\n }\n };\n var _processNext_1 = function () {\n while (!isDone) {\n try {\n var cbResult = callbackFn.call(thisArg, state);\n if (isPromiseLike(cbResult)) {\n promise = promise || _createPromise_1();\n doAwait(cbResult, function (res) {\n try {\n doAwait(_doneChk(isDone, state, res, thisArg), _handleAsyncDone_1, reject);\n }\n catch (e) {\n reject(e);\n }\n }, reject);\n return promise;\n }\n else {\n var dnRes = _doneChk(isDone, state, cbResult, thisArg);\n if (isPromiseLike(dnRes)) {\n promise = promise || _createPromise_1();\n doAwait(dnRes, _handleAsyncDone_1, reject);\n return promise;\n }\n else {\n isDone = !!dnRes;\n }\n }\n }\n catch (e) {\n reject(e);\n return promise;\n }\n }\n if (isDone && resolve) {\n resolve(state.res);\n }\n return promise || state.res;\n };\n return _processNext_1();\n }\n}\n\nfunction arrForEachAsync(theArray, callbackFn, thisArg) {\n if (theArray) {\n var len_1 = getLength(theArray);\n if (len_1) {\n var isDone = function (state) {\n if (state.iter >= len_1 || state.res === -1) {\n return true;\n }\n };\n return doWhileAsync(function (state) {\n var idx = state.iter;\n if (idx in theArray) {\n return callbackFn.call(thisArg || theArray, theArray[idx], idx, theArray);\n }\n }, isDone);\n }\n }\n}\n\nvar _iterSymbol;\nvar _iterAsyncSymbol;\nfunction iterForOfAsync(iter, callbackFn, thisArg) {\n var err;\n var iterResult;\n var theIter = iter;\n function onFailed(failed) {\n err = { e: failed };\n if (theIter.throw) {\n iterResult = null;\n theIter.throw(err);\n }\n throw failed;\n }\n function onFinally() {\n try {\n if (iterResult && !iterResult[DONE]) {\n theIter[RETURN] && theIter[RETURN](iterResult);\n }\n }\n finally {\n if (err) {\n throw err.e;\n }\n }\n }\n if (iter) {\n if (!isIterator(iter)) {\n !_iterAsyncSymbol && (_iterAsyncSymbol = createCachedValue(getKnownSymbol(0 )));\n theIter = iter[_iterAsyncSymbol.v] ? iter[_iterAsyncSymbol.v]() : null;\n if (!theIter) {\n !_iterSymbol && (_iterSymbol = createCachedValue(getKnownSymbol(3 )));\n theIter = iter[_iterSymbol.v] ? iter[_iterSymbol.v]() : null;\n }\n }\n if (theIter && isIterator(theIter)) {\n var result = void 0;\n try {\n result = doWhileAsync(function (state) {\n return doAwait(theIter.next(), function (res) {\n iterResult = res;\n if (!res[DONE]) {\n return fnCall(callbackFn, thisArg || theIter, iterResult[VALUE], state.iter, theIter);\n }\n }, function (reason) {\n state.isDone = true;\n onFailed(reason);\n });\n }, function (state) {\n if (!iterResult || iterResult[DONE] || state.res === -1) {\n onFinally();\n return true;\n }\n }, thisArg || theIter);\n if (isPromiseLike(result)) {\n result = doFinally(result.catch(onFailed), onFinally);\n }\n return result;\n }\n catch (failed) {\n onFailed(failed);\n }\n finally {\n if (result && !isPromiseLike(result)) {\n onFinally();\n }\n }\n }\n }\n}\n\nvar REJECT = \"reject\";\nvar REJECTED_ERROR = \"Rejected\";\nvar _schedulerId = 0;\nvar _debugName;\nvar _debugIntState;\nvar _customErrors = {};\nfunction _rejectDone() {\n}\nfunction _createError(type, evt, message) {\n !_customErrors[type] && (_customErrors[type] = createCustomError(type));\n var now = utcNow();\n return new (_customErrors[type])(\"Task [\".concat(evt.id, \"] \").concat(message || \"\", \"- \").concat((evt.st ? \"Running\" : \"Waiting\"), \": \").concat(_calcTime(now, evt.st || evt.cr)));\n}\nfunction _calcTime(now, start) {\n return ((now - start) || \"0\") + \" ms\";\n}\nfunction _abortStaleTasks(taskQueue, staleTimeoutPeriod) {\n var now = utcNow();\n var expired = now - staleTimeoutPeriod;\n arrForEach(taskQueue, function (evt) {\n if (evt && !evt.rj && (evt.st && evt.st < expired) || (!evt.st && evt.cr && evt.cr < expired)) {\n evt && evt[REJECT](evt.rj || _createError(\"Aborted\", evt, \"Stale \"));\n }\n });\n}\nfunction _removeTask(queue, taskDetail) {\n var idx = arrIndexOf(queue, taskDetail);\n if (idx !== -1) {\n queue.splice(idx, 1);\n }\n}\nfunction _addDebugState(theScheduler, nameFn, stateFn) {\n _debugName = _debugName || { toString: function () { return \"[[SchedulerName]]\"; } };\n _debugIntState = _debugIntState || { toString: function () { return \"[[SchedulerState]]\"; } };\n objDefineProp(theScheduler, _debugName, { get: nameFn });\n objDefineProp(theScheduler, _debugIntState, { get: stateFn });\n}\nfunction createTaskScheduler(newPromise, name) {\n var _theTask;\n var _running = [];\n var _waiting = [];\n var _staleTimeoutPeriod = 600000;\n var _staleTimeoutCheckPeriod = _staleTimeoutPeriod / 10;\n var _taskCount = 0;\n var _schedulerName = (name ? (name + \".\") : \"\") + _schedulerId++;\n var _blockedTimer;\n newPromise = newPromise || createPromise;\n var _startBlockedTimer = function () {\n var hasTasks = (getLength(_running) + getLength(_waiting)) > 0;\n if (_staleTimeoutPeriod > 0) {\n if (!_blockedTimer) {\n _blockedTimer = scheduleTimeout(function () {\n _abortStaleTasks(_running, _staleTimeoutPeriod);\n _abortStaleTasks(_waiting, _staleTimeoutPeriod);\n _blockedTimer && (_blockedTimer.enabled = ((getLength(_running) + getLength(_waiting)) > 0));\n }, _staleTimeoutCheckPeriod);\n _blockedTimer.unref();\n }\n _blockedTimer && (_blockedTimer.enabled = hasTasks);\n }\n };\n var _queueTask = function (startAction, taskName, timeout) {\n var _a;\n var taskId = _schedulerName + \".\" + _taskCount++;\n if (taskName) {\n taskId += \"-(\" + taskName + \")\";\n }\n var newTask = (_a = {\n id: taskId,\n cr: utcNow(),\n to: timeout\n },\n _a[REJECT] = function (reason) {\n newTask.rj = reason || _createError(REJECTED_ERROR, newTask);\n newTask[REJECT] = _rejectDone;\n },\n _a);\n if (!_theTask) {\n newTask.p = newPromise(_runTask(newTask, startAction));\n }\n else {\n newTask.p = _waitForPreviousTask(newTask, _theTask, startAction);\n }\n _theTask = newTask;\n return newTask.p;\n };\n var _runTask = function (taskDetail, startAction) {\n taskDetail.st = utcNow();\n _running.push(taskDetail);\n _startBlockedTimer();\n return function (onTaskResolve, onTaskReject) {\n var _promiseReject = function (reason) {\n taskDetail.rj = taskDetail.rj || reason || _createError(REJECTED_ERROR, taskDetail);\n taskDetail[REJECT] = _rejectDone;\n _doCleanup(taskDetail);\n onTaskResolve = null;\n onTaskReject && onTaskReject(reason);\n onTaskReject = null;\n };\n var taskId = taskDetail.id;\n if (taskDetail.rj) {\n _promiseReject(taskDetail.rj);\n }\n else {\n taskDetail[REJECT] = _promiseReject;\n try {\n var startResult = startAction(taskId);\n if (taskDetail.to && isPromiseLike(startResult)) {\n taskDetail.t = scheduleTimeout(function () {\n _promiseReject(_createError(\"Timeout\", taskDetail));\n }, taskDetail.to);\n }\n doAwait(startResult, function (theResult) {\n _doCleanup(taskDetail);\n try {\n onTaskResolve && onTaskResolve(theResult);\n }\n catch (e) {\n onTaskReject && onTaskReject(e);\n }\n onTaskReject = null;\n onTaskResolve = null;\n }, _promiseReject);\n }\n catch (e) {\n _promiseReject(e);\n }\n }\n };\n };\n var _waitForPreviousTask = function (taskDetail, prevTask, startAction) {\n _waiting.push(taskDetail);\n _startBlockedTimer();\n return newPromise(function (onWaitResolve, onWaitReject) {\n doAwaitResponse(prevTask.p, function () {\n _removeTask(_waiting, taskDetail);\n _runTask(taskDetail, startAction)(onWaitResolve, onWaitReject);\n });\n });\n };\n var _doCleanup = function (taskDetail) {\n _removeTask(_running, taskDetail);\n taskDetail.t && taskDetail.t.cancel();\n taskDetail.t = null;\n if (_theTask && _theTask === taskDetail) {\n _theTask = null;\n if (getLength(_running) + getLength(_waiting) === 0) {\n _blockedTimer && _blockedTimer.cancel();\n _blockedTimer = null;\n }\n }\n };\n var theScheduler = {\n idle: true,\n queue: _queueTask,\n setStaleTimeout: function (staleTimeout, staleCheckPeriod) {\n _blockedTimer && _blockedTimer.cancel();\n _blockedTimer = null;\n _staleTimeoutPeriod = staleTimeout;\n _staleTimeoutCheckPeriod = staleCheckPeriod || staleTimeout / 10;\n _startBlockedTimer();\n }\n };\n objDefine(theScheduler, \"idle\", {\n g: function () {\n return getLength(_running) + getLength(_waiting) === 0;\n }\n });\n _addDebugState(theScheduler, function () { return _schedulerName; }, function () {\n return {\n l: _theTask,\n r: _running,\n w: _waiting\n };\n });\n return theScheduler;\n}\n\nvar toStringTagSymbol = getKnownSymbol(11 );\nvar PolyPromise = /*#__PURE__*/ (function () {\n function PolyPromiseImpl(executor) {\n this._$ = createAsyncPromise(executor);\n if (toStringTagSymbol) {\n this[toStringTagSymbol] = \"Promise\";\n }\n objDefineProp(this, \"state\", {\n get: function () {\n return this._$.state;\n }\n });\n }\n PolyPromiseImpl.all = createAsyncAllPromise;\n PolyPromiseImpl.race = createAsyncRacePromise;\n PolyPromiseImpl.any = createAsyncAnyPromise;\n PolyPromiseImpl.reject = createAsyncRejectedPromise;\n PolyPromiseImpl.resolve = createAsyncResolvedPromise;\n PolyPromiseImpl.allSettled = createAsyncAllSettledPromise;\n var theProto = PolyPromiseImpl.prototype;\n theProto.then = function (onResolved, onRejected) {\n return this._$.then(onResolved, onRejected);\n };\n theProto.catch = function (onRejected) {\n return this._$.catch(onRejected);\n };\n theProto.finally = function (onfinally) {\n return this._$.finally(onfinally);\n };\n return PolyPromiseImpl;\n}());\n\nexport { PolyPromise, arrForEachAsync, createAllPromise, createAllSettledPromise, createAnyPromise, createAsyncAllPromise, createAsyncAllSettledPromise, createAsyncAnyPromise, createAsyncPromise, createAsyncRacePromise, createAsyncRejectedPromise, createAsyncResolvedPromise, createIdleAllPromise, createIdleAllSettledPromise, createIdleAnyPromise, createIdlePromise, createIdleRacePromise, createIdleRejectedPromise, createIdleResolvedPromise, createNativeAllPromise, createNativeAllSettledPromise, createNativeAnyPromise, createNativePromise, createNativeRacePromise, createNativeRejectedPromise, createNativeResolvedPromise, createPromise, createRacePromise, createRejectedPromise, createResolvedPromise, createSyncAllPromise, createSyncAllSettledPromise, createSyncAnyPromise, createSyncPromise, createSyncRacePromise, createSyncRejectedPromise, createSyncResolvedPromise, createTaskScheduler, createTimeoutPromise, doAwait, doAwaitResponse, doFinally, doWhileAsync, iterForOfAsync, setCreatePromiseImpl, setDefaultIdlePromiseTimeout, setDefaultIdleTimeout, setPromiseDebugState };\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_FEATURE_OPT_IN = \"featureOptIn\"; // Count: 4\r\nexport var _DYN_ON_CFG_CHANGE_RECEIV0 = \"onCfgChangeReceive\"; // Count: 2\r\nexport var _DYN_NON_OVERRIDE_CONFIGS = \"nonOverrideConfigs\"; // Count: 2\r\nexport var _DYN_SCHEDULE_FETCH_TIMEO1 = \"scheduleFetchTimeout\"; // Count: 2\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { isNullOrUndefined, isObject, objExtend, objForEachKey, setValueByKey } from \"@nevware21/ts-utils\";\r\nimport { _DYN_FEATURE_OPT_IN } from \"./__DynamicConstants\";\r\n/**\r\n * Delete a config key in the given cfg, if the config key exists in nonOverrideConfigs and its value is set to true\r\n * @param cfg cfg to modify\r\n * @param nonOverrideConfigs nonOverrideConfigs\r\n * @param curLevel cur config level, starting at 0\r\n * @param maxLevel max config level\r\n * @returns new copy of modified configs\r\n */\r\nexport function replaceByNonOverrideCfg(cfg, nonOverrideConfigs, curLevel, maxLevel) {\r\n try {\r\n var exceedMaxLevel = curLevel > maxLevel;\r\n if (exceedMaxLevel) {\r\n cfg = null;\r\n }\r\n var curCfg_1 = curLevel == 0 ? objExtend({}, cfg) : cfg; // only copy cfg at the begining level\r\n if (curCfg_1 && nonOverrideConfigs && !exceedMaxLevel) {\r\n objForEachKey(curCfg_1, function (key) {\r\n var nonOverrideVal = nonOverrideConfigs[key];\r\n if (!!nonOverrideVal) {\r\n if (isObject(curCfg_1[key]) && isObject(nonOverrideVal)) {\r\n curCfg_1[key] = replaceByNonOverrideCfg(curCfg_1[key], nonOverrideVal, ++curLevel, maxLevel);\r\n }\r\n else {\r\n delete curCfg_1[key];\r\n }\r\n }\r\n });\r\n }\r\n return curCfg_1;\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n // if errors happen, do nothing\r\n return cfg;\r\n}\r\n// CDN Mode, value = B (CDN value = B)\r\n// |--------------------------------------------------------------------------|-----------|\r\n// | | none | disabled | enabled | forceOn | forceOff |\r\n// | ------------------ | ----------- | ----------- | ----------- | --------- | --------- |\r\n// | User Mode, value = A | none | none | disabled | enabled | enabled | disabled |\r\n// (user Value = A) | disabled | disabled | disabled | disabled | enabled | disabled |\r\n// | enabled | enabled | disabled | enabled | enabled | disabled |\r\n// | none(blockCdn) | none | none | none | none | none |\r\n// | disabled(blockCdn) | disabled | disabled | disabled | disabled | disabled |\r\n// | enabled(blockCdn) | enabled | enabled | enabled | enabled | enabled |\r\n// This matrix identifies how feature based overrides are selected (if present)\r\n// cdn Mode (cdn Value = B)\r\n// |---------------------------------------------------------------------------|\r\n// | | none | disabled | enabled | forceOn | forceOff |\r\n// | ------------------ | ---------| ---------| ---------| ---------|----------|\r\n// | User Mode | none | A | A | A || B | B || A | B || A |\r\n// (user Value = A) | disabled | A | A | A | B || A | B || A |\r\n// | enabled | A | A | A || B | B || A | B || A |\r\n// | none(blockCdn) | A | A | A | A | A |\r\n// | disabled(blockCdn) | A | A | A | A | A |\r\n// | enabled(blockCdn) | A | A | A | A | A |\r\n// Note:\r\n// Where the \"value\" is an object (map) of encoded key/values which will be used to override the real configuration\r\n// A = either the user supplied enable/disable value (via the `config.featureOptIn[name]`) or if not defined by the user the SDK defaults of the same.\r\n// B = The enable/disable value obtained from the CDN for the named feature\r\n// These are evaluated based on the above matrix to either\r\n// - A (Always the user/sdk value)\r\n// - B (Always the value from the CDN)\r\n// - A || B (If A is null or undefined use the value from the CDN (B) otherwise A)\r\n// - B || A (If B is null or undefined use the user/SDK value otherwise use the value from the CDN)\r\n//\r\n// The result of the value may also be null / undefined, which means there are no overrides to apply when the feature is enabled\r\nvar F = \"featureOptIn.\";\r\nvar M = \".mode\";\r\nvar ON = \".onCfg\";\r\nvar OFF = \".offCfg\";\r\nexport function resolveCdnFeatureCfg(field, cdnCfg, userOptInDetails) {\r\n var _a;\r\n // cdn conifg value\r\n if (!cdnCfg || !cdnCfg.enabled) {\r\n return null;\r\n }\r\n var cdnFt = (cdnCfg[_DYN_FEATURE_OPT_IN /* @min:%2efeatureOptIn */] || {})[field] || { mode: 1 /* CdnFeatureMode.none */ };\r\n var cdnM = cdnFt.mode;\r\n var cdnOnV = cdnFt.onCfg;\r\n var cdnOffV = cdnFt.offCfg;\r\n var userFt = (userOptInDetails || {})[field] || { mode: 2 /* FeatureOptInMode.disable */ }; // default user mode is disable\r\n var userM = userFt.mode;\r\n var userOnV = userFt.onCfg;\r\n var userOffV = userFt.offCfg;\r\n var blockCdn = !!userFt.blockCdnCfg;\r\n var mFld = F + field + M;\r\n var onFld = F + field + ON;\r\n var offFld = F + field + OFF;\r\n var mode = userM;\r\n var onV = userOnV;\r\n var offV = userOffV;\r\n if (!blockCdn) {\r\n if (cdnM === 4 /* CdnFeatureMode.forceOn */ || cdnM === 5 /* CdnFeatureMode.forceOff */) {\r\n mode = (cdnM == 4 /* CdnFeatureMode.forceOn */ ? 3 /* FeatureOptInMode.enable */ : 2 /* FeatureOptInMode.disable */);\r\n onV = cdnOnV || userOnV;\r\n offV = cdnOffV || userOffV;\r\n }\r\n else if (cdnM === 2 /* CdnFeatureMode.disable */ || userM === 2 /* FeatureOptInMode.disable */) {\r\n mode = 2 /* FeatureOptInMode.disable */;\r\n onV = userOnV || cdnOnV;\r\n offV = userOffV || cdnOffV;\r\n }\r\n else if (cdnM === 3 /* CdnFeatureMode.enable */) {\r\n mode = 3 /* FeatureOptInMode.enable */;\r\n onV = userOnV || cdnOnV;\r\n offV = userOffV || cdnOffV;\r\n }\r\n else if (cdnM === 1 /* CdnFeatureMode.none */ && userM === 1 /* FeatureOptInMode.none */) {\r\n mode = 1 /* FeatureOptInMode.none */;\r\n }\r\n }\r\n return _a = {},\r\n _a[mFld] = mode,\r\n _a[onFld] = onV,\r\n _a[offFld] = offV,\r\n _a;\r\n}\r\n// helper function to get cdn config with opt-in features\r\nexport function applyCdnfeatureCfg(cdnCfg, core) {\r\n try {\r\n if (!cdnCfg || !cdnCfg.enabled) {\r\n return null;\r\n }\r\n if (!cdnCfg[_DYN_FEATURE_OPT_IN /* @min:%2efeatureOptIn */]) {\r\n return cdnCfg.config;\r\n }\r\n var optInMap = cdnCfg[_DYN_FEATURE_OPT_IN /* @min:%2efeatureOptIn */];\r\n var cdnConfig_1 = cdnCfg.config || {};\r\n objForEachKey(optInMap, function (key) {\r\n var featureVal = resolveCdnFeatureCfg(key, cdnCfg, core.config[_DYN_FEATURE_OPT_IN /* @min:%2efeatureOptIn */]);\r\n if (!isNullOrUndefined(featureVal)) {\r\n objForEachKey(featureVal, function (config, val) {\r\n setValueByKey(cdnConfig_1, config, val);\r\n });\r\n _overrideCdnCfgByFeature(key, featureVal, cdnConfig_1);\r\n }\r\n });\r\n return cdnConfig_1;\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n}\r\nfunction _overrideCdnCfgByFeature(field, ftVal, config) {\r\n var mode = ftVal[F + field + M];\r\n var val = ftVal[F + field + ON];\r\n var dVal = ftVal[F + field + OFF];\r\n var target = null;\r\n if (mode === 3 /* FeatureOptInMode.enable */) {\r\n target = val;\r\n }\r\n if (mode === 2 /* FeatureOptInMode.disable */) {\r\n target = dVal;\r\n }\r\n if (target) {\r\n objForEachKey(target, function (key, cfg) {\r\n setValueByKey(config, key, cfg);\r\n });\r\n }\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* CfgSyncPlugin.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nvar _a;\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BaseTelemetryPlugin, createProcessTelemetryContext, createUniqueNamespace, eventOff, eventOn, getGlobal, getJSON, isFetchSupported, isXhrSupported, mergeEvtNamespace, onConfigChange, sendCustomEvent } from \"@microsoft/applicationinsights-core-js\";\r\nimport { doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { isFunction, isNullOrUndefined, isPlainObject, objDeepFreeze, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { applyCdnfeatureCfg, replaceByNonOverrideCfg } from \"./CfgSyncHelperFuncs\";\r\nimport { _DYN_NON_OVERRIDE_CONFIGS, _DYN_ON_CFG_CHANGE_RECEIV0, _DYN_SCHEDULE_FETCH_TIMEO1 } from \"./__DynamicConstants\";\r\nvar EVENT_NAME = \"ai_cfgsync\";\r\nvar STR_GET_METHOD = \"GET\";\r\nvar FETCH_TIMEOUT = 1800000; // 30 minutes\r\nvar udfVal = undefined;\r\nvar defaultNonOverrideCfg = { instrumentationKey: true, connectionString: true, endpointUrl: true };\r\nvar _defaultConfig = objDeepFreeze((_a = {\r\n syncMode: 1 /* ICfgSyncMode.Broadcast */,\r\n blkCdnCfg: udfVal,\r\n customEvtName: udfVal,\r\n cfgUrl: udfVal,\r\n overrideSyncFn: udfVal,\r\n overrideFetchFn: udfVal\r\n },\r\n _a[_DYN_ON_CFG_CHANGE_RECEIV0 /* @min:onCfgChangeReceive */] = udfVal,\r\n _a[_DYN_SCHEDULE_FETCH_TIMEO1 /* @min:scheduleFetchTimeout */] = FETCH_TIMEOUT,\r\n _a[_DYN_NON_OVERRIDE_CONFIGS /* @min:nonOverrideConfigs */] = defaultNonOverrideCfg,\r\n _a));\r\nvar CfgSyncPlugin = /** @class */ (function (_super) {\r\n __extends(CfgSyncPlugin, _super);\r\n function CfgSyncPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 198;\r\n _this.identifier = \"AppInsightsCfgSyncPlugin\";\r\n var _extensionConfig;\r\n var _mainConfig; // throttle config should be wrapped in IConfiguration\r\n var _evtName;\r\n var _evtNamespace;\r\n var _cfgUrl;\r\n var _timeoutHandle;\r\n var _receiveChanges;\r\n var _broadcastChanges;\r\n var _blkCdnCfg;\r\n var _fetchTimeout;\r\n var _retryCnt;\r\n var _onCfgChangeReceive;\r\n var _nonOverrideConfigs;\r\n var _fetchFn;\r\n var _overrideFetchFn;\r\n var _overrideSyncFn;\r\n var _paused = false;\r\n dynamicProto(CfgSyncPlugin, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());\r\n _populateDefaults(config);\r\n };\r\n _self.getCfg = function () {\r\n return _mainConfig;\r\n };\r\n _self.pause = function () {\r\n _paused = true;\r\n _clearScheduledTimer();\r\n };\r\n _self.resume = function () {\r\n _paused = false;\r\n _setupTimer();\r\n };\r\n // used for V2 to manaully trigger config udpate\r\n _self.setCfg = function (config) {\r\n return _setCfg(config);\r\n };\r\n _self.sync = function (customDetails) {\r\n return _sendCfgsyncEvents(customDetails);\r\n };\r\n _self.updateEventListenerName = function (eventName) {\r\n return _updateEventListenerName(eventName);\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _eventOff();\r\n _clearScheduledTimer();\r\n _initDefaults();\r\n };\r\n _self[\"_getDbgPlgTargets\"] = function () {\r\n return [_broadcastChanges, _receiveChanges, _evtName, _blkCdnCfg, _nonOverrideConfigs];\r\n };\r\n function _initDefaults() {\r\n _mainConfig = null;\r\n _evtName = null;\r\n _evtNamespace = null;\r\n _cfgUrl = null;\r\n _receiveChanges = null;\r\n _broadcastChanges = null;\r\n _nonOverrideConfigs = null;\r\n _timeoutHandle = null;\r\n _fetchTimeout = null;\r\n _retryCnt = null;\r\n _blkCdnCfg = null;\r\n _overrideFetchFn = null;\r\n _overrideSyncFn = null;\r\n _onCfgChangeReceive = null;\r\n }\r\n function _populateDefaults(config) {\r\n var identifier = _self.identifier;\r\n var core = _self.core;\r\n _self._addHook(onConfigChange(config, function () {\r\n var ctx = createProcessTelemetryContext(null, config, core);\r\n _extensionConfig = ctx.getExtCfg(identifier, _defaultConfig);\r\n var preBlkCdn = _blkCdnCfg;\r\n _blkCdnCfg = !!_extensionConfig.blkCdnCfg;\r\n // avoid initial call\r\n if (!isNullOrUndefined(preBlkCdn) && preBlkCdn !== _blkCdnCfg) {\r\n if (!_blkCdnCfg && _cfgUrl) {\r\n _fetchFn && _fetchFn(_cfgUrl, _onFetchComplete, _broadcastChanges);\r\n }\r\n else {\r\n _clearScheduledTimer();\r\n }\r\n }\r\n if (isNullOrUndefined(_receiveChanges)) {\r\n _receiveChanges = _extensionConfig.syncMode === 2 /* ICfgSyncMode.Receive */;\r\n }\r\n if (isNullOrUndefined(_broadcastChanges)) {\r\n _broadcastChanges = _extensionConfig.syncMode === 1 /* ICfgSyncMode.Broadcast */;\r\n }\r\n var newEvtName = _extensionConfig.customEvtName || EVENT_NAME;\r\n if (_evtName !== newEvtName) {\r\n if (_receiveChanges) {\r\n _updateEventListenerName(newEvtName);\r\n }\r\n else {\r\n _eventOff();\r\n _evtName = newEvtName;\r\n }\r\n }\r\n if (isNullOrUndefined(_cfgUrl)) {\r\n _cfgUrl = _extensionConfig.cfgUrl;\r\n }\r\n // if cfgUrl is set, we will ignore core config change\r\n if (!_cfgUrl) {\r\n _mainConfig = config;\r\n if (_broadcastChanges) {\r\n _sendCfgsyncEvents();\r\n }\r\n }\r\n }));\r\n _overrideSyncFn = _extensionConfig.overrideSyncFn;\r\n _overrideFetchFn = _extensionConfig.overrideFetchFn;\r\n _onCfgChangeReceive = _extensionConfig[_DYN_ON_CFG_CHANGE_RECEIV0 /* @min:%2eonCfgChangeReceive */];\r\n _nonOverrideConfigs = _extensionConfig[_DYN_NON_OVERRIDE_CONFIGS /* @min:%2enonOverrideConfigs */]; // override values should not be changed\r\n _fetchTimeout = _extensionConfig[_DYN_SCHEDULE_FETCH_TIMEO1 /* @min:%2escheduleFetchTimeout */];\r\n _fetchFn = _getFetchFnInterface();\r\n _retryCnt = 0;\r\n // NOT support cfgURL change to avoid mutiple fetch calls\r\n if (_cfgUrl && !_blkCdnCfg) {\r\n _fetchFn && _fetchFn(_cfgUrl, _onFetchComplete, _broadcastChanges);\r\n }\r\n }\r\n function _setCfg(config, isAutoSync) {\r\n if (config) {\r\n _mainConfig = config;\r\n if (!!isAutoSync && !_paused) {\r\n return _sendCfgsyncEvents();\r\n }\r\n if (_receiveChanges && !_paused) {\r\n _self.core.updateCfg(config);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n function _eventOff() {\r\n try {\r\n var global_1 = getGlobal();\r\n if (global_1) {\r\n eventOff(global_1, null, null, _evtNamespace);\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n function _sendCfgsyncEvents(customDetails) {\r\n try {\r\n if (!!_overrideSyncFn && isFunction(_overrideSyncFn)) {\r\n return _overrideSyncFn(_mainConfig, customDetails);\r\n }\r\n return sendCustomEvent(_evtName, _mainConfig, customDetails);\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return false;\r\n }\r\n function _updateEventListenerName(name) {\r\n try {\r\n _eventOff();\r\n if (name) {\r\n _evtName = name;\r\n _addEventListener();\r\n }\r\n return true;\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return false;\r\n }\r\n function _getFetchFnInterface() {\r\n var _fetchFn = _overrideFetchFn;\r\n if (isNullOrUndefined(_fetchFn)) {\r\n if (isFetchSupported()) {\r\n _fetchFn = _fetchSender;\r\n }\r\n else if (isXhrSupported()) {\r\n _fetchFn = _xhrSender;\r\n }\r\n }\r\n return _fetchFn;\r\n }\r\n function _fetchSender(url, oncomplete, isAutoSync) {\r\n var global = getGlobal();\r\n var fetchFn = (global && global.fetch) || null;\r\n if (url && fetchFn && isFunction(fetchFn)) {\r\n try {\r\n var init = {\r\n method: STR_GET_METHOD\r\n };\r\n var request = new Request(url, init);\r\n doAwaitResponse(fetch(request), function (result) {\r\n var response = result.value;\r\n if (!result.rejected) {\r\n if (response.ok) {\r\n doAwaitResponse(response.text(), function (res) {\r\n _doOnComplete(oncomplete, response.status, res.value, isAutoSync);\r\n });\r\n }\r\n else {\r\n _doOnComplete(oncomplete, response.status, null, isAutoSync);\r\n }\r\n }\r\n else {\r\n _doOnComplete(oncomplete, 400);\r\n }\r\n });\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n }\r\n function _xhrSender(url, oncomplete, isAutoSync) {\r\n try {\r\n var xhr_1 = new XMLHttpRequest();\r\n xhr_1.open(STR_GET_METHOD, url);\r\n xhr_1.onreadystatechange = function () {\r\n if (xhr_1.readyState === XMLHttpRequest.DONE) {\r\n _doOnComplete(oncomplete, xhr_1.status, xhr_1.responseText, isAutoSync);\r\n }\r\n };\r\n xhr_1.onerror = function () {\r\n _doOnComplete(oncomplete, 400);\r\n };\r\n xhr_1.ontimeout = function () {\r\n _doOnComplete(oncomplete, 400);\r\n };\r\n xhr_1.send();\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n function _onFetchComplete(status, response, isAutoSync) {\r\n try {\r\n if (status >= 200 && status < 400 && response) {\r\n _retryCnt = 0; // any successful response will reset retry count to 0\r\n var JSON_1 = getJSON();\r\n if (JSON_1) {\r\n var cdnCfg = JSON_1.parse(response); //comments are not allowed\r\n var cfg = applyCdnfeatureCfg(cdnCfg, _self.core);\r\n var newCfg = cfg && isPlainObject(cfg) && _replaceTartgetByKeys(cfg);\r\n newCfg && _setCfg(newCfg, isAutoSync);\r\n //cfg && _setCfg(cfg, isAutoSync);\r\n }\r\n }\r\n else {\r\n _retryCnt++;\r\n }\r\n if (_retryCnt < 3) {\r\n _setupTimer();\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n function _doOnComplete(oncomplete, status, response, isAutoSync) {\r\n try {\r\n oncomplete(status, response, isAutoSync);\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n function _addEventListener() {\r\n if (_receiveChanges) {\r\n var global_2 = getGlobal();\r\n if (global_2) {\r\n try {\r\n eventOn(global_2, _evtName, function (event) {\r\n // TODO: add more validation here\r\n // may include a \"name\" or some other features to check\r\n var cfgEvent = event && event.detail;\r\n if (_onCfgChangeReceive && cfgEvent) {\r\n _onCfgChangeReceive(cfgEvent);\r\n }\r\n else {\r\n var cfg = cfgEvent && cfgEvent.cfg;\r\n var newCfg = cfg && isPlainObject(cfg) && _replaceTartgetByKeys(cfg);\r\n newCfg && _setCfg(newCfg);\r\n }\r\n }, _evtNamespace, true);\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n }\r\n }\r\n // 4 levels\r\n function _replaceTartgetByKeys(cfg, level) {\r\n var _cfg = null;\r\n try {\r\n if (cfg) {\r\n _cfg = replaceByNonOverrideCfg(cfg, _nonOverrideConfigs, 0, 5);\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return _cfg;\r\n }\r\n /**\r\n * Sets up the timer which triggers fetching cdn every 30mins after inital call\r\n */\r\n function _setupTimer() {\r\n if (!_timeoutHandle && _fetchTimeout) {\r\n _timeoutHandle = scheduleTimeout(function () {\r\n _timeoutHandle = null;\r\n _fetchFn(_cfgUrl, _onFetchComplete, _broadcastChanges);\r\n }, _fetchTimeout);\r\n _timeoutHandle.unref();\r\n }\r\n }\r\n function _clearScheduledTimer() {\r\n _timeoutHandle && _timeoutHandle.cancel();\r\n _timeoutHandle = null;\r\n _retryCnt = 0;\r\n }\r\n _self.processTelemetry = function (env, itemCtx) {\r\n _self.processNext(env, itemCtx);\r\n };\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for CfgSyncPlugin.prototype.initialize.\r\n// Removed Stub for CfgSyncPlugin.prototype.getCfg.\r\n// Removed Stub for CfgSyncPlugin.prototype.setCfg.\r\n// Removed Stub for CfgSyncPlugin.prototype.sync.\r\n// Removed Stub for CfgSyncPlugin.prototype.updateEventListenerName.\r\n// Removed Stub for CfgSyncPlugin.prototype.pause.\r\n// Removed Stub for CfgSyncPlugin.prototype.resume.\r\n //// Removed Stub for CfgSyncPlugin.prototype.processTelemetry.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n CfgSyncPlugin.__ieDyn=1;\n\n return CfgSyncPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { CfgSyncPlugin };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { arrForEach, createUniqueNamespace, eventOff, eventOn, getDocument, getNavigator, getWindow, isNullOrUndefined, isUndefined, mergeEvtNamespace } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_PUSH } from \"./__DynamicConstants\";\r\nfunction _disableEvents(target, evtNamespace) {\r\n eventOff(target, null, null, evtNamespace);\r\n}\r\n/**\r\n * Create a new OfflineListener instance to monitor browser online / offline events\r\n * @param parentEvtNamespace - The parent event namespace to append to any specific events for this instance\r\n */\r\nexport function createOfflineListener(parentEvtNamespace) {\r\n var _document = getDocument();\r\n var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global\r\n var _isListening = false;\r\n var listenerList = [];\r\n // Set the initial state\r\n // rState is changed by the browser, both via events and when we check the navigator.onLine property\r\n var rState = 1 /* eOfflineValue.Online */;\r\n if (_navigator && !isNullOrUndefined(_navigator.onLine) && !_navigator.onLine) { // navigator.onLine is undefined in react-native\r\n rState = 2 /* eOfflineValue.Offline */;\r\n }\r\n // ustate is changed by the user calling setOnlineState\r\n var uState = 0 /* eOfflineValue.Unknown */;\r\n // current state would be updated each time rState or uState is changed\r\n // it is a resolved value of rState and uState\r\n var _currentState = calCurrentState();\r\n var _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineListener\"), parentEvtNamespace);\r\n try {\r\n if (_enableEvents(getWindow())) {\r\n _isListening = true;\r\n }\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (target.ononline) {\r\n if (_enableEvents(target)) {\r\n _isListening = true;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // this makes react-native less angry\r\n _isListening = false;\r\n }\r\n function _enableEvents(target) {\r\n var enabled = false;\r\n if (target) {\r\n enabled = eventOn(target, \"online\", _setOnline, _evtNamespace);\r\n if (enabled) {\r\n eventOn(target, \"offline\", _setOffline, _evtNamespace);\r\n }\r\n }\r\n return enabled;\r\n }\r\n function _isOnline() {\r\n return _currentState;\r\n }\r\n function calCurrentState() {\r\n if (uState === 2 /* eOfflineValue.Offline */ || rState === 2 /* eOfflineValue.Offline */) {\r\n return false;\r\n }\r\n return true; // if both unknown, then we assume the network is good\r\n }\r\n function listnerNoticeCheck() {\r\n // we were offline and are now online or we were online and now offline\r\n var newState = calCurrentState();\r\n if (_currentState !== newState) {\r\n _currentState = newState; // use the resolved state to update\r\n // send all the callbacks with the current state\r\n arrForEach(listenerList, function (callback) {\r\n var offlineState = {\r\n isOnline: _currentState,\r\n rState: rState,\r\n uState: uState\r\n };\r\n try {\r\n callback(offlineState);\r\n }\r\n catch (e) {\r\n // Do nothing, just making sure we run all of the callbacks\r\n }\r\n });\r\n }\r\n }\r\n function setOnlineState(newState) {\r\n uState = newState;\r\n listnerNoticeCheck();\r\n }\r\n function _setOnline() {\r\n rState = 1 /* eOfflineValue.Online */;\r\n listnerNoticeCheck();\r\n }\r\n function _setOffline() {\r\n rState = 2 /* eOfflineValue.Offline */;\r\n listnerNoticeCheck();\r\n }\r\n function _unload() {\r\n var win = getWindow();\r\n if (win && _isListening) {\r\n _disableEvents(win, _evtNamespace);\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (!isUndefined(target.ononline)) {\r\n _disableEvents(target, _evtNamespace);\r\n }\r\n }\r\n _isListening = false;\r\n }\r\n }\r\n function addListener(callback) {\r\n listenerList[_DYN_PUSH /* @min:%2epush */](callback);\r\n // Define rm as an instance of IUnloadHook\r\n return {\r\n rm: function () {\r\n var index = listenerList.indexOf(callback);\r\n if (index > -1) {\r\n return listenerList.splice(index, 1);\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n };\r\n }\r\n return {\r\n isOnline: _isOnline,\r\n isListening: function () { return _isListening; },\r\n unload: _unload,\r\n addListener: addListener,\r\n setOnlineState: setOnlineState\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { createEnumStyle } from \"./EnumHelperFuncs\";\r\nexport var ActiveStatus = createEnumStyle({\r\n NONE: 0 /* eActiveStatus.NONE */,\r\n PENDING: 3 /* eActiveStatus.PENDING */,\r\n INACTIVE: 1 /* eActiveStatus.INACTIVE */,\r\n ACTIVE: 2 /* eActiveStatus.ACTIVE */\r\n});\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nexport var ChannelControllerPriority = 500;\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\n// export const SampleRate = \"sampleRate\";\r\n// export const ProcessLegacy = \"ProcessLegacy\";\r\n// export const HttpMethod = \"http.method\";\r\n// export const DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\n// export const DEFAULT_BREEZE_PATH = \"/v2/track\";\r\n// export const strNotSpecified = \"not_specified\";\r\n// export const strIkey = \"iKey\";\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { createPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { arrForEach, dumpObj, getNavigator, getWindow, isFunction, objKeys } from \"@nevware21/ts-utils\";\r\nimport { _DYN_DATA, _DYN_HEADERS, _DYN_INITIALIZE, _DYN_LENGTH, _DYN_MESSAGE, _DYN_PROTOCOL, _DYN_REPLACE, _DYN_SEND_POST, _DYN_SET_REQUEST_HEADER, _DYN_STATUS, _DYN_TIMEOUT, _DYN_TO_LOWER_CASE, _DYN_URL_STRING, _DYN_VALUE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { DisabledPropertyName } from \"./Constants\";\r\nimport { _throwInternal, _warnToConsole } from \"./DiagnosticLogger\";\r\nimport { getLocation, isBeaconsSupported, isFetchSupported, isXhrSupported, useXDomainRequest } from \"./EnvUtils\";\r\nimport { _getAllResponseHeaders, formatErrorMessageXdr, formatErrorMessageXhr, getResponseText, openXhr } from \"./HelperFuncs\";\r\nvar STR_EMPTY = \"\";\r\nvar STR_NO_RESPONSE_BODY = \"NoResponseBody\";\r\nvar _noResponseQs = \"&\" + STR_NO_RESPONSE_BODY + \"=true\";\r\nvar STR_POST_METHOD = \"POST\";\r\n/**\r\n * This Internal component\r\n * Manager SendPost functions\r\n * SendPostManger\r\n * @internal for internal use only\r\n */\r\nvar SenderPostManager = /** @class */ (function () {\r\n function SenderPostManager() {\r\n var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n var _enableSendPromise;\r\n var _isInitialized;\r\n var _diagLog;\r\n var _isOneDs;\r\n var _onCompleteFuncs;\r\n var _disableCredentials;\r\n var _fallbackInst;\r\n var _disableXhr;\r\n var _disableBeacon;\r\n var _disableBeaconSync;\r\n var _disableFetchKeepAlive;\r\n var _addNoResponse;\r\n var _timeoutWrapper;\r\n dynamicProto(SenderPostManager, this, function (_self, _base) {\r\n var _sendCredentials = true; // for 1ds\r\n _initDefaults();\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, diagLog) {\r\n _diagLog = diagLog;\r\n if (_isInitialized) {\r\n _throwInternal(_diagLog, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender is already initialized\");\r\n }\r\n _self.SetConfig(config);\r\n _isInitialized = true;\r\n };\r\n _self[\"_getDbgPlgTargets\"] = function () {\r\n return [_isInitialized, _isOneDs, _disableCredentials, _enableSendPromise];\r\n };\r\n // This componet might get its config from sender, offline sender, 1ds post\r\n // so set this function to mock dynamic changes\r\n _self.SetConfig = function (config) {\r\n try {\r\n _onCompleteFuncs = config.senderOnCompleteCallBack || {};\r\n _disableCredentials = !!config.disableCredentials;\r\n _isOneDs = !!config.isOneDs;\r\n _enableSendPromise = !!config.enableSendPromise;\r\n _disableXhr = !!config.disableXhr;\r\n _disableBeacon = !!config.disableBeacon;\r\n _disableBeaconSync = !!config.disableBeaconSync;\r\n _timeoutWrapper = config.timeWrapper;\r\n _addNoResponse = !!config.addNoResponse;\r\n _disableFetchKeepAlive = !!config.disableFetchKeepAlive;\r\n _fallbackInst = { sendPOST: _xhrSender };\r\n if (!_isOneDs) {\r\n _sendCredentials = false; // for appInsights, set it to false always\r\n }\r\n if (_disableCredentials) {\r\n var location_1 = getLocation();\r\n if (location_1 && location_1.protocol && location_1.protocol[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"file:\") {\r\n // Special case where a local html file fails with a CORS error on Chromium browsers\r\n _sendCredentials = false;\r\n }\r\n }\r\n return true;\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return false;\r\n };\r\n _self.getSyncFetchPayload = function () {\r\n return _syncFetchPayload;\r\n };\r\n _self.getSenderInst = function (transports, sync) {\r\n if (transports && transports[_DYN_LENGTH /* @min:%2elength */]) {\r\n return _getSenderInterface(transports, sync);\r\n }\r\n return null;\r\n };\r\n _self.getFallbackInst = function () {\r\n return _fallbackInst;\r\n };\r\n _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] = function (unloadCtx, unloadState) {\r\n _initDefaults();\r\n };\r\n /**\r\n * success handler\r\n */\r\n function _onSuccess(res, onComplete) {\r\n _doOnComplete(onComplete, 200, {}, res);\r\n }\r\n /**\r\n * error handler\r\n */\r\n function _onError(message, onComplete) {\r\n _throwInternal(_diagLog, 2 /* eLoggingSeverity.WARNING */, 26 /* _eInternalMessageId.OnError */, \"Failed to send telemetry.\", { message: message });\r\n _doOnComplete(onComplete, 400, {});\r\n }\r\n function _onNoPayloadUrl(onComplete) {\r\n _onError(\"No endpoint url is provided for the batch\", onComplete);\r\n }\r\n function _getSenderInterface(transports, syncSupport) {\r\n var _a;\r\n var transportType = 0 /* TransportType.NotSet */;\r\n var sendPostFunc = null;\r\n var lp = 0;\r\n while (sendPostFunc == null && lp < transports[_DYN_LENGTH /* @min:%2elength */]) {\r\n transportType = transports[lp];\r\n if (!_disableXhr && transportType === 1 /* TransportType.Xhr */) {\r\n if (useXDomainRequest()) {\r\n // IE 8 and 9\r\n sendPostFunc = _xdrSender;\r\n }\r\n else if (isXhrSupported()) {\r\n sendPostFunc = _xhrSender;\r\n }\r\n }\r\n else if (transportType === 2 /* TransportType.Fetch */ && isFetchSupported(syncSupport) && (!syncSupport || !_disableFetchKeepAlive)) {\r\n sendPostFunc = _doFetchSender;\r\n }\r\n else if (transportType === 3 /* TransportType.Beacon */ && isBeaconsSupported() && (syncSupport ? !_disableBeaconSync : !_disableBeacon)) {\r\n sendPostFunc = _beaconSender;\r\n }\r\n lp++;\r\n }\r\n if (sendPostFunc) {\r\n return _a = {\r\n _transport: transportType,\r\n _isSync: syncSupport\r\n },\r\n _a[_DYN_SEND_POST /* @min:sendPOST */] = sendPostFunc,\r\n _a;\r\n }\r\n return null;\r\n }\r\n function _doOnComplete(oncomplete, status, headers, response) {\r\n try {\r\n oncomplete && oncomplete(status, headers, response);\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n function _doBeaconSend(payload, oncomplete) {\r\n var nav = getNavigator();\r\n var url = payload[_DYN_URL_STRING /* @min:%2eurlString */];\r\n if (!url) {\r\n _onNoPayloadUrl(oncomplete);\r\n // return true here, because we don't want to retry it with fallback sender\r\n return true;\r\n }\r\n url = payload[_DYN_URL_STRING /* @min:%2eurlString */] + (_addNoResponse ? _noResponseQs : STR_EMPTY);\r\n var data = payload[_DYN_DATA /* @min:%2edata */];\r\n // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n var plainTextBatch = _isOneDs ? data : new Blob([data], { type: \"text/plain;charset=UTF-8\" });\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n var queued = nav.sendBeacon(url, plainTextBatch);\r\n return queued;\r\n }\r\n /**\r\n * Send Beacon API request\r\n * @param payload - {string} - The data payload to be sent.\r\n * @param sync - {boolean} - not used\r\n * Note: Beacon API does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _beaconSender(payload, oncomplete, sync) {\r\n var data = payload[_DYN_DATA /* @min:%2edata */];\r\n try {\r\n if (data) {\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n if (!_doBeaconSend(payload, oncomplete)) {\r\n var onRetry = _onCompleteFuncs && _onCompleteFuncs.beaconOnRetry;\r\n if (onRetry && isFunction(onRetry)) {\r\n onRetry(payload, oncomplete, _doBeaconSend);\r\n }\r\n else {\r\n _fallbackInst && _fallbackInst[_DYN_SEND_POST /* @min:%2esendPOST */](payload, oncomplete, true);\r\n _throwInternal(_diagLog, 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n }\r\n }\r\n else {\r\n // if can send\r\n _onSuccess(STR_EMPTY, oncomplete);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _isOneDs && _warnToConsole(_diagLog, \"Failed to send telemetry using sendBeacon API. Ex:\" + dumpObj(e));\r\n _doOnComplete(oncomplete, _isOneDs ? 0 : 400, {}, STR_EMPTY);\r\n }\r\n return;\r\n }\r\n /**\r\n * Send XMLHttpRequest\r\n * @param payload - {string} - The data payload to be sent.\r\n * @param sync - {boolean} - Indicates if the request should be sent synchronously\r\n */\r\n function _xhrSender(payload, oncomplete, sync) {\r\n //let internalPayload = payload as IInternalPayloadData;\r\n var thePromise;\r\n var resolveFunc;\r\n var rejectFunc;\r\n var headers = payload[_DYN_HEADERS /* @min:%2eheaders */] || {};\r\n if (!sync && _enableSendPromise) {\r\n thePromise = createPromise(function (resolve, reject) {\r\n resolveFunc = resolve;\r\n rejectFunc = reject;\r\n });\r\n }\r\n if (_isOneDs && sync && payload.disableXhrSync) {\r\n sync = false;\r\n }\r\n //const xhr = new XMLHttpRequest();\r\n var endPointUrl = payload[_DYN_URL_STRING /* @min:%2eurlString */];\r\n if (!endPointUrl) {\r\n _onNoPayloadUrl(oncomplete);\r\n resolveFunc && resolveFunc(false);\r\n return;\r\n }\r\n var xhr = openXhr(STR_POST_METHOD, endPointUrl, _sendCredentials, true, sync, payload[_DYN_TIMEOUT /* @min:%2etimeout */]);\r\n if (!_isOneDs) {\r\n // application/json should NOT add to 1ds post by default\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](\"Content-type\", \"application/json\");\r\n }\r\n arrForEach(objKeys(headers), function (headerName) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](headerName, headers[headerName]);\r\n });\r\n xhr.onreadystatechange = function () {\r\n if (!_isOneDs) {\r\n _doOnReadyFunc(xhr);\r\n if (xhr.readyState === 4) {\r\n resolveFunc && resolveFunc(true);\r\n }\r\n }\r\n };\r\n xhr.onload = function () {\r\n if (_isOneDs) {\r\n _doOnReadyFunc(xhr);\r\n }\r\n };\r\n function _doOnReadyFunc(xhr) {\r\n var onReadyFunc = _onCompleteFuncs && _onCompleteFuncs.xhrOnComplete;\r\n var onReadyFuncExist = onReadyFunc && isFunction(onReadyFunc);\r\n if (onReadyFuncExist) {\r\n onReadyFunc(xhr, oncomplete, payload);\r\n }\r\n else {\r\n var response = getResponseText(xhr);\r\n _doOnComplete(oncomplete, xhr[_DYN_STATUS /* @min:%2estatus */], _getAllResponseHeaders(xhr, _isOneDs), response);\r\n }\r\n }\r\n xhr.onerror = function (event) {\r\n _doOnComplete(oncomplete, _isOneDs ? xhr[_DYN_STATUS /* @min:%2estatus */] : 400, _getAllResponseHeaders(xhr, _isOneDs), _isOneDs ? STR_EMPTY : formatErrorMessageXhr(xhr));\r\n rejectFunc && rejectFunc(event);\r\n };\r\n xhr.ontimeout = function () {\r\n _doOnComplete(oncomplete, _isOneDs ? xhr[_DYN_STATUS /* @min:%2estatus */] : 500, _getAllResponseHeaders(xhr, _isOneDs), _isOneDs ? STR_EMPTY : formatErrorMessageXhr(xhr));\r\n resolveFunc && resolveFunc(false);\r\n };\r\n xhr.send(payload[_DYN_DATA /* @min:%2edata */]);\r\n return thePromise;\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload - {string} - The data payload to be sent.\r\n * @param sync - {boolean} - For fetch this identifies whether we are \"unloading\" (false) or a normal request\r\n */\r\n function _doFetchSender(payload, oncomplete, sync) {\r\n var _a;\r\n var endPointUrl = payload[_DYN_URL_STRING /* @min:%2eurlString */];\r\n var batch = payload[_DYN_DATA /* @min:%2edata */];\r\n var plainTextBatch = _isOneDs ? batch : new Blob([batch], { type: \"application/json\" });\r\n var thePromise;\r\n var resolveFunc;\r\n var rejectFunc;\r\n var requestHeaders = new Headers();\r\n var batchLength = batch[_DYN_LENGTH /* @min:%2elength */];\r\n var ignoreResponse = false;\r\n var responseHandled = false;\r\n var headers = payload[_DYN_HEADERS /* @min:%2eheaders */] || {};\r\n //TODO: handle time out for 1ds\r\n var init = (_a = {\r\n method: STR_POST_METHOD,\r\n body: plainTextBatch\r\n },\r\n _a[DisabledPropertyName] = true // Mark so we don't attempt to track this request\r\n ,\r\n _a);\r\n // Only add headers if there are headers to add, due to issue with some polyfills\r\n if (payload.headers && objKeys(payload.headers)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(objKeys(headers), function (headerName) {\r\n requestHeaders.append(headerName, headers[headerName]);\r\n });\r\n init[_DYN_HEADERS /* @min:%2eheaders */] = requestHeaders;\r\n }\r\n if (_sendCredentials && _isOneDs) {\r\n // for 1ds, Don't send credentials when URL is file://\r\n init.credentials = \"include\";\r\n }\r\n if (sync) {\r\n init.keepalive = true;\r\n _syncFetchPayload += batchLength;\r\n if (_isOneDs) {\r\n if (payload[\"_sendReason\"] === 2 /* SendRequestReason.Unload */) {\r\n // As a sync request (during unload), it is unlikely that we will get a chance to process the response so\r\n // just like beacon send assume that the events have been accepted and processed\r\n ignoreResponse = true;\r\n if (_addNoResponse) {\r\n endPointUrl += _noResponseQs;\r\n }\r\n }\r\n }\r\n else {\r\n // for appinsights, set to true for all sync request\r\n ignoreResponse = true;\r\n }\r\n }\r\n var request = new Request(endPointUrl, init);\r\n try {\r\n // Also try and tag the request (just in case the value in init is not copied over)\r\n request[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n if (!sync && _enableSendPromise) {\r\n thePromise = createPromise(function (resolve, reject) {\r\n resolveFunc = resolve;\r\n rejectFunc = reject;\r\n });\r\n }\r\n if (!endPointUrl) {\r\n _onNoPayloadUrl(oncomplete);\r\n resolveFunc && resolveFunc(false);\r\n return;\r\n }\r\n function _handleError(res) {\r\n // In case there is an error in the request. Set the status to 0 for 1ds and 400 for appInsights\r\n // so that the events can be retried later.\r\n _doOnComplete(oncomplete, _isOneDs ? 0 : 400, {}, _isOneDs ? STR_EMPTY : res);\r\n }\r\n function _onFetchComplete(response, payload, value) {\r\n var status = response[_DYN_STATUS /* @min:%2estatus */];\r\n var onCompleteFunc = _onCompleteFuncs.fetchOnComplete;\r\n if (onCompleteFunc && isFunction(onCompleteFunc)) {\r\n onCompleteFunc(response, oncomplete, value || STR_EMPTY, payload);\r\n }\r\n else {\r\n _doOnComplete(oncomplete, status, {}, value || STR_EMPTY);\r\n }\r\n }\r\n try {\r\n doAwaitResponse(fetch(_isOneDs ? endPointUrl : request, _isOneDs ? init : null), function (result) {\r\n if (sync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n if (!result.rejected) {\r\n var response_1 = result[_DYN_VALUE /* @min:%2evalue */];\r\n try {\r\n /**\r\n * The Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500.\r\n * Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure\r\n * or if anything prevented the request from completing.\r\n */\r\n if (!_isOneDs && !response_1.ok) {\r\n // this is for appInsights only\r\n _handleError(response_1.statusText);\r\n resolveFunc && resolveFunc(false);\r\n }\r\n else {\r\n if (_isOneDs && !response_1.body) {\r\n _onFetchComplete(response_1, null, STR_EMPTY);\r\n resolveFunc && resolveFunc(true);\r\n }\r\n else {\r\n doAwaitResponse(response_1.text(), function (resp) {\r\n _onFetchComplete(response_1, payload, resp[_DYN_VALUE /* @min:%2evalue */]);\r\n resolveFunc && resolveFunc(true);\r\n });\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _handleError(dumpObj(e));\r\n rejectFunc && rejectFunc(e);\r\n }\r\n }\r\n else {\r\n _handleError(result.reason && result.reason[_DYN_MESSAGE /* @min:%2emessage */]);\r\n rejectFunc && rejectFunc(result.reason);\r\n }\r\n }\r\n });\r\n }\r\n catch (e) {\r\n if (!responseHandled) {\r\n _handleError(dumpObj(e));\r\n rejectFunc && rejectFunc(e);\r\n }\r\n }\r\n if (ignoreResponse && !responseHandled) {\r\n // Assume success during unload processing as we most likely won't get the response\r\n responseHandled = true;\r\n _doOnComplete(oncomplete, 200, {});\r\n resolveFunc && resolveFunc(true);\r\n }\r\n if (_isOneDs && !responseHandled && payload[_DYN_TIMEOUT /* @min:%2etimeout */] > 0) {\r\n // Simulate timeout\r\n _timeoutWrapper && _timeoutWrapper.set(function () {\r\n if (!responseHandled) {\r\n // Assume a 500 response (which will cause a retry)\r\n responseHandled = true;\r\n _doOnComplete(oncomplete, 500, {});\r\n resolveFunc && resolveFunc(true);\r\n }\r\n }, payload[_DYN_TIMEOUT /* @min:%2etimeout */]);\r\n }\r\n return thePromise;\r\n }\r\n /**\r\n * Send XDomainRequest\r\n * @param payload - {string} - The data payload to be sent.\r\n * @param sync - {boolean} - Indicates if the request should be sent synchronously\r\n *\r\n * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n * to maintain consistency with the xhrSender's contract\r\n * Note: XDomainRequest does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _xdrSender(payload, oncomplete, sync) {\r\n // It doesn't support custom headers, so no action is taken with current requestHeaders\r\n var _window = getWindow();\r\n var xdr = new XDomainRequest();\r\n var data = payload[_DYN_DATA /* @min:%2edata */];\r\n xdr.onload = function () {\r\n var response = getResponseText(xdr);\r\n var onloadFunc = _onCompleteFuncs && _onCompleteFuncs.xdrOnComplete;\r\n if (onloadFunc && isFunction(onloadFunc)) {\r\n onloadFunc(xdr, oncomplete, payload);\r\n }\r\n else {\r\n _doOnComplete(oncomplete, 200, {}, response);\r\n }\r\n };\r\n xdr.onerror = function () {\r\n _doOnComplete(oncomplete, 400, {}, _isOneDs ? STR_EMPTY : formatErrorMessageXdr(xdr));\r\n };\r\n xdr.ontimeout = function () {\r\n _doOnComplete(oncomplete, 500, {});\r\n };\r\n xdr.onprogress = function () { };\r\n // XDomainRequest requires the same protocol as the hosting page.\r\n // If the protocol doesn't match, we can't send the telemetry :(.\r\n var hostingProtocol = _window && _window.location && _window.location[_DYN_PROTOCOL /* @min:%2eprotocol */] || \"\";\r\n var endpoint = payload[_DYN_URL_STRING /* @min:%2eurlString */];\r\n if (!endpoint) {\r\n _onNoPayloadUrl(oncomplete);\r\n return;\r\n }\r\n if (!_isOneDs && endpoint.lastIndexOf(hostingProtocol, 0) !== 0) {\r\n var msg = \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\";\r\n _throwInternal(_diagLog, 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + msg);\r\n _onError(msg, oncomplete);\r\n return;\r\n }\r\n var endpointUrl = _isOneDs ? endpoint : endpoint[_DYN_REPLACE /* @min:%2ereplace */](/^(https?:)/, \"\");\r\n xdr.open(STR_POST_METHOD, endpointUrl);\r\n if (payload[_DYN_TIMEOUT /* @min:%2etimeout */]) {\r\n xdr[_DYN_TIMEOUT /* @min:%2etimeout */] = payload[_DYN_TIMEOUT /* @min:%2etimeout */];\r\n }\r\n xdr.send(data);\r\n if (_isOneDs && sync) {\r\n _timeoutWrapper && _timeoutWrapper.set(function () {\r\n xdr.send(data);\r\n }, 0);\r\n }\r\n else {\r\n xdr.send(data);\r\n }\r\n }\r\n function _initDefaults() {\r\n _syncFetchPayload = 0;\r\n _isInitialized = false;\r\n _enableSendPromise = false;\r\n _diagLog = null;\r\n _isOneDs = null;\r\n _onCompleteFuncs = null;\r\n _disableCredentials = null;\r\n _fallbackInst = null;\r\n _disableXhr = false;\r\n _disableBeacon = false;\r\n _disableBeaconSync = false;\r\n _disableFetchKeepAlive = false;\r\n _addNoResponse = false;\r\n _timeoutWrapper = null;\r\n }\r\n });\r\n }\r\n// Removed Stub for SenderPostManager.prototype.initialize.\r\n// Removed Stub for SenderPostManager.prototype.getSyncFetchPayload.\r\n// Removed Stub for SenderPostManager.prototype.SetConfig.\r\n// Removed Stub for SenderPostManager.prototype.getSenderInst.\r\n// Removed Stub for SenderPostManager.prototype.getFallbackInst.\r\n// Removed Stub for SenderPostManager.prototype._doTeardown.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n SenderPostManager.__ieDyn=1;\n\n return SenderPostManager;\r\n}());\r\nexport { SenderPostManager };\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { arrSlice, getLength } from \"@nevware21/ts-utils\";\r\nimport { _DYN_UNLOAD } from \"../__DynamicConstants\";\r\n/**\r\n * Run the unload function of the target object if it exists\r\n * @param target - The target object that contains the unload function\r\n * @param isAsync - The caller identifies whether it is expecting the operation to complete synchronously or asynchronously. Even\r\n * if the caller is not waiting the operation may still be performed asynchronously depending on the component and the reverse is\r\n * also true.\r\n * @returns The result of the target function\r\n */\r\nexport function runTargetUnload(target, isAsync) {\r\n if (target && target[_DYN_UNLOAD /* @min:%2eunload */]) {\r\n return target[_DYN_UNLOAD /* @min:%2eunload */](isAsync);\r\n }\r\n}\r\n/**\r\n * Call the unload function on all targets handling any returned [IPromise](https://nevware21.github.io/ts-async/typedoc/interfaces/IPromise.html)\r\n * / Promise before calling the next targets unload\r\n * @param targets - An array of the targets to unload\r\n * @param isAsync - The caller identifies whether it is expecting the operations to complete synchronously or asynchronously. Even\r\n * if the caller is not waiting the operation may still be performed asynchronously depending on the component and the reverse is\r\n * also true.\r\n * @param done - Optional callback function to call once all of the unload functions have been called.\r\n */\r\nexport function doUnloadAll(targets, isAsync, done) {\r\n var result;\r\n if (!done) {\r\n result = createPromise(function (resolved) {\r\n done = resolved;\r\n });\r\n }\r\n if (targets && getLength(targets) > 0) {\r\n doAwaitResponse(runTargetUnload(targets[0], isAsync), function () {\r\n doUnloadAll(arrSlice(targets, 1), isAsync, done);\r\n });\r\n }\r\n else {\r\n done();\r\n }\r\n return result;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dumpObj } from \"@nevware21/ts-utils\";\r\nimport { _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_NAME } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { getJSON } from \"./EnvUtils\";\r\n/**\r\n * Parses the response from the backend.\r\n * @param response - XMLHttpRequest or XDomainRequest response\r\n */\r\nexport function parseResponse(response, diagLog) {\r\n try {\r\n if (response && response !== \"\") {\r\n var result = getJSON().parse(response);\r\n if (result && result[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] && result[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] >= result.itemsAccepted &&\r\n result.itemsReceived - result.itemsAccepted === result.errors[_DYN_LENGTH /* @min:%2elength */]) {\r\n return result;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(diagLog, 1 /* eLoggingSeverity.CRITICAL */, 43 /* _eInternalMessageId.InvalidBackendResponse */, \"Cannot parse the response. \" + (e[_DYN_NAME /* @min:%2ename */] || dumpObj(e)), {\r\n response: response\r\n });\r\n }\r\n return null;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { createClassFromInterface } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _aiNameFunc(baseName) {\r\n var aiName = \"ai.\" + baseName + \".\";\r\n return function (name) {\r\n return aiName + name;\r\n };\r\n}\r\nvar _aiApplication = _aiNameFunc(\"application\");\r\nvar _aiDevice = _aiNameFunc(\"device\");\r\nvar _aiLocation = _aiNameFunc(\"location\");\r\nvar _aiOperation = _aiNameFunc(\"operation\");\r\nvar _aiSession = _aiNameFunc(\"session\");\r\nvar _aiUser = _aiNameFunc(\"user\");\r\nvar _aiCloud = _aiNameFunc(\"cloud\");\r\nvar _aiInternal = _aiNameFunc(\"internal\");\r\nvar ContextTagKeys = /** @class */ (function (_super) {\r\n __extends(ContextTagKeys, _super);\r\n function ContextTagKeys() {\r\n return _super.call(this) || this;\r\n }\r\n return ContextTagKeys;\r\n}(createClassFromInterface({\r\n applicationVersion: _aiApplication(\"ver\"),\r\n applicationBuild: _aiApplication(\"build\"),\r\n applicationTypeId: _aiApplication(\"typeId\"),\r\n applicationId: _aiApplication(\"applicationId\"),\r\n applicationLayer: _aiApplication(\"layer\"),\r\n deviceId: _aiDevice(\"id\"),\r\n deviceIp: _aiDevice(\"ip\"),\r\n deviceLanguage: _aiDevice(\"language\"),\r\n deviceLocale: _aiDevice(\"locale\"),\r\n deviceModel: _aiDevice(\"model\"),\r\n deviceFriendlyName: _aiDevice(\"friendlyName\"),\r\n deviceNetwork: _aiDevice(\"network\"),\r\n deviceNetworkName: _aiDevice(\"networkName\"),\r\n deviceOEMName: _aiDevice(\"oemName\"),\r\n deviceOS: _aiDevice(\"os\"),\r\n deviceOSVersion: _aiDevice(\"osVersion\"),\r\n deviceRoleInstance: _aiDevice(\"roleInstance\"),\r\n deviceRoleName: _aiDevice(\"roleName\"),\r\n deviceScreenResolution: _aiDevice(\"screenResolution\"),\r\n deviceType: _aiDevice(\"type\"),\r\n deviceMachineName: _aiDevice(\"machineName\"),\r\n deviceVMName: _aiDevice(\"vmName\"),\r\n deviceBrowser: _aiDevice(\"browser\"),\r\n deviceBrowserVersion: _aiDevice(\"browserVersion\"),\r\n locationIp: _aiLocation(\"ip\"),\r\n locationCountry: _aiLocation(\"country\"),\r\n locationProvince: _aiLocation(\"province\"),\r\n locationCity: _aiLocation(\"city\"),\r\n operationId: _aiOperation(\"id\"),\r\n operationName: _aiOperation(\"name\"),\r\n operationParentId: _aiOperation(\"parentId\"),\r\n operationRootId: _aiOperation(\"rootId\"),\r\n operationSyntheticSource: _aiOperation(\"syntheticSource\"),\r\n operationCorrelationVector: _aiOperation(\"correlationVector\"),\r\n sessionId: _aiSession(\"id\"),\r\n sessionIsFirst: _aiSession(\"isFirst\"),\r\n sessionIsNew: _aiSession(\"isNew\"),\r\n userAccountAcquisitionDate: _aiUser(\"accountAcquisitionDate\"),\r\n userAccountId: _aiUser(\"accountId\"),\r\n userAgent: _aiUser(\"userAgent\"),\r\n userId: _aiUser(\"id\"),\r\n userStoreRegion: _aiUser(\"storeRegion\"),\r\n userAuthUserId: _aiUser(\"authUserId\"),\r\n userAnonymousUserAcquisitionDate: _aiUser(\"anonUserAcquisitionDate\"),\r\n userAuthenticatedUserAcquisitionDate: _aiUser(\"authUserAcquisitionDate\"),\r\n cloudName: _aiCloud(\"name\"),\r\n cloudRole: _aiCloud(\"role\"),\r\n cloudRoleVer: _aiCloud(\"roleVer\"),\r\n cloudRoleInstance: _aiCloud(\"roleInstance\"),\r\n cloudEnvironment: _aiCloud(\"environment\"),\r\n cloudLocation: _aiCloud(\"location\"),\r\n cloudDeploymentUnit: _aiCloud(\"deploymentUnit\"),\r\n internalNodeName: _aiInternal(\"nodeName\"),\r\n internalSdkVersion: _aiInternal(\"sdkVersion\"),\r\n internalAgentVersion: _aiInternal(\"agentVersion\"),\r\n internalSnippet: _aiInternal(\"snippet\"),\r\n internalSdkSrc: _aiInternal(\"sdkSrc\")\r\n})));\r\nexport { ContextTagKeys };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { ContextTagKeys } from \"./Contracts/ContextTagKeys\";\r\nexport var Extensions = {\r\n UserExt: \"user\",\r\n DeviceExt: \"device\",\r\n TraceExt: \"trace\",\r\n WebExt: \"web\",\r\n AppExt: \"app\",\r\n OSExt: \"os\",\r\n SessionExt: \"ses\",\r\n SDKExt: \"sdk\"\r\n};\r\nexport var CtxTagKeys = new ContextTagKeys();\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../../Constants\";\r\nimport { _DYN_NAME } from \"../../__DynamicConstants\";\r\nimport { dataSanitizeString } from \"./DataSanitizer\";\r\nvar Envelope = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Envelope(logger, data, name) {\r\n var _this = this;\r\n var _self = this;\r\n _self.ver = 1;\r\n _self.sampleRate = 100.0;\r\n _self.tags = {};\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self.data = data;\r\n _self.time = toISOString(new Date());\r\n _self.aiDataContract = {\r\n time: 1 /* FieldType.Required */,\r\n iKey: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n sampleRate: function () {\r\n return (_this.sampleRate === 100) ? 4 /* FieldType.Hidden */ : 1 /* FieldType.Required */;\r\n },\r\n tags: 1 /* FieldType.Required */,\r\n data: 1 /* FieldType.Required */\r\n };\r\n }\r\n return Envelope;\r\n}());\r\nexport { Envelope };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Data = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Data(baseType, data) {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n baseType: 1 /* FieldType.Required */,\r\n baseData: 1 /* FieldType.Required */\r\n };\r\n this.baseType = baseType;\r\n this.baseData = data;\r\n }\r\n return Data;\r\n}());\r\nexport { Data };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// ###################################################################################################################################################\r\n// Note: DON'T Export these const from the package as we are still targeting IE/ES5 this will export a mutable variables that someone could change ###\r\n// ###################################################################################################################################################\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nexport var STR_DURATION = \"duration\";\r\n","/*\n * Application Insights JavaScript SDK - Channel, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TAGS = \"tags\"; // Count: 17\r\nexport var _DYN_DEVICE_TYPE = \"deviceType\"; // Count: 3\r\nexport var _DYN_DATA = \"data\"; // Count: 15\r\nexport var _DYN_NAME = \"name\"; // Count: 8\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 38\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 5\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 10\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 7\r\nexport var _DYN__GET = \"_get\"; // Count: 5\r\nexport var _DYN_ENQUEUE = \"enqueue\"; // Count: 7\r\nexport var _DYN_COUNT = \"count\"; // Count: 7\r\nexport var _DYN_EVENTS_LIMIT_IN_MEM = \"eventsLimitInMem\"; // Count: 2\r\nexport var _DYN_PUSH = \"push\"; // Count: 9\r\nexport var _DYN_ITEM = \"item\"; // Count: 6\r\nexport var _DYN_EMIT_LINE_DELIMITED_0 = \"emitLineDelimitedJson\"; // Count: 3\r\nexport var _DYN_CLEAR = \"clear\"; // Count: 6\r\nexport var _DYN_CREATE_NEW = \"createNew\"; // Count: 3\r\nexport var _DYN_MARK_AS_SENT = \"markAsSent\"; // Count: 4\r\nexport var _DYN_CLEAR_SENT = \"clearSent\"; // Count: 5\r\nexport var _DYN_BUFFER_OVERRIDE = \"bufferOverride\"; // Count: 3\r\nexport var _DYN__BUFFER__KEY = \"BUFFER_KEY\"; // Count: 5\r\nexport var _DYN__SENT__BUFFER__KEY = \"SENT_BUFFER_KEY\"; // Count: 8\r\nexport var _DYN_CONCAT = \"concat\"; // Count: 6\r\nexport var _DYN__MAX__BUFFER__SIZE = \"MAX_BUFFER_SIZE\"; // Count: 5\r\nexport var _DYN_TRIGGER_SEND = \"triggerSend\"; // Count: 5\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 16\r\nexport var _DYN_INITIALIZE = \"initialize\"; // Count: 3\r\nexport var _DYN__SENDER = \"_sender\"; // Count: 5\r\nexport var _DYN_CUSTOM_HEADERS = \"customHeaders\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 2\r\nexport var _DYN_ONUNLOAD_DISABLE_BEA2 = \"onunloadDisableBeacon\"; // Count: 3\r\nexport var _DYN_IS_BEACON_API_DISABL3 = \"isBeaconApiDisabled\"; // Count: 3\r\nexport var _DYN_ALWAYS_USE_XHR_OVERR4 = \"alwaysUseXhrOverride\"; // Count: 2\r\nexport var _DYN_DISABLE_XHR = \"disableXhr\"; // Count: 3\r\nexport var _DYN_ENABLE_SESSION_STORA5 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN__BUFFER = \"_buffer\"; // Count: 9\r\nexport var _DYN_ONUNLOAD_DISABLE_FET6 = \"onunloadDisableFetch\"; // Count: 2\r\nexport var _DYN_DISABLE_SEND_BEACON_7 = \"disableSendBeaconSplit\"; // Count: 2\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 2\r\nexport var _DYN_ENABLE_SEND_PROMISE = \"enableSendPromise\"; // Count: 2\r\nexport var _DYN_GET_SENDER_INST = \"getSenderInst\"; // Count: 4\r\nexport var _DYN_UNLOAD_TRANSPORTS = \"unloadTransports\"; // Count: 2\r\nexport var _DYN_CONVERT_UNDEFINED = \"convertUndefined\"; // Count: 2\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 2\r\nexport var _DYN_SERIALIZE = \"serialize\"; // Count: 4\r\nexport var _DYN__ON_ERROR = \"_onError\"; // Count: 7\r\nexport var _DYN__ON_PARTIAL_SUCCESS = \"_onPartialSuccess\"; // Count: 3\r\nexport var _DYN__ON_SUCCESS = \"_onSuccess\"; // Count: 6\r\nexport var _DYN_ITEMS_RECEIVED = \"itemsReceived\"; // Count: 3\r\nexport var _DYN_ITEMS_ACCEPTED = \"itemsAccepted\"; // Count: 3\r\nexport var _DYN_ORI_PAYLOAD = \"oriPayload\"; // Count: 3\r\nexport var _DYN_BASE_TYPE = \"baseType\"; // Count: 4\r\nexport var _DYN_SAMPLE_RATE = \"sampleRate\"; // Count: 4\r\nexport var _DYN_EVENTS_SEND_REQUEST = \"eventsSendRequest\"; // Count: 2\r\nexport var _DYN_GET_SAMPLING_SCORE = \"getSamplingScore\"; // Count: 2\r\nexport var _DYN_GET_HASH_CODE_SCORE = \"getHashCodeScore\"; // Count: 4\r\n","/*\n * Application Insights JavaScript SDK - Channel, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { CtxTagKeys, Data, Envelope, Event, Exception, HttpMethod, Metric, PageView, PageViewPerformance, RemoteDependencyData, SampleRate, Trace, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, _warnToConsole, getJSON, hasJSON, isNullOrUndefined, isNumber, isString, isTruthy, objForEachKey, optimizeObject, setValue, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION } from \"./InternalConstants\";\r\nimport { _DYN_DATA, _DYN_DATA_TYPE, _DYN_DEVICE_TYPE, _DYN_ENVELOPE_TYPE, _DYN_LENGTH, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_STRINGIFY, _DYN_TAGS, _DYN_TO_STRING, _DYN_TRACE_ID } from \"./__DynamicConstants\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n // todo: switch to keys from common in this method\r\n var envTags = env[_DYN_TAGS /* @min:%2etags */] = env[_DYN_TAGS /* @min:%2etags */] || {};\r\n var itmExt = item.ext = item.ext || {};\r\n var itmTags = item[_DYN_TAGS /* @min:%2etags */] = item[_DYN_TAGS /* @min:%2etags */] || [];\r\n var extUser = itmExt.user;\r\n if (extUser) {\r\n _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n }\r\n var extApp = itmExt.app;\r\n if (extApp) {\r\n _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n }\r\n var extDevice = itmExt.device;\r\n if (extDevice) {\r\n _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice.deviceClass);\r\n _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice[_DYN_DEVICE_TYPE /* @min:%2edeviceType */]);\r\n }\r\n var web = item.ext.web;\r\n if (web) {\r\n _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n var envData = env[_DYN_DATA /* @min:%2edata */] = env[_DYN_DATA /* @min:%2edata */] || {};\r\n var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n _setValueIf(envProps, \"domain\", web.domain);\r\n _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n }\r\n var extOs = itmExt.os;\r\n if (extOs) {\r\n _setValueIf(envTags, CtxTagKeys.deviceOS, extOs[_DYN_NAME /* @min:%2ename */]);\r\n _setValueIf(envTags, CtxTagKeys.deviceOSVersion, extOs.osVer);\r\n }\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n var extTrace = itmExt.trace;\r\n if (extTrace) {\r\n _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace[_DYN_NAME /* @min:%2ename */]));\r\n _setValueIf(envTags, CtxTagKeys.operationId, extTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n var tgs = {};\r\n // deals with tags.push({object})\r\n for (var i = itmTags[_DYN_LENGTH /* @min:%2elength */] - 1; i >= 0; i--) {\r\n var tg = itmTags[i];\r\n objForEachKey(tg, function (key, value) {\r\n tgs[key] = value;\r\n });\r\n itmTags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value (and handles hasOwnProperty)\r\n objForEachKey(itmTags, function (tg, value) {\r\n tgs[tg] = value;\r\n });\r\n var theTags = __assign(__assign({}, envTags), tgs);\r\n if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n theTags[CtxTagKeys.internalSdkVersion] = dataSanitizeString(logger, \"javascript:\".concat(EnvelopeCreator.Version), 64);\r\n }\r\n env[_DYN_TAGS /* @min:%2etags */] = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n if (!isNullOrUndefined(data)) {\r\n objForEachKey(data, function (key, value) {\r\n if (isNumber(value)) {\r\n measurements[key] = value;\r\n }\r\n else if (isString(value)) {\r\n properties[key] = value;\r\n }\r\n else if (hasJSON()) {\r\n properties[key] = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n });\r\n }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n if (!isNullOrUndefined(properties)) {\r\n objForEachKey(properties, function (key, value) {\r\n properties[key] = value || customUndefinedValue;\r\n });\r\n }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n var envelope = new Envelope(logger, data, envelopeType);\r\n _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n if ((telemetryItem[strBaseData] || {}).startTime) {\r\n // Starting from Version 3.0.3, the time property will be assigned by the startTime value,\r\n // which records the loadEvent time for the pageView event.\r\n envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope[_DYN_NAME /* @min:%2ename */] = envelope[_DYN_NAME /* @min:%2ename */].replace(\"{0}\", iKeyNoDashes);\r\n // extract all extensions from ctx\r\n _extractPartAExtensions(logger, telemetryItem, envelope);\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n telemetryItem[_DYN_TAGS /* @min:%2etags */] = telemetryItem[_DYN_TAGS /* @min:%2etags */] || [];\r\n return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 46 /* _eInternalMessageId.TelemetryEnvelopeInvalid */, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n}\r\nexport var EnvelopeCreator = {\r\n Version: '3.3.0'\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n if (isNullOrUndefined(bd)) {\r\n _warnToConsole(logger, \"Invalid input for dependency data\");\r\n return null;\r\n }\r\n var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd[_DYN_NAME /* @min:%2ename */], bd[STR_DURATION /* @min:%2eduration */], bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n var data = new Data(RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */], remoteDepData);\r\n return _createEnvelope(logger, RemoteDependencyData[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customProperties = {};\r\n var customMeasurements = {};\r\n if (telemetryItem[strBaseType] !== Event[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n }\r\n if (telemetryItem[strBaseType] === Event[_DYN_DATA_TYPE /* @min:%2edataType */]) { // take collection\r\n customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n }\r\n else { // if its not a known type, convert to custom event\r\n if (telemetryItem[strBaseData]) {\r\n _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n }\r\n }\r\n // Extract root level properties from part C telemetryItem.data\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var eventName = telemetryItem[strBaseData][_DYN_NAME /* @min:%2ename */];\r\n var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n var data = new Data(Event[_DYN_DATA_TYPE /* @min:%2edataType */], eventData);\r\n return _createEnvelope(logger, Event[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Extract root level properties from part C telemetryItem.data\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n var data = new Data(Exception[_DYN_DATA_TYPE /* @min:%2edataType */], exData);\r\n return _createEnvelope(logger, Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var baseData = telemetryItem[strBaseData];\r\n var props = baseData[strProperties] || {};\r\n var measurements = baseData[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseMetricData = new Metric(logger, baseData[_DYN_NAME /* @min:%2ename */], baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n var data = new Data(Metric[_DYN_DATA_TYPE /* @min:%2edataType */], baseMetricData);\r\n return _createEnvelope(logger, Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n var duration;\r\n var baseData = telemetryItem[strBaseData];\r\n if (!isNullOrUndefined(baseData) &&\r\n !isNullOrUndefined(baseData[strProperties]) &&\r\n !isNullOrUndefined(baseData[strProperties][STR_DURATION])) { // from part B properties\r\n duration = baseData[strProperties][STR_DURATION];\r\n delete baseData[strProperties][STR_DURATION];\r\n }\r\n else if (!isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */]) &&\r\n !isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION])) { // from custom properties\r\n duration = telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n delete telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n var currentContextId;\r\n if (((telemetryItem.ext || {}).trace || {})[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n currentContextId = telemetryItem.ext.trace[_DYN_TRACE_ID /* @min:%2etraceID */];\r\n }\r\n var id = bd.id || currentContextId;\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd[strProperties])) {\r\n var pageTags = bd[strProperties];\r\n objForEachKey(pageTags, function (key, value) {\r\n properties[key] = value;\r\n });\r\n }\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n var data = new Data(PageView[_DYN_DATA_TYPE /* @min:%2edataType */], pageViewData);\r\n return _createEnvelope(logger, PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var bd = telemetryItem[strBaseData];\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri || bd.url;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n var data = new Data(PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var message = telemetryItem[strBaseData].message;\r\n var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n var props = telemetryItem[strBaseData][strProperties] || {};\r\n var measurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n var data = new Data(Trace[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Channel, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, arrIndexOf, dumpObj, getExceptionName, getJSON, isArray, isFunction, isNullOrUndefined, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_BUFFER_OVERRIDE, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONCAT, _DYN_COUNT, _DYN_CREATE_NEW, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENQUEUE, _DYN_EVENTS_LIMIT_IN_MEM, _DYN_ITEM, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_PUSH, _DYN_STRINGIFY, _DYN__BUFFER__KEY, _DYN__GET, _DYN__MAX__BUFFER__SIZE, _DYN__SENT__BUFFER__KEY } from \"./__DynamicConstants\";\r\nvar BaseSendBuffer = /** @class */ (function () {\r\n function BaseSendBuffer(logger, config) {\r\n var _buffer = [];\r\n var _bufferFullMessageSent = false;\r\n var _maxRetryCnt = config.maxRetryCnt;\r\n this[_DYN__GET /* @min:%2e_get */] = function () {\r\n return _buffer;\r\n };\r\n this._set = function (buffer) {\r\n _buffer = buffer;\r\n return _buffer;\r\n };\r\n dynamicProto(BaseSendBuffer, this, function (_self) {\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= config[_DYN_EVENTS_LIMIT_IN_MEM /* @min:%2eeventsLimitInMem */]) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 105 /* _eInternalMessageId.InMemoryStorageBufferFull */, \"Maximum in-memory buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n payload.cnt = payload.cnt || 0;\r\n // max retry is defined, and max retry is reached, do not add the payload to buffer\r\n if (!isNullOrUndefined(_maxRetryCnt)) {\r\n if (payload.cnt > _maxRetryCnt) {\r\n // TODO: add log here on dropping payloads\r\n return;\r\n }\r\n }\r\n _buffer[_DYN_PUSH /* @min:%2epush */](payload);\r\n return;\r\n };\r\n _self[_DYN_COUNT /* @min:%2ecount */] = function () {\r\n return _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.size = function () {\r\n var size = _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < _buffer[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n size += (_buffer[lp].item)[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n if (!config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]) {\r\n size += 2;\r\n }\r\n return size;\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _buffer = [];\r\n _bufferFullMessageSent = false;\r\n };\r\n _self.getItems = function () {\r\n return _buffer.slice(0);\r\n };\r\n _self.batchPayloads = function (payloads) {\r\n if (payloads && payloads[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var payloadStr_1 = [];\r\n arrForEach(payloads, function (payload) {\r\n payloadStr_1[_DYN_PUSH /* @min:%2epush */](payload[_DYN_ITEM /* @min:%2eitem */]);\r\n });\r\n var batch = config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */] ?\r\n payloadStr_1.join(\"\\n\") :\r\n \"[\" + payloadStr_1.join(\",\") + \"]\";\r\n return batch;\r\n }\r\n return null;\r\n };\r\n _self[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = function (newLogger, newConfig, canUseSessionStorage) {\r\n var items = _buffer.slice(0);\r\n newLogger = newLogger || logger;\r\n newConfig = newConfig || {};\r\n var newBuffer = !!canUseSessionStorage ? new SessionStorageSendBuffer(newLogger, newConfig) : new ArraySendBuffer(newLogger, newConfig);\r\n arrForEach(items, function (payload) {\r\n newBuffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n });\r\n return newBuffer;\r\n };\r\n });\r\n }\r\n// Removed Stub for BaseSendBuffer.prototype.enqueue.\r\n// Removed Stub for BaseSendBuffer.prototype.count.\r\n// Removed Stub for BaseSendBuffer.prototype.size.\r\n// Removed Stub for BaseSendBuffer.prototype.clear.\r\n// Removed Stub for BaseSendBuffer.prototype.getItems.\r\n// Removed Stub for BaseSendBuffer.prototype.batchPayloads.\r\n// Removed Stub for BaseSendBuffer.prototype.createNew.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n BaseSendBuffer.__ieDyn=1;\n\n return BaseSendBuffer;\r\n}());\r\n/*\r\n * An array based send buffer.\r\n */\r\nvar ArraySendBuffer = /** @class */ (function (_super) {\r\n __extends(ArraySendBuffer, _super);\r\n function ArraySendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n dynamicProto(ArraySendBuffer, _this, function (_self, _base) {\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n // not supported\r\n };\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for ArraySendBuffer.prototype.markAsSent.\r\n// Removed Stub for ArraySendBuffer.prototype.clearSent.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n ArraySendBuffer.__ieDyn=1;\n\n return ArraySendBuffer;\r\n}(BaseSendBuffer));\r\nexport { ArraySendBuffer };\r\nvar PREVIOUS_KEYS = [\"AI_buffer\", \"AI_sentBuffer\"];\r\n/*\r\n * Session storage buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nvar SessionStorageSendBuffer = /** @class */ (function (_super) {\r\n __extends(SessionStorageSendBuffer, _super);\r\n function SessionStorageSendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n var _bufferFullMessageSent = false;\r\n //Note: should not use config.namePrefix directly, because it will always refers to the latest namePrefix\r\n var _namePrefix = config === null || config === void 0 ? void 0 : config.namePrefix;\r\n // TODO: add remove buffer override as well\r\n var _b = config[_DYN_BUFFER_OVERRIDE /* @min:%2ebufferOverride */] || { getItem: utlGetSessionStorage, setItem: utlSetSessionStorage }, getItem = _b.getItem, setItem = _b.setItem;\r\n var _maxRetryCnt = config.maxRetryCnt;\r\n dynamicProto(SessionStorageSendBuffer, _this, function (_self, _base) {\r\n var bufferItems = _getBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */]);\r\n var itemsInSentBuffer = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n var previousItems = _getPreviousEvents();\r\n var notDeliveredItems = itemsInSentBuffer[_DYN_CONCAT /* @min:%2econcat */](previousItems);\r\n var buffer = _self._set(bufferItems[_DYN_CONCAT /* @min:%2econcat */](notDeliveredItems));\r\n // If the buffer has too many items, drop items from the end.\r\n if (buffer[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n buffer[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], buffer);\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Maximum buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n payload.cnt = payload.cnt || 0;\r\n // max retry is defined, and max retry is reached, do not add the payload to buffer\r\n if (!isNullOrUndefined(_maxRetryCnt)) {\r\n if (payload.cnt > _maxRetryCnt) {\r\n // TODO: add log here on dropping payloads\r\n return;\r\n }\r\n }\r\n _base[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _self[_DYN__GET /* @min:%2e_get */]());\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _self[_DYN__GET /* @min:%2e_get */]());\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _bufferFullMessageSent = false;\r\n };\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._set(_removePayloadsFromBuffer(payload, _self[_DYN__GET /* @min:%2e_get */]())));\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n if (sentElements instanceof Array && payload instanceof Array) {\r\n sentElements = sentElements[_DYN_CONCAT /* @min:%2econcat */](payload);\r\n if (sentElements[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Sent buffer reached its maximum size: \" + sentElements[_DYN_LENGTH /* @min:%2elength */], true);\r\n sentElements[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n }\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n sentElements = _removePayloadsFromBuffer(payload, sentElements);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n };\r\n _self[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = function (newLogger, newConfig, canUseSessionStorage) {\r\n canUseSessionStorage = !!canUseSessionStorage;\r\n var unsentItems = _self[_DYN__GET /* @min:%2e_get */]().slice(0);\r\n var sentItems = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]).slice(0);\r\n newLogger = newLogger || logger;\r\n newConfig = newConfig || {};\r\n // to make sure that we do not send duplicated payloads when it is switched back to previous one\r\n _self[_DYN_CLEAR /* @min:%2eclear */]();\r\n var newBuffer = canUseSessionStorage ? new SessionStorageSendBuffer(newLogger, newConfig) : new ArraySendBuffer(newLogger, newConfig);\r\n arrForEach(unsentItems, function (payload) {\r\n newBuffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n });\r\n if (canUseSessionStorage) {\r\n // arr buffer will clear all payloads if markAsSent() is called\r\n newBuffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](sentItems);\r\n }\r\n return newBuffer;\r\n };\r\n function _removePayloadsFromBuffer(payloads, buffer) {\r\n var remaining = [];\r\n var payloadStr = [];\r\n arrForEach(payloads, function (payload) {\r\n payloadStr[_DYN_PUSH /* @min:%2epush */](payload[_DYN_ITEM /* @min:%2eitem */]);\r\n });\r\n arrForEach(buffer, function (value) {\r\n if (!isFunction(value) && arrIndexOf(payloadStr, value[_DYN_ITEM /* @min:%2eitem */]) === -1) {\r\n remaining[_DYN_PUSH /* @min:%2epush */](value);\r\n }\r\n });\r\n return remaining;\r\n }\r\n function _getBuffer(key) {\r\n var prefixedKey = key;\r\n prefixedKey = _namePrefix ? _namePrefix + \"_\" + prefixedKey : prefixedKey;\r\n return _getBufferBase(prefixedKey);\r\n }\r\n function _getBufferBase(key) {\r\n try {\r\n var bufferJson = getItem(logger, key);\r\n if (bufferJson) {\r\n var buffer_1 = getJSON().parse(bufferJson);\r\n if (isString(buffer_1)) {\r\n // When using some version prototype.js the stringify / parse cycle does not decode array's correctly\r\n buffer_1 = getJSON().parse(buffer_1);\r\n }\r\n if (buffer_1 && isArray(buffer_1)) {\r\n return buffer_1;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 42 /* _eInternalMessageId.FailedToRestoreStorageBuffer */, \" storage key: \" + key + \", \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return [];\r\n }\r\n function _setBuffer(key, buffer) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = _namePrefix ? _namePrefix + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = JSON[_DYN_STRINGIFY /* @min:%2estringify */](buffer);\r\n setItem(logger, prefixedKey, bufferJson);\r\n }\r\n catch (e) {\r\n // if there was an error, clear the buffer\r\n // telemetry is stored in the _buffer array so we won't loose any items\r\n setItem(logger, prefixedKey, JSON[_DYN_STRINGIFY /* @min:%2estringify */]([]));\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 41 /* _eInternalMessageId.FailedToSetStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e) + \". Buffer cleared\", { exception: dumpObj(e) });\r\n }\r\n }\r\n // this removes buffer with prefix+key\r\n function _getPreviousEvents() {\r\n var items = [];\r\n try {\r\n arrForEach(PREVIOUS_KEYS, function (key) {\r\n var events = _getItemsFromPreviousKey(key);\r\n items = items[_DYN_CONCAT /* @min:%2econcat */](events);\r\n // to make sure that we also transfer items from old prefixed + key buffer\r\n if (_namePrefix) {\r\n var prefixedKey = _namePrefix + \"_\" + key;\r\n var prefixEvents = _getItemsFromPreviousKey(prefixedKey);\r\n items = items[_DYN_CONCAT /* @min:%2econcat */](prefixEvents);\r\n }\r\n });\r\n return items;\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 41 /* _eInternalMessageId.FailedToSetStorageBuffer */, \"Transfer events from previous buffers: \" + getExceptionName(e) + \". previous Buffer items can not be removed\", { exception: dumpObj(e) });\r\n }\r\n return [];\r\n }\r\n // transform string[] to IInternalStorageItem[]\r\n function _getItemsFromPreviousKey(key) {\r\n try {\r\n var items = _getBufferBase(key);\r\n var transFormedItems_1 = [];\r\n arrForEach(items, function (item) {\r\n var internalItem = {\r\n item: item,\r\n cnt: 0 // previous events will be default to 0 count\r\n };\r\n transFormedItems_1[_DYN_PUSH /* @min:%2epush */](internalItem);\r\n });\r\n // remove the session storage if we can add events back\r\n utlRemoveSessionStorage(logger, key);\r\n return transFormedItems_1;\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return [];\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for SessionStorageSendBuffer.prototype.enqueue.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clear.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.markAsSent.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clearSent.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.createNew.\r\n var _a;\r\n _a = SessionStorageSendBuffer;\r\n SessionStorageSendBuffer.VERSION = \"_1\";\r\n SessionStorageSendBuffer.BUFFER_KEY = \"AI_buffer\" + _a.VERSION;\r\n SessionStorageSendBuffer.SENT_BUFFER_KEY = \"AI_sentBuffer\" + _a.VERSION;\r\n // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;\r\n return SessionStorageSendBuffer;\r\n}(BaseSendBuffer));\r\nexport { SessionStorageSendBuffer };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a, _b;\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, Trace, createOfflineListener, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { ActiveStatus, BaseTelemetryPlugin, SenderPostManager, _throwInternal, _warnToConsole, arrForEach, cfgDfBoolean, cfgDfValidate, createProcessTelemetryContext, createUniqueNamespace, dateNow, dumpObj, formatErrorMessageXdr, formatErrorMessageXhr, getExceptionName, getIEVersion, isArray, isBeaconsSupported, isFetchSupported, isNullOrUndefined, mergeEvtNamespace, objExtend, onConfigChange, parseResponse, prependTransports, runTargetUnload } from \"@microsoft/applicationinsights-core-js\";\r\nimport { isNumber, isString, isTruthy, objDeepFreeze, objDefine, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from \"./EnvelopeCreator\";\r\nimport { ArraySendBuffer, SessionStorageSendBuffer } from \"./SendBuffer\";\r\nimport { Serializer } from \"./Serializer\";\r\nimport { Sample } from \"./TelemetryProcessors/Sample\";\r\nimport { _DYN_ALWAYS_USE_XHR_OVERR4, _DYN_BASE_TYPE, _DYN_BUFFER_OVERRIDE, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONVERT_UNDEFINED, _DYN_COUNT, _DYN_CREATE_NEW, _DYN_CUSTOM_HEADERS, _DYN_DATA, _DYN_DIAG_LOG, _DYN_DISABLE_SEND_BEACON_7, _DYN_DISABLE_XHR, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENABLE_SEND_PROMISE, _DYN_ENABLE_SESSION_STORA5, _DYN_ENQUEUE, _DYN_EVENTS_LIMIT_IN_MEM, _DYN_EVENTS_SEND_REQUEST, _DYN_GET_SENDER_INST, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_BEACON_API_DISABL3, _DYN_ITEM, _DYN_ITEMS_ACCEPTED, _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_MAX_BATCH_INTERVAL, _DYN_MAX_BATCH_SIZE_IN_BY1, _DYN_ONUNLOAD_DISABLE_BEA2, _DYN_ONUNLOAD_DISABLE_FET6, _DYN_ORI_PAYLOAD, _DYN_PUSH, _DYN_SAMPLE_RATE, _DYN_SERIALIZE, _DYN_TAGS, _DYN_TRIGGER_SEND, _DYN_UNLOAD_TRANSPORTS, _DYN__BUFFER, _DYN__ON_ERROR, _DYN__ON_PARTIAL_SUCCESS, _DYN__ON_SUCCESS, _DYN__SENDER } from \"./__DynamicConstants\";\r\nvar UNDEFINED_VALUE = undefined;\r\nvar EMPTY_STR = \"\";\r\nvar FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nfunction _getResponseText(xhr) {\r\n try {\r\n return xhr.responseText;\r\n }\r\n catch (e) {\r\n // Best effort, as XHR may throw while XDR wont so just ignore\r\n }\r\n return null;\r\n}\r\nfunction isOverrideFn(httpXHROverride) {\r\n return httpXHROverride && httpXHROverride.sendPOST;\r\n}\r\nvar defaultAppInsightsChannelConfig = objDeepFreeze((_a = {\r\n // Use the default value (handles empty string in the configuration)\r\n endpointUrl: cfgDfValidate(isTruthy, DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH)\r\n },\r\n _a[_DYN_EMIT_LINE_DELIMITED_0 /* @min:emitLineDelimitedJson */] = cfgDfBoolean(),\r\n _a[_DYN_MAX_BATCH_INTERVAL /* @min:maxBatchInterval */] = 15000,\r\n _a[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:maxBatchSizeInBytes */] = 102400,\r\n _a.disableTelemetry = cfgDfBoolean(),\r\n _a[_DYN_ENABLE_SESSION_STORA5 /* @min:enableSessionStorageBuffer */] = cfgDfBoolean(true),\r\n _a.isRetryDisabled = cfgDfBoolean(),\r\n _a[_DYN_IS_BEACON_API_DISABL3 /* @min:isBeaconApiDisabled */] = cfgDfBoolean(true),\r\n _a[_DYN_DISABLE_SEND_BEACON_7 /* @min:disableSendBeaconSplit */] = cfgDfBoolean(true),\r\n _a[_DYN_DISABLE_XHR /* @min:disableXhr */] = cfgDfBoolean(),\r\n _a[_DYN_ONUNLOAD_DISABLE_FET6 /* @min:onunloadDisableFetch */] = cfgDfBoolean(),\r\n _a[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:onunloadDisableBeacon */] = cfgDfBoolean(),\r\n _a[_DYN_INSTRUMENTATION_KEY /* @min:instrumentationKey */] = UNDEFINED_VALUE,\r\n _a.namePrefix = UNDEFINED_VALUE,\r\n _a.samplingPercentage = cfgDfValidate(_chkSampling, 100),\r\n _a[_DYN_CUSTOM_HEADERS /* @min:customHeaders */] = UNDEFINED_VALUE,\r\n _a[_DYN_CONVERT_UNDEFINED /* @min:convertUndefined */] = UNDEFINED_VALUE,\r\n _a[_DYN_EVENTS_LIMIT_IN_MEM /* @min:eventsLimitInMem */] = 10000,\r\n _a[_DYN_BUFFER_OVERRIDE /* @min:bufferOverride */] = false,\r\n _a.httpXHROverride = { isVal: isOverrideFn, v: UNDEFINED_VALUE },\r\n _a[_DYN_ALWAYS_USE_XHR_OVERR4 /* @min:alwaysUseXhrOverride */] = cfgDfBoolean(),\r\n _a.transports = UNDEFINED_VALUE,\r\n _a.retryCodes = UNDEFINED_VALUE,\r\n _a.maxRetryCnt = { isVal: isNumber, v: 10 },\r\n _a));\r\nfunction _chkSampling(value) {\r\n return !isNaN(value) && value > 0 && value <= 100;\r\n}\r\nvar EnvelopeTypeCreator = (_b = {},\r\n _b[Event.dataType] = EventEnvelopeCreator,\r\n _b[Trace.dataType] = TraceEnvelopeCreator,\r\n _b[PageView.dataType] = PageViewEnvelopeCreator,\r\n _b[PageViewPerformance.dataType] = PageViewPerformanceEnvelopeCreator,\r\n _b[Exception.dataType] = ExceptionEnvelopeCreator,\r\n _b[Metric.dataType] = MetricEnvelopeCreator,\r\n _b[RemoteDependencyData.dataType] = DependencyEnvelopeCreator,\r\n _b);\r\nvar Sender = /** @class */ (function (_super) {\r\n __extends(Sender, _super);\r\n function Sender() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 1001;\r\n _this.identifier = BreezeChannelIdentifier;\r\n // Don't set the defaults here, set them in the _initDefaults() as this is also called during unload\r\n var _consecutiveErrors; // How many times in a row a retryable error condition has occurred.\r\n var _retryAt; // The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n var _lastSend; // The time of the last send operation.\r\n var _paused; // Flag indicating that the sending should be paused\r\n var _timeoutHandle; // Handle to the timer for delayed sending of batches of data.\r\n var _serializer;\r\n var _stamp_specific_redirects;\r\n var _headers;\r\n var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n var _syncUnloadSender; // The identified sender to use for the synchronous unload stage\r\n var _offlineListener;\r\n var _evtNamespace;\r\n var _endpointUrl;\r\n var _orgEndpointUrl;\r\n var _maxBatchSizeInBytes;\r\n var _beaconSupported;\r\n var _beaconOnUnloadSupported;\r\n var _beaconNormalSupported;\r\n var _customHeaders;\r\n var _disableTelemetry;\r\n var _instrumentationKey;\r\n var _convertUndefined;\r\n var _isRetryDisabled;\r\n var _maxBatchInterval;\r\n var _sessionStorageUsed;\r\n var _bufferOverrideUsed;\r\n var _namePrefix;\r\n var _enableSendPromise;\r\n var _alwaysUseCustomSend;\r\n var _disableXhr;\r\n var _fetchKeepAlive;\r\n var _xhrSend;\r\n var _fallbackSend;\r\n var _disableBeaconSplit;\r\n var _sendPostMgr;\r\n var _retryCodes;\r\n dynamicProto(Sender, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.pause = function () {\r\n _clearScheduledTimer();\r\n _paused = true;\r\n };\r\n _self.resume = function () {\r\n if (_paused) {\r\n _paused = false;\r\n _retryAt = null;\r\n // flush if we have exceeded the max-size already\r\n _checkMaxSize();\r\n _setupTimer();\r\n }\r\n };\r\n _self.flush = function (isAsync, callBack, sendReason) {\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_paused) {\r\n // Clear the normal schedule timer as we are going to try and flush ASAP\r\n _clearScheduledTimer();\r\n try {\r\n return _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](isAsync, null, sendReason || 1 /* SendRequestReason.ManualFlush */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 22 /* _eInternalMessageId.FlushFailed */, \"flush failed, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n };\r\n _self.onunloadFlush = function () {\r\n if (!_paused) {\r\n if (_beaconSupported || _alwaysUseCustomSend) {\r\n try {\r\n return _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, _doUnloadSend, 2 /* SendRequestReason.Unload */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 20 /* _eInternalMessageId.FailedToSendQueuedTelemetry */, \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n else {\r\n _self.flush(false);\r\n }\r\n }\r\n };\r\n _self.addHeader = function (name, value) {\r\n _headers[name] = value;\r\n };\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender is already initialized\");\r\n }\r\n _base[_DYN_INITIALIZE /* @min:%2einitialize */](config, core, extensions, pluginChain);\r\n var identifier = _self.identifier;\r\n _serializer = new Serializer(core.logger);\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = 0;\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _stamp_specific_redirects = 0;\r\n var diagLog = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"Sender\"), core.evtNamespace && core.evtNamespace());\r\n _offlineListener = createOfflineListener(_evtNamespace);\r\n // This function will be re-called whenever any referenced configuration is changed\r\n _self._addHook(onConfigChange(config, function (details) {\r\n var config = details.cfg;\r\n if (config.storagePrefix) {\r\n utlSetStoragePrefix(config.storagePrefix);\r\n }\r\n var ctx = createProcessTelemetryContext(null, config, core);\r\n var senderConfig = ctx.getExtCfg(identifier, defaultAppInsightsChannelConfig);\r\n objDefine(_self, \"_senderConfig\", {\r\n g: function () {\r\n return senderConfig;\r\n }\r\n });\r\n // or is not string\r\n if (core.activeStatus() === ActiveStatus.PENDING) {\r\n // waiting for core promises to be resolved\r\n // NOTE: if active status is set to pending, stop sending, clear timer here\r\n _self.pause();\r\n }\r\n else if (core.activeStatus() === ActiveStatus.ACTIVE) {\r\n // core status changed from pending to other status\r\n _self.resume();\r\n }\r\n // Only update the endpoint if the original config !== the current config\r\n // This is so any redirect endpointUrl is not overwritten\r\n if (_orgEndpointUrl !== senderConfig.endpointUrl) {\r\n if (_orgEndpointUrl) {\r\n // TODO: add doc to remind users to flush before changing endpoint, otherwise all unsent payload will be sent to new endpoint\r\n }\r\n _endpointUrl = _orgEndpointUrl = senderConfig.endpointUrl;\r\n }\r\n if (_customHeaders && _customHeaders !== senderConfig[_DYN_CUSTOM_HEADERS /* @min:%2ecustomHeaders */]) {\r\n // Removing any previously defined custom headers as they have changed\r\n arrForEach(_customHeaders, function (customHeader) {\r\n delete _headers[customHeader.header];\r\n });\r\n }\r\n _maxBatchSizeInBytes = senderConfig[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */];\r\n _beaconSupported = (senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */] === false || senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */] === false) && isBeaconsSupported();\r\n _beaconOnUnloadSupported = senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */] === false && isBeaconsSupported();\r\n _beaconNormalSupported = senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */] === false && isBeaconsSupported();\r\n _alwaysUseCustomSend = senderConfig[_DYN_ALWAYS_USE_XHR_OVERR4 /* @min:%2ealwaysUseXhrOverride */];\r\n _disableXhr = !!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */];\r\n _retryCodes = senderConfig.retryCodes;\r\n var bufferOverride = senderConfig[_DYN_BUFFER_OVERRIDE /* @min:%2ebufferOverride */];\r\n var canUseSessionStorage = !!senderConfig[_DYN_ENABLE_SESSION_STORA5 /* @min:%2eenableSessionStorageBuffer */] &&\r\n (!!bufferOverride || utlCanUseSessionStorage());\r\n var namePrefix = senderConfig.namePrefix;\r\n //Note: emitLineDelimitedJson and eventsLimitInMem is directly accessed via config in senderBuffer\r\n //Therefore, if canUseSessionStorage is not changed, we do not need to re initialize a new one\r\n var shouldUpdate = (canUseSessionStorage !== _sessionStorageUsed)\r\n || (canUseSessionStorage && (_namePrefix !== namePrefix)) // prefixName is only used in session storage\r\n || (canUseSessionStorage && (_bufferOverrideUsed !== bufferOverride));\r\n if (_self[_DYN__BUFFER /* @min:%2e_buffer */]) {\r\n // case1 (Pre and Now enableSessionStorageBuffer settings are same)\r\n // if namePrefix changes, transfer current buffer to new buffer\r\n // else no action needed\r\n //case2 (Pre and Now enableSessionStorageBuffer settings are changed)\r\n // transfer current buffer to new buffer\r\n if (shouldUpdate) {\r\n try {\r\n _self._buffer = _self._buffer[_DYN_CREATE_NEW /* @min:%2ecreateNew */](diagLog, senderConfig, canUseSessionStorage);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 12 /* _eInternalMessageId.FailedAddingTelemetryToBuffer */, \"failed to transfer telemetry to different buffer storage, telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n _checkMaxSize();\r\n }\r\n else {\r\n _self[_DYN__BUFFER /* @min:%2e_buffer */] = canUseSessionStorage\r\n ? new SessionStorageSendBuffer(diagLog, senderConfig) : new ArraySendBuffer(diagLog, senderConfig);\r\n }\r\n _namePrefix = namePrefix;\r\n _sessionStorageUsed = canUseSessionStorage;\r\n _bufferOverrideUsed = bufferOverride;\r\n _fetchKeepAlive = !senderConfig[_DYN_ONUNLOAD_DISABLE_FET6 /* @min:%2eonunloadDisableFetch */] && isFetchSupported(true);\r\n _disableBeaconSplit = !!senderConfig[_DYN_DISABLE_SEND_BEACON_7 /* @min:%2edisableSendBeaconSplit */];\r\n _self._sample = new Sample(senderConfig.samplingPercentage, diagLog);\r\n _instrumentationKey = senderConfig[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n if (!_validateInstrumentationKey(_instrumentationKey, config)) {\r\n _throwInternal(diagLog, 1 /* eLoggingSeverity.CRITICAL */, 100 /* _eInternalMessageId.InvalidInstrumentationKey */, \"Invalid Instrumentation key \" + _instrumentationKey);\r\n }\r\n _customHeaders = senderConfig[_DYN_CUSTOM_HEADERS /* @min:%2ecustomHeaders */];\r\n if (isString(_endpointUrl) && !isInternalApplicationInsightsEndpoint(_endpointUrl) && _customHeaders && _customHeaders[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(_customHeaders, function (customHeader) {\r\n _this.addHeader(customHeader.header, customHeader.value);\r\n });\r\n }\r\n else {\r\n _customHeaders = null;\r\n }\r\n _enableSendPromise = senderConfig[_DYN_ENABLE_SEND_PROMISE /* @min:%2eenableSendPromise */];\r\n var sendPostConfig = _getSendPostMgrConfig();\r\n // only init it once\r\n if (!_sendPostMgr) {\r\n _sendPostMgr = new SenderPostManager();\r\n _sendPostMgr[_DYN_INITIALIZE /* @min:%2einitialize */](sendPostConfig, diagLog);\r\n }\r\n else {\r\n _sendPostMgr.SetConfig(sendPostConfig);\r\n }\r\n var customInterface = senderConfig.httpXHROverride;\r\n var httpInterface = null;\r\n var syncInterface = null;\r\n // User requested transport(s) values > Beacon > Fetch > XHR\r\n // Beacon would be filtered out if user has set disableBeaconApi to true at _getSenderInterface\r\n var theTransports = prependTransports([3 /* TransportType.Beacon */, 1 /* TransportType.Xhr */, 2 /* TransportType.Fetch */], senderConfig.transports);\r\n httpInterface = _sendPostMgr && _sendPostMgr[_DYN_GET_SENDER_INST /* @min:%2egetSenderInst */](theTransports, false);\r\n var xhrInterface = _sendPostMgr && _sendPostMgr.getFallbackInst();\r\n _xhrSend = function (payload, isAsync) {\r\n return _doSend(xhrInterface, payload, isAsync);\r\n };\r\n _fallbackSend = function (payload, isAsync) {\r\n return _doSend(xhrInterface, payload, isAsync, false);\r\n };\r\n httpInterface = _alwaysUseCustomSend ? customInterface : (httpInterface || customInterface || xhrInterface);\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = function (payload, isAsync) {\r\n return _doSend(httpInterface, payload, isAsync);\r\n };\r\n if (_fetchKeepAlive) {\r\n // Try and use the fetch with keepalive\r\n _syncUnloadSender = _fetchKeepAliveSender;\r\n }\r\n var syncTransports = prependTransports([3 /* TransportType.Beacon */, 1 /* TransportType.Xhr */], senderConfig[_DYN_UNLOAD_TRANSPORTS /* @min:%2eunloadTransports */]);\r\n if (!_fetchKeepAlive) {\r\n // remove fetch from theTransports\r\n syncTransports = syncTransports.filter(function (transport) { return transport !== 2 /* TransportType.Fetch */; });\r\n }\r\n syncInterface = _sendPostMgr && _sendPostMgr[_DYN_GET_SENDER_INST /* @min:%2egetSenderInst */](syncTransports, true);\r\n syncInterface = _alwaysUseCustomSend ? customInterface : (syncInterface || customInterface);\r\n if ((_alwaysUseCustomSend || senderConfig[_DYN_UNLOAD_TRANSPORTS /* @min:%2eunloadTransports */] || !_syncUnloadSender) && syncInterface) {\r\n _syncUnloadSender = function (payload, isAsync) {\r\n return _doSend(syncInterface, payload, isAsync);\r\n };\r\n }\r\n if (!_syncUnloadSender) {\r\n _syncUnloadSender = _xhrSend;\r\n }\r\n _disableTelemetry = senderConfig.disableTelemetry;\r\n _convertUndefined = senderConfig[_DYN_CONVERT_UNDEFINED /* @min:%2econvertUndefined */] || UNDEFINED_VALUE;\r\n _isRetryDisabled = senderConfig.isRetryDisabled;\r\n _maxBatchInterval = senderConfig[_DYN_MAX_BATCH_INTERVAL /* @min:%2emaxBatchInterval */];\r\n }));\r\n };\r\n _self.processTelemetry = function (telemetryItem, itemCtx) {\r\n var _a;\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n var diagLogger = itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n try {\r\n var isValidate = _validate(telemetryItem, diagLogger);\r\n if (!isValidate) {\r\n return;\r\n }\r\n var aiEnvelope = _getEnvelope(telemetryItem, diagLogger);\r\n if (!aiEnvelope) {\r\n return;\r\n }\r\n // check if the incoming payload is too large, truncate if necessary\r\n var payload = _serializer[_DYN_SERIALIZE /* @min:%2eserialize */](aiEnvelope);\r\n // flush if we would exceed the max-size limit by adding this item\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n _checkMaxSize(payload);\r\n var payloadItem = (_a = {},\r\n _a[_DYN_ITEM /* @min:item */] = payload,\r\n _a.cnt = 0 // inital cnt will always be 0\r\n ,\r\n _a);\r\n // enqueue the payload\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payloadItem);\r\n // ensure an invocation timeout is set\r\n _setupTimer();\r\n }\r\n catch (e) {\r\n _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 12 /* _eInternalMessageId.FailedAddingTelemetryToBuffer */, \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n // hand off the telemetry item to the next plugin\r\n _self.processNext(telemetryItem, itemCtx);\r\n };\r\n _self.isCompletelyIdle = function () {\r\n return !_paused && _syncFetchPayload === 0 && _self._buffer[_DYN_COUNT /* @min:%2ecount */]() === 0;\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n _self._xhrReadyStateChange = function (xhr, payload, countOfItemsInPayload) {\r\n // since version 3.2.0, this function is no-op\r\n if (_isStringArr(payload)) {\r\n return;\r\n }\r\n return _xhrReadyStateChange(xhr, payload, countOfItemsInPayload);\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async - {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender - {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */] = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n var result;\r\n if (!_paused) {\r\n try {\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n // Send data only if disableTelemetry is false\r\n if (!_disableTelemetry) {\r\n if (buffer[_DYN_COUNT /* @min:%2ecount */]() > 0) {\r\n var payload = buffer.getItems();\r\n _notifySendRequest(sendReason || 0 /* SendRequestReason.Undefined */, async);\r\n // invoke send\r\n if (forcedSender) {\r\n result = forcedSender.call(_self, payload, async);\r\n }\r\n else {\r\n result = _self[_DYN__SENDER /* @min:%2e_sender */](payload, async);\r\n }\r\n }\r\n // update lastSend time to enable throttling\r\n _lastSend = +new Date;\r\n }\r\n else {\r\n buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n }\r\n _clearScheduledTimer();\r\n }\r\n catch (e) {\r\n /* Ignore this error for IE under v10 */\r\n var ieVer = getIEVersion();\r\n if (!ieVer || ieVer > 9) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Telemetry transmission failed, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n _self.getOfflineSupport = function () {\r\n var _a;\r\n return _a = {\r\n getUrl: function () {\r\n return _endpointUrl;\r\n },\r\n createPayload: _createPayload\r\n },\r\n _a[_DYN_SERIALIZE /* @min:serialize */] = _serialize,\r\n _a.batch = _batch,\r\n _a.shouldProcess = function (evt) {\r\n return !!_validate(evt);\r\n },\r\n _a;\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _self.onunloadFlush();\r\n runTargetUnload(_offlineListener, false);\r\n _initDefaults();\r\n };\r\n /**\r\n * error handler\r\n */\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */] = function (payload, message, event) {\r\n // since version 3.1.3, string[] is no-op\r\n if (_isStringArr(payload)) {\r\n return;\r\n }\r\n return _onError(payload, message, event);\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */] = function (payload, results) {\r\n // since version 3.1.3, string[] is no-op\r\n if (_isStringArr(payload)) {\r\n return;\r\n }\r\n return _onPartialSuccess(payload, results);\r\n };\r\n /**\r\n * success handler\r\n */\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */] = function (payload, countOfItemsInPayload) {\r\n // since version 3.1.3, string[] is no-op\r\n if (_isStringArr(payload)) {\r\n return;\r\n }\r\n return _onSuccess(payload, countOfItemsInPayload);\r\n //_self._buffer && _self._buffer.clearSent(payload);\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n _self._xdrOnLoad = function (xdr, payload) {\r\n // since version 3.1.3, string[] is no-op\r\n if (_isStringArr(payload)) {\r\n return;\r\n }\r\n return _xdrOnLoad(xdr, payload);\r\n };\r\n function _xdrOnLoad(xdr, payload) {\r\n var responseText = _getResponseText(xdr);\r\n if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, 0);\r\n }\r\n else {\r\n var results = parseResponse(responseText);\r\n if (results && results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] && results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] > results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]\r\n && !_isRetryDisabled) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, results);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, formatErrorMessageXdr(xdr));\r\n }\r\n }\r\n }\r\n function _getSendPostMgrConfig() {\r\n var _a;\r\n try {\r\n var onCompleteFuncs = {\r\n xdrOnComplete: function (xdr, oncomplete, payload) {\r\n var data = _getPayloadArr(payload);\r\n if (!data) {\r\n return;\r\n }\r\n return _xdrOnLoad(xdr, data);\r\n },\r\n fetchOnComplete: function (response, onComplete, resValue, payload) {\r\n var data = _getPayloadArr(payload);\r\n if (!data) {\r\n return;\r\n }\r\n return _checkResponsStatus(response.status, data, response.url, data[_DYN_LENGTH /* @min:%2elength */], response.statusText, resValue || \"\");\r\n },\r\n xhrOnComplete: function (request, oncomplete, payload) {\r\n var data = _getPayloadArr(payload);\r\n if (!data) {\r\n return;\r\n }\r\n return _xhrReadyStateChange(request, data, data[_DYN_LENGTH /* @min:%2elength */]);\r\n },\r\n beaconOnRetry: function (data, onComplete, canSend) {\r\n return _onBeaconRetry(data, onComplete, canSend);\r\n }\r\n };\r\n var config = (_a = {},\r\n _a[_DYN_ENABLE_SEND_PROMISE /* @min:enableSendPromise */] = _enableSendPromise,\r\n _a.isOneDs = false,\r\n _a.disableCredentials = false,\r\n _a[_DYN_DISABLE_XHR /* @min:disableXhr */] = _disableXhr,\r\n _a.disableBeacon = !_beaconNormalSupported,\r\n _a.disableBeaconSync = !_beaconOnUnloadSupported,\r\n _a.senderOnCompleteCallBack = onCompleteFuncs,\r\n _a);\r\n return config;\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n /**\r\n * xhr state changes\r\n */\r\n function _xhrReadyStateChange(xhr, payload, countOfItemsInPayload) {\r\n if (xhr.readyState === 4) {\r\n _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);\r\n }\r\n }\r\n /**\r\n * error handler\r\n */\r\n function _onError(payload, message, event) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 26 /* _eInternalMessageId.OnError */, \"Failed to send telemetry.\", { message: message });\r\n _self._buffer && _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n }\r\n /**\r\n * partial success handler\r\n */\r\n function _onPartialSuccess(payload, results) {\r\n var failed = [];\r\n var retry = [];\r\n // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n var errors = results.errors.reverse();\r\n for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\r\n var error = errors_1[_i];\r\n var extracted = payload.splice(error.index, 1)[0];\r\n if (_isRetriable(error.statusCode)) {\r\n retry[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n else {\r\n // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n failed[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n }\r\n if (payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]);\r\n }\r\n if (failed[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](failed, formatErrorMessageXhr(null, [\"partial success\", results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */], \"of\", results.itemsReceived].join(\" \")));\r\n }\r\n if (retry[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _resendPayload(retry);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Partial success. \" +\r\n \"Delivered: \" + payload[_DYN_LENGTH /* @min:%2elength */] + \", Failed: \" + failed[_DYN_LENGTH /* @min:%2elength */] +\r\n \". Will retry to send \" + retry[_DYN_LENGTH /* @min:%2elength */] + \" our of \" + results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] + \" items\");\r\n }\r\n }\r\n /**\r\n * success handler\r\n */\r\n function _onSuccess(payload, countOfItemsInPayload) {\r\n _self._buffer && _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n }\r\n function _getPayloadArr(payload) {\r\n try {\r\n if (payload) {\r\n var internalPayload = payload;\r\n var arr = internalPayload[_DYN_ORI_PAYLOAD /* @min:%2eoriPayload */];\r\n if (arr && arr[_DYN_LENGTH /* @min:%2elength */]) {\r\n return arr;\r\n }\r\n return null;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n function _validate(telemetryItem, diagLogger) {\r\n if (_disableTelemetry) {\r\n // Do not send/save data\r\n return false;\r\n }\r\n // validate input\r\n if (!telemetryItem) {\r\n diagLogger && _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 7 /* _eInternalMessageId.CannotSendEmptyTelemetry */, \"Cannot send empty telemetry\");\r\n return false;\r\n }\r\n // validate event\r\n if (telemetryItem.baseData && !telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n diagLogger && _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 70 /* _eInternalMessageId.InvalidEvent */, \"Cannot send telemetry without baseData and baseType\");\r\n return false;\r\n }\r\n if (!telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n // Default\r\n telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */] = \"EventData\";\r\n }\r\n // ensure a sender was constructed\r\n if (!_self[_DYN__SENDER /* @min:%2e_sender */]) {\r\n diagLogger && _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender was not initialized\");\r\n return false;\r\n }\r\n // check if this item should be sampled in, else add sampleRate tag\r\n if (!_isSampledIn(telemetryItem)) {\r\n // Item is sampled out, do not send it\r\n diagLogger && _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 33 /* _eInternalMessageId.TelemetrySampledAndNotSent */, \"Telemetry item was sampled out and not sent\", { SampleRate: _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] });\r\n return false;\r\n }\r\n else {\r\n telemetryItem[SampleRate] = _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */];\r\n }\r\n return true;\r\n }\r\n function _getEnvelope(telemetryItem, diagLogger) {\r\n // construct an envelope that Application Insights endpoint can understand\r\n // if ikey of telemetry is provided and not empty, envelope will use this iKey instead of senderConfig iKey\r\n var defaultEnvelopeIkey = telemetryItem.iKey || _instrumentationKey;\r\n var aiEnvelope = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, diagLogger, _convertUndefined);\r\n if (!aiEnvelope) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 47 /* _eInternalMessageId.CreateEnvelopeError */, \"Unable to create an AppInsights envelope\");\r\n return;\r\n }\r\n var doNotSendItem = false;\r\n // this is for running in legacy mode, where customer may already have a custom initializer present\r\n if (telemetryItem[_DYN_TAGS /* @min:%2etags */] && telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy]) {\r\n arrForEach(telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy], function (callBack) {\r\n try {\r\n if (callBack && callBack(aiEnvelope) === false) {\r\n doNotSendItem = true;\r\n _warnToConsole(diagLogger, \"Telemetry processor check returns false\");\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n delete telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy];\r\n }\r\n if (doNotSendItem) {\r\n return; // do not send, no need to execute next plugin\r\n }\r\n return aiEnvelope;\r\n }\r\n function _serialize(item) {\r\n var rlt = EMPTY_STR;\r\n var diagLogger = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n try {\r\n var valid = _validate(item, diagLogger);\r\n var envelope = null;\r\n if (valid) {\r\n envelope = _getEnvelope(item, diagLogger);\r\n }\r\n if (envelope) {\r\n rlt = _serializer[_DYN_SERIALIZE /* @min:%2eserialize */](envelope);\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return rlt;\r\n }\r\n function _batch(arr) {\r\n var rlt = EMPTY_STR;\r\n if (arr && arr[_DYN_LENGTH /* @min:%2elength */]) {\r\n rlt = \"[\" + arr.join(\",\") + \"]\";\r\n }\r\n return rlt;\r\n }\r\n function _createPayload(data) {\r\n var _a;\r\n var headers = _getHeaders();\r\n return _a = {\r\n urlString: _endpointUrl\r\n },\r\n _a[_DYN_DATA /* @min:data */] = data,\r\n _a.headers = headers,\r\n _a;\r\n }\r\n function _isSampledIn(envelope) {\r\n return _self._sample.isSampledIn(envelope);\r\n }\r\n function _getOnComplete(payload, status, headers, response) {\r\n // ***********************************************************************************************\r\n //TODO: handle other status codes\r\n if (status === 200 && payload) {\r\n _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n else {\r\n response && _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, response);\r\n }\r\n }\r\n function _doSend(sendInterface, payload, isAsync, markAsSent) {\r\n if (markAsSent === void 0) { markAsSent = true; }\r\n var onComplete = function (status, headers, response) {\r\n return _getOnComplete(payload, status, headers, response);\r\n };\r\n var payloadData = _getPayload(payload);\r\n var sendPostFunc = sendInterface && sendInterface.sendPOST;\r\n if (sendPostFunc && payloadData) {\r\n // ***********************************************************************************************\r\n // mark payload as sent at the beginning of calling each send function\r\n if (markAsSent) {\r\n _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n }\r\n return sendPostFunc(payloadData, onComplete, !isAsync);\r\n }\r\n return null;\r\n }\r\n function _getPayload(payload) {\r\n var _a;\r\n if (isArray(payload) && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var batch = _self[_DYN__BUFFER /* @min:%2e_buffer */].batchPayloads(payload);\r\n var headers = _getHeaders();\r\n var payloadData = (_a = {},\r\n _a[_DYN_DATA /* @min:data */] = batch,\r\n _a.urlString = _endpointUrl,\r\n _a.headers = headers,\r\n _a.disableXhrSync = _disableXhr,\r\n _a.disableFetchKeepAlive = !_fetchKeepAlive,\r\n _a[_DYN_ORI_PAYLOAD /* @min:oriPayload */] = payload,\r\n _a);\r\n return payloadData;\r\n }\r\n return null;\r\n }\r\n function _getHeaders() {\r\n try {\r\n var headers = _headers || {};\r\n if (isInternalApplicationInsightsEndpoint(_endpointUrl)) {\r\n headers[RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */]] = RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */];\r\n }\r\n return headers;\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n function _checkMaxSize(incomingPayload) {\r\n var incomingSize = incomingPayload ? incomingPayload[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n if ((_self[_DYN__BUFFER /* @min:%2e_buffer */].size() + incomingSize) > _maxBatchSizeInBytes) {\r\n if (!_offlineListener || _offlineListener.isOnline()) { // only trigger send when currently online\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n function _checkResponsStatus(status, payload, responseUrl, countOfItemsInPayload, errorMessage, res) {\r\n var response = null;\r\n if (!_self._appId) {\r\n response = parseResponse(res);\r\n if (response && response.appId) {\r\n _self._appId = response.appId;\r\n }\r\n }\r\n if ((status < 200 || status >= 300) && status !== 0) {\r\n // Update End Point url if permanent redirect or moved permanently\r\n // Updates the end point url before retry\r\n if (status === 301 || status === 307 || status === 308) {\r\n if (!_checkAndUpdateEndPointUrl(responseUrl)) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n return;\r\n }\r\n }\r\n if (!_isRetryDisabled && _isRetriable(status)) {\r\n _resendPayload(payload);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Response code \" + status + \". Will retry to send \" + payload[_DYN_LENGTH /* @min:%2elength */] + \" items.\");\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else if (_offlineListener && !_offlineListener.isOnline()) { // offline\r\n // Note: Don't check for status == 0, since adblock gives this code\r\n if (!_isRetryDisabled) {\r\n var offlineBackOffMultiplier = 10; // arbritrary number\r\n _resendPayload(payload, offlineBackOffMultiplier);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". Offline - Response Code: \".concat(status, \". Offline status: \").concat(!_offlineListener.isOnline(), \". Will retry to send \").concat(payload.length, \" items.\"));\r\n }\r\n }\r\n else {\r\n // check if the xhr's responseURL or fetch's response.url is same as endpoint url\r\n // TODO after 10 redirects force send telemetry with 'redirect=false' as query parameter.\r\n _checkAndUpdateEndPointUrl(responseUrl);\r\n if (status === 206) {\r\n if (!response) {\r\n response = parseResponse(res);\r\n }\r\n if (response && !_isRetryDisabled) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, response);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, countOfItemsInPayload);\r\n }\r\n }\r\n }\r\n function _checkAndUpdateEndPointUrl(responseUrl) {\r\n // Maximum stamp specific redirects allowed(uncomment this when breeze is ready with not allowing redirects feature)\r\n if (_stamp_specific_redirects >= 10) {\r\n // _self._senderConfig.endpointUrl = () => Sender._getDefaultAppInsightsChannelConfig().endpointUrl()+\"/?redirect=false\";\r\n // _stamp_specific_redirects = 0;\r\n return false;\r\n }\r\n if (!isNullOrUndefined(responseUrl) && responseUrl !== \"\") {\r\n if (responseUrl !== _endpointUrl) {\r\n _endpointUrl = responseUrl;\r\n ++_stamp_specific_redirects;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n function _doUnloadSend(payload, isAsync) {\r\n if (_syncUnloadSender) {\r\n // We are unloading so always call the sender with sync set to false\r\n _syncUnloadSender(payload, false);\r\n }\r\n else {\r\n // Fallback to the previous beacon Sender (which causes a CORB warning on chrome now)\r\n var beaconInst = _sendPostMgr && _sendPostMgr[_DYN_GET_SENDER_INST /* @min:%2egetSenderInst */]([3 /* TransportType.Beacon */], true);\r\n return _doSend(beaconInst, payload, isAsync);\r\n }\r\n }\r\n function _onBeaconRetry(payload, onComplete, canSend) {\r\n var internalPayload = payload;\r\n var data = internalPayload && internalPayload[_DYN_ORI_PAYLOAD /* @min:%2eoriPayload */];\r\n if (!_disableBeaconSplit) {\r\n // Failed to send entire payload so try and split data and try to send as much events as possible\r\n var droppedPayload = [];\r\n for (var lp = 0; lp < data[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var thePayload = data[lp];\r\n var arr = [thePayload];\r\n var item = _getPayload(arr);\r\n if (!canSend(item, onComplete)) {\r\n // Can't send anymore, so split the batch and drop the rest\r\n droppedPayload[_DYN_PUSH /* @min:%2epush */](thePayload);\r\n }\r\n else {\r\n _self._onSuccess(arr, arr[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n }\r\n if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _fallbackSend && _fallbackSend(droppedPayload, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n }\r\n }\r\n else {\r\n _fallbackSend && _fallbackSend(data, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n }\r\n }\r\n function _isStringArr(arr) {\r\n try {\r\n if (arr && arr[_DYN_LENGTH /* @min:%2elength */]) {\r\n return (isString(arr[0]));\r\n }\r\n }\r\n catch (e) {\r\n //TODO: log, sender use IInternalStorageItem instead of string since 3.1.3\r\n }\r\n return null;\r\n }\r\n function _fetchKeepAliveSender(payload, isAsync) {\r\n var transport = null;\r\n if (isArray(payload)) {\r\n var payloadSize = payload[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n payloadSize += payload[lp].item[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n var syncFetchPayload = _sendPostMgr.getSyncFetchPayload();\r\n if ((syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {\r\n transport = 2 /* TransportType.Fetch */;\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Fallback to beacon sender as we at least get told which events can't be scheduled\r\n transport = 3 /* TransportType.Beacon */;\r\n }\r\n else {\r\n // Payload is going to be too big so just try and send via XHR\r\n transport = 1 /* TransportType.Xhr */;\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n }\r\n var inst = _sendPostMgr && _sendPostMgr[_DYN_GET_SENDER_INST /* @min:%2egetSenderInst */]([transport], true);\r\n return _doSend(inst, payload, isAsync);\r\n }\r\n return null;\r\n }\r\n /**\r\n * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n * @param payload\r\n */\r\n function _resendPayload(payload, linearFactor) {\r\n if (linearFactor === void 0) { linearFactor = 1; }\r\n if (!payload || payload[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return;\r\n }\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n _consecutiveErrors++;\r\n for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {\r\n var item = payload_1[_i];\r\n item.cnt = item.cnt || 0; // to make sure we have cnt for each payload\r\n item.cnt++; // when resend, increase cnt\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](item);\r\n }\r\n // setup timer\r\n _setRetryTime(linearFactor);\r\n _setupTimer();\r\n }\r\n /**\r\n * Calculates the time to wait before retrying in case of an error based on\r\n * http://en.wikipedia.org/wiki/Exponential_backoff\r\n */\r\n function _setRetryTime(linearFactor) {\r\n var SlotDelayInSeconds = 10;\r\n var delayInSeconds;\r\n if (_consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n }\r\n else {\r\n var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n // TODO: Log the backoff time like the C# version does.\r\n var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n // TODO: Log the retry at time like the C# version does.\r\n _retryAt = retryAfterTimeSpan;\r\n }\r\n /**\r\n * Sets up the timer which triggers actually sending the data.\r\n */\r\n function _setupTimer() {\r\n if (!_timeoutHandle && !_paused) {\r\n var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n var timerValue = Math.max(_maxBatchInterval, retryInterval);\r\n _timeoutHandle = scheduleTimeout(function () {\r\n _timeoutHandle = null;\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 1 /* SendRequestReason.NormalSchedule */);\r\n }, timerValue);\r\n }\r\n }\r\n function _clearScheduledTimer() {\r\n _timeoutHandle && _timeoutHandle.cancel();\r\n _timeoutHandle = null;\r\n _retryAt = null;\r\n }\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n function _isRetriable(statusCode) {\r\n // retryCodes = [] means should not retry\r\n if (!isNullOrUndefined(_retryCodes)) {\r\n return _retryCodes[_DYN_LENGTH /* @min:%2elength */] && _retryCodes.indexOf(statusCode) > -1;\r\n }\r\n return statusCode === 401 // Unauthorized\r\n // Removing as private links can return a 403 which causes excessive retries and session storage usage\r\n // || statusCode === 403 // Forbidden\r\n || statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 502 // Bad Gateway.\r\n || statusCode === 503 // Service unavailable.\r\n || statusCode === 504; // Gateway timeout.\r\n }\r\n // Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6\r\n function _getNotifyMgr() {\r\n var func = \"getNotifyMgr\";\r\n if (_self.core[func]) {\r\n return _self.core[func]();\r\n }\r\n // using _self.core['_notificationManager'] for backward compatibility\r\n return _self.core[\"_notificationManager\"];\r\n }\r\n function _notifySendRequest(sendRequest, isAsync) {\r\n var manager = _getNotifyMgr();\r\n if (manager && manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */]) {\r\n try {\r\n manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendRequest, isAsync);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 74 /* _eInternalMessageId.NotificationException */, \"send request notification failed: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n /**\r\n * Validate UUID Format\r\n * Specs taken from https://tools.ietf.org/html/rfc4122 and breeze repo\r\n */\r\n function _validateInstrumentationKey(instrumentationKey, config) {\r\n var disableValidation = config.disableInstrumentationKeyValidation;\r\n var disableIKeyValidationFlag = isNullOrUndefined(disableValidation) ? false : disableValidation;\r\n if (disableIKeyValidationFlag) {\r\n return true;\r\n }\r\n var UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\r\n var regexp = new RegExp(UUID_Regex);\r\n return regexp.test(instrumentationKey);\r\n }\r\n function _initDefaults() {\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _self[_DYN__BUFFER /* @min:%2e_buffer */] = null;\r\n _self._appId = null;\r\n _self._sample = null;\r\n _headers = {};\r\n _offlineListener = null;\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = null;\r\n _paused = false;\r\n _timeoutHandle = null;\r\n _serializer = null;\r\n _stamp_specific_redirects = 0;\r\n _syncFetchPayload = 0;\r\n _syncUnloadSender = null;\r\n _evtNamespace = null;\r\n _endpointUrl = null;\r\n _orgEndpointUrl = null;\r\n _maxBatchSizeInBytes = 0;\r\n _beaconSupported = false;\r\n _customHeaders = null;\r\n _disableTelemetry = false;\r\n _instrumentationKey = null;\r\n _convertUndefined = UNDEFINED_VALUE;\r\n _isRetryDisabled = false;\r\n _sessionStorageUsed = null;\r\n _namePrefix = UNDEFINED_VALUE;\r\n _disableXhr = false;\r\n _fetchKeepAlive = false;\r\n _disableBeaconSplit = false;\r\n _xhrSend = null;\r\n _fallbackSend = null;\r\n _sendPostMgr = null;\r\n objDefine(_self, \"_senderConfig\", {\r\n g: function () {\r\n return objExtend({}, defaultAppInsightsChannelConfig);\r\n }\r\n });\r\n }\r\n });\r\n return _this;\r\n }\r\n Sender.constructEnvelope = function (orig, iKey, logger, convertUndefined) {\r\n var envelope;\r\n if (iKey !== orig.iKey && !isNullOrUndefined(iKey)) {\r\n envelope = __assign(__assign({}, orig), { iKey: iKey });\r\n }\r\n else {\r\n envelope = orig;\r\n }\r\n var creator = EnvelopeTypeCreator[envelope.baseType] || EventEnvelopeCreator;\r\n return creator(logger, envelope, convertUndefined);\r\n };\r\n// Removed Stub for Sender.prototype.pause.\r\n// Removed Stub for Sender.prototype.resume.\r\n// Removed Stub for Sender.prototype.flush.\r\n// Removed Stub for Sender.prototype.onunloadFlush.\r\n// Removed Stub for Sender.prototype.initialize.\r\n// Removed Stub for Sender.prototype.processTelemetry.\r\n// Removed Stub for Sender.prototype._xhrReadyStateChange.\r\n// Removed Stub for Sender.prototype.triggerSend.\r\n// Removed Stub for Sender.prototype._onError.\r\n// Removed Stub for Sender.prototype._onPartialSuccess.\r\n// Removed Stub for Sender.prototype._onSuccess.\r\n// Removed Stub for Sender.prototype._xdrOnLoad.\r\n// Removed Stub for Sender.prototype.addHeader.\r\n// Removed Stub for Sender.prototype.isCompletelyIdle.\r\n// Removed Stub for Sender.prototype.getOfflineSupport.\r\n return Sender;\r\n}(BaseTelemetryPlugin));\r\nexport { Sender };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _throwInternal, getJSON, isArray, isFunction, isObject, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_SERIALIZE, _DYN_STRINGIFY, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer(logger) {\r\n dynamicProto(Serializer, this, function (_self) {\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n _self[_DYN_SERIALIZE /* @min:%2eserialize */] = function (input) {\r\n var output = _serializeObject(input, \"root\");\r\n try {\r\n return getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](output);\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n };\r\n function _serializeObject(source, name) {\r\n var circularReferenceCheck = \"__aiCircularRefCheck\";\r\n var output = {};\r\n if (!source) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, \"cannot serialize object because it is null or undefined\", { name: name }, true);\r\n return output;\r\n }\r\n if (source[circularReferenceCheck]) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 50 /* _eInternalMessageId.CircularReferenceDetected */, \"Circular reference detected while serializing object\", { name: name }, true);\r\n return output;\r\n }\r\n if (!source.aiDataContract) {\r\n // special case for measurements/properties/tags\r\n if (name === \"measurements\") {\r\n output = _serializeStringMap(source, \"number\", name);\r\n }\r\n else if (name === \"properties\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (name === \"tags\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (isArray(source)) {\r\n output = _serializeArray(source, name);\r\n }\r\n else {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"Attempting to serialize an object which does not implement ISerializable\", { name: name }, true);\r\n try {\r\n // verify that the object can be stringified\r\n getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](source);\r\n output = source;\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n }\r\n return output;\r\n }\r\n source[circularReferenceCheck] = true;\r\n objForEachKey(source.aiDataContract, function (field, contract) {\r\n var isRequired = (isFunction(contract)) ? (contract() & 1 /* FieldType.Required */) : (contract & 1 /* FieldType.Required */);\r\n var isHidden = (isFunction(contract)) ? (contract() & 4 /* FieldType.Hidden */) : (contract & 4 /* FieldType.Hidden */);\r\n var isArray = contract & 2 /* FieldType.Array */;\r\n var isPresent = source[field] !== undefined;\r\n var isObj = isObject(source[field]) && source[field] !== null;\r\n if (isRequired && !isPresent && !isArray) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 24 /* _eInternalMessageId.MissingRequiredFieldSpecification */, \"Missing required field specification. The field is required but not present on source\", { field: field, name: name });\r\n // If not in debug mode, continue and hope the error is permissible\r\n }\r\n else if (!isHidden) { // Don't serialize hidden fields\r\n var value = void 0;\r\n if (isObj) {\r\n if (isArray) {\r\n // special case; recurse on each object in the source array\r\n value = _serializeArray(source[field], field);\r\n }\r\n else {\r\n // recurse on the source object in this field\r\n value = _serializeObject(source[field], field);\r\n }\r\n }\r\n else {\r\n // assign the source field to the output even if undefined or required\r\n value = source[field];\r\n }\r\n // only emit this field if the value is defined\r\n if (value !== undefined) {\r\n output[field] = value;\r\n }\r\n }\r\n });\r\n delete source[circularReferenceCheck];\r\n return output;\r\n }\r\n function _serializeArray(sources, name) {\r\n var output;\r\n if (!!sources) {\r\n if (!isArray(sources)) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 54 /* _eInternalMessageId.ItemNotInArray */, \"This field was specified as an array in the contract but the item is not an array.\\r\\n\", { name: name }, true);\r\n }\r\n else {\r\n output = [];\r\n for (var i = 0; i < sources[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var source = sources[i];\r\n var item = _serializeObject(source, name + \"[\" + i + \"]\");\r\n output[_DYN_PUSH /* @min:%2epush */](item);\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n function _serializeStringMap(map, expectedType, name) {\r\n var output;\r\n if (map) {\r\n output = {};\r\n objForEachKey(map, function (field, value) {\r\n if (expectedType === \"string\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else if (!value[_DYN_TO_STRING /* @min:%2etoString */]) {\r\n output[field] = \"invalid field: toString() is not defined.\";\r\n }\r\n else {\r\n output[field] = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n }\r\n else if (expectedType === \"number\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else {\r\n var num = parseFloat(value);\r\n output[field] = num;\r\n }\r\n }\r\n else {\r\n output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, output[field], null, true);\r\n }\r\n });\r\n }\r\n return output;\r\n }\r\n });\r\n }\r\n// Removed Stub for Serializer.prototype.serialize.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n Serializer.__ieDyn=1;\n\n return Serializer;\r\n}());\r\nexport { Serializer };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_CONCAT, _DYN_LENGTH } from \"../../__DynamicConstants\";\r\n// (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\nvar MIN_INPUT_LENGTH = 8;\r\nvar HashCodeScoreGenerator = /** @class */ (function () {\r\n function HashCodeScoreGenerator() {\r\n }\r\n HashCodeScoreGenerator.prototype.getHashCodeScore = function (key) {\r\n var score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n return score * 100;\r\n };\r\n HashCodeScoreGenerator.prototype.getHashCode = function (input) {\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n while (input[_DYN_LENGTH /* @min:%2elength */] < MIN_INPUT_LENGTH) {\r\n input = input[_DYN_CONCAT /* @min:%2econcat */](input);\r\n }\r\n // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n var hash = 5381;\r\n for (var i = 0; i < input[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n };\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n HashCodeScoreGenerator.INT_MAX_VALUE = 2147483647;\r\n return HashCodeScoreGenerator;\r\n}());\r\nexport { HashCodeScoreGenerator };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ContextTagKeys } from \"@microsoft/applicationinsights-common\";\r\nimport { _DYN_GET_HASH_CODE_SCORE, _DYN_GET_SAMPLING_SCORE, _DYN_TAGS, _DYN_TRACE_ID } from \"../../__DynamicConstants\";\r\nimport { HashCodeScoreGenerator } from \"./HashCodeScoreGenerator\";\r\nvar SamplingScoreGenerator = /** @class */ (function () {\r\n function SamplingScoreGenerator() {\r\n var _self = this;\r\n var hashCodeGenerator = new HashCodeScoreGenerator();\r\n var keys = new ContextTagKeys();\r\n _self[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */] = function (item) {\r\n var score = 0;\r\n if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.userId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.userId]);\r\n }\r\n else if (item.ext && item.ext.user && item.ext.user.id) {\r\n score = hashCodeGenerator[_DYN_GET_HASH_CODE_SCORE /* @min:%2egetHashCodeScore */](item.ext.user.id);\r\n }\r\n else if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.operationId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.operationId]);\r\n }\r\n else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n score = hashCodeGenerator.getHashCodeScore(item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n else {\r\n // tslint:disable-next-line:insecure-random\r\n score = (Math.random() * 100);\r\n }\r\n return score;\r\n };\r\n }\r\n return SamplingScoreGenerator;\r\n}());\r\nexport { SamplingScoreGenerator };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { Metric } from \"@microsoft/applicationinsights-common\";\r\nimport { safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DATA_TYPE, _DYN_GET_SAMPLING_SCORE, _DYN_SAMPLE_RATE } from \"../__DynamicConstants\";\r\nimport { SamplingScoreGenerator } from \"./SamplingScoreGenerators/SamplingScoreGenerator\";\r\nvar Sample = /** @class */ (function () {\r\n function Sample(sampleRate, logger) {\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n this.INT_MAX_VALUE = 2147483647;\r\n var _logger = logger || safeGetLogger(null);\r\n if (sampleRate > 100 || sampleRate < 0) {\r\n _logger.throwInternal(2 /* eLoggingSeverity.WARNING */, 58 /* _eInternalMessageId.SampleRateOutOfRange */, \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\", { samplingRate: sampleRate }, true);\r\n sampleRate = 100;\r\n }\r\n this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] = sampleRate;\r\n this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n }\r\n /**\r\n * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n */\r\n Sample.prototype.isSampledIn = function (envelope) {\r\n var samplingPercentage = this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */]; // 0 - 100\r\n var isSampledIn = false;\r\n if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n return true;\r\n }\r\n else if (envelope.baseType === Metric[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n // exclude MetricData telemetry from sampling\r\n return true;\r\n }\r\n isSampledIn = this.samplingScoreGenerator[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */](envelope) < samplingPercentage;\r\n return isSampledIn;\r\n };\r\n return Sample;\r\n}());\r\nexport { Sample };\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrReduce, objKeys, strEndsWith } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { _DYN_INGESTIONENDPOINT, _DYN_LENGTH, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _FIELDS_SEPARATOR = \";\";\r\nvar _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\nexport function parseConnectionString(connectionString) {\r\n if (!connectionString) {\r\n return {};\r\n }\r\n var kvPairs = connectionString[_DYN_SPLIT /* @min:%2esplit */](_FIELDS_SEPARATOR);\r\n var result = arrReduce(kvPairs, function (fields, kv) {\r\n var kvParts = kv[_DYN_SPLIT /* @min:%2esplit */](_FIELD_KEY_VALUE_SEPARATOR);\r\n if (kvParts[_DYN_LENGTH /* @min:%2elength */] === 2) { // only save fields with valid formats\r\n var key = kvParts[0][_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var value = kvParts[1];\r\n fields[key] = value;\r\n }\r\n return fields;\r\n }, {});\r\n if (objKeys(result)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // this is a valid connection string, so parse the results\r\n if (result.endpointsuffix) {\r\n // apply the default endpoints\r\n var locationPrefix = result.location ? result.location + \".\" : \"\";\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n }\r\n // apply user override endpoint or the default endpoints\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || DEFAULT_BREEZE_ENDPOINT;\r\n if (strEndsWith(result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */], \"/\")) {\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */].slice(0, -1);\r\n }\r\n }\r\n return result;\r\n}\r\nexport var ConnectionStringParser = {\r\n parse: parseConnectionString\r\n};\r\n","/*\n * Application Insights JavaScript SDK - Common, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { _throwInternal, arrIndexOf, isNotNullOrUndefined, isNullOrUndefined, onConfigChange, randomValue, safeGetLogger, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { arrForEach, objForEachKey } from \"@nevware21/ts-utils\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"./StorageHelperFuncs\";\r\nimport { _DYN_COUNT, _DYN_DATE, _DYN_DAYS_OF_MONTH, _DYN_DISABLED, _DYN_GET_UTCDATE, _DYN_INTERVAL, _DYN_LENGTH, _DYN_MESSAGE, _DYN_PRE_TRIGGER_DATE, _DYN_PUSH, _DYN_STRINGIFY } from \"./__DynamicConstants\";\r\nvar THROTTLE_STORAGE_PREFIX = \"appInsightsThrottle\";\r\nvar ThrottleMgr = /** @class */ (function () {\r\n function ThrottleMgr(core, namePrefix) {\r\n var _self = this;\r\n var _canUseLocalStorage;\r\n var _logger;\r\n var _config;\r\n var _localStorageObj;\r\n var _isTriggered; //_isTriggered is to make sure that we only trigger throttle once a day\r\n var _namePrefix;\r\n var _queue;\r\n var _isReady = false;\r\n var _isSpecificDaysGiven = false;\r\n _initConfig();\r\n // Special internal method to allow the unit tests and DebugPlugin to hook embedded objects\r\n _self[\"_getDbgPlgTargets\"] = function () {\r\n return [_queue];\r\n };\r\n _self.getConfig = function () {\r\n return _config;\r\n };\r\n /**\r\n * Check if it is the correct day to send message.\r\n * If _isTriggered is true, even if canThrottle returns true, message will not be sent,\r\n * because we only allow triggering sendMessage() once a day.\r\n * @returns if the current date is the valid date to send message\r\n */\r\n _self.canThrottle = function (msgId) {\r\n var localObj = _getLocalStorageObjByKey(msgId);\r\n var cfg = _getCfgByKey(msgId);\r\n return _canThrottle(cfg, _canUseLocalStorage, localObj);\r\n };\r\n /**\r\n * Check if throttle is triggered on current day(UTC)\r\n * if canThrottle returns false, isTriggered will return false\r\n * @returns if throttle is triggered on current day(UTC)\r\n */\r\n _self.isTriggered = function (msgId) {\r\n return _isTrigger(msgId);\r\n };\r\n /**\r\n * Before isReady set to true, all message will be stored in queue.\r\n * Message will only be sent out after isReady set to true.\r\n * Initial and default value: false\r\n * @returns isReady state\r\n */\r\n _self.isReady = function () {\r\n return _isReady;\r\n };\r\n /**\r\n * Flush all message with given message key in queue with isReady state set to true.\r\n * @returns if message queue is flushed\r\n */\r\n _self.flush = function (msgId) {\r\n try {\r\n var queue = _getQueueByKey(msgId);\r\n if (queue && queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var items = queue.slice(0);\r\n _queue[msgId] = [];\r\n arrForEach(items, function (item) {\r\n _flushMessage(item.msgID, item[_DYN_MESSAGE /* @min:%2emessage */], item.severity, false);\r\n });\r\n return true;\r\n }\r\n }\r\n catch (err) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return false;\r\n };\r\n /**\r\n * Flush all message in queue with isReady state set to true.\r\n * @returns if message queue is flushed\r\n */\r\n _self.flushAll = function () {\r\n try {\r\n if (_queue) {\r\n var result_1 = true;\r\n objForEachKey(_queue, function (key) {\r\n var isFlushed = _self.flush(parseInt(key));\r\n result_1 = result_1 && isFlushed;\r\n });\r\n return result_1;\r\n }\r\n }\r\n catch (err) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return false;\r\n };\r\n /**\r\n * Set isReady State\r\n * if isReady set to true, message queue will be flushed automatically.\r\n * @param isReady isReady State\r\n * @pa\r\n * @returns if message queue is flushed\r\n */\r\n _self.onReadyState = function (isReady, flushAll) {\r\n if (flushAll === void 0) { flushAll = true; }\r\n _isReady = isNullOrUndefined(isReady) ? true : isReady;\r\n if (_isReady && flushAll) {\r\n return _self.flushAll();\r\n }\r\n return null;\r\n };\r\n _self.sendMessage = function (msgID, message, severity) {\r\n return _flushMessage(msgID, message, severity, true);\r\n };\r\n function _flushMessage(msgID, message, severity, saveUnsentMsg) {\r\n if (_isReady) {\r\n var isSampledIn = _canSampledIn(msgID);\r\n if (!isSampledIn) {\r\n return;\r\n }\r\n var cfg = _getCfgByKey(msgID);\r\n var localStorageObj = _getLocalStorageObjByKey(msgID);\r\n var canThrottle = _canThrottle(cfg, _canUseLocalStorage, localStorageObj);\r\n var throttled = false;\r\n var number = 0;\r\n var isTriggered = _isTrigger(msgID);\r\n try {\r\n if (canThrottle && !isTriggered) {\r\n number = Math.min(cfg.limit.maxSendNumber, localStorageObj[_DYN_COUNT /* @min:%2ecount */] + 1);\r\n localStorageObj[_DYN_COUNT /* @min:%2ecount */] = 0;\r\n throttled = true;\r\n _isTriggered[msgID] = true;\r\n localStorageObj[_DYN_PRE_TRIGGER_DATE /* @min:%2epreTriggerDate */] = new Date();\r\n }\r\n else {\r\n _isTriggered[msgID] = canThrottle;\r\n localStorageObj[_DYN_COUNT /* @min:%2ecount */] += 1;\r\n }\r\n var localStorageName = _getLocalStorageName(msgID);\r\n _resetLocalStorage(_logger, localStorageName, localStorageObj);\r\n for (var i = 0; i < number; i++) {\r\n _sendMessage(msgID, _logger, message, severity);\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return {\r\n isThrottled: throttled,\r\n throttleNum: number\r\n };\r\n }\r\n else {\r\n if (!!saveUnsentMsg) {\r\n var queue = _getQueueByKey(msgID);\r\n queue[_DYN_PUSH /* @min:%2epush */]({\r\n msgID: msgID,\r\n message: message,\r\n severity: severity\r\n });\r\n }\r\n }\r\n return null;\r\n }\r\n function _initConfig() {\r\n _logger = safeGetLogger(core);\r\n _isTriggered = {};\r\n _localStorageObj = {};\r\n _queue = {};\r\n _config = {};\r\n _setCfgByKey(109 /* _eInternalMessageId.DefaultThrottleMsgKey */);\r\n _namePrefix = isNotNullOrUndefined(namePrefix) ? namePrefix : \"\";\r\n core.addUnloadHook(onConfigChange(core.config, function (details) {\r\n var coreConfig = details.cfg;\r\n _canUseLocalStorage = utlCanUseLocalStorage();\r\n var configMgr = coreConfig.throttleMgrCfg || {};\r\n objForEachKey(configMgr, function (key, cfg) {\r\n _setCfgByKey(parseInt(key), cfg);\r\n });\r\n }));\r\n }\r\n function _getCfgByKey(msgID) {\r\n return _config[msgID] || _config[109 /* _eInternalMessageId.DefaultThrottleMsgKey */];\r\n }\r\n function _setCfgByKey(msgID, config) {\r\n var _a, _b;\r\n try {\r\n var cfg = config || {};\r\n var curCfg = {};\r\n curCfg[_DYN_DISABLED /* @min:%2edisabled */] = !!cfg[_DYN_DISABLED /* @min:%2edisabled */];\r\n var configInterval = cfg[_DYN_INTERVAL /* @min:%2einterval */] || {};\r\n _isSpecificDaysGiven = (configInterval === null || configInterval === void 0 ? void 0 : configInterval.daysOfMonth) && (configInterval === null || configInterval === void 0 ? void 0 : configInterval.daysOfMonth[_DYN_LENGTH /* @min:%2elength */]) > 0;\r\n curCfg[_DYN_INTERVAL /* @min:%2einterval */] = _getIntervalConfig(configInterval);\r\n var limit = {\r\n samplingRate: ((_a = cfg.limit) === null || _a === void 0 ? void 0 : _a.samplingRate) || 100,\r\n // dafault: every time sent only 1 event\r\n maxSendNumber: ((_b = cfg.limit) === null || _b === void 0 ? void 0 : _b.maxSendNumber) || 1\r\n };\r\n curCfg.limit = limit;\r\n _config[msgID] = curCfg;\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n function _getIntervalConfig(interval) {\r\n interval = interval || {};\r\n var monthInterval = interval === null || interval === void 0 ? void 0 : interval.monthInterval;\r\n var dayInterval = interval === null || interval === void 0 ? void 0 : interval.dayInterval;\r\n // default: send data every 3 month each year\r\n if (isNullOrUndefined(monthInterval) && isNullOrUndefined(dayInterval)) {\r\n interval.monthInterval = 3;\r\n if (!_isSpecificDaysGiven) {\r\n // default: send data on 28th\r\n interval[_DYN_DAYS_OF_MONTH /* @min:%2edaysOfMonth */] = [28];\r\n _isSpecificDaysGiven = true;\r\n }\r\n }\r\n interval = {\r\n // dafault: sent every three months\r\n monthInterval: interval === null || interval === void 0 ? void 0 : interval.monthInterval,\r\n dayInterval: interval === null || interval === void 0 ? void 0 : interval.dayInterval,\r\n daysOfMonth: interval === null || interval === void 0 ? void 0 : interval.daysOfMonth\r\n };\r\n return interval;\r\n }\r\n function _canThrottle(config, canUseLocalStorage, localStorageObj) {\r\n if (config && !config[_DYN_DISABLED /* @min:%2edisabled */] && canUseLocalStorage && isNotNullOrUndefined(localStorageObj)) {\r\n var curDate = _getThrottleDate();\r\n var date = localStorageObj[_DYN_DATE /* @min:%2edate */];\r\n var interval = config[_DYN_INTERVAL /* @min:%2einterval */];\r\n var monthCheck = 1;\r\n if (interval === null || interval === void 0 ? void 0 : interval.monthInterval) {\r\n var monthExpand = (curDate.getUTCFullYear() - date.getUTCFullYear()) * 12 + curDate.getUTCMonth() - date.getUTCMonth();\r\n monthCheck = _checkInterval(interval.monthInterval, 0, monthExpand);\r\n }\r\n var dayCheck = 1;\r\n if (_isSpecificDaysGiven) {\r\n dayCheck = arrIndexOf(interval[_DYN_DAYS_OF_MONTH /* @min:%2edaysOfMonth */], curDate[_DYN_GET_UTCDATE /* @min:%2egetUTCDate */]());\r\n }\r\n else if (interval === null || interval === void 0 ? void 0 : interval.dayInterval) {\r\n var daySpan = Math.floor((curDate.getTime() - date.getTime()) / 86400000);\r\n dayCheck = _checkInterval(interval.dayInterval, 0, daySpan);\r\n }\r\n return monthCheck >= 0 && dayCheck >= 0;\r\n }\r\n return false;\r\n }\r\n function _getLocalStorageName(msgKey, prefix) {\r\n var fix = isNotNullOrUndefined(prefix) ? prefix : \"\";\r\n if (msgKey) {\r\n return THROTTLE_STORAGE_PREFIX + fix + \"-\" + msgKey;\r\n }\r\n return null;\r\n }\r\n // returns if throttle is triggered on current Date\r\n function _isTriggeredOnCurDate(preTriggerDate) {\r\n try {\r\n if (preTriggerDate) {\r\n var curDate = new Date();\r\n return preTriggerDate.getUTCFullYear() === curDate.getUTCFullYear() &&\r\n preTriggerDate.getUTCMonth() === curDate.getUTCMonth() &&\r\n preTriggerDate[_DYN_GET_UTCDATE /* @min:%2egetUTCDate */]() === curDate[_DYN_GET_UTCDATE /* @min:%2egetUTCDate */]();\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return false;\r\n }\r\n // transfer local storage string value to object that identifies start date, current count and preTriggerDate\r\n function _getLocalStorageObj(value, logger, storageName) {\r\n try {\r\n var storageObj = {\r\n date: _getThrottleDate(),\r\n count: 0\r\n };\r\n if (value) {\r\n var obj = JSON.parse(value);\r\n var curObj = {\r\n date: _getThrottleDate(obj[_DYN_DATE /* @min:%2edate */]) || storageObj[_DYN_DATE /* @min:%2edate */],\r\n count: obj[_DYN_COUNT /* @min:%2ecount */] || storageObj[_DYN_COUNT /* @min:%2ecount */],\r\n preTriggerDate: obj.preTriggerDate ? _getThrottleDate(obj[_DYN_PRE_TRIGGER_DATE /* @min:%2epreTriggerDate */]) : undefined\r\n };\r\n return curObj;\r\n }\r\n else {\r\n _resetLocalStorage(logger, storageName, storageObj);\r\n return storageObj;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n // if datestr is not defined, current date will be returned\r\n function _getThrottleDate(dateStr) {\r\n // if new Date() can't be created through the provided dateStr, null will be returned.\r\n try {\r\n if (dateStr) {\r\n var date = new Date(dateStr);\r\n //make sure it is a valid Date Object\r\n if (!isNaN(date.getDate())) {\r\n return date;\r\n }\r\n }\r\n else {\r\n return new Date();\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n function _resetLocalStorage(logger, storageName, obj) {\r\n try {\r\n return utlSetLocalStorage(logger, storageName, strTrim(JSON[_DYN_STRINGIFY /* @min:%2estringify */](obj)));\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return false;\r\n }\r\n function _checkInterval(interval, start, current) {\r\n if (interval <= 0) {\r\n return 1;\r\n }\r\n // count from start year\r\n return (current >= start) && (current - start) % interval == 0 ? Math.floor((current - start) / interval) + 1 : -1;\r\n }\r\n function _sendMessage(msgID, logger, message, severity) {\r\n _throwInternal(logger, severity || 1 /* eLoggingSeverity.CRITICAL */, msgID, message);\r\n }\r\n // NOTE: config.limit.samplingRate is set to 4 decimal places,\r\n // so config.limit.samplingRate = 1 means 0.0001%\r\n function _canSampledIn(msgID) {\r\n try {\r\n var cfg = _getCfgByKey(msgID);\r\n return randomValue(1000000) <= cfg.limit.samplingRate;\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return false;\r\n }\r\n function _getLocalStorageObjByKey(key) {\r\n try {\r\n var curObj = _localStorageObj[key];\r\n if (!curObj) {\r\n var localStorageName = _getLocalStorageName(key, _namePrefix);\r\n curObj = _getLocalStorageObj(utlGetLocalStorage(_logger, localStorageName), _logger, localStorageName);\r\n _localStorageObj[key] = curObj;\r\n }\r\n return _localStorageObj[key];\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n function _isTrigger(key) {\r\n var isTrigger = _isTriggered[key];\r\n if (isNullOrUndefined(isTrigger)) {\r\n isTrigger = false;\r\n var localStorageObj = _getLocalStorageObjByKey(key);\r\n if (localStorageObj) {\r\n isTrigger = _isTriggeredOnCurDate(localStorageObj[_DYN_PRE_TRIGGER_DATE /* @min:%2epreTriggerDate */]);\r\n }\r\n _isTriggered[key] = isTrigger;\r\n }\r\n return _isTriggered[key];\r\n }\r\n function _getQueueByKey(key) {\r\n _queue = _queue || {};\r\n if (isNullOrUndefined(_queue[key])) {\r\n _queue[key] = [];\r\n }\r\n return _queue[key];\r\n }\r\n }\r\n return ThrottleMgr;\r\n}());\r\nexport { ThrottleMgr };\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { createAllPromise, createPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { arrForEach, arrIndexOf, objDefine, safe, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { createDynamicConfig } from \"../Config/DynamicConfig\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CANCEL, _DYN_DATA, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LENGTH, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_0, _DYN_SPLICE, _DYN_UNLOAD, _DYN_WATCH } from \"../__DynamicConstants\";\r\nimport { STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_OFFLINE_DROP, STR_OFFLINE_SENT, STR_OFFLINE_STORE, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar defaultValues = {\r\n perfEvtsSendAll: false\r\n};\r\nfunction _runScheduledListeners(asyncNotifications) {\r\n asyncNotifications.h = null;\r\n var callbacks = asyncNotifications.cb;\r\n asyncNotifications.cb = [];\r\n arrForEach(callbacks, function (cb) {\r\n // Run the listener in a try-catch to ensure that a single listener failing doesn't prevent the others from running\r\n safe(cb.fn, [cb.arg]);\r\n });\r\n}\r\n// This function is used to combine the logic of running the listeners and handling the async notifications so that they don't\r\n// create multiple timers if there are multiple async listeners.\r\nfunction _runListeners(listeners, name, asyncNotifications, callback) {\r\n arrForEach(listeners, function (listener) {\r\n if (listener && listener[name]) {\r\n if (asyncNotifications) {\r\n // Schedule the callback to be called after the current call stack has cleared.\r\n asyncNotifications.cb[_DYN_PUSH /* @min:%2epush */]({\r\n fn: callback,\r\n arg: listener\r\n });\r\n asyncNotifications.h = asyncNotifications.h || scheduleTimeout(_runScheduledListeners, 0, asyncNotifications);\r\n }\r\n else {\r\n // Run the listener in a try-catch to ensure that a single listener failing doesn't prevent the others from running\r\n safe(callback, [listener]);\r\n }\r\n }\r\n });\r\n}\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nvar NotificationManager = /** @class */ (function () {\r\n function NotificationManager(config) {\r\n this.listeners = [];\r\n var perfEvtsSendAll;\r\n var unloadHandler;\r\n var _listeners = [];\r\n var _asyncNotifications = {\r\n h: null,\r\n cb: []\r\n };\r\n var cfgHandler = createDynamicConfig(config, defaultValues);\r\n unloadHandler = cfgHandler[_DYN_WATCH /* @min:%2ewatch */](function (details) {\r\n perfEvtsSendAll = !!details.cfg.perfEvtsSendAll;\r\n });\r\n dynamicProto(NotificationManager, this, function (_self) {\r\n objDefine(_self, \"listeners\", {\r\n g: function () { return _listeners; }\r\n });\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n _listeners[_DYN_PUSH /* @min:%2epush */](listener);\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param listener - AWTNotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_0 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n var index = arrIndexOf(_listeners, listener);\r\n while (index > -1) {\r\n _listeners[_DYN_SPLICE /* @min:%2esplice */](index, 1);\r\n index = arrIndexOf(_listeners, listener);\r\n }\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param events - The array of events that have been sent.\r\n */\r\n _self[STR_EVENTS_SENT /* @min:%2eeventsSent */] = function (events) {\r\n _runListeners(_listeners, STR_EVENTS_SENT, _asyncNotifications, function (listener) {\r\n listener[STR_EVENTS_SENT /* @min:%2eeventsSent */](events);\r\n });\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param events - The array of events that have been discarded by the SDK.\r\n * @param reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n _self[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */] = function (events, reason) {\r\n _runListeners(_listeners, STR_EVENTS_DISCARDED, _asyncNotifications, function (listener) {\r\n listener[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */](events, reason);\r\n });\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param sendReason - The reason why the event batch is being sent.\r\n * @param isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n _self[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */] = function (sendReason, isAsync) {\r\n _runListeners(_listeners, STR_EVENTS_SEND_REQUEST, isAsync ? _asyncNotifications : null, function (listener) {\r\n listener[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendReason, isAsync);\r\n });\r\n };\r\n _self[STR_PERF_EVENT /* @min:%2eperfEvent */] = function (perfEvent) {\r\n if (perfEvent) {\r\n // Send all events or only parent events\r\n if (perfEvtsSendAll || !perfEvent[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */]()) {\r\n _runListeners(_listeners, STR_PERF_EVENT, null, function (listener) {\r\n if (perfEvent[_DYN_IS_ASYNC /* @min:%2eisAsync */]) {\r\n scheduleTimeout(function () { return listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent); }, 0);\r\n }\r\n else {\r\n listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n _self[STR_OFFLINE_STORE /* @min:%2eofflineEventsStored */] = function (events) {\r\n if (events && events[_DYN_LENGTH /* @min:%2elength */]) {\r\n _runListeners(_listeners, STR_OFFLINE_STORE, _asyncNotifications, function (listener) {\r\n listener[STR_OFFLINE_STORE /* @min:%2eofflineEventsStored */](events);\r\n });\r\n }\r\n };\r\n _self[STR_OFFLINE_SENT /* @min:%2eofflineBatchSent */] = function (batch) {\r\n if (batch && batch[_DYN_DATA /* @min:%2edata */]) {\r\n _runListeners(_listeners, STR_OFFLINE_SENT, _asyncNotifications, function (listener) {\r\n listener[STR_OFFLINE_SENT /* @min:%2eofflineBatchSent */](batch);\r\n });\r\n }\r\n };\r\n _self[STR_OFFLINE_DROP /* @min:%2eofflineBatchDrop */] = function (cnt, reason) {\r\n if (cnt > 0) {\r\n var rn_1 = reason || 0; // default is unknown\r\n _runListeners(_listeners, STR_OFFLINE_DROP, _asyncNotifications, function (listener) {\r\n listener[STR_OFFLINE_DROP /* @min:%2eofflineBatchDrop */](cnt, rn_1);\r\n });\r\n }\r\n };\r\n _self[_DYN_UNLOAD /* @min:%2eunload */] = function (isAsync) {\r\n var _finishUnload = function () {\r\n unloadHandler && unloadHandler.rm();\r\n unloadHandler = null;\r\n _listeners = [];\r\n // Clear any async listener\r\n _asyncNotifications.h && _asyncNotifications.h[_DYN_CANCEL /* @min:%2ecancel */]();\r\n _asyncNotifications.h = null;\r\n _asyncNotifications.cb = [];\r\n };\r\n var waiting;\r\n _runListeners(_listeners, \"unload\", null, function (listener) {\r\n var asyncUnload = listener[_DYN_UNLOAD /* @min:%2eunload */](isAsync);\r\n if (asyncUnload) {\r\n if (!waiting) {\r\n waiting = [];\r\n }\r\n waiting[_DYN_PUSH /* @min:%2epush */](asyncUnload);\r\n }\r\n });\r\n if (waiting) {\r\n return createPromise(function (resolve) {\r\n return doAwaitResponse(createAllPromise(waiting), function () {\r\n _finishUnload();\r\n resolve();\r\n });\r\n });\r\n }\r\n else {\r\n _finishUnload();\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for NotificationManager.prototype.addNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.removeNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.eventsSent.\r\n// Removed Stub for NotificationManager.prototype.eventsDiscarded.\r\n// Removed Stub for NotificationManager.prototype.eventsSendRequest.\r\n// Removed Stub for NotificationManager.prototype.perfEvent.\r\n// Removed Stub for NotificationManager.prototype.unload.\r\n// Removed Stub for NotificationManager.prototype.offlineEventsStored.\r\n// Removed Stub for NotificationManager.prototype.offlineBatchSent.\r\n// Removed Stub for NotificationManager.prototype.offlineBatchDrop.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n NotificationManager.__ieDyn=1;\n\n return NotificationManager;\r\n}());\r\nexport { NotificationManager };\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nvar _a;\r\nimport { __spreadArrayFn as __spreadArray } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { createAllSettledPromise, createPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { arrAppend, arrForEach, arrIndexOf, createTimeout, deepExtend, hasDocument, isFunction, isNullOrUndefined, isPlainObject, isPromiseLike, objDeepFreeze, objDefine, objForEachKey, objFreeze, objHasOwn, scheduleTimeout, throwError } from \"@nevware21/ts-utils\";\r\nimport { createDynamicConfig, onConfigChange } from \"../Config/DynamicConfig\";\r\nimport { ActiveStatus } from \"../JavaScriptSDK.Enums/InitActiveStatusEnum\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CANCEL, _DYN_CREATE_NEW, _DYN_ENABLED, _DYN_GET_NOTIFY_MGR, _DYN_GET_PLUGIN, _DYN_GET_PROCESS_TEL_CONT2, _DYN_IDENTIFIER, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_I_KEY, _DYN_LENGTH, _DYN_LOGGER, _DYN_LOGGING_LEVEL_CONSOL4, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_NAME, _DYN_NOTIFY, _DYN_ON_COMPLETE, _DYN_POLL_INTERNAL_LOGS, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_0, _DYN_SET_DF, _DYN_SPLICE, _DYN_STOP_POLLING_INTERNA3, _DYN_TEARDOWN, _DYN_TIME, _DYN_UNLOAD, _DYN_VALUE, _DYN_VERSION, _DYN_WATCH, _DYN__INACTIVE } from \"../__DynamicConstants\";\r\nimport { doUnloadAll, runTargetUnload } from \"./AsyncUtils\";\r\nimport { ChannelControllerPriority } from \"./Constants\";\r\nimport { createCookieMgr } from \"./CookieMgr\";\r\nimport { createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDebugListener } from \"./DbgExtensionUtils\";\r\nimport { DiagnosticLogger, _InternalLogMessage, _throwInternal, _warnToConsole } from \"./DiagnosticLogger\";\r\nimport { getSetValue, isNotNullOrUndefined, proxyFunctionAs, proxyFunctions, toISOString } from \"./HelperFuncs\";\r\nimport { STR_CHANNELS, STR_CORE, STR_CREATE_PERF_MGR, STR_DISABLED, STR_EMPTY, STR_EVENTS_DISCARDED, STR_EXTENSIONS, STR_EXTENSION_CONFIG, STR_GET_PERF_MGR, STR_PRIORITY, UNDEFINED_VALUE } from \"./InternalConstants\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { PerfManager, doPerf, getGblPerfMgr } from \"./PerfManager\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { _getPluginState, createDistributedTraceContext, initializePlugins, sortPlugins } from \"./TelemetryHelpers\";\r\nimport { TelemetryInitializerPlugin } from \"./TelemetryInitializerPlugin\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nimport { createUnloadHookContainer } from \"./UnloadHookContainer\";\r\nvar strValidationError = \"Plugins must provide initialize method\";\r\nvar strNotificationManager = \"_notificationManager\";\r\nvar strSdkUnloadingError = \"SDK is still unloading...\";\r\nvar strSdkNotInitialized = \"SDK is not initialized\";\r\nvar maxInitQueueSize = 100;\r\nvar maxInitTimeout = 50000;\r\n// const strPluginUnloadFailed = \"Failed to unload plugin\";\r\n/**\r\n * The default settings for the config.\r\n * WE MUST include all defaults here to ensure that the config is created with all of the properties\r\n * defined as dynamic.\r\n */\r\nvar defaultConfig = objDeepFreeze((_a = {\r\n cookieCfg: {}\r\n },\r\n _a[STR_EXTENSIONS] = { rdOnly: true, ref: true, v: [] },\r\n _a[STR_CHANNELS] = { rdOnly: true, ref: true, v: [] },\r\n _a[STR_EXTENSION_CONFIG] = { ref: true, v: {} },\r\n _a[STR_CREATE_PERF_MGR] = UNDEFINED_VALUE,\r\n _a.loggingLevelConsole = 0 /* eLoggingSeverity.DISABLED */,\r\n _a.diagnosticLogInterval = UNDEFINED_VALUE,\r\n _a));\r\n/**\r\n * Helper to create the default performance manager\r\n * @param core\r\n * @param notificationMgr\r\n */\r\nfunction _createPerfManager(core, notificationMgr) {\r\n return new PerfManager(notificationMgr);\r\n}\r\nfunction _validateExtensions(logger, channelPriority, allExtensions) {\r\n var _a;\r\n // Concat all available extensions\r\n var coreExtensions = [];\r\n var channels = [];\r\n // Check if any two extensions have the same priority, then warn to console\r\n // And extract the local extensions from the\r\n var extPriorities = {};\r\n // Extension validation\r\n arrForEach(allExtensions, function (ext) {\r\n // Check for ext.initialize\r\n if (isNullOrUndefined(ext) || isNullOrUndefined(ext[_DYN_INITIALIZE /* @min:%2einitialize */])) {\r\n throwError(strValidationError);\r\n }\r\n var extPriority = ext[STR_PRIORITY /* @min:%2epriority */];\r\n var identifier = ext[_DYN_IDENTIFIER /* @min:%2eidentifier */];\r\n if (ext && extPriority) {\r\n if (!isNullOrUndefined(extPriorities[extPriority])) {\r\n _warnToConsole(logger, \"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n }\r\n else {\r\n // set a value\r\n extPriorities[extPriority] = identifier;\r\n }\r\n }\r\n // Split extensions to core and channels\r\n if (!extPriority || extPriority < channelPriority) {\r\n // Add to core extension that will be managed by AppInsightsCore\r\n coreExtensions[_DYN_PUSH /* @min:%2epush */](ext);\r\n }\r\n else {\r\n channels[_DYN_PUSH /* @min:%2epush */](ext);\r\n }\r\n });\r\n return _a = {},\r\n _a[STR_CORE /* @min:core */] = coreExtensions,\r\n _a[STR_CHANNELS /* @min:channels */] = channels,\r\n _a;\r\n}\r\nfunction _isPluginPresent(thePlugin, plugins) {\r\n var exists = false;\r\n arrForEach(plugins, function (plugin) {\r\n if (plugin === thePlugin) {\r\n exists = true;\r\n return -1;\r\n }\r\n });\r\n return exists;\r\n}\r\nfunction _deepMergeConfig(details, target, newValues, merge) {\r\n // Lets assign the new values to the existing config\r\n if (newValues) {\r\n objForEachKey(newValues, function (key, value) {\r\n if (merge) {\r\n if (isPlainObject(value) && isPlainObject(target[key])) {\r\n // The target is an object and it has a value\r\n _deepMergeConfig(details, target[key], value, merge);\r\n }\r\n }\r\n if (merge && isPlainObject(value) && isPlainObject(target[key])) {\r\n // The target is an object and it has a value\r\n _deepMergeConfig(details, target[key], value, merge);\r\n }\r\n else {\r\n // Just Assign (replace) and/or make the property dynamic\r\n details.set(target, key, value);\r\n }\r\n });\r\n }\r\n}\r\nfunction _findWatcher(listeners, newWatcher) {\r\n var theListener = null;\r\n var idx = -1;\r\n arrForEach(listeners, function (listener, lp) {\r\n if (listener.w === newWatcher) {\r\n theListener = listener;\r\n idx = lp;\r\n return -1;\r\n }\r\n });\r\n return { i: idx, l: theListener };\r\n}\r\nfunction _addDelayedCfgListener(listeners, newWatcher) {\r\n var theListener = _findWatcher(listeners, newWatcher).l;\r\n if (!theListener) {\r\n theListener = {\r\n w: newWatcher,\r\n rm: function () {\r\n var fnd = _findWatcher(listeners, newWatcher);\r\n if (fnd.i !== -1) {\r\n listeners[_DYN_SPLICE /* @min:%2esplice */](fnd.i, 1);\r\n }\r\n }\r\n };\r\n listeners[_DYN_PUSH /* @min:%2epush */](theListener);\r\n }\r\n return theListener;\r\n}\r\nfunction _registerDelayedCfgListener(config, listeners, logger) {\r\n arrForEach(listeners, function (listener) {\r\n var unloadHdl = onConfigChange(config, listener.w, logger);\r\n delete listener.w; // Clear the listener reference so it will get garbage collected.\r\n // replace the remove function\r\n listener.rm = function () {\r\n unloadHdl.rm();\r\n };\r\n });\r\n}\r\n// Moved this outside of the closure to reduce the retained memory footprint\r\nfunction _initDebugListener(configHandler, unloadContainer, notificationManager, debugListener) {\r\n // Will get recalled if any referenced config values are changed\r\n unloadContainer.add(configHandler[_DYN_WATCH /* @min:%2ewatch */](function (details) {\r\n var disableDbgExt = details.cfg.disableDbgExt;\r\n if (disableDbgExt === true && debugListener) {\r\n // Remove any previously loaded debug listener\r\n notificationManager[_DYN_REMOVE_NOTIFICATION_0 /* @min:%2eremoveNotificationListener */](debugListener);\r\n debugListener = null;\r\n }\r\n if (notificationManager && !debugListener && disableDbgExt !== true) {\r\n debugListener = getDebugListener(details.cfg);\r\n notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](debugListener);\r\n }\r\n }));\r\n return debugListener;\r\n}\r\n// Moved this outside of the closure to reduce the retained memory footprint\r\nfunction _createUnloadHook(unloadHook) {\r\n return objDefine({\r\n rm: function () {\r\n unloadHook.rm();\r\n }\r\n }, \"toJSON\", { v: function () { return \"aicore::onCfgChange<\" + JSON.stringify(unloadHook) + \">\"; } });\r\n}\r\n/**\r\n * @group Classes\r\n * @group Entrypoint\r\n */\r\nvar AppInsightsCore = /** @class */ (function () {\r\n function AppInsightsCore() {\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _configHandler;\r\n var _isInitialized;\r\n var _logger;\r\n var _eventQueue;\r\n var _notificationManager;\r\n var _perfManager;\r\n var _cfgPerfManager;\r\n var _cookieManager;\r\n var _pluginChain;\r\n var _configExtensions;\r\n var _channelConfig;\r\n var _channels;\r\n var _isUnloading;\r\n var _telemetryInitializerPlugin;\r\n var _internalLogsEventName;\r\n var _evtNamespace;\r\n var _unloadHandlers;\r\n var _hookContainer;\r\n var _debugListener;\r\n var _traceCtx;\r\n var _instrumentationKey;\r\n var _cfgListeners;\r\n var _extensions;\r\n var _pluginVersionStringArr;\r\n var _pluginVersionString;\r\n var _activeStatus; // to indicate if ikey or endpoint url promised is resolved or not\r\n var _endpoint;\r\n var _initInMemoMaxSize; // max event count limit during wait for init promises to be resolved\r\n var _isStatusSet; // track if active status is set in case of init timeout and init promises setting the status twice\r\n var _initTimer;\r\n /**\r\n * Internal log poller\r\n */\r\n var _internalLogPoller;\r\n var _internalLogPollerListening;\r\n var _forceStopInternalLogPoller;\r\n dynamicProto(AppInsightsCore, this, function (_self) {\r\n // Set the default values (also called during teardown)\r\n _initDefaults();\r\n // Special internal method to allow the unit tests and DebugPlugin to hook embedded objects\r\n _self[\"_getDbgPlgTargets\"] = function () {\r\n return [_extensions, _eventQueue];\r\n };\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () { return _isInitialized; };\r\n // since version 3.3.0\r\n _self.activeStatus = function () { return _activeStatus; };\r\n // since version 3.3.0\r\n // internal\r\n _self._setPendingStatus = function () {\r\n _activeStatus = 3 /* eActiveStatus.PENDING */;\r\n };\r\n // Creating the self.initialize = ()\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n if (_isUnloading) {\r\n throwError(strSdkUnloadingError);\r\n }\r\n // Make sure core is only initialized once\r\n if (_self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n throwError(\"Core cannot be initialized more than once\");\r\n }\r\n _configHandler = createDynamicConfig(config, defaultConfig, logger || _self[_DYN_LOGGER /* @min:%2elogger */], false);\r\n // Re-assigning the local config property so we don't have any references to the passed value and it can be garbage collected\r\n config = _configHandler.cfg;\r\n // This will be \"re-run\" if the referenced config properties are changed\r\n _addUnloadHook(_configHandler[_DYN_WATCH /* @min:%2ewatch */](function (details) {\r\n var rootCfg = details.cfg;\r\n var isPending = _activeStatus === 3 /* eActiveStatus.PENDING */;\r\n if (isPending) {\r\n // means waiting for previous promises to be resolved, won't apply new changes\r\n return;\r\n }\r\n _initInMemoMaxSize = rootCfg.initInMemoMaxSize || maxInitQueueSize;\r\n // app Insights core only handle ikey and endpointurl, aisku will handle cs\r\n var ikey = rootCfg[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n var endpointUrl = rootCfg.endpointUrl; // do not need to validate endpoint url, if it is null, default one will be set by sender\r\n if (isNullOrUndefined(ikey)) {\r\n _instrumentationKey = null;\r\n // if new ikey is null, set status to be inactive, all new events will be saved in memory or dropped\r\n _activeStatus = ActiveStatus[_DYN__INACTIVE /* @min:%2eINACTIVE */];\r\n var msg = \"Please provide instrumentation key\";\r\n if (!_isInitialized) {\r\n // only throw error during initialization\r\n throwError(msg);\r\n }\r\n else {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 100 /* _eInternalMessageId.InvalidInstrumentationKey */, msg);\r\n _releaseQueues();\r\n }\r\n return;\r\n }\r\n var promises = [];\r\n if (isPromiseLike(ikey)) {\r\n promises[_DYN_PUSH /* @min:%2epush */](ikey);\r\n _instrumentationKey = null; // reset current local ikey variable (otherwise it will always be the previous ikeys if timeout is called before promise cb)\r\n }\r\n else {\r\n // string\r\n _instrumentationKey = ikey;\r\n }\r\n if (isPromiseLike(endpointUrl)) {\r\n promises[_DYN_PUSH /* @min:%2epush */](endpointUrl);\r\n _endpoint = null; // reset current local endpoint variable (otherwise it will always be the previous urls if timeout is called before promise cb)\r\n }\r\n else {\r\n // string or null\r\n _endpoint = endpointUrl;\r\n }\r\n // at least have one promise\r\n if (promises[_DYN_LENGTH /* @min:%2elength */]) {\r\n // reset to false for new dynamic changes\r\n _isStatusSet = false;\r\n _activeStatus = 3 /* eActiveStatus.PENDING */;\r\n var initTimeout = isNotNullOrUndefined(rootCfg.initTimeOut) ? rootCfg.initTimeOut : maxInitTimeout; // rootCfg.initTimeOut could be 0\r\n var allPromises = createAllSettledPromise(promises);\r\n _initTimer = scheduleTimeout(function () {\r\n // set _isStatusSet to true\r\n // set active status\r\n // release queues\r\n _initTimer = null;\r\n if (!_isStatusSet) {\r\n _setStatus();\r\n }\r\n }, initTimeout);\r\n doAwaitResponse(allPromises, function (response) {\r\n try {\r\n if (_isStatusSet) {\r\n // promises take too long to resolve, ignore them\r\n // active status should be set by timeout already\r\n return;\r\n }\r\n if (!response.rejected) {\r\n var values = response[_DYN_VALUE /* @min:%2evalue */];\r\n if (values && values[_DYN_LENGTH /* @min:%2elength */]) {\r\n // ikey\r\n var ikeyRes = values[0];\r\n _instrumentationKey = ikeyRes && ikeyRes[_DYN_VALUE /* @min:%2evalue */];\r\n // endpoint\r\n if (values[_DYN_LENGTH /* @min:%2elength */] > 1) {\r\n var endpointRes = values[1];\r\n _endpoint = endpointRes && endpointRes[_DYN_VALUE /* @min:%2evalue */];\r\n }\r\n }\r\n if (_instrumentationKey) {\r\n // if ikey is null, no need to trigger extra dynamic changes for extensions\r\n config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = _instrumentationKey; // set config.instrumentationKey for extensions to consume\r\n config.endpointUrl = _endpoint; // set config.endpointUrl for extensions to consume\r\n }\r\n }\r\n // set _isStatusSet to true\r\n // set active status\r\n // release queues\r\n _setStatus();\r\n }\r\n catch (e) {\r\n if (!_isStatusSet) {\r\n _setStatus();\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n // means no promises\r\n _setStatus();\r\n }\r\n //_instrumentationKey = details.cfg.instrumentationKey;\r\n // Mark the extensionConfig and all first level keys as referenced\r\n // This is so that calls to getExtCfg() will always return the same object\r\n // Even when a user may \"re-assign\" the plugin properties (or it's unloaded/reloaded)\r\n var extCfg = details.ref(details.cfg, STR_EXTENSION_CONFIG);\r\n objForEachKey(extCfg, function (key) {\r\n details.ref(extCfg, key);\r\n });\r\n }));\r\n _notificationManager = notificationManager;\r\n // Initialize the debug listener outside of the closure to reduce the retained memory footprint\r\n _debugListener = _initDebugListener(_configHandler, _hookContainer, _notificationManager && _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */](), _debugListener);\r\n _initPerfManager();\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = logger;\r\n var cfgExtensions = config[STR_EXTENSIONS /* @min:%2eextensions */];\r\n // Extension validation\r\n _configExtensions = [];\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */].apply(_configExtensions, __spreadArray(__spreadArray([], extensions, false), cfgExtensions, false));\r\n _channelConfig = config[STR_CHANNELS /* @min:%2echannels */];\r\n _initPluginChain(null);\r\n if (!_channels || _channels[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n throwError(\"No \" + STR_CHANNELS + \" available\");\r\n }\r\n if (_channelConfig && _channelConfig[_DYN_LENGTH /* @min:%2elength */] > 1) {\r\n var teeController = _self[_DYN_GET_PLUGIN /* @min:%2egetPlugin */](\"TeeChannelController\");\r\n if (!teeController || !teeController.plugin) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"TeeChannel required\");\r\n }\r\n }\r\n _registerDelayedCfgListener(config, _cfgListeners, _logger);\r\n _cfgListeners = null;\r\n _isInitialized = true;\r\n if (_activeStatus === ActiveStatus.ACTIVE) {\r\n _releaseQueues();\r\n }\r\n };\r\n _self.getChannels = function () {\r\n var controls = [];\r\n if (_channels) {\r\n arrForEach(_channels, function (channel) {\r\n controls[_DYN_PUSH /* @min:%2epush */](channel);\r\n });\r\n }\r\n return objFreeze(controls);\r\n };\r\n _self.track = function (telemetryItem) {\r\n doPerf(_self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */](), function () { return \"AppInsightsCore:track\"; }, function () {\r\n if (telemetryItem === null) {\r\n _notifyInvalidEvent(telemetryItem);\r\n // throw error\r\n throwError(\"Invalid telemetry item\");\r\n }\r\n // do basic validation before sending it through the pipeline\r\n if (!telemetryItem[_DYN_NAME /* @min:%2ename */] && isNullOrUndefined(telemetryItem[_DYN_NAME /* @min:%2ename */])) {\r\n _notifyInvalidEvent(telemetryItem);\r\n throwError(\"telemetry name required\");\r\n }\r\n // setup default iKey if not passed in\r\n telemetryItem[_DYN_I_KEY /* @min:%2eiKey */] = telemetryItem[_DYN_I_KEY /* @min:%2eiKey */] || _instrumentationKey;\r\n // add default timestamp if not passed in\r\n telemetryItem[_DYN_TIME /* @min:%2etime */] = telemetryItem[_DYN_TIME /* @min:%2etime */] || toISOString(new Date());\r\n // Common Schema 4.0\r\n telemetryItem.ver = telemetryItem.ver || \"4.0\";\r\n if (!_isUnloading && _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]() && _activeStatus === ActiveStatus.ACTIVE) {\r\n // Process the telemetry plugin chain\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](telemetryItem);\r\n }\r\n else if (_activeStatus !== ActiveStatus[_DYN__INACTIVE /* @min:%2eINACTIVE */]) {\r\n // Queue events until all extensions are initialized\r\n if (_eventQueue[_DYN_LENGTH /* @min:%2elength */] <= _initInMemoMaxSize) {\r\n // set limit, if full, stop adding new events\r\n _eventQueue[_DYN_PUSH /* @min:%2epush */](telemetryItem);\r\n }\r\n }\r\n }, function () { return ({ item: telemetryItem }); }, !(telemetryItem.sync));\r\n };\r\n _self[_DYN_GET_PROCESS_TEL_CONT2 /* @min:%2egetProcessTelContext */] = _createTelCtx;\r\n _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */] = function () {\r\n if (!_notificationManager) {\r\n _notificationManager = new NotificationManager(_configHandler.cfg);\r\n // For backward compatibility only\r\n _self[strNotificationManager] = _notificationManager;\r\n }\r\n return _notificationManager;\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param listener - An INotificationListener object.\r\n */\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n _self.getNotifyMgr()[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](listener);\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param listener - INotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_0 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[_DYN_REMOVE_NOTIFICATION_0 /* @min:%2eremoveNotificationListener */](listener);\r\n }\r\n };\r\n _self.getCookieMgr = function () {\r\n if (!_cookieManager) {\r\n _cookieManager = createCookieMgr(_configHandler.cfg, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return _cookieManager;\r\n };\r\n _self.setCookieMgr = function (cookieMgr) {\r\n if (_cookieManager !== cookieMgr) {\r\n runTargetUnload(_cookieManager, false);\r\n _cookieManager = cookieMgr;\r\n }\r\n };\r\n _self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */] = function () {\r\n return _perfManager || _cfgPerfManager || getGblPerfMgr();\r\n };\r\n _self.setPerfMgr = function (perfMgr) {\r\n _perfManager = perfMgr;\r\n };\r\n _self.eventCnt = function () {\r\n return _eventQueue[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.releaseQueue = function () {\r\n if (_isInitialized && _eventQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var eventQueue = _eventQueue;\r\n _eventQueue = [];\r\n if (_activeStatus === 2 /* eActiveStatus.ACTIVE */) {\r\n arrForEach(eventQueue, function (event) {\r\n event[_DYN_I_KEY /* @min:%2eiKey */] = event[_DYN_I_KEY /* @min:%2eiKey */] || _instrumentationKey;\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](event);\r\n });\r\n }\r\n else {\r\n // new one for msg ikey\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 20 /* _eInternalMessageId.FailedToSendQueuedTelemetry */, \"core init status is not active\");\r\n }\r\n }\r\n };\r\n _self[_DYN_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */] = function (eventName) {\r\n _internalLogsEventName = eventName || null;\r\n _forceStopInternalLogPoller = false;\r\n _internalLogPoller && _internalLogPoller[_DYN_CANCEL /* @min:%2ecancel */]();\r\n return _startLogPoller(true);\r\n };\r\n function _setStatus() {\r\n _isStatusSet = true;\r\n if (isNullOrUndefined(_instrumentationKey)) {\r\n _activeStatus = ActiveStatus[_DYN__INACTIVE /* @min:%2eINACTIVE */];\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 112 /* _eInternalMessageId.InitPromiseException */, \"ikey can't be resolved from promises\");\r\n }\r\n else {\r\n _activeStatus = ActiveStatus.ACTIVE;\r\n }\r\n _releaseQueues();\r\n }\r\n function _releaseQueues() {\r\n if (_isInitialized) {\r\n _self.releaseQueue();\r\n _self[_DYN_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */]();\r\n }\r\n }\r\n function _startLogPoller(alwaysStart) {\r\n if ((!_internalLogPoller || !_internalLogPoller[_DYN_ENABLED /* @min:%2eenabled */]) && !_forceStopInternalLogPoller) {\r\n var shouldStart = alwaysStart || (_logger && _logger.queue[_DYN_LENGTH /* @min:%2elength */] > 0);\r\n if (shouldStart) {\r\n if (!_internalLogPollerListening) {\r\n _internalLogPollerListening = true;\r\n // listen for any configuration changes so that changes to the\r\n // interval will cause the timer to be re-initialized\r\n _addUnloadHook(_configHandler[_DYN_WATCH /* @min:%2ewatch */](function (details) {\r\n var interval = details.cfg.diagnosticLogInterval;\r\n if (!interval || !(interval > 0)) {\r\n interval = 10000;\r\n }\r\n var isRunning = false;\r\n if (_internalLogPoller) {\r\n // It was already created so remember it's running and cancel\r\n isRunning = _internalLogPoller[_DYN_ENABLED /* @min:%2eenabled */];\r\n _internalLogPoller[_DYN_CANCEL /* @min:%2ecancel */]();\r\n }\r\n // Create / reconfigure\r\n _internalLogPoller = createTimeout(_flushInternalLogs, interval);\r\n _internalLogPoller.unref();\r\n // Restart if previously running\r\n _internalLogPoller[_DYN_ENABLED /* @min:%2eenabled */] = isRunning;\r\n }));\r\n }\r\n _internalLogPoller[_DYN_ENABLED /* @min:%2eenabled */] = true;\r\n }\r\n }\r\n return _internalLogPoller;\r\n }\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */] = function () {\r\n _forceStopInternalLogPoller = true;\r\n _internalLogPoller && _internalLogPoller[_DYN_CANCEL /* @min:%2ecancel */]();\r\n _flushInternalLogs();\r\n };\r\n // Add addTelemetryInitializer\r\n proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, [\"addTelemetryInitializer\"]);\r\n _self[_DYN_UNLOAD /* @min:%2eunload */] = function (isAsync, unloadComplete, cbTimeout) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_isInitialized) {\r\n // The SDK is not initialized\r\n throwError(strSdkNotInitialized);\r\n }\r\n // Check if the SDK still unloading so throw\r\n if (_isUnloading) {\r\n // The SDK is already unloading\r\n throwError(strSdkUnloadingError);\r\n }\r\n var unloadState = (_a = {\r\n reason: 50 /* TelemetryUnloadReason.SdkUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a.flushComplete = false,\r\n _a);\r\n var result;\r\n if (isAsync && !unloadComplete) {\r\n result = createPromise(function (resolve) {\r\n // Set the callback to the promise resolve callback\r\n unloadComplete = resolve;\r\n });\r\n }\r\n var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self);\r\n processUnloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n _hookContainer.run(_self[_DYN_LOGGER /* @min:%2elogger */]);\r\n // Run any \"unload\" functions for the _cookieManager, _notificationManager and _logger\r\n doUnloadAll([_cookieManager, _notificationManager, _logger], isAsync, function () {\r\n _initDefaults();\r\n unloadComplete && unloadComplete(unloadState);\r\n });\r\n }, _self);\r\n function _doUnload(flushComplete) {\r\n unloadState.flushComplete = flushComplete;\r\n _isUnloading = true;\r\n // Run all of the unload handlers first (before unloading the plugins)\r\n _unloadHandlers.run(processUnloadCtx, unloadState);\r\n // Stop polling the internal logs\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */]();\r\n // Start unloading the components, from this point onwards the SDK should be considered to be in an unstable state\r\n processUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n _flushInternalLogs();\r\n if (!_flushChannels(isAsync, _doUnload, 6 /* SendRequestReason.SdkUnload */, cbTimeout)) {\r\n _doUnload(false);\r\n }\r\n return result;\r\n };\r\n _self[_DYN_GET_PLUGIN /* @min:%2egetPlugin */] = _getPlugin;\r\n _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {\r\n if (!plugin) {\r\n addCb && addCb(false);\r\n _logOrThrowError(strValidationError);\r\n return;\r\n }\r\n var existingPlugin = _getPlugin(plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n if (existingPlugin && !replaceExisting) {\r\n addCb && addCb(false);\r\n _logOrThrowError(\"Plugin [\" + plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"] is already loaded!\");\r\n return;\r\n }\r\n var updateState = {\r\n reason: 16 /* TelemetryUpdateReason.PluginAdded */\r\n };\r\n function _addPlugin(removed) {\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n updateState.added = [plugin];\r\n // Re-Initialize the plugin chain\r\n _initPluginChain(updateState);\r\n addCb && addCb(true);\r\n }\r\n if (existingPlugin) {\r\n var removedPlugins_1 = [existingPlugin.plugin];\r\n var unloadState = {\r\n reason: 2 /* TelemetryUnloadReason.PluginReplace */,\r\n isAsync: !!isAsync\r\n };\r\n _removePlugins(removedPlugins_1, unloadState, function (removed) {\r\n if (!removed) {\r\n // Previous plugin was successfully removed or was not installed\r\n addCb && addCb(false);\r\n }\r\n else {\r\n updateState.removed = removedPlugins_1;\r\n updateState.reason |= 32 /* TelemetryUpdateReason.PluginRemoved */;\r\n _addPlugin(true);\r\n }\r\n });\r\n }\r\n else {\r\n _addPlugin(false);\r\n }\r\n };\r\n _self.updateCfg = function (newConfig, mergeExisting) {\r\n if (mergeExisting === void 0) { mergeExisting = true; }\r\n var updateState;\r\n if (_self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n updateState = {\r\n reason: 1 /* TelemetryUpdateReason.ConfigurationChanged */,\r\n cfg: _configHandler.cfg,\r\n oldCfg: deepExtend({}, _configHandler.cfg),\r\n newConfig: deepExtend({}, newConfig),\r\n merge: mergeExisting\r\n };\r\n newConfig = updateState.newConfig;\r\n var cfg = _configHandler.cfg;\r\n // replace the immutable (if initialized) values\r\n // We don't currently allow updating the extensions and channels via the update config\r\n // So overwriting any user provided values to reuse the existing values\r\n newConfig[STR_EXTENSIONS /* @min:%2eextensions */] = cfg[STR_EXTENSIONS /* @min:%2eextensions */];\r\n newConfig[STR_CHANNELS /* @min:%2echannels */] = cfg[STR_CHANNELS /* @min:%2echannels */];\r\n }\r\n // Explicitly blocking any previous config watchers so that they don't get called because\r\n // of this bulk update (Probably not necessary)\r\n _configHandler._block(function (details) {\r\n // Lets assign the new values to the existing config either overwriting or re-assigning\r\n var theConfig = details.cfg;\r\n _deepMergeConfig(details, theConfig, newConfig, mergeExisting);\r\n if (!mergeExisting) {\r\n // Remove (unassign) the values \"missing\" from the newConfig and also not in the default config\r\n objForEachKey(theConfig, function (key) {\r\n if (!objHasOwn(newConfig, key)) {\r\n // Set the value to undefined\r\n details.set(theConfig, key, UNDEFINED_VALUE);\r\n }\r\n });\r\n }\r\n // Apply defaults to the new config\r\n details[_DYN_SET_DF /* @min:%2esetDf */](theConfig, defaultConfig);\r\n }, true);\r\n // Now execute all of the listeners (synchronously) so they update their values immediately\r\n _configHandler[_DYN_NOTIFY /* @min:%2enotify */]();\r\n if (updateState) {\r\n _doUpdate(updateState);\r\n }\r\n };\r\n _self.evtNamespace = function () {\r\n return _evtNamespace;\r\n };\r\n _self.flush = _flushChannels;\r\n _self.getTraceCtx = function (createNew) {\r\n if (!_traceCtx) {\r\n _traceCtx = createDistributedTraceContext();\r\n }\r\n return _traceCtx;\r\n };\r\n _self.setTraceCtx = function (traceCtx) {\r\n _traceCtx = traceCtx || null;\r\n };\r\n _self.addUnloadHook = _addUnloadHook;\r\n // Create the addUnloadCb\r\n proxyFunctionAs(_self, \"addUnloadCb\", function () { return _unloadHandlers; }, \"add\");\r\n _self.onCfgChange = function (handler) {\r\n var unloadHook;\r\n if (!_isInitialized) {\r\n unloadHook = _addDelayedCfgListener(_cfgListeners, handler);\r\n }\r\n else {\r\n unloadHook = onConfigChange(_configHandler.cfg, handler, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return _createUnloadHook(unloadHook);\r\n };\r\n _self.getWParam = function () {\r\n return (hasDocument() || !!_configHandler.cfg.enableWParam) ? 0 : -1;\r\n };\r\n function _setPluginVersions() {\r\n var thePlugins = {};\r\n _pluginVersionStringArr = [];\r\n var _addPluginVersions = function (plugins) {\r\n if (plugins) {\r\n arrForEach(plugins, function (plugin) {\r\n if (plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] && plugin[_DYN_VERSION /* @min:%2eversion */] && !thePlugins[plugin.identifier]) {\r\n var ver = plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"=\" + plugin[_DYN_VERSION /* @min:%2eversion */];\r\n _pluginVersionStringArr[_DYN_PUSH /* @min:%2epush */](ver);\r\n thePlugins[plugin.identifier] = plugin;\r\n }\r\n });\r\n }\r\n };\r\n _addPluginVersions(_channels);\r\n if (_channelConfig) {\r\n arrForEach(_channelConfig, function (channels) {\r\n _addPluginVersions(channels);\r\n });\r\n }\r\n _addPluginVersions(_configExtensions);\r\n }\r\n function _initDefaults() {\r\n _isInitialized = false;\r\n // Use a default logger so initialization errors are not dropped on the floor with full logging\r\n _configHandler = createDynamicConfig({}, defaultConfig, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n // Set the logging level to critical so that any critical initialization failures are displayed on the console\r\n _configHandler.cfg[_DYN_LOGGING_LEVEL_CONSOL4 /* @min:%2eloggingLevelConsole */] = 1 /* eLoggingSeverity.CRITICAL */;\r\n // Define _self.config\r\n objDefine(_self, \"config\", {\r\n g: function () { return _configHandler.cfg; },\r\n s: function (newValue) {\r\n _self.updateCfg(newValue, false);\r\n }\r\n });\r\n objDefine(_self, \"pluginVersionStringArr\", {\r\n g: function () {\r\n if (!_pluginVersionStringArr) {\r\n _setPluginVersions();\r\n }\r\n return _pluginVersionStringArr;\r\n }\r\n });\r\n objDefine(_self, \"pluginVersionString\", {\r\n g: function () {\r\n if (!_pluginVersionString) {\r\n if (!_pluginVersionStringArr) {\r\n _setPluginVersions();\r\n }\r\n _pluginVersionString = _pluginVersionStringArr.join(\";\");\r\n }\r\n return _pluginVersionString || STR_EMPTY;\r\n }\r\n });\r\n objDefine(_self, \"logger\", {\r\n g: function () {\r\n if (!_logger) {\r\n _logger = new DiagnosticLogger(_configHandler.cfg);\r\n _configHandler[_DYN_LOGGER /* @min:%2elogger */] = _logger;\r\n }\r\n return _logger;\r\n },\r\n s: function (newLogger) {\r\n _configHandler[_DYN_LOGGER /* @min:%2elogger */] = newLogger;\r\n if (_logger !== newLogger) {\r\n runTargetUnload(_logger, false);\r\n _logger = newLogger;\r\n }\r\n }\r\n });\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = new DiagnosticLogger(_configHandler.cfg);\r\n _extensions = [];\r\n var cfgExtensions = _self.config[STR_EXTENSIONS /* @min:%2eextensions */] || [];\r\n cfgExtensions.splice(0, cfgExtensions[_DYN_LENGTH /* @min:%2elength */]);\r\n arrAppend(cfgExtensions, _extensions);\r\n _telemetryInitializerPlugin = new TelemetryInitializerPlugin();\r\n _eventQueue = [];\r\n runTargetUnload(_notificationManager, false);\r\n _notificationManager = null;\r\n _perfManager = null;\r\n _cfgPerfManager = null;\r\n runTargetUnload(_cookieManager, false);\r\n _cookieManager = null;\r\n _pluginChain = null;\r\n _configExtensions = [];\r\n _channelConfig = null;\r\n _channels = null;\r\n _isUnloading = false;\r\n _internalLogsEventName = null;\r\n _evtNamespace = createUniqueNamespace(\"AIBaseCore\", true);\r\n _unloadHandlers = createUnloadHandlerContainer();\r\n _traceCtx = null;\r\n _instrumentationKey = null;\r\n _hookContainer = createUnloadHookContainer();\r\n _cfgListeners = [];\r\n _pluginVersionString = null;\r\n _pluginVersionStringArr = null;\r\n _forceStopInternalLogPoller = false;\r\n _internalLogPoller = null;\r\n _internalLogPollerListening = false;\r\n _activeStatus = 0 /* eActiveStatus.NONE */; // default is None\r\n _endpoint = null;\r\n _initInMemoMaxSize = null;\r\n _isStatusSet = false;\r\n _initTimer = null;\r\n }\r\n function _createTelCtx() {\r\n var theCtx = createProcessTelemetryContext(_getPluginChain(), _configHandler.cfg, _self);\r\n theCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_startLogPoller);\r\n return theCtx;\r\n }\r\n // Initialize or Re-initialize the plugins\r\n function _initPluginChain(updateState) {\r\n // Extension validation\r\n var theExtensions = _validateExtensions(_self[_DYN_LOGGER /* @min:%2elogger */], ChannelControllerPriority, _configExtensions);\r\n _pluginChain = null;\r\n _pluginVersionString = null;\r\n _pluginVersionStringArr = null;\r\n // Get the primary channel queue and include as part of the normal extensions\r\n _channels = (_channelConfig || [])[0] || [];\r\n // Add any channels provided in the extensions and sort them\r\n _channels = sortPlugins(arrAppend(_channels, theExtensions[STR_CHANNELS /* @min:%2echannels */]));\r\n // Create an array of all extensions, including the _channels\r\n var allExtensions = arrAppend(sortPlugins(theExtensions[STR_CORE /* @min:%2ecore */]), _channels);\r\n // Required to allow plugins to call core.getPlugin() during their own initialization\r\n _extensions = objFreeze(allExtensions);\r\n // This has a side effect of adding the extensions passed during initialization\r\n // into the config.extensions, so you can see all of the extensions loaded.\r\n // This will also get updated by the addPlugin() and remove plugin code.\r\n var cfgExtensions = _self.config[STR_EXTENSIONS /* @min:%2eextensions */] || [];\r\n cfgExtensions.splice(0, cfgExtensions[_DYN_LENGTH /* @min:%2elength */]);\r\n arrAppend(cfgExtensions, _extensions);\r\n var rootCtx = _createTelCtx();\r\n // Initializing the channels first\r\n if (_channels && _channels[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n initializePlugins(rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](_channels), allExtensions);\r\n }\r\n // Now initialize the normal extensions (explicitly not including the _channels as this can cause duplicate initialization)\r\n initializePlugins(rootCtx, allExtensions);\r\n if (updateState) {\r\n _doUpdate(updateState);\r\n }\r\n }\r\n function _getPlugin(pluginIdentifier) {\r\n var theExt = null;\r\n var thePlugin = null;\r\n var channelHosts = [];\r\n arrForEach(_extensions, function (ext) {\r\n if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier && ext !== _telemetryInitializerPlugin) {\r\n thePlugin = ext;\r\n return -1;\r\n }\r\n if (ext.getChannel) {\r\n channelHosts[_DYN_PUSH /* @min:%2epush */](ext);\r\n }\r\n });\r\n if (!thePlugin && channelHosts[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(channelHosts, function (host) {\r\n thePlugin = host.getChannel(pluginIdentifier);\r\n if (!thePlugin) {\r\n return -1;\r\n }\r\n });\r\n }\r\n if (thePlugin) {\r\n theExt = {\r\n plugin: thePlugin,\r\n setEnabled: function (enabled) {\r\n _getPluginState(thePlugin)[STR_DISABLED] = !enabled;\r\n },\r\n isEnabled: function () {\r\n var pluginState = _getPluginState(thePlugin);\r\n return !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] && !pluginState[STR_DISABLED];\r\n },\r\n remove: function (isAsync, removeCb) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n var pluginsToRemove = [thePlugin];\r\n var unloadState = (_a = {\r\n reason: 1 /* TelemetryUnloadReason.PluginUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a);\r\n _removePlugins(pluginsToRemove, unloadState, function (removed) {\r\n if (removed) {\r\n // Re-Initialize the plugin chain\r\n _initPluginChain({\r\n reason: 32 /* TelemetryUpdateReason.PluginRemoved */,\r\n removed: pluginsToRemove\r\n });\r\n }\r\n removeCb && removeCb(removed);\r\n });\r\n }\r\n };\r\n }\r\n return theExt;\r\n }\r\n function _getPluginChain() {\r\n if (!_pluginChain) {\r\n // copy the collection of extensions\r\n var extensions = (_extensions || []).slice();\r\n // During add / remove this may get called again, so don't read if already present\r\n if (arrIndexOf(extensions, _telemetryInitializerPlugin) === -1) {\r\n extensions[_DYN_PUSH /* @min:%2epush */](_telemetryInitializerPlugin);\r\n }\r\n _pluginChain = createTelemetryProxyChain(sortPlugins(extensions), _configHandler.cfg, _self);\r\n }\r\n return _pluginChain;\r\n }\r\n function _removePlugins(thePlugins, unloadState, removeComplete) {\r\n if (thePlugins && thePlugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var unloadChain = createTelemetryProxyChain(thePlugins, _configHandler.cfg, _self);\r\n var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self);\r\n unloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n var removed = false;\r\n // Remove the listed config extensions\r\n var newConfigExtensions = [];\r\n arrForEach(_configExtensions, function (plugin, idx) {\r\n if (!_isPluginPresent(plugin, thePlugins)) {\r\n newConfigExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n _configExtensions = newConfigExtensions;\r\n _pluginVersionString = null;\r\n _pluginVersionStringArr = null;\r\n // Re-Create the channel config\r\n var newChannelConfig = [];\r\n if (_channelConfig) {\r\n arrForEach(_channelConfig, function (queue, idx) {\r\n var newQueue = [];\r\n arrForEach(queue, function (channel) {\r\n if (!_isPluginPresent(channel, thePlugins)) {\r\n newQueue[_DYN_PUSH /* @min:%2epush */](channel);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n newChannelConfig[_DYN_PUSH /* @min:%2epush */](newQueue);\r\n });\r\n _channelConfig = newChannelConfig;\r\n }\r\n removeComplete && removeComplete(removed);\r\n _startLogPoller();\r\n });\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n else {\r\n removeComplete(false);\r\n }\r\n }\r\n function _flushInternalLogs() {\r\n if (_logger && _logger.queue) {\r\n var queue = _logger.queue.slice(0);\r\n _logger.queue[_DYN_LENGTH /* @min:%2elength */] = 0;\r\n arrForEach(queue, function (logMessage) {\r\n var _a;\r\n var item = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = _internalLogsEventName ? _internalLogsEventName : \"InternalMessageId: \" + logMessage[_DYN_MESSAGE_ID /* @min:%2emessageId */],\r\n _a[_DYN_I_KEY /* @min:iKey */] = _instrumentationKey,\r\n _a[_DYN_TIME /* @min:time */] = toISOString(new Date()),\r\n _a.baseType = _InternalLogMessage.dataType,\r\n _a.baseData = { message: logMessage[_DYN_MESSAGE /* @min:%2emessage */] },\r\n _a);\r\n _self.track(item);\r\n });\r\n }\r\n }\r\n function _flushChannels(isAsync, callBack, sendReason, cbTimeout) {\r\n // Setting waiting to one so that we don't call the callBack until we finish iterating\r\n var waiting = 1;\r\n var doneIterating = false;\r\n var cbTimer = null;\r\n cbTimeout = cbTimeout || 5000;\r\n function doCallback() {\r\n waiting--;\r\n if (doneIterating && waiting === 0) {\r\n cbTimer && cbTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n cbTimer = null;\r\n callBack && callBack(doneIterating);\r\n callBack = null;\r\n }\r\n }\r\n if (_channels && _channels[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var flushCtx = _createTelCtx()[_DYN_CREATE_NEW /* @min:%2ecreateNew */](_channels);\r\n flushCtx.iterate(function (plugin) {\r\n if (plugin.flush) {\r\n waiting++;\r\n var handled_1 = false;\r\n // Not all channels will call this callback for every scenario\r\n if (!plugin.flush(isAsync, function () {\r\n handled_1 = true;\r\n doCallback();\r\n }, sendReason)) {\r\n if (!handled_1) {\r\n // If any channel doesn't return true and it didn't call the callback, then we should assume that the callback\r\n // will never be called, so use a timeout to allow the channel(s) some time to \"finish\" before triggering any\r\n // followup function (such as unloading)\r\n if (isAsync && cbTimer == null) {\r\n cbTimer = scheduleTimeout(function () {\r\n cbTimer = null;\r\n doCallback();\r\n }, cbTimeout);\r\n }\r\n else {\r\n doCallback();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n doneIterating = true;\r\n doCallback();\r\n return true;\r\n }\r\n function _initPerfManager() {\r\n // Save the previous config based performance manager creator to avoid creating new perf manager instances if unchanged\r\n var prevCfgPerfMgr;\r\n // Will get recalled if any referenced config values are changed\r\n _addUnloadHook(_configHandler[_DYN_WATCH /* @min:%2ewatch */](function (details) {\r\n var enablePerfMgr = details.cfg.enablePerfMgr;\r\n if (enablePerfMgr) {\r\n var createPerfMgr = details.cfg[STR_CREATE_PERF_MGR /* @min:%2ecreatePerfMgr */];\r\n if (prevCfgPerfMgr !== createPerfMgr) {\r\n if (!createPerfMgr) {\r\n createPerfMgr = _createPerfManager;\r\n }\r\n // Set the performance manager creation function if not defined\r\n getSetValue(details.cfg, STR_CREATE_PERF_MGR, createPerfMgr);\r\n prevCfgPerfMgr = createPerfMgr;\r\n // Remove any existing config based performance manager\r\n _cfgPerfManager = null;\r\n }\r\n // Only create the performance manager if it's not already created or manually set\r\n if (!_perfManager && !_cfgPerfManager && isFunction(createPerfMgr)) {\r\n // Create a new config based performance manager\r\n _cfgPerfManager = createPerfMgr(_self, _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]());\r\n }\r\n }\r\n else {\r\n // Remove any existing config based performance manager\r\n _cfgPerfManager = null;\r\n // Clear the previous cached value so it can be GC'd\r\n prevCfgPerfMgr = null;\r\n }\r\n }));\r\n }\r\n function _doUpdate(updateState) {\r\n var updateCtx = createProcessTelemetryUpdateContext(_getPluginChain(), _self);\r\n updateCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_startLogPoller);\r\n if (!_self._updateHook || _self._updateHook(updateCtx, updateState) !== true) {\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n function _logOrThrowError(message) {\r\n var logger = _self[_DYN_LOGGER /* @min:%2elogger */];\r\n if (logger) {\r\n // there should always be a logger\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, message);\r\n _startLogPoller();\r\n }\r\n else {\r\n throwError(message);\r\n }\r\n }\r\n function _notifyInvalidEvent(telemetryItem) {\r\n var manager = _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]();\r\n if (manager) {\r\n manager[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */]([telemetryItem], 2 /* eEventsDiscardedReason.InvalidEvent */);\r\n }\r\n }\r\n function _addUnloadHook(hooks) {\r\n _hookContainer.add(hooks);\r\n }\r\n });\r\n }\r\n// Removed Stub for AppInsightsCore.prototype.initialize.\r\n// Removed Stub for AppInsightsCore.prototype.getChannels.\r\n// Removed Stub for AppInsightsCore.prototype.track.\r\n// Removed Stub for AppInsightsCore.prototype.getProcessTelContext.\r\n// Removed Stub for AppInsightsCore.prototype.getNotifyMgr.\r\n// Removed Stub for AppInsightsCore.prototype.addNotificationListener.\r\n// Removed Stub for AppInsightsCore.prototype.removeNotificationListener.\r\n// Removed Stub for AppInsightsCore.prototype.getCookieMgr.\r\n// Removed Stub for AppInsightsCore.prototype.setCookieMgr.\r\n// Removed Stub for AppInsightsCore.prototype.getPerfMgr.\r\n// Removed Stub for AppInsightsCore.prototype.setPerfMgr.\r\n// Removed Stub for AppInsightsCore.prototype.eventCnt.\r\n// Removed Stub for AppInsightsCore.prototype.pollInternalLogs.\r\n// Removed Stub for AppInsightsCore.prototype.stopPollingInternalLogs.\r\n// Removed Stub for AppInsightsCore.prototype.addTelemetryInitializer.\r\n// Removed Stub for AppInsightsCore.prototype.unload.\r\n// Removed Stub for AppInsightsCore.prototype.getPlugin.\r\n// Removed Stub for AppInsightsCore.prototype.addPlugin.\r\n// Removed Stub for AppInsightsCore.prototype.updateCfg.\r\n// Removed Stub for AppInsightsCore.prototype.evtNamespace.\r\n// Removed Stub for AppInsightsCore.prototype.addUnloadCb.\r\n// Removed Stub for AppInsightsCore.prototype.flush.\r\n// Removed Stub for AppInsightsCore.prototype.getTraceCtx.\r\n// Removed Stub for AppInsightsCore.prototype.setTraceCtx.\r\n// Removed Stub for AppInsightsCore.prototype.addUnloadHook.\r\n// Removed Stub for AppInsightsCore.prototype.onCfgChange.\r\n// Removed Stub for AppInsightsCore.prototype.activeStatus.\r\n// Removed Stub for AppInsightsCore.prototype._setPendingStatus.\r\n// Removed Stub for AppInsightsCore.prototype.releaseQueue.\r\n// Removed Stub for AppInsightsCore.prototype._updateHook.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n AppInsightsCore.__ieDyn=1;\n\n return AppInsightsCore;\r\n}());\r\nexport { AppInsightsCore };\r\n","/*\n * Application Insights JavaScript SDK - Core, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n// \r\n// \r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { arrAppend, arrForEach, dumpObj } from \"@nevware21/ts-utils\";\r\nimport { _DYN_APPLY, _DYN_DIAG_LOG, _DYN_LENGTH, _DYN_PROCESS_NEXT, _DYN_SPLICE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { BaseTelemetryPlugin } from \"./BaseTelemetryPlugin\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { getExceptionName } from \"./HelperFuncs\";\r\nimport { STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nfunction _addInitializer(_initializers, id, telemetryInitializer) {\r\n var theInitializer = {\r\n id: id,\r\n fn: telemetryInitializer\r\n };\r\n arrAppend(_initializers, theInitializer);\r\n var handler = {\r\n remove: function () {\r\n arrForEach(_initializers, function (initializer, idx) {\r\n if (initializer.id === theInitializer.id) {\r\n _initializers[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n return handler;\r\n}\r\nfunction _runInitializers(_initializers, item, logger) {\r\n var doNotSendItem = false;\r\n var telemetryInitializersCount = _initializers[_DYN_LENGTH /* @min:%2elength */];\r\n for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n var telemetryInitializer = _initializers[i];\r\n if (telemetryInitializer) {\r\n try {\r\n if (telemetryInitializer.fn[_DYN_APPLY /* @min:%2eapply */](null, [item]) === false) {\r\n doNotSendItem = true;\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Telemetry initializer failed: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n }\r\n }\r\n return !doNotSendItem;\r\n}\r\nvar TelemetryInitializerPlugin = /** @class */ (function (_super) {\r\n __extends(TelemetryInitializerPlugin, _super);\r\n function TelemetryInitializerPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = \"TelemetryInitializerPlugin\";\r\n _this.priority = 199;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _id;\r\n var _initializers;\r\n _initDefaults();\r\n dynamicProto(TelemetryInitializerPlugin, _this, function (_self, _base) {\r\n _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n return _addInitializer(_initializers, _id++, telemetryInitializer);\r\n };\r\n _self[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */] = function (item, itemCtx) {\r\n if (_runInitializers(_initializers, item, itemCtx ? itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]() : _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]())) {\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item, itemCtx);\r\n }\r\n };\r\n _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] = function () {\r\n _initDefaults();\r\n };\r\n });\r\n function _initDefaults() {\r\n _id = 0;\r\n _initializers = [];\r\n }\r\n return _this;\r\n }\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.processTelemetry.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n TelemetryInitializerPlugin.__ieDyn=1;\n\n return TelemetryInitializerPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { TelemetryInitializerPlugin };\r\n","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// ###################################################################################################################################################\r\n// Note: DON'T Export these const from the package as we are still targeting IE/ES5 this will export a mutable variables that someone could change ###\r\n// ###################################################################################################################################################\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nexport var STR_DURATION = \"duration\";\r\nexport var STR_PROPERTIES = \"properties\";\r\n","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_REQUEST_URL = \"requestUrl\"; // Count: 11\r\nexport var _DYN_INST = \"inst\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 8\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 9\r\nexport var _DYN_SPAN_ID = \"spanID\"; // Count: 8\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 13\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 7\r\nexport var _DYN_ABORTED = \"aborted\"; // Count: 7\r\nexport var _DYN_TRACE_ID0 = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID1 = \"spanId\"; // Count: 5\r\nexport var _DYN__ADD_HOOK = \"_addHook\"; // Count: 4\r\nexport var _DYN_CORE = \"core\"; // Count: 8\r\nexport var _DYN_INCLUDE_CORRELATION_2 = \"includeCorrelationHeaders\"; // Count: 4\r\nexport var _DYN_GET_ABSOLUTE_URL = \"getAbsoluteUrl\"; // Count: 3\r\nexport var _DYN_HEADERS = \"headers\"; // Count: 6\r\nexport var _DYN_REQUEST_HEADERS = \"requestHeaders\"; // Count: 13\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 3\r\nexport var _DYN_TRACK_DEPENDENCY_DAT3 = \"trackDependencyDataInternal\"; // Count: 2\r\nexport var _DYN_START_TIME = \"startTime\"; // Count: 6\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_ENABLE_REQUEST_HEADE4 = \"enableRequestHeaderTracking\"; // Count: 3\r\nexport var _DYN_ENABLE_AJAX_ERROR_ST5 = \"enableAjaxErrorStatusText\"; // Count: 2\r\nexport var _DYN_ENABLE_AJAX_PERF_TRA6 = \"enableAjaxPerfTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V7 = \"maxAjaxCallsPerView\"; // Count: 2\r\nexport var _DYN_EXCLUDE_REQUEST_FROM8 = \"excludeRequestFromAutoTrackingPatterns\"; // Count: 2\r\nexport var _DYN_ADD_REQUEST_CONTEXT = \"addRequestContext\"; // Count: 2\r\nexport var _DYN_DISABLE_AJAX_TRACKIN9 = \"disableAjaxTracking\"; // Count: 3\r\nexport var _DYN_AJAX_PERF_LOOKUP_DEL10 = \"ajaxPerfLookupDelay\"; // Count: 2\r\nexport var _DYN_DISABLE_FETCH_TRACKI11 = \"disableFetchTracking\"; // Count: 2\r\nexport var _DYN_ENABLE_RESPONSE_HEAD12 = \"enableResponseHeaderTracking\"; // Count: 2\r\nexport var _DYN_STATUS = \"status\"; // Count: 11\r\nexport var _DYN_STATUS_TEXT = \"statusText\"; // Count: 9\r\nexport var _DYN_HEADER_MAP = \"headerMap\"; // Count: 8\r\nexport var _DYN_OPEN_DONE = \"openDone\"; // Count: 3\r\nexport var _DYN_SEND_DONE = \"sendDone\"; // Count: 3\r\nexport var _DYN_REQUEST_SENT_TIME = \"requestSentTime\"; // Count: 9\r\nexport var _DYN_ABORT_DONE = \"abortDone\"; // Count: 3\r\nexport var _DYN_GET_TRACE_ID = \"getTraceId\"; // Count: 3\r\nexport var _DYN_GET_TRACE_FLAGS = \"getTraceFlags\"; // Count: 3\r\nexport var _DYN_METHOD = \"method\"; // Count: 8\r\nexport var _DYN_ERROR_STATUS_TEXT = \"errorStatusText\"; // Count: 3\r\nexport var _DYN_STATE_CHANGE_ATTACHE13 = \"stateChangeAttached\"; // Count: 2\r\nexport var _DYN_RESPONSE_TEXT = \"responseText\"; // Count: 6\r\nexport var _DYN_RESPONSE_FINISHED_TI14 = \"responseFinishedTime\"; // Count: 7\r\nexport var _DYN__CREATE_TRACK_ITEM = \"CreateTrackItem\"; // Count: 3\r\nexport var _DYN_RESPONSE = \"response\"; // Count: 4\r\nexport var _DYN_GET_ALL_RESPONSE_HEA15 = \"getAllResponseHeaders\"; // Count: 2\r\nexport var _DYN_GET_PART_APROPS = \"getPartAProps\"; // Count: 3\r\nexport var _DYN_PERF_MARK = \"perfMark\"; // Count: 4\r\nexport var _DYN_NAME = \"name\"; // Count: 6\r\nexport var _DYN_PERF_TIMING = \"perfTiming\"; // Count: 3\r\nexport var _DYN_EXCEPTION = \"exception\"; // Count: 5\r\nexport var _DYN_AJAX_DIAGNOSTICS_MES16 = \"ajaxDiagnosticsMessage\"; // Count: 3\r\nexport var _DYN_CORRELATION_CONTEXT = \"correlationContext\"; // Count: 3\r\nexport var _DYN_AJAX_TOTAL_DURATION = \"ajaxTotalDuration\"; // Count: 3\r\nexport var _DYN_EVENT_TRACE_CTX = \"eventTraceCtx\"; // Count: 3\r\n","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { Extensions, dataSanitizeUrl, dateTimeUtilsDuration, msToTimeSpan, urlGetAbsoluteUrl, urlGetCompleteUrl } from \"@microsoft/applicationinsights-common\";\r\nimport { arrForEach, isNullOrUndefined, isNumber, isString, normalizeJsName, objForEachKey, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION, STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORTED, _DYN_ABORT_DONE, _DYN_AJAX_TOTAL_DURATION, _DYN_CORRELATION_CONTEXT, _DYN_ERROR_STATUS_TEXT, _DYN_EVENT_TRACE_CTX, _DYN_GET_ABSOLUTE_URL, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADER_MAP, _DYN_LENGTH, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI14, _DYN_SEND_DONE, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE13, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n var result = 0;\r\n var from = resourceEntry[start];\r\n var to = resourceEntry[end];\r\n if (from && to) {\r\n result = dateTimeUtilsDuration(from, to);\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n var result = 0;\r\n var value = _calcPerfDuration(resourceEntry, start, end);\r\n if (value) {\r\n result = _setPerfValue(props, name, msToTimeSpan(value));\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n var strPerf = \"ajaxPerf\";\r\n var result = 0;\r\n if (props && name && value) {\r\n var perfData = props[strPerf] = (props[strPerf] || {});\r\n perfData[name] = value;\r\n result = 1;\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n /*\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n * | -startTime\r\n * | -redirectStart\r\n * | | -redirectEnd\r\n * | | | -fetchStart\r\n * | | | | -domainLookupStart\r\n * | | | | |- domainLookupEnd\r\n * | | | | | | -connectStart\r\n * | | | | | | | -secureConnectionStart\r\n * | | | | | | | | -connectEnd\r\n * | | | | | | | | | -requestStart\r\n * | | | | | | | | | | | -responseStart\r\n * | | | | | | | | | | | | | -responseEnd\r\n * +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n * |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n * |-------------------networkConnect----------------|\r\n * | |---------sentRequest--------|\r\n * |------------------------------------perfTotal-----------------------------------|\r\n */\r\n var resourceEntry = ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */];\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n var propsSet = 0;\r\n var strName = \"name\";\r\n var strStart = \"Start\";\r\n var strEnd = \"End\";\r\n var strDomainLookup = \"domainLookup\";\r\n var strConnect = \"connect\";\r\n var strRedirect = \"redirect\";\r\n var strRequest = \"request\";\r\n var strResponse = \"response\";\r\n var strStartTime = \"startTime\";\r\n var strDomainLookupStart = strDomainLookup + strStart;\r\n var strDomainLookupEnd = strDomainLookup + strEnd;\r\n var strConnectStart = strConnect + strStart;\r\n var strConnectEnd = strConnect + strEnd;\r\n var strRequestStart = strRequest + strStart;\r\n var strRequestEnd = strRequest + strEnd;\r\n var strResponseStart = strResponse + strStart;\r\n var strResponseEnd = strResponse + strEnd;\r\n var strRedirectStart = strRedirect + strStart;\r\n var strRedirectEnd = strRedirect = strEnd;\r\n var strTransferSize = \"transferSize\";\r\n var strEncodedBodySize = \"encodedBodySize\";\r\n var strDecodedBodySize = \"decodedBodySize\";\r\n var strServerTiming = \"serverTiming\";\r\n if (resourceEntry) {\r\n // redirect\r\n propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n // domainLookup\r\n propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n // connect\r\n propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n // request\r\n propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n // response\r\n propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n // Network connection time\r\n propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n // Sent Request\r\n propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n // PerfTotal / Duration\r\n var duration = resourceEntry[STR_DURATION /* @min:%2eduration */];\r\n if (!duration) {\r\n duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n }\r\n propsSet |= _setPerfValue(props, STR_DURATION, duration);\r\n propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n var serverTiming = resourceEntry[strServerTiming];\r\n if (serverTiming) {\r\n var server_1 = {};\r\n arrForEach(serverTiming, function (value, idx) {\r\n var name = normalizeJsName(value[strName] || \"\" + idx);\r\n var newValue = server_1[name] || {};\r\n objForEachKey(value, function (key, val) {\r\n if (key !== strName && isString(val) || isNumber(val)) {\r\n if (newValue[key]) {\r\n val = newValue[key] + \";\" + val;\r\n }\r\n if (val || !isString(val)) {\r\n // Only set the value if it has a value and it's not an empty string\r\n newValue[key] = val;\r\n }\r\n }\r\n });\r\n server_1[name] = newValue;\r\n });\r\n propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n }\r\n propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n }\r\n else {\r\n if (ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */]) {\r\n propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n }\r\n }\r\n if (propsSet) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = props;\r\n }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n function XHRMonitoringState() {\r\n var self = this;\r\n self[_DYN_OPEN_DONE /* @min:%2eopenDone */] = false;\r\n self.setRequestHeaderDone = false;\r\n self[_DYN_SEND_DONE /* @min:%2esendDone */] = false;\r\n self[_DYN_ABORT_DONE /* @min:%2eabortDone */] = false;\r\n // True, if onreadyStateChangeCallback function attached to xhr, otherwise false\r\n self[_DYN_STATE_CHANGE_ATTACHE13 /* @min:%2estateChangeAttached */] = false;\r\n }\r\n return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n function ajaxRecord(traceId, spanId, logger, traceCtx) {\r\n var _a;\r\n var self = this;\r\n var _logger = logger;\r\n var strResponseText = \"responseText\";\r\n // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n // this.XXXX = null\r\n self[_DYN_PERF_MARK /* @min:%2eperfMark */] = null;\r\n self.completed = false;\r\n self.requestHeadersSize = null;\r\n self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = null;\r\n self.responseReceivingDuration = null;\r\n self.callbackDuration = null;\r\n self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] = null;\r\n self[_DYN_ABORTED /* @min:%2eaborted */] = 0;\r\n self.pageUrl = null;\r\n self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = null;\r\n self.requestSize = 0;\r\n self[_DYN_METHOD /* @min:%2emethod */] = null;\r\n self[_DYN_STATUS /* @min:%2estatus */] = null;\r\n self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = null;\r\n self.responseStartedTime = null;\r\n self[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */] = null;\r\n self.callbackFinishedTime = null;\r\n self.endTime = null;\r\n self.xhrMonitoringState = new XHRMonitoringState();\r\n self.clientFailure = 0;\r\n self[_DYN_TRACE_ID /* @min:%2etraceID */] = traceId;\r\n self[_DYN_SPAN_ID /* @min:%2espanID */] = spanId;\r\n self[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx === null || traceCtx === void 0 ? void 0 : traceCtx.getTraceFlags();\r\n if (traceCtx) {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = (_a = {},\r\n _a[_DYN_TRACE_ID0 /* @min:traceId */] = traceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */](),\r\n _a[_DYN_SPAN_ID1 /* @min:spanId */] = traceCtx.getSpanId(),\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = traceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */](),\r\n _a);\r\n }\r\n else {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = null;\r\n }\r\n dynamicProto(ajaxRecord, self, function (self) {\r\n self.getAbsoluteUrl = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? urlGetAbsoluteUrl(self[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) : null;\r\n };\r\n self.getPathName = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? dataSanitizeUrl(_logger, urlGetCompleteUrl(self[_DYN_METHOD /* @min:%2emethod */], self[_DYN_REQUEST_URL /* @min:%2erequestUrl */])) : null;\r\n };\r\n self[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */] = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n var _a;\r\n // round to 3 decimal points\r\n self.ajaxTotalDuration = Math.round(dateTimeUtilsDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n if (self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] < 0) {\r\n return null;\r\n }\r\n var dependency = (_a = {\r\n id: \"|\" + self[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + self[_DYN_SPAN_ID /* @min:%2espanID */],\r\n target: self[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */]()\r\n },\r\n _a[_DYN_NAME /* @min:name */] = self.getPathName(),\r\n _a.type = ajaxType,\r\n _a[_DYN_START_TIME /* @min:startTime */] = null,\r\n _a.duration = self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */],\r\n _a.success = (+(self[_DYN_STATUS /* @min:%2estatus */])) >= 200 && (+(self[_DYN_STATUS /* @min:%2estatus */])) < 400,\r\n _a.responseCode = (+(self[_DYN_STATUS /* @min:%2estatus */])),\r\n _a[STR_PROPERTIES] = { HttpMethod: self[_DYN_METHOD /* @min:%2emethod */] },\r\n _a);\r\n var props = dependency[STR_PROPERTIES];\r\n if (self[_DYN_ABORTED /* @min:%2eaborted */]) {\r\n props[_DYN_ABORTED /* @min:%2eaborted */] = true;\r\n }\r\n if (self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]) {\r\n // Set the correct dependency start time\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */].setTime(self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]);\r\n }\r\n // Add Ajax perf details if available\r\n _populatePerfData(self, dependency);\r\n if (enableRequestHeaderTracking) {\r\n if (objKeys(self.requestHeaders)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n props[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */];\r\n }\r\n }\r\n if (getResponse) {\r\n var response = getResponse();\r\n if (response) {\r\n // enrich dependency target with correlation context from the server\r\n var correlationContext = response[_DYN_CORRELATION_CONTEXT /* @min:%2ecorrelationContext */];\r\n if (correlationContext) {\r\n dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n }\r\n if (response[_DYN_HEADER_MAP /* @min:%2eheaderMap */]) {\r\n if (objKeys(response.headerMap)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n props.responseHeaders = response[_DYN_HEADER_MAP /* @min:%2eheaderMap */];\r\n }\r\n }\r\n if (self[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */]) {\r\n if (self[_DYN_STATUS /* @min:%2estatus */] >= 400) {\r\n var responseType = response.type;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n props.responseText = response.responseText ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + response[strResponseText] : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n if (responseType === \"json\") {\r\n props.responseText = response.response ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + JSON.stringify(response[_DYN_RESPONSE /* @min:%2eresponse */]) : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n }\r\n else if (self[_DYN_STATUS /* @min:%2estatus */] === 0) {\r\n props.responseText = response[_DYN_STATUS_TEXT /* @min:%2estatusText */] || \"\";\r\n }\r\n }\r\n }\r\n }\r\n return dependency;\r\n };\r\n self[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */] = function () {\r\n var _a;\r\n var partA = null;\r\n var traceCtx = self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */];\r\n if (traceCtx && (traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */] || traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */])) {\r\n partA = {};\r\n var traceExt = partA[Extensions.TraceExt] = (_a = {},\r\n _a[_DYN_TRACE_ID /* @min:traceID */] = traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */],\r\n _a.parentID = traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */],\r\n _a);\r\n if (!isNullOrUndefined(traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */])) {\r\n traceExt[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n }\r\n }\r\n return partA;\r\n };\r\n });\r\n }\r\n// Removed Stub for ajaxRecord.prototype.getAbsoluteUrl.\r\n// Removed Stub for ajaxRecord.prototype.getPathName.\r\n// Removed Stub for ajaxRecord.prototype.CreateTrackItem.\r\n// Removed Stub for ajaxRecord.prototype.getPartAProps.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n ajaxRecord.__ieDyn=1;\n\n return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar _a;\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { DisabledPropertyName, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, correlationIdCanIncludeCorrelationHeader, correlationIdGetCorrelationContext, createDistributedTraceContextFromTrace, createTelemetryItem, createTraceParent, dateTimeUtilsNow, formatTraceParent, isInternalApplicationInsightsEndpoint } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentFunc, InstrumentProto, _throwInternal, arrForEach, createProcessTelemetryContext, createUniqueNamespace, dumpObj, eventOn, generateW3CId, getExceptionName, getGlobal, getIEVersion, getLocation, getPerformance, isFunction, isNullOrUndefined, isString, isXhrSupported, mergeEvtNamespace, onConfigChange, strPrototype, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { isWebWorker, objFreeze, scheduleTimeout, strIndexOf, strSplit, strSubstr } from \"@nevware21/ts-utils\";\r\nimport { STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORTED, _DYN_ABORT_DONE, _DYN_ADD_REQUEST_CONTEXT, _DYN_AJAX_DIAGNOSTICS_MES16, _DYN_AJAX_PERF_LOOKUP_DEL10, _DYN_CONTEXT, _DYN_CORE, _DYN_CORRELATION_CONTEXT, _DYN_DISABLE_AJAX_TRACKIN9, _DYN_DISABLE_FETCH_TRACKI11, _DYN_ENABLE_AJAX_ERROR_ST5, _DYN_ENABLE_AJAX_PERF_TRA6, _DYN_ENABLE_REQUEST_HEADE4, _DYN_ENABLE_RESPONSE_HEAD12, _DYN_ERROR_STATUS_TEXT, _DYN_EXCEPTION, _DYN_EXCLUDE_REQUEST_FROM8, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA15, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADERS, _DYN_HEADER_MAP, _DYN_INCLUDE_CORRELATION_2, _DYN_INST, _DYN_LENGTH, _DYN_MAX_AJAX_CALLS_PER_V7, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI14, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE13, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN_TRACK_DEPENDENCY_DAT3, _DYN__ADD_HOOK, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\nimport { ajaxRecord } from \"./ajaxRecord\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar AJAX_DATA_CONTAINER = \"_ajaxData\";\r\nvar STR_FETCH = \"fetch\";\r\nvar ERROR_HEADER = \"Failed to monitor XMLHttpRequest\";\r\nvar ERROR_PREFIX = \", monitoring data for this ajax call \";\r\nvar ERROR_POSTFIX = ERROR_PREFIX + \"may be incorrect.\";\r\nvar ERROR_NOT_SENT = ERROR_PREFIX + \"won't be sent.\";\r\nvar CORRELATION_HEADER_ERROR = \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\";\r\nvar CUSTOM_REQUEST_CONTEXT_ERROR = \"Failed to add custom defined request context as configured call back may missing a null check.\";\r\nvar FAILED_TO_CALCULATE_DURATION_ERROR = \"Failed to calculate the duration of the \";\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n var _global = getGlobal();\r\n if (!_global ||\r\n isNullOrUndefined(_global.Request) ||\r\n isNullOrUndefined(_global.Request[strPrototype]) ||\r\n isNullOrUndefined(_global[STR_FETCH])) {\r\n return null;\r\n }\r\n return _global[STR_FETCH];\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance, ajaxDataId) {\r\n var _a, _b;\r\n var result = false;\r\n if (isXhrSupported()) {\r\n var proto = XMLHttpRequest[strPrototype];\r\n result = !isNullOrUndefined(proto) &&\r\n !isNullOrUndefined(proto.open) && // eslint-disable-line security/detect-non-literal-fs-filename -- false positive\r\n !isNullOrUndefined(proto.send) &&\r\n !isNullOrUndefined(proto.abort);\r\n }\r\n var ieVer = getIEVersion();\r\n if (ieVer && ieVer < 9) {\r\n result = false;\r\n }\r\n if (result) {\r\n // Disable if the XmlHttpRequest can't be extended or hooked\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n var xhrData = {\r\n xh: [],\r\n i: (_a = {},\r\n _a[ajaxDataId] = {},\r\n _a)\r\n };\r\n xhr[AJAX_DATA_CONTAINER] = xhrData;\r\n // Check that we can update the prototype\r\n var theOpen = XMLHttpRequest[strPrototype].open;\r\n XMLHttpRequest[strPrototype].open = theOpen;\r\n }\r\n catch (e) {\r\n // We can't decorate the xhr object so disable monitoring\r\n result = false;\r\n _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", (_b = {},\r\n _b[_DYN_EXCEPTION /* @min:exception */] = dumpObj(e),\r\n _b));\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Internal helper to fetch the SDK instance tracking data for this XHR request\r\n * @param xhr\r\n * @param ajaxDataId\r\n * @returns\r\n */\r\nvar _getAjaxData = function (xhr, ajaxDataId) {\r\n if (xhr && ajaxDataId && xhr[AJAX_DATA_CONTAINER]) {\r\n return (xhr[AJAX_DATA_CONTAINER].i || {})[ajaxDataId];\r\n }\r\n return null;\r\n};\r\n/**\r\n * @ignore\r\n * Internal helper to track the singleton shared tracking headers, so we can attempt to not create headers\r\n * that might cause an issue if multiple values are populated.\r\n * @param xhr - The instrumented XHR instance\r\n */\r\nvar _addSharedXhrHeaders = function (xhr, name, value) {\r\n if (xhr) {\r\n var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;\r\n if (headers) {\r\n headers.push({\r\n n: name,\r\n v: value\r\n });\r\n }\r\n }\r\n};\r\nvar _isHeaderSet = function (xhr, name) {\r\n var isPresent = false;\r\n if (xhr) {\r\n var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;\r\n if (headers) {\r\n arrForEach(headers, function (header) {\r\n if (header.n === name) {\r\n isPresent = true;\r\n return -1;\r\n }\r\n });\r\n }\r\n }\r\n return isPresent;\r\n};\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr, ajaxDataId) {\r\n var result = \"\";\r\n try {\r\n var ajaxData = _getAjaxData(xhr, ajaxDataId);\r\n if (ajaxData && ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) {\r\n result += \"(url: '\" + ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] + \"')\";\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 1 /* eLoggingSeverity.CRITICAL */, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 2 /* eLoggingSeverity.WARNING */, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n // tslint:disable-next-line\r\n return function (callDetails) {\r\n var _a;\r\n _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, (_a = {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(callDetails[_DYN_INST /* @min:%2einst */], ajaxMonitorInstance._ajaxDataId)\r\n },\r\n _a[_DYN_EXCEPTION /* @min:exception */] = dumpObj(callDetails.err),\r\n _a));\r\n };\r\n}\r\nfunction _indexOf(value, match) {\r\n if (value && match) {\r\n return strIndexOf(value, match);\r\n }\r\n return -1;\r\n}\r\nfunction _addHandler(container, id, theFunc) {\r\n var theHandler = {\r\n id: id,\r\n fn: theFunc\r\n };\r\n container.push(theHandler);\r\n return {\r\n remove: function () {\r\n arrForEach(container, function (initializer, idx) {\r\n if (initializer.id === theHandler.id) {\r\n container.splice(idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n}\r\nfunction _processDependencyContainer(core, container, details, message) {\r\n var result = true;\r\n arrForEach(container, function (theFunc, idx) {\r\n try {\r\n if (theFunc.fn.call(null, details) === false) {\r\n result = false;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(core && core.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Dependency \" + message + \" [#\" + idx + \"] failed: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n return result;\r\n}\r\nfunction _processDependencyListeners(listeners, core, ajaxData, xhr, input, init) {\r\n var _a;\r\n var initializersCount = listeners[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = (_a = {},\r\n _a[_DYN_CORE /* @min:core */] = core,\r\n _a.xhr = xhr,\r\n _a.input = input,\r\n _a.init = init,\r\n _a.traceId = ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */],\r\n _a.spanId = ajaxData[_DYN_SPAN_ID /* @min:%2espanID */],\r\n _a.traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */],\r\n _a.context = ajaxData[_DYN_CONTEXT /* @min:%2econtext */] || {},\r\n _a.aborted = !!ajaxData[_DYN_ABORTED /* @min:%2eaborted */],\r\n _a);\r\n _processDependencyContainer(core, listeners, details, \"listener\");\r\n ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] = details[_DYN_TRACE_ID0 /* @min:%2etraceId */];\r\n ajaxData[_DYN_SPAN_ID /* @min:%2espanID */] = details[_DYN_SPAN_ID1 /* @min:%2espanId */];\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = details[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n ajaxData[_DYN_CONTEXT /* @min:%2econtext */] = details[_DYN_CONTEXT /* @min:%2econtext */];\r\n }\r\n}\r\nvar BLOB_CORE = \"*.blob.core.\";\r\nexport var DfltAjaxCorrelationHeaderExDomains = objFreeze([\r\n BLOB_CORE + \"windows.net\",\r\n BLOB_CORE + \"chinacloudapi.cn\",\r\n BLOB_CORE + \"cloudapi.de\",\r\n BLOB_CORE + \"usgovcloudapi.net\"\r\n]);\r\nvar _internalExcludeEndpoints = [\r\n /https:\\/\\/[^\\/]*(\\.pipe\\.aria|aria\\.pipe|events\\.data|collector\\.azure)\\.[^\\/]+\\/(OneCollector\\/1|Collector\\/3)\\.0/i\r\n];\r\nvar _defaultConfig = objFreeze((_a = {},\r\n _a[_DYN_MAX_AJAX_CALLS_PER_V7 /* @min:maxAjaxCallsPerView */] = 500,\r\n _a[_DYN_DISABLE_AJAX_TRACKIN9 /* @min:disableAjaxTracking */] = false,\r\n _a[_DYN_DISABLE_FETCH_TRACKI11 /* @min:disableFetchTracking */] = false,\r\n _a[_DYN_EXCLUDE_REQUEST_FROM8 /* @min:excludeRequestFromAutoTrackingPatterns */] = undefined,\r\n _a.disableCorrelationHeaders = false,\r\n _a.distributedTracingMode = 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n _a.correlationHeaderExcludedDomains = DfltAjaxCorrelationHeaderExDomains,\r\n _a.correlationHeaderDomains = undefined,\r\n _a.correlationHeaderExcludePatterns = undefined,\r\n _a.appId = undefined,\r\n _a.enableCorsCorrelation = false,\r\n _a[_DYN_ENABLE_REQUEST_HEADE4 /* @min:enableRequestHeaderTracking */] = false,\r\n _a[_DYN_ENABLE_RESPONSE_HEAD12 /* @min:enableResponseHeaderTracking */] = false,\r\n _a[_DYN_ENABLE_AJAX_ERROR_ST5 /* @min:enableAjaxErrorStatusText */] = false,\r\n _a[_DYN_ENABLE_AJAX_PERF_TRA6 /* @min:enableAjaxPerfTracking */] = false,\r\n _a.maxAjaxPerfLookupAttempts = 3,\r\n _a[_DYN_AJAX_PERF_LOOKUP_DEL10 /* @min:ajaxPerfLookupDelay */] = 25,\r\n _a.ignoreHeaders = [\r\n \"Authorization\",\r\n \"X-API-Key\",\r\n \"WWW-Authenticate\"\r\n ],\r\n _a[_DYN_ADD_REQUEST_CONTEXT /* @min:addRequestContext */] = undefined,\r\n _a.addIntEndpoints = true,\r\n _a));\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n __extends(AjaxMonitor, _super);\r\n function AjaxMonitor() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AjaxMonitor.identifier;\r\n _this.priority = 120;\r\n var _fetchInitialized; // fetch monitoring initialized\r\n var _xhrInitialized; // XHR monitoring initialized\r\n var _currentWindowHost;\r\n var _extensionConfig;\r\n var _enableRequestHeaderTracking;\r\n var _enableAjaxErrorStatusText;\r\n var _trackAjaxAttempts;\r\n var _context;\r\n var _isUsingW3CHeaders;\r\n var _isUsingAIHeaders;\r\n var _markPrefix;\r\n var _enableAjaxPerfTracking;\r\n var _maxAjaxCallsPerView;\r\n var _enableResponseHeaderTracking;\r\n var _disabledUrls;\r\n var _disableAjaxTracking;\r\n var _disableFetchTracking;\r\n var _excludeRequestFromAutoTrackingPatterns;\r\n var _addRequestContext;\r\n var _evtNamespace;\r\n var _ajaxDataId;\r\n var _dependencyHandlerId;\r\n var _dependencyListeners;\r\n var _dependencyInitializers;\r\n var _ignoreHeaders;\r\n var _maxAjaxPerfLookupAttempts;\r\n var _ajaxPerfLookupDelay;\r\n var _distributedTracingMode;\r\n var _appId;\r\n var _polyfillInitialized;\r\n dynamicProto(AjaxMonitor, _this, function (_self, _base) {\r\n var _addHook = _base[_DYN__ADD_HOOK /* @min:%2e_addHook */];\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"ajax\"), core && core.evtNamespace && core.evtNamespace());\r\n _populateDefaults(config);\r\n _instrumentXhr();\r\n _instrumentFetch();\r\n _populateContext();\r\n }\r\n };\r\n _self._doTeardown = function () {\r\n _initDefaults();\r\n };\r\n _self.trackDependencyData = function (dependency, properties) {\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], null, dependency, properties);\r\n };\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */] = function (ajaxData, input, init, xhr) {\r\n // Test Hook to allow the overriding of the location host\r\n var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n _processDependencyListeners(_dependencyListeners, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, xhr, input, init);\r\n if (input || input === \"\") { // Fetch\r\n if (correlationIdCanIncludeCorrelationHeader(_extensionConfig, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (!init) {\r\n init = {};\r\n }\r\n // init headers override original request headers\r\n // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n // not using original request headers will result in them being lost\r\n var headers = new Headers(init[_DYN_HEADERS /* @min:%2eheaders */] || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n headers.set(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n var appId = _appId || (_context && _context.appId());\r\n if (appId) {\r\n headers.set(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n headers.set(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n init[_DYN_HEADERS /* @min:%2eheaders */] = headers;\r\n }\r\n return init;\r\n }\r\n else if (xhr) { // XHR\r\n if (correlationIdCanIncludeCorrelationHeader(_extensionConfig, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (_isUsingAIHeaders) {\r\n if (!_isHeaderSet(xhr, RequestHeaders[3 /* eRequestHeaders.requestIdHeader */])) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n else {\r\n _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[3 /* eRequestHeaders.requestIdHeader */] + \"] as it has already been set by another instance\");\r\n }\r\n }\r\n var appId = _appId || (_context && _context.appId());\r\n if (appId) {\r\n if (!_isHeaderSet(xhr, RequestHeaders[0 /* eRequestHeaders.requestContextHeader */])) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n else {\r\n _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[0 /* eRequestHeaders.requestContextHeader */] + \"] as it has already been set by another instance\");\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n if (!_isHeaderSet(xhr, RequestHeaders[4 /* eRequestHeaders.traceParentHeader */])) {\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n else {\r\n _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[4 /* eRequestHeaders.traceParentHeader */] + \"] as it has already been set by another instance\");\r\n }\r\n }\r\n }\r\n return xhr;\r\n }\r\n return undefined;\r\n };\r\n _self[_DYN_TRACK_DEPENDENCY_DAT3 /* @min:%2etrackDependencyDataInternal */] = function (dependency, properties, systemProperties) {\r\n if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n // Hack since expected format in w3c mode is |abc.def.\r\n // Non-w3c format is |abc.def\r\n // @todo Remove if better solution is available, e.g. handle in portal\r\n if ((_distributedTracingMode === 2 /* eDistributedTracingModes.W3C */\r\n || _distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */)\r\n && typeof dependency.id === \"string\" && dependency.id[dependency.id[_DYN_LENGTH /* @min:%2elength */] - 1] !== \".\") {\r\n dependency.id += \".\";\r\n }\r\n if (isNullOrUndefined(dependency[_DYN_START_TIME /* @min:%2estartTime */])) {\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n }\r\n var item = createTelemetryItem(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */].track(item);\r\n }\r\n else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n _throwInternalCritical(_self, 55 /* _eInternalMessageId.MaxAjaxPerPVExceeded */, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n }\r\n ++_trackAjaxAttempts;\r\n };\r\n _self.addDependencyListener = function (dependencyListener) {\r\n return _addHandler(_dependencyListeners, _dependencyHandlerId++, dependencyListener);\r\n };\r\n _self.addDependencyInitializer = function (dependencyInitializer) {\r\n return _addHandler(_dependencyInitializers, _dependencyHandlerId++, dependencyInitializer);\r\n };\r\n function _initDefaults() {\r\n var location = getLocation();\r\n _fetchInitialized = false; // fetch monitoring initialized\r\n _xhrInitialized = false; // XHR monitoring initialized\r\n _polyfillInitialized = false; // polyfill monitoring initialized\r\n _currentWindowHost = location && location.host && location.host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _extensionConfig = null;\r\n _enableRequestHeaderTracking = false;\r\n _enableAjaxErrorStatusText = false;\r\n _trackAjaxAttempts = 0;\r\n _context = null;\r\n _isUsingW3CHeaders = false;\r\n _isUsingAIHeaders = false;\r\n _markPrefix = null;\r\n _enableAjaxPerfTracking = false;\r\n _maxAjaxCallsPerView = 0;\r\n _enableResponseHeaderTracking = false;\r\n _disabledUrls = {};\r\n _disableAjaxTracking = false;\r\n _disableFetchTracking = false;\r\n _excludeRequestFromAutoTrackingPatterns = null;\r\n _addRequestContext = null;\r\n _evtNamespace = null;\r\n _dependencyHandlerId = 0;\r\n _dependencyListeners = [];\r\n _dependencyInitializers = [];\r\n _ajaxDataId = createUniqueNamespace(\"ajaxData\");\r\n _self._ajaxDataId = _ajaxDataId;\r\n _ignoreHeaders = null;\r\n _maxAjaxPerfLookupAttempts = 1;\r\n _ajaxPerfLookupDelay = 1;\r\n _distributedTracingMode = 1 /* eDistributedTracingModes.AI_AND_W3C */;\r\n _appId = null;\r\n }\r\n function _populateDefaults(config) {\r\n _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(config, function (details) {\r\n var config = details.cfg;\r\n var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n _extensionConfig = ctx.getExtCfg(AjaxMonitor.identifier, _defaultConfig);\r\n _distributedTracingMode = _extensionConfig.distributedTracingMode;\r\n _enableRequestHeaderTracking = _extensionConfig[_DYN_ENABLE_REQUEST_HEADE4 /* @min:%2eenableRequestHeaderTracking */];\r\n _enableAjaxErrorStatusText = _extensionConfig[_DYN_ENABLE_AJAX_ERROR_ST5 /* @min:%2eenableAjaxErrorStatusText */];\r\n _enableAjaxPerfTracking = _extensionConfig[_DYN_ENABLE_AJAX_PERF_TRA6 /* @min:%2eenableAjaxPerfTracking */];\r\n _maxAjaxCallsPerView = _extensionConfig[_DYN_MAX_AJAX_CALLS_PER_V7 /* @min:%2emaxAjaxCallsPerView */];\r\n _excludeRequestFromAutoTrackingPatterns = [].concat(_extensionConfig[_DYN_EXCLUDE_REQUEST_FROM8 /* @min:%2eexcludeRequestFromAutoTrackingPatterns */] || [], _extensionConfig.addIntEndpoints !== false ? _internalExcludeEndpoints : []);\r\n _addRequestContext = _extensionConfig[_DYN_ADD_REQUEST_CONTEXT /* @min:%2eaddRequestContext */];\r\n _isUsingAIHeaders = _distributedTracingMode === 0 /* eDistributedTracingModes.AI */ || _distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */;\r\n _isUsingW3CHeaders = _distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */ || _distributedTracingMode === 2 /* eDistributedTracingModes.W3C */;\r\n if (_enableAjaxPerfTracking) {\r\n _markPrefix = _ajaxDataId;\r\n }\r\n _disableAjaxTracking = !!_extensionConfig[_DYN_DISABLE_AJAX_TRACKIN9 /* @min:%2edisableAjaxTracking */];\r\n _maxAjaxPerfLookupAttempts = _extensionConfig.maxAjaxPerfLookupAttempts;\r\n _ajaxPerfLookupDelay = _extensionConfig[_DYN_AJAX_PERF_LOOKUP_DEL10 /* @min:%2eajaxPerfLookupDelay */];\r\n _ignoreHeaders = _extensionConfig.ignoreHeaders;\r\n _appId = _extensionConfig.appId;\r\n }));\r\n }\r\n function _populateContext() {\r\n var propExt = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (propExt) {\r\n _context = propExt.plugin[_DYN_CONTEXT /* @min:%2econtext */]; // we could move IPropertiesPlugin to common as well\r\n }\r\n }\r\n // discard the header if it's defined as ignoreHeaders in ICorrelationConfig\r\n function _canIncludeHeaders(header) {\r\n var rlt = true;\r\n if (header || _ignoreHeaders) {\r\n arrForEach(_ignoreHeaders, (function (key) {\r\n if (key[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === header[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) {\r\n rlt = false;\r\n return -1;\r\n }\r\n }));\r\n }\r\n return rlt;\r\n }\r\n // Fetch Stuff\r\n function _instrumentFetch() {\r\n var fetch = _supportsFetch();\r\n if (!fetch) {\r\n return;\r\n }\r\n var global = getGlobal();\r\n var isPolyfill = fetch.polyfill;\r\n _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(_extensionConfig, function () {\r\n _disableFetchTracking = !!_extensionConfig[_DYN_DISABLE_FETCH_TRACKI11 /* @min:%2edisableFetchTracking */];\r\n _enableResponseHeaderTracking = _extensionConfig[_DYN_ENABLE_RESPONSE_HEAD12 /* @min:%2eenableResponseHeaderTracking */];\r\n if (!_disableFetchTracking && !_fetchInitialized) {\r\n _addHook(InstrumentFunc(global, STR_FETCH, {\r\n ns: _evtNamespace,\r\n // Add request hook\r\n req: function (callDetails, input, init) {\r\n var fetchData;\r\n if (!_disableFetchTracking && _fetchInitialized &&\r\n !_isDisabledRequest(null, input, init) &&\r\n // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n !(isPolyfill && _xhrInitialized)) {\r\n var ctx = callDetails.ctx();\r\n fetchData = _createFetchRecord(input, init);\r\n var newInit = _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](fetchData, input, init);\r\n if (newInit !== init) {\r\n callDetails.set(1, newInit);\r\n }\r\n ctx.data = fetchData;\r\n }\r\n },\r\n rsp: function (callDetails, input) {\r\n if (!_disableFetchTracking) {\r\n var fetchData_1 = callDetails.ctx().data;\r\n if (fetchData_1) {\r\n // Replace the result with the new promise from this code\r\n callDetails.rslt = callDetails.rslt.then(function (response) {\r\n _reportFetchMetrics(callDetails, (response || {})[_DYN_STATUS /* @min:%2estatus */], input, response, fetchData_1, function () {\r\n var _a;\r\n var ajaxResponse = (_a = {\r\n statusText: (response || {})[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n },\r\n _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getFetchCorrelationContext(response),\r\n _a);\r\n if (_enableResponseHeaderTracking && response) {\r\n var responseHeaderMap_1 = {};\r\n response.headers.forEach(function (value, name) {\r\n if (_canIncludeHeaders(name)) {\r\n responseHeaderMap_1[name] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_1;\r\n }\r\n return ajaxResponse;\r\n });\r\n return response;\r\n })\r\n .catch(function (reason) {\r\n _reportFetchMetrics(callDetails, 0, input, null, fetchData_1, null, { error: reason.message || dumpObj(reason) });\r\n throw reason;\r\n });\r\n }\r\n }\r\n },\r\n // Create an error callback to report any hook errors\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to monitor Window.fetch\" + ERROR_POSTFIX)\r\n }, true, isWebWorker()));\r\n _fetchInitialized = true;\r\n }\r\n else if (isPolyfill && !_polyfillInitialized) {\r\n // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n // Note: Polyfill implementations that don't support the \"polyfill\" tag are not supported\r\n // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n // App Insights\r\n _addHook(InstrumentFunc(global, STR_FETCH, {\r\n ns: _evtNamespace,\r\n req: function (callDetails, input, init) {\r\n // Just call so that we record any disabled URL\r\n _isDisabledRequest(null, input, init);\r\n }\r\n }));\r\n _polyfillInitialized = true;\r\n }\r\n }));\r\n if (isPolyfill) {\r\n // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n // But also supports multiple App Insights usages\r\n global[STR_FETCH].polyfill = isPolyfill;\r\n }\r\n }\r\n function _hookProto(target, funcName, callbacks) {\r\n _addHook(InstrumentProto(target, funcName, callbacks));\r\n }\r\n function _instrumentXhr() {\r\n if (!_supportsAjaxMonitoring(_self, _ajaxDataId)) {\r\n return;\r\n }\r\n _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(_extensionConfig, function () {\r\n _disableAjaxTracking = !!_extensionConfig[_DYN_DISABLE_AJAX_TRACKIN9 /* @min:%2edisableAjaxTracking */];\r\n _enableRequestHeaderTracking = _extensionConfig[_DYN_ENABLE_REQUEST_HEADE4 /* @min:%2eenableRequestHeaderTracking */];\r\n if (!_disableAjaxTracking && !_xhrInitialized) {\r\n // Instrument open\r\n _hookProto(XMLHttpRequest, \"open\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails, method, url, async) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, ajaxData, true)) {\r\n if (!ajaxData || !ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */]) {\r\n // Only create a single ajaxData (even when multiple AI instances are running)\r\n ajaxData = _openHandler(xhr, method, url, async);\r\n }\r\n // always attach to the on ready state change (required for handling multiple instances)\r\n _attachToOnReadyStateChange(xhr, ajaxData);\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, ERROR_HEADER + \".open\" + ERROR_POSTFIX)\r\n });\r\n // Instrument send\r\n _hookProto(XMLHttpRequest, \"send\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails, context) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {\r\n _createMarkId(\"xhr\", ajaxData);\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);\r\n ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, ERROR_HEADER + ERROR_POSTFIX)\r\n });\r\n // Instrument abort\r\n _hookProto(XMLHttpRequest, \"abort\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */]) {\r\n ajaxData[_DYN_ABORTED /* @min:%2eaborted */] = 1;\r\n ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, ERROR_HEADER + \".abort\" + ERROR_POSTFIX)\r\n });\r\n // Instrument setRequestHeader\r\n _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails, header, value) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (ajaxData && _isMonitoredXhrInstance(xhr, ajaxData)) {\r\n _addSharedXhrHeaders(xhr, header, value);\r\n if (_enableRequestHeaderTracking && _canIncludeHeaders(header)) {\r\n if (ajaxData) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][header] = value;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, ERROR_HEADER + \".setRequestHeader\" + ERROR_POSTFIX)\r\n });\r\n _xhrInitialized = true;\r\n }\r\n }));\r\n }\r\n function _isDisabledRequest(xhr, request, init) {\r\n var isDisabled = false;\r\n var theUrl = ((!isString(request) ? (request || {}).url || \"\" : request) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // check excludeRequestFromAutoTrackingPatterns before stripping off any query string\r\n arrForEach(_excludeRequestFromAutoTrackingPatterns, function (regex) {\r\n var theRegex = regex;\r\n if (isString(regex)) {\r\n theRegex = new RegExp(regex);\r\n }\r\n if (!isDisabled) {\r\n isDisabled = theRegex.test(theUrl);\r\n }\r\n });\r\n // if request url matches with exclude regex pattern, return true and no need to check for headers\r\n if (isDisabled) {\r\n return isDisabled;\r\n }\r\n var idx = _indexOf(theUrl, \"?\");\r\n var idx2 = _indexOf(theUrl, \"#\");\r\n if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n idx = idx2;\r\n }\r\n if (idx !== -1) {\r\n // Strip off any Query string\r\n theUrl = theUrl.substring(0, idx);\r\n }\r\n // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n if (!isNullOrUndefined(xhr)) {\r\n // Look on the XMLHttpRequest of the URL string value\r\n isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n }\r\n else if (!isNullOrUndefined(request)) { // fetch\r\n // Look for DisabledPropertyName in either Request or RequestInit\r\n isDisabled = (typeof request === \"object\" ? request[DisabledPropertyName] === true : false) ||\r\n (init ? init[DisabledPropertyName] === true : false);\r\n }\r\n // Also add extra check just in case the XHR or fetch objects where not decorated with the DisableProperty due to sealing or freezing\r\n if (!isDisabled && theUrl && isInternalApplicationInsightsEndpoint(theUrl)) {\r\n isDisabled = true;\r\n }\r\n if (isDisabled) {\r\n // Add the disabled url if not present\r\n if (!_disabledUrls[theUrl]) {\r\n _disabledUrls[theUrl] = 1;\r\n }\r\n }\r\n else {\r\n // Check to see if the url is listed as disabled\r\n if (_disabledUrls[theUrl]) {\r\n isDisabled = true;\r\n }\r\n }\r\n return isDisabled;\r\n }\r\n /// Verifies that particular instance of XMLHttpRequest needs to be monitored\r\n /// Optional parameter. True if ajaxData must be excluded from verification\r\n /// True if instance needs to be monitored, otherwise false\r\n function _isMonitoredXhrInstance(xhr, ajaxData, excludeAjaxDataValidation) {\r\n var ajaxValidation = true;\r\n var initialized = _xhrInitialized;\r\n if (!isNullOrUndefined(xhr)) {\r\n ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(ajaxData);\r\n }\r\n // checking to see that all interested functions on xhr were instrumented\r\n return initialized\r\n // checking on ajaxData to see that it was not removed in user code\r\n && ajaxValidation;\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n // Fall back\r\n if (!distributedTraceCtx && _context && _context.telemetryTrace) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(_context.telemetryTrace);\r\n }\r\n return distributedTraceCtx;\r\n }\r\n function _openHandler(xhr, method, url, async) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = strSubstr(generateW3CId(), 0, 16);\r\n var xhrRequestData = xhr[AJAX_DATA_CONTAINER] = (xhr[AJAX_DATA_CONTAINER] || { xh: [], i: {} });\r\n var ajaxDataCntr = xhrRequestData.i = (xhrRequestData.i || {});\r\n var ajaxData = ajaxDataCntr[_ajaxDataId] = (ajaxDataCntr[_ajaxDataId] || new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx()));\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = url;\r\n ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */] = true;\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = {};\r\n ajaxData.async = async;\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n return ajaxData;\r\n }\r\n function _attachToOnReadyStateChange(xhr, ajaxData) {\r\n ajaxData.xhrMonitoringState[_DYN_STATE_CHANGE_ATTACHE13 /* @min:%2estateChangeAttached */] = eventOn(xhr, \"readystatechange\", function () {\r\n var _a;\r\n try {\r\n if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr, ajaxData)) {\r\n _onAjaxComplete(xhr);\r\n }\r\n }\r\n catch (e) {\r\n var exceptionText = dumpObj(e);\r\n // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), \"c00c023f\") === -1) {\r\n _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, ERROR_HEADER + \" 'readystatechange' event handler\" + ERROR_POSTFIX, (_a = {},\r\n _a[_DYN_AJAX_DIAGNOSTICS_MES16 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),\r\n _a[_DYN_EXCEPTION /* @min:exception */] = exceptionText,\r\n _a));\r\n }\r\n }\r\n }, _evtNamespace);\r\n }\r\n function _getResponseText(xhr) {\r\n try {\r\n var responseType = xhr.responseType;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n return xhr[_DYN_RESPONSE_TEXT /* @min:%2eresponseText */];\r\n }\r\n }\r\n catch (e) {\r\n // This shouldn't happen because of the above check -- but just in case, so just ignore\r\n }\r\n return null;\r\n }\r\n function _onAjaxComplete(xhr) {\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = xhr[_DYN_STATUS /* @min:%2estatus */];\r\n function _reportXhrError(e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, FAILED_TO_CALCULATE_DURATION_ERROR + \"ajax call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n try {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Ajax\", _enableRequestHeaderTracking, function () {\r\n var _a;\r\n var ajaxResponse = (_a = {\r\n statusText: xhr[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n },\r\n _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getAjaxCorrelationContext(xhr),\r\n _a.type = xhr.responseType,\r\n _a[_DYN_RESPONSE_TEXT /* @min:responseText */] = _getResponseText(xhr),\r\n _a.response = xhr[_DYN_RESPONSE /* @min:%2eresponse */],\r\n _a);\r\n if (_enableResponseHeaderTracking) {\r\n var headers = xhr[_DYN_GET_ALL_RESPONSE_HEA15 /* @min:%2egetAllResponseHeaders */]();\r\n if (headers) {\r\n // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n // the regex converts the header string into an array of individual headers\r\n var arr = strTrim(headers).split(/[\\r\\n]+/);\r\n var responseHeaderMap_2 = {};\r\n arrForEach(arr, function (line) {\r\n var parts = line.split(\": \");\r\n var header = parts.shift();\r\n var value = parts.join(\": \");\r\n if (_canIncludeHeaders(header)) {\r\n responseHeaderMap_2[header] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_2;\r\n }\r\n }\r\n return ajaxResponse;\r\n });\r\n var properties = void 0;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: xhr[_DYN_STATUS /* @min:%2estatus */], xhr: xhr });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportXhrError(null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }\r\n finally {\r\n // cleanup telemetry data\r\n try {\r\n var xhrRequestData = (xhr[AJAX_DATA_CONTAINER] || { i: {} });\r\n var ajaxDataCntr = (xhrRequestData.i || {});\r\n if (ajaxDataCntr[_ajaxDataId]) {\r\n ajaxDataCntr[_ajaxDataId] = null;\r\n }\r\n }\r\n catch (e) {\r\n // May throw in environments that prevent extension or freeze xhr\r\n }\r\n }\r\n }, function (e) {\r\n _reportXhrError(e, null);\r\n });\r\n }\r\n function _getAjaxCorrelationContext(xhr) {\r\n var _a;\r\n try {\r\n var responseHeadersString = xhr[_DYN_GET_ALL_RESPONSE_HEA15 /* @min:%2egetAllResponseHeaders */]();\r\n if (responseHeadersString !== null) {\r\n var index = _indexOf(responseHeadersString[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), RequestHeaders[8 /* eRequestHeaders.requestContextHeaderLowerCase */]);\r\n if (index !== -1) {\r\n var responseHeader = xhr.getResponseHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return correlationIdGetCorrelationContext(responseHeader);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, (_a = {},\r\n _a[_DYN_AJAX_DIAGNOSTICS_MES16 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),\r\n _a[_DYN_EXCEPTION /* @min:exception */] = dumpObj(e),\r\n _a));\r\n }\r\n }\r\n function _createMarkId(type, ajaxData) {\r\n if (ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] && _markPrefix && _enableAjaxPerfTracking) {\r\n var performance_1 = getPerformance();\r\n if (performance_1 && isFunction(performance_1.mark)) {\r\n _markCount++;\r\n var markId = _markPrefix + type + \"#\" + _markCount;\r\n performance_1.mark(markId);\r\n var entries = performance_1.getEntriesByName(markId);\r\n if (entries && entries[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */] = entries[0];\r\n }\r\n }\r\n }\r\n }\r\n function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n var perfMark = ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */];\r\n var performance = getPerformance();\r\n var maxAttempts = _maxAjaxPerfLookupAttempts;\r\n var retryDelay = _ajaxPerfLookupDelay;\r\n var requestUrl = ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */];\r\n var attempt = 0;\r\n (function locateResourceTiming() {\r\n try {\r\n if (performance && perfMark) {\r\n attempt++;\r\n var perfTiming = null;\r\n var entries = performance.getEntries();\r\n for (var lp = entries[_DYN_LENGTH /* @min:%2elength */] - 1; lp >= 0; lp--) {\r\n var entry = entries[lp];\r\n if (entry) {\r\n if (entry.entryType === \"resource\") {\r\n if (entry.initiatorType === initiatorType &&\r\n (_indexOf(entry[_DYN_NAME /* @min:%2ename */], requestUrl) !== -1 || _indexOf(requestUrl, entry[_DYN_NAME /* @min:%2ename */]) !== -1)) {\r\n perfTiming = entry;\r\n }\r\n }\r\n else if (entry.entryType === \"mark\" && entry[_DYN_NAME /* @min:%2ename */] === perfMark[_DYN_NAME /* @min:%2ename */]) {\r\n // We hit the start event\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] = perfTiming;\r\n break;\r\n }\r\n if (entry[_DYN_START_TIME /* @min:%2estartTime */] < perfMark[_DYN_START_TIME /* @min:%2estartTime */] - 1000) {\r\n // Fallback to try and reduce the time spent looking for the perf entry\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!perfMark || // - we don't have a perfMark or\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] || // - we have not found the perf entry or\r\n attempt >= maxAttempts || // - we have tried too many attempts or\r\n ajaxData.async === false) { // - this is a sync request\r\n if (perfMark && isFunction(performance.clearMarks)) {\r\n // Remove the mark so we don't fill up the performance resources too much\r\n performance.clearMarks(perfMark[_DYN_NAME /* @min:%2ename */]);\r\n }\r\n ajaxData.perfAttempts = attempt;\r\n // just continue and report the track event\r\n trackCallback();\r\n }\r\n else {\r\n // We need to wait for the browser to populate the window.performance entry\r\n // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr,\r\n // this is a scheduling issue for the browser implementation\r\n scheduleTimeout(locateResourceTiming, retryDelay);\r\n }\r\n }\r\n catch (e) {\r\n reportError(e);\r\n }\r\n })();\r\n }\r\n function _createFetchRecord(input, init) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = strSubstr(generateW3CId(), 0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n var requestUrl;\r\n if (input instanceof Request) {\r\n requestUrl = (input || {}).url || \"\";\r\n }\r\n else {\r\n requestUrl = input;\r\n }\r\n if (requestUrl === \"\") {\r\n var location_1 = getLocation();\r\n if (location_1 && location_1.href) {\r\n requestUrl = strSplit(location_1.href, \"#\")[0];\r\n }\r\n }\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = requestUrl;\r\n var method = \"GET\";\r\n if (init && init[_DYN_METHOD /* @min:%2emethod */]) {\r\n method = init[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n else if (input && input instanceof Request) {\r\n method = input[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n var requestHeaders = {};\r\n if (_enableRequestHeaderTracking) {\r\n var headers = new Headers((init ? init[_DYN_HEADERS /* @min:%2eheaders */] : 0) || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n headers.forEach(function (value, key) {\r\n if (_canIncludeHeaders(key)) {\r\n requestHeaders[key] = value;\r\n }\r\n });\r\n }\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = requestHeaders;\r\n _createMarkId(STR_FETCH, ajaxData);\r\n return ajaxData;\r\n }\r\n function _getFailedFetchDiagnosticsMessage(input) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(input)) {\r\n if (typeof (input) === \"string\") {\r\n result += \"(url: '\".concat(input, \"')\");\r\n }\r\n else {\r\n result += \"(url: '\".concat(input.url, \"')\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalCritical(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to grab failed fetch diagnostics message\", { exception: dumpObj(e) });\r\n }\r\n return result;\r\n }\r\n function _reportFetchMetrics(callDetails, status, input, response, ajaxData, getResponse, properties) {\r\n if (!ajaxData) {\r\n return;\r\n }\r\n function _reportFetchError(msgId, e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, msgId, FAILED_TO_CALCULATE_DURATION_ERROR + \"fetch call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = status;\r\n _findPerfResourceEntry(STR_FETCH, ajaxData, function () {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n var properties;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: status, request: input, response: response });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }, function (e) {\r\n _reportFetchError(18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, e, null);\r\n });\r\n }\r\n function _getFetchCorrelationContext(response) {\r\n var _a;\r\n if (response && response[_DYN_HEADERS /* @min:%2eheaders */]) {\r\n try {\r\n var responseHeader = response[_DYN_HEADERS /* @min:%2eheaders */].get(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return correlationIdGetCorrelationContext(responseHeader);\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, (_a = {\r\n fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response)\r\n },\r\n _a[_DYN_EXCEPTION /* @min:exception */] = dumpObj(e),\r\n _a));\r\n }\r\n }\r\n }\r\n function _reportDependencyInternal(initializers, core, ajaxData, dependency, properties, systemProperties) {\r\n var _a;\r\n var result = true;\r\n var initializersCount = initializers[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = (_a = {\r\n item: dependency\r\n },\r\n _a[STR_PROPERTIES /* @min:properties */] = properties,\r\n _a.sysProperties = systemProperties,\r\n _a.context = ajaxData ? ajaxData[_DYN_CONTEXT /* @min:%2econtext */] : null,\r\n _a.aborted = ajaxData ? !!ajaxData[_DYN_ABORTED /* @min:%2eaborted */] : false,\r\n _a);\r\n result = _processDependencyContainer(core, initializers, details, \"initializer\");\r\n }\r\n if (result) {\r\n _self[_DYN_TRACK_DEPENDENCY_DAT3 /* @min:%2etrackDependencyDataInternal */](dependency, properties, systemProperties);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AjaxMonitor.prototype.initialize.\r\n AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n this.processNext(item, itemCtx);\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyData.\r\n// Removed Stub for AjaxMonitor.prototype.includeCorrelationHeaders.\r\n// Removed Stub for AjaxMonitor.prototype.addDependencyListener.\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n AjaxMonitor.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyDataInternal.\r\n AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Application = /** @class */ (function () {\r\n function Application() {\r\n }\r\n return Application;\r\n}());\r\nexport { Application };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Device = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the Device class\r\n */\r\n function Device() {\r\n // don't attempt to fingerprint browsers\r\n this.id = \"browser\";\r\n // Device type is a dimension in our data platform\r\n // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n this.deviceClass = \"Browser\";\r\n }\r\n return Device;\r\n}());\r\nexport { Device };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { onConfigChange } from \"@microsoft/applicationinsights-core-js\";\r\nvar Version = '3.3.0';\r\nvar Internal = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the internal telemetry data class.\r\n */\r\n function Internal(config, unloadHookContainer) {\r\n var _this = this;\r\n var unloadHook = onConfigChange((config), function () {\r\n var prefix = config.sdkExtension;\r\n _this.sdkVersion = (prefix ? prefix + \"_\" : \"\") + \"javascript:\" + Version;\r\n });\r\n unloadHookContainer && unloadHookContainer.add(unloadHook);\r\n }\r\n return Internal;\r\n}());\r\nexport { Internal };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Location = /** @class */ (function () {\r\n function Location() {\r\n }\r\n return Location;\r\n}());\r\nexport { Location };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_SESSION_MANAGER = \"sessionManager\"; // Count: 3\r\nexport var _DYN_UPDATE = \"update\"; // Count: 4\r\nexport var _DYN_IS_USER_COOKIE_SET = \"isUserCookieSet\"; // Count: 4\r\nexport var _DYN_IS_NEW_USER = \"isNewUser\"; // Count: 4\r\nexport var _DYN_GET_TRACE_CTX = \"getTraceCtx\"; // Count: 3\r\nexport var _DYN_TELEMETRY_TRACE = \"telemetryTrace\"; // Count: 3\r\nexport var _DYN_APPLY_SESSION_CONTEX0 = \"applySessionContext\"; // Count: 2\r\nexport var _DYN_APPLY_APPLICATION_CO1 = \"applyApplicationContext\"; // Count: 2\r\nexport var _DYN_APPLY_DEVICE_CONTEXT = \"applyDeviceContext\"; // Count: 2\r\nexport var _DYN_APPLY_OPERATION_CONT2 = \"applyOperationContext\"; // Count: 2\r\nexport var _DYN_APPLY_USER_CONTEXT = \"applyUserContext\"; // Count: 2\r\nexport var _DYN_APPLY_OPERATING_SYST3 = \"applyOperatingSystemContxt\"; // Count: 2\r\nexport var _DYN_APPLY_LOCATION_CONTE4 = \"applyLocationContext\"; // Count: 2\r\nexport var _DYN_APPLY_INTERNAL_CONTE5 = \"applyInternalContext\"; // Count: 2\r\nexport var _DYN_ACCOUNT_ID = \"accountId\"; // Count: 7\r\nexport var _DYN_GET_SESSION_ID = \"getSessionId\"; // Count: 4\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 3\r\nexport var _DYN_SESSION_COOKIE_POSTF6 = \"sessionCookiePostfix\"; // Count: 2\r\nexport var _DYN_USER_COOKIE_POSTFIX = \"userCookiePostfix\"; // Count: 2\r\nexport var _DYN_ID_LENGTH = \"idLength\"; // Count: 4\r\nexport var _DYN_GET_NEW_ID = \"getNewId\"; // Count: 3\r\nexport var _DYN_LENGTH = \"length\"; // Count: 4\r\nexport var _DYN_AUTOMATIC_SESSION = \"automaticSession\"; // Count: 5\r\nexport var _DYN_AUTHENTICATED_ID = \"authenticatedId\"; // Count: 6\r\nexport var _DYN_ACQUISITION_DATE = \"acquisitionDate\"; // Count: 5\r\nexport var _DYN_RENEWAL_DATE = \"renewalDate\"; // Count: 4\r\nexport var _DYN_JOIN = \"join\"; // Count: 5\r\nexport var _DYN_COOKIE_SEPARATOR = \"cookieSeparator\"; // Count: 5\r\nexport var _DYN_AUTH_USER_COOKIE_NAM7 = \"authUserCookieName\"; // Count: 3\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, dateNow, dumpObj, getExceptionName, isFunction, newId, onConfigChange, safeGetCookieMgr, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACQUISITION_DATE, _DYN_AUTOMATIC_SESSION, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_RENEWAL_DATE, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nvar SESSION_COOKIE_NAME = \"ai_session\";\r\nvar ACQUISITION_SPAN = 86400000; // 24 hours in ms\r\nvar RENEWAL_SPAN = 1800000; // 30 minutes in ms\r\nvar COOKIE_UPDATE_INTERVAL = 60000; // 1 minute in ms\r\nvar Session = /** @class */ (function () {\r\n function Session() {\r\n }\r\n return Session;\r\n}());\r\nexport { Session };\r\nvar _SessionManager = /** @class */ (function () {\r\n function _SessionManager(config, core, unloadHookContainer) {\r\n var self = this;\r\n var _storageNamePrefix;\r\n var _cookieUpdatedTimestamp;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n var _sessionExpirationMs;\r\n var _sessionRenewalMs;\r\n dynamicProto(_SessionManager, self, function (_self) {\r\n if (!config) {\r\n config = {};\r\n }\r\n var unloadHook = onConfigChange(config, function (details) {\r\n _sessionExpirationMs = config.sessionExpirationMs || ACQUISITION_SPAN;\r\n _sessionRenewalMs = config.sessionRenewalMs || RENEWAL_SPAN;\r\n // sessionCookiePostfix takes the preference if it is configured, otherwise takes namePrefix if configured.\r\n var sessionCookiePostfix = config.sessionCookiePostfix || config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n _storageNamePrefix = SESSION_COOKIE_NAME + sessionCookiePostfix;\r\n });\r\n unloadHookContainer && unloadHookContainer.add(unloadHook);\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */] = new Session();\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function () {\r\n // Always using Date getTime() as there is a bug in older IE instances that causes the performance timings to have the hi-bit set eg 0x800000000 causing\r\n // the number to be incorrect.\r\n var nowMs = dateNow();\r\n var isExpired = false;\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n if (!session.id) {\r\n isExpired = !_initializeAutomaticSession(session, nowMs);\r\n }\r\n if (!isExpired && _sessionExpirationMs > 0) {\r\n var timeSinceAcqMs = nowMs - session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n var timeSinceRenewalMs = nowMs - session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */];\r\n isExpired = timeSinceAcqMs < 0 || timeSinceRenewalMs < 0; // expired if the acquisition or last renewal are in the future\r\n isExpired = isExpired || timeSinceAcqMs > _sessionExpirationMs; // expired if the time since acquisition is more than session Expiration\r\n isExpired = isExpired || timeSinceRenewalMs > _sessionRenewalMs; // expired if the time since last renewal is more than renewal period\r\n }\r\n // renew if acquisitionSpan or renewalSpan has elapsed\r\n if (isExpired) {\r\n // update automaticSession so session state has correct id\r\n _renew(nowMs);\r\n }\r\n else {\r\n // do not update the cookie more often than cookieUpdateInterval\r\n if (!_cookieUpdatedTimestamp || nowMs - _cookieUpdatedTimestamp > COOKIE_UPDATE_INTERVAL) {\r\n _setCookie(session, nowMs);\r\n }\r\n }\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _self.backup = function () {\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n _setStorage(session.id, session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */], session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */]);\r\n };\r\n /**\r\n * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n * initialize the automatic session.\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSession(session, now) {\r\n var isValid = false;\r\n var cookieValue = _cookieManager.get(_storageNamePrefix);\r\n if (cookieValue && isFunction(cookieValue.split)) {\r\n isValid = _initializeAutomaticSessionWithData(session, cookieValue);\r\n }\r\n else {\r\n // There's no cookie, but we might have session data in local storage\r\n // This can happen if the session expired or the user actively deleted the cookie\r\n // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n var storageValue = utlGetLocalStorage(_logger, _storageNamePrefix);\r\n if (storageValue) {\r\n isValid = _initializeAutomaticSessionWithData(session, storageValue);\r\n }\r\n }\r\n return isValid || !!session.id;\r\n }\r\n /**\r\n * Extract id, acquisitionDate, and renewalDate from an ai_session payload string and\r\n * use this data to initialize automaticSession.\r\n *\r\n * @param sessionData - The string stored in an ai_session cookie or local storage backup\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSessionWithData(session, sessionData) {\r\n var isValid = false;\r\n var sessionReset = \", session will be reset\";\r\n var tokens = sessionData.split(\"|\");\r\n if (tokens[_DYN_LENGTH /* @min:%2elength */] >= 2) {\r\n try {\r\n var acqMs = +tokens[1] || 0;\r\n var renewalMs = +tokens[2] || 0;\r\n if (isNaN(acqMs) || acqMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session acquisition date is 0\" + sessionReset);\r\n }\r\n else if (isNaN(renewalMs) || renewalMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session renewal date is 0\" + sessionReset);\r\n }\r\n else if (tokens[0]) {\r\n // Everything looks valid so set the values\r\n session.id = tokens[0];\r\n session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = acqMs;\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = renewalMs;\r\n isValid = true;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 9 /* _eInternalMessageId.ErrorParsingAISessionCookie */, \"Error parsing ai_session value [\" + (sessionData || \"\") + \"]\" + sessionReset + \" - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return isValid;\r\n }\r\n function _renew(nowMs) {\r\n var getNewId = config[_DYN_GET_NEW_ID /* @min:%2egetNewId */] || newId;\r\n _self.automaticSession.id = getNewId(config[_DYN_ID_LENGTH /* @min:%2eidLength */] || 22);\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */][_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = nowMs;\r\n _setCookie(_self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */], nowMs);\r\n // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n if (!utlCanUseLocalStorage()) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 0 /* _eInternalMessageId.BrowserDoesNotSupportLocalStorage */, \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n }\r\n }\r\n function _setCookie(session, nowMs) {\r\n var acq = session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = nowMs;\r\n var renewalPeriodMs = _sessionRenewalMs;\r\n // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n var acqTimeLeftMs = (acq + _sessionExpirationMs) - nowMs;\r\n var cookie = [session.id, acq, nowMs];\r\n var maxAgeSec = 0;\r\n if (acqTimeLeftMs < renewalPeriodMs) {\r\n maxAgeSec = acqTimeLeftMs / 1000;\r\n }\r\n else {\r\n maxAgeSec = renewalPeriodMs / 1000;\r\n }\r\n var cookieDomain = config.cookieDomain || null;\r\n // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n // A cookie with 0 expiry in the session cookie will never expire for that browser session. If the browser is closed the cookie expires.\r\n // Depending on the browser, another instance does not inherit this cookie, however, another tab will\r\n _cookieManager.set(_storageNamePrefix, cookie[_DYN_JOIN /* @min:%2ejoin */](\"|\"), _sessionExpirationMs > 0 ? maxAgeSec : null, cookieDomain);\r\n _cookieUpdatedTimestamp = nowMs;\r\n }\r\n function _setStorage(guid, acq, renewal) {\r\n // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n utlSetLocalStorage(_logger, _storageNamePrefix, [guid, acq, renewal][_DYN_JOIN /* @min:%2ejoin */](\"|\"));\r\n }\r\n });\r\n }\r\n// Removed Stub for _SessionManager.prototype.update.\r\n// Removed Stub for _SessionManager.prototype.backup.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n _SessionManager.__ieDyn=1;\n\n return _SessionManager;\r\n}());\r\nexport { _SessionManager };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { generateW3CId, getLocation } from \"@microsoft/applicationinsights-core-js\";\r\nvar TelemetryTrace = /** @class */ (function () {\r\n function TelemetryTrace(id, parentId, name, logger) {\r\n var _self = this;\r\n _self.traceID = id || generateW3CId();\r\n _self.parentID = parentId;\r\n var location = getLocation();\r\n if (!name && location && location.pathname) {\r\n name = location.pathname;\r\n }\r\n _self.name = dataSanitizeString(logger, name);\r\n }\r\n return TelemetryTrace;\r\n}());\r\nexport { TelemetryTrace };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlRemoveStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, newId, onConfigChange, safeGetCookieMgr, safeGetLogger, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { objDefine } from \"@nevware21/ts-utils\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_AUTHENTICATED_ID, _DYN_AUTH_USER_COOKIE_NAM7, _DYN_COOKIE_SEPARATOR, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"../__DynamicConstants\";\r\nfunction _validateUserInput(id) {\r\n // Validate:\r\n // 1. Id is a non-empty string.\r\n // 2. It does not contain special characters for cookies.\r\n if (typeof id !== \"string\" ||\r\n !id ||\r\n id.match(/,|;|=| |\\|/)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar User = /** @class */ (function () {\r\n function User(config, core, unloadHookContainer) {\r\n /**\r\n * A flag indicating whether this represents a new user\r\n */\r\n this.isNewUser = false;\r\n /**\r\n * A flag indicating whether the user cookie has been set\r\n */\r\n this.isUserCookieSet = false;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n var _storageNamePrefix;\r\n dynamicProto(User, this, function (_self) {\r\n // Define _self.config\r\n objDefine(_self, \"config\", {\r\n g: function () { return config; }\r\n });\r\n var unloadHook = onConfigChange(config, function () {\r\n var userCookiePostfix = config[_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */] || \"\";\r\n _storageNamePrefix = User.userCookieName + userCookiePostfix;\r\n // get userId or create new one if none exists\r\n var cookie = _cookieManager.get(_storageNamePrefix);\r\n if (cookie) {\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n var params = cookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (params[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self.id = params[0];\r\n // we already have a cookie\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = !!_self.id;\r\n }\r\n }\r\n if (!_self.id) {\r\n _self.id = _generateNewId();\r\n var newCookie = _generateNewCookie(_self.id);\r\n _setUserCookie(newCookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n // We should respect their wishes and clear ourselves from local storage\r\n var name_1 = (config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\") + \"ai_session\";\r\n utlRemoveStorage(_logger, name_1);\r\n }\r\n // We still take the account id from the ctor param for backward compatibility.\r\n // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] || undefined;\r\n // Get the auth user id and account id from the cookie if exists\r\n // Cookie is in the pattern: |\r\n var authCookie = _cookieManager.get(User[_DYN_AUTH_USER_COOKIE_NAM7 /* @min:%2eauthUserCookieName */]);\r\n if (authCookie) {\r\n authCookie = decodeURI(authCookie);\r\n var authCookieString = authCookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (authCookieString[0]) {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authCookieString[0];\r\n }\r\n if (authCookieString[_DYN_LENGTH /* @min:%2elength */] > 1 && authCookieString[1]) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = authCookieString[1];\r\n }\r\n }\r\n });\r\n unloadHookContainer && unloadHookContainer.add(unloadHook);\r\n function _generateNewId() {\r\n var theConfig = (config || {});\r\n var getNewId = theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] || newId;\r\n var id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? config[_DYN_ID_LENGTH /* @min:%2eidLength */] : 22);\r\n return id;\r\n }\r\n function _generateNewCookie(userId) {\r\n var acqStr = toISOString(new Date());\r\n _self.accountAcquisitionDate = acqStr;\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = true;\r\n var newCookie = [userId, acqStr];\r\n return newCookie;\r\n }\r\n function _setUserCookie(cookie) {\r\n // without expiration, cookies expire at the end of the session\r\n // set it to 365 days from now\r\n // 365 * 24 * 60 * 60 = 31536000\r\n var oneYear = 31536000;\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = _cookieManager.set(_storageNamePrefix, cookie, oneYear);\r\n }\r\n _self.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // Validate inputs to ensure no cookie control characters.\r\n var isInvalidInput = !_validateUserInput(authenticatedUserId) || (accountId && !_validateUserInput(accountId));\r\n if (isInvalidInput) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 60 /* _eInternalMessageId.SetAuthContextFailedAccountName */, \"Setting auth user context failed. \" +\r\n \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\", true);\r\n return;\r\n }\r\n // Create cookie string.\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authenticatedUserId;\r\n var authCookie = _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */];\r\n if (accountId) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = accountId;\r\n authCookie = [_self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], _self.accountId][_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n }\r\n if (storeInCookie) {\r\n // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n // Encoding the cookie to handle unexpected unicode characters.\r\n _cookieManager.set(User[_DYN_AUTH_USER_COOKIE_NAM7 /* @min:%2eauthUserCookieName */], encodeURI(authCookie));\r\n }\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n _self.clearAuthenticatedUserContext = function () {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = null;\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = null;\r\n _cookieManager.del(User[_DYN_AUTH_USER_COOKIE_NAM7 /* @min:%2eauthUserCookieName */]);\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (userId) {\r\n // Optimizations to avoid setting and processing the cookie when not needed\r\n if (_self.id !== userId || !_self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n var user_id = userId ? userId : _generateNewId();\r\n var user_cookie = _generateNewCookie(user_id);\r\n _setUserCookie(user_cookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for User.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.clearAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.update.\r\n User.cookieSeparator = \"|\";\r\n User.userCookieName = \"ai_user\";\r\n User.authUserCookieName = \"ai_authUser\";\r\n return User;\r\n}());\r\nexport { User };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* TelemetryContext.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CtxTagKeys, Extensions, PageView, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalLogMessage, getSetValue, hasWindow, isNullOrUndefined, isString, objKeys, setValue } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Application } from \"./Context/Application\";\r\nimport { Device } from \"./Context/Device\";\r\nimport { Internal } from \"./Context/Internal\";\r\nimport { Location } from \"./Context/Location\";\r\nimport { Session, _SessionManager } from \"./Context/Session\";\r\nimport { TelemetryTrace } from \"./Context/TelemetryTrace\";\r\nimport { User } from \"./Context/User\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_AUTHENTICATED_ID, _DYN_AUTOMATIC_SESSION, _DYN_GET_SESSION_ID, _DYN_LENGTH, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE } from \"./__DynamicConstants\";\r\nvar strExt = \"ext\";\r\nvar strTags = \"tags\";\r\nfunction _removeEmpty(target, name) {\r\n if (target && target[name] && objKeys(target[name])[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n delete target[name];\r\n }\r\n}\r\nfunction _nullResult() {\r\n return null;\r\n}\r\nvar TelemetryContext = /** @class */ (function () {\r\n function TelemetryContext(core, defaultConfig, previousTraceCtx, unloadHookContainer) {\r\n var _this = this;\r\n var logger = core.logger;\r\n dynamicProto(TelemetryContext, this, function (_self) {\r\n _self.appId = _nullResult;\r\n _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = _nullResult;\r\n _self.application = new Application();\r\n _self.internal = new Internal(defaultConfig, unloadHookContainer);\r\n if (hasWindow()) {\r\n _self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] = new _SessionManager(defaultConfig, core, unloadHookContainer);\r\n _self.device = new Device();\r\n _self.location = new Location();\r\n _self.user = new User(defaultConfig, core, unloadHookContainer);\r\n var traceId = void 0;\r\n var parentId = void 0;\r\n var name_1;\r\n if (previousTraceCtx) {\r\n traceId = previousTraceCtx.getTraceId();\r\n parentId = previousTraceCtx.getSpanId();\r\n name_1 = previousTraceCtx.getName();\r\n }\r\n _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */] = new TelemetryTrace(traceId, parentId, name_1, logger);\r\n _self.session = new Session();\r\n }\r\n _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () {\r\n var session = _self.session;\r\n var sesId = null;\r\n // If customer set session info, apply their context; otherwise apply context automatically generated\r\n if (session && isString(session.id)) {\r\n sesId = session.id;\r\n }\r\n else {\r\n // Gets the automatic session if it exists or an empty object\r\n var autoSession = (_self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] || {})[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n sesId = autoSession && isString(autoSession.id) ? autoSession.id : null;\r\n }\r\n return sesId;\r\n };\r\n _self[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */] = function (evt, itemCtx) {\r\n setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */](), isString);\r\n };\r\n _self[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */] = function (evt, itemCtx) {\r\n setValue(evt.ext, Extensions.OSExt, _self.os);\r\n };\r\n _self[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */] = function (evt, itemCtx) {\r\n var application = _self.application;\r\n if (application) {\r\n // evt.ext.app\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.applicationVersion, application.ver, isString);\r\n setValue(tags, CtxTagKeys.applicationBuild, application.build, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */] = function (evt, itemCtx) {\r\n var device = _self.device;\r\n if (device) {\r\n // evt.ext.device\r\n var extDevice = getSetValue(getSetValue(evt, strExt), Extensions.DeviceExt);\r\n setValue(extDevice, \"localId\", device.id, isString);\r\n setValue(extDevice, \"ip\", device.ip, isString);\r\n setValue(extDevice, \"model\", device.model, isString);\r\n setValue(extDevice, \"deviceClass\", device.deviceClass, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */] = function (evt, itemCtx) {\r\n var internal = _self.internal;\r\n if (internal) {\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.internalAgentVersion, internal.agentVersion, isString); // not mapped in CS 4.0\r\n setValue(tags, CtxTagKeys.internalSdkVersion, dataSanitizeString(logger, internal.sdkVersion, 64), isString);\r\n if (evt.baseType === _InternalLogMessage.dataType || evt.baseType === PageView.dataType) {\r\n setValue(tags, CtxTagKeys.internalSnippet, internal.snippetVer, isString);\r\n setValue(tags, CtxTagKeys.internalSdkSrc, internal.sdkSrc, isString);\r\n }\r\n }\r\n };\r\n _self[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */] = function (evt, itemCtx) {\r\n var location = _this.location;\r\n if (location) {\r\n setValue(getSetValue(evt, strTags, []), CtxTagKeys.locationIp, location.ip, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */] = function (evt, itemCtx) {\r\n var telemetryTrace = _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */];\r\n if (telemetryTrace) {\r\n var extTrace = getSetValue(getSetValue(evt, strExt), Extensions.TraceExt, { traceID: undefined, parentID: undefined });\r\n setValue(extTrace, \"traceID\", telemetryTrace.traceID, isString, isNullOrUndefined);\r\n setValue(extTrace, \"name\", telemetryTrace.name, isString, isNullOrUndefined);\r\n setValue(extTrace, \"parentID\", telemetryTrace.parentID, isString, isNullOrUndefined);\r\n }\r\n };\r\n _self.applyWebContext = function (evt, itemCtx) {\r\n var web = _this.web;\r\n if (web) {\r\n setValue(getSetValue(evt, strExt), Extensions.WebExt, web);\r\n }\r\n };\r\n _self[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */] = function (evt, itemCtx) {\r\n var user = _self.user;\r\n if (user) {\r\n var tags = getSetValue(evt, strTags, []);\r\n // stays in tags\r\n setValue(tags, CtxTagKeys.userAccountId, user[_DYN_ACCOUNT_ID /* @min:%2eaccountId */], isString);\r\n // CS 4.0\r\n var extUser = getSetValue(getSetValue(evt, strExt), Extensions.UserExt);\r\n setValue(extUser, \"id\", user.id, isString);\r\n setValue(extUser, \"authId\", user[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], isString);\r\n }\r\n };\r\n _self.cleanUp = function (evt, itemCtx) {\r\n var ext = evt.ext;\r\n if (ext) {\r\n _removeEmpty(ext, Extensions.DeviceExt);\r\n _removeEmpty(ext, Extensions.UserExt);\r\n _removeEmpty(ext, Extensions.WebExt);\r\n _removeEmpty(ext, Extensions.OSExt);\r\n _removeEmpty(ext, Extensions.AppExt);\r\n _removeEmpty(ext, Extensions.TraceExt);\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for TelemetryContext.prototype.applySessionContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperatingSystemContxt.\r\n// Removed Stub for TelemetryContext.prototype.applyApplicationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyDeviceContext.\r\n// Removed Stub for TelemetryContext.prototype.applyInternalContext.\r\n// Removed Stub for TelemetryContext.prototype.applyLocationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyWebContext.\r\n// Removed Stub for TelemetryContext.prototype.applyUserContext.\r\n// Removed Stub for TelemetryContext.prototype.cleanUp.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n TelemetryContext.__ieDyn=1;\n\n return TelemetryContext;\r\n}());\r\nexport { TelemetryContext };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* PropertiesPlugin.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nvar _a;\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, PageView, PropertiesPluginIdentifier, createDistributedTraceContextFromTrace, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _InternalLogMessage, _logInternalMessage, createProcessTelemetryContext, getNavigator, getSetValue, isNullOrUndefined, onConfigChange } from \"@microsoft/applicationinsights-core-js\";\r\nimport { objDeepFreeze, objDefine } from \"@nevware21/ts-utils\";\r\nimport { TelemetryContext } from \"./TelemetryContext\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_GET_NEW_ID, _DYN_GET_SESSION_ID, _DYN_GET_TRACE_CTX, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_NAME_PREFIX, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"./__DynamicConstants\";\r\nvar undefString;\r\nvar nullValue = null;\r\nvar _defaultConfig = objDeepFreeze((_a = {},\r\n _a[_DYN_ACCOUNT_ID /* @min:accountId */] = nullValue,\r\n _a.sessionRenewalMs = 30 * 60 * 1000,\r\n _a.samplingPercentage = 100,\r\n _a.sessionExpirationMs = 24 * 60 * 60 * 1000,\r\n _a.cookieDomain = nullValue,\r\n _a.sdkExtension = nullValue,\r\n _a.isBrowserLinkTrackingEnabled = false,\r\n _a.appId = nullValue,\r\n _a[_DYN_GET_SESSION_ID /* @min:getSessionId */] = nullValue,\r\n _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = undefString,\r\n _a[_DYN_SESSION_COOKIE_POSTF6 /* @min:sessionCookiePostfix */] = undefString,\r\n _a[_DYN_USER_COOKIE_POSTFIX /* @min:userCookiePostfix */] = undefString,\r\n _a[_DYN_ID_LENGTH /* @min:idLength */] = 22,\r\n _a[_DYN_GET_NEW_ID /* @min:getNewId */] = nullValue,\r\n _a));\r\nvar PropertiesPlugin = /** @class */ (function (_super) {\r\n __extends(PropertiesPlugin, _super);\r\n function PropertiesPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 110;\r\n _this.identifier = PropertiesPluginIdentifier;\r\n var _extensionConfig;\r\n var _distributedTraceCtx;\r\n var _previousTraceCtx;\r\n var _context;\r\n var _disableUserInitMessage;\r\n dynamicProto(PropertiesPlugin, _this, function (_self, _base) {\r\n _initDefaults();\r\n objDefine(_self, \"context\", {\r\n g: function () {\r\n return _context;\r\n }\r\n });\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _populateDefaults(config);\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event - The event that needs to be processed\r\n */\r\n _self.processTelemetry = function (event, itemCtx) {\r\n if (!isNullOrUndefined(event)) {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n if (event.name === PageView.envelopeType) {\r\n itemCtx.diagLog().resetInternalMessageCount();\r\n }\r\n var theContext = (_context || {});\r\n if (theContext.session) {\r\n // If customer did not provide custom session id update the session manager\r\n if (typeof _context.session.id !== \"string\" && theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */]) {\r\n theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */][_DYN_UPDATE /* @min:%2eupdate */]();\r\n }\r\n }\r\n var userCtx = theContext.user;\r\n if (userCtx && !userCtx[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n userCtx[_DYN_UPDATE /* @min:%2eupdate */](theContext.user.id);\r\n }\r\n _processTelemetryInternal(event, itemCtx);\r\n if (userCtx && userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */]) {\r\n userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n if (!_disableUserInitMessage) {\r\n var message = new _InternalLogMessage(72 /* _eInternalMessageId.SendBrowserInfoOnUserInit */, ((getNavigator() || {}).userAgent || \"\"));\r\n _logInternalMessage(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, message);\r\n }\r\n }\r\n _self.processNext(event, itemCtx);\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n var core = (unloadCtx || {}).core();\r\n if (core && core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */]) {\r\n var traceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n if (traceCtx === _distributedTraceCtx) {\r\n core.setTraceCtx(_previousTraceCtx);\r\n }\r\n }\r\n _initDefaults();\r\n };\r\n function _initDefaults() {\r\n _extensionConfig = null;\r\n _distributedTraceCtx = null;\r\n _previousTraceCtx = null;\r\n _context = null;\r\n _disableUserInitMessage = true;\r\n }\r\n function _populateDefaults(config) {\r\n var identifier = _self.identifier;\r\n var core = _self.core;\r\n // This function will be re-called whenever any referenced configuration is changed\r\n _self._addHook(onConfigChange(config, function () {\r\n var ctx = createProcessTelemetryContext(null, config, core);\r\n if (config.storagePrefix) {\r\n utlSetStoragePrefix(config.storagePrefix);\r\n }\r\n _disableUserInitMessage = config.disableUserInitMessage === false ? false : true;\r\n _extensionConfig = ctx.getExtCfg(identifier, _defaultConfig);\r\n // Test hook to allow accessing the internal values -- explicitly not defined as an available property on the class\r\n _self[\"_extConfig\"] = _extensionConfig;\r\n }));\r\n // This is outside of the onConfigChange as we don't want to update (replace) these values whenever a referenced config item changes\r\n _previousTraceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n _context = new TelemetryContext(core, _extensionConfig, _previousTraceCtx, _self._unloadHooks);\r\n _distributedTraceCtx = createDistributedTraceContextFromTrace(_self.context[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */], _previousTraceCtx);\r\n core.setTraceCtx(_distributedTraceCtx);\r\n _self.context.appId = function () {\r\n var breezeChannel = core.getPlugin(BreezeChannelIdentifier);\r\n return breezeChannel ? breezeChannel.plugin[\"_appId\"] : null;\r\n };\r\n }\r\n function _processTelemetryInternal(evt, itemCtx) {\r\n // Set Part A fields\r\n getSetValue(evt, \"tags\", []);\r\n getSetValue(evt, \"ext\", {});\r\n var ctx = _self.context;\r\n ctx[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */](evt, itemCtx);\r\n ctx.applyWebContext(evt, itemCtx);\r\n ctx[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */](evt, itemCtx); // legacy tags\r\n ctx[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */](evt, itemCtx); // legacy tags\r\n ctx.cleanUp(evt, itemCtx);\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for PropertiesPlugin.prototype.initialize.\r\n// Removed Stub for PropertiesPlugin.prototype.processTelemetry.\r\n // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n PropertiesPlugin.__ieDyn=1;\n\n return PropertiesPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default PropertiesPlugin;\r\n","/*\n * Application Insights JavaScript SDK - Web, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// ###################################################################################################################################################\r\n// Note: DON'T Export these const from the package as we are still targeting IE/ES5 this will export a mutable variables that someone could change ###\r\n// ###################################################################################################################################################\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nvar _AUTHENTICATED_USER_CONTEXT = \"AuthenticatedUserContext\";\r\nvar _TRACK = \"track\";\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_SNIPPET = \"snippet\";\r\nexport var STR_GET_COOKIE_MGR = \"getCookieMgr\";\r\nexport var STR_START_TRACK_PAGE = \"startTrackPage\";\r\nexport var STR_STOP_TRACK_PAGE = \"stopTrackPage\";\r\nexport var STR_FLUSH = \"flush\";\r\nexport var STR_START_TRACK_EVENT = \"startTrackEvent\";\r\nexport var STR_STOP_TRACK_EVENT = \"stopTrackEvent\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZER = \"addTelemetryInitializer\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZERS = STR_ADD_TELEMETRY_INITIALIZER + \"s\";\r\nexport var STR_POLL_INTERNAL_LOGS = \"pollInternalLogs\";\r\nexport var STR_GET_PLUGIN = \"getPlugin\";\r\nexport var STR_EVT_NAMESPACE = \"evtNamespace\";\r\nexport var STR_TRACK_EVENT = _TRACK + \"Event\";\r\nexport var STR_TRACK_TRACE = _TRACK + \"Trace\";\r\nexport var STR_TRACK_METRIC = _TRACK + \"Metric\";\r\nexport var STR_TRACK_PAGE_VIEW = _TRACK + \"PageView\";\r\nexport var STR_TRACK_EXCEPTION = _TRACK + \"Exception\";\r\nexport var STR_TRACK_DEPENDENCY_DATA = _TRACK + \"DependencyData\";\r\nexport var STR_SET_AUTHENTICATED_USER_CONTEXT = \"set\" + _AUTHENTICATED_USER_CONTEXT;\r\nexport var STR_CLEAR_AUTHENTICATED_USER_CONTEXT = \"clear\" + _AUTHENTICATED_USER_CONTEXT;\r\nexport var CONFIG_ENDPOINT_URL = \"https://js.monitor.azure.com/scripts/b/ai.config.1.cfg.json\";\r\n","/*\n * Application Insights JavaScript SDK - Web, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nvar _a, _b, _c, _d;\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPlugin } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { CfgSyncPlugin } from \"@microsoft/applicationinsights-cfgsync-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { AnalyticsPluginIdentifier, DEFAULT_BREEZE_PATH, PropertiesPluginIdentifier, ThrottleMgr, parseConnectionString } from \"@microsoft/applicationinsights-common\";\r\nimport { AppInsightsCore, _throwInternal, addPageHideEventListener, addPageUnloadEventListener, cfgDfMerge, cfgDfValidate, createDynamicConfig, createProcessTelemetryContext, createUniqueNamespace, doPerf, hasDocument, hasWindow, isArray, isFeatureEnabled, isFunction, isNullOrUndefined, isReactNative, isString, mergeEvtNamespace, onConfigChange, proxyAssign, proxyFunctions, removePageHideEventListener, removePageUnloadEventListener } from \"@microsoft/applicationinsights-core-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from \"@microsoft/applicationinsights-dependencies-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { createAsyncPromise, createPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { arrForEach, arrIndexOf, isPromiseLike, objDefine, objForEachKey, strIndexOf, throwUnsupported } from \"@nevware21/ts-utils\";\r\nimport { CONFIG_ENDPOINT_URL, STR_ADD_TELEMETRY_INITIALIZER, STR_CLEAR_AUTHENTICATED_USER_CONTEXT, STR_EVT_NAMESPACE, STR_FLUSH, STR_GET_COOKIE_MGR, STR_GET_PLUGIN, STR_POLL_INTERNAL_LOGS, STR_SET_AUTHENTICATED_USER_CONTEXT, STR_SNIPPET, STR_START_TRACK_EVENT, STR_START_TRACK_PAGE, STR_STOP_TRACK_EVENT, STR_STOP_TRACK_PAGE, STR_TRACK_DEPENDENCY_DATA, STR_TRACK_EVENT, STR_TRACK_EXCEPTION, STR_TRACK_METRIC, STR_TRACK_PAGE_VIEW, STR_TRACK_TRACE } from \"./InternalConstants\";\r\nimport { _DYN_ADD_HOUSEKEEPING_BEF2, _DYN_CONNECTION_STRING, _DYN_CONTEXT, _DYN_ENDPOINT_URL, _DYN_INGESTIONENDPOINT, _DYN_INSTRUMENTATIONKEY0, _DYN_INSTRUMENTATION_KEY, _DYN_ONUNLOAD_FLUSH, _DYN_QUEUE, _DYN_SEND_MESSAGE, _DYN_UPDATE_SNIPPET_DEFIN3, _DYN_USER_OVERRIDE_ENDPOI1, _DYN_VERSION } from \"./__DynamicConstants\";\r\nvar _internalSdkSrc;\r\n// This is an exclude list of properties that should not be updated during initialization\r\n// They include a combination of private and internal property names\r\nvar _ignoreUpdateSnippetProperties = [\r\n STR_SNIPPET, \"dependencies\", \"properties\", \"_snippetVersion\", \"appInsightsNew\", \"getSKUDefaults\"\r\n];\r\nvar IKEY_USAGE = \"iKeyUsage\";\r\nvar CDN_USAGE = \"CdnUsage\";\r\nvar SDK_LOADER_VER = \"SdkLoaderVer\";\r\nvar UNDEFINED_VALUE = undefined;\r\nvar default_limit = {\r\n samplingRate: 100,\r\n maxSendNumber: 1\r\n};\r\nvar default_interval = {\r\n monthInterval: 3,\r\n daysOfMonth: [28]\r\n};\r\nvar default_throttle_config = {\r\n disabled: true,\r\n limit: cfgDfMerge(default_limit),\r\n interval: cfgDfMerge(default_interval)\r\n};\r\n// We need to include all properties that we only reference that we want to be dynamically updatable here\r\n// So they are converted even when not specified in the passed configuration\r\nvar defaultConfigValues = (_a = {},\r\n _a[_DYN_CONNECTION_STRING /* @min:connectionString */] = UNDEFINED_VALUE,\r\n _a[_DYN_ENDPOINT_URL /* @min:endpointUrl */] = UNDEFINED_VALUE,\r\n _a[_DYN_INSTRUMENTATION_KEY /* @min:instrumentationKey */] = UNDEFINED_VALUE,\r\n _a[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:userOverrideEndpointUrl */] = UNDEFINED_VALUE,\r\n _a.diagnosticLogInterval = cfgDfValidate(_chkDiagLevel, 10000),\r\n _a.featureOptIn = (_b = {},\r\n _b[IKEY_USAGE] = { mode: 3 /* FeatureOptInMode.enable */ },\r\n _b[CDN_USAGE] = { mode: 2 /* FeatureOptInMode.disable */ },\r\n _b[SDK_LOADER_VER] = { mode: 2 /* FeatureOptInMode.disable */ },\r\n _b),\r\n _a.throttleMgrCfg = cfgDfMerge((_c = {},\r\n _c[109 /* _eInternalMessageId.DefaultThrottleMsgKey */] = cfgDfMerge(default_throttle_config),\r\n _c[106 /* _eInternalMessageId.InstrumentationKeyDeprecation */] = cfgDfMerge(default_throttle_config),\r\n _c[111 /* _eInternalMessageId.SdkLdrUpdate */] = cfgDfMerge(default_throttle_config),\r\n _c[110 /* _eInternalMessageId.CdnDeprecation */] = cfgDfMerge(default_throttle_config),\r\n _c)),\r\n _a.extensionConfig = cfgDfMerge((_d = {},\r\n _d[\"AppInsightsCfgSyncPlugin\"] = cfgDfMerge({\r\n cfgUrl: CONFIG_ENDPOINT_URL,\r\n syncMode: 2 /* ICfgSyncMode.Receive */\r\n }),\r\n _d)),\r\n _a);\r\nfunction _chkDiagLevel(value) {\r\n // Make sure we have a value > 0\r\n return value && value > 0;\r\n}\r\n/**\r\n * Application Insights API\r\n * @group Entrypoint\r\n * @group Classes\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar AppInsightsSku = /** @class */ (function () {\r\n function AppInsightsSku(snippet) {\r\n var _this = this;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var dependencies;\r\n var properties;\r\n var _sender;\r\n var _snippetVersion;\r\n var _evtNamespace;\r\n var _houseKeepingNamespace;\r\n var _core;\r\n var _config;\r\n var _analyticsPlugin;\r\n var _cfgSyncPlugin;\r\n var _throttleMgr;\r\n var _iKeySentMessage;\r\n var _cdnSentMessage;\r\n var _sdkVerSentMessage;\r\n dynamicProto(AppInsightsSku, this, function (_self) {\r\n _initDefaults();\r\n objDefine(_self, \"config\", {\r\n g: function () {\r\n return _config;\r\n }\r\n });\r\n arrForEach([\"pluginVersionStringArr\", \"pluginVersionString\"], function (key) {\r\n objDefine(_self, key, {\r\n g: function () {\r\n if (_core) {\r\n return _core[key];\r\n }\r\n return null;\r\n }\r\n });\r\n });\r\n // initialize the queue and config in case they are undefined\r\n _snippetVersion = \"\" + (snippet.sv || snippet[_DYN_VERSION /* @min:%2eversion */] || \"\");\r\n snippet[_DYN_QUEUE /* @min:%2equeue */] = snippet[_DYN_QUEUE /* @min:%2equeue */] || [];\r\n snippet[_DYN_VERSION /* @min:%2eversion */] = snippet[_DYN_VERSION /* @min:%2eversion */] || 2.0; // Default to new version\r\n var cfgHandler = createDynamicConfig(snippet.config || {}, defaultConfigValues);\r\n _config = cfgHandler.cfg;\r\n _analyticsPlugin = new AnalyticsPlugin();\r\n objDefine(_self, \"appInsights\", {\r\n g: function () {\r\n return _analyticsPlugin;\r\n }\r\n });\r\n properties = new PropertiesPlugin();\r\n dependencies = new DependenciesPlugin();\r\n _sender = new Sender();\r\n _core = new AppInsightsCore();\r\n objDefine(_self, \"core\", {\r\n g: function () {\r\n return _core;\r\n }\r\n });\r\n // Will get recalled if any referenced values are changed\r\n _addUnloadHook(onConfigChange(cfgHandler, function () {\r\n var configCs = _config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */];\r\n function _parseCs() {\r\n return createAsyncPromise(function (resolve, reject) {\r\n doAwaitResponse(configCs, function (res) {\r\n var curCs = res && res.value;\r\n var parsedCs = null;\r\n if (!res.rejected && curCs) {\r\n // replace cs with resolved values in case of circular promises\r\n _config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */] = curCs;\r\n parsedCs = parseConnectionString(curCs);\r\n }\r\n // if can't resolve cs promise, null will be returned\r\n resolve(parsedCs);\r\n });\r\n });\r\n }\r\n if (isPromiseLike(configCs)) {\r\n var ikeyPromise = createAsyncPromise(function (resolve, reject) {\r\n _parseCs().then(function (cs) {\r\n var ikey = _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n ikey = cs && cs[_DYN_INSTRUMENTATIONKEY0 /* @min:%2einstrumentationkey */] || ikey;\r\n resolve(ikey);\r\n }).catch(function (e) {\r\n // parseCs will always resolve(unless timeout)\r\n // return null in case any error happens\r\n resolve(null);\r\n });\r\n });\r\n var url = _config[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:%2euserOverrideEndpointUrl */];\r\n if (isNullOrUndefined(url)) {\r\n url = createAsyncPromise(function (resolve, reject) {\r\n _parseCs().then(function (cs) {\r\n var url = _config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */];\r\n var ingest = cs && cs[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */];\r\n url = ingest ? ingest + DEFAULT_BREEZE_PATH : url;\r\n resolve(url);\r\n }).catch(function (e) {\r\n // parseCs will always resolve(unless timeout)\r\n // return null in case any error happens\r\n resolve(null);\r\n });\r\n });\r\n }\r\n _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = ikeyPromise;\r\n _config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = url;\r\n }\r\n if (isString(configCs)) {\r\n // confirm if promiselike function present\r\n // handle cs promise here\r\n // add cases to oneNote\r\n var cs = parseConnectionString(configCs);\r\n var ingest = cs[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */];\r\n _config.endpointUrl = _config[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:%2euserOverrideEndpointUrl */] ? _config[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:%2euserOverrideEndpointUrl */] : ingest + DEFAULT_BREEZE_PATH; // add /v2/track\r\n _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = cs[_DYN_INSTRUMENTATIONKEY0 /* @min:%2einstrumentationkey */] || _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n }\r\n // userOverrideEndpointUrl have the highest priority\r\n _config.endpointUrl = _config[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:%2euserOverrideEndpointUrl */] ? _config[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:%2euserOverrideEndpointUrl */] : _config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */];\r\n }));\r\n _self[STR_SNIPPET /* @min:%2esnippet */] = snippet;\r\n _self[STR_FLUSH /* @min:%2eflush */] = function (async, callBack) {\r\n if (async === void 0) { async = true; }\r\n var result;\r\n doPerf(_core, function () { return \"AISKU.flush\"; }, function () {\r\n if (async && !callBack) {\r\n result = createPromise(function (resolve) {\r\n callBack = resolve;\r\n });\r\n }\r\n var waiting = 1;\r\n var flushDone = function () {\r\n waiting--;\r\n if (waiting === 0) {\r\n callBack();\r\n }\r\n };\r\n arrForEach(_core.getChannels(), function (channel) {\r\n if (channel) {\r\n waiting++;\r\n channel[STR_FLUSH /* @min:%2eflush */](async, flushDone);\r\n }\r\n });\r\n // decrement the initial \"waiting\"\r\n flushDone();\r\n }, null, async);\r\n return result;\r\n };\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */] = function (async) {\r\n if (async === void 0) { async = true; }\r\n arrForEach(_core.getChannels(), function (channel) {\r\n if (channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]) {\r\n channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n }\r\n else {\r\n channel[STR_FLUSH /* @min:%2eflush */](async);\r\n }\r\n });\r\n };\r\n _self.loadAppInsights = function (legacyMode, logger, notificationManager) {\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n if (legacyMode) {\r\n throwUnsupported(\"Legacy Mode is no longer supported\");\r\n }\r\n function _updateSnippetProperties(snippet) {\r\n if (snippet) {\r\n var snippetVer = \"\";\r\n if (!isNullOrUndefined(_snippetVersion)) {\r\n snippetVer += _snippetVersion;\r\n }\r\n if (_self[_DYN_CONTEXT /* @min:%2econtext */] && _self[_DYN_CONTEXT /* @min:%2econtext */].internal) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.snippetVer = snippetVer || \"-\";\r\n }\r\n // apply updated properties to the global instance (snippet)\r\n objForEachKey(_self, function (field, value) {\r\n if (isString(field) &&\r\n !isFunction(value) &&\r\n field && field[0] !== \"_\" && // Don't copy \"internal\" values\r\n arrIndexOf(_ignoreUpdateSnippetProperties, field) === -1) {\r\n if (snippet[field] !== value) {\r\n snippet[field] = value;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n doPerf(_self.core, function () { return \"AISKU.loadAppInsights\"; }, function () {\r\n // initialize core\r\n _core.initialize(_config, [_sender, properties, dependencies, _analyticsPlugin, _cfgSyncPlugin], logger, notificationManager);\r\n objDefine(_self, \"context\", {\r\n g: function () { return properties[_DYN_CONTEXT /* @min:%2econtext */]; }\r\n });\r\n if (!_throttleMgr) {\r\n _throttleMgr = new ThrottleMgr(_core);\r\n }\r\n var sdkSrc = _findSdkSourceFile();\r\n if (sdkSrc && _self[_DYN_CONTEXT /* @min:%2econtext */]) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc = sdkSrc;\r\n }\r\n _updateSnippetProperties(_self[STR_SNIPPET /* @min:%2esnippet */]);\r\n // Empty queue of all api calls logged prior to sdk download\r\n _self.emptyQueue();\r\n _self[STR_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */]();\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF2 /* @min:%2eaddHousekeepingBeforeUnload */](_self);\r\n _addUnloadHook(onConfigChange(cfgHandler, function () {\r\n var defaultEnable = false;\r\n if (_config.throttleMgrCfg[109 /* _eInternalMessageId.DefaultThrottleMsgKey */]) {\r\n defaultEnable = !_config.throttleMgrCfg[109 /* _eInternalMessageId.DefaultThrottleMsgKey */].disabled;\r\n }\r\n if (!_throttleMgr.isReady() && _config.extensionConfig && _config.extensionConfig[_cfgSyncPlugin.identifier] && defaultEnable) {\r\n // set ready state to true will automatically trigger flush()\r\n _throttleMgr.onReadyState(true);\r\n }\r\n var result;\r\n if (!_iKeySentMessage && !_config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */] && isFeatureEnabled(IKEY_USAGE, _config)) {\r\n result = _throttleMgr[_DYN_SEND_MESSAGE /* @min:%2esendMessage */](106 /* _eInternalMessageId.InstrumentationKeyDeprecation */, \"See Instrumentation key support at aka.ms/IkeyMigrate\");\r\n _iKeySentMessage = true;\r\n }\r\n if (!_cdnSentMessage && _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc && _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc.indexOf(\"az416426\") != -1 && isFeatureEnabled(CDN_USAGE, _config)) {\r\n result = _throttleMgr[_DYN_SEND_MESSAGE /* @min:%2esendMessage */](110 /* _eInternalMessageId.CdnDeprecation */, \"See Cdn support notice at aka.ms/JsActiveCdn\");\r\n _cdnSentMessage = true;\r\n }\r\n if (!_sdkVerSentMessage && parseInt(_snippetVersion) < 6 && isFeatureEnabled(SDK_LOADER_VER, _config)) {\r\n result = _throttleMgr[_DYN_SEND_MESSAGE /* @min:%2esendMessage */](111 /* _eInternalMessageId.SdkLdrUpdate */, \"An updated Sdk Loader is available, see aka.ms/SnippetVer\");\r\n _sdkVerSentMessage = true;\r\n }\r\n }));\r\n });\r\n return _self;\r\n };\r\n _self[_DYN_UPDATE_SNIPPET_DEFIN3 /* @min:%2eupdateSnippetDefinitions */] = function (snippet) {\r\n // apply full appInsights to the global instance\r\n // Note: This must be called before loadAppInsights is called\r\n proxyAssign(snippet, _self, function (name) {\r\n // Not excluding names prefixed with \"_\" as we need to proxy some functions like _onError\r\n return name && arrIndexOf(_ignoreUpdateSnippetProperties, name) === -1;\r\n });\r\n };\r\n _self.emptyQueue = function () {\r\n // call functions that were queued before the main script was loaded\r\n try {\r\n if (isArray(_self.snippet[_DYN_QUEUE /* @min:%2equeue */])) {\r\n // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n var length_1 = _self.snippet[_DYN_QUEUE /* @min:%2equeue */].length;\r\n for (var i = 0; i < length_1; i++) {\r\n var call = _self.snippet[_DYN_QUEUE /* @min:%2equeue */][i];\r\n call();\r\n }\r\n _self.snippet[_DYN_QUEUE /* @min:%2equeue */] = undefined;\r\n delete _self.snippet[_DYN_QUEUE /* @min:%2equeue */];\r\n }\r\n }\r\n catch (exception) {\r\n var properties_1 = {};\r\n if (exception && isFunction(exception.toString)) {\r\n properties_1.exception = exception.toString();\r\n }\r\n // need from core\r\n // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n // eLoggingSeverity.WARNING,\r\n // _eInternalMessageId.FailedToSendQueuedTelemetry,\r\n // \"Failed to send queued telemetry\",\r\n // properties);\r\n }\r\n };\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF2 /* @min:%2eaddHousekeepingBeforeUnload */] = function (appInsightsInstance) {\r\n // Add callback to push events when the user navigates away\r\n if (hasWindow() || hasDocument()) {\r\n var performHousekeeping_1 = function () {\r\n // Adds the ability to flush all data before the page unloads.\r\n // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n // Telemetry here will help us analyze how effective this approach is.\r\n // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n // impact on user experience.\r\n // appInsightsInstance.context._sender.triggerSend();\r\n appInsightsInstance[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](false);\r\n // Back up the current session to local storage\r\n // This lets us close expired sessions after the cookies themselves expire\r\n if (isFunction(_self.core[STR_GET_PLUGIN /* @min:%2egetPlugin */])) {\r\n var loadedPlugin = _this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */](PropertiesPluginIdentifier);\r\n if (loadedPlugin) {\r\n var propertiesPlugin = loadedPlugin.plugin;\r\n if (propertiesPlugin && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */] && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager) {\r\n propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager.backup();\r\n }\r\n }\r\n }\r\n };\r\n var added_1 = false;\r\n if (!_houseKeepingNamespace) {\r\n _houseKeepingNamespace = mergeEvtNamespace(_evtNamespace, _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */] && _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */]());\r\n }\r\n // Will be recalled if any referenced config properties change\r\n _addUnloadHook(onConfigChange(_config, function (details) {\r\n var coreConfig = details.cfg;\r\n var analyticsPlugin = appInsightsInstance.appInsights;\r\n var ctx = createProcessTelemetryContext(null, coreConfig, analyticsPlugin.core);\r\n var extConfig = ctx.getExtCfg(analyticsPlugin.identifier || AnalyticsPluginIdentifier);\r\n // As we could get recalled, remove any previously registered event handlers first\r\n _removePageEventHandlers();\r\n var excludePageUnloadEvents = coreConfig.disablePageUnloadEvents;\r\n if (!extConfig.disableFlushOnBeforeUnload) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n if (addPageUnloadEventListener(performHousekeeping_1, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added_1 = true;\r\n }\r\n // We also need to hook the pagehide and visibilitychange events as not all versions of Safari support load/unload events.\r\n if (addPageHideEventListener(performHousekeeping_1, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added_1 = true;\r\n }\r\n // A reactNative app may not have a window and therefore the beforeunload/pagehide events -- so don't\r\n // log the failure in this case\r\n if (!added_1 && !isReactNative()) {\r\n _throwInternal(_core.logger, 1 /* eLoggingSeverity.CRITICAL */, 19 /* _eInternalMessageId.FailedToAddHandlerForOnBeforeUnload */, \"Could not add handler for beforeunload and pagehide\");\r\n }\r\n }\r\n if (!added_1 && !extConfig.disableFlushOnUnload) {\r\n // If we didn't add the normal set then attempt to add the pagehide and visibilitychange only\r\n addPageHideEventListener(performHousekeeping_1, excludePageUnloadEvents, _houseKeepingNamespace);\r\n }\r\n }));\r\n }\r\n };\r\n _self.getSender = function () {\r\n return _sender;\r\n };\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n var unloadDone = false;\r\n var result;\r\n if (isAsync && !unloadComplete) {\r\n result = createPromise(function (resolve) {\r\n // Set the callback to the promise resolve callback\r\n unloadComplete = resolve;\r\n });\r\n }\r\n function _unloadCallback(unloadState) {\r\n if (!unloadDone) {\r\n unloadDone = true;\r\n _initDefaults();\r\n unloadComplete && unloadComplete(unloadState);\r\n }\r\n }\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](isAsync);\r\n _removePageEventHandlers();\r\n _core.unload && _core.unload(isAsync, _unloadCallback, cbTimeout);\r\n return result;\r\n };\r\n proxyFunctions(_self, _analyticsPlugin, [\r\n STR_GET_COOKIE_MGR,\r\n STR_TRACK_EVENT,\r\n STR_TRACK_PAGE_VIEW,\r\n \"trackPageViewPerformance\",\r\n STR_TRACK_EXCEPTION,\r\n \"_onerror\",\r\n STR_TRACK_TRACE,\r\n STR_TRACK_METRIC,\r\n STR_START_TRACK_PAGE,\r\n STR_STOP_TRACK_PAGE,\r\n STR_START_TRACK_EVENT,\r\n STR_STOP_TRACK_EVENT\r\n ]);\r\n proxyFunctions(_self, _getCurrentDependencies, [\r\n STR_TRACK_DEPENDENCY_DATA,\r\n \"addDependencyListener\",\r\n \"addDependencyInitializer\"\r\n ]);\r\n proxyFunctions(_self, _core, [\r\n STR_ADD_TELEMETRY_INITIALIZER,\r\n STR_POLL_INTERNAL_LOGS,\r\n \"stopPollingInternalLogs\",\r\n STR_GET_PLUGIN,\r\n \"addPlugin\",\r\n STR_EVT_NAMESPACE,\r\n \"addUnloadCb\",\r\n \"getTraceCtx\",\r\n \"updateCfg\",\r\n \"onCfgChange\"\r\n ]);\r\n proxyFunctions(_self, function () {\r\n var context = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n return context ? context.user : null;\r\n }, [\r\n STR_SET_AUTHENTICATED_USER_CONTEXT,\r\n STR_CLEAR_AUTHENTICATED_USER_CONTEXT\r\n ]);\r\n // Using a function to support the dynamic adding / removal of plugins, so this will always return the current value\r\n function _getCurrentDependencies() {\r\n return dependencies;\r\n }\r\n function _initDefaults() {\r\n _evtNamespace = createUniqueNamespace(\"AISKU\");\r\n _houseKeepingNamespace = null;\r\n dependencies = null;\r\n properties = null;\r\n _sender = null;\r\n _snippetVersion = null;\r\n _throttleMgr = null;\r\n _iKeySentMessage = false;\r\n _cdnSentMessage = false;\r\n _sdkVerSentMessage = false;\r\n _cfgSyncPlugin = new CfgSyncPlugin();\r\n }\r\n function _removePageEventHandlers() {\r\n // Remove any registered event handlers\r\n if (_houseKeepingNamespace) {\r\n removePageUnloadEventListener(null, _houseKeepingNamespace);\r\n removePageHideEventListener(null, _houseKeepingNamespace);\r\n }\r\n }\r\n function _addUnloadHook(hooks) {\r\n _core.addUnloadHook(hooks);\r\n }\r\n });\r\n }\r\n // Analytics Plugin\r\n// Removed Stub for AppInsightsSku.prototype.getCookieMgr.\r\n// Removed Stub for AppInsightsSku.prototype.trackEvent.\r\n// Removed Stub for AppInsightsSku.prototype.trackPageView.\r\n// Removed Stub for AppInsightsSku.prototype.trackPageViewPerformance.\r\n// Removed Stub for AppInsightsSku.prototype.trackException.\r\n// Removed Stub for AppInsightsSku.prototype._onerror.\r\n// Removed Stub for AppInsightsSku.prototype.trackTrace.\r\n// Removed Stub for AppInsightsSku.prototype.trackMetric.\r\n// Removed Stub for AppInsightsSku.prototype.startTrackPage.\r\n// Removed Stub for AppInsightsSku.prototype.stopTrackPage.\r\n// Removed Stub for AppInsightsSku.prototype.startTrackEvent.\r\n// Removed Stub for AppInsightsSku.prototype.stopTrackEvent.\r\n// Removed Stub for AppInsightsSku.prototype.addTelemetryInitializer.\r\n // Properties Plugin\r\n// Removed Stub for AppInsightsSku.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for AppInsightsSku.prototype.clearAuthenticatedUserContext.\r\n // Dependencies Plugin\r\n// Removed Stub for AppInsightsSku.prototype.trackDependencyData.\r\n // Misc\r\n// Removed Stub for AppInsightsSku.prototype.flush.\r\n// Removed Stub for AppInsightsSku.prototype.onunloadFlush.\r\n// Removed Stub for AppInsightsSku.prototype.loadAppInsights.\r\n// Removed Stub for AppInsightsSku.prototype.updateSnippetDefinitions.\r\n// Removed Stub for AppInsightsSku.prototype.emptyQueue.\r\n// Removed Stub for AppInsightsSku.prototype.pollInternalLogs.\r\n// Removed Stub for AppInsightsSku.prototype.stopPollingInternalLogs.\r\n// Removed Stub for AppInsightsSku.prototype.addHousekeepingBeforeUnload.\r\n// Removed Stub for AppInsightsSku.prototype.getSender.\r\n// Removed Stub for AppInsightsSku.prototype.unload.\r\n// Removed Stub for AppInsightsSku.prototype.getPlugin.\r\n// Removed Stub for AppInsightsSku.prototype.addPlugin.\r\n// Removed Stub for AppInsightsSku.prototype.updateCfg.\r\n// Removed Stub for AppInsightsSku.prototype.evtNamespace.\r\n// Removed Stub for AppInsightsSku.prototype.addUnloadCb.\r\n// Removed Stub for AppInsightsSku.prototype.addDependencyListener.\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n AppInsightsSku.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n// Removed Stub for AppInsightsSku.prototype.getTraceCtx.\r\n// Removed Stub for AppInsightsSku.prototype.onCfgChange.\r\n return AppInsightsSku;\r\n}());\r\nexport { AppInsightsSku };\r\n// tslint:disable-next-line\r\nexport function _findSdkSourceFile() {\r\n if (_internalSdkSrc) {\r\n // Use the cached value\r\n return _internalSdkSrc;\r\n }\r\n var sdkSrc = null;\r\n var isModule = false;\r\n var cdns = [\r\n \"://js.monitor.azure.com/\",\r\n \"://az416426.vo.msecnd.net/\"\r\n ];\r\n try {\r\n // Try and determine whether the sdk is being loaded from the CDN\r\n // currentScript is only valid during initial processing\r\n var scrpt = (document || {}).currentScript;\r\n if (scrpt) {\r\n sdkSrc = scrpt.src;\r\n // } else {\r\n // // We need to update to at least typescript 2.9 for this to work :-(\r\n // // Leaving as a stub for now so after we upgrade this breadcrumb is available\r\n // let meta = import.meta;\r\n // sdkSrc = (meta || {}).url;\r\n // isModule = true;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n if (sdkSrc) {\r\n try {\r\n var url_1 = sdkSrc.toLowerCase();\r\n if (url_1) {\r\n var src_1 = \"\";\r\n arrForEach(cdns, function (value, idx) {\r\n if (strIndexOf(url_1, value) !== -1) {\r\n src_1 = \"cdn\" + (idx + 1);\r\n if (strIndexOf(url_1, \"/scripts/\") === -1) {\r\n if (strIndexOf(url_1, \"/next/\") !== -1) {\r\n src_1 += \"-next\";\r\n }\r\n else if (strIndexOf(url_1, \"/beta/\") !== -1) {\r\n src_1 += \"-beta\";\r\n }\r\n }\r\n _internalSdkSrc = src_1 + (isModule ? \".mod\" : \"\");\r\n return -1;\r\n }\r\n });\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n // Cache the found value so we don't have to look it up again\r\n _internalSdkSrc = sdkSrc;\r\n }\r\n return _internalSdkSrc;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Web, 3.3.0\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_VERSION = \"version\"; // Count: 6\r\nexport var _DYN_QUEUE = \"queue\"; // Count: 6\r\nexport var _DYN_CONNECTION_STRING = \"connectionString\"; // Count: 4\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 5\r\nexport var _DYN_INSTRUMENTATIONKEY0 = \"instrumentationkey\"; // Count: 2\r\nexport var _DYN_USER_OVERRIDE_ENDPOI1 = \"userOverrideEndpointUrl\"; // Count: 6\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 6\r\nexport var _DYN_INGESTIONENDPOINT = \"ingestionendpoint\"; // Count: 2\r\nexport var _DYN_ONUNLOAD_FLUSH = \"onunloadFlush\"; // Count: 6\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 5\r\nexport var _DYN_ADD_HOUSEKEEPING_BEF2 = \"addHousekeepingBeforeUnload\"; // Count: 2\r\nexport var _DYN_SEND_MESSAGE = \"sendMessage\"; // Count: 3\r\nexport var _DYN_UPDATE_SNIPPET_DEFIN3 = \"updateSnippetDefinitions\"; // Count: 2\r\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AngularPlugin } from '@microsoft/applicationinsights-angularplugin-js';\nimport { ApplicationInsights, ITelemetryItem } from '@microsoft/applicationinsights-web';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppInsightsLoggingService {\n\n appInsights: ApplicationInsights;\n\n /** Array of URL segments to be replaced when reporting telemetry to Application Insights */\n urlReplacementPatterns: UrlSegmentPattern[] = [\n { pattern: '(?/(com|aco|ppr|pra)/[a-zA-Z0-9.]+/)', group: 'tierInfo', replacement: '/' },\n { pattern: '(/care/patient(?/[0-9]+))', group: 'carePatient', replacement: '' },\n ];\n\n /** Service for logging app events to Application Insights\n *\n * https://devblogs.microsoft.com/premier-developer/angular-how-to-add-application-insights-to-an-angular-spa/\n */\n constructor(private router: Router) {\n if (environment.appInsights?.connectionString) {\n const angularPlugin = new AngularPlugin();\n this.appInsights = new ApplicationInsights({\n config: {\n connectionString: environment.appInsights.connectionString,\n distributedTracingMode: 2, // DistributedTracingModes.W3C\n disableFetchTracking: false,\n enableCorsCorrelation: true,\n correlationHeaderExcludedDomains: ['*.mixpanel.com'],\n enableRequestHeaderTracking: !environment.production, // request headers include authorization info\n enableResponseHeaderTracking: true,\n extensions: [angularPlugin],\n extensionConfig: {\n [angularPlugin.identifier]: { router: this.router },\n },\n },\n });\n this.appInsights.loadAppInsights().addTelemetryInitializer((item) => this.modifyAppInsightsTelemetry(item));\n }\n }\n\n modifyAppInsightsTelemetry(envelope: ITelemetryItem): void {\n this.replaceUrlSegments(envelope);\n\n envelope.tags['ai.cloud.role'] = environment.appInsights?.cloudRole || 'COACH WEB';\n envelope.tags[\n 'ai.cloud.roleInstance'\n ] = `${environment.environmentId} instance`;\n }\n\n /**\n * Replace segments in the URL that is reported to Application Insights in order to provide more useful routes for tracing\n * @param {ITelemetryItem} envelope Contains data that will be sent to Application Insights\n */\n replaceUrlSegments(envelope: ITelemetryItem): void {\n if (envelope.baseData?.uri != null && envelope.baseType === 'PageviewData') {\n const uri: string = envelope.baseData?.uri;\n const regex = new RegExp(this.urlReplacementPatterns.map(x => x.pattern).join('|'), 'i');\n const result = regex.exec(uri);\n\n if (result?.length > 0 && envelope.ext?.trace?.name && envelope.baseData?.uri) {\n envelope.data.originalUri = uri;\n\n this.urlReplacementPatterns.forEach(pattern => {\n const re = new RegExp(pattern.pattern);\n const matches = re.exec(envelope.ext.trace.name);\n\n if (matches != null) {\n envelope.ext.trace.name = envelope.ext.trace.name.replace(matches.groups[pattern.group], pattern.replacement);\n envelope.baseData.uri = envelope.baseData.uri.replace(matches.groups[pattern.group], pattern.replacement);\n }\n });\n }\n }\n }\n\n logPageView(name?: string, url?: string): void { // option to call manually\n this.appInsights.trackPageView({\n name: name,\n uri: url\n });\n }\n\n logEvent(name: string, properties?: { [key: string]: unknown }): void {\n this.appInsights.trackEvent({ name: name }, properties);\n }\n\n logMetric(name: string, average: number, properties?: { [key: string]: unknown }): void {\n this.appInsights.trackMetric({ name: name, average: average }, properties);\n }\n\n logException(exception: Error, severityLevel?: number): void {\n this.appInsights.trackException({ exception: exception, severityLevel: severityLevel });\n }\n\n logTrace(message: string, properties?: { [key: string]: unknown }): void {\n this.appInsights.trackTrace({ message: message }, properties);\n }\n\n}\n\ninterface UrlSegmentPattern {\n pattern: string;\n group: string;\n replacement: string;\n}\n","import { ErrorHandler, Inject, Injectable, Injector } from '@angular/core';\nimport { CoachException } from '@shared/models/exceptions/coach-exception';\nimport { AppInsightsLoggingService } from './app-insights-logging.service';\nimport { ErrorLoggingService } from './error-logging.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ErrorHandlerService extends ErrorHandler {\n\n /** Custom global error handler to catch any unhandled exceptions */\n constructor(private loggingService: AppInsightsLoggingService, @Inject(Injector) private readonly injector: Injector) {\n super();\n }\n\n // Directly inject error logging service to avoid cyclical dependency error\n // This may warrant further investigation as to why we get this error when injecting this service via the constructor\n // I suspect it may be due to a dependency in the AuthService\n // https://stackoverflow.com/questions/65645124/circular-dependency-in-di-detected-for-applicationref-how-to-fix-it\n private get errorLoggingService(): ErrorLoggingService {\n return this.injector.get(ErrorLoggingService);\n }\n\n /** Catches any unhandled exceptions and logs them to Azure Application Insights. \n * \n * If exception is a {@link CoachException} also calls the Error Log API to log the exception to the CoachSQL database \n */\n handleError(error: Error): void {\n console.error(error);\n this.loggingService.logException(error);\n\n if (error instanceof CoachException) {\n this.errorLoggingService.logError(error.logError).subscribe();\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n type MsgType = {message:string, result:string, url:string, status:number, op:string};\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n messages: MsgType[] = [];\n constructor() { }\n add(message: MsgType) {\n this.messages.push(message);\n }\n top():MsgType {\n return this.messages[this.messages.length-1];\n }\n clear() {\n this.messages = [];\n }\n}\n\n\n/*\nCopyright Google LLC. All Rights Reserved.\nUse of this source code is governed by an MIT-style license that\ncan be found in the LICENSE file at http://angular.io/license\n*/\n","import { Injectable } from '@angular/core';\nimport { MixpanelService } from '../mixpanel.service';\nimport { Router } from '@angular/router';\n\nconst LinkClickedEventId = 'Link Clicked';\n\n// These patterns are used to remove tierId and patientId from the url\n// Copied from similar logic found in AppInsights processing\nconst urlReplacementPatterns = [\n {\n pattern: '(?/(aco|com|ppr|pra)/[a-zA-Z0-9.]+/)',\n group: 'tierId',\n replacement: '/'\n },\n {\n pattern: '(/care/patient(?/[0-9]+))',\n group: 'patientId',\n replacement: ''\n }\n];\n\nexport interface LinkClickedEventProperties {\n linkText: string;\n //href minus the domain, tierId, and patientId and query params\n targetPage?: string;\n //url of the page of link minus the domain, tierId, and patientId and query params\n sourcePage?: string;\n //id of the link - if it has one\n linkId?: string;\n //section of the page where the link is located - arbitrary at the moment. Still need to define or remove \n //waiting for feedback from Jenna\n sourceSection?: string;\n //subsection of the page where the link is located - arbitrary at the moment. Still need to define or remove\n sourceSubSection?: string;\n //filter preset that was applied to the care/patient page. filterPreset values are not consistent across the app\n filterPreset?: string;\n //status of the AWV patients filter on the care/patient page\n AWVPatientsStatus?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LinkClickedEventsService {\n constructor(private mixpanelService: MixpanelService, private router: Router) {}\n\n /**\n * Send link click event to MixPanel\n */\n public sendLinkClickedEvent(props: LinkClickedEventProperties): void {\n try {\n const sourcePage = this.parseSourcePage(this.router.url);\n\n this.mixpanelService.track(LinkClickedEventId, {\n ...props,\n sourcePage\n });\n } catch (error) {\n //\n console.error('Error sending data to Mixpanel', error);\n }\n }\n\n // extracted from similar function in app-insights.service.ts\n // TODO: refactor to share code\n // TODO: add unit tests\n /**\n *\n * @param path\n * @returns The path with tierId and patientId segments replaced\n */\n private parseSourcePage(url: string): string {\n let path = url.split('?')[0];\n\n urlReplacementPatterns.forEach(pattern => {\n const re = new RegExp(pattern.pattern);\n const matches = re.exec(path);\n if (matches != null) {\n path = path.replace(matches.groups[pattern.group], pattern.replacement);\n }\n });\n\n return path;\n }\n}\n","import { Injectable } from '@angular/core';\nimport * as mixpanel from 'mixpanel-browser';\nimport { environment } from '../../../../environments/environment';\n/**\n * Mixpanel service\n *\n * @export\n * @class MixpanelService\n * @see https://docs.mixpanel.com/docs/tracking/reference/javascript\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MixpanelService {\n /**\n * Mixpanel initialization\n * @param projectToken this will need to be per environment\n * @param debug\n * @param pageViews\n */\n init(projectToken: string, debug: boolean, pageViews: boolean): void {\n mixpanel.init(projectToken, { debug, track_pageview: pageViews, persistence: 'localStorage' });\n }\n\n /**\n * Track an event with Mixpanel and send properties\n * @param id the id of the element to track\n * @param event any additional event properties to pass to Mixpanel\n */\n track(id: string, event: any = {}): void {\n mixpanel.track(id, event);\n }\n\n /**\n * Track a link click with Mixpanel\n * @param id A valid DOM query selector\n * @param eventName Name of the event to send to Mixpanel\n * @param properties Any additional properties to send to Mixpanel\n */\n trackLink(id: string, eventName: string, properties: any = {}): void {\n mixpanel.track_links(id, eventName, properties);\n }\n\n /**\n * Track a form submission with Mixpanel.\n * This function will wait up to 300ms for the mixpanel servers to respond.\n * @param id A valid DOM query selector\n * @param eventName Name of the event to send to Mixpanel\n * @param properties Any additional properties to send to Mixpanel\n */\n trackForm(id: string, eventName: string, properties: any = {}): void {\n mixpanel.track_forms(id, eventName, properties);\n }\n\n /**\n rackForm(id: string, eventName: string, properties: any = {}): void {\n if (this.isEnabled()) {\n mixpanel.track_forms(id, eventName, properties);\n }\n } * Idenfitify a user with Mixpanel\n * @param id the id of the user to identify\n */\n identify(id: string): void {\n mixpanel.identify(id);\n }\n\n /**\n * Set properties on a user record.\n * @param properties A set of properties to describe the current user\n */\n userSet(properties: { [key: string]: any }): void {\n mixpanel.people.set(properties);\n }\n\n /**\n * Set properties on a user record, only if they do not yet exist.\n * This will not overwrite previous people property values, unlike\n * people.set().\n * @param properties A set of properties to describe the current user\n */\n userSetOnce(properties: { [key: string]: any }): void {\n mixpanel.people.set_once(properties);\n }\n\n /**\n * Reset the mixpanel super properties and allow user to re-identify\n * Called on logout\n */\n reset(): void {\n mixpanel.reset();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { wpapi } from \"@hcd-caravanhealth/pkg-wptypes\";\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { AuthService } from '../auth-service/auth.service';\nimport moment from 'moment';\nimport _ from 'lodash';\nimport { Protocol, Module } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/protocol';\nimport { Task } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/task.base';\nimport { Completion } from '../patient/patient.service';\nexport class IProtocol implements Protocol{\n name: string;\n isActive: boolean;\n isModuleSelectorIsOpen?: boolean;\n isSelected?: boolean;\n modules?: any[] // for some reason modules is Array<{protocolId: string;}>\n tasks?: Task[]\n}\nexport class IModule implements Module {\n isActivatedBySystemOnly: boolean;\n isAvailable?: boolean;\n protocolId?: string;\n protocolLineage?: string[];\n state?: string;\n stateHistory?: any[];\n isNotAssignable: boolean;\n assignByDefault: boolean;\n name: string;\n isActive: boolean;\n}\n@Injectable({\n providedIn: 'root'\n})\n\nexport class OrgService {\n wpBaseURL: string = environment.wpApiUrl;\n trackBaseURL: string = environment.trackApiUrl;\n // REVIEW - seems like this pattern could be genericized\n orgsLocalStorage: {[id:string]:Promise} = {};\n protocolsByOrgLocalStorage: {[orgId:string]:Promise>} = {};\n professionalsByOrgLocalStorage: {[orgId:string]:Promise>} = {};\n modulesLocalStorage: any = {};\n\n constructor(private http: HttpClient,\n private _authService: AuthService) {\n }\n\n /**\n * Helper function to do HTTP get and\n * translate 404s to null (rather than throwing an exception)\n */\n async getHelper(url:string):Promise {\n const headers = {\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n };\n\n return new Promise((resolve, reject) => {\n this.http.get(url, { headers: headers }).subscribe({\n next: (result) => { resolve(result); },\n error: (err:HttpErrorResponse) => {\n if (err.status === 404) {\n resolve(null);\n } else {\n reject(err);\n }\n }});\n });\n }\n\n async getOrg(orgId: string):Promise {\n if(this.orgsLocalStorage[orgId]){\n const org = await this.orgsLocalStorage[orgId];\n return _.cloneDeep(org);\n }\n\n const url = `${this.wpBaseURL}/orgs/${orgId}`;\n const promise = this.getHelper(url);\n this.orgsLocalStorage[orgId] = promise;\n return promise.then(x=>_.cloneDeep(x));\n }\n\n async getProtocolsForOrg(orgId: string):Promise> {\n if (this.protocolsByOrgLocalStorage[orgId]) {\n const protocols = await this.protocolsByOrgLocalStorage[orgId];\n return _.cloneDeep(protocols);\n }\n const url = `${this.wpBaseURL}/orgs/${orgId}/protocols`;\n const promise = this.getHelper>(url);\n this.protocolsByOrgLocalStorage[orgId] = promise;\n return promise.then(x=>_.cloneDeep(x));\n }\n async getProfessionalsForOrg(orgId: string): Promise {\n if(this.professionalsByOrgLocalStorage[orgId]){\n const professionals = await this.professionalsByOrgLocalStorage[orgId];\n return _.cloneDeep(professionals);\n }\n const url = `${this.wpBaseURL}/orgs/${orgId}/pros`;\n const promise = this.getHelper(url);\n this.professionalsByOrgLocalStorage[orgId] = promise;\n return promise.then(x=>_.cloneDeep(x));\n }\n\n\n async getModuleName(moduleId: string) {\n if(this.modulesLocalStorage[moduleId]){\n return _.cloneDeep(this.modulesLocalStorage[moduleId])\n }\n let headers = {\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n };\n let url = `${this.wpBaseURL}/protocols/${moduleId}`;\n let protocol = await this.http.get(url, { headers: headers }).toPromise();\n this.modulesLocalStorage[moduleId] = protocol\n return _.cloneDeep(protocol)\n }\n \n async getTimeTrackingEventsForOrg(orgId: string, startDate: string, endDate: string, patientDetails: boolean, professionalDetails: boolean): Promise<{count: number, events: (wpapi.model.TimeTrackingEvent & any)[], patients: wpapi.model.Patient[], professionals: wpapi.model.Professional[]}> {\n let options = {\n headers:{\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n },\n params: {\n patientDetails: patientDetails ? \"1\" : \"0\",\n professionalDetails: professionalDetails ? \"1\" : \"0\"\n }\n }\n\n let url = `${this.wpBaseURL}/orgs/${orgId}/timeTrackingEvents?startDate=${moment(startDate).format(\"YYYY-MM-DD\")}&endDate=${moment(endDate).format(\"YYYY-MM-DD\")}`; // date format yyyy-MM-dd\n let timeTrackingEvents = await this.http.get(url, options).toPromise() as Promise<{count: number, events: (wpapi.model.TimeTrackingEvent)[], patients: wpapi.model.Patient[], professionals: wpapi.model.Professional[]}>;\n return timeTrackingEvents\n }\n async getTasksByOrg(orgId: string, taskType?: string): Promise {\n let url = `${this.wpBaseURL}/orgs/${orgId}/tasks/${taskType}`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n\n try {\n return (await this.http.get(url, options).toPromise()) as Promise;\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n alert('Failed to get tasks by org - API call failed: ' + e.message || e.status);\n }\n // this.ToastrMessageService.error(e);\n console.error(e);\n }\n };\n async getCompletionsByOrg(orgId: string, taskType?: string): Promise {\n let url = `${this.wpBaseURL}/orgs/${orgId}/completions/${taskType}`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n\n try {\n return await this.http.get(url, options).toPromise();\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n alert('Failed to get completions by org - API call failed: ' + e.message || e.status);\n }\n // this.ToastrMessageService.error(e);\n console.error(e);\n }\n };\n\n /** Get protocol object by id. Get all the tasks flattened (from subprotocols) */\n async getProtocol(protocolId: string): Promise {\n const url = `${this.wpBaseURL}/protocols/${protocolId}?expanded=true`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n return (await this.http\n .get(url, options)\n .toPromise()) as Promise;\n }\n}\n","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { UserActivity } from '@shared/models/user-activity';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { environment } from 'src/environments/environment';\nimport { common as wp, wpapi } from '@hcd-caravanhealth/pkg-wptypes';\nimport { format } from 'date-fns';\nimport { UserInfo } from '@shared/services/auth-service/auth-interface';\nimport { Patient } from '@shared/models/patient';\nimport {\n PatientIHEFileInfo,\n PatientIHEFilesNote,\n PatientIHEFileType,\n AssessmentFileTypes\n} from '@shared/models/patient-ihe-data';\n\nimport * as _ from 'lodash';\nimport moment from 'moment';\n\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport { HierarchyTierService } from '../hierarchy/hierarchy-tier.service';\nimport { CaravanPatient, PatientSnfInfo } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/user';\nimport { ITrackAPIParams, IWPAPIParams } from '@shared/models/patient-filters';\n\nimport { downloadFile } from '@shared/utilities';\nimport { note } from '@shared/modules/patient-facesheet/tabs/patient-ihe-worklist/patient-ihe-worklist.component';\nimport { IEmailTemplate } from '@hcd-caravanhealth/pkg-wptypes/dist/src/models/emailTemplate';\nimport { DiseaseCohortDefinition } from 'src/app/api/track/models/disease-cohort-definition';\nimport { AwvWorkflowStatuses } from 'src/app/api/care-orch/models/awv-workflow-statuses';\n\n/** 2020-09-26 Reverse-engineered from patient list call */\nexport interface ITrackApiPatientListApiResult {\n totalRecords: number;\n results: Array;\n}\n\nexport interface ITrackApiCohortPatientListApiResult {\n totalRecords: number;\n results: Array;\n}\n\nexport interface ITrackApiEdUtilizationPatientListApiResult {\n totalRecords: number;\n results: Array;\n}\n\nexport class CareOrgNotFoundError extends Error {\n constructor(message) {\n super(message);\n }\n}\n\nenum PatientNoteType {\n PatientNoteTypeIHAWV = 1\n}\n\nexport interface ITimeTrackingEvent {\n activity: string;\n start: string;\n durationSeconds?: number;\n /** caravan patient id not wellpepper user id */\n patientId?: string;\n /** wellpepper provider id */\n providerId?: string;\n providerName?: string;\n source?: 'direct' | 'timer';\n notes?: string;\n _id?: string;\n createdAt?: string;\n createdBy?: string;\n createdByName?: { firstName: string; lastName: string };\n}\n\nexport interface ITrackApiPatient {\n chPatId?: string;\n firstName?: string;\n lastName?: string;\n preferredName?: string;\n gender?: 'Male' | 'Female' | 'Unknown';\n /** MM/DD/YYYY */\n dob?: string;\n mbi?: string;\n phone1?: string;\n phone1_Type?: string;\n phone2?: string;\n phone2_Type?: string;\n email?: string;\n acO_Name?: string;\n tier2_ID?: string;\n tier2_Name?: string;\n tier3_ID?: string;\n tier3_Name?: string;\n tier4_ID?: string;\n tier4_Name?: string;\n tier5_ID?: string;\n tier5_Name?: string;\n /** \"Attributed\" */\n assignment?: string;\n currentRiskLevel?: string;\n predictedRiskLevel?: string;\n probability?: number;\n riskTrend?: string;\n ssDenom?: number;\n enrollmentType?: string;\n dod?: string;\n dodBoolean?: string;\n demographicWt?: string;\n raF_YTD?: number;\n openRAFWt?: number;\n supplementalID?: number;\n attributedCP?: string;\n attributedCp?: string;\n ccmEligible?: string;\n diseaseCohortIDs?: number[];\n diseaseCohorts?: string[];\n totalCost?: number;\n awvTypeDue?: string;\n lastAWVDate?: string;\n lastAwvProvider?: string;\n edVisits?: number;\n hccGapCount?: number;\n attributedCPTier?: number;\n attributedCpTier?: string;\n pyRaf?: number;\n lastVisit?: Date;\n middleName?: string;\n attributionStatus?: string;\n renderingProviderName?: string;\n renderingProviderNpi?: string;\n lastExportDateTime?: string;\n lastUpdateDateTime?: string;\n lastExportUserName?: string;\n lastExportUserId?: number;\n fileInfo?: PatientIHEFileInfo[];\n IHEAWVVisitDate?: string;\n awvStatusId?: number;\n visitInfo?: ITrackApiIHEFilesListVisitInfo;\n lastCCMDateAndCode?: string;\n inpatientVisits?: number;\n officeVisits?: number;\n lastCCMDate?: string;\n ccmLastProcCode?: string;\n lastCcmDate?: string;\n statusDate?: string;\n ihAwvPatient?: number;\n lastCsthDate?: Date;\n hasFacesheet?: number;\n}\n\nexport interface IIHEAWVPatient {\n acoId: string;\n apptStartTime: string;\n attributedCp: string;\n attributedCpTier: number;\n awvTypeDue: string;\n ccmEligible: number;\n ccmLastProcCode: string;\n ccnType: string;\n chPatId: number;\n clinicProviderName: string;\n clinicProviderNpi: string;\n clinicProviderPhone: string;\n currentRiskLevel: string;\n deepestStatusCode: number;\n deepestStatusCodeDesc: string;\n deepestStatusType: string;\n demographicWt: number;\n diseaseCohortIds: string;\n dob: string;\n dos: any;\n edVisits: number;\n evalProviderName: string;\n evalProviderNpi: any;\n evaluationOpReportId: number;\n firstName: string;\n fullName: string;\n hccGapCount: number;\n lastAwvDate: any;\n lastAWVProvider?: string;\n lastAwvDateOpReport: string;\n lastCcmDate: any;\n lastName: string;\n lastVisit: string;\n mbi: string;\n mbrAddressLine1: string;\n mbrAddressLine2: string;\n mbrCity: string;\n mbrCounty: string;\n mbrGender: string;\n mbrHomePhone: string;\n mbrPreferredLanguage: string;\n mbrState: string;\n mbrTelephone: string;\n mbrZip: string;\n opStatusLastUpdateDateTime: any;\n openRafWt: number;\n outreachCallDateTime: string;\n outreachDoNotCall: string;\n outreachSchedulingCode: number;\n outreachSchedulingDesc: string;\n outreachSchedulingStatus: string;\n predictedRiskLevel: string;\n previousYearDos: string;\n probability: number;\n programYear: number;\n pyRaf: number;\n rafYtd: number;\n reportDate: string;\n riskTrend: string;\n tier1Id: string;\n tier1Name: string;\n tier2Id: string;\n tier2Name: string;\n tier3Id: string;\n tier3Name: string;\n tier4IdCcn: string;\n tier4IdGrpId: string;\n tier4IdTin: string;\n tier4Name: string;\n tier5Id: string;\n tier5Name: string;\n tmlName: string;\n totalCost: number;\n assignment?: string;\n diseaseCohorts?: string[];\n awvStatusId?: number;\n}\n\nexport interface ITrackCohortPatient {\n current_MBI?: string;\n firstName?: string;\n lastName?: string;\n dob?: string;\n email?: string;\n phone1?: string;\n phone1_Type?: string;\n phone2?: string;\n phone2_Type?: string;\n zipCode?: string;\n genderCode?: string;\n genderStr?: string;\n cohortId?: number;\n cohort?: string;\n cohortDesc?: string;\n cohortMonthYear?: string;\n patCohortAddDateTime?: string;\n raF_YTD?: number;\n chPatID?: number;\n supplementalID?: number;\n totalSpend?: number;\n attributedCP?: string;\n assignment?: string;\n currentRiskLevel?: string;\n predictedRiskLevel?: string;\n probability?: number;\n riskTrend: string;\n ccmEligible?: number;\n hccGapCount?: number;\n diseaseCohorts: string[];\n diseaseCohortIDs?: number[];\n lastVisit?: Date;\n openRAFWt?: number;\n tier4_Name?: string;\n awvTypeDue?: string;\n lastAWVDate?: string;\n edVisits?: number;\n pyRaf?: number;\n cohortProcedure_LastDate?: string;\n cohortSpecialist_LastProviderName?: string;\n cohortSpecialist_LastDate?: string;\n cohortDxCount?: number;\n officeVisits?: number;\n inpatientVisits?: number;\n isMostImpactable?: string;\n alignToClinical?: string;\n lastCCMDateAndCode?: string;\n lastCcmDate?: string;\n ccmLastProcCode?: string;\n lastCsthDate?: Date;\n}\nexport interface ITrackCareManagementPatient {\n attributedCp?: string;\n attributedCpTier?: number;\n awvTypeDue?: string;\n ccmEligible?: string;\n chPatId?: string;\n chronicConditionList?: string;\n cohortDxCount?: number;\n cohortProcedure?: string;\n cohortProcedureLastCode?: string;\n cohortProcedureLastDate?: string;\n cohortSpecialist?: string;\n cohortSpecialistLastDate?: string;\n assignment: string;\n cohortSpecialistLastProviderName?: string;\n cohortSpecialistLastProviderNpi?: string;\n currentMbi?: string;\n currentRiskLevel?: string;\n dateOfBirth?: string;\n diseaseCohorts?: string[];\n edVisits?: number;\n enrollmentStatus?: string;\n firstName?: string;\n genderCode?: string;\n genderStr?: string;\n hccGapCount?: number;\n inpatientVisits?: number;\n lastAwvDate?: string;\n lastCcmCode?: string;\n lastCcmDate?: string;\n ccmLastProcCode?: string;\n lastName?: string;\n lastProvVisitCode?: string;\n lastProvVisitDate?: string;\n officeVisits?: number;\n predictedRiskLevel?: string;\n pyRaf?: number;\n ssDenom?: number;\n ssPercent?: number;\n supplementalId?: string;\n totalGapWt?: number;\n totalSpend?: number;\n ytdRaf?: number;\n alignToClinical?: string;\n tier4Name: string;\n lastCsthDate?: Date;\n}\nexport interface ITrackApiEdUtilizationPatient {\n mbi: string;\n patientName: string;\n dob: string;\n age: string;\n gender: string;\n attributedCP: string;\n lastVisit: Date;\n pyRaf: number;\n chPatID: number;\n supplementalID: number;\n totalCost: number;\n edVisits: number;\n email?: string;\n assignment?: string;\n currentRiskLevel?: string;\n predictedRiskLevel?: string;\n probability?: number;\n riskTrend: string;\n ccmEligible?: string;\n hccGapCount?: number;\n diseaseCohorts: string[];\n diseaseCohortIDs?: number[];\n raF_YTD?: number;\n openRAFWt?: number;\n tier4_Name?: string;\n phone1?: string;\n awvTypeDue?: string;\n lastAWVDate?: string;\n}\n\nexport interface ITrackApiAwvPatient {\n chPatID: number;\n chPatId: number;\n supplementalID: number;\n mbi: string;\n patientName: string; //\"CLARK, DANIEL \",\n dob: string;\n age: number;\n gender: 'Male' | 'Female' | 'Unknown';\n attributedCP: string;\n lastAWVDate: string;\n allAWVPatientsListStatus?: string;\n enrollmentDate: string;\n awvTypeDue: string;\n pyRaf: number;\n awvStatusDisplay: string;\n awvDateDue: string;\n lastAwvProvider?: string;\n awvStatusId?: number;\n scheduleID: string;\n scheduleDate: string;\n hasNotes: boolean;\n email?: string;\n assignment: string;\n currentRiskLevel?: string;\n predictedRiskLevel?: string;\n probability?: number;\n hccGapCount?: number;\n riskTrend: string;\n ccmEligible?: string;\n diseaseCohorts: string[];\n diseaseCohortIDs?: number[];\n raF_YTD?: number;\n lastVisit?: Date;\n openRAFWt?: number;\n tier5_Name?: string;\n tier5_ID?: string;\n tier4_Name?: string;\n tier4_ID?: string;\n tier3_ID?: string;\n tier2_ID?: string;\n totalCost?: number;\n phone1?: string;\n ssDenom?: number;\n enrollmentType?: string;\n lastCCMDateAndCode?: string;\n edVisits?: string;\n inpatientVisits?: number;\n officeVisits?: number;\n lastCcmDate?: string;\n ccmLastProcCode?: string;\n firstName?: string;\n lastName?: string;\n statusDate?: string;\n preferredName?: string;\n ihAwvPatient?: number;\n lastCsthDate?: Date;\n\n coWorkflowStatus?: AwvWorkflowStatuses;\n coWorkflowDueDate?: string;\n coWorkflowScheduledDate?: string;\n coWorkflowCompletedDate?: string;\n awvJson?: AWVJsonData[];\n rankedLastAwvDate?: string;\n rankedLastAwvDateSource?: string;\n hasFacesheet?: number;\n}\nexport interface AWVJsonData {\n Date: string;\n Source: string;\n Provider: string;\n EHRTierNumber: string;\n EHRTierID: string;\n EHRTierName: string;\n}\n// TODO - move this back to pkg-wptypes once the interface has settled down enough\nexport interface IWPAPIPatient extends wpapi.model.CaravanPatient {\n alerts?: Array;\n diastolic?: number;\n gain?: string;\n bloodSugar: any;\n lastActivityAt?: string;\n professionalName?: string;\n pulse?: number;\n systolic?: number;\n weight?: number;\n status?: string;\n alert?: string;\n enrollmentDate?: Date;\n lastResponseDate?: Date;\n lastCsthDate?: Date;\n}\n\n/**\n * From GET /ihawv/patientIheVisitList\n * NOTE these represent visits, not patients\n */\nexport interface ITrackApiIHEFilesListVisitInfo {\n // tierId: string;\n\n visitId: string;\n evaluationId: string;\n /** UTC? Use only the date part? */\n visitDate: string;\n visitStatus: string;\n visitStatusCode?: number;\n visitStatusDescription: string;\n\n patientInfo: ITrackApiPatient;\n renderingProviderName?: string;\n fileStatus: string;\n fileInfo: Array;\n}\n\nexport interface EpisodeOfCareViewModel extends wpapi.model.EpisodeOfCare {\n protocols?: Array;\n unattachedTasks?: Array;\n}\nexport interface IProcedure extends wpapi.model.Procedure {\n protocols?: Array;\n}\nexport interface EpisodeOfCareProtocolAssignmentViewModel extends wpapi.model.EpisodeOfCareProtocolAssignment {\n protocol?: wpapi.model.Protocol;\n tasks?: Array;\n modules: Array;\n isActive?: boolean;\n isOpen?: boolean;\n activeTaskCount?: number;\n parentEpisodeOfCare?: EpisodeOfCareViewModel;\n invitations?: {\n welcomeMail?: IEmailTemplate;\n };\n _id?: string;\n}\n\nexport interface EpisodeOfCareModuleAssignmentViewModel extends wpapi.model.EpisodeOfCareModuleAssignment {\n protocol?: wpapi.model.Protocol;\n templateTasks?: Array;\n assignedTasks?: Array;\n isActive?: boolean;\n isOpen?: boolean;\n activeTaskCount?: number;\n parentProtocol?: EpisodeOfCareProtocolAssignmentViewModel;\n}\nexport interface TaskViewModel extends wpapi.model.Task {\n swimlane: 'once' | 'daily' | 'weekly' | 'monthly';\n}\n\nexport interface ProtocolTaskViewModel extends wpapi.model.ProtocolTask {\n swimlane?: 'once' | 'daily' | 'weekly' | 'monthly';\n _id?: string;\n userId?: string;\n protocolId?: string;\n}\nexport interface CarePlanViewModel {\n episodesOfCare: Array;\n moduleActivateDeactivateInfo: ModuleActivateDeactivateDialogViewModel;\n}\n\nexport interface ModuleActivateDeactivateDialogViewModel {\n module?: EpisodeOfCareModuleAssignmentViewModel;\n operation?: 'Assign' | 'Activate' | 'Deactivate';\n tasksToAssign?: Array;\n tasksNotToBeDeactivated?: Array;\n tasksToActivate?: Array;\n tasksToLeaveAlone?: Array;\n tasksToBeDeactivated?: Array;\n protocolTasksToAssign?: Array;\n protocolTasksToActivate?: Array;\n protocolTasksToBeDeactivated?: Array;\n protocolTasksNotToBeDeactivated?: Array;\n protocolTasksToLeaveAlone?: Array;\n protocol?: wpapi.model.Protocol;\n modulesToActivate?: EpisodeOfCareModuleAssignmentViewModel[];\n modulesToBeDeactivated?: EpisodeOfCareModuleAssignmentViewModel[];\n modulesToLeaveAlone?: EpisodeOfCareModuleAssignmentViewModel[];\n}\nexport interface ITrackApiIHEBillingListVisitInfo {\n mbi: string; //MBI\n chPatId: string;\n firstName: string;\n lastName;\n string;\n fullName: string; //Name\n mbrDob: string; // DOB\n mbrGender: 'M' | 'F' | 'Unknown'; //Gender\n mbrPhone: string; //Phone\n mbrAddressLine1: string; //Address\n mbrAddressLine2: string; //Address\n mbrCity: string; //Address\n mbrState: string; //Address\n mbrZip: string; //Address\n mbrCounty: string; //Address\n reportDate: string; //Batch Date\n cptCode: string; //CPT Code\n dxCount: number; //DX count\n rafYtd: number; //Chronic Condition Weight Closed YTD\n renderingProviderLastName: string; //Rendering Provider\n renderingProviderFirstName: string; //Rendering Provider\n lastCcmDate?: string; //Last CCM Date\n lastAwvDate: string;\n ccmEligible: number; //CCM Elligible\n hccGapCount: number; //HCC Closure Gaps\n predictedRiskLevel: string; //Predicted Risk Category\n chronicConditions: string; //Chronic Conditions\n totalCost: number; //Health Care Costs\n lastProviderVisit: string; //Last Provider visit\n edVisits: number; //Ed Utilization\n openRafWt: number; //Total Gap Weight\n attributedCp: string; //Attributed Care Provider\n facilityName: string; //Rendering Provider\n dos: string; // Visit Date\n frequencyType: string;\n}\n\nexport interface SurveyResponse extends wpapi.model.SurveyResponse {\n responses?: { [key: string]: any };\n}\nexport interface Completion extends wpapi.model.Completion {\n weight?: number;\n event?: any;\n}\nexport interface UserSurvey extends wpapi.model.UserSurvey {\n pages?: any;\n name?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PatientService {\n wpBaseURL: string = environment.wpApiUrl;\n trackBaseURL: string = environment.trackApiUrl;\n apiBaseUrl: string = environment.apiBaseUrl;\n\n // userToken: string = '';\n user: UserInfo;\n idpUserToken: string = '';\n auditBaseURL: string;\n\n /** Caches mapping from tier ids to the org id. Typically multiple tierIds map to a single orgId\n * e.g. a community and all it's practices.\n */\n private tierIdToOrgIdMap: { [tierId: string]: Promise } = {};\n /** Caches mapping from an org to it's main tierId. This is a 1-1 mapping */\n private orgIdToTierIdMap: { [orgId: string]: string } = {};\n diseaseCohortDefinitions: DiseaseCohortDefinition[] = [];\n constructor(\n private http: HttpClient,\n private _authService: AuthService,\n private HierarchyTierService: HierarchyTierService,\n private ToastrMessageService: ToastrMessageService\n ) {\n this.idpUserToken = this._authService.idp_access_token;\n }\n\n async getWellpepperPatients(\n tierId: string,\n sort: string,\n filter: string,\n wpapiPArams: IWPAPIParams = {}\n ): Promise> {\n try {\n // TODO - use the request interceptor to inject the tokend\n let headers = {\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey\n };\n\n let orgId = await this.getWpOrgIdFromTierId(tierId);\n if (!orgId) {\n return [];\n }\n\n let url = `${this.wpBaseURL}/orgs/${orgId}/patients2`;\n const options = {\n headers: headers,\n params: {\n ...{\n filter: filter || null,\n order: sort || null\n },\n ...wpapiPArams\n }\n };\n return await this.http.get>(url, options).toPromise();\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n async getTrackPatients(\n tierNum: number,\n TierId: string,\n trackApiParams: ITrackAPIParams = {}\n ): Promise {\n let url = `${this.trackBaseURL}/Patients/list`;\n const TierNum: string = tierNum.toString();\n const options: { [key: string]: any } = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: { ...{ TierNum, TierId }, ...trackApiParams }\n };\n try {\n return await this.http.get(url, options).toPromise();\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n throw e;\n }\n }\n\n getCareManagementPatients(\n tierNum: number,\n tierId: string,\n cohortId: number\n ): Observable {\n const url = `${this.trackBaseURL}/Patients/careManagement`;\n const TierNum: string = tierNum.toString();\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: { ...{ TierNum, TierId: tierId, CohortId: cohortId } }\n };\n\n return this.http.get(url, options).pipe(\n catchError(error => {\n if (environment.production) {\n // TODO - need to decide what to display\n this.ToastrMessageService.error(error);\n }\n console.error(error);\n throw error;\n })\n );\n }\n /** Get the tierId the org. This is the tierId that the org is mapped to. */\n getTierIdFromWpOrgId(orgId: string) {\n return this.orgIdToTierIdMap[orgId];\n }\n\n /** Return the tierID that's mapped to a Wellpepper org, even if I'm looking at\n * a child node.\n * E.g. getWpMappedTierIdFromTierId(\"OR13.01\") => \"OR13\"\n */\n async getWpMappedTierIdFromTierId(tierId: string) {\n const orgId = await this.getWpOrgIdFromTierId(tierId);\n if (!orgId) {\n return null;\n }\n return this.getTierIdFromWpOrgId(orgId);\n }\n async getWpMappedTierNumFromTierId(tierId: string) {\n // currently we support only tierNum 2\n // TODO (in some near future) rebuild this function\n return 2;\n }\n\n /** Get the related Wellpepper organization for patient engagement\n * This might not be the tier passed in.\n * REVIEW - this could use a unit test but may need refactoring for testability\n */\n async getWpOrgIdFromTierId(tierId: string) {\n // console.debug(\"getWpOrgIdFromTierId \" + tierId);\n\n // Don't get the result directly from the API, need to traverse up the hierarchy\n // const orgId = await this.getOrgIdFromWellpepperApi(tierId);\n // if (typeof orgId !== \"undefined\") {\n // return orgId;\n // }\n\n const item = await this.HierarchyTierService.hierarchyTierItemFromId(tierId);\n if (!item) {\n // console.debug(`getWpOrgIdFromTierId ${tierId} - no hierarchy TierItem`)\n // Probably not initialized yet.\n return null;\n }\n\n const tierIds = [item.tier1_ID, item.tier2_ID, item.tier3_ID, item.tier4_ID].filter(x => !!x);\n\n let currentTierIndex = tierIds.findIndex(x => x === tierId);\n if (currentTierIndex < 0) {\n // console.debug(`getWpOrgIdFromTierId(${tierId}) - not found in hierarchyTiers`)\n throw new CareOrgNotFoundError(\n `getWpOrgIdFromTierId: tierId ${tierId} is not present in HierarchyTierService.hierarchyTiers`\n );\n }\n\n // REVIEW - there's a bit of a race condition here - would be good to refactor this some more so that\n // multiple requests aren't submitted when this function is called asynchronously several times.\n // console.debug(`getWpOrgIdFromTierId(${tierId}) starting from index ${currentTierIndex}`)\n while (currentTierIndex >= 0) {\n const currentTierId = tierIds[currentTierIndex];\n // console.debug(`getWpOrgIdFromTierId(${tierId}) processing ${currentTierId}`);\n let orgId = await this.getOrgIdFromWellpepperApi(currentTierId);\n if (orgId) {\n // console.debug(`getWpOrgIdFromTierId(${tierId}) - found orgId ${orgId} for ${currentTierId}`);\n return orgId;\n }\n currentTierIndex--;\n }\n // console.debug(`getWpOrgIdFromTierId(${tierId}) not found in hierarchyTiers`, item);\n return null;\n }\n\n async getOrgIdFromWellpepperApi(tierId: string): Promise {\n // console.log(\"getOrgIdFromWellpepperApi: tierIdToOrgIdMap\", this.tierIdToOrgIdMap);\n if (this.tierIdToOrgIdMap[tierId]) {\n // Already requested, return the same promise.\n return this.tierIdToOrgIdMap[tierId];\n }\n\n // CC-3200 don't use ?where as WAF doesn't like it.\n // Environment is implicit in the bearer token\n const headers = {\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey\n };\n const getOrgUrl = `${this.wpBaseURL}/orgsForTierId/${tierId}`;\n // console.debug(`getOrgIdFromWellpepperApi requesting for ${tierId}`);\n let orgPromise = this.http.get(getOrgUrl, { headers: headers }).toPromise();\n this.tierIdToOrgIdMap[tierId] = orgPromise\n .then(org => {\n // console.debug(`getOrgIdFromWellpepperApi *** Mapped ${tierId} to ${org._id}`);\n this.orgIdToTierIdMap[org._id] = tierId;\n return org._id;\n })\n .catch(err => {\n if (err.status === 401) {\n // CC-???? 2022-03-24 - if a user is restricted to access at the PP or practice level they'll\n // get a 401 when attempting the lookup. Because of this we'll ignore the 401 and just return an empty value.\n return null;\n }\n\n // If it's a 404 it's expected that sometimes it's not provisioned - ignore it\n // console.debug(`getOrgIdFromWellpepperApi *** ${tierId} not found`);\n if (!(err instanceof HttpErrorResponse) || err.status !== 404) {\n throw err;\n }\n return null;\n });\n return this.tierIdToOrgIdMap[tierId];\n }\n\n async getTrackAwvPatients(\n tierNum: number,\n tierId: string,\n beginDate?: Date,\n endDate?: Date,\n chpatid?: string,\n componentId?: string\n ): Promise> {\n let url = `${this.trackBaseURL}/AwvWorklist`;\n\n const TierNum: string = tierNum.toString();\n const params: { [key: string]: string } = { TierNum, TierId: tierId };\n if (beginDate) {\n params.BeginDate = format(beginDate, 'MM/dd/y');\n }\n if (endDate) {\n params.EndDate = format(endDate, 'MM/dd/y');\n }\n if (chpatid) {\n params.ChPatId = chpatid;\n }\n if (componentId) {\n params.componentId = componentId;\n }\n\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: params\n };\n\n try {\n return await this.http.get>(url, options).toPromise();\n } catch (e) {\n this.ToastrMessageService.error(e);\n }\n }\n\n async getTrackCohortPatients(\n tierNum: number,\n TierId: string,\n cohortId?: number\n ): Promise {\n let url = `${this.trackBaseURL}/Patients/cohorts`;\n\n const TierNum: string = tierNum.toString();\n const CohortId: string = cohortId.toString();\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: { TierNum, TierId, CohortId }\n };\n\n try {\n return await this.http.get(url, options).toPromise();\n } catch (e) {\n if (environment.production) {\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n }\n }\n\n async getTrackEDUtilizationPatients(tierNum: number, tierId: string): Promise> {\n const url = `${this.trackBaseURL}/EdUtilizationWorklist`;\n const TierNum: string = tierNum.toString();\n const TierId: string = tierId;\n\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: { TierNum, TierId }\n };\n\n try {\n return await this.http.get>(url, options).toPromise();\n } catch (e) {\n if (environment.production) {\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n }\n }\n\n async getTrackIHEAWVScheduleListPatients(tierNum: number, tierId: string) {\n let url = `${this.apiBaseUrl}/ihawv/scheduleGet`;\n\n const params: { tierNum: string; tierId: string } = {\n tierNum: `${tierNum}`,\n tierId\n };\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: params\n };\n\n return await this.http.get>(url, options).toPromise();\n }\n\n async getTrackIHEListPatients(\n tierNum: number,\n tierId: string,\n fromDate?: Date,\n toDate?: Date\n ): Promise> {\n let url = `${this.apiBaseUrl}/ihawv/patientIheVisitList`;\n\n const params: { tierNum: string; tierId: string } = {\n tierNum: `${tierNum}`,\n tierId\n };\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: params\n };\n\n let patientsVisits = await this.http.get>(url, options).toPromise();\n return patientsVisits?.filter(visit => this.filterIHEFiles(visit));\n }\n\n async getTrackIHEBillingListPatients(\n tierNum: number,\n tierId: string,\n fromDate?: Date,\n toDate?: Date\n ): Promise> {\n let url = `${this.apiBaseUrl}/ihawv/billingGet`;\n\n const params: { tierNum: string; tierId: string } = {\n tierNum: `${tierNum}`,\n tierId\n };\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: params\n };\n\n return await this.http.get>(url, options).toPromise();\n }\n\n /** possibly optional - if the data is returned from the track/Patients?chpatid=... endpoint\n * we can add the data to the Track patient interface.\n */\n async getIHEDataForPatient(\n tierNum: number,\n tierId: string,\n chPatId: string\n ): Promise> {\n let url = `${this.apiBaseUrl}/ihawv/patientIHeVisitList`;\n\n const params = {\n tierNum: `${tierNum}`,\n tierId,\n chPatId\n };\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: params\n };\n\n const visits = await this.http.get>(url, options).toPromise();\n return visits?.filter(visit => this.filterIHEFiles(visit));\n }\n\n filterIHEFiles(visit: ITrackApiIHEFilesListVisitInfo): boolean {\n // remove patients who don't have either all 3 summary files or CMR\n try {\n let assessmentFileTypes: { [key in PatientIHEFileType]?: boolean } = AssessmentFileTypes.reduce(\n (a, v) => ({ ...a, [v]: true }),\n {}\n );\n let casemgmtFile = { Casemgmt: true };\n visit.fileInfo?.forEach(v => {\n delete assessmentFileTypes[v.fileType];\n delete casemgmtFile[v.fileType];\n });\n return !Object.keys(assessmentFileTypes).length || !Object.keys(casemgmtFile).length;\n } catch (error) {\n console.error(error);\n return false;\n }\n }\n /** Store a *comment* for the patient's IH-AWV file status\n * 20220922 - editable file status has been removed from the specification\n * only the comment/note can be created.\n */\n async putIHEFileInfoForVisit(\n tierNum: number,\n tierId: string,\n chpatid: string,\n visitId: string,\n comment: string\n ): Promise {\n let url = `${this.trackBaseURL}/Notes`;\n\n const payload = {\n chpatid,\n text: comment,\n evaluationId: visitId,\n noteTypeId: PatientNoteType.PatientNoteTypeIHAWV\n };\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n await this.http.post(url, payload, options).toPromise();\n }\n\n async downloadIHEFileNoteForPatient(\n tierId: string,\n tierNum: number,\n chPatId: string,\n visitId: string\n ): Promise> {\n let url = `${this.trackBaseURL}/Notes`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: {\n chpatid: chPatId,\n evaluationId: visitId,\n noteTypeId: `${PatientNoteType.PatientNoteTypeIHAWV}`\n }\n };\n let fileNotes: Array = await this.http\n .get>(url, options)\n .toPromise();\n return fileNotes;\n }\n\n /** Get patient with data from all patient data sources\n * Track api\n * Wellpepper api\n * @param chPatId - Caravan Patient ID\n * @param orgId - Wellpepper organization ID\n * TODO - perhaps should be tierId\n * @returns - a promise resolving to combined patient data model\n */\n async getPatient(orgId: string, chPatId: string): Promise {\n const patientIdIssuer = environment.patientIdentityProvider.issuer;\n const wpapiPromise = new Promise((resolve, reject) => {\n try {\n // const orgId = await this.getWpOrgIdFromTierId(tierId);\n const tierIdForWpPatient = this.orgIdToTierIdMap[orgId];\n const subject = `${tierIdForWpPatient}:${chPatId}`;\n const wpapiUrl = `${this.wpBaseURL}/users/federated?type=custom&issuer=${encodeURIComponent(\n patientIdIssuer\n )}&subject=${encodeURIComponent(subject)}`;\n\n this.http\n .get(wpapiUrl, {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n })\n .toPromise()\n .then(value => resolve(value))\n .catch(err => reject(err));\n } catch (err) {\n reject(err);\n }\n });\n\n const trackUrl = `${this.trackBaseURL}/Patients?ChPatId=${chPatId}`;\n try {\n const trackPromise = this.http\n .get(trackUrl, {\n headers: {\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey\n }\n })\n .toPromise();\n const [wpResult, trackResult] = await Promise.allSettled([wpapiPromise, trackPromise]);\n\n const wpPatient = wpResult.status === 'fulfilled' ? wpResult.value : null;\n\n const trackPatient = trackResult.status === 'fulfilled' ? trackResult.value : null;\n\n return Patient.fromCareAndTrackPatient(wpPatient, trackPatient);\n } catch (error) {\n this.ToastrMessageService.error(error);\n }\n }\n\n /** Get the \"care co-ordinator\" for the patient from the wellpepper API */\n async getProfessional(professionalId: string): Promise {\n if (!professionalId) {\n return null;\n }\n const url = `${this.wpBaseURL}/users/${professionalId}`;\n return this.http\n .get(url, {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n })\n .toPromise();\n }\n\n async getTimeTrackingEvents(\n tierId: string,\n chPatId: string,\n firstDate: Date,\n lastDate: Date\n ): Promise> {\n let orgId = await this.getWpOrgIdFromTierId(tierId);\n if (!orgId) {\n return [];\n }\n let url = `${this.wpBaseURL}/orgs/${orgId}/chpatid/${chPatId}/timeTrackingEvents`;\n if (firstDate && lastDate) {\n url += `?not-before=${encodeURIComponent(firstDate.toISOString())}¬-after=${encodeURIComponent(\n lastDate.toISOString()\n )}`;\n } else if (firstDate) {\n url += `?not-before=${encodeURIComponent(firstDate.toISOString())}`;\n } else if (lastDate) {\n url += `?not-after=${encodeURIComponent(lastDate.toISOString())}`;\n }\n let res = await this.http\n .get>(url, {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n })\n .toPromise();\n return res.map(x => {\n return {\n activity: x.activity,\n start: x.start,\n durationSeconds: x.durationSeconds,\n providerId: x.providerId,\n source: x.source,\n createdAt: x.createdAt,\n createdBy: x.createdBy,\n _id: x._id,\n notes: x.notes,\n createdByName: x.createdByName\n };\n });\n }\n /** getDeletedTimeTrackingE\n * @param tierId\n * @param chPatId\n * @param firstDate\n * @param lastDate\n */\n async getDeletedTimeTrackingEvents(\n tierId: string,\n chPatId: string,\n firstDate: Date,\n lastDate: Date\n ): Promise> {\n let orgId = await this.getWpOrgIdFromTierId(tierId);\n if (!orgId) {\n return [];\n }\n let url = `${this.wpBaseURL}/orgs/${orgId}/chpatid/${chPatId}/timeTrackingEvents/deleted`;\n if (firstDate && lastDate) {\n url += `?not-before=${encodeURIComponent(firstDate.toISOString())}¬-after=${encodeURIComponent(\n lastDate.toISOString()\n )}`;\n } else if (firstDate) {\n url += `?not-before=${encodeURIComponent(firstDate.toISOString())}`;\n } else if (lastDate) {\n url += `?not-after=${encodeURIComponent(lastDate.toISOString())}`;\n }\n let res = await this.http\n .get>(url, {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n })\n .toPromise();\n return res.map(x => {\n return {\n activity: x.activity,\n start: x.start,\n durationSeconds: x.durationSeconds,\n providerId: x.providerId,\n source: x.source,\n createdAt: x.createdAt,\n createdBy: x.createdBy,\n _id: x._id,\n notes: x.notes,\n createdByName: x.createdByName\n };\n });\n }\n\n /** deleteTimeTrackingEvent\n * @param tierId\n * @param ITimeTrackingEvent\n *\n */\n async deleteTimeTrackingEvent(tierId: string, event: ITimeTrackingEvent) {\n const orgId = await this.getWpOrgIdFromTierId(tierId);\n if (!orgId) {\n this.ToastrMessageService.error(\n new Error(\"Can't upload time tracking data: requires setup for patient engagement\")\n );\n return;\n }\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n let url = `${this.wpBaseURL}/orgs/${orgId}/chpatid/${event.patientId}/timeTrackingEvents`;\n url += `/${event._id}`;\n try {\n return await this.http.delete(url, options).toPromise();\n } catch (e) {\n console.error(e);\n this.ToastrMessageService.error(e);\n }\n }\n\n async uploadTimeTrackingEvent(tierId: string, event: ITimeTrackingEvent) {\n const orgId = await this.getWpOrgIdFromTierId(tierId);\n if (!orgId) {\n this.ToastrMessageService.error(\n new Error(\"Can't upload time tracking data: requires setup for patient engagement\")\n );\n return;\n }\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n let url = `${this.wpBaseURL}/orgs/${orgId}/chpatid/${event.patientId}/timeTrackingEvents`;\n if (event._id) {\n // for update make sure to pass only 'start', 'source', 'activity', 'notes' or 'durationSeconds'\n let reWriteEvent = {\n start: event.start,\n source: event.source,\n activity: event.activity,\n notes: event.notes,\n durationSeconds: event.durationSeconds\n };\n url += `/${event._id}`;\n try {\n return await this.http.put(url, reWriteEvent, options).toPromise();\n } catch (e) {\n console.error(e);\n this.ToastrMessageService.error(e);\n }\n } else {\n try {\n return await this.http.post(url, event, options).toPromise();\n } catch (e) {\n console.error(e);\n this.ToastrMessageService.error(e);\n }\n }\n }\n\n async getMyPatientsActiveAlerts(orgId: string): Promise<{ [aboutUserId: string]: number }> {\n let url = `${this.wpBaseURL}/orgs/${orgId}/alerts/countByChPatId`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n\n try {\n return await this.http\n .get<{\n [aboutUserId: string]: number;\n }>(url, options)\n .toPromise();\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n alert('Failed to get unread messages - API call failed: ' + e.message || e.status);\n }\n this.ToastrMessageService.error(e);\n console.error(e);\n }\n }\n async getCarePatientData(orgId: string): Promise<{ [aboutUserId: string]: number }> {\n let url = `${this.wpBaseURL}/orgs/${orgId}/patientIds`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n\n try {\n return await this.http\n .get<{\n [aboutUserId: string]: number;\n }>(url, options)\n .toPromise();\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n alert('Failed to get unread messages - API call failed: ' + e.message || e.status);\n }\n this.ToastrMessageService.error(e);\n console.error(e);\n }\n }\n\n async createUser(patientObj): Promise {\n let url = `${this.wpBaseURL}/users`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n\n try {\n return await this.http\n .post(url, patientObj, options)\n // TODO - this looks like the wrong return type\n .toPromise();\n } catch (e) {\n if (environment.production) {\n // TODO - need to decide what to display\n }\n //TODO - Remove this once the API changes are done for the SMS invite.\n if (e.status !== 409) {\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n return e;\n }\n }\n async assignEpisodesOfCare(patientId: string, episodesOfCare: any) {\n let url = `${this.wpBaseURL}/users/${patientId}/episodesOfCare`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n try {\n return await this.http.post<{ [aboutUserId: string]: number }>(url, episodesOfCare, options).toPromise();\n } catch (e) {\n if (environment.production) {\n }\n this.ToastrMessageService.error(e);\n console.error(e);\n }\n }\n async assignEpisodeOfCare(options) {\n var episodeOfCare = options.episodeOfCare;\n var patient = options.patient;\n\n if (!episodeOfCare) {\n throw new Error('episodeOfCare is required');\n }\n if (!episodeOfCare.procedureName) {\n throw new Error('episodeOfCare.procedureName is required');\n }\n if (!patient) {\n throw new Error('Patient is required');\n }\n if (!patient._id) {\n throw new Error('Patient._id is required');\n }\n\n var data = {\n name: episodeOfCare.procedureName,\n procedureName: episodeOfCare.procedureName,\n procedureShortName: episodeOfCare.procedureShortName,\n procedureDate: episodeOfCare.procedureDate,\n procedureTimeZoneName: episodeOfCare.procedureTimeZoneName,\n extendedFields: episodeOfCare.extendedFields\n };\n const headers_options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n var promise = this.http\n .post(`${this.wpBaseURL}/users/${patient._id}/episodesOfCare`, data, headers_options)\n .toPromise()\n .then(\n function (response: any) {\n return response;\n },\n function (response) {\n this.ToastrMessageService.error(response);\n throw new Error(response);\n }\n );\n if (episodeOfCare.protocolId) {\n return promise.then(episodeOfCare => {\n return this.assignProtocol({\n protocol: { _id: episodeOfCare.protocolId },\n episodeOfCare: episodeOfCare,\n patient: patient\n }).then(protocol => {\n episodeOfCare.protocols = [protocol];\n return episodeOfCare;\n });\n });\n } else {\n return promise.then(function (episodeOfCare) {\n return episodeOfCare;\n });\n }\n }\n async assignProtocol(data) {\n var protocol = data.protocol;\n var patient = data.patient;\n var episodeOfCare = data.episodeOfCare;\n var modules = data.modules;\n if (!protocol) {\n throw 'protocol is required';\n }\n if (!protocol._id) {\n throw 'protocol id not found';\n }\n if (!patient) {\n throw 'patient is required';\n }\n if (!patient._id) {\n throw 'patient id not found';\n }\n const headers_options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n // TODO - finish refactoring: normalize caller treatment of response data so we can reduce duplicate handling below.\n var request;\n var promise;\n let url = `${this.wpBaseURL}/users/${patient._id}/protocols/${protocol._id}`;\n if (episodeOfCare) {\n if (!episodeOfCare._id) {\n throw 'episodeOfCare id not found';\n }\n try {\n return await this.http\n .post(\n url,\n {\n episodeOfCareId: episodeOfCare._id,\n modules: modules\n },\n headers_options\n )\n .toPromise();\n } catch (error) {\n console.log('error =>', error);\n }\n } else {\n promise = this.http\n .post(`${this.wpBaseURL}/users/${patient._id}/protocols/${protocol._id}`, {}, headers_options)\n .toPromise()\n .then(\n // success\n (response: any) => {\n // The returned tasks & surveys might not have the protocol ID added.\n // Instead of relying on the API, add it here.\n _.each(response.userSurveys, us => this.addProtocolAsIncludedObject(us, protocol));\n _.each(response.tasks, t => this.addProtocolAsIncludedObject(t, protocol));\n\n try {\n return [response.userSurveys, response.tasks];\n } catch (error) {\n this.ToastrMessageService.error(error);\n // console.log('ERROR =>', error);\n }\n },\n // error\n response => {\n this.ToastrMessageService.error(response);\n throw new Error(response);\n }\n );\n }\n }\n\n /** Add a protocol as included object for a Task or UserSurvey\n * TODO - should roll this into the calling function as it's behavior is dependent\n * on the specific object type.\n */\n private addProtocolAsIncludedObject(x, p) {\n if (!(x.includedObjects && x.includedObjects.protocol)) {\n x.includedObjects = x.includedObjects || {};\n x.includedObjects.protocol = p;\n }\n }\n async addNotificationForPatient(patientId, notification): Promise {\n let url = `${this.wpBaseURL}/users/${patientId}/notifications`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n try {\n return await this.http.post(url, notification, options).toPromise();\n } catch (e) {\n if (environment.production) {\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n }\n }\n\n async getNotificationsForPatient(patient): Promise> {\n if (!patient.carePatient) {\n return [];\n }\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n const url = `${this.wpBaseURL}/users/${patient.carePatient._id}/notifications`;\n try {\n return await this.http.get>(url, options).toPromise();\n } catch (e) {\n this.ToastrMessageService.error(e);\n console.error(e);\n }\n }\n\n /** postMessageToPatientList\n * @param patientIds - array of wellpepper (care) patient ids\n * @param tierId\n * @param msgText\n */\n\n // completions\n async getCompletionActivity(tierId, patient): Promise> {\n if (!patient.carePatient) {\n return [];\n }\n const orgId = await this.getWpOrgIdFromTierId(tierId);\n if (!orgId) {\n return [];\n }\n\n const url = `${this.wpBaseURL}/orgs/${orgId}/chpatid/${patient.chPatId}/completions`;\n const options = {\n headers: {\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey\n }\n };\n try {\n if (url) {\n return await this.http.get>(url, options).toPromise();\n }\n } catch (e) {\n this.ToastrMessageService.error(e);\n console.error(e);\n }\n }\n\n // tasks\n /// users/:userId/tasks';\n async getTasks(tierId, patient): Promise> {\n if (!patient?.carePatient) {\n return [];\n }\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n const url = `${this.wpBaseURL}/users/${patient.carePatient._id}/tasks`; //await this.getWpUrl(patientId,'tasks'); //\n try {\n return await this.http.get>(url, options).toPromise();\n } catch (e) {\n this.ToastrMessageService.error(e);\n console.error(e);\n }\n }\n // logins\n async getUserActivity(tierId, patient): Promise {\n if (!patient.carePatient) {\n return null;\n }\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n const url = `${this.wpBaseURL}/users/${patient.carePatient._id}/activity`;\n try {\n return await this.http.get(url, options).toPromise();\n } catch (e) {\n this.ToastrMessageService.error(e);\n console.error(e);\n }\n }\n // alert triggered/dismissed\n async getUserAlerts(tierId, patient): Promise> {\n if (!patient.carePatient) {\n return [];\n }\n let orgId = await this.getWpOrgIdFromTierId(tierId);\n if (!orgId) {\n return [];\n }\n\n const url = `${this.wpBaseURL}/orgs/${orgId}/chpatid/${patient.chPatId}/alerts`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n try {\n return await this.http.get>(url, options).toPromise();\n } catch (e) {\n console.error(e);\n }\n }\n\n // #region Surveys\n // var responseEndPoint = config.REST_API_ROOT + '/2/users/' + userId + '/surveyResponses/' + surveyResponseId;\n async getSurveyResponses(patientId, limit, skip, where): Promise> {\n if (!patientId) {\n return [];\n }\n const url = `${this.wpBaseURL}/users/${patientId}/surveyResponses?limit=${limit}&skip=${skip}&where=${where}`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n try {\n return await this.http.get>(url, options).toPromise();\n } catch (e) {\n this.ToastrMessageService.error(e);\n console.error(e);\n }\n }\n\n async getSurvey(surveyId: string): Promise {\n if (!surveyId) {\n return null;\n }\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n const url = `${this.wpBaseURL}/surveys/${surveyId}`;\n try {\n return await this.http.get(url, options).toPromise();\n } catch (e) {\n this.ToastrMessageService.error(e);\n console.error(e);\n }\n }\n //#endregion\n\n // chart reports\n async getUserChartReports(\n patientId: string,\n reportType: string,\n startDate: string,\n endDate: string\n ): Promise> {\n if (!patientId) {\n return [];\n }\n const url = `${this.wpBaseURL}/users/${patientId}/reports2/${reportType}/${startDate}/${endDate}`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n try {\n return await this.http.get>(url, options).toPromise();\n } catch (e) {\n this.ToastrMessageService.error(e);\n console.error(e);\n }\n }\n // https://coachapiqa-ms.azure-api.net/track/HccDashboard/opportunities?CHPatID=129315\n\n /** Get episodes of care for a patient from the wellpepper API\n * tierId (required)\n * patient (required) consolidated patient object\n */\n async getPatientEpisodesOfCare(tierId: string, patient: Patient): Promise {\n if (!patient.carePatient) {\n return [];\n }\n const url = `${this.wpBaseURL}/users/${patient.carePatient._id}/episodesOfCare`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n return await this.http.get(url, options).toPromise();\n }\n\n async getPatientTasks(tierId: string, patient: Patient): Promise {\n if (!patient.carePatient) {\n return [];\n }\n const url = `${this.wpBaseURL}/users/${patient.carePatient._id}/tasks`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n return await this.http.get(url, options).toPromise();\n }\n async updateTask(tierId: string, patient: Patient, taskId: string, taskData: any): Promise {\n if (!patient.carePatient) {\n return false;\n }\n const url = `${this.wpBaseURL}/users/${patient.carePatient._id}/tasks/${taskId}`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n let updatedTask;\n try {\n updatedTask = await this.http.put<{ message?: string }>(url, taskData, options).toPromise();\n return updatedTask?.message == 'object updated';\n } catch (error) {\n this.ToastrMessageService.error(error);\n return false;\n }\n }\n\n async activateOrDeactivateTask(task: { userId?: string; _id?: string }, activate: boolean) {\n if (!task || !task.userId || !task._id) {\n throw new Error('activateOrDeactivateTask: task must have id and userId');\n }\n const url = `${this.wpBaseURL}/users/${task.userId}/tasks/${task._id}`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n return await this.http.put(url, { isActive: activate }, options).toPromise();\n }\n\n /**\n *\n * @param userId - wellpepper user id\n * @param episodeOfCareId\n * @param protocolId\n * @param moduleId\n * @param activate\n */\n async activateOrDeactivateModule(info: {\n userId: string;\n episodeOfCareId: string;\n protocolId: string;\n moduleId: string;\n activate: boolean;\n }) {\n if (!info || !info.userId || !info.episodeOfCareId || !info.protocolId || !info.moduleId) {\n throw new Error('activateOrDeactivateModule must have all values provided');\n }\n const url = `${this.wpBaseURL}/users/${info.userId}/episodesofcare/${info.episodeOfCareId}/protocols/${info.protocolId}/modules/${info.moduleId}`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n return await this.http.put(url, { isActive: info.activate }, options).toPromise();\n }\n async updateCarePatient(cp_id: string, data: any): Promise {\n if (!cp_id) {\n return null;\n }\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: 'Bearer ' + this._authService.IdToken\n }\n };\n const url = `${this.wpBaseURL}/users/${cp_id}`;\n let result = await this.http.put<{ message?: string }>(url, data, options).toPromise();\n return result?.message == 'object updated';\n }\n public getTrackPatientFacesheet(CHPatID: string, facesheetName: string, isChronic: boolean = null): Promise {\n // result might vary depending on facesheetName\n const url = `${this.trackBaseURL}/facesheet/${facesheetName}`;\n let IsChronic: string = null;\n if (isChronic !== null) {\n IsChronic = isChronic ? 'true' : 'false';\n }\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: IsChronic == null ? { CHPatID } : { CHPatID, IsChronic }\n };\n\n return this.http.get(url, options).toPromise();\n }\n // async updateTrackPatient(tierId: string, tierNum: number, patient: Patient & { trackPatient?: any, carePatient?: any }): Promise{\n async updateTrackPatient(\n tierId: string,\n tierNum: number,\n data: {\n email: string;\n preferredName: string;\n phone: string;\n tierID: string;\n tierNum: number;\n carePatientId: string;\n mbi: any;\n firstName: string;\n lastName: string;\n middleName: string;\n dateOfBirth: string;\n gender: string;\n chPatId: number;\n ChPatID: number;\n supplementalId: number;\n }\n ): Promise {\n let url = `${this.trackBaseURL}/Patients/update`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n data.dateOfBirth = moment(data.dateOfBirth).format('MM/DD/YYYY');\n return await this.http.post(url, data, options).toPromise();\n }\n\n public postTrackPatientFacesheetPdf(\n CHPatID: string,\n tierId: string,\n tierNum: number,\n detailedPdf?: boolean\n ): Observable {\n let url = `${this.trackBaseURL}/Facesheet/pdf`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: { CHPatID, tierId, tierNum: tierNum.toString(), expanded: detailedPdf ? 'true' : 'false' },\n responseType: 'blob' as 'json' // hack to allow compilation\n };\n return this.http.post(url, null, options).pipe(\n tap(\n data => {\n //console.log('pdf downloaded')\n },\n // Log the result or error\n error => {\n // console.error(error);\n this.ToastrMessageService.error(error);\n }\n )\n );\n }\n\n async getDiseaseCohortData(): Promise {\n if (this.diseaseCohortDefinitions.length < 1) {\n let url = `${this.trackBaseURL}/Patients/diseaseCohortDefinitions`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n this.diseaseCohortDefinitions = await this.http.get(url, options).toPromise();\n }\n return this.diseaseCohortDefinitions;\n }\n convertDiseaseCohortIdToName(ids: number[] | string[] = []): string[] {\n let res = [];\n ids?.forEach(id => {\n let cohort = this.diseaseCohortDefinitions?.filter(ds => ds.cohortID == Number(id))[0]?.cohortName;\n if (cohort) {\n res.push(cohort);\n }\n });\n res.length == 0 ? res.push('') : void 0;\n return res;\n }\n splitStringIntoWords(string: string): string {\n return (\n string[0] +\n string\n .slice(1, string.length)\n .replace(/([A-Z])/g, ' $1')\n .trim()\n );\n }\n\n async updatePatientSnfInfo(\n tierId: string,\n chPatId: string,\n snfInfo: PatientSnfInfo\n ): Promise {\n try {\n // TODO - use the request interceptor to inject the tokend\n let headers = {\n Authorization: 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey\n };\n delete snfInfo.createdAt;\n delete snfInfo.createdBy;\n\n let orgId = await this.getWpOrgIdFromTierId(tierId);\n if (!orgId) {\n return null;\n }\n let url = `${this.wpBaseURL}/orgs/${orgId}/chpatid/${chPatId}/snfInfo`;\n const options = {\n headers: headers\n };\n return await this.http.put(url, snfInfo, options).toPromise();\n } catch (e) {\n if (environment.production) {\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n this.ToastrMessageService.error(e);\n throw e;\n }\n }\n isPhoneNumberFormatValid(phoneNumber: string): boolean {\n return /^(\\+\\d{1,2}\\s)?\\(?[2-9]\\d{2}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$/.test(phoneNumber);\n }\n isEmailFormatValid(email: string): boolean {\n return new RegExp('[a-zA-Z0-9_\\\\.\\\\+-]+[(?:@|#)]+[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-\\\\.]+').test(email);\n }\n public getPatientProtocols(patId: string): Promise> {\n let url = `${this.wpBaseURL}/users/${patId}/protocols`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n\n return this.http.get>(url, options).toPromise();\n }\n formatPhoneNumberForTwilio(phoneNumber: string): string {\n return phoneNumber ? '+1' + phoneNumber.replace(/\\D+/g, '') : '';\n }\n\n async getTrackHccVipCohort(TrackApiParams: ITrackAPIParams): Promise {\n let url = `${this.trackBaseURL}/Patients/hccVipCohort`;\n let idToken = await this._authService.IdToken;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${idToken}`\n },\n params: { ...{}, ...TrackApiParams }\n };\n\n return this.http.get(url, options).toPromise() as any;\n }\n async getCareManagementCohort(TrackApiParams: ITrackAPIParams): Promise {\n let url = `${this.trackBaseURL}/Patients/careManagement`;\n let idToken = await this._authService.IdToken;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${idToken}`\n },\n params: { ...{}, ...TrackApiParams }\n };\n\n return this.http.get(url, options).toPromise() as any;\n }\n /**\n * Notes/comments\n * @param ChPatId (string, nullable): patient id\n * @param Text (text): text of the note\n * @param NoteTypeId (number): note type request 1 => AWV Worklist, 3 => In-Home AWV\n * @param NoteId (number, nullable): if updating, ID specifying note to be updated\n * @param EvaluationId (number, nullable): if updating, ID specifying note to be updated\n */\n async getNote(ChPatId: string, NoteTypeId: number): Promise> {\n let url = `${this.trackBaseURL}/Notes`;\n let idToken = await this._authService.IdToken;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${idToken}`\n },\n params: {\n ChPatId,\n NoteTypeId: NoteTypeId.toString()\n }\n };\n return this.http.get>(url, options).toPromise();\n }\n async postNote(chPatId: string, text: string, noteTypeId: number, noteId: number, evaluationId: number) {\n let url = `${this.trackBaseURL}/Notes`;\n let idToken = await this._authService.IdToken;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${idToken}`\n }\n };\n const body = {\n chPatId,\n text,\n noteTypeId,\n noteId,\n evaluationId\n };\n return this.http.post(url, body, options).toPromise() as any;\n }\n\n async downloadIHEFile(fileId: string | string[], chPatID: string, tierId: string, tierNum: number, fileName: string) {\n let url = `${this.apiBaseUrl}/coach/api/patient/ihawvfiles/${chPatID}`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n params: { tierId, tierNum: tierNum.toString(), fileId },\n responseType: 'blob' as 'json' // hack to allow compilation\n };\n\n let file = (await this.http.get(url, options).toPromise()) as any;\n if (typeof fileId != 'string' && fileId.length == 1) {\n return await downloadFile(fileName, file, 'application/pdf');\n }\n return await downloadFile(fileName, file, typeof fileId == 'string' ? 'application/pdf' : 'application/zip');\n }\n\n async updateAwvStatusDate(chPatId: number, statusDate: string, scheduleId: number) {\n // Create or edit scheduled date.\n let url = `${this.trackBaseURL}/AwvWorklist`;\n let idToken = await this._authService.IdToken;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${idToken}`\n }\n };\n const body = {\n chPatId,\n statusDate,\n scheduleId\n };\n return this.http.post(url, body, options).toPromise() as any;\n }\n\n async triggerTwilioFlowForPatient(\n orgId: string,\n userId: string,\n taskId: string,\n userHasSeenSMSOptOut: boolean\n ): Promise {\n let url = `${this.wpBaseURL}/orgs/${orgId}/user/${userId}/triggerTwilioFlowTask/${taskId}/${userHasSeenSMSOptOut}`;\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n try {\n let result = await this.http.post(url, {}, options).toPromise();\n return result;\n } catch (e) {\n if (environment.production) {\n this.ToastrMessageService.error(e);\n }\n console.error(e);\n }\n }\n\n async createTwilioFlowSchedule(\n userId: string,\n taskId: string,\n frequency: string,\n isAdaptive: boolean\n ): Promise {\n const url = `${this.wpBaseURL}/users/${userId}/tasks/${taskId}/twilioflow/schedule`; // /users/:userId/tasks/:taskId/twilioflow/schedule\n\n const requestBody = {\n startDate: this.getNextBusinessDay(),\n frequency: frequency,\n isAdaptive: isAdaptive\n };\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n let result = await this.http.post(url, requestBody, options).toPromise();\n return result;\n }\n\n async getSMSScheduleReport(userId: string, taskId: string): Promise {\n const url = `${this.wpBaseURL}/users/${userId}/tasks/${taskId}/twilioflow/schedule/report`; // /users/:userId/tasks/:taskId/twilioflow/schedule\n const today = new Date();\n const requestBody = {\n currentDate: {\n year: today.getFullYear(),\n month: today.getMonth() + 1,\n date: today.getDate()\n }\n };\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n }\n };\n let result = await this.http.post(url, requestBody, options).toPromise();\n return result;\n }\n\n async stopTwilioFlowSchedule(userId: string, taskId: string) {\n let url = `${this.wpBaseURL}/users/${userId}/tasks/${taskId}/twilioflow/schedule`;\n const today = new Date();\n const body: wpapi.model.StopScheduleRequestPayload = {\n stopDate: {\n year: today.getFullYear(),\n month: today.getMonth() + 1,\n date: today.getDate()\n }\n };\n const options = {\n headers: {\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n Authorization: `Bearer ${this._authService.IdToken}`\n },\n body: body\n };\n let result = await this.http.delete(url, options).toPromise();\n return result;\n }\n\n getNextBusinessDay() {\n const today = new Date();\n const nextDay = new Date(today);\n if (nextDay.getDay() === 5) {\n nextDay.setDate(nextDay.getDate() + 3);\n } else if (nextDay.getDay() === 6) {\n nextDay.setDate(nextDay.getDate() + 2);\n } else {\n nextDay.setDate(nextDay.getDate() + 1);\n }\n\n return {\n year: nextDay.getFullYear(),\n month: nextDay.getMonth() + 1,\n date: nextDay.getDate()\n };\n }\n}\n","export class TrackPerformanceDashboardTargetStatus {\n public static readonly NeedsAttention = 'needsAttention';\n public static readonly NeedsImprovement = 'needsImprovement';\n public static readonly HittingTarget = 'hittingTarget';\n public static readonly Connected = 'connected';\n public static readonly NotConnected = 'notConnected';\n}\n\nexport class TrackPerformanceDashboardMetrics {\n public static readonly RafScoreMetricId = 3;\n}","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n/** @private */\r\nexport class DefaultReconnectPolicy {\r\n constructor(retryDelays) {\r\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n nextRetryDelayInMilliseconds(retryContext) {\r\n return this._retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Error thrown when an HTTP request fails. */\r\nexport class HttpError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n constructor(errorMessage, statusCode) {\r\n const trueProto = new.target.prototype;\r\n super(`${errorMessage}: Status code '${statusCode}'`);\r\n this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when a timeout elapses. */\r\nexport class TimeoutError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"A timeout occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when an action is aborted. */\r\nexport class AbortError extends Error {\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"An abort occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is unsupported by the browser. */\r\n/** @private */\r\nexport class UnsupportedTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.UnsupportedTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'UnsupportedTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is disabled by the browser. */\r\n/** @private */\r\nexport class DisabledTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.DisabledTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'DisabledTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport cannot be started. */\r\n/** @private */\r\nexport class FailedToStartTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToStartTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'FailedToStartTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the negotiation with the server failed to complete. */\r\n/** @private */\r\nexport class FailedToNegotiateWithServerError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToNegotiateWithServerError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n */\r\n constructor(message) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.errorType = 'FailedToNegotiateWithServerError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when multiple errors have occured. */\r\n/** @private */\r\nexport class AggregateErrors extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.AggregateErrors}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {Error[]} innerErrors The collection of errors this error is aggregating.\r\n */\r\n constructor(message, innerErrors) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.innerErrors = innerErrors;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Represents an HTTP response. */\r\nexport class HttpResponse {\r\n constructor(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n}\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nexport class HttpClient {\r\n get(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n post(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n delete(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n getCookieString(url) {\r\n return \"\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nexport class NullLogger {\r\n constructor() { }\r\n /** @inheritDoc */\r\n // eslint-disable-next-line\r\n log(_logLevel, _message) {\r\n }\r\n}\r\n/** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\nNullLogger.instance = new NullLogger();\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nexport const VERSION = \"6.0.25\";\r\n/** @private */\r\nexport class Arg {\r\n static isRequired(val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(`The '${name}' argument is required.`);\r\n }\r\n }\r\n static isNotEmpty(val, name) {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(`The '${name}' argument should not be empty.`);\r\n }\r\n }\r\n static isIn(val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(`Unknown ${name} value: ${val}.`);\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class Platform {\r\n // react-native has a window but no document so we should check both\r\n static get isBrowser() {\r\n return typeof window === \"object\" && typeof window.document === \"object\";\r\n }\r\n // WebWorkers don't have a window object so the isBrowser check would fail\r\n static get isWebWorker() {\r\n return typeof self === \"object\" && \"importScripts\" in self;\r\n }\r\n // react-native has a window but no document\r\n static get isReactNative() {\r\n return typeof window === \"object\" && typeof window.document === \"undefined\";\r\n }\r\n // Node apps shouldn't have a window object, but WebWorkers don't either\r\n // so we need to check for both WebWorker and window\r\n static get isNode() {\r\n return !this.isBrowser && !this.isWebWorker && !this.isReactNative;\r\n }\r\n}\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n let detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = `Binary data of length ${data.byteLength}`;\r\n if (includeContent) {\r\n detail += `. Content: '${formatArrayBuffer(data)}'`;\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = `String data of length ${data.length}`;\r\n if (includeContent) {\r\n detail += `. Content: '${data}'`;\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n const view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n let str = \"\";\r\n view.forEach((num) => {\r\n const pad = num < 16 ? \"0\" : \"\";\r\n str += `0x${pad}${num.toString(16)} `;\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nexport async function sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, options) {\r\n let headers = {};\r\n if (accessTokenFactory) {\r\n const token = await accessTokenFactory();\r\n if (token) {\r\n headers = {\r\n [\"Authorization\"]: `Bearer ${token}`,\r\n };\r\n }\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, options.logMessageContent)}.`);\r\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n const response = await httpClient.post(url, {\r\n content,\r\n headers: { ...headers, ...options.headers },\r\n responseType,\r\n timeout: options.timeout,\r\n withCredentials: options.withCredentials,\r\n });\r\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log !== undefined) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nexport class SubjectSubscription {\r\n constructor(subject, observer) {\r\n this._subject = subject;\r\n this._observer = observer;\r\n }\r\n dispose() {\r\n const index = this._subject.observers.indexOf(this._observer);\r\n if (index > -1) {\r\n this._subject.observers.splice(index, 1);\r\n }\r\n if (this._subject.observers.length === 0 && this._subject.cancelCallback) {\r\n this._subject.cancelCallback().catch((_) => { });\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class ConsoleLogger {\r\n constructor(minimumLogLevel) {\r\n this._minLevel = minimumLogLevel;\r\n this.out = console;\r\n }\r\n log(logLevel, message) {\r\n if (logLevel >= this._minLevel) {\r\n const msg = `[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`;\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.out.error(msg);\r\n break;\r\n case LogLevel.Warning:\r\n this.out.warn(msg);\r\n break;\r\n case LogLevel.Information:\r\n this.out.info(msg);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.out.log(msg);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport function getUserAgentHeader() {\r\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion())];\r\n}\r\n/** @private */\r\nexport function constructUserAgent(version, os, runtime, runtimeVersion) {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n let userAgent = \"Microsoft SignalR/\";\r\n const majorAndMinor = version.split(\".\");\r\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\r\n userAgent += ` (${version}; `;\r\n if (os && os !== \"\") {\r\n userAgent += `${os}; `;\r\n }\r\n else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n userAgent += `${runtime}`;\r\n if (runtimeVersion) {\r\n userAgent += `; ${runtimeVersion}`;\r\n }\r\n else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getOsName() {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getRuntimeVersion() {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\nfunction getRuntime() {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n }\r\n else {\r\n return \"Browser\";\r\n }\r\n}\r\n/** @private */\r\nexport function getErrorString(e) {\r\n if (e.stack) {\r\n return e.stack;\r\n }\r\n else if (e.message) {\r\n return e.message;\r\n }\r\n return `${e}`;\r\n}\r\n/** @private */\r\nexport function getGlobalThis() {\r\n // globalThis is semi-new and not available in Node until v12\r\n if (typeof globalThis !== \"undefined\") {\r\n return globalThis;\r\n }\r\n if (typeof self !== \"undefined\") {\r\n return self;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n return window;\r\n }\r\n if (typeof global !== \"undefined\") {\r\n return global;\r\n }\r\n throw new Error(\"could not find global\");\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Platform, getGlobalThis } from \"./Utils\";\r\nexport class FetchHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n if (typeof fetch === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n this._jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n this._fetchType = requireFunc(\"node-fetch\");\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n this._fetchType = requireFunc(\"fetch-cookie\")(this._fetchType, this._jar);\r\n }\r\n else {\r\n this._fetchType = fetch.bind(getGlobalThis());\r\n }\r\n if (typeof AbortController === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n this._abortControllerType = requireFunc(\"abort-controller\");\r\n }\r\n else {\r\n this._abortControllerType = AbortController;\r\n }\r\n }\r\n /** @inheritDoc */\r\n async send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n const abortController = new this._abortControllerType();\r\n let error;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n let response;\r\n try {\r\n response = await this._fetchType(request.url, {\r\n body: request.content,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"Content-Type\": \"text/plain;charset=UTF-8\",\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method,\r\n mode: \"cors\",\r\n redirect: \"follow\",\r\n signal: abortController.signal,\r\n });\r\n }\r\n catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${e}.`);\r\n throw e;\r\n }\r\n finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n if (!response.ok) {\r\n const errorMessage = await deserializeContent(response, \"text\");\r\n throw new HttpError(errorMessage || response.statusText, response.status);\r\n }\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n return new HttpResponse(response.status, response.statusText, payload);\r\n }\r\n getCookieString(url) {\r\n let cookies = \"\";\r\n if (Platform.isNode && this._jar) {\r\n // @ts-ignore: unused variable\r\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\nfunction deserializeContent(response, responseType) {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n return content;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nexport class XhrHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = () => {\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = () => {\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content || \"\");\r\n });\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nexport class DefaultHttpClient extends HttpClient {\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n constructor(logger) {\r\n super();\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this._httpClient = new FetchHttpClient(logger);\r\n }\r\n else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this._httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this._httpClient.send(request);\r\n }\r\n getCookieString(url) {\r\n return this._httpClient.getCookieString(url);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nexport class HeaderNames {\r\n}\r\nHeaderNames.Authorization = \"Authorization\";\r\nHeaderNames.Cookie = \"Cookie\";\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nexport class AbortController {\r\n constructor() {\r\n this._isAborted = false;\r\n this.onabort = null;\r\n }\r\n abort() {\r\n if (!this._isAborted) {\r\n this._isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n get signal() {\r\n return this;\r\n }\r\n get aborted() {\r\n return this._isAborted;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nexport class LongPollingTransport {\r\n constructor(httpClient, accessTokenFactory, logger, options) {\r\n this._httpClient = httpClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logger = logger;\r\n this._pollAbort = new AbortController();\r\n this._options = options;\r\n this._running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get pollAborted() {\r\n return this._pollAbort.aborted;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._url = url;\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this._options.headers };\r\n const pollOptions = {\r\n abortSignal: this._pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(pollOptions, token);\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n this._running = true;\r\n }\r\n this._receiving = this._poll(this._url, pollOptions);\r\n }\r\n async _getAccessToken() {\r\n if (this._accessTokenFactory) {\r\n return await this._accessTokenFactory();\r\n }\r\n return null;\r\n }\r\n _updateHeaderToken(request, token) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (token) {\r\n request.headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n return;\r\n }\r\n if (request.headers[HeaderNames.Authorization]) {\r\n delete request.headers[HeaderNames.Authorization];\r\n }\r\n }\r\n async _poll(url, pollOptions) {\r\n try {\r\n while (this._running) {\r\n // We have to get the access token on each poll, in case it changes\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(pollOptions, token);\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode === 204) {\r\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this._running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Unexpected status code\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n if (!this._running) {\r\n // Log but disregard errors that occur after stopping\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\r\n }\r\n else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this._closeError = e;\r\n this._running = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this._raiseOnClose();\r\n }\r\n }\r\n }\r\n async send(data) {\r\n if (!this._running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url, this._accessTokenFactory, data, this._options);\r\n }\r\n async stop() {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this._running = false;\r\n this._pollAbort.abort();\r\n try {\r\n await this._receiving;\r\n // Send DELETE to clean up long polling on the server\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const deleteOptions = {\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(deleteOptions, token);\r\n await this._httpClient.delete(this._url, deleteOptions);\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this._raiseOnClose();\r\n }\r\n }\r\n _raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this._closeError) {\r\n logMessage += \" Error: \" + this._closeError;\r\n }\r\n this._logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this._closeError);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\n/** @private */\r\nexport class ServerSentEventsTransport {\r\n constructor(httpClient, accessTokenFactory, logger, options) {\r\n this._httpClient = httpClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logger = logger;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send\r\n this._url = url;\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n return new Promise((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n let eventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this._httpClient.getCookieString(url);\r\n const headers = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials, headers: { ...headers, ...this._options.headers } });\r\n }\r\n try {\r\n eventSource.onmessage = (e) => {\r\n if (this.onreceive) {\r\n try {\r\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent)}.`);\r\n this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n // @ts-ignore: not using event on purpose\r\n eventSource.onerror = (e) => {\r\n // EventSource doesn't give any useful information about server side closes.\r\n if (opened) {\r\n this._close();\r\n }\r\n else {\r\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\"\r\n + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\"));\r\n }\r\n };\r\n eventSource.onopen = () => {\r\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\r\n this._eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n async send(data) {\r\n if (!this._eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url, this._accessTokenFactory, data, this._options);\r\n }\r\n stop() {\r\n this._close();\r\n return Promise.resolve();\r\n }\r\n _close(e) {\r\n if (this._eventSource) {\r\n this._eventSource.close();\r\n this._eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n/** @private */\r\nexport class WebSocketTransport {\r\n constructor(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {\r\n this._logger = logger;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logMessageContent = logMessageContent;\r\n this._webSocketConstructor = webSocketConstructor;\r\n this._httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this._headers = headers;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n return new Promise((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket;\r\n const cookies = this._httpClient.getCookieString(url);\r\n let opened = false;\r\n if (Platform.isNode) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n if (cookies) {\r\n headers[HeaderNames.Cookie] = `${cookies}`;\r\n }\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this._webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this._headers },\r\n });\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this._webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n webSocket.onopen = (_event) => {\r\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this._webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n webSocket.onerror = (event) => {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"There was an error with the transport\";\r\n }\r\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\r\n };\r\n webSocket.onmessage = (message) => {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n webSocket.onclose = (event) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this._close(event);\r\n }\r\n else {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"WebSocket failed to connect. The connection could not be found on the server,\"\r\n + \" either the endpoint may not be a SignalR endpoint,\"\r\n + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\";\r\n }\r\n reject(new Error(error));\r\n }\r\n };\r\n });\r\n }\r\n send(data) {\r\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\r\n this._webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n stop() {\r\n if (this._webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this._close(undefined);\r\n }\r\n return Promise.resolve();\r\n }\r\n _close(event) {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this._webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this._webSocket.onclose = () => { };\r\n this._webSocket.onmessage = () => { };\r\n this._webSocket.onerror = () => { };\r\n this._webSocket.close();\r\n this._webSocket = undefined;\r\n }\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\r\n }\r\n else if (event instanceof Error) {\r\n this.onclose(event);\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n _isCloseEvent(event) {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError } from \"./Errors\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nconst MAX_REDIRECTS = 100;\r\n/** @private */\r\nexport class HttpConnection {\r\n constructor(url, options = {}) {\r\n this._stopPromiseResolver = () => { };\r\n this.features = {};\r\n this._negotiateVersion = 1;\r\n Arg.isRequired(url, \"url\");\r\n this._logger = createLogger(options.logger);\r\n this.baseUrl = this._resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n }\r\n else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\r\n let webSocketModule = null;\r\n let eventSourceModule = null;\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n this._httpClient = options.httpClient || new DefaultHttpClient(this._logger);\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n this._connectionStarted = false;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async start(transferFormat) {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n if (this._connectionState !== \"Disconnected\" /* Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = \"Connecting\" /* Connecting */;\r\n this._startInternalPromise = this._startInternal(transferFormat);\r\n await this._startInternalPromise;\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this._logger.log(LogLevel.Error, message);\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this._stopPromise;\r\n return Promise.reject(new Error(message));\r\n }\r\n else if (this._connectionState !== \"Connected\" /* Connected */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this._logger.log(LogLevel.Error, message);\r\n return Promise.reject(new Error(message));\r\n }\r\n this._connectionStarted = true;\r\n }\r\n send(data) {\r\n if (this._connectionState !== \"Connected\" /* Connected */) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n if (!this._sendQueue) {\r\n this._sendQueue = new TransportSendQueue(this.transport);\r\n }\r\n // Transport will not be null if state is connected\r\n return this._sendQueue.send(data);\r\n }\r\n async stop(error) {\r\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = \"Disconnecting\" /* Disconnecting */;\r\n this._stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this._stopPromiseResolver = resolve;\r\n });\r\n // stopInternal should never throw so just observe it.\r\n await this._stopInternal(error);\r\n await this._stopPromise;\r\n }\r\n async _stopInternal(error) {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this._stopError = error;\r\n try {\r\n await this._startInternalPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this._stopConnection();\r\n }\r\n this.transport = undefined;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n async _startInternal(transferFormat) {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this._accessTokenFactory = this._options.accessTokenFactory;\r\n try {\r\n if (this._options.skipNegotiation) {\r\n if (this._options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this._startTransport(url, transferFormat);\r\n }\r\n else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n }\r\n else {\r\n let negotiateResponse = null;\r\n let redirects = 0;\r\n do {\r\n negotiateResponse = await this._getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */ || this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n throw new Error(\"The connection was stopped during negotiation.\");\r\n }\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this._accessTokenFactory = () => accessToken;\r\n }\r\n redirects++;\r\n } while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\r\n }\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n if (this._connectionState === \"Connecting\" /* Connecting */) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this._connectionState = \"Connected\" /* Connected */;\r\n }\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n this.transport = undefined;\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this._stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _getNegotiationResponse(url) {\r\n const headers = {};\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n }\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const negotiateUrl = this._resolveNegotiateUrl(url);\r\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this._httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n });\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n const negotiateResponse = JSON.parse(response.content);\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n return negotiateResponse;\r\n }\r\n catch (e) {\r\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\r\n if (e instanceof HttpError) {\r\n if (e.statusCode === 404) {\r\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\r\n }\r\n }\r\n this._logger.log(LogLevel.Error, errorMessage);\r\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\r\n }\r\n }\r\n _createConnectUrl(url, connectionToken) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n async _createTransport(url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this._isITransport(requestedTransport)) {\r\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n const transportExceptions = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed:`);\r\n transportExceptions.push(transportOrError);\r\n }\r\n else if (this._isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this._getNegotiationResponse(url);\r\n }\r\n catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n }\r\n catch (ex) {\r\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\r\n if (this._connectionState !== \"Connecting\" /* Connecting */) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this._logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new Error(message));\r\n }\r\n }\r\n }\r\n }\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n _constructTransport(transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this._options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent, this._options.WebSocket, this._options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this._options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options);\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n _startTransport(url, transferFormat) {\r\n this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = (e) => this._stopConnection(e);\r\n return this.transport.connect(url, transferFormat);\r\n }\r\n _resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat) {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n }\r\n else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this._options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this._options.EventSource)) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n return this._constructTransport(transport);\r\n }\r\n catch (ex) {\r\n return ex;\r\n }\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\r\n }\r\n }\r\n }\r\n _isITransport(transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n _stopConnection(error) {\r\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this._stopError || error;\r\n this._stopError = undefined;\r\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n if (this._connectionState === \"Connecting\" /* Connecting */) {\r\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this._stopPromiseResolver();\r\n }\r\n if (error) {\r\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n if (this._sendQueue) {\r\n this._sendQueue.stop().catch((e) => {\r\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this._sendQueue = undefined;\r\n }\r\n this.connectionId = undefined;\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n if (this._connectionStarted) {\r\n this._connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n _resolveUrl(url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (!Platform.isBrowser) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n _resolveNegotiateUrl(url) {\r\n const index = url.indexOf(\"?\");\r\n let negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\r\n negotiateUrl += index === -1 ? \"?\" : \"&\";\r\n negotiateUrl += \"negotiateVersion=\" + this._negotiateVersion;\r\n }\r\n return negotiateUrl;\r\n }\r\n}\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n/** @private */\r\nexport class TransportSendQueue {\r\n constructor(_transport) {\r\n this._transport = _transport;\r\n this._buffer = [];\r\n this._executing = true;\r\n this._sendBufferedData = new PromiseSource();\r\n this._transportResult = new PromiseSource();\r\n this._sendLoopPromise = this._sendLoop();\r\n }\r\n send(data) {\r\n this._bufferData(data);\r\n if (!this._transportResult) {\r\n this._transportResult = new PromiseSource();\r\n }\r\n return this._transportResult.promise;\r\n }\r\n stop() {\r\n this._executing = false;\r\n this._sendBufferedData.resolve();\r\n return this._sendLoopPromise;\r\n }\r\n _bufferData(data) {\r\n if (this._buffer.length && typeof (this._buffer[0]) !== typeof (data)) {\r\n throw new Error(`Expected data to be of type ${typeof (this._buffer)} but was of type ${typeof (data)}`);\r\n }\r\n this._buffer.push(data);\r\n this._sendBufferedData.resolve();\r\n }\r\n async _sendLoop() {\r\n while (true) {\r\n await this._sendBufferedData.promise;\r\n if (!this._executing) {\r\n if (this._transportResult) {\r\n this._transportResult.reject(\"Connection stopped.\");\r\n }\r\n break;\r\n }\r\n this._sendBufferedData = new PromiseSource();\r\n const transportResult = this._transportResult;\r\n this._transportResult = undefined;\r\n const data = typeof (this._buffer[0]) === \"string\" ?\r\n this._buffer.join(\"\") :\r\n TransportSendQueue._concatBuffers(this._buffer);\r\n this._buffer.length = 0;\r\n try {\r\n await this._transport.send(data);\r\n transportResult.resolve();\r\n }\r\n catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n static _concatBuffers(arrayBuffers) {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n return result.buffer;\r\n }\r\n}\r\nclass PromiseSource {\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\r\n }\r\n resolve() {\r\n this._resolver();\r\n }\r\n reject(reason) {\r\n this._rejecter(reason);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Not exported from index\r\n/** @private */\r\nexport class TextMessageFormat {\r\n static write(output) {\r\n return `${output}${TextMessageFormat.RecordSeparator}`;\r\n }\r\n static parse(input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n const messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n }\r\n}\r\nTextMessageFormat.RecordSeparatorCode = 0x1e;\r\nTextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nexport class HandshakeProtocol {\r\n // Handshake request is always JSON\r\n writeHandshakeRequest(handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n }\r\n parseHandshakeResponse(data) {\r\n let messageData;\r\n let remainingData;\r\n if (isArrayBuffer(data)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n const binaryData = new Uint8Array(data);\r\n const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, Array.prototype.slice.call(binaryData.slice(0, responseLength)));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n const textData = data;\r\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n const messages = TextMessageFormat.parse(messageData);\r\n const response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n const responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Defines the type of a Hub Message. */\r\nexport var MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n})(MessageType || (MessageType = {}));\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { SubjectSubscription } from \"./Utils\";\r\n/** Stream implementation to stream items to the server. */\r\nexport class Subject {\r\n constructor() {\r\n this.observers = [];\r\n }\r\n next(item) {\r\n for (const observer of this.observers) {\r\n observer.next(item);\r\n }\r\n }\r\n error(err) {\r\n for (const observer of this.observers) {\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n complete() {\r\n for (const observer of this.observers) {\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n }\r\n subscribe(observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg, getErrorString, Platform } from \"./Utils\";\r\nconst DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nconst DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport var HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[\"Disconnected\"] = \"Disconnected\";\r\n /** The hub connection is connecting. */\r\n HubConnectionState[\"Connecting\"] = \"Connecting\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[\"Connected\"] = \"Connected\";\r\n /** The hub connection is disconnecting. */\r\n HubConnectionState[\"Disconnecting\"] = \"Disconnecting\";\r\n /** The hub connection is reconnecting. */\r\n HubConnectionState[\"Reconnecting\"] = \"Reconnecting\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nexport class HubConnection {\r\n constructor(connection, logger, protocol, reconnectPolicy) {\r\n this._nextKeepAlive = 0;\r\n this._freezeEventListener = () => {\r\n this._logger.log(LogLevel.Warning, \"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://docs.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\");\r\n };\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n this._logger = logger;\r\n this._protocol = protocol;\r\n this.connection = connection;\r\n this._reconnectPolicy = reconnectPolicy;\r\n this._handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = (data) => this._processIncomingData(data);\r\n this.connection.onclose = (error) => this._connectionClosed(error);\r\n this._callbacks = {};\r\n this._methods = {};\r\n this._closedCallbacks = [];\r\n this._reconnectingCallbacks = [];\r\n this._reconnectedCallbacks = [];\r\n this._invocationId = 0;\r\n this._receivedHandshakeResponse = false;\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n this._cachedPingMessage = this._protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n static create(connection, logger, protocol, reconnectPolicy) {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\r\n }\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get state() {\r\n return this._connectionState;\r\n }\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get connectionId() {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n }\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get baseUrl() {\r\n return this.connection.baseUrl || \"\";\r\n }\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set baseUrl(url) {\r\n if (this._connectionState !== HubConnectionState.Disconnected && this._connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n this.connection.baseUrl = url;\r\n }\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n start() {\r\n this._startPromise = this._startWithStateTransitions();\r\n return this._startPromise;\r\n }\r\n async _startWithStateTransitions() {\r\n if (this._connectionState !== HubConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = HubConnectionState.Connecting;\r\n this._logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n try {\r\n await this._startInternal();\r\n if (Platform.isBrowser) {\r\n // Log when the browser freezes the tab so users know why their connection unexpectedly stopped working\r\n window.document.addEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n this._connectionState = HubConnectionState.Connected;\r\n this._connectionStarted = true;\r\n this._logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n }\r\n catch (e) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _startInternal() {\r\n this._stopDuringStartError = undefined;\r\n this._receivedHandshakeResponse = false;\r\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\r\n const handshakePromise = new Promise((resolve, reject) => {\r\n this._handshakeResolver = resolve;\r\n this._handshakeRejecter = reject;\r\n });\r\n await this.connection.start(this._protocol.transferFormat);\r\n try {\r\n const handshakeRequest = {\r\n protocol: this._protocol.name,\r\n version: this._protocol.version,\r\n };\r\n this._logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(handshakeRequest));\r\n this._logger.log(LogLevel.Information, `Using HubProtocol '${this._protocol.name}'.`);\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this._cleanupTimeout();\r\n this._resetTimeoutPeriod();\r\n this._resetKeepAliveInterval();\r\n await handshakePromise;\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this._stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\r\n throw this._stopDuringStartError;\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n await this.connection.stop(e);\r\n throw e;\r\n }\r\n }\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n async stop() {\r\n // Capture the start promise before the connection might be restarted in an onclose callback.\r\n const startPromise = this._startPromise;\r\n this._stopPromise = this._stopInternal();\r\n await this._stopPromise;\r\n try {\r\n // Awaiting undefined continues immediately\r\n await startPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n }\r\n _stopInternal(error) {\r\n if (this._connectionState === HubConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = HubConnectionState.Disconnecting;\r\n this._logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n if (this._reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this._logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n clearTimeout(this._reconnectDelayHandle);\r\n this._reconnectDelayHandle = undefined;\r\n this._completeClose();\r\n return Promise.resolve();\r\n }\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n this._stopDuringStartError = error || new Error(\"The connection was stopped before the hub handshake could complete.\");\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n }\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n stream(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createStreamInvocation(methodName, args, streamIds);\r\n // eslint-disable-next-line prefer-const\r\n let promiseQueue;\r\n const subject = new Subject();\r\n subject.cancelCallback = () => {\r\n const cancelInvocation = this._createCancelInvocation(invocationDescriptor.invocationId);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(() => {\r\n return this._sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n subject.error(e);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n return subject;\r\n }\r\n _sendMessage(message) {\r\n this._resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n }\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n _sendWithProtocol(message) {\r\n return this._sendMessage(this._protocol.writeMessage(message));\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n send(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const sendPromise = this._sendWithProtocol(this._createInvocation(methodName, args, true, streamIds));\r\n this._launchStreams(streams, sendPromise);\r\n return sendPromise;\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n invoke(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createInvocation(methodName, args, false, streamIds);\r\n const p = new Promise((resolve, reject) => {\r\n // invocationId will always have a value for a non-blocking invocation\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\r\n }\r\n }\r\n };\r\n const promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n });\r\n return p;\r\n }\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n on(methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this._methods[methodName]) {\r\n this._methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this._methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this._methods[methodName].push(newMethod);\r\n }\r\n off(methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n const handlers = this._methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n const removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n onclose(callback) {\r\n if (callback) {\r\n this._closedCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n onreconnecting(callback) {\r\n if (callback) {\r\n this._reconnectingCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n onreconnected(callback) {\r\n if (callback) {\r\n this._reconnectedCallbacks.push(callback);\r\n }\r\n }\r\n _processIncomingData(data) {\r\n this._cleanupTimeout();\r\n if (!this._receivedHandshakeResponse) {\r\n data = this._processHandshakeResponse(data);\r\n this._receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n const messages = this._protocol.parseMessages(data, this._logger);\r\n for (const message of messages) {\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this._invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion: {\r\n const callback = this._callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this._callbacks[message.invocationId];\r\n }\r\n try {\r\n callback(message);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream callback threw error: ${getErrorString(e)}`);\r\n }\r\n }\r\n break;\r\n }\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close: {\r\n this._logger.log(LogLevel.Information, \"Close message received from server.\");\r\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(error);\r\n }\r\n else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this._stopPromise = this._stopInternal(error);\r\n }\r\n break;\r\n }\r\n default:\r\n this._logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\r\n break;\r\n }\r\n }\r\n }\r\n this._resetTimeoutPeriod();\r\n }\r\n _processHandshakeResponse(data) {\r\n let responseMessage;\r\n let remainingData;\r\n try {\r\n [remainingData, responseMessage] = this._handshakeProtocol.parseHandshakeResponse(data);\r\n }\r\n catch (e) {\r\n const message = \"Error parsing handshake response: \" + e;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n const message = \"Server returned handshake error: \" + responseMessage.error;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this._handshakeResolver();\r\n return remainingData;\r\n }\r\n _resetKeepAliveInterval() {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this._nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n this._cleanupPingTimer();\r\n }\r\n _resetTimeoutPeriod() {\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this._timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\r\n // Set keepAlive timer if there isn't one\r\n if (this._pingServerHandle === undefined) {\r\n let nextPing = this._nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this._pingServerHandle = setTimeout(async () => {\r\n if (this._connectionState === HubConnectionState.Connected) {\r\n try {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n catch {\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this._cleanupPingTimer();\r\n }\r\n }\r\n }, nextPing);\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n serverTimeout() {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n }\r\n _invokeClientMethod(invocationMessage) {\r\n const methods = this._methods[invocationMessage.target.toLowerCase()];\r\n if (methods) {\r\n try {\r\n methods.forEach((m) => m.apply(this, invocationMessage.arguments));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `A callback for the method ${invocationMessage.target.toLowerCase()} threw error '${e}'.`);\r\n }\r\n if (invocationMessage.invocationId) {\r\n // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.\r\n const message = \"Server requested a response, which is not supported in this version of the client.\";\r\n this._logger.log(LogLevel.Error, message);\r\n // We don't want to wait on the stop itself.\r\n this._stopPromise = this._stopInternal(new Error(message));\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Warning, `No client method with the name '${invocationMessage.target}' found.`);\r\n }\r\n }\r\n _connectionClosed(error) {\r\n this._logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this._connectionState}.`);\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this._stopDuringStartError = this._stopDuringStartError || error || new Error(\"The underlying connection was closed before the hub handshake could complete.\");\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this._handshakeResolver) {\r\n this._handshakeResolver();\r\n }\r\n this._cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected && this._reconnectPolicy) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._reconnect(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected) {\r\n this._completeClose(error);\r\n }\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n }\r\n _completeClose(error) {\r\n if (this._connectionStarted) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n if (Platform.isBrowser) {\r\n window.document.removeEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n try {\r\n this._closedCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n async _reconnect(error) {\r\n const reconnectStartTime = Date.now();\r\n let previousReconnectAttempts = 0;\r\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n let nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n if (nextRetryDelay === null) {\r\n this._logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this._completeClose(error);\r\n return;\r\n }\r\n this._connectionState = HubConnectionState.Reconnecting;\r\n if (error) {\r\n this._logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n if (this._reconnectingCallbacks.length !== 0) {\r\n try {\r\n this._reconnectingCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return;\r\n }\r\n }\r\n while (nextRetryDelay !== null) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\r\n await new Promise((resolve) => {\r\n this._reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);\r\n });\r\n this._reconnectDelayHandle = undefined;\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return;\r\n }\r\n try {\r\n await this._startInternal();\r\n this._connectionState = HubConnectionState.Connected;\r\n this._logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n if (this._reconnectedCallbacks.length !== 0) {\r\n try {\r\n this._reconnectedCallbacks.forEach((c) => c.apply(this, [this.connection.connectionId]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\r\n }\r\n }\r\n return;\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, `Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose();\r\n }\r\n return;\r\n }\r\n retryError = e instanceof Error ? e : new Error(e.toString());\r\n nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n }\r\n }\r\n this._logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\r\n this._completeClose();\r\n }\r\n _getNextRetryDelay(previousRetryCount, elapsedMilliseconds, retryReason) {\r\n try {\r\n return this._reconnectPolicy.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds,\r\n previousRetryCount,\r\n retryReason,\r\n });\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\r\n return null;\r\n }\r\n }\r\n _cancelCallbacksWithError(error) {\r\n const callbacks = this._callbacks;\r\n this._callbacks = {};\r\n Object.keys(callbacks)\r\n .forEach((key) => {\r\n const callback = callbacks[key];\r\n try {\r\n callback(null, error);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream 'error' callback called with '${error}' threw error: ${getErrorString(e)}`);\r\n }\r\n });\r\n }\r\n _cleanupPingTimer() {\r\n if (this._pingServerHandle) {\r\n clearTimeout(this._pingServerHandle);\r\n this._pingServerHandle = undefined;\r\n }\r\n }\r\n _cleanupTimeout() {\r\n if (this._timeoutHandle) {\r\n clearTimeout(this._timeoutHandle);\r\n }\r\n }\r\n _createInvocation(methodName, args, nonblocking, streamIds) {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n else {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n }\r\n _launchStreams(streams, promiseQueue) {\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // eslint-disable-next-line guard-for-in\r\n for (const streamId in streams) {\r\n streams[streamId].subscribe({\r\n complete: () => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId)));\r\n },\r\n error: (err) => {\r\n let message;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n }\r\n else if (err && err.toString) {\r\n message = err.toString();\r\n }\r\n else {\r\n message = \"Unknown error\";\r\n }\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId, message)));\r\n },\r\n next: (item) => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createStreamItemMessage(streamId, item)));\r\n },\r\n });\r\n }\r\n }\r\n _replaceStreamingParams(args) {\r\n const streams = [];\r\n const streamIds = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const argument = args[i];\r\n if (this._isObservable(argument)) {\r\n const streamId = this._invocationId;\r\n this._invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n return [streams, streamIds];\r\n }\r\n _isObservable(arg) {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n }\r\n _createStreamInvocation(methodName, args, streamIds) {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n }\r\n _createCancelInvocation(id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n }\r\n _createStreamItemMessage(id, item) {\r\n return {\r\n invocationId: id,\r\n item,\r\n type: MessageType.StreamItem,\r\n };\r\n }\r\n _createCompletionMessage(id, error, result) {\r\n if (error) {\r\n return {\r\n error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n return {\r\n invocationId: id,\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nconst JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nexport class JsonHubProtocol {\r\n constructor() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 1;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this._isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this._isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this._isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n }\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n writeMessage(message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n _isInvocationMessage(message) {\r\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n _isStreamItemMessage(message) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n _isCompletionMessage(message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n _assertNotEmptyString(value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\nconst LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\nfunction parseLogLevel(name) {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n }\r\n else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nexport class HubConnectionBuilder {\r\n configureLogging(logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n }\r\n withUrl(url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n }\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n withHubProtocol(protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n withAutomaticReconnect(retryDelaysOrReconnectPolicy) {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n }\r\n else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n }\r\n else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n return this;\r\n }\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n build() {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy);\r\n }\r\n}\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth-service/auth.service';\nimport { AzureApiBase } from '../azure-api/azure-api-base';\nimport { ProcessSession } from './process-session';\nimport { ProcessStartRequest } from './process-start-request';\nimport { ProcessStatus } from './process-status';\nimport { ProcessUpdate } from './process-update';\nimport { Process } from './process';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport * as signalR from '@microsoft/signalr';\nimport { HubConnectionState } from '@microsoft/signalr';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessingService extends AzureApiBase implements OnDestroy {\n\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.apiBaseUrl, '/process');\n }\n\n private _processes$ = new ReplaySubject>(1);\n\n /** Observable that will emit when when a process is added or removed */\n public processes$ = this._processes$.asObservable();\n\n /** Collection of current processes */\n public processes: Process[] = [];\n\n private hubConnection: signalR.HubConnection;\n public startConnection(): Promise {\n if (this.hubConnection == null) {\n this.hubConnection = new signalR.HubConnectionBuilder()\n .withUrl(`${environment.serverEventsEndpoint}/processStatus`, {\n accessTokenFactory: () => { return this.authService.IdToken; },\n transport: signalR.HttpTransportType.WebSockets\n })\n .build();\n }\n\n if (this.hubConnection.state == HubConnectionState.Disconnected || this.hubConnection.state == HubConnectionState.Disconnecting) {\n try {\n return this.hubConnection\n .start();\n } catch (err) {\n console.log('Error while starting signalr connection: ' + err);\n }\n }\n }\n\n /** Add a new process and start it */\n async addNewProcess(process: Process): Promise {\n this.processes.push(process);\n this._processes$.next(process);\n\n const request: ProcessStartRequest = {\n message: process.message,\n queue: process.queue,\n expanded: process.expanded || false\n };\n \n await this.startConnection();\n\n this.startProcess(request).subscribe((session) => {\n process.session = session;\n this.hubConnection.stream('GetStatusUpdates', session.statusSessionId, 'facesheet-export').subscribe({\n next: (status) => {\n process.status = status;\n },\n error: (error) => {\n this.closeConnection();\n process.status.isFailed = true;\n console.error(error);\n },\n complete: () => {\n this.closeConnection();\n\n if (process.onComplete != null) {\n process.onComplete();\n }\n }\n });\n });\n }\n\n /** Remove a process. Will cause a cancel event if the process has not completed. */\n removeProcess(process: Process): void {\n const index = this.processes.findIndex(x => x == process);\n this.processes.splice(index, 1);\n\n this._processes$.next(null);\n\n if (!process.status?.isComplete && !process.status?.isFailed) {\n if (process.onCancel != null) {\n process.onCancel();\n }\n\n this.updateProcess({\n isCancel: true,\n message: null,\n queue: process.queue,\n sessionId: process.session.processSessionId\n }).subscribe();\n }\n }\n\n public updateProcess(request: ProcessUpdate): Observable {\n return this.post('/processUpdate', request);\n }\n\n private startProcess(request: ProcessStartRequest): Observable {\n return this.post('/processStart', request);\n }\n\n private getProcessStatus(session: ProcessSession, queue: string): Observable {\n const params = new HttpParams().set('sessionId', session.statusSessionId).append('queue', queue);\n\n return this.get('/processStatus', params);\n }\n\n private closeConnection(): void {\n const hasAnyRunningProcess = this.processes.some(x => !x.status.isCancelled && !x.status.isFailed && !x.status.isComplete);\n if (this.hubConnection && !hasAnyRunningProcess) {\n this.hubConnection.stop();\n this.hubConnection = undefined;\n }\n }\n\n ngOnDestroy(): void {\n this.closeConnection();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { environment } from 'src/environments/environment';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport moment from 'moment';\nimport { PatientMeasure } from './patientMeasure';\nimport { Measure } from './measure';\n@Injectable({\n providedIn: 'root'\n})\nexport class QualityService {\n patientCache: { [key: string]: PatientMeasure[] } = {};\n\n constructor(\n private authService: AuthService,\n private httpClient: HttpClient,\n private ToastrMessageService: ToastrMessageService\n ) {}\n\n async getMeasurePatients(\n tierId: string,\n tierNum: number,\n measureID: string,\n activeFilters: IQualityDashboardActiveFilters,\n patientTableFilteringId: string\n ): Promise> {\n const authToken = this.authService.getToken();\n const headers = {\n Authorization: `Bearer ${authToken}`,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey\n };\n\n const url = `${environment.qualityInitiativeApiUrl}/api/qi/getMeasurePatients`;\n let params = new HttpParams()\n .set('measureID', measureID)\n .set('tierId', tierId)\n .set('tierNum', tierNum)\n .set('patientTableFilteringId', patientTableFilteringId);\n // .set('year', activeFilters.year)\n // .set('assignment', activeFilters.assignment)\n // .set('dataFeed', activeFilters.dataFeed)\n // .set('measureSet', activeFilters.measureSet);\n for (const filter in activeFilters) {\n params = params.append(filter, activeFilters[filter]);\n }\n const options = {\n headers: headers,\n params: params\n };\n\n const patientData = await this.httpClient.get>(url, options).toPromise();\n\n return patientData;\n }\n async getMeasures(\n tierId: string,\n measureID: string[] = [],\n activeFilters: IQualityDashboardActiveFilters\n ): Promise> {\n const authToken = this.authService.getToken();\n const headers = {\n Authorization: `Bearer ${authToken}`,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey\n };\n\n const url = `${environment.qualityInitiativeApiUrl}/api/qi/getMeasures`;\n let params = new HttpParams().set('tierId', tierId);\n for (const measure in measureID) {\n params = params.append('measureID', measureID[measure]);\n }\n for (const filter in activeFilters) {\n params = params.append(filter, activeFilters[filter]);\n }\n const options = {\n headers: headers,\n params: params\n };\n\n //TODO: Really call API here\n //const measureData = await this.httpClient\n // .get>(url, options)\n // .toPromise();\n\n // TODO: Remove dummy measures data\n\n const measureData = [\n {\n measureId: 'id0',\n numerator: 9,\n denominator: 59,\n numeratorExclusions: 0,\n denominatorExclusions: 0,\n target: 79,\n measureDescription:\n 'Percentage of women 50 - 74 years of age who had a mammogram to screen for breast cancer in the 27 months prior to the end of the measurement period.',\n measureName: 'Measure 0',\n ehrFlag: true\n },\n {\n measureId: 'id1',\n numerator: 120,\n denominator: 124,\n numeratorExclusions: 0,\n denominatorExclusions: 0,\n target: 100,\n measureDescription:\n 'Percentage of women 50 - 74 years of age who had a mammogram to screen for breast cancer in the 27 months prior to the end of the measurement period.',\n measureName: 'Measure 1'\n },\n {\n measureId: 'id2',\n numerator: 75,\n denominator: 68,\n numeratorExclusions: 0,\n denominatorExclusions: 0,\n target: 53,\n measureDescription:\n 'Percentage of women 50 - 74 years of age who had a mammogram to screen for breast cancer in the 27 months prior to the end of the measurement period.',\n measureName: 'Measure 2'\n },\n {\n measureId: 'id3',\n numerator: 58,\n denominator: 114,\n numeratorExclusions: 0,\n denominatorExclusions: 0,\n target: 24,\n measureDescription:\n 'Percentage of women 50 - 74 years of age who had a mammogram to screen for breast cancer in the 27 months prior to the end of the measurement period.',\n measureName: 'Measure 3',\n ehrFlag: true\n },\n {\n measureId: 'id4',\n numerator: 16,\n denominator: 75,\n numeratorExclusions: 0,\n denominatorExclusions: 0,\n target: 49,\n measureDescription:\n 'Percentage of women 50 - 74 years of age who had a mammogram to screen for breast cancer in the 27 months prior to the end of the measurement period.',\n measureName: 'Measure 4',\n ehrFlag: true\n },\n {\n measureId: 'id5',\n numerator: 18,\n denominator: 84,\n numeratorExclusions: 0,\n denominatorExclusions: 0,\n target: 58,\n measureDescription:\n 'Percentage of women 50 - 74 years of age who had a mammogram to screen for breast cancer in the 27 months prior to the end of the measurement period.',\n measureName: 'Measure 5'\n },\n {\n measureId: 'id6',\n numerator: 59,\n denominator: 63,\n numeratorExclusions: 0,\n denominatorExclusions: 0,\n target: 87,\n measureDescription:\n 'Percentage of women 50 - 74 years of age who had a mammogram to screen for breast cancer in the 27 months prior to the end of the measurement period.',\n measureName: 'Measure 6'\n },\n {\n measureId: 'id7',\n numerator: 29,\n denominator: 92,\n numeratorExclusions: 0,\n denominatorExclusions: 0,\n target: 9,\n measureDescription:\n 'Percentage of women 50 - 74 years of age who had a mammogram to screen for breast cancer in the 27 months prior to the end of the measurement period.',\n measureName: 'Measure 7'\n },\n {\n measureId: 'id8',\n numerator: 18,\n denominator: 70,\n numeratorExclusions: 0,\n denominatorExclusions: 0,\n target: 15,\n measureDescription:\n 'Percentage of women 50 - 74 years of age who had a mammogram to screen for breast cancer in the 27 months prior to the end of the measurement period.',\n measureName: 'Measure 8'\n },\n {\n measureId: 'id9',\n numerator: 97,\n denominator: 66,\n numeratorExclusions: 0,\n denominatorExclusions: 0,\n target: 76,\n measureDescription:\n 'Percentage of women 50 - 74 years of age who had a mammogram to screen for breast cancer in the 27 months prior to the end of the measurement period.',\n measureName: 'Measure 9'\n }\n ];\n // Simulate picking one measureid\n if (measureID.length == 1) {\n return measureData.filter(m => m.measureId === measureID[0]);\n }\n //simulate loading\n await new Promise(resolve => setTimeout(resolve, 2000));\n\n return measureData;\n }\n\n async getPatientsSummary(\n tierId: string,\n activeFilters: IQualityDashboardActiveFilters\n ): Promise<{\n totalPatients: number;\n patientsWithGapsClosed: number;\n }> {\n const authToken = this.authService.getToken();\n const headers = {\n Authorization: `Bearer ${authToken}`,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey\n };\n\n const url = `${environment.qualityInitiativeApiUrl}/api/qi/getPatientSummary`;\n let params = new HttpParams().set('tierId', tierId);\n\n for (const filter in activeFilters) {\n params = params.append(filter, activeFilters[filter]);\n }\n const options = {\n headers: headers,\n params: params\n };\n\n //TODO: Really call API here\n // const patientSummary = await this.httpClient\n // .get>(url, options)\n // .toPromise();\n\n const patientSummary = {\n totalPatients: Math.floor(500 + Math.random() * 500),\n patientsWithGapsClosed: Math.floor(Math.random() * 500)\n };\n\n //simulate loading\n await new Promise(resolve => setTimeout(resolve, 2000));\n\n return patientSummary;\n }\n\n getMeasureMeetingTarget(measure: Measure): QualityDashboardMeetingTargets {\n const targetValue = Math.floor((measure.target / 100) * measure.denominator);\n const difference = measure.numerator - targetValue;\n\n if (difference >= 0) {\n return QualityDashboardMeetingTargets.Meeting;\n } else {\n // Here we are defining \"approaching\" as within 10% of the target number\n const approachingTarget = Math.floor(targetValue * 0.9);\n const approachingDifference = measure.numerator - approachingTarget;\n if (approachingDifference > 0) {\n return QualityDashboardMeetingTargets.Approaching;\n } else {\n return QualityDashboardMeetingTargets.Underperforming;\n }\n }\n }\n\n generateRandomDate(from, to): Date {\n return new Date(from.valueOf() + Math.random() * (to.valueOf() - from.valueOf()));\n }\n getRandomInt(max: number): number {\n return Math.floor(Math.random() * max);\n }\n}\nexport interface IQualityDashboardActiveFilters {\n year?: string;\n assignment?: string;\n dataFeed?: string;\n measureSet?: string;\n}\nexport interface IQualityDashboardActiveFilters {\n year?: string;\n assignment?: string;\n dataFeed?: string;\n measureSet?: string;\n}\nexport enum QualityDashboardMeetingTargets {\n Underperforming = 0,\n Meeting = 1,\n Approaching = 2\n}\n","import { HttpHeaders, HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth-service/auth.service';\nimport { HierarchyTierService } from '../hierarchy/hierarchy-tier.service';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { takeUntil } from 'rxjs/operators';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface RecentsElement {\n id: number;\n value: string;\n}\n\nexport interface RecentsItem {\n navURL: string;\n dateTime: string;\n elements: RecentsElement[];\n}\n@Injectable({\n providedIn: 'root',\n})\nexport class RecentsCacheService extends KillSubscriptions {\n public recents$: BehaviorSubject = new BehaviorSubject([]);\n recentsTier$: BehaviorSubject = new BehaviorSubject('');\n\n private endpoint = environment.apiBaseUrl + '/access/userRecents';\n private get httpHeaders(): HttpHeaders {\n return new HttpHeaders({\n Authorization: `Bearer ${this.authService.IdToken}`,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n });\n }\n\n constructor(\n private httpClient: HttpClient,\n private authService: AuthService,\n private hierarchyTierService: HierarchyTierService\n ) {\n super();\n hierarchyTierService.currentTier$\n .pipe(takeUntil(this.killTrigger))\n .subscribe((currentTier) => {\n if (currentTier) {\n const {\n selectedItem: { tier2_ID },\n } = currentTier;\n if (tier2_ID !== this.recentsTier$.value) {\n this.recentsTier$.next(tier2_ID);\n }\n this.httpClient\n .get(this.endpoint + `?tier2Id=${tier2_ID}`, {\n responseType: 'json',\n headers: this.httpHeaders,\n })\n .subscribe((result: RecentsItem[]) => {\n this.recents$.next(result);\n });\n }\n });\n }\n\n public push(recent: RecentsItem): void {\n let temp = this.recents$.value;\n temp = temp.filter((r) => r.navURL !== recent.navURL);\n temp.unshift(recent);\n if (temp.length > 10) {\n temp.length = 10;\n }\n this.recents$.next(temp);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { retry } from 'rxjs/operators';\nimport { MessageService } from '../message-service/message.service';\nimport { environment } from 'src/environments/environment';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RestApiService {\n\n httpOptions = {\n headers: new HttpHeaders({\n 'content-Type': 'application/json',\n })\n };\n constructor(private httpClient: HttpClient, private messageService: MessageService)\n {\n }\n\n public handleHttpErrorResponse(httpError: HttpErrorResponse, operation: string)\n {\n if (!environment.production)\n {\n // console.warn('error error:',httpError.error);\n // console.warn('error message:',httpError.error.userMessage);\n }\n\n let messageTxt = (httpError.error != null && httpError.error.userMessage != null) ?\n httpError.error.userMessage : null;\n if (messageTxt == null) {\n messageTxt = (httpError.error != null && httpError.error.message != null) ?\n httpError.error.message :\n `server returned code \"${httpError.status}: with body \"${httpError.error}\"`;\n }\n httpError.type;\n const message: any = {message: messageTxt, result: 'error', url: httpError.url,\n status: httpError.status, op: operation};\n this.messageService.add(message);\n // console.warn(' message in Service:',this.messageService.top());\n\n return messageTxt;\n }\n public handleHttpSuccessResponse(httpResponse: HttpResponse, operation: string)\n {\n const message: any = {message: httpResponse.body, result: 'success', url: httpResponse.url,\n status: httpResponse.status, op: operation};\n this.messageService.add(message);\n }\n public handleHttpSuccessResponseBody(res: any, operation: string)\n {\n const message: any = {message: res, result: 'success', url: res.url,\n status: 'success', op: operation};\n this.messageService.add(message);\n }\n\n public postHttp(url: string, token: any): boolean{\n this.messageService.clear();\n let succeeded = false;\n const httpOptions = {\n headers: new HttpHeaders({\n 'content-Type': 'application/json', Authorization: 'Bearer ' + token,\n })\n };\n let bodyTxt: any;\n this.httpClient.post(url, this.httpOptions).subscribe(success => {\n // console.warn(\"success callback\", success);\n this.handleHttpSuccessResponseBody(success, 'POST');\n succeeded = true;\n }, error => { // second parameter is to listen for error\n if (this.retryableError(error)) {\n retry(2);\n }\n this.handleHttpErrorResponse(error, 'POST');\n });\n return succeeded;\n\n }\npublic redirectTo(url){\n document.location.href = url;\n\n}\n public getHttp(url: string, token?: any): Observable{\n this.messageService.clear();\n let httpOptions: any;\n if (token) {\n httpOptions = {\n headers: new HttpHeaders({\n 'content-Type': 'application/json', Authorization: 'Bearer ' + token,\n })\n };\n }\n else {\n httpOptions = {\n headers: new HttpHeaders({\n 'content-Type': 'application/json',\n })\n };\n }\n return this.httpClient.get(url, httpOptions);\n// .pipe(catchError(this.handleError('Post', validEmail)));\n\n }\n public retryableError(error: HttpErrorResponse): boolean {\n return (error.status !== 404 && error.status !== 400 && error.status !== 403);\n }\n public requestAgainError(error: HttpErrorResponse): boolean {\n return (error.status === 403);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Params, Router } from '@angular/router';\nimport { HierarchyTierService } from '../hierarchy/hierarchy-tier.service';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\nimport {\n ComponentId,\n ActionId,\n LogAuditElementID,\n UrlExceptionsToRemove\n} from '@shared/models/audit-constants';\nimport {\n RecentsCacheService,\n RecentsElement,\n} from '../recents-cache/recents-cache.service';\nimport { RecentsMatchers } from '@shared/models/recent-matchers';\nimport _ from 'lodash';\n\nexport interface RecentLogData {\n url: string;\n elements: RecentsElement[];\n}\n@Injectable({\n providedIn: 'root',\n})\nexport class RouterHistoryService {\n constructor(\n router: Router,\n private auditService: AuditService,\n private hierarchyTierService: HierarchyTierService,\n private recentsCache: RecentsCacheService\n ) {\n router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n let routeState: {\n url: string,\n queryParams: Params\n } = {\n url: router.url,\n queryParams: {}\n }\n\n if (routeState.url.includes('aco/')) {\n return;\n }\n if (router?.routerState?.snapshot?.root?.children[0]?.queryParams) {\n routeState.queryParams = _.clone(router.routerState.snapshot.root.children[0].queryParams);\n }\n this.filterURLExceptions(routeState);\n for (let idx = 0; idx < RecentsMatchers.length; idx++) {\n if (RecentsMatchers[idx].match(routeState.url)) {\n this.log(RecentsMatchers[idx].createLog(routeState.url, routeState.queryParams));\n break;\n }\n }\n }\n });\n }\n\n public log(data: RecentLogData): void {\n const { url, elements } = data;\n let tier2_ID =\n this.hierarchyTierService.currentTier$.getValue()?.selectedItem.tier2_ID;\n const segments = url.split('/');\n // correct hierarchy service race condition so recents don't get associated with the wrong community\n if (segments[1] === 'com' && segments[2] !== tier2_ID) {\n tier2_ID = segments[2];\n }\n elements.push({\n value: tier2_ID,\n id: LogAuditElementID.Tier2_ID,\n });\n\n this.recentsCache.push({\n navURL: url,\n dateTime: Date.now().toString(),\n elements: elements,\n });\n\n this.auditService.auditLog(\n url,\n ComponentId.Recents,\n null,\n ActionId.Navigate,\n null,\n null,\n null,\n elements.map((e) => {\n return {\n LogAuditElementID: e.id,\n ElementValue: e.value,\n };\n })\n );\n }\n\n filterURLExceptions(routeState: {\n url: string,\n queryParams: Params\n }): void {\n let urlWithoutQueryParams = routeState.url.split(\"?\")?.[0];\n let urlQueryParams = routeState.url.split(\"?\")?.[1];\n urlQueryParams = urlQueryParams?.split(\"&\")?.filter(el => !UrlExceptionsToRemove.Params.includes(el.split(\"=\")?.[0])).join(\"&\") || \"\";\n routeState.url = urlWithoutQueryParams + (urlQueryParams ? \"?\" + urlQueryParams : '');\n for (let key in routeState.queryParams) {\n if (UrlExceptionsToRemove.Params.includes(key)) {\n delete routeState.queryParams[key];\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SideBarToggleService {\n public sidebarToggle: BehaviorSubject = new BehaviorSubject(\n true\n );\n\n constructor() {}\n\n public toggleSidebarPane(toggledStatus: boolean) {\n this.sidebarToggle.next(toggledStatus);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport moment from 'moment';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastrMessageService {\n settings: any;\n constructor(private ToastrService: ToastrService) {\n this.settings = {\n disableTimeOut: true,\n tapToDismiss: false,\n closeButton: true,\n enableHtml: true,\n };\n }\n error(error: Error & { error?: { message: string } }): void {\n let errorText = error.error?.message || error.message;\n\n if (errorText.includes('Error 0')) { // This console.log is related to diagnosing CC-2713\n console.error(error);\n errorText = 'Request timed out';\n }\n\n if (errorText) {\n const body = `\n

Please refresh the page and try again. If you continue seeing this error contact ${AppConstants.SupportEmail} and provide the below information:

\n

${errorText}

\n

${moment().format()}

`;\n\n this.ToastrService.error(body, '', this.settings);\n }\n }\n success(message: {title: string, body: string}): void {\n this.ToastrService.success(message.body, message.title, this.settings);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, ReplaySubject, Observable } from 'rxjs';\nimport { Access, AccessGQL } from '../graphql/access.service';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\nimport { Data } from '@angular/router';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { Subject } from 'rxjs';\nimport { Access2Service } from '@api/access2/services';\nimport { Access as Access2Type } from '@api/access2/models';\nimport { FeatureFlagService } from '../feature-flag/feature-flag.service';\nimport { FeatureFlagAccess2 } from '@shared/models/module-constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserAccessService {\n public currentAccess$ = new BehaviorSubject(null);\n public accessHistory$ = new ReplaySubject(1);\n\n constructor(private accessGQL: AccessGQL,\n private access2Service: Access2Service,\n private featureFlagService: FeatureFlagService,\n private toastrService: ToastrMessageService) {\n }\n\n public updateAccess(currentTier: IHierarchyTier): Observable {\n const observable: Subject = new Subject();\n if (this.featureFlagService.hasFeatureFlag(FeatureFlagAccess2)) {\n this.access2Service.access2({ tierid: currentTier.selectedTierId }).subscribe(\n (result:Access2Type) => {\n const access = result as Access;\n this.currentAccess$.next(access);\n this.accessHistory$.next(access);\n observable.next(access);\n observable.complete();\n },\n error => {\n this.currentAccess$.next(null);\n this.accessHistory$.next(null);\n this.toastrService.error(error);\n observable.next(error);\n observable.complete();\n }\n );\n }\n else {\n this.accessGQL.watch({ nodeId: currentTier.selectedTierId }, { fetchPolicy: 'cache-first' })\n .valueChanges.subscribe(result => {\n this.currentAccess$.next(result.data?.access);\n this.accessHistory$.next(result.data?.access);\n observable.next(result.data?.access);\n observable.complete();\n }, error => {\n this.currentAccess$.next(null);\n this.accessHistory$.next(null);\n this.toastrService.error(error);\n observable.next(error);\n observable.complete();\n });\n\n }\n\n return observable.asObservable();\n }\n\n public hasFeature(access: Access, featureId: number): boolean {\n return access?.modules?.some(m => m.features?.some(f => f.featureId === featureId));\n }\n\n public hasModule(access: Access, moduleId: number): boolean {\n return access?.modules?.some(m => m.moduleId === moduleId);\n }\n\n /** Returns whether access structure grants access to any of the component ids provided\n * @param access - instance of the Access interface returned from the access endpoint.\n * @param componentIds - either a single component id or an array of them\n * @returns - true if any of the passed in componentIds matches one in the access structure\n */\n public hasComponent(access: Access, componentIds: number | Array): boolean {\n // REVIEW Is this a real edge case?\n if (componentIds === 0) {\n return true;\n }\n\n const arr = Array.isArray(componentIds) ? componentIds : [componentIds];\n return access?.modules?.some(m =>\n m.features?.some(f =>\n f.components?.some(c =>\n arr.includes(c.componentId)\n )\n )\n );\n }\n\n public accessRestricted(routeData: Data, access: Access): boolean {\n let hasAccess = true;\n if (routeData.moduleId != null) {\n hasAccess = hasAccess && this.hasModule(access, routeData.moduleId);\n }\n if (routeData.featureId != null) {\n hasAccess = hasAccess && this.hasFeature(access, routeData.featureId);\n }\n if (routeData.componentId != null) {\n hasAccess = hasAccess && this.hasComponent(access, routeData.componentId);\n }\n\n return hasAccess;\n}\n}\n\n","import { NgModule } from '@angular/core';\n\nimport { CountToArrayPipe } from './count-to-array.pipe';\nimport { ClassesJoinTrimPipe } from './classes-join-trim.pipe';\nimport { GetInitialsFromNamePipe } from './get-initials-from-name.pipe';\nimport { GetAgeFromDOB } from './age.pipe';\nimport { RemoveStringWhitespacePipe } from './remove-string-whitespace.pipe';\nimport { SpacesToDashesPipe } from './spaces-to-dashes.pipe';\nimport { MbiFormatPipe } from './format-patient-mbi.pipe';\nimport { MaskPipe } from './mask.pipe';\nimport { MinuteSecondsPipe } from './minute-seconds.pipe';\nimport { MonthNumberPipe } from './month-number.pipe';\nimport { DXCodeFormatPipe } from './dx-code-format.pipe';\n\n\n@NgModule({\n declarations:[\n CountToArrayPipe,\n ClassesJoinTrimPipe,\n GetInitialsFromNamePipe,\n GetAgeFromDOB,\n RemoveStringWhitespacePipe,\n MbiFormatPipe,\n SpacesToDashesPipe,\n MaskPipe,\n MinuteSecondsPipe,\n MonthNumberPipe,\n DXCodeFormatPipe\n ],\n imports:[],\n exports:[\n CountToArrayPipe,\n ClassesJoinTrimPipe,\n GetInitialsFromNamePipe,\n GetAgeFromDOB,\n RemoveStringWhitespacePipe,\n MbiFormatPipe,\n SpacesToDashesPipe,\n MaskPipe,\n MinuteSecondsPipe,\n MonthNumberPipe,\n DXCodeFormatPipe\n ],\n providers: [\n ClassesJoinTrimPipe,\n GetInitialsFromNamePipe,\n GetAgeFromDOB,\n RemoveStringWhitespacePipe,\n MbiFormatPipe,\n SpacesToDashesPipe,\n MaskPipe,\n MinuteSecondsPipe,\n MonthNumberPipe\n ]\n})\n\nexport class PipesModule { }\n","import { NgModule } from '@angular/core';\n\nimport { ClickAwayDirective } from './click-away.directive';\nimport { HasModuleDirective } from './has-access/has-module.directive';\nimport { HasFeatureDirective } from './has-access/has-feature.directive';\nimport { HasComponentDirective } from './has-access/has-component.directive';\nimport { AgGridResizeDirective } from './ag-grid-resize/ag-grid-resize.directive';\nimport { HasFeatureFlagDirective } from './has-access/has-feature-flag.directive';\nimport { DoesNotHaveFeatureFlagDirective } from './has-access/does-not-have-feature-flag.directive';\nimport { HasFeatureFlagAndAllComponents } from './has-access/has-feature-flag-and-all-components.directive';\nimport { DoesNotHaveFeatureFlagOrAnyComponents } from './has-access/does-not-have-feature-flag-or-any-components.directive';\nimport { IsNotTierNumDirective } from './is-not-tier-num.directive';\nimport { HasFeatureFlagDefinedDirective } from './has-access/has-feature-flag-defined.directive';\nimport { CopyToClipboardDirective } from '@shared/directives/copy-to-clipboard.directive';\n\n@NgModule({\n declarations: [\n ClickAwayDirective,\n CopyToClipboardDirective,\n HasModuleDirective,\n HasFeatureDirective,\n HasComponentDirective,\n AgGridResizeDirective,\n HasFeatureFlagDirective,\n HasFeatureFlagDefinedDirective,\n DoesNotHaveFeatureFlagDirective,\n HasFeatureFlagAndAllComponents,\n DoesNotHaveFeatureFlagOrAnyComponents,\n IsNotTierNumDirective\n ],\n exports: [\n ClickAwayDirective,\n CopyToClipboardDirective,\n HasModuleDirective,\n HasFeatureDirective,\n HasComponentDirective,\n HasFeatureFlagDirective,\n HasFeatureFlagDefinedDirective,\n DoesNotHaveFeatureFlagDirective,\n HasFeatureFlagAndAllComponents,\n DoesNotHaveFeatureFlagOrAnyComponents,\n IsNotTierNumDirective,\n AgGridResizeDirective\n ],\n providers: [\n ClickAwayDirective,\n CopyToClipboardDirective,\n HasModuleDirective,\n HasFeatureDirective,\n HasComponentDirective,\n IsNotTierNumDirective,\n HasFeatureFlagDirective,\n DoesNotHaveFeatureFlagDirective,\n HasFeatureFlagAndAllComponents,\n DoesNotHaveFeatureFlagOrAnyComponents,\n AgGridResizeDirective\n ],\n})\nexport class DirectivesModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PipesModule } from './pipes/pipes.module'\nimport { DirectivesModule } from './directives/directives.module'\nimport { CoachIconComponent } from './components/coach-icon/coach-icon.component';\nimport { CoachTabsComponent } from './components/coach-tabs/coach-tabs.component';\nimport { CoachToggleComponent } from './components/coach-toggle/coach-toggle.component';\nimport { EulaComponent } from './components/eula/eula.component';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CoachTogglePaneComponent } from './components/coach-toggle-pane/coach-toggle-pane.component';\nimport { LoadingIndicatorComponent } from './components/loading-indicator/loading-indicator.component';\nimport { HeaderTitlePortalComponent } from './components/portals/header-title-portal/header-title-portal.component';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { HeaderBreadcrumbsComponent } from '@shared/components/header-breadcrumbs/header-breadcrumbs.component';\nimport { RouterLinkRendererComponent } from '@shared/components/grid/router-link-renderer/router-link-renderer.component';\nimport { AgGridResizeDirective } from '@shared/directives/ag-grid-resize/ag-grid-resize.directive';\nimport { HierarchyRequiredComponent } from './components/hierarchy-required/hierarchy-required.component';\nimport { ColumnsSettingsComponent } from './components/grid/columns-settings/columns-settings/columns-settings.component';\nimport { SubmitUpcomingSubmissionSummary } from '../views/submit/shared/components/upcoming-submission-summary/upcoming-submission-summary';\nimport { TrackPerformanceWidgetComponent } from './components/track-performance-widget/track-performance-widget.component';\nimport { PhonePipe } from './pipes/phone.pipe';\nimport { SharedRedirectComponent } from './components/shared-redirect/shared-redirect.component';\nimport { ButtonToggleComponent } from './components/button-toggle/button-toggle.component';\nimport { LoadingContainerComponent } from './components/loading-container/loading-container.component';\nimport { ExportReportButtonComponent } from './components/export-report-button/export-report-button.component';\nimport { CheckboxRendererComponent } from './components/grid/checkbox-renderer/checkbox-renderer.component';\nimport { CheckboxHeaderRendererComponent } from './components/grid/checkbox-header-renderer/checkbox-header-renderer.component';\nimport { InvalidInputComponent } from '@shared/components/form-validation/invalid-input/invalid-input.component';\nimport { AttributionFilterPaneComponent } from './components/attribution-filter-pane/attribution-filter-pane.component';\nimport { QualityService } from '@shared/services/quality-dashboard/quality.service';\n\nconst SharedModules = [\n CommonModule,\n RouterModule,\n PipesModule,\n FormsModule,\n ReactiveFormsModule,\n DirectivesModule,\n PortalModule,\n OverlayModule\n];\n\n// Only list components that are used frequently throughout the entire app.\n// (Global components that are used throughout the app, but are not frequently used, import directly into component/module where it is used.)\nconst SharedComponents = [\n CoachIconComponent,\n CoachTabsComponent,\n CoachToggleComponent,\n CoachTogglePaneComponent,\n LoadingIndicatorComponent,\n HeaderTitlePortalComponent,\n EulaComponent,\n HeaderBreadcrumbsComponent,\n RouterLinkRendererComponent,\n HierarchyRequiredComponent,\n SubmitUpcomingSubmissionSummary,\n TrackPerformanceWidgetComponent,\n ButtonToggleComponent,\n LoadingContainerComponent,\n ExportReportButtonComponent,\n CheckboxRendererComponent,\n ColumnsSettingsComponent,\n SharedRedirectComponent,\n CheckboxHeaderRendererComponent,\n PhonePipe,\n InvalidInputComponent,\n AttributionFilterPaneComponent\n];\n\n@NgModule({\n declarations: [\n ...SharedComponents\n ],\n imports: [\n ...SharedModules\n ],\n exports: [\n ...SharedModules,\n ...SharedComponents\n ],\n providers: [\n QualityService\n ]\n})\nexport class SharedModule { }\n","import { formatDate } from '@angular/common';\nimport { HttpParams } from '@angular/common/http';\nimport { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { Params } from '@angular/router';\n\n/** Creates a deep copy of an object or array preserving all proprites, methods, and property descriptors\n * @author https://medium.com/javascript-in-plain-english/deep-clone-an-object-and-preserve-its-type-with-typescript-d488c35e5574\n */\nexport function deepCopy(source: T): T {\n return Array.isArray(source)\n ? source.map(item => deepCopy(item))\n : source instanceof Date\n ? new Date(source.getTime())\n : source && typeof source === 'object'\n ? Object.getOwnPropertyNames(source).reduce((o, prop) => {\n o[prop] = deepCopy(source[prop]);\n Object.defineProperty(o, prop, Object.getOwnPropertyDescriptor(source, prop));\n return o;\n }, Object.create(Object.getPrototypeOf(source)))\n : source as T;\n}\n\nexport function stringToNumber(input: string): number | null {\n const convertedValue = parseInt(input, 10);\n return Number.isNaN(convertedValue) ? null : convertedValue;\n}\n\nexport function objectToParams(request: any): HttpParams {\n let params: HttpParams = new HttpParams();\n\n Object.keys(request).forEach(key => {\n if (request[key] != null) {\n params = params.append(key, request[key]);\n }\n });\n\n return params;\n}\n\nexport class DateValidators {\n static dateGreaterThanOrEqual(otherDateControl: AbstractControl): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value == null || otherDateControl.value == null) {\n return null;\n }\n\n const controlDate = new Date(control.value);\n const otherDate = new Date(otherDateControl.value);\n const isAfter = controlDate >= otherDate;\n return isAfter ? null : { dateMinimum: true };\n };\n }\n}\n\nexport function printPdf(file: ArrayBuffer, title: string): void {\n const url = window.URL.createObjectURL(new Blob([file as BlobPart], { type: 'application/pdf' }));\n\n const iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = url;\n iframe.title = title;\n document.body.appendChild(iframe);\n\n if (navigator.userAgent.indexOf(\"Chrome\") > -1) {\n iframe.contentWindow.print();\n } else {\n setTimeout(() => iframe.contentWindow.print(), 2000);\n }\n}\n\n/**\n * Finds all unique occurences of provided property in an array of objects\n * @param {T[]} array Array of objects\n * @param {string} propertyName Name of property to find unique values in\n */\nexport function uniqueInArray(array: T[], propertyName: string): T[] {\n return array.filter((e, i) => array.findIndex(a => a[propertyName] === e[propertyName]) === i);\n}\n\n/** \n * Group a given array of objects by key\n * @param {T[]} list Array of objects\n * @param {(item: T) => K} getKey Function which returns the object key to group on\n * @returns {Record} Record object containing grouped array items\n */\nexport function groupBy(list: T[], getKey: (item: T) => K): Record {\n return list.reduce((previous, currentItem) => {\n const group = getKey(currentItem);\n if (!previous[group]) previous[group] = [];\n previous[group].push(currentItem);\n return previous;\n }, {} as Record);\n}\n\n/**\n * Force the browser to download a file\n * @param fileName Name to save downloaded file as\n * @param content Binary file content\n * @param contentType Media type of file\n */\nexport function downloadFile(fileName: string, content: ArrayBuffer, contentType: string): void {\n const url = window.URL.createObjectURL(new Blob([content as BlobPart], { type: contentType }));\n\n const link = document.createElement('a');\n document.body.appendChild(link);\n link.setAttribute('style', 'display: none');\n link.href = url;\n link.download = fileName;\n link.click();\n}\n\n/**\n * Copy supplied text to the clipboard\n * @param text The text to copy\n */\nexport function copyTextToClipboard(text: string): void {\n const selBox = document.createElement('textarea');\n selBox.style.position = 'fixed';\n selBox.style.left = '0';\n selBox.style.top = '0';\n selBox.style.opacity = '0';\n selBox.value = text;\n document.body.appendChild(selBox);\n selBox.focus();\n selBox.select();\n document.execCommand('copy');\n document.body.removeChild(selBox);\n}\n\n/**\n * Get base URL and query parameters object seperately from URL as string\n * @param url The full URL including query parameters string\n * @returns { url: string, params: Params } Base URL string and query parameters object\n */\nexport function getUrlAndParams(url: string): { baseUrl: string, params: Params } {\n const urlParts = url.split('?');\n const searchParams = new URLSearchParams(urlParts[1]);\n const params: Params = {};\n\n searchParams.forEach((value, key) => params[key] = value);\n\n return {\n baseUrl: urlParts[0],\n params: params\n };\n}\n\nexport function formatNullableDate(date: Date, format: string, locale: string) : string {\n return date == null ? '' : formatDate(date, 'MM/dd/YYYY', locale);\n}\n\n/**\n * Given the numerical month, returns a string containing the formatted month name\n * @param month Month number (0 - 11)\n * @param format Format of month name (long, short, etc)\n * @returns String with formatted month name\n */\nexport function getNameFromMonthNumber(month: number, format: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' | undefined = 'short') : string {\n const date = new Date();\n date.setMonth(month);\n const monthName = date.toLocaleString('default', { month: format });\n return monthName;\n}\n","import { Injectable } from '@angular/core';\nimport { HccDashboardClinician } from './hcc-dashboard-clinician';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { environment } from 'src/environments/environment';\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HccCliniciansService extends AzureApiBase {\n\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/hccDashboard/clinicians');\n }\n\n getClinicians(tierNum: number, tierId: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('tierNum', tierNum == null ? '' : tierNum.toString())\n .set('tierId', tierId);\n\n return this.getAll(null, params);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AttributionFilterModel } from '@shared/components/attribution-filter-pane/attribution-filter-model';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HccDashboardFilterService {\n\n private filterModel = new BehaviorSubject(undefined);\n public filterModel$ = this.filterModel.asObservable();\n\n constructor() { }\n\n public setFilterModel(filterModel: AttributionFilterModel): void {\n this.filterModel.next(filterModel);\n }\n}\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { HccDashboardClinician } from '../hcc-dashboard-clinician';\nimport { GridFilterService } from '@shared/components/grid/grid-filter.service';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { CLINICIANS_REPORT_GRID_KEY, PATIENT_SUMMARY_GRID_KEY } from '@shared/components/grid/grid-filter.service';\nimport { environment } from 'src/environments/environment';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { RouterLinkRendererComponent } from '@shared/components/grid/router-link-renderer/router-link-renderer.component';\nimport { HccDashboardService } from '@api/track/services';\nimport { HccDashboardFilterService } from '@track/track-clinical/hcc-dashboard/hcc-dashboard-filter.service';\nimport { combineLatest } from 'rxjs';\nimport { ATTRIBUTED, MOST_ASSIGNABLE } from '@track/track-constants';\n\n@Component({\n selector: 'coach-clinicians-report2',\n templateUrl: './clinicians-report2.component.html',\n host: {\n class: 'coach-clinicians-report2'\n },\n providers: [MaskPipe]\n})\nexport class CliniciansReport2Component extends PersistentGridFilters implements OnInit, OnDestroy {\n\n tierNum: number;\n tierId: string;\n\n columnDefs = [\n {\n headerName: 'Practice Name', field: 'practiceName', tooltipField: 'practiceName', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Displays the name of the practice the clinician is associated with'\n },\n {\n headerName: 'Clinician', field: 'clinicianName', tooltipField: 'clinicianName', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Displays the name of the clinician with an attributed/assignable population. This column will also display the names of RHC and FQHCs with an attributed/assignable population',\n cellRendererFramework: RouterLinkRendererComponent,\n cellRendererParams: {\n valueOverride: (data: HccDashboardClinician): string => {\n return data.clinicianNPI == null ? data.practiceName : data.clinicianName;\n },\n linkClicked: (data: HccDashboardClinician) => {\n if (this.userAccessService.currentAccess$.value?.phi) {\n this.gridFilterService.resetFilters(PATIENT_SUMMARY_GRID_KEY);\n\n let clinician: string;\n let queryParams: Params;\n\n if (data.clinicianNPI != null) {\n clinician = data.clinicianNPI;\n } else {\n clinician = data.practiceName;\n queryParams = { isPractice: true };\n }\n\n this.router.navigate(['patients', clinician], { relativeTo: this.route.parent, queryParams: queryParams });\n }\n },\n isDisabled: (data: HccDashboardClinician) => {\n return !this.userAccessService.currentAccess$.value?.phi;\n }\n }\n },\n {\n headerName: 'Clinician NPI', field: 'clinicianNPI', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Clinician\\'s National Provider Identifier',\n valueFormatter: params => {\n const clinician: HccDashboardClinician = params.data;\n\n if (clinician == null) {\n return null;\n }\n else if (environment.maskSensitiveData) {\n return this.mask.transform(clinician.clinicianNPI, 6);\n }\n else {\n return clinician.clinicianNPI;\n }\n }, keyCreator: params => {\n if (environment.maskSensitiveData) {\n return this.mask.transform(params.value, 6);\n }\n else {\n return params.value;\n }\n }\n },\n {\n headerName: 'Clinician Speciality', field: 'clinicianSpecialty', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Clinician\\'s specialty designation from claims'\n },\n {\n headerName: 'Patient Count', field: 'patientCount', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Count of patient attributed or attributed/assignable to the clinician/RHC/FQHC based on filter selected.'\n },\n {\n hide: true, // Hidden with ZBR-12923\n headerName: 'Chronic Conditions Open Gaps', field: 'hccGaps', sortable: true, filter: true, width: 275,\n sort: { direction: 'asc', priority: 0 }, resizable: true,\n headerTooltip: 'Count of open chronic condition gaps.'\n },\n {\n headerName: 'Annual Closure Rate', field: 'overallHCCClosureRate', sortable: true, filter: true,\n headerTooltip: 'Percentage of chronic condition gaps closed by claims in the current calendar year.',\n valueFormatter: (params: any) => {\n const clinician: HccDashboardClinician = params.data;\n return clinician == null ? null : Math.round(clinician.overallHCCClosureRate) + '%';\n }\n }\n ];\n\n rowData: any;\n\n \n constructor(private hccDashboardService: HccDashboardService, private route: ActivatedRoute,\n private router: Router, private gridFilterService: GridFilterService,\n protected filterService: GridFilterService, private mask: MaskPipe,\n private hccDashboardFilterService: HccDashboardFilterService,\n private userAccessService: UserAccessService, private hierarchyTierService: HierarchyTierService) {\n super(filterService, CLINICIANS_REPORT_GRID_KEY);\n }\n\n ngOnInit(): void {\n this.rowData =\n combineLatest([this.hierarchyTierService.currentTier$, this.hccDashboardFilterService.filterModel$]).pipe(\n takeUntil(this.killTrigger),\n filter(x => x[0] != null),\n switchMap(x => {\n const [tierInfo, filterValue] = x;\n const tierNum = filterValue?.isCinSelected ? -1 : tierInfo.tier;\n const tierId = filterValue?.isCinSelected ? filterValue.selectedCin?.id.toString() : tierInfo.selectedTierId;\n\n return this.hccDashboardService.hccDashboardCliniciansGet(\n {\n tierNum: tierNum,\n tierId: tierId,\n attributionStatus: filterValue == null || !filterValue.isMostAssignable ? ATTRIBUTED : MOST_ASSIGNABLE\n }\n );\n }));\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n\n this.gridColumnApi.getColumn('hccGaps').setSort('desc');\n }\n\n onFirstDataRendered(params: any): void {\n if (this.hasFilterModel()) {\n this.restoreFilterModel(params.api);\n }\n }\n}","\n \n\n\n\n\n\n\n\n\n","\n \n\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { HccCliniciansService } from './hcc-clinicians-service.service';\nimport { HccDashboardClinician } from './hcc-dashboard-clinician';\n\nimport { GridFilterService } from '@shared/components/grid/grid-filter.service';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { CLINICIANS_REPORT_GRID_KEY, PATIENT_SUMMARY_GRID_KEY } from '@shared/components/grid/grid-filter.service';\nimport { environment } from 'src/environments/environment';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { share, takeUntil } from 'rxjs/operators';\nimport { RouterLinkRendererComponent } from '@shared/components/grid/router-link-renderer/router-link-renderer.component';\nimport { TrackFeatureConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\n\n@Component({\n selector: 'coach-clinicians-report',\n templateUrl: './clinicians-report.component.html',\n host: {\n class: 'coach-clinicians-report'\n },\n providers: [MaskPipe]\n})\nexport class CliniciansReportComponent extends PersistentGridFilters implements OnInit, OnDestroy {\n\n tierNum: number;\n tierId: string;\n isLoaded: boolean;\n\n columnDefs = [\n { headerName: 'Practice Name', field: 'practiceName', sortable: true, filter: true, resizable: true },\n {\n headerName: 'Clinician', field: 'clinicianName', sortable: true, filter: true, resizable: true,\n cellRendererFramework: RouterLinkRendererComponent,\n cellRendererParams: {\n valueOverride: (data: HccDashboardClinician): string => {\n return data.clinicianNPI == null ? data.practiceName : data.clinicianName;\n },\n linkClicked: (data: HccDashboardClinician) => {\n if (this.userAccessService.currentAccess$.value?.phi) {\n this.gridFilterService.resetFilters(PATIENT_SUMMARY_GRID_KEY);\n\n let clinician: string;\n let queryParams: Params;\n\n if (data.clinicianNPI != null) {\n clinician = data.clinicianNPI;\n } else {\n clinician = data.practiceName;\n queryParams = { isPractice: true };\n }\n\n this.router.navigate(['patients', clinician], { relativeTo: this.route.parent, queryParams: queryParams });\n }\n },\n isDisabled: (data: HccDashboardClinician) => {\n return !this.userAccessService.currentAccess$.value?.phi;\n }\n }\n },\n {\n headerName: 'NPI', field: 'clinicianNPI', sortable: true, filter: true, resizable: true, valueFormatter: params => {\n const clinician: HccDashboardClinician = params.data;\n\n if (clinician == null) {\n return null;\n }\n else if (environment.maskSensitiveData) {\n return this.mask.transform(clinician.clinicianNPI, 6);\n }\n else {\n return clinician.clinicianNPI;\n }\n }, keyCreator: params => {\n if (environment.maskSensitiveData) {\n return this.mask.transform(params.value, 6);\n }\n else {\n return params.value;\n }\n }\n },\n { headerName: 'Specialty', field: 'clinicianSpecialty', sortable: true, filter: true, resizable: true },\n { headerName: 'Patient Count', field: 'patientCount', sortable: true, filter: true, resizable: true },\n {\n headerName: 'Chronic Conditions Closure Gaps', field: 'hccGaps', sortable: true, filter: true,\n sort: { direction: 'asc', priority: 0 }, resizable: true\n },\n {\n headerName: 'Overall Chronic Conditions Closure Rate', field: 'overallHCCClosureRate', sortable: true, filter: true,\n valueFormatter: (params: any) => {\n const clinician: HccDashboardClinician = params.data;\n return clinician == null ? null : Math.round(clinician.overallHCCClosureRate) + '%';\n }\n }\n ];\n\n rowData: any;\n\n public hccEnhanced2FeatureFlag = TrackFeatureConstants.HccDashboardEnhanced2FeatureFlag;\n\n constructor(private patientSummaryService: HccCliniciansService, private route: ActivatedRoute,\n private router: Router, private gridFilterService: GridFilterService,\n protected filterService: GridFilterService, private mask: MaskPipe, private featureFlagService: FeatureFlagService,\n private userAccessService: UserAccessService, private hierarchyTierService: HierarchyTierService) {\n super(filterService, CLINICIANS_REPORT_GRID_KEY);\n }\n\n ngOnInit(): void {\n const hasFeature = this.featureFlagService.hasFeatureFlag(this.hccEnhanced2FeatureFlag);\n\n if (!hasFeature) {\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger), share()).subscribe(tier => {\n if (tier != null) {\n this.tierNum = tier.tier;\n this.tierId = tier.selectedTierId;\n\n this.rowData = this.patientSummaryService.getClinicians(this.tierNum, this.tierId);\n }\n });\n\n this.userAccessService.currentAccess$.pipe(takeUntil(this.killTrigger), share()).subscribe(access => {\n this.isLoaded = access != null;\n });\n }\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n\n this.gridColumnApi.getColumn('hccGaps').setSort('desc');\n }\n\n onFirstDataRendered(params: any): void {\n if (this.hasFilterModel()) {\n this.restoreFilterModel(params.api);\n }\n\n params.api.sizeColumnsToFit();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { HccDashboardPatientDetail } from './hcc-dashboard-patient-detail';\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { environment } from 'src/environments/environment';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HccPatientDetailService extends AzureApiBase {\n\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/hccDashboard/patientDetails');\n }\n\n getPatients(tierNum: number, tierId: string, tier1Id: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('tierNum', tierNum == null ? '' : tierNum.toString())\n .set('tierId', tierId)\n .set('tier1Id', tier1Id);\n\n return this.getAll(null, params);\n }\n}","import { Component, OnInit, Inject, LOCALE_ID, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { formatDate } from '@angular/common';\nimport { environment } from 'src/environments/environment';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { GridFilterService, PATIENT_DETAIL_REPORT_GRID_KEY } from '@shared/components/grid/grid-filter.service';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { RouterLinkRendererComponent } from '@shared/components/grid/router-link-renderer/router-link-renderer.component';\nimport { TrackFeatureConstants } from '@shared/models/module-constants';\nimport { combineLatest } from 'rxjs';\nimport { HccDashboardFilterService } from '@track/track-clinical/hcc-dashboard/hcc-dashboard-filter.service';\nimport { HccDashboardService } from '@api/track/services';\nimport { ATTRIBUTED, MOST_ASSIGNABLE } from '@track/track-constants';\nimport { HccDashboardPatientDetailV2 } from '@api/track/models';\n\n@Component({\n selector: 'coach-patient-detail-report2',\n templateUrl: './patient-detail-report2.component.html',\n host: {\n class: 'coach-patient-detail-report2'\n },\n providers: [MaskPipe]\n})\nexport class PatientDetailReport2Component extends PersistentGridFilters implements OnInit, OnDestroy {\n columnDefs = [\n {\n headerName: 'MBI', field: 'current_MBI', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Medicare Beneficiary Identifier',\n valueFormatter: params => {\n const patient: HccDashboardPatientDetailV2 = params.data;\n\n if (patient == null) {\n return null;\n }\n else if (environment.maskSensitiveData) {\n return this.mask.transform(patient.current_MBI, 6);\n }\n else {\n return patient.current_MBI;\n }\n }, keyCreator: params => {\n if (environment.maskSensitiveData) {\n return this.mask.transform(params.value, 6);\n }\n else {\n return params.value;\n }\n }\n },\n {\n headerName: 'Patient Name', field: 'patientName', sortable: true, filter: true, tooltipField: 'patientName', resizable: true,\n cellRendererFramework: RouterLinkRendererComponent,\n cellRendererParams: {\n linkClicked: (data: HccDashboardPatientDetailV2) => {\n const path = '../../../care/patient';\n\n this.router.navigate([path, data.chPatID], { relativeTo: this.route.parent });\n }\n },\n headerTooltip: 'Patient Name',\n },\n {\n headerName: 'Date of Birth', field: 'dob', sortable: true, filter: true, width: 175, resizable: true,\n valueFormatter: params => formatDate(params.value, 'MM/dd/yyyy', this.locale),\n headerTooltip: 'Patient Date of Birth'\n },\n {\n headerName: 'Attributed Provider', field: 'providerName', sortable: true, filter: true, tooltipField: 'providerName', resizable: true,\n headerTooltip: 'Displays the name of the clinician that the beneficiary is attributed/assignable to. For RHC/FQHCs, the name of the practice will be displayed in this column.'\n },\n {\n headerName: 'Clinician NPI', field: 'tierID', sortable: true, filter: !environment.maskSensitiveData, width: 175, resizable: true,\n valueFormatter: params => {\n const patient: HccDashboardPatientDetailV2 = params.data;\n\n if (patient == null) {\n return null;\n }\n else if (environment.maskSensitiveData) {\n return this.mask.transform(patient.tierID.toString(), 6);\n }\n else {\n return patient.tierID;\n }\n },\n headerTooltip: 'Clinician\\'s National Provider Identifier'\n },\n {\n headerName: 'Clinician Specialty', field: 'provSplty', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Clinician\\'s specialty designation from claims'\n },\n {\n headerName: 'Chronic Condition Description', field: 'hccDesc', sortable: true, filter: true, resizable: true, width: 300,\n headerTooltip: 'Chronic condition label from CMS'\n },\n {\n headerName: 'Disease Group', field: 'groupDescription', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Disease group label from CMS'\n },\n {\n headerName: 'Diagnosis Code & Description', field: 'dxDesc', sortable: true, filter: true, resizable: true, width: 300,\n tooltipField: 'dxDesc',\n valueFormatter: params => `${params.data.dx} - ${params.data.dxDesc}`,\n headerTooltip: 'Diagnosis code and description from the claim that created the chronic condition gap'\n },\n {\n headerName: 'Date of Service', field: 'dos', sortable: true, filter: true, width: 175, resizable: true,\n valueFormatter: params => formatDate(params.value, 'MM/dd/yyyy', this.locale),\n headerTooltip: 'Displays the date of service on the claim that created the chronic condition gap'\n },\n {\n headerName: 'Coded by Provider', field: 'claimProviderName', sortable: true, filter: true,\n tooltipField: 'claimProviderName', resizable: true,\n headerTooltip: 'Displays the name of the provider on the claim that created the chronic condition gap'\n },\n {\n headerName: 'Chronic Condition Weight Closed YTD', field: 'raF_YTD', sortable: true, filter: true, resizable: true, width: 300,\n headerTooltip: 'Displays beneficiary\\'s closed chronic conditions for the current calendar year.'\n },\n {\n headerName: 'Attribution Status', field: 'attributionStatus', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Displays the patients assignment status'\n },\n {\n headerName: 'Last Claims AWV/IPPE Date', field: 'lastAWVDate', sortable: true, filter: true, resizable: true, valueFormatter: params => params.value ? formatDate(params.value, 'MM/dd/yyyy', this.locale) : '',\n headerTooltip: 'Displays the date of service for the last AWV or IPPE based on CMS Claims Data.'\n },\n {\n headerName: 'Last Claims AWV/IPPE Provider', field: 'lastAWVProvider', sortable: true, filter: true, resizable: true, width: 300,\n headerTooltip: 'Displays the name of the provider who performed the last AWV or IPPE based on CMS Claims Data.'\n },\n ];\n\n rowData: any;\n\n private clinician: string;\n private hccFilter: string;\n public isPracticeFilter: boolean;\n private diseaseGroupFilter: string;\n\n \n public hccEnhanced2FeatureFlag = TrackFeatureConstants.HccDashboardEnhanced2FeatureFlag;\n\n constructor(private route: ActivatedRoute,\n @Inject(LOCALE_ID) private locale: string, private router: Router, private hccDashboardFilterService: HccDashboardFilterService,\n protected filterService: GridFilterService, private mask: MaskPipe, private hccDashboardService: HccDashboardService,\n private hierarchyTierService: HierarchyTierService) {\n\n super(filterService, PATIENT_DETAIL_REPORT_GRID_KEY);\n }\n\n ngOnInit(): void {\n this.rowData =\n combineLatest([this.hierarchyTierService.currentTier$, this.hccDashboardFilterService.filterModel$]).pipe(\n takeUntil(this.killTrigger),\n filter(x => x[0] != null),\n switchMap(x => {\n const [tierInfo, filterValue] = x;\n const tierNum = filterValue?.isCinSelected ? -1 : tierInfo.tier;\n const tierId = filterValue?.isCinSelected ? filterValue.selectedCin?.id.toString() : tierInfo.selectedTierId;\n\n this.clinician = this.route.snapshot.params.clinician;\n this.hccFilter = this.route.snapshot.queryParams.hcc;\n this.isPracticeFilter = this.route.snapshot.queryParams.isPractice;\n this.diseaseGroupFilter = this.route.snapshot.queryParams.diseaseGroup;\n\n return this.hccDashboardService.hccDashboardPatientDetailsV2Get(\n {\n tierNum: tierNum,\n tierId: tierId,\n tier1Id: tierInfo.selectedItem.tier1_ID,\n attributionStatus: filterValue == null || !filterValue.isMostAssignable ? ATTRIBUTED : MOST_ASSIGNABLE\n }\n );\n }));\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n\n const sort = [\n {\n colId: 'gapCount',\n sort: 'desc'\n },\n {\n colId: 'patientName',\n sort: 'asc'\n },\n {\n colId: 'dob',\n sort: 'asc'\n }\n ];\n this.gridApi.setSortModel(sort);\n }\n\n onFirstDataRendered(params: any): void {\n if (this.hasFilterModel()) {\n this.restoreFilterModel(params.api);\n } else if (this.clinician != null) {\n const filterInstance = this.isPracticeFilter ? this.gridApi.getFilterInstance('providerName') : this.gridApi.getFilterInstance('tierID');\n\n filterInstance.setModel({\n type: 'set',\n values: [this.clinician]\n });\n\n this.gridApi.onFilterChanged();\n } else if (this.hccFilter != null) {\n const filterInstance = this.gridApi.getFilterInstance('hcc');\n\n filterInstance.setModel({\n type: 'set',\n values: [this.hccFilter]\n });\n\n this.gridApi.onFilterChanged();\n } else if (this.diseaseGroupFilter != null) {\n const filterInstance = this.gridApi.getFilterInstance('groupDescription');\n\n filterInstance.setModel({\n type: 'set',\n values: [this.diseaseGroupFilter]\n });\n\n this.gridApi.onFilterChanged();\n }\n }\n}\n","\n \n\n\n\n\n\n\n\n","\n \n\n\n \n \n \n\n \n \n\n \n\n \n","import { Component, OnInit, HostListener, Inject, LOCALE_ID, OnDestroy } from '@angular/core';\nimport { HccPatientDetailService } from './hcc-patient-detail.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { HccDashboardPatientDetail } from './hcc-dashboard-patient-detail';\nimport { formatDate, Location, formatNumber } from '@angular/common';\nimport { environment } from 'src/environments/environment';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { GridFilterService, PATIENT_DETAIL_REPORT_GRID_KEY } from '@shared/components/grid/grid-filter.service';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { Subject } from 'rxjs';\nimport { share, takeUntil } from 'rxjs/operators';\nimport { RouterLinkRendererComponent } from '@shared/components/grid/router-link-renderer/router-link-renderer.component';\nimport { TrackFeatureConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\n\n@Component({\n selector: 'coach-patient-detail-report',\n templateUrl: './patient-detail-report.component.html',\n host: {\n class: 'coach-patient-detail-report'\n },\n providers: [MaskPipe]\n})\nexport class PatientDetailReportComponent extends PersistentGridFilters implements OnInit, OnDestroy {\n columnDefs = [\n { headerName: 'Clinician Name', field: 'providerName', sortable: true, filter: true, tooltipField: 'providerName', resizable: true },\n {\n headerName: 'Clinician NPI', field: 'tierID', sortable: true, filter: !environment.maskSensitiveData, width: 175, resizable: true,\n valueFormatter: params => {\n const patient: HccDashboardPatientDetail = params.data;\n\n if (patient == null) {\n return null;\n }\n else if (environment.maskSensitiveData) {\n return this.mask.transform(patient.tierID.toString(), 6);\n }\n else {\n return patient.tierID;\n }\n }\n },\n { headerName: 'Clinician Specialty', field: 'provSplty', sortable: true, filter: true, resizable: true },\n {\n headerName: 'Patient Name', field: 'patientName', sortable: true, filter: true, tooltipField: 'patientName', resizable: true,\n cellRendererFramework: RouterLinkRendererComponent,\n cellRendererParams: {\n linkClicked: (data: HccDashboardPatientDetail) => {\n const path = '../../../care/patient';\n\n this.router.navigate([path, data.chPatID], { relativeTo: this.route.parent });\n }\n }\n },\n {\n headerName: 'Date of Birth', field: 'dob', sortable: true, filter: true, width: 175, resizable: true,\n valueFormatter: params => formatDate(params.value, 'MM/dd/yyyy', this.locale)\n },\n { headerName: 'Chronic Conditions', field: 'hcc', sortable: true, filter: true, width: 125, resizable: true },\n { headerName: 'Chronic Conditions Weight', field: 'hccWeight', sortable: true, filter: true, width: 150, resizable: true, hide: true },\n { headerName: 'Chronic Conditions Description', field: 'hccDesc', sortable: true, filter: true, tooltipField: 'hccDesc', resizable: true },\n {\n headerName: 'Date of Service', field: 'dos', sortable: true, filter: true, width: 175, resizable: true,\n valueFormatter: params => formatDate(params.value, 'MM/dd/yyyy', this.locale)\n },\n {\n headerName: 'Last Coded Provider', field: 'claimProviderName', sortable: true, filter: true,\n tooltipField: 'claimProviderName', resizable: true\n },\n { headerName: 'RAF Score (YTD)', field: 'raF_YTD', sortable: true, filter: true, resizable: true },\n { headerName: 'Attribution Status', field: 'attributionStatus', sortable: true, filter: true, resizable: true },\n { headerName: 'Last AWV Date', field: 'lastAWVDate', sortable: true, filter: true, resizable: true, valueFormatter: params => params.value ? formatDate(params.value, 'MM/dd/yyyy', this.locale) : '' },\n { headerName: 'Last AWV Provider', field: 'lastAWVProvider', sortable: true, filter: true, resizable: true },\n ];\n\n rowData: any;\n\n private clinician: string;\n private hccFilter: string;\n public isPracticeFilter: boolean;\n\n \n public hccEnhanced2FeatureFlag = TrackFeatureConstants.HccDashboardEnhanced2FeatureFlag;\n\n constructor(private patientSummaryService: HccPatientDetailService, private route: ActivatedRoute,\n @Inject(LOCALE_ID) private locale: string, private router: Router, private featureFlagService: FeatureFlagService,\n protected filterService: GridFilterService, private mask: MaskPipe,\n private hierarchyTierService: HierarchyTierService) {\n\n super(filterService, PATIENT_DETAIL_REPORT_GRID_KEY);\n }\n\n ngOnInit(): void {\n const hasFeature = this.featureFlagService.hasFeatureFlag(this.hccEnhanced2FeatureFlag);\n\n if (!hasFeature) {\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger), share()).subscribe(tier => {\n if (tier != null) {\n const tierNum = tier.tier;\n const tierId = tier.selectedTierId;\n this.clinician = this.route.snapshot.params.clinician;\n this.hccFilter = this.route.snapshot.queryParams.hcc;\n this.isPracticeFilter = this.route.snapshot.queryParams.isPractice;\n\n this.rowData = this.patientSummaryService.getPatients(tierNum, tierId, tier.selectedItem.tier1_ID);\n }\n });\n }\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n\n const sort = [\n {\n colId: 'gapCount',\n sort: 'desc'\n },\n {\n colId: 'patientName',\n sort: 'asc'\n },\n {\n colId: 'dob',\n sort: 'asc'\n }\n ];\n this.gridApi.setSortModel(sort);\n }\n\n onFirstDataRendered(params: any): void {\n if (this.hasFilterModel()) {\n this.restoreFilterModel(params.api);\n } else if (this.clinician != null) {\n const filterInstance = this.isPracticeFilter ? this.gridApi.getFilterInstance('providerName') : this.gridApi.getFilterInstance('tierID');\n\n filterInstance.setModel({\n type: 'set',\n values: [this.clinician]\n });\n\n this.gridApi.onFilterChanged();\n } else if (this.hccFilter != null) {\n const filterInstance = this.gridApi.getFilterInstance('hcc');\n\n filterInstance.setModel({\n type: 'set',\n values: [this.hccFilter]\n });\n\n this.gridApi.onFilterChanged();\n }\n\n params.api.sizeColumnsToFit();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { HccDashboardPatient } from './hcc-dashboard-patient';\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { environment } from 'src/environments/environment';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HccPatientSummaryService extends AzureApiBase {\n\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/hccDashboard/patientSummary');\n }\n\n getPatients(tierNum: number, tierId: string, tier1Id: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('tierNum', tierNum == null ? '' : tierNum.toString())\n .set('tierId', tierId)\n .set('tier1Id', tier1Id);\n\n return this.getAll(null, params);\n }\n}","import { Component, OnInit, LOCALE_ID, Inject, OnDestroy } from '@angular/core';\nimport { HccPatientSummaryService } from '../hcc-patient-summary.service';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { formatDate, formatNumber } from '@angular/common';\nimport { HccDashboardPatient } from '../hcc-dashboard-patient';\n\n\nimport { GridFilterService } from '@shared/components/grid/grid-filter.service';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { PATIENT_SUMMARY_GRID_KEY, PATIENT_DETAIL_REPORT_GRID_KEY } from '@shared/components/grid/grid-filter.service';\nimport { environment } from 'src/environments/environment';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { Subject, combineLatest } from 'rxjs';\nimport { filter, share, switchMap, takeUntil } from 'rxjs/operators';\nimport { RouterLinkRendererComponent } from '@shared/components/grid/router-link-renderer/router-link-renderer.component';\nimport { TrackFeatureConstants } from '@shared/models/module-constants';\nimport { HccDashboardFilterService } from '@track/track-clinical/hcc-dashboard/hcc-dashboard-filter.service';\nimport { HccDashboardService } from '@api/track/services';\nimport { ATTRIBUTED, MOST_ASSIGNABLE } from '@track/track-constants';\n\n@Component({\n selector: 'coach-patient-summary-report2',\n templateUrl: './patient-summary-report2.component.html',\n host: {\n class: 'coach-patient-summary-report2'\n }\n})\nexport class PatientSummaryReport2Component extends PersistentGridFilters implements OnInit, OnDestroy {\n columnDefs = [\n {\n headerName: 'MBI', field: 'current_MBI', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Patient\\'s Medicare Beneficiary Identifier',\n valueFormatter: params => {\n const patient: HccDashboardPatient = params.data;\n\n if (patient == null) {\n return null;\n }\n else if (environment.maskSensitiveData) {\n return this.mask.transform(patient.current_MBI, 6);\n }\n else {\n return patient.current_MBI;\n }\n }, keyCreator: params => {\n if (environment.maskSensitiveData) {\n return this.mask.transform(params.value, 6);\n }\n else {\n return params.value;\n }\n }\n },\n {\n headerName: 'Name', field: 'fullName', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Patient Name',\n cellRendererFramework: RouterLinkRendererComponent,\n cellRendererParams: {\n linkClicked: (data: HccDashboardPatient) => {\n const path = '../../../care/patient';\n\n this.router.navigate([path, data.chPatID], { relativeTo: this.route.parent });\n }\n }\n },\n {\n headerName: 'Date of Birth', field: 'dob', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Patient Date of Birth',\n valueFormatter: params => formatDate(params.value, 'MM/dd/yyyy', this.locale)\n },\n {\n headerName: 'Attributed Provider', field: 'providerName', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Displays the name of the clinician that the beneficiary is attributed/assignable to. For RHC/FQHCs, the name of the practice will be displayed in this column.',\n },\n {\n headerName: 'Clinician NPI', field: 'tierID', sortable: true, filter: !environment.maskSensitiveData, resizable: true,\n headerTooltip: 'Clinician\\'s National Provider Identifier',\n valueFormatter: params => {\n const patient: HccDashboardPatient = params.data;\n let value = '';\n\n if (patient == null) {\n value = params.value;\n } else if (patient.hasProvider) {\n value = patient.tierID;\n }\n\n if (environment.maskSensitiveData) {\n value = this.mask.transform(value, 6);\n }\n return value;\n }\n },\n {\n headerName: 'Clinician Specialty', field: 'provSplty', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Clinician\\'s specialty designation from claims',\n },\n {\n headerName: 'Chronic Conditions Weight Closed YTD', field: 'raF_YTD', sortable: true, filter: true, resizable: true, width: 300,\n headerTooltip: 'Displays beneficiary\\'s closed chronic conditions for the current calendar year.',\n },\n {\n headerName: 'Total Gap Weight', field: 'openRAFWt', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Displays the highest possible weight that could be captured if all open chronic conditions are documented for appropriately.'\n },\n {\n hide: true, // Hidden with ZBR-12923\n headerName: 'Chronic Conditions Closure Gaps', field: 'gapCount', sortable: true, filter: true, resizable: true, headerTooltip: 'Count of open chronic condition gaps.'\n },\n {\n headerName: 'Annual Closure Rate', field: 'overallHCCClosureRate', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Percentage of chronic condition gaps closed by claims in the current calendar year.',\n valueFormatter: (params: any) => {\n const patient: HccDashboardPatient = params.data;\n return patient == null ? null : Math.round(patient.overallHCCClosureRate) + '%';\n }\n },\n {\n headerName: 'Assignment', field: 'attributionStatus', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Displays the patient assignment status.',\n },\n {\n headerName: 'Last Claims AWV/IPPE Date', field: 'lastAWVDate', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Displays the date of service for the last AWV or IPPE based on CMS Claims Data.',\n valueFormatter: params => params.value ? formatDate(params.value, 'MM/dd/yyyy', this.locale) : ''\n },\n {\n headerName: 'Last Claims AWV/IPPE Provider', field: 'lastAWVProvider', sortable: true, filter: true, resizable: true, width: 300,\n headerTooltip: 'Displays the name of the provider who performed the last AWV or IPPE based on CMS Claims Data.',\n },\n ];\n\n rowData: any;\n\n public clinician: string;\n public isPracticeFilter: boolean;\n\n public hccEnhanced2FeatureFlag = TrackFeatureConstants.HccDashboardEnhanced2FeatureFlag;\n\n constructor(private patientSummaryService: HccPatientSummaryService, private route: ActivatedRoute,\n @Inject(LOCALE_ID) private locale: string, private router: Router, private mask: MaskPipe,\n private hccDashboardFilterService: HccDashboardFilterService,\n private hccDashboardService: HccDashboardService,\n protected filterService: GridFilterService, private hierarchyTierService: HierarchyTierService) {\n super(filterService, PATIENT_SUMMARY_GRID_KEY);\n }\n\n ngOnInit(): void {\n this.route.queryParams.subscribe(x => {\n this.isPracticeFilter = x.isPractice;\n });\n\n this.rowData =\n combineLatest([this.hierarchyTierService.currentTier$, this.hccDashboardFilterService.filterModel$]).pipe(\n takeUntil(this.killTrigger),\n filter(x => x[0] != null),\n switchMap(x => {\n const [tierInfo, filterValue] = x;\n const tierNum = filterValue?.isCinSelected ? -1 : tierInfo.tier;\n const tierId = filterValue?.isCinSelected ? filterValue.selectedCin?.id.toString() : tierInfo.selectedTierId;\n\n this.clinician = this.route.snapshot.params.clinician;\n this.isPracticeFilter = this.route.snapshot.queryParams.isPractice;\n\n return this.hccDashboardService.hccDashboardPatientSummaryGet(\n {\n tierNum: tierNum,\n tierId: tierId,\n tier1Id: tierInfo.selectedItem.tier1_ID,\n attributionStatus: filterValue == null || !filterValue.isMostAssignable ? ATTRIBUTED : MOST_ASSIGNABLE\n }\n );\n }));\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n\n const sort = [\n {\n colId: 'openRAFWt',\n sort: 'desc'\n },\n {\n colId: 'fullName',\n sort: 'asc'\n },\n {\n colId: 'dob',\n sort: 'asc'\n }\n ];\n this.gridApi.setSortModel(sort);\n }\n\n onFirstDataRendered(params: any): void {\n if (this.hasFilterModel()) {\n this.restoreFilterModel(params.api);\n } else if (this.clinician != null) {\n const filterInstance = this.isPracticeFilter ? this.gridApi.getFilterInstance('providerName') : this.gridApi.getFilterInstance('tierID');\n\n filterInstance.setModel({\n type: 'set',\n values: [this.clinician]\n });\n\n this.gridApi.onFilterChanged();\n }\n }\n\n details(): void {\n const params = ['patientDetails'];\n if (this.clinician != null) {\n params.push(this.clinician);\n }\n\n let queryParams: Params;\n if (this.route.snapshot.queryParams.isPractice != null) {\n queryParams = { isPractice: true };\n }\n\n this.filterService.resetFilters(PATIENT_DETAIL_REPORT_GRID_KEY);\n this.router.navigate(params, { relativeTo: this.route.parent, queryParams: queryParams });\n }\n\n ngOnDestroy(): void {\n this.filterService.resetFilters(PATIENT_SUMMARY_GRID_KEY);\n }\n}\n","\n \n \n \n \n\n\n\n\n\n
\n \n\n \n \n
\n\n\n","\n \n\n\n \n \n \n \n \n \n\n \n \n\n
\n \n\n \n \n
\n\n \n
","import { Component, OnInit, LOCALE_ID, Inject, HostListener, OnDestroy } from '@angular/core';\nimport { HccPatientSummaryService } from './hcc-patient-summary.service';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { formatDate, formatNumber } from '@angular/common';\n\nimport { HccDashboardPatient } from './hcc-dashboard-patient';\n\nimport { GridFilterService } from '@shared/components/grid/grid-filter.service';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { PATIENT_SUMMARY_GRID_KEY, PATIENT_DETAIL_REPORT_GRID_KEY } from '@shared/components/grid/grid-filter.service';\nimport { environment } from 'src/environments/environment';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { Subject } from 'rxjs';\nimport { share, takeUntil } from 'rxjs/operators';\nimport { RouterLinkRendererComponent } from '@shared/components/grid/router-link-renderer/router-link-renderer.component';\nimport { TrackFeatureConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\n\n@Component({\n selector: 'coach-patient-summary-report',\n templateUrl: './patient-summary-report.component.html',\n host: {\n class: 'coach-patient-summary-report'\n },\n providers: [MaskPipe]\n})\nexport class PatientSummaryReportComponent extends PersistentGridFilters implements OnInit, OnDestroy {\n columnDefs = [\n {\n headerName: 'MBI', field: 'current_MBI', sortable: true, filter: true, resizable: true, valueFormatter: params => {\n const patient: HccDashboardPatient = params.data;\n\n if (patient == null) {\n return null;\n }\n else if (environment.maskSensitiveData) {\n return this.mask.transform(patient.current_MBI, 6);\n }\n else {\n return patient.current_MBI;\n }\n }, keyCreator: params => {\n if (environment.maskSensitiveData) {\n return this.mask.transform(params.value, 6);\n }\n else {\n return params.value;\n }\n }\n },\n {\n headerName: 'Name', field: 'fullName', sortable: true, filter: true, resizable: true,\n cellRendererFramework: RouterLinkRendererComponent,\n cellRendererParams: {\n linkClicked: (data: HccDashboardPatient) => {\n const path = '../../../care/patient';\n\n this.router.navigate([path, data.chPatID], { relativeTo: this.route.parent });\n }\n }\n },\n {\n headerName: 'Date of Birth', field: 'dob', sortable: true, filter: true, resizable: true,\n valueFormatter: params => formatDate(params.value, 'MM/dd/yyyy', this.locale)\n },\n { headerName: 'Clinician', field: 'providerName', sortable: true, filter: true, resizable: true },\n {\n headerName: 'Clinician NPI', field: 'tierID', sortable: true, filter: !environment.maskSensitiveData, resizable: true,\n valueFormatter: params => {\n const patient: HccDashboardPatient = params.data;\n let value = '';\n\n if (patient == null) {\n value = params.value;\n } else if (patient.hasProvider) {\n value = patient.tierID;\n }\n\n if (environment.maskSensitiveData) {\n value = this.mask.transform(value, 6);\n }\n return value;\n }\n },\n { headerName: 'Clinician Specialty', field: 'provSplty', sortable: true, filter: true, resizable: true },\n { headerName: 'RAF Score (YTD)', field: 'raF_YTD', sortable: true, filter: true, resizable: true },\n { headerName: 'Total Gap Weight', field: 'openRAFWt', sortable: true, filter: true, resizable: true, headerTooltip: 'Total Gap Weight' },\n { headerName: 'Chronic Conditions Closure Gaps', field: 'gapCount', sortable: true, filter: true, resizable: true, headerTooltip: 'Chronic Conditions Closure Gaps' },\n {\n headerName: 'Overall Chronic Conditions Closure Rate', field: 'overallHCCClosureRate', sortable: true, filter: true, resizable: true, headerTooltip: 'Overall HCC Closure Rate',\n valueFormatter: (params: any) => {\n const patient: HccDashboardPatient = params.data;\n return patient == null ? null : Math.round(patient.overallHCCClosureRate) + '%';\n }\n },\n { headerName: 'Attribution Status', field: 'attributionStatus', sortable: true, filter: true, resizable: true },\n { headerName: 'Last AWV Date', field: 'lastAWVDate', sortable: true, filter: true, resizable: true, valueFormatter: params => params.value ? formatDate(params.value, 'MM/dd/yyyy', this.locale) : '' },\n { headerName: 'Last AWV Provider', field: 'lastAWVProvider', sortable: true, filter: true, resizable: true },\n ];\n\n rowData: any;\n\n public clinician: string;\n public isPracticeFilter: boolean;\n\n private tierNum: number;\n private tierId: string;\n\n public hccEnhanced2FeatureFlag = TrackFeatureConstants.HccDashboardEnhanced2FeatureFlag;\n\n constructor(private patientSummaryService: HccPatientSummaryService, private route: ActivatedRoute,\n @Inject(LOCALE_ID) private locale: string, private router: Router, private mask: MaskPipe, private featureFlagService: FeatureFlagService,\n protected filterService: GridFilterService, private hierarchyTierService: HierarchyTierService) {\n super(filterService, PATIENT_SUMMARY_GRID_KEY);\n }\n\n ngOnInit(): void {\n const hasFeature = this.featureFlagService.hasFeatureFlag(this.hccEnhanced2FeatureFlag);\n\n if (!hasFeature) {\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger), share()).subscribe(tier => {\n if (tier != null) {\n this.tierNum = tier.tier;\n this.tierId = tier.selectedTierId;\n this.clinician = this.route.snapshot.params.clinician;\n this.isPracticeFilter = this.route.snapshot.queryParams.isPractice;\n\n this.rowData = this.patientSummaryService.getPatients(this.tierNum, this.tierId, tier.selectedItem.tier1_ID);\n }\n });\n }\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n\n const sort = [\n {\n colId: 'hccGapCount',\n sort: 'desc'\n },\n {\n colId: 'fullName',\n sort: 'asc'\n },\n {\n colId: 'dob',\n sort: 'asc'\n }\n ];\n this.gridApi.setSortModel(sort);\n }\n\n onFirstDataRendered(params: any): void {\n if (this.hasFilterModel()) {\n this.restoreFilterModel(params.api);\n } else if (this.clinician != null) {\n const filterInstance = this.isPracticeFilter ? this.gridApi.getFilterInstance('providerName') : this.gridApi.getFilterInstance('tierID');\n\n filterInstance.setModel({\n type: 'set',\n values: [this.clinician]\n });\n\n this.gridApi.onFilterChanged();\n }\n\n params.api.sizeColumnsToFit();\n }\n\n details(): void {\n const params = ['patientDetails'];\n if (this.clinician != null) {\n params.push(this.clinician);\n }\n\n let queryParams: Params;\n if (this.isPracticeFilter != null) {\n queryParams = { isPractice: true };\n }\n\n this.filterService.resetFilters(PATIENT_DETAIL_REPORT_GRID_KEY);\n this.router.navigate(params, { relativeTo: this.route.parent, queryParams: queryParams });\n }\n\n ngOnDestroy(): void {\n this.filterService.resetFilters(PATIENT_SUMMARY_GRID_KEY);\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { environment } from 'src/environments/environment';\nimport { HccDashboardCodingOpportunity } from './hcc-dashboard-coding-opportunity';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HccDasbhoardCodingOpportunitiesService extends AzureApiBase {\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/hccDashboard/opportunities');\n }\n\n getOpportunites(tierNum: number, tierId: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('tierNum', tierNum.toString())\n .set('tierId', tierId);\n\n return this.getAll(null, params);\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { environment } from 'src/environments/environment';\nimport { HccDashboardTierMetric } from './hcc-dashboard-tier-metric';\nimport { Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HccDashboardTierMetricsService extends AzureApiBase {\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/hccDashboard/tierMetrics');\n }\n\n lastUpdateDate: Date;\n\n getMetrics(tierNum: number, tierId: string): Observable {\n const params: HttpParams = new HttpParams()\n .set('tierNum', tierNum.toString())\n .set('tierId', tierId);\n\n let observable: Observable;\n observable = this.getAll(null, params).pipe(share());\n observable.subscribe(data => {\n if (data != null && data.length > 0) {\n this.lastUpdateDate = data[0].lastUpdateDate;\n }\n });\n\n return observable;\n }\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Component, ViewEncapsulation, Inject, Input, ViewChild, HostBinding, HostListener, Injectable, ChangeDetectionStrategy, EventEmitter, Output, Directive, NgModule, ContentChild } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, isPlatformServer, CommonModule } from '@angular/common';\nimport { __decorate } from 'tslib';\nimport { DomPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { select } from 'd3-selection';\nimport { brushX } from 'd3-brush';\nimport { scaleTime, scaleLinear, scalePoint, scaleOrdinal, scaleQuantile, scaleBand } from 'd3-scale';\nimport { area, curveLinear, line, arc, lineRadial, curveCardinalClosed, pie } from 'd3-shape';\nimport { range, min, max, quantile } from 'd3-array';\nimport { interpolate } from 'd3-interpolate';\nimport { easeSinInOut } from 'd3-ease';\nimport rfdc from 'rfdc';\nimport { format } from 'd3-format';\nimport * as d3_color from 'd3-color';\nimport { treemap, stratify } from 'd3-hierarchy';\nimport { sankey, sankeyLeft, sankeyLinkHorizontal } from 'd3-sankey';\nimport { timeFormat } from 'd3-time-format';\n\n/**\n * Throttle a function\n *\n */\nfunction throttle(func, wait, options) {\n options = options || {};\n let context;\n let args;\n let result;\n let timeout = null;\n let previous = 0;\n function later() {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func.apply(context, args);\n }\n return function () {\n const now = +new Date();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n context = this;\n // eslint-disable-next-line prefer-rest-params\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nfunction throttleable(duration, options) {\n return function innerDecorator(target, key, descriptor) {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value, duration, options)\n });\n return this[key];\n }\n };\n };\n}\n\nvar PlacementTypes;\n(function (PlacementTypes) {\n PlacementTypes[\"Top\"] = \"top\";\n PlacementTypes[\"Bottom\"] = \"bottom\";\n PlacementTypes[\"Left\"] = \"left\";\n PlacementTypes[\"Right\"] = \"right\";\n PlacementTypes[\"Center\"] = \"center\";\n})(PlacementTypes || (PlacementTypes = {}));\n\nconst caretOffset = 7;\nfunction verticalPosition(elDimensions, popoverDimensions, alignment) {\n if (alignment === PlacementTypes.Top) {\n return elDimensions.top - caretOffset;\n }\n if (alignment === PlacementTypes.Bottom) {\n return elDimensions.top + elDimensions.height - popoverDimensions.height + caretOffset;\n }\n if (alignment === PlacementTypes.Center) {\n return elDimensions.top + elDimensions.height / 2 - popoverDimensions.height / 2;\n }\n return undefined;\n}\nfunction horizontalPosition(elDimensions, popoverDimensions, alignment) {\n if (alignment === PlacementTypes.Left) {\n return elDimensions.left - caretOffset;\n }\n if (alignment === PlacementTypes.Right) {\n return elDimensions.left + elDimensions.width - popoverDimensions.width + caretOffset;\n }\n if (alignment === PlacementTypes.Center) {\n return elDimensions.left + elDimensions.width / 2 - popoverDimensions.width / 2;\n }\n return undefined;\n}\n/**\n * Position helper for the popover directive.\n *\n * @export\n */\nclass PositionHelper {\n /**\n * Calculate vertical alignment position\n *\n * @memberOf PositionHelper\n */\n static calculateVerticalAlignment(elDimensions, popoverDimensions, alignment) {\n let result = verticalPosition(elDimensions, popoverDimensions, alignment);\n if (result + popoverDimensions.height > window.innerHeight) {\n result = window.innerHeight - popoverDimensions.height;\n }\n return result;\n }\n /**\n * Calculate vertical caret position\n *\n * @memberOf PositionHelper\n */\n static calculateVerticalCaret(elDimensions, popoverDimensions, caretDimensions, alignment) {\n let result;\n if (alignment === PlacementTypes.Top) {\n result = elDimensions.height / 2 - caretDimensions.height / 2 + caretOffset;\n }\n if (alignment === PlacementTypes.Bottom) {\n result = popoverDimensions.height - elDimensions.height / 2 - caretDimensions.height / 2 - caretOffset;\n }\n if (alignment === PlacementTypes.Center) {\n result = popoverDimensions.height / 2 - caretDimensions.height / 2;\n }\n const popoverPosition = verticalPosition(elDimensions, popoverDimensions, alignment);\n if (popoverPosition + popoverDimensions.height > window.innerHeight) {\n result += popoverPosition + popoverDimensions.height - window.innerHeight;\n }\n return result;\n }\n /**\n * Calculate horz alignment position\n *\n * @memberOf PositionHelper\n */\n static calculateHorizontalAlignment(elDimensions, popoverDimensions, alignment) {\n let result = horizontalPosition(elDimensions, popoverDimensions, alignment);\n if (result + popoverDimensions.width > window.innerWidth) {\n result = window.innerWidth - popoverDimensions.width;\n }\n return result;\n }\n /**\n * Calculate horz caret position\n *\n * @memberOf PositionHelper\n */\n static calculateHorizontalCaret(elDimensions, popoverDimensions, caretDimensions, alignment) {\n let result;\n if (alignment === PlacementTypes.Left) {\n result = elDimensions.width / 2 - caretDimensions.width / 2 + caretOffset;\n }\n if (alignment === PlacementTypes.Right) {\n result = popoverDimensions.width - elDimensions.width / 2 - caretDimensions.width / 2 - caretOffset;\n }\n if (alignment === PlacementTypes.Center) {\n result = popoverDimensions.width / 2 - caretDimensions.width / 2;\n }\n const popoverPosition = horizontalPosition(elDimensions, popoverDimensions, alignment);\n if (popoverPosition + popoverDimensions.width > window.innerWidth) {\n result += popoverPosition + popoverDimensions.width - window.innerWidth;\n }\n return result;\n }\n /**\n * Checks if the element's position should be flipped\n *\n * @memberOf PositionHelper\n */\n static shouldFlip(elDimensions, popoverDimensions, placement, spacing) {\n let flip = false;\n if (placement === PlacementTypes.Right) {\n if (elDimensions.left + elDimensions.width + popoverDimensions.width + spacing > window.innerWidth) {\n flip = true;\n }\n }\n if (placement === PlacementTypes.Left) {\n if (elDimensions.left - popoverDimensions.width - spacing < 0) {\n flip = true;\n }\n }\n if (placement === PlacementTypes.Top) {\n if (elDimensions.top - popoverDimensions.height - spacing < 0) {\n flip = true;\n }\n }\n if (placement === PlacementTypes.Bottom) {\n if (elDimensions.top + elDimensions.height + popoverDimensions.height + spacing > window.innerHeight) {\n flip = true;\n }\n }\n return flip;\n }\n /**\n * Position caret\n *\n * @memberOf PositionHelper\n */\n static positionCaret(placement, elmDim, hostDim, caretDimensions, alignment) {\n let top = 0;\n let left = 0;\n if (placement === PlacementTypes.Right) {\n left = -7;\n top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.Left) {\n left = elmDim.width;\n top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.Top) {\n top = elmDim.height;\n left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.Bottom) {\n top = -7;\n left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n return { top, left };\n }\n /**\n * Position content\n *\n * @memberOf PositionHelper\n */\n static positionContent(placement, elmDim, hostDim, spacing, alignment) {\n let top = 0;\n let left = 0;\n if (placement === PlacementTypes.Right) {\n left = hostDim.left + hostDim.width + spacing;\n top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.Left) {\n left = hostDim.left - elmDim.width - spacing;\n top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.Top) {\n top = hostDim.top - elmDim.height - spacing;\n left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.Bottom) {\n top = hostDim.top + hostDim.height + spacing;\n left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n }\n return { top, left };\n }\n /**\n * Determine placement based on flip\n *\n * @memberOf PositionHelper\n */\n static determinePlacement(placement, elmDim, hostDim, spacing) {\n const shouldFlip = PositionHelper.shouldFlip(hostDim, elmDim, placement, spacing);\n if (shouldFlip) {\n if (placement === PlacementTypes.Right) {\n return PlacementTypes.Left;\n }\n else if (placement === PlacementTypes.Left) {\n return PlacementTypes.Right;\n }\n else if (placement === PlacementTypes.Top) {\n return PlacementTypes.Bottom;\n }\n else if (placement === PlacementTypes.Bottom) {\n return PlacementTypes.Top;\n }\n }\n return placement;\n }\n}\n\nclass TooltipContentComponent {\n constructor(element, renderer, platformId) {\n this.element = element;\n this.renderer = renderer;\n this.platformId = platformId;\n }\n get cssClasses() {\n let clz = 'ngx-charts-tooltip-content';\n clz += ` position-${this.placement}`;\n clz += ` type-${this.type}`;\n clz += ` ${this.cssClass}`;\n return clz;\n }\n ngAfterViewInit() {\n setTimeout(this.position.bind(this));\n }\n position() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n const nativeElm = this.element.nativeElement;\n const hostDim = this.host.nativeElement.getBoundingClientRect();\n // if no dims were found, never show\n if (!hostDim.height && !hostDim.width)\n return;\n const elmDim = nativeElm.getBoundingClientRect();\n this.checkFlip(hostDim, elmDim);\n this.positionContent(nativeElm, hostDim, elmDim);\n if (this.showCaret) {\n this.positionCaret(hostDim, elmDim);\n }\n // animate its entry\n setTimeout(() => this.renderer.addClass(nativeElm, 'animate'), 1);\n }\n positionContent(nativeElm, hostDim, elmDim) {\n const { top, left } = PositionHelper.positionContent(this.placement, elmDim, hostDim, this.spacing, this.alignment);\n this.renderer.setStyle(nativeElm, 'top', `${top}px`);\n this.renderer.setStyle(nativeElm, 'left', `${left}px`);\n }\n positionCaret(hostDim, elmDim) {\n const caretElm = this.caretElm.nativeElement;\n const caretDimensions = caretElm.getBoundingClientRect();\n const { top, left } = PositionHelper.positionCaret(this.placement, elmDim, hostDim, caretDimensions, this.alignment);\n this.renderer.setStyle(caretElm, 'top', `${top}px`);\n this.renderer.setStyle(caretElm, 'left', `${left}px`);\n }\n checkFlip(hostDim, elmDim) {\n this.placement = PositionHelper.determinePlacement(this.placement, elmDim, hostDim, this.spacing);\n }\n onWindowResize() {\n this.position();\n }\n}\nTooltipContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipContentComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nTooltipContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TooltipContentComponent, selector: \"ngx-tooltip-content\", inputs: { host: \"host\", showCaret: \"showCaret\", type: \"type\", placement: \"placement\", alignment: \"alignment\", spacing: \"spacing\", cssClass: \"cssClass\", title: \"title\", template: \"template\", context: \"context\" }, host: { listeners: { \"window:resize\": \"onWindowResize()\" }, properties: { \"class\": \"this.cssClasses\" } }, viewQueries: [{ propertyName: \"caretElm\", first: true, predicate: [\"caretElm\"], descendants: true }], ngImport: i0, template: `\n
\n \n
\n \n \n \n \n
\n
\n `, isInline: true, styles: [\".ngx-charts-tooltip-content{position:fixed;border-radius:3px;z-index:5000;display:block;font-weight:400;opacity:0;pointer-events:none!important}.ngx-charts-tooltip-content.type-popover{background:#fff;color:#060709;border:1px solid #72809b;box-shadow:0 1px 3px #0003,0 1px 1px #00000024,0 2px 1px -1px #0000001f;font-size:13px;padding:4px}.ngx-charts-tooltip-content.type-popover .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #fff}.ngx-charts-tooltip-content.type-tooltip{color:#fff;background:rgba(0,0,0,.75);font-size:12px;padding:0 10px;text-align:center;pointer-events:auto}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content .tooltip-label{display:block;line-height:1em;padding:8px 5px 5px;font-size:1em}.ngx-charts-tooltip-content .tooltip-val{display:block;font-size:1.3em;line-height:1em;padding:0 5px 8px}.ngx-charts-tooltip-content .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.position-right{transform:translate(10px)}.ngx-charts-tooltip-content.position-left{transform:translate(-10px)}.ngx-charts-tooltip-content.position-top{transform:translateY(-10px)}.ngx-charts-tooltip-content.position-bottom{transform:translateY(10px)}.ngx-charts-tooltip-content.animate{opacity:1;transition:opacity .3s,transform .3s;transform:translate(0);pointer-events:auto}.area-tooltip-container{padding:5px 0;pointer-events:none}.tooltip-item{text-align:left;line-height:1.2em;padding:5px 0}.tooltip-item .tooltip-item-color{display:inline-block;height:12px;width:12px;margin-right:5px;color:#5b646b;border-radius:3px}\\n\"], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], encapsulation: i0.ViewEncapsulation.None });\n__decorate([\n throttleable(100)\n], TooltipContentComponent.prototype, \"onWindowResize\", null);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipContentComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-tooltip-content', template: `\n
\n \n
\n \n \n \n \n
\n
\n `, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-tooltip-content{position:fixed;border-radius:3px;z-index:5000;display:block;font-weight:400;opacity:0;pointer-events:none!important}.ngx-charts-tooltip-content.type-popover{background:#fff;color:#060709;border:1px solid #72809b;box-shadow:0 1px 3px #0003,0 1px 1px #00000024,0 2px 1px -1px #0000001f;font-size:13px;padding:4px}.ngx-charts-tooltip-content.type-popover .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #fff}.ngx-charts-tooltip-content.type-tooltip{color:#fff;background:rgba(0,0,0,.75);font-size:12px;padding:0 10px;text-align:center;pointer-events:auto}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content .tooltip-label{display:block;line-height:1em;padding:8px 5px 5px;font-size:1em}.ngx-charts-tooltip-content .tooltip-val{display:block;font-size:1.3em;line-height:1em;padding:0 5px 8px}.ngx-charts-tooltip-content .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.position-right{transform:translate(10px)}.ngx-charts-tooltip-content.position-left{transform:translate(-10px)}.ngx-charts-tooltip-content.position-top{transform:translateY(-10px)}.ngx-charts-tooltip-content.position-bottom{transform:translateY(10px)}.ngx-charts-tooltip-content.animate{opacity:1;transition:opacity .3s,transform .3s;transform:translate(0);pointer-events:auto}.area-tooltip-container{padding:5px 0;pointer-events:none}.tooltip-item{text-align:left;line-height:1.2em;padding:5px 0}.tooltip-item .tooltip-item-color{display:inline-block;height:12px;width:12px;margin-right:5px;color:#5b646b;border-radius:3px}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { host: [{\n type: Input\n }], showCaret: [{\n type: Input\n }], type: [{\n type: Input\n }], placement: [{\n type: Input\n }], alignment: [{\n type: Input\n }], spacing: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], title: [{\n type: Input\n }], template: [{\n type: Input\n }], context: [{\n type: Input\n }], caretElm: [{\n type: ViewChild,\n args: ['caretElm']\n }], cssClasses: [{\n type: HostBinding,\n args: ['class']\n }], onWindowResize: [{\n type: HostListener,\n args: ['window:resize']\n }] } });\n\nclass InjectionRegisteryService {\n constructor(injectionService) {\n this.injectionService = injectionService;\n this.defaults = {};\n this.components = new Map();\n }\n getByType(type = this.type) {\n return this.components.get(type);\n }\n create(bindings) {\n return this.createByType(this.type, bindings);\n }\n createByType(type, bindings) {\n bindings = this.assignDefaults(bindings);\n const component = this.injectComponent(type, bindings);\n this.register(type, component);\n return component;\n }\n destroy(instance) {\n const compsByType = this.components.get(instance.componentType);\n if (compsByType && compsByType.length) {\n const idx = compsByType.indexOf(instance);\n if (idx > -1) {\n const component = compsByType[idx];\n component.destroy();\n compsByType.splice(idx, 1);\n }\n }\n }\n destroyAll() {\n this.destroyByType(this.type);\n }\n destroyByType(type) {\n const comps = this.components.get(type);\n if (comps && comps.length) {\n let i = comps.length - 1;\n while (i >= 0) {\n this.destroy(comps[i--]);\n }\n }\n }\n injectComponent(type, bindings) {\n return this.injectionService.appendComponent(type, bindings);\n }\n assignDefaults(bindings) {\n const inputs = { ...this.defaults.inputs };\n const outputs = { ...this.defaults.outputs };\n if (!bindings.inputs && !bindings.outputs) {\n bindings = { inputs: bindings };\n }\n if (inputs) {\n bindings.inputs = { ...inputs, ...bindings.inputs };\n }\n if (outputs) {\n bindings.outputs = { ...outputs, ...bindings.outputs };\n }\n return bindings;\n }\n register(type, component) {\n if (!this.components.has(type)) {\n this.components.set(type, []);\n }\n const types = this.components.get(type);\n types.push(component);\n }\n}\n\nfunction isViewContainerRef(x) {\n return x.element;\n}\n/**\n * Injection service is a helper to append components\n * dynamically to a known location in the DOM, most\n * noteably for dialogs/tooltips appending to body.\n *\n * @export\n */\nclass InjectionService {\n constructor(applicationRef, componentFactoryResolver, injector) {\n this.applicationRef = applicationRef;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n }\n /**\n * Sets a default global root view container. This is useful for\n * things like ngUpgrade that doesn't have a ApplicationRef root.\n *\n * @param container\n */\n static setGlobalRootViewContainer(container) {\n InjectionService.globalRootViewContainer = container;\n }\n /**\n * Gets the root view container to inject the component to.\n *\n * @memberOf InjectionService\n */\n getRootViewContainer() {\n if (this._container)\n return this._container;\n if (InjectionService.globalRootViewContainer)\n return InjectionService.globalRootViewContainer;\n if (this.applicationRef.components.length)\n return this.applicationRef.components[0];\n throw new Error('View Container not found! ngUpgrade needs to manually set this via setRootViewContainer or setGlobalRootViewContainer.');\n }\n /**\n * Overrides the default root view container. This is useful for\n * things like ngUpgrade that doesn't have a ApplicationRef root.\n *\n * @param container\n *\n * @memberOf InjectionService\n */\n setRootViewContainer(container) {\n this._container = container;\n }\n /**\n * Gets the html element for a component ref.\n *\n * @param componentRef\n *\n * @memberOf InjectionService\n */\n getComponentRootNode(component) {\n if (isViewContainerRef(component)) {\n return component.element.nativeElement;\n }\n if (component.hostView && component.hostView.rootNodes.length > 0) {\n return component.hostView.rootNodes[0];\n }\n // the top most component root node has no `hostView`\n return component.location.nativeElement;\n }\n /**\n * Gets the root component container html element.\n *\n * @memberOf InjectionService\n */\n getRootViewContainerNode(component) {\n return this.getComponentRootNode(component);\n }\n /**\n * Projects the bindings onto the component\n *\n * @param component\n * @param options\n *\n * @memberOf InjectionService\n */\n projectComponentBindings(component, bindings) {\n if (bindings) {\n if (bindings.inputs !== undefined) {\n const bindingKeys = Object.getOwnPropertyNames(bindings.inputs);\n for (const bindingName of bindingKeys) {\n component.instance[bindingName] = bindings.inputs[bindingName];\n }\n }\n if (bindings.outputs !== undefined) {\n const eventKeys = Object.getOwnPropertyNames(bindings.outputs);\n for (const eventName of eventKeys) {\n component.instance[eventName] = bindings.outputs[eventName];\n }\n }\n }\n return component;\n }\n /**\n * Appends a component to a adjacent location\n *\n * @param componentClass\n * @param [options={}]\n * @param [location]\n *\n * @memberOf InjectionService\n */\n appendComponent(componentClass, bindings = {}, location) {\n if (!location)\n location = this.getRootViewContainer();\n const appendLocation = this.getComponentRootNode(location);\n const portalHost = new DomPortalOutlet(appendLocation, this.componentFactoryResolver, this.applicationRef, this.injector);\n const portal = new ComponentPortal(componentClass);\n const componentRef = portalHost.attach(portal);\n this.projectComponentBindings(componentRef, bindings);\n return componentRef;\n }\n}\nInjectionService.globalRootViewContainer = null;\nInjectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: InjectionService, deps: [{ token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });\nInjectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: InjectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: InjectionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }]; } });\n\nclass TooltipService extends InjectionRegisteryService {\n constructor(injectionService) {\n super(injectionService);\n this.type = TooltipContentComponent;\n }\n}\nTooltipService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipService, deps: [{ token: InjectionService }], target: i0.ɵɵFactoryTarget.Injectable });\nTooltipService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: InjectionService }]; } });\n\nvar LegendPosition;\n(function (LegendPosition) {\n LegendPosition[\"Right\"] = \"right\";\n LegendPosition[\"Below\"] = \"below\";\n})(LegendPosition || (LegendPosition = {}));\nvar LegendType;\n(function (LegendType) {\n LegendType[\"ScaleLegend\"] = \"scaleLegend\";\n LegendType[\"Legend\"] = \"legend\";\n})(LegendType || (LegendType = {}));\n\nvar ScaleType;\n(function (ScaleType) {\n ScaleType[\"Time\"] = \"time\";\n ScaleType[\"Linear\"] = \"linear\";\n ScaleType[\"Ordinal\"] = \"ordinal\";\n ScaleType[\"Quantile\"] = \"quantile\";\n})(ScaleType || (ScaleType = {}));\n\nclass ScaleLegendComponent {\n constructor() {\n this.horizontal = false;\n }\n ngOnChanges(changes) {\n const gradientValues = this.gradientString(this.colors.range(), this.colors.domain());\n const direction = this.horizontal ? 'right' : 'bottom';\n this.gradient = `linear-gradient(to ${direction}, ${gradientValues})`;\n }\n /**\n * Generates the string used in the gradient stylesheet properties\n * @param colors array of colors\n * @param splits array of splits on a scale of (0, 1)\n */\n gradientString(colors, splits) {\n // add the 100%\n splits.push(1);\n const pairs = [];\n colors.reverse().forEach((c, i) => {\n pairs.push(`${c} ${Math.round(splits[i] * 100)}%`);\n });\n return pairs.join(', ');\n }\n}\nScaleLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ScaleLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nScaleLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: ScaleLegendComponent, selector: \"ngx-charts-scale-legend\", inputs: { valueRange: \"valueRange\", colors: \"colors\", height: \"height\", width: \"width\", horizontal: \"horizontal\" }, usesOnChanges: true, ngImport: i0, template: `\n \n
\n {{ valueRange[1].toLocaleString() }}\n
\n
\n
\n {{ valueRange[0].toLocaleString() }}\n
\n \n `, isInline: true, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .scale-legend{text-align:center;display:flex;flex-direction:column}.chart-legend .scale-legend-wrap{display:inline-block;flex:1;width:30px;border-radius:5px;margin:0 auto}.chart-legend .scale-legend-label{font-size:12px}.chart-legend .horizontal-legend.scale-legend{flex-direction:row}.chart-legend .horizontal-legend .scale-legend-wrap{width:auto;height:30px;margin:0 16px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ScaleLegendComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-scale-legend', template: `\n \n
\n {{ valueRange[1].toLocaleString() }}\n
\n
\n
\n {{ valueRange[0].toLocaleString() }}\n
\n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .scale-legend{text-align:center;display:flex;flex-direction:column}.chart-legend .scale-legend-wrap{display:inline-block;flex:1;width:30px;border-radius:5px;margin:0 auto}.chart-legend .scale-legend-label{font-size:12px}.chart-legend .horizontal-legend.scale-legend{flex-direction:row}.chart-legend .horizontal-legend .scale-legend-wrap{width:auto;height:30px;margin:0 16px}\\n\"] }]\n }], propDecorators: { valueRange: [{\n type: Input\n }], colors: [{\n type: Input\n }], height: [{\n type: Input\n }], width: [{\n type: Input\n }], horizontal: [{\n type: Input\n }] } });\n\n/**\n * Formats a label given a date, number or string.\n *\n * @export\n */\nfunction formatLabel(label) {\n if (label instanceof Date) {\n label = label.toLocaleDateString();\n }\n else {\n label = label.toLocaleString();\n }\n return label;\n}\n/**\n * Escapes a label.\n *\n * @export\n */\nfunction escapeLabel(label) {\n return label.toLocaleString().replace(/[&'`\"<>]/g, match => {\n return {\n '&': '&',\n // tslint:disable-next-line: quotemark\n \"'\": ''',\n '`': '`',\n '\"': '"',\n '<': '<',\n '>': '>'\n }[match];\n });\n}\n\nclass LegendEntryComponent {\n constructor() {\n this.isActive = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.toggle = new EventEmitter();\n }\n get trimmedLabel() {\n return this.formattedLabel || '(empty)';\n }\n onMouseEnter() {\n this.activate.emit({ name: this.label });\n }\n onMouseLeave() {\n this.deactivate.emit({ name: this.label });\n }\n}\nLegendEntryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LegendEntryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nLegendEntryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LegendEntryComponent, selector: \"ngx-charts-legend-entry\", inputs: { color: \"color\", label: \"label\", formattedLabel: \"formattedLabel\", isActive: \"isActive\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", toggle: \"toggle\" }, host: { listeners: { \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave()\" } }, ngImport: i0, template: `\n \n \n \n {{ trimmedLabel }}\n \n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LegendEntryComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ngx-charts-legend-entry',\n template: `\n \n \n \n {{ trimmedLabel }}\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { color: [{\n type: Input\n }], label: [{\n type: Input\n }], formattedLabel: [{\n type: Input\n }], isActive: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], toggle: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass LegendComponent {\n constructor(cd) {\n this.cd = cd;\n this.horizontal = false;\n this.labelClick = new EventEmitter();\n this.labelActivate = new EventEmitter();\n this.labelDeactivate = new EventEmitter();\n this.legendEntries = [];\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.cd.markForCheck();\n this.legendEntries = this.getLegendEntries();\n }\n getLegendEntries() {\n const items = [];\n for (const label of this.data) {\n const formattedLabel = formatLabel(label);\n const idx = items.findIndex(i => {\n return i.label === formattedLabel;\n });\n if (idx === -1) {\n items.push({\n label,\n formattedLabel,\n color: this.colors.getColor(label)\n });\n }\n }\n return items;\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.label === d.name;\n });\n return item !== undefined;\n }\n activate(item) {\n this.labelActivate.emit(item);\n }\n deactivate(item) {\n this.labelDeactivate.emit(item);\n }\n trackBy(index, item) {\n return item.label;\n }\n}\nLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LegendComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LegendComponent, selector: \"ngx-charts-legend\", inputs: { data: \"data\", title: \"title\", colors: \"colors\", height: \"height\", width: \"width\", activeEntries: \"activeEntries\", horizontal: \"horizontal\" }, outputs: { labelClick: \"labelClick\", labelActivate: \"labelActivate\", labelDeactivate: \"labelDeactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n
\n
0\">\n {{ title }}\n
\n
\n
    \n
  • \n \n \n
  • \n
\n
\n
\n `, isInline: true, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .legend-title{white-space:nowrap;overflow:hidden;margin-left:10px;margin-bottom:5px;font-size:14px;font-weight:700}.chart-legend ul,.chart-legend li{padding:0;margin:0;list-style:none}.chart-legend .horizontal-legend li{display:inline-block}.chart-legend .legend-wrap{width:calc(100% - 10px)}.chart-legend .legend-labels{line-height:85%;list-style:none;text-align:left;float:left;width:100%;border-radius:3px;overflow-y:auto;overflow-x:hidden;white-space:nowrap;background:rgba(0,0,0,.05)}.chart-legend .legend-label{cursor:pointer;font-size:90%;margin:8px;color:#afb7c8}.chart-legend .legend-label:hover{color:#000;transition:.2s}.chart-legend .legend-label .active .legend-label-text{color:#000}.chart-legend .legend-label-color{display:inline-block;height:15px;width:15px;margin-right:5px;color:#5b646b;border-radius:3px}.chart-legend .legend-label-text{display:inline-block;vertical-align:top;line-height:15px;font-size:12px;width:calc(100% - 20px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart-legend .legend-title-text{vertical-align:bottom;display:inline-block;line-height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\\n\"], components: [{ type: LegendEntryComponent, selector: \"ngx-charts-legend-entry\", inputs: [\"color\", \"label\", \"formattedLabel\", \"isActive\"], outputs: [\"select\", \"activate\", \"deactivate\", \"toggle\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LegendComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-legend', template: `\n
\n
0\">\n {{ title }}\n
\n
\n
    \n
  • \n \n \n
  • \n
\n
\n
\n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .legend-title{white-space:nowrap;overflow:hidden;margin-left:10px;margin-bottom:5px;font-size:14px;font-weight:700}.chart-legend ul,.chart-legend li{padding:0;margin:0;list-style:none}.chart-legend .horizontal-legend li{display:inline-block}.chart-legend .legend-wrap{width:calc(100% - 10px)}.chart-legend .legend-labels{line-height:85%;list-style:none;text-align:left;float:left;width:100%;border-radius:3px;overflow-y:auto;overflow-x:hidden;white-space:nowrap;background:rgba(0,0,0,.05)}.chart-legend .legend-label{cursor:pointer;font-size:90%;margin:8px;color:#afb7c8}.chart-legend .legend-label:hover{color:#000;transition:.2s}.chart-legend .legend-label .active .legend-label-text{color:#000}.chart-legend .legend-label-color{display:inline-block;height:15px;width:15px;margin-right:5px;color:#5b646b;border-radius:3px}.chart-legend .legend-label-text{display:inline-block;vertical-align:top;line-height:15px;font-size:12px;width:calc(100% - 20px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart-legend .legend-title-text{vertical-align:bottom;display:inline-block;line-height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{\n type: Input\n }], title: [{\n type: Input\n }], colors: [{\n type: Input\n }], height: [{\n type: Input\n }], width: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], horizontal: [{\n type: Input\n }], labelClick: [{\n type: Output\n }], labelActivate: [{\n type: Output\n }], labelDeactivate: [{\n type: Output\n }] } });\n\nclass ChartComponent {\n constructor() {\n this.showLegend = false;\n this.animations = true;\n this.legendLabelClick = new EventEmitter();\n this.legendLabelActivate = new EventEmitter();\n this.legendLabelDeactivate = new EventEmitter();\n this.LegendPosition = LegendPosition;\n this.LegendType = LegendType;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n let legendColumns = 0;\n if (this.showLegend) {\n this.legendType = this.getLegendType();\n if (!this.legendOptions || this.legendOptions.position === LegendPosition.Right) {\n if (this.legendType === LegendType.ScaleLegend) {\n legendColumns = 1;\n }\n else {\n legendColumns = 2;\n }\n }\n }\n const chartColumns = 12 - legendColumns;\n this.chartWidth = Math.floor((this.view[0] * chartColumns) / 12.0);\n this.legendWidth =\n !this.legendOptions || this.legendOptions.position === LegendPosition.Right\n ? Math.floor((this.view[0] * legendColumns) / 12.0)\n : this.chartWidth;\n }\n getLegendType() {\n return this.legendOptions.scaleType === ScaleType.Linear ? LegendType.ScaleLegend : LegendType.Legend;\n }\n}\nChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: ChartComponent, selector: \"ngx-charts-chart\", inputs: { view: \"view\", showLegend: \"showLegend\", legendOptions: \"legendOptions\", legendType: \"legendType\", activeEntries: \"activeEntries\", animations: \"animations\" }, outputs: { legendLabelClick: \"legendLabelClick\", legendLabelActivate: \"legendLabelActivate\", legendLabelDeactivate: \"legendLabelDeactivate\" }, providers: [TooltipService], usesOnChanges: true, ngImport: i0, template: `\n
\n \n \n \n \n \n \n \n
\n `, isInline: true, components: [{ type: ScaleLegendComponent, selector: \"ngx-charts-scale-legend\", inputs: [\"valueRange\", \"colors\", \"height\", \"width\", \"horizontal\"] }, { type: LegendComponent, selector: \"ngx-charts-legend\", inputs: [\"data\", \"title\", \"colors\", \"height\", \"width\", \"activeEntries\", \"horizontal\"], outputs: [\"labelClick\", \"labelActivate\", \"labelDeactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartComponent, decorators: [{\n type: Component,\n args: [{\n providers: [TooltipService],\n selector: 'ngx-charts-chart',\n template: `\n
\n \n \n \n \n \n \n \n
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { view: [{\n type: Input\n }], showLegend: [{\n type: Input\n }], legendOptions: [{\n type: Input\n }], legendType: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], animations: [{\n type: Input\n }], legendLabelClick: [{\n type: Output\n }], legendLabelActivate: [{\n type: Output\n }], legendLabelDeactivate: [{\n type: Output\n }] } });\n\n/**\n * Visibility Observer\n */\nclass VisibilityObserver {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n this.visible = new EventEmitter();\n this.isVisible = false;\n this.runCheck();\n }\n destroy() {\n clearTimeout(this.timeout);\n }\n onVisibilityChange() {\n // trigger zone recalc for columns\n this.zone.run(() => {\n this.isVisible = true;\n this.visible.emit(true);\n });\n }\n runCheck() {\n const check = () => {\n if (!this.element) {\n return;\n }\n // https://davidwalsh.name/offsetheight-visibility\n const { offsetHeight, offsetWidth } = this.element.nativeElement;\n if (offsetHeight && offsetWidth) {\n clearTimeout(this.timeout);\n this.onVisibilityChange();\n }\n else {\n clearTimeout(this.timeout);\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check(), 100);\n });\n }\n };\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check());\n });\n }\n}\nVisibilityObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: VisibilityObserver, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nVisibilityObserver.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: VisibilityObserver, selector: \"visibility-observer\", outputs: { visible: \"visible\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: VisibilityObserver, decorators: [{\n type: Directive,\n args: [{\n selector: 'visibility-observer'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { visible: [{\n type: Output\n }] } });\n\nfunction isDate(value) {\n return toString.call(value) === '[object Date]';\n}\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\nclass BaseChartComponent {\n constructor(chartElement, zone, cd, platformId) {\n this.chartElement = chartElement;\n this.zone = zone;\n this.cd = cd;\n this.platformId = platformId;\n this.scheme = 'cool';\n this.schemeType = ScaleType.Ordinal;\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.animations = false;\n }\n }\n ngAfterViewInit() {\n this.bindWindowResizeEvent();\n // listen for visibility of the element for hidden by default scenario\n this.visibilityObserver = new VisibilityObserver(this.chartElement, this.zone);\n this.visibilityObserver.visible.subscribe(this.update.bind(this));\n }\n ngOnDestroy() {\n this.unbindEvents();\n if (this.visibilityObserver) {\n this.visibilityObserver.visible.unsubscribe();\n this.visibilityObserver.destroy();\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n if (this.results) {\n this.results = this.cloneData(this.results);\n }\n else {\n this.results = [];\n }\n if (this.view) {\n this.width = this.view[0];\n this.height = this.view[1];\n }\n else {\n const dims = this.getContainerDims();\n if (dims) {\n this.width = dims.width;\n this.height = dims.height;\n }\n }\n // default values if width or height are 0 or undefined\n if (!this.width) {\n this.width = 600;\n }\n if (!this.height) {\n this.height = 400;\n }\n this.width = Math.floor(this.width);\n this.height = Math.floor(this.height);\n if (this.cd) {\n this.cd.markForCheck();\n }\n }\n getContainerDims() {\n let width;\n let height;\n const hostElem = this.chartElement.nativeElement;\n if (isPlatformBrowser(this.platformId) && hostElem.parentNode !== null) {\n // Get the container dimensions\n const dims = hostElem.parentNode.getBoundingClientRect();\n width = dims.width;\n height = dims.height;\n }\n if (width && height) {\n return { width, height };\n }\n return null;\n }\n /**\n * Converts all date objects that appear as name\n * into formatted date strings\n */\n formatDates() {\n for (let i = 0; i < this.results.length; i++) {\n const g = this.results[i];\n g.label = g.name;\n if (isDate(g.label)) {\n g.label = g.label.toLocaleDateString();\n }\n if (g.series) {\n for (let j = 0; j < g.series.length; j++) {\n const d = g.series[j];\n d.label = d.name;\n if (isDate(d.label)) {\n d.label = d.label.toLocaleDateString();\n }\n }\n }\n }\n }\n unbindEvents() {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n bindWindowResizeEvent() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n const source = fromEvent(window, 'resize');\n const subscription = source.pipe(debounceTime(200)).subscribe(e => {\n this.update();\n if (this.cd) {\n this.cd.markForCheck();\n }\n });\n this.resizeSubscription = subscription;\n }\n /**\n * Clones the data into a new object\n *\n * @memberOf BaseChart\n */\n cloneData(data) {\n const results = [];\n for (const item of data) {\n const copy = {};\n if (item['name'] !== undefined) {\n copy['name'] = item['name'];\n }\n if (item['value'] !== undefined) {\n copy['value'] = item['value'];\n }\n if (item['series'] !== undefined) {\n copy['series'] = [];\n for (const seriesItem of item['series']) {\n const seriesItemCopy = Object.assign({}, seriesItem);\n copy['series'].push(seriesItemCopy);\n }\n }\n if (item['extra'] !== undefined) {\n copy['extra'] = JSON.parse(JSON.stringify(item['extra']));\n }\n if (item['source'] !== undefined) {\n copy['source'] = item['source'];\n }\n if (item['target'] !== undefined) {\n copy['target'] = item['target'];\n }\n results.push(copy);\n }\n return results;\n }\n}\nBaseChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BaseChartComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nBaseChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BaseChartComponent, selector: \"base-chart\", inputs: { results: \"results\", view: \"view\", scheme: \"scheme\", schemeType: \"schemeType\", customColors: \"customColors\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `
`, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BaseChartComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'base-chart',\n template: `
`\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { results: [{\n type: Input\n }], view: [{\n type: Input\n }], scheme: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], customColors: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\nvar Orientation;\n(function (Orientation) {\n Orientation[\"Top\"] = \"top\";\n Orientation[\"Bottom\"] = \"bottom\";\n Orientation[\"Left\"] = \"left\";\n Orientation[\"Right\"] = \"right\";\n})(Orientation || (Orientation = {}));\n\nclass AxisLabelComponent {\n constructor(element) {\n this.textHeight = 25;\n this.margin = 5;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.strokeWidth = '0.01';\n this.textAnchor = 'middle';\n this.transform = '';\n switch (this.orient) {\n case Orientation.Top:\n this.y = this.offset;\n this.x = this.width / 2;\n break;\n case Orientation.Bottom:\n this.y = this.offset;\n this.x = this.width / 2;\n break;\n case Orientation.Left:\n this.y = -(this.offset + this.textHeight + this.margin);\n this.x = -this.height / 2;\n this.transform = 'rotate(270)';\n break;\n case Orientation.Right:\n this.y = this.offset + this.margin;\n this.x = -this.height / 2;\n this.transform = 'rotate(270)';\n break;\n default:\n }\n }\n}\nAxisLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxisLabelComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nAxisLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AxisLabelComponent, selector: \"g[ngx-charts-axis-label]\", inputs: { orient: \"orient\", label: \"label\", offset: \"offset\", width: \"width\", height: \"height\" }, usesOnChanges: true, ngImport: i0, template: `\n \n {{ label }}\n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxisLabelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-axis-label]',\n template: `\n \n {{ label }}\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { orient: [{\n type: Input\n }], label: [{\n type: Input\n }], offset: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }] } });\n\nfunction trimLabel(s, max = 16) {\n if (typeof s !== 'string') {\n if (typeof s === 'number') {\n return s + '';\n }\n else {\n return '';\n }\n }\n s = s.trim();\n if (s.length <= max) {\n return s;\n }\n else {\n return `${s.slice(0, max)}...`;\n }\n}\n\nfunction reduceTicks(ticks, maxTicks) {\n if (ticks.length > maxTicks) {\n const reduced = [];\n const modulus = Math.floor(ticks.length / maxTicks);\n for (let i = 0; i < ticks.length; i++) {\n if (i % modulus === 0) {\n reduced.push(ticks[i]);\n }\n }\n ticks = reduced;\n }\n return ticks;\n}\nfunction getTickLines(label, maxLength, maxLines) {\n const labelString = (label || '').toString();\n let totalLines = [];\n if (/\\s/.test(labelString)) {\n totalLines = labelString.split(/\\s+/).reduce((lines, line) => {\n const last = (lines.pop() || '') + ' ';\n return last.length + line.length > maxLength ? [...lines, last.trim(), line.trim()] : [...lines, last + line];\n }, []);\n }\n else {\n let startIndex = 0;\n while (startIndex < labelString.length) {\n totalLines.push(labelString.substring(startIndex, startIndex + maxLength));\n startIndex += maxLength;\n }\n }\n if (totalLines.length > maxLines) {\n totalLines = totalLines.splice(0, maxLines);\n totalLines[totalLines.length - 1] += '...';\n }\n return totalLines;\n}\n\nvar TextAnchor;\n(function (TextAnchor) {\n TextAnchor[\"Start\"] = \"start\";\n TextAnchor[\"Middle\"] = \"middle\";\n TextAnchor[\"End\"] = \"end\";\n})(TextAnchor || (TextAnchor = {}));\n\nclass XAxisTicksComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.tickArguments = [5];\n this.tickStroke = '#ccc';\n this.trimTicks = true;\n this.maxTickLength = 16;\n this.showGridLines = false;\n this.rotateTicks = true;\n this.wrapTicks = false;\n this.dimensionsChanged = new EventEmitter();\n this.verticalSpacing = 20;\n this.rotateLabels = false;\n this.innerTickSize = 6;\n this.outerTickSize = 6;\n this.tickPadding = 3;\n this.textAnchor = TextAnchor.Middle;\n this.maxTicksLength = 0;\n this.maxAllowedLength = 16;\n this.height = 0;\n this.approxHeight = 10;\n this.maxPossibleLengthForTickIfWrapped = 16;\n }\n get isWrapTicksSupported() {\n return this.wrapTicks && this.scale.step;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngAfterViewInit() {\n setTimeout(() => this.updateDims());\n }\n updateDims() {\n if (!isPlatformBrowser(this.platformId)) {\n // for SSR, use approximate value instead of measured\n this.dimensionsChanged.emit({ height: this.approxHeight });\n return;\n }\n const height = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().height, 10);\n if (height !== this.height) {\n this.height = height;\n this.dimensionsChanged.emit({ height: this.height });\n setTimeout(() => this.updateDims());\n }\n }\n update() {\n const scale = this.scale;\n this.ticks = this.getTicks();\n if (this.tickFormatting) {\n this.tickFormat = this.tickFormatting;\n }\n else if (scale.tickFormat) {\n // eslint-disable-next-line prefer-spread\n this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n }\n else {\n this.tickFormat = function (d) {\n if (d.constructor.name === 'Date') {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n const angle = this.rotateTicks ? this.getRotationAngle(this.ticks) : null;\n this.adjustedScale = this.scale.bandwidth\n ? function (d) {\n return this.scale(d) + this.scale.bandwidth() * 0.5;\n }\n : this.scale;\n this.textTransform = '';\n if (angle && angle !== 0) {\n this.textTransform = `rotate(${angle})`;\n this.textAnchor = TextAnchor.End;\n this.verticalSpacing = 10;\n }\n else {\n this.textAnchor = TextAnchor.Middle;\n }\n setTimeout(() => this.updateDims());\n }\n getRotationAngle(ticks) {\n let angle = 0;\n this.maxTicksLength = 0;\n for (let i = 0; i < ticks.length; i++) {\n const tick = this.tickFormat(ticks[i]).toString();\n let tickLength = tick.length;\n if (this.trimTicks) {\n tickLength = this.tickTrim(tick).length;\n }\n if (tickLength > this.maxTicksLength) {\n this.maxTicksLength = tickLength;\n }\n }\n const len = Math.min(this.maxTicksLength, this.maxAllowedLength);\n const charWidth = 7; // need to measure this\n const wordWidth = len * charWidth;\n let baseWidth = wordWidth;\n const maxBaseWidth = Math.floor(this.width / ticks.length);\n // calculate optimal angle\n while (baseWidth > maxBaseWidth && angle > -90) {\n angle -= 30;\n baseWidth = Math.cos(angle * (Math.PI / 180)) * wordWidth;\n }\n let labelHeight = 14;\n if (this.isWrapTicksSupported) {\n const longestTick = this.ticks.reduce((earlier, current) => (current.length > earlier.length ? current : earlier), '');\n const tickLines = this.tickChunks(longestTick);\n labelHeight = 14 * (tickLines.length || 1);\n this.maxPossibleLengthForTickIfWrapped = this.getMaxPossibleLengthForTick(longestTick);\n }\n const requiredHeight = angle !== 0\n ? Math.max(Math.abs(Math.sin((angle * Math.PI) / 180)) * this.maxTickLength * charWidth, 10)\n : labelHeight;\n this.approxHeight = Math.min(requiredHeight, 200);\n return angle;\n }\n getTicks() {\n let ticks;\n const maxTicks = this.getMaxTicks(20);\n const maxScaleTicks = this.getMaxTicks(100);\n if (this.tickValues) {\n ticks = this.tickValues;\n }\n else if (this.scale.ticks) {\n ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n }\n else {\n ticks = this.scale.domain();\n ticks = reduceTicks(ticks, maxTicks);\n }\n return ticks;\n }\n getMaxTicks(tickWidth) {\n return Math.floor(this.width / tickWidth);\n }\n tickTransform(tick) {\n return 'translate(' + this.adjustedScale(tick) + ',' + this.verticalSpacing + ')';\n }\n gridLineTransform() {\n return `translate(0,${-this.verticalSpacing - 5})`;\n }\n tickTrim(label) {\n return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n }\n getMaxPossibleLengthForTick(longestLabel) {\n if (this.scale.bandwidth) {\n const averageCharacterWidth = 7; // approximate char width\n const maxCharacters = Math.floor(this.scale.bandwidth() / averageCharacterWidth);\n const truncatedText = longestLabel.slice(0, maxCharacters);\n return Math.max(truncatedText.length, this.maxTickLength);\n }\n return this.maxTickLength;\n }\n tickChunks(label) {\n if (label.toString().length > this.maxTickLength && this.scale.bandwidth) {\n const maxAllowedLines = 5;\n let maxLines = this.rotateTicks ? Math.floor(this.scale.step() / 14) : maxAllowedLines;\n if (maxLines <= 1) {\n return [this.tickTrim(label)];\n }\n let possibleStringLength = Math.max(this.maxPossibleLengthForTickIfWrapped, this.maxTickLength);\n if (!isPlatformBrowser(this.platformId)) {\n possibleStringLength = Math.floor(Math.min(this.approxHeight / maxAllowedLines, Math.max(this.maxPossibleLengthForTickIfWrapped, this.maxTickLength)));\n }\n maxLines = Math.min(maxLines, maxAllowedLines);\n const lines = getTickLines(label, possibleStringLength, maxLines < 1 ? 1 : maxLines);\n return lines;\n }\n return [this.tickTrim(label)];\n }\n}\nXAxisTicksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: XAxisTicksComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nXAxisTicksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: XAxisTicksComponent, selector: \"g[ngx-charts-x-axis-ticks]\", inputs: { scale: \"scale\", orient: \"orient\", tickArguments: \"tickArguments\", tickValues: \"tickValues\", tickStroke: \"tickStroke\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", showGridLines: \"showGridLines\", gridLineHeight: \"gridLineHeight\", width: \"width\", rotateTicks: \"rotateTicks\", wrapTicks: \"wrapTicks\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, viewQueries: [{ propertyName: \"ticksElement\", first: true, predicate: [\"ticksel\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n {{ tickFormatted }}\n \n \n \n\n \n \n \n {{ tickLine }}\n \n \n \n\n \n {{ tickTrim(tickFormatted) }}\n \n \n \n \n\n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: XAxisTicksComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-x-axis-ticks]',\n template: `\n \n \n \n {{ tickFormatted }}\n \n \n \n\n \n \n \n {{ tickLine }}\n \n \n \n\n \n {{ tickTrim(tickFormatted) }}\n \n \n \n \n\n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { scale: [{\n type: Input\n }], orient: [{\n type: Input\n }], tickArguments: [{\n type: Input\n }], tickValues: [{\n type: Input\n }], tickStroke: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], gridLineHeight: [{\n type: Input\n }], width: [{\n type: Input\n }], rotateTicks: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], ticksElement: [{\n type: ViewChild,\n args: ['ticksel']\n }] } });\n\nclass XAxisComponent {\n constructor() {\n this.rotateTicks = true;\n this.showGridLines = false;\n this.xOrient = Orientation.Bottom;\n this.xAxisOffset = 0;\n this.wrapTicks = false;\n this.dimensionsChanged = new EventEmitter();\n this.xAxisClassName = 'x axis';\n this.labelOffset = 0;\n this.fill = 'none';\n this.stroke = 'stroke';\n this.tickStroke = '#ccc';\n this.strokeWidth = 'none';\n this.padding = 5;\n this.orientation = Orientation;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.transform = `translate(0,${this.xAxisOffset + this.padding + this.dims.height})`;\n if (typeof this.xAxisTickCount !== 'undefined') {\n this.tickArguments = [this.xAxisTickCount];\n }\n }\n emitTicksHeight({ height }) {\n const newLabelOffset = height + 25 + 5;\n if (newLabelOffset !== this.labelOffset) {\n this.labelOffset = newLabelOffset;\n setTimeout(() => {\n this.dimensionsChanged.emit({ height });\n }, 0);\n }\n }\n}\nXAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: XAxisComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nXAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: { xScale: \"xScale\", dims: \"dims\", trimTicks: \"trimTicks\", rotateTicks: \"rotateTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", showGridLines: \"showGridLines\", showLabel: \"showLabel\", labelText: \"labelText\", ticks: \"ticks\", xAxisTickCount: \"xAxisTickCount\", xOrient: \"xOrient\", xAxisOffset: \"xAxisOffset\", wrapTicks: \"wrapTicks\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, viewQueries: [{ propertyName: \"ticksComponent\", first: true, predicate: XAxisTicksComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: XAxisTicksComponent, selector: \"g[ngx-charts-x-axis-ticks]\", inputs: [\"scale\", \"orient\", \"tickArguments\", \"tickValues\", \"tickStroke\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"gridLineHeight\", \"width\", \"rotateTicks\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AxisLabelComponent, selector: \"g[ngx-charts-axis-label]\", inputs: [\"orient\", \"label\", \"offset\", \"width\", \"height\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: XAxisComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-x-axis]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { xScale: [{\n type: Input\n }], dims: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], rotateTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], showLabel: [{\n type: Input\n }], labelText: [{\n type: Input\n }], ticks: [{\n type: Input\n }], xAxisTickCount: [{\n type: Input\n }], xOrient: [{\n type: Input\n }], xAxisOffset: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], ticksComponent: [{\n type: ViewChild,\n args: [XAxisTicksComponent]\n }] } });\n\n/**\n * Generates a rounded rectanglar path\n *\n * @export\n * @param x, y, w, h, r, tl, tr, bl, br\n */\nfunction roundedRect(x, y, w, h, r, [tl, tr, bl, br]) {\n let retval = '';\n w = Math.floor(w);\n h = Math.floor(h);\n w = w === 0 ? 1 : w;\n h = h === 0 ? 1 : h;\n retval = `M${[x + r, y]}`;\n retval += `h${w - 2 * r}`;\n if (tr) {\n retval += `a${[r, r]} 0 0 1 ${[r, r]}`;\n }\n else {\n retval += `h${r}v${r}`;\n }\n retval += `v${h - 2 * r}`;\n if (br) {\n retval += `a${[r, r]} 0 0 1 ${[-r, r]}`;\n }\n else {\n retval += `v${r}h${-r}`;\n }\n retval += `h${2 * r - w}`;\n if (bl) {\n retval += `a${[r, r]} 0 0 1 ${[-r, -r]}`;\n }\n else {\n retval += `h${-r}v${-r}`;\n }\n retval += `v${2 * r - h}`;\n if (tl) {\n retval += `a${[r, r]} 0 0 1 ${[r, -r]}`;\n }\n else {\n retval += `v${-r}h${r}`;\n }\n retval += `z`;\n return retval;\n}\n\nclass YAxisTicksComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.tickArguments = [5];\n this.tickStroke = '#ccc';\n this.trimTicks = true;\n this.maxTickLength = 16;\n this.showGridLines = false;\n this.showRefLabels = false;\n this.showRefLines = false;\n this.wrapTicks = false;\n this.dimensionsChanged = new EventEmitter();\n this.innerTickSize = 6;\n this.tickPadding = 3;\n this.verticalSpacing = 20;\n this.textAnchor = TextAnchor.Middle;\n this.width = 0;\n this.outerTickSize = 6;\n this.rotateLabels = false;\n this.referenceLineLength = 0;\n this.Orientation = Orientation;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngAfterViewInit() {\n setTimeout(() => this.updateDims());\n }\n updateDims() {\n if (!isPlatformBrowser(this.platformId)) {\n // for SSR, use approximate value instead of measured\n this.width = this.getApproximateAxisWidth();\n this.dimensionsChanged.emit({ width: this.width });\n return;\n }\n const width = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().width, 10);\n if (width !== this.width) {\n this.width = width;\n this.dimensionsChanged.emit({ width });\n setTimeout(() => this.updateDims());\n }\n }\n update() {\n const scale = this.scale;\n const sign = this.orient === Orientation.Top || this.orient === Orientation.Right ? -1 : 1;\n this.tickSpacing = Math.max(this.innerTickSize, 0) + this.tickPadding;\n this.ticks = this.getTicks();\n if (this.tickFormatting) {\n this.tickFormat = this.tickFormatting;\n }\n else if (scale.tickFormat) {\n // eslint-disable-next-line prefer-spread\n this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n }\n else {\n this.tickFormat = function (d) {\n if (d.constructor.name === 'Date') {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n this.adjustedScale = scale.bandwidth\n ? d => {\n // position the tick to middle considering number of lines of the tick\n const positionMiddle = scale(d) + scale.bandwidth() * 0.5;\n if (this.wrapTicks && d.toString().length > this.maxTickLength) {\n const chunksLength = this.tickChunks(d).length;\n if (chunksLength === 1) {\n return positionMiddle;\n }\n const bandWidth = scale.bandwidth();\n const heightOfLines = chunksLength * 8;\n const availableFreeSpace = bandWidth * 0.5 - heightOfLines * 0.5;\n return scale(d) + availableFreeSpace;\n }\n return positionMiddle;\n }\n : scale;\n if (this.showRefLines && this.referenceLines) {\n this.setReferencelines();\n }\n switch (this.orient) {\n case Orientation.Top:\n this.transform = function (tick) {\n return 'translate(' + this.adjustedScale(tick) + ',0)';\n };\n this.textAnchor = TextAnchor.Middle;\n this.y2 = this.innerTickSize * sign;\n this.y1 = this.tickSpacing * sign;\n this.dy = sign < 0 ? '0em' : '.71em';\n break;\n case Orientation.Bottom:\n this.transform = function (tick) {\n return 'translate(' + this.adjustedScale(tick) + ',0)';\n };\n this.textAnchor = TextAnchor.Middle;\n this.y2 = this.innerTickSize * sign;\n this.y1 = this.tickSpacing * sign;\n this.dy = sign < 0 ? '0em' : '.71em';\n break;\n case Orientation.Left:\n this.transform = function (tick) {\n return 'translate(0,' + this.adjustedScale(tick) + ')';\n };\n this.textAnchor = TextAnchor.End;\n this.x2 = this.innerTickSize * -sign;\n this.x1 = this.tickSpacing * -sign;\n this.dy = '.32em';\n break;\n case Orientation.Right:\n this.transform = function (tick) {\n return 'translate(0,' + this.adjustedScale(tick) + ')';\n };\n this.textAnchor = TextAnchor.Start;\n this.x2 = this.innerTickSize * -sign;\n this.x1 = this.tickSpacing * -sign;\n this.dy = '.32em';\n break;\n default:\n }\n setTimeout(() => this.updateDims());\n }\n setReferencelines() {\n this.refMin = this.adjustedScale(Math.min.apply(null, this.referenceLines.map(item => item.value)));\n this.refMax = this.adjustedScale(Math.max.apply(null, this.referenceLines.map(item => item.value)));\n this.referenceLineLength = this.referenceLines.length;\n this.referenceAreaPath = roundedRect(0, this.refMax, this.gridLineWidth, this.refMin - this.refMax, 0, [\n false,\n false,\n false,\n false\n ]);\n }\n getTicks() {\n let ticks;\n const maxTicks = this.getMaxTicks(20);\n const maxScaleTicks = this.getMaxTicks(50);\n if (this.tickValues) {\n ticks = this.tickValues;\n }\n else if (this.scale.ticks) {\n ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n }\n else {\n ticks = this.scale.domain();\n ticks = reduceTicks(ticks, maxTicks);\n }\n return ticks;\n }\n getMaxTicks(tickHeight) {\n return Math.floor(this.height / tickHeight);\n }\n tickTransform(tick) {\n return `translate(${this.adjustedScale(tick)},${this.verticalSpacing})`;\n }\n gridLineTransform() {\n return `translate(5,0)`;\n }\n tickTrim(label) {\n return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n }\n getApproximateAxisWidth() {\n const maxChars = Math.max(...this.ticks.map(t => this.tickTrim(this.tickFormat(t)).length));\n const charWidth = 7;\n return maxChars * charWidth;\n }\n tickChunks(label) {\n if (label.toString().length > this.maxTickLength && this.scale.bandwidth) {\n // for y-axis the width of the tick is fixed\n const preferredWidth = this.maxTickLength;\n const maxLines = Math.floor(this.scale.bandwidth() / 15);\n if (maxLines <= 1) {\n return [this.tickTrim(label)];\n }\n return getTickLines(label, preferredWidth, Math.min(maxLines, 5));\n }\n return [this.tickFormat(label)];\n }\n}\nYAxisTicksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: YAxisTicksComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nYAxisTicksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: YAxisTicksComponent, selector: \"g[ngx-charts-y-axis-ticks]\", inputs: { scale: \"scale\", orient: \"orient\", tickArguments: \"tickArguments\", tickValues: \"tickValues\", tickStroke: \"tickStroke\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", showGridLines: \"showGridLines\", gridLineWidth: \"gridLineWidth\", height: \"height\", referenceLines: \"referenceLines\", showRefLabels: \"showRefLabels\", showRefLines: \"showRefLines\", wrapTicks: \"wrapTicks\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, viewQueries: [{ propertyName: \"ticksElement\", first: true, predicate: [\"ticksel\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n {{ tickFormatted }}\n \n \n \n\n \n \n 1; else tmplSinglelineTick\">\n \n {{ tickLine }}\n \n \n \n \n\n \n {{ tickTrim(tickFormatted) }}\n \n \n \n \n\n 1 && refMax && refMin && showRefLines\"\n class=\"reference-area\"\n [attr.d]=\"referenceAreaPath\"\n [attr.transform]=\"gridLineTransform()\"\n />\n \n \n \n \n \n \n\n \n \n \n \n {{ tickTrim(tickFormat(refLine.value)) }}\n \n {{ refLine.name }}\n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: YAxisTicksComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-y-axis-ticks]',\n template: `\n \n \n \n {{ tickFormatted }}\n \n \n \n\n \n \n 1; else tmplSinglelineTick\">\n \n {{ tickLine }}\n \n \n \n \n\n \n {{ tickTrim(tickFormatted) }}\n \n \n \n \n\n 1 && refMax && refMin && showRefLines\"\n class=\"reference-area\"\n [attr.d]=\"referenceAreaPath\"\n [attr.transform]=\"gridLineTransform()\"\n />\n \n \n \n \n \n \n\n \n \n \n \n {{ tickTrim(tickFormat(refLine.value)) }}\n \n {{ refLine.name }}\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { scale: [{\n type: Input\n }], orient: [{\n type: Input\n }], tickArguments: [{\n type: Input\n }], tickValues: [{\n type: Input\n }], tickStroke: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], gridLineWidth: [{\n type: Input\n }], height: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], ticksElement: [{\n type: ViewChild,\n args: ['ticksel']\n }] } });\n\nclass YAxisComponent {\n constructor() {\n this.showGridLines = false;\n this.yOrient = Orientation.Left;\n this.yAxisOffset = 0;\n this.wrapTicks = false;\n this.dimensionsChanged = new EventEmitter();\n this.yAxisClassName = 'y axis';\n this.labelOffset = 15;\n this.fill = 'none';\n this.stroke = '#CCC';\n this.tickStroke = '#CCC';\n this.strokeWidth = 1;\n this.padding = 5;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.offset = -(this.yAxisOffset + this.padding);\n if (this.yOrient === Orientation.Right) {\n this.labelOffset = 65;\n this.transform = `translate(${this.offset + this.dims.width} , 0)`;\n }\n else {\n this.transform = `translate(${this.offset} , 0)`;\n }\n if (this.yAxisTickCount !== undefined) {\n this.tickArguments = [this.yAxisTickCount];\n }\n }\n emitTicksWidth({ width }) {\n if (width !== this.labelOffset && this.yOrient === Orientation.Right) {\n this.labelOffset = width + this.labelOffset;\n setTimeout(() => {\n this.dimensionsChanged.emit({ width });\n }, 0);\n }\n else if (width !== this.labelOffset) {\n this.labelOffset = width;\n setTimeout(() => {\n this.dimensionsChanged.emit({ width });\n }, 0);\n }\n }\n}\nYAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: YAxisComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nYAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: { yScale: \"yScale\", dims: \"dims\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", ticks: \"ticks\", showGridLines: \"showGridLines\", showLabel: \"showLabel\", labelText: \"labelText\", yAxisTickCount: \"yAxisTickCount\", yOrient: \"yOrient\", referenceLines: \"referenceLines\", showRefLines: \"showRefLines\", showRefLabels: \"showRefLabels\", yAxisOffset: \"yAxisOffset\", wrapTicks: \"wrapTicks\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, viewQueries: [{ propertyName: \"ticksComponent\", first: true, predicate: YAxisTicksComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n\n \n \n `, isInline: true, components: [{ type: YAxisTicksComponent, selector: \"g[ngx-charts-y-axis-ticks]\", inputs: [\"scale\", \"orient\", \"tickArguments\", \"tickValues\", \"tickStroke\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"gridLineWidth\", \"height\", \"referenceLines\", \"showRefLabels\", \"showRefLines\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AxisLabelComponent, selector: \"g[ngx-charts-axis-label]\", inputs: [\"orient\", \"label\", \"offset\", \"width\", \"height\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: YAxisComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-y-axis]',\n template: `\n \n \n\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { yScale: [{\n type: Input\n }], dims: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], ticks: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], showLabel: [{\n type: Input\n }], labelText: [{\n type: Input\n }], yAxisTickCount: [{\n type: Input\n }], yOrient: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], yAxisOffset: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], ticksComponent: [{\n type: ViewChild,\n args: [YAxisTicksComponent]\n }] } });\n\nclass AxesModule {\n}\nAxesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAxesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxesModule, declarations: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent], imports: [CommonModule], exports: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent] });\nAxesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxesModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AxesModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent],\n exports: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent]\n }]\n }] });\n\nvar StyleTypes;\n(function (StyleTypes) {\n StyleTypes[\"popover\"] = \"popover\";\n StyleTypes[\"tooltip\"] = \"tooltip\";\n})(StyleTypes || (StyleTypes = {}));\n\nvar ShowTypes;\n(function (ShowTypes) {\n ShowTypes[ShowTypes[\"all\"] = 'all'] = \"all\";\n ShowTypes[ShowTypes[\"focus\"] = 'focus'] = \"focus\";\n ShowTypes[ShowTypes[\"mouseover\"] = 'mouseover'] = \"mouseover\";\n})(ShowTypes || (ShowTypes = {}));\n\nclass TooltipDirective {\n constructor(tooltipService, viewContainerRef, renderer) {\n this.tooltipService = tooltipService;\n this.viewContainerRef = viewContainerRef;\n this.renderer = renderer;\n this.tooltipCssClass = '';\n this.tooltipAppendToBody = true;\n this.tooltipSpacing = 10;\n this.tooltipDisabled = false;\n this.tooltipShowCaret = true;\n this.tooltipPlacement = PlacementTypes.Top;\n this.tooltipAlignment = PlacementTypes.Center;\n this.tooltipType = StyleTypes.popover;\n this.tooltipCloseOnClickOutside = true;\n this.tooltipCloseOnMouseLeave = true;\n this.tooltipHideTimeout = 300;\n this.tooltipShowTimeout = 100;\n this.tooltipShowEvent = ShowTypes.all;\n this.tooltipImmediateExit = false;\n this.show = new EventEmitter();\n this.hide = new EventEmitter();\n }\n get listensForFocus() {\n return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.focus;\n }\n get listensForHover() {\n return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.mouseover;\n }\n ngOnDestroy() {\n this.hideTooltip(true);\n }\n onFocus() {\n if (this.listensForFocus) {\n this.showTooltip();\n }\n }\n onBlur() {\n if (this.listensForFocus) {\n this.hideTooltip(true);\n }\n }\n onMouseEnter() {\n if (this.listensForHover) {\n this.showTooltip();\n }\n }\n onMouseLeave(target) {\n if (this.listensForHover && this.tooltipCloseOnMouseLeave) {\n clearTimeout(this.timeout);\n if (this.component) {\n const contentDom = this.component.instance.element.nativeElement;\n const contains = contentDom.contains(target);\n if (contains)\n return;\n }\n this.hideTooltip(this.tooltipImmediateExit);\n }\n }\n onMouseClick() {\n if (this.listensForHover) {\n this.hideTooltip(true);\n }\n }\n showTooltip(immediate) {\n if (this.component || this.tooltipDisabled)\n return;\n const time = immediate\n ? 0\n : this.tooltipShowTimeout + (navigator.userAgent.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/) ? 400 : 0);\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.tooltipService.destroyAll();\n const options = this.createBoundOptions();\n this.component = this.tooltipService.create(options);\n // add a tiny timeout to avoid event re-triggers\n setTimeout(() => {\n if (this.component) {\n this.addHideListeners(this.component.instance.element.nativeElement);\n }\n }, 10);\n this.show.emit(true);\n }, time);\n }\n addHideListeners(tooltip) {\n // on mouse enter, cancel the hide triggered by the leave\n this.mouseEnterContentEvent = this.renderer.listen(tooltip, 'mouseenter', () => {\n clearTimeout(this.timeout);\n });\n // content mouse leave listener\n if (this.tooltipCloseOnMouseLeave) {\n this.mouseLeaveContentEvent = this.renderer.listen(tooltip, 'mouseleave', () => {\n this.hideTooltip(this.tooltipImmediateExit);\n });\n }\n // content close on click outside\n if (this.tooltipCloseOnClickOutside) {\n this.documentClickEvent = this.renderer.listen('window', 'click', event => {\n const contains = tooltip.contains(event.target);\n if (!contains)\n this.hideTooltip();\n });\n }\n }\n hideTooltip(immediate = false) {\n if (!this.component)\n return;\n const destroyFn = () => {\n // remove events\n if (this.mouseLeaveContentEvent)\n this.mouseLeaveContentEvent();\n if (this.mouseEnterContentEvent)\n this.mouseEnterContentEvent();\n if (this.documentClickEvent)\n this.documentClickEvent();\n // emit events\n this.hide.emit(true);\n // destroy component\n this.tooltipService.destroy(this.component);\n this.component = undefined;\n };\n clearTimeout(this.timeout);\n if (!immediate) {\n this.timeout = setTimeout(destroyFn, this.tooltipHideTimeout);\n }\n else {\n destroyFn();\n }\n }\n createBoundOptions() {\n return {\n title: this.tooltipTitle,\n template: this.tooltipTemplate,\n host: this.viewContainerRef.element,\n placement: this.tooltipPlacement,\n alignment: this.tooltipAlignment,\n type: this.tooltipType,\n showCaret: this.tooltipShowCaret,\n cssClass: this.tooltipCssClass,\n spacing: this.tooltipSpacing,\n context: this.tooltipContext\n };\n }\n}\nTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipDirective, deps: [{ token: TooltipService }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: { tooltipCssClass: \"tooltipCssClass\", tooltipTitle: \"tooltipTitle\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipSpacing: \"tooltipSpacing\", tooltipDisabled: \"tooltipDisabled\", tooltipShowCaret: \"tooltipShowCaret\", tooltipPlacement: \"tooltipPlacement\", tooltipAlignment: \"tooltipAlignment\", tooltipType: \"tooltipType\", tooltipCloseOnClickOutside: \"tooltipCloseOnClickOutside\", tooltipCloseOnMouseLeave: \"tooltipCloseOnMouseLeave\", tooltipHideTimeout: \"tooltipHideTimeout\", tooltipShowTimeout: \"tooltipShowTimeout\", tooltipTemplate: \"tooltipTemplate\", tooltipShowEvent: \"tooltipShowEvent\", tooltipContext: \"tooltipContext\", tooltipImmediateExit: \"tooltipImmediateExit\" }, outputs: { show: \"show\", hide: \"hide\" }, host: { listeners: { \"focusin\": \"onFocus()\", \"blur\": \"onBlur()\", \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave($event.target)\", \"click\": \"onMouseClick()\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ngx-tooltip]' }]\n }], ctorParameters: function () { return [{ type: TooltipService }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; }, propDecorators: { tooltipCssClass: [{\n type: Input\n }], tooltipTitle: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipSpacing: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipShowCaret: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAlignment: [{\n type: Input\n }], tooltipType: [{\n type: Input\n }], tooltipCloseOnClickOutside: [{\n type: Input\n }], tooltipCloseOnMouseLeave: [{\n type: Input\n }], tooltipHideTimeout: [{\n type: Input\n }], tooltipShowTimeout: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], tooltipShowEvent: [{\n type: Input\n }], tooltipContext: [{\n type: Input\n }], tooltipImmediateExit: [{\n type: Input\n }], show: [{\n type: Output\n }], hide: [{\n type: Output\n }], onFocus: [{\n type: HostListener,\n args: ['focusin']\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave', ['$event.target']]\n }], onMouseClick: [{\n type: HostListener,\n args: ['click']\n }] } });\n\nclass TooltipModule {\n}\nTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipModule, declarations: [TooltipContentComponent, TooltipDirective], imports: [CommonModule], exports: [TooltipContentComponent, TooltipDirective] });\nTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipModule, providers: [InjectionService, TooltipService], imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [TooltipContentComponent, TooltipDirective],\n providers: [InjectionService, TooltipService],\n exports: [TooltipContentComponent, TooltipDirective],\n imports: [CommonModule],\n entryComponents: [TooltipContentComponent]\n }]\n }] });\n\nconst cache = {};\n/**\n * Generates a short id.\n *\n * Description:\n * A 4-character alphanumeric sequence (364 = 1.6 million)\n * This should only be used for JavaScript specific models.\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n *\n * Example: `ebgf`\n */\nfunction id() {\n let newId = ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n // append a 'a' because neo gets mad\n newId = `a${newId}`;\n // ensure not already used\n if (!cache[newId]) {\n cache[newId] = true;\n return newId;\n }\n return id();\n}\n\nvar BarOrientation;\n(function (BarOrientation) {\n BarOrientation[\"Vertical\"] = \"vertical\";\n BarOrientation[\"Horizontal\"] = \"horizontal\";\n})(BarOrientation || (BarOrientation = {}));\n\nclass SvgLinearGradientComponent {\n constructor() {\n this.orientation = BarOrientation.Vertical;\n }\n ngOnChanges(changes) {\n this.x1 = '0%';\n this.x2 = '0%';\n this.y1 = '0%';\n this.y2 = '0%';\n if (this.orientation === BarOrientation.Horizontal) {\n this.x2 = '100%';\n }\n else if (this.orientation === BarOrientation.Vertical) {\n this.y1 = '100%';\n }\n }\n}\nSvgLinearGradientComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SvgLinearGradientComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nSvgLinearGradientComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: { orientation: \"orientation\", name: \"name\", stops: \"stops\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SvgLinearGradientComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-svg-linear-gradient]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { orientation: [{\n type: Input\n }], name: [{\n type: Input\n }], stops: [{\n type: Input\n }] } });\n\nclass CircleComponent {\n constructor() {\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n onClick() {\n this.select.emit(this.data);\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n ngOnChanges(changes) {\n this.classNames = Array.isArray(this.classNames) ? this.classNames.join(' ') : '';\n this.classNames += 'circle';\n }\n}\nCircleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CircleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCircleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: CircleComponent, selector: \"g[ngx-charts-circle]\", inputs: { cx: \"cx\", cy: \"cy\", r: \"r\", fill: \"fill\", stroke: \"stroke\", data: \"data\", classNames: \"classNames\", circleOpacity: \"circleOpacity\", pointerEvents: \"pointerEvents\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"click\": \"onClick()\", \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave()\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CircleComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-circle]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { cx: [{\n type: Input\n }], cy: [{\n type: Input\n }], r: [{\n type: Input\n }], fill: [{\n type: Input\n }], stroke: [{\n type: Input\n }], data: [{\n type: Input\n }], classNames: [{\n type: Input\n }], circleOpacity: [{\n type: Input\n }], pointerEvents: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nvar SeriesType;\n(function (SeriesType) {\n SeriesType[\"Standard\"] = \"standard\";\n SeriesType[\"Stacked\"] = \"stacked\";\n})(SeriesType || (SeriesType = {}));\nclass CircleSeriesComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.type = SeriesType.Standard;\n this.tooltipDisabled = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.barVisible = false;\n this.barOrientation = BarOrientation;\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n this.isSSR = false;\n }\n ngOnInit() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n ngOnChanges() {\n this.update();\n }\n update() {\n this.circle = this.getActiveCircle();\n }\n getActiveCircle() {\n const indexActiveDataPoint = this.data.series.findIndex(d => {\n const label = d.name;\n return label && this.visibleValue && label.toString() === this.visibleValue.toString() && d.value !== undefined;\n });\n if (indexActiveDataPoint === -1) {\n // No valid point is 'active/hovered over' at this moment.\n return undefined;\n }\n return this.mapDataPointToCircle(this.data.series[indexActiveDataPoint], indexActiveDataPoint);\n }\n mapDataPointToCircle(d, i) {\n const seriesName = this.data.name;\n const value = d.value;\n const label = d.name;\n const tooltipLabel = formatLabel(label);\n let cx;\n if (this.scaleType === ScaleType.Time) {\n cx = this.xScale(label);\n }\n else if (this.scaleType === ScaleType.Linear) {\n cx = this.xScale(Number(label));\n }\n else {\n cx = this.xScale(label);\n }\n const cy = this.yScale(this.type === SeriesType.Standard ? value : d.d1);\n const radius = 5;\n const height = this.yScale.range()[0] - cy;\n const opacity = 1;\n let color;\n if (this.colors.scaleType === ScaleType.Linear) {\n if (this.type === SeriesType.Standard) {\n color = this.colors.getColor(value);\n }\n else {\n color = this.colors.getColor(d.d1);\n }\n }\n else {\n color = this.colors.getColor(seriesName);\n }\n const data = Object.assign({}, d, {\n series: seriesName,\n value,\n name: label\n });\n return {\n classNames: [`circle-data-${i}`],\n value,\n label,\n data,\n cx,\n cy,\n radius,\n height,\n tooltipLabel,\n color,\n opacity,\n seriesName,\n gradientStops: this.getGradientStops(color),\n min: d.min,\n max: d.max\n };\n }\n getTooltipText({ tooltipLabel, value, seriesName, min, max }) {\n return `\n ${escapeLabel(seriesName)} • ${escapeLabel(tooltipLabel)}\n ${value.toLocaleString()}${this.getTooltipMinMaxText(min, max)}\n `;\n }\n getTooltipMinMaxText(min, max) {\n if (min !== undefined || max !== undefined) {\n let result = ' (';\n if (min !== undefined) {\n if (max === undefined) {\n result += '≥';\n }\n result += min.toLocaleString();\n if (max !== undefined) {\n result += ' - ';\n }\n }\n else if (max !== undefined) {\n result += '≤';\n }\n if (max !== undefined) {\n result += max.toLocaleString();\n }\n result += ')';\n return result;\n }\n else {\n return '';\n }\n }\n getGradientStops(color) {\n return [\n {\n offset: 0,\n color,\n opacity: 0.2\n },\n {\n offset: 100,\n color,\n opacity: 1\n }\n ];\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n activateCircle() {\n this.barVisible = true;\n this.activate.emit({ name: this.data.name });\n }\n deactivateCircle() {\n this.barVisible = false;\n this.circle.opacity = 0;\n this.deactivate.emit({ name: this.data.name });\n }\n}\nCircleSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CircleSeriesComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nCircleSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: CircleSeriesComponent, selector: \"g[ngx-charts-circle-series]\", inputs: { data: \"data\", type: \"type\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", visibleValue: \"visibleValue\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }, { type: CircleComponent, selector: \"g[ngx-charts-circle]\", inputs: [\"cx\", \"cy\", \"r\", \"fill\", \"stroke\", \"data\", \"classNames\", \"circleOpacity\", \"pointerEvents\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 1 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CircleSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-circle-series]',\n template: `\n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 1 }))\n ])\n ])\n ]\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { data: [{\n type: Input\n }], type: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], visibleValue: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass GridPanelComponent {\n}\nGridPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GridPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGridPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: GridPanelComponent, selector: \"g[ngx-charts-grid-panel]\", inputs: { width: \"width\", height: \"height\", x: \"x\", y: \"y\" }, ngImport: i0, template: `\n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GridPanelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-grid-panel]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { width: [{\n type: Input\n }], height: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }] } });\n\nvar ClassEnum;\n(function (ClassEnum) {\n ClassEnum[\"Odd\"] = \"odd\";\n ClassEnum[\"Even\"] = \"even\";\n})(ClassEnum || (ClassEnum = {}));\nclass GridPanelSeriesComponent {\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.gridPanels = this.getGridPanels();\n }\n getGridPanels() {\n return this.data.map(d => {\n let offset;\n let width;\n let height;\n let x;\n let y;\n let className = ClassEnum.Odd;\n if (this.orient === BarOrientation.Vertical) {\n const position = this.xScale(d.name);\n const positionIndex = Number.parseInt((position / this.xScale.step()).toString(), 10);\n if (positionIndex % 2 === 1) {\n className = ClassEnum.Even;\n }\n offset = this.xScale.bandwidth() * this.xScale.paddingInner();\n width = this.xScale.bandwidth() + offset;\n height = this.dims.height;\n x = this.xScale(d.name) - offset / 2;\n y = 0;\n }\n else if (this.orient === BarOrientation.Horizontal) {\n const position = this.yScale(d.name);\n const positionIndex = Number.parseInt((position / this.yScale.step()).toString(), 10);\n if (positionIndex % 2 === 1) {\n className = ClassEnum.Even;\n }\n offset = this.yScale.bandwidth() * this.yScale.paddingInner();\n width = this.dims.width;\n height = this.yScale.bandwidth() + offset;\n x = 0;\n y = this.yScale(d.name) - offset / 2;\n }\n return {\n name: d.name,\n class: className,\n height,\n width,\n x,\n y\n };\n });\n }\n}\nGridPanelSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GridPanelSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGridPanelSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: GridPanelSeriesComponent, selector: \"g[ngx-charts-grid-panel-series]\", inputs: { data: \"data\", dims: \"dims\", xScale: \"xScale\", yScale: \"yScale\", orient: \"orient\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, components: [{ type: GridPanelComponent, selector: \"g[ngx-charts-grid-panel]\", inputs: [\"width\", \"height\", \"x\", \"y\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GridPanelSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-grid-panel-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], dims: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], orient: [{\n type: Input\n }] } });\n\nclass SvgRadialGradientComponent {\n constructor() {\n this.endOpacity = 1;\n this.cx = 0;\n this.cy = 0;\n }\n get stops() {\n return this.stopsInput || this.stopsDefault;\n }\n set stops(value) {\n this.stopsInput = value;\n }\n ngOnChanges(changes) {\n this.r = '30%';\n if ('color' in changes || 'startOpacity' in changes || 'endOpacity' in changes) {\n this.stopsDefault = [\n {\n offset: 0,\n color: this.color,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.color,\n opacity: this.endOpacity\n }\n ];\n }\n }\n}\nSvgRadialGradientComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SvgRadialGradientComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nSvgRadialGradientComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: SvgRadialGradientComponent, selector: \"g[ngx-charts-svg-radial-gradient]\", inputs: { color: \"color\", name: \"name\", startOpacity: \"startOpacity\", endOpacity: \"endOpacity\", cx: \"cx\", cy: \"cy\", stops: \"stops\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SvgRadialGradientComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-svg-radial-gradient]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { color: [{\n type: Input\n }], name: [{\n type: Input\n }], startOpacity: [{\n type: Input\n }], endOpacity: [{\n type: Input\n }], cx: [{\n type: Input\n }], cy: [{\n type: Input\n }], stops: [{\n type: Input\n }] } });\n\nclass AreaComponent {\n constructor(element) {\n this.opacity = 1;\n this.startOpacity = 0.5;\n this.endOpacity = 1;\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.animationsLoaded = false;\n this.hasGradient = false;\n this.barOrientation = BarOrientation;\n this.element = element.nativeElement;\n }\n ngOnChanges() {\n this.update();\n if (!this.animationsLoaded) {\n this.loadAnimation();\n this.animationsLoaded = true;\n }\n }\n update() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (this.gradient || this.stops) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n }\n else {\n this.hasGradient = false;\n }\n this.updatePathEl();\n }\n loadAnimation() {\n this.areaPath = this.startingPath;\n setTimeout(this.updatePathEl.bind(this), 100);\n }\n updatePathEl() {\n const node = select(this.element).select('.area');\n if (this.animations) {\n node.transition().duration(750).attr('d', this.path);\n }\n else {\n node.attr('d', this.path);\n }\n }\n getGradient() {\n if (this.stops) {\n return this.stops;\n }\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.fill,\n opacity: this.endOpacity\n }\n ];\n }\n}\nAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AreaComponent, selector: \"g[ngx-charts-area]\", inputs: { data: \"data\", path: \"path\", startingPath: \"startingPath\", fill: \"fill\", opacity: \"opacity\", startOpacity: \"startOpacity\", endOpacity: \"endOpacity\", gradient: \"gradient\", stops: \"stops\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-area]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { data: [{\n type: Input\n }], path: [{\n type: Input\n }], startingPath: [{\n type: Input\n }], fill: [{\n type: Input\n }], opacity: [{\n type: Input\n }], startOpacity: [{\n type: Input\n }], endOpacity: [{\n type: Input\n }], gradient: [{\n type: Input\n }], stops: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\n// Robert Penner's easeOutExpo\nfunction easeOutExpo(t, b, c, d) {\n return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b;\n}\n/**\n * Counts from a number to the end incrementally.\n */\nfunction count(countFrom, countTo, countDecimals, countDuration, callback) {\n const startVal = Number(countFrom);\n const endVal = Number(countTo);\n const countDown = startVal > endVal;\n const decimals = Math.max(0, countDecimals);\n const dec = Math.pow(10, decimals);\n const duration = Number(countDuration) * 1000;\n let startTime;\n function runCount(timestamp) {\n let frameVal;\n const progress = timestamp - startTime;\n if (countDown) {\n frameVal = startVal - easeOutExpo(progress, 0, startVal - endVal, duration);\n }\n else {\n frameVal = easeOutExpo(progress, startVal, endVal - startVal, duration);\n }\n if (countDown) {\n frameVal = frameVal < endVal ? endVal : frameVal;\n }\n else {\n frameVal = frameVal > endVal ? endVal : frameVal;\n }\n frameVal = Math.round(frameVal * dec) / dec;\n const tick = progress < duration;\n callback({\n value: frameVal,\n progress,\n timestamp,\n finished: !tick\n });\n if (tick) {\n return requestAnimationFrame(val => runCount(val));\n }\n }\n return requestAnimationFrame(timestamp => {\n startTime = timestamp;\n return runCount(timestamp);\n });\n}\n/**\n * Determine decimals places\n *\n * @export\n */\nfunction decimalChecker(countTo) {\n const endVal = Number(countTo);\n if (endVal % 1 !== 0 && Math.abs(endVal) <= 10) {\n return 2;\n }\n return 0;\n}\n\n/**\n * Count up component\n *\n * Loosely inspired by:\n * - https://github.com/izupet/angular2-counto\n * - https://inorganik.github.io/countUp.js/\n *\n * @export\n */\nclass CountUpDirective {\n constructor(cd, element) {\n this.cd = cd;\n this.countDuration = 1;\n this.countPrefix = '';\n this.countSuffix = '';\n this.countChange = new EventEmitter();\n this.countFinish = new EventEmitter();\n this.value = '';\n this._countDecimals = 0;\n this._countTo = 0;\n this._countFrom = 0;\n this.nativeElement = element.nativeElement;\n }\n set countDecimals(val) {\n this._countDecimals = val;\n }\n get countDecimals() {\n if (this._countDecimals)\n return this._countDecimals;\n return decimalChecker(this.countTo);\n }\n set countTo(val) {\n this._countTo = parseFloat(val);\n this.start();\n }\n get countTo() {\n return this._countTo;\n }\n set countFrom(val) {\n this._countFrom = parseFloat(val);\n this.start();\n }\n get countFrom() {\n return this._countFrom;\n }\n ngOnDestroy() {\n cancelAnimationFrame(this.animationReq);\n }\n start() {\n cancelAnimationFrame(this.animationReq);\n const valueFormatting = this.valueFormatting || (value => `${this.countPrefix}${value.toLocaleString()}${this.countSuffix}`);\n const callback = ({ value, progress, finished }) => {\n this.value = valueFormatting(value);\n this.cd.markForCheck();\n if (!finished)\n this.countChange.emit({ value: this.value, progress });\n if (finished)\n this.countFinish.emit({ value: this.value, progress });\n };\n this.animationReq = count(this.countFrom, this.countTo, this.countDecimals, this.countDuration, callback);\n }\n}\nCountUpDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CountUpDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nCountUpDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: CountUpDirective, selector: \"[ngx-charts-count-up]\", inputs: { countDuration: \"countDuration\", countPrefix: \"countPrefix\", countSuffix: \"countSuffix\", valueFormatting: \"valueFormatting\", countDecimals: \"countDecimals\", countTo: \"countTo\", countFrom: \"countFrom\" }, outputs: { countChange: \"countChange\", countFinish: \"countFinish\" }, ngImport: i0, template: ` {{ value }} `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CountUpDirective, decorators: [{\n type: Component,\n args: [{\n selector: '[ngx-charts-count-up]',\n template: ` {{ value }} `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { countDuration: [{\n type: Input\n }], countPrefix: [{\n type: Input\n }], countSuffix: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], countDecimals: [{\n type: Input\n }], countTo: [{\n type: Input\n }], countFrom: [{\n type: Input\n }], countChange: [{\n type: Output\n }], countFinish: [{\n type: Output\n }] } });\n\n// If we don't check whether 'window' and 'global' variables are defined,\n// code will fail in browser/node with 'variable is undefined' error.\nlet root;\nif (typeof window !== 'undefined') {\n root = window;\n}\nelse if (typeof global !== 'undefined') {\n root = global;\n}\n// tslint:disable-next-line:variable-name\nconst MouseEvent = root.MouseEvent;\nfunction createMouseEvent(name, bubbles = false, cancelable = true) {\n // Calling new of an event does not work correctly on IE. The following is a tested workaround\n // See https://stackoverflow.com/questions/27176983/dispatchevent-not-working-in-ie11\n if (typeof MouseEvent === 'function') {\n // Sane browsers\n return new MouseEvent(name, { bubbles, cancelable });\n }\n else {\n // IE\n const event = document.createEvent('MouseEvent');\n event.initEvent(name, bubbles, cancelable);\n return event;\n }\n}\n\nclass TooltipArea {\n constructor(platformId) {\n this.platformId = platformId;\n this.anchorOpacity = 0;\n this.anchorPos = -1;\n this.anchorValues = [];\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n this.showPercentage = false;\n this.tooltipDisabled = false;\n this.hover = new EventEmitter();\n }\n getValues(xVal) {\n const results = [];\n for (const group of this.results) {\n const item = group.series.find(d => d.name.toString() === xVal.toString());\n let groupName = group.name;\n if (groupName instanceof Date) {\n groupName = groupName.toLocaleDateString();\n }\n if (item) {\n const label = item.name;\n let val = item.value;\n if (this.showPercentage) {\n val = (item.d1 - item.d0).toFixed(2) + '%';\n }\n let color;\n if (this.colors.scaleType === ScaleType.Linear) {\n let v = val;\n if (item.d1) {\n v = item.d1;\n }\n color = this.colors.getColor(v);\n }\n else {\n color = this.colors.getColor(group.name);\n }\n const data = Object.assign({}, item, {\n value: val,\n name: label,\n series: groupName,\n min: item.min,\n max: item.max,\n color\n });\n results.push(data);\n }\n }\n return results;\n }\n mouseMove(event) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n const xPos = event.pageX - event.target.getBoundingClientRect().left;\n const closestIndex = this.findClosestPointIndex(xPos);\n const closestPoint = this.xSet[closestIndex];\n this.anchorPos = this.xScale(closestPoint);\n this.anchorPos = Math.max(0, this.anchorPos);\n this.anchorPos = Math.min(this.dims.width, this.anchorPos);\n this.anchorValues = this.getValues(closestPoint);\n if (this.anchorPos !== this.lastAnchorPos) {\n const ev = createMouseEvent('mouseleave');\n this.tooltipAnchor.nativeElement.dispatchEvent(ev);\n this.anchorOpacity = 0.7;\n this.hover.emit({\n value: closestPoint\n });\n this.showTooltip();\n this.lastAnchorPos = this.anchorPos;\n }\n }\n findClosestPointIndex(xPos) {\n let minIndex = 0;\n let maxIndex = this.xSet.length - 1;\n let minDiff = Number.MAX_VALUE;\n let closestIndex = 0;\n while (minIndex <= maxIndex) {\n const currentIndex = ((minIndex + maxIndex) / 2) | 0;\n const currentElement = this.xScale(this.xSet[currentIndex]);\n const curDiff = Math.abs(currentElement - xPos);\n if (curDiff < minDiff) {\n minDiff = curDiff;\n closestIndex = currentIndex;\n }\n if (currentElement < xPos) {\n minIndex = currentIndex + 1;\n }\n else if (currentElement > xPos) {\n maxIndex = currentIndex - 1;\n }\n else {\n minDiff = 0;\n closestIndex = currentIndex;\n break;\n }\n }\n return closestIndex;\n }\n showTooltip() {\n const event = createMouseEvent('mouseenter');\n this.tooltipAnchor.nativeElement.dispatchEvent(event);\n }\n hideTooltip() {\n const event = createMouseEvent('mouseleave');\n this.tooltipAnchor.nativeElement.dispatchEvent(event);\n this.anchorOpacity = 0;\n this.lastAnchorPos = -1;\n }\n getToolTipText(tooltipItem) {\n let result = '';\n if (tooltipItem.series !== undefined) {\n result += tooltipItem.series;\n }\n else {\n result += '???';\n }\n result += ': ';\n if (tooltipItem.value !== undefined) {\n result += tooltipItem.value.toLocaleString();\n }\n if (tooltipItem.min !== undefined || tooltipItem.max !== undefined) {\n result += ' (';\n if (tooltipItem.min !== undefined) {\n if (tooltipItem.max === undefined) {\n result += '≥';\n }\n result += tooltipItem.min.toLocaleString();\n if (tooltipItem.max !== undefined) {\n result += ' - ';\n }\n }\n else if (tooltipItem.max !== undefined) {\n result += '≤';\n }\n if (tooltipItem.max !== undefined) {\n result += tooltipItem.max.toLocaleString();\n }\n result += ')';\n }\n return result;\n }\n}\nTooltipArea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipArea, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nTooltipArea.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TooltipArea, selector: \"g[ngx-charts-tooltip-area]\", inputs: { dims: \"dims\", xSet: \"xSet\", xScale: \"xScale\", yScale: \"yScale\", results: \"results\", colors: \"colors\", showPercentage: \"showPercentage\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { hover: \"hover\" }, viewQueries: [{ propertyName: \"tooltipAnchor\", first: true, predicate: [\"tooltipAnchor\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n \n {{ getToolTipText(tooltipItem) }}\n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], animations: [\n trigger('animationState', [\n transition('inactive => active', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 0.7 }))\n ]),\n transition('active => inactive', [\n style({\n opacity: 0.7\n }),\n animate(250, style({ opacity: 0 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TooltipArea, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tooltip-area]',\n template: `\n \n \n \n \n \n \n {{ getToolTipText(tooltipItem) }}\n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition('inactive => active', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 0.7 }))\n ]),\n transition('active => inactive', [\n style({\n opacity: 0.7\n }),\n animate(250, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { dims: [{\n type: Input\n }], xSet: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], results: [{\n type: Input\n }], colors: [{\n type: Input\n }], showPercentage: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], hover: [{\n type: Output\n }], tooltipAnchor: [{\n type: ViewChild,\n args: ['tooltipAnchor', { static: false }]\n }] } });\n\nclass Timeline {\n constructor(element, cd) {\n this.cd = cd;\n this.height = 50;\n this.select = new EventEmitter();\n this.onDomainChange = new EventEmitter();\n this.initialized = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n if (!this.initialized) {\n this.addBrush();\n this.initialized = true;\n }\n }\n update() {\n this.dims = this.getDims();\n this.height = this.dims.height;\n const offsetY = this.view[1] - this.height;\n this.xDomain = this.getXDomain();\n this.xScale = this.getXScale();\n if (this.brush) {\n this.updateBrush();\n }\n this.transform = `translate(0 , ${offsetY})`;\n this.filterId = 'filter' + id().toString();\n this.filter = `url(#${this.filterId})`;\n this.cd.markForCheck();\n }\n getXDomain() {\n let values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.name)) {\n values.push(d.name);\n }\n }\n }\n let domain = [];\n if (this.scaleType === ScaleType.Time) {\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n }\n else if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n }\n else {\n domain = values;\n }\n return domain;\n }\n getXScale() {\n let scale;\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime().range([0, this.dims.width]).domain(this.xDomain);\n }\n else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear().range([0, this.dims.width]).domain(this.xDomain);\n }\n else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().range([0, this.dims.width]).padding(0.1).domain(this.xDomain);\n }\n return scale;\n }\n addBrush() {\n if (this.brush)\n return;\n const height = this.height;\n const width = this.view[0];\n this.brush = brushX()\n .extent([\n [0, 0],\n [width, height]\n ])\n .on('brush end', ({ selection }) => {\n const newSelection = selection || this.xScale.range();\n const newDomain = newSelection.map(this.xScale.invert);\n this.onDomainChange.emit(newDomain);\n this.cd.markForCheck();\n });\n select(this.element).select('.brush').call(this.brush);\n }\n updateBrush() {\n if (!this.brush)\n return;\n const height = this.height;\n const width = this.view[0];\n this.brush.extent([\n [0, 0],\n [width, height]\n ]);\n select(this.element).select('.brush').call(this.brush);\n // clear hardcoded properties so they can be defined by CSS\n select(this.element)\n .select('.selection')\n .attr('fill', undefined)\n .attr('stroke', undefined)\n .attr('fill-opacity', undefined);\n this.cd.markForCheck();\n }\n getDims() {\n const width = this.view[0];\n const dims = {\n width,\n height: this.height\n };\n return dims;\n }\n}\nTimeline.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: Timeline, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTimeline.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: Timeline, selector: \"g[ngx-charts-timeline]\", inputs: { view: \"view\", results: \"results\", scheme: \"scheme\", customColors: \"customColors\", legend: \"legend\", autoScale: \"autoScale\", scaleType: \"scaleType\", height: \"height\" }, outputs: { select: \"select\", onDomainChange: \"onDomainChange\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".timeline .brush-background{fill:#0000000d}.timeline .brush .selection{fill:#0000001a;stroke-width:1px;stroke:#888}.timeline .brush .handle{fill-opacity:0}.timeline .embedded-chart{opacity:.6}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: Timeline, decorators: [{\n type: Component,\n args: [{ selector: 'g[ngx-charts-timeline]', template: `\n \n \n \n \n \n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".timeline .brush-background{fill:#0000000d}.timeline .brush .selection{fill:#0000001a;stroke-width:1px;stroke:#888}.timeline .brush .handle{fill-opacity:0}.timeline .embedded-chart{opacity:.6}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { view: [{\n type: Input\n }], results: [{\n type: Input\n }], scheme: [{\n type: Input\n }], customColors: [{\n type: Input\n }], legend: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], height: [{\n type: Input\n }], select: [{\n type: Output\n }], onDomainChange: [{\n type: Output\n }] } });\n\nclass AdvancedLegendComponent {\n constructor() {\n this.label = 'Total';\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.legendItems = [];\n this.labelFormatting = label => label;\n this.percentageFormatting = percentage => percentage;\n this.defaultValueFormatting = value => value.toLocaleString();\n }\n ngOnChanges(changes) {\n this.update();\n }\n getTotal() {\n return this.data.map(d => Number(d.value)).reduce((sum, d) => sum + d, 0);\n }\n update() {\n this.total = this.getTotal();\n this.roundedTotal = this.total;\n this.legendItems = this.getLegendItems();\n }\n getLegendItems() {\n return this.data.map(d => {\n const label = formatLabel(d.name);\n const value = d.value;\n const color = this.colors.getColor(label);\n const percentage = this.total > 0 ? (value / this.total) * 100 : 0;\n const formattedLabel = typeof this.labelFormatting === 'function' ? this.labelFormatting(label) : label;\n return {\n _value: value,\n data: d,\n value,\n color,\n label: formattedLabel,\n displayLabel: trimLabel(formattedLabel, 20),\n origialLabel: d.name,\n percentage: this.percentageFormatting ? this.percentageFormatting(percentage) : percentage.toLocaleString()\n };\n });\n }\n trackBy(index, item) {\n return item.label;\n }\n}\nAdvancedLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AdvancedLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nAdvancedLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AdvancedLegendComponent, selector: \"ngx-charts-advanced-legend\", inputs: { width: \"width\", data: \"data\", colors: \"colors\", label: \"label\", animations: \"animations\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", percentageFormatting: \"percentageFormatting\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n
\n
\n
\n {{ valueFormatting ? valueFormatting(roundedTotal) : defaultValueFormatting(roundedTotal) }}\n
\n
\n {{ label }}\n
\n
\n
\n \n
\n
\n
\n {{ valueFormatting ? valueFormatting(legendItem.value) : defaultValueFormatting(legendItem.value) }}\n
\n
{{ legendItem.displayLabel }}
\n
\n
{{ legendItem.percentage.toLocaleString() }}%
\n \n \n \n \n `, isInline: true, styles: [\".advanced-pie-legend{float:left;position:relative;top:50%;transform:translateY(-50%)}.advanced-pie-legend .total-value{font-size:36px}.advanced-pie-legend .total-label{font-size:24px;margin-bottom:19px}.advanced-pie-legend .legend-items-container{width:100%}.advanced-pie-legend .legend-items-container .legend-items{white-space:nowrap;overflow:auto}.advanced-pie-legend .legend-items-container .legend-items .legend-item{margin-right:20px;display:inline-block;cursor:pointer}.advanced-pie-legend .legend-items-container .legend-items .legend-item:focus{outline:none}.advanced-pie-legend .legend-items-container .legend-items .legend-item:hover{color:#000;transition:.2s}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-value{font-size:24px;margin-top:-6px;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-label{font-size:14px;opacity:.7;margin-left:11px;margin-top:-6px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-percent{font-size:24px;opacity:.7;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-color{border-left:4px solid;width:4px;height:42px;float:left;margin-right:7px}\\n\"], components: [{ type: CountUpDirective, selector: \"[ngx-charts-count-up]\", inputs: [\"countDuration\", \"countPrefix\", \"countSuffix\", \"valueFormatting\", \"countDecimals\", \"countTo\", \"countFrom\"], outputs: [\"countChange\", \"countFinish\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AdvancedLegendComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-advanced-legend', template: `\n
\n
\n
\n {{ valueFormatting ? valueFormatting(roundedTotal) : defaultValueFormatting(roundedTotal) }}\n
\n
\n {{ label }}\n
\n
\n
\n \n
\n
\n
\n {{ valueFormatting ? valueFormatting(legendItem.value) : defaultValueFormatting(legendItem.value) }}\n
\n
{{ legendItem.displayLabel }}
\n
\n
{{ legendItem.percentage.toLocaleString() }}%
\n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".advanced-pie-legend{float:left;position:relative;top:50%;transform:translateY(-50%)}.advanced-pie-legend .total-value{font-size:36px}.advanced-pie-legend .total-label{font-size:24px;margin-bottom:19px}.advanced-pie-legend .legend-items-container{width:100%}.advanced-pie-legend .legend-items-container .legend-items{white-space:nowrap;overflow:auto}.advanced-pie-legend .legend-items-container .legend-items .legend-item{margin-right:20px;display:inline-block;cursor:pointer}.advanced-pie-legend .legend-items-container .legend-items .legend-item:focus{outline:none}.advanced-pie-legend .legend-items-container .legend-items .legend-item:hover{color:#000;transition:.2s}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-value{font-size:24px;margin-top:-6px;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-label{font-size:14px;opacity:.7;margin-left:11px;margin-top:-6px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-percent{font-size:24px;opacity:.7;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-color{border-left:4px solid;width:4px;height:42px;float:left;margin-right:7px}\\n\"] }]\n }], propDecorators: { width: [{\n type: Input\n }], data: [{\n type: Input\n }], colors: [{\n type: Input\n }], label: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], percentageFormatting: [{\n type: Input\n }] } });\n\nconst COMPONENTS = [\n AreaComponent,\n BaseChartComponent,\n CountUpDirective,\n TooltipArea,\n ChartComponent,\n LegendComponent,\n LegendEntryComponent,\n ScaleLegendComponent,\n CircleComponent,\n CircleSeriesComponent,\n GridPanelComponent,\n GridPanelSeriesComponent,\n SvgLinearGradientComponent,\n SvgRadialGradientComponent,\n Timeline,\n AdvancedLegendComponent\n];\nclass ChartCommonModule {\n}\nChartCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nChartCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartCommonModule, declarations: [AreaComponent,\n BaseChartComponent,\n CountUpDirective,\n TooltipArea,\n ChartComponent,\n LegendComponent,\n LegendEntryComponent,\n ScaleLegendComponent,\n CircleComponent,\n CircleSeriesComponent,\n GridPanelComponent,\n GridPanelSeriesComponent,\n SvgLinearGradientComponent,\n SvgRadialGradientComponent,\n Timeline,\n AdvancedLegendComponent, VisibilityObserver], imports: [CommonModule, AxesModule, TooltipModule], exports: [CommonModule, AxesModule, TooltipModule, AreaComponent,\n BaseChartComponent,\n CountUpDirective,\n TooltipArea,\n ChartComponent,\n LegendComponent,\n LegendEntryComponent,\n ScaleLegendComponent,\n CircleComponent,\n CircleSeriesComponent,\n GridPanelComponent,\n GridPanelSeriesComponent,\n SvgLinearGradientComponent,\n SvgRadialGradientComponent,\n Timeline,\n AdvancedLegendComponent, VisibilityObserver] });\nChartCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartCommonModule, imports: [[CommonModule, AxesModule, TooltipModule], CommonModule, AxesModule, TooltipModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: ChartCommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AxesModule, TooltipModule],\n declarations: [...COMPONENTS, VisibilityObserver],\n exports: [CommonModule, AxesModule, TooltipModule, ...COMPONENTS, VisibilityObserver]\n }]\n }] });\n\nfunction calculateViewDimensions({ width, height, margins, showXAxis = false, showYAxis = false, xAxisHeight = 0, yAxisWidth = 0, showXLabel = false, showYLabel = false, showLegend = false, legendType = ScaleType.Ordinal, legendPosition = LegendPosition.Right, columns = 12 }) {\n let xOffset = margins[3];\n let chartWidth = width;\n let chartHeight = height - margins[0] - margins[2];\n if (showLegend && legendPosition === LegendPosition.Right) {\n if (legendType === ScaleType.Ordinal) {\n columns -= 2;\n }\n else {\n columns -= 1;\n }\n }\n chartWidth = (chartWidth * columns) / 12;\n chartWidth = chartWidth - margins[1] - margins[3];\n if (showXAxis) {\n chartHeight -= 5;\n chartHeight -= xAxisHeight;\n if (showXLabel) {\n // text height + spacing between axis label and tick labels\n const offset = 25 + 5;\n chartHeight -= offset;\n }\n }\n if (showYAxis) {\n chartWidth -= 5;\n chartWidth -= yAxisWidth;\n xOffset += yAxisWidth;\n xOffset += 10;\n if (showYLabel) {\n // text height + spacing between axis label and tick labels\n const offset = 25 + 5;\n chartWidth -= offset;\n xOffset += offset;\n }\n }\n chartWidth = Math.max(0, chartWidth);\n chartHeight = Math.max(0, chartHeight);\n return {\n width: Math.floor(chartWidth),\n height: Math.floor(chartHeight),\n xOffset: Math.floor(xOffset)\n };\n}\n\nconst colorSets = [\n {\n name: 'vivid',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: [\n '#647c8a',\n '#3f51b5',\n '#2196f3',\n '#00b862',\n '#afdf0a',\n '#a7b61a',\n '#f3e562',\n '#ff9800',\n '#ff5722',\n '#ff4514'\n ]\n },\n {\n name: 'natural',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: [\n '#bf9d76',\n '#e99450',\n '#d89f59',\n '#f2dfa7',\n '#a5d7c6',\n '#7794b1',\n '#afafaf',\n '#707160',\n '#ba9383',\n '#d9d5c3'\n ]\n },\n {\n name: 'cool',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: [\n '#a8385d',\n '#7aa3e5',\n '#a27ea8',\n '#aae3f5',\n '#adcded',\n '#a95963',\n '#8796c0',\n '#7ed3ed',\n '#50abcc',\n '#ad6886'\n ]\n },\n {\n name: 'fire',\n selectable: true,\n group: ScaleType.Ordinal,\n domain: ['#ff3d00', '#bf360c', '#ff8f00', '#ff6f00', '#ff5722', '#e65100', '#ffca28', '#ffab00']\n },\n {\n name: 'solar',\n selectable: true,\n group: ScaleType.Linear,\n domain: [\n '#fff8e1',\n '#ffecb3',\n '#ffe082',\n '#ffd54f',\n '#ffca28',\n '#ffc107',\n '#ffb300',\n '#ffa000',\n '#ff8f00',\n '#ff6f00'\n ]\n },\n {\n name: 'air',\n selectable: true,\n group: ScaleType.Linear,\n domain: [\n '#e1f5fe',\n '#b3e5fc',\n '#81d4fa',\n '#4fc3f7',\n '#29b6f6',\n '#03a9f4',\n '#039be5',\n '#0288d1',\n '#0277bd',\n '#01579b'\n ]\n },\n {\n name: 'aqua',\n selectable: true,\n group: ScaleType.Linear,\n domain: [\n '#e0f7fa',\n '#b2ebf2',\n '#80deea',\n '#4dd0e1',\n '#26c6da',\n '#00bcd4',\n '#00acc1',\n '#0097a7',\n '#00838f',\n '#006064'\n ]\n },\n {\n name: 'flame',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#A10A28',\n '#D3342D',\n '#EF6D49',\n '#FAAD67',\n '#FDDE90',\n '#DBED91',\n '#A9D770',\n '#6CBA67',\n '#2C9653',\n '#146738'\n ]\n },\n {\n name: 'ocean',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#1D68FB',\n '#33C0FC',\n '#4AFFFE',\n '#AFFFFF',\n '#FFFC63',\n '#FDBD2D',\n '#FC8A25',\n '#FA4F1E',\n '#FA141B',\n '#BA38D1'\n ]\n },\n {\n name: 'forest',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#55C22D',\n '#C1F33D',\n '#3CC099',\n '#AFFFFF',\n '#8CFC9D',\n '#76CFFA',\n '#BA60FB',\n '#EE6490',\n '#C42A1C',\n '#FC9F32'\n ]\n },\n {\n name: 'horizon',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#2597FB',\n '#65EBFD',\n '#99FDD0',\n '#FCEE4B',\n '#FEFCFA',\n '#FDD6E3',\n '#FCB1A8',\n '#EF6F7B',\n '#CB96E8',\n '#EFDEE0'\n ]\n },\n {\n name: 'neons',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#FF3333',\n '#FF33FF',\n '#CC33FF',\n '#0000FF',\n '#33CCFF',\n '#33FFFF',\n '#33FF66',\n '#CCFF33',\n '#FFCC00',\n '#FF6600'\n ]\n },\n {\n name: 'picnic',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#FAC51D',\n '#66BD6D',\n '#FAA026',\n '#29BB9C',\n '#E96B56',\n '#55ACD2',\n '#B7332F',\n '#2C83C9',\n '#9166B8',\n '#92E7E8'\n ]\n },\n {\n name: 'night',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#2B1B5A',\n '#501356',\n '#183356',\n '#28203F',\n '#391B3C',\n '#1E2B3C',\n '#120634',\n '#2D0432',\n '#051932',\n '#453080',\n '#75267D',\n '#2C507D',\n '#4B3880',\n '#752F7D',\n '#35547D'\n ]\n },\n {\n name: 'nightLights',\n selectable: false,\n group: ScaleType.Ordinal,\n domain: [\n '#4e31a5',\n '#9c25a7',\n '#3065ab',\n '#57468b',\n '#904497',\n '#46648b',\n '#32118d',\n '#a00fb3',\n '#1052a2',\n '#6e51bd',\n '#b63cc3',\n '#6c97cb',\n '#8671c1',\n '#b455be',\n '#7496c3'\n ]\n }\n];\n\nclass ColorHelper {\n constructor(scheme, type, domain, customColors) {\n if (typeof scheme === 'string') {\n scheme = colorSets.find(cs => {\n return cs.name === scheme;\n });\n }\n this.colorDomain = scheme.domain;\n this.scaleType = type;\n this.domain = domain;\n this.customColors = customColors;\n this.scale = this.generateColorScheme(scheme, type, this.domain);\n }\n generateColorScheme(scheme, type, domain) {\n if (typeof scheme === 'string') {\n scheme = colorSets.find(cs => {\n return cs.name === scheme;\n });\n }\n let colorScale;\n switch (type) {\n case ScaleType.Quantile:\n colorScale = scaleQuantile()\n .range(scheme.domain)\n .domain(domain);\n break;\n case ScaleType.Ordinal:\n colorScale = scaleOrdinal()\n .range(scheme.domain)\n .domain(domain);\n break;\n case ScaleType.Linear:\n {\n const colorDomain = [...scheme.domain];\n if (colorDomain.length === 1) {\n colorDomain.push(colorDomain[0]);\n this.colorDomain = colorDomain;\n }\n const points = range(0, 1, 1.0 / colorDomain.length);\n colorScale = scaleLinear()\n .range(colorDomain)\n .domain(points);\n }\n break;\n default:\n break;\n }\n return colorScale;\n }\n getColor(value) {\n if (value === undefined || value === null) {\n throw new Error('Value can not be null');\n }\n if (this.scaleType === ScaleType.Linear) {\n const valueScale = scaleLinear()\n .domain(this.domain)\n .range([0, 1]);\n return this.scale(valueScale(value));\n }\n else {\n if (typeof this.customColors === 'function') {\n return this.customColors(value);\n }\n const formattedValue = value.toString();\n let found; // todo type customColors\n if (this.customColors && this.customColors.length > 0) {\n found = this.customColors.find(mapping => {\n return mapping.name.toLowerCase() === formattedValue.toLowerCase();\n });\n }\n if (found) {\n return found.value;\n }\n else {\n return this.scale(value);\n }\n }\n }\n getLinearGradientStops(value, start) {\n if (start === undefined) {\n start = this.domain[0];\n }\n const valueScale = scaleLinear()\n .domain(this.domain)\n .range([0, 1]);\n const colorValueScale = scaleBand().domain(this.colorDomain).range([0, 1]);\n const endColor = this.getColor(value);\n // generate the stops\n const startVal = valueScale(start);\n const startColor = this.getColor(start);\n const endVal = valueScale(value);\n let i = 1;\n let currentVal = startVal;\n const stops = [];\n stops.push({\n color: startColor,\n offset: startVal,\n originalOffset: startVal,\n opacity: 1\n });\n while (currentVal < endVal && i < this.colorDomain.length) {\n const color = this.colorDomain[i];\n const offset = colorValueScale(color);\n if (offset <= startVal) {\n i++;\n continue;\n }\n if (offset.toFixed(4) >= (endVal - colorValueScale.bandwidth()).toFixed(4)) {\n break;\n }\n stops.push({\n color,\n offset,\n opacity: 1\n });\n currentVal = offset;\n i++;\n }\n if (stops[stops.length - 1].offset < 100) {\n stops.push({\n color: endColor,\n offset: endVal,\n opacity: 1\n });\n }\n if (endVal === startVal) {\n stops[0].offset = 0;\n stops[1].offset = 100;\n }\n else {\n // normalize the offsets into percentages\n if (stops[stops.length - 1].offset !== 100) {\n for (const s of stops) {\n s.offset = ((s.offset - startVal) / (endVal - startVal)) * 100;\n }\n }\n }\n return stops;\n }\n}\n\n/**\n * Based on the data, return an array with unique values.\n *\n * @export\n * @returns array\n */\nfunction getUniqueXDomainValues(results) {\n const valueSet = new Set();\n for (const result of results) {\n for (const d of result.series) {\n valueSet.add(d.name);\n }\n }\n return Array.from(valueSet);\n}\n/**\n * Get the scaleType of enumerable of values.\n * @returns 'time', 'linear' or 'ordinal'\n */\nfunction getScaleType(values, checkDateType = true) {\n if (checkDateType) {\n const allDates = values.every(value => value instanceof Date);\n if (allDates) {\n return ScaleType.Time;\n }\n }\n const allNumbers = values.every(value => typeof value === 'number');\n if (allNumbers) {\n return ScaleType.Linear;\n }\n return ScaleType.Ordinal;\n}\nfunction getXDomainArray(values, xScaleMin, xScaleMax) {\n const scaleType = getScaleType(values);\n let xSet = [];\n let domain = [];\n if (scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (scaleType === ScaleType.Time || scaleType === ScaleType.Linear) {\n const mappedValues = values.map(v => Number(v));\n min = xScaleMin ? xScaleMin : Math.min(...mappedValues);\n max = xScaleMax ? xScaleMax : Math.max(...mappedValues);\n }\n if (scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n xSet = values;\n }\n return { domain, xSet, scaleType };\n}\n\nfunction sortLinear(data, property, direction = 'asc') {\n return data.sort((a, b) => {\n if (direction === 'asc') {\n return a[property] - b[property];\n }\n else {\n return b[property] - a[property];\n }\n });\n}\nfunction sortByDomain(data, property, direction = 'asc', domain) {\n return data.sort((a, b) => {\n const aVal = a[property];\n const bVal = b[property];\n const aIdx = domain.indexOf(aVal);\n const bIdx = domain.indexOf(bVal);\n if (direction === 'asc') {\n return aIdx - bIdx;\n }\n else {\n return bIdx - aIdx;\n }\n });\n}\nfunction sortByTime(data, property, direction = 'asc') {\n return data.sort((a, b) => {\n const aDate = a[property].getTime();\n const bDate = b[property].getTime();\n if (direction === 'asc') {\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n }\n else {\n if (aDate > bDate)\n return -1;\n if (bDate > aDate)\n return 1;\n return 0;\n }\n });\n}\n\nclass AreaSeriesComponent {\n constructor() {\n this.baseValue = 'auto';\n this.stacked = false;\n this.normalized = false;\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradient();\n let currentArea;\n let startingArea;\n const xProperty = d => {\n const label = d.name;\n return this.xScale(label);\n };\n if (this.stacked || this.normalized) {\n currentArea = area()\n .x(xProperty)\n .y0((d, i) => this.yScale(d.d0))\n .y1((d, i) => this.yScale(d.d1));\n startingArea = area()\n .x(xProperty)\n .y0(d => this.yScale.range()[0])\n .y1(d => this.yScale.range()[0]);\n }\n else {\n currentArea = area()\n .x(xProperty)\n .y0(() => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n .y1(d => this.yScale(d.value));\n startingArea = area()\n .x(xProperty)\n .y0(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n .y1(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)));\n }\n currentArea.curve(this.curve);\n startingArea.curve(this.curve);\n this.opacity = 0.8;\n let data = this.data.series;\n if (this.scaleType === ScaleType.Linear) {\n data = sortLinear(data, 'name');\n }\n else if (this.scaleType === ScaleType.Time) {\n data = sortByTime(data, 'name');\n }\n else {\n data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n this.path = currentArea(data);\n this.startingPath = startingArea(data);\n }\n updateGradient() {\n if (this.colors.scaleType === ScaleType.Linear) {\n this.hasGradient = true;\n if (this.stacked || this.normalized) {\n const d0values = this.data.series.map(d => d.d0);\n const d1values = this.data.series.map(d => d.d1);\n const max = Math.max(...d1values);\n const min = Math.min(...d0values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n }\n else {\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max);\n }\n }\n else {\n this.hasGradient = false;\n this.gradientStops = undefined;\n }\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n}\nAreaSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nAreaSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AreaSeriesComponent, selector: \"g[ngx-charts-area-series]\", inputs: { data: \"data\", xScale: \"xScale\", yScale: \"yScale\", baseValue: \"baseValue\", colors: \"colors\", scaleType: \"scaleType\", stacked: \"stacked\", normalized: \"normalized\", gradient: \"gradient\", curve: \"curve\", activeEntries: \"activeEntries\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, components: [{ type: AreaComponent, selector: \"g[ngx-charts-area]\", inputs: [\"data\", \"path\", \"startingPath\", \"fill\", \"opacity\", \"startOpacity\", \"endOpacity\", \"gradient\", \"stops\", \"animations\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-area-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], baseValue: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], stacked: [{\n type: Input\n }], normalized: [{\n type: Input\n }], gradient: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\nclass AreaChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.xAxis = false;\n this.yAxis = false;\n this.baseValue = 'auto';\n this.autoScale = false;\n this.timeline = false;\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const values = [...domain];\n if (!this.autoScale) {\n values.push(0);\n }\n if (this.baseValue !== 'auto') {\n values.push(this.baseValue);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime();\n }\n else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear();\n }\n else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getScaleType(values) {\n let date = true;\n let num = true;\n for (const value of values) {\n if (isDate(value)) {\n date = false;\n }\n if (isNumber(value)) {\n num = false;\n }\n }\n if (date) {\n return ScaleType.Time;\n }\n if (num) {\n return ScaleType.Linear;\n }\n return ScaleType.Ordinal;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nAreaChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nAreaChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AreaChartComponent, selector: \"ngx-charts-area-chart\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", baseValue: \"baseValue\", autoScale: \"autoScale\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseleave\": \"hideCircles()\" } }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }, { propertyName: \"seriesTooltipTemplate\", first: true, predicate: [\"seriesTooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AreaSeriesComponent, selector: \"g[ngx-charts-area-series]\", inputs: [\"data\", \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"scaleType\", \"stacked\", \"normalized\", \"gradient\", \"curve\", \"activeEntries\", \"animations\"], outputs: [\"select\"] }, { type: TooltipArea, selector: \"g[ngx-charts-tooltip-area]\", inputs: [\"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"showPercentage\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"hover\"] }, { type: CircleSeriesComponent, selector: \"g[ngx-charts-circle-series]\", inputs: [\"data\", \"type\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"visibleValue\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: Timeline, selector: \"g[ngx-charts-timeline]\", inputs: [\"view\", \"results\", \"scheme\", \"customColors\", \"legend\", \"autoScale\", \"scaleType\", \"height\"], outputs: [\"select\", \"onDomainChange\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-area-chart', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], baseValue: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass AreaChartNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.showXAxisLabel = false;\n this.showYAxisLabel = false;\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.yDomain = [0, 100];\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.seriesType = SeriesType;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let d0 = 0;\n let total = 0;\n for (const group of this.results) {\n const d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n total += d.value;\n }\n }\n for (const group of this.results) {\n let d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n d.d0 = d0;\n d.d1 = d0 + d.value;\n d0 += d.value;\n }\n else {\n d = {\n name: val,\n value: 0,\n d0,\n d1: d0\n };\n group.series.push(d);\n }\n if (total > 0) {\n d.d0 = (d.d0 * 100) / total;\n d.d1 = (d.d1 * 100) / total;\n }\n else {\n d.d0 = 0;\n d.d1 = 0;\n }\n }\n }\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === ScaleType.Time) {\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime();\n }\n else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear();\n }\n else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nAreaChartNormalizedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartNormalizedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nAreaChartNormalizedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AreaChartNormalizedComponent, selector: \"ngx-charts-area-chart-normalized\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseleave\": \"hideCircles()\" } }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }, { propertyName: \"seriesTooltipTemplate\", first: true, predicate: [\"seriesTooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AreaSeriesComponent, selector: \"g[ngx-charts-area-series]\", inputs: [\"data\", \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"scaleType\", \"stacked\", \"normalized\", \"gradient\", \"curve\", \"activeEntries\", \"animations\"], outputs: [\"select\"] }, { type: TooltipArea, selector: \"g[ngx-charts-tooltip-area]\", inputs: [\"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"showPercentage\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"hover\"] }, { type: CircleSeriesComponent, selector: \"g[ngx-charts-circle-series]\", inputs: [\"data\", \"type\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"visibleValue\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: Timeline, selector: \"g[ngx-charts-timeline]\", inputs: [\"view\", \"results\", \"scheme\", \"customColors\", \"legend\", \"autoScale\", \"scaleType\", \"height\"], outputs: [\"select\", \"onDomainChange\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartNormalizedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-area-chart-normalized', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass AreaChartStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.xAxis = false;\n this.yAxis = false;\n this.timeline = false;\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n this.seriesType = SeriesType;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let d0 = 0;\n for (const group of this.results) {\n let d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n d.d0 = d0;\n d.d1 = d0 + d.value;\n d0 += d.value;\n }\n else {\n d = {\n name: val,\n value: 0,\n d0,\n d1: d0\n };\n group.series.push(d);\n }\n }\n }\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let sum = 0;\n for (const group of this.results) {\n const d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === ScaleType.Time) {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n sum += d.value;\n }\n }\n domain.push(sum);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(0, ...domain);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...domain);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime();\n }\n else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear();\n }\n else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return `${item.name}`;\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nAreaChartStackedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartStackedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nAreaChartStackedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AreaChartStackedComponent, selector: \"ngx-charts-area-chart-stacked\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseleave\": \"hideCircles()\" } }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }, { propertyName: \"seriesTooltipTemplate\", first: true, predicate: [\"seriesTooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AreaSeriesComponent, selector: \"g[ngx-charts-area-series]\", inputs: [\"data\", \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"scaleType\", \"stacked\", \"normalized\", \"gradient\", \"curve\", \"activeEntries\", \"animations\"], outputs: [\"select\"] }, { type: TooltipArea, selector: \"g[ngx-charts-tooltip-area]\", inputs: [\"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"showPercentage\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"hover\"] }, { type: CircleSeriesComponent, selector: \"g[ngx-charts-circle-series]\", inputs: [\"data\", \"type\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"visibleValue\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: Timeline, selector: \"g[ngx-charts-timeline]\", inputs: [\"view\", \"results\", \"scheme\", \"customColors\", \"legend\", \"autoScale\", \"scaleType\", \"height\"], outputs: [\"select\", \"onDomainChange\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartStackedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-area-chart-stacked', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass AreaChartModule {\n}\nAreaChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAreaChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartModule, declarations: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent], imports: [ChartCommonModule], exports: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent] });\nAreaChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AreaChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent],\n exports: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent]\n }]\n }] });\n\nclass BarComponent {\n constructor(element) {\n this.roundEdges = true;\n this.gradient = false;\n this.offset = 0;\n this.isActive = false;\n this.animations = true;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.hasGradient = false;\n this.hideBar = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n if (changes.roundEdges) {\n this.loadAnimation();\n }\n this.update();\n }\n update() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (this.gradient || this.stops) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n }\n else {\n this.hasGradient = false;\n }\n this.updatePathEl();\n this.checkToHideBar();\n }\n loadAnimation() {\n this.path = this.getStartingPath();\n setTimeout(this.update.bind(this), 100);\n }\n updatePathEl() {\n const node = select(this.element).select('.bar');\n const path = this.getPath();\n if (this.animations) {\n node.transition().duration(500).attr('d', path);\n }\n else {\n node.attr('d', path);\n }\n }\n getGradient() {\n if (this.stops) {\n return this.stops;\n }\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.getStartOpacity()\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n getStartingPath() {\n if (!this.animations) {\n return this.getPath();\n }\n let radius = this.getRadius();\n let path;\n if (this.roundEdges) {\n if (this.orientation === BarOrientation.Vertical) {\n radius = Math.min(this.height, radius);\n path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n }\n else if (this.orientation === BarOrientation.Horizontal) {\n radius = Math.min(this.width, radius);\n path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n }\n }\n else {\n if (this.orientation === BarOrientation.Vertical) {\n path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n }\n else if (this.orientation === BarOrientation.Horizontal) {\n path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n }\n }\n return path;\n }\n getPath() {\n let radius = this.getRadius();\n let path;\n if (this.roundEdges) {\n if (this.orientation === BarOrientation.Vertical) {\n radius = Math.min(this.height, radius);\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n else if (this.orientation === BarOrientation.Horizontal) {\n radius = Math.min(this.width, radius);\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n }\n else {\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n return path;\n }\n getRadius() {\n let radius = 0;\n if (this.roundEdges && this.height > 5 && this.width > 5) {\n radius = Math.floor(Math.min(5, this.height / 2, this.width / 2));\n }\n return radius;\n }\n getStartOpacity() {\n if (this.roundEdges) {\n return 0.2;\n }\n else {\n return 0.5;\n }\n }\n get edges() {\n let edges = [false, false, false, false];\n if (this.roundEdges) {\n if (this.orientation === BarOrientation.Vertical) {\n if (this.data.value > 0) {\n edges = [true, true, false, false];\n }\n else {\n edges = [false, false, true, true];\n }\n }\n else if (this.orientation === BarOrientation.Horizontal) {\n if (this.data.value > 0) {\n edges = [false, true, false, true];\n }\n else {\n edges = [true, false, true, false];\n }\n }\n }\n return edges;\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n checkToHideBar() {\n this.hideBar =\n this.noBarWhenZero &&\n ((this.orientation === BarOrientation.Vertical && this.height === 0) ||\n (this.orientation === BarOrientation.Horizontal && this.width === 0));\n }\n}\nBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarComponent, selector: \"g[ngx-charts-bar]\", inputs: { fill: \"fill\", data: \"data\", width: \"width\", height: \"height\", x: \"x\", y: \"y\", orientation: \"orientation\", roundEdges: \"roundEdges\", gradient: \"gradient\", offset: \"offset\", isActive: \"isActive\", stops: \"stops\", animations: \"animations\", ariaLabel: \"ariaLabel\", noBarWhenZero: \"noBarWhenZero\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave()\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-bar]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fill: [{\n type: Input\n }], data: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], orientation: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], gradient: [{\n type: Input\n }], offset: [{\n type: Input\n }], isActive: [{\n type: Input\n }], stops: [{\n type: Input\n }], animations: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nvar BarChartType;\n(function (BarChartType) {\n BarChartType[\"Standard\"] = \"standard\";\n BarChartType[\"Normalized\"] = \"normalized\";\n BarChartType[\"Stacked\"] = \"stacked\";\n})(BarChartType || (BarChartType = {}));\n\nvar D0Types;\n(function (D0Types) {\n D0Types[\"positive\"] = \"positive\";\n D0Types[\"negative\"] = \"negative\";\n})(D0Types || (D0Types = {}));\n\nclass BarLabelComponent {\n constructor(element) {\n this.dimensionsChanged = new EventEmitter();\n this.horizontalPadding = 2;\n this.verticalPadding = 5;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n getSize() {\n const h = this.element.getBoundingClientRect().height;\n const w = this.element.getBoundingClientRect().width;\n return { height: h, width: w, negative: this.value < 0 };\n }\n ngAfterViewInit() {\n this.dimensionsChanged.emit(this.getSize());\n }\n update() {\n if (this.valueFormatting) {\n this.formatedValue = this.valueFormatting(this.value);\n }\n else {\n this.formatedValue = formatLabel(this.value);\n }\n if (this.orientation === 'horizontal') {\n this.x = this.barX + this.barWidth;\n // if the value is negative then it's on the left of the x0.\n // we need to put the data label in front of the bar\n if (this.value < 0) {\n this.x = this.x - this.horizontalPadding;\n this.textAnchor = 'end';\n }\n else {\n this.x = this.x + this.horizontalPadding;\n this.textAnchor = 'start';\n }\n this.y = this.barY + this.barHeight / 2;\n }\n else {\n // orientation must be \"vertical\"\n this.x = this.barX + this.barWidth / 2;\n this.y = this.barY + this.barHeight;\n if (this.value < 0) {\n this.y = this.y + this.verticalPadding;\n this.textAnchor = 'end';\n }\n else {\n this.y = this.y - this.verticalPadding;\n this.textAnchor = 'start';\n }\n this.transform = `rotate(-45, ${this.x} , ${this.y})`;\n }\n }\n}\nBarLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarLabelComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nBarLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarLabelComponent, selector: \"g[ngx-charts-bar-label]\", inputs: { value: \"value\", valueFormatting: \"valueFormatting\", barX: \"barX\", barY: \"barY\", barWidth: \"barWidth\", barHeight: \"barHeight\", orientation: \"orientation\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, usesOnChanges: true, ngImport: i0, template: `\n \n {{ formatedValue }}\n \n `, isInline: true, styles: [\".textDataLabel{font-size:11px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarLabelComponent, decorators: [{\n type: Component,\n args: [{ selector: 'g[ngx-charts-bar-label]', template: `\n \n {{ formatedValue }}\n \n `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".textDataLabel{font-size:11px}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], barX: [{\n type: Input\n }], barY: [{\n type: Input\n }], barWidth: [{\n type: Input\n }], barHeight: [{\n type: Input\n }], orientation: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }] } });\n\nclass SeriesHorizontal {\n constructor() {\n this.type = BarChartType.Standard;\n this.tooltipDisabled = false;\n this.animations = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dataLabelWidthChanged = new EventEmitter();\n this.barsForDataLabels = [];\n this.barOrientation = BarOrientation;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateTooltipSettings();\n const d0 = {\n [D0Types.positive]: 0,\n [D0Types.negative]: 0\n };\n let d0Type;\n d0Type = D0Types.positive;\n let total;\n if (this.type === BarChartType.Normalized) {\n total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n const xScaleMin = Math.max(this.xScale.domain()[0], 0);\n this.bars = this.series.map(d => {\n let value = d.value;\n const label = this.getLabel(d);\n const formattedLabel = formatLabel(label);\n const roundEdges = this.roundEdges;\n d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n const bar = {\n value,\n label,\n roundEdges,\n data: d,\n formattedLabel\n };\n bar.height = this.yScale.bandwidth();\n if (this.type === BarChartType.Standard) {\n bar.width = Math.abs(this.xScale(value) - this.xScale(xScaleMin));\n if (value < 0) {\n bar.x = this.xScale(value);\n }\n else {\n bar.x = this.xScale(xScaleMin);\n }\n bar.y = this.yScale(label);\n }\n else if (this.type === BarChartType.Stacked) {\n const offset0 = d0[d0Type];\n const offset1 = offset0 + value;\n d0[d0Type] += value;\n bar.width = this.xScale(offset1) - this.xScale(offset0);\n bar.x = this.xScale(offset0);\n bar.y = 0;\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n }\n else if (this.type === BarChartType.Normalized) {\n let offset0 = d0[d0Type];\n let offset1 = offset0 + value;\n d0[d0Type] += value;\n if (total > 0) {\n offset0 = (offset0 * 100) / total;\n offset1 = (offset1 * 100) / total;\n }\n else {\n offset0 = 0;\n offset1 = 0;\n }\n bar.width = this.xScale(offset1) - this.xScale(offset0);\n bar.x = this.xScale(offset0);\n bar.y = 0;\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n value = (offset1 - offset0).toFixed(2) + '%';\n }\n if (this.colors.scaleType === ScaleType.Ordinal) {\n bar.color = this.colors.getColor(label);\n }\n else {\n if (this.type === BarChartType.Standard) {\n bar.color = this.colors.getColor(value);\n bar.gradientStops = this.colors.getLinearGradientStops(value);\n }\n else {\n bar.color = this.colors.getColor(bar.offset1);\n bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n }\n }\n let tooltipLabel = formattedLabel;\n bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n if (this.seriesName !== null && this.seriesName !== undefined) {\n tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n bar.data.series = this.seriesName;\n bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n }\n bar.tooltipText = this.tooltipDisabled\n ? undefined\n : `\n ${escapeLabel(tooltipLabel)}\n ${this.dataLabelFormatting ? this.dataLabelFormatting(value) : value.toLocaleString()}\n `;\n return bar;\n });\n this.updateDataLabels();\n }\n updateDataLabels() {\n if (this.type === BarChartType.Stacked) {\n this.barsForDataLabels = [];\n const section = {};\n section.series = this.seriesName;\n const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n section.total = totalPositive + totalNegative;\n section.x = 0;\n section.y = 0;\n // if total is positive then we show it on the right, otherwise on the left\n if (section.total > 0) {\n section.width = this.xScale(totalPositive);\n }\n else {\n section.width = this.xScale(totalNegative);\n }\n section.height = this.yScale.bandwidth();\n this.barsForDataLabels.push(section);\n }\n else {\n this.barsForDataLabels = this.series.map(d => {\n const section = {};\n section.series = this.seriesName ?? d.label;\n section.total = d.value;\n section.x = this.xScale(0);\n section.y = this.yScale(d.label);\n section.width = this.xScale(section.total) - this.xScale(0);\n section.height = this.yScale.bandwidth();\n return section;\n });\n }\n }\n updateTooltipSettings() {\n this.tooltipPlacement = this.tooltipDisabled ? undefined : PlacementTypes.Top;\n this.tooltipType = this.tooltipDisabled ? undefined : StyleTypes.tooltip;\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(active => {\n return entry.name === active.name && entry.value === active.value;\n });\n return item !== undefined;\n }\n getLabel(dataItem) {\n if (dataItem.label) {\n return dataItem.label;\n }\n return dataItem.name;\n }\n trackBy(index, bar) {\n return bar.label;\n }\n trackDataLabelBy(index, barLabel) {\n return index + '#' + barLabel.series + '#' + barLabel.total;\n }\n click(data) {\n this.select.emit(data);\n }\n}\nSeriesHorizontal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SeriesHorizontal, deps: [], target: i0.ɵɵFactoryTarget.Component });\nSeriesHorizontal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: SeriesHorizontal, selector: \"g[ngx-charts-series-horizontal]\", inputs: { dims: \"dims\", type: \"type\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", activeEntries: \"activeEntries\", seriesName: \"seriesName\", tooltipTemplate: \"tooltipTemplate\", roundEdges: \"roundEdges\", animations: \"animations\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dataLabelWidthChanged: \"dataLabelWidthChanged\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: BarComponent, selector: \"g[ngx-charts-bar]\", inputs: [\"fill\", \"data\", \"width\", \"height\", \"x\", \"y\", \"orientation\", \"roundEdges\", \"gradient\", \"offset\", \"isActive\", \"stops\", \"animations\", \"ariaLabel\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: BarLabelComponent, selector: \"g[ngx-charts-bar-label]\", inputs: [\"value\", \"valueFormatting\", \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"orientation\"], outputs: [\"dimensionsChanged\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SeriesHorizontal, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-series-horizontal]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], propDecorators: { dims: [{\n type: Input\n }], type: [{\n type: Input\n }], series: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], seriesName: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], animations: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dataLabelWidthChanged: [{\n type: Output\n }] } });\n\nclass BarHorizontalComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getXScale() {\n this.xDomain = this.getXDomain();\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.xDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale() {\n this.yDomain = this.getYDomain();\n const spacing = this.yDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.yDomain);\n }\n getXDomain() {\n const values = this.results.map(d => d.value);\n const min = this.xScaleMin ? Math.min(this.xScaleMin, ...values) : Math.min(0, ...values);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...values) : Math.max(0, ...values);\n return [min, max];\n }\n getYDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.yDomain;\n }\n else {\n domain = this.xDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.yDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.xDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (event.index === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarHorizontalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarHorizontalComponent, selector: \"ngx-charts-bar-horizontal\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", xScaleMax: \"xScaleMax\", xScaleMin: \"xScaleMin\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesHorizontal, selector: \"g[ngx-charts-series-horizontal]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"tooltipDisabled\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-horizontal', template: `\n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarHorizontal2DComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.groupPadding = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n this.isSSR = false;\n this.barOrientation = BarOrientation;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.groupScale = this.getGroupScale();\n this.innerScale = this.getInnerScale();\n this.valueScale = this.getValueScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.height])\n .paddingInner(spacing)\n .paddingOuter(spacing / 2)\n .domain(this.groupDomain);\n }\n getInnerScale() {\n const height = this.groupScale.bandwidth();\n const spacing = this.innerDomain.length / (height / this.barPadding + 1);\n return scaleBand().rangeRound([0, height]).paddingInner(spacing).domain(this.innerDomain);\n }\n getValueScale() {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const min = Math.min(0, ...domain);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(0, ...domain);\n return [min, max];\n }\n groupTransform(group) {\n return `translate(0, ${this.groupScale(group.label)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontal2DComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontal2DComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarHorizontal2DComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarHorizontal2DComponent, selector: \"ngx-charts-bar-horizontal-2d\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", groupPadding: \"groupPadding\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", xScaleMax: \"xScaleMax\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: GridPanelSeriesComponent, selector: \"g[ngx-charts-grid-panel-series]\", inputs: [\"data\", \"dims\", \"xScale\", \"yScale\", \"orient\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesHorizontal, selector: \"g[ngx-charts-series-horizontal]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"tooltipDisabled\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontal2DComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-horizontal-2d', template: `\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], groupPadding: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarHorizontalNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.valueDomain = [0, 100];\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.barChartType = BarChartType;\n this.isSSR = false;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getYScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.groupDomain);\n }\n getXScale() {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(0, ${this.yScale(group.name)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontalNormalizedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalNormalizedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarHorizontalNormalizedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarHorizontalNormalizedComponent, selector: \"ngx-charts-bar-horizontal-normalized\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesHorizontal, selector: \"g[ngx-charts-series-horizontal]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"tooltipDisabled\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalNormalizedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-horizontal-normalized', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarHorizontalStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n this.barChartType = BarChartType;\n this.isSSR = false;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n let smallest = 0;\n let biggest = 0;\n for (const group of this.results) {\n let smallestSum = 0;\n let biggestSum = 0;\n for (const d of group.series) {\n if (d.value < 0) {\n smallestSum += d.value;\n }\n else {\n biggestSum += d.value;\n }\n smallest = d.value < smallest ? d.value : smallest;\n biggest = d.value > biggest ? d.value : biggest;\n }\n domain.push(smallestSum);\n domain.push(biggestSum);\n }\n domain.push(smallest);\n domain.push(biggest);\n const min = Math.min(0, ...domain);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(...domain);\n return [min, max];\n }\n getYScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.groupDomain);\n }\n getXScale() {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(0, ${this.yScale(group.name)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontalStackedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalStackedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarHorizontalStackedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarHorizontalStackedComponent, selector: \"ngx-charts-bar-horizontal-stacked\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", xScaleMax: \"xScaleMax\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesHorizontal, selector: \"g[ngx-charts-series-horizontal]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"tooltipDisabled\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarHorizontalStackedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-horizontal-stacked', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass SeriesVerticalComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.type = BarChartType.Standard;\n this.tooltipDisabled = false;\n this.animations = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dataLabelHeightChanged = new EventEmitter();\n this.barsForDataLabels = [];\n this.barOrientation = BarOrientation;\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateTooltipSettings();\n let width;\n if (this.series.length) {\n width = this.xScale.bandwidth();\n }\n width = Math.round(width);\n const yScaleMin = Math.max(this.yScale.domain()[0], 0);\n const d0 = {\n [D0Types.positive]: 0,\n [D0Types.negative]: 0\n };\n let d0Type = D0Types.positive;\n let total;\n if (this.type === BarChartType.Normalized) {\n total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n this.bars = this.series.map((d, index) => {\n let value = d.value;\n const label = this.getLabel(d);\n const formattedLabel = formatLabel(label);\n const roundEdges = this.roundEdges;\n d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n const bar = {\n value,\n label,\n roundEdges,\n data: d,\n width,\n formattedLabel,\n height: 0,\n x: 0,\n y: 0\n };\n if (this.type === BarChartType.Standard) {\n bar.height = Math.abs(this.yScale(value) - this.yScale(yScaleMin));\n bar.x = this.xScale(label);\n if (value < 0) {\n bar.y = this.yScale(0);\n }\n else {\n bar.y = this.yScale(value);\n }\n }\n else if (this.type === BarChartType.Stacked) {\n const offset0 = d0[d0Type];\n const offset1 = offset0 + value;\n d0[d0Type] += value;\n bar.height = this.yScale(offset0) - this.yScale(offset1);\n bar.x = 0;\n bar.y = this.yScale(offset1);\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n }\n else if (this.type === BarChartType.Normalized) {\n let offset0 = d0[d0Type];\n let offset1 = offset0 + value;\n d0[d0Type] += value;\n if (total > 0) {\n offset0 = (offset0 * 100) / total;\n offset1 = (offset1 * 100) / total;\n }\n else {\n offset0 = 0;\n offset1 = 0;\n }\n bar.height = this.yScale(offset0) - this.yScale(offset1);\n bar.x = 0;\n bar.y = this.yScale(offset1);\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n value = (offset1 - offset0).toFixed(2) + '%';\n }\n if (this.colors.scaleType === ScaleType.Ordinal) {\n bar.color = this.colors.getColor(label);\n }\n else {\n if (this.type === BarChartType.Standard) {\n bar.color = this.colors.getColor(value);\n bar.gradientStops = this.colors.getLinearGradientStops(value);\n }\n else {\n bar.color = this.colors.getColor(bar.offset1);\n bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n }\n }\n let tooltipLabel = formattedLabel;\n bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n if (this.seriesName !== null && this.seriesName !== undefined) {\n tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n bar.data.series = this.seriesName;\n bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n }\n bar.tooltipText = this.tooltipDisabled\n ? undefined\n : `\n ${escapeLabel(tooltipLabel)}\n ${this.dataLabelFormatting ? this.dataLabelFormatting(value) : value.toLocaleString()}\n `;\n return bar;\n });\n this.updateDataLabels();\n }\n updateDataLabels() {\n if (this.type === BarChartType.Stacked) {\n this.barsForDataLabels = [];\n const section = {};\n section.series = this.seriesName;\n const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n section.total = totalPositive + totalNegative;\n section.x = 0;\n section.y = 0;\n if (section.total > 0) {\n section.height = this.yScale(totalPositive);\n }\n else {\n section.height = this.yScale(totalNegative);\n }\n section.width = this.xScale.bandwidth();\n this.barsForDataLabels.push(section);\n }\n else {\n this.barsForDataLabels = this.series.map(d => {\n const section = {};\n section.series = this.seriesName ?? d.label;\n section.total = d.value;\n section.x = this.xScale(d.label);\n section.y = this.yScale(0);\n section.height = this.yScale(section.total) - this.yScale(0);\n section.width = this.xScale.bandwidth();\n return section;\n });\n }\n }\n updateTooltipSettings() {\n this.tooltipPlacement = this.tooltipDisabled ? undefined : PlacementTypes.Top;\n this.tooltipType = this.tooltipDisabled ? undefined : StyleTypes.tooltip;\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(active => {\n return entry.name === active.name && entry.value === active.value;\n });\n return item !== undefined;\n }\n onClick(data) {\n this.select.emit(data);\n }\n getLabel(dataItem) {\n if (dataItem.label) {\n return dataItem.label;\n }\n return dataItem.name;\n }\n trackBy(index, bar) {\n return bar.label;\n }\n trackDataLabelBy(index, barLabel) {\n return index + '#' + barLabel.series + '#' + barLabel.total;\n }\n}\nSeriesVerticalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SeriesVerticalComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nSeriesVerticalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: SeriesVerticalComponent, selector: \"g[ngx-charts-series-vertical]\", inputs: { dims: \"dims\", type: \"type\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", gradient: \"gradient\", activeEntries: \"activeEntries\", seriesName: \"seriesName\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\", roundEdges: \"roundEdges\", animations: \"animations\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dataLabelHeightChanged: \"dataLabelHeightChanged\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: BarComponent, selector: \"g[ngx-charts-bar]\", inputs: [\"fill\", \"data\", \"width\", \"height\", \"x\", \"y\", \"orientation\", \"roundEdges\", \"gradient\", \"offset\", \"isActive\", \"stops\", \"animations\", \"ariaLabel\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: BarLabelComponent, selector: \"g[ngx-charts-bar-label]\", inputs: [\"value\", \"valueFormatting\", \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"orientation\"], outputs: [\"dimensionsChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SeriesVerticalComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-series-vertical]',\n template: `\n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { dims: [{\n type: Input\n }], type: [{\n type: Input\n }], series: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], seriesName: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], animations: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dataLabelHeightChanged: [{\n type: Output\n }] } });\n\nclass BarVerticalComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n getXScale() {\n this.xDomain = this.getXDomain();\n const spacing = this.xDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand().range([0, this.dims.width]).paddingInner(spacing).domain(this.xDomain);\n }\n getYScale() {\n this.yDomain = this.getYDomain();\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.yDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getXDomain() {\n return this.results.map(d => d.label);\n }\n getYDomain() {\n const values = this.results.map(d => d.value);\n let min = this.yScaleMin ? Math.min(this.yScaleMin, ...values) : Math.min(0, ...values);\n if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n min = Math.min(min, ...this.yAxisTicks);\n }\n let max = this.yScaleMax ? Math.max(this.yScaleMax, ...values) : Math.max(0, ...values);\n if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n max = Math.max(max, ...this.yAxisTicks);\n }\n return [min, max];\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.xDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.xDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxHeightChanged(event) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (event.index === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVerticalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarVerticalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarVerticalComponent, selector: \"ngx-charts-bar-vertical\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", yScaleMax: \"yScaleMax\", yScaleMin: \"yScaleMin\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesVerticalComponent, selector: \"g[ngx-charts-series-vertical]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipDisabled\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-vertical', template: `\n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarVertical2DComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.scaleType = ScaleType.Ordinal;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.groupPadding = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n this.isSSR = false;\n this.barOrientation = BarOrientation;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.groupScale = this.getGroupScale();\n this.innerScale = this.getInnerScale();\n this.valueScale = this.getValueScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n onDataLabelMaxHeightChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n getGroupScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.width])\n .paddingInner(spacing)\n .paddingOuter(spacing / 2)\n .domain(this.groupDomain);\n }\n getInnerScale() {\n const width = this.groupScale.bandwidth();\n const spacing = this.innerDomain.length / (width / this.barPadding + 1);\n return scaleBand().rangeRound([0, width]).paddingInner(spacing).domain(this.innerDomain);\n }\n getValueScale() {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const min = Math.min(0, ...domain);\n const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(0, ...domain);\n return [min, max];\n }\n groupTransform(group) {\n return `translate(${this.groupScale(group.label)}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVertical2DComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVertical2DComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarVertical2DComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarVertical2DComponent, selector: \"ngx-charts-bar-vertical-2d\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", scaleType: \"scaleType\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", groupPadding: \"groupPadding\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", yScaleMax: \"yScaleMax\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: GridPanelSeriesComponent, selector: \"g[ngx-charts-grid-panel-series]\", inputs: [\"data\", \"dims\", \"xScale\", \"yScale\", \"orient\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesVerticalComponent, selector: \"g[ngx-charts-series-vertical]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipDisabled\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVertical2DComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-vertical-2d', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], groupPadding: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarVerticalNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.valueDomain = [0, 100];\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.isSSR = false;\n this.barChartType = BarChartType;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getXScale() {\n const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.width]).paddingInner(spacing).domain(this.groupDomain);\n }\n getYScale() {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(${this.xScale(group.name)}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVerticalNormalizedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalNormalizedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarVerticalNormalizedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarVerticalNormalizedComponent, selector: \"ngx-charts-bar-vertical-normalized\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesVerticalComponent, selector: \"g[ngx-charts-series-vertical]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipDisabled\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalNormalizedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-vertical-normalized', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarVerticalStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n this.isSSR = false;\n this.barChartType = BarChartType;\n this.trackBy = (index, item) => {\n return item.name;\n };\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n let smallest = 0;\n let biggest = 0;\n for (const group of this.results) {\n let smallestSum = 0;\n let biggestSum = 0;\n for (const d of group.series) {\n if (d.value < 0) {\n smallestSum += d.value;\n }\n else {\n biggestSum += d.value;\n }\n smallest = d.value < smallest ? d.value : smallest;\n biggest = d.value > biggest ? d.value : biggest;\n }\n domain.push(smallestSum);\n domain.push(biggestSum);\n }\n domain.push(smallest);\n domain.push(biggest);\n const min = Math.min(0, ...domain);\n const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(...domain);\n return [min, max];\n }\n getXScale() {\n const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.width]).paddingInner(spacing).domain(this.groupDomain);\n }\n getYScale() {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n onDataLabelMaxHeightChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n groupTransform(group) {\n return `translate(${this.xScale(group.name) || 0}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVerticalStackedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalStackedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBarVerticalStackedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BarVerticalStackedComponent, selector: \"ngx-charts-bar-vertical-stacked\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", yScaleMax: \"yScaleMax\", showDataLabel: \"showDataLabel\", dataLabelFormatting: \"dataLabelFormatting\", noBarWhenZero: \"noBarWhenZero\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: SeriesVerticalComponent, selector: \"g[ngx-charts-series-vertical]\", inputs: [\"dims\", \"type\", \"series\", \"xScale\", \"yScale\", \"colors\", \"gradient\", \"activeEntries\", \"seriesName\", \"tooltipDisabled\", \"tooltipTemplate\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarVerticalStackedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bar-vertical-stacked', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass BarChartModule {\n}\nBarChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBarChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarChartModule, declarations: [BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent], imports: [ChartCommonModule], exports: [BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent] });\nBarChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BarChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [\n BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent\n ],\n exports: [\n BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent\n ]\n }]\n }] });\n\nconst cloneDeep = rfdc();\nclass BoxComponent {\n constructor(element, cd) {\n this.cd = cd;\n this.roundEdges = true;\n this.gradient = false;\n this.offset = 0;\n this.isActive = false;\n this.animations = true;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.BarOrientation = BarOrientation;\n this.initialized = false;\n this.hasGradient = false;\n this.hideBar = false;\n this.nativeElm = element.nativeElement;\n }\n ngOnChanges(changes) {\n if (!this.initialized) {\n this.loadAnimation();\n this.initialized = true;\n }\n else {\n this.update();\n }\n }\n update() {\n this.boxStrokeWidth = Math.max(this.strokeWidth, 1);\n this.whiskerStrokeWidth = Math.max(this.strokeWidth / 2, 1);\n this.medianLineWidth = 1.5 * this.strokeWidth;\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (this.gradient) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n }\n else {\n this.hasGradient = false;\n }\n this.updateLineEl();\n this.updatePathEl();\n this.checkToHideBar();\n this.maskLineId = 'mask' + id().toString();\n this.maskLine = `url(#${this.maskLineId})`;\n if (this.cd) {\n this.cd.markForCheck();\n }\n }\n loadAnimation() {\n this.boxPath = this.oldPath = this.getStartingPath();\n this.oldLineCoordinates = this.getStartingLineCoordinates();\n setTimeout(this.update.bind(this), 100);\n }\n updatePathEl() {\n const nodeBar = select(this.nativeElm).selectAll('.bar');\n const path = this.getPath();\n if (this.animations) {\n nodeBar\n .attr('d', this.oldPath)\n .transition()\n .ease(easeSinInOut)\n .duration(500)\n .attrTween('d', this.pathTween(path, 4));\n }\n else {\n nodeBar.attr('d', path);\n }\n this.oldPath = path;\n }\n updateLineEl() {\n const lineEl = select(this.nativeElm).selectAll('.bar-line');\n const lineCoordinates = this.lineCoordinates;\n const oldLineCoordinates = this.oldLineCoordinates;\n if (this.animations) {\n lineEl\n .attr('x1', (_, index) => oldLineCoordinates[index].v1.x)\n .attr('y1', (_, index) => oldLineCoordinates[index].v1.y)\n .attr('x2', (_, index) => oldLineCoordinates[index].v2.x)\n .attr('y2', (_, index) => oldLineCoordinates[index].v2.y)\n .transition()\n .ease(easeSinInOut)\n .duration(500)\n .attr('x1', (_, index) => lineCoordinates[index].v1.x)\n .attr('y1', (_, index) => lineCoordinates[index].v1.y)\n .attr('x2', (_, index) => lineCoordinates[index].v2.x)\n .attr('y2', (_, index) => lineCoordinates[index].v2.y);\n }\n else {\n lineEl\n .attr('x1', (_, index) => lineCoordinates[index].v1.x)\n .attr('y1', (_, index) => lineCoordinates[index].v1.y)\n .attr('x2', (_, index) => lineCoordinates[index].v2.x)\n .attr('y2', (_, index) => lineCoordinates[index].v2.y);\n }\n this.oldLineCoordinates = [...lineCoordinates];\n }\n /**\n * See [D3 Selections](https://www.d3indepth.com/selections/)\n * @param d The joined data.\n * @param index The index of the element within the selection\n * @param node The node element (Line).\n */\n lineTween(attr, d, index, node) {\n const nodeLineEl = node[index];\n return nodeLineEl[attr].baseVal.value;\n }\n // TODO: Refactor into another .ts file if https://github.com/swimlane/ngx-charts/pull/1179 gets merged.\n pathTween(d1, precision) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const path0 = this;\n const path1 = this.cloneNode();\n path1.setAttribute('d', d1);\n const n0 = path0?.getTotalLength();\n const n1 = path1?.getTotalLength();\n // Uniform sampling of distance based on specified precision.\n const distances = [0];\n let i = 0;\n const dt = precision / Math.max(n0, n1);\n while (i < 1) {\n distances.push(i);\n i += dt;\n }\n distances.push(1);\n // Compute point-interpolators at each distance.\n const points = distances.map((t) => {\n const p0 = path0.getPointAtLength(t * n0);\n const p1 = path1.getPointAtLength(t * n1);\n return interpolate([p0.x, p0.y], [p1.x, p1.y]);\n });\n // 't': T is the fraction of time (between 0 and 1) since the transition began.\n return (t) => {\n return t < 1 ? 'M' + points.map((p) => p(t)).join('L') : d1;\n };\n };\n }\n getStartingPath() {\n if (!this.animations) {\n return this.getPath();\n }\n const radius = this.roundEdges ? 1 : 0;\n const { x, y } = this.lineCoordinates[2].v1;\n return roundedRect(x - this.width, y - 1, this.width, 2, radius, this.edges);\n }\n getPath() {\n const radius = this.getRadius();\n let path = '';\n path = roundedRect(this.x, this.y, this.width, this.height, Math.min(this.height, radius), this.edges);\n return path;\n }\n getStartingLineCoordinates() {\n if (!this.animations) {\n return [...this.lineCoordinates];\n }\n const lineCoordinates = cloneDeep(this.lineCoordinates);\n lineCoordinates[1].v1.y = lineCoordinates[1].v2.y = lineCoordinates[3].v1.y = lineCoordinates[3].v2.y = lineCoordinates[0].v1.y = lineCoordinates[0].v2.y =\n lineCoordinates[2].v1.y;\n return lineCoordinates;\n }\n getRadius() {\n let radius = 0;\n if (this.roundEdges && this.height > 5 && this.width > 5) {\n radius = Math.floor(Math.min(5, this.height / 2, this.width / 2));\n }\n return radius;\n }\n getGradient() {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.getStartOpacity()\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n getStartOpacity() {\n if (this.roundEdges) {\n return 0.2;\n }\n else {\n return 0.5;\n }\n }\n get edges() {\n let edges = [false, false, false, false];\n if (this.roundEdges) {\n edges = [true, true, true, true];\n }\n return edges;\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n checkToHideBar() {\n this.hideBar = this.noBarWhenZero && this.height === 0;\n }\n}\nBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BoxComponent, selector: \"g[ngx-charts-box]\", inputs: { strokeColor: \"strokeColor\", strokeWidth: \"strokeWidth\", fill: \"fill\", data: \"data\", width: \"width\", height: \"height\", x: \"x\", y: \"y\", lineCoordinates: \"lineCoordinates\", roundEdges: \"roundEdges\", gradient: \"gradient\", gradientStops: \"gradientStops\", offset: \"offset\", isActive: \"isActive\", animations: \"animations\", ariaLabel: \"ariaLabel\", noBarWhenZero: \"noBarWhenZero\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave()\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-box]',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { strokeColor: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], fill: [{\n type: Input\n }], data: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], lineCoordinates: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], gradient: [{\n type: Input\n }], gradientStops: [{\n type: Input\n }], offset: [{\n type: Input\n }], isActive: [{\n type: Input\n }], animations: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass BoxSeriesComponent {\n constructor() {\n this.animations = true;\n this.tooltipDisabled = false;\n this.gradient = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n onClick(data) {\n this.select.emit(data);\n }\n update() {\n this.updateTooltipSettings();\n const width = this.series && this.series.series.length ? Math.round(this.xScale.bandwidth()) : null;\n const seriesName = this.series.name;\n // Calculate Quantile and Whiskers for each box serie.\n this.counts = this.series.series;\n const mappedCounts = this.counts.map(serie => Number(serie.value));\n this.whiskers = [min(mappedCounts), max(mappedCounts)];\n // We get the group count and must sort it in order to retrieve quantiles.\n const groupCounts = this.counts.map(item => item.value).sort((a, b) => Number(a) - Number(b));\n this.quartiles = this.getBoxQuantiles(groupCounts);\n this.lineCoordinates = this.getLinesCoordinates(seriesName.toString(), this.whiskers, this.quartiles, width);\n const value = this.quartiles[1];\n const formattedLabel = formatLabel(seriesName);\n const box = {\n value,\n data: this.counts,\n label: seriesName,\n formattedLabel,\n width,\n height: 0,\n x: 0,\n y: 0,\n roundEdges: this.roundEdges,\n quartiles: this.quartiles,\n lineCoordinates: this.lineCoordinates\n };\n box.height = Math.abs(this.yScale(this.quartiles[0]) - this.yScale(this.quartiles[2]));\n box.x = this.xScale(seriesName.toString());\n box.y = this.yScale(this.quartiles[2]);\n box.ariaLabel = formattedLabel + ' - Median: ' + value.toLocaleString();\n if (this.colors.scaleType === ScaleType.Ordinal) {\n box.color = this.colors.getColor(seriesName);\n }\n else {\n box.color = this.colors.getColor(this.quartiles[1]);\n box.gradientStops = this.colors.getLinearGradientStops(this.quartiles[0], this.quartiles[2]);\n }\n const tooltipLabel = formattedLabel;\n const formattedTooltipLabel = `\n ${escapeLabel(tooltipLabel)}\n \n • Q1: ${this.quartiles[0]} • Q2: ${this.quartiles[1]} • Q3: ${this.quartiles[2]}
\n • Min: ${this.whiskers[0]} • Max: ${this.whiskers[1]}\n
`;\n box.tooltipText = this.tooltipDisabled ? undefined : formattedTooltipLabel;\n this.tooltipTitle = this.tooltipDisabled ? undefined : box.tooltipText;\n this.box = box;\n }\n getBoxQuantiles(inputData) {\n return [quantile(inputData, 0.25), quantile(inputData, 0.5), quantile(inputData, 0.75)];\n }\n getLinesCoordinates(seriesName, whiskers, quartiles, barWidth) {\n // The X value is not being centered, so had to sum half the width to align it.\n const commonX = this.xScale(seriesName);\n const offsetX = commonX + barWidth / 2;\n const medianLineWidth = Math.max(barWidth + 4 * this.strokeWidth, 1);\n const whiskerLineWidth = Math.max(barWidth / 3, 1);\n const whiskerZero = this.yScale(whiskers[0]);\n const whiskerOne = this.yScale(whiskers[1]);\n const median = this.yScale(quartiles[1]);\n const topLine = {\n v1: { x: offsetX + whiskerLineWidth / 2, y: whiskerZero },\n v2: { x: offsetX - whiskerLineWidth / 2, y: whiskerZero }\n };\n const medianLine = {\n v1: { x: offsetX + medianLineWidth / 2, y: median },\n v2: { x: offsetX - medianLineWidth / 2, y: median }\n };\n const bottomLine = {\n v1: { x: offsetX + whiskerLineWidth / 2, y: whiskerOne },\n v2: { x: offsetX - whiskerLineWidth / 2, y: whiskerOne }\n };\n const verticalLine = {\n v1: { x: offsetX, y: whiskerZero },\n v2: { x: offsetX, y: whiskerOne }\n };\n return [verticalLine, topLine, medianLine, bottomLine];\n }\n updateTooltipSettings() {\n if (this.tooltipDisabled) {\n this.tooltipPlacement = undefined;\n this.tooltipType = undefined;\n }\n else {\n if (!this.tooltipPlacement) {\n this.tooltipPlacement = PlacementTypes.Top;\n }\n if (!this.tooltipType) {\n this.tooltipType = StyleTypes.tooltip;\n }\n }\n }\n}\nBoxSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nBoxSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BoxSeriesComponent, selector: \"g[ngx-charts-box-series]\", inputs: { dims: \"dims\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", animations: \"animations\", strokeColor: \"strokeColor\", strokeWidth: \"strokeWidth\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\", tooltipPlacement: \"tooltipPlacement\", tooltipType: \"tooltipType\", roundEdges: \"roundEdges\", gradient: \"gradient\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, components: [{ type: BoxComponent, selector: \"g[ngx-charts-box]\", inputs: [\"strokeColor\", \"strokeWidth\", \"fill\", \"data\", \"width\", \"height\", \"x\", \"y\", \"lineCoordinates\", \"roundEdges\", \"gradient\", \"gradientStops\", \"offset\", \"isActive\", \"animations\", \"ariaLabel\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-box-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], propDecorators: { dims: [{\n type: Input\n }], series: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], animations: [{\n type: Input\n }], strokeColor: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipType: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], gradient: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass BoxChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n /** Show or hide the legend. */\n this.legend = false;\n this.legendPosition = LegendPosition.Right;\n this.legendTitle = 'Legend';\n this.showGridLines = true;\n this.xAxis = true;\n this.yAxis = true;\n this.showXAxisLabel = true;\n this.showYAxisLabel = true;\n this.roundDomains = false;\n this.roundEdges = true;\n this.strokeColor = '#FFFFFF';\n this.strokeWidth = 2;\n this.tooltipDisabled = false;\n this.wrapTicks = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n /** Chart Margins (For each side, counterclock wise). */\n this.margin = [10, 20, 10, 20];\n /** Chart X axis dimension. */\n this.xAxisHeight = 0;\n /** Chart Y axis dimension. */\n this.yAxisWidth = 0;\n }\n trackBy(index, item) {\n return item.name;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.setScales();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n setColors() {\n let domain = [];\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n setScales() {\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n }\n getXScale(domain, width) {\n const scale = scaleBand()\n .domain(domain.map(d => d.toString()))\n .rangeRound([0, width])\n .padding(0.5);\n return scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().domain(domain).range([height, 0]);\n return this.roundDomains ? scale.nice() : scale;\n }\n getUniqueBoxChartXDomainValues(results) {\n const valueSet = new Set();\n for (const result of results) {\n valueSet.add(result.name);\n }\n return Array.from(valueSet);\n }\n getXDomain() {\n let domain = [];\n const values = this.getUniqueBoxChartXDomainValues(this.results);\n let min;\n let max;\n if (typeof values[0] === 'string') {\n domain = values.map(val => val.toString());\n }\n else if (typeof values[0] === 'number') {\n const mappedValues = values.map(v => Number(v));\n min = Math.min(...mappedValues);\n max = Math.max(...mappedValues);\n domain = [min, max];\n }\n else {\n const mappedValues = values.map(v => Number(new Date(v)));\n min = Math.min(...mappedValues);\n max = Math.max(...mappedValues);\n domain = [new Date(min), new Date(max)];\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n }\n }\n const values = [...domain];\n const mappedValues = values.map(v => Number(v));\n const min = Math.min(...mappedValues);\n const max = Math.max(...mappedValues);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => `${d.name}`);\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onClick(data) {\n this.select.emit(data);\n }\n onActivate(data) {\n this.activate.emit(data);\n }\n onDeactivate(data) {\n this.deactivate.emit(data);\n }\n getLegendOptions() {\n const legendOpts = {\n scaleType: this.schemeType,\n colors: this.colors,\n domain: [],\n position: this.legendPosition,\n title: this.legendTitle\n };\n if (this.schemeType === ScaleType.Ordinal) {\n legendOpts.domain = this.xDomain;\n legendOpts.colors = this.colors;\n }\n else {\n legendOpts.domain = this.yDomain;\n legendOpts.colors = this.colors.scale;\n }\n return legendOpts;\n }\n}\nBoxChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBoxChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BoxChartComponent, selector: \"ngx-charts-box-chart\", inputs: { legend: \"legend\", legendPosition: \"legendPosition\", legendTitle: \"legendTitle\", legendOptionsConfig: \"legendOptionsConfig\", showGridLines: \"showGridLines\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", roundDomains: \"roundDomains\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", roundEdges: \"roundEdges\", strokeColor: \"strokeColor\", strokeWidth: \"strokeWidth\", tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", wrapTicks: \"wrapTicks\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: BoxSeriesComponent, selector: \"g[ngx-charts-box-series]\", inputs: [\"dims\", \"series\", \"xScale\", \"yScale\", \"colors\", \"animations\", \"strokeColor\", \"strokeWidth\", \"tooltipDisabled\", \"tooltipTemplate\", \"tooltipPlacement\", \"tooltipType\", \"roundEdges\", \"gradient\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-box-chart', template: `\n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendOptionsConfig: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], strokeColor: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate', { static: false }]\n }] } });\n\nclass BoxChartModule {\n}\nBoxChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBoxChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartModule, declarations: [BoxChartComponent, BoxSeriesComponent, BoxComponent], imports: [ChartCommonModule], exports: [BoxChartComponent, BoxSeriesComponent, BoxComponent] });\nBoxChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BoxChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [BoxChartComponent, BoxSeriesComponent, BoxComponent],\n exports: [BoxChartComponent, BoxSeriesComponent, BoxComponent]\n }]\n }] });\n\nfunction getDomain(values, scaleType, autoScale, minVal, maxVal) {\n let domain = [];\n if (scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n if (!autoScale) {\n values.push(0);\n }\n }\n if (scaleType === ScaleType.Time || scaleType === ScaleType.Linear) {\n const min = minVal || minVal === 0 ? minVal : Math.min(...values);\n const max = maxVal ? maxVal : Math.max(...values);\n domain = [min, max];\n }\n else {\n domain = values;\n }\n return domain;\n}\nfunction getScale(domain, range, scaleType, roundDomains) {\n switch (scaleType) {\n case ScaleType.Time:\n return scaleTime().range(range).domain(domain);\n case ScaleType.Linear: {\n const scale = scaleLinear().range(range).domain(domain);\n if (roundDomains) {\n return scale.nice();\n }\n return scale;\n }\n case ScaleType.Ordinal:\n return scalePoint()\n .range([range[0], range[1]])\n .domain(domain.map(r => r.toString()));\n default:\n return undefined;\n }\n}\n\nclass BubbleSeriesComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.tooltipDisabled = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.circles = this.getCircles();\n }\n getCircles() {\n const seriesName = this.data.name;\n return this.data.series\n .map((d, i) => {\n if (typeof d.y !== 'undefined' && typeof d.x !== 'undefined') {\n const y = d.y;\n const x = d.x;\n const r = d.r;\n const radius = this.rScale(r || 1);\n const tooltipLabel = formatLabel(d.name);\n const cx = this.xScaleType === ScaleType.Linear ? this.xScale(Number(x)) : this.xScale(x);\n const cy = this.yScaleType === ScaleType.Linear ? this.yScale(Number(y)) : this.yScale(y);\n const color = this.colors.scaleType === ScaleType.Linear ? this.colors.getColor(r) : this.colors.getColor(seriesName);\n const isActive = !this.activeEntries.length ? true : this.isActive({ name: seriesName });\n const opacity = isActive ? 1 : 0.3;\n const data = Object.assign({}, d, {\n series: seriesName,\n name: d.name,\n value: d.y,\n x: d.x,\n radius: d.r\n });\n return {\n data,\n x,\n y,\n r,\n classNames: [`circle-data-${i}`],\n value: y,\n label: x,\n cx,\n cy,\n radius,\n tooltipLabel,\n color,\n opacity,\n seriesName,\n isActive,\n transform: `translate(${cx},${cy})`\n };\n }\n })\n .filter(circle => circle !== undefined);\n }\n getTooltipText(circle) {\n const hasRadius = typeof circle.r !== 'undefined';\n const hasTooltipLabel = circle.tooltipLabel && circle.tooltipLabel.length;\n const hasSeriesName = circle.seriesName && circle.seriesName.length;\n const radiusValue = hasRadius ? formatLabel(circle.r) : '';\n const xAxisLabel = this.xAxisLabel && this.xAxisLabel !== '' ? `${this.xAxisLabel}:` : '';\n const yAxisLabel = this.yAxisLabel && this.yAxisLabel !== '' ? `${this.yAxisLabel}:` : '';\n const x = formatLabel(circle.x);\n const y = formatLabel(circle.y);\n const name = hasSeriesName && hasTooltipLabel\n ? `${circle.seriesName} • ${circle.tooltipLabel}`\n : circle.seriesName + circle.tooltipLabel;\n const tooltipTitle = hasSeriesName || hasTooltipLabel ? `${escapeLabel(name)}` : '';\n return `\n ${tooltipTitle}\n \n ${escapeLabel(x)}
\n ${escapeLabel(y)}\n
\n \n ${escapeLabel(radiusValue)}\n \n `;\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isVisible(circle) {\n if (this.activeEntries.length > 0) {\n return this.isActive({ name: circle.seriesName });\n }\n return circle.opacity !== 0;\n }\n activateCircle(circle) {\n circle.barVisible = true;\n this.activate.emit({ name: this.data.name });\n }\n deactivateCircle(circle) {\n circle.barVisible = false;\n this.deactivate.emit({ name: this.data.name });\n }\n trackBy(index, circle) {\n return `${circle.data.series} ${circle.data.name}`;\n }\n}\nBubbleSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleSeriesComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nBubbleSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BubbleSeriesComponent, selector: \"g[ngx-charts-bubble-series]\", inputs: { data: \"data\", xScale: \"xScale\", yScale: \"yScale\", rScale: \"rScale\", xScaleType: \"xScaleType\", yScaleType: \"yScaleType\", colors: \"colors\", visibleValue: \"visibleValue\", activeEntries: \"activeEntries\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: CircleComponent, selector: \"g[ngx-charts-circle]\", inputs: [\"cx\", \"cy\", \"r\", \"fill\", \"stroke\", \"data\", \"classNames\", \"circleOpacity\", \"pointerEvents\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'scale(0)'\n }),\n animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-bubble-series]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'scale(0)'\n }),\n animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n ])\n ])\n ]\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], rScale: [{\n type: Input\n }], xScaleType: [{\n type: Input\n }], yScaleType: [{\n type: Input\n }], colors: [{\n type: Input\n }], visibleValue: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass BubbleChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.showGridLines = true;\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.xAxis = true;\n this.yAxis = true;\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.maxRadius = 10;\n this.minRadius = 3;\n this.schemeType = ScaleType.Ordinal;\n this.tooltipDisabled = false;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.scaleType = ScaleType.Linear;\n this.margin = [10, 20, 10, 20];\n this.bubblePadding = [0, 0, 0, 0];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.activeEntries = [];\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.seriesDomain = this.results.map(d => d.name);\n this.rDomain = this.getRDomain();\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.transform = `translate(${this.dims.xOffset},${this.margin[0]})`;\n const colorDomain = this.schemeType === ScaleType.Ordinal ? this.seriesDomain : this.rDomain;\n this.colors = new ColorHelper(this.scheme, this.schemeType, colorDomain, this.customColors);\n this.data = this.results;\n this.minRadius = Math.max(this.minRadius, 1);\n this.maxRadius = Math.max(this.maxRadius, 1);\n this.rScale = this.getRScale(this.rDomain, [this.minRadius, this.maxRadius]);\n this.bubblePadding = [0, 0, 0, 0];\n this.setScales();\n this.bubblePadding = this.getBubblePadding();\n this.setScales();\n this.legendOptions = this.getLegendOptions();\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n hideCircles() {\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n getBubblePadding() {\n let yMin = 0;\n let xMin = 0;\n let yMax = this.dims.height;\n let xMax = this.dims.width;\n for (const s of this.data) {\n for (const d of s.series) {\n const r = this.rScale(d.r);\n const cx = this.xScaleType === ScaleType.Linear ? this.xScale(Number(d.x)) : this.xScale(d.x);\n const cy = this.yScaleType === ScaleType.Linear ? this.yScale(Number(d.y)) : this.yScale(d.y);\n xMin = Math.max(r - cx, xMin);\n yMin = Math.max(r - cy, yMin);\n yMax = Math.max(cy + r, yMax);\n xMax = Math.max(cx + r, xMax);\n }\n }\n xMax = Math.max(xMax - this.dims.width, 0);\n yMax = Math.max(yMax - this.dims.height, 0);\n return [yMin, xMax, yMax, xMin];\n }\n setScales() {\n let width = this.dims.width;\n if (this.xScaleMin === undefined && this.xScaleMax === undefined) {\n width = width - this.bubblePadding[1];\n }\n let height = this.dims.height;\n if (this.yScaleMin === undefined && this.yScaleMax === undefined) {\n height = height - this.bubblePadding[2];\n }\n this.xScale = this.getXScale(this.xDomain, width);\n this.yScale = this.getYScale(this.yDomain, height);\n }\n getYScale(domain, height) {\n return getScale(domain, [height, this.bubblePadding[0]], this.yScaleType, this.roundDomains);\n }\n getXScale(domain, width) {\n return getScale(domain, [this.bubblePadding[3], width], this.xScaleType, this.roundDomains);\n }\n getRScale(domain, range) {\n const scale = scaleLinear().range(range).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n position: this.legendPosition,\n title: undefined\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.rDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n getXDomain() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.x)) {\n values.push(d.x);\n }\n }\n }\n this.xScaleType = getScaleType(values);\n return getDomain(values, this.xScaleType, this.autoScale, this.xScaleMin, this.xScaleMax);\n }\n getYDomain() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.y)) {\n values.push(d.y);\n }\n }\n }\n this.yScaleType = getScaleType(values);\n return getDomain(values, this.yScaleType, this.autoScale, this.yScaleMin, this.yScaleMax);\n }\n getRDomain() {\n let min = Infinity;\n let max = -Infinity;\n for (const results of this.results) {\n for (const d of results.series) {\n const value = Number(d.r) || 1;\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n return [min, max];\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n trackBy(index, item) {\n return `${item.name}`;\n }\n}\nBubbleChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nBubbleChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: BubbleChartComponent, selector: \"ngx-charts-bubble-chart\", inputs: { showGridLines: \"showGridLines\", legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", roundDomains: \"roundDomains\", maxRadius: \"maxRadius\", minRadius: \"minRadius\", autoScale: \"autoScale\", schemeType: \"schemeType\", tooltipDisabled: \"tooltipDisabled\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseleave\": \"hideCircles()\" } }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: BubbleSeriesComponent, selector: \"g[ngx-charts-bubble-series]\", inputs: [\"data\", \"xScale\", \"yScale\", \"rScale\", \"xScaleType\", \"yScaleType\", \"colors\", \"visibleValue\", \"activeEntries\", \"xAxisLabel\", \"yAxisLabel\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-bubble-chart', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { showGridLines: [{\n type: Input\n }], legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], maxRadius: [{\n type: Input\n }], minRadius: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass BubbleChartModule {\n}\nBubbleChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBubbleChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartModule, declarations: [BubbleChartComponent, BubbleSeriesComponent], imports: [ChartCommonModule], exports: [BubbleChartComponent, BubbleSeriesComponent] });\nBubbleChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: BubbleChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [BubbleChartComponent, BubbleSeriesComponent],\n exports: [BubbleChartComponent, BubbleSeriesComponent]\n }]\n }] });\n\nclass HeatMapCellComponent {\n constructor(element) {\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.barOrientation = BarOrientation;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.transform = `translate(${this.x} , ${this.y})`;\n this.startOpacity = 0.3;\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n this.gradientStops = this.getGradientStops();\n if (this.animations) {\n this.loadAnimation();\n }\n }\n getGradientStops() {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n loadAnimation() {\n const node = select(this.element).select('.cell');\n node.attr('opacity', 0);\n this.animateToCurrentForm();\n }\n animateToCurrentForm() {\n const node = select(this.element).select('.cell');\n node.transition().duration(750).attr('opacity', 1);\n }\n onClick() {\n this.select.emit(this.data);\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n}\nHeatMapCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapCellComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nHeatMapCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: HeatMapCellComponent, selector: \"g[ngx-charts-heat-map-cell]\", inputs: { fill: \"fill\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", data: \"data\", gradient: \"gradient\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseenter\": \"onMouseEnter()\", \"mouseleave\": \"onMouseLeave()\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-heat-map-cell]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fill: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], data: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass HeatCellSeriesComponent {\n constructor() {\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n }\n ngOnInit() {\n if (!this.tooltipText) {\n this.tooltipText = this.getTooltipText;\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.cells = this.getCells();\n }\n getCells() {\n const cells = [];\n this.data.map(row => {\n row.series.map(cell => {\n const value = cell.value;\n cell.series = row.name;\n cells.push({\n row,\n cell,\n x: this.xScale(row.name),\n y: this.yScale(cell.name),\n width: this.xScale.bandwidth(),\n height: this.yScale.bandwidth(),\n fill: this.colors.getColor(value),\n data: value,\n label: formatLabel(cell.name),\n series: row.name\n });\n });\n });\n return cells;\n }\n getTooltipText({ label, data, series }) {\n return `\n ${escapeLabel(series)} • ${escapeLabel(label)}\n ${data.toLocaleString()}\n `;\n }\n trackBy(index, item) {\n return item.label;\n }\n onClick(data) {\n this.select.emit(data);\n }\n}\nHeatCellSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatCellSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nHeatCellSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: HeatCellSeriesComponent, selector: \"g[ngx-charts-heat-map-cell-series]\", inputs: { data: \"data\", colors: \"colors\", xScale: \"xScale\", yScale: \"yScale\", gradient: \"gradient\", tooltipDisabled: \"tooltipDisabled\", tooltipText: \"tooltipText\", tooltipTemplate: \"tooltipTemplate\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, components: [{ type: HeatMapCellComponent, selector: \"g[ngx-charts-heat-map-cell]\", inputs: [\"fill\", \"x\", \"y\", \"width\", \"height\", \"data\", \"gradient\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatCellSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-heat-map-cell-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], colors: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], gradient: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass HeatMapComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.innerPadding = 8;\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.tooltipDisabled = false;\n this.activeEntries = [];\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.scaleType = ScaleType.Linear;\n }\n update() {\n super.update();\n this.formatDates();\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.valueDomain = this.getValueDomain();\n this.scaleType = getScaleType(this.valueDomain, false);\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.scaleType,\n legendPosition: this.legendPosition\n });\n if (this.scaleType === ScaleType.Linear) {\n let min = this.min;\n let max = this.max;\n if (!this.min) {\n min = Math.min(0, ...this.valueDomain);\n }\n if (!this.max) {\n max = Math.max(...this.valueDomain);\n }\n this.valueDomain = [min, max];\n }\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.rects = this.getRects();\n }\n getXDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.name)) {\n domain.push(group.name);\n }\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.name)) {\n domain.push(d.name);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n return domain;\n }\n /**\n * Converts the input to gap paddingInner in fraction\n * Supports the following inputs:\n * Numbers: 8\n * Strings: \"8\", \"8px\", \"8%\"\n * Arrays: [8,2], \"8,2\", \"[8,2]\"\n * Mixed: [8,\"2%\"], [\"8px\",\"2%\"], \"8,2%\", \"[8,2%]\"\n *\n * @memberOf HeatMapComponent\n */\n getDimension(value, index = 0, N, L) {\n if (typeof value === 'string') {\n value = value\n .replace('[', '')\n .replace(']', '')\n .replace('px', '')\n // tslint:disable-next-line: quotemark\n .replace(\"'\", '');\n if (value.includes(',')) {\n value = value.split(',');\n }\n }\n if (Array.isArray(value) && typeof index === 'number') {\n return this.getDimension(value[index], null, N, L);\n }\n if (typeof value === 'string' && value.includes('%')) {\n return +value.replace('%', '') / 100;\n }\n return N / (L / +value + 1);\n }\n getXScale() {\n const f = this.getDimension(this.innerPadding, 0, this.xDomain.length, this.dims.width);\n return scaleBand().rangeRound([0, this.dims.width]).domain(this.xDomain).paddingInner(f);\n }\n getYScale() {\n const f = this.getDimension(this.innerPadding, 1, this.yDomain.length, this.dims.height);\n return scaleBand().rangeRound([this.dims.height, 0]).domain(this.yDomain).paddingInner(f);\n }\n getRects() {\n const rects = [];\n this.xDomain.map(xVal => {\n this.yDomain.map(yVal => {\n rects.push({\n x: this.xScale(xVal),\n y: this.yScale(yVal),\n rx: 3,\n width: this.xScale.bandwidth(),\n height: this.yScale.bandwidth(),\n fill: 'rgba(200,200,200,0.03)'\n });\n });\n });\n return rects;\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, this.scaleType, this.valueDomain);\n }\n getLegendOptions() {\n return {\n scaleType: this.scaleType,\n domain: this.valueDomain,\n colors: this.scaleType === ScaleType.Ordinal ? this.colors : this.colors.scale,\n title: this.scaleType === ScaleType.Ordinal ? this.legendTitle : undefined,\n position: this.legendPosition\n };\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nHeatMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nHeatMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: HeatMapComponent, selector: \"ngx-charts-heat-map\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", innerPadding: \"innerPadding\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", tooltipDisabled: \"tooltipDisabled\", tooltipText: \"tooltipText\", min: \"min\", max: \"max\", activeEntries: \"activeEntries\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: HeatCellSeriesComponent, selector: \"g[ngx-charts-heat-map-cell-series]\", inputs: [\"data\", \"colors\", \"xScale\", \"yScale\", \"gradient\", \"tooltipDisabled\", \"tooltipText\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-heat-map', template: `\n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], innerPadding: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass HeatMapModule {\n}\nHeatMapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nHeatMapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapModule, declarations: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent], imports: [ChartCommonModule], exports: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent] });\nHeatMapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: HeatMapModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent],\n exports: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent]\n }]\n }] });\n\nclass LineComponent {\n constructor(element, platformId) {\n this.element = element;\n this.platformId = platformId;\n this.fill = 'none';\n this.animations = true;\n // @Output() select = new EventEmitter();\n this.initialized = false;\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n ngOnChanges(changes) {\n if (!this.initialized) {\n this.initialized = true;\n this.initialPath = this.path;\n }\n else {\n this.updatePathEl();\n }\n }\n updatePathEl() {\n const node = select(this.element.nativeElement).select('.line');\n if (this.animations) {\n node.transition().duration(750).attr('d', this.path);\n }\n else {\n node.attr('d', this.path);\n }\n }\n}\nLineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineComponent, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nLineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LineComponent, selector: \"g[ngx-charts-line]\", inputs: { path: \"path\", stroke: \"stroke\", data: \"data\", fill: \"fill\", animations: \"animations\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n strokeDasharray: 2000,\n strokeDashoffset: 2000\n }),\n animate(1000, style({\n strokeDashoffset: 0\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-line]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n strokeDasharray: 2000,\n strokeDashoffset: 2000\n }),\n animate(1000, style({\n strokeDashoffset: 0\n }))\n ])\n ])\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { path: [{\n type: Input\n }], stroke: [{\n type: Input\n }], data: [{\n type: Input\n }], fill: [{\n type: Input\n }], animations: [{\n type: Input\n }] } });\n\nclass LineSeriesComponent {\n constructor() {\n this.animations = true;\n this.barOrientation = BarOrientation;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradients();\n const data = this.sortData(this.data.series);\n const lineGen = this.getLineGenerator();\n this.path = lineGen(data) || '';\n const areaGen = this.getAreaGenerator();\n this.areaPath = areaGen(data) || '';\n if (this.hasRange) {\n const range = this.getRangeGenerator();\n this.outerPath = range(data) || '';\n }\n if (this.hasGradient) {\n this.stroke = this.gradientUrl;\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n if (max === min) {\n this.stroke = this.colors.getColor(max);\n }\n }\n else {\n this.stroke = this.colors.getColor(this.data.name);\n }\n }\n getLineGenerator() {\n return line()\n .x(d => {\n const label = d.name;\n let value;\n if (this.scaleType === ScaleType.Time) {\n value = this.xScale(label);\n }\n else if (this.scaleType === ScaleType.Linear) {\n value = this.xScale(Number(label));\n }\n else {\n value = this.xScale(label);\n }\n return value;\n })\n .y(d => this.yScale(d.value))\n .curve(this.curve);\n }\n getRangeGenerator() {\n return area()\n .x(d => {\n const label = d.name;\n let value;\n if (this.scaleType === ScaleType.Time) {\n value = this.xScale(label);\n }\n else if (this.scaleType === ScaleType.Linear) {\n value = this.xScale(Number(label));\n }\n else {\n value = this.xScale(label);\n }\n return value;\n })\n .y0(d => this.yScale(typeof d.min === 'number' ? d.min : d.value))\n .y1(d => this.yScale(typeof d.max === 'number' ? d.max : d.value))\n .curve(this.curve);\n }\n getAreaGenerator() {\n const xProperty = d => {\n const label = d.name;\n return this.xScale(label);\n };\n return area()\n .x(xProperty)\n .y0(() => this.yScale.range()[0])\n .y1(d => this.yScale(d.value))\n .curve(this.curve);\n }\n sortData(data) {\n if (this.scaleType === ScaleType.Linear) {\n data = sortLinear(data, 'name');\n }\n else if (this.scaleType === ScaleType.Time) {\n data = sortByTime(data, 'name');\n }\n else {\n data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n return data;\n }\n updateGradients() {\n if (this.colors.scaleType === ScaleType.Linear) {\n this.hasGradient = true;\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n this.areaGradientStops = this.colors.getLinearGradientStops(max);\n }\n else {\n this.hasGradient = false;\n this.gradientStops = undefined;\n this.areaGradientStops = undefined;\n }\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n}\nLineSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nLineSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LineSeriesComponent, selector: \"g[ngx-charts-line-series]\", inputs: { data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", hasRange: \"hasRange\", animations: \"animations\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }, { type: AreaComponent, selector: \"g[ngx-charts-area]\", inputs: [\"data\", \"path\", \"startingPath\", \"fill\", \"opacity\", \"startOpacity\", \"endOpacity\", \"gradient\", \"stops\", \"animations\"], outputs: [\"select\"] }, { type: LineComponent, selector: \"g[ngx-charts-line]\", inputs: [\"path\", \"stroke\", \"data\", \"fill\", \"animations\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-line-series]',\n template: `\n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], hasRange: [{\n type: Input\n }], animations: [{\n type: Input\n }] } });\n\nclass LineChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.showRefLines = false;\n this.showRefLabels = true;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === ScaleType.Time) {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === ScaleType.Linear) {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n if (d.min !== undefined) {\n this.hasRange = true;\n if (domain.indexOf(d.min) < 0) {\n domain.push(d.min);\n }\n }\n if (d.max !== undefined) {\n this.hasRange = true;\n if (domain.indexOf(d.max) < 0) {\n domain.push(d.max);\n }\n }\n }\n }\n const values = [...domain];\n if (!this.autoScale) {\n values.push(0);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === ScaleType.Time) {\n scale = scaleTime().range([0, width]).domain(domain);\n }\n else if (this.scaleType === ScaleType.Linear) {\n scale = scaleLinear().range([0, width]).domain(domain);\n if (this.roundDomains) {\n scale = scale.nice();\n }\n }\n else if (this.scaleType === ScaleType.Ordinal) {\n scale = scalePoint().range([0, width]).padding(0.1).domain(domain);\n }\n return scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data) {\n this.select.emit(data);\n }\n trackBy(index, item) {\n return `${item.name}`;\n }\n setColors() {\n let domain;\n if (this.schemeType === ScaleType.Ordinal) {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === ScaleType.Ordinal) {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n this.deactivateAll();\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LineChartComponent, selector: \"ngx-charts-line-chart\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", autoScale: \"autoScale\", timeline: \"timeline\", gradient: \"gradient\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", rangeFillOpacity: \"rangeFillOpacity\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", showRefLines: \"showRefLines\", referenceLines: \"referenceLines\", showRefLabels: \"showRefLabels\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, host: { listeners: { \"mouseleave\": \"hideCircles()\" } }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }, { propertyName: \"seriesTooltipTemplate\", first: true, predicate: [\"seriesTooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: XAxisComponent, selector: \"g[ngx-charts-x-axis]\", inputs: [\"xScale\", \"dims\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"showGridLines\", \"showLabel\", \"labelText\", \"ticks\", \"xAxisTickCount\", \"xOrient\", \"xAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: LineSeriesComponent, selector: \"g[ngx-charts-line-series]\", inputs: [\"data\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"curve\", \"activeEntries\", \"rangeFillOpacity\", \"hasRange\", \"animations\"] }, { type: TooltipArea, selector: \"g[ngx-charts-tooltip-area]\", inputs: [\"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"showPercentage\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"hover\"] }, { type: CircleSeriesComponent, selector: \"g[ngx-charts-circle-series]\", inputs: [\"data\", \"type\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"visibleValue\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: Timeline, selector: \"g[ngx-charts-timeline]\", inputs: [\"view\", \"results\", \"scheme\", \"customColors\", \"legend\", \"autoScale\", \"scaleType\", \"height\"], outputs: [\"select\", \"onDomainChange\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-line-chart', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nclass LineChartModule {\n}\nLineChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLineChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartModule, declarations: [LineComponent, LineChartComponent, LineSeriesComponent], imports: [ChartCommonModule], exports: [LineComponent, LineChartComponent, LineSeriesComponent] });\nLineChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LineChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [LineComponent, LineChartComponent, LineSeriesComponent],\n exports: [LineComponent, LineChartComponent, LineSeriesComponent]\n }]\n }] });\n\nclass PieLabelComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.animations = true;\n this.labelTrim = true;\n this.labelTrimSize = 10;\n this.trimLabel = trimLabel;\n }\n ngOnChanges(changes) {\n this.setTransforms();\n this.update();\n }\n setTransforms() {\n if (isPlatformServer(this.platformId)) {\n this.styleTransform = `translate3d(${this.textX}px,${this.textY}px, 0)`;\n this.attrTransform = `translate(${this.textX},${this.textY})`;\n this.textTransition = !this.animations ? null : 'transform 0.75s';\n }\n else {\n const isIE = /(edge|msie|trident)/i.test(navigator.userAgent);\n this.styleTransform = isIE ? null : `translate3d(${this.textX}px,${this.textY}px, 0)`;\n this.attrTransform = !isIE ? null : `translate(${this.textX},${this.textY})`;\n this.textTransition = isIE || !this.animations ? null : 'transform 0.75s';\n }\n }\n update() {\n let startRadius = this.radius;\n if (this.explodeSlices) {\n startRadius = (this.radius * this.value) / this.max;\n }\n const innerArc = arc().innerRadius(startRadius).outerRadius(startRadius);\n // Calculate innerPos then scale outer position to match label position\n const innerPos = innerArc.centroid(this.data);\n let scale = this.data.pos[1] / innerPos[1];\n if (this.data.pos[1] === 0 || innerPos[1] === 0) {\n scale = 1;\n }\n const outerPos = [scale * innerPos[0], scale * innerPos[1]];\n this.line = `M${innerPos}L${outerPos}L${this.data.pos}`;\n }\n get textX() {\n return this.data.pos[0];\n }\n get textY() {\n return this.data.pos[1];\n }\n textAnchor() {\n return this.midAngle(this.data) < Math.PI ? TextAnchor.Start : TextAnchor.End;\n }\n midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n}\nPieLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieLabelComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nPieLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieLabelComponent, selector: \"g[ngx-charts-pie-label]\", inputs: { data: \"data\", radius: \"radius\", label: \"label\", color: \"color\", max: \"max\", value: \"value\", explodeSlices: \"explodeSlices\", animations: \"animations\", labelTrim: \"labelTrim\", labelTrimSize: \"labelTrimSize\" }, usesOnChanges: true, ngImport: i0, template: `\n {{ label }}\n \n \n {{ labelTrim ? trimLabel(label, labelTrimSize) : label }}\n \n \n
\n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieLabelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-label]',\n template: `\n {{ label }}\n \n \n {{ labelTrim ? trimLabel(label, labelTrimSize) : label }}\n \n \n
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { data: [{\n type: Input\n }], radius: [{\n type: Input\n }], label: [{\n type: Input\n }], color: [{\n type: Input\n }], max: [{\n type: Input\n }], value: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], animations: [{\n type: Input\n }], labelTrim: [{\n type: Input\n }], labelTrimSize: [{\n type: Input\n }] } });\n\nclass PolarSeriesComponent {\n constructor() {\n this.tooltipDisabled = false;\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.circleRadius = 3;\n this.barOrientation = BarOrientation;\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradients();\n const line = this.getLineGenerator();\n const data = this.sortData(this.data.series);\n const seriesName = this.data.name;\n const linearScaleType = this.colors.scaleType === ScaleType.Linear;\n const min = this.yScale.domain()[0];\n this.seriesColor = this.colors.getColor(linearScaleType ? min : seriesName);\n this.path = line(data) || '';\n this.circles = data.map(d => {\n const a = this.getAngle(d);\n const r = this.getRadius(d);\n const value = d.value;\n const color = this.colors.getColor(linearScaleType ? Math.abs(value) : seriesName);\n const cData = Object.assign({}, d, {\n series: seriesName,\n value,\n name: d.name\n });\n return {\n data: cData,\n cx: r * Math.sin(a),\n cy: -r * Math.cos(a),\n value,\n color,\n label: d.name\n };\n });\n this.active = this.isActive(this.data);\n this.inactive = this.isInactive(this.data);\n this.tooltipText = this.tooltipText || (c => this.defaultTooltipText(c));\n }\n getAngle(d) {\n const label = d.name;\n if (this.scaleType === ScaleType.Time) {\n return this.xScale(label);\n }\n else if (this.scaleType === ScaleType.Linear) {\n return this.xScale(Number(label));\n }\n return this.xScale(label);\n }\n getRadius(d) {\n return this.yScale(d.value);\n }\n getLineGenerator() {\n return lineRadial()\n .angle(d => this.getAngle(d))\n .radius(d => this.getRadius(d))\n .curve(this.curve);\n }\n sortData(data) {\n if (this.scaleType === ScaleType.Linear) {\n return sortLinear(data, 'name');\n }\n else if (this.scaleType === ScaleType.Time) {\n return sortByTime(data, 'name');\n }\n return sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n defaultTooltipText({ label, value }) {\n return `\n ${escapeLabel(this.data.name)} • ${escapeLabel(label)}\n ${value.toLocaleString()}\n `;\n }\n updateGradients() {\n this.hasGradient = this.gradient || this.colors.scaleType === ScaleType.Linear;\n if (!this.hasGradient) {\n return;\n }\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n if (this.colors.scaleType === ScaleType.Linear) {\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n }\n else {\n this.gradientStops = undefined;\n }\n }\n}\nPolarSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nPolarSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PolarSeriesComponent, selector: \"g[ngx-charts-polar-series]\", inputs: { name: \"name\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", tooltipDisabled: \"tooltipDisabled\", tooltipText: \"tooltipText\", gradient: \"gradient\", tooltipTemplate: \"tooltipTemplate\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgRadialGradientComponent, selector: \"g[ngx-charts-svg-radial-gradient]\", inputs: [\"color\", \"name\", \"startOpacity\", \"endOpacity\", \"cx\", \"cy\", \"stops\"] }, { type: LineComponent, selector: \"g[ngx-charts-line]\", inputs: [\"path\", \"stroke\", \"data\", \"fill\", \"animations\"] }, { type: CircleComponent, selector: \"g[ngx-charts-circle]\", inputs: [\"cx\", \"cy\", \"r\", \"fill\", \"stroke\", \"data\", \"classNames\", \"circleOpacity\", \"pointerEvents\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-polar-series]',\n template: `\n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { name: [{\n type: Input\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], gradient: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nconst twoPI = 2 * Math.PI;\nclass PolarChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.showGridLines = true;\n this.curve = curveCardinalClosed;\n this.activeEntries = [];\n this.rangeFillOpacity = 0.15;\n this.trimYAxisTicks = true;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.showSeriesOnHover = true;\n this.gradient = false;\n this.yAxisMinScale = 0;\n this.labelTrim = true;\n this.labelTrimSize = 10;\n this.wrapTicks = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n // series: any; // ???\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.orientation = Orientation;\n this.isSSR = false;\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.isSSR = true;\n }\n }\n update() {\n super.update();\n this.setDims();\n this.setScales();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.setTicks();\n }\n setDims() {\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n const halfWidth = Math.floor(this.dims.width / 2);\n const halfHeight = Math.floor(this.dims.height / 2);\n const outerRadius = (this.outerRadius = Math.min(halfHeight / 1.5, halfWidth / 1.5));\n const yOffset = Math.max(0, halfHeight - outerRadius);\n this.yAxisDims = {\n ...this.dims,\n width: halfWidth\n };\n this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n this.transformYAxis = `translate(0, ${yOffset})`;\n this.labelOffset = this.dims.height + 40;\n this.transformPlot = `translate(${halfWidth}, ${halfHeight})`;\n }\n setScales() {\n const xValues = this.getXValues();\n this.scaleType = getScaleType(xValues);\n this.xDomain = this.filteredDomain || this.getXDomain(xValues);\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, twoPI);\n this.yScale = this.getYScale(this.yDomain, this.outerRadius);\n this.yAxisScale = this.getYScale(this.yDomain.reverse(), this.outerRadius);\n }\n setTicks() {\n let tickFormat;\n if (this.xAxisTickFormatting) {\n tickFormat = this.xAxisTickFormatting;\n }\n else if (this.xScale.tickFormat) {\n tickFormat = this.xScale.tickFormat.apply(this.xScale, [5]);\n }\n else {\n tickFormat = d => {\n if (isDate(d)) {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n const outerRadius = this.outerRadius;\n const s = 1.1;\n this.thetaTicks = this.xDomain.map(d => {\n const startAngle = this.xScale(d);\n const dd = s * outerRadius * (startAngle > Math.PI ? -1 : 1);\n const label = tickFormat(d);\n const startPos = [outerRadius * Math.sin(startAngle), -outerRadius * Math.cos(startAngle)];\n const pos = [dd, s * startPos[1]];\n return {\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle: startAngle,\n value: outerRadius,\n label,\n startPos,\n pos\n };\n });\n const minDistance = 10;\n /* from pie chart, abstract out -*/\n for (let i = 0; i < this.thetaTicks.length - 1; i++) {\n const a = this.thetaTicks[i];\n for (let j = i + 1; j < this.thetaTicks.length; j++) {\n const b = this.thetaTicks[j];\n // if they're on the same side\n if (b.pos[0] * a.pos[0] > 0) {\n // if they're overlapping\n const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n if (o > 0) {\n // push the second up or down\n b.pos[1] += Math.sign(b.pos[0]) * o;\n }\n }\n }\n }\n this.radiusTicks = this.yAxisScale.ticks(Math.floor(this.dims.height / 50)).map(d => this.yScale(d));\n }\n getXValues() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.name)) {\n values.push(d.name);\n }\n }\n }\n return values;\n }\n getXDomain(values = this.getXValues()) {\n if (this.scaleType === ScaleType.Time) {\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min, max];\n }\n else if (this.scaleType === ScaleType.Linear) {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min, max];\n }\n return values;\n }\n getYValues() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n if (d.min !== undefined) {\n if (domain.indexOf(d.min) < 0) {\n domain.push(d.min);\n }\n }\n if (d.max !== undefined) {\n if (domain.indexOf(d.max) < 0) {\n domain.push(d.max);\n }\n }\n }\n }\n return domain;\n }\n getYDomain(domain = this.getYValues()) {\n let min = Math.min(...domain);\n const max = Math.max(this.yAxisMinScale, ...domain);\n min = Math.max(0, min);\n if (!this.autoScale) {\n min = Math.min(0, min);\n }\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n switch (this.scaleType) {\n case ScaleType.Time:\n return scaleTime().range([0, width]).domain(domain);\n case ScaleType.Linear: {\n const scale = scaleLinear().range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n default:\n return scalePoint()\n .range([0, width - twoPI / domain.length])\n .padding(0)\n .domain(domain);\n }\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([0, height]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n setColors() {\n const domain = this.schemeType === ScaleType.Ordinal ? this.seriesDomain : this.yDomain.reverse();\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n if (this.schemeType === ScaleType.Ordinal) {\n return {\n scaleType: this.schemeType,\n colors: this.colors,\n domain: this.seriesDomain,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n return {\n scaleType: this.schemeType,\n colors: this.colors.scale,\n domain: this.yDomain,\n title: undefined,\n position: this.legendPosition\n };\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = this.showSeriesOnHover ? [item, ...this.activeEntries] : this.activeEntries;\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n trackBy(index, item) {\n return `${item.name}`;\n }\n}\nPolarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nPolarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PolarChartComponent, selector: \"ngx-charts-polar-chart\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", autoScale: \"autoScale\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", schemeType: \"schemeType\", rangeFillOpacity: \"rangeFillOpacity\", trimYAxisTicks: \"trimYAxisTicks\", maxYAxisTickLength: \"maxYAxisTickLength\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", showSeriesOnHover: \"showSeriesOnHover\", gradient: \"gradient\", yAxisMinScale: \"yAxisMinScale\", labelTrim: \"labelTrim\", labelTrimSize: \"labelTrimSize\", wrapTicks: \"wrapTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-label{font-size:11px}.pie-label.animation{animation:.75s ease-in fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{animation:3s linear drawOut;transition:d .75s}@keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\\n\", \".polar-chart .polar-chart-background{fill:none}.polar-chart .radial-gridline-path{stroke-dasharray:10 10;fill:none}.polar-chart .pie-label-line{stroke:#2f3646}.polar-charts-series .polar-series-area,.polar-series-path{pointer-events:none}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: PieLabelComponent, selector: \"g[ngx-charts-pie-label]\", inputs: [\"data\", \"radius\", \"label\", \"color\", \"max\", \"value\", \"explodeSlices\", \"animations\", \"labelTrim\", \"labelTrimSize\"] }, { type: YAxisComponent, selector: \"g[ngx-charts-y-axis]\", inputs: [\"yScale\", \"dims\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"showGridLines\", \"showLabel\", \"labelText\", \"yAxisTickCount\", \"yOrient\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"yAxisOffset\", \"wrapTicks\"], outputs: [\"dimensionsChanged\"] }, { type: AxisLabelComponent, selector: \"g[ngx-charts-axis-label]\", inputs: [\"orient\", \"label\", \"offset\", \"width\", \"height\"] }, { type: PolarSeriesComponent, selector: \"g[ngx-charts-polar-series]\", inputs: [\"name\", \"data\", \"xScale\", \"yScale\", \"colors\", \"scaleType\", \"curve\", \"activeEntries\", \"rangeFillOpacity\", \"tooltipDisabled\", \"tooltipText\", \"gradient\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-polar-chart', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ], styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-label{font-size:11px}.pie-label.animation{animation:.75s ease-in fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{animation:3s linear drawOut;transition:d .75s}@keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\\n\", \".polar-chart .polar-chart-background{fill:none}.polar-chart .radial-gridline-path{stroke-dasharray:10 10;fill:none}.polar-chart .pie-label-line{stroke:#2f3646}.polar-charts-series .polar-series-area,.polar-series-path{pointer-events:none}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showSeriesOnHover: [{\n type: Input\n }], gradient: [{\n type: Input\n }], yAxisMinScale: [{\n type: Input\n }], labelTrim: [{\n type: Input\n }], labelTrimSize: [{\n type: Input\n }], wrapTicks: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass PieArcComponent {\n constructor(element) {\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.cornerRadius = 0;\n this.explodeSlices = false;\n this.gradient = false;\n this.animate = true;\n this.pointerEvents = true;\n this.isActive = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dblclick = new EventEmitter();\n this.barOrientation = BarOrientation;\n this.initialized = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n getGradient() {\n return this.gradient ? this.gradientFill : this.fill;\n }\n getPointerEvents() {\n return this.pointerEvents ? 'auto' : 'none';\n }\n update() {\n const calc = this.calculateArc();\n this.startOpacity = 0.5;\n this.radialGradientId = 'linearGrad' + id().toString();\n this.gradientFill = `url(#${this.radialGradientId})`;\n if (this.animate) {\n if (this.initialized) {\n this.updateAnimation();\n }\n else {\n this.loadAnimation();\n this.initialized = true;\n }\n }\n else {\n this.path = calc.startAngle(this.startAngle).endAngle(this.endAngle)();\n }\n }\n calculateArc() {\n let outerRadius = this.outerRadius;\n if (this.explodeSlices && this.innerRadius === 0) {\n outerRadius = (this.outerRadius * this.value) / this.max;\n }\n return arc().innerRadius(this.innerRadius).outerRadius(outerRadius).cornerRadius(this.cornerRadius);\n }\n loadAnimation() {\n const node = select(this.element)\n .selectAll('.arc')\n .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n const calc = this.calculateArc();\n node\n .transition()\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const copyOfD = Object.assign({}, d);\n copyOfD.endAngle = copyOfD.startAngle;\n const interpolater = interpolate(copyOfD, copyOfD);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n })\n .transition()\n .duration(750)\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const interpolater = interpolate(this._current, d);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n });\n }\n updateAnimation() {\n const node = select(this.element)\n .selectAll('.arc')\n .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n const calc = this.calculateArc();\n node\n .transition()\n .duration(750)\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const interpolater = interpolate(this._current, d);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n });\n }\n onClick() {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(() => this.select.emit(this.data), 200);\n }\n onDblClick(event) {\n event.preventDefault();\n event.stopPropagation();\n clearTimeout(this._timeout);\n this.dblclick.emit({\n data: this.data,\n nativeEvent: event\n });\n }\n}\nPieArcComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieArcComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nPieArcComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieArcComponent, selector: \"g[ngx-charts-pie-arc]\", inputs: { fill: \"fill\", startAngle: \"startAngle\", endAngle: \"endAngle\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", cornerRadius: \"cornerRadius\", value: \"value\", max: \"max\", data: \"data\", explodeSlices: \"explodeSlices\", gradient: \"gradient\", animate: \"animate\", pointerEvents: \"pointerEvents\", isActive: \"isActive\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dblclick: \"dblclick\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: SvgRadialGradientComponent, selector: \"g[ngx-charts-svg-radial-gradient]\", inputs: [\"color\", \"name\", \"startOpacity\", \"endOpacity\", \"cx\", \"cy\", \"stops\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieArcComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-arc]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fill: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], endAngle: [{\n type: Input\n }], innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], cornerRadius: [{\n type: Input\n }], value: [{\n type: Input\n }], max: [{\n type: Input\n }], data: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animate: [{\n type: Input\n }], pointerEvents: [{\n type: Input\n }], isActive: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dblclick: [{\n type: Output\n }] } });\n\nclass PieSeriesComponent {\n constructor() {\n this.series = [];\n this.innerRadius = 60;\n this.outerRadius = 80;\n this.trimLabels = true;\n this.maxLabelLength = 10;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dblclick = new EventEmitter();\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n const pieGenerator = pie()\n .value(d => d.value)\n .sort(null);\n const arcData = pieGenerator(this.series);\n this.max = max(arcData, d => {\n return d.value;\n });\n this.data = this.calculateLabelPositions(arcData);\n this.tooltipText = this.tooltipText || this.defaultTooltipText;\n }\n midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n outerArc() {\n const factor = 1.5;\n return arc()\n .innerRadius(this.outerRadius * factor)\n .outerRadius(this.outerRadius * factor);\n }\n calculateLabelPositions(pieData) {\n const factor = 1.5;\n const minDistance = 10;\n const labelPositions = pieData;\n labelPositions.forEach(d => {\n d.pos = this.outerArc().centroid(d);\n d.pos[0] = factor * this.outerRadius * (this.midAngle(d) < Math.PI ? 1 : -1);\n });\n for (let i = 0; i < labelPositions.length - 1; i++) {\n const a = labelPositions[i];\n if (!this.labelVisible(a)) {\n continue;\n }\n for (let j = i + 1; j < labelPositions.length; j++) {\n const b = labelPositions[j];\n if (!this.labelVisible(b)) {\n continue;\n }\n // if they're on the same side\n if (b.pos[0] * a.pos[0] > 0) {\n // if they're overlapping\n const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n if (o > 0) {\n // push the second up or down\n b.pos[1] += Math.sign(b.pos[0]) * o;\n }\n }\n }\n }\n return labelPositions;\n }\n labelVisible(myArc) {\n return this.showLabels && myArc.endAngle - myArc.startAngle > Math.PI / 30;\n }\n getTooltipTitle(a) {\n return this.tooltipTemplate ? undefined : this.tooltipText(a);\n }\n labelText(myArc) {\n if (this.labelFormatting) {\n return this.labelFormatting(myArc.data.name);\n }\n return this.label(myArc);\n }\n label(myArc) {\n return formatLabel(myArc.data.name);\n }\n defaultTooltipText(myArc) {\n const label = this.label(myArc);\n const val = formatLabel(myArc.data.value);\n return `\n ${escapeLabel(label)}\n ${val}\n `;\n }\n color(myArc) {\n return this.colors.getColor(this.label(myArc));\n }\n trackBy(index, item) {\n return item.data.name;\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n}\nPieSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nPieSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieSeriesComponent, selector: \"g[ngx-charts-pie-series]\", inputs: { colors: \"colors\", series: \"series\", dims: \"dims\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", explodeSlices: \"explodeSlices\", showLabels: \"showLabels\", gradient: \"gradient\", activeEntries: \"activeEntries\", labelFormatting: \"labelFormatting\", trimLabels: \"trimLabels\", maxLabelLength: \"maxLabelLength\", tooltipText: \"tooltipText\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dblclick: \"dblclick\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: PieLabelComponent, selector: \"g[ngx-charts-pie-label]\", inputs: [\"data\", \"radius\", \"label\", \"color\", \"max\", \"value\", \"explodeSlices\", \"animations\", \"labelTrim\", \"labelTrimSize\"] }, { type: PieArcComponent, selector: \"g[ngx-charts-pie-arc]\", inputs: [\"fill\", \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"value\", \"max\", \"data\", \"explodeSlices\", \"gradient\", \"animate\", \"pointerEvents\", \"isActive\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dblclick\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-series]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { colors: [{\n type: Input\n }], series: [{\n type: Input\n }], dims: [{\n type: Input\n }], innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], showLabels: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], trimLabels: [{\n type: Input\n }], maxLabelLength: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dblclick: [{\n type: Output\n }] } });\n\nclass AdvancedPieChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.label = 'Total';\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [20, 20, 20, 20];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: (this.width * 4) / 12.0,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.setColors();\n const xOffset = this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.legendWidth = this.width - this.dims.width - this.margin[1];\n this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2.5;\n this.innerRadius = this.outerRadius * 0.75;\n this.transform = `translate(${xOffset} , ${yOffset})`;\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nAdvancedPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AdvancedPieChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nAdvancedPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: AdvancedPieChartComponent, selector: \"ngx-charts-advanced-pie-chart\", inputs: { gradient: \"gradient\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", tooltipText: \"tooltipText\", label: \"label\", valueFormatting: \"valueFormatting\", nameFormatting: \"nameFormatting\", percentageFormatting: \"percentageFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n
\n
\n \n \n \n \n \n
\n
\n \n \n
\n
\n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".advanced-pie{display:inline-block;float:left}.advanced-pie-legend-wrapper{display:inline-block}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: PieSeriesComponent, selector: \"g[ngx-charts-pie-series]\", inputs: [\"colors\", \"series\", \"dims\", \"innerRadius\", \"outerRadius\", \"explodeSlices\", \"showLabels\", \"gradient\", \"activeEntries\", \"labelFormatting\", \"trimLabels\", \"maxLabelLength\", \"tooltipText\", \"tooltipDisabled\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dblclick\"] }, { type: AdvancedLegendComponent, selector: \"ngx-charts-advanced-legend\", inputs: [\"width\", \"data\", \"colors\", \"label\", \"animations\", \"valueFormatting\", \"labelFormatting\", \"percentageFormatting\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: AdvancedPieChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-advanced-pie-chart', template: `\n
\n
\n \n \n \n \n \n
\n
\n \n \n
\n
\n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".advanced-pie{display:inline-block;float:left}.advanced-pie-legend-wrapper{display:inline-block}\\n\"] }]\n }], propDecorators: { gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], label: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], valueFormatting: [{\n type: Input\n }], nameFormatting: [{\n type: Input\n }], percentageFormatting: [{\n type: Input\n }] } });\n\nclass PieChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.labels = false;\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.explodeSlices = false;\n this.doughnut = false;\n this.arcWidth = 0.25;\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.trimLabels = true;\n this.maxLabelLength = 10;\n this.dblclick = new EventEmitter();\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n update() {\n super.update();\n if (this.labels && this.hasNoOptionalMarginsSet()) {\n this.margins = [30, 80, 30, 80];\n }\n else if (!this.labels && this.hasNoOptionalMarginsSet()) {\n // default value for margins\n this.margins = [20, 20, 20, 20];\n }\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margins,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n const xOffset = this.margins[3] + this.dims.width / 2;\n const yOffset = this.margins[0] + this.dims.height / 2;\n this.translation = `translate(${xOffset}, ${yOffset})`;\n this.outerRadius = Math.min(this.dims.width, this.dims.height);\n if (this.labels) {\n // make room for labels\n this.outerRadius /= 3;\n }\n else {\n this.outerRadius /= 2;\n }\n this.innerRadius = 0;\n if (this.doughnut) {\n this.innerRadius = this.outerRadius * (1 - this.arcWidth);\n }\n this.domain = this.getDomain();\n // sort data according to domain\n this.data = this.results.sort((a, b) => {\n return this.domain.indexOf(a.name) - this.domain.indexOf(b.name);\n });\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n getLegendOptions() {\n return {\n scaleType: ScaleType.Ordinal,\n domain: this.domain,\n colors: this.colors,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n hasNoOptionalMarginsSet() {\n return !this.margins || this.margins.length <= 0;\n }\n}\nPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieChartComponent, selector: \"ngx-charts-pie-chart\", inputs: { labels: \"labels\", legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", explodeSlices: \"explodeSlices\", doughnut: \"doughnut\", arcWidth: \"arcWidth\", gradient: \"gradient\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", labelFormatting: \"labelFormatting\", trimLabels: \"trimLabels\", maxLabelLength: \"maxLabelLength\", tooltipText: \"tooltipText\", margins: \"margins\" }, outputs: { dblclick: \"dblclick\", select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-label{font-size:11px}.pie-label.animation{animation:.75s ease-in fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{animation:3s linear drawOut;transition:d .75s}@keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: PieSeriesComponent, selector: \"g[ngx-charts-pie-series]\", inputs: [\"colors\", \"series\", \"dims\", \"innerRadius\", \"outerRadius\", \"explodeSlices\", \"showLabels\", \"gradient\", \"activeEntries\", \"labelFormatting\", \"trimLabels\", \"maxLabelLength\", \"tooltipText\", \"tooltipDisabled\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dblclick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-pie-chart', template: `\n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-label{font-size:11px}.pie-label.animation{animation:.75s ease-in fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{animation:3s linear drawOut;transition:d .75s}@keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\\n\"] }]\n }], propDecorators: { labels: [{\n type: Input\n }], legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], doughnut: [{\n type: Input\n }], arcWidth: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], trimLabels: [{\n type: Input\n }], maxLabelLength: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], dblclick: [{\n type: Output\n }], margins: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nfunction gridSize(dims, len, minWidth) {\n let rows = 1;\n let cols = len;\n const width = dims.width;\n if (width > minWidth) {\n while (width / cols < minWidth) {\n rows += 1;\n cols = Math.ceil(len / rows);\n }\n }\n return [cols, rows];\n}\nfunction gridLayout(dims, data, minWidth, designatedTotal) {\n const xScale = scaleBand();\n const yScale = scaleBand();\n const width = dims.width;\n const height = dims.height;\n const [columns, rows] = gridSize(dims, data.length, minWidth);\n const xDomain = [];\n const yDomain = [];\n for (let i = 0; i < rows; i++) {\n yDomain.push(i);\n }\n for (let i = 0; i < columns; i++) {\n xDomain.push(i);\n }\n xScale.domain(xDomain);\n yScale.domain(yDomain);\n xScale.rangeRound([0, width], 0.1);\n yScale.rangeRound([0, height], 0.1);\n const res = [];\n const total = designatedTotal ? designatedTotal : getTotal(data);\n const cardWidth = xScale.bandwidth();\n const cardHeight = yScale.bandwidth();\n for (let i = 0; i < data.length; i++) {\n res[i] = {};\n res[i].data = {\n name: data[i] ? data[i].name : '',\n value: data[i] ? data[i].value : undefined,\n extra: data[i] ? data[i].extra : undefined,\n label: data[i] ? data[i].label : ''\n };\n res[i].x = xScale(i % columns);\n res[i].y = yScale(Math.floor(i / columns));\n res[i].width = cardWidth;\n res[i].height = cardHeight;\n res[i].data.percent = total > 0 ? res[i].data.value / total : 0;\n res[i].data.total = total;\n }\n return res;\n}\nfunction getTotal(results) {\n return results.map(d => (d ? d.value : 0)).reduce((sum, val) => sum + val, 0);\n}\n\nclass PieGridSeriesComponent {\n constructor(element) {\n this.innerRadius = 70;\n this.outerRadius = 80;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.layout = pie()\n .value(d => d.data.value)\n .sort(null);\n this.arcs = this.getArcs();\n }\n getArcs() {\n return this.layout(this.data).map((arc, index) => {\n const label = arc.data.data.name;\n const other = arc.data.data.other;\n if (index === 0) {\n arc.startAngle = 0;\n }\n const color = this.colors(label);\n return {\n data: arc.data.data,\n class: 'arc ' + 'arc' + index,\n fill: color,\n startAngle: other ? 0 : arc.startAngle,\n endAngle: arc.endAngle,\n animate: this.animations && !other,\n pointerEvents: !other\n };\n });\n }\n onClick(data) {\n this.select.emit(this.data[0].data);\n }\n trackBy(index, item) {\n return item.data.name;\n }\n label(arc) {\n return arc.data.name;\n }\n color(arc) {\n return this.colors(this.label(arc));\n }\n}\nPieGridSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieGridSeriesComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nPieGridSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieGridSeriesComponent, selector: \"g[ngx-charts-pie-grid-series]\", inputs: { colors: \"colors\", data: \"data\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: PieArcComponent, selector: \"g[ngx-charts-pie-arc]\", inputs: [\"fill\", \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"value\", \"max\", \"data\", \"explodeSlices\", \"gradient\", \"animate\", \"pointerEvents\", \"isActive\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dblclick\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieGridSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-grid-series]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { colors: [{\n type: Input\n }], data: [{\n type: Input\n }], innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass PieGridComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.tooltipDisabled = false;\n this.label = 'Total';\n this.minWidth = 150;\n this.activeEntries = [];\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [20, 20, 20, 20];\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.data = gridLayout(this.dims, this.results, this.minWidth, this.designatedTotal);\n this.transform = `translate(${this.margin[3]} , ${this.margin[0]})`;\n this.series = this.getSeries();\n this.setColors();\n this.tooltipText = this.tooltipText || this.defaultTooltipText;\n }\n defaultTooltipText({ data }) {\n const label = trimLabel(formatLabel(data.name));\n const val = data.value.toLocaleString();\n return `\n ${label}\n ${val}\n `;\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n getSeries() {\n const total = this.designatedTotal ? this.designatedTotal : this.getTotal();\n return this.data.map(d => {\n const baselineLabelHeight = 20;\n const padding = 10;\n const name = d.data.name;\n const label = formatLabel(name);\n const value = d.data.value;\n const radius = min([d.width - padding, d.height - baselineLabelHeight]) / 2 - 5;\n const innerRadius = radius * 0.9;\n let count = 0;\n const colors = () => {\n count += 1;\n if (count === 1) {\n return 'rgba(100,100,100,0.3)';\n }\n else {\n return this.colorScale.getColor(label);\n }\n };\n const xPos = d.x + (d.width - padding) / 2;\n const yPos = d.y + (d.height - baselineLabelHeight) / 2;\n return {\n transform: `translate(${xPos}, ${yPos})`,\n colors,\n innerRadius,\n outerRadius: radius,\n name,\n label: trimLabel(label),\n total: value,\n value,\n percent: format('.1%')(d.data.percent),\n data: [\n d,\n {\n data: {\n other: true,\n value: total - value,\n name: d.data.name\n }\n }\n ]\n };\n });\n }\n getTotal() {\n return this.results.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colorScale = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nPieGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieGridComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nPieGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: PieGridComponent, selector: \"ngx-charts-pie-grid\", inputs: { designatedTotal: \"designatedTotal\", tooltipDisabled: \"tooltipDisabled\", tooltipText: \"tooltipText\", label: \"label\", minWidth: \"minWidth\", activeEntries: \"activeEntries\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ series.percent.toLocaleString() }}\n \n \n {{ series.label }}\n \n \n \n {{ label }}: {{ series.total.toLocaleString() }}\n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-grid .arc1{opacity:.4}.pie-grid .percent-label{font-size:16px;font-weight:400}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: PieGridSeriesComponent, selector: \"g[ngx-charts-pie-grid-series]\", inputs: [\"colors\", \"data\", \"innerRadius\", \"outerRadius\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: CountUpDirective, selector: \"[ngx-charts-count-up]\", inputs: [\"countDuration\", \"countPrefix\", \"countSuffix\", \"valueFormatting\", \"countDecimals\", \"countTo\", \"countFrom\"], outputs: [\"countChange\", \"countFinish\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieGridComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-pie-grid', template: `\n \n \n \n \n \n \n {{ series.percent.toLocaleString() }}\n \n \n {{ series.label }}\n \n \n \n {{ label }}: {{ series.total.toLocaleString() }}\n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".pie-grid .arc1{opacity:.4}.pie-grid .percent-label{font-size:16px;font-weight:400}\\n\"] }]\n }], propDecorators: { designatedTotal: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], label: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass PieChartModule {\n}\nPieChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPieChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartModule, declarations: [AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent], imports: [ChartCommonModule], exports: [AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent] });\nPieChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PieChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [\n AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent\n ],\n exports: [\n AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent\n ]\n }]\n }] });\n\nclass PolarChartModule {\n}\nPolarChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPolarChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartModule, declarations: [PolarChartComponent, PolarSeriesComponent], imports: [ChartCommonModule, PieChartModule, LineChartModule], exports: [PolarChartComponent, PolarSeriesComponent] });\nPolarChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartModule, imports: [[ChartCommonModule, PieChartModule, LineChartModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: PolarChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule, PieChartModule, LineChartModule],\n declarations: [PolarChartComponent, PolarSeriesComponent],\n exports: [PolarChartComponent, PolarSeriesComponent]\n }]\n }] });\n\nfunction calculateTextWidth(fontFamilyKey, text, defaultWidth = 8) {\n return text.split('').reduce((acc, curr) => {\n const width = fontFamilyKey[curr] || defaultWidth;\n return acc + width;\n }, 0);\n}\n\nconst VERDANA_FONT_WIDTHS_16_PX = {\n '0': 10,\n '1': 10,\n '2': 10,\n '3': 10,\n '4': 10,\n '5': 10,\n '6': 10,\n '7': 10,\n '8': 10,\n '9': 10,\n A: 11,\n B: 11,\n C: 11,\n D: 12,\n E: 10,\n F: 9,\n G: 12,\n H: 12,\n I: 7,\n J: 7,\n K: 11,\n L: 9,\n M: 13,\n N: 12,\n O: 13,\n P: 10,\n Q: 13,\n R: 11,\n S: 11,\n T: 10,\n U: 12,\n V: 11,\n W: 16,\n X: 11,\n Y: 10,\n Z: 11,\n a: 10,\n b: 10,\n c: 8,\n d: 10,\n e: 10,\n f: 6,\n g: 10,\n h: 10,\n i: 4,\n j: 6,\n k: 9,\n l: 4,\n m: 16,\n n: 10,\n o: 10,\n p: 10,\n q: 10,\n r: 7,\n s: 8,\n t: 6,\n u: 10,\n v: 9,\n w: 13,\n x: 9,\n y: 9,\n z: 8,\n '!': 6,\n '@': 16,\n '#': 13,\n $: 10,\n '%': 17,\n '^': 13,\n '&': 12,\n '*': 10,\n '(': 7,\n ')': 7,\n _: 10,\n '-': 7,\n '+': 13,\n '=': 13,\n ',': 6,\n '.': 6,\n '/': 7,\n \"'\": 4,\n ':': 7,\n '|': 7,\n '?': 9,\n ';': 7,\n '<': 13,\n '>': 13\n};\n\nclass CardComponent {\n constructor(element, cd, zone, platformId) {\n this.cd = cd;\n this.zone = zone;\n this.platformId = platformId;\n this.animations = true;\n this.select = new EventEmitter();\n this.value = '';\n this.textFontSize = 12;\n this.textTransform = '';\n this.initialized = false;\n this.bandHeight = 10;\n this.textPadding = [10, 20, 5, 20];\n this.labelFontSize = 15;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.scaleTextSSR();\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n cancelAnimationFrame(this.animationReq);\n }\n }\n update() {\n this.zone.run(() => {\n const hasValue = this.data && typeof this.data.value !== 'undefined';\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const labelFormatting = this.labelFormatting || (card => escapeLabel(trimLabel(card.label, 55)));\n this.transform = `translate(${this.x} , ${this.y})`;\n this.textWidth = Math.max(0, this.width) - this.textPadding[1] - this.textPadding[3];\n this.cardWidth = Math.max(0, this.width);\n this.cardHeight = Math.max(0, this.height);\n this.label = this.label ? this.label : this.data.name;\n const cardData = {\n label: this.label,\n data: this.data,\n value: this.data.value\n };\n this.formattedLabel = labelFormatting(cardData);\n this.transformBand = `translate(0 , ${this.cardHeight - this.bandHeight})`;\n const value = hasValue ? valueFormatting(cardData) : '';\n this.value = this.paddedValue(value);\n this.setPadding();\n this.bandPath = roundedRect(0, 0, this.cardWidth, this.bandHeight, 3, [false, false, true, true]);\n setTimeout(() => {\n if (isPlatformBrowser(this.platformId)) {\n this.scaleText();\n }\n this.value = value;\n if (hasValue && !this.initialized) {\n setTimeout(() => this.startCount(), 20);\n }\n }, 8);\n });\n }\n paddedValue(value) {\n if (this.medianSize && this.medianSize > value.length) {\n value += '\\u2007'.repeat(this.medianSize - value.length);\n }\n return value;\n }\n startCount() {\n if (!this.initialized && this.animations) {\n cancelAnimationFrame(this.animationReq);\n const val = this.data.value;\n const decs = decimalChecker(val);\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const callback = ({ value, finished }) => {\n this.zone.run(() => {\n value = finished ? val : value;\n this.value = valueFormatting({ label: this.label, data: this.data, value });\n if (!finished) {\n this.value = this.paddedValue(this.value);\n }\n this.cd.markForCheck();\n });\n };\n this.animationReq = count(0, val, decs, 1, callback);\n this.initialized = true;\n }\n }\n scaleText() {\n this.zone.run(() => {\n const { width, height } = this.textEl.nativeElement.getBoundingClientRect();\n if (width === 0 || height === 0) {\n return;\n }\n const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n const availableWidth = this.cardWidth - 2 * textPadding;\n const availableHeight = this.cardHeight / 3;\n const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n this.labelFontSize = Math.min(this.textFontSize, 15);\n this.setPadding();\n this.cd.markForCheck();\n });\n }\n scaleTextSSR() {\n const width = calculateTextWidth(VERDANA_FONT_WIDTHS_16_PX, this.value, 10);\n const height = 18;\n const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n const availableWidth = this.cardWidth - 2 * textPadding;\n const availableHeight = this.cardHeight / 3;\n const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n this.labelFontSize = Math.min(this.textFontSize, 15);\n this.setPadding();\n }\n setPadding() {\n this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8;\n const padding = this.cardHeight / 2;\n this.textPadding[0] = padding - this.textFontSize - this.labelFontSize / 2;\n this.textPadding[2] = padding - this.labelFontSize;\n }\n onClick() {\n this.select.emit(this.data);\n }\n}\nCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CardComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: CardComponent, selector: \"g[ngx-charts-card]\", inputs: { color: \"color\", bandColor: \"bandColor\", textColor: \"textColor\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", label: \"label\", data: \"data\", medianSize: \"medianSize\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", animations: \"animations\" }, outputs: { select: \"select\" }, viewQueries: [{ propertyName: \"textEl\", first: true, predicate: [\"textEl\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n {{ label }}\n \n \n \n \n \n {{ value }}\n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CardComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-card]',\n template: `\n \n \n \n {{ label }}\n \n \n \n \n \n {{ value }}\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { color: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], textColor: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], label: [{\n type: Input\n }], data: [{\n type: Input\n }], medianSize: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], textEl: [{\n type: ViewChild,\n args: ['textEl', { static: false }]\n }] } });\n\n/**\n * Converts a hex to RGB\n *\n * @export\n */\nfunction hexToRgb(value) {\n // deprecated, use d3.color()\n return d3_color.rgb(value);\n}\n/**\n * Accepts a color (string) and returns a inverted hex color (string)\n * http://stackoverflow.com/questions/9600295/automatically-change-text-color-to-assure-readability\n *\n * @export\n */\nfunction invertColor(value) {\n const color = d3_color.rgb(value);\n const { r, g, b, opacity } = color;\n if (opacity === 0) {\n return color.toString();\n }\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n const depth = yiq >= 128 ? -0.8 : 0.8;\n return shadeRGBColor(color, depth);\n}\n/**\n * Given a rgb, it will darken/lighten\n * http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors\n *\n * @export\n * @param \\{ r, g, b }\n */\nfunction shadeRGBColor({ r, g, b }, percent) {\n const t = percent < 0 ? 0 : 255;\n const p = percent < 0 ? percent * -1 : percent;\n r = Math.round((t - r) * p) + r;\n g = Math.round((t - g) * p) + g;\n b = Math.round((t - b) * p) + b;\n return `rgb(${r}, ${g}, ${b})`;\n}\n\nclass CardSeriesComponent {\n constructor() {\n this.innerPadding = 15;\n this.emptyColor = 'rgba(0, 0, 0, 0)';\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n if (this.data.length > 2) {\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const sortedLengths = this.data\n .map(d => {\n const hasValue = d && d.data && typeof d.data.value !== 'undefined' && d.data.value !== null;\n return hasValue\n ? valueFormatting({\n data: d.data,\n label: d ? d.data.name : '',\n value: d && d.data ? d.data.value : ''\n }).length\n : 0;\n })\n .sort((a, b) => b - a);\n const idx = Math.ceil(this.data.length / 2);\n this.medianSize = sortedLengths[idx];\n }\n const cards = this.getCards();\n this.cards = cards.filter(d => d.data.value !== null);\n this.emptySlots = cards.filter(d => d.data.value === null);\n }\n getCards() {\n const yPadding = typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[0] + this.innerPadding[2];\n const xPadding = typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[1] + this.innerPadding[3];\n return this.data.map((d, index) => {\n let label = d.data.name;\n if (label && label.constructor.name === 'Date') {\n label = label.toLocaleDateString();\n }\n else {\n label = label ? label.toLocaleString() : label;\n }\n const value = d.data.value;\n const valueColor = label ? this.colors.getColor(label) : this.emptyColor;\n const color = this.cardColor || valueColor || '#000';\n return {\n x: d.x,\n y: d.y,\n width: d.width - xPadding,\n height: d.height - yPadding,\n color,\n bandColor: this.bandColor || valueColor,\n textColor: this.textColor || invertColor(color),\n label,\n data: d.data,\n tooltipText: `${label}: ${value}`\n };\n });\n }\n trackBy(index, card) {\n return card.label;\n }\n onClick(data) {\n this.select.emit(data);\n }\n}\nCardSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CardSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCardSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: CardSeriesComponent, selector: \"g[ngx-charts-card-series]\", inputs: { data: \"data\", dims: \"dims\", colors: \"colors\", innerPadding: \"innerPadding\", cardColor: \"cardColor\", bandColor: \"bandColor\", emptyColor: \"emptyColor\", textColor: \"textColor\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: CardComponent, selector: \"g[ngx-charts-card]\", inputs: [\"color\", \"bandColor\", \"textColor\", \"x\", \"y\", \"width\", \"height\", \"label\", \"data\", \"medianSize\", \"valueFormatting\", \"labelFormatting\", \"animations\"], outputs: [\"select\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: CardSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-card-series]',\n template: `\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], dims: [{\n type: Input\n }], colors: [{\n type: Input\n }], innerPadding: [{\n type: Input\n }], cardColor: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], emptyColor: [{\n type: Input\n }], textColor: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\nclass NumberCardComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.emptyColor = 'rgba(0, 0, 0, 0)';\n this.innerPadding = 15;\n this.margin = [10, 10, 10, 10];\n }\n get clickable() {\n return !!this.select.observers.length;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.setColors();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n const size = gridSize(this.dims, this.results.length, 150);\n const N = size[0] * size[1];\n const data = this.results.slice();\n while (data.length < N) {\n data.push({ value: null });\n }\n this.data = gridLayout(this.dims, data, 150, this.designatedTotal);\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n}\nNumberCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nNumberCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: NumberCardComponent, selector: \"ngx-charts-number-card\", inputs: { cardColor: \"cardColor\", bandColor: \"bandColor\", emptyColor: \"emptyColor\", innerPadding: \"innerPadding\", textColor: \"textColor\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", designatedTotal: \"designatedTotal\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \"ngx-charts-number-card .cell .trimmed-label{font-size:12px;pointer-events:none;overflow:hidden;text-align:left;line-height:1em}ngx-charts-number-card .cell .trimmed-label p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:0;margin:0}ngx-charts-number-card .cell .value-text{pointer-events:none}ngx-charts-number-card .number-card.clickable .cell .card,ngx-charts-number-card .number-card.clickable .cell .card-band{cursor:pointer}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: CardSeriesComponent, selector: \"g[ngx-charts-card-series]\", inputs: [\"data\", \"dims\", \"colors\", \"innerPadding\", \"cardColor\", \"bandColor\", \"emptyColor\", \"textColor\", \"valueFormatting\", \"labelFormatting\", \"animations\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-number-card', template: `\n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \"ngx-charts-number-card .cell .trimmed-label{font-size:12px;pointer-events:none;overflow:hidden;text-align:left;line-height:1em}ngx-charts-number-card .cell .trimmed-label p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:0;margin:0}ngx-charts-number-card .cell .value-text{pointer-events:none}ngx-charts-number-card .number-card.clickable .cell .card,ngx-charts-number-card .number-card.clickable .cell .card-band{cursor:pointer}\\n\"] }]\n }], propDecorators: { cardColor: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], emptyColor: [{\n type: Input\n }], innerPadding: [{\n type: Input\n }], textColor: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], designatedTotal: [{\n type: Input\n }] } });\n\nclass NumberCardModule {\n}\nNumberCardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNumberCardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardModule, declarations: [CardComponent, CardSeriesComponent, NumberCardComponent], imports: [ChartCommonModule], exports: [CardComponent, CardSeriesComponent, NumberCardComponent] });\nNumberCardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NumberCardModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [CardComponent, CardSeriesComponent, NumberCardComponent],\n exports: [CardComponent, CardSeriesComponent, NumberCardComponent]\n }]\n }] });\n\nclass TreeMapCellComponent {\n constructor(element) {\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.initialized = false;\n this.orientation = BarOrientation;\n this.element = element.nativeElement;\n }\n ngOnChanges() {\n this.update();\n this.valueFormatting = this.valueFormatting || (value => value.toLocaleString());\n const labelFormatting = this.labelFormatting || (cell => escapeLabel(trimLabel(cell.label, 55)));\n const cellData = {\n data: this.data,\n label: this.label,\n value: this.value\n };\n this.formattedValue = this.valueFormatting(cellData.value);\n this.formattedLabel = labelFormatting(cellData);\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n this.gradientStops = this.getGradientStops();\n }\n update() {\n if (this.initialized) {\n this.animateToCurrentForm();\n }\n else {\n if (this.animations) {\n this.loadAnimation();\n }\n this.initialized = true;\n }\n }\n loadAnimation() {\n const node = select(this.element).select('.cell');\n node.attr('opacity', 0).attr('x', this.x).attr('y', this.y);\n this.animateToCurrentForm();\n }\n getTextColor() {\n return invertColor(this.fill);\n }\n animateToCurrentForm() {\n const node = select(this.element).select('.cell');\n if (this.animations) {\n node\n .transition()\n .duration(750)\n .attr('opacity', 1)\n .attr('x', this.x)\n .attr('y', this.y)\n .attr('width', this.width)\n .attr('height', this.height);\n }\n else {\n node.attr('opacity', 1).attr('x', this.x).attr('y', this.y).attr('width', this.width).attr('height', this.height);\n }\n }\n onClick() {\n this.select.emit(this.data);\n }\n getGradientStops() {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: 0.3\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n}\nTreeMapCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapCellComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTreeMapCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TreeMapCellComponent, selector: \"g[ngx-charts-tree-map-cell]\", inputs: { data: \"data\", fill: \"fill\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", label: \"label\", value: \"value\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", gradient: \"gradient\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n = 70 && height >= 35\"\n [attr.x]=\"x\"\n [attr.y]=\"y\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n class=\"treemap-label\"\n [style.pointer-events]=\"'none'\"\n >\n \n \n \n \n \n \n {{ formattedValue }}\n \n \n \n \n `, isInline: true, components: [{ type: SvgLinearGradientComponent, selector: \"g[ngx-charts-svg-linear-gradient]\", inputs: [\"orientation\", \"name\", \"stops\"] }, { type: CountUpDirective, selector: \"[ngx-charts-count-up]\", inputs: [\"countDuration\", \"countPrefix\", \"countSuffix\", \"valueFormatting\", \"countDecimals\", \"countTo\", \"countFrom\"], outputs: [\"countChange\", \"countFinish\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tree-map-cell]',\n template: `\n \n \n \n \n \n = 70 && height >= 35\"\n [attr.x]=\"x\"\n [attr.y]=\"y\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n class=\"treemap-label\"\n [style.pointer-events]=\"'none'\"\n >\n \n \n \n \n \n \n {{ formattedValue }}\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { data: [{\n type: Input\n }], fill: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], label: [{\n type: Input\n }], value: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\nclass TreeMapCellSeriesComponent {\n constructor() {\n this.gradient = false;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.styleTypes = StyleTypes;\n this.placementTypes = PlacementTypes;\n }\n ngOnChanges(changes) {\n this.cells = this.getCells();\n }\n getCells() {\n return this.data.children\n .filter(d => {\n return d.depth === 1;\n })\n .map((d, index) => {\n const label = d.id;\n return {\n data: d.data,\n x: d.x0,\n y: d.y0,\n width: d.x1 - d.x0,\n height: d.y1 - d.y0,\n fill: this.colors.getColor(label),\n label,\n value: d.value\n };\n });\n }\n getTooltipText({ label, value }) {\n return `\n ${escapeLabel(label)}\n ${value.toLocaleString()}\n `;\n }\n onClick(data) {\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.label;\n }\n}\nTreeMapCellSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapCellSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nTreeMapCellSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TreeMapCellSeriesComponent, selector: \"g[ngx-charts-tree-map-cell-series]\", inputs: { data: \"data\", dims: \"dims\", colors: \"colors\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", gradient: \"gradient\", tooltipDisabled: \"tooltipDisabled\", tooltipTemplate: \"tooltipTemplate\", animations: \"animations\" }, outputs: { select: \"select\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, components: [{ type: TreeMapCellComponent, selector: \"g[ngx-charts-tree-map-cell]\", inputs: [\"data\", \"fill\", \"x\", \"y\", \"width\", \"height\", \"label\", \"value\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"animations\"], outputs: [\"select\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapCellSeriesComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tree-map-cell-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { data: [{\n type: Input\n }], dims: [{\n type: Input\n }], colors: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], gradient: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\nclass TreeMapComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.tooltipDisabled = false;\n this.gradient = false;\n this.select = new EventEmitter();\n this.margin = [10, 10, 10, 10];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.domain = this.getDomain();\n this.treemap = treemap().size([this.dims.width, this.dims.height]);\n const rootNode = {\n name: 'root',\n value: 0,\n isRoot: true\n };\n const root = stratify()\n .id(d => {\n let label = d.name;\n if (label.constructor.name === 'Date') {\n label = label.toLocaleDateString();\n }\n else {\n label = label.toLocaleString();\n }\n return label;\n })\n .parentId(d => (d.isRoot ? null : 'root'))([rootNode, ...this.results])\n .sum(d => d.value);\n this.data = this.treemap(root);\n this.setColors();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getDomain() {\n return this.results.map(d => d.name);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n}\nTreeMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nTreeMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: TreeMapComponent, selector: \"ngx-charts-tree-map\", inputs: { results: \"results\", tooltipDisabled: \"tooltipDisabled\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", gradient: \"gradient\" }, outputs: { select: \"select\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, styles: [\".tree-map .treemap-val{font-size:1.3em;padding-top:5px;display:inline-block}.tree-map .treemap-label p{display:table-cell;text-align:center;line-height:1.2em;vertical-align:middle}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: TreeMapCellSeriesComponent, selector: \"g[ngx-charts-tree-map-cell-series]\", inputs: [\"data\", \"dims\", \"colors\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-tree-map', template: `\n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".tree-map .treemap-val{font-size:1.3em;padding-top:5px;display:inline-block}.tree-map .treemap-label p{display:table-cell;text-align:center;line-height:1.2em;vertical-align:middle}\\n\"] }]\n }], propDecorators: { results: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], gradient: [{\n type: Input\n }], select: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass TreeMapModule {\n}\nTreeMapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTreeMapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapModule, declarations: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent], imports: [ChartCommonModule], exports: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent] });\nTreeMapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: TreeMapModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent],\n exports: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent]\n }]\n }] });\n\nvar ElementType;\n(function (ElementType) {\n ElementType[\"Value\"] = \"value\";\n ElementType[\"Units\"] = \"units\";\n})(ElementType || (ElementType = {}));\nclass LinearGaugeComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.min = 0;\n this.max = 100;\n this.value = 0;\n this.margin = [10, 20, 10, 20];\n this.valueResizeScale = 1;\n this.unitsResizeScale = 1;\n this.valueTextTransform = '';\n this.valueTranslate = '';\n this.unitsTextTransform = '';\n this.unitsTranslate = '';\n this.barOrientation = BarOrientation;\n }\n ngAfterViewInit() {\n super.ngAfterViewInit();\n setTimeout(() => {\n this.scaleText(ElementType.Value);\n this.scaleText(ElementType.Units);\n });\n }\n update() {\n super.update();\n this.hasPreviousValue = this.previousValue !== undefined;\n this.max = Math.max(this.max, this.value);\n this.min = Math.min(this.min, this.value);\n if (this.hasPreviousValue) {\n this.max = Math.max(this.max, this.previousValue);\n this.min = Math.min(this.min, this.previousValue);\n }\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.valueDomain = this.getValueDomain();\n this.valueScale = this.getValueScale();\n this.displayValue = this.getDisplayValue();\n this.setColors();\n const xOffset = this.margin[3] + this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.transform = `translate(${xOffset}, ${yOffset})`;\n this.transformLine = `translate(${this.margin[3] + this.valueScale(this.previousValue)}, ${yOffset})`;\n this.valueTranslate = `translate(0, -15)`;\n this.unitsTranslate = `translate(0, 15)`;\n if (isPlatformServer(this.platformId)) {\n this.scaleTextSSR('value');\n this.scaleTextSSR('units');\n }\n else {\n setTimeout(() => this.scaleText(ElementType.Value), 50);\n setTimeout(() => this.scaleText(ElementType.Units), 50);\n }\n }\n getValueDomain() {\n return [this.min, this.max];\n }\n getValueScale() {\n return scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n }\n getDisplayValue() {\n if (this.valueFormatting) {\n return this.valueFormatting(this.value);\n }\n return this.value.toLocaleString();\n }\n scaleText(element, repeat = true) {\n let el;\n let resizeScale;\n if (element === ElementType.Value) {\n el = this.valueTextEl;\n resizeScale = this.valueResizeScale;\n }\n else {\n el = this.unitsTextEl;\n resizeScale = this.unitsResizeScale;\n }\n const { width, height } = el.nativeElement.getBoundingClientRect();\n if (width === 0 || height === 0)\n return;\n const oldScale = resizeScale;\n const availableWidth = this.dims.width;\n const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n if (resizeScale !== oldScale) {\n if (element === ElementType.Value) {\n this.valueResizeScale = resizeScale;\n this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n else {\n this.unitsResizeScale = resizeScale;\n this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n this.cd.markForCheck();\n if (repeat && isPlatformBrowser(this.platformId)) {\n setTimeout(() => {\n this.scaleText(element, false);\n }, 50);\n }\n }\n }\n scaleTextSSR(element) {\n let resizeScale = 1;\n const value = element === 'value' ? this.displayValue : this.units;\n const width = calculateTextWidth(VERDANA_FONT_WIDTHS_16_PX, value, 10);\n const height = 25;\n const availableWidth = this.dims.width;\n const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n if (element === 'value') {\n this.valueResizeScale = resizeScale;\n this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n else {\n this.unitsResizeScale = resizeScale;\n this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n this.cd.markForCheck();\n }\n onClick() {\n this.select.emit({\n name: 'Value',\n value: this.value\n });\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, [this.value], this.customColors);\n }\n}\nLinearGaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LinearGaugeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nLinearGaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: LinearGaugeComponent, selector: \"ngx-charts-linear-gauge\", inputs: { min: \"min\", max: \"max\", value: \"value\", units: \"units\", previousValue: \"previousValue\", valueFormatting: \"valueFormatting\" }, viewQueries: [{ propertyName: \"valueTextEl\", first: true, predicate: [\"valueTextEl\"], descendants: true }, { propertyName: \"unitsTextEl\", first: true, predicate: [\"unitsTextEl\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n\n \n\n \n\n \n \n \n {{ displayValue }}\n \n \n\n \n \n {{ units }}\n \n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".linear-gauge{cursor:pointer}.linear-gauge .background-bar path{fill:#0000000d}.linear-gauge .units{fill:#666}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: BarComponent, selector: \"g[ngx-charts-bar]\", inputs: [\"fill\", \"data\", \"width\", \"height\", \"x\", \"y\", \"orientation\", \"roundEdges\", \"gradient\", \"offset\", \"isActive\", \"stops\", \"animations\", \"ariaLabel\", \"noBarWhenZero\"], outputs: [\"select\", \"activate\", \"deactivate\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: LinearGaugeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-linear-gauge', template: `\n \n \n \n \n\n \n\n \n\n \n \n \n {{ displayValue }}\n \n \n\n \n \n {{ units }}\n \n \n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".linear-gauge{cursor:pointer}.linear-gauge .background-bar path{fill:#0000000d}.linear-gauge .units{fill:#666}\\n\"] }]\n }], propDecorators: { min: [{\n type: Input\n }], max: [{\n type: Input\n }], value: [{\n type: Input\n }], units: [{\n type: Input\n }], previousValue: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], valueTextEl: [{\n type: ViewChild,\n args: ['valueTextEl']\n }], unitsTextEl: [{\n type: ViewChild,\n args: ['unitsTextEl']\n }] } });\n\nclass GaugeArcComponent {\n constructor() {\n this.isActive = false;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.placementTypes = PlacementTypes;\n this.styleTypes = StyleTypes;\n }\n tooltipText(arc) {\n const label = formatLabel(arc.data.name);\n let val;\n if (this.valueFormatting) {\n val = this.valueFormatting(arc.data.value);\n }\n else {\n val = formatLabel(arc.data.value);\n }\n return `\n ${escapeLabel(label)}\n ${val}\n `;\n }\n}\nGaugeArcComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeArcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGaugeArcComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: GaugeArcComponent, selector: \"g[ngx-charts-gauge-arc]\", inputs: { backgroundArc: \"backgroundArc\", valueArc: \"valueArc\", cornerRadius: \"cornerRadius\", colors: \"colors\", isActive: \"isActive\", tooltipDisabled: \"tooltipDisabled\", valueFormatting: \"valueFormatting\", tooltipTemplate: \"tooltipTemplate\", animations: \"animations\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: PieArcComponent, selector: \"g[ngx-charts-pie-arc]\", inputs: [\"fill\", \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"value\", \"max\", \"data\", \"explodeSlices\", \"gradient\", \"animate\", \"pointerEvents\", \"isActive\"], outputs: [\"select\", \"activate\", \"deactivate\", \"dblclick\"] }], directives: [{ type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeArcComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-gauge-arc]',\n template: `\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { backgroundArc: [{\n type: Input\n }], valueArc: [{\n type: Input\n }], cornerRadius: [{\n type: Input\n }], colors: [{\n type: Input\n }], isActive: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }] } });\n\nclass GaugeAxisComponent {\n constructor() {\n this.rotate = '';\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.rotationAngle = -90 + this.startAngle;\n this.rotate = `rotate(${this.rotationAngle})`;\n this.ticks = this.getTicks();\n }\n getTicks() {\n const bigTickSegment = this.angleSpan / this.bigSegments;\n const smallTickSegment = bigTickSegment / this.smallSegments;\n const tickLength = 20;\n const ticks = {\n big: [],\n small: []\n };\n const startDistance = this.radius + 10;\n const textDist = startDistance + tickLength + 10;\n for (let i = 0; i <= this.bigSegments; i++) {\n const angleDeg = i * bigTickSegment;\n const angle = (angleDeg * Math.PI) / 180;\n const textAnchor = this.getTextAnchor(angleDeg);\n let skip = false;\n if (i === 0 && this.angleSpan === 360) {\n skip = true;\n }\n if (!skip) {\n let text = Number.parseFloat(this.valueScale.invert(angleDeg).toString()).toLocaleString();\n if (this.tickFormatting) {\n text = this.tickFormatting(text);\n }\n ticks.big.push({\n line: this.getTickPath(startDistance, tickLength, angle),\n textAnchor,\n text,\n textTransform: `\n translate(${textDist * Math.cos(angle)}, ${textDist * Math.sin(angle)}) rotate(${-this.rotationAngle})\n `\n });\n }\n if (i === this.bigSegments) {\n continue;\n }\n for (let j = 1; j <= this.smallSegments; j++) {\n const smallAngleDeg = angleDeg + j * smallTickSegment;\n const smallAngle = (smallAngleDeg * Math.PI) / 180;\n ticks.small.push({\n line: this.getTickPath(startDistance, tickLength / 2, smallAngle)\n });\n }\n }\n return ticks;\n }\n getTextAnchor(angle) {\n // [0, 45] = 'middle';\n // [46, 135] = 'start';\n // [136, 225] = 'middle';\n // [226, 315] = 'end';\n angle = (this.startAngle + angle) % 360;\n let textAnchor = TextAnchor.Middle;\n if (angle > 45 && angle <= 135) {\n textAnchor = TextAnchor.Start;\n }\n else if (angle > 225 && angle <= 315) {\n textAnchor = TextAnchor.End;\n }\n return textAnchor;\n }\n getTickPath(startDistance, tickLength, angle) {\n const y1 = startDistance * Math.sin(angle);\n const y2 = (startDistance + tickLength) * Math.sin(angle);\n const x1 = startDistance * Math.cos(angle);\n const x2 = (startDistance + tickLength) * Math.cos(angle);\n const points = [\n { x: x1, y: y1 },\n { x: x2, y: y2 }\n ];\n const lineGenerator = line()\n .x(d => d.x)\n .y(d => d.y);\n return lineGenerator(points);\n }\n}\nGaugeAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeAxisComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGaugeAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: GaugeAxisComponent, selector: \"g[ngx-charts-gauge-axis]\", inputs: { bigSegments: \"bigSegments\", smallSegments: \"smallSegments\", min: \"min\", max: \"max\", angleSpan: \"angleSpan\", startAngle: \"startAngle\", radius: \"radius\", valueScale: \"valueScale\", tickFormatting: \"tickFormatting\" }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ tick.text }}\n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeAxisComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-gauge-axis]',\n template: `\n \n \n \n \n \n \n {{ tick.text }}\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { bigSegments: [{\n type: Input\n }], smallSegments: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], angleSpan: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], radius: [{\n type: Input\n }], valueScale: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }] } });\n\nclass GaugeComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = LegendPosition.Right;\n this.min = 0;\n this.max = 100;\n this.bigSegments = 10;\n this.smallSegments = 5;\n this.showAxis = true;\n this.startAngle = -120;\n this.angleSpan = 240;\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.showText = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.resizeScale = 1;\n this.rotation = '';\n this.textTransform = 'scale(1, 1)';\n this.cornerRadius = 10;\n }\n ngAfterViewInit() {\n super.ngAfterViewInit();\n setTimeout(() => this.scaleText());\n }\n update() {\n super.update();\n if (!this.showAxis) {\n if (!this.margin) {\n this.margin = [10, 20, 10, 20];\n }\n }\n else {\n if (!this.margin) {\n this.margin = [60, 100, 60, 100];\n }\n }\n // make the starting angle positive\n if (this.startAngle < 0) {\n this.startAngle = (this.startAngle % 360) + 360;\n }\n this.angleSpan = Math.min(this.angleSpan, 360);\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n this.domain = this.getDomain();\n this.valueDomain = this.getValueDomain();\n this.valueScale = this.getValueScale();\n this.displayValue = this.getDisplayValue();\n this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2;\n this.arcs = this.getArcs();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n const xOffset = this.margin[3] + this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.transform = `translate(${xOffset}, ${yOffset})`;\n this.rotation = `rotate(${this.startAngle})`;\n setTimeout(() => this.scaleText(), 50);\n }\n getArcs() {\n const arcs = [];\n const availableRadius = this.outerRadius * 0.7;\n const radiusPerArc = Math.min(availableRadius / this.results.length, 10);\n const arcWidth = radiusPerArc * 0.7;\n this.textRadius = this.outerRadius - this.results.length * radiusPerArc;\n this.cornerRadius = Math.floor(arcWidth / 2);\n let i = 0;\n for (const d of this.results) {\n const outerRadius = this.outerRadius - i * radiusPerArc;\n const innerRadius = outerRadius - arcWidth;\n const backgroundArc = {\n endAngle: (this.angleSpan * Math.PI) / 180,\n innerRadius,\n outerRadius,\n data: {\n value: this.max,\n name: d.name\n }\n };\n const valueArc = {\n endAngle: (Math.min(this.valueScale(d.value), this.angleSpan) * Math.PI) / 180,\n innerRadius,\n outerRadius,\n data: {\n value: d.value,\n name: d.name\n }\n };\n const arc = {\n backgroundArc,\n valueArc\n };\n arcs.push(arc);\n i++;\n }\n return arcs;\n }\n getDomain() {\n return this.results.map(d => d.name);\n }\n getValueDomain() {\n const values = this.results.map(d => d.value);\n const dataMin = Math.min(...values);\n const dataMax = Math.max(...values);\n if (this.min !== undefined) {\n this.min = Math.min(this.min, dataMin);\n }\n else {\n this.min = dataMin;\n }\n if (this.max !== undefined) {\n this.max = Math.max(this.max, dataMax);\n }\n else {\n this.max = dataMax;\n }\n return [this.min, this.max];\n }\n getValueScale() {\n return scaleLinear().range([0, this.angleSpan]).nice().domain(this.valueDomain);\n }\n getDisplayValue() {\n const value = this.results.map(d => d.value).reduce((a, b) => a + b, 0);\n if (this.textValue && 0 !== this.textValue.length) {\n return this.textValue.toLocaleString();\n }\n if (this.valueFormatting) {\n return this.valueFormatting(value);\n }\n return value.toLocaleString();\n }\n scaleText(repeat = true) {\n if (!this.showText) {\n return;\n }\n const { width } = this.textEl.nativeElement.getBoundingClientRect();\n const oldScale = this.resizeScale;\n if (width === 0) {\n this.resizeScale = 1;\n }\n else {\n const availableSpace = this.textRadius;\n this.resizeScale = Math.floor((availableSpace / (width / this.resizeScale)) * 100) / 100;\n }\n if (this.resizeScale !== oldScale) {\n this.textTransform = `scale(${this.resizeScale}, ${this.resizeScale})`;\n this.cd.markForCheck();\n if (repeat) {\n setTimeout(() => this.scaleText(false), 50);\n }\n }\n }\n onClick(data) {\n this.select.emit(data);\n }\n getLegendOptions() {\n return {\n scaleType: ScaleType.Ordinal,\n colors: this.colors,\n domain: this.domain,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n trackBy(index, item) {\n return item.valueArc.data.name;\n }\n}\nGaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nGaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: GaugeComponent, selector: \"ngx-charts-gauge\", inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", min: \"min\", max: \"max\", textValue: \"textValue\", units: \"units\", bigSegments: \"bigSegments\", smallSegments: \"smallSegments\", results: \"results\", showAxis: \"showAxis\", startAngle: \"startAngle\", angleSpan: \"angleSpan\", activeEntries: \"activeEntries\", axisTickFormatting: \"axisTickFormatting\", tooltipDisabled: \"tooltipDisabled\", valueFormatting: \"valueFormatting\", showText: \"showText\", margin: \"margin\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], viewQueries: [{ propertyName: \"textEl\", first: true, predicate: [\"textEl\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n\n \n\n \n {{ displayValue }}\n {{ units }}\n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".gauge .background-arc path{fill:#0000000d}.gauge .gauge-tick path{stroke:#666}.gauge .gauge-tick text{font-size:12px;fill:#666;font-weight:700}.gauge .gauge-tick-large path{stroke-width:2px}.gauge .gauge-tick-small path{stroke-width:1px}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }, { type: GaugeArcComponent, selector: \"g[ngx-charts-gauge-arc]\", inputs: [\"backgroundArc\", \"valueArc\", \"cornerRadius\", \"colors\", \"isActive\", \"tooltipDisabled\", \"valueFormatting\", \"tooltipTemplate\", \"animations\"], outputs: [\"select\", \"activate\", \"deactivate\"] }, { type: GaugeAxisComponent, selector: \"g[ngx-charts-gauge-axis]\", inputs: [\"bigSegments\", \"smallSegments\", \"min\", \"max\", \"angleSpan\", \"startAngle\", \"radius\", \"valueScale\", \"tickFormatting\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-gauge', template: `\n \n \n \n \n \n\n \n\n \n {{ displayValue }}\n {{ units }}\n \n \n \n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\", \".gauge .background-arc path{fill:#0000000d}.gauge .gauge-tick path{stroke:#666}.gauge .gauge-tick text{font-size:12px;fill:#666;font-weight:700}.gauge .gauge-tick-large path{stroke-width:2px}.gauge .gauge-tick-small path{stroke-width:1px}\\n\"] }]\n }], propDecorators: { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], textValue: [{\n type: Input\n }], units: [{\n type: Input\n }], bigSegments: [{\n type: Input\n }], smallSegments: [{\n type: Input\n }], results: [{\n type: Input\n }], showAxis: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], angleSpan: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], axisTickFormatting: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], showText: [{\n type: Input\n }], margin: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], textEl: [{\n type: ViewChild,\n args: ['textEl']\n }] } });\n\nclass GaugeModule {\n}\nGaugeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGaugeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeModule, declarations: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent], imports: [ChartCommonModule, PieChartModule, BarChartModule], exports: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent] });\nGaugeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeModule, imports: [[ChartCommonModule, PieChartModule, BarChartModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: GaugeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule, PieChartModule, BarChartModule],\n declarations: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent],\n exports: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent]\n }]\n }] });\n\n// The export is needed here to generate a valid polyfills.metadata.json file\nfunction ngxChartsPolyfills() {\n // IE11 fix\n // Ref: https://github.com/swimlane/ngx-charts/issues/386\n if (typeof SVGElement !== 'undefined' && typeof SVGElement.prototype.contains === 'undefined') {\n SVGElement.prototype.contains = HTMLDivElement.prototype.contains;\n }\n}\n\nclass SankeyComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.showLabels = true;\n this.tooltipDisabled = false;\n this.activeEntries = [];\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 10, 10, 10];\n this.scaleType = ScaleType.Ordinal;\n this.styleTypes = StyleTypes;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n legendType: this.scaleType\n });\n const linkDefs = this.results;\n const nodeDefs = Array.from(new Set(linkDefs.flatMap(l => [l.source, l.target])), (name) => ({\n name,\n value: linkDefs.filter(l => l.source === name).reduce((acc, l) => acc + l.value, 0)\n }));\n // Configure generator\n const sankeyGenerator = sankey()\n .nodeId(d => d.name)\n .nodeAlign(sankeyLeft)\n .nodeWidth(15)\n .nodePadding(10)\n .extent([\n [1, 5],\n [this.dims.width - 1, this.dims.height - 5]\n ]);\n // Generate links and nodes\n const data = sankeyGenerator({\n nodes: nodeDefs.map(d => Object.assign({}, d)),\n links: linkDefs.map(d => Object.assign({}, d))\n });\n this.valueDomain = this.getValueDomain(data.nodes);\n this.setColors();\n this.nodeRects = data.nodes.map(node => {\n const rect = {\n x: node.x0,\n y: node.y0,\n height: node.y1 - node.y0,\n width: node.x1 - node.x0,\n fill: this.colors.getColor(node.name),\n tooltip: this.getNodeTooltipText(node),\n rx: 5,\n data: {\n name: node.name,\n value: node.value\n },\n transform: '',\n label: this.labelFormatting ? this.labelFormatting(node.name) : node.name,\n labelAnchor: TextAnchor.Start\n };\n rect.labelAnchor = this.getTextAnchor(node);\n rect.transform = `translate(${rect.x},${rect.y})`;\n return rect;\n });\n this.linkPaths = data.links.map(link => {\n const gradientId = 'mask' + id().toString();\n const linkPath = {\n path: sankeyLinkHorizontal()(link),\n strokeWidth: Math.max(1, link.width),\n tooltip: this.getLinkTooltipText(link.source, link.target, link.value),\n id: gradientId,\n gradientFill: `url(#${gradientId})`,\n source: link.source,\n target: link.target,\n startColor: this.colors.getColor(link.source.name),\n endColor: this.colors.getColor(link.target.name),\n data: {\n source: link.source.name,\n target: link.target.name,\n value: link.value\n }\n };\n return linkPath;\n });\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getNodeTooltipText(node) {\n return `\n ${escapeLabel(node.name)}\n ${node.value.toLocaleString()}\n `;\n }\n getLinkTooltipText(sourceNode, targetNode, value) {\n return `\n ${escapeLabel(sourceNode.name)} • ${escapeLabel(targetNode.name)}\n ${value.toLocaleString()} (${(value / sourceNode.value).toLocaleString(undefined, {\n style: 'percent',\n maximumFractionDigits: 2\n })})\n `;\n }\n getTextAnchor(node) {\n if (node.layer === 0) {\n return TextAnchor.Start;\n }\n else {\n return TextAnchor.End;\n }\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, this.scaleType, this.valueDomain);\n }\n getValueDomain(nodes) {\n return nodes.map(n => n.name);\n }\n}\nSankeyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SankeyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nSankeyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: SankeyComponent, selector: \"ngx-charts-sankey\", inputs: { showLabels: \"showLabels\", gradient: \"gradient\", tooltipDisabled: \"tooltipDisabled\", activeEntries: \"activeEntries\", labelFormatting: \"labelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, queries: [{ propertyName: \"tooltipTemplate\", first: true, predicate: [\"tooltipTemplate\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n\n \n
\n \n\n \n 15\"\n class=\"label\"\n [attr.x]=\"rect.width + 5\"\n [attr.y]=\"rect.height / 2\"\n [attr.text-anchor]=\"rect.labelAnchor\"\n dy=\"0.35em\"\n [attr.dx]=\"rect.labelAnchor === 'end' ? -25 : 0\"\n >\n {{ rect.label }}\n \n \n \n \n `, isInline: true, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"], components: [{ type: ChartComponent, selector: \"ngx-charts-chart\", inputs: [\"view\", \"showLegend\", \"legendOptions\", \"legendType\", \"activeEntries\", \"animations\"], outputs: [\"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TooltipDirective, selector: \"[ngx-tooltip]\", inputs: [\"tooltipCssClass\", \"tooltipTitle\", \"tooltipAppendToBody\", \"tooltipSpacing\", \"tooltipDisabled\", \"tooltipShowCaret\", \"tooltipPlacement\", \"tooltipAlignment\", \"tooltipType\", \"tooltipCloseOnClickOutside\", \"tooltipCloseOnMouseLeave\", \"tooltipHideTimeout\", \"tooltipShowTimeout\", \"tooltipTemplate\", \"tooltipShowEvent\", \"tooltipContext\", \"tooltipImmediateExit\"], outputs: [\"show\", \"hide\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SankeyComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-charts-sankey', template: `\n \n \n \n \n \n \n \n \n \n \n \n\n \n
\n \n\n \n 15\"\n class=\"label\"\n [attr.x]=\"rect.width + 5\"\n [attr.y]=\"rect.height / 2\"\n [attr.text-anchor]=\"rect.labelAnchor\"\n dy=\"0.35em\"\n [attr.dx]=\"rect.labelAnchor === 'end' ? -25 : 0\"\n >\n {{ rect.label }}\n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".ngx-charts-outer{animation:chartFadeIn linear .6s}@keyframes chartFadeIn{0%{opacity:0}20%{opacity:0}to{opacity:1}}.ngx-charts{float:left;overflow:visible}.ngx-charts .circle,.ngx-charts .cell,.ngx-charts .bar,.ngx-charts .node,.ngx-charts .link,.ngx-charts .arc{cursor:pointer}.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover,.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .node.active,.ngx-charts .node:hover,.ngx-charts .link.active,.ngx-charts .link:hover,.ngx-charts .card.active,.ngx-charts .card:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .bar:focus,.ngx-charts .cell:focus,.ngx-charts .arc:focus,.ngx-charts .node:focus,.ngx-charts .link:focus,.ngx-charts .card:focus{outline:none}.ngx-charts .bar.hidden,.ngx-charts .cell.hidden,.ngx-charts .arc.hidden,.ngx-charts .node.hidden,.ngx-charts .link.hidden,.ngx-charts .card.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .line-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .polar-series-path.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .area-series.inactive{transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:#0000000d}\\n\"] }]\n }], propDecorators: { showLabels: [{\n type: Input\n }], gradient: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] } });\n\nclass SankeyModule {\n}\nSankeyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SankeyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSankeyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SankeyModule, declarations: [SankeyComponent], imports: [ChartCommonModule], exports: [SankeyComponent] });\nSankeyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SankeyModule, imports: [[ChartCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: SankeyModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [SankeyComponent],\n exports: [SankeyComponent]\n }]\n }] });\n\nclass NgxChartsModule {\n constructor() {\n ngxChartsPolyfills();\n }\n}\nNgxChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NgxChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgxChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NgxChartsModule, exports: [ChartCommonModule,\n AreaChartModule,\n BarChartModule,\n BoxChartModule,\n BubbleChartModule,\n HeatMapModule,\n SankeyModule,\n LineChartModule,\n PolarChartModule,\n NumberCardModule,\n PieChartModule,\n TreeMapModule,\n GaugeModule] });\nNgxChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NgxChartsModule, imports: [ChartCommonModule,\n AreaChartModule,\n BarChartModule,\n BoxChartModule,\n BubbleChartModule,\n HeatMapModule,\n SankeyModule,\n LineChartModule,\n PolarChartModule,\n NumberCardModule,\n PieChartModule,\n TreeMapModule,\n GaugeModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: NgxChartsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n ChartCommonModule,\n AreaChartModule,\n BarChartModule,\n BoxChartModule,\n BubbleChartModule,\n HeatMapModule,\n SankeyModule,\n LineChartModule,\n PolarChartModule,\n NumberCardModule,\n PieChartModule,\n TreeMapModule,\n GaugeModule\n ]\n }]\n }], ctorParameters: function () { return []; } });\n\nfunction tickFormat(fieldType, groupByType) {\n return function (label) {\n if (label === 'No Value' || label === 'Other') {\n return label;\n }\n if (fieldType === 'date' && groupByType === 'groupBy') {\n const formatter = timeFormat('MM/DD/YYYY');\n return formatter(label);\n }\n return label.toString();\n };\n}\n\n/* eslint-disable @typescript-eslint/no-empty-interface */\n\n/*\n * Public API Surface of ngx-charts\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AdvancedLegendComponent, AdvancedPieChartComponent, AreaChartComponent, AreaChartModule, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaComponent, AreaSeriesComponent, AxesModule, AxisLabelComponent, BarChartModule, BarChartType, BarComponent, BarHorizontal2DComponent, BarHorizontalComponent, BarHorizontalNormalizedComponent, BarHorizontalStackedComponent, BarLabelComponent, BarOrientation, BarVertical2DComponent, BarVerticalComponent, BarVerticalNormalizedComponent, BarVerticalStackedComponent, BaseChartComponent, BoxChartComponent, BoxChartModule, BoxComponent, BoxSeriesComponent, BubbleChartComponent, BubbleChartModule, BubbleSeriesComponent, CardComponent, CardSeriesComponent, ChartCommonModule, ChartComponent, CircleComponent, CircleSeriesComponent, ColorHelper, CountUpDirective, D0Types, GaugeArcComponent, GaugeAxisComponent, GaugeComponent, GaugeModule, GridPanelComponent, GridPanelSeriesComponent, HeatCellSeriesComponent, HeatMapCellComponent, HeatMapComponent, HeatMapModule, LegendComponent, LegendEntryComponent, LegendPosition, LegendType, LineChartComponent, LineChartModule, LineComponent, LineSeriesComponent, LinearGaugeComponent, NgxChartsModule, NumberCardComponent, NumberCardModule, Orientation, PieArcComponent, PieChartComponent, PieChartModule, PieGridComponent, PieGridSeriesComponent, PieLabelComponent, PieSeriesComponent, PlacementTypes, PolarChartComponent, PolarChartModule, PolarSeriesComponent, SankeyComponent, SankeyModule, ScaleLegendComponent, ScaleType, SeriesHorizontal, SeriesType, SeriesVerticalComponent, ShowTypes, StyleTypes, SvgLinearGradientComponent, SvgRadialGradientComponent, TextAnchor, Timeline, TooltipArea, TooltipContentComponent, TooltipDirective, TooltipModule, TooltipService, TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent, TreeMapModule, VisibilityObserver, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent, calculateViewDimensions, colorSets, count, decimalChecker, escapeLabel, formatLabel, getDomain, getScale, getScaleType, getTickLines, getUniqueXDomainValues, getXDomainArray, gridLayout, gridSize, hexToRgb, id, invertColor, reduceTicks, shadeRGBColor, sortByDomain, sortByTime, sortLinear, throttle, throttleable, tickFormat, trimLabel };\n","
\n
Top 5 Disease Groups\n \n \n
\n
\n
\n
\n
\n
{{i+1}}.\n {{group.groupDescription}}
\n
{{i+1}}. {{group.groupDescription}}
\n\n
{{group.patientCount}}
\n
\n
\n
","import { Component, Input, OnInit } from '@angular/core';\nimport { HccDashboardDiseaseGroupSummary } from '@api/track/models';\nimport { GridFilterService, PATIENT_DETAIL_REPORT_GRID_KEY } from '@shared/components/grid/grid-filter.service';\n\n@Component({\n selector: 'coach-hcc-top-disease-groups',\n templateUrl: './hcc-top-disease-groups.component.html',\n styleUrls: ['./hcc-top-disease-groups.component.scss']\n})\nexport class HccTopDiseaseGroupsComponent implements OnInit {\n\n @Input()\n data: HccDashboardDiseaseGroupSummary[];\n\n @Input()\n canAccessPhi: boolean;\n\n constructor(private gridFilterService: GridFilterService) { }\n\n ngOnInit(): void {\n }\n\n navigateToPatientDetails() {\n this.gridFilterService.resetFilters(PATIENT_DETAIL_REPORT_GRID_KEY);\n }\n\n}\n","import { Graphics } from \"./Graphics\";\r\n/**\r\n * Draws a circle.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class Circle extends Graphics {\r\n _afterNew() {\r\n super._afterNew();\r\n this._display.isMeasured = true;\r\n this.setPrivateRaw(\"trustBounds\", true);\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"radius\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n this._display.drawCircle(0, 0, this.get(\"radius\", 10));\r\n }\r\n }\r\n}\r\nObject.defineProperty(Circle, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Circle\"\r\n});\r\nObject.defineProperty(Circle, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Circle.className])\r\n});\r\n","
\n
\n
Chronic Conditions Closure Rates\n \n
\n
\n
\n VIEW BY\n
\n
\n \n \n
\n
\n
\n
\n
\n
0 && closuresTableHeaderData.length > 0\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n
Compared To... closuresTableHeaderData.length - 5\">\n {{data.dtPart}}{{data.dtValue}}\n {{data.dtValue - 1 | monthNumber}}\n
array.length - 5\">\n {{data.avgClosure | percent}}\n \n
\n
","import { Component, Inject, LOCALE_ID, OnDestroy, OnInit } from '@angular/core';\nimport { HccDashboardService } from '@api/track/services';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { HccDashboardFilterService } from '../../hcc-dashboard-filter.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { ATTRIBUTED, MOST_ASSIGNABLE } from '@track/track-constants';\nimport { HccDashboardClosureRate } from '@api/track/models';\nimport HccClosureRateDataItem from './hcc-closure-rate-data-item';\nimport * as am5 from '@amcharts/amcharts5';\nimport * as am5xy from '@amcharts/amcharts5/xy';\nimport am5themes_animated from '@amcharts/amcharts5/themes/Animated';\nimport { getNameFromMonthNumber } from '@shared/utilities';\nimport { formatPercent } from '@angular/common';\n\n@Component({\n selector: 'coach-hcc-closure-rate-chart',\n templateUrl: './hcc-closure-rate-chart.component.html',\n host: {\n class: 'coach-hcc-closure-rate-chart'\n }\n})\nexport class HccClosureRateChartComponent extends KillSubscriptions implements OnInit, OnDestroy {\n\n closuresByQuarter: HccDashboardClosureRate[];\n closuresByMonth: HccDashboardClosureRate[];\n closuresTableData: HccClosureRateDataItem[][];\n closuresTableHeaderData: HccClosureRateDataItem[];\n\n public chartId = 'hcc-closure-rate-chart-' + Math.random();\n private chart: am5xy.XYChart;\n private chartRoot: am5.Root;\n private xAxis: am5xy.Axis;\n private yAxis: am5xy.Axis;\n private trendingSeries: am5xy.LineSeries;\n private compareSeries: am5xy.LineSeries;\n\n public readonly quarter = 'Quarter';\n public readonly month = 'Month';\n\n public toggleOptions: string[] = [this.quarter, this.month];\n public selectedToggle$ = new BehaviorSubject(this.quarter);\n public selectedToggle = this.quarter;\n\n public selectedCompareIndex = 0;\n\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private hccDashboardService: HccDashboardService,\n private hccDashboardFilterService: HccDashboardFilterService,\n private hierarchyTierService: HierarchyTierService,\n ) {\n super();\n }\n\n ngOnInit(): void {\n combineLatest([this.hierarchyTierService.currentTier$, this.hccDashboardFilterService.filterModel$, this.selectedToggle$]).pipe(\n takeUntil(this.killTrigger),\n switchMap(x => {\n const [tierInfo, filterValue, compareTo] = x;\n const tierNum = filterValue?.isCinSelected ? -1 : tierInfo.tier;\n const tierId = filterValue?.isCinSelected ? filterValue.selectedCin?.id.toString() : tierInfo.selectedTierId;\n\n return this.hccDashboardService.hccDashboardClosureRatesGet(\n {\n TierNum: tierNum,\n TierId: tierId,\n AttributionStatus: filterValue == null || !filterValue.isMostAssignable ? ATTRIBUTED : MOST_ASSIGNABLE,\n Tier1Id: tierNum > 1 ? tierInfo.selectedItem.tier1_ID : null,\n Tier2Id: tierNum > 2 ? tierInfo.selectedItem.tier2_ID : null,\n Tier3Id: tierNum > 3 ? tierInfo.selectedItem.tier3_ID : null,\n DatePart: compareTo == null || compareTo.length === 0 ? null : compareTo[0]\n }\n );\n })).subscribe(x => {\n if (x.length < 3) {\n throw new Error(`Expected hccDashboardClosureRatesGet to return at least 3 result sets. Found ${x.length}.`);\n }\n\n this.selectedCompareIndex = 0;\n\n if (this.chartRoot) {\n this.chartRoot.dispose();\n }\n\n const hasAnyData = x.some(values => values.length > 0);\n\n if (hasAnyData) {\n this.closuresByQuarter = x[0];\n this.closuresByMonth = x[1];\n const closureData = x.slice(2);\n\n this.closuresTableData = closureData.map(array => array.map(x => {\n const item = x as HccClosureRateDataItem;\n item.tierTitleHtml = this.getTierName(item);\n return item;\n }).sort(this.sortByDateValue));\n\n this.selectedCompareIndex = this.closuresTableData.findIndex(x => x.length > 0);\n this.closuresTableHeaderData = this.closuresTableData[this.selectedCompareIndex];\n\n this.chart = this.configureChart();\n } else {\n this.closuresByQuarter = undefined;\n this.closuresByMonth = undefined;\n this.closuresTableData = undefined;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.chart?.dispose();\n }\n\n getTierName(item: HccClosureRateDataItem): string {\n const currentTierItem = this.hierarchyTierService.currentTier$.value;\n let tierName: string;\n\n switch (item.tierID) {\n case currentTierItem.selectedTierId:\n tierName = 'Last Year';\n break;\n case currentTierItem.selectedItem.tier1_ID:\n tierName = 'ACO';\n break;\n case currentTierItem.selectedItem.tier2_ID:\n tierName = 'Community';\n break;\n case currentTierItem.selectedItem.tier3_ID:\n tierName = 'Participant';\n break;\n }\n\n const tierHtml = `${tierName} (${item.dtYear})`;\n\n return tierHtml;\n }\n\n private configureChart(): am5xy.XYChart {\n const root = this.chartRoot = am5.Root.new(this.chartId);\n\n root.setThemes([\n am5themes_animated.new(root)\n ]);\n\n const xyChart = am5xy.XYChart.new(root, {\n panX: true,\n panY: true,\n maxTooltipDistance: 0,\n pinchZoomX: true\n });\n\n const chart = root.container.children.push(xyChart);\n\n chart.get('colors').set('colors', [\n am5.color('#007D8A'),\n am5.color('#B3B2B0')\n ]);\n\n const axis = this.getXAxis(root);\n const xAxis = this.xAxis = chart.xAxes.push(axis);\n\n xAxis.get('renderer').grid.template.set('forceHidden', true);\n\n const yAxis = this.yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, {\n min: 0,\n max: 100,\n renderer: am5xy.AxisRendererY.new(root, {})\n }));\n\n chart.set('cursor', am5xy.XYCursor.new(root, {}));\n\n // Closure rate trending line\n this.trendingSeries = this.getTrendingRateSeries(root, xAxis, yAxis);\n const series = chart.series.push(this.trendingSeries);\n\n // Compare to rate trending line\n this.compareSeries = this.getCompareToSeries(root, xAxis, yAxis);\n const series2 = chart.series.push(this.compareSeries);\n\n series.get('tooltip').label.adapters.add('html', (text, target) => {\n const closureItem: ClosureRateChartItem = target?.dataItem?.dataContext as ClosureRateChartItem;\n\n let tooltipText = '';\n\n if (this.selectedToggle === this.quarter) {\n tooltipText = `\n
\n
${getNameFromMonthNumber(closureItem?.months[0]?.dtValue - 1)}: ${formatPercent(closureItem?.months[0]?.avgClosure, this.locale)}
\n
${getNameFromMonthNumber(closureItem?.months[1]?.dtValue - 1)}: ${formatPercent(closureItem?.months[1]?.avgClosure, this.locale)}
\n
${getNameFromMonthNumber(closureItem?.months[2]?.dtValue - 1)}: ${formatPercent(closureItem?.months[2]?.avgClosure, this.locale)}
\n
\n `;\n } else {\n tooltipText = `\n
\n
${formatPercent(closureItem?.value / 100, this.locale)}
\n
\n `;\n }\n\n return tooltipText;\n });\n\n series.events.once('datavalidated', () => {\n series.bullets.push((root, series, dataItem) => {\n const closureItem: ClosureRateChartItem = dataItem?.dataContext as ClosureRateChartItem;\n\n const bullet = am5.Container.new(root, {\n });\n\n const bulletCircle = am5.Circle.new(root, {\n radius: 5,\n fill: am5.color('#FFF'),\n stroke: series.get('fill'),\n });\n\n bullet.children.push(bulletCircle);\n\n const hasLabel = this.selectedToggle === this.quarter || closureItem?.intervalValue % 3 === 0;\n\n if (hasLabel) {\n bullet.children.push(am5.Label.new(root, {\n html: `${formatPercent(closureItem?.value / 100, this.locale)}`,\n centerX: 30,\n centerY: am5.percent(0),\n dx: 10\n }));\n }\n\n return am5.Bullet.new(root, {\n sprite: bullet,\n });\n });\n });\n\n series.bulletsContainer._setParent(chart.seriesContainer);\n\n const currentYear = new Date().getFullYear();\n const closureRates = this.selectedToggle === this.quarter ? this.closuresByQuarter : this.closuresByMonth;\n\n const sortedData = closureRates.filter(x => x.dtYear === currentYear).sort(this.sortByDateValue);\n const data = sortedData.map(x => { return { interval: this.getInterval(x), value: x.avgClosure * 100, months: this.getMonths(x), intervalValue: x.dtValue }; });\n\n // Compare defaults to the last year data\n const compareData = this.getCompareData(this.selectedCompareIndex);\n\n if (compareData.length > 0) {\n xAxis.data.setAll(compareData);\n } else {\n xAxis.data.setAll(data);\n }\n\n series.data.setAll(data);\n series2.data.setAll(compareData);\n\n series.appear();\n series2.appear();\n\n chart.appear(1000, 100);\n\n return chart;\n }\n\n private getXAxis(root: am5.Root): am5xy.Axis {\n const axis = am5xy.CategoryAxis.new(root, {\n categoryField: 'interval',\n renderer: am5xy.AxisRendererX.new(root, {\n minGridDistance: 20\n })\n });\n\n return axis;\n }\n\n private getCompareData(index: number): ClosureRateChartItem[] {\n return this.closuresTableData[index].map(x => { return { interval: this.getInterval(x), value: x.avgClosure * 100, months: this.getMonths(x), intervalValue: x.dtValue }; });\n }\n\n private getTrendingRateSeries(root: am5.Root, xAxis: am5xy.Axis, yAxis: am5xy.Axis): am5xy.LineSeries {\n const tooltip = am5.Tooltip.new(root, {});\n const series = am5xy.LineSeries.new(root, {\n name: 'Current',\n xAxis: xAxis,\n yAxis: yAxis,\n valueYField: 'value',\n categoryXField: 'interval',\n legendValueText: '{valueY}',\n tooltip: tooltip\n });\n\n return series;\n }\n\n private getCompareToSeries(root: am5.Root, xAxis: am5xy.Axis, yAxis: am5xy.Axis): am5xy.LineSeries {\n const series = am5xy.LineSeries.new(root, {\n name: 'Last Year',\n xAxis: xAxis,\n yAxis: yAxis,\n valueYField: 'value',\n categoryXField: 'interval',\n legendValueText: '{valueY}',\n stroke: am5.color('#B3B2B0')\n });\n\n return series;\n }\n\n getInterval(item: HccDashboardClosureRate): string {\n if (this.selectedToggle === this.quarter) {\n return `${item.dtPart}${item.dtValue}`;\n } else {\n return getNameFromMonthNumber(item.dtValue - 1);\n }\n }\n\n getMonths(item: HccDashboardClosureRate): HccDashboardClosureRate[] {\n return this.closuresByMonth.filter(x => x.dtValue <= item.dtValue * 3 && x.dtValue > (item.dtValue - 1) * 3).sort(this.sortByDateValue);\n }\n\n sortByDateValue(a: HccDashboardClosureRate, b: HccDashboardClosureRate): number {\n return a.dtValue - b.dtValue;\n }\n\n compareToggle(value: string): void {\n this.selectedToggle$.next(value);\n }\n\n setSelectedCompare(array: HccClosureRateDataItem[], index: number): void {\n this.selectedCompareIndex = index;\n this.chart.series.removeValue(this.compareSeries);\n this.compareSeries.dispose();\n\n this.compareSeries = this.getCompareToSeries(this.chartRoot, this.xAxis, this.yAxis);\n const newSeries = this.chart.series.push(this.compareSeries);\n const compareData = this.getCompareData(index);\n\n newSeries.data.setAll(compareData);\n newSeries.appear();\n }\n\n}\n\nclass ClosureRateChartItem {\n intervalValue: number;\n interval: string;\n value: number;\n months: HccDashboardClosureRate[];\n}\n","\n
\n
\n \n
\n
Annual Closure Rate\n \n \n
\n
\n
\n \n \n ACO AVERAGE = {{acoAverage |\n number:'1.0-0'}}%\n
\n
\n\n \n
\n
\n \n
\n
Your Top 5 Open Chronic\n Conditions\n \n \n
\n
\n
\n
\n
\n
{{i+1}}. {{opportunity.hccDesc}}
\n
{{i+1}}. {{opportunity.hccDesc}}
\n\n
{{opportunity.opportunityCount}}
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
Quick Links to Your Care Patient Lists\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n\n
\n
\n\n\n","import { Component, OnInit } from '@angular/core';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { ChartItem } from '../chart-item';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { HccDashboardTierMetricsService } from '../metrics/hcc-dashboard-tier-metrics.service';\nimport { HccDasbhoardCodingOpportunitiesService } from '../coding-opportunities/hcc-dasbhoard-coding-opportunities.service';\nimport { HccDashboardCodingOpportunity } from '../coding-opportunities/hcc-dashboard-coding-opportunity';\nimport { GridFilterService, PATIENT_DETAIL_REPORT_GRID_KEY } from '@shared/components/grid/grid-filter.service';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { CarePatientItem, TrackFeatureConstants } from '@shared/models/module-constants';\nimport { HccDashboardService } from '@api/track/services';\nimport { HccDashboardFilterService } from '../hcc-dashboard-filter.service';\nimport { Observable, combineLatest } from 'rxjs';\nimport { ATTRIBUTED, MOST_ASSIGNABLE } from '@track/track-constants';\nimport { HccDashboardDiseaseGroupSummary } from '@api/track/models';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'coach-hcc-dashboard-summary',\n templateUrl: './hcc-dashboard-summary.component.html',\n styleUrls: ['./hcc-dashboard-summary.component.scss']\n})\nexport class HccDashboardSummaryComponent extends KillSubscriptions implements OnInit {\n view: number[] = [400, 275];\n acoAverage: number;\n annualClosureRate: ChartItem[] = [];\n codingOpportunities: HccDashboardCodingOpportunity[] = [];\n opportunityMax: number;\n colorScheme = {\n domain: ['#007D8A', '#E44D25', '#CFC0BB', '#7aa3e5', '#a8385d', '#aae3f5']\n };\n canAccessPhi: boolean;\n hccEnhanced2FeatureFlag = TrackFeatureConstants.HccDashboardEnhanced2FeatureFlag;\n diseaseGroups$: Observable;\n top50Preset: CarePatientItem.HccTop50;\n\n constructor(\n private hierarchyTierService: HierarchyTierService,\n private opportunitiesService: HccDasbhoardCodingOpportunitiesService,\n private gridFilterService: GridFilterService,\n private hccDashboardService: HccDashboardService,\n protected filterService: GridFilterService,\n private hccDashboardFilterService: HccDashboardFilterService,\n private userAccessService: UserAccessService,\n private hccDashboardTierMetricsService: HccDashboardTierMetricsService,\n private route: ActivatedRoute,\n private router: Router) {\n super();\n }\n\n ngOnInit(): void {\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger)).subscribe(tier => {\n if (tier != null && tier.tier != 1) {\n this.resetCharts();\n this.getTierMetrics(tier.tier, tier.selectedTierId);\n this.getOpportunities(tier.tier, tier.selectedTierId);\n }\n });\n\n this.userAccessService.currentAccess$.pipe(takeUntil(this.killTrigger)).subscribe(access => {\n this.canAccessPhi = access?.phi;\n });\n\n this.diseaseGroups$ =\n combineLatest([this.hierarchyTierService.currentTier$, this.hccDashboardFilterService.filterModel$]).pipe(\n takeUntil(this.killTrigger),\n switchMap(x => {\n const [tierInfo, filterValue] = x;\n const tierNum = filterValue?.isCinSelected ? -1 : tierInfo.tier;\n const tierId = filterValue?.isCinSelected ? filterValue.selectedCin?.id.toString() : tierInfo.selectedTierId;\n\n return this.hccDashboardService.hccDashboardDiseaseGroupsGet(\n {\n tierNum: tierNum,\n tierId: tierId,\n attributionStatus: filterValue == null || !filterValue.isMostAssignable ? ATTRIBUTED : MOST_ASSIGNABLE\n }\n );\n }));\n }\n\n formatValue = (value: any) => {\n const roundedValue = Math.round(value);\n return `${roundedValue}%`;\n }\n\n resetCharts(): void {\n this.codingOpportunities = [];\n this.annualClosureRate = [];\n this.acoAverage = 0;\n }\n\n getTierMetrics(tierNum: number, tierId: string): void {\n this.hccDashboardTierMetricsService.getMetrics(tierNum, tierId).subscribe(x => {\n let currentYearMetrics = x.find(metric => metric.currentYear);\n\n if (currentYearMetrics == null) {\n currentYearMetrics = {\n acoClosureRate: null, conditionCount: null, currentYear: null, q1ClosureRate: null,\n q1Goal: null, q2ClosureRate: null, q2Goal: null, q3ClosureRate: null, q3Goal: null, q4ClosureRate: null,\n q4Goal: null, remediation: null, tierClosureRate: null, lastUpdateDate: null\n };\n }\n\n const metricsResults = [{ name: 'Tier Closure Rate', value: currentYearMetrics.tierClosureRate }];\n this.annualClosureRate = [...metricsResults];\n this.acoAverage = currentYearMetrics.acoClosureRate;\n });\n }\n\n getOpportunities(tierNum: number, tierId: string): void {\n this.opportunitiesService.getOpportunites(tierNum, tierId).subscribe(x => {\n this.codingOpportunities = x;\n });\n }\n\n navigateToPatientDetails(): void {\n this.gridFilterService.resetFilters(PATIENT_DETAIL_REPORT_GRID_KEY);\n }\n\n navigateToTop50(): void {\n const path = '../../../care/patients';\n\n this.router.navigate([path], { relativeTo: this.route.parent, queryParams: { filterPreset: CarePatientItem.HccTop50 } });\n }\n\n}\n","
\n \n\n
\n \n
\n
\n
\n
Chronic Conditions Dashboard\n
\n \n \n
\n
\n
\n\n\n \n
\n
","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { HccDashboardTierMetricsService } from '@track/track-clinical/hcc-dashboard/metrics/hcc-dashboard-tier-metrics.service';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { NavigationStart, Router } from '@angular/router';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { CoachTabs } from '@shared/components/coach-tabs/coach-tabs';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { TrackFeatureConstants } from '@shared/models/module-constants';\nimport { HccDashboardFilterService } from './hcc-dashboard-filter.service';\nimport { AttributionFilterModel } from '@shared/components/attribution-filter-pane/attribution-filter-model';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { combineLatest } from 'rxjs';\nimport { deepCopy } from '@shared/utilities';\n\n@Component({\n selector: 'coach-hcc-dashboard',\n templateUrl: './hcc-dashboard.component.html',\n host: {\n class: 'coach-hcc-dashboard'\n }\n})\nexport class HccDashboardComponent extends KillSubscriptions implements OnInit, OnDestroy {\n hccEnhanced2FeatureFlag = TrackFeatureConstants.HccDashboardEnhanced2FeatureFlag;\n isDashboardRoute = false;\n canAccessPhi: boolean;\n\n private readonly CIN_NAME = 'CIN';\n\n public tabsData: CoachTabs[] = [\n {\n name: 'Overview',\n routerLink: ['overview'],\n },\n {\n name: 'Clinicians',\n routerLink: ['clinicians'],\n }\n ];\n\n formatValue = (value: any) => {\n const roundedValue = Math.round(value);\n return `${roundedValue}%`;\n }\n\n constructor(\n public hccDashboardTierMetricsService: HccDashboardTierMetricsService,\n private userAccessService: UserAccessService,\n private featureFlagService: FeatureFlagService,\n private hccDashboardFilterService: HccDashboardFilterService,\n private hierarchyTierService: HierarchyTierService,\n private router: Router) {\n\n super();\n\n // This is a temporary solution to account for some awkwardness of switching to nested views\n this.router.events.pipe(takeUntil(this.killTrigger)).subscribe((event) => {\n if (event instanceof NavigationStart) {\n this.setRouteData(event.url);\n }\n });\n }\n\n ngOnInit(): void {\n this.setRouteData(this.router.url);\n\n const hasFeature = this.featureFlagService.hasFeatureFlag(this.hccEnhanced2FeatureFlag);\n\n if (hasFeature) {\n this.tabsData.splice(1, 0, {\n name: 'Practices',\n routerLink: ['practices'],\n });\n }\n\n this.userAccessService.currentAccess$.pipe(takeUntil(this.killTrigger)).subscribe(access => {\n this.canAccessPhi = access?.phi;\n\n if (this.canAccessPhi && !this.tabsData?.find(x => x.name === 'Patients')) {\n this.tabsData.push({\n name: 'Patients',\n routerLink: ['patients'],\n });\n }\n });\n\n combineLatest([this.hierarchyTierService.currentTier$, this.hccDashboardFilterService.filterModel$]).pipe(\n takeUntil(this.killTrigger),\n filter(x => x[0] != null)).subscribe(x => {\n const [tierInfo, filterValue] = x;\n\n const cinAdded = this.tabsData.some(x => x.name === this.CIN_NAME);\n\n if (tierInfo.selectedItem.cinFlag === 1 && filterValue?.isCinSelected && filterValue?.selectedCin != null) {\n if (!cinAdded) {\n this.tabsData.splice(1, 0, {\n name: this.CIN_NAME,\n routerLink: ['cins'],\n });\n this.tabsData = deepCopy(this.tabsData);\n }\n } else {\n const index = this.tabsData.findIndex(x => x.name === this.CIN_NAME);\n if (index > -1) {\n this.tabsData.splice(index, 1);\n this.tabsData = deepCopy(this.tabsData);\n }\n }\n });\n }\n\n setRouteData(url: string): void {\n const urlSegments = url.split('/');\n const path = urlSegments[urlSegments.length - 1];\n this.isDashboardRoute = path === 'overview' || path === 'dashboard';\n }\n\n filterModelChange(model: AttributionFilterModel): void {\n this.hccDashboardFilterService.setFilterModel(model);\n }\n}\n","
\n
\n \n
\n

Chronic Conditions Dashboard

\n \n

A dashboard and reporting tool that provides powerful insights around chronic conditions and diagnoses capture opportunities.

\n
\n \n
\n
\n
\n \n
\n

Time Tracking

\n \n

Monthly reports of cumulative Care Management hours to support tracking and billing efforts.

\n
\n \n
\n
\n
\n \n ","import { Component, OnInit } from '@angular/core';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { TrackComponentConstants, ModuleConstants } from '@shared/models/module-constants';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n PatientService,\n ITrackApiPatient,\n ITrackApiAwvPatient,\n IWPAPIPatient,\n ITrackCohortPatient,\n ITrackApiEdUtilizationPatient,\n} from '@shared/services/patient/patient.service';\n@Component({\n selector: 'coach-track-clinical-widgets',\n templateUrl: './track-clinical-widgets.component.html',\n styleUrls: ['./track-clinical-widgets.component.scss']\n})\nexport class TrackClinicalWidgetsComponent implements OnInit {\n public tier: IHierarchyTier;\n public orgId: string;\n private get tierId() {\n return this?.tier?.selectedTierId;\n }\n private get tierNum() {\n return this?.tier?.tier;\n }\n constructor(private _patientService: PatientService, private HierarchyTierService: HierarchyTierService) { \n HierarchyTierService.currentTier$.pipe().subscribe(async (tier) => {\n if (this.tier?.selectedTierId !== tier?.selectedTierId) {\n this.tier = tier;\n if (this.tier?.selectedTierId) {\n this.orgId = await(this._patientService.getWpOrgIdFromTierId(this.tier.selectedTierId));\n } else {\n this.orgId = null;\n }\n }\n });\n }\n careModule = ModuleConstants.CareModule;\n trackHccComponent = TrackComponentConstants.ChronicConditions;\n\n ngOnInit(): void {\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'coach-track-clinical',\n templateUrl: './track-clinical.component.html'\n})\nexport class TrackClinicalComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","","
\n \n
\n
Time Tracking Settings
\n
\n
\n \n \n \n \n
\n \n
\n
\n \n \n
\n
\n
\n
","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport {\n TimeTrackingMonth,\n TimeTrackingYear,\n} from './track-time-tracking-interfaces';\nimport moment from 'moment';\n@Component({\n selector: 'coach-track-time-tracking-filter',\n templateUrl: './track-time-tracking-filter.component.html',\n host: {\n class: 'track-time-tracking-filter',\n },\n})\nexport class TrackTimeTrackingFilterComponent implements OnInit {\n public isFilterPaneOpen: boolean;\n public currentYear = moment().year();\n public currentMonth = moment().month();\n public selectedYear: TimeTrackingYear;\n public selectedMonth: TimeTrackingMonth;\n @Output() selectedYearChange: EventEmitter = new EventEmitter();\n @Output() selectedMonthChange: EventEmitter = new EventEmitter();\n @Output() export: EventEmitter = new EventEmitter();\n @Input() selectedList: {detailed: boolean}\n\n years: TimeTrackingYear[] = [];\n\n months: TimeTrackingMonth[] = [\n { display: 'January', value: 0 },\n { display: 'February', value: 1 },\n { display: 'March', value: 2 },\n { display: 'April', value: 3 },\n { display: 'May', value: 4 },\n { display: 'June', value: 5 },\n { display: 'July', value: 6 },\n { display: 'August', value: 7 },\n { display: 'September', value: 8 },\n { display: 'October', value: 9 },\n { display: 'November', value: 10 },\n { display: 'December', value: 11 },\n ];\n\n constructor() {\n let todayYear = moment().year()\n while (todayYear >= 2019) {\n this.years.push({ display: String(todayYear), value: todayYear });\n todayYear--;\n }\n }\n\n ngOnInit(): void {\n this.selectedYear = this.years.find(x => x.value === this.currentYear);\n this.yearSelected()\n this.selectedMonth = this.months[this.currentMonth];\n this.monthSelected()\n\n }\n\n public applyClick(): void {\n console.log(\n `Selected values: ${this.selectedMonth.display} ${this.selectedYear.display}`\n );\n }\n public yearSelected(): void {\n this.selectedYearChange.emit(this.selectedYear);\n }\n\n public monthSelected(): void {\n this.selectedMonthChange.emit(this.selectedMonth);\n }\n public exportClick(action:string): void {\n this.export.emit(action)\n }\n}\n","\n\n
\n
\n \n \n
\n
\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { OrgService } from '@shared/services/org-service/org.service';\nimport { wpapi, wpdb } from \"@hcd-caravanhealth/pkg-wptypes\";\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\n\nimport { PatientService, ITrackApiPatient } from '@shared/services/patient/patient.service';\nimport moment from 'moment';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\n\nimport { Patient } from '@shared/models/patient';\nimport { MaskPipe } from '@shared/pipes/mask.pipe';\nimport { GridApi, ColumnApi, ColDef } from 'ag-grid-community';\n\n@Component({\n selector: 'coach-track-time-tracking',\n templateUrl: './track-time-tracking.component.html',\n host: {\n class: 'track-time-tracking'\n }\n})\nexport class TrackTimeTrackingComponent implements OnInit {\n public tier: IHierarchyTier;\n public orgId: string;\n private get tierId() {\n return this?.tier?.selectedTierId;\n }\n private get tierNum() {\n return this?.tier?.tier;\n }\n timeTrackingEvents: {\n summary: { events: (wpapi.model.TimeTrackingEvent & any)[] };\n detailed: {\n count: number;\n events: (wpapi.model.TimeTrackingEvent & any)[];\n patients: wpapi.model.Patient[];\n professionals: wpapi.model.Professional[];\n };\n } = {\n summary: null,\n detailed: null\n };\n selectedList: {\n detailed: boolean;\n } = { detailed: false };\n selectedMonth: { display: string; value: number } = { display: null, value: null };\n selectedYear: { display: string; value: number } = { display: null, value: null };\n endDate: string;\n gridApi: GridApi;\n columnApi: ColumnApi;\n trackPatientsById: {\n [key: string]: ITrackApiPatient;\n } = {};\n readonly defaultColDef: ColDef = {\n resizable: true\n };\n readonly detailedDefs = [\n {\n headerName: 'Full name',\n field: 'patientName',\n minWidth: 75,\n sortable: true\n },\n {\n headerName: 'DOB',\n field: 'patientDob',\n sortable: true\n },\n {\n headerName: 'MBI',\n field: 'patientMbi',\n sortable: true\n },\n {\n headerName: 'Date',\n field: 'createdAt',\n minWidth: 75,\n sortable: true\n },\n {\n headerName: 'Duration (mins)',\n field: 'durationMinutes',\n sortable: true\n },\n {\n headerName: 'Activity',\n field: 'activity',\n minWidth: 75,\n sortable: true\n },\n {\n headerName: 'Notes',\n field: 'notes',\n minWidth: 75,\n sortable: true\n },\n {\n headerName: 'Entered By',\n field: 'providerName',\n minWidth: 75,\n sortable: true\n }\n ];\n readonly summaryDefs = [\n {\n headerName: 'Full name',\n field: 'patientName',\n minWidth: 75,\n sortable: true\n },\n {\n headerName: 'DOB',\n field: 'patientDob',\n minWidth: 75,\n sortable: true\n },\n {\n headerName: 'MBI',\n field: 'patientMbi',\n minWidth: 75,\n sortable: true\n },\n {\n headerName: 'Total minutes',\n field: 'totalMinutes',\n minWidth: 75,\n sortable: true\n }\n ];\n mask = new MaskPipe();\n constructor(\n private _patientService: PatientService,\n private HierarchyTierService: HierarchyTierService,\n private OrgService: OrgService\n ) {\n HierarchyTierService.currentTier$.pipe().subscribe(async tier => {\n if (this.tier?.selectedTierId !== tier?.selectedTierId) {\n this.tier = tier;\n if (this.tier?.selectedTierId) {\n this.orgId = await this._patientService.getWpOrgIdFromTierId(this.tier.selectedTierId);\n if (this.selectedMonth.display && this.selectedYear.display) {\n let selectedDate = moment().set('month', this.selectedMonth.value).set('year', this.selectedYear.value);\n this.getTimeTrackingEventsForOrg(\n this.orgId,\n selectedDate.startOf('month').toString(),\n selectedDate.endOf('month').toString(),\n true,\n true\n );\n }\n } else {\n this.orgId = null;\n }\n }\n });\n }\n ngOnInit(): void {}\n\n // ================ LISTENERS ================\n onGridReady(param: any): void {\n // aggrid on init\n this.gridApi = param.api;\n this.columnApi = param.columnApi;\n }\n public onFirstDataRendered(params: any): void {\n params.api.sizeColumnsToFit();\n }\n public onRowClicked(event: any): void {}\n public selectedYearChange(date): void {\n this.selectedYear = date;\n if (this.selectedMonth.display) {\n let selectedDate = moment().set('month', this.selectedMonth.value).set('year', this.selectedYear.value);\n if (this.orgId) {\n this.getTimeTrackingEventsForOrg(\n this.orgId,\n selectedDate.startOf('month').toString(),\n selectedDate.endOf('month').toString(),\n true,\n true\n );\n }\n }\n }\n public selectedMonthChange(date): void {\n this.selectedMonth = date;\n if (this.selectedYear.display) {\n let selectedDate = moment().set('month', this.selectedMonth.value).set('year', this.selectedYear.value);\n if (this.orgId) {\n this.getTimeTrackingEventsForOrg(\n this.orgId,\n selectedDate.startOf('month').toString(),\n selectedDate.endOf('month').toString(),\n true,\n true\n );\n }\n }\n }\n\n public exportClicked(action): void {\n action == 'csv' ? this.exportCSV() : this.copyToClipboard();\n }\n async exportCSV() {\n this.gridApi.exportDataAsCsv({\n suppressQuotes: false,\n columnSeparator: ',',\n allColumns: true,\n fileName: `timeTrackingEvents_${this.selectedList?.detailed ? 'detailed' : 'summary'}_${\n this.selectedMonth.display\n }/${this.selectedYear.display}.csv`\n });\n }\n public copyToClipboard(): void {\n let copy = this.gridApi.getDataAsCsv({\n suppressQuotes: false,\n columnSeparator: ',',\n allColumns: true,\n fileName: `timeTrackingEvents_${this.selectedList?.detailed ? 'detailed' : 'summary'}_${\n this.selectedMonth.display\n }/${this.selectedYear.display}.csv`\n });\n const element = document.createElement('textarea');\n element.value = copy;\n document.body.appendChild(element);\n element.select();\n document.execCommand('copy');\n document.body.removeChild(element);\n }\n // ================ API CALLS ================\n async getTimeTrackingEventsForOrg(\n orgId: string,\n startDate: string,\n endDate: string,\n patientDetails: boolean,\n professionalDetails: boolean\n ) {\n if (!orgId) {\n this.timeTrackingEvents = {\n summary: { events: [] },\n detailed: { count: null, events: [], patients: null, professionals: null }\n };\n return;\n }\n\n this.timeTrackingEvents.detailed = await this.OrgService.getTimeTrackingEventsForOrg(\n orgId,\n startDate,\n endDate,\n patientDetails,\n professionalDetails\n );\n\n // Patients\n let patientsObj = await this.patientsArrayToObjById(this.timeTrackingEvents.detailed.patients);\n // Profesionals\n let professionalsObj = {};\n\n this.timeTrackingEvents.detailed.professionals.forEach(professional => {\n professionalsObj[professional._id] = professional;\n });\n\n // Events\n let summaryObj = {};\n this.timeTrackingEvents.detailed.events.forEach(event => {\n const patient = patientsObj[event.patientId];\n const professional = professionalsObj[event.providerId];\n event.patientName = `${patient?.lastName} ${patient?.firstName}`.trim();\n event.patientMrn = this.mask.transform(patient?.mrn, 6);\n event.patientDob = patient?.dob;\n event.patientMbi = this.mask.transform(patient?.mbi, 6);\n if (professional.firstName || professional.lastName) {\n event.providerName = `${professional.firstName} ${professional.lastName}`.trim();\n } else if (professional.email) {\n event.providerName = professional.email;\n } else {\n event.providerName = `[${professional._id} is missing name]`;\n }\n event.durationMinutes = Math.floor(event.durationSeconds / 60);\n event.createdAt = moment(event.createdAt).format('MM/DD/YYYY, hh:mm:ss');\n if (!summaryObj[event.patientId]) {\n summaryObj[event.patientId] = {\n patientName: `${patient?.lastName} ${patient?.firstName}`,\n patientMrn: this.mask.transform(patient?.mrn, 6),\n patientMbi: this.mask.transform(patient?.mbi, 6),\n patientDob: patient?.dob,\n totalMinutes: Math.floor(event.durationSeconds / 60)\n };\n } else {\n summaryObj[event.patientId].totalMinutes += Math.floor(event.durationSeconds / 60);\n }\n });\n\n this.timeTrackingEvents.summary = { events: [] };\n\n for (let event in summaryObj) {\n this.timeTrackingEvents.summary.events.push(summaryObj[event]);\n }\n }\n async patientsArrayToObjById(patients): Promise<{ [aboutUserId: string]: Patient }> {\n // Promise\n let result = {};\n if (Object.keys(this.trackPatientsById).length < 1) {\n let patients = await this._patientService.getTrackPatients(this.tierNum, this.tierId);\n patients?.results?.forEach(p => {\n this.trackPatientsById[p.chPatId] = p;\n });\n }\n patients.forEach(patient => {\n // CC-3570 don't filter by account type, some may be accountType == \"patient\" and there may be others in the future\n const chPatId = Patient.getChPatIdAndTierIdFromCarePatient(patient)?.chPatId;\n if (chPatId) {\n let trackPatientData = this.trackPatientsById[chPatId];\n if (trackPatientData) {\n patient = Object.assign(patient, trackPatientData || {});\n } else {\n console.warn(`Patient ${chPatId} has no track data`);\n }\n } else {\n console.warn(`Patient ${patient._id} has no chPatId`);\n }\n result[patient._id] = patient;\n });\n return result;\n }\n}\n","import { Component, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { HccDashboardService } from '@api/track/services';\nimport { GridFilterService, PRACTICES_REPORT_GRID_KEY } from '@shared/components/grid/grid-filter.service';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { HccDashboardFilterService } from '../../hcc-dashboard-filter.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { combineLatest } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { ATTRIBUTED, MOST_ASSIGNABLE } from '@track/track-constants';\nimport { formatNumber } from '@angular/common';\n\n@Component({\n selector: 'coach-practices-report',\n templateUrl: './practices-report.component.html',\n styleUrls: ['./practices-report.component.scss']\n})\nexport class PracticesReportComponent extends PersistentGridFilters implements OnInit {\n\n tierNum: number;\n tierId: string;\n\n columnDefs = [\n {\n headerName: 'Practice Name', field: 'practiceName', tooltipField: 'practiceName', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Displays the name of the practice included in the hierarchy'\n },\n {\n headerName: 'Principal Participant', field: 'principalName', tooltipField: 'principalName', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Displays the principal participant name included in the hierarchy'\n },\n {\n headerName: 'Patient Count', field: 'patientCount', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Count of patient attributed or attributed/assignable to the clinician/RHC/FQHC based on filter selection.'\n },\n {\n hide: true, // Hidden with ZBR-12923\n headerName: 'Chronic Condition Open Gaps', field: 'hccGaps', sortable: true, filter: true, resizable: true,\n headerTooltip: 'Count of open chronic condition gaps'\n },\n {\n headerName: 'Annual Closure Rate', field: 'overallHCCClosureRate', sortable: true, filter: true, resizable: true,\n valueFormatter: params => formatNumber(params.value, this.locale, '1.0-3'),\n headerTooltip: 'Percentage of chronic conditions gaps closed by claims in the current calendar year.'\n }\n ];\n\n rowData: any;\n\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private hccDashboardService: HccDashboardService, \n protected filterService: GridFilterService,\n private hccDashboardFilterService: HccDashboardFilterService,\n private hierarchyTierService: HierarchyTierService) {\n super(filterService, PRACTICES_REPORT_GRID_KEY);\n }\n\n ngOnInit(): void {\n this.rowData =\n combineLatest([this.hierarchyTierService.currentTier$, this.hccDashboardFilterService.filterModel$]).pipe(\n takeUntil(this.killTrigger),\n filter(x => x[0] != null),\n switchMap(x => {\n const [tierInfo, filterValue] = x;\n const tierNum = filterValue?.isCinSelected ? -1 : tierInfo.tier;\n const tierId = filterValue?.isCinSelected ? filterValue.selectedCin?.id.toString() : tierInfo.selectedTierId;\n\n return this.hccDashboardService.hccDashboardPracticesGet(\n {\n tierNum: tierNum,\n tierId: tierId,\n attributionStatus: filterValue == null || !filterValue.isMostAssignable ? ATTRIBUTED : MOST_ASSIGNABLE\n }\n );\n }));\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n\n this.gridColumnApi.getColumn('hccGaps').setSort('desc');\n }\n\n onFirstDataRendered(params: any): void {\n if (this.hasFilterModel()) {\n this.restoreFilterModel(params.api);\n }\n }\n}","\n \n\n\n\n\n\n\n\n\n","import { formatNumber } from '@angular/common';\nimport { Component, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { HccDashboardService } from '@api/track/services';\nimport { CINS_REPORT_GRID_KEY, GridFilterService } from '@shared/components/grid/grid-filter.service';\nimport { PersistentGridFilters } from '@shared/components/grid/persistent-grid-filters';\nimport { HccDashboardFilterService } from '../../hcc-dashboard-filter.service';\n\nimport { combineLatest, of } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { ATTRIBUTED, MOST_ASSIGNABLE } from '@track/track-constants';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'coach-cins-report',\n templateUrl: './cins-report.component.html',\n styleUrls: ['./cins-report.component.scss']\n})\nexport class CinsReportComponent extends PersistentGridFilters implements OnInit {\n tierNum: number;\n tierId: string;\n\n columnDefs = [\n {\n headerName: 'Community',\n field: 'communityName',\n tooltipField: 'communityName',\n sortable: true,\n filter: true,\n resizable: true,\n headerTooltip: 'Displays the name of the community included in the hierarchy'\n },\n {\n headerName: 'Patient Count',\n field: 'patientCount',\n sortable: true,\n filter: true,\n resizable: true,\n headerTooltip:\n 'Count of patient attributed or attributed/assignable to the clinician/RHC/FQHC based on filter selection.'\n },\n {\n hide: true, // Hidden with ZBR-12923\n headerName: 'Chronic Condition Open Gaps',\n field: 'hccGaps',\n sortable: true,\n filter: true,\n resizable: true,\n headerTooltip: 'Count of open chronic condition gaps'\n },\n {\n headerName: 'Annual Closure Rate',\n field: 'overallHCCClosureRate',\n sortable: true,\n filter: true,\n resizable: true,\n valueFormatter: params => formatNumber(params.value, this.locale, '1.0-3'),\n headerTooltip: 'Percentage of chronic conditions gaps closed by claims in the current calendar year.'\n }\n ];\n\n rowData: any;\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private hccDashboardService: HccDashboardService,\n protected filterService: GridFilterService,\n private hccDashboardFilterService: HccDashboardFilterService,\n private router: Router,\n private route: ActivatedRoute\n ) {\n super(filterService, CINS_REPORT_GRID_KEY);\n }\n\n ngOnInit(): void {\n this.rowData = this.hccDashboardFilterService.filterModel$.pipe(\n takeUntil(this.killTrigger),\n switchMap(filterValue => {\n const cinId = filterValue?.selectedCin?.id;\n\n if (cinId == null) {\n const path = 'overview';\n\n this.router.navigate([path], { relativeTo: this.route.parent });\n return of();\n }\n\n return this.hccDashboardService.hccDashboardCinsGet({\n cinId: cinId,\n attributionStatus: filterValue == null || !filterValue.isMostAssignable ? ATTRIBUTED : MOST_ASSIGNABLE\n });\n })\n );\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n\n this.gridColumnApi.getColumn('hccGaps').setSort('desc');\n }\n\n onFirstDataRendered(params: any): void {\n if (this.hasFilterModel()) {\n this.restoreFilterModel(params.api);\n }\n }\n}\n","\n \n\n\n\n\n\n\n\n\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { TrackComponentConstants } from '@shared/models/module-constants';\nimport { CliniciansReportComponent } from './hcc-dashboard/dashboard-reports/clinicians-report/clinicians-report.component';\nimport { PatientDetailReportComponent } from './hcc-dashboard/dashboard-reports/patient-detail-report/patient-detail-report.component';\nimport { PatientSummaryReportComponent } from './hcc-dashboard/dashboard-reports/patient-summary-report/patient-summary-report.component';\nimport { HccDashboardSummaryComponent } from './hcc-dashboard/hcc-dashboard-summary/hcc-dashboard-summary.component';\nimport { HccDashboardComponent } from './hcc-dashboard/hcc-dashboard.component';\nimport { TrackClinicalWidgetsComponent } from './track-clinical-widgets/track-clinical-widgets.component';\nimport { TrackClinicalComponent } from './track-clinical.component';\nimport { TrackTimeTrackingComponent } from './track-time-tracking/track-time-tracking.component';\nimport { PracticesReportComponent } from './hcc-dashboard/dashboard-reports/practices-report/practices-report.component';\nimport { CinsReportComponent } from './hcc-dashboard/dashboard-reports/cins-report/cins-report.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: TrackClinicalComponent,\n data: {\n label: 'Clinical',\n helpfile: 'LEARN_TRACK_CLINICAL_2020',\n },\n children: [\n {\n path: '',\n component: TrackClinicalWidgetsComponent,\n data: {\n label: 'Summary',\n helpfile: 'LEARN_TRACK_CLINICAL_2020',\n },\n },\n {\n path: 'dashboard',\n data: {\n label: 'Dashboard',\n componentId: TrackComponentConstants.ChronicConditions.valueOf(),\n helpfile: 'LEARN_TRACK_CLINICAL_2020',\n },\n children: [\n {\n path: '',\n component: HccDashboardComponent,\n data: {\n label: 'Chronic Conditions Dashboard',\n helpfile: 'LEARN_TRACK_Clinical_HCCBasic_2020',\n },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'overview',\n },\n {\n path: 'overview',\n component: HccDashboardSummaryComponent,\n data: {\n label: 'Chronic Conditions Dashboard Overview',\n helpfile: 'LEARN_TRACK_Clinical_HCCBasic_2020',\n },\n },\n {\n path: 'cins',\n component: CinsReportComponent,\n data: {\n label: 'CINs',\n helpfile: 'LEARN_TRACK_Clinical_HCCBasic_2020',\n },\n },\n {\n path: 'practices',\n component: PracticesReportComponent,\n data: {\n label: 'Practices',\n helpfile: 'LEARN_TRACK_Clinical_HCCBasic_2020',\n },\n },\n {\n path: 'clinicians',\n component: CliniciansReportComponent,\n data: {\n label: 'Clinicians',\n helpfile: 'LEARN_TRACK_Clinical_HCCBasic_2020',\n },\n },\n {\n path: 'patients/:clinician',\n component: PatientSummaryReportComponent,\n data: {\n label: 'Patients',\n requirePhi: true,\n helpfile: 'LEARN_TRACK_Clinical_HCCBasic_2020',\n },\n },\n {\n path: 'patients',\n component: PatientSummaryReportComponent,\n data: {\n label: 'Patients',\n requirePhi: true,\n helpfile: 'LEARN_TRACK_Clinical_HCCBasic_2020',\n },\n },\n {\n path: 'patientDetails/:clinician',\n component: PatientDetailReportComponent,\n data: {\n label: 'Patient Details',\n requirePhi: true,\n helpfile: 'LEARN_TRACK_Clinical_HCCBasic_2020',\n },\n },\n {\n path: 'patientDetails',\n component: PatientDetailReportComponent,\n data: {\n label: 'Patient Details',\n requirePhi: true,\n helpfile: 'LEARN_TRACK_Clinical_HCCBasic_2020',\n },\n },\n ]\n },\n ],\n },\n {\n path: 'trackTimeTracking',\n component: TrackTimeTrackingComponent,\n data: {\n label: 'Time Tracking',\n helpfile: 'LEARN_TRACK_CLINICAL_TIMETRACKING_2020',\n },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TrackClinicalRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '@shared/shared.module';\nimport { TrackClinicalComponent } from './track-clinical.component';\nimport { TrackClinicalRoutingModule } from './track-clincal-routing.module';\nimport { HccDashboardComponent } from './hcc-dashboard/hcc-dashboard.component';\nimport { NgxChartsModule } from '@swimlane/ngx-charts';\nimport { CodingOpportunityChartComponent } from './hcc-dashboard/coding-opportunities/coding-opportunity-chart/coding-opportunity-chart.component';\nimport { QuarterlyMilestoneChartComponent } from './hcc-dashboard/quarterly-milestone-chart/quarterly-milestone-chart.component';\nimport { HccConditionChartComponent } from './hcc-dashboard/hcc-condition-chart/hcc-condition-chart.component';\nimport { HistoricalQuarterlyMilestonesComponent } from './hcc-dashboard/historical-quarterly-milestones/historical-quarterly-milestones.component';\nimport { CliniciansReportComponent } from './hcc-dashboard/dashboard-reports/clinicians-report/clinicians-report.component';\nimport { PatientSummaryReportComponent } from './hcc-dashboard/dashboard-reports/patient-summary-report/patient-summary-report.component';\nimport { PatientDetailReportComponent } from './hcc-dashboard/dashboard-reports/patient-detail-report/patient-detail-report.component';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { TrackClinicalWidgetsComponent } from './track-clinical-widgets/track-clinical-widgets.component';\nimport { TrackTimeTrackingComponent } from './track-time-tracking/track-time-tracking.component';\nimport { TrackTimeTrackingFilterComponent } from './track-time-tracking/track-time-tracking-filter/track-time-tracking-filter.component';\nimport { HccDashboardSummaryComponent } from './hcc-dashboard/hcc-dashboard-summary/hcc-dashboard-summary.component';\nimport { CliniciansReport2Component } from './hcc-dashboard/dashboard-reports/clinicians-report/clinicians-report2/clinicians-report2.component';\nimport { PatientSummaryReport2Component } from './hcc-dashboard/dashboard-reports/patient-summary-report/patient-summary-report2/patient-summary-report2.component';\nimport { PatientDetailReport2Component } from './hcc-dashboard/dashboard-reports/patient-detail-report/patient-detail-report2/patient-detail-report2.component';\nimport { PracticesReportComponent } from './hcc-dashboard/dashboard-reports/practices-report/practices-report.component';\nimport { CinsReportComponent } from './hcc-dashboard/dashboard-reports/cins-report/cins-report.component';\nimport { HccTopDiseaseGroupsComponent } from './hcc-dashboard/hcc-dashboard-summary/hcc-top-disease-groups/hcc-top-disease-groups.component';\nimport { HccClosureRateChartComponent } from './hcc-dashboard/hcc-dashboard-summary/hcc-closure-rate-chart/hcc-closure-rate-chart.component';\n\n@NgModule({\n declarations: [\n TrackClinicalComponent,\n HccDashboardComponent,\n CodingOpportunityChartComponent,\n QuarterlyMilestoneChartComponent,\n HccConditionChartComponent,\n HistoricalQuarterlyMilestonesComponent,\n CliniciansReportComponent,\n PatientSummaryReportComponent,\n PatientDetailReportComponent,\n TrackClinicalWidgetsComponent,\n TrackTimeTrackingComponent,\n TrackTimeTrackingFilterComponent,\n HccDashboardSummaryComponent,\n CliniciansReport2Component,\n PatientSummaryReport2Component,\n PatientDetailReport2Component,\n PracticesReportComponent,\n CinsReportComponent,\n HccTopDiseaseGroupsComponent,\n HccClosureRateChartComponent,\n ],\n imports: [\n SharedModule,\n TrackClinicalRoutingModule,\n NgxChartsModule,\n AgGridModule,\n ],\n})\nexport class TrackClinicalModule {}\n","export const FINANCIAL_REPORTS_FEATURE = 7;\nexport const QUALITY_REPORTS_FEATURE = 16;\n\nexport const MOST_ASSIGNABLE = 'Most Assignable';\nexport const ATTRIBUTED = 'Attributed';","import { Injectable } from '@angular/core';\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { TrackReportMenuItem } from '@track/track-reports/track-report-menu-item';\nimport { HttpClient } from '@angular/common/http';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TrackReportMenuItemsService extends AzureApiBase {\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/report/menuItems');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TrackEmbeddedReport } from '@track/track-reports/track-embedded-report';\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ReportAuditRequest } from '@track/track-reports/track-report/report-audit-request';\nimport { Observable } from 'rxjs';\nimport { TrackReportParameters } from '../track-report/track-report-parameters';\nimport { Router } from '@angular/router';\nimport { TrackReportMenuItem } from '../track-report-menu-item';\nimport { environment } from 'src/environments/environment';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { CIN_REPORT_LEVEL, REGION_REPORT_LEVEL } from '@track/track-reports/track-report-filter-type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TrackReportService extends AzureApiBase {\n constructor(http: HttpClient, authService: AuthService, private router: Router, private hierarchyTierService: HierarchyTierService) {\n super(http, authService, environment.trackApiUrl, '/report');\n }\n\n public lastRunYear: number;\n public lastRunQuarter: number;\n\n getAccessToken(reportId: string): Observable {\n const params: HttpParams = new HttpParams().set('reportId', reportId);\n return this.getSingle('/accessToken', params);\n }\n\n logReportAudit(request: ReportAuditRequest): Observable {\n return this.post('/audit', request);\n }\n\n setLastRun(year: number, quarter: number): void {\n this.lastRunYear = year;\n this.lastRunQuarter = quarter;\n }\n\n navigateToReport(parameters: TrackReportParameters): Promise {\n const tier = this.hierarchyTierService.currentTier$.value?.abbreviation;\n const tierId = this.hierarchyTierService.currentTier$.value.selectedTierIdForDisplay;\n\n const params = [tier, tierId, 'track', 'report', parameters.reportId, parameters.menuItemId];\n\n const year = parameters.attributionYear == null ? this.lastRunYear : parameters.attributionYear;\n const quarter = parameters.attributionQuarter == null ? this.lastRunQuarter : parameters.attributionQuarter;\n\n if (year != null && quarter != null) {\n params.push(...[year, quarter]);\n\n if (parameters.cinId != null) {\n params.push(...[CIN_REPORT_LEVEL, parameters.cinId]);\n } else if (parameters.regionId != null) {\n params.push(...[REGION_REPORT_LEVEL, parameters.regionId]);\n }\n\n this.setLastRun(year, quarter);\n }\n\n return this.router.navigate(params);\n }\n\n runReport(menuItem: TrackReportMenuItem): void {\n this.navigateToReport({\n attributionQuarter: null,\n attributionYear: null,\n cinId: null,\n cinName: null,\n menuItemId: menuItem.compassReportMenuID,\n phiFlag: null,\n regionId: null,\n reportId: menuItem.menuGUID,\n reportTierID: null,\n reportTierNum: null\n });\n }\n}\n","export const ACO_REPORT_LEVEL = 'ACO';\nexport const CIN_REPORT_LEVEL = 'CIN';\nexport const REGION_REPORT_LEVEL = 'Region';\n\nexport interface ReportFilterType\n {\n userID: number | null;\n phiFlag: number | null;\n filterType: string;\n filterTypeID: number;\n filterTypeName: string;\n }","
\n
\n \n \n
\n
\n

Quality Dashboard

\n \n

\n Track quality measure performance, in real time, using claims and EHR clinical data to pinpoint quality care\n gaps, compare performance against various benchmarks and targets, and drill down to practice and provider\n levels.\n

\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n

{{item.menuName}}

\n \n

\n
\n \n
\n
\n
\n
\n
\n
","import { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TrackReportMenuItem } from '../track-report-menu-item';\nimport { TrackReportMenuItemsService } from '@track/track-reports/services/track-report-menu-items.service';\nimport { TrackReportService } from '../services/track-report.service';\nimport { TrackComponentConstants, TrackFeatureConstants } from '@shared/models/module-constants';\nimport { QUALITY_REPORTS_FEATURE } from '@track/track-constants';\n\n@Component({\n selector: 'coach-track-report-widgets',\n templateUrl: './track-report-widgets.component.html',\n styleUrls: ['./track-report-widgets.component.scss']\n})\nexport class TrackReportWidgetsComponent implements OnInit {\n\n @Input()\n reportComponentId: number;\n qualityDashboardComponent: number = TrackComponentConstants.QualityDashboardComponent;\n qualityDashboardFeatureFlag: string = TrackFeatureConstants.QualityDashboardFeatureFlag;\n qualityReportsFeatureId: number = QUALITY_REPORTS_FEATURE;\n constructor(private menuItemService: TrackReportMenuItemsService, private reportService: TrackReportService) { }\n\n menuItems$: Observable;\n\n ngOnInit(): void {\n this.menuItems$ = this.menuItemService.getAllFromCache();\n }\n\n openReport(item: TrackReportMenuItem): void {\n this.reportService.runReport(item);\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { CoachTabs } from '@shared/components/coach-tabs/coach-tabs';\nimport { TrackFeatureConstants } from '@shared/models/module-constants';\n\nconst {\n FinancialUtilizationFeature,\n ClinicalFeature,\n QualityFeature,\n QualityFeatureName,\n ValueCalculatorName,\n ValueCalculatorFeature,\n ValueCalculatorFeatureFlag,\n PerformanceDashboardName,\n PerformanceDashboardFeature,\n PerformanceDashboardFeatureFlag,\n CompareFeatureName,\n CompareFeature,\n CompareFeatureFlag,\n} = TrackFeatureConstants;\n\n@Component({\n selector: 'coach-track',\n templateUrl: './track.component.html',\n host: {\n class: 'coach-track',\n },\n})\nexport class TrackComponent implements OnInit {\n public tabsData: CoachTabs[] = [\n {\n name: 'Summary',\n routerLink: ['summary'],\n featureId: null,\n },\n {\n name: PerformanceDashboardName,\n routerLink: ['performance'],\n featureId: PerformanceDashboardFeature,\n featureFlag: PerformanceDashboardFeatureFlag\n },\n {\n name: 'Financial + Utilization',\n routerLink: ['financial-utilization'],\n featureId: FinancialUtilizationFeature,\n },\n {\n name: 'Clinical',\n routerLink: ['clinical'],\n featureId: ClinicalFeature,\n },\n {\n name: QualityFeatureName,\n routerLink: ['quality'],\n featureId: QualityFeature,\n },\n {\n name: ValueCalculatorName,\n routerLink: ['value-calculator'],\n featureId: ValueCalculatorFeature,\n featureFlag: ValueCalculatorFeatureFlag\n },\n {\n name: CompareFeatureName,\n routerLink: ['compare'],\n featureId: CompareFeature,\n featureFlag: CompareFeatureFlag\n },\n ];\n\n constructor() { }\n\n ngOnInit(): void { }\n}\n","\n\n","
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
Financial + Utilization
\n
\n
\n
\n \n

\n These tools will help you find the financial opportunities that are\n revealed in your claims.\n

\n \n
\n
\n \n \n
\n
\n \n \n\n
\n
\n
\n
Clinical
\n
\n
\n
\n \n

\n Track your progress toward your clinical goals. Use These tools to\n identify and close these process gaps!\n

\n \n
\n
\n
\n
\n
\n
\n
\n
{{trackQualityFeatureName}}
\n
\n
\n
\n \n

\n Quality is job #1. Use these tools to stay on top of your processes\n to ensure you are getting top scores.\n

\n \n
\n
\n
\n \n
\n
\n
\n
\n
{{ValueCalculatorFeatureName}}
\n
\n
\n
\n \n

\n This tool informs you of your value earned each year from participating in the Medicare Shared Savings\n Program.\n

\n \n
\n
\n
\n
\n\n \n
\n
\n
\n
\n
{{compareFeatureName}}
\n
\n
\n
\n \n

\n This tool allows you to easily compare your performance in the Medicare Shared Savings Program against your peers in the community, identify areas of opportunity, and recognize high performers.\n

\n \n
\n
\n
\n
\n
\n
","import { Component, OnInit } from '@angular/core';\nimport { FINANCIAL_REPORTS_FEATURE, QUALITY_REPORTS_FEATURE } from '@track/track-constants';\nimport { TrackReportMenuItem } from '@track/track-reports/track-report-menu-item';\nimport { TrackReportMenuItemsService } from '@track/track-reports/services/track-report-menu-items.service';\nimport { Observable } from 'rxjs';\nimport { TrackReportService } from '@track/track-reports/services/track-report.service';\nimport { TrackComponentConstants, TrackFeatureConstants, ModuleConstants } from '@shared/models/module-constants';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nconst {\n FinancialUtilizationFeature,\n ClinicalFeature,\n QualityFeature,\n QualityFeatureName,\n ValueCalculatorFeatureFlag,\n ValueCalculatorName,\n ValueCalculatorFeature,\n CompareFeatureFlag,\n CompareFeature,\n CompareFeatureName,\n} = TrackFeatureConstants;\n\n@Component({\n selector: 'coach-track-summary',\n templateUrl: './track-summary.component.html'\n})\nexport class TrackSummaryComponent implements OnInit {\n\n constructor(private menuItemService: TrackReportMenuItemsService,\n private reportService: TrackReportService,\n private router: Router,\n private activatedRoute: ActivatedRoute) { }\n\n readonly qualityFeature: number = QUALITY_REPORTS_FEATURE;\n readonly financialFeature: number = FINANCIAL_REPORTS_FEATURE;\n readonly trackValueCalculatorFeature: number = ValueCalculatorFeature;\n readonly valueCalculatorFeatureFlag: string = ValueCalculatorFeatureFlag;\n\n readonly trackClinicalFeature = ClinicalFeature;\n readonly trackFinancialFeature = FinancialUtilizationFeature;\n readonly trackQualityFeature = QualityFeature;\n readonly trackQualityFeatureName = QualityFeatureName;\n readonly trackHccComponent = TrackComponentConstants.ChronicConditions;\n readonly trackValueCalculatorComponent = TrackComponentConstants.ValueCalculator;\n readonly careModule = ModuleConstants.CareModule;\n readonly valueCalculatorReportName = TrackComponentConstants.ValueCalculatorReportName;\n readonly ValueCalculatorFeatureName = ValueCalculatorName;\n readonly performanceDashboardFeature = TrackFeatureConstants.PerformanceDashboardFeature;\n readonly performanceDashboardFeatureFlag = TrackFeatureConstants.PerformanceDashboardFeatureFlag;\n readonly compareFeature = CompareFeature;\n readonly compareFeatureFlag = CompareFeatureFlag;\n readonly compareFeatureName = CompareFeatureName;\n readonly compareComponent = TrackComponentConstants.CompareComponent;\n readonly qualityDashboardComponent = TrackComponentConstants.QualityDashboardComponent;\n readonly qualityDashboardFeatureFlag: string = TrackFeatureConstants.QualityDashboardFeatureFlag;\n\n menuItems$: Observable;\n\n ngOnInit(): void {\n this.menuItems$ = this.menuItemService.getAllFromCache();\n }\n\n loadReport(item: TrackReportMenuItem): void {\n this.reportService.runReport(item);\n }\n\n goToItems = (e: Event, path: string, query?: unknown | null): void => {\n e.preventDefault();\n this.router.navigate(['..' + path], {\n queryParams: query,\n relativeTo: this.activatedRoute.parent,\n });\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FINANCIAL_REPORTS_FEATURE } from '@track/track-constants'\n\n@Component({\n selector: 'coach-track-financial-utilization',\n templateUrl: './track-financial-utilization.component.html'\n})\nexport class TrackFinancialUtilizationComponent implements OnInit {\n\n constructor() { }\n\n reportsFeature: number = FINANCIAL_REPORTS_FEATURE;\n\n ngOnInit(): void {\n }\n}\n","","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'coach-track-return-on-investment',\n templateUrl: './track-return-on-investment.component.html'\n})\nexport class TrackReturnOnInvestmentComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","

track-return-on-investment works!

\n","import * as i0 from '@angular/core';\nimport { Injectable, Optional, EventEmitter, Component, Input, Output, ViewChild, NgModule } from '@angular/core';\nimport * as i1 from 'powerbi-client';\nimport { service, factories } from 'powerbi-client';\nimport * as models from 'powerbi-models';\n\nfunction powerBiServiceFactory() {\r\n return new service.Service(factories.hpmFactory, factories.wpmpFactory, factories.routerFactory);\r\n}\r\nclass NgxPowerBiService {\r\n constructor(service$1) {\r\n this.service = service$1;\r\n if (!service$1) {\r\n this.powerBiCoreService = new service.Service(factories.hpmFactory, factories.wpmpFactory, factories.routerFactory);\r\n }\r\n else {\r\n this.powerBiCoreService = service$1;\r\n }\r\n }\r\n /**\r\n * Creates new report\r\n * @param HTMLElement Parent HTML element\r\n * @param IEmbedConfiguration Embed configuration\r\n * @returns Embed Embedded object\r\n */\r\n createReport(element, config) {\r\n return this.powerBiCoreService.createReport(element, config);\r\n }\r\n /**\r\n * Given a configuration based on an HTML element,\r\n * if the component has already been created and attached to the element, reuses the component instance and existing iframe,\r\n * otherwise creates a new component instance.\r\n *\r\n * @param HTMLElement Parent HTML element\r\n * @param IEmbedConfiguration Embed configuration\r\n * @returns Embed Embedded object\r\n */\r\n embed(element, config) {\r\n return this.powerBiCoreService.embed(element, config);\r\n }\r\n /**\r\n * Given a configuration based on an HTML element,\r\n * if the component has already been created and attached to the element, reuses the component instance and existing iframe,\r\n * otherwise creates a new component instance.\r\n * This is used for the phased embedding API, once element is loaded successfully, one can call 'render' on it.\r\n *\r\n * @param HTMLElement} Parent HTML element\r\n * @param IEmbedConfiguration Embed configuration\r\n * @returns Embed Embedded object\r\n */\r\n load(element, config) {\r\n return this.powerBiCoreService.load(element, config);\r\n }\r\n /**\r\n * Adds an event handler for DOMContentLoaded, which searches the DOM for elements that have the 'powerbi-embed-url' attribute,\r\n * and automatically attempts to embed a Power BI component based on information from other powerbi-* attributes.\r\n *\r\n * Note: Only runs if `config.autoEmbedOnContentLoaded` is true when the service is created.\r\n * This handler is typically useful only for applications that are rendered on the server so that all\r\n * required data is available when the handler is called.\r\n */\r\n enableAutoEmbed() {\r\n return this.powerBiCoreService.enableAutoEmbed();\r\n }\r\n /**\r\n * Returns an instance of the component associated with the element.\r\n *\r\n * @param HTMLElement Parent HTML element\r\n * @returns (Report | Tile) Embedded report/tile object\r\n */\r\n get(element) {\r\n return this.powerBiCoreService.get(element);\r\n }\r\n /**\r\n * Finds an embed instance by the name or unique ID that is provided.\r\n *\r\n * @param string} uniqueId or name of the report/tile\r\n * @returns (Report | Tile) Embedded report/tile object\r\n */\r\n findById(uniqueId) {\r\n return this.powerBiCoreService.find(uniqueId);\r\n }\r\n /**\r\n * Given an HTML element that has a component embedded within it,\r\n * removes the component from the list of embedded components,\r\n * removes the association between the element and the component, and removes the iframe.\r\n *\r\n * @param HTMLElement Parent HTML element\r\n * @returns void\r\n */\r\n reset(element) {\r\n return this.powerBiCoreService.reset(element);\r\n }\r\n /**\r\n * handles tile events\r\n *\r\n * @param IEvent event\r\n */\r\n handleTileEvents(event) {\r\n return this.powerBiCoreService.handleTileEvents(event);\r\n }\r\n /**\r\n * API for warm starting Power BI embedded endpoints.\r\n * Use this API to preload Power BI Embedded in the background.\r\n *\r\n * @param embed.IEmbedConfiguration Embed configuration\r\n * @param HTMLElement [element=undefined]\r\n */\r\n preload(config, element) {\r\n return this.powerBiCoreService.preload(config, element);\r\n }\r\n}\r\n/** @nocollapse */ NgxPowerBiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: NgxPowerBiService, deps: [{ token: i1.service.Service, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\r\n/** @nocollapse */ NgxPowerBiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: NgxPowerBiService, providedIn: 'root', useFactory: powerBiServiceFactory });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: NgxPowerBiService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root',\r\n useFactory: powerBiServiceFactory\r\n }]\r\n }], ctorParameters: function () { return [{ type: i1.service.Service, decorators: [{\r\n type: Optional\r\n }] }]; } });\n\nclass NgxPowerBiComponent {\r\n constructor(ngxPowerBiService) {\r\n this.ngxPowerBiService = ngxPowerBiService;\r\n this.embedded = new EventEmitter();\r\n this.powerBiService = ngxPowerBiService;\r\n }\r\n ngAfterViewInit() {\r\n // Embed the report inside the view child that we have fetched from the DOM\r\n if (this.ngxPowerBiIFrameRef.nativeElement &&\r\n this.validateRequiredAttributes()) {\r\n this.embed(this.ngxPowerBiIFrameRef.nativeElement, this.getConfig());\r\n }\r\n }\r\n ngOnChanges(changes) {\r\n if (!this.ngxPowerBiIFrameRef) {\r\n return;\r\n }\r\n const { accessToken, tokenType, embedUrl, id, type, name, options } = changes;\r\n // TODO: Validate these conditions\r\n /*if (\r\n (accessToken.previousValue !== undefined || accessToken.previousValue === accessToken.currentValue) &&\r\n embedUrl.previousValue === embedUrl.currentValue\r\n ) {\r\n return;\r\n }*/\r\n if (this.validateRequiredAttributes()) {\r\n const config = this.getConfig(accessToken && accessToken.currentValue, tokenType && tokenType.currentValue, embedUrl && embedUrl.currentValue, id && id.currentValue, type && type.currentValue, name && name.currentValue, options && options.currentValue);\r\n this.embed(this.ngxPowerBiIFrameRef.nativeElement, config);\r\n }\r\n else if (this.component) {\r\n this.reset(this.ngxPowerBiIFrameRef.nativeElement);\r\n }\r\n }\r\n ngOnDestroy() {\r\n if (this.component) {\r\n this.reset(this.ngxPowerBiIFrameRef.nativeElement);\r\n }\r\n }\r\n /**\r\n * Ensure required attributes (embedUrl and accessToken are valid before attempting to embed)\r\n */\r\n validateRequiredAttributes() {\r\n return (typeof this.embedUrl === 'string' &&\r\n this.embedUrl.length > 0 &&\r\n (typeof this.accessToken === 'string' && this.accessToken.length > 0));\r\n }\r\n /**\r\n * Get the model class compatible token enum from our token type enum\r\n * @param tokenType - Token type in our custom enum format\r\n * @returns Token type in powerbi-models.TokenType enum format\r\n */\r\n getTokenType(tokenType) {\r\n if (tokenType) {\r\n switch (tokenType) {\r\n case \"Aad\" /* TokenType.Aad */:\r\n return models.TokenType.Aad;\r\n case \"Embed\" /* TokenType.Embed */:\r\n return models.TokenType.Embed;\r\n default:\r\n return models.TokenType.Aad;\r\n }\r\n }\r\n else {\r\n // default is AAD\r\n return models.TokenType.Aad;\r\n }\r\n }\r\n /**\r\n * Returns an embed configuration object.\r\n * @param accessToken - Access token required to embed a component\r\n * @param tokenType - type of accessToken: Aad or Embed\r\n * @param embedUrl - Embed URL obtained through Power BI REST API or Portal\r\n * @param id - component/element GUID\r\n * @param type - type of embedded component e.g. 'dashboard, report or tile'\r\n * @param name - name of the embedded component\r\n * @param options - Embed configuration options\r\n * @returns Embed configuration object\r\n */\r\n getConfig(accessToken, tokenType, embedUrl, id, type, name, options) {\r\n // For null arguments - use the initial value\r\n // For specified arguments - use the current value\r\n return {\r\n type: type ? type : this.type ? this.type : \"Report\" /* ReportType.Report */,\r\n embedUrl: embedUrl ? embedUrl : this.embedUrl,\r\n accessToken: accessToken ? accessToken : this.accessToken,\r\n tokenType: tokenType\r\n ? this.getTokenType(tokenType)\r\n : this.getTokenType(this.tokenType),\r\n id: id ? id : this.id,\r\n uniqueId: name ? name : this.name,\r\n settings: options ? options : this.options\r\n };\r\n }\r\n /**\r\n * Given an HTMLElement, construct an embed configuration based on attributes and pass to service.\r\n * @param element - native element where the embedding needs to be done\r\n * @param config - configuration to be embedded\r\n */\r\n embed(element, config) {\r\n /*if (this.options) {\r\n const newConfig = { config, ...this.options };\r\n }*/\r\n this.component = this.powerBiService.embed(element, config);\r\n this.embedded.emit(this.component);\r\n }\r\n /**\r\n * Reset the component that has been removed from DOM.\r\n * @param element - native element where the embedded was made\r\n */\r\n reset(element) {\r\n this.powerBiService.reset(element);\r\n this.component = null;\r\n }\r\n}\r\n/** @nocollapse */ NgxPowerBiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: NgxPowerBiComponent, deps: [{ token: NgxPowerBiService }], target: i0.ɵɵFactoryTarget.Component });\r\n/** @nocollapse */ NgxPowerBiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.0\", type: NgxPowerBiComponent, selector: \"ngx-powerbi-component\", inputs: { accessToken: \"accessToken\", tokenType: \"tokenType\", embedUrl: \"embedUrl\", id: \"id\", type: \"type\", name: \"name\", options: \"options\" }, outputs: { embedded: \"embedded\" }, viewQueries: [{ propertyName: \"ngxPowerBiIFrameRef\", first: true, predicate: [\"ngxPowerBiIFrame\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '
', isInline: true });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: NgxPowerBiComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'ngx-powerbi-component', template: '
' }]\r\n }], ctorParameters: function () { return [{ type: NgxPowerBiService }]; }, propDecorators: { accessToken: [{\r\n type: Input\r\n }], tokenType: [{\r\n type: Input\r\n }], embedUrl: [{\r\n type: Input\r\n }], id: [{\r\n type: Input\r\n }], type: [{\r\n type: Input\r\n }], name: [{\r\n type: Input\r\n }], options: [{\r\n type: Input\r\n }], embedded: [{\r\n type: Output\r\n }], ngxPowerBiIFrameRef: [{\r\n type: ViewChild,\r\n args: ['ngxPowerBiIFrame', { static: true }]\r\n }] } });\n\nclass NgxPowerBiModule {\r\n}\r\n/** @nocollapse */ NgxPowerBiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: NgxPowerBiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\n/** @nocollapse */ NgxPowerBiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.0\", ngImport: i0, type: NgxPowerBiModule, declarations: [NgxPowerBiComponent], exports: [NgxPowerBiComponent] });\r\n/** @nocollapse */ NgxPowerBiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: NgxPowerBiModule });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: NgxPowerBiModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n imports: [],\r\n declarations: [NgxPowerBiComponent],\r\n exports: [NgxPowerBiComponent]\r\n }]\r\n }] });\n\n/*\r\n * Public API Surface of ngx-powerbi\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { NgxPowerBiComponent, NgxPowerBiModule, NgxPowerBiService, powerBiServiceFactory };\n","import { Injectable } from '@angular/core';\n\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { TrackQuarterYear } from '@track/track-reports/track-quarter-year';\nimport { Observable } from 'rxjs';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TrackQuarterYearsService extends AzureApiBase {\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/report/quarterYears');\n }\n\n getQuarterYears(tierNum: number, tierId: string, menuId: number): Observable {\n const params = new HttpParams().set('menuId', menuId?.toString())\n .append('tierNum', tierNum?.toString())\n .append('tierId', tierId);\n\n return this.get(null, params);\n }\n}\n","\n\n\n\n \n \n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TrackQuarter, TrackQuarterYear, TrackYear } from '@track/track-reports/track-quarter-year';\nimport { TrackReportConfig } from '@track/track-reports/track-report-config';\n\n@Component({\n selector: 'coach-track-time-filters',\n templateUrl: './track-time-filters.component.html',\n styleUrls: ['./track-time-filters.component.scss']\n})\nexport class TrackTimeFiltersComponent implements OnInit {\n\n private _quarterYears: TrackQuarterYear[];\n @Input()\n set quarterYears(value: TrackQuarterYear[]) {\n this._quarterYears = value;\n if (this._quarterYears == null) {\n this.years = [];\n this.quarters = [];\n this._quarterYears = [];\n } else {\n this.mapQuarterYears(this._quarterYears);\n this.setYear(this._selectedYear);\n this.setQuarter(this._selectedQuarter);\n }\n }\n\n _selectedYear: number;\n @Input()\n set selectedYear(value: number) {\n this._selectedYear = value;\n this.setYear(value);\n }\n\n @Output()\n selectedYearChange: EventEmitter = new EventEmitter();\n\n _selectedQuarter: number;\n @Input()\n set selectedQuarter(value: number) {\n this._selectedQuarter = value;\n this.setQuarter(value);\n }\n\n @Input() reportConfig: TrackReportConfig;\n\n @Output()\n selectedQuarterChange: EventEmitter = new EventEmitter();\n\n public selectedQuarterItem: TrackQuarter;\n @Output()\n selectedQuarterItemChange: EventEmitter = new EventEmitter();\n\n public selectedYearItem: TrackYear;\n @Output()\n selectedYearItemChange: EventEmitter = new EventEmitter();\n\n public years: TrackYear[] = [];\n public quarters: TrackQuarter[] = [];\n\n public hideQuarter = false;\n public quarterLabel = 'Quarter';\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n setYear(value: number): void {\n this.selectedYearItem = this.years.find(x => x.year === value);\n\n if (this.selectedYearItem == null && this.years != null && this.years.length > 0) {\n this.selectedYearItem = this.years[this.years.length - 1];\n }\n\n this.updateQuarters(value);\n\n if (value != null) {\n this.selectedYearItemChange.emit(this.selectedYearItem);\n this.selectedQuarterItemChange.emit(this.selectedQuarterItem);\n }\n }\n\n setQuarter(value: number): void {\n this.selectedQuarterItem = this.quarters.find(x => x.quarter === value);\n this.selectedQuarterItemChange.emit(this.selectedQuarterItem);\n }\n\n yearSelected(value: TrackYear): void {\n this.selectedYearChange.emit(value.year);\n this.selectedYearItemChange.emit(value);\n\n this.updateQuarters(value.year);\n\n this.selectedQuarterChange.emit(this.selectedQuarterItem?.quarter);\n this.selectedQuarterItemChange.emit(this.selectedQuarterItem);\n }\n\n updateQuarters(year: number): void {\n this.quarters = this._quarterYears?.filter(x => x.attributionYear === year)\n .map(x => ({ display: x.attributionQuarter_DisplayText, quarter: x.attributionQuarter }));\n\n if (this.quarters != null && this.quarters.length > 0) {\n this.selectedQuarterItem = this.quarters[this.quarters.length - 1];\n } else {\n this.selectedQuarterItem = null;\n }\n }\n\n quarterSelected(value: TrackQuarter): void {\n this.selectedQuarterChange.emit(value.quarter);\n this.selectedQuarterItemChange.emit(value);\n }\n\n mapQuarterYears(quarterYears: TrackQuarterYear[]): void {\n const years: TrackYear[] = [];\n const map = new Map();\n\n for (const item of quarterYears) {\n if (!map.has(item.attributionYear)) {\n map.set(item.attributionYear, true);\n years.push({\n display: item.attributionYear.toString(),\n year: item.attributionYear\n });\n }\n }\n\n this.years = years;\n }\n\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { AzureApiBase } from '@shared/services/azure-api/azure-api-base';\nimport { ReportFilterType } from '@track/track-reports/track-report-filter-type';\nimport { environment } from 'src/environments/environment';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TrackReportFilterTypesService extends AzureApiBase {\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/report/filterTypes');\n }\n\n getFilterTypes(filterType: string): Observable {\n const params = new HttpParams().set('type', filterType);\n\n return this.get(null, params);\n }\n}\n","\n\n\n\n \n \n
\n \n
\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ACO_REPORT_LEVEL, ReportFilterType } from '@track/track-reports/track-report-filter-type';\nimport { TrackReportFilterTypesService } from '../services/track-report-filter-types.service';\n\n@Component({\n selector: 'coach-track-report-filter-types',\n templateUrl: './track-report-filter-types.component.html',\n styleUrls: ['./track-report-filter-types.component.scss']\n})\nexport class TrackReportFilterTypesComponent implements OnInit {\n\n @Input() reportFilterTypes: string[];\n @Input() selectedFilterType: string;\n @Output()\n selectedFilterTypeChange: EventEmitter = new EventEmitter();\n\n @Input() selectedItem: ReportFilterType;\n @Output()\n selectedItemChange: EventEmitter = new EventEmitter();\n\n _initialItem: ReportFilterType;\n @Input()\n set initialItem(value: ReportFilterType) {\n this._initialItem = value;\n\n if (value != null) {\n this.selectedFilterType = this.initialItem.filterType;\n this.filterTypeSelected(this.initialItem.filterType);\n }\n }\n get initialItem(): ReportFilterType {\n return this._initialItem;\n }\n\n filterItems: ReportFilterType[];\n acoLevel = ACO_REPORT_LEVEL;\n isLoading = false;\n\n constructor(private reportFilterTypeService: TrackReportFilterTypesService) { }\n\n ngOnInit(): void {\n }\n\n filterTypeSelected(value: string): void {\n this.selectedFilterTypeChange.emit(value);\n\n if (value !== ACO_REPORT_LEVEL) {\n this.isLoading = true;\n this.reportFilterTypeService.getFilterTypes(value).subscribe({\n next: items => {\n this.filterItems = items;\n this.selectedItem = null;\n\n if (items != null && items.length > 0) {\n if (this.initialItem != null) {\n this.selectedItem = items.find(x => x.filterTypeID === this.initialItem.filterTypeID &&\n x.filterType === this.initialItem.filterType);\n\n this.initialItem = null;\n }\n\n if (this.selectedItem == null) {\n this.selectedItem = items[0];\n }\n\n this.itemSelected(this.selectedItem);\n }\n }, complete: () => this.isLoading = false\n });\n }\n }\n\n itemSelected(value: ReportFilterType): void {\n this.selectedItemChange.emit(value);\n }\n\n}\n","\n \n\n\n\n
\n
Filters
\n
\n
\n \n \n 1\" [reportFilterTypes]=\"reportFilterTypes\"\n (selectedItemChange)=\"filterItemSelected($event)\" [(selectedItem)]=\"selectedReportFilterItem\"\n [(selectedFilterType)]=\"selectedReportFilterType\" [initialItem]=\"initialReportFilterItem\">\n \n \n
\n
\n\n
\n
\n \n
\n\n
\n
\n

Unable to load the report at this time. Please try again later.

\n
\n
\n
\n\n\n
\n
\n
\n
\n
\n {{noDataTitle}}\n
\n
\n
\n
\n
\n
\n
\n
\n
","import { HttpParams } from '@angular/common/http';\nimport { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TrackReportService } from '@track/track-reports/services/track-report.service';\nimport { TrackEmbeddedReport } from '@track/track-reports/track-embedded-report';\nimport { TrackReportFilter } from '@track/track-reports/track-report-filter';\nimport { IEmbedConfiguration, models, Report } from 'powerbi-client';\nimport { IError } from 'powerbi-models';\nimport { NgxPowerBiService } from 'ngx-powerbi';\nimport { interval } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { share, takeUntil } from 'rxjs/operators';\nimport { ReportAuditRequest } from './report-audit-request';\nimport { TrackReportParameters } from './track-report-parameters';\nimport { TrackQuarterYearsService } from '@track/track-reports/services/track-quarter-years.service';\nimport { TrackQuarterYear } from '@track/track-reports/track-quarter-year';\nimport { TrackReportMenuItemsService } from '@track/track-reports/services/track-report-menu-items.service';\nimport { TrackReportConfig } from '@track/track-reports/track-report-config';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { stringToNumber } from '@shared/utilities';\nimport { ACO_REPORT_LEVEL, CIN_REPORT_LEVEL, REGION_REPORT_LEVEL } from '@track/track-reports/track-report-filter-type';\nimport { TrackReportMenuItem } from '../track-report-menu-item';\nimport { ReportFilterType } from '../track-report-filter-type';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { Access } from '@shared/services/graphql/access.service';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { UserIdleService } from 'angular-user-idle';\nimport { FINANCIAL_REPORTS_FEATURE, QUALITY_REPORTS_FEATURE } from '@track/track-constants';\nimport { ErrorLoggingService } from '@shared/services/logging/error-logging.service';\nimport { LogError } from '@shared/services/logging/log-error';\nimport { CoachException } from '@shared/models/exceptions/coach-exception';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\n@Component({\n selector: 'coach-track-report',\n templateUrl: './track-report.component.html',\n host: {\n class: 'coach-track-report'\n }\n})\nexport class TrackReportComponent extends KillSubscriptions implements OnInit, OnDestroy {\n\n constructor(private route: ActivatedRoute,\n private router: Router,\n private reportService: TrackReportService,\n private powerBiService: NgxPowerBiService,\n private menuItemService: TrackReportMenuItemsService,\n private quarterYearsService: TrackQuarterYearsService,\n private hierarchyTierService: HierarchyTierService,\n private userAccessService: UserAccessService,\n private userIdle: UserIdleService) {\n\n super();\n\n this.userAccessService.currentAccess$.pipe(takeUntil(this.killTrigger)).subscribe(access => {\n this.userAccess = access;\n if (access != null && this.hierarchyTierService.currentTier$.value != null) {\n\n this.reportFilterTypes = [ACO_REPORT_LEVEL]; \n \n if (this.hierarchyTierService.currentTier$.value.selectedItem.cinFlag === 1) {\n this.reportFilterTypes.push(CIN_REPORT_LEVEL);\n }\n\n if (access.isInternal) {\n this.reportFilterTypes.push(REGION_REPORT_LEVEL);\n }\n\n this.runReport(this.hierarchyTierService.currentTier$.value);\n }\n });\n }\n\n @ViewChild('powerBi', { static: true }) powerBiContainer: ElementRef;\n\n reportParameters: TrackReportParameters = {\n attributionQuarter: null,\n attributionYear: null,\n cinId: null,\n cinName: null,\n menuItemId: null,\n phiFlag: null,\n regionId: null,\n reportId: null,\n reportTierID: null,\n reportTierNum: null\n };\n\n reportId: string;\n embedUrl: string;\n accessToken: string;\n reportFilters: TrackReportFilter[];\n embedFail: boolean;\n embeddedReport: Report;\n currentPage: string;\n isReportLoaded: boolean;\n quarterYears: TrackQuarterYear[];\n reportConfig: TrackReportConfig = {\n hidePrincipalParticipant: false,\n hideQuarter: false,\n quarterLabel: 'Quarter'\n };\n reportMenuItem: TrackReportMenuItem;\n selectedQuarterYearItem: TrackQuarterYear = null;\n isFilterPaneOpen = false;\n cinLevel = CIN_REPORT_LEVEL;\n userAccess: Access = null;\n\n reportFilterTypes:string[] = [];\n selectedReportFilterType = ACO_REPORT_LEVEL;\n selectedReportFilterItem: ReportFilterType = null;\n initialReportFilterItem: ReportFilterType = null;\n\n pbiContainerElement: HTMLElement;\n embedContainerId = 'pbi-container';\n showNoDataModal = false;\n noDataTitle = '';\n noDataMessage = '';\n\n ngOnInit(): void {\n\n }\n\n openPane(): void {\n this.isFilterPaneOpen = true;\n }\n\n filterItemSelected(item: ReportFilterType): void {\n if (item != null && this.initialReportFilterItem != null &&\n item.filterType === this.initialReportFilterItem.filterType && item.filterTypeID === item.filterTypeID) {\n this.initialReportFilterItem.filterTypeName = item.filterTypeName;\n }\n }\n\n runReport(tier: IHierarchyTier): void {\n const params = this.route?.snapshot?.paramMap;\n const menuItemId = stringToNumber(params.get('menuItem'));\n const year = this.reportParameters.attributionYear == null ? stringToNumber(params.get('year')) :\n this.reportParameters.attributionYear;\n const quarter = this.reportParameters.attributionQuarter == null ? stringToNumber(params.get('quarter')) :\n this.reportParameters.attributionQuarter;\n\n this.menuItemService.getAllFromCache().subscribe(menuItems => {\n\n this.reportMenuItem = menuItems.find(x => x.compassReportMenuID === menuItemId);\n\n if (this.reportMenuItem.configBlob != null) {\n this.reportConfig = JSON.parse(this.reportMenuItem.configBlob);\n }\n\n let reportFilterType: string = null;\n let reportFilterTypeId: number = null;\n\n if (this.reportMenuItem?.showCinRegionFilter === 1 && this.reportFilterTypes.length > 1) {\n reportFilterType = params?.get('filterType');\n reportFilterTypeId = stringToNumber(params?.get('filterTypeId'));\n }\n\n if (reportFilterType != null && reportFilterTypeId != null) {\n this.initialReportFilterItem = {\n filterTypeID: reportFilterTypeId,\n filterType: reportFilterType,\n phiFlag: null,\n userID: null,\n filterTypeName: null\n };\n }\n\n let reportId = this.reportMenuItem.menuGUID;\n if (this.hierarchyTierService.currentTier$.value.tier === 4 && this.reportMenuItem.secondaryGUID != null) {\n reportId = this.reportMenuItem.secondaryGUID;\n }\n\n this.reportParameters = {\n reportId: reportId,\n menuItemId,\n reportTierNum: tier.tier,\n reportTierID: tier.selectedTierId,\n attributionYear: year,\n attributionQuarter: quarter,\n cinId: reportFilterType === CIN_REPORT_LEVEL ? reportFilterTypeId : null,\n cinName: '',\n regionId: reportFilterType === REGION_REPORT_LEVEL ? reportFilterTypeId : null,\n phiFlag: this.userAccess.phi\n };\n\n const getQuarterYears$ = this.quarterYearsService.getQuarterYears(this.reportParameters.reportTierNum,\n this.reportParameters.reportTierID, this.reportParameters.menuItemId);\n\n getQuarterYears$.subscribe(quarterYears => {\n this.quarterYears = quarterYears;\n const noData = quarterYears?.length === 0;\n this.showNoDataModal = noData;\n \n if (noData) {\n this.setNoDataMessage();\n }\n\n this.selectedQuarterYearItem = this.findQuarterYear(this.reportParameters.attributionYear,\n this.reportParameters.attributionQuarter);\n\n if (this.selectedQuarterYearItem == null && !noData) {\n this.setMaxQuarterYear();\n }\n\n const versionedReportId = this.hierarchyTierService.currentTier$.value.tier === 4 && this.selectedQuarterYearItem?.secondaryGUID != null ? this.selectedQuarterYearItem.secondaryGUID : this.selectedQuarterYearItem?.menuGUID;\n this.reportParameters.reportId = versionedReportId ?? this.reportParameters.reportId;\n\n this.reportService.setLastRun(this.reportParameters.attributionYear, this.reportParameters.attributionQuarter);\n\n this.loadReport();\n });\n });\n }\n\n setNoDataMessage(): void {\n switch (this.reportMenuItem.logComponentID) {\n case QUALITY_REPORTS_FEATURE: \n this.noDataTitle = 'Unable to Run Report';\n this.noDataMessage = `Please re-select filters using the current ACO to populate the report. If data was submitted and does not appear, please submit a ticket to Caravan Health.`;\n break;\n case FINANCIAL_REPORTS_FEATURE: \n this.noDataTitle = 'Report Not Available';\n this.noDataMessage = `A report is not available for the selected hierarchy and time period combination. If you feel this is in error, please submit a ticket to Caravan Health.

The first set of reports for new starters will be available by mid-April.

`;\n break;\n }\n }\n\n setMaxQuarterYear(): void {\n const max = this.quarterYears[this.quarterYears.length - 1];\n\n this.reportParameters.attributionYear = max.attributionYear;\n this.reportParameters.attributionQuarter = max.attributionQuarter;\n\n this.selectedQuarterYearItem = this.findQuarterYear(this.reportParameters.attributionYear,\n this.reportParameters.attributionQuarter);\n }\n\n findQuarterYear(year: number, quarter: number): TrackQuarterYear {\n return this.quarterYears.find(quarterYear => quarterYear.attributionYear === year &&\n quarterYear.attributionQuarter === quarter);\n }\n\n loadReport(): void {\n const params = this.getParams();\n\n this.reportService.getSingle('', params)\n .subscribe(report => {\n this.embedUrl = report.embedUrl;\n this.accessToken = report.accessToken;\n this.reportFilters = report.reportFilters;\n this.reportId = report.reportId;\n\n const filters = this.getFilters();\n const config: IEmbedConfiguration = {\n type: 'report',\n id: this.reportId,\n embedUrl: this.embedUrl,\n accessToken: this.accessToken,\n tokenType: 1,\n filters,\n settings: {\n filterPaneEnabled: false,\n navContentPaneEnabled: true\n }\n };\n\n this.userIdle.stopWatching();\n this.pbiContainerElement = ((document.getElementById(this.embedContainerId)) as HTMLElement);\n this.embeddedReport = this.powerBiService.embed(this.pbiContainerElement, config) as Report;\n\n this.embeddedReport.on('dataSelected', () => this.resetIdle());\n this.embeddedReport.on('pageChanged', event => this.pageChanged(event));\n this.embeddedReport.on('buttonClicked', () => this.resetIdle());\n this.embeddedReport.on('error', (error) => this.handleError(error));\n\n this.embeddedReport.on('loaded', () => {\n this.isReportLoaded = true;\n this.embeddedReport.off('loaded');\n this.setTokenRefresh();\n this.userIdle.startWatching();\n\n this.embeddedReport.getPages().then(pages => {\n if (pages.length > 1) {\n pages[1].setActive();\n }\n });\n\n });\n }, () => {\n this.embedFail = true;\n });\n }\n\n handleError(event: CustomEvent): void {\n const error = event.detail as IError;\n const logError: LogError = {\n errorDescription: error.detailedMessage,\n process: 'TrackReport',\n applicationDetails: JSON.stringify(this.reportParameters),\n errorDetails: JSON.stringify(error),\n errorCode: error.errorCode,\n note: `Error rendering Track PowerBI report ${this.reportParameters.reportId}`\n };\n\n throw new CoachException(logError); \n }\n\n getParams(): HttpParams {\n const isAcoLevel = this.reportParameters.regionId == null && this.reportParameters.cinId == null;\n return new HttpParams().set('reportTierNum', isAcoLevel ? this.reportParameters.reportTierNum?.toString() : '')\n .set('reportTierID', isAcoLevel ? this.reportParameters.reportTierID : '')\n .set('attributionQuarter', this.reportParameters.attributionQuarter?.toString())\n .set('attributionYear', this.reportParameters.attributionYear?.toString())\n .set('phiFlag', this.reportParameters.phiFlag.toString())\n .set('menuItemId', this.reportParameters.menuItemId?.toString())\n .set('reportId', this.reportParameters.reportId)\n .set('regionId', this.reportParameters.regionId == null ? '' : this.reportParameters.regionId.toString())\n .set('cinId', this.reportParameters.cinId == null ? '' : this.reportParameters.cinId.toString())\n .set('cinName', this.reportParameters.cinName == null ? '' : this.reportParameters.cinName);\n }\n\n getFilters(): models.IBasicFilter[] {\n\n let reportTierNum: string;\n let reportTierID: string;\n\n if (this.reportParameters.regionId != null) {\n reportTierNum = 'R';\n reportTierID = this.reportParameters.regionId.toString();\n }\n else if (this.reportParameters.cinId != null) {\n reportTierNum = 'C';\n reportTierID = this.reportParameters.cinId.toString();\n }\n else {\n reportTierNum = this.reportParameters.reportTierNum.toString();\n reportTierID = this.reportParameters.reportTierID;\n }\n\n return [{\n $schema: \"http://powerbi.com/product/schema#basic\",\n target: {\n table: \"Hierarchy\",\n column: \"ReportTierNum\"\n },\n operator: \"In\",\n values: [reportTierNum],\n filterType: 1,\n displaySettings: {\n isHiddenInViewMode: true\n }\n }, {\n $schema: \"http://powerbi.com/product/schema#basic\",\n target: {\n table: \"Hierarchy\",\n column: \"ReportTierID\"\n },\n operator: \"In\",\n values: [reportTierID],\n filterType: 1,\n displaySettings: {\n isHiddenInViewMode: true\n }\n }, {\n $schema: \"http://powerbi.com/product/schema#basic\",\n target: {\n table: \"Hierarchy\",\n column: \"AttributionQuarter\"\n },\n operator: \"In\",\n values: [this.reportParameters.attributionQuarter],\n filterType: 1,\n displaySettings: {\n isHiddenInViewMode: true\n }\n }, {\n $schema: \"http://powerbi.com/product/schema#basic\",\n target: {\n table: \"Hierarchy\",\n column: \"AttributionYear\"\n },\n operator: \"In\",\n values: [this.reportParameters.attributionYear],\n filterType: 1,\n displaySettings: {\n isHiddenInViewMode: true\n }\n }, {\n $schema: \"http://powerbi.com/product/schema#basic\",\n target: {\n table: \"Hierarchy\",\n column: \"ReportQuarter\"\n },\n operator: \"In\",\n values: [this.reportParameters.attributionQuarter],\n filterType: 1,\n displaySettings: {\n isHiddenInViewMode: true\n }\n }, {\n $schema: \"http://powerbi.com/product/schema#basic\",\n target: {\n table: \"Hierarchy\",\n column: \"ReportYear\"\n },\n operator: \"In\",\n values: [this.reportParameters.attributionYear],\n filterType: 1,\n displaySettings: {\n isHiddenInViewMode: true\n }\n }, {\n $schema: \"http://powerbi.com/product/schema#basic\",\n target: {\n table: \"PHIFlag\",\n column: \"PHIFlag\"\n },\n operator: \"In\",\n values: [this.reportParameters.phiFlag ? 1 : 0],\n filterType: 1,\n displaySettings: {\n isHiddenInViewMode: true\n }\n }];\n }\n\n pageChanged(event): void {\n this.resetIdle();\n this.currentPage = event.detail.newPage.displayName;\n\n const newSettings = {\n filterPaneEnabled: false\n };\n\n if (event.detail.newPage.displayName.toLowerCase().indexOf('details') > -1) {\n const request: ReportAuditRequest = {\n reportParameters: this.reportParameters,\n drillThroughName: event.detail.newPage.displayName\n };\n\n this.reportService.logReportAudit(request).subscribe(() => { });\n }\n\n const reportFilter = this.reportFilters.find(x => x.pageName === event.detail.newPage.displayName);\n if (reportFilter != null) {\n newSettings.filterPaneEnabled = true;\n }\n\n this.embeddedReport.updateSettings(newSettings);\n\n }\n\n setTokenRefresh(): void {\n interval(1800000).pipe(takeUntil(this.killTrigger), share()).subscribe(() => this.getToken());\n }\n\n getToken(): Observable {\n const observable = this.reportService.getAccessToken(this.reportId).pipe(share());\n\n observable.subscribe(embed => {\n this.embeddedReport.setAccessToken(embed.accessToken)\n .catch(error => { console.log('Error getting access token: ' + error) });\n });\n\n return observable;\n }\n\n print(): void {\n this.embeddedReport.print();\n }\n\n runReportClick(): void {\n this.isFilterPaneOpen = false;\n this.reportParameters.regionId = this.reportParameters.cinId = null;\n\n if (this.selectedReportFilterItem != null && this.selectedReportFilterType !== ACO_REPORT_LEVEL) {\n if (this.selectedReportFilterItem.filterType === REGION_REPORT_LEVEL) {\n this.reportParameters.regionId = this.selectedReportFilterItem.filterTypeID;\n } else if (this.selectedReportFilterItem.filterType === CIN_REPORT_LEVEL) {\n this.reportParameters.cinId = this.selectedReportFilterItem.filterTypeID;\n this.reportParameters.cinName = this.selectedReportFilterItem.filterTypeName;\n }\n }\n\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\n this.reportService.navigateToReport(this.reportParameters);\n });\n }\n\n resetIdle(): void {\n this.userIdle.stopWatching();\n this.userIdle.startWatching();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { TrackComponent } from './track.component';\nimport { TrackSummaryComponent } from './track-summary/track-summary.component';\nimport { TrackFinancialUtilizationComponent } from './track-financial-utilization/track-financial-utilization.component';\nimport { TrackReturnOnInvestmentComponent } from './track-return-on-investment/track-return-on-investment.component';\nimport { TrackQualityComponent } from './track-quality/track-quality.component';\nimport { TrackReportComponent } from './track-reports/track-report/track-report.component';\nimport { TrackFeatureConstants } from '@shared/models/module-constants';\nimport { AuthGuard } from '../auth.guard';\nimport { TrackTimeTrackingFilterComponent } from './track-clinical/track-time-tracking/track-time-tracking-filter/track-time-tracking-filter.component';\nimport { TrackTimeTrackingComponent } from './track-clinical/track-time-tracking/track-time-tracking.component';\nimport { QualityDashboardComponent } from './track-quality/quality-dashboard/quality-dashboard.component';\nimport { QualityAdminComponent } from './track-quality/quality-admin/quality-admin.component';\nconst routes: Routes = [\n {\n path: '',\n component: TrackComponent,\n canActivateChild: [AuthGuard],\n data: {\n label: 'Track',\n helpfile: 'LEARN_TRACK_General_2020'\n },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'summary',\n },\n {\n path: 'summary',\n component: TrackSummaryComponent,\n data: {\n label: 'Summary',\n },\n },\n {\n path: 'dashboard',\n component: TrackSummaryComponent,\n data: {\n label: 'Summary',\n helpfile: 'LEARN_TRACK_Clinical_HCCBasic_2020',\n },\n },\n {\n path: 'financial-utilization',\n component: TrackFinancialUtilizationComponent,\n data: {\n label: 'Financial + Utilization',\n featureId: TrackFeatureConstants.FinancialUtilizationFeature.valueOf(), // Causes an error when generating documentation via compodoc unless using .valueOf()\n helpfile: 'LEARN_TRACK_FU_2020',\n },\n },\n {\n path: 'clinical',\n loadChildren: () =>\n import('@track/track-clinical/track-clinical.module').then(\n (m) => m.TrackClinicalModule\n ),\n data: {\n label: 'Clinical',\n featureId: TrackFeatureConstants.ClinicalFeature.valueOf(),\n helpfile: 'LEARN_TRACK_CLINICAL_2020',\n },\n },\n {\n path: 'value-calculator',\n loadChildren: () =>\n import('@track/track-value-calculator/track-value-calculator.module').then(\n (m) => m.TrackValueCalculatorModule\n ),\n data: {\n label: 'Value Calculator',\n featureId: TrackFeatureConstants.ValueCalculatorFeature.valueOf(),\n helpfile: 'LEARN_TRACK_MSSP',\n featureFlag: TrackFeatureConstants.ValueCalculatorFeatureFlag.valueOf()\n },\n },\n {\n path: 'performance',\n loadChildren: () =>\n import('@track/track-performance/track-performance.module').then(\n (m) => m.TrackPerformanceModule\n ),\n data: {\n label: 'Performance Dashboard',\n featureId: TrackFeatureConstants.PerformanceDashboardFeature.valueOf(),\n helpfile: 'LEARN_TRACK_General_2020', // TODO: Update with helpfile when available\n featureFlag: TrackFeatureConstants.PerformanceDashboardFeatureFlag.valueOf()\n },\n },\n {\n path: 'compare',\n loadChildren: () =>\n import('@track/track-compare/track-compare.module').then(\n (m) => m.TrackCompareModule\n ),\n data: {\n label: 'Compare',\n featureId: TrackFeatureConstants.CompareFeature.valueOf(),\n helpfile: 'LEARN_TRACK_General_2020', // TODO: Update with helpfile when available\n featureFlag: TrackFeatureConstants.CompareFeatureFlag.valueOf()\n },\n },\n {\n path: 'quality',\n loadChildren: () =>\n import('@track/track-quality/quality.module').then(\n (m) => m.QualityModule\n ),\n data: {\n featureId: TrackFeatureConstants.QualityFeature.valueOf(),\n helpfile: 'LEARN_TRACK_QualityMeasures_2020',\n }\n },\n {\n path: 'return-on-investment',\n component: TrackReturnOnInvestmentComponent,\n data: {\n label: 'Return on Investment',\n },\n },\n {\n path: 'report/:id/:menuItem/:year/:quarter/:filterType/:filterTypeId',\n component: TrackReportComponent,\n data: {\n label: 'Report',\n },\n },\n {\n path: 'report/:id/:menuItem/:year/:quarter',\n component: TrackReportComponent,\n data: {\n label: 'Report',\n },\n },\n {\n path: 'report/:id/:menuItem',\n component: TrackReportComponent,\n data: {\n label: 'Report',\n },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TrackRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '@shared/shared.module';\nimport { TrackRoutingModule } from '@track/track-routing.module';\nimport { TrackComponent } from '@track/track.component';\nimport { TrackSummaryComponent } from '@track/track-summary/track-summary.component';\nimport { TrackFinancialUtilizationComponent } from '@track/track-financial-utilization/track-financial-utilization.component';\nimport { TrackReturnOnInvestmentComponent } from '@track/track-return-on-investment/track-return-on-investment.component';\nimport { TrackQualityComponent } from '@track/track-quality/track-quality.component';\nimport { TrackReportComponent } from './track-reports/track-report/track-report.component';\nimport { NgxPowerBiModule } from 'ngx-powerbi';\nimport { TrackReportWidgetsComponent } from './track-reports/track-report-widgets/track-report-widgets.component';\nimport { TrackTimeFiltersComponent } from './track-reports/track-time-filters/track-time-filters.component';\nimport { TrackClinicalModule } from './track-clinical/track-clinical.module';\nimport { TrackReportFilterTypesComponent } from './track-reports/track-report-filter-types/track-report-filter-types.component';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\n@NgModule({\n declarations: [\n TrackComponent,\n TrackSummaryComponent,\n TrackFinancialUtilizationComponent,\n TrackReturnOnInvestmentComponent,\n TrackQualityComponent,\n TrackReportComponent,\n TrackReportWidgetsComponent,\n TrackTimeFiltersComponent,\n TrackReportFilterTypesComponent\n ],\n imports: [\n SharedModule,\n TrackRoutingModule,\n NgxPowerBiModule,\n TrackClinicalModule,\n AgGridModule,\n FontAwesomeModule\n ]\n})\nexport class TrackModule { }\n","
\n \n \n\n \n \n \n
\n
\n
\n
{{widgetMarkdown[cardWidget][0].cardWidgetTitle}}
\n
\n
\n \n
\n
\n
\n
\n\n
\n
\n\n \n \n\n \n
\n \n
\n
Care for your patients
\n
\n \n \n \n Care\n
\n
\n
\n \n

\n ACO success starts and ends with caring for your patients. {{app.ApplicationName}} allows you to manage your patient populations, highlighting\n gaps and risk scores, and then provides you with tools to engage\n your patients towards healthier outcomes.\n

\n
    \n
  • \n AWV Opportunities\n
  • \n
  • \n Care Management\n
  • \n
  • \n Top 50\n
  • \n
\n
\n \n\n \n
\n \n
\n
Track your performance
\n
\n \n \n \n Track\n
\n \n
\n \n\n \n
\n \n
\n
Improve your practice
\n
\n \n \n \n Improve\n
\n \n
\n \n

\n Welcome to the {{app.CompanyNameFull}} family! We're here to help you maximize your\n results by sharing proven best practices that will improve your\n practice.\n

\n \n
\n \n\n \n \n \n\n \n\n \n\n =\n\n \n
\n \n
\n
Submit your results
\n
\n \n \n \n Submit\n
\n \n
\n \n

\n We're here to help! Sharing your results allows you to see how\n you're doing compared to others in your ACO and give us the details\n we need to provide unique insights for your practice.\n

\n \n
\n \n\n \n
\n\n \n \n \n
\n
\n
\n
{{app.ApplicationName}} Chronic Conditions VIP List
\n
\n
\n
\n

\n The Chronic Conditions VIP List is a table of patients created by {{app.CompanyName}}'s\n data experts specifically for you! This file is a workable list of\n patients whom you can contact to achieve the greatest difference in\n your overall Chronic Conditions gap rate and Risk Adjustment Factor.\n

\n \n
\n
\n
\n\n\n\n \n \n \n
\n
\n
\n
{{app.ApplicationName}} Chronic Conditions VIP List
\n
\n
\n
\n

\n The Chronic Conditions VIP List is a table of patients created by {{app.CompanyName}}'s\n data experts specifically for you! This file is a workable list of\n patients whom you can contact to achieve the greatest difference in\n your overall Chronic Conditions gap rate and Risk Adjustment Factor.\n

\n \n
\n
\n
\n
\n
\n\n\n\n \n\n \n \n \n \n \n\n","import { AfterViewInit, Component, ViewChild, ViewChildren, QueryList, OnDestroy } from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport {\n ImproveFeatureConstants,\n ModuleConstants,\n HomeComponentConstants,\n SubmitFeatureConstants,\n SubmitFeatureNames,\n TrackFeatureConstants,\n CareFeatureConstants,\n SubmitFormConstants\n} from '@shared/models/module-constants';\nimport { FolderLookupService } from '@shared/services/folder-lookup/folder-lookup.service';\nimport { FormConstants } from '@shared/models/forms/form-constants';\nimport { NgxMasonryOptions, NgxMasonryComponent } from 'ngx-masonry';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service';\nimport { CardWidgetService } from '@api/track/services/card-widget.service';\nimport { CaravanFormSubmissionPeriodOverview } from '@shared/models/forms/form-submissionID-model';\nimport { AppConstants } from '@shared/models/constants/app-constants';\nimport { CardWidget } from '@api/track/models/card-widget';\nimport { MarkdownComponent } from 'ngx-markdown';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { LinkClickedEventsService } from '@shared/services/mixpanel/events/link-clicked-events.service';\n\nconst {\n FinancialUtilizationFeature,\n ClinicalFeature,\n QualityFeature,\n QualityFeatureName,\n ValueCalculatorFeature,\n ValueCalculatorFeatureFlag,\n ValueCalculatorName,\n PerformanceDashboardFeature,\n CompareFeature,\n CompareFeatureName,\n CompareFeatureFlag\n} = TrackFeatureConstants;\n\n@Component({\n selector: 'coach-home',\n templateUrl: './home.component.html',\n host: {\n class: 'coach-home'\n }\n})\nexport class HomeComponent implements AfterViewInit, OnDestroy {\n hccvipFolderId: number;\n hccvipSubscription: Subscription;\n fromCaravanPHIFolderId: number;\n fromCaravanPHISubscription: Subscription;\n qualityCampaignFolderId: number;\n qualityCampaignSubscription: Subscription;\n widgetMarkdown: any;\n widgetSubscription: Subscription;\n cardWidgetIDs: string[];\n currentTier: string;\n phiAccess: boolean = false;\n formSubmissionOverview: CaravanFormSubmissionPeriodOverview[];\n currentDate: string;\n app = AppConstants;\n\n @ViewChild('postDiv', { static: false })\n private postDiv: MarkdownComponent;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private userAccessService: UserAccessService,\n private folderService: FolderLookupService,\n private formsService: SubmitFormsService,\n private cardService: CardWidgetService,\n private featureFlagService: FeatureFlagService,\n private linkClickedEventsService: LinkClickedEventsService\n ) {\n this.hccvipSubscription = this.folderService.hccvipFolderId$.subscribe(\n hccvipFolderId => (this.hccvipFolderId = hccvipFolderId)\n );\n this.fromCaravanPHISubscription = this.folderService.fromCaravanPHIFolderId$.subscribe(\n fromCaravanPHIFolderId => (this.fromCaravanPHIFolderId = fromCaravanPHIFolderId)\n );\n this.qualityCampaignSubscription = this.folderService.qualityCampaignsFolderId$.subscribe(\n qualityCampaignFolderId => {\n this.qualityCampaignFolderId = qualityCampaignFolderId;\n }\n );\n this.userAccessService.currentAccess$.pipe().subscribe(access => {\n this.phiAccess = access?.phi;\n\n if (this.userAccessService.hasModule(access, ModuleConstants.SubmitModule)) {\n this.formsService.getSubmitPeriodsOverview(0).subscribe(data => {\n this.formSubmissionOverview = data;\n this.currentDate = formatDate(new Date(), 'yyyy-MM-dd', 'en');\n });\n }\n });\n this.widgetSubscription = this.cardService.cardWidgetGet().subscribe(WelcomeCard => {\n this.widgetMarkdown = WelcomeCard.reduce((group, cardWidget) => {\n const { cardWidgetId } = cardWidget;\n group[cardWidgetId] = group[cardWidgetId] ?? [];\n group[cardWidgetId].push(cardWidget);\n return group;\n }, {});\n this.cardWidgetIDs = Object.keys(this.widgetMarkdown);\n });\n }\n\n careModule = ModuleConstants.CareModule;\n improveModule = ModuleConstants.ImproveModule;\n trackModule = ModuleConstants.TrackModule;\n submitModule = ModuleConstants.SubmitModule;\n\n marketingWidgetComponent = HomeComponentConstants.MarketingWidget;\n marketingWidgetComponent2 = HomeComponentConstants.MarketingWidget2;\n\n improveContactsFeature = ImproveFeatureConstants.ContactsFeature;\n improveACOBoardFeature = ImproveFeatureConstants.ACOBoardFeature;\n improveSteeringCommiteeFeature = ImproveFeatureConstants.SteeringCommiteeFeature;\n improvePracticeImprovementFeature = ImproveFeatureConstants.PracticeImprovementFeature;\n improveITFeature = ImproveFeatureConstants.InformationTechnologyFeature;\n improveEventFeature = ImproveFeatureConstants.EventsFeature;\n\n trackClinicalFeature = ClinicalFeature;\n trackFinancialFeature = FinancialUtilizationFeature;\n trackQualityFeature = QualityFeature;\n trackQualityFeatureName = QualityFeatureName;\n trackValueFeature = ValueCalculatorFeature;\n trackValueFeatureFlag = ValueCalculatorFeatureFlag;\n trackValueName = ValueCalculatorName;\n trackCompareFeature = CompareFeature;\n trackCompareFeatureFlag = CompareFeatureFlag;\n trackCompareName = CompareFeatureName;\n trackPerformanceFeature = PerformanceDashboardFeature;\n carePrescriptionFeature = CareFeatureConstants.CarePrescriptionFeature;\n carePrescriptionProcessingFeature = CareFeatureConstants.CarePrescriptionProcessingFeature;\n careExceptionsFeature = CareFeatureConstants.CarePrescriptionExceptionsFeature;\n HCCVIPCohortList: string = CareFeatureConstants.HCCVIPCohortList;\n HCCListRevamp: string = CareFeatureConstants.HCCListRevamp;\n\n submitQualityFeature = SubmitFeatureConstants.QualityFormFeature;\n submitQuailityName = SubmitFeatureNames.Quality;\n submitMeetingFeature = SubmitFeatureConstants.MeetingFormFeature;\n submitMeetingName = SubmitFeatureNames.Meeting;\n submitComplianceFeature = SubmitFeatureConstants.ComplianceFormFeature;\n submitComplianceName = SubmitFeatureNames.Compliance;\n submitPIFeature = SubmitFeatureConstants.PromotingInteroperabilityFormFeature;\n submitPIName = SubmitFeatureNames.PI;\n\n qualityOpenInfo = FormConstants.QualityOpeningInfo;\n qualityOpenDueDate = FormConstants.QualityOpenDueDate;\n qualityrequirements = FormConstants.Quality.requirements;\n qualityFormId = SubmitFormConstants.QualityFormComponent;\n complianceOpenInfo = FormConstants.ComplianceOpeningInfo;\n complianceOpenDueDate = FormConstants.ComplianceOpenDueDate;\n complianceFormId = SubmitFormConstants.ComplianceFormComponent;\n piOpenInfo = FormConstants.PIOpeningInfo;\n piOpenDueDate = FormConstants.PIOpenDueDate;\n piFormId = SubmitFormConstants.PromotingInteroperabilityFormComponent;\n meetingWidgetName = FormConstants.MeetingWidgetName;\n meetingOpenInfo = FormConstants.MeetingOpeningInfo;\n meetingOpenDueDate = FormConstants.MeetingOpenDueDate;\n\n public masonryOptions: NgxMasonryOptions = {\n gutter: 25,\n horizontalOrder: true,\n percentPosition: true\n };\n\n @ViewChild(NgxMasonryComponent) public masonry: NgxMasonryComponent;\n @ViewChildren(NgxMasonryComponent) masonryContent: QueryList;\n\n ngAfterViewInit() {\n this.masonry.layoutComplete.subscribe((e: any) => {\n this.resetLayout();\n });\n }\n\n ngOnDestroy() {\n if (this.hccvipSubscription) {\n this.hccvipSubscription.unsubscribe();\n }\n if (this.fromCaravanPHISubscription) {\n this.fromCaravanPHISubscription.unsubscribe();\n }\n if (this.qualityCampaignSubscription) {\n this.qualityCampaignSubscription.unsubscribe();\n }\n if (this.widgetSubscription) {\n this.widgetSubscription.unsubscribe();\n }\n }\n\n public resetLayout() {\n this.masonry.reloadItems();\n this.masonry.layout();\n }\n\n goToItems = (e: Event, path: string, query?: unknown | null): void => {\n e.preventDefault();\n\n this.trackLinkClick(e, path, query);\n\n this.router.navigate(['..' + path], {\n queryParams: query,\n relativeTo: this.activatedRoute.parent\n });\n };\n\n onCareClick(event: Event) {\n event.preventDefault();\n\n const hasFeature = this.featureFlagService.hasFeatureFlag(CareFeatureConstants.CareLandingPageFlag);\n const path = hasFeature ? '/care/summary-tab' : '/care';\n\n this.trackLinkClick(event, path);\n\n this.router.navigate(['..' + path], {\n relativeTo: this.activatedRoute.parent\n });\n }\n\n /**\n * Send link clicks to mixpanel\n */\n trackLinkClick(event: Event, targetPage: string, query: { [key: string]: any } = {}): void {\n try {\n const { filterPreset } = query;\n const el = event.target as HTMLElement;\n const linkText = el.innerText;\n const linkId = el.id;\n this.linkClickedEventsService.sendLinkClickedEvent({\n linkId,\n linkText,\n filterPreset,\n targetPage\n });\n } catch (error) {\n console.error(error);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { HomeComponent } from './home.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: HomeComponent,\n data: {\n label: 'Home'\n }\n },\n {\n path: '**',\n pathMatch: 'full',\n redirectTo: ''\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class HomeRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '@shared/shared.module';\nimport { HomeRoutingModule } from './home-routing.module';\nimport { HomeComponent } from './home.component';\nimport { NgxMasonryModule } from 'ngx-masonry';\nimport { MarkdownModule } from 'ngx-markdown';\n\n@NgModule({\n declarations: [HomeComponent],\n imports: [\n SharedModule,\n HomeRoutingModule,\n NgxMasonryModule,\n MarkdownModule.forChild()\n ]\n})\nexport class HomeModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { AuthService } from '../auth-service/auth.service';\nimport { Observable } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { DocRepo } from '@shared/models/docRepo/list';\nimport { BehaviorSubject } from 'rxjs';\nimport { ClinicianRoster } from '@shared/models/docRepo/clinician-roster-model';\n\n@Injectable({ providedIn: 'root' })\nexport class FileDownloadService {\n public generalFolderList$: BehaviorSubject;\n public selectedFolder$: BehaviorSubject;\n private get headers(): HttpHeaders {\n return new HttpHeaders({\n Authorization: `Bearer ${this.authService.IdToken}`,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n });\n }\n public uploadFolders: DocRepo[];\n\n constructor(\n private http: HttpClient,\n private authService: AuthService\n ) {\n this.generalFolderList$ = new BehaviorSubject([]);\n this.selectedFolder$ = new BehaviorSubject(null);\n }\n\n downloadFile(doc: string): any {\n return this.http.get(doc, { responseType: 'blob' });\n }\n\n fetchDocRepoList(tierNode: string): void {\n const listResult = this.http.get(\n environment.coachApiUrl + `/api/docRepo/list/${tierNode}`,\n { headers: this.headers, responseType: 'json' }\n );\n listResult.subscribe(data => {\n if (data && data.length !== 0) {\n this.generalFolderList$.next(data[0].Children);\n this.setupUploadDocRepoPaths(data[0].Children);\n }\n });\n }\n\n getChildrenByCollectionName(tabName: string, docRepoList: DocRepo[]): DocRepo[] {\n const yourFolderData = docRepoList.filter(item => item.Title === tabName);\n if (yourFolderData && yourFolderData[0] && yourFolderData[0].Children) {\n return yourFolderData[0].Children;\n }\n }\n\n getSpecificFile(fileID: number): any {\n let response: Observable;\n const params: HttpParams = new HttpParams()\n .set('fileID', fileID.toString());\n response = this.http.get(environment.coachApiUrl + '/api/docRepo/file',\n { headers: this.headers, params, responseType: 'text' as 'json' });\n return response;\n }\n\n updateSelectedFolder(docRepo: DocRepo): void {\n this.selectedFolder$.next(docRepo);\n }\n\n private setupUploadDocRepoPaths(allDocRepo: DocRepo[] ): void {\n\n const PIDocs = this.getChildrenByCollectionName('Practice Improvement', allDocRepo);\n const toCaravanPHI = PIDocs.filter(item => item.Title === 'To Caravan WITH PHI')[0];\n const toCaravan = PIDocs.filter(item => item.Title === 'To Caravan NO PHI')[0];\n this.uploadFolders = [toCaravan, toCaravanPHI];\n }\n\n getMyTeamPage(tierID: string): Observable {\n const params: HttpParams = new HttpParams().set('tierID', tierID);\n\n return this.http.get(environment.coachApiUrl + '/api/docRepo/myTeam',\n { headers: this.headers, params, responseType: 'text' as 'json' });\n }\n\n getClientContacts(tierID: string, altTierID: string): Observable {\n const params: HttpParams = new HttpParams().set('tierID', tierID).set('altTierID', altTierID);\n\n return this.http.get(environment.coachApiUrl + '/api/docRepo/clientContacts',\n { headers: this.headers, params, responseType: 'text' as 'json' });\n }\n\n getClinicianRoster(tierID: string, altTierID: string): Observable {\n const params: HttpParams = new HttpParams().set('tierID', tierID).set('altTierID', altTierID);\n\n return this.http.get(environment.coachApiUrl + '/api/docRepo/clinicianRosters',\n { headers: this.headers, params });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Module } from '@shared/services/graphql/module.service';\nimport { AccessGQL } from '@shared/services/graphql/access.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\nimport { ImproveFeatureConstants } from '@shared/models/module-constants';\nimport { Observable } from 'rxjs';\n\nconst {\n ContactsFeature,\n PracticeImprovementFeature,\n InformationTechnologyFeature,\n} = ImproveFeatureConstants;\n\n@Component({\n selector: 'coach-improve',\n templateUrl: './improve.component.html',\n host: {\n class: 'coach-improve',\n },\n})\nexport class ImproveComponent implements OnInit {\n public module: Observable;\n\n public tabsData = [\n {\n name: 'Summary',\n routerLink: ['summary'],\n featureId: null,\n },\n {\n name: 'Practice Improvement',\n routerLink: ['practice-improvement'],\n featureId: PracticeImprovementFeature,\n },\n {\n name: 'Information Technology',\n routerLink: ['information-technology'],\n featureId: InformationTechnologyFeature,\n },\n {\n name: 'Contacts',\n routerLink: ['contacts'],\n featureId: ContactsFeature,\n },\n ];\n\n public currentTier: IHierarchyTier;\n\n constructor(\n private accessGQL: AccessGQL,\n private hierarchyTierService: HierarchyTierService,\n private fileDownloadService: FileDownloadService\n ) {}\n\n ngOnInit(): void {\n this.getTier();\n }\n\n getTier(): void {\n this.hierarchyTierService.currentTier$?.subscribe((x) => {\n this.currentTier = x;\n this.fileDownloadService.fetchDocRepoList(x.selectedTierId);\n this.getAccess();\n });\n }\n\n getAccess(): void {\n //This module subscribes directly to the Gql API\n //TODO - replace it with the UserAccessService\n\n if (this.currentTier !== null) {\n this.accessGQL\n .watch(\n { nodeId: this.currentTier.selectedTierId },\n { fetchPolicy: 'cache-first' }\n )\n .valueChanges.subscribe(({ data }) => {\n const ourModule =\n data?.access?.modules?.filter((m) => m.name === 'Transform') || [];\n const featureIds: number[] = (ourModule[0]?.features || []).map(\n (feature) => feature.featureId\n );\n this.tabsData = this.tabsData.filter(\n (tab) =>\n tab.featureId === null || featureIds.indexOf(tab.featureId) >= 0\n );\n });\n }\n }\n}\n","\n\n","
\n
\n
\n
\n
\n
Practice Improvement
\n
\n
\n
\n \n

\n Learn about {{app.CompanyNameFull}}'s proven best practices and how to implement them across your community.\n

\n \n
\n
\n
\n
\n
\n
Information Technology
\n
\n
\n
\n \n

\n We're here to help! We are dedicated to improving our solutions to make your job easier - check out the latest and greatest!\n

\n \n
\n
\n
\n
\n
\n
Contacts
\n
\n
\n
\n \n

\n Welcome to {{app.CompanyName}} Health, we appreciate you and look forward to helping you on your ACO journey.\n

\n \n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { AppConstants } from '@shared/models/constants/app-constants';\nimport { ImproveFeatureConstants } from '@shared/models/module-constants';\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service'; \nimport { Subscription } from 'rxjs/internal/Subscription';\n\n@Component({\n selector: 'coach-improve-summary',\n templateUrl: './improve-summary.component.html',\n host: {\n class: 'coach-improve',\n },\n})\nexport class ImproveSummaryComponent {\n RoadmapsFolderSubscription: Subscription;\n RoadmapsFolder;\n ContactsFeature = ImproveFeatureConstants.ContactsFeature;\n acoBoardFeature = ImproveFeatureConstants.ACOBoardFeature;\n steeringCommiteeFeature = ImproveFeatureConstants.SteeringCommiteeFeature;\n practiceImprovementFeature =\n ImproveFeatureConstants.PracticeImprovementFeature;\n informationTechnologyFeature =\n ImproveFeatureConstants.InformationTechnologyFeature;\n eventsFeature = ImproveFeatureConstants.EventsFeature;\n app = AppConstants;\n\n constructor(private router: Router, private activatedRoute: ActivatedRoute, private formsService: SubmitFormsService) {\n this.RoadmapsFolderSubscription = this.formsService.getFolderGeneric('ROADMAPS', 'Practice Improvement', 'Improve').subscribe(\n (data) => (this.RoadmapsFolder = data)); \n }\n\n public goToItems(e, path: string, query?: object | null) {\n e.preventDefault();\n this.router.navigate(['..' + path], {\n queryParams: query,\n relativeTo: this.activatedRoute.parent,\n });\n }\n}\n","export class DocRepo {\n Author: string;\n BlobPath?: string;\n Children?: DocRepo[];\n CollectionId: number;\n Created: string;\n Deleted: boolean;\n Container?: string;\n EntryId: number;\n EntryType: string;\n FileSize?: number;\n Hidden: boolean;\n InheritAttributes: boolean;\n OriginalFileName?: string;\n IsApproved: boolean;\n LastModified: string;\n LastVersionId: number;\n Owner: number;\n Path: string;\n Title: string;\n ContainsPHI: boolean;\n Version: number;\n}\n\n\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'coach-team-member',\n templateUrl: './team-member.component.html',\n styleUrls: ['./team-member.component.scss']\n})\nexport class TeamMemberComponent {\n\n @Input() name: string;\n @Input() email: string;\n @Input() phone: string;\n @Input() description: string;\n @Input() title: string;\n\n constructor() { }\n}\n","

{{title}}

\n
\n

Description of Duties: {{description}}

\n
Name: {{name}}
\n
Phone: {{phone}}
\n
Email: {{email}}
\n
","\n \n \n \n \n \n \n \n \n \n\n","import { Component, OnInit } from '@angular/core';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\nimport { TeamMember, Account } from './team-member';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'coach-my-team',\n templateUrl: './my-team.component.html',\n styleUrls: ['./my-team.component.scss']\n})\nexport class MyTeamComponent extends KillSubscriptions implements OnInit {\n\n selectedAccount: Account;\n teamMembers: TeamMember[];\n\n constructor(private fileDownloadService: FileDownloadService, private hierarchyTierService: HierarchyTierService) {\n super();\n }\n\n ngOnInit(): void {\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger)).subscribe(tier => {\n if (tier != null) {\n this.fileDownloadService.getMyTeamPage(tier.selectedItem.tier2_ID).subscribe(accountsJson => {\n if(accountsJson) {\n const serializedAccounts: Account[] = JSON.parse(accountsJson) || [];\n this.selectedAccount = serializedAccounts.length == 0 ? null : serializedAccounts.find(account => account.cat.some(member => member.ICC === tier.selectedItem.tier2_ID));\n this.teamMembers = this.selectedAccount == null ? [] : this.selectedAccount.cat.filter(member => member.ICC === tier.selectedItem.tier2_ID);\n }\n });\n }\n });\n }\n\n}\n","import { Component, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { ClientAccount, ClientContact } from './client-contact';\nimport { formatDate } from '@angular/common';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { takeUntil } from 'rxjs/operators';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\n@Component({\n selector: 'coach-client-contacts',\n templateUrl: './client-contacts.component.html',\n styleUrls: ['./client-contacts.component.scss']\n})\nexport class ClientContactsComponent extends KillSubscriptions implements OnInit {\n columnDefs = [\n { headerName: 'Account Name', field: 'accountName', sortable: true, filter: true, resizable: true },\n { headerName: 'Contact Name', field: 'contactName', sortable: true, filter: true, resizable: true },\n { headerName: 'Point-of-Contact Role', field: 'pocRole', sortable: true, filter: true, resizable: true },\n { headerName: 'Email', field: 'email', sortable: true, filter: true, resizable: true },\n { headerName: 'PHI', field: 'phi', sortable: true, filter: true, resizable: true, width: 50 },\n { headerName: 'Specify Edit/Remove/Add', field: '', sortable: true, filter: true, resizable: true, hide: true },\n { headerName: 'Notes to Caravan Health', field: '', sortable: true, filter: true, resizable: true, hide: true }\n ];\n\n rowData: ClientContact[];\n supportEmail: string = AppConstants.SupportEmail;\n private gridApi: any;\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private fileDownloadService: FileDownloadService,\n private hierarchyTierService: HierarchyTierService\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger)).subscribe(tier => {\n if (tier != null) {\n let altTier = '';\n if (tier.highestTier == null) {\n altTier = tier.selectedTierId;\n } else {\n switch (tier.highestTier) {\n case 1:\n altTier = tier.selectedItem.tier1_ID;\n break;\n case 2:\n altTier = tier.selectedItem.tier2_ID;\n break;\n case 3:\n altTier = tier.selectedItem.tier3_ID;\n break;\n case 4:\n altTier = tier.selectedItem.tier4_ID;\n break;\n default:\n altTier = tier.selectedItem.tier2_ID;\n break;\n }\n }\n this.fileDownloadService\n .getClientContacts(tier.selectedItem.tier2_ID, altTier)\n .subscribe((accountsJson: string) => {\n const serializedAccounts: ClientAccount[] = JSON.parse(accountsJson) || [];\n const contacts: ClientContact[] = [];\n serializedAccounts.forEach(account =>\n account.c.forEach(contact =>\n contacts.push({\n accountName: account.AccountName,\n contactName: contact.FullName,\n email: contact.Email,\n phi: contact.PHI,\n pocRole: contact.PointOfContactRole\n })\n )\n );\n\n this.rowData = contacts;\n });\n }\n });\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n }\n\n onFirstDataRendered(params: any): void {\n params.api.sizeColumnsToFit();\n }\n\n export(): void {\n const timestamp = formatDate(new Date(), 'yyyyMMdd', this.locale);\n this.gridApi.exportDataAsExcel({\n allColumns: true,\n fileName: `${this.hierarchyTierService.currentTier$.value.selectedItem.tier2_ID}_Community_Contacts_${timestamp}.xlsx`\n });\n }\n}\n","
\n
\n
Note: Please review the point-of-contact(s) for your account(s) below.
\n ACO Champions, please send email to {{supportEmail}} with any updates and the action(s) to\n be taken. For multiple changes, Download to an Excel sheet and submit as an attachment with any edits noted to\n {{supportEmail}}.\n
\n\n \n \n \n
","
\n
\n Note: ACO Champions, For any clinician adds or removes please send an email to \n {{supportEmail}} with any updates and the\n action(s) to be taken. For multiple changes, download all clinicians to an Excel sheet and submit as an\n attachment with any edits noted to {{supportEmail}}.  Note: Practices Tax\n IDs can only be added or removed annually.\n
\n\n
\n Program Select:\n \n
\n\n \n \n \n
\n\n\n
\n
\n
\n
\n
\n Clinician Roster Export Instructions\n
\n
\n
\n
\n
\n This file is to attest to Caravan Health the clinicians currently participating in the community's\n ACO.\n
\n
\n The data contained within this report is coming from Caravan Health's internal records and is used\n to identify the clinicians who are participating in the community's ACO.\n
\n

\n Please make any required changes in the PECOS system first. Then update this spreadsheet. Once\n completed please submit the workbook as an attachment on a new ticket at {{supportEmail}}\n\n Please update the column Q on each row to state if it is correct or not. Column R is provided for\n any note you may want to leave us for that given row.\n

\n

\n To update PECOS via the internet portal, please click here\n

\n

\n For PECOS technical assistance, please click here\n for troubleshooting help.\n\n

\n
\n
\n \n
\n
\n
\n
\n","import { formatDate } from '@angular/common';\nimport { Component, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { ClinicianRoster, providerList } from '@shared/models/docRepo/clinician-roster-model';\nimport { ExcelService, workBook, WorkSheetTypes } from '@shared/services/excel-export/excel.service';\nimport { UserInfo } from '@shared/services/auth-service/auth-interface';\nimport { Subscription, Observable } from 'rxjs';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\n@Component({\n selector: 'coach-clinician-roster',\n templateUrl: './clinician-roster.component.html',\n styleUrls: ['./clinician-roster.component.scss']\n})\nexport class ClinicianRosterComponent extends KillSubscriptions implements OnInit {\n columnDefs = [];\n\n rowData: providerList[];\n showInstructionsModal: boolean;\n\n private gridApi: any;\n public ClinicianRoster: ClinicianRoster[];\n public progID: number;\n\n public isAuthenticated$: Observable;\n public userSub: Subscription;\n public userInfo$: Observable;\n private _isLoggedIn: boolean = false;\n private _currentUser: UserInfo;\n\n private workbookData: workBook[];\n\n private msspColumnDefs = [\n { headerName: 'CMS ACO ID', field: 'ACO_ID', sortable: true, filter: true, resizable: true },\n { headerName: 'ACO Name', field: 'ACO_Name', sortable: true, filter: true, resizable: true, hide: true },\n { headerName: 'Community Code', field: 'ICC', sortable: true, filter: true, resizable: true },\n { headerName: 'Participant Code', field: 'Prin_Part_ICC', sortable: true, filter: true, resizable: true },\n {\n headerName: 'Participant Name',\n field: 'Prin_Part_Name',\n sortable: true,\n filter: true,\n resizable: true,\n hide: true\n },\n { headerName: 'Practice Identifier', field: 'practice_last_4_tin', sortable: true, filter: true, resizable: true },\n { headerName: 'Practice Name', field: 'Practice_Legal_Name', sortable: true, filter: true, resizable: true },\n { headerName: 'Practice DBA Name', field: 'Practice_DBA_Name', sortable: true, filter: true, resizable: true },\n { headerName: 'Provider NPI', field: 'Individual_Provider_NPI', sortable: true, filter: true, resizable: true },\n { headerName: 'First Name', field: 'First_Name', sortable: true, filter: true, resizable: true },\n { headerName: 'Last Name', field: 'Last_Name', sortable: true, filter: true, resizable: true },\n { headerName: 'Credentials', field: 'Credentials', sortable: true, filter: true, resizable: true, hide: true },\n {\n headerName: 'Status',\n field: 'Provider_Status_in_CaravanHealth_Internal_Records',\n sortable: true,\n filter: true,\n resizable: true\n },\n {\n headerName: 'Specify Edit/Remove/Add',\n field: '',\n sortable: true,\n filter: true,\n resizable: true,\n hide: true,\n value: [{ name: 'Accurate' }, { name: 'Add' }, { name: 'Drop' }]\n },\n { headerName: 'Notes to Caravan Health', field: '', sortable: true, filter: true, resizable: true, hide: true }\n ];\n\n private commercialColumnDefs = [\n { headerName: 'CMS ACO ID', field: 'ACO_ID', sortable: true, filter: true, resizable: true },\n { headerName: 'ACO Name', field: 'ACO_Name', sortable: true, filter: true, resizable: true, hide: true },\n { headerName: 'Community Code', field: 'ICC', sortable: true, filter: true, resizable: true },\n { headerName: 'Participant Code', field: 'Prin_Part_ICC', sortable: true, filter: true, resizable: true },\n {\n headerName: 'Participant Name',\n field: 'Prin_Part_Name',\n sortable: true,\n filter: true,\n resizable: true,\n hide: true\n },\n { headerName: 'Practice Identifier', field: 'practice_last_4_tin', sortable: true, filter: true, resizable: true },\n { headerName: 'Practice Name', field: 'Practice_Legal_Name', sortable: true, filter: true, resizable: true },\n { headerName: 'Practice DBA Name', field: 'Practice_DBA_Name', sortable: true, filter: true, resizable: true },\n {\n headerName: 'Practice_ADDID_Name',\n field: 'Practice_ADDID_Name',\n sortable: true,\n filter: true,\n resizable: true,\n hide: true\n },\n {\n headerName: 'Practice_AddID_Value',\n field: 'Practice_AddID_Value',\n sortable: true,\n filter: true,\n resizable: true\n },\n\n { headerName: 'Provider NPI', field: 'Individual_Provider_NPI', sortable: true, filter: true, resizable: true },\n { headerName: 'First Name', field: 'First_Name', sortable: true, filter: true, resizable: true },\n { headerName: 'Last Name', field: 'Last_Name', sortable: true, filter: true, resizable: true },\n {\n headerName: 'Ind_ADDID_Name',\n field: 'Ind_ADDID_Name',\n sortable: true,\n filter: true,\n resizable: true,\n hide: true\n },\n {\n headerName: 'Ind_AddID_Value',\n field: 'Ind_AddID_Value',\n sortable: true,\n filter: true,\n resizable: true,\n hide: true\n },\n { headerName: 'Credentials', field: 'Credentials', sortable: true, filter: true, resizable: true, hide: true },\n {\n headerName: 'Status',\n field: 'Provider_Status_in_CaravanHealth_Internal_Records',\n sortable: true,\n filter: true,\n resizable: true\n },\n {\n headerName: 'Specify Edit/Remove/Add',\n field: '',\n sortable: true,\n filter: true,\n resizable: true,\n hide: true,\n value: [{ name: 'Accurate' }, { name: 'Add' }, { name: 'Drop' }]\n },\n { headerName: 'Notes to Caravan Health', field: '', sortable: true, filter: true, resizable: true, hide: true }\n ];\n\n supportEmail: string = AppConstants.SupportEmail;\n\n private instructionsSheet = [\n {\n workSheet: 'Instructions',\n workSheetType: WorkSheetTypes.freeForm,\n rows: [\n {\n row: 1,\n cols: [\n {\n column: 'A',\n value: 'Requested On:',\n styling: { font: { bold: true }, alignment: { vertical: 'bottom', horizontal: 'left' } },\n columnWidth: 17.43\n },\n {\n column: 'B',\n value: formatDate(Date.now(), 'MM/dd/yyyy', this.locale),\n styling: { alignment: { vertical: 'bottom', horizontal: 'left' } },\n columnWidth: 35\n }\n ]\n },\n {\n row: 3,\n cols: [\n {\n column: 'A',\n value: 'Requested By:',\n styling: { font: { bold: true }, alignment: { vertical: 'bottom', horizontal: 'left' } }\n },\n { column: 'B', value: '', styling: { alignment: { vertical: 'bottom', horizontal: 'left' } } }\n ]\n },\n {\n row: 5,\n cols: [\n {\n column: 'A',\n value: 'Request Method:',\n styling: { font: { bold: true }, alignment: { vertical: 'bottom', horizontal: 'left' } }\n },\n {\n column: 'B',\n value: 'Downloaded via Coach',\n styling: { alignment: { vertical: 'bottom', horizontal: 'left' } }\n }\n ]\n },\n {\n row: 7,\n cols: [\n {\n column: 'A',\n value: 'Completed On:',\n styling: { font: { bold: true }, alignment: { vertical: 'bottom', horizontal: 'left' } }\n },\n {\n column: 'B',\n value: formatDate(Date.now(), 'MM/dd/yyyy', this.locale),\n styling: { alignment: { vertical: 'bottom', horizontal: 'right' } }\n }\n ]\n },\n {\n row: 9,\n cols: [\n {\n column: 'A',\n value: 'Purpose:',\n styling: {\n font: { bold: true },\n border: { bottom: { style: 'thin' } },\n alignment: { vertical: 'bottom', horizontal: 'left' }\n }\n }\n ]\n },\n {\n row: 10,\n cols: [\n {\n column: 'B',\n value:\n 'This file is to attest to Caravan Health the clinicians currently participating in the communities ACO.',\n styling: {\n border: { top: { style: 'thin' } },\n alignment: { wrapText: true, vertical: 'top', horizontal: 'left' }\n },\n mergeCells: 'B10:F16'\n }\n ]\n },\n {\n row: 17,\n cols: [\n {\n column: 'A',\n value: 'Description:',\n styling: {\n font: { bold: true },\n border: { bottom: { style: 'thin' } },\n alignment: { vertical: 'bottom', horizontal: 'left' }\n }\n }\n ]\n },\n {\n row: 18,\n cols: [\n {\n column: 'B',\n value:\n \"The data contained within this report is coming from Caravan Health's internal records and is used to identify the clinicians who are participating in the community's ACOs.\",\n styling: {\n border: { top: { style: 'thin' } },\n alignment: { wrapText: true, vertical: 'top', horizontal: 'left' }\n },\n mergeCells: 'B18:F25'\n }\n ]\n },\n {\n row: 26,\n cols: [\n {\n column: 'A',\n value: 'Instructions:',\n styling: {\n font: { bold: true },\n border: { bottom: { style: 'thin' } },\n alignment: { vertical: 'bottom', horizontal: 'left' }\n }\n }\n ]\n },\n {\n row: 27,\n cols: [\n {\n column: 'B',\n value: {\n richText: [\n {\n font: { size: 11, color: { theme: 1 }, name: 'Calibri', family: 2, scheme: 'minor' },\n text: `Please make any required changes in the PECOS system first. Then update this spreadsheet. Once completed please submit the workbook as an attachment on a new ticket at ${this.supportEmail}. \\r\\n\\nPlease update the column Q on each row to state if it is correct or not. Column R is provided for any note you may want to leave us for that given row.`\n }\n ]\n },\n styling: {\n border: { top: { style: 'thin' } },\n alignment: { wrapText: true, vertical: 'top', horizontal: 'left' }\n },\n mergeCells: 'B27:F33'\n }\n ]\n },\n {\n row: 34,\n cols: [\n {\n column: 'B',\n value: {\n text: 'To update PECOS via the internet portal, please go to pecos.cms.hhs.gov',\n hyperlink: 'https://pecos.cms.hhs.gov',\n tooltip: 'https://pecos.cms.hhs.gov'\n },\n styling: { alignment: { wrapText: true, vertical: 'top', horizontal: 'left' } },\n mergeCells: 'B34:F36'\n }\n ]\n },\n {\n row: 37,\n rowHeight: 41,\n cols: [\n {\n column: 'B',\n value: {\n text: 'If you have trouble with PECOS or require technical assistance please go to https://www.cms.gov/Outreach-and-Education/Medicare-Learning-Network-MLN/MLNProducts/downloads/MedEnroll_PECOS_Contact_FactSheet_ICN903766.pdf for troubleshooting help.',\n hyperlink:\n 'https://www.cms.gov/Outreach-and-Education/Medicare-Learning-Network-MLN/MLNProducts/downloads/MedEnroll_PECOS_Contact_FactSheet_ICN903766.pdf',\n tooltip:\n 'https://www.cms.gov/Outreach-and-Education/Medicare-Learning-Network-MLN/MLNProducts/downloads/MedEnroll_PECOS_Contact_FactSheet_ICN903766.pdf'\n },\n styling: { alignment: { wrapText: true, vertical: 'top', horizontal: 'left' } },\n mergeCells: 'B37:F39'\n }\n ]\n }\n ]\n }\n ];\n\n transformData(clinicianRoster: ClinicianRoster[]): workBook[] {\n let outputWorkbook = [] as workBook[];\n\n const useremail = this._currentUser?.email || null;\n this.instructionsSheet[0].rows[1].cols[1].value = useremail;\n\n outputWorkbook.push(this.instructionsSheet[0]);\n\n clinicianRoster.forEach(program => {\n let rows = [];\n if (program.progID == '1' && program.progGroupID == '1') {\n const dataStructure = this.msspColumnDefs;\n\n program.providerList.forEach(entry => {\n const row = dataStructure.reduce(\n (prev, next) => ({\n ...prev,\n [next.headerName]:\n next.field == ''\n ? next.value != undefined\n ? next.value.map(({ name }) => name)\n : ''\n : entry[next.field]\n }),\n {}\n );\n\n rows.push(row);\n });\n } else if (program.progGroupID == '2') {\n const dataStructure = this.commercialColumnDefs;\n\n program.providerList.forEach(entry => {\n const row = dataStructure.reduce(\n (prev, next) => ({\n ...prev,\n [next.headerName]:\n next.field == ''\n ? next.value != undefined\n ? next.value.map(({ name }) => name)\n : ''\n : entry[next.field]\n }),\n {}\n );\n\n rows.push(row);\n });\n }\n\n const workSheet = {\n workSheet: program.progNameShort + ' List',\n workSheetType: WorkSheetTypes.table,\n theme: 'TableStyleMedium2',\n rows: rows\n };\n\n outputWorkbook.push(workSheet);\n });\n\n return outputWorkbook;\n }\n\n transform(data) {\n const noOfRowaToGenerate = 10;\n return data.map(({ name, values }) => {\n const headers = values.reduce(\n (prev, next) => ({\n ...prev,\n [next.header]: Array.isArray(next.value) ? next.value.map(({ name }) => name) : next.value\n }),\n {}\n );\n return {\n workSheet: name,\n rows: Array(noOfRowaToGenerate).fill(headers)\n };\n });\n }\n\n constructor(\n private _authService: AuthService,\n @Inject(LOCALE_ID) private locale: string,\n private fileDownloadService: FileDownloadService,\n private hierarchyTierService: HierarchyTierService\n ) {\n super();\n }\n\n private excelService = new ExcelService();\n\n ngOnInit(): void {\n this.userInfo$ = this._authService.userInfo$;\n this.userSub = this.userInfo$.subscribe(userInfo => {\n this._currentUser = userInfo;\n });\n this.hierarchyTierService.currentTier$.pipe(takeUntil(this.killTrigger)).subscribe(tier => {\n if (tier != null) {\n let altTier = '';\n if (tier.highestTier == null) {\n altTier = tier.selectedTierId;\n } else {\n switch (tier.highestTier) {\n case 1:\n altTier = tier.selectedItem.tier1_ID;\n break;\n case 2:\n altTier = tier.selectedItem.tier2_ID;\n break;\n case 3:\n altTier = tier.selectedItem.tier3_ID;\n break;\n case 4:\n altTier = tier.selectedItem.tier4_ID;\n break;\n default:\n altTier = tier.selectedItem.tier2_ID;\n break;\n }\n }\n this.fileDownloadService.getClinicianRoster(tier.selectedItem.tier2_ID, altTier).subscribe(rosterJson => {\n this.ClinicianRoster = rosterJson;\n\n this.progID = parseInt(this.ClinicianRoster[0].progID) || 0;\n\n if (this.progID == 1) {\n this.gridApi.setColumnDefs([]);\n this.gridApi.setColumnDefs(this.msspColumnDefs);\n } else {\n this.gridApi.setColumnDefs([]);\n this.gridApi.setColumnDefs(this.commercialColumnDefs);\n }\n\n this.rowData = this.ClinicianRoster[0].providerList || [];\n });\n }\n });\n }\n ngOnDestroy(): void {\n this.userSub.unsubscribe();\n }\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n }\n\n onFirstDataRendered(params: any): void {\n params.api.sizeColumnsToFit();\n }\n\n formatPhi(phi: boolean): string {\n return phi ? 'Yes' : 'No';\n }\n\n closeModal(): void {\n this.showInstructionsModal = false;\n }\n\n export(): void {\n const timestamp = formatDate(new Date(), 'yyyyMMdd', this.locale);\n\n this.workbookData = this.transformData(this.ClinicianRoster);\n\n this.excelService.exportAsExcel(\n this.workbookData,\n `${this.hierarchyTierService.currentTier$.value.selectedItem.tier2_ID}_Clinician_Roster_ ${timestamp}`\n );\n\n this.showInstructionsModal = true;\n }\n\n public selectClinicianRoster(program) {\n this.progID = program.target.value;\n\n if (this.progID == 1) {\n this.gridApi.setColumnDefs([]);\n this.gridApi.setColumnDefs(this.msspColumnDefs);\n } else {\n this.gridApi.setColumnDefs([]);\n this.gridApi.setColumnDefs(this.commercialColumnDefs);\n }\n this.rowData = this.ClinicianRoster[program.target.selectedIndex].providerList || [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { pluck } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth-service/auth.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DocumentService {\n BE_SERVER_URL = environment.coachApiUrl;\n\n constructor(\n private httpClient: HttpClient,\n private authService: AuthService\n ) { }\n\n // Asks the application server to create a viewing session for a particular\n // document. In this sample, documents are identified by a filename. In a real\n // application, you might use something else, such as a database identifier,\n // to identify your documents. The application server will then make a request\n // to the PrizmDoc Viewer backend to create a new viewing session for the\n // specified document, returning a new viewingSessionId. This viewingSessionId\n // is what your Angular app needs in order to instantiate the viewer.\n createViewingSessionForDocument(\n fileTitle: string,\n fileURL: string,\n fileExt: string\n ): Observable {\n console.log(\"*** createViewingSessionForDocument\");\n // console.log(new Error().stack);\n const httpHeaders: HttpHeaders = new HttpHeaders({\n Authorization: `Bearer ${this.authService.IdToken}`,\n });\n const encoded = encodeURIComponent(fileURL);\n return this.httpClient\n .get(\n `${this.BE_SERVER_URL}/api/docRepo/server/beginViewing?documentURL=${encoded}&documentTitle=${fileTitle}&fileExt=${fileExt}`,\n { responseType: 'json', headers: httpHeaders }\n )\n .pipe(pluck('viewingSessionId'));\n }\n}\n","import { map } from './map';\nexport function pluck(...properties) {\n const length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return (source) => map(plucker(properties, length))(source);\n}\nfunction plucker(props, length) {\n const mapper = (x) => {\n let currentProp = x;\n for (let i = 0; i < length; i++) {\n const p = currentProp[props[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n };\n return mapper;\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nexport function fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(map(args => isArray(args) ? resultSelector(...args) : resultSelector(args)));\n }\n return new Observable(subscriber => {\n const handler = (...e) => subscriber.next(e.length === 1 ? e[0] : e);\n let retValue;\n try {\n retValue = addHandler(handler);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!isFunction(removeHandler)) {\n return undefined;\n }\n return () => removeHandler(handler, retValue);\n });\n}\n","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function withLatestFrom(...args) {\n return (source) => {\n let project;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n const observables = args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\nclass WithLatestFromOperator {\n constructor(observables, project) {\n this.observables = observables;\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n }\n}\nclass WithLatestFromSubscriber extends OuterSubscriber {\n constructor(destination, observables, project) {\n super(destination);\n this.observables = observables;\n this.project = project;\n this.toRespond = [];\n const len = observables.length;\n this.values = new Array(len);\n for (let i = 0; i < len; i++) {\n this.toRespond.push(i);\n }\n for (let i = 0; i < len; i++) {\n let observable = observables[i];\n this.add(subscribeToResult(this, observable, observable, i));\n }\n }\n notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.values[outerIndex] = innerValue;\n const toRespond = this.toRespond;\n if (toRespond.length > 0) {\n const found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n }\n notifyComplete() {\n }\n _next(value) {\n if (this.toRespond.length === 0) {\n const args = [value, ...this.values];\n if (this.project) {\n this._tryProject(args);\n }\n else {\n this.destination.next(args);\n }\n }\n }\n _tryProject(args) {\n let result;\n try {\n result = this.project.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ViewChild, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Subject, BehaviorSubject, of, combineLatest, pipe, Observable, fromEventPattern, merge } from 'rxjs';\nimport { take, startWith, map, combineLatest as combineLatest$1, skipWhile, scan, distinctUntilChanged, tap, mergeMap, takeUntil, publish, switchMap, withLatestFrom, filter } from 'rxjs/operators';\n\n/// \nconst DEFAULT_PLAYER_WIDTH = 640;\nconst DEFAULT_PLAYER_HEIGHT = 390;\n/**\n * Angular component that renders a YouTube player via the YouTube player\n * iframe API.\n * @see https://developers.google.com/youtube/iframe_api_reference\n */\nclass YouTubePlayer {\n /** YouTube Video ID to view */\n get videoId() {\n return this._videoId.value;\n }\n set videoId(videoId) {\n this._videoId.next(videoId);\n }\n /** Height of video player */\n get height() {\n return this._height.value;\n }\n set height(height) {\n this._height.next(height || DEFAULT_PLAYER_HEIGHT);\n }\n /** Width of video player */\n get width() {\n return this._width.value;\n }\n set width(width) {\n this._width.next(width || DEFAULT_PLAYER_WIDTH);\n }\n /** The moment when the player is supposed to start playing */\n set startSeconds(startSeconds) {\n this._startSeconds.next(startSeconds);\n }\n /** The moment when the player is supposed to stop playing */\n set endSeconds(endSeconds) {\n this._endSeconds.next(endSeconds);\n }\n /** The suggested quality of the player */\n set suggestedQuality(suggestedQuality) {\n this._suggestedQuality.next(suggestedQuality);\n }\n /**\n * Extra parameters used to configure the player. See:\n * https://developers.google.com/youtube/player_parameters.html?playerVersion=HTML5#Parameters\n */\n get playerVars() {\n return this._playerVars.value;\n }\n set playerVars(playerVars) {\n this._playerVars.next(playerVars);\n }\n /** Whether cookies inside the player have been disabled. */\n get disableCookies() {\n return this._disableCookies.value;\n }\n set disableCookies(value) {\n this._disableCookies.next(!!value);\n }\n constructor(_ngZone, platformId) {\n this._ngZone = _ngZone;\n this._youtubeContainer = new Subject();\n this._destroyed = new Subject();\n this._playerChanges = new BehaviorSubject(undefined);\n this._videoId = new BehaviorSubject(undefined);\n this._height = new BehaviorSubject(DEFAULT_PLAYER_HEIGHT);\n this._width = new BehaviorSubject(DEFAULT_PLAYER_WIDTH);\n this._startSeconds = new BehaviorSubject(undefined);\n this._endSeconds = new BehaviorSubject(undefined);\n this._suggestedQuality = new BehaviorSubject(undefined);\n this._playerVars = new BehaviorSubject(undefined);\n this._disableCookies = new BehaviorSubject(false);\n /** Outputs are direct proxies from the player itself. */\n this.ready = this._getLazyEmitter('onReady');\n this.stateChange = this._getLazyEmitter('onStateChange');\n this.error = this._getLazyEmitter('onError');\n this.apiChange = this._getLazyEmitter('onApiChange');\n this.playbackQualityChange = this._getLazyEmitter('onPlaybackQualityChange');\n this.playbackRateChange = this._getLazyEmitter('onPlaybackRateChange');\n this._isBrowser = isPlatformBrowser(platformId);\n }\n ngOnInit() {\n // Don't do anything if we're not in a browser environment.\n if (!this._isBrowser) {\n return;\n }\n let iframeApiAvailableObs = of(true);\n if (!window.YT || !window.YT.Player) {\n if (this.showBeforeIframeApiLoads && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error('Namespace YT not found, cannot construct embedded youtube player. ' +\n 'Please install the YouTube Player API Reference for iframe Embeds: ' +\n 'https://developers.google.com/youtube/iframe_api_reference');\n }\n const iframeApiAvailableSubject = new Subject();\n this._existingApiReadyCallback = window.onYouTubeIframeAPIReady;\n window.onYouTubeIframeAPIReady = () => {\n if (this._existingApiReadyCallback) {\n this._existingApiReadyCallback();\n }\n this._ngZone.run(() => iframeApiAvailableSubject.next(true));\n };\n iframeApiAvailableObs = iframeApiAvailableSubject.pipe(take(1), startWith(false));\n }\n const hostObservable = this._disableCookies.pipe(map(cookiesDisabled => (cookiesDisabled ? 'https://www.youtube-nocookie.com' : undefined)));\n // An observable of the currently loaded player.\n const playerObs = createPlayerObservable(this._youtubeContainer, this._videoId, hostObservable, iframeApiAvailableObs, this._width, this._height, this._playerVars, this._ngZone).pipe(tap(player => {\n // Emit this before the `waitUntilReady` call so that we can bind to\n // events that happen as the player is being initialized (e.g. `onReady`).\n this._playerChanges.next(player);\n }), waitUntilReady(player => {\n // Destroy the player if loading was aborted so that we don't end up leaking memory.\n if (!playerIsReady(player)) {\n player.destroy();\n }\n }), takeUntil(this._destroyed), publish());\n // Set up side effects to bind inputs to the player.\n playerObs.subscribe(player => {\n this._player = player;\n if (player && this._pendingPlayerState) {\n this._initializePlayer(player, this._pendingPlayerState);\n }\n this._pendingPlayerState = undefined;\n });\n bindSizeToPlayer(playerObs, this._width, this._height);\n bindSuggestedQualityToPlayer(playerObs, this._suggestedQuality);\n bindCueVideoCall(playerObs, this._videoId, this._startSeconds, this._endSeconds, this._suggestedQuality, this._destroyed);\n // After all of the subscriptions are set up, connect the observable.\n playerObs.connect();\n }\n ngAfterViewInit() {\n this._youtubeContainer.next(this.youtubeContainer.nativeElement);\n }\n ngOnDestroy() {\n if (this._player) {\n this._player.destroy();\n window.onYouTubeIframeAPIReady = this._existingApiReadyCallback;\n }\n this._playerChanges.complete();\n this._videoId.complete();\n this._height.complete();\n this._width.complete();\n this._startSeconds.complete();\n this._endSeconds.complete();\n this._suggestedQuality.complete();\n this._youtubeContainer.complete();\n this._playerVars.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#playVideo */\n playVideo() {\n if (this._player) {\n this._player.playVideo();\n }\n else {\n this._getPendingState().playbackState = YT.PlayerState.PLAYING;\n }\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#pauseVideo */\n pauseVideo() {\n if (this._player) {\n this._player.pauseVideo();\n }\n else {\n this._getPendingState().playbackState = YT.PlayerState.PAUSED;\n }\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#stopVideo */\n stopVideo() {\n if (this._player) {\n this._player.stopVideo();\n }\n else {\n // It seems like YouTube sets the player to CUED when it's stopped.\n this._getPendingState().playbackState = YT.PlayerState.CUED;\n }\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#seekTo */\n seekTo(seconds, allowSeekAhead) {\n if (this._player) {\n this._player.seekTo(seconds, allowSeekAhead);\n }\n else {\n this._getPendingState().seek = { seconds, allowSeekAhead };\n }\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#mute */\n mute() {\n if (this._player) {\n this._player.mute();\n }\n else {\n this._getPendingState().muted = true;\n }\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#unMute */\n unMute() {\n if (this._player) {\n this._player.unMute();\n }\n else {\n this._getPendingState().muted = false;\n }\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#isMuted */\n isMuted() {\n if (this._player) {\n return this._player.isMuted();\n }\n if (this._pendingPlayerState) {\n return !!this._pendingPlayerState.muted;\n }\n return false;\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#setVolume */\n setVolume(volume) {\n if (this._player) {\n this._player.setVolume(volume);\n }\n else {\n this._getPendingState().volume = volume;\n }\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#getVolume */\n getVolume() {\n if (this._player) {\n return this._player.getVolume();\n }\n if (this._pendingPlayerState && this._pendingPlayerState.volume != null) {\n return this._pendingPlayerState.volume;\n }\n return 0;\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate */\n setPlaybackRate(playbackRate) {\n if (this._player) {\n return this._player.setPlaybackRate(playbackRate);\n }\n else {\n this._getPendingState().playbackRate = playbackRate;\n }\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#getPlaybackRate */\n getPlaybackRate() {\n if (this._player) {\n return this._player.getPlaybackRate();\n }\n if (this._pendingPlayerState && this._pendingPlayerState.playbackRate != null) {\n return this._pendingPlayerState.playbackRate;\n }\n return 0;\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#getAvailablePlaybackRates */\n getAvailablePlaybackRates() {\n return this._player ? this._player.getAvailablePlaybackRates() : [];\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#getVideoLoadedFraction */\n getVideoLoadedFraction() {\n return this._player ? this._player.getVideoLoadedFraction() : 0;\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#getPlayerState */\n getPlayerState() {\n if (!this._isBrowser || !window.YT) {\n return undefined;\n }\n if (this._player) {\n return this._player.getPlayerState();\n }\n if (this._pendingPlayerState && this._pendingPlayerState.playbackState != null) {\n return this._pendingPlayerState.playbackState;\n }\n return YT.PlayerState.UNSTARTED;\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#getCurrentTime */\n getCurrentTime() {\n if (this._player) {\n return this._player.getCurrentTime();\n }\n if (this._pendingPlayerState && this._pendingPlayerState.seek) {\n return this._pendingPlayerState.seek.seconds;\n }\n return 0;\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#getPlaybackQuality */\n getPlaybackQuality() {\n return this._player ? this._player.getPlaybackQuality() : 'default';\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#getAvailableQualityLevels */\n getAvailableQualityLevels() {\n return this._player ? this._player.getAvailableQualityLevels() : [];\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#getDuration */\n getDuration() {\n return this._player ? this._player.getDuration() : 0;\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#getVideoUrl */\n getVideoUrl() {\n return this._player ? this._player.getVideoUrl() : '';\n }\n /** See https://developers.google.com/youtube/iframe_api_reference#getVideoEmbedCode */\n getVideoEmbedCode() {\n return this._player ? this._player.getVideoEmbedCode() : '';\n }\n /** Gets an object that should be used to store the temporary API state. */\n _getPendingState() {\n if (!this._pendingPlayerState) {\n this._pendingPlayerState = {};\n }\n return this._pendingPlayerState;\n }\n /** Initializes a player from a temporary state. */\n _initializePlayer(player, state) {\n const { playbackState, playbackRate, volume, muted, seek } = state;\n switch (playbackState) {\n case YT.PlayerState.PLAYING:\n player.playVideo();\n break;\n case YT.PlayerState.PAUSED:\n player.pauseVideo();\n break;\n case YT.PlayerState.CUED:\n player.stopVideo();\n break;\n }\n if (playbackRate != null) {\n player.setPlaybackRate(playbackRate);\n }\n if (volume != null) {\n player.setVolume(volume);\n }\n if (muted != null) {\n muted ? player.mute() : player.unMute();\n }\n if (seek != null) {\n player.seekTo(seek.seconds, seek.allowSeekAhead);\n }\n }\n /** Gets an observable that adds an event listener to the player when a user subscribes to it. */\n _getLazyEmitter(name) {\n // Start with the stream of players. This way the events will be transferred\n // over to the new player if it gets swapped out under-the-hood.\n return this._playerChanges.pipe(\n // Switch to the bound event. `switchMap` ensures that the old event is removed when the\n // player is changed. If there's no player, return an observable that never emits.\n switchMap(player => {\n return player\n ? fromEventPattern((listener) => {\n player.addEventListener(name, listener);\n }, (listener) => {\n // The API seems to throw when we try to unbind from a destroyed player and it doesn't\n // expose whether the player has been destroyed so we have to wrap it in a try/catch to\n // prevent the entire stream from erroring out.\n try {\n if (player.removeEventListener) {\n player.removeEventListener(name, listener);\n }\n }\n catch { }\n })\n : of();\n }), \n // By default we run all the API interactions outside the zone\n // so we have to bring the events back in manually when they emit.\n (source) => new Observable(observer => source.subscribe({\n next: value => this._ngZone.run(() => observer.next(value)),\n error: error => observer.error(error),\n complete: () => observer.complete(),\n })), \n // Ensures that everything is cleared out on destroy.\n takeUntil(this._destroyed));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: YouTubePlayer, deps: [{ token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: YouTubePlayer, selector: \"youtube-player\", inputs: { videoId: \"videoId\", height: \"height\", width: \"width\", startSeconds: \"startSeconds\", endSeconds: \"endSeconds\", suggestedQuality: \"suggestedQuality\", playerVars: \"playerVars\", disableCookies: \"disableCookies\", showBeforeIframeApiLoads: \"showBeforeIframeApiLoads\" }, outputs: { ready: \"ready\", stateChange: \"stateChange\", error: \"error\", apiChange: \"apiChange\", playbackQualityChange: \"playbackQualityChange\", playbackRateChange: \"playbackRateChange\" }, viewQueries: [{ propertyName: \"youtubeContainer\", first: true, predicate: [\"youtubeContainer\"], descendants: true }], ngImport: i0, template: '
', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: YouTubePlayer, decorators: [{\n type: Component,\n args: [{\n selector: 'youtube-player',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n // This div is *replaced* by the YouTube player embed.\n template: '
',\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { videoId: [{\n type: Input\n }], height: [{\n type: Input\n }], width: [{\n type: Input\n }], startSeconds: [{\n type: Input\n }], endSeconds: [{\n type: Input\n }], suggestedQuality: [{\n type: Input\n }], playerVars: [{\n type: Input\n }], disableCookies: [{\n type: Input\n }], showBeforeIframeApiLoads: [{\n type: Input\n }], ready: [{\n type: Output\n }], stateChange: [{\n type: Output\n }], error: [{\n type: Output\n }], apiChange: [{\n type: Output\n }], playbackQualityChange: [{\n type: Output\n }], playbackRateChange: [{\n type: Output\n }], youtubeContainer: [{\n type: ViewChild,\n args: ['youtubeContainer']\n }] } });\n/** Listens to changes to the given width and height and sets it on the player. */\nfunction bindSizeToPlayer(playerObs, widthObs, heightObs) {\n return combineLatest([playerObs, widthObs, heightObs]).subscribe(([player, width, height]) => player && player.setSize(width, height));\n}\n/** Listens to changes from the suggested quality and sets it on the given player. */\nfunction bindSuggestedQualityToPlayer(playerObs, suggestedQualityObs) {\n return combineLatest([playerObs, suggestedQualityObs]).subscribe(([player, suggestedQuality]) => player && suggestedQuality && player.setPlaybackQuality(suggestedQuality));\n}\n/**\n * Returns an observable that emits the loaded player once it's ready. Certain properties/methods\n * won't be available until the iframe finishes loading.\n * @param onAbort Callback function that will be invoked if the player loading was aborted before\n * it was able to complete. Can be used to clean up any loose references.\n */\nfunction waitUntilReady(onAbort) {\n return mergeMap(player => {\n if (!player) {\n return of(undefined);\n }\n if (playerIsReady(player)) {\n return of(player);\n }\n // Since removeEventListener is not on Player when it's initialized, we can't use fromEvent.\n // The player is not initialized fully until the ready is called.\n return new Observable(emitter => {\n let aborted = false;\n let resolved = false;\n const onReady = (event) => {\n resolved = true;\n if (!aborted) {\n event.target.removeEventListener('onReady', onReady);\n emitter.next(event.target);\n }\n };\n player.addEventListener('onReady', onReady);\n return () => {\n aborted = true;\n if (!resolved) {\n onAbort(player);\n }\n };\n }).pipe(take(1), startWith(undefined));\n });\n}\n/** Create an observable for the player based on the given options. */\nfunction createPlayerObservable(youtubeContainer, videoIdObs, hostObs, iframeApiAvailableObs, widthObs, heightObs, playerVarsObs, ngZone) {\n const playerOptions = combineLatest([videoIdObs, hostObs, playerVarsObs]).pipe(withLatestFrom(combineLatest([widthObs, heightObs])), map(([constructorOptions, sizeOptions]) => {\n const [videoId, host, playerVars] = constructorOptions;\n const [width, height] = sizeOptions;\n // If there's no video id or a list isn't supplied, bail out\n if (!videoId && !(playerVars?.list && playerVars?.listType)) {\n return undefined;\n }\n return { videoId, playerVars, width, height, host };\n }));\n return combineLatest([youtubeContainer, playerOptions, of(ngZone)]).pipe(skipUntilRememberLatest(iframeApiAvailableObs), scan(syncPlayerState, undefined), distinctUntilChanged());\n}\n/** Skips the given observable until the other observable emits true, then emit the latest. */\nfunction skipUntilRememberLatest(notifier) {\n return pipe(combineLatest$1(notifier), skipWhile(([_, doneSkipping]) => !doneSkipping), map(([value]) => value));\n}\n/** Destroy the player if there are no options, or create the player if there are options. */\nfunction syncPlayerState(player, [container, videoOptions, ngZone]) {\n if (player &&\n videoOptions &&\n (player.playerVars !== videoOptions.playerVars || player.host !== videoOptions.host)) {\n // The player needs to be recreated if the playerVars are different.\n player.destroy();\n }\n else if (!videoOptions) {\n if (player) {\n // Destroy the player if the videoId was removed.\n player.destroy();\n }\n return;\n }\n else if (player) {\n return player;\n }\n // Important! We need to create the Player object outside of the `NgZone`, because it kicks\n // off a 250ms setInterval which will continually trigger change detection if we don't.\n const newPlayer = ngZone.runOutsideAngular(() => new YT.Player(container, videoOptions));\n newPlayer.videoId = videoOptions.videoId;\n newPlayer.playerVars = videoOptions.playerVars;\n newPlayer.host = videoOptions.host;\n return newPlayer;\n}\n/**\n * Call cueVideoById if the videoId changes, or when start or end seconds change. cueVideoById will\n * change the loaded video id to the given videoId, and set the start and end times to the given\n * start/end seconds.\n */\nfunction bindCueVideoCall(playerObs, videoIdObs, startSecondsObs, endSecondsObs, suggestedQualityObs, destroyed) {\n const cueOptionsObs = combineLatest([startSecondsObs, endSecondsObs]).pipe(map(([startSeconds, endSeconds]) => ({ startSeconds, endSeconds })));\n // Only respond to changes in cue options if the player is not running.\n const filteredCueOptions = cueOptionsObs.pipe(filterOnOther(playerObs, player => !!player && !hasPlayerStarted(player)));\n // If the video id changed, there's no reason to run 'cue' unless the player\n // was initialized with a different video id.\n const changedVideoId = videoIdObs.pipe(filterOnOther(playerObs, (player, videoId) => !!player && player.videoId !== videoId));\n // If the player changed, there's no reason to run 'cue' unless there are cue options.\n const changedPlayer = playerObs.pipe(filterOnOther(combineLatest([videoIdObs, cueOptionsObs]), ([videoId, cueOptions], player) => !!player &&\n (videoId != player.videoId || !!cueOptions.startSeconds || !!cueOptions.endSeconds)));\n merge(changedPlayer, changedVideoId, filteredCueOptions)\n .pipe(withLatestFrom(combineLatest([playerObs, videoIdObs, cueOptionsObs, suggestedQualityObs])), map(([_, values]) => values), takeUntil(destroyed))\n .subscribe(([player, videoId, cueOptions, suggestedQuality]) => {\n if (!videoId || !player) {\n return;\n }\n player.videoId = videoId;\n player.cueVideoById({\n videoId,\n suggestedQuality,\n ...cueOptions,\n });\n });\n}\nfunction hasPlayerStarted(player) {\n const state = player.getPlayerState();\n return state !== YT.PlayerState.UNSTARTED && state !== YT.PlayerState.CUED;\n}\nfunction playerIsReady(player) {\n return 'getPlayerStatus' in player;\n}\n/** Combines the two observables temporarily for the filter function. */\nfunction filterOnOther(otherObs, filterFn) {\n return pipe(withLatestFrom(otherObs), filter(([value, other]) => filterFn(other, value)), map(([value]) => value));\n}\n\nconst COMPONENTS = [YouTubePlayer];\nclass YouTubePlayerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: YouTubePlayerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: YouTubePlayerModule, declarations: [YouTubePlayer], exports: [YouTubePlayer] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: YouTubePlayerModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: YouTubePlayerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: COMPONENTS,\n exports: COMPONENTS,\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { YouTubePlayer, YouTubePlayerModule };\n","import { isArray } from '../util/isArray';\nimport { CombineLatestOperator } from '../observable/combineLatest';\nimport { from } from '../observable/from';\nconst none = {};\nexport function combineLatest(...observables) {\n let project = null;\n if (typeof observables[observables.length - 1] === 'function') {\n project = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0].slice();\n }\n return (source) => source.lift.call(from([source, ...observables]), new CombineLatestOperator(project));\n}\n","import { Subject } from '../Subject';\nimport { multicast } from './multicast';\nexport function publish(selector) {\n return selector ?\n multicast(() => new Subject(), selector) :\n multicast(new Subject());\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n template: '',\n selector: 'app-video'\n})\nexport class VideoComponent implements OnInit {\n\n @Input() videoId: string;\n\n ngOnInit() {\n const tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n document.body.appendChild(tag);\n }\n}\n","
\n \n \n
\n {{item.Title}}\n
\n
\n
\n {{item.Children.length}}\n
\n \n \n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DocRepo } from '@shared/models/docRepo/list';\n\n@Component({\n selector: 'coach-doc-repo-item',\n templateUrl: './doc-repo-item.component.html',\n styleUrls: ['./doc-repo-item.component.scss']\n})\nexport class DocRepoItemComponent implements OnInit{\n\n @Input() public item: DocRepo;\n\n public iconType;\n\n constructor() {}\n\n ngOnInit(): void {\n if (this.item) {\n if (this.item.EntryType == 'Folder'){\n if (this.item?.Children) {\n this.iconType = 'folder';\n } else {\n this.iconType = 'folder-empty';\n }\n } else if (this.item.EntryType == 'Page') {\n this.iconType = 'book-open';\n } else {\n this.iconType = 'file';\n }\n }\n }\n\n}\n","
\n\n \n\n
\n
\n No Results\n
\n
\n
\n","import { Component, Input, Output, EventEmitter, SimpleChanges, OnChanges, OnDestroy, OnInit\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { DocRepo } from '@shared/models/docRepo/list';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'coach-doc-repo-directory',\n templateUrl: './doc-repo-directory.component.html',\n styleUrls: ['./doc-repo-directory.component.scss']\n})\nexport class DocRepoDirectoryComponent extends KillSubscriptions implements OnChanges, OnInit {\n\n @Input() public docRepoData: DocRepo[];\n @Input() public showNavBar: any;\n public isQueueDrilledIn = false;\n public fileParam: number;\n public folderParam: number;\n public fileClicked = false;\n public folder: DocRepo;\n public fileData: any = '';\n public error: Error;\n public viewerControl: any;\n\n @Output() public innerFileClickedEmitter: EventEmitter = new EventEmitter(true);\n @Output() public queueDrillInEmitter: EventEmitter = new EventEmitter(true);\n @Output() public selectedFolderEmitter: EventEmitter = new EventEmitter(true);\n\n private queryParamSubscription: Subscription;\n\n constructor(\n private route: ActivatedRoute,\n private fileDownloadService: FileDownloadService,\n private router: Router\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.queryParamSubscription = this.route.queryParams?.pipe(takeUntil(this.killTrigger))\n .subscribe(params => {\n const { folder, file } = params;\n this.folderParam = folder;\n this.fileParam = file;\n });\n }\n\n get selectedFolder(): DocRepo {\n return this.folder;\n }\n get selectedFolderName(): string {\n return this.folder ? this.folder.Title : null;\n }\n get selectedFoldersFiles(): DocRepo[] {\n return this.folder ? this.folder.Children : null;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes.docRepoData?.currentValue) {\n // order of both sorts matters here.\n this.sortAlphabetically();\n this.sortFoldersTop();\n }\n }\n\n private sortAlphabetically() {\n this.docRepoData.sort((a,b) => {\n if (a.Title > b.Title) {\n return 1;\n }\n if (a.Title < b.Title) {\n return -1;\n }\n return 0;\n });\n }\n\n private sortFoldersTop() {\n this.docRepoData.sort((a, b) => {\n if(a.EntryType === 'Folder' && b.EntryType !== 'Folder' ) {\n return -1;\n }\n if (a.EntryType !== 'Folder' && b.EntryType === 'Folder') {\n return 1;\n }\n return 0;\n });\n }\n\n\n public toggleQueueDrillIn(item: DocRepo): void {\n if (!item) {\n this.fileClicked = false;\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {}\n });\n } else {\n if (item.EntryType == 'Folder') {\n this.folder = item;\n this.fileDownloadService.updateSelectedFolder(item); // maybe remove\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: { folder: item.EntryId }\n });\n this.selectedFolderEmitter.emit(item);\n } else {\n this.fileSelected(item);\n }\n }\n }\n\n public fileSelected(file: DocRepo): void {\n this.innerFileClickedEmitter.emit(file);\n this.fileData = file;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DocRepo } from '@shared/models/docRepo/list';\n\n@Component({\n selector: 'coach-doc-repo-folder-nav',\n templateUrl: './doc-repo-folder-nav.component.html',\n styleUrls: ['./doc-repo-folder-nav.component.scss']\n})\nexport class DocRepoFolderNavComponent {\n\n @Input() public folder: DocRepo;\n @Output() public drillOutClickEmitter: EventEmitter = new EventEmitter();\n\n constructor() {}\n\n public drillOutClicked(): void {\n this.drillOutClickEmitter.emit(this.folder);\n }\n}\n","
\n \n
\n
\n {{folder?.Title}}\n
\n
\n
\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Input, Output, HostListener, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nclass FileLikeObject {\n constructor(fileOrInput) {\n this.rawFile = fileOrInput;\n const fakePathOrObject = fileOrInput instanceof HTMLInputElement ? fileOrInput.value : fileOrInput;\n const postfix = typeof fakePathOrObject === 'string' ? 'FakePath' : 'Object';\n const method = `_createFrom${postfix}`;\n this[method](fakePathOrObject);\n }\n _createFromFakePath(path) {\n this.lastModifiedDate = void 0;\n this.size = void 0;\n this.type = `like/${path.slice(path.lastIndexOf('.') + 1).toLowerCase()}`;\n this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\\\') + 2);\n }\n _createFromObject(object) {\n this.size = object.size;\n this.type = object.type;\n this.name = object.name;\n }\n}\n\nclass FileItem {\n constructor(uploader, some, options) {\n this.url = '/';\n this.headers = [];\n this.withCredentials = true;\n this.formData = [];\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = false;\n this.progress = 0;\n this.uploader = uploader;\n this.some = some;\n this.options = options;\n this.file = new FileLikeObject(some);\n this._file = some;\n if (uploader.options) {\n this.method = uploader.options.method || 'POST';\n this.alias = uploader.options.itemAlias || 'file';\n }\n this.url = uploader.options.url;\n }\n upload() {\n try {\n this.uploader.uploadItem(this);\n }\n catch (e) {\n this.uploader._onCompleteItem(this, '', 0, {});\n this.uploader._onErrorItem(this, '', 0, {});\n }\n }\n cancel() {\n this.uploader.cancelItem(this);\n }\n remove() {\n this.uploader.removeFromQueue(this);\n }\n onBeforeUpload() {\n return void 0;\n }\n onBuildForm(form) {\n return { form };\n }\n onProgress(progress) {\n return { progress };\n }\n onSuccess(response, status, headers) {\n return { response, status, headers };\n }\n onError(response, status, headers) {\n return { response, status, headers };\n }\n onCancel(response, status, headers) {\n return { response, status, headers };\n }\n onComplete(response, status, headers) {\n return { response, status, headers };\n }\n _onBeforeUpload() {\n this.isReady = true;\n this.isUploading = true;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = false;\n this.progress = 0;\n this.onBeforeUpload();\n }\n _onBuildForm(form) {\n this.onBuildForm(form);\n }\n _onProgress(progress) {\n this.progress = progress;\n this.onProgress(progress);\n }\n _onSuccess(response, status, headers) {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = true;\n this.isSuccess = true;\n this.isCancel = false;\n this.isError = false;\n this.progress = 100;\n this.index = undefined;\n this.onSuccess(response, status, headers);\n }\n _onError(response, status, headers) {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = true;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = true;\n this.progress = 0;\n this.index = undefined;\n this.onError(response, status, headers);\n }\n _onCancel(response, status, headers) {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = true;\n this.isError = false;\n this.progress = 0;\n this.index = undefined;\n this.onCancel(response, status, headers);\n }\n _onComplete(response, status, headers) {\n this.onComplete(response, status, headers);\n if (this.uploader.options.removeAfterUpload) {\n this.remove();\n }\n }\n _prepareToUploading() {\n this.index = this.index || ++this.uploader._nextIndex;\n this.isReady = true;\n }\n}\n\nclass FileType {\n /* MS office */\n // tslint:disable-next-line:variable-name\n static { this.mime_doc = [\n 'application/msword',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n 'application/vnd.ms-word.document.macroEnabled.12',\n 'application/vnd.ms-word.template.macroEnabled.12'\n ]; }\n // tslint:disable-next-line:variable-name\n static { this.mime_xsl = [\n 'application/vnd.ms-excel',\n 'application/vnd.ms-excel',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n 'application/vnd.ms-excel.sheet.macroEnabled.12',\n 'application/vnd.ms-excel.template.macroEnabled.12',\n 'application/vnd.ms-excel.addin.macroEnabled.12',\n 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'\n ]; }\n // tslint:disable-next-line:variable-name\n static { this.mime_ppt = [\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.openxmlformats-officedocument.presentationml.template',\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n 'application/vnd.ms-powerpoint.addin.macroEnabled.12',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'\n ]; }\n /* PSD */\n // tslint:disable-next-line:variable-name\n static { this.mime_psd = [\n 'image/photoshop',\n 'image/x-photoshop',\n 'image/psd',\n 'application/photoshop',\n 'application/psd',\n 'zz-application/zz-winassoc-psd'\n ]; }\n /* Compressed files */\n // tslint:disable-next-line:variable-name\n static { this.mime_compress = [\n 'application/x-gtar',\n 'application/x-gcompress',\n 'application/compress',\n 'application/x-tar',\n 'application/x-rar-compressed',\n 'application/octet-stream',\n 'application/x-zip-compressed',\n 'application/zip-compressed',\n 'application/x-7z-compressed',\n 'application/gzip',\n 'application/x-bzip2'\n ]; }\n static getMimeClass(file) {\n let mimeClass = 'application';\n if (file?.type && this.mime_psd.indexOf(file.type) !== -1) {\n mimeClass = 'image';\n }\n else if (file?.type?.match('image.*')) {\n mimeClass = 'image';\n }\n else if (file?.type?.match('video.*')) {\n mimeClass = 'video';\n }\n else if (file?.type?.match('audio.*')) {\n mimeClass = 'audio';\n }\n else if (file?.type === 'application/pdf') {\n mimeClass = 'pdf';\n }\n else if (file?.type && this.mime_compress.indexOf(file.type) !== -1) {\n mimeClass = 'compress';\n }\n else if (file?.type && this.mime_doc.indexOf(file.type) !== -1) {\n mimeClass = 'doc';\n }\n else if (file?.type && this.mime_xsl.indexOf(file.type) !== -1) {\n mimeClass = 'xls';\n }\n else if (file?.type && this.mime_ppt.indexOf(file.type) !== -1) {\n mimeClass = 'ppt';\n }\n if (mimeClass === 'application' && file?.name) {\n mimeClass = this.fileTypeDetection(file.name);\n }\n return mimeClass;\n }\n static fileTypeDetection(inputFilename) {\n const types = {\n jpg: 'image',\n jpeg: 'image',\n tif: 'image',\n psd: 'image',\n bmp: 'image',\n png: 'image',\n nef: 'image',\n tiff: 'image',\n cr2: 'image',\n dwg: 'image',\n cdr: 'image',\n ai: 'image',\n indd: 'image',\n pin: 'image',\n cdp: 'image',\n skp: 'image',\n stp: 'image',\n '3dm': 'image',\n mp3: 'audio',\n wav: 'audio',\n wma: 'audio',\n mod: 'audio',\n m4a: 'audio',\n compress: 'compress',\n zip: 'compress',\n rar: 'compress',\n '7z': 'compress',\n lz: 'compress',\n z01: 'compress',\n bz2: 'compress',\n gz: 'compress',\n pdf: 'pdf',\n xls: 'xls',\n xlsx: 'xls',\n ods: 'xls',\n mp4: 'video',\n avi: 'video',\n wmv: 'video',\n mpg: 'video',\n mts: 'video',\n flv: 'video',\n '3gp': 'video',\n vob: 'video',\n m4v: 'video',\n mpeg: 'video',\n m2ts: 'video',\n mov: 'video',\n doc: 'doc',\n docx: 'doc',\n eps: 'doc',\n txt: 'doc',\n odt: 'doc',\n rtf: 'doc',\n ppt: 'ppt',\n pptx: 'ppt',\n pps: 'ppt',\n ppsx: 'ppt',\n odp: 'ppt'\n };\n const chunks = inputFilename.split('.');\n if (chunks.length < 2) {\n return 'application';\n }\n const extension = chunks[chunks.length - 1].toLowerCase();\n if (types[extension] === undefined) {\n return 'application';\n }\n else {\n return types[extension];\n }\n }\n}\n\nfunction isFile(value) {\n return (File && value instanceof File);\n}\nclass FileUploader {\n constructor(options) {\n this.isUploading = false;\n this.queue = [];\n this.progress = 0;\n this._nextIndex = 0;\n this.options = {\n autoUpload: false,\n isHTML5: true,\n filters: [],\n removeAfterUpload: false,\n disableMultipart: false,\n formatDataFunction: (item) => item._file,\n formatDataFunctionIsAsync: false,\n url: ''\n };\n this.setOptions(options);\n this.response = new EventEmitter();\n }\n setOptions(options) {\n this.options = Object.assign(this.options, options);\n this.authToken = this.options.authToken;\n this.authTokenHeader = this.options.authTokenHeader || 'Authorization';\n this.autoUpload = this.options.autoUpload;\n this.options.filters?.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });\n if (this.options.maxFileSize) {\n this.options.filters?.unshift({ name: 'fileSize', fn: this._fileSizeFilter });\n }\n if (this.options.allowedFileType) {\n this.options.filters?.unshift({ name: 'fileType', fn: this._fileTypeFilter });\n }\n if (this.options.allowedMimeType) {\n this.options.filters?.unshift({ name: 'mimeType', fn: this._mimeTypeFilter });\n }\n for (let i = 0; i < this.queue.length; i++) {\n this.queue[i].url = this.options.url;\n }\n }\n addToQueue(files, _options, filters) {\n let options = _options;\n const list = [];\n for (const file of files) {\n list.push(file);\n }\n const arrayOfFilters = this._getFilters(filters);\n const count = this.queue.length;\n const addedFileItems = [];\n list.map((some) => {\n if (!options) {\n options = this.options;\n }\n const temp = new FileLikeObject(some);\n if (this._isValidFile(temp, arrayOfFilters, options)) {\n const fileItem = new FileItem(this, some, options);\n addedFileItems.push(fileItem);\n this.queue.push(fileItem);\n this._onAfterAddingFile(fileItem);\n }\n else {\n if (typeof this._failFilterIndex === 'number' && this._failFilterIndex >= 0) {\n const filter = arrayOfFilters[this._failFilterIndex];\n this._onWhenAddingFileFailed(temp, filter, options);\n }\n }\n });\n if (this.queue.length !== count) {\n this._onAfterAddingAll(addedFileItems);\n this.progress = this._getTotalProgress();\n }\n this._render();\n if (this.options.autoUpload) {\n this.uploadAll();\n }\n }\n removeFromQueue(value) {\n const index = this.getIndexOfItem(value);\n const item = this.queue[index];\n if (item.isUploading) {\n item.cancel();\n }\n this.queue.splice(index, 1);\n this.progress = this._getTotalProgress();\n }\n clearQueue() {\n while (this.queue.length) {\n this.queue[0].remove();\n }\n this.progress = 0;\n }\n uploadItem(value) {\n const index = this.getIndexOfItem(value);\n const item = this.queue[index];\n const transport = this.options.isHTML5 ? '_xhrTransport' : '_iframeTransport';\n item._prepareToUploading();\n if (this.isUploading) {\n return;\n }\n this.isUploading = true;\n this[transport](item);\n }\n cancelItem(value) {\n const index = this.getIndexOfItem(value);\n const item = this.queue[index];\n const prop = this.options.isHTML5 ? item._xhr : item._form;\n if (item && item.isUploading) {\n prop.abort();\n }\n }\n uploadAll() {\n const items = this.getNotUploadedItems().filter((item) => !item.isUploading);\n if (!items.length) {\n return;\n }\n items.map((item) => item._prepareToUploading());\n items[0].upload();\n }\n cancelAll() {\n const items = this.getNotUploadedItems();\n items.map((item) => item.cancel());\n }\n isFile(value) {\n return isFile(value);\n }\n isFileLikeObject(value) {\n return value instanceof FileLikeObject;\n }\n getIndexOfItem(value) {\n return typeof value === 'number' ? value : this.queue.indexOf(value);\n }\n getNotUploadedItems() {\n return this.queue.filter((item) => !item.isUploaded);\n }\n getReadyItems() {\n return this.queue\n .filter((item) => (item.isReady && !item.isUploading))\n .sort((item1, item2) => item1.index - item2.index);\n }\n onAfterAddingAll(fileItems) {\n return { fileItems };\n }\n onBuildItemForm(fileItem, form) {\n return { fileItem, form };\n }\n onAfterAddingFile(fileItem) {\n return { fileItem };\n }\n onWhenAddingFileFailed(item, filter, options) {\n return { item, filter, options };\n }\n onBeforeUploadItem(fileItem) {\n return { fileItem };\n }\n onProgressItem(fileItem, progress) {\n return { fileItem, progress };\n }\n onProgressAll(progress) {\n return { progress };\n }\n onSuccessItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n onErrorItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n onCancelItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n onCompleteItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n onCompleteAll() {\n return void 0;\n }\n _mimeTypeFilter(item) {\n return !(item?.type && this.options.allowedMimeType && this.options.allowedMimeType?.indexOf(item.type) === -1);\n }\n _fileSizeFilter(item) {\n return !(this.options.maxFileSize && item.size > this.options.maxFileSize);\n }\n _fileTypeFilter(item) {\n return !(this.options.allowedFileType &&\n this.options.allowedFileType.indexOf(FileType.getMimeClass(item)) === -1);\n }\n _onErrorItem(item, response, status, headers) {\n item._onError(response, status, headers);\n this.onErrorItem(item, response, status, headers);\n }\n _onCompleteItem(item, response, status, headers) {\n item._onComplete(response, status, headers);\n this.onCompleteItem(item, response, status, headers);\n const nextItem = this.getReadyItems()[0];\n this.isUploading = false;\n if (nextItem) {\n nextItem.upload();\n return;\n }\n this.onCompleteAll();\n this.progress = this._getTotalProgress();\n this._render();\n }\n _headersGetter(parsedHeaders) {\n return (name) => {\n if (name) {\n return parsedHeaders[name.toLowerCase()] || undefined;\n }\n return parsedHeaders;\n };\n }\n _xhrTransport(item) {\n // tslint:disable-next-line:no-this-assignment\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const xhr = item._xhr = new XMLHttpRequest();\n let sendable;\n this._onBeforeUploadItem(item);\n if (typeof item._file.size !== 'number') {\n throw new TypeError('The file specified is no longer valid');\n }\n if (!this.options.disableMultipart) {\n sendable = new FormData();\n this._onBuildItemForm(item, sendable);\n const appendFile = () => sendable.append(item.alias, item._file, item.file.name);\n if (!this.options.parametersBeforeFiles) {\n appendFile();\n }\n // For AWS, Additional Parameters must come BEFORE Files\n if (this.options.additionalParameter !== undefined) {\n Object.keys(this.options.additionalParameter).forEach((key) => {\n let paramVal = this.options.additionalParameter?.[key];\n // Allow an additional parameter to include the filename\n if (typeof paramVal === 'string' && paramVal.indexOf('{{file_name}}') >= 0 && item.file?.name) {\n paramVal = paramVal.replace('{{file_name}}', item.file.name);\n }\n sendable.append(key, paramVal);\n });\n }\n if (appendFile && this.options.parametersBeforeFiles) {\n appendFile();\n }\n }\n else {\n if (this.options.formatDataFunction) {\n sendable = this.options.formatDataFunction(item);\n }\n }\n xhr.upload.onprogress = (event) => {\n const progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);\n this._onProgressItem(item, progress);\n };\n xhr.onload = () => {\n const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n const response = this._transformResponse(xhr.response, headers);\n const gist = this._isSuccessCode(xhr.status) ? 'Success' : 'Error';\n const method = `_on${gist}Item`;\n this[method](item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n xhr.onerror = () => {\n const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n const response = this._transformResponse(xhr.response, headers);\n this._onErrorItem(item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n xhr.onabort = () => {\n const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n const response = this._transformResponse(xhr.response, headers);\n this._onCancelItem(item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n if (item.method && item.url) {\n xhr.open(item.method, item.url, true);\n }\n xhr.withCredentials = item.withCredentials;\n if (this.options.headers) {\n for (const header of this.options.headers) {\n xhr.setRequestHeader(header.name, header.value);\n }\n }\n if (item.headers.length) {\n for (const header of item.headers) {\n xhr.setRequestHeader(header.name, header.value);\n }\n }\n if (this.authToken && this.authTokenHeader) {\n xhr.setRequestHeader(this.authTokenHeader, this.authToken);\n }\n xhr.onreadystatechange = function () {\n if (xhr.readyState == XMLHttpRequest.DONE) {\n that.response.emit(xhr.responseText);\n }\n };\n if (this.options.formatDataFunctionIsAsync) {\n sendable.then((result) => xhr.send(JSON.stringify(result)));\n }\n else {\n xhr.send(sendable);\n }\n this._render();\n }\n _getTotalProgress(value = 0) {\n if (this.options.removeAfterUpload) {\n return value;\n }\n const notUploaded = this.getNotUploadedItems().length;\n const uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;\n const ratio = 100 / this.queue.length;\n const current = value * ratio / 100;\n return Math.round(uploaded * ratio + current);\n }\n _getFilters(filters) {\n if (!filters) {\n return this.options?.filters || [];\n }\n if (Array.isArray(filters)) {\n return filters;\n }\n if (typeof filters === 'string') {\n const names = filters.match(/[^\\s,]+/g);\n return this.options?.filters || []\n .filter((filter) => names?.indexOf(filter.name) !== -1);\n }\n return this.options?.filters || [];\n }\n _render() {\n return void 0;\n }\n _queueLimitFilter() {\n return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;\n }\n _isValidFile(file, filters, options) {\n this._failFilterIndex = -1;\n return !filters.length ? true : filters.every((filter) => {\n if (typeof this._failFilterIndex === 'number') {\n this._failFilterIndex++;\n }\n return filter.fn.call(this, file, options);\n });\n }\n _isSuccessCode(status) {\n return (status >= 200 && status < 300) || status === 304;\n }\n _transformResponse(response, headers) {\n return response;\n }\n _parseHeaders(headers) {\n const parsed = {};\n let key;\n let val;\n let i;\n if (!headers) {\n return parsed;\n }\n headers.split('\\n').map((line) => {\n i = line.indexOf(':');\n key = line.slice(0, i).trim().toLowerCase();\n val = line.slice(i + 1).trim();\n if (key) {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n return parsed;\n }\n _onWhenAddingFileFailed(item, filter, options) {\n this.onWhenAddingFileFailed(item, filter, options);\n }\n _onAfterAddingFile(item) {\n this.onAfterAddingFile(item);\n }\n _onAfterAddingAll(items) {\n this.onAfterAddingAll(items);\n }\n _onBeforeUploadItem(item) {\n item._onBeforeUpload();\n this.onBeforeUploadItem(item);\n }\n _onBuildItemForm(item, form) {\n item._onBuildForm(form);\n this.onBuildItemForm(item, form);\n }\n _onProgressItem(item, progress) {\n const total = this._getTotalProgress(progress);\n this.progress = total;\n item._onProgress(progress);\n this.onProgressItem(item, progress);\n this.onProgressAll(total);\n this._render();\n }\n _onSuccessItem(item, response, status, headers) {\n item._onSuccess(response, status, headers);\n this.onSuccessItem(item, response, status, headers);\n }\n _onCancelItem(item, response, status, headers) {\n item._onCancel(response, status, headers);\n this.onCancelItem(item, response, status, headers);\n }\n}\n\nclass FileDropDirective {\n constructor(element) {\n this.fileOver = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onFileDrop = new EventEmitter();\n this.element = element;\n }\n getOptions() {\n return this.uploader?.options;\n }\n getFilters() {\n return '';\n }\n onDrop(event) {\n const transfer = this._getTransfer(event);\n if (!transfer) {\n return;\n }\n const options = this.getOptions();\n const filters = this.getFilters();\n this._preventAndStop(event);\n if (options) {\n this.uploader?.addToQueue(transfer.files, options, filters);\n }\n this.fileOver.emit(false);\n this.onFileDrop.emit(transfer.files);\n }\n onDragOver(event) {\n const transfer = this._getTransfer(event);\n if (!this._haveFiles(transfer.types)) {\n return;\n }\n transfer.dropEffect = 'copy';\n this._preventAndStop(event);\n this.fileOver.emit(true);\n }\n onDragLeave(event) {\n if (this.element) {\n if (event.currentTarget === this.element[0]) {\n return;\n }\n }\n this._preventAndStop(event);\n this.fileOver.emit(false);\n }\n _getTransfer(event) {\n return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;\n }\n _preventAndStop(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n _haveFiles(types) {\n if (!types) {\n return false;\n }\n if (types.indexOf) {\n return types.indexOf('Files') !== -1;\n }\n else if (types.contains) {\n return types.contains('Files');\n }\n else {\n return false;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.5\", ngImport: i0, type: FileDropDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.5\", type: FileDropDirective, selector: \"[ng2FileDrop]\", inputs: { uploader: \"uploader\" }, outputs: { fileOver: \"fileOver\", onFileDrop: \"onFileDrop\" }, host: { listeners: { \"drop\": \"onDrop($event)\", \"dragover\": \"onDragOver($event)\", \"dragleave\": \"onDragLeave($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.5\", ngImport: i0, type: FileDropDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ng2FileDrop]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { uploader: [{\n type: Input\n }], fileOver: [{\n type: Output\n }], onFileDrop: [{\n type: Output\n }], onDrop: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }], onDragOver: [{\n type: HostListener,\n args: ['dragover', ['$event']]\n }], onDragLeave: [{\n type: HostListener,\n args: ['dragleave', ['$event']]\n }] } });\n\nclass FileSelectDirective {\n constructor(element) {\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onFileSelected = new EventEmitter();\n this.element = element;\n }\n getOptions() {\n return this.uploader?.options;\n }\n getFilters() {\n return '';\n }\n isEmptyAfterSelection() {\n return !!this.element.nativeElement.attributes.multiple;\n }\n onChange() {\n const files = this.element.nativeElement.files;\n const options = this.getOptions();\n const filters = this.getFilters();\n this.uploader?.addToQueue(files, options, filters);\n this.onFileSelected.emit(files);\n if (this.isEmptyAfterSelection()) {\n this.element.nativeElement.value = '';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.5\", ngImport: i0, type: FileSelectDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.5\", type: FileSelectDirective, selector: \"[ng2FileSelect]\", inputs: { uploader: \"uploader\" }, outputs: { onFileSelected: \"onFileSelected\" }, host: { listeners: { \"change\": \"onChange()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.5\", ngImport: i0, type: FileSelectDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ng2FileSelect]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { uploader: [{\n type: Input\n }], onFileSelected: [{\n type: Output\n }], onChange: [{\n type: HostListener,\n args: ['change']\n }] } });\n\nclass FileUploadModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.5\", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.5\", ngImport: i0, type: FileUploadModule, declarations: [FileDropDirective, FileSelectDirective], imports: [CommonModule], exports: [FileDropDirective, FileSelectDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.5\", ngImport: i0, type: FileUploadModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.5\", ngImport: i0, type: FileUploadModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [FileDropDirective, FileSelectDirective],\n exports: [FileDropDirective, FileSelectDirective]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FileDropDirective, FileItem, FileLikeObject, FileSelectDirective, FileUploadModule, FileUploader };\n","\n
Upload Files
\n
\n \n
\n
Drag/Drop files here
\n
\n or\n
\n \n
\n
\n
\n\n\n
\n
\n
\n
\n
Upload to...
\n
\n {{uploadDestination ? uploadDestination.Title : 'Select a folder'}}\n
\n
\n \n
\n
\n
\n
\n
\n
{{item.Title}}
\n
\n
\n ({{item.Children.length}})\n
\n
\n
\n
\n
\n
\n\n \n
\n
\n
\n
{{ item?.file?.name }}
\n
{{ item?.file?.size/1024/1024 | number:'.2' }} MB
\n
\n
\n
\n \n \n \n
\n
\n
\n\n 1 \">\n
\n
\n
File
\n
Contains PHI
\n
\n
\n
\n
\n
\n \n
\n {{ item?.file?.name }}\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n\n
\n \n \n
\n
\n
\n","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy } from '@angular/core';\nimport { DocRepo } from '@shared/models/docRepo/list';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { FileItem, FileUploader, ParsedResponseHeaders } from 'ng2-file-upload';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subscription } from 'rxjs';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'coach-doc-upload',\n templateUrl: './doc-upload.component.html',\n styleUrls: ['./doc-upload.component.scss'],\n})\nexport class DocUploadComponent implements OnInit, OnDestroy {\n // Document Upload\n URL = `${environment.coachApiUrl}/api/docRepo/uploadFile`;\n public uploader: FileUploader;\n hasBaseDropZoneOver: boolean;\n response: string;\n\n @Input() docRepoData: DocRepo[];\n public uploadDestination: DocRepo;\n public uploadDestinations: DocRepo[];\n public uploadContainsPHI: boolean;\n private currentUserFullName: string;\n private currentTier: IHierarchyTier;\n private tierServiceSubscription: Subscription;\n private authServiceSubscription: Subscription;\n @Output() updateFileTrigger: EventEmitter = new EventEmitter();\n\n constructor(\n private authService: AuthService,\n private tierService: HierarchyTierService,\n private fileDownloadService: FileDownloadService,\n private toast: ToastrService,\n ) {\n this.uploader = new FileUploader({\n url: this.URL,\n itemAlias: 'file',\n headers: [\n {\n name: 'Authorization',\n value: `Bearer ${this.authService.getToken()}`,\n },\n ],\n allowedMimeType: ['application/vnd.ms-powerpoint','application/vnd.rar', 'application/zip', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'image/jpeg', 'application/pdf', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'image/png', 'application/vnd.ms-excel', 'ppt', 'text/csv'],\n });\n\n this.tierServiceSubscription = tierService.currentTier$.subscribe((tier) => {\n this.currentTier = tier;\n });\n\n this.authServiceSubscription = this.authService.userInfo$.subscribe((data) => {\n this.currentUserFullName = data.name;\n });\n\n this.hasBaseDropZoneOver = false;\n this.response = '';\n this.uploader.response.subscribe((res) => (this.response = res));\n }\n\n public cancelUpload(): void {\n this.uploader.clearQueue();\n this.fileDownloadService.updateSelectedFolder(null);\n }\n\n public fileOverBase(e: any): void {\n console.log('file is over base');\n this.hasBaseDropZoneOver = e;\n }\n\n public onChange(isChecked: boolean): void {\n this.uploadContainsPHI = isChecked;\n if (isChecked) {\n console.log('uploading PHI data to folder');\n this.uploadDestination = this.uploadDestinations[1];\n } else {\n this.uploadDestination = this.uploadDestinations[0];\n }\n }\n\n ngOnInit(): void {\n this.uploader.onAfterAddingFile = (file) => {\n file.withCredentials = false;\n this.uploadDestinations = this.fileDownloadService.uploadFolders;\n this.uploadDestination = this.uploadDestinations[0];\n };\n\n this.uploader.onBuildItemForm = (fileItem: any, form: FormData) => {\n const collectionID = this.uploadDestination.EntryId.toString();\n form.append('collectionID', collectionID);\n\n const folderPath = 'Practice Improvement/' + this.uploadDestination.Title;\n form.append('folderPath', folderPath);\n if (this.currentTier.selectedItem.tier ==1){\n form.append('tierNode', this.currentTier.selectedItem.tier1_ID);\n }\n else {\n form.append('tierNode', this.currentTier.selectedItem.tier2_ID);\n }\n\n\n let phi = 'false';\n if (this.uploadContainsPHI) {\n phi = this.uploadContainsPHI.toString();\n }\n form.append('phi', phi);\n\n form.append('author', this.currentUserFullName);\n\n return { fileItem, form };\n };\n\n this.uploader.onCompleteItem = (\n item: FileItem,\n response: string,\n status: number,\n headers: ParsedResponseHeaders,\n ) => {\n if (status === 200 || status === 204) {\n this.toast.success('File uploaded successfully!');\n } else {\n this.toast.error('File upload failed.');\n }\n };\n\n this.uploader.onCompleteAll = () => {\n this.uploader.clearQueue();\n this.updateFileTrigger.emit(null);\n };\n }\n\n ngOnDestroy(): void {\n this.authServiceSubscription.unsubscribe();\n this.tierServiceSubscription.unsubscribe();\n }\n\n private getFolderPathFromIDs(\n docRepoData: DocRepo[],\n folderID: string\n ): string {\n for (const entry of docRepoData) {\n if (folderID === entry.EntryId.toString()) {\n return entry.Title;\n }\n }\n console.log('Could not build Path from Ids');\n throw new Error('Could not build Path from Ids');\n }\n}\n","
\n
\n

Error Loading Viewer Prerequisites

\n

\n There was a problem loading the required JavaScript and CSS files which the viewer depends on:\n

\n
\n    {{prerequisiteError.message}}\n  
\n

Make sure that:

\n
    \n
  • You have added the static viewer-assetsdirectory to your web application.
  • \n
  • You have configured a static route in your web application to serve the viewer-assets.
  • \n
  • You have configured the VIEWER_ASSETS_BASE_ROUTE in prizmdoc-viewer-wrapper.component.ts to use the correct base route to the static viewer-assets.
  • \n
\n
\n","import {\n Component,\n OnInit,\n OnChanges,\n Renderer2,\n Inject,\n ViewChild,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { environment } from 'src/environments/environment';\nimport { ActionId } from '@shared/models/audit-constants';\nimport { AuditService } from '@shared/services/audit-service/audit.service';\nimport { ImproveFeatureNamesToAuditComponentId } from '@shared/models/module-constants';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\n\nconst VIEWER_ASSETS_BASE_ROUTE = '/assets/viewer-assets';\nconst PAS_PROXY_BASE_ROUTE = environment.prizmApiUrl;\ndeclare let window: any;\n\n@Component({\n selector: 'coach-prizmdoc-viewer-wrapper',\n templateUrl: './prizmdoc-viewer-wrapper.component.html',\n})\nexport class PrizmDocViewerWrapperComponent implements OnInit, OnChanges {\n constructor(\n private renderer2: Renderer2,\n private auditService: AuditService,\n @Inject(DOCUMENT) private _document\n ) {}\n private static prerequisites = {};\n\n // This is the one required input. Once it is set to an actual value, the\n // viewer will be instantiated with this viewingSessionId.\n @Input()\n viewingSessionId: string;\n\n @Input()\n width = '100%';\n\n @Input()\n height = '100%';\n\n @Input()\n tier: IHierarchyTier;\n\n @Input()\n entryId: string;\n\n @Input()\n tabName: string;\n\n @Output()\n viewerControl = new EventEmitter();\n\n prerequisiteError: Error;\n\n @ViewChild('prizmdocViewerContainer')\n private container: ElementRef;\n\n private viewerCreated: boolean;\n\n async ngOnInit(): Promise {\n await this.ensurePrerequisites();\n }\n\n ngOnChanges(): void {\n // If the viewer has not been created and we do have a viewingSessionId, create the viewer.\n if (!this.viewerCreated && this.viewingSessionId) {\n this.createViewer();\n }\n }\n\n // Ensures the viewer prerequisites have been added to the HTML head and have loaded.\n // This only happens once, the first time a viewer is instantiated.\n private async ensurePrerequisites(): Promise {\n try {\n // These resources can be safely loaded in parallel.\n await Promise.all([\n this.ensureScriptHasLoaded(\n `${VIEWER_ASSETS_BASE_ROUTE}/js/viewercontrol.js`\n ),\n this.ensureScriptHasLoaded(\n `${VIEWER_ASSETS_BASE_ROUTE}/js/viewerCustomizations.js`\n ),\n this.ensureScriptHasLoaded(\n `${VIEWER_ASSETS_BASE_ROUTE}/js/jquery-3.4.1.min.js`\n ),\n this.ensureScriptHasLoaded(\n `${VIEWER_ASSETS_BASE_ROUTE}/js/underscore.min.js`\n ),\n this.ensureCssHasLoaded(`${VIEWER_ASSETS_BASE_ROUTE}/css/viewer.css`),\n this.ensureCssHasLoaded(\n `${VIEWER_ASSETS_BASE_ROUTE}/css/normalize.min.css`\n ),\n ]);\n // These resources must be loaded last, and in this order.\n await this.ensureScriptHasLoaded(\n `${VIEWER_ASSETS_BASE_ROUTE}/js/jquery.hotkeys.min.js`\n );\n await this.ensureScriptHasLoaded(\n `${VIEWER_ASSETS_BASE_ROUTE}/js/viewer.js`\n );\n } catch (err) {\n this.prerequisiteError = err;\n }\n }\n\n private async createViewer(): Promise {\n await this.ensurePrerequisites();\n\n // window.PCCViewer.Ajax.setHeaders({\n // 'acs-Accusoft-key': '@WkTmVV3:u}t=*L#}6EBCFe!ehT.&kWH=#z@'\n // });\n\n // This is where the non-Angular viewer is actually initialized, and where\n // you can customize the viewer construction options. See\n // https://help.accusoft.com/PrizmDoc/latest/HTML/external-jQuery.fn.html#~Options\n const container = window.$(this.container.nativeElement).pccViewer({\n documentID: this.viewingSessionId,\n imageHandlerUrl: PAS_PROXY_BASE_ROUTE, // Base path the viewer should use to make requests to PAS (PrizmDoc Application Services).\n viewerAssetsPath: VIEWER_ASSETS_BASE_ROUTE, // Base path the viewer should use for static assets\n resourcePath: `${VIEWER_ASSETS_BASE_ROUTE}/viewer-assets`, // Base path the viewer should use for images\n language: window.viewerCustomizations.languages['en-US'],\n template: window.viewerCustomizations.template,\n icons: window.viewerCustomizations.icons,\n uiElements: {\n annotateTab: false,\n redactTab: false,\n esignTab: false,\n },\n annotationsMode: 'LayeredAnnotations', // Use the new \"LayeredAnnotations\" system, which will persist annotation data as JSON (instead of the default \"LegacyAnnotations\" system, which uses a different XML format)\n redactionReasons: {\n enableRedactionReasonSelection: true, // Enable the UI to allow users to select a redaction reason.\n enableFreeformRedactionReasons: true, // Allow users to type a custom redaction reason.\n enableMultipleRedactionReasons: true, // Allow users to apply multiple redaction reasons to a single redaction (requires a backend running version 13.13 or higher)\n\n // TODO: Define your own set of redaction reasons for your users to pick from:\n reasons: [\n {\n reason: '1.a', // Text to apply to the redaction itself.\n description: 'Client Privilege', // Optional extended description the user will see when choosing from the list of redaction reasons.\n },\n {\n reason: '1.b',\n description: 'Privacy Information',\n },\n {\n reason: '1.c',\n },\n ],\n },\n });\n\n // Now that the viewer is constructed, emit the viewerControl as an output\n // so that the consumer of this component can have access to the\n // viewerControl client API.\n this.viewerControl.emit(container.viewerControl);\n\n const componentId = ImproveFeatureNamesToAuditComponentId.map.get(\n this.tabName\n );\n\n container.viewerControl.on(\n (window as any).PCCViewer.EventType.PrintRequested,\n () => {\n this.auditService.auditLog(\n `User Requested to Print document with ID: ${this.entryId} `,\n componentId,\n null, // subComponent\n ActionId.PrintExport,\n '', //chPatId\n this.tier,\n '' //orgId\n );\n }\n );\n\n window.$('button[data-pcc-download=\"download\"]').on('click', (event) => {\n // that.downloadButtonClicked$.next(true);\n this.auditService.auditLog(\n `User Requested to Download document with ID: ${this.entryId} `,\n componentId,\n null, // subComponent\n ActionId.PrintExport,\n '', //chPatId\n this.tier,\n '' //orgId\n );\n });\n }\n\n private ensureScriptHasLoaded(src) {\n return this.ensureHeadResourceExistsAndHasLoaded('script', 'src', src, {\n async: true,\n });\n }\n\n private ensureCssHasLoaded(href) {\n return this.ensureHeadResourceExistsAndHasLoaded('link', 'href', href, {\n rel: 'stylesheet',\n });\n }\n\n private ensureHeadResourceExistsAndHasLoaded(\n tagName,\n urlPropertyName,\n urlValue,\n attributes\n ) {\n return new Promise((resolve, reject) => {\n if (!PrizmDocViewerWrapperComponent.prerequisites[urlValue]) {\n PrizmDocViewerWrapperComponent.prerequisites[urlValue] =\n new ResourceLoadingState();\n\n const tag = this.renderer2.createElement(tagName);\n tag[urlPropertyName] = urlValue;\n\n for (const [k, v] of Object.entries(attributes || {})) {\n tag.setAttribute(k, v);\n }\n\n tag.onload = () => {\n tag.onerror = null;\n tag.onload = null;\n PrizmDocViewerWrapperComponent.prerequisites[urlValue].setLoaded();\n };\n\n tag.onerror = () => {\n tag.onerror = null;\n tag.onload = null;\n PrizmDocViewerWrapperComponent.prerequisites[urlValue].setErrored();\n };\n\n document.head.appendChild(tag);\n }\n\n if (PrizmDocViewerWrapperComponent.prerequisites[urlValue].isLoaded()) {\n resolve();\n } else if (\n PrizmDocViewerWrapperComponent.prerequisites[urlValue].isErrored()\n ) {\n reject(new Error(`Failed to load ${urlValue}`));\n } else {\n PrizmDocViewerWrapperComponent.prerequisites[urlValue].onLoad(() =>\n resolve()\n );\n PrizmDocViewerWrapperComponent.prerequisites[urlValue].onError(() =>\n reject(new Error(`Failed to load ${urlValue}`))\n );\n }\n });\n }\n}\n\nclass ResourceLoadingState {\n private _isLoaded = false;\n private _isErrored = false;\n private _loadedCallbacks: (() => any)[] = [];\n private _errorCallbacks: ((err: Error) => any)[] = [];\n\n onLoad(f: () => any) {\n this._loadedCallbacks.push(f);\n }\n\n onError(f: (err: Error) => any) {\n this._errorCallbacks.push(f);\n }\n\n setLoaded() {\n this._isLoaded = true;\n this._loadedCallbacks.forEach((f) => f());\n }\n\n setErrored(err) {\n this._isErrored = true;\n this._errorCallbacks.forEach((f) => f(err));\n }\n\n isLoaded() {\n return this._isLoaded;\n }\n\n isErrored() {\n return this._isErrored;\n }\n}\n","import {\n Directive,\n ElementRef,\n OnInit,\n Renderer2,\n Input,\n Output,\n EventEmitter,\n HostListener\n} from '@angular/core';\n\n\n@Directive({\n selector: '[appIframeTracker]'\n})\nexport class IframeTrackerDirective implements OnInit {\n private iframeMouseOver: boolean;\n\n @Input() debug: boolean;\n\n @Output() iframeClick = new EventEmitter();\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnInit(): void {\n this.renderer.listen(window, 'blur', () => this.onWindowBlur());\n }\n\n @HostListener('mouseover')\n onIframeMouseOver() {\n this.iframeMouseOver = true;\n this.resetFocusOnWindow();\n }\n\n @HostListener('mouseout')\n onIframeMouseOut() {\n this.iframeMouseOver = false;\n this.resetFocusOnWindow();\n }\n\n private onWindowBlur() {\n if (this.iframeMouseOver) {\n this.resetFocusOnWindow();\n this.iframeClick.emit(this.el);\n }\n }\n\n private resetFocusOnWindow() {\n setTimeout(() => {\n window.focus();\n }, 100);\n }\n\n private log(message: string) {\n if (this.debug) {\n console.log(message);\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\n@Component({\n selector: 'coach-contacts',\n templateUrl: './contacts.component.html',\n styleUrls: ['./contacts.component.scss']\n})\nexport class ContactsComponent implements OnInit {\n app = AppConstants;\n \n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n
\n
\n
\n
\n

Contacts

\n
\n \n
\n\n
\n
\n
\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n
\n

Client Contacts

\n
\n

\n An up to date contacts list ensures vital information reaches the correct members of your organization and drives Coach access levels.\n

\n
\n

Clinician Roster

\n
\n

\n Updating your clinician roster with Signify Health is a requirement of your participation agreement and keeps your Coach hierarchy data accurate and up to date.\n

\n
\n

My Signify Health Team

\n
\n

\n This is a directory of Signify Health contacts who can help your team be successful.\n

\n
\n\n \n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\n@Component({\n selector: 'coach-steering-committee',\n templateUrl: './steering-committee.component.html',\n styleUrls: ['./steering-committee.component.scss']\n})\nexport class SteeringCommitteeComponent implements OnInit {\n app = AppConstants;\n \n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n
\n
\n
\n
\n

Steering Committee

\n

\n A Steering Committee is a quarterly meeting between members, leadership, and your {{app.CompanyName}} Health Team to determine next steps, goals, opportunities, and direction.\n

\n
\n \n
\n\n
\n
\n
\n

\n A Steering Committee is a quarterly meeting between members, leadership, and your {{app.CompanyName}} Health Team to determine next steps, goals, opportunities, and direction.
\n
\n Like checking your compass to see if you are on course, these meetings include data that show all Medicare claims information for your patients. This information is used to determine next steps, goals, opportunities, and direction.
\n
\n In this section, you can review information from past Steering Committee meetings, prepare for your next meeting, review goals, and evaluate progress. \n

\n
\n\n\n\n
\n
\n\n\n","import { Component, OnInit } from '@angular/core';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\n@Component({\n selector: 'coach-aco-onboard',\n templateUrl: './aco-onboard.component.html',\n styleUrls: ['./aco-onboard.component.scss']\n})\nexport class AcoOnboardComponent implements OnInit {\n app = AppConstants;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n
\n
\n
\n
\n

ACO Board

\n

\n Each {{app.CompanyName}} Health ACO has its own Board of Directors. The ACO Board is made up of elected members and meets quarterly. \n

\n
\n \n
\n\n
\n
\n
\n

Your ACO board meets to discuss:

\n
    \n
  • Admitting communities to, or dismissing communities from, the ACO

  • \n
  • Setting criteria by which Shared Savings will be distributed among members

  • \n
  • Agreeing on waivers available to the ACO

  • \n
  • Reviewing progress and determining incentives

  • \n
\n
\n\n

\n While only elected members are invited to participate in board meetings, everyone is invited to listen to meetings and review minutes. In this section, you will find ACO Board materials for review and resources for discussion.\n

\n\n\n
\n
\n\n\n","import { Component, OnInit } from '@angular/core';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\n@Component({\n selector: 'coach-practice-improvement',\n templateUrl: './practice-improvement.component.html',\n styleUrls: ['./practice-improvement.component.scss']\n})\nexport class PracticeImprovementComponent implements OnInit {\n app = AppConstants;\n \n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n
\n
\n
\n
\n

Practice Improvements

\n

\n The Practice Improvement section is dedicated to resources and education relating to your day-to-day work in practice transformation. \n

\n
\n \n
\n\n
\n
\n
\n

\n This section is dedicated to resources and education relating to your day-to-day work in practice transformation. Roadmap calls with your {{app.CompanyName}} Health team will help you form strategies to meet the goals set in your Steering Committee meetings. Here you can find the tools and tactics that will help you along the way. \n

\n In this section, you can find supplemental materials, review information from your past Roadmaps, as well as prepare for your next meeting. \n

\n
\n\n","import { Component, OnInit } from '@angular/core';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\n@Component({\n selector: 'coach-information-technology',\n templateUrl: './information-technology.component.html',\n styleUrls: ['./information-technology.component.scss']\n})\nexport class InformationTechnologyComponent implements OnInit {\n app = AppConstants;\n \n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n
\n
\n
\n
\n

Information Technology

\n

\n The Information Technology section contains guidance documents and technical resources for {{app.ApplicationName}}, including trainings, guides, parameters, and specification documents. If you have questions regarding the logic, reasoning, or process, check for answers here! \n

\n
\n \n
\n\n
\n
\n
\n

Please find supporting documentation by browsing the folders in the left panel. You may also search document titles and contents using the site search located in the top-right of your screen.

\n\n
\n In this section you will find: \n

\n\n
    \n
  • \n

    \n {{app.ApplicationName}} Training Support: Looking for an introduction to {{app.ApplicationName}}? Check the Navigation Tutorials folder to find instructional videos to share with new staff members. Stay up to date with the latest {{app.ApplicationName}} enhancements with the User Guide and Release Notes.

    \n\n
  • \n
  • \n

    \n {{app.ApplicationName}} Data Timelines and Parameters: Check the Track Parameters folder for report configuration and check the Care Parameters folder to see what qualifies a patient for a cohort and information on {{app.ApplicationName}} Predicted Risk Category.

    \n \n
  • \n\n
  • \n

    \nIntegration Resources: Documents to support the implementation of a uni-directional interface of your EHR clinical data to the {{app.CompanyName}} Data Warehouse.

    \n
  • \n
\n
\n\n\n \n\n
\n
\n\n\n","import { Component, OnInit } from '@angular/core';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\n@Component({\n selector: 'coach-events',\n templateUrl: './events.component.html',\n styleUrls: ['./events.component.scss']\n})\nexport class EventsComponent implements OnInit {\n app = AppConstants;\n \n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n
\n
\n
\n
\n

Events

\n

\n {{app.CompanyName}} Health Educational Events is dedicated to bringing you one-of-a-kind learning and interactive opportunities through webinars, events, training, cohorts, and accredited education. \n

\n
\n \n
\n\n
\n
\n \n \n
\n

Our Educational Events bring together {{app.CompanyName}} Health experts, industry thought leaders, and clients to share best practices and latest innovations for succeeding in population health and improving patient care. Our signature events include:

\n
    \n
  • Accountable Care Symposium

  • \n
  • Quality Improvement Workshops

  • \n
  • PHN 201: Advanced Health Coaching

  • \n
\n
\n

\n Additionally, clients have access to our unique and proprietary resources, On-Demand trainings, and Live events that are current with industry trends and client needs through {{app.CompanyName}} Learn. \n

\n
\n\n \n\n
\n
\n\n\n\n","
\n \n
\n
\n
{{ selectedTabName ? selectedTabName : null }}
\n
\n
\n\n \n\n
\n \n \n \n \n
\n \n \n \n
\n\n
\n \n
\n
\n
{{ fileData.Title }}
\n
\n {{ fileData.LastModified | date: \"short\" }} - {{ fileData.Author }}\n
\n
\n\n
\n \n
\n \n
\n \n \n
\n \n
\n \n
\n \n \n \n
\n Please select a community to view this page\n
\n
\n
\n
\n \n \n
\n
\n
\n \n
\n \n \n \n \n \n \n \n
\n
\n
\n","import {\n Component,\n ComponentFactoryResolver,\n Input,\n OnInit,\n OnDestroy,\n ViewChild,\n ViewContainerRef,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\nimport * as fileSaver from 'file-saver';\nimport { DocRepo } from '@shared/models/docRepo/list';\nimport { catchError } from 'rxjs/operators';\nimport { EMPTY, Observable, Subscription } from 'rxjs';\nimport { DocumentService } from '@shared/services/doc-exchange/document.service';\nimport { MyTeamComponent } from '@views/improve/shared/doc-repo/components/my-team/my-team.component';\nimport { ClientContactsComponent } from './components/client-contacts/client-contacts.component';\nimport { ClinicianRosterComponent } from './components/clinician-roster/clinician-roster.component';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { DocRepoConstants } from '@shared/models/module-constants';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { ToastrMessageService } from '@shared/services/toastr-message/toastr-message.service';\n\nconst CONTACTS_APPLICATION_FILES = [\"215\",\"217\",\"218\"]\n\n@Component({\n selector: 'coach-doc-repo',\n templateUrl: './doc-repo.component.html',\n styleUrls: ['./doc-repo.component.scss'],\n // tslint:disable-next-line: no-host-metadata-property\n host: { class: 'row u-fill u-overflow--hidden' },\n})\nexport class DocRepoComponent implements OnInit, OnChanges, OnDestroy {\n @Input() isDocUploadEnabled: boolean;\n @Input() public tabDocRepoFolders: DocRepo[];\n @Input() public selectedTabName: string;\n\n public canInteract = false;\n public docURL: string = null;\n public error: Error;\n public fileClicked = false;\n public fileData: any = '';\n public fileParam: number;\n public folder: DocRepo;\n public folderParam: number;\n public isQueueOpen = true;\n public viewerControl: any;\n public currentTier$: Observable;\n public tier: IHierarchyTier;\n public selectedTierId: string;\n public viewingSessionId: string;\n public safeSrc: SafeResourceUrl;\n public unSafeSrc: string;\n public breadCrumbStack = [];\n public showNavBar;\n public currentSelectedFolderChildren: DocRepo[];\n\n public originalSharedButtonText = ' Share';\n\n public sharedButtonText = this.originalSharedButtonText;\n\n private queryParamSubscription: Subscription;\n private customComponent: ViewContainerRef;\n\n selectedFolder: DocRepo;\n\n @ViewChild('customComponent', { read: ViewContainerRef })\n set content(content: ViewContainerRef) {\n if (content != null) {\n this.customComponent = content;\n this.setCustomComponent();\n }\n }\n\n constructor(\n private documentService: DocumentService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private fileDownloadService: FileDownloadService,\n private hierarchyTierService: HierarchyTierService,\n private route: ActivatedRoute,\n private sanitizer: DomSanitizer,\n private router: Router,\n private toastrMessageService: ToastrMessageService\n ) {\n this.queryParamSubscription = route.queryParams.subscribe((params) => {\n const { folder, file } = params;\n this.folderParam = folder;\n this.fileParam = file;\n if (this.tabDocRepoFolders && folder) {\n this.navigateToFolderById(folder);\n }\n if(this.tabDocRepoFolders && CONTACTS_APPLICATION_FILES.includes(file)){\n const selectedFile = this.tabDocRepoFolders.find(\n (file) => file.EntryId == this.fileParam\n );\n if (selectedFile) {\n this.fileSelected(selectedFile, false);\n }\n }\n else if (this.tabDocRepoFolders && file) {\n const selectedFile = this.selectedFolder.Children.find(\n (file) => file.EntryId == this.fileParam\n );\n if (selectedFile) {\n this.fileSelected(selectedFile, false);\n }\n }\n });\n }\n\n ngOnInit(): void {\n this.currentTier$ = this.hierarchyTierService.currentTier$.asObservable();\n\n this.hierarchyTierService.currentTier$.subscribe((value) => {\n if (value != null) {\n this.tier = value;\n this.selectedTierId = value.selectedTierId;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.tabDocRepoFolders?.currentValue) {\n this.currentSelectedFolderChildren = this.tabDocRepoFolders;\n if (this.tabDocRepoFolders != null) {\n const masterDocRepo = new DocRepo();\n masterDocRepo.Children = this.tabDocRepoFolders;\n this.breadCrumbStack.push(masterDocRepo);\n this.currentSelectedFolderChildren = this.tabDocRepoFolders;\n if (this.folderParam) {\n this.navigateToFolderById(this.folderParam);\n }\n if (this.fileParam) {\n const selectedFile = this.selectedFolder.Children.find(\n (file) => file.EntryId == this.fileParam\n );\n if (selectedFile) {\n this.fileSelected(selectedFile);\n } else {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n folder: this.folderParam,\n },\n });\n }\n }\n }\n }\n }\n\n ngOnDestroy(): void {\n this.queryParamSubscription.unsubscribe();\n }\n\n public toggleQueueOpen(): void {\n this.isQueueOpen = !this.isQueueOpen;\n }\n\n public updateFilesCompleted(event: any) {\n this.fileDownloadService.fetchDocRepoList(\n this.hierarchyTierService.currentTier$.value.selectedTierId\n );\n }\n\n public innerFileClicked(event: DocRepo): void {\n // CC-2941 - let's just navigate to the route rather than calling fileSelected\n // which gets called inside the ngOnChanges handler\n // this.fileSelected(event);\n if (!event.EntryId) {\n this.toastrMessageService.error(new Error(\"innerFileClicked without event.EntryId\"));\n return;\n }\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n folder: this.folderParam,\n file: event.EntryId\n },\n });\n }\n\n public fileSelected(file: DocRepo, updateRouter = true): void {\n console.log(`*** doc-repo.component.fileSelected \"${file.Title}\"`);\n // console.log(new Error().stack);\n // console.log(file);\n\n // Could also use Path or BlobPath\n if (this.fileData?.EntryId == file.EntryId) {\n console.log(`*** docRepo.component.fileSelected - file hasn't changed: ignore this call`);\n return;\n }\n this.fileClicked = true;\n this.fileData = file;\n this.sharedButtonText = this.originalSharedButtonText;\n const fileExt = file.OriginalFileName?.slice(\n file.OriginalFileName.length - 4\n );\n if (updateRouter) {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n folder: this.folderParam,\n file: file.EntryId,\n },\n });\n }\n\n if (file.EntryType === DocRepoConstants.PageEntryType) {\n this.setCustomComponent();\n } else if (\n (file.EntryType === DocRepoConstants.TextPlainEntryType ||\n file.EntryType === DocRepoConstants.TextHtmlEntryType ||\n file.EntryType === DocRepoConstants.URLEntryType) &&\n file.OriginalFileName.length > 4 &&\n fileExt == '.url'\n ) {\n file.EntryType = DocRepoConstants.URLEntryType;\n this.fileDownloadService\n .getSpecificFile(file.EntryId)\n .subscribe((data) => {\n this.fileDownloadService.downloadFile(data).subscribe((response) => {\n response.text().then((data) => {\n const textUrlStart = data.indexOf('URL=');\n const textUrlA = data.slice(textUrlStart + 4);\n let textUrl;\n if (textUrlA.indexOf('\\n') >= 1) {\n textUrl = textUrlA.slice(0, textUrlA.indexOf('\\n') - 1);\n } else {\n textUrl = textUrlA;\n }\n if (textUrl.length >= 3) {\n this.unSafeSrc = textUrl;\n this.safeSrc =\n this.sanitizer.bypassSecurityTrustResourceUrl(textUrl);\n } else {\n console.warn('Non-functional URL:', textUrl);\n }\n });\n });\n });\n } else if (file.EntryType !== DocRepoConstants.YoutubeEntryType) {\n this.fileDownloadService\n .getSpecificFile(file.EntryId)\n .subscribe((data) => {\n console.log(`*** subscribed to fileDownloadService for \"${data}\"`)\n this.docURL = data;\n\n // Create a viewing session for the document we want to view, then update\n // this.viewingSessionId. Setting a value for this.viewingSessionId will\n // send the value (via data binding in the HTML template) to the child\n // prizmdoc-viewer-wrapper component, causing it to initialize.\n this.documentService\n .createViewingSessionForDocument(file.Title, data, fileExt)\n .pipe(\n catchError((err) => {\n this.error = err;\n return EMPTY;\n })\n )\n .subscribe((viewingSessionId: string) => {\n this.viewingSessionId = viewingSessionId;\n });\n });\n }\n }\n\n setCustomComponent(): void {\n if (this.customComponent != null) {\n this.customComponent.clear();\n const componentFactory =\n this.componentFactoryResolver.resolveComponentFactory(\n this.getCustomComponent()\n );\n this.customComponent.createComponent(componentFactory);\n }\n }\n\n getCustomComponent(): any {\n switch (this.fileData.EntryId) {\n case 215:\n return MyTeamComponent;\n case 217:\n return ClientContactsComponent;\n case 218:\n return ClinicianRosterComponent;\n }\n return null;\n }\n\n download(doc: string): void {\n this.fileDownloadService.downloadFile(doc).subscribe((response) => {\n const blob: any = new Blob([response], {\n type: 'text/json; charset=utf-8',\n });\n const url = window.URL.createObjectURL(blob);\n fileSaver.saveAs(blob, this.fileData.OriginalFileName);\n }),\n (error: string) => {\n console.error('Error downloading the file' + error);\n },\n () => {\n console.info('File downloaded successfully');\n };\n }\n\n // Call this method to store a reference to the viewerControl so we can use its API.\n setViewerControl(viewerControl: any): void {\n // Store a reference to the viewerControl.\n this.viewerControl = viewerControl;\n\n // Update our \"canInteract\" variable whenever the viewer is fully ready. For\n // the full list of PCCViewer.EventType values you can subscribe to, see\n // https://help.accusoft.com/PrizmDoc/v13.13/HTML/PCCViewer.html#.EventType\n this.viewerControl.on(\n (window as any).PCCViewer.EventType.ViewerReady,\n () => {\n this.canInteract = true;\n }\n );\n }\n\n // Calls the viewerControl API to navigate to the next page.\n nextPage(): void {\n this.viewerControl.changeToNextPage();\n }\n\n // Calls the viewerControl API to navigate to the previous page.\n previousPage(): void {\n this.viewerControl.changeToPrevPage();\n }\n\n onIframeClick(): void {\n window.open(this.unSafeSrc, '_blank');\n }\n\n sharedClicked(event): void {\n let copyText = window.location.href;\n this.sharedButtonText = 'Copied';\n // copyText.replace()\n const start = copyText.indexOf('/', 10);\n const end = copyText.indexOf('/improve', 10);\n const stringToBeSwapped = copyText.substring(start, end);\n copyText = copyText.replace(stringToBeSwapped, '/shared');\n console.log(`Copied Shareable link to document. ${copyText}`);\n navigator.clipboard.writeText(copyText);\n }\n\n public recursiveFindFolder(\n folderId: number,\n current: DocRepo[],\n stack: DocRepo[] = []\n ): DocRepo[] {\n for (let i = 0; i < current.length; i++) {\n if (current[i].EntryId == folderId) {\n return [...stack, current[i]];\n } else if (current[i].EntryType === 'Folder' && current[i].Children) {\n const result = this.recursiveFindFolder(folderId, current[i].Children, [\n ...stack,\n current[i],\n ]);\n if (result) {\n return result;\n }\n }\n }\n return null;\n }\n\n public navigateToFolderById(folderId: number): void {\n const stack = this.recursiveFindFolder(folderId, this.tabDocRepoFolders);\n if (stack) {\n this.breadCrumbStack.length = 1;\n stack.forEach((folder) => this.selectedFolderListener(folder));\n } else {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {},\n });\n }\n }\n\n public selectedFolderListener(event: DocRepo): void {\n this.selectedFolder = event;\n if (this.breadCrumbStack[this.breadCrumbStack.length - 1] !== event) {\n this.breadCrumbStack.push(event);\n }\n this.currentSelectedFolderChildren = event.Children;\n this.showNavBar = true;\n }\n\n public drillOutClicked(event: DocRepo): void {\n this.breadCrumbStack.pop();\n this.selectedFolder = this.breadCrumbStack[this.breadCrumbStack.length - 1];\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n folder: this.selectedFolder.EntryId,\n },\n });\n this.currentSelectedFolderChildren = this.selectedFolder.Children;\n this.showNavBar = this.breadCrumbStack.length - 1 > 0;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { DocRepo } from '@shared/models/docRepo/list';\nimport { ImproveFeatureNames } from '@shared/models/module-constants';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\n\n@Component({\n selector: 'coach-improve-aco-board',\n templateUrl: './improve-aco-board.component.html',\n host: {\n class: 'row u-fill'\n }\n})\nexport class ImproveAcoBoardComponent implements OnInit {\n\n public docRepoData: DocRepo[];\n public tabName: string = ImproveFeatureNames.ACOBoard;\n\n constructor(\n private fileDownloadService: FileDownloadService\n ) { }\n\n ngOnInit(): void {\n this.fileDownloadService.generalFolderList$.subscribe(data => {\n if (data.length !== 0) {\n this.docRepoData = this.fileDownloadService\n .getChildrenByCollectionName(this.tabName, data);\n }\n });\n }\n\n}\n","\n\n","import { HttpHeaders, HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { environment } from '../../../../environments/environment';\nimport { LogAuditElementID } from '@shared/models/audit-constants';\nimport { RecentsElement } from '../recents-cache/recents-cache.service';\nimport { RouterHistoryService } from '../router-history/router-history.service';\n\nexport interface SearchDocument {\n path: string;\n title: string;\n phi: boolean;\n tier_node: string;\n}\n\nexport interface PreviewResponse {\n uri: string;\n folder: number;\n file: string;\n tab: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FileSearchService {\n public authToken: string;\n public headers: HttpHeaders;\n public results$: BehaviorSubject;\n public previewUrl$: BehaviorSubject;\n tierNode: string;\n tier: number;\n\n constructor(\n private http: HttpClient,\n private tierService: HierarchyTierService,\n private authService: AuthService,\n private routerHistoryService: RouterHistoryService\n ) {\n this.results$ = new BehaviorSubject([]);\n this.previewUrl$ = new BehaviorSubject('');\n this.authToken = this.authService.getToken();\n this.headers = new HttpHeaders().set(\n 'Authorization',\n `Bearer ${this.authToken}`\n );\n\n this.tierService.currentTier$.subscribe((tier) => {\n if (tier) {\n this.tier = tier.tier;\n this.tierNode = tier.selectedTierId;\n }\n });\n }\n\n search(query: string): void {\n this.http\n .post(\n environment.coachApiUrl + '/api/search/documents',\n {\n query,\n node: this.tierNode,\n },\n { headers: this.headers, responseType: 'json' }\n )\n .toPromise()\n .then((results: SearchDocument[]) => {\n if (results) {\n this.results$.next(results);\n } else {\n this.results$.next([]);\n }\n });\n }\n\n pushToRecents(response: PreviewResponse): void {\n const url = `${this.tierService.currentTierUrl}/improve/${response.tab}?folder=${response.folder}&file=${response.file}`;\n const elements: RecentsElement[] = [\n {\n id: LogAuditElementID.DocumentEntryId,\n value: response.file,\n },\n ];\n this.routerHistoryService.log({ url, elements });\n }\n\n changePreviewUrl(fullPath: string, tierNode: string): void {\n // empty string arg resets preview\n if (fullPath === '') {\n this.previewUrl$.next('');\n } else {\n // trim docrepo url\n const blobPath = fullPath.replace(environment.blobStorageUrl + '/', '');\n this.http\n .post(\n environment.coachApiUrl + '/api/search/preview',\n { blobPath, tierNode },\n { headers: this.headers, responseType: 'json' }\n )\n .subscribe((response: PreviewResponse) => {\n this.previewUrl$.next(response.uri);\n if (this.tier != 1) {\n this.pushToRecents(response);\n }\n });\n }\n }\n}\n","
\n \n
\n
\n
File Search Results
\n
\n
\n
\n
\n \n
\n
\n
\n
\n {{ file.title }}\n
\n
Contains PHI
\n
\n
\n
\n
\n \n
No Files
\n
\n
\n
\n
\n\n
\n \n
\n
\n
{{ selectedFile ? selectedFile.title : null }}
\n
\n {{ selectedFilePathFormated }}\n
\n
\n\n \n
\n\n \n \n
\n \n \n
\n
\n
\n \n
\n No File Selected\n
\n
\n
\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { ImproveComponent } from './improve.component';\nimport { ImproveSummaryComponent } from '@views/improve/improve-summary/improve-summary.component';\nimport { ImproveAcoBoardComponent } from '@views/improve/improve-aco-board/improve-aco-board.component';\nimport { ImproveSearchComponent } from '@views/improve/improve-search/improve-search.component';\nimport { ImproveContactsComponent } from '@views/improve/improve-contacts/improve-contacts.component';\nimport { ImproveSteeringCommitteeComponent } from '@views/improve/improve-steering-committee/improve-steering-committee.component';\nimport { ImprovePracticeImprovementComponent } from '@views/improve/improve-practice-improvement/improve-practice-improvement.component';\nimport { ImproveInformationTechnologyComponent } from '@views/improve/improve-information-technology/improve-information-technology.component';\nimport { ImproveEventsComponent } from '@views/improve/improve-events/improve-events.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: ImproveComponent,\n data: {\n label: 'Improve',\n helpfile: 'LEARN_IMPROVE_General_2020',\n },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'summary',\n },\n {\n path: 'summary',\n component: ImproveSummaryComponent,\n data: {\n label: 'Summary',\n },\n },\n {\n path: 'aco-board',\n component: ImproveAcoBoardComponent,\n data: {\n label: 'ACO Board',\n },\n },\n {\n path: 'practice-improvement',\n component: ImprovePracticeImprovementComponent,\n data: {\n label: 'Practice Improvement',\n },\n },\n {\n path: 'information-technology',\n component: ImproveInformationTechnologyComponent,\n data: {\n label: 'Information Technology',\n },\n },\n {\n path: 'contacts',\n component: ImproveContactsComponent,\n data: {\n label: 'Contacts',\n helpfile: '',\n },\n },\n {\n path: 'search',\n component: ImproveSearchComponent,\n data: {\n label: '',\n },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ImproveRoutingModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { DocRepo } from '@shared/models/docRepo/list';\nimport { ImproveFeatureNames } from '@shared/models/module-constants';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\n\n@Component({\n selector: 'coach-improve-practice-improvement',\n templateUrl: './improve-practice-improvement.component.html',\n host: {\n class: 'row u-fill'\n }\n})\nexport class ImprovePracticeImprovementComponent implements OnInit {\n\n public docRepoData: DocRepo[];\n public tabName: string = ImproveFeatureNames.PracticeImprovement;\n\n constructor(\n private fileDownloadService: FileDownloadService\n ) { }\n\n ngOnInit(): void {\n this.fileDownloadService.generalFolderList$.subscribe(data => {\n if (data.length !== 0) {\n this.docRepoData = this.fileDownloadService\n .getChildrenByCollectionName(this.tabName, data);\n }\n });\n }\n}\n","\n\n","import { Component, OnInit } from '@angular/core';\nimport { ImproveFeatureNames } from '@shared/models/module-constants';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\n\n@Component({\n selector: 'coach-improve-information-technology',\n templateUrl: './improve-information-technology.component.html',\n host: {\n class: 'row u-fill'\n }\n})\nexport class ImproveInformationTechnologyComponent implements OnInit {\n\n public docRepoData;\n public tabName: string = ImproveFeatureNames.InformationTechnology;\n\n constructor(\n private fileDownloadService: FileDownloadService\n ) {}\n\n ngOnInit(): void {\n\n this.fileDownloadService.generalFolderList$.subscribe(data => {\n if (data.length !== 0) {\n this.docRepoData = this.fileDownloadService\n .getChildrenByCollectionName(this.tabName, data);\n }\n });\n }\n}\n","\n\n","import { Component, OnInit } from '@angular/core';\nimport { DocRepo } from '@shared/models/docRepo/list';\nimport { ImproveFeatureNames } from '@shared/models/module-constants';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\n\n@Component({\n selector: 'coach-improve-contacts',\n templateUrl: './improve-contacts.component.html',\n host: {\n class: 'row u-fill'\n }\n})\nexport class ImproveContactsComponent implements OnInit {\n\n public docRepoData: DocRepo[];\n public tabName: string = ImproveFeatureNames.Contacts;\n\n constructor(\n private fileDownloadService: FileDownloadService\n ) { }\n\n ngOnInit(): void {\n this.fileDownloadService.generalFolderList$.subscribe(data => {\n if (data.length !== 0) {\n this.docRepoData = this.fileDownloadService\n .getChildrenByCollectionName(this.tabName, data);\n }\n });\n }\n}\n","\n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport * as fileSaver from 'file-saver';\nimport {\n FileSearchService,\n SearchDocument,\n} from '@shared/services/doc-exchange/file-search.service';\nimport { FileDownloadService } from '@shared/services/doc-exchange/file-download.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { Subscription } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\nimport { DocumentService } from '@shared/services/doc-exchange/document.service';\nimport { catchError } from 'rxjs/operators';\nimport { EMPTY } from 'rxjs';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\n\n@Component({\n selector: 'coach-improve-search',\n templateUrl: './improve-search.component.html',\n styleUrls: ['./improve-search.component.scss'],\n // tslint:disable-next-line: no-host-metadata-property\n host: { class: 'row u-fill u-overflow--hidden' },\n})\nexport class ImproveSearchComponent implements OnInit, OnDestroy {\n public docURL: string = null;\n public isQueueOpen = true;\n public fileClicked = false;\n public error: Error;\n public fileData;\n public searchResults = [];\n private previewSubscription: Subscription;\n public viewingSessionId: string;\n public viewerControl: any;\n public canInteract = false;\n public selectedFile: SearchDocument;\n public selectedFilePathFormated: string;\n public safeSrc: SafeResourceUrl;\n public unSafeSrc: string;\n public fileType: string;\n public tier: IHierarchyTier;\n public originalSharedButtonText = 'Share';\n public sharedButtonText = this.originalSharedButtonText;\n public tabname = \"Practice Improvement\"\n\n constructor(\n private route: ActivatedRoute,\n private fileDownloadService: FileDownloadService,\n private fileSearchService: FileSearchService,\n private documentService: DocumentService,\n private sanitizer: DomSanitizer,\n private tierService: HierarchyTierService\n ) {}\n\n ngOnInit(): void {\n this.tierService.currentTier$.subscribe((value) => {\n if (value != null) {\n this.tier = value;\n }\n });\n this.route.queryParams.subscribe((params) => {\n if (params.query) {\n this.fileSearchService.search(params.query);\n this.fileSearchService.results$.subscribe((results) => {\n this.searchResults = results;\n });\n }\n });\n }\n\n ngOnDestroy(): void {\n if (this.previewSubscription) {\n this.previewSubscription.unsubscribe();\n }\n }\n\n public toggleQueueOpen(): void {\n this.isQueueOpen = !this.isQueueOpen;\n }\n\n public fileSelected(file: SearchDocument): void {\n this.selectedFile = file;\n\n const decodedPath = decodeURI(file.path);\n const substring = decodedPath.substring(\n decodedPath.indexOf('/') + 1,\n decodedPath.length\n );\n this.selectedFilePathFormated = substring;\n\n this.fileSearchService.changePreviewUrl(file.path, file.tier_node);\n\n this.previewSubscription = this.fileSearchService.previewUrl$.subscribe(\n (url) => {\n const fileExt = file.title.slice(file.title.length - 4);\n\n if (file.title.length > 4 && fileExt === '.url') {\n console.log(`*** Subscribing to \"${file.title}\"`);\n this.fileType = 'URL';\n this.fileDownloadService.downloadFile(url).subscribe((response) => {\n response.text().then((data) => {\n const textUrlStart = data.indexOf('URL=');\n const textUrlA = data.slice(textUrlStart + 4);\n let textUrl;\n if (textUrlA.indexOf('\\n') >= 1) {\n textUrl = textUrlA.slice(0, textUrlA.indexOf('\\n') - 1);\n } else {\n textUrl = textUrlA;\n }\n if (textUrl.length >= 3) {\n this.unSafeSrc = textUrl;\n console.log(textUrl);\n this.safeSrc =\n this.sanitizer.bypassSecurityTrustResourceUrl(textUrl);\n console.log(this.safeSrc);\n } else {\n console.warn('Non-functional URL:', textUrl);\n }\n });\n });\n } else {\n this.fileType = 'default';\n // Create a viewing session for the document we want to view, then update\n // this.viewingSessionId. Setting a value for this.viewingSessionId will\n // send the value (via data binding in the HTML template) to the child\n // prizmdoc-viewer-wrapper component, causing it to initialize.\n this.documentService\n .createViewingSessionForDocument(file.title, url, fileExt)\n .pipe(\n catchError((err) => {\n this.error = err;\n return EMPTY;\n })\n )\n .subscribe((viewingSessionId: string) => {\n this.viewingSessionId = viewingSessionId;\n });\n }\n this.docURL = url;\n this.fileClicked = true;\n }\n );\n }\n\n download(doc: string): void {\n try {\n this.fileDownloadService.downloadFile(doc).subscribe((response) => {\n const blob: any = new Blob([response], {\n type: 'text/json; charset=utf-8',\n });\n const url = window.URL.createObjectURL(blob);\n fileSaver.saveAs(blob, this.fileData.OriginalFileName);\n });\n } catch (error) {\n console.error('Error downloading the file' + error);\n }\n }\n\n onIframeClick(): void {\n window.open(this.unSafeSrc, '_blank');\n }\n\n sharedClicked(event): void {\n let copyText = window.location.href;\n this.sharedButtonText = 'Copied';\n // copyText.replace()\n const start = copyText.indexOf('/', 10);\n const end = copyText.indexOf('/improve', 10);\n const stringToBeSwapped = copyText.substring(start, end);\n copyText = copyText.replace(stringToBeSwapped, '/shared');\n console.log(`Copied Shareable link to document. ${copyText}`);\n navigator.clipboard.writeText(copyText);\n }\n\n // Call this method to store a reference to the viewerControl so we can use its API.\n setViewerControl(viewerControl: any): void {\n // Store a reference to the viewerControl.\n this.viewerControl = viewerControl;\n\n // Update our \"canInteract\" variable whenever the viewer is fully ready. For\n // the full list of PCCViewer.EventType values you can subscribe to, see\n // https://help.accusoft.com/PrizmDoc/v13.13/HTML/PCCViewer.html#.EventType\n this.viewerControl.on(\n (window as any).PCCViewer.EventType.ViewerReady,\n () => {\n this.canInteract = true;\n }\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport {YouTubePlayerModule} from '@angular/youtube-player';\n\nimport { VideoComponent } from './video.component';\n\n@NgModule({\n imports: [YouTubePlayerModule],\n declarations: [VideoComponent],\n exports: [VideoComponent]\n})\nexport class VideoModule {}\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '@shared/shared.module';\nimport { ImproveRoutingModule } from './improve-routing.module';\nimport { ImproveComponent } from './improve.component';\nimport { ImproveSummaryComponent } from './improve-summary/improve-summary.component';\nimport { ImproveContactsComponent } from './improve-contacts/improve-contacts.component';\nimport { ImproveAcoBoardComponent } from './improve-aco-board/improve-aco-board.component';\nimport { ImproveSearchComponent } from './improve-search/improve-search.component';\nimport { ImproveSteeringCommitteeComponent } from './improve-steering-committee/improve-steering-committee.component';\nimport { ImprovePracticeImprovementComponent } from './improve-practice-improvement/improve-practice-improvement.component';\nimport { ImproveInformationTechnologyComponent } from './improve-information-technology/improve-information-technology.component';\nimport { ImproveEventsComponent } from './improve-events/improve-events.component';\nimport { DocRepoComponent } from './shared/doc-repo/doc-repo.component';\nimport { DocUploadComponent } from './shared/doc-upload/doc-upload.component';\nimport { DocRepoDirectoryComponent } from './shared/doc-repo/components/doc-repo-directory/doc-repo-directory.component';\nimport { DocRepoItemComponent } from './shared/doc-repo/components/doc-repo-item/doc-repo-item.component';\nimport { DocRepoFolderNavComponent } from './shared/doc-repo/components/doc-repo-folder-nav/doc-repo-folder-nav.component';\nimport { FileUploadModule } from 'ng2-file-upload';\nimport { FormsModule } from '@angular/forms';\nimport { PrizmDocViewerWrapperComponent } from './shared/prizmdoc-viewer-wrapper/prizmdoc-viewer-wrapper.component';\nimport { YouTubePlayerModule } from '@angular/youtube-player';\nimport { VideoModule } from './shared/youtube-video/video.module';\nimport { MyTeamComponent } from './shared/doc-repo/components/my-team/my-team.component';\nimport { ClientContactsComponent } from './shared/doc-repo/components/client-contacts/client-contacts.component';\nimport { ClinicianRosterComponent } from './shared/doc-repo/components/clinician-roster/clinician-roster.component';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { TeamMemberComponent } from './shared/doc-repo/components/my-team/team-member/team-member.component';\nimport { IframeTrackerDirective } from './shared/doc-repo/iframe-tracker.directive';\nimport { ContactsComponent } from './shared/doc-repo/tab-components/contacts/contacts.component';\nimport { SteeringCommitteeComponent } from './shared/doc-repo/tab-components/steering-committee/steering-committee.component';\nimport { AcoOnboardComponent } from './shared/doc-repo/tab-components/aco-onboard/aco-onboard.component';\nimport { PracticeImprovementComponent } from './shared/doc-repo/tab-components/practice-improvement/practice-improvement.component';\nimport { InformationTechnologyComponent } from './shared/doc-repo/tab-components/information-technology/information-technology.component';\nimport { EventsComponent } from './shared/doc-repo/tab-components/events/events.component';\n\n@NgModule({\n declarations: [\n ImproveComponent,\n ImproveSummaryComponent,\n ImproveSearchComponent,\n ImproveContactsComponent,\n ImproveAcoBoardComponent,\n ImproveSteeringCommitteeComponent,\n ImprovePracticeImprovementComponent,\n ImproveInformationTechnologyComponent,\n ImproveEventsComponent,\n DocRepoComponent,\n DocRepoDirectoryComponent,\n DocRepoItemComponent,\n DocRepoFolderNavComponent,\n DocUploadComponent,\n PrizmDocViewerWrapperComponent,\n DocUploadComponent,\n MyTeamComponent,\n ClientContactsComponent,\n ClinicianRosterComponent,\n TeamMemberComponent,\n IframeTrackerDirective,\n ContactsComponent,\n SteeringCommitteeComponent,\n AcoOnboardComponent,\n PracticeImprovementComponent,\n InformationTechnologyComponent,\n EventsComponent\n ],\n imports: [\n SharedModule,\n ImproveRoutingModule,\n FileUploadModule,\n FormsModule,\n YouTubePlayerModule,\n VideoModule,\n AgGridModule\n ]\n})\nexport class ImproveModule {}\n","
\n
\n {{ submitQuailityName }}\n
    \n
  • \n\n \n {{subPeriod.openingInfo}}\n \n currentDate\">{{subPeriod.openingInfo}}\n
    \n {{ subPeriod.openDueDate }}\n
    \n
      \n
    • \n Access Random Patient Sample & How-to Resources\n
    • \n
    \n
    \n
  • \n
\n
\n
\n {{ submitComplianceName }}\n \n
\n
\n {{ submitPIName }}\n \n
\n
\n {{ meetingWidgetName }}\n \n
\n
\n","import { Component, Output, EventEmitter} from '@angular/core';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport {formatDate} from '@angular/common';\nimport {\n SubmitFeatureConstants,\n SubmitFeatureNames,\n SubmitFormConstants,\n} from '@shared/models/module-constants';\nimport { FormConstants } from '@shared/models/forms/form-constants';\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service';\nimport { FolderLookupService } from '@shared/services/folder-lookup/folder-lookup.service';\nimport { CaravanFormSubmissionPeriodOverview } from '@shared/models/forms/form-submissionID-model';\nimport { Router, ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'coach-submit-upcoming-submission-summary',\n templateUrl: './submit-upcoming-submission-summary.component.html',\n host: {\n class: 'row u-fill',\n }\n})\nexport class SubmitUpcomingSubmissionSummary {\n @Output() formSubmissionOverviewEmitter = new EventEmitter();\n\n formSubmissionOverviewSubscription: Subscription;\n randomSampleManualAbstractionFolderSubscription: Subscription;\n randomSampleManualAbstractionFolder;\n formSubmissionOverview: CaravanFormSubmissionPeriodOverview[];\n currentDate: string;\n\n submitQualityFeature = SubmitFeatureConstants.QualityFormFeature;\n submitQuailityName = SubmitFeatureNames.Quality;\n submitMeetingFeature = SubmitFeatureConstants.MeetingFormFeature;\n submitMeetingName = SubmitFeatureNames.Meeting;\n submitComplianceFeature = SubmitFeatureConstants.ComplianceFormFeature;\n submitComplianceName = SubmitFeatureNames.Compliance;\n submitPIFeature = SubmitFeatureConstants.PromotingInteroperabilityFormFeature;\n submitPIName = SubmitFeatureNames.PI;\n\n qualityOpenInfo = FormConstants.QualityOpeningInfo;\n qualityOpenDueDate = FormConstants.QualityOpenDueDate;\n qualityrequirements = FormConstants.Quality.requirements;\n qualityFormId = SubmitFormConstants.QualityFormComponent;\n complianceOpenInfo = FormConstants.ComplianceOpeningInfo;\n complianceOpenDueDate = FormConstants.ComplianceOpenDueDate;\n complianceFormId = SubmitFormConstants.ComplianceFormComponent;\n piOpenInfo = FormConstants.PIOpeningInfo;\n piOpenDueDate = FormConstants.PIOpenDueDate;\n piFormId = SubmitFormConstants.PromotingInteroperabilityFormComponent;\n meetingWidgetName = FormConstants.MeetingWidgetName;\n meetingOpenInfo = FormConstants.MeetingOpeningInfo;\n meetingOpenDueDate = FormConstants.MeetingOpenDueDate;\n\n constructor(\n private folderService: FolderLookupService,\n private formsService: SubmitFormsService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n ) {\n this.formSubmissionOverviewSubscription = this.formsService.getSubmitPeriodsOverview(0).subscribe((data) => {\n this.formSubmissionOverview = data;\n this.formSubmissionOverviewEmitter.emit(this.formSubmissionOverview);\n this.currentDate = formatDate(new Date(), 'yyyy-MM-dd', 'en');\n });\n this.randomSampleManualAbstractionFolderSubscription = this.formsService.getFolderGeneric('Random_Sample_Manual_Abstraction', 'From Caravan WITH PHI','Practice Improvement').subscribe(\n (data) => (this.randomSampleManualAbstractionFolder = data)\n );\n }\n\n\n public goToItems(e, path: string, query?: object | null): void {\n e.preventDefault();\n this.router.navigate(['..' + path], {\n queryParams: query,\n relativeTo: this.activatedRoute.parent,\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport {\n SubmitFeatureConstants,\n SubmitFeatureNames,\n SubmitFormConstants,\n} from '@shared/models/module-constants';\n\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service';\nimport { CaravanFormSubmissionPeriodOverview } from '@shared/models/forms/form-submissionID-model';\nimport { formatDate } from '@angular/common';\nimport moment from 'moment';\nimport { Subscription } from 'rxjs';\n\nconst {\n QualityFormFeature,\n ComplianceFormFeature,\n PromotingInteroperabilityFormFeature,\n} = SubmitFeatureConstants;\n@Component({\n selector: 'coach-submit',\n templateUrl: './submit.component.html',\n host: {\n class: 'coach-submit',\n },\n})\nexport class SubmitComponent implements OnInit {\n public tabsData = [\n {\n name: SubmitFeatureNames.Summary,\n routerLink: ['summary'],\n },\n ];\n\n formSubmissionOverviewSubscription: Subscription = new Subscription();\n randomSampleManualAbstractionFolderSubscription: Subscription =\n new Subscription();\n formSubmissionOverview: CaravanFormSubmissionPeriodOverview[] = [];\n currentDate: string | undefined;\n\n piFormOpen = false;\n piFormId = SubmitFormConstants.PromotingInteroperabilityFormComponent;\n complianceFormOpen = false;\n complianceFormId = SubmitFormConstants.ComplianceFormComponent;\n qualityFormOpen: boolean = false;\n qualityFormId = SubmitFormConstants.QualityFormComponent;\n\n constructor(private formsService: SubmitFormsService) {}\n\n ngOnInit(): void {\n this.formSubmissionOverviewSubscription = this.formsService\n .getSubmitPeriodsOverview(0)\n .subscribe((data) => {\n this.formSubmissionOverview = data;\n this.checkFormOpenStatus();\n });\n }\n checkFormOpenStatus(): void {\n const todayDate = formatDate(new Date(), 'yyyy-MM-dd', 'en');\n\n if (this.formSubmissionOverview != null) {\n for (let i = 0; i < this.formSubmissionOverview.length; i++) {\n let openDate = this.formSubmissionOverview[i].openDate;\n if (moment(openDate).isSameOrBefore(todayDate)) {\n if (this.formSubmissionOverview[i].formID == this.piFormId) {\n this.piFormOpen = true;\n // name: SubmitFeatureNames.PI\n }\n if (this.formSubmissionOverview[i].formID == this.complianceFormId) {\n this.complianceFormOpen = true;\n // name: SubmitFeatureNames.Compliance\n }\n if (this.formSubmissionOverview[i].formID == this.qualityFormId) {\n this.qualityFormOpen = true;\n // name: SubmitFeatureNames.Quality\n }\n }\n }\n }\n if (this.piFormOpen == true) {\n this.addOpenFormToTab(\n SubmitFeatureNames.PI,\n ['promoting-interoperability'],\n PromotingInteroperabilityFormFeature\n );\n }\n if (this.complianceFormOpen == true) {\n this.addOpenFormToTab(\n SubmitFeatureNames.Compliance,\n ['compliance'],\n ComplianceFormFeature\n );\n }\n if (this.qualityFormOpen == true) {\n this.addOpenFormToTab(\n SubmitFeatureNames.Quality,\n ['quality'],\n QualityFormFeature\n );\n }\n //Need to leave this slice (even though it doesn't do anything out right) do to a quirk of pushing to the array not updating the tabs themselves.\n //Likely this is an issue with the push not doing a deep copy, where as slice does a deep copy which causes the tab list to actually update what's being displayed.\n this.tabsData = this.tabsData.slice();\n }\n\n addOpenFormToTab(\n tabName: string,\n routerLink: string[],\n featureId: number\n ): void {\n const newTab = {} as newTab;\n newTab.name = tabName;\n newTab.routerLink = routerLink;\n newTab.featureId = featureId;\n this.tabsData.push(newTab);\n }\n}\nexport interface newTab {\n name: string;\n routerLink: string[];\n featureId: number;\n}\n","\n\n","
\n
\n
\n
\n
\n
\n
Summary
\n
\n
\n\n
\n \n

This area makes it easy for you to access, submit, and review your required forms. The Quality, Compliance,\n Promoting Interoperability, and Meeting forms reflect your progress toward CMS requirements and contribute\n to the success of the ACO. Don’t see the form you are looking for? Check back later as form links are\n made available once the submission period has opened.

\n \n
\n
\n
\n
\n
\n
\n
\n
{{quailityName}}
\n
\n
\n
\n
\n
{{quailityName}}
\n
\n
\n
\n
\n \n

\n Quality is essential to valued-based programs. {{app.CompanyName}} uses these self-reported Quality data submissions,\n from your EHR, to help assess performance and track progress improvement throughout the year, so you can\n successfully report Quality for MIPS and the Medicare Shared Savings program. Depending on your ACO, these\n data may be used as part of the Shared Savings distribution model.\n

\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
Compliance
\n
\n
\n
\n
\n
Compliance
\n
\n
\n
\n \n

The self-assessment form is an annual exercise that ensures each organization is aware of and implementing\n the required ACO compliance policies and procedures.

\n
\n \n
\n
\n
\n
\n\n
\n
\n
\n
\n
Promoting Interoperability
\n
\n
\n
\n
\n
Promoting Interoperability
\n
\n
\n
\n \n

Ensuring accurate patient records leads to better outcomes and patient safety. That’s why interoperability\n is so crucial to the long term success of your ACO.

\n

We’re here to help you track your progress and help you leverage best practices toward your established\n interoperability goals.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n {{submitMeetingName}}\n
\n
\n
\n
\n

Upload your agenda and meeting notes from your monthly Roadmap and quarterly Cohort Steering meetings,\n along with some of the highlights of each of those meetings.

\n
\n \n
\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport {formatDate} from '@angular/common';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n SubmitFeatureConstants,\n SubmitFeatureNames,\n SubmitFormConstants,\n} from '@shared/models/module-constants';\nimport { FormConstants } from '@shared/models/forms/form-constants';\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service';\n\nimport { CaravanFormSubmissionPeriodOverview } from '@shared/models/forms/form-submissionID-model';\nimport moment from 'moment';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\nconst {\n SummaryFormFeature,\n QualityFormFeature,\n ComplianceFormFeature,\n PromotingInteroperabilityFormFeature,\n MeetingFormFeature,\n} = SubmitFeatureConstants;\n\n@Component({\n selector: 'coach-submit-summary',\n templateUrl: './submit-summary.component.html',\n})\nexport class SubmitSummaryComponent implements OnInit {\n summaryForm = SummaryFormFeature;\n qualityForm = QualityFormFeature;\n complianceForm = ComplianceFormFeature;\n promotingInteroperabilityForm = PromotingInteroperabilityFormFeature;\n meetingForm = MeetingFormFeature;\n submitMeetingName = SubmitFeatureNames.Meeting;\n\n qualityFeature = SubmitFeatureConstants.QualityFormFeature;\n quailityName = SubmitFeatureNames.Quality;\n qualityOpenInfo = FormConstants.QualityOpeningInfo;\n qualityOpenDueDate = FormConstants.QualityOpenDueDate;\n qualityrequirements = FormConstants.Quality.requirements;\n qualityFormId = SubmitFormConstants.QualityFormComponent;\n qualityFormOpen: boolean = false;\n\n complianceFeature = SubmitFeatureConstants.ComplianceFormFeature;\n complianceName = SubmitFeatureNames.Compliance;\n complianceOpenInfo = FormConstants.ComplianceOpeningInfo;\n complianceOpenDueDate = FormConstants.ComplianceOpenDueDate;\n complianceFormId = SubmitFormConstants.ComplianceFormComponent;\n complianceFormOpen: boolean = false;\n\n PIFeature = SubmitFeatureConstants.PromotingInteroperabilityFormFeature;\n PIName = SubmitFeatureNames.PI;\n piOpenInfo = FormConstants.PIOpeningInfo;\n piOpenDueDate = FormConstants.PIOpenDueDate;\n piFormId = SubmitFormConstants.PromotingInteroperabilityFormComponent;\n piFormOpen: boolean = false;\n\n meetingFeature = SubmitFeatureConstants.MeetingFormFeature;\n meetingName = SubmitFeatureNames.Meeting;\n meetingWidgetName = FormConstants.MeetingWidgetName;\n meetingOpenInfo = FormConstants.MeetingOpeningInfo;\n meetingOpenDueDate = FormConstants.MeetingOpenDueDate;\n currentDate: string;\n\n app = AppConstants;\n\n public caravanFormSubmissionOverview: CaravanFormSubmissionPeriodOverview[];\n\n constructor(\n private hierarchyTierService: HierarchyTierService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private formsService: SubmitFormsService,\n ) {}\n\n ngOnInit(): void {\n this.formsService.getSubmitPeriodsOverview(0).subscribe((data) => {\n this.caravanFormSubmissionOverview = data;\n this.currentDate = formatDate(new Date(), 'yyyy-MM-dd', 'en');\n });\n }\n\n recieveFormSubmissionOverviewData($event): void {\n this.caravanFormSubmissionOverview = $event;\n this.checkFormOpenStatus();\n }\n\n checkFormOpenStatus(): void {\n const todayDate = formatDate(new Date(), 'yyyy-MM-dd', 'en');\n\n for (let i = 0; i < this.caravanFormSubmissionOverview.length; i++) {\n let openDate = this.caravanFormSubmissionOverview[i].openDate;\n if (moment(openDate).isBefore(todayDate)){\n if (this.caravanFormSubmissionOverview[i].formID == this.piFormId) {\n this.piFormOpen = true;\n }\n if (this.caravanFormSubmissionOverview[i].formID == this.complianceFormId) {\n this.complianceFormOpen = true;\n }\n if (this.caravanFormSubmissionOverview[i].formID == this.qualityFormId) {\n this.qualityFormOpen = true;\n }\n }\n }\n }\n\n routeToTab(tab: string): void {\n const path =\n this.hierarchyTierService.currentTier$.value.abbreviation +\n '/' +\n this.hierarchyTierService.currentTier$.value.selectedTierId +\n '/submit/' +\n tab;\n this.router.navigateByUrl(path);\n }\n\n public goToItems(e, path: string, query?: object | null): void {\n e.preventDefault();\n this.router.navigate(['..' + path], {\n queryParams: query,\n relativeTo: this.activatedRoute.parent,\n });\n }\n}\n","import { QualityFormQuestion } from '@shared/models/forms/forms-frontend';\nimport { FormConstants } from '@shared/models/forms/form-constants';\n\nexport const QUALITY_FORM_TOOLTIPS = {\n tooltipPracticeText: {\n html: '

Lists practice(s) with attribution in the ACO. Click all practices that share an EHR to indicate that the submitted Quality data covers all selected practices..

',\n },\n tooltipExemptText: {\n html: '

Indicate whether selected practice(s) are exempt. If exempt, please indicate the reason in \"Special Status\" below.

',\n },\n tooltipSpecialStatusText: {\n html: '

Select a new Special Status, for a particular practice.

',\n },\n tooltipEHRText: {\n html: '

The twelve most popular EHRs are listed. If your EHR is not indicated, please select Other.

',\n },\n tooltipDataSourceText: {\n html: `

${FormConstants.Quality.dataSourceToolTipText}

`,\n },\n tooltipPatientPopText: {\n html: '

Data should represent patients from All Payors to mirror and prepare for upcoming CMS changes for PY2022

',\n },\n tooltipUploadQualityMeasureReportText: {\n html: '

Before submitting, please upload an electronic copy of the EHR report or excel template used to complete the form for verification and accountability.

',\n },\n};\n\nexport const QUALITY_FORM_QUESTIONS: QualityFormQuestion[] = [\n {\n questionID: 1,\n descText: 'CARE-2 | ACO-13 | Higher score indicates better quality',\n questionText: 'Falls: Screening for Future Falls Risk',\n isLowPointsIdeal: false,\n infoText: `

Percentage of patients 65 years of age and older who were screened for future fall risk during the measurement period.

\n

Link to Measure Specification

\n\n `,\n minDenominator: 1,\n },\n {\n questionID: 2,\n descText: 'DM-2 | ACO-27 | Lower score indicates better quality',\n questionText: 'Diabetes: Hemoglobin A1c Poor Control (>9.0%)',\n isLowPointsIdeal: true,\n infoText: `

Percentage of patients 18 - 75 years of age with diabetes who had hemoglobin A1c > 9.0% during the measurement period.

\n

Link to Measure Specification

\n `,\n minDenominator: 1,\n },\n {\n questionID: 5,\n descText: 'HTN-2 | ACO-28 | Higher score indicates better quality',\n questionText: 'Controlling High Blood Pressure',\n isLowPointsIdeal: false,\n infoText: `

Percentage of patients 18 - 85 years of age who had a diagnosis of essential hypertension starting before and continuing into, or starting during the first six months of the measurement period.

\n

Link to Measure Specification

\n `,\n minDenominator: 1,\n },\n {\n questionID: 3,\n descText: 'PREV-5 | ACO-20 | Higher score indicates better quality',\n questionText: 'Breast Cancer Screening',\n isLowPointsIdeal: false,\n infoText: `

Percentage of women 50 - 74 years of age who had a mammogram to screen for breast cancer in the 27 months prior to the end of the measurement period.

\n

Link to Measure Specification

\n `,\n minDenominator: 1,\n },\n {\n questionID: 4,\n descText: 'PREV-6 | ACO-19 | Higher score indicates better quality',\n questionText: 'Colorectal Cancer Screening',\n isLowPointsIdeal: false,\n infoText: `

Percentage of adults 45 -75 years of age who had appropriate screening for colorectal cancer.

\n

Link to Measure Specification

\n `,\n minDenominator: 1,\n },\n {\n questionID: 7,\n descText: 'PREV-7 | ACO-14 | Higher score indicates better quality',\n questionText: 'Preventive Care and Screening: Influenza Immunization',\n isLowPointsIdeal: false,\n infoText: `

Percentage of patients aged 6 months and older seen for a visit during the measurement period who received an influenza immunization OR who reported previous receipt of an influenza immunization.

\n

Link to Measure Specification

\n `,\n minDenominator: 1,\n },\n {\n questionID: 49,\n descText: 'PREV-10 | ACO-18 | Higher score indicates better quality',\n questionText:\n 'Preventive Care and Screening: Tobacco Use: Screening and Cessation Intervention',\n isLowPointsIdeal: false,\n infoText: `

Percentage of patients aged 18 years and older who were screened for tobacco use one or more times during the measurement period or in the six months prior to the measurement period AND who received tobacco cessation intervention during the measurement period or in the six months prior to the measurement period if identified as a tobacco user.

\n

Link to Measure Specification

\n `,\n minDenominator: 1,\n },\n {\n questionID: 6,\n descText: 'PREV-12 | ACO-18 | Higher score indicates better quality',\n questionText:\n 'Preventive Care and Screening: Screening for Depression and Follow-Up Plan',\n isLowPointsIdeal: false,\n infoText: `

Percentage of patients aged 12 years and older screened for depression on the date of the encounter or 14 days prior to the date of the encounter using an age appropriate standardized depression screening tool AND if positive, a follow-up plan is documented on the date of the eligible encounter.

\n

Link to Measure Specification

\n `,\n minDenominator: 1,\n },\n];\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\nexport class submitFormSharedFunctions {\n public getBoolean(value) {\n switch(value){\n case true:\n case 'true':\n case 1:\n case '1':\n case 'on':\n case 'yes':\n return true;\n default:\n return false;\n }\n }\n}\n","import { ValidationErrors, ValidatorFn, AbstractControl } from '@angular/forms';\nimport moment, { Moment } from 'moment';\n\n/**\n * Custom validators for Angular Reactive Forms\n */\nexport class CustomValidators {\n /**\n * Validates that the control value is greater than or equal to another control\n * @param {string} otherControlPath Absolute path of control to compare against\n */\n static greaterThanOrEqual(otherControlPath: string): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const otherControl = control?.root?.get(otherControlPath);\n if (control == null || otherControl == null || control.value == null || otherControl.value == null) {\n return null;\n }\n\n const isAfter = control.value >= otherControl.value;\n\n return isAfter ? null : { notGreaterThan: true };\n };\n }\n\n /**\n * Validates that the control value is less than or equal to another control\n * @param {string} otherControlPath Absolute path of control to compare against\n */\n static lessThanOrEqual(otherControlPath: string): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const otherControl = control?.root?.get(otherControlPath);\n if (control == null || otherControl == null || control.value == null || otherControl.value == null) {\n return null;\n }\n\n const isAfter = control.value <= otherControl.value;\n\n return isAfter ? null : { notGreaterThan: true };\n };\n }\n\n /**\n * Validates that the control value is greater than or equal to another control or zero\n * @param {string} otherControlPath Absolute path of control to compare against\n */\n static greaterThanMinOrZero(minValue: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control == null || control.value == null) {\n return null;\n }\n let isAfter: boolean;\n\n if (control.value >= minValue || control.value == 0)\n {\n isAfter = true;\n }\n else\n {\n isAfter = false;\n }\n\n return isAfter ? null : { notGreaterThan: true };\n };\n }\n\n static startDateIsInPast(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control == null || control.value == null) {\n return null;\n }\n let isPast: boolean;\n\n const responseDate = control.value.split(\"|\"); \n\n const startDate = moment(responseDate[0], 'YYYY-MM-DD');\n\n const endDate = moment(responseDate[1], 'YYYY-MM-DD');\n\n const today = moment();\n\n if (today >= startDate)\n {\n isPast = true;\n }\n else\n {\n isPast = false;\n }\n\n return isPast ? null : { startIsInPast: true };\n };\n }\n\n static sufficentDateRange(reqDateDiff: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control == null || control.value == null) {\n return null;\n }\n let isEnoughDays: boolean;\n\n const responseDate = control.value.split(\"|\"); \n\n const startDate = moment(responseDate[0], 'YYYY-MM-DD');\n\n const endDate = moment(responseDate[1], 'YYYY-MM-DD');\n\n if (endDate.diff(startDate, 'days') < reqDateDiff) {\n isEnoughDays = false;\n }\n else \n {\n isEnoughDays = true;\n }\n\n \n return isEnoughDays ? null : { sufficentDateRange: true };\n };\n}\n\n}\n\n \n\n","
\n
\n
\n
\n {{ formQuestion?.descText }}\n
\n \n
\n
\n {{ formQuestion?.questionText }}\n
\n
\n
\n
\n
\n \n \n = 48 && event.charCode <= 57\" max=\"{{\n qualityForm.controls[formGroupName].get('FormQResponses.2.ResponsePointValue').value\n ? qualityForm.controls[formGroupName].get('FormQResponses.2.ResponsePointValue').value\n : 999\n }}\" (blur)=\"toggleErrorTexts(1)\" />\n \n\n
\n\n \n = 48 && event.charCode <= 57\"\n (blur)=\"toggleErrorTexts(2)\" />\n \n \n \n \n
\n
\n
\n
\n
\n

\n {{qualityForm.controls[formGroupName].get(\"FormQResponses.0.ResponsePointValue\").value\n || 0}}\n

\n
 pts
\n
\n
\n
\n
\n
\n
\n Better\n
\n
\n {{ percentRounded || 0 }}%\n
\n
\n
\n
\n
\n
{{ error }}
\n
\n
\n\n\n
\n
\n
\n
\n
\n {{ formQuestion?.questionText }}\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n","import {\n Component,\n OnInit,\n Input,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { QualityFormQuestion } from '@shared/models/forms/forms-frontend';\nimport { FormQuestionConstants } from '@shared/models/forms/form-question-constants';\n\n@Component({\n selector: 'coach-submission-form-block',\n templateUrl: './form-block.component.html',\n styleUrls: ['./form-block.component.scss'],\n})\nexport class FormBlockComponent implements OnInit, OnDestroy, OnChanges {\n @Input() qualityForm: UntypedFormGroup; // Import form from parent component\n @Input() formQuestion: QualityFormQuestion; // Import front-end question data from iterated question list\n @Input() questionsDisabled: boolean;\n\n\n public errors = [];\n\n // Forms\n public formGroupName: string;\n public percent: number;\n public newPoints: number;\n public percentRounded: number;\n public percentRoundedGraph: number;\n\n // Subscriptions\n public responseSub$: Subscription;\n public numSub$: Subscription;\n public denSub$: Subscription;\n public allSubs: Subscription[];\n\n // Other UI\n public isInfoTextOpen = false;\n\n\n public errTexts = {\n NUM :'Numerator cannot be negative',\n DEN : 'Denominator cannot be less than ',\n NUMDEN : 'Denominator cannot be less than numerator',\n EMPTY : 'Field(s) cannot be empty'}\n\n ngOnInit(): void {\n this.formGroupName = this.getQualityFormQGroup() || null;\n this.errTexts.DEN = 'Denominator cannot be less than ' + this.formQuestion.minDenominator.toString();\n if (this.formGroupName) {\n this.responseSub$ = this.qualityForm\n .get(this.formGroupName)\n .valueChanges.subscribe(() => {\n this.updateValues();\n });\n this.numSub$ = this.qualityForm\n .get(this.formGroupName + '.FormQResponses.1')\n .valueChanges.subscribe(() => {\n this.updateValues(1);\n });\n this.denSub$ = this.qualityForm\n .get(this.formGroupName + '.FormQResponses.2')\n .valueChanges.subscribe(() => {\n this.updateValues(2);\n });\n this.allSubs = [this.responseSub$, this.numSub$, this.denSub$];\n }\n\n this.getPercent();\n this.getPoints();\n\n this.qualityForm\n .get(this.formGroupName + '.FormQResponses')\n .setValidators(() =>\n this.errors && this.errors.length > 0\n ? { numeratorDenominator: true }\n : null\n );\n\n this.updateValues(2);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const changed =\n changes.questionsDisabled.previousValue !==\n changes.questionsDisabled.currentValue;\n if (changed) {\n if (changes.questionsDisabled.currentValue === true) {\n this.qualityForm.get(this.formGroupName).disable({ emitEvent: false });\n this.qualityForm\n .get(this.formGroupName)\n .updateValueAndValidity({ onlySelf: true, emitEvent: false });\n } else if (changes.questionsDisabled.currentValue === false) {\n if (!changes.questionsDisabled.isFirstChange()) {\n this.qualityForm.get(this.formGroupName).enable({ emitEvent: false });\n this.qualityForm\n .get(this.formGroupName)\n .updateValueAndValidity({ onlySelf: true, emitEvent: false });\n }\n }\n }\n }\n\n ngOnDestroy(): void {\n this.allSubs.forEach((sub) => sub.unsubscribe());\n }\n\n public getQualityFormQGroup(): string {\n switch (this.formQuestion?.questionID) {\n case 1:\n return 'FormQ1Fall';\n case 2:\n return 'FormQ2Diabetes';\n case 3:\n return 'FormQ3Breast';\n case 4:\n return 'FormQ4Colorectal';\n case 5:\n return 'FormQ5Controlling';\n case 6:\n return 'FormQ6Screening';\n case 7:\n return 'FormQ7PreventFlu';\n case 49:\n return 'FormQ49PreventTobacco';\n default:\n break;\n }\n }\n\n public toggleSubmitFormInfoText(): void {\n this.isInfoTextOpen = !this.isInfoTextOpen;\n }\n\n public updateValues(numDenIndex?: number): void {\n this.timeStamp(numDenIndex || null);\n if (numDenIndex) {\n this.toggleErrorTexts(numDenIndex || null);\n }\n this.getPercent();\n this.getPoints();\n }\n\n public timeStamp(numDenIndex?: number): void {\n const newTimeStamp = new Date().toJSON();\n this.qualityForm.patchValue(\n { LastUpdateDateTime: newTimeStamp },\n { emitEvent: false }\n );\n this.qualityForm\n .get(this.formGroupName)\n .patchValue({ LastUpdateDateTime: newTimeStamp }, { emitEvent: false });\n if (numDenIndex) {\n this.qualityForm\n .get(this.formGroupName + '.FormQResponses.0')\n .patchValue({ LastUpdateDateTime: newTimeStamp }, { emitEvent: false });\n this.qualityForm\n .get(this.formGroupName + '.FormQResponses.' + numDenIndex.toString())\n .patchValue({ LastUpdateDateTime: newTimeStamp }, { emitEvent: false });\n }\n }\n\n public toggleErrorTexts(numDenIndex?: number): void {\n if (numDenIndex) {\n const num = this.qualityForm.get(\n this.formGroupName + '.FormQResponses.1.ResponsePointValue'\n ) as UntypedFormControl;\n const den = this.qualityForm.get(\n this.formGroupName + '.FormQResponses.2.ResponsePointValue'\n ) as UntypedFormControl;\n\n // Check if numerator OR denominator is empty\n const emptyExists = this.errors.some((e) => e === this.errTexts.EMPTY);\n if (\n (num.touched && num.value === null) ||\n (den.touched && den.value === null)\n ) {\n if (!emptyExists) {\n this.errors.push(this.errTexts.EMPTY);\n }\n } else {\n if (emptyExists) {\n const i = this.errors.indexOf(this.errTexts.EMPTY);\n this.errors.splice(i, 1);\n }\n }\n // Check if denominator is LESS THAN numerator\n const numDenExists = this.errors.some((e) => e === this.errTexts.NUMDEN);\n if (num.value >= 0 && den.value >= 0 && num.value > den.value) {\n if (!numDenExists) {\n this.errors.push(this.errTexts.NUMDEN);\n }\n } else {\n if (numDenExists) {\n const i = this.errors.indexOf(this.errTexts.NUMDEN);\n this.errors.splice(i, 1);\n }\n }\n // Check if numerator is LESS THAN 0\n const numExists = this.errors.some((e) => e === this.errTexts.NUM);\n if (num.value < 0 && num.value !== null) {\n if (!numExists) {\n this.errors.push(this.errTexts.NUM);\n }\n } else {\n if (numExists) {\n const i = this.errors.indexOf(this.errTexts.NUM);\n this.errors.splice(i, 1);\n }\n }\n // Check if denominator is LESS THAN minimum denominator\n const denExists = this.errors.some((e) => e === this.errTexts.DEN);\n if (den.value < this.formQuestion.minDenominator && den.value !== null) {\n //Check if both den and num are 0, if so allow it as an exception\n if (den.value == 0 && num.value == 0) {\n if (denExists) {\n const i = this.errors.indexOf(this.errTexts.DEN);\n this.errors.splice(i, 1);\n }\n }\n else {\n if (!denExists) {\n this.errors.push(this.errTexts.DEN);\n }\n }\n } else {\n if (denExists) {\n const i = this.errors.indexOf(this.errTexts.DEN);\n this.errors.splice(i, 1);\n }\n }\n }\n }\n\n public isNumDenValid(): boolean {\n const num = this.qualityForm.get(\n this.formGroupName + '.FormQResponses.1.ResponsePointValue'\n ) as UntypedFormControl;\n const den = this.qualityForm.get(\n this.formGroupName + '.FormQResponses.2.ResponsePointValue'\n ) as UntypedFormControl;\n if (num.valid && den.valid) {\n if (num.value >= 0 && den.value >= 0) {\n if (num.value <= den.value) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n } else if ((num.dirty || num.touched) && (den.dirty || den.touched)) {\n if (num.value < 0 && den.value < 1) {\n return false;\n }\n } else if ((num.dirty || num.touched) && (den.pristine || den.untouched)) {\n if (num.value < 0) {\n return false;\n }\n } else if ((den.dirty || den.touched) && (num.pristine || num.untouched)) {\n if (den.value < 1) {\n return false;\n }\n } else {\n return false;\n }\n }\n\n public getPercent(): void {\n const num = this.qualityForm.get(\n this.formGroupName + '.FormQResponses.1.ResponsePointValue'\n ) as UntypedFormControl;\n const den = this.qualityForm.get(\n this.formGroupName + '.FormQResponses.2.ResponsePointValue'\n ) as UntypedFormControl;\n if (this.isNumDenValid()) {\n const percent = ((num.value / den.value) * 100).toFixed(3);\n this.percent = Number(percent);\n if (isNaN(this.percent)) {\n this.percent = 0;\n }\n this.percentRounded = Math.round((this.percent + Number.EPSILON) * 100) / 100;\n this.percentRoundedGraph = Math.round((this.percent + Number.EPSILON))\n }\n }\n\n public getPoints(): void {\n const num = this.qualityForm.get(\n this.formGroupName + '.FormQResponses.1.ResponsePointValue'\n ) as UntypedFormControl;\n const den = this.qualityForm.get(\n this.formGroupName + '.FormQResponses.2.ResponsePointValue'\n ) as UntypedFormControl;\n if (this.formQuestion?.isLowPointsIdeal) {\n this.newPoints = this.getPointsLow(this.percent);\n if (this.newPoints < 3) {\n this.patchPoints(3);\n } else {\n if (num.value == 0 && den.value == 0) {\n this.patchPoints(3);\n }\n else {\n this.patchPoints(this.newPoints);\n }\n }\n } else {\n this.newPoints = this.getPointsHigh(this.percent);\n if (this.newPoints < 3) {\n if (num.value == 0 && den.value == 0) {\n this.patchPoints(3);\n }\n else {\n this.patchPoints(3);\n }\n } else {\n this.patchPoints(this.newPoints);\n }\n }\n }\n\n public patchPoints(points: number): void {\n this.qualityForm\n .get(this.formGroupName + '.FormQResponses.0')\n .patchValue({ ResponsePointValue: points }, { emitEvent: false });\n }\n\n private getPointsHigh(percent: number): number {\n const x = percent;\n switch (true) {\n case (x >= 0 && x<= 1.5):\n return 3;\n break;\n case (x >= 1.501 && x<= 4.5):\n return 3.1;\n break;\n case (x >= 4.501 && x<= 7.5):\n return 3.2;\n break;\n case (x >= 7.501 && x<= 10.5):\n return 3.3;\n break;\n case (x >= 10.501 && x<= 13.5):\n return 3.4;\n break;\n case (x >= 13.501 && x<= 16.499):\n return 3.5;\n break;\n case (x >= 16.5 && x<= 19.499):\n return 3.6;\n break;\n case (x >= 19.5 && x<= 22.499):\n return 3.7;\n break;\n case (x >= 22.5 && x<= 25.5):\n return 3.8;\n break;\n case (x >= 25.501 && x<= 29.999):\n return 3.9;\n break;\n case (x >= 30 && x<= 30.5):\n return 4;\n break;\n case (x >= 30.501 && x<= 31.5):\n return 4.1;\n break;\n case (x >= 31.501 && x<= 32.5):\n return 4.2;\n break;\n case (x >= 32.501 && x<= 33.5):\n return 4.3;\n break;\n case (x >= 33.501 && x<= 34.5):\n return 4.4;\n break;\n case (x >= 34.501 && x<= 35.499):\n return 4.5;\n break;\n case (x >= 35.5 && x<= 36.499):\n return 4.6;\n break;\n case (x >= 36.5 && x<= 37.499):\n return 4.7;\n break;\n case (x >= 37.5 && x<= 38.5):\n return 4.8;\n break;\n case (x >= 38.501 && x<= 39.999):\n return 4.9;\n break;\n case (x >= 40 && x<= 40.5):\n return 5;\n break;\n case (x >= 40.501 && x<= 41.5):\n return 5.1;\n break;\n case (x >= 41.501 && x<= 42.5):\n return 5.2;\n break;\n case (x >= 42.501 && x<= 43.5):\n return 5.3;\n break;\n case (x >= 43.501 && x<= 44.5):\n return 5.4;\n break;\n case (x >= 44.501 && x<= 45.499):\n return 5.5;\n break;\n case (x >= 45.5 && x<= 46.499):\n return 5.6;\n break;\n case (x >= 46.5 && x<= 47.499):\n return 5.7;\n break;\n case (x >= 47.5 && x<= 48.5):\n return 5.8;\n break;\n case (x >= 48.501 && x<= 49.999):\n return 5.9;\n break;\n case (x >= 50 && x<= 50.5):\n return 6;\n break;\n case (x >= 50.501 && x<= 51.5):\n return 6.1;\n break;\n case (x >= 51.501 && x<= 52.5):\n return 6.2;\n break;\n case (x >= 52.501 && x<= 53.5):\n return 6.3;\n break;\n case (x >= 53.501 && x<= 54.5):\n return 6.4;\n break;\n case (x >= 54.501 && x<= 55.499):\n return 6.5;\n break;\n case (x >= 55.5 && x<= 56.499):\n return 6.6;\n break;\n case (x >= 56.5 && x<= 57.499):\n return 6.7;\n break;\n case (x >= 57.5 && x<= 58.5):\n return 6.8;\n break;\n case (x >= 58.501 && x<= 59.999):\n return 6.9;\n break;\n case (x >= 60 && x<= 60.5):\n return 7;\n break;\n case (x >= 60.501 && x<= 61.5):\n return 7.1;\n break;\n case (x >= 61.501 && x<= 62.5):\n return 7.2;\n break;\n case (x >= 62.501 && x<= 63.5):\n return 7.3;\n break;\n case (x >= 63.501 && x<= 64.5):\n return 7.4;\n break;\n case (x >= 64.501 && x<= 65.499):\n return 7.5;\n break;\n case (x >= 65.5 && x<= 66.499):\n return 7.6;\n break;\n case (x >= 66.5 && x<= 67.499):\n return 7.7;\n break;\n case (x >= 67.5 && x<= 68.5):\n return 7.8;\n break;\n case (x >= 68.501 && x<= 69.999):\n return 7.9;\n break;\n case (x >= 70 && x<= 70.5):\n return 8;\n break;\n case (x >= 70.501 && x<= 71.5):\n return 8.1;\n break;\n case (x >= 71.501 && x<= 72.5):\n return 8.2;\n break;\n case (x >= 72.501 && x<= 73.5):\n return 8.3;\n break;\n case (x >= 73.501 && x<= 74.5):\n return 8.4;\n break;\n case (x >= 74.501 && x<= 75.499):\n return 8.5;\n break;\n case (x >= 75.5 && x<= 76.499):\n return 8.6;\n break;\n case (x >= 76.5 && x<= 77.499):\n return 8.7;\n break;\n case (x >= 77.5 && x<= 78.5):\n return 8.8;\n break;\n case (x >= 78.501 && x<= 79.999):\n return 8.9;\n break;\n case (x >= 80 && x<= 80.5):\n return 9;\n break;\n case (x >= 80.501 && x<= 81.5):\n return 9.1;\n break;\n case (x >= 81.501 && x<= 82.5):\n return 9.2;\n break;\n case (x >= 82.501 && x<= 83.5):\n return 9.3;\n break;\n case (x >= 83.501 && x<= 84.5):\n return 9.4;\n break;\n case (x >= 84.501 && x<= 85.499):\n return 9.5;\n break;\n case (x >= 85.5 && x<= 86.499):\n return 9.6;\n break;\n case (x >= 86.5 && x<= 87.499):\n return 9.7;\n break;\n case (x >= 87.5 && x<= 88.5):\n return 9.8;\n break;\n case (x >= 88.501 && x<= 89.999):\n return 9.9;\n break;\n case (x >= 90 && x<= 100):\n return 10;\n break;\n default:\n return;\n }\n }\n\n\n private getPointsLow(percent: number): number {\n const x = percent;\n switch (true) {\n case (x <= 100 && x>= 98.5):\n return 3;\n break;\n case (x <= 98.499 && x>= 95.5):\n return 3.1;\n break;\n case (x <= 95.499 && x>= 92.5):\n return 3.2;\n break;\n case (x <= 92.499 && x>= 89.5):\n return 3.3;\n break;\n case (x <= 89.499 && x>= 86.5):\n return 3.4;\n break;\n case (x <= 86.499 && x>= 83.501):\n return 3.5;\n break;\n case (x <= 83.5 && x>= 80.501):\n return 3.6;\n break;\n case (x <= 80.5 && x>= 77.501):\n return 3.7;\n break;\n case (x <= 77.5 && x>= 74.5):\n return 3.8;\n break;\n case (x <= 74.499 && x>= 70.001):\n return 3.9;\n break;\n case (x <= 70 && x>= 69.5):\n return 4;\n break;\n case (x <= 69.499 && x>= 68.5):\n return 4.1;\n break;\n case (x <= 68.499 && x>= 67.5):\n return 4.2;\n break;\n case (x <= 67.499 && x>= 66.5):\n return 4.3;\n break;\n case (x <= 66.499 && x>= 65.5):\n return 4.4;\n break;\n case (x <= 65.499 && x>= 64.501):\n return 4.5;\n break;\n case (x <= 64.5 && x>= 63.501):\n return 4.6;\n break;\n case (x <= 63.5 && x>= 62.501):\n return 4.7;\n break;\n case (x <= 62.5 && x>= 61.5):\n return 4.8;\n break;\n case (x <= 61.499 && x>= 60.001):\n return 4.9;\n break;\n case (x <= 60 && x>= 59.5):\n return 5;\n break;\n case (x <= 59.499 && x>= 58.5):\n return 5.1;\n break;\n case (x <= 58.499 && x>= 57.5):\n return 5.2;\n break;\n case (x <= 57.499 && x>= 56.5):\n return 5.3;\n break;\n case (x <= 56.499 && x>= 55.5):\n return 5.4;\n break;\n case (x <= 55.499 && x>= 54.501):\n return 5.5;\n break;\n case (x <= 54.5 && x>= 53.501):\n return 5.6;\n break;\n case (x <= 53.5 && x>= 52.501):\n return 5.7;\n break;\n case (x <= 52.5 && x>= 51.5):\n return 5.8;\n break;\n case (x <= 51.499 && x>= 50.001):\n return 5.9;\n break;\n case (x <= 50 && x>= 49.5):\n return 6;\n break;\n case (x <= 49.499 && x>= 48.5):\n return 6.1;\n break;\n case (x <= 48.499 && x>= 47.5):\n return 6.2;\n break;\n case (x <= 47.499 && x>= 46.5):\n return 6.3;\n break;\n case (x <= 46.499 && x>= 45.5):\n return 6.4;\n break;\n case (x <= 45.499 && x>= 44.501):\n return 6.5;\n break;\n case (x <= 44.5 && x>= 43.501):\n return 6.6;\n break;\n case (x <= 43.5 && x>= 42.501):\n return 6.7;\n break;\n case (x <= 42.5 && x>= 41.5):\n return 6.8;\n break;\n case (x <= 41.499 && x>= 40.001):\n return 6.9;\n break;\n case (x <= 40 && x>= 39.5):\n return 7;\n break;\n case (x <= 39.499 && x>= 38.5):\n return 7.1;\n break;\n case (x <= 38.499 && x>= 37.5):\n return 7.2;\n break;\n case (x <= 37.499 && x>= 36.5):\n return 7.3;\n break;\n case (x <= 36.499 && x>= 35.5):\n return 7.4;\n break;\n case (x <= 35.499 && x>= 34.501):\n return 7.5;\n break;\n case (x <= 34.5 && x>= 33.501):\n return 7.6;\n break;\n case (x <= 33.5 && x>= 32.501):\n return 7.7;\n break;\n case (x <= 32.5 && x>= 31.5):\n return 7.8;\n break;\n case (x <= 31.499 && x>= 30.001):\n return 7.9;\n break;\n case (x <= 30 && x>= 29.5):\n return 8;\n break;\n case (x <= 29.499 && x>= 28.5):\n return 8.1;\n break;\n case (x <= 28.499 && x>= 27.5):\n return 8.2;\n break;\n case (x <= 27.499 && x>= 26.5):\n return 8.3;\n break;\n case (x <= 26.499 && x>= 25.5):\n return 8.4;\n break;\n case (x <= 25.499 && x>= 24.501):\n return 8.5;\n break;\n case (x <= 24.5 && x>= 23.501):\n return 8.6;\n break;\n case (x <= 23.5 && x>= 22.501):\n return 8.7;\n break;\n case (x <= 22.5 && x>= 21.5):\n return 8.8;\n break;\n case (x <= 21.499 && x>= 20.001):\n return 8.9;\n break;\n case (x <= 20 && x>= 19.5):\n return 9;\n break;\n case (x <= 19.499 && x>= 18.5):\n return 9.1;\n break;\n case (x <= 18.499 && x>= 17.5):\n return 9.2;\n break;\n case (x <= 17.499 && x>= 16.5):\n return 9.3;\n break;\n case (x <= 16.499 && x>= 15.5):\n return 9.4;\n break;\n case (x <= 15.499 && x>= 14.501):\n return 9.5;\n break;\n case (x <= 14.5 && x>= 13.501):\n return 9.6;\n break;\n case (x <= 13.5 && x>= 12.501):\n return 9.7;\n break;\n case (x <= 12.5 && x>= 11.5):\n return 9.8;\n break;\n case (x <= 11.499 && x>= 10.001):\n return 9.9;\n break;\n case (x <= 10 && x>= 0):\n return 10;\n break;\n default:\n return;\n }\n }\n}\n","\n
\n
\n
\n \n
\n \n
\n
\n
{{copy.title}}
\n
\n {{copy.submissionPeriod}}\n Due\n {{dueDate | date:'MMM dd'}}\n
\n
\n
\n
\n
\n Fill in the following required fields.\n
\n
\n Practice(s)\n \n
\n\n \n \n
\n \n \n
\n\n
\n
No practices available
\n
\n
\n
\n At least one practice is required\n
\n
\n
\n \n\n
\n \n \n \n
\n\n
\n \n \n
\n
\n Exemption Special Status required\n
\n
\n
\n
\n \n \n
\n
\n EHR Vendor required\n
\n
\n
\n \n
\n \n \n \n \n
\n
\n Data Source required\n
\n
\n
\n
\n
\n
\n \n \n \n \n
\n
\n Patient Population required\n
\n
\n
\n
\n
\n
\n
\n Upload Quality Measures Report\n \n
\n
\n
\n
\n \n \n
\n
{{ uploadedFileName }}
\n
\n
\n
\n Must upload file\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n \n
\n
\n You are exempt from submitting quality data at this time due to the\n special status selected.\n
\n
\n \n
\n \n
\n
\n
\n
\n {{ totalPointsRounded || 0 }}{{totalPointsRoundedText}}\n
\n
\n
\n
\n
\n
\n \n \n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n\n\n
\n
\n \n
\n
\n
{{copy.overviewTitle}}
\n
\n {{copy.submissionPeriod}}\n Due\n {{dueDate | date:'MMM dd'}}\n
\n
\n
\n
\n

Welcome!

\n

{{copy.requirements}}

\n

\n {{copy.instructionsPart1}}{{copy.submissionPeriod}}{{copy.instructionsPart2}}\n

\n

{{ copy.dueDate3rdParagraph }}

\n
\n {{copy.noteTextPart1}}{{copy.noteTextPart2}}\n {{copy.noteTextPart3}}{{copy.noteTextPart4}}\n
\n
\n
\n {{copy.disclaimer}}\n
\n
\n
\n
\n
= 2\">\n \n Step {{stepDataSource}}\n \n
\n

\n Select Submission Type\n

\n

\n {{copy.instructionDataSrc}}\n

\n \n
\n
\n\n
\n \n Step {{stepSpecialStatus}}\n \n
\n

\n Review Special Status Exemptions\n

\n

\n {{copy.stepSpecialStatus1Text}}\n

\n

\n {{copy.stepSpecialStatus2Text}}\n

\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
Practice Name
\n
\n
Exemption Status
\n
\n
Remove
\n
\n No Exemptions\n
{{ statusSummary.Practice }}\n \n \n \n Remove\n
\n\n
\n \n Step {{stepAddEdit}}\n \n
\n

\n Add/Edit Forms\n

\n

\n {{copy.stepAddEditText}}\n {{dueDate | date:'MMMM dd, yyyy'}}.\n

\n
\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
Name
\n
\n
Total Points
\n
\n
Submitter
\n
\n
Date/Time
\n
\n
Status
\n
\n
Edit
\n
\n No Submissions\n
\n {{ submission.Practice }}\n
\n Special Status: {{ submission.SpecialStatus }}\n
\n
{{ submission.TotalPoints | number: \"1.2-2\" }}{{ submission.SubmitterEmail }}{{ submission.LastUpdateDateTime | date: \"short\" }}{{ submission.ISComplete ? \"Complete\" : \"Pending\" }}\n Edit\n
\n
\n
\n
\n
\n \n
\n\n \n
\n
\n
\n
\n\n
\n
\n
\n
\n
Remove Special Status Exemption
\n
\n
\n
\n Are you sure you would like to remove this Special Status Exemption\n submission?\n
\n
\n \n \n
\n
\n
\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n UntypedFormArray,\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport {\n CaravanPracticeDropdown,\n CaravanSpecialStatus,\n FormResponses,\n FormSubmission,\n SpecialStatusSummary,\n UpdateQualityStatusParams,\n} from '@shared/models/forms/forms-backend';\nimport { QualityFormQuestion } from '@shared/models/forms/forms-frontend';\nimport {\n QUALITY_FORM_QUESTIONS,\n QUALITY_FORM_TOOLTIPS,\n} from './submit-quality';\nimport { Subscription, Observable, forkJoin } from 'rxjs';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { UserInfo } from '@shared/services/auth-service/auth-interface';\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service';\nimport { finalize } from 'rxjs/operators';\nimport { ToastrService } from 'ngx-toastr';\nimport { FormConstants, QualityFormSettings } from '@shared/models/forms/form-constants';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { SubmitFeatureConstants } from '@shared/models/module-constants';\nimport { CaravanFormSubmissionPeriod } from '@shared/models/forms/form-submissionID-model';\nimport { isThursday } from 'date-fns';\nimport {submitFormSharedFunctions} from '../shared/functions/submit-form-functions';\nimport { CustomValidators } from '@shared/validators';\n@Component({\n selector: 'coach-submit-quality',\n templateUrl: './submit-quality.component.html',\n host: {\n class: 'row u-fill',\n },\n})\nexport class SubmitQualityComponent implements OnInit, OnDestroy {\n // Get Data\n public qualityFormQuestions: QualityFormQuestion[] = QUALITY_FORM_QUESTIONS;\n public practiceList: CaravanPracticeDropdown[] = [];\n public specialStatusList: CaravanSpecialStatus[] = [];\n public ehrVendorList: string[];\n public dataSourceList: string[];\n public dataTypeList: string[];\n public tooltips: Object = QUALITY_FORM_TOOLTIPS;\n public FormQNames: string[] = [\n 'FormQ1Fall',\n 'FormQ2Diabetes',\n 'FormQ3Breast',\n 'FormQ4Colorectal',\n 'FormQ5Controlling',\n 'FormQ6Screening',\n 'FormQ7PreventFlu',\n 'FormQ49PreventTobacco',\n ];\n public formSubmissions: FormSubmission[];\n public specialStatusSummary: SpecialStatusSummary[];\n public caravanFormSubmissionPeriod: CaravanFormSubmissionPeriod[];\n public selectedFormSubPeriod: number;\n public submitPeriodParam: number;\n public dueDate: Date;\n\n // Main Form\n public qualityForm: UntypedFormGroup;\n public totalPoints: number = 0;\n public totalPointsRounded: number = this.totalPoints;\n public maxPoints = 80;\n public totalPointsRoundedText = ` out of ${this.maxPoints} points`;\n\n // Practice Select \"Sub\" Form\n public practicesForm: UntypedFormGroup;\n\n // isExempt \"Sub\" Form\n public exemptForm: UntypedFormGroup;\n public showSpecialStatus: boolean;\n public areQuestionsHidden: boolean = false;\n\n // fileUpload \"Sub\" Form\n public uploadForm: UntypedFormGroup;\n public uploadedFileName: string = 'No file chosen';\n\n // User Info\n public isAuthenticated$: Observable;\n public userInfo$: Observable;\n private _isLoggedIn: boolean = false;\n private _currentUser: UserInfo;\n\n // Subscriptions\n public qualityFormSub: Subscription;\n public practicesFormSub: Subscription;\n public exemptFormSub: Subscription;\n public uploadFormSub: Subscription;\n public authSub: Subscription;\n public userSub: Subscription;\n public allSubs: Subscription[];\n\n // Other UI\n public isQueueOpen: boolean = true;\n public isFormQueueOpen: boolean = true;\n public isAddEditFormActive: boolean = false;\n public isInfoTextOpen: boolean = false;\n public infoText: string;\n public readonly OtherSpecialStatusId = 23;\n public readonly QualityFormId = 2;\n public showRemoveModal = false;\n public formSaving = false;\n private exemptionToRemove: SpecialStatusSummary;\n public shwSpecialStatus: boolean = true;\n public useCurrentHierarchy: boolean = true;\n public stepDataSource = '1';\n public stepSpecialStatus = '2';\n public stepAddEdit= '3';\n\n public submitFormSharedFunction: submitFormSharedFunctions = new submitFormSharedFunctions();\n readonly formsAdminFormFeatureFlag: string = SubmitFeatureConstants.FormsAdminFormFeatureFlag;\n readonly formsAdminFormFeature: number = SubmitFeatureConstants.FormsAdminFormFeature;\n\n // Copy\n public copy: QualityFormSettings = FormConstants.Quality;\n\n // Convenience Getters\n public get qf(): UntypedFormGroup {\n return this.qualityForm;\n }\n public get isExempt(): boolean {\n return this.exemptForm.get('isExempt').value;\n }\n public get specialStatus(): number | string {\n return this.qf.get('SpecialStatus').value;\n }\n\n // Create Practice \"Sub\" Form\n get practicesFormArray() {\n return this.practicesForm.get('practices') as UntypedFormArray;\n }\n private addPracticeCheckboxes() {\n this.practiceList.forEach(() =>\n this.practicesFormArray.push(new UntypedFormControl(false))\n );\n }\n\n constructor(\n private _fb: UntypedFormBuilder,\n private _authService: AuthService,\n private _cd: ChangeDetectorRef,\n private qualityService: SubmitFormsService,\n private toastr: ToastrService,\n private router: Router,\n private route: ActivatedRoute,\n private userAccessService: UserAccessService,\n ) {\n this.practicesForm = this._fb.group({\n practices: this._fb.array([]),\n });\n this.addPracticeCheckboxes();\n\n this.exemptForm = this._fb.group({ isExempt: [false] });\n this.uploadForm = this._fb.group({ file: [null, Validators.required] });\n }\n\n ngOnInit(): void {\n this.isAuthenticated$ = this._authService.isAuthenticated$;\n this.userInfo$ = this._authService.userInfo$;\n this.authSub = this.isAuthenticated$.subscribe(\n (isLoggedIn) => {\n this._isLoggedIn = isLoggedIn;\n },\n (error) => {}\n );\n this.userSub = this.userInfo$.subscribe((userInfo) => {\n this._currentUser = userInfo;\n });\n this.route.queryParams\n .subscribe(params => {\n if (params.submitperiod != null){\n this.submitPeriodParam = params.submitperiod;\n }\n\n }\n );\n\n this.qualityService.getSubmitPeriodDetails(this.QualityFormId).subscribe((data) => {\n this.caravanFormSubmissionPeriod = data;\n if (this.submitPeriodParam == null) {\n this.selectedFormSubPeriod = this.caravanFormSubmissionPeriod[0].caravanFormSubmitPeriodID;\n this.dueDate = this.caravanFormSubmissionPeriod[0].dueDate;\n this.updateSubmissionPeriodConfigs(0);\n } else\n {\n this.selectedFormSubPeriod = this.submitPeriodParam;\n this.dueDate = this.caravanFormSubmissionPeriod.find(i => i.caravanFormSubmitPeriodID == this.submitPeriodParam).dueDate;\n this.updateSubmissionPeriodConfigs(this.caravanFormSubmissionPeriod.findIndex(i => i.caravanFormSubmitPeriodID == this.submitPeriodParam));\n }\n\n this.initializeQualityForm();\n\n this.updateOnExempt();\n\n this.refreshFormData();\n });\n }\n\n ngOnDestroy(): void {\n this.allSubs.forEach((sub) => sub.unsubscribe());\n }\n\n public refreshFormData(): void {\n const formID = this.QualityFormId.toString();\n const submissionID = this.selectedFormSubPeriod.toString();\n\n this.qualityService.getStatuses(formID).subscribe((data) => {\n this.specialStatusList = this.getFilteredStatusList(JSON.parse(data));\n });\n\n this.qualityService.getSubmissions(formID, submissionID).subscribe((data) => {\n this.formSubmissions = data;\n });\n\n this.qualityService.getStatusSummary(formID).subscribe((data) => {\n this.specialStatusSummary = data;\n });\n }\n\n private setPractices(data: string, facIds: number[] = []): void {\n if(data != ''){\n this.practiceList = JSON.parse(data);\n this.practicesFormArray.clear();\n this.practiceList?.forEach((practice) => {\n const isSet = facIds.some((x) => x === practice.Fac_ID);\n this.practicesFormArray.push(new UntypedFormControl(isSet));\n });\n }\n }\n\n public updateForm() {\n this.updateOnExempt();\n this.calcTotalPoints();\n }\n\n public updateOnExempt() {\n this.areQuestionsHidden = !this.areQuestionsHidden;\n this.toggleShowSpecialStatus(this.isExempt);\n this.toggleSourceTypeUpload(this.isExempt, this.specialStatus);\n }\n\n public calcTotalPoints() {\n if (!this.areQuestionsHidden) {\n const pointsArray = [];\n this.FormQNames.forEach((q) => {\n const value = this.qf.get(\n q + '.FormQResponses.0.ResponsePointValue'\n ).value;\n pointsArray.push(value);\n });\n // Filter out Nan, null, false\n const pointsArrayFiltered = pointsArray.filter(function (item) {\n return (parseFloat(item) == item);\n });\n\n if (pointsArrayFiltered.length > 0) {\n const totalPoints = pointsArrayFiltered.reduce(\n (accumulator, currentValue) => accumulator + currentValue\n );\n this.qf.patchValue({ TotalPoints: totalPoints }, { emitEvent: false });\n this.qf.get('TotalPoints').enable({ emitEvent: false });\n }\n } else {\n this.qf.patchValue({ TotalPoints: null }, { emitEvent: false });\n this.qf.get('TotalPoints').disable({ emitEvent: false });\n }\n this.totalPointsRounded =\n Math.round((this.qf.get('TotalPoints').value + Number.EPSILON) * 100) /\n 100;\n }\n\n public getFilteredStatusList(\n statuses: CaravanSpecialStatus[]\n ): CaravanSpecialStatus[] {\n const statusList = statuses.filter(\n (s) => s.formID === 2 && s.isDeleted === 0 && s.isVisible === 1\n );\n return statusList;\n }\n\n // Non-Form UI Toggles\n public toggleQueueOpen() {\n this.isQueueOpen = !this.isQueueOpen;\n }\n public toggleFormQueueOpen() {\n this.isFormQueueOpen = !this.isFormQueueOpen;\n }\n public toggleAddEditFormActive() {\n this.isAddEditFormActive = !this.isAddEditFormActive;\n }\n public toggleInfoText(tooltip?) {\n this.isInfoTextOpen = !this.isInfoTextOpen;\n if (this.tooltips[tooltip]) {\n this.infoText = this.tooltips[tooltip].html;\n } else {\n this.infoText = `Additional information may be found at 12 www.cms.gov`;\n }\n }\n\n public selectSubmissionPeriod(submissionPeriodID) {\n this.selectedFormSubPeriod = submissionPeriodID.target.value;\n this.dueDate = this.caravanFormSubmissionPeriod[submissionPeriodID.target.selectedIndex].dueDate;\n this.updateSubmissionPeriodConfigs(submissionPeriodID.target.selectedIndex);\n\n this.initializeQualityForm();\n\n this.updateOnExempt();\n\n this.refreshFormData();\n }\n\n public updateSubmissionPeriodConfigs(submissionPeriodID) {\n const submitPeriod = this.caravanFormSubmissionPeriod[submissionPeriodID];\n for (let config in submitPeriod.configs) {\n if (submitPeriod.configs[config].configValue !== null) {\n if(submitPeriod.configs[config].configName == 'shwSpecialStatus') {\n this.shwSpecialStatus = this.submitFormSharedFunction.getBoolean(submitPeriod.configs[config].configValue);\n this.copy[submitPeriod.configs[config].configName] = this.shwSpecialStatus;\n }\n else if(submitPeriod.configs[config].configName == 'drpDataSource' || submitPeriod.configs[config].configName == 'drpEHR'\n || submitPeriod.configs[config].configName == 'drpPatientPop') {\n this.copy[submitPeriod.configs[config].configName] = submitPeriod.configs[config].configValue.split('|');\n }\n else if(submitPeriod.configs[config].configName == 'useCurrentHierarchy') {\n this.useCurrentHierarchy = this.submitFormSharedFunction.getBoolean(submitPeriod.configs[config].configValue);\n this.copy[submitPeriod.configs[config].configName] = this.useCurrentHierarchy;\n }\n else if(submitPeriod.configs[config].configName == 'tooltipEHRText' || submitPeriod.configs[config].configName == 'tooltipDataSourceText'\n || submitPeriod.configs[config].configName == 'tooltipPatientPopText' || submitPeriod.configs[config].configName == 'tooltipPracticeText'\n || submitPeriod.configs[config].configName == 'tooltipExemptText' || submitPeriod.configs[config].configName == 'tooltipSpecialStatusText'\n || submitPeriod.configs[config].configName == 'tooltipUploadQualityMeasureReportText') {\n this.tooltips[submitPeriod.configs[config].configName].html = submitPeriod.configs[config].configValue.toString();\n }\n else {\n this.copy[submitPeriod.configs[config].configName] = submitPeriod.configs[config].configValue.toString();\n }\n }\n }\n\n this.ehrVendorList = this.copy.drpEHR;\n this.dataSourceList = this.copy.drpDataSource;\n this.dataTypeList = this.copy.drpPatientPop;\n\n this.stepNumbers();\n }\n\n public toggleShowSpecialStatus(isExempt: boolean) {\n if (isExempt) {\n this.showSpecialStatus = true;\n this.qf.get('SpecialStatus').enable({ onlySelf: true, emitEvent: false });\n } else {\n this.showSpecialStatus = false;\n this.qf\n .get('SpecialStatus')\n .disable({ onlySelf: true, emitEvent: false });\n this.qf.get('SpecialStatus').reset(null, { emitEvent: false });\n }\n }\n\n public toggleSourceTypeUpload(isExempt: boolean, status: number | string) {\n const controlSource = this.qf.get('FormQ67DataSource');\n const controlType = this.qf.get('FormQ68DataType');\n if (isExempt) {\n controlSource.disable({ emitEvent: false });\n controlType.disable({ emitEvent: false });\n if (status == 26) {\n this.areQuestionsHidden = false;\n controlSource\n .get('FormQResponses.0.UserResponse')\n .reset(this.dataSourceList[1], { emitEvent: false });\n controlType\n .get('FormQResponses.0.UserResponse')\n .reset(this.dataTypeList[1], { emitEvent: false });\n this.uploadForm.enable({ emitEvent: false });\n this.enableDisableQuestions('enable');\n } else {\n this.areQuestionsHidden = true;\n controlSource\n .get('FormQResponses.0.UserResponse')\n .reset(null, { emitEvent: false });\n controlType\n .get('FormQResponses.0.UserResponse')\n .reset(null, { emitEvent: false });\n this.uploadForm.disable({ emitEvent: false });\n this.uploadForm.get('file').reset(null, { emitEvent: false });\n this.enableDisableQuestions('disable');\n }\n }\n if (!isExempt) {\n this.areQuestionsHidden = false;\n controlSource.enable({ emitEvent: false });\n controlType.enable({ emitEvent: false });\n this.uploadForm.enable({ emitEvent: false });\n this.enableDisableQuestions('enable');\n }\n }\n\n public enableDisableQuestions(enableOrDisable: 'enable' | 'disable') {\n if (enableOrDisable === 'enable') {\n this.FormQNames.forEach((q) => {\n const formQ = this.qf.get(q);\n formQ.enable({ emitEvent: false });\n });\n } else if (enableOrDisable === 'disable') {\n this.FormQNames.forEach((q) => {\n const formQ = this.qf.get(q);\n formQ.disable({ emitEvent: false });\n formQ\n .get('FormQResponses.0.ResponsePointValue')\n .reset(null, { emitEvent: false });\n formQ\n .get('FormQResponses.1.ResponsePointValue')\n .reset(null, { emitEvent: false });\n formQ\n .get('FormQResponses.2.ResponsePointValue')\n .reset(null, { emitEvent: false });\n });\n }\n }\n\n public onFileChange(event): void {\n if (event.target.files && event.target.files.length) {\n const file = event.target.files[0];\n this.uploadForm.patchValue({ file: file });\n this.uploadedFileName = file.name || 'File name not found';\n this._cd.markForCheck();\n } else {\n this.resetUploadForm();\n }\n this.uploadForm.get('file').markAsTouched();\n }\n\n private resetUploadForm(): void {\n this.uploadForm.reset({ file: null });\n this.uploadedFileName = 'No file chosen';\n this._cd.markForCheck();\n }\n\n public updateSelectedPractices() {\n const selectedPractices: CaravanPracticeDropdown[] = this.practicesForm\n .get('practices')\n .value.map((selected, i) => (selected ? this.practiceList[i] : null))\n .filter((p) => p !== null);\n // update fac_id\n const selectedPracticeFacIds = selectedPractices\n .map((p) => p.Fac_ID)\n .toString();\n this.qf.patchValue(\n { Tier4_FacID: selectedPracticeFacIds },\n { emitEvent: false }\n );\n this.qf.get('Tier4_FacID').markAsTouched({ onlySelf: true });\n // update names\n const selectedPracticeNames = selectedPractices\n .map((p) => p.Name)\n .toString();\n this.qf.patchValue({ Tier4_Name: selectedPracticeNames });\n this.qf.get('Tier4_Name').markAsTouched({ onlySelf: true });\n }\n\n public removeQuestions(formCopy) {\n const copy = formCopy;\n delete copy.FormQ1Fall;\n delete copy.FormQ2Diabetes;\n delete copy.FormQ3Breast;\n delete copy.FormQ4Colorectal;\n delete copy.FormQ5Controlling;\n delete copy.FormQ6Screening;\n delete copy.FormQ7PreventFlu;\n delete copy.FormQ49PreventTobacco;\n delete copy.FormQ67DataSource;\n delete copy.FormQ68DataType;\n return copy;\n }\n\n public onSubmit(isComplete: boolean): void {\n this.calcTotalPoints();\n\n let validSubmit: boolean;\n\n if (this.isExempt) {\n validSubmit = isComplete && this.qf.valid;\n } else {\n validSubmit = isComplete && this.qf.valid && this.uploadForm.valid;\n }\n\n const validDraft = !isComplete;\n\n if (validSubmit) this.toastr.info('Form Submitting', 'Quality Form');\n if (validDraft) this.toastr.info('Draft Saving', 'Quality Form');\n\n if (validSubmit || validDraft) {\n this.qf.controls['isComplete'].setValue(isComplete ? 1 : 0);\n let formCopy = Object.assign({}, this.qf.getRawValue());\n if (this.areQuestionsHidden) {\n formCopy = this.removeQuestions(formCopy);\n }\n\n if (formCopy.SpecialStatus == null) {\n formCopy.SpecialStatus = '';\n }\n\n this.formSaving = true;\n const uploadFile = this.uploadForm.get('file').value;\n this.qualityService\n .save([uploadFile], formCopy)\n .pipe(finalize(() => (this.formSaving = false)))\n .subscribe(\n () => {\n if (validSubmit)\n this.toastr.success('Form Submitted', 'Quality Form');\n if (validDraft) this.toastr.success('Draft Saved', 'Quality Form');\n this.refreshFormData();\n this.resetForms();\n this.toggleAddEditFormActive();\n },\n (err) => {\n console.error(err);\n this.toastr.error('Failed To Save', 'Quality Form');\n }\n );\n } else if (isComplete) {\n this.qf.markAllAsTouched();\n this.uploadForm.markAllAsTouched();\n } else if (!isComplete) {\n this.uploadForm.markAllAsTouched();\n }\n }\n\n public cancel(): void {\n this.resetForms();\n this.toggleAddEditFormActive();\n }\n\n public initializeQualityForm(): void {\n function quarter_of_the_year(date) {\n const month = date.getMonth() + 1;\n return Math.ceil(month / 3);\n }\n\n const newDate = new Date();\n const userID = this._currentUser?.dnn_id || null;\n const userEmail = this._currentUser?.email || null;\n const nowJson = newDate.toJSON();\n const nowQtr = quarter_of_the_year(newDate);\n\n this.qualityForm = this._fb.group({\n FormID: [2],\n FormVersionID: [3],\n FormName: ['Quality'],\n FormCategoryID: [1],\n Email: [userEmail],\n Tier4_FacID: [null, Validators.required],\n Tier4_Name: [null, Validators.required],\n SpecialStatus: [null, Validators.required],\n EHRVendor: [null, Validators.required],\n RegReportOne: [null],\n RegReportTwo: [null],\n FormQuarter: [nowQtr],\n CEHRT: [2020],\n FormCreateDateTime: [nowJson],\n CreatedByUserID: [userID],\n ClosedDateTime: [null],\n LastUpdateUserID: [userID],\n LastUpdateDateTime: [nowJson],\n isComplete: [0],\n TotalPoints: [0],\n UserFormID: [null],\n UserID: [userID],\n SubmitPeriodID: [this.selectedFormSubPeriod.toString()],\n FormQ1Fall: this._fb.group({\n QuestionID: [1],\n QuestionText: ['Falls: Screening for Future Falls Risk'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this._fb.array([\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, Validators.min(0)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, CustomValidators.greaterThanMinOrZero(this.qualityFormQuestions[0].minDenominator)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ2Diabetes: this._fb.group({\n QuestionID: [2],\n QuestionText: ['Diabetes: Hemoglobin A1c Poor Control (>9.0%)'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this._fb.array([\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, Validators.min(0)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, CustomValidators.greaterThanMinOrZero(this.qualityFormQuestions[1].minDenominator)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ3Breast: this._fb.group({\n QuestionID: [3],\n QuestionText: ['Breast Cancer Screening'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this._fb.array([\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, Validators.min(0)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, CustomValidators.greaterThanMinOrZero(this.qualityFormQuestions[3].minDenominator)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ4Colorectal: this._fb.group({\n QuestionID: [4],\n QuestionText: ['Colorectal Cancer Screening'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this._fb.array([\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, Validators.min(0)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, CustomValidators.greaterThanMinOrZero(this.qualityFormQuestions[4].minDenominator)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ5Controlling: this._fb.group({\n QuestionID: [5],\n QuestionText: ['Controlling High Blood Pressure'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this._fb.array([\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, Validators.min(0)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, CustomValidators.greaterThanMinOrZero(this.qualityFormQuestions[2].minDenominator)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ6Screening: this._fb.group({\n QuestionID: [6],\n QuestionText: [\n 'Preventive Care and Screening: Screening for Depression and Follow-Up Plan',\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this._fb.array([\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, Validators.min(0)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, CustomValidators.greaterThanMinOrZero(this.qualityFormQuestions[7].minDenominator)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ7PreventFlu: this._fb.group({\n QuestionID: [7],\n QuestionText: ['Preventive Care and Screening: Influenza Immunization'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this._fb.array([\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, Validators.min(0)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, CustomValidators.greaterThanMinOrZero(this.qualityFormQuestions[5].minDenominator)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ49PreventTobacco: this._fb.group({\n QuestionID: [49],\n QuestionText: [\n 'Preventive Care and Screening: Tobacco Use: Screening and Cessation Intervention',\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this._fb.array([\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, Validators.min(0)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n this._fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [Validators.required, CustomValidators.greaterThanMinOrZero(this.qualityFormQuestions[6].minDenominator)],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ67DataSource: this._fb.group({\n QuestionID: [67],\n QuestionText: ['Patient Population (Data Source)'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this._fb.array([\n this._fb.group({\n UserResponse: [null, Validators.required],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ68DataType: this._fb.group({\n QuestionID: [68],\n QuestionText: ['Patient Population (Data Type)'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this._fb.array([\n this._fb.group({\n UserResponse: [null, Validators.required],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n });\n\n this.qualityFormSub = this.qf.valueChanges.subscribe(() => {\n this.updateForm();\n });\n this.practicesFormSub = this.practicesForm.valueChanges.subscribe(() => {\n this.updateSelectedPractices();\n });\n this.exemptFormSub = this.exemptForm.valueChanges.subscribe(() => {\n this.updateForm();\n });\n this.uploadFormSub = this.uploadForm.valueChanges.subscribe(() => {});\n this.allSubs = [\n this.qualityFormSub,\n this.practicesFormSub,\n this.exemptFormSub,\n this.uploadFormSub,\n this.authSub,\n this.userSub,\n ];\n }\n\n resetForms(): void {\n this.initializeQualityForm();\n\n this.exemptForm.reset();\n this.resetUploadForm();\n\n this.updateForm();\n }\n\n newSubmission(): void {\n const submissionID = this.selectedFormSubPeriod.toString();\n const specialStatusIncluded = this.shwSpecialStatus? '1':'0';\n const useCurrentHierarchy = this.useCurrentHierarchy? '1':'0';\n this.qualityService\n .getListOfSpecificTier(null, SubmitFeatureConstants.QualityFormFeature, submissionID, specialStatusIncluded, useCurrentHierarchy)\n .subscribe((data) => {\n this.setPractices(data);\n this.toggleAddEditFormActive();\n });\n this.initializeQualityForm();\n }\n\n editForm(submission: FormSubmission): void {\n const submissionID = this.selectedFormSubPeriod.toString();\n const specialStatusIncluded = this.shwSpecialStatus? '1':'0';\n const useCurrentHierarchy = this.useCurrentHierarchy? '1':'0';\n forkJoin([\n this.qualityService.getListOfSpecificTier(\n submission.UserFormID,\n SubmitFeatureConstants.QualityFormFeature,\n submissionID,\n specialStatusIncluded,\n useCurrentHierarchy\n ),\n this.qualityService.getFormResponses(submission.UserFormID),\n ]).subscribe((data) => {\n const submission = data[1][0];\n const facultyIds = submission.SelectedFacs.split('; ').map((id) =>\n parseInt(id)\n );\n const tier4 = JSON.parse(data[0]);\n if (tier4[0].Name) {\n !submission.SelectedFacName\n ? (submission.SelectedFacName = tier4[0].Name)\n : null;\n }\n this.setPractices(data[0], facultyIds);\n this.loadFromSubmission(submission);\n this.toggleAddEditFormActive();\n });\n }\n\n loadFromSubmission(submission: FormResponses): void {\n this.qualityForm.get('EHRVendor').setValue(submission.EHRVendor);\n this.qualityForm.get('UserFormID').setValue(submission.UserFormID);\n this.qualityForm.get('TotalPoints').setValue(submission.TotalPoints);\n this.qualityForm.get('RegReportOne').setValue(submission.regreportone);\n this.qualityForm.get('RegReportTwo').setValue(submission.regreporttwo);\n this.qualityForm.get('Tier4_Name').setValue(submission.SelectedFacName);\n this.qualityForm.get('Tier4_FacID').setValue(submission.SelectedFacs);\n\n if (submission.SpecialStatusID && submission.SpecialStatusID !== '0') {\n this.exemptForm.get('isExempt').setValue(true);\n this.qualityForm\n .get('SpecialStatus')\n .setValue(parseInt(submission.SpecialStatusID));\n }\n\n const dataSource = submission.Q.find((x) => x.ID === 67);\n const patientPopulation = submission.Q.find((x) => x.ID === 68);\n\n this.qualityForm\n .get('FormQ67DataSource.FormQResponses.0.UserResponse')\n .setValue(dataSource?.Response);\n this.qualityForm\n .get('FormQ68DataType.FormQResponses.0.UserResponse')\n .setValue(patientPopulation?.Response);\n\n submission.Q.forEach((question) => {\n for (const property in this.qualityForm.controls) {\n const questionControl = this.qualityForm.get(`${property}.QuestionID`);\n const questionId = questionControl?.value;\n if (questionControl != null && questionId === question.ID) {\n const numerator = this.qualityForm.get(\n `${property}.FormQResponses.1.ResponsePointValue`\n );\n const denominator = this.qualityForm.get(\n `${property}.FormQResponses.2.ResponsePointValue`\n );\n const points = this.qualityForm.get(\n `${property}.FormQResponses.0.ResponsePointValue`\n );\n\n if (numerator != null && denominator != null && points != null) {\n numerator.setValue(Number(question.Numerator));\n denominator.setValue(Number(question.Denominator));\n points.setValue(Number(question.Points));\n }\n }\n }\n });\n\n this.updateForm();\n }\n\n removeSubmission(): void {\n this.exemptionToRemove.IsDeleted = true;\n this.updateSpecialStatus(this.exemptionToRemove);\n this.showRemoveModal = false;\n this.specialStatusSummary.splice(\n this.specialStatusSummary.findIndex(\n (x) =>\n x.specialstatusEntryID === this.exemptionToRemove.specialstatusEntryID\n ),\n 1\n );\n this.exemptionToRemove = null;\n }\n\n removeConfirmation(statusSummary: SpecialStatusSummary): void {\n this.exemptionToRemove = statusSummary;\n this.showRemoveModal = true;\n }\n\n updateSpecialStatus(statusSummary: SpecialStatusSummary): void {\n const params: UpdateQualityStatusParams = {\n formID: this.QualityFormId,\n isDeleted: statusSummary.IsDeleted,\n otherReason: statusSummary.OtherReason,\n specialStatus: statusSummary.SpecialStatusID,\n specialstatusEntryID: statusSummary.specialstatusEntryID,\n userFormID: statusSummary.UserFormID,\n tier: null,\n };\n\n this.qualityService\n .updateQualityStatus(params)\n .subscribe(() => this.refreshFormData());\n }\n\n formsReport(): void {\n this.router.navigate(['quality/formreport'], { relativeTo: this.route.parent });\n }\n\n\n stepNumbers(): void {\n //Starting off with if there is a submission period drop down\n //If there is, it's numbered 1, as it's step 1\n if (this.caravanFormSubmissionPeriod.length >= 2){\n this.stepDataSource = '1';\n }\n else\n {\n //If it isn't going to be shown, we can name it step 0\n this.stepDataSource = '0';\n }\n //Determining if special status selection is going to be displayed\n if(this.shwSpecialStatus == true) {\n //If there is no submission period drop down but special statuses are visible, special statuses are step 1 and add/edit is step 2\n if(this.stepDataSource == '0'){\n this.stepSpecialStatus = '1';\n this.stepAddEdit = '2';\n }\n else{\n //If there is then special statuses is step 2 and add/edit is step 3\n this.stepSpecialStatus = '2';\n this.stepAddEdit = '3';\n }\n }\n //If there is no special status and no submission period drop down, then add/edit is step 1, otherwise add/edit is step 2\n else {\n if(this.stepDataSource == '0'){\n this.stepAddEdit = '1';\n }\n else{\n this.stepAddEdit = '2';\n }\n }\n}\n\n}\n","export enum ComplianceFormAnswer {\n yes = 'yes',\n no = 'no',\n noy = 'noy',\n partial = 'partial',\n yespartial = 'yespartial',\n any = 'any',\n disabled = 'disabled',\n}\n\nexport interface ComplianceFormSubsequentQuestions {\n subQuestionId: string;\n subQuestionReqResp: ComplianceFormAnswer\n}\n\n\nexport interface ComplianceFormQuestionScoring {\n questionAnswer: ComplianceFormAnswer;\n pointValue: number\n}\nexport interface ComplianceFormQuestionChecklistOptions {\n checkId: number;\n checkText: string\n}\nexport interface ComplianceFormQuestion {\n // Draft. Need actual schema.\n code?: string;\n questionId: string;\n number: string;\n infoText?: string;\n questionText: string;\n answer: ComplianceFormAnswer;\n disabled?: boolean;\n standardQuestion: boolean;\n pointValue?: ComplianceFormQuestionScoring[],\n\n textResponseOnly?: boolean;\n checkListResponseOnly?: boolean;\n checkListOptions?: ComplianceFormQuestionChecklistOptions[],\n fileUpload?: boolean;\n requiredIfVisible?: boolean;\n fileText?: string;\n requiredForQuestions?: ComplianceFormSubsequentQuestions[];\n\n}\n\nexport interface ComplianceFormQuestionSection {\n // Draft. Need actual schema.\n id: number;\n name: string;\n questions: ComplianceFormQuestion[];\n}\n\nexport interface ComplianceFormSectionAnswers {\n status: string;\n answers: string[];\n}\n","import { faDoorClosed } from '@fortawesome/free-solid-svg-icons';\nimport {\n ComplianceFormQuestionSection,\n ComplianceFormAnswer,\n} from '../models/forms/compliance-form-question';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\nexport const COMPLIANCE_FORM_QUESTION_SECTIONS: ComplianceFormQuestionSection[] = [\n {\n id: 1,\n name: 'General Compliance Oversight',\n questions: [\n {\n code: '42 CFR 425.300a1',\n questionId: '15',\n number: '1.1',\n infoText:\n 'If your organization has one or more ACO compliance contacts on file with us, the answer to this should be ‘yes.’',\n questionText:\n 'Does your organization have a designated employee(s) who is responsible for ensuring compliance with ACO requirements? ',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.300a3',\n questionId: '16',\n number: '1.2',\n infoText:\n 'To respond \\'yes\\', your organization must have an organizational compliance hotline available to report general compliance concerns. Use of the CVS Ethics Line should be limited to reporting concerns that involve the ACO.',\n questionText:\n 'Does your organization provide an anonymous reporting mechanism (i.e. compliance hotline) for individuals to report potential compliance issues?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.300a3',\n questionId: '17',\n number: '1.3',\n infoText:\n 'The CVS Ethics Line can be reached at by phone at 1-877-287-2040, via the Web at www.cvshealth.com/ethicsline, or via email at EthicsBusinessConduct @CVSHealth.com. Please select \\'yes\\' once you have taken note of this information.',\n questionText:\n 'Does your Compliance Officer know how to get in touch with the ACO Compliance Officer to report issues involving the ACO or ACO operations?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n ],\n },\n {\n id: 2,\n name: 'Policy & Procedure',\n questions: [\n {\n code: '42 CFR 425.208b',\n questionId: '18',\n number: '2.1.1',\n infoText:\n 'Policy templates are avaiable in Coach. Your organization may also utilize its own policies that cover these requirements. Each of the federal laws must be referenced in your organization\\'s policies.',\n questionText:\n 'Does your organization have policies in place that require your organization to comply with the Federal Criminal Law?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.208b | 13 U.S.C. 3729 et seq.',\n questionId: '19',\n number: '2.1.2',\n infoText:\n 'Policy templates are avaiable in Coach. Your organization may also utilize its own policies that cover these requirements. Each of the federal laws must be referenced in your organization\\'s policies.',\n questionText:\n 'Does your organization have policies in place that require your organization to comply with The False Claims Act?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.208b | 42 U.S.C. 1320a-7b(b)',\n questionId: '20',\n number: '2.1.3',\n infoText:\n 'Policy templates are avaiable in Coach. Your organization may also utilize its own policies that cover these requirements. Each of the federal laws must be referenced in your organization\\'s policies.',\n questionText:\n 'Does your organization have policies in place that require your organization to comply with The Anti-Kickback Statute?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.208b | 42 U.S.C. 1320a-7a',\n questionId: '21',\n number: '2.1.4',\n infoText:\n 'Policy templates are avaiable in Coach. Your organization may also utilize its own policies that cover these requirements. Each of the federal laws must be referenced in your organization\\'s policies.',\n questionText:\n 'Does your organization have policies in place that require your organization to comply with The Civil Monetary Penalties law?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.208b | 42 U.S.C. 1395nn',\n questionId: '22',\n number: '2.1.5',\n infoText:\n 'Policy templates are avaiable in Coach. Your organization may also utilize its own policies that cover these requirements. Each of the federal laws must be referenced in your organization\\'s policies.',\n questionText:\n 'Does your organization have policies in place that require your organization to comply with The Physician Self-Referral law?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.304a',\n questionId: '23',\n number: '2.2',\n infoText:\n 'Note that a general patient inducement policy must specifically mention the prohibition on inducing beneficiaries to remain with the ACO. A model policy template is available in Coach. Your organization may also develop its own general beneficiary inducement policy that must include the ACO requirements.',\n questionText:\n 'Does your organization have a policy in place prohibiting the giving of gifts or other remuneration to induce beneficiaries to receive certain items or services or to remain with the ACO?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.314',\n questionId: '24',\n number: '2.3',\n infoText:\n 'This requirement may be satisfied either with a general policy on record retention that specifically addresses ACO requirements or by adopting the model policy that is avaialble in Coach. If using a general record retention policy, please note the Shared Savings Program required retention period is longer than most other record retention periods at ten years from the date of exit from the program. Additional requirements also apply.',\n questionText:\n 'Does your organization have policies in place to ensure ACO related records are retained as required per 42 CFR 425.314?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n requiredForQuestions: [\n {\n subQuestionId: '79',\n subQuestionReqResp: ComplianceFormAnswer.yes\n }\n ],\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n questionId: '79',\n number: '2.3A',\n questionText:\n 'If yes, please upload a copy of your Record Retention policy here.',\n answer: ComplianceFormAnswer.no,\n disabled: true,\n fileUpload: true,\n standardQuestion: false,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.any,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.disabled,\n pointValue: 0,\n }\n ],\n },\n\n ],\n },\n {\n id: 3,\n name: 'Beneficiary Communications (Marketing & Notices)',\n questions: [\n {\n code: '42 CFR 425.312',\n questionId: '26',\n number: '3.1',\n infoText:\n 'The CMS poster is required to be posted in all ACO facilities. Generally, the most visible location to post the poster is in patient waiting areas. Please note that for 2024, CMS has two versions of the poster available. Please answer \\'yes\\' to confirm your organization is using the correct version of the poster.',\n questionText:\n 'Has your organization posted the correct 2024 CMS poster in all ACO facilities? ',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.312',\n questionId: '27',\n number: '3.2',\n infoText:\n 'The Beneficary Information Notification is a separate document from the ACO Poster. The Notice must be provided to all traditional (fee-for-service) Medicare beneficaries who receive a primary care service from your organization. Benficiaries need only receive the Notice once per ACO contract cycle. Snail mail, email, patient portal, or point are care, in any combination, are all acceptable means of dissemination. Distribution of the Notice must be maintained for audit purposes.',\n questionText:\n 'Does your organization have a process in place to ensure Medicare beneficiaries receive the Beneficiary Information Notification at or prior to their first primary care visit of the ACO contract cycle?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.312',\n questionId: '28',\n number: '3.3',\n infoText:\n 'Beneficiaries must be provided with a follow-up communication at their next primary care visit or within 180 days of sending the Notice, whichever comes first. This notification is intended to afford the ACO the opportunity to have a meaningful dialogue with a beneficary about the benefits of receiving care in an ACO. Note that sending the Notice a second time does NOT meet the follow-up communication requirements.',\n questionText:\n 'Does your organization have a process in place to meet the notification follow up requirements?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n requiredForQuestions: [\n {\n subQuestionId: '73',\n subQuestionReqResp: ComplianceFormAnswer.yes\n }\n ],\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n questionId: '73',\n number: '3.3A',\n questionText:\n 'If yes, how is your organization conducting follow-up to the Notice?',\n answer: ComplianceFormAnswer.no,\n textResponseOnly: true,\n disabled: true,\n standardQuestion: false,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.any,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.disabled,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.312',\n questionId: '29',\n number: '3.4',\n infoText:\n 'The Notice must be available to beneficaries upon request in all ACO primary care settings.',\n questionText:\n 'Does your organization make the Beneficiary Information Notification available in primary care settings upon request (i.e. on display or behind the desk with staff who are knowledgeable about the ACO)?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n ],\n },\n {\n id: 4,\n name: 'Compliance Training',\n questions: [\n {\n code: '42 CFR 425.300a4',\n questionId: '30',\n number: '4.1',\n infoText:\n 'All Participant compliance contacts must complete at least one ACO compliance training module via Learn in Coach by August of each performance year to meet this annual requirement. If you are unsure whether or not your organization has participated in an eligible ACO compliance training, please reach out to aco-compliance@signifyhealth.com and we can confirm whether or not this requirement has been met.',\n questionText:\n 'Has your organization\\'s ACO compliance contact completed an ACO compliance training in Coach via the Learn application within the past twelve months?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.208a',\n questionId: '31',\n number: '4.2.1',\n infoText:\n 'ACO compliance training for your staff, executive decision makers and providers may be incorporated into general compliance training. Signify Health conducts compliance updates and training for the ACO Board. Question 4.2.1 refers to the Board of your organization.',\n questionText:\n 'Do the Staff members and Executive Decision Makers (C-Suite, governing body members, organizational board members) at your organization receive compliance training at least annually that includes requirements related to ACO participation?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n\n {\n code: '42 CFR 425.208a',\n questionId: '32',\n number: '4.2.2',\n infoText:\n 'Compliance training for providers should include all providers billing under the ACO TIN, whether or not they are employed, contracted, part-time, per diem, etc. Sample training materials for ACO providers are available in Coach.',\n questionText:\n 'Do the Providers billing under your organization\\'s TIN (all) at your organization receive compliance training at least annually that includes requirements related to ACO participation?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n ],\n },\n {\n id: 5,\n name: 'Provider Oversight',\n questions: [\n {\n code: '42 CFR 425.210b',\n questionId: '34',\n number: '5.1',\n infoText:\n 'All ACO providers (providers that bill under an ACO TIN) must receive a notification that includes a statement that they are required to comply with all Shared Savings Program rules and regulations. Notifying only your employed physicians will not satisfy this requirement.',\n questionText:\n 'Does your organization include a provision in all contracts or arrangements with providers billing under your TIN that requires compliance with Shared Savings Program rules and regulations? Note: This can be satisfied via provider notification, contract amendment, through provider onboarding, etc.',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.210a',\n questionId: '35',\n number: '5.2',\n infoText:\n 'The Participation Agreement is the legal contract signed between your organization and CMS upon entering the Shared Savings Program. If you do not have a copy of your Participation Agreement you may reach out to a member of your regional team or email aco-compliance@signifyhealth.com. You should keep a copy of your Participation Agreement on file to share with any providers who request it.',\n questionText:\n 'Has your organization made a copy of the ACO participation agreement available to all providers billing under your organization\\'s TIN?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n\n {\n code: '42 CFR 425.118c',\n questionId: '36',\n number: '5.3',\n infoText:\n 'Note that submitting provider additions/deletions to Signify Health does not satisfy this requirement as Signify Health does not have the authority to access or modify PECOS.',\n questionText:\n 'Does your organization have a process in place to submit additions and deletions to your PECOS provider list within 30 days of the effective change?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.304b',\n questionId: '37',\n number: '5.4.1',\n infoText:\n 'All employees, execuitives, governing body members, and providers billing under your TIN(s) should be included in periodic screening against the OIG\\'s List of Excluded Individuals and Entities.',\n questionText:\n 'Does your organization conduct periodic (at minimum, annual) screenings of Employees against the OIG\\'s List of Excluded Individuals and Entities?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n requiredForQuestions: [\n {\n subQuestionId: '81',\n subQuestionReqResp: ComplianceFormAnswer.yes\n }\n ],\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n questionId: '81',\n number: '5.4.1A',\n questionText:\n 'If yes, approximately how frequently are the exclusion screenings performed?',\n answer: ComplianceFormAnswer.no,\n textResponseOnly: true,\n disabled: true,\n standardQuestion: false,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.any,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.disabled,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.304b',\n questionId: '38',\n number: '5.4.2',\n infoText:\n 'All employees, execuitives, governing body members, and providers billing under your TIN(s) should be included in periodic screening against the OIG\\'s List of Excluded Individuals and Entities.',\n questionText:\n 'Does your organization conduct periodic (at minimum, annual) screenings of Executives against the OIG\\'s List of Excluded Individuals and Entities?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n requiredForQuestions: [\n {\n subQuestionId: '84',\n subQuestionReqResp: ComplianceFormAnswer.yes\n }\n ],\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n questionId: '84',\n number: '5.4.2A',\n questionText:\n 'If yes, approximately how frequently are the exclusion screenings performed?',\n answer: ComplianceFormAnswer.no,\n textResponseOnly: true,\n disabled: true,\n standardQuestion: false,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.any,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.disabled,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.304b',\n questionId: '39',\n number: '5.4.3',\n infoText:\n 'All employees, execuitives, governing body members, and providers billing under your TIN(s) should be included in periodic screening against the OIG\\'s List of Excluded Individuals and Entities.',\n questionText:\n 'Does your organization conduct periodic (at minimum, annual) screenings of Governing Body Members against the OIG\\'s List of Excluded Individuals and Entities?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n requiredForQuestions: [\n {\n subQuestionId: '85',\n subQuestionReqResp: ComplianceFormAnswer.yes\n }\n ],\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n questionId: '85',\n number: '5.4.3A',\n questionText:\n 'If yes, approximately how frequently are the exclusion screenings performed?',\n answer: ComplianceFormAnswer.no,\n textResponseOnly: true,\n disabled: true,\n standardQuestion: false,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.any,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.disabled,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.304b',\n questionId: '40',\n number: '5.4.4',\n infoText:\n 'All employees, execuitives, governing body members, and providers billing under your TIN(s) should be included in periodic screening against the OIG\\'s List of Excluded Individuals and Entities.',\n questionText:\n 'Does your organization conduct periodic (at minimum, annual) screenings of Providers billing under your organization\\'s TIN (all) against the OIG\\'s List of Excluded Individuals and Entities?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n requiredForQuestions: [\n {\n subQuestionId: '86',\n subQuestionReqResp: ComplianceFormAnswer.yes\n }\n ],\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n questionId: '86',\n number: '5.4.4A',\n questionText:\n 'If yes, approximately how frequently are the exclusion screenings performed?',\n answer: ComplianceFormAnswer.no,\n textResponseOnly: true,\n disabled: true,\n standardQuestion: false,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.any,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.disabled,\n pointValue: 0,\n }\n ],\n },\n ],\n },\n {\n id: 6,\n name: 'Data Privacy & Security',\n questions: [\n {\n code: '42 CFR 425.700 et seq, DUA',\n questionId: '41',\n number: '6.1',\n infoText:\n 'This requirement may be satisfied with an ACO-specific or general HIPAA compliance policy. You are not required to submit the policy; however, we are always happy to review.',\n questionText:\n 'Does your organization have policies in place to ensure the privacy and security of patient data and compliance with related federal laws (i.e. HIPAA and HITECH)?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.700 et seq, DUA',\n questionId: '42',\n number: '6.2',\n infoText:\n 'This question pertains to the downloading and storing of raw patient claims data received by CMS. If your organization only downloads your population health tool\\'s analyses, please respond \\'yes.\\'',\n questionText:\n 'If downloading raw claims data, do members of your organization ensure that the data is downloaded to secure platforms and not shared with third party vendors outside the scope of the ACO\\'s Data Use Agreement (DUA)? If members of your organization do not download raw claims data into your system, please mark \"Yes.\"',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n {\n code: '42 CFR 425.700 et seq, DUA',\n questionId: '43',\n number: '6.3',\n infoText:\n '',\n questionText:\n 'Does your organization limit the use of CMS claims data to activities related to coordinating care and improving the quality and efficiency of care? Improper use outside this scope would include using the data to reduce, limit or restrict care for specific beneficiaries, or for publication and presentation to audiences outside of the ACO.',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 0,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 0,\n }\n ],\n },\n ],\n },\n {\n id: 7,\n name: 'Patient Incentives: This section is informational only, implementation of patient incentive programs are NOT required',\n questions: [\n {\n questionId: '44',\n number: '7.1',\n infoText:\n 'Participating in a ACO waiver or choosing not to implement one will not impact the overall score on the self-assessment. All Signify Health-supported ACO Boards have approved the use of ACO patient incentive waivers for transportation, medication, and durable medical equipment. Respond \\'yes\\' to this question only if your organization has actively implemented one or more of these waivers. If your organization has not implemented an ACO patient incentive waiver, please respond \\'no.\\'',\n questionText:\n 'Does your organization have an ACO patient incentive waiver in place to provide free or discounted items or services?',\n answer: ComplianceFormAnswer.no,\n standardQuestion: true,\n requiredForQuestions: [\n {\n subQuestionId: '76',\n subQuestionReqResp: ComplianceFormAnswer.yes\n },\n ],\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.yes,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.no,\n pointValue: 1,\n },\n {\n questionAnswer: ComplianceFormAnswer.partial,\n pointValue: 1,\n }\n ],\n },\n \n {\n\n questionId: '76',\n number: '7.1A',\n questionText:\n 'If yes, select any waivers you are using (select all that apply): DME, Transportation, Medications & Delivery, Other',\n answer: ComplianceFormAnswer.no,\n checkListResponseOnly: true,\n standardQuestion: false,\n checkListOptions: [\n {\n checkId: 1,\n checkText: 'DME',\n },\n {\n checkId: 2,\n checkText: 'Transportation',\n },\n {\n checkId: 3,\n checkText: 'Medications & Delivery',\n },\n {\n checkId: 4,\n checkText: 'Other',\n },\n ],\n disabled: true,\n pointValue: [\n {\n questionAnswer: ComplianceFormAnswer.any,\n pointValue: 1,\n }\n ],\n },\n\n ],\n },\n];\n","
\n
\n
\n
\n
\n
\n {{ question.code }}\n
\n
\n \n \n
\n
\n
\n
{{ question.number }}
\n
\n {{ question.questionText }}\n
\n
\n
\n
\n\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n\n
\n
\n\n
\n
\n
\n
\n \n \n
\n
{{ uploadedFileName }}
\n
\n
\n
\n Must upload file\n
\n
\n
\n
\n\n
\n
\n
\n \n
\n \n
\n \n \n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n\n
\n \n
\n \n
\n
\n
\n
\n
\n
Question {{ question.number }}
\n
\n \n
\n
\n
{{ question.infoText }}
\n
\n
\n \n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectorRef } from '@angular/core';\nimport {\n AbstractControl,\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators,\n UntypedFormControl,\n UntypedFormArray,\n} from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport {\n ComplianceFormQuestion,\n ComplianceFormAnswer,\n ComplianceFormQuestionChecklistOptions,\n} from '@shared/models/forms/compliance-form-question';\n\n@Component({\n selector: 'coach-compliance-form-question',\n templateUrl: './compliance-form-question.component.html',\n host: {\n class: 'coach-compliance-form-question',\n },\n})\nexport class ComplianceFormQuestionComponent implements OnInit {\n @Input() public question: ComplianceFormQuestion;\n @Input() public sectionIndex: number;\n @Input() public questionIndex: number;\n @Input() public clearForm: EventEmitter;\n @Input() complianceForm: UntypedFormGroup; // Import form from parent component\n @Output() public answerUpdated: EventEmitter<\n [number, number, string, string]\n > = new EventEmitter(); // [sectionIndex, questionIndex, value, questionID]\n @Output() public fileUpdated: EventEmitter<\n [number, number, any, string ]\n > = new EventEmitter();\n\n public answer = ComplianceFormAnswer;\n public formAnswerValue: string;\n public isInfoTextOpen = false;\n public answerForm: UntypedFormGroup;\n\n public afa: AbstractControl;\n public partialText: AbstractControl;\n public textRespOnly: AbstractControl;\n public fileUp: AbstractControl;\n //public chkbxlstOtherTxt: AbstractControl;\n public formCheckSub: Subscription;\n public formCheck: UntypedFormGroup;\n public compCheckList: ComplianceFormQuestionChecklistOptions[] = [];\n //public otherCheck: boolean = false;\n\n // fileUpload \"Sub\" Form\n public uploadedFileName: string = 'No file chosen';\n\n private addCheckboxes() {\n if (this.question != undefined) {\n if (this.question.checkListResponseOnly == true){\n this.question.checkListOptions.forEach(() =>\n this.chklstFormArray.push(new UntypedFormControl(false))\n );\n }\n }\n}\n\nget chklstFormArray() {\n return this.formCheck.get('chkbxlst') as UntypedFormArray;\n}\n\n constructor(\n fb: UntypedFormBuilder,\n private _cd: ChangeDetectorRef,) {\n this.answerForm = fb.group({\n formAnswer: fb.control('', [Validators.required]),\n formPartialText: fb.control(''),\n formTextRespOnly: fb.control(''),\n fileUp: fb.control(''),\n file: [null]\n });\n this.formCheck = fb.group({\n chkbxlst: fb.array([]),\n });\n //this.uploadForm = fb.group({ file: [null, Validators.required] });\n this.addCheckboxes();\n }\n\n\n\n ngOnInit(): void {\n if (this.clearForm) {\n this.clearForm.subscribe(() => {\n this.answerForm.reset();\n });\n }\n if (this.question.checkListResponseOnly == true){\n this.addCheckboxes();\n this.formCheckSub = this.formCheck.valueChanges.subscribe(() => {\n this.updateSelectedCheckList();\n });\n this.compCheckList = this.question.checkListOptions;\n }\n\n this.afa = this.answerForm.controls['formAnswer'];\n this.partialText = this.answerForm.controls['formPartialText'];\n this.textRespOnly = this.answerForm.controls['formTextRespOnly'];\n this.fileUp = this.answerForm.controls['fileUp'];\n\n this.formAnswerValue = this.afa.value || null;\n this.answerUpdated.emit([\n this.sectionIndex,\n this.questionIndex,\n this.formAnswerValue,\n this.question.questionId\n ]);\n this.afa.valueChanges.subscribe((change) => {\n this.formAnswerValue = change;\n if (this.formAnswerValue !== 'partial' && this.question.standardQuestion == true) {\n this.answerUpdated.emit([\n this.sectionIndex,\n this.questionIndex,\n this.formAnswerValue,\n this.question.questionId\n ]);\n } else if (this.formAnswerValue == 'partial' && this.question.standardQuestion == true && this.question.requiredForQuestions != null) {\n this.answerUpdated.emit([\n this.sectionIndex,\n this.questionIndex,\n this.formAnswerValue,\n this.question.questionId\n ]);\n }\n });\n this.textRespOnly.valueChanges.subscribe(() => {\n this.answerUpdated.emit([\n this.sectionIndex,\n this.questionIndex,\n this.textRespOnly.value,\n this.question.questionId\n ]);\n });\n this.partialText.valueChanges.subscribe(() => {\n this.answerUpdated.emit([\n this.sectionIndex,\n this.questionIndex,\n this.partialText.value,\n this.question.questionId\n ]);\n });\n this.fileUp.valueChanges.subscribe(() => {\n this.answerUpdated.emit([\n this.sectionIndex,\n this.questionIndex,\n this.uploadedFileName,\n this.question.questionId\n ]);\n });\n\n\n const property = 'FormQ' + this.question.questionId;\n const questionControl = this.complianceForm.get(`${property}.FormQResponses.0.UserResponse`);\n\n if (questionControl.value != '' && questionControl.value != null) {\n if(this.question.standardQuestion == true){\n this.formAnswerValue = questionControl.value;\n this.answerForm.controls['formAnswer'].setValue(questionControl.value);\n\n if (questionControl.value != 'no' && questionControl.value != 'yes' && this.question.standardQuestion == true) {\n this.formAnswerValue = 'partial';\n this.answerForm.controls['formPartialText'].setValue(questionControl.value);\n this.answerForm.controls['formAnswer'].setValue('partial');\n\n }\n } else if (this.question.textResponseOnly == true) {\n this.formAnswerValue = questionControl.value;\n this.answerForm.controls['formTextRespOnly'].setValue(questionControl.value);\n this.answerForm.controls['formAnswer'].setValue(questionControl.value);\n\n } else if (this.question.fileUpload == true) {\n this.formAnswerValue = questionControl.value;\n this.uploadedFileName = questionControl.value;\n this.answerForm.controls['fileUp'].setValue(questionControl.value);\n this.answerForm.controls['formAnswer'].setValue(questionControl.value);\n\n } else if (this.question.checkListResponseOnly == true) {\n this.formAnswerValue = 'partial';\n this.answerForm.controls['formAnswer'].setValue(questionControl.value);\n const chkList = questionControl.value.split(',');\n\n this.chklstFormArray.clear();\n this.question.checkListOptions?.forEach((chk) => {\n const isSet = chkList.some((x) => x === chk.checkText);\n this.chklstFormArray.push(new UntypedFormControl(isSet));\n });\n\n }\n\n }\n }\n\n public onFileChange(event): void {\n if (event.target.files && event.target.files.length) {\n const file = event.target.files[0];\n this.answerForm.patchValue({ file: file });\n this.uploadedFileName = file.name || 'File name not found';\n this._cd.markForCheck();\n\n this.answerForm.controls['formAnswer'].setValue(file.name);\n\n this.fileUpdated.emit([\n this.sectionIndex,\n this.questionIndex,\n file,\n this.question.questionId\n ]);\n this.answerUpdated.emit([\n this.sectionIndex,\n this.questionIndex,\n file.name,\n this.question.questionId\n ]);\n\n } else {\n this.resetUploadForm();\n }\n\n }\n\n private resetUploadForm(): void {\n this.answerForm.reset({ file: null });\n this.uploadedFileName = 'No file chosen';\n this._cd.markForCheck();\n }\n\n public toggleInfoText(): void {\n this.isInfoTextOpen = !this.isInfoTextOpen;\n }\n\n public reset(): void {\n this.answerForm.reset();\n }\n\n public updateSelectedCheckList() {\n const selectedCheckList: ComplianceFormQuestionChecklistOptions[] = this.formCheck\n .get('chkbxlst')\n .value.map((selected, i) => (selected ? this.compCheckList[i] : null))\n .filter((p) => p !== null);\n\n\n // update names\n const selectedselectedCheckListValues = selectedCheckList\n .map((p) => p.checkText)\n .toString();\n\n // const selectedOther = selectedCheckList.find(i => i.checkText == 'Other');\n\n // if(selectedOther){\n // this.otherCheck = true;\n // }\n // else {\n // this.otherCheck = false;\n // }\n\n\n this.answerUpdated.emit([\n this.sectionIndex,\n this.questionIndex,\n selectedselectedCheckListValues,\n this.question.questionId\n ]);\n\n }\n}\n","\n
\n
\n
\n
\n
\n
\n Participant Selection\n
\n\n
\n \n
\n \n \n
\n\n
\n
No participants available
\n
\n
\n
\n At least one participant is required\n
\n
\n
\n
\n\n
\n
\n\n\n
\n
\n \n

{{ section.name }}

\n \n \n \n
\n
\n
\n
\n
\n
\n
\n {{ sectionsCompleted }} out of 7 sections\n
\n
\n \n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n\n\n
\n
\n \n
\n
\n
{{copy.overviewTitle}}
\n
\n {{copy.submissionPeriod}}\n Due\n {{dueDateSoft | date:'MMM dd'}}\n
\n
\n
\n
\n

Welcome!

\n

{{copy.requirements}}

\n

\n {{copy.instructionsPart1}}{{copy.submissionPeriod}}{{copy.instructionsPart2}}\n

\n
\n {{copy.noteTextPart1}}{{copy.noteTextPart2}}\n {{copy.noteTextPart3}}{{copy.noteTextPart4}}\n {{copy.noteTextPart5}}{{copy.noteTextPart6}}\n
\n
\n
\n {{copy.disclaimer}}\n
\n
\n
\n
\n\n
\n \n Step {{stepAddEdit}}\n \n
\n

\n Add/Edit Forms\n

\n

We keep track of all forms submitted or saved as draft. Come back here to review\n and update any submitted or saved forms prior to the submission deadline of {{dueDateSoft | date:'MMMM dd, yyyy'}}.\n

\n
\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
Name
\n
\n
Total Score
\n
\n
Submitter
\n
\n
Date/Time
\n
\n
Status
\n
\n
Edit
\n
\n
Remediation Needed
\n
\n No Submissions\n
\n {{ submission.PrincipalParticipantName }}\n \n {{ submission.TotalPoints/100 | percent:\"2.0-0\"}}{{ submission.SubmitterEmail }}{{ submission.LastUpdateDateTime | date: \"short\" }}{{ submission.ISComplete ? \"Complete\" : \"Pending\" }}\n Edit\n \n No\n Yes\n \n N/A\n
\n
\n
\n
\n
\n \n
\n\n \n
\n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n Compliance Form Score Summary & Remediation Steps \n
\n
\n
\n
\n\n {{ caravanFormRemediationInfo[0].Message }}\n
\n\n
\n
Suggested Remediation:
\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n\n \n \n
\n
Question ID
\n
\n
General Compliance Oversight
\n
\n
Suggested remediation
\n
{{ question.questionID }}{{ question.Text }}{{ question.RemediationText }}
\n
\n
\n Please note that you can resubmit the form to reflect any organizational changes that may impact your overall score and compliance status by {{copy.remediationCloseDate}}.\n Contact aco-compliance@signifyhealth.com or a member of your Signify Health regional team if you have any questions.\n
\n\n
\n
\n \n
\n
\n
\n
\n","import { ChangeDetectorRef, Component, EventEmitter, OnInit } from '@angular/core';\nimport {\n ComplianceFormQuestionSection,\n ComplianceFormSectionAnswers,\n} from '@shared/models/forms/compliance-form-question';\nimport { COMPLIANCE_FORM_QUESTION_SECTIONS } from '@shared/mocks/mock-compliance-form-questions';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { Observable, Subscription, forkJoin } from 'rxjs';\nimport { UserInfo } from '@shared/services/auth-service/auth-interface';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport {\n UntypedFormBuilder,\n UntypedFormGroup,\n UntypedFormArray,\n UntypedFormControl,\n Validators,\n} from '@angular/forms';\n// import { SubmitComplianceService, Participant } from './submit-compliance.service';\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { finalize, takeUntil } from 'rxjs/operators';\nimport { ToastrService } from 'ngx-toastr';\n//Clean up later\nimport { FormConstants, ComplianceFormSettings } from '@shared/models/forms/form-constants';\nimport { SubmitFeatureConstants } from '@shared/models/module-constants';\nimport {\n FormResponses,\n FormSubmission,\n tier3participants,\n CaravanFormRemediationInfo,\n} from '@shared/models/forms/forms-backend';\nimport { CaravanFormSubmissionPeriod } from '@shared/models/forms/form-submissionID-model';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { number } from '@amcharts/amcharts4/core';\nimport moment from 'moment';\n\n@Component({\n selector: 'coach-submit-compliance',\n templateUrl: './submit-compliance.component.html',\n})\nexport class SubmitComplianceComponent\n extends KillSubscriptions\n implements OnInit {\n public clearForm: EventEmitter = new EventEmitter();\n public formSaving = false;\n public showRemediationModal: boolean;\n // User Info\n public isAuthenticated$: Observable;\n public userInfo$: Observable;\n private _isLoggedIn = false;\n private _currentUser: UserInfo;\n\n // Subscriptions\n public authSub: Subscription;\n public userSub: Subscription;\n public selectionSub: Subscription;\n public tier3FormSub: Subscription;\n public allSubs: Subscription[];\n\n // Other UI\n public isAddEditFormActive: boolean = false;\n public dueDate: Date;\n public dueDateSoft: Date;\n public copy: ComplianceFormSettings = FormConstants.Compliance;\n public selectedFormSubPeriod: number;\n\n //Other\n readonly formsAdminFormFeatureFlag: string = SubmitFeatureConstants.FormsAdminFormFeatureFlag;\n readonly formsAdminFormFeature: number = SubmitFeatureConstants.FormsAdminFormFeature;\n public stepAddEdit= '1';\n public shwSpecialStatus: boolean = false;\n public submitPeriodParam: number;\n public readonly complianceyFormId = 3;\n public formSubmissions: FormSubmission[];\n public caravanFormSubmissionPeriod: CaravanFormSubmissionPeriod[];\n public caravanFormRemediationInfo: CaravanFormRemediationInfo[];\n public isFormQueueOpen: boolean = true;\n\n public static readonly disabled = 'disabled';\n\n public compScore: number;\n public displayRemediation: boolean;\n\n // Practice Select \"Sub\" Form\n public tier3Form: UntypedFormGroup;\n public participantList: tier3participants[] = [];\n\n // Form\n public complianceForm: UntypedFormGroup;\n public uploadFormComb: UntypedFormGroup;\n\n public currentTier: IHierarchyTier;\n public mockQuestionSections: ComplianceFormQuestionSection[] = COMPLIANCE_FORM_QUESTION_SECTIONS;\n public sectionsCompleted: number;\n public tierSelections: number;\n public allSectionsComplete: boolean = false;\n public allAnswers: ComplianceFormSectionAnswers[] = [\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n ];\n\n get participantsFormArray() {\n return this.tier3Form.get('participants') as UntypedFormArray;\n }\n\n private addPracticeCheckboxes() {\n this.participantList.forEach(() =>\n this.participantsFormArray.push(new UntypedFormControl(false))\n );\n }\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private _authService: AuthService,\n private _cd: ChangeDetectorRef,\n private qualityService: SubmitFormsService,\n private toastr: ToastrService,\n private router: Router,\n private route: ActivatedRoute\n ) {\n super();\n this.tier3Form = this.formBuilder.group({\n participants: this.formBuilder.array([]),\n });\n this.uploadFormComb = this.formBuilder.group({ file: [null, Validators.required] });\n this.addPracticeCheckboxes();\n }\n\n ngOnInit(): void {\n this.isAuthenticated$ = this._authService.isAuthenticated$;\n this.userInfo$ = this._authService.userInfo$;\n\n this.authSub = this.isAuthenticated$\n ?.pipe(takeUntil(this.killTrigger))\n .subscribe(\n (isLoggedIn) => {\n this._isLoggedIn = isLoggedIn;\n },\n (error) => {}\n );\n\n this.userSub = this.userInfo$\n ?.pipe(takeUntil(this.killTrigger))\n .subscribe((userInfo) => {\n this._currentUser = userInfo;\n });\n\n this.route.queryParams\n .subscribe(params => {\n if (params.submitperiod != null){\n this.submitPeriodParam = params.submitperiod;\n }\n\n }\n );\n\n this.qualityService.getSubmitPeriodDetails(this.complianceyFormId).subscribe((data) => {\n this.caravanFormSubmissionPeriod = data;\n if (this.submitPeriodParam == null) {\n this.selectedFormSubPeriod = this.caravanFormSubmissionPeriod[0].caravanFormSubmitPeriodID;\n this.dueDate = this.caravanFormSubmissionPeriod[0].dueDate;\n this.updateSubmissionPeriodConfigs(0);\n } else\n {\n this.selectedFormSubPeriod = this.submitPeriodParam;\n this.dueDate = this.caravanFormSubmissionPeriod.find(i => i.caravanFormSubmitPeriodID == this.submitPeriodParam).dueDate;\n this.updateSubmissionPeriodConfigs(this.caravanFormSubmissionPeriod.findIndex(i => i.caravanFormSubmitPeriodID == this.submitPeriodParam));\n }\n\n this.generateComplianceForm();\n this.answerUpdated([0, 0, null, null]);\n\n this.refreshFormData();\n });\n }\n public refreshFormData(): void {\n const formID = this.complianceyFormId.toString();\n const submissionID = this.selectedFormSubPeriod.toString();\n\n this.qualityService.getSubmissions(formID, submissionID).subscribe((data) => {\n this.formSubmissions = data;\n });\n }\n\n public isQueueOpen = true;\n\n public toggleQueueOpen(): void {\n this.isQueueOpen = !this.isQueueOpen;\n }\n\n private waiverQuestionsDisabled = true;\n\n private setWaiverQuestionsDisabledStatus(status: boolean, subQuestionId: string): void {\n const section = this.mockQuestionSections.findIndex(e => e.questions.findIndex(ee =>ee.questionId == subQuestionId)!= -1);\n const question = this.mockQuestionSections[section].questions.findIndex(e => e.questionId == subQuestionId);\n\n this.mockQuestionSections[section].questions[question].disabled = status;\n // set additional waiver flag if 7.2 is answered with yes\n if (section == 6 && question == 1){\n this.waiverQuestionsDisabled = status;\n }\n }\n\n public answerUpdated($event: [number, number, string, string]): void {\n const sectionIndex = $event[0];\n const questionIndex = $event[1];\n const answerValue = $event[2];\n const questionID = $event[3];\n const QuestionInfo = this.mockQuestionSections[sectionIndex].questions[questionIndex];\n\n this.allAnswers[sectionIndex].answers[questionIndex] = answerValue;\n\n // show additional questions based on response\n if (QuestionInfo.requiredForQuestions != null && answerValue != null) {\n QuestionInfo.requiredForQuestions.forEach((subQuestion) => {\n if (answerValue === subQuestion.subQuestionReqResp.toString()) {\n this.setWaiverQuestionsDisabledStatus(false, subQuestion.subQuestionId);\n } else {\n this.setWaiverQuestionsDisabledStatus(true, subQuestion.subQuestionId);\n }\n });\n }\n\n if (this.allAnswers[sectionIndex].answers.some((v) => v !== null)) {\n if (this.allAnswers[sectionIndex].answers.every((v) => v !== null)) {\n this.allAnswers[sectionIndex].status = 'completed';\n }\n }\n\n if (questionID != null && answerValue != null){\n const property = 'FormQ' + questionID;\n const response = this.complianceForm.get(`${property}.FormQResponses.0.UserResponse`);\n response.setValue(answerValue);\n\n //Set point Values\n const ResponsePointValue = this.complianceForm.get(`${property}.FormQResponses.0.ResponsePointValue`);\n const q = this.mockQuestionSections[sectionIndex].questions[questionIndex];\n let respValue = answerValue;\n if (q.standardQuestion == true){\n if (respValue != 'no' && respValue != 'yes' && respValue != null && respValue != undefined) {\n respValue = 'partial';\n }\n const points = q.pointValue.find((x) => x.questionAnswer === respValue);\n ResponsePointValue.setValue(points.pointValue);\n }\n else {\n if (respValue != '' && respValue != null && respValue != undefined){\n //Update to use some form of logic to get additional scores\n respValue = 'any';\n const points = q.pointValue.find((x) => x.questionAnswer === respValue);\n\n ResponsePointValue.setValue(points.pointValue);\n }\n else{\n ResponsePointValue.setValue(0);\n }\n }\n\n //Check if section complete\n let sectionComplete = true;\n this.mockQuestionSections[sectionIndex].questions.forEach((q) => {\n if(q.disabled == undefined || (q.disabled == false && q.requiredIfVisible == true)){\n const prop = 'FormQ' + q.questionId;\n const resp = this.complianceForm.get(`${prop}.FormQResponses.0.UserResponse`);\n if(resp.value == null){\n sectionComplete = false;\n }\n }\n });\n\n if (sectionComplete == true){\n this.allAnswers[sectionIndex].status = 'completed';\n } else {\n this.allAnswers[sectionIndex].status = 'started';\n }\n }\n\n this.getSectionsCompleted();\n }\n\n public fileUpdated($event: [number, number, any, string]): void {\n const sectionIndex = $event[0];\n const questionIndex = $event[1];\n const fileUpload = $event[2];\n const questionID = $event[3];\n const QuestionInfo = this.mockQuestionSections[sectionIndex].questions[questionIndex];\n\n const file = fileUpload;\n if (fileUpload) {\n const file = fileUpload;\n this.uploadFormComb.patchValue({ file: file });\n this._cd.markForCheck();\n } else {\n this.resetUploadForm();\n }\n this.uploadFormComb.get('file').markAsTouched();\n\n const filename = file.name;\n\n if (questionID != null && filename != null){\n const property = 'FormQ' + questionID;\n const response = this.complianceForm.get(`${property}.FormQResponses.0.UserResponse`);\n response.setValue(filename);\n }\n this.getSectionsCompleted();\n\n }\n\n private resetUploadForm(): void {\n this.uploadFormComb.reset({ file: null });\n this._cd.markForCheck();\n }\n\n public getSectionsCompleted(): void {\n this.sectionsCompleted = this.allAnswers.filter(\n (o) => o.status === 'completed'\n ).length;\n if (this.sectionsCompleted === this.allAnswers.length){\n this.allSectionsComplete = true;\n }\n else {\n this.allSectionsComplete = false;\n }\n }\n\n public clearFormClick(): void {\n this.clearForm.emit(true);\n this.participantsFormArray.clear();\n this.allAnswers = [\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n {\n status: null,\n answers: [],\n },\n ];\n this.generateComplianceForm();\n this.answerUpdated([0, 0, null, null]);\n\n this.refreshFormData();\n this.toggleAddEditFormActive();\n }\n\n public generateComplianceForm(): void {\n const quarterOfTheYear = (date: Date) => {\n const month: number = date.getMonth() + 1;\n return Math.ceil(month / 3);\n };\n\n const today = new Date();\n const userID = this._currentUser?.dnn_id || null;\n const userEmail = this._currentUser?.email || null;\n const nowJson = today.toJSON();\n const nowQtr = quarterOfTheYear(today);\n\n this.complianceForm = this.formBuilder.group({\n FormID: [3],\n FormVersionID: [3],\n FormName: ['Compliance'],\n FormCategoryID: [1],\n Email: [userEmail], // set\n Tier3_ID: [null, Validators.required], // set\n Tier3_Name: [null, Validators.required], // set\n SpecialStatus: [null],\n RegReportOne: [null],\n RegReportTwo: [null],\n FormQuarter: [nowQtr],\n CEHRT: [2021],\n FormCreateDateTime: [nowJson],\n CreatedByUserID: [userID],\n ClosedDateTime: [null],\n LastUpdateUserID: [userID],\n LastUpdateDateTime: [nowJson],\n isComplete: [0],\n TotalPoints: [0],\n UserFormID: [null],\n UserID: [userID],\n SubmitPeriodID: [this.selectedFormSubPeriod.toString()],\n FormQ15: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[0].questions[0].questionId,\n QuestionText: [\n `${this.mockQuestionSections[0].questions[0].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[0].answers[0]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ16: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[0].questions[1].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[0].questions[1].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[0].answers[1]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ17: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[0].questions[2].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[0].questions[2].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[0].answers[2]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ18: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[1].questions[0].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[1].questions[0].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[1].answers[0]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ19: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[1].questions[1].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[1].questions[1].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[1].answers[1]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ20: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[1].questions[2].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[1].questions[2].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[1].answers[2]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ21: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[1].questions[3].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[1].questions[3].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[1].answers[3]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ22: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[1].questions[4].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[1].questions[4].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[1].answers[4]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ23: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[1].questions[5].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[1].questions[5].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[1].answers[5]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n\n FormQ24: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[1].questions[6].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[1].questions[6].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[1].answers[6]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ79: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[1].questions[7].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[1].questions[7].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[1].answers[7]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ26: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[2].questions[0].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[2].questions[0].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[2].answers[0]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ27: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[2].questions[1].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[2].questions[1].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[2].answers[1]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ28: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[2].questions[2].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[2].questions[2].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[2].answers[2]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ73: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[2].questions[3].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[2].questions[3].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[2].answers[3]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ29: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[2].questions[4].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[2].questions[4].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[2].answers[4]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ30: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[3].questions[0].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[3].questions[0].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[3].answers[0]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ31: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[3].questions[1].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[3].questions[1].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[3].answers[1]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n \n\n FormQ32: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[3].questions[2].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[3].questions[2].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[3].answers[2]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n\n FormQ34: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[4].questions[0].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[4].questions[0].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[4].answers[0]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ35: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[4].questions[1].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[4].questions[1].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[4].answers[1]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n\n FormQ36: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[4].questions[2].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[4].questions[2].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[4].answers[2]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ37: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[4].questions[3].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[4].questions[3].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[4].answers[3]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n\n FormQ81: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[4].questions[4].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[4].questions[4].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[4].answers[4]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ38: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[4].questions[5].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[4].questions[5].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[4].answers[5]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ84: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[4].questions[6].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[4].questions[6].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[4].answers[6]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ39: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[4].questions[7].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[4].questions[7].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[4].answers[7]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ85: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[4].questions[8].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[4].questions[8].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[4].answers[8]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ40: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[4].questions[9].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[4].questions[9].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[4].answers[9]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ86: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[4].questions[10].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[4].questions[10].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[4].answers[10]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ41: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[5].questions[0].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[5].questions[0].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[5].answers[0]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ42: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[5].questions[1].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[5].questions[1].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[5].answers[1]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ43: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[5].questions[2].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[5].questions[2].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[5].answers[2]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ44: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[6].questions[0].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[6].questions[0].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[6].answers[0]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n \n FormQ76: this.formBuilder.group({\n QuestionID: this.mockQuestionSections[6].questions[1].questionId,\n QuestionText: [\n `Question ${this.mockQuestionSections[6].questions[1].questionText}`,\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [this.allAnswers[6].answers[1]],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n });\n\n this.tier3FormSub = this.tier3Form.valueChanges.subscribe(() => {\n this.updateSelectedParticipants();\n });\n\n this.allSubs = [\n this.tier3FormSub,\n this.authSub,\n this.userSub,\n ];\n }\n public onSubmit(isComplete: boolean): void {\n let validSubmit: boolean;\n const validDraft = !isComplete;\n\n validSubmit = isComplete && this.complianceForm.valid;\n\n\n for (const section in this.mockQuestionSections) {\n this.mockQuestionSections[section].questions.forEach((q) => {\n if(q.disabled == true){\n const prop = 'FormQ' + q.questionId;\n const resp = this.complianceForm.get(`${prop}.FormQResponses.0.UserResponse`);\n const respPoints = this.complianceForm.get(`${prop}.FormQResponses.0.ResponsePointValue`);\n const points = q.pointValue.find((x) => x.questionAnswer === SubmitComplianceComponent.disabled);\n if (points != undefined){\n respPoints.setValue(points);\n }\n else {\n respPoints.setValue(null);\n }\n resp.setValue(null);\n\n }\n });\n }\n\n\n if (validSubmit) {\n this.toastr.info('Form Submitting', 'Compliance Form');\n this.calcTotalPoints(true);\n }\n if (validDraft) {\n this.toastr.info('Draft Saving', 'Compliance Form');\n this.calcTotalPoints(false);\n }\n\n\n\n if (validSubmit || validDraft) {\n this.complianceForm.controls['isComplete'].setValue(isComplete ? 1 : 0);\n\n\n let formCopy = Object.assign({}, this.complianceForm.getRawValue());\n\n this.formSaving = true;\n const uploadFile = this.uploadFormComb.get('file').value;\n this.qualityService\n .save([uploadFile], formCopy)\n .pipe(finalize(() => (this.formSaving = false)))\n .subscribe(\n () => {\n if (validSubmit)\n this.toastr.success('Form Submitted', 'Compliance Form');\n if (validDraft) this.toastr.success('Draft Saved', 'Compliance Form');\n this.refreshFormData();\n this.resetForms();\n this.clearFormClick();\n this.participantsFormArray.clear();\n },\n (err) => {\n console.error(err);\n this.toastr.error('Form Failed To Save', 'Compliance Form');\n }\n );\n } else if (isComplete) {\n this.complianceForm.markAllAsTouched();\n this.uploadFormComb.markAllAsTouched();\n } else if (!isComplete) {\n this.uploadFormComb.markAllAsTouched();\n }\n\n }\n\n resetForms(): void {\n this.generateComplianceForm();\n\n this.resetUploadForm();\n\n this.updateForm();\n }\n\n newSubmission(): void {\n const submissionID = this.selectedFormSubPeriod.toString();\n\n this.qualityService\n .getListOfSpecificTier(null, SubmitFeatureConstants.ComplianceFormFeature, submissionID)\n .subscribe((data) => {\n this.setParticipants(data);\n this.toggleAddEditFormActive();\n });\n\n }\n formsReport(): void {\n this.router.navigate(['compliance/formreport'], { relativeTo: this.route.parent });\n }\n editForm(submission: FormSubmission): void {\n const submissionID = this.selectedFormSubPeriod.toString();\n const specialStatusIncluded = this.shwSpecialStatus? '1':'0';\n\n forkJoin([\n this.qualityService.getListOfSpecificTier(\n submission.UserFormID,\n SubmitFeatureConstants.ComplianceFormFeature,\n submissionID,\n specialStatusIncluded\n ),\n this.qualityService.getFormResponses(submission.UserFormID),\n ]).subscribe((data) => {\n const submission = data[1][0];\n const tier3Ids = submission.SelectedTier3s.split('; ').map((id) =>\n id\n );\n const tier3 = JSON.parse(data[0]);\n if (tier3[0].Name) {\n !submission.SelectedFacName\n ? (submission.SelectedFacName = tier3[0].Name)\n : null;\n this.complianceForm.get('Tier3_Name').markAsTouched({ onlySelf: true });\n }\n\n this.setParticipants(data[0], tier3Ids);\n this.loadFromSubmission(submission);\n this.toggleAddEditFormActive();\n\n });\n }\n private setParticipants(data: string, tierIds: string[] = []): void {\n if(data != ''){\n this.participantList = JSON.parse(data);\n this.participantsFormArray.clear();\n this.participantList?.forEach((participant) => {\n const isSet = tierIds.some((x) => x === participant.TierID);\n this.participantsFormArray.push(new UntypedFormControl(isSet));\n });\n }\n }\n\n public updateSelectedParticipants() {\n const selectedParticipants: tier3participants[] = this.tier3Form\n .get('participants')\n .value.map((selected, i) => (selected ? this.participantList[i] : null))\n .filter((p) => p !== null);\n // update fac_id\n const selectedParticipantTierIds = selectedParticipants\n .map((p) => p.TierID)\n .toString();\n this.complianceForm.patchValue(\n { Tier3_ID: selectedParticipantTierIds },\n { emitEvent: false }\n );\n this.complianceForm.get('Tier3_ID').markAsTouched({ onlySelf: true });\n // update names\n const selectedParticipantNames = selectedParticipants\n .map((p) => p.TierName)\n .toString();\n this.complianceForm.patchValue({ Tier3_Name: selectedParticipantNames });\n this.complianceForm.get('Tier3_Name').markAsTouched({ onlySelf: true });\n }\n\n loadFromSubmission(submission: FormResponses): void {\n this.complianceForm.get('UserFormID').setValue(submission.UserFormID);\n this.complianceForm.get('TotalPoints').setValue(submission.TotalPoints);\n\n submission.Q.forEach((question) => {\n for (const property in this.complianceForm.controls) {\n const questionControl = this.complianceForm.get(`${property}.QuestionID`);\n const questionId = questionControl?.value;\n\n if (questionControl != null && questionId == question.ID) {\n const response = this.complianceForm.get(\n `${property}.FormQResponses.0.UserResponse`\n );\n\n const points = this.complianceForm.get(\n `${property}.FormQResponses.0.ResponsePointValue`\n );\n\n if (response != null && points != null) {\n response.setValue(question.Response);\n points.setValue(Number(question.Points));\n }\n }\n }\n });\n\n this.updateForm();\n }\n\n public updateForm() {\n //todo\n this.calcTotalPoints(false);\n }\n public calcTotalPoints(finalizeScore: boolean) {\n\n if (finalizeScore == false){\n this.complianceForm.patchValue({ TotalPoints: null }, { emitEvent: false });\n }\n else{\n let totalPoints = 0;\n let totalQuestions = 0;\n\n for (let sectionIndex in this.mockQuestionSections) {\n\n this.mockQuestionSections[sectionIndex].questions.forEach((q) => {\n if(q.disabled == false || q.disabled == undefined){\n const prop = 'FormQ' + q.questionId;\n const resp = this.complianceForm.get(`${prop}.FormQResponses.0.UserResponse`);\n totalQuestions = totalQuestions + 1;\n\n let respValue = resp.value;\n\n if (q.standardQuestion == true){\n\n\n if (respValue != 'no' && respValue != 'yes' && respValue != null && respValue != undefined) {\n respValue = 'partial';\n }\n if (respValue != null && respValue != undefined){\n const points = q.pointValue.find((x) => x.questionAnswer === respValue);\n totalPoints = totalPoints + points.pointValue;\n }\n }\n else {\n if (resp.value != '' && resp.value != null && resp.value != undefined){\n //Update to use some form of logic to get additional scores\n respValue = 'any';\n const points = q.pointValue.find((x) => x.questionAnswer === respValue);\n totalPoints = totalPoints + points.pointValue;\n }\n }\n }\n else if (q.disabled == true){\n const points = q.pointValue.find((x) => x.questionAnswer === SubmitComplianceComponent.disabled);\n if (points != undefined){\n totalQuestions = totalQuestions + 1;\n totalPoints = totalPoints + points.pointValue;\n }\n\n }\n });\n }\n const totalPercent = ((totalPoints / totalQuestions) * 100).toFixed(0);\n\n this.complianceForm.patchValue({ TotalPoints: totalPercent }, { emitEvent: false });\n }\n\n }\n\n public toggleAddEditFormActive() {\n this.isAddEditFormActive = !this.isAddEditFormActive;\n }\n public updateSubmissionPeriodConfigs(submissionPeriodID) {\n const submitPeriod = this.caravanFormSubmissionPeriod[submissionPeriodID];\n for (let config in submitPeriod.configs) {\n if (submitPeriod.configs[config].configValue !== null) {\n this.copy[submitPeriod.configs[config].configName] = submitPeriod.configs[config].configValue.toString();\n if (submitPeriod.configs[config].configName == 'dueDateSoft') {\n this.dueDateSoft = new Date(submitPeriod.configs[config].configValue);\n }\n }\n }\n if (this.dueDateSoft == undefined){\n this.dueDateSoft = this.dueDate;\n }\n }\n\n public showRemediation(submission: FormSubmission): void {\n this.caravanFormRemediationInfo = [];\n this.qualityService\n .getFormRemediationInfo(submission.UserFormID)\n .subscribe((data) => {\n this.caravanFormRemediationInfo = data;\n\n if (this.caravanFormRemediationInfo[0].Questions){\n this.caravanFormRemediationInfo[0].Questions.forEach((question) => {\n const section = this.mockQuestionSections.findIndex(e => e.questions.findIndex(ee =>ee.questionId == question.ID.toString())!= -1);\n const questionID = this.mockQuestionSections[section].questions.find(e => e.questionId == question.ID.toString());\n question.questionID = questionID.number;\n });\n }\n\n this.showRemediationModal = true;\n });\n\n this.compScore = submission.TotalPoints;\n if (this.compScore < 100){\n this.displayRemediation = true;\n }\n else {\n this.displayRemediation = false;\n }\n\n }\n public hideRemediation(): void {\n this.showRemediationModal = false;\n }\n public print(): void {\n window.print();\n }\n\n\n\n}\n","import { CaravanPracticeDropdown, CaravanSpecialStatus } from '@shared/models/forms/forms-backend';\n\nexport const EHR_VENDORS: string[] = [\n 'Allscripts',\n 'AthenaHealth',\n 'Cerner',\n 'CPSI',\n 'eClinicalWorks',\n 'e-MDs',\n 'Epic',\n 'GE Healthcare',\n 'Greenway Health',\n 'Healthland',\n 'Meditech',\n 'NextGen',\n 'Other'\n];\n\nexport const PATIENT_POP_DATA_SOURCES: string[] = [\n 'From EHR',\n // 'Manual Abstraction on Random Patients',\n // 'Lightbeam Clinical Interface'\n];\n\nexport const PATIENT_POP_DATA_TYPES: string[] = [\n 'All Payors',\n // 'Medicare' untill end of 2021\n];\n\nexport const MOCK_PRACTICES: CaravanPracticeDropdown[] = [\n {\n Fac_ID: 123456,\n Name: 'Tingen Family Care',\n },\n {\n Fac_ID: 234567,\n Name: 'Practice Two',\n },\n {\n Fac_ID: 345678,\n Name: 'Practice Three',\n }\n];\n\nexport const FORMS_SPECIAL_STATUSES: CaravanSpecialStatus[] = [\n {\n specialStatusID: 1,\n formID: 1,\n specialStatus: 'N/A',\n isDeleted: 0,\n isVisible: 0\n },\n {\n specialStatusID: 2,\n formID: 1,\n specialStatus: 'ASC Based - Special Status',\n isDeleted: 1,\n isVisible: 1\n },\n {\n specialStatusID: 3,\n formID: 1,\n specialStatus: 'Can\\'t Access Data',\n isDeleted: 1,\n isVisible: 1\n },\n {\n specialStatusID: 4,\n formID: 1,\n specialStatus: 'Empty TIN',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 5,\n formID: 1,\n specialStatus: 'Exclusion - Vendor Having Issues',\n isDeleted: 1,\n isVisible: 1\n },\n {\n specialStatusID: 6,\n formID: 1,\n specialStatus: 'Hospital-based',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 7,\n formID: 1,\n specialStatus: 'In Process of Upgrade',\n isDeleted: 1,\n isVisible: 1\n },\n {\n specialStatusID: 8,\n formID: 1,\n specialStatus: 'Non-Patient Facing',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 9,\n formID: 1,\n specialStatus: 'Small Practice',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 10,\n formID: 1,\n specialStatus: 'Small Practice Waiver - Received',\n isDeleted: 1,\n isVisible: 1\n },\n {\n specialStatusID: 11,\n formID: 1,\n specialStatus: 'Use a Registry for Reporting',\n isDeleted: 1,\n isVisible: 1\n },\n {\n specialStatusID: 12,\n formID: 1,\n specialStatus: 'Other Reason(s)',\n isDeleted: 0,\n isVisible: 0\n },\n {\n specialStatusID: 13,\n formID: 2,\n specialStatus: 'N/A',\n isDeleted: 0,\n isVisible: 0\n },\n {\n specialStatusID: 14,\n formID: 2,\n specialStatus: 'EHR Can\\'t Produce Report',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 15,\n formID: 2,\n specialStatus: 'Merged TIN',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 16,\n formID: 2,\n specialStatus: 'Empty TIN',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 17,\n formID: 2,\n specialStatus: 'Using Paper Charts',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 18,\n formID: 2,\n specialStatus: 'Hospital-based',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 19,\n formID: 2,\n specialStatus: 'No Part B',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 20,\n formID: 2,\n specialStatus: 'In Process of EHR Upgrade',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 21,\n formID: 3,\n specialStatus: '',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 22,\n formID: 2,\n specialStatus: 'Not Primary Care',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 23,\n formID: 2,\n specialStatus: 'Other Reason(s)',\n isDeleted: 0,\n isVisible: 0\n },\n {\n specialStatusID: 25,\n formID: 1,\n specialStatus: 'Merged TIN',\n isDeleted: 0,\n isVisible: 1\n },\n {\n specialStatusID: 26,\n formID: 2,\n specialStatus: 'EHR Can\\'t Produce Report - Manual Abstraction',\n isDeleted: 0,\n isVisible: 0\n }\n];\n","import { CheckboxQuestion, NumDenPtsQuestion, SecurityRiskQuestion, YesNonPtsQuestion, DateQuestion} from './forms-frontend';\n\nexport class FormQuestionConstants {\n public static Q8SecurityRisk: SecurityRiskQuestion = {\n name: 'FormQ8SecurityRisk',\n description: 'Security Risk Analysis',\n promptQuarter: true,\n measureId: 'PI_PPHI_1',\n helpText:\n // eslint-disable-next-line quotes\n \"Conduct or review a security risk analysis in accordance with the requirements in 45 CFR 16.308(a)(1), including addressing the security (to include encryption) of ePHI data created or maintained by certified electronic health record technology (CEHRT) in accordance with requirements in 45 CFR 164.312(a)(2)(iv) and 45 CFR 164.306(d)(3), implement security updates as necessary, and correct identified security deficiencies as part of the MIPS eligible clinician's risk management process.\",\n riskOptions: [\n {\n optionId: 0,\n optionText: 'WillComplete',\n },\n {\n optionId: 1,\n optionText: 'Complete',\n },\n {\n optionId: 2,\n optionText: 'Unset',\n }\n ],\n modalLinks: [\n {\n entryID: 1166288,\n linkText: 'Link to Measure Specification'\n\n },\n {\n linkText: 'Link to Scoring Methodology'\n }\n ],\n };\n public static Q9ePrescibe: NumDenPtsQuestion = {\n name: 'FormQ9ePrescribe',\n description: 'e-Prescribing',\n measureId: 'PI_EP_1',\n exclusionText:\n 'MIPS eligible clinician who writes fewer than 100 permissible prescriptions during the performance period.',\n maxPoints: 10,\n allowExclusion: true,\n helpText:\n 'At least one permissible prescription written by the MIPS eligible clinician is queried for a drug formulary and transmitted electronically using CEHRT.',\n minDenominator: 1,\n modalLinks: [\n {\n entryID: 1166298,\n linkText: 'Link to Measure Specification'\n\n },\n {\n linkText: 'Link to Scoring Methodology'\n }\n ],\n };\n\n public static Q10SupportSend: NumDenPtsQuestion = {\n name: 'FormQ10SupportSend',\n\n description: 'Support Electronic Referral Loops By - Sending Health Information',\n measureId: 'PI_HIE_1',\n exclusionText:\n 'MIPS eligible clinician who transfers a patient to another setting or refers a patient fewer than 100 times during the performance period.',\n maxPoints: 15,\n allowExclusion: true,\n helpText:\n 'For at least one transition of care of referral, the MIPS eligible clinician that transitions or refers their patient to another setting of care or health care provider -- (1) creates a summary of care record using certified electronic health record technology (CEHRT); and (2) electronically exchanges the summary of care record.',\n minDenominator: 1,\n modalLinks: [\n {\n entryID: 1166289,\n linkText: 'Link to Measure Specification'\n\n },\n {\n linkText: 'Link to Scoring Methodology'\n }\n ],\n };\n\n public static Q11SupportReceive: NumDenPtsQuestion = {\n name: 'FormQ11SupportReceive',\n description: 'Support Electronic Referral Loops By - Receiving and Reconciling Health Information',\n measureId: 'PI_HIE_4',\n exclusionText:\n 'MIPS eligible clinician who receives transitions of care or referrals or has patient encounters in which the MIPS eligible clinician has never before encountered the patient fewer than 100 times during the performance period.',\n maxPoints: 15,\n allowExclusion: true,\n helpText:\n 'For at least one electronic summary of care record received for patient encounters during the performance period for which a MIPS eligible clinician was the receiving party of a transition of care or referral, or for patient encounters during the performance period in which the MIPS eligible clinician has never before encountered the patient, the MIPS eligible clinician conducts clinical information reconciliation for medication,medication allergy, and current problem list.',\n minDenominator: 1,\n modalLinks: [\n {\n entryID: 1166310,\n linkText: 'Link to Measure Specification'\n\n },\n {\n linkText: 'Link to Scoring Methodology'\n }\n ],\n };\n\n public static Q12ProvideAccess: NumDenPtsQuestion = {\n name: 'FormQ12ProvideAccess',\n description: 'Provide Patients Electronic Access to Their Health Information',\n measureId: 'PI_PEA_1',\n exclusionText:\n 'MIPS eligible clinician who receives transitions of care or referrals or has patient encounters in which the MIPS eligible clinician has never before encountered the patient fewer than 100 times during the performance period.',\n maxPoints: 25,\n allowExclusion: false,\n helpText:\n // eslint-disable-next-line quotes\n \"For at least one unique patient seen by the MIPS eligible clinician: (1) The patient (or the patient-authorized representative) is provided timely access to view online, download, and transmit his or her health information; and (2) The MIPS eligible clinician ensures the patient's health information is available for the patient (or the patient-authorized representative) to access using any application of their choice that is configured to meet the technical specifications of the Application Programming Interface (API) in the MIPS eligible clinician's certfied electronic health record technology (CEHRT).\",\n minDenominator: 1,\n modalLinks: [\n {\n entryID: 1166290,\n linkText: 'Link to Measure Specification'\n\n },\n {\n linkText: 'Link to Scoring Methodology'\n }\n ],\n };\n\n public static Q14DrugMonitor: YesNonPtsQuestion = {\n name: 'FormQ14DrugMonitor',\n checkBoxOptions: [\n {\n checkId: 0,\n checkText: 'Yes',\n },\n {\n checkId: 1,\n checkText: 'No',\n }\n ],\n description: 'Query of Prescription Drug Monitoring Program',\n measureId: 'PI_EP_2',\n maxPoints: 10,\n allowExclusion: true,\n helpText:\n 'For at least one Schedule II opioid electronically prescribed using CEHRT during the performance period, the MIPS eligible clinician uses data from CEHRT to conduct a query of a PDMP for prescription drug history, except where prohibited and in accordance with applicable law.',\n exclusionText:\n 'MIPS eligible clinician who meets one or more of the following criteria: 1. Is unable to electronically prescribe Schedule II opioids and Schedule III and IV drugs in accordance with applicable law during the performance period; 2. Writes fewer than 100 permissible prescriptions during the performance period; 3. Querying a PDMP would impose an excessive workflow or cost burden prior to the start of the performance period they select in CY 2023.',\n modalLinks: [\n {\n entryID: 1166276,\n linkText: 'Link to Measure Specification'\n\n },\n {\n linkText: 'Link to Scoring Methodology'\n }\n ],\n };\n\n public static Q71HealthInformationExchange: CheckboxQuestion = {\n name: 'FormQ71HealthInformationExchange',\n description: 'Health Information Exchange (HIE) Bi-Directional Exchange',\n measureId: 'PI_HIE_5',\n //checkBoxText: 'Participates in an HIE',\n checkBoxOptions: [\n {\n checkId: 0,\n checkText: 'CareQuality',\n },\n {\n checkId: 1,\n checkText: 'CommonWell',\n },\n {\n checkId: 2,\n checkText: 'eHealthExchange',\n },\n {\n checkId: 3,\n checkText: 'State/Regional HIE',\n },\n {\n checkId: 4,\n checkText: 'Other',\n },\n ],\n pointsText: 'Max',\n allowExclusion: false,\n helpText:\n 'The MIPS eligible clinician or group must attest that they engage in bidirectional exchange with an HIE to support transitions of care.',\n maxPoints: 30,\n modalLinks: [\n {\n entryID: 1166292,\n linkText: 'Link to Measure Specification'\n\n },\n {\n linkText: 'Link to Scoring Methodology'\n }\n ],\n };\n\n public static Q77HighPriorityGuideSAFER: SecurityRiskQuestion = {\n name: 'FormQ77HighPriorityGuideSAFER',\n description: 'High Priority Practices Guide of the SAFER Guide Attestation',\n promptQuarter: false,\n helpText:\n // eslint-disable-next-line quotes\n \"Conduct an annual assessment of the High Priority Practices Guide SAFER Guides.\",\n measureId: 'PI_PPHI_2',\n riskOptions: [\n {\n optionId: 3,\n optionText: 'WillComplete',\n },\n {\n optionId: 4,\n optionText: 'Complete',\n },\n {\n optionId: 5,\n optionText: 'Unset',\n }\n ],\n modalLinks: [\n {\n entryID: 1166308,\n linkText: 'Link to Measure Specification'\n\n },\n {\n linkText: 'Link to Scoring Methodology'\n }\n ],\n };\n\n public static Q78BonusRegistryReporting: CheckboxQuestion = {\n name: 'FormQ78BonusRegistryReporting',\n description: 'Select additional registries that you are reporting on',\n //measureId: '',\n //checkBoxText: 'Has queried a prescription drug monitoring program',\n checkBoxOptions: [\n {\n checkId: 0,\n checkText: 'Clinical Data Registry',\n },\n {\n checkId: 1,\n checkText: 'Public Health Registry',\n },\n {\n checkId: 2,\n checkText: 'Syndromic Surveillance',\n }\n ],\n pointsText: 'Bonus',\n helpText:\n 'Reporting on one of the three optional registry options will result in 5 total bonus points.',\n maxPoints: 5,\n allowExclusion: false,\n modalLinks: [\n {\n entryID: 1166295,\n linkText: 'Clinical Data Registry'\n\n },\n {\n entryID: 1166309,\n linkText: 'Public Health Registry'\n\n },\n {\n entryID: 1166278,\n linkText: 'Syndromic Surveillance'\n\n },\n {\n linkText: 'Link to Scoring Methodology'\n }\n ],\n };\n public static Q82TEFCA: YesNonPtsQuestion = {\n name: 'FormQ82TEFCA',\n checkBoxOptions: [\n {\n checkId: 0,\n checkText: 'Yes',\n },\n {\n checkId: 1,\n checkText: 'No',\n }\n ],\n description: 'Enabling Exchange Under the Trusted Exchange Framework and Common Agreement (TEFCA) ',\n measureId: 'PI_HIE_6',\n exclusionText:\n 'MIPS eligible clinician who writes fewer than 100 permissible prescriptions during the performance period.',\n maxPoints: 30,\n allowExclusion: false,\n helpText:\n 'The MIPS eligible clinician or group must attest to participation of an ONC recognized Trusted Exchange Framework and Common Agreement (TEFCA)',\n modalLinks: [\n {\n entryID: 1166277,\n linkText: 'Link to Measure Specification'\n\n },\n {\n linkText: 'Link to Scoring Methodology'\n }\n ],\n };\n public static Q83Date: DateQuestion = {\n name: 'FormQ83Date',\n description: 'Date Range',\n allowExclusion: true,\n requiredDayDif: 180,\n helpText:\n 'Report PI data on the best 180+ continuous days within the calendar year',\n };\n}\n","\n
\n
\n
\n
\n {{questionInfo.measureId}} | Max: {{maxPoints}} Points\n
\n \n
\n
{{questionInfo.description}}
\n
\n \n \n
\n
\n
\n
\n\n \n \n \n\n
\n\n \n \n \n\n \n \n \n
\n
\n
\n

\n {{parentForm.controls[questionInfo.name].get('FormQResponses.0.ResponsePointValue').value\n || 0}}\n

\n
pts
\n
\n
\n
\n
\n
\n
{{percentage | percent}}
\n
\n
\n
\n\n
\n
{{ error }}
\n
\n\n
\n
\n\n
\n
\n
\n
\n
Proceed With Exemption for {{questionInfo.description}}?
\n
\n
\n
\n {{questionInfo.exclusionText}}\n
\n
\n \n \n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, UntypedFormGroup, UntypedFormControl } from '@angular/forms';\nimport { ToolTipMeasureDetails } from '@shared/models/forms/tool-tip-measure-details';\nimport { FormQuestionConstants } from '@shared/models/forms/form-question-constants';\nimport { NumDenPtsQuestion, ExclusionRequestDetails } from '@shared/models/forms/forms-frontend';\n@Component({\n selector: 'coach-submit-interoperability-question',\n templateUrl: './submit-interoperability-question.component.html',\n styleUrls: ['./submit-interoperability-question.component.scss'],\n})\nexport class SubmitInteroperabilityQuestionComponent implements OnInit {\n @Input() parentForm: UntypedFormGroup;\n @Input() questionInfo: NumDenPtsQuestion;\n\n _maxPoints: number;\n private hasInitialized = false;\n @Input() set maxPoints(value: number) {\n this._maxPoints = value;\n\n if (this.hasInitialized) {\n this.updatePoints();\n }\n }\n get maxPoints(): number {\n return this._maxPoints;\n }\n\n @Output()\n showHelpText = new EventEmitter();\n\n @Output() checkBoxChanged = new EventEmitter();\n\n public get isDisabled(): boolean {\n return (\n this.parentForm.get(`${this.questionInfo.name}.isDisabled`)?.value ===\n true\n );\n }\n\n get checkedControl(): AbstractControl {\n return this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.UserResponse`\n );\n }\n\n public errors = [];\n\n\n public errTexts = {\n NUM :'Numerator cannot be negative',\n DEN : 'Denominator cannot be less than ',\n NUMDEN : 'Denominator cannot be less than numerator',\n EMPTY : 'Field(s) cannot be empty'}\n\n public percentage: number;\n public percentRounded: number;\n public showExclusionModal = false;\n\n private readonly exclusionTypeId = 3;\n private readonly responseTypeId = 4;\n\n ngOnInit(): void {\n this.hasInitialized = true;\n this.updatePoints();\n }\n\n toggleInfoText(): void {\n let helpText = '';\n\n switch (this.questionInfo.name) {\n case FormQuestionConstants.Q9ePrescibe.name:\n helpText = FormQuestionConstants.Q9ePrescibe.helpText;\n break;\n case FormQuestionConstants.Q10SupportSend.name:\n helpText = FormQuestionConstants.Q10SupportSend.helpText;\n break;\n case FormQuestionConstants.Q11SupportReceive.name:\n helpText = FormQuestionConstants.Q11SupportReceive.helpText;\n break;\n case FormQuestionConstants.Q12ProvideAccess.name:\n helpText = FormQuestionConstants.Q12ProvideAccess.helpText;\n break;\n case FormQuestionConstants.Q14DrugMonitor.name:\n helpText = FormQuestionConstants.Q14DrugMonitor.helpText;\n break;\n }\n\n this.showHelpText.emit({\n detailsText: helpText,\n modalLinks: this.questionInfo.modalLinks,\n });\n }\n\n updatePoints(): void {\n if (this.parentForm == null) {\n return;\n }\n\n const pointsControl = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.ResponsePointValue`\n );\n const numerator = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.1.ResponsePointValue`\n ).value as number;\n const denominator = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.2.ResponsePointValue`\n ).value as number;\n const exclusion = this.parentForm.get(\n `${this.questionInfo.name}.exclusion`\n ).value;\n\n this.toggleErrorTexts(2);\n\n\n if (exclusion) {\n pointsControl.setValue(0);\n } else {\n if (this.isNumDenValid()) {\n this.percentage = numerator / denominator;\n const pointValue = Math.round(this.percentage * this.maxPoints);\n const pointValueTo1 = Math.ceil(this.percentage * this.maxPoints);\n\n if (pointValue === 0 && pointValueTo1 === 1) {\n pointsControl.setValue(pointValueTo1);\n } else {\n pointsControl.setValue(pointValue);\n }\n this.percentRounded = Math.round(this.percentage * 100);\n }\n }\n }\n\n\n public isNumDenValid(): boolean {\n const num = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.1.ResponsePointValue`\n ) as UntypedFormControl;\n const den = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.2.ResponsePointValue`\n ) as UntypedFormControl;\n if (num.valid && den.valid) {\n if (num.value >= 0 && den.value >= 0) {\n if (num.value <= den.value) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n } else if ((num.dirty || num.touched) && (den.dirty || den.touched)) {\n if (num.value < 0 && den.value < 1) {\n return false;\n }\n } else if ((num.dirty || num.touched) && (den.pristine || den.untouched)) {\n if (num.value < 0) {\n return false;\n }\n } else if ((den.dirty || den.touched) && (num.pristine || num.untouched)) {\n if (den.value < 1) {\n return false;\n }\n } else {\n return false;\n }\n }\n\n public toggleErrorTexts(numDenIndex?: number): void {\n if (numDenIndex) {\n const num = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.1.ResponsePointValue`\n ) as UntypedFormControl;\n const den = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.2.ResponsePointValue`\n ) as UntypedFormControl;\n\n // Check if numerator OR denominator is empty\n const emptyExists = this.errors.some((e) => e === this.errTexts.EMPTY);\n if (\n (num.touched && num.value === null) ||\n (den.touched && den.value === null)\n ) {\n if (!emptyExists) {\n this.errors.push(this.errTexts.EMPTY);\n }\n } else {\n if (emptyExists) {\n const i = this.errors.indexOf(this.errTexts.EMPTY);\n this.errors.splice(i, 1);\n }\n }\n // Check if denominator is LESS THAN numerator\n const numDenExists = this.errors.some((e) => e === this.errTexts.NUMDEN);\n if (num.value >= 0 && den.value >= 0 && num.value > den.value) {\n if (!numDenExists) {\n this.errors.push(this.errTexts.NUMDEN);\n }\n } else {\n if (numDenExists) {\n const i = this.errors.indexOf(this.errTexts.NUMDEN);\n this.errors.splice(i, 1);\n }\n }\n // Check if numerator is LESS THAN 0\n const numExists = this.errors.some((e) => e === this.errTexts.NUM);\n if (num.value < 0 && num.value !== null) {\n if (!numExists) {\n this.errors.push(this.errTexts.NUM);\n }\n } else {\n if (numExists) {\n const i = this.errors.indexOf(this.errTexts.NUM);\n this.errors.splice(i, 1);\n }\n }\n // Check if denominator is LESS THAN minimum denominator\n const denExists = this.errors.some((e) => e === this.errTexts.DEN);\n if (den.value < this.questionInfo.minDenominator && den.value !== null) {\n //Check if both den and num are 0, if so allow it as an exception\n if (den.value == 0 && num.value == 0) {\n if (denExists) {\n const i = this.errors.indexOf(this.errTexts.DEN);\n this.errors.splice(i, 1);\n }\n }\n else {\n if (!denExists) {\n this.errors.push(this.errTexts.DEN);\n }\n }\n } else {\n if (denExists) {\n const i = this.errors.indexOf(this.errTexts.DEN);\n this.errors.splice(i, 1);\n }\n }\n }\n }\n\n numeratorChanged(): void {\n this.updatePoints();\n this.timeStamp(1);\n this.parentForm.get(`${this.questionInfo.name}.FormQResponses.1.ResponsePointValue`\n ).updateValueAndValidity();\n }\n\n denominatorChanged(): void {\n this.updatePoints();\n this.timeStamp(2);\n this.parentForm.get(`${this.questionInfo.name}.FormQResponses.1.ResponsePointValue`\n ).updateValueAndValidity();\n }\n\n exclusionChanged(): void {\n const question = this.parentForm.controls[this.questionInfo.name];\n const exclusionControl = question.get('exclusion');\n\n if (exclusionControl.value) {\n this.showExclusionModal = true;\n } else {\n this.setFormType(this.responseTypeId);\n this.updatePoints();\n this.enableDisableQuestions(question, 'enable');\n this.checkBoxChanged.emit({\n questionname: this.questionInfo.name,\n status: false,\n });\n }\n }\n\n confirmExclusion(): void {\n const question = this.parentForm.controls[this.questionInfo.name];\n\n const pointsControl = question.get('FormQResponses.0.ResponsePointValue');\n pointsControl.setValue(-1);\n this.setFormType(this.exclusionTypeId);\n this.showExclusionModal = false;\n this.enableDisableQuestions(question, 'disable');\n\n\n this.checkBoxChanged.emit({\n questionname: this.questionInfo.name,\n status: true,\n });\n }\n\n setFormType(type: number): void {\n const formTypeControl = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.FormResponseTypeID`\n );\n formTypeControl.setValue(type);\n }\n\n cancelExclusion(): void {\n const question = this.parentForm.controls[this.questionInfo.name];\n const exclusionControl = question.get('exclusion');\n exclusionControl.setValue(false);\n this.showExclusionModal = false;\n }\n\n enableDisableQuestions(\n question: AbstractControl,\n enableOrDisable: 'enable' | 'disable'\n ): void {\n if (enableOrDisable === 'enable') {\n question.get('FormQResponses').enable({ emitEvent: false });\n question\n .get('FormQResponses.0.ResponsePointValue')\n .reset(null, { emitEvent: false });\n question\n .get('FormQResponses.1.ResponsePointValue')\n .reset(null, { emitEvent: false });\n question\n .get('FormQResponses.2.ResponsePointValue')\n .reset(null, { emitEvent: false });\n } else if (enableOrDisable === 'disable') {\n question\n .get('FormQResponses.0.ResponsePointValue')\n .reset(0, { emitEvent: false });\n question\n .get('FormQResponses.1.ResponsePointValue')\n .reset(-1, { emitEvent: false });\n question\n .get('FormQResponses.2.ResponsePointValue')\n .reset(-1, { emitEvent: false });\n }\n }\n\n timeStamp(numDenIndex?: number): void {\n const newTimeStamp = new Date().toJSON();\n this.parentForm.patchValue(\n { LastUpdateDateTime: newTimeStamp },\n { emitEvent: false }\n );\n this.parentForm.controls[this.questionInfo.name].patchValue(\n { LastUpdateDateTime: newTimeStamp },\n { emitEvent: false }\n );\n if (numDenIndex) {\n this.parentForm.controls[this.questionInfo.name]\n .get('FormQResponses.0')\n .patchValue({ LastUpdateDateTime: newTimeStamp }, { emitEvent: false });\n this.parentForm.controls[this.questionInfo.name]\n .get('FormQResponses.' + numDenIndex.toString())\n .patchValue({ LastUpdateDateTime: newTimeStamp }, { emitEvent: false });\n }\n }\n}\n","\n
\n
\n
\n
\n {{questionInfo.measureId}} | Max: N/A\n \n
\n \n
\n
{{questionInfo.description}}
\n
\n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
Will Complete in Quarter
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { ToolTipMeasureDetails } from '@shared/models/forms/tool-tip-measure-details';\nimport { FormQuestionConstants } from '@shared/models/forms/form-question-constants';\nimport { SecurityRiskQuestion } from '@shared/models/forms/forms-frontend';\n\n@Component({\n selector: 'coach-submit-interoperability-security-risk',\n templateUrl: './submit-interoperability-security-risk.component.html',\n styleUrls: ['./submit-interoperability-security-risk.component.scss'],\n})\nexport class SubmitInteroperabilitySecurityRiskComponent implements OnInit {\n @Input() parentForm: UntypedFormGroup;\n @Input() questionInfo: SecurityRiskQuestion;\n @Output() showHelpText = new EventEmitter();\n\n public willComplete = 'WillComplete';\n public willCompleteIn = 'WillCompletein';\n public complete = 'Complete';\n public no = 'no';\n public unset = 'unset'\n //public q8;\n public isComplete: string;\n private readonly completeText = 'Complete';\n private readonly willCompleteInText = 'WillCompletein';\n private readonly willCompleteText = 'WillComplete';\n\n ngOnInit(): void {\n const response: string = this.parentForm\n .get(`${this.questionInfo.name}.FormQResponses.0.UserResponse`)\n ?.value?.toString();\n const completeControl = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.complete`\n );\n\n if (response != null && response.indexOf(this.willCompleteText) >= 0 && this.questionInfo.promptQuarter == false) {\n completeControl?.setValue(this.willComplete);\n } else if (response != null && response.indexOf(this.willCompleteText) >= 0 && this.questionInfo.promptQuarter == true) {\n completeControl?.setValue(this.willComplete);\n } else if (response != null && response.indexOf(this.completeText) >= 0) {\n completeControl?.setValue(this.complete);\n } else if (response != null && response.indexOf(this.no) >= 0) {\n completeControl?.setValue(this.no);\n } else {\n completeControl?.setValue(this.unset);\n }\n\n }\n\n toggleInfoText(): void {\n this.showHelpText.emit({\n detailsText: this.questionInfo.helpText,\n modalLinks: this.questionInfo.modalLinks,\n });\n }\n}\n","\n
\n
\n
\n
\n {{questionInfo.measureId}} | {{questionInfo.pointsText}}: {{maxPoints}} Points\n \n
\n \n
\n
{{questionInfo.description}}
\n\n
\n \n \n
\n\n
\n \n
\n
\n
\n \n \n
\n
\n \n \n
\n\n
\n\n
\n
\n
\n
\n\n\n\n\n
\n
\n
\n
\n
Proceed With Exemption for {{questionInfo.description}}?
\n
\n
\n
\n {{questionInfo.exclusionText}}\n
\n
\n \n \n
\n
\n
\n\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AbstractControl, UntypedFormGroup, FormArray, FormControl, FormBuilder } from '@angular/forms';\nimport { CheckboxQuestion, CheckboxQuestionCheckboxOptions, ExclusionRequestDetails} from '@shared/models/forms/forms-frontend';\nimport { ToolTipMeasureDetails } from '@shared/models/forms/tool-tip-measure-details';\nimport { SecurityRiskQuestion } from '@shared/models/forms/forms-frontend';\n\n@Component({\n selector: 'coach-submit-interoperability-yes-no',\n templateUrl: './submit-interoperability-yes-no.component.html',\n styleUrls: ['./submit-interoperability-yes-no.component.scss'],\n})\nexport class SubmitInteroperabilityYesNoComponent implements OnInit {\n @Input() public parentForm: UntypedFormGroup;\n @Input() public questionInfo: CheckboxQuestion;\n\n _maxPoints: number;\n @Input() set maxPoints(value: number) {\n this._maxPoints = value;\n\n\n }\n get maxPoints(): number {\n return this._maxPoints;\n }\n\n @Output() radioButtonChanged = new EventEmitter();\n @Output()\n showHelpText = new EventEmitter();\n\n @Output() checkBoxExclusionChanged = new EventEmitter();\n\n\n public no = 'no';\n public unset = 'unset'\n public yes = 'yes';\n\n public exclusionSelected = false;\n\n\n private hasInitialized = false;\n\n public showExclusionModal = false;\n\n public get isDisabled(): boolean {\n return (\n this.parentForm.get(`${this.questionInfo.name}.isDisabled`)?.value ===\n true\n );\n }\n\n get pointsControl(): AbstractControl {\n return this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.ResponsePointValue`\n );\n }\n\n\n\n ngOnInit(): void {\n\n const response: string = this.parentForm\n .get(`${this.questionInfo.name}.FormQResponses.0.UserResponse`)\n ?.value?.toString();\n const completeControl = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.complete`\n );\n\n if (response != null && response.indexOf(this.yes) >= 0) {\n completeControl?.setValue(this.yes);\n this.changeResponse(this.yes);\n } else if (response != null && response.indexOf(this.no) >= 0) {\n completeControl?.setValue(this.no);\n this.changeResponse(this.no);\n } else {\n completeControl?.setValue(this.unset);\n }\n }\n\n public changeResponse(x) {\n\n\n if (x == this.yes) {\n this.pointsControl.setValue(this.maxPoints);\n } else {\n this.pointsControl.setValue(0);\n }\n\n\n this.radioButtonChanged.emit(x);\n\n this.parentForm.updateValueAndValidity({\n onlySelf: false,\n emitEvent: true,\n });\n\n }\n\n toggleInfoText(): void {\n this.showHelpText.emit({\n detailsText: this.questionInfo.helpText,\n modalLinks: this.questionInfo.modalLinks,\n });\n }\n\n\n exclusionChanged(): void {\n const question = this.parentForm.controls[this.questionInfo.name];\n const exclusionControl = question.get('exclusion');\n\n if (exclusionControl.value) {\n this.showExclusionModal = true;\n } else {\n this.setFormType(this.responseTypeId);\n //this.updatePoints();\n this.exclusionSelected = false;\n this.enableDisableQuestions(question, 'enable');\n this.checkBoxExclusionChanged.emit({\n questionname: this.questionInfo.name,\n status: false,\n });\n }\n }\n\n confirmExclusion(): void {\n const question = this.parentForm.controls[this.questionInfo.name];\n\n const pointsControl = question.get('FormQResponses.0.ResponsePointValue');\n pointsControl.setValue(-1);\n this.setFormType(this.exclusionTypeId);\n this.showExclusionModal = false;\n this.enableDisableQuestions(question, 'disable');\n\n this.exclusionSelected = true;\n\n\n this.checkBoxExclusionChanged.emit({\n questionname: this.questionInfo.name,\n status: true,\n });\n }\n\n cancelExclusion(): void {\n const question = this.parentForm.controls[this.questionInfo.name];\n const exclusionControl = question.get('exclusion');\n exclusionControl.setValue(false);\n this.showExclusionModal = false;\n }\n\n\n enableDisableQuestions(\n question: AbstractControl,\n enableOrDisable: 'enable' | 'disable'\n ): void {\n if (enableOrDisable === 'enable') {\n question.get('FormQResponses').enable({ emitEvent: false });\n question\n .get('FormQResponses.0.ResponsePointValue')\n .reset(null, { emitEvent: false });\n question\n .get('FormQResponses.0.UserResponse')\n .reset(null, { emitEvent: false });\n } else if (enableOrDisable === 'disable') {\n question\n .get('FormQResponses.0.ResponsePointValue')\n .reset(0, { emitEvent: false });\n question\n .get('FormQResponses.0.UserResponse')\n .reset('', { emitEvent: false });\n }\n }\n\n setFormType(type: number): void {\n const formTypeControl = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.FormResponseTypeID`\n );\n formTypeControl.setValue(type);\n }\n\n private readonly exclusionTypeId = 3;\n private readonly responseTypeId = 4;\n\n}\n","
\n
\n
\n
\n Max: 25 Points\n
\n \n
\n
Registry Reporting
\n
\n
Report the two required registries.
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Registries1st2nd
Request Exclusion\n
\n \n \n
\n
\n
\n \n \n
\n
Immunization Registry\n
\n \n \n
\n
\n
\n \n \n
\n
Electronic Case\n
\n \n \n
\n
\n
\n \n \n
\n
None\n
\n \n \n
\n
\n
\n \n \n
\n
\n\n
\n
\n\n
\n
\n
\n
    \n
  • If you claim an exclusion and report on one registry, you will get a full 10\n points.
  • \n
  • If you select two exclusions, the 10 points will be re-weighted to Provide\n Patients to their Health Information measure making it worth 50 points.
  • \n
  • If you cannot report on two registries or claim exclusions the entire\n Promoting Interoperability category will be scored as a zero per CMS.
  • \n
\n\n

Registry Reporting Links to Each Registry Specification

\n\n \n
\n
\n \n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\n@Component({\n selector: 'coach-submit-interoperability-registry-question',\n templateUrl: './submit-interoperability-registry-question.component.html',\n styleUrls: ['./submit-interoperability-registry-question.component.scss']\n})\nexport class SubmitInteroperabilityRegistryQuestionComponent {\n\n @Input() interopForm: UntypedFormGroup;\n\n public isInfoTextOpen = false;\n\n constructor() { }\n\n}\n","\n
\n
\n
\n
\n {{questionInfo.measureId}} | {{questionInfo.pointsText}}: {{maxPoints}} Points\n
\n \n
\n
{{questionInfo.description}}
\n
\n \n \n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n\n\n\n
\n
\n
\n
\n
Proceed With Exemption for {{questionInfo.description}}?
\n
\n
\n
\n {{questionInfo.exclusionText}}\n
\n
\n \n \n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AbstractControl, UntypedFormGroup, UntypedFormArray, UntypedFormControl, UntypedFormBuilder } from '@angular/forms';\nimport { CheckboxQuestion, CheckboxQuestionCheckboxOptions, ExclusionRequestDetails} from '@shared/models/forms/forms-frontend';\nimport { ToolTipMeasureDetails } from '@shared/models/forms/tool-tip-measure-details';\n\n@Component({\n selector: 'coach-checkbox-question',\n templateUrl: './checkbox-question.component.html',\n styleUrls: ['./checkbox-question.component.scss'],\n})\nexport class CheckboxQuestionComponent implements OnInit {\n @Input() public parentForm: UntypedFormGroup;\n @Input() public questionInfo: CheckboxQuestion;\n\n _maxPoints: number;\n @Input() set maxPoints(value: number) {\n this._maxPoints = value;\n\n\n }\n get maxPoints(): number {\n return this._maxPoints;\n }\n\n @Output() checkBoxChanged = new EventEmitter();\n @Output()\n showHelpText = new EventEmitter();\n\n\n @Output() checkBoxExclusionChanged = new EventEmitter();\n\n public get isDisabled(): boolean {\n return (\n this.parentForm.get(`${this.questionInfo.name}.isDisabled`)?.value ===\n true\n );\n }\n\n public get isExcluded(): boolean {\n return (\n this.parentForm.get(`${this.questionInfo.name}.exclusion`)?.value ===\n true\n );\n }\n\n public formCheck: UntypedFormGroup;\n public checkedList: CheckboxQuestionCheckboxOptions[] = [];\n private selectedselectedCheckListValues: string;\n public formCheckSub: Subscription;\n public answerForm: UntypedFormGroup;\n\n public showExclusionModal = false;\n private readonly exclusionTypeId = 3;\n private readonly responseTypeId = 4;\n\n\n private addCheckboxes() {\n if (this.questionInfo != undefined) {\n this.questionInfo.checkBoxOptions.forEach(() =>\n this.chklstFormArray.push(new UntypedFormControl(false))\n );\n }\n}\n\n get chklstFormArray() {\n return this.formCheck.get('chkbxlst') as UntypedFormArray;\n }\n\n private hasInitialized = false;\n\n get checkedControl(): AbstractControl {\n return this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.UserResponse`\n );\n }\n\n get pointsControl(): AbstractControl {\n return this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.ResponsePointValue`\n );\n }\n\n constructor(\n fb: UntypedFormBuilder) {\n this.answerForm = fb.group({\n formAnswer: fb.control(''),\n formPoints: fb.control('')\n });\n this.formCheck = fb.group({\n chkbxlst: fb.array([]),\n });\n this.addCheckboxes();\n }\n\n ngOnInit(): void {\n const response: string = this.pointsControl?.value?.toString();\n const checkedControl = this.checkedControl;\n\n this.addCheckboxes();\n this.formCheckSub = this.formCheck.valueChanges.subscribe(() => {\n this.updateSelectedCheckList();\n });\n this.checkedList = this.questionInfo.checkBoxOptions;\n\n const value = parseInt(response);\n\n this.hasInitialized = true;\n\n this.checkBoxChanged.emit(this.checkedControl?.value);\n//one or the other?\n this.checkBoxChanged.emit(this.selectedselectedCheckListValues);\n\n///Pickup here\n const questionControl = this.parentForm.get(`${this.questionInfo.name}.FormQResponses.0.UserResponse`);\n\n if (questionControl.value != '' && questionControl.value != null) {\n const chkList = questionControl.value.split(',');\n\n this.chklstFormArray.clear();\n this.questionInfo.checkBoxOptions?.forEach((chk) => {\n const isSet = chkList.some((x) => x === chk.checkText);\n this.chklstFormArray.push(new UntypedFormControl(isSet));\n });\n\n }\n }\n\n toggleInfoText(): void {\n this.showHelpText.emit({\n detailsText: this.questionInfo.helpText,\n modalLinks: this.questionInfo.modalLinks,\n });\n }\n\n // updateValue(): void {\n // if (this.checkedControl.value) {\n // this.pointsControl.setValue(this.maxPoints);\n // } else {\n // this.pointsControl.setValue(0);\n // }\n\n // this.checkBoxChanged.emit(this.checkedControl.value);\n\n // this.parentForm.updateValueAndValidity({\n // onlySelf: false,\n // emitEvent: true,\n // });\n // }\n\n public updateSelectedCheckList() {\n if (this.checkedControl.value) {\n this.pointsControl.setValue(this.maxPoints);\n } else {\n this.pointsControl.setValue(0);\n }\n\n const selectedCheckList: CheckboxQuestionCheckboxOptions[] = this.formCheck\n .get('chkbxlst')\n .value.map((selected, i) => (selected ? this.checkedList[i] : null))\n .filter((p) => p !== null);\n\n this.selectedselectedCheckListValues = selectedCheckList\n .map((p) => p.checkText)\n .toString();\n\n if (this.selectedselectedCheckListValues) {\n this.pointsControl.setValue(this.maxPoints);\n } else {\n this.pointsControl.setValue(0);\n }\n\n this.checkedControl.setValue(this.selectedselectedCheckListValues);\n\n this.checkBoxChanged.emit(this.selectedselectedCheckListValues);\n\n this.parentForm.updateValueAndValidity({\n onlySelf: false,\n emitEvent: true,\n });\n\n // // update names\n // const selectedselectedCheckListValues = selectedCheckList\n // .map((p) => p.checkText)\n // .toString();\n\n // this.answerUpdated.emit([\n // this.sectionIndex,\n // this.questionIndex,\n // selectedselectedCheckListValues,\n // this.question.questionId\n // ]);\n\n }\n\n exclusionChanged(): void {\n const question = this.parentForm.controls[this.questionInfo.name];\n const exclusionControl = question.get('exclusion');\n\n if (exclusionControl.value) {\n this.showExclusionModal = true;\n } else {\n this.setFormType(this.responseTypeId);\n this.updatePoints();\n this.enableDisableQuestions(question, 'enable');\n this.checkBoxExclusionChanged.emit({\n questionname: this.questionInfo.name,\n status: false,\n });\n }\n }\n\n confirmExclusion(): void {\n const question = this.parentForm.controls[this.questionInfo.name];\n\n const pointsControl = question.get('FormQResponses.0.ResponsePointValue');\n pointsControl.setValue(-1);\n this.setFormType(this.exclusionTypeId);\n this.showExclusionModal = false;\n this.enableDisableQuestions(question, 'disable');\n\n\n this.checkBoxExclusionChanged.emit({\n questionname: this.questionInfo.name,\n status: true,\n });\n }\n\n setFormType(type: number): void {\n const formTypeControl = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.FormResponseTypeID`\n );\n formTypeControl.setValue(type);\n }\n\n cancelExclusion(): void {\n const question = this.parentForm.controls[this.questionInfo.name];\n const exclusionControl = question.get('exclusion');\n exclusionControl.setValue(false);\n this.showExclusionModal = false;\n }\n\n enableDisableQuestions(\n question: AbstractControl,\n enableOrDisable: 'enable' | 'disable'\n ): void {\n if (enableOrDisable === 'enable') {\n question.get('FormQResponses').enable({ emitEvent: false });\n question\n .get('FormQResponses.0.ResponsePointValue')\n .reset(null, { emitEvent: false });\n question\n .get('FormQResponses.0.UserResponse')\n .reset(null, { emitEvent: false });\n } else if (enableOrDisable === 'disable') {\n question\n .get('FormQResponses.0.ResponsePointValue')\n .reset(0, { emitEvent: false });\n question\n .get('FormQResponses.0.UserResponse')\n .reset('', { emitEvent: false });\n }\n }\n\n updatePoints(): void {\n if (this.parentForm == null) {\n return;\n }\n\n const pointsControl = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.ResponsePointValue`\n );\n // const numerator = this.parentForm.get(\n // `${this.questionInfo.name}.FormQResponses.1.ResponsePointValue`\n // ).value as number;\n // const denominator = this.parentForm.get(\n // `${this.questionInfo.name}.FormQResponses.2.ResponsePointValue`\n // ).value as number;\n const exclusion = this.parentForm.get(\n `${this.questionInfo.name}.exclusion`\n ).value;\n\n if (exclusion) {\n pointsControl.setValue(0);\n } else {\n\n const pointValue = Math.round(this.maxPoints);\n const pointValueTo1 = Math.ceil(this.maxPoints);\n\n if (pointValue === 0 && pointValueTo1 === 1) {\n pointsControl.setValue(pointValueTo1);\n } else {\n pointsControl.setValue(pointValue);\n }\n\n }\n }\n}\n","\n
\n\n\n \n
\n\n
\n\n \n \n \n \n\n \n \n \n \n
\n\n
\n
{{ error }}
\n
\n\n\n
\n
\n
\n
\n\n\n\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AbstractControl, UntypedFormGroup, FormArray, UntypedFormControl, FormBuilder } from '@angular/forms';\nimport { DateQuestion, CheckboxQuestionCheckboxOptions, ExclusionRequestDetails} from '@shared/models/forms/forms-frontend';\nimport { ToolTipMeasureDetails } from '@shared/models/forms/tool-tip-measure-details';\nimport moment, { Moment } from 'moment';\n\n@Component({\n selector: 'coach-submit-interoperability-date-range',\n templateUrl: './submit-interoperability-date-range.component.html',\n styleUrls: ['./submit-interoperability-date-range.component.scss'],\n})\nexport class SubmitInteroperabilityDateRangeComponent implements OnInit {\n @Input() public parentForm: UntypedFormGroup;\n @Input() public questionInfo: DateQuestion;\n @Output() showHelpText = new EventEmitter();\n\n public startDateText = 'startDate';\n public endDateText = 'endDate';\n\n public startDateValue;\n public endDateValue;\n\n public dateRange;\n\n public errors = [];\n\n private hasInitialized = false;\n\n public showExclusionModal = false;\n\n public dateDifference;\n\n public get isDisabled(): boolean {\n return (\n this.parentForm.get(`${this.questionInfo.name}.isDisabled`)?.value ===\n true\n );\n }\n\n public errTexts = {\n StartShort :'Start date must be at least {{ReqDayDiff}} days before end date',\n EndShort : 'End date must be at least {{ReqDayDiff}} days after start date',\n StartFuture : 'Start date is in the futre, please select actual start date',\n EndFuture : 'End date is a future date',\n InvalidStartDate : 'Enter Valid Date',\n InvalidEndDate : 'Enter Valid Date'}\n\n\n get startControl(): AbstractControl {\n return this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.periodStartDate`\n );\n }\n\n get endControl(): AbstractControl {\n return this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.periodEndDate`\n );\n }\n\n ngOnInit(): void {\n\n this.dateDifference = this.questionInfo.requiredDayDif;\n\n this.errTexts.StartShort = this.errTexts.StartShort.replace('{{ReqDayDiff}}', this.dateDifference.toString());\n this.errTexts.EndShort = this.errTexts.EndShort.replace('{{ReqDayDiff}}', this.dateDifference.toString());\n\n const response: string = this.parentForm\n .get(`${this.questionInfo.name}.FormQResponses.0.UserResponse`)\n ?.value?.toString();\n\n if (response != null) {\n const responseDate = response.split(\"|\");\n this.startControl.setValue(responseDate[0]);\n this.endControl.setValue(responseDate[1]);\n\n this.startDateValue = moment(responseDate[0]);\n this.endDateValue = moment(responseDate[1]);\n\n this.dateRange = new Date(this.startDateValue).toISOString().slice(0,10) + \"|\" + new Date(this.endDateValue).toISOString().slice(0,10);\n\n this.toggleErrorTexts();\n\n\n } \n }\n\n public changeResponse(dateValue, controlName) {\n\n const dateChanged = moment(dateValue, 'YYYY-MM-DD');\n\n const today = moment();\n\n const endDate = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.periodEndDate`\n ) as UntypedFormControl;\n \n const startDate = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.periodStartDate`\n ) as UntypedFormControl;\n\n const responeValue = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.UserResponse`\n ) as UntypedFormControl;\n\n if (controlName === this.startDateText) {\n if (dateChanged.isValid()) {\n this.startDateValue = dateChanged;\n if (this.endDateValue == null) {\n this.endDateValue = moment(dateChanged).add(this.dateDifference, 'days');\n const newEndDate = new Date(this.endDateValue).toISOString().slice(0,10); \n this.endControl.setValue(newEndDate);\n \n } \n\n this.dateRange = new Date(this.startDateValue).toISOString().slice(0,10) + \"|\" + new Date(this.endDateValue).toISOString().slice(0,10);\n\n responeValue.setValue(this.dateRange);\n }\n else \n {\n this.startControl.setValue('');\n this.startDateValue = null;\n responeValue.setValue(null);\n }\n\n \n } else if (controlName === this.endDateText) { \n if (dateChanged.isValid()) {\n this.endDateValue = dateChanged;\n\n if (this.startDateValue == null) {\n this.startDateValue = moment(dateChanged).subtract(this.dateDifference, 'days');\n const newEndDate = new Date(this.startDateValue).toISOString().slice(0,10); \n this.startControl.setValue(newEndDate);\n \n } \n \n this.dateRange = new Date(this.startDateValue).toISOString().slice(0,10) + \"|\" + new Date(this.endDateValue).toISOString().slice(0,10);\n\n responeValue.setValue(this.dateRange);\n }\n else \n {\n this.endControl.setValue('');\n this.endDateValue = null;\n responeValue.setValue(null);\n }\n \n\n } \n\n this.toggleErrorTexts(dateValue, controlName);\n\n this.parentForm.updateValueAndValidity({\n onlySelf: false,\n emitEvent: true,\n });\n\n }\n\n public toggleErrorTexts(dateValue?, controlName?): void {\n\n const today = moment();\n\n //Check if Start date is in the future\n const startFutureExists = this.errors.some((e) => e === this.errTexts.StartFuture);\n if (this.startDateValue > today) {\n if (!startFutureExists) {\n this.errors.push(this.errTexts.StartFuture);\n }\n } else {\n if (startFutureExists) {\n const i = this.errors.indexOf(this.errTexts.StartFuture);\n this.errors.splice(i, 1);\n }\n }\n\n //Check if End date is in the future\n const endFutureExists = this.errors.some((e) => e === this.errTexts.EndFuture);\n if (this.endDateValue > today) {\n\n if (!endFutureExists) {\n this.errors.push(this.errTexts.EndFuture);\n }\n } else {\n if (endFutureExists) {\n const i = this.errors.indexOf(this.errTexts.EndFuture);\n this.errors.splice(i, 1);\n }\n }\n \n\n const inValidStartDateExists = this.errors.some((e) => e === this.errTexts.InvalidStartDate);\n const inValidEndDateExists = this.errors.some((e) => e === this.errTexts.InvalidEndDate);\n //Determine which control is being used\n if (controlName === this.startDateText) {\n const dateChanged = moment(dateValue, 'YYYY-MM-DD');\n //Determine if the changed start date is valid\n if (!dateChanged.isValid()) \n {\n\n if (!inValidStartDateExists) {\n this.errors.push(this.errTexts.InvalidStartDate);\n }\n } else {\n if (inValidStartDateExists) {\n const i = this.errors.indexOf(this.errTexts.InvalidStartDate);\n this.errors.splice(i, 1);\n }\n\n }\n\n //Determine if start date is greater than the required difference\n const startShortExists = this.errors.some((e) => e === this.errTexts.StartShort);\n const endShortExists = this.errors.some((e) => e === this.errTexts.EndShort);\n if (this.endDateValue.diff(this.startDateValue, 'days') < this.dateDifference) {\n if (!startShortExists) {\n this.errors.push(this.errTexts.StartShort);\n }\n } else {\n if (startShortExists) {\n const i = this.errors.indexOf(this.errTexts.StartShort);\n this.errors.splice(i, 1); \n }\n if (endShortExists) {\n const j = this.errors.indexOf(this.errTexts.EndShort);\n this.errors.splice(j, 1);\n }\n }\n\n \n } \n else if (controlName === this.endDateText) {\n const dateChanged = moment(dateValue, 'YYYY-MM-DD');\n //Determine if the changed end date is valid\n if (!dateChanged.isValid()) {\n\n if (!inValidEndDateExists) {\n this.errors.push(this.errTexts.InvalidEndDate);\n }\n } else {\n if (inValidEndDateExists) {\n const i = this.errors.indexOf(this.errTexts.InvalidEndDate);\n this.errors.splice(i, 1);\n }\n\n }\n\n //Determine if end date is greater than the required difference\n const endShortExists = this.errors.some((e) => e === this.errTexts.EndShort);\n const startShortExists = this.errors.some((e) => e === this.errTexts.StartShort);\n if (this.endDateValue.diff(this.startDateValue, 'days') < this.dateDifference) {\n if (!endShortExists) {\n this.errors.push(this.errTexts.EndShort);\n }\n } else {\n if (endShortExists) {\n const i = this.errors.indexOf(this.errTexts.EndShort);\n this.errors.splice(i, 1); \n }\n if (startShortExists) {\n const j = this.errors.indexOf(this.errTexts.StartShort);\n this.errors.splice(j, 1);\n }\n }\n }\n //If neither control has been touched/when editing saved/submitted forms\n else {\n //Check if the start value is null but end date is not null. Probably shouldn't be able to happen\n if (this.startDateValue == null && this.endDateValue != null) {\n if (!inValidStartDateExists) {\n this.errors.push(this.errTexts.InvalidStartDate);\n }\n } else {\n if (inValidStartDateExists) {\n const i = this.errors.indexOf(this.errTexts.InvalidStartDate);\n this.errors.splice(i, 1);\n }\n }\n\n //Check if the end value is null but start date is not null. Probably shouldn't be able to happen\n if (this.endDateValue == null && this.startDateValue != null) {\n if (!inValidEndDateExists) {\n this.errors.push(this.errTexts.InvalidEndDate);\n }\n } else {\n if (inValidEndDateExists) {\n const i = this.errors.indexOf(this.errTexts.InvalidEndDate);\n this.errors.splice(i, 1);\n }\n }\n\n //When editing, end date is less than the required difference\n const endShortExists = this.errors.some((e) => e === this.errTexts.EndShort);\n const startShortExists = this.errors.some((e) => e === this.errTexts.StartShort);\n if (this.endDateValue.diff(this.startDateValue, 'days') < this.dateDifference) {\n if (!endShortExists) {\n this.errors.push(this.errTexts.EndShort);\n }\n } else {\n if (endShortExists) {\n const i = this.errors.indexOf(this.errTexts.EndShort);\n this.errors.splice(i, 1); \n }\n if (startShortExists) {\n const j = this.errors.indexOf(this.errTexts.StartShort);\n this.errors.splice(j, 1);\n }\n }\n }\n \n }\n\n\n\n enableDisableQuestions(\n question: AbstractControl,\n enableOrDisable: 'enable' | 'disable'\n ): void {\n if (enableOrDisable === 'enable') {\n question.get('FormQResponses').enable({ emitEvent: false });\n question\n .get('FormQResponses.0.ResponsePointValue')\n .reset(null, { emitEvent: false });\n question\n .get('FormQResponses.0.UserResponse')\n .reset(null, { emitEvent: false });\n } else if (enableOrDisable === 'disable') {\n question\n .get('FormQResponses.0.ResponsePointValue')\n .reset(0, { emitEvent: false });\n question\n .get('FormQResponses.0.UserResponse')\n .reset('', { emitEvent: false });\n }\n }\n\n showInfoWithText () {\n this.showHelpText.emit({\n detailsText: this.questionInfo.helpText,\n modalLinks: this.questionInfo.modalLinks,\n });\n }\n\n setFormType(type: number): void {\n const formTypeControl = this.parentForm.get(\n `${this.questionInfo.name}.FormQResponses.0.FormResponseTypeID`\n );\n formTypeControl.setValue(type);\n }\n\n\n}\n","\n
\n
\n
\n
\n \n
\n
\n
{{ copy.title }}
\n
\n {{copy.submissionPeriod}}\n Due\n {{dueDate | date:'MMM dd'}}\n
\n
\n
\n
\n
\n {{ copy.formNoteInternal }}\n
\n\n
\n \n \n
\n\n
\n \n \n \n
\n\n
\n \n \n
\n
\n Exemption Special Status required\n
\n
\n
\n\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n Upload PI Measures Report\n \n
\n
\n
\n
\n \n \n \n
\n
{{ uploadedFileName }}
\n
\n
\n
\n
\n
\n
\n
\n You are exempt from submitting interoperability data at this time\n due to the special status selected.\n
\n
\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n
\n
\n
\n
\n
\n {{ totalPoints }} out of 100\n points\n
\n \n \n \n
\n \n
\n
\n
\n

\n\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n\n\n
\n
\n \n
\n
\n
{{ copy.overviewTitle }}
\n
\n {{ copy.submissionPeriod }}\n Due\n {{dueDate | date:'MMM dd'}}\n
\n
\n
\n
\n

Welcome!

\n\n

\n {{ copy.instructionsPart1 }}\n {{ copy.instructionsPart2 }} {{ copy.instructionsPart3 }}\n

\n\n

\n {{ copy.instructionsPart4 }}\n

\n\n
\n {{ copy.noteTextPart1 }}\n {{ copy.noteTextPart2 }}\n {{ copy.noteTextPart3 }}\n {{ copy.noteTextPart4 }}\n
\n
\n\n
\n {{ copy.disclaimer }}\n
\n
\n
\n
\n
\n \n Step 1\n \n
\n

\n Review Special Status Exemptions\n

\n

\n {{ copy.stepSpecialStatus1Text }}\n

\n

\n\n {{ copy.stepSpecialStatus2Text }}\n

\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
Practice Name
\n
\n
Exemption Status
\n
\n
Remove
\n
\n No Exemptions\n
{{ statusSummary.Practice }}\n \n \n \n Remove\n
\n\n
\n \n Step 2\n \n
\n

\n Add/Edit Forms\n

\n

\n {{ copy.stepAddEditText }}\n {{dueDate | date:'MMMM dd, yyyy'}}\n

\n
\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
Name
\n
\n
Total Points
\n
\n
Submitter
\n
\n
Date/Time
\n
\n
Status
\n
\n
Edit
\n
\n No Submissions\n
\n {{ submission.Practice }}\n
\n Special Status: {{ submission.SpecialStatus }}\n
\n
{{ submission.TotalPoints | number: \"1.2-2\" }}{{ submission.SubmitterEmail }}{{ submission.LastUpdateDateTime | date: \"short\" }}{{ submission.ISComplete ? \"Complete\" : \"Pending\" }}\n Edit\n
\n
\n
\n
\n
\n \n
\n\n \n
\n
\n
\n
\n\n
\n
\n
\n
\n
Remove Special Status Exemption
\n
\n
\n
\n Are you sure you would like to remove this Special Status Exemption\n submission?\n
\n
\n \n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport {\n UntypedFormControl,\n Validators,\n UntypedFormBuilder,\n UntypedFormGroup,\n ValidationErrors,\n} from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport {\n EHR_VENDORS,\n FORMS_SPECIAL_STATUSES,\n} from '@shared/mocks/forms/forms-select-dropdowns';\nimport {\n CaravanPracticeDropdown,\n CaravanSpecialStatus,\n FormResponses,\n FormSubmission,\n SpecialStatusSummary,\n UpdateQualityStatusParams,\n} from '@shared/models/forms/forms-backend';\nimport { UserInfo } from '@shared/services/auth-service/auth-interface';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service';\nimport { forkJoin } from 'rxjs';\nimport { finalize, takeUntil } from 'rxjs/operators';\nimport { CustomValidators } from '@shared/validators';\nimport { ToastrService } from 'ngx-toastr';\nimport { ToolTipMeasureDetails } from '@shared/models/forms/tool-tip-measure-details';\nimport { CaravanFormHelpModalLinks, ExclusionRequestDetails } from '@shared/models/forms/forms-frontend';\nimport {\n SubmitFeatureConstants,\n SubmitFeatureNames,\n} from '@shared/models/module-constants';\nimport { FormConstants, PromotingInteropFormSettings } from '@shared/models/forms/form-constants';\nimport { FormQuestionConstants } from '@shared/models/forms/form-question-constants';\nimport { CaravanFormSubmissionPeriod } from '@shared/models/forms/form-submissionID-model';\nimport {submitFormSharedFunctions} from '../shared/functions/submit-form-functions';\n\n@Component({\n selector: 'coach-submit-promoting-interoperability',\n templateUrl: './submit-promoting-interoperability.component.html',\n})\nexport class SubmitPromotingInteroperabilityComponent\n extends KillSubscriptions\n implements OnInit\n{\n public practices: CaravanPracticeDropdown[] = [];\n\n public specialStatuses: CaravanSpecialStatus[] = [];\n public specialStatusID: number | string = null;\n\n public ehrVendors: string[];\n public ehrVendor: string = null;\n\n public submitPI: UntypedFormGroup;\n\n public readonly QualityFormId = 1;\n public readonly OtherSpecialStatusId = 23;\n public readonly FormVersion = 3;\n public readonly CEHRT = 2021;\n public specialStatusSummary: SpecialStatusSummary[];\n public specialStatusList: CaravanSpecialStatus[] = [];\n public formSubmissions: FormSubmission[];\n public showRemoveModal = false;\n public formSaving = false;\n private exemptionToRemove: SpecialStatusSummary;\n public totalPoints: number;\n public hieSelected = false;\n public yesOnTEFCA = false;\n public isExempt = false;\n public caravanFormSubmissionPeriod: CaravanFormSubmissionPeriod[];\n public selectedFormSubPeriod: number;\n public dueDate: Date;\n\n\n public submitFormSharedFunction: submitFormSharedFunctions = new submitFormSharedFunctions();\n public formQuestionConstants = FormQuestionConstants;\n public providePatientsMax = FormQuestionConstants.Q12ProvideAccess.maxPoints;\n public drugMonitorsMax = FormQuestionConstants.Q14DrugMonitor.maxPoints;\n public ePrescribeMax = FormQuestionConstants.Q9ePrescibe.maxPoints;\n public hieMax = FormQuestionConstants.Q71HealthInformationExchange.maxPoints;\n public supportSendMax = FormQuestionConstants.Q10SupportSend.maxPoints;\n public supportReceiveMax = FormQuestionConstants.Q11SupportReceive.maxPoints;\n public tefcaMax = FormQuestionConstants.Q82TEFCA.maxPoints;\n public totalMaxPoints = 100;\n public questionNames = [\n FormQuestionConstants.Q8SecurityRisk.name,\n FormQuestionConstants.Q9ePrescibe.name,\n FormQuestionConstants.Q10SupportSend.name,\n FormQuestionConstants.Q11SupportReceive.name,\n FormQuestionConstants.Q12ProvideAccess.name,\n FormQuestionConstants.Q14DrugMonitor.name,\n FormQuestionConstants.Q71HealthInformationExchange.name,\n FormQuestionConstants.Q77HighPriorityGuideSAFER.name,\n FormQuestionConstants.Q78BonusRegistryReporting.name,\n FormQuestionConstants.Q82TEFCA.name\n ];\n\n public uploadedFileName: string;\n public uploadFile: File;\n private currentUser: UserInfo;\n\n public readonly practiceHelpText =\n 'Lists names of TINs in the ACO. To complete data for a given TIN, select the TIN in the drop down.';\n public readonly specialStatusHelpText =\n 'Select a new Special Status for a particular TIN, if applicable. Otherwise leaving it as N/A will allow you to complete the form.';\n public readonly ehrVendorHelpText =\n 'The twelve most popular EHRs are listed. If your EHR is not indicated, please select Other.';\n public readonly exemptHelpText =\n 'Indicate whether selected practice(s) are exempt. If exempt, please indicate the reason in \"Special Status\" below.';\n public readonly uploadHelpText =\n 'Before submitting, please upload an electronic copy of the EHR report or excel template used to complete the form for verification and accountability.';\n\n\n public isQueueOpen = true;\n public isFormQueueOpen = true;\n public isAddEditFormActive = false;\n public isInfoTextOpen = false;\n public infoText: string;\n public infoMeasureLinkFile: CaravanFormHelpModalLinks[];\n\n public shwSpecialStatus: boolean = true;\n public copy: PromotingInteropFormSettings = FormConstants.PromotingInterop;\n\n readonly formsAdminFormFeatureFlag: string = SubmitFeatureConstants.FormsAdminFormFeatureFlag;\n readonly formsAdminFormFeature: number = SubmitFeatureConstants.FormsAdminFormFeature;\n private readonly exclusionTypeId = 3;\n\n constructor(\n private fb: UntypedFormBuilder,\n private _authService: AuthService,\n private submitFormsService: SubmitFormsService,\n private toastr: ToastrService,\n private router: Router,\n private route: ActivatedRoute,\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.specialStatuses = FORMS_SPECIAL_STATUSES.filter(\n (s) => s.formID === 1 && s.isDeleted === 0 && s.isVisible === 1\n );\n\n this.submitFormsService.getSubmitPeriodDetails(this.QualityFormId).subscribe((data) => {\n this.caravanFormSubmissionPeriod = data;\n this.selectedFormSubPeriod = this.caravanFormSubmissionPeriod[0].caravanFormSubmitPeriodID;\n this.dueDate = this.caravanFormSubmissionPeriod[0].dueDate;\n this.updateSubmissionPeriodConfigs(0);\n\n this.refreshFormData();\n\n this._authService.userInfo$\n .pipe(takeUntil(this.killTrigger))\n .subscribe((user) => {\n if (user != null) {\n this.currentUser = user;\n this.initializePiForm();\n }\n });\n });\n }\n\n valueChanges(): void {\n let points = 0;\n let provideExclusionPoints = 0;\n let zeroTotal = false;\n\n this.questionNames.forEach((question) => {\n const control = this.submitPI.controls[question];\n const exclusionValue = control.get('exclusion')?.value;\n const maxPoints: number = control.get('maxPoints')?.value;\n const isDisabled = control.get('isDisabled')?.value;\n const scoreZeroWholeForm = control.get('scoreZeroWholeForm')?.value;\n\n const pointValue = control.get('FormQResponses.0.ResponsePointValue').value as number;\n\n if (exclusionValue || isDisabled) {\n this.setMaxPoints(question, 0);\n } else {\n if (scoreZeroWholeForm == true && pointValue == 0) {\n zeroTotal = true;\n }\n points +=\n (control.get('FormQResponses.0.ResponsePointValue')\n .value as number) || 0;\n this.setMaxPoints(question, maxPoints);\n }\n });\n\n this.setExclustionPoints();\n\n const regReportOne: string = this.submitPI.controls['RegReportOne'].value;\n const regReportTwo: string = this.submitPI.controls['RegReportTwo'].value;\n const exclusion = 'exclusion';\n const none = 'none';\n\n if (regReportOne != null && regReportTwo != null) {\n if (regReportOne === exclusion && regReportTwo === exclusion) {\n provideExclusionPoints += 25;\n } else if (regReportOne === none || regReportTwo === none) {\n zeroTotal = true;\n } else {\n points += 25;\n }\n }\n\n this.providePatientsMax += provideExclusionPoints;\n\n if (zeroTotal == true) {\n points = 0;\n }\n\n if (points > this.totalMaxPoints) {\n points = this.totalMaxPoints;\n }\n\n this.submitPI.patchValue({ TotalPoints: points }, { emitEvent: false });\n setTimeout(() => (this.totalPoints = points));\n }\n\n public updateSubmissionPeriodConfigs(submissionPeriodID) {\n const submitPeriod = this.caravanFormSubmissionPeriod[submissionPeriodID];\n for (let config in submitPeriod.configs) {\n if (submitPeriod.configs[config].configValue !== null) {\n if(submitPeriod.configs[config].configName == 'shwSpecialStatus') {\n this.shwSpecialStatus = this.submitFormSharedFunction.getBoolean(submitPeriod.configs[config].configValue);\n this.copy[submitPeriod.configs[config].configName] = this.shwSpecialStatus;\n }\n else if(submitPeriod.configs[config].configName == 'drpEHR') {\n this.copy[submitPeriod.configs[config].configName] = submitPeriod.configs[config].configValue.split('|');\n }\n else {\n this.copy[submitPeriod.configs[config].configName] = submitPeriod.configs[config].configValue.toString();\n }\n }\n }\n\n this.ehrVendors = this.copy.drpEHR;\n }\n\n setExclustionPoints(): void {\n const ePrescribeExclusion =\n this.submitPI.controls[FormQuestionConstants.Q9ePrescibe.name].get(\n 'exclusion'\n )?.value;\n const supportSendExclusion =\n this.submitPI.controls[FormQuestionConstants.Q10SupportSend.name].get(\n 'exclusion'\n )?.value;\n const supportReceieveExclusion =\n this.submitPI.controls[FormQuestionConstants.Q11SupportReceive.name].get(\n 'exclusion'\n )?.value;\n const drugMonitorExclusion =\n this.submitPI.controls[FormQuestionConstants.Q14DrugMonitor.name].get(\n 'exclusion'\n )?.value;\n\n const hieSelectedValue = this.submitPI.controls[\n FormQuestionConstants.Q71HealthInformationExchange.name\n ].get('FormQResponses.0.UserResponse')?.value;\n\n let hieSelectedBool = false;\n if (hieSelectedValue) {\n hieSelectedBool = true;\n }\n\n let ePrescribeMax =\n this.submitPI.controls[FormQuestionConstants.Q9ePrescibe.name].get(\n 'maxPoints'\n )?.value;\n const supportSendMax =\n this.submitPI.controls[FormQuestionConstants.Q10SupportSend.name].get(\n 'maxPoints'\n )?.value;\n const supportReceiveMax =\n this.submitPI.controls[FormQuestionConstants.Q11SupportReceive.name].get(\n 'maxPoints'\n )?.value;\n const drugMonitorMax =\n this.submitPI.controls[FormQuestionConstants.Q14DrugMonitor.name].get(\n 'maxPoints'\n )?.value;\n\n\n ///\n if (drugMonitorExclusion) {\n ePrescribeMax += drugMonitorMax;\n if (ePrescribeExclusion) {\n if (hieSelectedBool) {\n this.hieMax += ePrescribeMax;\n } else if (supportSendExclusion && supportReceieveExclusion) {\n this.providePatientsMax += ePrescribeMax;\n } else if (supportSendExclusion) {\n this.providePatientsMax += ePrescribeMax / 2;\n this.supportReceiveMax += ePrescribeMax / 2;\n } else if (supportReceieveExclusion) {\n this.supportSendMax += ePrescribeMax;\n } else {\n this.hieMax += ePrescribeMax;\n this.supportReceiveMax += ePrescribeMax / 2;\n this.supportSendMax += ePrescribeMax / 2;\n this.tefcaMax += ePrescribeMax;\n }\n }\n else {\n this.ePrescribeMax += drugMonitorMax;\n }\n }\n else {\n if (ePrescribeExclusion) {\n if (hieSelectedBool) {\n this.hieMax += ePrescribeMax;\n } else if (supportSendExclusion && supportReceieveExclusion) {\n this.providePatientsMax += ePrescribeMax;\n } else if (supportSendExclusion) {\n this.providePatientsMax += ePrescribeMax / 2;\n this.supportReceiveMax += ePrescribeMax / 2;\n } else if (supportReceieveExclusion) {\n this.supportSendMax += ePrescribeMax;\n } else {\n this.hieMax += ePrescribeMax;\n this.supportReceiveMax += ePrescribeMax / 2;\n this.supportSendMax += ePrescribeMax / 2;\n this.tefcaMax += ePrescribeMax;\n }\n }\n }\n ///\n\n\n\n if (supportReceieveExclusion && !hieSelectedBool) {\n if (supportSendExclusion) {\n this.providePatientsMax += supportReceiveMax;\n } else {\n this.supportSendMax += supportReceiveMax;\n }\n }\n\n if (supportSendExclusion && !hieSelectedBool) {\n this.providePatientsMax += supportSendMax;\n }\n }\n\n setMaxPoints(question: string, value: number): void {\n switch (question) {\n case FormQuestionConstants.Q9ePrescibe.name:\n this.ePrescribeMax = value;\n break;\n case FormQuestionConstants.Q10SupportSend.name:\n this.supportSendMax = value;\n break;\n case FormQuestionConstants.Q11SupportReceive.name:\n this.supportReceiveMax = value;\n break;\n case FormQuestionConstants.Q12ProvideAccess.name:\n this.providePatientsMax = value;\n break;\n case FormQuestionConstants.Q14DrugMonitor.name:\n this.drugMonitorsMax = value;\n break;\n case FormQuestionConstants.Q71HealthInformationExchange.name:\n this.hieMax = value;\n break;\n case FormQuestionConstants.Q82TEFCA.name:\n this.tefcaMax = value;\n break;\n }\n }\n\n initializePiForm(): void {\n const newDate = new Date();\n const nowJson = newDate.toJSON();\n const month = newDate.getMonth() + 1;\n const nowQtr = Math.ceil(month / 3);\n\n const userId = this.currentUser.dnn_id;\n\n this.submitPI = this.fb.group({\n practices: [null, Validators.required],\n isSpecialExemption: [false, Validators.required],\n uploadFile: [null, this.uploadRequiredValidator],\n\n FormID: [this.QualityFormId],\n FormVersionID: [this.FormVersion],\n FormName: ['Interoperability'],\n FormCategoryID: [1],\n Email: [this.currentUser.email],\n Tier4_FacID: [null, Validators.required],\n Tier4_Name: [null, Validators.required],\n SpecialStatus: [null, this.specialStatusRequiredValidator],\n EHRVendor: [null, Validators.required],\n RegReportOne: [null, Validators.required],\n RegReportTwo: [null, Validators.required],\n FormQuarter: [nowQtr],\n CEHRT: [this.CEHRT],\n FormCreateDateTime: [nowJson],\n CreatedByUserID: [userId],\n ClosedDateTime: [null],\n LastUpdateUserID: [userId],\n LastUpdateDateTime: [nowJson],\n isComplete: [0],\n TotalPoints: [0],\n UserFormID: [null],\n UserID: [userId],\n SubmitPeriodID: [this.selectedFormSubPeriod.toString()],\n FormQ8SecurityRisk: this.fb.group({\n QuestionID: [8],\n QuestionText: ['Security Risk Analysis'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userId],\n FormQResponses: this.fb.array([\n this.fb.group({\n UserResponse: [null, \n [\n Validators.required,\n ]\n ],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n complete: [null],\n }),\n ]),\n }),\n FormQ9ePrescribe: this.fb.group({\n QuestionID: [9],\n QuestionText: ['e-Prescribing'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userId],\n exclusion: [false],\n maxPoints: [10],\n isDisabled: [false],\n scoreZeroWholeForm: [true],\n FormQResponses: this.fb.array([\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [\n Validators.required,\n Validators.min(0),\n CustomValidators.lessThanOrEqual(\n 'FormQ9ePrescribe.FormQResponses.2.ResponsePointValue'\n ),\n ],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [\n Validators.required,\n Validators.min(1),\n CustomValidators.greaterThanOrEqual(\n 'FormQ9ePrescribe.FormQResponses.1.ResponsePointValue'\n ),\n ],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n ]),\n }),\n FormQ10SupportSend: this.fb.group({\n QuestionID: [10],\n QuestionText: [\n 'Support Electronic Referral Loops By - Sending Health Information',\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userId],\n exclusion: [false],\n maxPoints: [15],\n isDisabled: [false],\n scoreZeroWholeForm: [true],\n FormQResponses: this.fb.array([\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [\n Validators.required,\n Validators.min(0),\n CustomValidators.lessThanOrEqual(\n 'FormQ10SupportSend.FormQResponses.2.ResponsePointValue'\n ),\n ],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [\n Validators.required,\n Validators.min(1),\n CustomValidators.greaterThanOrEqual(\n 'FormQ10SupportSend.FormQResponses.1.ResponsePointValue'\n ),\n ],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n ]),\n }),\n FormQ11SupportReceive: this.fb.group({\n QuestionID: [11],\n QuestionText: [\n 'Support Electronic Referral Loops By - Receiving and Reconciling Health Information',\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userId],\n exclusion: [false],\n maxPoints: [15],\n isDisabled: [false],\n scoreZeroWholeForm: [true],\n FormQResponses: this.fb.array([\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [\n Validators.required,\n Validators.min(0),\n CustomValidators.lessThanOrEqual(\n 'FormQ11SupportReceive.FormQResponses.2.ResponsePointValue'\n ),\n ],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [\n Validators.required,\n Validators.min(1),\n CustomValidators.greaterThanOrEqual(\n 'FormQ11SupportReceive.FormQResponses.1.ResponsePointValue'\n ),\n ],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n ]),\n }),\n FormQ12ProvideAccess: this.fb.group({\n QuestionID: [12],\n QuestionText: [\n 'Provide Patients Electronic Access to Their Health Information',\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userId],\n exclusion: [false],\n maxPoints: [25],\n isDisabled: [false],\n scoreZeroWholeForm: [true],\n FormQResponses: this.fb.array([\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [2],\n FormResponseTypeID: [4],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [\n Validators.required,\n Validators.min(0),\n CustomValidators.lessThanOrEqual(\n 'FormQ12ProvideAccess.FormQResponses.2.ResponsePointValue'\n ),\n ],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [1],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [\n null,\n [\n Validators.required,\n Validators.min(1),\n CustomValidators.greaterThanOrEqual(\n 'FormQ12ProvideAccess.FormQResponses.1.ResponsePointValue'\n ),\n ],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [2],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n }),\n ]),\n }),\n FormQ14DrugMonitor: this.fb.group({\n QuestionID: [14],\n QuestionText: [\n 'Query of Prescription Drug Monitoring Program',\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userId],\n exclusion: [false],\n maxPoints: [10],\n isDisabled: [false],\n scoreZeroWholeForm: [true],\n FormQResponses: this.fb.array([\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [null,\n [\n Validators.required,\n ],\n ],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n checked: [false],\n }),\n ]),\n }),\n FormQ71HealthInformationExchange: this.fb.group({\n QuestionID: [71],\n QuestionText: ['Health Information Exchange'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userId],\n maxPoints: [30],\n isDisabled: [false],\n FormQResponses: this.fb.array([\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n checked: [false],\n }),\n ]),\n }),\n FormQ77HighPriorityGuideSAFER: this.fb.group({\n QuestionID: [77],\n QuestionText: [\n 'High Priority Practices Guide of the SAFER Guide Attestation',\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userId],\n FormQResponses: this.fb.array([\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n complete: [null],\n }),\n ]),\n }),\n FormQ78BonusRegistryReporting: this.fb.group({\n QuestionID: [78],\n QuestionText: [\n 'Select additional registries that you are reporting on',\n ],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userId],\n FormQResponses: this.fb.array([\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n checked: [false],\n }),\n ]),\n }),\n FormQ82TEFCA: this.fb.group({\n QuestionID: [82],\n QuestionText: ['Trusted Exchange Framework and Common Agreement'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userId],\n maxPoints: [30],\n isDisabled: [false],\n FormQResponses: this.fb.array([\n this.fb.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [1],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n checked: [false],\n complete: [null],\n }),\n ]),\n }),\n FormQ83Date: this.fb.group({\n QuestionID: [83],\n QuestionText: ['PI Reporting date range'],\n FormQCategoryID: [1],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userId],\n exclusion: [false],\n isDisabled: [false],\n FormQResponses: this.fb.array([\n this.fb.group({\n UserResponse: [\n null, \n [\n Validators.required,\n CustomValidators.startDateIsInPast(),\n CustomValidators.sufficentDateRange(FormQuestionConstants.Q83Date.requiredDayDif)\n ],\n ],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson],\n ResponseUserID: [userId],\n LastUpdateDateTime: [nowJson],\n LastUpdateUserID: [userId],\n periodEndDate: [null],\n periodStartDate: [null],\n }),\n ]),\n }),\n });\n\n this.resetUploadForm();\n\n this.submitPI.valueChanges\n .pipe(takeUntil(this.killTrigger))\n .subscribe(() => this.valueChanges());\n }\n\n public specialStatusRequiredValidator(\n formControl: UntypedFormControl\n ): ValidationErrors {\n if (formControl?.parent?.get('isSpecialExemption').value) {\n return Validators.required(formControl)\n ? {\n spcialStatusRequired: true,\n }\n : null;\n }\n return null;\n }\n\n public uploadRequiredValidator(formControl: UntypedFormControl): ValidationErrors {\n if (!formControl?.parent?.get('isSpecialExemption').value) {\n return Validators.required(formControl)\n ? {\n uploadRequired: true,\n }\n : null;\n }\n return null;\n }\n\n public specialExemptionChange(): void {\n this.submitPI.get('uploadFile').updateValueAndValidity();\n }\n\n public isSpecialStatusChanged(): void {\n if (!this.submitPI.get('isSpecialExemption').value) {\n this.submitPI.patchValue({ SpecialStatus: null }, { emitEvent: false });\n }\n this.isExempt = this.submitPI.get('isSpecialExemption').value;\n\n if (this.isExempt) {\n this.disableFormValidators([\n FormQuestionConstants.Q9ePrescibe.name,\n FormQuestionConstants.Q10SupportSend.name,\n FormQuestionConstants.Q11SupportReceive.name,\n FormQuestionConstants.Q12ProvideAccess.name,\n ]);\n\n this.submitPI\n .get(`RegReportOne`)\n .clearValidators();\n\n this.submitPI\n .get(`RegReportOne`)\n .updateValueAndValidity();\n\n this.submitPI\n .get(`RegReportTwo`)\n .clearValidators();\n\n this.submitPI\n .get(`RegReportTwo`)\n .updateValueAndValidity();\n\n this.submitPI\n .get(`FormQ83Date.FormQResponses.0.UserResponse`)\n .clearValidators();\n\n this.submitPI\n .get(`FormQ83Date.FormQResponses.0.UserResponse`)\n .updateValueAndValidity();\n\n this.submitPI\n .get(`FormQ14DrugMonitor.FormQResponses.0.ResponsePointValue`)\n .clearValidators();\n\n this.submitPI\n .get(`FormQ14DrugMonitor.FormQResponses.0.ResponsePointValue`)\n .updateValueAndValidity(); \n \n \n this.submitPI\n .get(`FormQ8SecurityRisk.FormQResponses.0.UserResponse`)\n .clearValidators();\n\n this.submitPI\n .get(`FormQ8SecurityRisk.FormQResponses.0.UserResponse`)\n .updateValueAndValidity();\n \n } else {\n this.enableFormValidators([\n FormQuestionConstants.Q9ePrescibe.name,\n FormQuestionConstants.Q10SupportSend.name,\n FormQuestionConstants.Q11SupportReceive.name,\n FormQuestionConstants.Q12ProvideAccess.name,\n ]);\n\n this.submitPI\n .get(`RegReportOne`)\n .setValidators([\n Validators.required\n ]);\n\n this.submitPI\n .get(`RegReportOne`)\n .updateValueAndValidity();\n\n\n this.submitPI\n .get(`RegReportTwo`)\n .setValidators([\n Validators.required\n ]);\n\n this.submitPI\n .get(`RegReportTwo`)\n .updateValueAndValidity();\n\n this.submitPI\n .get(`FormQ83Date.FormQResponses.0.UserResponse`)\n .setValidators([\n Validators.required,\n CustomValidators.startDateIsInPast(),\n CustomValidators.sufficentDateRange(FormQuestionConstants.Q83Date.requiredDayDif)\n ]);\n\n this.submitPI\n .get(`FormQ83Date.FormQResponses.0.UserResponse`)\n .updateValueAndValidity();\n\n this.submitPI\n .get(`FormQ8SecurityRisk.FormQResponses.0.UserResponse`)\n .setValidators([\n Validators.required\n ]);\n\n this.submitPI\n .get(`FormQ8SecurityRisk.FormQResponses.0.UserResponse`)\n .updateValueAndValidity();\n \n this.submitPI\n .get(`FormQ14DrugMonitor.FormQResponses.0.ResponsePointValue`)\n .setValidators([\n Validators.required\n ]);\n\n this.submitPI\n .get(`FormQ14DrugMonitor.FormQResponses.0.ResponsePointValue`)\n .updateValueAndValidity();\n\n }\n\n this.specialExemptionChange();\n }\n\n public toggleQueueOpen(): void {\n this.isQueueOpen = !this.isQueueOpen;\n }\n\n public cancel(): void {\n this.isAddEditFormActive = false;\n }\n\n public onFileChange(event: Event): void {\n const target = event.target;\n if (target.files && target.files.length) {\n const file = target.files[0];\n this.uploadFile = file;\n this.uploadedFileName = file.name || 'File name not found';\n this.submitPI.get('uploadFile').setValue(file.name);\n } else {\n this.resetUploadForm();\n }\n }\n\n private resetUploadForm(): void {\n this.uploadFile = null;\n this.uploadedFileName = 'No file chosen';\n this.submitPI.get('uploadFile').setValue(null);\n }\n\n public toggleFormQueueOpen(): void {\n this.isFormQueueOpen = !this.isFormQueueOpen;\n }\n\n public toggleAddEditFormActive(): void {\n this.isAddEditFormActive = !this.isAddEditFormActive;\n }\n\n public onSubmit(isComplete: boolean): void {\n if (isComplete) {\n this.toastr.info('Form Submitting', 'Promoting Interoperability Form');\n }\n else {\n this.toastr.info('Form Saving', 'Promoting Interoperability Form');\n }\n if (isComplete && this.submitPI.invalid) {\n this.submitPI.markAllAsTouched();\n } else {\n this.submitPI.controls['isComplete'].setValue(isComplete ? 1 : 0);\n\n if (this.hieSelected) {\n this.submitPI\n .get(\n `${FormQuestionConstants.Q10SupportSend.name}.FormQResponses.1.ResponsePointValue`\n )\n .setValue(null);\n this.submitPI\n .get(\n `${FormQuestionConstants.Q10SupportSend.name}.FormQResponses.2.ResponsePointValue`\n )\n .setValue(null);\n this.submitPI\n .get(\n `${FormQuestionConstants.Q11SupportReceive.name}.FormQResponses.1.ResponsePointValue`\n )\n .setValue(null);\n this.submitPI\n .get(\n `${FormQuestionConstants.Q11SupportReceive.name}.FormQResponses.2.ResponsePointValue`\n )\n .setValue(null);\n }\n if (this.submitPI.get('practices').value == null){\n this.submitPI.get('practices').markAsTouched();\n this.toastr.error('Form Failed To Save', 'Please Select Practice First');\n } else {\n let formCopy = Object.assign({}, this.submitPI.getRawValue());\n if (this.submitPI.controls['isSpecialExemption'].value) {\n formCopy = this.removeQuestions(formCopy);\n }\n\n if (formCopy.SpecialStatus == null) {\n formCopy.SpecialStatus = '';\n }\n\n this.formSaving = true;\n this.submitFormsService\n .save([this.uploadFile], formCopy)\n .pipe(finalize(() => (this.formSaving = false)))\n .subscribe(\n () => {\n\n if (isComplete) {\n this.toastr.success('Form Submitted', 'Promoting Interoperability Form');\n }\n else {\n this.toastr.success('Draft Saved', 'Promoting Interoperability Form');\n }\n // this.toastr.success(\n // 'Form Submitted',\n // 'Promoting Interoperability Form'\n // );\n this.refreshFormData();\n this.resetForms();\n this.toggleAddEditFormActive();\n },\n (err) => {\n console.error(err);\n this.toastr.error(\n 'Form Failed To Save',\n 'Promoting Interoperability Form'\n );\n }\n );\n }\n }\n }\n\n resetForms(): void {\n this.initializePiForm();\n }\n\n public removeQuestions(formCopy: any): void {\n const copy = formCopy;\n this.questionNames.forEach((question) => delete copy[question]);\n return copy;\n }\n\n public toggleInfoText(details: ToolTipMeasureDetails): void {\n this.isInfoTextOpen = !this.isInfoTextOpen;\n if (details != null) {\n this.infoText = details.detailsText;\n this.infoMeasureLinkFile = details.modalLinks;\n this.infoText = details.detailsText;\n }\n }\n\n public showInfoWithText(text: string): void {\n this.toggleInfoText({ detailsText: text, modalLinks: null });\n }\n\n newSubmission(): void {\n const submissionID = this.selectedFormSubPeriod.toString();\n const specialStatusIncluded = this.shwSpecialStatus? '1':'0';\n this.submitFormsService\n .getListOfSpecificTier(\n null,\n SubmitFeatureConstants.PromotingInteroperabilityFormFeature,\n submissionID,\n specialStatusIncluded\n\n )\n .subscribe((data) => {\n this.setPractices(data);\n this.toggleAddEditFormActive();\n });\n this.initializePiForm();\n }\n\n private setPractices(data: string): void {\n if(data != ''){\n this.practices = JSON.parse(data);\n }\n }\n\n public refreshFormData(): void {\n const formID = this.QualityFormId.toString();\n const submissionID = this.selectedFormSubPeriod.toString();\n this.submitFormsService.getStatuses(formID).subscribe((data) => {\n this.specialStatusList = this.getFilteredStatusList(JSON.parse(data));\n });\n\n this.submitFormsService.getSubmissions(formID, submissionID).subscribe((data) => {\n this.formSubmissions = data;\n });\n\n this.submitFormsService.getStatusSummary(formID).subscribe((data) => {\n this.specialStatusSummary = data;\n });\n }\n\n public getFilteredStatusList(\n statuses: CaravanSpecialStatus[]\n ): CaravanSpecialStatus[] {\n const statusList = statuses.filter(\n (s) =>\n s.formID === this.QualityFormId &&\n s.isDeleted === 0 &&\n s.isVisible === 1\n );\n return statusList;\n }\n\n updateSpecialStatus(statusSummary: SpecialStatusSummary): void {\n const params: UpdateQualityStatusParams = {\n formID: this.QualityFormId,\n isDeleted: statusSummary.IsDeleted,\n otherReason: statusSummary.OtherReason,\n specialStatus: statusSummary.SpecialStatusID,\n specialstatusEntryID: statusSummary.specialstatusEntryID,\n userFormID: statusSummary.UserFormID,\n tier: null,\n };\n\n this.submitFormsService\n .updateQualityStatus(params)\n .subscribe(() => this.refreshFormData());\n }\n\n removeConfirmation(statusSummary: SpecialStatusSummary): void {\n this.exemptionToRemove = statusSummary;\n this.showRemoveModal = true;\n }\n\n removeSubmission(): void {\n this.exemptionToRemove.IsDeleted = true;\n this.updateSpecialStatus(this.exemptionToRemove);\n this.showRemoveModal = false;\n this.specialStatusSummary.splice(\n this.specialStatusSummary.findIndex(\n (x) =>\n x.specialstatusEntryID === this.exemptionToRemove.specialstatusEntryID\n ),\n 1\n );\n this.exemptionToRemove = null;\n }\n\n public practiceSelected(facId: string): void {\n // update fac_id\n const facicilityId = parseInt(facId);\n const practice = this.practices.find((x) => x.Fac_ID === facicilityId);\n this.submitPI.patchValue(\n { Tier4_FacID: practice.Fac_ID },\n { emitEvent: false }\n );\n this.submitPI.get('Tier4_FacID').markAsTouched({ onlySelf: true });\n // update names\n this.submitPI.patchValue({ Tier4_Name: practice.Name });\n this.submitPI.get('Tier4_Name').markAsTouched({ onlySelf: true });\n }\n\n editForm(submission: FormSubmission): void {\n const submissionID = this.selectedFormSubPeriod.toString();\n const specialStatusIncluded = this.shwSpecialStatus? '1':'0';\n forkJoin([\n this.submitFormsService.getListOfSpecificTier(\n submission.UserFormID,\n SubmitFeatureConstants.PromotingInteroperabilityFormFeature,\n submissionID,\n specialStatusIncluded\n ),\n this.submitFormsService.getFormResponses(submission.UserFormID),\n ]).subscribe((data) => {\n const submission = data[1][0];\n const facilities = JSON.parse(data[0]) as CaravanPracticeDropdown[];\n\n this.setPractices(data[0]);\n this.loadFromSubmission(submission, facilities);\n this.isAddEditFormActive = true;\n });\n }\n\n loadFromSubmission(\n submission: FormResponses,\n facilities: CaravanPracticeDropdown[]\n ): void {\n const facilitySelected = facilities.find((x) => x.Fac_ID.toString() === submission.SelectedFacs);\n this.submitPI.get('EHRVendor').setValue(submission.EHRVendor);\n this.submitPI.get('UserFormID').setValue(submission.UserFormID);\n this.submitPI.get('TotalPoints').setValue(submission.TotalPoints);\n this.submitPI.get('RegReportOne').setValue(submission.regreportone);\n this.submitPI.get('RegReportTwo').setValue(submission.regreporttwo);\n\n if (facilitySelected){\n this.submitPI.get('Tier4_Name').setValue(facilitySelected.Name);\n this.submitPI.get('Tier4_FacID').setValue(facilitySelected.Fac_ID);\n this.submitPI.get('practices').setValue(facilitySelected.Fac_ID);\n }\n else {\n this.submitPI.get('Tier4_Name').setValue(facilities[0].Name);\n this.submitPI.get('Tier4_FacID').setValue(facilities[0].Fac_ID);\n this.submitPI.get('practices').setValue(facilities[0].Fac_ID);\n }\n\n if (submission.SpecialStatusID && submission.SpecialStatusID !== '0') {\n this.submitPI.get('isSpecialExemption').setValue(true);\n this.isExempt = true;\n this.submitPI\n .get('SpecialStatus')\n .setValue(parseInt(submission.SpecialStatusID));\n } else {\n this.submitPI.get('isSpecialExemption').setValue(false);\n this.isExempt = false;\n }\n\n this.submitPI.get('RegReportOne').setValue(submission.regreportone);\n this.submitPI.get('RegReportTwo').setValue(submission.regreporttwo);\n\n submission.Q.forEach((question) => {\n for (const property in this.submitPI.controls) {\n const questionControl = this.submitPI.get(`${property}.QuestionID`);\n const questionId = questionControl?.value;\n if (questionControl != null && questionId === question.ID) {\n const numerator = this.submitPI.get(\n `${property}.FormQResponses.1.ResponsePointValue`\n );\n const denominator = this.submitPI.get(\n `${property}.FormQResponses.2.ResponsePointValue`\n );\n const points = this.submitPI.get(\n `${property}.FormQResponses.0.ResponsePointValue`\n );\n\n if (question.Exclusion !== 'NA') {\n const exclusion = this.submitPI.get(`${property}.exclusion`);\n exclusion.setValue(true);\n const exclusionDataType = this.submitPI.get(`${property}.FormQResponses.0.FormResponseTypeID`);\n exclusionDataType.setValue(this.exclusionTypeId);\n\n if (question.ID == 14) {\n this.exclusionRequestCheckBox({\n questionname: property,\n status: true,\n });\n }\n else {\n this.exclusionRequest({\n questionname: property,\n status: true,\n });\n }\n }\n\n if (question.ID == 82) {\n console.log(question.ID);\n this.exclusionRequestTEFCA(question.Response);\n }\n\n\n const userResponse = this.submitPI.get(\n `${property}.FormQResponses.0.UserResponse`\n );\n userResponse.setValue(question.Response || null);\n\n if (question.Exclusion !== 'NA') {\n if (numerator != null ) {\n numerator.setValue(Number(-1));\n }\n if (denominator != null) {\n denominator.setValue(Number(-1));\n }\n if (points != null) {\n points.setValue(Number(0));\n }\n }\n\n if(question.Exclusion === 'NA') {\n if (numerator != null) {\n numerator.setValue(Number(question.Numerator));\n }\n if (denominator != null) {\n denominator.setValue(Number(question.Denominator));\n }\n if (points != null) {\n points.setValue(Number(question.Points));\n }\n }\n\n }\n }\n });\n\n this.resetUploadForm();\n }\n\n hieChanged(isChecked: string): void {\n if (isChecked){\n this.hieSelected = true;\n }\n else {\n this.hieSelected = false;\n }\n\n this.submitPI.get('FormQ10SupportSend.isDisabled').setValue(this.hieSelected);\n this.submitPI.get('FormQ11SupportReceive.isDisabled').setValue(this.hieSelected);\n\n // set validator to false;\n if (this.hieSelected) {\n this.disableFormValidators([\n 'FormQ10SupportSend',\n 'FormQ11SupportReceive',\n ]);\n } else {\n this.enableFormValidators([\n 'FormQ10SupportSend',\n 'FormQ11SupportReceive',\n ]);\n }\n }\n\n\n exclusionRequest(isChecked: ExclusionRequestDetails): void {\n // set validator to false;\n if (isChecked.status) {\n this.disableFormValidators([\n isChecked.questionname\n ]);\n } else {\n this.enableFormValidators([\n isChecked.questionname\n ]);\n }\n }\n\n exclusionRequestCheckBox(isChecked: ExclusionRequestDetails): void {\n // set validator to false;\n if (isChecked.status) {\n this.disableFormValidatorsCheckBox([\n isChecked.questionname\n ]);\n //this.submitPI.get('FormQ14DrugMonitor.isDisabled').setValue(true);\n } else {\n this.enableFormValidatorsCheckBox([\n isChecked.questionname\n ]);\n //this.submitPI.get('FormQ14DrugMonitor.isDisabled').setValue(false);\n }\n }\n\n exclusionRequestTEFCA(radioBoxResp): void {\n // set validator to false;\n\n if (radioBoxResp == 'yes') {\n this.yesOnTEFCA = true;\n\n this.submitPI.get('FormQ10SupportSend.FormQResponses.0.ResponsePointValue').setValue(0);\n\n this.submitPI.get('FormQ11SupportReceive.FormQResponses.0.ResponsePointValue').setValue(0);\n\n }\n else\n {\n this.yesOnTEFCA = false;\n }\n\n this.submitPI.get('FormQ10SupportSend.isDisabled').setValue(this.yesOnTEFCA);\n\n this.submitPI.get('FormQ11SupportReceive.isDisabled').setValue(this.yesOnTEFCA);\n\n this.submitPI.get('FormQ71HealthInformationExchange.isDisabled').setValue(this.yesOnTEFCA);\n\n if (this.yesOnTEFCA) {\n this.disableFormValidators([\n 'FormQ10SupportSend',\n 'FormQ11SupportReceive',\n ]);\n } else {\n const checkBoxCheck = this.submitPI.get('FormQ71HealthInformationExchange.FormQResponses.0.UserResponse');\n if ( checkBoxCheck.value == null) {\n this.enableFormValidators([\n 'FormQ10SupportSend',\n 'FormQ11SupportReceive',\n ]);\n }\n else {\n this.submitPI.get('FormQ10SupportSend.isDisabled').setValue(!this.yesOnTEFCA);\n\n this.submitPI.get('FormQ11SupportReceive.isDisabled').setValue(!this.yesOnTEFCA);\n }\n }\n }\n\n private enableFormValidators(quesitonNames: string[]): void {\n quesitonNames.forEach((name) => {\n this.submitPI\n .get(`${name}.FormQResponses.1.ResponsePointValue`)\n .setValidators([\n Validators.required,\n Validators.min(0),\n CustomValidators.lessThanOrEqual(\n `${name}.FormQResponses.2.ResponsePointValue`\n ),\n ]);\n this.submitPI\n .get(`${name}.FormQResponses.1.ResponsePointValue`)\n .updateValueAndValidity();\n\n this.submitPI\n .get(`${name}.FormQResponses.2.ResponsePointValue`)\n .setValidators([\n Validators.required,\n Validators.min(1),\n CustomValidators.greaterThanOrEqual(\n `${name}.FormQResponses.1.ResponsePointValue`\n ),\n ]);\n this.submitPI\n .get(`${name}.FormQResponses.2.ResponsePointValue`)\n .updateValueAndValidity();\n\n });\n }\n\n private disableFormValidators(quesitonNames: string[]): void {\n quesitonNames.forEach((name) => {\n this.submitPI\n .get(`${name}.FormQResponses.1.ResponsePointValue`)\n .clearValidators();\n\n this.submitPI\n .get(`${name}.FormQResponses.1.ResponsePointValue`)\n .updateValueAndValidity();\n\n this.submitPI\n .get(`${name}.FormQResponses.2.ResponsePointValue`)\n .clearValidators();\n this.submitPI\n .get(`${name}.FormQResponses.2.ResponsePointValue`)\n .updateValueAndValidity();\n\n });\n }\n\n private enableFormValidatorsCheckBox(quesitonNames: string[]): void {\n quesitonNames.forEach((name) => {\n this.submitPI\n .get(`${name}.FormQResponses.0.ResponsePointValue`)\n .setValidators([\n Validators.required\n ]);\n this.submitPI\n .get(`${name}.FormQResponses.0.ResponsePointValue`)\n .updateValueAndValidity();\n\n });\n }\n\n private disableFormValidatorsCheckBox(quesitonNames: string[]): void {\n quesitonNames.forEach((name) => {\n this.submitPI\n .get(`${name}.FormQResponses.0.ResponsePointValue`)\n .clearValidators();\n\n this.submitPI\n .get(`${name}.FormQResponses.0.ResponsePointValue`)\n .updateValueAndValidity();\n });\n }\n formsReport(): void {\n this.router.navigate(['promoting-interoperability/formreport'], { relativeTo: this.route.parent });\n }\n\n}\n","export const BARRIERS_DATA = [\n {\n value: 'Lack of physician engagement',\n label: 'Lack of physician engagement'\n },\n {\n value: 'Change in Staff',\n label: 'Change in Staff'\n },\n {\n value: 'Lack of patient interest in Chronic Care Management',\n label: 'Lack of patient interest in Chronic Care Management'\n },\n {\n value: 'Lack of patient interest in Annual Wellness Visits',\n label: 'Lack of patient interest in Annual Wellness Visits'\n },\n {\n value: 'Lack of Chronic Conditions improvement',\n label: 'Lack of Chronic Conditions improvement'\n },\n {\n value: 'Unable to perform Advance Care Planning',\n label: 'Unable to perform Advance Care Planning'\n }\n];\n\nexport const SUCCESSES_DATA = [\n {\n value: 'Met our set 30 day goal',\n label: 'Met our set 30 day goal'\n },\n {\n value: 'Exceeded our set 30 day goal',\n label: 'Exceeded our set 30 day goal'\n },\n {\n value: 'Performed internal campaign to improve patient care',\n label: 'Performed internal campaign to improve patient care'\n },\n {\n value: 'Trained new stuff',\n label: 'Trained new stuff'\n }\n];\n\nexport const QUARTERS_DATA = [\n {\n value: 1,\n label: 'Q1 (Jan-Mar)'\n },\n {\n value: 2,\n label: 'Q2 (Apr - Jun)'\n },\n {\n value: 3,\n label: 'Q3 (Jul - Sep)'\n },\n {\n value: 4,\n label: 'Q4 (Oct - Dec)'\n }\n];\n\nexport const MONTHS_DATA = [\n {\n value: 'January',\n label: 'Jan'\n },\n {\n value: 'February',\n label: 'Feb'\n },\n {\n value: 'March',\n label: 'Mar'\n },\n {\n value: 'April',\n label: 'Apr'\n },\n {\n value: 'May',\n label: 'May'\n },\n {\n value: 'June',\n label: 'Jun'\n },\n {\n value: 'July',\n label: 'Jul'\n },\n {\n value: 'August',\n label: 'Aug'\n },\n {\n value: 'September',\n label: 'Sep'\n },\n {\n value: 'October',\n label: 'Oct'\n },\n {\n value: 'November',\n label: 'Nov'\n },\n {\n value: 'December',\n label: 'Dec'\n }\n];\n","
\n
\n \n
\n
\n
{{submitMeetingName}}
\n
\n
\n
\n

As your ACO Partner, we'd like to stay in tune with your progress so we can provide our insights as needed.

\n

We're asking that you upload your agenda and meeting notes from your monthly Roadmap and quarterly Cohort\n Steering meetings, along with some of the highlights of each of those meetings.

\n\n
\n
\n At least one participant is required\n
\n
\n \n \n
\n
\n\n
\n
\n\n\n \n \n \n {{selectCommunity}}\n
\n \n\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n\n
\n
Quarter
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n
\n \n
\n
Month
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n
{{uploadedAgendaFileName}}
\n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n
{{uploadedMinutesFileName}}
\n
\n
\n
Must upload file.
\n
\n
\n
\n
\n
\n \n \n
\n \n
\n \n \n
\n
\n
\n \n
\n
Successes
\n
\n \n
\n \n \n
\n \n
\n \n \n
\n \n \n \n
\n
\n
\n
\n
\n
Barriers
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n \n \n \n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n

\n \n

Additional information may be found at www.cms.gov

\n
\n
\n \n
\n
\n
\n \n
\n","import {\n Component,\n OnInit,\n OnDestroy,\n ViewChild,\n ElementRef,\n} from '@angular/core';\nimport {\n UntypedFormArray,\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { Subscription, Observable } from 'rxjs';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport {\n BARRIERS_DATA,\n SUCCESSES_DATA,\n QUARTERS_DATA,\n MONTHS_DATA,\n} from './submit-meeting';\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service';\nimport { UserInfo } from '@shared/services/auth-service/auth-interface';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { FormTierDropdown } from '@shared/models/forms/forms-backend';\nimport { ToastrService } from 'ngx-toastr';\nimport {\n SubmitFeatureConstants,\n SubmitFeatureNames,\n} from '@shared/models/module-constants';\nimport { FormConstants } from '@shared/models/forms/form-constants';\nimport { finalize } from 'rxjs/operators';\n\n@Component({\n selector: 'coach-submit-meeting',\n templateUrl: './submit-meeting.component.html',\n})\nexport class SubmitMeetingComponent implements OnInit, OnDestroy {\n submitMeetingName = SubmitFeatureNames.Meeting;\n\n public principleParticipants: FormTierDropdown[] = [];\n public selectedCommunity;\n public ppSet: boolean;\n\n get successesFormArray(): any {\n return this.successesForm.get('successes') as UntypedFormArray;\n }\n\n get barriersFormArray(): any {\n return this.barriersForm.get('barriers') as UntypedFormArray;\n }\n\n public selectedPP;\n\n // Form\n public meetingForm: UntypedFormGroup;\n public uploadedAgendaFileName = 'No file chosen';\n public uploadedMinutesFileName = 'No file chosen';\n\n // Sub forms\n public successesForm: UntypedFormGroup;\n public barriersForm: UntypedFormGroup;\n\n // Form Subscriptions\n public successesFormSub: Subscription;\n public barriersFormSub: Subscription;\n\n // Subscriptions\n public authSub: Subscription;\n public userSub: Subscription;\n\n // Form Data\n public currentTier: IHierarchyTier;\n public barriersList = BARRIERS_DATA;\n public successesList = SUCCESSES_DATA;\n public quartersData = QUARTERS_DATA;\n public monthsData = MONTHS_DATA;\n\n public hasOtherBarriers = false;\n public otherBarriers: string;\n public hasOtherSuccesses = false;\n public otherSuccesses: string;\n\n // UI Settings\n public isQueueOpen = true;\n public formSaving = false;\n\n // User Info\n public isAuthenticated$: Observable;\n public userInfo$: Observable;\n private _isLoggedIn = false;\n private _currentUser: UserInfo;\n\n public isInfoTextOpen = false;\n public infoText: string;\n public infoMeasureLinkFile: string;\n\n public selectCommunity = FormConstants.MeetingCommunitySelection;\n\n public readonly principleParticipantHelpText =\n 'Lists names of Principle Participants in the Community. To complete data for a given Principle Participant, select the Name in the drop down.';\n\n @ViewChild('meetingForm_community') meetingForm_community: ElementRef;\n @ViewChild('meetingForm_otherSuccesses')\n meetingForm_otherSuccesses: ElementRef;\n @ViewChild('meetingForm_otherBarriers') meetingForm_otherBarriers: ElementRef;\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private _authService: AuthService,\n private hierarchyTierService: HierarchyTierService,\n private qualityService: SubmitFormsService,\n private toastr: ToastrService\n ) {\n this.resetCheckboxes();\n }\n\n toggleQueueOpen(): void {\n this.isQueueOpen = !this.isQueueOpen;\n }\n\n private addSuccessCheckboxes(): void {\n this.successesList.forEach(() =>\n this.successesFormArray.push(new UntypedFormControl(false))\n );\n }\n\n private addBarriersCheckboxes(): void {\n this.barriersList.forEach(() =>\n this.barriersFormArray.push(new UntypedFormControl(false))\n );\n }\n\n public initializeMeetingForm(): void {\n function quarterOfTheYear(date): number {\n const month = date.getMonth() + 1;\n return Math.ceil(month / 3);\n }\n\n const newDate = new Date();\n const userID = this._currentUser?.dnn_id || null;\n const userEmail = this._currentUser?.email || null;\n const nowJson = newDate.toJSON();\n const nowQtr = quarterOfTheYear(newDate);\n\n this.meetingForm = this.formBuilder.group({\n FormID: [5],\n FormVersionID: [4],\n FormName: ['MEETING'],\n FormCategoryID: [1],\n Email: [userEmail], // set\n Tier3_ID: [null, Validators.required], // set\n Tier3_Name: [null, Validators.required], // set\n SpecialStatus: [null],\n RegReportOne: [null],\n RegReportTwo: [null],\n FormQuarter: [nowQtr],\n CEHRT: [2021],\n FormCreateDateTime: [nowJson],\n CreatedByUserID: [userID],\n ClosedDateTime: [null],\n LastUpdateUserID: [userID],\n LastUpdateDateTime: [nowJson],\n isComplete: [0],\n TotalPoints: [0],\n UserFormID: [null],\n UserID: [userID],\n FormQ51: this.formBuilder.group({\n QuestionID: [51],\n QuestionText: ['Community Name'],\n FormQCategoryID: [2], // meeting\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [null, Validators.required], // set\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ52: this.formBuilder.group({\n QuestionID: [52],\n QuestionText: ['Number of Roadmaps'],\n FormQCategoryID: [2], // meeting\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [null], // set\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ53: this.formBuilder.group({\n QuestionID: [53],\n QuestionText: ['Cohort Quarter'],\n FormQCategoryID: [2], // meeting\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [null], // set\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ54: this.formBuilder.group({\n QuestionID: [54],\n QuestionText: ['Roadmap Month'],\n FormQCategoryID: [2], // meeting\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ55: this.formBuilder.group({\n QuestionID: [55],\n QuestionText: ['Roadmap Successes'],\n FormQCategoryID: [2], // meeting\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ56: this.formBuilder.group({\n QuestionID: [56],\n QuestionText: ['Other Roadmap Successes'],\n FormQCategoryID: [2], // meeting\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [null], // set\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ57: this.formBuilder.group({\n QuestionID: [57],\n QuestionText: ['Roadmap Bariers'],\n FormQCategoryID: [2], // meeting\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [null], // set\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ58: this.formBuilder.group({\n QuestionID: [58],\n QuestionText: ['Other Roadmap Barriers'],\n FormQCategoryID: [2], // meeting\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ59: this.formBuilder.group({\n QuestionID: [59],\n QuestionText: ['Cohort Successes'],\n FormQCategoryID: [2], // meeting\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [null], // set\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ60: this.formBuilder.group({\n QuestionID: [60],\n QuestionText: ['Cohort Barriers'],\n FormQCategoryID: [2], // meeting\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n FormQ61: this.formBuilder.group({\n QuestionID: [61],\n QuestionText: ['Other Cohort Barriers'],\n FormQCategoryID: [2], // meeting\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n FormQResponses: this.formBuilder.array([\n this.formBuilder.group({\n UserResponse: [null],\n ResponsePointValue: [null],\n FormResponseDataTypeID: [3],\n FormResponseTypeID: [7],\n ResponseDateTime: [nowJson], // Date\n ResponseUserID: [userID],\n LastUpdateDateTime: [nowJson], // Date\n LastUpdateUserID: [userID],\n }),\n ]),\n }),\n // FormQ62: this.formBuilder.group({\n // QuestionID: [62],\n // QuestionText: ['Minutes'],\n // FormQCategoryID: [2], // meeting\n // LastUpdateDateTime: [nowJson], // Date\n // LastUpdateUserID: [userID],\n // FormQResponses: this.formBuilder.array([\n // this.formBuilder.group({\n // UserResponse: [null, Validators.required],\n // ResponsePointValue: [null],\n // FormResponseDataTypeID: [3],\n // FormResponseTypeID: [7],\n // ResponseDateTime: [nowJson], // Date\n // ResponseUserID: [userID],\n // LastUpdateDateTime: [nowJson], // Date\n // LastUpdateUserID: [userID],\n // })\n // ])\n // }),\n // FormQ63: this.formBuilder.group({\n // QuestionID: [63],\n // QuestionText: ['Agenda'],\n // FormQCategoryID: [2], // meeting\n // LastUpdateDateTime: [nowJson], // Date\n // LastUpdateUserID: [userID],\n // FormQResponses: this.formBuilder.array([\n // this.formBuilder.group({\n // UserResponse: [null],\n // ResponsePointValue: [null],\n // FormResponseDataTypeID: [3],\n // FormResponseTypeID: [7],\n // ResponseDateTime: [nowJson], // Date\n // ResponseUserID: [userID],\n // LastUpdateDateTime: [nowJson], // Date\n // LastUpdateUserID: [userID],\n // })\n // ])\n // }),\n type: ['monthly', [Validators.required]],\n // Quarterly Specific\n quarter: [''],\n brightSpot: [''],\n barriers: [''],\n // Monthly Specific\n month: [''],\n meetingCount: [''],\n successes: [''],\n // Attachments\n agenda: [''],\n minutes: ['', [Validators.required]],\n });\n }\n\n ngOnInit(): void {\n this.isAuthenticated$ = this._authService.isAuthenticated$;\n this.userInfo$ = this._authService.userInfo$;\n this.authSub = this.isAuthenticated$.subscribe(\n (isLoggedIn) => {\n this._isLoggedIn = isLoggedIn;\n },\n (error) => {}\n );\n this.userSub = this.userInfo$.subscribe((userInfo) => {\n this._currentUser = userInfo;\n });\n\n this.hierarchyTierService.currentTier$?.subscribe((x) => {\n this.currentTier = x;\n this.selectedCommunity = this.currentTier.selectedItem.tierName;\n });\n\n this.initializeMeetingForm();\n\n this.qualityService\n .getListOfSpecificTier(null, SubmitFeatureConstants.MeetingFormFeature)\n .subscribe((data) => {\n this.setPrincipleParticipant(data);\n });\n\n this.successesFormSub = this.successesForm.valueChanges.subscribe(() => {\n this.updateSelectedSuccesses();\n });\n\n this.barriersFormSub = this.barriersForm.valueChanges.subscribe(() => {\n this.updateSelectedBarriers();\n });\n }\n\n updateSelectedSuccesses(): void {\n const selectedSuccesses = this.successesForm\n .get('successes')\n .value.map((selected, i) => (selected ? this.successesList[i] : null))\n .filter((p) => p !== null);\n\n let selectedSuccessCheckboxes;\n if (this.otherSuccesses && this.hasOtherSuccesses) {\n if (selectedSuccesses.length > 0) {\n selectedSuccessCheckboxes =\n selectedSuccesses.map((p) => p.value).toString() +\n ', ' +\n this.otherSuccesses;\n } else {\n selectedSuccessCheckboxes = this.otherSuccesses;\n }\n } else {\n selectedSuccessCheckboxes = selectedSuccesses\n .map((p) => p.value)\n .toString();\n }\n this.meetingForm.patchValue({ successes: selectedSuccessCheckboxes });\n }\n\n updateSelectedBarriers(): void {\n const selectedBarriers = this.barriersForm\n .get('barriers')\n .value.map((selected, i) => (selected ? this.barriersList[i] : null))\n .filter((p) => p !== null);\n\n let selectedBarriersCheckboxes;\n if (this.otherBarriers && this.hasOtherBarriers) {\n if (selectedBarriers.length > 0) {\n selectedBarriersCheckboxes =\n selectedBarriers.map((p) => p.value).toString() +\n ', ' +\n this.otherBarriers;\n } else {\n selectedBarriersCheckboxes = this.otherBarriers;\n }\n } else {\n selectedBarriersCheckboxes = selectedBarriers\n .map((p) => p.value)\n .toString();\n }\n this.meetingForm.patchValue({ barriers: selectedBarriersCheckboxes });\n }\n\n toggleOnFocusOtherSuccesses(): void {\n // Focuses the textarea upon checking, clears and updates checkbox array if unchecking\n setTimeout(() => {\n // this will make the execution after element is rendered in the DOM after change\n if (this.hasOtherSuccesses) {\n this.meetingForm_otherSuccesses.nativeElement.focus();\n } else {\n this.otherSuccesses = '';\n this.updateSelectedSuccesses();\n }\n }, 0);\n }\n\n toggleOnFocusOtherBarriers(): void {\n setTimeout(() => {\n // this will make the execution after element is rendered in the DOM after change\n if (this.hasOtherBarriers) {\n this.meetingForm_otherBarriers.nativeElement.focus();\n } else {\n this.otherBarriers = '';\n this.updateSelectedBarriers();\n }\n }, 0);\n }\n\n public onAgendaFileChange(event): void {\n if (event.target.files && event.target.files.length) {\n const file = event.target.files[0];\n this.meetingForm.patchValue({ agenda: file });\n this.uploadedAgendaFileName = file.name || 'File name not found';\n } else {\n this.resetUploadForm();\n }\n this.meetingForm.get('agenda').markAsTouched();\n }\n\n public onMinutesFileChange(event): void {\n if (event.target.files && event.target.files.length) {\n const file = event.target.files[0];\n this.meetingForm.patchValue({ minutes: file });\n this.uploadedMinutesFileName = file.name || 'File name not found';\n } else {\n this.resetUploadForm();\n }\n this.meetingForm.get('minutes').markAsTouched();\n }\n\n private resetUploadForm(): void {\n this.uploadedAgendaFileName = 'No file chosen';\n this.uploadedMinutesFileName = 'No file chosen';\n this.clearFileInput(document.getElementById('meeting-agenda'));\n this.clearFileInput(document.getElementById('meeting-minutes'));\n this.initializeMeetingForm();\n this.resetCheckboxes();\n this.meetingForm\n .get('FormQ51.FormQResponses.0.UserResponse')\n .setValue(this.selectedCommunity);\n if (\n this.principleParticipants != null &&\n this.principleParticipants.length == 1\n ) {\n this.setRequiredTierInfo(\n this.principleParticipants[0].TierID,\n this.principleParticipants[0].TierName\n );\n } else {\n this.selectedPP = null;\n this.ppSet = false;\n }\n }\n\n onSubmit(): void {\n if (this.meetingForm.invalid) {\n this.meetingForm.markAllAsTouched();\n console.error(\n 'Submit Clicked: ' +\n String.fromCodePoint(0x1f525) +\n '%cMeeting Form is Invalid' +\n String.fromCodePoint(0x1f525),\n 'font-weight: 700; text-transform: uppercase; color: red;'\n );\n this.toastr.warning('Failed To Save', 'Invalid Meeting Form');\n } else {\n this.toastr.info('Form Submitting', 'Meeting Form');\n\n console.log(\n String.fromCodePoint(0x1f389) +\n String.fromCodePoint(0x1f389) +\n ' %cMeeting Form is Valid !! :) Here is what we got: ' +\n String.fromCodePoint(0x1f389),\n 'font-weight: 900; text-transform: uppercase; color: darkseagreen'\n );\n\n this.meetingForm\n .get('FormQ55.FormQResponses.0.UserResponse')\n .setValue(this.meetingForm.value.successes);\n\n if (this.meetingForm.value.type === 'quarterly') {\n // Cohort\n this.meetingForm.get('FormName').setValue('Quarterly Cohort Meeting');\n\n this.meetingForm\n .get('FormQ53.FormQResponses.0.UserResponse')\n .setValue(this.meetingForm.value.quarter);\n\n this.meetingForm\n .get('FormQ59.FormQResponses.0.UserResponse')\n .setValue(this.meetingForm.value.brightSpot);\n\n this.meetingForm\n .get('FormQ60.FormQResponses.0.UserResponse')\n .setValue(this.meetingForm.value.barriers);\n\n this.meetingForm.removeControl('FormQ55');\n this.meetingForm.removeControl('FormQ57');\n this.meetingForm.removeControl('FormQ54');\n this.meetingForm.removeControl('FormQ52');\n } else {\n // Roadmap\n this.meetingForm.get('FormName').setValue('Monthly Roadmap Meeting');\n\n this.meetingForm\n .get('FormQ52.FormQResponses.0.UserResponse')\n .setValue(this.meetingForm.value.meetingCount);\n\n this.meetingForm\n .get('FormQ54.FormQResponses.0.UserResponse')\n .setValue(this.meetingForm.value.month);\n\n this.meetingForm\n .get('FormQ55.FormQResponses.0.UserResponse')\n .setValue(this.meetingForm.value.successes);\n\n this.meetingForm\n .get('FormQ57.FormQResponses.0.UserResponse')\n .setValue(this.meetingForm.value.barriers);\n\n this.meetingForm.removeControl('FormQ59');\n this.meetingForm.removeControl('FormQ60');\n this.meetingForm.removeControl('FormQ53');\n }\n\n this.meetingForm.patchValue({ isComplete: 1 });\n\n const formCopy = Object.assign({}, this.meetingForm.getRawValue());\n\n if (formCopy.SpecialStatus == null) {\n formCopy.SpecialStatus = '';\n }\n\n this.formSaving = true;\n const uploadAgendaFile = this.meetingForm.get('agenda').value;\n const uploadMinutesFile = this.meetingForm.get('minutes').value;\n this.qualityService\n .save([uploadAgendaFile, uploadMinutesFile], formCopy)\n .pipe(finalize(() => (this.formSaving = false)))\n .subscribe(\n () => {\n this.toastr.success('Form Submitted', 'Meeting Form');\n this.resetUploadForm();\n },\n (err) => {\n console.error(err);\n this.toastr.error('Form Failed To Save', 'Meeting Form');\n }\n );\n }\n }\n\n resetCheckboxes(): void {\n this.successesForm = this.formBuilder.group({\n successes: this.formBuilder.array([]),\n });\n this.barriersForm = this.formBuilder.group({\n barriers: this.formBuilder.array([]),\n });\n this.addSuccessCheckboxes();\n this.addBarriersCheckboxes();\n }\n\n clearFileInput(ctrl) {\n try {\n ctrl.value = null;\n } catch (ex) {}\n if (ctrl.value) {\n ctrl.parentNode.replaceChild(ctrl.cloneNode(true), ctrl);\n }\n }\n\n ngOnDestroy() {\n this.successesFormSub.unsubscribe();\n this.barriersFormSub.unsubscribe();\n }\n\n public toggleInfoText(details: string): void {\n this.isInfoTextOpen = !this.isInfoTextOpen;\n if (details != null) {\n this.infoText = details;\n }\n }\n\n // Initial page load we get\n private setPrincipleParticipant(data: string): void {\n this.principleParticipants = JSON.parse(data);\n\n if (\n this.principleParticipants != null &&\n this.principleParticipants.length == 1\n ) {\n this.setRequiredTierInfo(\n this.principleParticipants[0].TierID,\n this.principleParticipants[0].TierName\n );\n }\n }\n\n public ppSelected(tierID: string): void {\n const pp = this.principleParticipants.find((x) => x.TierID === tierID);\n this.setRequiredTierInfo(pp.TierID, this.principleParticipants[0].TierName);\n }\n\n private setRequiredTierInfo(id: string, name: string) {\n this.meetingForm.get('Tier3_ID').setValue(id);\n this.meetingForm.get('Tier3_ID').markAsTouched({ onlySelf: true });\n this.meetingForm.get('Tier3_Name').setValue(name);\n this.meetingForm.get('Tier3_Name').markAsTouched({ onlySelf: true });\n this.meetingForm\n .get('FormQ51.FormQResponses.0.UserResponse')\n .setValue(this.selectedCommunity);\n this.ppSet = true;\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'ag-clickable',\n template: `\n \n `,\n styles: [\n `.btn {\n line-height: 0.5;\n width: 100%;\n }`\n ]\n})\nexport class ClickableComponent {\n @Input() cell: any;\n @Output() onClicked = new EventEmitter();\n private displayButton = false;\n\n click(): void {\n this.onClicked.emit(this.cell);\n }\n}\n","import { Component } from '@angular/core';\nimport { AgRendererComponent } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-community';\n\n@Component({\n selector: 'clickable-cell',\n template: `\n \n `\n})\nexport class ClickableParentComponent implements AgRendererComponent {\n public params: ICellRendererParams;\n public cell: any;\n agInit(params): void {\n this.params = params;\n this.cell = { row: params.value, col: params.colDef.headerName };\n }\n\n public clicked(cell: any): void {\n this.params.context.componentParent.reportParentClickResult(\n this.params.value,\n this.params.node.data,\n this.params.rowIndex\n );\n }\n\n refresh(): boolean {\n return false;\n }\n}\n"," \n \n
\n \n \n \n \n
\n\n","import { Component, OnInit, Input, Output, EventEmitter, Inject, LOCALE_ID } from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { Subscription } from 'rxjs';\nimport { CaravanFormAdminACO, ColumnDefs } from '@shared/models/forms/form-admin-model';\nimport { ClickableParentComponent } from './clickable.parent.component';\n\n@Component({\n selector: 'coach-admin-form-report',\n templateUrl: './admin-report.component.html'\n})\nexport class AdminFormReport implements OnInit {\n @Input() CaravanFormAdminData: []; // Import form from parent component\n @Input() columnNamesLevelOne: ColumnDefs[];\n @Input() tierID: string;\n @Input() reportName: string;\n @Input() formID: string;\n\n @Output() resultClickedEvent = new EventEmitter();\n @Output() resultResponseReport = new EventEmitter();\n\n public allSubs: Subscription[];\n public specialStatusSummary: CaravanFormAdminACO[];\n\n public defaultColDef;\n public detailCellRendererParams;\n public detailCellRenderer;\n public context: ReportContext;\n\n public gridApi;\n public gridColumnApi;\n public rowData;\n\n constructor(@Inject(LOCALE_ID) private locale: string) {\n this.context = { componentParent: this };\n }\n\n public frameworkComponents = {\n clickableParentComponent: ClickableParentComponent\n };\n\n ngOnInit(): void {}\n\n reportParentClickResult(cell: any, data: any, row: any): void {\n this.resultClickedEvent.emit({ cell, data });\n }\n\n onFirstDataRendered(params: any): void {\n setTimeout(function () {\n params.api.getDisplayedRowAtIndex(0).setExpanded(false);\n }, 0);\n }\n\n public formSubmissionsOverview: CaravanFormAdminACO[];\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n }\n\n onBtnExport(): void {\n let columnKeys = [];\n this.columnNamesLevelOne.forEach(c => {\n if (c?.cellRenderer !== 'clickableParentComponent') {\n columnKeys.push(c.field);\n }\n });\n\n const reportName: string = this.reportName + '_' + this.tierID;\n const timestamp = formatDate(new Date(), 'yyyy-MM-dd', this.locale);\n\n this.gridApi.exportDataAsCsv({\n suppressQuotes: false,\n columnKeys: columnKeys,\n fileName: `${reportName}_${timestamp}.csv`\n });\n }\n\n onBtnExportResponses(): void {\n this.resultResponseReport.emit();\n }\n}\ninterface ReportContext {\n componentParent: AdminFormReport;\n}\ninterface rowSelected {\n cell: string;\n data: any;\n}\n","import { Component} from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport {ClickableParentComponent} from './clickable.parent.component';\n\n@Component({\n selector: 'app-detail-cell-renderer',\n template: `\n \n `,\n})\nexport class DetailCellRenderer implements ICellRendererAngularComp {\n rowData;\n colDefs;\n rowId;\n masterGridApi;\n params;\n defaultColDef;\n public detailCellRendererParams;\n public detailCellRenderer;\n public detailCellRendererParamsThird;\n public context: any;\n\n public detailRowHeight;\n\n\n public frameworkComponents = {\n clickableParentComponent: ClickableParentComponent\n};\n\nconstructor() {\n this.context = {componentParent: this};\n\n}\n\n agInit(params: any): void {\n this.params = params;\n\n this.masterGridApi = params.api;\n this.rowId = params.node.id;\n\n\n this.colDefs = params.detailGridOptions.columnDefs;\n\n this.detailRowHeight = 500;\n this.detailCellRendererParams = {\n detailGridOptions: {\n columnDefs: params.detailGridOptions.detailCellRendererParams.detailGridOptions.columnDefs,\n defaultColDef: { flex: 1, },\n detailRowHeight: 500,\n groupDefaultExpanded: 0,\n masterDetail: true,\n detailRowAutoHeight: true,\n\n },\n getDetailRowData: params => {\n setTimeout(function () {\n params.successCallback(params.data.practices);\n }, 0);\n\n },\n };\n\n this.rowData = params.data.communities;\n\n }\n\n refresh(params: any): boolean {\n return false;\n }\n\n onGridReady(params) {\n var gridInfo = {\n id: this.rowId,\n api: params.api,\n columnApi: params.columnApi,\n };\n\n this.masterGridApi.addDetailGridInfo(this.rowId, gridInfo);\n }\n\n ngOnDestroy(): void {\n this.masterGridApi.removeDetailGridInfo(this.rowId);\n }\n\n reportParentClickResult(cell: any, data: any):void {\n this.params.context.componentParent.reportParentClickResult(cell, data);\n}\n}\n","\n\n
\n \n \n \n \n
\n\n","import {Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n Inject,\n LOCALE_ID\n} from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { Subscription } from 'rxjs';\n\nimport { CaravanFormAdminPracticeRespView, ColumnDefs } from '@shared/models/forms/form-admin-model';\nimport {ClickableParentComponent} from './clickable.parent.component';\nimport { DetailCellRenderer } from './detail-cell-renderer.component';\n\n@Component({\n selector: 'coach-admin-form-report-practice',\n templateUrl: './admin-report-practice.component.html'\n})\n\nexport class AdminFormReportPractice implements OnInit {\n\n @Input() CaravanFormAdminResponseData:[]; // Import form from parent component\n @Input() columnNamesLevelOne: ColumnDefs[];\n @Input() columnNamesLevelTwo: ColumnDefs[];\n @Input() tierID: string;\n @Input() reportName: string;\n @Input() formID: string;\n @Output() resultResponseReport = new EventEmitter();\n\n public allSubs: Subscription[];\n public defaultColDef;\n public detailCellRendererParams;\n public detailCellRenderer;\n public context: ReportContext;\n\n public gridApi;\n public gridColumnApi;\n public rowData;\n public isRowMaster;\n public icons;\n \n constructor(@Inject(LOCALE_ID) private locale: string) {\n this.context = {componentParent: this};\n this.isRowMaster = function (dataItem) {\n if (dataItem.formResponses != null){\n return dataItem ? dataItem.formResponses.length > 0 : false;\n }\n else{\n return false;\n }\n };\n }\n\n public frameworkComponents = {\n clickableParentComponent: ClickableParentComponent,\n myDetailCellRenderer:DetailCellRenderer\n };\n\n ngOnInit(): void {\n this.detailCellRendererParams = {\n detailGridOptions: {\n columnDefs: this.columnNamesLevelTwo,\n defaultColDef: { flex: 1, },\n groupDefaultExpanded: 0,\n masterDetail: true,\n detailRowHeight: 240,\n detailRowAutoHeight: true,\n\n },\n //Keeping this in for future implementation\n // getDetailRowData: function (params) {\n // params.successCallback(params.data.formResponses);\n // },\n // get the rows for each Detail Grid\n getDetailRowData: params => {\n setTimeout(function () {\n params.successCallback(params.data.formResponses);\n });\n\n },\n };\n }\n\n onFirstDataRendered(params: any): void {\n setTimeout(function () {\n params.api.getDisplayedRowAtIndex(0).setExpanded(false);\n }, 0);\n }\n\n public formSubmissionsOverview: CaravanFormAdminPracticeRespView[];\n\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n }\n\n onBtnExport(): void {\n let columnKeys = [];\n this.columnNamesLevelOne.forEach((c) => {\n if (c?.cellRenderer !== 'clickableParentComponent'){\n columnKeys.push(c.field);\n }\n });\n\n const reportName: string = this.reportName+ '_' + this.tierID;\n const timestamp = formatDate(new Date(), 'yyyy-MM-dd', this.locale);\n\n this.gridApi.exportDataAsCsv({ suppressQuotes: false, columnKeys: columnKeys, fileName: `${reportName}_${timestamp}.csv` });\n\n }\n\n reportParentClickResult(cell: any, data: any, row: any):void {\n if (this.gridApi.getRowNode(row).expanded == true){\n this.gridApi.getRowNode(row).expanded = false;\n }\n else {\n this.gridApi.getRowNode(row).expanded = true;\n }\n this.gridApi.onGroupExpandedOrCollapsed();\n }\n\n onBtnExportResponses(): void {\n this.resultResponseReport.emit();\n\n }\n\n}\ninterface ReportContext {\n componentParent: AdminFormReportPractice;\n}\n","
\n
\n Submit Period  \n \n
\n\n\n\n
\n \n
\n \n \n
\n\n\n\n
\n \n \n
\n \n \n
\n\n\n
\n \n \n \n
\n \n \n
\n
\n\n\n\n\n\n\n\n\n\n\n","import { Component, OnInit} from '@angular/core';\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service';\nimport { CaravanFormAdminACO, CaravanFormAdminPracticeRespView} from '@shared/models/forms/form-admin-model';\nimport { FormSubmission } from '@shared/models/forms/forms-backend';\nimport { CaravanFormAdminSubmitPeriod } from '@shared/models/forms/form-submissionID-model';\n@Component({\n selector: 'coach-submit-quality-admin-report',\n templateUrl: './submit-quality-admin-report.component.html',\n host: {\n class: 'row u-fill',\n },\n styleUrls: ['../shared/submit-generic-admin-report.component.scss']\n})\nexport class SubmitQualityAdminReportComponent implements OnInit {\n\npublic formsSubmissionsOverviewACO: CaravanFormAdminACO[];\npublic formsSubmissionsOverviewComm: CaravanFormAdminPracticeRespView[];\npublic formSubmissions: FormSubmission[];\n\npublic formSubmissionsPracticeResps: CaravanFormAdminPracticeRespView[];\npublic formID = '2';\npublic reportName = 'Quality_Admin'\npublic TierID = 'ACO'\n\npublic isPracticeHidden: boolean = true;\npublic isICCHidden: boolean = true;\npublic isACOHidden: boolean = false;\npublic gridApi: any;\nprivate icc: string;\nprivate aco: string;\n\npublic selectedFormSubPeriod: number;\n\npublic caravanFormAdminSubmitPeriod: CaravanFormAdminSubmitPeriod[];\npublic submitPeriodParam: number;\npublic readonly QualityFormId = 2;\n\nconstructor(\n private qualityService: SubmitFormsService\n) {}\n\n public columnNamesACO = [{ headerName: 'ACO ID', field: 'acoID', cellRenderer: 'agGroupCellRenderer', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'ACO Name', field: 'acoName', filter: true, minWidth: 300 },\n { headerName: 'Percentage Complete', field: 'acoPercentageComplete', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'Last Update', field: 'acoLastUpdateTime', filter: true, minWidth: 200 },\n { headerName: 'View Communities', field: 'acoID',cellRenderer: 'clickableParentComponent',editable: false, minWidth: 150}\n ];\n\n public columnNamesComm = [{ headerName: 'ICC', field: 'ICC', cellRenderer: 'agGroupCellRenderer', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'Region', field: 'regionID', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'Community Name', field: 'communityName', filter: true, filterParams: {applyMiniFilterWhileTyping: true,} , minWidth: 400 },\n { headerName: 'Percentage Complete',field: 'commPercentageComplete', filter: true, suppressSizeToFit: true},\n { headerName: 'Last Update', field: 'commLastUpdateTime', filter: true, minWidth: 200 },\n { headerName: 'View Practices', field: 'ICC', cellRenderer: 'clickableParentComponent', colId: 'params', editable: false, minWidth: 150 }\n ];\n\n public practiceCellRendererParams = [ { headerName: 'ICC', field: 'ICC', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,}, maxWidth: 75 },\n { headerName: 'Region', field: 'regionID', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} , maxWidth: 75 },\n { headerName: 'Practice Name', field: 'tier4Name', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,}, minWidth: 320 },\n { headerName: 'TIN (last 4)/CCN', field: 'tier4ID', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,}, maxWidth: 135 },\n { headerName: 'Has Entry', field: 'hasEntry', filter: true , suppressSizeToFit: true, maxWidth: 100 },\n { headerName: 'Special Status', field: 'specialStatus', filter: true, suppressSizeToFit: true, minWidth: 125 },\n { headerName: 'Total Points', field: 'totalPoints', filter: true ,suppressSizeToFit: true, },\n { headerName: 'Last Update', field: 'lastUpdateTime', filter: true , suppressSizeToFit: true },\n { headerName: 'Updated By', field: 'updatedByUsername', filter: true, suppressSizeToFit: true, minWidth: 200 },\n { headerName: 'User Form ID', field: 'UserFormID', filter: true, suppressSizeToFit: true },\n { headerName: 'Primary User Form ID', field: 'PrimaryUserFormID', filter: true, suppressSizeToFit: true },\n // { headerName: 'View Measures', field: 'formResponses', filter: true, cellRenderer: 'clickableParentComponent', maxWidth: 150 }\n ];\n\n public formQuestionResponses = [{ headerName: 'Question ID', field: 'QuestionID', filter: true, maxWidth: 150 },\n { headerName: 'Question Text', field: 'QuestionText', filter: true, minWidth: 350 },\n { headerName: 'Point Value', field: 'PointValue', filter: true, maxWidth: 150 },\n { headerName: 'Numerator', field: 'NumValue', filter: true, maxWidth: 150 },\n { headerName: 'Denominator', field: 'DenValue', filter: true, maxWidth: 150 },\n { headerName: 'Text Response', field: 'TextResponse', filter: true }\n ];\n\n ngOnInit(): void {\n this.qualityService.getAdminReportSubmitPeriods(this.QualityFormId).subscribe((data) => {\n this.caravanFormAdminSubmitPeriod = data;\n if (this.submitPeriodParam == null) {\n this.selectedFormSubPeriod = this.caravanFormAdminSubmitPeriod[0].caravanFormSubmitPeriodID;\n } else\n {\n this.selectedFormSubPeriod = this.submitPeriodParam;\n }\n\n this.refreshOverview();\n });\n }\n\n resultClickedICC(data): void{\n this.icc = data.cell;\n this.TierID = data.cell;\n this.isPracticeHidden = false;\n this.isICCHidden = true;\n this.refreshPractice();\n }\n\n refreshPractice(): void{\n const tierlevel = '4';\n const submissionID = this.selectedFormSubPeriod.toString();\n this.qualityService.getAdminReportPracticeResponseView(this.formID, this.icc, tierlevel, submissionID).subscribe((data) => {\n this.formSubmissionsPracticeResps = data;\n });\n }\n\n resultClickedACO(data): void{\n this.aco = data.cell;\n this.TierID = data.cell;\n this.isICCHidden = false;\n this.isACOHidden = true;\n this.refreshCommunity();\n }\n\n refreshCommunity(): void{\n const tierlevel = '2';\n const submissionID = this.selectedFormSubPeriod.toString();\n this.qualityService.getAdminReportPracticeResponseView(this.formID, this.aco, tierlevel, submissionID).subscribe((data) => {\n this.formsSubmissionsOverviewComm = data;\n });\n }\n\n returnToOverview(): void{\n this.TierID = 'ACO';\n this.isPracticeHidden = true;\n this.isICCHidden = true;\n this.isACOHidden = false;\n this.formSubmissionsPracticeResps= [];\n this.formsSubmissionsOverviewComm= [];\n }\n\n returnToCommunity(): void{\n this.TierID = this.aco;\n this.isPracticeHidden = true;\n this.isICCHidden = false;\n this.formSubmissionsPracticeResps= [];\n }\n\n refreshOverview(): void{\n const submissionID = this.selectedFormSubPeriod.toString();\n this.qualityService.getAdminReportResponseOverview(this.formID, submissionID).subscribe((data) => {\n this.formsSubmissionsOverviewACO = data;\n });\n }\n\n selectSubmissionPeriod(submissionPeriodID): void {\n this.selectedFormSubPeriod = submissionPeriodID.target.value;\n this.refreshOverview();\n\n }\n\n\n}\n","
\n
\n Submit Period  \n \n
\n\n\n
\n \n
\n \n \n
\n\n\n\n
\n \n \n
\n \n \n
\n\n\n
\n \n \n \n\n
\n \n \n
\n\n\n
\n \n \n \n \n
\n \n \n
\n
\n\n\n\n\n\n\n\n\n\n\n","import { Component, OnInit, Inject, LOCALE_ID} from '@angular/core';\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service';\nimport { formatDate } from '@angular/common';\nimport { CaravanFormAdminACO, CaravanFormAdminPracticeRespView, CaravanFormAdminFormResponsesView} from '@shared/models/forms/form-admin-model';\nimport { FormSubmission } from '@shared/models/forms/forms-backend';\nimport { CaravanFormAdminSubmitPeriod, CaravanFormAdminResponseReport } from '@shared/models/forms/form-submissionID-model';\nimport { faShekelSign } from '@fortawesome/free-solid-svg-icons';\nimport { ExcelService, workBook, WorkSheetTypes } from '@shared/services/excel-export/excel.service';\n@Component({\n selector: 'coach-submit-compliance-admin-report',\n templateUrl: './submit-compliance-admin-report.component.html',\n host: {\n class: 'row u-fill',\n },\n styleUrls: ['../shared/submit-generic-admin-report.component.scss']\n})\nexport class SubmitComplianceAdminReportComponent implements OnInit {\n\npublic formsSubmissionsOverviewACO: CaravanFormAdminACO[];\npublic formsSubmissionsOverviewComm: CaravanFormAdminPracticeRespView[];\npublic formSubmissions: FormSubmission[];\n\npublic formSubmissionsPracticeResps: CaravanFormAdminPracticeRespView[];\npublic formSubmissionResponse: CaravanFormAdminFormResponsesView[];\npublic formID = '3';\npublic reportName = 'Compliance_Admin'\npublic TierID = 'ACO'\n\npublic isResponseHidden: boolean = true;\npublic isPracticeHidden: boolean = true;\npublic isICCHidden: boolean = true;\npublic isACOHidden: boolean = false;\n\npublic gridApi: any;\nprivate icc: string;\nprivate aco: string;\n\npublic selectedFormSubPeriod: number;\n\npublic caravanFormAdminSubmitPeriod: CaravanFormAdminSubmitPeriod[];\npublic caravanFormAdminResponses: CaravanFormAdminResponseReport[];\npublic submitPeriodParam: number;\npublic readonly QualityFormId = 3;\n\nprivate excelService = new ExcelService();\nprivate workbookData: workBook[];\n\nprivate formResponseDownloadFields = [\n { headerName: 'User Form ID', field: 'userFormID', sortable: true, filter: true, resizable: true },\n { headerName: 'Tier2 ID', field: 'tier2ID', sortable: true, filter: true, resizable: true },\n { headerName: 'Tier3 ID', field: 'tier3ID', sortable: true, filter: true, resizable: true },\n { headerName: 'Submitter Email', field: 'submitterEmail', sortable: true, filter: true, resizable: true },\n { headerName: 'Form Create Date Time', field: 'formCreateDateTime', sortable: true, filter: true, resizable: true },\n { headerName: 'Last Update Date Time', field: 'lastUpdateDateTime', sortable: true, filter: true, resizable: true },\n { headerName: 'Total Points', field: 'totalPoints', sortable: true, filter: true, resizable: true },\n { headerName: 'Question Name', field: 'questionName', sortable: true, filter: true, resizable: true },\n { headerName: 'Question Text', field: 'questionText', sortable: true, filter: true, resizable: true },\n { headerName: 'User Response', field: 'userResponse', sortable: true, filter: true, resizable: true },\n { headerName: 'Resonse Point Value', field: 'resonsePointValue', sortable: true, filter: true, resizable: true },\n { headerName: 'Submission Status', field: 'submissionStatus', sortable: true, filter: true, resizable: true },\n];\n\nconstructor(\n private qualityService: SubmitFormsService, @Inject(LOCALE_ID) private locale: string\n) {}\n\n public columnNamesACO = [{ headerName: 'ACO ID', field: 'acoID', cellRenderer: 'agGroupCellRenderer', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'ACO Name', field: 'acoName', filter: true, minWidth: 300 },\n { headerName: 'Percentage Complete', field: 'acoPercentageComplete', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'Last Update', field: 'acoLastUpdateTime', filter: true, minWidth: 200 },\n { headerName: 'View Communities', field: 'acoID',cellRenderer: 'clickableParentComponent',editable: false,minWidth: 150}\n ];\n\n public columnNamesComm = [{ headerName: 'ICC', field: 'ICC', cellRenderer: 'agGroupCellRenderer', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'Region', field: 'regionID', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'Community Name', field: 'communityName', filter: true, filterParams: {applyMiniFilterWhileTyping: true,} , minWidth: 400 },\n { headerName: 'Percentage Complete',field: 'commPercentageComplete', filter: true, suppressSizeToFit: true},\n { headerName: 'Last Update', field: 'commLastUpdateTime', filter: true, minWidth: 200 },\n { headerName: 'View Principals', field: 'ICC', cellRenderer: 'clickableParentComponent', colId: 'params', editable: false, minWidth: 150 }\n ];\n\n public practiceCellRendererParams = [ { headerName: 'ICC', field: 'ICC', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,}, maxWidth: 75 },\n { headerName: 'Region', field: 'regionID', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} , maxWidth: 75 },\n { headerName: 'Principal Name', field: 'tier3Name', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,},maxWidth: 380, minWidth: 320 },\n { headerName: 'Principal ID', field: 'tier3ID', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,}, maxWidth: 135 },\n { headerName: 'Has Entry', field: 'hasEntry', filter: true, suppressSizeToFit: true, maxWidth: 100 },\n { headerName: 'Special Status', field: 'specialStatus', filter: true, suppressSizeToFit: true, minWidth: 125 },\n { headerName: 'Total Points', field: 'totalPoints', filter: true , suppressSizeToFit: true, maxWidth: 115 },\n { headerName: 'Last Update', field: 'lastUpdateTime', filter: true , suppressSizeToFit: true, maxWidth: 140 },\n { headerName: 'Updated By', field: 'updatedByUsername', filter: true, suppressSizeToFit: true, minWidth: 185 },\n { headerName: 'User Form ID', field: 'UserFormID', filter: true, suppressSizeToFit: true},\n { headerName: 'Primary User Form ID', field: 'PrimaryUserFormID', filter: true, suppressSizeToFit: true },\n { headerName: 'View Responses', field: 'formResponses', filter: true, cellRenderer: 'clickableParentComponent', minWidth: 150 }\n ];\n\n public formQuestionResponses = [{ headerName: 'Question', field: 'QuestionID', filter: true, suppressSizeToFit: true, maxWidth: 100 },\n { headerName: 'Question Text', field: 'QuestionText', filter: true, suppressSizeToFit: true, minWidth: 600, resizable: true },\n { headerName: 'Point Value', field: 'PointValue', filter: true, maxWidth: 150, resizable: true },\n { headerName: 'Text Response', field: 'TextResponse', filter: true, resizable: true }\n ];\n\n ngOnInit(): void {\n this.qualityService.getAdminReportSubmitPeriods(this.QualityFormId).subscribe((data) => {\n this.caravanFormAdminSubmitPeriod = data;\n if (this.submitPeriodParam == null) {\n this.selectedFormSubPeriod = this.caravanFormAdminSubmitPeriod[0].caravanFormSubmitPeriodID;\n } else\n {\n this.selectedFormSubPeriod = this.submitPeriodParam;\n }\n\n this.refreshOverview();\n });\n }\n\n resultClickedICC(data): void{\n this.icc = data.cell;\n this.TierID = data.cell;\n this.isPracticeHidden = false;\n this.isICCHidden = true;\n this.refreshPractice();\n }\n\n resultClickedPrincipal(data): void{\n this.isResponseHidden = false;\n this.isPracticeHidden = true;\n this.formSubmissionResponse = data.cell;\n }\n\n refreshPractice(): void{\n const tierlevel = '4';\n const submissionID = this.selectedFormSubPeriod.toString();\n this.qualityService.getAdminReportPracticeResponseView(this.formID, this.icc, tierlevel, submissionID).subscribe((data) => {\n this.formSubmissionsPracticeResps = data;\n });\n }\n\n resultClickedACO(data): void{\n this.aco = data.cell;\n this.TierID = data.cell;\n this.isICCHidden = false;\n this.isACOHidden = true;\n this.refreshCommunity();\n }\n\n refreshCommunity(): void{\n const tierlevel = '2';\n const submissionID = this.selectedFormSubPeriod.toString();\n this.qualityService.getAdminReportPracticeResponseView(this.formID, this.aco, tierlevel, submissionID).subscribe((data) => {\n this.formsSubmissionsOverviewComm = data;\n });\n }\n\n returnToOverview(): void{\n this.TierID = 'ACO';\n this.isResponseHidden = true;\n this.isPracticeHidden = true;\n this.isICCHidden = true;\n this.isACOHidden = false;\n this.formSubmissionsPracticeResps= [];\n this.formsSubmissionsOverviewComm= [];\n }\n\n returnToCommunity(): void{\n this.TierID = this.aco;\n this.isResponseHidden = true;\n this.isPracticeHidden = true;\n this.isICCHidden = false;\n this.formSubmissionsPracticeResps= [];\n }\n\n returnToPrincipal(): void{\n this.TierID = this.icc;\n this.isResponseHidden = true;\n this.isPracticeHidden = false;\n this.formSubmissionResponse= [];\n }\n\n refreshOverview(): void{\n const submissionID = this.selectedFormSubPeriod.toString();\n this.qualityService.getAdminReportResponseOverview(this.formID, submissionID).subscribe((data) => {\n this.formsSubmissionsOverviewACO = data;\n });\n }\n\n selectSubmissionPeriod(submissionPeriodID): void {\n this.selectedFormSubPeriod = submissionPeriodID.target.value;\n this.refreshOverview();\n\n }\n\n onBtnExportResponses(): void {\n\n this.qualityService.getAdminQuestionResponseReport(this.QualityFormId, this.selectedFormSubPeriod).subscribe((data) => {\n this.caravanFormAdminResponses = data;\n\n\n const timestamp = formatDate(new Date(), 'yyyyMMdd', this.locale);\n\n const submitPeriodId = this.selectedFormSubPeriod.toString();\n\n this.workbookData = this.transformData(this.caravanFormAdminResponses);\n\n this.excelService.exportAsExcel(this.workbookData, `ComplianceForm_${submitPeriodId}_Responses_${timestamp}`);\n\n });\n\n }\n\n\n\n\n\n transformData (responseData: CaravanFormAdminResponseReport[]): workBook[] {\n let outputWorkbook = [] as workBook[];\n\n\n let rows = [];\n\n const dataStructure = this.formResponseDownloadFields;\n\n responseData.forEach((entry) => {\n const row = dataStructure.reduce((prev, next) =>\n ({...prev, [next.headerName]: (next.field == '') ?'' : entry[next.field]}), {});\n\n rows.push(row);\n });\n\n\n\n const workSheet = {\n workSheet: 'List',\n workSheetType: WorkSheetTypes.table,\n theme: 'TableStyleMedium2',\n rows: rows\n };\n\n outputWorkbook.push(workSheet);\n\n\n\n return outputWorkbook;\n\n }\n\n\n}\n","
\n
\n Submit Period  \n \n
\n\n\n
\n \n
\n \n \n
\n\n\n
\n \n \n
\n \n \n
\n\n\n
\n \n \n \n
\n \n \n
\n
\n\n\n\n\n\n\n\n\n\n\n","import { Component, OnInit} from '@angular/core';\nimport { SubmitFormsService } from '@shared/services/forms/submit-forms.service';\nimport { CaravanFormAdminACO, CaravanFormAdminPracticeRespView} from '@shared/models/forms/form-admin-model';\nimport { FormSubmission } from '@shared/models/forms/forms-backend';\nimport { CaravanFormAdminSubmitPeriod } from '@shared/models/forms/form-submissionID-model';\n@Component({\n selector: 'coach-submit-promoting-interoperability-admin-report',\n templateUrl: './submit-promoting-interoperability-admin-report.component.html',\n host: {\n class: 'row u-fill',\n },\n styleUrls: ['../shared/submit-generic-admin-report.component.scss']\n})\nexport class SubmitPromotingInteroperabilityAdminReportComponent implements OnInit {\n\npublic formsSubmissionsOverviewACO: CaravanFormAdminACO[];\npublic formsSubmissionsOverviewComm: CaravanFormAdminPracticeRespView[];\npublic formSubmissions: FormSubmission[];\n\npublic formSubmissionsPracticeResps: CaravanFormAdminPracticeRespView[];\npublic formID = '1';\npublic reportName = 'PI_Admin'\npublic TierID = 'ACO'\n\npublic isPracticeHidden: boolean = true;\npublic isICCHidden: boolean = true;\npublic isACOHidden: boolean = false;\npublic gridApi: any;\nprivate icc: string;\nprivate aco: string;\n\npublic selectedFormSubPeriod: number;\n\npublic caravanFormAdminSubmitPeriod: CaravanFormAdminSubmitPeriod[];\npublic submitPeriodParam: number;\npublic readonly PIFormId = 1;\n\nconstructor(\n private promotoingInteropService: SubmitFormsService\n) {}\n\n public columnNamesACO = [{ headerName: 'ACO ID', field: 'acoID', cellRenderer: 'agGroupCellRenderer', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'ACO Name', field: 'acoName', filter: true, minWidth: 300 },\n { headerName: 'Percentage Complete', field: 'acoPercentageComplete', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'Last Update', field: 'acoLastUpdateTime', filter: true, minWidth: 200 },\n { headerName: 'View Communities', field: 'acoID',cellRenderer: 'clickableParentComponent',editable: false,minWidth: 150}\n ];\n\n public columnNamesComm = [{ headerName: 'ICC', field: 'ICC', cellRenderer: 'agGroupCellRenderer', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'Region', field: 'regionID', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} },\n { headerName: 'Community Name', field: 'communityName', filter: true, filterParams: {applyMiniFilterWhileTyping: true,} , minWidth: 400 },\n { headerName: 'Percentage Complete',field: 'commPercentageComplete', filter: true, suppressSizeToFit: true},\n { headerName: 'Last Update', field: 'commLastUpdateTime', filter: true, minWidth: 200 },\n { headerName: 'View Practices', field: 'ICC', cellRenderer: 'clickableParentComponent', colId: 'params', editable: false, minWidth: 150 }\n ];\n\n public practiceCellRendererParams = [ { headerName: 'ICC', field: 'ICC', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,}, maxWidth: 75 },\n { headerName: 'Region', field: 'regionID', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,} , maxWidth: 75 },\n { headerName: 'Practice Name', field: 'tier4Name', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,},maxWidth: 380, minWidth: 320 },\n { headerName: 'TIN (last 4)', field: 'tier4ID', filter: true, suppressSizeToFit: true, filterParams: {applyMiniFilterWhileTyping: true,}, maxWidth: 135 },\n { headerName: 'Has Entry', field: 'hasEntry', filter: true , suppressSizeToFit: true, maxWidth: 100 },\n { headerName: 'Special Status', field: 'specialStatus', filter: true, suppressSizeToFit: true, minWidth: 125 },\n { headerName: 'Total Points', field: 'totalPoints', filter: true , suppressSizeToFit: true },\n { headerName: 'Last Update', field: 'lastUpdateTime', filter: true , suppressSizeToFit: true },\n { headerName: 'Updated By', field: 'updatedByUsername', filter: true, suppressSizeToFit: true, minWidth: 200 },\n { headerName: 'User Form ID', field: 'UserFormID', filter: true, suppressSizeToFit: true },\n // { headerName: 'View Measures', field: 'formResponses', filter: true, cellRenderer: 'clickableParentComponent', maxWidth: 150 }\n ];\n\n public formQuestionResponses = [{ headerName: 'Question ID', field: 'QuestionID', filter: true, maxWidth: 150 },\n { headerName: 'Question Text', field: 'QuestionText', filter: true, minWidth: 350 },\n { headerName: 'Point Value', field: 'PointValue', filter: true, maxWidth: 150 },\n { headerName: 'Numerator', field: 'NumValue', filter: true, maxWidth: 150 },\n { headerName: 'Denominator', field: 'DenValue', filter: true, maxWidth: 150 },\n { headerName: 'Text Response', field: 'TextResponse', filter: true }\n ];\n\n ngOnInit(): void {\n this.promotoingInteropService.getAdminReportSubmitPeriods(this.PIFormId).subscribe((data) => {\n this.caravanFormAdminSubmitPeriod = data;\n if (this.submitPeriodParam == null) {\n this.selectedFormSubPeriod = this.caravanFormAdminSubmitPeriod[0].caravanFormSubmitPeriodID;\n } else\n {\n this.selectedFormSubPeriod = this.submitPeriodParam;\n }\n\n this.refreshOverview();\n });\n }\n\n resultClickedICC(data): void{\n this.icc = data.cell;\n this.TierID = data.cell;\n this.isPracticeHidden = false;\n this.isICCHidden = true;\n this.refreshPractice();\n }\n\n refreshPractice(): void{\n const tierlevel = '4';\n const submissionID = this.selectedFormSubPeriod.toString();\n this.promotoingInteropService.getAdminReportPracticeResponseView(this.formID, this.icc, tierlevel, submissionID).subscribe((data) => {\n this.formSubmissionsPracticeResps = data;\n });\n }\n\n resultClickedACO(data): void{\n this.aco = data.cell;\n this.TierID = data.cell;\n this.isICCHidden = false;\n this.isACOHidden = true;\n this.refreshCommunity();\n }\n\n refreshCommunity(): void{\n const tierlevel = '2';\n const submissionID = this.selectedFormSubPeriod.toString();\n this.promotoingInteropService.getAdminReportPracticeResponseView(this.formID, this.aco, tierlevel, submissionID).subscribe((data) => {\n this.formsSubmissionsOverviewComm = data;\n });\n }\n\n returnToOverview(): void{\n this.TierID = 'ACO';\n this.isPracticeHidden = true;\n this.isICCHidden = true;\n this.isACOHidden = false;\n this.formSubmissionsPracticeResps= [];\n this.formsSubmissionsOverviewComm= [];\n }\n\n returnToCommunity(): void{\n this.TierID = this.aco;\n this.isPracticeHidden = true;\n this.isICCHidden = false;\n this.formSubmissionsPracticeResps= [];\n }\n\n refreshOverview(): void{\n const submissionID = this.selectedFormSubPeriod.toString();\n this.promotoingInteropService.getAdminReportResponseOverview(this.formID, submissionID).subscribe((data) => {\n this.formsSubmissionsOverviewACO = data;\n });\n }\n\n selectSubmissionPeriod(submissionPeriodID): void {\n this.selectedFormSubPeriod = submissionPeriodID.target.value;\n this.refreshOverview();\n\n }\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { SubmitComponent } from './submit.component';\nimport { SubmitSummaryComponent } from '@views/submit/submit-summary/submit-summary.component';\nimport { SubmitQualityComponent } from '@views/submit/submit-quality/submit-quality.component';\nimport { SubmitComplianceComponent } from '@views/submit/submit-compliance/submit-compliance.component';\nimport { SubmitPromotingInteroperabilityComponent } from '@views/submit/submit-promoting-interoperability/submit-promoting-interoperability.component';\nimport { SubmitMeetingComponent } from '@views/submit/submit-meeting/submit-meeting.component';\nimport { SubmitFeatureNames, SubmitFeatureConstants } from '@shared/models/module-constants';\nimport { SubmitQualityAdminReportComponent } from './admin-report/submit-quality-report/submit-quality-admin-report.component';\nimport { SubmitComplianceAdminReportComponent } from './admin-report/submit-compliance-report/submit-compliance-admin-report.component';\nimport { SubmitPromotingInteroperabilityAdminReportComponent } from './admin-report/submit-promoting-interoperability-report/submit-promoting-interoperability-admin-report.component';\nimport { AuthGuard } from '../../../app/auth.guard';\n\nconst routes: Routes = [\n {\n path: '',\n component: SubmitComponent,\n data: {\n label: 'Submit',\n helpfile: 'LEARN_SUBMIT_General_2020'\n },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'summary'\n },\n {\n path: 'summary',\n component: SubmitSummaryComponent,\n data: {\n label: SubmitFeatureNames.Summary.valueOf()\n }\n },\n {\n path: 'quality',\n component: SubmitQualityComponent,\n data: {\n label: SubmitFeatureNames.Quality.valueOf()\n },\n\n },\n {\n path: 'compliance',\n component: SubmitComplianceComponent,\n data: {\n label: SubmitFeatureNames.Compliance.valueOf()\n }\n },\n {\n path: 'promoting-interoperability',\n component: SubmitPromotingInteroperabilityComponent,\n data: {\n label: SubmitFeatureNames.PI.valueOf()\n }\n },\n {\n path: 'meeting',\n component: SubmitMeetingComponent,\n data: {\n label: SubmitFeatureNames.Meeting.valueOf()\n }\n },\n {\n path: 'quality/formreport',\n component: SubmitQualityAdminReportComponent,\n canActivate: [AuthGuard],\n data: {\n label: SubmitFeatureNames.FormAdministration.valueOf(),\n featureId: SubmitFeatureConstants.FormsAdminFormFeature.valueOf(),\n featureFlag: SubmitFeatureConstants.FormsAdminFormFeatureFlag.valueOf()\n }\n },\n {\n path: 'promoting-interoperability/formreport',\n component: SubmitPromotingInteroperabilityAdminReportComponent,\n canActivate: [AuthGuard],\n data: {\n label: SubmitFeatureNames.FormAdministration.valueOf(),\n featureId: SubmitFeatureConstants.FormsAdminFormFeature.valueOf(),\n featureFlag: SubmitFeatureConstants.FormsAdminFormFeatureFlag.valueOf()\n }\n },\n {\n path: 'compliance/formreport',\n component: SubmitComplianceAdminReportComponent,\n canActivate: [AuthGuard],\n data: {\n label: SubmitFeatureNames.FormAdministration.valueOf(),\n featureId: SubmitFeatureConstants.FormsAdminFormFeature.valueOf(),\n featureFlag: SubmitFeatureConstants.FormsAdminFormFeatureFlag.valueOf()\n }\n },\n\n ]\n\n },\n // {\n // path: '**',\n // pathMatch: 'full',\n // redirectTo: ''\n // }\n\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class SubmitRoutingModule { }\n","import {NgModule} from '@angular/core';\n\nimport {ClickableComponent} from './clickable.component';\nimport {ClickableParentComponent} from './clickable.parent.component';\n\n@NgModule({\n imports: [],\n declarations: [\n ClickableComponent,\n ClickableParentComponent\n ],\n exports: [\n ClickableParentComponent\n ]\n})\nexport class ClickableModule {\n}\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '@shared/shared.module';\nimport { SubmitRoutingModule } from './submit-routing.module';\nimport { SubmitComponent } from './submit.component';\nimport { SubmitSummaryComponent } from './submit-summary/submit-summary.component';\nimport { SubmitQualityComponent } from './submit-quality/submit-quality.component';\nimport { SubmitComplianceComponent } from './submit-compliance/submit-compliance.component';\nimport { SubmitPromotingInteroperabilityComponent } from './submit-promoting-interoperability/submit-promoting-interoperability.component';\n\nimport { PatientFacesheetModule } from '@shared/modules/patient-facesheet/patient-facesheet.module';\nimport { ComplianceFormQuestionComponent } from './submit-compliance/compliance-form-question/compliance-form-question.component';\nimport { FormBlockComponent } from './submit-quality/submission-form/form-block/form-block.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { SubmitMeetingComponent } from './submit-meeting/submit-meeting.component';\nimport { ComplianceFilterComponent } from './submit-compliance/compliance-filter/compliance-filter.component';\nimport { SubmitInteroperabilityQuestionComponent } from './submit-promoting-interoperability/submit-interoperability-question/submit-interoperability-question.component';\nimport { SubmitInteroperabilitySecurityRiskComponent } from './submit-promoting-interoperability/submit-interoperability-security-risk/submit-interoperability-security-risk.component';\nimport { SubmitInteroperabilityYesNoComponent } from './submit-promoting-interoperability/submit-interoperability-yes-no/submit-interoperability-yes-no.component';\nimport { SubmitInteroperabilityRegistryQuestionComponent } from './submit-promoting-interoperability/submit-interoperability-registry-question/submit-interoperability-registry-question.component';\nimport { CheckboxQuestionComponent } from './shared/components/checkbox-question/checkbox-question.component';\n\nimport { AdminFormReport } from './admin-report/shared/admin-report.component';\nimport { SubmitQualityAdminReportComponent } from './admin-report/submit-quality-report/submit-quality-admin-report.component';\nimport { SubmitPromotingInteroperabilityAdminReportComponent } from './admin-report/submit-promoting-interoperability-report/submit-promoting-interoperability-admin-report.component';\nimport { SubmitComplianceAdminReportComponent } from './admin-report/submit-compliance-report/submit-compliance-admin-report.component';\nimport { AgGridModule } from 'ag-grid-angular';\n\nimport {ClickableParentComponent} from './admin-report/shared/clickable.parent.component';\nimport {ClickableModule} from './admin-report/shared/clickable.module';\nimport { DetailCellRenderer } from './admin-report/shared/detail-cell-renderer.component';\nimport { AdminFormReportPractice } from './admin-report/shared/admin-report-practice.component';\nimport { SubmitInteroperabilityDateRangeComponent } from './submit-promoting-interoperability/submit-interoperability-date-range/submit-interoperability-date-range.component';\n\n\n\n@NgModule({\n declarations: [\n SubmitComponent,\n SubmitSummaryComponent,\n SubmitQualityComponent,\n SubmitComplianceComponent,\n SubmitPromotingInteroperabilityComponent,\n ComplianceFormQuestionComponent,\n FormBlockComponent,\n SubmitMeetingComponent,\n ComplianceFilterComponent,\n SubmitInteroperabilityQuestionComponent,\n SubmitInteroperabilitySecurityRiskComponent,\n SubmitInteroperabilityYesNoComponent,\n SubmitInteroperabilityRegistryQuestionComponent,\n CheckboxQuestionComponent,\n AdminFormReport,\n SubmitQualityAdminReportComponent,\n SubmitComplianceAdminReportComponent,\n SubmitPromotingInteroperabilityAdminReportComponent,\n DetailCellRenderer,\n AdminFormReportPractice,\n SubmitInteroperabilityDateRangeComponent\n ],\n imports: [\n SharedModule,\n SubmitRoutingModule,\n PatientFacesheetModule,\n AgGridModule,\n ReactiveFormsModule, \n ClickableModule\n ],\n})\nexport class SubmitModule {}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\nimport { common as wp } from '@hcd-caravanhealth/pkg-wptypes';\nimport { TrackFeatureConstants } from '../app/shared/models/module-constants';\nimport { AppIds, EnvironmentType, IEnvironment } from './environmentTypeDef';\n\nexport const environment: IEnvironment = {\n production: true,\n wpApiUrl: 'https://api.caravan.health/wpapi/2',\n ocpApimSubscriptionKey: 'f9c400517fb1445fb082dab2b2795a07',\n chEndPoint: 'https://id.caravanhealth.com/connect/userinfo',\n\n // This is the app id in B2C\n // Need separate app ids for dev, qa, demo and prod\n // Continue using dev for localhost\n // This app id is also used in the Wellpepper api to determine the data partition for patients\n authClientId: AppIds.prod,\n environmentId: EnvironmentType.prod,\n // Different endpoint for prod IDS - there will be a different custom policy.\n // Continue using the same B2C directory instance\n authWellknownEndpoint:\n 'https://chprodb2c.b2clogin.com/chprodb2c.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1A_signup_signinCaravanHealthProd',\n stsServer: 'https://login.microsoftonline.com/chprodb2c.onmicrosoft.com/v2.0',\n\n authConfigScope:\n 'openid https://chprodb2c.onmicrosoft.com/coachApi/demo.write https://chprodb2c.onmicrosoft.com/coachApi/demo.read',\n patientIdentityProvider:\n wp.IdentifierProviders.CaravanHealthPatientInHierarchyNodeProdEnvironment,\n\n // Currently pointing directly to app service\n // Want it to be api.qa.caravan.health\n coachApiUrl: 'https://api.caravan.health/coach',\n prizmApiUrl: 'https://prizmapi.caravan.health',\n careOrchApiUrl: 'https://api.caravan.health/careorchservice',\n // Would like this to also be api.qa.caravan.health/track\n // Have API management service deal with routing to different services\n trackApiUrl: 'https://api.caravan.health/track',\n userDetailApiUrl: 'https://api.caravan.health/access',\n apiBaseUrl: 'https://api.caravan.health',\n\n blobStorageUrl: 'https://caravancoachdocrepo.blob.core.windows.net/documents',\n maskSensitiveData: false,\n useHashStrategy: false,\n idleStart: 1500,\n idleTimeout: 300,\n idlePing: 120,\n mixpanel: {\n projectId: '53e070d656ca91e15fdb704249eba29e',\n debug: false,\n pageViews: true\n },\n appInsights: {\n connectionString: 'InstrumentationKey=904ea4f0-5d02-43fd-8acf-b35624921bc1',\n },\n displayRiskLevel: true,\n serverEventsEndpoint: 'https://coachsignalr-prod-as.azurewebsites.net',\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import * as wp from '@hcd-caravanhealth/pkg-wptypes';\n\nexport enum EnvironmentType {\n dev = 'dev',\n qa = 'qa',\n demo = 'demo',\n prod = 'prod',\n}\n\nexport type AppId =\n | '93b14305-c16a-4f29-bcd1-abe5680ab49e'\n | '76cea668-b792-439a-9e8a-13af9d10c752'\n | '17e61bfa-2fdb-4d74-9f91-3f5f571d9e9b'\n | '638367a0-f2fe-4baf-ac7a-ef8ba4a5c633';\n\nexport enum AppIdEnum {\n dev = '93b14305-c16a-4f29-bcd1-abe5680ab49e',\n qa = '76cea668-b792-439a-9e8a-13af9d10c752',\n demo = '17e61bfa-2fdb-4d74-9f91-3f5f571d9e9b',\n prod = '638367a0-f2fe-4baf-ac7a-ef8ba4a5c633',\n}\n\nexport const AppIds: { [x in EnvironmentType]: AppId } = {\n dev: '93b14305-c16a-4f29-bcd1-abe5680ab49e',\n qa: '76cea668-b792-439a-9e8a-13af9d10c752',\n demo: '17e61bfa-2fdb-4d74-9f91-3f5f571d9e9b',\n prod: '638367a0-f2fe-4baf-ac7a-ef8ba4a5c633',\n};\n\nexport interface IEnvironment {\n production: boolean;\n /** The data environment for this deployment. This determines which set of patients and patient data that is used.\n * In the Wellpepper data environment, entities will be tagged with the environmentId so that they remain distinct.\n *\n * Permissions are dealt with separately as they are mapped to target entity permissions based on the\n * users' identity issuer e.g. users in ChPortalDev are identified as non-prod users and given permissions only\n * to the corresponding non-prod Wellpepper organizations.\n */\n environmentId: EnvironmentType;\n /** application ID in B2C instance */\n authClientId: AppId;\n wpApiUrl: string;\n trackApiUrl: string;\n userDetailApiUrl: string;\n apiBaseUrl: string;\n ocpApimSubscriptionKey: string;\n chEndPoint: string;\n authWellknownEndpoint: string;\n stsServer: string;\n authConfigScope: string;\n /** Related to environmentId, but is used to configure how patients are mapped to the multi-tenanted\n * wellpepper data environment from different source data environments.\n */\n patientIdentityProvider: wp.common.IdentifierProviderInfo;\n coachApiUrl: string;\n qualityInitiativeApiUrl?: string;\n prizmApiUrl: string;\n careOrchApiUrl: string;\n blobStorageUrl: string;\n maskSensitiveData: boolean;\n useHashStrategy: boolean;\n idleStart: number;\n idleTimeout: number;\n idlePing: number;\n e2e?: { Username: string; Password: string };\n displayRiskLevel: boolean;\n mixpanel: {\n projectId: string;\n debug: boolean;\n pageViews: boolean;\n };\n appInsights?: {\n connectionString: string;\n cloudRole?: string;\n };\n serverEventsEndpoint: string;\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'coach-eula-agreement',\n templateUrl: './eula-agreement.component.html',\n styleUrls: ['./eula-agreement.component.scss']\n})\nexport class EulaAgreementComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\n\n@Component({\n selector: 'coach-timeout',\n templateUrl: './timeout.component.html',\n styleUrls: ['./timeout.component.scss']\n})\nexport class TimeoutComponent implements OnInit {\n\n constructor(private authService: AuthService, private router: Router, private hierarchyTierService: HierarchyTierService) { }\n\n ngOnInit(): void {\n this.authService.isAuthenticated$.subscribe(isAuthenticated => {\n if (isAuthenticated) {\n this.router.navigate([this.hierarchyTierService.currentTier$.value?.abbreviation, \n this.hierarchyTierService.currentTier$.value?.selectedTierIdForDisplay, 'home']);\n }\n });\n }\n\n signIn(): void {\n this.authService.login();\n }\n}\n","
\n

Your session has expired due to inactivity. Click here to return to the\n login screen.\n

\n
","
\n
\n \n
\n

Logging out...

\n

You have been Signed out. Click here to return to the\n login screen.\n

\n
","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\n\n@Component({\n selector: 'coach-signout',\n templateUrl: './signout.component.html',\n styleUrls: ['./signout.component.scss']\n})\nexport class SignoutComponent implements OnInit {\n signoutInProgress = true;\n constructor(private authService: AuthService, private router: Router, private hierarchyTierService: HierarchyTierService) { }\n\n /* if the IDS signIn was through Docebo -isAUthenticated will will be false and the user will show as not authenticated.\n * but to signin will login the user without IDS Popup since IDS login has allready happened\n * sigin will cause ust redirect to home page and then naviagate to the timeout page because coachRedirect\n * on this call for ngOnInit() the user will show as autheticated. \n * \n */\n ngOnInit(): void {\n this.authService.isAuthenticated$.subscribe(isAuthenticated => {\n if (isAuthenticated) {\n this.signoutInProgress = false;\n this.authService.logout();\n }\n else if (this.signoutInProgress){ //this check is required since the callback will enter again whne we logout.\n const url = this.router.url;\n this.authService.write('coachRedirect', url);\n this.signIn();\n }\n });\n }\n\n \n signIn(): void {\n this.authService.login();\n }\n}\n","import { Component, OnInit } from '@angular/core';\r\nimport { AuthService } from '@shared/services/auth-service/auth.service';\r\n\r\n@Component({\r\n selector: 'app-auto-component',\r\n templateUrl: './auto-login.component.html',\r\n})\r\nexport class AutoLoginComponent implements OnInit {\r\n constructor(public authService: AuthService) {}\r\n\r\n ngOnInit() {\r\n this.authService.login();\r\n }\r\n}\r\n","
redirecting to login
\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-noauth',\r\n templateUrl: 'no-auth.component.html'\r\n})\r\n\r\nexport class NoAuthComponent implements OnInit {\r\n\r\n public message: string;\r\n public values: any[];\r\n\r\n constructor() {\r\n this.message = 'noauthComponent constructor';\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","
401: Could not acess the requested page. If reached by error please try again. Or check to see if u are authorized.
","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { ModuleConstants } from '@shared/models/module-constants';\nimport { EulaAgreementComponent } from '@views/eula-agreement/eula-agreement.component';\nimport { TimeoutComponent } from '@views/timeout/timeout.component';\nimport { SignoutComponent } from '@views/signout/signout.component';\nimport { environment } from 'src/environments/environment';\nimport { AuthGuard } from './auth.guard';\nimport { AutoLoginComponent } from './views/auto-lopgin/auto-login.component';\nimport { NoAuthComponent } from './views/no-auth/no-auth.component';\nimport { SharedRedirectComponent } from '@shared/components/shared-redirect/shared-redirect.component';\nimport { RootComponent } from './views/root/root.component';\n\nexport const routes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n component: RootComponent,\n canActivate: [AuthGuard],\n },\n {\n // NO CANACTIVATE ROUTE\n path: 'autologin',\n component: AutoLoginComponent,\n },\n {\n // NO CANACTIVATE ROUTE\n path: 'noauth',\n component: NoAuthComponent,\n },\n {\n path: 'timeout',\n component: TimeoutComponent,\n },\n {\n path: 'signout',\n component: SignoutComponent,\n },\n {\n path: 'eula',\n component: EulaAgreementComponent,\n data: {\n label: 'EULA',\n },\n },\n {\n path: 'shared',\n children: [\n {\n path: '**',\n canActivate: [AuthGuard],\n component: SharedRedirectComponent,\n },\n ],\n },\n {\n path: ':tierName/:tierId',\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'home',\n },\n {\n path: 'home',\n canActivate: [AuthGuard],\n loadChildren: () =>\n import('./views/home/home.module').then((m) => m.HomeModule),\n data: {\n label: 'home',\n helpfile: 'Learn_HOME_General_2021',\n },\n },\n {\n // to do: enable canActivate for all routes like done for 'care\"\n path: 'care',\n canActivate: [AuthGuard],\n loadChildren: () =>\n import('@care/care.module').then((m) => m.CareModule),\n data: {\n moduleId: ModuleConstants.CareModule.valueOf(),\n },\n },\n {\n path: 'submit',\n canActivate: [AuthGuard],\n loadChildren: () =>\n import('./views/submit/submit.module').then((m) => m.SubmitModule),\n data: {\n moduleId: ModuleConstants.SubmitModule.valueOf(),\n },\n },\n {\n path: 'track',\n canActivate: [AuthGuard],\n loadChildren: () =>\n import('@track/track.module').then((m) => m.TrackModule),\n data: {\n moduleId: ModuleConstants.TrackModule.valueOf(),\n },\n },\n {\n path: 'improve',\n canActivate: [AuthGuard],\n loadChildren: () =>\n import('./views/improve/improve.module').then((m) => m.ImproveModule),\n data: {\n moduleId: ModuleConstants.ImproveModule.valueOf(),\n },\n },\n ],\n },\n {\n path: '**',\n pathMatch: 'full',\n redirectTo: '',\n },\n];\n\n@NgModule({\n imports: [\n RouterModule.forRoot(routes, { useHash: environment.useHashStrategy }),\n ],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'coach-root',\n templateUrl: './root.component.html',\n styleUrls: ['./root.component.scss'],\n})\nexport class RootComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","
Retrieving user information
\n","import { Component, Inject, InjectionToken, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { SelectedEventValue } from '../header-scope-dropdown/header-scope-dropdown.component';\n\nexport interface NavigationPortalData {\n highestTier: number;\n}\nexport const NAVIGATION_PORTAL_DATA = new InjectionToken('NAVIGATION_PORTAL_DATA');\n\ninterface TierInfo {\n hierarchyTier: number;\n parentId: string;\n}\n\n@Component({\n selector: 'coach-header-scope-overlay',\n templateUrl: './header-scope-overlay.component.html',\n styleUrls: ['./header-scope-overlay.scss'],\n host : {\n class: 'scopeSelectDropdownWrapper'\n }\n})\nexport class HeaderScopeOverlayComponent implements OnInit {\n private highestTier: number;\n public scope: string;\n constructor(\n @Inject(NAVIGATION_PORTAL_DATA) data: NavigationPortalData,\n ) {\n this.highestTier = data.highestTier;\n console.log(this.highestTier);\n\n for (let i = this.highestTier; i <= 4; i++) {\n const tier: TierInfo = {\n parentId: i === this.highestTier ? null : '',\n hierarchyTier: i,\n };\n this.tiers.push(tier);\n }\n console.log(this.tiers);\n }\n public tiers: TierInfo[] = [];\n public changed: SelectedEventValue;\n isEditDetails = true;\n\n ngOnInit(): void {\n }\n\n toggleDrillIn(): void {\n this.isEditDetails = !this.isEditDetails;\n }\n\n applyScope(): void {\n console.log(this.scope);\n }\n\n selectionChange($event): void {\n this.scope = $event.target.value;\n switch ($event.target.id) {\n case 'header-scope-dropdown-aco':\n this.tiers[1].parentId = $event.target.value;\n this.tiers[2].parentId = '';\n this.tiers[3].parentId = '';\n break;\n case 'header-scope-dropdown-community':\n const prpTier = 3 - this.highestTier;\n this.tiers[prpTier].parentId = $event.target.value;\n this.tiers[prpTier + 1].parentId = '';\n break;\n case 'header-scope-dropdown-principal':\n const praTier = 4 - this.highestTier;\n this.tiers[praTier].parentId = $event.target.value;\n break;\n }\n }\n\n}\n","
\n
\n \n \n \n
\n \n
\n
\n
\n
","import { Component, OnInit } from '@angular/core';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\n\n@Component({\n selector: 'coach-header-hierarchy-overlay',\n templateUrl: './header-hierarchy-overlay.component.html',\n host: {\n class: 'header-hierarchy-overlay'\n }\n})\nexport class HeaderHierarchyOverlayComponent implements OnInit {\n\n constructor(public hierarchyTierService: HierarchyTierService) { }\n\n ngOnInit(): void {\n }\n\n anyLoading(tier: IHierarchyTier): boolean {\n return this.hierarchyTierService.hierarchyTiers.some(x => x.isLoading && x.tier <= tier.tier);\n }\n\n isDisabled(tier: IHierarchyTier): boolean {\n return tier.items == null || tier.items.length === 0;\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth-service/auth.service';\nimport { AzureApiBase } from '../azure-api/azure-api-base';\nimport { PatientSearchResult } from './patient-search-result';\nimport { PatientSearchRequest } from './patient-search-request';\nimport { Observable } from 'rxjs';\nimport { objectToParams } from '@shared/utilities';\n\nexport interface SearchFormState {\n advancedSearch?: boolean,\n savedSearchTerm?: string,\n name?: string,\n mbi?: string, \n dob?: string\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PatientSearchService extends AzureApiBase {\n public savedSearch: SearchFormState = { savedSearchTerm: '', name: '', mbi: '', dob: ''};\n constructor(http: HttpClient, authService: AuthService) {\n super(http, authService, environment.trackApiUrl, '/patients/search');\n }\n\n search(request: PatientSearchRequest): Observable {\n const params = objectToParams(request);\n console.log(JSON.stringify(params));\n return this.getAll(null, params);\n }\n\n get patientSearchResults(): PatientSearchResult[] {\n return this.values.value;\n }\n\n clearSavedData(): void {\n this.savedSearch.savedSearchTerm = '';\n this.savedSearch.name = '';\n this.savedSearch.mbi = '';\n this.savedSearch.dob = '';\n }\n}\n","
\n
\n
\n \n Patients\n
\n \n Files\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n \n
\n
\n \n \n \n
\n
\n
\n \n
\n
\n \n \n \n \n
\n
\n
\n\n \n Search by Name (last, first) or by DOB (mm/dd/yyyy) or by MBI\n (xxxx-xxx-xxxx) and then press\n <Enter> to search\n
\n \n \n
\n
\n \n \n \n \n
\n
\n \n Search for file names or other content and then press\n <Enter> to search\n
\n \n \n
\n \n \n
\n {{ patientSearchResults.length }}\n {{ patientSearchResults.length == 1 ? \"result\" : \"results\" }}\n
\n \n clear\n \n
\n
\n \n
\n
{{ result.fullName }}
\n
\n
\n
\n
{{ result.mbi | mbi }}
\n
\n \n \n \n \n
No results found
\n \n \n\n","import {\n Component,\n OnInit,\n ViewChild,\n ElementRef,\n LOCALE_ID,\n Inject,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { PatientSearchResult } from '@shared/services/patient/patient-search-result';\nimport { PatientSearchService } from '@shared/services/patient/patient-search.service';\nimport { GetAgeFromDOB } from '@shared/pipes/age.pipe';\nimport { MbiFormatPipe } from '@shared/pipes/format-patient-mbi.pipe';\nimport { Router } from '@angular/router';\nimport { takeUntil } from 'rxjs/operators';\nimport { UntypedFormBuilder, Validators, FormArray } from '@angular/forms';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { ModuleConstants } from '@shared/models/module-constants';\nimport { HasModuleDirective } from '@shared/directives/has-access/has-module.directive';\nimport { CustomValidators } from '@shared/validators';\n\n@Component({\n selector: 'coach-header-search',\n templateUrl: './header-search.component.html',\n styleUrls: ['./header-search.component.scss'],\n providers: [GetAgeFromDOB, MbiFormatPipe],\n})\nexport class HeaderSearchComponent extends KillSubscriptions implements OnInit {\n constructor(\n private patientSearchService: PatientSearchService,\n private hierarchyTierService: HierarchyTierService,\n private userAccessService: UserAccessService,\n private getAge: GetAgeFromDOB,\n private router: Router,\n private fb: UntypedFormBuilder,\n @Inject(LOCALE_ID) private locale: string\n ) {\n super();\n\n }\n\n @ViewChild('primarySearchField') primarySearchField: ElementRef;\n public hasCareModule: boolean;\n public selectedTab: string;\n public advancedSearch = false;\n public patientSearchResults: PatientSearchResult[];\n public careModule = ModuleConstants.CareModule;\n private mbiRegex: RegExp = /^[1-9]{1}[^SLOIBZsloibz|^0-9]{1}[^SLOIBZsloibz]{1}[0-9]{1}-?[^SLOIBZsloibz|^0-9]{1}[^SLOIBZsloibz]{1}[0-9]{1}-?[^SLOIBZsloibz|^0-9]{1}[^SLOIBZsloibz|^0-9]{1}[0-9]{1}[0-9]{1}$/;\n private dateRegex: RegExp = /^\\d{1,2}[./-]\\d{1,2}[./-]\\d{4}$/;\n private nameRegex: RegExp = /(.*[a-z]){3}/i;\n private dateNoSlashes: RegExp = /^([0]?[1-9]|1[0-2])(\\d{1,2})(\\d{4})$/;\n\n private minAllowedDate: Date = new Date('1/1/1753')\n private maxAllowedDate: Date = new Date('12/31/9999')\n private allowedDateReg: RegExp = /^(175[3-9]|17[6-9][0-9]|1[89][0-9]{2}|[2-9][0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;\n\n\n @Output() patientSelected: EventEmitter = new EventEmitter();\n public patientSearch = this.fb.group({\n searchTerm: ['', [Validators.required, Validators.minLength(3)]],\n });\n\n public patientAdvancedSearch = this.fb.group({\n name: ['', [Validators.minLength(3)]],\n dob: ['', [Validators.pattern(this.allowedDateReg)]],\n mbi: ['', [Validators.pattern(this.mbiRegex)]],\n });\n\n public fileSearch = this.fb.group({\n file: ['', [Validators.required, Validators.minLength(1)]],\n });\n\n ngOnInit(): void {\n this.userAccessService.currentAccess$\n .pipe(takeUntil(this.killTrigger))\n .subscribe((access) => {\n this.hasCareModule = this.userAccessService.hasModule(access, this.careModule);\n });\n\n this.setTab(this.hasCareModule ? 'patients' : 'files');\n this.focusPrimarySearchInput();\n\n if (this.patientSearchService.savedSearch.advancedSearch) {\n this.advancedSearch = true;\n }\n if (this.patientSearchService.patientSearchResults?.length > 1) {\n this.patientSearchResults = this.patientSearchService.patientSearchResults;\n this.patientSearch.controls['searchTerm'].setValue(this.patientSearchService.savedSearch.savedSearchTerm);\n this.patientAdvancedSearch.controls['name'].setValue(this.patientSearchService.savedSearch.name);\n this.patientAdvancedSearch.controls['mbi'].setValue(this.patientSearchService.savedSearch.mbi);\n this.patientAdvancedSearch.controls['dob'].setValue(this.patientSearchService.savedSearch.dob);\n }\n }\n\n setTab(tab: string): void {\n this.selectedTab = tab;\n this.focusPrimarySearchInput();\n }\n\n toggleAdvancedSearch(): void {\n this.focusPrimarySearchInput();\n this.resetPatientSearch();\n }\n\n focusPrimarySearchInput(): void {\n setTimeout(() => {\n // this will make the execution after element is rendered in the DOM after change\n this.primarySearchField?.nativeElement.focus();\n }, 0);\n }\n\n submit(): void {\n if (this.advancedSearch && this.selectedTab === 'patients') {\n this.searchPatient();\n } else if (this.selectedTab === 'patients') {\n\n this.searchPatient();\n } else if (this.selectedTab === 'files') {\n this.searchFile();\n }\n }\n\n searchFile(): void {\n this.navigateToFileResults(this.fileSearch.value.file);\n }\n\n searchPatient(): void {\n if (this.advancedSearch) {\n this.patientSearchService.savedSearch = {\n advancedSearch: true,\n name: this.patientAdvancedSearch.get('name').value ? this.patientAdvancedSearch.get('name').value : '',\n mbi: this.patientAdvancedSearch.get('mbi').value ? this.patientAdvancedSearch.get('mbi').value : '',\n dob: this.patientAdvancedSearch.get('dob').value ? this.patientAdvancedSearch.get('dob').value : ''\n };\n\n this.patientSearchService\n .search({\n tierId: this.hierarchyTierService.currentTier$.value.selectedTierId,\n tierNum: this.hierarchyTierService.currentTier$.value.tier,\n dateOfBirth: this.patientAdvancedSearch.get('dob').value\n ? new Date(\n this.patientAdvancedSearch.get('dob').value\n ).toISOString()\n : null,\n\n mbi: this.patientAdvancedSearch.get('mbi').value,\n rowCount: 20,\n nameSearchTerm: this.patientAdvancedSearch.get('name').value,\n })\n .subscribe((results) => {\n if (results.length === 1) {\n const path =\n this.hierarchyTierService.currentTier$.value.abbreviation +\n '/' +\n this.hierarchyTierService.currentTier$.value.selectedTierId +\n '/care/patient/' +\n results[0].chPatID;\n\n this.router.navigate([path]);\n\n this.patientSelected.emit();\n return;\n }\n this.patientSearchResults = results;\n });\n } else {\n let mbi: string = null;\n let name: string = null;\n let date: string = null;\n\n let searchTerm = this.patientSearch.get('searchTerm');\n this.patientSearchService.savedSearch = {\n advancedSearch: false,\n savedSearchTerm: searchTerm.value,\n };\n let matchDate = searchTerm.value.match(this.dateRegex);\n let matchDateNoSlashes = searchTerm.value.match(this.dateNoSlashes);\n\n if (searchTerm.value.match(this.mbiRegex)) {\n mbi = searchTerm.value;\n } else if (matchDate || matchDateNoSlashes) {\n const checkDate = new Date(searchTerm.value);\n\n if (checkDate >= this.minAllowedDate && checkDate <= this.maxAllowedDate){\n date = new Date(searchTerm.value).toISOString();\n }\n\n } else if (searchTerm.value.match(this.nameRegex)) {\n name = searchTerm.value;\n } else {\n this.patientSearchResults = [];\n return;\n }\n\n this.patientSearchService\n .search({\n tierId: this.hierarchyTierService.currentTier$.value.selectedTierId,\n tierNum: this.hierarchyTierService.currentTier$.value.tier,\n dateOfBirth: date,\n mbi: mbi,\n rowCount: 20,\n nameSearchTerm: name,\n })\n .subscribe((results) => {\n if (results.length === 1) {\n const path =\n this.hierarchyTierService.currentTier$.value.abbreviation +\n '/' +\n this.hierarchyTierService.currentTier$.value.selectedTierId +\n '/care/patient/' +\n results[0].chPatID;\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\n this.router.navigate([path]);\n });\n this.patientSelected.emit();\n return;\n }\n this.patientSearchResults = results;\n });\n }\n }\n\n selectPatientResult(result): void {\n this.patientSelected.emit();\n const path =\n this.hierarchyTierService.currentTier$.value.abbreviation +\n '/' +\n this.hierarchyTierService.currentTier$.value.selectedTierId +\n '/care/patient/' +\n result.chPatID;\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\n this.router.navigate([path]);\n });\n }\n\n navigateToFileResults(query): void {\n const path =\n this.hierarchyTierService.currentTier$.value.abbreviation +\n '/' +\n this.hierarchyTierService.currentTier$.value.selectedTierId +\n '/improve/search';\n this.router.navigate([path], { queryParams: { query } });\n }\n\n resetPatientSearch(): void {\n this.patientSearch.reset();\n this.patientAdvancedSearch.reset();\n this.patientSearchService.clearSavedData();\n this.patientSearchResults = null;\n }\n\n getFormattedPatientDemographicsData(patient): string {\n const dob = new Date(patient.dob).toLocaleDateString();\n const age = this.getAge.transform(patient.dob);\n const gender = patient.gender;\n\n let html = `\n ${formatDate(dob, 'MM/dd/yyyy', this.locale)}\n ${age}y\n ${gender}\n `;\n\n return html;\n }\n\n performingPatientSearch(): boolean {\n return this.selectedTab === 'patients' &&\n this.patientSearchResults != null &&\n this.patientSearchResults.length > 0;\n }\n}\n","
\n
\n
\n \n
\n \n \n \n
\n There was an error processing this request\n
\n
\n \n
","import { Component, Input, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Process } from '@shared/services/processing/process';\nimport { ProcessingService } from '@shared/services/processing/processing.service';\n\n@Component({\n selector: 'coach-header-process-progress',\n templateUrl: './header-process-progress.component.html',\n styleUrls: ['./header-process-progress.component.scss']\n})\nexport class HeaderProcessProgressComponent implements OnInit {\n\n private customComponent: ViewContainerRef;\n\n @Input() process: Process;\n\n @ViewChild('completed', { read: ViewContainerRef })\n set content(content: ViewContainerRef) {\n if (content != null) {\n this.customComponent = content;\n\n // Creating a microtask to delay creation of new component until after next execution hook to avoid ExpressionChangedAfterItHasBeenCheckedError\n // https://indepth.dev/posts/1001/everything-you-need-to-know-about-the-expressionchangedafterithasbeencheckederror-error\n Promise.resolve(null).then(() => this.setCustomComponent());\n }\n }\n\n constructor(private processingService: ProcessingService) { }\n\n ngOnInit(): void {\n }\n\n setCustomComponent(): void {\n if (this.customComponent != null && this.process != null) {\n this.customComponent.clear();\n const component = this.customComponent.createComponent(this.process.componentFactory);\n component.instance['process'] = this.process;\n }\n }\n\n remove(): void {\n this.processingService.removeProcess(this.process);\n }\n\n}\n","
\n
\n No items to show\n
\n
{{process.title}} {{process.status?.completionPercentage}}%\n
\n \n
\n
\n
","import { Component, OnInit } from '@angular/core';\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\nimport { Process } from '@shared/services/processing/process';\nimport { ProcessingService } from '@shared/services/processing/processing.service';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'coach-header-processes',\n templateUrl: './header-processes.component.html',\n styleUrls: ['./header-processes.component.scss']\n})\nexport class HeaderProcessesComponent extends KillSubscriptions implements OnInit {\n\n constructor(private processingService: ProcessingService) {\n super();\n }\n\n public processes: Process[] = [];\n\n ngOnInit(): void {\n this.processes = this.processingService.processes;\n }\n\n}\n","import {\n CareFeatureConstants,\n ModuleConstants,\n} from '@shared/models/module-constants';\n\nexport interface IView {\n label: string;\n icon: string;\n urlSegment: string;\n path: string;\n moduleId: number;\n hasPHI?: boolean;\n featureFlag?: string;\n hideIfFeatureFlag?: string;\n}\n\nexport const Views: IView[] = [\n {\n label: 'Home',\n icon: 'home',\n urlSegment: '_/_/home',\n path: 'home',\n moduleId: ModuleConstants.HomeModule\n },\n {\n label: 'Care',\n icon: 'users',\n urlSegment: '_/_/care',\n path: 'care',\n moduleId: ModuleConstants.CareModule,\n hideIfFeatureFlag: CareFeatureConstants.CareLandingPageFlag,\n hasPHI: true\n },\n {\n label: 'Care',\n icon: 'users',\n urlSegment: '_/_/care/summary-tab',\n path: 'care/summary-tab',\n moduleId: ModuleConstants.CareModule,\n featureFlag: CareFeatureConstants.CareLandingPageFlag,\n hasPHI: true\n },\n {\n label: 'Track',\n icon: 'trending-up',\n urlSegment: '_/_/track',\n path: 'track',\n moduleId: ModuleConstants.TrackModule\n },\n {\n label: 'Improve',\n icon: 'award',\n urlSegment: '_/_/improve',\n path: 'improve',\n moduleId: ModuleConstants.ImproveModule\n },\n {\n label: 'Submit',\n icon: 'upload',\n urlSegment: '_/_/submit',\n path: 'submit',\n moduleId: ModuleConstants.SubmitModule\n }\n];\n","import { Injectable } from '@angular/core';\nimport { PRIMARY_OUTLET, UrlTree } from '@angular/router';\nimport { IView, Views } from '@shared/models/views';\nimport { BehaviorSubject } from 'rxjs';\nimport { ActivatedRouteService } from '@shared/services/activated-route/activated-route.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActiveViewService {\n public allViews: IView[];\n public activeView$: BehaviorSubject;\n\n constructor(private _activatedRoute: ActivatedRouteService) {\n this.allViews = Views;\n this.activeView$ = new BehaviorSubject(this.allViews[0]);\n\n this._activatedRoute.currentUrl$.subscribe((url: UrlTree): void => {\n if (url) {\n const viewPath = url.root.children[PRIMARY_OUTLET]?.segments[2]?.path;\n if (viewPath) {\n this.activeView$.next(this.allViews.find(view => view.path === viewPath));\n }\n }\n });\n }\n}\n","
\n
\n \n

\n {{ activeView.label }}\n

\n
\n \n \n
\n
\n\n
\n
{{ currentTier?.name }}
\n
\n
\n {{ currentTier?.selectedItem?.tierName }}\n
\n \n
\n
\n\n
\n \n \n
\n\n\n \n \n","import {\r\n Component,\r\n AfterViewInit,\r\n ViewChild,\r\n ElementRef,\r\n ViewContainerRef,\r\n ComponentRef,\r\n Injector,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { IView } from '@shared/models/views';\r\nimport { ActiveViewService } from '@shared/services/active-view/active-view.service';\r\nimport { HeaderCondensedService } from '@shared/services/header-condensed/header-condensed.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ActivatedRouteService } from '@shared/services/activated-route/activated-route.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { IBreadcrumb } from '@shared/models/breadcrumbs';\r\nimport {\r\n CdkPortalOutletAttachedRef,\r\n ComponentPortal,\r\n PortalInjector,\r\n} from '@angular/cdk/portal';\r\nimport {\r\n ConnectedPosition,\r\n Overlay,\r\n OverlayConfig,\r\n OverlayRef,\r\n} from '@angular/cdk/overlay';\r\nimport {\r\n HeaderScopeOverlayComponent,\r\n NAVIGATION_PORTAL_DATA,\r\n} from './header-scope-overlay/header-scope-overlay.component';\r\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\r\nimport { HeaderHierarchyOverlayComponent } from './header-hierarchy-overlay/header-hierarchy-overlay.component';\r\nimport { HeaderSearchComponent } from './header-search/header-search.component';\r\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\r\nimport { HeaderProcessesComponent } from './header-processes/header-processes.component';\r\nimport { ProcessingService } from '@shared/services/processing/processing.service';\r\nimport { KillSubscriptions } from '@shared/components/kill-subscriptions';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Process } from '@shared/services/processing/process';\r\n\r\n@Component({\r\n selector: 'coach-header',\r\n templateUrl: './header.component.html',\r\n host: {\r\n class: 'coach-header',\r\n },\r\n providers: [Overlay],\r\n})\r\nexport class HeaderComponent extends KillSubscriptions implements OnInit {\r\n constructor(\r\n private _activeView: ActiveViewService,\r\n private _isHeaderCondensed: HeaderCondensedService,\r\n private _activatedRoute: ActivatedRouteService,\r\n private _router: Router,\r\n private _injector: Injector,\r\n public overlay: Overlay,\r\n private vcRef: ViewContainerRef,\r\n private hierarchyTierService: HierarchyTierService,\r\n private processingService: ProcessingService,\r\n ) {\r\n super();\r\n\r\n this.activeView$ = this._activeView.activeView$;\r\n this.isHeaderConsdensed$ = this._isHeaderCondensed.isHeaderCondensed$;\r\n this.activatedRoute$ = this._activatedRoute.activatedRoute$;\r\n\r\n this.hierarchyTierService.currentTier$?.subscribe((x) => {\r\n this.currentTier = x;\r\n });\r\n }\r\n public searchActivated: boolean = false;\r\n public activeView$: BehaviorSubject;\r\n public isHeaderConsdensed$: BehaviorSubject;\r\n public activatedRoute$: BehaviorSubject;\r\n public activeViewCrumb: IBreadcrumb;\r\n public highestTier: number;\r\n public currentTier: IHierarchyTier;\r\n private overlayRef: OverlayRef;\r\n public processes: Process[] = [];\r\n\r\n @ViewChild('scopeSelectOrigin') scopeSelectOrigin: ElementRef;\r\n @ViewChild('searchOrigin') searchOrigin: ElementRef;\r\n @ViewChild('processesOrigin') processesOrigin: ElementRef;\r\n\r\n scopeSelectDropdownPortal: ComponentPortal;\r\n searchDropdownPortal: ComponentPortal;\r\n\r\n createInjector(dataToPass): PortalInjector {\r\n const injectorTokens = new WeakMap();\r\n injectorTokens.set(NAVIGATION_PORTAL_DATA, dataToPass);\r\n return new PortalInjector(this._injector, injectorTokens);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.processes = this.processingService.processes;\r\n this.processingService.processes$.pipe(takeUntil(this.killTrigger)).subscribe(process => {\r\n if (process != null) {\r\n this.openProcessesDropdown();\r\n } else if (this.processingService.processes.length === 0 && this.overlayRef != null) {\r\n this.overlayRef.detach();\r\n }\r\n });\r\n }\r\n\r\n public get completedProcessCount(): number {\r\n return this.processes.filter(x => x.status?.isComplete || x.status?.isFailed).length;\r\n }\r\n\r\n public get hasProcessError(): boolean {\r\n return this.processes.some(x => x.status?.isFailed);\r\n }\r\n\r\n public openScopeSelectDropdown() {\r\n const scopeSelectDropdownPortal = new ComponentPortal(\r\n HeaderHierarchyOverlayComponent,\r\n this.vcRef,\r\n this.createInjector({\r\n highestTier: this.highestTier,\r\n })\r\n );\r\n const config = new OverlayConfig({\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.scopeSelectOrigin)\r\n .withPositions([{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }]),\r\n });\r\n this.overlayRef = this.overlay.create(config);\r\n this.overlayRef.attach(scopeSelectDropdownPortal);\r\n this.overlayRef.backdropClick().subscribe(() => {\r\n this.overlayRef.detach();\r\n this.hierarchyTierService.applyCurrentTier();\r\n });\r\n }\r\n\r\n public openProcessesDropdown(): void {\r\n const dropdownPortal = new ComponentPortal(\r\n HeaderProcessesComponent,\r\n this.vcRef\r\n );\r\n\r\n const config = new OverlayConfig({\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.processesOrigin)\r\n .withPositions([\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n } as ConnectedPosition,\r\n ]),\r\n });\r\n this.overlayRef = this.overlay.create(config);\r\n const compRef = this.overlayRef.attach(dropdownPortal).instance;\r\n\r\n this.overlayRef.backdropClick().subscribe(() => {\r\n this.searchActivated = false;\r\n this.overlayRef.detach();\r\n });\r\n }\r\n\r\n public openSearchDropdown() {\r\n this.searchActivated = true;\r\n const searchDropdownPortal = new ComponentPortal(\r\n HeaderSearchComponent,\r\n this.vcRef\r\n );\r\n\r\n const config = new OverlayConfig({\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.searchOrigin)\r\n .withPositions([\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n } as ConnectedPosition,\r\n ]),\r\n });\r\n this.overlayRef = this.overlay.create(config);\r\n const compRef = this.overlayRef.attach(searchDropdownPortal).instance;\r\n\r\n compRef.patientSelected.subscribe(() => {\r\n this.searchActivated = false;\r\n this.overlayRef.detach();\r\n return;\r\n });\r\n\r\n this.overlayRef.backdropClick().subscribe(() => {\r\n this.searchActivated = false;\r\n this.overlayRef.detach();\r\n });\r\n }\r\n\r\n public clickTitle() {\r\n if (this.isHeaderConsdensed$.value && this.activeViewCrumb) {\r\n this._router.navigate([this.activeViewCrumb.urlSegment]);\r\n }\r\n }\r\n\r\n public setActiveViewCrumb(event: IBreadcrumb) {\r\n this.activeViewCrumb = event;\r\n // modify paths to go to 'default' children\r\n const path = this.activeViewCrumb.urlSegment;\r\n switch (path) {\r\n case '/care':\r\n this.activeViewCrumb.urlSegment = path + '/summary';\r\n break;\r\n case '/track':\r\n this.activeViewCrumb.urlSegment = path + '/summary';\r\n break;\r\n case '/improve':\r\n this.activeViewCrumb.urlSegment = path + '/home';\r\n break;\r\n case '/submit':\r\n this.activeViewCrumb.urlSegment = path + '/summary';\r\n break;\r\n case '/home':\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n public passTier(ref: CdkPortalOutletAttachedRef): void {\r\n console.log(this.highestTier);\r\n ref = ref as ComponentRef;\r\n ref.instance.highestTier = this.highestTier;\r\n }\r\n}\r\n","
\n
\n
\n \"Caravan\n
\n \"Caravan\n
\n
","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'coach-sidebar-logo',\n templateUrl: './sidebar-logo.component.html'\n})\nexport class SidebarLogoComponent {\n\n @Input() isSidebarOpen: boolean;\n\n constructor() { }\n\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HelpPanelService {\n\n public isHelpPanelOpen$: BehaviorSubject;\n public isHelpPanelPinned$: BehaviorSubject;\n\n constructor() {\n this.isHelpPanelOpen$ = new BehaviorSubject(false);\n this.isHelpPanelPinned$ = new BehaviorSubject(false);\n }\n\n // START: felt cute, might delete l8ter\n public setHelpPanelOpen(isOpen: boolean) {\n this.isHelpPanelOpen$.next(isOpen);\n }\n \n public setHelpPanelPinned(isPinned: boolean) {\n this.isHelpPanelPinned$.next(isPinned);\n }\n // END: felt cute, might delete l8ter\n\n public toggleHelpPanelOpen() {\n const nextValue = !this.isHelpPanelOpen$.value;\n this.isHelpPanelOpen$.next(nextValue);\n }\n \n public toggleHelpPanelPinned() {\n const nextValue = !this.isHelpPanelPinned$.value;\n this.isHelpPanelPinned$.next(nextValue);\n }\n\n}\n","\n
\n \n \n \n \n
\n
\n\n\n \n \n
\n
\n \n
\n
{{ item.label }}
\n\n \n \n \n \n \n \n \n
\n
\n
\n \n
\n
{{ item.label }}
\n
\n
\n
\n
\n","import {\n Component,\n OnInit,\n Input,\n EventEmitter,\n Output,\n OnDestroy\n} from '@angular/core';\nimport { IView, Views } from '@shared/models/views';\nimport { HelpPanelService } from '@shared/services/help-panel/help-panel.service';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Access } from '@shared/services/graphql/access.service';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { ModuleConstants } from '@shared/models/module-constants';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { MixpanelService } from '@shared/services/mixpanel/mixpanel.service';\n\n@Component({\n selector: 'coach-sidebar-menu',\n templateUrl: './sidebar-menu.component.html',\n})\nexport class SidebarMenuComponent implements OnInit, OnDestroy {\n @Input() isSidebarOpen: boolean;\n @Output() itemClicked: EventEmitter = new EventEmitter();\n\n public breakpointObserver;\n public isFloatingMenu: boolean;\n\n public views: IView[];\n public menuItems: IView[];\n public helpItem: IView;\n\n public isHelpPanelOpen$: BehaviorSubject;\n private destroy$ = new Subject();\n\n constructor(\n private _helpPanelService: HelpPanelService,\n private _breakpointObserver: BreakpointObserver,\n private hierarchyTierService: HierarchyTierService,\n private userAccessService: UserAccessService,\n private featureFlagService: FeatureFlagService,\n private mixpanelService: MixpanelService\n ) {\n this.isHelpPanelOpen$ = this._helpPanelService.isHelpPanelOpen$;\n this.breakpointObserver = this._breakpointObserver\n .observe(['(max-width: 650px)'])\n .subscribe((result) => {\n if (result.matches) {\n this.isFloatingMenu = true;\n } else {\n this.isFloatingMenu = false;\n }\n });\n }\n\n ngOnInit(): void {\n this.views = Views;\n this.helpItem = {\n label: 'Get Help',\n icon: 'help-circle',\n path: null,\n urlSegment: null, // doesn't route\n moduleId: null\n };\n\n this.menuItems = [...this.views, this.helpItem];\n\n this.hierarchyTierService.currentTier$\n .pipe(takeUntil(this.destroy$))\n .subscribe((currentTier) => {\n if (currentTier != null) {\n this.views.forEach((item) => {\n const tierId = currentTier.selectedTierIdForDisplay;\n item.urlSegment = `/${currentTier.abbreviation}/${tierId}/${item.path}`;\n });\n }\n });\n\n this.userAccessService.currentAccess$\n .pipe(takeUntil(this.destroy$))\n .subscribe((access) => {\n this.getAccess(access);\n });\n }\n\n private getAccess(access: Access): void {\n let views: IView[] = [];\n if (access != null) {\n views = this.views.filter((view) => {\n // If hide is set on the views\n if (view.hideIfFeatureFlag) {\n return !this.featureFlagService.hasFeatureFlag(\n view.hideIfFeatureFlag\n );\n }\n\n let giveAccess = false;\n if (access?.modules != null) {\n for (let idx = 0; idx < access.modules.length; idx++) {\n if (view.hasPHI && !access.phi) {\n giveAccess = false;\n break;\n }\n if (\n view.moduleId === ModuleConstants.HomeModule ||\n view.moduleId === access.modules[idx].moduleId\n ) {\n giveAccess = true;\n break;\n }\n }\n if (view.featureFlag && giveAccess) {\n giveAccess = this.featureFlagService.hasFeatureFlag(\n view.featureFlag\n );\n }\n\n return giveAccess;\n } else {\n return true;\n }\n });\n }\n\n this.menuItems = [...views, this.helpItem];\n }\n\n toggleHelpPanelOpen() {\n this._helpPanelService.toggleHelpPanelOpen();\n }\n\n menuItemClicked(e:Event, item) {\n const id = (e.target as HTMLElement).id;\n this.mixpanelService.track(id, { item });\n if (this.isSidebarOpen && this.isFloatingMenu) {\n this.isSidebarOpen = !this.isSidebarOpen;\n this.itemClicked.emit(this.isSidebarOpen);\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth-service/auth.service';\n\nexport interface TierNameLookupResult {\n tierID: string;\n tierName: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TierNameLookupService {\n public authToken: string;\n private tierEndpoint = environment.apiBaseUrl + '/track/Hierarchy/tiers';\n private get httpHeaders(): HttpHeaders {\n return new HttpHeaders({\n Authorization: `Bearer ${this.authService.IdToken}`,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n });\n }\n private cache = {};\n\n constructor(\n private httpClient: HttpClient,\n private authService: AuthService\n ) { }\n\n async preLoadTierNames(tierIds: string[]): Promise {\n const queryParams = [\n ...new Set(\n tierIds.flatMap((tierId) => {\n // don't lookup names we already have cached\n if (!Object.keys(this.cache).includes(tierId)) {\n return [`tierIds=${tierId}`];\n } else {\n return [];\n }\n })\n ),\n ].join('&');\n if (queryParams.length) {\n const result = await this.httpClient\n .get(`${this.tierEndpoint}?${queryParams}`, {\n responseType: 'json',\n headers: this.httpHeaders,\n })\n .toPromise();\n result.map((tn) => {\n this.cache[tn.tierID] = tn.tierName;\n });\n }\n }\n\n async getTierName(tierId: string): Promise {\n if (this.cache[tierId]) {\n return this.cache[tierId];\n } else {\n const result = await this.httpClient\n .get(`${this.tierEndpoint}?tierIds=${tierId}`, {\n responseType: 'json',\n headers: this.httpHeaders,\n })\n .toPromise();\n result.map((tn) => {\n this.cache[tn.tierID] = tn.tierName;\n });\n return this.cache[tierId];\n }\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { environment } from 'src/environments/environment';\n\ninterface DocumentLookupResult {\n title: string;\n isShared: boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DocumentLookupService {\n private docEndpoint = environment.coachApiUrl + '/api/docRepo/fileInfo/';\n private get httpHeaders(): HttpHeaders {\n return new HttpHeaders({\n Authorization: `Bearer ${this.authService.IdToken}`,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n });\n }\n private cache = {};\n\n constructor(\n private httpClient: HttpClient,\n private authService: AuthService\n ) { }\n\n public async getTitle(fileId: string): Promise {\n if (this.cache[fileId]) {\n return this.cache[fileId];\n } else {\n const result = await this.httpClient\n .get(this.docEndpoint + fileId, {\n responseType: 'json',\n headers: this.httpHeaders,\n })\n .toPromise();\n if (result.title) {\n this.cache[fileId] = result.title;\n return result.title;\n } else {\n return undefined;\n }\n }\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { environment } from 'src/environments/environment';\n\ninterface ReportLookupResult {\n reportName: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReportLookupService {\n private reportEndpoint = environment.trackApiUrl + '/report/info?reportId=';\n private get httpHeaders(): HttpHeaders {\n return new HttpHeaders({\n Authorization: `Bearer ${this.authService.IdToken}`,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n });\n }\n private cache = {};\n\n constructor(\n private httpClient: HttpClient,\n private authService: AuthService\n ) { }\n\n public async getTitle(guid: string): Promise {\n if (this.cache[guid]) {\n return this.cache[guid];\n } else {\n const result = await this.httpClient\n .get(this.reportEndpoint + guid, {\n responseType: 'json',\n headers: this.httpHeaders,\n })\n .toPromise();\n if (result.reportName) {\n this.cache[guid] = result.reportName;\n return result.reportName;\n } else {\n return undefined;\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PatientService } from '../patient/patient.service';\nimport { DocumentLookupService } from './document-lookup/document-lookup.service';\nimport { ReportLookupService } from './report-lookup/report-lookup.service';\nimport { RecentsItem } from '../recents-cache/recents-cache.service';\nimport { LogAuditElementID } from '@shared/models/audit-constants';\n@Injectable({\n providedIn: 'root',\n})\nexport class RecentsLookupService {\n constructor(\n private patientService: PatientService,\n private documentLookupService: DocumentLookupService,\n private reportLookupService: ReportLookupService\n ) {}\n\n async getTitle(item: RecentsItem): Promise {\n const patientElement = item.elements.find(\n (element) => element.id === LogAuditElementID.ChPatId\n );\n const documentElement = item.elements.find(\n (element) => element.id === LogAuditElementID.DocumentEntryId\n );\n const reportElement = item.elements.find(\n (element) => element.id === LogAuditElementID.ReportGUID\n );\n if (documentElement) {\n return await this.documentLookupService.getTitle(documentElement.value);\n } else if (reportElement) {\n return await this.reportLookupService.getTitle(reportElement.value);\n } else if (patientElement) {\n const tierId = item.navURL.split('/')[2];\n const orgId = await this.patientService.getWpOrgIdFromTierId(tierId);\n const patient = await this.patientService.getPatient(\n orgId,\n patientElement.value\n );\n if (patient.id) {\n return patient.displayName();\n } else {\n return undefined;\n }\n } else {\n return null;\n }\n }\n}\n","
\n
\n
\n \n \n \n \n \n
\n
\n \n
{{ module }}
\n
\n {{ title }}\n
\n
\n {{ tierName }}\n
\n
\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Params, UrlSerializer } from '@angular/router';\nimport { RecentsLookupService } from '@shared/services/recents-lookup/recents-lookup.service';\nimport { RecentsItem } from '@shared/services/recents-cache/recents-cache.service';\nimport { TierNameLookupService } from '@shared/services/tier-name-lookup/tier-name-lookup.service';\nimport { RecentsMatchers } from '@shared/models/recent-matchers';\n\n@Component({\n selector: 'coach-sidebar-recent-element',\n templateUrl: './sidebar-recent-element.component.html',\n styleUrls: ['./sidebar-recent-element.component.scss'],\n})\nexport class SidebarRecentElementComponent implements OnInit {\n @Input() item: RecentsItem;\n public module: string;\n public tierName: string;\n public title: string;\n public routerURL: string;\n public queryParams: Params;\n\n constructor(\n private recentsLookupService: RecentsLookupService,\n private tierNameLookupService: TierNameLookupService,\n private urlSerializer: UrlSerializer\n ) {}\n\n parseFeature(input: string): string {\n const words = input?.split('?')[0].split('-');\n return words\n ?.map((word) => {\n return word[0].toUpperCase() + word.substring(1);\n })\n ?.join(' ');\n }\n\n async ngOnInit(): Promise {\n this.routerURL = this.item.navURL.split('?')[0];\n this.queryParams = this.urlSerializer.parse(this.item.navURL).queryParams;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, _tier, tierId, module, feature] = this.item.navURL.split('/');\n\n this.tierName = await this.tierNameLookupService.getTierName(tierId);\n\n this.module = module?.toUpperCase();\n\n for (let idx = 0; idx < RecentsMatchers.length; idx++) {\n if (RecentsMatchers[idx].match(this.item.navURL)) {\n let title = RecentsMatchers[idx].title(this.item.navURL);\n if (title) {\n this.title = title;\n } else {\n const lookupResult = await this.recentsLookupService.getTitle(\n this.item\n );\n if (lookupResult === null) {\n this.title = this.parseFeature(feature);\n } else {\n this.title = lookupResult;\n }\n }\n break;\n }\n }\n }\n}\n","\r\n
\r\n Recent\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { GetInitialsFromNamePipe } from '@shared/pipes/get-initials-from-name.pipe';\r\nimport { RouterHistoryService } from '@shared/services/router-history/router-history.service';\r\nimport {\r\n RecentsCacheService,\r\n RecentsItem,\r\n} from '@shared/services/recents-cache/recents-cache.service';\r\nimport { TierNameLookupService } from '@shared/services/tier-name-lookup/tier-name-lookup.service';\r\n\r\n@Component({\r\n selector: 'coach-sidebar-recent',\r\n templateUrl: './sidebar-recent.component.html',\r\n providers: [GetInitialsFromNamePipe],\r\n})\r\nexport class SidebarRecentComponent implements OnInit {\r\n public recentItems: RecentsItem[] = [];\r\n\r\n @Input() isSidebarOpen: boolean;\r\n\r\n constructor(\r\n public _getInitialsFromName: GetInitialsFromNamePipe,\r\n public historyService: RouterHistoryService,\r\n public recentsCache: RecentsCacheService,\r\n public tierNameLookupService: TierNameLookupService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.recentsCache.recents$.subscribe(async (recents) => {\r\n const tierIds = recents.map((r) => {\r\n return r.navURL.split('/')[2];\r\n });\r\n await this.tierNameLookupService.preLoadTierNames(tierIds);\r\n this.recentItems = recents;\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sidebar-account-dropdown',\n templateUrl: './sidebar-account-dropdown.component.html',\n styleUrls: ['./sidebar-account-dropdown.scss'],\n host : {\n class: ''\n }\n})\nexport class SidebarAccountDropdownComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n
\n
\n
Account Details
\n
\n
\n
\n
\n
Change Password
\n
\n
\n
\n
\n
Change Picture
\n
\n
\n
\n
\n
Sign Out
\n
\n
\n
\n
\n","\n \n\n\n
\n
\n \n
\n
Sign Out
\n
Sign In
\n
\n
\n","import { Component, OnInit, Input, ViewContainerRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { UserInfo } from '@shared/services/auth-service/auth-interface';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Overlay, OverlayRef, OverlayConfig } from '@angular/cdk/overlay';\nimport { SidebarAccountDropdownComponent } from './sidebar-account-dropdown/sidebar-account-dropdown.component';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'coach-sidebar-account',\n templateUrl: './sidebar-account.component.html',\n providers: [Overlay]\n})\nexport class SidebarAccountComponent implements OnInit {\n public isAccountDropdownOpen: boolean = false;\n private overlayRef: OverlayRef;\n @Input() isSidebarOpen: boolean;\n public isAuthenticated$: Observable;\n public userInfo$: Observable;\n private isLoggedIn = false;\n\n constructor(public overlay: Overlay, private vcRef: ViewContainerRef, private authService: AuthService) {}\n\n sidebarAccountDropdownPortal: ComponentPortal;\n\n ngOnInit(): void {\n this.isAuthenticated$ = this.authService.isAuthenticated$;\n this.userInfo$ = this.authService.userInfo$;\n this.isAuthenticated$.subscribe(\n isLoggedIn => {\n this.isLoggedIn = isLoggedIn;\n },\n error => {}\n ); //()=>this.tryLogin());\n }\n\n signInOrOutClick(event) {\n if (event.altKey && !environment.production) {\n //var w = ('', '_blank', 'toolbar=0,width=300,height=200');\n if (this.isLoggedIn) {\n this.userInfo$.subscribe(userInfo => {\n let str = `UserInfo: ${JSON.stringify(userInfo)} \\r\\n idp_sub:${\n this.authService.idp_sub\n } \\r\\n TOKENPAYLOAD: ${JSON.stringify(this.authService.getPayloadFromIdToken())}`;\n window.alert(str);\n console.warn('login Info:', str);\n console.warn('login Info:', this.authService.IdToken);\n });\n }\n } else {\n console.warn('trying to SignInSignOutClick ');\n this.signInOrOut(this.isLoggedIn);\n }\n }\n signInOrOut(isloggedIn: boolean) {\n if (isloggedIn) this.authService.logout(); //logofflocal();//logoffAndRevokeTokens();//logout();\n else {\n this.authService.write('coachRedirect', window.location.pathname);\n this.authService.write('queryParam', null);\n this.authService.login();\n }\n }\n\n openAccountDropdown() {\n let sidebarAccountDropdownPortal = new ComponentPortal(SidebarAccountDropdownComponent, this.vcRef);\n let config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop'\n });\n config.positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.vcRef.element.nativeElement.children[0].children[0])\n .withPositions([{ originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }]);\n this.overlayRef = this.overlay.create(config);\n this.overlayRef.attach(sidebarAccountDropdownPortal);\n this.overlayRef.backdropClick().subscribe(() => this.overlayRef.detach());\n }\n}\n","\n
\n \n \n\n\n \n \n \n \n
\n","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\nimport { HeaderCondensedService } from '@shared/services/header-condensed/header-condensed.service';\nimport { SideBarToggleService } from '@shared/services/sidebar-toggle/sidebar-toggle.service';\nimport { RecentsConstants } from '@shared/models/module-constants';\n\n@Component({\n selector: 'coach-sidebar',\n templateUrl: './sidebar.component.html',\n})\nexport class SidebarComponent implements OnInit {\n @Input() public state;\n public collapseSidebar$: BehaviorSubject;\n public isSidebarOpen: boolean;\n @Output() sidebarToggled: EventEmitter = new EventEmitter();\n\n public readonly Recents = RecentsConstants.RecentsFeatureFlag;\n\n constructor(\n private HeaderCondensedService: HeaderCondensedService,\n private sidebarToggleService: SideBarToggleService,\n private route: ActivatedRoute,\n private router: Router\n ) {\n this.collapseSidebar$ = this.HeaderCondensedService.collapseSidebar$;\n }\n\n ngOnInit(): void {\n this.isSidebarOpen = this.state;\n\n this.collapseSidebar$.subscribe((whenChanged) => {\n if (whenChanged === true) {\n this.isSidebarOpen = false;\n this.sidebarToggled.emit(false);\n }\n });\n }\n\n public navigateHome(): void {\n this.router.navigate(['home'], { relativeTo: this.route.children[0] });\n }\n\n public toggleSidebar() {\n this.isSidebarOpen = !this.isSidebarOpen;\n this.sidebarToggled.emit(this.isSidebarOpen);\n this.sidebarToggleService.toggleSidebarPane(this.isSidebarOpen);\n }\n\n public menuItemClicked(event) {\n this.isSidebarOpen = event;\n this.sidebarToggled.emit(this.isSidebarOpen);\n }\n}\n","import {\n Component,\n OnInit,\n HostBinding,\n ViewChild,\n Renderer2,\n OnDestroy,\n} from '@angular/core';\nimport { HelpPanelService } from '@shared/services/help-panel/help-panel.service';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\nimport { filter, map } from 'rxjs/operators';\nimport { MarkdownComponent } from 'ngx-markdown';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { AppConstants } from '@shared/models/constants/app-constants';\n\n@Component({\n selector: 'coach-help-panel',\n templateUrl: './help-panel.component.html' \n})\nexport class HelpPanelComponent implements OnInit, OnDestroy {\n public isHelpPanelOpen$: BehaviorSubject = new BehaviorSubject(\n false\n );\n public isHelpPanelPinned$: BehaviorSubject = new BehaviorSubject(\n false\n );\n\n public helpfile: string;\n public pinnedClass: string;\n supportEmail: string = AppConstants.SupportEmail;\n @HostBinding('class')\n get pclass(): string {\n return `${this.pinnedClass} coach-help-panel column`;\n }\n\n private readonly isAbsolute = new RegExp('(?:^[a-z][a-z0-9+.-]*:|//)', 'i');\n\n @ViewChild('postDiv', { static: false })\n private postDiv: MarkdownComponent;\n\n constructor(\n private _helpPanelService: HelpPanelService,\n private httpClient: HttpClient,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private renderer: Renderer2,\n private hierarchyTierService: HierarchyTierService\n ) {\n this.isHelpPanelOpen$ = this._helpPanelService.isHelpPanelOpen$;\n this.isHelpPanelPinned$ = this._helpPanelService.isHelpPanelPinned$;\n this.setPinnedClass();\n }\n\n ngOnInit() {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n map(() => {\n let child = this.activatedRoute.firstChild;\n let isFound = true;\n while (child) {\n if (child.firstChild) {\n child = child.firstChild;\n } else if (\n child.snapshot &&\n child.snapshot.queryParams &&\n isFound\n ) {\n if (\n child.snapshot.queryParams.filterPreset\n ) {\n let filterHelpFile = this.getHelpfileFromfilterPreset(child.snapshot.queryParams.filterPreset);\n if(filterHelpFile){\n child.snapshot.data['helpfile'] = filterHelpFile;\n return child.snapshot.data['helpfile'];\n }\n else{isFound = false;\n //child.snapshot.data['helpfile'] = null; //resets the help file from last one loaded.\n continue}\n }\n else if (child.snapshot && child.snapshot.url[1] && ! child.snapshot.data['helpfile'])\n {\n let filterHelpFile = this.getHelpfileFromReport(child.snapshot.url[1].path);\n if(filterHelpFile){\n child.snapshot.data['helpfile'] = filterHelpFile;\n return filterHelpFile;\n }\n else{isFound = false;\n //child.snapshot.data['helpfile'] = null; //resets the help file from last one loaded.\n continue}\n }\n else if (child.snapshot && child.snapshot.queryParams.folder) {\n let docrepoHelpFile = this.getHelpfileFromDocRepoLocation(\n child.snapshot.queryParams.folder,\n child.snapshot.queryParams.file);\n child.snapshot.data['helpfile'] = this.getHelpfileFromDocRepoLocation(\n child.snapshot.queryParams.folder,\n child.snapshot.queryParams.file);\n //return child.snapshot.data['helpfile'];\n return docrepoHelpFile;\n } else {\n isFound = false;\n continue;\n }\n } else if (child.snapshot.data && child.snapshot.data['helpfile']) {\n return child.snapshot.data['helpfile'];\n } else if (\n child.parent.snapshot.data &&\n child.parent.snapshot.data['helpfile']\n ) {\n return child.parent.snapshot.data['helpfile'];\n } else {\n return null;\n }\n }\n return null;\n })\n )\n .subscribe((helpfile: any) => {\n this.getHelpfileContents(helpfile);\n });\n }\n\n public getHelpfileFromDocRepoLocation(folder, file): string {\n switch (folder + '-' + file) {\n case '196-3922': {\n return 'LEARN_CARE_AWVBasic_2020';\n }\n default: {\n switch (folder) {\n case '196': {\n return 'home';\n }\n default: {\n return 'LEARN_IMPROVE_General_2020';\n }\n }\n }\n }\n }\n public getHelpfileFromfilterPreset(filterPreset): string {\n switch (filterPreset) {\n case 'awv-opportunities': {\n return 'LEARN_CARE_AWVBasic_2020';}\n case 'blood-pressure': {\n return 'LEARN_CARE_BloodPressure_2020'}\n case 'high-blood-sugar' :{\n return 'LEARN_CARE_BloodGlucose_2020'}\n case 'low-blood-sugar' :{\n return 'LEARN_CARE_BloodGlucose_2020'}\n case 'facesheet-schedule' :{\n return 'LEARN_CARE_General_2020'}\n case 'rapid-weight-gain-reading' :{\n return 'LEARN_CARE_WeightTracking_2020'}\n case '' :{\n return ''}\n default: {return 'LEARN_CARE_General_2020';}\n }\n }\n\n public getHelpfileFromReport(reportGuid): string {\n switch (reportGuid) {\n case '1c951665-2e75-4979-949c-c7b22255a11f': {\n return 'LEARN_TRACK_FU_KPI_2020';}\n case '319b62e2-c336-4627-8b01-35443ed2b372': { \n return 'LEARN_TRACK_FU_KPI_2020';}\n case '63042d25-5a41-4484-bae5-3d1dc06c59c3' :{\n return 'LEARN_TRACK_FU_NU_2020';}\n case 'bb27f02a-3a04-406c-9f16-6ef54410d31e' :{\n return 'LEARN_TRACK_FU_NU_2020';}\n case '3d011cf6-27b2-433f-821f-22c5b6cd27e4' :{\n return 'LEARN_TRACK_FU_PAC_2020';}\n case '852b7a7f-b979-48c2-b027-7984e1540023' :{\n return 'LEARN_TRACK_FU_PAC_2020';}\n case 'dec1b521-05fb-4cd0-9a46-43cb871044d5' :{\n return 'LEARN_TRACK_FU_EOL_2020';}\n case 'edf29df5-2059-4d12-a640-f0fbe8f38b6a' :{\n return 'LEARN_TRACK_FU_EOL_2020';}\n case '9909c861-582c-4ccc-a9d2-41b600b3d321' :{\n return 'LEARN_TRACK_FU_CE_2020';}\n case '132c9441-d01f-4b42-8e28-6c9b3191a91f':{\n return 'LEARN_TRACK_FU_CE_2020';}\n case '6ce3b3a4-780d-4644-88fa-c4aad2831133' :{\n return 'LEARN_TRACK_QualityMeasures_2020';}\n case 'ec25f9ab-700b-46c3-b508-81f31e9e1d17' :{\n return 'LEARN_TRACK_QualityMeasures_2020';}\n case '8977abc7-489a-44be-8fc7-12b2b392f108' :{\n return 'LEARN_TRACK_QualityMeasures_2020';}\n case '1f8bc59d-1d3b-44c9-bb9b-2648414c32d0' :{\n return 'LEARN_TRACK_QualityMeasures_2020';}\n case '0c47a9c9-3c9a-49d7-b3b9-2789adc2b58b' :{\n return 'LEARN_TRACK_QualityMeasures_2020';}\n case '6dcedecd-7418-4280-9ea5-3c2ca3f74294' :{\n return 'LEARN_TRACK_QualityMeasures_SPI';}\n case '4659a7f0-55f5-4a07-88c8-461abf329df5' :{\n return 'LEARN_TRACK_QualityMeasures_SRQ';}\n default: {return 'LEARN_CARE_General_2020';}\n }\n }\n\n public getHelpfileContents(helpfile) {\n if (!helpfile) {\n helpfile = 'general';\n }\n this.httpClient\n .get('assets/helpfiles/' + helpfile + '.md', { responseType: 'text' })\n .subscribe((markdown) => {\n this.helpfile = markdown;\n });\n }\n\n public setPinnedClass() {\n this.pinnedClass = this.isHelpPanelPinned$.value\n ? 'is-pinned'\n : 'is-unpinned';\n }\n\n public togglePinned() {\n this._helpPanelService.toggleHelpPanelPinned();\n this.setPinnedClass();\n }\n\n public toggleOpen() {\n this._helpPanelService.toggleHelpPanelOpen();\n }\n\n public getIsDisabled(): boolean {\n if (\n (this.isHelpPanelOpen$.value && this.isHelpPanelPinned$.value) ||\n !this.isHelpPanelOpen$.value\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n ngOnDestroy(): void {\n }\n}\n","
\n
\n
\n
Help Center
\n
\n \n
\n
\n
\n
\n
\n
\n
Can't find what you're looking for?
\n \n
\n
\n
\n","
\n \n
\n \n
\n \n
\n \n
\n
\n
\n
\n\n\n
\n
\n
\n
\n
Session Expires Soon
\n
\n
\n
\n

Your session is about to expire due to inactivity.

\n

You will be logged out in {{timeLeft | minuteSeconds}}

\n
\n
\n \n \n
\n
\n
","import { Component, Renderer2, OnInit, Inject } from '@angular/core'; // enableProdMode\nimport { DOCUMENT } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\nimport { HeaderCondensedService } from '@shared/services/header-condensed/header-condensed.service';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\n\nimport { ActivatedRoute, ActivatedRouteSnapshot, Router } from '@angular/router';\n\nimport { environment } from 'src/environments/environment';\nimport { HierarchyTierService } from '@shared/services/hierarchy/hierarchy-tier.service';\nimport { UserAccessService } from '@shared/services/user-access/user-access.service';\nimport { UserIdleService } from 'angular-user-idle';\nimport { FeatureFlagService } from '@shared/services/feature-flag/feature-flag.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\nimport { MixpanelService } from '@shared/services/mixpanel/mixpanel.service';\nimport { AppConstants } from '@shared/models/constants/app-constants';\nimport { TierInfo } from '@shared/services/auth-service/auth-interface';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html'\n})\nexport class AppComponent implements OnInit {\n public isSidebarOpen;\n public isHeaderCondensed$: BehaviorSubject;\n public isAuthenticated$: Observable;\n public userData$: Observable;\n userActivityTimer;\n userInactive: Subject = new Subject();\n renewIdpTimer;\n renewIdp: Subject = new Subject();\n isTimeoutDialogOpen: boolean;\n timeLeft: number;\n\n constructor(\n private _renderer: Renderer2,\n private _isHeaderCondensed: HeaderCondensedService,\n private authService: AuthService,\n private router: Router,\n private hierarchyTierService: HierarchyTierService,\n private route: ActivatedRoute,\n private userAccessService: UserAccessService,\n private userIdle: UserIdleService,\n private featureFlagService: FeatureFlagService,\n private mixpanelService: MixpanelService,\n @Inject(DOCUMENT) document\n ) {\n this.isHeaderCondensed$ = this._isHeaderCondensed.isHeaderCondensed$;\n this.isHeaderCondensed$.subscribe(() => this.toggleCondensedClass());\n\n this.hierarchyTierService.currentTier$\n .pipe(\n filter(currentTier => currentTier != null),\n switchMap(currentTier =>\n this.featureFlagService.updateFeatureFlags(currentTier).pipe(\n switchMap(() => this.userAccessService.updateAccess(currentTier)),\n map(() => currentTier)\n )\n )\n )\n .subscribe(currentTier => this.hierarchyChanged(currentTier));\n\n this.userAccessService.currentAccess$.subscribe(access => {\n const allChildren = this.flattenChildren(this.route.snapshot.children);\n let hasAccess = true;\n allChildren.forEach(child => {\n hasAccess = hasAccess && this.userAccessService.accessRestricted(child.data, access);\n });\n\n if (!hasAccess) {\n this.router.navigate(['/home']);\n }\n });\n }\n\n /** When the hiearchy changes, update navigation to reflect newly selected tier */\n async hierarchyChanged(currentTier: IHierarchyTier): Promise {\n // Try to navigate to stored endpoint first, otherwise navigate to current url for tier\n const hasNavigated = await this.navigateToStoredEndpoint();\n\n const url = this.router.url;\n const isSharedLink = url.indexOf('shared') > -1;\n\n if (!hasNavigated || isSharedLink) {\n let index: number;\n if (isSharedLink) {\n // shared url segment stands in for tier/id segments, so don't trim module\n index = url.split('/', 2).join('/').length;\n } else {\n index = url.split('/', 3).join('/').length;\n }\n const tierId = currentTier.selectedTierIdForDisplay;\n const newUrl = `/${currentTier.abbreviation}/${tierId}${url.slice(index)}`;\n\n const currentUrlTier = this.hierarchyTierService.getTierIdFromRoute();\n\n if (currentUrlTier !== tierId) {\n this.router.navigateByUrl(newUrl);\n }\n }\n }\n\n flattenChildren(children: ActivatedRouteSnapshot[]): ActivatedRouteSnapshot[] {\n const items: ActivatedRouteSnapshot[] = [];\n children.forEach(x => {\n if (x.children && x.children.length > 0) {\n const moreItems = [x, ...this.flattenChildren(x.children)];\n items.push(...moreItems);\n } else {\n items.push(x);\n }\n });\n\n return items;\n }\n\n SetUATimer() {}\n public toggleCondensedClass() {\n if (this.isHeaderCondensed$.value) {\n this._renderer.addClass(document.body, 'is-headerCondensed');\n }\n if (!this.isHeaderCondensed$.value) {\n this._renderer.removeClass(document.body, 'is-headerCondensed');\n }\n }\n\n ngOnInit(): void {\n this.authService.init(this);\n this.isAuthenticated$ = this.authService.isAuthenticated$;\n this.userData$ = this.authService.userData$;\n // this.setRenewIdpTimeout(); // COM-8023 removing manual token refresh in lieu of silent renew\n this.isSidebarOpen = this.getSetSidebarStateStore();\n\n const mixpanelConfig = environment.mixpanel;\n this.mixpanelService.init(mixpanelConfig.projectId, mixpanelConfig.debug, mixpanelConfig.pageViews);\n this.authService.userInfo$.subscribe(user => {\n if (user?.dnn_id) {\n this.mixpanelService.identify(user.dnn_id);\n this.setMixPanelUserProperties(user.email, user.name, user.tiers);\n }\n });\n\n this.startIdleWatch();\n }\n public startIdleWatch(): void {\n this.userIdle.startWatching();\n\n // Start watching when user idle is starting.\n this.userIdle.onTimerStart().subscribe(count => {\n this.timeLeft = this.userIdle.getConfigValue().timeout - count;\n\n const notAuthenticated = this.userAccessService.currentAccess$.value == null;\n if (notAuthenticated) {\n this.continueSession();\n } else if (!this.isTimeoutDialogOpen && count != null) {\n this.showTimeOutMessage();\n }\n });\n\n // Start watch when time is up.\n this.userIdle.onTimeout().subscribe(() => {\n this.showSessionEnd();\n });\n }\n\n logout(): void {\n this.mixpanelService.reset();\n this.authService.logout();\n }\n\n showSessionEnd(): void {\n this.authService.write(AuthService.TIMED_OUT, true);\n const url = this.router.url.split('?')[0];\n this.authService.write('coachRedirect', url);\n this.authService.write('queryParams', this.route.snapshot.queryParams);\n this.logout();\n }\n\n continueSession(): void {\n this.userIdle.stopTimer();\n this.isTimeoutDialogOpen = false;\n }\n\n showTimeOutMessage(): void {\n this.isTimeoutDialogOpen = true;\n }\n\n public toggleSidebar(event) {\n this.isSidebarOpen = event;\n localStorage.setItem('isSidebarOpenStore', this.isSidebarOpen);\n }\n\n private getSetSidebarStateStore(): any {\n // Called on init to check and set sidebar state. If none, default open/true\n const storedState = localStorage.getItem('isSidebarOpenStore');\n if (storedState != undefined) {\n return JSON.parse(storedState);\n } else {\n return true;\n }\n }\n\n private isInvalidRedirect(path: string): boolean {\n return (\n !path ||\n this.router.url.includes('autologin') ||\n this.router.url === path ||\n path === '/_/_/home' ||\n path === '/' ||\n path === '/timeout'\n );\n }\n\n // called as a callback from checkAuth call in the authService.init()\n private async navigateToStoredEndpoint(): Promise {\n const path = this.authService.read('coachRedirect');\n\n if (this.isInvalidRedirect(path)) {\n return false;\n }\n\n if (path.toString().includes('/noauth')) {\n // to do: put in GUARDED HOME PAGE HERE.\n return await this.router.navigate(['/noauth']);\n } else {\n this.authService.write('coachRedirect', null);\n const qparams = this.authService.read('queryParams');\n // to do: only params or query params so using queryParams\n // let params = this.read('params');\n this.authService.write('queryParams', null);\n if (qparams) {\n return await this.router.navigate([path], { queryParams: qparams });\n } else {\n return await this.router.navigateByUrl(path);\n }\n }\n }\n\n /**\n * Set properties on Mixpanel User Profile\n * @param email\n * @param name\n * @param tiers\n */\n private setMixPanelUserProperties(email: string, name: string, tiers: Array): void {\n try {\n this.mixpanelService.userSet({\n $email: email,\n $name: name,\n tiers,\n updatedBy: AppConstants.ApplicationName\n });\n\n this.mixpanelService.userSetOnce({ createdBy: AppConstants.ApplicationName });\n } catch (error) {\n //Just log and do nothing\n console.error('Mixpanel error', error);\n }\n }\n\n // COM-8023: Removing manual IdentityServer token refresh as this was causing the entire app to reload\n // IDP token does not need refreshing as it is not used for authentication\n // Rather the B2C token is used for auth and is automatically refreshed in the angular-auth-oidc-client library when token is close to expiration via silent renew\n\n // IdpTimerCallback() {\n // if (\n // this.authService.isIdpExpiringIfSignedIn(55) &&\n // !this.router.url.includes('timeout')\n // ) {\n // this.renewIdp.next(Date.now());\n // }\n // }\n // setRenewIdpTimeout() {\n // this.renewIdpTimer = setInterval(() => {\n // this.IdpTimerCallback();\n // }, 1000 * 60 * 2);\n\n // this.renewIdp.subscribe(() => {\n // this.relogin();\n // });\n // }\n\n // relogin() {\n // //soft logout-which will force login without popup\n // // which will renew theIdpToken\n // let url = this.router.url; //window.location.pathname;\n // this.authService.write('coachRedirect', url);\n // this.authService.write('queryParams', null);\n // this.router.getCurrentNavigation;\n // this.authService.write('coachRedirect', url);\n // this.authService.write('queryParams', null);\n // this.authService.logoffLocal();\n // this.router.navigate(['/autologin']);\n // }\n}\n\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '@shared/shared.module';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { SidebarComponent } from './sidebar.component';\nimport { SidebarLogoComponent } from './sidebar-logo/sidebar-logo.component';\nimport { SidebarMenuComponent } from './sidebar-menu/sidebar-menu.component';\nimport { SidebarRecentComponent } from './sidebar-recent/sidebar-recent.component';\nimport { SidebarRecentElementComponent } from './sidebar-recent/sidebar-recent-element/sidebar-recent-element.component';\nimport { SidebarAccountComponent } from './sidebar-account/sidebar-account.component';\nimport { SidebarAccountDropdownComponent } from './sidebar-account/sidebar-account-dropdown/sidebar-account-dropdown.component';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n declarations: [\n SidebarComponent,\n SidebarLogoComponent,\n SidebarMenuComponent,\n SidebarRecentComponent,\n SidebarRecentElementComponent,\n SidebarAccountComponent,\n SidebarAccountDropdownComponent,\n ],\n imports: [SharedModule, PortalModule, OverlayModule, RouterModule],\n exports: [SidebarComponent]\n})\nexport class SidebarModule {}\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '@shared/shared.module';\nimport { HeaderComponent } from './header.component';\nimport { HeaderScopeOverlayComponent } from './header-scope-overlay/header-scope-overlay.component';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { HeaderScopeDropdownComponent } from './header-scope-dropdown/header-scope-dropdown.component';\nimport { HeaderHierarchyOverlayComponent } from './header-hierarchy-overlay/header-hierarchy-overlay.component';\nimport { HeaderSearchComponent } from './header-search/header-search.component';\nimport { HeaderProcessesComponent } from './header-processes/header-processes.component';\nimport { HeaderProcessProgressComponent } from './header-processes/header-process-progress/header-process-progress.component';\n\n@NgModule({\n declarations: [\n HeaderComponent,\n HeaderScopeOverlayComponent,\n HeaderScopeDropdownComponent,\n HeaderSearchComponent,\n HeaderHierarchyOverlayComponent,\n HeaderProcessesComponent,\n HeaderProcessProgressComponent\n ],\n imports: [\n SharedModule,\n PortalModule,\n OverlayModule\n ],\n exports: [\n HeaderComponent\n ]\n})\nexport class HeaderModule { }\n","import { ErrorHandler, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { SidebarModule } from './sidebar/sidebar.module';\nimport { HeaderModule } from './header/header.module';\nimport { SharedModule } from '@shared/shared.module';\nimport { ErrorHandlerService } from '@shared/services/logging/error-handler.service';\n\n\n@NgModule({\n declarations: [],\n imports: [\n SharedModule,\n HeaderModule,\n SidebarModule\n ],\n exports: [\n HeaderModule,\n SidebarModule\n ],\n providers: [\n { provide: ErrorHandler, useClass: ErrorHandlerService }\n ]\n})\nexport class CoreModule {\n constructor(@Optional() @SkipSelf() core: CoreModule) {\n if (core) {\n throw new Error('Core Module Already Loaded.');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '@shared/shared.module';\nimport { CareModule } from '@care/care.module';\nimport { HomeModule } from '@views/home/home.module';\nimport { SubmitModule } from './submit/submit.module';\nimport { TrackModule } from '@track/track.module';\nimport { ImproveModule } from './improve/improve.module';\nimport { EulaAgreementComponent } from './eula-agreement/eula-agreement.component';\nimport { TimeoutComponent } from './timeout/timeout.component';\nimport { SignoutComponent } from './signout/signout.component';\nimport { AutoLoginComponent } from './auto-lopgin/auto-login.component';\nimport { NoAuthComponent } from './no-auth/no-auth.component';\nimport { RootComponent } from './root/root.component';\n\n@NgModule({\n declarations: [EulaAgreementComponent, TimeoutComponent, SignoutComponent, AutoLoginComponent, NoAuthComponent, RootComponent],\n imports: [\n SharedModule,\n CareModule,\n HomeModule,\n SubmitModule,\n TrackModule,\n ImproveModule,\n ],\n exports: []\n})\nexport class ViewsModule { }\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '@shared/shared.module';\nimport { HelpPanelComponent } from './help-panel.component';\n\nimport { MarkdownModule } from 'ngx-markdown';\n\n@NgModule({\n declarations: [HelpPanelComponent],\n imports: [\n SharedModule,\n MarkdownModule.forChild()\n ],\n exports: [HelpPanelComponent]\n})\nexport class HelpPanelModule { }\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { Injectable,Inject } from '@angular/core';\nimport { HttpClient,HttpResponse, HttpHeaders, HttpErrorResponse, HttpInterceptor ,HttpHandler,HttpEvent, HttpRequest} from '@angular/common/http';\nimport { AuthService } from '../auth-service/auth.service';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\n\n\n@Injectable({ providedIn: 'root' })\nexport class AuthInterceptor implements HttpInterceptor {\n //private secureRoutes = ['http://my.route.io/secureapi'];\n\n constructor(private authService: AuthService, @Inject('secureRoutes')private secureRoutes:any) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n // Ensure we send the token only to routes which are secured\n // if (!this.secureRoutes.find((x) => req.url.startsWith(x))) {\n // return next.handle(req);\n //}\n const token = this.getToken(req.url);\n if (!!token) {\n req = req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n }\n });\n }\n return next.handle(req);\n }\n\n private getToken(url:string):string{\n let token:string;\n const item = this.secureRoutes.find(item=>item.url===url);\n\n if (item?.tokenType === 'idp_access_token')\n token = this.authService.idp_access_token;\n else if (item?.tokenType === 'idToken' ||\n item?.tokenType === 'idtokenAndSubId' ||\n url.indexOf(environment.apiBaseUrl) > -1 ||\n url.indexOf(environment.trackApiUrl) > -1 || // to move subcription Id here too\n url.indexOf(environment.userDetailApiUrl) > -1)\n token = this.authService.IdToken;\n\n return token;\n }\n}\nexport const authInterceptorProviders = [\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }\n ];\n","import { print } from 'graphql';\nimport * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport { ApolloLink, Observable as Observable$1 } from '@apollo/client/core';\nimport { Observable } from 'rxjs';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { BatchLink } from '@apollo/client/link/batch';\n\nconst fetch = (req, httpClient, extractFiles) => {\n const shouldUseBody = ['POST', 'PUT', 'PATCH'].indexOf(req.method.toUpperCase()) !== -1;\n const shouldStringify = (param) => ['variables', 'extensions'].indexOf(param.toLowerCase()) !== -1;\n const isBatching = req.body.length;\n let shouldUseMultipart = req.options && req.options.useMultipart;\n let multipartInfo;\n if (shouldUseMultipart) {\n if (isBatching) {\n return new Observable(observer => observer.error(new Error('File upload is not available when combined with Batching')));\n }\n if (!shouldUseBody) {\n return new Observable(observer => observer.error(new Error('File upload is not available when GET is used')));\n }\n if (!extractFiles) {\n return new Observable(observer => observer.error(new Error(`To use File upload you need to pass \"extractFiles\" function from \"extract-files\" library to HttpLink's options`)));\n }\n multipartInfo = extractFiles(req.body);\n shouldUseMultipart = !!multipartInfo.files.size;\n }\n // `body` for some, `params` for others\n let bodyOrParams = {};\n if (isBatching) {\n if (!shouldUseBody) {\n return new Observable(observer => observer.error(new Error('Batching is not available for GET requests')));\n }\n bodyOrParams = {\n body: req.body,\n };\n }\n else {\n const body = shouldUseMultipart ? multipartInfo.clone : req.body;\n if (shouldUseBody) {\n bodyOrParams = {\n body,\n };\n }\n else {\n const params = Object.keys(req.body).reduce((obj, param) => {\n const value = req.body[param];\n obj[param] = shouldStringify(param) ? JSON.stringify(value) : value;\n return obj;\n }, {});\n bodyOrParams = { params: params };\n }\n }\n if (shouldUseMultipart && shouldUseBody) {\n const form = new FormData();\n form.append('operations', JSON.stringify(bodyOrParams.body));\n const map = {};\n const files = multipartInfo.files;\n let i = 0;\n files.forEach(paths => {\n map[++i] = paths;\n });\n form.append('map', JSON.stringify(map));\n i = 0;\n files.forEach((_, file) => {\n form.append(++i + '', file, file.name);\n });\n bodyOrParams.body = form;\n }\n // create a request\n return httpClient.request(req.method, req.url, {\n observe: 'response',\n responseType: 'json',\n reportProgress: false,\n ...bodyOrParams,\n ...req.options,\n });\n};\nconst mergeHeaders = (source, destination) => {\n if (source && destination) {\n const merged = destination\n .keys()\n .reduce((headers, name) => headers.set(name, destination.getAll(name)), source);\n return merged;\n }\n return destination || source;\n};\nfunction prioritize(...values) {\n const picked = values.find(val => typeof val !== 'undefined');\n if (typeof picked === 'undefined') {\n return values[values.length - 1];\n }\n return picked;\n}\nfunction createHeadersWithClientAwareness(context) {\n // `apollographql-client-*` headers are automatically set if a\n // `clientAwareness` object is found in the context. These headers are\n // set first, followed by the rest of the headers pulled from\n // `context.headers`.\n let headers = context.headers && context.headers instanceof HttpHeaders\n ? context.headers\n : new HttpHeaders(context.headers);\n if (context.clientAwareness) {\n const { name, version } = context.clientAwareness;\n // If desired, `apollographql-client-*` headers set by\n // the `clientAwareness` object can be overridden by\n // `apollographql-client-*` headers set in `context.headers`.\n if (name && !headers.has('apollographql-client-name')) {\n headers = headers.set('apollographql-client-name', name);\n }\n if (version && !headers.has('apollographql-client-version')) {\n headers = headers.set('apollographql-client-version', version);\n }\n }\n return headers;\n}\n\n// XXX find a better name for it\nclass HttpLinkHandler extends ApolloLink {\n httpClient;\n options;\n requester;\n print = print;\n constructor(httpClient, options) {\n super();\n this.httpClient = httpClient;\n this.options = options;\n if (this.options.operationPrinter) {\n this.print = this.options.operationPrinter;\n }\n this.requester = (operation) => new Observable$1((observer) => {\n const context = operation.getContext();\n // decides which value to pick, Context, Options or to just use the default\n const pick = (key, init) => {\n return prioritize(context[key], this.options[key], init);\n };\n let method = pick('method', 'POST');\n const includeQuery = pick('includeQuery', true);\n const includeExtensions = pick('includeExtensions', false);\n const url = pick('uri', 'graphql');\n const withCredentials = pick('withCredentials');\n const useMultipart = pick('useMultipart');\n const useGETForQueries = this.options.useGETForQueries === true;\n const isQuery = operation.query.definitions.some(def => def.kind === 'OperationDefinition' && def.operation === 'query');\n if (useGETForQueries && isQuery) {\n method = 'GET';\n }\n const req = {\n method,\n url: typeof url === 'function' ? url(operation) : url,\n body: {\n operationName: operation.operationName,\n variables: operation.variables,\n },\n options: {\n withCredentials,\n useMultipart,\n headers: this.options.headers,\n },\n };\n if (includeExtensions) {\n req.body.extensions = operation.extensions;\n }\n if (includeQuery) {\n req.body.query = this.print(operation.query);\n }\n const headers = createHeadersWithClientAwareness(context);\n req.options.headers = mergeHeaders(req.options.headers, headers);\n const sub = fetch(req, this.httpClient, this.options.extractFiles).subscribe({\n next: response => {\n operation.setContext({ response });\n observer.next(response.body);\n },\n error: err => observer.error(err),\n complete: () => observer.complete(),\n });\n return () => {\n if (!sub.closed) {\n sub.unsubscribe();\n }\n };\n });\n }\n request(op) {\n return this.requester(op);\n }\n}\nclass HttpLink {\n httpClient;\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n create(options) {\n return new HttpLinkHandler(this.httpClient, options);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpLink, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpLink, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpLink, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });\n\nconst defaults = {\n batchInterval: 10,\n batchMax: 10,\n uri: 'graphql',\n method: 'POST',\n};\nclass HttpBatchLinkHandler extends ApolloLink {\n httpClient;\n options;\n batcher;\n batchInterval;\n batchMax;\n print = print;\n constructor(httpClient, options) {\n super();\n this.httpClient = httpClient;\n this.options = options;\n this.batchInterval = options.batchInterval || defaults.batchInterval;\n this.batchMax = options.batchMax || defaults.batchMax;\n if (this.options.operationPrinter) {\n this.print = this.options.operationPrinter;\n }\n const batchHandler = (operations) => {\n return new Observable$1((observer) => {\n const body = this.createBody(operations);\n const headers = this.createHeaders(operations);\n const { method, uri, withCredentials } = this.createOptions(operations);\n if (typeof uri === 'function') {\n throw new Error(`Option 'uri' is a function, should be a string`);\n }\n const req = {\n method,\n url: uri,\n body: body,\n options: {\n withCredentials,\n headers,\n },\n };\n const sub = fetch(req, this.httpClient, () => {\n throw new Error('File upload is not available when combined with Batching');\n }).subscribe({\n next: result => observer.next(result.body),\n error: err => observer.error(err),\n complete: () => observer.complete(),\n });\n return () => {\n if (!sub.closed) {\n sub.unsubscribe();\n }\n };\n });\n };\n const batchKey = options.batchKey ||\n ((operation) => {\n return this.createBatchKey(operation);\n });\n this.batcher = new BatchLink({\n batchInterval: this.batchInterval,\n batchMax: this.batchMax,\n batchKey,\n batchHandler,\n });\n }\n createOptions(operations) {\n const context = operations[0].getContext();\n return {\n method: prioritize(context.method, this.options.method, defaults.method),\n uri: prioritize(context.uri, this.options.uri, defaults.uri),\n withCredentials: prioritize(context.withCredentials, this.options.withCredentials),\n };\n }\n createBody(operations) {\n return operations.map(operation => {\n const includeExtensions = prioritize(operation.getContext().includeExtensions, this.options.includeExtensions, false);\n const includeQuery = prioritize(operation.getContext().includeQuery, this.options.includeQuery, true);\n const body = {\n operationName: operation.operationName,\n variables: operation.variables,\n };\n if (includeExtensions) {\n body.extensions = operation.extensions;\n }\n if (includeQuery) {\n body.query = this.print(operation.query);\n }\n return body;\n });\n }\n createHeaders(operations) {\n return operations.reduce((headers, operation) => {\n return mergeHeaders(headers, operation.getContext().headers);\n }, createHeadersWithClientAwareness({\n headers: this.options.headers,\n clientAwareness: operations[0]?.getContext()?.clientAwareness,\n }));\n }\n createBatchKey(operation) {\n const context = operation.getContext();\n if (context.skipBatching) {\n return Math.random().toString(36).substr(2, 9);\n }\n const headers = context.headers && context.headers.keys().map((k) => context.headers.get(k));\n const opts = JSON.stringify({\n includeQuery: context.includeQuery,\n includeExtensions: context.includeExtensions,\n headers,\n });\n return prioritize(context.uri, this.options.uri) + opts;\n }\n request(op) {\n return this.batcher.request(op);\n }\n}\nclass HttpBatchLink {\n httpClient;\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n create(options) {\n return new HttpBatchLinkHandler(this.httpClient, options);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpBatchLink, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpBatchLink, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpBatchLink, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });\n\n// http\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { HttpBatchLink, HttpBatchLinkHandler, HttpLink, HttpLinkHandler };\n","import { __assign, __rest } from \"tslib\";\nimport { wrap } from \"optimism\";\nimport { Observable, cacheSizes, getFragmentQueryDocument, mergeDeepArray, } from \"../../utilities/index.js\";\nimport { WeakCache } from \"@wry/caches\";\nimport { getApolloCacheMemoryInternals } from \"../../utilities/caching/getMemoryInternals.js\";\nimport { equalByQuery } from \"../../core/equalByQuery.js\";\nvar ApolloCache = /** @class */ (function () {\n function ApolloCache() {\n this.assumeImmutableResults = false;\n // Make sure we compute the same (===) fragment query document every\n // time we receive the same fragment in readFragment.\n this.getFragmentDoc = wrap(getFragmentQueryDocument, {\n max: cacheSizes[\"cache.fragmentQueryDocuments\"] ||\n 1000 /* defaultCacheSizes[\"cache.fragmentQueryDocuments\"] */,\n cache: WeakCache,\n });\n }\n // Transactional API\n // The batch method is intended to replace/subsume both performTransaction\n // and recordOptimisticTransaction, but performTransaction came first, so we\n // provide a default batch implementation that's just another way of calling\n // performTransaction. Subclasses of ApolloCache (such as InMemoryCache) can\n // override the batch method to do more interesting things with its options.\n ApolloCache.prototype.batch = function (options) {\n var _this = this;\n var optimisticId = typeof options.optimistic === \"string\" ? options.optimistic\n : options.optimistic === false ? null\n : void 0;\n var updateResult;\n this.performTransaction(function () { return (updateResult = options.update(_this)); }, optimisticId);\n return updateResult;\n };\n ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n this.performTransaction(transaction, optimisticId);\n };\n // Optional API\n // Called once per input document, allowing the cache to make static changes\n // to the query, such as adding __typename fields.\n ApolloCache.prototype.transformDocument = function (document) {\n return document;\n };\n // Called before each ApolloLink request, allowing the cache to make dynamic\n // changes to the query, such as filling in missing fragment definitions.\n ApolloCache.prototype.transformForLink = function (document) {\n return document;\n };\n ApolloCache.prototype.identify = function (object) {\n return;\n };\n ApolloCache.prototype.gc = function () {\n return [];\n };\n ApolloCache.prototype.modify = function (options) {\n return false;\n };\n // DataProxy API\n ApolloCache.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { rootId: options.id || \"ROOT_QUERY\", optimistic: optimistic }));\n };\n /** {@inheritDoc @apollo/client!ApolloClient#watchFragment:member(1)} */\n ApolloCache.prototype.watchFragment = function (options) {\n var _this = this;\n var fragment = options.fragment, fragmentName = options.fragmentName, from = options.from, _a = options.optimistic, optimistic = _a === void 0 ? true : _a;\n var query = this.getFragmentDoc(fragment, fragmentName);\n var diffOptions = {\n returnPartialData: true,\n id: typeof from === \"string\" ? from : this.identify(from),\n query: query,\n optimistic: optimistic,\n };\n var latestDiff;\n return new Observable(function (observer) {\n return _this.watch(__assign(__assign({}, diffOptions), { immediate: true, callback: function (diff) {\n if (\n // Always ensure we deliver the first result\n latestDiff &&\n equalByQuery(query, { data: latestDiff === null || latestDiff === void 0 ? void 0 : latestDiff.result }, { data: diff.result })) {\n return;\n }\n var result = {\n data: diff.result,\n complete: !!diff.complete,\n };\n if (diff.missing) {\n result.missing = mergeDeepArray(diff.missing.map(function (error) { return error.missing; }));\n }\n latestDiff = diff;\n observer.next(result);\n } }));\n });\n };\n ApolloCache.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { query: this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));\n };\n ApolloCache.prototype.writeQuery = function (_a) {\n var id = _a.id, data = _a.data, options = __rest(_a, [\"id\", \"data\"]);\n return this.write(Object.assign(options, {\n dataId: id || \"ROOT_QUERY\",\n result: data,\n }));\n };\n ApolloCache.prototype.writeFragment = function (_a) {\n var id = _a.id, data = _a.data, fragment = _a.fragment, fragmentName = _a.fragmentName, options = __rest(_a, [\"id\", \"data\", \"fragment\", \"fragmentName\"]);\n return this.write(Object.assign(options, {\n query: this.getFragmentDoc(fragment, fragmentName),\n dataId: id,\n result: data,\n }));\n };\n ApolloCache.prototype.updateQuery = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readQuery(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeQuery(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n ApolloCache.prototype.updateFragment = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readFragment(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeFragment(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n return ApolloCache;\n}());\nexport { ApolloCache };\nif (globalThis.__DEV__ !== false) {\n ApolloCache.prototype.getMemoryInternals = getApolloCacheMemoryInternals;\n}\n","import { __extends } from \"tslib\";\nvar MissingFieldError = /** @class */ (function (_super) {\n __extends(MissingFieldError, _super);\n function MissingFieldError(message, path, query, variables) {\n var _a;\n // 'Error' breaks prototype chain here\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.path = path;\n _this.query = query;\n _this.variables = variables;\n if (Array.isArray(_this.path)) {\n _this.missing = _this.message;\n for (var i = _this.path.length - 1; i >= 0; --i) {\n _this.missing = (_a = {}, _a[_this.path[i]] = _this.missing, _a);\n }\n }\n else {\n _this.missing = _this.path;\n }\n // We're not using `Object.setPrototypeOf` here as it isn't fully supported\n // on Android (see issue #3236).\n _this.__proto__ = MissingFieldError.prototype;\n return _this;\n }\n return MissingFieldError;\n}(Error));\nexport { MissingFieldError };\n","import { isNonNullObject } from \"./objects.js\";\nfunction deepFreeze(value) {\n var workSet = new Set([value]);\n workSet.forEach(function (obj) {\n if (isNonNullObject(obj) && shallowFreeze(obj) === obj) {\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n if (isNonNullObject(obj[name]))\n workSet.add(obj[name]);\n });\n }\n });\n return value;\n}\nfunction shallowFreeze(obj) {\n if (globalThis.__DEV__ !== false && !Object.isFrozen(obj)) {\n try {\n Object.freeze(obj);\n }\n catch (e) {\n // Some types like Uint8Array and Node.js's Buffer cannot be frozen, but\n // they all throw a TypeError when you try, so we re-throw any exceptions\n // that are not TypeErrors, since that would be unexpected.\n if (e instanceof TypeError)\n return null;\n throw e;\n }\n }\n return obj;\n}\nexport function maybeDeepFreeze(obj) {\n if (globalThis.__DEV__ !== false) {\n deepFreeze(obj);\n }\n return obj;\n}\n","import { isReference, isField, DeepMerger, resultKeyNameFromField, shouldInclude, isNonNullObject, compact, createFragmentMap, getFragmentDefinitions, isArray, } from \"../../utilities/index.js\";\nexport var hasOwn = Object.prototype.hasOwnProperty;\nexport function isNullish(value) {\n return value === null || value === void 0;\n}\nexport { isArray };\nexport function defaultDataIdFromObject(_a, context) {\n var __typename = _a.__typename, id = _a.id, _id = _a._id;\n if (typeof __typename === \"string\") {\n if (context) {\n context.keyObject =\n !isNullish(id) ? { id: id }\n : !isNullish(_id) ? { _id: _id }\n : void 0;\n }\n // If there is no object.id, fall back to object._id.\n if (isNullish(id) && !isNullish(_id)) {\n id = _id;\n }\n if (!isNullish(id)) {\n return \"\".concat(__typename, \":\").concat(typeof id === \"number\" || typeof id === \"string\" ?\n id\n : JSON.stringify(id));\n }\n }\n}\nvar defaultConfig = {\n dataIdFromObject: defaultDataIdFromObject,\n addTypename: true,\n resultCaching: true,\n // Thanks to the shouldCanonizeResults helper, this should be the only line\n // you have to change to reenable canonization by default in the future.\n canonizeResults: false,\n};\nexport function normalizeConfig(config) {\n return compact(defaultConfig, config);\n}\nexport function shouldCanonizeResults(config) {\n var value = config.canonizeResults;\n return value === void 0 ? defaultConfig.canonizeResults : value;\n}\nexport function getTypenameFromStoreObject(store, objectOrReference) {\n return isReference(objectOrReference) ?\n store.get(objectOrReference.__ref, \"__typename\")\n : objectOrReference && objectOrReference.__typename;\n}\nexport var TypeOrFieldNameRegExp = /^[_a-z][_0-9a-z]*/i;\nexport function fieldNameFromStoreName(storeFieldName) {\n var match = storeFieldName.match(TypeOrFieldNameRegExp);\n return match ? match[0] : storeFieldName;\n}\nexport function selectionSetMatchesResult(selectionSet, result, variables) {\n if (isNonNullObject(result)) {\n return isArray(result) ?\n result.every(function (item) {\n return selectionSetMatchesResult(selectionSet, item, variables);\n })\n : selectionSet.selections.every(function (field) {\n if (isField(field) && shouldInclude(field, variables)) {\n var key = resultKeyNameFromField(field);\n return (hasOwn.call(result, key) &&\n (!field.selectionSet ||\n selectionSetMatchesResult(field.selectionSet, result[key], variables)));\n }\n // If the selection has been skipped with @skip(true) or\n // @include(false), it should not count against the matching. If\n // the selection is not a field, it must be a fragment (inline or\n // named). We will determine if selectionSetMatchesResult for that\n // fragment when we get to it, so for now we return true.\n return true;\n });\n }\n return false;\n}\nexport function storeValueIsStoreObject(value) {\n return isNonNullObject(value) && !isReference(value) && !isArray(value);\n}\nexport function makeProcessedFieldsMerger() {\n return new DeepMerger();\n}\nexport function extractFragmentContext(document, fragments) {\n // FragmentMap consisting only of fragments defined directly in document, not\n // including other fragments registered in the FragmentRegistry.\n var fragmentMap = createFragmentMap(getFragmentDefinitions(document));\n return {\n fragmentMap: fragmentMap,\n lookupFragment: function (name) {\n var def = fragmentMap[name];\n if (!def && fragments) {\n def = fragments.lookup(name);\n }\n return def || null;\n },\n };\n}\n","import { __assign, __extends, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { dep } from \"optimism\";\nimport { equal } from \"@wry/equality\";\nimport { Trie } from \"@wry/trie\";\nimport { isReference, makeReference, DeepMerger, maybeDeepFreeze, canUseWeakMap, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName } from \"./helpers.js\";\nvar DELETE = Object.create(null);\nvar delModifier = function () { return DELETE; };\nvar INVALIDATE = Object.create(null);\nvar EntityStore = /** @class */ (function () {\n function EntityStore(policies, group) {\n var _this = this;\n this.policies = policies;\n this.group = group;\n this.data = Object.create(null);\n // Maps root entity IDs to the number of times they have been retained, minus\n // the number of times they have been released. Retained entities keep other\n // entities they reference (even indirectly) from being garbage collected.\n this.rootIds = Object.create(null);\n // Lazily tracks { __ref: } strings contained by this.data[dataId].\n this.refs = Object.create(null);\n // Bound function that can be passed around to provide easy access to fields\n // of Reference objects as well as ordinary objects.\n this.getFieldValue = function (objectOrReference, storeFieldName) {\n return maybeDeepFreeze(isReference(objectOrReference) ?\n _this.get(objectOrReference.__ref, storeFieldName)\n : objectOrReference && objectOrReference[storeFieldName]);\n };\n // Returns true for non-normalized StoreObjects and non-dangling\n // References, indicating that readField(name, objOrRef) has a chance of\n // working. Useful for filtering out dangling references from lists.\n this.canRead = function (objOrRef) {\n return isReference(objOrRef) ?\n _this.has(objOrRef.__ref)\n : typeof objOrRef === \"object\";\n };\n // Bound function that converts an id or an object with a __typename and\n // primary key fields to a Reference object. If called with a Reference object,\n // that same Reference object is returned. Pass true for mergeIntoStore to persist\n // an object into the store.\n this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n if (typeof objOrIdOrRef === \"string\") {\n return makeReference(objOrIdOrRef);\n }\n if (isReference(objOrIdOrRef)) {\n return objOrIdOrRef;\n }\n var id = _this.policies.identify(objOrIdOrRef)[0];\n if (id) {\n var ref = makeReference(id);\n if (mergeIntoStore) {\n _this.merge(id, objOrIdOrRef);\n }\n return ref;\n }\n };\n }\n // Although the EntityStore class is abstract, it contains concrete\n // implementations of the various NormalizedCache interface methods that\n // are inherited by the Root and Layer subclasses.\n EntityStore.prototype.toObject = function () {\n return __assign({}, this.data);\n };\n EntityStore.prototype.has = function (dataId) {\n return this.lookup(dataId, true) !== void 0;\n };\n EntityStore.prototype.get = function (dataId, fieldName) {\n this.group.depend(dataId, fieldName);\n if (hasOwn.call(this.data, dataId)) {\n var storeObject = this.data[dataId];\n if (storeObject && hasOwn.call(storeObject, fieldName)) {\n return storeObject[fieldName];\n }\n }\n if (fieldName === \"__typename\" &&\n hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n return this.policies.rootTypenamesById[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.get(dataId, fieldName);\n }\n };\n EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n // The has method (above) calls lookup with dependOnExistence = true, so\n // that it can later be invalidated when we add or remove a StoreObject for\n // this dataId. Any consumer who cares about the contents of the StoreObject\n // should not rely on this dependency, since the contents could change\n // without the object being added or removed.\n if (dependOnExistence)\n this.group.depend(dataId, \"__exists\");\n if (hasOwn.call(this.data, dataId)) {\n return this.data[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.lookup(dataId, dependOnExistence);\n }\n if (this.policies.rootTypenamesById[dataId]) {\n return Object.create(null);\n }\n };\n EntityStore.prototype.merge = function (older, newer) {\n var _this = this;\n var dataId;\n // Convert unexpected references to ID strings.\n if (isReference(older))\n older = older.__ref;\n if (isReference(newer))\n newer = newer.__ref;\n var existing = typeof older === \"string\" ? this.lookup((dataId = older)) : older;\n var incoming = typeof newer === \"string\" ? this.lookup((dataId = newer)) : newer;\n // If newer was a string ID, but that ID was not defined in this store,\n // then there are no fields to be merged, so we're done.\n if (!incoming)\n return;\n invariant(typeof dataId === \"string\", 1);\n var merged = new DeepMerger(storeObjectReconciler).merge(existing, incoming);\n // Even if merged === existing, existing may have come from a lower\n // layer, so we always need to set this.data[dataId] on this level.\n this.data[dataId] = merged;\n if (merged !== existing) {\n delete this.refs[dataId];\n if (this.group.caching) {\n var fieldsToDirty_1 = Object.create(null);\n // If we added a new StoreObject where there was previously none, dirty\n // anything that depended on the existence of this dataId, such as the\n // EntityStore#has method.\n if (!existing)\n fieldsToDirty_1.__exists = 1;\n // Now invalidate dependents who called getFieldValue for any fields\n // that are changing as a result of this merge.\n Object.keys(incoming).forEach(function (storeFieldName) {\n if (!existing ||\n existing[storeFieldName] !== merged[storeFieldName]) {\n // Always dirty the full storeFieldName, which may include\n // serialized arguments following the fieldName prefix.\n fieldsToDirty_1[storeFieldName] = 1;\n // Also dirty fieldNameFromStoreName(storeFieldName) if it's\n // different from storeFieldName and this field does not have\n // keyArgs configured, because that means the cache can't make\n // any assumptions about how field values with the same field\n // name but different arguments might be interrelated, so it\n // must err on the side of invalidating all field values that\n // share the same short fieldName, regardless of arguments.\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName &&\n !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n fieldsToDirty_1[fieldName] = 1;\n }\n // If merged[storeFieldName] has become undefined, and this is the\n // Root layer, actually delete the property from the merged object,\n // which is guaranteed to have been created fresh in this method.\n if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n delete merged[storeFieldName];\n }\n }\n });\n if (fieldsToDirty_1.__typename &&\n !(existing && existing.__typename) &&\n // Since we return default root __typename strings\n // automatically from store.get, we don't need to dirty the\n // ROOT_QUERY.__typename field if merged.__typename is equal\n // to the default string (usually \"Query\").\n this.policies.rootTypenamesById[dataId] === merged.__typename) {\n delete fieldsToDirty_1.__typename;\n }\n Object.keys(fieldsToDirty_1).forEach(function (fieldName) {\n return _this.group.dirty(dataId, fieldName);\n });\n }\n }\n };\n EntityStore.prototype.modify = function (dataId, fields) {\n var _this = this;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var changedFields_1 = Object.create(null);\n var needToMerge_1 = false;\n var allDeleted_1 = true;\n var sharedDetails_1 = {\n DELETE: DELETE,\n INVALIDATE: INVALIDATE,\n isReference: isReference,\n toReference: this.toReference,\n canRead: this.canRead,\n readField: function (fieldNameOrOptions, from) {\n return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ?\n {\n fieldName: fieldNameOrOptions,\n from: from || makeReference(dataId),\n }\n : fieldNameOrOptions, { store: _this });\n },\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var fieldValue = storeObject[storeFieldName];\n if (fieldValue === void 0)\n return;\n var modify = typeof fields === \"function\" ? fields : (fields[storeFieldName] || fields[fieldName]);\n if (modify) {\n var newValue = modify === delModifier ? DELETE : (modify(maybeDeepFreeze(fieldValue), __assign(__assign({}, sharedDetails_1), { fieldName: fieldName, storeFieldName: storeFieldName, storage: _this.getStorage(dataId, storeFieldName) })));\n if (newValue === INVALIDATE) {\n _this.group.dirty(dataId, storeFieldName);\n }\n else {\n if (newValue === DELETE)\n newValue = void 0;\n if (newValue !== fieldValue) {\n changedFields_1[storeFieldName] = newValue;\n needToMerge_1 = true;\n fieldValue = newValue;\n if (globalThis.__DEV__ !== false) {\n var checkReference = function (ref) {\n if (_this.lookup(ref.__ref) === undefined) {\n globalThis.__DEV__ !== false && invariant.warn(2, ref);\n return true;\n }\n };\n if (isReference(newValue)) {\n checkReference(newValue);\n }\n else if (Array.isArray(newValue)) {\n // Warn about writing \"mixed\" arrays of Reference and non-Reference objects\n var seenReference = false;\n var someNonReference = void 0;\n for (var _i = 0, newValue_1 = newValue; _i < newValue_1.length; _i++) {\n var value = newValue_1[_i];\n if (isReference(value)) {\n seenReference = true;\n if (checkReference(value))\n break;\n }\n else {\n // Do not warn on primitive values, since those could never be represented\n // by a reference. This is a valid (albeit uncommon) use case.\n if (typeof value === \"object\" && !!value) {\n var id = _this.policies.identify(value)[0];\n // check if object could even be referenced, otherwise we are not interested in it for this warning\n if (id) {\n someNonReference = value;\n }\n }\n }\n if (seenReference && someNonReference !== undefined) {\n globalThis.__DEV__ !== false && invariant.warn(3, someNonReference);\n break;\n }\n }\n }\n }\n }\n }\n }\n if (fieldValue !== void 0) {\n allDeleted_1 = false;\n }\n });\n if (needToMerge_1) {\n this.merge(dataId, changedFields_1);\n if (allDeleted_1) {\n if (this instanceof Layer) {\n this.data[dataId] = void 0;\n }\n else {\n delete this.data[dataId];\n }\n this.group.dirty(dataId, \"__exists\");\n }\n return true;\n }\n }\n return false;\n };\n // If called with only one argument, removes the entire entity\n // identified by dataId. If called with a fieldName as well, removes all\n // fields of that entity whose names match fieldName according to the\n // fieldNameFromStoreName helper function. If called with a fieldName\n // and variables, removes all fields of that entity whose names match fieldName\n // and whose arguments when cached exactly match the variables passed.\n EntityStore.prototype.delete = function (dataId, fieldName, args) {\n var _a;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var typename = this.getFieldValue(storeObject, \"__typename\");\n var storeFieldName = fieldName && args ?\n this.policies.getStoreFieldName({ typename: typename, fieldName: fieldName, args: args })\n : fieldName;\n return this.modify(dataId, storeFieldName ? (_a = {},\n _a[storeFieldName] = delModifier,\n _a) : delModifier);\n }\n return false;\n };\n EntityStore.prototype.evict = function (options, limit) {\n var evicted = false;\n if (options.id) {\n if (hasOwn.call(this.data, options.id)) {\n evicted = this.delete(options.id, options.fieldName, options.args);\n }\n if (this instanceof Layer && this !== limit) {\n evicted = this.parent.evict(options, limit) || evicted;\n }\n // Always invalidate the field to trigger rereading of watched\n // queries, even if no cache data was modified by the eviction,\n // because queries may depend on computed fields with custom read\n // functions, whose values are not stored in the EntityStore.\n if (options.fieldName || evicted) {\n this.group.dirty(options.id, options.fieldName || \"__exists\");\n }\n }\n return evicted;\n };\n EntityStore.prototype.clear = function () {\n this.replace(null);\n };\n EntityStore.prototype.extract = function () {\n var _this = this;\n var obj = this.toObject();\n var extraRootIds = [];\n this.getRootIdSet().forEach(function (id) {\n if (!hasOwn.call(_this.policies.rootTypenamesById, id)) {\n extraRootIds.push(id);\n }\n });\n if (extraRootIds.length) {\n obj.__META = { extraRootIds: extraRootIds.sort() };\n }\n return obj;\n };\n EntityStore.prototype.replace = function (newData) {\n var _this = this;\n Object.keys(this.data).forEach(function (dataId) {\n if (!(newData && hasOwn.call(newData, dataId))) {\n _this.delete(dataId);\n }\n });\n if (newData) {\n var __META = newData.__META, rest_1 = __rest(newData, [\"__META\"]);\n Object.keys(rest_1).forEach(function (dataId) {\n _this.merge(dataId, rest_1[dataId]);\n });\n if (__META) {\n __META.extraRootIds.forEach(this.retain, this);\n }\n }\n };\n EntityStore.prototype.retain = function (rootId) {\n return (this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1);\n };\n EntityStore.prototype.release = function (rootId) {\n if (this.rootIds[rootId] > 0) {\n var count = --this.rootIds[rootId];\n if (!count)\n delete this.rootIds[rootId];\n return count;\n }\n return 0;\n };\n // Return a Set of all the ID strings that have been retained by\n // this layer/root *and* any layers/roots beneath it.\n EntityStore.prototype.getRootIdSet = function (ids) {\n if (ids === void 0) { ids = new Set(); }\n Object.keys(this.rootIds).forEach(ids.add, ids);\n if (this instanceof Layer) {\n this.parent.getRootIdSet(ids);\n }\n else {\n // Official singleton IDs like ROOT_QUERY and ROOT_MUTATION are\n // always considered roots for garbage collection, regardless of\n // their retainment counts in this.rootIds.\n Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n }\n return ids;\n };\n // The goal of garbage collection is to remove IDs from the Root layer of the\n // store that are no longer reachable starting from any IDs that have been\n // explicitly retained (see retain and release, above). Returns an array of\n // dataId strings that were removed from the store.\n EntityStore.prototype.gc = function () {\n var _this = this;\n var ids = this.getRootIdSet();\n var snapshot = this.toObject();\n ids.forEach(function (id) {\n if (hasOwn.call(snapshot, id)) {\n // Because we are iterating over an ECMAScript Set, the IDs we add here\n // will be visited in later iterations of the forEach loop only if they\n // were not previously contained by the Set.\n Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n // By removing IDs from the snapshot object here, we protect them from\n // getting removed from the root store layer below.\n delete snapshot[id];\n }\n });\n var idsToRemove = Object.keys(snapshot);\n if (idsToRemove.length) {\n var root_1 = this;\n while (root_1 instanceof Layer)\n root_1 = root_1.parent;\n idsToRemove.forEach(function (id) { return root_1.delete(id); });\n }\n return idsToRemove;\n };\n EntityStore.prototype.findChildRefIds = function (dataId) {\n if (!hasOwn.call(this.refs, dataId)) {\n var found_1 = (this.refs[dataId] = Object.create(null));\n var root = this.data[dataId];\n if (!root)\n return found_1;\n var workSet_1 = new Set([root]);\n // Within the store, only arrays and objects can contain child entity\n // references, so we can prune the traversal using this predicate:\n workSet_1.forEach(function (obj) {\n if (isReference(obj)) {\n found_1[obj.__ref] = true;\n // In rare cases, a { __ref } Reference object may have other fields.\n // This often indicates a mismerging of References with StoreObjects,\n // but garbage collection should not be fooled by a stray __ref\n // property in a StoreObject (ignoring all the other fields just\n // because the StoreObject looks like a Reference). To avoid this\n // premature termination of findChildRefIds recursion, we fall through\n // to the code below, which will handle any other properties of obj.\n }\n if (isNonNullObject(obj)) {\n Object.keys(obj).forEach(function (key) {\n var child = obj[key];\n // No need to add primitive values to the workSet, since they cannot\n // contain reference objects.\n if (isNonNullObject(child)) {\n workSet_1.add(child);\n }\n });\n }\n });\n }\n return this.refs[dataId];\n };\n EntityStore.prototype.makeCacheKey = function () {\n return this.group.keyMaker.lookupArray(arguments);\n };\n return EntityStore;\n}());\nexport { EntityStore };\n// A single CacheGroup represents a set of one or more EntityStore objects,\n// typically the Root store in a CacheGroup by itself, and all active Layer\n// stores in a group together. A single EntityStore object belongs to only\n// one CacheGroup, store.group. The CacheGroup is responsible for tracking\n// dependencies, so store.group is helpful for generating unique keys for\n// cached results that need to be invalidated when/if those dependencies\n// change. If we used the EntityStore objects themselves as cache keys (that\n// is, store rather than store.group), the cache would become unnecessarily\n// fragmented by all the different Layer objects. Instead, the CacheGroup\n// approach allows all optimistic Layer objects in the same linked list to\n// belong to one CacheGroup, with the non-optimistic Root object belonging\n// to another CacheGroup, allowing resultCaching dependencies to be tracked\n// separately for optimistic and non-optimistic entity data.\nvar CacheGroup = /** @class */ (function () {\n function CacheGroup(caching, parent) {\n if (parent === void 0) { parent = null; }\n this.caching = caching;\n this.parent = parent;\n this.d = null;\n this.resetCaching();\n }\n CacheGroup.prototype.resetCaching = function () {\n this.d = this.caching ? dep() : null;\n this.keyMaker = new Trie(canUseWeakMap);\n };\n CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n if (this.d) {\n this.d(makeDepKey(dataId, storeFieldName));\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName) {\n // Fields with arguments that contribute extra identifying\n // information to the fieldName (thus forming the storeFieldName)\n // depend not only on the full storeFieldName but also on the\n // short fieldName, so the field can be invalidated using either\n // level of specificity.\n this.d(makeDepKey(dataId, fieldName));\n }\n if (this.parent) {\n this.parent.depend(dataId, storeFieldName);\n }\n }\n };\n CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n if (this.d) {\n this.d.dirty(makeDepKey(dataId, storeFieldName), \n // When storeFieldName === \"__exists\", that means the entity identified\n // by dataId has either disappeared from the cache or was newly added,\n // so the result caching system would do well to \"forget everything it\n // knows\" about that object. To achieve that kind of invalidation, we\n // not only dirty the associated result cache entry, but also remove it\n // completely from the dependency graph. For the optimism implementation\n // details, see https://github.com/benjamn/optimism/pull/195.\n storeFieldName === \"__exists\" ? \"forget\" : \"setDirty\");\n }\n };\n return CacheGroup;\n}());\nfunction makeDepKey(dataId, storeFieldName) {\n // Since field names cannot have '#' characters in them, this method\n // of joining the field name and the ID should be unambiguous, and much\n // cheaper than JSON.stringify([dataId, fieldName]).\n return storeFieldName + \"#\" + dataId;\n}\nexport function maybeDependOnExistenceOfEntity(store, entityId) {\n if (supportsResultCaching(store)) {\n // We use this pseudo-field __exists elsewhere in the EntityStore code to\n // represent changes in the existence of the entity object identified by\n // entityId. This dependency gets reliably dirtied whenever an object with\n // this ID is deleted (or newly created) within this group, so any result\n // cache entries (for example, StoreReader#executeSelectionSet results) that\n // depend on __exists for this entityId will get dirtied as well, leading to\n // the eventual recomputation (instead of reuse) of those result objects the\n // next time someone reads them from the cache.\n store.group.depend(entityId, \"__exists\");\n }\n}\n(function (EntityStore) {\n // Refer to this class as EntityStore.Root outside this namespace.\n var Root = /** @class */ (function (_super) {\n __extends(Root, _super);\n function Root(_a) {\n var policies = _a.policies, _b = _a.resultCaching, resultCaching = _b === void 0 ? true : _b, seed = _a.seed;\n var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n _this.stump = new Stump(_this);\n _this.storageTrie = new Trie(canUseWeakMap);\n if (seed)\n _this.replace(seed);\n return _this;\n }\n Root.prototype.addLayer = function (layerId, replay) {\n // Adding an optimistic Layer on top of the Root actually adds the Layer\n // on top of the Stump, so the Stump always comes between the Root and\n // any Layer objects that we've added.\n return this.stump.addLayer(layerId, replay);\n };\n Root.prototype.removeLayer = function () {\n // Never remove the root layer.\n return this;\n };\n Root.prototype.getStorage = function () {\n return this.storageTrie.lookupArray(arguments);\n };\n return Root;\n }(EntityStore));\n EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\n// Not exported, since all Layer instances are created by the addLayer method\n// of the EntityStore.Root class.\nvar Layer = /** @class */ (function (_super) {\n __extends(Layer, _super);\n function Layer(id, parent, replay, group) {\n var _this = _super.call(this, parent.policies, group) || this;\n _this.id = id;\n _this.parent = parent;\n _this.replay = replay;\n _this.group = group;\n replay(_this);\n return _this;\n }\n Layer.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.group);\n };\n Layer.prototype.removeLayer = function (layerId) {\n var _this = this;\n // Remove all instances of the given id, not just the first one.\n var parent = this.parent.removeLayer(layerId);\n if (layerId === this.id) {\n if (this.group.caching) {\n // Dirty every ID we're removing. Technically we might be able to avoid\n // dirtying fields that have values in higher layers, but we don't have\n // easy access to higher layers here, and we're about to recreate those\n // layers anyway (see parent.addLayer below).\n Object.keys(this.data).forEach(function (dataId) {\n var ownStoreObject = _this.data[dataId];\n var parentStoreObject = parent[\"lookup\"](dataId);\n if (!parentStoreObject) {\n // The StoreObject identified by dataId was defined in this layer\n // but will be undefined in the parent layer, so we can delete the\n // whole entity using this.delete(dataId). Since we're about to\n // throw this layer away, the only goal of this deletion is to dirty\n // the removed fields.\n _this.delete(dataId);\n }\n else if (!ownStoreObject) {\n // This layer had an entry for dataId but it was undefined, which\n // means the entity was deleted in this layer, and it's about to\n // become undeleted when we remove this layer, so we need to dirty\n // all fields that are about to be reexposed.\n _this.group.dirty(dataId, \"__exists\");\n Object.keys(parentStoreObject).forEach(function (storeFieldName) {\n _this.group.dirty(dataId, storeFieldName);\n });\n }\n else if (ownStoreObject !== parentStoreObject) {\n // If ownStoreObject is not exactly the same as parentStoreObject,\n // dirty any fields whose values will change as a result of this\n // removal.\n Object.keys(ownStoreObject).forEach(function (storeFieldName) {\n if (!equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {\n _this.group.dirty(dataId, storeFieldName);\n }\n });\n }\n });\n }\n return parent;\n }\n // No changes are necessary if the parent chain remains identical.\n if (parent === this.parent)\n return this;\n // Recreate this layer on top of the new parent.\n return parent.addLayer(this.id, this.replay);\n };\n Layer.prototype.toObject = function () {\n return __assign(__assign({}, this.parent.toObject()), this.data);\n };\n Layer.prototype.findChildRefIds = function (dataId) {\n var fromParent = this.parent.findChildRefIds(dataId);\n return hasOwn.call(this.data, dataId) ? __assign(__assign({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n };\n Layer.prototype.getStorage = function () {\n var p = this.parent;\n while (p.parent)\n p = p.parent;\n return p.getStorage.apply(p, \n // @ts-expect-error\n arguments);\n };\n return Layer;\n}(EntityStore));\n// Represents a Layer permanently installed just above the Root, which allows\n// reading optimistically (and registering optimistic dependencies) even when\n// no optimistic layers are currently active. The stump.group CacheGroup object\n// is shared by any/all Layer objects added on top of the Stump.\nvar Stump = /** @class */ (function (_super) {\n __extends(Stump, _super);\n function Stump(root) {\n return _super.call(this, \"EntityStore.Stump\", root, function () { }, new CacheGroup(root.group.caching, root.group)) || this;\n }\n Stump.prototype.removeLayer = function () {\n // Never remove the Stump layer.\n return this;\n };\n Stump.prototype.merge = function (older, newer) {\n // We never want to write any data into the Stump, so we forward any merge\n // calls to the Root instead. Another option here would be to throw an\n // exception, but the toReference(object, true) function can sometimes\n // trigger Stump writes (which used to be Root writes, before the Stump\n // concept was introduced).\n return this.parent.merge(older, newer);\n };\n return Stump;\n}(Layer));\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n var existingValue = existingObject[property];\n var incomingValue = incomingObject[property];\n // Wherever there is a key collision, prefer the incoming value, unless\n // it is deeply equal to the existing value. It's worth checking deep\n // equality here (even though blindly returning incoming would be\n // logically correct) because preserving the referential identity of\n // existing data can prevent needless rereading and rerendering.\n return equal(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nexport function supportsResultCaching(store) {\n // When result caching is disabled, store.depend will be null.\n return !!(store instanceof EntityStore && store.group.caching);\n}\n","import { __assign } from \"tslib\";\nimport { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet, isNonNullObject as isObjectOrArray, } from \"../../utilities/index.js\";\nimport { isArray } from \"./helpers.js\";\nfunction shallowCopy(value) {\n if (isObjectOrArray(value)) {\n return isArray(value) ?\n value.slice(0)\n : __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n return value;\n}\n// When programmers talk about the \"canonical form\" of an object, they\n// usually have the following meaning in mind, which I've copied from\n// https://en.wiktionary.org/wiki/canonical_form:\n//\n// 1. A standard or normal presentation of a mathematical entity [or\n// object]. A canonical form is an element of a set of representatives\n// of equivalence classes of forms such that there is a function or\n// procedure which projects every element of each equivalence class\n// onto that one element, the canonical form of that equivalence\n// class. The canonical form is expected to be simpler than the rest of\n// the forms in some way.\n//\n// That's a long-winded way of saying any two objects that have the same\n// canonical form may be considered equivalent, even if they are !==,\n// which usually means the objects are structurally equivalent (deeply\n// equal), but don't necessarily use the same memory.\n//\n// Like a literary or musical canon, this ObjectCanon class represents a\n// collection of unique canonical items (JavaScript objects), with the\n// important property that canon.admit(a) === canon.admit(b) if a and b\n// are deeply equal to each other. In terms of the definition above, the\n// canon.admit method is the \"function or procedure which projects every\"\n// object \"onto that one element, the canonical form.\"\n//\n// In the worst case, the canonicalization process may involve looking at\n// every property in the provided object tree, so it takes the same order\n// of time as deep equality checking. Fortunately, already-canonicalized\n// objects are returned immediately from canon.admit, so the presence of\n// canonical subtrees tends to speed up canonicalization.\n//\n// Since consumers of canonical objects can check for deep equality in\n// constant time, canonicalizing cache results can massively improve the\n// performance of application code that skips re-rendering unchanged\n// results, such as \"pure\" UI components in a framework like React.\n//\n// Of course, since canonical objects may be shared widely between\n// unrelated consumers, it's important to think of them as immutable, even\n// though they are not actually frozen with Object.freeze in production,\n// due to the extra performance overhead that comes with frozen objects.\n//\n// Custom scalar objects whose internal class name is neither Array nor\n// Object can be included safely in the admitted tree, but they will not\n// be replaced with a canonical version (to put it another way, they are\n// assumed to be canonical already).\n//\n// If we ignore custom objects, no detection of cycles or repeated object\n// references is currently required by the StoreReader class, since\n// GraphQL result objects are JSON-serializable trees (and thus contain\n// neither cycles nor repeated subtrees), so we can avoid the complexity\n// of keeping track of objects we've already seen during the recursion of\n// the admit method.\n//\n// In the future, we may consider adding additional cases to the switch\n// statement to handle other common object types, such as \"[object Date]\"\n// objects, as needed.\nvar ObjectCanon = /** @class */ (function () {\n function ObjectCanon() {\n // Set of all canonical objects this ObjectCanon has admitted, allowing\n // canon.admit to return previously-canonicalized objects immediately.\n this.known = new (canUseWeakSet ? WeakSet : Set)();\n // Efficient storage/lookup structure for canonical objects.\n this.pool = new Trie(canUseWeakMap);\n // Make the ObjectCanon assume this value has already been\n // canonicalized.\n this.passes = new WeakMap();\n // Arrays that contain the same elements in a different order can share\n // the same SortedKeysInfo object, to save memory.\n this.keysByJSON = new Map();\n // This has to come last because it depends on keysByJSON.\n this.empty = this.admit({});\n }\n ObjectCanon.prototype.isKnown = function (value) {\n return isObjectOrArray(value) && this.known.has(value);\n };\n ObjectCanon.prototype.pass = function (value) {\n if (isObjectOrArray(value)) {\n var copy = shallowCopy(value);\n this.passes.set(copy, value);\n return copy;\n }\n return value;\n };\n ObjectCanon.prototype.admit = function (value) {\n var _this = this;\n if (isObjectOrArray(value)) {\n var original = this.passes.get(value);\n if (original)\n return original;\n var proto = Object.getPrototypeOf(value);\n switch (proto) {\n case Array.prototype: {\n if (this.known.has(value))\n return value;\n var array = value.map(this.admit, this);\n // Arrays are looked up in the Trie using their recursively\n // canonicalized elements, and the known version of the array is\n // preserved as node.array.\n var node = this.pool.lookupArray(array);\n if (!node.array) {\n this.known.add((node.array = array));\n // Since canonical arrays may be shared widely between\n // unrelated consumers, it's important to regard them as\n // immutable, even if they are not frozen in production.\n if (globalThis.__DEV__ !== false) {\n Object.freeze(array);\n }\n }\n return node.array;\n }\n case null:\n case Object.prototype: {\n if (this.known.has(value))\n return value;\n var proto_1 = Object.getPrototypeOf(value);\n var array_1 = [proto_1];\n var keys = this.sortedKeys(value);\n array_1.push(keys.json);\n var firstValueIndex_1 = array_1.length;\n keys.sorted.forEach(function (key) {\n array_1.push(_this.admit(value[key]));\n });\n // Objects are looked up in the Trie by their prototype (which\n // is *not* recursively canonicalized), followed by a JSON\n // representation of their (sorted) keys, followed by the\n // sequence of recursively canonicalized values corresponding to\n // those keys. To keep the final results unambiguous with other\n // sequences (such as arrays that just happen to contain [proto,\n // keys.json, value1, value2, ...]), the known version of the\n // object is stored as node.object.\n var node = this.pool.lookupArray(array_1);\n if (!node.object) {\n var obj_1 = (node.object = Object.create(proto_1));\n this.known.add(obj_1);\n keys.sorted.forEach(function (key, i) {\n obj_1[key] = array_1[firstValueIndex_1 + i];\n });\n // Since canonical objects may be shared widely between\n // unrelated consumers, it's important to regard them as\n // immutable, even if they are not frozen in production.\n if (globalThis.__DEV__ !== false) {\n Object.freeze(obj_1);\n }\n }\n return node.object;\n }\n }\n }\n return value;\n };\n // It's worthwhile to cache the sorting of arrays of strings, since the\n // same initial unsorted arrays tend to be encountered many times.\n // Fortunately, we can reuse the Trie machinery to look up the sorted\n // arrays in linear time (which is faster than sorting large arrays).\n ObjectCanon.prototype.sortedKeys = function (obj) {\n var keys = Object.keys(obj);\n var node = this.pool.lookupArray(keys);\n if (!node.keys) {\n keys.sort();\n var json = JSON.stringify(keys);\n if (!(node.keys = this.keysByJSON.get(json))) {\n this.keysByJSON.set(json, (node.keys = { sorted: keys, json: json }));\n }\n }\n return node.keys;\n };\n return ObjectCanon;\n}());\nexport { ObjectCanon };\n","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { Kind } from \"graphql\";\nimport { wrap } from \"optimism\";\nimport { isField, resultKeyNameFromField, isReference, makeReference, shouldInclude, addTypenameToDocument, getDefaultValues, getMainDefinition, getQueryDefinition, getFragmentFromSelection, maybeDeepFreeze, mergeDeepArray, DeepMerger, isNonNullObject, canUseWeakMap, compact, canonicalStringify, cacheSizes, } from \"../../utilities/index.js\";\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching, } from \"./entityStore.js\";\nimport { isArray, extractFragmentContext, getTypenameFromStoreObject, shouldCanonizeResults, } from \"./helpers.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { ObjectCanon } from \"./object-canon.js\";\nfunction execSelectionSetKeyArgs(options) {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n // We split out this property so we can pass different values\n // independently without modifying options.context itself.\n options.context.canonizeResults,\n ];\n}\nvar StoreReader = /** @class */ (function () {\n function StoreReader(config) {\n var _this = this;\n this.knownResults = new (canUseWeakMap ? WeakMap : Map)();\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config),\n });\n this.canon = config.canon || new ObjectCanon();\n // memoized functions in this class will be \"garbage-collected\"\n // by recreating the whole `StoreReader` in\n // `InMemoryCache.resetResultsCache`\n // (triggered from `InMemoryCache.gc` with `resetResultCache: true`)\n this.executeSelectionSet = wrap(function (options) {\n var _a;\n var canonizeResults = options.context.canonizeResults;\n var peekArgs = execSelectionSetKeyArgs(options);\n // Negate this boolean option so we can find out if we've already read\n // this result using the other boolean value.\n peekArgs[3] = !canonizeResults;\n var other = (_a = _this.executeSelectionSet).peek.apply(_a, peekArgs);\n if (other) {\n if (canonizeResults) {\n return __assign(__assign({}, other), { \n // If we previously read this result without canonizing it, we can\n // reuse that result simply by canonizing it now.\n result: _this.canon.admit(other.result) });\n }\n // If we previously read this result with canonization enabled, we can\n // return that canonized result as-is.\n return other;\n }\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n // Finally, if we didn't find any useful previous results, run the real\n // execSelectionSetImpl method with the given options.\n return _this.execSelectionSetImpl(options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.executeSelectionSet\"] ||\n 50000 /* defaultCacheSizes[\"inMemoryCache.executeSelectionSet\"] */,\n keyArgs: execSelectionSetKeyArgs,\n // Note that the parameters of makeCacheKey are determined by the\n // array returned by keyArgs.\n makeCacheKey: function (selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(selectionSet, isReference(parent) ? parent.__ref : parent, context.varString, canonizeResults);\n }\n },\n });\n this.executeSubSelectedArray = wrap(function (options) {\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.executeSubSelectedArray\"] ||\n 10000 /* defaultCacheSizes[\"inMemoryCache.executeSubSelectedArray\"] */,\n makeCacheKey: function (_a) {\n var field = _a.field, array = _a.array, context = _a.context;\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(field, array, context.varString);\n }\n },\n });\n }\n StoreReader.prototype.resetCanon = function () {\n this.canon = new ObjectCanon();\n };\n /**\n * Given a store and a query, return as much of the result as possible and\n * identify if any data was missing from the store.\n */\n StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n var store = _a.store, query = _a.query, _b = _a.rootId, rootId = _b === void 0 ? \"ROOT_QUERY\" : _b, variables = _a.variables, _c = _a.returnPartialData, returnPartialData = _c === void 0 ? true : _c, _d = _a.canonizeResults, canonizeResults = _d === void 0 ? this.config.canonizeResults : _d;\n var policies = this.config.cache.policies;\n variables = __assign(__assign({}, getDefaultValues(getQueryDefinition(query))), variables);\n var rootRef = makeReference(rootId);\n var execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: __assign({ store: store, query: query, policies: policies, variables: variables, varString: canonicalStringify(variables), canonizeResults: canonizeResults }, extractFragmentContext(query, this.config.fragments)),\n });\n var missing;\n if (execResult.missing) {\n // For backwards compatibility we still report an array of\n // MissingFieldError objects, even though there will only ever be at most\n // one of them, now that all missing field error messages are grouped\n // together in the execResult.missing tree.\n missing = [\n new MissingFieldError(firstMissing(execResult.missing), execResult.missing, query, variables),\n ];\n if (!returnPartialData) {\n throw missing[0];\n }\n }\n return {\n result: execResult.result,\n complete: !missing,\n missing: missing,\n };\n };\n StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n var latest = this.executeSelectionSet.peek(selectionSet, parent, context, \n // If result is canonical, then it could only have been previously\n // cached by the canonizing version of executeSelectionSet, so we can\n // avoid checking both possibilities here.\n this.canon.isKnown(result));\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n };\n // Uncached version of executeSelectionSet.\n StoreReader.prototype.execSelectionSetImpl = function (_a) {\n var _this = this;\n var selectionSet = _a.selectionSet, objectOrReference = _a.objectOrReference, enclosingRef = _a.enclosingRef, context = _a.context;\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: \"Dangling reference to missing \".concat(objectOrReference.__ref, \" object\"),\n };\n }\n var variables = context.variables, policies = context.policies, store = context.store;\n var typename = store.getFieldValue(objectOrReference, \"__typename\");\n var objectsToMerge = [];\n var missing;\n var missingMerger = new DeepMerger();\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n // Ensure we always include a default value for the __typename\n // field, if we have one, and this.config.addTypename is true. Note\n // that this field can be overridden by other merged objects.\n objectsToMerge.push({ __typename: typename });\n }\n function handleMissing(result, resultName) {\n var _a;\n if (result.missing) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = result.missing,\n _a));\n }\n return result.result;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a, _b;\n // Omit fields with directives @skip(if: ) or\n // @include(if: ).\n if (!shouldInclude(selection, variables))\n return;\n if (isField(selection)) {\n var fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n var resultName = resultKeyNameFromField(selection);\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = \"Can't find field '\".concat(selection.name.value, \"' on \").concat(isReference(objectOrReference) ?\n objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2)),\n _a));\n }\n }\n else if (isArray(fieldValue)) {\n if (fieldValue.length > 0) {\n fieldValue = handleMissing(_this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef: enclosingRef,\n context: context,\n }), resultName);\n }\n }\n else if (!selection.selectionSet) {\n // If the field does not have a selection set, then we handle it\n // as a scalar value. To keep this.canon from canonicalizing\n // this value, we use this.canon.pass to wrap fieldValue in a\n // Pass object that this.canon.admit will later unwrap as-is.\n if (context.canonizeResults) {\n fieldValue = _this.canon.pass(fieldValue);\n }\n }\n else if (fieldValue != null) {\n // In this case, because we know the field has a selection set,\n // it must be trying to query a GraphQLObjectType, which is why\n // fieldValue must be != null.\n fieldValue = handleMissing(_this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context: context,\n }), resultName);\n }\n if (fieldValue !== void 0) {\n objectsToMerge.push((_b = {}, _b[resultName] = fieldValue, _b));\n }\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw newInvariantError(9, selection.name.value);\n }\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n var result = mergeDeepArray(objectsToMerge);\n var finalResult = { result: result, missing: missing };\n var frozen = context.canonizeResults ?\n this.canon.admit(finalResult)\n // Since this.canon is normally responsible for freezing results (only in\n // development), freeze them manually if canonization is disabled.\n : maybeDeepFreeze(finalResult);\n // Store this result with its selection set so that we can quickly\n // recognize it again in the StoreReader#isFresh method.\n if (frozen.result) {\n this.knownResults.set(frozen.result, selectionSet);\n }\n return frozen;\n };\n // Uncached version of executeSubSelectedArray.\n StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n var _this = this;\n var field = _a.field, array = _a.array, enclosingRef = _a.enclosingRef, context = _a.context;\n var missing;\n var missingMerger = new DeepMerger();\n function handleMissing(childResult, i) {\n var _a;\n if (childResult.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));\n }\n return childResult.result;\n }\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n array = array.map(function (item, i) {\n // null value in array\n if (item === null) {\n return null;\n }\n // This is a nested array, recurse\n if (isArray(item)) {\n return handleMissing(_this.executeSubSelectedArray({\n field: field,\n array: item,\n enclosingRef: enclosingRef,\n context: context,\n }), i);\n }\n // This is an object, run the selection set on it\n if (field.selectionSet) {\n return handleMissing(_this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context: context,\n }), i);\n }\n if (globalThis.__DEV__ !== false) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n return item;\n });\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing: missing,\n };\n };\n return StoreReader;\n}());\nexport { StoreReader };\nfunction firstMissing(tree) {\n try {\n JSON.stringify(tree, function (_, value) {\n if (typeof value === \"string\")\n throw value;\n return value;\n });\n }\n catch (result) {\n return result;\n }\n}\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n if (!field.selectionSet) {\n var workSet_1 = new Set([fieldValue]);\n workSet_1.forEach(function (value) {\n if (isNonNullObject(value)) {\n invariant(\n !isReference(value),\n 10,\n getTypenameFromStoreObject(store, value),\n field.name.value\n );\n Object.values(value).forEach(workSet_1.add, workSet_1);\n }\n });\n }\n}\n","import { invariant } from \"../../utilities/globals/index.js\";\nimport { argumentsObjectFromField, DeepMerger, isNonEmptyArray, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, isArray } from \"./helpers.js\";\n// Mapping from JSON-encoded KeySpecifier strings to associated information.\nvar specifierInfoCache = Object.create(null);\nfunction lookupSpecifierInfo(spec) {\n // It's safe to encode KeySpecifier arrays with JSON.stringify, since they're\n // just arrays of strings or nested KeySpecifier arrays, and the order of the\n // array elements is important (and suitably preserved by JSON.stringify).\n var cacheKey = JSON.stringify(spec);\n return (specifierInfoCache[cacheKey] ||\n (specifierInfoCache[cacheKey] = Object.create(null)));\n}\nexport function keyFieldsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return (info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {\n var extract = function (from, key) {\n return context.readField(key, from);\n };\n var keyObject = (context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {\n var extracted = extractKeyPath(context.storeObject, schemaKeyPath, \n // Using context.readField to extract paths from context.storeObject\n // allows the extraction to see through Reference objects and respect\n // custom read functions.\n extract);\n if (extracted === void 0 &&\n object !== context.storeObject &&\n hasOwn.call(object, schemaKeyPath[0])) {\n // If context.storeObject fails to provide a value for the requested\n // path, fall back to the raw result object, if it has a top-level key\n // matching the first key in the path (schemaKeyPath[0]). This allows\n // key fields included in the written data to be saved in the cache\n // even if they are not selected explicitly in context.selectionSet.\n // Not being mentioned by context.selectionSet is convenient here,\n // since it means these extra fields cannot be affected by field\n // aliasing, which is why we can use extractKey instead of\n // context.readField for this extraction.\n extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n }\n invariant(extracted !== void 0, 4, schemaKeyPath.join(\".\"), object);\n return extracted;\n }));\n return \"\".concat(context.typename, \":\").concat(JSON.stringify(keyObject));\n }));\n}\n// The keyArgs extraction process is roughly analogous to keyFields extraction,\n// but there are no aliases involved, missing fields are tolerated (by merely\n// omitting them from the key), and drawing from field.directives or variables\n// is allowed (in addition to drawing from the field's arguments object).\n// Concretely, these differences mean passing a different key path extractor\n// function to collectSpecifierPaths, reusing the shared extractKeyPath helper\n// wherever possible.\nexport function keyArgsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return (info.keyArgsFn ||\n (info.keyArgsFn = function (args, _a) {\n var field = _a.field, variables = _a.variables, fieldName = _a.fieldName;\n var collected = collectSpecifierPaths(specifier, function (keyPath) {\n var firstKey = keyPath[0];\n var firstChar = firstKey.charAt(0);\n if (firstChar === \"@\") {\n if (field && isNonEmptyArray(field.directives)) {\n var directiveName_1 = firstKey.slice(1);\n // If the directive appears multiple times, only the first\n // occurrence's arguments will be used. TODO Allow repetition?\n // TODO Cache this work somehow, a la aliasMap?\n var d = field.directives.find(function (d) { return d.name.value === directiveName_1; });\n // Fortunately argumentsObjectFromField works for DirectiveNode!\n var directiveArgs = d && argumentsObjectFromField(d, variables);\n // For directives without arguments (d defined, but directiveArgs ===\n // null), the presence or absence of the directive still counts as\n // part of the field key, so we return null in those cases. If no\n // directive with this name was found for this field (d undefined and\n // thus directiveArgs undefined), we return undefined, which causes\n // this value to be omitted from the key object returned by\n // collectSpecifierPaths.\n return (directiveArgs &&\n extractKeyPath(directiveArgs, \n // If keyPath.length === 1, this code calls extractKeyPath with an\n // empty path, which works because it uses directiveArgs as the\n // extracted value.\n keyPath.slice(1)));\n }\n // If the key started with @ but there was no corresponding directive,\n // we want to omit this value from the key object, not fall through to\n // treating @whatever as a normal argument name.\n return;\n }\n if (firstChar === \"$\") {\n var variableName = firstKey.slice(1);\n if (variables && hasOwn.call(variables, variableName)) {\n var varKeyPath = keyPath.slice(0);\n varKeyPath[0] = variableName;\n return extractKeyPath(variables, varKeyPath);\n }\n // If the key started with $ but there was no corresponding variable, we\n // want to omit this value from the key object, not fall through to\n // treating $whatever as a normal argument name.\n return;\n }\n if (args) {\n return extractKeyPath(args, keyPath);\n }\n });\n var suffix = JSON.stringify(collected);\n // If no arguments were passed to this field, and it didn't have any other\n // field key contributions from directives or variables, hide the empty\n // :{} suffix from the field key. However, a field passed no arguments can\n // still end up with a non-empty :{...} suffix if its key configuration\n // refers to directives or variables.\n if (args || suffix !== \"{}\") {\n fieldName += \":\" + suffix;\n }\n return fieldName;\n }));\n}\nexport function collectSpecifierPaths(specifier, extractor) {\n // For each path specified by specifier, invoke the extractor, and repeatedly\n // merge the results together, with appropriate ancestor context.\n var merger = new DeepMerger();\n return getSpecifierPaths(specifier).reduce(function (collected, path) {\n var _a;\n var toMerge = extractor(path);\n if (toMerge !== void 0) {\n // This path is not expected to contain array indexes, so the toMerge\n // reconstruction will not contain arrays. TODO Fix this?\n for (var i = path.length - 1; i >= 0; --i) {\n toMerge = (_a = {}, _a[path[i]] = toMerge, _a);\n }\n collected = merger.merge(collected, toMerge);\n }\n return collected;\n }, Object.create(null));\n}\nexport function getSpecifierPaths(spec) {\n var info = lookupSpecifierInfo(spec);\n if (!info.paths) {\n var paths_1 = (info.paths = []);\n var currentPath_1 = [];\n spec.forEach(function (s, i) {\n if (isArray(s)) {\n getSpecifierPaths(s).forEach(function (p) { return paths_1.push(currentPath_1.concat(p)); });\n currentPath_1.length = 0;\n }\n else {\n currentPath_1.push(s);\n if (!isArray(spec[i + 1])) {\n paths_1.push(currentPath_1.slice(0));\n currentPath_1.length = 0;\n }\n }\n });\n }\n return info.paths;\n}\nfunction extractKey(object, key) {\n return object[key];\n}\nexport function extractKeyPath(object, path, extract) {\n // For each key in path, extract the corresponding child property from obj,\n // flattening arrays if encountered (uncommon for keyFields and keyArgs, but\n // possible). The final result of path.reduce is normalized so unexpected leaf\n // objects have their keys safely sorted. That final result is difficult to\n // type as anything other than any. You're welcome to try to improve the\n // return type, but keep in mind extractKeyPath is not a public function\n // (exported only for testing), so the effort may not be worthwhile unless the\n // limited set of actual callers (see above) pass arguments that TypeScript\n // can statically type. If we know only that path is some array of strings\n // (and not, say, a specific tuple of statically known strings), any (or\n // possibly unknown) is the honest answer.\n extract = extract || extractKey;\n return normalize(path.reduce(function reducer(obj, key) {\n return isArray(obj) ?\n obj.map(function (child) { return reducer(child, key); })\n : obj && extract(obj, key);\n }, object));\n}\nfunction normalize(value) {\n // Usually the extracted value will be a scalar value, since most primary\n // key fields are scalar, but just in case we get an object or an array, we\n // need to do some normalization of the order of (nested) keys.\n if (isNonNullObject(value)) {\n if (isArray(value)) {\n return value.map(normalize);\n }\n return collectSpecifierPaths(Object.keys(value).sort(), function (path) {\n return extractKeyPath(value, path);\n });\n }\n return value;\n}\n","import { __assign, __rest } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, isNonNullObject, stringifyForDisplay, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, defaultDataIdFromObject, isArray, } from \"./helpers.js\";\nimport { cacheSlot } from \"./reactiveVars.js\";\nimport { keyArgsFnFromSpecifier, keyFieldsFnFromSpecifier, } from \"./key-extractor.js\";\nfunction argsFromFieldSpecifier(spec) {\n return (spec.args !== void 0 ? spec.args\n : spec.field ? argumentsObjectFromField(spec.field, spec.variables)\n : null);\n}\nvar nullKeyFieldsFn = function () { return void 0; };\nvar simpleKeyArgsFn = function (_args, context) { return context.fieldName; };\n// These merge functions can be selected by specifying merge:true or\n// merge:false in a field policy.\nvar mergeTrueFn = function (existing, incoming, _a) {\n var mergeObjects = _a.mergeObjects;\n return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) { return incoming; };\nvar Policies = /** @class */ (function () {\n function Policies(config) {\n this.config = config;\n this.typePolicies = Object.create(null);\n this.toBeAdded = Object.create(null);\n // Map from subtype names to sets of supertype names. Note that this\n // representation inverts the structure of possibleTypes (whose keys are\n // supertypes and whose values are arrays of subtypes) because it tends\n // to be much more efficient to search upwards than downwards.\n this.supertypeMap = new Map();\n // Any fuzzy subtypes specified by possibleTypes will be converted to\n // RegExp objects and recorded here. Every key of this map can also be\n // found in supertypeMap. In many cases this Map will be empty, which\n // means no fuzzy subtype checking will happen in fragmentMatches.\n this.fuzzySubtypes = new Map();\n this.rootIdsByTypename = Object.create(null);\n this.rootTypenamesById = Object.create(null);\n this.usingPossibleTypes = false;\n this.config = __assign({ dataIdFromObject: defaultDataIdFromObject }, config);\n this.cache = this.config.cache;\n this.setRootTypename(\"Query\");\n this.setRootTypename(\"Mutation\");\n this.setRootTypename(\"Subscription\");\n if (config.possibleTypes) {\n this.addPossibleTypes(config.possibleTypes);\n }\n if (config.typePolicies) {\n this.addTypePolicies(config.typePolicies);\n }\n }\n Policies.prototype.identify = function (object, partialContext) {\n var _a;\n var policies = this;\n var typename = (partialContext &&\n (partialContext.typename || ((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename))) ||\n object.__typename;\n // It should be possible to write root Query fields with writeFragment,\n // using { __typename: \"Query\", ... } as the data, but it does not make\n // sense to allow the same identification behavior for the Mutation and\n // Subscription types, since application code should never be writing\n // directly to (or reading directly from) those root objects.\n if (typename === this.rootTypenamesById.ROOT_QUERY) {\n return [\"ROOT_QUERY\"];\n }\n // Default context.storeObject to object if not otherwise provided.\n var storeObject = (partialContext && partialContext.storeObject) || object;\n var context = __assign(__assign({}, partialContext), { typename: typename, storeObject: storeObject, readField: (partialContext && partialContext.readField) ||\n function () {\n var options = normalizeReadFieldOptions(arguments, storeObject);\n return policies.readField(options, {\n store: policies.cache[\"data\"],\n variables: options.variables,\n });\n } });\n var id;\n var policy = typename && this.getTypePolicy(typename);\n var keyFn = (policy && policy.keyFn) || this.config.dataIdFromObject;\n while (keyFn) {\n var specifierOrId = keyFn(__assign(__assign({}, object), storeObject), context);\n if (isArray(specifierOrId)) {\n keyFn = keyFieldsFnFromSpecifier(specifierOrId);\n }\n else {\n id = specifierOrId;\n break;\n }\n }\n id = id ? String(id) : void 0;\n return context.keyObject ? [id, context.keyObject] : [id];\n };\n Policies.prototype.addTypePolicies = function (typePolicies) {\n var _this = this;\n Object.keys(typePolicies).forEach(function (typename) {\n var _a = typePolicies[typename], queryType = _a.queryType, mutationType = _a.mutationType, subscriptionType = _a.subscriptionType, incoming = __rest(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n // Though {query,mutation,subscription}Type configurations are rare,\n // it's important to call setRootTypename as early as possible,\n // since these configurations should apply consistently for the\n // entire lifetime of the cache. Also, since only one __typename can\n // qualify as one of these root types, these three properties cannot\n // be inherited, unlike the rest of the incoming properties. That\n // restriction is convenient, because the purpose of this.toBeAdded\n // is to delay the processing of type/field policies until the first\n // time they're used, allowing policies to be added in any order as\n // long as all relevant policies (including policies for supertypes)\n // have been added by the time a given policy is used for the first\n // time. In other words, since inheritance doesn't matter for these\n // properties, there's also no need to delay their processing using\n // the this.toBeAdded queue.\n if (queryType)\n _this.setRootTypename(\"Query\", typename);\n if (mutationType)\n _this.setRootTypename(\"Mutation\", typename);\n if (subscriptionType)\n _this.setRootTypename(\"Subscription\", typename);\n if (hasOwn.call(_this.toBeAdded, typename)) {\n _this.toBeAdded[typename].push(incoming);\n }\n else {\n _this.toBeAdded[typename] = [incoming];\n }\n });\n };\n Policies.prototype.updateTypePolicy = function (typename, incoming) {\n var _this = this;\n var existing = this.getTypePolicy(typename);\n var keyFields = incoming.keyFields, fields = incoming.fields;\n function setMerge(existing, merge) {\n existing.merge =\n typeof merge === \"function\" ? merge\n // Pass merge:true as a shorthand for a merge implementation\n // that returns options.mergeObjects(existing, incoming).\n : merge === true ? mergeTrueFn\n // Pass merge:false to make incoming always replace existing\n // without any warnings about data clobbering.\n : merge === false ? mergeFalseFn\n : existing.merge;\n }\n // Type policies can define merge functions, as an alternative to\n // using field policies to merge child objects.\n setMerge(existing, incoming.merge);\n existing.keyFn =\n // Pass false to disable normalization for this typename.\n keyFields === false ? nullKeyFieldsFn\n // Pass an array of strings to use those fields to compute a\n // composite ID for objects of this typename.\n : isArray(keyFields) ? keyFieldsFnFromSpecifier(keyFields)\n // Pass a function to take full control over identification.\n : typeof keyFields === \"function\" ? keyFields\n // Leave existing.keyFn unchanged if above cases fail.\n : existing.keyFn;\n if (fields) {\n Object.keys(fields).forEach(function (fieldName) {\n var existing = _this.getFieldPolicy(typename, fieldName, true);\n var incoming = fields[fieldName];\n if (typeof incoming === \"function\") {\n existing.read = incoming;\n }\n else {\n var keyArgs = incoming.keyArgs, read = incoming.read, merge = incoming.merge;\n existing.keyFn =\n // Pass false to disable argument-based differentiation of\n // field identities.\n keyArgs === false ? simpleKeyArgsFn\n // Pass an array of strings to use named arguments to\n // compute a composite identity for the field.\n : isArray(keyArgs) ? keyArgsFnFromSpecifier(keyArgs)\n // Pass a function to take full control over field identity.\n : typeof keyArgs === \"function\" ? keyArgs\n // Leave existing.keyFn unchanged if above cases fail.\n : existing.keyFn;\n if (typeof read === \"function\") {\n existing.read = read;\n }\n setMerge(existing, merge);\n }\n if (existing.read && existing.merge) {\n // If we have both a read and a merge function, assume\n // keyArgs:false, because read and merge together can take\n // responsibility for interpreting arguments in and out. This\n // default assumption can always be overridden by specifying\n // keyArgs explicitly in the FieldPolicy.\n existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n }\n });\n }\n };\n Policies.prototype.setRootTypename = function (which, typename) {\n if (typename === void 0) { typename = which; }\n var rootId = \"ROOT_\" + which.toUpperCase();\n var old = this.rootTypenamesById[rootId];\n if (typename !== old) {\n invariant(!old || old === which, 5, which);\n // First, delete any old __typename associated with this rootId from\n // rootIdsByTypename.\n if (old)\n delete this.rootIdsByTypename[old];\n // Now make this the only __typename that maps to this rootId.\n this.rootIdsByTypename[typename] = rootId;\n // Finally, update the __typename associated with this rootId.\n this.rootTypenamesById[rootId] = typename;\n }\n };\n Policies.prototype.addPossibleTypes = function (possibleTypes) {\n var _this = this;\n this.usingPossibleTypes = true;\n Object.keys(possibleTypes).forEach(function (supertype) {\n // Make sure all types have an entry in this.supertypeMap, even if\n // their supertype set is empty, so we can return false immediately\n // from policies.fragmentMatches for unknown supertypes.\n _this.getSupertypeSet(supertype, true);\n possibleTypes[supertype].forEach(function (subtype) {\n _this.getSupertypeSet(subtype, true).add(supertype);\n var match = subtype.match(TypeOrFieldNameRegExp);\n if (!match || match[0] !== subtype) {\n // TODO Don't interpret just any invalid typename as a RegExp.\n _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n }\n });\n });\n };\n Policies.prototype.getTypePolicy = function (typename) {\n var _this = this;\n if (!hasOwn.call(this.typePolicies, typename)) {\n var policy_1 = (this.typePolicies[typename] = Object.create(null));\n policy_1.fields = Object.create(null);\n // When the TypePolicy for typename is first accessed, instead of\n // starting with an empty policy object, inherit any properties or\n // fields from the type policies of the supertypes of typename.\n //\n // Any properties or fields defined explicitly within the TypePolicy\n // for typename will take precedence, and if there are multiple\n // supertypes, the properties of policies whose types were added\n // later via addPossibleTypes will take precedence over those of\n // earlier supertypes. TODO Perhaps we should warn about these\n // conflicts in development, and recommend defining the property\n // explicitly in the subtype policy?\n //\n // Field policy inheritance is atomic/shallow: you can't inherit a\n // field policy and then override just its read function, since read\n // and merge functions often need to cooperate, so changing only one\n // of them would be a recipe for inconsistency.\n //\n // Once the TypePolicy for typename has been accessed, its properties can\n // still be updated directly using addTypePolicies, but future changes to\n // inherited supertype policies will not be reflected in this subtype\n // policy, because this code runs at most once per typename.\n var supertypes_1 = this.supertypeMap.get(typename);\n if (!supertypes_1 && this.fuzzySubtypes.size) {\n // To make the inheritance logic work for unknown typename strings that\n // may have fuzzy supertypes, we give this typename an empty supertype\n // set and then populate it with any fuzzy supertypes that match.\n supertypes_1 = this.getSupertypeSet(typename, true);\n // This only works for typenames that are directly matched by a fuzzy\n // supertype. What if there is an intermediate chain of supertypes?\n // While possible, that situation can only be solved effectively by\n // specifying the intermediate relationships via possibleTypes, manually\n // and in a non-fuzzy way.\n this.fuzzySubtypes.forEach(function (regExp, fuzzy) {\n if (regExp.test(typename)) {\n // The fuzzy parameter is just the original string version of regExp\n // (not a valid __typename string), but we can look up the\n // associated supertype(s) in this.supertypeMap.\n var fuzzySupertypes = _this.supertypeMap.get(fuzzy);\n if (fuzzySupertypes) {\n fuzzySupertypes.forEach(function (supertype) {\n return supertypes_1.add(supertype);\n });\n }\n }\n });\n }\n if (supertypes_1 && supertypes_1.size) {\n supertypes_1.forEach(function (supertype) {\n var _a = _this.getTypePolicy(supertype), fields = _a.fields, rest = __rest(_a, [\"fields\"]);\n Object.assign(policy_1, rest);\n Object.assign(policy_1.fields, fields);\n });\n }\n }\n var inbox = this.toBeAdded[typename];\n if (inbox && inbox.length) {\n // Merge the pending policies into this.typePolicies, in the order they\n // were originally passed to addTypePolicy.\n inbox.splice(0).forEach(function (policy) {\n _this.updateTypePolicy(typename, policy);\n });\n }\n return this.typePolicies[typename];\n };\n Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n if (typename) {\n var fieldPolicies = this.getTypePolicy(typename).fields;\n return (fieldPolicies[fieldName] ||\n (createIfMissing && (fieldPolicies[fieldName] = Object.create(null))));\n }\n };\n Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n var supertypeSet = this.supertypeMap.get(subtype);\n if (!supertypeSet && createIfMissing) {\n this.supertypeMap.set(subtype, (supertypeSet = new Set()));\n }\n return supertypeSet;\n };\n Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n var _this = this;\n if (!fragment.typeCondition)\n return true;\n // If the fragment has a type condition but the object we're matching\n // against does not have a __typename, the fragment cannot match.\n if (!typename)\n return false;\n var supertype = fragment.typeCondition.name.value;\n // Common case: fragment type condition and __typename are the same.\n if (typename === supertype)\n return true;\n if (this.usingPossibleTypes && this.supertypeMap.has(supertype)) {\n var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n var workQueue_1 = [typenameSupertypeSet];\n var maybeEnqueue_1 = function (subtype) {\n var supertypeSet = _this.getSupertypeSet(subtype, false);\n if (supertypeSet &&\n supertypeSet.size &&\n workQueue_1.indexOf(supertypeSet) < 0) {\n workQueue_1.push(supertypeSet);\n }\n };\n // We need to check fuzzy subtypes only if we encountered fuzzy\n // subtype strings in addPossibleTypes, and only while writing to\n // the cache, since that's when selectionSetMatchesResult gives a\n // strong signal of fragment matching. The StoreReader class calls\n // policies.fragmentMatches without passing a result object, so\n // needToCheckFuzzySubtypes is always false while reading.\n var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n var checkingFuzzySubtypes = false;\n // It's important to keep evaluating workQueue.length each time through\n // the loop, because the queue can grow while we're iterating over it.\n for (var i = 0; i < workQueue_1.length; ++i) {\n var supertypeSet = workQueue_1[i];\n if (supertypeSet.has(supertype)) {\n if (!typenameSupertypeSet.has(supertype)) {\n if (checkingFuzzySubtypes) {\n globalThis.__DEV__ !== false && invariant.warn(6, typename, supertype);\n }\n // Record positive results for faster future lookup.\n // Unfortunately, we cannot safely cache negative results,\n // because new possibleTypes data could always be added to the\n // Policies class.\n typenameSupertypeSet.add(supertype);\n }\n return true;\n }\n supertypeSet.forEach(maybeEnqueue_1);\n if (needToCheckFuzzySubtypes &&\n // Start checking fuzzy subtypes only after exhausting all\n // non-fuzzy subtypes (after the final iteration of the loop).\n i === workQueue_1.length - 1 &&\n // We could wait to compare fragment.selectionSet to result\n // after we verify the supertype, but this check is often less\n // expensive than that search, and we will have to do the\n // comparison anyway whenever we find a potential match.\n selectionSetMatchesResult(fragment.selectionSet, result, variables)) {\n // We don't always need to check fuzzy subtypes (if no result\n // was provided, or !this.fuzzySubtypes.size), but, when we do,\n // we only want to check them once.\n needToCheckFuzzySubtypes = false;\n checkingFuzzySubtypes = true;\n // If we find any fuzzy subtypes that match typename, extend the\n // workQueue to search through the supertypes of those fuzzy\n // subtypes. Otherwise the for-loop will terminate and we'll\n // return false below.\n this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n var match = typename.match(regExp);\n if (match && match[0] === typename) {\n maybeEnqueue_1(fuzzyString);\n }\n });\n }\n }\n }\n return false;\n };\n Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return !!(policy && policy.keyFn);\n };\n Policies.prototype.getStoreFieldName = function (fieldSpec) {\n var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;\n var policy = this.getFieldPolicy(typename, fieldName, false);\n var storeFieldName;\n var keyFn = policy && policy.keyFn;\n if (keyFn && typename) {\n var context = {\n typename: typename,\n fieldName: fieldName,\n field: fieldSpec.field || null,\n variables: fieldSpec.variables,\n };\n var args = argsFromFieldSpecifier(fieldSpec);\n while (keyFn) {\n var specifierOrString = keyFn(args, context);\n if (isArray(specifierOrString)) {\n keyFn = keyArgsFnFromSpecifier(specifierOrString);\n }\n else {\n // If the custom keyFn returns a falsy value, fall back to\n // fieldName instead.\n storeFieldName = specifierOrString || fieldName;\n break;\n }\n }\n }\n if (storeFieldName === void 0) {\n storeFieldName =\n fieldSpec.field ?\n storeKeyNameFromField(fieldSpec.field, fieldSpec.variables)\n : getStoreKeyName(fieldName, argsFromFieldSpecifier(fieldSpec));\n }\n // Returning false from a keyArgs function is like configuring\n // keyArgs: false, but more dynamic.\n if (storeFieldName === false) {\n return fieldName;\n }\n // Make sure custom field names start with the actual field.name.value\n // of the field, so we can always figure out which properties of a\n // StoreObject correspond to which original field names.\n return fieldName === fieldNameFromStoreName(storeFieldName) ? storeFieldName\n : fieldName + \":\" + storeFieldName;\n };\n Policies.prototype.readField = function (options, context) {\n var objectOrReference = options.from;\n if (!objectOrReference)\n return;\n var nameOrField = options.field || options.fieldName;\n if (!nameOrField)\n return;\n if (options.typename === void 0) {\n var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n if (typename)\n options.typename = typename;\n }\n var storeFieldName = this.getStoreFieldName(options);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n var policy = this.getFieldPolicy(options.typename, fieldName, false);\n var read = policy && policy.read;\n if (read) {\n var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(isReference(objectOrReference) ?\n objectOrReference.__ref\n : objectOrReference, storeFieldName));\n // Call read(existing, readOptions) with cacheSlot holding this.cache.\n return cacheSlot.withValue(this.cache, read, [\n existing,\n readOptions,\n ]);\n }\n return existing;\n };\n Policies.prototype.getReadFunction = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return policy && policy.read;\n };\n Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n var merge = policy && policy.merge;\n if (!merge && childTypename) {\n policy = this.getTypePolicy(childTypename);\n merge = policy && policy.merge;\n }\n return merge;\n };\n Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n var field = _a.field, typename = _a.typename, merge = _a.merge;\n if (merge === mergeTrueFn) {\n // Instead of going to the trouble of creating a full\n // FieldFunctionOptions object and calling mergeTrueFn, we can\n // simply call mergeObjects, as mergeTrueFn would.\n return makeMergeObjectsFunction(context.store)(existing, incoming);\n }\n if (merge === mergeFalseFn) {\n // Likewise for mergeFalseFn, whose implementation is even simpler.\n return incoming;\n }\n // If cache.writeQuery or cache.writeFragment was called with\n // options.overwrite set to true, we still call merge functions, but\n // the existing data is always undefined, so the merge function will\n // not attempt to combine the incoming data with the existing data.\n if (context.overwrite) {\n existing = void 0;\n }\n return merge(existing, incoming, makeFieldFunctionOptions(this, \n // Unlike options.readField for read functions, we do not fall\n // back to the current object if no foreignObjOrRef is provided,\n // because it's not clear what the current object should be for\n // merge functions: the (possibly undefined) existing object, or\n // the incoming object? If you think your merge function needs\n // to read sibling fields in order to produce a new value for\n // the current field, you might want to rethink your strategy,\n // because that's a recipe for making merge behavior sensitive\n // to the order in which fields are written into the cache.\n // However, readField(name, ref) is useful for merge functions\n // that need to deduplicate child objects and references.\n void 0, {\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n }, context, storage || Object.create(null)));\n };\n return Policies;\n}());\nexport { Policies };\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n var storeFieldName = policies.getStoreFieldName(fieldSpec);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var variables = fieldSpec.variables || context.variables;\n var _a = context.store, toReference = _a.toReference, canRead = _a.canRead;\n return {\n args: argsFromFieldSpecifier(fieldSpec),\n field: fieldSpec.field || null,\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n variables: variables,\n isReference: isReference,\n toReference: toReference,\n storage: storage,\n cache: policies.cache,\n canRead: canRead,\n readField: function () {\n return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, variables), context);\n },\n mergeObjects: makeMergeObjectsFunction(context.store),\n };\n}\nexport function normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {\n var fieldNameOrOptions = readFieldArgs[0], from = readFieldArgs[1], argc = readFieldArgs.length;\n var options;\n if (typeof fieldNameOrOptions === \"string\") {\n options = {\n fieldName: fieldNameOrOptions,\n // Default to objectOrReference only when no second argument was\n // passed for the from parameter, not when undefined is explicitly\n // passed as the second argument.\n from: argc > 1 ? from : objectOrReference,\n };\n }\n else {\n options = __assign({}, fieldNameOrOptions);\n // Default to objectOrReference only when fieldNameOrOptions.from is\n // actually omitted, rather than just undefined.\n if (!hasOwn.call(options, \"from\")) {\n options.from = objectOrReference;\n }\n }\n if (globalThis.__DEV__ !== false && options.from === void 0) {\n globalThis.__DEV__ !== false && invariant.warn(7, stringifyForDisplay(Array.from(readFieldArgs)));\n }\n if (void 0 === options.variables) {\n options.variables = variables;\n }\n return options;\n}\nfunction makeMergeObjectsFunction(store) {\n return function mergeObjects(existing, incoming) {\n if (isArray(existing) || isArray(incoming)) {\n throw newInvariantError(8);\n }\n // These dynamic checks are necessary because the parameters of a\n // custom merge function can easily have the any type, so the type\n // system cannot always enforce the StoreObject | Reference parameter\n // types of options.mergeObjects.\n if (isNonNullObject(existing) && isNonNullObject(incoming)) {\n var eType = store.getFieldValue(existing, \"__typename\");\n var iType = store.getFieldValue(incoming, \"__typename\");\n var typesDiffer = eType && iType && eType !== iType;\n if (typesDiffer) {\n return incoming;\n }\n if (isReference(existing) && storeValueIsStoreObject(incoming)) {\n // Update the normalized EntityStore for the entity identified by\n // existing.__ref, preferring/overwriting any fields contributed by the\n // newer incoming StoreObject.\n store.merge(existing.__ref, incoming);\n return existing;\n }\n if (storeValueIsStoreObject(existing) && isReference(incoming)) {\n // Update the normalized EntityStore for the entity identified by\n // incoming.__ref, taking fields from the older existing object only if\n // those fields are not already present in the newer StoreObject\n // identified by incoming.__ref.\n store.merge(existing, incoming.__ref);\n return incoming;\n }\n if (storeValueIsStoreObject(existing) &&\n storeValueIsStoreObject(incoming)) {\n return __assign(__assign({}, existing), incoming);\n }\n }\n return incoming;\n };\n}\n","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { Trie } from \"@wry/trie\";\nimport { Kind } from \"graphql\";\nimport { getFragmentFromSelection, getDefaultValues, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, cloneDeep, addTypenameToDocument, isNonEmptyArray, argumentsObjectFromField, canonicalStringify, } from \"../../utilities/index.js\";\nimport { isArray, makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject, extractFragmentContext, } from \"./helpers.js\";\nimport { normalizeReadFieldOptions } from \"./policies.js\";\n// Since there are only four possible combinations of context.clientOnly and\n// context.deferred values, we should need at most four \"flavors\" of any given\n// WriteContext. To avoid creating multiple copies of the same context, we cache\n// the contexts in the context.flavors Map (shared by all flavors) according to\n// their clientOnly and deferred values (always in that order).\nfunction getContextFlavor(context, clientOnly, deferred) {\n var key = \"\".concat(clientOnly).concat(deferred);\n var flavored = context.flavors.get(key);\n if (!flavored) {\n context.flavors.set(key, (flavored =\n context.clientOnly === clientOnly && context.deferred === deferred ?\n context\n : __assign(__assign({}, context), { clientOnly: clientOnly, deferred: deferred })));\n }\n return flavored;\n}\nvar StoreWriter = /** @class */ (function () {\n function StoreWriter(cache, reader, fragments) {\n this.cache = cache;\n this.reader = reader;\n this.fragments = fragments;\n }\n StoreWriter.prototype.writeToStore = function (store, _a) {\n var _this = this;\n var query = _a.query, result = _a.result, dataId = _a.dataId, variables = _a.variables, overwrite = _a.overwrite;\n var operationDefinition = getOperationDefinition(query);\n var merger = makeProcessedFieldsMerger();\n variables = __assign(__assign({}, getDefaultValues(operationDefinition)), variables);\n var context = __assign(__assign({ store: store, written: Object.create(null), merge: function (existing, incoming) {\n return merger.merge(existing, incoming);\n }, variables: variables, varString: canonicalStringify(variables) }, extractFragmentContext(query, this.fragments)), { overwrite: !!overwrite, incomingById: new Map(), clientOnly: false, deferred: false, flavors: new Map() });\n var ref = this.processSelectionSet({\n result: result || Object.create(null),\n dataId: dataId,\n selectionSet: operationDefinition.selectionSet,\n mergeTree: { map: new Map() },\n context: context,\n });\n if (!isReference(ref)) {\n throw newInvariantError(11, result);\n }\n // So far, the store has not been modified, so now it's time to process\n // context.incomingById and merge those incoming fields into context.store.\n context.incomingById.forEach(function (_a, dataId) {\n var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;\n var entityRef = makeReference(dataId);\n if (mergeTree && mergeTree.map.size) {\n var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);\n if (isReference(applied)) {\n // Assume References returned by applyMerges have already been merged\n // into the store. See makeMergeObjectsFunction in policies.ts for an\n // example of how this can happen.\n return;\n }\n // Otherwise, applyMerges returned a StoreObject, whose fields we should\n // merge into the store (see store.merge statement below).\n storeObject = applied;\n }\n if (globalThis.__DEV__ !== false && !context.overwrite) {\n var fieldsWithSelectionSets_1 = Object.create(null);\n fieldNodeSet.forEach(function (field) {\n if (field.selectionSet) {\n fieldsWithSelectionSets_1[field.name.value] = true;\n }\n });\n var hasSelectionSet_1 = function (storeFieldName) {\n return fieldsWithSelectionSets_1[fieldNameFromStoreName(storeFieldName)] ===\n true;\n };\n var hasMergeFunction_1 = function (storeFieldName) {\n var childTree = mergeTree && mergeTree.map.get(storeFieldName);\n return Boolean(childTree && childTree.info && childTree.info.merge);\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n // If a merge function was defined for this field, trust that it\n // did the right thing about (not) clobbering data. If the field\n // has no selection set, it's a scalar field, so it doesn't need\n // a merge function (even if it's an object, like JSON data).\n if (hasSelectionSet_1(storeFieldName) &&\n !hasMergeFunction_1(storeFieldName)) {\n warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);\n }\n });\n }\n store.merge(dataId, storeObject);\n });\n // Any IDs written explicitly to the cache will be retained as\n // reachable root IDs for garbage collection purposes. Although this\n // logic includes root IDs like ROOT_QUERY and ROOT_MUTATION, their\n // retainment counts are effectively ignored because cache.gc() always\n // includes them in its root ID set.\n store.retain(ref.__ref);\n return ref;\n };\n StoreWriter.prototype.processSelectionSet = function (_a) {\n var _this = this;\n var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, \n // This object allows processSelectionSet to report useful information\n // to its callers without explicitly returning that information.\n mergeTree = _a.mergeTree;\n var policies = this.cache.policies;\n // This variable will be repeatedly updated using context.merge to\n // accumulate all fields that need to be written into the store.\n var incoming = Object.create(null);\n // If typename was not passed in, infer it. Note that typename is\n // always passed in for tricky-to-infer cases such as \"Query\" for\n // ROOT_QUERY.\n var typename = (dataId && policies.rootTypenamesById[dataId]) ||\n getTypenameFromResult(result, selectionSet, context.fragmentMap) ||\n (dataId && context.store.get(dataId, \"__typename\"));\n if (\"string\" === typeof typename) {\n incoming.__typename = typename;\n }\n // This readField function will be passed as context.readField in the\n // KeyFieldsContext object created within policies.identify (called below).\n // In addition to reading from the existing context.store (thanks to the\n // policies.readField(options, context) line at the very bottom), this\n // version of readField can read from Reference objects that are currently\n // pending in context.incomingById, which is important whenever keyFields\n // need to be extracted from a child object that processSelectionSet has\n // turned into a Reference.\n var readField = function () {\n var options = normalizeReadFieldOptions(arguments, incoming, context.variables);\n if (isReference(options.from)) {\n var info = context.incomingById.get(options.from.__ref);\n if (info) {\n var result_1 = policies.readField(__assign(__assign({}, options), { from: info.storeObject }), context);\n if (result_1 !== void 0) {\n return result_1;\n }\n }\n }\n return policies.readField(options, context);\n };\n var fieldNodeSet = new Set();\n this.flattenFields(selectionSet, result, \n // This WriteContext will be the default context value for fields returned\n // by the flattenFields method, but some fields may be assigned a modified\n // context, depending on the presence of @client and other directives.\n context, typename).forEach(function (context, field) {\n var _a;\n var resultFieldKey = resultKeyNameFromField(field);\n var value = result[resultFieldKey];\n fieldNodeSet.add(field);\n if (value !== void 0) {\n var storeFieldName = policies.getStoreFieldName({\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n });\n var childTree = getChildMergeTree(mergeTree, storeFieldName);\n var incomingValue = _this.processFieldValue(value, field, \n // Reset context.clientOnly and context.deferred to their default\n // values before processing nested selection sets.\n field.selectionSet ?\n getContextFlavor(context, false, false)\n : context, childTree);\n // To determine if this field holds a child object with a merge function\n // defined in its type policy (see PR #7070), we need to figure out the\n // child object's __typename.\n var childTypename = void 0;\n // The field's value can be an object that has a __typename only if the\n // field has a selection set. Otherwise incomingValue is scalar.\n if (field.selectionSet &&\n (isReference(incomingValue) || storeValueIsStoreObject(incomingValue))) {\n childTypename = readField(\"__typename\", incomingValue);\n }\n var merge = policies.getMergeFunction(typename, field.name.value, childTypename);\n if (merge) {\n childTree.info = {\n // TODO Check compatibility against any existing childTree.field?\n field: field,\n typename: typename,\n merge: merge,\n };\n }\n else {\n maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n }\n incoming = context.merge(incoming, (_a = {},\n _a[storeFieldName] = incomingValue,\n _a));\n }\n else if (globalThis.__DEV__ !== false &&\n !context.clientOnly &&\n !context.deferred &&\n !addTypenameToDocument.added(field) &&\n // If the field has a read function, it may be a synthetic field or\n // provide a default value, so its absence from the written data should\n // not be cause for alarm.\n !policies.getReadFunction(typename, field.name.value)) {\n globalThis.__DEV__ !== false && invariant.error(12, resultKeyNameFromField(field), result);\n }\n });\n // Identify the result object, even if dataId was already provided,\n // since we always need keyObject below.\n try {\n var _b = policies.identify(result, {\n typename: typename,\n selectionSet: selectionSet,\n fragmentMap: context.fragmentMap,\n storeObject: incoming,\n readField: readField,\n }), id = _b[0], keyObject = _b[1];\n // If dataId was not provided, fall back to the id just generated by\n // policies.identify.\n dataId = dataId || id;\n // Write any key fields that were used during identification, even if\n // they were not mentioned in the original query.\n if (keyObject) {\n // TODO Reverse the order of the arguments?\n incoming = context.merge(incoming, keyObject);\n }\n }\n catch (e) {\n // If dataId was provided, tolerate failure of policies.identify.\n if (!dataId)\n throw e;\n }\n if (\"string\" === typeof dataId) {\n var dataRef = makeReference(dataId);\n // Avoid processing the same entity object using the same selection\n // set more than once. We use an array instead of a Set since most\n // entity IDs will be written using only one selection set, so the\n // size of this array is likely to be very small, meaning indexOf is\n // likely to be faster than Set.prototype.has.\n var sets = context.written[dataId] || (context.written[dataId] = []);\n if (sets.indexOf(selectionSet) >= 0)\n return dataRef;\n sets.push(selectionSet);\n // If we're about to write a result object into the store, but we\n // happen to know that the exact same (===) result object would be\n // returned if we were to reread the result with the same inputs,\n // then we can skip the rest of the processSelectionSet work for\n // this object, and immediately return a Reference to it.\n if (this.reader &&\n this.reader.isFresh(result, dataRef, selectionSet, context)) {\n return dataRef;\n }\n var previous_1 = context.incomingById.get(dataId);\n if (previous_1) {\n previous_1.storeObject = context.merge(previous_1.storeObject, incoming);\n previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);\n fieldNodeSet.forEach(function (field) { return previous_1.fieldNodeSet.add(field); });\n }\n else {\n context.incomingById.set(dataId, {\n storeObject: incoming,\n // Save a reference to mergeTree only if it is not empty, because\n // empty MergeTrees may be recycled by maybeRecycleChildMergeTree and\n // reused for entirely different parts of the result tree.\n mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,\n fieldNodeSet: fieldNodeSet,\n });\n }\n return dataRef;\n }\n return incoming;\n };\n StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n var _this = this;\n if (!field.selectionSet || value === null) {\n // In development, we need to clone scalar values so that they can be\n // safely frozen with maybeDeepFreeze in readFromStore.ts. In production,\n // it's cheaper to store the scalar values directly in the cache.\n return globalThis.__DEV__ !== false ? cloneDeep(value) : value;\n }\n if (isArray(value)) {\n return value.map(function (item, i) {\n var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n maybeRecycleChildMergeTree(mergeTree, i);\n return value;\n });\n }\n return this.processSelectionSet({\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n mergeTree: mergeTree,\n });\n };\n // Implements https://spec.graphql.org/draft/#sec-Field-Collection, but with\n // some additions for tracking @client and @defer directives.\n StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {\n if (typename === void 0) { typename = getTypenameFromResult(result, selectionSet, context.fragmentMap); }\n var fieldMap = new Map();\n var policies = this.cache.policies;\n var limitingTrie = new Trie(false); // No need for WeakMap, since limitingTrie does not escape.\n (function flatten(selectionSet, inheritedContext) {\n var visitedNode = limitingTrie.lookup(selectionSet, \n // Because we take inheritedClientOnly and inheritedDeferred into\n // consideration here (in addition to selectionSet), it's possible for\n // the same selection set to be flattened more than once, if it appears\n // in the query with different @client and/or @directive configurations.\n inheritedContext.clientOnly, inheritedContext.deferred);\n if (visitedNode.visited)\n return;\n visitedNode.visited = true;\n selectionSet.selections.forEach(function (selection) {\n if (!shouldInclude(selection, context.variables))\n return;\n var clientOnly = inheritedContext.clientOnly, deferred = inheritedContext.deferred;\n if (\n // Since the presence of @client or @defer on this field can only\n // cause clientOnly or deferred to become true, we can skip the\n // forEach loop if both clientOnly and deferred are already true.\n !(clientOnly && deferred) &&\n isNonEmptyArray(selection.directives)) {\n selection.directives.forEach(function (dir) {\n var name = dir.name.value;\n if (name === \"client\")\n clientOnly = true;\n if (name === \"defer\") {\n var args = argumentsObjectFromField(dir, context.variables);\n // The @defer directive takes an optional args.if boolean\n // argument, similar to @include(if: boolean). Note that\n // @defer(if: false) does not make context.deferred false, but\n // instead behaves as if there was no @defer directive.\n if (!args || args.if !== false) {\n deferred = true;\n }\n // TODO In the future, we may want to record args.label using\n // context.deferred, if a label is specified.\n }\n });\n }\n if (isField(selection)) {\n var existing = fieldMap.get(selection);\n if (existing) {\n // If this field has been visited along another recursive path\n // before, the final context should have clientOnly or deferred set\n // to true only if *all* paths have the directive (hence the &&).\n clientOnly = clientOnly && existing.clientOnly;\n deferred = deferred && existing.deferred;\n }\n fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw newInvariantError(13, selection.name.value);\n }\n if (fragment &&\n policies.fragmentMatches(fragment, typename, result, context.variables)) {\n flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));\n }\n }\n });\n })(selectionSet, context);\n return fieldMap;\n };\n StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n var _a;\n var _this = this;\n if (mergeTree.map.size && !isReference(incoming)) {\n var e_1 = \n // Items in the same position in different arrays are not\n // necessarily related to each other, so when incoming is an array\n // we process its elements as if there was no existing data.\n (!isArray(incoming) &&\n // Likewise, existing must be either a Reference or a StoreObject\n // in order for its fields to be safe to merge with the fields of\n // the incoming object.\n (isReference(existing) || storeValueIsStoreObject(existing))) ?\n existing\n : void 0;\n // This narrowing is implied by mergeTree.map.size > 0 and\n // !isReference(incoming), though TypeScript understandably cannot\n // hope to infer this type.\n var i_1 = incoming;\n // The options.storage objects provided to read and merge functions\n // are derived from the identity of the parent object plus a\n // sequence of storeFieldName strings/numbers identifying the nested\n // field name path of each field value to be merged.\n if (e_1 && !getStorageArgs) {\n getStorageArgs = [isReference(e_1) ? e_1.__ref : e_1];\n }\n // It's possible that applying merge functions to this subtree will\n // not change the incoming data, so this variable tracks the fields\n // that did change, so we can create a new incoming object when (and\n // only when) at least one incoming field has changed. We use a Map\n // to preserve the type of numeric keys.\n var changedFields_1;\n var getValue_1 = function (from, name) {\n return (isArray(from) ?\n typeof name === \"number\" ?\n from[name]\n : void 0\n : context.store.getFieldValue(from, String(name)));\n };\n mergeTree.map.forEach(function (childTree, storeFieldName) {\n var eVal = getValue_1(e_1, storeFieldName);\n var iVal = getValue_1(i_1, storeFieldName);\n // If we have no incoming data, leave any existing data untouched.\n if (void 0 === iVal)\n return;\n if (getStorageArgs) {\n getStorageArgs.push(storeFieldName);\n }\n var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n if (aVal !== iVal) {\n changedFields_1 = changedFields_1 || new Map();\n changedFields_1.set(storeFieldName, aVal);\n }\n if (getStorageArgs) {\n invariant(getStorageArgs.pop() === storeFieldName);\n }\n });\n if (changedFields_1) {\n // Shallow clone i so we can add changed fields to it.\n incoming = (isArray(i_1) ? i_1.slice(0) : __assign({}, i_1));\n changedFields_1.forEach(function (value, name) {\n incoming[name] = value;\n });\n }\n }\n if (mergeTree.info) {\n return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n }\n return incoming;\n };\n return StoreWriter;\n}());\nexport { StoreWriter };\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n var map = _a.map;\n if (!map.has(name)) {\n map.set(name, emptyMergeTreePool.pop() || { map: new Map() });\n }\n return map.get(name);\n}\nfunction mergeMergeTrees(left, right) {\n if (left === right || !right || mergeTreeIsEmpty(right))\n return left;\n if (!left || mergeTreeIsEmpty(left))\n return right;\n var info = left.info && right.info ? __assign(__assign({}, left.info), right.info) : left.info || right.info;\n var needToMergeMaps = left.map.size && right.map.size;\n var map = needToMergeMaps ? new Map()\n : left.map.size ? left.map\n : right.map;\n var merged = { info: info, map: map };\n if (needToMergeMaps) {\n var remainingRightKeys_1 = new Set(right.map.keys());\n left.map.forEach(function (leftTree, key) {\n merged.map.set(key, mergeMergeTrees(leftTree, right.map.get(key)));\n remainingRightKeys_1.delete(key);\n });\n remainingRightKeys_1.forEach(function (key) {\n merged.map.set(key, mergeMergeTrees(right.map.get(key), left.map.get(key)));\n });\n }\n return merged;\n}\nfunction mergeTreeIsEmpty(tree) {\n return !tree || !(tree.info || tree.map.size);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n var map = _a.map;\n var childTree = map.get(name);\n if (childTree && mergeTreeIsEmpty(childTree)) {\n emptyMergeTreePool.push(childTree);\n map.delete(name);\n }\n}\nvar warnings = new Set();\n// Note that this function is unused in production, and thus should be\n// pruned by any well-configured minifier.\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n var getChild = function (objOrRef) {\n var child = store.getFieldValue(objOrRef, storeFieldName);\n return typeof child === \"object\" && child;\n };\n var existing = getChild(existingRef);\n if (!existing)\n return;\n var incoming = getChild(incomingObj);\n if (!incoming)\n return;\n // It's always safe to replace a reference, since it refers to data\n // safely stored elsewhere.\n if (isReference(existing))\n return;\n // If the values are structurally equivalent, we do not need to worry\n // about incoming replacing existing.\n if (equal(existing, incoming))\n return;\n // If we're replacing every key of the existing object, then the\n // existing data would be overwritten even if the objects were\n // normalized, so warning would not be helpful here.\n if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {\n return;\n }\n var parentType = store.getFieldValue(existingRef, \"__typename\") ||\n store.getFieldValue(incomingObj, \"__typename\");\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var typeDotName = \"\".concat(parentType, \".\").concat(fieldName);\n // Avoid warning more than once for the same type and field name.\n if (warnings.has(typeDotName))\n return;\n warnings.add(typeDotName);\n var childTypenames = [];\n // Arrays do not have __typename fields, and always need a custom merge\n // function, even if their elements are normalized entities.\n if (!isArray(existing) && !isArray(incoming)) {\n [existing, incoming].forEach(function (child) {\n var typename = store.getFieldValue(child, \"__typename\");\n if (typeof typename === \"string\" && !childTypenames.includes(typename)) {\n childTypenames.push(typename);\n }\n });\n }\n globalThis.__DEV__ !== false && invariant.warn(14, fieldName, parentType, childTypenames.length ?\n \"either ensure all objects of type \" +\n childTypenames.join(\" and \") +\n \" have an ID or a custom merge function, or \"\n : \"\", typeDotName, __assign({}, existing), __assign({}, incoming));\n}\n","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\n// Make builtins like Map and Set safe to use with non-extensible objects.\nimport \"./fixPolyfills.js\";\nimport { wrap } from \"optimism\";\nimport { equal } from \"@wry/equality\";\nimport { ApolloCache } from \"../core/cache.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { addTypenameToDocument, isReference, DocumentTransform, canonicalStringify, print, cacheSizes, } from \"../../utilities/index.js\";\nimport { StoreReader } from \"./readFromStore.js\";\nimport { StoreWriter } from \"./writeToStore.js\";\nimport { EntityStore, supportsResultCaching } from \"./entityStore.js\";\nimport { makeVar, forgetCache, recallCache } from \"./reactiveVars.js\";\nimport { Policies } from \"./policies.js\";\nimport { hasOwn, normalizeConfig, shouldCanonizeResults } from \"./helpers.js\";\nimport { getInMemoryCacheMemoryInternals } from \"../../utilities/caching/getMemoryInternals.js\";\nvar InMemoryCache = /** @class */ (function (_super) {\n __extends(InMemoryCache, _super);\n function InMemoryCache(config) {\n if (config === void 0) { config = {}; }\n var _this = _super.call(this) || this;\n _this.watches = new Set();\n _this.addTypenameTransform = new DocumentTransform(addTypenameToDocument);\n // Override the default value, since InMemoryCache result objects are frozen\n // in development and expected to remain logically immutable in production.\n _this.assumeImmutableResults = true;\n _this.makeVar = makeVar;\n _this.txCount = 0;\n _this.config = normalizeConfig(config);\n _this.addTypename = !!_this.config.addTypename;\n _this.policies = new Policies({\n cache: _this,\n dataIdFromObject: _this.config.dataIdFromObject,\n possibleTypes: _this.config.possibleTypes,\n typePolicies: _this.config.typePolicies,\n });\n _this.init();\n return _this;\n }\n InMemoryCache.prototype.init = function () {\n // Passing { resultCaching: false } in the InMemoryCache constructor options\n // will completely disable dependency tracking, which will improve memory\n // usage but worsen the performance of repeated reads.\n var rootStore = (this.data = new EntityStore.Root({\n policies: this.policies,\n resultCaching: this.config.resultCaching,\n }));\n // When no optimistic writes are currently active, cache.optimisticData ===\n // cache.data, so there are no additional layers on top of the actual data.\n // When an optimistic update happens, this.optimisticData will become a\n // linked list of EntityStore Layer objects that terminates with the\n // original this.data cache object.\n this.optimisticData = rootStore.stump;\n this.resetResultCache();\n };\n InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {\n var _this = this;\n var previousReader = this.storeReader;\n var fragments = this.config.fragments;\n // The StoreWriter is mostly stateless and so doesn't really need to be\n // reset, but it does need to have its writer.storeReader reference updated,\n // so it's simpler to update this.storeWriter as well.\n this.storeWriter = new StoreWriter(this, (this.storeReader = new StoreReader({\n cache: this,\n addTypename: this.addTypename,\n resultCacheMaxSize: this.config.resultCacheMaxSize,\n canonizeResults: shouldCanonizeResults(this.config),\n canon: resetResultIdentities ? void 0 : (previousReader && previousReader.canon),\n fragments: fragments,\n })), fragments);\n this.maybeBroadcastWatch = wrap(function (c, options) {\n return _this.broadcastWatch(c, options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] ||\n 5000 /* defaultCacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] */,\n makeCacheKey: function (c) {\n // Return a cache key (thus enabling result caching) only if we're\n // currently using a data store that can track cache dependencies.\n var store = c.optimistic ? _this.optimisticData : _this.data;\n if (supportsResultCaching(store)) {\n var optimistic = c.optimistic, id = c.id, variables = c.variables;\n return store.makeCacheKey(c.query, \n // Different watches can have the same query, optimistic\n // status, rootId, and variables, but if their callbacks are\n // different, the (identical) result needs to be delivered to\n // each distinct callback. The easiest way to achieve that\n // separation is to include c.callback in the cache key for\n // maybeBroadcastWatch calls. See issue #5733.\n c.callback, canonicalStringify({ optimistic: optimistic, id: id, variables: variables }));\n }\n },\n });\n // Since we have thrown away all the cached functions that depend on the\n // CacheGroup dependencies maintained by EntityStore, we should also reset\n // all CacheGroup dependency information.\n new Set([this.data.group, this.optimisticData.group]).forEach(function (group) {\n return group.resetCaching();\n });\n };\n InMemoryCache.prototype.restore = function (data) {\n this.init();\n // Since calling this.init() discards/replaces the entire StoreReader, along\n // with the result caches it maintains, this.data.replace(data) won't have\n // to bother deleting the old data.\n if (data)\n this.data.replace(data);\n return this;\n };\n InMemoryCache.prototype.extract = function (optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return (optimistic ? this.optimisticData : this.data).extract();\n };\n InMemoryCache.prototype.read = function (options) {\n var \n // Since read returns data or null, without any additional metadata\n // about whether/where there might have been missing fields, the\n // default behavior cannot be returnPartialData = true (like it is\n // for the diff method), since defaulting to true would violate the\n // integrity of the T in the return type. However, partial data may\n // be useful in some cases, so returnPartialData:true may be\n // specified explicitly.\n _a = options.returnPartialData, \n // Since read returns data or null, without any additional metadata\n // about whether/where there might have been missing fields, the\n // default behavior cannot be returnPartialData = true (like it is\n // for the diff method), since defaulting to true would violate the\n // integrity of the T in the return type. However, partial data may\n // be useful in some cases, so returnPartialData:true may be\n // specified explicitly.\n returnPartialData = _a === void 0 ? false : _a;\n try {\n return (this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, config: this.config, returnPartialData: returnPartialData })).result || null);\n }\n catch (e) {\n if (e instanceof MissingFieldError) {\n // Swallow MissingFieldError and return null, so callers do not need to\n // worry about catching \"normal\" exceptions resulting from incomplete\n // cache data. Unexpected errors will be re-thrown. If you need more\n // information about which fields were missing, use cache.diff instead,\n // and examine diffResult.missing.\n return null;\n }\n throw e;\n }\n };\n InMemoryCache.prototype.write = function (options) {\n try {\n ++this.txCount;\n return this.storeWriter.writeToStore(this.data, options);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.modify = function (options) {\n if (hasOwn.call(options, \"id\") && !options.id) {\n // To my knowledge, TypeScript does not currently provide a way to\n // enforce that an optional property?:type must *not* be undefined\n // when present. That ability would be useful here, because we want\n // options.id to default to ROOT_QUERY only when no options.id was\n // provided. If the caller attempts to pass options.id with a\n // falsy/undefined value (perhaps because cache.identify failed), we\n // should not assume the goal was to modify the ROOT_QUERY object.\n // We could throw, but it seems natural to return false to indicate\n // that nothing was modified.\n return false;\n }\n var store = ((options.optimistic) // Defaults to false.\n ) ?\n this.optimisticData\n : this.data;\n try {\n ++this.txCount;\n return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.diff = function (options) {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, rootId: options.id || \"ROOT_QUERY\", config: this.config }));\n };\n InMemoryCache.prototype.watch = function (watch) {\n var _this = this;\n if (!this.watches.size) {\n // In case we previously called forgetCache(this) because\n // this.watches became empty (see below), reattach this cache to any\n // reactive variables on which it previously depended. It might seem\n // paradoxical that we're able to recall something we supposedly\n // forgot, but the point of calling forgetCache(this) is to silence\n // useless broadcasts while this.watches is empty, and to allow the\n // cache to be garbage collected. If, however, we manage to call\n // recallCache(this) here, this cache object must not have been\n // garbage collected yet, and should resume receiving updates from\n // reactive variables, now that it has a watcher to notify.\n recallCache(this);\n }\n this.watches.add(watch);\n if (watch.immediate) {\n this.maybeBroadcastWatch(watch);\n }\n return function () {\n // Once we remove the last watch from this.watches, cache.broadcastWatches\n // no longer does anything, so we preemptively tell the reactive variable\n // system to exclude this cache from future broadcasts.\n if (_this.watches.delete(watch) && !_this.watches.size) {\n forgetCache(_this);\n }\n // Remove this watch from the LRU cache managed by the\n // maybeBroadcastWatch OptimisticWrapperFunction, to prevent memory\n // leaks involving the closure of watch.callback.\n _this.maybeBroadcastWatch.forget(watch);\n };\n };\n InMemoryCache.prototype.gc = function (options) {\n var _a;\n canonicalStringify.reset();\n print.reset();\n this.addTypenameTransform.resetCache();\n (_a = this.config.fragments) === null || _a === void 0 ? void 0 : _a.resetCaches();\n var ids = this.optimisticData.gc();\n if (options && !this.txCount) {\n if (options.resetResultCache) {\n this.resetResultCache(options.resetResultIdentities);\n }\n else if (options.resetResultIdentities) {\n this.storeReader.resetCanon();\n }\n }\n return ids;\n };\n // Call this method to ensure the given root ID remains in the cache after\n // garbage collection, along with its transitive child entities. Note that\n // the cache automatically retains all directly written entities. By default,\n // the retainment persists after optimistic updates are removed. Pass true\n // for the optimistic argument if you would prefer for the retainment to be\n // discarded when the top-most optimistic layer is removed. Returns the\n // resulting (non-negative) retainment count.\n InMemoryCache.prototype.retain = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).retain(rootId);\n };\n // Call this method to undo the effect of the retain method, above. Once the\n // retainment count falls to zero, the given ID will no longer be preserved\n // during garbage collection, though it may still be preserved by other safe\n // entities that refer to it. Returns the resulting (non-negative) retainment\n // count, in case that's useful.\n InMemoryCache.prototype.release = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).release(rootId);\n };\n // Returns the canonical ID for a given StoreObject, obeying typePolicies\n // and keyFields (and dataIdFromObject, if you still use that). At minimum,\n // the object must contain a __typename and any primary key fields required\n // to identify entities of that type. If you pass a query result object, be\n // sure that none of the primary key fields have been renamed by aliasing.\n // If you pass a Reference object, its __ref ID string will be returned.\n InMemoryCache.prototype.identify = function (object) {\n if (isReference(object))\n return object.__ref;\n try {\n return this.policies.identify(object)[0];\n }\n catch (e) {\n globalThis.__DEV__ !== false && invariant.warn(e);\n }\n };\n InMemoryCache.prototype.evict = function (options) {\n if (!options.id) {\n if (hasOwn.call(options, \"id\")) {\n // See comment in modify method about why we return false when\n // options.id exists but is falsy/undefined.\n return false;\n }\n options = __assign(__assign({}, options), { id: \"ROOT_QUERY\" });\n }\n try {\n // It's unlikely that the eviction will end up invoking any other\n // cache update operations while it's running, but {in,de}crementing\n // this.txCount still seems like a good idea, for uniformity with\n // the other update methods.\n ++this.txCount;\n // Pass this.data as a limit on the depth of the eviction, so evictions\n // during optimistic updates (when this.data is temporarily set equal to\n // this.optimisticData) do not escape their optimistic Layer.\n return this.optimisticData.evict(options, this.data);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.reset = function (options) {\n var _this = this;\n this.init();\n canonicalStringify.reset();\n if (options && options.discardWatches) {\n // Similar to what happens in the unsubscribe function returned by\n // cache.watch, applied to all current watches.\n this.watches.forEach(function (watch) { return _this.maybeBroadcastWatch.forget(watch); });\n this.watches.clear();\n forgetCache(this);\n }\n else {\n // Calling this.init() above unblocks all maybeBroadcastWatch caching, so\n // this.broadcastWatches() triggers a broadcast to every current watcher\n // (letting them know their data is now missing). This default behavior is\n // convenient because it means the watches do not have to be manually\n // reestablished after resetting the cache. To prevent this broadcast and\n // cancel all watches, pass true for options.discardWatches.\n this.broadcastWatches();\n }\n return Promise.resolve();\n };\n InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n if (newOptimisticData !== this.optimisticData) {\n this.optimisticData = newOptimisticData;\n this.broadcastWatches();\n }\n };\n InMemoryCache.prototype.batch = function (options) {\n var _this = this;\n var update = options.update, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, removeOptimistic = options.removeOptimistic, onWatchUpdated = options.onWatchUpdated;\n var updateResult;\n var perform = function (layer) {\n var _a = _this, data = _a.data, optimisticData = _a.optimisticData;\n ++_this.txCount;\n if (layer) {\n _this.data = _this.optimisticData = layer;\n }\n try {\n return (updateResult = update(_this));\n }\n finally {\n --_this.txCount;\n _this.data = data;\n _this.optimisticData = optimisticData;\n }\n };\n var alreadyDirty = new Set();\n if (onWatchUpdated && !this.txCount) {\n // If an options.onWatchUpdated callback is provided, we want to call it\n // with only the Cache.WatchOptions objects affected by options.update,\n // but there might be dirty watchers already waiting to be broadcast that\n // have nothing to do with the update. To prevent including those watchers\n // in the post-update broadcast, we perform this initial broadcast to\n // collect the dirty watchers, so we can re-dirty them later, after the\n // post-update broadcast, allowing them to receive their pending\n // broadcasts the next time broadcastWatches is called, just as they would\n // if we never called cache.batch.\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch) {\n alreadyDirty.add(watch);\n return false;\n } }));\n }\n if (typeof optimistic === \"string\") {\n // Note that there can be multiple layers with the same optimistic ID.\n // When removeOptimistic(id) is called for that id, all matching layers\n // will be removed, and the remaining layers will be reapplied.\n this.optimisticData = this.optimisticData.addLayer(optimistic, perform);\n }\n else if (optimistic === false) {\n // Ensure both this.data and this.optimisticData refer to the root\n // (non-optimistic) layer of the cache during the update. Note that\n // this.data could be a Layer if we are currently executing an optimistic\n // update function, but otherwise will always be an EntityStore.Root\n // instance.\n perform(this.data);\n }\n else {\n // Otherwise, leave this.data and this.optimisticData unchanged and run\n // the update with broadcast batching.\n perform();\n }\n if (typeof removeOptimistic === \"string\") {\n this.optimisticData = this.optimisticData.removeLayer(removeOptimistic);\n }\n // Note: if this.txCount > 0, then alreadyDirty.size === 0, so this code\n // takes the else branch and calls this.broadcastWatches(options), which\n // does nothing when this.txCount > 0.\n if (onWatchUpdated && alreadyDirty.size) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch, diff) {\n var result = onWatchUpdated.call(this, watch, diff);\n if (result !== false) {\n // Since onWatchUpdated did not return false, this diff is\n // about to be broadcast to watch.callback, so we don't need\n // to re-dirty it with the other alreadyDirty watches below.\n alreadyDirty.delete(watch);\n }\n return result;\n } }));\n // Silently re-dirty any watches that were already dirty before the update\n // was performed, and were not broadcast just now.\n if (alreadyDirty.size) {\n alreadyDirty.forEach(function (watch) { return _this.maybeBroadcastWatch.dirty(watch); });\n }\n }\n else {\n // If alreadyDirty is empty or we don't have an onWatchUpdated\n // function, we don't need to go to the trouble of wrapping\n // options.onWatchUpdated.\n this.broadcastWatches(options);\n }\n return updateResult;\n };\n InMemoryCache.prototype.performTransaction = function (update, optimisticId) {\n return this.batch({\n update: update,\n optimistic: optimisticId || optimisticId !== null,\n });\n };\n InMemoryCache.prototype.transformDocument = function (document) {\n return this.addTypenameToDocument(this.addFragmentsToDocument(document));\n };\n InMemoryCache.prototype.broadcastWatches = function (options) {\n var _this = this;\n if (!this.txCount) {\n this.watches.forEach(function (c) { return _this.maybeBroadcastWatch(c, options); });\n }\n };\n InMemoryCache.prototype.addFragmentsToDocument = function (document) {\n var fragments = this.config.fragments;\n return fragments ? fragments.transform(document) : document;\n };\n InMemoryCache.prototype.addTypenameToDocument = function (document) {\n if (this.addTypename) {\n return this.addTypenameTransform.transformDocument(document);\n }\n return document;\n };\n // This method is wrapped by maybeBroadcastWatch, which is called by\n // broadcastWatches, so that we compute and broadcast results only when\n // the data that would be broadcast might have changed. It would be\n // simpler to check for changes after recomputing a result but before\n // broadcasting it, but this wrapping approach allows us to skip both\n // the recomputation and the broadcast, in most cases.\n InMemoryCache.prototype.broadcastWatch = function (c, options) {\n var lastDiff = c.lastDiff;\n // Both WatchOptions and DiffOptions extend ReadOptions, and DiffOptions\n // currently requires no additional properties, so we can use c (a\n // WatchOptions object) as DiffOptions, without having to allocate a new\n // object, and without having to enumerate the relevant properties (query,\n // variables, etc.) explicitly. There will be some additional properties\n // (lastDiff, callback, etc.), but cache.diff ignores them.\n var diff = this.diff(c);\n if (options) {\n if (c.optimistic && typeof options.optimistic === \"string\") {\n diff.fromOptimisticTransaction = true;\n }\n if (options.onWatchUpdated &&\n options.onWatchUpdated.call(this, c, diff, lastDiff) === false) {\n // Returning false from the onWatchUpdated callback will prevent\n // calling c.callback(diff) for this watcher.\n return;\n }\n }\n if (!lastDiff || !equal(lastDiff.result, diff.result)) {\n c.callback((c.lastDiff = diff), lastDiff);\n }\n };\n return InMemoryCache;\n}(ApolloCache));\nexport { InMemoryCache };\nif (globalThis.__DEV__ !== false) {\n InMemoryCache.prototype.getMemoryInternals = getInMemoryCacheMemoryInternals;\n}\n","import { NgModule } from '@angular/core';\nimport { APOLLO_OPTIONS, ApolloModule } from 'apollo-angular';\nimport { HttpLink } from 'apollo-angular/http';\nimport { ApolloClientOptions, ApolloLink, InMemoryCache } from '@apollo/client/core';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { setContext } from '@apollo/client/link/context';\n\nimport { environment } from 'src/environments/environment';\n\nexport function createApollo(httpLink: HttpLink, authService: AuthService): ApolloClientOptions {\n const auth = setContext((operation, context) => {\n return {\n headers: {\n Authorization: `Bearer ${authService.getToken()}`\n }\n };\n });\n\n const link = ApolloLink.from([auth, httpLink.create({ uri: `${environment.coachApiUrl}/graphql` })]);\n\n return {\n link,\n cache: new InMemoryCache()\n };\n}\n@NgModule({\n exports: [ApolloModule],\n providers: [\n {\n provide: APOLLO_OPTIONS,\n useFactory: createApollo,\n deps: [HttpLink, AuthService]\n }\n ]\n})\nexport class GraphQLModule {}\n","import { __rest } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nexport function setContext(setter) {\n return new ApolloLink(function (operation, forward) {\n var request = __rest(operation, []);\n return new Observable(function (observer) {\n var handle;\n var closed = false;\n Promise.resolve(request)\n .then(function (req) { return setter(req, operation.getContext()); })\n .then(operation.setContext)\n .then(function () {\n // if the observer is already closed, no need to subscribe.\n if (closed)\n return;\n handle = forward(operation).subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n })\n .catch(observer.error.bind(observer));\n return function () {\n closed = true;\n if (handle)\n handle.unsubscribe();\n };\n });\n });\n}\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\n\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* RuntimeErrorCode.INVALID_TIMING_VALUE */, ngDevMode && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* RuntimeErrorCode.NEGATIVE_STEP_VALUE */, ngDevMode && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* RuntimeErrorCode.NEGATIVE_DELAY_VALUE */, ngDevMode && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* RuntimeErrorCode.INVALID_STYLE_PARAMS */, ngDevMode &&\n `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* RuntimeErrorCode.INVALID_PARAM_VALUE */, ngDevMode && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* RuntimeErrorCode.INVALID_NODE_TYPE */, ngDevMode && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* RuntimeErrorCode.INVALID_CSS_UNIT_VALUE */, ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* RuntimeErrorCode.INVALID_TRIGGER */, ngDevMode &&\n 'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* RuntimeErrorCode.INVALID_DEFINITION */, ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* RuntimeErrorCode.INVALID_STATE */, ngDevMode &&\n `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* RuntimeErrorCode.INVALID_STYLE_VALUE */, ngDevMode && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* RuntimeErrorCode.INVALID_PROPERTY */, ngDevMode &&\n `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* RuntimeErrorCode.INVALID_PARALLEL_ANIMATION */, ngDevMode &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* RuntimeErrorCode.INVALID_KEYFRAMES */, ngDevMode && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* RuntimeErrorCode.INVALID_OFFSET */, ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER */, ngDevMode && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS */, ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* RuntimeErrorCode.INVALID_STAGGER */, ngDevMode && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* RuntimeErrorCode.INVALID_QUERY */, ngDevMode &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* RuntimeErrorCode.INVALID_EXPRESSION */, ngDevMode && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* RuntimeErrorCode.INVALID_TRANSITION_ALIAS */, ngDevMode && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* RuntimeErrorCode.VALIDATION_FAILED */, ngDevMode && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* RuntimeErrorCode.BUILDING_FAILED */, ngDevMode && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* RuntimeErrorCode.TRIGGER_BUILD_FAILED */, ngDevMode &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.map(err => err.message).join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* RuntimeErrorCode.ANIMATION_FAILED */, ngDevMode &&\n `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* RuntimeErrorCode.REGISTRATION_FAILED */, ngDevMode &&\n `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION */, ngDevMode && 'The requested animation doesn\\'t exist or has already been destroyed');\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* RuntimeErrorCode.CREATE_ANIMATION_FAILED */, ngDevMode &&\n `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* RuntimeErrorCode.MISSING_PLAYER */, ngDevMode && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* RuntimeErrorCode.MISSING_TRIGGER */, ngDevMode &&\n `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* RuntimeErrorCode.MISSING_EVENT */, ngDevMode &&\n `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT */, ngDevMode &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* RuntimeErrorCode.UNREGISTERED_TRIGGER */, ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED */, ngDevMode &&\n `Unable to process animations due to the following failed trigger transitions\\n ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* RuntimeErrorCode.TRIGGER_PARSING_FAILED */, ngDevMode &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* RuntimeErrorCode.TRANSITION_FAILED */, ngDevMode && `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\n- ')}`);\n}\n\n/**\n * Set of all animatable CSS properties\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties\n */\nconst ANIMATABLE_PROP_SET = new Set([\n '-moz-outline-radius',\n '-moz-outline-radius-bottomleft',\n '-moz-outline-radius-bottomright',\n '-moz-outline-radius-topleft',\n '-moz-outline-radius-topright',\n '-ms-grid-columns',\n '-ms-grid-rows',\n '-webkit-line-clamp',\n '-webkit-text-fill-color',\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'accent-color',\n 'all',\n 'backdrop-filter',\n 'background',\n 'background-color',\n 'background-position',\n 'background-size',\n 'block-size',\n 'border',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-width',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image-outset',\n 'border-image-slice',\n 'border-image-width',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-width',\n 'border-left',\n 'border-left-color',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-width',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-shadow',\n 'caret-color',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-width',\n 'column-width',\n 'columns',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-grow',\n 'flex-shrink',\n 'font',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-variation-settings',\n 'font-weight',\n 'gap',\n 'grid-column-gap',\n 'grid-gap',\n 'grid-row-gap',\n 'grid-template-columns',\n 'grid-template-rows',\n 'height',\n 'inline-size',\n 'input-security',\n 'inset',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'left',\n 'letter-spacing',\n 'line-clamp',\n 'line-height',\n 'margin',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'mask',\n 'mask-border',\n 'mask-position',\n 'mask-size',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-lines',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-width',\n 'padding',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'perspective',\n 'perspective-origin',\n 'right',\n 'rotate',\n 'row-gap',\n 'scale',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-coordinate',\n 'scroll-snap-destination',\n 'scrollbar-color',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'tab-size',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-indent',\n 'text-shadow',\n 'text-underline-offset',\n 'top',\n 'transform',\n 'transform-origin',\n 'translate',\n 'vertical-align',\n 'visibility',\n 'width',\n 'word-spacing',\n 'z-index',\n 'zoom',\n]);\n\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes$1(normalizer, keyframes, preStyles = new Map(), postStyles = new Map()) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf.get('offset');\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || new Map();\n kf.forEach((val, prop) => {\n let normalizedProp = prop;\n let normalizedValue = val;\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles.get(prop);\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles.get(prop);\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe.set(normalizedProp, normalizedValue);\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetDefaultValue(map, key, defaultValue) {\n let value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.slice(separatorPos + 1);\n return [id, action];\n}\nconst documentElement = \n/* @__PURE__ */ (() => typeof document === 'undefined' ? null : document.documentElement)();\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host || null; // consider host to support shadow DOM\n if (parent === documentElement) {\n return null;\n }\n return parent;\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? ('WebkitAppearance' in _CACHED_BODY.style) : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction validateWebAnimatableStyleProperty(prop) {\n return ANIMATABLE_PROP_SET.has(prop);\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nfunction containsElement(elm1, elm2) {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n}\nfunction invokeQuery(element, selector, multi) {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n}\nfunction hypenatePropsKeys(original) {\n const newMap = new Map();\n original.forEach((val, prop) => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newMap.set(newProp, val);\n });\n return newMap;\n}\n\n/**\n * @publicApi\n */\nclass NoopAnimationDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationDriver }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n static { this.NOOP = ( /* @__PURE__ */new NoopAnimationDriver()); }\n}\n\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return { duration, delay, easing };\n}\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\nfunction convertToMap(obj) {\n const styleMap = new Map();\n Object.keys(obj).forEach(prop => {\n const val = obj[prop];\n styleMap.set(prop, val);\n });\n return styleMap;\n}\nfunction normalizeKeyframes(keyframes) {\n if (!keyframes.length) {\n return [];\n }\n if (keyframes[0] instanceof Map) {\n return keyframes;\n }\n return keyframes.map(kf => convertToMap(kf));\n}\nfunction normalizeStyles(styles) {\n const normalizedStyles = new Map();\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, normalizedStyles));\n }\n else {\n copyStyles(styles, normalizedStyles);\n }\n return normalizedStyles;\n}\nfunction copyStyles(styles, destination = new Map(), backfill) {\n if (backfill) {\n for (let [prop, val] of backfill) {\n destination.set(prop, val);\n }\n }\n for (let [prop, val] of styles) {\n destination.set(prop, val);\n }\n return destination;\n}\nfunction setStyles(element, styles, formerStyles) {\n styles.forEach((val, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.has(prop)) {\n formerStyles.set(prop, element.style[camelProp]);\n }\n element.style[camelProp] = val;\n });\n}\nfunction eraseStyles(element, styles) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (localVal == null) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nfunction iteratorToArray(iterator) {\n const arr = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n if (previousStyles.size && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyles.forEach((val, prop) => {\n if (!startingKeyframe.has(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe.set(prop, val);\n });\n if (missingStyleProps.length) {\n for (let i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* AnimationMetadataType.Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* AnimationMetadataType.State */:\n return visitor.visitState(node, context);\n case 1 /* AnimationMetadataType.Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* AnimationMetadataType.Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* AnimationMetadataType.Group */:\n return visitor.visitGroup(node, context);\n case 4 /* AnimationMetadataType.Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* AnimationMetadataType.Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* AnimationMetadataType.Style */:\n return visitor.visitStyle(node, context);\n case 8 /* AnimationMetadataType.Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimationMetadataType.AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimationMetadataType.AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* AnimationMetadataType.Query */:\n return visitor.visitQuery(node, context);\n case 12 /* AnimationMetadataType.Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\n\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (props.length) {\n warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`);\n }\n}\n\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\n\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`s*${SELF_TOKEN}s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]);\n }\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = new Map();\n context.collectedStyles.set(ROOT_SELECTOR, new Map());\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* AnimationMetadataType.State */) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == 1 /* AnimationMetadataType.Transition */) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: 7 /* AnimationMetadataType.Trigger */,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(style => {\n if (style instanceof Map) {\n style.forEach(value => {\n extractStyleParams(value).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(invalidState(metadata.name, missingSubsArr));\n }\n }\n return {\n type: 0 /* AnimationMetadataType.State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* AnimationMetadataType.Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: 2 /* AnimationMetadataType.Sequence */,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: 3 /* AnimationMetadataType.Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* AnimationMetadataType.Keyframes */) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* AnimationMetadataType.Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];\n for (let styleTuple of metadataStyles) {\n if (typeof styleTuple === 'string') {\n if (styleTuple === AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n }\n else {\n styles.push(convertToMap(styleTuple));\n }\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (styleData instanceof Map) {\n if (styleData.has('easing')) {\n collectedEasing = styleData.get('easing');\n styleData.delete('easing');\n }\n if (!containsDynamicStyles) {\n for (let value of styleData.values()) {\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: 6 /* AnimationMetadataType.Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple === 'string')\n return;\n tuple.forEach((value, prop) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._driver.validateStyleProperty(prop)) {\n tuple.delete(prop);\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n }\n // This is guaranteed to have a defined Map at this querySelector location making it\n // safe to add the assertion here. It is set as a default empty map in prior methods.\n const collectedStyles = context.collectedStyles.get(context.currentQuerySelector);\n const collectedEntry = collectedStyles.get(prop);\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles.set(prop, { startTime, endTime });\n }\n if (context.options) {\n validateStyleParams(value, context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: 5 /* AnimationMetadataType.Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: 8 /* AnimationMetadataType.Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimationMetadataType.AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimationMetadataType.AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* AnimationMetadataType.Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* AnimationMetadataType.Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = new Map();\n this.options = null;\n this.unsupportedCSSPropertiesFound = new Set();\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (styleTuple instanceof Map && styleTuple.has('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n });\n }\n else if (styles instanceof Map && styles.has('offset')) {\n const obj = styles;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n return offset;\n}\nfunction constructTimingAst(value, errors) {\n if (value.hasOwnProperty('duration')) {\n return value;\n }\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* AnimationTransitionInstructionType.TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\n\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill map. The `copyStyles` method in util.ts\n * handles propagating that backfill map to the styles object.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = new Map(), finalStyles = new Map(), options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n context.currentTimeline.delayNextStep(delay);\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n if (timelines.length && finalStyles.size) {\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ?\n timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext);\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _applyAnimationRefDelays(animationsRefsOptions, context, innerContext) {\n for (const animationRefOptions of animationsRefsOptions) {\n const animationDelay = animationRefOptions?.delay;\n if (animationDelay) {\n const animationDelayValue = typeof animationDelay === 'number' ?\n animationDelay :\n resolveTimingValue(interpolateParams(animationDelay, animationRefOptions?.params ?? {}, context.errors));\n innerContext.delayNextStep(animationDelayValue);\n }\n }\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* AnimationMetadataType.Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == 5 /* AnimationMetadataType.Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.hasCurrentStyleProperties()) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = (context.currentTimeline).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === 6 /* AnimationMetadataType.Style */ ||\n (startTime == 0 && context.currentTimeline.hasCurrentStyleProperties()))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this.easing = null;\n this._previousKeyframe = new Map();\n this._currentKeyframe = new Map();\n this._keyframes = new Map();\n this._styleSummary = new Map();\n this._localTimelineStyles = new Map();\n this._pendingStyles = new Map();\n this._backFill = new Map();\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.hasCurrentStyleProperties();\n default:\n return true;\n }\n }\n hasCurrentStyleProperties() {\n return this._currentKeyframe.size > 0;\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = new Map();\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles.set(prop, value);\n this._globalTimelineStyles.set(prop, value);\n this._styleSummary.set(prop, { time: this.currentTime, value });\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n for (let [prop, value] of this._globalTimelineStyles) {\n this._backFill.set(prop, value || AUTO_STYLE);\n this._currentKeyframe.set(prop, AUTO_STYLE);\n }\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n for (let [prop, value] of styles) {\n const val = interpolateParams(value, params, errors);\n this._pendingStyles.set(prop, val);\n if (!this._localTimelineStyles.has(prop)) {\n this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? AUTO_STYLE);\n }\n this._updateStyle(prop, val);\n }\n }\n applyStylesToKeyframe() {\n if (this._pendingStyles.size == 0)\n return;\n this._pendingStyles.forEach((val, prop) => {\n this._currentKeyframe.set(prop, val);\n });\n this._pendingStyles.clear();\n this._localTimelineStyles.forEach((val, prop) => {\n if (!this._currentKeyframe.has(prop)) {\n this._currentKeyframe.set(prop, val);\n }\n });\n }\n snapshotCurrentStyles() {\n for (let [prop, val] of this._localTimelineStyles) {\n this._pendingStyles.set(prop, val);\n this._updateStyle(prop, val);\n }\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n timeline._styleSummary.forEach((details1, prop) => {\n const details0 = this._styleSummary.get(prop);\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, new Map(), this._backFill);\n finalKeyframe.forEach((value, prop) => {\n if (value === ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value === AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe.set('offset', time / this.duration);\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = new Map(kf0);\n kf0.set('offset', 0);\n kf1.set('offset', 1);\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0]);\n newFirstKeyframe.set('offset', 0);\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = copyStyles(keyframes[0]);\n oldFirstKeyframe.set('offset', roundOffset(startingGap));\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i]);\n const oldOffset = kf.get('offset');\n const timeAtKeyframe = delay + oldOffset * duration;\n kf.set('offset', roundOffset(timeAtKeyframe / totalTime));\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = new Map();\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || allStyles.keys();\n for (let prop of allProperties) {\n styles.set(prop, AUTO_STYLE);\n }\n }\n else {\n copyStyles(token, styles);\n }\n });\n return styles;\n}\n\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (warnings.length) {\n warnValidation(warnings);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\n\n/**\n * @publicApi\n */\nclass AnimationStyleNormalizer {\n}\n/**\n * @publicApi\n */\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\n\nconst DIMENSIONAL_PROP_SET = new Set([\n 'width',\n 'height',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'left',\n 'top',\n 'bottom',\n 'right',\n 'fontSize',\n 'outlineWidth',\n 'outlineOffset',\n 'paddingTop',\n 'paddingLeft',\n 'paddingBottom',\n 'paddingRight',\n 'marginTop',\n 'marginLeft',\n 'marginBottom',\n 'marginRight',\n 'borderRadius',\n 'borderWidth',\n 'borderTopWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'textIndent',\n 'perspective'\n]);\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\n\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* AnimationTransitionInstructionType.TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n let styler = this._stateStyles.get('*');\n if (stateName !== undefined) {\n styler = this._stateStyles.get(stateName?.toString()) || styler;\n }\n return styler ? styler.buildStyles(params, errors) : new Map();\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = {\n params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),\n delay: this.ast.options?.delay,\n };\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set());\n tl.preStyleProps.forEach(prop => preProps.add(prop));\n const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set());\n tl.postStyleProps.forEach(prop => postProps.add(prop));\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n checkNonAnimatableInTimelines(timelines, this._triggerName, driver);\n }\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\n/**\n * Checks inside a set of timelines if they try to animate a css property which is not considered\n * animatable, in that case it prints a warning on the console.\n * Besides that the function doesn't have any other effect.\n *\n * Note: this check is done here after the timelines are built instead of doing on a lower level so\n * that we can make sure that the warning appears only once per instruction (we can aggregate here\n * all the issues instead of finding them separately).\n *\n * @param timelines The built timelines for the current instruction.\n * @param triggerName The name of the trigger for the current instruction.\n * @param driver Animation driver used to perform the check.\n *\n */\nfunction checkNonAnimatableInTimelines(timelines, triggerName, driver) {\n if (!driver.validateAnimatableStyleProperty) {\n return;\n }\n const allowedNonAnimatableProps = new Set([\n // 'easing' is a utility/synthetic prop we use to represent\n // easing functions, it represents a property of the animation\n // which is not animatable but different values can be used\n // in different steps\n 'easing'\n ]);\n const invalidNonAnimatableProps = new Set();\n timelines.forEach(({ keyframes }) => {\n const nonAnimatablePropsInitialValues = new Map();\n keyframes.forEach(keyframe => {\n const entriesToCheck = Array.from(keyframe.entries()).filter(([prop]) => !allowedNonAnimatableProps.has(prop));\n for (const [prop, value] of entriesToCheck) {\n if (!driver.validateAnimatableStyleProperty(prop)) {\n if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) {\n const propInitialValue = nonAnimatablePropsInitialValues.get(prop);\n if (propInitialValue !== value) {\n invalidNonAnimatableProps.add(prop);\n }\n }\n else {\n nonAnimatablePropsInitialValues.set(prop, value);\n }\n }\n }\n });\n });\n if (invalidNonAnimatableProps.size > 0) {\n console.warn(`Warning: The animation trigger \"${triggerName}\" is attempting to animate the following` +\n ' not animatable properties: ' + Array.from(invalidNonAnimatableProps).join(', ') + '\\n' +\n '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)');\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nfunction applyParamDefaults(userParams, defaults) {\n const result = copyObj(defaults);\n for (const key in userParams) {\n if (userParams.hasOwnProperty(key) && userParams[key] != null) {\n result[key] = userParams[key];\n }\n }\n return result;\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = new Map();\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value !== null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n value.forEach((val, prop) => {\n if (val) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles.set(prop, val);\n });\n }\n });\n return finalStyles;\n }\n}\n\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n this.transitionFactories = [];\n this.states = new Map();\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: 2 /* AnimationMetadataType.Sequence */, steps: [], options: null };\n const transition = {\n type: 1 /* AnimationMetadataType.Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(stateMap, key1, key2) {\n if (stateMap.has(key1)) {\n if (!stateMap.has(key2)) {\n stateMap.set(key2, stateMap.get(key1));\n }\n }\n else if (stateMap.has(key2)) {\n stateMap.set(key1, stateMap.get(key2));\n }\n}\n\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = new Map();\n this._playersById = new Map();\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n }\n else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations.set(id, ast);\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes$1(this._normalizer, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations.get(id);\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(), options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetDefaultValue(autoStylesMap, inst.element, new Map());\n inst.postStyleProps.forEach(prop => styles.set(prop, null));\n });\n }\n else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n styles.forEach((_, prop) => {\n styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, new Map(), styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById.set(id, player);\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n this._playersById.delete(id);\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById.get(id);\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n get params() {\n return this.options.params;\n }\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input);\n delete options['value'];\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = new Map();\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.has(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetDefaultValue(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetDefaultValue(this._engine.statesByElement, element, new Map());\n if (!triggersWithStates.has(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates.set(name, DEFAULT_STATE_VALUE);\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers.has(name)) {\n triggersWithStates.delete(name);\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers.has(name)) {\n // throw\n return false;\n }\n else {\n this._triggers.set(name, ast);\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers.get(name);\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = new Map());\n }\n let fromState = triggersWithStates.get(triggerName);\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates.set(triggerName, toState);\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetDefaultValue(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n this._triggers.delete(name);\n this._engine.statesByElement.forEach(stateMap => stateMap.delete(name));\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n triggerStates.forEach((state, triggerName) => {\n previousTriggersValues.set(triggerName, state.value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers.has(triggerName)) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers.get(triggerName);\n const transition = trigger.fallbackTransition;\n const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n}\nclass TransitionAnimationEngine {\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,\n // establishing a top-down ordering of namespaces in `this._namespaceList`.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n }\n else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n this.afterFlush(() => { });\n this.afterFlushAnimationsDone(() => {\n const ns = this._fetchNamespace(namespaceId);\n this.namespacesByHostElement.delete(ns.hostElement);\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n ns.destroy(context);\n delete this._namespaceLookup[namespaceId];\n });\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n for (let stateValue of elementStates.values()) {\n if (stateValue.namespaceId) {\n const ns = this._fetchNamespace(stateValue.namespaceId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if (element.classList?.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n }\n else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {\n const state = triggersWithStates.get(entry.triggerName);\n state.value = previousValue;\n triggersWithStates.set(entry.triggerName, state);\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetDefaultValue(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n if (stringMap.size) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, new Map([...(post?.entries() ?? []), ...(pre?.entries() ?? [])]));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes$1(this._normalizer, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = new Map();\n this.destroyed = false;\n this.parentPlayer = null;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n this._queuedCallbacks.forEach((callbacks, phase) => {\n callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks.clear();\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = new Map();\n props.forEach(prop => {\n const value = driver.computeStyle(element, prop, defaultStyle);\n styles.set(prop, value);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n element.classList?.add(className);\n}\nfunction removeClass(element, className) {\n element.classList?.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context) {\n this._transitionEngine.removeNode(namespaceId, element, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return [\n ...this._transitionEngine.players,\n ...this._timelineEngine.players,\n ];\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n afterFlushAnimationsDone(cb) {\n this._transitionEngine.afterFlushAnimationsDone(cb);\n }\n}\n\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles instanceof Map) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n static { this.initialStylesByElement = ( /* @__PURE__ */new WeakMap()); }\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* SpecialCasedStylesState.Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map());\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* SpecialCasedStylesState.Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* SpecialCasedStylesState.Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* SpecialCasedStylesState.Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* SpecialCasedStylesState.Destroyed */;\n }\n }\n}\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n styles.forEach((val, prop) => {\n if (isNonAnimatableStyle(prop)) {\n result = result || new Map();\n result.set(prop, val);\n }\n });\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n // the following original fns are persistent copies of the _onStartFns and _onDoneFns\n // and are used to reset the fns to their original values upon reset()\n // (since the _onStartFns and _onDoneFns get deleted after they are called)\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = new Map();\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n // @ts-expect-error overwriting a readonly property\n this.domPlayer = this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();\n const onFinish = () => this._onFinish();\n this.domPlayer.addEventListener('finish', onFinish);\n this.onDestroy(() => {\n // We must remove the `finish` event listener once an animation has completed all its\n // iterations. This action is necessary to prevent a memory leak since the listener captures\n // `this`, creating a closure that prevents `this` from being garbage collected.\n this.domPlayer.removeEventListener('finish', onFinish);\n });\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n _convertKeyframesToObject(keyframes) {\n const kfs = [];\n keyframes.forEach(frame => {\n kfs.push(Object.fromEntries(frame));\n });\n return kfs;\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n return element.animate(this._convertKeyframesToObject(keyframes), options);\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n // tsc is complaining with TS2362 without the conversion to number\n return +(this.domPlayer.currentTime ?? 0) / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = new Map();\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n finalKeyframe.forEach((val, prop) => {\n if (prop !== 'offset') {\n styles.set(prop, this._finished ? val : computeStyle(this.element, prop));\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return validateStyleProperty(prop);\n }\n return true;\n }\n validateAnimatableStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const cssProp = camelCaseToDashCase(prop);\n return validateWebAnimatableStyleProperty(cssProp);\n }\n return true;\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = new Map();\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));\n });\n }\n let _keyframes = normalizeKeyframes(keyframes).map(styles => copyStyles(styles));\n _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, _keyframes);\n return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);\n }\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, NoopAnimationDriver as ɵNoopAnimationDriver, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, containsElement as ɵcontainsElement, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, normalizeKeyframes as ɵnormalizeKeyframes, validateStyleProperty as ɵvalidateStyleProperty };\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ViewEncapsulation, Injectable, Inject, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE, NgModule } from '@angular/core';\nexport { ANIMATION_MODULE_TYPE } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport { AnimationBuilder, sequence, AnimationFactory } from '@angular/animations';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, ɵNoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\n\nclass BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this._nextAnimationId = 0;\n const typeData = { id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: { animation: [] } };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n }\n build(animation) {\n const id = this._nextAnimationId.toString();\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationBuilder }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n return issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n return this._renderer.engine.players[+this.id]?.getPosition() ?? 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n return renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass AnimationRendererFactory {\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n this._currentId = 0;\n this._microtaskId = 1;\n this._animationCallbacksBuffer = [];\n this._rendererCache = new Map();\n this._cdRecurDepth = 0;\n engine.onRemovalComplete = (element, delegate) => {\n // Note: if a component element has a leave animation, and a host leave animation,\n // the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n const parentNode = delegate?.parentNode(element);\n if (parentNode) {\n delegate.removeChild(parentNode, element);\n }\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type || !type.data || !type.data['animation']) {\n let renderer = this._rendererCache.get(delegate);\n if (!renderer) {\n // Ensure that the renderer is removed from the cache on destroy\n // since it may contain references to detached DOM nodes.\n const onRendererDestroy = () => this._rendererCache.delete(delegate);\n renderer =\n new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine, onRendererDestroy);\n // only cache this result when the base renderer is used\n this._rendererCache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = (trigger) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n }\n else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n queueMicrotask(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n if (this._animationCallbacksBuffer.length == 0) {\n queueMicrotask(() => {\n this._zone.run(() => {\n this._animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n this._animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AnimationRendererFactory, deps: [{ token: i0.RendererFactory2 }, { token: i1.ɵAnimationEngine }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AnimationRendererFactory }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AnimationRendererFactory, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: i1.ɵAnimationEngine }, { type: i0.NgZone }]; } });\nclass BaseAnimationRenderer {\n constructor(namespaceId, delegate, engine, _onDestroy) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this._onDestroy = _onDestroy;\n }\n get data() {\n return this.delegate.data;\n }\n destroyNode(node) {\n this.delegate.destroyNode?.(node);\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.engine.afterFlushAnimationsDone(() => {\n // Call the renderer destroy method after the animations has finished as otherwise\n // styles will be removed too early which will cause an unstyled animation.\n queueMicrotask(() => {\n this.delegate.destroy();\n });\n });\n this._onDestroy?.();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n constructor(factory, namespaceId, delegate, engine, onDestroy) {\n super(namespaceId, delegate, engine, onDestroy);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n }\n else {\n this.engine.process(this.namespaceId, el, name.slice(1), value);\n }\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.slice(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.slice(dotIndex + 1);\n return [trigger, phase];\n}\n\nclass InjectableAnimationEngine extends ɵAnimationEngine {\n // The `ApplicationRef` is injected here explicitly to force the dependency ordering.\n // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they\n // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.\n constructor(doc, driver, normalizer, appRef) {\n super(doc.body, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: InjectableAnimationEngine }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: InjectableAnimationEngine, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.AnimationDriver }, { type: i1.ɵAnimationStyleNormalizer }, { type: i0.ApplicationRef }]; } });\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new AnimationRendererFactory(renderer, engine, zone);\n}\nconst SHARED_ANIMATION_PROVIDERS = [\n { provide: AnimationBuilder, useClass: BrowserAnimationBuilder },\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: () => new ɵWebAnimationsDriver() },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useClass: ɵNoopAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n\n/**\n * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nclass BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see {@link BrowserAnimationsModuleConfig}\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :\n BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideAnimations` call results in app code.\n return [...BROWSER_ANIMATIONS_PROVIDERS];\n}\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nclass NoopAnimationsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to disable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to bootstrap an application using\n * the `bootstrapApplication` function, but you need to disable animations\n * (for example, when running tests).\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideNoopAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideNoopAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideNoopAnimations` call results in app code.\n return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS];\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserAnimationsModule, NoopAnimationsModule, provideAnimations, provideNoopAnimations, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, BrowserAnimationFactory as ɵBrowserAnimationFactory, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","/* tslint:disable */\n/* eslint-disable */\nimport { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiConfiguration, ApiConfigurationParams } from './api-configuration';\n\nimport { AwvWorklistService } from './services/awv-worklist.service';\nimport { CardWidgetService } from './services/card-widget.service';\nimport { CompareService } from './services/compare.service';\nimport { EdUtilizationWorklistService } from './services/ed-utilization-worklist.service';\nimport { EulaService } from './services/eula.service';\nimport { FacesheetService } from './services/facesheet.service';\nimport { FacesheetScheduleService } from './services/facesheet-schedule.service';\nimport { HccDashboardService } from './services/hcc-dashboard.service';\nimport { HierarchyService } from './services/hierarchy.service';\nimport { NotesService } from './services/notes.service';\nimport { PatientsService } from './services/patients.service';\nimport { PerformanceDashboardService } from './services/performance-dashboard.service';\nimport { ReportService } from './services/report.service';\nimport { ReportItemsService } from './services/report-items.service';\nimport { SnfService } from './services/snf.service';\nimport { Sp340BClaimsService } from './services/sp-340-b-claims.service';\nimport { Sp340BInvoiceService } from './services/sp-340-b-invoice.service';\nimport { StatusService } from './services/status.service';\nimport { UserService } from './services/user.service';\nimport { ValueCalculatorService } from './services/value-calculator.service';\n\n/**\n * Module that provides all services and configuration.\n */\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n AwvWorklistService,\n CardWidgetService,\n CompareService,\n EdUtilizationWorklistService,\n EulaService,\n FacesheetService,\n FacesheetScheduleService,\n HccDashboardService,\n HierarchyService,\n NotesService,\n PatientsService,\n PerformanceDashboardService,\n ReportService,\n ReportItemsService,\n SnfService,\n Sp340BClaimsService,\n Sp340BInvoiceService,\n StatusService,\n UserService,\n ValueCalculatorService,\n ApiConfiguration\n ],\n})\nexport class TrackApiModule {\n static forRoot(params: ApiConfigurationParams): ModuleWithProviders {\n return {\n ngModule: TrackApiModule,\n providers: [\n {\n provide: ApiConfiguration,\n useValue: params\n }\n ]\n }\n }\n\n constructor( \n @Optional() @SkipSelf() parentModule: TrackApiModule,\n @Optional() http: HttpClient\n ) {\n if (parentModule) {\n throw new Error('TrackApiModule is already loaded. Import in your base AppModule only.');\n }\n if (!http) {\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\n 'See also https://github.com/angular/angular/issues/20575');\n }\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\n\n/**\n * Global configuration\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiConfiguration {\n rootUrl: string = 'https://compassapifunctionsdev.azurewebsites.net/api';\n}\n\n/**\n * Parameters for `InHomeAwvApiModule.forRoot()`\n */\nexport interface ApiConfigurationParams {\n rootUrl?: string;\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiConfiguration } from './api-configuration';\n\n/**\n * Base class for services\n */\n@Injectable()\nexport class BaseService {\n constructor(\n protected config: ApiConfiguration,\n protected http: HttpClient\n ) {\n }\n\n private _rootUrl: string = '';\n\n /**\n * Returns the root url for all operations in this service. If not set directly in this\n * service, will fallback to `ApiConfiguration.rootUrl`.\n */\n get rootUrl(): string {\n return this._rootUrl || this.config.rootUrl;\n }\n\n /**\n * Sets the root URL for API operations in this service.\n */\n set rootUrl(rootUrl: string) {\n this._rootUrl = rootUrl;\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { HttpRequest, HttpParameterCodec, HttpParams, HttpHeaders, HttpContext } from '@angular/common/http';\n\n/**\n * Custom parameter codec to correctly handle the plus sign in parameter\n * values. See https://github.com/angular/angular/issues/18261\n */\nclass ParameterCodec implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\nconst ParameterCodecInstance = new ParameterCodec();\n\n/**\n * Defines the options for appending a parameter\n */\ninterface ParameterOptions {\n style?: string;\n explode?: boolean;\n}\n\n/**\n * Base class for a parameter\n */\nabstract class Parameter {\n constructor(public name: string, public value: any, public options: ParameterOptions, defaultStyle: string, defaultExplode: boolean) {\n this.options = options || {};\n if (this.options.style === null || this.options.style === undefined) {\n this.options.style = defaultStyle;\n }\n if (this.options.explode === null || this.options.explode === undefined) {\n this.options.explode = defaultExplode;\n }\n }\n\n serializeValue(value: any, separator = ','): string {\n if (value === null || value === undefined) {\n return '';\n } else if (value instanceof Array) {\n return value.map(v => this.serializeValue(v).split(separator).join(encodeURIComponent(separator))).join(separator);\n } else if (typeof value === 'object') {\n const array: string[] = [];\n for (const key of Object.keys(value)) {\n let propVal = value[key];\n if (propVal !== null && propVal !== undefined) {\n propVal = this.serializeValue(propVal).split(separator).join(encodeURIComponent(separator));\n if (this.options.explode) {\n array.push(`${key}=${propVal}`);\n } else {\n array.push(key);\n array.push(propVal);\n }\n }\n }\n return array.join(separator);\n } else {\n return String(value);\n }\n }\n}\n\n/**\n * A parameter in the operation path\n */\nclass PathParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(path: string): string {\n let value = this.value;\n if (value === null || value === undefined) {\n value = '';\n }\n let prefix = this.options.style === 'label' ? '.' : '';\n let separator = this.options.explode ? prefix === '' ? ',' : prefix : ',';\n let alreadySerialized = false;\n if (this.options.style === 'matrix') {\n // The parameter name is just used as prefix, except in some cases...\n prefix = `;${this.name}=`;\n if (this.options.explode && typeof value === 'object') {\n prefix = ';';\n if (value instanceof Array) {\n // For arrays we have to repeat the name for each element\n value = value.map(v => `${this.name}=${this.serializeValue(v, ';')}`);\n value = value.join(';');\n alreadySerialized = true;\n } else {\n // For objects we have to put each the key / value pairs\n value = this.serializeValue(value, ';');\n alreadySerialized = true\n }\n }\n }\n value = prefix + (alreadySerialized ? value : this.serializeValue(value, separator));\n // Replace both the plain variable and the corresponding variant taking in the prefix and explode into account\n path = path.replace(`{${this.name}}`, value);\n path = path.replace(`{${prefix}${this.name}${this.options.explode ? '*' : ''}}`, value);\n return path;\n }\n\n // @ts-ignore\n serializeValue(value: any, separator = ','): string {\n var result = typeof value === 'string' ? encodeURIComponent(value) : super.serializeValue(value, separator);\n result = result.replace(/%3D/g, '=');\n result = result.replace(/%3B/g, ';');\n result = result.replace(/%2C/g, ',');\n return result;\n }\n}\n\n/**\n * A parameter in the query\n */\nclass QueryParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'form', true);\n }\n\n append(params: HttpParams): HttpParams {\n if (this.value instanceof Array) {\n // Array serialization\n if (this.options.explode) {\n for (const v of this.value) {\n params = params.append(this.name, this.serializeValue(v));\n }\n } else {\n const separator = this.options.style === 'spaceDelimited'\n ? ' ' : this.options.style === 'pipeDelimited'\n ? '|' : ',';\n return params.append(this.name, this.serializeValue(this.value, separator));\n }\n } else if (this.value !== null && typeof this.value === 'object') {\n // Object serialization\n if (this.options.style === 'deepObject') {\n // Append a parameter for each key, in the form `name[key]`\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(`${this.name}[${key}]`, this.serializeValue(propVal));\n }\n }\n } else if (this.options.explode) {\n // Append a parameter for each key without using the parameter name\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(key, this.serializeValue(propVal));\n }\n }\n } else {\n // Append a single parameter whose values are a comma-separated list of key,value,key,value...\n const array: any[] = [];\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n array.push(key);\n array.push(propVal);\n }\n }\n params = params.append(this.name, this.serializeValue(array));\n }\n } else if (this.value !== null && this.value !== undefined) {\n // Plain value\n params = params.append(this.name, this.serializeValue(this.value));\n }\n return params;\n }\n}\n\n/**\n * A parameter in the HTTP request header\n */\nclass HeaderParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(headers: HttpHeaders): HttpHeaders {\n if (this.value !== null && this.value !== undefined) {\n if (this.value instanceof Array) {\n for (const v of this.value) {\n headers = headers.append(this.name, this.serializeValue(v));\n }\n } else {\n headers = headers.append(this.name, this.serializeValue(this.value));\n }\n }\n return headers;\n }\n}\n\n/**\n * Helper to build http requests from parameters\n */\nexport class RequestBuilder {\n\n private _path = new Map();\n private _query = new Map();\n private _header = new Map();\n _bodyContent: any | null;\n _bodyContentType?: string;\n\n constructor(\n public rootUrl: string,\n public operationPath: string,\n public method: string) {\n }\n\n /**\n * Sets a path parameter\n */\n path(name: string, value: any, options?: ParameterOptions): void {\n this._path.set(name, new PathParameter(name, value, options || {}));\n }\n\n /**\n * Sets a query parameter\n */\n query(name: string, value: any, options?: ParameterOptions): void {\n this._query.set(name, new QueryParameter(name, value, options || {}));\n }\n\n /**\n * Sets a header parameter\n */\n header(name: string, value: any, options?: ParameterOptions): void {\n this._header.set(name, new HeaderParameter(name, value, options || {}));\n }\n\n /**\n * Sets the body content, along with the content type\n */\n body(value: any, contentType = 'application/json'): void {\n if (value instanceof Blob) {\n this._bodyContentType = value.type;\n } else {\n this._bodyContentType = contentType;\n }\n if (this._bodyContentType === 'application/x-www-form-urlencoded' && value !== null && typeof value === 'object') {\n // Handle URL-encoded data\n const pairs: Array<[string, string]> = [];\n for (const key of Object.keys(value)) {\n let val = value[key];\n if (!(val instanceof Array)) {\n val = [val];\n }\n for (const v of val) {\n const formValue = this.formDataValue(v);\n if (formValue !== null) {\n pairs.push([key, formValue]);\n }\n }\n }\n this._bodyContent = pairs.map(p => `${encodeURIComponent(p[0])}=${encodeURIComponent(p[1])}`).join('&');\n } else if (this._bodyContentType === 'multipart/form-data') {\n // Handle multipart form data\n const formData = new FormData();\n if (value !== null && value !== undefined) {\n for (const key of Object.keys(value)) {\n const val = value[key];\n if (val instanceof Array) {\n for (const v of val) {\n const toAppend = this.formDataValue(v);\n if (toAppend !== null) {\n formData.append(key, toAppend);\n }\n }\n } else {\n const toAppend = this.formDataValue(val);\n if (toAppend !== null) {\n formData.set(key, toAppend);\n }\n }\n }\n }\n this._bodyContent = formData;\n } else {\n // The body is the plain content\n this._bodyContent = value;\n }\n }\n\n private formDataValue(value: any): any {\n if (value === null || value === undefined) {\n return null;\n }\n if (value instanceof Blob) {\n return value;\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n }\n\n /**\n * Builds the request with the current set parameters\n */\n build(options?: {\n /** Which content types to accept */\n accept?: string;\n\n /** The expected response type */\n responseType?: 'json' | 'text' | 'blob' | 'arraybuffer';\n\n /** Whether to report progress on uploads / downloads */\n reportProgress?: boolean;\n\n /** Allow passing HttpContext for HttpClient */\n context?: HttpContext;\n }): HttpRequest {\n\n options = options || {};\n\n // Path parameters\n let path = this.operationPath;\n for (const pathParam of this._path.values()) {\n path = pathParam.append(path);\n }\n const url = this.rootUrl + path;\n\n // Query parameters\n let httpParams = new HttpParams({\n encoder: ParameterCodecInstance\n });\n for (const queryParam of this._query.values()) {\n httpParams = queryParam.append(httpParams);\n }\n\n // Header parameters\n let httpHeaders = new HttpHeaders();\n if (options.accept) {\n httpHeaders = httpHeaders.append('Accept', options.accept);\n }\n for (const headerParam of this._header.values()) {\n httpHeaders = headerParam.append(httpHeaders);\n }\n\n // Request content headers\n if (this._bodyContentType && !(this._bodyContent instanceof FormData)) {\n httpHeaders = httpHeaders.set('Content-Type', this._bodyContentType);\n }\n\n // Perform the request\n return new HttpRequest(this.method.toUpperCase(), url, this._bodyContent, {\n params: httpParams,\n headers: httpHeaders,\n responseType: options.responseType,\n reportProgress: options.reportProgress,\n context: options.context\n });\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { BillingReportResult } from '../models/billing-report-result';\nimport { PatientIheVisit } from '../models/patient-ihe-visit';\nimport { ScheduleGetResult } from '../models/schedule-get-result';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IheService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation getPatientIheVisits\n */\n static readonly GetPatientIheVisitsPath = '/patientIheVisitList';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getPatientIheVisits()` instead.\n *\n * This method doesn't expect any request body.\n */\n getPatientIheVisits$Response(params: {\n tierId: string;\n tierNum: number;\n chPatId?: number;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, IheService.GetPatientIheVisitsPath, 'get');\n if (params) {\n rb.query('tierId', params.tierId, {});\n rb.query('tierNum', params.tierNum, {});\n rb.query('chPatId', params.chPatId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getPatientIheVisits$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getPatientIheVisits(params: {\n tierId: string;\n tierNum: number;\n chPatId?: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.getPatientIheVisits$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation getIhAwvSchedule\n */\n static readonly GetIhAwvSchedulePath = '/scheduleGet';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getIhAwvSchedule()` instead.\n *\n * This method doesn't expect any request body.\n */\n getIhAwvSchedule$Response(params: {\n tierId: string;\n tierNum: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, IheService.GetIhAwvSchedulePath, 'get');\n if (params) {\n rb.query('tierId', params.tierId, {});\n rb.query('tierNum', params.tierNum, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getIhAwvSchedule$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getIhAwvSchedule(params: {\n tierId: string;\n tierNum: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.getIhAwvSchedule$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n /**\n * Path part for operation getIhAwvBilling\n */\n static readonly GetIhAwvBillingPath = '/billingGet';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getIhAwvBilling()` instead.\n *\n * This method doesn't expect any request body.\n */\n getIhAwvBilling$Response(params: {\n tierId: string;\n tierNum: string;\n },\n context?: HttpContext\n\n): Observable>> {\n\n const rb = new RequestBuilder(this.rootUrl, IheService.GetIhAwvBillingPath, 'get');\n if (params) {\n rb.query('tierId', params.tierId, {});\n rb.query('tierNum', params.tierNum, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse>;\n })\n );\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getIhAwvBilling$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getIhAwvBilling(params: {\n tierId: string;\n tierNum: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n return this.getIhAwvBilling$Response(params,context).pipe(\n map((r: StrictHttpResponse>) => r.body as Array)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiConfiguration, ApiConfigurationParams } from './api-configuration';\n\nimport { IheService } from './services/ihe.service';\n\n/**\n * Module that provides all services and configuration.\n */\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n IheService,\n ApiConfiguration\n ],\n})\nexport class InHomeAwvApiModule {\n static forRoot(params: ApiConfigurationParams): ModuleWithProviders {\n return {\n ngModule: InHomeAwvApiModule,\n providers: [\n {\n provide: ApiConfiguration,\n useValue: params\n }\n ]\n }\n }\n\n constructor( \n @Optional() @SkipSelf() parentModule: InHomeAwvApiModule,\n @Optional() http: HttpClient\n ) {\n if (parentModule) {\n throw new Error('InHomeAwvApiModule is already loaded. Import in your base AppModule only.');\n }\n if (!http) {\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\n 'See also https://github.com/angular/angular/issues/20575');\n }\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiConfiguration, ApiConfigurationParams } from './api-configuration';\n\nimport { Access2Service } from './services/access-2.service';\n\n/**\n * Module that provides all services and configuration.\n */\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n Access2Service,\n ApiConfiguration\n ],\n})\nexport class Access2ApiModule {\n static forRoot(params: ApiConfigurationParams): ModuleWithProviders {\n return {\n ngModule: Access2ApiModule,\n providers: [\n {\n provide: ApiConfiguration,\n useValue: params\n }\n ]\n }\n }\n\n constructor( \n @Optional() @SkipSelf() parentModule: Access2ApiModule,\n @Optional() http: HttpClient\n ) {\n if (parentModule) {\n throw new Error('Access2ApiModule is already loaded. Import in your base AppModule only.');\n }\n if (!http) {\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\n 'See also https://github.com/angular/angular/issues/20575');\n }\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpContext } from '@angular/common/http';\nimport { BaseService } from '../base-service';\nimport { ApiConfiguration } from '../api-configuration';\nimport { StrictHttpResponse } from '../strict-http-response';\nimport { RequestBuilder } from '../request-builder';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\n\nimport { PatientAuditLogs } from '../models/patient-audit-logs';\n\n\n/**\n * Represents resources related to the audit logs.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AuditLogService extends BaseService {\n constructor(\n config: ApiConfiguration,\n http: HttpClient\n ) {\n super(config, http);\n }\n\n /**\n * Path part for operation getAllAuditLogs\n */\n static readonly GetAllAuditLogsPath = '/audit';\n\n /**\n * Get all audit logs.\n *\n * Get all patient and program audit logs.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getAllAuditLogs()` instead.\n *\n * This method doesn't expect any request body.\n */\n getAllAuditLogs$Response(params?: {\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, AuditLogService.GetAllAuditLogsPath, 'get');\n if (params) {\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Get all audit logs.\n *\n * Get all patient and program audit logs.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getAllAuditLogs$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getAllAuditLogs(params?: {\n },\n context?: HttpContext\n\n): Observable {\n\n return this.getAllAuditLogs$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as PatientAuditLogs)\n );\n }\n\n /**\n * Path part for operation getAuditLogsForProgram\n */\n static readonly GetAuditLogsForProgramPath = '/audit/programs/{programId}';\n\n /**\n * Get audit logs for program.\n *\n * Get audit logs for a program.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getAuditLogsForProgram()` instead.\n *\n * This method doesn't expect any request body.\n */\n getAuditLogsForProgram$Response(params: {\n\n /**\n * Unique identifier for the program.\n */\n programId: number;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, AuditLogService.GetAuditLogsForProgramPath, 'get');\n if (params) {\n rb.path('programId', params.programId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Get audit logs for program.\n *\n * Get audit logs for a program.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getAuditLogsForProgram$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getAuditLogsForProgram(params: {\n\n /**\n * Unique identifier for the program.\n */\n programId: number;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.getAuditLogsForProgram$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as PatientAuditLogs)\n );\n }\n\n /**\n * Path part for operation getAuditLogsForPatient\n */\n static readonly GetAuditLogsForPatientPath = '/audit/patients/{censeoId}';\n\n /**\n * Get audit logs for patient.\n *\n * Get audit logs for patient.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `getAuditLogsForPatient()` instead.\n *\n * This method doesn't expect any request body.\n */\n getAuditLogsForPatient$Response(params: {\n\n /**\n * Unique identifier for the patient.\n */\n censeoId: string;\n },\n context?: HttpContext\n\n): Observable> {\n\n const rb = new RequestBuilder(this.rootUrl, AuditLogService.GetAuditLogsForPatientPath, 'get');\n if (params) {\n rb.path('censeoId', params.censeoId, {});\n }\n\n return this.http.request(rb.build({\n responseType: 'json',\n accept: 'application/json',\n context: context\n })).pipe(\n filter((r: any) => r instanceof HttpResponse),\n map((r: HttpResponse) => {\n return r as StrictHttpResponse;\n })\n );\n }\n\n /**\n * Get audit logs for patient.\n *\n * Get audit logs for patient.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `getAuditLogsForPatient$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n getAuditLogsForPatient(params: {\n\n /**\n * Unique identifier for the patient.\n */\n censeoId: string;\n },\n context?: HttpContext\n\n): Observable {\n\n return this.getAuditLogsForPatient$Response(params,context).pipe(\n map((r: StrictHttpResponse) => r.body as PatientAuditLogs)\n );\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\nimport { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiConfiguration, ApiConfigurationParams } from './api-configuration';\n\nimport { AwvService } from './services/awv.service';\nimport { AuditLogService } from './services/audit-log.service';\n\n/**\n * Module that provides all services and configuration.\n */\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n AwvService,\n AuditLogService,\n ApiConfiguration\n ],\n})\nexport class CareOrchApiModule {\n static forRoot(params: ApiConfigurationParams): ModuleWithProviders {\n return {\n ngModule: CareOrchApiModule,\n providers: [\n {\n provide: ApiConfiguration,\n useValue: params\n }\n ]\n }\n }\n\n constructor( \n @Optional() @SkipSelf() parentModule: CareOrchApiModule,\n @Optional() http: HttpClient\n ) {\n if (parentModule) {\n throw new Error('CareOrchApiModule is already loaded. Import in your base AppModule only.');\n }\n if (!http) {\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\n 'See also https://github.com/angular/angular/issues/20575');\n }\n }\n}\n","import { forwardRef, Injectable, Provider } from '@angular/core';\nimport { HTTP_INTERCEPTORS, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '@shared/services/auth-service/auth.service';\nimport { environment } from '../../../../environments/environment';\nimport { HierarchyTierService } from '../hierarchy/hierarchy-tier.service';\nimport { IHierarchyTier } from '@shared/models/hierarchy/hierarchy-tier';\n\n@Injectable()\nexport class CareOrchApiInterceptor implements HttpInterceptor {\n\n private currentTier: IHierarchyTier;\n\n constructor(private _authService: AuthService, private hierarchyTierService: HierarchyTierService) {\n this.hierarchyTierService.currentTier$.subscribe(tier => {\n this.currentTier = tier;\n });\n }\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n if (this.isACareOrchRequest(req)) {\n req = this.extendCareOrchRequest(req);\n }\n\n return next.handle(req);\n }\n\n private isACareOrchRequest(req: HttpRequest): boolean {\n return req.url.startsWith(environment.careOrchApiUrl);\n }\n\n private extendCareOrchRequest(req: HttpRequest): HttpRequest {\n return req.clone({\n setHeaders: {\n 'Authorization': 'Bearer ' + this._authService.IdToken,\n 'Ocp-Apim-Subscription-Key': environment.ocpApimSubscriptionKey,\n 'Tier-Id': this.currentTier?.selectedTierId,\n 'Tier-Num': this.currentTier?.tier.toString(),\n }\n });\n }\n}\n\nexport const CARE_ORCH_API_INTERCEPTOR_PROVIDER: Provider = {\n provide: HTTP_INTERCEPTORS,\n useExisting: forwardRef(() => CareOrchApiInterceptor),\n multi: true\n};\n","/* tslint:disable */\n/* eslint-disable */\nimport { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiConfiguration, ApiConfigurationParams } from './api-configuration';\n\nimport { UserDetailService } from './services/user-detail.service';\n\n/**\n * Module that provides all services and configuration.\n */\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n UserDetailService,\n ApiConfiguration\n ],\n})\nexport class UserDetailApiModule {\n static forRoot(params: ApiConfigurationParams): ModuleWithProviders {\n return {\n ngModule: UserDetailApiModule,\n providers: [\n {\n provide: ApiConfiguration,\n useValue: params\n }\n ]\n }\n }\n\n constructor( \n @Optional() @SkipSelf() parentModule: UserDetailApiModule,\n @Optional() http: HttpClient\n ) {\n if (parentModule) {\n throw new Error('UserDetailApiModule is already loaded. Import in your base AppModule only.');\n }\n if (!http) {\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\n 'See also https://github.com/angular/angular/issues/20575');\n }\n }\n}\n","import { HttpClientModule, HttpClient } from '@angular/common/http';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { NgModule, APP_INITIALIZER } from '@angular/core';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\n\nimport { SharedModule } from '@shared/shared.module';\nimport { CoreModule } from '@core/core.module';\nimport { ViewsModule } from '@views/views.module';\nimport { HelpPanelModule } from '@shared/modules/help-panel/help-panel.module';\n\nimport { AuthGuard } from './auth.guard';\nimport { AuthInterceptor, authInterceptorProviders } from './shared/services/Auth.Interceptor/auth.Interceptor';\nimport { AuthModule,} from 'angular-auth-oidc-client';\nimport { HashLocationStrategy, CommonModule } from '@angular/common';\nimport { loadConfig } from './shared/services/auth-service/auth.service';\nimport { RouterHistoryService } from '@shared/services/router-history/router-history.service';\nimport { MarkdownModule, MarkedOptions, MarkedRenderer } from 'ngx-markdown';\nimport { MessageService } from './shared/services/message-service/message.service';\nimport { OrgService } from './shared/services/org-service/org.service';\nimport { RestApiService } from '../app/shared/services/rest-api/rest-api.service';\nimport { ToastrMessageService } from '../app/shared/services/toastr-message/toastr-message.service';\nimport { RouterModule } from '@angular/router';\nimport { GraphQLModule } from './graphql.module';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { ToastrModule } from 'ngx-toastr';\nimport { UserIdleModule } from 'angular-user-idle';\nimport { environment } from 'src/environments/environment';\nimport { TrackApiModule } from './api/track/track-api.module';\nimport { InHomeAwvApiModule } from './api/ih-awv/in-home-awv-api.module';\nimport { Access2ApiModule } from './api/access2/access-2-api.module';\nimport { CareOrchApiModule } from './api/care-orch/care-orch-api.module';\nimport {\n CARE_ORCH_API_INTERCEPTOR_PROVIDER,\n CareOrchApiInterceptor\n} from '@shared/services/care-orchestration/care-orch-intercepter.service';\nimport { UserDetailApiModule } from '@api/user-detail/user-detail-api.module';\nimport { MixpanelService } from '@shared/services/mixpanel/mixpanel.service';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nexport const auditTrackUrl: string = `${environment.trackApiUrl.substr(\n 0,\n environment.trackApiUrl.lastIndexOf('track')\n)}logging/audit`;\nexport function markedOptionsFactory(): MarkedOptions {\n const renderer = new MarkedRenderer();\n\n renderer.heading = (text: string, level: number) => {\n switch (level) {\n case 1: {\n level = 1;\n break;\n }\n case 2: {\n level = 2;\n break;\n }\n case 3: {\n level = 3;\n break;\n }\n case 4: {\n level = 3;\n break;\n }\n case 5: {\n level = 3;\n break;\n }\n case 6: {\n level = 3;\n break;\n }\n default: {\n level = 1;\n break;\n }\n }\n return `\n \n ${text}\n `;\n };\n\n return {\n renderer,\n gfm: true,\n breaks: false,\n pedantic: false,\n smartLists: true,\n smartypants: false\n };\n}\n\n@NgModule({\n declarations: [AppComponent],\n imports: [\n BrowserModule,\n HttpClientModule,\n TrackApiModule.forRoot({ rootUrl: environment.trackApiUrl }),\n UserDetailApiModule.forRoot({ rootUrl: environment.userDetailApiUrl }),\n InHomeAwvApiModule.forRoot({ rootUrl: environment.apiBaseUrl + '/ihawv' }),\n CareOrchApiModule.forRoot({ rootUrl: environment.careOrchApiUrl }),\n Access2ApiModule.forRoot({ rootUrl: environment.apiBaseUrl + '/access' }),\n AuthModule.forRoot({\n config: loadConfig()\n }),\n AppRoutingModule,\n SharedModule,\n CoreModule,\n ViewsModule,\n HelpPanelModule,\n HttpClientModule,\n MarkdownModule.forRoot({\n loader: HttpClient,\n markedOptions: {\n provide: MarkedOptions,\n useFactory: markedOptionsFactory\n }\n }),\n RouterModule,\n GraphQLModule,\n OverlayModule,\n BrowserAnimationsModule,\n CommonModule,\n ToastrModule.forRoot(),\n UserIdleModule.forRoot({\n idle: environment.idleStart,\n timeout: environment.idleTimeout,\n ping: environment.idlePing\n })\n ],\n providers: [\n RouterHistoryService,\n HashLocationStrategy,\n RestApiService,\n MessageService,\n ToastrMessageService,\n OrgService,\n AuthGuard,\n authInterceptorProviders,\n AuthInterceptor,\n {\n provide: 'secureRoutes',\n useValue: [\n { tokenType: 'idToken', url: 'add yr URL here' },\n { tokenType: 'idtokenAndSubId', url: auditTrackUrl }\n ]\n },\n MixpanelService,\n CareOrchApiInterceptor,\n CARE_ORCH_API_INTERCEPTOR_PROVIDER\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {}\n\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nimport { LicenseManager } from 'ag-grid-enterprise';\n\n// Required license for ag-grid-enterprise\nLicenseManager.setLicenseKey(\n 'Using_this_AG_Grid_Enterprise_key_( AG-045864 )_in_excess_of_the_licence_granted_is_not_permitted___Please_report_misuse_to_( legal@ag-grid.com )___For_help_with_changing_this_key_please_contact_( info@ag-grid.com )___( Signify Health, LLC )_is_granted_a_( Multiple Applications )_Developer_License_for_( 2 )_Front-End_JavaScript_developers___All_Front-End_JavaScript_developers_need_to_be_licensed_in_addition_to_the_ones_working_with_AG_Grid_Enterprise___This_key_has_not_been_granted_a_Deployment_License_Add-on___This_key_works_with_AG_Grid_Enterprise_versions_released_before_( 22 October 2024 )____[v2]_MTcyOTU1MTYwMDAwMA==923c7c82544b2cf8ab966ed342fa9ddc'\n);\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","/**\r\n * Base functionality\r\n*/\r\nimport { __extends } from \"tslib\";\r\nimport { List, ListTemplate } from \"./utils/List\";\r\nimport { OrderedListTemplate, SortedListTemplate } from \"./utils/SortedList\";\r\nimport { Dictionary, DictionaryTemplate } from \"./utils/Dictionary\";\r\nimport { Disposer } from \"./utils/Disposer\";\r\nimport { EventDispatcher } from \"./utils/EventDispatcher\";\r\nimport { Adapter } from \"./utils/Adapter\";\r\nimport { Color, color } from \"./utils/Color\";\r\nimport { Percent, percent } from \"./utils/Percent\";\r\nimport { registry } from \"./Registry\";\r\nimport { cache } from \"./utils/Cache\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n//import * as $debug from \"./utils/Debug\";\r\n/**\r\n * Provides base functionality for all derivative objects, like generating ids,\r\n * handling cache, etc.\r\n */\r\nvar BaseObject = /** @class */ (function () {\r\n //protected _classes: { [index: string]: any } = {};\r\n /**\r\n * Constructor\r\n * * Sets class name\r\n */\r\n function BaseObject() {\r\n /**\r\n * Indicates if this object has already been deleted. Any\r\n * destruction/disposal code should take this into account when deciding\r\n * wheter to run potentially costly disposal operations if they already have\r\n * been run.\r\n */\r\n this._disposed = false;\r\n /**\r\n * List of IDisposer which will be disposed when the BaseObject is disposed.\r\n */\r\n this._disposers = [];\r\n this.className = \"BaseObject\";\r\n //this.debug();\r\n }\r\n BaseObject.prototype.debug = function () {\r\n //$debug.debug(this);\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"uid\", {\r\n /**\r\n * Returns object's internal unique ID.\r\n *\r\n * @return Unique ID\r\n */\r\n get: function () {\r\n if (!this._uid) {\r\n this._uid = registry.getUniqueId();\r\n registry.map.setKey(this._uid, this);\r\n }\r\n return this._uid;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseObject.prototype, \"id\", {\r\n /**\r\n * @return Id\r\n */\r\n get: function () {\r\n return this._id;\r\n },\r\n /**\r\n * Sets the user-defined id of the element.\r\n *\r\n * @param value Id\r\n */\r\n set: function (value) {\r\n //registry.map.setKey(value, this); // registry.map only stores by uid\r\n this._id = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseObject.prototype, \"map\", {\r\n /**\r\n * Returns a universal collection for mapping ids with objects.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Map collection\r\n */\r\n get: function () {\r\n if (!this._map) {\r\n this._map = new Dictionary();\r\n }\r\n return this._map;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseObject.prototype, \"delayedMap\", {\r\n /**\r\n * Returns mapping for objects referenced by id in JSON config that are not yet\r\n * available at processing time.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Map collection\r\n */\r\n get: function () {\r\n if (!this._delayedMap) {\r\n this._delayedMap = new Dictionary();\r\n }\r\n return this._delayedMap;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Logs an id and property of the target element that is not yet available\r\n * for later assignment.\r\n *\r\n * @ignore\r\n * @param property Property to set\r\n * @param id ID of the target element\r\n */\r\n BaseObject.prototype.addDelayedMap = function (property, id) {\r\n var map = this.delayedMap;\r\n if (!map.hasKey(id)) {\r\n map.setKey(id, []);\r\n }\r\n var list = map.getKey(id);\r\n list.push({\r\n property: property,\r\n target: this\r\n });\r\n };\r\n /**\r\n * Processes delayed JSON config items.\r\n *\r\n * @ignore\r\n */\r\n BaseObject.prototype.processDelayedMap = function () {\r\n var _this = this;\r\n this.delayedMap.each(function (id, list) {\r\n if (_this.map.hasKey(id)) {\r\n var target_1 = _this.map.getKey(id);\r\n $array.each(list, function (item) {\r\n item.target[item.property] = target_1;\r\n });\r\n _this.delayedMap.removeKey(id);\r\n }\r\n });\r\n };\r\n /**\r\n * Applies properties from all assigned themes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n BaseObject.prototype.applyTheme = function () {\r\n var _this = this;\r\n // TODO is this needed ?\r\n if (registry) {\r\n var themes = this.getCurrentThemes();\r\n // TODO is this needed ?\r\n if (themes) {\r\n $array.each(themes, function (theme, index) {\r\n theme(_this);\r\n });\r\n }\r\n }\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"themes\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return An array of themes\r\n */\r\n get: function () {\r\n return this._themes;\r\n },\r\n /**\r\n * A list of themes to be used for this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value An array of themes\r\n */\r\n set: function (value) {\r\n this._themes = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a list of themes that should be applied to this element. It could\r\n * either be a list of themes set explicitly on this element, or system-wide.\r\n *\r\n * @return List of themes\r\n */\r\n BaseObject.prototype.getCurrentThemes = function () {\r\n return this.themes || registry.themes;\r\n };\r\n /**\r\n * Returns if this object has been already been disposed.\r\n *\r\n * @return Is disposed?\r\n */\r\n BaseObject.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n BaseObject.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n var a = this._disposers;\r\n this._disposers = null;\r\n while (a.length !== 0) {\r\n var disposer = a.shift();\r\n disposer.dispose();\r\n }\r\n // Clear cache\r\n this.clearCache();\r\n // remove from clones list\r\n if (this.clonedFrom) {\r\n this.clonedFrom.clones.removeValue(this);\r\n }\r\n var uid = this._uid;\r\n if (uid != null) {\r\n registry.map.removeKey(uid);\r\n }\r\n }\r\n };\r\n /**\r\n * Adds an IDisposer, which will be disposed when this object is disposed.\r\n *\r\n * @param target Object to dispose\r\n * @ignore Exclude from docs\r\n */\r\n BaseObject.prototype.addDisposer = function (target) {\r\n this._disposers.push(target);\r\n };\r\n /**\r\n * Disposes disposable object and removes it from `_disposers`.\r\n *\r\n * @param target Object to dispose\r\n * @ignore Exclude from docs\r\n */\r\n BaseObject.prototype.removeDispose = function (target) {\r\n //if(target){\r\n if (!this._disposed) {\r\n var index = $array.indexOf(this._disposers, target);\r\n if (index > -1) {\r\n this._disposers.splice(index, 1);\r\n }\r\n }\r\n target.dispose();\r\n //}\r\n };\r\n /**\r\n * Makes a copy of this object and returns the clone. Try to avoid cloning complex objects like chart, create new instances if you need them.\r\n *\r\n * @param cloneId An id to use for clone (if not set a unique id will be generated)\r\n * @returns Clone\r\n */\r\n BaseObject.prototype.clone = function (cloneId) {\r\n if (!cloneId) {\r\n cloneId = \"clone-\" + registry.getUniqueId();\r\n }\r\n var newObject = new this.constructor();\r\n newObject.cloneId = cloneId;\r\n newObject.copyFrom(this);\r\n // add to clones list\r\n // this.clones.push(newObject); // moved this to copyFrom\r\n return newObject;\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"clones\", {\r\n /**\r\n * Returns a collection of object's clones.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Clones\r\n */\r\n get: function () {\r\n if (!this._clones) {\r\n this._clones = new List();\r\n }\r\n return this._clones;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all properties and related data from different element.\r\n *\r\n * @param object Source element\r\n */\r\n BaseObject.prototype.copyFrom = function (object) {\r\n object.clones.push(this); // do not moveValue, as it is expensive! even if there will be several items in clones list, it's not that bad.\r\n this.clonedFrom = object;\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"className\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Class name\r\n */\r\n get: function () {\r\n return this._className;\r\n },\r\n /**\r\n * Element's class name. (a class that was used to instantiate the element)\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Class name\r\n */\r\n set: function (value) {\r\n this._className = value;\r\n /*if (registry) {\r\n registry.registeredClasses[value] = typeof this;\r\n }*/\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Caches value in object's cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value\r\n * @param ttl TTL in seconds\r\n */\r\n BaseObject.prototype.setCache = function (key, value, ttl) {\r\n cache.set(this.uid, key, value, ttl);\r\n };\r\n /**\r\n * Retrieves cached value.\r\n *\r\n * If optional second padarameter is specified, it will return that value\r\n * if cache is not available or is expired.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value to return if cache is not available\r\n * @return Value\r\n */\r\n BaseObject.prototype.getCache = function (key, value) {\r\n if (value === void 0) { value = undefined; }\r\n return cache.get(this.uid, key, value);\r\n };\r\n /**\r\n * Clears object's local cache.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n BaseObject.prototype.clearCache = function () {\r\n cache.clear(this.uid);\r\n };\r\n /**\r\n * Creates [[Disposer]] for `setTimeout` function call. This ensures that all\r\n * timeouts created by the object will be cleared when object itself is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fn Callback function\r\n * @param delay Timeout (ms)\r\n * @return Disposer for timeout\r\n */\r\n BaseObject.prototype.setTimeout = function (fn, delay) {\r\n var _this = this;\r\n var id = setTimeout(function () {\r\n _this.removeDispose(disposer);\r\n fn();\r\n }, delay);\r\n var disposer = new Disposer(function () {\r\n clearTimeout(id);\r\n });\r\n this._disposers.push(disposer);\r\n return disposer;\r\n };\r\n /**\r\n * Creates [[Disposer]] for `setInterval` function call. This ensures that all\r\n * timeouts created by the object will be cleared when object itself is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fn Callback function\r\n * @param delay Timeout (ms)\r\n * @return Disposer for timeout\r\n */\r\n BaseObject.prototype.setInterval = function (fn, delay) {\r\n var _this = this;\r\n var id = setInterval(function () {\r\n _this.removeDispose(disposer);\r\n fn();\r\n }, delay);\r\n var disposer = new Disposer(function () {\r\n clearTimeout(id);\r\n });\r\n this._disposers.push(disposer);\r\n return disposer;\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"config\", {\r\n /**\r\n * ==========================================================================\r\n * JSON-BASED CONFIG PROCESSING\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Use this property to set JSON-based config. When set, triggers processing\r\n * routine, which will go through all properties, and try to apply values,\r\n * create instances, etc.\r\n *\r\n * Use this with caution, as it is a time-consuming process. It's used for\r\n * initialchart setup only, not routine operations.\r\n *\r\n * @param json JSON config\r\n */\r\n set: function (config) {\r\n try {\r\n this.processConfig(config);\r\n }\r\n catch (e) {\r\n /*if (this instanceof Sprite) {\r\n this.raiseCriticalError(e);\r\n }*/\r\n this.raiseCriticalError(e);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes the JSON config.\r\n *\r\n * @param json JSON config\r\n * @ignore Exclude from docs\r\n */\r\n BaseObject.prototype.processConfig = function (config) {\r\n var _this = this;\r\n if (!config) {\r\n return;\r\n }\r\n // Get target\r\n var target = this;\r\n // Iterate through all of the items\r\n $object.eachOrdered(config, function (configKey, value) {\r\n var configValue = value;\r\n // Is this a callback?\r\n if (configKey == \"callback\" && typeof value == \"function\") {\r\n value.call(target);\r\n }\r\n // Check if there's a property in target\r\n if (_this.hasProperty(configKey)) {\r\n var item_1;\r\n // Do we have instructions to create an object?\r\n // We create a new object if \"type\" key is set, but only if the\r\n // target object is of different type.\r\n if ($type.isObject(configValue)\r\n && $type.hasValue(configValue[\"type\"])\r\n && (!$type.isObject(target[configKey])\r\n || !$type.hasValue(target[configKey].className)\r\n || configValue[\"forceCreate\"]\r\n || target[configKey].className != configValue[\"type\"])\r\n && !_this.asIs(configKey)) {\r\n item_1 = _this.createClassInstance(configValue[\"type\"]);\r\n // Create new instance\r\n if (item_1) {\r\n target[configKey] = item_1;\r\n }\r\n else {\r\n item_1 = target[configKey];\r\n }\r\n }\r\n else {\r\n // Get item from the object\r\n item_1 = target[configKey];\r\n }\r\n /**\r\n * It is...\r\n * --------------------------------------------------------------------\r\n */\r\n if (item_1 instanceof Adapter) {\r\n // ... an Adapter, try to add handlers to it\r\n // ------------------------------------------------------------------\r\n _this.processAdapters(item_1, configValue);\r\n }\r\n else if (item_1 instanceof EventDispatcher) {\r\n // ... an EventDispatcher, try to add handlers to it\r\n // ------------------------------------------------------------------\r\n _this.processEvents(item_1, configValue);\r\n }\r\n else if (configKey == \"locale\" && $type.isString(configValue)) {\r\n // ... a locale specified as string, e.g. \"fr_FR\"\r\n // ------------------------------------------------------------------\r\n if (window[\"am4lang_\" + configValue]) {\r\n target[configKey] = window[\"am4lang_\" + configValue];\r\n }\r\n }\r\n else if (configKey == \"parent\" && $type.isString(configValue)) {\r\n // ... a parent referred via its it\r\n // ------------------------------------------------------------------\r\n var parent_1 = _this.map.getKey(configValue);\r\n if (parent_1) {\r\n target[configKey] = parent_1;\r\n }\r\n else {\r\n _this.addDelayedMap(\"parent\", configValue);\r\n }\r\n }\r\n else if (_this.asIs(configKey)) {\r\n // ... a special field, just set it to new value\r\n // ------------------------------------------------------------------\r\n // (no need to add each indvidual item)\r\n target[configKey] = configValue;\r\n }\r\n else if (_this.asFunction(configKey) && $type.isString(configValue)) {\r\n // ... a field indicating function name to look for in registry\r\n // ------------------------------------------------------------------\r\n if ($type.hasValue(registry.registeredClasses[configValue])) {\r\n target[configKey] = registry.registeredClasses[configValue];\r\n }\r\n else {\r\n throw Error(\"Invalid easing function: \" + configValue);\r\n }\r\n }\r\n else if (configValue instanceof BaseObject) {\r\n // ... a BaseObject object, we just going to use it as it is\r\n // ------------------------------------------------------------------\r\n target[configKey] = configValue;\r\n }\r\n else if (item_1 instanceof BaseObject) {\r\n // ... another child BaseObject\r\n // ------------------------------------------------------------------\r\n // Let's just pass in config part in and let itself deal with it\r\n item_1.config = configValue;\r\n }\r\n else if (item_1 instanceof ListTemplate || item_1 instanceof OrderedListTemplate || item_1 instanceof SortedListTemplate) {\r\n // ... a list with template\r\n // ------------------------------------------------------------------\r\n // Let's see what we can do with it\r\n if ($type.isArray(configValue)) {\r\n // It's an array.\r\n // Create a list item for entry, or try to apply properties to an\r\n // existing entry if possible and it is present.\r\n if (item_1 instanceof ListTemplate) {\r\n _this.processListTemplate(configValue, item_1);\r\n }\r\n else {\r\n _this.processOrderedTemplate(configValue, item_1);\r\n }\r\n }\r\n else if ($type.isObject(configValue)) {\r\n // It's a single oject.\r\n // Treat it as a template.\r\n if (configValue instanceof BaseObject) {\r\n // Item is already a BaseObject, no need to process it further\r\n item_1.template = configValue;\r\n }\r\n else {\r\n // Now let's find out if the whole object if a template, or we\r\n // need to get it from `template` key\r\n var templateValue = void 0;\r\n if ($type.hasValue(configValue.template)) {\r\n templateValue = configValue.template;\r\n }\r\n else {\r\n templateValue = configValue;\r\n }\r\n if (item_1.template instanceof BaseObject) {\r\n // Template is a BaseObject so we will just let its config\r\n // deal with the configuration\r\n item_1.template.config = templateValue;\r\n }\r\n else {\r\n $object.each(templateValue, function (entryKey, entryValue) {\r\n var listItem = item_1.template[entryKey];\r\n if (listItem instanceof Adapter) {\r\n _this.processAdapters(listItem, entryValue);\r\n }\r\n else if (listItem instanceof EventDispatcher) {\r\n _this.processEvents(listItem, entryValue);\r\n }\r\n else if (listItem instanceof DictionaryTemplate) {\r\n _this.processDictionaryTemplate(listItem, entryValue);\r\n }\r\n else if (item_1.template[entryKey] instanceof BaseObject) {\r\n // Template is a BaseObject. Let it deal with its own config.\r\n item_1.template[entryKey].config = entryValue;\r\n }\r\n else if ($type.isObject(entryValue) && $type.hasValue(entryValue[\"type\"])) {\r\n listItem = _this.createClassInstance(entryValue[\"type\"]);\r\n if (listItem) {\r\n if (listItem instanceof BaseObject) {\r\n listItem.config = entryValue;\r\n }\r\n item_1.template[entryKey] = listItem;\r\n }\r\n else {\r\n item_1.template[entryKey] = entryValue;\r\n }\r\n }\r\n else if (listItem instanceof List) {\r\n // It's List, process it\r\n _this.processList(entryValue, listItem);\r\n }\r\n else {\r\n // Aything else. Just assing and be done with it.\r\n item_1.template[entryKey] = _this.maybeColorOrPercent(entryValue);\r\n }\r\n });\r\n }\r\n // Check maybe there are `values` to insert\r\n if ($type.hasValue(configValue.values)) {\r\n if (item_1 instanceof ListTemplate) {\r\n _this.processListTemplate(configValue.values, item_1);\r\n }\r\n else {\r\n _this.processOrderedTemplate(configValue.values, item_1);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // Something else?\r\n // Not sure what to do with it on a list - ignore\r\n }\r\n }\r\n else if (item_1 instanceof List) {\r\n // ... a list\r\n // ------------------------------------------------------------------\r\n if (configKey == \"children\") {\r\n _this.processList(configValue, item_1, _this);\r\n }\r\n else {\r\n _this.processList(configValue, item_1);\r\n }\r\n }\r\n else if (item_1 instanceof DictionaryTemplate) {\r\n // ... a dictionary with template\r\n // ------------------------------------------------------------------\r\n _this.processDictionaryTemplate(item_1, configValue);\r\n }\r\n else if (item_1 instanceof Dictionary) {\r\n // ... a dictionary\r\n // ------------------------------------------------------------------\r\n _this.processDictionary(item_1, configValue);\r\n }\r\n else if (item_1 instanceof Color || item_1 instanceof Percent) {\r\n // ... it's a Color or Percent\r\n // ------------------------------------------------------------------\r\n target[configKey] = _this.maybeColorOrPercent(configValue);\r\n }\r\n else if ($type.isObject(item_1) && $type.isObject(configValue)) {\r\n // ... a regular object\r\n // ------------------------------------------------------------------\r\n $object.copyAllProperties(configValue, item_1);\r\n }\r\n else {\r\n // ... something else - probably a simple property or object\r\n // ------------------------------------------------------------------\r\n // Maybe convert to `Percent` or `Color`?\r\n configValue = _this.maybeColorOrPercent(configValue);\r\n // Assign\r\n target[configKey] = configValue;\r\n }\r\n }\r\n else if (!_this.isReserved(configKey)) {\r\n // Doesn't have property set. But we're going to assume JSON config\r\n // creator knows what he/she is doing and set it anyway.\r\n target[configKey] = configValue;\r\n }\r\n }, this.configOrder);\r\n // Any errors?\r\n if (this.processingErrors.length) {\r\n var errors = this.processingErrors.join(\"\\n\");\r\n this._processingErrors = [];\r\n throw Error(errors);\r\n }\r\n };\r\n /**\r\n * Tries to detect if value is color or percent and converts to proper object\r\n * if necessary.\r\n *\r\n * Returns the same source value if no color/percent detected\r\n *\r\n * @param value Source value\r\n * @return Converted value\r\n */\r\n BaseObject.prototype.maybeColorOrPercent = function (value) {\r\n if ($type.isString(value)) {\r\n if (value.match(/^[\\-]?[0-9.]+\\%$/)) {\r\n return percent($type.toNumber(value));\r\n }\r\n else if (value.match(/^\\#[0-9abcdef]{3,}$/i)) {\r\n return color(value);\r\n }\r\n }\r\n return value;\r\n };\r\n BaseObject.prototype.processAdapters = function (item, config) {\r\n var _this = this;\r\n if ($type.isArray(config)) {\r\n $array.each(config, function (entry, index) {\r\n item.add(entry.key, entry.callback, entry.priority || 0, _this);\r\n });\r\n }\r\n else if ($type.isObject(config)) {\r\n $object.each(config, function (key, entry) {\r\n if (!item.has(key, entry)) {\r\n item.add(key, entry);\r\n }\r\n });\r\n }\r\n };\r\n BaseObject.prototype.processEvents = function (item, config) {\r\n var _this = this;\r\n if ($type.isArray(config)) {\r\n $array.each(config, function (entry, index) {\r\n item.on(entry.type, entry.callback, _this);\r\n });\r\n }\r\n else if ($type.isObject(config)) {\r\n $object.each(config, function (key, entry) {\r\n if (!item.has(key, entry)) {\r\n item.on(key, entry);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Processes JSON config for a [[DictionaryTemplate]] item.\r\n *\r\n * @todo Description\r\n * @param item Item\r\n * @param config Config\r\n */\r\n BaseObject.prototype.processDictionaryTemplate = function (item, config) {\r\n // We can only process object\r\n // Not sure what to do with other types - ignore\r\n if ($type.isObject(config)) {\r\n // Create an entry for each item, or override properties for\r\n // existing one.\r\n $object.each(config, function (entryKey, entryValue) {\r\n var listItem;\r\n // Get existing one, or create a new one\r\n if (entryKey == \"template\") {\r\n listItem = item.template;\r\n }\r\n else if (item.hasKey(entryKey)) {\r\n listItem = item.getKey(entryKey);\r\n }\r\n else {\r\n listItem = item.create(entryKey);\r\n }\r\n // Set data\r\n if (listItem instanceof BaseObject) {\r\n listItem.config = entryValue;\r\n }\r\n else if ($type.isObject(listItem) && $type.isObject(entryValue)) {\r\n $object.copyAllProperties(entryValue, listItem);\r\n }\r\n else {\r\n listItem.setKey(entryKey, entryValue);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Processes JSON config for a [[Dictionary]] item.\r\n *\r\n * @todo Description\r\n * @param item Item\r\n * @param config Config\r\n */\r\n BaseObject.prototype.processDictionary = function (item, config) {\r\n // We can only process object\r\n // Not sure what to do with other types - ignore\r\n if ($type.isObject(config)) {\r\n // Create an entry for each item, or override properties for\r\n // existing one.\r\n // @todo support for non-basic types\r\n $object.each(config, function (entryKey, entryValue) {\r\n item.setKey(entryKey, entryValue);\r\n });\r\n }\r\n };\r\n /**\r\n * Processes [[ListTemplate]].\r\n *\r\n * @param configValue Config value\r\n * @param item Item\r\n */\r\n BaseObject.prototype.processListTemplate = function (configValue, item) {\r\n var _this = this;\r\n $array.each(configValue, function (entry, index) {\r\n var type = _this.getConfigEntryType(entry);\r\n var listItem;\r\n if (item.hasIndex(index) && !entry[\"forceCreate\"]) {\r\n listItem = item.getIndex(index);\r\n }\r\n else if (entry instanceof BaseObject) {\r\n // Item is already a BaseObject, no need to process it further\r\n item.push(entry);\r\n return;\r\n }\r\n else if (type) {\r\n listItem = item.create(type);\r\n }\r\n else {\r\n listItem = item.create();\r\n }\r\n if (entry === listItem) {\r\n // It's already the same item, do nothing\r\n }\r\n else {\r\n if ($type.isObject(entry)) {\r\n // If the list item is BaseObject, we just need to let it\r\n // deal if its own config\r\n if (listItem instanceof BaseObject) {\r\n listItem.config = entry;\r\n }\r\n else if ($type.isObject(listItem) && $type.isObject(entry)) {\r\n $object.copyAllProperties(entry, listItem);\r\n }\r\n else {\r\n item.setIndex(item.indexOf(listItem), entry);\r\n }\r\n }\r\n }\r\n });\r\n // Truncate the list if it contains less items than the config\r\n // array\r\n while (configValue.length > item.length) {\r\n item.pop();\r\n }\r\n };\r\n /**\r\n * Processes [[OrdererListTemplate]] or [[SortedListTemplate]].\r\n *\r\n * @param configValue Config value\r\n * @param item Item\r\n */\r\n BaseObject.prototype.processOrderedTemplate = function (configValue, item) {\r\n var _this = this;\r\n $array.each(configValue, function (entry, index) {\r\n var type = _this.getConfigEntryType(entry);\r\n var listItem;\r\n if (type) {\r\n listItem = item.create(type);\r\n }\r\n else {\r\n listItem = item.create();\r\n }\r\n if ($type.isObject(entry)) {\r\n // If the list item is BaseObject, we just need to let it\r\n // deal if its own config\r\n if (listItem instanceof BaseObject) {\r\n listItem.config = entry;\r\n }\r\n else if ($type.isObject(listItem) && $type.isObject(entry)) {\r\n $object.copyAllProperties(entry, listItem);\r\n }\r\n else {\r\n item.insert(entry);\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Processes [[List]].\r\n *\r\n * @param configValue Config value\r\n * @param item Item\r\n */\r\n BaseObject.prototype.processList = function (configValue, item, parent) {\r\n var _this = this;\r\n // Convert to array if necessary\r\n if (!$type.isArray(configValue)) {\r\n configValue = [configValue];\r\n }\r\n // It's an array\r\n // Create a list item for entry\r\n var itemCount = item.length;\r\n var extraCount = 0;\r\n $array.each(configValue, function (entry, index) {\r\n if ($type.isObject(entry)) {\r\n // An object.\r\n //\r\n // Let's see if we can instantiate a class out of it, or we need\r\n // to push it into list as it is.\r\n //\r\n // If there are items already at the specified index in the list,\r\n // apply properties rather than create a new one.\r\n var listItem = void 0;\r\n if ((index < itemCount) && !entry[\"forceCreate\"]) {\r\n listItem = item.getIndex(index);\r\n }\r\n else if (entry instanceof BaseObject) {\r\n // Item is already a BaseObject, no need to process it further\r\n item.push(entry);\r\n return;\r\n }\r\n else {\r\n extraCount++;\r\n listItem = _this.createEntryInstance(entry);\r\n if (parent) {\r\n listItem.parent = parent;\r\n }\r\n else {\r\n item.push(listItem);\r\n }\r\n }\r\n // If the list item is BaseObject, we just need to let it\r\n // deal if its own config\r\n if (listItem instanceof BaseObject) {\r\n listItem.config = entry;\r\n }\r\n else if ($type.isObject(listItem) && $type.isObject(entry)) {\r\n $object.copyAllProperties(entry, listItem);\r\n }\r\n }\r\n else {\r\n // Basic value.\r\n // Just push it into list, or override existing value\r\n if (item.hasIndex(index)) {\r\n item.setIndex(index, entry);\r\n }\r\n else {\r\n item.push(entry);\r\n }\r\n }\r\n });\r\n // Truncate the list if it contains less items than the config\r\n // array\r\n while (!parent && (configValue.length + extraCount) < item.length) {\r\n item.pop();\r\n }\r\n };\r\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\r\n BaseObject.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // Language must come first, so it's all set up when the rest of the\r\n // elements are being instantiated\r\n else if (a == \"language\") {\r\n return -1;\r\n }\r\n else if (b == \"language\") {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n };\r\n /**\r\n * Checks if field should be just assigned as is, without any checking when\r\n * processing JSON config.\r\n *\r\n * Extending functions can override this function to do their own checks.\r\n *\r\n * @param field Field name\r\n * @return Assign as is?\r\n */\r\n BaseObject.prototype.asIs = function (field) {\r\n return $array.indexOf([\"locale\"], field) != -1;\r\n };\r\n /**\r\n * Checks if field needs to be converted to function, if it is specified\r\n * as string.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n BaseObject.prototype.asFunction = function (field) {\r\n return false;\r\n };\r\n /**\r\n * Creates a relevant class instance if such class definition exists.\r\n *\r\n * @ignore Exclude from docs\r\n * @param className Class name\r\n * @return Instance\r\n */\r\n BaseObject.prototype.createClassInstance = function (className) {\r\n if ($type.hasValue(registry.registeredClasses[className])) {\r\n return new registry.registeredClasses[className]();\r\n }\r\n else {\r\n throw Error(\"Invalid type: \\\"\" + className + \"\\\".\");\r\n }\r\n };\r\n /**\r\n * Creates a class instance for a config entry using it's type. (as set in\r\n * `type` property)\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config part\r\n * @return Instance\r\n */\r\n BaseObject.prototype.createEntryInstance = function (config) {\r\n var res;\r\n if ($type.hasValue(config[\"type\"])) {\r\n res = this.createClassInstance(config[\"type\"]);\r\n }\r\n if (!res) {\r\n return config;\r\n }\r\n return res;\r\n };\r\n /**\r\n * Determines config object type.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config part\r\n * @return Type\r\n */\r\n BaseObject.prototype.getConfigEntryType = function (config) {\r\n if ($type.hasValue(config[\"type\"])) {\r\n if ($type.hasValue(registry.registeredClasses[config[\"type\"]])) {\r\n return registry.registeredClasses[config[\"type\"]];\r\n }\r\n else {\r\n throw Error(\"Invalid type: \\\"\" + config[\"type\"] + \"\\\".\");\r\n }\r\n }\r\n return;\r\n };\r\n /**\r\n * Checks if this element has a property.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prop Property name\r\n * @return Has property?\r\n */\r\n BaseObject.prototype.hasProperty = function (prop) {\r\n return prop in this ? true : false;\r\n };\r\n /**\r\n * Checkes whether JSON key is a reserved keyword.\r\n *\r\n * @param key Key\r\n * @return Reserved\r\n */\r\n BaseObject.prototype.isReserved = function (key) {\r\n return [\"type\", \"forceCreate\"].indexOf(key) !== -1;\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"processingErrors\", {\r\n /**\r\n * A list of errors that happened during JSON processing.\r\n *\r\n * @return Errors\r\n */\r\n get: function () {\r\n if (!this._processingErrors) {\r\n this._processingErrors = [];\r\n }\r\n return this._processingErrors;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return BaseObject;\r\n}());\r\nexport { BaseObject };\r\n;\r\n/**\r\n * A version of [[BaseObject]] with events properties and methods.\r\n * Classes that use [[EventDispatcher]] should extend this instead of\r\n * [[BaseObject]] directly.\r\n */\r\nvar BaseObjectEvents = /** @class */ (function (_super) {\r\n __extends(BaseObjectEvents, _super);\r\n /**\r\n * Constructor\r\n */\r\n function BaseObjectEvents() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"BaseObjectEvents\";\r\n return _this;\r\n }\r\n Object.defineProperty(BaseObjectEvents.prototype, \"events\", {\r\n /**\r\n * An [[EventDispatcher]] instance\r\n */\r\n get: function () {\r\n if (!this._eventDispatcher) {\r\n this._eventDispatcher = new EventDispatcher();\r\n this._disposers.push(this._eventDispatcher);\r\n }\r\n return this._eventDispatcher;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n //public set events(value:EventDispatcher>){\r\n //\tthis._eventDispatcher = value;\r\n //}\r\n /**\r\n * Dispatches an event using own event dispatcher. Will automatically\r\n * populate event data object with event type and target (this element).\r\n * It also checks if there are any handlers registered for this sepecific\r\n * event.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\r\n BaseObjectEvents.prototype.dispatch = function (eventType, data) {\r\n // @todo Implement proper type check\r\n if (this._eventDispatcher) {\r\n if (this.events.isEnabled(eventType)) {\r\n if (data) {\r\n data.type = eventType;\r\n data.target = data.target || this;\r\n this.events.dispatch(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n else {\r\n this.events.dispatch(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Works like `dispatch`, except event is triggered immediately, without\r\n * waiting for the next frame cycle.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\r\n BaseObjectEvents.prototype.dispatchImmediately = function (eventType, data) {\r\n // @todo Implement proper type check\r\n if (this._eventDispatcher) {\r\n if (this.events.isEnabled(eventType)) {\r\n if (data) {\r\n data.type = eventType;\r\n data.target = data.target || this;\r\n this.events.dispatchImmediately(eventType, data);\r\n }\r\n else {\r\n this.events.dispatchImmediately(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Copies all parameters from another [[Sprite]].\r\n *\r\n * @param source Source object\r\n */\r\n BaseObjectEvents.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (source._eventDispatcher) {\r\n this.events.copyFrom(source._eventDispatcher);\r\n }\r\n };\r\n return BaseObjectEvents;\r\n}(BaseObject));\r\nexport { BaseObjectEvents };\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"./Container\";\r\nimport { List, ListDisposer } from \"./utils/List\";\r\nimport { OrderedListTemplate } from \"./utils/SortedList\";\r\nimport { Dictionary } from \"./utils/Dictionary\";\r\nimport { Disposer, MultiDisposer } from \"./utils/Disposer\";\r\nimport { DataSource } from \"./data/DataSource\";\r\nimport { Responsive } from \"./utils/Responsive\";\r\nimport { system } from \"./System\";\r\nimport { DataItem } from \"./DataItem\";\r\nimport { registry } from \"./Registry\";\r\nimport * as $math from \"./utils/Math\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $ease from \"./utils/Ease\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $iter from \"./utils/Iterator\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A Component represents an independent functional element or control, that\r\n * can have it's own behavior, children, data, etc.\r\n *\r\n * A few examples of a Component: [[Legend]], [[Series]], [[Scrollbar]].\r\n *\r\n * @see {@link IComponentEvents} for a list of available events\r\n * @see {@link IComponentAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar Component = /** @class */ (function (_super) {\r\n __extends(Component, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Component() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Holds data field names.\r\n *\r\n * Data fields define connection beween [[DataItem]] and actual properties\r\n * in raw data.\r\n */\r\n _this.dataFields = {};\r\n /**\r\n * A list of [[DataSource]] definitions of external data source.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._dataSources = {};\r\n /**\r\n * This is used when only new data is invalidated (if added using `addData`\r\n * method).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._parseDataFrom = 0;\r\n /**\r\n * Holds the disposers for the dataItems and dataUsers\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._dataDisposers = [];\r\n /**\r\n * Currently selected \"data set\".\r\n *\r\n * If it's set to `\"\"`, main data set (unaggregated data) is used.\r\n */\r\n _this._currentDataSetId = \"\";\r\n /**\r\n * [_start description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._start = 0;\r\n /**\r\n * [_end description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._end = 1;\r\n /**\r\n * If set to `true`, changing data range in element will not trigger\r\n * `daterangechanged` event.\r\n */\r\n _this.skipRangeEvent = false;\r\n /**\r\n * Whenever selected scope changes (chart is zoomed or panned), for example\r\n * by interaction from a Scrollbar, or API, a chart needs to reposition\r\n * its contents.\r\n *\r\n * `rangeChangeDuration` influences how this is performed.\r\n *\r\n * If set to zero (0), the change will happen instantenously.\r\n *\r\n * If set to non-zero value, the chart will gradually animate into new\r\n * position for the set amount of milliseconds.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.rangeChangeDuration = 0;\r\n /**\r\n * An easing function to use for range change animation.\r\n *\r\n * @see {@link Ease}\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.rangeChangeEasing = $ease.cubicOut;\r\n /**\r\n * A duration (ms) of each data parsing step. A Component parses its data in\r\n * chunks in order to avoid completely freezing the machine when large data\r\n * sets are used. This setting will control how many milliseconds should pass\r\n * when parsing data until parser stops for a brief moment to let other\r\n * processes catch up.\r\n */\r\n _this.parsingStepDuration = 50;\r\n /**\r\n * [dataInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.dataInvalid = false;\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.rawDataInvalid = false;\r\n /**\r\n * [dataRangeInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.dataRangeInvalid = false;\r\n /**\r\n * [dataItemsInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.dataItemsInvalid = false;\r\n /**\r\n * If set to a non-zero number the element will \"animate\" data values of its\r\n * children.\r\n *\r\n * This will happen on first load and whenever data values change.\r\n *\r\n * Enabling interpolation will mean that elements will transit smoothly into\r\n * new values rather than updating instantly.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.interpolationDuration = 0;\r\n /**\r\n * An easing function to use for interpolating values when transiting from\r\n * one source value to another.\r\n *\r\n * @default cubicOut\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n * @see {@link Ease}\r\n */\r\n _this.interpolationEasing = $ease.cubicOut;\r\n /**\r\n * Indicates whether transition between data item's values should start and\r\n * play out all at once, or with a small delay (as defined by\r\n * `sequencedInterpolationDelay`) for each subsequent data item.\r\n *\r\n * @default true\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.sequencedInterpolation = true;\r\n /**\r\n * A delay (ms) to wait between animating each subsequent data item's\r\n * interpolation animation.\r\n *\r\n * Relative only if `sequencedInterpolation = true`.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.sequencedInterpolationDelay = 0;\r\n /**\r\n * A progress (0-1) for the data validation process.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.dataValidationProgress = 0;\r\n _this._addAllDataItems = true;\r\n _this._usesData = true;\r\n _this.className = \"Component\";\r\n _this.minZoomCount = 1;\r\n _this.maxZoomCount = 0;\r\n _this._dataItems = new OrderedListTemplate(_this.createDataItem());\r\n _this._dataItems.events.on(\"inserted\", _this.handleDataItemAdded, _this, false);\r\n _this._dataItems.events.on(\"removed\", _this.handleDataItemRemoved, _this, false);\r\n _this._disposers.push(new ListDisposer(_this._dataItems));\r\n _this._disposers.push(_this._dataItems.template);\r\n _this.invalidateData();\r\n // TODO what about remove ?\r\n _this.dataUsers.events.on(\"inserted\", _this.handleDataUserAdded, _this, false);\r\n // Set up disposers\r\n _this._disposers.push(new MultiDisposer(_this._dataDisposers));\r\n _this._start = 0;\r\n _this._end = 1;\r\n _this.maxZoomDeclination = 1;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n Component.prototype.createDataItem = function () {\r\n return new DataItem();\r\n };\r\n /**\r\n * [handleDataUserAdded description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param event Event object\r\n */\r\n Component.prototype.handleDataUserAdded = function (event) {\r\n var dataUser = event.newValue;\r\n dataUser.dataProvider = this;\r\n };\r\n /**\r\n * [handleDataItemValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.handleDataItemValueChange = function (dataItem, name) {\r\n if (!this.dataItemsInvalid) {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n };\r\n /**\r\n * [handleDataItemWorkingLocationChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemWorkingLocationChange = function (dataItem, name) {\r\n };\r\n /**\r\n * [handleDataItemCalculatedValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemCalculatedValueChange = function (dataItem, name) {\r\n };\r\n /**\r\n * [handleDataItemPropertyChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemPropertyChange = function (dataItem, name) {\r\n };\r\n /**\r\n * Populates a [[DataItem]] width data from data source.\r\n *\r\n * Loops through all the fields and if such a field is found in raw data\r\n * object, a corresponding value on passed in `dataItem` is set.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item\r\n */\r\n Component.prototype.processDataItem = function (dataItem, dataContext) {\r\n var _this = this;\r\n if (dataItem) {\r\n if (!dataContext) {\r\n dataContext = {};\r\n }\r\n // store reference to original data item\r\n dataItem.dataContext = dataContext;\r\n var hasSomeValues_1 = false;\r\n $object.each(this.dataFields, function (key, fieldValue) {\r\n var fieldName = key;\r\n var value = dataContext[fieldValue];\r\n // Apply adapters to a retrieved value\r\n if (_this._adapterO) {\r\n if (_this._adapterO.isEnabled(\"dataContextValue\")) {\r\n value = _this._adapterO.apply(\"dataContextValue\", {\r\n field: fieldName,\r\n value: value,\r\n dataItem: dataItem\r\n }).value;\r\n }\r\n }\r\n if ($type.hasValue(value)) {\r\n hasSomeValues_1 = true;\r\n if (dataItem.hasChildren[fieldName]) {\r\n var template = _this.createDataItem();\r\n template.copyFrom(_this.mainDataSet.template);\r\n var children = new OrderedListTemplate(template);\r\n children.events.on(\"inserted\", _this.handleDataItemAdded, _this, false);\r\n children.events.on(\"removed\", _this.handleDataItemRemoved, _this, false);\r\n _this._dataDisposers.push(new ListDisposer(children));\r\n var count = value.length;\r\n for (var i = 0; i < count; i++) {\r\n var rawDataItem = value[i];\r\n var childDataItem = children.create();\r\n childDataItem.parent = dataItem;\r\n _this.processDataItem(childDataItem, rawDataItem);\r\n }\r\n var anyDataItem = dataItem;\r\n anyDataItem[fieldName] = children;\r\n }\r\n else {\r\n // data is converted to numbers/dates in each dataItem\r\n dataItem[fieldName] = value;\r\n }\r\n }\r\n });\r\n $object.each(this.propertyFields, function (key, fieldValue) {\r\n var f = key;\r\n var value = dataContext[fieldValue];\r\n if ($type.hasValue(value)) {\r\n hasSomeValues_1 = true;\r\n dataItem.setProperty(f, value);\r\n }\r\n });\r\n // @todo we might need some flag which would tell whether we should create empty data items or not.\r\n if (!this._addAllDataItems && !hasSomeValues_1) {\r\n this.mainDataSet.remove(dataItem);\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * When validating raw data, instead of processing data item, we update it\r\n *\r\n * @ignore Exclude from docs\r\n * @param item\r\n */\r\n Component.prototype.updateDataItem = function (dataItem) {\r\n var _this = this;\r\n if (dataItem) {\r\n var dataContext_1 = dataItem.dataContext;\r\n $object.each(this.dataFields, function (key, fieldValue) {\r\n var fieldName = key;\r\n var value = dataContext_1[fieldValue];\r\n // Apply adapters to a retrieved value\r\n if (_this._adapterO) {\r\n value = _this._adapterO.apply(\"dataContextValue\", {\r\n field: fieldName,\r\n value: value,\r\n dataItem: dataItem\r\n }).value;\r\n }\r\n if ($type.hasValue(value)) {\r\n if (dataItem.hasChildren[fieldName]) {\r\n var anyDataItem = dataItem;\r\n var children = (anyDataItem[fieldName]);\r\n children.each(function (child) {\r\n _this.updateDataItem(child);\r\n });\r\n }\r\n else {\r\n // data is converted to numbers/dates in each dataItem\t\t\t\t\t\r\n dataItem[fieldName] = value;\r\n }\r\n }\r\n });\r\n $object.each(this.propertyFields, function (key, fieldValue) {\r\n var f = key;\r\n var value = dataContext_1[fieldValue];\r\n if ($type.hasValue(value)) {\r\n dataItem.setProperty(f, value);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * [validateDataElements description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.validateDataElements = function () {\r\n var count = this.endIndex;\r\n for (var i = this.startIndex; i < count; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n // TODO is this correct\r\n if (dataItem) {\r\n this.validateDataElement(dataItem);\r\n }\r\n }\r\n };\r\n /**\r\n * Validates this element and its related elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validate = function () {\r\n this.validateDataElements();\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * [validateDataElement description]\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem [description]\r\n */\r\n Component.prototype.validateDataElement = function (dataItem) {\r\n };\r\n /**\r\n * Adds one or several (array) of data items to the existing data.\r\n *\r\n * @param rawDataItem One or many raw data item objects\r\n */\r\n Component.prototype.addData = function (rawDataItem, removeCount, skipRaw) {\r\n var _this = this;\r\n // need to check if data is invalid, as addData might be called multiple times\r\n if (!this.dataInvalid && this.inited) {\r\n this._parseDataFrom = this.data.length; // save length of parsed data\r\n }\r\n if (!skipRaw) {\r\n if (rawDataItem instanceof Array) {\r\n // can't use concat because new array is returned\r\n $array.each(rawDataItem, function (dataItem) {\r\n _this.data.push(dataItem);\r\n });\r\n }\r\n else {\r\n this.data.push(rawDataItem); // add to raw data array\r\n }\r\n }\r\n if (this.inited) {\r\n this.removeData(removeCount, skipRaw);\r\n }\r\n else {\r\n if ($type.isNumber(removeCount)) {\r\n while (removeCount > 0) {\r\n this.data.shift();\r\n removeCount--;\r\n }\r\n }\r\n }\r\n this.invalidateData();\r\n };\r\n /**\r\n * Removes elements from the beginning of data\r\n *\r\n * @param count number of elements to remove\r\n */\r\n Component.prototype.removeData = function (count, skipRaw) {\r\n if ($type.isNumber(count) && count > 0) {\r\n while (count > 0) {\r\n var dataItem = this.mainDataSet.getIndex(0);\r\n if (dataItem) {\r\n this.mainDataSet.remove(dataItem);\r\n }\r\n this.dataUsers.each(function (dataUser) {\r\n if (!dataUser.data || dataUser.data.length == 0) {\r\n var dataItem_1 = dataUser.mainDataSet.getIndex(0);\r\n if (dataItem_1) {\r\n dataUser.mainDataSet.remove(dataItem_1);\r\n }\r\n }\r\n });\r\n if (!skipRaw) {\r\n this.data.shift();\r\n }\r\n if (this._parseDataFrom > 0) {\r\n this._parseDataFrom--;\r\n }\r\n count--;\r\n }\r\n // changed from invalidateData since 4.7.19 to solve #51551\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * Triggers a data (re)parsing.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateData = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.dataInvalid){\r\n registry.addToInvalidComponents(this);\r\n system.requestFrame();\r\n this.dataInvalid = true;\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidateDataItems();\r\n });\r\n //}\r\n };\r\n /**\r\n * [invalidateDataUsers description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.invalidateDataUsers = function () {\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidate();\r\n });\r\n };\r\n /**\r\n * Invalidates data values. When data array is not changed, but values within\r\n * it changes, we invalidate data so that component would process changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateDataItems = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.dataItemsInvalid){\r\n $array.move(registry.invalidDataItems, this);\r\n system.requestFrame();\r\n this.dataItemsInvalid = true;\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidateDataItems();\r\n });\r\n //}\r\n };\r\n /**\r\n * Invalidates data range. This is done when data which must be shown\r\n * changes (chart is zoomed for example).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateDataRange = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.dataRangeInvalid){\r\n this.dataRangeInvalid = true;\r\n $array.move(registry.invalidDataRange, this);\r\n system.requestFrame();\r\n //}\r\n };\r\n /**\r\n * Processes data range.\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validateDataRange = function () {\r\n $array.remove(registry.invalidDataRange, this);\r\n this.dataRangeInvalid = false;\r\n if (this.startIndex != this._prevStartIndex || this.endIndex != this._prevEndIndex) {\r\n this.rangeChangeUpdate();\r\n this.appendDataItems();\r\n this.invalidate();\r\n this.dispatchImmediately(\"datarangechanged\");\r\n }\r\n };\r\n /**\r\n * [sliceData description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.sliceData = function () {\r\n this._workingStartIndex = this.startIndex;\r\n this._workingEndIndex = this.endIndex;\r\n };\r\n /**\r\n * [rangeChangeUpdate description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.rangeChangeUpdate = function () {\r\n this.sliceData();\r\n this._prevStartIndex = this.startIndex;\r\n this._prevEndIndex = this.endIndex;\r\n };\r\n /**\r\n * [appendDataItems description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.appendDataItems = function () {\r\n // TODO use an iterator instead\r\n var count = this.endIndex;\r\n for (var i = this.startIndex; i < count; i++) {\r\n // data item\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.__disabled = false;\r\n }\r\n }\r\n for (var i = 0; i < this.startIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.__disabled = true;\r\n }\r\n }\r\n for (var i = this.endIndex; i < this.dataItems.length; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.__disabled = true;\r\n }\r\n }\r\n };\r\n /**\r\n * If you want to have a smooth transition from one data values to another, you change your raw data and then you must call this method.\r\n * then instead of redrawing everything, the chart will check raw data and smoothly transit from previous to new data\r\n */\r\n Component.prototype.invalidateRawData = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.rawDataInvalid){\r\n $array.move(registry.invalidRawDatas, this);\r\n system.requestFrame();\r\n this.rawDataInvalid = true;\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidateRawData();\r\n });\r\n //}\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Component.prototype.validateRawData = function () {\r\n var _this = this;\r\n $array.remove(registry.invalidRawDatas, this);\r\n $iter.each(this.mainDataSet.iterator(), function (dataItem) {\r\n if (dataItem) {\r\n _this.updateDataItem(dataItem);\r\n }\r\n });\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n Component.prototype.dispose = function () {\r\n var _this = this;\r\n this.mainDataSet.template.clones.clear();\r\n $object.each(this._dataSources, function (key, source) {\r\n _this.removeDispose(source);\r\n });\r\n this.disposeData();\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Component.prototype.disposeData = function () {\r\n this.mainDataSet.template.clones.clear();\r\n $array.each(this._dataDisposers, function (x) {\r\n x.dispose();\r\n });\r\n // and for all components\r\n $iter.each(this.dataUsers.iterator(), function (dataUser) {\r\n dataUser.disposeData();\r\n });\r\n this._dataDisposers.length = 0;\r\n this._startIndex = undefined;\r\n this._endIndex = undefined;\r\n // dispose old\r\n this.mainDataSet.clear();\r\n this.mainDataSet.template.clones.clear();\r\n if (this._dataSets) {\r\n this._dataSets.clear();\r\n }\r\n };\r\n Component.prototype.getDataItem = function (dataContext) {\r\n return this.mainDataSet.create();\r\n };\r\n /**\r\n * Validates (processes) data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validateData = function () {\r\n this.dispatchImmediately(\"beforedatavalidated\");\r\n this.dataInvalid = false;\r\n registry.removeFromInvalidComponents(this);\r\n if (this.__disabled) {\r\n return;\r\n }\r\n this.dataValidationProgress = 0;\r\n // need this to slice new data\r\n this._prevStartIndex = undefined;\r\n this._prevEndIndex = undefined;\r\n // todo: this needs some overthinking, maybe some extra settings like zoomOotonDataupdate like in v3 or so. some charts like pie chart probably should act like this always\r\n this._startIndex = undefined;\r\n this._endIndex = undefined;\r\n if (this.dataFields.data && this.dataItem) {\r\n var dataContext = this.dataItem.dataContext;\r\n this._data = dataContext[this.dataFields.data];\r\n }\r\n // data items array is reset only if all data is validated, if _parseDataFrom is not 0, we append new data only\r\n // check heatmap demo if uncommented\r\n // fixed both issues by adding && this.data.length > 0\r\n // check adding series example if changed\r\n if (this._parseDataFrom === 0 && this.data.length > 0) {\r\n this.disposeData();\r\n }\r\n if (this.data.length > 0) {\r\n var preloader = this.preloader;\r\n // and for all components\r\n $iter.each(this.dataUsers.iterator(), function (dataUser) {\r\n // todo: this needs some overthinking, maybe some extra settings like zoomOUtonDataupdate like in v3 or so. some charts like pie chart probably should act like this always\r\n dataUser._startIndex = undefined;\r\n dataUser._endIndex = undefined;\r\n });\r\n var counter = 0;\r\n var startTime = Date.now();\r\n // parse data\r\n var i = this._parseDataFrom;\r\n var n = this.data.length;\r\n var _loop_1 = function () {\r\n var rawDataItem = this_1.data[i];\r\n if (this_1._usesData) {\r\n var dataItem = this_1.getDataItem(rawDataItem);\r\n this_1.processDataItem(dataItem, rawDataItem);\r\n }\r\n this_1.dataUsers.each(function (dataUser) {\r\n if (dataUser.data.length == 0) { // checking if data is not set directly\r\n var dataUserDataItem = dataUser.getDataItem(rawDataItem);\r\n dataUser.processDataItem(dataUserDataItem, rawDataItem);\r\n }\r\n });\r\n counter++;\r\n // show preloader if this takes too many time\r\n if (counter == 100) { // no need to check it on each data item\r\n counter = 0;\r\n var elapsed = Date.now() - startTime;\r\n if (elapsed > this_1.parsingStepDuration) {\r\n if (i < this_1.data.length - 10) {\r\n this_1._parseDataFrom = i + 1;\r\n // update preloader\r\n if (preloader) {\r\n if (i / this_1.data.length > 0.5 && !preloader.visible) {\r\n // do not start showing\r\n }\r\n else {\r\n preloader.progress = i / this_1.data.length;\r\n }\r\n }\r\n this_1.dataValidationProgress = i / this_1.data.length;\r\n i = this_1.data.length; // stops cycle\r\n this_1.invalidateData();\r\n return { value: void 0 };\r\n }\r\n }\r\n }\r\n };\r\n var this_1 = this;\r\n for (i; i < n; i++) {\r\n var state_1 = _loop_1();\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n this.dataUsers.each(function (dataUser) {\r\n if (dataUser.hidden || (dataUser.appeared && !dataUser.visible && dataUser.stacked)) {\r\n dataUser.hide(0);\r\n }\r\n });\r\n }\r\n this.dataValidationProgress = 1;\r\n this._parseDataFrom = 0; // reset this index, it is set to dataItems.length if addData() method was used.\r\n this.invalidateDataItems();\r\n if (!this._internalDefaultsApplied) {\r\n this.applyInternalDefaults();\r\n }\r\n this.dispatch(\"datavalidated\"); // can't zoom chart if dispatched immediately\r\n };\r\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validateDataItems = function () {\r\n $array.remove(registry.invalidDataItems, this);\r\n this.dataItemsInvalid = false;\r\n this.invalidateDataRange();\r\n this.invalidate();\r\n this.dispatch(\"dataitemsvalidated\");\r\n };\r\n Object.defineProperty(Component.prototype, \"data\", {\r\n /**\r\n * Returns element's source (raw) data.\r\n *\r\n * @return Data\r\n */\r\n get: function () {\r\n if (!this._data) {\r\n this._data = [];\r\n }\r\n if (!this._adapterO) {\r\n return this._data;\r\n }\r\n else {\r\n return this._adapterO.apply(\"data\", this._data);\r\n }\r\n },\r\n /**\r\n * Sets source (raw) data for the element. The \"data\" is always an `Array`\r\n * of objects.\r\n *\r\n * IMPORTANT: The order of data items in `data` array is important as it\r\n * might affect chart look and behavior. [More details](https://www.amcharts.com/docs/v4/concepts/data/#Order_of_data_items).\r\n *\r\n * @param value Data\r\n */\r\n set: function (value) {\r\n this.setData(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Component.prototype.setData = function (value) {\r\n // array might be the same, but there might be items added\r\n // todo: check if array changed, toString maybe?\r\n if (!this.isDisposed()) {\r\n this._parseDataFrom = 0;\r\n this.disposeData();\r\n this._data = value;\r\n if (value && value.length > 0) {\r\n this.invalidateData();\r\n }\r\n else {\r\n this.dispatchImmediately(\"beforedatavalidated\");\r\n this.dispatch(\"datavalidated\");\r\n }\r\n }\r\n };\r\n /**\r\n * Returns (creates if necessary) a [[DataSource]] bound to any specific\r\n * property.\r\n *\r\n * For example if I want to bind `data` to an external JSON file, I'd create\r\n * a DataSource for it.\r\n *\r\n * @param property Property to bind external data to\r\n * @return A DataSource for property\r\n */\r\n Component.prototype.getDataSource = function (property) {\r\n var _this = this;\r\n if (!$type.hasValue(this._dataSources[property])) {\r\n this._dataSources[property] = new DataSource();\r\n this._dataSources[property].component = this;\r\n this.setDataSourceEvents(this._dataSources[property], property);\r\n this._dataSources[property].adapter.add(\"dateFields\", function (val) {\r\n return _this.dataSourceDateFields(val);\r\n });\r\n this._dataSources[property].adapter.add(\"numberFields\", function (val) {\r\n return _this.dataSourceNumberFields(val);\r\n });\r\n this.events.on(\"inited\", function () {\r\n _this.loadData(property);\r\n }, this, false);\r\n }\r\n return this._dataSources[property];\r\n };\r\n Object.defineProperty(Component.prototype, \"dataSource\", {\r\n /**\r\n * @return Data source\r\n */\r\n get: function () {\r\n if (!this._dataSources[\"data\"]) {\r\n this.getDataSource(\"data\");\r\n }\r\n return this._dataSources[\"data\"];\r\n },\r\n /**\r\n *A [[DataSource]] to be used for loading Component's data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/loading-external-data/} for more on loading external data\r\n * @param value Data source\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this._dataSources[\"data\"]) {\r\n this.removeDispose(this._dataSources[\"data\"]);\r\n }\r\n this._dataSources[\"data\"] = value;\r\n this._dataSources[\"data\"].component = this;\r\n this.events.on(\"inited\", function () {\r\n _this.loadData(\"data\");\r\n }, this, false);\r\n this.setDataSourceEvents(value, \"data\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Initiates loading of the external data via [[DataSource]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.loadData = function (property) {\r\n this._dataSources[property].load();\r\n };\r\n /**\r\n * This function is called by the [[DataSource]]'s `dateFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Array of date fields\r\n * @return Array of date fields populated with chart's date fields\r\n */\r\n Component.prototype.dataSourceDateFields = function (value) {\r\n return value;\r\n };\r\n /**\r\n * This function is called by the [[DataSource]]'s `numberFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Array of number fields\r\n * @return Array of number fields populated with chart's number fields\r\n */\r\n Component.prototype.dataSourceNumberFields = function (value) {\r\n return value;\r\n };\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param list [description]\r\n * @param dataFields [description]\r\n * @param targetList [description]\r\n * @return [description]\r\n */\r\n Component.prototype.populateDataSourceFields = function (list, dataFields, targetList) {\r\n $array.each(targetList, function (value) {\r\n if (dataFields[value] && $array.indexOf(list, dataFields[value]) === -1) {\r\n list.push(dataFields[value]);\r\n }\r\n });\r\n return list;\r\n };\r\n /**\r\n * Sets events on a [[DataSource]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.setDataSourceEvents = function (ds, property) {\r\n var _this = this;\r\n ds.events.on(\"started\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0;\r\n //preloader.label.text = this.language.translate(\"Loading\");\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"loadstarted\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.25;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"loadended\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.5;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"parseended\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.75;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"ended\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"error\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n _this.openModal(ev.message);\r\n }, undefined, false);\r\n if (property) {\r\n ds.events.on(\"done\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n if (property == \"data\" && !$type.isArray(ev.data)) {\r\n ev.data = [ev.data];\r\n }\r\n if (ds.incremental && property == \"data\" && _this.data.length) {\r\n _this.addData(ev.data, ds.keepCount ? ev.data.length : 0);\r\n }\r\n else if (ds.updateCurrentData && property == \"data\" && _this.data.length) {\r\n // cycle through existing data items\r\n $array.each(_this.data, function (item, index) {\r\n if ($type.hasValue(ev.data[index])) {\r\n $object.each(item, function (key, val) {\r\n if ($type.hasValue(ev.data[index][key])) {\r\n item[key] = ev.data[index][key];\r\n }\r\n });\r\n }\r\n });\r\n _this.invalidateRawData();\r\n }\r\n else {\r\n _this[property] = ev.data;\r\n }\r\n });\r\n }\r\n };\r\n Object.defineProperty(Component.prototype, \"responsive\", {\r\n /**\r\n * @return Responsive rules handler\r\n */\r\n get: function () {\r\n if (!this._responsive) {\r\n this._responsive = new Responsive();\r\n this._responsive.component = this;\r\n }\r\n return this._responsive;\r\n },\r\n /**\r\n * A [[Responsive]] instance to be used when applying conditional\r\n * property values.\r\n *\r\n * NOTE: Responsive features are currently in development and may not work\r\n * as expected, if at all.\r\n *\r\n * @param value Responsive rules handler\r\n */\r\n set: function (value) {\r\n this._responsive = value;\r\n this._responsive.component = this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets current zoom.\r\n *\r\n * The range uses relative values from 0 to 1, with 0 marking beginning and 1\r\n * marking end of the available data range.\r\n *\r\n * This method will not have any effect when called on a chart object.\r\n * Since the chart can have a number of axes and series, each with its own\r\n * data, the meaning of \"range\" is very ambiguous.\r\n *\r\n * To zoom the chart use `zoom*` methods on its respective axes.\r\n *\r\n * @param range Range\r\n * @param skipRangeEvent Should rangechanged event not be triggered?\r\n * @param instantly Do not animate?\r\n * @return Actual modidied range (taking `maxZoomFactor` into account)\r\n */\r\n Component.prototype.zoom = function (range, skipRangeEvent, instantly, declination) {\r\n var _this = this;\r\n if (skipRangeEvent === void 0) { skipRangeEvent = false; }\r\n if (instantly === void 0) { instantly = false; }\r\n var start = range.start;\r\n var end = range.end;\r\n var priority = range.priority;\r\n if (range.start == range.end) {\r\n range.start = range.start - 0.5 / this.maxZoomFactor;\r\n range.end = range.end + 0.5 / this.maxZoomFactor;\r\n }\r\n if (priority == \"end\" && end == 1 && start != 0) {\r\n if (start < this.start) {\r\n priority = \"start\";\r\n }\r\n }\r\n if (priority == \"start\" && start == 0) {\r\n if (end > this.end) {\r\n priority = \"end\";\r\n }\r\n }\r\n if (!$type.isNumber(declination)) {\r\n declination = this.maxZoomDeclination;\r\n }\r\n if (!$type.isNumber(start) || !$type.isNumber(end)) {\r\n return { start: this.start, end: this.end };\r\n }\r\n if (this._finalStart != start || this._finalEnd != end) {\r\n var maxZoomFactor = this.maxZoomFactor / this.minZoomCount;\r\n var minZoomFactor = this.maxZoomFactor / this.maxZoomCount;\r\n // most likely we are dragging left scrollbar grip here, so we tend to modify end\r\n if (priority == \"start\") {\r\n if (this.maxZoomCount > 0) {\r\n // add to the end\r\n if (1 / (end - start) < minZoomFactor) {\r\n end = start + 1 / minZoomFactor;\r\n }\r\n }\r\n // add to the end\r\n if (1 / (end - start) > maxZoomFactor) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n //unless end is > 0\r\n if (end > 1 && end - start < 1 / maxZoomFactor) {\r\n //end = 1;\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n }\r\n // most likely we are dragging right, so we modify left\r\n else {\r\n if (this.maxZoomCount > 0) {\r\n // add to the end\r\n if (1 / (end - start) < minZoomFactor) {\r\n start = end - 1 / minZoomFactor;\r\n }\r\n }\r\n // remove from start\r\n if (1 / (end - start) > maxZoomFactor) {\r\n if (start <= 0) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n else {\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n }\r\n if (start < 0 && end - start < 1 / maxZoomFactor) {\r\n //start = 0;\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n }\r\n if (start < -declination) {\r\n start = -declination;\r\n }\r\n if (1 / (end - start) > maxZoomFactor) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n if (end > 1 + declination) {\r\n end = 1 + declination;\r\n }\r\n if (1 / (end - start) > maxZoomFactor) {\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n this._finalEnd = end;\r\n this._finalStart = start;\r\n this.skipRangeEvent = skipRangeEvent;\r\n this.dispatchImmediately(\"rangechangestarted\");\r\n if (this.rangeChangeDuration > 0 && !instantly) {\r\n // todo: maybe move this to Animation\r\n var rangeChangeAnimation = this.rangeChangeAnimation;\r\n if (rangeChangeAnimation && rangeChangeAnimation.progress < 1) {\r\n var options = rangeChangeAnimation.animationOptions;\r\n if (options.length > 1) {\r\n if (options[0].to == start && options[1].to == end) {\r\n return { start: start, end: end };\r\n }\r\n else {\r\n if (!rangeChangeAnimation.isDisposed()) {\r\n rangeChangeAnimation.stop();\r\n }\r\n }\r\n }\r\n }\r\n if (this.rangeChangeAnimation) {\r\n this.rangeChangeAnimation.kill();\r\n }\r\n rangeChangeAnimation = this.animate([{ property: \"start\", to: start }, { property: \"end\", to: end }], this.rangeChangeDuration, this.rangeChangeEasing);\r\n this.rangeChangeAnimation = rangeChangeAnimation;\r\n if (rangeChangeAnimation && !rangeChangeAnimation.isFinished()) {\r\n rangeChangeAnimation.events.on(\"animationended\", function () {\r\n _this.dispatchImmediately(\"rangechangeended\");\r\n });\r\n }\r\n else {\r\n this.dispatchImmediately(\"rangechangeended\");\r\n }\r\n }\r\n else {\r\n this.start = start;\r\n this.end = end;\r\n this.dispatch(\"rangechangeended\");\r\n }\r\n }\r\n return { start: start, end: end };\r\n };\r\n /**\r\n * Zooms to specific data items using their index in data.\r\n *\r\n * This method will not have any effect when called on a chart object.\r\n * Since the chart can have a number of axes and series, each with its own\r\n * data, the meaning of \"index\" is very ambiguous.\r\n *\r\n * To zoom the chart use `zoom*` methods on its respective axes.\r\n *\r\n * @param startIndex Index of the starting data item\r\n * @param endIndex Index of the ending data item\r\n * @param skipRangeEvent Should rangechanged event not be triggered?\r\n * @param instantly Do not animate?\r\n */\r\n Component.prototype.zoomToIndexes = function (startIndex, endIndex, skipRangeEvent, instantly) {\r\n if (!$type.isNumber(startIndex) || !$type.isNumber(endIndex)) {\r\n return;\r\n }\r\n var start = startIndex / this.dataItems.length;\r\n var end = endIndex / this.dataItems.length;\r\n this.zoom({ start: start, end: end }, skipRangeEvent, instantly);\r\n };\r\n Object.defineProperty(Component.prototype, \"zoomFactor\", {\r\n /**\r\n * A current zoom factor (0-1). 1 meaning fully zoomed out. (showing all of\r\n * the available data)\r\n *\r\n * @return Zoom factor\r\n */\r\n get: function () {\r\n return $math.fitToRange(1 / (this.end - this.start), 1, this.maxZoomFactor);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"maxZoomFactor\", {\r\n /**\r\n * @return Maximum zoomFactor\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxZoomFactor\");\r\n },\r\n /**\r\n * Max available `zoomFactor`.\r\n *\r\n * The element will not allow zoom to occur beyond this factor.\r\n *\r\n * [[DateAxis]] and [[CategoryAxis]] calculate this atutomatically so that\r\n * category axis could be zoomed to one category and date axis allows to be\r\n * zoomed up to one base interval.\r\n *\r\n * In case you want to restrict category or date axis to be zoomed to more\r\n * than one category or more than one base interval, use `minZoomCount`\r\n * property (set it to `> 1`).\r\n *\r\n * Default value of [[ValueAxis]]'s `maxZoomFactor` is `1000`.\r\n *\r\n * Feel free to modify it to allow bigger zoom or to restrict zooming.\r\n *\r\n * @param value Maximum zoomFactor\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"maxZoomFactor\", value)) {\r\n if (value == 1) {\r\n this.maxZoomDeclination = 0;\r\n }\r\n this.invalidateDataRange();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"maxZoomDeclination\", {\r\n /**\r\n * @ignore\r\n * @return Maximum zoom declination\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxZoomDeclination\");\r\n },\r\n /**\r\n * Max zoom declination.\r\n *\r\n * @ignore\r\n * @default 1\r\n * @param value Maximum zoom declination\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"maxZoomDeclination\", value)) {\r\n this.invalidateDataRange();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"startIndex\", {\r\n /**\r\n * Current starting index.\r\n *\r\n * @return Start index\r\n */\r\n get: function () {\r\n if (!$type.isNumber(this._startIndex)) {\r\n this._startIndex = 0;\r\n }\r\n return this._startIndex;\r\n },\r\n /**\r\n * Sets current starting index.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Start index\r\n */\r\n set: function (value) {\r\n this._startIndex = $math.fitToRange(Math.round(value), 0, this.dataItems.length);\r\n //this._workingStartIndex = this._startIndex; // not good, breaks adjusted working start index of line series\r\n this.start = this.indexToPosition(this._startIndex);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n * @todo:review description\r\n * returns item's relative position by the index of the item\r\n * @param index\r\n */\r\n Component.prototype.indexToPosition = function (index) {\r\n return index / this.dataItems.length;\r\n };\r\n Object.defineProperty(Component.prototype, \"endIndex\", {\r\n /**\r\n * Current ending index.\r\n *\r\n * @return End index\r\n */\r\n get: function () {\r\n var count = this.dataItems.length;\r\n if (!$type.isNumber(this._endIndex) || this._endIndex > count) {\r\n this._endIndex = count;\r\n }\r\n return this._endIndex;\r\n },\r\n /**\r\n * Sets current ending index.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value End index\r\n */\r\n set: function (value) {\r\n this._endIndex = $math.fitToRange(Math.round(value), 0, this.dataItems.length);\r\n //this._workingEndIndex = this._endIndex; // not good, breaks adjusted workingend index of line series\r\n this.end = this.indexToPosition(this._endIndex);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"start\", {\r\n /**\r\n * @return Start (0-1)\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this._start;\r\n }\r\n else {\r\n return this._adapterO.apply(\"start\", this._start);\r\n }\r\n },\r\n /**\r\n * Start of the current data range (zoom).\r\n *\r\n * These are relative values from 0 (beginning) to 1 (end).\r\n *\r\n * @param value Start (0-1)\r\n */\r\n set: function (value) {\r\n // value = $math.round(value, 10); not good\r\n //if (1 / (this.end - value) > this.maxZoomFactor) {\r\n //\tvalue = this.end - 1 / this.maxZoomFactor;\r\n //}\r\n if (this._start != value) {\r\n this._start = value;\r\n var startIndex = Math.max(0, Math.floor(this.dataItems.length * value) || 0);\r\n this._startIndex = Math.min(startIndex, this.dataItems.length);\r\n this.invalidateDataRange();\r\n this.invalidate();\r\n this.dispatchImmediately(\"startchanged\");\r\n this.dispatch(\"startendchanged\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"end\", {\r\n /**\r\n * @return End (0-1)\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this._end;\r\n }\r\n else {\r\n return this._adapterO.apply(\"end\", this._end);\r\n }\r\n },\r\n /**\r\n * End of the current data range (zoom).\r\n *\r\n * These are relative values from 0 (beginning) to 1 (end).\r\n *\r\n * @param value End (0-1)\r\n */\r\n set: function (value) {\r\n // value = $math.round(value, 10); // not good\r\n //if (1 / (value - this.start) > this.maxZoomFactor) {\r\n //\tvalue = 1 / this.maxZoomFactor + this.start;\r\n //}\r\n if (this._end != value) {\r\n this._end = value;\r\n this._endIndex = Math.min(this.dataItems.length, Math.ceil(this.dataItems.length * value) || 0);\r\n this.invalidateDataRange();\r\n this.invalidate();\r\n this.dispatchImmediately(\"endchanged\");\r\n this.dispatch(\"startendchanged\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [removeFromInvalids description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.removeFromInvalids = function () {\r\n _super.prototype.removeFromInvalids.call(this);\r\n registry.removeFromInvalidComponents(this);\r\n $array.remove(registry.invalidDataItems, this);\r\n $array.remove(registry.invalidDataRange, this);\r\n $array.remove(registry.invalidRawDatas, this);\r\n };\r\n Object.defineProperty(Component.prototype, \"dataItems\", {\r\n /**\r\n * Returns a list of source [[DataItem]] objects currently used in the chart.\r\n *\r\n * @return List of data items\r\n */\r\n get: function () {\r\n if (this._currentDataSetId != \"\") {\r\n var dataItems = this.dataSets.getKey(this._currentDataSetId);\r\n if (dataItems) {\r\n return dataItems;\r\n }\r\n }\r\n return this._dataItems;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"dataSets\", {\r\n /**\r\n * Holds data items for data sets (usually aggregated data).\r\n *\r\n * @ignore\r\n * @since 4.7.0\r\n * @return Data sets\r\n */\r\n get: function () {\r\n if (!this._dataSets) {\r\n this._dataSets = new Dictionary();\r\n }\r\n return this._dataSets;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Makes the chart use particular data set.\r\n *\r\n * If `id` is not provided or there is no such data set, main data will be\r\n * used.\r\n *\r\n * @ignore\r\n * @since 4.7.0\r\n * @param id Data set id\r\n */\r\n Component.prototype.setDataSet = function (id) {\r\n if (this._currentDataSetId != id) {\r\n var dataSet = this.dataSets.getKey(id);\r\n if (!dataSet) {\r\n if (this._currentDataSetId != \"\") {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = true;\r\n });\r\n this._currentDataSetId = \"\";\r\n this.invalidateDataRange();\r\n this._prevStartIndex = undefined;\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = false;\r\n });\r\n return true;\r\n }\r\n }\r\n else {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = true;\r\n });\r\n this._currentDataSetId = id;\r\n this.invalidateDataRange();\r\n this._prevStartIndex = undefined;\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = false;\r\n });\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(Component.prototype, \"currentDataSetId\", {\r\n /**\r\n * Returns id of the currently used data set, or `undefined` if main data set\r\n * is in use.\r\n *\r\n * @since 4.7.0\r\n * @return Current data set id\r\n */\r\n get: function () {\r\n return this._currentDataSetId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"mainDataSet\", {\r\n /**\r\n * Returns reference to \"main\" data set (unaggregated data as it was supplied\r\n * in `data`).\r\n *\r\n * @since 4.7.0\r\n * @return Main data set\r\n */\r\n get: function () {\r\n return this._dataItems;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates the indexes for the dataItems\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype._updateDataItemIndexes = function (startIndex) {\r\n var dataItems = this.mainDataSet.values;\r\n var length = dataItems.length;\r\n for (var i = startIndex; i < length; ++i) {\r\n dataItems[i]._index = i;\r\n }\r\n };\r\n /**\r\n * Processes newly added [[DataItem]] as well as triggers data re-validation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event [description]\r\n */\r\n Component.prototype.handleDataItemAdded = function (event) {\r\n event.newValue.component = this;\r\n this._updateDataItemIndexes(event.index);\r\n if (!this.dataItemsInvalid) {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * removes [[DataItem]] as well as triggers data re-validation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event [description]\r\n */\r\n Component.prototype.handleDataItemRemoved = function (event) {\r\n //\t\tevent.oldValue.component = undefined; // not good, as some items might be not removed from component lists\r\n this._updateDataItemIndexes(event.index);\r\n if (!this.dataItemsInvalid) {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * Binds a data element's field to a specific field in raw data.\r\n * For example, for the very basic column chart you'd want to bind a `value`\r\n * field to a field in data, such as `price`.\r\n *\r\n * Some more advanced Components, like [[CandlestickSeries]] need several\r\n * data fields bound to data, such as ones for open, high, low and close\r\n * values.\r\n *\r\n * @todo Example\r\n * @param field Field name\r\n * @param value Field name in data\r\n */\r\n Component.prototype.bindDataField = function (field, value) {\r\n this.dataFields[field] = value;\r\n this.invalidateDataRange();\r\n };\r\n /**\r\n * Invalidates processed data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateProcessedData = function () {\r\n this.resetProcessedRange();\r\n this.invalidateDataRange();\r\n };\r\n /**\r\n * [resetProcessedRange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.resetProcessedRange = function () {\r\n this._prevEndIndex = null;\r\n this._prevStartIndex = null;\r\n };\r\n Object.defineProperty(Component.prototype, \"dataUsers\", {\r\n /**\r\n * Returns all other [[Component]] objects that are using this element's\r\n * data.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @return [description]\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._dataUsers) {\r\n this._dataUsers = new List();\r\n //this._disposers.push(new ListDisposer(this._dataUsers));\r\n // TODO better way of handling this? e.g. move into another module ?\r\n this._disposers.push(new Disposer(function () {\r\n // TODO clear the list ?\r\n $iter.each(_this._dataUsers.iterator(), function (x) {\r\n x.dispose();\r\n });\r\n }));\r\n }\r\n return this._dataUsers;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a clone of this element.\r\n *\r\n * @return Clone\r\n */\r\n Component.prototype.clone = function () {\r\n var component = _super.prototype.clone.call(this);\r\n component.dataFields = $utils.copyProperties(this.dataFields, {});\r\n return component;\r\n };\r\n /**\r\n * Copies all parameters from another [[Component]].\r\n *\r\n * @param source Source Component\r\n */\r\n Component.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.data = source.data;\r\n this.sequencedInterpolation = source.sequencedInterpolation;\r\n this.sequencedInterpolationDelay = source.sequencedInterpolationDelay;\r\n this.interpolationDuration = source.interpolationDuration;\r\n this.interpolationEasing = source.interpolationEasing;\r\n };\r\n /**\r\n * Invalidates the whole element, including all its children, causing\r\n * complete re-parsing of data and redraw.\r\n *\r\n * Use sparingly!\r\n */\r\n Component.prototype.reinit = function () {\r\n this._inited = false;\r\n this.deepInvalidate();\r\n };\r\n /**\r\n * Add an adapter for data.\r\n *\r\n * @return Exporting\r\n */\r\n Component.prototype.getExporting = function () {\r\n var _export = _super.prototype.getExporting.call(this);\r\n if (!_export.adapter.has(\"data\", this._exportData, -1, this)) {\r\n _export.adapter.add(\"data\", this._exportData, -1, this);\r\n this.events.on(\"datavalidated\", function (ev) {\r\n _export.handleDataUpdated();\r\n });\r\n }\r\n return _export;\r\n };\r\n Component.prototype._exportData = function (arg) {\r\n arg.data = this.data;\r\n return arg;\r\n };\r\n Component.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (changed) {\r\n this.invalidateData();\r\n }\r\n return changed;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Component.prototype.setShowOnInit = function (value) {\r\n if (value != this.getPropertyValue(\"showOnInit\")) {\r\n if (value && !this.inited && !this.hidden) {\r\n this._showOnInitDisposer2 = this.events.once(\"dataitemsvalidated\", this.hideInitially, this, false);\r\n this._disposers.push(this._showOnInitDisposer2);\r\n }\r\n else {\r\n if (this._showOnInitDisposer2) {\r\n this.removeDispose(this._showOnInitDisposer2);\r\n }\r\n }\r\n }\r\n // important order here\r\n _super.prototype.setShowOnInit.call(this, value);\r\n };\r\n Component.prototype.setBaseId = function (value) {\r\n if (value != this._baseId) {\r\n if (this.dataInvalid) {\r\n this.dataInvalid = false;\r\n registry.removeFromInvalidComponents(this);\r\n this._baseId = value;\r\n this.invalidateData();\r\n }\r\n }\r\n _super.prototype.setBaseId.call(this, value);\r\n };\r\n Object.defineProperty(Component.prototype, \"minZoomCount\", {\r\n /**\r\n * @return Min zoom count\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minZoomCount\");\r\n },\r\n /**\r\n * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * Allows restricting zoom in beyond certain number of categories or base\r\n * intervals.\r\n *\r\n * @default 1\r\n * @param value Min zoom count\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minZoomCount\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"maxZoomCount\", {\r\n /**\r\n * @return Max zoom count\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxZoomCount\");\r\n },\r\n /**\r\n * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * Limits how many categories or base intervals can be shown at the same\r\n * time.\r\n *\r\n * If there are more items in the chart, the chart will auto-zoom.\r\n *\r\n * @default 0 (no limit)\r\n * @since 4.6.2\r\n * @param value Max zoom count\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxZoomCount\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype._systemCheckIfValidate = function () {\r\n if (this.dataInvalid || (this.dataProvider && this.dataProvider.dataInvalid)) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n Component.prototype.asFunction = function (field) {\r\n return field == \"interpolationEasing\" || field == \"rangeChangeEasing\" || _super.prototype.asIs.call(this, field);\r\n };\r\n return Component;\r\n}(Container));\r\nexport { Component };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Component\"] = Component;\r\n","/**\r\n * Container module\r\n * @todo Needs description\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"./Sprite\";\r\nimport { SpriteState } from \"./SpriteState\";\r\nimport { List } from \"./utils/List\";\r\nimport { MultiDisposer } from \"./utils/Disposer\";\r\nimport { Dictionary, DictionaryDisposer } from \"./utils/Dictionary\";\r\nimport { getInteraction } from \"./interaction/Interaction\";\r\nimport { Rectangle } from \"./elements/Rectangle\";\r\nimport { Percent } from \"./utils/Percent\";\r\nimport { registry } from \"./Registry\";\r\nimport { InterfaceColorSet } from \"../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"./utils/Iterator\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $math from \"./utils/Math\";\r\nimport * as $type from \"./utils/Type\";\r\nimport * as $dom from \"./utils/DOM\";\r\nimport { system } from \"./System\";\r\nimport { options } from \"./Options\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Container can contain multiple sprites and arrange them in various layouts.\r\n *\r\n * @see {@link IContainerEvents} for a list of available events\r\n * @see {@link IContainerAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar Container = /** @class */ (function (_super) {\r\n __extends(Container, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Container() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Container children. (sorted by layout)\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._childrenByLayout = [];\r\n /**\r\n * Container's disposers for its child elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._childrenDisposers = new Dictionary();\r\n /**\r\n * Indicates if this container contains any focused elements, including\r\n * itself.\r\n */\r\n _this.hasFocused = false;\r\n /**\r\n * An array of references to elements the state should be set, when it is set\r\n * on this element.\r\n */\r\n _this.setStateOnSprites = [];\r\n /*\r\n * @ignore\r\n */\r\n _this.layoutInvalid = false;\r\n _this._absoluteWidth = 0;\r\n _this._absoluteHeight = 0;\r\n /**\r\n * An array of child Sprites that should be ready before this object can\r\n * fire a \"ready\" event.\r\n */\r\n _this._shouldBeReady = [];\r\n /**\r\n * Enables touch tap protection.\r\n */\r\n _this._tapToActivate = false;\r\n /**\r\n * If `tapToActivate` is used, this setting will determine how long the chart\r\n * will stay in \"active\" mode.\r\n *\r\n * @default 3000\r\n * @since 4.4.0\r\n */\r\n _this.tapTimeout = 3000;\r\n _this.className = \"Container\";\r\n _this._element = _this.paper.addGroup(\"g\");\r\n _this.group.add(_this.element);\r\n _this.setPropertyValue(\"pixelPerfect\", false);\r\n _this.setPropertyValue(\"layout\", \"absolute\");\r\n _this.setPropertyValue(\"fixedWidthGrid\", false);\r\n _this.setPropertyValue(\"verticalCenter\", \"none\");\r\n _this.setPropertyValue(\"horizontalCenter\", \"none\");\r\n _this._positionPrecision = 4;\r\n _this._disposers.push(new DictionaryDisposer(_this._childrenDisposers));\r\n _this.children.events.on(\"inserted\", _this.handleChildAdded, _this);\r\n _this.children.events.on(\"removed\", _this.handleChildRemoved, _this);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Handles adding of a new child into `children`. Adding new children might\r\n * affect the whole layout so it needs to be revalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n * @todo Throw an exception on adding a disposed object. Of course it's better NOT TO add disposed objects, so that what we should focus on.\r\n */\r\n Container.prototype.handleChildAdded = function (event) {\r\n this.processChild(event.newValue);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Container.prototype.processChild = function (child) {\r\n // try solves the problem when somedy adds child directly to children\r\n try {\r\n this._childrenDisposers.insertKey(child.uid, new MultiDisposer([\r\n // it's not enough to listen to POSITION_CHANGED only, as some extra redrawals will happen.\r\n child.events.on(\"transformed\", this.handleChildTransform, this),\r\n child.events.on(\"zIndexChanged\", this.sortAndAdd, this)\r\n ]));\r\n }\r\n catch (err) {\r\n // void\r\n }\r\n if (this.element) {\r\n var group = this.element;\r\n group.add(child.group);\r\n }\r\n child.parent = this;\r\n child.paper = this.paper;\r\n this.dispatchImmediately(\"childadded\", { type: \"childadded\", newValue: child });\r\n this.invalidate();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Container.prototype.sortAndAdd = function () {\r\n this.sortChildren();\r\n this.addChildren();\r\n };\r\n /**\r\n * Handles child removal. Changing size of the child may change the\r\n * whole layout of the Container, hence layout needs to be invalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n */\r\n Container.prototype.handleChildRemoved = function (event) {\r\n var child = event.oldValue;\r\n // TODO figure out why the key sometimes doesn't exist\r\n this._childrenDisposers.removeKey(child.uid);\r\n if (this.element) {\r\n var group = this.element;\r\n group.removeElement(child.group);\r\n }\r\n if (child.isMeasured) {\r\n this.invalidateLayout();\r\n }\r\n this.dispatchImmediately(\"childremoved\", { type: \"childremoved\", oldValue: child });\r\n };\r\n /**\r\n * Handles child transformation. Changing size of the child may change the\r\n * whole layout of the Container, hence layout needs to be invalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n */\r\n Container.prototype.handleChildTransform = function (event) {\r\n var child = event.target;\r\n if (child.isMeasured) { // && this.layout != \"none\" && this.layout != \"absolute\") {\r\n this.invalidateLayout();\r\n }\r\n };\r\n /**\r\n * Invalidates Container's layout, causing it to be re-evaluated again.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.invalidateLayout = function () {\r\n if (this.layoutInvalid || this.disabled || this.isTemplate || this.layout == \"none\" || this.__disabled) {\r\n return;\r\n }\r\n this.layoutInvalid = true;\r\n registry.addToInvalidLayouts(this);\r\n system.requestFrame();\r\n };\r\n /**\r\n * Invalidates element.\r\n *\r\n * Object will be redrawn during the next update cycle.\r\n *\r\n * Please note that in most cases elements will auto-invalidate when needed. If\r\n * everything works, DO NOT use this method. Use it only if some changes do\r\n * not take otherwise.\r\n */\r\n Container.prototype.invalidate = function () {\r\n _super.prototype.invalidate.call(this);\r\n this.invalidateLayout();\r\n };\r\n /**\r\n * Invalidates the whole element, including layout AND all its child\r\n * elements.\r\n *\r\n * As this will essentially force all elements to redraw, use only if\r\n * absolutely necessary.\r\n */\r\n Container.prototype.deepInvalidate = function () {\r\n _super.prototype.invalidate.call(this);\r\n //this.sortChildren();\r\n $array.each(this._childrenByLayout, function (child) {\r\n if (child instanceof Container) {\r\n child.deepInvalidate();\r\n }\r\n else {\r\n child.invalidate();\r\n }\r\n });\r\n this.invalidateLayout();\r\n };\r\n Object.defineProperty(Container.prototype, \"children\", {\r\n /**\r\n * Returns a list of the child [[Sprite]] elements contained in this\r\n * Container.\r\n *\r\n * @return List of child elements (Sprites)\r\n */\r\n get: function () {\r\n // @todo Review if we can add all children to disposers\r\n if (!this._children) {\r\n this._children = new List();\r\n //this._disposers.push(new ListDisposer(this._children));\r\n }\r\n return this._children;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"minWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minWidth\");\r\n },\r\n /**\r\n * Minimum width (px) for the Container. A container will not\r\n * auto-shrink beyond this value, even if child elements are smaller.\r\n *\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"minWidth\", value)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"minHeight\", {\r\n /**\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minHeight\");\r\n },\r\n /**\r\n * Minimum height (px) for the Container. A container will not\r\n * auto-shrink beyond this value, even if child elements are smaller.\r\n *\r\n * @param value Height (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"minHeight\", value)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Overrides the original `removeElement` so that Container's actual element\r\n * is not removed. We do not need to remove element of a Container.\r\n *\r\n * We do this because remove element each time will fail the `getBBox`.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.removeElement = function () {\r\n };\r\n /**\r\n * Sorts Container's children: the ones with variable width and height are\r\n * put at the end of the list (depending on layout type), so that fixed-width\r\n * ones can be drawn first.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.sortChildren = function () {\r\n var _this = this;\r\n this._childrenByLayout = [];\r\n if (this.layout == \"none\" || this.layout == \"absolute\" || !this.layout) {\r\n //$iter.each(this.children.iterator(), (child) => {\r\n //\tthis._childrenByLayout.push(child);\r\n //});\r\n this._childrenByLayout = this.children.values;\r\n }\r\n else {\r\n // Assemble fixed-size and relative lists\r\n var fixed_1 = [];\r\n var relative_1 = [];\r\n $iter.each(this.children.iterator(), function (child) {\r\n if (_this.layout == \"horizontal\" || _this.layout == \"grid\") {\r\n if (!$type.isNumber(child.percentWidth)) {\r\n fixed_1.push(child);\r\n }\r\n else {\r\n relative_1.push(child);\r\n }\r\n }\r\n else if (_this.layout == \"vertical\") {\r\n if (!$type.isNumber(child.percentHeight)) {\r\n fixed_1.push(child);\r\n }\r\n else {\r\n relative_1.push(child);\r\n }\r\n }\r\n else {\r\n fixed_1.push(child);\r\n }\r\n });\r\n // Concat everything into list\r\n this._childrenByLayout = fixed_1.concat(relative_1);\r\n }\r\n this.calculateRelativeSize();\r\n };\r\n /**\r\n * Calculates relative sizes for all Container's children.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make it protected?\r\n */\r\n Container.prototype.calculateRelativeSize = function () {\r\n var _this = this;\r\n var totalRelativeWidth = 0;\r\n var totalRelativeHeight = 0;\r\n $array.each(this._childrenByLayout, function (child) {\r\n // if child is not measured, we do not care about it at all.\r\n if (child.isMeasured) {\r\n if ($type.isNumber(child.percentWidth)) {\r\n totalRelativeWidth += child.percentWidth;\r\n }\r\n if ($type.isNumber(child.percentHeight)) {\r\n totalRelativeHeight += child.percentHeight;\r\n }\r\n }\r\n });\r\n $array.each(this._childrenByLayout, function (child) {\r\n if (child.isMeasured) {\r\n if (_this.layout == \"horizontal\") {\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / totalRelativeWidth;\r\n }\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / 100;\r\n }\r\n }\r\n if (_this.layout == \"vertical\") {\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / totalRelativeHeight;\r\n }\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / 100;\r\n }\r\n }\r\n if (_this.layout == \"grid\") {\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / 100;\r\n }\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / 100;\r\n }\r\n }\r\n }\r\n if (_this.layout == \"absolute\" || !child.isMeasured) {\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / 100;\r\n }\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / 100;\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Adds all children to Container's SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.addChildren = function () {\r\n /*\r\n Need this check because a child might be assigned to parent even before element is created, for example a theme\r\n access scrollbar.thumb\r\n */\r\n if (this.element) {\r\n var zindexed = $array.copy(this.children.values); // not children by layout!\r\n var sortArray = zindexed.map(function (data, idx) {\r\n return { idx: idx, data: data };\r\n });\r\n sortArray.sort(function (a, b) {\r\n var ai = (a.data.zIndex || 0);\r\n var bi = (b.data.zIndex || 0);\r\n if (ai < bi) {\r\n return -1;\r\n }\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n return a.idx - b.idx;\r\n });\r\n zindexed = sortArray.map(function (val) {\r\n return val.data;\r\n });\r\n var group_1 = this.element;\r\n // check, maybe the order is good already\r\n var isCorrect = true;\r\n if (group_1.node && group_1.node.childNodes) {\r\n for (var i = 0, len = group_1.node.childNodes.length; i < len; i++) {\r\n if (group_1.node.childNodes[i] != zindexed[i].group.node) {\r\n isCorrect = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (!isCorrect) {\r\n $array.each(zindexed, function (child) {\r\n if (child.group) {\r\n group_1.add(child.group);\r\n }\r\n });\r\n if (this._background) {\r\n this.group.addToBack(this._background.group);\r\n }\r\n this.invalidateLayout();\r\n }\r\n }\r\n };\r\n /**\r\n * Creates a new element of specific type and assigns as a child to the\r\n * Container.\r\n *\r\n * @param Class type for the new element\r\n * @return New element\r\n */\r\n Container.prototype.createChild = function (classType) {\r\n var sprite = new classType();\r\n sprite.parent = this;\r\n return sprite;\r\n };\r\n /**\r\n * Removes all Container's children without actually destroying them.\r\n *\r\n * To destroy children use `disposeChildren()` instead.\r\n */\r\n Container.prototype.removeChildren = function () {\r\n // remove all children\r\n // TODO use iteration instead\r\n while (this.children.length > 0) {\r\n var child = this.children.getIndex(0);\r\n child.parent = undefined;\r\n this.children.removeValue(child);\r\n }\r\n };\r\n /**\r\n * Removes and destroys all Container's children.\r\n *\r\n * To remove children from Container without destroying them, use\r\n * `removeChildren()`.\r\n */\r\n Container.prototype.disposeChildren = function () {\r\n // TODO use iteration instead\r\n while (this.children.length > 0) {\r\n var child = this.children.getIndex(0);\r\n child.dispose();\r\n this.children.removeValue(child);\r\n }\r\n };\r\n Object.defineProperty(Container.prototype, \"background\", {\r\n /**\r\n * @return Background element\r\n */\r\n get: function () {\r\n if (!this._background) {\r\n this._background = this.createBackground();\r\n this.processBackground();\r\n }\r\n return this._background;\r\n },\r\n /**\r\n * An element to use as container background.\r\n *\r\n * @param background Background element\r\n */\r\n set: function (background) {\r\n if (this._background && this.background != background) {\r\n this.removeDispose(this._background);\r\n }\r\n if (background) {\r\n this._background = background;\r\n this._disposers.push(background);\r\n this.processBackground();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles the situation where parent element is resized.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.handleGlobalScale = function () {\r\n _super.prototype.handleGlobalScale.call(this);\r\n this.children.each(function (child) {\r\n child.handleGlobalScale();\r\n });\r\n };\r\n /**\r\n * Creates and returns a [[Rectangle]] to use as a background for Container.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background Rectangle element\r\n */\r\n Container.prototype.createBackground = function () {\r\n return new Rectangle();\r\n };\r\n /**\r\n * Decorates background element with required properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.processBackground = function () {\r\n var background = this._background;\r\n if (background) {\r\n background.isMeasured = false;\r\n this._background.fill = new InterfaceColorSet().getFor(\"background\");\r\n background.parent = this;\r\n background.isMeasured = false;\r\n this.children.removeValue(background);\r\n this._disposers.push(background);\r\n this.group.addToBack(this._background.group);\r\n }\r\n };\r\n /**\r\n * Measures the size of container and informs its children of how much size\r\n * they can occupy, by setting their relative `maxWidth` and `maxHeight`\r\n * properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.validateLayout = function () {\r\n var _this = this;\r\n registry.removeFromInvalidLayouts(this);\r\n this.layoutInvalid = false;\r\n // prevents from drawing if topparent is 0x0\r\n /*\r\n let topParent = this.topParent;\r\n if (topParent) {\r\n if (!topParent.maxWidth || !topParent.maxHeight) {\r\n this._disposers.push(topParent.events.once(\"maxsizechanged\", this.invalidateLayout, this));\r\n }\r\n }*/\r\n this._availableWidth = this.innerWidth;\r\n this._availableHeight = this.innerHeight;\r\n var measuredWidth = 0;\r\n var measuredHeight = 0;\r\n var allValid = true;\r\n if (this.children) {\r\n this.sortChildren();\r\n // we itterate through list of children, sorted by layout priority. sprites which width non-relative width/height will go first, so we will reduce available width before proceeding to sprites with relative width/height\r\n $array.each(this._childrenByLayout, function (child) {\r\n var maxWidth;\r\n var maxHeight;\r\n if ($type.isNumber(child.relativeWidth)) {\r\n maxWidth = $math.round(_this._availableWidth * child.relativeWidth, 2);\r\n if (_this.layout == \"horizontal\") { // || this.layout == \"absolute\") {\r\n maxWidth -= child.pixelMarginRight + child.pixelMarginLeft;\r\n }\r\n }\r\n else {\r\n if (_this.layout == \"horizontal\") {\r\n if (child.invalid) {\r\n child.validate();\r\n }\r\n }\r\n }\r\n if ($type.isNumber(child.relativeHeight)) {\r\n maxHeight = $math.round(_this._availableHeight * child.relativeHeight, 2);\r\n if (_this.layout == \"vertical\") { // || this.layout == \"absolute\") {\r\n maxHeight -= child.pixelMarginTop + child.pixelMarginBottom;\r\n }\r\n }\r\n else {\r\n if (_this.layout == \"vertical\") {\r\n if (child.invalid) {\r\n child.validate();\r\n }\r\n }\r\n }\r\n // if child is valid\r\n if (child.invalid == false) {\r\n if ($type.isNumber(child.relativeWidth)) {\r\n child.maxWidth = maxWidth;\r\n }\r\n if ($type.isNumber(child.relativeHeight)) {\r\n child.maxHeight = maxHeight;\r\n }\r\n if (child.isMeasured) {\r\n // reduce available width if this is horizontal layout\r\n if (_this.layout == \"horizontal\") {\r\n if (!$type.isNumber(child.percentWidth)) {\r\n if (child.measuredWidth > 0) {\r\n _this._availableWidth -= child.measuredWidth + child.pixelMarginLeft + child.pixelMarginRight;\r\n }\r\n }\r\n }\r\n // reduce available height if this is vertical layout\r\n if (_this.layout == \"vertical\") {\r\n if (!$type.isNumber(child.percentHeight)) {\r\n if (child.measuredHeight > 0) {\r\n _this._availableHeight -= child.measuredHeight + child.pixelMarginTop + child.pixelMarginBottom;\r\n }\r\n }\r\n }\r\n var childMeasuredWidth = child.measuredWidth;\r\n var childMeasuredHeight = child.measuredHeight;\r\n if (child.align != \"none\") {\r\n childMeasuredWidth += child.pixelMarginLeft + child.pixelMarginRight;\r\n }\r\n if (child.valign != \"none\") {\r\n childMeasuredHeight += child.pixelMarginTop + child.pixelMarginBottom;\r\n }\r\n measuredWidth = Math.max(measuredWidth, childMeasuredWidth);\r\n measuredHeight = Math.max(measuredHeight, childMeasuredHeight);\r\n }\r\n }\r\n // if child is not valid\r\n else {\r\n // tell child what maximum width/ height it can occupy\r\n if (child.isMeasured) {\r\n if ($type.isNumber(child.relativeWidth)) {\r\n if (child.maxWidth != maxWidth) { // need to check this because of allValid\r\n child.maxWidth = maxWidth;\r\n allValid = false;\r\n }\r\n }\r\n if ($type.isNumber(child.relativeHeight)) {\r\n if (child.maxHeight != maxHeight) { // need to check this because of allValid\r\n child.maxHeight = maxHeight;\r\n allValid = false;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n this._absoluteWidth = measuredWidth;\r\n this._absoluteHeight = measuredHeight;\r\n // arrange after measuring, only if all children are valid already\r\n if (allValid) {\r\n this.arrange();\r\n }\r\n };\r\n /**\r\n * Arranges children according to layout specs and available space / child\r\n * sizes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.arrange = function () {\r\n var _this = this;\r\n var children = this.children;\r\n /*\r\n in this method we not only arrange children but also find out the size of the container\r\n it might seem it would be easier to get container size using sprite's measure method,\r\n however it would return only actual size of the bbox. However as each child meight have\r\n margins set, we need to check each child - we do it here.\r\n\r\n This method doesn't do anything with DOM, so it's not expensive\r\n */\r\n var measuredWidth = 0;\r\n var measuredHeight = 0;\r\n //let innerWidth: number = this.innerWidth; //$math.max(this.innerWidth, this._measuredWidth - paddingLeft - paddingRight);\r\n //let innerHeight: number = this.innerHeight; //$math.max(this.innerHeight, this._measuredHeight - paddingTop - paddingBottom);\r\n // above is wrong, as if a w/h is not specified, it is 0 and alignment doesn't work at all.\r\n var innerWidth = $math.max(this.innerWidth, this._absoluteWidth);\r\n var innerHeight = $math.max(this.innerHeight, this._absoluteHeight);\r\n var left; // = 0;\r\n var right; // = innerWidth;\r\n var top; // = 0;\r\n var bottom; // = innerHeight;\r\n var paddingLeft = this.pixelPaddingLeft;\r\n var paddingRight = this.pixelPaddingRight;\r\n var paddingTop = this.pixelPaddingTop;\r\n var paddingBottom = this.pixelPaddingBottom;\r\n var nextX = 0;\r\n var nextY = 0;\r\n var row = 0;\r\n var column = 0;\r\n var columnWidth = [];\r\n var rowHeight = [];\r\n var maxCellWidth;\r\n var minCellWidth;\r\n var columnCount;\r\n var maxWidth = this.maxWidth;\r\n var maxHeight = this.maxHeight;\r\n var minWidth = this.minWidth;\r\n var minHeight = this.minHeight;\r\n var childrenCopy = $array.copy(children.values);\r\n if (this.reverseOrder) {\r\n childrenCopy.reverse();\r\n }\r\n // GRID PRECALCULATIONS\r\n if (this.layout == \"grid\") {\r\n minCellWidth = maxWidth;\r\n maxCellWidth = 1;\r\n for (var i = 0, len = childrenCopy.length; i < len; i++) {\r\n var child = childrenCopy[i];\r\n if (child.isMeasured && !child.disabled && !child.__disabled) {\r\n var childMeasuredWidth = child.measuredWidth;\r\n if (childMeasuredWidth < minCellWidth) {\r\n minCellWidth = childMeasuredWidth;\r\n }\r\n if (childMeasuredWidth > maxCellWidth) {\r\n maxCellWidth = childMeasuredWidth;\r\n }\r\n }\r\n }\r\n minCellWidth = $math.fitToRange(minCellWidth, 1, maxWidth);\r\n maxCellWidth = $math.fitToRange(maxCellWidth, 1, maxWidth);\r\n if (this.fixedWidthGrid) {\r\n columnCount = maxWidth / maxCellWidth;\r\n }\r\n else {\r\n columnCount = maxWidth / minCellWidth; // predicted number of columns, yes it is usually much more than real number, but we fix that later\r\n }\r\n columnCount = $math.max(1, Math.floor(columnCount));\r\n columnCount = $math.min(this.maxColumns, columnCount);\r\n columnWidth = this.getColumnWidth(childrenCopy, columnCount, maxCellWidth);\r\n }\r\n var contentLeft;\r\n var contentRight;\r\n var contentTop;\r\n var contentBottom;\r\n // we itterate through array of children\r\n // TODO use iterator instead\r\n for (var i = 0, len = childrenCopy.length; i < len; i++) {\r\n var child = childrenCopy[i];\r\n if (child.isMeasured && !child.disabled && !child.__disabled) {\r\n var x = undefined; //child.pixelX; // must reset\r\n var y = undefined; //child.pixelY; // must reset\r\n var childMarginLeft = child.pixelMarginLeft;\r\n var childMarginRight = child.pixelMarginRight;\r\n var childMarginTop = child.pixelMarginTop;\r\n var childMarginBottom = child.pixelMarginBottom;\r\n var childWidth = child.measuredWidth;\r\n var childHeight = child.measuredHeight;\r\n var childLeft = void 0;\r\n var childRight = void 0;\r\n var childTop = void 0;\r\n var childBottom = void 0;\r\n switch (this.layout) {\r\n case \"none\":\r\n break;\r\n // absolute layout\r\n case \"absolute\":\r\n // horizontal alignment\r\n switch (child.align) {\r\n case \"left\":\r\n x = childMarginLeft - child.maxLeft;\r\n break;\r\n case \"center\":\r\n x = (innerWidth - childWidth) / 2 - child.maxLeft;\r\n break;\r\n case \"right\":\r\n x = innerWidth - childMarginRight - child.maxRight;\r\n break;\r\n default:\r\n if (!(child.x instanceof Percent)) {\r\n x = child.pixelX;\r\n }\r\n break;\r\n }\r\n // vertical alignment\r\n switch (child.valign) {\r\n case \"top\":\r\n y = childMarginTop - child.maxTop;\r\n break;\r\n case \"middle\":\r\n y = (innerHeight - childHeight) / 2 - child.maxTop;\r\n break;\r\n case \"bottom\":\r\n y = innerHeight - childMarginBottom - child.maxBottom;\r\n break;\r\n default:\r\n if (!(child.y instanceof Percent)) {\r\n y = child.pixelY;\r\n }\r\n break;\r\n }\r\n break;\r\n // vertical layout\r\n case \"vertical\":\r\n //if ($type.isNumber(child.relativeHeight)) {\r\n //\tchildHeight = child.maxHeight;\r\n //}\r\n switch (child.align) {\r\n case \"left\":\r\n x = childMarginLeft - child.maxLeft;\r\n break;\r\n case \"center\":\r\n x = (innerWidth - childWidth) / 2 - child.maxLeft;\r\n break;\r\n case \"right\":\r\n x = innerWidth - childMarginRight - child.maxRight;\r\n break;\r\n default:\r\n x = child.pixelX;\r\n break;\r\n }\r\n y = nextY + childMarginTop - child.maxTop;\r\n nextY = y + child.maxBottom + childMarginBottom;\r\n break;\r\n // horizontal layout\r\n case \"horizontal\":\r\n //if ($type.isNumber(child.relativeHeight)) {\r\n //\tchildHeight = child.maxHeight;\r\n //}\r\n switch (child.valign) {\r\n case \"top\":\r\n y = childMarginTop - child.maxTop;\r\n break;\r\n case \"middle\":\r\n y = (innerHeight - childHeight) / 2 - child.maxTop;\r\n break;\r\n case \"bottom\":\r\n y = innerHeight - childMarginBottom - child.maxBottom;\r\n break;\r\n default:\r\n y = child.pixelY;\r\n break;\r\n }\r\n x = nextX + childMarginLeft - child.maxLeft;\r\n nextX = x + child.maxRight + childMarginRight;\r\n break;\r\n case \"grid\":\r\n x = nextX + childMarginLeft - child.maxLeft;\r\n switch (child.valign) {\r\n case \"top\":\r\n y = nextY + childMarginTop - child.maxTop;\r\n break;\r\n case \"middle\":\r\n y = nextY + (innerHeight - childHeight) / 2 - child.maxTop;\r\n break;\r\n case \"bottom\":\r\n y = nextY + innerHeight - childMarginBottom - child.maxBottom;\r\n break;\r\n default:\r\n y = nextY - child.maxTop;\r\n break;\r\n }\r\n nextX += columnWidth[column];\r\n rowHeight[row] = $math.max(rowHeight[row], childHeight);\r\n column++;\r\n var nextColumnWidth = columnWidth[column];\r\n if (!$type.isNumber(nextColumnWidth)) {\r\n nextColumnWidth = maxCellWidth;\r\n }\r\n if (nextX > $math.min(this.innerWidth, maxWidth) - nextColumnWidth + 1 && column < columnCount) {\r\n columnCount = column;\r\n nextX = 0;\r\n nextY = 0;\r\n row = 0;\r\n column = 0;\r\n columnWidth = this.getColumnWidth(childrenCopy, columnCount, maxCellWidth);\r\n rowHeight = [];\r\n i = -1;\r\n continue;\r\n }\r\n if (column >= columnCount) {\r\n column = 0;\r\n nextY += rowHeight[row];\r\n row++;\r\n nextX = 0;\r\n }\r\n break;\r\n }\r\n if (this.layout !== \"none\") {\r\n child.moveTo({ x: x, y: y }); // must use moveTo, otherwise x/y set in percent won't work\r\n childLeft = x + child.maxLeft - childMarginLeft;\r\n childRight = x + child.maxRight + childMarginRight;\r\n childTop = y + child.maxTop - childMarginTop;\r\n childBottom = y + child.maxBottom + childMarginBottom;\r\n if (childRight > right || !$type.isNumber(right)) {\r\n right = childRight;\r\n }\r\n if (childLeft < left || !$type.isNumber(left)) {\r\n left = childLeft;\r\n }\r\n if (childTop < top || !$type.isNumber(top)) {\r\n top = childTop;\r\n }\r\n if (childBottom > bottom || !$type.isNumber(bottom)) {\r\n bottom = childBottom;\r\n }\r\n if (childRight > contentRight || !$type.isNumber(contentRight)) {\r\n contentRight = childRight;\r\n }\r\n if (childLeft < contentLeft || !$type.isNumber(contentLeft)) {\r\n contentLeft = childLeft;\r\n }\r\n if (childTop < contentTop || !$type.isNumber(contentTop)) {\r\n contentTop = childTop;\r\n }\r\n if (childBottom > contentBottom || !$type.isNumber(contentBottom)) {\r\n contentBottom = contentBottom;\r\n }\r\n }\r\n }\r\n else {\r\n child.validatePosition();\r\n }\r\n }\r\n if (this.layout == \"none\") {\r\n var noneBBox = this.bbox;\r\n left = noneBBox.x;\r\n right = noneBBox.x + noneBBox.width;\r\n top = noneBBox.y;\r\n bottom = noneBBox.y + noneBBox.height;\r\n }\r\n if (!$type.isNumber(left)) {\r\n left = 0;\r\n contentLeft = 0;\r\n }\r\n if (!$type.isNumber(right)) {\r\n right = this._availableWidth;\r\n contentRight = right;\r\n }\r\n if (!$type.isNumber(top)) {\r\n top = 0;\r\n contentTop = 0;\r\n }\r\n if (!$type.isNumber(bottom)) {\r\n bottom = this._availableHeight;\r\n contentBottom = bottom;\r\n }\r\n if (!$type.isNumber(contentTop)) {\r\n contentTop = 0;\r\n }\r\n if (!$type.isNumber(contentBottom)) {\r\n contentBottom = contentTop;\r\n }\r\n if (!$type.isNumber(contentLeft)) {\r\n contentLeft = 0;\r\n }\r\n if (!$type.isNumber(contentRight)) {\r\n contentRight = contentLeft;\r\n }\r\n measuredWidth = right - left;\r\n measuredHeight = bottom - top;\r\n if ($type.isNumber(this.relativeWidth)) {\r\n measuredWidth = maxWidth - paddingLeft - paddingRight;\r\n left = 0;\r\n right = measuredWidth;\r\n }\r\n if ($type.isNumber(this.relativeHeight)) {\r\n measuredHeight = maxHeight - paddingTop - paddingBottom;\r\n top = 0;\r\n bottom = measuredHeight;\r\n }\r\n if ($type.isNumber(this._pixelWidth)) {\r\n left = 0;\r\n measuredWidth = this._pixelWidth - paddingLeft - paddingRight;\r\n }\r\n if ($type.isNumber(minWidth) && measuredWidth < minWidth) {\r\n left = 0;\r\n measuredWidth = this.minWidth - paddingLeft - paddingRight;\r\n }\r\n if ($type.isNumber(this._pixelHeight)) {\r\n top = 0;\r\n measuredHeight = this._pixelHeight - paddingTop - paddingBottom;\r\n }\r\n if ($type.isNumber(minHeight) && measuredHeight < minHeight) {\r\n top = 0;\r\n measuredHeight = minHeight - paddingTop - paddingBottom;\r\n }\r\n var measuredContentWidth = contentRight - contentLeft;\r\n var measuredContentHeight = contentBottom - contentTop;\r\n /// handle content alignment\r\n if (this.layout != \"none\" && (this.contentAlign || this.contentValign) && children.length > 0) {\r\n var dx_1;\r\n var dy_1;\r\n var mwa = measuredWidth;\r\n var mha = measuredHeight;\r\n if (mwa < measuredContentWidth) {\r\n mwa = measuredContentWidth;\r\n }\r\n if (mha < measuredContentHeight) {\r\n mha = measuredContentHeight;\r\n }\r\n if (this.contentAlign == \"center\") {\r\n dx_1 = (mwa - measuredContentWidth) / 2;\r\n }\r\n if (this.contentAlign == \"right\") {\r\n dx_1 = mwa - measuredContentWidth;\r\n }\r\n if (this.contentValign == \"middle\") {\r\n dy_1 = (mha - measuredContentHeight) / 2;\r\n }\r\n if (this.contentValign == \"bottom\") {\r\n dy_1 = mha - measuredContentHeight;\r\n }\r\n if ($type.isNumber(dx_1)) {\r\n $iter.each(children.iterator(), function (child) {\r\n var childLeft = child.maxLeft;\r\n var ddx = dx_1;\r\n if (_this.layout == \"horizontal\") {\r\n child.x = child.pixelX + ddx;\r\n }\r\n // individual grid elements can not be aligned vertically, that's why it's different from horizontal\r\n if (_this.layout == \"grid\") {\r\n child.x = child.pixelX + ddx;\r\n }\r\n if (_this.layout == \"vertical\") {\r\n ddx += child.pixelMarginLeft;\r\n if (child.align == \"none\") {\r\n child.x = ddx - childLeft;\r\n }\r\n }\r\n if (_this.layout == \"absolute\") {\r\n ddx += child.pixelMarginLeft;\r\n if (child.align == \"none\") {\r\n child.x = ddx - childLeft;\r\n }\r\n }\r\n });\r\n }\r\n if ($type.isNumber(dy_1)) {\r\n $iter.each(children.iterator(), function (child) {\r\n var childTop = child.maxTop;\r\n var ddy = dy_1;\r\n if (_this.layout == \"horizontal\") {\r\n ddy += child.pixelMarginTop;\r\n if (child.valign == \"none\") {\r\n child.y = ddy - childTop;\r\n }\r\n }\r\n // individual grid elements can not be aligned vertically, that's why it's different from horizontal\r\n if (_this.layout == \"grid\") {\r\n ddy += child.pixelMarginTop;\r\n child.y = ddy - childTop;\r\n }\r\n if (_this.layout == \"vertical\") {\r\n child.y = child.pixelY + ddy;\r\n }\r\n if (_this.layout == \"absolute\") {\r\n ddy += child.pixelMarginTop;\r\n if (child.valign == \"none\") {\r\n child.y = ddy - childTop;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n var oldBBox = this.bbox;\r\n // this will mess up maxw/maxh set by container layout, we need a separate min/maxwidth for users\r\n // this prevents invalidating layout in such cases as scrolling category axis, when labels go outside bounds and results transformed event\r\n // todo: need to check if this doesn't cause other problems.\r\n //if (this.maxWidth > 0) {\r\n //measuredWidth = $math.min(measuredWidth, this.maxWidth);\r\n //measuredWidth = $math.max(measuredWidth, this.minWidth);\r\n //}\r\n //if (this.maxHeight > 0) {\r\n //measuredHeight = $math.min(measuredHeight, this.maxHeight);\r\n //measuredHeight = $math.max(measuredHeight, this.minHeight);\r\n //}\r\n measuredWidth = $math.max(measuredWidth, minWidth);\r\n measuredHeight = $math.max(measuredHeight, minHeight);\r\n this.contentWidth = measuredWidth;\r\n this.contentHeight = measuredHeight;\r\n // new\r\n measuredWidth = $math.min(measuredWidth, maxWidth);\r\n measuredHeight = $math.min(measuredHeight, maxHeight);\r\n this._bbox = { x: left, y: top, width: measuredWidth, height: measuredHeight };\r\n var prevLeft = this.maxLeft;\r\n var prevTop = this.maxTop;\r\n var prevBotttom = this.maxBottom;\r\n var prevRight = this.maxRight;\r\n this.measure();\r\n if (prevLeft != this.maxLeft || prevRight != this.maxRight || prevTop != this.maxTop || prevBotttom != this.maxBottom) {\r\n if (this.events.isEnabled(\"transformed\")) {\r\n var event_1 = {\r\n type: \"transformed\",\r\n target: this\r\n };\r\n if (oldBBox) {\r\n event_1.dummyData = oldBBox.width + \" \" + measuredWidth + \" \" + oldBBox.height + \" \" + measuredHeight;\r\n }\r\n this.events.dispatchImmediately(\"transformed\", event_1);\r\n }\r\n }\r\n this.dispatchImmediately(\"layoutvalidated\");\r\n };\r\n /**\r\n * Positions element according its center settings.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.updateCenter = function () {\r\n _super.prototype.updateCenter.call(this);\r\n this.updateBackground();\r\n };\r\n /**\r\n * Update the background to fit into specific dimensions.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make it protected?\r\n */\r\n Container.prototype.updateBackground = function () {\r\n var background = this._background; // accessing protected, as getter creates instance if it doesn't exist\r\n if (background) {\r\n background.x = this.maxLeft;\r\n background.y = this.maxTop;\r\n background.width = this.maxRight - this.maxLeft;\r\n background.height = this.maxBottom - this.maxTop;\r\n }\r\n };\r\n /**\r\n * Returns widths of all columns in a horizontal Container layout.\r\n *\r\n * @ignore Exclude from docs\r\n * @param columnCount Number of columns\r\n * @param maxCellWidth Maximum width of one grid cell\r\n * @return An array of column widths\r\n */\r\n Container.prototype.getColumnWidth = function (children, columnCount, maxCellWidth) {\r\n var _this = this;\r\n var columnWidth = [];\r\n var column = 0;\r\n $array.each(children, function (child) {\r\n if (child.isMeasured && !child.disabled && !child.__disabled) {\r\n if (_this.fixedWidthGrid) {\r\n columnWidth[column] = maxCellWidth;\r\n }\r\n else {\r\n columnWidth[column] = $math.max(columnWidth[column], child.measuredWidth + child.pixelMarginRight + child.pixelMarginLeft);\r\n }\r\n column++;\r\n if (column == columnCount) {\r\n column = 0;\r\n }\r\n }\r\n });\r\n return columnWidth;\r\n };\r\n Object.defineProperty(Container.prototype, \"layout\", {\r\n /**\r\n * @return Layout\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"layout\");\r\n },\r\n /**\r\n * Container layout.\r\n *\r\n * Options: \"absolute\" (default), \"vertical\", \"horizontal\", \"grid\", \"none\". \"none\" is quite the same as \"absolute\" - the objects will\r\n * be positioned at their x, y coordinates, the difference is that with \"absolute\" you can still use align/valign for children and with \"none\" you can not.\r\n * Use \"none\" as much as you can as it's most cpu-saving layout.\r\n *\r\n * @default \"absolute\"\r\n * @param value Layout\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"layout\", value)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"contentValign\", {\r\n /**\r\n * @return Vertical alignment\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"contentValign\");\r\n },\r\n /**\r\n * Vertical alignment of the elements for the vertical Container.\r\n *\r\n * This is used when Container is larger than the height of all its children.\r\n *\r\n * @param value vertical alignment\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"contentValign\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"contentAlign\", {\r\n /**\r\n * @return Horizontal alignment\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"contentAlign\");\r\n },\r\n /**\r\n * Horizontal alignment of the elements for the horizontal Container.\r\n *\r\n * This is used when Container is larger than the height of all its children.\r\n *\r\n * @param value Horizontal alignment\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"contentAlign\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"fixedWidthGrid\", {\r\n /**\r\n * @return Should use fixed width grid?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fixedWidthGrid\");\r\n },\r\n /**\r\n * Controls if the grid of the Container should use fixed width. Fixed width\r\n * grid will divide available space to all its columns/rows equally, without\r\n * adapting to actual child sizes or size requirements.\r\n *\r\n * @default false\r\n * @param value Should use fixed width grid?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fixedWidthGrid\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"maxColumns\", {\r\n /**\r\n * @return Should use fixed width grid?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxColumns\");\r\n },\r\n /**\r\n * Maximum number of columns (when using `\"grid\"` layout).\r\n *\r\n * @param value Should use fixed width grid?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxColumns\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"reverseOrder\", {\r\n /**\r\n * @return Reverse children?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"reverseOrder\");\r\n },\r\n /**\r\n * If set to `true`, the children of the container will be drawn in reverse\r\n * order.\r\n *\r\n * @default false\r\n * @param value Reverse children?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"reverseOrder\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"setStateOnChildren\", {\r\n /**\r\n * @return Set state on children\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"setStateOnChildren\");\r\n },\r\n /**\r\n * Specifies if, when state is applied on this container, the same state\r\n * should be applied to container's children as well as `background`.\r\n *\r\n * @default false\r\n * @param value Set state on children\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"setStateOnChildren\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @param point A coordinate to check\r\n * @return `true` if it fits within container\r\n */\r\n Container.prototype.fitsToBounds = function (point) {\r\n var x = point.x;\r\n var y = point.y;\r\n var deviation = 0.5; // sometimes coordinates are rounded to numbers like .999 so we add deviation here\r\n if (x >= -deviation && x <= this.pixelWidth + deviation && y >= -deviation && y <= this.pixelHeight + deviation) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Copies all properties from different Container, including background\r\n * clone.\r\n *\r\n * @param source Source Container to copy from\r\n */\r\n Container.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n _super.prototype.copyFrom.call(this, source);\r\n this.layout = source.layout;\r\n this.setStateOnChildren = source.setStateOnChildren;\r\n if (source._background) {\r\n this.background = source._background.clone();\r\n this.background.copyFrom(source._background); // won't work without this\r\n }\r\n $iter.each(source.children.iterator(), function (child) {\r\n if (child.shouldClone) {\r\n var clonedChild = child.clone();\r\n clonedChild.parent = _this;\r\n }\r\n });\r\n };\r\n Object.defineProperty(Container.prototype, \"preloader\", {\r\n /**\r\n * @return Preloader instance\r\n */\r\n get: function () {\r\n var preloader = this._preloader;\r\n if (preloader) {\r\n return preloader;\r\n }\r\n else if (this.parent) {\r\n return this.parent.preloader;\r\n }\r\n },\r\n /**\r\n * A [[Preloader]] instance to be used when Container is busy.\r\n *\r\n * @param preloader Preloader instance\r\n */\r\n set: function (preloader) {\r\n if (this._preloader) {\r\n this.removeDispose(this._preloader);\r\n }\r\n this._preloader = preloader;\r\n if (preloader) {\r\n preloader.parent = this.tooltipContainer;\r\n this._disposers.push(preloader);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets [[Paper]] instance to use to draw elements.\r\n * @ignore\r\n * @param paper Paper\r\n * @return true if paper was changed, false, if it's the same\r\n */\r\n Container.prototype.setPaper = function (paper) {\r\n var _this = this;\r\n var changed = _super.prototype.setPaper.call(this, paper);\r\n if (changed) {\r\n if (this._background) {\r\n this._background.paper = paper;\r\n this._background.topParent = this.topParent;\r\n }\r\n this.children.each(function (child) {\r\n child.setPaper(paper);\r\n child.topParent = _this.topParent;\r\n });\r\n }\r\n return changed;\r\n };\r\n /**\r\n * Removes Container from the system-wide list of invalid Containers.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.removeFromInvalids = function () {\r\n _super.prototype.removeFromInvalids.call(this);\r\n registry.removeFromInvalidLayouts(this);\r\n };\r\n /**\r\n * Sets a [[DataItem]] to be used as data for the Container.\r\n *\r\n * @todo Description\r\n * @param dataItem DataItem\r\n */\r\n Container.prototype.setDataItem = function (dataItem) {\r\n // this place is potentially dangerous, as if we set datItem for some dummy container, all children dataItems will be overriden\r\n // the main reason for doing this is that we need a setDataItem code to be called for each sprite, otherwise property fields won't be\r\n // applied. Also, getting dataItem from parent all the time is more expensive than saving value.\r\n if (this._dataItem != dataItem) {\r\n $iter.each(this.children.iterator(), function (child) {\r\n child.dataItem = dataItem;\r\n });\r\n if (this._background) {\r\n this._background.dataItem = dataItem;\r\n }\r\n }\r\n _super.prototype.setDataItem.call(this, dataItem);\r\n };\r\n /**\r\n * Measures the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.measureElement = function () {\r\n if (this.disabled || this.isTemplate || this.layout == \"none\" || this.__disabled) {\r\n // void\r\n }\r\n else {\r\n this.validateLayout();\r\n }\r\n };\r\n Object.defineProperty(Container.prototype, \"fontFamily\", {\r\n /**\r\n * @return Font family\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fontFamily\");\r\n },\r\n /**\r\n * Font family to be used for the text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font family value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"fontFamily\", value, true)) {\r\n this.setSVGAttribute({ \"font-family\": value });\r\n this.invalidateLabels();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"fontSize\", {\r\n /**\r\n * @return Font size\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fontSize\");\r\n },\r\n /**\r\n * Font size to be used for the text. The size can either be numeric, in\r\n * pixels, or other measurements.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font size value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"fontSize\", value, true)) {\r\n this.setSVGAttribute({ \"font-size\": value });\r\n this.invalidateLabels();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * When fontSize of fontFamily changes we need to hard-invalidate all Labels of this container to position them properly.\r\n */\r\n Container.prototype.invalidateLabels = function () {\r\n this.children.each(function (child) {\r\n // can't import Label because of Circular dependencies\r\n if (child[\"hardInvalidate\"]) {\r\n child[\"hardInvalidate\"]();\r\n // this fixes firefox and viewport issue\r\n child.events.once(\"validated\", child.handleValidate, child, false);\r\n }\r\n else if (child instanceof Container) {\r\n child.invalidateLabels();\r\n }\r\n });\r\n };\r\n Object.defineProperty(Container.prototype, \"fontWeight\", {\r\n /**\r\n * @return Font weight\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fontWeight\");\r\n },\r\n /**\r\n * Font weight to use for text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font weight\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fontWeight\", value);\r\n this.setSVGAttribute({ \"font-weight\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"textDecoration\", {\r\n /**\r\n * @return Decoration\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"textDecoration\");\r\n },\r\n /**\r\n * A text decoration to use for text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Decoration\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"textDecoration\", value);\r\n this.setSVGAttribute({ \"text-decoration\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Disposes (destroys) the element and all its children.\r\n */\r\n Container.prototype.dispose = function () {\r\n if (this._background) {\r\n this._background.dispose();\r\n }\r\n this._shouldBeReady = [];\r\n this.disposeChildren();\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * Applies a [[SpriteState]] on this element.\r\n *\r\n * The first parameter can either be a name of the state or a [[SpriteState]]\r\n * instance.\r\n *\r\n * When run, this method will apply SVG properties defined in a\r\n * [[SpriteState]], but only those that are relevant to this particular\r\n * element, that is are listed in its respective `properties` array.\r\n *\r\n * @see {@link SpriteState}\r\n * @param value A state - name key or instance\r\n * @param transitionDuration Duration of the transition between current and new state\r\n * @param easing An easing function\r\n */\r\n Container.prototype.setState = function (value, transitionDuration, easing) {\r\n var stateName = value;\r\n if (value instanceof SpriteState) {\r\n stateName = value.name;\r\n }\r\n if (this.setStateOnChildren) {\r\n $iter.each(this.children.iterator(), function (child) {\r\n child.setState(stateName, transitionDuration, easing);\r\n // not good to set it in child setState\r\n if (stateName != \"active\") {\r\n child.isActive = false;\r\n }\r\n });\r\n }\r\n if (this._background) {\r\n this._background.setState(stateName);\r\n }\r\n if (this.setStateOnSprites.length) {\r\n $array.each(this.setStateOnSprites, function (item) {\r\n item.setState(stateName, transitionDuration, easing);\r\n });\r\n }\r\n return _super.prototype.setState.call(this, value, transitionDuration, easing);\r\n };\r\n // otherwise isActive won't work properly with background\r\n Container.prototype.setActive = function (value) {\r\n _super.prototype.setActive.call(this, value);\r\n if (this._background) {\r\n this._background.isActive = value;\r\n }\r\n };\r\n /**\r\n * Dispatches ready event. Dispatches when all children are ready.\r\n */\r\n Container.prototype.dispatchReady = function () {\r\n var _this = this;\r\n if (!this.isReady() && !this.isDisposed()) {\r\n var allReady_1 = true;\r\n $iter.eachContinue(this.children.iterator(), function (sprite) {\r\n if (!sprite.__disabled && !sprite.disabled && !sprite.isReady()) {\r\n allReady_1 = false;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n $array.eachContinue(this._shouldBeReady, function (sprite) {\r\n if (!sprite.__disabled && !sprite.disabled && !sprite.isReady()) {\r\n allReady_1 = false;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n if (allReady_1) {\r\n _super.prototype.dispatchReady.call(this);\r\n }\r\n else {\r\n registry.events.once(\"exitframe\", function () {\r\n _this.dispatchReady();\r\n system.requestFrame();\r\n }, undefined, false);\r\n }\r\n }\r\n };\r\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype._systemUpdate = function (skippedSprites) {\r\n this.children.each(function (child) {\r\n if (child.invalid) {\r\n if (!child._systemCheckIfValidate()) {\r\n skippedSprites.push(child);\r\n }\r\n else if (child.dataItem && child.dataItem.component && child.dataItem.component.dataInvalid) {\r\n skippedSprites.push(child);\r\n }\r\n else {\r\n child.validate();\r\n }\r\n }\r\n });\r\n _super.prototype._systemUpdate.call(this, skippedSprites);\r\n };\r\n /**\r\n * Called during the System.validatePositions method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype._systemValidatePositions = function () {\r\n this.children.each(function (sprite) {\r\n if (sprite.positionInvalid) {\r\n sprite.validatePosition();\r\n }\r\n });\r\n _super.prototype._systemValidatePositions.call(this);\r\n };\r\n /**\r\n * Called during the System.validateLayouts method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype._systemValidateLayouts = function () {\r\n if (this.layoutInvalid && !this.isDisposed()) {\r\n this.validateLayout();\r\n }\r\n };\r\n Object.defineProperty(Container.prototype, \"tapToActivate\", {\r\n /**\r\n * @return Enable touch protection?\r\n */\r\n get: function () {\r\n return this._tapToActivate;\r\n },\r\n /**\r\n * If set to `true` the chart's regular touch functionality will be suspended\r\n * so that the whole page it is located in remains scrollable, even when\r\n * swiping over the chart's body.\r\n *\r\n * User will need to tap the chart in order to activate its regular touch\r\n * functionality.\r\n *\r\n * The chart will remain \"active\" as long as user keeps interacting with the\r\n * chart. After `tapTimeout` milliseconds the chart will return to its\r\n * \"protected\" mode.\r\n *\r\n * @default false\r\n * @since 4.4.0\r\n * @param value Enable touch protection?\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/touch/} For more information.\r\n */\r\n set: function (value) {\r\n if (this._tapToActivate != value) {\r\n this.setTapToActivate(value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Container.prototype.setTapToActivate = function (value) {\r\n var _this = this;\r\n this._tapToActivate = value;\r\n this.interactions.isTouchProtected = value;\r\n // setEventDisposer will also remove listeners if value == false\r\n if (value) {\r\n this.interactions.setEventDisposer(\"container-tapToActivate\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"hit\", _this.handleTapToActivate, _this, false),\r\n _this.events.on(\"down\", _this.initTapTimeout, _this, false),\r\n _this.events.on(\"track\", _this.initTapTimeout, _this, false),\r\n //this.events.on(\"drag\", this.initTapTimeout, this, false),\r\n getInteraction().body.events.on(\"down\", function (ev) {\r\n if (!getInteraction().isLocalElement(ev.pointer, _this.paper.svg, _this.uid)) {\r\n _this.handleTapToActivateDeactivation();\r\n }\r\n }, _this, false)\r\n ]); });\r\n }\r\n getInteraction();\r\n };\r\n /**\r\n * @todo Ignore on non-touch events\r\n */\r\n Container.prototype.handleTapToActivate = function () {\r\n this.interactions.isTouchProtected = false;\r\n this.initTapTimeout();\r\n };\r\n Container.prototype.handleTapToActivateDeactivation = function () {\r\n this.interactions.isTouchProtected = true;\r\n };\r\n Container.prototype.initTapTimeout = function () {\r\n var _this = this;\r\n if (this._tapToActivateTimeout) {\r\n this._tapToActivateTimeout.dispose();\r\n }\r\n if (this.tapToActivate && !this.interactions.isTouchProtected && this.tapTimeout) {\r\n this._tapToActivateTimeout = this.setTimeout(function () {\r\n _this.handleTapToActivateDeactivation();\r\n }, this.tapTimeout);\r\n }\r\n };\r\n /**\r\n * Moves the whole chart to other HTML container.\r\n *\r\n * `htmlElement` can either be a reference to a DOM element, or an id of\r\n * such element.\r\n *\r\n * @since 4.9.24\r\n * @param htmlElement Target element\r\n */\r\n Container.prototype.moveHtmlContainer = function (htmlElement) {\r\n var newContainer = $dom.getElement(htmlElement);\r\n if (newContainer) {\r\n this.htmlContainer = newContainer;\r\n var svgDiv = this.svgContainer;\r\n svgDiv.htmlElement = newContainer;\r\n svgDiv.htmlElement.appendChild(svgDiv.SVGContainer);\r\n svgDiv.initSensor();\r\n svgDiv.measure();\r\n }\r\n else if ($type.isString(htmlElement) && htmlElement != \"\") {\r\n system.log(\"html container '\" + htmlElement + \"' not found\");\r\n //throw new Error(\"html container not found\");\r\n }\r\n };\r\n /**\r\n * @ignore\r\n * @return Has license?\r\n */\r\n Container.prototype.hasLicense = function () {\r\n if (options.commercialLicense) {\r\n return true;\r\n }\r\n for (var i = 0; i < options.licenses.length; i++) {\r\n if (options.licenses[i].match(/^CH.{5,}/i)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n return Container;\r\n}(Sprite));\r\nexport { Container };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Container\"] = Container;\r\n","/**\r\n * Defines functionality for \"Data Item\"\r\n *\r\n * A Data Item can be any object that can hold data. For example [[LineSeries]]\r\n * holds a number of values, that comprise a line graph. Each of those values\r\n * (data points) is a {DataItem}.\r\n *\r\n * Furthermore the [[LineSeries]] itself can be represented as a entry in the\r\n * legend. Since legend needs access to Line Series' value, a DataItem is\r\n * created for the series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"./Base\";\r\nimport { Adapter } from \"./utils/Adapter\";\r\nimport { Animation, AnimationDisposer } from \"./utils/Animation\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $array from \"./utils/Array\";\r\n//import * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * DataItem represents single element in data, for example a data point in a\r\n * Serial Chart Series, e.g. a column.\r\n *\r\n * DataItem defines relationship between structured data, required for specific\r\n * chart type or task, and raw source data.\r\n *\r\n * It also implements required calculations, updates related visual elements,\r\n * etc.\r\n *\r\n * @todo Description\r\n * @important\r\n */\r\nvar DataItem = /** @class */ (function (_super) {\r\n __extends(DataItem, _super);\r\n /**\r\n * Constructor\r\n * @todo Adding events to disposers produces errors in some cases, which means that chart is using disposed Data Items which is not right\r\n */\r\n function DataItem() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * This Data Item is currently disabled.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._disabled = false;\r\n /**\r\n * Indicates whether Data Item has any properties set.\r\n *\r\n * If it does not have any, the code can use this property to check whether\r\n * they need to apply costly operation of re-applying properties, whenever\r\n * Data Item-related element is redrawn, e.g. series.\r\n */\r\n _this.hasProperties = false;\r\n /**\r\n * An object containing calculated values.\r\n */\r\n _this.values = {};\r\n /**\r\n * An object container current working values.\r\n */\r\n //public readonly workingValues: { [index: string]: { [index: string]: number } } = {};\r\n /**\r\n * An object containing categories.\r\n */\r\n _this.categories = {};\r\n /**\r\n * An object containing dates.\r\n */\r\n _this.dates = {};\r\n /**\r\n * An object containing locations for the Data Item.\r\n *\r\n * A location is a position within date or category, or, in some other cases,\r\n * where there is no single point but rather some period.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/series/#Data_item_locations} for info how data item locations work\r\n */\r\n _this.locations = {};\r\n /**\r\n * Current working locations.\r\n */\r\n _this.workingLocations = {};\r\n /**\r\n * An object containing Data Item specific appearance properties in key-value\r\n * pairs.\r\n *\r\n * Sometimes a single Data Item needs to apply different properties than the\r\n * rest of the data [[Series]] it is part of. E.g. a single column,\r\n * represented by a Data Item needs to be filled with a different color than\r\n * the reset of the [[ColumnSeries]] it belongs to.\r\n *\r\n * That's where Data Item's `properties` come into play.\r\n *\r\n * Please note that you should set Data Item-specific properties using\r\n * `setProperty()` method, rather than access `properties` object directly.\r\n */\r\n _this.properties = {};\r\n /**\r\n * A list of [[Sprite]] elements that are associated with this Data Item.\r\n *\r\n * E.g. an [[Axis]] Data Item has several separate elements associated with\r\n * it, like [[AxisTick]], [[AxisLabel]], and [[Grid]].\r\n *\r\n * Data Item keeps track of all of them, so it can toggle all related visual\r\n * elements when it itself is toggled.\r\n */\r\n _this.sprites = [];\r\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n */\r\n _this.isTemplate = false;\r\n /**\r\n * The current index within the dataItems\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._index = null;\r\n /**\r\n * Is Data Item currently visible?\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._visible = true;\r\n /**\r\n * Is Data Item currently hidden?\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._hidden = false;\r\n /**\r\n * Should this Data Item be used when calculating data ranges and scales?\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._ignoreMinMax = false;\r\n /**\r\n * Some of the Data Item's data fields may contain an array of children. This\r\n * property contains an object indicating which fields hold an array, so that\r\n * they can be processed properly.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.hasChildren = {};\r\n /**\r\n * Indicates whether Data Item is currently animiting from visible to hidden\r\n * state.\r\n */\r\n _this.isHiding = false;\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._valueAnimations = {};\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._locationAnimations = {};\r\n _this.className = \"DataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(DataItem.prototype, \"adapter\", {\r\n /**\r\n * Holds Adapter.\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n this._adapterO = new Adapter(this);\r\n }\r\n return this._adapterO;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"index\", {\r\n /**\r\n * Data Item's position index in Component's data.\r\n *\r\n * @return Index\r\n */\r\n get: function () {\r\n if (this.component) {\r\n if (this._index != null) {\r\n return this._index;\r\n }\r\n else {\r\n return -1;\r\n }\r\n }\r\n else {\r\n return -1;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"animations\", {\r\n /**\r\n * A list of [[Animations]] objects currently mutating Data Item's values.\r\n *\r\n * @return [description]\r\n */\r\n get: function () {\r\n if (!this._animations) {\r\n this._animations = [];\r\n this._disposers.push(new AnimationDisposer(this._animations));\r\n }\r\n return this._animations;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"visible\", {\r\n /**\r\n * Returns `true` if this Data Item is currently visible.\r\n *\r\n * @return Visible?\r\n */\r\n get: function () {\r\n if (this._hidden) {\r\n return false;\r\n }\r\n return this._visible;\r\n },\r\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Visible?\r\n */\r\n set: function (value) {\r\n if (value) {\r\n this.hidden = false;\r\n }\r\n if (this._visible != value) {\r\n this.setVisibility(value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"hidden\", {\r\n /**\r\n * Returns `true` if this Data Item is currently hidden.\r\n *\r\n * @return Hidden?\r\n */\r\n get: function () {\r\n return this._hidden;\r\n },\r\n /**\r\n * Sets hidden flag for data item. Mostly used to initially hide data item.\r\n *\r\n * @param value Hidden?\r\n */\r\n set: function (value) {\r\n if (this._hidden != value) {\r\n this._hidden = value;\r\n if (value) {\r\n this.setVisibility(false);\r\n }\r\n else {\r\n this.setVisibility(true, true);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"__disabled\", {\r\n /**\r\n * Is this Data Item currently disabled?\r\n *\r\n * @ignore Exclude from docs\r\n * @param {boolean}\r\n */\r\n get: function () {\r\n return this._disabled;\r\n },\r\n /**\r\n * Disables all Sprites associated with this Data Item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param {boolean}\r\n */\r\n set: function (value) {\r\n //\tif (this._disabled != value) { // not good\r\n this._disabled = value;\r\n $array.each(this.sprites, function (sprite) {\r\n sprite.__disabled = value;\r\n });\r\n //\t}\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Data Item\r\n */\r\n DataItem.prototype.setVisibility = function (value, noChangeValues) {\r\n $array.each(this.sprites, function (sprite) {\r\n if (value) {\r\n sprite.visible = sprite.defaultState.properties.visible;\r\n }\r\n else {\r\n if (sprite.hiddenState) {\r\n sprite.visible = sprite.hiddenState.properties.visible;\r\n }\r\n else {\r\n sprite.visible = false;\r\n }\r\n }\r\n });\r\n this._visible = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"visibilitychanged\")) {\r\n var event_1 = {\r\n type: \"visibilitychanged\",\r\n target: this,\r\n visible: value\r\n };\r\n this.events.dispatchImmediately(\"visibilitychanged\", event_1);\r\n }\r\n }\r\n };\r\n /**\r\n * Shows the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param fields A list of fields to set values of\r\n */\r\n DataItem.prototype.show = function (duration, delay, fields) {\r\n var _this = this;\r\n if (!this.hidden) {\r\n this.setVisibility(true, true);\r\n this.isHiding = false;\r\n if (this._hideDisposer) {\r\n this.removeDispose(this._hideDisposer);\r\n }\r\n var animation_1;\r\n if (fields) {\r\n $array.each(fields, function (field) {\r\n animation_1 = _this.setWorkingValue(field, _this.values[field].value, duration, delay);\r\n });\r\n }\r\n $array.each(this.sprites, function (sprite) {\r\n var animation = sprite.show(duration);\r\n if (animation != null && !animation.isFinished()) {\r\n _this._disposers.push(animation);\r\n if (delay != null && delay > 0) {\r\n animation.delay(delay);\r\n }\r\n }\r\n });\r\n return animation_1;\r\n }\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n DataItem.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n $array.each(this.sprites, function (sprite) {\r\n sprite.dispose();\r\n });\r\n this.sprites = [];\r\n };\r\n /**\r\n * Hides the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param toValue A value to set to `fields` when hiding\r\n * @param fields A list of data fields to set value to `toValue`\r\n */\r\n DataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n var _this = this;\r\n this.isHiding = true;\r\n $array.each(this.sprites, function (sprite) {\r\n var animation = sprite.hide(duration);\r\n if (animation != null && !animation.isFinished()) {\r\n _this._disposers.push(animation);\r\n if (delay != null && delay > 0) {\r\n animation.delay(delay);\r\n }\r\n }\r\n });\r\n if ($type.isNumber(toValue) && fields) {\r\n var animation_2;\r\n $array.each(fields, function (field) {\r\n var anim = _this.setWorkingValue(field, toValue, duration, delay);\r\n if (anim) {\r\n animation_2 = anim;\r\n }\r\n });\r\n if (animation_2 && !animation_2.isFinished()) {\r\n this._hideDisposer = animation_2.events.on(\"animationended\", function () {\r\n _this.setVisibility(false, true);\r\n _this.isHiding = false;\r\n });\r\n this._disposers.push(this._hideDisposer);\r\n return animation_2;\r\n }\r\n else {\r\n this.isHiding = false;\r\n this.setVisibility(false, true);\r\n }\r\n }\r\n else {\r\n this.isHiding = false;\r\n this.setVisibility(false);\r\n }\r\n };\r\n /**\r\n * Returns a duration (ms) the Data Item should take to animate from one\r\n * value to another.\r\n *\r\n * If the duration is not specified via parameter, this method will try to\r\n * request a default duration from the related `Component`.\r\n *\r\n * @param duration Default duration (ms)\r\n * @return Duration (ms)\r\n */\r\n DataItem.prototype.getDuration = function (duration) {\r\n if (!$type.isNumber(duration)) {\r\n var component = this.component;\r\n if (component) {\r\n duration = component.interpolationDuration;\r\n }\r\n }\r\n if (duration != null) {\r\n if (!this._adapterO) {\r\n return duration;\r\n }\r\n else {\r\n return this._adapterO.apply(\"duration\", duration);\r\n }\r\n }\r\n };\r\n /**\r\n * Returns a numeric value for specific data field.\r\n *\r\n * If `calculated` is not set, it will return a raw value, as it is in\r\n * source data.\r\n *\r\n * If `calculated` is set, it will return a pre-calculated specific value.\r\n *\r\n * @param name Data field name\r\n * @param calculated A calculated value name\r\n * @return Value\r\n */\r\n DataItem.prototype.getValue = function (name, calculated) {\r\n if (name && this.component) {\r\n if (!calculated) {\r\n calculated = this.component.dataFields[name + \"Show\"];\r\n if (!calculated) {\r\n calculated = \"value\";\r\n }\r\n }\r\n var value = this.values[name][calculated];\r\n if (this._adapterO && this._adapterO.isEnabled(\"value\")) {\r\n return this._adapterO.apply(\"value\", {\r\n value: value,\r\n field: name\r\n }).value;\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n };\r\n /**\r\n * Returns a current working value for a specific data field.\r\n *\r\n * The actual value may differ from the one returned by `getValue()`. The\r\n * latter returns static values from the data source.\r\n *\r\n * `getWorkingValue()` returns current value, which is usually different if\r\n * Data Item is animating from one state to another.\r\n *\r\n * @param name Data field name\r\n * @return Value\r\n */\r\n DataItem.prototype.getWorkingValue = function (name) {\r\n if (name && this.component) {\r\n var realName = this.component.dataFields[name + \"Show\"];\r\n if (!realName) {\r\n realName = \"workingValue\";\r\n }\r\n if (this._adapterO) {\r\n return this._adapterO.apply(\"workingValue\", {\r\n workingValue: this.values[name][realName],\r\n field: name\r\n }).workingValue;\r\n }\r\n else {\r\n return this.values[name][realName];\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n * @return Value\r\n */\r\n DataItem.prototype.getActualWorkingValue = function (name) {\r\n return this.values[name].workingValue;\r\n };\r\n /**\r\n * Sets a numeric value for specific data field.\r\n *\r\n * @param name Data field name\r\n * @param value Value\r\n * @param calculated Calculated data field name\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n */\r\n DataItem.prototype.setValue = function (name, value, duration, delay) {\r\n var currentValue = this.values[name].value;\r\n var newDuration = this.getDuration(duration);\r\n value = $type.toNumber(value);\r\n if (currentValue !== value) {\r\n this.values[name].value = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"valuechanged\")) {\r\n var event_2 = {\r\n type: \"valuechanged\",\r\n target: this,\r\n property: name\r\n };\r\n this.events.dispatchImmediately(\"valuechanged\", event_2);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemValueChange(this, name);\r\n }\r\n }\r\n this.setWorkingValue(name, value, newDuration, delay);\r\n };\r\n DataItem.prototype.setCalculatedValue = function (name, value, calculated) {\r\n var currentValue = this.values[name][calculated];\r\n if (currentValue !== value && $type.isNumber(value)) {\r\n this.values[name][calculated] = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"calculatedvaluechanged\")) {\r\n var event_3 = {\r\n type: \"calculatedvaluechanged\",\r\n target: this,\r\n property: name\r\n };\r\n this.events.dispatchImmediately(\"calculatedvaluechanged\", event_3);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemCalculatedValueChange(this, name);\r\n }\r\n }\r\n };\r\n /**\r\n * Set current working numeric value for a specific data field.\r\n *\r\n * @param name Data field name\r\n * @param value Value\r\n * @param calculated Calculated data field name\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n * @return An [[Animation]] object used for transition to new values\r\n */\r\n DataItem.prototype.setWorkingValue = function (name, value, duration, delay) {\r\n if ($type.isNumber(this.values[name].value)) {\r\n var newDuration = this.getDuration(duration);\r\n var workingValue = this.values[name].workingValue;\r\n if (newDuration != null && newDuration > 0 && $type.isNumber(workingValue) && this.component) { // sometimes NaN is passed, so only change this to != null if all cases of NaN are handled, otherwise animation won't stop\r\n if (workingValue != value) {\r\n var animation = this.animate({ childObject: this.values[name], property: \"workingValue\", from: workingValue, to: value, dummyData: name }, newDuration, this.component.interpolationEasing);\r\n if (delay != null) {\r\n animation.delay(delay);\r\n }\r\n animation.events.on(\"animationstarted\", this.handleInterpolationProgress, this);\r\n animation.events.on(\"animationprogress\", this.handleInterpolationProgress, this);\r\n animation.events.on(\"animationended\", this.handleInterpolationProgress, this);\r\n this._valueAnimations[name] = animation;\r\n return animation;\r\n }\r\n else {\r\n var valueAnimation = this._valueAnimations[name];\r\n if (valueAnimation) {\r\n valueAnimation.stop();\r\n }\r\n this.values[name].workingValue = value;\r\n }\r\n }\r\n else {\r\n var valueAnimation = this._valueAnimations[name];\r\n if (valueAnimation) {\r\n valueAnimation.stop();\r\n }\r\n this.values[name].workingValue = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"workingvaluechanged\")) {\r\n var event_4 = {\r\n type: \"workingvaluechanged\",\r\n target: this,\r\n property: name\r\n };\r\n this.events.dispatchImmediately(\"workingvaluechanged\", event_4);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemWorkingValueChange(this, name);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Sets a relative location for a data field.\r\n *\r\n * A location is always relative on a 0 to 1 scale, with 0 being beginning,\r\n * 0.5 middle and 1 end.\r\n *\r\n * @todo Rewiew description\r\n * @param name Data field name\r\n * @param value Location (0-1)\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n */\r\n DataItem.prototype.setLocation = function (name, value, duration, delay) {\r\n var currentLocation = this.locations[name];\r\n if (currentLocation !== value) {\r\n this.locations[name] = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"locationchanged\")) {\r\n var event_5 = {\r\n type: \"locationchanged\",\r\n target: this,\r\n property: name\r\n };\r\n this.events.dispatchImmediately(\"locationchanged\", event_5);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemValueChange(this, name); // correct\r\n }\r\n this.setWorkingLocation(name, value, duration, delay);\r\n }\r\n };\r\n /**\r\n * Sets a current working location for a data field.\r\n *\r\n * @todo Rewiew description\r\n * @param name Data field name\r\n * @param value Location (0-1)\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n */\r\n DataItem.prototype.setWorkingLocation = function (name, value, duration, delay) {\r\n var newDuration = this.getDuration(duration);\r\n var workingLocation = this.workingLocations[name];\r\n if (newDuration != null && newDuration > 0 && $type.isNumber(workingLocation) && this.component) { // sometimes NaN is passed, so only change this to != null if all cases of NaN are handled, otherwise animation won't stop\r\n if (workingLocation != value) {\r\n var animation = this.animate({ childObject: this.workingLocations, property: name, from: workingLocation, to: value, dummyData: name }, newDuration, this.component.interpolationEasing);\r\n if (delay != null) {\r\n animation.delay(delay);\r\n }\r\n animation.events.on(\"animationstarted\", this.handleInterpolationProgress, this);\r\n animation.events.on(\"animationprogress\", this.handleInterpolationProgress, this);\r\n animation.events.on(\"animationended\", this.handleInterpolationProgress, this);\r\n this._locationAnimations[name] = animation;\r\n return animation;\r\n }\r\n else {\r\n var locationAnimation = this._locationAnimations[name];\r\n if (locationAnimation) {\r\n locationAnimation.stop();\r\n }\r\n this.workingLocations[name] = value;\r\n }\r\n }\r\n else {\r\n var locationAnimation = this._locationAnimations[name];\r\n if (locationAnimation) {\r\n locationAnimation.stop();\r\n }\r\n this.workingLocations[name] = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"workinglocationchanged\")) {\r\n var event_6 = {\r\n type: \"workinglocationchanged\",\r\n target: this,\r\n property: name\r\n };\r\n this.events.dispatchImmediately(\"workinglocationchanged\", event_6);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemWorkingLocationChange(this, name);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets Date value to a data field.\r\n *\r\n * @param name Data field name\r\n * @param date Date object\r\n * @param duration Duration (ms) to animate to new value to\r\n */\r\n DataItem.prototype.setDate = function (name, date, duration) {\r\n if (!$type.isDate(date) && this.component) {\r\n date = this.component.dateFormatter.parse(date);\r\n }\r\n var currentDate = this.dates[name];\r\n if (currentDate !== date) {\r\n this.dates[name] = date;\r\n this.setValue(name, date.getTime(), duration);\r\n }\r\n };\r\n /**\r\n * Returns a Date value of the data field.\r\n *\r\n * @param name Data field name\r\n * @return Date object\r\n */\r\n DataItem.prototype.getDate = function (name) {\r\n if (this._adapterO) {\r\n return this._adapterO.apply(\"date\", {\r\n date: this.dates[name],\r\n field: name\r\n }).date;\r\n }\r\n else {\r\n return this.dates[name];\r\n }\r\n };\r\n /**\r\n * Sets a Data Item-specific visual properties to apply to related elements.\r\n *\r\n * @param name Property name\r\n * @param value Property value\r\n */\r\n DataItem.prototype.setProperty = function (name, value) {\r\n if (this.properties[name] !== value) {\r\n this.hasProperties = true;\r\n this.properties[name] = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"propertychanged\")) {\r\n var event_7 = {\r\n type: \"propertychanged\",\r\n target: this,\r\n property: name,\r\n value: value\r\n };\r\n this.events.dispatchImmediately(\"propertychanged\", event_7);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemPropertyChange(this, name);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets a related category for this Data Item.\r\n *\r\n * @todo Review description\r\n * @param name Data field name\r\n * @param value Category\r\n */\r\n DataItem.prototype.setCategory = function (name, value) {\r\n if (!$type.isString(value)) {\r\n value = $type.castString(value);\r\n }\r\n if (this.categories[name] !== value) {\r\n this.categories[name] = value;\r\n }\r\n };\r\n /**\r\n * Clones the Data Item, including all related data.\r\n *\r\n * @return New Data Item clone\r\n */\r\n //public clone(cloneId?: string): this {\r\n //\tlet dataItem: this = super.clone(cloneId);\r\n //\tdataItem.copyFrom(this);\r\n //\treturn dataItem;\r\n //}\r\n /**\r\n * Copies all properties and related data from different data item.\r\n *\r\n * @param object Source data item\r\n */\r\n DataItem.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (source.dataContext) {\r\n this.dataContext = $utils.copy(source.dataContext, {});\r\n }\r\n $utils.copyProperties(source.locations, this.locations);\r\n /*\r\n $utils.copyProperties(source.properties, this.properties);\r\n $utils.copyProperties(source.categories, this.categories);\r\n $utils.copyProperties(source.values, this.values);\r\n $utils.copyProperties(source.dates, this.dates);\r\n\r\n $object.each(source.values, (name, value) => {\r\n this.values[name] = $object.copy(value);\r\n });*/\r\n if (source._adapterO) {\r\n this.adapter.copyFrom(source._adapterO);\r\n }\r\n //this.events.copyFrom(source.events); // because copied in Base\r\n this.component = source.component;\r\n };\r\n Object.defineProperty(DataItem.prototype, \"opacity\", {\r\n /**\r\n * Sets opacity for all Data Item's related elements (Sprites).\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n $array.each(this.sprites, function (sprite) {\r\n sprite.opacity = value;\r\n });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"ignoreMinMax\", {\r\n /**\r\n * Exclude from min/max calculations?\r\n * @return Exclude from min/max calculations?\r\n */\r\n get: function () {\r\n return this._ignoreMinMax;\r\n },\r\n /**\r\n * Sets whether this data point should not be included in the scale and\r\n * minimum/maximum calculations.\r\n *\r\n * E.g. some we may want to exclude a particular data point from influencing\r\n * [[ValueAxis]] scale.\r\n *\r\n * @param value Exclude from min/max calculations?\r\n */\r\n set: function (value) {\r\n this._ignoreMinMax = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"propertychanged\")) {\r\n var event_8 = {\r\n type: \"propertychanged\",\r\n target: this,\r\n property: \"ignoreMinMax\",\r\n value: value\r\n };\r\n this.events.dispatchImmediately(\"propertychanged\", event_8);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemPropertyChange(this, \"ignoreMinMax\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and starts an [[Animation]] to interpolate (morph) Data Item's\r\n * properties and/or values.\r\n *\r\n * @see {@link Animation}\r\n * @param animationOptions Animation options\r\n * @param duration Animation duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n DataItem.prototype.animate = function (animationOptions, duration, easing) {\r\n return new Animation(this, animationOptions, duration, easing).start();\r\n };\r\n /**\r\n * Handles intermediate steps when Data Item is interpolating (morphing) from\r\n * one value to another.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n */\r\n DataItem.prototype.handleInterpolationProgress = function (event) {\r\n var animation = event.target;\r\n // it's always only one options, no need cycle\r\n var animationOptions = animation.animationOptions[0];\r\n if (animationOptions) {\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"workingvaluechanged\")) {\r\n var event_9 = {\r\n type: \"workingvaluechanged\",\r\n target: this,\r\n property: animationOptions.dummyData\r\n };\r\n this.events.dispatchImmediately(\"workingvaluechanged\", event_9);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemWorkingValueChange(this, animationOptions.dummyData);\r\n }\r\n }\r\n };\r\n /**\r\n * Checks whether Data Item has values set for all of the data fields,\r\n * supplied via argument.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fields Field list to check\r\n * @return Has values for all fields?\r\n */\r\n DataItem.prototype.hasValue = function (fields) {\r\n // todo: what about categories?\r\n for (var i = 0, len = fields.length; i < len; i++) {\r\n var values = this.values[fields[i]];\r\n if (!values || !$type.hasValue(values.value)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n Object.defineProperty(DataItem.prototype, \"depth\", {\r\n /**\r\n * Depth of the Data Item.\r\n *\r\n * In nested data structures, like TreeMap, this indicates the level this\r\n * data point is at, in relation to the parent Data Item.\r\n *\r\n * @return Depth\r\n */\r\n get: function () {\r\n if (!this.parent) {\r\n return 0;\r\n }\r\n else {\r\n return this.parent.depth + 1;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"dataContext\", {\r\n /**\r\n * Sets to a reference to an original object from Component's data.\r\n *\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._dataContext;\r\n },\r\n /**\r\n * A reference to an original object in Component's data, that this Data Item\r\n * is derived from.\r\n *\r\n * @param value Original data object\r\n */\r\n set: function (value) {\r\n this._dataContext = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * adds a sprite to dataItem.sprites array\r\n * @ignore\r\n */\r\n DataItem.prototype.addSprite = function (sprite) {\r\n if (sprite.dataItem && sprite.dataItem != this) {\r\n $array.remove(sprite.dataItem.sprites, sprite);\r\n }\r\n if (!this.visible) {\r\n sprite.hide(0);\r\n }\r\n if (this.isHiding) {\r\n sprite.hide();\r\n }\r\n this.sprites.push(sprite);\r\n sprite.dataItem = this;\r\n };\r\n return DataItem;\r\n}(BaseObjectEvents));\r\nexport { DataItem };\r\n","/**\r\n * Global options.\r\n */\r\nexport var options = {\r\n verbose: true,\r\n commercialLicense: false,\r\n classNamePrefix: \"amcharts-\",\r\n autoSetClassName: false,\r\n minPolylineStep: 0.5,\r\n onlyShowOnViewport: false,\r\n queue: false,\r\n autoDispose: false,\r\n licenses: [],\r\n suppressErrors: false,\r\n suppressWarnings: false,\r\n animationsEnabled: true,\r\n nonce: \"\",\r\n deferredDelay: 100,\r\n disableHoverOnTransform: \"never\",\r\n pixelPerfectPrecision: 0\r\n};\r\n","import { EventDispatcher } from \"./utils/EventDispatcher\";\r\nimport { Dictionary } from \"./utils/Dictionary\";\r\nimport { cache } from \"./utils/Cache\";\r\nimport * as $type from \"./utils/Type\";\r\nimport * as $string from \"./utils/String\";\r\nimport * as $array from \"./utils/Array\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Registry is used to store miscellaneous system-wide information, like ids,\r\n * maps, themes, and registered classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar Registry = /** @class */ (function () {\r\n function Registry() {\r\n var _this = this;\r\n /**\r\n * Event dispacther.\r\n */\r\n this.events = new EventDispatcher();\r\n /**\r\n * All currently applied themes. All new chart instances created will\r\n * automatically inherit and retain System's themes.\r\n */\r\n this.themes = [];\r\n /**\r\n * List of all loaded available themes.\r\n *\r\n * Whenever a theme loads, it registers itself in System's `loadedThemes`\r\n * collection.\r\n */\r\n this.loadedThemes = {};\r\n /**\r\n * An indeternal counter used to generate unique IDs.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this._uidCount = 0;\r\n /**\r\n * Keeps register of class references so that they can be instnatiated using\r\n * string key.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.registeredClasses = {};\r\n /**\r\n * Holds all generated placeholders.\r\n */\r\n this._placeholders = {};\r\n /**\r\n * A list of invalid(ated) [[Sprite]] objects that need to be re-validated\r\n * during next cycle.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidSprites = {};\r\n /**\r\n * Components are added to this list when their data provider changes to\r\n * a new one or data is added/removed from their data provider.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidDatas = {};\r\n /**\r\n * Components are added to this list when values of their raw data change.\r\n * Used when we want a smooth animation from one set of values to another.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidRawDatas = [];\r\n /**\r\n * Components are added to this list when values of their data changes\r\n * (but not data provider itself).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidDataItems = [];\r\n /**\r\n * Components are added to this list when their data range (selection) is\r\n * changed, e.g. zoomed.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidDataRange = [];\r\n /**\r\n * A list of [[Sprite]] objects that have invalid(ated) positions, that need\r\n * to be recalculated.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidPositions = {};\r\n /**\r\n * A list of [[Container]] objects with invalid(ated) layouts.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidLayouts = {};\r\n /**\r\n * An array holding all active (non-disposed) top level elemens.\r\n *\r\n * When, for example, a new chart is created, its instance will be added to\r\n * this array, and will be removed when the chart is disposed.\r\n */\r\n this.baseSprites = [];\r\n /**\r\n * An UID-based map of base sprites (top-level charts).\r\n */\r\n this.baseSpritesByUid = {};\r\n /**\r\n * Queued charts (waiting for their turn) to initialize.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Daisy_chaining_multiple_charts} for more information\r\n */\r\n this.queue = [];\r\n /**\r\n * An array of deferred charts that haven't been created yet.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Deferred_daisy_chained_instantiation} for more information\r\n * @since 4.10.0\r\n */\r\n this.deferred = [];\r\n this.uid = this.getUniqueId();\r\n this.invalidSprites.noBase = [];\r\n this.invalidDatas.noBase = [];\r\n this.invalidLayouts.noBase = [];\r\n this.invalidPositions.noBase = [];\r\n // This is needed for Angular Universal SSR\r\n if (typeof addEventListener !== \"undefined\") {\r\n // This is needed to prevent charts from being cut off when printing\r\n addEventListener(\"beforeprint\", function () {\r\n $array.each(_this.baseSprites, function (sprite) {\r\n var svg = sprite.paper.svg;\r\n svg.setAttribute(\"viewBox\", \"0 0 \" + svg.clientWidth + \" \" + svg.clientHeight);\r\n });\r\n });\r\n addEventListener(\"afterprint\", function () {\r\n $array.each(_this.baseSprites, function (sprite) {\r\n var svg = sprite.paper.svg;\r\n svg.removeAttribute(\"viewBox\");\r\n });\r\n });\r\n }\r\n }\r\n /**\r\n * Generates a unique chart system-wide ID.\r\n *\r\n * @return Generated ID\r\n */\r\n Registry.prototype.getUniqueId = function () {\r\n var uid = this._uidCount;\r\n this._uidCount += 1;\r\n return \"id-\" + uid;\r\n };\r\n Object.defineProperty(Registry.prototype, \"map\", {\r\n /**\r\n * Returns a universal collection for mapping ids with objects.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Map collection\r\n */\r\n get: function () {\r\n if (!this._map) {\r\n this._map = new Dictionary();\r\n }\r\n return this._map;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Caches value in object's cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value\r\n * @param ttl TTL in seconds\r\n */\r\n Registry.prototype.setCache = function (key, value, ttl) {\r\n cache.set(this.uid, key, value, ttl);\r\n };\r\n /**\r\n * Retrieves cached value.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value to return if cache is not available\r\n * @return Value\r\n */\r\n Registry.prototype.getCache = function (key, value) {\r\n if (value === void 0) { value = undefined; }\r\n return cache.get(this.uid, key, value);\r\n };\r\n /**\r\n * Dispatches an event using own event dispatcher. Will automatically\r\n * populate event data object with event type and target (this element).\r\n * It also checks if there are any handlers registered for this sepecific\r\n * event.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\r\n Registry.prototype.dispatch = function (eventType, data) {\r\n // @todo Implement proper type check\r\n if (this.events.isEnabled(eventType)) {\r\n if (data) {\r\n data.type = eventType;\r\n data.target = data.target || this;\r\n this.events.dispatch(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n else {\r\n this.events.dispatch(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Works like `dispatch`, except event is triggered immediately, without\r\n * waiting for the next frame cycle.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\r\n Registry.prototype.dispatchImmediately = function (eventType, data) {\r\n // @todo Implement proper type check\r\n if (this.events.isEnabled(eventType)) {\r\n if (data) {\r\n data.type = eventType;\r\n data.target = data.target || this;\r\n this.events.dispatchImmediately(eventType, data);\r\n }\r\n else {\r\n this.events.dispatchImmediately(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Returns a unique placeholder suitable for the key.\r\n *\r\n * @param key Key\r\n * @return Random string to be used as placeholder\r\n */\r\n Registry.prototype.getPlaceholder = function (key) {\r\n if ($type.hasValue(this._placeholders[key])) {\r\n return this._placeholders[key];\r\n }\r\n this._placeholders[key] = \"__amcharts_\" + key + \"_\" + $string.random(8) + \"__\";\r\n return this._placeholders[key];\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.addToInvalidComponents = function (component) {\r\n if (component.baseId) {\r\n $array.move(this.invalidDatas[component.baseId], component);\r\n }\r\n else {\r\n $array.move(this.invalidDatas[\"noBase\"], component);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.removeFromInvalidComponents = function (component) {\r\n if (component.baseId) {\r\n $array.remove(this.invalidDatas[component.baseId], component);\r\n }\r\n $array.remove(this.invalidDatas[\"noBase\"], component);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.addToInvalidSprites = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.add(this.invalidSprites[sprite.baseId], sprite);\r\n }\r\n else {\r\n $array.add(this.invalidSprites[\"noBase\"], sprite);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.removeFromInvalidSprites = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.remove(this.invalidSprites[sprite.baseId], sprite);\r\n }\r\n $array.remove(this.invalidSprites[\"noBase\"], sprite);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.addToInvalidPositions = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.add(this.invalidPositions[sprite.baseId], sprite);\r\n }\r\n else {\r\n $array.add(this.invalidPositions[\"noBase\"], sprite);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.removeFromInvalidPositions = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.remove(this.invalidPositions[sprite.baseId], sprite);\r\n }\r\n $array.remove(this.invalidPositions[\"noBase\"], sprite);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.addToInvalidLayouts = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.add(this.invalidLayouts[sprite.baseId], sprite);\r\n }\r\n else {\r\n $array.add(this.invalidLayouts[\"noBase\"], sprite);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.removeFromInvalidLayouts = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.remove(this.invalidLayouts[sprite.baseId], sprite);\r\n }\r\n $array.remove(this.invalidLayouts[\"noBase\"], sprite);\r\n };\r\n return Registry;\r\n}());\r\nexport { Registry };\r\n/**\r\n * A singleton global instance of [[Registry]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var registry = new Registry();\r\n/**\r\n * Returns `true` if object is an instance of the class. It's the same as `instanceof` except it doesn't need to import the class.\r\n *\r\n * @param object Object\r\n * @param name Class name\r\n * @return Is instance of class\r\n */\r\nexport function is(object, name) {\r\n var x = registry.registeredClasses[name];\r\n return x != null && object instanceof x;\r\n}\r\n","/**\r\n * This is the main class that encapsulates every object on the chart.\r\n *\r\n * If it's an element that is to be displayed on the screen at some point, its\r\n * class must extend [[Sprite]] class.\r\n */\r\nimport { __extends, __values } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SpriteState } from \"./SpriteState\";\r\nimport { SpriteEventDispatcher } from \"./SpriteEvents\";\r\nexport { SpriteEventDispatcher };\r\nimport { BaseObjectEvents } from \"./Base\";\r\nimport { Adapter, globalAdapter } from \"./utils/Adapter\";\r\nimport { Dictionary, DictionaryTemplate, DictionaryDisposer } from \"./utils/Dictionary\";\r\nimport { ListDisposer, List } from \"./utils/List\";\r\nimport { MultiDisposer, Disposer, MutableValueDisposer } from \"./utils/Disposer\";\r\nimport { Animation, AnimationDisposer } from \"./utils/Animation\";\r\nimport { getGhostPaper } from \"./rendering/Paper\";\r\nimport { Container } from \"./Container\";\r\nimport { Pattern } from \"./rendering/fills/Pattern\";\r\nimport { LinearGradient } from \"./rendering/fills/LinearGradient\";\r\nimport { RadialGradient } from \"./rendering/fills/RadialGradient\";\r\nimport { Color, color, toColor } from \"./utils/Color\";\r\nimport { getInteraction } from \"./interaction/Interaction\";\r\nimport { MouseCursorStyle } from \"./interaction/Mouse\";\r\nimport { options } from \"./Options\";\r\nimport { registry } from \"./Registry\";\r\nimport { NumberFormatter } from \"./formatters/NumberFormatter\";\r\nimport { DateFormatter } from \"./formatters/DateFormatter\";\r\nimport { DurationFormatter } from \"./formatters/DurationFormatter\";\r\nimport { getTextFormatter } from \"./formatters/TextFormatter\";\r\nimport { Language } from \"./utils/Language\";\r\nimport { Export } from \"./export/Export\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $math from \"./utils/Math\";\r\nimport * as $strings from \"./utils/Strings\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\nimport * as $iter from \"./utils/Iterator\";\r\nimport { system } from \"./System\";\r\nimport { Percent, percent } from \"./utils/Percent\";\r\n/**\r\n * Defines list ofvisual properties\r\n */\r\nexport var visualProperties = [\"fill\", \"fillOpacity\", \"stroke\", \"strokeOpacity\", \"strokeWidth\", \"strokeDasharray\", \"strokeDashoffset\", \"strokeLinecap\", \"strokeLinejoin\"]; // do not add opacity here, as it is used for showing/hiding\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Sprite represents any displayable element.\r\n *\r\n * This is the main class that encapsulates every object on the chart.\r\n *\r\n * If it's an element that is to be displayed on the screen at some point, its\r\n * class must extend [[Sprite]] class.\r\n *\r\n * [[Sprite]] class represents the a hierarchical structure. Every object that\r\n * extends [[Sprite]] can have children, that would inherit their properties,\r\n * such as language, formatters, etc.\r\n *\r\n * @see {@link SpriteState}\r\n * @see {@link ISpriteEvents} for a list of available events\r\n * @see {@link ISpriteAdapters} for a list of available Adapters\r\n *\r\n * @todo Review child elements that need to go into `_disposers`\r\n * @important\r\n */\r\nvar Sprite = /** @class */ (function (_super) {\r\n __extends(Sprite, _super);\r\n /**\r\n * Constructor:\r\n * * Creates initial node\r\n * * Sets default properties\r\n * * Creates required default states\r\n * * Inits accessibility\r\n */\r\n function Sprite() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Holds values for Sprite's properties.\r\n */\r\n _this.properties = {};\r\n /**\r\n * @ignore\r\n */\r\n _this._eventDispatcher = new SpriteEventDispatcher(_this);\r\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this._bindings = {};\r\n /**\r\n * Holds indicator if this Sprite is a \"template\" to be used for creating\r\n * other Sprites from and should not be treated as full-fledged element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._isTemplate = false;\r\n _this._isPath = false;\r\n /**\r\n * Holds indicator whether this sprite was already initialized.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._inited = false;\r\n /**\r\n * Holds indicator whether this sprite was already initialized and ready.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._ready = false;\r\n /**\r\n * If `sprite.hide()` is called and we have \"hidden\" state and\r\n * `transitionDuration > 0`, we set `isHiding` flag to `true` in order to\r\n * avoid restarting animations in case `hide()` method is called multiple\r\n * times.\r\n */\r\n _this.isHiding = false;\r\n /**\r\n * If `sprite.hide()` is called, we set isHidden to true when sprite is hidden.\r\n * This was added becaus hidden state might have visibility set to true and so\r\n * there would not be possible to find out if a sprite is technically hidden or not.\r\n */\r\n _this._isHidden = false;\r\n /**\r\n * This property indicates if Sprite is currently being revealed from hidden\r\n * state. This is used to prevent multiple calls to `sprite.show()` to\r\n * restart reveal animation. (if enabled)\r\n */\r\n _this.isShowing = false;\r\n /**\r\n * Indicates if this element is a standalone instance. A \"standalone\r\n * instance\" means this is a autonomous object which maintains its own\r\n * set of controls like Preloader, Export, etc.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.isStandaloneInstance = false;\r\n /**\r\n * Indicates if togglable Sprite is currently active (toggled on).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._isActive = false;\r\n /**\r\n * A Sprite element to use as a mask for this Sprite.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._mask = new MutableValueDisposer();\r\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this._positionPrecision = 3;\r\n /**\r\n * An instance of [[Language]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._language = new MutableValueDisposer();\r\n /**\r\n * Holds [[Export]] object.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._exporting = new MutableValueDisposer();\r\n /**\r\n * Should this Sprite be included when exporting?\r\n */\r\n _this._exportable = true;\r\n /**\r\n * Defines bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._bbox = { x: 0, y: 0, width: 0, height: 0 };\r\n /**\r\n * Indicates if this element is invalid and should be re-validated (redrawn).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.invalid = false;\r\n /**\r\n * Indicates if this elements position is invalid and should be repositioned\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.positionInvalid = false;\r\n /**\r\n * A collection of key/value pairs that can be used to bind specific Sprite\r\n * properties to [[DataItem]].\r\n *\r\n * For example: `fill` property can be bound to `myCustomColor` field in\r\n * DataItem. The Sprite will automatically get the value for `fill` from its\r\n * DataItem.\r\n *\r\n * Can be set for each [[SpriteState]] individually to override default\r\n * bindings.\r\n *\r\n * @see {@link SpriteState}\r\n */\r\n _this.propertyFields = {};\r\n /**\r\n * Specifies if property changes on this object should be propagated to the\r\n * objects cloned from this object.\r\n *\r\n * This setting affects property changes *after* cloning, since at the moment\r\n * of cloning all of properties from source object are copied to the clone\r\n * anyway.\r\n *\r\n * @default false\r\n */\r\n _this.applyOnClones = false;\r\n // unrotated unscaled\r\n _this._measuredWidthSelf = 0;\r\n _this._measuredHeightSelf = 0;\r\n // read only, sprite extreme coordinates\r\n /**\r\n * @ignore\r\n */\r\n _this.maxLeft = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxRight = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxTop = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxBottom = 0;\r\n // not rotated and not scaled\r\n /**\r\n * @ignore\r\n */\r\n _this.maxLeftSelf = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxRightSelf = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxTopSelf = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxBottomSelf = 0;\r\n _this._isDragged = false;\r\n _this._isResized = false;\r\n /**\r\n * @deprecated Moved to [[SpriteProperties]]\r\n */\r\n _this._disabled = false;\r\n _this._internalDisabled = false;\r\n _this._updateDisabled = false;\r\n _this._internalDefaultsApplied = false;\r\n /**\r\n * Time in milliseconds after which rollout event happens when user rolls-out of the sprite. This helps to avoid flickering in some cases.\r\n */\r\n _this.rollOutDelay = 0;\r\n /**\r\n * This flag is set to `true` for the initial sprite you create and place\r\n * to the div so that we could clear all additional\r\n * sprites/containers when this sprite is disposed.\r\n *\r\n * @ignore\r\n */\r\n _this.isBaseSprite = false;\r\n /**\r\n * Indicates whether this sprite should be cloned when cloning its parent\r\n * container. We set this to `false` in those cases when a sprite is created\r\n * by the class, so that when cloning a duplicate sprite would not appear.\r\n */\r\n _this.shouldClone = true;\r\n /**\r\n * A read-only flag which indicates if a sprite has completed its initial\r\n * animation (if `showOnInit = true`).\r\n *\r\n * In case `showOnInit = false`, `appeared` is set to `true` on init.\r\n *\r\n * @readonly\r\n */\r\n _this.appeared = false;\r\n /**\r\n * [ex description]\r\n *\r\n * @todo Description\r\n * @ignore\r\n */\r\n _this.ex = 0;\r\n /**\r\n * [ey description]\r\n *\r\n * @todo Description\r\n * @ignore\r\n */\r\n _this.ey = 0;\r\n /**\r\n * Indicates if the sprite can be moved around when resizing it with two fingers (will only work if draggable = false)\r\n * @ignore\r\n */\r\n _this.dragWhileResize = false;\r\n /**\r\n * @ignore\r\n */\r\n _this.measureFailed = false;\r\n /**\r\n * If this flag is set to true, calling show() will not reveal the sprite.\r\n *\r\n * @ignore\r\n */\r\n _this.preventShow = false;\r\n /**\r\n * When cloning a sprite, if the template has it's own tooltip assigned, this tooltip is also cloned by default.\r\n * This is not good for cpu and sometimes you might only need one single tooltip for all clones. Set this to false in order not to clone tooltip.\r\n */\r\n _this.cloneTooltip = true;\r\n _this.className = \"Sprite\";\r\n _this._disposers.push(_this._eventDispatcher);\r\n // Generate a unique ID\r\n $utils.used(_this.uid);\r\n // Create SVG group to hold everything in\r\n _this.group = _this.paper.addGroup(\"g\");\r\n // Set defaults\r\n // it is better to set defauls like this in order to save invaliation calls and events\r\n _this.setPropertyValue(\"scale\", 1);\r\n _this.setPropertyValue(\"rotation\", 0);\r\n _this.setPropertyValue(\"align\", \"none\");\r\n _this.setPropertyValue(\"valign\", \"none\");\r\n _this.setPropertyValue(\"pixelPerfect\", false);\r\n _this.setPropertyValue(\"visible\", true);\r\n _this.setPropertyValue(\"tooltipPosition\", \"fixed\");\r\n _this.setPropertyValue(\"verticalCenter\", \"none\");\r\n _this.setPropertyValue(\"horizontalCenter\", \"none\");\r\n _this.setPropertyValue(\"tooltipX\", percent(50));\r\n _this.setPropertyValue(\"tooltipX\", percent(50));\r\n _this.setPropertyValue(\"marginTop\", 0);\r\n _this.setPropertyValue(\"marginBottom\", 0);\r\n _this.setPropertyValue(\"marginLeft\", 0);\r\n _this.setPropertyValue(\"marginRight\", 0);\r\n _this.setPropertyValue(\"dx\", 0);\r\n _this.setPropertyValue(\"dy\", 0);\r\n _this.setPropertyValue(\"paddingTop\", 0);\r\n _this.setPropertyValue(\"paddingBottom\", 0);\r\n _this.setPropertyValue(\"paddingRight\", 0);\r\n _this.setPropertyValue(\"paddingLeft\", 0);\r\n _this.setPropertyValue(\"togglable\", false);\r\n _this.setPropertyValue(\"hidden\", false);\r\n _this.setPropertyValue(\"urlTarget\", \"_self\");\r\n _this.setPropertyValue(\"alwaysShowTooltip\", false);\r\n _this.setPropertyValue(\"showTooltipOn\", \"hover\");\r\n _this._prevMeasuredWidth = 0;\r\n _this._prevMeasuredHeight = 0;\r\n _this._measuredWidth = 0;\r\n _this._measuredHeight = 0;\r\n _this._isMeasured = true;\r\n // Invalidate the Sprite so that renderer knows it needs to be drawn\r\n _this.invalidate();\r\n //this.states.create(\"default\").properties.opacity = 1;\r\n // Apply the theme\r\n _this.applyTheme();\r\n //this._disposers.push(this._clickable);\r\n // Decorate adapter with events so that we can apply its settings whenever\r\n // it is modified\r\n // @todo Think what to do here. We can't just apply the adapter value to\r\n // property since not all of those are for properties. Commented out for\r\n // now.\r\n /*this.adapter.events.on(\"inserted\", (ev: any) => {\r\n (this)[ev.newValue.key] = (this)[ev.newValue.key];\r\n });\r\n this.adapter.events.on(\"removed\", (ev: any) => {\r\n (this)[ev.newValue.key] = (this)[ev.newValue.key];\r\n });*/\r\n // Add disposable dependencies to `_disposers` so they are automatically\r\n // disposed of when this object is disposed\r\n _this._disposers.push(_this.events);\r\n _this._disposers.push(_this.group);\r\n _this._disposers.push(_this._mask);\r\n _this._disposers.push(_this._language);\r\n _this._disposers.push(_this._exporting);\r\n //this._disposers.push(this._parent);\r\n //this._disposers.push(this._modal);\r\n _this._disposers.push(new Disposer(function () {\r\n $object.each(_this._bindings, function (key, value) {\r\n value.dispose();\r\n });\r\n }));\r\n _this.setPropertyValue(\"interactionsEnabled\", true);\r\n return _this;\r\n }\r\n Object.defineProperty(Sprite.prototype, \"events\", {\r\n /**\r\n * Event dispatcher.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/event-listeners/} for more info about Events\r\n */\r\n get: function () {\r\n return this._eventDispatcher;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"adapter\", {\r\n /**\r\n * Holds Adapter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/adapters/} for more info about Adapters\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n this._adapterO = new Adapter(this);\r\n }\r\n return this._adapterO;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * ==========================================================================\r\n * ELEMENT VALIDATION, INIT, AND DRAWING STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Applies properties from all assigned themes.\r\n *\r\n * We do this here so that we can apply class names as well.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.applyTheme = function () {\r\n _super.prototype.applyTheme.call(this);\r\n if (options.autoSetClassName) {\r\n this.setClassName();\r\n }\r\n };\r\n /**\r\n * Returns theme(s) used by this object either set explicitly on this\r\n * element, inherited from parent, or inherited from [[System]].\r\n *\r\n * @return An array of theme references\r\n */\r\n Sprite.prototype.getCurrentThemes = function () {\r\n var themes = this._themes;\r\n if (themes) {\r\n return themes;\r\n }\r\n else {\r\n var parent_1 = this._parent;\r\n if (parent_1) {\r\n return parent_1.getCurrentThemes();\r\n }\r\n else {\r\n return registry.themes;\r\n }\r\n }\r\n };\r\n /**\r\n * Called just before element's validation, this function allows setting\r\n * defaults.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.applyInternalDefaults = function () {\r\n // Nothing here, but extending classes might override this function\r\n // so that they can set their defaults\r\n this._internalDefaultsApplied = true;\r\n };\r\n /**\r\n * Invalidates element.\r\n *\r\n * Object will be redrawn during the next update cycle.\r\n *\r\n * Please note that in most cases elements will auto-invalidate when needed. If\r\n * everything works, DO NOT use this method. Use it only if some changes do\r\n * not take otherwise.\r\n */\r\n Sprite.prototype.invalidate = function () {\r\n if (this.disabled || this._isTemplate || this.__disabled) {\r\n return;\r\n }\r\n // We no longer reset this on each invalidate, so that they are applied\r\n // only once, and do not overwrite user-defined settings\r\n //this._internalDefaultsApplied = false;\r\n if (!this.invalid) {\r\n this.invalid = true;\r\n registry.addToInvalidSprites(this);\r\n system.requestFrame();\r\n }\r\n };\r\n /**\r\n * Validates element:\r\n * * Triggers events\r\n * * Redraws the element\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.validate = function () {\r\n this.dispatchImmediately(\"beforevalidated\");\r\n // prevents from drawing if topparent is 0x0\r\n /*\r\n let topParent = this.topParent;\r\n\r\n if (topParent) {\r\n if (!topParent.maxWidth || !topParent.maxHeight) {\r\n this._disposers.push(topParent.events.once(\"maxsizechanged\", this.invalidate, this));\r\n }\r\n }*/\r\n // Set internal defaults\r\n if (!this._internalDefaultsApplied) {\r\n this.applyInternalDefaults();\r\n }\r\n this.beforeDraw();\r\n this.draw();\r\n this.invalid = false;\r\n registry.removeFromInvalidSprites(this);\r\n this.afterDraw();\r\n };\r\n /**\r\n * Invalidates element's position.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.invalidatePosition = function () {\r\n if (this.disabled || this._isTemplate) {\r\n return;\r\n }\r\n if (!this.positionInvalid) {\r\n this.positionInvalid = true;\r\n registry.addToInvalidPositions(this);\r\n system.requestFrame();\r\n }\r\n };\r\n /**\r\n * Transforms the element.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.validatePosition = function () {\r\n var pixelX = this.pixelX;\r\n var pixelY = this.pixelY;\r\n var dx = this.dx;\r\n var dy = this.dy;\r\n var x = pixelX + dx;\r\n var y = pixelY + dy;\r\n if (this._updateDisabled) {\r\n if (this._internalDisabled) {\r\n this.group.attr({ \"display\": \"none\" });\r\n }\r\n else {\r\n if (!this.disabled) {\r\n this.removeSVGAttribute(\"display\");\r\n }\r\n }\r\n this._updateDisabled = false;\r\n }\r\n var sizeChanged = this.measure();\r\n //if (!this.invalid) {\r\n var prevGroupTransform = this.group.transformString;\r\n this.group.moveTo({ x: x, y: y });\r\n this.group.rotation = this.rotation;\r\n if (this.nonScaling) {\r\n this.group.scale = this.scale / this.globalScale;\r\n }\r\n else {\r\n this.group.scale = this.scale;\r\n }\r\n if (prevGroupTransform != this.group.transformString || sizeChanged) {\r\n // not yet sure, this is to avoid many transforms=>container layout invalidation on initial buid\r\n if (prevGroupTransform == null) {\r\n this.dispatch(\"transformed\");\r\n }\r\n else {\r\n this.dispatchImmediately(\"transformed\");\r\n }\r\n // TODO clear existing positionchanged dispatches ?\r\n this.dispatch(\"positionchanged\");\r\n if (this.showTooltipOn == \"hit\" || this.showTooltipOn == \"always\") {\r\n this.updateTooltipPosition();\r\n }\r\n }\r\n //}\r\n // it might happen that x and y changed again, so we only remove if they didn't\r\n if (pixelX + dx == x && pixelY + dy == y) {\r\n registry.removeFromInvalidPositions(this);\r\n this.positionInvalid = false;\r\n }\r\n var maskRectangle = this._maskRectangle;\r\n // todo: verify this\r\n if (maskRectangle) {\r\n this._clipElement.moveTo({ x: maskRectangle.x - pixelX, y: maskRectangle.y - pixelY });\r\n }\r\n };\r\n /**\r\n * A placeholder method that is called **before** element begins to be drawn.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.beforeDraw = function () {\r\n };\r\n /**\r\n * A placeholder method that draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.draw = function () {\r\n };\r\n /**\r\n * A placeholder method that is called **after** element finishes drawing\r\n * itself.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.afterDraw = function () {\r\n var e_1, _a;\r\n if (this.isMeasured || this.horizontalCenter !== \"none\" || this.verticalCenter !== \"none\") {\r\n this.measureElement();\r\n }\r\n //this.applyMask();\r\n if (!this._inited) {\r\n if (this._adapterO) {\r\n try {\r\n // used to be applySVGAttrbutes here, this is more efficient\r\n for (var _b = __values(this._adapterO.keys()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var key = _c.value;\r\n switch (key) {\r\n case \"mask\":\r\n case \"fill\":\r\n case \"opacity\":\r\n case \"fillOpacity\":\r\n case \"stroke\":\r\n case \"strokeOpacity\":\r\n case \"strokeWidth\":\r\n case \"shapeRendering\":\r\n case \"strokeDasharray\":\r\n case \"strokeDashoffset\":\r\n case \"strokeLinecap\":\r\n case \"strokeLinejoin\":\r\n case \"textDecoration\":\r\n case \"fontSize\":\r\n case \"fontFamily\":\r\n case \"fontWeight\":\r\n //case \"focusable\":\r\n //case \"tabindex\":\r\n //case \"role\":\r\n this[key] = this[key];\r\n break;\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n }\r\n this.applyFilters();\r\n this.visible = this.visible;\r\n this.interactionsEnabled = this.getPropertyValue(\"interactionsEnabled\"); // can't use .interactionsEnabled as it get's parent's\r\n this._inited = true;\r\n if (!this.showOnInit) {\r\n this.appeared = true;\r\n }\r\n if (this.hidden) {\r\n this.hide(0);\r\n }\r\n this.applyMask();\r\n this.dispatch(\"validated\");\r\n this.dispatch(\"inited\");\r\n this.dispatchReady();\r\n }\r\n else {\r\n this.dispatch(\"validated\");\r\n }\r\n if (this.showTooltipOn == \"always\") {\r\n if (this.visible && !this.disabled && !this.__disabled) {\r\n this.showTooltip();\r\n }\r\n else {\r\n this.hideTooltip(0);\r\n }\r\n }\r\n };\r\n /**\r\n * Dispatches `\"ready\"` event. Sprite dispatches it right after `\"inited\"` event.\r\n *\r\n * @ignore\r\n */\r\n Sprite.prototype.dispatchReady = function () {\r\n if (!this.isReady()) {\r\n this._ready = true;\r\n this.dispatch(\"ready\");\r\n }\r\n };\r\n /**\r\n * Triggers a re-initialization of this element.\r\n *\r\n * Will result in complete redrawing of the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.reinit = function () {\r\n this._inited = false;\r\n this.setState(this.defaultState);\r\n this.invalidate();\r\n };\r\n /**\r\n * Handles the situation where parent element is resized.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.handleGlobalScale = function () {\r\n this.dispatch(\"globalscalechanged\");\r\n if (this.nonScalingStroke) {\r\n this.strokeWidth = this.strokeWidth;\r\n }\r\n if (this.nonScaling) {\r\n this.validatePosition();\r\n }\r\n this.updateFilterScale();\r\n };\r\n /**\r\n * Updates filter properties which might depend on scale\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.updateFilterScale = function () {\r\n var _this = this;\r\n $iter.each(this.filters.iterator(), function (filter) {\r\n filter.scale = _this.globalScale;\r\n });\r\n };\r\n /**\r\n * Removes itself from system's invalid lists.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.removeFromInvalids = function () {\r\n registry.removeFromInvalidSprites(this);\r\n registry.removeFromInvalidPositions(this);\r\n };\r\n /**\r\n * Copies all parameters from another [[Sprite]].\r\n *\r\n * @param source Source Sprite\r\n */\r\n Sprite.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n _super.prototype.copyFrom.call(this, source);\r\n this.isMeasured = source.isMeasured;\r\n this.states.copyFrom(source.states);\r\n if (source.filters.length > 0) {\r\n source.filters.each(function (filter) {\r\n _this.filters.push(filter.clone());\r\n });\r\n }\r\n if (source._adapterO) {\r\n this.adapter.copyFrom(source._adapterO);\r\n }\r\n //helps to avoid calling getter which creates instance\r\n if (source[\"_interaction\"]) {\r\n this.interactions.copyFrom(source.interactions);\r\n }\r\n if (source[\"_plugins\"]) {\r\n this.plugins.copyFrom(source.plugins);\r\n }\r\n this.configField = source.configField;\r\n this.applyOnClones = source.applyOnClones;\r\n // this.numberFormatter = source.numberFormatter; // todo: this creates loose number formatter and copies it to all clones. somehow we need to know if source had numberFormatter explicitly created and not just because a getter was called.\r\n //this.mask = source.mask; need to think about this, generally this causes a lot of problems\r\n this.disabled = source.disabled;\r\n this.virtualParent = source.virtualParent;\r\n this.exportable = source.exportable;\r\n //@todo: create tooltip if it's on source but not on this?\r\n //const tooltip = this._tooltip;\r\n //if (tooltip) {\r\n //\ttooltip.copyFrom(source.tooltip);\r\n //}\r\n if (source._tooltip) {\r\n if (this._tooltip) {\r\n this._tooltip.copyFrom(source.tooltip);\r\n }\r\n else {\r\n if (source.cloneTooltip) {\r\n this.tooltip = source.tooltip.clone();\r\n }\r\n else {\r\n this._tooltip = source.tooltip;\r\n }\r\n }\r\n }\r\n //if ((source)[\"_tooltip\"] && !this._tooltip) {\r\n //\tthis._tooltip = (source)[\"_tooltip\"];\r\n //}\r\n this._showSystemTooltip = source.showSystemTooltip;\r\n $utils.copyProperties(source.propertyFields, this.propertyFields);\r\n $utils.copyProperties(source.properties, this);\r\n if (source.fillModifier) {\r\n this.fillModifier = source.fillModifier.clone();\r\n }\r\n if (source.strokeModifier) {\r\n this.strokeModifier = source.strokeModifier.clone();\r\n }\r\n if (source.focusFilter) {\r\n this.focusFilter = source.focusFilter.clone();\r\n }\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n Sprite.prototype.dispose = function () {\r\n if (!this.isDisposed()) {\r\n if (this.showTooltipOn == \"always\" && this.tooltip) {\r\n this.tooltip.hide();\r\n }\r\n this.dispatchImmediately(\"beforedisposed\");\r\n if (this.isBaseSprite) {\r\n if (this.htmlContainer) {\r\n while (this.htmlContainer.childNodes.length > 0) {\r\n this.htmlContainer.removeChild(this.htmlContainer.firstChild);\r\n }\r\n }\r\n this.isBaseSprite = false;\r\n }\r\n _super.prototype.dispose.call(this);\r\n // Clear adapters\r\n if (this._adapterO) {\r\n this._adapterO.clear();\r\n }\r\n if (this.applyOnClones) {\r\n if (this._clones) {\r\n for (var i = this._clones.length - 1; i >= 0; i--) {\r\n var clone = this._clones.getIndex(i);\r\n clone.dispose();\r\n }\r\n }\r\n }\r\n if (this._svgContainer) {\r\n this._svgContainer.dispose();\r\n }\r\n if (this._interactionDisposer) {\r\n this._interactionDisposer.dispose();\r\n this._interactionDisposer = undefined;\r\n }\r\n if (this._urlDisposer) {\r\n this._urlDisposer.dispose();\r\n }\r\n this.removeFromInvalids();\r\n if (this.element) {\r\n this.element.dispose();\r\n }\r\n if (this.group) {\r\n this.group.dispose();\r\n }\r\n if (this._numberFormatter) {\r\n this._numberFormatter.dispose();\r\n }\r\n if (this._focusFilter) {\r\n this._focusFilter.dispose();\r\n }\r\n var stroke = this.stroke;\r\n if (stroke && !(stroke instanceof Color) && stroke.dispose) {\r\n if (this.clonedFrom && this.clonedFrom.stroke == stroke) {\r\n // do nothing\r\n }\r\n else {\r\n stroke.dispose();\r\n }\r\n }\r\n // TODO a bit hacky\r\n var fill = this.fill;\r\n if (fill && !(fill instanceof Color) && fill.dispose) {\r\n if (this.clonedFrom && this.clonedFrom.fill == fill) {\r\n // do nothing\r\n }\r\n else {\r\n fill.dispose();\r\n }\r\n }\r\n // remove from map\r\n if ($type.hasValue(this.id)) {\r\n this.map.removeKey(this.id);\r\n }\r\n this.parent = undefined;\r\n if (this._filters) {\r\n while (this._filters.length > 0) {\r\n var filter = this._filters.getIndex(0);\r\n filter.dispose();\r\n this._filters.removeValue(filter);\r\n }\r\n }\r\n this._alwaysShowDisposers = undefined;\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"isTemplate\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Is template?\r\n */\r\n get: function () {\r\n return this._isTemplate;\r\n },\r\n /**\r\n * Indicates if this element is a \"template\".\r\n *\r\n * Template Sprites act only as a holders for config for other \"real\"\r\n * elements to be cloned from.\r\n *\r\n * Templates are treated differently, as they are not validated, redrawn, or\r\n * otherwise are processed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Is template?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this._isTemplate != value) {\r\n this._isTemplate = value;\r\n if (this instanceof Container) {\r\n $iter.each(this.children.iterator(), function (child) {\r\n child.isTemplate = value;\r\n });\r\n }\r\n if (value) {\r\n this.parent = this._parent;\r\n this.removeFromInvalids();\r\n }\r\n else {\r\n this.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"showSystemTooltip\", {\r\n /**\r\n * @return Show system tooltip?\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._showSystemTooltip)) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.showSystemTooltip;\r\n }\r\n else if (this._parent) {\r\n return this._parent.showSystemTooltip;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return this._showSystemTooltip;\r\n },\r\n /**\r\n * Indicates whether the element should attempt to construct itself in a way\r\n * so that system tooltip is shown if its `readerTitle` is set.\r\n *\r\n * @param value Show system tooltip?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this._showSystemTooltip != value) {\r\n this._showSystemTooltip = value;\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"topParent\", {\r\n /**\r\n * ==========================================================================\r\n * HIERARCHY AND STRUCTURE RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Sprites's top-level [[Container]].\r\n *\r\n * Please note that in most cases it won't be the chart element.\r\n *\r\n * To access base chart element, use `baseSprite` instead.\r\n *\r\n * @return Top-level ascendant\r\n */\r\n get: function () {\r\n if (this._topParent) {\r\n return this._topParent;\r\n }\r\n else {\r\n if (this._parent) {\r\n return this._parent.topParent;\r\n }\r\n }\r\n },\r\n /**\r\n * @ignore\r\n * @param value {Container} top parent of a sprite\r\n */\r\n set: function (value) {\r\n this._topParent = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"parent\", {\r\n /**\r\n * @return Parent container\r\n */\r\n get: function () {\r\n return this._parent;\r\n },\r\n /**\r\n * Elements' parent [[Container]].\r\n *\r\n * @param parent Parent container\r\n */\r\n set: function (parent) {\r\n if (this._isTemplate) {\r\n return;\r\n }\r\n // TODO is this needed ?\r\n $utils.used(this.paper);\r\n var oldParent = this._parent;\r\n if (oldParent != parent) {\r\n if (oldParent) {\r\n oldParent.children.removeValue(this);\r\n }\r\n this._parent = parent;\r\n if (parent) {\r\n this.topParent = parent.topParent;\r\n if (parent.isTemplate) {\r\n this.isTemplate = true;\r\n }\r\n this.baseId = parent.baseId;\r\n parent.children.push(this);\r\n // insert handler at Container invalidates + invalidatesLayout + adds to group\r\n if (this._tooltip && !this._tooltipContainer) {\r\n this._tooltip.parent = parent.tooltipContainer;\r\n }\r\n if (!this._dataItem) {\r\n this.dataItem = parent.dataItem;\r\n }\r\n this.handleAlwaysShowTooltip();\r\n if (this.dataItem) {\r\n // No need to apply accessibility if there's no data item\r\n // The whole reason of applying it here is to populate data\r\n // placesholders, and if tehre's no data item, it won't work anyway\r\n this.applyAccessibility();\r\n }\r\n this.dispatchImmediately(\"parentset\");\r\n }\r\n else {\r\n this.topParent = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.handleAlwaysShow = function () {\r\n this.showTooltip();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.handleAlwaysShowTooltip = function () {\r\n var sprite = this;\r\n var oldDisposers = this._alwaysShowDisposers;\r\n if (oldDisposers) {\r\n $array.each(oldDisposers, function (oldDisposer) {\r\n oldDisposer.dispose();\r\n });\r\n }\r\n this._alwaysShowDisposers = [];\r\n if (this.showTooltipOn == \"always\") {\r\n while (sprite != undefined) {\r\n var disposer = sprite.events.on(\"visibilitychanged\", this.handleAlwaysShow, this, false);\r\n this.addDisposer(disposer);\r\n this._alwaysShowDisposers.push(disposer);\r\n sprite = sprite.parent;\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"virtualParent\", {\r\n /**\r\n * @return Virtual parent\r\n */\r\n get: function () {\r\n return this._virtualParent;\r\n },\r\n /**\r\n * Element's \"virtual\" parent.\r\n *\r\n * This is required in ordere to maintain proper inheritance (like\r\n * formatters).\r\n *\r\n * Sometimes an element is a \"logical\" parent, even though it's not a direct\r\n * ascendant.\r\n *\r\n * Example: a bullet is not a child of the axis, but it would make sense\r\n * for it to inherit series' formatters.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Virtual parent\r\n */\r\n set: function (value) {\r\n this._virtualParent = value;\r\n if (this.dataItem) {\r\n // No need to apply accessibility if there's no data item\r\n // The whole reason of applying it here is to populate data\r\n // placesholders, and if tehre's no data item, it won't work anyway\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Moves `` to correct place in DOM.\r\n *\r\n * Some elements are initially created in \"ghost\" container. When moving\r\n * those into proper place in DOM, their respective `` need to be moved\r\n * as well.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.appendDefs = function () {\r\n if (this.filterElement) {\r\n this.paper.appendDef(this.filterElement);\r\n }\r\n var fill = this.fill;\r\n if (fill && fill.element) {\r\n this.paper.appendDef(fill.element);\r\n }\r\n var stroke = this.stroke;\r\n if (stroke && stroke.element) {\r\n this.paper.appendDef(stroke.element);\r\n }\r\n if (this.fillModifier && this.fill instanceof Color) {\r\n var fill_1 = this.fillModifier.modify(this.fill);\r\n if (fill_1 && fill_1.element) {\r\n this.paper.appendDef(fill_1.element);\r\n }\r\n }\r\n if (this.strokeModifier && this.stroke instanceof Color) {\r\n var stroke_1 = this.strokeModifier.modify(this.stroke);\r\n if (stroke_1 && stroke_1.element) {\r\n this.paper.appendDef(stroke_1.element);\r\n }\r\n }\r\n if (this._clipPath) {\r\n this.paper.appendDef(this._clipPath);\r\n }\r\n if (this._exportable === false) {\r\n this.exportable = false;\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"map\", {\r\n /**\r\n * Returns a [[Dictionary]] which maps object ids with their respective\r\n * objects.\r\n *\r\n * Can be used to retrieve any object by id, e.g.:\r\n *\r\n * ```TypeScript\r\n * console.log(mySprite.map.getKey(\"myid\"));\r\n * ```\r\n * ```JavaScript\r\n * console.log(mySprite.map.getKey(\"myid\"));\r\n * ```\r\n *\r\n * @return Map collection\r\n */\r\n get: function () {\r\n var top = this.topParent;\r\n if (top) {\r\n return top.map;\r\n }\r\n else if (!this._map) {\r\n this._map = new Dictionary();\r\n }\r\n return this._map;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"delayedMap\", {\r\n /**\r\n * @ignore\r\n * @return Map collection\r\n */\r\n get: function () {\r\n var top = this.topParent;\r\n if (top) {\r\n return top.delayedMap;\r\n }\r\n else if (!this._delayedMap) {\r\n this._delayedMap = new Dictionary();\r\n }\r\n return this._delayedMap;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"id\", {\r\n /**\r\n * @return ID\r\n */\r\n get: function () {\r\n return this._id;\r\n },\r\n /**\r\n * Element's user-defined ID.\r\n *\r\n * Will throw an Error if there already is an object with the same ID.\r\n *\r\n * Please note that above check will be performed withing the scope of the\r\n * current chart instance. It will not do checks across other chart instances\r\n * or in globally in DOM.\r\n *\r\n * Make sure the IDs are unique.\r\n *\r\n * @param value ID\r\n */\r\n set: function (value) {\r\n if (this._id != value) {\r\n this._id = value;\r\n if (this.map.hasKey(value)) {\r\n throw Error(\"Duplicate id (\" + value + \") used on multiple objects.\");\r\n }\r\n else {\r\n this.map.setKey(value, this);\r\n }\r\n if (options.autoSetClassName) {\r\n this.setClassName();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"dom\", {\r\n /**\r\n * ==========================================================================\r\n * ELEMENT AND DOM TREE MANIPULATION AND MEASURING\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns DOM element reference associated with this element.\r\n *\r\n * @readonly\r\n * @return DOM element\r\n */\r\n get: function () {\r\n return this.group.node;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"paper\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\r\n get: function () {\r\n if (this._paper) {\r\n return this._paper;\r\n }\r\n else {\r\n var parent_2 = this._parent;\r\n if (parent_2) {\r\n return parent_2.paper;\r\n }\r\n }\r\n return getGhostPaper();\r\n },\r\n /**\r\n * A [[Paper]] instance to place elements on.\r\n *\r\n * If there's no Paper set for this element, it goes up the ascendant tree\r\n * until it finds one.\r\n *\r\n * This method is used by important `addChild()` method, so it's essential\r\n * to have a [[Paper]] instance.\r\n *\r\n * If this element has a separate `htmlContainer` set, it will have a\r\n * [[Paper]] instance itself.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\r\n set: function (paper) {\r\n this.setPaper(paper);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets [[Paper]] instance to use to draw elements.\r\n * @ignore\r\n * @param paper Paper\r\n * @return true if paper was changed, false, if it's the same\r\n */\r\n Sprite.prototype.setPaper = function (paper) {\r\n var oldPaper = this._paper;\r\n if (oldPaper != paper) {\r\n this._paper = paper;\r\n this.appendDefs();\r\n return true;\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"htmlContainer\", {\r\n /**\r\n * @return HTML element\r\n */\r\n get: function () {\r\n if (this._htmlContainer) {\r\n return this._htmlContainer;\r\n }\r\n else {\r\n var parent_3 = this._parent;\r\n if (parent_3) {\r\n return parent_3.htmlContainer;\r\n }\r\n }\r\n },\r\n /**\r\n * An HTML element to be used when placing wrapper element (`
`)\r\n * for the whole chart.\r\n *\r\n * This is the same for **all** elements within the same chart.\r\n *\r\n * @param htmlContainer HTML element\r\n */\r\n set: function (htmlContainer) {\r\n this._htmlContainer = htmlContainer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"titleElement\", {\r\n /**\r\n * Creates (if not yet created) and returns element's `` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Title element\r\n */\r\n get: function () {\r\n if (!this._titleElement) {\r\n this._titleElement = this.paper.add(\"title\");\r\n this.group.add(this._titleElement);\r\n }\r\n return this._titleElement;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"descriptionElement\", {\r\n /**\r\n * Creates (if not yet created) and returns element's `<desc>` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Desc element\r\n */\r\n get: function () {\r\n if (!this._descriptionElement) {\r\n this._descriptionElement = this.paper.add(\"desc\");\r\n this.group.add(this._descriptionElement);\r\n }\r\n return this._descriptionElement;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"filters\", {\r\n /**\r\n * Returns list of SVG filters (effects) applied to element. If the filter\r\n * list is not yet initilized, creates and returns an empty one.\r\n * Note, not all filters combine well with one another. We recommend using one filter per sprite.\r\n *\r\n * @return List of filters\r\n */\r\n get: function () {\r\n if (!this._filters) {\r\n this._filters = new List();\r\n // TODO only add certain events ?\r\n this._disposers.push(this._filters.events.onAll(this.applyFilters, this));\r\n this._disposers.push(new ListDisposer(this._filters));\r\n }\r\n return this._filters;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets required SVG attributes. Must be called every time an element is\r\n * redrawn so that attributes are (re)applied.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.setSVGAttributes = function () {\r\n this.fill = this.fill;\r\n this.opacity = this.opacity;\r\n this.fillOpacity = this.fillOpacity;\r\n this.stroke = this.stroke;\r\n this.strokeOpacity = this.strokeOpacity;\r\n this.shapeRendering = this.shapeRendering;\r\n this.strokeDasharray = this.strokeDasharray;\r\n this.strokeDashoffset = this.strokeDashoffset;\r\n this.strokeLinecap = this.strokeLinecap;\r\n this.strokeLinejoin = this.strokeLinejoin;\r\n this.focusable = this.focusable;\r\n this.tabindex = this.tabindex;\r\n this.role = this.role;\r\n };\r\n /**\r\n * Sets an attribute directly on an SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param attribute Attribute object\r\n */\r\n Sprite.prototype.setSVGAttribute = function (attribute) {\r\n this.group.attr(attribute);\r\n };\r\n /**\r\n * Removes an attribute directly from SVG element.\r\n *\r\n * @param attribute Attribute key to remove\r\n */\r\n Sprite.prototype.removeSVGAttribute = function (attribute) {\r\n this.group.removeAttr(attribute);\r\n };\r\n /**\r\n * Sets `class` attribute of the elements SVG node.\r\n *\r\n * Uses `am4core.options.classNamePrefix`.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.setClassName = function () {\r\n var className = this.className;\r\n var classNamePrefix = options.classNamePrefix;\r\n if (this.element) {\r\n this.element.addClass(classNamePrefix + className);\r\n }\r\n this.group.addClass(classNamePrefix + className + \"-group\");\r\n if ($type.hasValue(this.id)) {\r\n this.group.addClass(classNamePrefix + this.id);\r\n }\r\n if (this.userClassName) {\r\n this.group.addClass(this.userClassName);\r\n }\r\n };\r\n /**\r\n * Adds an `id` attribute the the element and returns the id.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Element's ID\r\n */\r\n Sprite.prototype.uidAttr = function () {\r\n this.setSVGAttribute({ \"id\": this.uid });\r\n return this.uid;\r\n };\r\n /**\r\n * [updateClipPath description]\r\n *\r\n * @todo Description\r\n */\r\n Sprite.prototype.updateClipPath = function () {\r\n var element = this._clipElement;\r\n if (element) {\r\n element.moveTo({ x: this.mask.pixelX, y: this.mask.pixelY });\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.createClipPath = function () {\r\n if (!this._clipPath) {\r\n this._clipPath = this.paper.addGroup(\"clipPath\");\r\n this.paper.appendDef(this._clipPath);\r\n this._disposers.push(this._clipPath);\r\n var id = registry.getUniqueId();\r\n this._clipPath.attr({ \"id\": id });\r\n this.group.attr({ \"clip-path\": \"url(\\\"\" + $utils.getBaseURI() + id + \"\\\")\" });\r\n }\r\n };\r\n /**\r\n * Applies the mask Sprite.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.applyMask = function () {\r\n var mask = this.mask;\r\n if (this._clipPath && mask) {\r\n // Container\r\n if (mask instanceof Container) {\r\n this._clipElement.attr({ \"width\": $math.max(0, mask.pixelWidth), \"height\": $math.max(0, mask.pixelHeight) });\r\n var point = $utils.spritePointToSprite({ x: mask.pixelX, y: mask.pixelY }, mask.parent, this);\r\n this._clipPath.x = point.x;\r\n this._clipPath.y = point.y;\r\n }\r\n // Sprite\r\n else {\r\n if (mask.element && mask.element != this._clipElement) {\r\n this._clipElement = mask.element;\r\n this._clipPath.add(this._clipElement);\r\n }\r\n this._clipPath.scale = mask.scale;\r\n this._clipPath.x = mask.pixelX;\r\n this._clipPath.y = mask.pixelY;\r\n this._clipPath.rotation = mask.rotation;\r\n }\r\n }\r\n };\r\n /**\r\n * Applies filters to the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.applyFilters = function () {\r\n var _this = this;\r\n // we create a separate filter for each sprite as otherwise it would be impossible to animate filter.\r\n // svg doesn't support multiple filters applied to one element, so we put all the primitives to one filterElement of a sprite.\r\n if (this._filters && this._filters.length > 0) {\r\n var width_1 = 100;\r\n var height_1 = 100;\r\n if (!this.filterElement) {\r\n this.filterElement = this.paper.addGroup(\"filter\");\r\n this._disposers.push(this.filterElement);\r\n }\r\n else {\r\n this.filterElement.removeChildNodes();\r\n }\r\n this.paper.appendDef(this.filterElement);\r\n var id = \"filter-\" + this.uid;\r\n this.filterElement.attr({ \"id\": id });\r\n $iter.each(this.filters.iterator(), function (filter) {\r\n filter.sprite = _this;\r\n filter.paper = _this.paper;\r\n _this.filterElement.attr({ filterUnits: filter.filterUnits });\r\n filter.appendPrimitives(_this.filterElement);\r\n if (filter.width > width_1) {\r\n width_1 = filter.width;\r\n }\r\n if (filter.height > height_1) {\r\n height_1 = filter.height;\r\n }\r\n filter.scale = _this.globalScale;\r\n });\r\n var w = width_1 + \"%\";\r\n var h = height_1 + \"%\";\r\n /* temporarily removed as it is breaking tooltips on Safari @todo come back to this\r\n if (this._measuredHeight <= 1) {\r\n h = height + \"\";\r\n }\r\n\r\n if (this._measuredWidth <= 1) {\r\n h = width + \"\";\r\n }*/\r\n this.filterElement.attr({ \"width\": w, \"height\": h, \"x\": -(width_1 - 100) / 2 + \"%\", \"y\": -(height_1 - 100) / 2 + \"%\" });\r\n this.group.attr({ \"filter\": \"url(\\\"\" + $utils.getBaseURI() + id + \"\\\")\" });\r\n }\r\n else if (this.filterElement) {\r\n this.group.removeAttr(\"filter\");\r\n this.filterElement.removeChildNodes();\r\n }\r\n };\r\n /**\r\n * [removeClipPath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Sprite.prototype.removeClipPath = function () {\r\n if (this._clipPath) {\r\n //this._clipPath.dispose();\r\n this.removeDispose(this._clipPath);\r\n this._clipPath = undefined;\r\n }\r\n };\r\n /**\r\n * [setElement description]\r\n *\r\n * @ignore\r\n * @todo Description\r\n * @param element [description]\r\n */\r\n Sprite.prototype.setElement = function (element) {\r\n this.element = element;\r\n this.setSVGAttributes();\r\n this.applyAccessibility();\r\n };\r\n Object.defineProperty(Sprite.prototype, \"element\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._element;\r\n },\r\n /**\r\n * The main element for this Sprite, usually an SVG `<g>`.\r\n *\r\n * All other sub-elements are created in it.\r\n *\r\n * @param element Element\r\n */\r\n set: function (element) {\r\n // Destroy previous element if there was one before\r\n this.removeElement();\r\n // Set new element\r\n this._element = element;\r\n // Add element to group\r\n // Since we are adding Element to group, which is already in the\r\n // `.disposers` it will be removed automatically when Sprite is disposed\r\n // of\r\n this.group.add(element);\r\n if (element.node instanceof SVGPathElement) {\r\n this._isPath = true;\r\n }\r\n // This is needed if someone is setting element not in draw method but\r\n // from outside\r\n if (!this.invalid) {\r\n this.validate();\r\n }\r\n if (options.autoSetClassName) {\r\n this.setClassName();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"svgContainer\", {\r\n /**\r\n * HTML container (`<div>`) which is used to place chart's `<svg>` element\r\n * in.\r\n *\r\n * @return Container for chart elements\r\n */\r\n get: function () {\r\n if (this._svgContainer) {\r\n return this._svgContainer;\r\n }\r\n else if (this._parent) {\r\n return this._parent.svgContainer;\r\n }\r\n },\r\n /**\r\n * Sets HTML container to add SVG and other chart elements to.\r\n *\r\n * @param svgContainer Container for chart elements\r\n */\r\n set: function (svgContainer) {\r\n this._svgContainer = svgContainer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Measures main element.\r\n *\r\n * Saves measurements into private `_bbox` property.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.measureElement = function () {\r\n if (this.element) {\r\n if (this.definedBBox) {\r\n this._bbox = this.definedBBox;\r\n }\r\n else {\r\n var svgBBox = this.element.getBBox();\r\n this._bbox = { x: svgBBox.x, y: svgBBox.y, width: svgBBox.width, height: svgBBox.height };\r\n }\r\n }\r\n };\r\n /**\r\n * Positions element according its center settings.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.updateCenter = function () {\r\n if (this.element) {\r\n var prevElementTransform = this.element.transformString;\r\n var bbox = this.bbox;\r\n var ex = 0;\r\n var ey = 0;\r\n var elementX = bbox.x;\r\n var elementY = bbox.y;\r\n var elementWidth = bbox.width;\r\n var elementHeigth = bbox.height;\r\n var pixelPaddingLeft = this.pixelPaddingLeft;\r\n var pixelPaddingRight = this.pixelPaddingRight;\r\n var pixelPaddingTop = this.pixelPaddingTop;\r\n var pixelPaddingBottom = this.pixelPaddingBottom;\r\n // add padding to the measured size\r\n var measuredWidth = $math.max(elementWidth + pixelPaddingLeft + pixelPaddingRight, this.pixelWidth);\r\n var measuredHeight = $math.max(elementHeigth + pixelPaddingTop + pixelPaddingBottom, this.pixelHeight);\r\n // extremes\r\n var left = bbox.x;\r\n var right = bbox.x + measuredWidth;\r\n var top_1 = bbox.y;\r\n var bottom = bbox.y + measuredHeight;\r\n var horizontalCenter = this.horizontalCenter;\r\n var verticalCenter = this.verticalCenter;\r\n switch (horizontalCenter) {\r\n case \"none\":\r\n ex = elementX + pixelPaddingLeft;\r\n break;\r\n case \"left\":\r\n ex = pixelPaddingLeft;\r\n break;\r\n case \"middle\":\r\n ex = pixelPaddingLeft - (elementWidth + pixelPaddingRight + pixelPaddingLeft) / 2;\r\n break;\r\n case \"right\":\r\n ex = -pixelPaddingRight - elementWidth;\r\n break;\r\n }\r\n switch (verticalCenter) {\r\n case \"none\":\r\n ey = elementY + pixelPaddingTop;\r\n break;\r\n case \"top\":\r\n ey = pixelPaddingTop;\r\n break;\r\n case \"middle\":\r\n ey = pixelPaddingTop - (elementHeigth + pixelPaddingBottom + pixelPaddingTop) / 2;\r\n break;\r\n case \"bottom\":\r\n ey = -pixelPaddingBottom - elementHeigth;\r\n break;\r\n }\r\n this._measuredHeight = measuredHeight;\r\n this._measuredWidth = measuredWidth;\r\n var x = $math.round(ex - elementX, this._positionPrecision, true);\r\n var y = $math.round(ey - elementY, this._positionPrecision, true);\r\n this.ex = x - pixelPaddingLeft;\r\n this.ey = y - pixelPaddingTop;\r\n this.maxLeft = left + x - pixelPaddingLeft;\r\n this.maxRight = right + x - pixelPaddingLeft;\r\n this.maxTop = top_1 + y - pixelPaddingTop;\r\n this.maxBottom = bottom + y - pixelPaddingTop;\r\n if (this.pixelPerfect && options.pixelPerfectPrecision == 0) {\r\n x -= 0.5;\r\n y -= 0.5;\r\n }\r\n this.element.moveTo({ x: x, y: y });\r\n if (prevElementTransform != this.element.transformString) {\r\n this.dispatchImmediately(\"transformed\");\r\n }\r\n }\r\n };\r\n /**\r\n * Measures the whole element.\r\n *\r\n * Returns `true` if the size has changed from the last measurement.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Did the size changed from the last measurement?\r\n */\r\n Sprite.prototype.measure = function () {\r\n this.updateCenter();\r\n var measuredWidth = this._measuredWidth;\r\n var measuredHeight = this._measuredHeight;\r\n // extremes\r\n var left = this.maxLeft;\r\n var right = this.maxRight;\r\n var top = this.maxTop;\r\n var bottom = this.maxBottom;\r\n // non-parent wise size\r\n this._measuredWidthSelf = measuredWidth;\r\n this._measuredHeightSelf = measuredHeight;\r\n var positionPrecision = this._positionPrecision;\r\n this.maxLeftSelf = this.maxLeft;\r\n this.maxRightSelf = this.maxRight;\r\n this.maxTopSelf = this.maxTop;\r\n this.maxBottomSelf = this.maxBottom;\r\n // if a sprite is rotated or scaled, calculate measured size after transformations\r\n if (this.rotation !== 0 || this.scale !== 1 || this.nonScaling) {\r\n // not good to handleGlobalScale here.\r\n if (this.nonScalingStroke) {\r\n this.strokeWidth = this.strokeWidth;\r\n }\r\n var svg = this.paper.svg;\r\n var matrix = svg.createSVGMatrix();\r\n var rotation = this.rotation;\r\n var scale = this.scale;\r\n if (this.nonScaling) {\r\n scale = this.scale / this.globalScale;\r\n }\r\n matrix.a = $math.cos(rotation) * scale;\r\n matrix.c = -$math.sin(rotation) * scale;\r\n matrix.e = 0;\r\n matrix.b = $math.sin(rotation) * scale;\r\n matrix.d = $math.cos(rotation) * scale;\r\n matrix.f = 0;\r\n var p1 = svg.createSVGPoint();\r\n p1.x = left;\r\n p1.y = top;\r\n var p2 = svg.createSVGPoint();\r\n p2.x = right;\r\n p2.y = top;\r\n var p3 = svg.createSVGPoint();\r\n p3.x = right;\r\n p3.y = bottom;\r\n var p4 = svg.createSVGPoint();\r\n p4.x = left;\r\n p4.y = bottom;\r\n var pt1 = p1.matrixTransform(matrix);\r\n var pt2 = p2.matrixTransform(matrix);\r\n var pt3 = p3.matrixTransform(matrix);\r\n var pt4 = p4.matrixTransform(matrix);\r\n left = Math.min(pt1.x, pt2.x, pt3.x, pt4.x);\r\n right = Math.max(pt1.x, pt2.x, pt3.x, pt4.x);\r\n top = Math.min(pt1.y, pt2.y, pt3.y, pt4.y);\r\n bottom = Math.max(pt1.y, pt2.y, pt3.y, pt4.y);\r\n measuredWidth = right - left;\r\n measuredHeight = bottom - top;\r\n this.maxLeft = $math.round(left, positionPrecision, true);\r\n this.maxRight = $math.round(right, positionPrecision, true);\r\n this.maxTop = $math.round(top, positionPrecision, true);\r\n this.maxBottom = $math.round(bottom, positionPrecision, true);\r\n }\r\n this._measuredWidth = $math.round(measuredWidth, positionPrecision, true);\r\n this._measuredHeight = $math.round(measuredHeight, positionPrecision, true);\r\n // dispatch event\r\n if (this._measuredWidth != this._prevMeasuredWidth || this._measuredHeight != this._prevMeasuredHeight) {\r\n this._prevMeasuredHeight = this._measuredHeight;\r\n this._prevMeasuredWidth = this._measuredWidth;\r\n // TODO clear existing sizechanged dispatches ?\r\n this.dispatch(\"sizechanged\");\r\n if ((this.isHover || this.showTooltipOn == \"hit\" || this.showTooltipOn == \"always\") && this.tooltip && this.tooltip.visible && ($type.hasValue(this.tooltipText) || $type.hasValue(this.tooltipHTML))) {\r\n this.updateTooltipPosition();\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * Insert this element before sibling element.\r\n *\r\n * @param sprite Target element\r\n * @return This element\r\n */\r\n Sprite.prototype.insertBefore = function (sprite) {\r\n var parent = this._parent;\r\n if (parent) {\r\n var index = parent.children.indexOf(sprite);\r\n if (index !== -1) {\r\n parent.children.moveValue(this, index);\r\n parent.sortChildren();\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Insert this element after sibling element.\r\n *\r\n * @param sprite Target element\r\n * @return This element\r\n */\r\n Sprite.prototype.insertAfter = function (sprite) {\r\n var parent = this._parent;\r\n if (parent) {\r\n var index = parent.children.indexOf(sprite);\r\n if (index !== -1) {\r\n parent.children.moveValue(this, index + 1);\r\n parent.sortChildren();\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Removes the main SVG element.\r\n *\r\n * This does not destroy the whole Sprite element. To do that use\r\n * `dispose()` instead.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.removeElement = function () {\r\n // remove visual element\r\n if (this._element) {\r\n this.removeDispose(this._element);\r\n this._element = undefined;\r\n }\r\n };\r\n /**\r\n * Returns relative (percent) value of the X coordindate within this element.\r\n *\r\n * A relative value is a hundredth of a percent. So 100% would result in a 1\r\n * as relative value.\r\n *\r\n * @param value Absolute or relative X coordinate\r\n * @return Relative value\r\n */\r\n Sprite.prototype.getRelativeX = function (value) {\r\n if (value instanceof Percent) {\r\n return value.value;\r\n }\r\n else if (this._parent) {\r\n return value / this._parent.innerWidth;\r\n }\r\n return 0;\r\n };\r\n /**\r\n * Returns relative (percent) value of the Y coordindate within this element.\r\n *\r\n * A relative value is a hundredth of a percent. So 100% would result in a 1\r\n * as relative value.\r\n *\r\n * @param value Absolute or relative Y coordinate\r\n * @return Relative value\r\n */\r\n Sprite.prototype.getRelativeY = function (value) {\r\n if (value instanceof Percent) {\r\n return value.value;\r\n }\r\n else if (this._parent) {\r\n return value / this._parent.innerHeight;\r\n }\r\n return 0;\r\n };\r\n /**\r\n * Returns an X coordinate in pixel within the element.\r\n *\r\n * If number is passed in as parameter, the same number will be returned\r\n * back.\r\n *\r\n * If [[Percent]] is passed in, it will be recalculated to pixels.\r\n *\r\n * @param value Absolute or relative X coordinate\r\n * @return X coordinate in pixels\r\n */\r\n Sprite.prototype.getPixelX = function (value) {\r\n // we don't use $utils.valueToRelative as this would mean that we should access parent.innerWidth\r\n // all the time and this would result chain of the same actions and will slow down the system a lot\r\n var pixel = 0;\r\n if ($type.isNumber(value)) {\r\n pixel = value;\r\n }\r\n else if (value instanceof Percent) {\r\n var relative = value.value;\r\n if (this._parent) {\r\n pixel = $math.round(this._parent.innerWidth * relative, this._positionPrecision, true);\r\n }\r\n }\r\n return pixel;\r\n };\r\n /**\r\n * Returns an Y coordinate in pixel within the element.\r\n *\r\n * If number is passed in as parameter, the same number will be returned\r\n * back.\r\n *\r\n * If [[Percent]] is passed in, it will be recalculated to pixels.\r\n *\r\n * @param value Absolute or relative Y coordinate\r\n * @return Y coordinate in pixels\r\n */\r\n Sprite.prototype.getPixelY = function (value) {\r\n // we don't use $utils.valueToRelative as this would mean that we should access parent.innerWidth\r\n // all the time and this would result chain of the same actions and will slow down the system a lot\r\n var pixel = 0;\r\n if ($type.isNumber(value)) {\r\n pixel = value;\r\n }\r\n else if (value instanceof Percent) {\r\n var relative = value.value;\r\n if (this._parent) {\r\n pixel = $math.round(this._parent.innerHeight * relative, this._positionPrecision, true);\r\n }\r\n }\r\n return pixel;\r\n };\r\n /**\r\n * Moves the element to a specified coordinates.\r\n *\r\n * Using this method is preferred method of moving element, as it saves some\r\n * CPU processing power over setting `x` and `y` properties separately.\r\n *\r\n * The method respects element's center settings. The element will be\r\n * positioned so that `point` coordinates come in whatever \"center\" of the\r\n * element is, as set in `horizontalCenter` and `verticalCenter`.\r\n *\r\n * Besides moving the element, you can also at the same time scale and\r\n * rotate the element.\r\n *\r\n * @param point New coordinates\r\n * @param rotation New rotation\r\n * @param scale New Scale\r\n */\r\n Sprite.prototype.moveTo = function (point, rotation, scale, isDragged) {\r\n if (this.isDragged && !isDragged) {\r\n return;\r\n }\r\n if (point) {\r\n if ($type.isNumber(point.x)) {\r\n this.setPropertyValue(\"x\", $math.round(point.x, this._positionPrecision, true));\r\n }\r\n if ($type.isNumber(point.y)) {\r\n this.setPropertyValue(\"y\", $math.round(point.y, this._positionPrecision, true));\r\n }\r\n }\r\n if ($type.isNumber(rotation)) {\r\n this.rotation = rotation;\r\n }\r\n if ($type.isNumber(scale)) {\r\n this.scale = scale;\r\n }\r\n // must leave this\r\n this.invalidatePosition();\r\n };\r\n Object.defineProperty(Sprite.prototype, \"mask\", {\r\n /**\r\n * Returns [[Sprite]] element currently used as mask for this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return A [[Sprite]] to use as mask\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this._mask.get();\r\n }\r\n else {\r\n return this._adapterO.apply(\"mask\", this._mask.get());\r\n }\r\n },\r\n /**\r\n * Sets another [[Sprite]] element as this elements mask.\r\n *\r\n * @ignore Exclude from docs\r\n * @param mask A [[Sprite]] to use as mask\r\n */\r\n set: function (mask) {\r\n var _this = this;\r\n if (this._mask.get() !== mask) {\r\n // this is good\r\n if (mask) {\r\n this.createClipPath();\r\n if (!(mask instanceof Container)) {\r\n mask.isMeasured = false;\r\n if (mask.element) {\r\n this._clipElement = mask.element;\r\n }\r\n }\r\n else {\r\n this._clipElement = this.paper.add(\"rect\");\r\n }\r\n if (this._clipElement) {\r\n this._clipPath.add(this._clipElement);\r\n }\r\n this._mask.set(mask, new MultiDisposer([\r\n //mask.addEventListener(SpriteEvent.TRANSFORMED, this.applyMask, false, this);\r\n mask.events.on(\"maxsizechanged\", function () { if (_this.inited) {\r\n _this.applyMask();\r\n } }, undefined, false),\r\n mask.events.on(\"validated\", this.applyMask, this, false),\r\n mask.events.on(\"positionchanged\", this.applyMask, this, false)\r\n ]));\r\n this.applyMask();\r\n }\r\n else {\r\n this._mask.reset();\r\n this.group.removeAttr(\"clip-path\");\r\n this.removeClipPath();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"maskRectangle\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Mask Rectangle\r\n */\r\n get: function () {\r\n return this._maskRectangle;\r\n },\r\n // you can set IRectangle as a mask instead o a sprite. Note, the changes of the object won't be monitored\r\n /**\r\n * Instead of creating a [[Sprite]] for mask, you can just use a\r\n * [[Rectangle]] by setting this accessor.\r\n *\r\n * Please note that the element will not monitor any changes to the mask\r\n * rectangle.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rect Mask Rectangle\r\n */\r\n set: function (rect) {\r\n if (rect) {\r\n this.createClipPath();\r\n if (!this._clipElement) {\r\n this._clipElement = this.paper.add(\"rect\");\r\n this._clipPath.add(this._clipElement);\r\n }\r\n this._clipElement.attr({ \"width\": rect.width, \"height\": rect.height });\r\n }\r\n else {\r\n this.removeClipPath();\r\n this._clipElement = undefined;\r\n }\r\n this._maskRectangle = rect;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isMeasured\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Was element already measured?\r\n */\r\n get: function () {\r\n return this._isMeasured;\r\n },\r\n /**\r\n * Indicates if this element was already measured.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Was element already measured?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (!value) {\r\n this._measuredWidth = 0;\r\n this._measuredHeight = 0;\r\n //this._pixelHeight = 0;\r\n //this._pixelWidth = 0;\r\n }\r\n if (this._isMeasured != value) {\r\n this._isMeasured = value;\r\n this.invalidatePosition();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if the this element has any of its parts overlapping with another\r\n * element.\r\n *\r\n * @todo Description (review)\r\n * @param sprite Second element to test again\r\n * @return Overlapping?\r\n */\r\n Sprite.prototype.hitTest = function (sprite) {\r\n // validate, otherwise we will not know measuredWidth and measuredHeight\r\n if (this.invalid) {\r\n this.validate();\r\n }\r\n if (sprite.invalid) {\r\n sprite.validate();\r\n }\r\n var ax1 = this.pixelX + this.maxLeft;\r\n var ay1 = this.pixelY + this.maxTop;\r\n var ax2 = ax1 + this.maxRight;\r\n var ay2 = ay1 + this.maxBottom;\r\n var bx1 = sprite.pixelX + sprite.maxLeft;\r\n var by1 = sprite.pixelY + sprite.maxTop;\r\n var bx2 = bx1 + sprite.maxRight;\r\n var by2 = by1 + sprite.maxBottom;\r\n return !(bx1 > ax2 || bx2 < ax1 || by1 > ay2 || by2 < ay1);\r\n };\r\n Object.defineProperty(Sprite.prototype, \"inited\", {\r\n /**\r\n * ==========================================================================\r\n * STATE-RELATED\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns `true` if Sprite has already finished initializing.\r\n *\r\n * @return Initialized?\r\n */\r\n get: function () {\r\n return this._inited;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns `true` if Sprite has already finished initializing and is ready.\r\n *\r\n * If this object is a [[Container]] it will wait for all of its children\r\n * are ready before becoming ready itself and firing a `\"ready\"` event.\r\n *\r\n * @return is ready?\r\n */\r\n Sprite.prototype.isReady = function () {\r\n return this._ready;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"states\", {\r\n /**\r\n * Returns a collection of element's available [[SpriteState]] entries.\r\n *\r\n * @see {@link SpriteState}\r\n * @return States\r\n */\r\n get: function () {\r\n if (!this._states) {\r\n var state = new SpriteState();\r\n // works\r\n this._states = new DictionaryTemplate(state);\r\n // TODO what about removeKey ?\r\n this._disposers.push(this._states.events.on(\"insertKey\", this.processState, this, false));\r\n this._disposers.push(this._states.events.on(\"setKey\", this.processState, this, false));\r\n this._disposers.push(new DictionaryDisposer(this._states));\r\n this._disposers.push(state);\r\n }\r\n return this._states;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"hiddenState\", {\r\n /**\r\n * Returns a [[SpriteState]] object for \"hidden\" state.\r\n *\r\n * This is a shortcut to `this.states.getKey(\"hidden\")`.\r\n *\r\n * @return Hidden state\r\n */\r\n get: function () {\r\n if (!this.states.getKey(\"hidden\")) {\r\n var hiddenState = this.states.create(\"hidden\");\r\n hiddenState.properties.opacity = 0;\r\n hiddenState.properties.visible = false;\r\n }\r\n return this.states.getKey(\"hidden\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"defaultState\", {\r\n /**\r\n * Returns a [[SpriteState]] object for \"default\" state.\r\n *\r\n * This is a shortcut to `this.states.getKey(\"default\")`.\r\n *\r\n * @return Hidden state\r\n */\r\n get: function () {\r\n if (!this.states.getKey(\"default\")) {\r\n var defaultState = this.states.create(\"default\");\r\n defaultState.properties.opacity = 1;\r\n }\r\n return this.states.getKey(\"default\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if some key states are defined and updates Sprite properties\r\n * accordingly.\r\n *\r\n * For example if there's a state \"down\" defined for Sprite, we automatically\r\n * make it \"clickable\".\r\n *\r\n * @ignore Exclude from docs\r\n * @param event An event which caused state list update\r\n */\r\n Sprite.prototype.processState = function (event) {\r\n var state = event.newValue;\r\n state.sprite = this;\r\n state.name = event.key;\r\n if (this.states.hasKey(\"hover\") || (this.showTooltipOn == \"hover\" && ($type.hasValue(this.tooltipHTML) || $type.hasValue(this.tooltipText)))) {\r\n this.hoverable = true;\r\n }\r\n if (this.states.hasKey(\"down\") || (this.showTooltipOn == \"hover\" && ($type.hasValue(this.tooltipHTML) || $type.hasValue(this.tooltipText)))) {\r\n this.clickable = true;\r\n }\r\n if (this.states.hasKey(\"focus\")) {\r\n this.focusable = true;\r\n }\r\n // Propagate the new state to clones\r\n if (this.applyOnClones) {\r\n var clones = this.clones.values;\r\n var length_1 = clones.length;\r\n for (var i = 0; i < length_1; ++i) {\r\n var clone = clones[i];\r\n if (!clone.isDisposed()) {\r\n clone.states.setKey(state.name, state);\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"animations\", {\r\n /**\r\n * Returns a list elements's animations currently being played.\r\n *\r\n * If the list has not been initialized it is created.\r\n *\r\n * @return List of animations\r\n */\r\n get: function () {\r\n if (!this._animations) {\r\n this._animations = [];\r\n this._disposers.push(new AnimationDisposer(this._animations));\r\n }\r\n return this._animations;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts element's local coordinates to the coordinates within the main\r\n * chart container.\r\n *\r\n * @param point Local point\r\n * @return Global point\r\n */\r\n Sprite.prototype.getSvgPoint = function (point) {\r\n try {\r\n // Calculate SVG point\r\n var bbox = this.htmlContainer.getBoundingClientRect();\r\n return {\r\n \"x\": point.x - bbox.left,\r\n \"y\": point.y - bbox.top\r\n };\r\n }\r\n catch (e) {\r\n return point;\r\n }\r\n };\r\n /**\r\n * Creates and starts an [[Animation]] with given `animationOptions`.\r\n *\r\n * @see {@link Animation} for additional information about available options\r\n * @param animationOptions Animation options\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Animation instance\r\n */\r\n Sprite.prototype.animate = function (animationOptions, duration, easing) {\r\n return new Animation(this, animationOptions, duration, easing).start();\r\n };\r\n /**\r\n * Applies a [[SpriteState]] on this element.\r\n *\r\n * The first parameter can either be a name state or a [[SpriteState]]\r\n * instance.\r\n *\r\n * When run, this method will apply SVG properties defined in a\r\n * [[SpriteState]], but only those that are relevant to this particular\r\n * element, i.e. are in the `properties` array.\r\n *\r\n * @see {@link SpriteState}\r\n * @param value A state - name key or instance\r\n * @param transitionDuration Duration of the transition between current and new state\r\n * @param easing An easing function\r\n */\r\n Sprite.prototype.setState = function (value, transitionDuration, easing) {\r\n var state;\r\n if (value instanceof SpriteState) {\r\n this.states.setKey(value.name, value);\r\n state = value;\r\n }\r\n else {\r\n state = this.states.getKey(value);\r\n if (!state) {\r\n return;\r\n }\r\n }\r\n // stop previous transition\r\n // not good - foe expample, we are animating to some \"active\" state and in them middle \"hover\" state happens. then \"active\" stat won't be applied\r\n //if (this._transition) {\r\n //this._transition.stop();\r\n //}\r\n if (state.name == \"hover\") {\r\n if (this.isHidden) {\r\n return;\r\n }\r\n this.isHover = true;\r\n }\r\n if (state.name == \"hidden\") {\r\n this.isHiding = true;\r\n }\r\n else {\r\n if (!this.visible) {\r\n this.setVisibility(state.properties.visible || this.defaultState.properties.visible);\r\n }\r\n }\r\n if (state.name == \"active\") {\r\n this.isActive = true;\r\n }\r\n // we do not set isActive = false here if it's not active, but container does that if setStateOnChildren = true\r\n if (!$type.isNumber(transitionDuration)) {\r\n transitionDuration = state.transitionDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = state.transitionEasing;\r\n }\r\n return this.transitTo(state, transitionDuration, easing);\r\n };\r\n /**\r\n * Applies proper state based on the condition of the element. A condition is\r\n * deducted in this order:\r\n * * \"hover\" if Sprite has currently any pointers over it\r\n * * \"down\" if Sprite has any pointers (touch or mouse) currently pressed over it\r\n * * \"focus\" if Sprite has currently got focus (accessibility)\r\n * * \"hidden\" if Sprite is currently hidden\r\n *\r\n * Returns an [[Animation]] object, which is handling gradual transition from\r\n * current values of properties, to the new target state(s).\r\n *\r\n * @param duration Duration for the animation (ms)\r\n * @return [[Animation]] object which is handling the transition\r\n */\r\n Sprite.prototype.applyCurrentState = function (duration) {\r\n //if (!this.isHidden) { // this was done for hover state not to take effect if \"hidden\" is actually visible, need to think about it.\r\n var animation = this.setState(this.defaultState, duration);\r\n if (this.isHover) {\r\n animation = this.setState(\"hover\", duration);\r\n }\r\n if (this.isDown && this.interactions.downPointers.length) {\r\n animation = this.setState(\"down\", duration);\r\n }\r\n this.isFocused = this.isFocused;\r\n if (this.isActive) {\r\n animation = this.setState(\"active\", duration);\r\n if (this.isHover && this.states.hasKey(\"hoverActive\")) {\r\n animation = this.setState(\"hoverActive\", duration);\r\n }\r\n }\r\n return animation;\r\n //}\r\n };\r\n /**\r\n * Starts an [[Animation]] of the properties to specific values as they are\r\n * set in `state`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param state Target State\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Transition Animation\r\n */\r\n Sprite.prototype.transitTo = function (state, duration, easing) {\r\n var _this = this;\r\n // Init\r\n var options = [], propValues = state.allValues, transition;\r\n // todo: do this for numeric/color properties only?\r\n // @todo use state.getPropertyValue instead\r\n $object.each(propValues, function (propertyName, finalValue) {\r\n var currentValue = _this[propertyName];\r\n // save current value to default state. this solves a big problem where values must be set both on sprite and default state\r\n if (finalValue != currentValue && _this.defaultState.properties[propertyName] == undefined) {\r\n _this.defaultState.properties[propertyName] = currentValue;\r\n }\r\n //if (finalValue != currentValue && $type.hasValue(finalValue)) {\r\n if (finalValue != \"__unset\") {\r\n var option = { from: currentValue, to: finalValue, property: propertyName };\r\n options.push(option);\r\n }\r\n });\r\n if (options.length > 0) {\r\n transition = this.animate(options, duration, easing);\r\n if (transition && !transition.isFinished()) {\r\n // TODO should this use events.once ?\r\n // TODO push onto _disposers array ?\r\n this._disposers.push(transition.events.on(\"animationended\", function () {\r\n _this.dispatchImmediately(\"transitionended\");\r\n }));\r\n }\r\n else {\r\n this.dispatchImmediately(\"transitionended\");\r\n }\r\n }\r\n // apply filters if set\r\n if (state.filters.length > 0) {\r\n var newFilters_1 = [];\r\n // check for the same filters\r\n $iter.each(state.filters.iterator(), function (stateFilter) {\r\n var newFilter = stateFilter.clone();\r\n newFilters_1.push(newFilter);\r\n var animationOptions = [];\r\n $iter.each(_this.filters.iterator(), function (currentFilter) {\r\n // if we have the same filters\r\n if (currentFilter.className == newFilter.className) {\r\n if (!$iter.contains(_this.defaultState.filters.iterator(), function (x) { return x.className === newFilter.className; })) {\r\n _this.defaultState.filters.push(currentFilter);\r\n }\r\n $object.each(newFilter.properties, function (propertyName, newValue) {\r\n var currentValue = currentFilter.properties[propertyName];\r\n // if values are not the same, push to animation options array\r\n if (currentValue != newValue) {\r\n animationOptions.push({ property: propertyName, from: currentValue, to: newValue });\r\n }\r\n });\r\n }\r\n });\r\n // animate to new value\r\n newFilter.animate(animationOptions, duration, easing);\r\n });\r\n this.filters.clear();\r\n this.filters.pushAll(newFilters_1);\r\n }\r\n return transition;\r\n };\r\n /**\r\n * Returns `true` if Sprite is currently transiting from one state/value to\r\n * another.\r\n *\r\n * @return Is in transition?\r\n */\r\n Sprite.prototype.isInTransition = function () {\r\n return this.animations.length > 0;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"isHover\", {\r\n /**\r\n * @return Is hovered?\r\n */\r\n get: function () {\r\n if (this.isInteractive()) {\r\n return this.interactions.isHover;\r\n }\r\n return false;\r\n },\r\n /**\r\n * Indicates if this element has a mouse pointer currently hovering\r\n * over it, or if it has any touch pointers pressed on it.\r\n *\r\n * You can force element to be \"hovered\" manually, by setting this property\r\n * to `true`.\r\n *\r\n * @param value Is hovered?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (value !== this.isHover) {\r\n if (this.isInteractive()) {\r\n this.interactions.isHover = value;\r\n if (value) {\r\n this.handleOver();\r\n }\r\n else {\r\n this.interactions.isRealHover = false;\r\n this.handleOut();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isDragged\", {\r\n /**\r\n * Returns indicator if this element is being dragged at the moment.\r\n *\r\n * @return Is dragged?\r\n */\r\n get: function () {\r\n return this._isDragged;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isResized\", {\r\n /**\r\n * Returns indicator if this element is being resized at the moment.\r\n *\r\n * @return Is resized?\r\n */\r\n get: function () {\r\n return this._isResized;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isDown\", {\r\n /**\r\n * @return Is down?\r\n */\r\n get: function () {\r\n if (this.isInteractive()) {\r\n return this.interactions.isDown;\r\n }\r\n return false;\r\n },\r\n /**\r\n * Indicates if this element has any pointers (mouse or touch) pressing down\r\n * on it.\r\n *\r\n * @param value Is down?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.isInteractive() && this.isDown != value) {\r\n this.interactions.isDown = value;\r\n if (value) {\r\n this.handleDown();\r\n }\r\n else {\r\n this.handleUp();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isFocused\", {\r\n /**\r\n * @return Is focused?\r\n */\r\n get: function () {\r\n if (this.isInteractive()) {\r\n return this.interactions.isFocused;\r\n }\r\n return false;\r\n },\r\n /**\r\n * Indicates if this element is focused (possibly by tab navigation).\r\n *\r\n * @param value Is focused?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.focusable && this.isFocused != value) {\r\n if (this.isInteractive()) {\r\n this.interactions.isFocused = value;\r\n if (value === true) {\r\n this.handleFocus();\r\n }\r\n else {\r\n this.handleBlur();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isActive\", {\r\n /**\r\n * @return Is active?\r\n */\r\n get: function () {\r\n return this._isActive;\r\n },\r\n /**\r\n * Indicates if this element is currently active (toggled on) or not\r\n * (toggled off).\r\n *\r\n * @param value Is active?\r\n */\r\n set: function (value) {\r\n this.setActive(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sprite.prototype.setActive = function (value) {\r\n value = $type.toBoolean(value);\r\n if (this._isActive !== value) {\r\n this._isActive = value;\r\n if (value && this.states.hasKey(\"active\")) {\r\n this.setState(\"active\");\r\n if (this.isHover && this.states.hasKey(\"hoverActive\")) {\r\n this.setState(\"hoverActive\");\r\n }\r\n }\r\n else {\r\n this.applyCurrentState();\r\n }\r\n this.dispatchImmediately(\"toggled\");\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"disabled\", {\r\n /**\r\n * @return Disabled?\r\n */\r\n get: function () {\r\n //if(this._internalDisabled){\r\n //\treturn true;\r\n //}\r\n var current = this.getPropertyValue(\"disabled\");\r\n if ($type.hasValue(current)) {\r\n return current;\r\n }\r\n else {\r\n if (this.virtualParent) {\r\n return this.virtualParent.disabled;\r\n }\r\n if (this._parent) {\r\n return this._parent.disabled;\r\n }\r\n }\r\n return false;\r\n },\r\n /**\r\n * Controls if element is disabled.\r\n *\r\n * A disabled element is hidden, and is removed from any processing, layout\r\n * calculations, and generally treated as if it does not exist.\r\n *\r\n * The element itself is not destroyed, though. Setting this back to `false`,\r\n * will \"resurrect\" the element.\r\n *\r\n * @param value Disabled?\r\n */\r\n set: function (value) {\r\n this.setDisabled(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sprite.prototype.setDisabled = function (value) {\r\n value = $type.toBoolean(value);\r\n var current = this.getPropertyValue(\"disabled\");\r\n if (current != value) {\r\n this.setPropertyValue(\"disabled\", value, true);\r\n if (value) {\r\n this.parent = this._parent;\r\n this.removeFromInvalids();\r\n this.group.attr({ \"display\": \"none\" });\r\n this.dispatch(\"disabled\");\r\n }\r\n else {\r\n if (this._parent) {\r\n var group = this._parent.element;\r\n if (!group.hasChild(this.group)) {\r\n group.add(this.group);\r\n }\r\n }\r\n if (this instanceof Container) {\r\n this.deepInvalidate();\r\n if (this._background) {\r\n this._background.invalidate();\r\n }\r\n }\r\n else {\r\n this.invalidate();\r\n }\r\n if (!this.__disabled) {\r\n this.removeSVGAttribute(\"display\");\r\n }\r\n this.dispatch(\"enabled\");\r\n }\r\n this.dispatch(\"transformed\");\r\n system.requestFrame();\r\n return true;\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"__disabled\", {\r\n /**\r\n * @ignore\r\n * @return Disabled?\r\n */\r\n get: function () {\r\n return this._internalDisabled;\r\n },\r\n /**\r\n * Internal disable method.\r\n *\r\n * Do not use it for disabling elements. Use `disabled` accessor instead.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Disabled?\r\n */\r\n set: function (value) {\r\n if (this._internalDisabled != value) {\r\n this._internalDisabled = value;\r\n this._updateDisabled = true;\r\n this.invalidatePosition(); // better use this instead of invalidate()\r\n if (!value) {\r\n this.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"numberFormatter\", {\r\n /**\r\n * @return A [[NumberFormatter]] instance to be used\r\n */\r\n get: function () {\r\n if (this._numberFormatter) {\r\n return this._numberFormatter;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.numberFormatter;\r\n }\r\n else if (this._parent) {\r\n return this._parent.numberFormatter;\r\n }\r\n this._numberFormatter = new NumberFormatter();\r\n this._numberFormatter.language = this.language;\r\n return this.numberFormatter;\r\n },\r\n /**\r\n * ==========================================================================\r\n * FORMATTERS AND OTHER EXTERNAL HELPERS\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * A [[NumberFormatter]] instance.\r\n *\r\n * This is used to format numbers.\r\n *\r\n * ```TypeScript\r\n * chart.numberFormatter.numberFormat = \"#,###.#####\";\r\n * ```\r\n * ```JavaScript\r\n * chart.numberFormatter.numberFormat = \"#,###.#####\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"numberFormatter\": {\r\n * \"numberFormat\": \"#,###.#####\"\r\n * }\r\n * }\r\n * ```\r\n *\r\n * You can set a separate instance of formatter for each\r\n * individual element. However that would be unnecessary overhead as\r\n * all elements would automatically inherit formatter from their parents,\r\n * all the way up to the chart itself.\r\n *\r\n *\r\n * @see {@link NumberFormatter} for more info on formatting numbers\r\n * @param value An instance of NumberFormatter\r\n */\r\n set: function (value) {\r\n this._numberFormatter = value;\r\n this._numberFormatter.language = this.language;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"dateFormatter\", {\r\n /**\r\n * @return An instance of DateFormatter\r\n */\r\n get: function () {\r\n if (this._dateFormatter) {\r\n return this._dateFormatter;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.dateFormatter;\r\n }\r\n else if (this._parent) {\r\n return this._parent.dateFormatter;\r\n }\r\n this._dateFormatter = new DateFormatter();\r\n this._dateFormatter.language = this.language;\r\n return this.dateFormatter;\r\n },\r\n /**\r\n * A [[DateFormatter]] instance.\r\n *\r\n * This is used to format dates, e.g. on a date axes, balloons, etc.\r\n *\r\n * ```TypeScript\r\n * chart.dateFormatter.dateFormat = \"yyyy-MM-dd\";\r\n * ```\r\n * ```JavaScript\r\n * chart.dateFormatter.dateFormat = \"yyyy-MM-dd\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dateFormatter\": {\r\n * \"dateFormat\": \"yyyy-MM-dd\"\r\n * }\r\n * }\r\n * ```\r\n *\r\n * You can set a separate instance of formatter for each\r\n * individual element. However that would be unnecessary overhead as\r\n * all elements would automatically inherit formatter from their parents,\r\n * all the way up to the chart itself.\r\n *\r\n * @see {@link DateFormatter} for more info on dates formatting\r\n * @param value An instance of DateFormatter\r\n */\r\n set: function (value) {\r\n this._dateFormatter = value;\r\n this._dateFormatter.language = this.language;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"durationFormatter\", {\r\n /**\r\n * @return An instance of DurationFormatter\r\n */\r\n get: function () {\r\n if (this._durationFormatter) {\r\n return this._durationFormatter;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.durationFormatter;\r\n }\r\n else if (this._parent) {\r\n return this._parent.durationFormatter;\r\n }\r\n this._durationFormatter = new DurationFormatter();\r\n this._durationFormatter.language = this.language;\r\n return this.durationFormatter;\r\n },\r\n /**\r\n * A [[DurationFormatter]] instance.\r\n *\r\n * This is used to format numbers as durations, e.g. on a value axes.\r\n *\r\n * You can set a separate instance of formatter for each\r\n * individual element. However that would be unnecessary overhead as\r\n * all elements would automatically inherit formatter from their parents,\r\n * all the way up to the chart itself.\r\n *\r\n * @see {@link DurationFormatter} for more info on durations\r\n * @param value An instance of DurationFormatter\r\n */\r\n set: function (value) {\r\n this._durationFormatter = value;\r\n this._durationFormatter.language = this.language;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"language\", {\r\n /**\r\n * @return An instance of Language\r\n */\r\n get: function () {\r\n var language = this._language.get();\r\n if (language) {\r\n return language;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.language;\r\n }\r\n else if (this._parent) {\r\n return this._parent.language;\r\n }\r\n language = new Language();\r\n this.language = language;\r\n return language;\r\n },\r\n /**\r\n * A [[Language]] instance to use for translations.\r\n *\r\n * Normally it is enough to set language for the top-most element - chart.\r\n *\r\n * All other element child elements will automatically re-use that language\r\n * object.\r\n *\r\n * @param value An instance of Language\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this._language.get() !== value) {\r\n this._language.set(value, value.events.on(\"localechanged\", function (ev) {\r\n if (_this._numberFormatter) {\r\n _this._numberFormatter.language = _this.language;\r\n }\r\n if (_this._dateFormatter) {\r\n _this._dateFormatter.language = _this.language;\r\n }\r\n if (_this._durationFormatter) {\r\n _this._durationFormatter.language = _this.language;\r\n }\r\n if (_this._exporting.get()) {\r\n var exporting = _this._exporting.get();\r\n exporting.numberFormatter.language = _this.language;\r\n exporting.dateFormatter.language = _this.language;\r\n exporting.durationFormatter.language = _this.language;\r\n exporting.language = _this.language;\r\n }\r\n if (_this instanceof Container) {\r\n _this.deepInvalidate();\r\n }\r\n }));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * ==========================================================================\r\n * DATA-RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Parses the string for meta tags `{tag}` and replaces them with a real\r\n * value. Supports straight up tags referring to the field in data, i.e.\r\n * `{value}` or tags with additional formatting info. E.g.:\r\n *\r\n * ```Text\r\n * {myfield.formatDate(\"yyyy-MM-dd\")}\r\n * {myfield.formatDate()}\r\n * {myfield.formatNumber(\"#,####.00\")}\r\n * {myfield.formatNumber()}\r\n * {myField.formatDuration(\"mm:ss\")}\r\n * ```\r\n *\r\n * Etc.\r\n *\r\n * This method Will automatically detect and use proper formatter for the\r\n * value.\r\n *\r\n * The source value will be looked up in various places: (in order)\r\n * * Sprite's own `dataItem`\r\n * * Sprite's properties\r\n * * Parent's `dataItem`\r\n * * Parent's properties\r\n *\r\n * @ignore Exclude from docs\r\n * @param string A string to format\r\n * @param dataItem DataItem\r\n * @return Formatted string\r\n */\r\n Sprite.prototype.populateString = function (string, dataItem) {\r\n if ($type.hasValue(string)) {\r\n string = $type.castString(string);\r\n string = getTextFormatter().escape(string);\r\n var tags = string.match(/\\{([^}]+)\\}/g);\r\n var i = void 0;\r\n if (tags) {\r\n for (i = 0; i < tags.length; i++) {\r\n var tag = tags[i].replace(/\\{([^}]+)\\}/, \"$1\");\r\n var value = this.getTagValue(tag, \"\", dataItem);\r\n if (!$type.hasValue(value)) {\r\n value = \"\";\r\n }\r\n string = string.split(tags[i]).join(value);\r\n }\r\n }\r\n string = getTextFormatter().unescape(string);\r\n }\r\n else {\r\n string = \"\";\r\n }\r\n if (!this._adapterO) {\r\n return string;\r\n }\r\n else {\r\n return this._adapterO.apply(\"populateString\", string);\r\n }\r\n };\r\n /**\r\n * Gets the value from data item and formats it according to specified format.\r\n *\r\n * If `format` is specified, it will use its contents to choose formatter for\r\n * the value. Otherwise it will select formatter accordingly to actual value\r\n * type.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Ability to force certain formatter on known numeric and date values\r\n * @see {@link NumberFormatter}\r\n * @see {@link DateFormatter}\r\n * @see {@link DurationFormatter}\r\n * @param tagName Tag name to replace\r\n * @param format Format to use\r\n * @param dataItem DataItem\r\n * @return Formatted value\r\n */\r\n Sprite.prototype.getTagValue = function (tagName, format, dataItem) {\r\n var value;\r\n if (!$type.hasValue(dataItem)) {\r\n dataItem = this.dataItem;\r\n }\r\n // Parse parts\r\n var parts = [];\r\n var reg = /([^.]+)\\(([^)]*)\\)|([^.]+)/g;\r\n ;\r\n var matches;\r\n while (true) {\r\n matches = reg.exec(tagName);\r\n if (matches === null) {\r\n break;\r\n }\r\n if (matches[3]) {\r\n // Simple property\r\n parts.push({\r\n prop: matches[3]\r\n });\r\n }\r\n else {\r\n // Method\r\n // Parse parameters\r\n var params = [];\r\n if ($utils.trim(matches[2]) != \"\") {\r\n var reg2 = /'([^']*)'|\"([^\"]*)\"|([0-9\\-]+)/g;\r\n var matches2 = void 0;\r\n while (true) {\r\n matches2 = reg2.exec(matches[2]);\r\n if (matches2 === null) {\r\n break;\r\n }\r\n params.push(matches2[1] || matches2[2] || matches2[3]);\r\n }\r\n }\r\n parts.push({\r\n method: matches[1],\r\n params: params\r\n });\r\n }\r\n }\r\n // Check if we can retrieve the value from data item\r\n if (dataItem) {\r\n // Check values\r\n value = this.getTagValueFromObject(parts, dataItem.values);\r\n // Check properties\r\n if (!$type.hasValue(value) || $type.isObject(value)) { // isObject helps to solve problem with date axis, as for example dateX will get dateX from values object and won't get to the dateX date.\r\n value = this.getTagValueFromObject(parts, dataItem);\r\n }\r\n // Check data context\r\n var dataContext = dataItem.dataContext;\r\n if (!$type.hasValue(value) && dataContext) {\r\n value = this.getTagValueFromObject(parts, dataItem.dataContext);\r\n // Maybe it's a literal dot-separated name of the key in dataContext?\r\n if (!$type.hasValue(value)) {\r\n value = this.getTagValueFromObject([{\r\n prop: tagName\r\n }], dataContext);\r\n }\r\n // scond data context level sometimes exist (tree map)\r\n if (!$type.hasValue(value) && dataContext.dataContext) {\r\n value = this.getTagValueFromObject(parts, dataContext.dataContext);\r\n }\r\n }\r\n // Check component's data item\r\n if (!$type.hasValue(value) && dataItem.component && dataItem.component.dataItem !== dataItem) {\r\n value = dataItem.component.getTagValue(tagName, format);\r\n }\r\n }\r\n // Check sprite's properties\r\n if (!$type.hasValue(value)) {\r\n value = this.getTagValueFromObject(parts, this.populateStringFrom || this);\r\n }\r\n // Finally, check the parent\r\n if (!$type.hasValue(value) && this._parent) {\r\n value = this._parent.getTagValue(tagName, format);\r\n }\r\n return value;\r\n };\r\n /**\r\n * Tries to retrieve values from properties of any object, then applies\r\n * proper formatting to it.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (improve)\r\n * @param parts Properties ant methods to access\r\n * @param object Source object\r\n * @param format A specific format to apply\r\n * @return Formatted value\r\n */\r\n Sprite.prototype.getTagValueFromObject = function (parts, object, format) {\r\n var current = object;\r\n var formatApplied = false;\r\n for (var i = 0, len = parts.length; i < len; i++) {\r\n var part = parts[i];\r\n if (part.prop) {\r\n // Regular property\r\n current = current[part.prop];\r\n if (!$type.hasValue(current)) {\r\n // Not set, return undefined\r\n return;\r\n }\r\n }\r\n else {\r\n // Method\r\n switch (part.method) {\r\n case \"formatNumber\":\r\n var numberValue = $utils.anyToNumber(current);\r\n if ($type.hasValue(numberValue)) {\r\n current = this.numberFormatter.format(numberValue, format || part.params[0] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"formatDate\":\r\n var dateValue = void 0;\r\n if ($type.isString(current)) {\r\n dateValue = this.dateFormatter.parse(current);\r\n }\r\n else {\r\n dateValue = $utils.anyToDate(current);\r\n }\r\n if (!$type.isDate(dateValue) || $type.isNaN(dateValue.getTime())) {\r\n // Was not able to get date out of value, quitting and letting\r\n // calling method try another value\r\n return;\r\n }\r\n if ($type.hasValue(dateValue)) {\r\n current = this.dateFormatter.format(dateValue, format || part.params[0] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"formatDuration\":\r\n var durationValue = $utils.anyToNumber(current);\r\n if ($type.hasValue(durationValue)) {\r\n current = this.durationFormatter.format(durationValue, format || part.params[0] || undefined, part.params[1] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"urlEncode\":\r\n case \"encodeURIComponent\":\r\n current = encodeURIComponent(current);\r\n break;\r\n default:\r\n if (current[part.method]) {\r\n current[part.method].apply(this, part.params);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n // Apply default format if it wasn't applied explicitly\r\n if (!formatApplied) {\r\n var formatParts = [{\r\n method: \"\",\r\n params: format\r\n }];\r\n if (!$type.hasValue(format)) {\r\n // Format is not set\r\n // Determine from the type of the value\r\n if ($type.isNumber(current)) {\r\n formatParts[0].method = \"formatNumber\";\r\n formatParts[0].params = \"\";\r\n }\r\n else if ($type.isDate(current)) {\r\n formatParts[0].method = \"formatDate\";\r\n formatParts[0].params = \"\";\r\n }\r\n }\r\n else {\r\n // Format set\r\n // Try to determine formatter based on the format\r\n var formatterType = $utils.getFormat(format);\r\n // format\r\n if (formatterType === $strings.NUMBER) {\r\n formatParts[0].method = \"formatNumber\";\r\n }\r\n else if (formatterType === $strings.DATE) {\r\n formatParts[0].method = \"formatDate\";\r\n }\r\n else if (formatterType === $strings.DURATION) {\r\n formatParts[0].method = \"formatDuration\";\r\n }\r\n }\r\n // Apply format\r\n if (formatParts[0].method) {\r\n current = this.getTagValueFromObject(formatParts, current);\r\n }\r\n }\r\n return current;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"dataItem\", {\r\n /**\r\n * @return [[DataItem]]\r\n */\r\n get: function () {\r\n if (!this._dataItem) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.dataItem;\r\n }\r\n if (this._parent) {\r\n return this._parent.dataItem;\r\n }\r\n }\r\n return this._dataItem;\r\n },\r\n /**\r\n * A [[DataItem]] to use as element's data source.\r\n *\r\n * @todo Review type\r\n * @param dataItem DataItem\r\n */\r\n set: function (dataItem) {\r\n //an not use this[\"_dataItem\"] here, as we return parent data item if this sprite doesn't have one.\r\n // @todo:think about it\r\n this.setDataItem(dataItem);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets currently used [[DataItem]].\r\n *\r\n * If the element has also `configField` set, it will also look for any\r\n * config in DataItem's data context to apply to this element.\r\n *\r\n * @param dataItem DataItem\r\n */\r\n Sprite.prototype.setDataItem = function (dataItem) {\r\n var _this = this;\r\n if (this._dataItem != dataItem) {\r\n this._dataItem = dataItem;\r\n if (dataItem) {\r\n if (this.configField) {\r\n var dataContext_1 = dataItem.dataContext;\r\n if (dataContext_1) {\r\n this.config = dataContext_1[this.configField];\r\n if (!this.config && dataContext_1.dataContext) {\r\n this.config = dataContext_1.dataContext[this.configField];\r\n }\r\n }\r\n }\r\n var dataContext_2 = dataItem.dataContext;\r\n if (dataContext_2) {\r\n var dataContext2_1 = dataContext_2.dataContext;\r\n $object.each(this.propertyFields, function (propertyName, fieldValue) {\r\n if ($type.hasValue(dataContext_2[fieldValue])) {\r\n var anyThis = _this;\r\n anyThis[propertyName] = dataContext_2[fieldValue];\r\n }\r\n else {\r\n if (dataContext2_1) {\r\n var value = dataContext2_1[fieldValue];\r\n if ($type.hasValue(value)) {\r\n var anyThis = _this;\r\n anyThis[propertyName] = value;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n this.invalidate();\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * PROPERTY UTILITIES\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns element's property value.\r\n *\r\n * Will check if there are any bindings with [[DataItem]].\r\n *\r\n * Will also apply any adapters bound to `propertyName`.\r\n *\r\n * @param propertyName Property name\r\n * @return Property value\r\n */\r\n Sprite.prototype.getPropertyValue = function (propertyName) {\r\n var propValue = this.properties[propertyName];\r\n // Apply adapter\r\n if (!this._isTemplate) {\r\n if (this._adapterO) {\r\n propValue = this._adapterO.apply(propertyName, propValue);\r\n }\r\n propValue = globalAdapter.applyAll(this, propertyName, propValue);\r\n }\r\n return propValue;\r\n };\r\n Sprite.prototype.setColorProperty = function (property, value, invalidate) {\r\n var currentValue = this.properties[property];\r\n if (value instanceof Color && currentValue instanceof Color && value.toString() == currentValue.toString()) {\r\n return false;\r\n }\r\n else {\r\n return this.setPropertyValue(property, value, invalidate);\r\n }\r\n };\r\n Sprite.prototype.setPercentProperty = function (property, value, invalidate, transform, precision, floor) {\r\n value = $type.toNumberOrPercent(value);\r\n if ($type.isNumber(value)) {\r\n if ($type.isNumber(precision)) {\r\n value = $math.round(value, precision, floor);\r\n }\r\n return this.setPropertyValue(property, value, invalidate, transform);\r\n }\r\n else {\r\n var currentValue = this.properties[property];\r\n if (value instanceof Percent && currentValue instanceof Percent && value.value == currentValue.value) {\r\n return false;\r\n }\r\n else {\r\n return this.setPropertyValue(property, value, invalidate, transform);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets elements's property value. Will also propagate the same property value\r\n * on all element's clones.\r\n *\r\n * @param property Property\r\n * @param value Value\r\n * @param invalidate Should the sprite be invalidated, cause it's re-rendering\r\n * @param transform Re-apply positioning of the element\r\n * @return Did the value change? It will return `true` if the new value and the old value of the property are not the same\r\n * @todo Review propagation to clones. Right now we simply check if clone is disposed before setting the same property on it. It's better to remove from clone list altogether.\r\n */\r\n Sprite.prototype.setPropertyValue = function (property, value, invalidate, transform) {\r\n if (this.properties[property] !== value && !this.isDisposed()) {\r\n this.properties[property] = value;\r\n if (this.events.isEnabled(\"propertychanged\")) {\r\n var event_1 = {\r\n type: \"propertychanged\",\r\n target: this,\r\n property: property\r\n };\r\n this.events.dispatchImmediately(\"propertychanged\", event_1);\r\n }\r\n if (invalidate) {\r\n this.invalidate();\r\n }\r\n if (transform) {\r\n this.invalidatePosition();\r\n }\r\n if (this.applyOnClones) {\r\n var clones = this.clones.values;\r\n var length_2 = clones.length;\r\n for (var i = 0; i < length_2; ++i) {\r\n var clone = clones[i];\r\n if (!clone.isDisposed()) {\r\n //(<Sprite>clone).setPropertyValue(<any>property, value, invalidate, transform);\r\n clone[property] = value;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n Sprite.prototype.bind = function (property, source, bindToProperty, modifier) {\r\n var _this = this;\r\n if (bindToProperty === void 0) { bindToProperty = property; }\r\n if ($type.hasValue(this._bindings[property])) {\r\n this._bindings[property].dispose();\r\n }\r\n // set current value\r\n this[property] = source[bindToProperty];\r\n //source.addEventListener(AMEvent.PROPERTY_CHANGED, this.handleBindings, false, this);\r\n this._bindings[property] = source.events.on(\"propertychanged\", function (event) {\r\n if (event.property === bindToProperty) {\r\n var value = source[bindToProperty];\r\n if (modifier) {\r\n value = modifier(value);\r\n }\r\n // TODO clonesById\r\n _this[property] = value;\r\n }\r\n });\r\n };\r\n /**\r\n * Sets up and obeserver function to monitor changes in particular property\r\n * or properties.\r\n *\r\n * @ignore Exclude from docs\r\n * @param property Element's property name\r\n * @param listener Handler function\r\n * @param context Context for handler function\r\n * @returns Event Disposer\r\n */\r\n Sprite.prototype.observe = function (property, listener, context, shouldClone) {\r\n var _this = this;\r\n return new MultiDisposer($array.map($array.toArray(property), function (prop) {\r\n return _this.events.on(\"propertychanged\", function (e) {\r\n if (e.property === prop) {\r\n listener.call(context, e);\r\n }\r\n }, context, shouldClone);\r\n }));\r\n };\r\n /**\r\n * ==========================================================================\r\n * ACCESSIBILITY-RELATED PROPERTIES\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Applies accessibility to the SVG element.\r\n *\r\n * Adds `<title>` and `<description>` elements as well as `aria-labelledby`\r\n * and `role` properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.applyAccessibility = function () {\r\n // Check if we need to add label and description\r\n var title = this.readerTitle, description = this.readerDescription, role = this.role, hidden = this.readerHidden, checked = this.readerChecked, controls = this.readerControls, live = this.readerLive, orientation = this.readerOrientation, valueNow = this.readerValueNow, valueText = this.readerValueText;\r\n // Init label/describe ids\r\n var labelledByIds = [];\r\n var describedByIds = [];\r\n var labelledBy = this.readerLabelledBy;\r\n if (labelledBy) {\r\n labelledByIds.push(labelledBy);\r\n }\r\n var describedBy = this.readerDescribedBy;\r\n if (describedBy) {\r\n describedByIds.push(describedBy);\r\n }\r\n // Add arial-label attribute if present\r\n // If not readerTitle and labelledBy is set we will use <title> element\r\n // instead of aria-label\r\n // TODO: should we check agains this.showSystemTooltip?\r\n if (title) {\r\n if (labelledByIds.length || this.showSystemTooltip) {\r\n var titleElement = this.titleElement;\r\n var titleId = this.uid + \"-title\";\r\n if (titleElement.node.textContent != title) {\r\n titleElement.node.textContent = title;\r\n titleElement.attr({ id: titleId });\r\n }\r\n labelledByIds.push(titleId);\r\n }\r\n else {\r\n if (this._titleElement) {\r\n this.group.removeElement(this._titleElement);\r\n this._titleElement = undefined;\r\n }\r\n this.setSVGAttribute({\r\n \"aria-label\": title\r\n });\r\n }\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-label\");\r\n if (this._titleElement) {\r\n this.group.removeElement(this._titleElement);\r\n this._titleElement = undefined;\r\n }\r\n }\r\n // Add description\r\n if (description) {\r\n var descriptionElement = this.descriptionElement;\r\n var descriptionId = this.uid + \"-description\";\r\n if (descriptionElement.node.textContent != description) {\r\n descriptionElement.node.textContent = description;\r\n descriptionElement.attr({ id: descriptionId });\r\n }\r\n describedByIds.push(descriptionId);\r\n }\r\n else if (this._descriptionElement) {\r\n this.group.removeElement(this._descriptionElement);\r\n this._descriptionElement = undefined;\r\n }\r\n // Add label and described properties\r\n if (labelledByIds.length) {\r\n this.setSVGAttribute({ \"aria-labelledby\": labelledByIds.join(\" \") });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-labelledby\");\r\n }\r\n if (describedByIds.length) {\r\n this.setSVGAttribute({ \"aria-describedby\": describedByIds.join(\" \") });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-describedby\");\r\n }\r\n // Apply role\r\n if (role) {\r\n this.setSVGAttribute({ \"role\": role });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"role\");\r\n }\r\n // Apply aria-hidden\r\n if (hidden) {\r\n this.setSVGAttribute({ \"aria-hidden\": \"true\" });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-hidden\");\r\n }\r\n // Apply aria-checked\r\n if (checked) {\r\n this.setSVGAttribute({ \"aria-checked\": \"true\" });\r\n }\r\n else if (checked === false) {\r\n this.setSVGAttribute({ \"aria-checked\": \"false\" });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-checked\");\r\n }\r\n // Apply aria-controls\r\n if (controls) {\r\n this.setSVGAttribute({ \"aria-controls\": controls });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-controls\");\r\n }\r\n // Apply aria-live\r\n if (live) {\r\n this.setSVGAttribute({ \"aria-live\": live });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-live\");\r\n }\r\n // Apply aria-orientation\r\n if (orientation) {\r\n this.setSVGAttribute({ \"aria-orientation\": orientation });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-orientation\");\r\n }\r\n // Apply aria-valuenow\r\n if (valueNow) {\r\n this.setSVGAttribute({ \"aria-valuenow\": valueNow });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-valuenow\");\r\n }\r\n // Apply aria-valuetext\r\n if (valueText) {\r\n this.setSVGAttribute({ \"aria-valuetext\": valueText });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-valuetext\");\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"readerTitle\", {\r\n /**\r\n * @return Title\r\n */\r\n get: function () {\r\n var title = this.getPropertyValue(\"readerTitle\");\r\n if ($type.hasValue(title) && this.dataItem) {\r\n return this.populateString(title);\r\n }\r\n return title;\r\n },\r\n /**\r\n * Screen reader title of the element.\r\n *\r\n * @param value Title\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerTitle\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerDescription\", {\r\n /**\r\n * @return Description\r\n */\r\n get: function () {\r\n var description = this.getPropertyValue(\"readerDescription\");\r\n if ($type.hasValue(description) && this.dataItem) {\r\n return this.populateString(description);\r\n }\r\n return this.getPropertyValue(\"readerDescription\");\r\n },\r\n /**\r\n * Screen reader description of the element.\r\n *\r\n * @param value Description\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerDescription\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"role\", {\r\n /**\r\n * @return Role\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"role\");\r\n },\r\n /**\r\n * A WAI-ARIA role for the element.\r\n *\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#role_definitions} for more information on WAI-ARIA roles\r\n * @param value Role\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"role\", value)) {\r\n this.applyAccessibility();\r\n if (value == \"slider\") {\r\n this.setSVGAttribute({ \"aria-valuemin\": \"0\" });\r\n this.setSVGAttribute({ \"aria-valuemax\": \"100\" });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerHidden\", {\r\n /**\r\n * @return Hidden?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerHidden\");\r\n },\r\n /**\r\n * Controls if element should be hidden from screen readers.\r\n *\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-hidden} for more information\r\n * @param value Hidden?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"readerHidden\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerChecked\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Checked?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerChecked\");\r\n },\r\n /**\r\n * Controls if element is currently marked as \"checked\".\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-checked} for more information\r\n * @param value Checked?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"readerChecked\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerControls\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Setting value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerControls\");\r\n },\r\n /**\r\n * A `uid` of an element this element controls.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-controls} for more information\r\n * @param value Setting value\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerControls\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerLive\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Setting value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerLive\");\r\n },\r\n /**\r\n * Controls accessibility setting \"aria-live\" for the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions} for more information\r\n * @param value Setting value\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerLive\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerLabelledBy\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Target element\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerLabelledBy\");\r\n },\r\n /**\r\n * A `uid` of an element that describes this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby} for more information\r\n * @param value Target element\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerLabelledBy\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerDescribedBy\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Target element\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerDescribedBy\");\r\n },\r\n /**\r\n * A `uid` of an element that describes this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-describedby} for more information\r\n * @param value Target element\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerDescribedBy\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerOrientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerOrientation\");\r\n },\r\n /**\r\n * Orientation of the element.\r\n *\r\n * @since 4.7.16\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerOrientation\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerValueNow\", {\r\n /**\r\n * @return Current value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerValueNow\");\r\n },\r\n /**\r\n * Current value of the element.\r\n *\r\n * @since 4.7.16\r\n * @param value Current value\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerValueNow\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerValueText\", {\r\n /**\r\n * @return Current value (text)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerValueText\");\r\n },\r\n /**\r\n * Text representation of the current value of the element.\r\n *\r\n * @since 4.7.16\r\n * @param value Current value (text)\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerValueText\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"keyboardOptions\", {\r\n /**\r\n * ==========================================================================\r\n * USER INTERACTIONS\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns elements keyboard options.\r\n *\r\n * @return Keyboard options\r\n */\r\n get: function () {\r\n if (!this.interactions.keyboardOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.keyboardOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.keyboardOptions;\r\n }\r\n }\r\n return this.interactions.keyboardOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"mouseOptions\", {\r\n /**\r\n * Mouse options.\r\n *\r\n * Enables controlling options related to the mouse, for example sensitivity\r\n * of its mouse wheel.\r\n *\r\n * E.g. the below will reduce chart's wheel-zoom speed to half its default\r\n * speed:\r\n *\r\n * ```TypeScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"plotContainer\": {\r\n * \"mouseOptions\": {\r\n * \"sensitivity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @return Mouse options\r\n */\r\n get: function () {\r\n if (!this.interactions.mouseOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.mouseOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.mouseOptions;\r\n }\r\n }\r\n return this.interactions.mouseOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"interactions\", {\r\n /**\r\n * Returns (creates if necessary) an [[InteractionObject]] associated with\r\n * this element.\r\n *\r\n * [[InteractionObject]] is used to attach all kinds of user-interactions to\r\n * the element, e.g. click/touch, dragging, hovering, and similar events.\r\n *\r\n * @return Interaction object\r\n */\r\n get: function () {\r\n if (!this._interaction) {\r\n var interaction = getInteraction().getInteraction(this.dom);\r\n this._interaction = interaction;\r\n interaction.clickable = this.clickable;\r\n interaction.hoverable = this.hoverable;\r\n interaction.trackable = this.trackable;\r\n interaction.draggable = this.draggable;\r\n interaction.swipeable = this.swipeable;\r\n interaction.resizable = this.resizable;\r\n interaction.wheelable = this.wheelable;\r\n interaction.contextMenuDisabled = this.contextMenuDisabled;\r\n interaction.inert = this.inert;\r\n interaction.sprite = this;\r\n this._disposers.push(interaction);\r\n }\r\n return this._interaction;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns true if interactions object was created. Mostly used just to avoid creating interactions object if not needed.\r\n * @return Is Sprite interactive?\r\n */\r\n Sprite.prototype.isInteractive = function () {\r\n if (this._interaction) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"focusable\", {\r\n /**\r\n * @return Can element be focused?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"focusable\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * ELEMENT FOCUS-RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Controls if the element can gain focus.\r\n *\r\n * Focusable element will be selectable via TAB key.\r\n *\r\n * Please note, clicking it with a mouse or touching will not add focus to\r\n * it.\r\n *\r\n * Focused element will show a system-specific highlight, which might ruin\r\n * the overal look. This is why we don't focus element on click/touch.\r\n *\r\n * A default setting varies for different elements. By default all elements\r\n * are not focusable, except certain items like buttons, legend items, etc.\r\n *\r\n * @default undefined (auto)\r\n * @param value Can element be focused?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"focusable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n }\r\n else {\r\n this.interactions.focusable = value;\r\n if (value) {\r\n this.setSVGAttribute({ \"focusable\": value });\r\n if (!$type.hasValue(this._tabindex)) {\r\n this.tabindex = 0;\r\n }\r\n }\r\n else {\r\n this.removeSVGAttribute(\"focusable\");\r\n this.tabindex = undefined;\r\n }\r\n // Set focus events that would apply \"focus\" state\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-focusable\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"blur\", _this.handleBlur, _this, false),\r\n _this.events.on(\"focus\", _this.handleFocus, _this, false)\r\n ]); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Applies filters (if set) when element gains focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Original event\r\n */\r\n Sprite.prototype.handleFocus = function (ev) {\r\n if (this.focusable) {\r\n if (this.topParent) {\r\n this.topParent.hasFocused = true;\r\n this.topParent.focusedElement = this;\r\n }\r\n if (this.focusFilter) {\r\n // Any `filters` manipulation will trigger `applyFilters()` so we don't\r\n // need to call it here\r\n this.filters.push(this.focusFilter);\r\n }\r\n if (this.hoverOnFocus) {\r\n // Trigger a hover event as well\r\n this.isHover = true;\r\n this.handleOver();\r\n }\r\n }\r\n };\r\n /**\r\n * Removes focus filter (if set) when elementloses focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Original event\r\n */\r\n Sprite.prototype.handleBlur = function (ev) {\r\n if (this.focusable) {\r\n if (this.topParent) {\r\n this.topParent.hasFocused = false;\r\n this.topParent.focusedElement = undefined;\r\n }\r\n if (this.focusFilter) {\r\n // Any `filters` manipulation will trigger `applyFilters()` so we don't\r\n // need to call it here\r\n this.filters.removeValue(this.focusFilter);\r\n }\r\n if (this.hoverOnFocus) {\r\n // Trigger a out event as well\r\n this.isHover = false;\r\n this.handleOut();\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"focusFilter\", {\r\n /**\r\n * A reference to a [[Filter]] to apply to element when it gains focus.\r\n *\r\n * Normally, browsers will draw a default ugly square around focused element,\r\n * which totally makes sense because its purpose is to help identify active\r\n * element for visually impaired people.\r\n *\r\n * However, if you would rather apply a filter, so you can modify how focused\r\n * element looks like, use `focusFilter`.\r\n *\r\n * Simply set it to an anstance of [[FocusFilter]], or any other filter\r\n * object.\r\n *\r\n * ```TypeScript\r\n * chart.focusFilter = new am4core.FocusFilter();\r\n * ```\r\n * ```JavaScript\r\n * chart.focusFilter = new am4core.FocusFilter();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"focusFilter\": {\r\n * \"type\": \"FocusFilter\"\r\n * },\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @see {@link Filter}\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/accessibility/} more about accessibility\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/changing-appearance-of-focused-items/} cusomizing focus appearance\r\n * @ignore Exclude from docs\r\n * @return Focused element filter\r\n */\r\n get: function () {\r\n /*if (!this._focusFilter) {\r\n this._focusFilter = new FocusFilter();\r\n this._disposers.push(this._focusFilter);\r\n }*/\r\n //return this._focusFilter;\r\n var focusFilter = this._focusFilter;\r\n if (focusFilter) {\r\n return focusFilter;\r\n }\r\n if (this.virtualParent) {\r\n return this.virtualParent.focusFilter;\r\n }\r\n else if (this._parent) {\r\n return this._parent.focusFilter;\r\n }\r\n //this._focusFilter = new FocusFilter();\r\n //this._disposers.push(this._focusFilter);\r\n },\r\n /**\r\n * @see {@link Filter}\r\n * @ignore Exclude from docs\r\n * @todo This is still experimental, don't use it\r\n */\r\n set: function (value) {\r\n this._focusFilter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"hoverOnFocus\", {\r\n /**\r\n * @return Trigger hover on focus?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hoverOnFocus\");\r\n },\r\n /**\r\n * If set to `true`, this element will also trigger `\"over\"` event with all\r\n * the related consequences, like \"hover\" state being applied and tooltip\r\n * being shown.\r\n *\r\n * Useful as an accessibility feature to display rollover tooltips on items\r\n * selected via keyboard.\r\n *\r\n * @param value Trigger hover on focus?\r\n * @default false\r\n */\r\n set: function (value) {\r\n if (value !== this.hoverOnFocus) {\r\n this.setPropertyValue(\"hoverOnFocus\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tabindex\", {\r\n /**\r\n * @return TAB index\r\n */\r\n get: function () {\r\n var index = this._tabindex;\r\n if (index != null) {\r\n return index;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.tabindex;\r\n }\r\n else if (this._parent) {\r\n return this._parent.tabindex;\r\n }\r\n },\r\n /**\r\n * Sets or returns TAB index.\r\n *\r\n * Tab index maintains the order in which focusable elements gain focus when\r\n * TAB key is pressed.\r\n *\r\n * Please note, tab index is not local to the chart. It affects the whole\r\n * of the page, including non-SVG elements. Maintain extreme causion when\r\n * setting tab indexes, as it affects the user experience for the whole\r\n * web page.\r\n *\r\n * @param value TAB index\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n if (this.setPropertyValue(\"tabindex\", value) && $type.isNumber(value)) {\r\n this.interactions.tabindex = value;\r\n this.setSVGAttribute({ \"tabindex\": value });\r\n this._tabindex = value;\r\n this.focusable = true;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"inertiaOptions\", {\r\n /**\r\n * ==========================================================================\r\n * DRAGGING AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns element's options to be used for inertia. This setting is\r\n * inheritable, meaning that if not set directly, it will search in all its\r\n * ascendants until very top.\r\n *\r\n * Inertia is used only if element's `inert` is set to `true`.\r\n *\r\n * \"Inert\" element, when dragged and released, will carry the momentum of the\r\n * movement, and will continue moving in the same drag direction, gradually\r\n * reducing in speed until finally stops.\r\n *\r\n * Check [[IInertiaOptions]] for how you tweak inertia animations.\r\n *\r\n * @return Inertia options\r\n */\r\n get: function () {\r\n if (!this.interactions.inertiaOptions) {\r\n if (this._parent) {\r\n return this._parent.inertiaOptions;\r\n }\r\n }\r\n return this.interactions.inertiaOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"draggable\", {\r\n /**\r\n * @return `true` if element can be dragged\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"draggable\");\r\n },\r\n /**\r\n * Controls if the element is draggable.\r\n *\r\n * @param value `true` if element can be dragged\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"draggable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.draggable = value;\r\n //interaction.processDraggable(this);\r\n // Add events\r\n // @todo Maybe attach to InteractionObject's multidisposer so that\r\n // sprites events get disposed together with them?\r\n // this.interactions.disposers.getItem(\"movable\")\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-draggable\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"down\", _this.handleDown, _this, false),\r\n _this.events.on(\"dragstart\", _this.handleDragStart, _this, false),\r\n _this.events.on(\"drag\", _this.handleDragMove, _this, false),\r\n _this.events.on(\"dragstop\", _this.handleDragStop, _this, false)\r\n ]); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Executes when dragged element is being started to drag.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.handleDragStart = function (ev) {\r\n if (!this.interactions.isTouchProtected || !ev.touch) {\r\n this.interactions.originalPosition = {\r\n x: this.pixelX,\r\n y: this.pixelY\r\n };\r\n this._isDragged = true;\r\n this.hideTooltip(0);\r\n }\r\n };\r\n /**\r\n * Tell this element to start being dragged. This is useful if you want to\r\n * drag items by interactions performed not directly on the target element.\r\n *\r\n * Parameter `pointer` is highly recommended. By passing in the Pointer you\r\n * will ensure that movement is tracked for the pointer that you want. If not\r\n * supplied, the system will try to determine the most logical pointer.\r\n *\r\n * However this may fail if you have more than one pointer active, which\r\n * might happen if you have several objects being dragged on a touch device.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer to use for movement\r\n */\r\n Sprite.prototype.dragStart = function (pointer) {\r\n //this.dragStop(pointer);\r\n //this.draggable = true;\r\n this._isDragged = true;\r\n getInteraction().dragStart(this.interactions, pointer);\r\n };\r\n /**\r\n * Executes when dragged element is being dropped.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.handleDragStop = function (ev) {\r\n if (!this.interactions.isTouchProtected || !ev.touch) {\r\n this._isDragged = false;\r\n this.showTooltip();\r\n this.interactions.originalPosition = undefined;\r\n }\r\n };\r\n /**\r\n * Stops manually initiated dragging of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer to use as a reference\r\n */\r\n Sprite.prototype.dragStop = function (pointer, cancelled) {\r\n //this.draggable = false;\r\n this._isDragged = false;\r\n getInteraction().dragStop(this.interactions, pointer, cancelled);\r\n //this.handleDragStop();\r\n };\r\n /**\r\n * Executes when {Sprite} is being dragged.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n * @todo Implement parent position offset calculation\r\n */\r\n Sprite.prototype.handleDragMove = function (ev) {\r\n if (!this.interactions.isTouchProtected || !ev.touch) {\r\n var point = this.interactions.originalPosition;\r\n if (point && this._isDragged) {\r\n var globalScale = this._parent.globalScale * this.svgContainer.cssScale;\r\n this.moveTo({ x: point.x + ev.shift.x / globalScale, y: point.y + ev.shift.y / globalScale }, undefined, undefined, true);\r\n }\r\n this.dispatchImmediately(\"dragged\", ev);\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"inert\", {\r\n /**\r\n * @return `true` if element should use inertia when animated\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inert\");\r\n },\r\n /**\r\n * Controls if the element should use inertia when interacted with.\r\n *\r\n * \"Inert\" element, when dragged and released, will carry the momentum of the\r\n * movement, and will continue moving in the same drag direction, gradually\r\n * reducing in speed until finally stops.\r\n *\r\n * @default false\r\n * @param value `true` if element should use inertia when animated\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"inert\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.interactions.inert = value;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"hoverOptions\", {\r\n /**\r\n * ==========================================================================\r\n * HOVERING\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns Sprite's hover options.\r\n *\r\n * @see {@link IHoverOptions} for available options.\r\n * @return Options\r\n */\r\n get: function () {\r\n if (!this.interactions.hoverOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.hoverOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.hoverOptions;\r\n }\r\n }\r\n return this.interactions.hoverOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"hoverable\", {\r\n /**\r\n * @return `true` if element is hoverable\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hoverable\");\r\n },\r\n /**\r\n * Controls if the element is hoverable (hover events are registered).\r\n *\r\n * Use `over` and `out` events, to watch for those respective actions.\r\n *\r\n * @default false\r\n * @param value `true` if element can be hovered\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"hoverable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.hoverable = value;\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-hoverable\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"over\", _this.handleOver, _this, false),\r\n _this.events.on(\"out\", _this.handleOut, _this, false),\r\n ]); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles tasks when element becomes hovered:\r\n * * Shows [[Tooltip]] if applicable\r\n * * Applies \"hover\" state\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Sprite.prototype.handleOver = function (ev) {\r\n if (this._outTimeout) {\r\n this._outTimeout.dispose();\r\n }\r\n if (this.isHover) {\r\n if (this.states.hasKey(\"hover\")) {\r\n //this.setState(\"hover\");\r\n // This will check `isHover` and will set \"hover\" state\r\n if (!this.isHidden) {\r\n this.applyCurrentState();\r\n }\r\n }\r\n var point = void 0;\r\n if (ev && ev.pointer) {\r\n point = $utils.documentPointToSvg(ev.pointer.point, this.svgContainer.SVGContainer, this.svgContainer.cssScale);\r\n }\r\n if (this.showTooltipOn == \"hover\") {\r\n this.showTooltip(point);\r\n }\r\n }\r\n else {\r\n if (this.showTooltipOn == \"hover\") {\r\n this.hideTooltip();\r\n }\r\n if (!this.isHidden && this.states.hasKey(\"hover\")) {\r\n this.applyCurrentState();\r\n }\r\n }\r\n };\r\n /**\r\n * Handles tasks when element loses hover:\r\n *\r\n * * Hides [[Tooltip]]\r\n * * Applies default state\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev [description]\r\n */\r\n Sprite.prototype.handleOut = function (ev) {\r\n var _this = this;\r\n if (this.tooltip && this.tooltip.targetSprite == this && this.tooltip.keepTargetHover) {\r\n this._outTimeout = this.setTimeout(function () {\r\n if (!_this.tooltip.isHover) {\r\n if (_this.tooltip.targetSprite == _this) {\r\n _this.hideTooltip();\r\n }\r\n _this._outTimeout = _this.setTimeout(_this.handleOutReal.bind(_this), _this.rollOutDelay);\r\n }\r\n }, 10);\r\n return;\r\n }\r\n if (this.showTooltipOn == \"hover\") {\r\n this.hideTooltip();\r\n }\r\n this._outTimeout = this.setTimeout(this.handleOutReal.bind(this), this.rollOutDelay);\r\n };\r\n /**\r\n * [handleOutReal description]\r\n *\r\n * @ignore\r\n * @todo description\r\n */\r\n Sprite.prototype.handleOutReal = function () {\r\n if (!this.isHidden && !this.isHiding && this.states.hasKey(\"hover\")) {\r\n this.applyCurrentState();\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"hitOptions\", {\r\n /**\r\n * ==========================================================================\r\n * CLICKING/TAPPING AND TOGGLING STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns Sprite's click (hit) options.\r\n *\r\n * Click (hit) options control things like double-click, timeouts, etc.\r\n *\r\n * @see {@link IHitOptions} for available options.\r\n * @return Options\r\n */\r\n get: function () {\r\n if (!this.interactions.hitOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.hitOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.hitOptions;\r\n }\r\n }\r\n return this.interactions.hitOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Prepares element's after `down` event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\r\n Sprite.prototype.handleDown = function (ev) {\r\n if (this.interactions.downPointers.length === 1) {\r\n this.interactions.originalPosition = {\r\n x: this.pixelX,\r\n y: this.pixelY\r\n };\r\n this.interactions.originalAngle = this.rotation;\r\n this.interactions.originalScale = this.scale;\r\n if (this.states.hasKey(\"down\")) {\r\n this.setState(\"down\");\r\n }\r\n }\r\n };\r\n /**\r\n * Prepares element's after `up` event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\r\n Sprite.prototype.handleUp = function (ev) {\r\n var _this = this;\r\n /*if (!this.isDown) {\r\n this.interactions.originalPosition = null;\r\n this.interactions.originalAngle = null;\r\n this.interactions.originalScale = null;\r\n }*/\r\n this._isResized = false;\r\n if (this.states.hasKey(\"down\")) {\r\n this.applyCurrentState();\r\n }\r\n if (this.showTooltipOn == \"hit\") {\r\n this.updateTooltipPosition(ev.pointer ? ev.pointer.point : undefined);\r\n this._disposers.push(registry.events.once(\"exitframe\", function () {\r\n _this.showTooltip();\r\n }));\r\n this._disposers.push(getInteraction().body.events.once(\"down\", function (ev) {\r\n _this.hideTooltip();\r\n }));\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"clickable\", {\r\n /**\r\n * @return {boolean}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"clickable\");\r\n },\r\n /**\r\n * Indicates if the element is clickable.\r\n *\r\n * Some type of the elements, like buttons are clickable by default.\r\n *\r\n * Most of the elements are not clickable by default.\r\n *\r\n * Use `hit`, `doublehit`, `up`, `down`, `toggled` events to watch for\r\n * respective click/touch actions.\r\n *\r\n * @param value `true` if element can be clicked\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"clickable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.clickable = value;\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-clickable\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"down\", _this.handleDown, _this, false),\r\n _this.events.on(\"up\", _this.handleUp, _this, false)\r\n ]); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"togglable\", {\r\n /**\r\n * @return Is togglable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"togglable\");\r\n },\r\n /**\r\n * Indicates if element can be toggled on and off by subsequent clicks/taps.\r\n *\r\n * Togglable element will alternate its `isActive` property between `true`\r\n * and `false` with each click.\r\n *\r\n * @param value Is togglable?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"togglable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-togglable\", value, function () { return _this.events.on(\"hit\", _this.handleToggle, _this, false); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles toggling of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\r\n Sprite.prototype.handleToggle = function (ev) {\r\n this.isActive = !this.isActive;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"contextMenuDisabled\", {\r\n /**\r\n * @return Context menu disabled?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"contextMenuDisabled\");\r\n },\r\n /**\r\n * Should element prevent context menu to be displayed, e.g. when\r\n * right-clicked?\r\n *\r\n * @default false\r\n * @param value Context menu disabled?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"contextMenuDisabled\", value)) {\r\n this.interactions.contextMenuDisabled = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"url\", {\r\n /**\r\n * @return URL\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"url\");\r\n },\r\n /**\r\n * Click-through URL for this element.\r\n *\r\n * If set, clicking/tapping this element will open the new URL in a target\r\n * window/tab as set by `urlTarget`.\r\n *\r\n * Please note that URL will be parsed by data placeholders in curly\r\n * brackets, to be populated from data. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.columns.template.url = \"https://www.google.com/search?q={category.urlEncode()}\";\r\n * ```\r\n * ```JavaScript\r\n * series.columns.template.url = \"https://www.google.com/search?q={category.urlEncode()}\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"columns\": {\r\n * \"url\": \"https://www.google.com/search?q={category.urlEncode()}\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @param value URL\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"url\", value)) {\r\n if (this._urlDisposer) {\r\n this._urlDisposer.dispose();\r\n }\r\n // If URL is not empty, set up events\r\n if ($utils.isNotEmpty(value)) {\r\n this._urlDisposer = this.events.on(\"hit\", this.urlHandler, this, false);\r\n // Set other required parameters\r\n this.clickable = true;\r\n this.cursorOverStyle = MouseCursorStyle.pointer;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"baseId\", {\r\n /**\r\n * [baseId description]\r\n *\r\n * @ignore\r\n * @return [description]\r\n */\r\n get: function () {\r\n if (!this._baseId && this._parent) {\r\n this.baseId = this._parent.baseId;\r\n }\r\n return this._baseId;\r\n },\r\n /**\r\n * [baseId description]\r\n *\r\n * @ignore\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setBaseId(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sprite.prototype.setBaseId = function (value) {\r\n if (value != this._baseId) {\r\n if (this.invalid) {\r\n this.invalid = false;\r\n registry.removeFromInvalidSprites(this);\r\n this.invalidate();\r\n }\r\n this._baseId = value;\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"baseSprite\", {\r\n /**\r\n * Returns the mail chart object that this element belongs to.\r\n *\r\n * In most cases it will mean the chart object.\r\n *\r\n * Can be used to retrieve chart object in various events and adapters.\r\n *\r\n * ```TypeScript\r\n * chart.seriesContainer.events.on(\"hit\", function(ev) {\r\n * console.log(ev.target.baseSprite);\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * chart.seriesContainer.events.on(\"hit\", function(ev) {\r\n * console.log(ev.target.baseSprite);\r\n * });\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"seriesContainer\": {\r\n * \"events\": {\r\n * \"hit\": function(ev) {\r\n * console.log(ev.target.baseSprite);\r\n * }\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @readonly\r\n * @return Base chart object\r\n */\r\n get: function () {\r\n if (this.isBaseSprite) {\r\n return this;\r\n }\r\n else if (this._parent) {\r\n return this._parent.baseSprite;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"urlTarget\", {\r\n /**\r\n * @return URL target\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"urlTarget\");\r\n },\r\n /**\r\n * Target to use for URL clicks:\r\n *\r\n * * _blank\r\n * * _self (default)\r\n * * _parent\r\n * * _top\r\n * * Name of the window/frame\r\n *\r\n * Ignored if `url` is not set.\r\n *\r\n * @param value URL target\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"urlTarget\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles URL transition on element click.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev An event object\r\n */\r\n Sprite.prototype.urlHandler = function (ev) {\r\n // Is URL set?\r\n if ($utils.isNotEmpty(this.url)) {\r\n // Proceed to the URL\r\n var url = this.populateString(this.url);\r\n if (this.urlTarget === \"_self\") {\r\n window.location.href = url;\r\n }\r\n else {\r\n window.open(url, this.urlTarget);\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"swipeOptions\", {\r\n /**\r\n * ==========================================================================\r\n * SWIPING GESTURE TRACKING\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns element's swipe gesture options.\r\n *\r\n * @return Swipe gesture options\r\n */\r\n get: function () {\r\n if (!this.interactions.swipeOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.swipeOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.swipeOptions;\r\n }\r\n }\r\n return this.interactions.swipeOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"swipeable\", {\r\n /**\r\n * @return Element swipable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"swipeable\");\r\n },\r\n /**\r\n * Controls if element is swipeable.\r\n *\r\n * Swipable element will invoke `swipe`, `swipeleft` and `swiperight` events,\r\n * when quick horizontal drag action is performed with either mouse or touch.\r\n *\r\n * Please note that combining swipe and drag is possible, however will incur\r\n * a slight but noticeable delay in drag start.\r\n *\r\n * @param value Element swipable?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"swipeable\", value)) {\r\n this.applyCursorStyle();\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.interactions.swipeable = value;\r\n }\r\n //interaction.processSwipeable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"trackable\", {\r\n /**\r\n * @return Track cursor movement over element?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"trackable\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * POINTER TRACKING\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Indicates if the element is trackable (mouse position over it is reported to\r\n * event listeners).\r\n *\r\n * Will invoke `track` events whenever pointer (cursor) changes position\r\n * while over element.\r\n *\r\n * Please note, touch devices will also invoke `track` events when touch\r\n * point is moved while holding down on a trackable element.\r\n *\r\n * @param value Track cursor movement over element?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"trackable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.trackable = value;\r\n }\r\n //interaction.processTrackable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"wheelable\", {\r\n /**\r\n * @return Mouse wheel events enabled?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wheelable\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * MOUSE-WHEEL RELATED\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Indicates if the element can be interacted with mouse wheel.\r\n *\r\n * Will invoke `wheel`, `wheelup`, `wheeldown`, `wheelleft`, and `wheelright`\r\n * events when using mouse wheel over the element.\r\n *\r\n * @param value Mouse wheel events enabled?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"wheelable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.wheelable = value;\r\n }\r\n //interaction.processWheelable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"resizable\", {\r\n /**\r\n * @return Element resizable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"resizable\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * RESIZE\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Indicates if this element is resizable.\r\n *\r\n * Enabling resize will turn on various interactions on the element. Their\r\n * actual functionality will depend on other properties.\r\n *\r\n * If the element also `draggable`, resize will only happen with two points\r\n * of contact on a touch device.\r\n *\r\n * If the element is not draggable, resize can be performed with just one\r\n * point of contact, touch or mouse.\r\n *\r\n * Will invoke `resize` event every time the size of the element changes.\r\n *\r\n * @param value Element resizable?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"resizable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.resizable = value;\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-resizable\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"down\", _this.handleDown, _this, false),\r\n _this.events.on(\"resize\", _this.handleResize, _this, false)\r\n ]); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles resize intermediate step.\r\n *\r\n * By default this method resizes actual element. Each element, can override\r\n * this method to implement their own resize logic.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Sprite.prototype.handleResize = function (ev) {\r\n if (!this.interactions.isTouchProtected || !ev.touch) {\r\n this._isResized = true;\r\n this.scale = this.interactions.originalScale * ev.scale;\r\n this.validatePosition();\r\n /*center: (io.draggable\r\n ? $math.getMidPoint(point1, point2)\r\n : {\r\n \"x\": io.originalPosition.x,\r\n \"y\": io.originalPosition.y\r\n })*/\r\n //this.moveTo(this.originalPosition.x + ev.shift.x, this.originalPosition.y + ev.shift.y);\r\n if (this.draggable || this.dragWhileResize) {\r\n this._isDragged = false;\r\n var svgPoint1 = $utils.documentPointToSvg(ev.point1, this.htmlContainer, this.svgContainer.cssScale);\r\n var svgPoint2 = $utils.documentPointToSvg(ev.point2, this.htmlContainer, this.svgContainer.cssScale);\r\n var svgMidPoint = $math.getMidPoint(svgPoint1, svgPoint2);\r\n var parentPoint1 = $utils.documentPointToSprite(ev.startPoint1, this._parent);\r\n var parentPoint2 = $utils.documentPointToSprite(ev.startPoint2, this._parent);\r\n var originalPosition = this.interactions.originalPosition;\r\n var originalScale = this.interactions.originalScale;\r\n if (originalPosition) {\r\n var spritePoint1 = { x: (parentPoint1.x - originalPosition.x) / originalScale, y: (parentPoint1.y - originalPosition.y) / originalScale };\r\n var spritePoint2 = { x: (parentPoint2.x - originalPosition.x) / originalScale, y: (parentPoint2.y - originalPosition.y) / originalScale };\r\n var spriteMidPoint = $math.getMidPoint(spritePoint1, spritePoint2);\r\n var parentPoint = $utils.svgPointToSprite(svgMidPoint, this._parent);\r\n this.moveTo({ x: parentPoint.x - spriteMidPoint.x * this.scale, y: parentPoint.y - spriteMidPoint.y * this.scale }, undefined, undefined, true);\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"cursorOptions\", {\r\n /**\r\n * ==========================================================================\r\n * MOUSE-RELATED\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns element's cursor options.\r\n *\r\n * Cursor options usually define cursor style for various states of the\r\n * hovered element.\r\n *\r\n * Elements inherit `cursorOptions` from their parents if they don't have\r\n * them set explicitly.\r\n *\r\n * @see {@link ICursorOptions} for a list of available options\r\n * @return Cursor options\r\n */\r\n get: function () {\r\n if (!this.interactions.cursorOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.cursorOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.cursorOptions;\r\n }\r\n }\r\n return this.interactions.cursorOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"cursorOverStyle\", {\r\n /**\r\n * A shortcut to setting mouse cursor on hover.\r\n *\r\n * Example:\r\n *\r\n * ```TypeScript\r\n * series.slices.template.cursorOverStyle = am4core.MouseCursorStyle.pointer;\r\n * ```\r\n * ```JavaScript\r\n * series.slices.template.cursorOverStyle = am4core.MouseCursorStyle.pointer;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": {\r\n * // ...\r\n * \"slices\": {\r\n * \"cursorOverStyle\": \"pointer\"\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @param style An array of styles to apply onhover\r\n */\r\n set: function (style) {\r\n if (!this.cursorOptions.overStyle) {\r\n this.interactions.cursorOptions = {\r\n defaultStyle: this.cursorOptions.defaultStyle\r\n };\r\n }\r\n this.cursorOptions.overStyle = style;\r\n getInteraction().applyCursorOverStyle(this.interactions);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"cursorDownStyle\", {\r\n /**\r\n * A shortcut to setting mouse cursor when button is pressed down.\r\n *\r\n * Example:\r\n *\r\n * ```TypeScript\r\n * series.slices.template.cursorDownStyle = am4core.MouseCursorStyle.grabbing;\r\n * ```\r\n * ```JavaScript\r\n * series.slices.template.cursorDownStyle = am4core.MouseCursorStyle.grabbing;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": {\r\n * // ...\r\n * \"slices\": {\r\n * \"cursorDownStyle\": \"grabbing\"\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @param style An array of styles to apply onhover\r\n */\r\n set: function (style) {\r\n this.cursorOptions.downStyle = style;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Applies default cursor styles for interactable elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Determine if this is necessary. Maybe let's not apply any cursor styles by default\r\n */\r\n Sprite.prototype.applyCursorStyle = function () {\r\n // Draggable styles\r\n /*if (this.draggable) {\r\n\r\n if (!$type.hasValue(this.cursorOptions.overStyle)) {\r\n this.cursorOptions.overStyle = MouseCursorStyle.grab;\r\n }\r\n\r\n if (!$type.hasValue(this.cursorOptions.downStyle)) {\r\n this.cursorOptions.downStyle = MouseCursorStyle.grabbing;\r\n }\r\n }*/\r\n };\r\n Object.defineProperty(Sprite.prototype, \"interactionsEnabled\", {\r\n /**\r\n * @return Is interaction enabled for this element?\r\n */\r\n get: function () {\r\n var value = this.getPropertyValue(\"interactionsEnabled\");\r\n if (value === false) {\r\n return false;\r\n }\r\n if (this.virtualParent) {\r\n return this.virtualParent.interactionsEnabled;\r\n }\r\n if (this._parent) {\r\n return this._parent.interactionsEnabled;\r\n }\r\n return true;\r\n },\r\n /**\r\n * Setting this to `false` will effectively disable all interactivity on the\r\n * element.\r\n *\r\n * @param value Is interaction enabled for this element?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"interactionsEnabled\", value)) {\r\n var pointerEvents = null; // must be null, not \"null\"!\r\n if (!value) {\r\n pointerEvents = \"none\";\r\n }\r\n else {\r\n // this is for IE\r\n this.group.node.style.pointerEvents = \"\";\r\n }\r\n this.group.node.style.pointerEvents = pointerEvents;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"exporting\", {\r\n /**\r\n * @return Export instance\r\n */\r\n get: function () {\r\n return this.getExporting();\r\n },\r\n /**\r\n * ==========================================================================\r\n * EXPORT-RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * An [[Export]] instance.\r\n *\r\n * Used to access API of the chart export functionality.\r\n *\r\n * If `exporting` is not set, the element inherits [[Export]] instance from\r\n * its parents.\r\n *\r\n * Upon request, if no parent has such instance, a new one is created, using\r\n * default settings, what in most cases is just enough.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/exporting/} for more info about exporting\r\n * @param exp Export\r\n */\r\n set: function (exp) {\r\n this._exporting.set(exp, exp);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * This is here as a method so that inheriting classes could override it.\r\n *\r\n * @return Export instance\r\n */\r\n Sprite.prototype.getExporting = function () {\r\n var _export = this._exporting.get();\r\n if (_export) {\r\n return _export;\r\n }\r\n else {\r\n if (this.isStandaloneInstance || !this._parent) {\r\n _export = new Export(this.svgContainer.SVGContainer);\r\n _export.sprite = this;\r\n _export.language = this.language;\r\n _export.numberFormatter = this.numberFormatter;\r\n _export.dateFormatter = this.dateFormatter;\r\n _export.durationFormatter = this.durationFormatter;\r\n this._exporting.set(_export, _export);\r\n }\r\n else {\r\n return this._parent.exporting;\r\n }\r\n }\r\n return _export;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"exportable\", {\r\n /**\r\n * @return Export?\r\n */\r\n get: function () {\r\n return this._exportable;\r\n /*const svgContainer = this.svgContainer;\r\n return !svgContainer || $array.indexOf(svgContainer.nonExportableSprites, this) == -1;*/\r\n },\r\n /**\r\n * If set to `false` this element will be omitted when exporting the chart\r\n * to an image.\r\n *\r\n * @default true\r\n * @param value Export?\r\n */\r\n set: function (value) {\r\n var svgContainer = this.svgContainer;\r\n this._exportable = value;\r\n if (svgContainer) {\r\n if (value) {\r\n $array.remove(svgContainer.nonExportableSprites, this);\r\n }\r\n else if ($array.indexOf(svgContainer.nonExportableSprites, this) == -1) {\r\n svgContainer.nonExportableSprites.push(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * ==========================================================================\r\n * MODAL/POPUP RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Private method to be used for \"classPrefix\" adapter for modals/popups.\r\n *\r\n * @param value Prefix\r\n */\r\n Sprite.prototype.modalPrefix = function (value) {\r\n value = options.classNamePrefix + value;\r\n return value;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"modal\", {\r\n /**\r\n * Returns a [[Modal]] instance, associated with this chart.\r\n * (elements top parent)\r\n *\r\n * Accessing modal does not make it appear. To make a modal appear, use\r\n * `showModal()` method.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @return Modal instance\r\n */\r\n get: function () {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n var modal = svgContainer.modal;\r\n if (!modal.adapter.has(\"classPrefix\", this.modalPrefix)) {\r\n modal.adapter.add(\"classPrefix\", this.modalPrefix);\r\n }\r\n return modal;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Opens a modal window with specific content (`text` parameter) and,\r\n * optionally, `title`.\r\n *\r\n * The `text` parameter can contain HTML content.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @param text Modal contents\r\n * @param title Title for the modal window\r\n */\r\n Sprite.prototype.openModal = function (text, title) {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n return svgContainer.openModal(text, title);\r\n }\r\n };\r\n /**\r\n * Hides modal window if there is one currently open.\r\n */\r\n Sprite.prototype.closeModal = function () {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n svgContainer.closeModal();\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"popups\", {\r\n /**\r\n * A list of popups for this chart.\r\n *\r\n * @return Popups\r\n */\r\n get: function () {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n var popups = svgContainer.popups;\r\n popups.template.sprite = this;\r\n if (!popups.template.adapter.has(\"classPrefix\", this.modalPrefix)) {\r\n popups.template.adapter.add(\"classPrefix\", this.modalPrefix);\r\n }\r\n return popups;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates, opens, and returns a new [[Popup]] window.\r\n *\r\n * `text` can be any valid HTML.\r\n *\r\n * `title` is currently not supported.\r\n *\r\n * @param text Popup contents\r\n * @param title Popup title\r\n * @return Popup instance\r\n */\r\n Sprite.prototype.openPopup = function (text, title) {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n return svgContainer.openPopup(text, title);\r\n }\r\n };\r\n /**\r\n * Closes all currently open popup windows\r\n */\r\n Sprite.prototype.closeAllPopups = function () {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n svgContainer.closeAllPopups();\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"x\", {\r\n /**\r\n * @return X coordinate\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"x\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * POSITIONAL PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Element's absolute or relative X coordinate.\r\n *\r\n * If setting both X and Y, please consider using `moveTo()` method instead,\r\n * as it will be faster to set both coordinates at once.\r\n *\r\n * @param value X coordinate\r\n */\r\n set: function (value) {\r\n if (!this.isDragged) {\r\n this.setPercentProperty(\"x\", value, false, true, this._positionPrecision, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelX\", {\r\n /**\r\n * Returns element's current absolute X coordinate in pixels.\r\n *\r\n * @readonly\r\n * @return X coordinate (px)\r\n */\r\n get: function () {\r\n var value = $math.fitToRange(this.getPixelX(this.x), this.minX, this.maxX);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelX\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeX\", {\r\n /**\r\n * Returns element's current relative X coordinate in [[Percent]].\r\n *\r\n * @return X coordinate ([[Percent]])\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this.getRelativeX(this.x);\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeX\", this.getRelativeX(this.x));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"minX\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Min X (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minX\");\r\n },\r\n /**\r\n * The smallest allowable absolute X coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Min X (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"minX\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"maxX\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Max X (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxX\");\r\n },\r\n /**\r\n * The biggest allowable absolute X coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Max X (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"maxX\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"y\", {\r\n /**\r\n * @return Y coordinate\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"y\");\r\n },\r\n /**\r\n * Element's absolute or relative Y coordinate.\r\n *\r\n * If setting both X and Y, please consider using `moveTo()` method instead,\r\n * as it will be faster to set both coordinates at once.\r\n *\r\n * @param value Y coordinate\r\n */\r\n set: function (value) {\r\n if (!this.isDragged) {\r\n this.setPercentProperty(\"y\", value, false, true, this._positionPrecision, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelY\", {\r\n /**\r\n * Returns element's current absolute Y coordinate in pixels.\r\n *\r\n * @readonly\r\n * @return Y coordinate (px)\r\n */\r\n get: function () {\r\n var value = $math.fitToRange(this.getPixelY(this.y), this.minY, this.maxY);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelY\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeY\", {\r\n /**\r\n * Returns element's current relative Y coordinate in [[Percent]].\r\n *\r\n * @readonly\r\n * @return Y coordinate ([[Percent]])\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this.getRelativeX(this.y);\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeY\", this.getRelativeX(this.y));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"minY\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Min Y (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minY\");\r\n },\r\n /**\r\n * The smallest allowable absolute Y coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Min Y (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"minY\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"maxY\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Max Y (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxY\");\r\n },\r\n /**\r\n * The biggest allowable absolute Y coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Max Y (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"maxY\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"dx\", {\r\n /**\r\n * @return Horizontal offset (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"dx\");\r\n },\r\n /**\r\n * A horizontal offset for the element in pixels.\r\n *\r\n * Can be negative value for offset to the left.\r\n *\r\n * @param value Horizontal offset (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"dx\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"dy\", {\r\n /**\r\n * @return Vertical offset (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"dy\");\r\n },\r\n /**\r\n * A vertical offset for the element in pixels.\r\n *\r\n * Can be negative value for offset upwards.\r\n *\r\n * @param value Vertical offset (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"dy\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"rotation\", {\r\n /**\r\n * @return Rotation (0-360)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"rotation\");\r\n },\r\n /**\r\n * Rotation of the element in degrees. (0-360)\r\n *\r\n * Note: For convenience purposes, negative values (for counter-clockwise\r\n * rotation) and values exceeding 360 can also be used.\r\n *\r\n * @param value Rotation (0-360)\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n this.setPropertyValue(\"rotation\", value, false, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"align\", {\r\n /**\r\n * @return Horizontal align\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"align\");\r\n },\r\n /**\r\n * Controls horizontal alignment of the element.\r\n *\r\n * This is used by parent [[Container]] when layouting its children.\r\n *\r\n * @param value Horizontal align\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"align\", value)) {\r\n if (this._parent) {\r\n this._parent.invalidateLayout();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"valign\", {\r\n /**\r\n * @return Vertical align\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"valign\");\r\n },\r\n /**\r\n * Controls vertical alignment of the element.\r\n *\r\n * This is used by parent [[Container]] when layouting its children.\r\n *\r\n * @param value Vertical align\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"valign\", value)) {\r\n if (this._parent) {\r\n this._parent.invalidateLayout();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"horizontalCenter\", {\r\n /**\r\n * @return Horizontal center\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"horizontalCenter\");\r\n },\r\n /**\r\n * Controls which part of the element to treat as a horizontal center.\r\n *\r\n * The setting will be used when positioning, resizing and rotating the\r\n * element.\r\n *\r\n * @param value Horizontal center\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"horizontalCenter\", value)) {\r\n this.updateCenter();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"verticalCenter\", {\r\n /**\r\n * @return Vertical center\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"verticalCenter\");\r\n },\r\n /**\r\n * Controls which part of the element to treat as a vertical center.\r\n *\r\n * The setting will be used when positioning, resizing and rotating the\r\n * element.\r\n *\r\n * @param value Vertical center\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"verticalCenter\", value)) {\r\n this.updateCenter();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"maxWidth\", {\r\n /**\r\n * @return Maximum width (px)\r\n */\r\n get: function () {\r\n var maxWidth = this.getPropertyValue(\"maxWidth\");\r\n if (!$type.isNumber(maxWidth)) {\r\n if (this._parent) {\r\n var parentWidth = this._parent.maxWidth;\r\n if (this._parent.layout != \"absolute\" && this.align != \"none\" && this.align != undefined) {\r\n parentWidth = parentWidth - this.pixelMarginLeft - this.pixelMarginRight;\r\n }\r\n return parentWidth;\r\n }\r\n }\r\n return maxWidth;\r\n },\r\n /**\r\n * ==========================================================================\r\n * DIMENSIONAL PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Maximum allowed width for the element in pixels.\r\n *\r\n * @param value Maximum width (px)\r\n */\r\n set: function (value) {\r\n this.setMaxWidth(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sprite.prototype.setMaxWidth = function (value) {\r\n var prevWidth = this.maxWidth;\r\n var prevHeight = this.maxHeight;\r\n if (this.setPropertyValue(\"maxWidth\", value)) {\r\n if ($type.isNumber(this.relativeWidth)) {\r\n this.invalidate();\r\n }\r\n var event_2 = {\r\n type: \"maxsizechanged\",\r\n target: this,\r\n previousWidth: prevWidth,\r\n previousHeight: prevHeight\r\n };\r\n this.dispatchImmediately(\"maxsizechanged\", event_2);\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"maxHeight\", {\r\n /**\r\n * @return Maximum height (px)\r\n */\r\n get: function () {\r\n var maxHeight = this.getPropertyValue(\"maxHeight\");\r\n if (!$type.isNumber(maxHeight)) {\r\n if (this._parent) {\r\n var parentHeight = this._parent.maxHeight;\r\n if (this._parent.layout != \"absolute\" && this.valign != \"none\" && this.valign != undefined) {\r\n parentHeight = parentHeight - this.pixelMarginTop - this.pixelMarginBottom;\r\n }\r\n return parentHeight;\r\n }\r\n }\r\n return maxHeight;\r\n },\r\n /**\r\n * Maximum allowed height for the element in pixels.\r\n *\r\n * @param value Maximum height (px)\r\n */\r\n set: function (value) {\r\n this.setMaxHeight(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sprite.prototype.setMaxHeight = function (value) {\r\n var prevWidth = this.maxWidth;\r\n var prevHeight = this.maxHeight;\r\n if (this.setPropertyValue(\"maxHeight\", value)) {\r\n if ($type.isNumber(this.relativeHeight)) {\r\n this.invalidate();\r\n }\r\n var event_3 = {\r\n type: \"maxsizechanged\",\r\n target: this,\r\n previousWidth: prevWidth,\r\n previousHeight: prevHeight\r\n };\r\n this.dispatchImmediately(\"maxsizechanged\", event_3);\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"minWidth\", {\r\n /**\r\n * @return Minimum width (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minWidth\");\r\n },\r\n /**\r\n * Minimum width of the element in pixels.\r\n *\r\n * Set to `undefined` to remove the limit.\r\n *\r\n * @param value Minimum width (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minWidth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"minHeight\", {\r\n /**\r\n * @return Minimum height (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minHeight\");\r\n },\r\n /**\r\n * Minimum height for the element in pixels.\r\n *\r\n * Set to `undefined` to remove the limit.\r\n *\r\n * @param value Minimum height (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minHeight\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"width\", {\r\n /**\r\n * @return Width (absolute or relative)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"width\");\r\n },\r\n /**\r\n * Element's absolute or relative width.\r\n *\r\n * The width can either be absolute, set in numeric pixels, or relative, set\r\n * in [[Percent]].\r\n *\r\n * Relative width will be calculated using closest measured ancestor\r\n * [[Container]].\r\n *\r\n * NOTE: `width` is an accessor, which allows setting width in pixels or\r\n * percent. It is a sort of a \"shortcut\" for the users. Actual renderer does\r\n * not ever use it. It uses either `pixelWidth` or `percentWidth`, so if\r\n * you need to add an adapter for width add it for either of the two\r\n * properties - whichever suits your requirements.\r\n *\r\n * @param value Width (numeric in pixels or relative)\r\n */\r\n set: function (value) {\r\n var changed = this.setPercentProperty(\"width\", value, true, false, this._positionPrecision, true);\r\n if (changed) {\r\n this.percentWidth = undefined;\r\n this.relativeWidth = undefined;\r\n if (value instanceof Percent) {\r\n this.percentWidth = value.percent;\r\n if ($type.isNumber(this._pixelWidth)) {\r\n this.maxWidth = undefined;\r\n }\r\n this._pixelWidth = undefined;\r\n }\r\n else {\r\n this._pixelWidth = Number(value);\r\n //this._measuredWidth = this._pixelWidth;\r\n this.maxWidth = this._pixelWidth;\r\n }\r\n this.invalidatePosition();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"height\", {\r\n /**\r\n * @return height (absolute or relative)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"height\");\r\n },\r\n /**\r\n * Element's absolute or relative height.\r\n *\r\n * The height can either be absolute, set in numeric pixels, or relative, set\r\n * in [[Percent]].\r\n *\r\n * Relative height will be calculated using closest measured ancestor\r\n * [[Container]].\r\n *\r\n * NOTE: `height` is an accessor, which allows setting height in pixels or\r\n * percent. It is a sort of a \"shortcut\" for the users. Actual renderer does\r\n * not ever use it. It uses either `pixelHeight` or `percentHeight`, so if\r\n * you need to add an adapter for height add it for either of the two\r\n * properties - whichever suits your requirements.\r\n *\r\n * @param value Height (numeric in pixels or relative)\r\n */\r\n set: function (value) {\r\n var changed = this.setPercentProperty(\"height\", value, true, false, this._positionPrecision, true);\r\n if (changed) {\r\n this.percentHeight = undefined;\r\n this._relativeHeight = undefined;\r\n if (value instanceof Percent) {\r\n this.percentHeight = value.percent;\r\n if ($type.isNumber(this._pixelHeight)) {\r\n this.maxHeight = undefined;\r\n }\r\n this._pixelHeight = undefined;\r\n }\r\n else {\r\n this._pixelHeight = Number(value);\r\n //this._measuredHeight = this._pixelHeight;\r\n this.maxHeight = this._pixelHeight; // yes, we reset maxWidth\r\n }\r\n this.invalidatePosition();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelWidth\", {\r\n /**\r\n * Returns element's width in pixels, if width was set. For actual width use measuredWidth property.\r\n *\r\n * @readonly\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n var width;\r\n if ($type.isNumber(this.percentWidth)) {\r\n width = this.maxWidth;\r\n }\r\n else if ($type.isNumber(this._pixelWidth)) {\r\n width = this._pixelWidth;\r\n }\r\n else {\r\n width = 0;\r\n }\r\n var minWidth = this.minWidth;\r\n if (minWidth != null && width < minWidth) {\r\n width = minWidth;\r\n }\r\n var value = $math.round(width, this._positionPrecision, true);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelWidth\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelHeight\", {\r\n /**\r\n * Returns element's height in pixels. For actual height use measuredHeight property.\r\n *\r\n * @readonly\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n var height;\r\n if ($type.isNumber(this.percentHeight)) {\r\n height = this.maxHeight;\r\n }\r\n else if ($type.isNumber(this._pixelHeight)) {\r\n height = this._pixelHeight;\r\n }\r\n else {\r\n height = 0; //this._measuredHeightSelf;\r\n }\r\n var minHeight = this.minHeight;\r\n if (minHeight != null && height < minHeight) {\r\n height = minHeight;\r\n }\r\n var value = $math.round(height, this._positionPrecision, true);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelHeight\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeWidth\", {\r\n /**\r\n * @return Relative width\r\n * @ignore\r\n */\r\n get: function () {\r\n var relativeWidth = this._relativeWidth;\r\n if ($type.isNumber(relativeWidth)) {\r\n if (!this._adapterO) {\r\n return relativeWidth;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeWidth\", relativeWidth);\r\n }\r\n }\r\n },\r\n /**\r\n * Element's relative width in [[Percent]].\r\n * @ignore\r\n *\r\n * @param value Relative width\r\n */\r\n set: function (value) {\r\n if (this._relativeWidth != value) {\r\n this._relativeWidth = value;\r\n //\t\t\tthis.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeHeight\", {\r\n /**\r\n * @return Relative height\r\n * @ignore\r\n */\r\n get: function () {\r\n var relativeHeight = this._relativeHeight;\r\n if ($type.isNumber(relativeHeight)) {\r\n if (!this._adapterO) {\r\n return relativeHeight;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeHeight\", relativeHeight);\r\n }\r\n }\r\n },\r\n /**\r\n * Element's relative height in [[Percent]].\r\n *\r\n * @param value Relative height\r\n * @ignore\r\n */\r\n set: function (value) {\r\n if (this._relativeHeight != value) {\r\n this._relativeHeight = value;\r\n //\t\t\tthis.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"measuredWidth\", {\r\n /**\r\n * Returns element's measured width in pixels.\r\n *\r\n * A measured width is actual width of contents plus `paddingRight` and* `paddingLeft`, relative to sprite parent, meaning that\r\n * rotation and scale is taken into account.\r\n *\r\n * @readonly\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n if (this.disabled || this.__disabled) {\r\n return 0;\r\n }\r\n if (!this._adapterO) {\r\n return this._measuredWidth;\r\n }\r\n else {\r\n return this._adapterO.apply(\"measuredWidth\", this._measuredWidth);\r\n }\r\n // it's not good to fit to min/max range as then rotations and scale won't be taken into account\r\n //return this.adapter.apply(\"measuredWidth\", $math.fitToRange(this._measuredWidth, this.minWidth, this.maxWidth));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"measuredHeight\", {\r\n /**\r\n * Returns elements's measured height in pixels.\r\n *\r\n * A measured height is actual height of contents plus `paddingTop` and `paddingBottom`, relative to sprite parent, meaning that\r\n * rotation and scale taken into account.\r\n *\r\n * @readonly\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n if (this.disabled || this.__disabled) {\r\n return 0;\r\n }\r\n // it's not good to fit to min/max range as then rotations and scale won't be taken into account\r\n //return this.adapter.apply(\"measuredHeight\", $math.fitToRange(this._measuredHeight, this.minHeight, this.maxHeight));\r\n if (!this._adapterO) {\r\n return this._measuredHeight;\r\n }\r\n else {\r\n return this._adapterO.apply(\"measuredHeight\", this._measuredHeight);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"outerWidth\", {\r\n /**\r\n * Returns element's measured width plus its left and right margins in\r\n * pixels.\r\n *\r\n * @readonly\r\n * @return Outer width (px)\r\n */\r\n get: function () {\r\n var value = this.pixelWidth + this.pixelMarginRight + this.pixelMarginLeft;\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"outerWidth\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"outerHeight\", {\r\n /**\r\n * Returns element's measured height plus its top and bottom margins in\r\n * pixels.\r\n *\r\n * @readonly\r\n * @return Outer height (px)\r\n */\r\n get: function () {\r\n var value = this.pixelHeight + this.pixelMarginTop + this.pixelMarginBottom;\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"outerHeight\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"innerWidth\", {\r\n /**\r\n * Returns element's measured inner width in pixels.\r\n *\r\n * Inner width is actual available space for content, e.g. element's width\r\n * minus horizontal padding.\r\n *\r\n * @readonly\r\n * @return Inner width (px)\r\n */\r\n get: function () {\r\n var value = Math.max(0, this.pixelWidth - this.pixelPaddingRight - this.pixelPaddingLeft);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"innerWidth\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"innerHeight\", {\r\n /**\r\n * Returns element's measured inner height in pixels.\r\n *\r\n * Inner height is actual available space for content, e.g. element's height\r\n * minus vertical padding.\r\n *\r\n * @readonly\r\n * @return Inner height (px)\r\n */\r\n get: function () {\r\n var value = Math.max(0, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"innerHeight\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"globalScale\", {\r\n /**\r\n * Returns element's current \"global\" scale.\r\n *\r\n * Scale values accumulate over hierarchy of elements.\r\n *\r\n * E.g. if a [[Container]] has `scale = 2` and it's child has a `scale = 2`,\r\n * the child's `globalScale` will be 4. (a multitude of `2 x 2`)\r\n *\r\n * @readonly\r\n * @return Global scale\r\n */\r\n get: function () {\r\n var scale = this.scale;\r\n if (this._parent) {\r\n scale = scale * this._parent.globalScale;\r\n }\r\n if (!this._adapterO) {\r\n return scale;\r\n }\r\n else {\r\n return this._adapterO.apply(\"globalScale\", scale);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"scale\", {\r\n /**\r\n * @return Scale (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"scale\");\r\n },\r\n /**\r\n * Scale of the element.\r\n *\r\n * The scale is set from 0 (element reduced to nothing) to 1 (default size).\r\n * * 2 will mean element is increased twice.\r\n * * 0.5 - reduced by 50%.\r\n *\r\n * Etc.\r\n *\r\n * @param value Scale (0-1)\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n if (value < 0) {\r\n value = 0;\r\n }\r\n if (value != this.getPropertyValue(\"scale\")) {\r\n this.setPropertyValue(\"scale\", value, false, true);\r\n this.handleGlobalScale();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets all four margins for the element at once.\r\n *\r\n * Margins are set in pixels.\r\n *\r\n * @param top Top margin\r\n * @param right Right margin\r\n * @param bottom Bottom margin\r\n * @param left Left margin\r\n * @return Current element\r\n */\r\n Sprite.prototype.margin = function (top, right, bottom, left) {\r\n this.marginTop = top;\r\n this.marginRight = right;\r\n this.marginBottom = bottom;\r\n this.marginLeft = left;\r\n return this;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"marginLeft\", {\r\n /**\r\n * @return Margin value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"marginLeft\");\r\n },\r\n /**\r\n * Left margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"marginLeft\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"marginRight\", {\r\n /**\r\n * @return Margin value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"marginRight\");\r\n },\r\n /**\r\n * Right margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"marginRight\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"marginTop\", {\r\n /**\r\n * @return Margin value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"marginTop\");\r\n },\r\n /**\r\n * Top margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"marginTop\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"marginBottom\", {\r\n /**\r\n * @return Margin value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"marginBottom\");\r\n },\r\n /**\r\n * Bottom margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"marginBottom\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelMarginRight\", {\r\n /**\r\n * Returns current right margin in pixels.\r\n *\r\n * @readonly\r\n * @return Right margin (px)\r\n */\r\n get: function () {\r\n var value = this.getPixelX(this.marginRight);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelMarginRight\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeMarginRight\", {\r\n /**\r\n * Returns current relative right margin.\r\n *\r\n * @readonly\r\n * @return Relative right margin\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n var value = this.getRelativeX(this.marginRight);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeMarginRight\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelMarginLeft\", {\r\n /**\r\n * Returns current left margin in pixels.\r\n *\r\n * @readonly\r\n * @return Left margin (px)\r\n */\r\n get: function () {\r\n var value = this.getPixelX(this.marginLeft);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelMarginLeft\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeMarginLeft\", {\r\n /**\r\n * Returns current relative left margin.\r\n *\r\n * @readonly\r\n * @return Relative left margin\r\n */\r\n get: function () {\r\n //@todo Maybe use [[Percent]]?\r\n var value = this.getRelativeX(this.marginLeft);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeMarginLeft\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelMarginTop\", {\r\n /**\r\n * Returns current top margin in pixels.\r\n *\r\n * @readonly\r\n * @return Top margin (px)\r\n */\r\n get: function () {\r\n var value = this.getPixelY(this.marginTop);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelMarginTop\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeMarginTop\", {\r\n /**\r\n * Returns current relative top margin.\r\n *\r\n * @readonly\r\n * @return Relative top margin\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n var value = this.getRelativeY(this.marginTop);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeMarginTop\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelMarginBottom\", {\r\n /**\r\n * Returns current bottom margin in pixels.\r\n *\r\n * @readonly\r\n * @return Bottom margin (px)\r\n */\r\n get: function () {\r\n var value = this.getPixelY(this.marginBottom);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelMarginBottom\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeMarginBottom\", {\r\n /**\r\n * Returns current relative bottom margin.\r\n *\r\n * @readonly\r\n * @return Relative bottom margin\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n var value = this.getRelativeY(this.marginBottom);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeMarginBottom\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets padding for the element in pixels.\r\n *\r\n * @param top Top padding (px)\r\n * @param right Right padding (px)\r\n * @param bottom Bottom padding (px)\r\n * @param left Left padding (px)\r\n * @return Element\r\n */\r\n Sprite.prototype.padding = function (top, right, bottom, left) {\r\n this.paddingTop = top;\r\n this.paddingRight = right;\r\n this.paddingBottom = bottom;\r\n this.paddingLeft = left;\r\n return this;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"paddingLeft\", {\r\n /**\r\n * @return Padding value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"paddingLeft\");\r\n },\r\n /**\r\n * Left padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"paddingLeft\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"paddingRight\", {\r\n /**\r\n * @return Padding value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"paddingRight\");\r\n },\r\n /**\r\n * Right padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"paddingRight\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"paddingTop\", {\r\n /**\r\n * @return Padding value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"paddingTop\");\r\n },\r\n /**\r\n * Top padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"paddingTop\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"paddingBottom\", {\r\n /**\r\n * @return Padding value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"paddingBottom\");\r\n },\r\n /**\r\n * Bottom padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"paddingBottom\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelPaddingRight\", {\r\n /**\r\n * Returns current right padding in pixels.\r\n *\r\n * @readonly\r\n * @return Right padding (px)\r\n */\r\n get: function () {\r\n return this.getPixelX(this.paddingRight);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativePaddingRight\", {\r\n /**\r\n * Returns current relative right padding.\r\n *\r\n * @readonly\r\n * @return Relative right padding\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n return this.getRelativeX(this.paddingRight);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelPaddingLeft\", {\r\n /**\r\n * Returns current left padding in pixels.\r\n *\r\n * @readonly\r\n * @return Left padding (px)\r\n */\r\n get: function () {\r\n return this.getPixelX(this.paddingLeft);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativePaddingLeft\", {\r\n /**\r\n * Returns current relative left padding.\r\n *\r\n * @readonly\r\n * @return Relative left padding\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n return this.getRelativeX(this.paddingLeft);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelPaddingTop\", {\r\n /**\r\n * Returns current top padding in pixels.\r\n *\r\n * @readonly\r\n * @return Top padding (px)\r\n */\r\n get: function () {\r\n return this.getPixelY(this.paddingTop);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativePaddingTop\", {\r\n /**\r\n * Returns current relative top padding.\r\n *\r\n * @readonly\r\n * @return Relative top padding\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n return this.getRelativeY(this.paddingTop);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelPaddingBottom\", {\r\n /**\r\n * Returns current bottom padding in pixels.\r\n *\r\n * @readonly\r\n * @return Bottom padding (px)\r\n */\r\n get: function () {\r\n return this.getPixelY(this.paddingBottom);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativePaddingBottom\", {\r\n /**\r\n * Returns current relative bottom padding.\r\n *\r\n * @readonly\r\n * @return Relative bottom padding\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n return this.getRelativeY(this.paddingBottom);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"path\", {\r\n /**\r\n * @return Path of a Sprite element\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"path\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * APPEARANCE-RELATED PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Path of Sprite element\r\n */\r\n set: function (value) {\r\n this.setPath(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.setPath = function (value) {\r\n if (this.setPropertyValue(\"path\", value)) {\r\n if (this._adapterO) {\r\n value = this._adapterO.apply(\"path\", value);\r\n }\r\n if (!this._isPath) {\r\n if (!this.element || (this.element.node && !(this.element.node instanceof SVGPathElement))) {\r\n this.element = this.paper.add(\"path\");\r\n }\r\n this._isPath = true;\r\n }\r\n if ($type.hasValue(value)) {\r\n this.element.attr({ \"d\": value });\r\n }\r\n else {\r\n this.element.removeAttr(\"d\");\r\n }\r\n this.invalidatePosition();\r\n // otherwise is 0x0\r\n if (!this.inited) {\r\n this.events.once(\"inited\", this.validatePosition, this, false);\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"fillModifier\", {\r\n /**\r\n * @return Fill color modifier\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fillModifier\");\r\n },\r\n /**\r\n * [[ColorModifier]] that can be used to modify color and pattern of the\r\n * element's fill, e.g. create gradients.\r\n *\r\n * @param value Fill color modifiier\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"fillModifier\", value)) {\r\n this.setFill(this.fill);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeModifier\", {\r\n /**\r\n * @return Stroke color modifier\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeModifier\");\r\n },\r\n /**\r\n * [[ColorModifier]] that can be used to modify color and pattern of the\r\n * element's stroke (outline), e.g. create gradients.\r\n *\r\n * @param value Stroke color modifier\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"strokeModifier\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"fillOpacity\", {\r\n /**\r\n * @return Opacity (0-9)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fillOpacity\");\r\n },\r\n /**\r\n * Element's fill opacity.\r\n *\r\n * Opacity ranges from 0 (fully transparent) to 1 (fully opaque).\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n value = $math.toNumberRange(value, 0, 1);\r\n if (this.setPropertyValue(\"fillOpacity\", value)) {\r\n this.setSVGAttribute({ \"fill-opacity\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"fill\", {\r\n /**\r\n * @return Fill\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fill\");\r\n },\r\n /**\r\n * Element's fill color or pattern.\r\n *\r\n * @param value Fill\r\n */\r\n set: function (value) {\r\n this.setFill(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\r\n Sprite.prototype.setFill = function (value) {\r\n if (!$type.isObject(value) || \"r\" in value) {\r\n value = toColor(value);\r\n }\r\n if (this.setColorProperty(\"fill\", value) || this.fillModifier) {\r\n // this can not go into next if, as value is turned to Gradient\r\n if (value instanceof Color) {\r\n if (this.fillModifier) {\r\n value = this.fillModifier.modify(value);\r\n }\r\n }\r\n this.realFill = value;\r\n // todo: review this place when some Color type will be added\r\n if (value instanceof Color) {\r\n this.setSVGAttribute({ \"fill\": value.toString() });\r\n }\r\n else if (!$type.hasValue(value)) {\r\n this.removeSVGAttribute(\"fill\");\r\n }\r\n else if (value instanceof Pattern || value instanceof LinearGradient || value instanceof RadialGradient) {\r\n var fill = value;\r\n fill.paper = this.paper;\r\n this.setSVGAttribute({ \"fill\": \"url(\\\"\" + $utils.getBaseURI() + fill.id + \"\\\")\" });\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"opacity\", {\r\n /**\r\n * @return Opacity (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"opacity\");\r\n },\r\n /**\r\n * Element's opacity.\r\n *\r\n * Opacity setting can range from 0 (fully transparent) to 1 (fully opaque).\r\n *\r\n * ATTENTION: It is highly not recommended to use `opacity` directly on the\r\n * element. The charts use `opacity` to hide/show elements, so your setting\r\n * might be lost if element is hidden and then later shown.\r\n *\r\n * Instead use methods `hide()` and `show()` to completely toggle off and on\r\n * the element.\r\n *\r\n * Or, use properties `fillOpacity` and `strokeOpacity`, if you need to make\r\n * the element semi-transparent.\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n value = $math.toNumberRange(value, 0, 1);\r\n if (this.setPropertyValue(\"opacity\", value)) {\r\n this.setSVGAttribute({ \"opacity\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"stroke\", {\r\n /**\r\n * @return Stroke setting\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"stroke\");\r\n },\r\n /**\r\n * Element's stroke (outline) color or pattern.\r\n *\r\n * @param value Stroke setting\r\n */\r\n set: function (value) {\r\n this.setStroke(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets actual `stroke` property on the SVG element, including applicable\r\n * color modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Stroke setting\r\n */\r\n Sprite.prototype.setStroke = function (value) {\r\n if (!$type.isObject(value) || \"r\" in value) {\r\n value = toColor(value);\r\n }\r\n if (this.setColorProperty(\"stroke\", value) || this.strokeModifier) {\r\n // this can not go into next if, as value is turned to Gradient\r\n if (value instanceof Color) {\r\n if (this.strokeModifier) {\r\n value = this.strokeModifier.modify(value);\r\n }\r\n }\r\n this.realStroke = value;\r\n if (value instanceof Color) {\r\n if (value.hex == \"none\") {\r\n this.removeSVGAttribute(\"stroke\");\r\n }\r\n else {\r\n this.setSVGAttribute({ \"stroke\": value.toString() });\r\n }\r\n }\r\n else if (!$type.hasValue(value)) {\r\n this.removeSVGAttribute(\"stroke\");\r\n }\r\n else if (value instanceof Pattern || value instanceof LinearGradient || value instanceof RadialGradient) {\r\n var stroke = value;\r\n stroke.paper = this.paper;\r\n this.setSVGAttribute({ \"stroke\": \"url(\\\"\" + $utils.getBaseURI() + stroke.id + \"\\\")\" });\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"strokeOpacity\", {\r\n /**\r\n * @return Opacity (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeOpacity\");\r\n },\r\n /**\r\n * Stroke (outline) opacity.\r\n *\r\n * The values may range from 0 (fully transparent) to 1 (fully opaque).\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n value = $math.toNumberRange(value, 0, 1);\r\n if (this.setPropertyValue(\"strokeOpacity\", value)) {\r\n this.setSVGAttribute({ \"stroke-opacity\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"nonScalingStroke\", {\r\n /**\r\n * @return Do not scale stroke (outline)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nonScalingStroke\");\r\n },\r\n /**\r\n * Controls if the element's stroke (outline) should remain keep constant\r\n * thicnkess and do not scale when the whole element is resized.\r\n *\r\n * @param value Do not scale stroke (outline)\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"nonScalingStroke\", value)) {\r\n this.strokeWidth = this.strokeWidth;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"nonScaling\", {\r\n /**\r\n * @return Is element scaleable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nonScaling\");\r\n },\r\n /**\r\n * Controls if element should keep constant size and not scale even if there is\r\n * space available, or it does not fit.\r\n *\r\n * @param value Is element scaleable?\r\n */\r\n set: function (value) {\r\n // @todo Description (review)\r\n value = $type.toBoolean(value);\r\n this.setPropertyValue(\"nonScaling\", value, false, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeWidth\", {\r\n /**\r\n * @return Thickness (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeWidth\");\r\n },\r\n /**\r\n * Stroke (outline) thickness in pixels.\r\n *\r\n * @param value Thickness (px)\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n this.setPropertyValue(\"strokeWidth\", value, true);\r\n if (this.nonScalingStroke) {\r\n if (!$type.isNumber(value)) {\r\n value = 1;\r\n }\r\n value = value / this.globalScale;\r\n }\r\n this.setSVGAttribute({ \"stroke-width\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeDasharray\", {\r\n /**\r\n * @return `stroke-dasharray`\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeDasharray\");\r\n },\r\n /**\r\n * A `stroke-dasharray` for the stroke (outline).\r\n *\r\n * \"Dasharray\" allows setting rules to make lines dashed, dotted, etc.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray} for more info on `stroke-dasharray`\r\n * @param value `stroke-dasharray`\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"strokeDasharray\", value)) {\r\n this.setSVGAttribute({ \"stroke-dasharray\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeDashoffset\", {\r\n /**\r\n * @return `stroke-dashoffset`\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeDashoffset\");\r\n },\r\n /**\r\n * A `stroke-dashoffset` for the stroke (outline).\r\n *\r\n * \"Dashoffset\" allows setting the start position of the dashes if\r\n * `strokeDasharray` is used.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dashoffset} for more info on `stroke-dashoffset`\r\n * @param value `stroke-dashoffset`\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n if (this.setPropertyValue(\"strokeDashoffset\", value)) {\r\n this.setSVGAttribute({ \"stroke-dashoffset\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeLinecap\", {\r\n /**\r\n * @return `stroke-linecap`\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeLinecap\");\r\n },\r\n /**\r\n * A `stroke-linecap` to indicate how line ends are drawn.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Fills_and_Strokes#Stroke} for more info on `stroke-linecap`\r\n * @param value `stroke-linecap`\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"strokeLinecap\", value)) {\r\n this.setSVGAttribute({ \"stroke-linecap\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeLinejoin\", {\r\n /**\r\n * @return `stroke-linejoin`\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeLinejoin\");\r\n },\r\n /**\r\n * A `stroke-linejoin` to indicate how line ends are drawn.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Fills_and_Strokes#Stroke} for more info on `stroke-linejoin`\r\n * @param value `stroke-linejoin`\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"strokeLinejoin\", value)) {\r\n this.setSVGAttribute({ \"stroke-linejoin\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"shapeRendering\", {\r\n /**\r\n * @return 'shape-rendering' value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"shapeRendering\");\r\n },\r\n /**\r\n * An SVG-specific `shape-rendering` value.\r\n *\r\n * `shape-rendering` controls how vector graphics are drawn and rendered.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering} for more information about `shape-rendering`\r\n * @default \"auto\"\r\n * @param value 'shape-rendering' value\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"shapeRendering\", value)) {\r\n this.setSVGAttribute({ \"shape-rendering\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelPerfect\", {\r\n /**\r\n * @return Use pixel perfect?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pixelPerfect\");\r\n },\r\n /**\r\n * Controls if SVG vectors should be drawn with \"pixel\" precision, producing\r\n * perfectly crisp lines on retina displays.\r\n *\r\n * Setting this to `true` might improve visual quality, but may have a\r\n * negative effect on performance.\r\n *\r\n * Different elements use different default setting for `pixelPerfect`.\r\n *\r\n * We recommend leaving this at their default settings, unless there's a\r\n * specific need.\r\n *\r\n * @param value Use pixel perfect?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (value) {\r\n this._positionPrecision = options.pixelPerfectPrecision;\r\n }\r\n else {\r\n this._positionPrecision = 3;\r\n }\r\n this.setPropertyValue(\"pixelPerfect\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"rtl\", {\r\n /**\r\n * @return RTL?\r\n */\r\n get: function () {\r\n if ($type.hasValue(this._rtl)) {\r\n return this._rtl;\r\n }\r\n else if (this._topParent) {\r\n return this._topParent.rtl;\r\n }\r\n //this.rtl = false;\r\n return false;\r\n },\r\n /**\r\n * An RTL (right-to-left) setting.\r\n *\r\n * RTL may affect alignment, text, and other visual properties.\r\n *\r\n * If you set this on a top-level chart object, it will be used for all\r\n * child elements, e.g. labels, unless they have their own `rtl` setting\r\n * set directly on them.\r\n *\r\n * @param value `true` for to use RTL\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.isBaseSprite) {\r\n this.topParent.rtl = value;\r\n }\r\n this._rtl = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * ==========================================================================\r\n * VISIBILITY AND ORDER PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Reveals hidden element.\r\n *\r\n * Has no effect if element is already visible.\r\n *\r\n * If `duration` is not specified, it will use default.\r\n *\r\n * @param duration Fade in duration (ms)\r\n * @return Animation object if such object was created\r\n */\r\n Sprite.prototype.show = function (duration) {\r\n return this.showReal(duration);\r\n };\r\n /**\r\n * Performs actual operations to reveal this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param duration Fade in duration (ms)\r\n * @return Fade in duration (ms)\r\n */\r\n Sprite.prototype.showReal = function (duration) {\r\n var _this = this;\r\n if (this.preventShow) {\r\n return;\r\n }\r\n var transition;\r\n var properties = this.defaultState.properties;\r\n if (!this.disabled && (this.isHidden || !this.visible || this.isHiding || (properties.opacity != null && this.opacity < properties.opacity && !this.isShowing)) && !this.isDisposed()) {\r\n // helps to avoid flicker, as show might change opacity or visibility but item might be at invalid state/position\r\n if (this.invalid) {\r\n this.validate();\r\n }\r\n if (this.positionInvalid) {\r\n this.validatePosition();\r\n }\r\n if (!$type.isNumber(duration)) {\r\n duration = this.defaultState.transitionDuration;\r\n }\r\n if (this._hideAnimation) {\r\n this._hideAnimation.kill();\r\n this._hideAnimation = undefined;\r\n }\r\n // Cancel hide handler just in case it was there\r\n if (this._showHideDisposer) {\r\n this.removeDispose(this._showHideDisposer);\r\n }\r\n this._isHidden = false;\r\n this.isHiding = false;\r\n this.isShowing = true;\r\n // Apply current state\r\n transition = this.applyCurrentState(duration);\r\n if (transition && !transition.isFinished()) {\r\n this._showHideDisposer = transition.events.on(\"animationended\", function () {\r\n _this.isShowing = false;\r\n });\r\n this._disposers.push(this._showHideDisposer);\r\n }\r\n else {\r\n this.isShowing = false;\r\n }\r\n // Make it visible\r\n var visible = this.defaultState.properties.visible;\r\n if (!$type.hasValue(visible)) {\r\n visible = true;\r\n }\r\n this.visible = visible;\r\n // Unhide from screen readers\r\n this.readerHidden = false;\r\n // Dispatch \"show\" event\r\n this.dispatchImmediately(\"shown\");\r\n }\r\n return transition;\r\n };\r\n /**\r\n * Initiates hiding of Sprite.\r\n * When called it will fade out the the Sprite to transparency, then make it\r\n * invisible.\r\n * @param duration Duration in millisecons\r\n */\r\n /**\r\n * Hides the element, by applying `hidden` state.\r\n *\r\n * Has no effect if element is already hidden.\r\n *\r\n * If `duration` is not specified, it will use default.\r\n *\r\n * While element is fading out, its `isHiding` property will resolve to\r\n * `true`.\r\n *\r\n * When element is hidden, its `visible` property will resolve to `false`.\r\n *\r\n * @param duration Fade out duration (ms)\r\n * @return hide Animation object if such object was created\r\n */\r\n Sprite.prototype.hide = function (duration) {\r\n return this.hideReal(duration);\r\n };\r\n /**\r\n * Hides actual SVG elements and handles hiding animations.\r\n *\r\n * @param duration Fade out duration (ms)\r\n * @return Fade out duration (ms)\r\n * @ignore\r\n */\r\n Sprite.prototype.hideReal = function (duration) {\r\n var _this = this;\r\n var transition;\r\n if (!this.isHiding && this.visible && !this.isDisposed()) {\r\n // added to solve 51375\r\n if (this.tooltip && this.tooltip.currentSprite == this) {\r\n this.hideTooltip(0);\r\n }\r\n if (this._hideAnimation) {\r\n this._hideAnimation.kill();\r\n this._hideAnimation = undefined;\r\n }\r\n this.isShowing = false;\r\n // Cancel hide handler just in case it was there\r\n if (this._showHideDisposer) {\r\n this.removeDispose(this._showHideDisposer);\r\n }\r\n // Get state\r\n var hiddenState_1 = this.hiddenState;\r\n // Transition to \"hidden\" state, provided Sprite has one set\r\n if (hiddenState_1) {\r\n // Yes, we have a \"hidden\" state\r\n // `setState` will return an `Animation` object which we can set\r\n // events on\r\n transition = this.setState(hiddenState_1, duration, undefined);\r\n if (transition && !transition.isFinished()) {\r\n this._hideAnimation = transition;\r\n this._showHideDisposer = transition.events.on(\"animationended\", function () {\r\n _this.isHiding = false;\r\n _this._isHidden = true;\r\n if (hiddenState_1.properties.visible == false) {\r\n _this.visible = false;\r\n }\r\n }, this);\r\n this._disposers.push(this._showHideDisposer);\r\n // Thrown everything into `_disposers` just in case Sprite gets\r\n // destroyed in the meantime\r\n this._disposers.push(transition);\r\n }\r\n else {\r\n this.isHiding = false;\r\n this._isHidden = true;\r\n }\r\n }\r\n else {\r\n // No hidden state, let's just set `visible` and call it a day\r\n this.visible = false;\r\n this.isHiding = false;\r\n this._isHidden = true;\r\n }\r\n // Hide from screen readers\r\n this.readerHidden = true;\r\n // Dispach \"hidden\" event\r\n this.dispatchImmediately(\"hidden\");\r\n this.invalidate(); // hide it at once to avoid flickers // validate() causes SO\r\n }\r\n if (!$type.isNumber(duration)) {\r\n duration = this.hiddenState.transitionDuration;\r\n }\r\n return transition;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"visible\", {\r\n /**\r\n * @return Visible?\r\n */\r\n get: function () {\r\n return this.getVisibility();\r\n },\r\n /**\r\n * Indicates if element is current visible (`true`) or hidden (`false`).\r\n *\r\n * @param value Visible?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n this.setVisibility(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns visibility value\r\n * @ignore\r\n */\r\n Sprite.prototype.getVisibility = function () {\r\n var value = this.getPropertyValue(\"visible\");\r\n if (!$type.hasValue(value)) {\r\n value = true;\r\n }\r\n return value;\r\n };\r\n /**\r\n * Sets `visibility` property:\r\n *\r\n * * `true` - visible\r\n * * `false` - hidden\r\n *\r\n * @param value true - visible, false - hidden\r\n * @return Current visibility\r\n */\r\n Sprite.prototype.setVisibility = function (value) {\r\n if (this.setPropertyValue(\"visible\", value)) {\r\n if (value) {\r\n this.group.removeAttr(\"visibility\");\r\n }\r\n else {\r\n this.group.attr({ \"visibility\": \"hidden\" });\r\n }\r\n //this.invalidatePosition();\r\n if (this.events.isEnabled(\"visibilitychanged\")) {\r\n var event_4 = {\r\n type: \"visibilitychanged\",\r\n target: this,\r\n visible: value\r\n };\r\n this.events.dispatchImmediately(\"visibilitychanged\", event_4);\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"zIndex\", {\r\n /**\r\n * @return zIndex\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"zIndex\");\r\n },\r\n /**\r\n * A \"zIndex\" of the element.\r\n *\r\n * \"zIndex\" determines the order of how elements are placed over each other.\r\n *\r\n * Higher \"zIndex\" will mean the element will be draw on top of elements\r\n * with lower \"zIndexes\".\r\n *\r\n * @param value zIndex\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n if (this.setPropertyValue(\"zIndex\", value)) {\r\n this.dispatch(\"zIndexChanged\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Moves the element to the very top in element order, so that it appears\r\n * in front of other elements.\r\n */\r\n Sprite.prototype.toFront = function () {\r\n var parent = this._parent;\r\n if (parent && parent.children.indexOf(this) != parent.children.length - 1) {\r\n parent.children.moveValue(this, parent.children.length - 1);\r\n this.dispatch(\"zIndexChanged\");\r\n }\r\n };\r\n /**\r\n * Moves the element to the very bottom in the element order, so that it\r\n * appears behind other elements.\r\n */\r\n Sprite.prototype.toBack = function () {\r\n var parent = this._parent;\r\n if (parent && parent.children.indexOf(this) != 0) {\r\n parent.children.moveValue(this, 0);\r\n this.dispatch(\"zIndexChanged\");\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"userClassName\", {\r\n /**\r\n * @return Class name\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"userClassName\");\r\n },\r\n /**\r\n * A custom class name to set on the element.\r\n *\r\n * If set, the value will be added to element's `class` attribute.\r\n *\r\n * @since 4.9.11\r\n * @param value Class name\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"userClassName\", value)) {\r\n if (!value && this.userClassName) {\r\n this.group.removeClass(this.userClassName);\r\n }\r\n this.setClassName();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltip\", {\r\n /**\r\n * @return Tooltip\r\n */\r\n get: function () {\r\n if (this._tooltip) {\r\n return this._tooltip;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.tooltip;\r\n }\r\n else if (this._parent) {\r\n return this._parent.tooltip;\r\n }\r\n },\r\n /**\r\n * ==========================================================================\r\n * TOOLTIP-RELATED PROPERTIES STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * A [[Tooltip]] object to be used when displayed rollover information for\r\n * the element.\r\n *\r\n * @param tooltip Tooltip\r\n */\r\n set: function (tooltip) {\r\n if (this._tooltip) {\r\n //this._tooltip.dispose();\r\n this.removeDispose(this._tooltip);\r\n }\r\n this._tooltip = tooltip;\r\n if (tooltip) {\r\n tooltip.parent = this.tooltipContainer;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipDataItem\", {\r\n /**\r\n * @return Tooltip data item\r\n */\r\n get: function () {\r\n var tooltipDataItem = this._tooltipDataItem;\r\n if (tooltipDataItem) {\r\n return tooltipDataItem;\r\n }\r\n else {\r\n return this.dataItem;\r\n }\r\n },\r\n /**\r\n * A [[DataItem]] to use when populating content for the element's\r\n * [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n * @see {@link DataItem}\r\n * @param value Tooltip data item\r\n */\r\n set: function (value) {\r\n // important: do not dispose tooltip dataItem, as it is some actual data item from data!\r\n this._tooltipDataItem = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipColorSource\", {\r\n /**\r\n * @return Tooltip color source\r\n */\r\n get: function () {\r\n return this._tooltipColorSource;\r\n },\r\n /**\r\n * A [[Sprite]] or sprite template to use when getting colors for tooltip. If a template is set,\r\n * tooltip will look for a clone in tooltipDataItem.sprites. If no clone is found, then template colors will be used.\r\n *\r\n * @see {@link Tooltip}\r\n * @see {@link Sprite}\r\n * @param sprite Sprite\r\n */\r\n set: function (sprite) {\r\n this._tooltipColorSource = sprite;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Shows the element's [[Tooltip]].\r\n *\r\n * A tooltip will be populated using text templates in either `tooltipHTML` or\r\n * `tooltipText` as well as data in `tooltipDataItem`.\r\n *\r\n * @see {@link Tooltip}\r\n * @param optional point (sprite-related) to which tooltip must point.\r\n * @return returns true if the tooltip was shown and false if it wasn't (no text was found)\r\n */\r\n Sprite.prototype.showTooltip = function (point) {\r\n if (this.showTooltipOn == \"always\" && !this._tooltip && this.tooltip) {\r\n this._tooltip = this.tooltip.clone();\r\n }\r\n if (!point && this.tooltipPosition == \"pointer\" && this.isHover) {\r\n point = $utils.documentPointToSvg(getInteraction().lastPointer.point, this.svgContainer.SVGContainer, this.svgContainer.cssScale);\r\n }\r\n // do not show if hidden\r\n var sprite = this;\r\n while (sprite != undefined) {\r\n if (!sprite.visible || sprite.disabled || sprite.__disabled) {\r\n if (this._tooltip && this._tooltip.visible) {\r\n this._tooltip.hide(0);\r\n }\r\n return;\r\n }\r\n sprite = sprite.parent;\r\n }\r\n if ($type.hasValue(this.tooltipText) || $type.hasValue(this.tooltipHTML)) {\r\n var tooltip = this.tooltip;\r\n var tooltipDataItem = this.tooltipDataItem;\r\n if (tooltip) {\r\n tooltip.targetSprite = this;\r\n var colorSource_1 = this;\r\n var tooltipColorSource_1 = this.tooltipColorSource;\r\n if ((tooltip.getStrokeFromObject || tooltip.getFillFromObject) && tooltipColorSource_1) {\r\n if (tooltipColorSource_1.isTemplate) {\r\n if (tooltipDataItem) {\r\n $array.eachContinue(tooltipDataItem.sprites, function (sprite) {\r\n if (sprite.clonedFrom == tooltipColorSource_1) {\r\n colorSource_1 = sprite;\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n }\r\n else {\r\n colorSource_1 = tooltipColorSource_1;\r\n }\r\n }\r\n if (tooltip.getStrokeFromObject) {\r\n var stroke = this.stroke;\r\n var source = colorSource_1;\r\n while (source.parent != undefined) {\r\n stroke = source.stroke;\r\n if (stroke == undefined) {\r\n source = source.parent;\r\n }\r\n if (stroke != undefined) {\r\n break;\r\n }\r\n }\r\n if (stroke instanceof Color) {\r\n tooltip.background.animate({ property: \"stroke\", to: stroke }, tooltip.animationDuration);\r\n }\r\n else {\r\n tooltip.background.stroke = stroke;\r\n }\r\n }\r\n // Set data item\r\n tooltip.dataItem = tooltipDataItem;\r\n tooltip.label.populateStringFrom = this;\r\n if (tooltip.getFillFromObject) {\r\n var fill = this.fill;\r\n var source = colorSource_1;\r\n while (source.parent != undefined) {\r\n fill = source.fill;\r\n if (fill == undefined || (fill instanceof Color && fill.rgb == undefined)) {\r\n source = source.parent;\r\n }\r\n else if (fill != undefined) {\r\n break;\r\n }\r\n }\r\n if (fill == undefined) {\r\n fill = color(\"#000000\");\r\n }\r\n if (fill instanceof Color) {\r\n if (!tooltip.visible) {\r\n tooltip.background.fill = fill;\r\n }\r\n else {\r\n tooltip.background.animate({ property: \"fill\", to: fill }, tooltip.animationDuration);\r\n }\r\n }\r\n else {\r\n tooltip.background.fill = fill;\r\n }\r\n if (tooltip.autoTextColor && fill instanceof Color) {\r\n tooltip.label.fill = fill.alternative;\r\n }\r\n }\r\n // Apply tooltip text\r\n var text = \"\";\r\n if (this.tooltipHTML) {\r\n tooltip.html = this.tooltipHTML;\r\n text = this.tooltipHTML;\r\n }\r\n if (this.tooltipText) {\r\n tooltip.text = this.tooltipText;\r\n text = this.tooltipText;\r\n }\r\n if (this.updateTooltipPosition(point)) {\r\n // Set accessibility option\r\n tooltip.readerDescribedBy = this.uidAttr();\r\n // make label to render to be able to check currentText\r\n if (tooltip.label.invalid) {\r\n tooltip.label.validate();\r\n }\r\n if (text != undefined && text != \"\" && tooltip.label.currentText != \"\") {\r\n //@todo: think of how to solve this better\r\n if (tooltip && !tooltip.parent) {\r\n tooltip.parent = this.tooltipContainer;\r\n }\r\n // Reveal tooltip\r\n // showing it in 1 ms helps to avoid strange flickering in IE\r\n var duration = tooltip.defaultState.transitionDuration;\r\n if (duration <= 0) {\r\n duration = 1;\r\n }\r\n tooltip.show(duration);\r\n tooltip.currentSprite = this;\r\n return true;\r\n }\r\n else {\r\n this.hideTooltip(0);\r\n }\r\n }\r\n else {\r\n this.hideTooltip(0);\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.updateTooltipPosition = function (point) {\r\n var _this = this;\r\n if (this.tooltipPosition == \"pointer\") {\r\n if (this._interactionDisposer) {\r\n this._interactionDisposer.dispose();\r\n }\r\n this._interactionDisposer = getInteraction().body.events.on(\"track\", function (ev) {\r\n return _this.pointTooltipTo($utils.documentPointToSvg(ev.point, _this.svgContainer.SVGContainer, _this.svgContainer.cssScale), true);\r\n });\r\n if (point) {\r\n return this.pointTooltipTo(point, true);\r\n }\r\n }\r\n else {\r\n // Point to the X/Y of this Sprite\r\n var globalPoint = $utils.spritePointToSvg({\r\n \"x\": this.getTooltipX(),\r\n \"y\": this.getTooltipY()\r\n }, this);\r\n return this.pointTooltipTo(globalPoint);\r\n }\r\n };\r\n /**\r\n * Sets the point the [[Tooltip]] should point to.\r\n *\r\n * @param point Coordinates to point to\r\n * @param instantly Move instantly without animation\r\n */\r\n Sprite.prototype.pointTooltipTo = function (point, instantly) {\r\n var tooltip = this.tooltip;\r\n if (tooltip && this.topParent) {\r\n if (tooltip.showInViewport) {\r\n tooltip.pointTo(point, instantly);\r\n return true;\r\n }\r\n if ($math.isInRectangle(point, { x: 0, y: 0, width: this.topParent.maxWidth, height: this.topParent.maxHeight })) {\r\n tooltip.pointTo(point, instantly);\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * Hides element's [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n */\r\n Sprite.prototype.hideTooltip = function (duration) {\r\n if (this.showTooltipOn == \"always\") {\r\n return;\r\n }\r\n var tooltip = this.tooltip;\r\n if (tooltip) {\r\n if (tooltip.targetSprite == this) {\r\n tooltip.targetSprite = undefined;\r\n }\r\n tooltip.hide(duration);\r\n if (this._interactionDisposer) {\r\n this._interactionDisposer.dispose();\r\n this._interactionDisposer = undefined;\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"tooltipHTML\", {\r\n /**\r\n * @return Tooltip HTML content template\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipHTML\");\r\n },\r\n /**\r\n * An HTML template to be used to populate [[Tooltip]] contents.\r\n *\r\n * If element has `tooltipDataItem` or `dataItem` set, this will be parsed\r\n * for any data values to be replaced with the values from respective data\r\n * items.\r\n *\r\n * @param value Tooltip HTML content template\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n this.hoverable = true;\r\n if (this.setPropertyValue(\"tooltipHTML\", value)) {\r\n if (this.tooltip) {\r\n if (this.tooltip.visible) {\r\n this.showTooltip();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipText\", {\r\n /**\r\n * @return Tooltip content template\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipText\");\r\n },\r\n /**\r\n * A text template to be used to populate Tooltip's contents.\r\n *\r\n * If element has `tooltipDataItem` or `dataItem` set, this will be parsed\r\n * for any data values to be replaced with the values from respective data\r\n * items.\r\n *\r\n * This template will also be parsed for any special formatting tags.\r\n *\r\n * @param value Tooltip content template\r\n * @see {@link TextFormatter}\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (value) {\r\n this.hoverable = true;\r\n }\r\n if (this.setPropertyValue(\"tooltipText\", value)) {\r\n if (this.tooltip) {\r\n if (this.tooltip.visible) {\r\n this.showTooltip();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipContainer\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Container\r\n */\r\n get: function () {\r\n if (this._tooltipContainer) {\r\n return this._tooltipContainer;\r\n }\r\n else if (this._parent) {\r\n return this._parent.tooltipContainer;\r\n }\r\n },\r\n /**\r\n * A container reference that should be used to place element's\r\n * [[Tooltip]] in.\r\n *\r\n * Will use parent's container if does not have one set.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Container\r\n * @todo Dispose of the old _tooltipContainer ?\r\n */\r\n set: function (value) {\r\n this._tooltipContainer = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipX\", {\r\n /**\r\n * @return Tooltip X (px)\r\n */\r\n get: function () {\r\n return this.getTooltipX();\r\n },\r\n /**\r\n * X coordinate the [[Tooltip]] should be shown at.\r\n *\r\n * @param value Tooltip X (px)\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"tooltipX\", value) && this.tooltip) {\r\n this.tooltip.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"alwaysShowTooltip\", {\r\n /**\r\n * @return Always show tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"showTooltipOn\") == \"always\";\r\n },\r\n /**\r\n * DEPRECATION NOTICE: This setting is deprecated in favor of a more flexible\r\n * setting: `showTooltipOn`. Please use `showTooltipOn = \"always\"` instead.\r\n *\r\n * Indicates if this element should display a tooltip permanently.\r\n *\r\n * Useful, if you want to show permanent tooltips on some items.\r\n *\r\n * @default false\r\n * @since 4.5.4\r\n * @deprecated Use `showTooltipOn = \"always\"` instead\r\n * @param value Always show tooltip?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (value) {\r\n this.showTooltipOn = \"always\";\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"showTooltipOn\", {\r\n /**\r\n * @return When to show tooltip\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"showTooltipOn\");\r\n },\r\n /**\r\n * Indicates when tooltip needs to be shown on this element:\r\n *\r\n * * `\"hover\"` (default) - Tooltip will be shown when element is hovered on.\r\n * * `\"hit\"` - Tooltip will be shown when element is clicked/tapped. Tooltip will be hidden when clicked/tapped anywhere else.\r\n * * `\"always\"` - Tooltip will be shown on the element permanently.\r\n *\r\n * For example, if you would like to show tooltips on all of the columns of\r\n * a [[ColumnSeries]]:\r\n *\r\n * ```TypeScript\r\n * series.columns.template.showTooltipOn = \"always\";\r\n * ```\r\n * ```JavaScript\r\n * series.columns.template.showTooltipOn = \"always\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"columns\": {\r\n * \"showTooltipOn\": \"always\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * It can even be set to display on a selected columns via `propertyFields`:\r\n *\r\n * ```TypeScript\r\n * series.columns.template.propertyFields.showTooltipOn = \"tooltip\";\r\n * ```\r\n * ```JavaScript\r\n * series.columns.template.propertyFields.showTooltipOn = \"tooltip\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"columns\": {\r\n * \"propertyFields\": {\r\n * \"showTooltipOn\": \"tooltip\"\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default \"hover\"\r\n * @since 4.7.9\r\n * @param value When to show tooltip\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"showTooltipOn\", value)) {\r\n if (value == \"hit\") {\r\n this.clickable = true;\r\n }\r\n if (this.tooltip) {\r\n if (value == \"always\") {\r\n this.showTooltip();\r\n }\r\n else {\r\n this.handleAlwaysShowTooltip();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipPosition\", {\r\n /**\r\n * Position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipPosition\");\r\n },\r\n /**\r\n * Specifies if [[Tooltip]] should follow the mouse or touch pointer or stay\r\n * at the fixed position.\r\n *\r\n * @param value Position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipPosition\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipY\", {\r\n /**\r\n * @return Tooltip Y (px)\r\n */\r\n get: function () {\r\n return this.getTooltipY();\r\n },\r\n /**\r\n * Y coordinate the [[Tooltip]] should be shown at.\r\n *\r\n * @param value Tooltip Y (px)\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"tooltipY\", value) && this.tooltip) {\r\n this.tooltip.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns Tooltip X coordinate if it's set, or middle of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return X (px)\r\n */\r\n Sprite.prototype.getTooltipX = function () {\r\n var x = this.getPropertyValue(\"tooltipX\");\r\n if (!$type.hasValue(x)) {\r\n x = percent(50);\r\n }\r\n var value;\r\n if ($type.isNumber(x)) {\r\n value = x;\r\n }\r\n if (x instanceof Percent) {\r\n value = this.maxLeftSelf + this._measuredWidthSelf * x.value - this.pixelPaddingLeft - this.ex; // overflow is know only for measured items, so this is not always good\r\n }\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n return value;\r\n };\r\n /**\r\n * Returns Tooltip Y coordinate if it's set, or middle of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Y (px)\r\n */\r\n Sprite.prototype.getTooltipY = function () {\r\n var y = this.getPropertyValue(\"tooltipY\");\r\n if (!$type.hasValue(y)) {\r\n y = percent(50);\r\n }\r\n var value;\r\n if ($type.isNumber(y)) {\r\n value = y;\r\n }\r\n if (y instanceof Percent) {\r\n value = this.maxTopSelf + this._measuredHeightSelf * y.value - this.pixelPaddingTop - this.ey; // overflow is know only for measured items, so this is not always good\r\n }\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n return value;\r\n };\r\n /**\r\n * Displays a modal or console message with error, and halts any further\r\n * processing of this item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param e Error\r\n * @todo Implement from applying further actions to this item\r\n */\r\n Sprite.prototype.raiseCriticalError = function (e, closable) {\r\n if (this.svgContainer) {\r\n if (!this._adapterO) {\r\n this.modal.content = e.message;\r\n }\r\n else {\r\n this.modal.content = this._adapterO.apply(\"criticalError\", e).message;\r\n }\r\n if (!closable) {\r\n this.disabled = true;\r\n }\r\n else {\r\n this.modal.closable = true;\r\n }\r\n if (!options.suppressErrors) {\r\n this.modal.open();\r\n }\r\n }\r\n if (options.verbose) {\r\n console.log(e);\r\n }\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Sprite.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Tooltip color source\r\n if ($type.hasValue(config.tooltipColorSource) && $type.isString(config.tooltipColorSource) && this.map.hasKey(config.tooltipColorSource)) {\r\n config.tooltipColorSource = this.map.getKey(config.tooltipColorSource);\r\n }\r\n // Cursor styles\r\n if ($type.hasValue(config.cursorOverStyle) && $type.isString(config.cursorOverStyle)) {\r\n config.cursorOverStyle = this.getCursorStyle(config.cursorOverStyle);\r\n }\r\n if ($type.hasValue(config.cursorDowntyle) && $type.isString(config.cursorDowntyle)) {\r\n config.cursorDowntyle = this.getCursorStyle(config.cursorDowntyle);\r\n }\r\n if ($type.hasValue(config.cursorOptions)) {\r\n if ($type.hasValue(config.cursorOptions.overStyle) && $type.isString(config.cursorOptions.overStyle)) {\r\n config.cursorOptions.overStyle = this.getCursorStyle(config.cursorOptions.overStyle);\r\n }\r\n if ($type.hasValue(config.cursorOptions.downStyle) && $type.isString(config.cursorOptions.downStyle)) {\r\n config.cursorOptions.downStyle = this.getCursorStyle(config.cursorOptions.downStyle);\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n this.processDelayedMap();\r\n };\r\n /**\r\n * Converts string name of the cursor into actual [[MouseCursorStyle]].\r\n *\r\n * @param style Cursor type\r\n * @return Cursor definition\r\n */\r\n Sprite.prototype.getCursorStyle = function (style) {\r\n switch (style) {\r\n case \"grab\":\r\n return MouseCursorStyle.grab;\r\n case \"grabbing\":\r\n return MouseCursorStyle.grabbing;\r\n case \"pointer\":\r\n return MouseCursorStyle.pointer;\r\n case \"horizontalResize\":\r\n return MouseCursorStyle.horizontalResize;\r\n case \"verticalResize\":\r\n return MouseCursorStyle.verticalResize;\r\n default:\r\n return MouseCursorStyle.default;\r\n }\r\n };\r\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\r\n Sprite.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // Must come last\r\n else if (a == \"tooltipColorSource\") {\r\n return 1;\r\n }\r\n else if (b == \"tooltipColorSource\") {\r\n return -1;\r\n }\r\n else {\r\n return _super.prototype.configOrder.call(this, a, b);\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"isHidden\", {\r\n /**\r\n * If `sprite.hide()` is called, we set isHidden to true when sprite is hidden.\r\n * This was added becaus hidden state might have visibility set to true and so\r\n * there would not be possible to find out if a sprite is technically hidden or not.\r\n */\r\n get: function () {\r\n if (this._isHidden) {\r\n return this._isHidden;\r\n }\r\n else if (this._parent) {\r\n return this._parent.isHidden;\r\n }\r\n return false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"showOnInit\", {\r\n /**\r\n * @return Show on init?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"showOnInit\");\r\n },\r\n /**\r\n * If this is set to `true`, Sprite, when inited will be instantly hidden\r\n * (\"hidden\" state applied) and then shown (\"default\" state applied).\r\n *\r\n * If your \"default\" state's `transitionDuration > 0` this will result in\r\n * initial animation from \"hidden\" state to \"default\" state.\r\n *\r\n * If you need a Sprite which has `showOnInit = true` not to be shown\r\n * initially, set `sprite.hidden = true`. Setting `sprite.visible = false`\r\n * will not prevent the animation and the sprite will be shown.\r\n *\r\n * @param value show on init?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n this.setShowOnInit(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.setShowOnInit = function (value) {\r\n if (this.setPropertyValue(\"showOnInit\", value)) {\r\n if (!this.isTemplate) {\r\n if (value && !this.inited && !this.hidden) {\r\n this._showOnInitDisposer = new MultiDisposer([\r\n registry.events.once(\"enterframe\", this.hideInitially, this),\r\n this.events.once(\"beforevalidated\", this.hideInitially, this, false),\r\n this.events.on(\"inited\", this.appear, this, false)\r\n ]);\r\n this._disposers.push(this._showOnInitDisposer);\r\n }\r\n else {\r\n if (this._showOnInitDisposer) {\r\n this._showOnInitDisposer.dispose();\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.hideInitially = function () {\r\n if (!this.isDisposed()) {\r\n this.appeared = false;\r\n //if (!this.hidden && !this._isHidden) { // not good for series, as on enterframe it doesn't have data items yet.\r\n if (!this.inited) {\r\n this.hide(0);\r\n }\r\n }\r\n };\r\n /**\r\n * Hides the chart instantly and then shows it. If defaultState.transitionDuration > 0, this will result an animation in which properties of hidden state will animate to properties of visible state.\r\n */\r\n Sprite.prototype.appear = function () {\r\n var _this = this;\r\n this.appeared = false;\r\n if (!this.hidden && !this.isHidden) {\r\n this.hide(0);\r\n }\r\n if (!this.hidden) {\r\n var animation = this.show();\r\n if (animation && !animation.isFinished()) {\r\n this.addDisposer(animation.events.on(\"animationended\", function () {\r\n _this.appeared = true;\r\n _this.dispatch(\"appeared\");\r\n }));\r\n }\r\n else {\r\n this.appeared = true;\r\n this.dispatch(\"appeared\");\r\n }\r\n }\r\n else {\r\n this.appeared = true;\r\n this.dispatch(\"appeared\");\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"hidden\", {\r\n /**\r\n * @return Is initially hidden?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hidden\");\r\n },\r\n /**\r\n * If a sprite has `showOnInit = true`, it will animate from \"hidden\" to\r\n * \"default\" state when initialized. To prevent this but keep\r\n * `showOnInit = true`, you can set `sprite.hidden = true`.\r\n *\r\n * @param value initially hidden?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n this.setPropertyValue(\"hidden\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n return this._bbox;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"plugins\", {\r\n /**\r\n * A list of plugins (objects that implement [[IPlugin]] interface) attached\r\n * to this object.\r\n *\r\n * @since 4.2.2\r\n * @return List of plugins\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._plugins) {\r\n this._plugins = new List();\r\n this._disposers.push(this._plugins.events.on(\"inserted\", function (ev) {\r\n ev.newValue.target = _this;\r\n ev.newValue.init();\r\n }));\r\n this._disposers.push(new ListDisposer(this._plugins));\r\n }\r\n return this._plugins;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype._systemUpdate = function (skippedSprites) {\r\n this.validate();\r\n };\r\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype._systemCheckIfValidate = function () {\r\n return true;\r\n };\r\n /**\r\n * Called during the System.validatePositions method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype._systemValidatePositions = function () {\r\n this.validatePosition();\r\n };\r\n /**\r\n * Called during the System.validateLayouts method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype._systemValidateLayouts = function () {\r\n };\r\n return Sprite;\r\n}(BaseObjectEvents));\r\nexport { Sprite };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Sprite\"] = Sprite;\r\n","import { __extends } from \"tslib\";\r\nimport { Dictionary } from \"./utils/Dictionary\";\r\nimport { TargetedEventDispatcher } from \"./utils/EventDispatcher\";\r\nimport { MultiDisposer, CounterDisposer } from \"./utils/Disposer\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $object from \"./utils/Object\";\r\n/**\r\n * An [[EventDispatcher]] for [[Sprite]].\r\n *\r\n * @important\r\n */\r\nvar SpriteEventDispatcher = /** @class */ (function (_super) {\r\n __extends(SpriteEventDispatcher, _super);\r\n function SpriteEventDispatcher() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * [_interactionEvents description]\r\n *\r\n * @todo Description\r\n */\r\n _this._interactionEvents = new Dictionary();\r\n return _this;\r\n }\r\n /**\r\n * [_dispatchSpriteEvent description]\r\n *\r\n * @todo Description\r\n */\r\n SpriteEventDispatcher.prototype._dispatchSpriteEvent = function (ev) {\r\n if (this.target.disabled || this.target.isTemplate) {\r\n return;\r\n }\r\n // TODO remove this <any> later\r\n if (this.target.events.isEnabled(ev.type)) {\r\n var imev = $object.merge(ev, {\r\n target: this.target\r\n });\r\n this.target.events.dispatchImmediately(imev.type, imev);\r\n }\r\n };\r\n /**\r\n * [_dispatchSpritePointEvent description]\r\n *\r\n * @todo Description\r\n */\r\n SpriteEventDispatcher.prototype._dispatchSpritePointEvent = function (ev) {\r\n if (this.target.disabled || this.target.isTemplate) {\r\n return;\r\n }\r\n // TODO remove this <any> later\r\n if (this.target.events.isEnabled(ev.type)) {\r\n var imev = $object.merge(ev, {\r\n target: this.target,\r\n spritePoint: ev.point ? $utils.documentPointToSprite(ev.point, this.target) : undefined,\r\n svgPoint: this.target.getSvgPoint(ev.point)\r\n });\r\n this.target.events.dispatchImmediately(imev.type, imev);\r\n }\r\n };\r\n /**\r\n * [_addInteractionObjectEvent description]\r\n *\r\n * @todo Description\r\n */\r\n SpriteEventDispatcher.prototype._addInteractionObjectEvent = function (type, callback, context, shouldClone) {\r\n var _this = this;\r\n var key = shouldClone + \"-\" + type;\r\n var counter = this._interactionEvents.insertKeyIfEmpty(key, function () {\r\n var disposer = _this.target.interactions.events.on(type, callback, context, shouldClone);\r\n return new CounterDisposer(function () {\r\n _this._interactionEvents.removeKey(key);\r\n disposer.dispose();\r\n });\r\n });\r\n return counter.increment();\r\n };\r\n /**\r\n * [_on description]\r\n *\r\n * @todo Description\r\n */\r\n SpriteEventDispatcher.prototype._on = function (once, type, callback, context, shouldClone, dispatch) {\r\n var info = _super.prototype._on.call(this, once, type, callback, context, shouldClone, dispatch);\r\n var disposers = [info.disposer];\r\n /**\r\n * Catching Sprite-related events, converting them to [[SpriteEvent]] and\r\n * triggering them on sprite\r\n */\r\n switch (type) {\r\n case \"hit\":\r\n case \"track\":\r\n case \"doublehit\":\r\n case \"wheel\":\r\n case \"wheelup\":\r\n case \"wheeldown\":\r\n case \"wheelleft\":\r\n case \"wheelright\":\r\n disposers.push(this._addInteractionObjectEvent(type, this._dispatchSpritePointEvent, this, shouldClone));\r\n break;\r\n case \"rightclick\":\r\n case \"down\":\r\n //case \"hold\":\r\n case \"up\":\r\n case \"drag\":\r\n case \"dragged\":\r\n case \"dragstart\":\r\n case \"dragstop\":\r\n case \"over\":\r\n case \"out\":\r\n case \"swipe\":\r\n case \"swipeleft\":\r\n case \"swiperight\":\r\n case \"resize\":\r\n //case \"rotate\":\r\n case \"focus\":\r\n case \"blur\":\r\n case \"toggled\":\r\n disposers.push(this._addInteractionObjectEvent(type, this._dispatchSpriteEvent, this, shouldClone));\r\n break;\r\n }\r\n /**\r\n * Set functional properties based on events. For example if we add a\r\n * \"drag\" event handler, we want to make the Sprite draggable, even if we\r\n * don't explicitly set \"draggable\"\r\n */\r\n switch (type) {\r\n case \"hit\":\r\n case \"doublehit\":\r\n case \"rightclick\":\r\n case \"down\":\r\n case \"up\":\r\n this.target.clickable = true;\r\n break;\r\n case \"toggled\":\r\n this.target.togglable = true;\r\n break;\r\n case \"drag\":\r\n case \"dragstart\":\r\n case \"dragstop\":\r\n this.target.draggable = true;\r\n break;\r\n case \"track\":\r\n this.target.trackable = true;\r\n break;\r\n case \"resize\":\r\n this.target.resizable = true;\r\n break;\r\n case \"swipe\":\r\n case \"swipeleft\":\r\n case \"swiperight\":\r\n this.target.swipeable = true;\r\n break;\r\n case \"wheel\":\r\n case \"wheelup\":\r\n case \"wheeldown\":\r\n case \"wheelleft\":\r\n case \"wheelright\":\r\n this.target.wheelable = true;\r\n break;\r\n case \"over\":\r\n this.target.hoverable = true;\r\n case \"out\":\r\n this.target.hoverable = true;\r\n break;\r\n case \"focus\":\r\n case \"blur\":\r\n this.target.focusable = true;\r\n break;\r\n }\r\n info.disposer = new MultiDisposer(disposers);\r\n return info;\r\n };\r\n return SpriteEventDispatcher;\r\n}(TargetedEventDispatcher));\r\nexport { SpriteEventDispatcher };\r\n","/**\r\n * Module contains functionality related to [[Sprite]] states.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"./Base\";\r\nimport { registry } from \"./Registry\";\r\nimport { Adapter } from \"./utils/Adapter\";\r\nimport { List, ListDisposer } from \"./utils/List\";\r\nimport { toColor } from \"./utils/Color\";\r\nimport { percent } from \"./utils/Percent\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $ease from \"./utils/Ease\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n/**\r\n * Defines a state for [[Sprite]].\r\n *\r\n * A \"state\" is a special object that has all the same properties as the\r\n * [[Sprite]] of the same type, and which can be used to quickly apply a set\r\n * of property values. (set state)\r\n *\r\n * When [[Sprite]] (or any object that extends Sprite) is created it creates a\r\n * \"default\" state. You can modify the \"default\" state so that when the Sprite\r\n * returns to default state certain properties are added.\r\n *\r\n * Default state can be accessed using Sprite's `defaultState` getter.\r\n *\r\n * ```TypeScript\r\n * sprite.defaultState.properties.fillOpacity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * sprite.defaultState.properties.fillOpacity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"defaultState\": {\r\n * \"properties\": {\r\n * \"fillOpacity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * If Sprite is \"hoverable\", it automatically adds a \"hover\" state, which is\r\n * applied when it has a cursor over it.\r\n *\r\n * ```TypeScript\r\n * let hoverstate = sprite.states.create(\"hover\");\r\n * hoverstate.properties.fillOpacity = 1;\r\n * ```\r\n * ```JavaScript\r\n * var hoverstate = sprite.states.create(\"hover\");\r\n * hoverstate.properties.fillOpacity = 1;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"states\": {\r\n * \"hover\": {\r\n * \"properties\": {\r\n * \"fillOpacity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * The above will automatically apply \"hover\" state when the Sprite is hovered,\r\n * thus will set its `fillOpacity` property to 1, and will reset it to 0.5 when\r\n * it's no longer hovered.\r\n *\r\n * Every object that inherits from [[Sprite]] can and will add their own\r\n * properties to the available list.\r\n *\r\n * User can create their own states, and apply them as needed:\r\n *\r\n * ```TypeScript\r\n * let myCustomState = sprite.states.create(\"mystate\");\r\n * myCustomState.properties.fillOpacity = 0.5;\r\n * myCustomState.properties.strokeOpacity = 0.8;\r\n * sprite.setState(\"mystate\");\r\n * ```\r\n * ```JavaScript\r\n * var myCustomState = sprite.states.create(\"mystate\");\r\n * myCustomState.properties.fillOpacity = 0.5;\r\n * myCustomState.properties.strokeOpacity = 0.8;\r\n * sprite.setState(\"mystate\");\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/states/}\r\n * @important\r\n */\r\nvar SpriteState = /** @class */ (function (_super) {\r\n __extends(SpriteState, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SpriteState() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Duration of the transition to this state. 0 means instantenous transition.\r\n * Any number means the [[Sprite]] will transit smoothly to this state,\r\n * animating all animatable properties.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.transitionDuration = 0;\r\n /**\r\n * Easing function to use when transitioning to this state.\r\n *\r\n * @default cubicOut\r\n * @see {@link Ease}\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.transitionEasing = $ease.cubicOut;\r\n /**\r\n * Collection of properties and their values that should be applied to [[Sprite]]\r\n * when switching to this State.\r\n *\r\n * The property values set on a [[SpriteState]] will override the ones set\r\n * directly on a [[Sprite]].\r\n */\r\n _this.properties = {};\r\n /**\r\n * A collection of key/value pairs that can be used to bind specific Sprite\r\n * properties to [[DataItem]].\r\n *\r\n * For example: `fill` property can be bound to `myCustomColor` field in\r\n * DataItem. The Sprite will automatically get the value for `fill` from its\r\n * DataItem.\r\n *\r\n * SpriteState-specific binding will override binding set directly on\r\n * [[Sprite]]. I.e. you can make Sprite use different fill color on hover by\r\n * adding a `fill` binding to a different DataItem key for Sprite's \"hover\"\r\n * state object.\r\n *\r\n * @see {@link Sprite}\r\n */\r\n _this.propertyFields = {};\r\n //public propertyFields: Dictionary<keyof this[\"_properties\"], string> = new Dictionary<keyof this[\"_properties\"], string>();;\r\n /**\r\n * A list of [[Filter]] elements to be applied to the relative [[Sprite]]\r\n * when switching to this State.\r\n *\r\n * @param {List}\r\n */\r\n _this.filters = new List();\r\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n */\r\n _this.isTemplate = false;\r\n _this.className = \"SpriteState\";\r\n // Make filter list disposable\r\n _this._disposers.push(new ListDisposer(_this.filters));\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(SpriteState.prototype, \"adapter\", {\r\n /**\r\n * Holds Adapter.\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._adapterO) {\r\n this._adapterO = new Adapter(this);\r\n // Decorate adapter with events so that we can apply its settings whenever\r\n // it is modified\r\n this._adapterO.events.on(\"inserted\", function (ev) {\r\n _this[ev.newValue.key] = _this[ev.newValue.key];\r\n }, undefined, false);\r\n this._adapterO.events.on(\"removed\", function (ev) {\r\n _this[ev.newValue.key] = _this[ev.newValue.key];\r\n }, undefined, false);\r\n }\r\n return this._adapterO;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns [[Sprite]] element's property value.\r\n *\r\n * Will check if there are any bindings with [[DataItem]] and if there are\r\n * any method callbacks set up for the specific property.\r\n *\r\n * @param propertyName Property name\r\n * @return Property value\r\n */\r\n SpriteState.prototype.getPropertyValue = function (propertyName) {\r\n var propValue = this.properties[propertyName];\r\n var sprite = this.sprite;\r\n if (sprite) {\r\n var fieldName = this.propertyFields[propertyName];\r\n if ($type.hasValue(fieldName)) {\r\n if (sprite.dataItem) {\r\n propValue = sprite.dataItem.dataContext[fieldName];\r\n }\r\n if (propValue == undefined) {\r\n propValue = \"__unset\";\r\n }\r\n }\r\n // Apply adapters\r\n // If the value itself is undefined, we're going to pass in Sprite's\r\n // value to adapters\r\n // @todo get rid of <any>\r\n if (!$type.hasValue(propValue)) {\r\n var spriteValue = sprite.getPropertyValue(propertyName);\r\n if (this._adapterO) {\r\n propValue = this._adapterO.apply(propertyName, spriteValue);\r\n }\r\n else {\r\n propValue = spriteValue;\r\n }\r\n if (propValue == spriteValue) {\r\n propValue = undefined;\r\n }\r\n }\r\n else {\r\n if (this._adapterO) {\r\n propValue = this._adapterO.apply(propertyName, propValue);\r\n }\r\n }\r\n /*let method = this.propertyMethods.getKey(propertyName);\r\n if (method) {\r\n propValue = method(sprite, propertyName);\r\n }*/\r\n }\r\n return propValue;\r\n };\r\n /**\r\n * Copies all property and style values from another [[SpriteState]] object.\r\n *\r\n * @param source Source [[SpriteState]]\r\n */\r\n SpriteState.prototype.copyFrom = function (source) {\r\n if (source && source != this) {\r\n this.transitionDuration = source.transitionDuration;\r\n this.transitionEasing = source.transitionEasing;\r\n $utils.copyProperties(source.properties, this.properties);\r\n $utils.copyProperties(source.propertyFields, this.propertyFields);\r\n this.filters.copyFrom(source.filters);\r\n if (source._adapterO) {\r\n this.adapter.copyFrom(source._adapterO);\r\n }\r\n }\r\n };\r\n Object.defineProperty(SpriteState.prototype, \"allValues\", {\r\n /**\r\n * Returns all values that should be applied by the SpriteState.\r\n *\r\n * It takes adapters into account.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Properties\r\n * @todo Add adapter values\r\n * @todo proper type this[\"_properties\"]\r\n */\r\n get: function () {\r\n var _this = this;\r\n // Init return value\r\n var res = {};\r\n // Apply adapters to all values\r\n $object.each(this.properties, function (prop, value) {\r\n res[prop] = _this.getPropertyValue(prop);\r\n });\r\n // Cycle through all adapters and add values for missing properties\r\n if (this._adapterO) {\r\n var keys = this._adapterO.keys();\r\n $object.each(keys, function (_x, prop) {\r\n var value = _this.getPropertyValue(prop);\r\n res[prop] = value;\r\n });\r\n }\r\n // Cycle through all property fileds and add values for missing properties\r\n var propertyFields = this.propertyFields;\r\n $object.each(propertyFields, function (prop) {\r\n var value = _this.getPropertyValue(prop);\r\n res[prop] = value;\r\n });\r\n return res;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Resets the State to initial state - no values or Filters applied.\r\n */\r\n SpriteState.prototype.reset = function () {\r\n this.properties = {};\r\n this.filters.clear();\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n SpriteState.prototype.processConfig = function (config) {\r\n if ($type.hasValue(config) && $type.hasValue(config[\"properties\"])) {\r\n $object.each(config[\"properties\"], function (key, value) {\r\n if ($type.isString(value)) {\r\n if (value.match(/^[0-9.\\-]+\\%$/)) {\r\n config[\"properties\"][key] = percent($type.toNumber(value));\r\n }\r\n else if (value.match(/^\\#[0-9abcdef]{3,}$/i)) {\r\n config[\"properties\"][key] = toColor(value);\r\n }\r\n }\r\n });\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n SpriteState.prototype.asFunction = function (field) {\r\n return field == \"transitionEasing\" || _super.prototype.asIs.call(this, field);\r\n };\r\n return SpriteState;\r\n}(BaseObject));\r\nexport { SpriteState };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SpriteState\"] = SpriteState;\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { registry, is } from \"./Registry\";\r\nimport { Container } from \"./Container\";\r\nimport { raf } from \"./utils/AsyncPending\";\r\nimport { triggerIdle } from \"./utils/AsyncPending\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $log from \"./utils/Log\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * The main class that handles system-wide tasks, like caching, heartbeats, etc.\r\n * @important\r\n */\r\nvar System = /** @class */ (function () {\r\n /**\r\n * Performs initialization of the System object.\r\n *\r\n * Called when the first [[Sprite]] object is created.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n function System() {\r\n /**\r\n * A flag indicating if the system is on pause.\r\n */\r\n this._isPaused = false;\r\n /**\r\n * Holds the list of currently playing animations.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.animations = [];\r\n /**\r\n * Unique ID of the object.\r\n */\r\n this.uid = registry.getUniqueId();\r\n /**\r\n * @todo Description\r\n * @todo Needed?\r\n * @ignore Exclude from docs\r\n */\r\n this.dummyCounter = 0;\r\n this._frameRequested = false;\r\n this.updateStepDuration = 45;\r\n this.time = Date.now();\r\n }\r\n /**\r\n * Reports time elapsed since timer was reset.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Needed?\r\n * @param msg Message to report in console\r\n * @param reset Reset time counter\r\n */\r\n System.prototype.reportTime = function (msg, reset) {\r\n if (this.dummyCounter < 6) {\r\n //console.log(Date.now() - this.time, msg, this.dummyCounter2);\r\n }\r\n if (reset) {\r\n this.time = Date.now();\r\n }\r\n };\r\n /**\r\n * Performs \"heartbeat\" operations `frameRate` number of times per second.\r\n *\r\n * When the chart element is invalidated, it is not immediately redrawn.\r\n *\r\n * Instead it waits for the next `update()` cycle to be re-validated.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Maybe should be private?\r\n */\r\n System.prototype.update = function () {\r\n var _this = this;\r\n if (this._isPaused) {\r\n return;\r\n }\r\n this._frameRequested = false;\r\n var time = Date.now();\r\n registry.dispatchImmediately(\"enterframe\");\r\n //this.validateLayouts();\r\n //this.validatePositions();\r\n /*\r\n for (let key in registry.invalidLayouts) {\r\n this.validateLayouts(key);\r\n }\r\n for (let key in registry.invalidPositions) {\r\n this.validatePositions(key);\r\n }\r\n */\r\n var skippedComponents = [];\r\n // data objects first - do all calculations\r\n // only data is parsed in chunks, thats why we do for loop instead of a while like with other invalid items.\r\n // important to go backwards, as items are removed!\r\n // TODO use iterator instead\r\n for (var key in registry.invalidDatas) {\r\n if ($object.hasKey(registry.invalidDatas, key)) {\r\n var invalidData = registry.invalidDatas[key];\r\n while (invalidData.length > 0) {\r\n var component = invalidData[0];\r\n var dataProvider = component.dataProvider;\r\n if (!component.isDisposed()) {\r\n if (dataProvider && dataProvider.dataInvalid) {\r\n try {\r\n dataProvider.validateData();\r\n if (dataProvider.dataValidationProgress < 1) {\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n $array.remove(invalidData, dataProvider);\r\n dataProvider.raiseCriticalError(e);\r\n }\r\n }\r\n else {\r\n try {\r\n component.validateData();\r\n if (component.dataValidationProgress < 1) {\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n $array.remove(invalidData, component);\r\n component.raiseCriticalError(e);\r\n }\r\n }\r\n }\r\n else {\r\n $array.remove(invalidData, component);\r\n }\r\n }\r\n if (Date.now() - time > this.updateStepDuration) {\r\n break;\r\n }\r\n }\r\n }\r\n while (registry.invalidRawDatas.length > 0) {\r\n var component = registry.invalidRawDatas[0];\r\n if (!component.isDisposed()) {\r\n try {\r\n component.validateRawData();\r\n }\r\n catch (e) {\r\n $array.remove(registry.invalidRawDatas, component);\r\n component.raiseCriticalError(e);\r\n }\r\n }\r\n else {\r\n $array.remove(registry.invalidRawDatas, component);\r\n }\r\n }\r\n // TODO use iterator instead\r\n while (registry.invalidDataItems.length > 0) {\r\n var component = registry.invalidDataItems[0];\r\n var dataProvider = component.dataProvider;\r\n // this is needed to avoid partial value validation when data is parsed in chunks\r\n if (component.isDisposed() || component.dataInvalid || (dataProvider && dataProvider.dataInvalid)) {\r\n // void\r\n }\r\n else {\r\n try {\r\n component.validateDataItems();\r\n }\r\n catch (e) {\r\n $array.remove(registry.invalidDataItems, component);\r\n component.raiseCriticalError(e);\r\n }\r\n }\r\n // this might seem too much, as validateValues removes from invalidDataItems aswell, but just to be sure (in case validateData is overriden and no super is called)\r\n $array.remove(registry.invalidDataItems, component);\r\n }\r\n // TODO use iterator instead\r\n while (registry.invalidDataRange.length > 0) {\r\n var component = registry.invalidDataRange[0];\r\n var dataProvider = component.dataProvider;\r\n if (component.isDisposed() || component.dataInvalid || (dataProvider && dataProvider.dataInvalid)) {\r\n // void\r\n }\r\n else {\r\n try {\r\n component.validateDataRange();\r\n if (!component.skipRangeEvent) {\r\n component.dispatchImmediately(\"datarangechanged\");\r\n }\r\n component.skipRangeEvent = false;\r\n }\r\n catch (e) {\r\n $array.remove(registry.invalidDataRange, component);\r\n component.raiseCriticalError(e);\r\n }\r\n }\r\n // this might seem too much, as validateDataRange removes from invalidDataRange aswell, but just to be sure (in case validateData is overriden and no super is called)\r\n $array.remove(registry.invalidDataRange, component);\r\n }\r\n var skippedSprites = [];\r\n // display objects later\r\n // TODO use iterator instead\r\n $object.each(registry.invalidLayouts, function (key) {\r\n _this.validateLayouts(key);\r\n });\r\n $object.each(registry.invalidPositions, function (key) {\r\n _this.validatePositions(key);\r\n });\r\n var hasSkipped = false;\r\n time = Date.now();\r\n $object.each(registry.invalidSprites, function (key, invalidSprites) {\r\n var count = 0;\r\n while (invalidSprites.length > 0) {\r\n _this.validateLayouts(key);\r\n _this.validatePositions(key);\r\n count++;\r\n if (count == 5) {\r\n if (Date.now() - time > _this.updateStepDuration) {\r\n break;\r\n }\r\n count = 0;\r\n }\r\n var sprite = invalidSprites[invalidSprites.length - 1];\r\n // we need to check this, as validateLayout might validate sprite\r\n if (sprite && !sprite.isDisposed()) {\r\n if (!sprite._systemCheckIfValidate()) {\r\n // void\r\n skippedSprites.push(sprite);\r\n }\r\n else {\r\n if (!_this.checkIfValidate2(sprite)) {\r\n // void\r\n skippedSprites.push(sprite);\r\n }\r\n else {\r\n try {\r\n sprite._systemUpdate(skippedSprites);\r\n }\r\n catch (e) {\r\n sprite.invalid = false;\r\n $array.remove(invalidSprites, sprite);\r\n sprite.raiseCriticalError(e);\r\n }\r\n }\r\n }\r\n // this might seem too much, but it's ok\r\n sprite.invalid = false;\r\n }\r\n $array.remove(invalidSprites, sprite);\r\n }\r\n registry.invalidSprites[key] = registry.invalidSprites[key].concat(skippedSprites);\r\n });\r\n $object.each(registry.invalidSprites, function (key, value) {\r\n if (value.length > 0) {\r\n hasSkipped = true;\r\n }\r\n });\r\n $object.each(registry.invalidDatas, function (key, value) {\r\n if (value.length > 0) {\r\n hasSkipped = true;\r\n }\r\n });\r\n // TODO make this more efficient\r\n // TODO don't copy the array\r\n $array.each($array.copy(this.animations), function (x) {\r\n x.update();\r\n });\r\n //if(!hasSkipped){\r\n $object.each(registry.invalidLayouts, function (key) {\r\n _this.validateLayouts(key);\r\n });\r\n $object.each(registry.invalidPositions, function (key) {\r\n _this.validatePositions(key);\r\n });\r\n //}\r\n triggerIdle();\r\n $object.each(registry.invalidLayouts, function (key) {\r\n _this.validateLayouts(key);\r\n });\r\n $object.each(registry.invalidPositions, function (key) {\r\n _this.validatePositions(key);\r\n });\r\n registry.dispatchImmediately(\"exitframe\");\r\n if (hasSkipped || this.animations.length > 0 || skippedComponents.length > 0) {\r\n this.requestFrame();\r\n }\r\n if (this.updateStepDuration < 200) {\r\n var all0_1 = true;\r\n $object.each(registry.invalidDatas, function (key, value) {\r\n if (value.length > 0) {\r\n all0_1 = false;\r\n }\r\n });\r\n $object.each(registry.invalidSprites, function (key, value) {\r\n if (value.length > 0) {\r\n all0_1 = false;\r\n }\r\n });\r\n if (all0_1) {\r\n this.updateStepDuration = 200;\r\n }\r\n }\r\n };\r\n System.prototype.checkIfValidate2 = function (sprite) {\r\n if (sprite.dataItem && sprite.dataItem.component && sprite.dataItem.component.dataInvalid && !sprite.dataItem.component.isTemplate) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n /**\r\n * Requests new animation frame\r\n */\r\n System.prototype.requestFrame = function () {\r\n var _this = this;\r\n if (!this._frameRequested) {\r\n raf(function () {\r\n _this.update();\r\n });\r\n this._frameRequested = true;\r\n }\r\n };\r\n /**\r\n * Call this method if you update data or config of a chart that is in\r\n * hidden container, after revealing the container, so that labels and\r\n * possibly other elements can correctly arrange themselves.\r\n *\r\n * @since 4.7.10\r\n * @param container Target container\r\n */\r\n System.prototype.softInvalidate = function (container) {\r\n var _this = this;\r\n container.children.each(function (child) {\r\n if (child instanceof Container) {\r\n _this.softInvalidate(child);\r\n }\r\n if (child.measureFailed) {\r\n if (is(child, \"Label\")) {\r\n child.hardInvalidate();\r\n }\r\n else {\r\n child.invalidate();\r\n }\r\n child.measureFailed = false;\r\n }\r\n });\r\n };\r\n /**\r\n * Triggers position re-validation on all [[Sprite]] elements that have\r\n * invalid(ated) positions.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Maybe should be private?\r\n */\r\n System.prototype.validatePositions = function (id) {\r\n // invalid positions\r\n // TODO use iterator instead\r\n var invalidPositions = registry.invalidPositions[id];\r\n while (invalidPositions.length > 0) {\r\n var sprite = invalidPositions[invalidPositions.length - 1];\r\n if (!sprite.isDisposed()) {\r\n try {\r\n sprite._systemValidatePositions();\r\n }\r\n catch (e) {\r\n sprite.positionInvalid = false;\r\n $array.remove(invalidPositions, sprite);\r\n sprite.raiseCriticalError(e);\r\n }\r\n }\r\n else {\r\n $array.remove(invalidPositions, sprite);\r\n }\r\n }\r\n };\r\n /**\r\n * Triggers position re-validation on all [[Container]] elements that have\r\n * invalid(ated) layouts.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Maybe should be private?\r\n */\r\n System.prototype.validateLayouts = function (id) {\r\n // invalid positions\r\n // TODO use iterator instead\r\n var invalidLayouts = registry.invalidLayouts[id];\r\n while (invalidLayouts.length > 0) {\r\n var container = invalidLayouts[invalidLayouts.length - 1];\r\n if (!container.isDisposed()) {\r\n try {\r\n container.children.each(function (sprite) {\r\n sprite._systemValidateLayouts();\r\n });\r\n container.validateLayout();\r\n }\r\n catch (e) {\r\n container.layoutInvalid = false;\r\n $array.remove(invalidLayouts, container);\r\n container.raiseCriticalError(e);\r\n }\r\n }\r\n else {\r\n $array.remove(invalidLayouts, container);\r\n }\r\n }\r\n };\r\n /**\r\n * Outputs string to console if `verbose` is `true`.\r\n *\r\n * @param value Message to output to console\r\n */\r\n System.prototype.log = function (value) {\r\n $log.log(value);\r\n };\r\n Object.defineProperty(System.prototype, \"isPaused\", {\r\n /**\r\n * @return Is system on pause?\r\n */\r\n get: function () {\r\n return this._isPaused;\r\n },\r\n /**\r\n * Pauses all the processes of all the amCharts objects on the page\r\n *\r\n * @return is paused?\r\n */\r\n set: function (value) {\r\n this._isPaused = value;\r\n if (!value) {\r\n this._frameRequested = false;\r\n this.requestFrame();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * amCharts Version.\r\n *\r\n * This follows npm's semver specification.\r\n *\r\n * @see {@link https://docs.npmjs.com/misc/semver}\r\n */\r\n System.VERSION = \"4.10.39\";\r\n return System;\r\n}());\r\nexport { System };\r\n/**\r\n * A singleton global instance of [[System]].\r\n *\r\n * All code should use this, rather than instantiating their\r\n * own System objects.\r\n */\r\nexport var system = new System();\r\n","/**\r\n * CSV parser.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { DataParser } from \"./DataParser\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $array from \"../utils/Array\";\r\n/**\r\n * Define possible separators.\r\n */\r\nvar separators = [\",\", \";\", \"\\t\"];\r\n/**\r\n * A parser for CSV format.\r\n *\r\n * @important\r\n */\r\nvar CSVParser = /** @class */ (function (_super) {\r\n __extends(CSVParser, _super);\r\n function CSVParser() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * Content-type suitable for CSV format.\r\n */\r\n _this.contentType = \"text/csv\";\r\n /**\r\n * Parser options.\r\n *\r\n * @see {@link ICSVOptions} for description of each option\r\n */\r\n _this.options = {\r\n delimiter: \"\",\r\n reverse: false,\r\n skipRows: 0,\r\n skipEmpty: true,\r\n useColumnNames: false\r\n };\r\n return _this;\r\n }\r\n /**\r\n * Tests if the format is CSV.\r\n *\r\n * @param data Source data\r\n * @return Is it CSV?\r\n */\r\n CSVParser.isCSV = function (data) {\r\n return CSVParser.getDelimiterFromData(data) ? true : false;\r\n };\r\n /**\r\n * Tries to determine a column separator.\r\n *\r\n * @param data Source data\r\n * @return Separator\r\n */\r\n CSVParser.getDelimiterFromData = function (data) {\r\n // We're going to take first few lines of the CSV with different\r\n // possible separators and check if it results in same number of columns.\r\n // If it does, we're going to assume it's a CSV\r\n var lines = data.split(\"\\n\");\r\n var len = lines.length;\r\n var separator;\r\n $array.each(separators, function (sep) {\r\n var columns = 0, lineColums = 0;\r\n // TODO replace with iterators\r\n for (var i = 0; i < len; ++i) {\r\n // Get number of columns in a line\r\n columns = lines[i].split(sep).length;\r\n if (columns > 1) {\r\n // More than one column - possible candidate\r\n if (lineColums === 0) {\r\n // First line\r\n lineColums = columns;\r\n }\r\n else if (columns != lineColums) {\r\n // Incorrect number of columns, give up on this separator\r\n lineColums = 0;\r\n break;\r\n }\r\n }\r\n else {\r\n // Not this separator\r\n // Not point in continuing\r\n lineColums = 0;\r\n break;\r\n }\r\n }\r\n // Check if we have a winner\r\n if (lineColums) {\r\n separator = sep;\r\n }\r\n });\r\n return separator;\r\n };\r\n /**\r\n * Parses and returns data.\r\n *\r\n * @param data Unparsed data\r\n * @return Parsed data\r\n */\r\n CSVParser.prototype.parse = function (csv) {\r\n // Check if we have delimiter set\r\n if (!this.options.delimiter) {\r\n this.options.delimiter = CSVParser.getDelimiterFromData(csv);\r\n }\r\n // Get CSV data as array\r\n var data = this.CSVToArray(csv, this.options.delimiter);\r\n // Do we need to cast some fields to numbers?\r\n var empty = $type.hasValue(this.options.emptyAs);\r\n var numbers = this.parsableNumbers;\r\n var dates = this.parsableDates;\r\n // Init resuling array\r\n var res = [], cols = [], col, i;\r\n // Skip rows\r\n for (i = 0; i < this.options.skipRows; i++) {\r\n data.shift();\r\n }\r\n // First row holds column names?\r\n if (this.options.useColumnNames) {\r\n cols = data.shift();\r\n // Normalize column names\r\n for (var x = 0; x < cols.length; x++) {\r\n // trim\r\n col = $type.hasValue(cols[x]) ? cols[x].replace(/^\\s+|\\s+$/gm, \"\") : \"\";\r\n // Check for empty\r\n if (\"\" === col) {\r\n col = \"col\" + x;\r\n }\r\n cols[x] = col;\r\n }\r\n }\r\n // Iterate through the result set\r\n var row;\r\n while (true) {\r\n row = this.options.reverse ? data.pop() : data.shift();\r\n if (!row) {\r\n break;\r\n }\r\n if (this.options.skipEmpty && row.length === 1 && row[0] === \"\") {\r\n continue;\r\n }\r\n var dataPoint = {};\r\n for (i = 0; i < row.length; i++) {\r\n col = undefined === cols[i] ? \"col\" + i : cols[i];\r\n dataPoint[col] = row[i] === \"\" ? this.options.emptyAs : row[i];\r\n // Convert\r\n if (empty) {\r\n dataPoint[col] = this.maybeToEmpty(dataPoint[col]);\r\n }\r\n if (numbers) {\r\n dataPoint[col] = this.maybeToNumber(col, dataPoint[col]);\r\n }\r\n if (dates) {\r\n dataPoint[col] = this.maybeToDate(col, dataPoint[col]);\r\n }\r\n }\r\n res.push(dataPoint);\r\n }\r\n return res;\r\n };\r\n /**\r\n * Converts CSV into array.\r\n *\r\n * The functionality of this function is taken from here:\r\n * http://www.bennadel.com/blog/1504-ask-ben-parsing-csv-strings-with-javascript-exec-regular-expression-command.htm\r\n *\r\n * @param data Source data\r\n * @param delimiter Column delimiter\r\n * @return Parsed array\r\n */\r\n CSVParser.prototype.CSVToArray = function (data, delimiter) {\r\n // Check to see if the delimiter is defined. If not,\r\n // then default to comma.\r\n delimiter = (delimiter || ',');\r\n // Create a regular expression to parse the CSV values.\r\n var objPattern = new RegExp((\r\n // Delimiters.\r\n \"(\\\\\" + delimiter + \"|\\\\r?\\\\n|\\\\r|^)\" +\r\n // Quoted fields.\r\n \"(?:\\\"([^\\\"]*(?:\\\"\\\"[^\\\"]*)*)\\\"|\" +\r\n // Standard fields.\r\n \"([^\\\"\\\\\" + delimiter + \"\\\\r\\\\n]*))\"), \"gi\");\r\n // Create an array to hold our data. Give the array\r\n // a default empty first row.\r\n var arrData = [\r\n []\r\n ];\r\n // Create an array to hold our individual pattern\r\n // matching groups.\r\n var arrMatches = null;\r\n // Keep looping over the regular expression matches\r\n // until we can no longer find a match.\r\n while (true) {\r\n arrMatches = objPattern.exec(data);\r\n if (!arrMatches) {\r\n break;\r\n }\r\n // Get the delimiter that was found.\r\n var strMatchedDelimiter = arrMatches[1];\r\n // Check to see if the given delimiter has a length\r\n // (is not the start of string) and if it matches\r\n // field delimiter. If id does not, then we know\r\n // that this delimiter is a row delimiter.\r\n if (strMatchedDelimiter.length &&\r\n (strMatchedDelimiter !== delimiter)) {\r\n // Since we have reached a new row of data,\r\n // add an empty row to our data array.\r\n arrData.push([]);\r\n }\r\n // Now that we have our delimiter out of the way,\r\n // let's check to see which kind of value we\r\n // captured (quoted or unquoted).\r\n var strMatchedValue = void 0;\r\n if (arrMatches[2]) {\r\n // We found a quoted value. When we capture\r\n // this value, unescape any double quotes.\r\n strMatchedValue = arrMatches[2].replace(new RegExp(\"\\\"\\\"\", \"g\"), \"\\\"\");\r\n }\r\n else {\r\n // We found a non-quoted value.\r\n strMatchedValue = arrMatches[3];\r\n }\r\n // Now that we have our value string, let's add\r\n // it to the data array.\r\n arrData[arrData.length - 1].push(strMatchedValue);\r\n }\r\n // Return the parsed data.\r\n return (arrData);\r\n };\r\n return CSVParser;\r\n}(DataParser));\r\nexport { CSVParser };\r\n","/**\r\n * Data Loader is responsible for loading and parsing external data\r\n */\r\nimport { CSVParser } from \"./CSVParser\";\r\nimport { JSONParser } from \"./JSONParser\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport * as $net from \"../utils/Net\";\r\nimport * as $array from \"../utils/Array\";\r\n;\r\n/**\r\n * Data Loader is responsible for loading and parsing external data.\r\n *\r\n * There is just one instance of DataLoader per system. Unless you have a\r\n * speicific reason, do not instantiate additional instances.\r\n *\r\n * The global instance of Data Loader is accessible via:\r\n *\r\n * ```TypeScript\r\n * am4core.dataLoader;\r\n * ```\r\n * ```JavaScript\r\n * am4core.dataLoader;\r\n * ```\r\n *\r\n * A loading of specific data source is done via [[DataSource]].\r\n *\r\n Please refer to [[DataSource]] for information how to use it.\r\n *\r\n * @see {@link IDataLoaderAdapters} for a list of available Adapters\r\n */\r\nvar DataLoader = /** @class */ (function () {\r\n function DataLoader() {\r\n /**\r\n * Adapter.\r\n */\r\n this.adapter = new Adapter(this);\r\n }\r\n /**\r\n * Loads a supplied [[DataSource]] or an array of data sources, then calls\r\n * their respective `parse` methods.\r\n *\r\n * @param source A single data source or an array of multiple of data sources\r\n */\r\n DataLoader.prototype.load = function (source) {\r\n var sources = Array.isArray(source) ? source : [source];\r\n // Add each Source to the list to be loaded simultaneously\r\n var promises = $array.map(sources, function (x) {\r\n // Dispatch events\r\n x.dispatchImmediately(\"started\");\r\n x.dispatchImmediately(\"loadstarted\");\r\n return $net.load(x.url, x, x.requestOptions);\r\n });\r\n // Run all promises in parallel\r\n Promise.all(promises).then(function (res) {\r\n // Process each loaded source\r\n $array.each(res, function (result) {\r\n // Get Source\r\n var source = result.target;\r\n // Dispatch events\r\n source.dispatchImmediately(\"loadended\");\r\n if (result.error) {\r\n if (source.events.isEnabled(\"error\")) {\r\n source.events.dispatchImmediately(\"error\", {\r\n type: \"error\",\r\n code: result.xhr.status,\r\n message: source.language.translate(\"Unable to load file: %1\", null, source.url),\r\n target: source\r\n });\r\n }\r\n }\r\n else {\r\n // Initiate parsing of the loaded data\r\n source.processData(result.response, result.type);\r\n }\r\n source.dispatchImmediately(\"ended\");\r\n });\r\n }).catch(function (res) {\r\n if (res.target) {\r\n res.target.dispatchImmediately(\"loadended\");\r\n if (res.target.events.isEnabled(\"error\")) {\r\n res.target.events.dispatchImmediately(\"error\", {\r\n type: \"error\",\r\n code: res.xhr.status,\r\n message: res.target.language.translate(\"Unable to load file: %1\", null, res.target.url),\r\n target: res.target\r\n });\r\n }\r\n res.target.dispatchImmediately(\"ended\");\r\n }\r\n });\r\n };\r\n /**\r\n * Instantiates a [[DataParser]] object based on the data type.\r\n * Built-in parser types are as follows:\r\n *\r\n * * \"csv\" or \"text/csv\"\r\n * * \"json\" or \"application/json\"\r\n *\r\n * @param contentType A format type\r\n * @return A parser object\r\n */\r\n DataLoader.prototype.getParserByType = function (contentType) {\r\n // Let some plugin decide\r\n var parser = this.adapter.apply(\"getParserByType\", {\r\n parser: null,\r\n type: contentType\r\n }).parser;\r\n if (parser) {\r\n return parser;\r\n }\r\n if (contentType == \"csv\" || contentType == \"text/csv\" || contentType == \"application/vnd.ms-excel\") {\r\n return new CSVParser();\r\n }\r\n if (contentType == \"json\" || contentType == \"application/json\") {\r\n return new JSONParser();\r\n }\r\n return;\r\n };\r\n /**\r\n * Tries to determine a parser out of content type and/or actual data.\r\n *\r\n * @param data Data\r\n * @param contentType Content-type\r\n * @return Parser instance\r\n */\r\n DataLoader.prototype.getParserByData = function (data, contentType) {\r\n // Let some plugin decide\r\n var parser = this.adapter.apply(\"getParserByData\", {\r\n parser: null,\r\n data: data,\r\n type: contentType\r\n }).parser;\r\n // Check if we have parser from outside code\r\n if (!parser) {\r\n // No, let's try to figure it out\r\n parser = this.getParserByType(contentType);\r\n if (parser) {\r\n // We're able to figure out parser by content-type\r\n return parser;\r\n }\r\n else if (JSONParser.isJSON(data)) {\r\n return this.getParserByType(\"json\");\r\n }\r\n else if (CSVParser.isCSV(data)) {\r\n return this.getParserByType(\"csv\");\r\n }\r\n }\r\n return parser;\r\n };\r\n return DataLoader;\r\n}());\r\nexport { DataLoader };\r\n/**\r\n * Create instance of Data Loader\r\n */\r\nexport var dataLoader = new DataLoader();\r\n","/**\r\n * Data parser module.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base class for the data parsers.\r\n */\r\nvar DataParser = /** @class */ (function () {\r\n function DataParser() {\r\n }\r\n /**\r\n * A \"placeholder\" function for real parsers to override.\r\n *\r\n * @ignore Exclude from docs\r\n * @param data Source data\r\n * @return Parsed data (empty)\r\n */\r\n DataParser.prototype.parse = function (data) {\r\n return [];\r\n };\r\n ;\r\n Object.defineProperty(DataParser.prototype, \"parsableNumbers\", {\r\n /**\r\n * Checks if there are any numeric fields that need to be converted to\r\n * numbers.\r\n *\r\n * @return Numeric fields?\r\n */\r\n get: function () {\r\n return this.options.numberFields && (this.options.numberFields.length > 0);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts a value to 'number' if it is in `numberFields`.\r\n *\r\n * @param field Field name\r\n * @param value Value\r\n * @return Parsed or original value\r\n */\r\n DataParser.prototype.maybeToNumber = function (field, value) {\r\n if (this.options.numberFields.indexOf(field) !== -1) {\r\n return $utils.anyToNumber(value);\r\n }\r\n return value;\r\n };\r\n Object.defineProperty(DataParser.prototype, \"parsableDates\", {\r\n /**\r\n * Checks if there are any date fields that need to be converted to `Date`\r\n * objects.\r\n *\r\n * @return Date fields?\r\n */\r\n get: function () {\r\n return this.options.dateFields && (this.options.dateFields.length > 0);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts a value to `Date` if it is in `dateFields`.\r\n *\r\n * @param field Field name\r\n * @param value Value\r\n * @return Parsed or original value\r\n */\r\n DataParser.prototype.maybeToDate = function (field, value) {\r\n if (this.options.dateFields.indexOf(field) !== -1) {\r\n return this.options.dateFormatter.parse(value, this.dateFormat);\r\n }\r\n return value;\r\n };\r\n /**\r\n * Replaces empty value with something else.\r\n *\r\n * @param value Source value\r\n * @return Source value or replacement\r\n */\r\n DataParser.prototype.maybeToEmpty = function (value) {\r\n if ((!$type.hasValue(value) || value == \"\") && $type.hasValue(this.options.emptyAs)) {\r\n return this.options.emptyAs;\r\n }\r\n return value;\r\n };\r\n Object.defineProperty(DataParser.prototype, \"dateFormatter\", {\r\n /**\r\n * [[DateFormatter]] object for date parsing.\r\n *\r\n * If there was not [[DateFormatter]] supplied in parser options, a new one\r\n * is created.\r\n *\r\n * @return Date formatter\r\n * @see {@link DateFormatter}\r\n */\r\n get: function () {\r\n if (!this.options.dateFormatter) {\r\n this.options.dateFormatter = new DateFormatter;\r\n if (this.options.dateFormat) {\r\n this.options.dateFormat = this.options.dateFormat;\r\n }\r\n }\r\n return this.options.dateFormatter;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataParser.prototype, \"dateFormat\", {\r\n /**\r\n * A date format to use when parsing dates.\r\n *\r\n * @return Date format\r\n * @see {@link DateFormatter}\r\n */\r\n get: function () {\r\n return this.options.dateFormat || this.dateFormatter.inputDateFormat;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DataParser;\r\n}());\r\nexport { DataParser };\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { dataLoader } from \"./DataLoader\";\r\nimport { JSONParser } from \"./JSONParser\";\r\nimport { CSVParser } from \"./CSVParser\";\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $object from \"../utils/Object\";\r\n;\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a single data source - external file with all of its settings,\r\n * such as format, data parsing, etc.\r\n *\r\n * ```TypeScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JavaScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dataSource\": {\r\n * \"url\": \"http://www.myweb.com/data.json\",\r\n * \"parser\": \"JSONParser\"\r\n * },\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @see {@link IDataSourceEvents} for a list of available events\r\n * @see {@link IDataSourceAdapters} for a list of available Adapters\r\n */\r\nvar DataSource = /** @class */ (function (_super) {\r\n __extends(DataSource, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DataSource(url, parser) {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * Custom options for HTTP(S) request.\r\n */\r\n _this._requestOptions = {};\r\n /**\r\n * If set to `true`, any subsequent data loads will be considered incremental\r\n * (containing only new data points that are supposed to be added to existing\r\n * data).\r\n *\r\n * NOTE: this setting works only with element's `data` property. It won't\r\n * work with any other externally-loadable data property.\r\n *\r\n * @default false\r\n */\r\n _this._incremental = false;\r\n /**\r\n * A collection of key/value pairs to attach to a data source URL when making\r\n * an incremental request.\r\n */\r\n _this._incrementalParams = {};\r\n /**\r\n * This setting is used only when `incremental = true`. If set to `true`,\r\n * it will try to retain the same number of data items across each load.\r\n *\r\n * E.g. if incremental load yeilded 5 new records, then 5 items from the\r\n * beginning of data will be removed so that we end up with the same number\r\n * of data items.\r\n *\r\n * @default false\r\n */\r\n _this._keepCount = false;\r\n /**\r\n * If set to `true`, each subsequent load will be treated as an update to\r\n * currently loaded data, meaning that it will try to update values on\r\n * existing data items, not overwrite the whole data.\r\n *\r\n * This will work faster than complete update, and also will animate the\r\n * values to their new positions.\r\n *\r\n * Data sources across loads must contain the same number of data items.\r\n *\r\n * Loader will not truncate the data set if loaded data has fewer data items,\r\n * and if it is longer, the excess data items will be ignored.\r\n *\r\n * @default false\r\n * @since 4.5.5\r\n */\r\n _this._updateCurrentData = false;\r\n /**\r\n * Will show loading indicator when loading files.\r\n */\r\n _this.showPreloader = true;\r\n _this.className = \"DataSource\";\r\n // Set defaults\r\n if (url) {\r\n _this.url = url;\r\n }\r\n // Set parser\r\n if (parser) {\r\n if (typeof parser == \"string\") {\r\n _this.parser = dataLoader.getParserByType(parser);\r\n }\r\n else {\r\n _this.parser = parser;\r\n }\r\n }\r\n return _this;\r\n }\r\n /**\r\n * Processes the loaded data.\r\n *\r\n * @ignore Exclude from docs\r\n * @param data Raw (unparsed) data\r\n * @param contentType Content type of the loaded data (optional)\r\n */\r\n DataSource.prototype.processData = function (data, contentType) {\r\n // Parsing started\r\n this.dispatchImmediately(\"parsestarted\");\r\n // Check if parser is set\r\n if (!this.parser) {\r\n // Try to resolve from data\r\n this.parser = dataLoader.getParserByData(data, contentType);\r\n if (!this.parser) {\r\n // We have a problem - nobody knows what to do with the data\r\n // Raise error\r\n if (this.events.isEnabled(\"parseerror\")) {\r\n var event_1 = {\r\n type: \"parseerror\",\r\n message: this.language.translate(\"No parser available for file: %1\", null, this.url),\r\n target: this\r\n };\r\n this.events.dispatchImmediately(\"parseerror\", event_1);\r\n }\r\n this.dispatchImmediately(\"parseended\");\r\n return;\r\n }\r\n }\r\n // Apply options adapters\r\n this.parser.options = this.adapter.apply(\"parserOptions\", this.parser.options);\r\n this.parser.options.dateFields = this.adapter.apply(\"dateFields\", this.parser.options.dateFields || []);\r\n this.parser.options.numberFields = this.adapter.apply(\"numberFields\", this.parser.options.numberFields || []);\r\n // Check if we need to pass in date formatter\r\n if (this.parser.options.dateFields && !this.parser.options.dateFormatter) {\r\n this.parser.options.dateFormatter = this.dateFormatter;\r\n }\r\n // Parse\r\n this.data = this.adapter.apply(\"parsedData\", this.parser.parse(this.adapter.apply(\"unparsedData\", data)));\r\n // Check for parsing errors\r\n if (!$type.hasValue(this.data) && this.events.isEnabled(\"parseerror\")) {\r\n var event_2 = {\r\n type: \"parseerror\",\r\n message: this.language.translate(\"Error parsing file: %1\", null, this.url),\r\n target: this\r\n };\r\n this.events.dispatchImmediately(\"parseerror\", event_2);\r\n }\r\n // Wrap up\r\n this.dispatchImmediately(\"parseended\");\r\n if ($type.hasValue(this.data)) {\r\n this.dispatchImmediately(\"done\", {\r\n \"data\": this.data\r\n });\r\n }\r\n // The component is responsible for updating its own data vtriggered via\r\n // events.\r\n // Update last data load\r\n this.lastLoad = new Date();\r\n };\r\n Object.defineProperty(DataSource.prototype, \"url\", {\r\n /**\r\n * @return URL\r\n */\r\n get: function () {\r\n // Get URL\r\n var url = this.disableCache\r\n ? this.timestampUrl(this._url)\r\n : this._url;\r\n // Add incremental params\r\n if (this.incremental && this.component.data.length) {\r\n url = this.addUrlParams(url, this.incrementalParams);\r\n }\r\n return this.adapter.apply(\"url\", url);\r\n },\r\n /**\r\n * URL of the data source.\r\n *\r\n * @param value URL\r\n */\r\n set: function (value) {\r\n this._url = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"requestOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"requestOptions\", this._requestOptions);\r\n },\r\n /**\r\n * Custom options for HTTP(S) request.\r\n *\r\n * At this moment the only option supported is: `requestHeaders`, which holds\r\n * an array of objects for custom request headers, e.g.:\r\n *\r\n * ```TypeScript\r\n * chart.dataSource.requestOptions.requestHeaders = [{\r\n * \"key\": \"x-access-token\",\r\n * \"value\": \"123456789\"\r\n * }];\r\n * ``````JavaScript\r\n * chart.dataSource.requestOptions.requestHeaders = [{\r\n * \"key\": \"x-access-token\",\r\n * \"value\": \"123456789\"\r\n * }];\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dataSource\": {\r\n * // ...\r\n * \"requestOptions\": {\r\n * \"requestHeaders\": [{\r\n * \"key\": \"x-access-token\",\r\n * \"value\": \"123456789\"\r\n * }]\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * NOTE: setting this options on an-already loaded DataSource will not\r\n * trigger a reload.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._requestOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"parser\", {\r\n /**\r\n * @return Data parser\r\n */\r\n get: function () {\r\n if (!this._parser) {\r\n this._parser = new JSONParser();\r\n }\r\n return this.adapter.apply(\"parser\", this._parser);\r\n },\r\n /**\r\n * A parser to be used to parse data.\r\n *\r\n * ```TypeScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JavaScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dataSource\": {\r\n * \"url\": \"http://www.myweb.com/data.json\",\r\n * \"parser\": {\r\n * \"type\": \"JSONParser\"\r\n * }\r\n * },\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @default JSONParser\r\n * @param value Data parser\r\n */\r\n set: function (value) {\r\n this._parser = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"reloadFrequency\", {\r\n /**\r\n * @return Reload frequency (ms)\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"reloadTimeout\", this._reloadFrequency);\r\n },\r\n /**\r\n * Data source reload frequency.\r\n *\r\n * If set, it will reload the same URL every X milliseconds.\r\n *\r\n * @param value Reload frequency (ms)\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this._reloadFrequency != value) {\r\n this._reloadFrequency = value;\r\n // Should we schedule a reload?\r\n if (value) {\r\n if (!$type.hasValue(this._reloadDisposer)) {\r\n this._reloadDisposer = this.events.on(\"ended\", function (ev) {\r\n _this._reloadTimeout = setTimeout(function () {\r\n _this.load();\r\n }, _this.reloadFrequency);\r\n });\r\n }\r\n }\r\n else if ($type.hasValue(this._reloadDisposer)) {\r\n this._reloadDisposer.dispose();\r\n this._reloadDisposer = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"incremental\", {\r\n /**\r\n * @return Incremental load?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"incremental\", this._incremental);\r\n },\r\n /**\r\n * Should subsequent reloads be treated as incremental?\r\n *\r\n * Incremental loads will assume that they contain only new data items\r\n * since the last load.\r\n *\r\n * If `incremental = false` the loader will replace all of the target's\r\n * data with each load.\r\n *\r\n * This setting does not have any effect trhe first time data is loaded.\r\n *\r\n * NOTE: this setting works only with element's `data` property. It won't\r\n * work with any other externally-loadable data property.\r\n *\r\n * @default false\r\n * @param Incremental load?\r\n */\r\n set: function (value) {\r\n this._incremental = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"incrementalParams\", {\r\n /**\r\n * @return Incremental request parameters\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"incrementalParams\", this._incrementalParams);\r\n },\r\n /**\r\n * An object consisting of key/value pairs to apply to an URL when data\r\n * source is making an incremental request.\r\n *\r\n * @param value Incremental request parameters\r\n */\r\n set: function (value) {\r\n this._incrementalParams = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"keepCount\", {\r\n /**\r\n * @return keepCount load?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"keepCount\", this._keepCount);\r\n },\r\n /**\r\n * This setting is used only when `incremental = true`. If set to `true`,\r\n * it will try to retain the same number of data items across each load.\r\n *\r\n * E.g. if incremental load yeilded 5 new records, then 5 items from the\r\n * beginning of data will be removed so that we end up with the same number\r\n * of data items.\r\n *\r\n * @default false\r\n * @param Keep record count?\r\n */\r\n set: function (value) {\r\n this._keepCount = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"updateCurrentData\", {\r\n /**\r\n * @return Update current data?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"updateCurrentData\", this._updateCurrentData);\r\n },\r\n /**\r\n * If set to `true`, each subsequent load will be treated as an update to\r\n * currently loaded data, meaning that it will try to update values on\r\n * existing data items, not overwrite the whole data.\r\n *\r\n * This will work faster than complete update, and also will animate the\r\n * values to their new positions.\r\n *\r\n * Data sources across loads must contain the same number of data items.\r\n *\r\n * Loader will not truncate the data set if loaded data has fewer data items,\r\n * and if it is longer, the excess data items will be ignored.\r\n *\r\n * NOTE: this setting is ignored if `incremental = true`.\r\n *\r\n * @default false\r\n * @since 2.5.5\r\n * @param Update current data?\r\n */\r\n set: function (value) {\r\n this._updateCurrentData = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"language\", {\r\n /**\r\n * @return A [[Language]] instance to be used\r\n */\r\n get: function () {\r\n if (this._language) {\r\n return this._language;\r\n }\r\n else if (this.component) {\r\n this._language = this.component.language;\r\n return this._language;\r\n }\r\n this.language = new Language();\r\n return this.language;\r\n },\r\n /**\r\n * Language instance to use.\r\n *\r\n * Will inherit and use chart's language, if not set.\r\n *\r\n * @param value An instance of Language\r\n */\r\n set: function (value) {\r\n this._language = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"dateFormatter\", {\r\n /**\r\n * @return A [[DateFormatter]] instance to be used\r\n */\r\n get: function () {\r\n if (this._dateFormatter) {\r\n return this._dateFormatter;\r\n }\r\n else if (this.component) {\r\n this._dateFormatter = this.component.dateFormatter;\r\n return this._dateFormatter;\r\n }\r\n this.dateFormatter = new DateFormatter();\r\n return this.dateFormatter;\r\n },\r\n /**\r\n * A [[DateFormatter]] to use when parsing dates from string formats.\r\n *\r\n * Will inherit and use chart's DateFormatter if not ser.\r\n *\r\n * @param value An instance of [[DateFormatter]]\r\n */\r\n set: function (value) {\r\n this._dateFormatter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds current timestamp to the URL.\r\n *\r\n * @param url Source URL\r\n * @return Timestamped URL\r\n */\r\n DataSource.prototype.timestampUrl = function (url) {\r\n var tstamp = new Date().getTime().toString();\r\n var params = {};\r\n params[tstamp] = \"\";\r\n return this.addUrlParams(url, params);\r\n };\r\n /**\r\n * Disposes of this object.\r\n */\r\n DataSource.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this._reloadTimeout) {\r\n clearTimeout(this._reloadTimeout);\r\n }\r\n if ($type.hasValue(this._reloadDisposer)) {\r\n this._reloadDisposer.dispose();\r\n this._reloadDisposer = undefined;\r\n }\r\n };\r\n /**\r\n * Initiate the load.\r\n *\r\n * All loading in JavaScript is asynchronous. This function will trigger the\r\n * load and will exit immediately.\r\n *\r\n * Use DataSource's events to watch for loaded data and errors.\r\n */\r\n DataSource.prototype.load = function () {\r\n if (this.url) {\r\n if (this._reloadTimeout) {\r\n clearTimeout(this._reloadTimeout);\r\n }\r\n dataLoader.load(this);\r\n }\r\n };\r\n /**\r\n * Adds parameters to `url` as query strings. Will take care of proper\r\n * separators.\r\n *\r\n * @param url Source URL\r\n * @param params Parameters\r\n * @return New URL\r\n */\r\n DataSource.prototype.addUrlParams = function (url, params) {\r\n var join = url.match(/\\?/) ? \"&\" : \"?\";\r\n var add = [];\r\n $object.each(params, function (key, value) {\r\n if (value != \"\") {\r\n add.push(key + \"=\" + encodeURIComponent(value));\r\n }\r\n else {\r\n add.push(key);\r\n }\r\n });\r\n if (add.length) {\r\n return url + join + add.join(\"&\");\r\n }\r\n return url;\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n DataSource.prototype.processConfig = function (config) {\r\n registry.registeredClasses[\"json\"] = JSONParser;\r\n registry.registeredClasses[\"JSONParser\"] = JSONParser;\r\n registry.registeredClasses[\"csv\"] = CSVParser;\r\n registry.registeredClasses[\"CSVParser\"] = CSVParser;\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return DataSource;\r\n}(BaseObjectEvents));\r\nexport { DataSource };\r\n","/**\r\n * JSON parser.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { DataParser } from \"./DataParser\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * A parser for JSON.\r\n *\r\n * @important\r\n */\r\nvar JSONParser = /** @class */ (function (_super) {\r\n __extends(JSONParser, _super);\r\n function JSONParser() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * Content-type suitable for JSON format.\r\n */\r\n _this.contentType = \"application/json\";\r\n /**\r\n * Parser options.\r\n *\r\n * @see {@link IJSONOptions} for description of each option\r\n */\r\n _this.options = {};\r\n return _this;\r\n }\r\n /**\r\n * Tests if the data is valid JSON.\r\n *\r\n * @param data Source data\r\n * @return Is it JSON?\r\n */\r\n JSONParser.isJSON = function (data) {\r\n try {\r\n // Try parsing JSON\r\n JSON.parse(data);\r\n // If we got to this point it means it's a valid JSON\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Parses and returns data.\r\n *\r\n * @param data Unparsed data\r\n * @return Parsed data\r\n */\r\n JSONParser.prototype.parse = function (data) {\r\n var _this = this;\r\n // Init return\r\n var res;\r\n // Try parsing\r\n try {\r\n if ($type.hasValue(JSON)) {\r\n res = JSON.parse(data);\r\n }\r\n }\r\n catch (e) {\r\n return undefined;\r\n }\r\n // Do we need to cast some fields to numbers or dates?\r\n var empty = $type.hasValue(this.options.emptyAs);\r\n var numbers = this.parsableNumbers;\r\n var dates = this.parsableDates;\r\n if (Array.isArray(res) && (numbers || dates || empty)) {\r\n var _loop_1 = function (i, len) {\r\n var row = res[i];\r\n $object.each(row, function (key, value) {\r\n if (empty) {\r\n row[key] = _this.maybeToEmpty(row[key]);\r\n }\r\n if (numbers) {\r\n row[key] = _this.maybeToNumber(key, row[key]);\r\n }\r\n if (dates) {\r\n row[key] = _this.maybeToDate(key, row[key]);\r\n }\r\n });\r\n };\r\n // Iterate through the data and check if it needs to be converted\r\n for (var i = 0, len = res.length; i < len; i++) {\r\n _loop_1(i, len);\r\n }\r\n }\r\n // Convert to array\r\n //return Array.isArray(res) ? res : [res];\r\n return res;\r\n };\r\n return JSONParser;\r\n}(DataParser));\r\nexport { JSONParser };\r\n","/**\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { color } from \"../utils/Color\";\r\n/**\r\n * Defines a class that holds default properties for new SVG elements\r\n */\r\nvar SVGDefaults = /** @class */ (function () {\r\n function SVGDefaults() {\r\n }\r\n SVGDefaults.opacity = 1;\r\n SVGDefaults.strokeOpacity = 1;\r\n SVGDefaults.strokeWidth = 1;\r\n SVGDefaults.fillOpacity = 1;\r\n SVGDefaults.fill = color(\"#000000\");\r\n SVGDefaults.stroke = color(\"#000000\");\r\n SVGDefaults.focusable = undefined;\r\n SVGDefaults.tabindex = 0;\r\n return SVGDefaults;\r\n}());\r\nexport { SVGDefaults };\r\n","/**\r\n * Cone module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../Container\";\r\nimport { Sprite, visualProperties } from \"../../Sprite\";\r\nimport { Ellipse } from \"../../elements/Ellipse\";\r\nimport { LinearGradientModifier } from \"../../rendering/fills/LinearGradientModifier\";\r\nimport { percent } from \"../../utils/Percent\";\r\nimport * as $object from \"../../utils/Object\";\r\nimport * as $path from \"../../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Builds a round cone/cylinder.\r\n *\r\n * @see {@link IConeEvents} for a list of available events\r\n * @see {@link IConeAdapters} for a list of available Adapters\r\n */\r\nvar Cone = /** @class */ (function (_super) {\r\n __extends(Cone, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Cone() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Cone\";\r\n _this.angle = 30;\r\n _this.radius = percent(100);\r\n _this.topRadius = percent(100);\r\n _this.top = _this.createChild(Ellipse);\r\n _this.top.shouldClone = false;\r\n _this.bottom = _this.createChild(Ellipse);\r\n _this.bottom.shouldClone = false;\r\n _this.body = _this.createChild(Sprite);\r\n _this.body.shouldClone = false;\r\n _this.body.setElement(_this.paper.add(\"path\"));\r\n _this.layout = \"none\";\r\n _this.bodyFillModifier = new LinearGradientModifier();\r\n _this.bodyFillModifier.lightnesses = [0, -0.25, 0];\r\n _this.body.fillModifier = _this.bodyFillModifier;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Cone.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n $object.copyProperties(this, this.top, visualProperties);\r\n $object.copyProperties(this, this.bottom, visualProperties);\r\n $object.copyProperties(this, this.body, visualProperties);\r\n var w = this.innerWidth;\r\n var h = this.innerHeight;\r\n var bottom = this.bottom;\r\n var top = this.top;\r\n var angle = this.angle;\r\n var radiusBase;\r\n var dx;\r\n var dy;\r\n if (this.orientation == \"horizontal\") {\r\n radiusBase = h / 2;\r\n bottom.y = h / 2;\r\n bottom.x = 0;\r\n top.y = h / 2;\r\n top.x = w;\r\n dx = (90 - angle) / 90;\r\n dy = 0;\r\n this.bodyFillModifier.gradient.rotation = 90;\r\n }\r\n else {\r\n dx = 0;\r\n dy = (90 - angle) / 90;\r\n radiusBase = w / 2;\r\n bottom.y = h;\r\n bottom.x = w / 2;\r\n top.x = w / 2;\r\n this.bodyFillModifier.gradient.rotation = 0;\r\n }\r\n var radius = this.radius.value * radiusBase;\r\n var topRadius = this.topRadius.value * radiusBase;\r\n bottom.radius = radius - radius * dx;\r\n bottom.radiusY = radius - radius * dy;\r\n top.radius = topRadius - topRadius * dx;\r\n top.radiusY = topRadius - topRadius * dy;\r\n var path;\r\n if (this.orientation == \"horizontal\") {\r\n path = $path.moveTo({ x: 0, y: h / 2 - bottom.radiusY }) + $path.arcTo(-90, -180, bottom.radius, bottom.radiusY) + $path.lineTo({ x: w, y: h / 2 + top.radiusY }) + $path.arcTo(90, 180, top.radius, top.radiusY) + $path.closePath();\r\n }\r\n else {\r\n path = $path.moveTo({ x: w / 2 - top.radius, y: 0 }) + $path.arcTo(180, -180, top.radius, top.radiusY) + $path.lineTo({ x: w / 2 + bottom.radius, y: h }) + $path.arcTo(0, 180, bottom.radius, bottom.radiusY) + $path.closePath();\r\n }\r\n this.body.path = path;\r\n };\r\n Object.defineProperty(Cone.prototype, \"angle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * Angle of the point of view to the 3D element. (0-360)\r\n *\r\n * @default 30\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Cone.prototype, \"radius\", {\r\n /**\r\n * @return Bottom radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * A relative radius of the cone's bottom (base).\r\n *\r\n * It is relevant to the inner width or height of the element.\r\n *\r\n * @default Percent(100)\r\n * @param value Bottom radius\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"radius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Cone.prototype, \"topRadius\", {\r\n /**\r\n * @return Top radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"topRadius\");\r\n },\r\n /**\r\n * A relative radius of the cone's top (tip).\r\n *\r\n * It is relevant to the inner width or height of the element.\r\n *\r\n * @default Percent(0)\r\n * @param value Top radius\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"topRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Cone.prototype, \"orientation\", {\r\n /**\r\n * Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Orientation of the cone\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"orientation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Cone;\r\n}(Container));\r\nexport { Cone };\r\n","/**\r\n * Creates a 3D rectangle.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../Container\";\r\nimport { Sprite } from \"../../Sprite\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $path from \"../../rendering/Path\";\r\nimport { Color, color, toColor } from \"../../utils/Color\";\r\nimport { RadialGradient } from \"../../rendering/fills/RadialGradient\";\r\nimport { LinearGradient } from \"../../rendering/fills/LinearGradient\";\r\nimport { LightenFilter } from \"../../rendering/filters/LightenFilter\";\r\nimport * as $type from \"../../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Builds a 3D rectangle\r\n * @see {@link IRectangle3DEvents} for a list of available events\r\n * @see {@link IRectangle3DAdapters} for a list of available Adapters\r\n */\r\nvar Rectangle3D = /** @class */ (function (_super) {\r\n __extends(Rectangle3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Rectangle3D() {\r\n var _this = _super.call(this) || this;\r\n _this.angle = 30;\r\n _this.depth = 30;\r\n _this.className = \"Rectangle3D\";\r\n _this.layout = \"none\";\r\n var sideBack = _this.createChild(Sprite);\r\n sideBack.shouldClone = false;\r\n sideBack.setElement(_this.paper.add(\"path\"));\r\n sideBack.isMeasured = false;\r\n _this.sideBack = sideBack;\r\n _this._disposers.push(_this.sideBack);\r\n var sideBottom = _this.createChild(Sprite);\r\n sideBottom.shouldClone = false;\r\n sideBottom.setElement(_this.paper.add(\"path\"));\r\n sideBottom.isMeasured = false;\r\n _this.sideBottom = sideBottom;\r\n _this._disposers.push(_this.sideBottom);\r\n var sideLeft = _this.createChild(Sprite);\r\n sideLeft.shouldClone = false;\r\n sideLeft.setElement(_this.paper.add(\"path\"));\r\n sideLeft.isMeasured = false;\r\n _this.sideLeft = sideLeft;\r\n _this._disposers.push(_this.sideLeft);\r\n var sideRight = _this.createChild(Sprite);\r\n sideRight.shouldClone = false;\r\n sideRight.setElement(_this.paper.add(\"path\"));\r\n sideRight.isMeasured = false;\r\n _this.sideRight = sideRight;\r\n _this._disposers.push(_this.sideRight);\r\n var sideTop = _this.createChild(Sprite);\r\n sideTop.shouldClone = false;\r\n sideTop.setElement(_this.paper.add(\"path\"));\r\n sideTop.isMeasured = false;\r\n _this.sideTop = sideTop;\r\n _this._disposers.push(_this.sideTop);\r\n var sideFront = _this.createChild(Sprite);\r\n sideFront.shouldClone = false;\r\n sideFront.setElement(_this.paper.add(\"path\"));\r\n sideFront.isMeasured = false;\r\n _this.sideFront = sideFront;\r\n _this._disposers.push(_this.sideFront);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Rectangle3D.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.innerWidth;\r\n var h = this.innerHeight;\r\n var depth = this.depth;\r\n var angle = this.angle;\r\n var sin = $math.sin(angle);\r\n var cos = $math.cos(angle);\r\n var a = { x: 0, y: 0 };\r\n var b = { x: w, y: 0 };\r\n var c = { x: w, y: h };\r\n var d = { x: 0, y: h };\r\n var ah = { x: depth * cos, y: -depth * sin };\r\n var bh = { x: depth * cos + w, y: -depth * sin };\r\n var ch = { x: depth * cos + w, y: -depth * sin + h };\r\n var dh = { x: depth * cos, y: -depth * sin + h };\r\n this.sideFront.path = $path.moveTo(a) + $path.lineTo(b) + $path.lineTo(c) + $path.lineTo(d) + $path.closePath();\r\n this.sideBack.path = $path.moveTo(ah) + $path.lineTo(bh) + $path.lineTo(ch) + $path.lineTo(dh) + $path.closePath();\r\n this.sideLeft.path = $path.moveTo(a) + $path.lineTo(ah) + $path.lineTo(dh) + $path.lineTo(d) + $path.closePath();\r\n this.sideRight.path = $path.moveTo(b) + $path.lineTo(bh) + $path.lineTo(ch) + $path.lineTo(c) + $path.closePath();\r\n this.sideBottom.path = $path.moveTo(d) + $path.lineTo(dh) + $path.lineTo(ch) + $path.lineTo(c) + $path.closePath();\r\n this.sideTop.path = $path.moveTo(a) + $path.lineTo(ah) + $path.lineTo(bh) + $path.lineTo(b) + $path.closePath();\r\n };\r\n Object.defineProperty(Rectangle3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth (Z dimension) of the 3D rectangle in pixels.\r\n *\r\n * @default 30\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"depth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Rectangle3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * Angle of the point of view to the 3D element. (0-360)\r\n *\r\n * @default 30\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\r\n Rectangle3D.prototype.setFill = function (value) {\r\n _super.prototype.setFill.call(this, value);\r\n if (!$type.isObject(value) || \"r\" in value) {\r\n value = toColor(value);\r\n }\r\n var colorStr;\r\n if (value instanceof Color) {\r\n colorStr = value.hex;\r\n }\r\n else if (value instanceof LinearGradient || value instanceof RadialGradient) {\r\n colorStr = value.stops.getIndex(0).color.hex;\r\n }\r\n else {\r\n var filter = new LightenFilter();\r\n filter.lightness = -0.2;\r\n this.sideBack.filters.push(filter);\r\n var filter2 = filter.clone();\r\n filter2.lightness = -0.4;\r\n this.sideLeft.filters.push(filter2);\r\n var filter3 = filter.clone();\r\n filter3.lightness = -0.2;\r\n this.sideRight.filters.push(filter3);\r\n var filter4 = filter.clone();\r\n filter4.lightness = -0.1;\r\n this.sideTop.filters.push(filter4);\r\n var filter5 = filter.clone();\r\n filter5.lightness = -0.5;\r\n this.sideBottom.filters.push(filter5);\r\n }\r\n if (colorStr) {\r\n this.sideBack.fill = color(colorStr).lighten(-0.2);\r\n this.sideLeft.fill = color(colorStr).lighten(-0.4);\r\n this.sideRight.fill = color(colorStr).lighten(-0.2);\r\n this.sideTop.fill = color(colorStr).lighten(-0.1);\r\n this.sideBottom.fill = color(colorStr).lighten(-0.5);\r\n }\r\n };\r\n /**\r\n * Copies all properties and related data from a different instance of Rectangle3D.\r\n *\r\n * @param source Source Rectangle3D\r\n */\r\n Rectangle3D.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.sideBack.copyFrom(source.sideBack);\r\n this.sideLeft.copyFrom(source.sideLeft);\r\n this.sideRight.copyFrom(source.sideRight);\r\n this.sideTop.copyFrom(source.sideTop);\r\n this.sideBottom.copyFrom(source.sideBottom);\r\n };\r\n return Rectangle3D;\r\n}(Container));\r\nexport { Rectangle3D };\r\n","/**\r\n * 3D slice module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Slice } from \"../Slice\";\r\nimport { Sprite } from \"../../Sprite\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $path from \"../../rendering/Path\";\r\nimport * as $type from \"../../utils/Type\";\r\nimport { Color, color } from \"../../utils/Color\";\r\nimport { RadialGradient } from \"../../rendering/fills/RadialGradient\";\r\nimport { LinearGradient } from \"../../rendering/fills/LinearGradient\";\r\nimport { LightenFilter } from \"../../rendering/filters/LightenFilter\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw a 3D slice of a Pie chart.\r\n *\r\n * @see {@link ISlice3DEvents} for a list of available events\r\n * @see {@link ISlice3DAdapters} for a list of available Adapters\r\n */\r\nvar Slice3D = /** @class */ (function (_super) {\r\n __extends(Slice3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Slice3D() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"Slice3D\";\r\n _this.layout = \"none\";\r\n // Create edge container\r\n var edge = _this.createChild(Sprite);\r\n _this.edge = edge;\r\n edge.shouldClone = false;\r\n edge.isMeasured = false;\r\n edge.toBack();\r\n // Set defaults\r\n _this.angle = 30;\r\n _this.depth = 20;\r\n // Create side A element\r\n var sideA = _this.createChild(Sprite);\r\n _this.sideA = sideA;\r\n sideA.shouldClone = false;\r\n sideA.isMeasured = false;\r\n //sideA.setElement(this.paper.add(\"path\"));\r\n //sideA.strokeOpacity = 0;\r\n // Crate side B element\r\n var sideB = _this.createChild(Sprite);\r\n _this.sideB = sideB;\r\n sideB.shouldClone = false;\r\n sideB.isMeasured = false;\r\n //sideB.setElement(this.paper.add(\"path\"));\r\n //sideB.strokeOpacity = 0;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\r\n Slice3D.prototype.setFill = function (value) {\r\n _super.prototype.setFill.call(this, value);\r\n var colorStr;\r\n if (value instanceof Color) {\r\n colorStr = value.hex;\r\n }\r\n else if (value instanceof LinearGradient || value instanceof RadialGradient) {\r\n colorStr = value.stops.getIndex(0).color.hex;\r\n }\r\n else {\r\n var filter = new LightenFilter();\r\n filter.lightness = -0.25;\r\n this.edge.filters.push(filter);\r\n this.sideA.filters.push(filter.clone());\r\n this.sideB.filters.push(filter.clone());\r\n }\r\n if (colorStr) {\r\n var edgeFill = color(colorStr).lighten(-0.25);\r\n this.edge.fill = edgeFill;\r\n this.sideA.fill = edgeFill;\r\n this.sideB.fill = edgeFill;\r\n this.edge.stroke = edgeFill;\r\n this.sideA.stroke = edgeFill;\r\n this.sideB.stroke = edgeFill;\r\n }\r\n };\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Slice3D.prototype.draw = function () {\r\n this.cornerRadius = 0;\r\n this.innerCornerRadius = 0;\r\n _super.prototype.draw.call(this);\r\n if (this.arc !== 0 && this.radius > 0 && this.depth > 0) {\r\n this.sideB.show(0);\r\n this.sideA.show(0);\r\n this.edge.show(0);\r\n var startAngle = this.startAngle;\r\n var arc = this.arc;\r\n var innerRadius = this.pixelInnerRadius || 0;\r\n var radiusY = this.radiusY || 0;\r\n //let cornerRadius = this.cornerRadius || 0;\r\n //let innerCornerRadius = this.innerCornerRadius;\r\n var radius = this.radius;\r\n // this is code duplicate with $path.arc. @todo to think how to avoid it\r\n var endAngle = startAngle + arc;\r\n //let crSin = $math.sin($math.min(arc, 45) / 2);\r\n //innerCornerRadius = innerCornerRadius || cornerRadius;\r\n var innerRadiusY = (radiusY / radius) * innerRadius;\r\n //let cornerRadiusY = (radiusY / radius) * cornerRadius;\r\n //let innerCornerRadiusY = (radiusY / radius) * innerCornerRadius;\r\n //cornerRadius = $math.fitToRange(cornerRadius, 0, (radius - innerRadius) / 2);\r\n //cornerRadiusY = $math.fitToRange(cornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n //innerCornerRadius = $math.fitToRange(innerCornerRadius, 0, (radius - innerRadius) / 2);\r\n //innerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n //cornerRadius = $math.fitToRange(cornerRadius, 0, radius * crSin);\r\n //cornerRadiusY = $math.fitToRange(cornerRadiusY, 0, radiusY * crSin);\r\n //innerCornerRadius = $math.fitToRange(innerCornerRadius, 0, innerRadius * crSin);\r\n //innerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, innerRadiusY * crSin);\r\n //let crAngle: number = Math.asin(cornerRadius / radius / 2) * $math.DEGREES * 2;\r\n //let crAngleY: number = Math.asin(cornerRadiusY / radiusY / 2) * $math.DEGREES * 2;\r\n //if (innerRadius < innerCornerRadius) {\r\n //\tinnerRadius = innerCornerRadius;\r\n //}\r\n //if (innerRadiusY < innerCornerRadiusY) {\r\n //\tinnerRadiusY = innerCornerRadiusY;\r\n //}\r\n //let crInnerAngle: number = Math.asin(innerCornerRadius / innerRadius / 2) * $math.DEGREES * 2;\r\n //let crInnerAngleY: number = Math.asin(innerCornerRadiusY / innerRadiusY / 2) * $math.DEGREES * 2;\r\n //if (!$type.isNumber(crInnerAngle)) {\r\n //\tcrInnerAngle = 0;\r\n //}\r\n //if (!$type.isNumber(crInnerAngleY)) {\r\n //\tcrInnerAngleY = 0;\r\n //}\r\n //let middleAngle = startAngle + arc / 2;\r\n //let mPoint = { x: $math.round($math.cos(middleAngle) * innerRadius, 4), y: $math.round($math.sin(middleAngle) * innerRadiusY, 4) };\r\n var a0 = { x: $math.cos(startAngle) * (innerRadius), y: $math.sin(startAngle) * (innerRadiusY) };\r\n var b0 = { x: $math.cos(startAngle) * (radius), y: $math.sin(startAngle) * (radiusY) };\r\n var c0 = { x: $math.cos(endAngle) * (radius), y: $math.sin(endAngle) * (radiusY) };\r\n var d0 = { x: $math.cos(endAngle) * (innerRadius), y: $math.sin(endAngle) * (innerRadiusY) };\r\n // end of duplicate\r\n var h = this.depth;\r\n var ah = { x: a0.x, y: a0.y - h };\r\n var bh = { x: b0.x, y: b0.y - h };\r\n var ch = { x: c0.x, y: c0.y - h };\r\n var dh = { x: d0.x, y: d0.y - h };\r\n var edgePath = \"\";\r\n var count = Math.ceil(arc / 5);\r\n var step = arc / count;\r\n var mangle = startAngle;\r\n var prevPoint = bh;\r\n for (var i = 0; i < count; i++) {\r\n mangle += step;\r\n if (mangle > 0 && mangle < 180) {\r\n edgePath += $path.moveTo(prevPoint);\r\n var pp = { x: $math.cos(mangle) * (radius), y: $math.sin(mangle) * (radiusY) - h };\r\n edgePath += $path.lineTo({ x: prevPoint.x, y: prevPoint.y + h });\r\n edgePath += $path.arcToPoint({ x: pp.x, y: pp.y + h }, radius, radiusY, true);\r\n edgePath += $path.lineTo(pp);\r\n edgePath += $path.arcToPoint(prevPoint, radius, radiusY);\r\n edgePath += \"z\";\r\n prevPoint = pp;\r\n }\r\n else {\r\n edgePath += $path.moveTo(prevPoint);\r\n var pp = { x: $math.cos(mangle) * (radius), y: $math.sin(mangle) * (radiusY) - h };\r\n edgePath += $path.arcToPoint(pp, radius, radiusY, true);\r\n edgePath += $path.lineTo({ x: pp.x, y: pp.y + h });\r\n edgePath += $path.arcToPoint({ x: prevPoint.x, y: prevPoint.y + h }, radius, radiusY);\r\n edgePath += $path.lineTo(prevPoint);\r\n edgePath += \"z\";\r\n prevPoint = pp;\r\n }\r\n }\r\n prevPoint = ah;\r\n mangle = startAngle;\r\n for (var i = 0; i < count; i++) {\r\n mangle += step;\r\n if (mangle > 0 && mangle < 180) {\r\n edgePath += $path.moveTo(prevPoint);\r\n var pp = { x: $math.cos(mangle) * (innerRadius), y: $math.sin(mangle) * (innerRadiusY) - h };\r\n edgePath += $path.lineTo({ x: prevPoint.x, y: prevPoint.y + h });\r\n edgePath += $path.arcToPoint({ x: pp.x, y: pp.y + h }, innerRadius, innerRadiusY, true);\r\n edgePath += $path.lineTo(pp);\r\n edgePath += $path.arcToPoint(prevPoint, innerRadius, innerRadiusY);\r\n edgePath += \"z\";\r\n prevPoint = pp;\r\n }\r\n else {\r\n edgePath += $path.moveTo(prevPoint);\r\n var pp = { x: $math.cos(mangle) * (innerRadius), y: $math.sin(mangle) * (innerRadiusY) - h };\r\n edgePath += $path.arcToPoint(pp, innerRadius, innerRadiusY, true);\r\n edgePath += $path.lineTo({ x: pp.x, y: pp.y + h });\r\n edgePath += $path.arcToPoint({ x: prevPoint.x, y: prevPoint.y + h }, innerRadius, innerRadiusY);\r\n edgePath += $path.lineTo(prevPoint);\r\n edgePath += \"z\";\r\n prevPoint = pp;\r\n }\r\n }\r\n this.edge.path = edgePath;\r\n /*\r\n a0 = { x: $math.cos(startAngle) * (innerRadius + innerCornerRadius), y: $math.sin(startAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n b0 = { x: $math.cos(startAngle) * (radius - cornerRadius), y: $math.sin(startAngle) * (radiusY - cornerRadiusY) };\r\n c0 = { x: $math.cos(endAngle) * (radius - cornerRadius), y: $math.sin(endAngle) * (radiusY - cornerRadiusY) };\r\n d0 = { x: $math.cos(endAngle) * (innerRadius + innerCornerRadius), y: $math.sin(endAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n // end of duplicate\r\n \r\n ah = { x: a0.x, y: a0.y - h };\r\n bh = { x: b0.x, y: b0.y - h };\r\n ch = { x: c0.x, y: c0.y - h };\r\n dh = { x: d0.x, y: d0.y - h };\r\n */\r\n this.sideA.path = $path.moveTo(a0) + $path.lineTo(b0) + $path.lineTo(bh) + $path.lineTo(ah) + $path.closePath();\r\n this.sideB.path = $path.moveTo(c0) + $path.lineTo(d0) + $path.lineTo(dh) + $path.lineTo(ch) + $path.closePath();\r\n if (this.startAngle < 90) {\r\n this.sideA.toBack();\r\n }\r\n else {\r\n this.sideA.toFront();\r\n }\r\n if (this.startAngle + this.arc > 90) {\r\n this.sideB.toBack();\r\n }\r\n else {\r\n this.sideB.toFront();\r\n }\r\n this.slice.dy = -h;\r\n }\r\n else {\r\n this.sideA.hide(0);\r\n this.sideB.hide(0);\r\n this.edge.hide(0);\r\n }\r\n };\r\n Object.defineProperty(Slice3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth (height) of the 3D slice in pixels.\r\n *\r\n * @default 20\r\n * @param depth Depth (px)\r\n */\r\n set: function (depth) {\r\n this.setPropertyValue(\"depth\", depth, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n var angle = this.getPropertyValue(\"angle\");\r\n if (!$type.isNumber(angle)) {\r\n angle = 0;\r\n }\r\n return angle;\r\n },\r\n /**\r\n * Angle of the point of view to the 3D element. (0-360)\r\n *\r\n * @default 30\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice3D.prototype, \"radiusY\", {\r\n /**\r\n * @return Vertical radius (0-1)\r\n */\r\n get: function () {\r\n var radiusY = this.getPropertyValue(\"radiusY\");\r\n if (!$type.isNumber(radiusY)) {\r\n radiusY = this.radius - this.radius * this.angle / 90;\r\n }\r\n return radiusY;\r\n },\r\n /**\r\n * Vertical radius for creating skewed slices.\r\n *\r\n * This is relevant to `radius`, e.g. 0.5 will set vertical radius to half\r\n * the `radius`.\r\n *\r\n * @param value Vertical radius (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"radiusY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\r\n Slice3D.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.edge.copyFrom(source.edge);\r\n this.sideA.copyFrom(source.sideA);\r\n this.sideB.copyFrom(source.sideB);\r\n };\r\n return Slice3D;\r\n}(Slice));\r\nexport { Slice3D };\r\n","/**\r\n * Functionality for drawing simple buttons.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { Label } from \"./Label\";\r\nimport { RoundedRectangle } from \"../elements/RoundedRectangle\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Button class is capable of drawing a simple rectangular button with\r\n * optionally rounded corners and an icon in it.\r\n *\r\n * @see {@link IButtonEvents} for a list of available events\r\n * @see {@link IButtonAdapters} for a list of available Adapters\r\n */\r\nvar Button = /** @class */ (function (_super) {\r\n __extends(Button, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Button() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"Button\";\r\n _this.tooltipY = 0;\r\n // Set defaults\r\n _this.iconPosition = \"left\";\r\n _this.layout = \"horizontal\";\r\n _this.contentAlign = \"center\";\r\n _this.contentValign = \"middle\";\r\n _this.padding(8, 16, 8, 16);\r\n _this.setStateOnChildren = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create background\r\n var background = _this.background;\r\n background.fill = interfaceColors.getFor(\"secondaryButton\");\r\n background.stroke = interfaceColors.getFor(\"secondaryButtonStroke\");\r\n background.fillOpacity = 1;\r\n background.strokeOpacity = 1;\r\n background.cornerRadius(3, 3, 3, 3);\r\n // Create the label element\r\n _this.label = new Label();\r\n _this.label.fill = interfaceColors.getFor(\"secondaryButtonText\");\r\n ;\r\n _this.label.shouldClone = false;\r\n // Create default states\r\n var hoverState = background.states.create(\"hover\");\r\n hoverState.properties.fillOpacity = 1;\r\n hoverState.properties.fill = interfaceColors.getFor(\"secondaryButtonHover\");\r\n var downState = background.states.create(\"down\");\r\n downState.transitionDuration = 100;\r\n downState.properties.fill = interfaceColors.getFor(\"secondaryButtonDown\");\r\n downState.properties.fillOpacity = 1;\r\n // Set up accessibility\r\n // A button should be always focusable\r\n _this.role = \"button\";\r\n _this.focusable = true;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Button.prototype, \"icon\", {\r\n /**\r\n * @return Icon Sprite\r\n */\r\n get: function () {\r\n return this._icon;\r\n },\r\n /**\r\n * A [[Sprite]] to be used as an icon on button.\r\n *\r\n * @param icon Icon Sprite\r\n */\r\n set: function (icon) {\r\n var currentIcon = this._icon;\r\n if (currentIcon) {\r\n //this._icon.dispose();\r\n //this.removeDispose(currentIcon);\r\n currentIcon.parent = undefined;\r\n }\r\n if (icon) {\r\n this._icon = icon;\r\n icon.parent = this;\r\n icon.interactionsEnabled = false;\r\n icon.shouldClone = false;\r\n this.iconPosition = this.iconPosition;\r\n this._disposers.push(icon);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Button.prototype, \"iconPosition\", {\r\n /**\r\n * @return Icon position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"iconPosition\");\r\n },\r\n /**\r\n * Icon position: \"left\" or \"right\".\r\n *\r\n * @default \"left\"\r\n * @param position Icon position\r\n */\r\n set: function (position) {\r\n this.setPropertyValue(\"iconPosition\", position);\r\n if (this.icon) {\r\n if (position == \"left\") {\r\n this.icon.toBack();\r\n }\r\n else {\r\n this.icon.toFront();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Button.prototype, \"label\", {\r\n /**\r\n * @return Label element\r\n */\r\n get: function () {\r\n return this._label;\r\n },\r\n /**\r\n * [[Label]] element to be used for text.\r\n *\r\n * @param label element\r\n */\r\n set: function (label) {\r\n if (this._label) {\r\n //this._label.dispose();\r\n this.removeDispose(this._label);\r\n }\r\n this._label = label;\r\n if (label) {\r\n label.parent = this;\r\n label.interactionsEnabled = false;\r\n this._disposers.push(this._label);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a background element for the button.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background element\r\n */\r\n Button.prototype.createBackground = function () {\r\n return new RoundedRectangle();\r\n };\r\n /**\r\n * Copies properties and other attributes.\r\n *\r\n * @param source Source\r\n */\r\n Button.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (source.label) {\r\n this.label.copyFrom(source.label);\r\n }\r\n if (source.icon) {\r\n this.icon = source.icon.clone();\r\n }\r\n };\r\n return Button;\r\n}(Container));\r\nexport { Button };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Button\"] = Button;\r\n","/**\r\n * Functionality for drawing circles.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { percent } from \"../utils/Percent\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to create a circle\r\n * @see {@link ICircleEvents} for a list of available events\r\n * @see {@link ICircleAdapters} for a list of available Adapters\r\n */\r\nvar Circle = /** @class */ (function (_super) {\r\n __extends(Circle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Circle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Circle\";\r\n _this.element = _this.paper.add(\"circle\");\r\n _this.setPercentProperty(\"radius\", percent(100));\r\n _this.setPropertyValue(\"horizontalCenter\", \"middle\");\r\n _this.setPropertyValue(\"verticalCenter\", \"middle\");\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the circle.\r\n */\r\n Circle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n this.element.attr({ \"r\": this.pixelRadius });\r\n };\r\n Object.defineProperty(Circle.prototype, \"radius\", {\r\n /**\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Radius of the circle.\r\n *\r\n * Can be either absolute (pixels) or relative ([Percent]).\r\n *\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Circle.prototype, \"pixelRadius\", {\r\n /**\r\n * Radius of the circle in pixels.\r\n *\r\n * This is a read-only property. To set radius in pixels, use `radius`\r\n * property.\r\n *\r\n * @readonly\r\n * @return Radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeToValue(this.radius, $math.min(this.innerWidth / 2, this.innerHeight / 2));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates bounding box.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Circle.prototype.measureElement = function () {\r\n var pixelRadius = this.pixelRadius;\r\n this._bbox = {\r\n x: -pixelRadius,\r\n y: -pixelRadius,\r\n width: pixelRadius * 2,\r\n height: pixelRadius * 2\r\n };\r\n };\r\n return Circle;\r\n}(Sprite));\r\nexport { Circle };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Circle\"] = Circle;\r\n","/**\r\n * Ellipse module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Circle } from \"./Circle\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws an ellipse\r\n * @see {@link IEllipseEvents} for a list of available events\r\n * @see {@link IEllipseAdapters} for a list of available Adapters\r\n */\r\nvar Ellipse = /** @class */ (function (_super) {\r\n __extends(Ellipse, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Ellipse() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Ellipse\";\r\n _this.element = _this.paper.add(\"ellipse\");\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the ellipsis.\r\n */\r\n Ellipse.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n this.element.attr({ \"rx\": this.radius });\r\n this.element.attr({ \"ry\": this.radiusY });\r\n };\r\n Object.defineProperty(Ellipse.prototype, \"radiusY\", {\r\n /**\r\n * @return Vertical radius\r\n */\r\n get: function () {\r\n return this.innerHeight / 2;\r\n },\r\n /**\r\n * Vertical radius.\r\n *\r\n * It's a relative size to the `radius`.\r\n *\r\n * E.g. 0.8 will mean the height of the ellipsis will be 80% of it's\r\n * horizontal radius.\r\n *\r\n * @param value Vertical radius\r\n */\r\n set: function (value) {\r\n this.height = value * 2;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Ellipse.prototype, \"radius\", {\r\n /**\r\n * @return Horizontal radius\r\n */\r\n get: function () {\r\n return this.innerWidth / 2;\r\n },\r\n /**\r\n * Horizontal radius.\r\n *\r\n * @param value Horizontal radius\r\n */\r\n set: function (value) {\r\n this.width = value * 2;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Ellipse;\r\n}(Circle));\r\nexport { Ellipse };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Ellipse\"] = Ellipse;\r\n","/**\r\n * Text class deals with all text placed on chart.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { registry } from \"../Registry\";\r\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { MultiDisposer } from \"../utils/Disposer\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../utils/Responsive\";\r\nimport { options } from \"../Options\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Text is used to display highly configurable, data-enabled textual elements.\r\n *\r\n * ## Data Binding\r\n *\r\n * A Text element can dynamically parse and populate its contents with values\r\n * from a [[DataItem]].\r\n *\r\n * To activate such binding, set element's `dataItem` property.\r\n *\r\n * When activated, text contents will be parsed for special tags, e.g.:\r\n *\r\n * ```TypeScript\r\n * label.dataItem = myDataItem;\r\n * label.text = \"The title is: {title}\";\r\n * ```\r\n * ```JavaScript\r\n * label.dataItem = myDataItem;\r\n * label.text = \"The title is: {title}\";\r\n * ```\r\n *\r\n * The above will automatically replace \"{title}\" in the string with the\r\n * actual data value from `myDataItem`.\r\n *\r\n * Note, that most often dataItem is set by the Component.\r\n *\r\n *\r\n * @see {@link ILabelEvents} for a list of available events\r\n * @see {@link ILabelAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-strings/} for info on string formatting and data binding\r\n * @todo Vertical align\r\n * @important\r\n */\r\nvar Label = /** @class */ (function (_super) {\r\n __extends(Label, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Label() {\r\n var _this = \r\n // Execute super's constructor\r\n _super.call(this) || this;\r\n /**\r\n * Indicates if the whole text does not fit into max dimenstions set for it.\r\n */\r\n _this.isOversized = false;\r\n // Set this class name\r\n _this.className = \"Label\";\r\n _this.fill = new InterfaceColorSet().getFor(\"text\");\r\n // not good to set this, as then these will appear on each label and values set on container won't be applied.\r\n //this.textDecoration = \"none\";\r\n //this.fontWeight = \"normal\";\r\n // Set defaults\r\n _this.wrap = false;\r\n _this.truncate = false;\r\n _this.fullWords = true;\r\n _this.ellipsis = \"…\";\r\n _this.textAlign = \"start\";\r\n _this.textValign = \"top\";\r\n _this.layout = \"absolute\";\r\n _this.baseLineRatio = -0.27;\r\n //this.pixelPerfect = true;\r\n _this._positionPrecision = 1;\r\n // Add events to watch for maxWidth/maxHeight changes so that we can\r\n // invalidate this\r\n _this.events.on(\"maxsizechanged\", function () {\r\n if (_this.inited) {\r\n _this.handleMaxSize();\r\n }\r\n }, _this, false);\r\n // this solves strange bug when text just added to svg is 0x0\r\n _this.events.once(\"validated\", _this.handleValidate, _this, false);\r\n // Aply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * A placeholder method that is called **after** element finishes drawing\r\n * itself.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Label.prototype.afterDraw = function () {\r\n // since we removed validatePosition from sprite, we still need it here to handle rotated text\r\n _super.prototype.afterDraw.call(this);\r\n this.validatePosition();\r\n };\r\n /**\r\n * Sets [[Paper]] instance to use to draw elements.\r\n * @ignore\r\n * @param paper Paper\r\n * @return true if paper was changed, false, if it's the same\r\n */\r\n Label.prototype.setPaper = function (paper) {\r\n var changed = _super.prototype.setPaper.call(this, paper);\r\n if (changed) {\r\n this.hardInvalidate();\r\n }\r\n return changed;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Label.prototype.handleValidate = function () {\r\n if ((this.currentText || this.text) && (this.bbox.width == 0 || this.bbox.height == 0)) {\r\n registry.events.once(\"exitframe\", this.hardInvalidate, this);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Label.prototype.handleMaxSize = function () {\r\n if ((this.bbox.width > this.availableWidth)\r\n || ((this.bbox.width < this.availableWidth) && (this.isOversized || this.truncate))\r\n || (this.bbox.height > this.availableHeight)\r\n || ((this.bbox.height < this.availableHeight) && this.isOversized)) {\r\n this.invalidate();\r\n }\r\n else {\r\n //this.alignSVGText();\r\n }\r\n };\r\n /**\r\n * [arrange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Label.prototype.arrange = function () {\r\n };\r\n /**\r\n * Updates current text according to data item and supported features.\r\n * Returns `true` if current text has changed.\r\n *\r\n * @return Text changed?\r\n */\r\n Label.prototype.updateCurrentText = function () {\r\n // Determine output format\r\n var output, text;\r\n if ($utils.isNotEmpty(this.html) && this.paper.supportsForeignObject()) {\r\n // We favor HTML text if it's set and browser supports `foreignObject`\r\n output = \"html\";\r\n text = this.html;\r\n }\r\n else {\r\n output = \"svg\";\r\n text = this.text;\r\n }\r\n // Need to toString source?\r\n if ($type.isObject(text)) {\r\n text = text.toString();\r\n }\r\n // Need to format text all the time\r\n if ($type.hasValue(text) && text !== \"\") {\r\n text = this.populateString(text, this.dataItem);\r\n }\r\n if (output == \"html\") {\r\n if (this._adapterO) {\r\n text = this._adapterO.apply(\"htmlOutput\", text);\r\n }\r\n }\r\n else {\r\n if (this._adapterO) {\r\n text = this._adapterO.apply(\"textOutput\", text);\r\n }\r\n }\r\n // Update the text\r\n var changed = text != this.currentText || output != this._currentFormat;\r\n this.currentText = text;\r\n this._currentFormat = output;\r\n return changed;\r\n };\r\n /**\r\n * Hard invalidate means the text will be redrawn even if it hasn't changed.\r\n * This is used when we change `fontSize`, `fontFamily`, or for some other\r\n * reasons.\r\n */\r\n Label.prototype.hardInvalidate = function () {\r\n this._prevStatus = \"\";\r\n this.invalidate();\r\n };\r\n /**\r\n * Gets line bbox, uses caching to save cpu\r\n * @ignore\r\n */\r\n Label.prototype.getLineBBox = function (lineInfo) {\r\n //let cacheKey = lineInfo.text + lineInfo.style;\r\n //let lineBBox = this.getCache(cacheKey);\r\n //if (!lineBBox) {\r\n //lineBBox = lineInfo.element.getBBox();\r\n //if (lineBBox.width != 0 && lineBBox.height != 0) {\r\n //\tthis.setCache(cacheKey, lineBBox, 5000);\r\n //}\r\n //}\r\n var element = lineInfo && lineInfo.element;\r\n var node = element && element.node;\r\n // Check for the parent Node to avoid FF from throwing errors\r\n if (node && node.parentNode) {\r\n lineInfo.bbox = element.getBBox();\r\n }\r\n };\r\n /**\r\n * Draws the textual label.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Label.prototype.draw = function () {\r\n // Draw super\r\n _super.prototype.draw.call(this);\r\n var oldW = this.bbox.width;\r\n var oldH = this.bbox.height;\r\n var topParent = this.topParent;\r\n if (topParent) {\r\n if (!topParent.maxWidth || !topParent.maxHeight) {\r\n topParent.events.once(\"maxsizechanged\", this.hardInvalidate, this, false);\r\n return;\r\n }\r\n }\r\n // Calculate max width and height\r\n var maxWidth = $math.max(this.availableWidth - this.pixelPaddingLeft - this.pixelPaddingRight, 0);\r\n var maxHeight = $math.max(this.availableHeight - this.pixelPaddingTop - this.pixelPaddingBottom, 0);\r\n // save\r\n var status = maxHeight + \",\" + maxWidth + this.wrap + this.truncate + this.fullWords + this.rtl + this.ellipsis;\r\n // Update text\r\n if (!this.updateCurrentText() && this.inited && this._prevStatus == status) {\r\n return;\r\n }\r\n this._measuredWidth = 0;\r\n this._measuredHeight = 0;\r\n // Reset\r\n this.isOversized = false;\r\n // Determine output format\r\n var output = this._currentFormat;\r\n var text = this.currentText;\r\n // Empty string\r\n if (!$type.hasValue(text) || text == \"\") {\r\n this.element.attr({ display: \"none\" });\r\n return;\r\n }\r\n // Chop up text into lines\r\n // We're still processing SVG and HTML in the same way for now\r\n var lines = text.split(\"\\n\");\r\n // Do we need to go through the trouble of measuring lines\r\n //let measure: boolean = true;// (lines.length > 1) || this.wrap;\r\n this._prevStatus = status;\r\n this.textAlign = this.textAlign;\r\n // need this to measure\r\n var display = this.group.getAttr(\"display\");\r\n if (display == \"none\") {\r\n this.group.removeAttr(\"display\");\r\n }\r\n if (this.textPathElement) {\r\n this.textPathElement.removeChildren();\r\n }\r\n // SVG or HTML?\r\n if (output === \"svg\") {\r\n /**\r\n * SVG\r\n */\r\n this.element.removeAttr(\"display\");\r\n // Clear the element\r\n var group = this.element;\r\n //group.removeChildren();\r\n this.resetBBox();\r\n // Init state variables\r\n var currentHeight = 0;\r\n var currentFormat = \"\";\r\n // Process each line\r\n for (var i = 0; i < lines.length; i++) {\r\n // Get line\r\n var line = lines[i];\r\n // Check if line is empty\r\n if (line == \"\") {\r\n // It is, let's just update currentHeight and go to the next one\r\n // If it's the first line, we'll have to use arbirary line height,\r\n // since there's nothing to measure. For subsequent lines we can take\r\n // previous line's height\r\n var tempElement = this.getSVGLineElement(\"\", 0);\r\n tempElement.add(this.getSvgElement(\".\", getTextFormatter().translateStyleShortcuts(currentFormat)));\r\n group.add(tempElement);\r\n var offset = Math.ceil(tempElement.getBBox().height);\r\n if (offset > 0) {\r\n currentHeight += offset;\r\n }\r\n group.removeElement(tempElement);\r\n // Clear cache if necessary\r\n var lineInfo_1 = this.getLineInfo(i);\r\n if (lineInfo_1) {\r\n lineInfo_1.text = \"\";\r\n lineInfo_1.element.textContent = \"\";\r\n }\r\n continue;\r\n }\r\n // Chunk up the line and process each chunk\r\n var chunks = getTextFormatter().chunk(line, null, this.ignoreFormatting);\r\n var currentLineHeight = 0;\r\n var firstChunk = true;\r\n var skipTextChunks = false;\r\n // Create line element or grab it from cache\r\n var lineInfo = this.getLineInfo(i);\r\n if (lineInfo) {\r\n // Empty line\r\n lineInfo.text = \"\";\r\n lineInfo.element.textContent = \"\";\r\n }\r\n else {\r\n // Init new line info\r\n lineInfo = {\r\n \"text\": \"\",\r\n \"element\": this.getSVGLineElement(\"\", 0),\r\n \"complex\": false\r\n };\r\n // Create the line element\r\n //lineInfo.element = this.getSVGLineElement(\"\", 0);\r\n //lineElement = this.getSVGLineElement(\"\", 0);\r\n group.add(lineInfo.element);\r\n }\r\n lineInfo.element.removeAttr(\"display\");\r\n lineInfo.element.removeChildren(); // memory leak without this\r\n if (this.textPathElement) {\r\n lineInfo.element.add(this.textPathElement);\r\n }\r\n /*// @todo not needed anymore\r\n if (this.rtl) {\r\n chunks.reverse();\r\n }*/\r\n // Process each chunk\r\n for (var x = 0; x < chunks.length; x++) {\r\n // If there's more than one chunk, means the line is \"complex\"\r\n if (x) {\r\n lineInfo.complex = true;\r\n }\r\n // Get chunk\r\n var chunk = chunks[x];\r\n // Is this chunk format or text?\r\n if (chunk.type === \"format\") {\r\n // Log current format, so that we can apply it to multiple lines if\r\n // necessary\r\n currentFormat = chunk.text;\r\n }\r\n else {\r\n // It's text block\r\n // Need to skip?\r\n // We do this when truncating. We can't just simply go ahead and\r\n // abandon chunk processing as they might have formatting\r\n // instructions in them that are relevant for subsequent lines\r\n if (skipTextChunks) {\r\n continue;\r\n }\r\n // Add chunk to the current element\r\n //lineInfo.element.content += $utils.trim(getTextFormatter().format(currentFormat + chunk.text, output));\r\n lineInfo.text = chunk.text;\r\n lineInfo.style = getTextFormatter().translateStyleShortcuts(currentFormat);\r\n if (this.textPathElement) {\r\n this.getSvgElement(lineInfo.text, lineInfo.style, this.textPathElement);\r\n }\r\n else {\r\n this.getSvgElement(lineInfo.text, lineInfo.style, lineInfo.element);\r\n }\r\n this.getLineBBox(lineInfo);\r\n lineInfo.bbox.width = Math.ceil(lineInfo.bbox.width);\r\n // Updated current line height\r\n if (currentLineHeight < lineInfo.bbox.height) {\r\n currentLineHeight = lineInfo.bbox.height;\r\n }\r\n // Wrapping?\r\n if ((this.wrap || this.truncate) && (lineInfo.bbox.width > maxWidth)) {\r\n // Set oversized\r\n this.isOversized = true;\r\n // Take temporary measurements\r\n var lineText = lineInfo.element.textContent;\r\n var avgCharWidth = (lineInfo.bbox.width / lineText.length); // * .9;\r\n // Calculate average number of symbols / width\r\n var excessChars = $math.min(Math.ceil((lineInfo.bbox.width - maxWidth) / avgCharWidth), lineText.length);\r\n // Are we truncating or auto-wrapping text?\r\n if (this.truncate) {\r\n /**\r\n * Processing line truncation\r\n * With the addition of each text chunk we measure if current\r\n * line does not exceed maxWidth. If it does, we will stop\r\n * addition of further chunks as well as try to truncate\r\n * current or any number of previous chunks with an added\r\n * ellipsis\r\n */\r\n // Indicator whether we need to add ellipsis to the current\r\n // element, even if it fits. This is needed to indicate\r\n // whether we have already removed some subsequent chunks in\r\n // which case we need to add ellipsis.\r\n var addEllipsis = false;\r\n // Process each child in the temporary line, until the whole\r\n // line fits, preferably with an ellipsis\r\n // TODO use iterator instead\r\n var node_1 = lineInfo.element.node;\r\n if (node_1 && node_1.childNodes) {\r\n for (var e = lineInfo.element.node.childNodes.length - 1; e >= 0; e--) {\r\n // Get current element\r\n var node_2 = lineInfo.element.node.childNodes[e];\r\n // Add ellipsis only if previous chunk was removed in full\r\n // and this chunk already fits\r\n //if (addEllipsis && (bbox.width <= maxWidth)) {\r\n if (addEllipsis && (lineInfo.bbox.width <= maxWidth)) {\r\n // Add ellipsis\r\n node_2.textContent += \" \" + this.ellipsis;\r\n // Measure again (we need to make sure ellipsis fits)\r\n lineInfo.bbox = lineInfo.element.getBBox();\r\n lineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\r\n // If it fits, we're done here\r\n // If it doesn't we continue rolling\r\n if (lineInfo.bbox.width <= maxWidth) {\r\n break;\r\n }\r\n }\r\n addEllipsis = false;\r\n // Get element text\r\n var elementText = node_2.textContent;\r\n // Calculate average number of symbols / width\r\n lineText = lineInfo.element.textContent;\r\n excessChars = $math.min(Math.ceil((lineInfo.bbox.width - maxWidth) / avgCharWidth), lineText.length);\r\n // Do this until we fit\r\n while ((lineInfo.bbox.width > maxWidth) && (excessChars <= lineText.length) && (excessChars > 0)) {\r\n // Calculate max available chars\r\n var maxChars = $math.max(lineText.length - excessChars - this.ellipsis.length, 1);\r\n // Is there anything left?\r\n if (maxChars <= 1) {\r\n // Nope, let's jump to the previous item\r\n // Set excess characters to zero so that this loop does\r\n // not repeat when it over\r\n excessChars = 0;\r\n // Add ellipsis to previous item\r\n // Subsequent iterations will check if the ellipsis fits\r\n if (e > 0) {\r\n // Indicating to add ellipsis to previous item\r\n addEllipsis = true;\r\n // Removing this node\r\n lineInfo.element.node.removeChild(node_2);\r\n }\r\n }\r\n // Truncate the text\r\n elementText = $utils.truncateWithEllipsis(elementText, maxChars, this.ellipsis, this.fullWords, this.rtl);\r\n if ((elementText.length > maxChars) && this.fullWords) {\r\n // Still too long?\r\n // Let's try truncating breaking words anyway\r\n elementText = $utils.truncateWithEllipsis(elementText, maxChars, this.ellipsis, false, this.rtl);\r\n }\r\n // Set truncated text\r\n node_2.textContent = elementText;\r\n // Measure again\r\n lineInfo.bbox = lineInfo.element.getBBox();\r\n lineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\r\n // Increase excess characters count, just in case it still\r\n // doesn't fit and we have to go at it again\r\n excessChars = Math.ceil(excessChars * 1.1);\r\n }\r\n // Do not process further chunks\r\n skipTextChunks = true;\r\n }\r\n }\r\n }\r\n else {\r\n /**\r\n * Processign auto-wrap\r\n * In this case we're going to be adding text chunks until\r\n * they don't fit into current line. Once that happens we will\r\n * inject the rest of the chunks to the next line\r\n */\r\n // Get last node added and measure it\r\n var node_3 = lineInfo.element.node;\r\n if (node_3) {\r\n var lastNode = lineInfo.element.node.lastChild;\r\n // Init split lines\r\n var splitLines = void 0;\r\n while ((lineInfo.bbox.width > maxWidth) && (excessChars <= lineText.length) && (excessChars > 0)) {\r\n // Calculate max available chars\r\n var maxChars = $math.max(chunk.text.length - excessChars, 1);\r\n // Don't split the words mid-word if it's not the first chunk\r\n // in the line\r\n if (firstChunk) {\r\n // Split mid-word if necessary\r\n splitLines = $utils.splitTextByCharCount(chunk.text, maxChars, true, this.rtl);\r\n }\r\n else {\r\n // Don't split mid-word\r\n splitLines = $utils.splitTextByCharCount(chunk.text, maxChars, true, this.rtl, false);\r\n // Check if the first word is too long\r\n if ((splitLines[0].length > maxChars) || maxChars === 1) {\r\n // Yes - move the whole chunk to the next line\r\n // Remove the element we just added\r\n lineInfo.element.node.removeChild(lastNode);\r\n // Break out of the while on next cycle\r\n excessChars = 0;\r\n }\r\n }\r\n // Use the first line to update last item\r\n if (excessChars > 0) {\r\n var lineText_1 = splitLines.shift();\r\n if (firstChunk) {\r\n lineText_1 = $utils.trim(lineText_1);\r\n }\r\n lastNode.textContent = getTextFormatter().cleanUp(lineText_1);\r\n }\r\n // Measure again, just in case\r\n lineInfo.bbox = lineInfo.element.getBBox();\r\n lineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\r\n // Increase excess characters count, just in case it still\r\n // doesn't fit and we have to go at it again\r\n //excessChars = Math.ceil(excessChars * 1.05);\r\n excessChars++;\r\n }\r\n // Construct the rest of the line\r\n if (splitLines.length > 0) {\r\n var restOfLine = \"\";\r\n // Add leftovers from splitting the current chunk\r\n if ($type.hasValue(splitLines)) {\r\n if (this.rtl) {\r\n restOfLine += splitLines.join(\"\") + currentFormat;\r\n }\r\n else {\r\n restOfLine += currentFormat + splitLines.join(\"\").replace(/([\\[\\]]{1})/g, \"$1$1\");\r\n }\r\n }\r\n // Add the rest of the chunks\r\n for (var c = x + 1; c < chunks.length; c++) {\r\n if (chunks[c].type == \"value\") {\r\n // We're escaping single square brackets that were\r\n // cleaned up by chunk() back to double square brackets\r\n // so that they are not being treated as format on\r\n // next pass.\r\n restOfLine += chunks[c].text.replace(/([\\[\\]]{1})/g, \"$1$1\");\r\n }\r\n else {\r\n restOfLine += chunks[c].text;\r\n }\r\n }\r\n // Inject the rest of the lines as chunks for subsequent\r\n lines.splice(i + 1, 0, restOfLine);\r\n }\r\n // Skip processing the rest of the chunks\r\n skipTextChunks = true;\r\n }\r\n }\r\n }\r\n // Let's update the text's bbox with the line's one\r\n if (this.bbox.width < lineInfo.bbox.width) {\r\n this.bbox.width = lineInfo.bbox.width;\r\n }\r\n // commented to avoid bug (seen on sankey link) where text is incorrectly aligned\r\n //if (this.bbox.x > lineInfo.bbox.x) {\r\n //this.bbox.x = lineInfo.bbox.x;\r\n //}\r\n this.bbox.height = currentHeight + currentLineHeight;\r\n // Position current line\r\n if (!this.textPathElement) {\r\n lineInfo.element.attr({\r\n \"x\": \"0\",\r\n \"y\": currentHeight + currentLineHeight,\r\n \"dy\": $math.round((this.baseLineRatio * currentLineHeight), 3).toString()\r\n });\r\n }\r\n else {\r\n lineInfo.element.attr({\r\n \"dy\": -this.paddingBottom.toString()\r\n });\r\n }\r\n firstChunk = false;\r\n }\r\n }\r\n // Trim the last item\r\n var node = lineInfo.element.node;\r\n if (node) {\r\n var lastNode = node.lastChild;\r\n if (lastNode) {\r\n lastNode.textContent = this.rtl ?\r\n $utils.ltrim(lastNode.textContent) :\r\n $utils.rtrim(lastNode.textContent);\r\n }\r\n }\r\n // Increment collective height\r\n currentHeight += currentLineHeight;\r\n // Save line cache\r\n this.addLineInfo(lineInfo, i);\r\n }\r\n // Check if maybe we need to hide the whole label if it doesn't fit\r\n this.maybeHideOversized();\r\n this.measureFailed = false;\r\n if (this.bbox.width == 0 || this.bbox.height == 0) {\r\n this.measureFailed = true;\r\n }\r\n // Updated measured dims\r\n this._measuredWidth = $math.round($math.max(this.bbox.width, this.pixelWidth - this.pixelPaddingLeft - this.pixelPaddingRight));\r\n this._measuredHeight = $math.round($math.max(this.bbox.height, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom));\r\n // Align the lines\r\n this.alignSVGText();\r\n this.bbox.width = this._measuredWidth;\r\n this.bbox.height = this._measuredHeight;\r\n if (oldH != this._measuredHeight || oldW != this._measuredWidth) {\r\n this.dispatch(\"transformed\");\r\n }\r\n this.hideUnused(lines.length);\r\n }\r\n else {\r\n /**\r\n * HTML\r\n */\r\n this.element.removeAttr(\"display\");\r\n this.resetBBox();\r\n // Clear the element\r\n var group = this.element;\r\n group.removeChildren();\r\n this.setCache(\"lineInfo\", [], 0);\r\n // Create a ForeignObject to use as HTML container\r\n var fo = this.paper.foreignObject();\r\n group.add(fo);\r\n // Set widths on foreignObject so that autosizing measurements work\r\n // This will bet reset to actual content width/height\r\n if (this.maxWidth) {\r\n fo.attr({\r\n width: this.maxWidth - this.pixelPaddingLeft - this.pixelPaddingRight\r\n });\r\n }\r\n if (this.maxHeight) {\r\n fo.attr({\r\n height: this.maxHeight - this.pixelPaddingTop - this.pixelPaddingBottom\r\n });\r\n }\r\n // Create line element\r\n //let lineElement: HTMLElement = this.getHTMLLineElement(getTextFormatter().format(this.html, output));\r\n var lineElement = this.getHTMLLineElement(text);\r\n fo.node.appendChild(lineElement);\r\n // Temporarily set to inline-block so we can measure real width and height\r\n lineElement.style.display = \"inline-block\";\r\n var clientWidth = lineElement.clientWidth;\r\n var clientHeight = lineElement.clientHeight;\r\n lineElement.style.display = \"block\";\r\n this._bbox = {\r\n x: 0,\r\n y: 0,\r\n width: clientWidth,\r\n height: clientHeight\r\n };\r\n // Set exact dimensions of foreignObject so it is sized exactly as\r\n // the content within (add one pixel to width so it does not wrap)\r\n fo.attr({\r\n width: clientWidth + 1,\r\n height: clientHeight\r\n });\r\n // Check if maybe we need to hide the whole label if it doesn't fit\r\n this.maybeHideOversized();\r\n // Set measurements and update bbox\r\n this._measuredWidth = $math.max(this.bbox.width, this.pixelWidth - this.pixelPaddingLeft - this.pixelPaddingRight);\r\n this._measuredHeight = $math.max(this.bbox.height, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom);\r\n this.bbox.width = this._measuredWidth;\r\n this.bbox.height = this._measuredHeight;\r\n // Don't let labels bleed out of the alotted area\r\n if (this.truncate) {\r\n lineElement.style.overflow = \"hidden\";\r\n }\r\n if ((clientWidth > maxWidth) || (clientHeight > maxHeight)) {\r\n this.isOversized = true;\r\n }\r\n }\r\n // Set applicable styles\r\n this.setStyles();\r\n this.updateCenter();\r\n this.updateBackground();\r\n if (display == \"none\") {\r\n this.group.attr({ display: \"none\" });\r\n }\r\n if (this.pathElement) {\r\n this.paper.appendDef(this.pathElement);\r\n }\r\n };\r\n /**\r\n * Hides element if it does not fit into available space\r\n */\r\n Label.prototype.maybeHideOversized = function () {\r\n if (this.hideOversized) {\r\n if ((this.availableWidth < this.bbox.width) || (this.availableHeight < this.bbox.height)) {\r\n this.element.attr({ display: \"none\" });\r\n this.isOversized = true;\r\n }\r\n else {\r\n this.element.removeAttr(\"display\");\r\n this.isOversized = false;\r\n }\r\n }\r\n };\r\n /**\r\n * Aligns the lines horizontally and vertically, based on properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Label.prototype.alignSVGText = function () {\r\n // Get Group\r\n var group = this.element;\r\n var children = group.node.children || group.node.childNodes;\r\n // Is there anything to align?\r\n if (!children || (children && children.length == 0)) {\r\n return;\r\n }\r\n var width = this._measuredWidth;\r\n var height = this._measuredHeight;\r\n // TODO maybe these aren't needed ?\r\n $utils.used(this.pixelPaddingLeft);\r\n $utils.used(this.pixelPaddingRight);\r\n $utils.used(this.pixelPaddingTop);\r\n $utils.used(this.pixelPaddingBottom);\r\n if (this.rtl) {\r\n group.attr({\r\n \"direction\": \"rtl\"\r\n });\r\n }\r\n else {\r\n group.removeAttr(\"direction\");\r\n }\r\n // Process each line\r\n //$iter.each(group.children.backwards().iterator(), (element) => {\r\n for (var i = children.length - 1; i >= 0; i--) {\r\n // Align horizontally\r\n // Since we are using `text-anchor` for horizontal alignment, all we need\r\n // to do here is move the `x` position\r\n var node = children[i];\r\n node.setAttribute(\"text-anchor\", this.textAlign);\r\n if (this.textPathElement) {\r\n node.removeAttribute(\"x\");\r\n node.removeAttribute(\"y\");\r\n }\r\n else {\r\n switch (this.textAlign) {\r\n case \"middle\":\r\n node.setAttribute(\"x\", (width / 2).toString() + \"px\");\r\n break;\r\n case \"end\":\r\n if (this.rtl) {\r\n }\r\n else {\r\n node.setAttribute(\"x\", width.toString());\r\n }\r\n break;\r\n default:\r\n if (this.rtl) {\r\n node.setAttribute(\"x\", width.toString());\r\n }\r\n else {\r\n node.removeAttribute(\"text-anchor\");\r\n }\r\n break;\r\n }\r\n var y = $type.toNumber(node.getAttribute(\"y\"));\r\n switch (this.textValign) {\r\n case \"middle\":\r\n node.setAttribute(\"y\", ((y || 0) + (height - this.bbox.height) / 2).toString());\r\n break;\r\n case \"bottom\":\r\n node.setAttribute(\"y\", ((y || 0) + height - this.bbox.height).toString());\r\n break;\r\n default:\r\n node.setAttribute(\"y\", (y || 0).toString());\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Produces an SVG line element with formatted text.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap into line\r\n * @param y Current line vertical position\r\n * @return A DOM element\r\n * @todo Implement HTML support\r\n */\r\n Label.prototype.getSVGLineElement = function (text, y) {\r\n // Create a <text> node and set text\r\n var element = this.paper.addGroup(\"text\");\r\n element.textContent = text;\r\n // Set parameters\r\n element.attr({\r\n \"x\": \"0\"\r\n //\"alignment-baseline\": \"hanging\",\r\n //\"baseline-shift\": \"-20%\",\r\n //\"text-anchor\": \"center\"\r\n });\r\n // Set `y` position\r\n if ($type.hasValue(y)) {\r\n element.attr({\r\n \"y\": y.toString()\r\n });\r\n }\r\n // Don't let labels blled out of the alotted area\r\n if (this.truncate || this.wrap) {\r\n element.attr({ \"overflow\": \"hidden\" });\r\n }\r\n // Add RTL?\r\n // This has now been moved to this.alignSVGText()\r\n // if (this.rtl) {\r\n // \telement.attr({\r\n // \t\t\"direction\": \"rtl\",\r\n // \t\t//\"unicode-bidi\": \"bidi-override\"\r\n // \t});\r\n // }\r\n return element;\r\n };\r\n Object.defineProperty(Label.prototype, \"rtl\", {\r\n /**\r\n * @return RTL?\r\n */\r\n get: function () {\r\n if ($type.hasValue(this._rtl)) {\r\n return this._rtl;\r\n }\r\n else if (this._topParent) {\r\n return this._topParent.rtl;\r\n }\r\n return false;\r\n },\r\n /**\r\n * An RTL (right-to-left) setting.\r\n *\r\n * RTL may affect alignment, text, and other visual properties.\r\n *\r\n * If you set this on a top-level chart object, it will be used for all\r\n * child elements, e.g. labels, unless they have their own `rtl` setting\r\n * set directly on them.\r\n *\r\n * @param value `true` for to use RTL\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n this._rtl = value;\r\n if (this.element) {\r\n this.alignSVGText();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Resets cached BBox.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Label.prototype.resetBBox = function () {\r\n this._bbox = { x: 0, y: 0, width: 0, height: 0 };\r\n };\r\n /**\r\n * Creates and returns an HTML line element (`<div>`).\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to add\r\n * @return `<div>` element reference\r\n */\r\n Label.prototype.getHTMLLineElement = function (text) {\r\n // Create the <div> element\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = text;\r\n // Set text alignment\r\n switch (this.textAlign) {\r\n case \"middle\":\r\n div.style.textAlign = \"center\";\r\n break;\r\n case \"end\":\r\n div.style.textAlign = \"right\";\r\n break;\r\n }\r\n // Disable or enable wrapping\r\n if (this.wrap) {\r\n div.style.wordWrap = \"break-word\";\r\n }\r\n else {\r\n div.style.whiteSpace = \"nowrap\";\r\n }\r\n // Don't let labels bleed out of the alotted area\r\n // Moved to `draw()` because setting \"hidden\" kills all measuring\r\n /*if (this.truncate) {\r\n div.style.overflow = \"hidden\";\r\n }*/\r\n // Set RTL-related styles\r\n if (this.rtl) {\r\n div.style.direction = \"rtl\";\r\n //div.style.unicodeBidi = \"bidi-override\";\r\n }\r\n // Translate some of the SVG styles into CSS\r\n if ($type.hasValue(this.fill)) {\r\n div.style.color = this.fill.toString();\r\n }\r\n return div;\r\n };\r\n /**\r\n * Applies specific styles to text to make it not selectable, unless it is\r\n * explicitly set as `selectable`.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Set styles via AMElement\r\n */\r\n Label.prototype.setStyles = function () {\r\n var group = this.element;\r\n if (!this.selectable || this.draggable || this.resizable || this.swipeable) {\r\n group.addStyle({\r\n \"webkitUserSelect\": \"none\",\r\n \"msUserSelect\": \"none\"\r\n });\r\n }\r\n else if (this.selectable) {\r\n group.removeStyle(\"webkitUserSelect\");\r\n group.removeStyle(\"msUserSelect\");\r\n }\r\n };\r\n /**\r\n * Hides unused lines\r\n */\r\n Label.prototype.hideUnused = function (index) {\r\n this.initLineCache();\r\n var lines = this.getCache(\"lineInfo\");\r\n if (lines.length >= index) {\r\n for (var i = index; i < lines.length; i++) {\r\n var line = lines[i];\r\n if (line && line.element) {\r\n line.element.attr({ \"display\": \"none\" });\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(Label.prototype, \"text\", {\r\n /**\r\n * @return SVG text\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"text\");\r\n },\r\n /**\r\n * An SVG text.\r\n *\r\n * Please note that setting `html` will override this setting if browser\r\n * supports `foreignObject` in SGV, such as most modern browsers excluding\r\n * IEs.\r\n *\r\n * @param value SVG Text\r\n */\r\n set: function (value) {\r\n //this.setPropertyValue(\"html\", undefined);\r\n this.setPropertyValue(\"text\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"path\", {\r\n /**\r\n * @return Path\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"path\");\r\n },\r\n /**\r\n * An SVG path string to position text along. If set, the text will follow\r\n * the curvature of the path.\r\n *\r\n * Location along the path can be set using `locationOnPath`.\r\n *\r\n * IMPORTANT: Only SVG text can be put on path. If you are using HTML text\r\n * this setting will be ignored.\r\n *\r\n * @since 4.1.2\r\n * @param value Path\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"path\", value, true)) {\r\n if (this.pathElement) {\r\n this.pathElement.dispose();\r\n }\r\n if (this.textPathElement) {\r\n this.textPathElement.dispose();\r\n }\r\n this.pathElement = this.paper.add(\"path\");\r\n this.pathElement.attr({ \"d\": value });\r\n this.pathElement.attr({ \"id\": \"text-path-\" + this.uid });\r\n this._disposers.push(this.pathElement);\r\n this.textPathElement = this.paper.addGroup(\"textPath\");\r\n this.textPathElement.attrNS($dom.XLINK, \"xlink:href\", \"#text-path-\" + this.uid);\r\n // TODO remove after https://bugzilla.mozilla.org/show_bug.cgi?id=455986 is fixed\r\n this.textPathElement.attr({ \"path\": value });\r\n this._disposers.push(this.textPathElement);\r\n this.hardInvalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"locationOnPath\", {\r\n /**\r\n * @return Relatvie location on path\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"locationOnPath\");\r\n },\r\n /**\r\n * Relative label location on `path`. Value range is from 0 (beginning)\r\n * to 1 (end).\r\n *\r\n * Works only if you set `path` setting to an SVG path.\r\n *\r\n * @since 4.1.2\r\n * @default 0\r\n * @param value Relatvie location on path\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"locationOnPath\", value);\r\n if (this.textPathElement) {\r\n this.textPathElement.attr({ \"startOffset\": (value * 100) + \"%\" });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"baseLineRatio\", {\r\n /**\r\n * @return Base line ratio\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"baseLineRatio\");\r\n },\r\n /**\r\n * A ratio to calculate text baseline. Ralative distance from the bottom of\r\n * the label.\r\n *\r\n * @since 4.4.2\r\n * @default -0.27\r\n * @param value Base line ratio\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"baseLineRatio\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"wrap\", {\r\n /**\r\n * @return Auto-wrap enabled or not\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wrap\");\r\n },\r\n /**\r\n * Enables or disables autowrapping of text.\r\n *\r\n * @param value Auto-wrapping enabled\r\n */\r\n set: function (value) {\r\n this.resetBBox();\r\n this.setPropertyValue(\"wrap\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"truncate\", {\r\n /**\r\n * @return Truncate text?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"truncate\");\r\n },\r\n /**\r\n * Indicates if text lines need to be truncated if they do not fit, using\r\n * configurable `ellipsis` string.\r\n *\r\n * `truncate` overrides `wrap` if both are set to `true`.\r\n *\r\n * NOTE: For HTML text, this setting **won't** trigger a parser and actual\r\n * line truncation with ellipsis. It will just hide everything that goes\r\n * outside the label.\r\n *\r\n * @param value trincate text?\r\n */\r\n set: function (value) {\r\n this.resetBBox();\r\n this.setPropertyValue(\"truncate\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"fullWords\", {\r\n /**\r\n * @return Truncate on full words?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fullWords\");\r\n },\r\n /**\r\n * If `truncate` is enabled, should Label try to break only on full words\r\n * (`true`), or whenever needed, including middle of the word. (`false`)\r\n *\r\n * @default true\r\n * @param value Truncate on full words?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fullWords\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"ellipsis\", {\r\n /**\r\n * @return Ellipsis string\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"ellipsis\");\r\n },\r\n /**\r\n * Ellipsis character to use if `truncate` is enabled.\r\n *\r\n * @param value Ellipsis string\r\n * @default \"...\"\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"ellipsis\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"selectable\", {\r\n /**\r\n * @return Text selectable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"selectable\");\r\n },\r\n /**\r\n * Forces the text to be selectable. This setting will be ignored if the\r\n * object has some kind of interaction attached to it, such as it is\r\n * `draggable`, `swipeable`, `resizable`.\r\n *\r\n * @param value Text selectable?\r\n * @default false\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"selectable\", value, true);\r\n this.setStyles();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"textAlign\", {\r\n /**\r\n * @return Alignment\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"textAlign\");\r\n },\r\n /**\r\n * Horizontal text alignment.\r\n *\r\n * Available choices:\r\n * * \"start\"\r\n * * \"middle\"\r\n * * \"end\"\r\n *\r\n * @param value Alignment\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"textAlign\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"textValign\", {\r\n /**\r\n * @ignore Exclude from docs (not used)\r\n * @return Alignment\r\n * @deprecated\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"textValign\");\r\n },\r\n /**\r\n * Vertical text alignment.\r\n *\r\n * @ignore Exclude from docs (not used)\r\n * @param value Alignment\r\n * @deprecated\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"textValign\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"html\", {\r\n /**\r\n * @return HTML content\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"html\");\r\n },\r\n /**\r\n * Raw HTML to be used as text.\r\n *\r\n * NOTE: HTML text is subject to browser support. It relies on browsers\r\n * supporting SVG `foreignObject` nodes. Some browsers (read IEs) do not\r\n * support it. On those browsers, the text will fall back to basic SVG text,\r\n * striping out all HTML markup and styling that goes with it.\r\n *\r\n * For more information about `foreignObject` and its browser compatibility\r\n * refer to [this page](https://developer.mozilla.org/en/docs/Web/SVG/Element/foreignObject#Browser_compatibility).\r\n *\r\n * @param value HTML text\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"html\", value, true);\r\n if (!$type.hasValue(value)) {\r\n var group = this.element;\r\n group.removeChildrenByTag(\"foreignObject\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Label.prototype.setFill = function (value) {\r\n _super.prototype.setFill.call(this, value);\r\n if (this.html) {\r\n var group = this.element;\r\n var divs = group.node.getElementsByTagName(\"div\");\r\n for (var i = 0; i < divs.length; i++) {\r\n var div = divs[i];\r\n if ($type.hasValue(this.fill)) {\r\n div.style.color = this.fill.toString();\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(Label.prototype, \"hideOversized\", {\r\n /**\r\n * @return Hide if text does not fit?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hideOversized\");\r\n },\r\n /**\r\n * Indicates whether the whole text should be hidden if it does not fit into\r\n * its allotted space.\r\n *\r\n * @param value Hide if text does not fit?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"hideOversized\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"ignoreFormatting\", {\r\n /**\r\n * @return Ignore formatting?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"ignoreFormatting\");\r\n },\r\n /**\r\n * If set to `true` square-bracket formatting blocks will be treated as\r\n * regular text.\r\n *\r\n * @default false\r\n * @param value Ignore formatting?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"ignoreFormatting\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Override `mesaureElement` so it does not get measure again, because\r\n * internal `_bbox` is being updated by measuring routines in Text itself.\r\n */\r\n Label.prototype.measureElement = function () { };\r\n /**\r\n * Returns information about a line element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param index Line index\r\n * @return Line info object\r\n */\r\n Label.prototype.getLineInfo = function (index) {\r\n this.initLineCache();\r\n var lines = this.getCache(\"lineInfo\");\r\n return lines.length > index ? lines[index] : undefined;\r\n };\r\n /**\r\n * Adds a line to line info cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @param line Line info object\r\n * @param index Insert at specified index\r\n */\r\n Label.prototype.addLineInfo = function (line, index) {\r\n this.initLineCache();\r\n this.getCache(\"lineInfo\")[index] = line;\r\n };\r\n /**\r\n * Checks if line cache is initialized and initializes it.\r\n */\r\n Label.prototype.initLineCache = function () {\r\n if (!$type.hasValue(this.getCache(\"lineInfo\"))) {\r\n this.setCache(\"lineInfo\", [], 0);\r\n }\r\n };\r\n /**\r\n * Sets a [[DataItem]] to use for populating dynamic sections of the text.\r\n *\r\n * Check the description for [[Text]] class, for data binding.\r\n *\r\n * @param dataItem Data item\r\n */\r\n Label.prototype.setDataItem = function (dataItem) {\r\n if (this._sourceDataItemEvents) {\r\n this._sourceDataItemEvents.dispose();\r\n }\r\n if (dataItem) {\r\n this._sourceDataItemEvents = new MultiDisposer([\r\n dataItem.events.on(\"valuechanged\", this.invalidate, this, false),\r\n dataItem.events.on(\"workingvaluechanged\", this.invalidate, this, false),\r\n dataItem.events.on(\"calculatedvaluechanged\", this.invalidate, this, false),\r\n dataItem.events.on(\"propertychanged\", this.invalidate, this, false)\r\n ]);\r\n }\r\n _super.prototype.setDataItem.call(this, dataItem);\r\n };\r\n Object.defineProperty(Label.prototype, \"availableWidth\", {\r\n /**\r\n * Returns available horizontal space.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Available width (px)\r\n */\r\n get: function () {\r\n return $type.hasValue(this.maxWidth) ? this.maxWidth : this.pixelWidth;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"availableHeight\", {\r\n /**\r\n * Returns available vertical space.\r\n *\r\n * @return Available height (px)\r\n */\r\n get: function () {\r\n return $type.hasValue(this.maxHeight) ? this.maxHeight : this.pixelHeight;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n // temp, replacing textFormatter method\r\n Label.prototype.getSvgElement = function (text, style, parent) {\r\n var element = this.paper.add(\"tspan\");\r\n element.textContent = text;\r\n if (style) {\r\n if (options.nonce && parent) {\r\n //element.node.setAttribute(\"nonce\", \"test123\");\r\n var classid = \"amcharts_element_style_\" + btoa(style).replace(/[^\\w]*/g, \"\");\r\n element.node.setAttribute(\"class\", classid);\r\n var defs = document.createElementNS($dom.SVGNS, \"defs\");\r\n parent.node.appendChild(defs);\r\n var e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n e.innerHTML = \".\" + classid + \" { \" + style + \"}\";\r\n e.setAttribute(\"nonce\", options.nonce);\r\n defs.appendChild(e);\r\n }\r\n else {\r\n element.node.setAttribute(\"style\", style);\r\n }\r\n }\r\n if (parent) {\r\n parent.add(element);\r\n }\r\n return element;\r\n };\r\n /**\r\n * Invalidates the whole element, including layout AND all its child\r\n * elements.\r\n */\r\n Label.prototype.deepInvalidate = function () {\r\n _super.prototype.deepInvalidate.call(this);\r\n this.hardInvalidate();\r\n };\r\n Object.defineProperty(Label.prototype, \"readerTitle\", {\r\n /**\r\n * @return Title\r\n */\r\n get: function () {\r\n var title = this.getPropertyValue(\"readerTitle\");\r\n if (!title) {\r\n title = this.populateString($utils.plainText($utils.isNotEmpty(this.html)\r\n ? this.html\r\n : this.text));\r\n }\r\n else if (this.dataItem) {\r\n title = this.populateString(title);\r\n }\r\n return title;\r\n },\r\n /**\r\n * Screen reader title of the element.\r\n *\r\n * @param value Title\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerTitle\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Label;\r\n}(Container));\r\nexport { Label };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Label\"] = Label;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Hide labels added directly to chart, like titles if chart is short.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Label && target.parent && target.parent.isBaseSprite) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n","/**\r\n * Line drawing functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { color } from \"../utils/Color\";\r\nimport { LinearGradient } from \"../rendering/fills/LinearGradient\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a line.\r\n *\r\n * @see {@link ILineEvents} for a list of available events\r\n * @see {@link ILineAdapters} for a list of available Adapters\r\n */\r\nvar Line = /** @class */ (function (_super) {\r\n __extends(Line, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Line() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Line\";\r\n _this.element = _this.paper.add(\"line\");\r\n _this.fill = color(); //\"none\";\r\n _this.x1 = 0;\r\n _this.y1 = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the line.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Line.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.x1 == this.x2 || this.y1 == this.y2) {\r\n this.pixelPerfect = true;\r\n }\r\n else {\r\n this.pixelPerfect = false;\r\n }\r\n this.x1 = this.x1;\r\n this.x2 = this.x2;\r\n this.y1 = this.y1;\r\n this.y2 = this.y2;\r\n };\r\n Object.defineProperty(Line.prototype, \"x1\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"x1\");\r\n },\r\n /**\r\n * X coordinate of first end.\r\n *\r\n * @param value X\r\n */\r\n set: function (value) {\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n var delta = 0;\r\n if (this.pixelPerfect && this.stroke instanceof LinearGradient) {\r\n delta = 0.00001;\r\n }\r\n this.setPropertyValue(\"x1\", value, true);\r\n this.element.attr({ \"x1\": value + delta });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Line.prototype, \"x2\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n var value = this.getPropertyValue(\"x2\");\r\n if (!$type.isNumber(value)) {\r\n value = this.pixelWidth;\r\n }\r\n return value;\r\n },\r\n /**\r\n * X coordinate of second end.\r\n *\r\n * @param value X\r\n */\r\n set: function (value) {\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n this.setPropertyValue(\"x2\", value, true);\r\n this.element.attr({ \"x2\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Line.prototype, \"y1\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"y1\");\r\n },\r\n /**\r\n * Y coordinate of first end.\r\n *\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n var delta = 0;\r\n if (this.pixelPerfect && this.stroke instanceof LinearGradient) {\r\n delta = 0.00001;\r\n }\r\n this.setPropertyValue(\"y1\", value, true);\r\n this.element.attr({ \"y1\": value + delta });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Line.prototype, \"y2\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n var value = this.getPropertyValue(\"y2\");\r\n if (!$type.isNumber(value)) {\r\n value = this.pixelHeight;\r\n }\r\n return value;\r\n },\r\n /**\r\n * Y coordinate of second end.\r\n *\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n this.setPropertyValue(\"y2\", value, true);\r\n this.element.attr({ \"y2\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\r\n Line.prototype.positionToPoint = function (position) {\r\n var point1 = { x: this.x1, y: this.y1 };\r\n var point2 = { x: this.x2, y: this.y2 };\r\n var point = $math.getMidPoint(point1, point2, position);\r\n var angle = $math.getAngle(point1, point2);\r\n return { x: point.x, y: point.y, angle: angle };\r\n };\r\n return Line;\r\n}(Sprite));\r\nexport { Line };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Line\"] = Line;\r\n","/**\r\n * Modal class is used to display information over chart area.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Popup } from \"./Popup\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\n/**\r\n * Shows an HTML modal which covers window or a chart area.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/popups-and-modals/} For examples and docs on Popups and Modals.\r\n */\r\nvar Modal = /** @class */ (function (_super) {\r\n __extends(Modal, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Modal() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n _this.className = \"Modal\";\r\n _this.showCurtain = true;\r\n _this.draggable = false;\r\n return _this;\r\n }\r\n return Modal;\r\n}(Popup));\r\nexport { Modal };\r\n","/**\r\n * Pointed rectangle module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PointedShape } from \"./PointedShape\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a rectangle with a pointer.\r\n *\r\n * @see {@link IPointedRectangleEvents} for a list of available events\r\n * @see {@link IPointedRectangleAdapters} for a list of available Adapters\r\n */\r\nvar PointedRectangle = /** @class */ (function (_super) {\r\n __extends(PointedRectangle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PointedRectangle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PointedRectangle\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.cornerRadius = 6;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PointedRectangle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var cr = this.cornerRadius;\r\n var w = this.innerWidth;\r\n var h = this.innerHeight;\r\n if (w > 0 && h > 0) {\r\n var x = this.pointerX;\r\n var y = this.pointerY;\r\n var bwh = this.pointerBaseWidth / 2;\r\n var maxcr = $math.min(w / 2, h / 2);\r\n var crtl = $math.fitToRange(cr, 0, maxcr);\r\n var crtr = $math.fitToRange(cr, 0, maxcr);\r\n var crbr = $math.fitToRange(cr, 0, maxcr);\r\n var crbl = $math.fitToRange(cr, 0, maxcr);\r\n // corner coordinates\r\n // top left\r\n var xtl = 0;\r\n var ytl = 0;\r\n // top right\r\n var xtr = w;\r\n var ytr = 0;\r\n // bottom right\r\n var xbr = w;\r\n var ybr = h;\r\n // bottom left\r\n var xbl = 0;\r\n var ybl = h;\r\n var lineT = void 0;\r\n var lineR = void 0;\r\n var lineB = void 0;\r\n var lineL = void 0;\r\n // find stem base side: http://$math.stackexchange.com/questions/274712/calculate-on-which-side-of-straign-line-is-dot-located\r\n // d=(x−x1)(y2−y1)−(y−y1)(x2−x1)\r\n var d1 = (x - xtl) * (ybr - ytl) - (y - ytl) * (xbr - xtl);\r\n var d2 = (x - xbl) * (ytr - ybl) - (y - ybl) * (xtr - xbl);\r\n // top\r\n if (d1 > 0 && d2 > 0) {\r\n var stemX = $math.fitToRange(x, crtl + bwh, w - bwh - crtr);\r\n y = $math.fitToRange(y, -Infinity, 0);\r\n lineT = \"M\" + crtl + \",0 L\" + (stemX - bwh) + \",0 L\" + x + \",\" + y + \" L\" + (stemX + bwh) + \",0 L\" + (w - crtr) + \",0\";\r\n }\r\n else {\r\n lineT = \"M\" + crtl + \",0 L\" + (w - crtr) + \",0\";\r\n }\r\n // bottom\r\n if (d1 < 0 && d2 < 0) {\r\n var stemX = $math.fitToRange(x, crbl + bwh, w - bwh - crbr);\r\n y = $math.fitToRange(y, h, Infinity);\r\n lineB = \" L\" + (w - crbr) + \",\" + h + \" L\" + (stemX + bwh) + \",\" + h + \" L\" + x + \",\" + y + \" L\" + (stemX - bwh) + \",\" + h + \" L\" + crbl + \",\" + h;\r\n }\r\n else {\r\n lineB = \" L\" + crbl + \",\" + h;\r\n }\r\n // left\r\n if (d1 < 0 && d2 > 0) {\r\n var stemY = $math.fitToRange(y, crtl + bwh, h - crbl - bwh);\r\n x = $math.fitToRange(x, -Infinity, 0);\r\n lineL = \" L0,\" + (h - crbl) + \" L0,\" + (stemY + bwh) + \" L\" + x + \",\" + y + \" L0,\" + (stemY - bwh) + \" L0,\" + crtl;\r\n }\r\n else {\r\n lineL = \" L0,\" + crtl;\r\n }\r\n // right\r\n if (d1 > 0 && d2 < 0) {\r\n var stemY = $math.fitToRange(y, crtr + bwh, h - bwh - crbr);\r\n x = $math.fitToRange(x, w, Infinity);\r\n lineR = \" L\" + w + \",\" + crtr + \" L\" + w + \",\" + (stemY - bwh) + \" L\" + x + \",\" + y + \" L\" + w + \",\" + (stemY + bwh) + \" L\" + w + \",\" + (h - crbr);\r\n }\r\n else {\r\n lineR = \" L\" + w + \",\" + (h - crbr);\r\n }\r\n var arcTR = \" a\" + crtr + \",\" + crtr + \" 0 0 1 \" + crtr + \",\" + crtr;\r\n var arcBR = \" a\" + crbr + \",\" + crbr + \" 0 0 1 -\" + crbr + \",\" + crbr;\r\n var arcBL = \" a\" + crbl + \",\" + crbl + \" 0 0 1 -\" + crbl + \",-\" + crbl;\r\n var arcTL = \" a\" + crtl + \",\" + crtl + \" 0 0 1 \" + crtl + \",-\" + crtl;\r\n this.path = lineT + arcTR + lineR + arcBR + lineB + arcBL + lineL + arcTL;\r\n }\r\n };\r\n Object.defineProperty(PointedRectangle.prototype, \"cornerRadius\", {\r\n /**\r\n * @return Corner radius (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadius\");\r\n },\r\n /**\r\n * Radius of rectangle's border in pixels.\r\n *\r\n * @default 0\r\n * @param value Corner radius (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cornerRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PointedRectangle;\r\n}(PointedShape));\r\nexport { PointedRectangle };\r\n","/**\r\n * Pointed shape module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a shape with a pointer.\r\n *\r\n * @see {@link IPointedShapeEvents} for a list of available events\r\n * @see {@link IPointedShapeAdapters} for a list of available Adapters\r\n */\r\nvar PointedShape = /** @class */ (function (_super) {\r\n __extends(PointedShape, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PointedShape() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PointedShape\";\r\n _this.pointerBaseWidth = 15;\r\n _this.pointerLength = 10;\r\n _this.pointerY = 0;\r\n _this.pointerX = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PointedShape.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (!$type.isNumber(this.pointerX)) {\r\n this.pointerX = this.pixelWidth / 2;\r\n }\r\n if (!$type.isNumber(this.pointerY)) {\r\n this.pointerY = this.pixelHeight + 10;\r\n }\r\n };\r\n Object.defineProperty(PointedShape.prototype, \"pointerBaseWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pointerBaseWidth\");\r\n },\r\n /**\r\n * A width of the pinter's (stem's) thick end (base) in pixels.\r\n *\r\n * @default 15\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"pointerBaseWidth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PointedShape.prototype, \"pointerLength\", {\r\n /**\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pointerLength\");\r\n },\r\n /**\r\n * A length of the pinter (stem) in pixels.\r\n *\r\n * @default 10\r\n * @param value Length (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"pointerLength\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PointedShape.prototype, \"pointerX\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pointerX\");\r\n },\r\n /**\r\n * X coordinate the shape is pointing to.\r\n *\r\n * @param value X\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"pointerX\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PointedShape.prototype, \"pointerY\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pointerY\");\r\n },\r\n /**\r\n * Y coordinate the shape is pointing to.\r\n *\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"pointerY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PointedShape;\r\n}(Sprite));\r\nexport { PointedShape };\r\n","/**\r\n * Polyline module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { color } from \"../utils/Color\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a polyline.\r\n *\r\n * @see {@link IPolylineEvents} for a list of available events\r\n * @see {@link IPolylineAdapters} for a list of available Adapters\r\n */\r\nvar Polyline = /** @class */ (function (_super) {\r\n __extends(Polyline, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Polyline() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * [_distance description]\r\n *\r\n * @todo Description\r\n */\r\n _this._distance = 0;\r\n _this.className = \"Polyline\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.shapeRendering = \"auto\";\r\n _this.fill = color();\r\n _this.strokeOpacity = 1;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creats and adds an SVG path for the arc.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Polyline.prototype.makePath = function () {\r\n this._distance = 0;\r\n var segments = this.segments;\r\n if (segments && segments.length > 0) {\r\n var path = \"\";\r\n for (var i = 0, len = segments.length; i < len; i++) {\r\n var points = segments[i];\r\n if (points.length > 0) {\r\n path += $path.moveTo(points[0]);\r\n for (var p = 1; p < points.length; p++) {\r\n var point = points[p];\r\n path += $path.lineTo(point);\r\n this._distance += $math.getDistance(points[p - 1], point);\r\n }\r\n }\r\n }\r\n this.path = path;\r\n }\r\n this._realSegments = segments;\r\n };\r\n Object.defineProperty(Polyline.prototype, \"segments\", {\r\n /**\r\n * @return Segments\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"segments\");\r\n },\r\n /**\r\n * A list of segment coordinates for the multi-part line.\r\n *\r\n * @todo Example\r\n * @param segments Segments\r\n */\r\n set: function (segments) {\r\n this.setPropertyValue(\"segments\", segments);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polyline.prototype, \"distance\", {\r\n /**\r\n * [distance description]\r\n *\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._distance;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\r\n Polyline.prototype.positionToPoint = function (position) {\r\n var deltaAngle = 0;\r\n if (position < 0) {\r\n position = Math.abs(position);\r\n deltaAngle = 180;\r\n }\r\n var segments = this._realSegments;\r\n if (segments) {\r\n var totalDistance = this.distance;\r\n var currentDistance = 0;\r\n var distanceAB = void 0;\r\n var positionA = 0;\r\n var positionB = 0;\r\n var pointA = void 0;\r\n var pointB = void 0;\r\n for (var s = 0; s < segments.length; s++) {\r\n var points = segments[s];\r\n if (points.length > 1) {\r\n for (var p = 1; p < points.length; p++) {\r\n pointA = points[p - 1];\r\n pointB = points[p];\r\n positionA = currentDistance / totalDistance;\r\n distanceAB = $math.getDistance(pointA, pointB);\r\n currentDistance += distanceAB;\r\n positionB = currentDistance / totalDistance;\r\n if (positionA <= position && positionB > position) {\r\n s = segments.length;\r\n break;\r\n }\r\n }\r\n }\r\n else if (points.length == 1) {\r\n pointA = points[0];\r\n pointB = points[0];\r\n positionA = 0;\r\n positionB = 1;\r\n }\r\n }\r\n if (pointA && pointB) {\r\n var positionAB = (position - positionA) / (positionB - positionA);\r\n var midPoint = $math.getMidPoint(pointA, pointB, positionAB);\r\n return { x: midPoint.x, y: midPoint.y, angle: deltaAngle + $math.getAngle(pointA, pointB) };\r\n }\r\n }\r\n return { x: 0, y: 0, angle: 0 };\r\n };\r\n Object.defineProperty(Polyline.prototype, \"realSegments\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._realSegments;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Polyline;\r\n}(Sprite));\r\nexport { Polyline };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polyline\"] = Polyline;\r\n","/**\r\n * Polyspline (smoothed line) module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Polyline } from \"./Polyline\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a polysline. (smoothed multi-sigment line)\r\n *\r\n * @see {@link IPolysplineEvents} for a list of available events\r\n * @see {@link IPolysplineAdapters} for a list of available Adapters\r\n */\r\nvar Polyspline = /** @class */ (function (_super) {\r\n __extends(Polyspline, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Polyspline() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Polyspline\";\r\n _this.tensionX = 0.5;\r\n _this.tensionY = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creats and adds an SVG path for the arc.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Polyspline.prototype.makePath = function () {\r\n this._distance = 0;\r\n var segments = this.segments;\r\n var tensionX = this.tensionX;\r\n var tensionY = this.tensionY;\r\n this.allPoints = [];\r\n if (segments && segments.length > 0) {\r\n var path = \"\";\r\n this._realSegments = [];\r\n for (var i = 0, len = segments.length; i < len; i++) {\r\n var points = segments[i];\r\n var realPoints = [];\r\n this._realSegments.push(realPoints);\r\n if (points.length > 0) {\r\n var first = points[0];\r\n var last = points[points.length - 1];\r\n var closed_1 = false;\r\n if ($math.round(first.x, 3) == $math.round(last.x) && $math.round(first.y) == $math.round(last.y)) {\r\n closed_1 = true;\r\n }\r\n path += $path.moveTo(points[0]);\r\n for (var p = 0; p < points.length - 1; p++) {\r\n var p0 = points[p - 1];\r\n var p1 = points[p];\r\n var p2 = points[p + 1];\r\n var p3 = points[p + 2];\r\n if (p === 0) {\r\n p0 = points[p];\r\n }\r\n else if (p == points.length - 2) {\r\n p3 = points[p + 1];\r\n }\r\n if (!p3) {\r\n p3 = p2;\r\n }\r\n if (p === 0) {\r\n if (closed_1) {\r\n p0 = points[points.length - 2];\r\n }\r\n else {\r\n p0 = points[i];\r\n }\r\n }\r\n else if (p == points.length - 2) {\r\n if (closed_1) {\r\n p3 = points[1];\r\n }\r\n else {\r\n p3 = points[p + 1];\r\n }\r\n }\r\n var controlPointA = $math.getCubicControlPointA(p0, p1, p2, p3, tensionX, tensionY);\r\n var controlPointB = $math.getCubicControlPointB(p0, p1, p2, p3, tensionX, tensionY);\r\n path += $path.cubicCurveTo(p2, controlPointA, controlPointB);\r\n // now split to small segments so that we could have positionToPoint later\r\n var stepCount = Math.ceil($math.getCubicCurveDistance(p1, p2, controlPointA, controlPointB, 20)) * 1.2;\r\n var prevPoint = p1;\r\n if (stepCount > 0) {\r\n // not good for curved charts\r\n //this.allPoints[0] = { x: points[0].x, y: points[0].y, angle: $math.getAngle(points[0], points[1]) };\r\n //realPoints.push(this.allPoints[0]);\r\n for (var s = 0; s <= stepCount; s++) {\r\n var point = $math.getPointOnCubicCurve(p1, p2, controlPointA, controlPointB, s / stepCount);\r\n if (point.x == prevPoint.x && point.y == prevPoint.y) {\r\n continue;\r\n }\r\n realPoints.push(point);\r\n var angle = $math.round($math.getAngle(prevPoint, point), 5);\r\n //this.allPoints.push({ x: point.x, y: point.y, angle: angle });\r\n this._distance += $math.getDistance(prevPoint, point);\r\n this.allPoints[Math.floor(this._distance)] = { x: point.x, y: point.y, angle: angle };\r\n prevPoint = point;\r\n }\r\n }\r\n else {\r\n realPoints.push(p0);\r\n }\r\n }\r\n }\r\n var allPoints = this.allPoints;\r\n if (allPoints.length > 1) {\r\n for (var i_1 = 0; i_1 < allPoints.length; i_1++) {\r\n if (!allPoints[i_1]) {\r\n if (i_1 > 1) {\r\n allPoints[i_1] = allPoints[i_1 - 1];\r\n }\r\n else {\r\n for (var k = 1; k < allPoints.length; k++) {\r\n if (allPoints[k]) {\r\n allPoints[i_1] = allPoints[k];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.path = path;\r\n }\r\n };\r\n /**\r\n * Returns an index of the point that is closest to specified coordinates.\r\n *\r\n * @param point Reference point\r\n * @return Index\r\n */\r\n Polyspline.prototype.getClosestPointIndex = function (point) {\r\n var points = this.allPoints;\r\n var index;\r\n var closest = Infinity;\r\n if (points.length > 1) {\r\n for (var p = 1; p < points.length; p++) {\r\n var distance = $math.getDistance(point, points[p]);\r\n if (distance < closest) {\r\n index = p;\r\n closest = distance;\r\n }\r\n }\r\n }\r\n return index;\r\n };\r\n Object.defineProperty(Polyspline.prototype, \"tensionX\", {\r\n /**\r\n * @return Tension\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tensionX\");\r\n },\r\n /**\r\n * Horizontal tension for the spline.\r\n *\r\n * Used by the line smoothing algorithm.\r\n *\r\n * @default 0.5\r\n * @param value Tension\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tensionX\", value);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polyspline.prototype, \"tensionY\", {\r\n /**\r\n * @return Tension\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tensionY\");\r\n },\r\n /**\r\n * Vertical tension for the spline.\r\n *\r\n * Used by the line smoothing algorithm.\r\n *\r\n * @default 0.5\r\n * @param value Tensions\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tensionY\", value, true);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\r\n Polyspline.prototype.positionToPoint = function (position, extend) {\r\n var deltaAngle = 0;\r\n var allPoints = this.allPoints;\r\n var len = allPoints.length;\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n if (len > 1) {\r\n if (extend && len > 3) {\r\n if (position < 0) {\r\n if (position < -0.01) {\r\n position = -0.01;\r\n }\r\n var f0 = allPoints[0];\r\n var f1 = allPoints[1];\r\n var x = f0.x - (f0.x - f1.x) * len * position;\r\n var y = f0.y - (f0.y - f1.y) * len * position;\r\n return { x: x, y: y, angle: $math.getAngle(f0, f1) };\r\n }\r\n else if (position > 1) {\r\n if (position > 1.01) {\r\n position = 1.01;\r\n }\r\n var f0 = allPoints[allPoints.length - 2];\r\n var f1 = allPoints[allPoints.length - 3];\r\n var x = f0.x + (f0.x - f1.x) * len * (position - 1);\r\n var y = f0.y + (f0.y - f1.y) * len * (position - 1);\r\n return { x: x, y: y, angle: $math.getAngle(f0, { x: x, y: y }) };\r\n }\r\n else if (position == 1) {\r\n var point_1 = allPoints[allPoints.length - 1];\r\n return { x: point_1.x, y: point_1.y, angle: point_1.angle };\r\n }\r\n }\r\n else {\r\n if (position < 0) {\r\n position = Math.abs(position);\r\n deltaAngle = 180;\r\n }\r\n if (position >= 1) {\r\n position = 0.9999999999999;\r\n }\r\n }\r\n var point = allPoints[Math.floor(position * len)];\r\n return { x: point.x, y: point.y, angle: point.angle + deltaAngle };\r\n }\r\n else if (len == 1) {\r\n var point = allPoints[0];\r\n return { x: point.x, y: point.y, angle: point.angle };\r\n }\r\n else {\r\n return { x: 0, y: 0, angle: 0 };\r\n }\r\n };\r\n return Polyspline;\r\n}(Polyline));\r\nexport { Polyspline };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polyspline\"] = Polyspline;\r\n","import { StyleRule } from \"../utils/DOM\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { MultiDisposer, CounterDisposer } from \"../utils/Disposer\";\r\nimport { InterfaceColorSet } from \"../utils/InterfaceColorSet\";\r\nvar rules = new Dictionary();\r\n/**\r\n * Default CSS for Popup.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prefix Prefix for CSS classes\r\n * @return Disposer for the CSS definition\r\n */\r\nexport default function (element, prefix) {\r\n if (!prefix) {\r\n prefix = \"ampopup\";\r\n }\r\n var cs = new InterfaceColorSet();\r\n var fg = cs.getFor(\"text\");\r\n var bg = cs.getFor(\"background\");\r\n bg.alpha = 0.8;\r\n var abg = cs.getFor(\"alternativeBackground\");\r\n abg.alpha = 0.05;\r\n var counter = rules.insertKeyIfEmpty(prefix, function () {\r\n var disposer = new MultiDisposer([\r\n new StyleRule(element, \".\" + prefix, {\r\n //\"width\": \"100%\",\r\n //\"height\": \"100%\",\r\n \"overflow\": \"visible\",\r\n \"position\": \"absolute\",\r\n \"top\": \"0\",\r\n \"left\": \"0\",\r\n \"z-index\": \"2000\"\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-curtain\", {\r\n \"width\": \"100%\",\r\n \"height\": \"100%\",\r\n \"position\": \"absolute\",\r\n \"top\": \"0\",\r\n \"left\": \"0\",\r\n \"z-index\": \"2001\",\r\n \"background-color\": bg.hex,\r\n \"opacity\": \"0.5\"\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-header\", {\r\n \"display\": \"block\",\r\n \"width\": \"100%\",\r\n \"min-height\": \"1.8em\",\r\n \"background\": abg.rgba\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-title\", {\r\n \"font-weight\": \"bold\",\r\n \"font-size\": \"110%\",\r\n \"padding\": \"0.5em 1.2em 0.5em 1em\"\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-content\", {\r\n /*\"width\": \"100%\",\r\n \"height\": \"100%\",*/\r\n // \"padding\": \"2em 1em 1em 1em\",\r\n \"background\": bg.hex,\r\n \"background-color\": bg.rgba,\r\n \"color\": fg.hex,\r\n \"display\": \"inline-block\",\r\n \"position\": \"absolute\",\r\n \"top\": \"0\",\r\n \"left\": \"0\",\r\n \"max-width\": \"90%\",\r\n \"max-height\": \"90%\",\r\n \"overflow\": \"auto\",\r\n \"z-index\": \"2002\"\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-inside\", {\r\n \"padding\": \"1em\"\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-close\", {\r\n \"display\": \"block\",\r\n \"position\": \"absolute\",\r\n \"top\": \"0.3em\",\r\n \"right\": \"0.3em\",\r\n \"background-color\": \"rgb(100, 100, 100)\",\r\n \"background\": \"rgba(100, 100, 100, 0.1) url(data:image/svg+xml;charset=utf-8;base64,PHN2ZyBoZWlnaHQ9IjUxMiIgdmVyc2lvbj0iMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQ0NS4yIDEwOS4ybC00Mi40LTQyLjRMMjU2IDIxMy42IDEwOS4yIDY2LjhsLTQyLjQgNDIuNEwyMTMuNiAyNTYgNjYuOCA0MDIuOGw0Mi40IDQyLjRMMjU2IDI5OC40bDE0Ni44IDE0Ni44IDQyLjQtNDIuNEwyOTguNCAyNTYiLz48L3N2Zz4=) no-repeat center\",\r\n \"background-size\": \"80%\",\r\n \"width\": \"1.2em\",\r\n \"height\": \"1.2em\",\r\n \"cursor\": \"pointer\"\r\n }),\r\n ]);\r\n return new CounterDisposer(function () {\r\n rules.removeKey(prefix);\r\n disposer.dispose();\r\n });\r\n });\r\n return counter.increment();\r\n}\r\n","/**\r\n * Popup class is used to display information over chart area.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport popupCSS from \"./PopupCSS\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { getInteraction } from \"../interaction/Interaction\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport { MultiDisposer } from \"../utils/Disposer\";\r\nimport { getShadowRoot } from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $object from \"../utils/Object\";\r\n/**\r\n * Shows an HTML popup which covers window or a chart area.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/popups-and-modals/} For examples and docs on Popups and Modals.\r\n * @todo Positioning over whole window\r\n */\r\nvar Popup = /** @class */ (function (_super) {\r\n __extends(Popup, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Popup() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * Holds references to various HTML elements, Popup consists of.\r\n */\r\n _this._elements = {};\r\n /**\r\n * Holdes Interaction objects for various Popup's elements.\r\n */\r\n _this._IOs = {};\r\n /**\r\n * Contents of popup window.\r\n */\r\n _this._content = \"\";\r\n /**\r\n * Title of the popup window.\r\n */\r\n _this._title = \"\";\r\n /**\r\n * Prefix to apply to class names for popup elements.\r\n */\r\n _this._classPrefix = \"ampopup\";\r\n /**\r\n * If set to `true` [[Popup]] will use default styles.\r\n */\r\n _this._defaultStyles = true;\r\n /**\r\n * If set to `true` [[Popup]] will dim out all chart content behind it by\r\n * showing a semi-transparent fill. (curtain)\r\n */\r\n _this._showCurtain = false;\r\n /**\r\n * Indicates whether popup can be dragged.\r\n */\r\n _this._draggable = true;\r\n /**\r\n * Horizontal position of the content window.\r\n */\r\n _this._align = \"center\";\r\n /**\r\n * Resize popup as images are being loaded.\r\n */\r\n _this._dynamicResize = true;\r\n /**\r\n * Vertical position of the content window.\r\n */\r\n _this._verticalAlign = \"middle\";\r\n /**\r\n * Shift in position of the element. (used for dragging)\r\n */\r\n _this._shift = {\r\n x: 0,\r\n y: 0\r\n };\r\n /**\r\n * Temporary shift in position of the element. (used for dragging)\r\n */\r\n _this._tempShift = {\r\n x: 0,\r\n y: 0\r\n };\r\n /**\r\n * A title for screen readers. It is very highly recommended to set that title\r\n * so that people using screen reader tools can get an immediate summary of\r\n * the information in the popup.\r\n */\r\n _this._readerTitle = \"\";\r\n /**\r\n * Is popup closable?\r\n */\r\n _this._closable = true;\r\n /**\r\n * Was CSS already loaded?\r\n */\r\n _this._cssLoaded = false;\r\n /**\r\n * If set to other than \"none\" will try to re-adjust the position of the\r\n * popop to fit within chart container or browser window.\r\n *\r\n * @ignore Feature not yet implemented\r\n * @todo Implement\r\n */\r\n _this._fitTo = \"window\";\r\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.isTemplate = false;\r\n /**\r\n * Indicates if the element was already sized and should not be measured for\r\n * size again, saving some precious resources.\r\n */\r\n _this._sized = false;\r\n _this.className = \"Popup\";\r\n return _this;\r\n }\r\n /**\r\n * Shows popup window.\r\n */\r\n Popup.prototype.open = function () {\r\n if (this.container) {\r\n if (this._elements.wrapper) {\r\n this.container.appendChild(this._elements.wrapper);\r\n }\r\n if (this._elements.curtain) {\r\n this.container.appendChild(this._elements.curtain);\r\n this.showCurtain = this.showCurtain;\r\n }\r\n this.positionElement();\r\n this.dispatchImmediately(\"opened\");\r\n }\r\n };\r\n /**\r\n * Hides popup window.\r\n */\r\n Popup.prototype.close = function () {\r\n if (this._elements.wrapper) {\r\n if (this._elements.wrapper.parentElement) {\r\n this._elements.wrapper.parentElement.removeChild(this._elements.wrapper);\r\n }\r\n }\r\n if (this._elements.curtain) {\r\n if (this._elements.curtain.parentElement) {\r\n this._elements.curtain.parentElement.removeChild(this._elements.curtain);\r\n }\r\n }\r\n this.dispatchImmediately(\"closed\");\r\n this.releasePointers();\r\n };\r\n /**\r\n * Destroy (dispose) popup.\r\n */\r\n Popup.prototype.dispose = function () {\r\n this.close();\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * Positions content element in the center of popup based on its actual size.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Popup.prototype.positionElement = function (forceResize) {\r\n var _this = this;\r\n if (forceResize === void 0) { forceResize = true; }\r\n if (!this._elements.wrapper) {\r\n return;\r\n }\r\n setTimeout(function () {\r\n if (!_this._elements.wrapper) {\r\n return;\r\n }\r\n if (forceResize || !_this._sized) {\r\n _this._elements.wrapper.style.opacity = \"0.01\";\r\n _this._elements.wrapper.style.left = \"0\";\r\n _this._elements.wrapper.style.top = \"0\";\r\n _this._elements.wrapper.style.margin = \"0 0 0 0\";\r\n _this._elements.wrapper.style.width = \"\";\r\n _this._elements.wrapper.style.height = \"\";\r\n var bbox = _this._elements.wrapper.getBoundingClientRect();\r\n _this._elements.wrapper.style.width = bbox.width + \"px\";\r\n _this._elements.wrapper.style.height = bbox.height + \"px\";\r\n _this._sized = true;\r\n }\r\n // Check for any images that are not yet loaded\r\n if (_this.dynamicResize) {\r\n var images = _this._elements.wrapper.getElementsByTagName(\"img\");\r\n for (var i = 0; i < images.length; i++) {\r\n var image = images[i];\r\n if (!image.complete) {\r\n // Resize popup once again when image is loaded\r\n image.addEventListener(\"load\", function () {\r\n _this.positionElement(true);\r\n });\r\n // Do this for one image only as it will be checked again next time\r\n // anyway\r\n break;\r\n }\r\n }\r\n }\r\n setTimeout(function () {\r\n if (!_this._elements.wrapper) {\r\n return;\r\n }\r\n var bbox;\r\n if ((forceResize || !_this._sized) && _this._bbox) {\r\n bbox = _this._bbox;\r\n }\r\n else {\r\n bbox = _this._elements.wrapper.getBoundingClientRect();\r\n _this._elements.wrapper.style.opacity = \"\";\r\n }\r\n // Set horizontal positioning\r\n switch (_this.align) {\r\n case \"left\":\r\n _this._elements.wrapper.style.left = \"0\";\r\n _this._elements.wrapper.style.right = \"auto\";\r\n _this._elements.wrapper.style.marginLeft = _this.toStyle(_this._shift.x + _this._tempShift.x);\r\n break;\r\n case \"center\":\r\n _this._elements.wrapper.style.left = \"50%\";\r\n _this._elements.wrapper.style.right = \"auto\";\r\n _this._elements.wrapper.style.marginLeft = _this.toStyle(Math.round(-bbox.width / 2) + (_this._shift.x + _this._tempShift.x));\r\n break;\r\n case \"right\":\r\n _this._elements.wrapper.style.left = \"auto\";\r\n _this._elements.wrapper.style.right = \"0\";\r\n _this._elements.wrapper.style.marginLeft = _this.toStyle(_this._shift.x + _this._tempShift.x);\r\n break;\r\n default:\r\n _this._elements.wrapper.style.left = _this.toStyle(_this.left) || \"auto\";\r\n _this._elements.wrapper.style.right = _this.toStyle(_this.right) || \"auto\";\r\n _this._elements.wrapper.style.marginLeft = _this.toStyle(_this._shift.x + _this._tempShift.x);\r\n break;\r\n }\r\n // Set vertical positioning\r\n switch (_this.verticalAlign) {\r\n case \"top\":\r\n _this._elements.wrapper.style.top = \"0\";\r\n _this._elements.wrapper.style.bottom = \"auto\";\r\n _this._elements.wrapper.style.marginTop = _this.toStyle(_this._shift.y + _this._tempShift.y);\r\n break;\r\n case \"middle\":\r\n _this._elements.wrapper.style.top = \"50%\";\r\n _this._elements.wrapper.style.bottom = \"auto\";\r\n _this._elements.wrapper.style.marginTop = _this.toStyle(Math.round(-bbox.height / 2) + (_this._shift.y + _this._tempShift.y));\r\n break;\r\n case \"bottom\":\r\n _this._elements.wrapper.style.top = \"auto\";\r\n _this._elements.wrapper.style.bottom = \"0\";\r\n _this._elements.wrapper.style.marginTop = _this.toStyle(_this._shift.y + _this._tempShift.y);\r\n break;\r\n default:\r\n _this._elements.wrapper.style.top = _this.toStyle(_this.top) || \"auto\";\r\n _this._elements.wrapper.style.bottom = _this.toStyle(_this.bottom) || \"auto\";\r\n _this._elements.wrapper.style.marginTop = _this.toStyle(_this._shift.y + _this._tempShift.y);\r\n break;\r\n }\r\n }, 1);\r\n }, 1);\r\n };\r\n Popup.prototype.setupDragging = function () {\r\n var _this = this;\r\n if (this.draggable) {\r\n if (!this._IOs.header.events.has(\"drag\")) {\r\n this._IOs.header.events.on(\"drag\", function (ev) {\r\n _this._tempShift.x = ev.shift.x;\r\n _this._tempShift.y = ev.shift.y;\r\n _this.positionElement(false);\r\n });\r\n }\r\n if (!this._IOs.header.events.has(\"dragstop\")) {\r\n this._IOs.header.events.on(\"dragstop\", function (ev) {\r\n _this._shift.x += _this._tempShift.x;\r\n _this._shift.y += _this._tempShift.y;\r\n _this._tempShift.x = 0;\r\n _this._tempShift.y = 0;\r\n _this.positionElement(false);\r\n });\r\n }\r\n }\r\n else {\r\n if (this._IOs.header) {\r\n getInteraction().unprepElement(this._IOs.header);\r\n if (this._IOs.header.events.has(\"drag\")) {\r\n this._IOs.header.events.off(\"drag\");\r\n }\r\n if (this._IOs.header.events.has(\"dragstop\")) {\r\n this._IOs.header.events.off(\"dragstop\");\r\n }\r\n }\r\n }\r\n };\r\n Popup.prototype.toStyle = function (value) {\r\n if (!$type.hasValue(value)) {\r\n return null;\r\n }\r\n else if ($type.isNumber(value)) {\r\n return \"\" + value + \"px\";\r\n }\r\n else {\r\n return value.toString();\r\n }\r\n };\r\n Object.defineProperty(Popup.prototype, \"classPrefix\", {\r\n /**\r\n * A prefix that is applied to class names of various popup elements.\r\n *\r\n * @return Class name prefix\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"classPrefix\", this._classPrefix);\r\n },\r\n /**\r\n * @param value Class name prefix\r\n */\r\n set: function (value) {\r\n this._classPrefix = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"classPrefixRaw\", {\r\n /**\r\n * Returns raw prefix (without adapters applied).\r\n *\r\n * @ignore Exclude from docs\r\n * @return Class name prefix\r\n */\r\n get: function () {\r\n return this._classPrefix;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"content\", {\r\n /**\r\n * @return Popup content\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"content\", this._content);\r\n },\r\n /**\r\n * Popup content.\r\n *\r\n * Popup content can be any valid HTML, including CSS.\r\n *\r\n * @param value Popup content\r\n */\r\n set: function (value) {\r\n if (this._content != value) {\r\n this._content = value;\r\n if (!this._elements.content) {\r\n this.createContentElement();\r\n }\r\n this._elements.content.innerHTML = value;\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Popup.prototype.getClassNames = function () {\r\n return this.adapter.apply(\"classNames\", {\r\n wrapperClass: this.classPrefix + \"\",\r\n headerClass: this.classPrefix + \"-header\",\r\n titleClass: this.classPrefix + \"-title\",\r\n contentClass: this.classPrefix + \"-content\",\r\n insideClass: this.classPrefix + \"-inside\",\r\n curtainClass: this.classPrefix + \"-curtain\",\r\n closeClass: this.classPrefix + \"-close\"\r\n });\r\n };\r\n /**\r\n * Creates content element.\r\n */\r\n Popup.prototype.createContentElement = function () {\r\n // Check if it's created already\r\n if (this._elements.wrapper) {\r\n return;\r\n }\r\n // Get class names for popup elements\r\n var classNames = this.getClassNames();\r\n // Create content element\r\n var wrapper = document.createElement(\"div\");\r\n wrapper.className = classNames.contentClass;\r\n wrapper.style.opacity = \"0.01\";\r\n // Create close button\r\n var close = document.createElement(\"a\");\r\n close.className = classNames.closeClass;\r\n // header title\r\n var header = document.createElement(\"div\");\r\n header.className = classNames.headerClass;\r\n // Content title\r\n var title = document.createElement(\"div\");\r\n title.innerHTML = this.title;\r\n title.className = classNames.titleClass;\r\n if (!this.title) {\r\n title.style.display = \"none\";\r\n }\r\n // Content div\r\n var content = document.createElement(\"div\");\r\n content.className = classNames.insideClass;\r\n content.innerHTML = this.content;\r\n // Set up events for content\r\n this._IOs.wrapper = getInteraction().getInteraction(wrapper);\r\n this._IOs.header = getInteraction().getInteraction(header);\r\n this._disposers.push(this._IOs.wrapper);\r\n // Set hover/out events\r\n this._IOs.wrapper.events.on(\"over\", this.disablePointers, this);\r\n this._IOs.wrapper.events.on(\"out\", this.releasePointers, this);\r\n // Create an InteractionObject for close\r\n this._IOs.close = getInteraction().getInteraction(close);\r\n this._disposers.push(this._IOs.close);\r\n // Hide close for now\r\n close.style.visibility = \"hidden\";\r\n // Add accessible stuff\r\n wrapper.setAttribute(\"role\", \"dialog\");\r\n // Add to wrapper\r\n header.appendChild(close);\r\n header.appendChild(title);\r\n wrapper.appendChild(header);\r\n wrapper.appendChild(content);\r\n this.container.appendChild(wrapper);\r\n // Save for later access\r\n this._elements.wrapper = wrapper;\r\n this._elements.header = header;\r\n this._elements.content = content;\r\n this._elements.title = title;\r\n this._elements.close = close;\r\n // Load CSS\r\n if (this.defaultStyles) {\r\n this.loadDefaultCSS();\r\n }\r\n // Create curtain as well\r\n this.createCurtainElement();\r\n // Apply events\r\n this.applyEvents();\r\n this.applyReaderSettings();\r\n // Draggable?\r\n this.setupDragging();\r\n };\r\n Object.defineProperty(Popup.prototype, \"title\", {\r\n /**\r\n * @return Popup title\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"title\", this._title);\r\n },\r\n /**\r\n * Popup title.\r\n *\r\n * Popup title can be any valid HTML, including CSS.\r\n *\r\n * @param value Popup title\r\n */\r\n set: function (value) {\r\n if (this._title != value) {\r\n this._title = value;\r\n if (!this._elements.content) {\r\n this.createContentElement();\r\n }\r\n this._elements.title.innerHTML = value;\r\n this.positionElement();\r\n this.applyReaderSettings();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"readerTitle\", {\r\n /**\r\n * @return Popup content\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"readerTitle\", this._readerTitle != \"\" ? this._readerTitle : this.title);\r\n },\r\n /**\r\n * A title for screen readers. It is very highly recommended to set that title\r\n * so that people using screen reader tools can get an immediate summary of\r\n * the information in the popup.\r\n *\r\n * @param value Reader title\r\n */\r\n set: function (value) {\r\n if (this._readerTitle != value) {\r\n this._readerTitle = value;\r\n this.applyReaderSettings();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"closable\", {\r\n /**\r\n * @return Closable?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"closable\", this._closable);\r\n },\r\n /**\r\n * Is popup closable?\r\n *\r\n * If it is, it can be closed in a number of ways, e.g. by hitting ESC key,\r\n * clicking curtain, or clicking the close button.\r\n *\r\n * If it is not closable, the only way to close it is via `close()` call.\r\n *\r\n * @param value Closable?\r\n */\r\n set: function (value) {\r\n if (value !== this._closable) {\r\n this._closable = value;\r\n this.applyEvents();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"fitTo\", {\r\n /**\r\n * @ignore\r\n * @todo Implement\r\n * @return Fit option\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"fitTo\", this._fitTo);\r\n },\r\n /**\r\n * If set to other than \"none\" will try to re-adjust the position of the\r\n * popop to fit within chart container or browser window.\r\n *\r\n * @ignore\r\n * @todo Implement\r\n * @default \"window\"\r\n * @param value Fit option\r\n */\r\n set: function (value) {\r\n if (value != this._fitTo) {\r\n this._fitTo = value;\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"defaultStyles\", {\r\n /**\r\n * @return Use default CSS?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"defaultStyles\", this._defaultStyles);\r\n },\r\n /**\r\n * Should popup use default CSS?\r\n *\r\n * If default CSS is disabled, an external CSS should handle the look of the\r\n * popup, since it will look quite out of place otherwise.\r\n *\r\n * @default true\r\n * @param Use default CSS?\r\n */\r\n set: function (value) {\r\n if (this._defaultStyles != value) {\r\n this._defaultStyles = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"showCurtain\", {\r\n /**\r\n * @return Show curtain?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"showCurtain\", this._showCurtain);\r\n },\r\n /**\r\n * Should popup use dim out all content behind it?\r\n *\r\n * @default false\r\n * @param Show curtain?\r\n */\r\n set: function (value) {\r\n if (this._showCurtain != value) {\r\n this._showCurtain = value;\r\n if (this._elements.curtain) {\r\n this._elements.curtain.style.display = value ? \"block\" : \"none\";\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates curtain element.\r\n */\r\n Popup.prototype.createCurtainElement = function () {\r\n // Get class names for popup elements\r\n var classNames = this.getClassNames();\r\n // Create the curtain\r\n var curtain = document.createElement(\"div\");\r\n curtain.className = classNames.curtainClass;\r\n // Append curtain to wrapper\r\n this.container.appendChild(curtain);\r\n // Create an InteractionObject for curtain because we might need to\r\n // set interactions on it\r\n this._IOs.curtain = getInteraction().getInteraction(curtain);\r\n // Add Curtain IO to disposers\r\n this._disposers.push(this._IOs.curtain);\r\n // Set events to disable underlying interactivity\r\n this._IOs.curtain.events.on(\"over\", this.disablePointers, this);\r\n this._IOs.curtain.events.on(\"out\", this.releasePointers, this);\r\n // Hide it?\r\n curtain.style.display = this.showCurtain ? \"block\" : \"none\";\r\n // Save for later\r\n this._elements.curtain = curtain;\r\n };\r\n Object.defineProperty(Popup.prototype, \"draggable\", {\r\n /**\r\n * @return Show curtain?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"draggable\", this._draggable);\r\n },\r\n /**\r\n * Can the popup be dragged with a pointer?\r\n *\r\n * @default false\r\n * @param Show curtain?\r\n */\r\n set: function (value) {\r\n if (this._draggable != value) {\r\n this._draggable = value;\r\n this.setupDragging();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"dynamicResize\", {\r\n /**\r\n * @return Resize dynamically?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"dynamicResize\", this._dynamicResize);\r\n },\r\n /**\r\n * Resize popup as images are being loaded.\r\n *\r\n * @default true\r\n * @since 4.9.17\r\n * @param Resize dynamically?\r\n */\r\n set: function (value) {\r\n if (this._dynamicResize != value) {\r\n this._dynamicResize = value;\r\n this.positionElement(true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"align\", {\r\n /**\r\n * @return Horizontal position\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"align\", this._align);\r\n },\r\n /**\r\n * Horizontal positioning of the content window.\r\n *\r\n * Available options: \"left\", \"center\" (default), \"right\", and \"none\".\r\n *\r\n * @default \"center\"\r\n * @param Horizontal position\r\n */\r\n set: function (value) {\r\n if (this._align != value) {\r\n this._align = value;\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"verticalAlign\", {\r\n /**\r\n * @return Vertical position\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"verticalAlign\", this._verticalAlign);\r\n },\r\n /**\r\n * Vertical positioning of the content window.\r\n *\r\n * Available options: \"top\", \"middle\" (default), \"bottom\", and \"none\".\r\n *\r\n * @default \"middle\"\r\n * @param Vertical position\r\n */\r\n set: function (value) {\r\n if (this._verticalAlign != value) {\r\n this._verticalAlign = value;\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"left\", {\r\n /**\r\n * @return Left\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"left\", this._left);\r\n },\r\n /**\r\n * \"left\" coordinate of a non-aligned (`align = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `align` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Left\r\n */\r\n set: function (value) {\r\n if (this.left != value) {\r\n this._left = value;\r\n this._align = \"none\";\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"right\", {\r\n /**\r\n * @return Right\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"right\", this._right);\r\n },\r\n /**\r\n * \"right\" coordinate of a non-aligned (`align = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `align` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Right\r\n */\r\n set: function (value) {\r\n if (this.right != value) {\r\n this._right = value;\r\n this._align = \"none\";\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"top\", {\r\n /**\r\n * @return Top\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"top\", this._top);\r\n },\r\n /**\r\n * \"top\" coordinate of a non-aligned (`verticalAlign = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `verticalAlign` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Top\r\n */\r\n set: function (value) {\r\n if (this.top != value) {\r\n this._top = value;\r\n this._verticalAlign = \"none\";\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"bottom\", {\r\n /**\r\n * @return Bottom\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"bottom\", this._bottom);\r\n },\r\n /**\r\n * \"bottom\" coordinate of a non-aligned (`verticalAlign = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `verticalAlign` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Bottom\r\n */\r\n set: function (value) {\r\n if (this.bottom != value) {\r\n this._bottom = value;\r\n this._verticalAlign = \"none\";\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"elements\", {\r\n /**\r\n * Returns an object with references to various elements of the Popup.\r\n *\r\n * * `wrapper`\r\n * * `title`\r\n * * `content`\r\n * * `close`\r\n * * `curtain`\r\n */\r\n get: function () {\r\n return this._elements;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Loads popup CSS.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Popup.prototype.loadDefaultCSS = function () {\r\n if (!this._cssLoaded) {\r\n this._disposers.push(popupCSS(getShadowRoot(this.container), this.classPrefix));\r\n $object.each(this._elements, function (key, el) {\r\n el.style.display = \"\";\r\n });\r\n this._cssLoaded = true;\r\n }\r\n };\r\n /**\r\n * If popup is closable, this method adds various events to popup elements.\r\n */\r\n Popup.prototype.applyEvents = function () {\r\n var _this = this;\r\n if (this._IOs.close) {\r\n if (this.closable) {\r\n this._IOs.close.element.style.visibility = \"visible\";\r\n var disposers = [\r\n getInteraction().body.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, \"esc\") && _this.closable) {\r\n _this.close();\r\n }\r\n }),\r\n this._IOs.close.events.on(\"hit\", function (ev) {\r\n _this.close();\r\n })\r\n ];\r\n disposers.push(this._IOs.curtain.events.on(\"hit\", function (ev) {\r\n if (_this.showCurtain && _this.closable) {\r\n _this.close();\r\n }\r\n }));\r\n this._disposers.push(new MultiDisposer(disposers));\r\n }\r\n else {\r\n this._IOs.close.element.style.visibility = \"hidden\";\r\n }\r\n }\r\n };\r\n /**\r\n * Disables interactivity on parent chart.\r\n */\r\n Popup.prototype.disablePointers = function () {\r\n if (this.sprite) {\r\n this._spriteInteractionsEnabled = this.sprite.interactionsEnabled;\r\n this.sprite.interactionsEnabled = false;\r\n }\r\n };\r\n /**\r\n * Releases temporarily disabled pointers on parent chart.\r\n */\r\n Popup.prototype.releasePointers = function () {\r\n if ($type.hasValue(this._spriteInteractionsEnabled)) {\r\n this.sprite.interactionsEnabled = this._spriteInteractionsEnabled;\r\n this._spriteInteractionsEnabled = undefined;\r\n }\r\n };\r\n /**\r\n * Sets screen reader related settings.\r\n */\r\n Popup.prototype.applyReaderSettings = function () {\r\n this.elements.wrapper.setAttribute(\"aria-label\", this.readerTitle);\r\n };\r\n /**\r\n * Copies all properties and related data from different element.\r\n *\r\n * @param object Source element\r\n */\r\n Popup.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.container = source.container;\r\n this.sprite = source.sprite;\r\n this.classPrefix = source.classPrefixRaw;\r\n this.content = source.content;\r\n this.title = source.title;\r\n this.readerTitle = source.readerTitle;\r\n this.defaultStyles = source.defaultStyles;\r\n this.showCurtain = source.showCurtain;\r\n this.align = source.align;\r\n this.verticalAlign = source.verticalAlign;\r\n this.left = source.left;\r\n this.right = source.right;\r\n this.top = source.top;\r\n this.bottom = source.bottom;\r\n this.adapter.copyFrom(source.adapter);\r\n };\r\n return Popup;\r\n}(BaseObjectEvents));\r\nexport { Popup };\r\n","/**\r\n * Functionality for drawing rectangles.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw a rectangle.\r\n *\r\n * @see {@link IRectangleEvents} for a list of available events\r\n * @see {@link IRectangleAdapters} for a list of available Adapters\r\n */\r\nvar Rectangle = /** @class */ (function (_super) {\r\n __extends(Rectangle, _super);\r\n /**\r\n * Constructor\r\n * * Creates a `<rect>` element\r\n * * Creates default state\r\n */\r\n function Rectangle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Rectangle\";\r\n _this.element = _this.paper.add(\"rect\");\r\n //this.pixelPerfect = false;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Rectangle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var precision = this._positionPrecision;\r\n if (this.pixelPerfect) {\r\n precision = 0;\r\n }\r\n var w = $math.round(this.innerWidth, precision);\r\n var h = $math.round(this.innerHeight, precision);\r\n this.element.attr({\r\n \"width\": w,\r\n \"height\": h\r\n });\r\n };\r\n /**\r\n * Measures the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Rectangle.prototype.measureElement = function () {\r\n };\r\n Object.defineProperty(Rectangle.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n if (this.isMeasured) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n width: this.innerWidth,\r\n height: this.innerHeight\r\n };\r\n }\r\n else {\r\n return { x: 0, y: 0, width: 0, height: 0 };\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Rectangle;\r\n}(Sprite));\r\nexport { Rectangle };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Rectangle\"] = Rectangle;\r\n","/**\r\n * Resize button module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a draggable resize/grip button.\r\n *\r\n * @see {@link IResizeButtonEvents} for a list of available events\r\n * @see {@link IResizeButtonAdapters} for a list of available Adapters\r\n */\r\nvar ResizeButton = /** @class */ (function (_super) {\r\n __extends(ResizeButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ResizeButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"ResizeButton\";\r\n // Set defaults\r\n _this.orientation = \"horizontal\";\r\n _this.layout = \"absolute\";\r\n _this.horizontalCenter = \"middle\";\r\n _this.verticalCenter = \"middle\";\r\n _this.draggable = true;\r\n _this.padding(8, 8, 8, 8);\r\n _this.background.cornerRadius(20, 20, 20, 20);\r\n // Create an icon\r\n var icon = new Sprite();\r\n icon.element = _this.paper.add(\"path\");\r\n var path = $path.moveTo({ x: -2, y: -6 });\r\n path += $path.lineTo({ x: -2, y: 6 });\r\n path += $path.moveTo({ x: 2, y: -6 });\r\n path += $path.lineTo({ x: 2, y: 6 });\r\n icon.path = path;\r\n icon.pixelPerfect = true;\r\n icon.padding(0, 4, 0, 4);\r\n icon.stroke = new InterfaceColorSet().getFor(\"alternativeText\");\r\n icon.strokeOpacity = 0.7;\r\n //icon.align = \"center\";\r\n //icon.valign = \"middle\";\r\n _this.icon = icon;\r\n _this.label.dispose();\r\n _this.label = undefined;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ResizeButton.prototype, \"orientation\", {\r\n /**\r\n * Use for setting of direction (orientation) of the resize button.\r\n *\r\n * Available options: \"horizontal\", \"vertical\".\r\n *\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n var icon = this.icon;\r\n if (icon) {\r\n if (value == \"horizontal\") {\r\n icon.rotation = 0;\r\n }\r\n else {\r\n icon.rotation = -90;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ResizeButton;\r\n}(Button));\r\nexport { ResizeButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ResizeButton\"] = ResizeButton;\r\n","/**\r\n * Rounded rectangle module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $utils from \"../utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a rectangle with rounded corners.\r\n *\r\n * @see {@link IRoundedRectangleEvents} for a list of available events\r\n * @see {@link IRoundedRectangleAdapters} for a list of available Adapters\r\n */\r\nvar RoundedRectangle = /** @class */ (function (_super) {\r\n __extends(RoundedRectangle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RoundedRectangle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RoundedRectangle\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.cornerRadius(3, 3, 3, 3);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RoundedRectangle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.innerWidth;\r\n var h = this.innerHeight;\r\n if ($type.isNumber(w) && $type.isNumber(h)) {\r\n var minSide = $math.min(w, h) / 2;\r\n var cornerRadiusTopLeft = $utils.relativeToValue(this.cornerRadiusTopLeft, minSide);\r\n var cornerRadiusTopRight = $utils.relativeToValue(this.cornerRadiusTopRight, minSide);\r\n var cornerRadiusBottomRight = $utils.relativeToValue(this.cornerRadiusBottomRight, minSide);\r\n var cornerRadiusBottomLeft = $utils.relativeToValue(this.cornerRadiusBottomLeft, minSide);\r\n var maxcr = $math.min(Math.abs(w / 2), Math.abs(h / 2));\r\n var crtl = $math.fitToRange(cornerRadiusTopLeft, 0, maxcr);\r\n var crtr = $math.fitToRange(cornerRadiusTopRight, 0, maxcr);\r\n var crbr = $math.fitToRange(cornerRadiusBottomRight, 0, maxcr);\r\n var crbl = $math.fitToRange(cornerRadiusBottomLeft, 0, maxcr);\r\n var lineT = \"M\" + crtl + \",0 L\" + (w - crtr) + \",0\";\r\n var lineB = \" L\" + crbl + \",\" + h;\r\n var lineL = \" L0,\" + crtl;\r\n var lineR = \" L\" + w + \",\" + (h - crbr);\r\n var arcTR = \" a\" + crtr + \",\" + crtr + \" 0 0 1 \" + crtr + \",\" + crtr;\r\n var arcBR = \" a\" + crbr + \",\" + crbr + \" 0 0 1 -\" + crbr + \",\" + crbr;\r\n var arcBL = \" a\" + crbl + \",\" + crbl + \" 0 0 1 -\" + crbl + \",-\" + crbl;\r\n var arcTL = \" a\" + crtl + \",\" + crtl + \" 0 0 1 \" + crtl + \",-\" + crtl;\r\n var path = lineT + arcTR + lineR + arcBR + lineB + arcBL + lineL + arcTL + \" Z\";\r\n this.path = path;\r\n }\r\n };\r\n /**\r\n * Sets radius for all four corners at ones.\r\n *\r\n * All numbers are in pixels.\r\n *\r\n * @param tl Top-left corner\r\n * @param tr Top-right corner\r\n * @param bl Bottom-left corner\r\n * @param br Bottom-right corner\r\n */\r\n RoundedRectangle.prototype.cornerRadius = function (tl, tr, bl, br) {\r\n this.cornerRadiusTopLeft = tl;\r\n this.cornerRadiusTopRight = tr;\r\n this.cornerRadiusBottomLeft = bl;\r\n this.cornerRadiusBottomRight = br;\r\n };\r\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusTopLeft\", {\r\n /**\r\n * @return Radius (px or Percent)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadiusTopLeft\");\r\n },\r\n /**\r\n * Radius of the top-left corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"cornerRadiusTopLeft\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusTopRight\", {\r\n /**\r\n * @return Radius (px or Percent)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadiusTopRight\");\r\n },\r\n /**\r\n * Radius of the top-right corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"cornerRadiusTopRight\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusBottomRight\", {\r\n /**\r\n * @return Radius (px or Percent)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadiusBottomRight\");\r\n },\r\n /**\r\n * Radius of the bottom-right corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"cornerRadiusBottomRight\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusBottomLeft\", {\r\n /**\r\n * @return Radius (px or Percent)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadiusBottomLeft\");\r\n },\r\n /**\r\n * Radius of the bottom-left corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"cornerRadiusBottomLeft\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Measures the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RoundedRectangle.prototype.measureElement = function () {\r\n };\r\n Object.defineProperty(RoundedRectangle.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n if (this.isMeasured) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n width: this.innerWidth,\r\n height: this.innerHeight\r\n };\r\n }\r\n else {\r\n return { x: 0, y: 0, width: 0, height: 0 };\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RoundedRectangle;\r\n}(Sprite));\r\nexport { RoundedRectangle };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RoundedRectangle\"] = RoundedRectangle;\r\n","/**\r\n * Provides functionality used to build scrollbars.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { ResizeButton } from \"../elements/ResizeButton\";\r\nimport { Button } from \"../elements/Button\";\r\nimport { getInteraction } from \"../interaction/Interaction\";\r\nimport { MouseCursorStyle } from \"../interaction/Mouse\";\r\nimport { RoundedRectangle } from \"../elements/RoundedRectangle\";\r\nimport { registry } from \"../Registry\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { percent, Percent } from \"../utils/Percent\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $utils from \"../utils/Utils\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Scrollbar is a generic control allowing to select a range of values or pan\r\n * the selection.\r\n *\r\n * @see {@link IScrollbarEvents} for a list of available events\r\n * @see {@link IScrollbarAdapters} for a list of available Adapters\r\n */\r\nvar Scrollbar = /** @class */ (function (_super) {\r\n __extends(Scrollbar, _super);\r\n /**\r\n * Construtor\r\n */\r\n function Scrollbar() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Previously selected lower (start) value.\r\n */\r\n _this._previousStart = 0;\r\n /**\r\n * Previously selected upper (end) value.\r\n */\r\n _this._previousEnd = 1;\r\n /**\r\n * A value of previously selected lower value, used for doubleclick function.\r\n */\r\n _this._prevStart = 0;\r\n /**\r\n * A value of previously selected upper value, used for doubleclick function.\r\n */\r\n _this._prevEnd = 1;\r\n /**\r\n * Indicates if the Scrollbar is currently \"busy\" (animating and or\r\n * performing zoom by user interaction).\r\n */\r\n _this._isBusy = false;\r\n /**\r\n * [_skipRangeEvents description]\r\n *\r\n * @todo Description\r\n */\r\n _this._skipRangeEvents = false;\r\n /**\r\n * Update the selection when dragging the grips.\r\n *\r\n * If set to `false` selection will be updated only when the grip is\r\n * released.\r\n *\r\n * @default true\r\n */\r\n _this.updateWhileMoving = true;\r\n _this.className = \"Scrollbar\";\r\n _this.minHeight = 12;\r\n _this.minWidth = 12;\r\n _this.animationDuration = 0;\r\n _this.animationEasing = $ease.cubicOut;\r\n _this.margin(10, 10, 10, 10);\r\n var interfaceColors = new InterfaceColorSet();\r\n // background is also container as it might contain graphs, grid, etc\r\n var background = _this.background;\r\n background.cornerRadius(10, 10, 10, 10);\r\n background.fill = interfaceColors.getFor(\"fill\");\r\n background.fillOpacity = 0.5;\r\n // Make system tooltips appear by default\r\n _this.showSystemTooltip = true;\r\n _this.startGrip = new ResizeButton();\r\n _this.endGrip = new ResizeButton();\r\n // Default orientation...\r\n // ... is set in `applyInternalDefaults()` because it accesses `language`\r\n // and should only be started to access when parent is set\r\n // Set events\r\n _this.events.on(\"transformed\", function () {\r\n _this.updateThumb();\r\n }, _this, false);\r\n // Initial positions\r\n _this.start = 0;\r\n _this.end = 1;\r\n // Set roles\r\n _this.role = \"scrollbar\";\r\n _this.thumb.role = \"slider\";\r\n _this.thumb.readerLive = \"polite\";\r\n _this.startGrip.role = \"slider\";\r\n _this.endGrip.role = \"slider\";\r\n // otherwise range changed won't be registered\r\n _this.events.once(\"inited\", function () {\r\n _this._previousStart = undefined;\r\n _this.dispatchRangeChange();\r\n }, undefined, false);\r\n _this.hideGrips = false;\r\n _this.orientation = \"horizontal\";\r\n // Min/max values for accessibility\r\n _this.setSVGAttribute({ \"aria-valuemin\": \"0\" });\r\n _this.setSVGAttribute({ \"aria-valuemax\": \"100\" });\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n Scrollbar.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Set screen reader tetxt accordingly\r\n if (this.orientation === \"horizontal\") {\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Use TAB to select grip buttons or left and right arrows to change selection\");\r\n }\r\n if (!$type.hasValue(this.thumb.readerDescription)) {\r\n this.thumb.readerDescription = this.language.translate(\"Use left and right arrows to move selection\");\r\n }\r\n if (!$type.hasValue(this.startGrip.readerDescription)) {\r\n this.startGrip.readerDescription = this.language.translate(\"Use left and right arrows to move left selection\");\r\n }\r\n if (!$type.hasValue(this.endGrip.readerDescription)) {\r\n this.endGrip.readerDescription = this.language.translate(\"Use left and right arrows to move right selection\");\r\n }\r\n this.readerOrientation = \"horizontal\";\r\n }\r\n else {\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Use TAB select grip buttons or up and down arrows to change selection\");\r\n }\r\n if (!$type.hasValue(this.thumb.readerDescription)) {\r\n this.thumb.readerDescription = this.language.translate(\"Use up and down arrows to move selection\");\r\n }\r\n if (!$type.hasValue(this.startGrip.readerDescription)) {\r\n this.startGrip.readerDescription = this.language.translate(\"Use up and down arrows to move upper selection\");\r\n }\r\n if (!$type.hasValue(this.endGrip.readerDescription)) {\r\n this.endGrip.readerDescription = this.language.translate(\"Use up and down arrows to move lower selection\");\r\n }\r\n this.readerOrientation = \"vertical\";\r\n }\r\n this.readerControls = this.baseSprite.uidAttr();\r\n };\r\n /**\r\n * Validates the layout of the scrollbar's elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.validateLayout = function () {\r\n this.updateSize();\r\n _super.prototype.validateLayout.call(this);\r\n // when size changes, need to update extremes\r\n this.updateExtremes();\r\n };\r\n /**\r\n * Update background for the scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.processBackground = function () {\r\n _super.prototype.processBackground.call(this);\r\n var background = this.background;\r\n background.clickable = true;\r\n background.events.on(\"hit\", this.handleBgHit, this, undefined);\r\n };\r\n /**\r\n * Zooms to the particular place when clicked/tapped on the scrollbar\r\n * background.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n Scrollbar.prototype.handleBgHit = function (event) {\r\n this.makeBusy();\r\n var point = event.spritePoint;\r\n point = $utils.spritePointToSprite(point, this.background, this);\r\n var thumb = this.thumb;\r\n if (this.orientation == \"horizontal\") {\r\n var thumbX = point.x - thumb.pixelWidth / 2;\r\n thumbX = $math.fitToRange(thumbX, 0, this.innerWidth - thumb.pixelWidth);\r\n this._thumbAnimation = thumb.animate({ property: \"x\", to: thumbX }, this.animationDuration, this.animationEasing);\r\n }\r\n else {\r\n var thumbY = point.y - thumb.pixelHeight / 2;\r\n thumbY = $math.fitToRange(thumbY, 0, this.innerHeight - thumb.pixelHeight);\r\n this._thumbAnimation = thumb.animate({ property: \"y\", to: thumbY }, this.animationDuration, this.animationEasing);\r\n }\r\n if (this.animationDuration > 0) {\r\n this._thumbAnimation.events.on(\"animationended\", this.makeUnbusy, this, false);\r\n }\r\n else {\r\n this._thumb.validate();\r\n this.makeUnbusy();\r\n }\r\n };\r\n /**\r\n * Set scrollbar as busy. (currently zooming)\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.makeBusy = function () {\r\n this._isBusy = true;\r\n this._skipRangeEvents = false;\r\n if (this._unbusyTimeout) {\r\n this.removeDispose(this._unbusyTimeout);\r\n }\r\n this._unbusyTimeout = undefined;\r\n this.stopAnimations();\r\n };\r\n /**\r\n * Stops all animations, currently playing for the scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.stopAnimations = function () {\r\n if (this._thumbAnimation) {\r\n this._thumbAnimation.stop(true);\r\n }\r\n if (this._zoomAnimation) {\r\n this._zoomAnimation.stop(true);\r\n }\r\n };\r\n /**\r\n * Cancels \"busy\" status of the Scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.makeUnbusy = function () {\r\n /**\r\n * We cannot make Scrollbar not busy right after release, because then axes\r\n * will take over controll and Scrollbar will start to animate.\r\n * Theorethically, it's not right to set timeout by `animationDuration`,\r\n * however we can not know all the durations of elements we scroll, so we\r\n * assume that animation duration will be the same as\r\n * `interpolationDuration` or `rangeChange` duration.\r\n */\r\n this._unbusyTimeout = this.setTimeout(this.makeUnbusyReal.bind(this), this.animationDuration * 1.1);\r\n };\r\n /**\r\n * [makeUnbusyReal description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.makeUnbusyReal = function () {\r\n this._usingGrip = undefined;\r\n this._isBusy = false;\r\n if (!this.updateWhileMoving) {\r\n this.dispatchRangeChange();\r\n }\r\n };\r\n /**\r\n * Disptatches rangechanged event if it really changed\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.dispatchRangeChange = function () {\r\n if (this._previousEnd != this.end || this._previousStart != this.start) {\r\n this._previousStart = this.start;\r\n this._previousEnd = this.end;\r\n this.dispatch(\"rangechanged\");\r\n }\r\n };\r\n /**\r\n * Updates the \"thumb\" element. A draggable element between the grips.\r\n * @ignore\r\n */\r\n Scrollbar.prototype.updateThumb = function (dispatchEvents) {\r\n if (dispatchEvents === void 0) { dispatchEvents = true; }\r\n if (!this.parent) {\r\n return;\r\n }\r\n var thumb = this.thumb;\r\n var start = this.start;\r\n var end = this.end;\r\n var startGrip = this.startGrip;\r\n var endGrip = this.endGrip;\r\n var directionFlipped = this.adapter.apply(\"positionValueDirection\", {\r\n flipped: false\r\n }).flipped;\r\n var fromName = directionFlipped ? \"To %1\" : \"From %1\";\r\n var toName = directionFlipped ? \"From %1\" : \"To %1\";\r\n var fromValue;\r\n var toValue;\r\n if (this.orientation == \"horizontal\") {\r\n var innerWidth_1 = this.innerWidth;\r\n thumb.width = innerWidth_1 * (end - start);\r\n thumb.maxX = innerWidth_1 - thumb.pixelWidth;\r\n thumb.x = start * innerWidth_1;\r\n startGrip.moveTo({ x: thumb.pixelX, y: 0 }, undefined, undefined, true); // overrides dragging\r\n endGrip.moveTo({ x: thumb.pixelX + thumb.pixelWidth, y: 0 }, undefined, undefined, true);\r\n fromValue = this.adapter.apply(\"positionValue\", {\r\n value: Math.round(start * 100) + \"%\",\r\n position: start\r\n }).value;\r\n toValue = this.adapter.apply(\"positionValue\", {\r\n value: Math.round(end * 100) + \"%\",\r\n position: end\r\n }).value;\r\n startGrip.readerTitle = this.language.translate(fromName, undefined, fromValue);\r\n startGrip.readerValueNow = \"\" + Math.round(start * 100);\r\n startGrip.readerValueText = startGrip.readerTitle;\r\n endGrip.readerTitle = this.language.translate(toName, undefined, toValue);\r\n endGrip.readerValueNow = \"\" + Math.round(end * 100);\r\n endGrip.readerValueText = endGrip.readerTitle;\r\n }\r\n else {\r\n var innerHeight_1 = this.innerHeight;\r\n thumb.height = innerHeight_1 * (end - start);\r\n thumb.maxY = innerHeight_1 - thumb.pixelHeight;\r\n thumb.y = (1 - end) * innerHeight_1;\r\n startGrip.moveTo({ x: 0, y: thumb.pixelY + thumb.pixelHeight }, undefined, undefined, true);\r\n endGrip.moveTo({ x: 0, y: thumb.pixelY }, undefined, undefined, true);\r\n fromValue = this.adapter.apply(\"positionValue\", {\r\n value: Math.round((1 - start) * 100) + \"%\",\r\n position: (1 - start)\r\n }).value;\r\n toValue = this.adapter.apply(\"positionValue\", {\r\n value: Math.round((1 - end) * 100) + \"%\",\r\n position: (1 - end)\r\n }).value;\r\n startGrip.readerTitle = this.language.translate(toName, undefined, fromValue);\r\n startGrip.readerValueNow = \"\" + Math.round(start * 100);\r\n startGrip.readerValueText = startGrip.readerTitle;\r\n endGrip.readerTitle = this.language.translate(fromName, undefined, toValue);\r\n endGrip.readerValueNow = \"\" + Math.round(end * 100);\r\n endGrip.readerValueText = endGrip.readerTitle;\r\n }\r\n // Add accessibility\r\n thumb.readerTitle = this.language.translate(\"From %1 to %2\", undefined, fromValue, toValue);\r\n thumb.readerValueNow = \"\" + Math.round(start * 100);\r\n thumb.readerValueText = thumb.readerTitle;\r\n this.readerValueNow = \"\" + Math.round(start * 100);\r\n this.readerValueText = thumb.readerTitle;\r\n if (!this._skipRangeEvents && this.updateWhileMoving && dispatchEvents) {\r\n this.dispatchRangeChange();\r\n }\r\n };\r\n /**\r\n * Updates extremes of the scrollbar.\r\n */\r\n Scrollbar.prototype.updateExtremes = function () {\r\n var orientation = this.orientation;\r\n var minX = 0;\r\n var minY = 0;\r\n var maxX = 0;\r\n var maxY = 0;\r\n if (orientation == \"horizontal\") {\r\n maxX = this.innerWidth;\r\n minY = maxY = this.innerHeight / 2;\r\n }\r\n else {\r\n maxY = this.innerHeight;\r\n minX = maxX = this.innerWidth / 2;\r\n }\r\n var startGrip = this.startGrip;\r\n startGrip.minX = minX;\r\n startGrip.maxX = maxX;\r\n startGrip.minY = minY;\r\n startGrip.maxY = maxY;\r\n var endGrip = this.endGrip;\r\n endGrip.minX = minX;\r\n endGrip.maxX = maxX;\r\n endGrip.minY = minY;\r\n endGrip.maxY = maxY;\r\n var thumb = this.thumb;\r\n thumb.minX = minX;\r\n thumb.maxX = maxX;\r\n thumb.minY = minY;\r\n thumb.maxY = maxY;\r\n };\r\n /**\r\n * Updates size of the scrollbar.\r\n */\r\n Scrollbar.prototype.updateSize = function () {\r\n var orientation = this.orientation;\r\n var startGrip = this.startGrip;\r\n if (startGrip) {\r\n startGrip.orientation = orientation;\r\n }\r\n if (this.endGrip) {\r\n this.endGrip.orientation = orientation;\r\n }\r\n var thumb = this.thumb;\r\n if (thumb) {\r\n if (orientation == \"horizontal\") {\r\n if (!$type.isNumber(this._pixelWidth)) {\r\n if (!(this.width instanceof Percent)) {\r\n this.width = percent(100);\r\n }\r\n }\r\n // this teorethically might be wrong, if user indeed sets height of a horizontal scrollbar in percent\r\n // however without this height might be equal to 100% if previous orientation was set to horizontal\r\n // so this is ok solution, in case user really wants to have scrollbar height set in percent,\r\n // he should do this after orientation.\r\n if ($type.hasValue(this.percentHeight)) {\r\n this.height = this.minHeight;\r\n }\r\n thumb.height = this.innerHeight;\r\n thumb.verticalCenter = \"middle\";\r\n thumb.horizontalCenter = \"left\";\r\n }\r\n else {\r\n if (!$type.isNumber(this._pixelHeight)) {\r\n if (!(this.height instanceof Percent)) {\r\n this.height = percent(100);\r\n }\r\n }\r\n // same as above with percentHeight\r\n if ($type.hasValue(this.percentWidth)) {\r\n this.width = this.minWidth;\r\n }\r\n thumb.width = this.innerWidth;\r\n thumb.verticalCenter = \"top\";\r\n thumb.horizontalCenter = \"middle\";\r\n }\r\n }\r\n };\r\n Object.defineProperty(Scrollbar.prototype, \"isBusy\", {\r\n /**\r\n * Indicates if the Scrollbar is currently \"busy\" (animating and or\r\n * performing zoom by user interaction).\r\n * @return boolean\r\n */\r\n get: function () {\r\n return this._isBusy;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"start\", {\r\n /**\r\n * @return Position (0-1)\r\n */\r\n get: function () {\r\n return Math.min(this.getPosition(this._start), this.getPosition(this._end));\r\n },\r\n /**\r\n * ==========================================================================\r\n * POSITIONS\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Relative position (0-1) of the start grip.\r\n *\r\n * @param position Position (0-1)\r\n */\r\n set: function (position) {\r\n if (!this._isBusy) {\r\n this.__start = position;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"__start\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._start;\r\n },\r\n /**\r\n * [__start description]\r\n *\r\n * @todo Description\r\n * @param position [description]\r\n */\r\n set: function (position) {\r\n this._start = this.getPosition(position);\r\n this.updateThumb();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"end\", {\r\n /**\r\n * @return Position (0-1)\r\n */\r\n get: function () {\r\n return Math.max(this.getPosition(this._start), this.getPosition(this._end));\r\n },\r\n /**\r\n * Relative position (0-1) of the end grip.\r\n *\r\n * @param position Position (0-1)\r\n */\r\n set: function (position) {\r\n if (!this._isBusy) {\r\n this.__end = position;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"__end\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._end;\r\n },\r\n /**\r\n * [__end description]\r\n *\r\n * @todo Description\r\n * @param position [description]\r\n */\r\n set: function (position) {\r\n this._end = this.getPosition(position);\r\n this.updateThumb();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"range\", {\r\n /**\r\n * Current selection range.\r\n *\r\n * @readonly\r\n * @return Range\r\n */\r\n get: function () {\r\n return { start: this.start, end: this.end, priority: this._usingGrip };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Disables range change events.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.skipRangeEvents = function () {\r\n if (!this._isBusy) {\r\n this._skipRangeEvents = true;\r\n }\r\n };\r\n /**\r\n * [fixRange description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n * @param range Range\r\n */\r\n Scrollbar.prototype.fixRange = function (range) {\r\n if (range.start != $math.round(this._start, 2) || range.end != $math.round(this._end, 2)) {\r\n this._start = range.start;\r\n this._end = range.end;\r\n this._skipRangeEvents = true;\r\n this.updateThumb();\r\n this._skipRangeEvents = false;\r\n this.thumb.validate();\r\n this.thumb.background.validate();\r\n }\r\n };\r\n /**\r\n * [getPosition description]\r\n *\r\n * @todo Description\r\n * @param position [description]\r\n * @return [description]\r\n */\r\n Scrollbar.prototype.getPosition = function (position) {\r\n return $math.fitToRange($math.round(position, 4), 0, 1);\r\n };\r\n Object.defineProperty(Scrollbar.prototype, \"orientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * MISC\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Orientation of the scrollbar.\r\n *\r\n * Available options: \"horizontal\" (default) and \"vertical\".\r\n *\r\n * @default \"horizontal\"\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"orientation\", value)) {\r\n // Set mouse cursors and screen reader tetxt accordingly\r\n if (value === \"horizontal\") {\r\n // Mouse styles\r\n this.startGrip.cursorOverStyle = MouseCursorStyle.horizontalResize;\r\n this.endGrip.cursorOverStyle = MouseCursorStyle.horizontalResize;\r\n // Reader text\r\n /*this.readerTitle = this.language.translate(\"Use TAB to select grip buttons or left and right arrows to change selection\");\r\n this.thumb.readerDescription = this.language.translate(\"Use left and right arrows to move selection\");\r\n this.startGrip.readerDescription = this.language.translate(\"Use left and right arrows to move left selection\");\r\n this.endGrip.readerDescription = this.language.translate(\"Use left and right arrows to move right selection\");*/\r\n }\r\n else {\r\n // Mouse styles\r\n this.startGrip.cursorOverStyle = MouseCursorStyle.verticalResize;\r\n this.endGrip.cursorOverStyle = MouseCursorStyle.verticalResize;\r\n // Reader text\r\n /*this.readerTitle = this.language.translate(\"Use TAB select grip buttons or up and down arrows to change selection\");\r\n this.thumb.readerDescription = this.language.translate(\"Use up and down arrows to move selection\");\r\n this.startGrip.readerDescription = this.language.translate(\"Use up and down arrows to move upper selection\");\r\n this.endGrip.readerDescription = this.language.translate(\"Use up and down arrows to move lower selection\");*/\r\n }\r\n this.updateByOrientation();\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n Scrollbar.prototype.updateByOrientation = function () {\r\n };\r\n Object.defineProperty(Scrollbar.prototype, \"startGrip\", {\r\n /**\r\n * @return Grip element\r\n */\r\n get: function () {\r\n return this._startGrip;\r\n },\r\n /**\r\n * ==========================================================================\r\n * GRIPS\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Start grip element. (button)\r\n *\r\n * @param button Grip element\r\n */\r\n set: function (button) {\r\n if (this._startGrip) {\r\n this.removeDispose(this._startGrip);\r\n }\r\n this._startGrip = button;\r\n this.processGrip(button);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"endGrip\", {\r\n /**\r\n * @return Grip element\r\n */\r\n get: function () {\r\n return this._endGrip;\r\n },\r\n /**\r\n * End grip element. (button)\r\n *\r\n * @param button Grip element\r\n */\r\n set: function (button) {\r\n if (this._endGrip) {\r\n this.removeDispose(this._endGrip);\r\n }\r\n this._endGrip = button;\r\n this.processGrip(button);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Decorates the grip button with properties and events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param button Grip button\r\n */\r\n Scrollbar.prototype.processGrip = function (button) {\r\n button.parent = this;\r\n button.isMeasured = false;\r\n button.focusable = true;\r\n button.shouldClone = false;\r\n // Set button defaults\r\n //button.showSystemTooltip = true; // setting this here is not right because we break inheritance\r\n button.zIndex = 100;\r\n button.events.on(\"drag\", this.handleGripDrag, this, false);\r\n button.events.on(\"dragstop\", this.makeUnbusy, this, false);\r\n button.events.on(\"down\", this.makeBusy, this, false);\r\n button.events.on(\"up\", this.makeUnbusy, this, false);\r\n this._disposers.push(button);\r\n };\r\n /**\r\n * Updates positions of related elements after grip element is dragged.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n Scrollbar.prototype.handleGripDrag = function (event) {\r\n this.makeBusy();\r\n if (event.target === this._startGrip) {\r\n this._usingGrip = \"start\";\r\n }\r\n else {\r\n this._usingGrip = \"end\";\r\n }\r\n if (this.orientation == \"horizontal\") {\r\n this._start = this.startGrip.pixelX / this.innerWidth;\r\n this._end = this.endGrip.pixelX / this.innerWidth;\r\n }\r\n else {\r\n this._start = 1 - this.startGrip.pixelY / this.innerHeight;\r\n this._end = 1 - this.endGrip.pixelY / this.innerHeight;\r\n }\r\n this.updateThumb();\r\n };\r\n Object.defineProperty(Scrollbar.prototype, \"thumb\", {\r\n /**\r\n * @return Thumb element\r\n */\r\n get: function () {\r\n if (!this._thumb) {\r\n // Create scrollbar controls (setters will handle adding disposers)\r\n var thumb = new Button();\r\n thumb.background.cornerRadius(10, 10, 10, 10);\r\n thumb.padding(0, 0, 0, 0);\r\n this.thumb = thumb;\r\n }\r\n return this._thumb;\r\n },\r\n /**\r\n * A \"thumb\" element.\r\n *\r\n * It's a draggable square space between the grips, that can be used to\r\n * pan the selection.\r\n *\r\n * @param thumb Thumb element\r\n */\r\n set: function (thumb) {\r\n var _this = this;\r\n if (thumb) {\r\n if (this._thumb) {\r\n this.removeDispose(this._thumb);\r\n }\r\n this._thumb = thumb;\r\n thumb.parent = this;\r\n thumb.isMeasured = false;\r\n thumb.inert = true;\r\n thumb.draggable = true;\r\n thumb.clickable = true;\r\n thumb.hoverable = true;\r\n thumb.focusable = true;\r\n thumb.shouldClone = false;\r\n thumb.zIndex = 0;\r\n // TODO remove closures ?\r\n // Add events\r\n // Add cursor styles to thumb\r\n thumb.cursorOverStyle = MouseCursorStyle.grab;\r\n thumb.cursorDownStyle = MouseCursorStyle.grabbing;\r\n thumb.events.on(\"dragstart\", this.makeBusy, this, false);\r\n thumb.events.on(\"dragstop\", this.makeUnbusy, this, false);\r\n thumb.events.on(\"positionchanged\", this.handleThumbPosition, this, false);\r\n thumb.events.on(\"sizechanged\", this.handleThumbPosition, this, false);\r\n thumb.events.on(\"doublehit\", this.handleDoubleClick, this, false);\r\n // Add event for space and ENTER to toggle full zoom out and back\r\n // (same as doubleclick)\r\n this._disposers.push(getInteraction().body.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, [\"space\", \"enter\"]) && _this.thumb.isFocused) {\r\n ev.event.preventDefault();\r\n _this.handleDoubleClick();\r\n }\r\n }));\r\n this._disposers.push(this._thumb);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Zooms-in and out the selection on double-click of the thumb.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.handleDoubleClick = function () {\r\n this.makeBusy();\r\n var newStart = 0;\r\n var newEnd = 1;\r\n if (this.start != 0 || this.end != 1) {\r\n this._prevStart = this.start;\r\n this._prevEnd = this.end;\r\n }\r\n else {\r\n newStart = this._prevStart;\r\n newEnd = this._prevEnd;\r\n }\r\n var zoomAnimation = this.animate([{ property: \"__start\", to: newStart }, { property: \"__end\", to: newEnd }], this.animationDuration, this.animationEasing);\r\n if (zoomAnimation && !zoomAnimation.isFinished()) {\r\n zoomAnimation.events.on(\"animationended\", this.makeUnbusy, this, false);\r\n this._zoomAnimation = zoomAnimation;\r\n }\r\n else {\r\n this.makeUnbusy();\r\n }\r\n };\r\n /**\r\n * Updates positions of other elements when thumb is moved.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.handleThumbPosition = function () {\r\n var thumb = this.thumb;\r\n if (this.orientation == \"horizontal\") {\r\n var innerWidth_2 = this.innerWidth;\r\n var w = thumb.innerWidth;\r\n var x = thumb.pixelX;\r\n this._start = x / innerWidth_2;\r\n this._end = (x + w) / innerWidth_2;\r\n this.updateThumb();\r\n }\r\n else {\r\n var innerHeight_2 = this.innerHeight;\r\n var h = thumb.innerHeight;\r\n var y = thumb.pixelY;\r\n if (y + h > innerHeight_2) {\r\n y = innerHeight_2 - h;\r\n thumb.y = y;\r\n }\r\n this._start = 1 - (y + h) / innerHeight_2;\r\n this._end = 1 - y / innerHeight_2;\r\n this.updateThumb();\r\n }\r\n };\r\n /**\r\n * Creates a background element for the scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background\r\n */\r\n Scrollbar.prototype.createBackground = function () {\r\n return new RoundedRectangle();\r\n };\r\n Object.defineProperty(Scrollbar.prototype, \"hideGrips\", {\r\n /**\r\n * @return Show only on hover?\r\n */\r\n get: function () {\r\n return this._hideGrips;\r\n },\r\n /**\r\n * Use this property to set whether grips should be always visible (`false`),\r\n * or they should just appear on scrollbar hover (`true`).\r\n *\r\n * @param value Show only on hover?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n this._hideGrips = value;\r\n if (this._overDisposer) {\r\n this.removeDispose(this._overDisposer);\r\n }\r\n if (this._outDisposer) {\r\n this.removeDispose(this._outDisposer);\r\n }\r\n if (value) {\r\n this._overDisposer = this.events.on(\"over\", function () {\r\n _this.startGrip.show();\r\n _this.endGrip.show();\r\n }, undefined, false);\r\n this._outDisposer = this.events.on(\"out\", function () {\r\n _this.startGrip.hide();\r\n _this.endGrip.hide();\r\n }, undefined, false);\r\n this.startGrip.hide();\r\n this.endGrip.hide();\r\n }\r\n else {\r\n this.startGrip.show();\r\n this.endGrip.show();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"animationDuration\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"animationDuration\");\r\n },\r\n /**\r\n * Duration in milliseconds of scrollbar animation (happens when user clicks on a background of a scrollbar)\r\n * @default 0\r\n * @param value number\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"animationDuration\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"animationEasing\", {\r\n /**\r\n * @return {Function}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"animationEasing\");\r\n },\r\n /**\r\n * Animation easing function.\r\n * @todo: review description and default\r\n * @default $ease.cubicOut\r\n * @param value (value: number) => number\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"animationEasing\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n Scrollbar.prototype.asFunction = function (field) {\r\n return field == \"animationEasing\" || _super.prototype.asIs.call(this, field);\r\n };\r\n return Scrollbar;\r\n}(Container));\r\nexport { Scrollbar };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Scrollbar\"] = Scrollbar;\r\n","/**\r\n * Slice module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport { Percent } from \"../utils/Percent\";\r\nimport { RadialGradient } from \"../rendering/fills/RadialGradient\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a wedged semi-circle - slice. Usually used for Pie/Donut charts.\r\n *\r\n * @see {@link ISliceEvents} for a list of available events\r\n * @see {@link ISliceAdapters} for a list of available Adapters\r\n */\r\nvar Slice = /** @class */ (function (_super) {\r\n __extends(Slice, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Slice() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"Slice\";\r\n // Set defaults\r\n _this.setPropertyValue(\"cornerRadius\", 0);\r\n _this.setPropertyValue(\"startAngle\", 0);\r\n _this.setPercentProperty(\"innerRadius\", 0);\r\n _this.setPercentProperty(\"radius\", 0);\r\n _this.setPropertyValue(\"arc\", 0);\r\n _this.setPropertyValue(\"shiftRadius\", 0);\r\n _this.strokeOpacity = 1;\r\n _this.setPropertyValue(\"layout\", \"none\");\r\n // Create a slice wedge element\r\n _this.slice = _this.createChild(Sprite);\r\n _this.slice.isMeasured = false;\r\n _this._disposers.push(_this.slice);\r\n //this.element.attr({ \"stroke-linejoin\": \"round\" });\r\n //this.element.attr({ \"stroke-linecap\": \"round\" });\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Slice.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var radiusY = this.radiusY;\r\n if (this.radius > 0 && radiusY == 0) {\r\n radiusY = 0.01;\r\n }\r\n this.slice.path = $path.arc(this.startAngle, this.arc, this.radius, this.pixelInnerRadius, radiusY, this.cornerRadius, this.innerCornerRadius);\r\n this.slice.invalidate();\r\n this.shiftRadius = this.shiftRadius;\r\n if (this.realFill instanceof RadialGradient) {\r\n this.updateGradient(this.realFill);\r\n }\r\n if (this.realStroke instanceof RadialGradient) {\r\n this.updateGradient(this.realStroke);\r\n }\r\n };\r\n Slice.prototype.updateGradient = function (gradient) {\r\n gradient.element.attr({ \"gradientUnits\": \"userSpaceOnUse\" });\r\n gradient.element.attr({ \"r\": this.radius });\r\n gradient.cx = 0;\r\n gradient.cy = 0;\r\n gradient.element.attr({ radius: this.radius });\r\n };\r\n Object.defineProperty(Slice.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n if (this.isMeasured) {\r\n var innerRect = $math.getArcRect(this.startAngle, this.startAngle + this.arc, this.pixelInnerRadius);\r\n var outerRect = $math.getArcRect(this.startAngle, this.startAngle + this.arc, this.radius);\r\n return $math.getCommonRectangle([innerRect, outerRect]);\r\n }\r\n else {\r\n return { x: 0, y: 0, width: 0, height: 0 };\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"startAngle\", {\r\n /**\r\n * @return Angle (0-360)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * The angle at which left edge of the slice is drawn. (0-360)\r\n *\r\n * 0 is to the right of the center.\r\n *\r\n * @param value Angle (0-360)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", $math.normalizeAngle(value), true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"arc\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"arc\");\r\n },\r\n /**\r\n * [arc description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n this.setPropertyValue(\"arc\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"radius\", {\r\n /**\r\n * @return Radius (px)\r\n */\r\n get: function () {\r\n var radius = this.getPropertyValue(\"radius\");\r\n if (!$type.isNumber(radius)) {\r\n radius = 0;\r\n }\r\n return radius;\r\n },\r\n /**\r\n * Radius of the slice in pixels.\r\n *\r\n * @param value Radius (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"radius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"radiusY\", {\r\n /**\r\n * @return Vertical radius (0-1)\r\n */\r\n get: function () {\r\n var value = this.getPropertyValue(\"radiusY\");\r\n if (!$type.isNumber(value)) {\r\n value = this.radius;\r\n }\r\n return value;\r\n },\r\n /**\r\n * Vertical radius for creating skewed slices.\r\n *\r\n * This is relevant to `radius`, e.g. 0.5 will set vertical radius to half\r\n * the `radius`.\r\n *\r\n * @param value Vertical radius (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"radiusY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"innerRadius\", {\r\n /**\r\n * @return Radius (px or %)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the slice for creating cut out (donut) slices.\r\n *\r\n * @default 0\r\n * @param value Radius (px or %)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * @return Radius px\r\n */\r\n get: function () {\r\n return $utils.relativeToValue(this.innerRadius, this.radius);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"cornerRadius\", {\r\n /**\r\n * @return Radius (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadius\");\r\n },\r\n /**\r\n * Radius of slice's outer corners in pixels.\r\n *\r\n * @default 0\r\n * @param value Radius (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cornerRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"innerCornerRadius\", {\r\n /**\r\n * @return Radius (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerCornerRadius\");\r\n },\r\n /**\r\n * Radius of slice's inner corners in pixels.\r\n *\r\n * @default 0\r\n * @param value Radius (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"innerCornerRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"shiftRadius\", {\r\n /**\r\n * @return Radius shift\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"shiftRadius\");\r\n },\r\n /**\r\n * Indicates how far (relatively to center) a slice should be moved.\r\n *\r\n * The value is relative to the radius of the slice. Meaning 0 no shift,\r\n * 1 - slice shifted outside by whole of its radius.\r\n *\r\n * @param value Radius shift\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"shiftRadius\", value);\r\n value = this.getPropertyValue(\"shiftRadius\");\r\n this.dx = value * this.radius * this.ix;\r\n this.dy = value * this.radiusY * this.iy;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"ix\", {\r\n /**\r\n * [ix description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return $math.cos(this.middleAngle);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"iy\", {\r\n /**\r\n * [iy description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return $math.sin(this.middleAngle);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"middleAngle\", {\r\n /**\r\n * An angle of the slice's middle.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Angle\r\n */\r\n get: function () {\r\n return this.startAngle + this.arc / 2;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * X coordinate for the slice tooltip.\r\n *\r\n * @return X\r\n */\r\n Slice.prototype.getTooltipX = function () {\r\n var value = this.getPropertyValue(\"tooltipX\");\r\n if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n var p = 0.5;\r\n if (value instanceof Percent) {\r\n p = value.value;\r\n }\r\n var innerRadius = $utils.relativeToValue(this.innerRadius, this.radius);\r\n return this.ix * (innerRadius + (this.radius - innerRadius) * p);\r\n };\r\n /**\r\n * Y coordinate for the slice tooltip.\r\n *\r\n * @return Y\r\n */\r\n Slice.prototype.getTooltipY = function () {\r\n var value = this.getPropertyValue(\"tooltipY\");\r\n if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n var p = 0.5;\r\n if (value instanceof Percent) {\r\n p = value.value;\r\n }\r\n var innerRadius = $utils.relativeToValue(this.innerRadius, this.radius);\r\n return this.iy * (innerRadius + (this.radius - innerRadius) * p) + this.slice.dy;\r\n };\r\n return Slice;\r\n}(Container));\r\nexport { Slice };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Slice\"] = Slice;\r\n","/**\r\n * A module that defines Text element used to indicate links.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a text element with a link.\r\n *\r\n * @see {@link ITextLinkEvents} for a list of available events\r\n * @see {@link ITextLinkAdapters} for a list of available Adapters\r\n */\r\nvar TextLink = /** @class */ (function (_super) {\r\n __extends(TextLink, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TextLink() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"TextLink\";\r\n _this.selectable = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.fill = interfaceColors.getFor(\"primaryButton\").brighten(0.3);\r\n var hoverState = _this.states.create(\"hover\");\r\n hoverState.properties.fill = interfaceColors.getFor(\"primaryButtonHover\").brighten(0.3);\r\n var downState = _this.states.create(\"down\");\r\n downState.properties.fill = interfaceColors.getFor(\"primaryButtonDown\").brighten(0.3);\r\n _this.cursorOverStyle = MouseCursorStyle.pointer;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return TextLink;\r\n}(Label));\r\nexport { TextLink };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"TextLink\"] = TextLink;\r\n","/**\r\n * Provides functionality used to creating and showing tooltips (balloons).\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { PointedRectangle } from \"./PointedRectangle\";\r\nimport { Label } from \"../elements/Label\";\r\nimport { Animation } from \"../utils/Animation\";\r\nimport { color } from \"../utils/Color\";\r\nimport { DropShadowFilter } from \"../rendering/filters/DropShadowFilter\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $utils from \"../utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Tooltip displays text and/or multimedia information in a balloon over chart\r\n * area.\r\n * @see {@link ITooltipEvents} for a list of available events\r\n * @see {@link ITooltipAdapters} for a list of available Adapters\r\n */\r\nvar Tooltip = /** @class */ (function (_super) {\r\n __extends(Tooltip, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Tooltip() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Holds numeric boundary values. Calculated from the `boundingContainer`.\r\n * @ignore\r\n */\r\n _this._boundingRect = { x: -40000, y: -40000, width: 80000, height: 80000 };\r\n /**\r\n * Coordinates tooltip's pointer (stem) should point to.\r\n */\r\n _this._pointTo = { x: 0, y: 0 };\r\n /**\r\n * If set to `true` the pointer/stem of the Tooltip will not go outside\r\n * Tooltip's width or height depending on pointer's orientation.\r\n *\r\n * @default false\r\n */\r\n _this.fitPointerToBounds = false;\r\n /**\r\n * If `tooltipOrientation` is vertical, it can be drawn below or above point\r\n * We need to know this when solving overlapping.\r\n */\r\n _this._verticalOrientation = \"up\";\r\n /**\r\n * @ignore\r\n */\r\n _this.fixDoc = true;\r\n _this.className = \"Tooltip\";\r\n _this.isMeasured = false;\r\n _this.getFillFromObject = true;\r\n _this.margin(5, 5, 5, 5);\r\n _this.defaultState.transitionDuration = 1;\r\n _this.hiddenState.transitionDuration = 1;\r\n // Create chrome/background\r\n var background = _this.background;\r\n background.interactionsEnabled = false;\r\n background.fillOpacity = 0.9;\r\n background.strokeWidth = 1;\r\n background.strokeOpacity = 1;\r\n background.stroke = color(\"#ffffff\");\r\n background.cornerRadius = 3;\r\n background.pointerLength = 6;\r\n background.pointerBaseWidth = 10;\r\n var dropShadow = new DropShadowFilter();\r\n dropShadow.dy = 1;\r\n dropShadow.dx = 1;\r\n dropShadow.opacity = 0.5;\r\n background.filters.push(dropShadow);\r\n _this.autoTextColor = true;\r\n // Create text element\r\n var label = _this.createChild(Label);\r\n label.shouldClone = false;\r\n _this.label = label;\r\n label.padding(7, 12, 4, 12);\r\n label.interactionsEnabled = false;\r\n label.horizontalCenter = \"middle\";\r\n label.fill = color(\"#ffffff\");\r\n _this._disposers.push(label);\r\n _this.label.events.on(\"sizechanged\", _this.drawBackground, _this);\r\n _this.label.zIndex = 1; // @todo remove this line when bg sorting is solved\r\n // Set defaults\r\n _this.pointerOrientation = \"vertical\";\r\n _this.animationDuration = 0;\r\n _this.animationEasing = $ease.cubicOut;\r\n _this.setPropertyValue(\"showInViewport\", false);\r\n // Set accessibility options\r\n _this.role = \"tooltip\";\r\n _this.visible = false;\r\n _this.opacity = 0;\r\n _this.x = 0;\r\n _this.y = 0;\r\n _this.events.on(\"visibilitychanged\", _this.handleVisibility, _this);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Tooltip.prototype.handleVisibility = function () {\r\n if (this.visible) {\r\n this.label.invalidate();\r\n }\r\n };\r\n Object.defineProperty(Tooltip.prototype, \"getStrokeFromObject\", {\r\n /**\r\n * Specifies if tooltip background should get stroke color from the sprite it is pointing to.\r\n *\r\n * @return {boolean}\r\n * @default false\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"getStrokeFromObject\");\r\n },\r\n /**\r\n * Specifies if tooltip background should get stroke color from the sprite it is pointing to.\r\n *\r\n * @param value boolean\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"getStrokeFromObject\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"autoTextColor\", {\r\n /**\r\n * @return {boolean}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"autoTextColor\");\r\n },\r\n /**\r\n * Specifies if text color should be chosen automatically for a better\r\n * readability.\r\n *\r\n * IMPORTANT: this feature is generally ignored, if `getFillFromObject = false`.\r\n *\r\n * If inheriting of `fill` color from object tooltip is displayed for is\r\n * disabled, this feature will not work. If you are explicitly setting a\r\n * color for tooltip background, you may set a color for its label as well\r\n * using `tooltip.label.fill` property.\r\n *\r\n *\r\n * @param value boolean\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"autoTextColor\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"keepTargetHover\", {\r\n /**\r\n * @return Keep target hovered?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"keepTargetHover\");\r\n },\r\n /**\r\n * If this tooltip is displayed on hover on some other object, keep that\r\n * element hovered if hovering on the tooltip.\r\n *\r\n * @default false\r\n * @since 4.1.13\r\n * @param value Keep target hovered?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this.setPropertyValue(\"keepTargetHover\", value, true)) {\r\n if (value) {\r\n this.hoverable = true;\r\n this.background.interactionsEnabled = true;\r\n this._disposers.push(this.events.on(\"over\", function (ev) {\r\n if (_this.targetSprite && _this.targetSprite.hoverable) {\r\n _this.targetSprite.isHover = true;\r\n }\r\n }));\r\n this._disposers.push(this.events.on(\"out\", function (ev) {\r\n if (_this.targetSprite && _this.targetSprite.hoverable) {\r\n //this.hideTooltip();\r\n //this.targetSprite.handleOut();\r\n _this.targetSprite.isHover = false;\r\n }\r\n }));\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"showInViewport\", {\r\n /**\r\n * @return Force showing tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"showInViewport\");\r\n },\r\n /**\r\n * Normally, a tooltip will hide itself if it is pointing to a coordinate\r\n * that is outside viewport.\r\n *\r\n * Setting this setting to `true` will override that and make tooltip\r\n * appear next to the viewport edge closest to the target point.\r\n *\r\n * @default false\r\n * @since 4.5.7\r\n * @param value Force showing tooltip?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"showInViewport\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"getFillFromObject\", {\r\n /**\r\n * Specifies if tooltip background should get fill color from the sprite it is pointing to.\r\n *\r\n * @return {boolean}\r\n * @default true\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"getFillFromObject\");\r\n },\r\n /**\r\n * @param value boolean\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"getFillFromObject\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and returns a background element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background\r\n */\r\n Tooltip.prototype.createBackground = function () {\r\n return new PointedRectangle();\r\n };\r\n Object.defineProperty(Tooltip.prototype, \"pointerOrientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pointerOrientation\");\r\n },\r\n /**\r\n * Pointer orientation: `\"horizontal\"`, `\"vertical\"`, `\"up\"`, `\"down\"`,\r\n * `\"right\"`, or `\"left\"`.\r\n *\r\n * Options`\"horizontal\"` or `\"vertical\"` are location-aware, meaning they\r\n * will change position of the Tooltip based on the target point's position\r\n * in relation to chart center.\r\n *\r\n * Options `\"up\"`, `\"down\"`, `\"right\"`, `\"left\"` are static and will point\r\n * in the specified direction regardless of the position, even if that means\r\n * going out of chart/screen bounds.\r\n *\r\n * IMPORTANT: in some situations, like having multiple tooltips stacked for\r\n * multiple series, the `\"up\"` and `\"down\"` values might be ignored in order\r\n * to make tooltip overlap algorithm work.\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"pointerOrientation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"animationDuration\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"animationDuration\");\r\n },\r\n /**\r\n * Duration in milliseconds for the animation to take place when the tooltip\r\n * is moving from one place to another.\r\n *\r\n * @default 0\r\n * @param value number\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"animationDuration\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"animationEasing\", {\r\n /**\r\n * @return {Function}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"animationEasing\");\r\n },\r\n /**\r\n * Tooltip animation (moving from one place to another) easing function.\r\n *\r\n * @default $ease.cubicOut\r\n * @param value (value: number) => number\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"animationEasing\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"html\", {\r\n /**\r\n * @return HTML content\r\n */\r\n get: function () {\r\n return this.label.html;\r\n },\r\n /**\r\n * HTML content for the Tooltip.\r\n *\r\n * Provided value will be used as is, without applying any further\r\n * formatting to it.\r\n *\r\n * @param value HTML content\r\n */\r\n set: function (value) {\r\n if (this.label.html != value) {\r\n this.label.html = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"text\", {\r\n /**\r\n * @return SVG text\r\n */\r\n get: function () {\r\n return this.label.text;\r\n },\r\n /**\r\n * SVG text content for the Tooltip.\r\n *\r\n * Text can have a number of formatting options supported by\r\n * [[TextFormatter]].\r\n *\r\n * @param value SVG text\r\n */\r\n set: function (value) {\r\n if (this.label.text != value) {\r\n this.label.text = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates the Tooltip.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Tooltip.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var label = this.label;\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n var x = this._pointTo.x;\r\n var y = this._pointTo.y;\r\n var boundingRect = this._boundingRect;\r\n var textW = label.measuredWidth;\r\n var textH = label.measuredHeight;\r\n var pointerLength = this.background.pointerLength;\r\n var textX;\r\n var textY;\r\n if (this.ignoreBounds) {\r\n boundingRect = undefined;\r\n }\r\n // try to handle if text is wider than br\r\n if (boundingRect && this.fixDoc && textW > boundingRect.width) {\r\n // TODO maybe this isn't needed ?\r\n $utils.spritePointToDocument({ x: boundingRect.x, y: boundingRect.y }, this.parent);\r\n var p1 = $utils.spritePointToDocument({ x: boundingRect.x + boundingRect.width, y: boundingRect.y + boundingRect.height }, this.parent);\r\n var documentWidth = document.body.offsetWidth;\r\n // TODO maybe this isn't needed ?\r\n $utils.used(document.body.offsetHeight);\r\n if (p1.x > documentWidth / 2) {\r\n boundingRect.x = boundingRect.width - textW;\r\n }\r\n else {\r\n boundingRect.width = boundingRect.x + textW;\r\n }\r\n }\r\n var pointerOrientation = this.pointerOrientation;\r\n // horizontal\r\n if (pointerOrientation == \"horizontal\" || pointerOrientation == \"left\" || pointerOrientation == \"right\") {\r\n textY = -textH / 2;\r\n if (pointerOrientation == \"horizontal\") {\r\n if (boundingRect && x > boundingRect.x + boundingRect.width / 2) {\r\n textX = -textW / 2 - pointerLength;\r\n }\r\n else {\r\n textX = textW / 2 + pointerLength;\r\n }\r\n }\r\n else if (pointerOrientation == \"left\") {\r\n textX = textW / 2 + pointerLength;\r\n }\r\n else {\r\n textX = -textW / 2 - pointerLength;\r\n }\r\n }\r\n // vertical pointer\r\n else {\r\n if (boundingRect) {\r\n textX = $math.fitToRange(0, boundingRect.x - x + textW / 2, boundingRect.x - x + boundingRect.width - textW / 2);\r\n }\r\n if (pointerOrientation == \"vertical\") {\r\n if (boundingRect && y > boundingRect.y + textH + pointerLength) {\r\n textY = -textH - pointerLength;\r\n this._verticalOrientation = \"up\";\r\n }\r\n else {\r\n textY = pointerLength;\r\n this._verticalOrientation = \"down\";\r\n }\r\n }\r\n else if (pointerOrientation == \"down\") {\r\n textY = -textH - pointerLength;\r\n this._verticalOrientation = \"up\";\r\n }\r\n else {\r\n textY = pointerLength;\r\n this._verticalOrientation = \"down\";\r\n }\r\n }\r\n if (boundingRect) {\r\n textY = $math.fitToRange(textY, boundingRect.y - y, boundingRect.y + boundingRect.height - textH - y);\r\n }\r\n label.x = textX;\r\n label.y = textY;\r\n this.drawBackground();\r\n };\r\n /**\r\n * Overrides functionality from the superclass.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Tooltip.prototype.updateBackground = function () {\r\n this.group.addToBack(this.background.group);\r\n };\r\n /**\r\n * Draws Tooltip background (chrome, background and pointer/stem).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Tooltip.prototype.drawBackground = function () {\r\n var label = this.label;\r\n var background = this.background;\r\n var textWidth = label.measuredWidth;\r\n var textHeight = label.measuredHeight;\r\n var boundingRect = this._boundingRect;\r\n var bgWidth = textWidth;\r\n var bgX = label.pixelX - textWidth / 2;\r\n var bgHeight = textHeight;\r\n var bgY = label.pixelY;\r\n var x = this._pointTo.x;\r\n var y = this._pointTo.y;\r\n var boundX1 = boundingRect.x - x;\r\n var boundX2 = boundX1 + boundingRect.width;\r\n var boundY1 = boundingRect.y - y;\r\n var boundY2 = boundY1 + boundingRect.height;\r\n background.x = bgX;\r\n background.y = bgY;\r\n background.width = bgWidth;\r\n background.height = bgHeight;\r\n if (this.fitPointerToBounds) {\r\n background.pointerX = $math.fitToRange(-background.x, boundX1 - background.x, boundX2 - background.x);\r\n background.pointerY = $math.fitToRange(-background.y, boundY1 - background.y, boundY2 - background.y);\r\n }\r\n else {\r\n background.pointerX = -background.x;\r\n background.pointerY = -background.y;\r\n }\r\n background.validate();\r\n };\r\n /**\r\n *\r\n */\r\n Tooltip.prototype.delayedPointTo = function (point, instantly) {\r\n var _this = this;\r\n if (this._pointToDisposer) {\r\n this._pointToDisposer.dispose();\r\n }\r\n this._pointToDisposer = registry.events.once(\"exitframe\", function () {\r\n _this.pointTo(point, instantly);\r\n });\r\n this.addDisposer(this._pointToDisposer);\r\n };\r\n /**\r\n * Set nes tooltip's anchor point and moves whole tooltip.\r\n *\r\n * @param x X coordinate\r\n * @param y Y coordinate\r\n */\r\n Tooltip.prototype.pointTo = function (point, instantly) {\r\n if (this._pointTo.x != point.x || this._pointTo.y != point.y) {\r\n this._pointTo = point;\r\n this.invalidate();\r\n // this helps to avoid strange animation from nowhere on initial show or when balloon was hidden already\r\n if (!this.visible || instantly) {\r\n this.moveTo(this._pointTo);\r\n if (this._animation) {\r\n this._animation.kill();\r\n }\r\n }\r\n else {\r\n // helps to avoid flicker on top/left corner\r\n if (this.pixelX == 0 && this.pixelY == 0) {\r\n this.moveTo(this._pointTo);\r\n }\r\n else {\r\n if (this._animation) {\r\n this._animation.kill();\r\n }\r\n this._animation = new Animation(this, [{ property: \"x\", to: point.x, from: this.pixelX }, { property: \"y\", to: point.y, from: this.pixelY }], this.animationDuration, this.animationEasing).start();\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Sets numeric boundaries Tooltip needs to obey (so it does not go outside\r\n * specific area).\r\n *\r\n * @ignore Exclude from docs\r\n * @param rectangle Boundary rectangle\r\n */\r\n Tooltip.prototype.setBounds = function (rectangle) {\r\n var oldRect = this._boundingRect;\r\n if (oldRect.x != rectangle.x || oldRect.y != rectangle.y || oldRect.width != rectangle.width || oldRect.height != rectangle.height) {\r\n this._boundingRect = rectangle;\r\n this.invalidate();\r\n }\r\n };\r\n Object.defineProperty(Tooltip.prototype, \"boundingContainer\", {\r\n /**\r\n * Sets a [[Container]] instance to be used when calculating numeric\r\n * boundaries for the Tooltip.\r\n *\r\n * @ignore Exclude from docs\r\n * @param container Boundary container\r\n */\r\n set: function (container) {\r\n this._boundingContainer = container;\r\n // TODO remove closures ?\r\n container.events.on(\"sizechanged\", this.updateBounds, this);\r\n container.events.on(\"positionchanged\", this.updateBounds, this);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates numeric boundaries for the Tooltip, based on the\r\n * `boundingCountrainer`.\r\n */\r\n Tooltip.prototype.updateBounds = function () {\r\n var boundingContainer = this._boundingContainer;\r\n // to global\r\n var rect = $utils.spriteRectToSvg({\r\n x: boundingContainer.pixelX,\r\n y: boundingContainer.pixelY,\r\n width: boundingContainer.maxWidth,\r\n height: boundingContainer.maxHeight\r\n }, boundingContainer);\r\n this.setBounds(rect);\r\n };\r\n Object.defineProperty(Tooltip.prototype, \"ignoreBounds\", {\r\n /**\r\n * @return Ignore chart bounds?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"ignoreBounds\");\r\n },\r\n /**\r\n * Normally, a tooltip's position will be adjusted so it always fits into\r\n * chart's coundaries.\r\n *\r\n * Setting this to `false` will disable such checks and will allow tooltip\r\n * to \"bleed over\" the edge of the chart.\r\n *\r\n * @default false\r\n * @since 4.10.8\r\n * @param value Ignore chart bounds?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"ignoreBounds\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"verticalOrientation\", {\r\n /**\r\n * If tooltipOrientation is vertical, it can be drawn below or above point.\r\n * We need to know this when solving overlapping.\r\n *\r\n * @ignore Exclude from docs\r\n * @return \"up\" | \"down\"\r\n */\r\n get: function () {\r\n return this._verticalOrientation;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"tooltip\", {\r\n /**\r\n * To avoid stackoverflow\r\n * @ignore\r\n */\r\n get: function () {\r\n return undefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties and other attributes.\r\n *\r\n * @param source Source\r\n */\r\n Tooltip.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.label.copyFrom(source.label);\r\n if (source._boundingRect) {\r\n this._boundingRect = source._boundingRect;\r\n }\r\n };\r\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n Tooltip.prototype.asFunction = function (field) {\r\n return field == \"animationEasing\" || _super.prototype.asIs.call(this, field);\r\n };\r\n return Tooltip;\r\n}(Container));\r\nexport { Tooltip };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Tooltip\"] = Tooltip;\r\n","/**\r\n * Functionality for drawing a trapezoid.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw a Trapezoid.\r\n *\r\n * @see {@link ITrapezoidEvents} for a list of available events\r\n * @see {@link ITrapezoidAdapters} for a list of available Adapters\r\n */\r\nvar Trapezoid = /** @class */ (function (_super) {\r\n __extends(Trapezoid, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Trapezoid() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Trapezoid\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.topSide = percent(100);\r\n _this.bottomSide = percent(100);\r\n _this.leftSide = percent(100);\r\n _this.rightSide = percent(100);\r\n _this.isMeasured = false; // todo: add measureElement\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Trapezoid.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.pixelWidth;\r\n var h = this.pixelHeight;\r\n var ts = $utils.relativeToValue(this.topSide, w);\r\n var bs = $utils.relativeToValue(this.bottomSide, w);\r\n var ls = $utils.relativeToValue(this.leftSide, h);\r\n var rs = $utils.relativeToValue(this.rightSide, h);\r\n // 1----2\r\n // | |\r\n // 4----3\r\n var x0 = (w - ts) / 2;\r\n var y0 = (h - ls) / 2;\r\n var x1 = w - (w - ts) / 2;\r\n var y1 = (h - rs) / 2;\r\n var x2 = w - (w - bs) / 2;\r\n var y2 = h - (h - rs) / 2;\r\n var x3 = (w - bs) / 2;\r\n var y3 = h - (h - ls) / 2;\r\n var mt = \"\";\r\n var mr = \"\";\r\n var mb = \"\";\r\n var ml = \"\";\r\n if ($type.hasValue(this.horizontalNeck)) {\r\n var hn = this.horizontalNeck.value;\r\n mt = $path.lineTo({ x: w * hn, y: Math.max(y0, y1) });\r\n mb = $path.lineTo({ x: w * hn, y: Math.min(y2, y3) });\r\n }\r\n if ($type.hasValue(this.verticalNeck)) {\r\n var vn = this.verticalNeck.value;\r\n mr = $path.lineTo({ x: Math.min(x1, x2), y: h * vn });\r\n ml = $path.lineTo({ x: Math.max(x0, x3), y: h * vn });\r\n }\r\n var path = $path.moveTo({ x: x0, y: y0 })\r\n + mt\r\n + $path.lineTo({ x: x1, y: y1 })\r\n + mr\r\n + $path.lineTo({ x: x2, y: y2 })\r\n + mb\r\n + $path.lineTo({ x: x3, y: y3 })\r\n + ml;\r\n this.path = path;\r\n };\r\n Object.defineProperty(Trapezoid.prototype, \"topSide\", {\r\n /**\r\n * @return Width\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"topSide\");\r\n },\r\n /**\r\n * Wdith of the top side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Width\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"topSide\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Trapezoid.prototype, \"bottomSide\", {\r\n /**\r\n * @return Width\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"bottomSide\");\r\n },\r\n /**\r\n * Wdith of the bottom side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Width\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"bottomSide\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Trapezoid.prototype, \"leftSide\", {\r\n /**\r\n * @return Height\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"leftSide\");\r\n },\r\n /**\r\n * Height of the left side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Height\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"leftSide\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Trapezoid.prototype, \"rightSide\", {\r\n /**\r\n * @return Height\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"rightSide\");\r\n },\r\n /**\r\n * Height of the right side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Height\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"rightSide\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Trapezoid.prototype, \"horizontalNeck\", {\r\n /**\r\n * @return Horizontal neck position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"horizontalNeck\");\r\n },\r\n /**\r\n * A relative vertical position of the \"neck\". If the top and bottom sides\r\n * are of different width, and `horizontalNeck` is set, a choke point\r\n * will be created at that position, creating a funnel shape.\r\n *\r\n * @param value Horizontal neck position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"horizontalNeck\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Trapezoid.prototype, \"verticalNeck\", {\r\n /**\r\n * @return Vertical neck position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"verticalNeck\");\r\n },\r\n /**\r\n * A relative horizontal position of the \"neck\". If the left and right sides\r\n * are of different height, and `verticalNeck` is set, a choke point\r\n * will be created at that position, creating a funnel shape.\r\n *\r\n * @param value Vertical neck position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"verticalNeck\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Trapezoid;\r\n}(Sprite));\r\nexport { Trapezoid };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Trapezoid\"] = Trapezoid;\r\n","/**\r\n * Functionality for drawing triangles.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw a triangle.\r\n *\r\n * @see {@link ITriangleEvents} for a list of available events\r\n * @see {@link ITriangleAdapters} for a list of available Adapters\r\n */\r\nvar Triangle = /** @class */ (function (_super) {\r\n __extends(Triangle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Triangle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Triangle\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.direction = \"top\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Triangle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.pixelWidth;\r\n var h = this.pixelHeight;\r\n var path;\r\n switch (this.direction) {\r\n case \"right\":\r\n path = $path.moveTo({ x: 0, y: 0 })\r\n + $path.lineTo({ x: w, y: h / 2 })\r\n + $path.lineTo({ x: 0, y: h })\r\n + $path.closePath();\r\n break;\r\n case \"left\":\r\n path = $path.moveTo({ x: w, y: 0 })\r\n + $path.lineTo({ x: 0, y: h / 2 })\r\n + $path.lineTo({ x: w, y: h })\r\n + $path.closePath();\r\n break;\r\n case \"bottom\":\r\n path = $path.moveTo({ x: 0, y: 0 })\r\n + $path.lineTo({ x: w, y: 0 })\r\n + $path.lineTo({ x: w / 2, y: h })\r\n + $path.closePath();\r\n break;\r\n case \"top\":\r\n path = $path.moveTo({ x: w / 2, y: 0 })\r\n + $path.lineTo({ x: w, y: h })\r\n + $path.lineTo({ x: 0, y: h })\r\n + $path.closePath();\r\n break;\r\n }\r\n this.path = path;\r\n };\r\n Object.defineProperty(Triangle.prototype, \"direction\", {\r\n /**\r\n * Returns direction of a triangle\r\n *\r\n * @return value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"direction\");\r\n },\r\n /**\r\n * Sets direction of a triangle\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"direction\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Triangle;\r\n}(Sprite));\r\nexport { Triangle };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Triangle\"] = Triangle;\r\n","/**\r\n * Functionality for drawing waved circles.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Circle } from \"./Circle\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a waved circle.\r\n *\r\n * @see {@link IWavedCircleEvents} for a list of available events\r\n * @see {@link IWavedCircleAdapters} for a list of available Adapters\r\n */\r\nvar WavedCircle = /** @class */ (function (_super) {\r\n __extends(WavedCircle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function WavedCircle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"WavedCircle\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.waveLength = 16;\r\n _this.waveHeight = 4;\r\n _this.fill = undefined;\r\n _this.fillOpacity = 0;\r\n _this.tension = 0.8;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the waved line.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n WavedCircle.prototype.draw = function () {\r\n var path = \"\";\r\n var radius = this.pixelRadius;\r\n if (radius > 0) {\r\n var points = this.getPoints(radius);\r\n path = $path.moveTo(points[0]) + new $smoothing.Tension(this.tension, this.tension).smooth(points);\r\n }\r\n var innerRadius = this.pixelInnerRadius;\r\n if (innerRadius > 0) {\r\n var points = this.getPoints(innerRadius);\r\n points.reverse();\r\n path += $path.moveTo(points[0]) + new $smoothing.Tension(this.tension, this.tension).smooth(points);\r\n }\r\n this.path = path;\r\n };\r\n /**\r\n * Returns points that circle consists of.\r\n *\r\n * @param radius Radius (px)\r\n * @return Points\r\n */\r\n WavedCircle.prototype.getPoints = function (radius) {\r\n var circleLength = radius * Math.PI * 2;\r\n var halfWaveHeight = this.waveHeight / 2;\r\n var waveLength = circleLength / Math.round(circleLength / this.waveLength);\r\n var halfWaveLength = waveLength / 2;\r\n var points = [];\r\n var count = circleLength / waveLength;\r\n for (var i = 0; i <= count; i++) {\r\n var angle1 = (i * waveLength) / circleLength * 360;\r\n var angle2 = (i * waveLength + halfWaveLength) / circleLength * 360;\r\n points.push({ x: (radius - halfWaveHeight) * $math.cos(angle1), y: (radius - halfWaveHeight) * $math.sin(angle1) });\r\n points.push({ x: (radius + halfWaveHeight) * $math.cos(angle2), y: (radius + halfWaveHeight) * $math.sin(angle2) });\r\n }\r\n points.pop();\r\n return points;\r\n };\r\n Object.defineProperty(WavedCircle.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the circle in pixels (absolute) or [[Percent]] (relative).\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedCircle.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * Calculated inner radius of the circle in pixels.\r\n *\r\n * @readonly\r\n * @return Inner radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeToValue(this.innerRadius, $math.min(this.innerWidth / 2, this.innerHeight / 2));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedCircle.prototype, \"waveLength\", {\r\n /**\r\n * @return Wave length (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveLength\");\r\n },\r\n /**\r\n * Wave length in pixels.\r\n *\r\n * @default 16\r\n * @param value Wave length (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveLength\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedCircle.prototype, \"waveHeight\", {\r\n /**\r\n * @return Wave height (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveHeight\");\r\n },\r\n /**\r\n * Wave height in pixels.\r\n *\r\n * @default 4\r\n * @param value Wave height (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveHeight\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedCircle.prototype, \"tension\", {\r\n /**\r\n * @return Tension\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tension\");\r\n },\r\n /**\r\n * Tension of the wave.\r\n *\r\n * @default 0.8\r\n * @param value Tension\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tension\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return WavedCircle;\r\n}(Circle));\r\nexport { WavedCircle };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"WavedCircle\"] = WavedCircle;\r\n","/**\r\n * Functionality for drawing waved lines.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Line } from \"./Line\";\r\nimport { color } from \"../utils/Color\";\r\nimport { wavedLine } from \"../rendering/Smoothing\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a waved line.\r\n *\r\n * @see {@link IWavedLineEvents} for a list of available events\r\n * @see {@link IWavedLineAdapters} for a list of available Adapters\r\n */\r\nvar WavedLine = /** @class */ (function (_super) {\r\n __extends(WavedLine, _super);\r\n /**\r\n * Constructor\r\n */\r\n function WavedLine() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"WavedLine\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.waveLength = 16;\r\n _this.waveHeight = 4;\r\n _this.tension = 0.8;\r\n _this.pixelPerfect = false;\r\n _this.fill = color();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the waved line.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n WavedLine.prototype.draw = function () {\r\n //super.draw();\r\n var p1 = { x: this.x1, y: this.y1 };\r\n var p2 = { x: this.x2, y: this.y2 };\r\n this.path = $path.moveTo(p1) + wavedLine(p1, p2, this.waveLength, this.waveHeight, this.tension, true);\r\n };\r\n Object.defineProperty(WavedLine.prototype, \"waveLength\", {\r\n /**\r\n * @return Wave length (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveLength\");\r\n },\r\n /**\r\n * Wave length in pixels.\r\n *\r\n * @default 16\r\n * @param value Wave length (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveLength\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedLine.prototype, \"waveHeight\", {\r\n /**\r\n * @return Wave height (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveHeight\");\r\n },\r\n /**\r\n * Wave height in pixels.\r\n *\r\n * @default 4\r\n * @param value Wave height (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveHeight\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedLine.prototype, \"tension\", {\r\n /**\r\n * @return Tension\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tension\");\r\n },\r\n /**\r\n * Tension of the wave.\r\n *\r\n * @default 0.8\r\n * @param value Tension\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tension\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return WavedLine;\r\n}(Line));\r\nexport { WavedLine };\r\n","/**\r\n * Functionality for drawing rectangles with waved edges.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Rectangle } from \"./Rectangle\";\r\nimport { wavedLine } from \"../rendering/Smoothing\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a rectangle with waved edges.\r\n *\r\n * @see {@link IWavedRectangleEvents} for a list of available events\r\n * @see {@link IWavedRectangleAdapters} for a list of available Adapters\r\n */\r\nvar WavedRectangle = /** @class */ (function (_super) {\r\n __extends(WavedRectangle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function WavedRectangle() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"WavedRectangle\";\r\n // Add path element\r\n _this.element = _this.paper.add(\"path\");\r\n // Set defaults\r\n _this.waveLength = 16;\r\n _this.waveHeight = 4;\r\n _this.tension = 0.8;\r\n _this.setPropertyValue(\"wavedLeft\", true);\r\n _this.setPropertyValue(\"wavedRight\", true);\r\n _this.setPropertyValue(\"wavedTop\", true);\r\n _this.setPropertyValue(\"wavedBottom\", true);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the waved rectangle.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n WavedRectangle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.pixelWidth;\r\n var h = this.pixelHeight;\r\n if (w > 0 && h > 0) {\r\n var p1 = { x: 0, y: 0 };\r\n var p2 = { x: w, y: 0 };\r\n var p3 = { x: w, y: h };\r\n var p4 = { x: 0, y: h };\r\n var waveLengthH = Math.min(w, this.waveLength);\r\n var waveHeightH = Math.min(h, this.waveHeight);\r\n var waveLengthV = Math.min(h, this.waveLength);\r\n var waveHeightV = Math.min(w, this.waveHeight);\r\n var td = \"\";\r\n var rd = \"\";\r\n var bd = \"\";\r\n var ld = \"\";\r\n if (this.wavedTop) {\r\n td = wavedLine(p1, p2, waveLengthH, waveHeightH, this.tension, true);\r\n }\r\n if (this.wavedRight) {\r\n rd = wavedLine(p2, p3, waveLengthV, waveHeightV, this.tension, true);\r\n }\r\n if (this.wavedBottom) {\r\n bd = wavedLine(p3, p4, waveLengthH, waveHeightH, this.tension, true);\r\n }\r\n if (this.wavedLeft) {\r\n ld = wavedLine(p4, p1, waveLengthV, waveHeightV, this.tension, true);\r\n }\r\n this.path = $path.moveTo(p1) + td + $path.lineTo(p2) + rd + $path.lineTo(p3) + bd + $path.lineTo(p4) + ld + \"z\";\r\n }\r\n };\r\n Object.defineProperty(WavedRectangle.prototype, \"waveLength\", {\r\n /**\r\n * @return Wave length (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveLength\");\r\n },\r\n /**\r\n * Wave length in pixels.\r\n *\r\n * @default 16\r\n * @param value Wave length (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveLength\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedRectangle.prototype, \"waveHeight\", {\r\n /**\r\n * @return Wave height (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveHeight\");\r\n },\r\n /**\r\n * Wave height in pixels.\r\n *\r\n * @default 4\r\n * @param value Wave height (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveHeight\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets which side should be waved or not. If particular side is set to\r\n * `false`, a straight line will be drawn on that side.\r\n *\r\n * @param top Top waved?\r\n * @param right Right side waved?\r\n * @param bottom Bottom Waved?\r\n * @param left Left side waved?\r\n */\r\n WavedRectangle.prototype.setWavedSides = function (top, right, bottom, left) {\r\n this.wavedTop = top;\r\n this.wavedRight = right;\r\n this.wavedBottom = bottom;\r\n this.wavedLeft = left;\r\n };\r\n Object.defineProperty(WavedRectangle.prototype, \"tension\", {\r\n /**\r\n * @return Tension\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tension\");\r\n },\r\n /**\r\n * Tension of the wave.\r\n *\r\n * @default 0.8\r\n * @param value Tension\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tension\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedRectangle.prototype, \"wavedRight\", {\r\n /**\r\n * @return Wave right side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wavedRight\");\r\n },\r\n /**\r\n * Specifies if right side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"wavedRight\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedRectangle.prototype, \"wavedLeft\", {\r\n /**\r\n * @return Wave left side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wavedLeft\");\r\n },\r\n /**\r\n * Specifies if left side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"wavedLeft\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedRectangle.prototype, \"wavedTop\", {\r\n /**\r\n * @return Wave top side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wavedTop\");\r\n },\r\n /**\r\n * Specifies if top side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"wavedTop\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedRectangle.prototype, \"wavedBottom\", {\r\n /**\r\n * @return Wave bottom side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wavedBottom\");\r\n },\r\n /**\r\n * Specifies if bottom side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"wavedBottom\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return WavedRectangle;\r\n}(Rectangle));\r\nexport { WavedRectangle };\r\n","/**\r\n * Zoom out button functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link IZoomOutButtonEvents} for a list of available events\r\n * @see {@link IZoomOutButtonAdapters} for a list of available Adapters\r\n */\r\nvar ZoomOutButton = /** @class */ (function (_super) {\r\n __extends(ZoomOutButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ZoomOutButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"ZoomOutButton\";\r\n _this.padding(9, 9, 9, 9);\r\n //this.dx = - 5;\r\n //this.dy = 5;\r\n _this.showSystemTooltip = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n var background = _this.background;\r\n background.cornerRadius(20, 20, 20, 20);\r\n background.fill = interfaceColors.getFor(\"primaryButton\");\r\n background.stroke = interfaceColors.getFor(\"primaryButtonStroke\");\r\n background.strokeOpacity = 0;\r\n background.states.getKey(\"hover\").properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\r\n background.states.getKey(\"down\").properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\r\n // Create an icon\r\n var icon = new Sprite();\r\n icon.element = _this.paper.add(\"path\");\r\n var path = $path.moveTo({ x: 0, y: 0 });\r\n path += $path.lineTo({ x: 11, y: 0 });\r\n icon.path = path;\r\n icon.pixelPerfect = true;\r\n icon.padding(8, 3, 8, 3);\r\n icon.stroke = interfaceColors.getFor(\"primaryButtonText\");\r\n _this.icon = icon;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n ZoomOutButton.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Zoom Out\");\r\n }\r\n };\r\n return ZoomOutButton;\r\n}(Button));\r\nexport { ZoomOutButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ZoomOutButton\"] = ZoomOutButton;\r\n","/**\r\n * Export module.\r\n *\r\n * Parts of Export functionality rely on the following third party libraries:\r\n *\r\n * [canvg.js](https://github.com/canvg/canvg)\r\n * Copyright (c) Gabe Lerner\r\n * Licensed under [MIT](https://github.com/canvg/canvg/blob/master/LICENSE)\r\n *\r\n * [pdfmake](http://pdfmake.org/)\r\n * Copyright (c) 2014 bpampuch\r\n * Licensed under [MIT](https://github.com/bpampuch/pdfmake/blob/master/LICENSE)\r\n *\r\n * [SheetJS Community Edition](https://github.com/sheetjs/js-xlsx)\r\n * Licensed under [Apache License 2.0](https://github.com/SheetJS/js-xlsx/blob/master/LICENSE)\r\n *\r\n * [JSZip](http://stuartk.com/jszip)\r\n * Copyright (c) Stuart Knightley\r\n * Dual licenced under the [MIT license or GPLv3](https://raw.githubusercontent.com/Stuk/jszip/master/LICENSE.markdown).\r\n */\r\nimport { __awaiter, __extends, __generator } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ExportMenu } from \"./ExportMenu\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Modal } from \"../elements/Modal\";\r\nimport { List } from \"../utils/List\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport { DurationFormatter } from \"../formatters/DurationFormatter\";\r\nimport { NumberFormatter } from \"../formatters/NumberFormatter\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { Validatable } from \"../utils/Validatable\";\r\nimport { color } from \"../utils/Color\";\r\nimport { registry } from \"../Registry\";\r\nimport { options } from \"../Options\";\r\nimport { StyleRule, getComputedStyle } from \"../utils/DOM\";\r\nimport * as $browser from \"../utils/Browser\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $net from \"../utils/Net\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $log from \"../utils/Log\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $strings from \"../utils/Strings\";\r\n// This is used to cache the pdfmake loading\r\nvar pdfmakePromise;\r\n/**\r\n * Loads pdfmake dynamic module\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n * @async\r\n */\r\nfunction _pdfmake() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var a, pdfmake, vfs_fonts, global;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, Promise.all([\r\n import(/* webpackChunkName: \"pdfmake\" */ \"pdfmake/build/pdfmake.js\"),\r\n import(/* webpackChunkName: \"pdfmake\" */ \"../../pdfmake/vfs_fonts\")\r\n ])];\r\n case 1:\r\n a = _a.sent();\r\n pdfmake = a[0].default || a[0];\r\n vfs_fonts = a[1].default || a[1];\r\n global = window;\r\n global.pdfMake = global.pdfMake || {};\r\n global.pdfMake.vfs = vfs_fonts;\r\n pdfmake.vfs = vfs_fonts;\r\n return [2 /*return*/, pdfmake];\r\n }\r\n });\r\n });\r\n}\r\n// TODO better parsing\r\nvar fontFamilySrcRegexp = /src: ([^;]+);/;\r\n// TODO better checks\r\nfunction supportsBlobUri() {\r\n return window.navigator.msSaveOrOpenBlob != null;\r\n}\r\n// TODO move into utils or something ?\r\nfunction blobToDataUri(blob) {\r\n return new Promise(function (resolve, reject) {\r\n // TODO handle abort ?\r\n var f = new FileReader();\r\n f.onload = function (e) { resolve(f.result); };\r\n f.onerror = function (e) { reject(e); };\r\n f.readAsDataURL(blob);\r\n });\r\n}\r\nfunction getCssRules(s) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var sheet, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n sheet = s.sheet;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 2, , 4]);\r\n return [2 /*return*/, sheet.cssRules];\r\n case 2:\r\n e_1 = _a.sent();\r\n return [4 /*yield*/, new Promise(function (success, error) {\r\n s.addEventListener(\"load\", function () {\r\n success(sheet.cssRules);\r\n }, true);\r\n s.addEventListener(\"error\", function (e) {\r\n error(e);\r\n }, true);\r\n setTimeout(function () {\r\n error(new Error(\"Timeout while waiting for <style> to load\"));\r\n }, 10000);\r\n })];\r\n case 3: \r\n // Needed because of https://bugzilla.mozilla.org/show_bug.cgi?id=625013\r\n return [2 /*return*/, _a.sent()];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n// This loads a stylesheet by URL and then calls the function with it\r\n// TODO this should be moved into utils or something\r\nfunction loadStylesheet(doc, url, f) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_2, s, rules;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, $net.load(url)];\r\n case 1:\r\n response = _a.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_2 = _a.sent();\r\n console.error(\"Failed to load stylesheet\", url, e_2);\r\n return [2 /*return*/];\r\n case 3:\r\n s = doc.createElement(\"style\");\r\n s.textContent = response.response;\r\n if (options.nonce != \"\") {\r\n s.setAttribute(\"nonce\", options.nonce);\r\n }\r\n doc.head.appendChild(s);\r\n _a.label = 4;\r\n case 4:\r\n _a.trys.push([4, , 7, 8]);\r\n return [4 /*yield*/, getCssRules(s)];\r\n case 5:\r\n rules = _a.sent();\r\n return [4 /*yield*/, eachStylesheet(doc, url, rules, f)];\r\n case 6:\r\n _a.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n doc.head.removeChild(s);\r\n return [7 /*endfinally*/];\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n// This calls a function for each CSSRule inside of a CSSStyleSheet.\r\n// If the CSSStyleSheet has any @import, then it will recursively call the function for those CSSRules too.\r\n// TODO this should be moved into utils or something\r\nfunction eachStylesheet(doc, topUrl, rules, f) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises, length, i, rule, url;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n promises = [];\r\n length = rules.length;\r\n for (i = 0; i < length; i++) {\r\n rule = rules[i];\r\n if (rule.type === CSSRule.IMPORT_RULE) {\r\n url = rule.href;\r\n if (url) {\r\n url = $utils.joinUrl(topUrl, url);\r\n promises.push(loadStylesheet(doc, url, f));\r\n }\r\n }\r\n else {\r\n f(topUrl, rule);\r\n }\r\n }\r\n if (!promises.length) return [3 /*break*/, 2];\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n// This calls a function for each CSSRule for all of the stylesheets in the page.\r\n// If the CSSStyleSheet has any @import, then it will recursively call the function for those CSSRules too.\r\n// TODO this should be moved into utils or something\r\nfunction eachStylesheets(f) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var iframe, doc_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n iframe = document.createElement(\"iframe\");\r\n // This causes it to use the same origin policy as the parent page\r\n iframe.src = \"about:blank\";\r\n // This tries to make it more accessible for screen readers\r\n iframe.setAttribute(\"title\", \"\");\r\n document.head.appendChild(iframe);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 3, 4]);\r\n doc_1 = iframe.contentDocument;\r\n // TODO use $dom.getRoot instead of document ?\r\n return [4 /*yield*/, Promise.all($array.map(document.styleSheets, function (sheet) {\r\n var url = sheet.href;\r\n if (url == null) {\r\n return eachStylesheet(doc_1, location.href, sheet.cssRules, f);\r\n }\r\n else {\r\n url = $utils.joinUrl(location.href, url);\r\n return loadStylesheet(doc_1, url, f);\r\n }\r\n }))];\r\n case 2:\r\n // TODO use $dom.getRoot instead of document ?\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n document.head.removeChild(iframe);\r\n return [7 /*endfinally*/];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * [[Export]] allows downloading of current snapshot of the chart as an\r\n * image, PDF, or its data in various formats.\r\n *\r\n * The export functionality is enabled by default in charts and is accessible\r\n * via API or optional export menu.\r\n *\r\n * To enable menu, simply access export's `menu` property. E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * \"menu\": {}\r\n * }\r\n * }\r\n * ```\r\n *\r\n * To export via API, use `export()` method:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.export(type, [options]);\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.export(type, [options]);\r\n * ```\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.export(\"png\");\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.export(\"png\");\r\n * ```\r\n *\r\n * @todo Better loading indicator?\r\n * @todo Implement multiplier option\r\n * @todo Handling of hanged exports\r\n * @important\r\n */\r\nvar Export = /** @class */ (function (_super) {\r\n __extends(Export, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Export(container) {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * Holds options for each format.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._formatOptions = new Dictionary();\r\n /**\r\n * Extra [[Sprite]] elements to include in exports.\r\n */\r\n _this._extraSprites = [];\r\n /**\r\n * A list of [[Sprite]] elements that need to be valid before export\r\n * commences.\r\n */\r\n _this._validateSprites = [];\r\n /**\r\n * Holds an array of data field names. If set, exported data fields will try\r\n * to maintain this order.\r\n *\r\n * If not set (default), the export will try to maintain the same order as\r\n * in source data, or as in `dataFields` (if set).\r\n *\r\n * @since 4.9.7\r\n */\r\n _this.dataFieldsOrder = [];\r\n /**\r\n * Indicates whether data fields were generated dynamically (`true`) or\r\n * if they were pre-set by the user (`false`).\r\n */\r\n _this._dynamicDataFields = true;\r\n /**\r\n * Holds a list of objects that were temporarily removed from the DOM while\r\n * exporting. Those most probably are tainted images, or foreign objects that\r\n * would otherwise prevent SVG to be converted to canvas.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._removedObjects = new List();\r\n /**\r\n * Holds references to the objects that were temporarily hidden when export\r\n * started, so that we can reveal them back when export ends.\r\n */\r\n _this._hiddenObjects = [];\r\n /**\r\n * Indicates if non-exportable objects are now hidden;\r\n */\r\n _this._objectsAlreadyHidden = false;\r\n /**\r\n * Exported files will be prefixed with whatever it is set here.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._filePrefix = \"amCharts\";\r\n /**\r\n * If you are using web fonts (such as Google Fonts), your chart might be\r\n * using them as well.\r\n *\r\n * Normally, exporting to image will require to download these fonts so the\r\n * are carried over to exported image.\r\n *\r\n * This setting can be used to disable or enable this functionality.\r\n *\r\n * @default true\r\n */\r\n _this.useWebFonts = true;\r\n /**\r\n * Many modern displays have use more actual pixels per displayed pixel. This\r\n * results in sharper images on screen. Unfortunately, when exported to a\r\n * bitmap image of the sam width/height size it will lose those extra pixels,\r\n * resulting in somewhat blurry image.\r\n *\r\n * This is why we are going to export images larger than they are, so that we\r\n * don't lose any details.\r\n *\r\n * If you'd rather export images without change in size, set this to `false`.\r\n *\r\n * @default true\r\n */\r\n _this.useRetina = true;\r\n /**\r\n * By default Export will try to use built-in method for transforming chart\r\n * into an image for download, then fallback to external library (canvg) for\r\n * conversion if failed.\r\n *\r\n * Setting this to `false` will force use of external library for all export\r\n * operations.\r\n *\r\n * It might be useful to turn off simplified export if you are using strict\r\n * content security policies, that disallow images with blobs as their\r\n * source.\r\n *\r\n * @default true\r\n * @since 4.2.5\r\n */\r\n _this.useSimplifiedExport = true;\r\n /**\r\n * If export operation takes longer than milliseconds in this second, we will\r\n * show a modal saying export operation took longer than expected.\r\n */\r\n _this.timeoutDelay = 2000;\r\n _this._exportRunning = false;\r\n /**\r\n * Indicator used by [[Component]].\r\n *\r\n * @ignore\r\n */\r\n _this._prevHasData = false;\r\n _this._container = container;\r\n _this.className = \"Export\";\r\n // Set default options\r\n _this._formatOptions.setKey(\"png\", {});\r\n _this._formatOptions.setKey(\"jpg\", {\r\n quality: 0.8\r\n });\r\n _this._formatOptions.setKey(\"gif\", {});\r\n _this._formatOptions.setKey(\"svg\", {});\r\n _this._formatOptions.setKey(\"pdf\", {\r\n fontSize: 14,\r\n imageFormat: \"png\",\r\n align: \"left\",\r\n addURL: true,\r\n addColumnNames: true\r\n });\r\n _this._formatOptions.setKey(\"json\", {\r\n indent: 2,\r\n useLocale: true\r\n });\r\n _this._formatOptions.setKey(\"csv\", {\r\n addColumnNames: true,\r\n emptyAs: \"\",\r\n addBOM: true\r\n });\r\n _this._formatOptions.setKey(\"xlsx\", {\r\n addColumnNames: true,\r\n useLocale: true,\r\n emptyAs: \"\"\r\n });\r\n _this._formatOptions.setKey(\"html\", {\r\n addColumnNames: true,\r\n emptyAs: \"\"\r\n });\r\n _this._formatOptions.setKey(\"pdfdata\", {\r\n fontSize: 14,\r\n imageFormat: \"png\",\r\n addURL: true,\r\n addColumnNames: true,\r\n emptyAs: \"\"\r\n });\r\n _this._formatOptions.setKey(\"print\", {\r\n delay: 500,\r\n printMethod: \"iframe\"\r\n });\r\n // Add options adapter\r\n _this.adapter.add(\"options\", function (arg) {\r\n var formatOptions = _this._formatOptions.getKey(arg.type);\r\n if (arg.options) {\r\n arg.options = $object.merge(formatOptions, arg.options);\r\n }\r\n else {\r\n arg.options = formatOptions;\r\n }\r\n return arg;\r\n });\r\n _this.applyTheme();\r\n _this.dispatchImmediately(\"inited\");\r\n return _this;\r\n }\r\n Object.defineProperty(Export.prototype, \"menu\", {\r\n /**\r\n * @return ExportMenu instance\r\n */\r\n get: function () {\r\n return this._menu;\r\n },\r\n /**\r\n * An instance of [[ExportMenu]].\r\n *\r\n * To add an export menu to a chart, set this to a new instance of\r\n * [[ExportMenu]].\r\n *\r\n * ```TypeScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * \"menu\": {}\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @param menu ExportMenu instance\r\n */\r\n set: function (menu) {\r\n var _this = this;\r\n if (this._menu) {\r\n this.removeDispose(this._menu);\r\n }\r\n this._menu = menu;\r\n // Set container and language\r\n this._menu.container = this.container;\r\n this._menu.language = this._language;\r\n // Add adapter to check for browser support\r\n this._menu.adapter.add(\"branch\", function (arg) {\r\n arg.branch.unsupported = !_this.typeSupported(arg.branch.type);\r\n return arg;\r\n });\r\n // Add click events\r\n this._menu.events.on(\"hit\", function (ev) {\r\n _this.export(ev.branch.type, ev.branch.options);\r\n _this.menu.close();\r\n });\r\n this._menu.events.on(\"enter\", function (ev) {\r\n _this.export(ev.branch.type, ev.branch.options);\r\n _this.menu.close();\r\n });\r\n this._menu.events.on(\"over\", function (ev) {\r\n _this._disablePointers();\r\n });\r\n this._menu.events.on(\"out\", function (ev) {\r\n setTimeout(function () { _this._releasePointers(); }, 10);\r\n });\r\n // Dispatch event\r\n this.dispatchImmediately(\"menucreated\");\r\n // Prefix with Sprite's class name\r\n this._menu.adapter.add(\"classPrefix\", function (obj) {\r\n obj.classPrefix = options.classNamePrefix + obj.classPrefix;\r\n return obj;\r\n });\r\n // Add menu to disposers so that it's destroyed when Export is disposed\r\n this._disposers.push(this._menu);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if this specific menu item type is supported by current system.\r\n *\r\n * @param type Menu item type\r\n * @return `false` if not supported\r\n */\r\n Export.prototype.typeSupported = function (type) {\r\n var supported = true;\r\n var options = this.getFormatOptions(type);\r\n if ($type.hasValue(options) && options.disabled) {\r\n supported = false;\r\n }\r\n else if (type === \"pdf\") {\r\n //supported = this.downloadSupport();\r\n }\r\n else if (type === \"xlsx\") {\r\n //supported = (this.downloadSupport() && this._hasData()) ? true : false;\r\n supported = this._hasData() ? true : false;\r\n }\r\n else if (type == \"print\" && !window.print) {\r\n supported = false;\r\n }\r\n else if ([\"json\", \"csv\", \"html\", \"pdfdata\"].indexOf(type) !== -1 && !this._hasData()) {\r\n supported = false;\r\n }\r\n return this.adapter.apply(\"supported\", {\r\n supported: supported,\r\n type: type\r\n }).supported;\r\n };\r\n /**\r\n * Checks if data is available.\r\n *\r\n * @return Has data?\r\n */\r\n Export.prototype._hasData = function () {\r\n return this.data && this.data.length;\r\n };\r\n /**\r\n * Get function to handle export for particular format.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype._getFunction = function (type) {\r\n switch (type) {\r\n case \"png\":\r\n case \"gif\":\r\n case \"jpg\":\r\n return this.getImage;\r\n case \"svg\":\r\n return this.getSVG;\r\n case \"pdf\":\r\n case \"pdfdata\":\r\n return this.getPDF;\r\n case \"xlsx\":\r\n return this.getExcel;\r\n case \"csv\":\r\n return this.getCSV;\r\n case \"json\":\r\n return this.getJSON;\r\n case \"html\":\r\n return this.getHTML;\r\n case \"print\":\r\n return this.getPrint;\r\n default:\r\n return this.unsupported;\r\n }\r\n };\r\n /**\r\n * Initiates export procedure.\r\n *\r\n * @param type Export type\r\n * @param options Options\r\n * @return `true` if export was successful\r\n * @async\r\n */\r\n Export.prototype.export = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var event_1, func, data, event_2, event_3;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Check if it's a custom item, and do nothing or execute custom callback\r\n if (type == \"custom\") {\r\n this.handleCustom(options);\r\n return [2 /*return*/, true];\r\n }\r\n // Set export running flag\r\n this._exportRunning = true;\r\n // Dispatch event\r\n if (this.events.isEnabled(\"exportstarted\")) {\r\n event_1 = {\r\n \"type\": \"exportstarted\",\r\n \"target\": this,\r\n \"format\": type,\r\n \"options\": options\r\n };\r\n this.events.dispatchImmediately(\"exportstarted\", event_1);\r\n }\r\n // Schedule a preloader\r\n this.showPreloader();\r\n // Schedule a timeout\r\n if (this.timeoutDelay) {\r\n this.hideTimeout();\r\n this._timeoutTimeout = this.setTimeout(function () {\r\n // Dispatch event\r\n if (_this.events.isEnabled(\"exporttimedout\")) {\r\n var event_4 = {\r\n \"type\": \"exporttimedout\",\r\n \"target\": _this,\r\n \"format\": type,\r\n \"options\": options\r\n };\r\n _this.events.dispatchImmediately(\"exporttimedout\", event_4);\r\n }\r\n // Show modal\r\n _this.showTimeout();\r\n }, this.timeoutDelay);\r\n }\r\n // Hide items that should not be exported\r\n this.hideNonExportableSprites();\r\n func = this._getFunction(type);\r\n // Give chance for plugins to override both function and options\r\n options = this.adapter.apply(\"options\", {\r\n options: options,\r\n type: type\r\n }).options;\r\n func = this.adapter.apply(\"exportFunction\", {\r\n func: func,\r\n type: type,\r\n options: options\r\n }).func;\r\n return [4 /*yield*/, func.call(this, type, options)];\r\n case 1:\r\n data = _a.sent();\r\n // Release pointers\r\n this._exportRunning = false;\r\n this._releasePointers();\r\n // Restore temporarily hidden elements\r\n this.restoreNonExportableSprites();\r\n if (data) {\r\n // Dispatch event\r\n if (this.events.isEnabled(\"exportfinished\")) {\r\n event_2 = {\r\n \"type\": \"exportfinished\",\r\n \"target\": this,\r\n \"format\": type,\r\n \"options\": options\r\n };\r\n this.events.dispatchImmediately(\"exportfinished\", event_2);\r\n }\r\n // Hide preloader and timeout modals\r\n this.hidePreloader();\r\n this.hideTimeout();\r\n if (this.menu) {\r\n this.menu.close();\r\n }\r\n // Download or print\r\n if (type === \"print\") {\r\n return [2 /*return*/, this.print(data, options, this.adapter.apply(\"title\", {\r\n title: this.title,\r\n options: options\r\n }).title)];\r\n }\r\n else {\r\n if (type == \"pdfdata\") {\r\n return [2 /*return*/, this.download(data, this.filePrefix + \".pdf\")];\r\n }\r\n return [2 /*return*/, this.download(data, this.filePrefix + \".\" + type, (options && options.addBOM))];\r\n }\r\n }\r\n else {\r\n // Throw exception?\r\n // @todo\r\n // Dispatch event\r\n if (this.events.isEnabled(\"error\")) {\r\n event_3 = {\r\n \"type\": \"error\",\r\n \"target\": this,\r\n \"format\": type,\r\n \"options\": options\r\n };\r\n this.events.dispatchImmediately(\"error\", event_3);\r\n }\r\n return [2 /*return*/, false];\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * A function that should handle unsupported export types.\r\n *\r\n * @ignore Exclude from docs\r\n * @param type Export type\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.unsupported = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n // TODO should this return `undefined`?\r\n return [2 /*return*/, \"\"];\r\n });\r\n });\r\n };\r\n /**\r\n * Handles click on a \"custom\" menu item.\r\n *\r\n * Basically, if it has \"callback\" enabled, it will be called. Nothing else.\r\n *\r\n * @ignore Exclude from docs\r\n * @param options Options\r\n */\r\n Export.prototype.handleCustom = function (options) {\r\n if ($type.hasValue(options) && $type.hasValue(options.callback)) {\r\n options.callback.call(options.callbackTarget || this, options);\r\n }\r\n };\r\n /**\r\n * Requests a Print of the chart.\r\n *\r\n * @param type Export type\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getPrint = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.getImage(\"png\", options)];\r\n });\r\n });\r\n };\r\n /**\r\n * A function that returns data: URI encoded @font-family, so that way it can be embedded into SVG.\r\n *\r\n * @ignore Exclude from docs\r\n * @return String which can be embedded directly into a <style> element.\r\n * @async\r\n */\r\n Export.prototype.getFontFamilies = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var DOMURL, blobs, promises, a;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n DOMURL = this.getDOMURL();\r\n blobs = [];\r\n promises = [];\r\n return [4 /*yield*/, eachStylesheets(function (topUrl, rule) {\r\n if (rule.type === CSSRule.FONT_FACE_RULE) {\r\n var cssText_1 = rule.cssText;\r\n // TODO this is necessary because Edge doesn't let you access the src using getPropertyValue\r\n var src = fontFamilySrcRegexp.exec(cssText_1);\r\n if (src !== null) {\r\n // TODO make this faster (don't create Promises for non-url stuff)\r\n var urls = src[1].split(/ *, */).map(function (url) { return __awaiter(_this, void 0, void 0, function () {\r\n var a, after, fullUrl, response, url_1, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n a = /^url\\([\"']?([^\"'\\)]+)[\"']?\\)([^,]*)$/.exec(url);\r\n if (!(a === null)) return [3 /*break*/, 1];\r\n return [2 /*return*/, url];\r\n case 1:\r\n after = a[2];\r\n fullUrl = $utils.joinUrl(topUrl, a[1]);\r\n if (this.webFontFilter && !fullUrl.match(this.webFontFilter)) {\r\n return [2 /*return*/, null];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 7, , 8]);\r\n return [4 /*yield*/, $net.load(fullUrl, undefined, { responseType: \"blob\" })];\r\n case 3:\r\n response = _a.sent();\r\n if (!supportsBlobUri()) return [3 /*break*/, 4];\r\n url_1 = DOMURL.createObjectURL(response.blob);\r\n blobs.push(url_1);\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, blobToDataUri(response.blob)];\r\n case 5:\r\n url_1 = _a.sent();\r\n _a.label = 6;\r\n case 6: \r\n // TODO should it should escape the URI ?\r\n return [2 /*return*/, \"url(\\\"\" + url_1 + \"\\\")\" + after];\r\n case 7:\r\n e_3 = _a.sent();\r\n console.error(\"Failed to load font\", fullUrl, e_3);\r\n return [2 /*return*/, null];\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n promises.push(Promise.all(urls).then(function (a) {\r\n a = a.filter(function (x) { return x != null; });\r\n if (a.length === 0) {\r\n return \"\";\r\n }\r\n else {\r\n return cssText_1.replace(fontFamilySrcRegexp, \"src: \" + a.join(\", \") + \";\");\r\n }\r\n }));\r\n }\r\n }\r\n })];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 2:\r\n a = _a.sent();\r\n return [2 /*return*/, {\r\n blobs: blobs,\r\n cssText: a.filter(function (x) { return !!x; }).join(\"\\n\")\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Produces image output from the element.\r\n *\r\n * Converts to a `Canvas` first, then produces an image to download.\r\n *\r\n * This is an asynchronous function. Rather than returning a result, it\r\n * returns a Promise.\r\n *\r\n * You can use `await` notion from other async functions, or `then()`\r\n * anywhere else.\r\n *\r\n * ```TypeScript\r\n * let img;\r\n *\r\n * // Async\r\n * img = await chart.exporting.getImage( \"png\" );\r\n *\r\n * // Sync\r\n * chart.exporting.getImage( \"png\" ).then( ( data ) => {\r\n * img = data;\r\n * } );\r\n * ```\r\n * ```JavaScript\r\n * var img;\r\n * chart.exporting.getImage( \"png\" ).then( ( data ) => {\r\n * img = data;\r\n * } );\r\n * ```\r\n *\r\n * @param type Image format\r\n * @param options Options\r\n * @param includeExtras Should extra sprites be included if set?\r\n * @return Promise\r\n */\r\n Export.prototype.getImage = function (type, options, includeExtras) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var prehidden, canvas, newCanvas, uri, e_4, data, data;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n prehidden = this._objectsAlreadyHidden;\r\n if (!prehidden) {\r\n this.hideNonExportableSprites();\r\n }\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(type);\r\n }\r\n // Wait for required elements to be ready before proceeding\r\n return [4 /*yield*/, this.awaitValidSprites()];\r\n case 1:\r\n // Wait for required elements to be ready before proceeding\r\n _a.sent();\r\n return [4 /*yield*/, this.simplifiedImageExport()];\r\n case 2:\r\n if (!_a.sent()) return [3 /*break*/, 10];\r\n canvas = void 0;\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 7, , 9]);\r\n return [4 /*yield*/, this.getCanvas(options)];\r\n case 4:\r\n canvas = _a.sent();\r\n if (!(includeExtras !== false)) return [3 /*break*/, 6];\r\n return [4 /*yield*/, this.addExtras(canvas, options)];\r\n case 5:\r\n newCanvas = _a.sent();\r\n this.disposeCanvas(canvas);\r\n canvas = newCanvas;\r\n _a.label = 6;\r\n case 6:\r\n uri = canvas.toDataURL(this.getContentType(type), options.quality);\r\n // Get rid of the canvas\r\n this.disposeCanvas(canvas);\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, uri];\r\n case 7:\r\n e_4 = _a.sent();\r\n console.error(e_4.message + \"\\n\" + e_4.stack);\r\n $log.warn(\"Simple export failed, falling back to advanced export\");\r\n if (canvas) {\r\n this.disposeCanvas(canvas);\r\n }\r\n return [4 /*yield*/, this.getImageAdvanced(type, options, includeExtras)];\r\n case 8:\r\n data = _a.sent();\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, data];\r\n case 9: return [3 /*break*/, 12];\r\n case 10: return [4 /*yield*/, this.getImageAdvanced(type, options, includeExtras)];\r\n case 11:\r\n data = _a.sent();\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, data];\r\n case 12: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Adds extra elements to the canvas.\r\n *\r\n * @param canvas Original canvas\r\n * @param options Options\r\n */\r\n Export.prototype.addExtras = function (canvas, options, advanced) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var middleLeft_1, middleTop_1, middleWidth_1, middleHeight_1, extraRight_1, extraBottom_1, extras, newCanvas, ctx_1, background, left_1, top_1, right_1, bottom_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.extraSprites.length) return [3 /*break*/, 2];\r\n middleLeft_1 = 0;\r\n middleTop_1 = 0;\r\n middleWidth_1 = canvas.width;\r\n middleHeight_1 = canvas.height;\r\n extraRight_1 = 0;\r\n extraBottom_1 = 0;\r\n return [4 /*yield*/, Promise.all($array.map(this.extraSprites, function (extraSprite) { return __awaiter(_this, void 0, void 0, function () {\r\n var extra, extraCanvas, extraWidth, extraHeight;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (extraSprite instanceof Sprite) {\r\n extra = {\r\n sprite: extraSprite,\r\n position: \"bottom\"\r\n };\r\n }\r\n else {\r\n extra = extraSprite;\r\n }\r\n // Set defaults\r\n extra.position = extra.position || \"bottom\";\r\n extra.marginTop = extra.marginTop || 0;\r\n extra.marginRight = extra.marginRight || 0;\r\n extra.marginBottom = extra.marginBottom || 0;\r\n extra.marginLeft = extra.marginLeft || 0;\r\n if (!advanced) return [3 /*break*/, 2];\r\n return [4 /*yield*/, extra.sprite.exporting.getCanvasAdvanced(options)];\r\n case 1:\r\n extraCanvas = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 2: return [4 /*yield*/, extra.sprite.exporting.getCanvas(options)];\r\n case 3:\r\n extraCanvas = _a.sent();\r\n _a.label = 4;\r\n case 4:\r\n extraWidth = extraCanvas.width + extra.marginLeft + extra.marginRight;\r\n extraHeight = extraCanvas.height + extra.marginTop + extra.marginBottom;\r\n if (extra.position == \"top\") {\r\n middleWidth_1 = extra.crop ? middleHeight_1 : $math.max(middleWidth_1, extraWidth);\r\n middleTop_1 += extraHeight;\r\n }\r\n else if (extra.position == \"right\") {\r\n middleHeight_1 = extra.crop ? middleHeight_1 : $math.max(middleHeight_1, extraHeight);\r\n extraRight_1 += extraWidth;\r\n }\r\n else if (extra.position == \"left\") {\r\n middleHeight_1 = extra.crop ? middleHeight_1 : $math.max(middleHeight_1, extraHeight);\r\n middleLeft_1 += extraWidth;\r\n }\r\n else if (extra.position === \"bottom\") {\r\n middleWidth_1 = extra.crop ? middleHeight_1 : $math.max(middleWidth_1, extraWidth);\r\n extraBottom_1 += extraHeight;\r\n }\r\n return [2 /*return*/, {\r\n canvas: extraCanvas,\r\n position: extra.position,\r\n left: extra.marginLeft,\r\n top: extra.marginTop,\r\n width: extraWidth,\r\n height: extraHeight\r\n }];\r\n }\r\n });\r\n }); }))];\r\n case 1:\r\n extras = _a.sent();\r\n newCanvas = this.getDisposableCanvas();\r\n newCanvas.width = middleLeft_1 + middleWidth_1 + extraRight_1;\r\n newCanvas.height = middleTop_1 + middleHeight_1 + extraBottom_1;\r\n ctx_1 = newCanvas.getContext(\"2d\");\r\n background = this.backgroundColor || this.findBackgroundColor(this.sprite.dom);\r\n if (background) {\r\n ctx_1.fillStyle = background.toString();\r\n ctx_1.fillRect(0, 0, newCanvas.width, newCanvas.height);\r\n }\r\n left_1 = middleLeft_1;\r\n top_1 = middleTop_1;\r\n right_1 = left_1 + middleWidth_1;\r\n bottom_1 = top_1 + middleHeight_1;\r\n // Radiates outwards from center\r\n $array.each(extras, function (extra) {\r\n if (extra.position == \"top\") {\r\n top_1 -= extra.height;\r\n ctx_1.drawImage(extra.canvas, middleLeft_1 + extra.left, top_1 + extra.top);\r\n }\r\n else if (extra.position == \"right\") {\r\n ctx_1.drawImage(extra.canvas, right_1 + extra.left, middleTop_1 + extra.top);\r\n right_1 += extra.width;\r\n }\r\n else if (extra.position == \"left\") {\r\n left_1 -= extra.width;\r\n ctx_1.drawImage(extra.canvas, left_1 + extra.left, middleTop_1 + extra.top);\r\n }\r\n else if (extra.position === \"bottom\") {\r\n ctx_1.drawImage(extra.canvas, middleLeft_1 + extra.left, bottom_1 + extra.top);\r\n bottom_1 += extra.height;\r\n }\r\n _this.disposeCanvas(extra.canvas);\r\n });\r\n ctx_1.drawImage(canvas, middleLeft_1, middleTop_1);\r\n return [2 /*return*/, newCanvas];\r\n case 2: return [2 /*return*/, canvas];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns canvas representation of the [[Sprite]].\r\n *\r\n * @param options Options\r\n * @return Canvas\r\n */\r\n Export.prototype.getCanvas = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var background, DOMURL, url, blobs, canvas, width, height, font, fontSize, scale, pixelRatio, ctx, promises, a, data, svg, img;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Options are set?\r\n if (!$type.hasValue(options)) {\r\n options = {};\r\n }\r\n background = this.backgroundColor || this.findBackgroundColor(this.sprite.dom);\r\n DOMURL = this.getDOMURL();\r\n url = null;\r\n blobs = null;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 4, 5]);\r\n width = this.sprite.pixelWidth;\r\n height = this.sprite.pixelHeight;\r\n font = $dom.findFont(this.sprite.dom);\r\n fontSize = $dom.findFontSize(this.sprite.dom);\r\n scale = options.scale || 1;\r\n pixelRatio = this.getPixelRatio(options);\r\n // Check if scale needs to be updated as per min/max dimensions\r\n scale = this.getAdjustedScale(width * pixelRatio, height * pixelRatio, scale, options);\r\n // Create canvas and its 2D context\r\n canvas = this.getDisposableCanvas();\r\n // Set canvas width/height\r\n canvas.style.width = width * scale + 'px';\r\n canvas.style.height = height * scale + 'px';\r\n canvas.width = width * scale;\r\n canvas.height = height * scale;\r\n ctx = canvas.getContext(\"2d\");\r\n // if (pixelRatio != 1) {\r\n // \tctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\r\n // }\r\n // Add background if necessary\r\n if (background) {\r\n ctx.fillStyle = background.toString();\r\n ctx.fillRect(0, 0, width * scale, height * scale);\r\n }\r\n promises = [];\r\n if (this.useWebFonts) {\r\n // TODO what if one of the other things errors before it's been able to set `blobs` ?\r\n promises.push(this.getFontFamilies().then(function (fonts) {\r\n blobs = fonts.blobs;\r\n return fonts.cssText;\r\n }));\r\n }\r\n promises.push(this.imagesToDataURI(this.sprite.dom, options));\r\n promises.push(this.prepForeignObjects(this.sprite.dom, options));\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 2:\r\n a = _a.sent();\r\n data = this.normalizeSVG(\"<style>\" + a[0] + \"</style>\" + this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize);\r\n svg = new Blob([data], { type: \"image/svg+xml\" });\r\n url = DOMURL.createObjectURL(svg);\r\n return [4 /*yield*/, this.loadNewImage(url, width * scale * pixelRatio, height * scale * pixelRatio, \"anonymous\")];\r\n case 3:\r\n img = _a.sent();\r\n // Draw image on canvas\r\n ctx.drawImage(img, 0, 0);\r\n return [3 /*break*/, 5];\r\n case 4:\r\n if (url !== null) {\r\n DOMURL.revokeObjectURL(url);\r\n }\r\n if (blobs !== null) {\r\n $array.each(blobs, function (url) {\r\n DOMURL.revokeObjectURL(url);\r\n });\r\n }\r\n // Restore replaced tainted images in DOM\r\n this.restoreRemovedObjects();\r\n return [7 /*endfinally*/];\r\n case 5: return [2 /*return*/, canvas];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns canvas representation of the [[Sprite]] using canvg.\r\n *\r\n * @param options Options\r\n * @return Canvas\r\n */\r\n Export.prototype.getCanvasAdvanced = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var background, canvg, width, height, font, fontSize, scale, pixelRatio, data, canvas, config;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Options are set?\r\n if (!$type.hasValue(options)) {\r\n options = {};\r\n }\r\n // Convert external images to data uris\r\n return [4 /*yield*/, this.imagesToDataURI(this.sprite.dom, options)];\r\n case 1:\r\n // Convert external images to data uris\r\n _a.sent();\r\n background = this.backgroundColor || this.findBackgroundColor(this.sprite.dom);\r\n return [4 /*yield*/, this.canvg];\r\n case 2:\r\n canvg = _a.sent();\r\n width = this.sprite.pixelWidth;\r\n height = this.sprite.pixelHeight;\r\n font = $dom.findFont(this.sprite.dom);\r\n fontSize = $dom.findFontSize(this.sprite.dom);\r\n scale = options.scale || 1;\r\n pixelRatio = this.getPixelRatio(options);\r\n // Check if scale needs to be updated as per min/max dimensions\r\n scale = this.getAdjustedScale(width * pixelRatio, height * pixelRatio, scale, options);\r\n data = this.normalizeSVG(this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize, background);\r\n canvas = this.getDisposableCanvas();\r\n // Set canvas width/height\r\n canvas.style.width = (width * pixelRatio * scale) + 'px';\r\n canvas.style.height = (height * pixelRatio * scale) + 'px';\r\n canvas.width = width * pixelRatio * scale;\r\n canvas.height = height * pixelRatio * scale;\r\n config = {\r\n //ignoreDimensions: true,\r\n useCORS: true\r\n };\r\n if (pixelRatio != 1) {\r\n config.ignoreDimensions = true;\r\n config.scaleWidth = width * pixelRatio * scale;\r\n config.scaleHeight = height * pixelRatio * scale;\r\n }\r\n return [4 /*yield*/, canvg.fromString(canvas.getContext(\"2d\"), data, config).render()];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, canvas];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Tries to dynamically load [canvg.js](https://github.com/canvg/canvg) and\r\n * export an image using its functions.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Image format\r\n * @param options Options\r\n * @return Data uri\r\n */\r\n Export.prototype.getImageAdvanced = function (type, options, includeExtras) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var prehidden, canvas, uri;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n prehidden = this._objectsAlreadyHidden;\r\n if (!prehidden) {\r\n this.hideNonExportableSprites();\r\n }\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(type);\r\n }\r\n return [4 /*yield*/, this.getCanvasAdvanced(options)];\r\n case 1:\r\n canvas = _a.sent();\r\n if (!(includeExtras !== false)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, this.addExtras(canvas, options, true)];\r\n case 2:\r\n canvas = _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n uri = canvas.toDataURL(this.getContentType(type), options.quality);\r\n // Get rid of the canvas\r\n this.disposeCanvas(canvas);\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, uri];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates a `<canvas>` element and returns it.\r\n *\r\n * @return Canvas element\r\n */\r\n Export.prototype.getDisposableCanvas = function () {\r\n var canvas = document.createElement(\"canvas\");\r\n canvas.style.position = \"fixed\";\r\n canvas.style.top = \"-10000px\";\r\n document.body.appendChild(canvas);\r\n return canvas;\r\n };\r\n /**\r\n * Removes canvas.\r\n *\r\n * @param canvas Canvas element\r\n */\r\n Export.prototype.disposeCanvas = function (canvas) {\r\n if (document.body.contains(canvas)) {\r\n document.body.removeChild(canvas);\r\n }\r\n };\r\n /**\r\n * Returns pixel ratio for retina displays.\r\n *\r\n * @return Pixel ratio\r\n */\r\n Export.prototype.getPixelRatio = function (options) {\r\n // const scale = options && options.scale ? options.scale : 1;\r\n // return (this.useRetina ? $utils.getPixelRatio() : 1) * scale;\r\n return this.useRetina ? $utils.getPixelRatio() : 1;\r\n };\r\n /**\r\n * Calculates adjusted scale if image does not fit or is larger than min/max\r\n * settings.\r\n *\r\n * @param width Width of the source image\r\n * @param height Height of the source image\r\n * @param scale Current scale\r\n * @param options Options\r\n * @return Adjusted scale\r\n */\r\n Export.prototype.getAdjustedScale = function (width, height, scale, options) {\r\n if (!options) {\r\n return scale;\r\n }\r\n var adjWidth = width * scale;\r\n var adjHeight = width * scale;\r\n // Check max restrictions\r\n var widthScale;\r\n var heightScale;\r\n if (options.maxWidth && (adjWidth > options.maxWidth)) {\r\n widthScale = options.maxWidth / width;\r\n }\r\n if (options.maxHeight && (adjHeight > options.maxHeight)) {\r\n heightScale = options.maxHeight / height;\r\n }\r\n if (widthScale || heightScale) {\r\n return $math.min(widthScale, heightScale);\r\n }\r\n // Check min restrictions\r\n if (options.minWidth && (adjWidth < options.minWidth)) {\r\n widthScale = options.minWidth / width;\r\n }\r\n if (options.minHeight && (adjHeight < options.minHeight)) {\r\n heightScale = options.minHeight / height;\r\n }\r\n if (widthScale || heightScale) {\r\n return $math.max(widthScale, heightScale);\r\n }\r\n return scale;\r\n };\r\n /**\r\n * Converts all `<image>` tags in SVG to use data uris instead of external\r\n * URLs\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG node\r\n * @param options Options\r\n * @return Promise\r\n */\r\n Export.prototype.imagesToDataURI = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var images, promises, count, i, image, href;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n images = el.querySelectorAll(\"image\");\r\n if (!images.length) return [3 /*break*/, 2];\r\n promises = [];\r\n // There are images, process each of them\r\n for (count = images.length, i = 0; i < count; i++) {\r\n image = images[i];\r\n href = image.getAttributeNS(Export.XLINK, \"href\");\r\n // no href?\r\n if (!href) {\r\n continue;\r\n }\r\n if (href.indexOf(\"data:image\") !== -1) {\r\n // Ignore image if it's already in Data URI format\r\n }\r\n else {\r\n // SVG or bitmap image?\r\n if (href.indexOf(\".svg\") !== -1) {\r\n promises.push(this.svgToDataURI(image, options));\r\n }\r\n else {\r\n promises.push(this.imageToDataURI(image, options));\r\n }\r\n }\r\n }\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * `foreignObject` elements cannot be exported. This function hides them\r\n * temprarily. In the future it might try to convert them to SVG to make them\r\n * exportable.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG node\r\n * @param options Options\r\n * @return Promise\r\n */\r\n Export.prototype.prepForeignObjects = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var objects, count, i;\r\n return __generator(this, function (_a) {\r\n objects = el.querySelectorAll(\"foreignObject\");\r\n if (objects.length) {\r\n // There are foreign objects, process each of them\r\n for (count = objects.length, i = 0; i < count; i++) {\r\n this.temporarilyRemoveObject(objects[i]);\r\n }\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Converts an SVG `<image>` to use its data uri for `href` instead of\r\n * external file.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG element\r\n * @param options Options\r\n */\r\n Export.prototype.imageToDataURI = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var img, canvas, uri, e_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.loadNewImage(el.getAttributeNS(Export.XLINK, \"href\"), null, null, \"anonymous\")];\r\n case 1:\r\n // Create image\r\n img = _a.sent();\r\n canvas = document.createElement(\"canvas\");\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n // Draw new image on it via `toDataURL`\r\n canvas.getContext(\"2d\").drawImage(img, 0, 0);\r\n // Replace image `href` with data uri\r\n // If we got to this point it means image has loaded, however we might\r\n // still get an error with `toDataURL()`\r\n try {\r\n uri = canvas.toDataURL();\r\n el.setAttribute(\"href\", uri);\r\n return [2 /*return*/, uri];\r\n }\r\n catch (e) {\r\n // Give up and temporarily remove the element href temporarily\r\n if (options.keepTainted !== false) {\r\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": el.getAttributeNS(Export.XLINK, \"href\")\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n this.temporarilyRemoveObject(el);\r\n }\r\n return [2 /*return*/, undefined];\r\n }\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_5 = _a.sent();\r\n // Give up and temporarily remove the element's href\r\n if (!options || options.keepTainted !== false) {\r\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": el.getAttributeNS(Export.XLINK, \"href\")\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n this.temporarilyRemoveObject(el);\r\n }\r\n return [2 /*return*/, undefined];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Converts `<image>` with external SVG source to data uri. Loads external SVG\r\n * file, then converts it to data uri and replaces the `xlink:href` parameter.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el An SVG element\r\n * @param options Options\r\n */\r\n Export.prototype.svgToDataURI = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var href, data, charset, uri, e_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n href = el.getAttributeNS(Export.XLINK, \"href\");\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, $net.load(href)];\r\n case 2:\r\n data = _a.sent();\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"base64\",\r\n type: \"svg\",\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"svgToDataURI\", {\r\n data: \"data:\" + this.getContentType(\"svg\") + \";\" + charset + \",\" + btoa(data.response),\r\n options: options\r\n }).data;\r\n el.setAttributeNS(Export.XLINK, \"href\", uri);\r\n return [2 /*return*/, uri];\r\n case 3:\r\n e_6 = _a.sent();\r\n // Disable temporarily\r\n if (!options || options.keepTainted !== false) {\r\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": href\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n this.temporarilyRemoveObject(el);\r\n }\r\n return [2 /*return*/, undefined];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Temporarily removes element from DOM, and replaces it with a dummy\r\n * placeholder, as well as stores it for later restoration.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el Node\r\n */\r\n Export.prototype.temporarilyRemoveObject = function (el, placeholder) {\r\n // Get parent\r\n var parent = el.parentElement || el.parentNode;\r\n // Create a placeholder group element if it has not been passed in\r\n if (!placeholder) {\r\n placeholder = this.sprite.paper.add(\"g\").node;\r\n }\r\n parent.insertBefore(placeholder, el);\r\n // Check if we have a textContents we can replace with\r\n // @todo Perhaps we should explore alternatives to creating text nodes\r\n // i.e. creating a text version of the HTML-based Text, just for export\r\n // purposes. Converting HTML into SVG is very complicated\r\n if (el.textContent) {\r\n /*let text = this.sprite.paper.add(\"text\").node;\r\n text.textContent = el.textContent;\r\n placeholder.appendChild(text);\r\n\r\n // Copy properties from the removing element to the placeholder\r\n $dom.copyAttributes(el, placeholder);*/\r\n }\r\n // Remove the old element\r\n parent.removeChild(el);\r\n // Log removed item\r\n this._removedObjects.push({\r\n \"element\": el,\r\n \"placeholder\": placeholder\r\n });\r\n };\r\n /**\r\n * Restores all (possibly tainted or unsupported) objects that were\r\n * temporarily removed when exporting.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.restoreRemovedObjects = function () {\r\n var obj;\r\n while (true) {\r\n obj = this._removedObjects.pop();\r\n if (!obj) {\r\n break;\r\n }\r\n //obj.element.setAttribute(\"href\", obj.originalHref);\r\n var parent_1 = obj.placeholder.parentElement || obj.placeholder.parentNode;\r\n parent_1.insertBefore(obj.element, obj.placeholder);\r\n //parent.removeChild(obj.placeholder);\r\n }\r\n };\r\n /**\r\n * Checkes if simplified export can be used using `createObjectURL` and SVG\r\n * document does not contain any external images.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return `true` if simplified export can be used\r\n */\r\n Export.prototype.simplifiedImageExport = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cache, canvas, ctx, DOMURL, svg, url, img, e_7, e_8;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.useSimplifiedExport === false) {\r\n return [2 /*return*/, false];\r\n }\r\n cache = registry.getCache(\"simplifiedImageExport\");\r\n if (cache === false || cache === true) {\r\n return [2 /*return*/, cache];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, , 7]);\r\n canvas = document.createElement(\"canvas\");\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n ctx = canvas.getContext(\"2d\");\r\n DOMURL = this.getDOMURL();\r\n svg = new Blob([this.normalizeSVG(\"<g></g>\", {}, 1, 1)], { type: \"image/svg+xml\" });\r\n url = DOMURL.createObjectURL(svg);\r\n img = void 0;\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.loadNewImage(url, 1, 1)];\r\n case 3:\r\n img = _a.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_7 = _a.sent();\r\n return [2 /*return*/, false];\r\n case 5:\r\n ctx.drawImage(img, 0, 0);\r\n DOMURL.revokeObjectURL(url);\r\n try {\r\n //let uri = canvas.toDataURL(\"image/png\");\r\n registry.setCache(\"simplifiedImageExport\", true);\r\n return [2 /*return*/, true];\r\n }\r\n catch (e) {\r\n registry.setCache(\"simplifiedImageExport\", false);\r\n return [2 /*return*/, false];\r\n }\r\n return [3 /*break*/, 7];\r\n case 6:\r\n e_8 = _a.sent();\r\n registry.setCache(\"simplifiedImageExport\", false);\r\n return [2 /*return*/, false];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns a new `<image>` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param url URL of the image\r\n * @param width Width (px)\r\n * @param height Height (px)\r\n * @param crossOrigin Cross-Origin setting\r\n * @return Promise\r\n */\r\n Export.prototype.loadNewImage = function (url, width, height, crossOrigin) {\r\n return new Promise(function (success, error) {\r\n // New image\r\n var image;\r\n if (width && height) {\r\n image = new Image(width, height);\r\n }\r\n else {\r\n image = new Image();\r\n }\r\n // Set crossorigin\r\n if (crossOrigin) {\r\n image.setAttribute(\"crossOrigin\", crossOrigin);\r\n }\r\n // Report success on load\r\n image.onload = function () {\r\n success(image);\r\n };\r\n function onerror() {\r\n // Error occurred. Just in case it's the crossOrigin issue, let's try\r\n // stripping off this attribute and trying again\r\n if (crossOrigin) {\r\n // Retain old uri\r\n var currentHref = image.src;\r\n // Set up another `onerror` to handle situations where image is not\r\n // loadable at all (i.e. protected by CORS)\r\n image.onerror = function () {\r\n // Nope, no luck\r\n error(new Error(\"Loading image \\\"\" + url + \"\\\" failed\"));\r\n };\r\n // remove the `crossOrigin` attribute\r\n image.removeAttribute(\"crossorigin\");\r\n // retry\r\n image.src = \"\";\r\n image.src = currentHref;\r\n }\r\n else {\r\n error(new Error(\"Loading image \\\"\" + url + \"\\\" failed\"));\r\n }\r\n }\r\n // Set image error handlers\r\n image.onabort = onerror;\r\n image.onerror = onerror;\r\n // Trigger load\r\n image.src = url;\r\n });\r\n };\r\n /**\r\n * Returns current DOM URL.\r\n *\r\n * @ignore Exclude from docs\r\n * @return URL\r\n */\r\n Export.prototype.getDOMURL = function () {\r\n return self.URL || self.webkitURL || self;\r\n };\r\n /**\r\n * Returns an SVG representation of the chart.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n */\r\n Export.prototype.getSVG = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var prehidden, width, height, font, fontSize, scale, pixelRatio, svg, charset, uri;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n prehidden = this._objectsAlreadyHidden;\r\n if (!prehidden) {\r\n this.hideNonExportableSprites();\r\n }\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"svg\");\r\n }\r\n // Wait for required elements to be ready before proceeding\r\n return [4 /*yield*/, this.awaitValidSprites()];\r\n case 1:\r\n // Wait for required elements to be ready before proceeding\r\n _a.sent();\r\n width = this.sprite.pixelWidth;\r\n height = this.sprite.pixelHeight;\r\n font = $dom.findFont(this.sprite.dom);\r\n fontSize = $dom.findFontSize(this.sprite.dom);\r\n scale = options.scale || 1;\r\n pixelRatio = this.getPixelRatio(options);\r\n // Check if scale needs to be updated as per min/max dimensions\r\n scale = this.getAdjustedScale(width * pixelRatio, height * pixelRatio, scale, options);\r\n svg = this.normalizeSVG(this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize);\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: \"svg\",\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getSVG\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(svg) : svg,\r\n options: options\r\n }).data;\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, uri];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Checks if SVG is fully formatted. Encloses in `<svg>...</svg>` if\r\n * necessary.\r\n *\r\n * @ignore Exclude from docs\r\n * @param svg Input SVG\r\n * @param options Options\r\n * @param width Width of the SVG viewport\r\n * @param height Height of the SVG viewport\r\n * @param font Font family to use as a base\r\n * @param fontSize Font size to use as a base\r\n * @return Output SVG\r\n * @todo Add style params to existing <svg>\r\n */\r\n Export.prototype.normalizeSVG = function (svg, options, width, height, scale, font, fontSize, background) {\r\n // Construct width/height params\r\n var dimParams = \"\";\r\n if (width) {\r\n dimParams += \"width=\\\"\" + Math.round(width * (scale || 1)) + \"px\\\" \";\r\n }\r\n if (height) {\r\n dimParams += \"height=\\\"\" + Math.round(height * (scale || 1)) + \"px\\\" \";\r\n }\r\n // Apply font settings\r\n var styleParams = \"\";\r\n if (font) {\r\n styleParams += \"font-family: \" + font.replace(/\"/g, \"\") + \";\";\r\n }\r\n if (fontSize) {\r\n styleParams += \"font-size: \" + fontSize + \";\";\r\n }\r\n // Scale\r\n if (scale) {\r\n dimParams += \"viewBox=\\\"0 0 \" + (width) + \" \" + (height) + \"\\\" \";\r\n }\r\n // Remove foreign objects temporarily\r\n var fos = [];\r\n var ms = svg.match(/<foreignObject[\\s\\S]*<\\/foreignObject>/gi);\r\n if (ms) {\r\n for (var i = 0; i < ms.length; i++) {\r\n svg = svg.replace(ms[i], $strings.PLACEHOLDER);\r\n fos.push(ms[i]);\r\n }\r\n }\r\n // Add missing <svg> enclosure\r\n if (!svg.match(/<svg/)) {\r\n svg = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?><svg \" + dimParams + \" style=\\\"\" + styleParams + \"\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\" + svg + \"</svg>\";\r\n }\r\n else {\r\n if (dimParams !== \"\") {\r\n // Clear current params\r\n svg = svg.replace(/(<svg[^>]*)width=\"[^\"]*\"/, \"$1\");\r\n svg = svg.replace(/(<svg[^>]*)height=\"[^\"]*\"/, \"$1\");\r\n // Add new params\r\n svg = svg.replace(/(<svg)/, \"$1\" + dimParams);\r\n }\r\n /*if (styleParams !== \"\") {\r\n // Clear current params\r\n svg = svg.replace(/(<svg[^>]*)stylewidth=\"[^\"]*\"/, \"$1\");\r\n svg = svg.replace(/(<svg[^>]*)height=\"[^\"]*\"/, \"$1\");\r\n\r\n // Add new params\r\n svg = svg.replace(/(<svg)/, \"$1\" + dimParams);\r\n }*/\r\n }\r\n if (background) {\r\n svg = svg.replace(/(<svg[^>]*>)/, \"$1<rect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"\" + background.rgba + \"\\\"/>\");\r\n //svg = svg.replace(/<\\/svg>/, \"<rect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"\" + background.rgba + \"\\\"/></svg>\");\r\n }\r\n if ($browser.isInternetExplorer()) {\r\n // IE can't handle exporting <feColorMatrix> for some reason\r\n svg = svg.replace(/<feColorMatrix [^\\/>]*\\/>/gi, \"\");\r\n }\r\n // Remove base uri-related stuff\r\n var reg = new RegExp(\"url\\\\(\" + $utils.escapeForRgex($utils.getBaseURI()), \"g\");\r\n svg = svg.replace(reg, \"url(#\");\r\n // Remove escaped quotes in url() parameters\r\n svg = svg.replace(/url\\("([^)]*)"\\)/gm, \"url($1)\");\r\n // Put foreignObjects back in\r\n if (fos.length) {\r\n for (var i = 0; i < fos.length; i++) {\r\n svg = svg.replace($strings.PLACEHOLDER, fos[i]);\r\n }\r\n }\r\n svg = this.adapter.apply(\"normalizeSVG\", {\r\n data: svg,\r\n options: options\r\n }).data;\r\n return svg;\r\n };\r\n /**\r\n * Serializes an element and returns its contents.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element An element to serialize\r\n * @return A serialized XML\r\n */\r\n Export.prototype.serializeElement = function (element) {\r\n return new XMLSerializer().serializeToString(element);\r\n };\r\n /**\r\n * Returns a PDF containing chart image.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n * @todo Account for header when calculating vertical fit\r\n */\r\n Export.prototype.getPDF = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n function addFont(font) {\r\n var paths = {};\r\n paths.normal = font.normal.path;\r\n vfs[font.normal.path] = font.normal.bytes;\r\n if (font.bold) {\r\n paths.bold = font.bold.path;\r\n vfs[font.bold.path] = font.bold.bytes;\r\n }\r\n else {\r\n paths.bold = font.normal.path;\r\n }\r\n if (font.italics) {\r\n paths.italics = font.italics.path;\r\n vfs[font.italics.path] = font.italics.bytes;\r\n }\r\n else {\r\n paths.italics = font.normal.path;\r\n }\r\n if (font.bolditalics) {\r\n paths.bolditalics = font.bolditalics.path;\r\n vfs[font.bolditalics.path] = font.bolditalics.bytes;\r\n }\r\n else {\r\n paths.bolditalics = font.normal.path;\r\n }\r\n fonts[font.name] = paths;\r\n }\r\n var image, pdfmake, defaultMargins, doc, title, extraMargin, _a, _b, _c, fonts, vfs;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, this.getImage(options.imageFormat || \"png\", options)];\r\n case 1:\r\n image = _d.sent();\r\n return [4 /*yield*/, this.pdfmake];\r\n case 2:\r\n pdfmake = _d.sent();\r\n defaultMargins = [30, 30, 30, 30];\r\n doc = {\r\n pageSize: options.pageSize || \"A4\",\r\n pageOrientation: options.pageOrientation || \"portrait\",\r\n pageMargins: options.pageMargins || defaultMargins,\r\n defaultStyle: {\r\n font: options.font ? options.font.name : undefined\r\n },\r\n //header: <any>[],\r\n content: []\r\n };\r\n title = this.adapter.apply(\"title\", {\r\n title: this.title,\r\n options: options\r\n }).title;\r\n extraMargin = 0;\r\n if (title) {\r\n doc.content.push({\r\n text: title,\r\n fontSize: options.fontSize || 14,\r\n bold: true,\r\n margin: [0, 0, 0, 15]\r\n });\r\n // Add some leftover margin for title\r\n extraMargin += 50;\r\n }\r\n // Add page URL?\r\n if (options.addURL) {\r\n doc.content.push({\r\n text: this.language.translate(\"Saved from\") + \": \" + document.location.href,\r\n fontSize: options.fontSize,\r\n margin: [0, 0, 0, 15]\r\n });\r\n // Add some leftover margin for URL\r\n extraMargin += 50;\r\n }\r\n // Add image\r\n if (type != \"pdfdata\") {\r\n doc.content.push({\r\n image: image,\r\n alignment: options.align || \"left\",\r\n fit: this.getPageSizeFit(doc.pageSize, doc.pageMargins, extraMargin)\r\n });\r\n }\r\n if (!(type == \"pdfdata\" || options.addData)) return [3 /*break*/, 4];\r\n _b = (_a = doc.content).push;\r\n _c = {};\r\n return [4 /*yield*/, this.getPDFData(\"pdf\", options)];\r\n case 3:\r\n _b.apply(_a, [(_c.table = _d.sent(),\r\n _c.fontSize = options.fontSize || 14,\r\n _c)]);\r\n _d.label = 4;\r\n case 4:\r\n // Apply adapters\r\n doc = this.adapter.apply(\"pdfmakeDocument\", {\r\n doc: doc,\r\n options: options\r\n }).doc;\r\n fonts = null;\r\n vfs = null;\r\n if (options.font) {\r\n fonts = {};\r\n vfs = {};\r\n addFont(options.font);\r\n if (options.extraFonts) {\r\n $array.each(options.extraFonts, addFont);\r\n }\r\n }\r\n return [4 /*yield*/, new Promise(function (success, error) {\r\n pdfmake.createPdf(doc, null, fonts, vfs).getDataUrl(function (uri) {\r\n success(uri);\r\n });\r\n })];\r\n case 5: \r\n // Create PDF\r\n return [2 /*return*/, _d.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns chart's data formatted suitable for PDF export (pdfmake).\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @since 4.7.0\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getPDFData = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var content, dataFields, data, dataFieldsOrder_1, len, i;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n content = {\r\n \"body\": []\r\n };\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"pdf\"\r\n }).dataFields;\r\n data = this.data;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_1 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"pdfdata\"\r\n }).dataFieldsOrder;\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = data.length, i = 0; i < len; i++) {\r\n var dataValue = data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n content.body.push(_this.getPDFDataRow(dataRow, options, undefined, true));\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder_1.indexOf(a);\r\n var bi = dataFieldsOrder_1.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n else {\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n content.body.push(this.getPDFDataRow(dataFields, options, undefined, true));\r\n content.headerRows = 1;\r\n }\r\n for (len = data.length, i = 0; i < len; i++) {\r\n content.body.push(this.getPDFDataRow(data[i], options, dataFields));\r\n }\r\n }\r\n return [2 /*return*/, this.adapter.apply(\"pdfmakeTable\", {\r\n table: content,\r\n options: options\r\n }).table];\r\n });\r\n });\r\n };\r\n /**\r\n * Formats a row of data for use in PDF data table (pdfmake).\r\n *\r\n * @ignore Exclude from docs\r\n * @since 4.7.0\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated Data line\r\n */\r\n Export.prototype.getPDFDataRow = function (row, options, dataFields, asIs) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n // Init\r\n var items = [];\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"pdfdata\"\r\n }).dataFieldsOrder;\r\n // Process each row item\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\r\n item = \"\" + item;\r\n // Add to item\r\n items.push(item);\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n return items;\r\n };\r\n /**\r\n * Returns fit dimensions for available page sizes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pageSize Page size\r\n * @return `[width, height]` in pixels\r\n */\r\n Export.prototype.getPageSizeFit = function (pageSize, margins, extraMargin) {\r\n if (extraMargin === void 0) { extraMargin = 0; }\r\n // Check margins\r\n var newMargins = [0, 0, 0, 0];\r\n if (typeof margins == \"number\") {\r\n newMargins = [margins, margins, margins, margins];\r\n }\r\n else if (margins.length == 2) {\r\n newMargins = [margins[0], margins[1], margins[0], margins[1]];\r\n }\r\n else if (margins.length == 4) {\r\n newMargins = margins;\r\n }\r\n // Define available page sizes\r\n var sizes = {\r\n \"4A0\": [4767.87, 6740.79],\r\n \"2A0\": [3370.39, 4767.87],\r\n A0: [2383.94, 3370.39],\r\n A1: [1683.78, 2383.94],\r\n A2: [1190.55, 1683.78],\r\n A3: [841.89, 1190.55],\r\n A4: [595.28, 841.89],\r\n A5: [419.53, 595.28],\r\n A6: [297.64, 419.53],\r\n A7: [209.76, 297.64],\r\n A8: [147.40, 209.76],\r\n A9: [104.88, 147.40],\r\n A10: [73.70, 104.88],\r\n B0: [2834.65, 4008.19],\r\n B1: [2004.09, 2834.65],\r\n B2: [1417.32, 2004.09],\r\n B3: [1000.63, 1417.32],\r\n B4: [708.66, 1000.63],\r\n B5: [498.90, 708.66],\r\n B6: [354.33, 498.90],\r\n B7: [249.45, 354.33],\r\n B8: [175.75, 249.45],\r\n B9: [124.72, 175.75],\r\n B10: [87.87, 124.72],\r\n C0: [2599.37, 3676.54],\r\n C1: [1836.85, 2599.37],\r\n C2: [1298.27, 1836.85],\r\n C3: [918.43, 1298.27],\r\n C4: [649.13, 918.43],\r\n C5: [459.21, 649.13],\r\n C6: [323.15, 459.21],\r\n C7: [229.61, 323.15],\r\n C8: [161.57, 229.61],\r\n C9: [113.39, 161.57],\r\n C10: [79.37, 113.39],\r\n RA0: [2437.80, 3458.27],\r\n RA1: [1729.13, 2437.80],\r\n RA2: [1218.90, 1729.13],\r\n RA3: [864.57, 1218.90],\r\n RA4: [609.45, 864.57],\r\n SRA0: [2551.18, 3628.35],\r\n SRA1: [1814.17, 2551.18],\r\n SRA2: [1275.59, 1814.17],\r\n SRA3: [907.09, 1275.59],\r\n SRA4: [637.80, 907.09],\r\n EXECUTIVE: [521.86, 756.00],\r\n FOLIO: [612.00, 936.00],\r\n LEGAL: [612.00, 1008.00],\r\n LETTER: [612.00, 792.00],\r\n TABLOID: [792.00, 1224.00]\r\n };\r\n // Calculate size\r\n var fitSize = sizes[pageSize];\r\n fitSize[0] -= newMargins[0] + newMargins[2];\r\n fitSize[1] -= newMargins[1] + newMargins[3] + extraMargin;\r\n return fitSize;\r\n };\r\n /**\r\n * Returns an Excel file of chart's data.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n * @todo Handle dates\r\n * @todo Support for multi-sheet\r\n */\r\n Export.prototype.getExcel = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var XLSX, wbOptions, sheetName, wb, data, dataFields, dataFieldsOrder_2, len, i, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"xlsx\");\r\n }\r\n return [4 /*yield*/, this.xlsx];\r\n case 1:\r\n XLSX = _a.sent();\r\n wbOptions = this.adapter.apply(\"xlsxWorkbookOptions\", {\r\n xlsx: XLSX,\r\n options: {\r\n bookType: \"xlsx\",\r\n bookSST: false,\r\n type: \"base64\",\r\n }\r\n }).options;\r\n sheetName = this.normalizeExcelSheetName(this.adapter.apply(\"xlsxSheetName\", {\r\n xlsx: XLSX,\r\n name: this.title || this.language.translate(\"Data\")\r\n }).name);\r\n wb = {\r\n SheetNames: [sheetName],\r\n Sheets: {}\r\n };\r\n data = [];\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"xslx\"\r\n }).dataFields;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_2 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"xlsx\"\r\n }).dataFieldsOrder;\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = _this.data.length, i = 0; i < len; i++) {\r\n var dataValue = _this.data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n data.push(_this.getExcelRow(dataRow, options, undefined, true));\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder_2.indexOf(a);\r\n var bi = dataFieldsOrder_2.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n else {\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n data.push(this.getExcelRow(dataFields, options, undefined, true));\r\n }\r\n // Add lines\r\n for (len = this.data.length, i = 0; i < len; i++) {\r\n data.push(this.getExcelRow(this.data[i], options, dataFields));\r\n }\r\n }\r\n // Create sheet and add data\r\n wb.Sheets[sheetName] = XLSX.utils.aoa_to_sheet(data);\r\n // Apply adapters\r\n wb = this.adapter.apply(\"xlsxWorkbook\", {\r\n xlsx: XLSX,\r\n workbook: wb,\r\n options: options\r\n }).workbook;\r\n uri = this.adapter.apply(\"getExcel\", {\r\n data: \"data:\" + this.getContentType(type) + \";base64,\" + XLSX.write(wb, wbOptions),\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This is needed to work around Excel limitations.\r\n *\r\n * @param name Source name\r\n * @return Normalized name\r\n */\r\n Export.prototype.normalizeExcelSheetName = function (name) {\r\n name = name.replace(/([:\\\\\\/?*\\[\\]]+)/g, \" \");\r\n return $utils.truncateWithEllipsis(name, 31, \"...\", true);\r\n };\r\n /**\r\n * Rertuns an array of values to be used as Excel row.\r\n *\r\n * @ignore Exclude from docs\r\n * @param row Row data\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Array of values\r\n */\r\n Export.prototype.getExcelRow = function (row, options, dataFields, asIs) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n // Init\r\n var items = [];\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"xlsx\"\r\n }).dataFieldsOrder;\r\n // Process each row item\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options, true);\r\n items.push(item);\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n return items;\r\n };\r\n /**\r\n * Returns chart's data formatted as CSV.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getCSV = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var csv, dataFields, br, data, dataFieldsOrder_3, len, i, row, charset, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"csv\");\r\n }\r\n csv = \"\";\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"csv\"\r\n }).dataFields;\r\n br = \"\";\r\n data = this.data;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_3 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"csv\"\r\n }).dataFieldsOrder;\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = data.length, i = 0; i < len; i++) {\r\n var dataValue = data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n csv += br + _this.getCSVRow(dataRow, options, undefined, true);\r\n br = \"\\n\";\r\n }, function (a, b) {\r\n var ai = dataFieldsOrder_3.indexOf(a);\r\n var bi = dataFieldsOrder_3.indexOf(b);\r\n if (ai > bi) {\r\n return -1;\r\n }\r\n else if (ai < bi) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n else {\r\n for (len = data.length, i = 0; i < len; i++) {\r\n row = this.getCSVRow(data[i], options, dataFields);\r\n if (options.reverse) {\r\n csv = row + br + csv;\r\n }\r\n else {\r\n csv += br + row;\r\n }\r\n br = \"\\n\";\r\n }\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n csv = this.getCSVRow(dataFields, options, undefined, true) + br + csv;\r\n }\r\n }\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: type,\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getCSV\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(csv) : csv,\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n });\r\n });\r\n };\r\n /**\r\n * Formats a row of CSV data.\r\n *\r\n * @ignore Exclude from docs\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated CSV line\r\n */\r\n Export.prototype.getCSVRow = function (row, options, dataFields, asIs) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n // Init\r\n var separator = options.separator || \",\";\r\n var items = [];\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"csv\"\r\n }).dataFieldsOrder;\r\n // Process each row item\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Check if we need to skip\r\n // This is no longer required because we are iterating via dataFields anyway\r\n /*if ($type.hasValue(this.dataFields) && !$type.hasValue(this.dataFields[key])) {\r\n return;\r\n }*/\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\r\n // Cast and escape doublequotes\r\n item = \"\" + item;\r\n item = item.replace(/\"/g, '\"\"');\r\n // Enclose into double quotes\r\n if (options.forceQuotes || (item.search(new RegExp(\"\\\"|\\n|\" + separator, \"g\")) >= 0)) {\r\n item = \"\\\"\" + item + \"\\\"\";\r\n }\r\n // Add to item\r\n items.push(item);\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n return items.join(separator);\r\n };\r\n /**\r\n * Returns chart's data formatted as HTML table.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @since 4.7.0\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getHTML = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var html, dataFields, data, dataFieldsOrder_4, len, i, charset, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"html\");\r\n }\r\n html = \"<table>\";\r\n if (options.tableClass) {\r\n html = \"<table class=\\\"\" + options.tableClass + \"\\\">\";\r\n }\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"html\"\r\n }).dataFields;\r\n data = this.data;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_4 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"html\"\r\n }).dataFieldsOrder;\r\n html += \"\\n<tbody>\";\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = data.length, i = 0; i < len; i++) {\r\n var dataValue = data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n html += \"\\n\" + _this.getHTMLRow(dataRow, options, undefined, true);\r\n }, function (a, b) {\r\n var ai = dataFieldsOrder_4.indexOf(a);\r\n var bi = dataFieldsOrder_4.indexOf(b);\r\n if (ai > bi) {\r\n return -1;\r\n }\r\n else if (ai < bi) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n html += \"\\n</tbody>\";\r\n }\r\n else {\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n html += \"\\n<thead>\\n\" + this.getHTMLRow(dataFields, options, undefined, true, true) + \"\\n</thead>\";\r\n }\r\n html += \"\\n<tbody>\";\r\n for (len = data.length, i = 0; i < len; i++) {\r\n html += \"\\n\" + this.getHTMLRow(data[i], options, dataFields);\r\n }\r\n html += \"\\n</tbody>\";\r\n }\r\n html += \"\\n</table>\";\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: type,\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getHTML\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(html) : html,\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n });\r\n });\r\n };\r\n /**\r\n * Formats a row of HTML data.\r\n *\r\n * @since 4.7.0\r\n * @ignore Exclude from docs\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated HTML row\r\n */\r\n Export.prototype.getHTMLRow = function (row, options, dataFields, asIs, headerRow) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n if (headerRow === void 0) { headerRow = false; }\r\n // Init output\r\n var html = \"\\t<tr>\";\r\n if (options.rowClass) {\r\n html = \"\\t<tr class=\\\"\" + options.rowClass + \"\\\">\";\r\n }\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"html\"\r\n }).dataFieldsOrder;\r\n // th or dh?\r\n var tag = headerRow ? \"th\" : \"td\";\r\n // Process each row item\r\n var first = true;\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\r\n // Escape HTML entities\r\n item = \"\" + item;\r\n item = item.replace(/[\\u00A0-\\u9999<>\\&]/gim, function (i) {\r\n return \"&#\" + i.charCodeAt(0) + \";\";\r\n });\r\n // Which tag to use\r\n var useTag = tag;\r\n if (options.pivot && first) {\r\n useTag = \"th\";\r\n }\r\n // Add cell\r\n if (options.cellClass) {\r\n html += \"\\n\\t\\t<\" + useTag + \" class=\\\"\" + options.cellClass + \"\\\">\" + item + \"</\" + useTag + \">\";\r\n }\r\n else {\r\n html += \"\\n\\t\\t<\" + useTag + \">\" + item + \"</\" + useTag + \">\";\r\n }\r\n first = false;\r\n }, function (a, b) {\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n html += \"\\n\\t</tr>\";\r\n return html;\r\n };\r\n /**\r\n * Returns chart's data in JSON format.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getJSON = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var data, dataFields, sourceData, _loop_1, len, i, json, charset, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"json\");\r\n }\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"json\"\r\n }).dataFields;\r\n if (!this._dynamicDataFields) {\r\n data = [];\r\n sourceData = this.data;\r\n _loop_1 = function (len, i) {\r\n var value = sourceData[i];\r\n if (typeof value == \"object\") {\r\n var newValue_1 = {};\r\n $object.each(value, function (field, item) {\r\n if ($type.hasValue(dataFields[field])) {\r\n newValue_1[dataFields[field]] = _this.convertToSpecialFormat(field, item, options);\r\n }\r\n });\r\n data.push(newValue_1);\r\n }\r\n };\r\n for (len = sourceData.length, i = 0; i < len; i++) {\r\n _loop_1(len, i);\r\n }\r\n }\r\n else {\r\n data = this.data;\r\n }\r\n json = JSON.stringify(data, function (key, value) {\r\n if (typeof value == \"object\") {\r\n $object.each(value, function (field, item) {\r\n value[field] = _this.convertToSpecialFormat(field, item, options);\r\n });\r\n }\r\n return value;\r\n }, options.indent);\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: type,\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getJSON\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(json) : json,\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n });\r\n });\r\n };\r\n /**\r\n * Converts the value to proper date format.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param value Value\r\n * @param options Options\r\n * @param keepOriginal Will ignore formatting and will keep value as it is in data\r\n * @return Formatted date value or unmodified value\r\n */\r\n Export.prototype.convertToSpecialFormat = function (field, value, options, keepOriginal) {\r\n // Is this a timestamp or duration?\r\n if (typeof value == \"number\") {\r\n if (this.isDateField(field)) {\r\n value = new Date(value);\r\n }\r\n else if (this.isDurationField(field)) {\r\n return this.durationFormatter.format(value, this.durationFormat);\r\n }\r\n else if (this.isNumberField(field) && this.numberFormat) {\r\n return this.numberFormatter.format(value, this.numberFormat);\r\n }\r\n }\r\n if (value instanceof Date) {\r\n if (options.useTimestamps) {\r\n value = value.getTime();\r\n }\r\n else if (options.useLocale) {\r\n if (!keepOriginal) {\r\n value = value.toLocaleString();\r\n }\r\n }\r\n else {\r\n value = this.dateFormatter.format(value, this.dateFormat);\r\n }\r\n }\r\n else if ($type.isString(value) && this.isDateField(field) && this.dateFormat) {\r\n value = this.dateFormatter.format(this.dateFormatter.parse(value), this.dateFormat);\r\n }\r\n return value;\r\n };\r\n /**\r\n * Converts empty value based on `emptyAs` option.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.convertEmptyValue = function (field, value, options) {\r\n return $type.hasValue(value) ? value : options.emptyAs;\r\n };\r\n /**\r\n * Triggers download of the file.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param uri Data URI with file content\r\n * @param fileName File name\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.download = function (uri, fileName, addBOM) {\r\n if (addBOM === void 0) { addBOM = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parts, contentType, decoded, blob_1, chars, i, charCode, blob, link_1, parts, contentType, decoded, blob_2, url_2, chars, i, charCode, blob, url_3, link, parts, contentType, iframe, idoc;\r\n return __generator(this, function (_a) {\r\n if (this.msBlobDownloadSupport()) {\r\n parts = uri.split(\";\");\r\n contentType = parts.shift().replace(/data:/, \"\");\r\n uri = decodeURIComponent(parts.join(\";\").replace(/^[^,]*,/, \"\"));\r\n // Check if we need to Base64-decode\r\n if ([\"image/svg+xml\", \"application/json\", \"text/csv\"].indexOf(contentType) == -1) {\r\n try {\r\n decoded = atob(uri);\r\n uri = decoded;\r\n }\r\n catch (e) {\r\n // Error occurred, meaning string was not Base64-encoded. Do nothing.\r\n return [2 /*return*/, false];\r\n }\r\n }\r\n else {\r\n blob_1 = new Blob([uri], { type: contentType });\r\n window.navigator.msSaveBlob(blob_1, fileName);\r\n return [2 /*return*/, true];\r\n }\r\n chars = new Array(uri.length);\r\n for (i = 0; i < uri.length; ++i) {\r\n charCode = uri.charCodeAt(i);\r\n chars[i] = charCode;\r\n }\r\n blob = new Blob([new Uint8Array(chars)], { type: contentType });\r\n window.navigator.msSaveBlob(blob, fileName);\r\n }\r\n else if (this.blobDownloadSupport()) {\r\n link_1 = document.createElement(\"a\");\r\n link_1.download = fileName;\r\n document.body.appendChild(link_1);\r\n parts = uri.split(\";\");\r\n contentType = parts.shift().replace(/data:/, \"\");\r\n uri = decodeURIComponent(parts.join(\";\").replace(/^[^,]*,/, \"\"));\r\n if ([\"image/svg+xml\", \"application/json\", \"text/csv\", \"text/html\"].indexOf(contentType) == -1) {\r\n try {\r\n decoded = atob(uri);\r\n uri = decoded;\r\n }\r\n catch (e) {\r\n // Error occurred, meaning string was not Base64-encoded. Do nothing.\r\n return [2 /*return*/, false];\r\n }\r\n }\r\n else {\r\n if (addBOM) {\r\n uri = \"\\ufeff\" + uri;\r\n }\r\n blob_2 = new Blob([uri], { type: contentType });\r\n url_2 = window.URL.createObjectURL(blob_2);\r\n link_1.href = url_2;\r\n link_1.download = fileName;\r\n link_1.click();\r\n setTimeout(function () {\r\n document.body.removeChild(link_1);\r\n window.URL.revokeObjectURL(url_2);\r\n }, 100);\r\n return [2 /*return*/, true];\r\n }\r\n chars = new Array(uri.length);\r\n for (i = 0; i < uri.length; ++i) {\r\n charCode = uri.charCodeAt(i);\r\n chars[i] = charCode;\r\n }\r\n if (addBOM) {\r\n chars = [0xEF, 0xBB, 0xBF].concat(chars);\r\n }\r\n blob = new Blob([new Uint8Array(chars)], { type: contentType });\r\n url_3 = window.URL.createObjectURL(blob);\r\n link_1.href = url_3;\r\n link_1.download = fileName;\r\n document.body.appendChild(link_1);\r\n link_1.click();\r\n document.body.removeChild(link_1);\r\n setTimeout(function () {\r\n window.URL.revokeObjectURL(url_3);\r\n }, 100);\r\n }\r\n else if (this.linkDownloadSupport()) {\r\n link = document.createElement(\"a\");\r\n link.download = fileName;\r\n link.href = uri;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else if (this.legacyIE()) {\r\n parts = uri.match(/^data:(.*);[ ]*([^,]*),(.*)$/);\r\n if (parts.length === 4) {\r\n // Base64-encoded or text-based stuff?\r\n if (parts[2] == \"base64\") {\r\n // Base64-encoded - probably an image\r\n if (parts[1].match(/^image\\//)) {\r\n // Yep, an image. Let's create a temporary image placeholder,\r\n // so that user can use do Save As.\r\n this.showModal(\"<img src=\\\"\" + uri + \"\\\" style=\\\"float: left; max-width: 50%; max-height: 80%; margin: 0 1em 0.5em 0; border: 1px solid #eee;\\\" />\" +\r\n \"<p>\" + this.language.translate(\"To save the image, right-click thumbnail on the left and choose \\\"Save picture as...\\\"\") +\r\n \"</p>\" +\r\n \"<p style=\\\"text-align: center;\\\"><small>\" + this.language.translate(\"(Press ESC to close this message)\") + \"</small></p>\", this.language.translate(\"Image Export Complete\"));\r\n }\r\n }\r\n else {\r\n contentType = void 0;\r\n if (fileName.match(/\\.svg$/)) {\r\n contentType = \"image/svg+xml\";\r\n }\r\n else {\r\n contentType = \"text/plain\";\r\n fileName += \".txt\";\r\n }\r\n iframe = document.createElement(\"iframe\");\r\n iframe.width = \"1px\";\r\n iframe.height = \"1px\";\r\n iframe.style.display = \"none\";\r\n document.body.appendChild(iframe);\r\n idoc = iframe.contentDocument;\r\n idoc.open(contentType, \"replace\");\r\n // TODO test this with various encodings (e.g. UTF)\r\n //idoc.charset = parts[2].replace(/charset=/, \"\");\r\n idoc.write(decodeURIComponent(parts[3]));\r\n idoc.close();\r\n idoc.execCommand(\"SaveAs\", true, fileName);\r\n // Destroy the iframe\r\n document.body.removeChild(iframe);\r\n }\r\n }\r\n }\r\n else {\r\n /**\r\n * Something else - perhaps a mobile.\r\n * Let's just display it in the same page.\r\n * (hey we don't like it either)\r\n */\r\n window.location.href = uri;\r\n }\r\n return [2 /*return*/, true];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns `true` if browser has any supported methods to trigger download\r\n * of a binary file.\r\n *\r\n * @return Supports downloads?\r\n */\r\n Export.prototype.downloadSupport = function () {\r\n //return !this.legacyIE();\r\n return this.linkDownloadSupport() || this.msBlobDownloadSupport();\r\n };\r\n /**\r\n * Checks if the browser supports \"download\" attribute on links.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\r\n Export.prototype.linkDownloadSupport = function () {\r\n // Do we have this cached?\r\n var cache = registry.getCache(\"linkDownloadSupport\");\r\n if (cache === false || cache === true) {\r\n return cache;\r\n }\r\n var a = document.createElement(\"a\");\r\n var res = typeof a.download !== \"undefined\";\r\n registry.setCache(\"linkDownloadSupport\", res);\r\n return res;\r\n };\r\n /**\r\n * Checks if the browser supports download via `msBlob`.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\r\n Export.prototype.blobDownloadSupport = function () {\r\n return $type.hasValue(window.Blob);\r\n };\r\n /**\r\n * Checks if the browser supports download via `msBlob`.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\r\n Export.prototype.msBlobDownloadSupport = function () {\r\n return $type.hasValue(window.navigator.msSaveOrOpenBlob);\r\n };\r\n /**\r\n * Checks if this is a legacy version of IE.\r\n *\r\n * @ignore Exclude from docs\r\n * @return IE9 or less?\r\n */\r\n Export.prototype.legacyIE = function () {\r\n // Create a temporary <div> with conditional tags in it an an <i> tag.\r\n // Count <i>s. If there are some, we have IE9 or late on our hands.\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = \"<!--[if lt IE 10]><i></i><![endif]-->\";\r\n return div.getElementsByTagName(\"i\").length == 1;\r\n };\r\n /**\r\n * Initiates print of the chart.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param data Data URI for the image\r\n * @param options Options\r\n * @param title Optional title to use (uses window's title by default)\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.print = function (data, options, title) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (options.printMethod == \"css\") {\r\n return [2 /*return*/, this.printViaCSS(data, options, title)];\r\n }\r\n else {\r\n return [2 /*return*/, this.printViaIframe(data, options, title)];\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n Export.prototype.printViaCSS = function (data, options, title) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var scroll, rule, originalTitle, img, isIOS;\r\n return __generator(this, function (_a) {\r\n scroll = document.documentElement.scrollTop || document.body.scrollTop;\r\n rule = new StyleRule($dom.getShadowRoot(this.container), \"body > *\", {\r\n \"display\": \"none\",\r\n \"position\": \"fixed\",\r\n \"visibility\": \"hidden\",\r\n \"opacity\": \"0\",\r\n \"clipPath\": \"polygon(0px 0px,0px 0px,0px 0px,0px 0px);\"\r\n });\r\n if (title && document && document.title) {\r\n originalTitle = document.title;\r\n document.title = title;\r\n }\r\n img = new Image();\r\n img.src = data;\r\n img.style.maxWidth = \"100%\";\r\n img.style.display = \"block\";\r\n img.style.position = \"relative\";\r\n img.style.visibility = \"visible\";\r\n img.style.opacity = \"1\";\r\n img.style.clipPath = \"none\";\r\n document.body.appendChild(img);\r\n // Print\r\n this.setTimeout(function () {\r\n window.print();\r\n }, 50);\r\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n if (isIOS && (options.delay < 1000)) {\r\n options.delay = 1000;\r\n }\r\n else if (options.delay < 100) {\r\n options.delay = 100;\r\n }\r\n // Delay function that resets back the document the way ot was before\r\n this.setTimeout(function () {\r\n // Remove image\r\n document.body.removeChild(img);\r\n // Reset back all elements\r\n /*for (let len = items.length, i = 0; i < len; i++) {\r\n let item = <HTMLElement>items[i];\r\n if ($dom.isElement(item)) {\r\n item.style.display = states[i];\r\n }\r\n }*/\r\n rule.dispose();\r\n // Restore title\r\n if (originalTitle) {\r\n document.title = document.title;\r\n }\r\n // Scroll back the document the way it was before\r\n document.documentElement.scrollTop = document.body.scrollTop = scroll;\r\n }, options.delay || 500);\r\n return [2 /*return*/, true];\r\n });\r\n });\r\n };\r\n Export.prototype.printViaIframe = function (data, options, title) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var iframe, img, isIOS;\r\n return __generator(this, function (_a) {\r\n iframe = document.createElement(\"iframe\");\r\n iframe.style.visibility = \"hidden\";\r\n document.body.appendChild(iframe);\r\n // This is needed for FireFox\r\n iframe.contentWindow.document.open();\r\n iframe.contentWindow.document.close();\r\n img = new Image();\r\n img.src = data;\r\n img.style.maxWidth = \"100%\";\r\n img.style.height = \"auto\";\r\n if (title) {\r\n iframe.contentWindow.document.title = title;\r\n }\r\n iframe.contentWindow.document.body.appendChild(img);\r\n iframe.load = function () {\r\n iframe.contentWindow.document.body.appendChild(img);\r\n };\r\n // Print\r\n this.setTimeout(function () {\r\n try {\r\n if (!iframe.contentWindow.document.execCommand(\"print\", false, null)) {\r\n iframe.contentWindow.print();\r\n }\r\n }\r\n catch (e) {\r\n iframe.contentWindow.print();\r\n }\r\n }, options.delay || 50);\r\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n if (isIOS && (options.delay < 1000)) {\r\n options.delay = 1000;\r\n }\r\n else if (options.delay < 100) {\r\n options.delay = 100;\r\n }\r\n // Delay function that resets back the document the way ot was before\r\n this.setTimeout(function () {\r\n // Remove image\r\n document.body.removeChild(iframe);\r\n }, options.delay + 50 || 100);\r\n return [2 /*return*/, true];\r\n });\r\n });\r\n };\r\n /**\r\n * Finds a background color for the element. If element is transparent it goes\r\n * up the DOM hierarchy to find a parent element that does.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Color code\r\n */\r\n Export.prototype.findBackgroundColor = function (element) {\r\n // Check if element has styles set\r\n var opacity = 1, currentColor = getComputedStyle(element, \"background-color\");\r\n // Check opacity\r\n if (currentColor.match(/[^,]*,[^,]*,[^,]*,[ ]?0/) || currentColor == \"transparent\") {\r\n opacity = 0;\r\n }\r\n if (opacity == 0) {\r\n var parent_2 = element.parentElement; // || <Element>element.parentNode;\r\n // Completely transparent. Look for a parent\r\n if (parent_2) {\r\n return this.findBackgroundColor(parent_2);\r\n }\r\n else {\r\n return color(\"#fff\");\r\n }\r\n }\r\n else {\r\n return color(currentColor, opacity);\r\n }\r\n };\r\n Object.defineProperty(Export.prototype, \"container\", {\r\n /**\r\n * @return Reference\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"container\", {\r\n container: this._container\r\n }).container;\r\n },\r\n /**\r\n * A reference to a container to be used to place [[ExportMenu]] in.\r\n *\r\n * @param value Reference\r\n */\r\n set: function (value) {\r\n this._container = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"sprite\", {\r\n /**\r\n * @return Sprite\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"sprite\", {\r\n sprite: this._sprite\r\n }).sprite;\r\n },\r\n /**\r\n * A reference to [[Sprite]] to export. Can be any Sprite, including some\r\n * internal elements.\r\n *\r\n * @param value Sprite\r\n */\r\n set: function (value) {\r\n this._sprite = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"extraSprites\", {\r\n /**\r\n * @return Sprite\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"extraSprites\", {\r\n extraSprites: this._extraSprites\r\n }).extraSprites;\r\n },\r\n /**\r\n * An array of extra [[Sprite]] elements to include in export.\r\n *\r\n * It can be used to export any external elements, or even other charts.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.extraSprites.push(chart2);\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.extraSprites.push(chart2);\r\n * ```\r\n *\r\n * IMPORTANT: This setting is ignored when exporting to SVG format.\r\n *\r\n * @since 4.2.0\r\n * @param value Sprite\r\n */\r\n set: function (value) {\r\n this._extraSprites = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"validateSprites\", {\r\n /**\r\n * @return Sprite\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"validateSprites\", {\r\n validateSprites: this._validateSprites\r\n }).validateSprites;\r\n },\r\n /**\r\n * An array of [[Sprite]] elements that need to be valid before export\r\n * commences.\r\n *\r\n * If any of those elements is not completely ready when export is triggered,\r\n * the export will wait until they are (their `validated` event triggers)\r\n * before going through with the export opertaion.\r\n *\r\n * This is useful if you need to modify chart appearance for the export.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Add watermark\r\n * let watermark = chart.createChild(am4core.Label);\r\n * watermark.text = \"Copyright (C) 2019\";\r\n * watermark.disabled = true;\r\n *\r\n * // Add watermark to validated sprites\r\n * chart.exporting.validateSprites.push(watermark);\r\n *\r\n * // Enable watermark on export\r\n * chart.exporting.events.on(\"exportstarted\", function(ev) {\r\n * watermark.disabled = false;\r\n * });\r\n *\r\n * // Disable watermark when export finishes\r\n * chart.exporting.events.on(\"exportfinished\", function(ev) {\r\n * watermark.disabled = true;\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * // Add watermark\r\n * var watermark = chart.createChild(am4core.Label);\r\n * watermark.text = \"Copyright (C) 2019\";\r\n * watermark.disabled = true;\r\n *\r\n * // Add watermark to validated sprites\r\n * chart.exporting.validateSprites.push(watermark);\r\n *\r\n * // Enable watermark on export\r\n * chart.exporting.events.on(\"exportstarted\", function(ev) {\r\n * watermark.disabled = false;\r\n * });\r\n *\r\n * // Disable watermark when export finishes\r\n * chart.exporting.events.on(\"exportfinished\", function(ev) {\r\n * watermark.disabled = true;\r\n * });\r\n * ```\r\n *\r\n * @since 4.6.8\r\n * @param value Sprite\r\n */\r\n set: function (value) {\r\n this._validateSprites = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"data\", {\r\n /**\r\n * @return Data\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"data\", {\r\n data: this._data\r\n }).data;\r\n },\r\n /**\r\n * Data to export.\r\n *\r\n * @param value Data\r\n */\r\n set: function (value) {\r\n this._data = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"dataFields\", {\r\n /**\r\n * @return Field names `{ field: fieldName }`\r\n */\r\n get: function () {\r\n if (!this._dataFields) {\r\n this.generateDataFields();\r\n }\r\n return this.adapter.apply(\"dataFields\", {\r\n dataFields: this._dataFields\r\n }).dataFields;\r\n },\r\n /**\r\n * Data fields in `{ field: fieldName }` format. Those are used for\r\n * exporting in data formats to name the columns.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/exporting/#Changing_order_and_names_of_columns} for examples and details\r\n * @param value Field names\r\n */\r\n set: function (value) {\r\n this._dataFields = value;\r\n this._dynamicDataFields = false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Called after target chart's data updates.\r\n *\r\n * @ignore\r\n */\r\n Export.prototype.handleDataUpdated = function () {\r\n if (this._dynamicDataFields) {\r\n this._dataFields = undefined;\r\n }\r\n var hasData = this.data.length > 0;\r\n if (this._prevHasData != hasData) {\r\n this._prevHasData = hasData;\r\n if (this.menu) {\r\n this.menu.invalidate();\r\n }\r\n }\r\n };\r\n Object.defineProperty(Export.prototype, \"dateFormatter\", {\r\n /**\r\n * @return A DateFormatter instance\r\n */\r\n get: function () {\r\n if (!this._dateFormatter) {\r\n this._dateFormatter = new DateFormatter();\r\n this._dateFormatter.language = this.language;\r\n }\r\n return this.adapter.apply(\"dateFormatter\", {\r\n dateFormatter: this._dateFormatter\r\n }).dateFormatter;\r\n },\r\n /**\r\n * A [[DateFormatter]] to use when formatting dates when exporting data.\r\n *\r\n * @param value DateFormatter instance\r\n */\r\n set: function (value) {\r\n this._dateFormatter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"dateFormat\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"dateFormat\", {\r\n dateFormat: this._dateFormat\r\n }).dateFormat;\r\n },\r\n /**\r\n * A date format to use for exporting dates. Will use [[DateFormatter]]\r\n * format if not set.\r\n *\r\n * @param value Date format\r\n */\r\n set: function (value) {\r\n this._dateFormat = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"dateFields\", {\r\n /**\r\n * @return Date field list\r\n */\r\n get: function () {\r\n if (!this._dateFields) {\r\n this._dateFields = new List();\r\n }\r\n return this.adapter.apply(\"dateFields\", {\r\n dateFields: this._dateFields\r\n }).dateFields;\r\n },\r\n /**\r\n * A list of fields that hold date values.\r\n *\r\n * @param value Date field list\r\n */\r\n set: function (value) {\r\n this._dateFields = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"numberFormatter\", {\r\n /**\r\n * @return A NumberFormatter instance\r\n */\r\n get: function () {\r\n if (!this._numberFormatter) {\r\n this._numberFormatter = new NumberFormatter();\r\n this._numberFormatter.language = this.language;\r\n }\r\n return this.adapter.apply(\"numberFormatter\", {\r\n numberFormatter: this._numberFormatter\r\n }).numberFormatter;\r\n },\r\n /**\r\n * A [[NumberFormatter]] to use when formatting dates when exporting data.\r\n *\r\n * @since 4.5.15\r\n * @param value NumberFormatter instance\r\n */\r\n set: function (value) {\r\n this._numberFormatter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"numberFormat\", {\r\n /**\r\n * @return Number format\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"numberFormat\", {\r\n numberFormat: this._numberFormat\r\n }).numberFormat;\r\n },\r\n /**\r\n * A number format to use for exporting dates. Will use [[NumberFormatter]]\r\n * format if not set.\r\n *\r\n * @since 4.5.15\r\n * @param value Number format\r\n */\r\n set: function (value) {\r\n this._numberFormat = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"numberFields\", {\r\n /**\r\n * @return Number field list\r\n */\r\n get: function () {\r\n if (!this._numberFields) {\r\n this._numberFields = new List();\r\n }\r\n return this.adapter.apply(\"numberFields\", {\r\n numberFields: this._numberFields\r\n }).numberFields;\r\n },\r\n /**\r\n * A list of fields that hold number values.\r\n *\r\n * @since 4.5.15\r\n * @param value Number field list\r\n */\r\n set: function (value) {\r\n this._numberFields = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"durationFormatter\", {\r\n /**\r\n * @return A DurationFormatter instance\r\n */\r\n get: function () {\r\n if (!this._durationFormatter) {\r\n this._durationFormatter = new DurationFormatter();\r\n this._durationFormatter.language = this.language;\r\n }\r\n return this.adapter.apply(\"durationFormatter\", {\r\n durationFormatter: this._durationFormatter\r\n }).durationFormatter;\r\n },\r\n /**\r\n * A [[DurationFormatter]] to use when formatting duration values when\r\n * exporting data.\r\n *\r\n * @param value DurationFormatter instance\r\n */\r\n set: function (value) {\r\n this._durationFormatter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"durationFormat\", {\r\n /**\r\n * @return Duration format\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"durationFormat\", {\r\n durationFormat: this._durationFormat\r\n }).durationFormat;\r\n },\r\n /**\r\n * A format to use when formatting values from `durationFields`.\r\n * Will use [[DurationFormatter]] format if not set.\r\n *\r\n * @param value Duration format\r\n */\r\n set: function (value) {\r\n this._durationFormat = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"durationFields\", {\r\n /**\r\n * @return Duration field list\r\n */\r\n get: function () {\r\n if (!this._durationFields) {\r\n this._durationFields = new List();\r\n }\r\n return this.adapter.apply(\"durationFields\", {\r\n durationFields: this._durationFields\r\n }).durationFields;\r\n },\r\n /**\r\n * A list of fields that hold duration values.\r\n *\r\n * @param value Duration field list\r\n */\r\n set: function (value) {\r\n this._durationFields = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Generates data fields out of the first row of data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.generateDataFields = function () {\r\n var _this = this;\r\n this._dataFields = {};\r\n if (this.data.length) {\r\n $array.each(this.data, function (row) {\r\n $object.each(row, function (key, value) {\r\n if (!$type.hasValue(_this._dataFields[key])) {\r\n _this._dataFields[key] = _this.adapter.apply(\"dataFieldName\", {\r\n name: key,\r\n field: key\r\n }).name;\r\n }\r\n });\r\n });\r\n }\r\n };\r\n /**\r\n * Cheks against `dateFields` property to determine if this field holds\r\n * dates.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a date field\r\n */\r\n Export.prototype.isDateField = function (field) {\r\n return this.adapter.apply(\"isDateField\", {\r\n isDateField: this.dateFields.contains(field),\r\n field: field\r\n }).isDateField;\r\n };\r\n /**\r\n * Cheks against `numberFields` property to determine if this field holds\r\n * numbers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a number field\r\n */\r\n Export.prototype.isNumberField = function (field) {\r\n return this.adapter.apply(\"isNumberField\", {\r\n isNumberField: this.numberFields.contains(field),\r\n field: field\r\n }).isNumberField;\r\n };\r\n /**\r\n * Cheks against `durationFields` property to determine if this field holds\r\n * durations.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a date field\r\n */\r\n Export.prototype.isDurationField = function (field) {\r\n return this.adapter.apply(\"isDurationField\", {\r\n isDurationField: this.durationFields.contains(field),\r\n field: field\r\n }).isDurationField;\r\n };\r\n /**\r\n * Returns proper content type for the export type.\r\n *\r\n * @param type Export format/type\r\n * @return Proper content type, i.e. \"image/jpeg\"\r\n */\r\n Export.prototype.getContentType = function (type) {\r\n var contentType = \"\";\r\n switch (type) {\r\n case \"png\":\r\n case \"gif\":\r\n contentType = \"image/\" + type;\r\n break;\r\n case \"jpg\":\r\n contentType = \"image/jpeg\";\r\n break;\r\n case \"svg\":\r\n contentType = \"image/svg+xml\";\r\n break;\r\n case \"csv\":\r\n contentType = \"text/csv\";\r\n break;\r\n case \"json\":\r\n contentType = \"application/json\";\r\n break;\r\n case \"html\":\r\n contentType = \"text/html\";\r\n break;\r\n case \"pdf\":\r\n case \"pdfdata\":\r\n contentType = \"application/pdf\";\r\n break;\r\n case \"xlsx\":\r\n contentType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\r\n break;\r\n }\r\n return this.adapter.apply(\"contentType\", {\r\n contentType: contentType,\r\n type: type\r\n }).contentType;\r\n };\r\n Object.defineProperty(Export.prototype, \"filePrefix\", {\r\n /**\r\n * @return File prefix\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"filePrefix\", {\r\n filePrefix: this._filePrefix\r\n }).filePrefix;\r\n },\r\n /**\r\n * A file prefix to be used for all exported formats.\r\n *\r\n * Export will apply format-related extension to it. E.g. if this is set to\r\n * \"myExport\", the file name of the PNG exported image will be \"myExport.png\".\r\n *\r\n * @param value File prefix\r\n */\r\n set: function (value) {\r\n this._filePrefix = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"backgroundColor\", {\r\n /**\r\n * @return Background color\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"backgroundColor\", {\r\n backgroundColor: this._backgroundColor\r\n }).backgroundColor;\r\n },\r\n /**\r\n * A background color to be used for exported images. If set, this will\r\n * override the automatically acquired background color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this._backgroundColor = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"title\", {\r\n /**\r\n * @return Title\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"title\", {\r\n title: this._title\r\n }).title;\r\n },\r\n /**\r\n * A title to be used when printing.\r\n *\r\n * @param value Title\r\n */\r\n set: function (value) {\r\n this._title = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Displays a preloader/exporting indicator.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Add ability to change text\r\n */\r\n Export.prototype.showPreloader = function () {\r\n var preloader = this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.5;\r\n preloader.label.text = \"...\";\r\n }\r\n };\r\n /**\r\n * Hides preloader/exporting indicator\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.hidePreloader = function () {\r\n var preloader = this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n };\r\n Object.defineProperty(Export.prototype, \"preloader\", {\r\n /**\r\n * Returns a an instance of [[Preloader]] associated with the Sprite being\r\n * exported.\r\n *\r\n * @return Preloader\r\n */\r\n get: function () {\r\n return this._sprite && this._sprite.parent && this._sprite.parent.preloader ?\r\n this._sprite.parent.preloader :\r\n undefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Displays a modal saying export is taking longer than expected.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.showTimeout = function () {\r\n this.showModal(this.adapter.apply(\"timeoutMessage\", {\r\n message: this.language.translate(\"Export operation took longer than expected. Something might have gone wrong.\")\r\n }).message);\r\n };\r\n /**\r\n * Hides preloader/exporting indicator.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.hideTimeout = function () {\r\n if (this._timeoutTimeout) {\r\n this.removeDispose(this._timeoutTimeout);\r\n this._timeoutTimeout = null;\r\n }\r\n this.hideModal();\r\n };\r\n Object.defineProperty(Export.prototype, \"language\", {\r\n /**\r\n * @return A [[Language]] instance to be used\r\n */\r\n get: function () {\r\n if (!this._language) {\r\n this._language = new Language();\r\n }\r\n return this._language;\r\n },\r\n /**\r\n * A [[Language]] instance to be used for translations.\r\n *\r\n * @param value An instance of [[Language]]\r\n */\r\n set: function (value) {\r\n this._language = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"modal\", {\r\n /**\r\n * Returns (and creates) [[Modal]].\r\n *\r\n * @ignore Exclude from docs\r\n * @return Modal instance\r\n */\r\n get: function () {\r\n if (!this._modal) {\r\n this._modal = new Modal();\r\n // Prefix with Sprite's class name\r\n this._modal.adapter.add(\"classPrefix\", function (value) {\r\n value = options.classNamePrefix + value;\r\n return value;\r\n });\r\n }\r\n return this._modal;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Shows [[Modal]] with specific text.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Modal contents\r\n */\r\n Export.prototype.showModal = function (text, title) {\r\n // Hide previous modal and preloader\r\n this.hideModal();\r\n this.hidePreloader();\r\n // Create modal\r\n var modal = this.modal;\r\n modal.container = this.sprite.svgContainer.SVGContainer;\r\n modal.content = text;\r\n modal.readerTitle = title;\r\n modal.open();\r\n };\r\n /**\r\n * Hides modal window if one's currently open.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.hideModal = function () {\r\n if (this._modal) {\r\n this.modal.close();\r\n }\r\n };\r\n /**\r\n * Loads canvg dynamic module.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of canvg\r\n * @async\r\n */\r\n Export.prototype._canvg = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var canvg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, import(/* webpackChunkName: \"canvg\" */ \"../../canvg/index.js\")];\r\n case 1:\r\n canvg = (_a.sent());\r\n if (canvg.default != null) {\r\n return [2 /*return*/, canvg.default];\r\n }\r\n else {\r\n return [2 /*return*/, canvg];\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n Object.defineProperty(Export.prototype, \"canvg\", {\r\n /**\r\n * Returns canvg instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of canvg\r\n */\r\n get: function () {\r\n return this._canvg();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"pdfmake\", {\r\n /**\r\n * Returns pdfmake instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n */\r\n get: function () {\r\n if (pdfmakePromise == null) {\r\n pdfmakePromise = _pdfmake();\r\n }\r\n return pdfmakePromise;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Loads xlsx dynamic module.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n * @async\r\n */\r\n Export.prototype._xlsx = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, import(/* webpackChunkName: \"xlsx\" */ \"../../bundled/xlsx\")];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n Object.defineProperty(Export.prototype, \"xlsx\", {\r\n /**\r\n * Returns xlsx instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n */\r\n get: function () {\r\n return this._xlsx();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets options for a format.\r\n */\r\n Export.prototype.setFormatOptions = function (type, options) {\r\n this._formatOptions.setKey(type, options);\r\n };\r\n /**\r\n * Returns current options for a format.\r\n */\r\n Export.prototype.getFormatOptions = function (type) {\r\n return this._formatOptions.getKey(type);\r\n };\r\n Object.defineProperty(Export.prototype, \"formatOptions\", {\r\n /**\r\n * A [[Dictionary]] object containing format-specific options.\r\n *\r\n * May be used to change specific option for the format:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.formatOptions.getKey(\"csv\").disabled = true;\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.formatOptions.getKey(\"csv\").disabled = true;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * // ...\r\n * \"formatOptions\": {\r\n * \"csv\": {\r\n * \"disabled\": true\r\n * }\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @since 4.9.12\r\n * @return Options\r\n */\r\n get: function () {\r\n return this._formatOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Disables interactivity on parent chart.\r\n */\r\n Export.prototype._disablePointers = function () {\r\n if (!$type.hasValue(this._spriteInteractionsEnabled)) {\r\n this._spriteInteractionsEnabled = this.sprite.interactionsEnabled;\r\n }\r\n this.sprite.interactionsEnabled = false;\r\n };\r\n /**\r\n * Releases temporarily disabled pointers on parent chart.\r\n */\r\n Export.prototype._releasePointers = function () {\r\n if ($type.hasValue(this._spriteInteractionsEnabled) && !this._exportRunning) {\r\n this.sprite.interactionsEnabled = this._spriteInteractionsEnabled;\r\n }\r\n };\r\n /**\r\n * Hides all elements that should not be included in the exported image.\r\n */\r\n Export.prototype.hideNonExportableSprites = function () {\r\n var _this = this;\r\n if (this._objectsAlreadyHidden) {\r\n return;\r\n }\r\n var svgContainer = this.sprite.svgContainer;\r\n if (svgContainer) {\r\n $array.each(svgContainer.nonExportableSprites, function (item) {\r\n if (!item.isHidden && !item.isHiding && item.visible) {\r\n _this._hiddenObjects.push(item);\r\n }\r\n item.hide(0);\r\n });\r\n }\r\n this._objectsAlreadyHidden = true;\r\n };\r\n /**\r\n * Respores elements that were hidden before export.\r\n */\r\n Export.prototype.restoreNonExportableSprites = function () {\r\n if (!this._objectsAlreadyHidden) {\r\n return;\r\n }\r\n $array.each(this._hiddenObjects, function (item) {\r\n item.show(0);\r\n });\r\n this._hiddenObjects = [];\r\n this._objectsAlreadyHidden = false;\r\n };\r\n /**\r\n * Checks if there are elements that absolutely need to be validated before\r\n * export.\r\n *\r\n * If there are invalid elements, it will await for them to be validated.\r\n *\r\n * @return Promise\r\n */\r\n Export.prototype.awaitValidSprites = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n promises = [];\r\n if (this.validateSprites.length) {\r\n $array.each(this.validateSprites, function (sprite, index) {\r\n if (sprite.invalid) {\r\n promises.push(new Promise(function (resolve, reject) {\r\n sprite.events.once(\"validated\", function (ev) {\r\n resolve();\r\n });\r\n }));\r\n }\r\n });\r\n }\r\n if (!promises.length) return [3 /*break*/, 2];\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Export.prototype.processConfig = function (config) {\r\n registry.registeredClasses[\"ExportMenu\"] = ExportMenu;\r\n if (config) {\r\n // Set up menu\r\n if ($type.hasValue(config.menu) && !$type.hasValue(config.menu.type)) {\r\n config.menu.type = \"ExportMenu\";\r\n }\r\n if ($type.hasValue(config.dataFields) && $type.isObject(config.dataFields)) {\r\n this.dataFields = config.dataFields;\r\n delete config.dataFields;\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * XLINK namespace definition.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.XLINK = \"http://www.w3.org/1999/xlink\";\r\n return Export;\r\n}(Validatable));\r\nexport { Export };\r\n","import { StyleRule } from \"../utils/DOM\";\r\nimport { InterfaceColorSet } from \"../utils/InterfaceColorSet\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { MultiDisposer, CounterDisposer } from \"../utils/Disposer\";\r\nvar rules = new Dictionary();\r\n/**\r\n * A dynamically-loadable CSS module for Export menu.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prefix Prefix to addtach to class names\r\n * @return A MultiDisposer with style rules\r\n */\r\nexport default function (element, prefix) {\r\n var newPrefix = (prefix ? prefix : \"amexport\");\r\n var colorSet = new InterfaceColorSet();\r\n var counter = rules.insertKeyIfEmpty(newPrefix, function () {\r\n var disposer = new MultiDisposer([\r\n /*new StyleRule(`.${newPrefix}-menu`, {\r\n \"opacity\": \"0.3\",\r\n \"transition\": \"all 100ms ease-in-out\",\r\n }),\r\n\r\n new StyleRule(`div:hover .${newPrefix}-menu, .${newPrefix}-menu.active`, {\r\n \"opacity\": \"0.9\",\r\n }),*/\r\n new StyleRule(element, \".\" + newPrefix + \"-menu *\", {\r\n \"box-sizing\": \"border-box\"\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0\", {\r\n \"position\": \"absolute\",\r\n \"top\": \"5px\",\r\n \"right\": \"5px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-left\", {\r\n \"right\": \"auto\",\r\n \"left\": \"5px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-right\", {\r\n \"right\": \"5px\",\r\n \"left\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-top\", {\r\n \"top\": \"5px\",\r\n \"bottom\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-bottom\", {\r\n \"top\": \"auto\",\r\n \"bottom\": \"5px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0\", {\r\n \"opacity\": \"0.3\",\r\n \"width\": \"30px\",\r\n \"min-height\": \"30px\",\r\n \"transition\": \"all 100ms ease-in-out\",\r\n }),\r\n new StyleRule(element, \"div:hover > div > .\" + newPrefix + \"-menu .\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0, .\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0.active\", {\r\n \"opacity\": \"0.9\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0 > a\", {\r\n \"padding\": \"0\",\r\n \"text-align\": \"center\",\r\n \"overflow\": \"hidden\"\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0:before\", {\r\n \"display\": \"block\"\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item\", {\r\n \"position\": \"relative\",\r\n \"display\": \"block\",\r\n \"opacity\": \"0\",\r\n \"z-index\": \"1\",\r\n \"border-radius\": \"3px\",\r\n \"background-color\": colorSet.getFor(\"secondaryButton\").hex,\r\n \"padding\": \"0\",\r\n \"margin\": \"1px 1px 0 0\",\r\n \"color\": colorSet.getFor(\"secondaryButton\").alternative.hex,\r\n \"transition\": \"all 100ms ease-in-out, opacity 0.5s ease 0.5s\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-left .\" + newPrefix + \"-item\", {\r\n \"margin\": \"1px 0 0 1px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item:hover, .\" + newPrefix + \"-item.active\", {\r\n \"background\": colorSet.getFor(\"secondaryButtonHover\").hex,\r\n \"color\": colorSet.getFor(\"secondaryButtonText\").hex,\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"position\": \"absolute\",\r\n \"top\": \"-1px\",\r\n \"right\": \"0\",\r\n \"margin-right\": \"100%\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-left .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"left\": \"0\",\r\n \"right\": \"auto\",\r\n \"margin-left\": \"100%\",\r\n \"margin-right\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-right .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"left\": \"auto\",\r\n \"right\": \"0\",\r\n \"margin-left\": \"auto\",\r\n \"margin-right\": \"100%\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-top .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"top\": \"-1px\",\r\n \"bottom\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-bottom .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"top\": \"auto\",\r\n \"bottom\": \"0\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"display\": \"none\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item:hover > .\" + newPrefix + \"-menu, .\" + newPrefix + \"-item.active > .\" + newPrefix + \"-menu\", {\r\n \"display\": \"block\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item:hover > .\" + newPrefix + \"-menu > .\" + newPrefix + \"-item, .\" + newPrefix + \"-item.active > .\" + newPrefix + \"-menu > .\" + newPrefix + \"-item\", {\r\n \"opacity\": \"1\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu\", {\r\n \"display\": \"block\",\r\n \"list-style\": \"none\",\r\n \"margin\": \"0\",\r\n \"padding\": \"0\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-label\", {\r\n \"display\": \"block\",\r\n \"cursor\": \"default\",\r\n \"padding\": \"0.5em 1em\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-icon\", {\r\n \"display\": \"block\",\r\n \"cursor\": \"default\",\r\n \"padding\": \"0.2em 0.4em\",\r\n \"width\": \"1.2em\",\r\n \"height\": \"1.2em\",\r\n \"min-width\": \"32px\",\r\n \"min-height\": \"32px\",\r\n \"margin\": \"auto auto\",\r\n \"border-radius\": \"3px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item-level-0 > .\" + newPrefix + \"-icon\", {\r\n \"padding\": \"0.1em 0.2em\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-clickable\", {\r\n \"cursor\": \"pointer\",\r\n }),\r\n ]);\r\n return new CounterDisposer(function () {\r\n rules.removeKey(newPrefix);\r\n disposer.dispose();\r\n });\r\n });\r\n return counter.increment();\r\n}\r\n","/**\r\n * ExportMenu provides functionality for building Export menu\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport exportCSS from \"./ExportCSS\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { List } from \"../utils/List\";\r\nimport { getInteraction } from \"../interaction/Interaction\";\r\nimport { MutableValueDisposer } from \"../utils/Disposer\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { Validatable } from \"../utils/Validatable\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a menu for Export operations.\r\n *\r\n * To add an export menu to a chart, set this to a new instance of\r\n * [[ExportMenu]].\r\n *\r\n * ```TypeScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * \"menu\": {}\r\n * }\r\n * }\r\n * ```\r\n * @important\r\n */\r\nvar ExportMenu = /** @class */ (function (_super) {\r\n __extends(ExportMenu, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ExportMenu() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * An [[Adapter]].\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * How many milliseconds to hold menu/sub-menu open after it loses focus or\r\n * hover, before auto-closing it.\r\n *\r\n * @default 1000\r\n */\r\n _this.closeDelay = 1000;\r\n /**\r\n * Close the menu automatically when some export operation is triggered.\r\n *\r\n * @default true\r\n * @since 4.2.2\r\n */\r\n _this.closeOnClick = true;\r\n /**\r\n * An instance of [[Language]].\r\n */\r\n _this._language = new MutableValueDisposer();\r\n /**\r\n * What HTML tags to use to build menu.\r\n */\r\n _this._menuTag = \"ul\";\r\n /**\r\n * Which tag to use to enclose individual menu items.\r\n */\r\n _this._itemTag = \"li\";\r\n /**\r\n * Tag to wrap menu item labels in.\r\n */\r\n _this._labelTag = \"a\";\r\n /**\r\n * Tag to use for icons\r\n */\r\n _this._iconTag = \"img\";\r\n /**\r\n * Prefix for class names applied to menu elements.\r\n */\r\n _this._classPrefix = \"amexport\";\r\n /**\r\n * If set to `true` [[ExportMenu]] will load it's own external CSS when\r\n * instantiated.\r\n */\r\n _this._defaultStyles = true;\r\n /**\r\n * Horizontal positioning.\r\n */\r\n _this._align = \"right\";\r\n /**\r\n * Vertical positioning.\r\n */\r\n _this._verticalAlign = \"top\";\r\n /**\r\n * A tabindex to apply to Export Menu.\r\n */\r\n _this._tabindex = 0;\r\n /**\r\n * Whether next menu close event should be ignored.\r\n */\r\n _this._ignoreNextClose = false;\r\n /**\r\n * Default menu items.\r\n */\r\n _this._items = [\r\n {\r\n \"label\": \"...\",\r\n \"menu\": [\r\n {\r\n \"label\": \"Image\",\r\n \"menu\": [\r\n { \"type\": \"png\", \"label\": \"PNG\" },\r\n { \"type\": \"jpg\", \"label\": \"JPG\" },\r\n { \"type\": \"svg\", \"label\": \"SVG\" },\r\n { \"type\": \"pdf\", \"label\": \"PDF\" }\r\n ]\r\n }, {\r\n \"label\": \"Data\",\r\n \"menu\": [\r\n { \"type\": \"json\", \"label\": \"JSON\" },\r\n { \"type\": \"csv\", \"label\": \"CSV\" },\r\n { \"type\": \"xlsx\", \"label\": \"XLSX\" },\r\n { \"type\": \"html\", \"label\": \"HTML\" },\r\n { \"type\": \"pdfdata\", \"label\": \"PDF\" }\r\n ]\r\n }, {\r\n \"label\": \"Print\", \"type\": \"print\"\r\n }\r\n ]\r\n }\r\n ];\r\n _this.className = \"ExportMenu\";\r\n _this._disposers.push(_this._language);\r\n _this.invalidate();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)draws the Export menu.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ExportMenu.prototype.validate = function () {\r\n this.draw();\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * Draws the menu based on current items.\r\n *\r\n * Normally, there's no need to call this explicitly. The chart, if it has\r\n * export menu enabled, will automatically draw the menu.\r\n */\r\n ExportMenu.prototype.draw = function () {\r\n var _this = this;\r\n // Create top-level menu item, or clear it\r\n if (!this._element) {\r\n this._element = this.createMenuElement(0);\r\n }\r\n else {\r\n this._element.innerHTML = \"\";\r\n this._element.className = this.getMenuItemClass(0);\r\n }\r\n // See if we're loading external CSS\r\n // Hide it until CSS is loaded\r\n if (this.defaultStyles) {\r\n this._element.style.display = \"none\";\r\n }\r\n // Append to container\r\n $type.getValue(this._container).appendChild(this._element);\r\n // Apply adapter to menu items before processing\r\n var items = this.adapter.apply(\"items\", {\r\n items: this._items\r\n }).items;\r\n for (var len = items.length, i = 0; i < len; i++) {\r\n this.drawBranch(this._element, items[i], 0);\r\n }\r\n // Apply adapter to finalized menu element\r\n this._element = this.adapter.apply(\"menuElement\", {\r\n menuElement: this._element\r\n }).menuElement;\r\n // Set up global \"down\" event\r\n this._disposers.push(getInteraction().body.events.on(\"down\", function (ev) {\r\n if (!ev.pointer.touch) {\r\n _this._ignoreNextClose = false;\r\n }\r\n _this.close();\r\n }));\r\n // Set up global event on ESC press to close the menu\r\n this._disposers.push(getInteraction().body.events.on(\"keydown\", function (ev) {\r\n var key = keyboard.getEventKey(ev.event);\r\n switch (key) {\r\n case \"esc\":\r\n _this.close();\r\n break;\r\n case \"up\":\r\n case \"down\":\r\n case \"left\":\r\n case \"right\":\r\n if (_this._currentSelection) {\r\n ev.event.preventDefault();\r\n }\r\n _this.moveSelection(key);\r\n break;\r\n }\r\n }));\r\n if (this.defaultStyles) {\r\n this.loadDefaultCSS();\r\n }\r\n };\r\n /**\r\n * Creates a new branch in export menu. This function is recursive for\r\n * building multi-level menus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param container Container to put branch elements in\r\n * @param branch Menu item\r\n * @param level Current nesting level\r\n */\r\n ExportMenu.prototype.drawBranch = function (container, branch, level) {\r\n var _this = this;\r\n // Apply adapter\r\n branch = this.adapter.apply(\"branch\", {\r\n branch: branch,\r\n level: level\r\n }).branch;\r\n // Unsupported?\r\n // ExportMenu does not check or know for specific browser/system\r\n // capabilities. It must happen in some other code and applied via Adapter.\r\n // Export itself will check compatibility, but there might be other plugins\r\n // that influence it or even add any specific export functionality.\r\n if (branch.unsupported === true) {\r\n return;\r\n }\r\n // Init ascendants\r\n if (!branch.ascendants) {\r\n branch.ascendants = new List();\r\n }\r\n // Get type\r\n var type = branch.type;\r\n // Create an item\r\n var element = this.createItemElement(level, type);\r\n // Create label\r\n var label;\r\n // Create icon\r\n if (branch.icon) {\r\n label = this.createIconElement(level, type);\r\n label.src = branch.icon;\r\n if (branch.label || branch.title) {\r\n label.title = branch.title || branch.label;\r\n }\r\n }\r\n else if (branch.svg) {\r\n label = this.createSvgElement(level, type, branch.svg);\r\n if (branch.label || branch.title) {\r\n label.title = branch.title || branch.label;\r\n }\r\n }\r\n else {\r\n label = this.createLabelElement(level, type);\r\n label.innerHTML = (branch.label ? this.language.translate(branch.label) : \"\");\r\n if (branch.title) {\r\n label.title = branch.title;\r\n }\r\n }\r\n // Apply reader text to label\r\n var readerLabel = this.getReaderLabel(branch, label.innerHTML);\r\n label.setAttribute(\"aria-label\", readerLabel);\r\n // Add Label\r\n element.appendChild(label);\r\n // Create interaction object\r\n // TODO clean this up when it's disposed\r\n branch.interactions = getInteraction().getInteraction(element);\r\n branch.element = element;\r\n // Create interaction manager we can set event listeners to\r\n if (this.typeClickable(type)) {\r\n //branch.interactions.clickable = true;\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"hit\", function (ev) {\r\n if (_this.events.isEnabled(\"hit\") && !_this.isDisposed()) {\r\n var event_1 = {\r\n \"type\": \"hit\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"hit\", event_1);\r\n }\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, \"enter\")) {\r\n if (_this.events.isEnabled(\"enter\")) {\r\n var event_2 = {\r\n \"type\": \"enter\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"enter\", event_2);\r\n }\r\n }\r\n });\r\n }\r\n {\r\n var submenu_1 = this.getSubMenu(branch);\r\n // Add ENTER event to open sub-menus\r\n if (submenu_1 != null) {\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, \"enter\")) {\r\n // This is item has sub-menu, activate the first child on ENTER\r\n _this.selectBranch(submenu_1[0]);\r\n // Attempt to set focus\r\n _this.setFocus(submenu_1[0]);\r\n }\r\n });\r\n branch.interactions.events.on(\"hit\", function (ev) {\r\n _this.selectBranch(branch);\r\n });\r\n }\r\n }\r\n // Add events\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"over\", function (ev) {\r\n if (ev.pointer.touch) {\r\n // Cancel pending menu closure\r\n _this._ignoreNextClose = true;\r\n }\r\n _this.selectBranch(branch);\r\n if (_this.events.isEnabled(\"over\")) {\r\n var event_3 = {\r\n \"type\": \"over\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"over\", event_3);\r\n }\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"out\", function (ev) {\r\n if (_this.isDisposed()) {\r\n return;\r\n }\r\n if (!ev.pointer.touch) {\r\n _this.delayUnselectBranch(branch);\r\n }\r\n if (_this.events.isEnabled(\"out\")) {\r\n var event_4 = {\r\n \"type\": \"out\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"out\", event_4);\r\n }\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"focus\", function (ev) {\r\n _this.selectBranch(branch);\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"blur\", function (ev) {\r\n _this.delayUnselectBranch(branch);\r\n });\r\n // Increment level\r\n var local_level = level + 1;\r\n // Has sub-menu?\r\n if (branch.menu) {\r\n var submenu = this.createMenuElement(local_level);\r\n branch.submenuElement = submenu;\r\n for (var len = branch.menu.length, i = 0; i < len; i++) {\r\n var ascendants = new List();\r\n branch.menu[i].ascendants = ascendants;\r\n if (branch.ascendants.length) {\r\n ascendants.copyFrom(branch.ascendants);\r\n }\r\n ascendants.push(branch);\r\n this.drawBranch(submenu, branch.menu[i], local_level);\r\n }\r\n // Sub-menu is empty (all items are not supported)\r\n // Do not draw this menu item at all\r\n if (submenu.innerHTML == \"\") {\r\n return;\r\n }\r\n element.appendChild(submenu);\r\n }\r\n // Should this item be hidden?\r\n if (branch.hidden) {\r\n this.hideBranch(branch);\r\n }\r\n // Add id?\r\n if (branch.id) {\r\n element.setAttribute(\"id\", branch.id);\r\n }\r\n // Background color?\r\n if (branch.color) {\r\n element.style.backgroundColor = branch.color.hex;\r\n }\r\n // Append to container\r\n container.appendChild(element);\r\n };\r\n /**\r\n * Creates a menu element to hold its elements in. Usually it's an `<ul>`\r\n * tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @return HTML element reference\r\n */\r\n ExportMenu.prototype.createMenuElement = function (level) {\r\n var element = document.createElement(this.menuTag);\r\n element.className = this.getMenuItemClass(level);\r\n // Accessibility\r\n if (level === 0) {\r\n element.setAttribute(\"role\", \"menubar\");\r\n }\r\n else {\r\n element.setAttribute(\"role\", \"menu\");\r\n }\r\n return element;\r\n };\r\n /**\r\n * Generates a class name for the menu element based on its nesting level.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @return Class name(s)\r\n */\r\n ExportMenu.prototype.getMenuItemClass = function (level) {\r\n var className = this.classPrefix + \"-menu \" + this.classPrefix + \"-menu-level-\" + level;\r\n if (level === 0) {\r\n className += \" \" + this.classPrefix + \"-menu-root \" +\r\n this.classPrefix + \"-\" + this.align + \" \" +\r\n this.classPrefix + \"-\" + this.verticalAlign;\r\n }\r\n return this.adapter.apply(\"menuClass\", {\r\n className: className,\r\n level: level\r\n }).className;\r\n };\r\n /**\r\n * Creates menu item. Usually `<li>` tag. Its label and sub-elements will go\r\n * into this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return HTML element reference\r\n */\r\n ExportMenu.prototype.createItemElement = function (level, type) {\r\n var element = document.createElement(this.itemTag);\r\n var className = this.classPrefix + \"-item \" + this.classPrefix\r\n + \"-item-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n element.className = this.adapter.apply(\"itemClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className;\r\n element.setAttribute(\"role\", \"menuitem\");\r\n element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n return element;\r\n };\r\n /**\r\n * Creates a \"label\" part of the menu item. It could be text or any HTML\r\n * content.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\r\n ExportMenu.prototype.createLabelElement = function (level, type) {\r\n var element = document.createElement(this.labelTag);\r\n var className = this.classPrefix + \"-label \" + this.classPrefix\r\n + \"-label-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n if (this.typeClickable(type)) {\r\n className += \" \" + this.classPrefix + \"-clickable\";\r\n }\r\n element.className = this.adapter.apply(\"labelClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className;\r\n // Accessible navigation\r\n //element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n //element.setAttribute(\"role\", \"menuitem\");\r\n return element;\r\n };\r\n /**\r\n * Creates a \"icon\" part of the menu item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\r\n ExportMenu.prototype.createIconElement = function (level, type) {\r\n var element = document.createElement(this.iconTag);\r\n var className = this.classPrefix + \"-icon \" + this.classPrefix\r\n + \"-icon-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n if (this.typeClickable(type)) {\r\n className += \" \" + this.classPrefix + \"-clickable\";\r\n }\r\n element.className = this.adapter.apply(\"labelClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className;\r\n // Accessible navigation\r\n element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n element.setAttribute(\"role\", \"menuitem\");\r\n return element;\r\n };\r\n /**\r\n * Creates a a custom element out of raw HTML.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\r\n ExportMenu.prototype.createSvgElement = function (level, type, svg) {\r\n var parser = new DOMParser();\r\n var element = parser.parseFromString(svg, \"image/svg+xml\").documentElement;\r\n var className = this.classPrefix + \"-icon \" + this.classPrefix\r\n + \"-icon-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n if (this.typeClickable(type)) {\r\n className += \" \" + this.classPrefix + \"-clickable\";\r\n }\r\n element.setAttribute(\"class\", this.adapter.apply(\"labelClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className);\r\n // Accessible navigation\r\n element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n element.setAttribute(\"role\", \"menuitem\");\r\n return element;\r\n };\r\n /**\r\n * Destroys the menu and all its elements.\r\n */\r\n ExportMenu.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n _super.prototype.dispose.call(this);\r\n if (this._element && this._element.parentNode) {\r\n this._element.parentNode.removeChild(this._element);\r\n }\r\n }\r\n };\r\n /**\r\n * Checks whether menu item type is supposed to be clickable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param type Menu item type\r\n * @return Is clickable?\r\n */\r\n ExportMenu.prototype.typeClickable = function (type) {\r\n return $type.hasValue(type);\r\n };\r\n /**\r\n * Checks whether menu item has any sub-items.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch A menu item\r\n * @return Has sub-items?\r\n */\r\n ExportMenu.prototype.hasSubMenu = function (branch) {\r\n return (branch.menu && branch.menu.length) ? true : false;\r\n };\r\n /**\r\n * Returns sub-items (if they exist).\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch A menu item\r\n * @return Submenus\r\n */\r\n ExportMenu.prototype.getSubMenu = function (branch) {\r\n if (branch.menu && branch.menu.length) {\r\n return branch.menu;\r\n }\r\n };\r\n /**\r\n * Generates and returns an applicable label to be used for screen readers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item A menu item instance\r\n * @param label Current label\r\n * @return Reader text\r\n */\r\n ExportMenu.prototype.getReaderLabel = function (branch, label) {\r\n // Strip any HTML from the label\r\n label = $utils.stripTags(label);\r\n // Add textual note if the branch is clickable\r\n if (branch.ascendants.length == 0) {\r\n label = label == \"...\" ? this.language.translate(\"Export\") : label;\r\n label += \" [\" + this.language.translate(\"Press ENTER or use arrow keys to navigate\") + \"]\";\r\n }\r\n else if (this.hasSubMenu(branch)) {\r\n label += \" [\" + this.language.translate(\"Click, tap or press ENTER to open\") + \"]\";\r\n }\r\n else if (branch.type == \"print\") {\r\n label = this.language.translate(\"Click, tap or press ENTER to print.\");\r\n }\r\n else if (this.typeClickable(branch.type)) {\r\n label = this.language.translate(\"Click, tap or press ENTER to export as %1.\", undefined, label);\r\n }\r\n return this.adapter.apply(\"rederLabel\", {\r\n label: label,\r\n branch: branch\r\n }).label;\r\n };\r\n Object.defineProperty(ExportMenu.prototype, \"container\", {\r\n /**\r\n * @return Container\r\n */\r\n get: function () {\r\n return this._container;\r\n },\r\n /**\r\n * Getters and setters\r\n */\r\n /**\r\n * An HTML container to place the Menu in.\r\n *\r\n * A container must be an HTML element, because menu itself is HTML, and\r\n * cannot be placed into SVG.\r\n *\r\n * @param container Reference to container element\r\n * @todo Check if menu is already build. If it is, just move it to a new container\r\n */\r\n set: function (container) {\r\n this._container = container;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"items\", {\r\n /**\r\n * @return Menu items\r\n */\r\n get: function () {\r\n return this._items;\r\n },\r\n /**\r\n * A list of menu items. Can be nested.\r\n *\r\n * @param items Menu items\r\n */\r\n set: function (items) {\r\n this._items = items;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"tag\", {\r\n /**\r\n * Sets main menu tag to place menu in.\r\n *\r\n * This also sets up how menu items are built.\r\n *\r\n * If you set this to \"ul\", menu items will be wrapped into `<li>` tags.\r\n *\r\n * If set to \"div\", menu items will be wrapped in `<div>` tags.\r\n *\r\n * @default \"ul\"\r\n * @param tag Tag to use for menu\r\n */\r\n set: function (tag) {\r\n this._menuTag = tag;\r\n this._itemTag = tag == \"ul\" ? \"li\" : \"div\";\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"menuTag\", {\r\n /**\r\n * Returns current menu tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Menu tag (item that contains sub-items)\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"menuTag\", {\r\n tag: this._menuTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"itemTag\", {\r\n /**\r\n * Returns tag to wrap items into.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Item tag\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"itemTag\", {\r\n tag: this._itemTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"labelTag\", {\r\n /**\r\n * Returns menu label tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Label tag\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"labelTag\", {\r\n tag: this._labelTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"iconTag\", {\r\n /**\r\n * Returns icon tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Icon tag\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"iconTag\", {\r\n tag: this._iconTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"align\", {\r\n /**\r\n * @return Horizontal alignment\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"align\", {\r\n align: this._align\r\n }).align;\r\n },\r\n /**\r\n * A horizontal alignment for the menu placement.\r\n *\r\n * @param value Horizontal alignment\r\n */\r\n set: function (value) {\r\n this._align = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"verticalAlign\", {\r\n /**\r\n * @return Vertical alignment\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"verticalAlign\", {\r\n verticalAlign: this._verticalAlign\r\n }).verticalAlign;\r\n },\r\n /**\r\n * A vertical alignment for the menu placement.\r\n *\r\n * @param value Vertical alignment\r\n */\r\n set: function (value) {\r\n this._verticalAlign = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"classPrefix\", {\r\n /**\r\n * @return Class name prefix\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"classPrefix\", {\r\n classPrefix: this._classPrefix\r\n }).classPrefix;\r\n },\r\n /**\r\n * Class name prefix.\r\n *\r\n * @default \"amexport\"\r\n * @param value Class name prefix\r\n */\r\n set: function (value) {\r\n this._classPrefix = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"defaultStyles\", {\r\n /**\r\n * @return Should ExportMenu load its own CSS?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"defaultStyles\", {\r\n defaultStyles: this._defaultStyles\r\n }).defaultStyles;\r\n },\r\n /**\r\n * Indicates whether [[ExportMenu]] should load external CSS to style itself.\r\n *\r\n * If set to `false`, the menu will not be styled, and will rely on some\r\n * external CSS.\r\n *\r\n * @default true\r\n * @param Should ExportMenu load its own CSS?\r\n */\r\n set: function (value) {\r\n if (this._defaultStyles != value) {\r\n this._defaultStyles = value;\r\n if (value) {\r\n this.loadDefaultCSS();\r\n }\r\n }\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Loads the default CSS.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ExportMenu.prototype.loadDefaultCSS = function () {\r\n this._disposers.push(exportCSS($dom.getShadowRoot(this.container), this.classPrefix));\r\n if (this._element) {\r\n this._element.style.display = \"\";\r\n }\r\n };\r\n Object.defineProperty(ExportMenu.prototype, \"tabindex\", {\r\n /**\r\n * @return Tab index\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"tabindex\", {\r\n tabindex: this._tabindex\r\n }).tabindex;\r\n },\r\n /**\r\n * A tab index for the menu.\r\n *\r\n * Tab index will influence the order in which elements on the chart and\r\n * the whole page are selected when pressing TAB key.\r\n *\r\n * @param value Tab index\r\n */\r\n set: function (value) {\r\n this._tabindex = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"language\", {\r\n /**\r\n * @return A [[Language]] instance to be used\r\n */\r\n get: function () {\r\n var _this = this;\r\n var language = this._language.get();\r\n if (language == null) {\r\n language = new Language();\r\n // TODO code duplication with `set language()`\r\n this._language.set(language, language.events.on(\"localechanged\", function (ev) {\r\n _this.invalidate();\r\n }));\r\n }\r\n return language;\r\n },\r\n /**\r\n * A [[Language]] instance.\r\n *\r\n * @param value An instance of [[Language]]\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n this._language.set(value, value.events.on(\"localechanged\", function (ev) {\r\n _this.invalidate();\r\n }));\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Controlling the menu\r\n */\r\n /**\r\n * Removes all active classes from menu items. Useful on touch devices and\r\n * keyboard navigation where open menu can be closed instantly by clicking or\r\n * tapping outside it.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ExportMenu.prototype.close = function () {\r\n var _this = this;\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n if (this._ignoreNextClose) {\r\n this._ignoreNextClose = false;\r\n return;\r\n }\r\n if (this.closeOnClick) {\r\n this._element.style.pointerEvents = \"none\";\r\n setTimeout(function () {\r\n _this._element.style.pointerEvents = \"auto\";\r\n }, 100);\r\n }\r\n if (this._currentSelection) {\r\n this.setBlur(this._currentSelection);\r\n this._currentSelection = undefined;\r\n }\r\n if (this._element) {\r\n var items = this._element.getElementsByClassName(\"active\");\r\n for (var len = items.length, i = len - 1; i >= 0; i--) {\r\n if (items[i]) {\r\n $dom.removeClass(items[i], \"active\");\r\n }\r\n }\r\n }\r\n this.events.dispatchImmediately(\"closed\", {\r\n type: \"closed\",\r\n target: this\r\n });\r\n };\r\n /**\r\n * Selects a branch in the menu.\r\n *\r\n * Handles closing of currently open branch.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to select\r\n */\r\n ExportMenu.prototype.selectBranch = function (branch) {\r\n var _this = this;\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Cancel previous closure\r\n if (branch.closeTimeout) {\r\n this.removeDispose(branch.closeTimeout);\r\n branch.closeTimeout = undefined;\r\n }\r\n // Add active class\r\n $dom.addClass(branch.element, \"active\");\r\n // Set expanded\r\n if (branch.submenuElement) {\r\n branch.submenuElement.setAttribute(\"aria-expanded\", \"true\");\r\n }\r\n // Remove current selection\r\n if (this._currentSelection && this._currentSelection !== branch && this._currentSelection.ascendants) {\r\n $iter.each($iter.concat($iter.fromArray([this._currentSelection]), this._currentSelection.ascendants.iterator()), function (ascendant) {\r\n if (!branch.ascendants.contains(ascendant) && branch !== ascendant) {\r\n _this.unselectBranch(ascendant, true);\r\n }\r\n });\r\n }\r\n // Select and/or cancel timeout for current ascendants\r\n $iter.each(branch.ascendants.iterator(), function (ascendant) {\r\n if (ascendant.closeTimeout) {\r\n _this.removeDispose(ascendant.closeTimeout);\r\n ascendant.closeTimeout = undefined;\r\n }\r\n $dom.addClass(ascendant.element, \"active\");\r\n });\r\n // Log current selection\r\n this._currentSelection = branch;\r\n // Invoke event\r\n if (this.events.isEnabled(\"branchselected\")) {\r\n var event_5 = {\r\n type: \"branchselected\",\r\n target: this,\r\n branch: branch\r\n };\r\n this.events.dispatchImmediately(\"branchselected\", event_5);\r\n }\r\n };\r\n /**\r\n * Unselects a branch. Also selects a branch one level up if necessary.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to unselect\r\n * @param simple If `true`, only the branch will be unselected without selecting parent branch\r\n */\r\n ExportMenu.prototype.unselectBranch = function (branch, simple) {\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Remove active class\r\n $dom.removeClass(branch.element, \"active\");\r\n // Set expanded\r\n if (branch.submenuElement) {\r\n branch.submenuElement.removeAttribute(\"aria-expanded\");\r\n }\r\n // Remove current selection\r\n if (this._currentSelection == branch) {\r\n this._currentSelection = undefined;\r\n }\r\n // Invoke event\r\n if (this.events.isEnabled(\"branchunselected\")) {\r\n var event_6 = {\r\n type: \"branchunselected\",\r\n target: this,\r\n branch: branch\r\n };\r\n this.events.dispatchImmediately(\"branchunselected\", event_6);\r\n }\r\n };\r\n /**\r\n * Delay unselection of a branch. This can still be cancelled in some other\r\n * place if the branch or its children regain focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to unselect\r\n * @param simple If `true`, only the branch will be unselected without selecting parent branch\r\n */\r\n ExportMenu.prototype.delayUnselectBranch = function (branch, simple) {\r\n var _this = this;\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Schedule branch unselection\r\n if (branch.closeTimeout) {\r\n this.removeDispose(branch.closeTimeout);\r\n branch.closeTimeout = undefined;\r\n }\r\n branch.closeTimeout = this.setTimeout(function () {\r\n _this.unselectBranch(branch, simple);\r\n }, this.closeDelay);\r\n // Schedule unselection of all ascendants\r\n // In case focus went away from the export menu altogether, this will ensure\r\n // that all items will be closed.\r\n // In case we're jumping to other menu item, those delayed unselections will\r\n // be cancelled by `selectBranch`\r\n if (simple !== true && branch.ascendants) {\r\n $iter.each(branch.ascendants.iterator(), function (ascendant) {\r\n _this.delayUnselectBranch(ascendant, true);\r\n });\r\n }\r\n };\r\n /**\r\n * Navigates the menu based on which direction kayboard key was pressed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key A key that was pressed\r\n */\r\n ExportMenu.prototype.moveSelection = function (key) {\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Check if there's a current selection\r\n if (!this._currentSelection) {\r\n return;\r\n }\r\n var newSelection;\r\n if (key == \"up\") {\r\n // Try moving up in current menu list, or to the last item if already\r\n // at the top\r\n newSelection = this.getPrevSibling(this._currentSelection);\r\n }\r\n else if (key == \"down\") {\r\n // Try moving down in current menu list, or to the top item if already\r\n // at the bottom\r\n newSelection = this.getNextSibling(this._currentSelection);\r\n }\r\n else if ((key == \"left\" && this.align == \"right\") || (key == \"right\" && this.align == \"left\")) {\r\n var menu = this.getSubMenu(this._currentSelection);\r\n // Go one level-deeper\r\n if (menu != null) {\r\n newSelection = menu[0];\r\n }\r\n }\r\n else if ((key == \"right\" && this.align == \"right\") || (key == \"left\" && this.align == \"left\")) {\r\n // Go one level-deeper\r\n newSelection = this.getParentItem(this._currentSelection);\r\n }\r\n if (newSelection && newSelection !== this._currentSelection) {\r\n this.selectBranch(newSelection);\r\n this.setFocus(newSelection);\r\n this._currentSelection = newSelection;\r\n }\r\n };\r\n /**\r\n * Returns all siblings of a menu item, including this same menu item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n * @return List of sibling menu items\r\n */\r\n ExportMenu.prototype.getSiblings = function (branch) {\r\n var parent = this.getParentItem(branch);\r\n if (parent && parent.menu) {\r\n return parent.menu;\r\n }\r\n else {\r\n return [];\r\n }\r\n };\r\n /**\r\n * Returns menu items parent item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n * @return Parent menu item\r\n */\r\n ExportMenu.prototype.getParentItem = function (branch) {\r\n if (branch.ascendants && branch.ascendants.length) {\r\n return branch.ascendants.getIndex(branch.ascendants.length - 1);\r\n }\r\n else {\r\n return undefined;\r\n }\r\n };\r\n /**\r\n * Returns next sibling in the same menu branch. If there is no next sibling,\r\n * the first one is returned. If there is just one item, that item is\r\n * returned. Unsupported menu items are skipped.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item to search siblings for\r\n * @return Menu item\r\n */\r\n ExportMenu.prototype.getNextSibling = function (branch) {\r\n var siblings = this.getSiblings(branch);\r\n if (siblings.length > 1) {\r\n var next = siblings.indexOf(branch) + 1;\r\n next = siblings.length == next ? 0 : next;\r\n return siblings[next].unsupported ? this.getNextSibling(siblings[next]) : siblings[next];\r\n }\r\n else {\r\n return branch;\r\n }\r\n };\r\n /**\r\n * Returns previous sibling in the same menu branch. If there is no next\r\n * sibling, the first one is returned. If there is just one item, that item is\r\n * returned. Unsupported menu items are skipped.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item to search siblings for\r\n * @return Menu item\r\n */\r\n ExportMenu.prototype.getPrevSibling = function (branch) {\r\n var siblings = this.getSiblings(branch);\r\n if (siblings.length > 1) {\r\n var prev = siblings.indexOf(branch) - 1;\r\n prev = prev == -1 ? siblings.length - 1 : prev;\r\n return siblings[prev].unsupported ? this.getPrevSibling(siblings[prev]) : siblings[prev];\r\n }\r\n else {\r\n return branch;\r\n }\r\n };\r\n /**\r\n * Attempts to set focus on particular menu element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n */\r\n ExportMenu.prototype.setFocus = function (branch) {\r\n if (branch.interactions) {\r\n try {\r\n branch.interactions.element.focus();\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n }\r\n };\r\n /**\r\n * Attempts to remove focus from the menu element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n */\r\n ExportMenu.prototype.setBlur = function (branch) {\r\n if (branch.interactions) {\r\n try {\r\n branch.interactions.element.blur();\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n }\r\n };\r\n /**\r\n * Hides the whole branch of menu.\r\n *\r\n * @param branch branch\r\n */\r\n ExportMenu.prototype.hideBranch = function (branch) {\r\n branch.element.style.display = \"none\";\r\n };\r\n /**\r\n * Show the branch of menu.\r\n *\r\n * @param branch branch\r\n */\r\n ExportMenu.prototype.showBranch = function (branch) {\r\n branch.element.style.display = \"\";\r\n };\r\n Object.defineProperty(ExportMenu.prototype, \"element\", {\r\n /**\r\n * The main element o fthe menu - usually `<ul>`.\r\n *\r\n * @since 4.10.6\r\n * @return Menu element\r\n */\r\n get: function () {\r\n return this._element;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ExportMenu;\r\n}(Validatable));\r\nexport { ExportMenu };\r\n","/**\r\n * Handles date and time formatting\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { BaseObject } from \"../Base\";\r\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $time from \"../utils/Time\";\r\n/**\r\n * Handles date and time formatting.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/} Tutorial on date/time formatting\r\n * @todo Better type casting of passed in date?\r\n * @todo Quarter support?\r\n * @todo When parsing named months make the search case-insensitive\r\n * @todo Escape a.m./p.m. properly when used in RegEx\r\n */\r\nvar DateFormatter = /** @class */ (function (_super) {\r\n __extends(DateFormatter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DateFormatter() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Date format.\r\n */\r\n _this._dateFormat = \"yyyy-MM-dd\";\r\n /**\r\n * Input date format.\r\n */\r\n _this._inputDateFormat = \"yyyy-MM-dd\";\r\n /**\r\n * Assume UTC time zone.\r\n */\r\n _this._utc = false;\r\n /**\r\n * If `timezone` is set, this will hold minute fraction of the timezone.\r\n *\r\n * @readonly\r\n * @ignore\r\n */\r\n _this.timezoneMinutes = 0;\r\n /**\r\n * First day of week.\r\n *\r\n * 0 - Sunday\r\n * 1 - Monday\r\n *\r\n * Etc.\r\n */\r\n _this._firstDayOfWeek = 1;\r\n /**\r\n * A list of month names.\r\n */\r\n _this.months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n /**\r\n * A list of short month names.\r\n */\r\n _this.monthsShort = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May(short)\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n /**\r\n * A list of weekday names.\r\n */\r\n _this.weekdays = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\r\n /**\r\n * A list of short weekday names.\r\n */\r\n _this.weekdaysShort = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\r\n /**\r\n * Output format to produce. If the format calls for applying color to the\r\n * formatted value, this setting will determine what markup to use: SVG or\r\n * HTML.\r\n *\r\n * Available options: svg, html.\r\n *\r\n * @default \"svg\"\r\n */\r\n _this._outputFormat = \"svg\";\r\n /**\r\n * Should the first letter of the formatted date be capitalized?\r\n *\r\n * @default true\r\n */\r\n _this.capitalize = true;\r\n _this.className = \"DateFormatter\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(DateFormatter.prototype, \"language\", {\r\n /**\r\n * @return Language\r\n */\r\n get: function () {\r\n return this._language;\r\n },\r\n /**\r\n * A reference to [[Language]] object.\r\n *\r\n * @param value Language\r\n */\r\n set: function (value) {\r\n this._language = value;\r\n this.dateFormat = this._language.translate(\"_date\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Formats the date value according to specified format.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/} Tutorial on date/time formatting\r\n * @param source Date value\r\n * @param format Format\r\n * @return Formatted date string\r\n */\r\n DateFormatter.prototype.format = function (source, format, applyTimezone) {\r\n // No language?\r\n if (!this.language) {\r\n if (this.sprite) {\r\n this.language = this.sprite.language;\r\n }\r\n else {\r\n this.language = new Language();\r\n }\r\n }\r\n // No format passed in or it's empty\r\n if (typeof format === \"undefined\" || format === \"\") {\r\n format = this._dateFormat;\r\n }\r\n // Init return value\r\n var formatted;\r\n // Do casting if required\r\n // This will take care of timestamps as well as Date objects\r\n var date;\r\n if ($type.isString(source)) {\r\n // If it's a string, let's try parsing it using our own functionality\r\n date = this.parse(source);\r\n }\r\n else {\r\n date = $utils.anyToDate(source);\r\n }\r\n // Is it a built-in format or Intl.DateTimeFormat\r\n if ($type.isObject(format)) {\r\n try {\r\n if (this.intlLocales) {\r\n return new Intl.DateTimeFormat(this.intlLocales, format).format(date);\r\n }\r\n else {\r\n return new Intl.DateTimeFormat(undefined, format).format(date);\r\n }\r\n }\r\n catch (e) {\r\n return \"Invalid\";\r\n }\r\n }\r\n else {\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // get format info (it will also deal with parser caching)\r\n var info = this.parseFormat(format);\r\n // Should we apply custom time zone?\r\n if ($type.hasValue(this.timezoneOffset)) {\r\n date.setMinutes(date.getMinutes() + date.getTimezoneOffset() - this.timezoneOffset);\r\n }\r\n else if ($type.hasValue(this.timezone) && applyTimezone !== false) {\r\n date = $time.setTimezone(date, this.timezone);\r\n }\r\n // Check if it's a valid date\r\n if (!$type.isNumber(date.getTime())) {\r\n return this.language.translate(\"Invalid date\");\r\n }\r\n // Apply format\r\n formatted = this.applyFormat(date, info, this.language);\r\n // Capitalize\r\n if (this.capitalize) {\r\n formatted = formatted.replace(/^.{1}/, formatted.substr(0, 1).toUpperCase());\r\n }\r\n }\r\n // We're done\r\n return formatted;\r\n };\r\n /**\r\n * Parses format into structured infromation.\r\n *\r\n * @param format Format template\r\n */\r\n DateFormatter.prototype.parseFormat = function (format) {\r\n // Check cache\r\n var cached = this.getCache(format);\r\n if ($type.hasValue(cached)) {\r\n return cached;\r\n }\r\n // Init format parse info holder\r\n var info = {\r\n \"template\": \"\",\r\n \"parts\": []\r\n };\r\n // Let TextFormatter split into chunks\r\n var chunks = getTextFormatter().chunk(format, true);\r\n for (var i = 0; i < chunks.length; i++) {\r\n var chunk = chunks[i];\r\n if (chunk.type === \"value\") {\r\n // Just \"Date\"?\r\n if (chunk.text.match(/^date$/i) && $type.isString(this._dateFormat)) {\r\n chunk.text = this._dateFormat;\r\n }\r\n // Find all possible parts\r\n var matches = chunk.text.match(/G|yyyy|yyy|yy|y|YYYY|YYY|YY|Y|u|q|MMMMM|MMMM|MMM|MM|M|ww|w|W|dd|d|DDD|DD|D|F|g|EEEEE|EEEE|EEE|EE|E|eeeee|eeee|eee|ee|e|aaa|aa|a|hh|h|HH|H|KK|K|kk|k|mm|m|ss|s|SSS|SS|S|A|zzzz|zzz|zz|z|ZZ|Z|t|x|nnn|nn|n|i|I/g);\r\n // Found?\r\n if (matches) {\r\n // Populate template\r\n for (var x = 0; x < matches.length; x++) {\r\n info.parts.push(matches[x]);\r\n chunk.text = chunk.text.replace(matches[x], $strings.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n // Apply to template\r\n info.template += chunk.text;\r\n }\r\n // Apply style formatting\r\n //info.template = getTextFormatter().format(info.template, this.outputFormat);\r\n // Save cache\r\n this.setCache(format, info);\r\n return info;\r\n };\r\n /**\r\n * Applies format to Date.\r\n *\r\n * @param date Date object\r\n * @param info Parsed format information\r\n * @param language Language\r\n * @return Formatted date string\r\n */\r\n DateFormatter.prototype.applyFormat = function (date, info, language) {\r\n // Init return value\r\n var res = info.template;\r\n // Get values\r\n var fullYear, month, weekday, day, hours, minutes, seconds, milliseconds, offset = date.getTimezoneOffset(), timestamp = date.getTime();\r\n if (this.utc) {\r\n fullYear = date.getUTCFullYear();\r\n month = date.getUTCMonth();\r\n weekday = date.getUTCDay();\r\n day = date.getUTCDate();\r\n hours = date.getUTCHours();\r\n minutes = date.getUTCMinutes();\r\n seconds = date.getUTCSeconds();\r\n milliseconds = date.getUTCMilliseconds();\r\n }\r\n else {\r\n fullYear = date.getFullYear();\r\n month = date.getMonth();\r\n weekday = date.getDay();\r\n day = date.getDate();\r\n hours = date.getHours();\r\n minutes = date.getMinutes();\r\n seconds = date.getSeconds();\r\n milliseconds = date.getMilliseconds();\r\n }\r\n // Go through each part and format/replace it in template\r\n for (var i = 0, len = info.parts.length; i < len; i++) {\r\n var value = \"\";\r\n switch (info.parts[i]) {\r\n case \"G\":\r\n value = language.translate(fullYear < 0\r\n ? \"_era_bc\"\r\n : \"_era_ad\");\r\n break;\r\n case \"yyyy\":\r\n value = Math.abs(fullYear).toString();\r\n if (fullYear < 0) {\r\n value += language.translate(\"_era_bc\");\r\n }\r\n break;\r\n case \"yyy\":\r\n case \"yy\":\r\n case \"y\":\r\n value = Math.abs(fullYear).toString().substr(-info.parts[i].length);\r\n if (fullYear < 0) {\r\n value += language.translate(\"_era_bc\");\r\n }\r\n break;\r\n case \"YYYY\":\r\n case \"YYY\":\r\n case \"YY\":\r\n case \"Y\":\r\n var year = $utils.getWeekYear(date);\r\n if (info.parts[i] == \"YYYY\") {\r\n value = Math.abs(year).toString();\r\n }\r\n else {\r\n value = Math.abs(year).toString().substr(-info.parts[i].length);\r\n }\r\n if (year < 0) {\r\n value += language.translate(\"_era_bc\");\r\n }\r\n break;\r\n case \"u\":\r\n // @todo\r\n break;\r\n case \"q\":\r\n value = \"\" + Math.ceil((date.getMonth() + 1) / 3);\r\n break;\r\n case \"MMMMM\":\r\n value = language.translate(this.months[month]).substr(0, 1);\r\n break;\r\n case \"MMMM\":\r\n value = language.translate(this.months[month]);\r\n break;\r\n case \"MMM\":\r\n value = language.translate(this.monthsShort[month]);\r\n break;\r\n case \"MM\":\r\n value = $utils.padString(month + 1, 2, \"0\");\r\n break;\r\n case \"M\":\r\n value = (month + 1).toString();\r\n break;\r\n case \"ww\":\r\n value = $utils.padString($utils.getWeek(date, this.utc), 2, \"0\");\r\n break;\r\n case \"w\":\r\n value = $utils.getWeek(date, this.utc).toString();\r\n break;\r\n case \"W\":\r\n value = $utils.getMonthWeek(date, this.utc).toString();\r\n break;\r\n case \"dd\":\r\n value = $utils.padString(day, 2, \"0\");\r\n break;\r\n case \"d\":\r\n value = day.toString();\r\n break;\r\n case \"DD\":\r\n case \"DDD\":\r\n value = $utils.padString($utils.getYearDay(date, this.utc).toString(), info.parts[i].length, \"0\");\r\n break;\r\n case \"D\":\r\n value = $utils.getYearDay(date, this.utc).toString();\r\n break;\r\n case \"F\":\r\n // @todo\r\n break;\r\n case \"g\":\r\n // @todo\r\n break;\r\n case \"t\":\r\n value = language.translateFunc(\"_dateOrd\").call(this, day);\r\n break;\r\n case \"E\":\r\n value = (weekday || 7).toString();\r\n break;\r\n case \"EE\":\r\n value = $utils.padString((weekday || 7).toString(), 2, \"0\");\r\n break;\r\n case \"EEE\":\r\n case \"eee\":\r\n value = language.translate(this.weekdaysShort[weekday]);\r\n break;\r\n case \"EEEE\":\r\n case \"eeee\":\r\n value = language.translate(this.weekdays[weekday]);\r\n break;\r\n case \"EEEEE\":\r\n case \"eeeee\":\r\n value = language.translate(this.weekdays[weekday]).substr(0, 1);\r\n break;\r\n case \"e\":\r\n case \"ee\":\r\n value = (weekday - this.firstDayOfWeek + 1).toString();\r\n if (info.parts[i] == \"ee\") {\r\n value = $utils.padString(value, 2, \"0\");\r\n }\r\n break;\r\n case \"a\":\r\n if (hours >= 12) {\r\n value = language.translate(\"PM\");\r\n }\r\n else {\r\n value = language.translate(\"AM\");\r\n }\r\n break;\r\n case \"aa\":\r\n if (hours >= 12) {\r\n value = language.translate(\"P.M.\");\r\n }\r\n else {\r\n value = language.translate(\"A.M.\");\r\n }\r\n break;\r\n case \"aaa\":\r\n if (hours >= 12) {\r\n value = language.translate(\"P\");\r\n }\r\n else {\r\n value = language.translate(\"A\");\r\n }\r\n break;\r\n case \"h\":\r\n value = $utils.get12Hours(hours).toString();\r\n break;\r\n case \"hh\":\r\n value = $utils.padString($utils.get12Hours(hours), 2, \"0\");\r\n break;\r\n case \"H\":\r\n value = hours.toString();\r\n break;\r\n case \"HH\":\r\n value = $utils.padString(hours, 2, \"0\");\r\n break;\r\n case \"K\":\r\n value = $utils.get12Hours(hours, 0).toString();\r\n break;\r\n case \"KK\":\r\n value = $utils.padString($utils.get12Hours(hours, 0), 2, \"0\");\r\n break;\r\n case \"k\":\r\n value = (hours + 1).toString();\r\n break;\r\n case \"kk\":\r\n value = $utils.padString(hours + 1, 2, \"0\");\r\n break;\r\n case \"m\":\r\n value = minutes.toString();\r\n break;\r\n case \"mm\":\r\n value = $utils.padString(minutes, 2, \"0\");\r\n break;\r\n case \"s\":\r\n value = seconds.toString();\r\n break;\r\n case \"ss\":\r\n value = $utils.padString(seconds, 2, \"0\");\r\n break;\r\n case \"S\":\r\n case \"SS\":\r\n case \"SSS\":\r\n value = Math.round((milliseconds / 1000) * Math.pow(10, info.parts[i].length)).toString();\r\n break;\r\n case \"x\":\r\n value = timestamp.toString();\r\n break;\r\n case \"n\":\r\n case \"nn\":\r\n case \"nnn\":\r\n value = $utils.padString(milliseconds, info.parts[i].length, \"0\");\r\n break;\r\n case \"z\":\r\n value = $utils.getTimeZone(date, false, false, this.utc);\r\n break;\r\n case \"zz\":\r\n value = $utils.getTimeZone(date, true, false, this.utc);\r\n break;\r\n case \"zzz\":\r\n value = $utils.getTimeZone(date, false, true, this.utc);\r\n break;\r\n case \"zzzz\":\r\n value = $utils.getTimeZone(date, true, true, this.utc);\r\n break;\r\n case \"Z\":\r\n case \"ZZ\":\r\n var tz = Math.abs(offset) / 60;\r\n var tzh = Math.floor(tz);\r\n var tzm = tz * 60 - tzh * 60;\r\n if (this.utc) {\r\n tzh = 0;\r\n tzm = 0;\r\n }\r\n if (info.parts[i] == \"Z\") {\r\n value = \"GMT\";\r\n value += offset > 0 ? \"-\" : \"+\";\r\n value += $utils.padString(tzh, 2) + \":\" + $utils.padString(tzm, 2);\r\n }\r\n else {\r\n value = offset > 0 ? \"-\" : \"+\";\r\n value += $utils.padString(tzh, 2) + $utils.padString(tzm, 2);\r\n }\r\n break;\r\n case \"i\":\r\n value = date.toISOString();\r\n break;\r\n case \"I\":\r\n value = date.toUTCString();\r\n break;\r\n }\r\n res = res.replace($strings.PLACEHOLDER, value);\r\n }\r\n return res;\r\n };\r\n /**\r\n * Parses any input value into Date object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Parsing_Dates} Tutorial on date/time parsing\r\n * @param source Source value\r\n * @param format Source format\r\n * @return Date object\r\n */\r\n DateFormatter.prototype.parse = function (source, format) {\r\n // Format set?\r\n if (!$type.hasValue(format)) {\r\n format = this.inputDateFormat;\r\n }\r\n // Is it already a Date\r\n if (source instanceof Date) {\r\n return source;\r\n }\r\n // Is it a numeric timestamp\r\n if (typeof source === \"number\") {\r\n return new Date(source);\r\n }\r\n // No? Let's check if it's string, and try converting to it if nec\r\n if (typeof source !== \"string\") {\r\n source = source.toString();\r\n }\r\n // no language?\r\n if (!this.language) {\r\n if (this.sprite) {\r\n this.language = this.sprite.language;\r\n }\r\n else {\r\n this.language = new Language;\r\n }\r\n }\r\n // Init return value\r\n var res;\r\n // Init RegEx for parsing\r\n var reg = \"\";\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // Clip format to length of the source string\r\n format = format.substr(0, source.length);\r\n // Parse format\r\n var info = this.parseFormat(format);\r\n // Init parsed items holder\r\n var parsedIndexes = {\r\n \"year\": -1,\r\n \"year3\": -1,\r\n \"year2\": -1,\r\n \"year1\": -1,\r\n \"month\": -1,\r\n \"monthShort\": -1,\r\n \"monthLong\": -1,\r\n \"weekdayShort\": -1,\r\n \"weekdayLong\": -1,\r\n \"day\": -1,\r\n \"yearDay\": -1,\r\n \"week\": -1,\r\n \"hourBase0\": -1,\r\n \"hour12Base0\": -1,\r\n \"hourBase1\": -1,\r\n \"hour12Base1\": -1,\r\n \"minute\": -1,\r\n \"second\": -1,\r\n \"millisecond\": -1,\r\n \"millisecondDigits\": -1,\r\n \"am\": -1,\r\n \"zone\": -1,\r\n \"timestamp\": -1,\r\n \"iso\": -1\r\n };\r\n // Init values\r\n var resValues = {\r\n \"year\": 1970,\r\n \"month\": 0,\r\n \"day\": 1,\r\n \"hour\": 0,\r\n \"minute\": 0,\r\n \"second\": 0,\r\n \"millisecond\": 0,\r\n \"timestamp\": null,\r\n \"offset\": 0,\r\n \"utc\": this.utc\r\n };\r\n // Index adjuster\r\n var indexAdjust = 0, index = 0;\r\n // Iterate through all of the parts\r\n for (var i = 0; i < info.parts.length; i++) {\r\n // Set current match index\r\n index = i + indexAdjust + 1;\r\n switch (info.parts[i]) {\r\n case \"yyyy\":\r\n case \"YYYY\":\r\n reg += \"([0-9]{4})\";\r\n parsedIndexes.year = index;\r\n break;\r\n case \"yyy\":\r\n case \"YYY\":\r\n reg += \"([0-9]{3})\";\r\n parsedIndexes.year3 = index;\r\n break;\r\n case \"yy\":\r\n case \"YY\":\r\n reg += \"([0-9]{2})\";\r\n parsedIndexes.year2 = index;\r\n break;\r\n case \"y\":\r\n case \"Y\":\r\n reg += \"([0-9]{1})\";\r\n parsedIndexes.year1 = index;\r\n break;\r\n case \"MMMM\":\r\n reg += \"(\" + this.getStringList(this.months).join(\"|\") + \")\";\r\n parsedIndexes.monthLong = index;\r\n break;\r\n case \"MMM\":\r\n reg += \"(\" + this.getStringList(this.monthsShort).join(\"|\") + \")\";\r\n parsedIndexes.monthShort = index;\r\n break;\r\n case \"MM\":\r\n case \"M\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.month = index;\r\n break;\r\n case \"ww\":\r\n case \"w\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.week = index;\r\n break;\r\n case \"dd\":\r\n case \"d\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.day = index;\r\n break;\r\n case \"DDD\":\r\n case \"DD\":\r\n case \"D\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.yearDay = index;\r\n break;\r\n case \"dddd\":\r\n reg += \"(\" + this.getStringList(this.weekdays).join(\"|\") + \")\";\r\n parsedIndexes.weekdayLong = index;\r\n break;\r\n case \"ddd\":\r\n reg += \"(\" + this.getStringList(this.weekdaysShort).join(\"|\") + \")\";\r\n parsedIndexes.weekdayShort = index;\r\n break;\r\n case \"aaa\":\r\n case \"aa\":\r\n case \"a\":\r\n // TODO: fix (escape regex)\r\n reg += \"(\" + this.getStringList([\"AM\", \"PM\", \"A\\.M\\.\", \"P\\.M\\.\", \"A\", \"P\"]).join(\"|\") + \")\";\r\n parsedIndexes.am = index;\r\n break;\r\n case \"hh\":\r\n case \"h\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hour12Base1 = index;\r\n break;\r\n case \"HH\":\r\n case \"H\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hourBase0 = index;\r\n break;\r\n case \"KK\":\r\n case \"K\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hour12Base0 = index;\r\n break;\r\n case \"kk\":\r\n case \"k\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hourBase1 = index;\r\n break;\r\n case \"mm\":\r\n case \"m\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.minute = index;\r\n break;\r\n case \"ss\":\r\n case \"s\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.second = index;\r\n break;\r\n case \"SSS\":\r\n case \"SS\":\r\n case \"S\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.millisecond = index;\r\n parsedIndexes.millisecondDigits = info.parts[i].length;\r\n break;\r\n case \"nnn\":\r\n case \"nn\":\r\n case \"n\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.millisecond = index;\r\n break;\r\n case \"x\":\r\n reg += \"([0-9]{1,})\";\r\n parsedIndexes.timestamp = index;\r\n break;\r\n case \"Z\":\r\n reg += \"GMT([-+]+[0-9]{2}:[0-9]{2})\";\r\n parsedIndexes.zone = index;\r\n break;\r\n case \"ZZ\":\r\n reg += \"([\\\\-+]+[0-9]{2}[0-9]{2})\";\r\n parsedIndexes.zone = index;\r\n break;\r\n case \"i\":\r\n reg += \"([0-9]{4})-?([0-9]{2})-?([0-9]{2})T?([0-9]{2}):?([0-9]{2}):?([0-9]{2})\\.?([0-9]{0,3})([zZ]|[+\\-][0-9]{2}:?[0-9]{2}|$)\";\r\n parsedIndexes.iso = index;\r\n indexAdjust += 7;\r\n break;\r\n case \"G\":\r\n case \"YYYY\":\r\n case \"YYY\":\r\n case \"YY\":\r\n case \"Y\":\r\n case \"MMMMM\":\r\n case \"W\":\r\n case \"EEEEE\":\r\n case \"EEEE\":\r\n case \"EEE\":\r\n case \"EE\":\r\n case \"E\":\r\n case \"eeeee\":\r\n case \"eeee\":\r\n case \"eee\":\r\n case \"ee\":\r\n case \"e\":\r\n case \"zzzz\":\r\n case \"zzz\":\r\n case \"zz\":\r\n case \"z\":\r\n case \"t\":\r\n // Ignore\r\n indexAdjust--;\r\n break;\r\n }\r\n reg += \"[^0-9]*\";\r\n }\r\n // Try matching\r\n var regex = new RegExp(reg);\r\n var matches = source.match(regex);\r\n if (matches) {\r\n // Populate the date object\r\n // Full year\r\n if (parsedIndexes.year > -1) {\r\n resValues.year = parseInt(matches[parsedIndexes.year]);\r\n }\r\n // 3-digit year\r\n if (parsedIndexes.year3 > -1) {\r\n var val = parseInt(matches[parsedIndexes.year3]);\r\n val += 1000;\r\n resValues.year = val;\r\n }\r\n // 2-digit year\r\n if (parsedIndexes.year2 > -1) {\r\n var val = parseInt(matches[parsedIndexes.year2]);\r\n if (val > 50) {\r\n val += 1000;\r\n }\r\n else {\r\n val += 2000;\r\n }\r\n resValues.year = val;\r\n }\r\n // 1-digit year\r\n if (parsedIndexes.year1 > -1) {\r\n var val = parseInt(matches[parsedIndexes.year1]);\r\n val = Math.floor((new Date().getFullYear()) / 10) * 10 + val;\r\n resValues.year = val;\r\n }\r\n // Full month\r\n if (parsedIndexes.monthLong > -1) {\r\n resValues.month = this.resolveMonth(matches[parsedIndexes.monthLong]);\r\n }\r\n // Short month\r\n if (parsedIndexes.monthShort > -1) {\r\n resValues.month = this.resolveShortMonth(matches[parsedIndexes.monthShort]);\r\n }\r\n // Numeric month\r\n if (parsedIndexes.month > -1) {\r\n resValues.month = parseInt(matches[parsedIndexes.month]) - 1;\r\n }\r\n // Weekday\r\n // @todo\r\n // Week\r\n if ((parsedIndexes.week > -1) && (parsedIndexes.day === -1)) {\r\n // We parse weeks ONLY if day is not explicitly set\r\n // TODO: this needs work\r\n // (but maybe later - I can hardly imagine anyone passing their dates in weeks)\r\n resValues.month = 0;\r\n resValues.day = $utils.getDayFromWeek(parseInt(matches[parsedIndexes.week]), resValues.year, 1, this.utc);\r\n }\r\n // Day\r\n if (parsedIndexes.day > -1) {\r\n resValues.day = parseInt(matches[parsedIndexes.day]);\r\n }\r\n // Year day\r\n if (parsedIndexes.yearDay > -1) {\r\n resValues.month = 0;\r\n resValues.day = parseInt(matches[parsedIndexes.yearDay]);\r\n }\r\n // 24 Hour (0-23)\r\n if (parsedIndexes.hourBase0 > -1) {\r\n resValues.hour = parseInt(matches[parsedIndexes.hourBase0]);\r\n }\r\n // 24 Hour (1-24)\r\n if (parsedIndexes.hourBase1 > -1) {\r\n resValues.hour = parseInt(matches[parsedIndexes.hourBase1]) - 1;\r\n }\r\n // 12 Hour (0-11)\r\n if (parsedIndexes.hour12Base0 > -1) {\r\n var val = parseInt(matches[parsedIndexes.hour12Base0]);\r\n if (val == 11) {\r\n val = 0;\r\n }\r\n if ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n val += 12;\r\n }\r\n resValues.hour = val;\r\n }\r\n // 12 Hour (1-12)\r\n if (parsedIndexes.hour12Base1 > -1) {\r\n var val = parseInt(matches[parsedIndexes.hour12Base1]);\r\n if (val == 12) {\r\n val = 0;\r\n }\r\n if ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n val += 12;\r\n }\r\n resValues.hour = val;\r\n }\r\n // Minute\r\n if (parsedIndexes.minute > -1) {\r\n resValues.minute = parseInt(matches[parsedIndexes.minute]);\r\n }\r\n // Second\r\n if (parsedIndexes.second > -1) {\r\n resValues.second = parseInt(matches[parsedIndexes.second]);\r\n }\r\n // Millisecond\r\n if (parsedIndexes.millisecond > -1) {\r\n var val = parseInt(matches[parsedIndexes.millisecond]);\r\n if (parsedIndexes.millisecondDigits == 2) {\r\n val *= 10;\r\n }\r\n else if (parsedIndexes.millisecondDigits == 1) {\r\n val *= 100;\r\n }\r\n resValues.millisecond = val;\r\n }\r\n // Timestamp\r\n if (parsedIndexes.timestamp > -1) {\r\n resValues.timestamp = parseInt(matches[parsedIndexes.timestamp]);\r\n var ts = new Date(resValues.timestamp);\r\n resValues.year = ts.getUTCFullYear();\r\n resValues.month = ts.getUTCMonth();\r\n resValues.day = ts.getUTCDate();\r\n resValues.hour = ts.getUTCHours();\r\n resValues.minute = ts.getUTCMinutes();\r\n resValues.second = ts.getUTCSeconds();\r\n resValues.millisecond = ts.getUTCMilliseconds();\r\n }\r\n // Adjust time zone\r\n if (parsedIndexes.zone > -1) {\r\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.zone]);\r\n }\r\n // ISO\r\n if (parsedIndexes.iso > -1) {\r\n resValues.year = $type.toNumber(matches[parsedIndexes.iso + 0]);\r\n resValues.month = $type.toNumber(matches[parsedIndexes.iso + 1]) - 1;\r\n resValues.day = $type.toNumber(matches[parsedIndexes.iso + 2]);\r\n resValues.hour = $type.toNumber(matches[parsedIndexes.iso + 3]);\r\n resValues.minute = $type.toNumber(matches[parsedIndexes.iso + 4]);\r\n resValues.second = $type.toNumber(matches[parsedIndexes.iso + 5]);\r\n resValues.millisecond = $type.toNumber(matches[parsedIndexes.iso + 6]);\r\n if (matches[parsedIndexes.iso + 7] == \"Z\" || matches[parsedIndexes.iso + 7] == \"z\") {\r\n resValues.utc = true;\r\n }\r\n else if (matches[parsedIndexes.iso + 7] != \"\") {\r\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.iso + 7]);\r\n }\r\n }\r\n // Create Date object\r\n if (resValues.utc) {\r\n res = new Date(Date.UTC(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute, resValues.second, resValues.millisecond));\r\n }\r\n else {\r\n res = new Date(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute + resValues.offset, resValues.second, resValues.millisecond);\r\n }\r\n }\r\n else {\r\n // Didn't match anything\r\n // Let's try dropping it into Date constructor and hope for the best\r\n res = new Date(source);\r\n }\r\n return res;\r\n };\r\n DateFormatter.prototype.resolveTimezoneOffset = function (date, zone) {\r\n var value = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\r\n if (value) {\r\n var match = $type.getValue(zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/));\r\n var dir = match[1];\r\n var hour = match[2];\r\n var minute = match[3];\r\n var offset = parseInt(hour) * 60 + parseInt(minute);\r\n // Adjust offset\r\n // Making it negative does not seem to make sense, but it's right\r\n // because of how JavaScript calculates GMT offsets\r\n if (dir == \"+\") {\r\n offset *= -1;\r\n }\r\n // Check the difference in offset\r\n var originalOffset = (date || new Date()).getTimezoneOffset();\r\n var diff = offset - originalOffset;\r\n return diff;\r\n }\r\n return 0;\r\n };\r\n /**\r\n * Resolves month name (i.e. \"December\") into a month number (11).\r\n *\r\n * @param value Month name\r\n * @return Month number\r\n */\r\n DateFormatter.prototype.resolveMonth = function (value) {\r\n // Let's try English first\r\n var month = this.months.indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Try the translation\r\n if (this.language && !this.language.isDefault()) {\r\n month = this.language.translateAll(this.months).indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n }\r\n return 0;\r\n };\r\n /**\r\n * Resolves short month name (i.e. \"Dec\") into a month number.\r\n *\r\n * @param value Short month name\r\n * @return Month number\r\n */\r\n DateFormatter.prototype.resolveShortMonth = function (value) {\r\n // Let's try English first\r\n var month = this.monthsShort.indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Maybe long month (workaround for May)\r\n month = this.months.indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Try the translation\r\n if (this.language && !this.language.isDefault()) {\r\n month = this.language.translateAll(this.monthsShort).indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n }\r\n return 0;\r\n };\r\n /**\r\n * Checks if passed in string represents AM/PM notation in many of its\r\n * versions.\r\n *\r\n * @param value Source string\r\n * @return Is it AM/PM?\r\n */\r\n DateFormatter.prototype.isAm = function (value) {\r\n var list = this.getStringList([\"AM\", \"A.M.\", \"A\"]);\r\n return list.indexOf(value.toUpperCase()) > -1;\r\n };\r\n /**\r\n * Invalidates related [[Sprite]] causing it to redraw.\r\n */\r\n DateFormatter.prototype.invalidateSprite = function () {\r\n if (this.sprite) {\r\n this.sprite.invalidate();\r\n }\r\n };\r\n /**\r\n * Translates list of strings.\r\n *\r\n * @param list Source strings\r\n * @return Translated strings\r\n */\r\n DateFormatter.prototype.getStringList = function (list) {\r\n var res = [];\r\n for (var i = 0; i < list.length; i++) {\r\n // translate?\r\n if (this.language) {\r\n res.push($utils.escapeForRgex(this.language.translate(list[i])));\r\n }\r\n else {\r\n res.push($utils.escapeForRgex(list[i]));\r\n }\r\n }\r\n return res;\r\n };\r\n Object.defineProperty(DateFormatter.prototype, \"dateFormat\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this._dateFormat;\r\n },\r\n /**\r\n * Date format to use.\r\n *\r\n * If format is not supplied in-line in the string, this setting will be\r\n * used.\r\n *\r\n * @default \"yyyy-MM-dd\"\r\n * @param value Date format\r\n */\r\n set: function (value) {\r\n this._dateFormat = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"inputDateFormat\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this._inputDateFormat;\r\n },\r\n /**\r\n * Date format to use when parsing dates.\r\n *\r\n * @default \"yyyy-MM-dd\"\r\n * @param value Date format\r\n */\r\n set: function (value) {\r\n this._inputDateFormat = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"intlLocales\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this._intlLocales;\r\n },\r\n /**\r\n * Locales if you are using date formats in `Intl.DateTimeFormatOptions` syntax.\r\n *\r\n * @param value Locales\r\n */\r\n set: function (value) {\r\n this._intlLocales = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"utc\", {\r\n /**\r\n * @return Use UTC?\r\n */\r\n get: function () {\r\n return this._utc;\r\n },\r\n /**\r\n * Should formatter use UTC functions?\r\n *\r\n * If UTC is used, all date/time values will be independent on client's\r\n * time zone.\r\n *\r\n * @param value Use UTC?\r\n */\r\n set: function (value) {\r\n this._utc = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"timezoneOffset\", {\r\n /**\r\n * @return Offset (minutes)\r\n */\r\n get: function () {\r\n return this._timezoneOffset;\r\n },\r\n /**\r\n * If set, will apply specific offset in minutes before formatting the date\r\n * text.\r\n *\r\n * The value is a number of minutes from target time zone to UTC.\r\n *\r\n * E.g. `300` will recalculate Dates in \"GMT-5\" time zone.\r\n *\r\n * @param value Offset (minutes)\r\n */\r\n set: function (value) {\r\n if (this._timezoneOffset != value) {\r\n this._timezoneOffset = value;\r\n this.invalidateSprite();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"timezone\", {\r\n /**\r\n * @return Timezone\r\n */\r\n get: function () {\r\n return this._timezone;\r\n },\r\n /**\r\n * If set, will format date/time in specific time zone.\r\n *\r\n * The value should be named time zone, e.g.:\r\n * `\"America/Vancouver\"`, `\"Australia/Sydney\"`, `\"UTC\"`.\r\n *\r\n * @since 4.10.1\r\n * @param value Timezone\r\n */\r\n set: function (value) {\r\n if (this._timezone != value) {\r\n this._timezone = value;\r\n this.timezoneMinutes = $time.getTimezoneMinutes(value);\r\n this.invalidateSprite();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"firstDayOfWeek\", {\r\n /**\r\n * @return First day of week\r\n */\r\n get: function () {\r\n return this._firstDayOfWeek;\r\n },\r\n /**\r\n * First day of the week:\r\n *\r\n * * 0 - Sunday\r\n * * 1 - Monday\r\n * * 2 - Tuesday\r\n *\r\n * Etc.\r\n *\r\n * @param value First day of week\r\n */\r\n set: function (value) {\r\n this._firstDayOfWeek = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"outputFormat\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Format\r\n */\r\n get: function () {\r\n return this._outputFormat;\r\n },\r\n /**\r\n * Output format for the formatted date.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Format\r\n */\r\n set: function (value) {\r\n this._outputFormat = value.toLowerCase();\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DateFormatter;\r\n}(BaseObject));\r\nexport { DateFormatter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DateFormatter\"] = DateFormatter;\r\n","/**\r\n * Duration formatting functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { BaseObject } from \"../Base\";\r\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * DurationFormatter class. Formats numbers as durations.\r\n *\r\n * `1000` as `16:40`\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Tutorial on duration formatting\r\n */\r\nvar DurationFormatter = /** @class */ (function (_super) {\r\n __extends(DurationFormatter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DurationFormatter() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A base value for negative numbers. Will treat all numbers below this value\r\n * as negative numbers.\r\n */\r\n _this._negativeBase = 0;\r\n /**\r\n * A base unit to consider values are in.\r\n *\r\n * @default \"s\"\r\n */\r\n _this._baseUnit = \"second\";\r\n /**\r\n * Output format to produce. If the format calls for applying color to the\r\n * formatted value, this setting will determine what markup to use: SVG or\r\n * HTML.\r\n *\r\n * Available options: svg, html.\r\n *\r\n * @default \"svg\"\r\n */\r\n _this._outputFormat = \"svg\";\r\n /**\r\n * How many milliseconds each unit represents.\r\n */\r\n _this._unitValues = {\r\n \"millisecond\": 1,\r\n \"second\": 1000,\r\n \"minute\": 60000,\r\n \"hour\": 3600000,\r\n \"day\": 86400000,\r\n \"week\": 604800000,\r\n \"month\": 2592000000,\r\n \"year\": 31536000000,\r\n };\r\n /**\r\n * Collection of aliases for units.\r\n */\r\n _this._unitAliases = {\r\n \"Y\": \"y\",\r\n \"D\": \"d\",\r\n \"H\": \"h\",\r\n \"K\": \"h\",\r\n \"k\": \"h\",\r\n \"n\": \"S\"\r\n };\r\n _this.className = \"DurationFormatter\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Formats the number according as duration.\r\n *\r\n * For example `1000` (base unit seconds) would be converted to `16:40` as in\r\n * 16 minutes and 40 seconds.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Tutorial on duration formatting\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @param base Override base unit\r\n * @return Formatted number\r\n */\r\n DurationFormatter.prototype.format = function (value, format, base) {\r\n // no language?\r\n if (!this.language) {\r\n if (this.sprite) {\r\n this.language = this.sprite.language;\r\n }\r\n else {\r\n this.language = new Language;\r\n }\r\n }\r\n // no base unit?\r\n var baseUnit = base || this._baseUnit;\r\n // no format passed in or empty\r\n if (typeof format === \"undefined\" || format === \"\") {\r\n if ($type.hasValue(this.durationFormat)) {\r\n format = this.durationFormat;\r\n }\r\n else {\r\n format = this.getFormat($type.toNumber(value), null, baseUnit);\r\n }\r\n }\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // get format info (it will also deal with parser caching)\r\n var info = this.parseFormat(format, baseUnit);\r\n // cast to number just in case\r\n // TODO: maybe use better casting\r\n var source = Number(value);\r\n // format and replace the number\r\n var details;\r\n if (source > this._negativeBase) {\r\n details = info.positive;\r\n }\r\n else if (source < this._negativeBase) {\r\n details = info.negative;\r\n }\r\n else {\r\n details = info.zero;\r\n }\r\n // Format\r\n var formatted = this.applyFormat(source, details);\r\n // Apply color?\r\n if (details.color !== \"\") {\r\n if (this._outputFormat === \"svg\") {\r\n formatted = \"<tspan fill='\" + details.color + \"'>\" + formatted + \"</tspan>\";\r\n }\r\n else if (this._outputFormat === \"html\") {\r\n formatted = \"<span style='color: \" + details.color + \";'>\" + formatted + \"</span>\";\r\n }\r\n }\r\n return formatted;\r\n };\r\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param base Override base unit\r\n * @return Parsed information\r\n */\r\n DurationFormatter.prototype.parseFormat = function (format, base) {\r\n var _this = this;\r\n // Check cache\r\n var cached = this.getCache(format);\r\n if ($type.hasValue(cached)) {\r\n return cached;\r\n }\r\n // no base unit?\r\n var baseUnit = base || this._baseUnit;\r\n // Initialize duration parsing info\r\n var info = {\r\n \"positive\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n },\r\n \"negative\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n },\r\n \"zero\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n }\r\n };\r\n // Escape double vertical bars (that mean display one vertical bar)\r\n format = format.replace(\"||\", $strings.PLACEHOLDER2);\r\n // Split it up and deal with different formats\r\n var parts = format.split(\"|\");\r\n info.positive.source = parts[0];\r\n if (typeof parts[2] === \"undefined\") {\r\n info.zero = info.positive;\r\n }\r\n else {\r\n info.zero.source = parts[2];\r\n }\r\n if (typeof parts[1] === \"undefined\") {\r\n info.negative = info.positive;\r\n }\r\n else {\r\n info.negative.source = parts[1];\r\n }\r\n // Parse each\r\n $object.each(info, function (part, item) {\r\n // Already parsed\r\n if (item.parsed) {\r\n return;\r\n }\r\n // Check cached\r\n if (typeof _this.getCache(item.source) !== \"undefined\") {\r\n info[part] = _this.getCache(item.source);\r\n return;\r\n }\r\n // Begin parsing\r\n var partFormat = item.source;\r\n // Check for [] directives\r\n var dirs = [];\r\n dirs = item.source.match(/^\\[([^\\]]*)\\]/);\r\n if (dirs && dirs.length && dirs[0] !== \"\") {\r\n partFormat = item.source.substr(dirs[0].length);\r\n item.color = dirs[1];\r\n }\r\n // Let TextFormatter split into chunks\r\n var chunks = getTextFormatter().chunk(partFormat, true);\r\n for (var i = 0; i < chunks.length; i++) {\r\n var chunk = chunks[i];\r\n // replace back double vertical bar\r\n chunk.text = chunk.text.replace($strings.PLACEHOLDER2, \"|\");\r\n if (chunk.type === \"value\") {\r\n // Just \"Duration\"?\r\n // if (chunk.text.toLowerCase() === \"duration\") {\r\n // \tchunk.text = durationFormat;\r\n // }\r\n // Check for \"a\" (absolute) modifier\r\n if (chunk.text.match(/[yYMdDwhHKkmsSn]+a/)) {\r\n item.absolute = true;\r\n chunk.text = chunk.text.replace(/([yYMdDwhHKkmsSn]+)a/, \"$1\");\r\n }\r\n // Find all possible parts\r\n var matches = chunk.text.match(/y+|Y+|M+|d+|D+|w+|h+|H+|K+|k+|m+|s+|S+|n+/g);\r\n if (matches) {\r\n // Populate template\r\n for (var x = 0; x < matches.length; x++) {\r\n // Is it an alias?\r\n if (!$type.hasValue(matches[x])) {\r\n matches[x] = _this._unitAliases[matches[x]];\r\n }\r\n item.parts.push(matches[x]);\r\n chunk.text = chunk.text.replace(matches[x], $strings.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n // Apply to template\r\n item.template += chunk.text;\r\n }\r\n // Apply style formatting\r\n //item.template = getTextFormatter().format(item.template, this.outputFormat);\r\n // Save cache\r\n _this.setCache(item.source, item);\r\n // Mark this as parsed\r\n item.parsed = true;\r\n });\r\n // Save cache (the whole thing)\r\n this.setCache(format, info);\r\n return info;\r\n };\r\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by {parseFormat}\r\n * @return Formatted duration\r\n */\r\n DurationFormatter.prototype.applyFormat = function (value, details) {\r\n // Use absolute values\r\n var negative = !details.absolute && (value < this._negativeBase);\r\n value = Math.abs(value);\r\n // Recalculate to milliseconds\r\n var tstamp = this.toTimeStamp(value, details.baseUnit);\r\n // Init return value\r\n var res = details.template;\r\n // Iterate through duration parts\r\n for (var i = 0, len = details.parts.length; i < len; i++) {\r\n // Gather the part\r\n var part = details.parts[i];\r\n var unit = this.toTimeUnit(part.substr(0, 1));\r\n var digits = part.length;\r\n // Calculate current unit value\r\n var ints = Math.floor(tstamp / this._unitValues[unit]);\r\n res = res.replace($strings.PLACEHOLDER, $utils.padString(ints, digits, \"0\"));\r\n // Reduce timestamp\r\n tstamp -= ints * this._unitValues[unit];\r\n }\r\n // Reapply negative sign\r\n if (negative) {\r\n res = \"-\" + res;\r\n }\r\n return res;\r\n };\r\n /**\r\n * Converts numeric value to timestamp in milliseconds.\r\n *\r\n * @param value A source value\r\n * @param baseUnit Base unit the source value is in: \"q\", \"s\", \"i\", \"h\", \"d\", \"w\", \"m\", \"y\"\r\n * @return Value representation as a timestamp in milliseconds\r\n */\r\n DurationFormatter.prototype.toTimeStamp = function (value, baseUnit) {\r\n return value * this._unitValues[baseUnit];\r\n };\r\n DurationFormatter.prototype.toTimeUnit = function (code) {\r\n switch (code) {\r\n case \"S\":\r\n return \"millisecond\";\r\n case \"s\":\r\n return \"second\";\r\n case \"m\":\r\n return \"minute\";\r\n case \"h\":\r\n return \"hour\";\r\n case \"d\":\r\n return \"day\";\r\n case \"w\":\r\n return \"week\";\r\n case \"M\":\r\n return \"month\";\r\n case \"y\":\r\n return \"year\";\r\n }\r\n ;\r\n };\r\n /**\r\n * Invalidates the parent [[Sprite]] object.\r\n */\r\n DurationFormatter.prototype.invalidateSprite = function () {\r\n if (this.sprite) {\r\n this.sprite.invalidate();\r\n }\r\n };\r\n Object.defineProperty(DurationFormatter.prototype, \"baseUnit\", {\r\n /**\r\n * @return Base unit\r\n */\r\n get: function () {\r\n return this._baseUnit;\r\n },\r\n /**\r\n * Base unit the values are in.\r\n *\r\n * A base unit will be used to recalculate the numeric value to millisecond\r\n * timestamps.\r\n *\r\n * Available options:\r\n *\r\n * * \"millisecond\"\r\n * * \"second\"\r\n * * \"minute\"\r\n * * \"hour\"\r\n * * \"day\"\r\n * * \"week\"\r\n * * \"month\"\r\n * * \"year\"\r\n *\r\n * @default \"s\"\r\n * @param baseUnit A base unit\r\n */\r\n set: function (baseUnit) {\r\n this._baseUnit = baseUnit;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DurationFormatter.prototype, \"outputFormat\", {\r\n /**\r\n * Getter for output format.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Output format\r\n */\r\n get: function () {\r\n return this._outputFormat;\r\n },\r\n /**\r\n * Setter for output format: \"svg\" or \"html.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Output format\r\n */\r\n set: function (outputFormat) {\r\n this._outputFormat = outputFormat.toLowerCase();\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns appropriate default format for the value.\r\n *\r\n * If `maxValue` is sepcified, it will use that value to determine the time\r\n * unit for the format.\r\n *\r\n * For example if your `baseUnit` is `\"second\"` and you pass in `10`, you\r\n * will get `\"10\"`.\r\n *\r\n * However, you might want it to be formatted in the context of bigger scale,\r\n * say 10 minutes (600 seconds). If you pass in `600` as `maxValue`, all\r\n * values, including small ones will use format with minutes, e.g.:\r\n * `00:10`, `00:50`, `12: 30`, etc.\r\n *\r\n * @param value Value to format\r\n * @param maxValue Maximum value to be used to determine format\r\n * @param baseUnit Base unit of the value\r\n * @return Format\r\n */\r\n DurationFormatter.prototype.getFormat = function (value, maxValue, baseUnit) {\r\n // Is format override set?\r\n if ($type.hasValue(this.durationFormat)) {\r\n return this.durationFormat;\r\n }\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.baseUnit;\r\n }\r\n if ($type.hasValue(maxValue) && value != maxValue) {\r\n value = Math.abs(value);\r\n maxValue = Math.abs(maxValue);\r\n var maxUnit = this.getValueUnit($math.max(value, maxValue), baseUnit);\r\n //let diffUnit = this.getValueUnit(Math.abs(maxValue - value), baseUnit);\r\n //console.log(maxUnit, diffUnit);\r\n return this.durationFormats[baseUnit][maxUnit];\r\n }\r\n else {\r\n var unit = this.getValueUnit(value, baseUnit);\r\n return this.durationFormats[baseUnit][unit];\r\n }\r\n };\r\n /**\r\n * Returns value's closest denominator time unit, e.g 100 seconds is\r\n * `\"minute\"`, while 59 seconds would still be `second`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Denominator\r\n */\r\n DurationFormatter.prototype.getValueUnit = function (value, baseUnit) {\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.baseUnit;\r\n }\r\n // Convert to milliseconds\r\n var currentUnit;\r\n var ms = this.getMilliseconds(value, baseUnit);\r\n $object.eachContinue(this._unitValues, function (key, val) {\r\n if (key == baseUnit || currentUnit) {\r\n var num = ms / val;\r\n if (num <= 1) {\r\n if (!currentUnit) {\r\n currentUnit = key;\r\n }\r\n return false;\r\n }\r\n currentUnit = key;\r\n }\r\n return true;\r\n });\r\n return currentUnit;\r\n };\r\n /**\r\n * Converts value to milliseconds according to `baseUnit`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Value in milliseconds\r\n */\r\n DurationFormatter.prototype.getMilliseconds = function (value, baseUnit) {\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.baseUnit;\r\n }\r\n return value * this._unitValues[baseUnit];\r\n };\r\n Object.defineProperty(DurationFormatter.prototype, \"durationFormat\", {\r\n /**\r\n * @return Format\r\n */\r\n get: function () {\r\n return this._durationFormat;\r\n },\r\n /**\r\n * If set, this format will be used instead of the one determined dynamically\r\n * based on the basedUnit and range of values.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Available fomatting codes\r\n * @param value Format\r\n */\r\n set: function (value) {\r\n if (this._durationFormat != value) {\r\n this._durationFormat = value;\r\n this.invalidateSprite();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DurationFormatter.prototype, \"durationFormats\", {\r\n /**\r\n * @return Formats\r\n */\r\n get: function () {\r\n if (!this._durationFormats) {\r\n this._durationFormats = {\r\n \"millisecond\": {\r\n \"millisecond\": this.language.translate(\"_duration_millisecond\"),\r\n \"second\": this.language.translate(\"_duration_millisecond_second\"),\r\n \"minute\": this.language.translate(\"_duration_millisecond_minute\"),\r\n \"hour\": this.language.translate(\"_duration_millisecond_hour\"),\r\n \"day\": this.language.translate(\"_duration_millisecond_day\"),\r\n \"week\": this.language.translate(\"_duration_millisecond_week\"),\r\n \"month\": this.language.translate(\"_duration_millisecond_month\"),\r\n \"year\": this.language.translate(\"_duration_millisecond_year\")\r\n },\r\n \"second\": {\r\n \"second\": this.language.translate(\"_duration_second\"),\r\n \"minute\": this.language.translate(\"_duration_second_minute\"),\r\n \"hour\": this.language.translate(\"_duration_second_hour\"),\r\n \"day\": this.language.translate(\"_duration_second_day\"),\r\n \"week\": this.language.translate(\"_duration_second_week\"),\r\n \"month\": this.language.translate(\"_duration_second_month\"),\r\n \"year\": this.language.translate(\"_duration_second_year\")\r\n },\r\n \"minute\": {\r\n \"minute\": this.language.translate(\"_duration_minute\"),\r\n \"hour\": this.language.translate(\"_duration_minute_hour\"),\r\n \"day\": this.language.translate(\"_duration_minute_day\"),\r\n \"week\": this.language.translate(\"_duration_minute_week\"),\r\n \"month\": this.language.translate(\"_duration_minute_month\"),\r\n \"year\": this.language.translate(\"_duration_minute_year\")\r\n },\r\n \"hour\": {\r\n \"hour\": this.language.translate(\"_duration_hour\"),\r\n \"day\": this.language.translate(\"_duration_hour_day\"),\r\n \"week\": this.language.translate(\"_duration_hour_week\"),\r\n \"month\": this.language.translate(\"_duration_hour_month\"),\r\n \"year\": this.language.translate(\"_duration_hour_year\")\r\n },\r\n \"day\": {\r\n \"day\": this.language.translate(\"_duration_day\"),\r\n \"week\": this.language.translate(\"_duration_day_week\"),\r\n \"month\": this.language.translate(\"_duration_day_month\"),\r\n \"year\": this.language.translate(\"_duration_day_year\")\r\n },\r\n \"week\": {\r\n \"week\": this.language.translate(\"_duration_week\"),\r\n \"month\": this.language.translate(\"_duration_week_month\"),\r\n \"year\": this.language.translate(\"_duration_week_year\")\r\n },\r\n \"month\": {\r\n \"month\": this.language.translate(\"_duration_month\"),\r\n \"year\": this.language.translate(\"_duration_month_year\")\r\n },\r\n \"year\": {\r\n \"year\": this.language.translate(\"_duration_year\")\r\n }\r\n };\r\n }\r\n return this._durationFormats;\r\n },\r\n /**\r\n * Duration formats for various combination of base units.\r\n *\r\n * @param value Formats\r\n */\r\n set: function (value) {\r\n this._durationFormats = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DurationFormatter;\r\n}(BaseObject));\r\nexport { DurationFormatter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DurationFormatter\"] = DurationFormatter;\r\n","/**\r\n * Number formatting-related functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { BaseObject } from \"../Base\";\r\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * NumberFormatter class. Formats numbers according to specified formats.\r\n *\r\n * @todo Apply translations to suffixes/prefixes\r\n */\r\nvar NumberFormatter = /** @class */ (function (_super) {\r\n __extends(NumberFormatter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function NumberFormatter() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A base value for negative numbers. Will treat all numbers below this value\r\n * as negative numbers.\r\n */\r\n _this._negativeBase = 0;\r\n /**\r\n * Holds number format.\r\n *\r\n * @default #,###.#####\r\n */\r\n _this._numberFormat = \"#,###.#####\";\r\n /**\r\n * Output format to produce. If the format calls for applying color to the\r\n * formatted value, this setting will determine what markup to use: SVG or\r\n * HTML.\r\n *\r\n * Available options: svg, html.\r\n *\r\n * @default \"svg\"\r\n */\r\n _this._outputFormat = \"svg\";\r\n /**\r\n * Any number smaller than this will be considered \"small\" number, which will\r\n * trigger special formatting if \"a\" format modifier is used.\r\n */\r\n _this._smallNumberThreshold = 1.00;\r\n _this._forceLTR = false;\r\n _this.className = \"NumberFormatter\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n NumberFormatter.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this.language) {\r\n this.language.dispose();\r\n }\r\n };\r\n Object.defineProperty(NumberFormatter.prototype, \"language\", {\r\n /**\r\n * @return Language\r\n */\r\n get: function () {\r\n if (!this._language) {\r\n if (this.sprite) {\r\n this._language = this.sprite.language;\r\n }\r\n else {\r\n this._language = new Language;\r\n }\r\n }\r\n return this._language;\r\n },\r\n /**\r\n * A reference to [[Language]] instance.\r\n *\r\n * Formatter will use language to translate various items, like number\r\n * suffixes, etc.\r\n *\r\n * @param value Language\r\n */\r\n set: function (value) {\r\n this._language = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Formats the number according to specific format.\r\n *\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @return Formatted number\r\n */\r\n NumberFormatter.prototype.format = function (value, format, precision) {\r\n // no format passed in or \"Number\"\r\n if (typeof format === \"undefined\" || ($type.isString(format) && format.toLowerCase() === \"number\")) {\r\n format = this._numberFormat;\r\n }\r\n // Init return value\r\n var formatted;\r\n // Cast to number just in case\r\n // TODO: maybe use better casting\r\n var source = Number(value);\r\n // Is it a built-in format or Intl.NumberFormatOptions\r\n if ($type.isObject(format)) {\r\n try {\r\n if (this.intlLocales) {\r\n return new Intl.NumberFormat(this.intlLocales, format).format(source);\r\n }\r\n else {\r\n return new Intl.NumberFormat(undefined, format).format(source);\r\n }\r\n }\r\n catch (e) {\r\n return \"Invalid\";\r\n }\r\n }\r\n else {\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // Get format info (it will also deal with parser caching)\r\n var info = this.parseFormat(format, this.language);\r\n // format and replace the number\r\n var details = void 0;\r\n if (source > this._negativeBase) {\r\n details = info.positive;\r\n }\r\n else if (source < this._negativeBase) {\r\n details = info.negative;\r\n }\r\n else {\r\n details = info.zero;\r\n }\r\n // Adjust precision\r\n if ($type.hasValue(precision) && !details.mod) {\r\n details = $object.clone(details);\r\n details.decimals.active = source == 0 ? 0 : precision;\r\n }\r\n // Format\r\n formatted = details.template.split($strings.PLACEHOLDER).join(this.applyFormat(source, details));\r\n }\r\n if (this.forceLTR) {\r\n formatted = \"‎\" + formatted;\r\n }\r\n return formatted;\r\n };\r\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param language Language\r\n */\r\n NumberFormatter.prototype.parseFormat = function (format, language) {\r\n var _this = this;\r\n // Check cache\r\n var cached = this.getCache(format);\r\n if ($type.hasValue(cached)) {\r\n return cached;\r\n }\r\n // init format parse info holder\r\n var info = {\r\n \"positive\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": language.translateEmpty(\"_thousandSeparator\")\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": language.translateEmpty(\"_decimalSeparator\")\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n },\r\n \"negative\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": language.translateEmpty(\"_thousandSeparator\")\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": language.translateEmpty(\"_decimalSeparator\")\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n },\r\n \"zero\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": language.translateEmpty(\"_thousandSeparator\")\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": language.translateEmpty(\"_decimalSeparator\")\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n }\r\n };\r\n // Escape double vertical bars (that mean display one vertical bar)\r\n format = format.replace(\"||\", $strings.PLACEHOLDER2);\r\n // Split it up and deal with different formats\r\n var parts = format.split(\"|\");\r\n info.positive.source = parts[0];\r\n if (typeof parts[2] === \"undefined\") {\r\n info.zero = info.positive;\r\n }\r\n else {\r\n info.zero.source = parts[2];\r\n }\r\n if (typeof parts[1] === \"undefined\") {\r\n info.negative = info.positive;\r\n }\r\n else {\r\n info.negative.source = parts[1];\r\n }\r\n // Parse each\r\n $object.each(info, function (part, item) {\r\n // Already parsed\r\n if (item.parsed) {\r\n return;\r\n }\r\n // Check cached\r\n if (typeof _this.getCache(item.source) !== \"undefined\") {\r\n info[part] = _this.getCache(item.source);\r\n return;\r\n }\r\n // Begin parsing\r\n var partFormat = item.source;\r\n // Just \"Number\"?\r\n if (partFormat.toLowerCase() === \"number\") {\r\n partFormat = $type.isString(_this._numberFormat) ? _this._numberFormat : \"#,###.#####\";\r\n }\r\n // Let TextFormatter split into chunks\r\n var chunks = getTextFormatter().chunk(partFormat, true);\r\n for (var i = 0; i < chunks.length; i++) {\r\n var chunk = chunks[i];\r\n // replace back double vertical bar\r\n chunk.text = chunk.text.replace($strings.PLACEHOLDER2, \"|\");\r\n if (chunk.type === \"value\") {\r\n // Parse format\r\n // Look for codes\r\n var matches = chunk.text.match(/[#0.,]+[ ]?[abespABESP%!]?[abespABESP‰!]?/);\r\n if (matches) {\r\n if (matches === null || matches[0] === \"\") {\r\n // no codes here - assume string\r\n // nothing to do here\r\n item.template += chunk.text;\r\n }\r\n else {\r\n // look for the format modifiers at the end\r\n var mods = matches[0].match(/[abespABESP%‰!]{2}|[abespABESP%‰]{1}$/);\r\n if (mods) {\r\n item.mod = mods[0].toLowerCase();\r\n item.modSpacing = matches[0].match(/[ ]{1}[abespABESP%‰!]{1}$/) ? true : false;\r\n }\r\n // break the format up\r\n var a = matches[0].split(\".\");\r\n // Deal with thousands\r\n if (a[0] === \"\") {\r\n // No directives for thousands\r\n // Leave default settings (no formatting)\r\n }\r\n else {\r\n // Counts\r\n item.thousands.active = (a[0].match(/0/g) || []).length;\r\n item.thousands.passive = (a[0].match(/\\#/g) || []).length + item.thousands.active;\r\n // Separator interval\r\n var b = a[0].split(\",\");\r\n if (b.length === 1) {\r\n // No thousands separators\r\n // Do nothing\r\n }\r\n else {\r\n // Use length fo the last chunk as thousands length\r\n item.thousands.interval = $type.getValue(b.pop()).length;\r\n if (item.thousands.interval === 0) {\r\n item.thousands.interval = -1;\r\n }\r\n }\r\n }\r\n // Deal with decimals\r\n if (typeof (a[1]) === \"undefined\") {\r\n // No directives for decimals\r\n // Leave at defaults (no formatting)\r\n }\r\n else {\r\n // Counts\r\n item.decimals.active = (a[1].match(/0/g) || []).length;\r\n item.decimals.passive = (a[1].match(/\\#/g) || []).length + item.decimals.active;\r\n }\r\n // Add special code to template\r\n item.template += chunk.text.split(matches[0]).join($strings.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n else {\r\n // Quoted string - take it as it is\r\n item.template += chunk.text;\r\n }\r\n }\r\n // Apply style formatting\r\n //item.template = getTextFormatter().format(item.template, this.outputFormat);\r\n // Save cache\r\n _this.setCache(item.source, item);\r\n // Mark this as parsed\r\n item.parsed = true;\r\n });\r\n // Save cache (the whole thing)\r\n this.setCache(format, info);\r\n return info;\r\n };\r\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by parseFormat()\r\n * @return Formatted number\r\n */\r\n NumberFormatter.prototype.applyFormat = function (value, details) {\r\n // Use absolute values\r\n var negative = value < 0;\r\n value = Math.abs(value);\r\n // Recalculate according to modifier\r\n var prefix = \"\", suffix = \"\";\r\n var mods = details.mod ? details.mod.split(\"\") : [];\r\n if (mods.indexOf(\"b\") !== -1) {\r\n var a_1 = this.applyPrefix(value, this.bytePrefixes, mods.indexOf(\"!\") !== -1);\r\n value = a_1[0];\r\n prefix = a_1[1];\r\n suffix = a_1[2];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (mods.indexOf(\"a\") !== -1) {\r\n var a_2 = this.applyPrefix(value, value < this.smallNumberThreshold ? this.smallNumberPrefixes : this.bigNumberPrefixes, mods.indexOf(\"!\") !== -1);\r\n value = a_2[0];\r\n prefix = a_2[1];\r\n suffix = a_2[2];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (mods.indexOf(\"p\") !== -1) {\r\n var ol = Math.min(value.toString().length + 2, 21);\r\n //value *= 100;\r\n value = parseFloat(value.toPrecision(ol));\r\n prefix = this.language.translate(\"_percentPrefix\") || \"\";\r\n suffix = this.language.translate(\"_percentSuffix\") || \"\";\r\n if (prefix == \"\" && suffix == \"\") {\r\n suffix = \"%\";\r\n }\r\n }\r\n else if (mods.indexOf(\"%\") !== -1) {\r\n var ol = $math.min(value.toString().length + 2, 21);\r\n value *= 100;\r\n value = parseFloat(value.toPrecision(ol));\r\n suffix = \"%\";\r\n }\r\n else if (mods.indexOf(\"‰\") !== -1) {\r\n var ol = $math.min(value.toString().length + 3, 21);\r\n value *= 1000;\r\n value = parseFloat(value.toPrecision(ol));\r\n suffix = \"‰\";\r\n }\r\n // Round to passive\r\n if (mods.indexOf(\"e\") !== -1) {\r\n // convert the value to exponential\r\n var exp = void 0;\r\n if (details.decimals.passive >= 0) {\r\n exp = value.toExponential(details.decimals.passive).split(\"e\");\r\n }\r\n else {\r\n exp = value.toExponential().split(\"e\");\r\n }\r\n value = Number(exp[0]);\r\n suffix = \"e\" + exp[1];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (details.decimals.passive === 0) {\r\n value = Math.round(value);\r\n }\r\n else if (details.decimals.passive > 0) {\r\n var d = Math.pow(10, details.decimals.passive);\r\n value = Math.round(value * d) / d;\r\n }\r\n // Init return value\r\n var res = \"\";\r\n // Calc integer and decimal parts\r\n var a = $utils.numberToString(value).split(\".\");\r\n // Format integers\r\n var ints = a[0];\r\n // Pad integers to active length\r\n if (ints.length < details.thousands.active) {\r\n ints = Array(details.thousands.active - ints.length + 1).join(\"0\") + ints;\r\n }\r\n // Insert thousands separators\r\n if (details.thousands.interval > 0) {\r\n var ip = [];\r\n var intsr = ints.split(\"\").reverse().join(\"\");\r\n for (var i = 0, len = ints.length; i <= len; i += details.thousands.interval) {\r\n var c = intsr.substr(i, details.thousands.interval).split(\"\").reverse().join(\"\");\r\n if (c !== \"\") {\r\n ip.unshift(c);\r\n }\r\n }\r\n ints = ip.join(details.thousands.separator);\r\n }\r\n // Add integers\r\n res += ints;\r\n // Add decimals\r\n if (a.length === 1) {\r\n a.push(\"\");\r\n }\r\n var decs = a[1];\r\n // Fill zeros?\r\n if (decs.length < details.decimals.active) {\r\n decs += Array(details.decimals.active - decs.length + 1).join(\"0\");\r\n }\r\n if (decs !== \"\") {\r\n res += details.decimals.separator + decs;\r\n }\r\n // Can't have empty return value\r\n if (res === \"\") {\r\n res = \"0\";\r\n }\r\n // Add minus sign back\r\n if (value !== 0 && negative && (mods.indexOf(\"s\") === -1)) {\r\n res = \"-\" + res;\r\n }\r\n // Add suffixes/prefixes\r\n if (prefix) {\r\n res = prefix + res;\r\n }\r\n if (suffix) {\r\n res += suffix;\r\n }\r\n return res;\r\n };\r\n /**\r\n * Chooses appropriate prefix and suffix based on the passed in rules.\r\n *\r\n * @param value Value\r\n * @param prefixes Prefix array\r\n * @param force Force application of a first prefix (@sice 4.5.4)\r\n * @return Result\r\n */\r\n NumberFormatter.prototype.applyPrefix = function (value, prefixes, force) {\r\n if (force === void 0) { force = false; }\r\n var newvalue = value;\r\n var prefix = \"\";\r\n var suffix = \"\";\r\n var applied = false;\r\n var k = 1;\r\n for (var i = 0, len = prefixes.length; i < len; i++) {\r\n if (prefixes[i].number <= value) {\r\n if (prefixes[i].number === 0) {\r\n newvalue = 0;\r\n }\r\n else {\r\n newvalue = value / prefixes[i].number;\r\n k = prefixes[i].number;\r\n }\r\n prefix = prefixes[i].prefix;\r\n suffix = prefixes[i].suffix;\r\n applied = true;\r\n }\r\n }\r\n if (!applied && force && prefixes.length && value != 0) {\r\n // Prefix was not applied. Use the first prefix.\r\n newvalue = value / prefixes[0].number;\r\n prefix = prefixes[0].prefix;\r\n suffix = prefixes[0].suffix;\r\n applied = true;\r\n }\r\n if (applied) {\r\n newvalue = parseFloat(newvalue.toPrecision($math.min(k.toString().length + Math.floor(newvalue).toString().replace(/[^0-9]*/g, \"\").length, 21)));\r\n }\r\n return [newvalue, prefix, suffix];\r\n };\r\n /**\r\n * Invalidates the parent [[Sprite]] object.\r\n */\r\n NumberFormatter.prototype.invalidateSprite = function () {\r\n if (this.sprite) {\r\n this.sprite.invalidate();\r\n }\r\n };\r\n Object.defineProperty(NumberFormatter.prototype, \"numberFormat\", {\r\n /**\r\n * @return A format to use for number formatting\r\n */\r\n get: function () {\r\n return this._numberFormat;\r\n },\r\n /**\r\n * Number format.\r\n *\r\n * @default \"#,###.#####\"\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param format A format to use for number formatting\r\n */\r\n set: function (format) {\r\n this._numberFormat = format;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"intlLocales\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this._intlLocales;\r\n },\r\n /**\r\n * Locales if you are using date formats in `Intl.NumberFormatOptions` syntax.\r\n *\r\n * @see (@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat) about using Intl for number formatting\r\n * @param value Locales\r\n */\r\n set: function (value) {\r\n this._intlLocales = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"negativeBase\", {\r\n /**\r\n * @return A format to use for number formatting\r\n */\r\n get: function () {\r\n return this._negativeBase;\r\n },\r\n /**\r\n * Negative base for negative numbers.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param format A format to use for number formatting\r\n */\r\n set: function (value) {\r\n this._negativeBase = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"bigNumberPrefixes\", {\r\n /**\r\n * @return Prefixes for big numbers\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._bigNumberPrefixes)) {\r\n this._bigNumberPrefixes = [\r\n { \"number\": 1e+3, \"suffix\": this.language.translate(\"_big_number_suffix_3\") },\r\n { \"number\": 1e+6, \"suffix\": this.language.translate(\"_big_number_suffix_6\") },\r\n { \"number\": 1e+9, \"suffix\": this.language.translate(\"_big_number_suffix_9\") },\r\n { \"number\": 1e+12, \"suffix\": this.language.translate(\"_big_number_suffix_12\") },\r\n { \"number\": 1e+15, \"suffix\": this.language.translate(\"_big_number_suffix_15\") },\r\n { \"number\": 1e+18, \"suffix\": this.language.translate(\"_big_number_suffix_18\") },\r\n { \"number\": 1e+21, \"suffix\": this.language.translate(\"_big_number_suffix_21\") },\r\n { \"number\": 1e+24, \"suffix\": this.language.translate(\"_big_number_suffix_24\") }\r\n ];\r\n }\r\n return this._bigNumberPrefixes;\r\n },\r\n /**\r\n * Prefixes for big numbers.\r\n *\r\n * It's an array of objects of number/prefix pairs.\r\n *\r\n * ```JSON\r\n * [\r\n * { \"number\": 1e+3, \"suffix\": \"K\" },\r\n * { \"number\": 1e+6, \"suffix\": \"M\" },\r\n * { \"number\": 1e+9, \"suffix\": \"G\" },\r\n * { \"number\": 1e+12, \"suffix\": \"T\" },\r\n * { \"number\": 1e+15, \"suffix\": \"P\" },\r\n * { \"number\": 1e+18, \"suffix\": \"E\" },\r\n * { \"number\": 1e+21, \"suffix\": \"Z\" },\r\n * { \"number\": 1e+24, \"suffix\": \"Y\" }\r\n * ]\r\n * ```\r\n *\r\n * If the number is bigger than the `number` ir will be converted to the\r\n * appropriate bigger number with prefix.\r\n *\r\n * E.g. as per above `1500` will be converted to `1.5K`.\r\n *\r\n * Please note that for this transformation to be enabled, you need to\r\n * enable it specific modifier in your format setting.\r\n *\r\n * The modifier for big/small number modification is \"a\":\r\n *\r\n * ```Text\r\n * {myfield.formatNumber(\"#,###.00a\")}\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param prefixes Prefixes for big numbers\r\n */\r\n set: function (prefixes) {\r\n this._bigNumberPrefixes = prefixes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"smallNumberPrefixes\", {\r\n /**\r\n * @return Prefixes for small numbers\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._smallNumberPrefixes)) {\r\n this._smallNumberPrefixes = [\r\n { \"number\": 1e-24, \"suffix\": this.language.translate(\"_small_number_suffix_24\") },\r\n { \"number\": 1e-21, \"suffix\": this.language.translate(\"_small_number_suffix_21\") },\r\n { \"number\": 1e-18, \"suffix\": this.language.translate(\"_small_number_suffix_18\") },\r\n { \"number\": 1e-15, \"suffix\": this.language.translate(\"_small_number_suffix_15\") },\r\n { \"number\": 1e-12, \"suffix\": this.language.translate(\"_small_number_suffix_12\") },\r\n { \"number\": 1e-9, \"suffix\": this.language.translate(\"_small_number_suffix_9\") },\r\n { \"number\": 1e-6, \"suffix\": this.language.translate(\"_small_number_suffix_6\") },\r\n { \"number\": 1e-3, \"suffix\": this.language.translate(\"_small_number_suffix_3\") }\r\n ];\r\n }\r\n return this._smallNumberPrefixes;\r\n },\r\n /**\r\n * Prefixes for big numbers.\r\n *\r\n * It's an array of objects of number/prefix pairs.\r\n *\r\n * ```JSON\r\n * [\r\n * { \"number\": 1e-24, \"suffix\": \"y\" },\r\n * { \"number\": 1e-21, \"suffix\": \"z\" },\r\n * { \"number\": 1e-18, \"suffix\": \"a\" },\r\n * { \"number\": 1e-15, \"suffix\": \"f\" },\r\n * { \"number\": 1e-12, \"suffix\": \"p\" },\r\n * { \"number\": 1e-9, \"suffix\": \"n\" },\r\n * { \"number\": 1e-6, \"suffix\": \"μ\" },\r\n * { \"number\": 1e-3, \"suffix\": \"m\" }\r\n * ]\r\n * ```\r\n *\r\n * If the number is smaller than the `number` ir will be converted to the\r\n * appropriate smaller number with prefix.\r\n *\r\n * E.g. as per above `0.0015` will be converted to `1.5m`.\r\n *\r\n * Please note that for this transformation to be enabled, you need to\r\n * enable it specific modifier in your format setting.\r\n *\r\n * The modifier for big/small number modification is \"a\":\r\n *\r\n * ```Text\r\n * {myfield.formatNumber(\"#,###.00a\")}\r\n * ```\r\n *\r\n * IMPORTANT: The order of the suffixes is important. The list must start\r\n * from the smallest number and work towards bigger ones.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param prefixes Prefixes for small numbers\r\n */\r\n set: function (prefixes) {\r\n this._smallNumberPrefixes = prefixes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"smallNumberThreshold\", {\r\n /**\r\n * @return Small number threshold\r\n */\r\n get: function () {\r\n return this._smallNumberThreshold;\r\n },\r\n /**\r\n * Any number smaller than this will be considered \"small\" number, which will\r\n * trigger special formatting if \"a\" format modifier is used.\r\n *\r\n * @since 4.6.8\r\n * @param value Small number threshold\r\n */\r\n set: function (value) {\r\n this._smallNumberThreshold = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"bytePrefixes\", {\r\n /**\r\n * @return Prefixes for byte-size formatting\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._bytePrefixes)) {\r\n this._bytePrefixes = [\r\n { \"number\": 1, suffix: this.language.translate(\"_byte_suffix_B\") },\r\n { \"number\": 1024, suffix: this.language.translate(\"_byte_suffix_KB\") },\r\n { \"number\": 1048576, suffix: this.language.translate(\"_byte_suffix_MB\") },\r\n { \"number\": 1073741824, suffix: this.language.translate(\"_byte_suffix_GB\") },\r\n { \"number\": 1099511627776, suffix: this.language.translate(\"_byte_suffix_TB\") },\r\n { \"number\": 1125899906842624, suffix: this.language.translate(\"_byte_suffix_PB\") }\r\n ];\r\n }\r\n return this._bytePrefixes;\r\n },\r\n /**\r\n * Basically the same as `bigNumberPrefixes`, except base for calculation\r\n * is not thousand but byte (1024).\r\n *\r\n * The modifier is \"b\".\r\n *\r\n * ```Text\r\n * {myfield.formatNumber(\"#,###.00b\")}\r\n * ```\r\n *\r\n * The above `2048` will change to `2K`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param prefixes Prefixes for byte-size formatting\r\n */\r\n set: function (prefixes) {\r\n this._bytePrefixes = prefixes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"outputFormat\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Output format\r\n */\r\n get: function () {\r\n return this._outputFormat;\r\n },\r\n /**\r\n * Ooutput format: \"svg\" or \"html\".\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Output format\r\n */\r\n set: function (outputFormat) {\r\n this._outputFormat = outputFormat.toLowerCase();\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"forceLTR\", {\r\n get: function () {\r\n return this._forceLTR;\r\n },\r\n set: function (value) {\r\n this._forceLTR = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\r\n NumberFormatter.prototype.escape = function (text) {\r\n return text.replace(\"||\", $strings.PLACEHOLDER2);\r\n };\r\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\r\n NumberFormatter.prototype.unescape = function (text) {\r\n return text.replace($strings.PLACEHOLDER2, \"|\");\r\n };\r\n return NumberFormatter;\r\n}(BaseObject));\r\nexport { NumberFormatter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"NumberFormatter\"] = NumberFormatter;\r\n","/**\r\n * Handles formatting of pseudo-markup in text.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { AMElement } from \"../rendering/AMElement\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * Handles formatting of pseudo-markdown in text.\r\n *\r\n * @todo Encode < > in output\r\n * @todo Add more adapters\r\n * @important\r\n */\r\nvar TextFormatter = /** @class */ (function (_super) {\r\n __extends(TextFormatter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TextFormatter() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n _this.className = \"TextFormatter\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n TextFormatter.prototype.debug = function () { };\r\n /**\r\n * Formats the text according to specifications passed in.\r\n *\r\n * @param text Text to format\r\n * @param output Output format (svg, html)\r\n * @return Formatted text\r\n */\r\n TextFormatter.prototype.format = function (text, output) {\r\n // Apply default\r\n if (!$type.hasValue(output)) {\r\n output = \"svg\";\r\n }\r\n // Init return value\r\n var formatted = \"\";\r\n // Replace double (escaped) square spaces with remporary codes\r\n text = this.escape(text);\r\n // Divvy up the string by style tags\r\n var styles = text.match(/\\[([^\\]]*?)\\]/gm);\r\n if (!styles) {\r\n // Nothing to do here - no formatting elements\r\n return this.wrap(text, \"\", output);\r\n }\r\n // Get pure text - no style tags\r\n var texts = text.split(/\\[[^\\[\\]]*\\]/);\r\n // Go through each of the texts and wrap it in style tags\r\n for (var i = 0, len = texts.length; i < len; i++) {\r\n // Get text bit\r\n var t = texts[i];\r\n // Check if string is empty\r\n if (t === \"\") {\r\n continue;\r\n }\r\n // Run through an adapter\r\n t = this.adapter.apply(\"chunk\", t);\r\n // Get related style\r\n var s = \"\";\r\n if (i > 0) {\r\n s = styles[i - 1].replace('[', '').replace(']', '');\r\n }\r\n // Wrap text in tag\r\n formatted += this.wrap(t, s, output);\r\n }\r\n // Replace placeholders back\r\n formatted = this.unescape(formatted);\r\n // Return result\r\n return this.cleanUp(formatted);\r\n };\r\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\r\n TextFormatter.prototype.escape = function (text) {\r\n return text.\r\n replace(/\\[\\[/g, registry.getPlaceholder(\"1\")).\r\n replace(/([^\\/\\]]{1})\\]\\]/g, \"$1\" + registry.getPlaceholder(\"2\")).\r\n replace(/\\]\\]/g, registry.getPlaceholder(\"2\")).\r\n replace(/\\{\\{/g, registry.getPlaceholder(\"3\")).\r\n replace(/\\}\\}/g, registry.getPlaceholder(\"4\")).\r\n replace(/\\'\\'/g, registry.getPlaceholder(\"5\"));\r\n };\r\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\r\n TextFormatter.prototype.unescape = function (text) {\r\n return text.\r\n replace(new RegExp(registry.getPlaceholder(\"1\"), \"g\"), \"[[\").\r\n replace(new RegExp(registry.getPlaceholder(\"2\"), \"g\"), \"]]\").\r\n replace(new RegExp(registry.getPlaceholder(\"3\"), \"g\"), \"{{\").\r\n replace(new RegExp(registry.getPlaceholder(\"4\"), \"g\"), \"}}\").\r\n replace(new RegExp(registry.getPlaceholder(\"5\"), \"g\"), \"''\");\r\n };\r\n /**\r\n * Cleans up the text text for leftover double square brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Cleaned up text\r\n */\r\n TextFormatter.prototype.cleanUp = function (text) {\r\n return text.\r\n replace(/\\[\\[/g, \"[\").\r\n replace(/\\]\\]/g, \"]\").\r\n replace(/\\{\\{/g, \"{\").\r\n replace(/\\}\\}/g, \"}\").\r\n replace(/\\'\\'/g, \"'\");\r\n };\r\n /**\r\n * Wraps text into corresponding tags.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap\r\n * @param style Styles\r\n * @param output Format to output in (svg, html)\r\n * @return Formatted string\r\n */\r\n TextFormatter.prototype.wrap = function (text, style, output) {\r\n if (style === \"\" || style === \"/\") {\r\n //return text;\r\n style = \"\";\r\n }\r\n switch (output) {\r\n case \"html\":\r\n return this.wrapHtml(text, this.translateStyleShortcuts(style));\r\n default:\r\n return this.wrapSvg(text, this.translateStyleShortcuts(style));\r\n }\r\n };\r\n /**\r\n * Wraps text in styled SVG tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap\r\n * @param style Style property\r\n * @return Formatted tag\r\n */\r\n TextFormatter.prototype.wrapSvg = function (text, style) {\r\n if (style === \"\") {\r\n return \"<tspan>\" + text + \"</tspan>\";\r\n }\r\n else {\r\n return \"<tspan style='\" + style + \"'>\" + text + \"</tspan>\";\r\n }\r\n };\r\n /**\r\n * Returns an SVG `<tspan>` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text\r\n * @param style Style\r\n * @return Element\r\n */\r\n TextFormatter.prototype.getSvgElement = function (text, style) {\r\n var element = new AMElement(\"tspan\");\r\n element.textContent = text;\r\n if (style) {\r\n element.node.setAttribute(\"style\", style);\r\n }\r\n return element;\r\n };\r\n /**\r\n * Wraps text in HTML <span> tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap\r\n * @param style Style property\r\n * @return Formatted tag\r\n * @todo Translate SVG styles into HTML ones\r\n */\r\n TextFormatter.prototype.wrapHtml = function (text, style) {\r\n if (style === \"\") {\r\n return \"<span>\" + text + \"</span>\";\r\n }\r\n else {\r\n return \"<span style='\" + this.styleSvgToHtml(style) + \"'>\" + text + \"</span>\";\r\n }\r\n };\r\n /**\r\n * Returns an HTML `<span>` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text/HTML\r\n * @param style Style definition\r\n * @return HTML element\r\n */\r\n TextFormatter.prototype.getHtmlElement = function (text, style) {\r\n var element = document.createElement(\"span\");\r\n element.innerHTML = text;\r\n if (style) {\r\n element.setAttribute(\"style\", style);\r\n }\r\n return element;\r\n };\r\n /**\r\n * Trabslates SVG CSS into HTML CSS.\r\n *\r\n * @ignore Exclude from docs\r\n * @param style SVG CSS\r\n * @return HTML CSS\r\n * @todo Implement actual translation\r\n */\r\n TextFormatter.prototype.styleSvgToHtml = function (style) {\r\n style = style.replace(/fill:/, \"color:\");\r\n return style;\r\n };\r\n /**\r\n * Translates style shortcuts into full styles, i.e.:\r\n * \"bold\" => \"font-weight: bold\"\r\n * \"#f00\" => \"fill: #f00\"\r\n *\r\n * @ignore Exclude from docs\r\n * @param style Untranslated style\r\n * @return Translated style\r\n * @todo Implement actual translation\r\n */\r\n TextFormatter.prototype.translateStyleShortcuts = function (style) {\r\n if (style == \"\" || style == \"[ ]\") {\r\n return \"\";\r\n }\r\n var cached = registry.getCache(\"translateStyleShortcuts_\" + style);\r\n if (cached) {\r\n return cached;\r\n }\r\n // Pre-process quoted text\r\n var q = style.match(/('[^']*')|(\"[^\"]*\")/gi);\r\n if (q) {\r\n for (var i = 0; i < q.length; i++) {\r\n style = style.replace(q[i], q[i].replace(/['\"]*/g, \"\").replace(/[ ]+/g, \"+\"));\r\n }\r\n }\r\n // Get style parts\r\n var b = style.match(/([\\w\\-]*:[\\s]?[^;\\s\\]]*)|(\\#[\\w]{1,6})|([\\w]+)|(\\/)/gi);\r\n // Empty?\r\n if (!b) {\r\n return style;\r\n }\r\n // Check each part\r\n for (var i = 0; i < b.length; i++) {\r\n if (b[i].match(/^bold$/i)) {\r\n // Bold\r\n b[i] = \"font-weight:\" + b[i];\r\n }\r\n else if (b[i] == \"/\") {\r\n // Just closing tag\r\n // Do nothing\r\n b[i] = \"\";\r\n }\r\n else if (!b[i].match(/:/)) {\r\n // Color\r\n b[i] = \"fill:\" + b[i];\r\n }\r\n else {\r\n b[i] = b[i].replace(/\\+/g, \" \");\r\n }\r\n }\r\n var res = b.join(';');\r\n registry.setCache(\"translateStyleShortcuts_\" + style, res);\r\n return res;\r\n };\r\n /**\r\n * Splits string into chunks. (style blocks, quoted blocks, regular blocks)\r\n *\r\n * If the second parameter `quotedBlocks` is set to `true` this method will\r\n * also single out text blocks enclosed within single quotes that no\r\n * formatting should be applied to, and they should be displayed as is.\r\n *\r\n * Default for the above is `false`, so that you can use single quote in text\r\n * without escaping it.\r\n *\r\n * If enabled, single quotes can be escaped by doubling it - adding two\r\n * single quotes, which will be replaced by a one single quote in the final\r\n * output.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to chunk\r\n * @param quotedBlocks Use quoted blocks\r\n * @param noFormatting Formatting blocks will be treated as regular text\r\n * @return Array of string chunks\r\n */\r\n TextFormatter.prototype.chunk = function (text, quotedBlocks, noFormatting) {\r\n if (quotedBlocks === void 0) { quotedBlocks = false; }\r\n if (noFormatting === void 0) { noFormatting = false; }\r\n // Init result\r\n var res = [];\r\n // Replace double (escaped) square spaces and quotes with temporary codes\r\n text = this.escape(text);\r\n // Deal with style blocks\r\n var chunks = quotedBlocks ? text.split(\"'\") : [text];\r\n for (var i = 0; i < chunks.length; i++) {\r\n var chunk = chunks[i];\r\n // Empty?\r\n if (chunk === \"\") {\r\n continue;\r\n }\r\n if ((i % 2) === 0) {\r\n // Text outside quotes\r\n // Parse for style blocks which are \"text\" chunks, the rest chunks are\r\n // \"value\"\r\n chunk = chunk.replace(/\\]\\[/g, \"]\" + $strings.PLACEHOLDER + \"[\");\r\n chunk = chunk.replace(/\\[\\]/g, \"[ ]\");\r\n var chunks2 = chunk.split(/[\\[\\]]+/);\r\n for (var i2 = 0; i2 < chunks2.length; i2++) {\r\n var chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\r\n // Placeholder?\r\n if (chunk2 === $strings.PLACEHOLDER) {\r\n continue;\r\n }\r\n // Empty?\r\n if (chunk2 === \"\") {\r\n continue;\r\n }\r\n // Block or value\r\n if ((i2 % 2) === 0) {\r\n res.push({\r\n \"type\": \"value\",\r\n \"text\": this.adapter.apply(\"chunk\", chunk2)\r\n });\r\n }\r\n else {\r\n res.push({\r\n \"type\": noFormatting ? \"value\" : \"format\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n // A text within doublequotes\r\n // All chunks are \"text\"\r\n var chunks2 = chunk.split(/[\\[\\]]+/);\r\n for (var i2 = 0; i2 < chunks2.length; i2++) {\r\n var chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\r\n // Empty?\r\n if (chunk2 === \"\") {\r\n continue;\r\n }\r\n // Block or text\r\n if ((i2 % 2) === 0) {\r\n res.push({\r\n \"type\": \"text\",\r\n \"text\": chunk2\r\n });\r\n }\r\n else if (this.isImage(chunk2)) {\r\n res.push({\r\n \"type\": \"image\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n else {\r\n res.push({\r\n \"type\": \"format\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return res;\r\n };\r\n /**\r\n * Checks if supplied format contains image information and should be\r\n * formatted as such.\r\n * I.e.: `[img: myImage.png]`\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Format\r\n * @return `true` if it is an image\r\n */\r\n TextFormatter.prototype.isImage = function (text) {\r\n return text.match(/img[ ]?:/) ? true : false;\r\n };\r\n return TextFormatter;\r\n}(BaseObject));\r\nexport { TextFormatter };\r\nvar formatter;\r\n/**\r\n * Returns the global instance of [[TextFormatter]].\r\n *\r\n * All classes and instances should reuse this universal text formatter,\r\n * rather than create their own instance of it.\r\n */\r\nexport function getTextFormatter() {\r\n if (formatter == null) {\r\n formatter = new TextFormatter();\r\n }\r\n return formatter;\r\n}\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"TextFormatter\"] = TextFormatter;\r\n","/**\r\n * Functionality related to inertia\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { getInteraction } from \"./Interaction\";\r\nimport { AnimationDisposer } from \"../utils/Animation\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * A point of inertia is to simulate gradually drecreasing motion even after\r\n * actual interaction by user, that caused it, has already ended.\r\n *\r\n * [[Inertia]] object will continue triggering the same [[Sprite]] handlers\r\n * as if the interaction was still happening, gradually reducing\r\n * shift/angle/scale values until full stop.\r\n *\r\n * Basically, from the target element's point of view, while inertia is\r\n * playing, it is still being interacted with by user, albeit with a\r\n * decreasing speed.\r\n */\r\nvar Inertia = /** @class */ (function (_super) {\r\n __extends(Inertia, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Inertia(interaction, type, point, startPoint) {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * List of animations currently playing.\r\n */\r\n _this.animations = [];\r\n _this.className = \"Inertia\";\r\n _this.interaction = interaction;\r\n _this.type = type;\r\n _this.point = point;\r\n _this.startPoint = startPoint;\r\n // Make animations disposable\r\n _this._disposers.push(new AnimationDisposer(_this.animations));\r\n return _this;\r\n }\r\n Object.defineProperty(Inertia.prototype, \"x\", {\r\n /**\r\n * Returns current X coordinate.\r\n *\r\n * @return X\r\n */\r\n get: function () {\r\n return this.point.x;\r\n },\r\n /**\r\n * Sets current X coordinate.\r\n *\r\n * Will trigger \"drag\" event for the target element.\r\n *\r\n * @param value X\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n this.point.x = value;\r\n this.handleMove();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Inertia.prototype, \"y\", {\r\n /**\r\n * Returns current Y coordinate.\r\n *\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.point.y;\r\n },\r\n /**\r\n * Sets current Y coordinate.\r\n *\r\n * Will trigger \"drag\" event for the target element.\r\n *\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n this.point.y = value;\r\n this.handleMove();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Simulates dragging of element.\r\n */\r\n Inertia.prototype.handleMove = function () {\r\n // Prepare {InteractionEvent} object\r\n if (this.interaction.events.isEnabled(\"drag\")) {\r\n var imev = {\r\n type: \"drag\",\r\n target: this.interaction,\r\n shift: {\r\n x: this.x - this.startPoint.x,\r\n y: this.y - this.startPoint.y\r\n },\r\n startPoint: this.startPoint,\r\n point: {\r\n x: this.x,\r\n y: this.y\r\n },\r\n touch: false\r\n };\r\n // Call handler\r\n this.interaction.events.dispatchImmediately(\"drag\", imev);\r\n }\r\n };\r\n /**\r\n * Finishes up the inertia animation. (removes reference to this animation\r\n * object)\r\n */\r\n Inertia.prototype.done = function () {\r\n // Remove inertia animation from the object\r\n this.interaction.inertias.removeKey(this.type);\r\n // Move ended\r\n if (this.type === \"move\") {\r\n getInteraction().processDragStop(this.interaction);\r\n }\r\n // Destroy\r\n this.dispose();\r\n };\r\n return Inertia;\r\n}(BaseObject));\r\nexport { Inertia };\r\n","/**\r\n * Interaction manages all aspects of user interaction - mouse move,\r\n * click, hover, drag events, touch gestures.\r\n *\r\n * [[InteractionObject]] elements that want to use certain events, must attach event\r\n * listeners to Interaction instance.\r\n *\r\n * Interaction itself will not modify [[InteractionObject]] elements, it will be up to\r\n * those elements to handle interaction information received via event triggers.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { List } from \"../utils/List\";\r\nimport { Animation } from \"../utils/Animation\";\r\nimport { MultiDisposer } from \"../utils/Disposer\";\r\nimport { InteractionObject } from \"./InteractionObject\";\r\nimport { InteractionKeyboardObject } from \"./InteractionKeyboardObject\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { Inertia } from \"./Inertia\";\r\nimport { addEventListener } from \"../utils/DOM\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport { system } from \"./../System\";\r\nimport { options } from \"./../Options\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $time from \"../utils/Time\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n* Interaction manages all aspects of user interaction - mouse move,\r\n* click, hover, drag events, touch gestures.\r\n*\r\n* [[InteractionObject]] elements that want to use certain events, must attach event\r\n* listeners to Interaction instance.\r\n*\r\n* Interaction itself will not modify [[InteractionObject]] elements, it will be up to\r\n* those elements to handle interaction information received via event triggers.\r\n*\r\n* @see {@link IInteractionEvents} for a list of available events\r\n*/\r\nvar Interaction = /** @class */ (function (_super) {\r\n __extends(Interaction, _super);\r\n /**\r\n * Constructor. Sets up universal document-wide move events to handle stuff\r\n * outside particular chart container.\r\n */\r\n function Interaction() {\r\n var _this = \r\n // Call super\r\n _super.call(this) || this;\r\n /**\r\n * An indicator of global events were already initialized.\r\n */\r\n _this._globalEventsAdded = false;\r\n /**\r\n * Holds which mouse event listeners to use.\r\n */\r\n _this._pointerEvents = {\r\n \"pointerdown\": \"mousedown\",\r\n \"pointerup\": \"mouseup\",\r\n \"pointermove\": \"mousemove\",\r\n \"pointercancel\": \"mouseup\",\r\n \"pointerover\": \"mouseover\",\r\n \"pointerout\": \"mouseout\",\r\n \"wheel\": \"wheel\"\r\n };\r\n /**\r\n * Indicates if Interaction should use only \"pointer\" type events, like\r\n * \"pointermove\", available in all modern browsers, ignoring \"legacy\"\r\n * events, like \"touchmove\".\r\n */\r\n _this._usePointerEventsOnly = false;\r\n /**\r\n * Use only touch events (for touch only devices such as tablets and phones)\r\n */\r\n _this._useTouchEventsOnly = false;\r\n /**\r\n * Add special hover events. Normally, touch device tap will also simulate\r\n * hover event. On some devices (ahem iOS) we want to prevent that so that\r\n * over/out events are not duplicated.\r\n */\r\n _this._addHoverEvents = true;\r\n /**\r\n * Indicates if passive mode options is supported by this browser.\r\n */\r\n _this._passiveSupported = false;\r\n /**\r\n * Holds list of delayed events\r\n */\r\n _this._delayedEvents = { out: [] };\r\n /**\r\n * List of objects that current have a pointer hovered over them.\r\n */\r\n _this.overObjects = new List();\r\n /**\r\n * List of objects that currently has a pressed pointer.\r\n */\r\n _this.downObjects = new List();\r\n /**\r\n * List of objects that need mouse position to be reported to them.\r\n */\r\n _this.trackedObjects = new List();\r\n /**\r\n * List of objects that are currently being dragged.\r\n */\r\n _this.transformedObjects = new List();\r\n /**\r\n * Holds all known pointers.\r\n */\r\n _this.pointers = new Dictionary();\r\n /**\r\n * Inertia options that need to be applied to after element drag, if it's\r\n * `inert = true`.\r\n *\r\n * This is just a default, which can and probably will be overridden by\r\n * actual elements.\r\n */\r\n _this.inertiaOptions = new Dictionary();\r\n /**\r\n * Default options for click events. These can be overridden in\r\n * [[InteractionObject]].\r\n */\r\n _this.hitOptions = {\r\n \"doubleHitTime\": 300,\r\n //\"delayFirstHit\": false,\r\n \"hitTolerance\": 10,\r\n \"noFocus\": true\r\n };\r\n /**\r\n * Default options for hover events. These can be overridden in\r\n * [[InteractionObject]].\r\n */\r\n _this.hoverOptions = {\r\n \"touchOutBehavior\": \"leave\",\r\n \"touchOutDelay\": 1000\r\n };\r\n /**\r\n * Default options for detecting a swipe gesture. These can be overridden in\r\n * [[InteractionObject]].\r\n */\r\n _this.swipeOptions = {\r\n \"time\": 500,\r\n \"verticalThreshold\": 75,\r\n \"horizontalThreshold\": 30\r\n };\r\n /**\r\n * Default options for keyboard operations. These can be overridden in\r\n * [[InteractionObject]].\r\n */\r\n _this.keyboardOptions = {\r\n \"speed\": 0.1,\r\n \"accelleration\": 1.2,\r\n \"accellerationDelay\": 2000\r\n };\r\n /**\r\n * Default options for keyboard operations. These can be overridden in\r\n * [[InteractionObject]].\r\n *\r\n * @since 4.5.14\r\n */\r\n _this.mouseOptions = {\r\n \"sensitivity\": 1\r\n };\r\n // Set class name\r\n _this.className = \"Interaction\";\r\n // Create InteractionObject for <body>\r\n _this.body = _this.getInteraction(document.body);\r\n _this._disposers.push(_this.body);\r\n // Detect browser capabilities and determine what event listeners to use\r\n if (window.hasOwnProperty(\"PointerEvent\")) {\r\n // IE10+/Edge without touch controls enabled\r\n _this._pointerEvents.pointerdown = \"pointerdown\";\r\n _this._pointerEvents.pointerup = \"pointerup\";\r\n _this._pointerEvents.pointermove = \"pointermove\";\r\n _this._pointerEvents.pointercancel = \"pointercancel\";\r\n _this._pointerEvents.pointerover = \"pointerover\";\r\n _this._pointerEvents.pointerout = \"pointerout\";\r\n //this._usePointerEventsOnly = true;\r\n }\r\n else if (window.hasOwnProperty(\"MSPointerEvent\")) {\r\n // IE9\r\n _this._pointerEvents.pointerdown = \"MSPointerDown\";\r\n _this._pointerEvents.pointerup = \"MSPointerUp\";\r\n _this._pointerEvents.pointermove = \"MSPointerMove\";\r\n _this._pointerEvents.pointercancel = \"MSPointerUp\";\r\n _this._pointerEvents.pointerover = \"MSPointerOver\";\r\n _this._pointerEvents.pointerout = \"MSPointerOut\";\r\n //this._usePointerEventsOnly = true;\r\n }\r\n else if ((typeof matchMedia !== \"undefined\") && matchMedia('(pointer:fine)').matches) {\r\n // This is only for Safari as it does not support PointerEvent\r\n // Do nothing and let it use regular `mouse*` events\r\n // Hi Apple ;)\r\n // Additionally disable hover events for iOS devices\r\n if ('ontouchstart' in window) {\r\n _this._addHoverEvents = false;\r\n _this._useTouchEventsOnly = true;\r\n }\r\n }\r\n else if (window.navigator.userAgent.match(/MSIE /)) {\r\n // Oh looky, an MSIE that does not support PointerEvent. Hi granpa IE9!\r\n _this._usePointerEventsOnly = true;\r\n }\r\n else if (_this.fullFF()) {\r\n // Old FF, let's use regular events.\r\n // (Newer FFs would be detected by the PointerEvent availability check)\r\n _this._usePointerEventsOnly = true;\r\n }\r\n else {\r\n // Uses defaults for normal browsers\r\n // We also assume that this must be a touch device that does not have\r\n // any pointer events\r\n _this._useTouchEventsOnly = true;\r\n }\r\n // Detect if device has a mouse\r\n // This is turning out to be not reliable\r\n // @todo remove\r\n /*if (!window.navigator.msPointerEnabled && (typeof matchMedia !== \"undefined\") && !matchMedia('(pointer:fine)').matches && !this.fullFF()) {\r\n this._useTouchEventsOnly = true;\r\n }*/\r\n // Detect proper mouse wheel events\r\n if (\"onwheel\" in document.createElement(\"div\")) {\r\n // Modern browsers\r\n _this._pointerEvents.wheel = \"wheel\";\r\n }\r\n else if ($type.hasValue(document.onmousewheel)) {\r\n // Webkit and IE support at least \"mousewheel\"\r\n _this._pointerEvents.wheel = \"mousewheel\";\r\n }\r\n // Set up default inertia options\r\n _this.inertiaOptions.setKey(\"move\", {\r\n \"time\": 100,\r\n \"duration\": 500,\r\n \"factor\": 1,\r\n \"easing\": $ease.polyOut3\r\n });\r\n _this.inertiaOptions.setKey(\"resize\", {\r\n \"time\": 100,\r\n \"duration\": 500,\r\n \"factor\": 1,\r\n \"easing\": $ease.polyOut3\r\n });\r\n // Set the passive mode support\r\n _this._passiveSupported = Interaction.passiveSupported;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * This is a nasty detection for Firefox. The reason why we have is that\r\n * Firefox ESR version does not support matchMedia correctly.\r\n *\r\n * On iOS, Firefox uses different userAgent, so we don't have to detect iOS.\r\n *\r\n * @return Full Firefox?\r\n */\r\n Interaction.prototype.fullFF = function () {\r\n return (window.navigator.userAgent.match(/Firefox/)) && !(window.navigator.userAgent.match(/Android/));\r\n };\r\n Interaction.prototype.debug = function () { };\r\n /**\r\n * ==========================================================================\r\n * Processing\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Sets up global events.\r\n *\r\n * We need this so that we can track drag movement beyond chart's container.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.addGlobalEvents = function () {\r\n var _this = this;\r\n if (!this._globalEventsAdded) {\r\n if (!this._useTouchEventsOnly) {\r\n this._disposers.push(addEventListener(document, this._pointerEvents.pointerdown, function (ev) { _this.handleGlobalPointerDown(ev); }));\r\n this._disposers.push(addEventListener(document, this._pointerEvents.pointermove, function (ev) { _this.handleGlobalPointerMove(ev); }));\r\n this._disposers.push(addEventListener(document, this._pointerEvents.pointerup, function (ev) { _this.handleGlobalPointerUp(ev); }));\r\n this._disposers.push(addEventListener(document, this._pointerEvents.pointercancel, function (ev) { _this.handleGlobalPointerUp(ev, true); }));\r\n this._disposers.push(addEventListener(document, \"mouseenter\", function (ev) {\r\n if (!$type.hasValue(ev.relatedTarget) && (ev.buttons == 0 || ev.which == 0)) {\r\n _this.handleDocumentLeave(ev);\r\n }\r\n }));\r\n }\r\n // No need to duplicate events for hubrid systems that support both\r\n // pointer events and touch events. Touch events are need only for\r\n // some touch-only systems, like Mobile Safari.\r\n if (!this._usePointerEventsOnly) {\r\n this._disposers.push(addEventListener(document, \"touchstart\", function (ev) { _this.handleGlobalTouchStart(ev); }));\r\n this._disposers.push(addEventListener(document, \"touchmove\", function (ev) { _this.handleGlobalTouchMove(ev); }));\r\n this._disposers.push(addEventListener(document, \"touchend\", function (ev) { _this.handleGlobalTouchEnd(ev); }));\r\n }\r\n this._disposers.push(addEventListener(document, \"keydown\", function (ev) { _this.handleGlobalKeyDown(ev); }));\r\n this._disposers.push(addEventListener(document, \"keyup\", function (ev) { _this.handleGlobalKeyUp(ev); }));\r\n this._globalEventsAdded = true;\r\n }\r\n };\r\n /**\r\n * Sets if [[InteractionObject]] is clickable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io [[InteractionObject]] instance\r\n */\r\n Interaction.prototype.processClickable = function (io) {\r\n // Add or remove touch events\r\n this.processTouchable(io);\r\n };\r\n /**\r\n * Sets if [[InteractionObject]] will display context menu when right-clicked.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io [[InteractionObject]] instance\r\n */\r\n Interaction.prototype.processContextMenu = function (io) {\r\n if (io.contextMenuDisabled) {\r\n if (!io.eventDisposers.hasKey(\"contextMenuDisabled\")) {\r\n io.eventDisposers.setKey(\"contextMenuDisabled\", addEventListener(io.element, \"contextmenu\", function (e) {\r\n e.preventDefault();\r\n }));\r\n }\r\n }\r\n else {\r\n if (io.eventDisposers.hasKey(\"contextMenuDisabled\")) {\r\n io.eventDisposers.getKey(\"contextMenuDisabled\").dispose();\r\n }\r\n }\r\n };\r\n /**\r\n * Sets if [[InteractionObject]] is hoverable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io [[InteractionObject]] instance\r\n */\r\n Interaction.prototype.processHoverable = function (io) {\r\n var _this = this;\r\n if (io.hoverable || io.trackable) {\r\n // Add global events\r\n this.addGlobalEvents();\r\n // Add hover styles\r\n this.applyCursorOverStyle(io);\r\n // Add local events\r\n if (!io.eventDisposers.hasKey(\"hoverable\") && this._addHoverEvents) {\r\n io.eventDisposers.setKey(\"hoverable\", new MultiDisposer([\r\n addEventListener(io.element, this._pointerEvents.pointerout, function (e) { return _this.handlePointerOut(io, e); }),\r\n addEventListener(io.element, this._pointerEvents.pointerover, function (e) { return _this.handlePointerOver(io, e); })\r\n ]));\r\n }\r\n if (io.trackable) {\r\n //sprite.addEventListener(\"touchmove\", this.handleTouchMove, false, this);\r\n }\r\n }\r\n else {\r\n var disposer = io.eventDisposers.getKey(\"hoverable\");\r\n if (disposer != null) {\r\n disposer.dispose();\r\n io.eventDisposers.removeKey(\"hoverable\");\r\n }\r\n }\r\n // Add or remove touch events\r\n this.processTouchable(io);\r\n };\r\n /**\r\n * Sets up [[InteractionObject]] as movable. Movable can be any\r\n * transformation, e.g. drag, swipe, resize, track.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processMovable = function (io) {\r\n // Add unified events\r\n if (io.draggable || io.swipeable || io.trackable || io.resizable) {\r\n // Prep the element\r\n if (!this.isGlobalElement(io) && !io.isTouchProtected) {\r\n this.prepElement(io);\r\n }\r\n // Add hover styles\r\n this.applyCursorOverStyle(io);\r\n }\r\n // Add or remove touch events\r\n this.processTouchable(io);\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is trackable and sets relative events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processTrackable = function (io) {\r\n this.processHoverable(io);\r\n this.processMovable(io);\r\n if (io.trackable) {\r\n this.trackedObjects.moveValue(io);\r\n }\r\n else {\r\n this.trackedObjects.removeValue(io);\r\n }\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is draggable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processDraggable = function (io) {\r\n this.processMovable(io);\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is swipeable and sets relative events.\r\n *\r\n * A swipe event is triggered when a horizontal drag of 75px or more (and\r\n * less than 30px vertically) occurs within 700 milliseconds. This can be\r\n * overridden in sprites [[swipeOptions]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processSwipeable = function (io) {\r\n this.processMovable(io);\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is resizable and attaches required events\r\n * to it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processResizable = function (io) {\r\n this.processMovable(io);\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is supposed to capture mouse wheel events\r\n * and prepares it to catch those events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processWheelable = function (io) {\r\n var _this = this;\r\n if (io.wheelable) {\r\n //io.hoverable = true;\r\n if (!io.eventDisposers.hasKey(\"wheelable\")) {\r\n io.eventDisposers.setKey(\"wheelable\", new MultiDisposer([\r\n addEventListener(io.element, this._pointerEvents.wheel, function (e) { return _this.handleMouseWheel(io, e); }, this._passiveSupported ? { passive: false } : false),\r\n io.events.on(\"out\", function (e) {\r\n if (io.wheelable) {\r\n _this.unlockWheel();\r\n }\r\n }),\r\n io.events.on(\"over\", function (e) {\r\n //console.log(\"whelab over\")\r\n if (io.wheelable) {\r\n _this.lockWheel();\r\n }\r\n })\r\n ]));\r\n }\r\n }\r\n else {\r\n var disposer = io.eventDisposers.getKey(\"wheelable\");\r\n if (disposer != null) {\r\n disposer.dispose();\r\n io.eventDisposers.removeKey(\"wheelable\");\r\n }\r\n }\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is focusable. A focusable element is an\r\n * element that will be highlighted when users presses TAB key. If the\r\n * element is focusable, this function will attach relative focus/blur\r\n * events to it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processFocusable = function (io) {\r\n var _this = this;\r\n if (io.focusable === true && (io.tabindex > -1) && !this._useTouchEventsOnly) {\r\n if (!io.eventDisposers.hasKey(\"focusable\")) {\r\n io.eventDisposers.setKey(\"focusable\", new MultiDisposer([\r\n addEventListener(io.element, \"focus\", function (e) { return _this.handleFocus(io, e); }),\r\n addEventListener(io.element, \"blur\", function (e) { return _this.handleBlur(io, e); }),\r\n addEventListener(io.element, this._pointerEvents.pointerdown, function (e) { return _this.handleFocusBlur(io, e); }),\r\n addEventListener(io.element, \"touchstart\", function (e) { return _this.handleFocusBlur(io, e); }, this._passiveSupported ? { passive: false } : false)\r\n ]));\r\n }\r\n }\r\n else {\r\n var disposer = io.eventDisposers.getKey(\"focusable\");\r\n if (disposer != null) {\r\n disposer.dispose();\r\n io.eventDisposers.removeKey(\"focusable\");\r\n }\r\n }\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is \"touchable\". It means any interaction\r\n * whatsoever: mouse click, touch screen tap, swipe, drag, resize, etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processTouchable = function (io) {\r\n var _this = this;\r\n // Add unified events\r\n if (io.clickable || io.hoverable || io.trackable || io.draggable || io.swipeable || io.resizable) {\r\n // Add global events\r\n this.addGlobalEvents();\r\n // Add local events\r\n if (!io.eventDisposers.hasKey(\"touchable\")) {\r\n if (!this._useTouchEventsOnly && !this._usePointerEventsOnly) {\r\n io.eventDisposers.setKey(\"touchable\", new MultiDisposer([\r\n addEventListener(io.element, this._pointerEvents.pointerdown, function (e) { return _this.handlePointerDown(io, e); }),\r\n addEventListener(io.element, \"touchstart\", function (e) { return _this.handleTouchDown(io, e); }, this._passiveSupported ? { passive: false } : false)\r\n ]));\r\n }\r\n else if (!this._useTouchEventsOnly) {\r\n io.eventDisposers.setKey(\"touchable\", addEventListener(io.element, this._pointerEvents.pointerdown, function (e) { return _this.handlePointerDown(io, e); }));\r\n }\r\n else if (!this._usePointerEventsOnly) {\r\n io.eventDisposers.setKey(\"touchable\", addEventListener(io.element, \"touchstart\", function (e) { return _this.handleTouchDown(io, e); }, this._passiveSupported ? { passive: false } : false));\r\n }\r\n }\r\n }\r\n else {\r\n var disposer = io.eventDisposers.getKey(\"touchable\");\r\n if (disposer != null) {\r\n disposer.dispose();\r\n io.eventDisposers.removeKey(\"touchable\");\r\n }\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Non-pointer events\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Dispatches \"focus\" event when element gains focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleFocus = function (io, ev) {\r\n if (!io.focusable) {\r\n ev.preventDefault();\r\n return;\r\n }\r\n io.isFocused = true;\r\n if (io.events.isEnabled(\"focus\") && !system.isPaused) {\r\n var imev = {\r\n type: \"focus\",\r\n target: io,\r\n event: ev\r\n };\r\n io.events.dispatchImmediately(\"focus\", imev);\r\n }\r\n };\r\n /**\r\n * Used by regular click events to prevent focus if \"noFocus\" is set.\r\n *\r\n * This should not be called by \"focus\" handlers.\r\n *\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleFocusBlur = function (io, ev) {\r\n if (io.focusable !== false && this.getHitOption(io, \"noFocus\")) {\r\n io.events.once(\"focus\", function () {\r\n io.events.disableType(\"blur\");\r\n $dom.blur();\r\n if (io.sprite) {\r\n io.sprite.handleBlur();\r\n }\r\n io.events.enableType(\"blur\");\r\n });\r\n }\r\n };\r\n /**\r\n * Dispatches \"blur\" event when element loses focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleBlur = function (io, ev) {\r\n if (!io.focusable) {\r\n ev.preventDefault();\r\n return;\r\n }\r\n io.isFocused = false;\r\n if (io.events.isEnabled(\"blur\") && !system.isPaused) {\r\n var imev = {\r\n type: \"blur\",\r\n target: io,\r\n event: ev\r\n };\r\n io.events.dispatchImmediately(\"blur\", imev);\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Global keyboard-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Checks if there is an item that has currently focus and that they key is\r\n * one of the directional keys. If both of the conditions are true, it\r\n * creates an object to simulate movement of dragable element with keyboard.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev An original keyboard event\r\n */\r\n Interaction.prototype.handleGlobalKeyDown = function (ev) {\r\n if (this.focusedObject) {\r\n if (keyboard.isKey(ev, \"esc\")) {\r\n // ESC removes focus\r\n $dom.blur();\r\n }\r\n else if (this.focusedObject.draggable && keyboard.isKey(ev, [\"up\", \"down\", \"left\", \"right\"])) {\r\n // Prevent scrolling of the document\r\n ev.preventDefault();\r\n // Get focused object\r\n var io = this.focusedObject;\r\n // Get particular key\r\n var disposerKey = \"interactionKeyboardObject\";\r\n // If such disposer already exists we know the event is going on so we\r\n // just move on\r\n if (io.eventDisposers.hasKey(disposerKey)) {\r\n return;\r\n }\r\n // Create a keyboard mover\r\n var ko = new InteractionKeyboardObject(io, ev);\r\n io.eventDisposers.setKey(disposerKey, ko);\r\n switch (keyboard.getEventKey(ev)) {\r\n case \"up\":\r\n ko.directionY = -1;\r\n break;\r\n case \"down\":\r\n ko.directionY = 1;\r\n break;\r\n case \"left\":\r\n ko.directionX = -1;\r\n break;\r\n case \"right\":\r\n ko.directionX = 1;\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Dispatches related events when the keyboard key is realeasd.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev An original keyboard event\r\n */\r\n Interaction.prototype.handleGlobalKeyUp = function (ev) {\r\n var disposerKey = \"interactionKeyboardObject\";\r\n if (this.focusedObject) {\r\n var disposer = this.focusedObject.eventDisposers.getKey(disposerKey);\r\n if (disposer != null) {\r\n // Prevent scrolling of the document\r\n ev.preventDefault();\r\n // Dispose stuff\r\n disposer.dispose();\r\n this.focusedObject.eventDisposers.removeKey(disposerKey);\r\n }\r\n // Does focused object have \"hit\" event?\r\n var sprite = this.focusedObject.sprite;\r\n if (keyboard.isKey(ev, \"enter\") && sprite) {\r\n if (sprite.events.isEnabled(\"hit\") || sprite.events.isEnabled(\"toggled\")) {\r\n this.focusedObject.dispatchImmediately(\"hit\");\r\n }\r\n else if (sprite.showTooltipOn == \"hit\") {\r\n this.focusedObject.dispatchImmediately(\"up\");\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Global pointer-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Handler for a global \"pointermove\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalPointerMove = function (ev) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Update current point position\r\n pointer.point = this.getPointerPoint(ev);\r\n // Prepare and fire global event\r\n if (this.events.isEnabled(\"track\") && !system.isPaused) {\r\n var imev = {\r\n type: \"track\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"track\", imev);\r\n }\r\n // Track\r\n this.addBreadCrumb(pointer, pointer.point);\r\n // Process further\r\n this.handleGlobalMove(pointer, ev);\r\n };\r\n /**\r\n * Handler for a global \"pointerdown\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalPointerDown = function (ev) {\r\n // Remove delayed hovers\r\n this.processDelayed();\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Prepare and fire global event\r\n if (this.events.isEnabled(\"down\") && !system.isPaused) {\r\n var imev = {\r\n type: \"down\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"down\", imev);\r\n }\r\n };\r\n /**\r\n * Prevents touch action from firing.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\r\n Interaction.prototype.preventTouchAction = function (ev) {\r\n if (!ev.defaultPrevented) {\r\n ev.preventDefault();\r\n }\r\n };\r\n /**\r\n * Handler for a global \"pointerup\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalPointerUp = function (ev, cancelled) {\r\n if (cancelled === void 0) { cancelled = false; }\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Prepare and fire global event\r\n if (this.events.isEnabled(\"up\") && !system.isPaused) {\r\n var imev = {\r\n type: \"up\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"up\", imev);\r\n }\r\n // Process further\r\n this.handleGlobalUp(pointer, ev, cancelled);\r\n };\r\n /**\r\n * ==========================================================================\r\n * Global touch-related even handlers\r\n * ==========================================================================\r\n */\r\n /**\r\n * Handler for a global \"touchmove\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalTouchMove = function (ev) {\r\n // Process each changed touch point\r\n for (var i = 0; i < ev.changedTouches.length; i++) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev.changedTouches[i]);\r\n // Update current point position\r\n pointer.point = this.getPointerPoint(ev.changedTouches[i]);\r\n // Prepare and fire global event\r\n if (this.events.isEnabled(\"track\") && !system.isPaused) {\r\n var imev = {\r\n type: \"track\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"track\", imev);\r\n }\r\n // Track\r\n this.addBreadCrumb(pointer, pointer.point);\r\n // Process further\r\n this.handleGlobalMove(pointer, ev);\r\n }\r\n };\r\n /**\r\n * Handler for a global \"touchstart\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalTouchStart = function (ev) {\r\n // Remove delayed hovers\r\n this.processDelayed();\r\n // Process each changed touch point\r\n for (var i = 0; i < ev.changedTouches.length; i++) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev.changedTouches[i]);\r\n // Prepare and fire global event\r\n if (!this._usePointerEventsOnly && this.events.isEnabled(\"down\") && !system.isPaused) {\r\n var imev = {\r\n type: \"down\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"down\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Handler for a global \"touchend\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalTouchEnd = function (ev) {\r\n // Process each changed touch point\r\n for (var i = 0; i < ev.changedTouches.length; i++) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev.changedTouches[i]);\r\n // Prepare and fire global event\r\n if (this.events.isEnabled(\"up\") && !system.isPaused) {\r\n var imev = {\r\n type: \"up\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"up\", imev);\r\n }\r\n // Handle element-related events\r\n this.handleGlobalUp(pointer, ev);\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Element-specific pointer-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Handles event when pointer is over [[InteractionObject]] and button is\r\n * pressed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handlePointerDown = function (io, ev) {\r\n // Stop further propagation so we don't get multiple triggers on hybrid\r\n // devices (both mouse and touch capabilities)\r\n //ev.preventDefault();\r\n //ev.stopPropagation();\r\n //if (ev.defaultPrevented) {\r\n //}\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Ignore if it's anything but mouse's primary button\r\n if (!pointer.touch && ev.which != 1 && ev.which != 3) {\r\n return;\r\n }\r\n // Set mouse button\r\n pointer.button = ev.which;\r\n // Reset pointer\r\n this.resetPointer(pointer, ev);\r\n // Process down\r\n this.handleDown(io, pointer, ev);\r\n };\r\n /**\r\n * Handles event when [[InteractionObject]] is hovered by a mouse pointer.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handlePointerOver = function (io, ev) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Process down\r\n this.handleOver(io, pointer, ev);\r\n };\r\n /**\r\n * Handles event when [[InteractionObject]] loses hover from a mouse pointer.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handlePointerOut = function (io, ev) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Process down\r\n this.handleOut(io, pointer, ev);\r\n };\r\n /**\r\n * Handles event when mouse wheel is crolled over the [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n * @todo Investigate more-cross browser stuff https://developer.mozilla.org/en-US/docs/Web/Events/wheel\r\n */\r\n Interaction.prototype.handleMouseWheel = function (io, ev) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Update current point position\r\n pointer.point = this.getPointerPoint(ev);\r\n // Init delta values\r\n var deltaX = 0, deltaY = 0;\r\n // Set up modifier\r\n // This is needed because FireFox reports wheel deltas in \"lines\" instead\r\n // of pixels so we have to approximate pixel value\r\n var mod = 1;\r\n if (ev.deltaMode == 1) {\r\n mod = 50;\r\n }\r\n // Adjust configurable sensitivity\r\n mod *= this.getMouseOption(io, \"sensitivity\");\r\n // Calculate deltas\r\n if (ev instanceof WheelEvent) {\r\n deltaX = Math.round((-1 * ev.wheelDeltaX) || (ev.deltaX * mod));\r\n deltaY = Math.round((-1 * ev.wheelDeltaY) || (ev.deltaY * mod));\r\n }\r\n else {\r\n throw new Error(\"Invalid event type\");\r\n }\r\n // Handle the event\r\n this.handleWheel(io, pointer, deltaX, deltaY, ev);\r\n };\r\n /**\r\n * ==========================================================================\r\n * Element-specific touch-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Handles an event when an [[InteractionObject]] is touched on a touch\r\n * device.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleTouchDown = function (io, ev) {\r\n // Stop further propagation so we don't get multiple triggers on hybrid\r\n // devices (both mouse and touch capabilities)\r\n //this.maybePreventDefault(io, ev);\r\n //return;\r\n // Process each changed touch point\r\n for (var i = 0; i < ev.changedTouches.length; i++) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev.changedTouches[i]);\r\n this.maybePreventDefault(io, ev, pointer);\r\n // Reset pointer\r\n this.resetPointer(pointer, ev.changedTouches[i]);\r\n // Process down\r\n this.handleDown(io, pointer, ev);\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Universal handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Handles click/tap. Checks for doublehit.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleHit = function (io, pointer, ev) {\r\n // Check if this is a double-hit\r\n var now = $time.getTime();\r\n if (io.lastHit && (io.lastHit >= (now - this.getHitOption(io, \"doubleHitTime\")))) {\r\n // Yup - it's a double-hit\r\n // Cancel the hit\r\n //clearTimeout(io.lastHitPointer.hitTimeout);\r\n // If it happened too fast it probably means that hybrid device just\r\n // generated two events for the same tap\r\n if ((now - io.lastHit) < 100) {\r\n // Ignore\r\n return;\r\n }\r\n // Clear last hit\r\n io.lastHit = undefined;\r\n io.lastHitPointer = undefined;\r\n // Dispatch event\r\n if (io.events.isEnabled(\"doublehit\") && !system.isPaused) {\r\n var imev = {\r\n type: \"doublehit\",\r\n target: io,\r\n point: pointer.point,\r\n event: ev,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"doublehit\", imev);\r\n }\r\n }\r\n else {\r\n // Log last hit\r\n io.lastHit = now;\r\n io.lastHitPointer = pointer;\r\n if (pointer.button === 3) {\r\n // Execute HIT now\r\n if (io.events.isEnabled(\"rightclick\") && !system.isPaused) {\r\n var imev = {\r\n type: \"rightclick\",\r\n target: io,\r\n event: ev\r\n };\r\n io.events.dispatchImmediately(\"rightclick\", imev);\r\n }\r\n }\r\n else {\r\n if (io.events.isEnabled(\"hit\") && !system.isPaused) {\r\n var imev = {\r\n type: \"hit\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"hit\", imev);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Handles pointer hovering over [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n * @param soft Invoked by helper function\r\n */\r\n Interaction.prototype.handleOver = function (io, pointer, ev, soft) {\r\n if (soft === void 0) { soft = false; }\r\n if (!io.hoverable) {\r\n return;\r\n }\r\n var hoversPaused = false;\r\n if (this.shouldCancelHovers(pointer) && this.areTransformed() && this.moved(pointer, this.getHitOption(io, \"hitTolerance\"))) {\r\n hoversPaused = true;\r\n this.cancelAllHovers(ev);\r\n }\r\n // Remove any delayed outs\r\n this.processDelayed();\r\n // Add pointer\r\n io.overPointers.moveValue(pointer);\r\n // Check if object is not yet hovered\r\n if (!io.isRealHover) {\r\n // Set element as hovered\r\n if (!hoversPaused) {\r\n io.isHover = true;\r\n io.isRealHover = true;\r\n this.overObjects.moveValue(io);\r\n }\r\n // Generate body track event. This is needed so that if element loads\r\n // under unmoved mouse cursor, we still need all the actions that are\r\n // required to happen to kick in.\r\n this.handleTrack(this.body, pointer, ev, true);\r\n // Event\r\n if (io.events.isEnabled(\"over\") && !system.isPaused && !hoversPaused) {\r\n var imev = {\r\n type: \"over\",\r\n target: io,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"over\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Handles when [[InteractionObject]] is no longer hovered.\r\n *\r\n * If `soft = true`, this means that method is being invoked by some other\r\n * code, not hard \"out\" function, like `handleUp` which implies we need to\r\n * run additional checks before unhovering the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n * @param soft Invoked by helper function\r\n * @param force Force imediate out\r\n */\r\n Interaction.prototype.handleOut = function (io, pointer, ev, soft, force) {\r\n var _this = this;\r\n if (soft === void 0) { soft = false; }\r\n if (force === void 0) { force = false; }\r\n if (!io.hoverable) {\r\n return;\r\n }\r\n // Remove pointer\r\n io.overPointers.removeValue(pointer);\r\n // Check if element is still hovered\r\n if (io.isHover && (!io.hasDelayedOut || force)) {\r\n // Should we run additional checks?\r\n if (soft && io.overPointers.length) {\r\n // There are still pointers hovering - don't do anything else and\r\n // wait until either no over pointers are there or we get a hard out\r\n // event.\r\n return;\r\n }\r\n // Should we delay \"out\" if this is happening on a touch device?\r\n if (pointer && pointer.touch && !force && !this.old(pointer)) {\r\n // This is a touch pointer, and it hasn't moved, let's pretend\r\n // the object is still hovered, and act as per \"behavior\" setting\r\n var behavior = this.getHoverOption(io, \"touchOutBehavior\");\r\n if (behavior == \"leave\") {\r\n // Set to \"leave\", so we do not execute any \"out\" event.\r\n // It will be handled by any other interaction that happens\r\n // afterwards.\r\n this._delayedEvents.out.push({\r\n type: \"out\",\r\n io: io,\r\n pointer: pointer,\r\n event: ev,\r\n keepUntil: $time.getTime() + 500\r\n });\r\n io.hasDelayedOut = true;\r\n return;\r\n }\r\n else if (behavior == \"delay\" && this.getHoverOption(io, \"touchOutDelay\")) {\r\n this._delayedEvents.out.push({\r\n type: \"out\",\r\n io: io,\r\n pointer: pointer,\r\n event: ev,\r\n keepUntil: $time.getTime() + 500,\r\n timeout: this.setTimeout(function () {\r\n _this.handleOut(io, pointer, ev, true);\r\n }, this.getHoverOption(io, \"touchOutDelay\"))\r\n });\r\n return;\r\n }\r\n else {\r\n // Nothing for \"remove\" - that's how it works \"out-of-the-box\"\r\n }\r\n }\r\n // Set element as not hovered\r\n io.isHover = false;\r\n this.overObjects.removeValue(io);\r\n // Invoke event\r\n if (!io.isDisposed() && io.events.isEnabled(\"out\") && !system.isPaused) {\r\n var imev = {\r\n type: \"out\",\r\n target: io,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"out\", imev);\r\n }\r\n // Reset object from lefover delayed outs, pointers\r\n io.overPointers.clear();\r\n io.hasDelayedOut = false;\r\n // @todo (clean delayed)\r\n }\r\n };\r\n /**\r\n * Processes dalyed events, such as \"out\" event that was initiated for\r\n * elements by touch.\r\n */\r\n Interaction.prototype.processDelayed = function () {\r\n var delayedEvent;\r\n while (true) {\r\n delayedEvent = this._delayedEvents.out.pop();\r\n if (!delayedEvent) {\r\n break;\r\n }\r\n if (delayedEvent.timeout) {\r\n delayedEvent.timeout.dispose();\r\n }\r\n this.handleOut(delayedEvent.io, delayedEvent.pointer, delayedEvent.event, false, true);\r\n }\r\n };\r\n /**\r\n * Performs tasks on pointer down.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleDown = function (io, pointer, ev) {\r\n // Need to prevent default event from happening on transformable objects\r\n this.maybePreventDefault(io, ev, pointer);\r\n // Stop inertia animations if they're currently being played out\r\n if (io.inert) {\r\n this.stopInertia(io);\r\n }\r\n // Trigger hover because some touch devices won't trigger over events\r\n // on their own\r\n this.handleOver(io, pointer, ev, true);\r\n // Add pointer to list\r\n io.downPointers.moveValue(pointer);\r\n // Apply styles if necessary\r\n this.applyCursorDownStyle(io, pointer);\r\n // Check if object is already down\r\n if (!io.isDown) {\r\n // Lose focus if needed\r\n if (io.focusable !== false && this.getHitOption(io, \"noFocus\") && this.focusedObject) {\r\n $dom.blur();\r\n }\r\n // Set object as hovered\r\n io.isDown = true;\r\n this.downObjects.moveValue(io);\r\n // Prep object for dragging and/or resizing\r\n if (io.draggable) {\r\n this.processDragStart(io, pointer, ev);\r\n }\r\n if (io.resizable) {\r\n this.processResizeStart(io, pointer, ev);\r\n }\r\n }\r\n // Dispatch \"down\" event\r\n if (io.events.isEnabled(\"down\") && !system.isPaused) {\r\n var imev = {\r\n type: \"down\",\r\n target: io,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"down\", imev);\r\n }\r\n };\r\n /**\r\n * Performs tasks on pointer up.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleGlobalUp = function (pointer, ev, cancelled) {\r\n var _this = this;\r\n if (cancelled === void 0) { cancelled = false; }\r\n var sorted = this.downObjects.values.slice();\r\n sorted.sort(function (x, y) {\r\n if (x && y) {\r\n var pos = x.element.compareDocumentPosition(y.element);\r\n if (pos & Node.DOCUMENT_POSITION_CONTAINED_BY) {\r\n return 1;\r\n }\r\n else if (pos & Node.DOCUMENT_POSITION_CONTAINS) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n // Process all down objects\r\n $array.each(sorted, function (io) {\r\n // Check if this particular pointer is pressing down\r\n // on object\r\n if (io && io.downPointers.contains(pointer)) {\r\n _this.handleUp(io, pointer, ev, cancelled);\r\n }\r\n });\r\n };\r\n /**\r\n * Simulates all pointers being up once mouse leaves document area.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleDocumentLeave = function (ev) {\r\n var _this = this;\r\n // Process all down objects\r\n $iter.each(this.downObjects.backwards().iterator(), function (io) {\r\n io.downPointers.each(function (pointer) {\r\n _this.handleUp(io, pointer, ev);\r\n });\r\n });\r\n };\r\n /**\r\n * Handles when [[InteractionObject]] is no longer hovered.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleUp = function (io, pointer, ev, cancelled) {\r\n if (cancelled === void 0) { cancelled = false; }\r\n // Restore cursor style\r\n this.restoreCursorDownStyle(io, pointer);\r\n // Remove pointer from the list\r\n io.downPointers.removeValue(pointer);\r\n // Trigger out because some touch devices won't trigger out events\r\n // on their own\r\n if ((pointer && pointer.touch) || this._useTouchEventsOnly) {\r\n this.handleOut(io, pointer, ev, true);\r\n }\r\n // Check if object still down\r\n if (io.isDown) {\r\n // Check if there are no other pointers hovering this element\r\n if (io.downPointers.length == 0) {\r\n // Set element as no longer down\r\n io.isDown = false;\r\n this.downObjects.removeValue(io);\r\n }\r\n // Dispatch \"up\" event\r\n if (io.events.isEnabled(\"up\") && !system.isPaused && pointer) {\r\n var imev = {\r\n type: \"up\",\r\n target: io,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"up\", imev);\r\n }\r\n // Check if this was not a cancelled event.\r\n // If event was canelled (which might happen if gesture resulted in\r\n // navigation or page scroll) there's no point in triggering hit and\r\n // other actions.\r\n if (!cancelled) {\r\n // Handle swiping-related stuff\r\n if (io.swipeable && this.swiped(io, pointer)) {\r\n // Swiped - nothing else should happen\r\n this.handleSwipe(io, pointer, ev);\r\n }\r\n else {\r\n // Check if it maybe a click\r\n if (io.clickable && !this.moved(pointer, this.getHitOption(io, \"hitTolerance\"))) {\r\n this.handleHit(io, pointer, ev);\r\n }\r\n // Handle inertia\r\n if (io.inert && this.moved(pointer, this.getHitOption(io, \"hitTolerance\"))) {\r\n this.handleInertia(io, pointer);\r\n }\r\n else if (io.draggable) {\r\n this.processDragStop(io, pointer, ev);\r\n }\r\n if (io.resizable) {\r\n this.processResizeStop(io, pointer, ev);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Checks if event needs to be prevented on draggable and such items, so that\r\n * touch gestures like navigation and scroll do not kick in.\r\n *\r\n * @param io Object\r\n * @param ev Event\r\n */\r\n Interaction.prototype.maybePreventDefault = function (io, ev, pointer) {\r\n if ($type.hasValue(ev)\r\n && (io.draggable || io.swipeable || io.trackable || io.resizable)\r\n && !this.isGlobalElement(io)\r\n && ev.cancelable !== false\r\n && (!io.isTouchProtected || !pointer || !pointer.touch)) {\r\n ev.preventDefault();\r\n }\r\n };\r\n /**\r\n * Cancels all hovers on all currently hovered objects.\r\n *\r\n * @param pointer Pointer\r\n * @param ev Event\r\n */\r\n Interaction.prototype.cancelAllHovers = function (ev) {\r\n var _this = this;\r\n //this.overObjects.each((io) => {\r\n $iter.each(this.overObjects.backwards().iterator(), function (io) {\r\n if (io) {\r\n var pointer = io.overPointers.getIndex(0);\r\n _this.handleOut(io, pointer, ev, true, true);\r\n }\r\n });\r\n };\r\n /**\r\n * Checks if hovers should be cancelled on transform as per global options.\r\n * @param pointer Pointer\r\n * @return Cancel?\r\n */\r\n Interaction.prototype.shouldCancelHovers = function (pointer) {\r\n return options.disableHoverOnTransform == \"always\" || (options.disableHoverOnTransform == \"touch\" && pointer.touch);\r\n };\r\n /**\r\n * Handles pointer move.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleGlobalMove = function (pointer, ev) {\r\n var _this = this;\r\n // Process hovered elements\r\n // We check if the element became unhovered without reporting the mouseout\r\n // event. (it happens in some cases)\r\n if (!pointer.touch) {\r\n var target_1 = $dom.eventTarget(pointer.lastEvent);\r\n $iter.each(this.overObjects.backwards().iterator(), function (io) {\r\n // Is this pointer relevant to element?\r\n if (io && io.overPointers.contains(pointer) && io.hoverable) {\r\n // Check if the element is still hovered\r\n var reset = false;\r\n if (io.element && pointer.lastEvent) {\r\n if (!$dom.contains(io.element, target_1)) {\r\n reset = true;\r\n }\r\n }\r\n else {\r\n reset = true;\r\n }\r\n if (reset) {\r\n _this.handleOut(io, pointer, ev, true);\r\n }\r\n }\r\n });\r\n }\r\n // Process down elements\r\n $iter.each(this.transformedObjects.backwards().iterator(), function (io) {\r\n // Is this pointer relevant to element?\r\n if (io.downPointers.contains(pointer) &&\r\n // Swipe still happening?\r\n !(io.swipeable && _this.swiping(io, pointer)) &&\r\n (io.draggable || io.resizable)) {\r\n _this.handleTransform(io, ev);\r\n }\r\n });\r\n // Process tracked elements\r\n $iter.each(this.trackedObjects.backwards().iterator(), function (io) {\r\n // Is this pointer relevant to element?\r\n if (!io.overPointers.contains(pointer)) {\r\n _this.handleTrack(io, pointer, ev);\r\n }\r\n });\r\n };\r\n /**\r\n * Handles reporting of pointer movement.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n * @param skipCheck Sould we skip check if cursor actually moved\r\n */\r\n Interaction.prototype.handleTrack = function (io, pointer, ev, skipCheck) {\r\n if (skipCheck === void 0) { skipCheck = false; }\r\n // Do nothing if the cursor did not actually move\r\n if (!skipCheck && !this.moved(pointer, 0)) {\r\n return;\r\n }\r\n // Initiate TRACK event\r\n if (io.events.isEnabled(\"track\") && !system.isPaused) {\r\n var imev = {\r\n type: \"track\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"track\", imev);\r\n }\r\n };\r\n /**\r\n * Handles swipe action.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleSwipe = function (io, pointer, ev) {\r\n // We pass in InteractionEvent with shift in mouse coordinates\r\n // between when the drag started and ended\r\n if (io.events.isEnabled(\"swipe\") && !system.isPaused) {\r\n var imev = {\r\n type: \"swipe\",\r\n target: io,\r\n event: ev,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"swipe\", imev);\r\n }\r\n if (pointer.startPoint.x < pointer.point.x) {\r\n if (io.events.isEnabled(\"swiperight\") && !system.isPaused) {\r\n var imev = {\r\n type: \"swiperight\",\r\n target: io,\r\n event: ev,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"swiperight\", imev);\r\n }\r\n }\r\n else {\r\n if (io.events.isEnabled(\"swipeleft\") && !system.isPaused) {\r\n var imev = {\r\n type: \"swipeleft\",\r\n target: io,\r\n event: ev,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"swipeleft\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Handles event triggering for wheel rotation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param deltaX Horizontal shift\r\n * @param deltaY Vertical shift\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleWheel = function (io, pointer, deltaX, deltaY, ev) {\r\n var shift = {\r\n x: deltaX,\r\n y: deltaY\r\n };\r\n // Trigger generic WHEEL event\r\n if (io.events.isEnabled(\"wheel\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"wheel\", {\r\n type: \"wheel\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n shift: shift\r\n });\r\n }\r\n // Trigger direction-specific events\r\n // Horizontal\r\n if (deltaX < 0) {\r\n if (io.events.isEnabled(\"wheelleft\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"wheelleft\", {\r\n type: \"wheelleft\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n shift: shift\r\n });\r\n }\r\n }\r\n else if (deltaX > 0) {\r\n if (io.events.isEnabled(\"swiperight\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"wheelright\", {\r\n type: \"wheelright\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n shift: shift\r\n });\r\n }\r\n // Vertical\r\n }\r\n else if (deltaY < 0) {\r\n if (io.events.isEnabled(\"wheelup\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"wheelup\", {\r\n type: \"wheelup\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n shift: shift\r\n });\r\n }\r\n }\r\n else if (deltaY > 0) {\r\n if (io.events.isEnabled(\"wheeldown\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"wheeldown\", {\r\n type: \"wheeldown\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n shift: shift\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Initiates inertia checking sub-routines for different movement types:\r\n * drag, resize.\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprite\r\n * @param pointer\r\n */\r\n Interaction.prototype.handleInertia = function (io, pointer) {\r\n if (io.draggable && io.downPointers.length === 0) {\r\n this.handleMoveInertia(io, pointer);\r\n }\r\n if (io.resizable && io.downPointers.length > 1) {\r\n this.handleResizeInertia(io, pointer);\r\n }\r\n };\r\n /**\r\n * Continues moving the element to simulate the effect of inertia. Happens\r\n * when `inert` and `draggable` object is dragged and then released.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.handleMoveInertia = function (io, pointer) {\r\n var interaction = io;\r\n var type = \"move\";\r\n var point = {\r\n \"x\": pointer.point.x,\r\n \"y\": pointer.point.y\r\n };\r\n var startPoint = {\r\n \"x\": pointer.startPoint.x,\r\n \"y\": pointer.startPoint.y\r\n };\r\n // Init inertia object\r\n var inertia = new Inertia(interaction, type, point, startPoint);\r\n // Get inertia data\r\n var ref = this.getTrailPoint(pointer, $time.getTime() - this.getInertiaOption(io, \"move\", \"time\"));\r\n if (typeof ref === \"undefined\") {\r\n this.processDragStop(io, pointer, pointer.lastUpEvent);\r\n return;\r\n }\r\n // Init animation options\r\n var factor = this.getInertiaOption(io, \"move\", \"factor\");\r\n var animationOptions = [{\r\n \"to\": pointer.point.x + (pointer.point.x - ref.point.x) * factor,\r\n \"property\": \"x\"\r\n }, {\r\n \"to\": pointer.point.y + (pointer.point.y - ref.point.y) * factor,\r\n \"property\": \"y\"\r\n }];\r\n // Start animation\r\n var animation = new Animation(inertia, animationOptions, this.getInertiaOption(io, \"move\", \"duration\"), this.getInertiaOption(io, \"move\", \"easing\")).start();\r\n this._disposers.push(animation.events.on(\"animationended\", function (ev) {\r\n inertia.done();\r\n }));\r\n // Add inertia object\r\n io.inertias.setKey(\"move\", inertia);\r\n };\r\n /**\r\n * Continues resizing of a `resizable` element after it is resized and\r\n * released.\r\n *\r\n * **NOTE:** this is is just a placeholder function. No actual fucntionality\r\n * is implemented, yet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.handleResizeInertia = function (io, pointer) {\r\n // Some day, folks. Some day...\r\n };\r\n /**\r\n * Recalculates element's position and size based on position of\r\n * all its related pointers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleTransform = function (io, ev) {\r\n // Get primary pointer and its respective points\r\n var pointer1 = io.downPointers.getIndex(0);\r\n var point1 = null;\r\n var startPoint1 = null;\r\n if (pointer1) {\r\n point1 = pointer1.point;\r\n startPoint1 = pointer1.startPoint;\r\n }\r\n // Init secondary pointer\r\n var pointer2;\r\n var point2;\r\n var startPoint2;\r\n // Use center of the sprite to simulate \"second\" point of touch\r\n point2 = {\r\n \"x\": io.originalPosition.x,\r\n \"y\": io.originalPosition.y\r\n };\r\n startPoint2 = point2;\r\n // Determine if it's a sinngle pointer or multi\r\n var singlePoint = true;\r\n for (var i = 1; i < io.downPointers.length; i++) {\r\n // Get pointer\r\n var nextPointer = io.downPointers.getIndex(i);\r\n // Doublecheck if it's not the same pointer by comparing original position\r\n if (startPoint1.x != nextPointer.startPoint.x && startPoint1.y != nextPointer.startPoint.y) {\r\n // Several pointers down\r\n singlePoint = false;\r\n // Get second pointer\r\n pointer2 = nextPointer;\r\n point2 = pointer2.point;\r\n startPoint2 = pointer2.startPoint;\r\n // Stop looking\r\n break;\r\n }\r\n }\r\n // Primary touch point moved?\r\n var pointer1Moved = pointer1 && this.moved(pointer1, 0);\r\n // Report DRAG_START if necessary\r\n if (io.draggable && pointer1 && pointer1.dragStartEvents && pointer1.dragStartEvents.length && pointer1Moved) {\r\n if (io.events.isEnabled(\"dragstart\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"dragstart\", pointer1.dragStartEvents.shift());\r\n }\r\n //delete pointer1.dragStartEvents;\r\n }\r\n // Determine what we do in order of superiority\r\n if (singlePoint && io.draggable) {\r\n // We have only one pointer and the Sprite is draggable\r\n // There's nothing else to be done - just move it\r\n this.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved, pointer1.touch);\r\n if (this.shouldCancelHovers(pointer1) && this.moved(pointer1, this.getHitOption(io, \"hitTolerance\"))) {\r\n this.cancelAllHovers(ev);\r\n }\r\n }\r\n else {\r\n // Check if second touch point moved\r\n var pointer2Moved = pointer2 && this.moved(pointer2, 0);\r\n if ((this.shouldCancelHovers(pointer1) && this.moved(pointer1, this.getHitOption(io, \"hitTolerance\")))\r\n ||\r\n (this.shouldCancelHovers(pointer2) && this.moved(pointer2, this.getHitOption(io, \"hitTolerance\")))) {\r\n this.cancelAllHovers(ev);\r\n }\r\n if (io.draggable && io.resizable) {\r\n //this.handleTransformAll(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved);\r\n this.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved && pointer2Moved, pointer1.touch);\r\n this.handleTransformResize(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved, pointer1.touch);\r\n }\r\n else {\r\n if (io.draggable) {\r\n this.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved, pointer1.touch);\r\n }\r\n if (io.resizable && (!singlePoint || ev.ctrlKey)) {\r\n this.handleTransformResize(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved, pointer1.touch);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Handles movement of the dragged element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param point Current point of the pointer\r\n * @param startPoint Starting point of the pointer\r\n * @param ev Original event\r\n * @param pointerMoved Did pointer move?\r\n */\r\n Interaction.prototype.handleTransformMove = function (io, point, startPoint, ev, pointerMoved, touch) {\r\n if (pointerMoved) {\r\n if (io.events.isEnabled(\"drag\") && !system.isPaused && (!io.isTouchProtected || !touch)) {\r\n var imev = {\r\n type: \"drag\",\r\n target: io,\r\n event: ev,\r\n shift: {\r\n \"x\": point.x - startPoint.x,\r\n \"y\": point.y - startPoint.y\r\n },\r\n startPoint: startPoint,\r\n point: point,\r\n touch: touch\r\n };\r\n io.events.dispatchImmediately(\"drag\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Handles resizing of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param point1 Current position of reference point #1\r\n * @param startPoint1 Original position of reference point #1\r\n * @param point2 Current position of reference point #2\r\n * @param startPoint2 Original position of reference point #2\r\n * @param ev Original event\r\n * @param pointerMoved Did pointer move?\r\n */\r\n Interaction.prototype.handleTransformResize = function (io, point1, startPoint1, point2, startPoint2, ev, pointerMoved, touch) {\r\n if (io.events.isEnabled(\"resize\") && !system.isPaused && (!io.isTouchProtected || !touch)) {\r\n var imev = {\r\n type: \"resize\",\r\n target: io,\r\n event: ev,\r\n scale: $math.getScale(point1, startPoint1, point2, startPoint2),\r\n startPoint1: startPoint1,\r\n point1: point1,\r\n startPoint2: startPoint2,\r\n point2: point2,\r\n touch: touch\r\n };\r\n io.events.dispatchImmediately(\"resize\", imev);\r\n }\r\n };\r\n /**\r\n * Handles all the preparations of the element when it starts to be dragged.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.processDragStart = function (io, pointer, ev) {\r\n // Add to draggedObjects\r\n this.transformedObjects.moveValue(io);\r\n if (this.shouldCancelHovers(pointer)) {\r\n this.cancelAllHovers(ev);\r\n }\r\n // Report \"dragstart\"\r\n var imev = {\r\n type: \"dragstart\",\r\n target: io,\r\n event: ev,\r\n touch: pointer ? pointer.touch : false\r\n };\r\n // Log object that we are starting to drag, so we can check against and\r\n // avoid hovers on other objects that might be in the path of movement.\r\n if (pointer) {\r\n pointer.dragTarget = io;\r\n //pointer.startPoint = pointer.point;\r\n }\r\n /**\r\n * If pointer is set we will not fire the event until the pointer has\r\n * actually moved. If it's not set we don't have to wait for anything, so we\r\n * just fire off the event right away.\r\n */\r\n if (pointer && pointer.dragStartEvents) {\r\n pointer.dragStartEvents.push(imev);\r\n }\r\n else {\r\n if (!system.isPaused) {\r\n io.dispatchImmediately(\"dragstart\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Finishes up element drag operation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.processDragStop = function (io, pointer, ev) {\r\n // Pointer set?\r\n if (!pointer) {\r\n pointer = this.getDragPointer(io);\r\n }\r\n // Unset drag object\r\n if (pointer) {\r\n pointer.dragTarget = undefined;\r\n }\r\n // Removed from transformedObjects\r\n this.transformedObjects.removeValue(io);\r\n // Unlock document\r\n //this.unlockDocument();\r\n // Report dragstop\r\n if (!pointer || this.moved(pointer, 0)) {\r\n if (io.events.isEnabled(\"dragstop\") && !system.isPaused) {\r\n var imev = {\r\n type: \"dragstop\",\r\n target: io,\r\n touch: pointer ? pointer.touch : false\r\n };\r\n io.events.dispatchImmediately(\"dragstop\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Handles all the preparations of the element when it starts to be resized.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.processResizeStart = function (io, pointer, ev) {\r\n // Add to draggedObjects\r\n this.transformedObjects.moveValue(io);\r\n };\r\n /**\r\n * Finishes up element drag operation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.processResizeStop = function (io, pointer, ev) {\r\n // Removed from transformedObjects\r\n this.transformedObjects.removeValue(io);\r\n };\r\n /**\r\n * ==========================================================================\r\n * Controls for InteractionObjects initiating directly\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Manually triggers drag start on the element. Could be useful in cases\r\n * where tracking or dragging one element can also influence dragging another\r\n * element.\r\n *\r\n * Passing in `pointer` reference is advisable. If not passed in it will try\r\n * to determine which pointer to attach to. However, it's better to specify\r\n * it explicitly.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.dragStart = function (io, pointer) {\r\n if (!pointer) {\r\n pointer = this.getDragPointer(io);\r\n }\r\n if (pointer) {\r\n this.handleDown(io, pointer, pointer.lastDownEvent);\r\n }\r\n };\r\n /**\r\n * Manually ends drag on the element.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.dragStop = function (io, pointer, cancelled) {\r\n if (!pointer) {\r\n pointer = this.getDragPointer(io);\r\n }\r\n if (pointer && !cancelled) {\r\n this.handleGlobalUp(pointer, pointer.lastUpEvent, cancelled);\r\n }\r\n };\r\n /**\r\n * This method uses a fuzzy logic to find the pointer to be used for dragging.\r\n * Beware that this is not a rock-solid solution. If there are a few objects\r\n * being dragged at the same time, you may get unexepected results.\r\n *\r\n * @param io InteractionObject to get pointers from\r\n * @return Pointer currently being used for dragging\r\n */\r\n Interaction.prototype.getDragPointer = function (io) {\r\n if (io) {\r\n // InteractionObject is supplied\r\n // Use it's first down pointer\r\n return io.downPointers.getIndex(0);\r\n }\r\n else if (this.transformedObjects.length) {\r\n // Use first dragged object\r\n return this.getDragPointer(this.transformedObjects.getIndex(0));\r\n }\r\n else {\r\n return undefined;\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Utils\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns pointer id for the given event object.\r\n *\r\n * @param ev Event\r\n * @return Pointer ID\r\n */\r\n Interaction.prototype.getPointerId = function (ev) {\r\n var id = \"\";\r\n if ($type.hasValue(ev.identifier)) {\r\n id = \"\" + ev.identifier;\r\n }\r\n else if ($type.hasValue(ev.pointerId)) {\r\n id = \"\" + ev.pointerId;\r\n }\r\n else {\r\n id = \"m\";\r\n }\r\n return id.replace(\"-\", \"\");\r\n };\r\n /**\r\n * Returns a cursor position of the event.\r\n *\r\n * @param ev Original event\r\n * @return Event point\r\n */\r\n Interaction.prototype.getPointerPoint = function (ev) {\r\n return {\r\n \"x\": ev.clientX,\r\n \"y\": ev.clientY\r\n };\r\n };\r\n /**\r\n * Returns [[Pointer]] object that is associated with the Event.\r\n *\r\n * If no such [[Pointer]] object exists, it is created.\r\n *\r\n * @param ev Event\r\n * @return Pointer\r\n */\r\n Interaction.prototype.getPointer = function (ev) {\r\n // Get pointer id\r\n var id = this.getPointerId(ev);\r\n // Get current coordinates\r\n var point = this.getPointerPoint(ev);\r\n // Look for the pointer in the Dictionary if it maybe already exists\r\n var pointer;\r\n if (this.pointers.hasKey(id)) {\r\n // We already have such pointer\r\n pointer = this.pointers.getKey(id);\r\n // We need this, because Edge reuses pointer ids across touch and mouse\r\n pointer.touch = this.isPointerTouch(ev);\r\n // Reset pointer\r\n //pointer.point = point;\r\n }\r\n else {\r\n // Init pointer\r\n pointer = {\r\n \"id\": id,\r\n //\"touch\": !(ev instanceof MouseEvent) || ((<any>ev).pointerType && (<any>ev).pointerType != \"pointer\"),\r\n //\"touch\": !(ev instanceof MouseEvent) || ((<any>ev).pointerType && (<any>ev).pointerType != \"mouse\"),\r\n \"touch\": this.isPointerTouch(ev),\r\n \"startPoint\": point,\r\n \"startTime\": $time.getTime(),\r\n \"point\": point,\r\n \"track\": [],\r\n \"swipeCanceled\": false,\r\n \"dragStartEvents\": []\r\n };\r\n // Add first breadcrumb\r\n this.addBreadCrumb(pointer, point);\r\n // Add for re-use later\r\n this.pointers.setKey(id, pointer);\r\n }\r\n // Log last event\r\n pointer.lastEvent = ev;\r\n this.lastPointer = pointer;\r\n return pointer;\r\n };\r\n /**\r\n * Determines if pointer event originated from a touch pointer or mouse.\r\n *\r\n * @param ev Original event\r\n * @return Touch pointer?\r\n */\r\n Interaction.prototype.isPointerTouch = function (ev) {\r\n if (typeof Touch !== \"undefined\" && ev instanceof Touch) {\r\n return true;\r\n }\r\n else if (typeof PointerEvent !== \"undefined\" && ev instanceof PointerEvent && $type.hasValue(ev.pointerType)) {\r\n switch (ev.pointerType) {\r\n case \"touch\":\r\n case \"pen\":\r\n case 2:\r\n return true;\r\n case \"mouse\":\r\n case 4:\r\n return false;\r\n default:\r\n return !(ev instanceof MouseEvent);\r\n }\r\n }\r\n else if ($type.hasValue(ev.type)) {\r\n if (ev.type.match(/^mouse/)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n /**\r\n * Resets the poiner to original state, i.e. cleans movement information,\r\n * starting point, etc.\r\n *\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.resetPointer = function (pointer, ev) {\r\n // Get current coordinates\r\n var point = this.getPointerPoint(ev);\r\n ;\r\n pointer.startTime = $time.getTime();\r\n pointer.startPoint = { x: point.x, y: point.y };\r\n pointer.point = { x: point.x, y: point.y };\r\n pointer.track = [];\r\n pointer.swipeCanceled = false;\r\n //clearTimeout(pointer.swipeTimeout);\r\n //clearTimeout(pointer.holdTimeout);\r\n };\r\n /**\r\n * Adds a \"breadcrumb\" point to the [[Pointer]] to log its movement path.\r\n *\r\n * @param pointer Pointer\r\n * @param point Point coordinates\r\n */\r\n Interaction.prototype.addBreadCrumb = function (pointer, point) {\r\n pointer.track.push({\r\n \"timestamp\": $time.getTime(),\r\n \"point\": point\r\n });\r\n };\r\n /**\r\n * Prepares the document for various touch-related operations.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.lockDocument = function () {\r\n this.prepElement(this.body);\r\n };\r\n /**\r\n * Restores document functionality.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.unlockDocument = function () {\r\n if (this.transformedObjects.length == 0) {\r\n this.restoreAllStyles(this.body);\r\n }\r\n };\r\n /**\r\n * Lock element (disable all touch)\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.lockElement = function (io) {\r\n this.prepElement(io);\r\n };\r\n /**\r\n * Restores element's functionality.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.unlockElement = function (io) {\r\n this.restoreAllStyles(io);\r\n };\r\n /**\r\n * Locks document's wheel scroll.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.lockWheel = function () {\r\n window.addEventListener(this._pointerEvents.wheel, this.wheelLockEvent, this._passiveSupported ? { passive: false } : false);\r\n };\r\n /**\r\n * Unlocks document's wheel scroll.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.unlockWheel = function () {\r\n window.removeEventListener(this._pointerEvents.wheel, this.wheelLockEvent);\r\n };\r\n /**\r\n * Checks if top element at pointer's position belongs to the SVG.\r\n *\r\n * @ignore Exlude from docs\r\n * @param pointer Pointer\r\n * @param svg The <svg> element\r\n * @param id A unique identifier of the object that is checking for locality\r\n * @return Belongs to SVG\r\n */\r\n Interaction.prototype.isLocalElement = function (pointer, svg, id) {\r\n var cached = this.getCache(\"local_pointer_\" + pointer.id);\r\n if ($type.hasValue(cached)) {\r\n return cached;\r\n }\r\n var doc = ($dom.getRoot(svg) || document);\r\n if (doc.elementFromPoint) {\r\n var target = doc.elementFromPoint(pointer.point.x, pointer.point.y);\r\n var local = target && $dom.contains(svg, target);\r\n this.setCache(\"local_pointer_\" + pointer.id + \"_\" + id, local, 100);\r\n return local;\r\n }\r\n return false;\r\n };\r\n /**\r\n * A function that cancels mouse wheel scroll.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n * @return Returns `false` to cancel\r\n */\r\n Interaction.prototype.wheelLockEvent = function (ev) {\r\n ev.preventDefault();\r\n return false;\r\n };\r\n /**\r\n * Applies a set of styles to an element. Stores the original styles so they\r\n * can be restored later.\r\n *\r\n * @ignore\r\n * @param io Element\r\n */\r\n Interaction.prototype.prepElement = function (io) {\r\n var el = io.element;\r\n if (el) {\r\n // Define possible props\r\n var props = [\r\n \"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\r\n \"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\r\n \"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\r\n \"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\r\n \"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\r\n \"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\r\n ];\r\n for (var i = 0; i < props.length; i++) {\r\n if (props[i] in el.style) {\r\n this.setTemporaryStyle(io, props[i], \"none\");\r\n }\r\n }\r\n // Remove iOS-specific selection;\r\n this.setTemporaryStyle(io, \"tapHighlightColor\", \"rgba(0, 0, 0, 0)\");\r\n //this.setTemporaryStyle(io, \"webkitOverflowScrolling\", \"none\");\r\n }\r\n };\r\n /**\r\n * Restores replaced styles\r\n *\r\n * @ignore\r\n * @param io Element\r\n */\r\n Interaction.prototype.unprepElement = function (io) {\r\n var el = io.element;\r\n if (el) {\r\n // Define possible props\r\n var props = [\r\n \"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\r\n \"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\r\n \"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\r\n \"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\r\n \"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\r\n \"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\r\n ];\r\n for (var i = 0; i < props.length; i++) {\r\n if (props[i] in el.style) {\r\n this.restoreStyle(io, props[i]);\r\n }\r\n }\r\n // Remove iOS-specific selection;\r\n this.restoreStyle(io, \"tapHighlightColor\");\r\n //this.restoreStyle(io, \"webkitOverflowScrolling\");\r\n }\r\n };\r\n /**\r\n * Returns an option associated with hit events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getHitOption = function (io, option) {\r\n var res = io.hitOptions[option];\r\n if (typeof res === \"undefined\") {\r\n res = this.hitOptions[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Returns an option associated with hover events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getHoverOption = function (io, option) {\r\n var res = io.hoverOptions[option];\r\n if (typeof res === \"undefined\") {\r\n res = this.hoverOptions[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Returns an option associated with swipe events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getSwipeOption = function (io, option) {\r\n var res = io.swipeOptions[option];\r\n if (typeof res === \"undefined\") {\r\n res = this.swipeOptions[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Returns an option for keyboard.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getKeyboardOption = function (io, option) {\r\n var res = io.keyboardOptions[option];\r\n if (typeof res === \"undefined\") {\r\n res = this.keyboardOptions[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Returns an option for mouse.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getMouseOption = function (io, option) {\r\n var res = io.mouseOptions[option];\r\n if (typeof res === \"undefined\") {\r\n res = this.mouseOptions[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Returns an option associated with inertia.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param type Inertia type\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getInertiaOption = function (io, type, option) {\r\n var options = io.inertiaOptions.getKey(type);\r\n var res;\r\n if (options && $type.hasValue(options[option])) {\r\n res = options[option];\r\n }\r\n else {\r\n res = this.inertiaOptions.getKey(type)[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Stops currently going on inertia. Useful if inertia is currently being\r\n * animated and the object is being interacted with.\r\n *\r\n * @param io Element\r\n */\r\n Interaction.prototype.stopInertia = function (io) {\r\n var x;\r\n var inertias = [\"move\", \"resize\"];\r\n for (var i = 0; i < inertias.length; i++) {\r\n x = inertias[i];\r\n if (io.inertias.hasKey(x)) {\r\n var inertia = io.inertias.getKey(x);\r\n if (inertia) {\r\n inertia.dispose();\r\n //io.inertiaAnimations.removeKey(x);\r\n //this.processDragStop(io);\r\n continue;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Check if swiping is currently being performed on an object.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer to check\r\n * @return `true` if swiping\r\n */\r\n Interaction.prototype.swiping = function (io, pointer) {\r\n var now = $time.getTime();\r\n if (pointer.swipeCanceled || !io.swipeable) {\r\n return false;\r\n }\r\n else if ((Math.abs(pointer.startPoint.y - pointer.point.y) < this.getSwipeOption(io, \"verticalThreshold\")) &&\r\n (pointer.startTime > (now - this.getSwipeOption(io, \"time\")))) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Returns `true` if a successfull swipe action was performed on an element.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @return Swiped?\r\n */\r\n Interaction.prototype.swiped = function (io, pointer) {\r\n var now = $time.getTime();\r\n if (pointer.swipeCanceled) {\r\n return false;\r\n }\r\n else if ((Math.abs(pointer.startPoint.x - pointer.point.x) > this.getSwipeOption(io, \"horizontalThreshold\")) &&\r\n (Math.abs(pointer.startPoint.y - pointer.point.y) < this.getSwipeOption(io, \"verticalThreshold\")) &&\r\n (pointer.startTime > (now - this.getSwipeOption(io, \"time\")))) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Applies style to mouse cursor based on its stage in relation to\r\n * [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param Element\r\n */\r\n Interaction.prototype.applyCursorOverStyle = function (io) {\r\n // Get sprite's cursor ooptions\r\n var options = io.cursorOptions;\r\n if (!$type.hasValue(options.overStyle)) {\r\n return;\r\n }\r\n // Apply cursor down styles\r\n for (var i = 0; i < options.overStyle.length; i++) {\r\n $dom.setStyle(io.element, options.overStyle[i].property, options.overStyle[i].value);\r\n }\r\n };\r\n /**\r\n * Applies style to mouse cursor based on its stage in relation to\r\n * [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.applyCursorDownStyle = function (io, pointer) {\r\n // Not applicable for touch pointers since they don't display a cursor\r\n if (pointer && pointer.touch) {\r\n return;\r\n }\r\n var downStyle = io.cursorOptions.downStyle;\r\n // Is down?\r\n if (io.downPointers.contains(pointer) && $type.hasValue(downStyle)) {\r\n // Apply cursor down styles\r\n for (var i = 0; i < downStyle.length; i++) {\r\n this.setTemporaryStyle(this.body, downStyle[i].property, downStyle[i].value);\r\n this.setTemporaryStyle(io, downStyle[i].property, downStyle[i].value);\r\n }\r\n }\r\n };\r\n /**\r\n * Restores original cursor style for the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.restoreCursorDownStyle = function (io, pointer) {\r\n // Not applicable for touch pointers since they don't display a cursor\r\n if (pointer && pointer.touch) {\r\n return;\r\n }\r\n var downStyle = io.cursorOptions.downStyle;\r\n // Is down?\r\n if (io.downPointers.contains(pointer) && $type.hasValue(downStyle)) {\r\n // Apply cursor down styles\r\n for (var i = 0; i < downStyle.length; i++) {\r\n this.restoreStyle(this.body, downStyle[i].property);\r\n this.restoreStyle(io, downStyle[i].property);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets style on the body of the document.\r\n *\r\n * @ignore Exclude from docs\r\n * @param style Style definitions\r\n */\r\n Interaction.prototype.setGlobalStyle = function (style) {\r\n var body = getInteraction().body;\r\n var styles = ($type.isArray(style) ? style : [style]);\r\n for (var i = 0; i < styles.length; i++) {\r\n this.setTemporaryStyle(body, styles[i].property, styles[i].value);\r\n }\r\n };\r\n /**\r\n * Restores style on the body of the document.\r\n *\r\n * @ignore Exclude from docs\r\n * @param style Style definitions\r\n */\r\n Interaction.prototype.restoreGlobalStyle = function (style) {\r\n var body = getInteraction().body;\r\n var styles = ($type.isArray(style) ? style : [style]);\r\n for (var i = 0; i < styles.length; i++) {\r\n this.restoreStyle(body, styles[i].property);\r\n }\r\n };\r\n /**\r\n * Checks if element is a non-cahrt element.\r\n *\r\n * @param io InteractionObject\r\n * @return Global element?\r\n */\r\n Interaction.prototype.isGlobalElement = function (io) {\r\n return document.body === io.element;\r\n };\r\n /**\r\n * Checks if pointer has moved since it was created.\r\n *\r\n * @param pointer Pointer\r\n * @param tolerance Tolerance in pixels\r\n * @param minTime Minimum time required for the pointer to be down to be considered moved\r\n * @return `true` if the pointer has moved\r\n */\r\n Interaction.prototype.moved = function (pointer, tolerance, minTime) {\r\n /*// If there was more time, we don't care if cursor actually moved\r\n let duration = $time.getTime() - pointer.startTime;\r\n if ($type.hasValue(minTime) && (minTime > duration)) {\r\n return false;\r\n }*/\r\n if (minTime === void 0) { minTime = 300; }\r\n // That was quick measure shift\r\n var shift = this.getShift(pointer);\r\n return (Math.abs(shift.x) > tolerance) || (Math.abs(shift.y) > tolerance);\r\n };\r\n /**\r\n * Returns if pointer is \"old\", meaning it has been pressing for more than\r\n * X milliseconds.\r\n *\r\n * @ignore\r\n * @param pointer Pointer\r\n * @param minTime Minimum time to consider pointer old\r\n * @return {boolean}\r\n */\r\n Interaction.prototype.old = function (pointer, minTime) {\r\n if (minTime === void 0) { minTime = 300; }\r\n return $time.getTime() - pointer.startTime > minTime;\r\n };\r\n /**\r\n * Returns total a shift in pointers coordinates between its original\r\n * position and now.\r\n *\r\n * @param pointer Pointer\r\n * @return Shift in coordinates (x/y)\r\n */\r\n Interaction.prototype.getShift = function (pointer) {\r\n return {\r\n \"x\": pointer.startPoint.x - pointer.point.x,\r\n \"y\": pointer.startPoint.y - pointer.point.y\r\n };\r\n };\r\n /**\r\n * Returns a point from [[Pointer]]'s move history at a certain timetamp.\r\n *\r\n * @param pointer Pointer\r\n * @param timestamp Timestamp\r\n * @return Point\r\n */\r\n Interaction.prototype.getTrailPoint = function (pointer, timestamp) {\r\n var res;\r\n for (var i = 0; i < pointer.track.length; i++) {\r\n if (pointer.track[i].timestamp >= timestamp) {\r\n res = pointer.track[i];\r\n break;\r\n }\r\n }\r\n return res;\r\n };\r\n /**\r\n * Checks if same pointer already exists in the list.\r\n *\r\n * @param list List to check agains\r\n * @param pointer Pointer\r\n * @return Exists?\r\n */\r\n Interaction.prototype.pointerExists = function (list, pointer) {\r\n var exists = false;\r\n list.each(function (item) {\r\n if (item == pointer) {\r\n return;\r\n }\r\n exists = item.point.x == pointer.point.x && item.point.y == pointer.point.y;\r\n });\r\n return exists;\r\n };\r\n /**\r\n * Returns an [[InteractionObject]] representation of a DOM element.\r\n *\r\n * You can use this on any HTML or SVG element, to add interactive features\r\n * to it.\r\n *\r\n * @param element Element\r\n * @return InteractionObject\r\n */\r\n Interaction.prototype.getInteraction = function (element) {\r\n return new InteractionObject(element);\r\n };\r\n /**\r\n * Sets a style property on an element. Stores original value to be restored\r\n * later with [[restoreStyle]].\r\n *\r\n * @see {@link restoreStyle}\r\n * @param io Element\r\n * @param property Property\r\n * @param value Value\r\n */\r\n Interaction.prototype.setTemporaryStyle = function (io, property, value) {\r\n // Get element\r\n //let el = io.element.tagName == \"g\" ? <SVGSVGElement>io.element.parentNode : io.element;\r\n var el = io.element;\r\n // Save original property if it is set and hasn't been saved before already\r\n if ($type.hasValue(el.style[property]) && !io.replacedStyles.hasKey(property)) {\r\n io.replacedStyles.setKey(property, el.style[property]);\r\n }\r\n // Replace with the new one\r\n $dom.setStyle(el, property, value);\r\n };\r\n /**\r\n * Restores specific style on an element.\r\n *\r\n * @param io Element\r\n * @param property Style property\r\n */\r\n Interaction.prototype.restoreStyle = function (io, property) {\r\n // Reset style\r\n if (io.replacedStyles.hasKey(property)) {\r\n io.element.style[property] = io.replacedStyles.getKey(property);\r\n io.replacedStyles.removeKey(property);\r\n }\r\n else {\r\n delete io.element.style[property];\r\n }\r\n };\r\n /**\r\n * Restore temporarily reset styles on an element.\r\n *\r\n * @param io Element\r\n */\r\n Interaction.prototype.restoreAllStyles = function (io) {\r\n $iter.each(io.replacedStyles.iterator(), function (a) {\r\n var key = a[0];\r\n var value = a[1];\r\n io.element.style[key] = value;\r\n io.replacedStyles.removeKey(key);\r\n });\r\n };\r\n /**\r\n * Disposes this object and cleans up after itself.\r\n */\r\n Interaction.prototype.dispose = function () {\r\n if (!this.isDisposed()) {\r\n _super.prototype.dispose.call(this);\r\n this.restoreAllStyles(this.body);\r\n this.unlockWheel();\r\n }\r\n };\r\n // @ts-ignore Used for debugging\r\n Interaction.prototype.log = function (text, ev, io) {\r\n var show = true;\r\n if (show) {\r\n // Touchlist?\r\n if (ev.changedTouches) {\r\n for (var i = 0; i < ev.changedTouches.length; i++) {\r\n this.logTouch(text, ev.type, ev.changedTouches[i]);\r\n }\r\n return;\r\n }\r\n // Get type\r\n var type = \"\";\r\n if (ev.pointerType) {\r\n switch (ev.pointerType) {\r\n case 2:\r\n type = \"touch\";\r\n break;\r\n case 4:\r\n type = \"mouse\";\r\n break;\r\n default:\r\n type = ev.pointerType;\r\n break;\r\n }\r\n }\r\n else if (typeof TouchEvent != \"undefined\" && ev instanceof TouchEvent) {\r\n type = \"touch\";\r\n }\r\n else if (ev.type.match(/^mouse/)) {\r\n type = \"mouse\";\r\n }\r\n else {\r\n type = \"???\";\r\n }\r\n // Get ID\r\n var id = \"\";\r\n if ($type.hasValue(ev.identifier)) {\r\n id = ev.identifier;\r\n }\r\n else if ($type.hasValue(ev.pointerId)) {\r\n id = ev.pointerId;\r\n }\r\n else {\r\n id = \"???\";\r\n }\r\n if (io) {\r\n console.log(text + \" (\" + io.uid + \") \" + ev.type + \" \" + type + \" \" + id);\r\n }\r\n else {\r\n console.log(text + \" \" + ev.type + \" \" + type + \" \" + id);\r\n }\r\n }\r\n };\r\n /**\r\n * Checks whether there are currently any objects being transformed (dragged\r\n * or resized).\r\n *\r\n * If `except` is set, that object will be ignored.\r\n *\r\n * @since 4.9.3\r\n * @param except Ignore this object(s)\r\n * @return Objects are being transformed\r\n */\r\n Interaction.prototype.areTransformed = function (except) {\r\n var count = this.transformedObjects.length;\r\n if (except) {\r\n var ex = $type.isArray(except) ? except : [except];\r\n for (var i = 0; i < ex.length; i++) {\r\n if (this.transformedObjects.contains(ex[i])) {\r\n count--;\r\n }\r\n }\r\n }\r\n return count > 0;\r\n };\r\n /**\r\n * Log.\r\n */\r\n Interaction.prototype.logTouch = function (text, type, ev) {\r\n console.log(text + \" \" + type + \" \" + \"touch\" + \" \" + ev.identifier);\r\n };\r\n Object.defineProperty(Interaction, \"passiveSupported\", {\r\n /**\r\n * Indicates if passive mode options is supported by this browser.\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (this._passiveSupported == null) {\r\n // Check for passive mode support\r\n try {\r\n var options_1 = Object.defineProperty({}, \"passive\", {\r\n get: function () {\r\n _this._passiveSupported = true;\r\n }\r\n });\r\n window.addEventListener(\"test\", options_1, options_1);\r\n window.removeEventListener(\"test\", options_1, options_1);\r\n }\r\n catch (err) {\r\n this._passiveSupported = false;\r\n }\r\n }\r\n return this._passiveSupported;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Interaction;\r\n}(BaseObjectEvents));\r\nexport { Interaction };\r\nvar interaction = null;\r\n/**\r\n * Returns a single unified global instance of [[Interaction]].\r\n *\r\n * All code should use this function, rather than create their own instances\r\n * of [[Interaction]].\r\n */\r\nexport function getInteraction() {\r\n if (interaction == null) {\r\n interaction = new Interaction();\r\n }\r\n return interaction;\r\n}\r\n","/**\r\n * Functionality related simulating of dragging of elements using keyboard.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { getInteraction } from \"./Interaction\";\r\nimport { system } from \"../System\";\r\nimport * as $array from \"../utils/Array\";\r\n/**\r\n * [[InteractionKeyboardObject]] is used to simulate dragging of the `draggable`\r\n * element using keyboard arrows.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar InteractionKeyboardObject = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param io An InteractionObject\r\n */\r\n function InteractionKeyboardObject(io, ev) {\r\n /**\r\n * Indicates if this object has already been deleted. Any\r\n * destruction/disposal code should take this into account when deciding\r\n * wheter to run potentially costly disposal operations if they already have\r\n * been run.\r\n */\r\n this._disposed = false;\r\n /**\r\n * Indicates direction of current horizontal movement.\r\n *\r\n * 0 - not moving horizontally\r\n * 1 - moving right\r\n * -1 - moving left\r\n */\r\n this.directionX = 0;\r\n /**\r\n * Indicates direction of current vertical movement.\r\n *\r\n * 0 - not moving vertically\r\n * 1 - moving down\r\n * -1 - moving up\r\n */\r\n this.directionY = 0;\r\n this.interaction = io;\r\n this.keyboardEvent = ev;\r\n this._startedOn = new Date().getTime();\r\n getInteraction().processDragStart(io);\r\n system.animations.push(this);\r\n this.update();\r\n }\r\n /**\r\n * It's an update method which is called by the system if\r\n * [[InteractionObject]] is used as animation.\r\n *\r\n * This will update coordinates of the element based on the movement\r\n * directions.\r\n */\r\n InteractionKeyboardObject.prototype.update = function () {\r\n // Init and get settings\r\n var io = this.interaction;\r\n var speed = getInteraction().getKeyboardOption(io, \"speed\"), accelleration = getInteraction().getKeyboardOption(io, \"accelleration\"), accellerationDelay = getInteraction().getKeyboardOption(io, \"accellerationDelay\"), shift = {\r\n x: 0,\r\n y: 0\r\n };\r\n // If SHIFT key is pressed we slash speed by half and disable accelleration\r\n if (this.keyboardEvent.shiftKey) {\r\n speed *= 0.5;\r\n accelleration = 1;\r\n }\r\n // If CTRL is pressed we increase speed by x2\r\n else if (this.keyboardEvent.ctrlKey) {\r\n speed *= 2;\r\n }\r\n // Get elapsed time\r\n var ms = new Date().getTime() - this._startedOn;\r\n var accelleratedMs = ms - accellerationDelay;\r\n // Add accellerated movement\r\n if ((accelleration > 0) && (accelleratedMs > 0)) {\r\n var accellerationFactor = ms / accellerationDelay;\r\n ms = accellerationDelay;\r\n shift.x += this.directionX * (speed * accelleration * accellerationFactor * accelleratedMs);\r\n shift.y += this.directionY * (speed * accelleration * accellerationFactor * accelleratedMs);\r\n }\r\n // Calculate position\r\n shift.x += this.directionX * (speed * ms);\r\n shift.y += this.directionY * (speed * ms);\r\n // Simulate move on Interaction\r\n getInteraction().handleTransformMove(io, shift, { x: 0, y: 0 }, this.keyboardEvent, true, false);\r\n };\r\n /**\r\n * Returns if this object has been already been disposed.\r\n *\r\n * @return Is disposed?\r\n */\r\n InteractionKeyboardObject.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Disposes this object. Removes from system animations.\r\n */\r\n InteractionKeyboardObject.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n getInteraction().processDragStop(this.interaction);\r\n $array.remove(system.animations, this);\r\n }\r\n };\r\n return InteractionKeyboardObject;\r\n}());\r\nexport { InteractionKeyboardObject };\r\n","/**\r\n * Interaction Object module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { InteractionObjectEventDispatcher } from \"./InteractionObjectEvents\";\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { List } from \"../utils/List\";\r\nimport { Dictionary, DictionaryDisposer } from \"../utils/Dictionary\";\r\nimport { getInteraction } from \"./Interaction\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * Re-exports\r\n */\r\nexport { InteractionObjectEventDispatcher };\r\n/**\r\n * Interaction object represents an object that is subject for any kind of\r\n * interaction with it with any input devices: mouse, touch or keyboard.\r\n *\r\n * Any DOM element can be wrapped into an Internaction object which in turn\r\n * enables attaching various interaction events to it, such as: hit, drag,\r\n * swipe, etc.\r\n *\r\n * To create an [[InteractionObject]] out of a [[Sprite]], use:\r\n * `interaction.getInteractionFromSprite(sprite: Sprite)`\r\n *\r\n * To create an [[InteractionObject]] out of a a regular element:\r\n * `interaction.getInteraction(element: HTMLElement)`\r\n */\r\nvar InteractionObject = /** @class */ (function (_super) {\r\n __extends(InteractionObject, _super);\r\n /**\r\n * Constructor\r\n */\r\n function InteractionObject(element) {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * @ignore\r\n * An [[EventDispatcher]] instance which holds events for this object\r\n */\r\n _this._eventDispatcher = new InteractionObjectEventDispatcher(_this);\r\n /**\r\n * Collection of Disposers for various events. (so that those get disposed\r\n * when the whole InteractionObject is disposed)\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.eventDisposers = new Dictionary();\r\n /**\r\n * A [[Dictionary]] that holds temporarily replaced original style values for\r\n * HTML element, so that they can be restored when the functionality that\r\n * replaced them is done.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.replacedStyles = new Dictionary();\r\n _this._clickable = false;\r\n _this._contextMenuDisabled = false;\r\n _this._hoverable = false;\r\n _this._trackable = false;\r\n _this._draggable = false;\r\n _this._swipeable = false;\r\n _this._resizable = false;\r\n _this._wheelable = false;\r\n _this._inert = false;\r\n /**\r\n * Is element currently hovered?\r\n */\r\n _this._isHover = false;\r\n /**\r\n * Was this element hovered via pointer or is it just \"pretenting\" to be\r\n * hovered.\r\n *\r\n * @ignore\r\n */\r\n _this.isRealHover = false;\r\n /**\r\n * Is the element hovered by touch pointer?\r\n */\r\n _this._isHoverByTouch = false;\r\n /**\r\n * Has element got any pointers currently pressing down on it?\r\n */\r\n _this._isDown = false;\r\n /**\r\n * Does element have focus?\r\n */\r\n _this._isFocused = false;\r\n /**\r\n * Is element currently protected from touch interactions?\r\n */\r\n _this._isTouchProtected = false;\r\n /**\r\n * Options used for inertia functionality.\r\n */\r\n _this._inertiaOptions = new Dictionary();\r\n /**\r\n * A collection of different inertia types, currently playing out.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.inertias = new Dictionary();\r\n /**\r\n * Click/tap options.\r\n */\r\n _this._hitOptions = {};\r\n /**\r\n * Hover options.\r\n */\r\n _this._hoverOptions = {};\r\n /**\r\n * Swipe gesture options.\r\n */\r\n _this._swipeOptions = {};\r\n /**\r\n * Keyboard options.\r\n */\r\n _this._keyboardOptions = {};\r\n /**\r\n * Mouse options.\r\n */\r\n _this._mouseOptions = {};\r\n /**\r\n * Cursor options.\r\n */\r\n _this._cursorOptions = {\r\n \"defaultStyle\": [{\r\n \"property\": \"cursor\",\r\n \"value\": \"default\"\r\n }]\r\n };\r\n _this._disposers.push(_this._eventDispatcher);\r\n _this._element = element;\r\n _this.className = \"InteractionObject\";\r\n _this._disposers.push(new DictionaryDisposer(_this.inertias));\r\n _this._disposers.push(new DictionaryDisposer(_this.eventDisposers));\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n ;\r\n Object.defineProperty(InteractionObject.prototype, \"events\", {\r\n /**\r\n * An [[EventDispatcher]] instance which holds events for this object\r\n */\r\n get: function () {\r\n return this._eventDispatcher;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"isHover\", {\r\n /**\r\n * @return Hovered?\r\n */\r\n get: function () {\r\n return this._isHover;\r\n },\r\n /**\r\n * Indicates if this element is currently hovered.\r\n *\r\n * @param value Hovered?\r\n */\r\n set: function (value) {\r\n if (this.isHover != value) {\r\n this._isHover = value;\r\n if (value) {\r\n getInteraction().overObjects.moveValue(this);\r\n }\r\n else {\r\n this.isRealHover = false;\r\n getInteraction().overObjects.removeValue(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"isHoverByTouch\", {\r\n /**\r\n * @return Hovered?\r\n */\r\n get: function () {\r\n return this._isHoverByTouch;\r\n },\r\n /**\r\n * Indicates if this element is currently hovered.\r\n *\r\n * @param value Hovered?\r\n */\r\n set: function (value) {\r\n if (this.isHoverByTouch != value) {\r\n this._isHoverByTouch = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"overPointers\", {\r\n /**\r\n * A list of pointers currently over the element.\r\n *\r\n * @see {@link Pointer}\r\n * @return List if pointers currently hovering the element\r\n */\r\n get: function () {\r\n if (!this._overPointers) {\r\n this._overPointers = new List();\r\n }\r\n return this._overPointers;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"isDown\", {\r\n /**\r\n * @return Has down pointers?\r\n */\r\n get: function () {\r\n return this._isDown;\r\n },\r\n /**\r\n * Indicates if this element has currently any pointers pressing on it.\r\n *\r\n * @param value Has down pointers?\r\n */\r\n set: function (value) {\r\n if (this.isDown != value) {\r\n this._isDown = value;\r\n if (value) {\r\n getInteraction().downObjects.moveValue(this);\r\n }\r\n else {\r\n getInteraction().downObjects.removeValue(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"downPointers\", {\r\n /**\r\n * A list of pointers currently pressing down on this element.\r\n *\r\n * @see {@link Pointer}\r\n * @return List of down pointers\r\n */\r\n get: function () {\r\n if (!this._downPointers) {\r\n this._downPointers = new List();\r\n }\r\n return this._downPointers;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"isFocused\", {\r\n /**\r\n * @return Focused?\r\n */\r\n get: function () {\r\n return this._isFocused;\r\n },\r\n /**\r\n * Indicates if this element is currently focused.\r\n *\r\n * @param value Focused?\r\n */\r\n set: function (value) {\r\n if (this.isFocused != value) {\r\n this._isFocused = value;\r\n if (value) {\r\n getInteraction().focusedObject = this;\r\n }\r\n else {\r\n getInteraction().focusedObject = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"isTouchProtected\", {\r\n /**\r\n * @ignore\r\n * @return Touch protected?\r\n */\r\n get: function () {\r\n return this._isTouchProtected;\r\n },\r\n /**\r\n * Indicates if this element is currently being protected from touch actions.\r\n *\r\n * @ignore\r\n * @param value Touch protected?\r\n */\r\n set: function (value) {\r\n if (this._isTouchProtected != value) {\r\n this._isTouchProtected = value;\r\n if (value) {\r\n getInteraction().unprepElement(this);\r\n }\r\n else if (this.draggable || this.swipeable || this.trackable || this.resizable) {\r\n getInteraction().prepElement(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"clickable\", {\r\n /**\r\n * @return Clickable?\r\n */\r\n get: function () {\r\n return this._clickable;\r\n },\r\n /**\r\n * Is element clickable? Clickable elements will generate \"hit\" events when\r\n * clicked or tapped.\r\n *\r\n * @param value Clickable?\r\n */\r\n set: function (value) {\r\n if (this._clickable !== value) {\r\n this._clickable = value;\r\n getInteraction().processClickable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"contextMenuDisabled\", {\r\n /**\r\n * @return Context menu disabled?\r\n */\r\n get: function () {\r\n return this._contextMenuDisabled;\r\n },\r\n /**\r\n * Should element prevent context menu to be displayed, e.g. when\r\n * right-clicked?\r\n *\r\n * @default false\r\n * @param value Context menu disabled?\r\n */\r\n set: function (value) {\r\n if (this._contextMenuDisabled !== value) {\r\n this._contextMenuDisabled = value;\r\n getInteraction().processContextMenu(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"hoverable\", {\r\n /**\r\n * @return Hoverable?\r\n */\r\n get: function () {\r\n return this._hoverable;\r\n },\r\n /**\r\n * Indicates if element should generate hover events.\r\n *\r\n * @param value Hoverable?\r\n */\r\n set: function (value) {\r\n if (this._hoverable !== value) {\r\n this._hoverable = value;\r\n getInteraction().processHoverable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"trackable\", {\r\n /**\r\n * @return Track pointer?\r\n */\r\n get: function () {\r\n return this._trackable;\r\n },\r\n /**\r\n * Indicates if pointer movement over element should be tracked.\r\n *\r\n * @param value Track pointer?\r\n */\r\n set: function (value) {\r\n if (this._trackable !== value) {\r\n this._trackable = value;\r\n getInteraction().processTrackable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"draggable\", {\r\n /**\r\n * @return Draggable?\r\n */\r\n get: function () {\r\n return this._draggable;\r\n },\r\n /**\r\n * Indicates if element can be dragged. (moved)\r\n *\r\n * @param value Draggable?\r\n */\r\n set: function (value) {\r\n if (this._draggable !== value) {\r\n this._draggable = value;\r\n getInteraction().processDraggable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"swipeable\", {\r\n /**\r\n * @return Track swipe?\r\n */\r\n get: function () {\r\n return this._swipeable;\r\n },\r\n /**\r\n * Indicates whether element should react to swipe gesture.\r\n *\r\n * @param value Track swipe?\r\n */\r\n set: function (value) {\r\n if (this._swipeable !== value) {\r\n this._swipeable = value;\r\n getInteraction().processSwipeable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"resizable\", {\r\n /**\r\n * @return Resizeble?\r\n */\r\n get: function () {\r\n return this._resizable;\r\n },\r\n /**\r\n * Indicates if element can be resized.\r\n *\r\n * @param value Resizeable?\r\n */\r\n set: function (value) {\r\n if (this._resizable !== value) {\r\n this._resizable = value;\r\n getInteraction().processResizable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"wheelable\", {\r\n /**\r\n * @return Track wheel?\r\n */\r\n get: function () {\r\n return this._wheelable;\r\n },\r\n /**\r\n * Indicates whether track moouse wheel rotation over element.\r\n *\r\n * @param value Track wheel?\r\n */\r\n set: function (value) {\r\n if (this._wheelable !== value) {\r\n this._wheelable = value;\r\n getInteraction().processWheelable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"inert\", {\r\n /**\r\n * @return Inert?\r\n */\r\n get: function () {\r\n return this._inert;\r\n },\r\n /**\r\n * Indicates if element is inert, i.e. if it should carry movement momentum\r\n * after it is dragged and released.\r\n *\r\n * @param value Inert?\r\n */\r\n set: function (value) {\r\n if (this._inert !== value) {\r\n this._inert = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"focusable\", {\r\n /**\r\n * @return Focusable?\r\n */\r\n get: function () {\r\n return this._focusable;\r\n },\r\n /**\r\n * Indicates if element can gain focus.\r\n *\r\n * @param value Focusable?\r\n */\r\n set: function (value) {\r\n if (this._focusable !== value) {\r\n this._focusable = value;\r\n if (this._focusable && this.tabindex == -1) {\r\n this._tabindex = 1;\r\n }\r\n getInteraction().processFocusable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"tabindex\", {\r\n /**\r\n * @return Tab index\r\n */\r\n get: function () {\r\n return $type.getValueDefault(this._tabindex, -1);\r\n },\r\n /**\r\n * Element's tab index.\r\n *\r\n * @param value Tab index\r\n */\r\n set: function (value) {\r\n if (this._tabindex !== value) {\r\n this._tabindex = value;\r\n if (value > -1) {\r\n this.focusable = true;\r\n }\r\n getInteraction().processFocusable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"element\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._element;\r\n },\r\n /**\r\n * A DOM element associated with this element.\r\n *\r\n * @param element Element\r\n */\r\n set: function (element) {\r\n this._element = element;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"originalPosition\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Position.\r\n */\r\n get: function () {\r\n return this._originalPosition || { x: 0, y: 0 };\r\n },\r\n /**\r\n * Element's original position.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Position\r\n */\r\n set: function (value) {\r\n this._originalPosition = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"originalScale\", {\r\n /**\r\n * @return Scale\r\n */\r\n get: function () {\r\n return $type.getValueDefault(this._originalScale, 1);\r\n },\r\n /**\r\n * Element's original scale.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Scale\r\n */\r\n set: function (value) {\r\n if (this._originalScale !== value) {\r\n this._originalScale = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"originalAngle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n return $type.getValueDefault(this._originalAngle, 0);\r\n },\r\n /**\r\n * Element's original angle.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n if (this._originalAngle !== value) {\r\n this._originalAngle = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"inertiaOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"inertiaOptions\", this._inertiaOptions);\r\n }\r\n else {\r\n return this._inertiaOptions;\r\n }\r\n },\r\n /**\r\n * Inertia options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._inertiaOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"hitOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"hitOptions\", this._hitOptions);\r\n }\r\n else {\r\n return this._hitOptions;\r\n }\r\n },\r\n /**\r\n * Hit options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._hitOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"hoverOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"hoverOptions\", this._hoverOptions);\r\n }\r\n else {\r\n return this._hoverOptions;\r\n }\r\n },\r\n /**\r\n * Hover options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._hoverOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"swipeOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"swipeOptions\", this._swipeOptions);\r\n }\r\n else {\r\n return this._swipeOptions;\r\n }\r\n },\r\n /**\r\n * Swipe options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._swipeOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"keyboardOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"keyboardOptions\", this._keyboardOptions);\r\n }\r\n else {\r\n return this._keyboardOptions;\r\n }\r\n },\r\n /**\r\n * Keyboard options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._keyboardOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"mouseOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"mouseOptions\", this._mouseOptions);\r\n }\r\n else {\r\n return this._mouseOptions;\r\n }\r\n },\r\n /**\r\n * Mouse options.\r\n *\r\n * Enables controlling options related to the mouse, for example sensitivity\r\n * of its mouse wheel.\r\n *\r\n * E.g. the below will reduce chart's wheel-zoom speed to half its default\r\n * speed:\r\n *\r\n * ```TypeScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"plotContainer\": {\r\n * \"mouseOptions\": {\r\n * \"sensitivity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @since 4.5.14\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._mouseOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"cursorOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"cursorOptions\", this._cursorOptions);\r\n }\r\n else {\r\n return this._cursorOptions;\r\n }\r\n },\r\n /**\r\n * Cursor options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._cursorOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all properties and related assets from another object of the same\r\n * type.\r\n *\r\n * @param source Source object\r\n */\r\n InteractionObject.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.inertiaOptions = source.inertiaOptions;\r\n this.hitOptions = source.hitOptions;\r\n this.hoverOptions = source.hoverOptions;\r\n this.swipeOptions = source.swipeOptions;\r\n this.keyboardOptions = source.keyboardOptions;\r\n this.cursorOptions = source.cursorOptions;\r\n this.contextMenuDisabled = source.contextMenuDisabled;\r\n getInteraction().applyCursorOverStyle(this);\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n InteractionObject.prototype.setEventDisposer = function (key, value, f) {\r\n var disposer = this.eventDisposers.getKey(key);\r\n if (value) {\r\n if (disposer == null) {\r\n this.eventDisposers.setKey(key, f());\r\n }\r\n }\r\n else {\r\n if (disposer != null) {\r\n disposer.dispose();\r\n this.eventDisposers.removeKey(key);\r\n }\r\n }\r\n };\r\n /**\r\n * Disposes object.\r\n */\r\n InteractionObject.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n // Remove from all interaction registries\r\n var interaction = getInteraction();\r\n interaction.overObjects.removeValue(this);\r\n interaction.downObjects.removeValue(this);\r\n interaction.trackedObjects.removeValue(this);\r\n interaction.transformedObjects.removeValue(this);\r\n // Unlock document wheel\r\n if (this.isHover && this.wheelable) {\r\n interaction.unlockWheel();\r\n }\r\n if (interaction.focusedObject === this) {\r\n interaction.focusedObject = undefined;\r\n }\r\n };\r\n return InteractionObject;\r\n}(BaseObjectEvents));\r\nexport { InteractionObject };\r\n","import { __extends } from \"tslib\";\r\nimport { TargetedEventDispatcher } from \"../utils/EventDispatcher\";\r\nimport { MultiDisposer, CounterDisposer } from \"../utils/Disposer\";\r\n/**\r\n * Represents an Event Dispatcher for [[InteractionObject]].\r\n *\r\n * Besides regular [[EventDispatcher]] functionality it adds new events with\r\n * direct application to DOM nodes. Primarily used to handle keyboard events,\r\n * but can turn into something else moving forward.\r\n */\r\nvar InteractionObjectEventDispatcher = /** @class */ (function (_super) {\r\n __extends(InteractionObjectEventDispatcher, _super);\r\n function InteractionObjectEventDispatcher() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * Holds a list of Disposers for DOM events added.\r\n */\r\n _this._domEvents = {};\r\n return _this;\r\n }\r\n /**\r\n * Adds a DOM event and returns Disposer.\r\n *\r\n * @return Disposer\r\n */\r\n InteractionObjectEventDispatcher.prototype._addDOMEvent = function (type, key, listener, context) {\r\n var _this = this;\r\n if (!this._domEvents[type]) {\r\n var callback_1 = function (e) {\r\n listener.call(context, key, e);\r\n };\r\n this.target.element.addEventListener(type, callback_1, false);\r\n this._domEvents[type] = new CounterDisposer(function () {\r\n delete _this._domEvents[type];\r\n _this.target.element.removeEventListener(type, callback_1, false);\r\n });\r\n }\r\n return this._domEvents[type].increment();\r\n };\r\n InteractionObjectEventDispatcher.prototype._dispatchKeyboardEvent = function (key, ev) {\r\n // TODO use this.dispatchImmediately ?\r\n if (this.target.events.isEnabled(key)) {\r\n this.target.events.dispatchImmediately(key, {\r\n type: key,\r\n target: this.target,\r\n event: ev\r\n });\r\n }\r\n };\r\n InteractionObjectEventDispatcher.prototype._on = function (once, type, callback, context, shouldClone, dispatch) {\r\n var info = _super.prototype._on.call(this, once, type, callback, context, shouldClone, dispatch);\r\n var disposers = [info.disposer];\r\n switch (type) {\r\n case \"hit\":\r\n case \"doublehit\":\r\n case \"rightclick\":\r\n case \"down\":\r\n case \"up\":\r\n this.target.clickable = true;\r\n break;\r\n case \"drag\":\r\n case \"dragstart\":\r\n case \"dragstop\":\r\n this.target.draggable = true;\r\n break;\r\n case \"track\":\r\n this.target.trackable = true;\r\n break;\r\n case \"resize\":\r\n this.target.resizable = true;\r\n break;\r\n case \"swipe\":\r\n case \"swipeleft\":\r\n case \"swiperight\":\r\n this.target.swipeable = true;\r\n break;\r\n case \"wheel\":\r\n case \"wheelup\":\r\n case \"wheeldown\":\r\n case \"wheelleft\":\r\n case \"wheelright\":\r\n this.target.wheelable = true;\r\n break;\r\n case \"over\":\r\n case \"out\":\r\n this.target.hoverable = true;\r\n break;\r\n case \"focus\":\r\n case \"blur\":\r\n case \"focusin\":\r\n case \"focusout\":\r\n this.target.focusable = true;\r\n break;\r\n case \"keydown\":\r\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\r\n break;\r\n case \"keyup\":\r\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\r\n break;\r\n case \"keypress\":\r\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\r\n break;\r\n case \"input\":\r\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\r\n break;\r\n }\r\n info.disposer = new MultiDisposer(disposers);\r\n return info;\r\n };\r\n return InteractionObjectEventDispatcher;\r\n}(TargetedEventDispatcher));\r\nexport { InteractionObjectEventDispatcher };\r\n","/**\r\n * Mouse-related functionality\r\n */\r\n/**\r\n * Defines static methods that hold style list for various mouse cursor styles,\r\n * maintaining browser compatibility.\r\n */\r\nvar MouseCursorStyle = /** @class */ (function () {\r\n function MouseCursorStyle() {\r\n }\r\n /**\r\n * Styles for \"grab\" mouse cursor.\r\n */\r\n MouseCursorStyle.grab = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"move\"\r\n }, {\r\n \"property\": \"cursor\",\r\n \"value\": \"grab\"\r\n }, {\r\n \"property\": \"cursor\",\r\n \"value\": \"-webkit-grab\"\r\n }];\r\n /**\r\n * Styles for \"grabbing\" mouse cursor.\r\n */\r\n MouseCursorStyle.grabbing = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"move\"\r\n }, {\r\n \"property\": \"cursor\",\r\n \"value\": \"grabbing\"\r\n }, {\r\n \"property\": \"cursor\",\r\n \"value\": \"-webkit-grabbing\"\r\n }];\r\n /**\r\n * Styles for \"pointer\" mouse cursor. (usually used for links)\r\n */\r\n MouseCursorStyle.pointer = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"pointer\"\r\n }];\r\n /**\r\n * Styles for default mouse cursor. (browser determines style)\r\n */\r\n MouseCursorStyle.default = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"default\"\r\n }];\r\n /**\r\n * Styles for horizontal bi-directional resize mouse cursor.\r\n */\r\n MouseCursorStyle.horizontalResize = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"ew-resize\"\r\n }];\r\n /**\r\n * Styles for vertical bi-directional mouse cursor.\r\n */\r\n MouseCursorStyle.verticalResize = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"ns-resize\"\r\n }];\r\n /**\r\n * Styles for \"no-allowed\" cursor.\r\n * @since 4.7.15\r\n */\r\n MouseCursorStyle.notAllowed = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"not-allowed\"\r\n }];\r\n /**\r\n * Styles for \"text\" cursor.\r\n * @since 4.9.12\r\n */\r\n MouseCursorStyle.text = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"text\"\r\n }];\r\n return MouseCursorStyle;\r\n}());\r\nexport { MouseCursorStyle };\r\n","/**\r\n * [[AMElement]] represents any SVG element and related functionality.\r\n */\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all SVG elements. Provides low-level DOM functionality.\r\n *\r\n * All visual elements extend this class.\r\n */\r\nvar AMElement = /** @class */ (function () {\r\n /**\r\n * Constructor creates a new element or uses the one that was passed in.\r\n *\r\n * @param element Element reference node type\r\n */\r\n function AMElement(element) {\r\n /**\r\n * Indicates if the element was already disposed.\r\n */\r\n this._isDisposed = false;\r\n /**\r\n * Current X coordinate.\r\n */\r\n this._x = 0;\r\n /**\r\n * Current Y coordinate.\r\n */\r\n this._y = 0;\r\n /**\r\n *\r\n */\r\n this._rotationY = 0;\r\n /**\r\n *\r\n */\r\n this._rotationX = 0;\r\n /**\r\n * Current rotation.\r\n */\r\n this._rotation = 0;\r\n /**\r\n * Current scale.\r\n */\r\n this._scale = 1;\r\n if (typeof element === \"string\") {\r\n this.node = document.createElementNS($dom.SVGNS, element);\r\n }\r\n else {\r\n this.node = element;\r\n }\r\n }\r\n /**\r\n * Removes element's node from DOM.\r\n */\r\n AMElement.prototype.removeNode = function () {\r\n if (this.node) {\r\n if (this.node.parentNode) {\r\n this.node.parentNode.removeChild(this.node);\r\n }\r\n }\r\n };\r\n Object.defineProperty(AMElement.prototype, \"transformString\", {\r\n /**\r\n * Returns `transform` attribute of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Transform attribute value\r\n */\r\n get: function () {\r\n if (this.node) {\r\n return this._transformString;\r\n /*\r\n const value = this.node.getAttribute(\"transform\");\r\n \r\n if (value !== null) {\r\n return value;\r\n }*/\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Appply position, rotation and scale properties via elemen's `transform`\r\n * property\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AMElement.prototype.transform = function () {\r\n var transfromString = \"translate(\" + this._x + \",\" + this._y + \")\";\r\n if (this._scale != 1) {\r\n transfromString += ((transfromString ? \" \" : \"\") + \"scale(\" + this._scale + \")\");\r\n }\r\n if (this._rotation != 0) {\r\n var rotateString = \"rotate(\" + this._rotation + \")\";\r\n if (this._rotationX && this._rotationY) {\r\n rotateString = \"rotate(\" + this._rotation + \" \" + this._rotationX + \" \" + this._rotationY + \")\";\r\n }\r\n transfromString += ((transfromString ? \" \" : \"\") + rotateString);\r\n }\r\n this._transformString = transfromString;\r\n this.node.setAttribute(\"transform\", transfromString);\r\n };\r\n /**\r\n * Returns bounding box of the element.\r\n *\r\n * ATTENTION: Bounding box calculations are extremely costly so should be\r\n * used sparingly and cached whenever possible.\r\n *\r\n * @return Bounding rectangle\r\n */\r\n AMElement.prototype.getBBox = function () {\r\n var bbox = {\r\n width: 0,\r\n height: 0,\r\n x: 0,\r\n y: 0\r\n };\r\n // FF would fail if getBBox() is called without node added to parent\r\n if (this.node && this.node.parentNode) {\r\n try { // again for ff. TODO: check if this doesn't slow down\r\n var svgbbox = this.node.getBBox();\r\n bbox.x = svgbbox.x;\r\n bbox.y = svgbbox.y;\r\n bbox.width = svgbbox.width;\r\n bbox.height = svgbbox.height;\r\n }\r\n catch (err) { }\r\n }\r\n return bbox;\r\n };\r\n /**\r\n * Moves the element to new coordinates.\r\n *\r\n * @param x Target X\r\n * @param y Target Y\r\n */\r\n AMElement.prototype.moveTo = function (point) {\r\n if (point) {\r\n var x = point.x;\r\n var y = point.y;\r\n if (this._x != x || this._y != y) {\r\n this._x = x;\r\n this._y = y;\r\n this.transform();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AMElement.prototype, \"content\", {\r\n /**\r\n * Returns element's contents as SVG markup.\r\n *\r\n * @return Contents\r\n */\r\n get: function () {\r\n // @todo Do not use `innerHTML` as this is not reliable and will not work on all browsers\r\n return this.node.innerHTML || \"\";\r\n },\r\n /**\r\n * Element's SVG contents.\r\n *\r\n * @param value Contents\r\n */\r\n set: function (value) {\r\n // @todo Do not use `innerHTML` as this is not reliable and will not work on all browsers\r\n this.node.innerHTML = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"textContent\", {\r\n /**\r\n * @return Text contents\r\n */\r\n get: function () {\r\n return this.node.textContent || \"\";\r\n },\r\n /**\r\n * Text contents of the SVG element.\r\n *\r\n * @param value Text contents\r\n */\r\n set: function (value) {\r\n this.node.textContent = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"x\", {\r\n /**\r\n * @return X coordinate (px)\r\n */\r\n get: function () {\r\n return this._x;\r\n },\r\n /**\r\n * Element's X position in pixels.\r\n *\r\n * @param value X coordinate (px)\r\n */\r\n set: function (value) {\r\n if (this._x != value) {\r\n this._x = value;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"y\", {\r\n /**\r\n * @return Y coordinate (px)\r\n */\r\n get: function () {\r\n return this._y;\r\n },\r\n /**\r\n * Element's Y position in pixels.\r\n *\r\n * @param value Y coordinate (px)\r\n */\r\n set: function (value) {\r\n if (this._y != value) {\r\n this._y = value;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"rotation\", {\r\n /**\r\n * @return Rotation\r\n */\r\n get: function () {\r\n return this._rotation;\r\n },\r\n /**\r\n * Element's rotation in degrees.\r\n *\r\n * @param value Rotation\r\n */\r\n set: function (angle) {\r\n if (this._rotation != angle) {\r\n this._rotation = angle;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"rotationX\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._rotationX;\r\n },\r\n /**\r\n * @ignore\r\n */\r\n set: function (x) {\r\n if (this._rotationX != x) {\r\n this._rotationX = x;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"rotationY\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._rotationY;\r\n },\r\n /**\r\n * @ignore\r\n */\r\n set: function (y) {\r\n if (this._rotationY != y) {\r\n this._rotationY = y;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"scale\", {\r\n /**\r\n * @return Scale\r\n */\r\n get: function () {\r\n return this._scale;\r\n },\r\n /**\r\n * Element's scale where 1 is original size.\r\n *\r\n * Setting to 0.5 will reduce element's size by 50%, 2 will make element\r\n * twice as large, etc.\r\n *\r\n * @param value Scale\r\n */\r\n set: function (value) {\r\n if (this._scale != value) {\r\n this._scale = value;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Removes an attribute from element.\r\n *\r\n * @param attribute Attribute to remove\r\n */\r\n AMElement.prototype.removeAttr = function (attribute) {\r\n this.node.removeAttribute(attribute);\r\n };\r\n /**\r\n * Sets a set of attributes on a element.\r\n *\r\n * @param attributes An object with attribute names (key) and values\r\n * @return The same element\r\n */\r\n AMElement.prototype.attr = function (attributes) {\r\n var _this = this;\r\n $object.each(attributes, function (attributeName, attributeValue) {\r\n if (!$type.hasValue(attributeValue)) {\r\n _this.node.removeAttribute(attributeName);\r\n }\r\n else {\r\n // this is for performance testing\r\n //if(attributeValue == this.node.getAttribute(attributeName)){\r\n //\tconsole.log(attributeName, attributeValue)\r\n //}\r\n _this.node.setAttribute(attributeName, attributeValue);\r\n }\r\n });\r\n return this;\r\n };\r\n /**\r\n * Returns a value of a node attribute.\r\n *\r\n * @param attribute Attribute name\r\n * @return Attribute value\r\n */\r\n AMElement.prototype.getAttr = function (attribute) {\r\n return this.node.getAttribute(attribute);\r\n };\r\n /**\r\n * Sets a single attribute of the element's node using namesspace.\r\n *\r\n * @param ns Namespace\r\n * @param attribute Attribute\r\n * @param value Value\r\n * @return The same element\r\n */\r\n AMElement.prototype.attrNS = function (ns, attribute, value) {\r\n this.node.setAttributeNS(ns, attribute, value);\r\n return this;\r\n };\r\n /**\r\n * Returns a namespaced attribute value from node.\r\n *\r\n * @param ns Namespace\r\n * @param attribute Attribute\r\n * @return Attribute value\r\n */\r\n AMElement.prototype.getAttrNS = function (ns, attribute) {\r\n return this.node.getAttributeNS(ns, attribute);\r\n };\r\n /**\r\n * Removes `style` attribute from node.\r\n *\r\n * @param attribute Attribute to remove\r\n */\r\n AMElement.prototype.removeStyle = function (attribute) {\r\n // @todo Review because it's a bit messy and maybe not needed (pratically not used)\r\n this.node.style[attribute] = null;\r\n delete this.node.style[attribute];\r\n };\r\n /**\r\n * Returns style attribute value.\r\n *\r\n * @param attribute Style attribute value\r\n * @return Attribute value\r\n */\r\n AMElement.prototype.getStyle = function (attribute) {\r\n // @todo Review because it's a bit messy and maybe not needed (pratically not used)\r\n return this.node.style[attribute];\r\n };\r\n /**\r\n * Adds style attributes to element's node.\r\n *\r\n * @param attributes Object containing attribute: value pairs\r\n * @return The same element\r\n */\r\n AMElement.prototype.addStyle = function (attributes) {\r\n var _this = this;\r\n // @todo Review because it's a bit messy and maybe not needed (pratically not used)\r\n $object.each(attributes, function (attributeName, attributeValue) {\r\n if (!$type.hasValue(attributeValue)) {\r\n _this.removeStyle(attributeName);\r\n }\r\n else {\r\n _this.node.style[attributeName] = attributeValue;\r\n }\r\n });\r\n return this;\r\n };\r\n /**\r\n * Adds a class to element.\r\n *\r\n * @param name Class name\r\n */\r\n AMElement.prototype.addClass = function (name) {\r\n $dom.addClass(this.node, name);\r\n };\r\n /**\r\n * Removes a class from element.\r\n *\r\n * @param name Class name\r\n */\r\n AMElement.prototype.removeClass = function (name) {\r\n $dom.removeClass(this.node, name);\r\n };\r\n /**\r\n * Sets a class name on element.\r\n *\r\n * @param name Class name\r\n */\r\n AMElement.prototype.setClass = function (name) {\r\n this.node.setAttribute(\"class\", name);\r\n };\r\n /**\r\n * Removes all element's child nodes, basically leaving it empty.\r\n */\r\n AMElement.prototype.removeChildNodes = function () {\r\n // remove all children\r\n while (this.node.childNodes.length > 0) {\r\n this.node.removeChild(this.node.firstChild);\r\n }\r\n };\r\n /**\r\n * Was this element already been disposed?\r\n *\r\n * @return Disposed?\r\n */\r\n AMElement.prototype.isDisposed = function () {\r\n return this._isDisposed;\r\n };\r\n /**\r\n * Disposes element.\r\n */\r\n AMElement.prototype.dispose = function () {\r\n this.removeNode();\r\n };\r\n return AMElement;\r\n}());\r\nexport { AMElement };\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AMElement } from \"./AMElement\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates an SVG `<g>` element.\r\n *\r\n * SVG groups are used for elements that need more elements just one.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Element/g} About `<g>` element\r\n */\r\nvar Group = /** @class */ (function (_super) {\r\n __extends(Group, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param elementName Element type (should be \"g\")\r\n */\r\n function Group(elementName) {\r\n return _super.call(this, elementName) || this;\r\n }\r\n /**\r\n * Adds an element to group.\r\n *\r\n * This will manipulate DOM. `element` will be physically moved into group.\r\n *\r\n * @param element Element\r\n */\r\n Group.prototype.add = function (element) {\r\n if (element) {\r\n this.node.appendChild(element.node);\r\n }\r\n };\r\n /**\r\n * Adds an element to group.\r\n *\r\n * This will manipulate DOM. `element` will be physically moved into group.\r\n *\r\n * @param element Element\r\n */\r\n Group.prototype.addToBack = function (element) {\r\n if (element) {\r\n var first = this.node.childNodes[0];\r\n if (first) {\r\n if (first != element.node) {\r\n this.node.insertBefore(element.node, first);\r\n }\r\n }\r\n else {\r\n this.node.appendChild(element.node);\r\n }\r\n }\r\n };\r\n /**\r\n * Removes the `element` from group.\r\n *\r\n * Please note that this will not dispose the element itself, it will just\r\n * remove it from the group.\r\n *\r\n * @param element Element\r\n */\r\n Group.prototype.removeElement = function (element) {\r\n // todo: not sure about the speed, need to investigate, maybe it's faster to check if node is a child\r\n if (element) {\r\n try {\r\n if (element.node && element.node.parentNode == this.node) {\r\n this.node.removeChild(element.node);\r\n }\r\n }\r\n catch (err) {\r\n }\r\n }\r\n };\r\n /**\r\n * Checks if this group already has the child element added\r\n *\r\n * @param element\r\n * @return {boolean}\r\n */\r\n Group.prototype.hasChild = function (element) {\r\n for (var i = 0; i < this.node.childNodes.length; i++) {\r\n if (this.node.childNodes[i] == element.node) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(Group.prototype, \"content\", {\r\n /**\r\n * @return SVG markup\r\n */\r\n get: function () {\r\n return this.node.innerHTML;\r\n },\r\n /**\r\n * Content of the group element.\r\n *\r\n * Can be used to add a lot of proprietary SVG markup into group.\r\n *\r\n * @param value SVG markup\r\n */\r\n set: function (value) {\r\n this.node.innerHTML = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Removes all children from the group.\r\n */\r\n Group.prototype.removeChildren = function () {\r\n if (this.node.childNodes) {\r\n while (this.node.childNodes.length > 0) {\r\n var childNode = this.node.firstChild;\r\n if (childNode && childNode.parentNode) {\r\n childNode.parentNode.removeChild(childNode);\r\n }\r\n }\r\n }\r\n };\r\n Group.prototype.removeChildrenByTag = function (tag) {\r\n if (this.node.childNodes) {\r\n var remove = this.node.getElementsByTagName(tag);\r\n for (var i = 0; i < remove.length; i++) {\r\n this.node.removeChild(remove[i]);\r\n }\r\n }\r\n };\r\n return Group;\r\n}(AMElement));\r\nexport { Group };\r\n","/**\r\n * Paper class just like the white sheet of pressed fiber it draws its name\r\n * inspiration from is used as a starting point to start a drawing.\r\n *\r\n * Before we can start adding elements (drawing) we need to take out a new sheet\r\n * of paper, or in this instance create a blank SVG element.\r\n *\r\n * This class creates such element, as well as implements methods needed to\r\n * start adding elements to it.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AMElement } from \"./AMElement\";\r\nimport { Group } from \"./Group\";\r\nimport { SVGContainer } from \"./SVGContainer\";\r\nimport * as $dom from \"../utils/DOM\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Paper class which when instantiated will create an SVG element as well as\r\n * some of the sub-elements like `<desc>`, `<defs>`.\r\n *\r\n * Use its methods like `addGroup` and `append` to add elements to the paper.\r\n */\r\nvar Paper = /** @class */ (function () {\r\n /**\r\n * Creates main `<svg>` container and related elements.\r\n *\r\n * @param container A reference to HTML element to create `<svg>` in\r\n */\r\n function Paper(container, id) {\r\n // Store container reference\r\n this.container = container;\r\n this.id = id;\r\n // Create SVG element\r\n var svg = document.createElementNS($dom.SVGNS, \"svg\");\r\n svg.setAttribute(\"version\", \"1.1\");\r\n svg.setAttributeNS($dom.XMLNS, \"xmlns\", $dom.SVGNS);\r\n svg.setAttributeNS($dom.XMLNS, \"xmlns:xlink\", $dom.XLINK);\r\n svg.setAttribute(\"role\", \"group\");\r\n this.container.appendChild(svg);\r\n // Add description\r\n //let desc: SVGElement = <SVGElement>document.createElementNS($dom.SVGNS, \"desc\");\r\n //desc.appendChild(document.createTextNode(\"JavaScript chart by amCharts\"));\r\n //svg.appendChild(desc);\r\n // Add defs\r\n this.defs = document.createElementNS($dom.SVGNS, \"defs\");\r\n svg.appendChild(this.defs);\r\n // Set width and height to fit container\r\n svg.style.width = \"100%\";\r\n svg.style.height = \"100%\";\r\n svg.style.overflow = \"visible\";\r\n // Store variable\r\n this.svg = svg;\r\n }\r\n /**\r\n * Creates and returns a new element. Does not attach it to Paper yet.\r\n *\r\n * @param elementName Element name\r\n * @return New element\r\n */\r\n Paper.prototype.add = function (elementName) {\r\n return new AMElement(elementName);\r\n };\r\n /**\r\n * Creates and returns a new Group element. Does not attach it to Paper.\r\n *\r\n * @param groupName Element name\r\n * @return New Group\r\n */\r\n Paper.prototype.addGroup = function (groupName) {\r\n return new Group(groupName);\r\n };\r\n /**\r\n * Appends an element to Paper.\r\n *\r\n * @param element Element to append\r\n */\r\n Paper.prototype.append = function (element) {\r\n if (element) {\r\n this.svg.appendChild(element.node);\r\n }\r\n };\r\n /**\r\n * Appends an element to `<defs>` block of the Paper.\r\n *\r\n * @param element Element\r\n */\r\n Paper.prototype.appendDef = function (element) {\r\n if (element) {\r\n this.defs.appendChild(element.node);\r\n }\r\n };\r\n /**\r\n * Creates and returns new `<foreignObject>` element. Does not append it to\r\n * Paper.\r\n *\r\n * @return A foreignObject element\r\n */\r\n Paper.prototype.foreignObject = function () {\r\n var element = new AMElement(\"foreignObject\");\r\n //this.append(element);\r\n return element;\r\n };\r\n /**\r\n * Checks if browser supports `<foreignObject>` elements.\r\n *\r\n * @return Supports `foreignObject`?\r\n */\r\n Paper.prototype.supportsForeignObject = function () {\r\n return document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#Extensibility\", \"1.1\");\r\n };\r\n return Paper;\r\n}());\r\nexport { Paper };\r\nvar ghostPaper = null;\r\n/**\r\n * A [[Paper]] instance to create elements, that are not yet ready to be\r\n * placed in visible DOM.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function getGhostPaper() {\r\n if (ghostPaper === null) {\r\n // ghost is used to draw elements while real paper is not yet created or Sprite doesn't know parent yet\r\n var ghostDiv = document.createElement(\"div\");\r\n ghostDiv.hidden = true;\r\n ghostDiv.style.width = \"1px\";\r\n ghostDiv.style.height = \"1px\";\r\n ghostDiv.style.position = \"absolute\";\r\n ghostDiv.style.zIndex = \"-1000000\";\r\n document.body.appendChild(ghostDiv);\r\n var ghostSvgContainer = new SVGContainer(ghostDiv, true);\r\n ghostPaper = new Paper(ghostSvgContainer.SVGContainer, \"ghost\");\r\n }\r\n return ghostPaper;\r\n}\r\n","/**\r\n * A collection of functions that deals with path calculations.\r\n */\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\nimport { getGhostPaper } from \"../rendering/Paper\";\r\nimport { options } from \"../Options\";\r\n/**\r\n * ============================================================================\r\n * PATH FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns an SVG path from a number of points.\r\n *\r\n * @ignore Exclude from docs\r\n * @param points An array of line elbow points\r\n * @return SVG path\r\n */\r\nexport function polyline(points) {\r\n var path = lineTo(points[0]);\r\n var prevPoint = { x: 0, y: 0 };\r\n var minStep = options.minPolylineStep;\r\n if (!$type.isNumber(minStep)) {\r\n minStep = 0.5;\r\n }\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var point = points[i];\r\n if ($math.getDistance(point, prevPoint) > minStep) {\r\n path += lineTo(point);\r\n prevPoint = point;\r\n }\r\n }\r\n return path;\r\n}\r\n/**\r\n * Returns a starting point of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Starting point\r\n * @return SVG path\r\n */\r\nexport function moveTo(point) {\r\n return \" M\" + $math.round(point.x, 4) + \",\" + $math.round(point.y, 4) + \" \";\r\n}\r\n/**\r\n * Returns a line part of SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point SVG path\r\n * @return SVG path\r\n */\r\nexport function lineTo(point) {\r\n return \" L\" + $math.round(point.x, 4) + \",\" + $math.round(point.y, 4) + \" \";\r\n}\r\n/**\r\n * Returns a quadratic curve part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point End point of the curve\r\n * @param controlPoint Control point\r\n * @return SVG path\r\n */\r\nexport function quadraticCurveTo(point, controlPoint) {\r\n return \" Q\" + $math.round(controlPoint.x, 4)\r\n + \",\" + $math.round(controlPoint.y, 4) + \" \" + $math.round(point.x, 4)\r\n + \",\" + $math.round(point.y, 4);\r\n}\r\n/**\r\n * Returns a cubic curve part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point End point of the curve\r\n * @param controlPointA Control point A\r\n * @param controlPointB Control point B\r\n * @return SVG path\r\n */\r\nexport function cubicCurveTo(point, controlPointA, controlPointB) {\r\n return \" C\" + $math.round(controlPointA.x, 4)\r\n + \",\" + $math.round(controlPointA.y, 4) + \" \" + $math.round(controlPointB.x, 4)\r\n + \",\" + $math.round(controlPointB.y, 4) + \" \" + $math.round(point.x, 4)\r\n + \",\" + $math.round(point.y, 4);\r\n}\r\n/**\r\n * Returns a terminator for an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @return SVG path\r\n */\r\nexport function closePath() {\r\n return \" Z\";\r\n}\r\n/**\r\n * Returns an arc part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Better parameter descriptions\r\n * @param startAngle Starting angle\r\n * @param arc Arc\r\n * @param radius Radius\r\n * @param radiusY Vertical radius\r\n * @return SVG path\r\n */\r\nexport function arcTo(startAngle, arc, radius, radiusY) {\r\n if (arc == 0) {\r\n return \"\";\r\n }\r\n if (!$type.isNumber(radiusY)) {\r\n radiusY = radius;\r\n }\r\n var path = \"\";\r\n var c = \",\";\r\n var segments = Math.ceil(Math.abs(arc) / 180);\r\n var l = 1;\r\n if (arc < 0) {\r\n l = 0;\r\n }\r\n // previous, as we use a not A\r\n var pax = 0;\r\n var pay = 0;\r\n // center\r\n var cx = -$math.cos(startAngle) * radius;\r\n var cy = -$math.sin(startAngle) * radiusY;\r\n // foir very short angles and big radius, solves artefacts\r\n if (arc < 0.5 && radius > 3000) {\r\n var endAngle = startAngle + arc;\r\n var ax = $math.round($math.cos(endAngle) * radius, 4);\r\n var ay = $math.round($math.sin(endAngle) * radiusY, 4);\r\n return lineTo({ x: ax, y: ay });\r\n }\r\n for (var i = 0; i < segments; i++) {\r\n var endAngle = startAngle + arc / segments * (i + 1);\r\n var ax = $math.round($math.cos(endAngle) * radius + cx - pax, 4);\r\n var ay = $math.round($math.sin(endAngle) * radiusY + cy - pay, 4);\r\n path += \" a\" + radius + c + radiusY + c + 0 + c + 0 + c + l + c + ax + c + ay;\r\n pax = ax;\r\n pay = ay;\r\n }\r\n return path;\r\n}\r\n/**\r\n * Creates an arc path.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startAngle [description]\r\n * @param arc [description]\r\n * @param radius [description]\r\n * @param innerRadius [description]\r\n * @param radiusY [description]\r\n * @param cornerRadius [description]\r\n * @param innerCornerRadius [description]\r\n * @return SVG path\r\n */\r\nexport function arc(startAngle, arc, radius, innerRadius, radiusY, cornerRadius, innerCornerRadius) {\r\n if (arc == 0) {\r\n return \"\";\r\n }\r\n if (!$type.isNumber(innerRadius)) {\r\n innerRadius = 0;\r\n }\r\n if (radius == 0 && innerRadius <= 0) {\r\n return \"\";\r\n }\r\n if (radius < innerRadius) {\r\n var temp = radius;\r\n radius = innerRadius;\r\n innerRadius = temp;\r\n if ($type.isNumber(radiusY)) {\r\n radiusY = radiusY / innerRadius * radius;\r\n }\r\n }\r\n arc = $math.min(arc, 360);\r\n if (arc == 360) {\r\n cornerRadius = 0;\r\n innerCornerRadius = 0;\r\n }\r\n var endAngle = startAngle + arc;\r\n var crSin = $math.sin($math.min(arc, 45) / 2);\r\n radiusY = $type.isNumber(radiusY) ? radiusY : radius;\r\n cornerRadius = cornerRadius || 0;\r\n innerCornerRadius = $type.isNumber(innerCornerRadius) ? innerCornerRadius : cornerRadius;\r\n var innerRadiusY = (radiusY / radius) * innerRadius;\r\n var cornerRadiusY = (radiusY / radius) * cornerRadius;\r\n var innerCornerRadiusY = (radiusY / radius) * innerCornerRadius;\r\n cornerRadius = $math.fitToRange(cornerRadius, 0, (radius - innerRadius) / 2);\r\n cornerRadiusY = $math.fitToRange(cornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n innerCornerRadius = $math.fitToRange(innerCornerRadius, 0, (radius - innerRadius) / 2);\r\n innerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n cornerRadius = $math.round($math.fitToRange(cornerRadius, 0, radius * crSin), 4);\r\n cornerRadiusY = $math.round($math.fitToRange(cornerRadiusY, 0, radiusY * crSin), 4);\r\n innerCornerRadius = $math.round($math.fitToRange(innerCornerRadius, 0, innerRadius * crSin), 4);\r\n innerCornerRadiusY = $math.round($math.fitToRange(innerCornerRadiusY, 0, innerRadiusY * crSin), 4);\r\n var crAngle = Math.asin(cornerRadius / radius / 2) * $math.DEGREES * 2;\r\n var crAngleY = Math.asin(cornerRadiusY / radiusY / 2) * $math.DEGREES * 2;\r\n if (innerRadius < innerCornerRadius) {\r\n innerRadius = innerCornerRadius;\r\n }\r\n if (innerRadiusY < innerCornerRadiusY) {\r\n innerRadiusY = innerCornerRadiusY;\r\n }\r\n var crInnerAngle = Math.asin(innerCornerRadius / innerRadius / 2) * $math.DEGREES * 2;\r\n var crInnerAngleY = Math.asin(innerCornerRadiusY / innerRadiusY / 2) * $math.DEGREES * 2;\r\n if (!$type.isNumber(crInnerAngle)) {\r\n crInnerAngle = 0;\r\n }\r\n if (!$type.isNumber(crInnerAngleY)) {\r\n crInnerAngleY = 0;\r\n }\r\n var middleAngle = startAngle + arc / 2;\r\n var mPoint = { x: $math.round($math.cos(middleAngle) * innerRadius, 4), y: $math.sin(middleAngle) * innerRadiusY };\r\n var a0 = { x: $math.cos(startAngle) * (innerRadius + innerCornerRadius), y: $math.sin(startAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n var b0 = { x: $math.cos(startAngle) * (radius - cornerRadius), y: $math.sin(startAngle) * (radiusY - cornerRadiusY) };\r\n var c0 = { x: $math.cos(endAngle) * (radius - cornerRadius), y: $math.sin(endAngle) * (radiusY - cornerRadiusY) };\r\n var d0 = { x: $math.cos(endAngle) * (innerRadius + innerCornerRadius), y: $math.sin(endAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n var b1 = { x: $math.cos(startAngle + crAngle) * radius, y: $math.sin(startAngle + crAngleY) * radiusY };\r\n var d1 = { x: $math.cos(endAngle - crInnerAngle) * innerRadius, y: $math.sin(endAngle - crInnerAngleY) * innerRadiusY };\r\n // some magic math\r\n innerCornerRadius += innerCornerRadius * $math.sin(crInnerAngle / 2);\r\n innerCornerRadiusY += innerCornerRadiusY * $math.sin(crInnerAngleY / 2);\r\n if (crInnerAngle > (endAngle - startAngle) / 2) {\r\n d1 = mPoint;\r\n }\r\n var path = \"\";\r\n // start from b if this is full circle\r\n if (arc == 360) {\r\n path = moveTo(b0);\r\n }\r\n // otherwise start from a\r\n else {\r\n path = moveTo(a0);\r\n path += lineTo(b0);\r\n path += arcToPoint(b1, cornerRadius, cornerRadiusY, true);\r\n }\r\n // draw arc\r\n path += arcTo(startAngle + crAngle, arc - 2 * crAngle, radius, radiusY);\r\n // draw inner arc\r\n if ($type.isNumber(innerRadius) && innerRadius != 0) {\r\n // move to B if this is full circle\r\n if (arc == 360 && cornerRadius == 0) {\r\n path += moveTo(d0);\r\n }\r\n // draw line otherwise\r\n else {\r\n path += arcToPoint(c0, cornerRadius, cornerRadiusY, true);\r\n path += lineTo(d0);\r\n path += arcToPoint(d1, innerCornerRadius, innerCornerRadiusY, true);\r\n }\r\n path += arcTo(endAngle - crInnerAngle, -(arc - 2 * crInnerAngle), innerRadius, innerRadiusY);\r\n if (arc < 360 || cornerRadius > 0) {\r\n path += arcToPoint(a0, innerCornerRadius, innerCornerRadiusY, true);\r\n }\r\n path += lineTo(a0);\r\n }\r\n else {\r\n path += arcToPoint(c0, cornerRadius, cornerRadiusY, true);\r\n if (arc < 360) {\r\n path += lineTo(a0);\r\n }\r\n }\r\n return path;\r\n}\r\n/**\r\n * Creates a path for an arc to specific coordinate.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param point Reference point\r\n * @param radius Radius\r\n * @param radiusY Vertical radius (for skewed arcs)\r\n * @param sweepFlag [description]\r\n * @param largeArcFlag [description]\r\n * @param xAxisRotation [description]\r\n * @return Arc path\r\n */\r\nexport function arcToPoint(point, radius, radiusY, sweepFlag, largeArcFlag, xAxisRotation) {\r\n if (radius == 0) {\r\n return \"\";\r\n }\r\n xAxisRotation = xAxisRotation || 0;\r\n largeArcFlag = Boolean(largeArcFlag);\r\n sweepFlag = Boolean(sweepFlag);\r\n var c = \",\";\r\n var sweepFlagValue = +sweepFlag; // converts to 1 or 0\r\n var largeArcFlagValue = +largeArcFlag; // converts to 1 or 0\r\n return \" A\" + radius + c + radiusY + c + xAxisRotation + c + largeArcFlagValue + c + sweepFlagValue + c + $math.round(point.x, 4) + c + $math.round(point.y, 4);\r\n}\r\n/**\r\n * Creates a new rectangle.\r\n *\r\n * @ignore Exclude from docs\r\n * @param width Width (px)\r\n * @param height Height (px)\r\n * @param x X position\r\n * @param y Y position\r\n * @return Rectangle\r\n */\r\nexport function rectangle(width, height, x, y) {\r\n if (!$type.isNumber(x)) {\r\n x = 0;\r\n }\r\n if (!$type.isNumber(y)) {\r\n y = 0;\r\n }\r\n return moveTo({ x: x, y: y }) + lineTo({ x: x + width, y: y }) + lineTo({ x: x + width, y: y + height }) + lineTo({ x: x, y: y + height }) + closePath();\r\n}\r\n/**\r\n * Converts a rectangle to an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rect Rectangle\r\n * @param ccw Counter-clockwise?\r\n * @return SVG path\r\n */\r\nexport function rectToPath(rect, ccw) {\r\n var c = \",\";\r\n var L = \" L\";\r\n if (ccw) {\r\n return \"M\" + rect.x\r\n + c + rect.y + L + rect.x\r\n + c + (rect.y + rect.height) + L + (rect.x + rect.width)\r\n + c + (rect.y + rect.height) + L + (rect.x + rect.width)\r\n + c + rect.y + L + rect.x\r\n + c + rect.y;\r\n }\r\n else {\r\n return \"M\" + rect.x\r\n + c + rect.y + L + (rect.x + rect.width)\r\n + c + rect.y + L + (rect.x + rect.width)\r\n + c + (rect.y + rect.height) + L + rect.x\r\n + c + (rect.y + rect.height) + L + rect.x\r\n + c + rect.y;\r\n }\r\n}\r\n/**\r\n * Converts SVG path to array of points.\r\n *\r\n * Note, this is experimental feature based on method which is deprecated\r\n * on some browsers and some browsers do not support it at all.\r\n *\r\n * You can save the output of this function, but not rely on it completely.\r\n */\r\nexport function pathToPoints(path, pointCount) {\r\n var paper = getGhostPaper();\r\n var svgPath = paper.add(\"path\").node;\r\n svgPath.setAttribute(\"d\", path);\r\n if (svgPath.getPointAtLength && svgPath.getTotalLength) {\r\n var length_1 = svgPath.getTotalLength();\r\n var toPoints = [];\r\n for (var i = 0; i < pointCount; i++) {\r\n var point = svgPath.getPointAtLength(i / pointCount * length_1);\r\n toPoints.push({ x: point.x, y: point.y });\r\n }\r\n return toPoints;\r\n }\r\n svgPath.remove();\r\n}\r\nexport function spiralPoints(cx, cy, radius, radiusY, innerRadius, step, radiusStep, startAngle, endAngle) {\r\n if (!$type.isNumber(startAngle)) {\r\n startAngle = 0;\r\n }\r\n if (!$type.isNumber(startAngle)) {\r\n endAngle = startAngle;\r\n }\r\n var r = innerRadius + 0.01;\r\n var angle = startAngle * $math.RADIANS;\r\n var points = [];\r\n while (r < radius + radiusStep) {\r\n var stepSize = step;\r\n if (stepSize / 2 > r) {\r\n stepSize = 2 * r;\r\n }\r\n angle += 2 * Math.asin(stepSize / 2 / r);\r\n if (angle * $math.DEGREES > endAngle + ((radius - innerRadius) / radiusStep) * 360) {\r\n break;\r\n }\r\n var degrees = angle * $math.DEGREES;\r\n var point = { x: cx + r * Math.cos(angle), y: cy + r * radiusY / radius * Math.sin(angle) };\r\n points.push(point);\r\n r = innerRadius + degrees / 360 * radiusStep;\r\n }\r\n points.shift();\r\n return points;\r\n}\r\nexport function pointsToPath(points) {\r\n if (!points || points.length == 0) {\r\n return \"\";\r\n }\r\n var path = moveTo(points[0]);\r\n if (points && points.length > 0) {\r\n for (var i = 1; i < points.length; i++) {\r\n path += lineTo(points[i]);\r\n }\r\n }\r\n return path;\r\n}\r\n","import * as $array from \"./Array\";\r\nimport * as $log from \"./Log\";\r\nvar Native = /** @class */ (function () {\r\n function Native() {\r\n var _this = this;\r\n this._targets = [];\r\n this._observer = new ResizeObserver(function (entries) {\r\n $array.each(entries, function (entry) {\r\n $array.each(_this._targets, function (x) {\r\n if (x.target === entry.target) {\r\n x.callback();\r\n }\r\n });\r\n });\r\n });\r\n }\r\n Native.prototype.addTarget = function (target, callback) {\r\n this._observer.observe(target, { box: \"content-box\" });\r\n this._targets.push({ target: target, callback: callback });\r\n };\r\n Native.prototype.removeTarget = function (target) {\r\n this._observer.unobserve(target);\r\n $array.keepIf(this._targets, function (x) {\r\n return x.target !== target;\r\n });\r\n };\r\n return Native;\r\n}());\r\nvar Raf = /** @class */ (function () {\r\n function Raf() {\r\n this._targets = [];\r\n }\r\n Raf.prototype.addTarget = function (target, callback) {\r\n var _this = this;\r\n if (this._targets.length === 0) {\r\n var lastTime_1 = null;\r\n var loop_1 = function () {\r\n var currentTime = Date.now();\r\n if (lastTime_1 === null || currentTime > (lastTime_1 + Raf.delay)) {\r\n lastTime_1 = currentTime;\r\n $array.each(_this._targets, function (x) {\r\n var newSize = x.target.getBoundingClientRect();\r\n if (newSize.width !== x.size.width || newSize.height !== x.size.height) {\r\n x.size = newSize;\r\n x.callback();\r\n }\r\n });\r\n }\r\n _this._timer = requestAnimationFrame(loop_1);\r\n };\r\n this._timer = requestAnimationFrame(loop_1);\r\n }\r\n var size = target.getBoundingClientRect();\r\n this._targets.push({ target: target, callback: callback, size: size });\r\n };\r\n Raf.prototype.removeTarget = function (target) {\r\n $array.keepIf(this._targets, function (x) {\r\n return x.target !== target;\r\n });\r\n if (this._targets.length === 0) {\r\n cancelAnimationFrame(this._timer);\r\n }\r\n };\r\n Raf.delay = 200;\r\n return Raf;\r\n}());\r\nvar observer = null;\r\nfunction makeSensor() {\r\n if (observer === null) {\r\n if (typeof ResizeObserver !== \"undefined\") {\r\n observer = new Native();\r\n }\r\n else {\r\n observer = new Raf();\r\n }\r\n }\r\n return observer;\r\n}\r\nvar ResizeSensor = /** @class */ (function () {\r\n function ResizeSensor(element, callback) {\r\n this._disposed = false;\r\n this._sensor = makeSensor();\r\n this._element = element;\r\n this._sensor.addTarget(element, callback);\r\n }\r\n ResizeSensor.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n ResizeSensor.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._sensor.removeTarget(this._element);\r\n }\r\n };\r\n Object.defineProperty(ResizeSensor.prototype, \"sensor\", {\r\n get: function () {\r\n return this._sensor;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Deprecated: do not use.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ResizeSensor.prototype.reset = function () {\r\n $log.warn(\"resizeSensor.reset() is no longer needed and can be removed\");\r\n };\r\n return ResizeSensor;\r\n}());\r\nexport { ResizeSensor };\r\n","/**\r\n * This functionality is related to the HTML wrapper that houses `<svg>` tag.\r\n */\r\nimport { Popup } from \"../elements/Popup\";\r\nimport { Modal } from \"../elements/Modal\";\r\nimport { ListTemplate, ListDisposer } from \"../utils/List\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\nimport { ResizeSensor } from \"../utils/ResizeSensor\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A array of all SVG Containers (one SVG container per chart instance).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var svgContainers = [];\r\n/**\r\n * A class used to create an HTML wrapper for the SVG contents.\r\n */\r\nvar SVGContainer = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n *\r\n * * Creates an HTML wrapper for SVG\r\n */\r\n function SVGContainer(htmlElement, ghost) {\r\n var _this = this;\r\n /**\r\n * Indicates if this object has already been deleted. Any\r\n * destruction/disposal code should take this into account when deciding\r\n * wheter to run potentially costly disposal operations if they already have\r\n * been run.\r\n */\r\n this._disposed = false;\r\n /**\r\n * If this component is in a separate HTML container, `autoResize` means the\r\n * module will constantly measure container's size and adopt contents to it.\r\n */\r\n this.autoResize = true;\r\n /**\r\n * Holds list of references to [[Sprite]] objects that should not be exported\r\n * when exporting chart to an image.\r\n *\r\n * @ignore\r\n */\r\n this.nonExportableSprites = [];\r\n /**\r\n * List of objects that need to be disposed when this one is disposed.\r\n */\r\n this._disposers = [];\r\n this.cssScale = 1;\r\n // This is needed so that it won't resize while printing, so that way printing works correctly.\r\n this._printing = false;\r\n // Log parent HTML element\r\n this.htmlElement = htmlElement;\r\n if (!ghost) {\r\n this._printing = false;\r\n this.initSensor();\r\n this._disposers.push($dom.addEventListener(window, \"beforeprint\", function () {\r\n _this._printing = true;\r\n }));\r\n this._disposers.push($dom.addEventListener(window, \"afterprint\", function () {\r\n _this._printing = false;\r\n }));\r\n }\r\n // Adds to containers array\r\n svgContainers.push(this);\r\n /**\r\n * Create child div for the container - it will have svg node\r\n * It might seem that this container is not necessay, however having it solves\r\n * a problems with mouse position detection and some other.\r\n */\r\n var svgContainer = document.createElement(\"div\");\r\n var style = svgContainer.style;\r\n style.width = \"100%\";\r\n style.height = \"100%\";\r\n style.position = \"relative\";\r\n htmlElement.appendChild(svgContainer);\r\n this.SVGContainer = svgContainer;\r\n }\r\n /**\r\n * (Re)Initializes a resize sensor.\r\n */\r\n SVGContainer.prototype.initSensor = function () {\r\n var _this = this;\r\n if (this.resizeSensor) {\r\n this.resizeSensor.dispose();\r\n }\r\n var callback = function () {\r\n if (_this.autoResize && !_this._printing) {\r\n _this.measure();\r\n }\r\n };\r\n this.resizeSensor = new ResizeSensor(this.htmlElement, callback);\r\n this._disposers.push(this.resizeSensor);\r\n };\r\n /**\r\n * Measures size of parent HTML element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SVGContainer.prototype.measure = function () {\r\n var width = $utils.width(this.htmlElement);\r\n var height = $utils.height(this.htmlElement);\r\n var container = this.container;\r\n if (container) {\r\n if (this.width != width || this.height != height) {\r\n this.width = width;\r\n this.height = height;\r\n if (width > 0) {\r\n container.maxWidth = width;\r\n }\r\n if (height > 0) {\r\n container.maxHeight = height;\r\n }\r\n $dom.fixPixelPerfect(this.SVGContainer);\r\n }\r\n if (!container.maxWidth) {\r\n container.maxWidth = 0;\r\n }\r\n if (!container.maxHeight) {\r\n container.maxHeight = 0;\r\n }\r\n this.cssScale = 1;\r\n this.checkTransform(this.htmlElement);\r\n }\r\n };\r\n Object.defineProperty(SVGContainer.prototype, \"container\", {\r\n /**\r\n * @return Container\r\n */\r\n get: function () {\r\n return this._container;\r\n },\r\n /**\r\n * A [[Container]] element which is placed into container.\r\n *\r\n * @param container Container\r\n */\r\n set: function (container) {\r\n this._container = container;\r\n this.measure();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns if this object has been already been disposed.\r\n *\r\n * @return Is disposed?\r\n */\r\n SVGContainer.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Removes this container from SVG container list in system, which\r\n * effectively disables size change monitoring for it.\r\n */\r\n SVGContainer.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n $array.remove(svgContainers, this);\r\n }\r\n $array.each(this._disposers, function (item) {\r\n item.dispose();\r\n });\r\n };\r\n Object.defineProperty(SVGContainer.prototype, \"hideOverflow\", {\r\n /**\r\n * Indicates if chart container should have its style set\r\n * to `overflow: hidden`.\r\n *\r\n * Normally, we don't want that, so that certain elements, such as tooltips,\r\n * would be able to go outside chart area.\r\n *\r\n * There is one issue though. Some browsers ignore SVG masks and would\r\n * display scrollbars if chart elements, that go outside chart area extend\r\n * outside window.\r\n *\r\n * This is especially true for [[MapChart]], which can have its elements\r\n * extend very widely when zoomed in. Even if those parts are not visible\r\n * because of SVG masks, some browsers might still display window scrollbars.\r\n *\r\n * This is why we set this setting to `true` in [[MapChart]].\r\n *\r\n * Other charts use default of `false`.\r\n */\r\n set: function (value) {\r\n if (value) {\r\n this.SVGContainer.style.overflow = \"hidden\";\r\n }\r\n else {\r\n this.SVGContainer.style.overflow = \"\";\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SVGContainer.prototype, \"modal\", {\r\n /**\r\n * ==========================================================================\r\n * MODAL/POPUP RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns a [[Modal]] instance, associated with this chart.\r\n * (elements top parent)\r\n *\r\n * Accessing modal does not make it appear. To make a modal appear, use\r\n * `showModal()` method.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @return Modal instance\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._modal)) {\r\n // Create new modal\r\n this._modal = new Modal();\r\n this._modal.container = this.SVGContainer;\r\n // Add to disposers\r\n this._disposers.push(this._modal);\r\n }\r\n return this._modal;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Opens a modal window with specific content (`text` parameter) and,\r\n * optionally, `title`.\r\n *\r\n * The `text` parameter can contain HTML content.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @param text Modal contents\r\n * @param title Title for the modal window\r\n */\r\n SVGContainer.prototype.openModal = function (text, title) {\r\n // Hide previous modal\r\n this.closeModal();\r\n // Create modal\r\n var modal = this.modal;\r\n modal.content = text;\r\n modal.readerTitle = title || \"\";\r\n modal.title = title || \"\";\r\n modal.open();\r\n return modal;\r\n };\r\n /**\r\n * Hides modal window if there is one currently open.\r\n */\r\n SVGContainer.prototype.closeModal = function () {\r\n if (this._modal) {\r\n this.modal.close();\r\n }\r\n };\r\n Object.defineProperty(SVGContainer.prototype, \"popups\", {\r\n /**\r\n * A list of popups for this chart.\r\n *\r\n * @return Popups\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._popups)) {\r\n // Create popup template\r\n var popupTemplate = new Popup();\r\n popupTemplate.container = this.SVGContainer;\r\n // Create the list\r\n this._popups = new ListTemplate(popupTemplate);\r\n // Add to disposers\r\n this._disposers.push(new ListDisposer(this._popups));\r\n this._disposers.push(this._popups.template);\r\n }\r\n return this._popups;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates, opens, and returns a new [[Popup]] window.\r\n *\r\n * `text` can be any valid HTML.\r\n *\r\n * `title` is currently not supported.\r\n *\r\n * @param text Popup contents\r\n * @param title Popup title\r\n * @return Popup instance\r\n */\r\n SVGContainer.prototype.openPopup = function (text, title) {\r\n var popup = this.popups.create();\r\n popup.content = text;\r\n if ($type.hasValue(title)) {\r\n popup.title = title;\r\n }\r\n popup.open();\r\n return popup;\r\n };\r\n /**\r\n * Closes all currently open popup windows\r\n */\r\n SVGContainer.prototype.closeAllPopups = function () {\r\n this.popups.each(function (popup) {\r\n popup.close();\r\n });\r\n };\r\n Object.defineProperty(SVGContainer.prototype, \"readerAlertElement\", {\r\n /**\r\n * ==========================================================================\r\n * ACCESSIBILITY STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * A `<div>` element used as as placeholder to trigger screen alerts.\r\n *\r\n * @sunce 4.9.2\r\n * @return Element\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._readerAlertElement)) {\r\n // Create element\r\n var div = document.createElement(\"div\");\r\n div.setAttribute(\"role\", \"alert\");\r\n div.style.zIndex = \"-100000\";\r\n div.style.opacity = \"0\";\r\n div.style.position = \"absolute\";\r\n div.style.top = \"0\";\r\n this.SVGContainer.appendChild(div);\r\n this._readerAlertElement = div;\r\n }\r\n return this._readerAlertElement;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Triggers screen reader read out a message.\r\n *\r\n * @since 4.9.2\r\n * @param text Alert text\r\n */\r\n SVGContainer.prototype.readerAlert = function (text) {\r\n this.readerAlertElement.innerHTML = text;\r\n };\r\n /**\r\n * ==========================================================================\r\n * OTHER STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n SVGContainer.prototype.checkTransform = function (div) {\r\n if (window.getComputedStyle) {\r\n if (div && div.style) {\r\n var style = window.getComputedStyle(div, null);\r\n if (style) {\r\n var matrix = style.getPropertyValue(\"-webkit-transform\") ||\r\n style.getPropertyValue(\"-moz-transform\") ||\r\n style.getPropertyValue(\"-ms-transform\") ||\r\n style.getPropertyValue(\"-o-transform\") ||\r\n style.getPropertyValue(\"transform\");\r\n if (matrix && matrix !== \"none\") {\r\n var values = matrix.split('(')[1].split(')')[0].split(',');\r\n var a = Number(values[0]);\r\n var b = Number(values[1]);\r\n var scale = Math.sqrt(a * a + b * b);\r\n if (!isNaN(scale)) {\r\n this.cssScale *= scale;\r\n }\r\n }\r\n }\r\n }\r\n if (div.parentNode && div.parentNode instanceof HTMLElement) {\r\n this.checkTransform(div.parentNode);\r\n }\r\n }\r\n };\r\n return SVGContainer;\r\n}());\r\nexport { SVGContainer };\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"./Path\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar Tension = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n */\r\n function Tension(tensionX, tensionY) {\r\n this._tensionX = tensionX;\r\n this._tensionY = tensionY;\r\n }\r\n /**\r\n * [smooth description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param points [description]\r\n * @return [description]\r\n */\r\n Tension.prototype.smooth = function (points) {\r\n for (var i = points.length - 1; i > 0; i--) {\r\n var p0 = points[i];\r\n var p1 = points[i - 1];\r\n if (Math.abs(p0.x - p1.x) < 0.1 && Math.abs(p0.y - p1.y) < 0.1) {\r\n points.splice(i - 1, 1);\r\n }\r\n }\r\n var tensionX = this._tensionX;\r\n var tensionY = this._tensionY;\r\n if (points.length < 3 || (tensionX >= 1 && tensionY >= 1)) {\r\n return $path.polyline(points);\r\n }\r\n var first = points[0];\r\n var last = points[points.length - 1];\r\n var closed = false;\r\n if ($math.round(first.x, 3) == $math.round(last.x) && $math.round(first.y) == $math.round(last.y)) {\r\n closed = true;\r\n }\r\n // Can't moveTo here, as it wont be possible to have fill then.\r\n var path = \"\";\r\n for (var i = 0, len = points.length - 1; i < len; i++) {\r\n var p0 = points[i - 1];\r\n var p1 = points[i];\r\n var p2 = points[i + 1];\r\n var p3 = points[i + 2];\r\n if (i === 0) {\r\n if (closed) {\r\n p0 = points[points.length - 2];\r\n }\r\n else {\r\n p0 = points[i];\r\n }\r\n }\r\n else if (i == points.length - 2) {\r\n if (closed) {\r\n p3 = points[1];\r\n }\r\n else {\r\n p3 = points[i + 1];\r\n }\r\n }\r\n var controlPointA = $math.getCubicControlPointA(p0, p1, p2, p3, tensionX, tensionY);\r\n var controlPointB = $math.getCubicControlPointB(p0, p1, p2, p3, tensionX, tensionY);\r\n path += $path.cubicCurveTo(p2, controlPointA, controlPointB);\r\n }\r\n return path;\r\n };\r\n return Tension;\r\n}());\r\nexport { Tension };\r\n/**\r\n * Returns a waved line SVG path between two points.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point1 Starting point\r\n * @param point2 Ending point\r\n * @param waveLength Wave length\r\n * @param waveHeight Wave height\r\n * @param adjustWaveLength Adjust wave length based on the actual line length\r\n * @return SVG path\r\n */\r\nexport function wavedLine(point1, point2, waveLength, waveHeight, tension, adjustWaveLength) {\r\n var x1 = point1.x;\r\n var y1 = point1.y;\r\n var x2 = point2.x;\r\n var y2 = point2.y;\r\n var distance = $math.getDistance(point1, point2);\r\n if (adjustWaveLength) {\r\n waveLength = distance / Math.round(distance / waveLength);\r\n }\r\n var d = registry.getCache($utils.stringify([\"wavedLine\", point1.x, point2.x, point1.y, point2.y, waveLength, waveHeight]));\r\n if (!d) {\r\n if (distance > 0) {\r\n var angle = Math.atan2(y2 - y1, x2 - x1);\r\n var cos = Math.cos(angle);\r\n var sin = Math.sin(angle);\r\n var waveLengthX = waveLength * cos;\r\n var waveLengthY = waveLength * sin;\r\n if (waveLength <= 1 || waveHeight <= 1) {\r\n d = $path.lineTo(point2);\r\n }\r\n else {\r\n var halfWaveCount = Math.round(2 * distance / waveLength);\r\n var points = [];\r\n var sign_1 = 1;\r\n if (x2 < x1) {\r\n sign_1 *= -1;\r\n }\r\n if (y2 < y1) {\r\n sign_1 *= -1;\r\n }\r\n for (var i = 0; i <= halfWaveCount; i++) {\r\n sign_1 *= -1;\r\n var x = x1 + i * waveLengthX / 2 + sign_1 * waveHeight / 2 * sin;\r\n var y = y1 + i * waveLengthY / 2 - sign_1 * waveHeight / 2 * cos;\r\n points.push({ x: x, y: y });\r\n }\r\n d = new Tension(tension, tension).smooth(points);\r\n }\r\n }\r\n else {\r\n d = \"\";\r\n }\r\n registry.setCache($utils.stringify([\"wavedLine\", point1.x, point2.x, point1.y, point2.y, waveLength, waveHeight]), d);\r\n }\r\n return d;\r\n}\r\nvar Monotone = /** @class */ (function () {\r\n function Monotone(reversed, info) {\r\n this._reversed = reversed;\r\n this._closed = info.closed;\r\n }\r\n // According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\r\n // \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\r\n // with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\r\n Monotone.prototype._curve = function (x0, x1, y0, y1, t0, t1) {\r\n var dx = (x1 - x0) / 3;\r\n if (this._reversed) {\r\n return $path.cubicCurveTo({ x: y1, y: x1 }, { x: y0 + dx * t0, y: x0 + dx }, { x: y1 - dx * t1, y: x1 - dx });\r\n }\r\n else {\r\n return $path.cubicCurveTo({ x: x1, y: y1 }, { x: x0 + dx, y: y0 + dx * t0 }, { x: x1 - dx, y: y1 - dx * t1 });\r\n }\r\n };\r\n Monotone.prototype.smooth = function (points) {\r\n var _this = this;\r\n var x0 = NaN;\r\n var x1 = NaN;\r\n var y0 = NaN;\r\n var y1 = NaN;\r\n var t0 = NaN;\r\n var point = 0;\r\n var output = \"\";\r\n $array.each(points, function (_a) {\r\n var x = _a.x, y = _a.y;\r\n if (_this._reversed) {\r\n var temp = x;\r\n x = y;\r\n y = temp;\r\n }\r\n var t1 = NaN;\r\n if (!(x === x1 && y === y1)) {\r\n switch (point) {\r\n case 0:\r\n point = 1;\r\n if (_this._reversed) {\r\n output += $path.lineTo({ x: y, y: x });\r\n }\r\n else {\r\n output += $path.lineTo({ x: x, y: y });\r\n }\r\n break;\r\n case 1:\r\n point = 2;\r\n break;\r\n case 2:\r\n point = 3;\r\n output += _this._curve(x0, x1, y0, y1, slope2(x0, x1, y0, y1, t1 = slope3(x0, x1, y0, y1, x, y)), t1);\r\n break;\r\n default:\r\n output += _this._curve(x0, x1, y0, y1, t0, t1 = slope3(x0, x1, y0, y1, x, y));\r\n break;\r\n }\r\n x0 = x1;\r\n x1 = x;\r\n y0 = y1;\r\n y1 = y;\r\n t0 = t1;\r\n }\r\n });\r\n switch (point) {\r\n case 2:\r\n if (this._reversed) {\r\n output += $path.lineTo({ x: y1, y: x1 });\r\n }\r\n else {\r\n output += $path.lineTo({ x: x1, y: y1 });\r\n }\r\n break;\r\n case 3:\r\n output += this._curve(x0, x1, y0, y1, t0, slope2(x0, x1, y0, y1, t0));\r\n break;\r\n }\r\n if (this._closed) {\r\n output += $path.closePath();\r\n }\r\n return output;\r\n };\r\n return Monotone;\r\n}());\r\nexport { Monotone };\r\n// TODO move this someplace else\r\nfunction sign(x) {\r\n return x < 0 ? -1 : 1;\r\n}\r\nfunction slope2(x0, x1, y0, y1, t) {\r\n var h = x1 - x0;\r\n return h ? (3 * (y1 - y0) / h - t) / 2 : t;\r\n}\r\nfunction slope3(x0, x1, y0, y1, x2, y2) {\r\n var h0 = x1 - x0;\r\n var h1 = x2 - x1;\r\n var s0 = (y1 - y0) / (h0 || h1 < 0 && -0);\r\n var s1 = (y2 - y1) / (h1 || h0 < 0 && -0);\r\n var p = (s0 * h1 + s1 * h0) / (h0 + h1);\r\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\r\n}\r\nvar MonotoneX = /** @class */ (function (_super) {\r\n __extends(MonotoneX, _super);\r\n function MonotoneX(info) {\r\n return _super.call(this, false, info) || this;\r\n }\r\n return MonotoneX;\r\n}(Monotone));\r\nexport { MonotoneX };\r\nvar MonotoneY = /** @class */ (function (_super) {\r\n __extends(MonotoneY, _super);\r\n function MonotoneY(info) {\r\n return _super.call(this, true, info) || this;\r\n }\r\n return MonotoneY;\r\n}(Monotone));\r\nexport { MonotoneY };\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar Basis = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param info [description]\r\n */\r\n function Basis(info) {\r\n this._closed = info.closed;\r\n }\r\n /**\r\n * [smooth description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param points [description]\r\n * @return [description]\r\n */\r\n Basis.prototype.smooth = function (points) {\r\n var _this = this;\r\n var x0 = NaN;\r\n var x1 = NaN;\r\n var x2 = NaN;\r\n var x3 = NaN;\r\n var x4 = NaN;\r\n var y0 = NaN;\r\n var y1 = NaN;\r\n var y2 = NaN;\r\n var y3 = NaN;\r\n var y4 = NaN;\r\n var point = 0;\r\n var output = \"\";\r\n var pushCurve = function (x, y) {\r\n output += $path.cubicCurveTo({\r\n x: (x0 + 4 * x1 + x) / 6,\r\n y: (y0 + 4 * y1 + y) / 6\r\n }, {\r\n x: (2 * x0 + x1) / 3,\r\n y: (2 * y0 + y1) / 3\r\n }, {\r\n x: (x0 + 2 * x1) / 3,\r\n y: (y0 + 2 * y1) / 3\r\n });\r\n };\r\n var pushPoint = function (_a) {\r\n var x = _a.x, y = _a.y;\r\n switch (point) {\r\n case 0:\r\n point = 1;\r\n if (_this._closed) {\r\n x2 = x;\r\n y2 = y;\r\n }\r\n else {\r\n output += $path.lineTo({ x: x, y: y });\r\n }\r\n break;\r\n case 1:\r\n point = 2;\r\n if (_this._closed) {\r\n x3 = x;\r\n y3 = y;\r\n }\r\n break;\r\n case 2:\r\n point = 3;\r\n if (_this._closed) {\r\n x4 = x;\r\n y4 = y;\r\n output += $path.moveTo({ x: (x0 + 4 * x1 + x) / 6, y: (y0 + 4 * y1 + y) / 6 });\r\n break;\r\n }\r\n else {\r\n output += $path.lineTo({ x: (5 * x0 + x1) / 6, y: (5 * y0 + y1) / 6 });\r\n // fall-through\r\n }\r\n default:\r\n pushCurve(x, y);\r\n break;\r\n }\r\n x0 = x1;\r\n x1 = x;\r\n y0 = y1;\r\n y1 = y;\r\n };\r\n $array.each(points, pushPoint);\r\n if (this._closed) {\r\n switch (point) {\r\n case 1:\r\n output += $path.moveTo({ x: x2, y: y2 });\r\n output += $path.closePath();\r\n break;\r\n case 2:\r\n output += $path.moveTo({ x: (x2 + 2 * x3) / 3, y: (y2 + 2 * y3) / 3 });\r\n output += $path.lineTo({ x: (x3 + 2 * x2) / 3, y: (y3 + 2 * y2) / 3 });\r\n output += $path.closePath();\r\n break;\r\n case 3:\r\n pushPoint({ x: x2, y: y2 });\r\n pushPoint({ x: x3, y: y3 });\r\n pushPoint({ x: x4, y: y4 });\r\n break;\r\n }\r\n }\r\n else {\r\n switch (point) {\r\n case 3:\r\n pushCurve(x1, y1);\r\n // fall-through\r\n case 2:\r\n output += $path.lineTo({ x: x1, y: y1 });\r\n break;\r\n }\r\n output += $path.closePath();\r\n }\r\n return output;\r\n };\r\n return Basis;\r\n}());\r\nexport { Basis };\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { registry } from \"../../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for color modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar ColorModifier = /** @class */ (function (_super) {\r\n __extends(ColorModifier, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColorModifier() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColorModifier\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Modifies color value.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Original color\r\n * @return Modified\r\n */\r\n ColorModifier.prototype.modify = function (value) {\r\n return value;\r\n };\r\n return ColorModifier;\r\n}(BaseObject));\r\nexport { ColorModifier };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColorModifier\"] = ColorModifier;\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColorModifier } from \"./ColorModifier\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $type from \"../../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class can be used to modify linear gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.GradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.GradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"GradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\r\nvar GradientModifier = /** @class */ (function (_super) {\r\n __extends(GradientModifier, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function GradientModifier() {\r\n var _this = _super.call(this) || this;\r\n _this.lightnesses = [];\r\n _this.brightnesses = [];\r\n _this.opacities = [];\r\n _this.offsets = [];\r\n _this.className = \"GradientModifier\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(GradientModifier.prototype, \"lightnesses\", {\r\n /**\r\n * @return Lightness values\r\n */\r\n get: function () {\r\n return this._lightnesses;\r\n },\r\n /**\r\n * An array of lightness values for each step.\r\n *\r\n * @param value Lightness values\r\n */\r\n set: function (value) {\r\n this._lightnesses = value;\r\n this._brightnesses = [];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GradientModifier.prototype, \"brightnesses\", {\r\n /**\r\n * @return Brightness values\r\n */\r\n get: function () {\r\n return this._brightnesses;\r\n },\r\n /**\r\n * An array of brightness values for each step.\r\n *\r\n * @param value Brightness values\r\n */\r\n set: function (value) {\r\n this._brightnesses = value;\r\n this._lightnesses = [];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GradientModifier.prototype, \"opacities\", {\r\n /**\r\n * @return Opacity values\r\n */\r\n get: function () {\r\n return this._opacities;\r\n },\r\n /**\r\n * An array of opacity values for each step.\r\n *\r\n * @param value Opacity values\r\n */\r\n set: function (value) {\r\n this._opacities = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GradientModifier.prototype, \"offsets\", {\r\n /**\r\n * @return Offsets\r\n */\r\n get: function () {\r\n return this._offsets;\r\n },\r\n /**\r\n * An array of relative position (0-1) for each step.\r\n *\r\n * If not set, all steps will be of equal relative length.\r\n *\r\n * @param value Offsets\r\n */\r\n set: function (value) {\r\n this._offsets = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Modifies the color based on step setting.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Source color\r\n * @return A gradient that matches set modification rules\r\n */\r\n GradientModifier.prototype.modify = function (value) {\r\n // Clear current gradient\r\n this.gradient.clear();\r\n // Get step count\r\n var count = 0;\r\n if (this.opacities) {\r\n count = $math.max(count, this.opacities.length);\r\n }\r\n if (this.lightnesses) {\r\n count = $math.max(count, this.lightnesses.length);\r\n }\r\n if (this.brightnesses) {\r\n count = $math.max(count, this.brightnesses.length);\r\n }\r\n // Init step values\r\n var opacity = 1, lightness, brightness;\r\n // Apply steps\r\n for (var i = 0; i < count; i++) {\r\n // Take base color\r\n var color = value;\r\n // Check if there are any parameters for this step\r\n if (this.opacities && $type.isNumber(this.opacities[i])) {\r\n opacity = this.opacities[i];\r\n }\r\n if (this.lightnesses && $type.isNumber(this.lightnesses[i])) {\r\n lightness = this.lightnesses[i];\r\n brightness = undefined;\r\n }\r\n if (this.brightnesses && $type.isNumber(this.brightnesses[i])) {\r\n brightness = this.brightnesses[i];\r\n lightness = undefined;\r\n }\r\n // Check if we need to brighten/lighten color\r\n if ($type.isNumber(brightness)) {\r\n color = value.brighten(this.brightnesses[i]);\r\n }\r\n else if ($type.isNumber(lightness)) {\r\n color = value.lighten(this.lightnesses[i]);\r\n }\r\n // Get offset (it's OK if it's undefined)\r\n var offset = this.offsets[i];\r\n // Apply step\r\n this.gradient.addColor(color, opacity, offset);\r\n }\r\n return this.gradient;\r\n };\r\n GradientModifier.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this._offsets = source.offsets;\r\n this._brightnesses = source.brightnesses;\r\n this._lightnesses = source.lightnesses;\r\n this._opacities = source.opacities;\r\n };\r\n return GradientModifier;\r\n}(ColorModifier));\r\nexport { GradientModifier };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"GradientModifier\"] = GradientModifier;\r\n","/**\r\n * Contains code and logic for generating linear gradients.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { List } from \"../../utils/List\";\r\nimport { getGhostPaper } from \"../Paper\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $type from \"../../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Linear gradient class.\r\n */\r\nvar LinearGradient = /** @class */ (function (_super) {\r\n __extends(LinearGradient, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function LinearGradient() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * List of colors switch definitions in a gradient.\r\n */\r\n _this._stops = new List();\r\n /**\r\n * Gradient direction.\r\n */\r\n _this._rotation = 0;\r\n _this.className = \"LinearGradient\";\r\n _this._stops.events.on(\"setIndex\", _this.validate, _this);\r\n _this._stops.events.on(\"inserted\", _this.validate, _this);\r\n // Create element\r\n _this.element = _this.paper.addGroup(\"linearGradient\");\r\n _this.id = \"gradient-\" + registry.getUniqueId();\r\n _this.element.attr({ \"id\": _this.id });\r\n _this._disposers.push(_this.element);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws gradient.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n LinearGradient.prototype.validate = function () {\r\n var _this = this;\r\n var rotation = (this._rotation + 90) * $math.RADIANS;\r\n var x1 = Math.round(50 + Math.sin(rotation + Math.PI) * 50) + '%';\r\n var y1 = Math.round(50 + Math.cos(rotation) * 50) + '%';\r\n var x2 = Math.round(50 + Math.sin(rotation) * 50) + '%';\r\n var y2 = Math.round(50 + Math.cos(rotation + Math.PI) * 50) + '%';\r\n var gradientElement = this.element;\r\n gradientElement.removeChildNodes();\r\n gradientElement.attr({ \"x1\": x1, \"x2\": x2, \"y1\": y1, \"y2\": y2 });\r\n $iter.each($iter.indexed(this._stops.iterator()), function (a) {\r\n var i = a[0];\r\n var stop = a[1];\r\n var offset = stop.offset;\r\n if (!$type.isNumber(offset)) {\r\n offset = i / (_this._stops.length - 1);\r\n }\r\n var gradientStop = _this.paper.add(\"stop\");\r\n if ($type.hasValue(stop.color)) {\r\n gradientStop.attr({ \"stop-color\": stop.color.toString() });\r\n }\r\n if ($type.isNumber(stop.opacity)) {\r\n gradientStop.attr({ \"stop-opacity\": stop.opacity });\r\n }\r\n if ($type.isNumber(offset)) {\r\n gradientStop.attr({ \"offset\": offset });\r\n }\r\n gradientElement.add(gradientStop);\r\n });\r\n };\r\n /**\r\n * Clears the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n LinearGradient.prototype.clear = function () {\r\n this._stops.clear();\r\n };\r\n /**\r\n * Adds a color step to the gradient.\r\n *\r\n * @param color Color (hex code or named color)\r\n * @param opacity Opacity (value from 0 to 1; 0 completely transaprent, 1 fully opaque)\r\n * @param offset Position of color in the gradient (value 0 to 1; 0 meaning start of the gradient and 1 end)\r\n */\r\n LinearGradient.prototype.addColor = function (color, opacity, offset) {\r\n this._stops.push({ color: color, opacity: opacity, offset: offset });\r\n };\r\n Object.defineProperty(LinearGradient.prototype, \"stops\", {\r\n /**\r\n * A list of color stops in the gradient.\r\n *\r\n * @return Stops\r\n */\r\n get: function () {\r\n return this._stops;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LinearGradient.prototype, \"paper\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\r\n get: function () {\r\n if (this._paper) {\r\n return this._paper;\r\n }\r\n return getGhostPaper();\r\n },\r\n /**\r\n * [[Paper]] instace to use for the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\r\n set: function (paper) {\r\n if (this._paper != paper) {\r\n this._paper = paper;\r\n this.validate();\r\n paper.appendDef(this.element);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LinearGradient.prototype, \"rotation\", {\r\n /**\r\n * @return Rotation\r\n */\r\n get: function () {\r\n return this._rotation;\r\n },\r\n /**\r\n * Rotation (direction) of the gradient in degrees.\r\n *\r\n * @param value Rotation\r\n */\r\n set: function (value) {\r\n //this.element.attr({ \"gradientTransform\": \"rotate(\" + value + \" 10 100)\" });\r\n this._rotation = value;\r\n this.validate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LinearGradient.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.stops.copyFrom(source.stops);\r\n this._rotation = source.rotation;\r\n };\r\n Object.defineProperty(LinearGradient.prototype, \"gradientUnits\", {\r\n /**\r\n * Which units are used when drawing gradient filter.\r\n *\r\n * Use `\"userSpaceOnUse\"` when applying gradient on a perfectly straight line.\r\n *\r\n * @since 4.9.17\r\n * @default objectBoundingBox\r\n * @param value Filter units\r\n */\r\n set: function (value) {\r\n this.element.attr({ gradientUnits: value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LinearGradient;\r\n}(BaseObject));\r\nexport { LinearGradient };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LinearGradient\"] = LinearGradient;\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { LinearGradient } from \"./LinearGradient\";\r\nimport { GradientModifier } from \"./GradientModifier\";\r\nimport { registry } from \"../../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class can be used to modify linear gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"LinearGradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\r\nvar LinearGradientModifier = /** @class */ (function (_super) {\r\n __extends(LinearGradientModifier, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function LinearGradientModifier() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"LinearGradientModifier\";\r\n _this.gradient = new LinearGradient();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n LinearGradientModifier.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.gradient = source.gradient.clone();\r\n };\r\n return LinearGradientModifier;\r\n}(GradientModifier));\r\nexport { LinearGradientModifier };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LinearGradientModifier\"] = LinearGradientModifier;\r\n","/**\r\n * Pattern module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { getGhostPaper } from \"../Paper\";\r\nimport { List, ListDisposer } from \"../../utils/List\";\r\nimport { Animation, AnimationDisposer } from \"../../utils/Animation\";\r\nimport { registry } from \"../../Registry\";\r\nimport { InterfaceColorSet } from \"../../utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\nimport * as $object from \"../../utils/Object\";\r\nimport * as $type from \"../../utils/Type\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base class to define patterns.\r\n */\r\nvar Pattern = /** @class */ (function (_super) {\r\n __extends(Pattern, _super);\r\n //public propertyValues = new Dictionary<PatternProperties, any>();\r\n /**\r\n * Constructor\r\n */\r\n function Pattern() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * List of elements the pattern consists of.\r\n */\r\n _this._elements = new List();\r\n /**\r\n * A storage for Filter property/value pairs.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link PatternProperties}\r\n */\r\n _this.properties = {};\r\n _this.className = \"Pattern\";\r\n // Set defaults\r\n _this.width = 10;\r\n _this.height = 10;\r\n _this.x = 0;\r\n _this.y = 0;\r\n _this.patternUnits = \"userSpaceOnUse\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.backgroundFill = interfaceColors.getFor(\"background\");\r\n _this.backgroundOpacity = 0;\r\n _this.fillOpacity = 1;\r\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n _this.stroke = interfaceColors.getFor(\"alternativeBackground\");\r\n _this.strokeOpacity = 1;\r\n _this.strokeWidth = 1;\r\n _this.shapeRendering = \"crispEdges\";\r\n _this.rotation = 0;\r\n // Create main group to store pattern elements inelements\r\n _this.element = _this.paper.addGroup(\"pattern\");\r\n _this.id = \"pattern-\" + registry.getUniqueId();\r\n _this.element.attr({ \"id\": _this.id });\r\n _this._disposers.push(_this.element);\r\n // Make elements disposable\r\n _this._disposers.push(new ListDisposer(_this._elements));\r\n // Request again to trigger getter/setter code\r\n _this.patternUnits = _this.patternUnits;\r\n _this.width = _this.width;\r\n _this.height = _this.height;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the pattern.\r\n */\r\n Pattern.prototype.draw = function () {\r\n var _this = this;\r\n var patternElement = this.element;\r\n if (patternElement) {\r\n patternElement.removeChildNodes();\r\n var background = this.paper.add(\"rect\");\r\n background.attr({ \"width\": this.width, \"height\": this.height, \"shape-rendering\": \"crispEdges\", \"fill\": this.backgroundFill.hex, \"fill-opacity\": this.backgroundOpacity, \"stroke\": this.backgroundFill.hex, \"stroke-opacity\": 0 });\r\n patternElement.add(background);\r\n patternElement.attr({ \"x\": this.x, \"y\": this.y, \"width\": this.width, \"height\": this.height, \"stroke\": this.stroke.hex, \"fill\": this.fill.hex, \"fill-opacity\": this.fillOpacity, \"stroke-opacity\": this.strokeOpacity, \"stroke-width\": this.strokeWidth, \"shape-rendering\": this.shapeRendering, \"patternUnits\": this.patternUnits, \"stroke-dasharray\": this.strokeDasharray });\r\n $iter.each(this._elements.iterator(), function (element) {\r\n element.rotation = _this.rotation;\r\n element.rotationX = _this.properties[\"rotationX\"];\r\n element.rotationY = _this.properties[\"rotationY\"];\r\n _this.element.add(element);\r\n });\r\n }\r\n };\r\n /**\r\n * Animate pattern properties.\r\n *\r\n * @see {@link Animation}\r\n * @param animationOptions Animation options\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation instance\r\n */\r\n Pattern.prototype.animate = function (animationOptions, duration, easing) {\r\n return new Animation(this, animationOptions, duration, easing).start();\r\n };\r\n /**\r\n * Adds an element to the pattern.\r\n *\r\n * @param element Element\r\n */\r\n Pattern.prototype.addElement = function (element) {\r\n this._elements.push(element);\r\n this._disposers.push(element);\r\n };\r\n /**\r\n * Remove an element from the pattern.\r\n *\r\n * @param element Element\r\n */\r\n Pattern.prototype.removeElement = function (element) {\r\n this._elements.removeValue(element);\r\n this.removeDispose(element);\r\n };\r\n Object.defineProperty(Pattern.prototype, \"elements\", {\r\n /**\r\n * Returns the list of SVG elements comprising the pattern.\r\n *\r\n * @return Pattern elements\r\n */\r\n get: function () {\r\n return this._elements;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"fillOpacity\", {\r\n /**\r\n * @return Opacity (0-1)\r\n */\r\n get: function () {\r\n return this.properties[\"fillOpacity\"];\r\n },\r\n /**\r\n * Pattern fill opacity. (0-1)\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties[\"fillOpacity\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"fill\", {\r\n /**\r\n * @return Fill color\r\n */\r\n get: function () {\r\n return this.properties[\"fill\"];\r\n },\r\n /**\r\n * Fill color of the pattern.\r\n *\r\n * @param value Fill color\r\n */\r\n set: function (value) {\r\n this.properties[\"fill\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"backgroundFill\", {\r\n /**\r\n * @return Background color\r\n */\r\n get: function () {\r\n return this.properties[\"backgroundFill\"];\r\n },\r\n /**\r\n * Pattern background fill color.\r\n *\r\n * @param value Background color\r\n */\r\n set: function (value) {\r\n this.properties[\"backgroundFill\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"backgroundOpacity\", {\r\n /**\r\n * @return Background opacity (0-1)\r\n */\r\n get: function () {\r\n return this.properties[\"backgroundOpacity\"];\r\n },\r\n /**\r\n * Pattern backgorund opacity. (0-1)\r\n *\r\n * @param value Background opacity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties[\"backgroundOpacity\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"stroke\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.properties[\"stroke\"];\r\n },\r\n /**\r\n * Pattern stroke (border) color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.properties[\"stroke\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"strokeOpacity\", {\r\n /**\r\n * @return Opacity (0-1)\r\n */\r\n get: function () {\r\n return this.properties[\"strokeOpacity\"];\r\n },\r\n /**\r\n * Pattern stroke opacity. (0-1)\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties[\"strokeOpacity\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"strokeWidth\", {\r\n /**\r\n * @return Stroke thickness (px)\r\n */\r\n get: function () {\r\n return this.properties[\"strokeWidth\"];\r\n },\r\n /**\r\n * Pattern stroke thickness in pixels.\r\n *\r\n * @param value Stroke thickness (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"strokeWidth\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"shapeRendering\", {\r\n get: function () {\r\n return this.properties[\"shapeRendering\"];\r\n },\r\n /**\r\n * Shape rendering\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.properties[\"shapeRendering\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"rotation\", {\r\n /**\r\n * @return Rotation\r\n */\r\n get: function () {\r\n return this.properties[\"rotation\"];\r\n },\r\n /**\r\n * Pattern rotation in degrees.\r\n *\r\n * @param value Rotation\r\n */\r\n set: function (value) {\r\n this.properties[\"rotation\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"patternUnits\", {\r\n /**\r\n * @return Units\r\n */\r\n get: function () {\r\n return this.properties[\"patternUnits\"];\r\n },\r\n /**\r\n * Pattern measuring units.\r\n *\r\n * Available options: \"userSpaceOnUse\" | \"objectBoundingBox\".\r\n *\r\n * @param value Units\r\n */\r\n set: function (value) {\r\n this.properties[\"patternUnits\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"width\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.properties[\"width\"];\r\n },\r\n /**\r\n * Pattern width in pixels.\r\n *\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"width\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"height\", {\r\n /**\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n return this.properties[\"height\"];\r\n },\r\n /**\r\n * Pattern height in pixels.\r\n *\r\n * @param value Height (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"height\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"x\", {\r\n /**\r\n * @return X (px)\r\n */\r\n get: function () {\r\n return this.properties[\"x\"];\r\n },\r\n /**\r\n * X position. (pixels)\r\n *\r\n * @param value X (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"x\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"y\", {\r\n /**\r\n * @return Y (px)\r\n */\r\n get: function () {\r\n return this.properties[\"y\"];\r\n },\r\n /**\r\n * Y position (px).\r\n *\r\n * @param value Y (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"y\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"paper\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\r\n get: function () {\r\n if (this._paper) {\r\n return this._paper;\r\n }\r\n return getGhostPaper();\r\n },\r\n /**\r\n * [[Paper]] instance to draw pattern in.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\r\n set: function (paper) {\r\n if (this._paper != paper) {\r\n this._paper = paper;\r\n this.draw();\r\n paper.appendDef(this.element);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties from another Pattern instance.\r\n *\r\n * @param source Source pattern\r\n */\r\n Pattern.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n _super.prototype.copyFrom.call(this, source);\r\n $object.each(source.properties, function (key, value) {\r\n _this[key] = value;\r\n });\r\n };\r\n Object.defineProperty(Pattern.prototype, \"animations\", {\r\n /**\r\n * A list of animations currently running on the patter.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Animation list\r\n */\r\n get: function () {\r\n if (!this._animations) {\r\n this._animations = [];\r\n this._disposers.push(new AnimationDisposer(this._animations));\r\n }\r\n return this._animations;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"strokeDasharray\", {\r\n /**\r\n * @return `stroke-dasharray`\r\n */\r\n get: function () {\r\n return this.properties[\"strokeDashArray\"];\r\n },\r\n /**\r\n * A `stroke-dasharray` for the stroke (outline).\r\n *\r\n * \"Dasharray\" allows setting rules to make lines dashed, dotted, etc.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray} for more info on `stroke-dasharray`\r\n * @param value `stroke-dasharray`\r\n */\r\n set: function (value) {\r\n this.properties[\"strokeDashArray\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Pattern.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up series\r\n if ($type.hasValue(config.elements) && $type.isArray(config.elements)) {\r\n for (var i = 0, len = config.elements.length; i < len; i++) {\r\n var element = config.elements[i];\r\n if ($type.hasValue(element[\"type\"])) {\r\n var sprite = this.createEntryInstance(element);\r\n if (sprite instanceof BaseObject) {\r\n sprite.config = element;\r\n }\r\n this.addElement($type.hasValue(element[\"typeProperty\"])\r\n ? sprite[element[\"typeProperty\"]]\r\n : sprite.element);\r\n }\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return Pattern;\r\n}(BaseObject));\r\nexport { Pattern };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Pattern\"] = Pattern;\r\n","/**\r\n * Contains code and logic for generating radial gradients.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { List } from \"../../utils/List\";\r\nimport { getGhostPaper } from \"../Paper\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\nimport * as $type from \"../../utils/Type\";\r\nimport { Percent } from \"../../utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Radial gradient class.\r\n */\r\nvar RadialGradient = /** @class */ (function (_super) {\r\n __extends(RadialGradient, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadialGradient() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * List of colors switch definitions in a gradient.\r\n */\r\n _this._stops = new List();\r\n _this.element = _this.paper.addGroup(\"radialGradient\");\r\n _this.id = \"gradient-\" + registry.getUniqueId();\r\n _this.element.attr({ \"id\": _this.id });\r\n _this._disposers.push(_this.element);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws gradient.\r\n */\r\n RadialGradient.prototype.draw = function () {\r\n var _this = this;\r\n var gradientElement = this.element;\r\n if ($type.isNumber(this.cx)) {\r\n var value = this.cx;\r\n if (value instanceof Percent) {\r\n value = value.percent + \"%\";\r\n }\r\n gradientElement.attr({ \"cx\": value });\r\n }\r\n if ($type.isNumber(this.cy)) {\r\n var value = this.cy;\r\n if (value instanceof Percent) {\r\n value = value.percent + \"%\";\r\n }\r\n gradientElement.attr({ \"cy\": value });\r\n }\r\n if (this.fx) {\r\n var value = this.fx;\r\n if (value instanceof Percent) {\r\n value = value.percent + \"%\";\r\n }\r\n gradientElement.attr({ \"fx\": value });\r\n }\r\n if (this.fy) {\r\n var value = this.fy;\r\n if (value instanceof Percent) {\r\n value = value.percent + \"%\";\r\n }\r\n gradientElement.attr({ \"fy\": value });\r\n }\r\n gradientElement.removeChildNodes();\r\n $iter.each($iter.indexed(this._stops.iterator()), function (a) {\r\n var i = a[0];\r\n var stop = a[1];\r\n var offset = stop.offset;\r\n if (!$type.isNumber(offset)) {\r\n offset = i / (_this._stops.length - 1);\r\n }\r\n var gradientStop = _this.paper.add(\"stop\");\r\n if ($type.hasValue(stop.color)) {\r\n gradientStop.attr({ \"stop-color\": stop.color.toString() });\r\n }\r\n if ($type.isNumber(stop.opacity)) {\r\n gradientStop.attr({ \"stop-opacity\": stop.opacity });\r\n }\r\n if ($type.isNumber(offset)) {\r\n gradientStop.attr({ \"offset\": offset });\r\n }\r\n gradientElement.add(gradientStop);\r\n });\r\n };\r\n /**\r\n * Adds a color step to the gradient.\r\n *\r\n * @param color Color (hex code or named color)\r\n * @param opacity Opacity (value from 0 to 1; 0 completely transaprent, 1 fully opaque)\r\n * @param offset Position of color in the gradient (value 0 to 1; 0 meaning start of the gradient and 1 end)\r\n */\r\n RadialGradient.prototype.addColor = function (color, opacity, offset) {\r\n this._stops.push({ color: color, opacity: opacity, offset: offset });\r\n this.draw();\r\n };\r\n Object.defineProperty(RadialGradient.prototype, \"paper\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\r\n get: function () {\r\n if (this._paper) {\r\n return this._paper;\r\n }\r\n return getGhostPaper();\r\n },\r\n /**\r\n * A [[Paper]] instace to use for the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\r\n set: function (paper) {\r\n if (this._paper != paper) {\r\n this._paper = paper;\r\n this.draw();\r\n paper.appendDef(this.element);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadialGradient.prototype, \"cx\", {\r\n get: function () {\r\n return this._cx;\r\n },\r\n /**\r\n * Center x coordinate of the gradient, can be set as number or Percent\r\n *\r\n * @param point Center point\r\n */\r\n set: function (value) {\r\n this._cx = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadialGradient.prototype, \"cy\", {\r\n get: function () {\r\n return this._cy;\r\n },\r\n /**\r\n * Center y coordinate of the gradient, can be set as number or Percent\r\n *\r\n * @param point Center point\r\n */\r\n set: function (value) {\r\n this._cy = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadialGradient.prototype, \"fx\", {\r\n get: function () {\r\n return this._fx;\r\n },\r\n /**\r\n * y coordinate of the focal point of a gradient, can be set in pixels or as Percent\r\n *\r\n * @param point Center point\r\n */\r\n set: function (value) {\r\n this._fx = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadialGradient.prototype, \"fy\", {\r\n get: function () {\r\n return this._fy;\r\n },\r\n /**\r\n * y coordinate of the focal point of a gradient, can be set in pixels or as Percent\r\n *\r\n * @param point Center point\r\n */\r\n set: function (value) {\r\n this._fy = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n RadialGradient.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.stops.copyFrom(source.stops);\r\n this.cx = source.cx;\r\n this.cy = source.cy;\r\n this.fx = source.fx;\r\n this.fy = source.fy;\r\n };\r\n Object.defineProperty(RadialGradient.prototype, \"stops\", {\r\n /**\r\n * A list of color stops in the gradient.\r\n *\r\n * @return Stops\r\n */\r\n get: function () {\r\n return this._stops;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clears the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadialGradient.prototype.clear = function () {\r\n this._stops.clear();\r\n };\r\n return RadialGradient;\r\n}(BaseObject));\r\nexport { RadialGradient };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadialGradient\"] = RadialGradient;\r\n","/**\r\n * Module for \"Desaturate\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { registry } from \"../../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creats a \"Desaturate\" filter\r\n */\r\nvar DesaturateFilter = /** @class */ (function (_super) {\r\n __extends(DesaturateFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DesaturateFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"DesaturateFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\r\n _this.feColorMatrix.attr({ \"type\": \"saturate\" });\r\n _this.filterPrimitives.push(_this.feColorMatrix);\r\n // Set default properties\r\n _this.width = 120;\r\n _this.height = 120;\r\n _this.saturation = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(DesaturateFilter.prototype, \"saturation\", {\r\n /**\r\n * @return Saturation (0-1)\r\n */\r\n get: function () {\r\n return this.properties[\"saturation\"];\r\n },\r\n /**\r\n * Saturation.\r\n *\r\n * 0 - completely desaturated.\r\n * 1 - fully saturated (gray).\r\n *\r\n * @param value Saturation (0-1)\r\n */\r\n set: function (value) {\r\n this.properties[\"saturation\"] = value;\r\n this.feColorMatrix.attr({ \"values\": value.toString() });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DesaturateFilter;\r\n}(Filter));\r\nexport { DesaturateFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DesaturateFilter\"] = DesaturateFilter;\r\n","/**\r\n * Module for \"Drop Shadow\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { color } from \"../../utils/Color\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creats a \"Drop Shadow\" filter.\r\n */\r\nvar DropShadowFilter = /** @class */ (function (_super) {\r\n __extends(DropShadowFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DropShadowFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"DropShadowFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.color = color(\"#000\");\r\n _this.feGaussianBlur = _this.paper.add(\"feGaussianBlur\");\r\n _this.feGaussianBlur.attr({ \"result\": \"blurOut\", \"in\": \"SourceGraphic\" });\r\n _this.filterPrimitives.push(_this.feGaussianBlur);\r\n _this.feOffset = _this.paper.add(\"feOffset\");\r\n _this.feOffset.attr({ \"result\": \"offsetBlur\" });\r\n _this.filterPrimitives.push(_this.feOffset);\r\n _this.feFlood = _this.paper.add(\"feFlood\");\r\n _this.feFlood.attr({ \"flood-color\": _this.color });\r\n _this.filterPrimitives.push(_this.feFlood);\r\n _this.feComposite = _this.paper.add(\"feComposite\");\r\n _this.feComposite.attr({ \"in2\": \"offsetBlur\", operator: \"in\" });\r\n _this.filterPrimitives.push(_this.feComposite);\r\n _this.feMerge = _this.paper.addGroup(\"feMerge\");\r\n _this.feMerge.add(_this.paper.add(\"feMergeNode\"));\r\n _this.feMerge.add(_this.paper.add(\"feMergeNode\").attr({ \"in\": \"SourceGraphic\" }));\r\n _this.filterPrimitives.push(_this.feMerge);\r\n // Set default properties\r\n _this.width = 200;\r\n _this.height = 200;\r\n _this.blur = 1.5;\r\n _this.dx = 3;\r\n _this.dy = 3;\r\n _this.opacity = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(DropShadowFilter.prototype, \"color\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.properties.color;\r\n },\r\n /**\r\n * Shadow color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.properties.color = value;\r\n if (this.feFlood) {\r\n this.feFlood.attr({ \"flood-color\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DropShadowFilter.prototype, \"opacity\", {\r\n /**\r\n * @return Opacity (0-1)\r\n */\r\n get: function () {\r\n return this.properties.opacity;\r\n },\r\n /**\r\n * Opacity of the shadow. (0-1)\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties.opacity = value;\r\n this.feFlood.attr({ \"flood-opacity\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DropShadowFilter.prototype, \"dx\", {\r\n /**\r\n * @return Horizontal offset (px)\r\n */\r\n get: function () {\r\n return this.properties.dx;\r\n },\r\n /**\r\n * Horizontal offset in pixels.\r\n *\r\n * @param value Horizontal offset (px)\r\n */\r\n set: function (value) {\r\n this.properties.dx = value;\r\n this.feOffset.attr({ \"dx\": value / this.scale });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DropShadowFilter.prototype, \"dy\", {\r\n /**\r\n * @return Vertical offset (px)\r\n */\r\n get: function () {\r\n return this.properties.dy;\r\n },\r\n /**\r\n * Vertical offset in pixels.\r\n *\r\n * @param value Vertical offset (px)\r\n */\r\n set: function (value) {\r\n this.properties.dy = value;\r\n this.feOffset.attr({ \"dy\": value / this.scale });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DropShadowFilter.prototype, \"blur\", {\r\n /**\r\n * @return Blur\r\n */\r\n get: function () {\r\n return this.properties.blur;\r\n },\r\n /**\r\n * Blur.\r\n *\r\n * @param value Blur\r\n */\r\n set: function (value) {\r\n this.properties.blur = value;\r\n this.feGaussianBlur.attr({ \"stdDeviation\": value / this.scale });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [updateScale description]\r\n *\r\n * @todo Description\r\n */\r\n DropShadowFilter.prototype.updateScale = function () {\r\n this.dx = this.dx;\r\n this.dy = this.dy;\r\n this.blur = this.blur;\r\n };\r\n return DropShadowFilter;\r\n}(Filter));\r\nexport { DropShadowFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DropShadowFilter\"] = DropShadowFilter;\r\n","/**\r\n * This module contains a base class for an SVG filter.\r\n *\r\n * Filters can be used to decorate, change and transform just about any DOM\r\n * element.\r\n *\r\n * A Filter works by applying one or more effects (primitives) to SVG element.\r\n *\r\n * For more information on how SVG filters work, refer to\r\n * [this MDN tutorial](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_Filters_Tutorial).\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { getGhostPaper } from \"../Paper\";\r\nimport { Animation, AnimationDisposer } from \"../../utils/Animation\";\r\nimport { List } from \"../../utils/List\";\r\nimport * as $object from \"../../utils/Object\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base filter class.\r\n *\r\n * This class while can be instantiated will not do anything. It is just a base\r\n * functionality for any other \"real\" filters to extend.\r\n *\r\n * Filters can be used to decorate, change and transform just about any DOM\r\n * element.\r\n *\r\n * A Filter works by applying one or more effects (primitives) to SVG element.\r\n *\r\n * For more information on how SVG filters work, refer to\r\n * [this MDN tutorial](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_Filters_Tutorial).\r\n *\r\n * @todo Example\r\n */\r\nvar Filter = /** @class */ (function (_super) {\r\n __extends(Filter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Filter() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A storage for Filter property/value pairs.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link FilterProperties}\r\n */\r\n _this.properties = {};\r\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n */\r\n _this.isTemplate = false;\r\n /**\r\n * [_scale description]\r\n *\r\n * @todo Description\r\n */\r\n _this._scale = 1;\r\n /**\r\n * [_nonScaling description]\r\n *\r\n * @todo Description\r\n */\r\n _this._nonScaling = true;\r\n _this.className = \"Filter\";\r\n // Create a list to hold primitives (effect elements)\r\n _this.filterPrimitives = new List();\r\n _this.properties.filterUnits = \"objectBoundingBox\";\r\n // Automatically add added primitives to `_disposers` so they are discarded\r\n // when Filter object is destroyed (disposed)\r\n _this.filterPrimitives.events.on(\"inserted\", function (ev) {\r\n _this._disposers.push(ev.newValue);\r\n });\r\n // Set default dimensions\r\n _this.width = 120;\r\n _this.height = 120;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Appends actual filter elements to the filter group.\r\n *\r\n * @ignore Exclude from docs\r\n * @param filterElement An SVG `<group>` element to add filter element to\r\n */\r\n Filter.prototype.appendPrimitives = function (filterElement) {\r\n $iter.each(this.filterPrimitives.iterator(), function (filterPrimitive) {\r\n filterElement.add(filterPrimitive);\r\n });\r\n };\r\n /**\r\n * Uses Transitions filter's values from current to target. This is used to\r\n * smoothly appear filter, rather than it pop into effect.\r\n *\r\n * @ignore Exclude from docs\r\n * @param animationOptions Animation options\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Animation instance\r\n */\r\n Filter.prototype.animate = function (animationOptions, duration, easing) {\r\n var animation = new Animation(this, animationOptions, duration, easing).start();\r\n return animation;\r\n };\r\n Object.defineProperty(Filter.prototype, \"width\", {\r\n /**\r\n * @return Width (%)\r\n */\r\n get: function () {\r\n return this.properties[\"width\"];\r\n },\r\n /**\r\n * Width of the filter element in percent.\r\n *\r\n * If the filter is designed to \"bleed out\" of the original target element,\r\n * like for example a shadow, you need this bigger than 100, or the\r\n * non-fitting parts will be clipped.\r\n *\r\n * @default 120\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"width\"] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Filter.prototype, \"height\", {\r\n /**\r\n * @return Height\r\n */\r\n get: function () {\r\n return this.properties[\"height\"];\r\n },\r\n /**\r\n * Height of the filter element in percent.\r\n *\r\n * If the filter is designed to \"bleed out\" of the original target element,\r\n * like for example a shadow, you need this bigger than 100, or the\r\n * non-fitting parts will be clipped.\r\n *\r\n * @default 120\r\n * @param value Height (%)\r\n */\r\n set: function (value) {\r\n this.properties[\"height\"] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties from another [[Filter]] object.\r\n *\r\n * @param filter Source [[Filter]] object\r\n */\r\n Filter.prototype.copyFrom = function (filter) {\r\n var _this = this;\r\n _super.prototype.copyFrom.call(this, filter);\r\n $object.each(filter.properties, function (key, value) {\r\n _this[key] = value;\r\n });\r\n };\r\n Object.defineProperty(Filter.prototype, \"paper\", {\r\n /**\r\n * @return Paper\r\n */\r\n get: function () {\r\n if (this._paper) {\r\n return this._paper;\r\n }\r\n return getGhostPaper();\r\n },\r\n /**\r\n * Sets [[Paper]] instance to create filter's elements in.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\r\n set: function (paper) {\r\n if (this._paper != paper) {\r\n this._paper = paper;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Filter.prototype, \"animations\", {\r\n /**\r\n * All animations currently in play.\r\n *\r\n * @ignore Exclude from docs\r\n * @return List of animations\r\n */\r\n get: function () {\r\n if (!this._animations) {\r\n this._animations = [];\r\n this._disposers.push(new AnimationDisposer(this._animations));\r\n }\r\n return this._animations;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Filter.prototype, \"scale\", {\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n return this._scale;\r\n },\r\n /**\r\n * [[Sprite]] uses this method to inform filter about it's scale.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n set: function (value) {\r\n this._scale = value;\r\n this.updateScale();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates filter properties which depend on scale.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Filter.prototype.updateScale = function () {\r\n // Dummy method for extending classes to override.\r\n };\r\n Object.defineProperty(Filter.prototype, \"filterUnits\", {\r\n /**\r\n * @return Filter units\r\n */\r\n get: function () {\r\n return this.properties.filterUnits;\r\n },\r\n /**\r\n * Which units are used when drawing filter.\r\n *\r\n * Use `\"userSpaceOnUse\"` when applying filters on a perfectly straight line.\r\n *\r\n * @since 4.9.17\r\n * @default objectBoundingBox\r\n * @param value Filter units\r\n */\r\n set: function (value) {\r\n this.properties.filterUnits = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Filter.prototype, \"nonScaling\", {\r\n /**\r\n * @return Non scaling?\r\n */\r\n get: function () {\r\n return this._nonScaling;\r\n },\r\n /**\r\n * If a filter is non scaling, it will look the same even if the sprite is\r\n * scaled, otherwise filter will scale together with a [[Sprite]].\r\n *\r\n * @default false\r\n * @param value Non scaling?\r\n */\r\n set: function (value) {\r\n this._nonScaling = value;\r\n if (!value) {\r\n this._scale = 1;\r\n }\r\n this.updateScale();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Filter.prototype, \"sprite\", {\r\n /**\r\n * A target element this filter is currently attached to.\r\n *\r\n * We need to keep track of it because one filter can be used for just one\r\n * element, so we have to remove it from the old \"parent\" when attaching to\r\n * the new one.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Target element\r\n */\r\n set: function (value) {\r\n this.setSprite(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets filter's target element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Element filter is being attached to\r\n */\r\n Filter.prototype.setSprite = function (value) {\r\n if (this._sprite && this._sprite != value) {\r\n this._sprite.filters.removeValue(this);\r\n }\r\n this._sprite = value;\r\n };\r\n return Filter;\r\n}(BaseObject));\r\nexport { Filter };\r\n","/**\r\n * Module for \"Lighten\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { registry } from \"../../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a \"Lighten\" filter.\r\n */\r\nvar LightenFilter = /** @class */ (function (_super) {\r\n __extends(LightenFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LightenFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"LightenFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\r\n _this.feColorMatrix.attr({ \"type\": \"matrix\" });\r\n _this.filterPrimitives.push(_this.feColorMatrix);\r\n // Set default properties\r\n _this.lightness = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(LightenFilter.prototype, \"lightness\", {\r\n /**\r\n * @return Lightness\r\n */\r\n get: function () {\r\n return this.properties[\"lightness\"];\r\n },\r\n /**\r\n * Lightness of the target colors.\r\n *\r\n * If `lightness` is a positive number, the filter will make all colors\r\n * lighter.\r\n *\r\n * If `lightness` is negative, colors will be darkened.\r\n *\r\n * @param value Lightness\r\n */\r\n set: function (value) {\r\n this.properties[\"lightness\"] = value;\r\n var v = value + 1;\r\n this.feColorMatrix.attr({ \"values\": v + \" 0 0 0 0 0 \" + v + \" 0 0 0 0 0 \" + v + \" 0 0 0 0 0 1 0\" });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LightenFilter;\r\n}(Filter));\r\nexport { LightenFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LightenFilter\"] = LightenFilter;\r\n","/**\r\n * An Adapter can be used to apply chained synchronous transformations to any\r\n * value at runtime.\r\n *\r\n * Each type class using Adapters must have `adapters` property and adapter\r\n * interface defined.\r\n *\r\n * Adapters can be used to allow external code to apply transformations to any\r\n * value at any time.\r\n *\r\n * For example we have a Weather class which has a method `now()` which returns\r\n * current temperature.\r\n *\r\n * ```\r\n * function now() {\r\n * // ... calculate temperature\r\n * let temp = \"Temperature now is \" + degrees + \"F\";\r\n * return temp;\r\n * }\r\n * ```\r\n *\r\n * Now, supposed we want to let other classes to modify the output of the\r\n * `now()`? We just apply an adapter to the `temp` before it is returned:\r\n *\r\n * ```\r\n * temp = this.adapters.apply(\"now\", {\r\n * temp: temp,\r\n * degrees: degrees\r\n * }).temp;\r\n * ```\r\n *\r\n * Some other class might tap onto it by defining an Adapter that calculates\r\n * the temperature in Celsius:\r\n *\r\n * weather.adapters.add(\"now\", (arg) => {\r\n * arg.temp += \"(\" + farenheitToCelsius(arg.degrees) + \"C)\";\r\n * return arh;\r\n * });\r\n *\r\n * Furthermore some time-related class could add time:\r\n *\r\n * weather.adapters.add(\"now\", (arg) => {\r\n * arg.temp += \"; the time now is \" + (new Date().toLocaleString());\r\n * return arh;\r\n * });\r\n *\r\n * So without adapters we would get output like this:\r\n *\r\n * ```\r\n * Temperature now is 90F\r\n * ```\r\n *\r\n * With adapters applied we now have:\r\n *\r\n * ```\r\n * Temperature now is 90F (32C); the time now is 12/11/2012, 7:00:00 PM\r\n * ```\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SortedList } from \"./SortedList\";\r\nimport * as $number from \"./Number\";\r\nimport * as $order from \"./Order\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $object from \"../utils/Object\";\r\n/**\r\n * ============================================================================\r\n * GLOBAL ADAPTER\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A global adapter is an adpater that is attached to a class type rather than\r\n * specific object instance.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar GlobalAdapter = /** @class */ (function () {\r\n function GlobalAdapter() {\r\n /**\r\n * Callback id iterator.\r\n */\r\n this._callbackId = 0;\r\n /**\r\n * A list of if callbacks (adapters).\r\n */\r\n this._callbacks = new SortedList(function (left, right) {\r\n return $order.or($number.order(left.priority, right.priority), $number.order(left.id, right.id));\r\n });\r\n }\r\n /**\r\n * Adds a global callback which is not specific to any particular object.\r\n * Whenever an adapter in any object of the specific class type is invoked\r\n * global adapters will kick in.\r\n *\r\n * @param type Class type\r\n * @param key Adapter key\r\n * @param callback Callback function\r\n * @param priority Priority (higher priority meaning adapter will be applied later)\r\n * @param scope Callback function scaope\r\n */\r\n GlobalAdapter.prototype.addAll = function (type, key, callback, priority, scope) {\r\n if (priority === void 0) { priority = 0; }\r\n this._callbacks.insert({\r\n id: ++this._callbackId,\r\n key: key,\r\n callback: callback,\r\n priority: priority,\r\n scope: scope,\r\n type: type\r\n });\r\n };\r\n /**\r\n * Returns if there are adapters for specific type available.\r\n *\r\n * @param type Adapter type\r\n * @param key Adapter key\r\n * @return {boolean}\r\n */\r\n GlobalAdapter.prototype.isEnabled = function (type, key) {\r\n return $array.any(this._callbacks.values, function (x) { return x.key === key && type instanceof x.type; });\r\n };\r\n /**\r\n * Applies global adapters for the object of the specific type.\r\n *\r\n * @param type Class type\r\n * @param key Adapter key\r\n * @param value Value\r\n */\r\n GlobalAdapter.prototype.applyAll = function (type, key, value) {\r\n // This is needed to improve the performance and reduce garbage collection\r\n var callbacks = this._callbacks.values;\r\n var length = callbacks.length;\r\n if (length == 0) {\r\n return value;\r\n }\r\n // Cycle through all callbacks and find the ones we need to use\r\n for (var i = 0; i < length; ++i) {\r\n var item = callbacks[i];\r\n if (item.key === key && type instanceof item.type) {\r\n value = item.callback.call(item.scope, value, type, key);\r\n }\r\n }\r\n return value;\r\n };\r\n return GlobalAdapter;\r\n}());\r\nexport { GlobalAdapter };\r\n/**\r\n * A global Adapter for plugins that want to add specific\r\n * functionality for any chart, not just specific instance.\r\n *\r\n * If you want to add an adapter which applies to all instances of the same\r\n * object type, like, for instance all slices in PieSeries, you can use\r\n * global adapter.\r\n *\r\n * Global adapter is a system-wide instance, accessible via `globalAdapter`.\r\n *\r\n * ```TypeScript\r\n * am4core.globalAdapter.addAll<am4charts.IPieSeriesAdapters, am4charts.PieSeries, \"fill\">(am4charts.PieSeries, \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * am4core.globalAdapter.addAll(am4charts.PieSeries, \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n *\r\n * @ignore\r\n */\r\nexport var globalAdapter = new GlobalAdapter();\r\n/**\r\n * ============================================================================\r\n * REGULAR ADAPTER\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Adapter allows adding ordered callback functions and associating them with a\r\n * string-based key. An Adapter user can then easily invoke those callbacks to\r\n * apply custom functions on its input, output or intermediate values.\r\n *\r\n * Custom code and plugins can add their own callbacks to modify and enhance\r\n * core functionality.\r\n *\r\n * See the description of `add()` for an example.\r\n *\r\n * Almost any object in amCharts4 has own adapter, accessible with `adapter`\r\n * property.\r\n *\r\n * Any adapters added to it will be applied to that object only.\r\n *\r\n * ### Global Adapters\r\n *\r\n * If you want to add an adapter which applies to all instances of the same\r\n * object type, like, for instance all slices in PieSeries, you can use\r\n * global adapter.\r\n *\r\n * Global adapter is a system-wide instance, accessible via `globalAdapter`.\r\n *\r\n * ```TypeScript\r\n * am4core.globalAdapter.addAll<am4charts.IPieSeriesAdapters, am4charts.PieSeries, \"fill\">(am4charts.PieSeries. \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * am4core.globalAdapter.addAll(am4charts.PieSeries. \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n *\r\n * {@link https://www.amcharts.com/docs/v4/reference/adapter_module/#globalAdapter_property More info}.\r\n *\r\n * @important\r\n */\r\nvar Adapter = /** @class */ (function () {\r\n /**\r\n * Constructor, sets the object referece this Adapter should be used for.\r\n *\r\n * @param c Object\r\n */\r\n function Adapter(c) {\r\n /**\r\n * Internal counter for callback ids.\r\n */\r\n this._callbackId = 0;\r\n /**\r\n * A list of adapter callbacks.\r\n *\r\n * @param $number.order(left.priority, right.priority) [description]\r\n * @param $number.order(left.id, right.id));\t} [description]\r\n */\r\n this._callbacks = new SortedList(function (left, right) {\r\n return $order.or($number.order(left.priority, right.priority), $number.order(left.id, right.id));\r\n });\r\n this._disabled = {};\r\n this.object = c;\r\n // TODO this exposes the internal events\r\n this.events = this._callbacks.events;\r\n }\r\n /**\r\n * Adds a callback for a specific key.\r\n *\r\n * ```TypeScript\r\n * // Override fill color value and make all slices green\r\n * chart.series.template.adapter.add(\"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * // Override fill color value and make all slices green\r\n * chart.series.template.adapter.add(\"fill\", function(value, target, key) {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"adapter\": {\r\n * \t// Override fill color value and make all slices green\r\n * \t\"fill\": function(value, target, key) {\r\n * \t return am4core.color(\"#005500\");\r\n * \t}\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will call user-defined function (adapter) whenever `fill` value\r\n * is requested from the Pie series, allowing it to override the default\r\n * using custom code and any fuzzy logic.\r\n *\r\n * There can be any number of adapters set on one property key.\r\n *\r\n * In this case adapters will be applied in daisy-chain fashion. The first\r\n * adapter in queue will make its transformation. The next one will have\r\n * the output of the first adapter as a starting value, etc.\r\n *\r\n * The order of the adapters are determined either by the order they were\r\n * added in, or their `priority` value.\r\n *\r\n * The heigher the `priority`, the later in the game adapter will be applied.\r\n *\r\n * @param key Key\r\n * @param callback A callback function\r\n * @param priority The higher priority, the more chance the adapter will be applied last\r\n * @param scope Scope for the callback function\r\n */\r\n Adapter.prototype.add = function (key, callback, priority, scope) {\r\n if (priority === void 0) { priority = 0; }\r\n this._callbacks.insert({\r\n id: ++this._callbackId,\r\n key: key,\r\n callback: callback,\r\n priority: priority,\r\n scope: scope\r\n });\r\n };\r\n /**\r\n * Checks whether specific adapter is already set.\r\n *\r\n * @param key Key\r\n * @param callback A callback function\r\n * @param priority The higher priority, the more chance the adapter will be applied last\r\n * @param scope Scope for the callback function\r\n * @returns Adapter set?\r\n */\r\n Adapter.prototype.has = function (key, callback, priority, scope) {\r\n if (priority === void 0) { priority = 0; }\r\n return $iter.contains(this._callbacks.iterator(), function (item) {\r\n return item.key === key && item.callback === callback && item.priority === priority && item.scope === scope;\r\n });\r\n };\r\n /**\r\n * Removes adapter callbacks for the specific `key`.\r\n *\r\n * If `priority` is specified, only callbacks for that priority are removed.\r\n *\r\n * @param key Key\r\n * @param priority Priority\r\n * @todo Implement\r\n */\r\n Adapter.prototype.remove = function (key, priority) {\r\n var _this = this;\r\n // It has to make a copy because it removes the elements while iterating\r\n // TODO inefficient\r\n // TODO should this re-enable the key ?\r\n $array.each($iter.toArray(this._callbacks.iterator()), function (item) {\r\n // TODO test this\r\n if (item.key === key && (!$type.isNumber(priority) || priority === item.priority)) {\r\n _this._callbacks.remove(item);\r\n }\r\n });\r\n };\r\n /**\r\n * Enable applying adapters for a certain key, if it was disabled before by\r\n * `disableKey()`.\r\n *\r\n * @param key Key\r\n */\r\n Adapter.prototype.enableKey = function (key) {\r\n delete this._disabled[key];\r\n };\r\n /**\r\n * Disable applying adapters for a certain key.\r\n *\r\n * Optionally, can set how many applies to skip before automatically\r\n * re-enabling the applying.\r\n *\r\n * @param key Key\r\n * @param amount Number of applies to skip\r\n */\r\n Adapter.prototype.disableKey = function (key, amount) {\r\n if (amount === void 0) { amount = Infinity; }\r\n this._disabled[key] = amount;\r\n };\r\n Adapter.prototype._hasListenersByType = function (key) {\r\n return $array.any(this._callbacks.values, function (x) { return x.key === key; });\r\n };\r\n /**\r\n * Returns if there are any enabled adapters set for the specific `key`.\r\n *\r\n * @returns Are there any adapters for the key?\r\n */\r\n Adapter.prototype.isEnabled = function (key) {\r\n return this._disabled[key] == null && (this._hasListenersByType(key) || globalAdapter.isEnabled(this.object, key));\r\n };\r\n Adapter.prototype._shouldDispatch = function (key) {\r\n var count = this._disabled[key];\r\n if (!$type.isNumber(count)) {\r\n return true;\r\n }\r\n else {\r\n if (count <= 1) {\r\n delete this._disabled[key];\r\n }\r\n else {\r\n --this._disabled[key];\r\n }\r\n return false;\r\n }\r\n };\r\n /**\r\n * Passes the input value through all the callbacks for the defined `key`.\r\n *\r\n * @param key Key\r\n * @param value Input value\r\n * @param ...rest Rest of the parameters to be passed into callback\r\n * @return Output value\r\n */\r\n Adapter.prototype.apply = function (key, value) {\r\n if (this._shouldDispatch(key)) {\r\n // This is needed to improve the performance and reduce garbage collection\r\n var callbacks = this._callbacks.values;\r\n var length_1 = callbacks.length;\r\n if (length_1 > 0) {\r\n for (var i = 0; i < length_1; ++i) {\r\n var item = callbacks[i];\r\n if (item.key === key) {\r\n value = item.callback.call(item.scope, value, this.object, key);\r\n }\r\n }\r\n }\r\n // Apply global adapters\r\n value = globalAdapter.applyAll(this.object, key, value);\r\n return value;\r\n }\r\n else {\r\n return value;\r\n }\r\n };\r\n /**\r\n * Returns all adapter keys which are in this adapter.\r\n *\r\n * @return Adapter keys\r\n */\r\n Adapter.prototype.keys = function () {\r\n // TODO inefficient\r\n return $iter.toArray($iter.map(this._callbacks.iterator(), function (x) { return x.key; }));\r\n };\r\n /**\r\n * Copies all the adapter callbacks from `source`.\r\n *\r\n * @param source An Adapter to copy items from\r\n */\r\n Adapter.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source._callbacks.iterator(), function (x) {\r\n _this.add(x.key, x.callback, x.priority, x.scope);\r\n });\r\n $object.each(source._disabled, function (key, val) {\r\n _this._disabled[key] = val;\r\n });\r\n };\r\n /**\r\n * Clears all callbacks from this Adapter.\r\n */\r\n Adapter.prototype.clear = function () {\r\n // TODO should this also re-enable all the keys ?\r\n this._callbacks.clear();\r\n };\r\n return Adapter;\r\n}());\r\nexport { Adapter };\r\n","/**\r\n * Animation module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { SVGDefaults } from \"../defs/SVGDefaults\";\r\nimport { Disposer } from \"../utils/Disposer\";\r\nimport { Color } from \"../utils/Color\";\r\nimport { Percent, percent } from \"../utils/Percent\";\r\nimport * as $async from \"../utils/AsyncPending\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $colors from \"../utils/Colors\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\nimport { system } from \"../System\";\r\nimport { options } from \"../Options\";\r\n/**\r\n * Calls a `callback` function for the `duration` of milliseconds.\r\n *\r\n * @todo Needed?\r\n * @deprecated Not used anywhere\r\n * @ignore Exclude from docs\r\n * @param duration Duration (ms)\r\n * @param callback Callback function\r\n * @return Disposer\r\n */\r\nexport function animate(duration, callback) {\r\n var disposed = false;\r\n // TODO use performance.now() ?\r\n var startTime = Date.now();\r\n function loop(now) {\r\n if (!disposed) {\r\n var diff = now - startTime;\r\n if (diff >= duration) {\r\n callback(1);\r\n }\r\n else {\r\n $async.nextFrame(loop);\r\n callback(diff / duration);\r\n }\r\n }\r\n }\r\n $async.nextFrame(loop);\r\n return new Disposer(function () {\r\n disposed = true;\r\n });\r\n}\r\n/**\r\n * Returns numeric value accoring to progress between start and end values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Value according to progress\r\n */\r\nfunction getProgressNumber(progress, from, to) {\r\n return from + ((to - from) * progress);\r\n}\r\n/**\r\n * Returns [[Percent]] value accoring to progress between start and end\r\n * values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Value according to progress\r\n */\r\nfunction getProgressPercent(progress, from, to) {\r\n return new Percent(getProgressNumber(progress, from.percent, to.percent));\r\n}\r\n/**\r\n * Returns color value accoring to progress between start and end values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Color according to progress\r\n */\r\nfunction getProgressColor(progress, from, to) {\r\n var color = new Color($colors.interpolate(from.rgb, to.rgb, progress));\r\n if (from.alpha != to.alpha) {\r\n color.alpha = from.alpha + (to.alpha - from.alpha) * progress;\r\n }\r\n return color;\r\n}\r\n/**\r\n * [getHybridProperty description]\r\n *\r\n * @todo Description\r\n * @param property [description]\r\n * @param type [description]\r\n * @return [description]\r\n */\r\nfunction getHybridProperty(property, type) {\r\n return type + property.charAt(0).toUpperCase() + property.substr(1);\r\n}\r\nvar AnimationDisposer = /** @class */ (function () {\r\n function AnimationDisposer(array) {\r\n this._disposer = new Disposer(function () {\r\n while (array.length !== 0) {\r\n array[0].dispose();\r\n }\r\n });\r\n }\r\n AnimationDisposer.prototype.isDisposed = function () {\r\n return this._disposer.isDisposed();\r\n };\r\n AnimationDisposer.prototype.dispose = function () {\r\n this._disposer.dispose();\r\n };\r\n return AnimationDisposer;\r\n}());\r\nexport { AnimationDisposer };\r\n/**\r\n * Animation can be used to transition certain properties on an object that\r\n * implements [[IAnimatable]] interface.\r\n *\r\n * @see {@link IAnimationEvents} for a list of available events\r\n */\r\nvar Animation = /** @class */ (function (_super) {\r\n __extends(Animation, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param object An object animation should run on\r\n * @param animationOptions One or several (array) of animation options\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n */\r\n function Animation(object, animationOptions, duration, easing) {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Duration of the animation in milliseconds.\r\n */\r\n _this.duration = 0;\r\n /**\r\n * Easing function to use.\r\n *\r\n * @see {@link Ease}\r\n */\r\n _this.easing = $ease.linear;\r\n /**\r\n * Contains progress of the current animation: 0 (start) to 1 (end).\r\n */\r\n _this.progress = 0;\r\n /**\r\n * Indicated how many times animation should loop.\r\n */\r\n _this._loop = 0;\r\n /**\r\n * Animation is paused.\r\n */\r\n _this._pause = false;\r\n /**\r\n * Holds reference to timeout for delayed play.\r\n */\r\n _this._delayTimeout = null;\r\n /**\r\n * Elapsed time in currently playing animation.\r\n */\r\n _this._time = 0;\r\n _this._isFinished = false;\r\n _this.className = \"Animation\";\r\n // Override duration if animations disabled system-wide\r\n if (options.animationsEnabled === false) {\r\n duration = 0;\r\n }\r\n // Set parameters\r\n _this.object = object;\r\n _this.animationOptions = $array.toArray(animationOptions);\r\n _this.duration = duration;\r\n if (easing) {\r\n _this.easing = easing;\r\n }\r\n // Run check if there are already animations playing on the same properties\r\n // and stop them - the last animation takes precedence\r\n //this.stopSameAnimations();\r\n /*if ($type.hasValue(callback)) {\r\n // TODO don't use .call\r\n this.events.on(\"animationended\", callback, object);\r\n }*/\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n // TODO verify that this is correct\r\n Animation.prototype.debug = function () { };\r\n /**\r\n * Disposes this object, clears up after itself.\r\n */\r\n Animation.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n this.pause();\r\n };\r\n /**\r\n * Delays animation start by X milliseconds.\r\n *\r\n * @param delay Delay (ms)\r\n * @return Animation\r\n */\r\n Animation.prototype.delay = function (delay) {\r\n var _this = this;\r\n //@todo Maybe not use `bind()`\r\n if (delay > 0) {\r\n this.pause();\r\n // This is so that it will get disposed if `this.object` is disposed\r\n // TODO hacky, figure out a better way\r\n $array.move(this.object.animations, this);\r\n var id_1 = setTimeout(function () {\r\n _this._delayTimeout = null;\r\n _this.start();\r\n }, delay);\r\n this._delayTimeout = new Disposer(function () {\r\n clearTimeout(id_1);\r\n });\r\n }\r\n return this;\r\n };\r\n Animation.prototype._start = function () {\r\n this._isFinished = false;\r\n // Clear delay timeout if there was one\r\n if (this._delayTimeout) {\r\n this.removeDispose(this._delayTimeout);\r\n this._delayTimeout = null;\r\n }\r\n // Run check if there are already animations playing on the same properties\r\n // and stop them - the last animation takes precedence\r\n this.stopSameAnimations();\r\n // Reset counters\r\n this._pause = false;\r\n // Register animation\r\n $array.move(system.animations, this);\r\n // Register this animation in object's `animations` list\r\n $array.move(this.object.animations, this);\r\n system.requestFrame();\r\n };\r\n /**\r\n * Starts animation.\r\n *\r\n * @return Animation\r\n */\r\n Animation.prototype.start = function () {\r\n this._start();\r\n this._startTime = Date.now();\r\n this._time = 0;\r\n this.staticOptions = [];\r\n // Process initial property values\r\n for (var i = this.animationOptions.length - 1; i >= 0; i--) {\r\n var options_1 = this.animationOptions[i];\r\n if (!$type.hasValue(options_1.from)) {\r\n if (options_1.childObject) {\r\n options_1.from = options_1.childObject[options_1.property];\r\n }\r\n else {\r\n options_1.from = this.object[options_1.property];\r\n if (!$type.hasValue(options_1.from)) {\r\n options_1.from = SVGDefaults[options_1.property];\r\n }\r\n }\r\n /*if (!$type.hasValue(options.from)) {\r\n throw Error(\"Could not get initial transition value.\");\r\n }*/\r\n }\r\n if (options_1.from == options_1.to) { // || options.to == (<any>this.object)[options.property]){ this is not good, as dataItem.value is set to final at once, and we animate workingValue\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n else if (!$type.hasValue(options_1.from) || (!(options_1.from instanceof Percent) && (options_1.to instanceof Percent)) || ((options_1.from instanceof Percent) && !(options_1.to instanceof Percent))) {\r\n // Initial value is undefined, treat it as static\r\n this.staticOptions.push(options_1);\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n else {\r\n // Use different update methods for different value types\r\n if ($type.isNumber(options_1.to)) {\r\n // Numeric value\r\n options_1.updateMethod = getProgressNumber;\r\n // Check if initial value is not Percent\r\n if (options_1.from instanceof Percent) {\r\n // It is. Let's convert it to pixel value\r\n // @todo Check if we can do this in a less hacky way\r\n var convertedFrom = this.object[getHybridProperty(options_1.property, \"pixel\")];\r\n if (!isNaN(convertedFrom)) {\r\n options_1.from = convertedFrom;\r\n }\r\n else {\r\n this.staticOptions.push(options_1);\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n }\r\n else if (isNaN(options_1.from)) {\r\n // Static value\r\n this.staticOptions.push(options_1);\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n }\r\n else {\r\n // Check if maybe we have a color or percent value\r\n if (options_1.to instanceof Color) {\r\n // Yup - set resolved named color\r\n //options.from = $colors.stringToColor(<string>options.from);\r\n if (options_1.from) {\r\n options_1.updateMethod = getProgressColor;\r\n }\r\n else {\r\n // Static value\r\n this.staticOptions.push(options_1);\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n }\r\n else if (options_1.to instanceof Percent) {\r\n // Percent\r\n options_1.updateMethod = getProgressPercent;\r\n // Check if the initial value is maybe in pixels\r\n if (!isNaN(options_1.from)) {\r\n // It is. Let's convert it\r\n // @todo Check if we can do this in a less hacky way\r\n var convertedFrom = this.object[getHybridProperty(options_1.property, \"relative\")];\r\n if (!isNaN(convertedFrom)) {\r\n options_1.from = percent(convertedFrom * 100);\r\n }\r\n }\r\n }\r\n else {\r\n // Static value\r\n this.staticOptions.push(options_1);\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n }\r\n }\r\n }\r\n // Apply static options (just in case they were reset by previous\r\n // animation loop)\r\n this.applyStaticOptions();\r\n if (this.events.isEnabled(\"animationstarted\")) {\r\n var event_1 = {\r\n type: \"animationstarted\",\r\n target: this,\r\n progress: this.progress\r\n };\r\n this.events.dispatchImmediately(\"animationstarted\", event_1);\r\n }\r\n this.update();\r\n // If duration is 0, just end animation\r\n if (this.duration === 0) {\r\n this.end();\r\n }\r\n return this;\r\n };\r\n /**\r\n * Sets loop count for the animation. If parameter is not a valid number the\r\n * animation will keep on looping indefinitely.\r\n *\r\n * @param count Number of times to loop animation\r\n * @return Animation\r\n */\r\n Animation.prototype.loop = function (count) {\r\n if (!$type.isNumber(count)) {\r\n count = Infinity;\r\n }\r\n this._loop = count;\r\n return this;\r\n };\r\n /**\r\n * Pauses animation.\r\n *\r\n * @return Animation\r\n */\r\n Animation.prototype.pause = function () {\r\n this._pause = true;\r\n if (this._delayTimeout) {\r\n this.removeDispose(this._delayTimeout);\r\n this._delayTimeout = null;\r\n }\r\n $array.remove(system.animations, this);\r\n $array.remove(this.object.animations, this);\r\n return this;\r\n };\r\n /**\r\n * Resumes paused animation.\r\n *\r\n * @return Animation\r\n */\r\n Animation.prototype.resume = function () {\r\n this._start();\r\n this._startTime = Date.now() - this._time;\r\n return this;\r\n };\r\n /**\r\n * Jumps to animation end. If animation is set to loop, this will start\r\n * another round of animation from start.\r\n *\r\n * @return Animation\r\n */\r\n Animation.prototype.end = function () {\r\n // Pause and complete the progress\r\n if (this._loop == 0) {\r\n this.pause();\r\n }\r\n this.setProgress(1);\r\n // Apply static options\r\n this.applyStaticOptions();\r\n if (this.events.isEnabled(\"animationended\")) {\r\n var event_2 = {\r\n type: \"animationended\",\r\n target: this,\r\n progress: this.progress\r\n };\r\n this.events.dispatchImmediately(\"animationended\", event_2);\r\n }\r\n // Check if we should loop\r\n if (this._loop > 0) {\r\n this._loop--;\r\n this.start();\r\n }\r\n else {\r\n this.stop();\r\n this._isFinished = true;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Stops animation immediately leaving properties in their current values.\r\n */\r\n Animation.prototype.kill = function () {\r\n this.pause();\r\n this._isFinished = true;\r\n };\r\n /**\r\n * Returns indicator if this animation is finished or not\r\n *\r\n * @return Is finished?\r\n */\r\n Animation.prototype.isFinished = function () {\r\n return this._isFinished;\r\n };\r\n /**\r\n * Applies static options that can't be animated.\r\n */\r\n Animation.prototype.applyStaticOptions = function () {\r\n var _this = this;\r\n $array.each(this.staticOptions, function (options) {\r\n if (options.childObject) {\r\n options.childObject[options.property] = _this.progress == 1 ? options.to : options.from;\r\n }\r\n else {\r\n _this.object[options.property] = _this.progress == 1 ? options.to : options.from;\r\n }\r\n });\r\n };\r\n /**\r\n * Stops animation.\r\n *\r\n * When animation is stopped, the properties of the target object will remain\r\n * where they were at the moment when `stop()` was called.\r\n *\r\n * @param skipEvent Do not trigger `animationstopped` event\r\n * @return Animation\r\n */\r\n Animation.prototype.stop = function (skipEvent) {\r\n this.pause();\r\n if (!skipEvent) {\r\n if (this.events.isEnabled(\"animationstopped\")) {\r\n var event_3 = {\r\n type: \"animationstopped\",\r\n target: this,\r\n progress: this.progress\r\n };\r\n this.events.dispatchImmediately(\"animationstopped\", event_3);\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Sets current progress and updates object's numeric and color values.\r\n *\r\n * @param progress Progress (0-1)\r\n */\r\n Animation.prototype.setProgress = function (progress) {\r\n var _this = this;\r\n this._time = this.duration * progress; // just in case we call this from outside\r\n $array.each(this.animationOptions, function (options) {\r\n if (options.updateMethod && $type.hasValue(options.from)) {\r\n var value = options.updateMethod(progress, options.from, options.to);\r\n if (options.childObject) {\r\n options.childObject[options.property] = value;\r\n }\r\n else {\r\n _this.object[options.property] = value;\r\n }\r\n }\r\n });\r\n this.progress = progress;\r\n if (this.events.isEnabled(\"animationprogress\")) {\r\n var event_4 = {\r\n type: \"animationprogress\",\r\n target: this,\r\n progress: this.progress\r\n };\r\n this.events.dispatchImmediately(\"animationprogress\", event_4);\r\n }\r\n system.requestFrame();\r\n };\r\n /**\r\n * Tracks and sets progress according to time or frames.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Animation\r\n */\r\n Animation.prototype.update = function () {\r\n if (!this._pause) {\r\n var progress = void 0;\r\n this._time = $math.fitToRange(Date.now() - this._startTime, 0, this.duration);\r\n var timeProgress = this._time / this.duration;\r\n progress = this.easing(timeProgress);\r\n if (this.duration == 0 || !$type.isNumber(progress) || timeProgress >= 1) {\r\n progress = 1;\r\n }\r\n this.setProgress(progress);\r\n if ($math.round(this._time / this.duration, 6) == 1) {\r\n this.end();\r\n }\r\n }\r\n return this;\r\n };\r\n Object.defineProperty(Animation.prototype, \"delayed\", {\r\n /**\r\n * Returns `true` if this animation is delayed.\r\n *\r\n * @readonly\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._delayTimeout ? true : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks other animations currently running on the same object and removes\r\n * overlapping options from those other animations that are contained in\r\n * this animation.\r\n *\r\n * This is needed to ensure that no two confurent animations step on each\r\n * other's toes by trying to animate the same property.\r\n */\r\n Animation.prototype.stopSameAnimations = function () {\r\n var _this = this;\r\n // stop animation of the same property\r\n // TODO make this more efficient\r\n // TODO don't copy the array\r\n $array.each($array.copy(this.object.animations), function (animation) {\r\n if (animation !== _this && !animation.delayed) {\r\n var killed_1 = [];\r\n $array.each(_this.animationOptions, function (newOptions) {\r\n $array.each(animation.animationOptions, function (oldOptions) {\r\n if (newOptions.property == oldOptions.property && newOptions.childObject == oldOptions.childObject) {\r\n killed_1.push(oldOptions);\r\n if (animation.animationOptions.length == 0) {\r\n animation.kill();\r\n }\r\n }\r\n });\r\n });\r\n $array.each(killed_1, function (oldOptions) {\r\n $array.remove(animation.animationOptions, oldOptions);\r\n });\r\n }\r\n });\r\n };\r\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n Animation.prototype.asFunction = function (field) {\r\n return field == \"easing\" || _super.prototype.asIs.call(this, field);\r\n };\r\n return Animation;\r\n}(BaseObjectEvents));\r\nexport { Animation };\r\n","import * as $math from \"./Math\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Searches `array` for `value`.\r\n *\r\n * Returns -1 if not found.\r\n *\r\n * @param array Source array\r\n * @param value Value to search\r\n * @returns Index\r\n */\r\nexport function indexOf(array, value) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n // TODO handle NaN\r\n if (array[i] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls `test` for each element in `array`.\r\n *\r\n * If `test` returns `true` then it immediately returns `true`.\r\n *\r\n * If `test` returns `false` for all of the elements in `array` then it returns `false`.\r\n *\r\n * @param array Source array\r\n * @param test Function which is called on each element\r\n * @returns Whether `test` returned true or not\r\n */\r\nexport function any(array, test) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n if (test(array[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Calls `fn` function for every member of array and returns a new array out\r\n * of all outputs.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n * @returns New array\r\n */\r\nexport function map(array, fn) {\r\n var length = array.length;\r\n var output = new Array(length);\r\n for (var i = 0; i < length; ++i) {\r\n output[i] = fn(array[i], i);\r\n }\r\n return output;\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function each(array, fn) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n fn(array[i], i);\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array in reverse order and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachReverse(array, fn) {\r\n var i = array.length;\r\n while (i--) {\r\n fn(array[i], i);\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * If `fn` call evaluates to `false`, further iteration is cancelled.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue(array, fn) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n if (!fn(array[i], i)) {\r\n break;\r\n }\r\n }\r\n}\r\n/**\r\n * Shifts an item at `index` towards beginning of the array.\r\n *\r\n * @param array Source array\r\n * @param index Target element index\r\n */\r\nexport function shiftLeft(array, index) {\r\n var length = array.length;\r\n for (var i = index; i < length; ++i) {\r\n array[i - index] = array[i];\r\n }\r\n array.length = length - index;\r\n}\r\n/**\r\n * Returns the last item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function last(array) {\r\n var length = array.length;\r\n return length ? array[length - 1] : undefined;\r\n}\r\n/**\r\n * Returns the first item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function first(array) {\r\n return array[0];\r\n}\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * Caps `index` to be between `0` and `array.length`\r\n *\r\n * @param array Source array\r\n * @param element Item to insert\r\n * @param array Index to insert item at\r\n */\r\nexport function insert(array, element, index) {\r\n //if (array) {\r\n index = $math.fitToRange(index, 0, array.length);\r\n array.splice(index, 0, element);\r\n //}\r\n}\r\n/**\r\n * Removes all copies of `element` from `array` (if they exist) and then\r\n * inserts `element` at `index`.\r\n *\r\n * @param array Source array\r\n * @param element Item\r\n * @param array Index to move item to\r\n */\r\nexport function setIndex(array, element, index) {\r\n remove(array, element);\r\n insert(array, element, index);\r\n}\r\n/**\r\n * Pushes all of the elements from `input` into `array`.\r\n *\r\n * @param array Output array\r\n * @param input Input array\r\n */\r\nexport function pushAll(array, input) {\r\n var length = input.length;\r\n for (var i = 0; i < length; ++i) {\r\n array.push(input[i]);\r\n }\r\n}\r\n/**\r\n * Removes `element` from `array`.\r\n *\r\n * If there are multiple copies of `element`, they are all removed.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n */\r\nexport function remove(array, element) {\r\n var found = false;\r\n var index = array.indexOf(element);\r\n if (index !== -1) {\r\n found = true;\r\n array.splice(index, 1);\r\n var length_1 = array.length;\r\n while (index < length_1) {\r\n // TODO handle NaN\r\n if (array[index] === element) {\r\n array.splice(index, 1);\r\n --length_1;\r\n }\r\n else {\r\n ++index;\r\n }\r\n }\r\n }\r\n return found;\r\n}\r\n/**\r\n * Adds an `element` to `array`.\r\n *\r\n * If array already contains and item like this, it is removed before adding\r\n * it again.\r\n *\r\n * Optionally `toIndex` can be specified to add element at specific index.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to move item to\r\n */\r\nexport function move(array, element, toIndex) {\r\n // @todo this implementation must be the same as the List.moveValue method\r\n // @todo don't do anything if the desired index is the same as the current index\r\n var index = indexOf(array, element);\r\n // @todo remove all old values rather than only the first ?\r\n if (index !== -1) {\r\n removeIndex(array, index);\r\n }\r\n if (toIndex == null) {\r\n array.push(element);\r\n }\r\n else {\r\n insertIndex(array, toIndex, element);\r\n }\r\n}\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to add item at\r\n */\r\nexport function add(array, element, index) {\r\n // Append to the end if index is not set\r\n if (!$type.isNumber(index)) {\r\n array.push(element);\r\n }\r\n // Add to the beginning of array if index is 0\r\n else if (index === 0) {\r\n array.unshift(element);\r\n }\r\n // Add to indicated place if index is set\r\n else {\r\n array.splice(index, 0, element);\r\n }\r\n}\r\n/**\r\n * Removes `element` from `array` (if it exists) and then inserts `element` at\r\n * `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n * @param array Index to move item to\r\n */\r\nexport function replace(array, element, index) {\r\n // check if exists\r\n var ind = array.indexOf(element);\r\n // remove if exists\r\n if (ind !== -1) {\r\n array.splice(ind, 1);\r\n }\r\n // add to end if index is not set\r\n if (!$type.isNumber(index)) {\r\n array.push(element);\r\n }\r\n // add to indicated place if index is set\r\n else {\r\n array.splice(index, 0, element);\r\n }\r\n}\r\n/**\r\n * Wraps `input` in an array, if it isn't already an array.\r\n *\r\n * @param input Source value\r\n * @return An array\r\n */\r\nexport function toArray(input) {\r\n if (Array.isArray(input)) {\r\n return input;\r\n }\r\n else {\r\n return [input];\r\n }\r\n}\r\n/**\r\n * Returns `true` if `element` exists in `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to search for\r\n * @returns Item in array?\r\n */\r\nexport function has(array, element) {\r\n return indexOf(array, element) !== -1;\r\n}\r\n/**\r\n * Returns a shallow copy of `array`.\r\n *\r\n * @param array Source array\r\n * @returns Copy of the array\r\n */\r\nexport function copy(array) {\r\n var length = array.length;\r\n // It's faster to create the array with a pre-defined length\r\n var output = new Array(length);\r\n for (var i = 0; i < length; ++i) {\r\n // Because the array has a pre-defined length, we have to assign rather than push\r\n // This is also faster than pushing\r\n output[i] = array[i];\r\n }\r\n return output;\r\n}\r\n/**\r\n * Returns a copy of `array` which contains all the elements between `start`\r\n * and `end`. (including `start` and excluding `end`)\r\n *\r\n * If `end` is not provided, it defaults to `array.length`.\r\n *\r\n * @param array Source array\r\n * @param start Start index\r\n * @param end End index\r\n * @returns Part of the array\r\n */\r\nexport function slice(array, start, end) {\r\n if (end === void 0) { end = array.length; }\r\n var output = new Array(end - start);\r\n for (var i = start; i < end; ++i) {\r\n output[i - start] = array[i];\r\n }\r\n return output;\r\n}\r\n/**\r\n * Inserts a value into array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n * @param value Value to insert\r\n */\r\nexport function insertIndex(array, index, value) {\r\n array.splice(index, 0, value);\r\n}\r\n/**\r\n * Removes a value from array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n */\r\nexport function removeIndex(array, index) {\r\n array.splice(index, 1);\r\n}\r\n/**\r\n * Orders an array using specific `ordering` function and returns index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @param value Value to search for\r\n * @returns Result of the search\r\n */\r\nexport function getSortedIndex(array, ordering, value) {\r\n var start = 0;\r\n var end = array.length;\r\n var found = false;\r\n while (start < end) {\r\n // TODO is this faster/slower than using Math.floor ?\r\n var pivot = (start + end) >> 1;\r\n var order = ordering(value, array[pivot]);\r\n // less\r\n if (order < 0) {\r\n end = pivot;\r\n // equal\r\n }\r\n else if (order === 0) {\r\n found = true;\r\n start = pivot + 1;\r\n // more\r\n }\r\n else {\r\n start = pivot + 1;\r\n }\r\n }\r\n return {\r\n found: found,\r\n index: (found ? start - 1 : start)\r\n };\r\n}\r\n/**\r\n * Searches the array using custom function and returns index of the item if\r\n * found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns -1.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\r\nexport function findIndex(array, matches) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n if (matches(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function find(array, matches) {\r\n var index = findIndex(array, matches);\r\n if (index !== -1) {\r\n return array[index];\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function shuffle(array) {\r\n // https://stackoverflow.com/a/2450976/449477\r\n var currentIndex = array.length, temporaryValue, randomIndex;\r\n // While there remain elements to shuffle...\r\n while (0 !== currentIndex) {\r\n // Pick a remaining element...\r\n randomIndex = Math.floor(Math.random() * currentIndex);\r\n currentIndex -= 1;\r\n // And swap it with the current element.\r\n temporaryValue = array[currentIndex];\r\n array[currentIndex] = array[randomIndex];\r\n array[randomIndex] = temporaryValue;\r\n }\r\n}\r\nexport function keepIf(array, keep) {\r\n var length = array.length;\r\n var i = 0;\r\n while (i < length) {\r\n if (keep(array[i])) {\r\n ++i;\r\n }\r\n else {\r\n array.splice(i, 1);\r\n --length;\r\n }\r\n }\r\n}\r\n","/**\r\n * A collection of low-level async operation stuff.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $array from \"./Array\";\r\nvar pendingFrame = false;\r\nvar nextQueue = [];\r\nvar readQueue = [];\r\nvar writeQueue = [];\r\nvar idleQueue = [];\r\nvar fps = 1000 / 60;\r\n/**\r\n * [raf description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport var raf = (typeof requestAnimationFrame === \"function\"\r\n ? function (fn) {\r\n requestAnimationFrame(fn);\r\n }\r\n : function (fn) {\r\n setTimeout(fn, fps);\r\n });\r\n/**\r\n * [frameLoop description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nfunction frameLoop() {\r\n var now = Date.now();\r\n var length = nextQueue.length;\r\n for (var i = 0; i < length; ++i) {\r\n nextQueue[i](now);\r\n }\r\n $array.shiftLeft(nextQueue, length);\r\n for (var i = 0; i < readQueue.length; ++i) {\r\n readQueue[i](now);\r\n }\r\n readQueue.length = 0;\r\n for (var i = 0; i < writeQueue.length; ++i) {\r\n writeQueue[i](now);\r\n }\r\n writeQueue.length = 0;\r\n if (nextQueue.length === 0 && readQueue.length === 0) {\r\n pendingFrame = false;\r\n }\r\n else {\r\n raf(frameLoop);\r\n }\r\n}\r\n/**\r\n * [pendFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nfunction pendFrame() {\r\n if (!pendingFrame) {\r\n pendingFrame = true;\r\n raf(frameLoop);\r\n }\r\n}\r\n/**\r\n * [nextFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function nextFrame(fn) {\r\n nextQueue.push(fn);\r\n pendFrame();\r\n}\r\n/**\r\n * [readFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function readFrame(fn) {\r\n readQueue.push(fn);\r\n pendFrame();\r\n}\r\n/**\r\n * [writeFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function writeFrame(fn) {\r\n writeQueue.push(fn);\r\n pendFrame();\r\n}\r\n/**\r\n * [whenIdle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function whenIdle(fn) {\r\n idleQueue.push(fn);\r\n}\r\n/**\r\n * [triggerIdle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @todo Maybe don't trigger a callback which was added while in the middle of triggering?\r\n */\r\nexport function triggerIdle() {\r\n var now = Date.now();\r\n var length = idleQueue.length;\r\n for (var i = 0; i < length; ++i) {\r\n idleQueue.shift()(now);\r\n }\r\n}\r\n","// Also detects iOS\r\nexport function isSafari() {\r\n return /apple/i.test(navigator.vendor);\r\n}\r\nexport function isInternetExplorer() {\r\n return /MSIE |Trident\\//.test(navigator.userAgent);\r\n}\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Dictionary } from \"./Dictionary\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents object cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Better storage\r\n * @todo TTL logging\r\n * @todo Garbage collector\r\n */\r\nvar Cache = /** @class */ (function () {\r\n function Cache() {\r\n /**\r\n * Storage for cache items.\r\n */\r\n this._storage = new Dictionary();\r\n /**\r\n * Default TTL in milliseconds.\r\n */\r\n this.ttl = 1000;\r\n }\r\n /**\r\n * Caches or updates cached value, resets TTL.\r\n *\r\n * If `ttl` is set to zero, item will never expire.\r\n *\r\n * @param owner An id of the object that owns this cache\r\n * @param key Index key\r\n * @param value Value\r\n * @param ttl TTL of the cache to live in milliseconds\r\n */\r\n Cache.prototype.set = function (owner, key, value, ttl) {\r\n // Create if storage does not exist for this owner\r\n var ownerStorage = this._storage.insertKeyIfEmpty(owner, function () { return new Dictionary(); });\r\n // Create cache item\r\n var item = {\r\n \"touched\": new Date().getTime(),\r\n \"ttl\": $type.isNumber(ttl) ? ttl : this.ttl,\r\n \"value\": value\r\n };\r\n // Set\r\n ownerStorage.setKey(key, item);\r\n };\r\n /**\r\n * Rerturns cached item, respecting TTL.\r\n *\r\n * @param owner An id of the object that owns this cache\r\n * @param key Index key\r\n * @param value Value to return if cache not available\r\n * @return Value, or `undefined` if not set\r\n */\r\n Cache.prototype.get = function (owner, key, value) {\r\n if (value === void 0) { value = undefined; }\r\n // \t\t || ypeof this._storage[owner][key] === \"undefined\" || this._storage[owner][key].expired === true) {\r\n if (this._storage.hasKey(owner)) {\r\n var ownerStorage = this._storage.getKey(owner);\r\n if (ownerStorage.hasKey(key)) {\r\n var cacheItem = ownerStorage.getKey(key);\r\n if (cacheItem.ttl && ((cacheItem.touched + cacheItem.ttl) < new Date().getTime())) {\r\n cacheItem.expired = true;\r\n }\r\n if (cacheItem.expired) {\r\n ownerStorage.removeKey(key);\r\n return value;\r\n }\r\n return cacheItem.value;\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n else {\r\n return value;\r\n }\r\n };\r\n /**\r\n * Clears cache for specific owner or everything.\r\n *\r\n * @param owner Owner to clear cache for\r\n */\r\n Cache.prototype.clear = function (owner) {\r\n if (owner) {\r\n this._storage.removeKey(owner);\r\n }\r\n else {\r\n this._storage.clear();\r\n }\r\n };\r\n return Cache;\r\n}());\r\nexport { Cache };\r\n/**\r\n * ============================================================================\r\n * GLOBAL INSTANCE\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A global instance of cache. Use this instance to cache any values.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var cache = new Cache();\r\n","/**\r\n * This module contains Color object definition\r\n */\r\nimport { registry } from \"../Registry\";\r\nimport * as $colors from \"./Colors\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Represents a color.\r\n *\r\n * `Color` accepts value only in [[iRGB]] object format. To create `Color`\r\n * object by parsing it from any supported string-based formats, use helper\r\n * [[color]] function:\r\n *\r\n * ```TypeScript\r\n * am4core.color(\"#ff0000\");\r\n * am4core.color(\"#f00\");\r\n * am4core.color(\"rgb(255, 0, 0)\");\r\n * am4core.color(\"rgba(255, 0, 0, 0.5)\");\r\n * am4core.color({ r: 255, g: 0, b: 0 });\r\n * am4core.color(\"red\");\r\n * ```\r\n * ```JavaScript\r\n * am4core.color(\"#ff0000\");\r\n * am4core.color(\"#f00\");\r\n * am4core.color(\"rgb(255, 0, 0)\");\r\n * am4core.color(\"rgba(255, 0, 0, 0.5)\");\r\n * am4core.color({ r: 255, g: 0, b: 0 });\r\n * am4core.color(\"red\");\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nvar Color = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n *\r\n * @param color Source color\r\n */\r\n function Color(color) {\r\n this._value = color;\r\n }\r\n Object.defineProperty(Color.prototype, \"rgb\", {\r\n /**\r\n * Returns [[iRGB]] representation of the color.\r\n *\r\n * @return RGB object\r\n */\r\n get: function () {\r\n return this._value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Color.prototype, \"hex\", {\r\n /**\r\n * Returns color hex value string, e.g. \"#FF0000\".\r\n *\r\n * @return Hex color code\r\n */\r\n get: function () {\r\n return this._value ? $colors.rgbToHex(this._value) : \"none\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Color.prototype, \"rgba\", {\r\n /**\r\n * Returns an `rgba()` representation of the color, e.g.:\r\n * `rgba(255, 0, 0, 0.5)`.\r\n *\r\n * @return rgba color string\r\n */\r\n get: function () {\r\n return this._value ? $colors.rgbToRGBA(this._value) : \"none\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Color.prototype, \"alpha\", {\r\n /**\r\n * Returns current transparency.\r\n *\r\n * @return Alpha (0-1)\r\n */\r\n get: function () {\r\n if (this._value != null && this._value.a != null) {\r\n return this._value.a;\r\n }\r\n else {\r\n return 1;\r\n }\r\n },\r\n /**\r\n * Set alpha (transparency) of the color.\r\n *\r\n * @param value Alpha (0-1)\r\n */\r\n set: function (value) {\r\n if (this._value) {\r\n this._value.a = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Color.prototype, \"lightColor\", {\r\n /**\r\n * Returns current light color setting.\r\n *\r\n * @return Color\r\n */\r\n get: function () {\r\n if (!this._lightColor) {\r\n this._lightColor = new Color({ r: 255, g: 255, b: 255 });\r\n }\r\n return this._lightColor;\r\n },\r\n /**\r\n * Sets \"light\" color. Used when determining contrasting color.\r\n *\r\n * @param color Color\r\n */\r\n set: function (color) {\r\n this._lightColor = color;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Color.prototype, \"darkColor\", {\r\n /**\r\n * Returns current dark color setting.\r\n *\r\n * @return Color\r\n */\r\n get: function () {\r\n if (!this._darkColor) {\r\n this._darkColor = new Color({ r: 0, g: 0, b: 0 });\r\n }\r\n return this._darkColor;\r\n },\r\n /**\r\n * Sets \"dark\" color. Used when determining contrasting color.\r\n *\r\n * @param color Color\r\n */\r\n set: function (color) {\r\n this._darkColor = color;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Overrides `toString` method so that [[Color]] object can be used as\r\n * string.\r\n *\r\n * @ignore Exclude from docs\r\n * @return String represantion of color (usable in CSS)\r\n */\r\n Color.prototype.toString = function () {\r\n return this.alpha < 1 ? this.rgba : this.hex;\r\n };\r\n /**\r\n * Returns a new [[Color]] which is percent lighter (positive value),\r\n * or darker (negative value).\r\n *\r\n * Parameter is in the scale of -1 to 1.\r\n *\r\n * @param percent Increase/decrease lightness by X\r\n * @return New Color\r\n */\r\n Color.prototype.lighten = function (percent) {\r\n return new Color($colors.lighten(this.rgb, percent));\r\n };\r\n /**\r\n * Returns a new [[Color]] which is percent brighter (positive value),\r\n * or darker (negative value).\r\n *\r\n * Parameter is in the scale of -1 to 1.\r\n *\r\n * @param percent Increase/decrease brightness by X\r\n * @return New Color\r\n */\r\n Color.prototype.brighten = function (percent) {\r\n return new Color($colors.brighten(this.rgb, percent));\r\n };\r\n /**\r\n * Returns a new [[Color]] based on current color with specific saturation\r\n * applied.\r\n *\r\n * `saturation` can be in the range of 0 (fully desaturated) to 1 (fully\r\n * saturated).\r\n *\r\n * @param saturation Saturation (0-1)\r\n * @return New (saturated) color\r\n */\r\n Color.prototype.saturate = function (saturation) {\r\n return new Color($colors.saturate(this.rgb, saturation));\r\n };\r\n Object.defineProperty(Color.prototype, \"alternative\", {\r\n /**\r\n * Returns a either light or dark color that contrasts specifically with\r\n * this color.\r\n *\r\n * Uses properties `darkColor` (default black) and `lightColor` (default\r\n * white).\r\n *\r\n * Useful when determining which color label should be on a colored\r\n * background, so that it stands out.\r\n *\r\n * @return Contrasting color\r\n */\r\n get: function () {\r\n if (this.rgb != null) {\r\n return $colors.isLight(this.rgb) ? this.darkColor : this.lightColor;\r\n }\r\n else {\r\n throw new Error(\"Color does not exist\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Color;\r\n}());\r\nexport { Color };\r\n/**\r\n * Resolves an input variable to a normal [[iRGB]] color and creates [[Color]]\r\n * object for it.\r\n *\r\n * @param value Input value\r\n * @param alpha Alpha (0-1)\r\n * @return Color object\r\n */\r\nexport function color(value, alpha) {\r\n if (!$type.hasValue(value)) {\r\n return new Color(undefined);\r\n }\r\n if (typeof value == \"string\") {\r\n var cacheId = \"_color_\" + value + \"_\" + (alpha || \"1\");\r\n var cached = registry.getCache(cacheId);\r\n if (cached) {\r\n return new Color({\r\n r: cached.r,\r\n g: cached.g,\r\n b: cached.b,\r\n a: cached.a\r\n });\r\n }\r\n var rgb = $colors.rgb(value, alpha);\r\n registry.setCache(cacheId, rgb);\r\n return new Color(rgb);\r\n }\r\n // Check if it's already a Color object\r\n if (value instanceof Color) {\r\n if ($type.hasValue(alpha)) {\r\n value.alpha = alpha;\r\n }\r\n return value;\r\n }\r\n // Not a string or Color instance, it's the iRGB object then\r\n return new Color(value);\r\n}\r\n/**\r\n * Checks if supplied argument is instance of [[Color]].\r\n *\r\n * @param value Input value\r\n * @return Is Color?\r\n */\r\nexport function isColor(value) {\r\n return value instanceof Color;\r\n}\r\n/**\r\n * Converts any value to [[Color]].\r\n *\r\n * @param value Input value\r\n * @return Color\r\n */\r\nexport function castColor(value) {\r\n return color(value);\r\n}\r\n/**\r\n * Converts any value into a [[Color]].\r\n *\r\n * @param value Source value\r\n * @return Color object\r\n */\r\nexport function toColor(value) {\r\n if ($type.hasValue(value) && !isColor(value)) {\r\n return castColor(value);\r\n }\r\n return value;\r\n}\r\n","/**\r\n * This module contains ColorSet object definition\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { Color, color } from \"./Color\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $colors from \"./Colors\";\r\nimport * as $type from \"./Type\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $math from \"./Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a set of colors. Can also generate colors according to set rules.\r\n *\r\n * @important\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nvar ColorSet = /** @class */ (function (_super) {\r\n __extends(ColorSet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColorSet() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Holds the list of the colors in this set. (preset or auto-generated)\r\n */\r\n _this._list = [];\r\n /**\r\n * Current step in a color generator's cycle.\r\n */\r\n _this._currentStep = 0;\r\n /**\r\n * If set to non-zero value, the ColorSet will start iterating colors from\r\n * that particular index, not the first color in the list.\r\n */\r\n _this._startIndex = 0;\r\n /**\r\n * Current pass in the color generator's cycle. Normally a generator would\r\n * cycle through all available hue range, then repeat it, alternating other\r\n * color properties, to generate distinctive colors.\r\n */\r\n _this._currentPass = 0;\r\n /**\r\n * A base color. If there are no colors pre-set in the color list, ColorSet\r\n * will use this color as a base when generating new ones, applying\r\n * `stepOptions` and `passOptions` to this base color.\r\n */\r\n _this.baseColor = new Color({\r\n r: 103,\r\n g: 183,\r\n b: 220\r\n });\r\n /**\r\n * Modifications to apply with each new generated color.\r\n */\r\n _this.stepOptions = {};\r\n /**\r\n * Modifications to apply on top of `stepOptions` for each \"pass\" of the\r\n * color generation.\r\n *\r\n * A \"pass\" is when ColorSet generates `minColors` number of colors.\r\n */\r\n _this.passOptions = {\r\n brighten: -0.2\r\n };\r\n /**\r\n * An index increment to use when iterating through color list.\r\n *\r\n * Default is 1, which means returning each and every color.\r\n *\r\n * Setting it to a bigger number will make ColorSet `next()` iterator skip\r\n * some colors.\r\n *\r\n * E.g. setting to 2, will return every second color in the list.\r\n *\r\n * This is useful, when the color list has colors that are too close each\r\n * other for contrast.\r\n *\r\n * However, having bigger number will mean that `next()` iterator will go\r\n * through the list quicker, and the generator will kick sooner.\r\n */\r\n _this.step = 1;\r\n /**\r\n * A number of colors to generate in one \"pass\".\r\n *\r\n * This setting can be automatically overridden, if ColorSet has a list of\r\n * pre-set colors. In such case ColorSet will generate exactly the same\r\n * number of colors with each pass as there were colors in original set.\r\n */\r\n _this.minColors = 20;\r\n /**\r\n * Do not let the \"lightness\" of generated color to fall below this\r\n * threshold.\r\n */\r\n _this.minLightness = 0.2;\r\n /**\r\n * Do not let the \"lightness\" of generated color to get above this threshold.\r\n */\r\n _this.maxLightness = 0.9;\r\n /**\r\n * Randomly shuffle generated colors.\r\n */\r\n _this.shuffle = false;\r\n /**\r\n * When colors are generated, based on `stepOptions`, each generated color\r\n * gets either lighter or darker.\r\n *\r\n * If this is set to `true`, color generator will switch to opposing spectrum\r\n * when reaching `minLightness` or `maxLightness`.\r\n *\r\n * E.g. if we start off with a red color, then gradually generate lighter\r\n * colors through rose shades, then switch back to dark red and gradually\r\n * increase the lightness of it until it reaches the starting red.\r\n *\r\n * If set to `false` it will stop there and cap lightness at whatever level\r\n * we hit `minLightness` or `maxLightness`, which may result in a number of\r\n * the same colors.\r\n */\r\n _this.wrap = true;\r\n /**\r\n * Re-use same colors in the pre-set list, when ColorSet runs out of colors,\r\n * rather than start generating new ones.\r\n */\r\n _this.reuse = false;\r\n /**\r\n * Saturation of colors. This will change saturation of all colors of color\r\n * set.\r\n *\r\n * It is recommended to set this in theme, as changing it at run time won't\r\n * make the items to redraw and change color.\r\n */\r\n _this.saturation = 1;\r\n _this.className = \"ColorSet\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ColorSet.prototype, \"list\", {\r\n /**\r\n * Returns current list of colors.\r\n *\r\n * If there are none, a new list of colors is generated, based on various\r\n * ColorSet settings.\r\n *\r\n * @return Color list\r\n */\r\n get: function () {\r\n if (!this._list) {\r\n this.generate(this.minColors);\r\n }\r\n return this._list;\r\n },\r\n /**\r\n * Sets a list of pre-defined colors to use for the iterator.\r\n *\r\n * @param value Color list\r\n */\r\n set: function (value) {\r\n this._list = value;\r\n this.reset();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Gets reusable color.\r\n *\r\n * @param index Index of color\r\n * @return Color\r\n */\r\n ColorSet.prototype.getReusableColor = function (index) {\r\n if (this._list.length == 0) {\r\n this.generate(1);\r\n return this.list[0];\r\n }\r\n else {\r\n var tmpstep = index - (Math.floor(index / this._list.length) * this.list.length);\r\n return this.list[tmpstep];\r\n }\r\n };\r\n /**\r\n * Returns next color in the list using internal iterator counter.\r\n *\r\n * If `step` is set to something other than 1, it may return other color than\r\n * exact next one in the list.\r\n *\r\n * @return Color\r\n */\r\n ColorSet.prototype.next = function () {\r\n var color;\r\n if (this.list.length <= this._currentStep) {\r\n if (this.reuse) {\r\n color = this.getReusableColor(this._currentStep);\r\n }\r\n else {\r\n this.generate($math.max(this.minColors, this._currentStep + 1));\r\n color = this.list[this._currentStep];\r\n }\r\n }\r\n else {\r\n color = this.list[this._currentStep];\r\n }\r\n this._currentStep += this.step;\r\n return color.saturate(this.saturation);\r\n };\r\n /**\r\n * Returns a color at specific index in the list.\r\n *\r\n * @param i Index\r\n * @return Color\r\n */\r\n ColorSet.prototype.getIndex = function (i) {\r\n var color;\r\n if (this.list.length <= i) {\r\n if (this.reuse) {\r\n color = this.getReusableColor(i);\r\n }\r\n else {\r\n this.generate(this.minColors);\r\n color = this.getIndex(i);\r\n }\r\n }\r\n else {\r\n color = this.list[i];\r\n }\r\n return color.saturate(this.saturation);\r\n };\r\n /**\r\n * Resets internal iterator.\r\n *\r\n * Calling `next()` after this will return the very first color in the color\r\n * list, even if it was already returned before.\r\n */\r\n ColorSet.prototype.reset = function () {\r\n this._currentStep = this._startIndex;\r\n };\r\n Object.defineProperty(ColorSet.prototype, \"currentStep\", {\r\n /**\r\n * @return Step\r\n */\r\n get: function () {\r\n return this._currentStep;\r\n },\r\n /**\r\n * Sets current color iteration. You can use this property to skip some\r\n * colors from iteration. E.g. setting it to `10` will skip first ten\r\n * colors.\r\n *\r\n * Please note that the number is zero-based.\r\n *\r\n * @param value Step\r\n */\r\n set: function (value) {\r\n this._currentStep = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorSet.prototype, \"startIndex\", {\r\n /**\r\n * @return Index\r\n */\r\n get: function () {\r\n return this._startIndex;\r\n },\r\n /**\r\n * If set to non-zero value, the ColorSet will start iterating colors from\r\n * that particular index, not the first color in the list.\r\n *\r\n * @default 0\r\n * @since 4.4.9\r\n * @param value Index\r\n */\r\n set: function (value) {\r\n this._startIndex = value;\r\n this.reset();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Generates colors based on the various ColorSet settings.\r\n *\r\n * @param count Number of colors to generate\r\n */\r\n ColorSet.prototype.generate = function (count) {\r\n // Init\r\n var curColor = this.currentColor;\r\n var hsl = $colors.rgbToHsl($type.getValue(curColor.rgb));\r\n var hueStep = $type.hasValue(this.stepOptions.hue) ? this.stepOptions.hue : 1 / count;\r\n var mods = {\r\n brighten: 0,\r\n lighten: 0,\r\n hue: hsl.h,\r\n lightness: hsl.l,\r\n saturation: hsl.s\r\n };\r\n // Generate list of hues, and shuffle them\r\n var hues = [];\r\n var startIndex = this.list.length == 0 ? 0 : 1;\r\n if (this.reuse) {\r\n for (var i = startIndex; i <= count; i++) {\r\n hues.push($colors.rgbToHsl($type.getValue(this._list[i].rgb)).h);\r\n }\r\n }\r\n else {\r\n for (var i = startIndex; i <= count; i++) {\r\n var h = hsl.h + hueStep * i;\r\n if (this.wrap && (h > 1)) {\r\n h -= 1;\r\n }\r\n hues.push(h);\r\n }\r\n }\r\n // Shuffle colors randomly\r\n if (this.shuffle) {\r\n hues.sort(function (a, b) {\r\n return Math.random() - 0.5;\r\n });\r\n }\r\n // Generate colors by rotating hue\r\n for (var i = 0; i < count; i++) {\r\n // Update hue\r\n if (this.reuse) {\r\n hsl = $colors.rgbToHsl($type.getValue(this._list[i].rgb));\r\n }\r\n else {\r\n hsl.h = hues.shift();\r\n }\r\n // Apply HSL mods\r\n this.applyStepOptions(hsl, mods, i, this._currentPass);\r\n // Convert back to Color\r\n var c = color($colors.hslToRgb(hsl));\r\n // Apply regular color mods\r\n var brighten = (this.stepOptions.brighten || 0) * i + (this.passOptions.brighten || 0) * this._currentPass;\r\n if (brighten != 0) {\r\n if (this.wrap) {\r\n brighten = $utils.fitNumberRelative(brighten, this.minLightness, this.maxLightness);\r\n }\r\n else {\r\n brighten = $utils.fitNumber(brighten, this.minLightness, this.maxLightness);\r\n }\r\n c = c.brighten(brighten);\r\n }\r\n var lighten = (this.stepOptions.lighten || 0) * i + (this.passOptions.lighten || 0) * this._currentPass;\r\n if (lighten != 0) {\r\n if (this.wrap) {\r\n lighten = $utils.fitNumberRelative(lighten, this.minLightness, this.maxLightness);\r\n }\r\n else {\r\n lighten = $utils.fitNumber(lighten, this.minLightness, this.maxLightness);\r\n }\r\n c = c.lighten(lighten);\r\n }\r\n this._list.push(c);\r\n }\r\n this._currentPass++;\r\n };\r\n Object.defineProperty(ColorSet.prototype, \"currentColor\", {\r\n /**\r\n * Returns current last color. It's either the last color in the list of\r\n * colors, or `baseColor` if list is empty.\r\n *\r\n * @return Color\r\n */\r\n get: function () {\r\n if (this._list.length == 0) {\r\n return this.baseColor.saturate(this.saturation);\r\n }\r\n else {\r\n return this._list[this._list.length - 1].saturate(this.saturation);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Generates modifiers for color, based on what step and pass.\r\n *\r\n * @param hsl Curren HSL value of the color to modify\r\n * @param base The modifiers that were before modification to use as a base\r\n * @param step Current step\r\n * @param pass Current pass\r\n */\r\n ColorSet.prototype.applyStepOptions = function (hsl, base, step, pass) {\r\n // Process lightness\r\n hsl.l = base.lightness + (this.stepOptions.lightness || 0) * step + (this.passOptions.lightness || 0) * pass;\r\n if (this.wrap) {\r\n if (hsl.l > 1) {\r\n hsl.l = hsl.l - Math.floor(hsl.l);\r\n }\r\n else if (hsl.l < 0) {\r\n hsl.l = -(hsl.l - Math.floor(hsl.l));\r\n }\r\n hsl.l = $utils.fitNumberRelative(hsl.l, this.minLightness, this.maxLightness);\r\n }\r\n else {\r\n if (hsl.l > 1) {\r\n hsl.l = 1;\r\n }\r\n else if (hsl.l < 0) {\r\n hsl.l = 0;\r\n }\r\n hsl.l = $utils.fitNumber(hsl.l, this.minLightness, this.maxLightness);\r\n }\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n ColorSet.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Cast colors\r\n if ($type.hasValue(config.list) && $type.isArray(config.list)) {\r\n for (var i = 0, len = config.list.length; i < len; i++) {\r\n if (!(config.list[i] instanceof Color)) {\r\n config.list[i] = color(config.list[i]);\r\n }\r\n }\r\n }\r\n if ($type.hasValue(config.baseColor) && !(config.baseColor instanceof Color)) {\r\n config.baseColor = color(config.baseColor);\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return ColorSet;\r\n}(BaseObject));\r\nexport { ColorSet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColorSet\"] = ColorSet;\r\n","/**\r\n * A collection of color-related functions\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $math from \"./Math\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Define named colors for easy resolution to RGB.\r\n */\r\nvar namedColors = {\r\n aliceblue: { r: 240, g: 248, b: 255 },\r\n antiquewhite: { r: 250, g: 235, b: 215 },\r\n aqua: { r: 0, g: 255, b: 255 },\r\n aquamarine: { r: 127, g: 255, b: 212 },\r\n azure: { r: 240, g: 255, b: 255 },\r\n beige: { r: 245, g: 245, b: 220 },\r\n bisque: { r: 255, g: 228, b: 196 },\r\n black: { r: 0, g: 0, b: 0 },\r\n blanchedalmond: { r: 255, g: 235, b: 205 },\r\n blue: { r: 0, g: 0, b: 255 },\r\n blueviolet: { r: 138, g: 43, b: 226 },\r\n brown: { r: 165, g: 42, b: 42 },\r\n burlywood: { r: 222, g: 184, b: 135 },\r\n cadetblue: { r: 95, g: 158, b: 160 },\r\n chartreuse: { r: 127, g: 255, b: 0 },\r\n chocolate: { r: 210, g: 105, b: 30 },\r\n coral: { r: 255, g: 127, b: 80 },\r\n cornflowerblue: { r: 100, g: 149, b: 237 },\r\n cornsilk: { r: 255, g: 248, b: 220 },\r\n crimson: { r: 220, g: 20, b: 60 },\r\n cyan: { r: 0, g: 255, b: 255 },\r\n darkblue: { r: 0, g: 0, b: 139 },\r\n darkcyan: { r: 0, g: 139, b: 139 },\r\n darkgoldenrod: { r: 184, g: 134, b: 11 },\r\n darkgray: { r: 169, g: 169, b: 169 },\r\n darkgrey: { r: 169, g: 169, b: 169 },\r\n darkgreen: { r: 0, g: 100, b: 0 },\r\n darkkhaki: { r: 189, g: 183, b: 107 },\r\n darkmagenta: { r: 139, g: 0, b: 139 },\r\n darkolivegreen: { r: 85, g: 107, b: 47 },\r\n darkorange: { r: 255, g: 140, b: 0 },\r\n darkorchid: { r: 153, g: 50, b: 204 },\r\n darkred: { r: 139, g: 0, b: 0 },\r\n darksalmon: { r: 233, g: 150, b: 122 },\r\n darkseagreen: { r: 143, g: 188, b: 143 },\r\n darkslateblue: { r: 72, g: 61, b: 139 },\r\n darkslategray: { r: 47, g: 79, b: 79 },\r\n darkslategrey: { r: 47, g: 79, b: 79 },\r\n darkturquoise: { r: 0, g: 206, b: 209 },\r\n darkviolet: { r: 148, g: 0, b: 211 },\r\n deeppink: { r: 255, g: 20, b: 147 },\r\n deepskyblue: { r: 0, g: 191, b: 255 },\r\n dimgray: { r: 105, g: 105, b: 105 },\r\n dimgrey: { r: 105, g: 105, b: 105 },\r\n dodgerblue: { r: 30, g: 144, b: 255 },\r\n firebrick: { r: 178, g: 34, b: 34 },\r\n floralwhite: { r: 255, g: 250, b: 240 },\r\n forestgreen: { r: 34, g: 139, b: 34 },\r\n fuchsia: { r: 255, g: 0, b: 255 },\r\n gainsboro: { r: 220, g: 220, b: 220 },\r\n ghostwhite: { r: 248, g: 248, b: 255 },\r\n gold: { r: 255, g: 215, b: 0 },\r\n goldenrod: { r: 218, g: 165, b: 32 },\r\n gray: { r: 128, g: 128, b: 128 },\r\n grey: { r: 128, g: 128, b: 128 },\r\n green: { r: 0, g: 128, b: 0 },\r\n greenyellow: { r: 173, g: 255, b: 47 },\r\n honeydew: { r: 240, g: 255, b: 240 },\r\n hotpink: { r: 255, g: 105, b: 180 },\r\n indianred: { r: 205, g: 92, b: 92 },\r\n indigo: { r: 75, g: 0, b: 130 },\r\n ivory: { r: 255, g: 255, b: 240 },\r\n khaki: { r: 240, g: 230, b: 140 },\r\n lavender: { r: 230, g: 230, b: 250 },\r\n lavenderblush: { r: 255, g: 240, b: 245 },\r\n lawngreen: { r: 124, g: 252, b: 0 },\r\n lemonchiffon: { r: 255, g: 250, b: 205 },\r\n lightblue: { r: 173, g: 216, b: 230 },\r\n lightcoral: { r: 240, g: 128, b: 128 },\r\n lightcyan: { r: 224, g: 255, b: 255 },\r\n lightgoldenrodyellow: { r: 250, g: 250, b: 210 },\r\n lightgray: { r: 211, g: 211, b: 211 },\r\n lightgrey: { r: 211, g: 211, b: 211 },\r\n lightgreen: { r: 144, g: 238, b: 144 },\r\n lightpink: { r: 255, g: 182, b: 193 },\r\n lightsalmon: { r: 255, g: 160, b: 122 },\r\n lightseagreen: { r: 32, g: 178, b: 170 },\r\n lightskyblue: { r: 135, g: 206, b: 250 },\r\n lightslategray: { r: 119, g: 136, b: 153 },\r\n lightslategrey: { r: 119, g: 136, b: 153 },\r\n lightsteelblue: { r: 176, g: 196, b: 222 },\r\n lightyellow: { r: 255, g: 255, b: 224 },\r\n lime: { r: 0, g: 255, b: 0 },\r\n limegreen: { r: 50, g: 205, b: 50 },\r\n linen: { r: 250, g: 240, b: 230 },\r\n magenta: { r: 255, g: 0, b: 255 },\r\n maroon: { r: 128, g: 0, b: 0 },\r\n mediumaquamarine: { r: 102, g: 205, b: 170 },\r\n mediumblue: { r: 0, g: 0, b: 205 },\r\n mediumorchid: { r: 186, g: 85, b: 211 },\r\n mediumpurple: { r: 147, g: 112, b: 219 },\r\n mediumseagreen: { r: 60, g: 179, b: 113 },\r\n mediumslateblue: { r: 123, g: 104, b: 238 },\r\n mediumspringgreen: { r: 0, g: 250, b: 154 },\r\n mediumturquoise: { r: 72, g: 209, b: 204 },\r\n mediumvioletred: { r: 199, g: 21, b: 133 },\r\n midnightblue: { r: 25, g: 25, b: 112 },\r\n mintcream: { r: 245, g: 255, b: 250 },\r\n mistyrose: { r: 255, g: 228, b: 225 },\r\n moccasin: { r: 255, g: 228, b: 181 },\r\n navajowhite: { r: 255, g: 222, b: 173 },\r\n navy: { r: 0, g: 0, b: 128 },\r\n oldlace: { r: 253, g: 245, b: 230 },\r\n olive: { r: 128, g: 128, b: 0 },\r\n olivedrab: { r: 107, g: 142, b: 35 },\r\n orange: { r: 255, g: 165, b: 0 },\r\n orangered: { r: 255, g: 69, b: 0 },\r\n orchid: { r: 218, g: 112, b: 214 },\r\n palegoldenrod: { r: 238, g: 232, b: 170 },\r\n palegreen: { r: 152, g: 251, b: 152 },\r\n paleturquoise: { r: 175, g: 238, b: 238 },\r\n palevioletred: { r: 219, g: 112, b: 147 },\r\n papayawhip: { r: 255, g: 239, b: 213 },\r\n peachpuff: { r: 255, g: 218, b: 185 },\r\n peru: { r: 205, g: 133, b: 63 },\r\n pink: { r: 255, g: 192, b: 203 },\r\n plum: { r: 221, g: 160, b: 221 },\r\n powderblue: { r: 176, g: 224, b: 230 },\r\n purple: { r: 128, g: 0, b: 128 },\r\n rebeccapurple: { r: 102, g: 51, b: 153 },\r\n red: { r: 255, g: 0, b: 0 },\r\n rosybrown: { r: 188, g: 143, b: 143 },\r\n royalblue: { r: 65, g: 105, b: 225 },\r\n saddlebrown: { r: 139, g: 69, b: 19 },\r\n salmon: { r: 250, g: 128, b: 114 },\r\n sandybrown: { r: 244, g: 164, b: 96 },\r\n seagreen: { r: 46, g: 139, b: 87 },\r\n seashell: { r: 255, g: 245, b: 238 },\r\n sienna: { r: 160, g: 82, b: 45 },\r\n silver: { r: 192, g: 192, b: 192 },\r\n skyblue: { r: 135, g: 206, b: 235 },\r\n slateblue: { r: 106, g: 90, b: 205 },\r\n slategray: { r: 112, g: 128, b: 144 },\r\n slategrey: { r: 112, g: 128, b: 144 },\r\n snow: { r: 255, g: 250, b: 250 },\r\n springgreen: { r: 0, g: 255, b: 127 },\r\n steelblue: { r: 70, g: 130, b: 180 },\r\n tan: { r: 210, g: 180, b: 140 },\r\n teal: { r: 0, g: 128, b: 128 },\r\n thistle: { r: 216, g: 191, b: 216 },\r\n tomato: { r: 255, g: 99, b: 71 },\r\n turquoise: { r: 64, g: 224, b: 208 },\r\n violet: { r: 238, g: 130, b: 238 },\r\n wheat: { r: 245, g: 222, b: 179 },\r\n white: { r: 255, g: 255, b: 255 },\r\n whitesmoke: { r: 245, g: 245, b: 245 },\r\n yellow: { r: 255, g: 255, b: 0 },\r\n yellowgreen: { r: 154, g: 205, b: 50 }\r\n};\r\n/**\r\n * Tries to resolve a named color into a hex color representation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Color name\r\n * @return Color\r\n * @deprecated\r\n * @hidden\r\n */\r\n/*export function resolveNamedColor(value: string): Color {\r\n return (<any>namedColors)[value] ? (<any>namedColors)[value] : undefined;\r\n}*/\r\n/**\r\n * Converts a proper color hex code (i.e. \"#FF5500\") or named color (i.e. \"red\")\r\n * into an {iRGB} object. If the code is not correctly formatted, an RGB of\r\n * black is returned.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Color code\r\n * @param alpha Alpha (0-1)\r\n * @return RGB\r\n */\r\nexport function rgb(color, alpha) {\r\n // Init return value\r\n var rgb;\r\n // Try resolving color format\r\n // Named color?\r\n if (namedColors[color]) {\r\n rgb = namedColors[color];\r\n }\r\n // Hex code?\r\n else if (color.charAt(0) === \"#\") {\r\n rgb = hexToRgb(color);\r\n }\r\n // rgb() format?\r\n else if (color.match(/^rgba?\\(/)) {\r\n rgb = rgbaToRgb(color);\r\n }\r\n // Was not able to resolve?\r\n if (!rgb) {\r\n rgb = { r: 0, g: 0, b: 0, a: 1 };\r\n }\r\n // Set alpha\r\n if ($type.hasValue(alpha)) {\r\n rgb.a = alpha;\r\n }\r\n return rgb;\r\n}\r\n/**\r\n * Converts a hex color code (i.e. \"#FF5500\") to an [[iRGB]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param hex Hex color code\r\n * @return RGB\r\n */\r\nexport function hexToRgb(hex) {\r\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\r\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n hex = hex.replace(shorthandRegex, function (m, r, g, b) {\r\n return r + r + g + g + b + b;\r\n });\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : hexToRgbWithAlpha(hex);\r\n}\r\n/**\r\n * Converts a hex color code with alpha (i.e. \"#FF5500128\") to an [[iRGB]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param hex Hex color code\r\n * @return RGB\r\n */\r\nexport function hexToRgbWithAlpha(hex) {\r\n // Expand shorthand form (e.g. \"03FA\") to full form (e.g. \"0033FFAA\")\r\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n hex = hex.replace(shorthandRegex, function (m, r, g, b, a) {\r\n return r + r + g + g + b + b + a + a;\r\n });\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n a: parseInt(result[4], 16) / 256\r\n } : undefined;\r\n}\r\n/**\r\n * Converts color strings in format like `rgb()` and `rgba()` to [[iRGB]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Color code\r\n * @return RGB\r\n */\r\nexport function rgbaToRgb(color) {\r\n color = color.replace(/[ ]/g, \"\");\r\n // Init\r\n var matches = color.match(/^rgb\\(([0-9]*),([0-9]*),([0-9]*)\\)/i);\r\n // Try rgb() format\r\n if (matches) {\r\n matches.push(\"1\");\r\n }\r\n else {\r\n matches = color.match(/^rgba\\(([0-9]*),([0-9]*),([0-9]*),([.0-9]*)\\)/i);\r\n if (!matches) {\r\n return;\r\n }\r\n }\r\n return {\r\n r: parseInt(matches[1]),\r\n g: parseInt(matches[2]),\r\n b: parseInt(matches[3]),\r\n a: parseFloat(matches[4])\r\n };\r\n}\r\n/**\r\n * Converts an [[iRGB]] object into a hex color code.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rgb RGB\r\n * @return Hex color code\r\n */\r\nexport function rgbToHex(rgb) {\r\n return \"#\" + pad2(rgb.r.toString(16)) + pad2(rgb.g.toString(16)) + pad2(rgb.b.toString(16));\r\n}\r\n/**\r\n * Converts an [[iRGB]] object into its `rgb()` or `rgba()` representation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rgb RGB\r\n * @return `rgba()` syntax\r\n */\r\nexport function rgbToRGBA(rgb) {\r\n if ($type.hasValue(rgb.a) && rgb.a !== 1) {\r\n return \"rgba(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \",\" + rgb.a + \")\";\r\n }\r\n else {\r\n return \"rgb(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \")\";\r\n }\r\n}\r\n/**\r\n * Pads a 1-digit string with a zero.\r\n *\r\n * @ignore Exclude from docs\r\n * @param c Input string\r\n * @return Padded string\r\n */\r\nexport function pad2(c) {\r\n return c.length == 1 ? \"0\" + c : \"\" + c;\r\n}\r\n/**\r\n * Returns an intermediate color between two colors based on the relative\r\n * position. Position needs to be in range between 0 and 1. Zero meaning the\r\n * resulting color will be closest to the first reference color.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color1 First reference color\r\n * @param color2 Second reference color\r\n * @param percent Relative position (0-1)\r\n * @return Interpolated color\r\n */\r\nexport function interpolate(rgb1, rgb2, percent) {\r\n percent = $math.fitToRange(percent, 0, 1);\r\n if (rgb1) {\r\n if (rgb2) {\r\n return {\r\n r: rgb1.r + Math.round((rgb2.r - rgb1.r) * percent),\r\n g: rgb1.g + Math.round((rgb2.g - rgb1.g) * percent),\r\n b: rgb1.b + Math.round((rgb2.b - rgb1.b) * percent),\r\n a: (rgb1.a || 1) + Math.round(((rgb2.a || 1) - (rgb1.a || 1)) * percent)\r\n };\r\n }\r\n else {\r\n return rgb1;\r\n }\r\n }\r\n else if (rgb2) {\r\n return rgb2;\r\n }\r\n else {\r\n return rgb1;\r\n }\r\n}\r\n/**\r\n * Returns a color that is `percent` brighter than the reference color.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Reference color\r\n * @param percent Brightness percent\r\n * @return Hex code of the new color\r\n */\r\nexport function lighten(rgb, percent) {\r\n if (rgb) {\r\n return {\r\n r: Math.max(0, Math.min(255, rgb.r + getLightnessStep(rgb.r, percent))),\r\n g: Math.max(0, Math.min(255, rgb.g + getLightnessStep(rgb.g, percent))),\r\n b: Math.max(0, Math.min(255, rgb.b + getLightnessStep(rgb.b, percent))),\r\n a: rgb.a\r\n };\r\n }\r\n else {\r\n // TODO is this correct ?\r\n return rgb;\r\n }\r\n}\r\n;\r\n/**\r\n * Gets lightness step.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\r\nexport function getLightnessStep(value, percent) {\r\n var base = percent > 0 ? 255 - value : value;\r\n return Math.round(base * percent);\r\n}\r\n/**\r\n * Returns a color that is `percent` brighter than the source `color`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Source color\r\n * @param percent Brightness percent\r\n * @return New color\r\n */\r\nexport function brighten(rgb, percent) {\r\n if (rgb) {\r\n var base = Math.min(Math.max(rgb.r, rgb.g, rgb.b), 230);\r\n //let base = Math.max(rgb.r, rgb.g, rgb.b);\r\n var step = getLightnessStep(base, percent);\r\n return {\r\n r: Math.max(0, Math.min(255, Math.round(rgb.r + step))),\r\n g: Math.max(0, Math.min(255, Math.round(rgb.g + step))),\r\n b: Math.max(0, Math.min(255, Math.round(rgb.b + step))),\r\n a: rgb.a\r\n };\r\n }\r\n else {\r\n // TODO is this correct ?\r\n return rgb;\r\n }\r\n}\r\n;\r\n/**\r\n * Returns brightness step.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\r\nexport function getBrightnessStep(value, percent) {\r\n var base = 255; //percent > 0 ? 255 - value : value;\r\n return Math.round(base * percent);\r\n}\r\n/**\r\n * Returns a new [[iRGB]] object based on `rgb` parameter with specific\r\n * saturation applied.\r\n *\r\n * `saturation` can be in the range of 0 (fully desaturated) to 1 (fully\r\n * saturated).\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Base color\r\n * @param saturation Saturation (0-1)\r\n * @return New color\r\n */\r\nexport function saturate(rgb, saturation) {\r\n if (rgb == null || saturation == 1) {\r\n return rgb;\r\n }\r\n var hsl = rgbToHsl(rgb);\r\n hsl.s = saturation;\r\n return hslToRgb(hsl);\r\n}\r\n/*\r\n// not used\r\nexport function rgbToMatrix(rgb: iRGB): string {\r\n let r = $type.toText($math.round((rgb.r || 0) / 255, 10));\r\n let g = $type.toText($math.round((rgb.g || 0) / 255, 10));\r\n let b = $type.toText($math.round((rgb.b || 0) / 255, 10));\r\n let a = $type.toText(rgb.a || 1);\r\n return\t r + \" 0 0 0 0\" +\r\n \" 0 \" + g + \" 0 0 0\" +\r\n \" 0 0 \" + b + \" 0 0\" +\r\n \" 0 0 0 \" + a + \" 0\";\r\n}\r\n*/\r\n/**\r\n * The functions below are taken and adapted from Garry Tan's blog post:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * The further attributions go mjijackson.com, which now seems to be defunct.\r\n */\r\n/**\r\n * Converts an HSL color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes h, s, and l are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @ignore Exclude from docs\r\n * @param h The hue\r\n * @param s The saturation\r\n * @param l The lightness\r\n * @return The RGB representation\r\n */\r\nexport function hslToRgb(color) {\r\n var r, g, b;\r\n var h = color.h;\r\n var s = color.s;\r\n var l = color.l;\r\n if (s == 0) {\r\n r = g = b = l; // achromatic\r\n }\r\n else {\r\n var hue2rgb = function hue2rgb(p, q, t) {\r\n if (t < 0) {\r\n t += 1;\r\n }\r\n if (t > 1) {\r\n t -= 1;\r\n }\r\n if (t < 1 / 6) {\r\n return p + (q - p) * 6 * t;\r\n }\r\n if (t < 1 / 2) {\r\n return q;\r\n }\r\n if (t < 2 / 3) {\r\n return p + (q - p) * (2 / 3 - t) * 6;\r\n }\r\n return p;\r\n };\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n return {\r\n r: Math.round(r * 255),\r\n g: Math.round(g * 255),\r\n b: Math.round(b * 255)\r\n };\r\n}\r\n/**\r\n * Converts an RGB color value to HSL. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h, s, and l in the set [0, 1].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @ignore Exclude from docs\r\n * @param r The red color value\r\n * @param g The green color value\r\n * @param b The blue color value\r\n * @return The HSL representation\r\n */\r\nexport function rgbToHsl(color) {\r\n var r = color.r / 255;\r\n var g = color.g / 255;\r\n var b = color.b / 255;\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var h = 0;\r\n var s = 0;\r\n var l = (max + min) / 2;\r\n if (max === min) {\r\n h = s = 0; // achromatic\r\n }\r\n else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n h /= 6;\r\n }\r\n return {\r\n h: h,\r\n s: s,\r\n l: l\r\n };\r\n}\r\n/**\r\n * Converts an RGB color value to HSV. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSV_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h, s, and v in the set [0, 1].\r\n *\r\n * @ignore Exclude from docs\r\n * @param Number r The red color value\r\n * @param Number g The green color value\r\n * @param Number b The blue color value\r\n * @return Array The HSV representation\r\n */\r\nexport function rgbToHsv(color) {\r\n var r = color.r / 255;\r\n var g = color.g / 255;\r\n var b = color.b / 255;\r\n var max = Math.max(r, g, b), min = Math.min(r, g, b);\r\n var h = 0;\r\n var s = 0;\r\n var v = max;\r\n var d = max - min;\r\n s = max == 0 ? 0 : d / max;\r\n if (max == min) {\r\n h = 0; // achromatic\r\n }\r\n else {\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n h /= 6;\r\n }\r\n return {\r\n h: h,\r\n s: s,\r\n v: v\r\n };\r\n}\r\n/**\r\n * Converts an HSV color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSV_color_space.\r\n * Assumes h, s, and v are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n *\r\n * @ignore Exclude from docs\r\n * @param Number h The hue\r\n * @param Number s The saturation\r\n * @param Number v The value\r\n * @return Array The RGB representation\r\n */\r\nexport function hsvToRgb(color) {\r\n var r = 0;\r\n var g = 0;\r\n var b = 0;\r\n var h = color.h;\r\n var s = color.s;\r\n var v = color.v;\r\n var i = Math.floor(h * 6);\r\n var f = h * 6 - i;\r\n var p = v * (1 - s);\r\n var q = v * (1 - f * s);\r\n var t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0:\r\n r = v;\r\n g = t;\r\n b = p;\r\n break;\r\n case 1:\r\n r = q;\r\n g = v;\r\n b = p;\r\n break;\r\n case 2:\r\n r = p;\r\n g = v;\r\n b = t;\r\n break;\r\n case 3:\r\n r = p;\r\n g = q;\r\n b = v;\r\n break;\r\n case 4:\r\n r = t;\r\n g = p;\r\n b = v;\r\n break;\r\n case 5:\r\n r = v;\r\n g = p;\r\n b = q;\r\n break;\r\n }\r\n return {\r\n r: Math.round(r * 255),\r\n g: Math.round(g * 255),\r\n b: Math.round(b * 255)\r\n };\r\n}\r\n/**\r\n * Returns `true` if color is \"light\". Useful indetermining which contrasting\r\n * color to use for elements over this color. E.g.: you would want to use\r\n * black text over light background, and vice versa.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Source color\r\n * @return Light?\r\n */\r\nexport function isLight(color) {\r\n return ((color.r * 299) + (color.g * 587) + (color.b * 114)) / 1000 >= 128;\r\n}\r\n","/**\r\n * A collection of DOM-related functions.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Disposer } from \"./Disposer\";\r\nimport { readFrame, writeFrame } from \"./AsyncPending\";\r\nimport { options } from \"../Options\";\r\nimport * as $object from \"./Object\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * SVG namespace.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var SVGNS = \"http://www.w3.org/2000/svg\";\r\n/**\r\n * XML namespace.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var XMLNS = \"http://www.w3.org/2000/xmlns/\";\r\n/**\r\n * XLINK namespace.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var XLINK = \"http://www.w3.org/1999/xlink\";\r\n/**\r\n * Function that adds a disposable event listener directly to a DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dom A DOM element to add event to\r\n * @param type Event type\r\n * @param listener Event listener\r\n * @returns Disposable event\r\n */\r\nexport function addEventListener(dom, type, listener, options) {\r\n //@todo proper type check for options: EventListenerOptions | boolean (TS for some reason gives error on passive parameter)\r\n //console.log(type, dom);\r\n dom.addEventListener(type, listener, options || false);\r\n return new Disposer(function () {\r\n dom.removeEventListener(type, listener, options || false);\r\n });\r\n}\r\n/**\r\n * Finds and returns an element reference using following logic:\r\n * * If we pass in an element instance, we just return it back.\r\n * * If we pass in a string, the function looks for an element with such id.\r\n * * If no element with such id is found, we grab the first element with a tag name like this.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el Element definition (reference, or id, or tag name)\r\n * @return Element reference\r\n * @todo Review this function as it seems pretty fuzzy and hacky\r\n */\r\nexport function getElement(el) {\r\n if ($type.isString(el)) {\r\n var e = document.getElementById(el);\r\n if (e == null) {\r\n e = document.getElementsByClassName(el)[0];\r\n }\r\n if (e instanceof HTMLElement) {\r\n return e;\r\n }\r\n }\r\n else if (el instanceof HTMLElement) {\r\n return el;\r\n }\r\n}\r\n/**\r\n * Adds a class name to an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\r\nexport function addClass(element, className) {\r\n if (!element) {\r\n return;\r\n }\r\n if (element.classList) {\r\n var classes = className.split(\" \");\r\n $array.each(classes, function (name) {\r\n element.classList.add(name);\r\n });\r\n }\r\n else {\r\n var currentClassName = element.getAttribute(\"class\");\r\n if (currentClassName) {\r\n element.setAttribute(\"class\", currentClassName.split(\" \").filter(function (item) {\r\n return item !== className;\r\n }).join(\" \") + \" \" + className);\r\n }\r\n else {\r\n element.setAttribute(\"class\", className);\r\n }\r\n //element.className = element.className.replace(new RegExp(\"^\" + className + \"| \" + className), \"\") + \" \" + className;\r\n }\r\n}\r\n/**\r\n * Removes a class name from an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\r\nexport function removeClass(element, className) {\r\n if (!element) {\r\n return;\r\n }\r\n if (element.classList) {\r\n element.classList.remove(className);\r\n }\r\n else {\r\n var currentClassName = element.getAttribute(\"class\");\r\n if (currentClassName) {\r\n element.setAttribute(\"class\", currentClassName.split(\" \").filter(function (item) {\r\n return item !== className;\r\n }).join(\" \"));\r\n }\r\n //element.className = element.className.replace(new RegExp(\"^\" + className + \"| \" + className), \"\");\r\n }\r\n}\r\n/**\r\n * Sets style property on DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Still needed?\r\n */\r\nexport function setStyle(element, property, value) {\r\n element.style[property] = value;\r\n}\r\n/**\r\n * Gets the computed style value for an element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function getComputedStyle(element, property) {\r\n if (element.currentStyle) {\r\n return element.currentStyle[property];\r\n }\r\n return document.defaultView.getComputedStyle(element, null).getPropertyValue(property);\r\n}\r\n/**\r\n * Removes focus from any element by shifting focus to body.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function blur() {\r\n if (document.activeElement && document.activeElement != document.body) {\r\n if (document.activeElement.blur) {\r\n document.activeElement.blur();\r\n }\r\n else {\r\n var input = document.createElement(\"button\");\r\n input.style.position = \"fixed\";\r\n input.style.top = \"0px\";\r\n input.style.left = \"-10000px\";\r\n document.body.appendChild(input);\r\n input.focus();\r\n input.blur();\r\n document.body.removeChild(input);\r\n }\r\n }\r\n}\r\n/**\r\n * Tries to focus the element.\r\n *\r\n * @ignore Exlude from docs\r\n * @param element Element to focus\r\n */\r\nexport function focus(element) {\r\n if (element instanceof HTMLElement) {\r\n element.focus();\r\n }\r\n else {\r\n var input = document.createElement(\"input\");\r\n var fo = document.createElementNS(SVGNS, \"foreignObject\");\r\n fo.appendChild(input);\r\n element.appendChild(fo);\r\n input.focus();\r\n input.disabled = true;\r\n fo.remove();\r\n }\r\n /*if ((<any>element).focus != undefined) {\r\n (<any>element).focus();\r\n }\r\n else if (element instanceof SVGSVGElement) {\r\n // Not implemented\r\n // @todo implement focus fallback\r\n }*/\r\n}\r\n/**\r\n * Returns markup for the element including the element tag itself.\r\n * SVG elements do not support `outerHTML` so this functions applies of\r\n * a workaround which creates a new temporary wrapper, clones element and uses\r\n * wrapper's `innerHTML`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element to get full markup for\r\n * @return Markup\r\n * @deprecated Not in use anywhere\r\n */\r\nexport function outerHTML(element) {\r\n if (element.outerHTML) {\r\n return element.outerHTML;\r\n }\r\n else {\r\n var twrap = document.createElement(\"div\");\r\n var tnode = element.cloneNode(true);\r\n twrap.appendChild(tnode);\r\n var content = twrap.innerHTML;\r\n return content;\r\n }\r\n}\r\n/**\r\n * Checks if element is a valid DOM node.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el Element\r\n * @return `true` if element is a valid DOM node\r\n */\r\nexport function isElement(el) {\r\n return el instanceof Object && el && el.nodeType === 1;\r\n}\r\n/**\r\n * Checks of element `a` contains element `b`.\r\n *\r\n * @param a Aleged ascendant\r\n * @param b Aleged descendant\r\n * @return Contains?\r\n */\r\nexport function contains(a, b) {\r\n var cursor = b;\r\n while (true) {\r\n if (a === cursor) {\r\n return true;\r\n }\r\n else if (cursor.parentNode == null) {\r\n // TODO better ShadowRoot detection\r\n if (cursor.host == null) {\r\n return false;\r\n }\r\n else {\r\n cursor = cursor.host;\r\n }\r\n }\r\n else {\r\n cursor = cursor.parentNode;\r\n }\r\n }\r\n}\r\n/**\r\n * Returns the shadow root of the element or null\r\n *\r\n * @param a Node\r\n * @return Root\r\n */\r\nexport function getShadowRoot(a) {\r\n var cursor = a;\r\n while (true) {\r\n if (cursor.parentNode == null) {\r\n // TODO better ShadowRoot detection\r\n if (cursor.host != null) {\r\n return cursor;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n cursor = cursor.parentNode;\r\n }\r\n }\r\n}\r\n/**\r\n * Returns the root of the element (either the Document or the ShadowRoot)\r\n *\r\n * @param a Node\r\n * @return Root\r\n */\r\nexport function getRoot(a) {\r\n // TODO replace with Node.prototype.getRootNode\r\n var owner = a.ownerDocument;\r\n var cursor = a;\r\n while (true) {\r\n if (cursor.parentNode == null) {\r\n // If the cursor is the document, or it is a ShadowRoot\r\n // TODO better ShadowRoot detection\r\n if (cursor === owner || cursor.host != null) {\r\n return cursor;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n cursor = cursor.parentNode;\r\n }\r\n }\r\n}\r\n/**\r\n * Gets the true target of the Event.\r\n *\r\n * This is needed to make events work with the shadow DOM.\r\n *\r\n * @param event Event\r\n * @return EventTarget\r\n */\r\nexport function eventTarget(event) {\r\n if (typeof event.composedPath === \"function\") {\r\n return event.composedPath()[0];\r\n }\r\n else {\r\n return event.target;\r\n }\r\n}\r\n/**\r\n * Copies attributes from one element to another.\r\n *\r\n * @ignore Exclude from docs\r\n * @param source Element to copy attributes from\r\n * @param target Element to copy attributes to\r\n */\r\nexport function copyAttributes(source, target) {\r\n $array.each(source.attributes, function (attr) {\r\n // TODO what if it's null ?\r\n if (attr.value != null) {\r\n target.setAttribute(attr.name, attr.value);\r\n }\r\n });\r\n}\r\n/**\r\n * [fixPixelPerfect description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param el Element\r\n */\r\nexport function fixPixelPerfect(el) {\r\n readFrame(function () {\r\n // sometimes IE doesn't like this\r\n // TODO figure out a way to remove this\r\n try {\r\n var rect = el.getBoundingClientRect();\r\n var left_1 = rect.left - Math.round(rect.left);\r\n var top_1 = rect.top - Math.round(rect.top);\r\n if (left_1 !== 0) {\r\n writeFrame(function () {\r\n el.style.left = left_1 + \"px\";\r\n });\r\n }\r\n if (top_1 !== 0) {\r\n writeFrame(function () {\r\n el.style.top = top_1 + \"px\";\r\n });\r\n }\r\n }\r\n catch (e) { }\r\n });\r\n}\r\n/**\r\n * [rootStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar rootStylesheet;\r\n/**\r\n * [getStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\nfunction getStylesheet(element) {\r\n if (element == null) {\r\n if (!$type.hasValue(rootStylesheet)) {\r\n // TODO use createElementNS ?\r\n var e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n if (options.nonce != \"\") {\r\n e.setAttribute(\"nonce\", options.nonce);\r\n }\r\n document.head.appendChild(e);\r\n rootStylesheet = e.sheet;\r\n }\r\n return rootStylesheet;\r\n }\r\n else {\r\n // TODO use createElementNS ?\r\n var e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n if (options.nonce != \"\") {\r\n e.setAttribute(\"nonce\", options.nonce);\r\n }\r\n element.appendChild(e);\r\n return e.sheet;\r\n }\r\n}\r\n/**\r\n * [makeStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param selector [description]\r\n * @return [description]\r\n */\r\nfunction appendStylesheet(root, selector) {\r\n var index = root.cssRules.length;\r\n root.insertRule(selector + \"{}\", index);\r\n return root.cssRules[index];\r\n}\r\n/**\r\n * Defines a class for a CSS rule.\r\n *\r\n * Can be used to dynamically add CSS to the document.\r\n */\r\nvar StyleRule = /** @class */ (function (_super) {\r\n __extends(StyleRule, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param selector CSS selector\r\n * @param styles An object of style attribute - value pairs\r\n */\r\n function StyleRule(element, selector, styles) {\r\n var _this = this;\r\n var root = getStylesheet(element);\r\n // TODO test this\r\n _this = _super.call(this, function () {\r\n // TODO a bit hacky\r\n var index = $array.indexOf(root.cssRules, _this._rule);\r\n if (index === -1) {\r\n throw new Error(\"Could not dispose StyleRule\");\r\n }\r\n else {\r\n // TODO if it's empty remove it from the DOM ?\r\n root.deleteRule(index);\r\n }\r\n }) || this;\r\n _this._rule = appendStylesheet(root, selector);\r\n $object.each(styles, function (key, value) {\r\n _this.setStyle(key, value);\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(StyleRule.prototype, \"selector\", {\r\n /**\r\n * @return CSS selector\r\n */\r\n get: function () {\r\n return this._rule.selectorText;\r\n },\r\n /**\r\n * A CSS selector text.\r\n *\r\n * E.g.: `.myClass p`\r\n *\r\n * @param selector CSS selector\r\n */\r\n set: function (selector) {\r\n this._rule.selectorText = selector;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets the same style properties with browser-specific prefixes.\r\n *\r\n * @param name Attribute name\r\n * @param value Attribute value\r\n */\r\n StyleRule.prototype._setVendorPrefixName = function (name, value) {\r\n var style = this._rule.style;\r\n style.setProperty(\"-webkit-\" + name, value, \"\");\r\n style.setProperty(\"-moz-\" + name, value, \"\");\r\n style.setProperty(\"-ms-\" + name, value, \"\");\r\n style.setProperty(\"-o-\" + name, value, \"\");\r\n style.setProperty(name, value, \"\");\r\n };\r\n /**\r\n * Sets a value for specific style attribute.\r\n *\r\n * @param name Attribute\r\n * @param value Value\r\n */\r\n StyleRule.prototype.setStyle = function (name, value) {\r\n if (name === \"transition\") {\r\n this._setVendorPrefixName(name, value);\r\n }\r\n else {\r\n this._rule.style.setProperty(name, value, \"\");\r\n }\r\n };\r\n return StyleRule;\r\n}(Disposer));\r\nexport { StyleRule };\r\n/**\r\n * An internal counter for unique style ids.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar styleId = 0;\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar StyleClass = /** @class */ (function (_super) {\r\n __extends(StyleClass, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param styles An object of style attribute - value pairs\r\n * @param name Class name\r\n */\r\n function StyleClass(element, styles, name) {\r\n var _this = this;\r\n var className = (!$type.hasValue(name)\r\n // TODO generate the classname randomly\r\n ? \"__style_\" + (++styleId) + \"__\"\r\n : name);\r\n _this = _super.call(this, element, \".\" + className, styles) || this;\r\n _this._className = className;\r\n return _this;\r\n }\r\n Object.defineProperty(StyleClass.prototype, \"className\", {\r\n /**\r\n * @return Class name\r\n */\r\n get: function () {\r\n return this._className;\r\n },\r\n /**\r\n * Class name.\r\n *\r\n * @param name Class name\r\n */\r\n set: function (name) {\r\n this._className = name;\r\n this.selector = \".\" + name;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts the whole class to\r\n * @ignore Exclude from docs\r\n */\r\n StyleClass.prototype.toString = function () {\r\n return this._className;\r\n };\r\n return StyleClass;\r\n}(StyleRule));\r\nexport { StyleClass };\r\nexport function ready(f) {\r\n if (document.readyState !== \"loading\") {\r\n f();\r\n }\r\n else {\r\n var listener_1 = function () {\r\n if (document.readyState !== \"loading\") {\r\n document.removeEventListener(\"readystatechange\", listener_1);\r\n f();\r\n }\r\n };\r\n document.addEventListener(\"readystatechange\", listener_1);\r\n }\r\n}\r\n/**\r\n * Returns a font fmaily name for the element (directly set or\r\n * computed/inherited).\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Font family\r\n */\r\nexport function findFont(element) {\r\n // Check if element has styles set\r\n var font = getComputedStyle(element, \"font-family\");\r\n if (!font) {\r\n // Completely transparent. Look for a parent\r\n var parent_1 = element.parentElement || element.parentNode;\r\n if (parent_1) {\r\n return findFont(parent_1);\r\n }\r\n else {\r\n return undefined;\r\n }\r\n }\r\n else {\r\n return font;\r\n }\r\n}\r\n/**\r\n * Returns a font fmaily name for the element (directly set or\r\n * computed/inherited).\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Font family\r\n */\r\nexport function findFontSize(element) {\r\n // Check if element has styles set\r\n var font = getComputedStyle(element, \"font-size\");\r\n if (!font) {\r\n // Completely transparent. Look for a parent\r\n var parent_2 = element.parentElement || element.parentNode;\r\n if (parent_2) {\r\n return findFontSize(parent_2);\r\n }\r\n else {\r\n return undefined;\r\n }\r\n }\r\n else {\r\n return font;\r\n }\r\n}\r\n/**\r\n * Checks whether element is not visible, whether directly or via its\r\n * ascendants.\r\n *\r\n * @param element Target element\r\n * @return Hidden?\r\n */\r\nexport function isHidden(element) {\r\n return (element.offsetParent === null);\r\n}\r\n/**\r\n * Checks wthether element is in the current viewport.\r\n *\r\n * @since 2.5.5\r\n * @param el Element\r\n * @return Within viewport?\r\n */\r\nexport function isElementInViewport(el, viewportTarget) {\r\n // Get position data of the element\r\n var rect = el.getBoundingClientRect();\r\n // Convert to array\r\n var targets = $type.isArray(viewportTarget) ? viewportTarget : viewportTarget ? [viewportTarget] : [];\r\n // Should we measure against specific viewport element?\r\n if (targets.length) {\r\n for (var i = 0; i < targets.length; i++) {\r\n var target = targets[i];\r\n // Check if viewport itself is visible\r\n if (!isElementInViewport(target)) {\r\n return false;\r\n }\r\n // Check if element is visible within the viewport\r\n var viewportRect = target.getBoundingClientRect();\r\n if (rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.top <= (viewportRect.top + viewportRect.height) &&\r\n rect.left <= (viewportRect.left + viewportRect.width)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n return (rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.top <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n rect.left <= (window.innerWidth || document.documentElement.clientWidth));\r\n}\r\n","import { __extends, __generator, __read } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Disposer } from \"./Disposer\";\r\nimport { EventDispatcher } from \"./EventDispatcher\";\r\nimport * as $object from \"./Object\";\r\nimport * as $iter from \"./Iterator\";\r\nimport * as $string from \"./String\";\r\n/**\r\n * A disposable dictionary, which when disposed itself will call `dispose()`\r\n * method on all its items.\r\n */\r\nvar DictionaryDisposer = /** @class */ (function (_super) {\r\n __extends(DictionaryDisposer, _super);\r\n function DictionaryDisposer(dict) {\r\n var _this = this;\r\n var disposer = dict.events.on(\"removed\", function (x) {\r\n x.oldValue.dispose();\r\n }, undefined, false);\r\n _this = _super.call(this, function () {\r\n disposer.dispose();\r\n // TODO clear the dictionary ?\r\n $iter.each(dict.iterator(), function (a) {\r\n var v = a[1];\r\n v.dispose();\r\n });\r\n }) || this;\r\n return _this;\r\n }\r\n return DictionaryDisposer;\r\n}(Disposer));\r\nexport { DictionaryDisposer };\r\n/**\r\n * A Dictionary is collection where values of some type can be mapped to\r\n * string keys.\r\n *\r\n * You might call it an \"associative list\" or \"associative array\".\r\n */\r\nvar Dictionary = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n */\r\n function Dictionary() {\r\n /**\r\n * Event dispatcher.\r\n */\r\n this.events = new EventDispatcher();\r\n this._dictionary = {};\r\n }\r\n /**\r\n * Returns `true` if key exists in Dictionary.\r\n *\r\n * @param key The key to search for\r\n * @return `true` if key exists, `false` if it doesn't\r\n */\r\n Dictionary.prototype.hasKey = function (key) {\r\n return $object.hasKey(this._dictionary, key);\r\n };\r\n /**\r\n * Returns the value for a specific key.\r\n *\r\n * @param key The key to search for\r\n * @return Value for the key, or `undefined` if it doesn't exist\r\n */\r\n Dictionary.prototype.getKey = function (key) {\r\n return this._dictionary[key];\r\n };\r\n /**\r\n * Inserts value at specific key.\r\n *\r\n * Will thrown an exception if the key already exists in the dictionary.\r\n *\r\n * @param key Key\r\n * @param value Value\r\n */\r\n Dictionary.prototype.insertKey = function (key, value) {\r\n if ($object.hasKey(this._dictionary, key)) {\r\n throw new Error(\"Key \" + key + \" already exists in dictionary\");\r\n }\r\n else {\r\n this._dictionary[key] = value;\r\n if (this.events.isEnabled(\"insertKey\")) {\r\n this.events.dispatchImmediately(\"insertKey\", {\r\n type: \"insertKey\",\r\n target: this,\r\n key: key,\r\n newValue: value\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Adds or updates key/value into dictionary.\r\n *\r\n * If the key already exists, the old value will be overwritten.\r\n *\r\n * If the new value is exactly the same as the old value (using ===), it won't do anything.\r\n *\r\n * @param key Key\r\n * @param value Value\r\n */\r\n Dictionary.prototype.setKey = function (key, value) {\r\n if ($object.hasKey(this._dictionary, key)) {\r\n var oldValue = this._dictionary[key];\r\n if (oldValue !== value) {\r\n this._dictionary[key] = value;\r\n if (this.events.isEnabled(\"setKey\")) {\r\n this.events.dispatchImmediately(\"setKey\", {\r\n type: \"setKey\",\r\n target: this,\r\n key: key,\r\n oldValue: oldValue,\r\n newValue: value\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n oldValue: oldValue\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n this._dictionary[key] = value;\r\n if (this.events.isEnabled(\"insertKey\")) {\r\n this.events.dispatchImmediately(\"insertKey\", {\r\n type: \"insertKey\",\r\n target: this,\r\n key: key,\r\n newValue: value\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Updates the value at specific `key` using custom function.\r\n *\r\n * Passes in current value into the function, and uses its output as a new\r\n * value.\r\n *\r\n * If the new value is exactly the same as the old value (using ===), it won't do anything.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param fn Function to transform the value\r\n */\r\n Dictionary.prototype.updateKey = function (key, fn) {\r\n if ($object.hasKey(this._dictionary, key)) {\r\n var oldValue = this._dictionary[key];\r\n var newValue = fn(oldValue);\r\n if (oldValue !== newValue) {\r\n this._dictionary[key] = newValue;\r\n if (this.events.isEnabled(\"setKey\")) {\r\n this.events.dispatchImmediately(\"setKey\", {\r\n type: \"setKey\",\r\n target: this,\r\n key: key,\r\n oldValue: oldValue,\r\n newValue: newValue\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n oldValue: oldValue\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n throw new Error(\"Key \" + key + \" doesn't exist in dictionary\");\r\n }\r\n };\r\n /**\r\n * Removes value at specific `key` from dictionary.\r\n *\r\n * @param key Key to remove\r\n */\r\n Dictionary.prototype.removeKey = function (key) {\r\n if ($object.hasKey(this._dictionary, key)) {\r\n var oldValue = this._dictionary[key];\r\n delete this._dictionary[key];\r\n if (this.events.isEnabled(\"removeKey\")) {\r\n this.events.dispatchImmediately(\"removeKey\", {\r\n type: \"removeKey\",\r\n target: this,\r\n key: key,\r\n oldValue: oldValue\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n oldValue: oldValue\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * [insertKeyIfEmpty description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo description\r\n * @param key [description]\r\n * @param ifEmpty [description]\r\n * @return [description]\r\n */\r\n Dictionary.prototype.insertKeyIfEmpty = function (key, ifEmpty) {\r\n if (!this.hasKey(key)) {\r\n this.insertKey(key, ifEmpty());\r\n }\r\n return this.getKey(key);\r\n };\r\n /**\r\n * Removes all items from the dictionary.\r\n */\r\n Dictionary.prototype.clear = function () {\r\n var _this = this;\r\n // TODO dispatch this after clear\r\n if (this.events.isEnabled(\"removed\")) {\r\n $object.each(this._dictionary, function (key, value) {\r\n _this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: _this,\r\n oldValue: value\r\n });\r\n });\r\n }\r\n this._dictionary = {};\r\n if (this.events.isEnabled(\"cleared\")) {\r\n this.events.dispatchImmediately(\"cleared\", {\r\n type: \"cleared\",\r\n target: this\r\n });\r\n }\r\n };\r\n /**\r\n * Copies items from another Dictionary.\r\n *\r\n * @param source A Dictionary to copy items from\r\n */\r\n Dictionary.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source.iterator(), function (a) {\r\n // TODO fix this type cast\r\n _this.setKey(a[0], a[1]);\r\n });\r\n };\r\n /**\r\n * Returns an interator that can be used to iterate through all items in\r\n * the dictionary.\r\n *\r\n * @return Iterator\r\n */\r\n Dictionary.prototype.iterator = function () {\r\n // @todo fix this type after the Iterator bug is fixed\r\n // https://github.com/Microsoft/TypeScript/issues/16730\r\n return $object.entries(this._dictionary);\r\n };\r\n /**\r\n * Returns an ES6 iterator for the keys/values of the dictionary.\r\n */\r\n Dictionary.prototype[Symbol.iterator] = function () {\r\n var _a, _b, _i, key;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _a = [];\r\n for (_b in this._dictionary)\r\n _a.push(_b);\r\n _i = 0;\r\n _c.label = 1;\r\n case 1:\r\n if (!(_i < _a.length)) return [3 /*break*/, 4];\r\n key = _a[_i];\r\n if (!$object.hasKey(this._dictionary, key)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, [key, this._dictionary[key]]];\r\n case 2:\r\n _c.sent();\r\n _c.label = 3;\r\n case 3:\r\n _i++;\r\n return [3 /*break*/, 1];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n /**\r\n * Calls `f` for each key/value in the dictionary.\r\n */\r\n Dictionary.prototype.each = function (f) {\r\n $iter.each(this.iterator(), function (_a) {\r\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\r\n return f(key, value);\r\n });\r\n };\r\n /**\r\n * Returns an iterator that can be used to iterate through all items in\r\n * the dictionary, ordered by key.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Iterator\r\n */\r\n Dictionary.prototype.sortedIterator = function () {\r\n return $iter.sort(this.iterator(), function (x, y) { return $string.order(x[0], y[0]); });\r\n };\r\n return Dictionary;\r\n}());\r\nexport { Dictionary };\r\n/**\r\n * A version of a [[Dictionary]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nvar DictionaryTemplate = /** @class */ (function (_super) {\r\n __extends(DictionaryTemplate, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n */\r\n function DictionaryTemplate(t) {\r\n var _this = _super.call(this) || this;\r\n _this.template = t;\r\n return _this;\r\n }\r\n Object.defineProperty(DictionaryTemplate.prototype, \"template\", {\r\n /**\r\n * @return Template object\r\n */\r\n get: function () {\r\n return this._template;\r\n },\r\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\r\n set: function (v) {\r\n v.isTemplate = true;\r\n this._template = v;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all elements from other dictionary.\r\n *\r\n * @param source Source dictionary\r\n */\r\n DictionaryTemplate.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source.iterator(), function (a) {\r\n // TODO fix this type cast\r\n // TODO why does this need to clone ?\r\n _this.setKey(a[0], a[1].clone());\r\n });\r\n };\r\n /**\r\n * Instantiates a new object of the specified type, adds it to specified\r\n * `key` in the dictionary, and returns it.\r\n *\r\n * @param make Item type to use. Will use the default type for the dictionary if not specified.\r\n * @return Newly created item\r\n */\r\n DictionaryTemplate.prototype.create = function (key) {\r\n var _this = this;\r\n return this.insertKeyIfEmpty(key, function () { return _this.template.clone(); });\r\n };\r\n return DictionaryTemplate;\r\n}(Dictionary));\r\nexport { DictionaryTemplate };\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * A base class for disposable objects.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar Disposer = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param dispose Function that disposes object\r\n */\r\n function Disposer(dispose) {\r\n this._disposed = false;\r\n this._dispose = dispose;\r\n }\r\n /**\r\n * Checks if object is disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n Disposer.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Disposes the object.\r\n */\r\n Disposer.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._dispose();\r\n }\r\n };\r\n return Disposer;\r\n}());\r\nexport { Disposer };\r\n/**\r\n * A collection of related disposers that can be disposed in one go.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar MultiDisposer = /** @class */ (function (_super) {\r\n __extends(MultiDisposer, _super);\r\n function MultiDisposer(disposers) {\r\n return _super.call(this, function () {\r\n $array.each(disposers, function (x) {\r\n x.dispose();\r\n });\r\n }) || this;\r\n }\r\n return MultiDisposer;\r\n}(Disposer));\r\nexport { MultiDisposer };\r\n/**\r\n * A special kind of Disposer that has attached value set.\r\n *\r\n * If a new value is set using `set()` method, the old disposer value is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar MutableValueDisposer = /** @class */ (function (_super) {\r\n __extends(MutableValueDisposer, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function MutableValueDisposer() {\r\n var _this = _super.call(this, function () {\r\n if ($type.hasValue(_this._disposer)) {\r\n _this._disposer.dispose();\r\n _this._disposer = undefined;\r\n }\r\n }) || this;\r\n return _this;\r\n }\r\n /**\r\n * Returns current value.\r\n *\r\n * @return Value\r\n */\r\n MutableValueDisposer.prototype.get = function () {\r\n return this._value;\r\n };\r\n /**\r\n * Sets value and disposes previous disposer if it was set.\r\n *\r\n * @param value New value\r\n * @param disposer Disposer\r\n */\r\n MutableValueDisposer.prototype.set = function (value, disposer) {\r\n if ($type.hasValue(this._disposer)) {\r\n this._disposer.dispose();\r\n }\r\n this._disposer = disposer;\r\n this._value = value;\r\n };\r\n /**\r\n * Resets the disposer value.\r\n */\r\n MutableValueDisposer.prototype.reset = function () {\r\n this.set(undefined, undefined);\r\n };\r\n return MutableValueDisposer;\r\n}(Disposer));\r\nexport { MutableValueDisposer };\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar CounterDisposer = /** @class */ (function (_super) {\r\n __extends(CounterDisposer, _super);\r\n function CounterDisposer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * [_counter description]\r\n *\r\n * @todo Description\r\n */\r\n _this._counter = 0;\r\n return _this;\r\n }\r\n /**\r\n * [increment description]\r\n *\r\n * @todo Description\r\n */\r\n CounterDisposer.prototype.increment = function () {\r\n var _this = this;\r\n // TODO throw an error if it is disposed\r\n ++this._counter;\r\n // TODO make this more efficient\r\n return new Disposer(function () {\r\n --_this._counter;\r\n if (_this._counter === 0) {\r\n _this.dispose();\r\n }\r\n });\r\n };\r\n return CounterDisposer;\r\n}(Disposer));\r\nexport { CounterDisposer };\r\n","/**\r\n * A collection of easing functions\r\n *\r\n * Parts of this collection are taken from D3.js library (https://d3js.org/)\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $math from \"../utils/Math\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * ----------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ----------------------------------------------------------------------------\r\n * @hidden\r\n */\r\n/**\r\n * ============================================================================\r\n * LINEAR FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Easing function: \"linear\".\r\n */\r\nexport function linear(t) {\r\n return +t;\r\n}\r\nregistry.registeredClasses[\"ease.linear\"] = linear;\r\n/**\r\n * Easing function: \"quadIn\".\r\n */\r\nexport function quadIn(t) {\r\n return t * t;\r\n}\r\nregistry.registeredClasses[\"ease.quadIn\"] = quadIn;\r\n/**\r\n * Easing function: \"quadOut\".\r\n */\r\nexport function quadOut(t) {\r\n return t * (2 - t);\r\n}\r\nregistry.registeredClasses[\"ease.quadOut\"] = quadOut;\r\n/**\r\n * Easing function: \"quadInOut\".\r\n */\r\nexport function quadInOut(t) {\r\n t *= 2;\r\n return (t <= 1 ? t * t : --t * (2 - t) + 1) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.quadInOut\"] = quadInOut;\r\n/**\r\n * Easing function: \"polyIn\".\r\n */\r\nexport function polyIn(t, e) {\r\n return Math.pow(t, e);\r\n}\r\nregistry.registeredClasses[\"ease.polyIn\"] = polyIn;\r\n/**\r\n * Easing function: \"polyOut\".\r\n */\r\nexport function polyOut(t, e) {\r\n return 1 - Math.pow(1 - t, e);\r\n}\r\nregistry.registeredClasses[\"ease.polyOut\"] = polyOut;\r\n/**\r\n * Easing function: \"polyInOut\".\r\n */\r\nexport function polyInOut(t, e) {\r\n t *= 2;\r\n return (t <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.polyInOut\"] = polyInOut;\r\n/**\r\n * Easing function: \"polyIn3\".\r\n */\r\nexport function polyIn3(t) {\r\n return polyIn(t, 3);\r\n}\r\nregistry.registeredClasses[\"ease.polyIn3\"] = polyIn3;\r\n/**\r\n * Easing function: \"polyOut3\".\r\n */\r\nexport function polyOut3(t) {\r\n return polyOut(t, 3);\r\n}\r\nregistry.registeredClasses[\"ease.polyOut3\"] = polyOut3;\r\n/**\r\n * Easing function: \"polyInOut3\".\r\n */\r\nexport function polyInOut3(t) {\r\n return polyInOut(t, 3);\r\n}\r\nregistry.registeredClasses[\"ease.polyInOut3\"] = polyInOut3;\r\n/**\r\n * ============================================================================\r\n * EXPONENTIAL FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Easing function: \"expIn\".\r\n */\r\nexport function expIn(t) {\r\n return Math.pow(2, 10 * t - 10);\r\n}\r\nregistry.registeredClasses[\"ease.expIn\"] = expIn;\r\n/**\r\n * Easing function: \"expOut\".\r\n */\r\nexport function expOut(t) {\r\n return 1 - Math.pow(2, -10 * t);\r\n}\r\nregistry.registeredClasses[\"ease.expOut\"] = expOut;\r\n/**\r\n * Easing function: \"expInOut\".\r\n */\r\nexport function expInOut(t) {\r\n t *= 2;\r\n return (t <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.expInOut\"] = expInOut;\r\n/**\r\n * ============================================================================\r\n * SINE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Easing function: \"sinIn\".\r\n */\r\nexport function sinIn(t) {\r\n return 1 - Math.cos(t * $math.HALFPI);\r\n}\r\nregistry.registeredClasses[\"ease.sinIn\"] = sinIn;\r\n/**\r\n * Easing function: \"sinOut\".\r\n */\r\nexport function sinOut(t) {\r\n return Math.sin(t * $math.HALFPI);\r\n}\r\nregistry.registeredClasses[\"ease.sinOut\"] = sinOut;\r\n/**\r\n * Easing function: \"sinInOut\".\r\n */\r\nexport function sinInOut(t) {\r\n return (1 - Math.cos($math.PI * t)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.sinInOut\"] = sinInOut;\r\n/**\r\n * ============================================================================\r\n * CUBIC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Easing function: \"cubicIn\".\r\n */\r\nexport function cubicIn(t) {\r\n return t * t * t;\r\n}\r\nregistry.registeredClasses[\"ease.cubicIn\"] = cubicIn;\r\n/**\r\n * Easing function: \"cubicOut\".\r\n */\r\nexport function cubicOut(t) {\r\n return --t * t * t + 1;\r\n}\r\nregistry.registeredClasses[\"ease.cubicOut\"] = cubicOut;\r\n/**\r\n * Easing function: \"cubicInOut\".\r\n */\r\nexport function cubicInOut(t) {\r\n t *= 2;\r\n return (t <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.cubicInOut\"] = cubicInOut;\r\n/**\r\n * ============================================================================\r\n * CIRCLE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Easing function: \"circleIn\".\r\n */\r\nexport function circleIn(t) {\r\n return 1 - Math.sqrt(1 - t * t);\r\n}\r\nregistry.registeredClasses[\"ease.circleIn\"] = circleIn;\r\n/**\r\n * Easing function: \"circleOut\".\r\n */\r\nexport function circleOut(t) {\r\n return Math.sqrt(1 - --t * t);\r\n}\r\nregistry.registeredClasses[\"ease.circleOut\"] = circleOut;\r\n/**\r\n * Easing function: \"circleInOut\".\r\n */\r\nexport function circleInOut(t) {\r\n t *= 2;\r\n return (t <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.circleInOut\"] = circleInOut;\r\n/**\r\n * ============================================================================\r\n * BOUNCE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nvar b1 = 4 / 11, b2 = 6 / 11, b3 = 8 / 11, b4 = 3 / 4, b5 = 9 / 11, b6 = 10 / 11, b7 = 15 / 16, b8 = 21 / 22, b9 = 63 / 64, b0 = 1 / b1 / b1;\r\n/**\r\n * Easing function: \"bounceIn\".\r\n */\r\nexport function bounceIn(t) {\r\n return 1 - bounceOut(1 - t);\r\n}\r\nregistry.registeredClasses[\"ease.bounceIn\"] = bounceIn;\r\n/**\r\n * Easing function: \"bounceOut\".\r\n */\r\nexport function bounceOut(t) {\r\n t = +t;\r\n return t < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\r\n}\r\nregistry.registeredClasses[\"ease.bounceOut\"] = bounceOut;\r\n/**\r\n * Easing function: \"bounceInOut\".\r\n */\r\nexport function bounceInOut(t) {\r\n t *= 2;\r\n return (t <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.bounceInOut\"] = bounceInOut;\r\n/**\r\n * ============================================================================\r\n * ELASTIC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nvar tau = 2 * Math.PI;\r\nvar amplitude = 1;\r\nvar period = 0.3 / tau;\r\nvar s = Math.asin(1 / amplitude) * period;\r\n/**\r\n * Easing function: \"elasticIn\".\r\n *\r\n * @function elasticIn\r\n * @param a Amplitude\r\n * @param p period\r\n */\r\nexport function elasticIn(t) {\r\n return amplitude * Math.pow(2, 10 * --t) * Math.sin((s - t) / period);\r\n}\r\nregistry.registeredClasses[\"ease.elasticIn\"] = elasticIn;\r\n/**\r\n * Easing function: \"elasticOut\".\r\n *\r\n * @function elasticOut\r\n * @param a Amplitude\r\n * @param p period\r\n */\r\nexport function elasticOut(t) {\r\n return 1 - amplitude * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / period);\r\n}\r\nregistry.registeredClasses[\"ease.elasticOut\"] = elasticOut;\r\n/**\r\n * Easing function: \"elasticInOut\".\r\n *\r\n * @function elasticInOut\r\n * @param a Amplitude\r\n * @param p period\r\n */\r\nexport function elasticInOut(t) {\r\n t = t * 2 - 1;\r\n return (t < 0\r\n ? amplitude * Math.pow(2, 10 * t) * Math.sin((s - t) / period)\r\n : 2 - amplitude * Math.pow(2, -10 * t) * Math.sin((s + t) / period)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.elasticInOut\"] = elasticInOut;\r\n","/**\r\n * Event Dispatcher module is used for registering listeners and dispatching\r\n * events across amCharts system.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Disposer } from \"./Disposer\";\r\nimport * as $array from \"./Array\";\r\nimport * as $async from \"./AsyncPending\";\r\nimport * as $type from \"./Type\";\r\n/*export interface IEventDispatcher<T> {\r\n isDisposed(): boolean;\r\n dispose(): void;\r\n hasListeners(): boolean;\r\n enable(): void;\r\n disable(): void;\r\n enableType<Key extends keyof T>(type: Key): void;\r\n disableType<Key extends keyof T>(type: Key, amount?: number): void;\r\n isEnabled<Key extends keyof T>(type: Key): boolean;\r\n has<C, Key extends keyof T>(type: Key, callback?: (this: C, event: T[Key]) => void, context?: C): boolean;\r\n dispatchImmediately<Key extends keyof T>(type: Key, event: T[Key]): void;\r\n dispatch<Key extends keyof T>(type: Key, event: T[Key]): void;\r\n onAll<C, Key extends keyof T>(callback: (this: C, type: Key, event: T[Key]) => void, context?: C): IDisposer;\r\n on<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): IDisposer;\r\n once<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): IDisposer;\r\n off<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): void;\r\n off<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): void;\r\n copyFrom(source: this): void;\r\n}*/\r\n/**\r\n * Universal Event Dispatcher.\r\n *\r\n * @important\r\n */\r\nvar EventDispatcher = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n */\r\n function EventDispatcher() {\r\n this._listeners = [];\r\n this._killed = [];\r\n this._disabled = {};\r\n this._iterating = 0;\r\n this._enabled = true;\r\n this._disposed = false;\r\n }\r\n /**\r\n * Returns if this object has been already disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n EventDispatcher.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Dispose (destroy) this object.\r\n */\r\n EventDispatcher.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n var a = this._listeners;\r\n this._iterating = 1;\r\n this._listeners = null;\r\n this._disabled = null;\r\n try {\r\n $array.each(a, function (x) {\r\n x.disposer.dispose();\r\n });\r\n }\r\n finally {\r\n this._killed = null;\r\n this._iterating = null;\r\n }\r\n }\r\n };\r\n /**\r\n * Checks if this particular event dispatcher has any listeners set.\r\n *\r\n * @return Has listeners?\r\n */\r\n EventDispatcher.prototype.hasListeners = function () {\r\n return this._listeners.length !== 0;\r\n };\r\n /**\r\n * Checks if this particular event dispatcher has any particular listeners set.\r\n *\r\n * @return Has particular event listeners?\r\n */\r\n EventDispatcher.prototype.hasListenersByType = function (type) {\r\n return $array.any(this._listeners, function (x) { return (x.type === null || x.type === type) && !x.killed; });\r\n };\r\n /**\r\n * Enable dispatching of events if they were previously disabled by\r\n * `disable()`.\r\n */\r\n EventDispatcher.prototype.enable = function () {\r\n this._enabled = true;\r\n };\r\n /**\r\n * Disable dispatching of events until re-enabled by `enable()`.\r\n */\r\n EventDispatcher.prototype.disable = function () {\r\n this._enabled = false;\r\n };\r\n /**\r\n * Enable dispatching particular event, if it was disabled before by\r\n * `disableType()`.\r\n *\r\n * @param type Event type\r\n */\r\n EventDispatcher.prototype.enableType = function (type) {\r\n delete this._disabled[type];\r\n };\r\n /**\r\n * Disable dispatching of events for a certain event type.\r\n *\r\n * Optionally, can set how many dispatches to skip before automatically\r\n * re-enabling the dispatching.\r\n *\r\n * @param type Event type\r\n * @param amount Number of event dispatches to skip\r\n */\r\n EventDispatcher.prototype.disableType = function (type, amount) {\r\n if (amount === void 0) { amount = Infinity; }\r\n this._disabled[type] = amount;\r\n };\r\n /**\r\n * Removes listener from dispatcher.\r\n *\r\n * Will throw an exception if such listener does not exists.\r\n *\r\n * @param listener Listener to remove\r\n */\r\n EventDispatcher.prototype._removeListener = function (listener) {\r\n if (this._iterating === 0) {\r\n var index = this._listeners.indexOf(listener);\r\n if (index === -1) {\r\n throw new Error(\"Invalid state: could not remove listener\");\r\n }\r\n this._listeners.splice(index, 1);\r\n }\r\n else {\r\n this._killed.push(listener);\r\n }\r\n };\r\n /**\r\n * Removes existing listener by certain parameters.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\r\n EventDispatcher.prototype._removeExistingListener = function (once, type, callback, context) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._eachListener(function (info) {\r\n if (info.once === once && // TODO is this correct ?\r\n info.type === type &&\r\n (callback == null || info.callback === callback) &&\r\n info.context === context) {\r\n info.disposer.dispose();\r\n }\r\n });\r\n };\r\n /**\r\n * Checks if dispatching for particular event type is enabled.\r\n *\r\n * @param type Event type\r\n * @return Enabled?\r\n */\r\n EventDispatcher.prototype.isEnabled = function (type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n // TODO is this check correct ?\r\n return this._enabled && this._listeners.length > 0 && this.hasListenersByType(type) && this._disabled[type] == null;\r\n };\r\n /**\r\n * Checks if there's already a listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @return Has listener?\r\n */\r\n EventDispatcher.prototype.has = function (type, callback, context) {\r\n var index = $array.findIndex(this._listeners, function (info) {\r\n return info.once !== true && // Ignoring \"once\" listeners\r\n info.type === type &&\r\n (callback == null || info.callback === callback) &&\r\n info.context === context;\r\n });\r\n return index !== -1;\r\n };\r\n /**\r\n * Checks whether event of the particular type should be dispatched.\r\n *\r\n * @param type Event type\r\n * @return Dispatch?\r\n */\r\n EventDispatcher.prototype._shouldDispatch = function (type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n var count = this._disabled[type];\r\n if (!$type.isNumber(count)) {\r\n return this._enabled;\r\n }\r\n else {\r\n if (count <= 1) {\r\n delete this._disabled[type];\r\n }\r\n else {\r\n --this._disabled[type];\r\n }\r\n return false;\r\n }\r\n };\r\n /**\r\n * [_eachListener description]\r\n *\r\n * All of this extra code is needed when a listener is removed while iterating\r\n *\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\n EventDispatcher.prototype._eachListener = function (fn) {\r\n var _this = this;\r\n ++this._iterating;\r\n try {\r\n $array.each(this._listeners, fn);\r\n }\r\n finally {\r\n --this._iterating;\r\n // TODO should this be inside or outside the finally ?\r\n if (this._iterating === 0 && this._killed.length !== 0) {\r\n // Remove killed listeners\r\n $array.each(this._killed, function (killed) {\r\n _this._removeListener(killed);\r\n });\r\n this._killed.length = 0;\r\n }\r\n }\r\n };\r\n /**\r\n * Dispatches an event immediately without waiting for next cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\r\n EventDispatcher.prototype.dispatchImmediately = function (type, event) {\r\n if (this._shouldDispatch(type)) {\r\n // TODO check if it's faster to use an object of listeners rather than a single big array\r\n // TODO if the function throws, maybe it should keep going ?\r\n this._eachListener(function (listener) {\r\n if (!listener.killed && (listener.type === null || listener.type === type)) {\r\n listener.dispatch(type, event);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Shelves the event to be dispatched within next update cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\r\n EventDispatcher.prototype.dispatch = function (type, event) {\r\n if (this._shouldDispatch(type)) {\r\n this._eachListener(function (listener) {\r\n // TODO check if it's faster to use an object of listeners rather than a single big array\r\n if (!listener.killed && (listener.type === null || listener.type === type)) {\r\n // TODO if the function throws, maybe it should keep going ?\r\n // TODO dispatch during the update cycle, rather than using whenIdle\r\n $async.whenIdle(function () {\r\n if (!listener.killed) {\r\n listener.dispatch(type, event);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Creates, catalogs and returns an [[EventListener]].\r\n *\r\n * Event listener can be disposed.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @param dispatch\r\n * @returns An event listener\r\n */\r\n EventDispatcher.prototype._on = function (once, type, callback, context, shouldClone, dispatch) {\r\n var _this = this;\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._removeExistingListener(once, type, callback, context);\r\n var info = {\r\n type: type,\r\n callback: callback,\r\n context: context,\r\n shouldClone: shouldClone,\r\n dispatch: dispatch,\r\n killed: false,\r\n once: once,\r\n disposer: new Disposer(function () {\r\n info.killed = true;\r\n _this._removeListener(info);\r\n })\r\n };\r\n this._listeners.push(info);\r\n return info;\r\n };\r\n /**\r\n * Creates an event listener to be invoked on **any** event.\r\n *\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n * @todo what if `listen` is called on the same function twice ?\r\n */\r\n EventDispatcher.prototype.onAll = function (callback, context, shouldClone) {\r\n if (shouldClone === void 0) { shouldClone = true; }\r\n return this._on(false, null, callback, context, shouldClone, function (type, event) { return callback.call(context, type, event); }).disposer;\r\n };\r\n /**\r\n * Creates an event listener to be invoked on a specific event type.\r\n *\r\n * ```TypeScript\r\n * series.events.on(\"hidden\", (ev) => {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * series.events.on(\"hidden\", function(ev) {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"events\": {\r\n * \t\"hidden\": function(ev) {\r\n * \t console.log(\"Series hidden: \" + ev.target.name);\r\n * \t}\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will invoke our custom event handler whenever series we put\r\n * event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n * @todo what if `listen` is called on the same function twice ?\r\n */\r\n EventDispatcher.prototype.on = function (type, callback, context, shouldClone) {\r\n if (shouldClone === void 0) { shouldClone = true; }\r\n return this._on(false, type, callback, context, shouldClone, function (type, event) { return callback.call(context, event); }).disposer;\r\n };\r\n /**\r\n * Creates an event listener to be invoked on a specific event type once.\r\n *\r\n * Once the event listener is invoked, it is automatically disposed.\r\n *\r\n * ```TypeScript\r\n * series.events.on(\"hidden\", (ev) => {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * series.events.on(\"hidden\", function(ev) {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"events\": {\r\n * \t\"hidden\": function(ev) {\r\n * \t console.log(\"Series hidden: \" + ev.target.name);\r\n * \t}\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will invoke our custom event handler the first time series we\r\n * put event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n * @todo what if `listen` is called on the same function twice ?\r\n */\r\n EventDispatcher.prototype.once = function (type, callback, context, shouldClone) {\r\n if (shouldClone === void 0) { shouldClone = true; }\r\n var x = this._on(true, type, callback, context, shouldClone, function (type, event) {\r\n x.disposer.dispose();\r\n callback.call(context, event);\r\n });\r\n // TODO maybe this should return a different Disposer ?\r\n return x.disposer;\r\n };\r\n /**\r\n * Removes the event listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\r\n EventDispatcher.prototype.off = function (type, callback, context) {\r\n this._removeExistingListener(false, type, callback, context);\r\n };\r\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n */\r\n EventDispatcher.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n if (source === this) {\r\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n }\r\n $array.each(source._listeners, function (x) {\r\n // TODO is this correct ?\r\n if (!x.killed && x.shouldClone) {\r\n if (x.type === null) {\r\n _this.onAll(x.callback, x.context);\r\n }\r\n else if (x.once) {\r\n _this.once(x.type, x.callback, x.context);\r\n }\r\n else {\r\n _this.on(x.type, x.callback, x.context);\r\n }\r\n }\r\n });\r\n };\r\n return EventDispatcher;\r\n}());\r\nexport { EventDispatcher };\r\n/**\r\n * A version of the [[EventDispatcher]] that dispatches events for a specific\r\n * target object.\r\n *\r\n * @important\r\n */\r\nvar TargetedEventDispatcher = /** @class */ (function (_super) {\r\n __extends(TargetedEventDispatcher, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param target Event dispatcher target\r\n */\r\n function TargetedEventDispatcher(target) {\r\n var _this = _super.call(this) || this;\r\n _this.target = target;\r\n return _this;\r\n }\r\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n */\r\n TargetedEventDispatcher.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n if (source === this) {\r\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n }\r\n $array.each(source._listeners, function (x) {\r\n // TODO very hacky\r\n if (x.context === source.target) {\r\n return;\r\n }\r\n // TODO is this correct ?\r\n if (!x.killed && x.shouldClone) {\r\n if (x.type === null) {\r\n _this.onAll(x.callback, x.context);\r\n }\r\n else if (x.once) {\r\n _this.once(x.type, x.callback, x.context);\r\n }\r\n else {\r\n _this.on(x.type, x.callback, x.context);\r\n }\r\n }\r\n });\r\n };\r\n return TargetedEventDispatcher;\r\n}(EventDispatcher));\r\nexport { TargetedEventDispatcher };\r\n","/**\r\n * This module contains a version of ColorSet that can (and should) be used for\r\n * coloring UI elements.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { registry } from \"../Registry\";\r\nimport { color } from \"./Color\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This module contains a version of ColorSet that can (and should) be used for\r\n * coloring UI elements.\r\n *\r\n * The main difference from the basic [[ColorSet]] is that instead of sequenced\r\n * colors, it uses a concept of named colors.\r\n *\r\n * This way, every element in the UI can extract an exact color theme author\r\n * meant for the specific purpose, like strokes, backgrounds, etc.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nvar InterfaceColorSet = /** @class */ (function (_super) {\r\n __extends(InterfaceColorSet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function InterfaceColorSet() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Maps the list of purposes (like \"stroke\") to an index of color of the\r\n * color set.\r\n */\r\n _this._purposes = {\r\n stroke: color(\"#e5e5e5\"),\r\n fill: color(\"#f3f3f3\"),\r\n primaryButton: color(\"#6794dc\"),\r\n primaryButtonHover: color(\"#6771dc\"),\r\n primaryButtonDown: color(\"#68dc75\"),\r\n primaryButtonActive: color(\"#68dc75\"),\r\n primaryButtonText: color(\"#FFFFFF\"),\r\n primaryButtonStroke: color(\"#FFFFFF\"),\r\n secondaryButton: color(\"#d9d9d9\"),\r\n secondaryButtonHover: color(\"#d9d9d9\").brighten(-0.25),\r\n secondaryButtonDown: color(\"#d9d9d9\").brighten(-0.35),\r\n secondaryButtonActive: color(\"#d9d9d9\").brighten(0.35),\r\n secondaryButtonText: color(\"#000000\"),\r\n secondaryButtonStroke: color(\"#FFFFFF\"),\r\n grid: color(\"#000000\"),\r\n background: color(\"#ffffff\"),\r\n alternativeBackground: color(\"#000000\"),\r\n text: color(\"#000000\"),\r\n alternativeText: color(\"#FFFFFF\"),\r\n disabledBackground: color(\"#999999\"),\r\n positive: color(\"#67dc75\"),\r\n negative: color(\"#dc6788\")\r\n };\r\n _this.className = \"InterfaceColorSet\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n InterfaceColorSet.prototype.debug = function () { };\r\n /**\r\n * Returns a color to be used for the specific purpose.\r\n *\r\n * ```TypeScript\r\n * let uicolors = new am4core.InterfaceColorSet();\r\n * console.log(uicolors.getFor(\"stroke\"));\r\n * ```\r\n * ```JavaScript\r\n * var uicolors = new am4core.InterfaceColorSet();\r\n * console.log(uicolors.getFor(\"stroke\"));\r\n * ```\r\n *\r\n * @param purpose Color use purpuse\r\n * @return Color\r\n */\r\n InterfaceColorSet.prototype.getFor = function (purpose) {\r\n return this._purposes[purpose];\r\n };\r\n /**\r\n * Sets color to be used for the specific purpose.\r\n *\r\n * @param purpose Color use purpose\r\n * @param color Color\r\n */\r\n InterfaceColorSet.prototype.setFor = function (purpose, color) {\r\n this._purposes[purpose] = color;\r\n };\r\n return InterfaceColorSet;\r\n}(BaseObject));\r\nexport { InterfaceColorSet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"InterfaceColorSet\"] = InterfaceColorSet;\r\n","import * as $array from \"./Array\";\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function fromArray(array) {\r\n return function (push) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n if (!push(array[i])) {\r\n break;\r\n }\r\n }\r\n };\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function length(iter) {\r\n var sum = 0;\r\n iter(function (_) {\r\n ++sum;\r\n return true;\r\n });\r\n return sum;\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function toArray(iter) {\r\n var output = [];\r\n iter(function (value) {\r\n output.push(value);\r\n return true;\r\n });\r\n return output;\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function eachContinue(iter, fn) {\r\n iter(fn);\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function each(iter, fn) {\r\n iter(function (value) {\r\n fn(value);\r\n return true;\r\n });\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function sort(iter, fn) {\r\n return fromArray(toArray(iter).sort(fn));\r\n}\r\n/**\r\n * [A description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function map(iter, fn) {\r\n return function (push) { return iter(function (value) { return push(fn(value)); }); };\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function filter(iter, fn) {\r\n return function (push) { return iter(function (value) {\r\n if (fn(value)) {\r\n return push(value);\r\n }\r\n else {\r\n return true;\r\n }\r\n }); };\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function concat() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return function (push) {\r\n var go = true;\r\n var push2 = function (value) { return (go = push(value)); };\r\n var length = args.length;\r\n for (var i = 0; i < length; ++i) {\r\n args[i](push2);\r\n if (!go) {\r\n break;\r\n }\r\n }\r\n };\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function flatten(iter) {\r\n return function (push) {\r\n var go = true;\r\n var push2 = function (value) { return (go = push(value)); };\r\n iter(function (value) {\r\n value(push2);\r\n return go;\r\n });\r\n };\r\n}\r\n/**\r\n * [number description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function indexed(iter) {\r\n return function (push) {\r\n var index = 0;\r\n iter(function (value) { return push([index++, value]); });\r\n };\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function findIndex(iter, matches) {\r\n var found = false;\r\n var i = 0;\r\n iter(function (value) {\r\n if (matches(value)) {\r\n found = true;\r\n return false;\r\n }\r\n else {\r\n ++i;\r\n return true;\r\n }\r\n });\r\n return (found ? i : -1);\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function find(iter, matches) {\r\n var output;\r\n iter(function (value) {\r\n if (matches(value)) {\r\n output = value;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n return output;\r\n}\r\n/**\r\n * [A description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function findMap(iter, matches) {\r\n var output;\r\n iter(function (value) {\r\n var v = matches(value);\r\n if (v !== null) {\r\n output = v;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n return output;\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function contains(iter, matches) {\r\n var output = false;\r\n iter(function (value) {\r\n if (matches(value)) {\r\n output = true;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n return output;\r\n}\r\n/**\r\n * [A description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function foldl(iter, init, fn) {\r\n iter(function (value) {\r\n init = fn(init, value);\r\n return true;\r\n });\r\n return init;\r\n}\r\n/**\r\n * [min2 description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param left [description]\r\n * @param right [description]\r\n * @return [description]\r\n */\r\nfunction min2(left, right) {\r\n if (left == null || right < left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n}\r\n/**\r\n * [min description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Verify that this works correctly\r\n * @todo Description\r\n * @param a [description]\r\n * @return [description]\r\n */\r\nexport function min(a) {\r\n return foldl(a, null, min2);\r\n}\r\n/**\r\n * [max2 description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param left [description]\r\n * @param right [description]\r\n * @return [description]\r\n */\r\nfunction max2(left, right) {\r\n if (left == null || right > left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n}\r\n/**\r\n * [max description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Verify that this works correctly\r\n * @todo Description\r\n * @param a [description]\r\n * @return [description]\r\n */\r\nexport function max(a) {\r\n return foldl(a, null, max2);\r\n}\r\n/**\r\n * [join description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param iter [description]\r\n * @param separator [description]\r\n * @return [description]\r\n */\r\nexport function join(iter, separator) {\r\n if (separator === void 0) { separator = \"\"; }\r\n var first = true;\r\n var init = \"\";\r\n iter(function (value) {\r\n if (first) {\r\n first = false;\r\n }\r\n else {\r\n init += separator;\r\n }\r\n init += value;\r\n return true;\r\n });\r\n return init;\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar ListIterator = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n *\r\n * @param list [description]\r\n * @param create [description]\r\n */\r\n function ListIterator(list, create) {\r\n // flag specifies if iterator should create new list item if it is reqested for a nextItem but there is no more left in the list\r\n this.createNewItems = false;\r\n this.list = list;\r\n this._create = create;\r\n this.reset();\r\n }\r\n ListIterator.prototype.reset = function () {\r\n this._listCopy = toArray(this.list.iterator());\r\n };\r\n ListIterator.prototype.clear = function () {\r\n this._listCopy.length = 0;\r\n };\r\n ListIterator.prototype.getFirst = function () {\r\n return this.returnItem(0);\r\n };\r\n ListIterator.prototype.getLast = function () {\r\n return this.returnItem(this._listCopy.length - 1);\r\n };\r\n ListIterator.prototype.find = function (fn) {\r\n var index = $array.findIndex(this._listCopy, fn);\r\n if (index !== -1) {\r\n var item = this._listCopy[index];\r\n // TODO use removeIndex instead ?\r\n $array.remove(this._listCopy, item);\r\n return item;\r\n }\r\n else {\r\n return this.getLast();\r\n }\r\n };\r\n ListIterator.prototype.removeItem = function (item) {\r\n return $array.remove(this._listCopy, item);\r\n };\r\n ListIterator.prototype.returnItem = function (index) {\r\n if (index >= 0 && index < this._listCopy.length) {\r\n var item = this._listCopy[index];\r\n // TODO use removeIndex instead ?\r\n $array.remove(this._listCopy, item);\r\n return item;\r\n }\r\n else if (this.createNewItems) {\r\n return this._create();\r\n }\r\n };\r\n ListIterator.prototype.iterator = function () {\r\n return fromArray(this._listCopy);\r\n };\r\n return ListIterator;\r\n}());\r\nexport { ListIterator };\r\n","/**\r\n * A collection of keyboard-related utilities accessible via `keyboard`\r\n * instance.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $type from \"./Type\";\r\n/**\r\n * A class that represents collection of keyboard-related utilities.\r\n *\r\n * Do not instantiate this class directly, but rather use `keyboard` variable.\r\n */\r\nvar Keyboard = /** @class */ (function () {\r\n function Keyboard() {\r\n }\r\n /**\r\n * Returns a named key based on information contained in the event or\r\n * \"other\".\r\n *\r\n * @param ev A keyboard event\r\n * @return Keyboard named key\r\n */\r\n Keyboard.prototype.getEventKey = function (ev) {\r\n // Get the key code\r\n var code = ev.keyCode || ev.which, key;\r\n // Map to internal key\r\n switch (code) {\r\n case 38:\r\n key = \"up\";\r\n break;\r\n case 40:\r\n key = \"down\";\r\n break;\r\n case 37:\r\n key = \"left\";\r\n break;\r\n case 39:\r\n key = \"right\";\r\n break;\r\n case 13:\r\n key = \"enter\";\r\n break;\r\n case 27:\r\n key = \"esc\";\r\n break;\r\n case 36:\r\n key = \"home\";\r\n break;\r\n case 35:\r\n key = \"end\";\r\n break;\r\n case 9:\r\n key = \"tab\";\r\n break;\r\n case 17:\r\n key = \"ctrl\";\r\n break;\r\n case 18:\r\n key = \"alt\";\r\n break;\r\n case 16:\r\n key = \"shift\";\r\n break;\r\n case 32:\r\n key = \"space\";\r\n break;\r\n case 36:\r\n key = \"home\";\r\n break;\r\n case 35:\r\n key = \"end\";\r\n break;\r\n case 33:\r\n key = \"pgup\";\r\n break;\r\n case 34:\r\n key = \"pgdn\";\r\n break;\r\n case 45:\r\n key = \"ins\";\r\n break;\r\n case 46:\r\n key = \"del\";\r\n break;\r\n case 107:\r\n key = \"plus\";\r\n break;\r\n case 109:\r\n key = \"minus\";\r\n break;\r\n default:\r\n key = \"other\";\r\n break;\r\n }\r\n return key;\r\n };\r\n /**\r\n * Checks if event key is one or more of the selected named keys.\r\n *\r\n * @param ev Keyboard event\r\n * @param key Named key or array of keys\r\n * @return Is event key one of the list?\r\n */\r\n Keyboard.prototype.isKey = function (ev, key) {\r\n var eventKey = this.getEventKey(ev);\r\n if ($type.isString(key)) {\r\n key = [key];\r\n }\r\n return key.indexOf(eventKey) !== -1;\r\n };\r\n /**\r\n * Returns `true` if shift key was presset at the moment of the event.\r\n *\r\n * @param ev Event object\r\n * @return Was shift pressed?\r\n */\r\n Keyboard.prototype.shiftKey = function (ev) {\r\n return ev.shiftKey;\r\n };\r\n /**\r\n * Returns `true` if ctrl key was presset at the moment of the event.\r\n *\r\n * @param ev Event object\r\n * @return Was ctrl pressed?\r\n */\r\n Keyboard.prototype.ctrlKey = function (ev) {\r\n return ev.ctrlKey;\r\n };\r\n /**\r\n * Returns `true` if alt key was presset at the moment of the event\r\n * @param ev Event object\r\n * @return Was alt pressed?\r\n */\r\n Keyboard.prototype.altKey = function (ev) {\r\n return ev.altKey;\r\n };\r\n /**\r\n * Returns `true` if meta key was presset at the moment of the event\r\n * @param ev Event object\r\n * @return Was meta pressed?\r\n */\r\n Keyboard.prototype.metaKey = function (ev) {\r\n return ev.metaKey;\r\n };\r\n return Keyboard;\r\n}());\r\nexport { Keyboard };\r\n/**\r\n * A single [[Keyboard]] instance to be reused across all elements so that\r\n * they don't need to instantiate their own.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var keyboard = new Keyboard();\r\n","/**\r\n * amCharts 4 locale\r\n *\r\n * Locale: en\r\n * Language: International English\r\n * Author: Martynas Majeris\r\n *\r\n * Follow instructions in [on this page](https://www.amcharts.com/docs/v4/tutorials/creating-translations/) to make corrections or add new translations.\r\n *\r\n * ---\r\n * Edit but leave the header section above this line. You can remove any\r\n * subsequent comment sections.\r\n * ---\r\n *\r\n * Use this file as a template to create translations. Leave the key part in\r\n * English intact. Fill the value with a translation.\r\n *\r\n * Empty string means no translation, so default \"International English\"\r\n * will be used.\r\n *\r\n * If you need the translation to literally be an empty string, use `null`\r\n * instead.\r\n *\r\n * IMPORTANT:\r\n * When translating make good effort to keep the translation length\r\n * at least the same chartcount as the English, especially for short prompts.\r\n *\r\n * Having significantly longer prompts may distort the actual charts.\r\n *\r\n * NOTE:\r\n * Some prompts - like months or weekdays - come in two versions: full and\r\n * shortened.\r\n *\r\n * If there's no official shortened version of these in your language, and it\r\n * would not be possible to invent such short versions that don't seem weird\r\n * to native speakers of that language, fill those with the same as full\r\n * version.\r\n *\r\n * PLACEHOLDERS:\r\n * Some prompts have placeholders like \"%1\". Those will be replaced by actual\r\n * values during translation and should be retained in the translated prompts.\r\n *\r\n * Placeholder positions may be changed to better suit structure of the\r\n * sentence.\r\n *\r\n * For example \"From %1 to %2\", when actually used will replace \"%1\" with an\r\n * actual value representing range start, and \"%2\" will be replaced by end\r\n * value.\r\n *\r\n * E.g. in a Scrollbar for Value axis \"From %1 to %2\" will become\r\n * \"From 100 to 200\". You may translate \"From\" and \"to\", as well as re-arrange\r\n * the order of the prompt itself, but make sure the \"%1\" and \"%2\" remain, in\r\n * places where they will make sense.\r\n *\r\n * Save the file as language_LOCALE, i.e. `en_GB.ts`, `fr_FR.ts`, etc.\r\n */\r\nexport default {\r\n // Number formatting options.\r\n // \r\n // Please check with the local standards which separator is accepted to be\r\n // used for separating decimals, and which for thousands.\r\n \"_decimalSeparator\": \".\",\r\n \"_thousandSeparator\": \",\",\r\n // Position of the percent sign in numbers\r\n \"_percentPrefix\": null,\r\n \"_percentSuffix\": \"%\",\r\n // Suffixes for numbers\r\n // When formatting numbers, big or small numers might be reformatted to\r\n // shorter version, by applying a suffix.\r\n // \r\n // For example, 1000000 might become \"1m\".\r\n // Or 1024 might become \"1KB\" if we're formatting byte numbers.\r\n // \r\n // This section defines such suffixes for all such cases.\r\n \"_big_number_suffix_3\": \"k\",\r\n \"_big_number_suffix_6\": \"M\",\r\n \"_big_number_suffix_9\": \"G\",\r\n \"_big_number_suffix_12\": \"T\",\r\n \"_big_number_suffix_15\": \"P\",\r\n \"_big_number_suffix_18\": \"E\",\r\n \"_big_number_suffix_21\": \"Z\",\r\n \"_big_number_suffix_24\": \"Y\",\r\n \"_small_number_suffix_3\": \"m\",\r\n \"_small_number_suffix_6\": \"μ\",\r\n \"_small_number_suffix_9\": \"n\",\r\n \"_small_number_suffix_12\": \"p\",\r\n \"_small_number_suffix_15\": \"f\",\r\n \"_small_number_suffix_18\": \"a\",\r\n \"_small_number_suffix_21\": \"z\",\r\n \"_small_number_suffix_24\": \"y\",\r\n \"_byte_suffix_B\": \"B\",\r\n \"_byte_suffix_KB\": \"KB\",\r\n \"_byte_suffix_MB\": \"MB\",\r\n \"_byte_suffix_GB\": \"GB\",\r\n \"_byte_suffix_TB\": \"TB\",\r\n \"_byte_suffix_PB\": \"PB\",\r\n // Default date formats for various periods.\r\n // \r\n // This should reflect official or de facto formatting universally accepted\r\n // in the country translation is being made for\r\n // Available format codes here:\r\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Format_codes\r\n // \r\n // This will be used when formatting date/time for particular granularity,\r\n // e.g. \"_date_hour\" will be shown whenever we need to show time as hours.\r\n // \r\n // \"date\" is used as in default date format when showing standalone dates.\r\n \"_date\": \"yyyy-MM-dd\",\r\n \"_date_millisecond\": \"mm:ss SSS\",\r\n \"_date_second\": \"HH:mm:ss\",\r\n \"_date_minute\": \"HH:mm\",\r\n \"_date_hour\": \"HH:mm\",\r\n \"_date_day\": \"MMM dd\",\r\n \"_date_week\": \"ww\",\r\n \"_date_month\": \"MMM\",\r\n \"_date_year\": \"yyyy\",\r\n // Default duration formats for various base units.\r\n // \r\n // This will be used by DurationFormatter to format numeric values into\r\n // duration.\r\n // \r\n // Notice how each duration unit comes in several versions. This is to ensure\r\n // that each base unit is shown correctly.\r\n // \r\n // For example, if we have baseUnit set to \"second\", meaning our duration is\r\n // in seconds.\r\n // \r\n // If we pass in `50` to formatter, it will know that we have just 50 seconds\r\n // (less than a minute) so it will use format in `\"_duration_second\"` (\"ss\"),\r\n // and the formatted result will be in like `\"50\"`.\r\n // \r\n // If we pass in `70`, which is more than a minute, the formatter will switch\r\n // to `\"_duration_second_minute\"` (\"mm:ss\"), resulting in \"01:10\" formatted\r\n // text.\r\n // \r\n // Available codes here:\r\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/#Available_Codes\r\n \"_duration_millisecond\": \"SSS\",\r\n \"_duration_millisecond_second\": \"ss.SSS\",\r\n \"_duration_millisecond_minute\": \"mm:ss SSS\",\r\n \"_duration_millisecond_hour\": \"hh:mm:ss SSS\",\r\n \"_duration_millisecond_day\": \"d'd' mm:ss SSS\",\r\n \"_duration_millisecond_week\": \"d'd' mm:ss SSS\",\r\n \"_duration_millisecond_month\": \"M'm' dd'd' mm:ss SSS\",\r\n \"_duration_millisecond_year\": \"y'y' MM'm' dd'd' mm:ss SSS\",\r\n \"_duration_second\": \"ss\",\r\n \"_duration_second_minute\": \"mm:ss\",\r\n \"_duration_second_hour\": \"hh:mm:ss\",\r\n \"_duration_second_day\": \"d'd' hh:mm:ss\",\r\n \"_duration_second_week\": \"d'd' hh:mm:ss\",\r\n \"_duration_second_month\": \"M'm' dd'd' hh:mm:ss\",\r\n \"_duration_second_year\": \"y'y' MM'm' dd'd' hh:mm:ss\",\r\n \"_duration_minute\": \"mm\",\r\n \"_duration_minute_hour\": \"hh:mm\",\r\n \"_duration_minute_day\": \"d'd' hh:mm\",\r\n \"_duration_minute_week\": \"d'd' hh:mm\",\r\n \"_duration_minute_month\": \"M'm' dd'd' hh:mm\",\r\n \"_duration_minute_year\": \"y'y' MM'm' dd'd' hh:mm\",\r\n \"_duration_hour\": \"hh'h'\",\r\n \"_duration_hour_day\": \"d'd' hh'h'\",\r\n \"_duration_hour_week\": \"d'd' hh'h'\",\r\n \"_duration_hour_month\": \"M'm' dd'd' hh'h'\",\r\n \"_duration_hour_year\": \"y'y' MM'm' dd'd' hh'h'\",\r\n \"_duration_day\": \"d'd'\",\r\n \"_duration_day_week\": \"d'd'\",\r\n \"_duration_day_month\": \"M'm' dd'd'\",\r\n \"_duration_day_year\": \"y'y' MM'm' dd'd'\",\r\n \"_duration_week\": \"w'w'\",\r\n \"_duration_week_month\": \"w'w'\",\r\n \"_duration_week_year\": \"w'w'\",\r\n \"_duration_month\": \"M'm'\",\r\n \"_duration_month_year\": \"y'y' MM'm'\",\r\n \"_duration_year\": \"y'y'\",\r\n // Era translations\r\n \"_era_ad\": \"AD\",\r\n \"_era_bc\": \"BC\",\r\n // Day part, used in 12-hour formats, e.g. 5 P.M.\r\n // Please note that these come in 3 variants:\r\n // * one letter (e.g. \"A\")\r\n // * two letters (e.g. \"AM\")\r\n // * two letters with dots (e.g. \"A.M.\")\r\n // \r\n // All three need to to be translated even if they are all the same. Some\r\n // users might use one, some the other.\r\n \"A\": \"\",\r\n \"P\": \"\",\r\n \"AM\": \"\",\r\n \"PM\": \"\",\r\n \"A.M.\": \"\",\r\n \"P.M.\": \"\",\r\n // Date-related stuff.\r\n // \r\n // When translating months, if there's a difference, use the form which is\r\n // best for a full date, e.g. as you would use it in \"2018 January 1\".\r\n // \r\n // Note that May is listed twice. This is because in English May is the same\r\n // in both long and short forms, while in other languages it may not be the\r\n // case. Translate \"May\" to full word, while \"May(short)\" to shortened\r\n // version.\r\n // \r\n // Should month names and weekdays be capitalized or not?\r\n // \r\n // Rule of thumb is this: if the names should always be capitalized,\r\n // regardless of name position within date (\"January\", \"21st January 2018\",\r\n // etc.) use capitalized names. Otherwise enter all lowercase.\r\n // \r\n // The date formatter will automatically capitalize names if they are the\r\n // first (or only) word in resulting date.\r\n \"January\": \"\",\r\n \"February\": \"\",\r\n \"March\": \"\",\r\n \"April\": \"\",\r\n \"May\": \"\",\r\n \"June\": \"\",\r\n \"July\": \"\",\r\n \"August\": \"\",\r\n \"September\": \"\",\r\n \"October\": \"\",\r\n \"November\": \"\",\r\n \"December\": \"\",\r\n \"Jan\": \"\",\r\n \"Feb\": \"\",\r\n \"Mar\": \"\",\r\n \"Apr\": \"\",\r\n \"May(short)\": \"May\",\r\n \"Jun\": \"\",\r\n \"Jul\": \"\",\r\n \"Aug\": \"\",\r\n \"Sep\": \"\",\r\n \"Oct\": \"\",\r\n \"Nov\": \"\",\r\n \"Dec\": \"\",\r\n // Weekdays.\r\n \"Sunday\": \"\",\r\n \"Monday\": \"\",\r\n \"Tuesday\": \"\",\r\n \"Wednesday\": \"\",\r\n \"Thursday\": \"\",\r\n \"Friday\": \"\",\r\n \"Saturday\": \"\",\r\n \"Sun\": \"\",\r\n \"Mon\": \"\",\r\n \"Tue\": \"\",\r\n \"Wed\": \"\",\r\n \"Thu\": \"\",\r\n \"Fri\": \"\",\r\n \"Sat\": \"\",\r\n // Date ordinal function.\r\n // \r\n // This is used when adding number ordinal when formatting days in dates.\r\n // \r\n // E.g. \"January 1st\", \"February 2nd\".\r\n // \r\n // The function accepts day number, and returns a string to be added to the\r\n // day, like in default English translation, if we pass in 2, we will receive\r\n // \"nd\" back.\r\n \"_dateOrd\": function (day) {\r\n var res = \"th\";\r\n if ((day < 11) || (day > 13)) {\r\n switch (day % 10) {\r\n case 1:\r\n res = \"st\";\r\n break;\r\n case 2:\r\n res = \"nd\";\r\n break;\r\n case 3:\r\n res = \"rd\";\r\n break;\r\n }\r\n }\r\n return res;\r\n },\r\n // Various chart controls.\r\n // Shown as a tooltip on zoom out button.\r\n \"Zoom Out\": \"\",\r\n // Timeline buttons\r\n \"Play\": \"\",\r\n \"Stop\": \"\",\r\n // Chart's Legend screen reader title.\r\n \"Legend\": \"\",\r\n // Legend's item screen reader indicator.\r\n \"Click, tap or press ENTER to toggle\": \"\",\r\n // Shown when the chart is busy loading something.\r\n \"Loading\": \"\",\r\n // Shown as the first button in the breadcrumb navigation, e.g.:\r\n // Home > First level > ...\r\n \"Home\": \"\",\r\n // Chart types.\r\n // Those are used as default screen reader titles for the main chart element\r\n // unless developer has set some more descriptive title.\r\n \"Chart\": \"\",\r\n \"Serial chart\": \"\",\r\n \"X/Y chart\": \"\",\r\n \"Pie chart\": \"\",\r\n \"Gauge chart\": \"\",\r\n \"Radar chart\": \"\",\r\n \"Sankey diagram\": \"\",\r\n \"Flow diagram\": \"\",\r\n \"Chord diagram\": \"\",\r\n \"TreeMap chart\": \"\",\r\n \"Force directed tree\": \"\",\r\n \"Sliced chart\": \"\",\r\n // Series types.\r\n // Used to name series by type for screen readers if they do not have their\r\n // name set.\r\n \"Series\": \"\",\r\n \"Candlestick Series\": \"\",\r\n \"OHLC Series\": \"\",\r\n \"Column Series\": \"\",\r\n \"Line Series\": \"\",\r\n \"Pie Slice Series\": \"\",\r\n \"Funnel Series\": \"\",\r\n \"Pyramid Series\": \"\",\r\n \"X/Y Series\": \"\",\r\n // Map-related stuff.\r\n \"Map\": \"\",\r\n \"Press ENTER to zoom in\": \"\",\r\n \"Press ENTER to zoom out\": \"\",\r\n \"Use arrow keys to zoom in and out\": \"\",\r\n \"Use plus and minus keys on your keyboard to zoom in and out\": \"\",\r\n // Export-related stuff.\r\n // These prompts are used in Export menu labels.\r\n // \r\n // \"Export\" is the top-level menu item.\r\n // \r\n // \"Image\", \"Data\", \"Print\" as second-level indicating type of export\r\n // operation.\r\n // \r\n // Leave actual format untranslated, unless you absolutely know that they\r\n // would convey more meaning in some other way.\r\n \"Export\": \"\",\r\n \"Image\": \"\",\r\n \"Data\": \"\",\r\n \"Print\": \"\",\r\n \"Press ENTER or use arrow keys to navigate\": \"\",\r\n \"Click, tap or press ENTER to open\": \"\",\r\n \"Click, tap or press ENTER to print.\": \"\",\r\n \"Click, tap or press ENTER to export as %1.\": \"\",\r\n 'To save the image, right-click this link and choose \"Save picture as...\"': \"\",\r\n 'To save the image, right-click thumbnail on the left and choose \"Save picture as...\"': \"\",\r\n \"(Press ESC to close this message)\": \"\",\r\n \"Image Export Complete\": \"\",\r\n \"Export operation took longer than expected. Something might have gone wrong.\": \"\",\r\n \"Saved from\": \"\",\r\n \"PNG\": \"\",\r\n \"JPG\": \"\",\r\n \"GIF\": \"\",\r\n \"SVG\": \"\",\r\n \"PDF\": \"\",\r\n \"JSON\": \"\",\r\n \"CSV\": \"\",\r\n \"XLSX\": \"\",\r\n // Scrollbar-related stuff.\r\n // \r\n // Scrollbar is a control which can zoom and pan the axes on the chart.\r\n // \r\n // Each scrollbar has two grips: left or right (for horizontal scrollbar) or\r\n // upper and lower (for vertical one).\r\n // \r\n // Prompts change in relation to whether Scrollbar is vertical or horizontal.\r\n // \r\n // The final section is used to indicate the current range of selection.\r\n \"Use TAB to select grip buttons or left and right arrows to change selection\": \"\",\r\n \"Use left and right arrows to move selection\": \"\",\r\n \"Use left and right arrows to move left selection\": \"\",\r\n \"Use left and right arrows to move right selection\": \"\",\r\n \"Use TAB select grip buttons or up and down arrows to change selection\": \"\",\r\n \"Use up and down arrows to move selection\": \"\",\r\n \"Use up and down arrows to move lower selection\": \"\",\r\n \"Use up and down arrows to move upper selection\": \"\",\r\n \"From %1 to %2\": \"\",\r\n \"From %1\": \"\",\r\n \"To %1\": \"\",\r\n // Data loader-related.\r\n \"No parser available for file: %1\": \"\",\r\n \"Error parsing file: %1\": \"\",\r\n \"Unable to load file: %1\": \"\",\r\n \"Invalid date\": \"\",\r\n // Common actions\r\n \"Close\": \"\",\r\n \"Minimize\": \"\"\r\n};\r\n","/**\r\n * Language module contains everything related to language-specific operations:\r\n * * Translating prompts\r\n * * Translating functions\r\n * * Date format localizations\r\n */\r\nimport { __extends, __read, __spread } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { Adapter } from \"./Adapter\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\nimport en from \"../../../lang/en\";\r\nimport { options } from \"../Options\";\r\n;\r\n;\r\n/**\r\n * Handles all language-related tasks, like loading and storing translations,\r\n * translating prompts, lists of prompts and even functions.\r\n *\r\n * Almost every object in amCharts4 universe will have a `language` property,\r\n * which can be accessed for prompt translation.\r\n *\r\n * @see {@link ILanguageAdapters} for a list of available Adapters\r\n * @todo Make prompt keys case-insensitive\r\n * @important\r\n */\r\nvar Language = /** @class */ (function (_super) {\r\n __extends(Language, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Language() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * Current locale.\r\n */\r\n _this._locale = en;\r\n /**\r\n * Default locale. A locale to fall back to if none is specified, or\r\n * if there's no translation for the prompt for the current language.\r\n */\r\n _this._defaultLocale = en;\r\n _this.className = \"Language\";\r\n // Set default language if necessary\r\n if ($type.hasValue(options.defaultLocale)) {\r\n _this.locale = options.defaultLocale;\r\n }\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns locale that is currently used.\r\n *\r\n * @param locale Force locale. Will use current language if not set.\r\n * @return Locale\r\n */\r\n Language.prototype.getLocale = function (locale) {\r\n if (locale == null) {\r\n locale = this._locale;\r\n }\r\n return this.adapter.apply(\"locale\", {\r\n locale: locale\r\n }).locale;\r\n };\r\n /**\r\n * Returns the translation of the string.\r\n *\r\n * If the translation is empty, it will return untranslated prompt.\r\n *\r\n * Third parameter and up are strings that can be used to replace \"%X\"\r\n * placeholders in prompt.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Results in \"This is a first translation test\"\r\n * chart.language.translate(\"This is a %1 translation %2\", null, \"first\", \"test\");\r\n * ```\r\n * ```JavaScriptScript\r\n * // Results in \"This is a first translation test\"\r\n * chart.language.translate(\"This is a %1 translation %2\", null, \"first\", \"test\");\r\n * ```\r\n *\r\n * @param prompt A string to translate\r\n * @param locale Force translation into specific locale, e.g. fr_FR\r\n * @param rest Parameters to replace in string\r\n * @return Translation\r\n */\r\n Language.prototype.translate = function (prompt, locale) {\r\n var rest = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n rest[_i - 2] = arguments[_i];\r\n }\r\n // Get langauge\r\n locale = this.getLocale(locale);\r\n // Init translation\r\n var translation = prompt;\r\n // Get translations for the locale\r\n var translations = this.getTranslations(locale);\r\n var value = translations[prompt];\r\n // Try to look for the translation\r\n if (value === null) {\r\n translation = \"\";\r\n }\r\n else if ($type.hasValue(value)) {\r\n // It might be an empty string\r\n if (value) {\r\n translation = value;\r\n }\r\n }\r\n else if (locale !== this._defaultLocale) {\r\n // Try to look in default language\r\n return this.translate.apply(this, __spread([prompt, this._defaultLocale], rest));\r\n }\r\n // Replace %1, %2, etc params\r\n if (rest.length) {\r\n for (var len = rest.length, i = 0; i < len; ++i) {\r\n translation = translation.split(\"%\" + (i + 1)).join(rest[i]);\r\n }\r\n }\r\n // Return the translation\r\n return this.adapter.apply(\"translate\", {\r\n translation: translation,\r\n locale: locale\r\n }).translation;\r\n };\r\n /**\r\n * Non-type-checked translation.\r\n *\r\n * Can be used by plugins and other code that may have their own non-standard\r\n * translation prompts.\r\n *\r\n * @since 4.5.5\r\n * @param prompt A string to translate\r\n * @param locale Force translation into specific locale, e.g. fr_FR\r\n * @param rest Parameters to replace in string\r\n * @return Translation\r\n */\r\n Language.prototype.translateAny = function (prompt, locale) {\r\n var rest = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n rest[_i - 2] = arguments[_i];\r\n }\r\n return this.translate.apply(this, __spread([prompt, locale], rest));\r\n };\r\n /**\r\n * Sets a prompt translation.\r\n *\r\n * @since 4.9.35\r\n * @param prompt Prompt in English\r\n * @param translation Translation\r\n * @param locale Locale\r\n */\r\n Language.prototype.setTranslationAny = function (prompt, translation, locale) {\r\n var localeTarget = locale || this.locale;\r\n localeTarget[prompt] = translation;\r\n };\r\n /**\r\n * Translates prompt.\r\n *\r\n * If translation is empty, it will return empty string, which is a different\r\n * behavior than that of regular `translate`.\r\n *\r\n * @param prompt A string to translate\r\n * @param locale Force translation into specific locale, e.g. fr_FR\r\n * @param ...rest Parameters to replace in string\r\n * @return Translation\r\n */\r\n Language.prototype.translateEmpty = function (prompt, locale) {\r\n var rest = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n rest[_i - 2] = arguments[_i];\r\n }\r\n var translation = this.translate.apply(this, __spread([prompt, locale], rest));\r\n return translation == prompt ? \"\" : translation;\r\n };\r\n /**\r\n * Translates a function.\r\n *\r\n * This method will return a function reference, but will not run it. It's\r\n * up to the caller script to run the function.\r\n *\r\n * @param prompt A function id to translate\r\n * @param locale Force translation into specific locale. e.g. fr_FR\r\n * @return A language-specific version of the function\r\n * @todo Apply adapter\r\n */\r\n Language.prototype.translateFunc = function (prompt, locale) {\r\n // Get langauge\r\n locale = this.getLocale(locale);\r\n // Get translations for the locale\r\n var translations = this.getTranslations(locale);\r\n var value = translations[prompt];\r\n // Try to look for the translation\r\n if (value != null) {\r\n return value;\r\n }\r\n // Try to look in default language\r\n if (locale !== this._defaultLocale) {\r\n return this.translateFunc(prompt, this._defaultLocale);\r\n }\r\n // Fail - return empty function\r\n return function () {\r\n return \"\";\r\n };\r\n };\r\n /**\r\n * Translates a list of prompts in one go.\r\n *\r\n * @param list An array of strings to translate\r\n * @param locale Force translation into specific locale. e.g. fr_FR\r\n * @return An array of translated strings in the same order as source list\r\n */\r\n Language.prototype.translateAll = function (list, locale) {\r\n var _this = this;\r\n // Translate all items in the list\r\n if (!this.isDefault()) {\r\n return $array.map(list, function (x) { return _this.translate(x, locale); });\r\n }\r\n else {\r\n return list;\r\n }\r\n };\r\n /**\r\n * Returns `true` if the currently selected locale is a default locale.\r\n *\r\n * @return `true` if locale is default; `false` if it is not.\r\n */\r\n Language.prototype.isDefault = function () {\r\n return this._defaultLocale === this._locale;\r\n };\r\n Object.defineProperty(Language.prototype, \"locale\", {\r\n /**\r\n * @return Locale definition\r\n */\r\n get: function () {\r\n return this._locale;\r\n },\r\n /**\r\n * Current locale.\r\n *\r\n * @param value Locale definition (translations)\r\n */\r\n set: function (value) {\r\n if (this._locale != value) {\r\n this._locale = value;\r\n if (this.events.isEnabled(\"localechanged\")) {\r\n var event_1 = {\r\n type: \"localechanged\",\r\n locale: value,\r\n target: this\r\n };\r\n this.events.dispatchImmediately(\"localechanged\", event_1);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns translations for a given locale.\r\n *\r\n * @ignore\r\n * @deprecated\r\n * @param locale Locale\r\n * @return Translations\r\n */\r\n Language.prototype.getTranslations = function (locale) {\r\n return this.adapter.apply(\"translations\", {\r\n translations: locale,\r\n locale: locale\r\n }).translations;\r\n };\r\n return Language;\r\n}(BaseObjectEvents));\r\nexport { Language };\r\n","import { __extends, __generator } from \"tslib\";\r\nimport { Disposer, MultiDisposer } from \"./Disposer\";\r\nimport { EventDispatcher } from \"./EventDispatcher\";\r\nimport * as $array from \"./Array\";\r\nimport * as $iter from \"./Iterator\";\r\n/**\r\n * @todo Description\r\n */\r\nvar IndexedIterable = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param array List items\r\n * @param start Start index\r\n * @param end End index\r\n */\r\n function IndexedIterable(array, start, end) {\r\n this._array = array;\r\n this._start = start;\r\n this._end = end;\r\n }\r\n /**\r\n * Returns a list item iterator.\r\n *\r\n * @return Iterator\r\n */\r\n IndexedIterable.prototype.iterator = function () {\r\n var _this = this;\r\n return function (push) {\r\n if (_this._start !== _this._end) {\r\n if (_this._start < _this._end) {\r\n for (var i = _this._start; i < _this._end; ++i) {\r\n if (!push(_this._array[i])) {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = _this._start - 1; i >= _this._end; --i) {\r\n if (!push(_this._array[i])) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n };\r\n /**\r\n * Returns an interable list sorted backwards than current list.\r\n *\r\n * @return List\r\n */\r\n IndexedIterable.prototype.backwards = function () {\r\n return new IndexedIterable(this._array, this._end, this._start);\r\n };\r\n /**\r\n * Returns a new list consisting only of specific range of items between\r\n * `start` and `end` indexes.\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @return List\r\n */\r\n IndexedIterable.prototype.range = function (start, end) {\r\n if (start <= end) {\r\n if (this._start === this._end) {\r\n return this;\r\n }\r\n else if (this._start < this._end) {\r\n var diff = end - start;\r\n start = Math.max(this._start + start, this._start);\r\n end = Math.min(start + diff, this._end);\r\n return new IndexedIterable(this._array, start, end);\r\n }\r\n else {\r\n var diff = end - start;\r\n start = Math.max(this._start - start, this._end);\r\n end = Math.max(start - diff, this._end);\r\n return new IndexedIterable(this._array, start, end);\r\n }\r\n }\r\n else {\r\n throw new Error(\"Start index must be lower than end index\");\r\n }\r\n };\r\n return IndexedIterable;\r\n}());\r\nexport { IndexedIterable };\r\n/**\r\n * ListGrouper organizes [[List]] items into groups.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar ListGrouper = /** @class */ (function (_super) {\r\n __extends(ListGrouper, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function ListGrouper(list, getKey, sort) {\r\n var _this = _super.call(this, [\r\n list.events.on(\"inserted\", function (x) {\r\n var value = x.newValue;\r\n var key = _this._getKey(value);\r\n var index = 0;\r\n $iter.eachContinue(list.iterator(), function (x) {\r\n if (x === value) {\r\n return false;\r\n }\r\n else if (_this._getKey(x) === key) {\r\n ++index;\r\n }\r\n return true;\r\n });\r\n _this._insert(value, key, index);\r\n }, undefined, false),\r\n list.events.on(\"removed\", function (x) {\r\n _this._remove(x.oldValue);\r\n }, undefined, false)\r\n ]) || this;\r\n /**\r\n * Grouping keys.\r\n */\r\n _this._keys = [];\r\n /**\r\n * List item groups.\r\n */\r\n _this._groups = {};\r\n _this._getKey = getKey;\r\n _this._sort = sort;\r\n $iter.each(list.iterator(), function (x) {\r\n _this._insert(x, getKey(x));\r\n });\r\n return _this;\r\n }\r\n /**\r\n * Inserts an item (`x`) to a specific group (`key`) and specific `index`.\r\n *\r\n * @param x Item\r\n * @param key Group name\r\n * @param index Index\r\n */\r\n ListGrouper.prototype._insert = function (x, key, index) {\r\n if (this._groups[key] == null) {\r\n this._groups[key] = [];\r\n // TODO code duplication with SortedList\r\n var _a = $array.getSortedIndex(this._keys, this._sort, key), found = _a.found, index_1 = _a.index;\r\n if (found) {\r\n throw new Error(\"Key already exists: \" + key);\r\n }\r\n else {\r\n $array.insertIndex(this._keys, index_1, key);\r\n }\r\n }\r\n if (index == null) {\r\n this._groups[key].push(x);\r\n }\r\n else {\r\n $array.insertIndex(this._groups[key], index, x);\r\n }\r\n };\r\n /**\r\n * Removes an item from the list.\r\n *\r\n * @param x Item to remove\r\n */\r\n ListGrouper.prototype._remove = function (x) {\r\n var key = this._getKey(x);\r\n var values = this._groups[key];\r\n if (values != null) {\r\n $array.remove(values, x);\r\n if (values.length === 0) {\r\n delete this._groups[key];\r\n var _a = $array.getSortedIndex(this._keys, this._sort, key), found = _a.found, index = _a.index;\r\n if (found) {\r\n $array.removeIndex(this._keys, index);\r\n }\r\n else {\r\n throw new Error(\"Key doesn't exist: \" + key);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Returns an iterator for the list.\r\n *\r\n * The iterator will iterate through all items in all groups.\r\n *\r\n * @return Iterator\r\n */\r\n ListGrouper.prototype.iterator = function () {\r\n var _this = this;\r\n return $iter.flatten($iter.map($iter.fromArray(this._keys), function (key) {\r\n return $iter.fromArray(_this._groups[key]);\r\n }));\r\n };\r\n return ListGrouper;\r\n}(MultiDisposer));\r\nexport { ListGrouper };\r\n/**\r\n * A disposable list, which when disposed itself will call `dispose()` method\r\n * on all its items.\r\n */\r\nvar ListDisposer = /** @class */ (function (_super) {\r\n __extends(ListDisposer, _super);\r\n function ListDisposer(list, disposeOnRemove) {\r\n if (disposeOnRemove === void 0) { disposeOnRemove = true; }\r\n var _this = this;\r\n if (disposeOnRemove) {\r\n var disposer_1 = list.events.on(\"removed\", function (x) {\r\n x.oldValue.dispose();\r\n }, undefined, false);\r\n _this = _super.call(this, function () {\r\n disposer_1.dispose();\r\n // TODO clear the list ?\r\n $iter.each(list.iterator(), function (x) {\r\n x.dispose();\r\n });\r\n }) || this;\r\n }\r\n else {\r\n _this = _super.call(this, function () {\r\n // TODO clear the list ?\r\n $iter.each(list.iterator(), function (x) {\r\n x.dispose();\r\n });\r\n }) || this;\r\n }\r\n return _this;\r\n }\r\n return ListDisposer;\r\n}(Disposer));\r\nexport { ListDisposer };\r\n/**\r\n * Checks if specific index fits into length.\r\n *\r\n * @param index Index\r\n * @param len Length\r\n */\r\nfunction checkBounds(index, len) {\r\n if (!(index >= 0 && index < len)) {\r\n throw new Error(\"Index out of bounds: \" + index);\r\n }\r\n}\r\n/**\r\n * A List class is used to hold a number of indexed items of the same type.\r\n */\r\nvar List = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n *\r\n * @param initial Inital list of values to add to list\r\n */\r\n function List(initial) {\r\n if (initial === void 0) { initial = []; }\r\n /**\r\n * Event dispatcher.\r\n */\r\n this.events = new EventDispatcher();\r\n this._values = initial;\r\n }\r\n Object.defineProperty(List.prototype, \"values\", {\r\n /**\r\n * An array of values in the list.\r\n *\r\n * Do not use this property to add values. Rather use dedicated methods, like\r\n * `push()`, `removeIndex()`, etc.\r\n *\r\n * @readonly\r\n * @return List values\r\n */\r\n get: function () {\r\n return this._values;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if list contains specific item reference.\r\n *\r\n * @param item Item to search for\r\n * @return `true` if found, `false` if not found\r\n */\r\n List.prototype.contains = function (value) {\r\n return this._values.indexOf(value) !== -1;\r\n };\r\n /**\r\n * Removes specific item from the list.\r\n *\r\n * @param item An item to remove\r\n */\r\n List.prototype.removeValue = function (value) {\r\n var i = 0;\r\n var length = this._values.length;\r\n while (i < length) {\r\n // TODO handle NaN\r\n if (this._values[i] === value) {\r\n this.removeIndex(i);\r\n --length;\r\n }\r\n else {\r\n ++i;\r\n }\r\n }\r\n };\r\n /**\r\n * Searches the list for specific item and returns its index.\r\n *\r\n * @param item An item to search for\r\n * @return Index or -1 if not found\r\n */\r\n List.prototype.indexOf = function (value) {\r\n return $array.indexOf(this._values, value);\r\n };\r\n Object.defineProperty(List.prototype, \"length\", {\r\n /**\r\n * Number of items in list.\r\n *\r\n * @readonly\r\n * @return Number of items\r\n */\r\n get: function () {\r\n return this._values.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if there's a value at specific index.\r\n *\r\n * @param index Index\r\n * @return Value exists?\r\n */\r\n List.prototype.hasIndex = function (index) {\r\n return index >= 0 && index < this._values.length;\r\n };\r\n /**\r\n * Returns an item at specified index.\r\n *\r\n * @param index Index\r\n * @return List item\r\n */\r\n List.prototype.getIndex = function (index) {\r\n return this._values[index];\r\n };\r\n /**\r\n * Sets value at specific index.\r\n *\r\n * If there's already a value at the index, it is overwritten.\r\n *\r\n * @param index Index\r\n * @param value New value\r\n * @return New value\r\n */\r\n List.prototype.setIndex = function (index, value) {\r\n checkBounds(index, this._values.length);\r\n var oldValue = this._values[index];\r\n // Do nothing if the old value and the new value are the same\r\n if (oldValue !== value) {\r\n this._values[index] = value;\r\n if (this.events.isEnabled(\"setIndex\")) {\r\n this.events.dispatchImmediately(\"setIndex\", {\r\n type: \"setIndex\",\r\n target: this,\r\n index: index,\r\n oldValue: oldValue,\r\n newValue: value\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n oldValue: oldValue\r\n });\r\n }\r\n if (this.events.isEnabled(\"inserted\")) {\r\n this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: this,\r\n newValue: value\r\n });\r\n }\r\n }\r\n return oldValue;\r\n };\r\n /**\r\n * Adds an item to the list at a specific index, which pushes all the other\r\n * items further down the list.\r\n *\r\n * @param index Index\r\n * @param item An item to add\r\n */\r\n List.prototype.insertIndex = function (index, value) {\r\n checkBounds(index, this._values.length + 1);\r\n $array.insertIndex(this._values, index, value);\r\n if (this.events.isEnabled(\"insertIndex\")) {\r\n this.events.dispatchImmediately(\"insertIndex\", {\r\n type: \"insertIndex\",\r\n target: this,\r\n index: index,\r\n newValue: value\r\n });\r\n }\r\n if (this.events.isEnabled(\"inserted\")) {\r\n this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: this,\r\n newValue: value\r\n });\r\n }\r\n };\r\n /**\r\n * [_sortQuicksort description]\r\n *\r\n * @todo Description\r\n * @param low [description]\r\n * @param high [description]\r\n * @param order [description]\r\n */\r\n List.prototype._sortQuicksort = function (low, high, order) {\r\n if (low < high) {\r\n var p = this._sortPartition(low, high, order);\r\n this._sortQuicksort(low, p, order);\r\n this._sortQuicksort(p + 1, high, order);\r\n }\r\n };\r\n /**\r\n * [_sortPartition description]\r\n *\r\n * @todo Description\r\n * @param low [description]\r\n * @param high [description]\r\n * @param order [description]\r\n * @return [description]\r\n */\r\n List.prototype._sortPartition = function (low, high, order) {\r\n var values = this._values;\r\n var pivot = values[low];\r\n var i = low - 1;\r\n var j = high + 1;\r\n for (;;) {\r\n do {\r\n ++i;\r\n } while (order(values[i], pivot) < 0);\r\n do {\r\n --j;\r\n } while (order(values[j], pivot) > 0);\r\n if (i >= j) {\r\n return j;\r\n }\r\n else {\r\n this.swap(i, j);\r\n }\r\n }\r\n };\r\n /**\r\n * Reorders list items according to specific ordering function.\r\n *\r\n * @param order Ordering function\r\n */\r\n List.prototype.sort = function (order) {\r\n // https://en.wikipedia.org/wiki/Quicksort#Hoare_partition_scheme\r\n // @todo faster implementation of this\r\n // @todo test this\r\n this._sortQuicksort(0, this._values.length - 1, order);\r\n };\r\n /**\r\n * Swaps indexes of two items in the list.\r\n *\r\n * @param a Item 1\r\n * @param b Item 2\r\n */\r\n List.prototype.swap = function (a, b) {\r\n var len = this._values.length;\r\n checkBounds(a, len);\r\n checkBounds(b, len);\r\n if (a !== b) {\r\n var value_a = this._values[a];\r\n var value_b = this._values[b];\r\n this._values[a] = value_b;\r\n if (this.events.isEnabled(\"setIndex\")) {\r\n this.events.dispatchImmediately(\"setIndex\", {\r\n type: \"setIndex\",\r\n target: this,\r\n index: a,\r\n oldValue: value_a,\r\n newValue: value_b\r\n });\r\n }\r\n this._values[b] = value_a;\r\n if (this.events.isEnabled(\"setIndex\")) {\r\n this.events.dispatchImmediately(\"setIndex\", {\r\n type: \"setIndex\",\r\n target: this,\r\n index: b,\r\n oldValue: value_b,\r\n newValue: value_a\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Removes a value at specific index.\r\n *\r\n * @param index Index of value to remove\r\n * @return Removed value\r\n */\r\n List.prototype.removeIndex = function (index) {\r\n checkBounds(index, this._values.length);\r\n var oldValue = this._values[index];\r\n $array.removeIndex(this._values, index);\r\n if (this.events.isEnabled(\"removeIndex\")) {\r\n this.events.dispatchImmediately(\"removeIndex\", {\r\n type: \"removeIndex\",\r\n target: this,\r\n index: index,\r\n oldValue: oldValue\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n oldValue: oldValue\r\n });\r\n }\r\n return oldValue;\r\n };\r\n /**\r\n * Moves an item to a specific index within the list.\r\n *\r\n * If the index is not specified it will move the item to the end of the\r\n * list.\r\n *\r\n * @param value Item to move\r\n * @param index Index to place item at\r\n */\r\n List.prototype.moveValue = function (value, toIndex) {\r\n // TODO don't do anything if the desired index is the same as the current index\r\n var index = this.indexOf(value);\r\n // TODO remove all old values rather than only the first ?\r\n if (index !== -1) {\r\n var oldValue = this._values[index];\r\n $array.removeIndex(this._values, index);\r\n if (this.events.isEnabled(\"removeIndex\")) {\r\n this.events.dispatchImmediately(\"removeIndex\", {\r\n type: \"removeIndex\",\r\n target: this,\r\n index: index,\r\n oldValue: oldValue\r\n });\r\n }\r\n }\r\n if (toIndex == null) {\r\n toIndex = this._values.length;\r\n this._values.push(value);\r\n }\r\n else {\r\n $array.insertIndex(this._values, toIndex, value);\r\n }\r\n if (this.events.isEnabled(\"insertIndex\")) {\r\n this.events.dispatchImmediately(\"insertIndex\", {\r\n type: \"insertIndex\",\r\n target: this,\r\n index: toIndex,\r\n newValue: value\r\n });\r\n }\r\n if (index === -1) {\r\n if (this.events.isEnabled(\"inserted\")) {\r\n this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: this,\r\n newValue: value\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Adds an item to the end of the list.\r\n *\r\n * @param item An item to add\r\n */\r\n List.prototype.push = function (value) {\r\n var index = this._values.push(value) - 1;\r\n if (this.events.isEnabled(\"insertIndex\")) {\r\n this.events.dispatchImmediately(\"insertIndex\", {\r\n type: \"insertIndex\",\r\n target: this,\r\n index: index,\r\n newValue: value\r\n });\r\n }\r\n if (this.events.isEnabled(\"inserted\")) {\r\n this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: this,\r\n newValue: value\r\n });\r\n }\r\n return value;\r\n };\r\n /**\r\n * Adds an item as a first item in the list.\r\n *\r\n * @param item An item to add\r\n */\r\n List.prototype.unshift = function (value) {\r\n this.insertIndex(0, value);\r\n };\r\n /**\r\n * Adds multiple items to the list.\r\n *\r\n * @param items An Array of items to add\r\n */\r\n List.prototype.pushAll = function (values) {\r\n var _this = this;\r\n $array.each(values, function (value) {\r\n _this.push(value);\r\n });\r\n };\r\n /**\r\n * Copies and adds items from abother list.\r\n *\r\n * @param source A list top copy items from\r\n */\r\n List.prototype.copyFrom = function (source) {\r\n this.pushAll(source._values);\r\n };\r\n /**\r\n * Returns the last item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\r\n List.prototype.pop = function () {\r\n var index = this._values.length - 1;\r\n return index < 0 ? undefined : this.removeIndex(this._values.length - 1);\r\n };\r\n /**\r\n * Returns the first item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\r\n List.prototype.shift = function () {\r\n return this._values.length ? this.removeIndex(0) : undefined;\r\n };\r\n /**\r\n * Sets multiple items to the list.\r\n *\r\n * All current items are removed.\r\n *\r\n * @param newArray New items\r\n */\r\n List.prototype.setAll = function (newArray) {\r\n var _this = this;\r\n // @tod if a value exists in both the new and old arrays, don't send remove/insert events\r\n var oldArray = $array.copy(this._values);\r\n this._values.length = 0;\r\n $array.each(newArray, function (value) {\r\n _this._values.push(value);\r\n });\r\n if (this.events.isEnabled(\"setAll\")) {\r\n this.events.dispatchImmediately(\"setAll\", {\r\n type: \"setAll\",\r\n target: this,\r\n oldArray: oldArray,\r\n newArray: this._values // TODO make a copy ?\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n $array.each(oldArray, function (x) {\r\n _this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: _this,\r\n oldValue: x\r\n });\r\n });\r\n }\r\n if (this.events.isEnabled(\"inserted\")) {\r\n $array.each(this._values, function (x) {\r\n _this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: _this,\r\n newValue: x\r\n });\r\n });\r\n }\r\n };\r\n /**\r\n * Removes all items from the list.\r\n */\r\n List.prototype.clear = function () {\r\n this.setAll([]);\r\n };\r\n /**\r\n * Returns a list iterator.\r\n *\r\n * @return Iterator\r\n */\r\n List.prototype.iterator = function () {\r\n return $iter.fromArray(this._values);\r\n };\r\n /**\r\n * Returns an ES6 iterator for the list.\r\n */\r\n List.prototype[Symbol.iterator] = function () {\r\n var length, i;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n length = this._values.length;\r\n i = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i < length)) return [3 /*break*/, 4];\r\n return [4 /*yield*/, this._values[i]];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n ++i;\r\n return [3 /*break*/, 1];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n /**\r\n * Calls `f` for each element in the list.\r\n *\r\n * `f` should have at least one parameter defined which will get a current\r\n * item, with optional second argument - index.\r\n */\r\n List.prototype.each = function (f) {\r\n $array.each(this._values, f);\r\n };\r\n /**\r\n * Returns a specific range of list items, which can be iterated.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Code duplication with IndexedIterable\r\n * @param start Start index\r\n * @param end End index\r\n * @return Range\r\n */\r\n List.prototype.range = function (start, end) {\r\n if (start <= end) {\r\n var diff = end - start;\r\n start = Math.max(start, 0);\r\n end = Math.min(start + diff, this._values.length);\r\n return new IndexedIterable(this._values, start, end);\r\n }\r\n else {\r\n throw new Error(\"Start index must be lower than end index\");\r\n }\r\n };\r\n /**\r\n * Returns an iterator that has list items sorted backwards.\r\n *\r\n * @ignore Exclude from docs\r\n * @return List\r\n */\r\n List.prototype.backwards = function () {\r\n return new IndexedIterable(this._values, this._values.length, 0);\r\n };\r\n return List;\r\n}());\r\nexport { List };\r\n/**\r\n * A version of a [[List]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nvar ListTemplate = /** @class */ (function (_super) {\r\n __extends(ListTemplate, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n */\r\n function ListTemplate(t) {\r\n var _this = _super.call(this) || this;\r\n _this.template = t;\r\n return _this;\r\n }\r\n Object.defineProperty(ListTemplate.prototype, \"template\", {\r\n /**\r\n * @return Template object\r\n */\r\n get: function () {\r\n return this._template;\r\n },\r\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\r\n set: function (v) {\r\n v.isTemplate = true;\r\n this._template = v;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all elements from other list.\r\n *\r\n * @param source Source list\r\n */\r\n ListTemplate.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source.iterator(), function (value) {\r\n _this.push(value.clone());\r\n });\r\n };\r\n ListTemplate.prototype.create = function (make) {\r\n var clone = (make != null\r\n ? new make()\r\n : this.template.clone());\r\n this.push(clone);\r\n return clone;\r\n };\r\n /**\r\n * Creates an exact clone of the list, including its items and template.\r\n *\r\n * @return New list\r\n */\r\n ListTemplate.prototype.clone = function () {\r\n var out = new ListTemplate(this.template);\r\n var values = this.values;\r\n var length = values.length;\r\n for (var i = 0; i < length; ++i) {\r\n out.push(values[i].clone());\r\n }\r\n return out;\r\n };\r\n return ListTemplate;\r\n}(List));\r\nexport { ListTemplate };\r\n","import { __read, __spread } from \"tslib\";\r\nimport { options } from \"../Options\";\r\n/**\r\n * Outputs string to console if `verbose` is `true`.\r\n */\r\nexport function log() {\r\n var messages = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n messages[_i] = arguments[_i];\r\n }\r\n if (options.verbose) {\r\n if (console) {\r\n console.log.apply(console, __spread(messages));\r\n }\r\n }\r\n}\r\n/**\r\n * Outputs a warning to the console.\r\n */\r\nexport function warn() {\r\n var messages = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n messages[_i] = arguments[_i];\r\n }\r\n if (!options.suppressWarnings) {\r\n if (console) {\r\n console.warn.apply(console, __spread(messages));\r\n }\r\n }\r\n}\r\n","/**\r\n * A collection of Math-related functions\r\n *\r\n * @todo Comment trigonometric functions?\r\n */\r\nimport * as $type from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * CONSTANTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nexport var PI = Math.PI;\r\nexport var HALFPI = PI / 2;\r\nexport var RADIANS = PI / 180;\r\nexport var DEGREES = 180 / PI;\r\n/**\r\n * Converts any value and fits it into a specific value range.\r\n *\r\n * @param value Source value\r\n * @param min Minimum allowable value\r\n * @param max Maximum allowable value\r\n * @return Number\r\n */\r\nexport function toNumberRange(value, min, max) {\r\n if ($type.hasValue(value)) {\r\n value = $type.toNumber(value);\r\n return fitToRange(value, min, max);\r\n }\r\n return value;\r\n}\r\n/**\r\n * Rounds the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @param floor In case value ends with 0.5 and precision is 0, we might need to floor the value instead of ceiling it.\r\n * @return Rounded value\r\n */\r\nexport function round(value, precision, floor) {\r\n if (!$type.isNumber(precision) || precision <= 0) {\r\n var rounded = Math.round(value);\r\n if (floor) {\r\n if (rounded - value == 0.5) {\r\n rounded--;\r\n }\r\n }\r\n return rounded;\r\n }\r\n else {\r\n var d = Math.pow(10, precision);\r\n return Math.round(value * d) / d;\r\n }\r\n}\r\n/**\r\n * Ceils the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @return Rounded value\r\n */\r\nexport function ceil(value, precision) {\r\n if (!$type.isNumber(precision) || precision <= 0) {\r\n return Math.ceil(value);\r\n }\r\n else {\r\n var d = Math.pow(10, precision);\r\n return Math.ceil(value * d) / d;\r\n }\r\n}\r\n/**\r\n * Stretches `t` so that it will always be between `from` and `to`.\r\n *\r\n * @param t Number from 0 to 1\r\n * @param from Lowest possible value\r\n * @param to Highest possible value\r\n * @return Adjusted value\r\n */\r\nexport function stretch(t, from, to) {\r\n return (t * (to - from)) + from;\r\n}\r\n/**\r\n * Adjust numeric value so it fits to specific value range.\r\n *\r\n * @param value Value\r\n * @param minValue Lowest possible value\r\n * @param maxValue Highest possible value\r\n * @return Adjusted value\r\n */\r\nexport function fitToRange(value, minValue, maxValue) {\r\n if ($type.isNumber(minValue)) {\r\n if ($type.isNumber(maxValue) && maxValue < minValue) {\r\n var temp = maxValue;\r\n maxValue = minValue;\r\n minValue = temp;\r\n }\r\n if (value < minValue) {\r\n value = minValue;\r\n }\r\n }\r\n if ($type.isNumber(maxValue)) {\r\n if (value > maxValue) {\r\n value = maxValue;\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * Returns sine of a number.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function sin(value) {\r\n return round(Math.sin(RADIANS * value), 10);\r\n}\r\n/**\r\n * Returns tan of a number.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function tan(value) {\r\n return round(Math.tan(RADIANS * value), 10);\r\n}\r\n/**\r\n * Returns cosine of a number.\r\n *\r\n * @param value Value\r\n * @return Cosine\r\n */\r\nexport function cos(value) {\r\n return round(Math.cos(RADIANS * value), 10);\r\n}\r\nexport function max(left, right) {\r\n if ($type.isNumber(left)) {\r\n if ($type.isNumber(right)) {\r\n if (right > left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n }\r\n else {\r\n return left;\r\n }\r\n }\r\n else if ($type.isNumber(right)) {\r\n return right;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\nexport function min(left, right) {\r\n if ($type.isNumber(left)) {\r\n if ($type.isNumber(right)) {\r\n if (right < left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n }\r\n else {\r\n return left;\r\n }\r\n }\r\n else if ($type.isNumber(right)) {\r\n return right;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n/**\r\n * Returns the closest value from the array of values to the reference value.\r\n *\r\n * @param values Array of values\r\n * @param value Reference value\r\n * @return Closes value from the array\r\n */\r\nexport function closest(values, referenceValue) {\r\n return values.reduce(function (prev, curr) {\r\n return (Math.abs(curr - referenceValue) < Math.abs(prev - referenceValue) ? curr : prev);\r\n });\r\n}\r\n/**\r\n * Checks whether two ranges of values intersect.\r\n *\r\n * @param range1 Range 1\r\n * @param range2 Range 2\r\n * @return Any intersecting numbers?\r\n */\r\nexport function intersect(range1, range2) {\r\n var start1 = $type.getValue(range1.start);\r\n var start2 = $type.getValue(range2.start);\r\n var end1 = $type.getValue(range1.end);\r\n var end2 = $type.getValue(range2.end);\r\n return Math.max(start1, start2) <= Math.min(end1, end2);\r\n}\r\n/**\r\n * Inverts the range of values.\r\n *\r\n * @param range Range\r\n */\r\nexport function invertRange(range) {\r\n var start = $type.getValue(range.start);\r\n var end = $type.getValue(range.end);\r\n return { start: 1 - end, end: 1 - start };\r\n}\r\n/**\r\n * Returns an intersection range between two ranges of values.\r\n *\r\n * @param range1 Range 1\r\n * @param range2 Range 2\r\n * @return Intersecting value range\r\n */\r\nexport function intersection(range1, range2) {\r\n var start1 = $type.getValue(range1.start);\r\n var start2 = $type.getValue(range2.start);\r\n var end1 = $type.getValue(range1.end);\r\n var end2 = $type.getValue(range2.end);\r\n var startMax = Math.max(start1, start2);\r\n var endMin = Math.min(end1, end2);\r\n if (endMin < startMax) {\r\n return undefined;\r\n }\r\n else {\r\n return { start: startMax, end: endMin };\r\n }\r\n}\r\n/**\r\n * Returns pixel \"distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\r\nexport function getDistance(point1, point2) {\r\n if (!point1) {\r\n return 0;\r\n }\r\n if (!point2) {\r\n point2 = { x: 0, y: 0 };\r\n }\r\n return Math.sqrt(Math.pow(Math.abs(point1.x - point2.x), 2) + Math.pow(Math.abs(point1.y - point2.y), 2));\r\n}\r\n/**\r\n * Returns pixel \"horizontal distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\r\nexport function getHorizontalDistance(point1, point2) {\r\n if (!point1) {\r\n return 0;\r\n }\r\n if (!point2) {\r\n point2 = { x: 0, y: 0 };\r\n }\r\n return Math.abs(point1.x - point2.x);\r\n}\r\n/**\r\n * Returns pixel \"vertical distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\r\nexport function getVerticalDistance(point1, point2) {\r\n if (!point1) {\r\n return 0;\r\n }\r\n if (!point2) {\r\n point2 = { x: 0, y: 0 };\r\n }\r\n return Math.abs(point1.y - point2.y);\r\n}\r\n/**\r\n * Returns approximate pixel \"distance\" between two points of cubic curve\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @param controlPointA Control Point 1\r\n * @param controlPointB Control Point 2\r\n * @param stepCount number of steps (the more, the more accurate result)\r\n * @return Distance in relative pixels\r\n */\r\nexport function getCubicCurveDistance(point1, point2, controlPointA, controlPointB, stepCount) {\r\n if (!point1) {\r\n return 0;\r\n }\r\n if (!point2) {\r\n point2 = { x: 0, y: 0 };\r\n }\r\n var distance = 0;\r\n var prevPoint = point1;\r\n if (stepCount > 0) {\r\n for (var s = 0; s <= stepCount; s++) {\r\n var point = getPointOnCubicCurve(point1, point2, controlPointA, controlPointB, s / stepCount);\r\n distance += getDistance(prevPoint, point);\r\n prevPoint = point;\r\n }\r\n }\r\n return distance;\r\n}\r\n/**\r\n * Returns scale based on original and end position of the two points.\r\n *\r\n * @param point1 Current position of point 1\r\n * @param startPoint1 Start position of point 1\r\n * @param point2 Current position of point 1\r\n * @param startPoint2 Start position of point 2\r\n * @return Scale Calculated scale\r\n */\r\nexport function getScale(point1, startPoint1, point2, startPoint2) {\r\n var initialDistance = getDistance(startPoint1, startPoint2);\r\n var currentDistance = getDistance(point1, point2);\r\n return Math.abs(currentDistance / initialDistance);\r\n}\r\n/**\r\n * Returns an exact mid point between two points.\r\n *\r\n * @param point1 Position of point 1\r\n * @param point2 Position of point 2\r\n * @return Mid point Position of mid-point\r\n */\r\nexport function getMidPoint(point1, point2, position) {\r\n if (!$type.isNumber(position)) {\r\n position = 0.5;\r\n }\r\n return {\r\n \"x\": (point1.x + (point2.x - point1.x) * position),\r\n \"y\": (point1.y + (point2.y - point1.y) * position)\r\n };\r\n}\r\n/**\r\n * Returns difference in angles between starting and ending position of two\r\n * vectors.\r\n *\r\n * @param point1 Current position of point 1\r\n * @param startPoint1 Start position of point 1\r\n * @param point2 Current position of point 1\r\n * @param startPoint2 Start position of point 2\r\n * @return Angle difference in degrees\r\n */\r\nexport function getRotation(point1, startPoint1, point2, startPoint2) {\r\n // Get start and end angles\r\n var startAngle = getAngle(startPoint1, startPoint2);\r\n var angle = getAngle(point1, point2);\r\n // Calculate angle\r\n var diff = startAngle - angle;\r\n if (diff < 0) {\r\n diff += 360;\r\n }\r\n return diff;\r\n}\r\n/**\r\n * Calculates angle of the vector based on two or one point.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Angle in degrees\r\n */\r\nexport function getAngle(point1, point2) {\r\n if (!point2) {\r\n point2 = { x: point1.x * 2, y: point1.y * 2 };\r\n }\r\n var diffX = point2.x - point1.x;\r\n var diffY = point2.y - point1.y;\r\n var angle = Math.atan2(diffY, diffX) * DEGREES;\r\n if (angle < 0) {\r\n angle += 360;\r\n }\r\n return normalizeAngle(angle);\r\n}\r\n/**\r\n * Returns the shift in coordinates of the center when item is rotated, moved\r\n * and scaled at the same time.\r\n *\r\n * @param center Current center\r\n * @param point1 Frst reference point\r\n * @param startPoint1 Original position of the first reference point\r\n * @param point2 Second reference point\r\n * @param startPoint2 Original position of the first reference point\r\n * @return Shift in center point coordinates\r\n */\r\nexport function getCenterShift(center, point1, startPoint1, point2, startPoint2) {\r\n // Get angle\r\n var angle = getRotation(point1, startPoint1, point2, startPoint2) - 90;\r\n if (angle < 0) {\r\n angle += 360;\r\n }\r\n // Get distance between new position\r\n var distance = getDistance(point1, point2);\r\n // Calculate new X\r\n var x = Math.cos(angle) / distance + point1.x;\r\n var y = Math.cos(angle) / distance + point1.y;\r\n var shift = {\r\n \"x\": x - center.x,\r\n \"y\": y - center.y\r\n };\r\n return shift;\r\n}\r\n/**\r\n * Converts an array of points into a bounding box rectangle.\r\n *\r\n * Array can contain any number of points.\r\n *\r\n * @param points Points\r\n * @return Bounding box rectangle\r\n */\r\nexport function getBBox(points) {\r\n if (points) {\r\n var length_1 = points.length;\r\n if (length_1 !== 0) {\r\n var left = void 0;\r\n var right = void 0;\r\n var top_1;\r\n var bottom = void 0;\r\n for (var i = 0; i < length_1; i++) {\r\n var point = points[i];\r\n if (!$type.isNumber(right) || (point.x > right)) {\r\n right = point.x;\r\n }\r\n if (!$type.isNumber(left) || (point.x < left)) {\r\n left = point.x;\r\n }\r\n if (!$type.isNumber(top_1) || (point.y < top_1)) {\r\n top_1 = point.y;\r\n }\r\n if (!$type.isNumber(bottom) || (point.y > bottom)) {\r\n bottom = point.y;\r\n }\r\n }\r\n return { x: left, y: top_1, width: right - left, height: bottom - top_1 };\r\n }\r\n }\r\n return { x: 0, y: 0, width: 0, height: 0 };\r\n}\r\n/**\r\n * Returns a [[IRectangle]] object representing a common rectangle that fits\r\n * all passed in rectangles in it.\r\n *\r\n * @param rectangles An array of rectangles\r\n * @return Common rectangle\r\n */\r\nexport function getCommonRectangle(rectangles) {\r\n var length = rectangles.length;\r\n if (length !== 0) {\r\n var minX = void 0;\r\n var minY = void 0;\r\n var maxX = void 0;\r\n var maxY = void 0;\r\n for (var i = 0; i < length; i++) {\r\n var rectangle = rectangles[i];\r\n minX = min(rectangle.x, minX);\r\n minY = min(rectangle.y, minY);\r\n maxX = max(rectangle.x + rectangle.width, maxX);\r\n maxY = max(rectangle.y + rectangle.height, maxY);\r\n }\r\n return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\r\n }\r\n}\r\n/**\r\n * [getPointOnQuadraticCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPoint [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\r\nexport function getPointOnQuadraticCurve(pointA, pointB, controlPoint, position) {\r\n var x = (1 - position) * (1 - position) * pointA.x + 2 * (1 - position) * position * controlPoint.x + position * position * pointB.x;\r\n var y = (1 - position) * (1 - position) * pointA.y + 2 * (1 - position) * position * controlPoint.y + position * position * pointB.y;\r\n return { x: x, y: y };\r\n}\r\n/**\r\n * [getPointOnCubicCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPointA [description]\r\n * @param controlPointB [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\r\nexport function getPointOnCubicCurve(pointA, pointB, controlPointA, controlPointB, position) {\r\n var point = { x: 0, y: 0 };\r\n var mt1 = 1 - position;\r\n var mt2 = mt1 * mt1;\r\n var mt3 = mt2 * mt1;\r\n point.x = pointA.x * mt3 + controlPointA.x * 3 * mt2 * position + controlPointB.x * 3 * mt1 * position * position + pointB.x * position * position * position;\r\n point.y = pointA.y * mt3 + controlPointA.y * 3 * mt2 * position + controlPointB.y * 3 * mt1 * position * position + pointB.y * position * position * position;\r\n return point;\r\n}\r\n/**\r\n * [getCubicControlPointA description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointA(p0, p1, p2, p3, tensionX, tensionY) {\r\n tensionX = adjustTension(tensionX);\r\n tensionY = adjustTension(tensionY);\r\n return { x: ((-p0.x + p1.x / tensionX + p2.x) * tensionX), y: ((-p0.y + p1.y / tensionY + p2.y) * tensionY) };\r\n}\r\n/**\r\n * [getCubicControlPointB description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointB(p0, p1, p2, p3, tensionX, tensionY) {\r\n tensionX = adjustTension(tensionX);\r\n tensionY = adjustTension(tensionY);\r\n return { x: ((p1.x + p2.x / tensionX - p3.x) * tensionX), y: ((p1.y + p2.y / tensionY - p3.y) * tensionY) };\r\n}\r\n/**\r\n * [adjustTension description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param tension [description]\r\n * @return [description]\r\n */\r\nexport function adjustTension(tension) {\r\n return 1 - tension + 0.00001;\r\n}\r\n/**\r\n * [normalizeAngle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n * @return [description]\r\n */\r\nexport function normalizeAngle(value) {\r\n if (value == 360) {\r\n return 360;\r\n }\r\n return value % 360;\r\n}\r\n/**\r\n * [normalizeAngleToRange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @todo review this with various angles, can be tested on radar chart with custom start/end angles\r\n * @param value [description]\r\n * @param startAngle [description]\r\n * @param endAngle [description]\r\n * @return [description]\r\n */\r\nexport function fitAngleToRange(value, startAngle, endAngle) {\r\n if (startAngle > endAngle) {\r\n var temp = startAngle;\r\n startAngle = endAngle;\r\n endAngle = temp;\r\n }\r\n value = normalizeAngle(value);\r\n var count = (startAngle - normalizeAngle(startAngle)) / 360;\r\n if (value < startAngle) {\r\n value += 360 * (count + 1);\r\n }\r\n var maxEnd = startAngle + (endAngle - startAngle) / 2 + 180;\r\n var maxStart = startAngle + (endAngle - startAngle) / 2 - 180;\r\n if (value > endAngle) {\r\n if (value - 360 > startAngle) {\r\n value -= 360;\r\n }\r\n else {\r\n if (value < maxEnd) {\r\n value = endAngle;\r\n }\r\n else {\r\n value = startAngle;\r\n }\r\n }\r\n }\r\n if (value < startAngle) {\r\n if (value > maxStart) {\r\n value = startAngle;\r\n }\r\n else {\r\n value = endAngle;\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * Returns [[IRectangle]] of an arc in relative values, assuming that the\r\n * center is at the circle center.\r\n *\r\n * Used to find out max radius of an arc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param startAngle Start angle\r\n * @param endAngle End angle\r\n * @param radius \t Relative radius\r\n * @return Rectangle\r\n */\r\nexport function getArcRect(startAngle, endAngle, radius) {\r\n var minX = Number.MAX_VALUE;\r\n var minY = Number.MAX_VALUE;\r\n var maxX = -Number.MAX_VALUE;\r\n var maxY = -Number.MAX_VALUE;\r\n var bpoints = [];\r\n if (!$type.isNumber(radius)) {\r\n radius = 1;\r\n }\r\n bpoints.push(getArcPoint(radius, startAngle));\r\n bpoints.push(getArcPoint(radius, endAngle));\r\n var fromAngle = Math.min(Math.floor(startAngle / 90) * 90, Math.floor(endAngle / 90) * 90);\r\n var toAngle = Math.max(Math.ceil(startAngle / 90) * 90, Math.ceil(endAngle / 90) * 90);\r\n for (var angle = fromAngle; angle <= toAngle; angle += 90) {\r\n if (angle >= startAngle && angle <= endAngle) {\r\n bpoints.push(getArcPoint(radius, angle));\r\n }\r\n }\r\n for (var i = 0; i < bpoints.length; i++) {\r\n var pt = bpoints[i];\r\n if (pt.x < minX) {\r\n minX = pt.x;\r\n }\r\n if (pt.y < minY) {\r\n minY = pt.y;\r\n }\r\n if (pt.x > maxX) {\r\n maxX = pt.x;\r\n }\r\n if (pt.y > maxY) {\r\n maxY = pt.y;\r\n }\r\n }\r\n return ({ x: minX, y: minY, width: maxX - minX, height: maxY - minY });\r\n}\r\n/**\r\n * Returns point on arc\r\n *\r\n * @param center point\r\n * @param radius\r\n * @param arc\r\n * @return {boolean}\r\n */\r\nexport function getArcPoint(radius, arc) {\r\n return ({ x: radius * cos(arc), y: radius * sin(arc) });\r\n}\r\n/**\r\n * Returns true if a point is within rectangle\r\n *\r\n * @param point\r\n * @param rectangle\r\n * @return {boolean}\r\n */\r\nexport function isInRectangle(point, rectangle) {\r\n if (point.x >= rectangle.x && point.x <= rectangle.x + rectangle.width && point.y >= rectangle.y && point.y <= rectangle.y + rectangle.height) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function getLineIntersection(pointA1, pointA2, pointB1, pointB2) {\r\n var x = ((pointA1.x * pointA2.y - pointA2.x * pointA1.y) * (pointB1.x - pointB2.x) - (pointA1.x - pointA2.x) * (pointB1.x * pointB2.y - pointB1.y * pointB2.x)) / ((pointA1.x - pointA2.x) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x - pointB2.x));\r\n var y = ((pointA1.x * pointA2.y - pointA2.x * pointA1.y) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x * pointB2.y - pointB1.y * pointB2.x)) / ((pointA1.x - pointA2.x) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x - pointB2.x));\r\n return { x: x, y: y };\r\n}\r\n","/**\r\n * A collection of network-related functions\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Loads an external file via its URL.\r\n *\r\n * Please note that this is an asynchronous function.\r\n *\r\n * It will not return the result, but rather a `Promise`.\r\n *\r\n * You can use the `await` notion, or `then()`.\r\n *\r\n * ```TypeScript\r\n * // Using await\r\n * let response = await Net.load( \"http://www.my.com/data.json\" );\r\n * console.log( response.response );\r\n *\r\n * // Using then()\r\n * Net.load( \"http://www.my.com/data.json\" ).then( ( response ) => {\r\n * console.log( response.response );\r\n * } );\r\n * ```\r\n * ```JavaScript\r\n * // Using then()\r\n * Net.load( \"http://www.my.com/data.json\" ).then( function( response ) {\r\n * console.log( response.response );\r\n * } );\r\n * ```\r\n *\r\n * @async\r\n * @param url URL for the file to load\r\n * @param target A target element that is requesting the net load\r\n * @param options Request options\r\n * @return Result (Promise)\r\n */\r\nexport function load(url, target, options) {\r\n return new Promise(function (success, error) {\r\n // Is return type Blob?\r\n var isBlob = $type.hasValue(options) && options.responseType == \"blob\";\r\n // Create request and set up handlers\r\n var xhr = new XMLHttpRequest();\r\n xhr.onload = function () {\r\n if (xhr.status === 200) {\r\n var response = void 0;\r\n var blob_1;\r\n if (isBlob) {\r\n blob_1 = xhr.response;\r\n readBlob(blob_1).then(function (response) {\r\n var output = {\r\n xhr: xhr,\r\n error: false,\r\n response: response,\r\n blob: blob_1,\r\n type: xhr.getResponseHeader(\"Content-Type\"),\r\n target: target\r\n };\r\n success(output);\r\n });\r\n return;\r\n }\r\n else {\r\n response = xhr.responseText || xhr.response;\r\n }\r\n var output = {\r\n xhr: xhr,\r\n error: false,\r\n response: response,\r\n blob: blob_1,\r\n type: xhr.getResponseHeader(\"Content-Type\"),\r\n target: target\r\n };\r\n success(output);\r\n }\r\n else {\r\n error({\r\n xhr: xhr,\r\n error: true,\r\n type: xhr.getResponseHeader(\"Content-Type\"),\r\n target: target\r\n });\r\n }\r\n };\r\n xhr.onerror = function () {\r\n error({\r\n xhr: xhr,\r\n error: true,\r\n type: xhr.getResponseHeader(\"Content-Type\"),\r\n target: target\r\n });\r\n };\r\n // Open request\r\n xhr.open(\"GET\", url, true);\r\n if (options && options.withCredentials) {\r\n xhr.withCredentials = true;\r\n }\r\n // Process options\r\n if ($type.hasValue(options)) {\r\n if ($type.hasValue(options.requestHeaders)) {\r\n for (var i = 0; i < options.requestHeaders.length; i++) {\r\n var header = options.requestHeaders[i];\r\n xhr.setRequestHeader(header.key, header.value);\r\n }\r\n }\r\n if ($type.hasValue(options.responseType)) {\r\n xhr.responseType = options.responseType;\r\n }\r\n }\r\n // Send request\r\n xhr.send();\r\n });\r\n}\r\n/**\r\n * Returns textual representation of a Blob object.\r\n *\r\n * @param blob Target blob\r\n * @return Text promise\r\n */\r\nexport function readBlob(blob) {\r\n return new Promise(function (success, error) {\r\n var reader = new FileReader();\r\n reader.onload = function (event) {\r\n success(reader.result);\r\n };\r\n reader.onerror = function (e) {\r\n error(e);\r\n };\r\n reader.readAsText(blob);\r\n });\r\n}\r\n","/**\r\n * ============================================================================\r\n * COMPARING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Comparing function used for ordering.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Number 1\r\n * @param b Number 2\r\n * @return Result\r\n */\r\nexport function order(a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n else if (a < b) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns an iterator for all entries in object.\r\n *\r\n * Can be used to safely iterate through all properties of the object.\r\n *\r\n * @param object Source object\r\n * @returns Iterator\r\n */\r\nexport function entries(object) {\r\n return function (push) {\r\n // TODO make this more efficient ?\r\n for (var key in object) {\r\n if (hasKey(object, key)) {\r\n if (!push([key, object[key]])) {\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n}\r\n/**\r\n * Returns an array of object's property names.\r\n *\r\n * @param object Source object\r\n * @returns Object property names\r\n */\r\nexport function keys(object) {\r\n var output = [];\r\n for (var key in object) {\r\n if (hasKey(object, key)) {\r\n output.push(key);\r\n }\r\n }\r\n return output;\r\n}\r\n/**\r\n * Returns an array of object's property names ordered using specific ordering\r\n * function.\r\n *\r\n * @param object Source object\r\n * @param order Ordering function\r\n * @returns Object property names\r\n */\r\nexport function keysOrdered(object, order) {\r\n return keys(object).sort(order);\r\n}\r\n/**\r\n * Checks if `object` has a specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Has key?\r\n */\r\nexport function hasKey(object, key) {\r\n return {}.hasOwnProperty.call(object, key);\r\n}\r\n/**\r\n * Returns value of the specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Key value\r\n */\r\nexport function getKey(object, key) {\r\n return object[key];\r\n}\r\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * If return value of the function evaluates to `false` further iteration is\r\n * cancelled.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue(object, fn) {\r\n for (var key in object) {\r\n if (hasKey(object, key)) {\r\n if (!fn(key, object[key])) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\r\nexport function each(object, fn) {\r\n eachContinue(object, function (key, value) {\r\n fn(key, value);\r\n return true;\r\n });\r\n}\r\n/**\r\n * Orders object properties using custom `ord` function and iterates through\r\n * them calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n * @param order Ordering function\r\n */\r\nexport function eachOrdered(object, fn, ord) {\r\n $array.each(keysOrdered(object, ord), function (key) {\r\n fn(key, object[key]);\r\n });\r\n}\r\n/**\r\n * Returns a copy of the object.\r\n *\r\n * @param object Source object\r\n * @returns Copy of the object\r\n */\r\nexport function copy(object) {\r\n return Object.assign({}, object);\r\n}\r\n/**\r\n * Merges two objects and returns a new object that contains properties from\r\n * both source objects.\r\n *\r\n * @param object1 Source object #1\r\n * @param object2 Source object #2\r\n * @returns Combined object\r\n */\r\nexport function merge(object1, object2) {\r\n return Object.assign({}, object1, object2);\r\n}\r\n/**\r\n * Returns object clone.\r\n *\r\n * @param object Source object\r\n * @returns Clone\r\n */\r\nexport function clone(object) {\r\n return JSON.parse(JSON.stringify(object));\r\n}\r\n/**\r\n * Copies a list of properties from one object to another.\r\n *\r\n * Will not copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\r\nexport function copyProperties(source, target, keys) {\r\n $array.each(keys, function (key) {\r\n if ($type.hasValue(source[key])) {\r\n target[key] = source[key];\r\n }\r\n });\r\n}\r\n/**\r\n * Copies a list of properties from one object to another only if target does't have value of the property set.\r\n *\r\n * Will not copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\r\nexport function softCopyProperties(source, target, keys) {\r\n $array.each(keys, function (key) {\r\n if ($type.hasValue(source[key]) && !($type.hasValue(target[key]))) {\r\n target[key] = source[key];\r\n }\r\n });\r\n}\r\n/**\r\n * Copies a list of properties from one object to another.\r\n *\r\n * Will copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\r\nexport function forceCopyProperties(source, target, keys) {\r\n $array.each(keys, function (key) {\r\n target[key] = source[key];\r\n });\r\n}\r\n/**\r\n * Copies all properties from one object to another.\r\n *\r\n * @param from Source object\r\n * @param to Target object\r\n */\r\nexport function copyAllProperties(from, to) {\r\n copyProperties(from, to, keys(from));\r\n}\r\n","/**\r\n * A collection of functions for ordering.\r\n */\r\n/**\r\n * [reverse description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param a [description]\r\n * @return [description]\r\n */\r\nexport function reverse(a) {\r\n switch (a) {\r\n case 0:\r\n return 0;\r\n case -1:\r\n return 1;\r\n case 1:\r\n return -1;\r\n }\r\n}\r\n/**\r\n * [or description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param a Item 1\r\n * @param b Item 2\r\n * @return [description]\r\n */\r\nexport function or(a, b) {\r\n if (a === 0) {\r\n return b;\r\n }\r\n else {\r\n return a;\r\n }\r\n}\r\n","/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a relative value (percent).\r\n *\r\n * The Percent object, can be instantiated using two ways:\r\n *\r\n * * Via `new Percent(X)`.\r\n * * Via `am4core.percent(X)`.\r\n *\r\n * `Percent` type objects can be used in a number of dual-measuring or\r\n * positioning properties, like `width`. E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.paddingRight = new Percent(10);\r\n * // or\r\n * chart.paddingRight = am4core.percent(10);\r\n * ```\r\n * ```JavaScript\r\n * chart.paddingRight = new Percent(10);\r\n * // or\r\n * chart.paddingRight = am4core.percent(10);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"paddingRight\": \"10%\"\r\n * }\r\n * ```\r\n */\r\nvar Percent = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param percent Percent value\r\n */\r\n function Percent(percent) {\r\n this._value = percent;\r\n }\r\n Object.defineProperty(Percent.prototype, \"value\", {\r\n /**\r\n * Relative value.\r\n *\r\n * E.g. 100% is 1, 50% is 0.5, etc.\r\n *\r\n * This is useful to apply transformations to other values. E.g.:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = new am4core.Percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = new am4core.Percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * Alternatively, you can use `am4core.percent()` helper function:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = am4core.percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = am4core.percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * @readonly\r\n * @return Relative value\r\n */\r\n get: function () {\r\n return this._value / 100;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Percent.prototype, \"percent\", {\r\n /**\r\n * Value in percent.\r\n *\r\n * @return Percent\r\n */\r\n get: function () {\r\n return this._value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Percent.prototype.toString = function () {\r\n return \"\" + this._value + \"%\";\r\n };\r\n return Percent;\r\n}());\r\nexport { Percent };\r\n/**\r\n * Converts numeric percent value to a proper [[Percent]] object.\r\n *\r\n * ```TypeScript\r\n * pieSeries.radius = am4core.percent(80);\r\n * ```\r\n * ```JavaScript\r\n * pieSeries.radius = am4core.percent(80);\r\n * ```\r\n *\r\n * @param value Percent\r\n * @return Percent object\r\n */\r\nexport function percent(value) {\r\n return new Percent(value);\r\n}\r\n/**\r\n * Checks if value is a [[Percent]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Input value\r\n * @return Is percent?\r\n */\r\nexport function isPercent(value) {\r\n return value instanceof Percent;\r\n}\r\n","/**\r\n * Responsive functionality module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { List } from \"../utils/List\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $object from \"../utils/Object\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Responsive is responsible for overriding certain properties when conditions\r\n * are met.\r\n *\r\n * This class is used to dynamically apply and change certain chart properties\r\n * based on the current values of properties.\r\n *\r\n * Mainly, this is used with [[Sprite]]'s dimensional properties, like\r\n * `pixelWidth` and `pixelHeight`. However, it can be used to dynamically\r\n * change any property, based on any other property's value.\r\n *\r\n * A default responsive rules are disabled.\r\n *\r\n * To enable, set `enabled = false`. E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.responsive.enabled = true;\r\n * ```\r\n * ```JavaScript\r\n * chart.responsive.enabled = true;\r\n * ```\r\n *\r\n * @see {@link IResponsiveEvents} for a list of available events\r\n * @see {@link IResponsiveAdapters} for a list of available Adapters\r\n * @todo Add default rules\r\n * @todo Watch for rule modification\r\n * @important\r\n */\r\nvar Responsive = /** @class */ (function (_super) {\r\n __extends(Responsive, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Responsive() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Holds a list of responsive rules organized by object type.\r\n */\r\n _this._rules = new List();\r\n /**\r\n * Holds the list of the default responsive rules.\r\n * @deprecated\r\n */\r\n //protected _defaultRules = new List<IResponsiveRule>();\r\n /**\r\n * Holds the list of currently applied rules.\r\n */\r\n _this._appliedRules = {};\r\n /**\r\n * Used to keep track of objects that have rules applied at the moment.\r\n */\r\n _this._appliedTargets = [];\r\n /**\r\n * Use default rules in addition to the user-defined ones?\r\n */\r\n _this._useDefault = true;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * Indicates of responsive rules application is enabled.\r\n */\r\n _this._enabled = false;\r\n /**\r\n * Holds disposers for all events added by this class.\r\n */\r\n _this._responsiveDisposers = [];\r\n /**\r\n * Collection of objects and state ids that do not have any properties set.\r\n */\r\n _this._noStates = [];\r\n _this.className = \"Responsive\";\r\n // Set up rules list events\r\n _this.rules.events.on(\"inserted\", function () { _this.checkRules(); }, true);\r\n _this.rules.events.on(\"removed\", function () { _this.checkRules(); }, true);\r\n _this._disposers.push(_this.rules.events);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Responsive.prototype, \"component\", {\r\n /**\r\n * @return Target object\r\n */\r\n get: function () {\r\n return this._component;\r\n },\r\n /**\r\n * A target object that responsive rules will need to be applied to.\r\n *\r\n * @param value Target object\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n // Check if it's the same\r\n if (value == this._component) {\r\n return;\r\n }\r\n // Check if we already have a set up component and remove its events\r\n this.disposeResponsiveHandlers();\r\n // Set\r\n this._component = value;\r\n // Set up resize monitoring events\r\n this._responsiveDisposers.push($type.getValue(this.component).events.on(\"sizechanged\", function () { _this.checkRules(); }, this));\r\n this._responsiveDisposers.push($type.getValue(this.component).events.once(\"datavalidated\", function () {\r\n if (_this._component.isReady()) {\r\n _this.checkRules(true);\r\n }\r\n }, this));\r\n // Enable resoponsive\r\n this.enabled = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Responsive.prototype, \"enabled\", {\r\n /**\r\n * @return Apply responsive rules?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"enabled\", this._enabled);\r\n },\r\n /**\r\n * Should responsive rules be checked against and applied?\r\n *\r\n * @default false\r\n * @param value Apply responsive rules?\r\n */\r\n set: function (value) {\r\n if (this._enabled != value) {\r\n this._enabled = value;\r\n // Run `applyRules` so that any currently applied rules can be reset\r\n this.applyRules();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Responsive.prototype, \"useDefault\", {\r\n /**\r\n * @return Use default rules?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"useDefault\", this._useDefault);\r\n },\r\n /**\r\n * Should default responsive rules be applied in addition to user-defined\r\n * ones.\r\n *\r\n * User-defined rules will take precedence over default rules whenever they\r\n * produce conflicting settings.\r\n *\r\n * @default true\r\n * @param value Use default rules?\r\n */\r\n set: function (value) {\r\n if (this._useDefault != value) {\r\n this._useDefault = value;\r\n // Run `applyRules` so that any currently applied rules can be reset\r\n this.applyRules();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Responsive.prototype, \"rules\", {\r\n /**\r\n * @return User-defined rules\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"rules\", this._rules);\r\n },\r\n /**\r\n * User-defined responsive rules.\r\n *\r\n * User-defined rules will take precedence over default rules whenever they\r\n * produce conflicting settings.\r\n *\r\n * Use `allRules` to get all applicable rules including default and\r\n * user-defined ones.\r\n *\r\n * @param value User-defined rules\r\n */\r\n set: function (value) {\r\n this._rules = value;\r\n this._enabled = true;\r\n this.applyRules();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Responsive.prototype, \"defaultRules\", {\r\n /**\r\n * Default responsive rules.\r\n *\r\n * @readonly\r\n * @return List of responsive rules\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"defaultRules\", defaultRules);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Responsive.prototype, \"allRules\", {\r\n /**\r\n * Returns all rules: default rules (if not disabled) combined with\r\n * user-defined ones.\r\n *\r\n * @readonly\r\n * @return List of all applicable rules\r\n */\r\n get: function () {\r\n // Create empty list\r\n var rules = new List();\r\n // Add default rules if not disabled\r\n // A code, requesting `allRules` must ensure loading of default rules\r\n // by calling `loadDefaultRules()`\r\n if (this.useDefault) {\r\n rules.copyFrom(this.defaultRules);\r\n }\r\n // Add user-defined ones\r\n rules.copyFrom(this.rules);\r\n return this.adapter.apply(\"allRules\", rules);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if rule by the particular id currently applied.\r\n *\r\n * @param ruleId Rule ID\r\n * @return Is currently applied?\r\n */\r\n Responsive.prototype.isApplied = function (ruleId) {\r\n var rule = this._appliedRules[ruleId];\r\n return $type.hasValue(rule) ? rule : false;\r\n };\r\n /**\r\n * Checks which responsive rules currently satisfy their conditions and\r\n * should be applied, or unapplied.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Responsive.prototype.checkRules = function (force) {\r\n var _this = this;\r\n if (force === void 0) { force = false; }\r\n // Check if there are any rules\r\n var rules = this.allRules;\r\n if (!rules || rules.length == 0) {\r\n return;\r\n }\r\n // Init a list of rules to be applied\r\n var rulesChanged = false;\r\n var component = $type.getValue(this.component);\r\n // Do not perform rule application of target has no size\r\n if (component.pixelWidth == 0 || component.pixelHeight == 0) {\r\n return;\r\n }\r\n // Check which rules match\r\n $iter.each(rules.iterator(), function (rule) {\r\n // Check if rule has an id\r\n if (!rule.id) {\r\n rule.id = registry.getUniqueId();\r\n }\r\n // Init indicator if this rule should be applied\r\n var apply = rule.relevant(component);\r\n // Let's check if this rule needs to be applied\r\n if ((apply && !_this.isApplied(rule.id)) || (!apply && _this.isApplied(rule.id))) {\r\n rulesChanged = true;\r\n }\r\n _this._appliedRules[rule.id] = apply;\r\n });\r\n if (force) {\r\n rulesChanged = true;\r\n }\r\n // Check if we need to re-apply the rules\r\n if (rulesChanged) {\r\n if (!this.component.isReady()) {\r\n // The chart is not yet ready (built)\r\n // We will hide the chart and delay application of rules\r\n // until \"ready\" event kicks in\r\n //component.hide(0);\r\n component.hidden = true;\r\n component.events.once(\"ready\", function (ev) {\r\n ev.target.show(0);\r\n _this._applyRules();\r\n });\r\n return;\r\n }\r\n this.dispatchImmediately(\"ruleschanged\");\r\n this._applyRules();\r\n }\r\n };\r\n Responsive.prototype._applyRules = function () {\r\n var _this = this;\r\n if (this._timeout) {\r\n this._timeout.dispose();\r\n }\r\n this._timeout = this.setTimeout(function () {\r\n _this.applyRules();\r\n }, 10);\r\n };\r\n /**\r\n * Applies current rules to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param target Target object\r\n * @todo Better type check\r\n */\r\n Responsive.prototype.applyRules = function (target) {\r\n var _this = this;\r\n // If no target supplied, we assume the top-level element\r\n var newTarget = ($type.hasValue(target)\r\n ? target\r\n : $type.getValue(this.component));\r\n // Check each rule\r\n var defaultStateApplied = false;\r\n if (this.enabled) {\r\n var isApplied_1 = false;\r\n $iter.each(this.allRules.iterator(), function (rule) {\r\n // Get relevant state\r\n var state = _this.getState(rule, newTarget);\r\n // If there's a state, it means it needs to be applied\r\n if (state) {\r\n // Check if default state was already applied to this element.\r\n // We don't want to go resetting default states to ALL element,\r\n // if they don't have responsive states.\r\n if (!defaultStateApplied) {\r\n // Nope, reset states (instantly).\r\n if ($array.indexOf(_this._appliedTargets, newTarget.uid) !== -1) {\r\n // But only if this element has any rules applied, otherwise no\r\n // point in setting current state\r\n newTarget.setState(_this.getDefaultState(newTarget), 0);\r\n }\r\n defaultStateApplied = true;\r\n }\r\n // Is this rule currently applied?\r\n if (_this.isApplied($type.getValue(rule.id))) {\r\n // Yes. Apply the responsive state\r\n state.transitionDuration = 0;\r\n _this.setTargetState(newTarget, state);\r\n _this.dispatchImmediately(\"ruleapplied\", {\r\n rule: rule\r\n });\r\n isApplied_1 = true;\r\n }\r\n }\r\n });\r\n if (isApplied_1) {\r\n $array.replace(this._appliedTargets, newTarget.uid);\r\n }\r\n else {\r\n $array.remove(this._appliedTargets, newTarget.uid);\r\n }\r\n }\r\n // Apply rules to the children\r\n if (newTarget.children) {\r\n $iter.each(newTarget.children.iterator(), function (child) {\r\n _this.applyRules(child);\r\n });\r\n }\r\n };\r\n /**\r\n * Returns a relative state for the rule/target, or `undefined` if no state is\r\n * needed.\r\n *\r\n * @param rule [description]\r\n * @param target [description]\r\n * @return [description]\r\n */\r\n Responsive.prototype.getState = function (rule, target) {\r\n var stateId = \"responsive-\" + rule.id;\r\n var tmpId = target.uid + \"_\" + stateId;\r\n if ($array.indexOf(this._noStates, tmpId) !== -1) {\r\n return;\r\n }\r\n else if (!target.states.hasKey(stateId)) {\r\n var state = rule.state(target, stateId);\r\n if (!state) {\r\n this._noStates.push(tmpId);\r\n }\r\n return state;\r\n }\r\n else {\r\n return target.states.getKey(stateId);\r\n }\r\n };\r\n /**\r\n * Creates and returns default responsive rule for the target.\r\n *\r\n * This rule will be used to \"reset\" to non-responsive values.\r\n * @param target Target Sprite\r\n * @return State\r\n */\r\n Responsive.prototype.getDefaultState = function (target) {\r\n if (target.states.hasKey(\"responsive-default\")) {\r\n return target.states.getKey(\"responsive-default\");\r\n }\r\n return target.states.create(\"responsive-default\");\r\n };\r\n /**\r\n * Sets state on the target element and updates default state with the\r\n * overwritten values if needed.\r\n *\r\n * @param target Target\r\n * @param state State\r\n */\r\n Responsive.prototype.setTargetState = function (target, state) {\r\n var _this = this;\r\n // Update default state\r\n var defaultState = this.getDefaultState(target);\r\n $object.each(state.properties, function (key, val) {\r\n if (!$type.hasValue(defaultState.properties[key])) {\r\n defaultState.properties[key] = _this.getValue(target, key);\r\n }\r\n });\r\n target.setState(state);\r\n };\r\n /**\r\n * Gets a value from an element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param target Target object\r\n * @param property Property\r\n * @return Property value\r\n */\r\n Responsive.prototype.getValue = function (target, property) {\r\n // This is a bit hacky, first we check if the property exist.\r\n // If it doesn't we try accessing target's property directly\r\n var value = target.getPropertyValue(property);\r\n if (!$type.hasValue(value) && $type.hasValue(target[property])) {\r\n value = target[property];\r\n }\r\n return value;\r\n };\r\n /**\r\n * Disposes the object.\r\n */\r\n Responsive.prototype.dispose = function () {\r\n this.disposeResponsiveHandlers();\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * Disposes all event handlers.\r\n */\r\n Responsive.prototype.disposeResponsiveHandlers = function () {\r\n var disposer = this._responsiveDisposers.pop();\r\n while (disposer) {\r\n disposer.dispose();\r\n disposer = this._responsiveDisposers.pop();\r\n }\r\n };\r\n return Responsive;\r\n}(BaseObjectEvents));\r\nexport { Responsive };\r\n/**\r\n * [defaultRules description]\r\n *\r\n * @todo description\r\n */\r\nexport var defaultRules = new List();\r\ndefaultRules.events.on(\"inserted\", function (ev) {\r\n ev.newValue.id = registry.getUniqueId();\r\n});\r\n/**\r\n *\r\n * @todo description\r\n */\r\nvar ResponsiveBreakpoints = /** @class */ (function () {\r\n function ResponsiveBreakpoints() {\r\n }\r\n // Breakpoint functions (for use in `relevant` clause of the responsive rules)\r\n ResponsiveBreakpoints.widthXXS = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.XXS;\r\n };\r\n ResponsiveBreakpoints.widthXS = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.XS;\r\n };\r\n ResponsiveBreakpoints.widthS = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.S;\r\n };\r\n ResponsiveBreakpoints.widthM = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.M;\r\n };\r\n ResponsiveBreakpoints.widthL = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.L;\r\n };\r\n ResponsiveBreakpoints.widthXL = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.XL;\r\n };\r\n ResponsiveBreakpoints.widthXXL = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.XXL;\r\n };\r\n ResponsiveBreakpoints.heightXXS = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.XXS;\r\n };\r\n ResponsiveBreakpoints.heightXS = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.XS;\r\n };\r\n ResponsiveBreakpoints.heightS = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.S;\r\n };\r\n ResponsiveBreakpoints.heightM = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.M;\r\n };\r\n ResponsiveBreakpoints.heightL = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.L;\r\n };\r\n ResponsiveBreakpoints.heightXL = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.XL;\r\n };\r\n ResponsiveBreakpoints.heightXXL = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.XXL;\r\n };\r\n ResponsiveBreakpoints.isXXS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XXS) && (container.pixelHeight <= ResponsiveBreakpoints.XXS);\r\n };\r\n ResponsiveBreakpoints.isXS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XS) && (container.pixelHeight <= ResponsiveBreakpoints.XS);\r\n };\r\n ResponsiveBreakpoints.isS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.S) && (container.pixelHeight <= ResponsiveBreakpoints.S);\r\n };\r\n ResponsiveBreakpoints.isM = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.M) && (container.pixelHeight <= ResponsiveBreakpoints.M);\r\n };\r\n ResponsiveBreakpoints.isL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.L) && (container.pixelHeight <= ResponsiveBreakpoints.L);\r\n };\r\n ResponsiveBreakpoints.isXL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XL) && (container.pixelHeight <= ResponsiveBreakpoints.XL);\r\n };\r\n ResponsiveBreakpoints.isXXL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XXL) && (container.pixelHeight <= ResponsiveBreakpoints.XXL);\r\n };\r\n ResponsiveBreakpoints.maybeXXS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XXS) || (container.pixelHeight <= ResponsiveBreakpoints.XXS);\r\n };\r\n ResponsiveBreakpoints.maybeXS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XS) || (container.pixelHeight <= ResponsiveBreakpoints.XS);\r\n };\r\n ResponsiveBreakpoints.maybeS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.S) || (container.pixelHeight <= ResponsiveBreakpoints.S);\r\n };\r\n ResponsiveBreakpoints.maybeM = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.M) || (container.pixelHeight <= ResponsiveBreakpoints.M);\r\n };\r\n ResponsiveBreakpoints.maybeL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.L) || (container.pixelHeight <= ResponsiveBreakpoints.L);\r\n };\r\n ResponsiveBreakpoints.maybeXL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XL) || (container.pixelHeight <= ResponsiveBreakpoints.XL);\r\n };\r\n ResponsiveBreakpoints.maybeXXL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XXL) || (container.pixelHeight <= ResponsiveBreakpoints.XXL);\r\n };\r\n // Named pixel breakpoints\r\n ResponsiveBreakpoints.XXS = 100;\r\n ResponsiveBreakpoints.XS = 200;\r\n ResponsiveBreakpoints.S = 300;\r\n ResponsiveBreakpoints.M = 400;\r\n ResponsiveBreakpoints.L = 600;\r\n ResponsiveBreakpoints.XL = 800;\r\n ResponsiveBreakpoints.XXL = 1000;\r\n return ResponsiveBreakpoints;\r\n}());\r\nexport { ResponsiveBreakpoints };\r\n","import { __extends, __generator } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { EventDispatcher } from \"./EventDispatcher\";\r\nimport * as $array from \"./Array\";\r\nimport * as $iter from \"./Iterator\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Ordered list contains values of any type in an indexed array.\r\n */\r\nvar OrderedList = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n *\r\n * @param initial Inital list of values to add to list\r\n */\r\n function OrderedList(initial) {\r\n /**\r\n * Holds list values.\r\n */\r\n this._values = [];\r\n /**\r\n * Event dispatcher.\r\n */\r\n this.events = new EventDispatcher();\r\n if (initial != null) {\r\n this.setAll(initial);\r\n }\r\n }\r\n Object.defineProperty(OrderedList.prototype, \"values\", {\r\n /**\r\n * All items of the list.\r\n *\r\n * Do not modify the list directly. Rather use `insert()` and `remove()`\r\n * methods.\r\n *\r\n * @return List values\r\n */\r\n get: function () {\r\n return this._values;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Inserts a value into list item array.\r\n *\r\n * @param value Value\r\n */\r\n OrderedList.prototype._insert = function (value) {\r\n this._values.push(value);\r\n return this._values.length - 1;\r\n };\r\n Object.defineProperty(OrderedList.prototype, \"length\", {\r\n /**\r\n * Number of items in the list.\r\n *\r\n * @readonly\r\n * @return Length\r\n */\r\n get: function () {\r\n return this._values.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the index of the specific `value`.\r\n *\r\n * -1 if not found.\r\n *\r\n * @param value Value\r\n * @return Index\r\n */\r\n OrderedList.prototype.indexOf = function (value) {\r\n return $array.indexOf(this._values, value);\r\n };\r\n /**\r\n * Checks if list contains the `value`.\r\n *\r\n * @param value Value\r\n * @return In the list?\r\n */\r\n OrderedList.prototype.contains = function (value) {\r\n return this.indexOf(value) !== -1;\r\n };\r\n /**\r\n * Returns an item at specific `index`.\r\n *\r\n * @param index Index\r\n * @return Item\r\n */\r\n OrderedList.prototype.getIndex = function (index) {\r\n return this._values[index];\r\n };\r\n Object.defineProperty(OrderedList.prototype, \"first\", {\r\n /**\r\n * First item in the list.\r\n *\r\n * @return Item\r\n */\r\n get: function () {\r\n return this._values[0];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(OrderedList.prototype, \"last\", {\r\n /**\r\n * Last item in the list.\r\n *\r\n * @return Item\r\n */\r\n get: function () {\r\n return this._values[this._values.length - 1];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Inserts a value into list.\r\n *\r\n * @param value Value\r\n */\r\n OrderedList.prototype.insert = function (value) {\r\n var index = this._insert(value);\r\n if (this.events.isEnabled(\"inserted\")) {\r\n this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: this,\r\n index: index,\r\n newValue: value\r\n });\r\n }\r\n };\r\n /**\r\n * Removes an item with the `value` from the list.\r\n *\r\n * @param value Value\r\n */\r\n OrderedList.prototype.remove = function (value) {\r\n var index = this.indexOf(value);\r\n if (index !== -1) {\r\n var oldValue = this._values[index];\r\n $array.removeIndex(this._values, index);\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n index: index,\r\n oldValue: oldValue,\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Sets multiple items to the list.\r\n *\r\n * All current items are removed.\r\n *\r\n * @param newArray New items\r\n */\r\n OrderedList.prototype.setAll = function (newArray) {\r\n var _this = this;\r\n $array.eachReverse(this._values, function (x, i) {\r\n _this._values.pop();\r\n if (_this.events.isEnabled(\"removed\")) {\r\n _this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: _this,\r\n index: i,\r\n oldValue: x\r\n });\r\n }\r\n });\r\n $array.each(newArray, function (value) {\r\n _this.insert(value);\r\n });\r\n };\r\n /**\r\n * Removes all items from the list.\r\n */\r\n OrderedList.prototype.clear = function () {\r\n this.setAll([]);\r\n };\r\n /**\r\n * Returns part of the list between `start` and `end` indexes, as a new\r\n * [[OrderedList]].\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @return Items in range\r\n */\r\n OrderedList.prototype.slice = function (start, end) {\r\n var out = new OrderedList();\r\n out._values = this._values.slice(start, end);\r\n return out;\r\n };\r\n /**\r\n * Finds a closest available index to the `value` in specified direction.\r\n *\r\n * @ignore exclude from docs\r\n * @param value value to search for\r\n * @param fn A callback function that returns value of the item\r\n * @param direction Direciton\r\n * @return Index\r\n */\r\n OrderedList.prototype.findClosestIndex = function (value, fn, direction) {\r\n if (direction === void 0) { direction = \"any\"; }\r\n // Init temporary values\r\n var closestIndex = -1;\r\n var closestValue;\r\n var closestDifference;\r\n var i = 0;\r\n $iter.eachContinue(this.iterator(), function (element) {\r\n var item = fn(element);\r\n // Calc difference\r\n if (direction === \"any\") {\r\n // Exact match?\r\n if (item === value) {\r\n // Found exact value - don't bother searching further\r\n closestIndex = i;\r\n return false;\r\n }\r\n var difference = Math.abs(value - item);\r\n if (!$type.hasValue(closestDifference) || (closestDifference > difference)) {\r\n closestIndex = i;\r\n closestValue = item;\r\n closestDifference = difference;\r\n }\r\n }\r\n else if (direction === \"left\" && (item < value)) {\r\n if (!$type.hasValue(closestValue) || (closestValue < item)) {\r\n closestIndex = i;\r\n closestValue = item;\r\n }\r\n }\r\n else if (direction === \"right\" && (item >= value)) {\r\n if (!$type.hasValue(closestValue) || (closestValue >= item)) {\r\n closestIndex = i;\r\n closestValue = item;\r\n }\r\n }\r\n ++i;\r\n return true;\r\n });\r\n // Found nothing?\r\n if (closestIndex === -1) {\r\n if (direction === \"left\") {\r\n // Use First one\r\n closestIndex = 0;\r\n }\r\n else if (direction === \"right\") {\r\n // Use last item\r\n closestIndex = this.length - 1;\r\n }\r\n }\r\n return closestIndex;\r\n };\r\n /**\r\n * Returns a list iterator.\r\n *\r\n * @return Iterator\r\n */\r\n OrderedList.prototype.iterator = function () {\r\n return $iter.fromArray(this._values);\r\n };\r\n /**\r\n * Returns an ES6 iterator for the list.\r\n */\r\n OrderedList.prototype[Symbol.iterator] = function () {\r\n var length, i;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n length = this._values.length;\r\n i = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i < length)) return [3 /*break*/, 4];\r\n return [4 /*yield*/, this._values[i]];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n ++i;\r\n return [3 /*break*/, 1];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n /**\r\n * Calls `f` for each element in the list.\r\n */\r\n OrderedList.prototype.each = function (f) {\r\n $array.each(this._values, f);\r\n };\r\n return OrderedList;\r\n}());\r\nexport { OrderedList };\r\n/**\r\n * A list where all items are ordered according to specific ordering function,\r\n * which is passed in via constructor parameter, when creating an instance of\r\n * [[SortedList]].\r\n */\r\nvar SortedList = /** @class */ (function (_super) {\r\n __extends(SortedList, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param sort Ordering function\r\n */\r\n function SortedList(sort) {\r\n var _this = _super.call(this) || this;\r\n _this._ordering = sort;\r\n return _this;\r\n }\r\n /**\r\n * Inserts item into the list.\r\n *\r\n * @param value Item\r\n */\r\n SortedList.prototype._insert = function (value) {\r\n var index = $array.getSortedIndex(this._values, this._ordering, value).index;\r\n $array.insertIndex(this._values, index, value);\r\n return index;\r\n };\r\n /**\r\n * Returns index of the item in list if found.\r\n *\r\n * -1 if item is not in the list.\r\n *\r\n * @param value Item to search for\r\n * @return Index\r\n */\r\n SortedList.prototype.indexOf = function (value) {\r\n var _a = $array.getSortedIndex(this._values, this._ordering, value), found = _a.found, index = _a.index;\r\n if (found) {\r\n return index;\r\n }\r\n else {\r\n return -1;\r\n }\r\n };\r\n /**\r\n * [udpate description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n SortedList.prototype.update = function (value) {\r\n // @todo test this\r\n var index = $array.indexOf(this._values, value);\r\n // @todo throw an error if it doesn't exist ?\r\n if (index !== -1) {\r\n var last = this._values.length - 1;\r\n // Check if the current ordering is correct\r\n if (!((index === 0 || this._ordering(this._values[index - 1], value) < 0) &&\r\n (index === last || this._ordering(value, this._values[index + 1]) < 0))) {\r\n // TODO send remove/insert/move events\r\n $array.removeIndex(this._values, index);\r\n this._insert(value);\r\n }\r\n }\r\n };\r\n return SortedList;\r\n}(OrderedList));\r\nexport { SortedList };\r\n/**\r\n * A version of a [[OrderedList]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nvar OrderedListTemplate = /** @class */ (function (_super) {\r\n __extends(OrderedListTemplate, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n */\r\n function OrderedListTemplate(t) {\r\n var _this = _super.call(this) || this;\r\n _this.template = t;\r\n return _this;\r\n }\r\n Object.defineProperty(OrderedListTemplate.prototype, \"template\", {\r\n /**\r\n * @return Template object\r\n */\r\n get: function () {\r\n return this._template;\r\n },\r\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\r\n set: function (v) {\r\n v.isTemplate = true;\r\n this._template = v;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all elements from other list.\r\n *\r\n * @param source Source list\r\n */\r\n OrderedListTemplate.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source.iterator(), function (value) {\r\n _this.insert(value.clone());\r\n });\r\n };\r\n /**\r\n * Returns part of the list, starting at `start` and ending at `end` indexes,\r\n * as a new [[OrderedListTemplate]].\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @return New list\r\n */\r\n OrderedListTemplate.prototype.slice = function (start, end) {\r\n var out = new OrderedListTemplate(this.template);\r\n out._values = this._values.slice(start, end);\r\n return out;\r\n };\r\n OrderedListTemplate.prototype.create = function (make) {\r\n var clone = (make != null\r\n ? new make()\r\n : this.template.clone());\r\n this.insert(clone);\r\n return clone;\r\n };\r\n return OrderedListTemplate;\r\n}(OrderedList));\r\nexport { OrderedListTemplate };\r\n/**\r\n * A version of a [[SortedList]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nvar SortedListTemplate = /** @class */ (function (_super) {\r\n __extends(SortedListTemplate, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n * @param sort Ordering function\r\n */\r\n function SortedListTemplate(t, sort) {\r\n var _this = _super.call(this, sort) || this;\r\n _this.template = t;\r\n return _this;\r\n }\r\n Object.defineProperty(SortedListTemplate.prototype, \"template\", {\r\n /**\r\n * @return Template object\r\n */\r\n get: function () {\r\n return this._template;\r\n },\r\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\r\n set: function (v) {\r\n v.isTemplate = true;\r\n this._template = v;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all elements from other list.\r\n *\r\n * @param source Source list\r\n */\r\n SortedListTemplate.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source.iterator(), function (value) {\r\n _this.insert(value.clone());\r\n });\r\n };\r\n SortedListTemplate.prototype.create = function (make) {\r\n var clone = (make != null\r\n ? new make()\r\n : this.template.clone());\r\n this.insert(clone);\r\n return clone;\r\n };\r\n return SortedListTemplate;\r\n}(SortedList));\r\nexport { SortedListTemplate };\r\n","/**\r\n * ============================================================================\r\n * COMPARING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Comparing function used for ordering.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Use localeCompare\r\n * @param a Item 1\r\n * @param b Item 2\r\n * @return Result\r\n */\r\nexport function order(a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n else if (a < b) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * OTHER FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Repeats a `string` number of times as set in `amount`.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make this faster\r\n * @param string Source string\r\n * @param amount Number of times to repeat string\r\n * @return New string\r\n */\r\nexport function repeat(string, amount) {\r\n return new Array(amount + 1).join(string);\r\n}\r\n/**\r\n * Generates a random string `characters` length.\r\n *\r\n * @param chars Number of characters\r\n * @return Random string\r\n */\r\nexport function random(chars) {\r\n var res = \"\";\r\n var choice = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n for (var i = 0; i < chars; i++) {\r\n res += choice.charAt(Math.floor(Math.random() * choice.length));\r\n }\r\n return res;\r\n}\r\n","/**\r\n * A collection of String-based constants.\r\n * @hidden\r\n * @ignore Exclude from docs\r\n */\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var PX = \"px\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var STRING = \"string\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var NUMBER = \"number\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var DATE = \"date\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var DURATION = \"duration\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var PLACEHOLDER = \"__§§§__\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var PLACEHOLDER2 = \"__§§§§__\";\r\n","import * as $type from \"../utils/Type\";\r\n/**\r\n * Maps time period names to their numeric representations in milliseconds.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var timeUnitDurations = {\r\n millisecond: 1,\r\n second: 1000,\r\n minute: 60000,\r\n hour: 3600000,\r\n day: 86400000,\r\n week: 604800000,\r\n month: 2592000000,\r\n year: 31536000000\r\n};\r\n/**\r\n * Returns the next time unit that goes after source `unit`.\r\n *\r\n * E.g. \"hour\" is the next unit after \"minute\", etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param unit Source time unit\r\n * @return Next time unit\r\n */\r\nexport function getNextUnit(unit) {\r\n switch (unit) {\r\n case \"year\":\r\n return;\r\n case \"month\":\r\n return \"year\";\r\n case \"week\":\r\n return \"month\";\r\n case \"day\":\r\n return \"month\"; // not a mistake\r\n case \"hour\":\r\n return \"day\";\r\n case \"minute\":\r\n return \"hour\";\r\n case \"second\":\r\n return \"minute\";\r\n case \"millisecond\":\r\n return \"second\";\r\n }\r\n}\r\n/**\r\n * Returns number of milliseconds in the `count` of time `unit`.\r\n *\r\n * Available units: \"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\",\r\n * \"month\", and \"year\".\r\n *\r\n * @ignore Exclude from docs\r\n * @param unit Time unit\r\n * @param count Number of units\r\n * @return Milliseconds\r\n */\r\nexport function getDuration(unit, count) {\r\n if (!$type.hasValue(count)) {\r\n count = 1;\r\n }\r\n return timeUnitDurations[unit] * count;\r\n}\r\n/**\r\n * Returns current `Date` object.\r\n *\r\n * @return Current date\r\n */\r\nexport function now() {\r\n return new Date();\r\n}\r\n/**\r\n * Returns current timestamp.\r\n *\r\n * @return Current timestamp\r\n */\r\nexport function getTime() {\r\n return now().getTime();\r\n}\r\n/**\r\n * Returns a copy of the `Date` object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @return Copy\r\n */\r\nexport function copy(date) {\r\n return new Date(date.getTime()); // todo: check if this is ok. new Date(date) used to strip milliseconds on FF in v3\r\n}\r\n/**\r\n * Checks if the `unit` part of two `Date` objects do not match. Two dates\r\n * represent a \"range\" of time, rather the same time date.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dateOne Date 1\r\n * @param dateTwo Date 2\r\n * @param unit Time unit to check\r\n * @return Range?\r\n */\r\nexport function checkChange(dateOne, dateTwo, unit, utc) {\r\n dateOne = new Date(dateOne.getTime());\r\n dateTwo = new Date(dateTwo.getTime());\r\n var timeZoneOffset1 = 0;\r\n var timeZoneOffset2 = 0;\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset1 = dateOne.getTimezoneOffset();\r\n dateOne.setUTCMinutes(dateOne.getUTCMinutes() - timeZoneOffset1);\r\n timeZoneOffset2 = dateTwo.getTimezoneOffset();\r\n dateTwo.setUTCMinutes(dateTwo.getUTCMinutes() - timeZoneOffset2);\r\n }\r\n var changed = false;\r\n switch (unit) {\r\n case \"year\":\r\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"month\":\r\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\r\n changed = true;\r\n }\r\n else if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"day\":\r\n if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\r\n changed = true;\r\n }\r\n else if (dateOne.getUTCDate() != dateTwo.getUTCDate()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"hour\":\r\n if (dateOne.getUTCHours() != dateTwo.getUTCHours()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"minute\":\r\n if (dateOne.getUTCMinutes() != dateTwo.getUTCMinutes()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"second\":\r\n if (dateOne.getUTCSeconds() != dateTwo.getUTCSeconds()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"millisecond\":\r\n if (dateOne.getTime() != dateTwo.getTime()) {\r\n changed = true;\r\n }\r\n break;\r\n }\r\n if (changed) {\r\n return true;\r\n }\r\n var nextUnit = getNextUnit(unit);\r\n if (nextUnit) {\r\n dateOne.setUTCMinutes(dateOne.getUTCMinutes() + timeZoneOffset1);\r\n dateTwo.setUTCMinutes(dateTwo.getUTCMinutes() + timeZoneOffset2);\r\n return checkChange(dateOne, dateTwo, nextUnit, utc);\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Adds `count` of time `unit` to the source date. Returns a modified `Date` object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to add\r\n * @return Modified date\r\n */\r\nexport function add(date, unit, count, utc) {\r\n var timeZoneOffset = 0;\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset = date.getTimezoneOffset();\r\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\r\n }\r\n switch (unit) {\r\n case \"day\":\r\n var day = date.getUTCDate();\r\n date.setUTCDate(day + count);\r\n break;\r\n case \"second\":\r\n var seconds = date.getUTCSeconds();\r\n date.setUTCSeconds(seconds + count);\r\n break;\r\n case \"millisecond\":\r\n var milliseconds = date.getUTCMilliseconds();\r\n date.setUTCMilliseconds(milliseconds + count);\r\n break;\r\n case \"hour\":\r\n var hours = date.getUTCHours();\r\n date.setUTCHours(hours + count);\r\n break;\r\n case \"minute\":\r\n var minutes = date.getUTCMinutes();\r\n date.setUTCMinutes(minutes + count);\r\n break;\r\n case \"year\":\r\n var year = date.getUTCFullYear();\r\n date.setUTCFullYear(year + count);\r\n break;\r\n case \"month\":\r\n var month = date.getUTCMonth();\r\n date.setUTCMonth(month + count);\r\n break;\r\n case \"week\":\r\n var wday = date.getUTCDate();\r\n date.setUTCDate(wday + count * 7);\r\n break;\r\n }\r\n if (!utc && unit != \"millisecond\") {\r\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\r\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\r\n var newTimeZoneOffset = date.getTimezoneOffset();\r\n if (newTimeZoneOffset != timeZoneOffset) {\r\n var diff = newTimeZoneOffset - timeZoneOffset;\r\n date.setUTCMinutes(date.getUTCMinutes() + diff);\r\n // solves issues if newe time falls back to old time zone\r\n if (date.getTimezoneOffset() != newTimeZoneOffset) {\r\n date.setUTCMinutes(date.getUTCMinutes() - diff);\r\n }\r\n }\r\n }\r\n }\r\n return date;\r\n}\r\n/**\r\n * \"Rounds\" the date to specific time unit.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to round to\r\n * @param firstDateOfWeek First day of week\r\n * @param roundMinutes Minutes to round to (some timezones use non-whole hour)\r\n * @param timezone Use specific named timezone when rounding\r\n * @return New date\r\n */\r\nexport function round(date, unit, count, firstDateOfWeek, utc, firstDate, roundMinutes, timezone) {\r\n if (roundMinutes === void 0) { roundMinutes = 0; }\r\n if (!$type.isNumber(count)) {\r\n count = 1;\r\n }\r\n var timeZoneOffset = 0;\r\n if (timezone && [\"day\", \"month\", \"week\", \"year\"].indexOf(unit) != -1) {\r\n date = setTimezone(date, timezone);\r\n }\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset = date.getTimezoneOffset();\r\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\r\n }\r\n switch (unit) {\r\n case \"day\":\r\n var day = date.getUTCDate();\r\n if (count > 1) {\r\n //\tday = Math.floor(day / count) * count;\r\n if (firstDate) {\r\n firstDate = round(firstDate, \"day\", 1);\r\n var difference = date.getTime() - firstDate.getTime();\r\n var unitCount = Math.floor(difference / getDuration(\"day\") / count);\r\n var duration = getDuration(\"day\", unitCount * count);\r\n date.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\r\n }\r\n }\r\n else {\r\n date.setUTCDate(day);\r\n }\r\n date.setUTCHours(0, 0, 0, 0);\r\n break;\r\n case \"second\":\r\n var seconds = date.getUTCSeconds();\r\n if (count > 1) {\r\n seconds = Math.floor(seconds / count) * count;\r\n }\r\n date.setUTCSeconds(seconds, 0);\r\n break;\r\n case \"millisecond\":\r\n if (count == 1) {\r\n return date; // much better for perf!\r\n }\r\n var milliseconds = date.getUTCMilliseconds();\r\n milliseconds = Math.floor(milliseconds / count) * count;\r\n date.setUTCMilliseconds(milliseconds);\r\n break;\r\n case \"hour\":\r\n var hours = date.getUTCHours();\r\n if (count > 1) {\r\n hours = Math.floor(hours / count) * count;\r\n }\r\n date.setUTCHours(hours, roundMinutes, 0, 0);\r\n break;\r\n case \"minute\":\r\n var minutes = date.getUTCMinutes();\r\n milliseconds = date.getUTCMilliseconds();\r\n if (count > 1) {\r\n minutes = Math.floor(minutes / count) * count;\r\n }\r\n date.setUTCMinutes(minutes, 0, 0);\r\n break;\r\n case \"month\":\r\n var month = date.getUTCMonth();\r\n if (count > 1) {\r\n month = Math.floor(month / count) * count;\r\n }\r\n date.setUTCMonth(month, 1);\r\n date.setUTCHours(0, roundMinutes, 0, 0);\r\n break;\r\n case \"year\":\r\n var year = date.getUTCFullYear();\r\n if (count > 1) {\r\n year = Math.floor(year / count) * count;\r\n }\r\n date.setUTCFullYear(year, 0, 1);\r\n date.setUTCHours(0, roundMinutes, 0, 0);\r\n //let nonUTCDateY = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\r\n //timeZoneOffset = nonUTCDateY.getTimezoneOffset();\r\n break;\r\n case \"week\":\r\n var wday = date.getUTCDate();\r\n var weekDay = date.getUTCDay();\r\n if (!$type.isNumber(firstDateOfWeek)) {\r\n firstDateOfWeek = 1;\r\n }\r\n // todo: rounding when count is not 1\r\n if (weekDay >= firstDateOfWeek) {\r\n wday = wday - weekDay + firstDateOfWeek;\r\n }\r\n else {\r\n wday = wday - (7 + weekDay) + firstDateOfWeek;\r\n }\r\n date.setUTCDate(wday);\r\n date.setUTCHours(0, roundMinutes, 0, 0);\r\n break;\r\n }\r\n if (!utc && unit != \"millisecond\") {\r\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\r\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\r\n var newTimeZoneOffset = date.getTimezoneOffset();\r\n if (newTimeZoneOffset != timeZoneOffset) {\r\n var diff = newTimeZoneOffset - timeZoneOffset;\r\n date.setUTCMinutes(date.getUTCMinutes() + diff);\r\n }\r\n }\r\n }\r\n return date;\r\n}\r\n/**\r\n * Returns a new `Date` object which corresponds to the source date in a\r\n * specific timezone.\r\n *\r\n * @since 4.10.1\r\n * @param date Source date\r\n * @param timezone Timezone identifier\r\n * @return Recalculated new Date\r\n */\r\nexport function setTimezone(date, timezone) {\r\n var d = new Date(date.toLocaleString(\"en-US\", { timeZone: timezone }));\r\n return d;\r\n}\r\n/**\r\n * Returns minute fraction of the set timezone.\r\n *\r\n * @since 4.10.12\r\n * @param timezone Timezone identifier\r\n * @return Minutes\r\n */\r\nexport function getTimezoneMinutes(timezone) {\r\n var d = new Date();\r\n d.setHours(0, 0, 0, 0);\r\n var d2 = setTimezone(d, timezone);\r\n return d2.getMinutes();\r\n}\r\n","/**\r\n * A collection of utility functions for various type checks and conversion\r\n * @todo Review unused functions for removal\r\n * @hidden\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { percent, isPercent } from \"./Percent\";\r\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns `true` if value is not a number (NaN).\r\n *\r\n * @param value Input value\r\n * @return Is NaN?\r\n * @deprecated Is not used anywhere. JS built-in isNaN is used everywhere. Maybe we don't need this, or if we do, then we should use it everywhere\r\n */\r\nexport function isNaN(value) {\r\n return Number(value) !== value;\r\n}\r\n/**\r\n * Returns a type of the value.\r\n *\r\n * @param value Input value\r\n * @return Type of the value\r\n */\r\nexport function getType(value) {\r\n return ({}).toString.call(value);\r\n}\r\n/**\r\n * Returns a default value if the passed in value is empty.\r\n *\r\n * @param value Input value\r\n * @param optional Default value\r\n * @return Value or default value whichever is available\r\n * @deprecated Not used anywhere\r\n */\r\nexport function getDefault(value, optional) {\r\n return value || optional;\r\n}\r\n/**\r\n * Checks if the passed in value is a string.\r\n *\r\n * @param value Value\r\n * @return Is string?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkString(value) {\r\n if (typeof value === \"string\") {\r\n return true;\r\n }\r\n else {\r\n throw new Error(\"Expected a string but got \" + getType(value));\r\n }\r\n}\r\n/**\r\n * Checks if the passed in value is a boolean.\r\n *\r\n * @param value Value\r\n * @return Is boolean?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkBoolean(value) {\r\n if (typeof value === \"boolean\") {\r\n return true;\r\n }\r\n else {\r\n throw new Error(\"Expected a boolean but got \" + getType(value));\r\n }\r\n}\r\n/**\r\n * Checks if the passed in value is a number.\r\n *\r\n * @param value Value\r\n * @return Is number?\r\n * @throws {Error}\r\n */\r\nexport function checkNumber(value) {\r\n if (typeof value === \"number\") {\r\n if (isNaN(value)) {\r\n throw new Error(\"Expected a number but got NaN\");\r\n }\r\n }\r\n else {\r\n throw new Error(\"Expected a number but got \" + getType(value));\r\n }\r\n return true;\r\n}\r\n/**\r\n * Checks if the passed in value is an object.\r\n *\r\n * @param value Value\r\n * @return Is object?\r\n * @throws {Error}\r\n * @todo Is the input type correct?\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkObject(value) {\r\n var t = getType(value);\r\n if (t === \"[object Object]\") {\r\n return true;\r\n }\r\n else {\r\n throw new Error(\"Expected an object but got \" + t);\r\n }\r\n}\r\n/**\r\n * Checks if the passed in value is an array.\r\n *\r\n * @param value Value\r\n * @return Is array?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkArray(value) {\r\n if (Array.isArray(value)) {\r\n return true;\r\n }\r\n else {\r\n throw new Error(\"Expected an array but got \" + getType(value));\r\n }\r\n}\r\n/**\r\n * Checks if the passed in value is a Date object.\r\n *\r\n * @param value Value\r\n * @return Is Date object?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkDate(value) {\r\n var t = getType(value);\r\n if (t === \"[object Date]\") {\r\n return true;\r\n }\r\n else {\r\n throw new Error(\"Expected a date but got \" + t);\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * TYPE CASTING\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Casts string or a number into string.\r\n *\r\n * @param value Input\r\n * @return String value\r\n * @deprecated Not used anywhere\r\n */\r\nexport function castString(value) {\r\n if (typeof value === \"string\") {\r\n return value;\r\n }\r\n else if (typeof value === \"number\") {\r\n return \"\" + value;\r\n }\r\n else {\r\n throw new Error(\"Expected a string or number but got \" + getType(value));\r\n }\r\n}\r\n/**\r\n * Casts string or a number into a number.\r\n *\r\n * @param value Input value\r\n * @return Number value\r\n * @throws {Error}\r\n */\r\nexport function castNumber(value) {\r\n if (typeof value === \"string\") {\r\n var number = +value;\r\n if (isNaN(number)) {\r\n throw new Error(\"Cannot cast string \" + JSON.stringify(value) + \" to a number\");\r\n }\r\n else {\r\n return number;\r\n }\r\n }\r\n else if (typeof value === \"number\") {\r\n if (isNaN(value)) {\r\n throw new Error(\"Expected a number but got NaN\");\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n else {\r\n var t = getType(value);\r\n if (t === \"[object Date]\") {\r\n return value.getTime();\r\n }\r\n else {\r\n throw new Error(\"Expected a string, number, or date but got \" + t);\r\n }\r\n }\r\n}\r\n/**\r\n * Casts number, string or Date into a Date object.\r\n *\r\n * @param value Input value\r\n * @return Date object\r\n * @deprecated Not used anywhere\r\n * @throws {Error}\r\n * @hidden\r\n * @deprecated\r\n */\r\n/*export function castDate(value: string | number | Date, formatter?: DateFormatter): Date {\r\n if (typeof value === \"string\") {\r\n if (formatter) {\r\n return formatter.parse(value);\r\n }\r\n return new Date(value);\r\n\r\n } else if (typeof value === \"number\") {\r\n return new Date(value);\r\n\r\n } else {\r\n const t = getType(value);\r\n\r\n if (t === \"[object Date]\") {\r\n return value;\r\n\r\n } else {\r\n throw new Error(\"Expected a string, number, or date but got \" + t);\r\n }\r\n }\r\n}*/\r\n/**\r\n * ============================================================================\r\n * QUICK CONVERSION\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Converts any value into `boolean`.\r\n *\r\n * @param value Source value\r\n * @return `true` or `false`\r\n */\r\nexport function toBoolean(value) {\r\n return value ? true : false;\r\n}\r\n/**\r\n * Converts any value into a `number`.\r\n *\r\n * @param value Source value\r\n * @return Number representation of value\r\n */\r\nexport function toNumber(value) {\r\n if (hasValue(value) && !isNumber(value)) {\r\n var converted = Number(value);\r\n if (isNaN(converted) && isString(value) && value != \"\") {\r\n return toNumber(value.replace(/[^0-9.\\-]+/g, ''));\r\n }\r\n return converted;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Converts any value into a string (text).\r\n *\r\n * @param value Source value\r\n * @return String representation of the input\r\n */\r\nexport function toText(value) {\r\n if (hasValue(value) && !isString(value)) {\r\n if (isNumber(value)) {\r\n return castString(value);\r\n }\r\n else if (isObject(value)) {\r\n return value.toString();\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * Converts any value to a number or [[Percent]].\r\n *\r\n * If the parameter is a string and contains \"%\", it will\r\n * convert it into a [[Percent]].\r\n *\r\n * Otherwise, it will convert into a number.\r\n *\r\n * @param value Number or percent\r\n * @return Percent object\r\n */\r\nexport function toNumberOrPercent(value) {\r\n if (!hasValue(value) || isNumber(value) || isPercent(value)) {\r\n return value;\r\n }\r\n if (isString(value) && value.indexOf(\"%\") != -1) {\r\n return percent(toNumber(value));\r\n }\r\n return toNumber(value);\r\n}\r\n/**\r\n * Checks if a variable has a value.\r\n *\r\n * @param a Input value\r\n * @returns Has value?\r\n */\r\nexport function hasValue(a) {\r\n return a != null;\r\n}\r\n/**\r\n * Returns a value or throws an {Error} exception if the variable has not\r\n * value.\r\n *\r\n * @param a Input value\r\n * @returns Value\r\n */\r\nexport function getValue(a) {\r\n if (hasValue(a)) {\r\n return a;\r\n }\r\n else {\r\n throw new Error(\"Value doesn't exist\");\r\n }\r\n}\r\n/**\r\n * Returns a value, or returns the default value if it doesn't have a value.\r\n *\r\n * @param a Input value\r\n * @returns Value\r\n */\r\nexport function getValueDefault(a, defaultValue) {\r\n if (hasValue(a)) {\r\n return a;\r\n }\r\n else {\r\n return defaultValue;\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Checks if parameter is `Date`.\r\n *\r\n * @param value Input value\r\n * @return Is Date?\r\n */\r\nexport function isDate(value) {\r\n return getType(value) === \"[object Date]\";\r\n}\r\n/**\r\n * Checks if parameter is `string`.\r\n *\r\n * @param value Input value\r\n * @return Is string?\r\n */\r\nexport function isString(value) {\r\n return typeof value === \"string\";\r\n}\r\n/**\r\n * Checks if parameter is `number`.\r\n *\r\n * @param value Input value\r\n * @return Is number?\r\n */\r\nexport function isNumber(value) {\r\n return typeof value === \"number\" && Number(value) == value;\r\n}\r\n/**\r\n * Checks if parameter is `object`.\r\n *\r\n * @param value Input value\r\n * @return Is object?\r\n */\r\nexport function isObject(value) {\r\n return typeof value === \"object\" && value != null;\r\n}\r\n/**\r\n * Checks if parameter is `Array`.\r\n *\r\n * @param value Input value\r\n * @return Is Array?\r\n */\r\nexport function isArray(value) {\r\n return Array.isArray(value);\r\n}\r\n","/**\r\n * A collection of universal utility functions.\r\n */\r\nimport { Percent } from \"./Percent\";\r\nimport { isSafari } from \"./Browser\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $string from \"./String\";\r\nimport * as $strings from \"./Strings\";\r\nimport * as $object from \"./Object\";\r\nimport * as $array from \"./Array\";\r\n/**\r\n * ============================================================================\r\n * MISC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Marks a value as being used (e.g. because the value has side effects).\r\n */\r\nexport function used(value) { }\r\n/**\r\n * Copies all properties of one object to the other, omitting undefined.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\r\nexport function copyProperties(source, target) {\r\n $object.each(source, function (key, value) {\r\n // only if value is set\r\n if ($type.hasValue(value)) {\r\n target[key] = value;\r\n }\r\n });\r\n return target;\r\n}\r\n/**\r\n * Removes target from url\r\n */\r\nexport function stripHash(url) {\r\n return /^[^#]*/.exec(url)[0];\r\n}\r\nexport function getBaseURI() {\r\n var url = \"#\";\r\n // Needed until https://bugs.webkit.org/show_bug.cgi?id=189499 is fixed\r\n if (isSafari()) {\r\n var baseURI = document.baseURI;\r\n if (baseURI) {\r\n baseURI = stripHash(baseURI);\r\n var loc = stripHash(location.href);\r\n if (baseURI !== loc) {\r\n url = loc + url;\r\n }\r\n }\r\n }\r\n return url;\r\n}\r\n/**\r\n * Copies all properties of one object to the other, omitting undefined, but only if property in target object doesn't have a value set.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\r\nexport function softCopyProperties(source, target) {\r\n $object.each(source, function (key, value) {\r\n // only if value is set\r\n if ($type.hasValue(value) && !($type.hasValue(target[key]))) {\r\n target[key] = value;\r\n }\r\n });\r\n return target;\r\n}\r\n/**\r\n * Copies all properties of one object to the other.\r\n *\r\n * @param source Source object\r\n * @param recipient Target object\r\n * @return Updated target object\r\n */\r\nexport function copy(source, target) {\r\n $object.each(source, function (key, value) {\r\n target[key] = value;\r\n });\r\n return target;\r\n}\r\n/**\r\n * Checks if value is not empty (undefined or zero-length string).\r\n *\r\n * @param value Value to check\r\n * @return `true` if value is not \"empty\"\r\n */\r\nexport function isNotEmpty(value) {\r\n return $type.hasValue(value) && (value.toString() !== \"\");\r\n}\r\n/**\r\n * [relativeToValue description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param percent [description]\r\n * @param full [description]\r\n * @return [description]\r\n */\r\nexport function relativeToValue(percent, full) {\r\n if ($type.isNumber(percent)) {\r\n return percent;\r\n }\r\n else if (percent != null && $type.isNumber(percent.value) && $type.isNumber(full)) {\r\n return full * percent.value;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\n/**\r\n * [relativeRadiusToValue description]\r\n *\r\n * Differs from relativeToValue so that if a value is negative, it subtracts\r\n * it from full value.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param percent [description]\r\n * @param full [description]\r\n * @param subtractIfNegative [description]\r\n * @return [description]\r\n */\r\nexport function relativeRadiusToValue(percent, full, subtractIfNegative) {\r\n var value;\r\n if ($type.isNumber(percent)) {\r\n value = percent;\r\n if (value < 0) {\r\n if (subtractIfNegative) {\r\n value = full + value;\r\n }\r\n else {\r\n value = full - value;\r\n }\r\n }\r\n }\r\n else if (percent != null && $type.isNumber(percent.value)) {\r\n value = full * percent.value;\r\n }\r\n return value;\r\n}\r\n/**\r\n * [valueToRelative description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n * @param full [description]\r\n * @return [description]\r\n */\r\nexport function valueToRelative(value, full) {\r\n if (value instanceof Percent) {\r\n return value.value;\r\n }\r\n else {\r\n return value / full;\r\n }\r\n}\r\n/**\r\n * Returns pixel ratio of the current screen (used on retina displays).\r\n *\r\n * @return Pixel ratio\r\n */\r\nexport function getPixelRatio() {\r\n var ratio = window.devicePixelRatio || 1;\r\n return ratio;\r\n}\r\n/**\r\n * ============================================================================\r\n * STRING FORMATTING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Converts camelCased text to dashed version:\r\n * (\"thisIsString\" > \"this-is-string\")\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function camelToDashed(str) {\r\n return str.replace(/\\W+/g, '-').replace(/([a-z\\d])([A-Z])/g, '$1-$2').toLowerCase();\r\n}\r\n/**\r\n * Converts tring to uppercase.\r\n *\r\n * @param str String to convert\r\n * @return uppercased string\r\n * @todo Maybe make it better\r\n */\r\nexport function capitalize(str) {\r\n var arr = str.split(\"\");\r\n arr[0] = arr[0].toUpperCase();\r\n return arr.join(\"\");\r\n}\r\n/**\r\n * Converts any value into its string representation.\r\n *\r\n * @param value Value\r\n * @return String represantation of the value\r\n */\r\nexport function stringify(value) {\r\n return JSON.stringify(value);\r\n}\r\n/**\r\n * Escapes string so it can safely be used in a Regex.\r\n *\r\n * @param value Unsescaped string\r\n * @return Escaped string\r\n */\r\nexport function escapeForRgex(value) {\r\n return value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n}\r\n/**\r\n * Splits the text into multiple lines, respecting maximum character count.\r\n * Prioretizes splitting on spaces and punctuation. Falls back on splitting\r\n * mid-word if there's no other option.\r\n *\r\n * @param text Text\r\n * @param maxChars Maximum number of characters per line\r\n * @return An array of split text\r\n */\r\nexport function splitTextByCharCount(text, maxChars, fullWords, rtl, fullWordFallback) {\r\n // Maybe the text fits?\r\n if (text.length <= maxChars) {\r\n return [text];\r\n }\r\n // Init result\r\n var res = [];\r\n // Split by words or by charts\r\n if (fullWords) {\r\n // Split by words first\r\n // Split by spacing\r\n var currentIndex = -1;\r\n //let tmpText = text.replace(/([,;:!?\\\\\\/\\.]+[\\s]+|[\\s])/g, $strings.PLACEHOLDER + \"$1\" + $strings.PLACEHOLDER);\r\n var tmpText = text.replace(/([,;:!?\\\\\\/]+|[\\s])/g, $strings.PLACEHOLDER + \"$1\" + $strings.PLACEHOLDER);\r\n var words = tmpText.split($strings.PLACEHOLDER);\r\n // Glue end-of-word punctuation to the word itself\r\n for (var i = 1; i < words.length; i++) {\r\n var word = words[i];\r\n if ((word == \".\" || word == \",\") && words[i - 1].match(/[\\w]+$/)) {\r\n words[i - 1] += word;\r\n words[i] = \"\";\r\n }\r\n }\r\n // Process each word\r\n for (var i = 0; i < words.length; i++) {\r\n // Get word and symbol count\r\n var word = words[i];\r\n var wordLength = word.length;\r\n // Ignore empty words\r\n if (wordLength === 0) {\r\n continue;\r\n }\r\n // Check word length\r\n if ((wordLength > maxChars) && (fullWords !== true || fullWordFallback != false)) {\r\n //if (wordLength > maxChars) {\r\n // A single word is longer than allowed symbol count\r\n // Break it up\r\n if (rtl) {\r\n word = reverseString(word);\r\n }\r\n var parts = word.match(new RegExp(\".{1,\" + maxChars + \"}\", \"g\"));\r\n // TODO is this correct ?\r\n if (parts) {\r\n if (rtl) {\r\n for (var x = 0; x < parts.length; x++) {\r\n parts[x] = reverseString(parts[x]);\r\n }\r\n //parts.reverse();\r\n }\r\n res = res.concat(parts);\r\n }\r\n }\r\n else {\r\n // Init current line\r\n if (currentIndex === -1) {\r\n res.push(\"\");\r\n currentIndex = 0;\r\n }\r\n // Check if we need to break into another line\r\n if (((res[currentIndex].length + wordLength + 1) > maxChars) && res[currentIndex] !== \"\") {\r\n res.push(\"\");\r\n currentIndex++;\r\n }\r\n // Add word\r\n res[currentIndex] += word;\r\n }\r\n // Update index\r\n currentIndex = res.length - 1;\r\n }\r\n }\r\n else {\r\n // Splitting by anywhere (living la vida facil)\r\n var parts = text.match(new RegExp(\".{1,\" + maxChars + \"}\", \"g\"));\r\n if (parts) {\r\n if (rtl) {\r\n for (var x = 0; x < parts.length; x++) {\r\n if (!rtl) {\r\n parts[x] = reverseString(parts[x]);\r\n }\r\n }\r\n }\r\n res = parts;\r\n }\r\n }\r\n // Do we have only one word that does not fit?\r\n // Since fullWords is set and we can't split the word, we end up with empty\r\n // set.\r\n if (res.length == 1 && fullWords && fullWordFallback && (res[0].length > maxChars)) {\r\n res = [];\r\n }\r\n return res;\r\n}\r\n/**\r\n * Truncates the text to certain character count.\r\n *\r\n * Will add ellipsis if the string is truncated. Optionally, can truncate on\r\n * full words only.\r\n *\r\n * For RTL support, pass in the fifth parameter as `true`.\r\n *\r\n * @param text Input text\r\n * @param maxChars Maximum character count of output\r\n * @param ellipsis Ellipsis string, i.e. \"...\"\r\n * @param fullWords If `true`, will not break mid-word, unless there's a single word and it does not with into `maxChars`\r\n * @param rtl Is this an RTL text?\r\n * @return Truncated text\r\n */\r\nexport function truncateWithEllipsis(text, maxChars, ellipsis, fullWords, rtl) {\r\n if (text.length <= maxChars) {\r\n return text;\r\n }\r\n // Calc max chars\r\n maxChars -= ellipsis.length;\r\n if (maxChars < 1) {\r\n maxChars = 1;\r\n //ellipsis = \"\";\r\n }\r\n // Get lines\r\n var lines = splitTextByCharCount(text, maxChars, fullWords, rtl);\r\n // Use first line\r\n return (lines[0] || \"\") + ellipsis;\r\n}\r\n/**\r\n * Removes whitespace from beginning and end of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function trim(str) {\r\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\r\n}\r\n;\r\n/**\r\n * Removes whitespace from end of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function rtrim(str) {\r\n return str.replace(/[\\s\\uFEFF\\xA0]+$/g, \"\");\r\n}\r\n;\r\n/**\r\n * Removes whitespace from beginning of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function ltrim(str) {\r\n return str.replace(/^[\\s\\uFEFF\\xA0]+/g, \"\");\r\n}\r\n;\r\n/**\r\n * Reverses string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function reverseString(str) {\r\n return str.split(\"\").reverse().join(\"\");\r\n}\r\n/**\r\n * Removes quotes from the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function unquote(str) {\r\n var res = str.trim();\r\n res = str.replace(/^'(.*)'$/, \"$1\");\r\n if (res == str) {\r\n res = str.replace(/^\"(.*)\"$/, \"$1\");\r\n }\r\n return res;\r\n}\r\n/**\r\n * Pads a string with additional characters to certain length.\r\n *\r\n * @param value A numeric value\r\n * @param len Result string length in characters\r\n * @param char A character to use for padding\r\n * @return Padded value as string\r\n */\r\nexport function padString(value, len, char) {\r\n if (len === void 0) { len = 0; }\r\n if (char === void 0) { char = \"0\"; }\r\n if (typeof value !== \"string\") {\r\n value = value.toString();\r\n }\r\n return len > value.length ? Array(len - value.length + 1).join(char) + value : value;\r\n}\r\n/**\r\n * Tries to determine format type.\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format string\r\n * @return Format type (\"string\" | \"number\" | \"date\" | \"duration\")\r\n */\r\nexport function getFormat(format) {\r\n // Undefined?\r\n if (typeof format === \"undefined\") {\r\n return $strings.STRING;\r\n }\r\n // Cleanup and lowercase format\r\n format = format.toLowerCase().replace(/^\\[[^\\]]*\\]/, \"\");\r\n // Remove style tags\r\n format = format.replace(/\\[[^\\]]+\\]/, \"\");\r\n // Trim\r\n format = format.trim();\r\n // Check for any explicit format hints (i.e. /Date)\r\n var hints = format.match(/\\/(date|number|duration)$/);\r\n if (hints) {\r\n return hints[1];\r\n }\r\n // Check for explicit hints\r\n if (format === $strings.NUMBER) {\r\n return $strings.NUMBER;\r\n }\r\n if (format === $strings.DATE) {\r\n return $strings.DATE;\r\n }\r\n if (format === $strings.DURATION) {\r\n return $strings.DURATION;\r\n }\r\n // Detect number formatting symbols\r\n if (format.match(/[#0]/)) {\r\n return $strings.NUMBER;\r\n }\r\n // Detect date formatting symbols\r\n if (format.match(/[ymwdhnsqaxkzgtei]/)) {\r\n return $strings.DATE;\r\n }\r\n // Nothing? Let's display as string\r\n return $strings.STRING;\r\n}\r\n/**\r\n * Cleans up format:\r\n * * Strips out formatter hints\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format\r\n * @return Cleaned format\r\n */\r\nexport function cleanFormat(format) {\r\n return format.replace(/\\/(date|number|duration)$/i, \"\");\r\n}\r\n/**\r\n * Strips all tags from the string.\r\n *\r\n * @param text Source string\r\n * @return String without tags\r\n */\r\nexport function stripTags(text) {\r\n return text ? text.replace(/<[^>]*>/g, \"\") : text;\r\n}\r\n/**\r\n * Removes new lines and tags from a string.\r\n *\r\n * @param text String to conver\r\n * @return Converted string\r\n */\r\nexport function plainText(text) {\r\n return text ? stripTags((\"\" + text).replace(/[\\n\\r]+/g, \". \")) : text;\r\n}\r\n/**\r\n * ============================================================================\r\n * TYPE CONVERSION FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Converts numeric value into string. Deals with large or small numbers that\r\n * would otherwise use exponents.\r\n *\r\n * @param value Numeric value\r\n * @return Numeric value as string\r\n */\r\nexport function numberToString(value) {\r\n // TODO handle Infinity and -Infinity\r\n if ($type.isNaN(value)) {\r\n return \"NaN\";\r\n }\r\n if (value === Infinity) {\r\n return \"Infinity\";\r\n }\r\n if (value === -Infinity) {\r\n return \"-Infinity\";\r\n }\r\n // Negative 0\r\n if ((value === 0) && (1 / value === -Infinity)) {\r\n return \"-0\";\r\n }\r\n // Preserve negative and deal with absoute values\r\n var negative = value < 0;\r\n value = Math.abs(value);\r\n // TODO test this\r\n var parsed = $type.getValue(/^([0-9]+)(?:\\.([0-9]+))?(?:e[\\+\\-]([0-9]+))?$/.exec(\"\" + value));\r\n var digits = parsed[1];\r\n var decimals = parsed[2] || \"\";\r\n var res;\r\n // Leave the nummber as it is if it does not use exponents\r\n if (parsed[3] == null) {\r\n res = (decimals === \"\" ? digits : digits + \".\" + decimals);\r\n }\r\n else {\r\n var exponent = +parsed[3];\r\n // Deal with decimals\r\n if (value < 1) {\r\n var zeros = exponent - 1;\r\n res = \"0.\" + $string.repeat(\"0\", zeros) + digits + decimals;\r\n // Deal with integers\r\n }\r\n else {\r\n var zeros = exponent - decimals.length;\r\n if (zeros === 0) {\r\n res = digits + decimals;\r\n }\r\n else if (zeros < 0) {\r\n res = digits + decimals.slice(0, zeros) + \".\" + decimals.slice(zeros);\r\n }\r\n else {\r\n res = digits + decimals + $string.repeat(\"0\", zeros);\r\n }\r\n }\r\n }\r\n return negative ? \"-\" + res : res;\r\n}\r\n/**\r\n * Converts anything to Date object.\r\n *\r\n * @param value A value of any type\r\n * @return Date object representing a value\r\n */\r\nexport function anyToDate(value) {\r\n if ($type.isDate(value)) {\r\n // TODO maybe don't create a new Date ?\r\n var date = new Date(value);\r\n // This is needed because IE does not copy over milliseconds\r\n date.setMilliseconds(value.getMilliseconds());\r\n return date;\r\n }\r\n else if ($type.isNumber(value)) {\r\n return new Date(value);\r\n }\r\n else {\r\n // Try converting to number (assuming timestamp)\r\n var num = Number(value);\r\n if (!$type.isNumber(num)) {\r\n return new Date(value);\r\n }\r\n else {\r\n return new Date(num);\r\n }\r\n }\r\n}\r\n/**\r\n * Tries converting any value to a number.\r\n *\r\n * @param value Source value\r\n * @return Number\r\n */\r\nexport function anyToNumber(value) {\r\n if ($type.isDate(value)) {\r\n return value.getTime();\r\n }\r\n else if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n else if ($type.isString(value)) {\r\n // Try converting to number (assuming timestamp)\r\n var num = Number(value);\r\n if (!$type.isNumber(num)) {\r\n // Failing\r\n return undefined;\r\n }\r\n else {\r\n return num;\r\n }\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * DATE-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns a year day.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Year day\r\n * @todo Account for UTC\r\n */\r\nexport function getYearDay(date, utc) {\r\n if (utc === void 0) { utc = false; }\r\n var start = new Date(date.getFullYear(), 0, 0);\r\n var diff = (date.getTime() - start.getTime()) + ((start.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000);\r\n var oneDay = 1000 * 60 * 60 * 24;\r\n return Math.floor(diff / oneDay);\r\n}\r\n/**\r\n * Returns week number for a given date.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number\r\n * @todo Account for UTC\r\n */\r\nexport function getWeek(date, _utc) {\r\n if (_utc === void 0) { _utc = false; }\r\n var d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\r\n var day = d.getUTCDay() || 7;\r\n d.setUTCDate(d.getUTCDate() + 4 - day);\r\n var firstDay = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\r\n return Math.ceil((((d.getTime() - firstDay.getTime()) / 86400000) + 1) / 7);\r\n}\r\n/**\r\n * Returns a week number in the month.\r\n *\r\n * @param date Source Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number in month\r\n */\r\nexport function getMonthWeek(date, utc) {\r\n if (utc === void 0) { utc = false; }\r\n var firstWeek = getWeek(new Date(date.getFullYear(), date.getMonth(), 1), utc);\r\n var currentWeek = getWeek(date, utc);\r\n if (currentWeek == 1) {\r\n currentWeek = 53;\r\n }\r\n return currentWeek - firstWeek + 1;\r\n}\r\n/**\r\n * Returns a year day out of the given week number.\r\n *\r\n * @param week Week\r\n * @param year Year\r\n * @param weekday Weekday\r\n * @param utc Assume UTC dates\r\n * @return Day in a year\r\n */\r\nexport function getDayFromWeek(week, year, weekday, utc) {\r\n if (weekday === void 0) { weekday = 1; }\r\n if (utc === void 0) { utc = false; }\r\n var date = new Date(year, 0, 4, 0, 0, 0, 0);\r\n if (utc) {\r\n date.setUTCFullYear(year);\r\n }\r\n var day = week * 7 + weekday - ((date.getDay() || 7) + 3);\r\n return day;\r\n}\r\n/**\r\n * Returns 12-hour representation out of the 24-hour hours.\r\n *\r\n * @param hours 24-hour number\r\n * @return 12-hour number\r\n */\r\nexport function get12Hours(hours, base) {\r\n if (hours > 12) {\r\n hours -= 12;\r\n }\r\n else if (hours === 0) {\r\n hours = 12;\r\n }\r\n return $type.hasValue(base) ? hours + (base - 1) : hours;\r\n}\r\n/**\r\n * Returns a string name of the tome zone.\r\n *\r\n * @param date Date object\r\n * @param long Should return long (\"Pacific Standard Time\") or short abbreviation (\"PST\")\r\n * @param savings Include information if it's in daylight savings mode\r\n * @param utc Assume UTC dates\r\n * @return Time zone name\r\n */\r\nexport function getTimeZone(date, long, savings, utc) {\r\n if (long === void 0) { long = false; }\r\n if (savings === void 0) { savings = false; }\r\n if (utc === void 0) { utc = false; }\r\n if (utc) {\r\n return long ? \"Coordinated Universal Time\" : \"UTC\";\r\n }\r\n var wotz = date.toLocaleString(\"UTC\");\r\n var wtz = date.toLocaleString(\"UTC\", { timeZoneName: long ? \"long\" : \"short\" }).substr(wotz.length);\r\n //wtz = wtz.replace(/[+-]+[0-9]+$/, \"\");\r\n if (savings === false) {\r\n wtz = wtz.replace(/ (standard|daylight|summer|winter) /i, \" \");\r\n }\r\n return wtz;\r\n}\r\n/**\r\n * Returns a \"week year\" of the given date.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Year of week\r\n */\r\nexport function getWeekYear(date, _utc) {\r\n if (_utc === void 0) { _utc = false; }\r\n var d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\r\n var day = d.getUTCDay() || 7;\r\n d.setUTCDate(d.getUTCDate() + 4 - day);\r\n var firstDay = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\r\n return firstDay.getFullYear();\r\n}\r\n/**\r\n * ============================================================================\r\n * NUMBER-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns a random number between `from` and `to`.\r\n *\r\n * @param from From number\r\n * @param to To number\r\n * @return Random number\r\n */\r\nexport function random(from, to) {\r\n return Math.floor(Math.random() * (to - from)) + from;\r\n}\r\n/**\r\n * Fits the number into specific `min` and `max` bounds.\r\n *\r\n * @param value Input value\r\n * @param min Minimum value\r\n * @param max Maximum value\r\n * @return Possibly adjusted value\r\n */\r\nexport function fitNumber(value, min, max) {\r\n if (value > max) {\r\n return max;\r\n }\r\n else if (value < min) {\r\n return min;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Fits the number into specific `min` and `max` bounds.\r\n *\r\n * If the value is does not fit withing specified range, it \"wraps\" around the\r\n * values.\r\n *\r\n * For example, if we have input value 10 with min set at 1 and max set at 8,\r\n * the value will not fit. The remainder that does not fit (2) will be added\r\n * to `min`, resulting in 3.\r\n *\r\n * The output of regular `fitNumber()` would return 8 instead.\r\n *\r\n * @param value Input value\r\n * @param min Minimum value\r\n * @param max Maximum value\r\n * @return Possibly adjusted value\r\n */\r\nexport function fitNumberRelative(value, min, max) {\r\n var gap = max - min;\r\n if (value > max) {\r\n value = min + (value - gap * Math.floor(value / gap));\r\n }\r\n else if (value < min) {\r\n value = min + (value - gap * Math.floor(value / gap));\r\n }\r\n return value;\r\n}\r\n/**\r\n * ============================================================================\r\n * SPRITE-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Converts SVG element coordinates to coordinates within specific [[Sprite]].\r\n *\r\n * @param point SVG coordinates\r\n * @param sprite Sprite\r\n * @return Sprite coordinates\r\n */\r\nexport function svgPointToSprite(point, sprite) {\r\n var x = point.x;\r\n var y = point.y;\r\n var sprites = [];\r\n if (sprite) {\r\n while ($type.hasValue(sprite.parent)) {\r\n sprites.push(sprite);\r\n sprite = sprite.parent;\r\n }\r\n sprites.reverse();\r\n for (var i = 0; i < sprites.length; i++) {\r\n var sprite_1 = sprites[i];\r\n var angle = sprite_1.rotation;\r\n var relativeX = x - sprite_1.pixelX - sprite_1.ex;\r\n var relativeY = y - sprite_1.pixelY - sprite_1.ey;\r\n if (sprite_1.dx) {\r\n x -= sprite_1.dx;\r\n }\r\n if (sprite_1.dy) {\r\n y -= sprite_1.dy;\r\n }\r\n var scale = sprite_1.scale;\r\n // this handles nonscaling\r\n if (sprite_1.group) {\r\n scale = sprite_1.group.scale;\r\n }\r\n x = ($math.cos(-angle) * relativeX - $math.sin(-angle) * relativeY) / scale - sprite_1.pixelPaddingLeft;\r\n y = ($math.cos(-angle) * relativeY + $math.sin(-angle) * relativeX) / scale - sprite_1.pixelPaddingTop;\r\n }\r\n }\r\n return { x: x, y: y };\r\n}\r\n/**\r\n * Converts coordinates within [[Sprite]] to coordinates relative to the whole\r\n * SVG element.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @return SVG coordinates\r\n */\r\nexport function spritePointToSvg(point, sprite) {\r\n var x = point.x;\r\n var y = point.y;\r\n if (sprite) {\r\n while ($type.hasValue(sprite.parent)) {\r\n var angle = sprite.rotation;\r\n x += sprite.pixelPaddingLeft + sprite.ex;\r\n y += sprite.pixelPaddingTop + sprite.ey;\r\n var scale = sprite.scale;\r\n // this handles nonscaling\r\n if (sprite.group) {\r\n scale = sprite.group.scale;\r\n }\r\n var relativeX = sprite.pixelX + ((x * $math.cos(angle) - y * $math.sin(angle))) * scale;\r\n var relativeY = sprite.pixelY + ((x * $math.sin(angle) + y * $math.cos(angle))) * scale;\r\n if (sprite.dx) {\r\n relativeX += sprite.dx;\r\n }\r\n if (sprite.dy) {\r\n relativeY += sprite.dy;\r\n }\r\n x = relativeX;\r\n y = relativeY;\r\n sprite = sprite.parent;\r\n }\r\n }\r\n return { x: x, y: y };\r\n}\r\n/**\r\n * Converts coordinates of one sprite to another.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @param toSprite Sprite\r\n * @return converted coordinates\r\n */\r\nexport function spritePointToSprite(point, sprite, toSprite) {\r\n return svgPointToSprite(spritePointToSvg(point, sprite), toSprite);\r\n}\r\n/**\r\n * Converts a rectangle expressed in SVG element coordinates to coordinates\r\n * within specific [[Sprite]].\r\n *\r\n * @param rect SVG rectangle\r\n * @param sprite Sprite\r\n * @return Sprite rectangle\r\n */\r\nexport function svgRectToSprite(rect, sprite) {\r\n var p1 = svgPointToSprite(rect, sprite);\r\n var p2 = svgPointToSprite({ x: rect.x + rect.width, y: rect.y + rect.height }, sprite);\r\n return { x: p1.x, y: p1.y, width: p2.x - p1.x, height: p2.y - p1.y };\r\n}\r\n/**\r\n * Converts a rectangle expressed in [[Sprite]] coordinates to SVG coordinates.\r\n *\r\n * @param rect Sprite rectangle\r\n * @param sprite Sprite\r\n * @return SVG rectangle\r\n */\r\nexport function spriteRectToSvg(rect, sprite) {\r\n var p1 = spritePointToSvg(rect, sprite);\r\n var p2 = spritePointToSvg({ x: rect.x + rect.width, y: rect.y + rect.height }, sprite);\r\n return { x: p1.x, y: p1.y, width: p2.x - p1.x, height: p2.y - p1.y };\r\n}\r\n/**\r\n * Converts global document-wide coordinates to coordinates within SVG element.\r\n *\r\n * @param point Global coordinates\r\n * @param svgContainer SVG element\r\n * @return SVG coordinates\r\n */\r\nexport function documentPointToSvg(point, svgContainer, cssScale) {\r\n try {\r\n var bbox = svgContainer.getBoundingClientRect();\r\n if (!$type.isNumber(cssScale)) {\r\n cssScale = 1;\r\n }\r\n return {\r\n \"x\": (point.x - bbox.left) / cssScale,\r\n \"y\": (point.y - bbox.top) / cssScale\r\n };\r\n }\r\n catch (e) {\r\n return point;\r\n }\r\n}\r\n/**\r\n * Converts SVG coordinates to global document-wide coordinates.\r\n *\r\n * @param point SVG coordinates\r\n * @param svgContainer SVG element\r\n * @return Global coordinates\r\n */\r\nexport function svgPointToDocument(point, svgContainer) {\r\n try {\r\n var bbox = svgContainer.getBoundingClientRect();\r\n return {\r\n \"x\": point.x + bbox.left,\r\n \"y\": point.y + bbox.top\r\n };\r\n }\r\n catch (e) {\r\n return point;\r\n }\r\n}\r\n/**\r\n * Converts document-wide global coordinates to coordinates within specific\r\n * [[Sprite]].\r\n *\r\n * @param point Global coordinates\r\n * @param sprite Sprite\r\n * @return Sprite coordinates\r\n */\r\nexport function documentPointToSprite(point, sprite) {\r\n if (sprite && sprite.htmlContainer) {\r\n var svgPoint = documentPointToSvg(point, $type.getValue(sprite.htmlContainer), sprite.svgContainer.cssScale);\r\n return svgPointToSprite(svgPoint, sprite);\r\n }\r\n else {\r\n return point;\r\n }\r\n}\r\n/**\r\n * Converts coordinates within [[Sprite]] to global document coordinates.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @return Global coordinates\r\n */\r\nexport function spritePointToDocument(point, sprite) {\r\n if (sprite && sprite.htmlContainer) {\r\n var svgPoint = spritePointToSvg(point, sprite);\r\n return svgPointToDocument(svgPoint, $type.getValue(sprite.htmlContainer));\r\n }\r\n else {\r\n return point;\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * DEPRECATED FUNCTIONS\r\n * @todo Review and remove\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns element's width.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Width (px)\r\n * @deprecated Not used anywhere\r\n */\r\nexport function width(element) {\r\n var cs = getComputedStyle(element);\r\n var paddingX = parseFloat(cs.paddingLeft) + parseFloat(cs.paddingRight);\r\n var borderX = parseFloat(cs.borderLeftWidth) + parseFloat(cs.borderRightWidth);\r\n return element.clientWidth - paddingX - borderX;\r\n}\r\n/**\r\n * Returns element's height.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Height (px)\r\n * @deprecated Not used anywhere\r\n */\r\nexport function height(element) {\r\n var cs = getComputedStyle(element);\r\n var paddingY = parseFloat(cs.paddingTop) + parseFloat(cs.paddingBottom);\r\n var borderY = parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth);\r\n return element.clientHeight - paddingY - borderY;\r\n}\r\n/**\r\n * Returns number of decimals\r\n *\r\n * @ignore Exclude from docs\r\n * @param number Input number\r\n * @return Number of decimals\r\n */\r\nexport function decimalPlaces(number) {\r\n var match = ('' + number).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\r\n if (!match) {\r\n return 0;\r\n }\r\n return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));\r\n}\r\nvar urlRegexp = /^([a-zA-Z][a-zA-Z0-9\\+\\.\\-]*:)?(?:(\\/\\/)([^\\@]+\\@)?([^\\/\\?\\#\\:]*)(\\:[0-9]+)?)?([^\\?\\#]*)(\\?[^\\#]*)?(\\#.*)?$/;\r\n/**\r\n * Parses a URL\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n// TODO test this\r\nexport function parseUrl(url) {\r\n var match = urlRegexp.exec(url);\r\n return {\r\n protocol: (match && match[1]) || \"\",\r\n separator: (match && match[2]) || \"\",\r\n authority: (match && match[3]) || \"\",\r\n domain: (match && match[4]) || \"\",\r\n port: (match && match[5]) || \"\",\r\n path: (match && match[6]) || \"\",\r\n query: (match && match[7]) || \"\",\r\n hash: (match && match[8]) || \"\"\r\n };\r\n}\r\n/**\r\n * Serializes a Url into a string\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function serializeUrl(url) {\r\n return url.protocol + url.separator + url.authority + url.domain + url.port + url.path + url.query + url.hash;\r\n}\r\n/**\r\n * Checks whether a Url is relative or not\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n// TODO is this correct ?\r\nfunction isRelativeUrl(url) {\r\n return url.protocol === \"\" &&\r\n url.separator === \"\" &&\r\n url.authority === \"\" &&\r\n url.domain === \"\" &&\r\n url.port === \"\";\r\n}\r\n/**\r\n * Joins together two URLs, resolving relative URLs correctly\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n// TODO test this\r\nexport function joinUrl(left, right) {\r\n var parsedLeft = parseUrl(left);\r\n var parsedRight = parseUrl(right);\r\n if (isRelativeUrl(parsedLeft)) {\r\n throw new Error(\"Left URL is not absolute\");\r\n }\r\n if (isRelativeUrl(parsedRight)) {\r\n // TODO is this correct ?\r\n if (parsedRight.path !== \"\") {\r\n if (parsedRight.path[0] === \"/\") {\r\n parsedLeft.path = parsedRight.path;\r\n // TODO is this correct ?\r\n }\r\n else {\r\n var leftPath = parsedLeft.path.split(/\\//);\r\n var rightPath = parsedRight.path.split(/\\//);\r\n // TODO is this correct ?\r\n if (leftPath.length === 0) {\r\n if (rightPath.length !== 0) {\r\n leftPath.push(\"\");\r\n }\r\n }\r\n else if (leftPath.length > 1) {\r\n leftPath.pop();\r\n }\r\n $array.pushAll(leftPath, rightPath);\r\n parsedLeft.path = leftPath.join(\"/\");\r\n if (parsedLeft.path !== \"\" && parsedLeft.path[0] !== \"/\") {\r\n throw new Error(\"URL path must start with /\");\r\n }\r\n }\r\n }\r\n // TODO is this correct ?\r\n parsedLeft.query = parsedRight.query;\r\n parsedLeft.hash = parsedRight.hash;\r\n return serializeUrl(parsedLeft);\r\n }\r\n else {\r\n return serializeUrl(parsedRight);\r\n }\r\n}\r\n/**\r\n * Detects MSIE.\r\n *\r\n * @return Is IE?\r\n */\r\nexport function isIE() {\r\n return !!window.MSInputMethodContext && !!document.documentMode;\r\n}\r\n","/**\r\n * This module defines a [[Validatable]] class which can be used by all\r\n * non-[[Sprite]] classes to use system beats to revalidate themselves.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * This module defines a [[Validatable]] class which can be used by all\r\n * non-[[Sprite]] classes to use system update cycle to revalidate themselves.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar Validatable = /** @class */ (function (_super) {\r\n __extends(Validatable, _super);\r\n function Validatable() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * Is invalid and should be revalidated?\r\n */\r\n _this._validateDisposer = null;\r\n return _this;\r\n }\r\n /**\r\n * Invalidates the element, so that it can re-validate/redraw itself in the\r\n * next cycle.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Validatable.prototype.invalidate = function () {\r\n if (this._validateDisposer === null) {\r\n this._validateDisposer = registry.events.on(\"exitframe\", this.validate, this);\r\n }\r\n };\r\n /**\r\n * Validates itself.\r\n *\r\n * Most probably the extending class will have an overriding `validate()`\r\n * method which will do actual work, as well as call this method using\r\n * `super.validate()`.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Validatable.prototype.validate = function () {\r\n if (this._validateDisposer !== null) {\r\n this._validateDisposer.dispose();\r\n this._validateDisposer = null;\r\n }\r\n };\r\n Validatable.prototype.dispose = function () {\r\n if (this._validateDisposer !== null) {\r\n this._validateDisposer.dispose();\r\n this._validateDisposer = null;\r\n }\r\n _super.prototype.dispose.call(this);\r\n };\r\n return Validatable;\r\n}(BaseObjectEvents));\r\nexport { Validatable };\r\n","/**\r\n * Grip module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { registry } from \"../Registry\";\r\nimport { percent } from \"../utils/Percent\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a grip element that can be used for scrolling or other things.\r\n *\r\n * @see {@link IGripEvents} for a list of available events\r\n * @see {@link IGripAdapters} for a list of available Adapters\r\n * @since 4.4.0\r\n */\r\nvar Grip = /** @class */ (function (_super) {\r\n __extends(Grip, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Grip() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"Grip\";\r\n var cs = new InterfaceColorSet();\r\n // Set defaults\r\n _this.layout = \"absolute\";\r\n _this.padding(10, 10, 10, 10);\r\n _this.margin(3, 3, 3, 3);\r\n _this.background.fillOpacity = 0.3;\r\n _this.background.cornerRadius(10, 10, 10, 10);\r\n // Create an icon\r\n var icon = new Sprite();\r\n icon.element = _this.paper.add(\"path\");\r\n var path = $path.moveTo({ x: -6, y: 0 });\r\n path += $path.lineTo({ x: 6, y: 0 });\r\n path += $path.moveTo({ x: -8, y: -6 });\r\n path += $path.lineTo({ x: 0, y: -12 });\r\n path += $path.lineTo({ x: 8, y: -6 });\r\n path += $path.moveTo({ x: -8, y: 6 });\r\n path += $path.lineTo({ x: 0, y: 12 });\r\n path += $path.lineTo({ x: 8, y: 6 });\r\n icon.path = path;\r\n icon.strokeWidth = 2;\r\n icon.fillOpacity = 0;\r\n icon.pixelPerfect = true;\r\n icon.padding(0, 4, 0, 4);\r\n icon.stroke = cs.getFor(\"text\");\r\n icon.strokeOpacity = 0.7;\r\n icon.align = \"center\";\r\n icon.valign = \"middle\";\r\n _this.icon = icon;\r\n _this.label.dispose();\r\n _this.label = undefined;\r\n // Set default position\r\n _this.position = \"right\";\r\n // Set up autohide\r\n _this.autoHideDelay = 3000;\r\n _this.events.on(\"shown\", function (ev) {\r\n if (_this._autoHideTimeout) {\r\n _this._autoHideTimeout.dispose();\r\n }\r\n if (_this.autoHideDelay) {\r\n _this._autoHideTimeout = _this.setTimeout(function () {\r\n _this.hide();\r\n }, _this.autoHideDelay);\r\n }\r\n });\r\n _this.events.on(\"down\", function (ev) {\r\n if (_this._autoHideTimeout) {\r\n _this._autoHideTimeout.dispose();\r\n }\r\n });\r\n _this.events.on(\"out\", function (ev) {\r\n if (_this.autoHideDelay) {\r\n _this._autoHideTimeout = _this.setTimeout(function () {\r\n _this.hide();\r\n }, _this.autoHideDelay);\r\n }\r\n });\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Grip.prototype, \"position\", {\r\n /**\r\n * @return Position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"position\");\r\n },\r\n /**\r\n * Sets position of the grip.\r\n *\r\n * Available options: \"left\", \"right\" (default), \"top\", \"bottom\".\r\n *\r\n * @param value Position\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"position\", value)) {\r\n switch (value) {\r\n case \"left\":\r\n this.align = \"left\";\r\n this.valign = \"middle\";\r\n this.horizontalCenter = \"left\";\r\n this.verticalCenter = \"middle\";\r\n this.icon.rotation = 0;\r\n this.width = undefined;\r\n this.height = percent(30);\r\n break;\r\n case \"right\":\r\n this.align = \"right\";\r\n this.valign = \"middle\";\r\n this.horizontalCenter = \"right\";\r\n this.verticalCenter = \"middle\";\r\n this.icon.rotation = 0;\r\n this.width = undefined;\r\n this.height = percent(30);\r\n break;\r\n case \"top\":\r\n this.align = \"center\";\r\n this.valign = \"top\";\r\n this.horizontalCenter = \"middle\";\r\n this.verticalCenter = \"top\";\r\n this.icon.rotation = 90;\r\n this.width = percent(30);\r\n this.height = undefined;\r\n break;\r\n case \"bottom\":\r\n this.align = \"center\";\r\n this.valign = \"bottom\";\r\n this.horizontalCenter = \"middle\";\r\n this.verticalCenter = \"bottom\";\r\n this.icon.rotation = 90;\r\n this.width = percent(30);\r\n this.height = undefined;\r\n break;\r\n default:\r\n this.align = \"center\";\r\n this.valign = \"middle\";\r\n this.horizontalCenter = \"middle\";\r\n this.verticalCenter = \"middle\";\r\n this.icon.rotation = 90;\r\n this.width = percent(30);\r\n this.height = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Grip.prototype, \"autoHideDelay\", {\r\n /**\r\n * @return Delay\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"autoHideDelay\");\r\n },\r\n /**\r\n * Number of milliseconds to show grip until it is hidden automatically.\r\n *\r\n * @default 3000\r\n * @param value Delay\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"autoHideDelay\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Grip;\r\n}(Button));\r\nexport { Grip };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Grip\"] = Grip;\r\n","/**\r\n * [[Chart]] class provides base functionality for all chart types to inherit.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { registry } from \"../core/Registry\";\r\nimport { Component } from \"../core/Component\";\r\nimport { MutableValueDisposer, Disposer } from \"../core/utils/Disposer\";\r\nimport { ListTemplate, ListDisposer } from \"../core/utils/List\";\r\nimport { Container } from \"../core/Container\";\r\nimport { Label } from \"../core/elements/Label\";\r\nimport { Grip } from \"../core/elements/Grip\";\r\nimport { DataItem } from \"../core/DataItem\";\r\nimport { percent } from \"../core/utils/Percent\";\r\nimport * as $iter from \"../core/utils/Iterator\";\r\nimport * as $type from \"../core/utils/Type\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[Chart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar ChartDataItem = /** @class */ (function (_super) {\r\n __extends(ChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return ChartDataItem;\r\n}(DataItem));\r\nexport { ChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all Charts.\r\n *\r\n * @see {@link IChartEvents} for a list of available Events\r\n * @see {@link IChartAdapters} for a list of available Adapters\r\n */\r\nvar Chart = /** @class */ (function (_super) {\r\n __extends(Chart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Chart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A reference to chart's [[Legend]].\r\n * @ignore\r\n */\r\n _this._legend = new MutableValueDisposer();\r\n if (_this.constructor === Chart) {\r\n throw new Error(\"'Chart' cannot be instantiated directly. Please use a specific chart type.\");\r\n }\r\n _this.className = \"Chart\";\r\n // Create a list of titles\r\n var template = new Label();\r\n _this.titles = new ListTemplate(template);\r\n _this._disposers.push(new ListDisposer(_this.titles));\r\n _this._disposers.push(template);\r\n // Chart component is also a container. it holds _chartAndLegendCont and titles\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.layout = \"vertical\";\r\n // Chart and legend\r\n var chartAndLegendContainer = _this.createChild(Container);\r\n chartAndLegendContainer.shouldClone = false;\r\n chartAndLegendContainer.layout = \"vertical\";\r\n chartAndLegendContainer.width = percent(100);\r\n chartAndLegendContainer.height = percent(100);\r\n _this.chartAndLegendContainer = chartAndLegendContainer;\r\n // Chart container holds all the elements of a chart, extept titles and legend\r\n var chartContainer = chartAndLegendContainer.createChild(Container);\r\n chartContainer.shouldClone = false;\r\n chartContainer.width = percent(100);\r\n chartContainer.height = percent(100);\r\n _this.chartContainer = chartContainer;\r\n _this.showOnInit = true;\r\n _this._disposers.push(_this._legend);\r\n // Add title list events to apply certain formatting options and to make\r\n // the chart reference them as accessible screen reader labels\r\n _this.titles.events.on(\"inserted\", function (label) {\r\n _this.processTitle(label);\r\n _this.updateReaderTitleReferences();\r\n }, _this, false);\r\n _this.titles.events.on(\"removed\", function (label) {\r\n _this.updateReaderTitleReferences();\r\n }, _this, false);\r\n // Accessibility\r\n // It seems we can't set focusable on the whole chart because it seems to\r\n // mess up the whole focus event system - getting a focus on an inside\r\n // object also trigger focus on parent\r\n //this.focusable = true;\r\n _this.role = \"region\";\r\n _this.defaultState.transitionDuration = 1;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n Chart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Chart\");\r\n }\r\n };\r\n /**\r\n * Initiates drawing of the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Chart.prototype.draw = function () {\r\n this.fixLayout();\r\n _super.prototype.draw.call(this);\r\n };\r\n /**\r\n * Updates legend's hierarchy based on the position.\r\n */\r\n Chart.prototype.fixLayout = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var chartAndLegendContainer = this.chartAndLegendContainer;\r\n var chartContainer = this.chartContainer;\r\n chartContainer.x = undefined;\r\n chartContainer.y = undefined;\r\n if (legend.position != \"absolute\") {\r\n legend.x = undefined;\r\n legend.y = undefined;\r\n }\r\n switch (legend.position) {\r\n case \"left\":\r\n chartAndLegendContainer.layout = \"horizontal\";\r\n legend.toBack();\r\n break;\r\n case \"right\":\r\n chartAndLegendContainer.layout = \"horizontal\";\r\n legend.toFront();\r\n break;\r\n case \"top\":\r\n chartAndLegendContainer.layout = \"vertical\";\r\n legend.toBack();\r\n break;\r\n case \"bottom\":\r\n chartAndLegendContainer.layout = \"vertical\";\r\n legend.toFront();\r\n break;\r\n case \"absolute\":\r\n legend.isMeasured = false;\r\n break;\r\n }\r\n }\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n */\r\n Chart.prototype.feedLegend = function () {\r\n // Nothing here. This method is provided only as a \"placeholder\" for\r\n // extending classes to override\r\n };\r\n /**\r\n * Adds a new title to the chart when it is inserted into chart's titles\r\n * list.\r\n * @param event An event object which is triggered when inserting into titles list\r\n * @return Label object\r\n */\r\n Chart.prototype.processTitle = function (event) {\r\n var title = event.newValue;\r\n title.parent = this;\r\n title.toBack();\r\n title.shouldClone = false;\r\n title.align = \"center\";\r\n // Need to explicitly apply the `id` attribute so it can be referenced by\r\n // `aria-labelledby`\r\n title.uidAttr();\r\n return title;\r\n };\r\n /**\r\n * Checks if chart has any title elements. If it does, we will use them in an\r\n * `aria-labelledby` attribute so that screen readers can use them to properly\r\n * describe the chart when it is focused or hovered.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Chart.prototype.updateReaderTitleReferences = function () {\r\n if (this.titles.length) {\r\n var titleIds_1 = [];\r\n $iter.each(this.titles.iterator(), function (title) {\r\n titleIds_1.push(title.uid);\r\n });\r\n this.setSVGAttribute({ \"aria-labelledby\": titleIds_1.join(\" \") });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-labelledby\");\r\n }\r\n };\r\n Object.defineProperty(Chart.prototype, \"legend\", {\r\n /**\r\n * @return Legend\r\n */\r\n get: function () {\r\n return this._legend.get();\r\n },\r\n /**\r\n * Holds the instance of chart's [[Leged]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/legend/} for more information about legends\r\n * @param Legend\r\n */\r\n set: function (legend) {\r\n this.setLegend(legend);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Prepares the legend instance for use in this chart.\r\n *\r\n * @param legend Legend\r\n */\r\n Chart.prototype.setLegend = function (legend) {\r\n var _this = this;\r\n if (this._legend.get() !== legend) {\r\n if (legend) {\r\n // Set legend options\r\n legend.parent = this.chartAndLegendContainer;\r\n this._legend.set(legend, legend.events.on(\"propertychanged\", function (event) {\r\n if (event.property == \"position\") {\r\n _this.fixLayout();\r\n }\r\n }, undefined, false));\r\n legend.addDisposer(new Disposer(function () {\r\n _this.legend = undefined;\r\n }));\r\n }\r\n else {\r\n this._legend.reset();\r\n }\r\n this.feedLegend();\r\n }\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n Chart.prototype.dispose = function () {\r\n // otherwise there might be some errors when disposing chart which was just inited\r\n if (this.legend) {\r\n this.legend.dispose();\r\n }\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Chart.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up legend\r\n if ($type.hasValue(config.legend) && !$type.hasValue(config.legend.type)) {\r\n config.legend.type = \"Legend\";\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Copies all properties from another instance of [[Series]].\r\n *\r\n * @param source Source series\r\n */\r\n Chart.prototype.copyFrom = function (source) {\r\n this.titles.copyFrom(source.titles);\r\n this.chartContainer.copyFrom(source.chartContainer);\r\n if (source.legend) {\r\n this.legend = source.legend.clone();\r\n this.legend.removeChildren();\r\n }\r\n _super.prototype.copyFrom.call(this, source);\r\n };\r\n Object.defineProperty(Chart.prototype, \"dragGrip\", {\r\n /**\r\n * @return Grip\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._dragGrip) {\r\n var grip_1 = this.tooltipContainer.createChild(Grip);\r\n grip_1.align = \"right\";\r\n grip_1.valign = \"middle\";\r\n grip_1.hide(0);\r\n grip_1.events.on(\"down\", function (ev) {\r\n if (ev.touch) {\r\n _this.interactionsEnabled = false;\r\n }\r\n });\r\n grip_1.events.on(\"up\", function (ev) {\r\n _this.interactionsEnabled = true;\r\n });\r\n this.events.on(\"down\", function (ev) {\r\n if (ev.touch) {\r\n grip_1.show();\r\n }\r\n });\r\n this._dragGrip = grip_1;\r\n }\r\n return this._dragGrip;\r\n },\r\n /**\r\n * An instance of [[Grip]] which serves as a grip point which appears on\r\n * touch and allows scrolling whole page even if chart is occupying the\r\n * whole of the screen and would otherwise prevent scrolling.\r\n *\r\n * @since 4.4.0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/touch/} For more information.\r\n * @param value Grip\r\n */\r\n set: function (value) {\r\n this._dragGrip = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Chart.prototype, \"focusable\", {\r\n get: function () {\r\n return this.parent.focusable;\r\n },\r\n set: function (value) {\r\n this.parent.focusable = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Chart;\r\n}(Component));\r\nexport { Chart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Chart\"] = Chart;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Reduce horizontal margins\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Chart) {\r\n var state = target.states.create(stateId);\r\n if (target.pixelPaddingLeft > 10) {\r\n state.properties.paddingLeft = 10;\r\n }\r\n if (target.pixelPaddingRight > 10) {\r\n state.properties.paddingRight = 10;\r\n }\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Reduce vertical margins\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Chart) {\r\n var state = target.states.create(stateId);\r\n if (target.pixelPaddingTop > 10) {\r\n state.properties.paddingTop = 10;\r\n }\r\n if (target.pixelPaddingBottom > 10) {\r\n state.properties.paddingBottom = 10;\r\n }\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Remove horizontal padding\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthXXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Chart) {\r\n var state = target.states.create(stateId);\r\n state.properties.paddingLeft = 0;\r\n state.properties.paddingRight = 0;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Remove vertical padding\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Chart) {\r\n var state = target.states.create(stateId);\r\n state.properties.paddingTop = 0;\r\n state.properties.paddingBottom = 0;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n","/**\r\n * Module that defines everything related to building bullets.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates bullets.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar Bullet = /** @class */ (function (_super) {\r\n __extends(Bullet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Bullet() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Bullet\";\r\n _this.isMeasured = false;\r\n _this.tooltipX = 0;\r\n _this.tooltipY = 0;\r\n _this.layout = \"none\";\r\n _this.applyOnClones = true;\r\n _this.copyToLegendMarker = true;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Bullet.prototype, \"locationX\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"locationX\");\r\n },\r\n /**\r\n * Relative horizontal location within cell. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"locationX\", value)) {\r\n var dataItem = this.dataItem;\r\n if (dataItem && dataItem.component) {\r\n dataItem.component.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Bullet.prototype, \"locationY\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"locationY\");\r\n },\r\n /**\r\n * Relative vertical location within cell. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"locationY\", value)) {\r\n var dataItem = this.dataItem;\r\n if (dataItem && dataItem.component) {\r\n dataItem.component.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Bullet.prototype, \"xField\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"xField\");\r\n },\r\n /**\r\n * [xField description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"xField\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Bullet.prototype, \"yField\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"yField\");\r\n },\r\n /**\r\n * [yField description]\r\n *\r\n * Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"yField\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Bullet.prototype, \"isDynamic\", {\r\n /**\r\n * @return Redraw on data change?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"isDynamic\");\r\n },\r\n /**\r\n * Indicates if the bullet is \"dynamic\".\r\n *\r\n * In most cases the bullets remain the same, even if the underlying data\r\n * changes.\r\n *\r\n * However, in cases where bullet also displays a label, or its size depends\r\n * on data, it also needs to be redrawn when the underlying data changes.\r\n *\r\n * Only those bullets that have set `isDynamic = true` will be redrawn each\r\n * time data changes. Regular bullets will be reused as they are.\r\n *\r\n * @default false\r\n * @param value Redraw on data change?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"isDynamic\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Bullet.prototype, \"copyToLegendMarker\", {\r\n /**\r\n * @return Redraw on data change?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"copyToLegendMarker\");\r\n },\r\n /**\r\n * Indicates if the bullet should be copied to legend marker\r\n *\r\n * @default false\r\n * @param value Redraw on data change?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"copyToLegendMarker\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Bullet;\r\n}(Container));\r\nexport { Bullet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Bullet\"] = Bullet;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Hide bullets\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.isXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Bullet) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n","/**\r\n * Legend-related functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Component } from \"../core/Component\";\r\nimport { DataItem } from \"../core/DataItem\";\r\nimport { ListTemplate, ListDisposer } from \"../core/utils/List\";\r\nimport { RoundedRectangle } from \"../core/elements/RoundedRectangle\";\r\nimport { Container } from \"../core/Container\";\r\nimport { Label } from \"../core/elements/Label\";\r\nimport { keyboard } from \"../core/utils/Keyboard\";\r\nimport { registry } from \"../core/Registry\";\r\nimport { getInteraction } from \"../core/interaction/Interaction\";\r\nimport { percent, Percent } from \"../core/utils/Percent\";\r\nimport { InterfaceColorSet } from \"../core/utils/InterfaceColorSet\";\r\nimport * as $utils from \"../core/utils/Utils\";\r\nimport * as $type from \"../core/utils/Type\";\r\nimport * as $math from \"../core/utils/Math\";\r\nimport { Sprite } from \"../core/Sprite\";\r\nimport { Disposer } from \"../core/utils/Disposer\";\r\nimport { MouseCursorStyle } from \"../core/interaction/Mouse\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../core/utils/Responsive\";\r\nimport { Scrollbar } from \"../core/elements/Scrollbar\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[Legend]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar LegendDataItem = /** @class */ (function (_super) {\r\n __extends(LegendDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LegendDataItem() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * @ignore\r\n */\r\n _this.childrenCreated = false;\r\n _this.className = \"LegendDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(LegendDataItem.prototype, \"label\", {\r\n /**\r\n * A legend item's [[Label]] element.\r\n *\r\n * @return Label\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._label) {\r\n var label_1 = this.component.labels.create();\r\n this._label = label_1;\r\n this.addSprite(label_1);\r\n this._disposers.push(label_1);\r\n label_1.parent = this.itemContainer;\r\n this._disposers.push(new Disposer(function () {\r\n if ($type.hasValue(_this.component)) {\r\n _this.component.labels.removeValue(label_1);\r\n }\r\n }));\r\n }\r\n return this._label;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LegendDataItem.prototype, \"color\", {\r\n /**\r\n * @return Main color\r\n */\r\n get: function () {\r\n return this.properties.color;\r\n },\r\n /**\r\n * Main color of legend data item.\r\n *\r\n * This is set by the target element this legend item represents, like\r\n * a Series or a Slice.\r\n *\r\n * It can be used to derive a color in legend's sub-items, like label:\r\n *\r\n * ```TypeScript\r\n * chart.legend.labels.template.text = \"[{color}]{name}[/]\";\r\n * ```\r\n * ```JavaScript\r\n * chart.legend.labels.template.text = \"[{color}]{name}[/]\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"legend\": {\r\n * // ...\r\n * \"labels\": {\r\n * \"text\": \"[{color}]{name}[/]\"\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/legend/#Legend_labels} For more information about configuring legend labels.\r\n * @param value Main color\r\n */\r\n set: function (value) {\r\n this.setProperty(\"color\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LegendDataItem.prototype, \"valueLabel\", {\r\n /**\r\n * A legend item's [[Label]] element for \"value label\".\r\n *\r\n * @return Label\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._valueLabel) {\r\n var valueLabel_1 = this.component.valueLabels.create();\r\n this._valueLabel = valueLabel_1;\r\n this.addSprite(valueLabel_1);\r\n this._disposers.push(valueLabel_1);\r\n valueLabel_1.parent = this.itemContainer;\r\n this._disposers.push(new Disposer(function () {\r\n if ($type.hasValue(_this.component)) {\r\n _this.component.valueLabels.removeValue(valueLabel_1);\r\n }\r\n }));\r\n }\r\n return this._valueLabel;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LegendDataItem.prototype, \"itemContainer\", {\r\n /**\r\n * A reference to the main [[Container]] that holds legend item's elements:\r\n * marker and labels.\r\n *\r\n * @return Item container\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._itemContainer) {\r\n var component_1 = this.component;\r\n var itemContainer_1 = component_1.itemContainers.create();\r\n itemContainer_1.parent = component_1;\r\n this._itemContainer = itemContainer_1;\r\n this.addSprite(itemContainer_1);\r\n this._disposers.push(itemContainer_1);\r\n // Add click/tap event to toggle item\r\n if (itemContainer_1.togglable) {\r\n itemContainer_1.events.on(\"toggled\", function (ev) {\r\n component_1.toggleDataItem(ev.target.dataItem);\r\n }, undefined, false);\r\n }\r\n // Add focus event so that we can track which object is currently in focus\r\n // for keyboard toggling\r\n if (itemContainer_1.focusable) {\r\n itemContainer_1.events.on(\"hit\", function (ev) {\r\n // We need this here in order to reset focused item when it is clicked\r\n // normally so that it is not toggled by ENTER afterwards\r\n component_1.focusedItem = undefined;\r\n }, undefined, false);\r\n itemContainer_1.events.on(\"focus\", function (ev) {\r\n component_1.focusedItem = ev.target.dataItem;\r\n }, undefined, false);\r\n itemContainer_1.events.on(\"blur\", function (ev) {\r\n component_1.focusedItem = undefined;\r\n }, undefined, false);\r\n }\r\n this._disposers.push(new Disposer(function () {\r\n if ($type.hasValue(_this.component)) {\r\n _this.component.itemContainers.removeValue(itemContainer_1);\r\n }\r\n }));\r\n if (this.dataContext.uidAttr) {\r\n itemContainer_1.readerControls = this.dataContext.uidAttr();\r\n itemContainer_1.readerLabelledBy = this.dataContext.uidAttr();\r\n }\r\n var sprite = this.dataContext;\r\n if ((sprite instanceof DataItem || sprite instanceof Sprite) && !sprite.isDisposed()) {\r\n var visibilitychanged = function (ev) {\r\n itemContainer_1.readerChecked = ev.visible;\r\n itemContainer_1.events.disableType(\"toggled\");\r\n itemContainer_1.isActive = !ev.visible;\r\n itemContainer_1.events.enableType(\"toggled\");\r\n };\r\n sprite.addDisposer(new Disposer(function () {\r\n if (_this.component) {\r\n _this.component.dataItems.remove(_this);\r\n }\r\n }));\r\n if (sprite instanceof Sprite) {\r\n itemContainer_1.addDisposer(sprite.events.on(\"visibilitychanged\", visibilitychanged, undefined, false));\r\n itemContainer_1.addDisposer(sprite.events.on(\"hidden\", function (ev) {\r\n itemContainer_1.readerChecked = false;\r\n itemContainer_1.events.disableType(\"toggled\");\r\n itemContainer_1.isActive = true;\r\n itemContainer_1.events.enableType(\"toggled\");\r\n }, undefined, false));\r\n itemContainer_1.addDisposer(sprite.events.on(\"shown\", function (ev) {\r\n itemContainer_1.readerChecked = true;\r\n itemContainer_1.events.disableType(\"toggled\");\r\n itemContainer_1.isActive = false;\r\n itemContainer_1.events.enableType(\"toggled\");\r\n }, undefined, false));\r\n }\r\n else {\r\n itemContainer_1.addDisposer(sprite.events.on(\"visibilitychanged\", visibilitychanged, undefined, false));\r\n }\r\n }\r\n }\r\n return this._itemContainer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LegendDataItem.prototype, \"marker\", {\r\n /**\r\n * A [[Container]] that holds legend item's marker element.\r\n *\r\n * @return Marker\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._marker) {\r\n var marker_1 = this.component.markers.create();\r\n this._marker = marker_1;\r\n marker_1.parent = this.itemContainer;\r\n this.addSprite(marker_1);\r\n this._disposers.push(marker_1);\r\n this._disposers.push(new Disposer(function () {\r\n if ($type.hasValue(_this.component)) {\r\n _this.component.markers.removeValue(marker_1);\r\n }\r\n }));\r\n }\r\n return this._marker;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LegendDataItem;\r\n}(DataItem));\r\nexport { LegendDataItem };\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a class that carries legend settings.\r\n *\r\n * A legend might change its settings dynamically. Legend can also be shared\r\n * by several elements, requiring different settings.\r\n *\r\n * Having legend's settings in a separate object is a good way to \"hot swap\"\r\n * a set of settings for the legend.\r\n */\r\nvar LegendSettings = /** @class */ (function () {\r\n function LegendSettings() {\r\n /**\r\n * Should marker be created for each legend item.\r\n */\r\n this.createMarker = true;\r\n }\r\n return LegendSettings;\r\n}());\r\nexport { LegendSettings };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * [[Legend]] class is used to create legend for the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/legend/} for Legend documentation\r\n * @see {@link ILegendEvents} for a list of available events\r\n * @see {@link ILegendAdapters} for a list of available Adapters\r\n */\r\nvar Legend = /** @class */ (function (_super) {\r\n __extends(Legend, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Legend() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Legend\";\r\n // Set defaults\r\n _this.layout = \"grid\";\r\n _this.setPropertyValue(\"useDefaultMarker\", false);\r\n _this.setPropertyValue(\"scrollable\", false);\r\n _this.setPropertyValue(\"contentAlign\", \"center\");\r\n // Create a template container and list for legend items\r\n var itemContainer = new Container();\r\n itemContainer.applyOnClones = true;\r\n itemContainer.padding(8, 0, 8, 0);\r\n itemContainer.margin(0, 10, 0, 10);\r\n itemContainer.layout = \"horizontal\";\r\n itemContainer.clickable = true;\r\n itemContainer.focusable = true;\r\n itemContainer.role = \"switch\";\r\n itemContainer.togglable = true;\r\n itemContainer.cursorOverStyle = MouseCursorStyle.pointer;\r\n itemContainer.background.fillOpacity = 0; // creates hit area\r\n // Create container list using item template we just created\r\n _this.itemContainers = new ListTemplate(itemContainer);\r\n _this._disposers.push(new ListDisposer(_this.itemContainers));\r\n _this._disposers.push(_this.itemContainers.template);\r\n // Set up global keyboard events for toggling elements\r\n _this._disposers.push(getInteraction().body.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, \"enter\") && _this.focusedItem) {\r\n var focusedItem = _this.focusedItem;\r\n var target = focusedItem.itemContainer;\r\n if (target.togglable) {\r\n _this.toggleDataItem(focusedItem);\r\n }\r\n else if (target.clickable && target.events.isEnabled(\"hit\")) {\r\n target.dispatchImmediately(\"hit\", { event: ev });\r\n // We need this here because \"hit\" event resets `this.focusedItem`\r\n // And we need it here\r\n _this.focusedItem = focusedItem;\r\n }\r\n }\r\n }, _this));\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create a template container and list for the a marker\r\n var marker = new Container();\r\n marker.width = 23;\r\n marker.height = 23;\r\n marker.interactionsEnabled = false;\r\n marker.applyOnClones = true;\r\n marker.setStateOnChildren = true;\r\n marker.background.fillOpacity = 0;\r\n marker.background.strokeOpacity = 0;\r\n marker.propertyFields.fill = \"fill\";\r\n marker.valign = \"middle\";\r\n var disabledColor = interfaceColors.getFor(\"disabledBackground\");\r\n marker.events.on(\"childadded\", function (event) {\r\n var child = event.newValue;\r\n var activeState = child.states.create(\"active\");\r\n activeState.properties.stroke = disabledColor;\r\n activeState.properties.fill = disabledColor;\r\n });\r\n _this.markers = new ListTemplate(marker);\r\n _this._disposers.push(new ListDisposer(_this.markers));\r\n _this._disposers.push(_this.markers.template);\r\n // Create a legend background element\r\n var rectangle = marker.createChild(RoundedRectangle);\r\n rectangle.width = percent(100);\r\n rectangle.height = percent(100);\r\n rectangle.applyOnClones = true;\r\n rectangle.propertyFields.fill = \"fill\"; //othrwise old edge doesn't like as the same pattern is set both on parent and child https://codepen.io/team/amcharts/pen/72d7a98f3fb811d3118795220ff63182\r\n rectangle.strokeOpacity = 0;\r\n // Create a template container and list for item labels\r\n var label = new Label();\r\n label.text = \"{name}\";\r\n label.margin(0, 5, 0, 5);\r\n label.valign = \"middle\";\r\n label.applyOnClones = true;\r\n label.states.create(\"active\").properties.fill = interfaceColors.getFor(\"disabledBackground\");\r\n _this.labels = new ListTemplate(label);\r\n _this._disposers.push(new ListDisposer(_this.labels));\r\n _this._disposers.push(_this.labels.template);\r\n label.interactionsEnabled = false;\r\n label.truncate = true;\r\n label.fullWords = false;\r\n // Create a template container and list for item value labels\r\n var valueLabel = new Label();\r\n valueLabel.margin(0, 5, 0, 0);\r\n valueLabel.valign = \"middle\";\r\n valueLabel.width = 50; // to avoid rearranging legend entries when value changes.\r\n valueLabel.align = \"right\";\r\n valueLabel.textAlign = \"end\";\r\n valueLabel.applyOnClones = true;\r\n valueLabel.states.create(\"active\").properties.fill = interfaceColors.getFor(\"disabledBackground\");\r\n valueLabel.interactionsEnabled = false;\r\n _this.valueLabels = new ListTemplate(valueLabel);\r\n _this._disposers.push(new ListDisposer(_this.valueLabels));\r\n _this._disposers.push(_this.valueLabels.template);\r\n _this.position = \"bottom\"; // don't use setPropertyValue here!\r\n // Create a state for disabled legend items\r\n itemContainer.states.create(\"active\");\r\n itemContainer.setStateOnChildren = true;\r\n // Apply accessibility settings\r\n _this.role = \"group\";\r\n _this.events.on(\"layoutvalidated\", _this.handleScrollbar, _this, false);\r\n _this.events.on(\"parentset\", function () {\r\n var parent = _this.parent;\r\n if (parent) {\r\n _this._disposers.push(parent.events.on(\"maxsizechanged\", function () {\r\n if (_this.scrollable) {\r\n _this.setTimeout(function () {\r\n _this.updateMasks();\r\n _this.handleScrollbar();\r\n _this._handleWheelReal(1);\r\n }, 100);\r\n }\r\n }));\r\n }\r\n });\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n Legend.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Legend\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n Legend.prototype.createDataItem = function () {\r\n return new LegendDataItem();\r\n };\r\n /**\r\n * [validateDataElements description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Legend.prototype.validateDataElements = function () {\r\n if (this.scrollbar) {\r\n this.scrollbar.start = 0;\r\n this.scrollbar.end = 1;\r\n }\r\n _super.prototype.validateDataElements.call(this);\r\n };\r\n /**\r\n * [validateDataElement description]\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n * @todo Description\r\n * @todo Figure out how to update appearance of legend item without losing focus\r\n * @todo Update legend marker appearance as apperance of related series changes\r\n */\r\n Legend.prototype.validateDataElement = function (dataItem) {\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n // Get data item (legend item's) container\r\n var container = dataItem.itemContainer;\r\n var marker = dataItem.marker;\r\n $utils.used(dataItem.label);\r\n var valueLabel = dataItem.valueLabel;\r\n // Set parent and update current state\r\n container.readerChecked = dataItem.dataContext.visible;\r\n // Tell series its legend data item\r\n dataItem.dataContext.legendDataItem = dataItem;\r\n var tempMaxWidth = dataItem.label.maxWidth;\r\n if (!(dataItem.label.width instanceof Percent)) {\r\n dataItem.label.width = undefined;\r\n }\r\n if (tempMaxWidth > 0) {\r\n dataItem.label.maxWidth = tempMaxWidth;\r\n }\r\n if (valueLabel.align == \"right\") {\r\n valueLabel.width = undefined;\r\n }\r\n var legendSettings = dataItem.dataContext.legendSettings;\r\n // If we are not using default markers, create a unique legend marker based\r\n // on the data item type\r\n var dataContext = dataItem.dataContext;\r\n if (dataContext.createLegendMarker && (!this.useDefaultMarker || !(dataContext instanceof Sprite))) {\r\n if (!dataItem.childrenCreated) {\r\n dataContext.createLegendMarker(marker);\r\n dataItem.childrenCreated = true;\r\n }\r\n }\r\n else {\r\n this.markers.template.propertyFields.fill = undefined;\r\n }\r\n if (dataContext.updateLegendValue) {\r\n dataContext.updateLegendValue(); // this solves issue with external legend, as legend is created after chart updates legend values\r\n }\r\n if (dataContext.component && dataContext.component.updateLegendValue) {\r\n dataContext.component.updateLegendValue(dataContext);\r\n }\r\n if (valueLabel.invalid) {\r\n valueLabel.validate();\r\n }\r\n if (valueLabel.text == \"\" || valueLabel.text == undefined) {\r\n valueLabel.__disabled = true;\r\n }\r\n else {\r\n valueLabel.__disabled = false;\r\n }\r\n if (legendSettings && (legendSettings.itemValueText != undefined || legendSettings.valueText != undefined)) {\r\n valueLabel.__disabled = false;\r\n }\r\n var visible = dataItem.dataContext.visible;\r\n if (visible === undefined) {\r\n visible = true;\r\n }\r\n visible = $type.toBoolean(visible);\r\n dataItem.dataContext.visible = visible;\r\n container.events.disableType(\"toggled\");\r\n container.isActive = !visible;\r\n if (container.isActive) {\r\n container.setState(\"active\", 0);\r\n }\r\n else {\r\n container.setState(\"default\", 0);\r\n }\r\n container.events.enableType(\"toggled\");\r\n };\r\n Legend.prototype.afterDraw = function () {\r\n var _this = this;\r\n var maxWidth = this.getPropertyValue(\"maxWidth\");\r\n var maxLabelWidth = 0;\r\n this.labels.each(function (label) {\r\n if (label.invalid) {\r\n label.maxWidth = undefined;\r\n label.validate();\r\n }\r\n if (label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight > maxLabelWidth) {\r\n maxLabelWidth = label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight;\r\n }\r\n });\r\n var maxValueLabelWidth = 0;\r\n this.valueLabels.each(function (label) {\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n if (label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight > maxValueLabelWidth) {\r\n maxValueLabelWidth = label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight;\r\n }\r\n });\r\n var maxMarkerWidth = 0;\r\n this.markers.each(function (marker) {\r\n if (marker.invalid) {\r\n marker.validate();\r\n }\r\n if (marker.measuredWidth + marker.pixelMarginLeft + marker.pixelMarginRight > maxMarkerWidth) {\r\n maxMarkerWidth = marker.measuredWidth + marker.pixelMarginLeft + marker.pixelMarginRight;\r\n }\r\n });\r\n var itemContainer = this.itemContainers.template;\r\n var margin = itemContainer.pixelMarginRight + itemContainer.pixelMarginLeft;\r\n var maxAdjustedLabelWidth;\r\n var trueMaxWidth = maxLabelWidth + maxValueLabelWidth + maxMarkerWidth;\r\n if (!$type.isNumber(maxWidth)) {\r\n maxAdjustedLabelWidth = maxLabelWidth;\r\n }\r\n else {\r\n maxWidth = maxWidth - margin;\r\n if (maxWidth > trueMaxWidth) {\r\n maxWidth = trueMaxWidth;\r\n }\r\n maxAdjustedLabelWidth = maxWidth - maxMarkerWidth - maxValueLabelWidth;\r\n }\r\n this.labels.each(function (label) {\r\n if (_this.valueLabels.template.align == \"right\" || label.measuredWidth > maxAdjustedLabelWidth) {\r\n if (!(label.width instanceof Percent)) {\r\n label.width = Math.min(label.maxWidth, maxAdjustedLabelWidth - label.pixelMarginLeft - label.pixelMarginRight);\r\n label.maxWidth = label.width;\r\n }\r\n }\r\n });\r\n if (this.valueLabels.template.align == \"right\") {\r\n this.valueLabels.each(function (valueLabel) {\r\n valueLabel.width = maxValueLabelWidth - valueLabel.pixelMarginRight - valueLabel.pixelMarginLeft;\r\n });\r\n }\r\n _super.prototype.afterDraw.call(this);\r\n };\r\n Legend.prototype.handleScrollbar = function () {\r\n var scrollbar = this.scrollbar;\r\n if (this.scrollable && scrollbar) {\r\n var measuredHeight = this.maxHeight;\r\n scrollbar.height = measuredHeight;\r\n scrollbar.x = this.measuredWidth - scrollbar.pixelWidth - scrollbar.pixelMarginLeft;\r\n if (this.contentHeight > measuredHeight) {\r\n scrollbar.visible = true;\r\n scrollbar.thumb.height = scrollbar.height * measuredHeight / this.contentHeight;\r\n this.paddingRight = scrollbar.pixelWidth + scrollbar.pixelMarginLeft + scrollbar.pixelMarginRight;\r\n }\r\n else {\r\n scrollbar.thumb.height = scrollbar.height * measuredHeight / this.contentHeight;\r\n this.paddingRight = scrollbar.pixelWidth + scrollbar.pixelMarginLeft + scrollbar.pixelMarginRight;\r\n scrollbar.visible = false;\r\n scrollbar.start = 0;\r\n scrollbar.end = 1;\r\n }\r\n scrollbar.handleThumbPosition();\r\n this.updateMasks();\r\n }\r\n };\r\n Object.defineProperty(Legend.prototype, \"position\", {\r\n /**\r\n * @return Position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"position\");\r\n },\r\n /**\r\n * Position of the legend.\r\n *\r\n * Options: \"left\", \"right\", \"top\", \"bottom\" (default), or \"absolute\".\r\n *\r\n * IMPORTANT: [[MapChart]] will ignore this setting, as it is using different\r\n * layout structure than other charts.\r\n *\r\n * To position legend in [[MapChart]] set legend's `align` (`\"left\"` or\r\n * `\"right\"`) and `valign` (`\"top\"` or `\"bottom\"`) properties instead.\r\n *\r\n * @default \"bottom\"\r\n * @param value Position\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"position\", value)) {\r\n if (value == \"left\" || value == \"right\") {\r\n this.margin(10, 5, 10, 10);\r\n this.valign = \"middle\";\r\n this.contentAlign = \"none\";\r\n this.valueLabels.template.align = \"right\";\r\n if (!$type.isNumber(this.maxColumns)) {\r\n this.maxColumns = 1;\r\n }\r\n this.width = undefined;\r\n this.maxWidth = 220;\r\n }\r\n else {\r\n this.maxColumns = undefined;\r\n this.width = percent(100);\r\n this.valueLabels.template.align = \"left\";\r\n }\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Legend.prototype, \"useDefaultMarker\", {\r\n /**\r\n * @return Use default marker?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"useDefaultMarker\");\r\n },\r\n /**\r\n * Should legend try to mirror the look of the related item when building\r\n * the marker for legend item?\r\n *\r\n * If set to `false` it will try to make the marker look like its related\r\n * item.\r\n *\r\n * E.g. if an item is for a Line Series, it will display a line of the\r\n * same thickness, color, and will use the same bullets if series have them.\r\n *\r\n * If set to `true`, all markers will be shown as squares, regardless of te\r\n * series type.\r\n *\r\n * @default false\r\n * @param value Use default marker?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"useDefaultMarker\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Legend.prototype, \"scrollable\", {\r\n /**\r\n * @return Legend Scrollable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"scrollable\");\r\n },\r\n /**\r\n * If set to `true` the Legend will display a scrollbar if its contents do\r\n * not fit into its `maxHeight`.\r\n *\r\n * Please note that `maxHeight` is automatically set for Legend when its\r\n * `position` is set to `\"left\"` or `\"right\"`.\r\n *\r\n * @default false\r\n * @since 4.8.0\r\n * @param value Legend Scrollable?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"scrollable\", value, true)) {\r\n if (value) {\r\n var scrollbar = this.createChild(Scrollbar);\r\n this.scrollbar = scrollbar;\r\n scrollbar.isMeasured = false;\r\n scrollbar.orientation = \"vertical\";\r\n scrollbar.endGrip.__disabled = true;\r\n scrollbar.startGrip.__disabled = true;\r\n scrollbar.visible = false;\r\n scrollbar.marginLeft = 5;\r\n this._mouseWheelDisposer = this.events.on(\"wheel\", this.handleWheel, this, false);\r\n this._disposers.push(this._mouseWheelDisposer);\r\n this._disposers.push(scrollbar.events.on(\"rangechanged\", this.updateMasks, this, false));\r\n }\r\n else {\r\n if (this._mouseWheelDisposer) {\r\n this._mouseWheelDisposer.dispose();\r\n if (this.scrollbar) {\r\n this.scrollbar.dispose();\r\n this.scrollbar = undefined;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles mouse wheel scrolling of legend.\r\n *\r\n * @param event Event\r\n */\r\n Legend.prototype.handleWheel = function (event) {\r\n this._handleWheelReal(event.shift.y);\r\n };\r\n Legend.prototype._handleWheelReal = function (shift) {\r\n var scrollbar = this.scrollbar;\r\n if (scrollbar) {\r\n var ds = (shift / 1000 * this.measuredHeight / this.contentHeight);\r\n var delta = scrollbar.end - scrollbar.start;\r\n if (shift > 0) {\r\n scrollbar.start = $math.max(0, scrollbar.start - ds);\r\n scrollbar.end = scrollbar.start + delta;\r\n }\r\n else {\r\n scrollbar.end = $math.min(1, scrollbar.end - ds);\r\n scrollbar.start = scrollbar.end - delta;\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Legend.prototype.updateMasks = function () {\r\n var _this = this;\r\n if (this.scrollbar) {\r\n this.itemContainers.each(function (itemContainer) {\r\n itemContainer.dy = -_this.scrollbar.thumb.pixelY * _this.contentHeight / _this.maxHeight;\r\n itemContainer.maskRectangle = { x: 0, y: -itemContainer.dy, width: _this.measuredWidth, height: _this.maxHeight };\r\n });\r\n }\r\n this.invalidatePosition();\r\n };\r\n /**\r\n * Toggles a legend item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item Legend item\r\n * @todo Maybe do it with togglable instead\r\n */\r\n Legend.prototype.toggleDataItem = function (item) {\r\n var dataContext = item.dataContext;\r\n if (!dataContext.visible || dataContext.isHiding || (dataContext instanceof Sprite && dataContext.isHidden)) {\r\n item.color = item.colorOrig;\r\n dataContext.appeared = true;\r\n item.itemContainer.isActive = false;\r\n if (dataContext.hidden === true) {\r\n dataContext.hidden = false;\r\n }\r\n if (dataContext.show) {\r\n dataContext.show();\r\n }\r\n else {\r\n dataContext.visible = true;\r\n }\r\n this.svgContainer.readerAlert(this.language.translate(\"%1 shown\", this.language.locale, item.label.readerTitle));\r\n }\r\n else {\r\n item.itemContainer.isActive = true;\r\n dataContext.appeared = true;\r\n if (dataContext.hide) {\r\n dataContext.hide();\r\n }\r\n else {\r\n dataContext.visible = false;\r\n }\r\n this.svgContainer.readerAlert(this.language.translate(\"%1 hidden\", this.language.locale, item.label.readerTitle));\r\n item.color = new InterfaceColorSet().getFor(\"disabledBackground\");\r\n }\r\n };\r\n Object.defineProperty(Legend.prototype, \"preloader\", {\r\n /**\r\n * Override preloader method so that legend does not accidentally show its\r\n * own preloader.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Always `undefined`\r\n */\r\n get: function () {\r\n return;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [handleDataItemPropertyChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Legend.prototype.handleDataItemPropertyChange = function (dataItem, name) {\r\n dataItem.valueLabel.invalidate();\r\n dataItem.label.invalidate();\r\n };\r\n return Legend;\r\n}(Component));\r\nexport { Legend };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Legend\"] = Legend;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Move legend to below the chart if chart is narrow\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Legend && (target.position == \"left\" || target.position == \"right\")) {\r\n var state = target.states.create(stateId);\r\n state.properties.position = \"bottom\";\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Move legend to the right if chart is very short\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Legend && (target.position == \"top\" || target.position == \"bottom\")) {\r\n var state = target.states.create(stateId);\r\n state.properties.position = \"right\";\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Disable legend altogether on small charts\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.isXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Legend) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n","/**\r\n * Functionality for any series-based elements, like Line Series (graphs),\r\n * Pie slice lists, etc.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Component } from \"../../core/Component\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { List, ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Dictionary, DictionaryDisposer } from \"../../core/utils/Dictionary\";\r\nimport { DataItem } from \"../../core/DataItem\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Tooltip } from \"../../core/elements/Tooltip\";\r\nimport { Bullet } from \"../elements/Bullet\";\r\nimport { LegendSettings } from \"../Legend\";\r\nimport { options } from \"../../core/Options\";\r\nimport { Color } from \"../../core/utils/Color\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $ease from \"../../core/utils/Ease\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $colors from \"../../core/utils/Colors\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[Series]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar SeriesDataItem = /** @class */ (function (_super) {\r\n __extends(SeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SeriesDataItem\";\r\n //@todo Should we make `bullets` list disposable?\r\n //this._disposers.push(new DictionaryDisposer(this.bullets));\r\n _this.values.value = {};\r\n _this.values.value = {};\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(SeriesDataItem.prototype, \"bullets\", {\r\n /**\r\n * A dictionary of data items bullets, where key is uid of a bullet template.\r\n */\r\n get: function () {\r\n if (!this._bullets) {\r\n this._bullets = new Dictionary();\r\n this._disposers.push(new DictionaryDisposer(this._bullets));\r\n }\r\n return this._bullets;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n SeriesDataItem.prototype.dispose = function () {\r\n this.bullets.clear();\r\n _super.prototype.dispose.call(this);\r\n };\r\n Object.defineProperty(SeriesDataItem.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.value.value;\r\n },\r\n /**\r\n * data items's numeric value.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"value\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SeriesDataItem;\r\n}(DataItem));\r\nexport { SeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines base class for any kind of serial data.\r\n *\r\n * @see {@link ISeriesEvents} for a list of available Events\r\n * @see {@link ISeriesAdapters} for a list of available Adapters\r\n * @todo Separate axis-related stuff to some other class so that MapSeries would not have unrelated stuff\r\n */\r\nvar Series = /** @class */ (function (_super) {\r\n __extends(Series, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Series() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Should this series excluded from the axis scale calculations?\r\n *\r\n * @default false\r\n */\r\n _this._ignoreMinMax = false;\r\n /**\r\n * Should series' bullets?\r\n *\r\n * @default true\r\n */\r\n _this._showBullets = true;\r\n /**\r\n * Settings for the appearance of the related legend items.\r\n */\r\n _this.legendSettings = new LegendSettings();\r\n /**\r\n * Lowest overal values by type.\r\n */\r\n _this._tmin = new Dictionary();\r\n /**\r\n * Highest overal values by type.\r\n */\r\n _this._tmax = new Dictionary();\r\n /**\r\n * Lowest values in current selection by type.\r\n */\r\n _this._smin = new Dictionary();\r\n /**\r\n * Highest values in current selection by type.\r\n */\r\n _this._smax = new Dictionary();\r\n /**\r\n * [dataItemsByAxis description]\r\n *\r\n * Both by category and date.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.dataItemsByAxis = new Dictionary();\r\n /**\r\n * Normally series items are focusable using keyboard, so that people can\r\n * select them with a TAB key. However, if there are a lot of data points on\r\n * screen it might be long and useless to tab through all o fthem.\r\n *\r\n * This is where `skipFocusThreshold` comes in. If there are more items than\r\n * the value set here, we will not make those focusable and rather let screen\r\n * reader software rely on the series summary, or authors provide alternative\r\n * detailed information display, such as HTML table.\r\n *\r\n * Different series might have different threshold defaults.\r\n */\r\n _this.skipFocusThreshold = 20;\r\n /**\r\n * Used to indicate if `itemReaderText` was changed \"from the outside\".\r\n */\r\n _this._itemReaderTextChanged = false;\r\n /**\r\n * Most of the series use absolute values. However sometimes various\r\n * calculated percent values are need, e.g. item's percent representation\r\n * across all values in series, etc.\r\n *\r\n * It's a resource-intensive operation, so it is disabled by default.\r\n *\r\n * If you need percents to be calculated, e.g. for showing them in tooltips,\r\n * or creating 100% stacks, this setting needs to be set to `true`.\r\n *\r\n * NOTE: `PieChart`, which relies on slice percentages, has this\r\n * automatically set to `true`.\r\n *\r\n * @default false\r\n */\r\n _this.calculatePercent = false;\r\n /**\r\n * When `calculatePercent` is enabled and data item's percent value is\r\n * calculated, last item's real value is used instead of its working value.\r\n *\r\n * This is done for the animations when last item in series (e.g. slice in\r\n * a `PieSeries`) is hidden or shown. (if we would use real value, the\r\n * calculated percent would always be 100%).\r\n *\r\n * Sometimes there is a need (e.g. for drill-down Sunburst) to disable this\r\n * hack by setting `usePercentHack` to `false`.\r\n *\r\n * @since 4.9.13\r\n * @default true\r\n */\r\n _this.usePercentHack = true;\r\n /**\r\n * Specifies if series should be automatically disposed when removing from\r\n * chart's `series` list.\r\n *\r\n * @default true\r\n */\r\n _this.autoDispose = true;\r\n /**\r\n * When chart/series' data is processed, all kinds of derivative values are\r\n * calculated. E.g. sum, min, max, change, etc. This is a potentially\r\n * time-consuming operation, especially prominent in data-heavy charts.\r\n *\r\n * If your chart does not need those values, and you have a lot of data,\r\n * setting this to `true` might give a dramatic increase in initial chart\r\n * load speed.\r\n *\r\n * Please note, regular column and line series usage scenarios do not\r\n * require derivative values. Those come into play only when you do advanced\r\n * functionality like coloring segments of charts in different colors\r\n * depending on change between open and close values, have stacked series, or\r\n * display any of the derived values, like percent, in tooltips or bullets.\r\n *\r\n * @default false\r\n */\r\n _this.simplifiedProcessing = false;\r\n if (_this.constructor === Series) {\r\n throw new Error(\"'Series' cannot be instantiated directly. Please use a specific series type.\");\r\n }\r\n _this.className = \"Series\";\r\n _this.isMeasured = false;\r\n _this.layout = \"none\";\r\n _this.shouldClone = false;\r\n _this.setPropertyValue(\"hidden\", false);\r\n _this.axisRanges = new List();\r\n _this.axisRanges.events.on(\"inserted\", _this.processAxisRange, _this, false);\r\n _this.minBulletDistance = 0; // otherwise we'll have a lot of cases when people won't see bullets and think it's a bug\r\n _this.mainContainer = _this.createChild(Container);\r\n _this.mainContainer.shouldClone = false;\r\n _this.mainContainer.mask = _this.createChild(Sprite);\r\n _this._disposers.push(_this.mainContainer);\r\n // all bullets should go on top of lines/fills. So we add a separate container for bullets and later set it's parent to chart.bulletsContainer\r\n var bulletsContainer = _this.mainContainer.createChild(Container);\r\n _this._shouldBeReady.push(bulletsContainer);\r\n bulletsContainer.shouldClone = false;\r\n bulletsContainer.layout = \"none\";\r\n bulletsContainer.virtualParent = _this;\r\n _this._disposers.push(bulletsContainer);\r\n _this.bulletsContainer = bulletsContainer;\r\n _this.tooltip = new Tooltip();\r\n _this.tooltip.virtualParent = _this;\r\n _this._disposers.push(_this.tooltip);\r\n _this.hiddenState.transitionEasing = $ease.cubicIn;\r\n // this data item holds sums, averages, etc\r\n _this.dataItem = _this.createDataItem();\r\n _this._disposers.push(_this.dataItem);\r\n _this.dataItem.component = _this;\r\n // Apply accessibility\r\n _this.role = \"group\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * We need this here so that class names can be applied to bullets container.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.applyTheme = function () {\r\n _super.prototype.applyTheme.call(this);\r\n if (options.autoSetClassName && this.bulletsContainer) {\r\n this.bulletsContainer.className = this.className + \"-bullets\";\r\n this.bulletsContainer.setClassName();\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n Series.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n Series.prototype.createDataItem = function () {\r\n return new SeriesDataItem();\r\n };\r\n Object.defineProperty(Series.prototype, \"chart\", {\r\n /**\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart;\r\n },\r\n /**\r\n * Chart series is used on.\r\n *\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Positions bullet.\r\n *\r\n * @param bullet Sprite\r\n */\r\n Series.prototype.positionBullet = function (bullet) {\r\n // Placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Decorates newly created bullet after it has been instert into the list.\r\n *\r\n * @param event List event\r\n * @todo investigate why itemReaderText is undefined\r\n */\r\n Series.prototype.processBullet = function (event) {\r\n var _this = this;\r\n var bullet = event.newValue;\r\n bullet.isTemplate = true;\r\n // Add accessibility options to bullet\r\n // If there are relatively few bullets, make them focusable\r\n this.events.once(\"datavalidated\", function (ev) {\r\n if (_this.itemsFocusable()) {\r\n bullet.focusable = true;\r\n }\r\n });\r\n this.invalidate();\r\n };\r\n /**\r\n * removes bullets\r\n *\r\n * @param event List event\r\n */\r\n Series.prototype.removeBullet = function (event) {\r\n var bullet = event.oldValue;\r\n this.dataItems.each(function (dataItem) {\r\n var eachBullet = dataItem.bullets.getKey(bullet.uid);\r\n if (eachBullet) {\r\n eachBullet.dispose();\r\n }\r\n });\r\n this.invalidate();\r\n };\r\n /**\r\n * Validates data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.validateDataItems = function () {\r\n _super.prototype.validateDataItems.call(this);\r\n this.processValues(false);\r\n };\r\n /**\r\n * Returns first value for the specific key in the series.\r\n *\r\n * @param key Key\r\n * @return Value\r\n * @todo Description\r\n * @todo Convert to propert object property iterator\r\n */\r\n Series.prototype.getFirstValue = function (key, startIndex) {\r\n // find first\r\n /*\r\n return $iter.findMap(this.dataItems.iterator(), (dataItem) => {\r\n for (let key in dataItem.values) {\r\n if ($object.hasKey(dataItem.values, key)) {\r\n let value: number = dataItem.values[key].workingValue;\r\n if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n });*/\r\n //if (startIndex > 0 && startIndex < this.dataItems.length - 1) {\r\n //startIndex++;\r\n //}\r\n for (var i = startIndex; i >= 0; i--) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n var value = dataItem.getActualWorkingValue(key);\r\n if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Returns first value for the specific key in the series.\r\n *\r\n * @param key Key\r\n * @return Value\r\n * @todo Description\r\n * @todo Convert to propert object property iterator\r\n */\r\n Series.prototype.getAbsoluteFirstValue = function (key) {\r\n for (var i = 0; i < this.dataItems.length; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n var value = dataItem.values[key].value;\r\n if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * [rangeChangeUpdate description]\r\n *\r\n * @todo Description\r\n */\r\n Series.prototype.rangeChangeUpdate = function () {\r\n _super.prototype.rangeChangeUpdate.call(this);\r\n this.processValues(true);\r\n };\r\n /**\r\n * [processValues description]\r\n *\r\n * @todo Description\r\n * @todo Convert to propert object property iterator\r\n * @param dataItems [description]\r\n */\r\n Series.prototype.processValues = function (working) {\r\n var _this = this;\r\n if (!this.simplifiedProcessing) {\r\n var dataItems = this.dataItems;\r\n var count_1 = {};\r\n var sum_1 = {};\r\n var absoluteSum_1 = {};\r\n var low_1 = {};\r\n var high_1 = {};\r\n var open_1 = {};\r\n var close_1 = {};\r\n var previous_1 = {};\r\n var first_1 = {};\r\n var absoluteFirst_1 = {};\r\n //let duration: number = 0; // todo: check if series uses selection.change or selection.change.percent and set duration to interpolationduration\r\n var startIndex_1 = $math.max(0, this.startIndex);\r\n startIndex_1 = $math.min(startIndex_1, this.dataItems.length);\r\n var endIndex = $math.min(this.endIndex, this.dataItems.length);\r\n if (!$type.isNumber(startIndex_1)) {\r\n startIndex_1 = 0;\r\n }\r\n if (!$type.isNumber(endIndex)) {\r\n endIndex = this.dataItems.length;\r\n }\r\n if (startIndex_1 > 0) {\r\n var dataItem_1 = dataItems.getIndex(startIndex_1 - 1);\r\n $object.each(dataItem_1.values, function (key, values) {\r\n var value = dataItem_1.getActualWorkingValue(key);\r\n if ($type.isNumber(value)) {\r\n // save previous\r\n previous_1[key] = value;\r\n }\r\n });\r\n }\r\n var _loop_1 = function (i) {\r\n var dataItem_2 = dataItems.getIndex(i);\r\n $object.each(dataItem_2.values, function (key, values) {\r\n var value = dataItem_2.getActualWorkingValue(key);\r\n //if (i >= startIndex && i <= endIndex) { // do not add to count, sum etc if it is not within start/end index\r\n if ($type.isNumber(value)) {\r\n // count values\r\n if (!$type.isNumber(count_1[key])) {\r\n count_1[key] = 0;\r\n }\r\n count_1[key]++;\r\n // sum values\r\n if (!$type.isNumber(sum_1[key])) {\r\n sum_1[key] = 0;\r\n }\r\n sum_1[key] += value;\r\n // absolute sum values\r\n if (!$type.isNumber(absoluteSum_1[key])) {\r\n absoluteSum_1[key] = 0;\r\n }\r\n absoluteSum_1[key] += Math.abs(value);\r\n // open\r\n if (!$type.isNumber(open_1[key])) {\r\n open_1[key] = value;\r\n }\r\n // close\r\n close_1[key] = value;\r\n // low\r\n if (!$type.isNumber(low_1[key])) {\r\n low_1[key] = value;\r\n }\r\n else {\r\n if (low_1[key] > value) {\r\n low_1[key] = value;\r\n }\r\n }\r\n // high\r\n if (!$type.isNumber(high_1[key])) {\r\n high_1[key] = value;\r\n }\r\n else {\r\n if (high_1[key] < value) {\r\n high_1[key] = value;\r\n }\r\n }\r\n if (!$type.isNumber(first_1[key])) {\r\n first_1[key] = _this.getFirstValue(key, startIndex_1);\r\n }\r\n if (!$type.isNumber(absoluteFirst_1[key])) {\r\n absoluteFirst_1[key] = _this.getAbsoluteFirstValue(key);\r\n }\r\n // change\r\n dataItem_2.setCalculatedValue(key, value - first_1[key], \"change\");\r\n // change from start percent\r\n // will fail if first value is 0\r\n dataItem_2.setCalculatedValue(key, (value - first_1[key]) / first_1[key] * 100, \"changePercent\");\r\n dataItem_2.setCalculatedValue(key, (value - absoluteFirst_1[key]), \"startChange\");\r\n dataItem_2.setCalculatedValue(key, (value - absoluteFirst_1[key]) / absoluteFirst_1[key] * 100, \"startChangePercent\");\r\n // previous change\r\n var prevValue = previous_1[key];\r\n if (!$type.isNumber(prevValue)) {\r\n prevValue = value;\r\n }\r\n dataItem_2.setCalculatedValue(key, value - prevValue, \"previousChange\");\r\n // previous change percent\r\n dataItem_2.setCalculatedValue(key, (value - prevValue) / prevValue * 100, \"previousChangePercent\");\r\n // save previous\r\n previous_1[key] = value;\r\n }\r\n });\r\n };\r\n for (var i = startIndex_1; i < endIndex; i++) {\r\n _loop_1(i);\r\n }\r\n if (this.calculatePercent) {\r\n var _loop_2 = function (i) {\r\n var dataItem_3 = dataItems.getIndex(i);\r\n $object.each(dataItem_3.values, function (key) {\r\n var ksum = absoluteSum_1[key];\r\n var value = dataItem_3.getActualWorkingValue(key);\r\n if ($type.isNumber(value)) {\r\n if (ksum > 0) {\r\n if (_this.usePercentHack) {\r\n // this hack is made in order to make it possible to animate single slice to 0\r\n // if there is only one slice left, percent value is always 100%, so it won't animate\r\n // so we use real value of a slice instead of current value\r\n if (value == ksum) {\r\n ksum = dataItem_3.values[key].value;\r\n }\r\n }\r\n var percent = value / ksum * 100;\r\n dataItem_3.setCalculatedValue(key, percent, \"percent\");\r\n }\r\n else {\r\n dataItem_3.setCalculatedValue(key, 0, \"percent\");\r\n }\r\n }\r\n });\r\n };\r\n for (var i = startIndex_1; i < endIndex; i++) {\r\n _loop_2(i);\r\n }\r\n }\r\n // calculate one before first (cant do that in cycle, as we don't know open yet\r\n // when drawing line chart we should draw line to the invisible data point to the left, otherwise the line will always look like it starts from the selected point\r\n // so we do startIndex - 1\r\n if (startIndex_1 > 0) {\r\n var zeroItem_1 = dataItems.getIndex(startIndex_1 - 1);\r\n $object.each(zeroItem_1.values, function (key) {\r\n var value = zeroItem_1.values[key].value;\r\n // change\r\n zeroItem_1.setCalculatedValue(key, value - open_1[key], \"change\");\r\n // change percent\r\n zeroItem_1.setCalculatedValue(key, (value - open_1[key]) / open_1[key] * 100, \"changePercent\");\r\n });\r\n }\r\n // we save various data like sum, average to dataPoint of the series\r\n var dataItem_4 = this.dataItem;\r\n $object.each(dataItem_4.values, function (key) {\r\n dataItem_4.setCalculatedValue(key, sum_1[key], \"sum\");\r\n dataItem_4.setCalculatedValue(key, absoluteSum_1[key], \"absoluteSum\");\r\n dataItem_4.setCalculatedValue(key, sum_1[key] / count_1[key], \"average\");\r\n dataItem_4.setCalculatedValue(key, open_1[key], \"open\");\r\n dataItem_4.setCalculatedValue(key, close_1[key], \"close\");\r\n dataItem_4.setCalculatedValue(key, low_1[key], \"low\");\r\n dataItem_4.setCalculatedValue(key, high_1[key], \"high\");\r\n dataItem_4.setCalculatedValue(key, count_1[key], \"count\");\r\n });\r\n }\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.validate = function () {\r\n if ($utils.isIE()) {\r\n this.filters.clear();\r\n }\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n //axisRange.contents.disposeChildren(); // not good for columns, as they are reused\r\n //\t\t\taxisRange.appendChildren();\r\n axisRange.validate();\r\n });\r\n _super.prototype.validate.call(this);\r\n var bulletsContainer = this.bulletsContainer;\r\n bulletsContainer.fill = this.fill;\r\n bulletsContainer.stroke = this.stroke;\r\n bulletsContainer.x = this.pixelX;\r\n bulletsContainer.y = this.pixelY;\r\n if (this.bulletsContainer.children.length > 0) {\r\n if (this._showBullets) {\r\n for (var i = 0; i < this.startIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.bullets.each(function (key, bullet) {\r\n bullet.__disabled = true;\r\n });\r\n }\r\n }\r\n for (var i = this.dataItems.length - 1; i > this.endIndex; i--) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.bullets.each(function (key, bullet) {\r\n bullet.__disabled = true;\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n this.bulletsContainer.children.each(function (bullet) {\r\n bullet.__disabled = true;\r\n });\r\n }\r\n }\r\n this.updateTooltipBounds();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Series.prototype.updateTooltipBounds = function () {\r\n if (this.topParent) {\r\n var x = 0;\r\n var y = 0;\r\n var w = this.topParent.maxWidth;\r\n var h = this.topParent.maxHeight;\r\n var rect = { x: x, y: y, width: w, height: h };\r\n this.tooltip.setBounds(rect);\r\n }\r\n };\r\n Series.prototype.shouldCreateBullet = function (dataItem, bulletTemplate) {\r\n return true;\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n Series.prototype.validateDataElement = function (dataItem) {\r\n var _this = this;\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n if (this._showBullets) {\r\n if (!this.isHidden) {\r\n this.bulletsContainer.visible = true;\r\n }\r\n this.bullets.each(function (bulletTemplate) {\r\n // always better to use the same, this helps to avoid redrawing\r\n var bullet = dataItem.bullets.getKey(bulletTemplate.uid);\r\n if (_this.shouldCreateBullet(dataItem, bulletTemplate)) {\r\n if (!bullet) {\r\n var disabledField = bulletTemplate.propertyFields.disabled;\r\n var dataContext = dataItem.dataContext;\r\n if (disabledField && dataContext && dataContext[disabledField] === false) {\r\n bulletTemplate.applyOnClones = false;\r\n bulletTemplate.disabled = false;\r\n bullet = bulletTemplate.clone();\r\n bulletTemplate.disabled = true;\r\n bulletTemplate.applyOnClones = true;\r\n }\r\n else {\r\n bullet = bulletTemplate.clone();\r\n }\r\n bullet.shouldClone = false;\r\n dataItem.addSprite(bullet);\r\n if (!_this.visible || _this.isHiding) {\r\n bullet.hide(0);\r\n }\r\n }\r\n var currentDataItem = bullet.dataItem;\r\n if (currentDataItem != dataItem) {\r\n // set to undefined in order not to reuse\r\n if (currentDataItem) {\r\n currentDataItem.bullets.setKey(bulletTemplate.uid, undefined);\r\n }\r\n var readerText_1 = _this.itemReaderText;\r\n if (bullet instanceof Bullet) {\r\n if (!readerText_1) {\r\n readerText_1 = (\"{\" + bullet.xField + \"}: {\" + bullet.yField + \"}\");\r\n }\r\n if (bullet.isDynamic) {\r\n dataItem.events.on(\"workingvaluechanged\", bullet.deepInvalidate, bullet, false);\r\n //dataItem.events.on(\"calculatedvaluechanged\", bullet.deepInvalidate, bullet, false);\r\n _this.dataItem.events.on(\"workingvaluechanged\", bullet.deepInvalidate, bullet, false);\r\n }\r\n bullet.deepInvalidate();\r\n }\r\n // Add accessibility to bullet\r\n if (bullet.focusable) {\r\n bullet.events.on(\"focus\", function (ev) {\r\n bullet.readerTitle = _this.populateString(readerText_1, bullet.dataItem);\r\n }, undefined, false);\r\n bullet.events.on(\"blur\", function (ev) {\r\n bullet.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n if (bullet.hoverable) {\r\n bullet.events.on(\"over\", function (ev) {\r\n bullet.readerTitle = _this.populateString(readerText_1, bullet.dataItem);\r\n }, undefined, false);\r\n bullet.events.on(\"out\", function (ev) {\r\n bullet.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n }\r\n bullet.parent = _this.bulletsContainer;\r\n dataItem.bullets.setKey(bulletTemplate.uid, bullet);\r\n // pass max w/h so we'd know if we should show/hide somethings\r\n bullet.maxWidth = dataItem.itemWidth;\r\n bullet.maxHeight = dataItem.itemHeight;\r\n bullet.__disabled = false;\r\n _this.positionBullet(bullet);\r\n }\r\n else {\r\n if (bullet) {\r\n bullet.__disabled = true;\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n this.bulletsContainer.visible = false;\r\n }\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n if (!this.dataRangeInvalid) {\r\n this.invalidateProcessedData();\r\n }\r\n };\r\n Object.defineProperty(Series.prototype, \"ignoreMinMax\", {\r\n /**\r\n * @return Exclude from calculations?\r\n */\r\n get: function () {\r\n return this._ignoreMinMax;\r\n },\r\n /**\r\n * Should this series excluded from the axis scale calculations?\r\n *\r\n * @default false\r\n * @param value Exclude from calculations?\r\n */\r\n set: function (value) {\r\n this._ignoreMinMax = value;\r\n this.invalidateDataItems();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Create a mask for the series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.createMask = function () {\r\n // A placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Process axis range after it has been added to the list.\r\n *\r\n * @param event Event\r\n */\r\n Series.prototype.processAxisRange = function (event) {\r\n // create container if not existing\r\n if (!this.rangesContainer) {\r\n this.rangesContainer = this.createChild(Container);\r\n this.rangesContainer.shouldClone = false;\r\n this.rangesContainer.isMeasured = false;\r\n }\r\n var axisRange = event.newValue;\r\n if (axisRange) {\r\n axisRange.contents.parent = this.rangesContainer;\r\n axisRange.isRange = true;\r\n axisRange.events.on(\"valuechanged\", this.invalidateDataItems, this, false);\r\n }\r\n };\r\n /**\r\n * [getAxisField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param axis [description]\r\n * @return [description]\r\n */\r\n Series.prototype.getAxisField = function (axis) {\r\n return;\r\n };\r\n /**\r\n * Shows the tooltip at specific position.\r\n *\r\n * @ignore Exclude from docs\r\n * @param xPosition X\r\n * @param yPosition Y\r\n */\r\n Series.prototype.showTooltipAtPosition = function (xPosition, yPosition) {\r\n // Placeholder method for extending classes to override.\r\n };\r\n Object.defineProperty(Series.prototype, \"minBulletDistance\", {\r\n /**\r\n * @return Distance (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minBulletDistance\");\r\n },\r\n /**\r\n * Minimal distance between data points in pixels.\r\n *\r\n * If distance gets smaller than this, bullets are turned off to avoid\r\n * overlapping.\r\n *\r\n * `0` (zero) disables this behavior.\r\n *\r\n * IMPORTANT: This setting will work only when Series' base axis\r\n * is [[CategoryAxis]] or [[DateAxis]]. If base axis is [[ValueAxis]] the\r\n * setting will be ignored, because it would be a huge overhead to measure\r\n * distance between each and every bullet.\r\n *\r\n * @default 0\r\n * @param value Distance (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minBulletDistance\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Series.prototype, \"bullets\", {\r\n /**\r\n * A list of bullets that will be added to each and every items in the\r\n * series.\r\n *\r\n * You can push any object that is a descendant of a [[Sprite]] here. All\r\n * items added to this list will be copied and used as a bullet on all data\r\n * items, including their properties, events, etc.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/bullets/} for more info about the concept of Bullets\r\n * @return List of bullets.\r\n */\r\n get: function () {\r\n if (!this._bullets) {\r\n this._bullets = new ListTemplate(new Bullet());\r\n this._bullets.template.virtualParent = this;\r\n this._bullets.events.on(\"inserted\", this.processBullet, this, false);\r\n this._bullets.events.on(\"removed\", this.removeBullet, this, false);\r\n this._disposers.push(new ListDisposer(this._bullets));\r\n this._disposers.push(this._bullets.template);\r\n }\r\n return this._bullets;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Binds related legend data item's visual settings to this series' visual\r\n * settings.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n Series.prototype.createLegendMarker = function (marker) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n Object.defineProperty(Series.prototype, \"hiddenInLegend\", {\r\n /**\r\n * @return Hidden in legend?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hiddenInLegend\");\r\n },\r\n /**\r\n * Should the series be hidden in legend?\r\n *\r\n * @param value Hidden in legend?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"hiddenInLegend\", value)) {\r\n if (this.chart) {\r\n this.chart.feedLegend();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Series.prototype, \"name\", {\r\n /**\r\n * @return Name\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"name\");\r\n },\r\n /**\r\n * Series' name.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"name\", value);\r\n var legendDataItem = this.legendDataItem;\r\n if (legendDataItem) {\r\n legendDataItem.component.invalidate();\r\n legendDataItem.component.invalidateRawData();\r\n }\r\n this.readerTitle = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Series.prototype, \"itemReaderText\", {\r\n /**\r\n * @return Screen reader text template\r\n */\r\n get: function () {\r\n // Get explicitly set reader text\r\n var readerText = this._itemReaderText;\r\n // Not set? Let's try something else\r\n if (!readerText) {\r\n // Tooltip text?\r\n if (this.tooltipText) {\r\n readerText = $utils.plainText(this.tooltipText);\r\n }\r\n else if (this.tooltipHTML) {\r\n readerText = $utils.plainText(this.tooltipHTML);\r\n }\r\n }\r\n if (!this._adapterO) {\r\n return readerText;\r\n }\r\n else {\r\n return this._adapterO.apply(\"itemReaderText\", readerText);\r\n }\r\n },\r\n /**\r\n * Screen reader text to be applied to each individual data item, such\r\n * as bullets, columns or slices.\r\n *\r\n * The template can contain field reference meta codes, i.e. `{dateX}`,\r\n * `{valueY}`, etc.\r\n *\r\n * Any text formatting options, e.g. `[bold]` will be ignored.\r\n *\r\n * @param value Screen reader text template\r\n */\r\n set: function (value) {\r\n this._itemReaderText = value;\r\n this._itemReaderTextChanged = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns if number of data items in the series are beyond non-focusable\r\n * count and should not be available for TAB-through.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Items focusable?\r\n */\r\n Series.prototype.itemsFocusable = function () {\r\n return this.dataItems.length >= this.skipFocusThreshold ? false : true;\r\n };\r\n Object.defineProperty(Series.prototype, \"legendDataItem\", {\r\n /**\r\n * @return Data item\r\n */\r\n get: function () {\r\n return this._legendDataItem;\r\n },\r\n /**\r\n * Legend data item that corresponds to this series.\r\n *\r\n * @param value Data item\r\n */\r\n set: function (value) {\r\n this._legendDataItem = value;\r\n this._legendDataItem.itemContainer.deepInvalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates corresponding legend data item with current values.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n Series.prototype.updateLegendValue = function (dataItem, notRange) {\r\n // if this series has legend item\r\n if (this.legendDataItem) {\r\n var legendSettings = this.legendSettings;\r\n var legendDataItem = this.legendDataItem;\r\n var label = legendDataItem.label;\r\n var valueLabel = legendDataItem.valueLabel;\r\n // update legend\r\n if ((dataItem && !dataItem.isDisposed()) || notRange) {\r\n if (valueLabel) {\r\n if (legendSettings.itemValueText) {\r\n valueLabel.text = legendSettings.itemValueText;\r\n }\r\n valueLabel.dataItem = dataItem;\r\n }\r\n if (label) {\r\n if (legendSettings.itemLabelText) {\r\n label.text = legendSettings.itemLabelText;\r\n }\r\n label.dataItem = dataItem;\r\n }\r\n }\r\n else {\r\n if (label) {\r\n // if itemLabelText is set, means we have to reset label even if labelText is not set\r\n if (legendSettings.labelText || legendSettings.itemLabelText != undefined) {\r\n label.text = legendSettings.labelText;\r\n }\r\n label.dataItem = this.dataItem;\r\n }\r\n if (valueLabel) {\r\n if (legendSettings.valueText || legendSettings.itemValueText != undefined) {\r\n valueLabel.text = legendSettings.valueText;\r\n }\r\n valueLabel.dataItem = this.dataItem;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Copies all properties from another instance of [[Series]].\r\n *\r\n * @param source Source series\r\n */\r\n Series.prototype.copyFrom = function (source) {\r\n this.bullets.copyFrom(source.bullets);\r\n this.bulletsContainer.copyFrom(source.bulletsContainer);\r\n this.calculatePercent = source.calculatePercent;\r\n this.usePercentHack = source.usePercentHack;\r\n this.simplifiedProcessing = source.simplifiedProcessing;\r\n _super.prototype.copyFrom.call(this, source);\r\n };\r\n /**\r\n * Displays a modal or console message with error, and halts any further\r\n * processing of this element.\r\n *\r\n * @param e Error\r\n */\r\n Series.prototype.raiseCriticalError = function (e) {\r\n if (this._chart && this._chart.modal) {\r\n this._chart.modal.content = this._chart.adapter.apply(\"criticalError\", e).message;\r\n this._chart.modal.closable = false;\r\n if (!options.suppressErrors) {\r\n this._chart.modal.open();\r\n }\r\n this._chart.disabled = true;\r\n }\r\n if (options.verbose) {\r\n console.log(e);\r\n }\r\n };\r\n /**\r\n * Applies filters to the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.applyFilters = function () {\r\n var _this = this;\r\n _super.prototype.applyFilters.call(this);\r\n this.bulletsContainer.filters.clear();\r\n // copyFrom of a list copies, does not clone\r\n $iter.each(this.filters.iterator(), function (filter) {\r\n _this.bulletsContainer.filters.push(filter.clone());\r\n });\r\n };\r\n Object.defineProperty(Series.prototype, \"heatRules\", {\r\n /**\r\n * A list of heat rules to apply to series' elements based on the value\r\n * of the data item.\r\n *\r\n * Heat rules can be any \"numeric\" (including `Color`) property, and can also\r\n * be applied to child objects of series, like columns, bullets, etc.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * series.heatRules.push({\r\n * \"target\": series.columns.template,\r\n * \"property\": \"fill\",\r\n * \"min\": am4core.color(\"#F5DBCB\"),\r\n * \"max\": am4core.color(\"#ED7B84\"),\r\n * \"dataField\": \"valueY\"\r\n *});\r\n *```\r\n * ```Javacript\r\n * series.heatRules.push({\r\n * \"target\": series.columns.template,\r\n * \"property\": \"fill\",\r\n * \"min\": am4core.color(\"#F5DBCB\"),\r\n * \"max\": am4core.color(\"#ED7B84\"),\r\n * \"dataField\": \"valueY\"\r\n *});\r\n *```\r\n *```JSON\r\n *{\r\n * // ...\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"heatRules\": [{\r\n * \"target\": \"columns.template\",\r\n * \"property\": \"fill\",\r\n * \"min\": \"#F5DBCB\",\r\n * \"max\": \"#ED7B84\",\r\n * \"dataField\": \"valueY\"\r\n * }]\r\n * }]\r\n *}\r\n *```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/series/#Heat_maps} for more about heat rules\r\n * @return Heat rules\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._heatRules) {\r\n this._heatRules = new List();\r\n this._heatRules.events.on(\"inserted\", function (event) {\r\n var heatRule = event.newValue;\r\n var target = heatRule.target;\r\n if (target) {\r\n var dataField_1 = heatRule.dataField;\r\n if (!$type.hasValue(dataField_1)) {\r\n dataField_1 = \"value\";\r\n }\r\n var seriesDataItem_1 = _this.dataItem;\r\n var property_1 = heatRule.property;\r\n var minValue = $type.toNumber(heatRule.minValue);\r\n var maxValue = $type.toNumber(heatRule.maxValue);\r\n if (!$type.isNumber(minValue) && !$type.isNumber(maxValue)) {\r\n _this.dataItem.events.on(\"calculatedvaluechanged\", function (event) {\r\n if (event.property == dataField_1) {\r\n $iter.each(_this.dataItems.iterator(), function (dataItem) {\r\n var foundSprite = false;\r\n $array.each(dataItem.sprites, function (sprite) {\r\n if (sprite.clonedFrom == target) {\r\n var anySprite = sprite;\r\n anySprite[property_1] = anySprite[property_1];\r\n foundSprite = true;\r\n }\r\n });\r\n if (!foundSprite) {\r\n $array.each(dataItem.sprites, function (sprite) {\r\n if (sprite instanceof Container) {\r\n $iter.each(sprite.children.iterator(), function (child) {\r\n if (child.className == target.className) {\r\n var anyChild = child;\r\n anyChild[property_1] = anyChild[property_1];\r\n }\r\n // giveup here\r\n else if (child instanceof Container) {\r\n child.deepInvalidate();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n _this.dataItems.template.events.on(\"workingvaluechanged\", function (event) {\r\n if (event.property == dataField_1) {\r\n var dataItem = event.target;\r\n var foundSprite_1 = false;\r\n $array.each(dataItem.sprites, function (sprite) {\r\n if (sprite.clonedFrom == target) {\r\n var anySprite = sprite;\r\n anySprite[property_1] = anySprite[property_1];\r\n foundSprite_1 = true;\r\n }\r\n });\r\n if (!foundSprite_1) {\r\n $array.each(dataItem.sprites, function (sprite) {\r\n if (sprite instanceof Container) {\r\n $iter.each(sprite.children.iterator(), function (child) {\r\n if (child.className == target.className) {\r\n var anyChild = child;\r\n anyChild[property_1] = anyChild[property_1];\r\n }\r\n // givup here\r\n else if (child instanceof Container) {\r\n child.deepInvalidate();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n target.adapter.add(property_1, function (value, ruleTarget, property) {\r\n var minValue = $type.toNumber(heatRule.minValue);\r\n var maxValue = $type.toNumber(heatRule.maxValue);\r\n var min = heatRule.min;\r\n var max = heatRule.max;\r\n if (ruleTarget instanceof Sprite) {\r\n var anySprite = ruleTarget;\r\n var propertyField = anySprite.propertyFields[property];\r\n if (propertyField && ruleTarget.dataItem) {\r\n var dataContext = ruleTarget.dataItem.dataContext;\r\n if (dataContext && $type.hasValue(dataContext[propertyField])) {\r\n return value;\r\n }\r\n }\r\n }\r\n var dataItem = ruleTarget.dataItem;\r\n if (!$type.isNumber(minValue)) {\r\n minValue = seriesDataItem_1.values[dataField_1].low;\r\n }\r\n if (!$type.isNumber(maxValue)) {\r\n maxValue = seriesDataItem_1.values[dataField_1].high;\r\n }\r\n if (dataItem) {\r\n var fieldValues = dataItem.values[dataField_1];\r\n if (fieldValues) {\r\n var workingValue = dataItem.getActualWorkingValue(dataField_1);\r\n if ($type.hasValue(min) && $type.hasValue(max) && $type.isNumber(minValue) && $type.isNumber(maxValue) && $type.isNumber(workingValue)) {\r\n var percent = void 0;\r\n if (heatRule.logarithmic) {\r\n percent = (Math.log(workingValue) * Math.LOG10E - Math.log(minValue) * Math.LOG10E) / ((Math.log(maxValue) * Math.LOG10E - Math.log(minValue) * Math.LOG10E));\r\n }\r\n else {\r\n percent = (workingValue - minValue) / (maxValue - minValue);\r\n }\r\n if ($type.isNumber(workingValue) && (!$type.isNumber(percent) || Math.abs(percent) == Infinity)) {\r\n percent = 0.5;\r\n }\r\n // fixes problems if all values are the same\r\n if ($type.isNumber(min)) {\r\n return min + (max - min) * percent;\r\n }\r\n else if (min instanceof Color) {\r\n return new Color($colors.interpolate(min.rgb, max.rgb, percent));\r\n }\r\n }\r\n }\r\n }\r\n return value;\r\n });\r\n }\r\n });\r\n }\r\n return this._heatRules;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Series.prototype.processConfig = function (config) {\r\n var heatRules;\r\n if (config) {\r\n // Set up bullets\r\n if ($type.hasValue(config.bullets) && $type.isArray(config.bullets)) {\r\n for (var i = 0, len = config.bullets.length; i < len; i++) {\r\n var bullets = config.bullets[i];\r\n if (!$type.hasValue(bullets.type)) {\r\n bullets.type = \"Bullet\";\r\n }\r\n }\r\n }\r\n // Let's take heatRules out of the config, so that we can process\r\n // them later, when bullets are already there\r\n if ($type.hasValue(config.heatRules) && $type.isArray(config.heatRules)) {\r\n heatRules = config.heatRules;\r\n delete config.heatRules;\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n // Process heat rules again, when all other elements are ready\r\n if (heatRules) {\r\n for (var i = 0, len = heatRules.length; i < len; i++) {\r\n var rule = heatRules[i];\r\n // Resolve target\r\n var target = this;\r\n if ($type.hasValue(rule.target) && $type.isString(rule.target)) {\r\n // Check if we can find this element by id\r\n if (this.map.hasKey(rule.target)) {\r\n target = this.map.getKey(rule.target);\r\n }\r\n else {\r\n var parts = rule.target.split(\".\");\r\n for (var x = 0; x < parts.length; x++) {\r\n if (target instanceof List) {\r\n var listitem = target.getIndex($type.toNumber(parts[x]));\r\n if (!listitem) {\r\n target = target[parts[x]];\r\n }\r\n else {\r\n target = listitem;\r\n }\r\n }\r\n else {\r\n var maybeIndex = parts[x].match(/^(.*)\\[([0-9]+)\\]/);\r\n if (maybeIndex) {\r\n if (target[maybeIndex[1]] instanceof List) {\r\n target = target[maybeIndex[1]].getIndex($type.toNumber(maybeIndex[2]));\r\n }\r\n else {\r\n target = target[maybeIndex[1]][$type.toNumber(maybeIndex[2])];\r\n }\r\n }\r\n else {\r\n target = target[parts[x]];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n rule.target = target;\r\n // Resolve colors and percents\r\n if ($type.hasValue(rule.min)) {\r\n rule.min = this.maybeColorOrPercent(rule.min);\r\n }\r\n if ($type.hasValue(rule.max)) {\r\n rule.max = this.maybeColorOrPercent(rule.max);\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, {\r\n heatRules: heatRules\r\n });\r\n }\r\n };\r\n /**\r\n * Returns visibility value\r\n * @ignore\r\n */\r\n /*\r\n protected getVisibility(): boolean {\r\n let hidden = this.getPropertyValue(\"hidden\");\r\n if (hidden) {\r\n return false;\r\n }\r\n else {\r\n return super.getVisibility();\r\n }\r\n }*/\r\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\r\n Series.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // Must come last\r\n else if (a == \"heatRules\") {\r\n return 1;\r\n }\r\n else if (b == \"heatRules\") {\r\n return -1;\r\n }\r\n else {\r\n return _super.prototype.configOrder.call(this, a, b);\r\n }\r\n };\r\n /**\r\n * Sets `visibility` property:\r\n *\r\n * * `true` - visible\r\n * * `false` - hidden\r\n *\r\n * @param value true - visible, false - hidden\r\n * @return Current visibility\r\n */\r\n Series.prototype.setVisibility = function (value) {\r\n _super.prototype.setVisibility.call(this, value);\r\n this.bulletsContainer.visible = value;\r\n };\r\n return Series;\r\n}(Component));\r\nexport { Series };\r\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Series\"] = Series;\r\nregistry.registeredClasses[\"SeriesDataItem\"] = SeriesDataItem;\r\n","/**\r\n * Serial chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Chart, ChartDataItem } from \"../Chart\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Series } from \"../series/Series\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[SerialChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar SerialChartDataItem = /** @class */ (function (_super) {\r\n __extends(SerialChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SerialChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SerialChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return SerialChartDataItem;\r\n}(ChartDataItem));\r\nexport { SerialChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all series-based charts, like XY, Pie, etc.\r\n *\r\n * Is not useful on its own.\r\n *\r\n * @see {@link ISerialChartEvents} for a list of available Events\r\n * @see {@link ISerialChartAdapters} for a list of available Adapters\r\n */\r\nvar SerialChart = /** @class */ (function (_super) {\r\n __extends(SerialChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SerialChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this._exitDP = {};\r\n _this.className = \"SerialChart\";\r\n _this.colors = new ColorSet();\r\n _this._usesData = false;\r\n // Create a container for series\r\n var seriesContainer = _this.chartContainer.createChild(Container);\r\n seriesContainer.shouldClone = false;\r\n seriesContainer.width = percent(100);\r\n seriesContainer.height = percent(100);\r\n seriesContainer.isMeasured = false;\r\n seriesContainer.layout = \"none\";\r\n seriesContainer.zIndex = 2;\r\n _this.seriesContainer = seriesContainer;\r\n // Create a container for bullets\r\n var bulletsContainer = _this.chartContainer.createChild(Container);\r\n bulletsContainer.shouldClone = false;\r\n bulletsContainer.width = percent(100);\r\n bulletsContainer.height = percent(100);\r\n bulletsContainer.isMeasured = false;\r\n bulletsContainer.zIndex = 3;\r\n bulletsContainer.layout = \"none\";\r\n _this.bulletsContainer = bulletsContainer;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n SerialChart.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this.colors) {\r\n this.colors.dispose();\r\n }\r\n if (this.patterns) {\r\n this.patterns.dispose();\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor\r\n */\r\n SerialChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Serial chart\");\r\n }\r\n };\r\n Object.defineProperty(SerialChart.prototype, \"series\", {\r\n /**\r\n * A list of chart's series.\r\n *\r\n * @return Chart's series\r\n */\r\n get: function () {\r\n if (!this._series) {\r\n this._series = new ListTemplate(this.createSeries());\r\n this._series.events.on(\"inserted\", this.handleSeriesAdded, this, false);\r\n this._series.events.on(\"removed\", this.handleSeriesRemoved, this, false);\r\n this._disposers.push(new ListDisposer(this._series, false));\r\n this._disposers.push(this._series.template);\r\n }\r\n return this._series;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n SerialChart.prototype.handleSeriesRemoved = function (event) {\r\n var series = event.oldValue;\r\n this.dataUsers.removeValue(series);\r\n this.dataUsers.each(function (dataUser) {\r\n dataUser.invalidateDataItems();\r\n });\r\n if (this._exitDP[series.uid]) {\r\n this._exitDP[series.uid].dispose();\r\n delete this._exitDP[series.uid];\r\n }\r\n if (series.autoDispose) {\r\n series.dispose();\r\n }\r\n else {\r\n series.parent = undefined;\r\n series.bulletsContainer.parent = undefined;\r\n }\r\n //this.feedLegend();\r\n var legend = this.legend;\r\n if (legend) {\r\n var dataItems = this.legend.dataItems;\r\n for (var i = dataItems.length - 1; i >= 0; i--) {\r\n var dataItem = dataItems.getIndex(i);\r\n if (dataItem && dataItem.dataContext == series) {\r\n legend.dataItems.remove(dataItem);\r\n }\r\n }\r\n for (var i = legend.data.length - 1; i >= 0; i--) {\r\n var di = legend.data[i];\r\n if (di && di == series) {\r\n $array.remove(legend.data, di);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Decorates a new [[Series]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n SerialChart.prototype.handleSeriesAdded = function (event) {\r\n var _this = this;\r\n var series = event.newValue;\r\n if (series.isDisposed()) {\r\n return;\r\n }\r\n series.chart = this;\r\n series.parent = this.seriesContainer;\r\n series.bulletsContainer.parent = this.bulletsContainer;\r\n this._dataUsers.moveValue(series);\r\n series.addDisposer(new Disposer(function () {\r\n _this.dataUsers.removeValue(series);\r\n }));\r\n this.handleSeriesAdded2(series);\r\n this.handleLegendSeriesAdded(series);\r\n };\r\n SerialChart.prototype.handleLegendSeriesAdded = function (series) {\r\n if (!series.hiddenInLegend) {\r\n if (this.legend) {\r\n this.legend.addData(series);\r\n }\r\n }\r\n };\r\n SerialChart.prototype.handleSeriesAdded2 = function (series) {\r\n var _this = this;\r\n if (!this.dataInvalid) {\r\n this._exitDP[series.uid] = registry.events.once(\"exitframe\", function () {\r\n if (!series.data || series.data.length == 0) {\r\n series.data = _this.data;\r\n if (series.showOnInit) {\r\n series.reinit();\r\n series.setPropertyValue(\"showOnInit\", false);\r\n series.showOnInit = true;\r\n }\r\n if (!series.isDisposed()) {\r\n series.events.once(\"datavalidated\", function () {\r\n if (series.data == _this.data) {\r\n series._data = [];\r\n }\r\n });\r\n }\r\n }\r\n });\r\n this._disposers.push(this._exitDP[series.uid]);\r\n }\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n SerialChart.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var legendData_1 = [];\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (!series.hiddenInLegend) {\r\n legendData_1.push(series);\r\n }\r\n });\r\n legend.dataFields.name = \"name\";\r\n legend.data = legendData_1;\r\n }\r\n };\r\n /**\r\n * Creates and returns a new Series, suitable for this chart type.\r\n *\r\n * @return New series\r\n */\r\n SerialChart.prototype.createSeries = function () {\r\n return new Series();\r\n };\r\n Object.defineProperty(SerialChart.prototype, \"colors\", {\r\n /**\r\n * @return Color list\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"colors\");\r\n },\r\n /**\r\n * Chart's color list.\r\n *\r\n * This list can be used by a number of serial items, like applying a new\r\n * color for each Series added. Or, applying a new color for each slice\r\n * of a Pie chart.\r\n *\r\n * Please see [[ColorSet]] for information on how you can set up to generate\r\n * unique colors.\r\n *\r\n * A theme you are using may override default pre-defined colors.\r\n *\r\n * @param value Color list\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"colors\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SerialChart.prototype, \"patterns\", {\r\n /**\r\n * @return Pattern set\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"patterns\");\r\n },\r\n /**\r\n * A [[PatternSet]] to use when creating patterned fills for slices.\r\n *\r\n * @since 4.7.5\r\n * @param value Pattern set\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"patterns\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all parameters from another [[SerialChart]].\r\n *\r\n * @param source Source SerialChart\r\n */\r\n SerialChart.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.series.copyFrom(source.series);\r\n };\r\n /**\r\n * Hides the chart instantly and then shows it. If defaultState.transitionDuration > 0, this will result an animation in which properties of hidden state will animate to properties of visible state.\r\n */\r\n SerialChart.prototype.appear = function () {\r\n _super.prototype.appear.call(this);\r\n this.series.each(function (series) {\r\n if (series.showOnInit && series.inited) {\r\n series.appear();\r\n }\r\n });\r\n };\r\n return SerialChart;\r\n}(Chart));\r\nexport { SerialChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SerialChart\"] = SerialChart;\r\n","/**\r\n * Axis break module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { WavedLine } from \"../../core/elements/WavedLine\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base class to define \"breaks\" on axes.\r\n *\r\n * @see {@link IAxisBreakEvents} for a list of available events\r\n * @see {@link IAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisBreak = /** @class */ (function (_super) {\r\n __extends(AxisBreak, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisBreak() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Reference to parent Axis.\r\n */\r\n _this._axis = new MutableValueDisposer();\r\n /**\r\n * A list of axis data items which fall within this break.\r\n */\r\n _this.dataItems = new List();\r\n _this.className = \"AxisBreak\";\r\n // Set defaults\r\n _this.breakSize = 0.01;\r\n _this.marginLeft = -5;\r\n _this.marginRight = -5;\r\n _this.marginTop = -5;\r\n _this.marginBottom = -5;\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create elements\r\n // (these won't be used actually, just for setting properties)\r\n var fillShape = new WavedLine();\r\n fillShape.fill = interfaceColors.getFor(\"background\");\r\n fillShape.stroke = color();\r\n fillShape.fillOpacity = 0.9;\r\n fillShape.zIndex = 0;\r\n _this._fillShape = fillShape;\r\n var startLine = new WavedLine();\r\n startLine.fill = color();\r\n startLine.stroke = interfaceColors.getFor(\"grid\");\r\n startLine.strokeOpacity = 0.3;\r\n startLine.zIndex = 1;\r\n _this._startLine = startLine;\r\n var endLine = new WavedLine();\r\n endLine.fill = color();\r\n endLine.stroke = color(\"#000000\"); // interfaceColors.getFor(\"grid\");\r\n endLine.strokeOpacity = 0.3;\r\n endLine.zIndex = 2;\r\n _this._endLine = endLine;\r\n _this._disposers.push(_this._axis);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n AxisBreak.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this._fillShape) {\r\n this._fillShape.dispose();\r\n }\r\n if (this._startLine) {\r\n this._startLine.dispose();\r\n }\r\n if (this._endLine) {\r\n this._endLine.dispose();\r\n }\r\n };\r\n Object.defineProperty(AxisBreak.prototype, \"startLine\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._startLine;\r\n },\r\n /**\r\n * An element used for the starting line of the break.\r\n *\r\n * @param sprite Element\r\n */\r\n set: function (sprite) {\r\n if (this._startLine) {\r\n this._startLine.dispose();\r\n }\r\n this._startLine = sprite;\r\n this.addBreakSprite(sprite);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endLine\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._endLine;\r\n },\r\n /**\r\n * An element used for the end line of the break.\r\n *\r\n * @param sprite Element\r\n */\r\n set: function (sprite) {\r\n if (this._endLine) {\r\n this._endLine.dispose();\r\n }\r\n this._endLine = sprite;\r\n this.addBreakSprite(sprite);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"fillShape\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._fillShape;\r\n },\r\n /**\r\n * An element used for fill of the break.\r\n *\r\n * @param sprite Element\r\n */\r\n set: function (sprite) {\r\n if (this._fillShape) {\r\n this._fillShape.dispose();\r\n }\r\n this._fillShape = sprite;\r\n this.addBreakSprite(sprite);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds a break element (e.g. lines, fill) to the break, which is\r\n * [[Container]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprite Element to add\r\n */\r\n AxisBreak.prototype.addBreakSprite = function (sprite) {\r\n sprite.parent = this;\r\n sprite.isMeasured = false;\r\n this._disposers.push(sprite);\r\n };\r\n Object.defineProperty(AxisBreak.prototype, \"axis\", {\r\n /**\r\n * @return Axis\r\n */\r\n get: function () {\r\n return this._axis.get();\r\n },\r\n /**\r\n * An Axis this Break is associated with.\r\n *\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n if (this._axis.get() !== axis) {\r\n this._axis.set(axis, axis.renderer.gridContainer.events.on(\"transformed\", this.invalidate, this, false));\r\n axis.renderer.createBreakSprites(this);\r\n // this can't go to copyFrom, as axis is set later\r\n var breakTemplate = axis.axisBreaks.template;\r\n this.startLine.copyFrom(breakTemplate.startLine);\r\n this.endLine.copyFrom(breakTemplate.endLine);\r\n this.fillShape.copyFrom(breakTemplate.fillShape);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"breakSize\", {\r\n /**\r\n * @return Relative axis break\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"breakSize\");\r\n },\r\n /**\r\n * A size of the break relative to the actual size of the scope break spans.\r\n *\r\n * For example, if `breakSize = 0.1` and unbroken scope of values it spans\r\n * would be 100 pixels, the break would be 10 pixels wide.\r\n *\r\n * 0 means the break will completely collapse and hide the values.\r\n * 1 means break would be not collapse at all, which would make it\r\n * effectively useless.\r\n *\r\n * @default 0.01\r\n * @param value Relative axis break\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"breakSize\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"startPoint\", {\r\n /**\r\n * Returns pixel coordinates of axis break's start.\r\n *\r\n * @return Start point\r\n */\r\n get: function () {\r\n var renderer = this.axis.renderer;\r\n if (renderer) {\r\n return renderer.positionToPoint(this.startPosition);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endPoint\", {\r\n /**\r\n * Returns pixel coordinates of axis break's end.\r\n *\r\n * @return End point\r\n */\r\n get: function () {\r\n var renderer = this.axis.renderer;\r\n if (renderer) {\r\n return renderer.positionToPoint(this.endPosition);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"startPosition\", {\r\n /**\r\n * Returns a relative position at which axis break starts.\r\n *\r\n * This is a calculated position, meaning it shows relative position of the\r\n * break after break is applied.\r\n *\r\n * @return Start position\r\n */\r\n get: function () {\r\n return;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endPosition\", {\r\n /**\r\n * Returns a relative position at which axis break ends.\r\n *\r\n * This is a calculated position, meaning it shows relative position of the\r\n * break after break is applied.\r\n *\r\n * @return End position\r\n */\r\n get: function () {\r\n return;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Draws the axis break.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisBreak.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n renderer.updateBreakElement(this);\r\n }\r\n };\r\n Object.defineProperty(AxisBreak.prototype, \"startValue\", {\r\n /**\r\n * @return Starting value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startValue\");\r\n },\r\n /**\r\n * A starting value for the break.\r\n *\r\n * @param value Starting value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startValue\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endValue\", {\r\n /**\r\n * @return End value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endValue\");\r\n },\r\n /**\r\n * An end value for the break.\r\n *\r\n * @param value End value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endValue\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisBreak;\r\n}(Container));\r\nexport { AxisBreak };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisBreak\"] = AxisBreak;\r\n","/**\r\n * Base class for all Axis\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Component } from \"../../core/Component\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { DataItem } from \"../../core/DataItem\";\r\nimport { AxisBreak } from \"./AxisBreak\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { Tooltip } from \"../../core/elements/Tooltip\";\r\nimport { SortedListTemplate } from \"../../core/utils/SortedList\";\r\nimport { List, ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Disposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $number from \"../../core/utils/Number\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[Axis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar AxisDataItem = /** @class */ (function (_super) {\r\n __extends(AxisDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisDataItem.prototype, \"grid\", {\r\n /**\r\n * @return Grid element\r\n */\r\n get: function () {\r\n if (!this._grid) {\r\n var component_1 = this.component;\r\n if (component_1) {\r\n var template = void 0;\r\n var grid_1;\r\n if (this.isRange) {\r\n template = component_1.axisRanges.template.grid;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n grid_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_1.renderer.grid.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n grid_1 = component_1.renderer.grid.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_1.renderer.grid.removeValue(grid_1);\r\n }));\r\n }\r\n }\r\n this.grid = grid_1;\r\n grid_1.shouldClone = false;\r\n this._disposers.push(grid_1);\r\n grid_1.axis = this.component;\r\n }\r\n }\r\n return this._grid;\r\n },\r\n /**\r\n * A [[Grid]] element associated with this data item.\r\n *\r\n * If there is no grid element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param grid Grid element\r\n */\r\n set: function (grid) {\r\n if (this._grid && this._grid != grid) {\r\n $array.remove(this.sprites, this._grid);\r\n this._grid.dataItem = undefined;\r\n }\r\n if (grid) {\r\n if (grid.dataItem && grid.dataItem != this) {\r\n $array.remove(grid.dataItem.sprites, grid);\r\n grid.dataItem.grid = undefined;\r\n }\r\n this.addSprite(grid);\r\n }\r\n this._grid = grid;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"tick\", {\r\n /**\r\n * @return Tick element\r\n */\r\n get: function () {\r\n if (!this._tick) {\r\n var component_2 = this.component;\r\n if (component_2) {\r\n var template = void 0;\r\n var tick_1;\r\n if (this.isRange) {\r\n template = component_2.axisRanges.template.tick;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n tick_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_2.renderer.ticks.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n tick_1 = component_2.renderer.ticks.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_2.renderer.ticks.removeValue(tick_1);\r\n }));\r\n }\r\n }\r\n this.tick = tick_1;\r\n tick_1.axis = this.component;\r\n tick_1.shouldClone = false;\r\n this._disposers.push(tick_1);\r\n }\r\n }\r\n return this._tick;\r\n },\r\n /**\r\n * An [[AxisTick]] element associated with this data item.\r\n *\r\n * If there is no tick element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param tick Tick element\r\n */\r\n set: function (tick) {\r\n if (this._tick && this._tick != tick) {\r\n $array.remove(this.sprites, this._tick);\r\n this._tick.dataItem = undefined;\r\n }\r\n if (tick) {\r\n if (tick.dataItem && tick.dataItem != this) {\r\n $array.remove(tick.dataItem.sprites, tick);\r\n tick.dataItem.tick = undefined;\r\n }\r\n this.addSprite(tick);\r\n }\r\n this._tick = tick;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"label\", {\r\n /**\r\n * @return Label element\r\n */\r\n get: function () {\r\n if (!this._label) {\r\n var component_3 = this.component;\r\n if (component_3) {\r\n var template = void 0;\r\n var label_1;\r\n if (this.isRange) {\r\n template = component_3.axisRanges.template.label;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n label_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_3.renderer.labels.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n label_1 = component_3.renderer.labels.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_3.renderer.labels.removeValue(label_1);\r\n }));\r\n }\r\n }\r\n this._disposers.push(label_1);\r\n this.label = label_1;\r\n label_1.shouldClone = false;\r\n label_1.axis = this.component;\r\n label_1.virtualParent = component_3;\r\n }\r\n }\r\n return this._label;\r\n },\r\n /**\r\n * An [[AxisLabel]] element associated with this data item.\r\n *\r\n * If there is no label element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param label Label element\r\n */\r\n set: function (label) {\r\n if (this._label && this._label != label) {\r\n $array.remove(this.sprites, this._label);\r\n this._label.dataItem = undefined;\r\n }\r\n if (label) {\r\n if (label.dataItem && label.dataItem != this) {\r\n $array.remove(label.dataItem.sprites, label);\r\n label.dataItem.label = undefined;\r\n }\r\n this.addSprite(label);\r\n }\r\n this._label = label;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"axisFill\", {\r\n /**\r\n * @return Label element\r\n */\r\n get: function () {\r\n if (!this._axisFill) {\r\n var component_4 = this.component;\r\n if (component_4) {\r\n var template = void 0;\r\n var axisFill_1;\r\n if (this.isRange) {\r\n template = component_4.axisRanges.template.axisFill;\r\n if (!this.isTemplate && template.disabled) {\r\n return;\r\n }\r\n else {\r\n axisFill_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_4.renderer.axisFills.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n axisFill_1 = component_4.renderer.axisFills.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_4.renderer.axisFills.removeValue(axisFill_1);\r\n }));\r\n }\r\n }\r\n this.axisFill = axisFill_1;\r\n axisFill_1.shouldClone = false;\r\n this._disposers.push(axisFill_1);\r\n }\r\n }\r\n return this._axisFill;\r\n },\r\n /**\r\n * An [[AxisFill]] associated element with this data item.\r\n *\r\n * If there is no fill element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param label Label element\r\n */\r\n set: function (axisFill) {\r\n if (this._axisFill && this._axisFill != axisFill) {\r\n $array.remove(this.sprites, this._axisFill);\r\n this._axisFill.dataItem = undefined;\r\n }\r\n if (axisFill) {\r\n if (axisFill.dataItem && axisFill.dataItem != this) {\r\n $array.remove(axisFill.dataItem.sprites, axisFill);\r\n axisFill.dataItem.axisFill = undefined;\r\n }\r\n axisFill.axis = this.component;\r\n this.addSprite(axisFill);\r\n }\r\n this._axisFill = axisFill;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"text\", {\r\n /**\r\n * @return Text label\r\n */\r\n get: function () {\r\n return this._text;\r\n },\r\n /**\r\n * Text to be used as data item's label.\r\n *\r\n * @param text Text label\r\n */\r\n set: function (text) {\r\n this._text = text;\r\n if (this._label) { // do not use getter, it will create unwanted instances!\r\n this._label.text = text;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"mask\", {\r\n /**\r\n * Data item's mask.\r\n *\r\n * @return Mask\r\n */\r\n get: function () {\r\n return this._mask;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"contents\", {\r\n /**\r\n * Returns a [[Container]] to place all visual elements, related to data item\r\n * in.\r\n *\r\n * If there is no Container, a new one is created.\r\n *\r\n * @return Contents container\r\n */\r\n get: function () {\r\n if (!this._contents) {\r\n var contents = new Container();\r\n this.addSprite(contents);\r\n contents.isMeasured = false;\r\n this._contents = contents;\r\n var component = this.component;\r\n if (component) {\r\n var mask = component.renderer.createFill(this.component);\r\n mask.disabled = false;\r\n mask.axis = component;\r\n this.addSprite(mask);\r\n this._mask = mask;\r\n contents.mask = mask;\r\n }\r\n }\r\n return this._contents;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"axisBreak\", {\r\n /**\r\n * @return Axis break\r\n */\r\n get: function () {\r\n return this._axisBreak;\r\n },\r\n /**\r\n * An [[AxisBreak]] this data item falls within.\r\n *\r\n * @param axisBreak Axis break\r\n */\r\n set: function (axisBreak) {\r\n if (this._axisBreak) {\r\n this._axisBreak.dataItems.removeValue(this);\r\n }\r\n if (axisBreak) {\r\n axisBreak.dataItems.push(this);\r\n }\r\n this._axisBreak = axisBreak;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Re-draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisDataItem.prototype.validate = function () {\r\n if (this.component) {\r\n this.component.validateDataElement(this);\r\n }\r\n };\r\n /**\r\n * Appends data item's elements to the parent [[Container]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisDataItem.prototype.appendChildren = function () {\r\n if (this.component) {\r\n this.component.appendDataItem(this);\r\n }\r\n };\r\n /**\r\n * Checks if data item has particular property set.\r\n *\r\n * @param prop Property name\r\n * @return Property set?\r\n */\r\n AxisDataItem.prototype.hasProperty = function (prop) {\r\n return prop == \"component\" ? true : _super.prototype.hasProperty.call(this, prop);\r\n };\r\n /**\r\n * Copies all parameters from another [[AxisDataItem]].\r\n *\r\n * @param source Source AxisDataItem\r\n */\r\n AxisDataItem.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.text = source.text;\r\n if (source.bullet) {\r\n this.bullet = source.bullet.clone();\r\n }\r\n this.minPosition = source.minPosition;\r\n this.maxPosition = source.maxPosition;\r\n };\r\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Data Item\r\n */\r\n AxisDataItem.prototype.setVisibility = function (value, noChangeValues) {\r\n _super.prototype.setVisibility.call(this, value, noChangeValues);\r\n if (this._contents) {\r\n this._contents.visible = value;\r\n }\r\n };\r\n Object.defineProperty(AxisDataItem.prototype, \"bullet\", {\r\n /**\r\n * @return Bullet\r\n */\r\n get: function () {\r\n return this._bullet;\r\n },\r\n /**\r\n * Set it to an instance of any [[Sprite]]. It will be displayed as an axis\r\n * bullet in the middle of the cell, or specific value.\r\n *\r\n * If you need position bullet relatively to the cell, use [[AxisBullet]]\r\n * instead. It has a `location` property which can be used to indicate\r\n * precise relative location within cell/range.\r\n *\r\n * Also, [[AxisBullet]] is a [[Container]] so you can push any other element\r\n * into it.\r\n *\r\n * NOTE: `location` is relative to the parent axis range's scope, i.e.\r\n * between its `date` and `endDate` for [[DateAxis]], or `value`/`endValue`\r\n * ([[ValueAxis]]), or `category`/`endCategory` ([[categoryAxis]]).\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * let flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * var flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"bullet: {\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.5.9\r\n * @param value Bullet\r\n */\r\n set: function (value) {\r\n if (this._bullet && this._bullet != value) {\r\n $array.remove(this.sprites, this._bullet);\r\n this._bullet.dataItem = undefined;\r\n }\r\n this._bullet = value;\r\n if (value) {\r\n this.addSprite(value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisDataItem;\r\n}(DataItem));\r\nexport { AxisDataItem };\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines named positions for data item's location within [[Axis]].\r\n */\r\nexport var AxisItemLocation;\r\n(function (AxisItemLocation) {\r\n AxisItemLocation[AxisItemLocation[\"Start\"] = 0] = \"Start\";\r\n AxisItemLocation[AxisItemLocation[\"Middle\"] = 0.5] = \"Middle\";\r\n AxisItemLocation[AxisItemLocation[\"End\"] = 1] = \"End\";\r\n})(AxisItemLocation || (AxisItemLocation = {}));\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all Axis elements.\r\n *\r\n * @see {@link IAxisEvents} for a list of available Events\r\n * @see {@link IAxisAdapters} for a list of available Adapters\r\n */\r\nvar Axis = /** @class */ (function (_super) {\r\n __extends(Axis, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Axis() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Number of Grid elements on the axis.\r\n */\r\n _this._gridCount = 10;\r\n /**\r\n * A list of [[XYSeries]] that are using this Axis.\r\n */\r\n _this._series = new List();\r\n /**\r\n * Specifies if axis should be automatically disposed when removing from\r\n * chart's axis list.\r\n *\r\n * @default true\r\n */\r\n _this.autoDispose = true;\r\n /**\r\n * @ignore\r\n */\r\n _this._axisItemCount = 0;\r\n if (_this.constructor === Axis) {\r\n throw new Error(\"'Axis' cannot be instantiated directly. Please use a specific axis type.\");\r\n }\r\n _this.hideTooltipWhileZooming = true;\r\n _this.minWidth = 0.0001;\r\n _this.minHeight = 0.0001;\r\n _this.className = \"Axis\";\r\n _this.shouldClone = false;\r\n _this.setPropertyValue(\"cursorTooltipEnabled\", true);\r\n _this.toggleZoomOutButton = true;\r\n _this.zoomable = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create title\r\n _this.title = new Label();\r\n _this.title.shouldClone = false;\r\n _this._disposers.push(_this.title);\r\n _this.setPropertyValue(\"startLocation\", 0);\r\n _this.setPropertyValue(\"endLocation\", 1);\r\n // Data item iterator\r\n _this._dataItemsIterator = new $iter.ListIterator(_this.dataItems, function () { return _this.dataItems.create(); });\r\n _this._dataItemsIterator.createNewItems = true;\r\n // Create tooltip\r\n var tooltip = new Tooltip();\r\n _this._disposers.push(tooltip);\r\n tooltip.label.padding(5, 10, 5, 10);\r\n tooltip.background.pointerLength = 5;\r\n tooltip.fitPointerToBounds = true;\r\n tooltip.background.filters.clear();\r\n // Set virtual parentfor the tooltip so that it can properly inheirt\r\n // formatters from the axis.\r\n tooltip.virtualParent = _this;\r\n // Create background element for the tooltip\r\n var background = tooltip.background;\r\n background.cornerRadius = 0;\r\n background.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n background.stroke = background.fill;\r\n background.strokeWidth = 1;\r\n background.fillOpacity = 1;\r\n tooltip.label.fill = interfaceColors.getFor(\"alternativeText\");\r\n _this.tooltip = tooltip;\r\n // Accessibility\r\n _this.readerHidden = true;\r\n _this.events.on(\"rangechangestarted\", function () {\r\n _this.series.each(function (series) {\r\n if (series.hideTooltipWhileZooming) {\r\n series.tooltip.hide();\r\n series.tooltip.preventShow = true;\r\n }\r\n });\r\n if (_this.hideTooltipWhileZooming) {\r\n _this.tooltip.hide();\r\n _this.tooltip.preventShow = true;\r\n }\r\n }, undefined, false);\r\n _this.events.on(\"rangechangeended\", function () {\r\n _this.series.each(function (series) {\r\n if (series.hideTooltipWhileZooming) {\r\n series.tooltip.hide();\r\n series.tooltip.preventShow = false;\r\n }\r\n });\r\n if (_this.hideTooltipWhileZooming) {\r\n _this.tooltip.hide();\r\n _this.tooltip.preventShow = false;\r\n }\r\n }, undefined, false);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Holds reference to a function that accepts a DataItem and its index as\r\n * parameters.\r\n *\r\n * It can either return a fill opacity for a fill, or manipulate data item\r\n * directly, to create various highlighting scenarios.\r\n *\r\n * For example, you can set it up to highlight only weekends on a\r\n * [[DateAxis]].\r\n */\r\n Axis.prototype.fillRule = function (dataItem, index) {\r\n if (!$type.isNumber(index)) {\r\n index = dataItem.index;\r\n }\r\n if (index / 2 == Math.round(index / 2)) {\r\n dataItem.axisFill.__disabled = true;\r\n dataItem.axisFill.opacity = 0;\r\n }\r\n else {\r\n dataItem.axisFill.opacity = 1;\r\n dataItem.axisFill.__disabled = false;\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n Axis.prototype.createDataItem = function () {\r\n return new AxisDataItem();\r\n };\r\n /**\r\n * Invalidates layout.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.invalidateLayout = function () {\r\n _super.prototype.invalidateLayout.call(this);\r\n // this puts series after axis in invalidation order also makes series update it's data items in case widht/height of a series is not 100%\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.invalidateLayout();\r\n });\r\n };\r\n /**\r\n * Invalidates series of this axis.\r\n */\r\n Axis.prototype.invalidateSeries = function () {\r\n // this puts series after axis in invalidation order also makes series update it's data items in case widht/height of a series is not 100%\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.invalidate();\r\n });\r\n };\r\n /**\r\n * Override to cancel super call for data element validation.\r\n * @ignore\r\n */\r\n Axis.prototype.validateDataElements = function () {\r\n this._axisItemCount = 0;\r\n if (this.ghostLabel) {\r\n this.renderer.updateLabelElement(this.ghostLabel, this.start, this.end);\r\n this.ghostLabel.validate();\r\n }\r\n };\r\n /**\r\n * Recalculates the number of grid items on the axis.\r\n */\r\n Axis.prototype.updateGridCount = function () {\r\n if (this.renderer) {\r\n var gridCount = this.axisLength / this.renderer.minGridDistance;\r\n if (gridCount != this._gridCount) {\r\n this._gridCount = gridCount;\r\n this.clearCache();\r\n }\r\n }\r\n };\r\n /**\r\n * Redraws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validateLayout = function () {\r\n this.axisFullLength = this.axisLength / (this.end - this.start);\r\n _super.prototype.validateLayout.call(this);\r\n this.updateGridCount();\r\n var renderer = this.renderer;\r\n if (renderer) {\r\n renderer.updateAxisLine();\r\n renderer.updateTooltip();\r\n renderer.updateBaseGridElement();\r\n }\r\n if (this._prevLength != this.axisLength) {\r\n this.dispatchImmediately(\"lengthchanged\");\r\n this._prevLength = this.axisLength;\r\n }\r\n };\r\n /**\r\n * Initializes Axis' renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.initRenderer = function () {\r\n };\r\n /**\r\n * Adds a data item to the Axis.\r\n *\r\n * @param dataItem Data item\r\n */\r\n Axis.prototype.appendDataItem = function (dataItem) {\r\n var renderer = this.renderer;\r\n var tick = dataItem.tick;\r\n if (tick) {\r\n if (tick.above) {\r\n tick.parent = renderer.bulletsContainer;\r\n }\r\n else {\r\n tick.parent = renderer.gridContainer;\r\n }\r\n }\r\n if (dataItem.label) {\r\n dataItem.label.parent = renderer;\r\n }\r\n var axisFill = dataItem.axisFill;\r\n if (axisFill) {\r\n if (axisFill.above) {\r\n axisFill.parent = renderer.bulletsContainer;\r\n }\r\n else {\r\n axisFill.parent = renderer.gridContainer;\r\n }\r\n }\r\n var grid = dataItem.grid;\r\n if (grid) {\r\n if (grid.above) {\r\n grid.parent = renderer.bulletsContainer;\r\n }\r\n else {\r\n grid.parent = renderer.gridContainer;\r\n }\r\n }\r\n if (dataItem.bullet) {\r\n dataItem.bullet.parent = renderer.bulletsContainer;\r\n }\r\n };\r\n /**\r\n * Redraws Axis' related items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n this.validateLayout();\r\n this.renderer.updateGridContainer();\r\n };\r\n /**\r\n * Redars Axis ranges.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validateAxisRanges = function () {\r\n var _this = this;\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n _this.appendDataItem(axisRange);\r\n _this.validateDataElement(axisRange);\r\n if (axisRange.grid) {\r\n axisRange.grid.validate();\r\n }\r\n if (axisRange.tick) {\r\n axisRange.tick.validate();\r\n }\r\n if (axisRange.axisFill) {\r\n axisRange.axisFill.validate();\r\n }\r\n if (axisRange.label) {\r\n axisRange.label.validate();\r\n }\r\n });\r\n };\r\n /**\r\n * Invalidates all axis breaks, so they are redrawn.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validateBreaks = function () {\r\n if (this._axisBreaks) {\r\n $iter.each(this._axisBreaks.iterator(), function (axisBreak) {\r\n axisBreak.invalidate();\r\n });\r\n }\r\n };\r\n /**\r\n * Associates an Axis break with this Axis, after it is inserted into\r\n * `axisBreaks`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n Axis.prototype.processBreak = function (event) {\r\n var axisBreak = event.newValue;\r\n axisBreak.parent = this.renderer.breakContainer;\r\n axisBreak.axis = this;\r\n };\r\n /**\r\n * Registers a [[XYSeries]] element with this Axis.\r\n *\r\n * Returns a [[Disposer]] for all events, added to Series for watching\r\n * changes in Axis, and vice versa.\r\n * @ignore\r\n * @param series Series\r\n * @return Event disposer\r\n */\r\n Axis.prototype.registerSeries = function (series) {\r\n var _this = this;\r\n this.series.moveValue(series);\r\n return new MultiDisposer([\r\n new Disposer(function () {\r\n _this.series.removeValue(series);\r\n }),\r\n this.events.on(\"lengthchanged\", series.invalidate, series, false),\r\n this.events.on(\"lengthchanged\", series.createMask, series, false),\r\n this.events.on(\"startchanged\", series.invalidate, series, false),\r\n this.events.on(\"endchanged\", series.invalidate, series, false),\r\n ]);\r\n };\r\n Object.defineProperty(Axis.prototype, \"renderer\", {\r\n /**\r\n * @return Renderer\r\n */\r\n get: function () {\r\n return this._renderer;\r\n },\r\n /**\r\n * An [[AxisRenderer]] to be used to render this Axis.\r\n *\r\n * Please note that most of the settings, related to Axis' appearance are set\r\n * via its renderer. Not directly on the Axis.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * axis.renderer.inside = true;\r\n * axis.renderer.minLabelPosition = 0.1;\r\n * axis.renderer.maxLabelPosition = 0.9;\r\n * ```\r\n * ```JavaScript\r\n * axis.renderer.inside = true;\r\n * axis.renderer.minLabelPosition = 0.1;\r\n * axis.renderer.maxLabelPosition = 0.9;\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/} for more info\r\n * @param renderer Renderer\r\n */\r\n set: function (renderer) {\r\n if (renderer != this._renderer) {\r\n this._renderer = renderer;\r\n renderer.chart = this.chart;\r\n renderer.axis = this;\r\n renderer.parent = this;\r\n this.title.parent = this; // we add title to axis and set layout in renderer to avoid one extra container, as otherwise axis container would be used for holding renderer only\r\n this.initRenderer();\r\n this._disposers.push(renderer.gridContainer.events.on(\"maxsizechanged\", this.invalidate, this, false));\r\n var ghostLabel_1 = this.renderer.labels.create();\r\n this._disposers.push(ghostLabel_1);\r\n ghostLabel_1.dataItem = this.dataItems.template.clone(); // just for the adapters not to fail\r\n ghostLabel_1.text = \"L\";\r\n ghostLabel_1.parent = this.renderer;\r\n ghostLabel_1.shouldClone = false;\r\n ghostLabel_1.fillOpacity = 0;\r\n ghostLabel_1.opacity = 0;\r\n ghostLabel_1.strokeOpacity = 0;\r\n ghostLabel_1.interactionsEnabled = false;\r\n ghostLabel_1.validate();\r\n this.ghostLabel = ghostLabel_1;\r\n this.events.on(\"beforedatavalidated\", function () {\r\n ghostLabel_1.text = \"L\";\r\n }, undefined, false);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts a relative position to angle. (for circular axes)\r\n *\r\n * @param position Position (0-1)\r\n * @return Angle\r\n */\r\n Axis.prototype.positionToAngle = function (position) {\r\n return this.renderer.positionToAngle(position);\r\n };\r\n /**\r\n * Converts pixel coordinates to a relative position. (0-1)\r\n *\r\n * @param point Coorinates (px)\r\n * @return Position (0-1)\r\n */\r\n Axis.prototype.pointToPosition = function (point) {\r\n return this.renderer.pointToPosition(point);\r\n };\r\n /**\r\n * Converts relative position to coordinate.\r\n *\r\n * @since 4.7.15\r\n * @param position (0-1)\r\n * @return coordinate (px)\r\n */\r\n Axis.prototype.positionToCoordinate = function (position) {\r\n return this.renderer.positionToCoordinate(position);\r\n };\r\n /**\r\n * [getAnyRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param start [description]\r\n * @param end [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getAnyRangePath = function (start, end) {\r\n return this.renderer.getPositionRangePath(start, end);\r\n };\r\n /**\r\n * Converts any positional parameter to a relative position on axis.\r\n *\r\n * @todo Description (review)\r\n * @param value Pisition\r\n * @return Position (0-1)\r\n */\r\n Axis.prototype.anyToPosition = function (value) {\r\n return 0;\r\n };\r\n /**\r\n * Converts any positional parameter to a relative position on axis.\r\n *\r\n * @todo Description (review)\r\n * @param value Pisition\r\n * @return Orientation point\r\n */\r\n Axis.prototype.anyToPoint = function (value) {\r\n return { x: 0, y: 0, angle: 0 };\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition [description]\r\n * @param endPosition [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n if (this.renderer) {\r\n return this.renderer.getPositionRangePath(startPosition, endPosition);\r\n }\r\n return \"\";\r\n };\r\n Object.defineProperty(Axis.prototype, \"axisLength\", {\r\n /**\r\n * Actual axis length in pixels.\r\n *\r\n * @return Axis length (px)\r\n */\r\n get: function () {\r\n if (this.renderer) {\r\n return this.renderer.axisLength;\r\n }\r\n return 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"cursorTooltipEnabled\", {\r\n /**\r\n * @return Display tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cursorTooltipEnabled\");\r\n },\r\n /**\r\n * Indicates if axis should display a tooltip for chart's cursor.\r\n *\r\n * @param value Display tooltip?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"cursorTooltipEnabled\", value)) {\r\n if (value && this.renderer) {\r\n this.renderer.updateTooltip();\r\n }\r\n else if (this.tooltip) {\r\n this.tooltip.hide(0);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"toggleZoomOutButton\", {\r\n /**\r\n * @return Toggle zoom out button?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"toggleZoomOutButton\");\r\n },\r\n /**\r\n * Normally, when axis is zoomed in, a zoom out button is shown by a chart,\r\n * and vice versa: when axis is zoomed out completely, zoom out button is\r\n * hidden.\r\n *\r\n * Setting this to `false` will disable this behavior. Zooming in our out\r\n * this axis will not reveal or hide zoom out button.\r\n *\r\n * @default true\r\n * @since 4.6.2\r\n * @param value Toggle zoom out button?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"toggleZoomOutButton\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Hides element's [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n */\r\n Axis.prototype.hideTooltip = function (duration) {\r\n _super.prototype.hideTooltip.call(this, duration);\r\n this._tooltipPosition = undefined;\r\n };\r\n /**\r\n * Shows Axis tooltip at specific relative position within Axis. (0-1)\r\n *\r\n * @param position Position (0-1)\r\n * @param local or global position\r\n */\r\n Axis.prototype.showTooltipAtPosition = function (position, local) {\r\n var tooltip = this._tooltip;\r\n if (!tooltip || this.dataItems.length <= 0) {\r\n this._tooltipPosition = undefined;\r\n }\r\n else {\r\n if (!local) {\r\n position = this.toAxisPosition(position);\r\n }\r\n if (!$type.isNumber(position) || position < this.start || position > this.end) {\r\n tooltip.hide(0);\r\n this._tooltipPosition = undefined;\r\n return;\r\n }\r\n var renderer = this.renderer;\r\n //@todo: think of how to solve this better\r\n if (!tooltip.parent) {\r\n tooltip.parent = this.tooltipContainer;\r\n }\r\n var tooltipLocation = renderer.tooltipLocation;\r\n var startPosition = this.getCellStartPosition(position);\r\n var endPosition = this.getCellEndPosition(position);\r\n if (this.tooltipPosition == \"fixed\") {\r\n position = startPosition + (endPosition - startPosition) * tooltipLocation;\r\n }\r\n position = $math.fitToRange(position, this.start, this.end);\r\n if (this._tooltipPosition != position) {\r\n this._tooltipPosition = position;\r\n var tooltipLocation2 = renderer.tooltipLocation2;\r\n var startPoint = renderer.positionToPoint(startPosition, tooltipLocation2);\r\n var endPoint = renderer.positionToPoint(endPosition, tooltipLocation2);\r\n // save values so cursor could use them\r\n this.currentItemStartPoint = startPoint;\r\n this.currentItemEndPoint = endPoint;\r\n if (renderer.fullWidthTooltip) {\r\n tooltip.width = endPoint.x - startPoint.x;\r\n tooltip.height = endPoint.y - startPoint.y;\r\n }\r\n var point = renderer.positionToPoint(position, tooltipLocation2);\r\n var globalPoint = $utils.spritePointToSvg(point, this.renderer.line);\r\n tooltip.text = this.getTooltipText(position);\r\n if (tooltip.text) {\r\n tooltip.delayedPointTo(globalPoint);\r\n tooltip.show();\r\n }\r\n }\r\n if (!this.cursorTooltipEnabled || this.tooltip.disabled) {\r\n tooltip.hide(0);\r\n }\r\n }\r\n };\r\n /**\r\n * Converts relative position (0-1) to Axis position with zoom level and\r\n * inversed taken into account.\r\n *\r\n * @param position Global position (0-1)\r\n * @return Position within Axis (0-1)\r\n */\r\n Axis.prototype.toAxisPosition = function (position) {\r\n position = this.renderer.toAxisPosition(position);\r\n if (position == undefined) {\r\n return;\r\n }\r\n position = position * (this.end - this.start);\r\n if (this.renderer.inversed) {\r\n position = this.end - position;\r\n }\r\n else {\r\n position = this.start + position;\r\n }\r\n return position;\r\n };\r\n /**\r\n * Converts position on the axis with zoom level and\r\n * inversed taken into account to global position.\r\n *\r\n * @param position Axis position (0-1)\r\n * @return Global position (0-1)\r\n */\r\n Axis.prototype.toGlobalPosition = function (position) {\r\n if (this.renderer.inversed) {\r\n position = this.end - position;\r\n }\r\n else {\r\n position = position - this.start;\r\n }\r\n return position / (this.end - this.start);\r\n };\r\n /**\r\n * Returns text to be used for cursor's Axis tooltip.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position coordinate (px)\r\n * @return Label text\r\n */\r\n Axis.prototype.getTooltipText = function (position) {\r\n return;\r\n };\r\n /**\r\n * Updates Axis' tooltip's position and possibly size, and pointer (stem)\r\n * place.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointerOrientation Pointer (stem) orientation\r\n * @param boundingRectangle A rectangle for tooltip to fit within\r\n */\r\n Axis.prototype.updateTooltip = function (pointerOrientation, boundingRectangle) {\r\n var tooltip = this._tooltip;\r\n if (tooltip) {\r\n tooltip.fixDoc = false;\r\n tooltip.pointerOrientation = pointerOrientation;\r\n tooltip.setBounds($utils.spriteRectToSvg(boundingRectangle, this.renderer.line));\r\n }\r\n };\r\n /**\r\n * [roundPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position Relative position\r\n * @param location Location on axis\r\n * @return Rounded position\r\n */\r\n Axis.prototype.roundPosition = function (position, location, axisLocation) {\r\n return position;\r\n };\r\n /**\r\n * [getCellStartPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getCellStartPosition = function (position) {\r\n return position;\r\n };\r\n /**\r\n * [getCellEndPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getCellEndPosition = function (position) {\r\n return position;\r\n };\r\n Object.defineProperty(Axis.prototype, \"axisRanges\", {\r\n /**\r\n * A list of axis ranges for this Axis.\r\n *\r\n * @return Axis ranges\r\n */\r\n get: function () {\r\n if (!this._axisRanges) {\r\n var dataItem = this.createDataItem();\r\n dataItem.isRange = true;\r\n dataItem.axisFill = this.renderer.axisFills.template.clone();\r\n dataItem.grid = this.renderer.grid.template.clone();\r\n dataItem.tick = this.renderer.ticks.template.clone();\r\n dataItem.label = this.renderer.labels.template.clone();\r\n dataItem.isTemplate = true;\r\n dataItem.component = this;\r\n dataItem.axisFill.disabled = false;\r\n dataItem.tick.disabled = false;\r\n dataItem.grid.disabled = false;\r\n dataItem.label.disabled = false;\r\n this._axisRanges = new ListTemplate(dataItem);\r\n this._axisRanges.events.on(\"inserted\", this.processAxisRange, this, false);\r\n this._disposers.push(new ListDisposer(this._axisRanges));\r\n this._disposers.push(this._axisRanges.template);\r\n }\r\n return this._axisRanges;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Decorates an axis range after it has been added to the axis range list.\r\n *\r\n * @param event Event\r\n */\r\n Axis.prototype.processAxisRange = function (event) {\r\n var axisRange = event.newValue;\r\n axisRange.component = this;\r\n axisRange.isRange = true;\r\n };\r\n Object.defineProperty(Axis.prototype, \"axisBreaks\", {\r\n /**\r\n * A list of axis breaks on this Axis.\r\n *\r\n * @return Axis breaks.\r\n */\r\n get: function () {\r\n if (!this._axisBreaks) {\r\n this._axisBreaks = new SortedListTemplate(this.createAxisBreak(), function (a, b) {\r\n return $number.order(a.adjustedStartValue, b.adjustedStartValue);\r\n });\r\n this._axisBreaks.events.on(\"inserted\", this.processBreak, this, false);\r\n this._disposers.push(new ListDisposer(this._axisBreaks));\r\n this._disposers.push(this._axisBreaks.template);\r\n }\r\n return this._axisBreaks;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a new axis break.\r\n *\r\n * @return Axis break\r\n */\r\n Axis.prototype.createAxisBreak = function () {\r\n return new AxisBreak();\r\n };\r\n Object.defineProperty(Axis.prototype, \"series\", {\r\n /**\r\n * A list of Series currently associated with this Axis.\r\n *\r\n * @return Series\r\n */\r\n get: function () {\r\n if (!this._series) {\r\n this._series = new List();\r\n }\r\n return this._series;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes Series' data items.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.processSeriesDataItems = function () {\r\n };\r\n /**\r\n * Processes Series' single data item.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n Axis.prototype.processSeriesDataItem = function (dataItem, axisLetter) {\r\n };\r\n /**\r\n * Post-processes Serie's data items.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.postProcessSeriesDataItems = function (series) {\r\n };\r\n /**\r\n * Post-processes Serie's single data item.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n Axis.prototype.postProcessSeriesDataItem = function (dataItem) {\r\n };\r\n //\r\n /**\r\n * Updates Axis based on all Series that might influence it.\r\n *\r\n * Called by Series after Series data is validated.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.updateAxisBySeries = function () {\r\n };\r\n /**\r\n * Hides unused data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.hideUnusedDataItems = function () {\r\n var _this = this;\r\n // hide all unused\r\n var dataItemsIterator = this._dataItemsIterator;\r\n dataItemsIterator.createNewItems = false;\r\n $iter.each(dataItemsIterator.iterator(), function (dataItem) {\r\n _this.validateDataElement(dataItem); // solves shrinking\r\n dataItem.__disabled = true;\r\n });\r\n dataItemsIterator.clear();\r\n dataItemsIterator.createNewItems = true;\r\n };\r\n /**\r\n * Returns a Series' data item that corresponds to specific position on Axis.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param series Series\r\n * @param position Position (0-1)\r\n * @param findNearest Should axis try to find nearest tooltip if there is no data item at exact position\r\n * @return Data item\r\n */\r\n Axis.prototype.getSeriesDataItem = function (series, position, findNearest) {\r\n return;\r\n };\r\n /**\r\n * Returns an angle that corresponds to specific position on axis.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key ???\r\n * @param location Location\r\n * @param stackKey ???\r\n * @return Angle\r\n */\r\n Axis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getX description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getX = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getX description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getY description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getY = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getY description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n Object.defineProperty(Axis.prototype, \"basePoint\", {\r\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point coordinates\r\n */\r\n get: function () {\r\n return { x: 0, y: 0 };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Axis.prototype.dataChangeUpdate = function () {\r\n };\r\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Axis.prototype.seriesDataChangeUpdate = function (series) {\r\n };\r\n /**\r\n * Removes axis breaks that fall between `min` and `max` (???)\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param min Start value\r\n * @param max End value\r\n * @return Spread o\r\n */\r\n Axis.prototype.adjustDifference = function (min, max) {\r\n var difference = max - min;\r\n if ($type.isNumber(difference)) {\r\n if (this._axisBreaks) {\r\n $iter.eachContinue(this._axisBreaks.iterator(), function (axisBreak) {\r\n var startValue = axisBreak.adjustedStartValue;\r\n var endValue = axisBreak.adjustedEndValue;\r\n if ($type.isNumber(startValue) && $type.isNumber(endValue)) {\r\n // breaks are sorted, we don't need go further anymore\r\n if (startValue > max) {\r\n return false;\r\n }\r\n if (endValue >= min) {\r\n if ($type.isNumber(startValue) && $type.isNumber(endValue)) {\r\n var breakSize = axisBreak.breakSize;\r\n var intersection = $math.intersection({ start: startValue, end: endValue }, { start: min, end: max });\r\n if (intersection) {\r\n difference -= (intersection.end - intersection.start) * (1 - breakSize);\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n });\r\n }\r\n return difference;\r\n }\r\n };\r\n /**\r\n * Checks if specific value falls within a break.\r\n *\r\n * Returns [[AxisBreak]] the value falls into.\r\n *\r\n * @param value Value to check\r\n * @return Axis break\r\n */\r\n Axis.prototype.isInBreak = function (value) {\r\n if (this._axisBreaks) {\r\n return $iter.find(this._axisBreaks.iterator(), function (axisBreak) {\r\n return value >= axisBreak.adjustedStartValue &&\r\n value <= axisBreak.adjustedEndValue;\r\n });\r\n }\r\n };\r\n /**\r\n * [fixAxisBreaks description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Axis.prototype.fixAxisBreaks = function () {\r\n var _this = this;\r\n if (this._axisBreaks) {\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks.length > 0) {\r\n // first make sure that startValue is <= end value\r\n // This needs to make a copy of axisBreaks because it mutates the list while traversing\r\n // TODO very inefficient\r\n $array.each($iter.toArray(axisBreaks.iterator()), function (axisBreak) {\r\n var startValue = $math.min(axisBreak.startValue, axisBreak.endValue);\r\n var endValue = $math.max(axisBreak.startValue, axisBreak.endValue);\r\n axisBreak.adjustedStartValue = startValue;\r\n axisBreak.adjustedEndValue = endValue;\r\n _this._axisBreaks.update(axisBreak);\r\n });\r\n var firstAxisBreak = axisBreaks.first;\r\n var previousEndValue_1 = Math.min(firstAxisBreak.startValue, firstAxisBreak.endValue);\r\n // process breaks\r\n // TODO does this need to call axisBreaks.update ?\r\n $iter.each(axisBreaks.iterator(), function (axisBreak) {\r\n var startValue = axisBreak.adjustedStartValue;\r\n var endValue = axisBreak.adjustedEndValue;\r\n // breaks can't overlap\r\n // if break starts before previous break ends\r\n if (startValue < previousEndValue_1) {\r\n startValue = previousEndValue_1;\r\n if (endValue < previousEndValue_1) {\r\n endValue = previousEndValue_1;\r\n }\r\n }\r\n axisBreak.adjustedStartValue = startValue;\r\n axisBreak.adjustedEndValue = endValue;\r\n });\r\n }\r\n }\r\n };\r\n Object.defineProperty(Axis.prototype, \"startIndex\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return [description]\r\n */\r\n get: function () {\r\n return 0;\r\n },\r\n /**\r\n * We need start/end indexes of axes to be 0 - `dataItems.length`.\r\n *\r\n * Yes, also for category axis, this helps to avoid jumping of categories\r\n * while scrolling and does not do a lot of extra work as we use\r\n * protected `_startIndex` and `_endIndex` when working with items.\r\n *\r\n * @hidden\r\n */\r\n /**\r\n * [startIndex description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"endIndex\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.dataItems.length;\r\n },\r\n /**\r\n * [endIndex description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a formatted label based on position.\r\n *\r\n * Individual axis types should override this method to generate a label\r\n * that is relevant to axis type.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\r\n Axis.prototype.getPositionLabel = function (position) {\r\n return Math.round(position * 100) + \"%x\";\r\n };\r\n Object.defineProperty(Axis.prototype, \"chart\", {\r\n /**\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart;\r\n },\r\n /**\r\n * A Chart this Axis belongs to.\r\n *\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a data item for a Series range.\r\n *\r\n * @param series Target Series\r\n * @return Range data item\r\n */\r\n Axis.prototype.createSeriesRange = function (series) {\r\n var range = this.axisRanges.create();\r\n range.component = this;\r\n range.axisFill = this.renderer.axisFills.template.clone();\r\n range.axisFill.disabled = false;\r\n range.axisFill.fillOpacity = 0;\r\n range.grid = this.renderer.grid.template.clone();\r\n range.grid.disabled = true;\r\n range.tick = this.renderer.ticks.template.clone();\r\n range.tick.disabled = true;\r\n range.label = this.renderer.labels.template.clone();\r\n range.label.disabled = true;\r\n range.addDisposer(new Disposer(function () {\r\n series.axisRanges.removeValue(range);\r\n }));\r\n series.axisRanges.push(range);\r\n return range;\r\n };\r\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\r\n Axis.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.renderer) {\r\n this.renderer.copyFrom(source.renderer);\r\n }\r\n else {\r\n if (source.renderer) {\r\n this.renderer = source.renderer.clone();\r\n this._disposers.push(this.renderer);\r\n }\r\n }\r\n if (source.title) {\r\n if (!this.title) {\r\n this.title = source.title.clone();\r\n this.title.parent = this;\r\n }\r\n else {\r\n this.title.copyFrom(source.title);\r\n }\r\n this._disposers.push(this.title);\r\n }\r\n };\r\n /**\r\n * Resets internal iterator.\r\n */\r\n Axis.prototype.resetIterators = function () {\r\n this._dataItemsIterator.reset();\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Axis.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up axis ranges\r\n if ($type.hasValue(config.axisRanges) && $type.isArray(config.axisRanges)) {\r\n for (var i = 0, len = config.axisRanges.length; i < len; i++) {\r\n var range = config.axisRanges[i];\r\n // If `series` is set, we know it's a series range\r\n if ($type.hasValue(range[\"series\"])) {\r\n if ($type.isString(range[\"series\"])) {\r\n if (this.map.hasKey(range[\"series\"])) {\r\n //range[\"series\"] = this.map.getKey(range[\"series\"]);\r\n config.axisRanges[i] = this.createSeriesRange(this.map.getKey(range[\"series\"]));\r\n delete (range[\"series\"]);\r\n config.axisRanges[i].config = range;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Ordering function used in JSON setup.\r\n *\r\n * @param a Item A\r\n * @param b Item B\r\n * @return Order\r\n */\r\n Axis.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // last\r\n else if (a == \"title\") {\r\n return 1;\r\n }\r\n else if (b == \"title\") {\r\n return -1;\r\n }\r\n // first\r\n else if (a == \"component\") {\r\n return -1;\r\n }\r\n else if (b == \"component\") {\r\n return 1;\r\n }\r\n else {\r\n return _super.prototype.configOrder.call(this, a, b);\r\n }\r\n };\r\n Object.defineProperty(Axis.prototype, \"startLocation\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startLocation\");\r\n },\r\n /**\r\n * Axis start location. Works on Date/Category axis, doesn't work on Value axis.\r\n *\r\n * * 0 - Full first cell is shown.\r\n * * 0.5 - Half of first cell is shown.\r\n * * 1 - None of the first cell is visible. (you probably don't want that)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"endLocation\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endLocation\");\r\n },\r\n /**\r\n * Axis end location. Works on Date/Category axis, doesn't work on Value axis.\r\n *\r\n * * 0 - None of the last cell is shown. (don't do that)\r\n * * 0.5 - Half of the last cell is shown.\r\n * * 1 - Full last cell is shown.\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Axis.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.renderer) {\r\n this.renderer.gridContainer.disabled = value;\r\n }\r\n return changed;\r\n };\r\n Object.defineProperty(Axis.prototype, \"title\", {\r\n /**\r\n * @return Title label\r\n */\r\n get: function () {\r\n return this._title;\r\n },\r\n /**\r\n * A reference to a [[Label]] element which serves as a title to the axis.\r\n *\r\n * When axis is created it aleready has an element, so you can just modify\r\n * it.\r\n *\r\n * Or you can replace it with your own instance of `Label`.\r\n *\r\n * @param value Title label\r\n */\r\n set: function (value) {\r\n if (this._title && this._title != value) {\r\n this._title.dispose();\r\n }\r\n if (value) {\r\n this._title = value;\r\n value.parent = this;\r\n value.shouldClone = false;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"hideTooltipWhileZooming\", {\r\n /**\r\n * @return Hide tooltip while zooming?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hideTooltipWhileZooming\");\r\n },\r\n /**\r\n * Indicates if axis' tooltip should be hidden while axis range is animating\r\n * (zooming)\r\n *\r\n * @default true\r\n * @since 4.7.16\r\n * @param value Hide tooltip while zooming?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"hideTooltipWhileZooming\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"zoomable\", {\r\n /**\r\n * @return Zoomable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"zoomable\");\r\n },\r\n /**\r\n * Should the axis be zoomed with scrollbar/cursor?\r\n *\r\n * @default true\r\n * @since 4.9.28\r\n * @param value Zoomable?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"zoomable\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Axis;\r\n}(Component));\r\nexport { Axis };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Axis\"] = Axis;\r\nregistry.registeredClasses[\"AxisDataItem\"] = AxisDataItem;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Disable axis tooltips.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Axis && target.tooltip) {\r\n var state = target.states.create(stateId);\r\n state.properties.cursorTooltipEnabled = false;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n","/**\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw Axis line.\r\n *\r\n * @see {@link IAxisLineEvents} for a list of available events\r\n * @see {@link IAxisLineAdapters} for a list of available Adapters\r\n */\r\nvar AxisLine = /** @class */ (function (_super) {\r\n __extends(AxisLine, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisLine() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisLine\";\r\n _this.element = _this.paper.add(\"path\");\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.stroke = interfaceColors.getFor(\"grid\");\r\n _this.strokeOpacity = 0.15;\r\n _this.pixelPerfect = true;\r\n _this.fill = color();\r\n _this.applyTheme();\r\n _this.interactionsEnabled = false;\r\n return _this;\r\n //this.element.moveTo({ x: 0, y: 0 });\r\n }\r\n return AxisLine;\r\n}(Sprite));\r\nexport { AxisLine };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisLine\"] = AxisLine;\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * AxisFill is a base class used to defines fill shapes for various\r\n * type-specific Axes.\r\n *\r\n * Axis fills are used to add fills to specific ranges of those axes.\r\n *\r\n * @see {@link IAxisFillEvents} for a list of available events\r\n * @see {@link IAxisFillAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisFill = /** @class */ (function (_super) {\r\n __extends(AxisFill, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Axis\r\n */\r\n function AxisFill(axis) {\r\n var _this = _super.call(this) || this;\r\n _this.axis = axis;\r\n _this.element = _this.paper.add(\"path\");\r\n _this.className = \"AxisFill\";\r\n _this.isMeasured = false;\r\n _this.location = 0;\r\n _this.above = false;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n _this.fillOpacity = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisFill.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n /**\r\n * Draws the fill element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisFill.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.__disabled || this.disabled) {\r\n return;\r\n }\r\n if (this.axis && $type.isNumber(this.startPosition) && $type.isNumber(this.endPosition)) {\r\n this.fillPath = this.axis.getPositionRangePath(this.startPosition, this.endPosition);\r\n this.path = this.fillPath;\r\n if (this.isMeasured) {\r\n this.measure();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AxisFill.prototype, \"startPosition\", {\r\n /**\r\n * @return Start position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startPosition\");\r\n },\r\n /**\r\n * An actual starting position of the fill.\r\n *\r\n * @param value Starting position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startPosition\", value);\r\n this.invalidate(); // this is needed as relative position might not change when zooming\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisFill.prototype, \"endPosition\", {\r\n /**\r\n * @return End position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endPosition\");\r\n },\r\n /**\r\n * An actual end position of the fill.\r\n *\r\n * @param value End position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endPosition\", value);\r\n this.invalidate(); // this is needed as relative position might not change when zooming\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisFill.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative location of the fill. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisFill.prototype.setPath = function (value) {\r\n if (this.setPropertyValue(\"path\", value)) {\r\n this.element.attr({ \"d\": value });\r\n return true;\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(AxisFill.prototype, \"above\", {\r\n /**\r\n * @return Draw above series?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"above\");\r\n },\r\n /**\r\n * Normally fill goes below series. Set this to `true` to go above.\r\n *\r\n * @default false\r\n * @since 4.5.9\r\n * @param value Draw above series?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"above\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisFill;\r\n}(Sprite));\r\nexport { AxisFill };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisFill\"] = AxisFill;\r\n","/**\r\n * A module defining functionality for axis grid elements.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Displays an axis grid line.\r\n *\r\n * @see {@link IGridEvents} for a list of available events\r\n * @see {@link IGridAdapters} for a list of available Adapters\r\n * @todo Review: container is better, as we'll be able to attach something to the grid, also with 3d charts we might need some additional elements\r\n * @important\r\n */\r\nvar Grid = /** @class */ (function (_super) {\r\n __extends(Grid, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Grid() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Grid\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.location = 0.5;\r\n _this.isMeasured = false;\r\n _this.above = false;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.stroke = interfaceColors.getFor(\"grid\");\r\n _this.pixelPerfect = true;\r\n _this.strokeOpacity = 0.15;\r\n _this.fill = color(); // \"none\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Grid.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Location within axis cell to place grid line on.\r\n *\r\n * * 0 - start\r\n * * 0.5 - middle\r\n * * 1 - end\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Grid.prototype, \"above\", {\r\n /**\r\n * @return Draw above series?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"above\");\r\n },\r\n /**\r\n * Normally fill goes below series. Set this to `true` to go above.\r\n *\r\n * @default false\r\n * @since 4.5.9\r\n * @param value Draw above series?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"above\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n Grid.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n return Grid;\r\n}(Sprite));\r\nexport { Grid };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Grid\"] = Grid;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Disable grid on smaller charts\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Grid) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n","/**\r\n * Axis Label module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Use to create labels on Axis.\r\n *\r\n * @see {@link IAxisLabelEvents} for a list of available events\r\n * @see {@link IAxisLabelAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisLabel = /** @class */ (function (_super) {\r\n __extends(AxisLabel, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisLabel() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisLabel\";\r\n _this.isMeasured = false;\r\n _this.padding(10, 10, 10, 10);\r\n _this.location = 0.5;\r\n //this.nonScaling = true; // not good for perf\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisLabel.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative location of the label. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisLabel.prototype, \"inside\", {\r\n /**\r\n * Returns if label is set to be drawn inside axis.\r\n *\r\n * @return Inside?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inside\");\r\n },\r\n /**\r\n * Sets if label should be drawn inside axis.\r\n *\r\n * @param value Inside?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"inside\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisLabel.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n return AxisLabel;\r\n}(Label));\r\nexport { AxisLabel };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisLabel\"] = AxisLabel;\r\n","/**\r\n * Tick module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A basic Tick class.\r\n *\r\n * A tick is a short dash, mainly connecting an object like axis or slice to\r\n * it's textual label.\r\n *\r\n * @see {@link ITickEvents} for a list of available events\r\n * @see {@link ITickAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar Tick = /** @class */ (function (_super) {\r\n __extends(Tick, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Tick() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Tick\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.fillOpacity = 0;\r\n _this.length = 6;\r\n _this.strokeOpacity = 0.2;\r\n _this.stroke = interfaceColors.getFor(\"grid\");\r\n _this.isMeasured = false;\r\n _this.nonScalingStroke = true;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Tick.prototype, \"length\", {\r\n /**\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n if (this.disabled) {\r\n return 0;\r\n }\r\n return this.getPropertyValue(\"length\");\r\n },\r\n /**\r\n * Length of the tick in pixels.\r\n *\r\n * @param value Length (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"length\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Tick;\r\n}(Sprite));\r\nexport { Tick };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Tick\"] = Tick;\r\n","/**\r\n * Axis Tick module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Tick } from \"../elements/Tick\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws an axis tick\r\n * @see {@link IAxisTickEvents} for a list of available events\r\n * @see {@link IAxisTickAdapters} for a list of available Adapters\r\n */\r\nvar AxisTick = /** @class */ (function (_super) {\r\n __extends(AxisTick, _super);\r\n function AxisTick() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisTick\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.location = 0.5;\r\n _this.above = false;\r\n _this.isMeasured = false;\r\n _this.pixelPerfect = true;\r\n _this.strokeOpacity = 0;\r\n _this.length = 5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisTick.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative location of the tick. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisTick.prototype, \"inside\", {\r\n /**\r\n * Returns if label is set to be drawn inside axis.\r\n *\r\n * @return Inside?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inside\");\r\n },\r\n /**\r\n * Sets if tick should be drawn inside axis.\r\n *\r\n * @param value Inside?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"inside\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisTick.prototype, \"above\", {\r\n /**\r\n * @return Draw above series?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"above\");\r\n },\r\n /**\r\n * Normally tick goes below series. Set this to `true` to go above.\r\n *\r\n * @default false\r\n * @since 4.5.9\r\n * @param value Draw above series?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"above\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisTick.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n return AxisTick;\r\n}(Tick));\r\nexport { AxisTick };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisTick\"] = AxisTick;\r\n","/**\r\n * Module, defining base Axis Renderer.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { AxisDataItem } from \"./Axis\";\r\nimport { AxisLine } from \"./AxisLine\";\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { Grid } from \"./Grid\";\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all axis renderers.\r\n *\r\n * @see {@link IAxisRendererEvents} for a list of available events\r\n * @see {@link IAxisRendererAdapters} for a list of available Adapters\r\n */\r\nvar AxisRenderer = /** @class */ (function (_super) {\r\n __extends(AxisRenderer, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRenderer() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n _this.className = \"AxisRenderer\";\r\n // Set defaults\r\n _this.minGridDistance = 50;\r\n _this.inside = false;\r\n _this.inversed = false;\r\n _this.tooltipLocation = 0.5;\r\n _this.fullWidthTooltip = false;\r\n _this.cellStartLocation = 0;\r\n _this.cellEndLocation = 1;\r\n _this.minLabelPosition = 0;\r\n _this.maxLabelPosition = 1;\r\n _this.shouldClone = false;\r\n var gridContainer = _this.createChild(Container);\r\n gridContainer.shouldClone = false;\r\n gridContainer.layout = \"none\";\r\n //\tgridContainer.isMeasured = false;\r\n gridContainer.virtualParent = _this;\r\n gridContainer.width = percent(100);\r\n gridContainer.height = percent(100);\r\n _this.gridContainer = gridContainer;\r\n // not good without this\r\n gridContainer.events.on(\"maxsizechanged\", function () {\r\n if (_this.inited) {\r\n _this.invalidateAxisItems();\r\n }\r\n }, _this, false);\r\n var breakContainer = _this.createChild(Container);\r\n breakContainer.shouldClone = false;\r\n breakContainer.isMeasured = false;\r\n breakContainer.layout = \"none\";\r\n breakContainer.width = percent(100);\r\n breakContainer.height = percent(100);\r\n _this.breakContainer = breakContainer;\r\n var bulletsContainer = _this.createChild(Container);\r\n bulletsContainer.shouldClone = false;\r\n bulletsContainer.isMeasured = false;\r\n bulletsContainer.layout = \"none\";\r\n bulletsContainer.width = percent(100);\r\n bulletsContainer.height = percent(100);\r\n _this.bulletsContainer = bulletsContainer;\r\n _this.line = _this.createChild(AxisLine);\r\n _this.line.shouldClone = false;\r\n _this.line.strokeOpacity = 0;\r\n var baseGrid = _this.createChild(Grid);\r\n baseGrid.shouldClone = false;\r\n _this.baseGrid = baseGrid;\r\n // Make elements disposable\r\n var disposers = _this._disposers;\r\n disposers.push(baseGrid);\r\n disposers.push(_this.line);\r\n disposers.push(gridContainer);\r\n disposers.push(breakContainer);\r\n disposers.push(bulletsContainer);\r\n disposers.push(_this._chart);\r\n _this.ticks.template.disabled = true;\r\n _this.axisFills.template.disabled = true;\r\n _this.axisFills.template.interactionsEnabled = false;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisRenderer.prototype, \"axis\", {\r\n /**\r\n * Axis of a renderer\r\n * @return axis Axis\r\n */\r\n get: function () {\r\n return this._axis;\r\n },\r\n /**\r\n * Axis of a renderer\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n this.setAxis(axis);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisRenderer.prototype.setAxis = function (axis) {\r\n this._axis = axis;\r\n this.baseGrid.parent = axis;\r\n this.line.parent = axis;\r\n this.gridContainer.bind(\"opacity\", axis);\r\n };\r\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.processRenderer = function () {\r\n this.events.on(\"sizechanged\", this.updateTooltip, this, false);\r\n this.events.on(\"positionchanged\", this.updateTooltip, this, false);\r\n this.labels.template.inside = this.inside;\r\n this.ticks.template.inside = this.inside;\r\n };\r\n /**\r\n * Updates Axis' tooltip.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.updateTooltip = function () {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n // This is a placeholder method for extending classes to override.\r\n return 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Re-positions an element to new coordinates.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item A target element\r\n * @param point New coordinates\r\n */\r\n AxisRenderer.prototype.positionItem = function (item, point) {\r\n if (item) {\r\n item.moveTo(point);\r\n }\r\n };\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Point\r\n */\r\n AxisRenderer.prototype.positionToPoint = function (position, position2) {\r\n // This is a placeholder method for extending classes to override.\r\n return { x: 0, y: 0 };\r\n };\r\n /**\r\n * Converts relative position on axis to angle.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review / units)\r\n * @param position Position (0-1)\r\n * @return Angle\r\n */\r\n AxisRenderer.prototype.positionToAngle = function (position) {\r\n // This is a placeholder method for extending classes to override.\r\n return 0;\r\n };\r\n /**\r\n * Converts relative position (0-1) on axis to a pixel coordinate.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n AxisRenderer.prototype.positionToCoordinate = function (position) {\r\n var coordinate;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (axis.renderer.inversed) {\r\n coordinate = (axis.end - position) * axisFullLength;\r\n }\r\n else {\r\n coordinate = (position - axis.start) * axisFullLength;\r\n }\r\n return coordinate;\r\n };\r\n AxisRenderer.prototype.updateGridContainer = function () {\r\n };\r\n AxisRenderer.prototype.getHeight = function () {\r\n var gridContainer = this.gridContainer;\r\n if (gridContainer.parent) {\r\n return gridContainer.parent.pixelHeight;\r\n }\r\n return this.gridContainer.pixelHeight || 0;\r\n };\r\n AxisRenderer.prototype.getWidth = function () {\r\n var gridContainer = this.gridContainer;\r\n if (gridContainer.parent) {\r\n return gridContainer.parent.pixelWidth;\r\n }\r\n return this.gridContainer.pixelWidth || 0;\r\n };\r\n /**\r\n * Converts a coordinate in pixels to a relative position. (0-1)\r\n *\r\n * @param coordinate Coordinate (px)\r\n * @param coordinate2 Coordinate of a second axis, only needed for complex axes systems, like timeline (px)\r\n * @return Position (0-1)\r\n */\r\n AxisRenderer.prototype.coordinateToPosition = function (coordinate, coordinate2) {\r\n var position;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (axis.renderer.inversed) {\r\n position = axis.end - coordinate / axisFullLength;\r\n }\r\n else {\r\n position = coordinate / axisFullLength + axis.start;\r\n }\r\n return $math.round(position, 5);\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRenderer.prototype.pointToPosition = function (point) {\r\n // This is a placeholder method for extending classes to override.\r\n return 0;\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRenderer.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n return \"\";\r\n };\r\n /**\r\n * Invalidates all axis data items, effectively causing them re-evaluated.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\r\n AxisRenderer.prototype.invalidateAxisItems = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n axis.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRenderer.prototype.updateGridElement = function (grid, position, endPosition) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRenderer.prototype.updateTickElement = function (tick, position, endPosition) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRenderer.prototype.updateBullet = function (bullet, position, endPosition) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRenderer.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions the axis fill element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fill Fill element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRenderer.prototype.updateFillElement = function (fill, position, endPosition) {\r\n fill.startPosition = position;\r\n fill.endPosition = endPosition;\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.updateAxisLine = function () {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.updateBaseGridElement = function () {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRenderer.prototype.updateBreakElement = function (axisBreak) {\r\n this.positionItem(axisBreak.startLine, axisBreak.startPoint);\r\n this.toggleVisibility(axisBreak.startLine, axisBreak.startPosition, 0, 1);\r\n this.positionItem(axisBreak.endLine, axisBreak.endPoint);\r\n this.toggleVisibility(axisBreak.endLine, axisBreak.endPosition, 0, 1);\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"minGridDistance\", {\r\n /**\r\n * @return Min distance (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minGridDistance\");\r\n },\r\n /**\r\n * Minimum distance in pixels between grid elements.\r\n *\r\n * Use it to control density of the grid/labels on the axis.element.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/#Setting_the_density_of_the_the_grid_labels} for more info\r\n * @param value Min distance (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"minGridDistance\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * A chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart.set(value, null);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Toggles visibility of an element, based on its current position and\r\n * min/max position settings.\r\n *\r\n * E.g. labels based on `minLabelPosition` and `maxLabelPosition`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprite An element to toggle\r\n * @param position Elements current position\r\n * @param minPosition Min position setting\r\n * @param maxPosition Max position setting\r\n */\r\n AxisRenderer.prototype.toggleVisibility = function (sprite, position, minPosition, maxPosition) {\r\n var axis = this.axis;\r\n var dataItem = sprite.dataItem;\r\n if (dataItem && dataItem instanceof AxisDataItem) {\r\n if ($type.isNumber(dataItem.minPosition)) {\r\n minPosition = dataItem.minPosition;\r\n }\r\n if ($type.isNumber(dataItem.maxPosition)) {\r\n maxPosition = dataItem.maxPosition;\r\n }\r\n }\r\n var updatedStart = axis.start + (axis.end - axis.start) * (minPosition - 0.0001);\r\n var updatedEnd = axis.start + (axis.end - axis.start) * (maxPosition + 0.0001);\r\n if (!sprite.disabled) {\r\n if (position < updatedStart || position > updatedEnd) {\r\n sprite.__disabled = true;\r\n }\r\n else {\r\n sprite.__disabled = false;\r\n }\r\n }\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRenderer.prototype.createBreakSprites = function (axisBreak) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"axisFills\", {\r\n /**\r\n * A list of Axis' Fill elements.\r\n *\r\n * Those are fill elements that cover the space between every second set\r\n * of grid lines, and can be configured to create striped charts.\r\n *\r\n * Please note that these are disabled by default. To enable them, set\r\n * template to true.\r\n *\r\n * ```TypeScript\r\n * categoryAxis.renderer.axisFills.template.disabled = false;\r\n * ```\r\n * ```JavaScript\r\n * categoryAxis.renderer.axisFills.template.disabled = false;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"renderer\": {\r\n * \"axisFills\": {\r\n * \"disabled\": false\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/alternated-axis-fills/} this tutorial for more info.\r\n * @return Fill elements\r\n */\r\n get: function () {\r\n if (!this._axisFills) {\r\n var fill = this.createFill(this.axis);\r\n this._axisFills = new ListTemplate(fill);\r\n fill.applyOnClones = true;\r\n fill.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._disposers.push(new ListDisposer(this._axisFills));\r\n this._disposers.push(this._axisFills.template);\r\n }\r\n return this._axisFills;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new fill element, suitable for this Axis Renderer type.\r\n *\r\n * @return Fill element\r\n */\r\n AxisRenderer.prototype.createFill = function (axis) {\r\n return new AxisFill(axis);\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"grid\", {\r\n /**\r\n * A list of Axis' Grid elements.\r\n *\r\n * @return Grid elements\r\n */\r\n get: function () {\r\n if (!this._grid) {\r\n var grid = this.createGrid();\r\n this._grid = new ListTemplate(grid);\r\n grid.applyOnClones = true;\r\n grid.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._disposers.push(new ListDisposer(this._grid));\r\n this._disposers.push(this._grid.template);\r\n }\r\n return this._grid;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new grid element, suitable for this Axis Renderer type.\r\n *\r\n * @return Grid element\r\n */\r\n AxisRenderer.prototype.createGrid = function () {\r\n return new Grid();\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"ticks\", {\r\n /**\r\n * A list of Axis' Tick elements.\r\n *\r\n * Please note that these are disabled by default. To enable ticks, you'll\r\n * need to set `disabled` and `strokeOpacity` properties of the tick template.\r\n *\r\n * ```TypeScript\r\n * categoryAxis.renderer.ticks.template.disabled = false;\r\n * categoryAxis.renderer.ticks.template.strokeOpacity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * categoryAxis.renderer.ticks.template.disabled = false;\r\n * categoryAxis.renderer.ticks.template.strokeOpacity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"renderer\": {\r\n * \"ticks\": {\r\n * \"disabled\": false,\r\n * \"strokeOpacity\": 0.5\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @return Tick elements\r\n */\r\n get: function () {\r\n if (!this._ticks) {\r\n var tick = this.createTick();\r\n tick.applyOnClones = true;\r\n tick.isMeasured = false;\r\n tick.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._ticks = new ListTemplate(tick);\r\n this._disposers.push(new ListDisposer(this._ticks));\r\n this._disposers.push(this._ticks.template);\r\n }\r\n return this._ticks;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new tick element, suitable for this Axis Renderer type.\r\n *\r\n * @return Tick element\r\n */\r\n AxisRenderer.prototype.createTick = function () {\r\n return new AxisTick();\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"labels\", {\r\n /**\r\n * A list of Axis' Label elements.\r\n *\r\n * @return Label elements\r\n */\r\n get: function () {\r\n if (!this._labels) {\r\n var label = this.createLabel();\r\n this._labels = new ListTemplate(label);\r\n label.applyOnClones = true;\r\n label.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._disposers.push(new ListDisposer(this._labels));\r\n this._disposers.push(this._labels.template);\r\n }\r\n return this._labels;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new label element, suitable for this Axis Renderer type.\r\n *\r\n * @return Label element\r\n */\r\n AxisRenderer.prototype.createLabel = function () {\r\n return new AxisLabel();\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"inside\", {\r\n /**\r\n * @return Labels inside?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inside\");\r\n },\r\n /**\r\n * Indicates whether Axis' labels and ticks should be drawn inside Plot area.\r\n *\r\n * Does not work with all renderers, like AxisRendererRadial.\r\n *\r\n * @param value Labels inside?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"inside\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n }\r\n }\r\n if (value) {\r\n this.width = 0;\r\n this.height = 0;\r\n }\r\n else {\r\n this.width = undefined;\r\n this.height = undefined;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"opposite\", {\r\n /**\r\n * @return Draw axis on opposite side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"opposite\");\r\n },\r\n /**\r\n * Indicates whether Axis should be drawn on the opposite side of the plot\r\n * area than it would normally be drawn based on chart's settings.\r\n *\r\n * Does not work with all renderers, like [[AxisRendererRadial]] and\r\n * [[AxisRenderer Circular].\r\n *\r\n * @param value Draw axis on opposite side?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"opposite\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"fullWidthTooltip\", {\r\n /**\r\n * @return Full width tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fullWidthTooltip\");\r\n },\r\n /**\r\n * Indicates if Axis tooltip should take the whole width of the axis cell.\r\n * (between two grid lines)\r\n *\r\n * NOTE: this setting is ignored on circular axis types.\r\n *\r\n * @param value Full width tooltip?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fullWidthTooltip\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"tooltipLocation\", {\r\n /**\r\n * @return Tooltip location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipLocation\");\r\n },\r\n /**\r\n * Location within axis cell to show tooltip on. (0-1)\r\n *\r\n * 0 - show at the start\r\n * 0.5 - show right in the middle\r\n * 1 - show at the end\r\n *\r\n * @param value Tooltip location\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipLocation\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"tooltipLocation2\", {\r\n /**\r\n * @return Tooltip location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipLocation2\");\r\n },\r\n /**\r\n * Location within secondary axis cell to show tooltip on. (0-1)\r\n *\r\n * 0 - show at the start\r\n * 0.5 - show right in the middle\r\n * 1 - show at the end\r\n *\r\n * @param value Tooltip location\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipLocation2\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"cellStartLocation\", {\r\n /**\r\n * @return Cell start (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cellStartLocation\");\r\n },\r\n /**\r\n * Location for the cell start.\r\n *\r\n * Normally a \"cell\" is the whole available width in a category.\r\n *\r\n * If there are several clustered column-like series available, the whole\r\n * space is divided between each clustered column, or column stacks.\r\n *\r\n * `cellStartLocation` identifies where, within available space, the actual\r\n * cell starts.\r\n *\r\n * This, together with column series' `width` will affect actual width of\r\n * columns, and thus gaps between them.\r\n *\r\n * This will affect category-like axes only, like [[DateAxis]], or\r\n * [[CategoryAxis]].\r\n *\r\n * This is used to limit a space occupied by series like column.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Cell start (0-1)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"cellStartLocation\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"cellEndLocation\", {\r\n /**\r\n * @return Cell end (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cellEndLocation\");\r\n },\r\n /**\r\n * Location for the cell end.\r\n *\r\n * Normally a \"cell\" is the whole available width in a category.\r\n *\r\n * If there are several clustered column-like series available, the whole\r\n * space is divided between each clustered column, or column stacks.\r\n *\r\n * `cellEndLocation` identifies where, within available space, the actual\r\n * cell ends.\r\n *\r\n * This, together with column series' `width` will affect actual width of\r\n * columns, and thus gaps between them.\r\n *\r\n * This will affect category-like axes only, like [[DateAxis]], or\r\n * [[CategoryAxis]].\r\n *\r\n * This is used to limit a space occupied by series like column.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Cell end (0-1)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"cellEndLocation\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"inversed\", {\r\n /**\r\n * @return Flip axis?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inversed\");\r\n },\r\n /**\r\n * Indicates if the scale of the axis should be flipped.\r\n *\r\n * @param value Flip axis?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"inversed\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"minLabelPosition\", {\r\n /**\r\n * @return Min label position (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minLabelPosition\");\r\n },\r\n /**\r\n * Minimum position along the Axis, for labels.\r\n *\r\n * Labels, which have their position closer to the start of the Axis, will be\r\n * automatically hidden.\r\n *\r\n * E.g., setting this to 0.05 (5% of total axis length) would hide labels,\r\n * that would otherwise be drawn very near start of the Axis.\r\n *\r\n * This is especially usefull with `inside = true`, or if the chart hasn't\r\n * got any extra margins.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Min label position (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minLabelPosition\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"maxLabelPosition\", {\r\n /**\r\n * @return Max label position (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxLabelPosition\");\r\n },\r\n /**\r\n * Maximum position along the Axis, for labels.\r\n *\r\n * Labels, which have their position closer to the and of the Axis, will be\r\n * automatically hidden.\r\n *\r\n * E.g., setting this to 0.95 (95% of total axis length) would hide labels,\r\n * that would otherwise be drawn very near end of the Axis.\r\n *\r\n * This is especially usefull with `inside = true`, or if the chart hasn't\r\n * got any extra margins.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Max label position (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxLabelPosition\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all settings and related items from another object of the same\r\n * type.\r\n *\r\n * @param source Source object\r\n */\r\n AxisRenderer.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.grid.template.copyFrom(source.grid.template);\r\n this.ticks.template.copyFrom(source.ticks.template);\r\n this.labels.template.copyFrom(source.labels.template);\r\n this.axisFills.template.copyFrom(source.axisFills.template);\r\n this.line.copyFrom(source.line);\r\n this.baseGrid.copyFrom(source.baseGrid);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRenderer.prototype.toAxisPosition = function (value) {\r\n return value;\r\n };\r\n /**\r\n * Sets `visibility` property:\r\n *\r\n * * `true` - visible\r\n * * `false` - hidden\r\n *\r\n * @param value true - visible, false - hidden\r\n * @return Current visibility\r\n */\r\n AxisRenderer.prototype.setVisibility = function (value) {\r\n _super.prototype.setVisibility.call(this, value);\r\n this.bulletsContainer.visible = value;\r\n };\r\n return AxisRenderer;\r\n}(Container));\r\nexport { AxisRenderer };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRenderer\"] = AxisRenderer;\r\n","/**\r\n * Axis Bullet module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw a positioned bullet (element) on an Axis.\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * let flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * var flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"bullet: {\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.5.9\r\n * @see {@link IAxisBulletEvents} for a list of available events\r\n * @see {@link IAxisBulletAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisBullet = /** @class */ (function (_super) {\r\n __extends(AxisBullet, _super);\r\n function AxisBullet() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisBullet\";\r\n _this.location = 0.5;\r\n _this.isMeasured = false;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisBullet.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative position within cell/range.\r\n *\r\n * Value range is from from `0` (beginning) to `1` (end).\r\n *\r\n * NOTE: `location` is relative to the parent axis range's scope, i.e.\r\n * between its `date` and `endDate` for [[DateAxis]], or `value`/`endValue`\r\n * ([[ValueAxis]]), or `category`/`endCategory` ([[categoryAxis]]).\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n * range.endDate = new Date(2018, 0, 6);\r\n *\r\n * let bullet = new am4charts.AxisBullet();\r\n * bullet.location = 1;\r\n *\r\n * let flag = bullet.createChild(am4plugins_bullets.FlagBullet);\r\n * flag.label.text = \"Hello\";\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n * range.endDate = new Date(2018, 0, 6);\r\n *\r\n * var bullet = new am4charts.AxisBullet();\r\n * bullet.location = 1;\r\n *\r\n * var flag = bullet.createChild(am4plugins_bullets.FlagBullet);\r\n * flag.label.text = \"Hello\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"endDate\": new Date(2018, 0, 6),\r\n * \"bullet: {\r\n * \"type\": \"AxisBullet\",\r\n * \"location\": 1,\r\n * \"children\": [{\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }]\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default 0.5\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisBullet.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n return AxisBullet;\r\n}(Container));\r\nexport { AxisBullet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisBullet\"] = AxisBullet;\r\n","/**\r\n * Module, defining Axis Renderer for vertical axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { WavedLine } from \"../../core/elements/WavedLine\";\r\nimport { WavedRectangle } from \"../../core/elements/WavedRectangle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for vertical axis.\r\n *\r\n * @see {@link IAxisRendererYEvents} for a list of available events\r\n * @see {@link IAxisRendererYAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererY = /** @class */ (function (_super) {\r\n __extends(AxisRendererY, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererY() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisRendererY\";\r\n _this.minGridDistance = 40;\r\n _this.opposite = false;\r\n _this.height = percent(100);\r\n _this.labels.template.verticalCenter = \"middle\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererY.prototype.setAxis = function (axis) {\r\n _super.prototype.setAxis.call(this, axis);\r\n axis.layout = \"horizontal\";\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererY.prototype.updateGridContainer = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var gridContainer = this.gridContainer;\r\n gridContainer.y = axis.pixelY;\r\n gridContainer.height = axis.axisLength;\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererY.prototype.toAxisPosition = function (value) {\r\n var axis = this.axis;\r\n if (axis) {\r\n var inversedPosition = 1 - value;\r\n var relativePositionSprite = axis.relativePositionSprite;\r\n var y = axis.pixelY;\r\n if (relativePositionSprite) {\r\n y = $utils.spritePointToSprite({ x: 0, y: this.pixelY }, this.parent, relativePositionSprite).y;\r\n }\r\n else {\r\n relativePositionSprite = axis.parent;\r\n }\r\n if (relativePositionSprite) {\r\n var relativeY = y / relativePositionSprite.innerHeight;\r\n var relativeHeight = axis.axisLength / relativePositionSprite.innerHeight;\r\n return 1 - (inversedPosition - relativeY) / relativeHeight;\r\n }\r\n }\r\n return value;\r\n };\r\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.processRenderer = function () {\r\n _super.prototype.processRenderer.call(this);\r\n var axis = this.axis;\r\n if (axis) {\r\n var title = axis.title;\r\n title.valign = \"middle\";\r\n if (!(axis.height instanceof Percent)) {\r\n axis.height = percent(100);\r\n }\r\n if (this.opposite) {\r\n title.rotation = 90;\r\n this.line.toBack();\r\n title.toFront();\r\n }\r\n else {\r\n title.rotation = -90;\r\n title.toBack();\r\n this.line.toFront();\r\n }\r\n }\r\n };\r\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.updateTooltip = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var bigNum = 2000;\r\n var bbx = 0;\r\n var bby = 0;\r\n var bbw = bigNum;\r\n var bbh = this.axisLength;\r\n // right\r\n if (this.opposite) {\r\n if (this.inside) {\r\n bbx = -bigNum;\r\n bbw = bigNum;\r\n }\r\n }\r\n // left\r\n else {\r\n if (!this.inside) {\r\n bbx = -bigNum;\r\n bbw = bigNum;\r\n }\r\n }\r\n this.axis.updateTooltip(\"horizontal\", { x: bbx, y: bby, width: bbw, height: bbh });\r\n }\r\n };\r\n Object.defineProperty(AxisRendererY.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n var axis = this.axis;\r\n return (axis.measuredHeight - axis.pixelPaddingTop - axis.pixelPaddingBottom) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererY.prototype.positionToPoint = function (position, position2) {\r\n return { x: 0, y: this.positionToCoordinate(position) };\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererY.prototype.pointToPosition = function (point) {\r\n return this.coordinateToPosition(point.y, point.x);\r\n };\r\n /**\r\n * Converts a coordinate in pixels to a relative position. (0-1)\r\n *\r\n * @param coordinate Coordinate (px)\r\n * @param coordinate2 Coordinate of a second axis, only needed for complex axes systems, like timeline (px)\r\n * @return Position (0-1)\r\n */\r\n AxisRendererY.prototype.coordinateToPosition = function (coordinate, coordinate2) {\r\n var position;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (axis.renderer.inversed) {\r\n position = (1 - axis.start) - coordinate / axisFullLength;\r\n }\r\n else {\r\n position = coordinate / axisFullLength + (1 - axis.end);\r\n }\r\n return $math.round(position, 5);\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererY.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n var y1 = $math.fitToRange(this.positionToCoordinate(startPosition), 0, this.axisLength);\r\n var y2 = $math.fitToRange(this.positionToCoordinate(endPosition), 0, this.axisLength);\r\n var h = Math.abs(y2 - y1);\r\n var w = this.getWidth();\r\n var y = Math.min(y1, y2);\r\n var x = 0;\r\n return $path.rectToPath({\r\n x: x,\r\n y: y,\r\n width: w,\r\n height: h\r\n }, true);\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n //\tpoint.y = $utils.spritePointToSprite({ x: 0, y: point.y }, this, this.gridContainer).y;\r\n grid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: this.getWidth(), y: 0 });\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n var tickLength = tick.length;\r\n try {\r\n $utils.used(this.axis.title.measuredWidth);\r\n }\r\n catch (_a) {\r\n // void\r\n }\r\n point.x = $utils.spritePointToSprite({ x: this.line.pixelX, y: 0 }, this.line.parent, this.gridContainer).x;\r\n if (!this.opposite) {\r\n tickLength *= (tick.inside ? 1 : -1);\r\n }\r\n else {\r\n tickLength *= (tick.inside ? -1 : 1);\r\n }\r\n tick.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: tickLength, y: 0 });\r\n this.positionItem(tick, point);\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.updateAxisLine = function () {\r\n this.line.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: this.axisLength });\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var axis = this.axis;\r\n var w = this.getWidth();\r\n var h = this.axisLength;\r\n var y = axis.basePoint.y;\r\n var baseGrid = this.baseGrid;\r\n if (y < -0.2 || y > h + 0.2) {\r\n baseGrid.hide(0);\r\n }\r\n else {\r\n var x = $utils.spritePointToSprite({ x: 0, y: 0 }, this.gridContainer, baseGrid.parent).x;\r\n baseGrid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: w, y: 0 });\r\n baseGrid.moveTo({ x: x, y: y });\r\n baseGrid.show(0);\r\n }\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererY.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n label.isMeasured = !label.inside;\r\n var point = this.positionToPoint(position);\r\n var horizontalCenter;\r\n var deltaX = 0;\r\n var maxWidth = this.gridContainer.maxWidth;\r\n if (this.opposite) {\r\n if (label.inside) {\r\n horizontalCenter = \"right\";\r\n if (label.align == \"left\") {\r\n deltaX = -maxWidth;\r\n horizontalCenter = \"left\";\r\n }\r\n if (label.align == \"center\") {\r\n deltaX = -maxWidth / 2;\r\n horizontalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n horizontalCenter = \"left\";\r\n }\r\n point.x = 0 + deltaX;\r\n }\r\n else {\r\n if (label.inside) {\r\n horizontalCenter = \"left\";\r\n if (label.align == \"right\") {\r\n deltaX = maxWidth;\r\n horizontalCenter = \"right\";\r\n }\r\n if (label.align == \"center\") {\r\n deltaX = maxWidth / 2;\r\n horizontalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n horizontalCenter = \"right\";\r\n }\r\n point.x = this.measuredWidth + deltaX;\r\n }\r\n if (label.rotation == 0) {\r\n // Apply fuzzy logic to verticalCenter only if labels are not rotated\r\n label.horizontalCenter = horizontalCenter;\r\n }\r\n this.positionItem(label, point);\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRendererY.prototype.updateBreakElement = function (axisBreak) {\r\n _super.prototype.updateBreakElement.call(this, axisBreak);\r\n var startLine = axisBreak.startLine;\r\n var endLine = axisBreak.endLine;\r\n var fillShape = axisBreak.fillShape;\r\n var startPoint = axisBreak.startPoint;\r\n var endPoint = axisBreak.endPoint;\r\n var x1 = axisBreak.pixelMarginLeft;\r\n var x2 = this.getWidth() - axisBreak.pixelMarginLeft - axisBreak.pixelMarginRight;\r\n startPoint.y = $math.fitToRange(startPoint.y, -1, this.axisLength + 1);\r\n endPoint.y = $math.fitToRange(endPoint.y, -1, this.axisLength + 1);\r\n if (startPoint.y == endPoint.y && (startPoint.y < 0 || startPoint.y > this.axisLength)) {\r\n axisBreak.fillShape.__disabled = true;\r\n }\r\n else {\r\n axisBreak.fillShape.__disabled = false;\r\n }\r\n var w = Math.abs(x2 - x1);\r\n startLine.x = x1;\r\n startLine.height = 0;\r\n startLine.width = w;\r\n endLine.x = x1;\r\n endLine.height = 0;\r\n endLine.width = w;\r\n fillShape.width = w;\r\n fillShape.height = Math.abs(endPoint.y - startPoint.y);\r\n fillShape.x = x1;\r\n fillShape.y = endPoint.y;\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRendererY.prototype.createBreakSprites = function (axisBreak) {\r\n axisBreak.startLine = new WavedLine();\r\n axisBreak.endLine = new WavedLine();\r\n var wavedRectangle = new WavedRectangle();\r\n wavedRectangle.setWavedSides(true, false, true, false);\r\n axisBreak.fillShape = wavedRectangle;\r\n };\r\n /**\r\n * Converts a position on the axis to a coordinate in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n AxisRendererY.prototype.positionToCoordinate = function (position) {\r\n var coordinate;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (!axis.renderer.inversed) {\r\n coordinate = (axis.end - position) * axisFullLength;\r\n }\r\n else {\r\n coordinate = (position - axis.start) * axisFullLength;\r\n }\r\n return coordinate;\r\n };\r\n /**\r\n * Updates and positions axis bullets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n point.x = $utils.spritePointToSprite({ x: this.line.pixelX, y: 0 }, this.line.parent, this.gridContainer).x;\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n return AxisRendererY;\r\n}(AxisRenderer));\r\nexport { AxisRendererY };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRendererY\"] = AxisRendererY;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Put labels inside plot area.\r\n * Disable first and last labels.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererY) {\r\n var state = target.states.create(stateId);\r\n state.properties.inside = true;\r\n state.properties.maxLabelPosition = 0.9;\r\n state.properties.minLabelPosition = 0.1;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Disable labels altogather on very small charts\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthXS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererY) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n","/**\r\n * A module which defines functionality related to Value Axis Break.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisBreak } from \"./AxisBreak\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base class to define \"breaks\" on value axis.\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * when comparing columns with relatively similar values, it would make sense\r\n * to cut out their mid section, so that their tip differences are more\r\n * prominent.\r\n *\r\n * @see {@link IValueAxisBreakEvents} for a list of available events\r\n * @see {@link IValueAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar ValueAxisBreak = /** @class */ (function (_super) {\r\n __extends(ValueAxisBreak, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ValueAxisBreak() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ValueAxisBreak\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ValueAxisBreak.prototype, \"startPosition\", {\r\n /**\r\n * Pixel position of the break's start.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n if (this.axis) {\r\n return this.axis.valueToPosition(this.adjustedStartValue);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxisBreak.prototype, \"endPosition\", {\r\n /**\r\n * Pixel position of the break's end.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n if (this.axis) {\r\n return this.axis.valueToPosition(this.adjustedEndValue);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ValueAxisBreak;\r\n}(AxisBreak));\r\nexport { ValueAxisBreak };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ValueAxisBreak\"] = ValueAxisBreak;\r\n","/**\r\n * Value Axis module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Axis, AxisDataItem } from \"./Axis\";\r\nimport { AxisRendererY } from \"./AxisRendererY\";\r\nimport { MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { ValueAxisBreak } from \"./ValueAxisBreak\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[ValueAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar ValueAxisDataItem = /** @class */ (function (_super) {\r\n __extends(ValueAxisDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ValueAxisDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ValueAxisDataItem\";\r\n _this.values.value = {};\r\n _this.values.endValue = {};\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ValueAxisDataItem.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values[\"value\"].value;\r\n },\r\n /**\r\n * A data point's numeric value.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"value\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxisDataItem.prototype, \"endValue\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values[\"endValue\"].value;\r\n },\r\n /**\r\n * Data point's numeric end value.\r\n *\r\n * @param value End value\r\n */\r\n set: function (value) {\r\n this.setValue(\"endValue\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ValueAxisDataItem;\r\n}(AxisDataItem));\r\nexport { ValueAxisDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to create a value axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Monthly Sales\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Monthly Sales\";\r\n * ```\r\n * ```JSON\r\n * \"yAxes\": [{\r\n * \"type\": \"ValueAxis\",\r\n * \"title\": {\r\n * \"text\": \"Monthly Sales\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link IValueAxisEvents} for a list of available Events\r\n * @see {@link IValueAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar ValueAxis = /** @class */ (function (_super) {\r\n __extends(ValueAxis, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ValueAxis() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * [_stepDecimalPlaces description]\r\n *\r\n * @todo Description\r\n */\r\n _this._stepDecimalPlaces = 0;\r\n _this._prevStepDecimalPlaces = 0;\r\n _this._adjustLabelPrecision = true;\r\n /**\r\n * Base value for the axis.\r\n */\r\n _this._baseValue = 0;\r\n /**\r\n * Adjusted start in case we have breaks.\r\n *\r\n * @todo Description\r\n */\r\n _this._adjustedStart = 0;\r\n /**\r\n * Adjusted end in case we have breaks.\r\n *\r\n * @todo Description\r\n */\r\n _this._adjustedEnd = 1;\r\n _this._extremesChanged = false;\r\n _this._deltaMinMax = 1;\r\n _this._dsc = false;\r\n /**\r\n * As calculating totals is expensive operation and not often needed, we\r\n * don't do it by default.\r\n *\r\n * In case you use `totalPercent` or `total` in your charts, this must be set\r\n * to `true`.\r\n *\r\n * @default false\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/#100_stacks} For using `calculateTotals` for 100% stacked series.\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-strings/#Placeholders_for_numeric_values} For using `calculateTotals` in labels.\r\n */\r\n _this.calculateTotals = false;\r\n _this.className = \"ValueAxis\";\r\n // Set field name\r\n _this.axisFieldName = \"value\";\r\n // Set defaults\r\n _this.setPropertyValue(\"maxZoomFactor\", 1000);\r\n _this.setPropertyValue(\"extraMin\", 0);\r\n _this.setPropertyValue(\"extraMax\", 0);\r\n _this.setPropertyValue(\"strictMinMax\", false);\r\n _this.setPropertyValue(\"maxPrecision\", Number.MAX_VALUE);\r\n _this.setPropertyValue(\"adjustLabelPrecision\", true);\r\n _this.setPropertyValue(\"extraTooltipPrecision\", 0);\r\n _this.keepSelection = false;\r\n _this.includeRangesInMinMax = false;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Holds reference to a function that accepts a DataItem as parameter.\r\n *\r\n * It can either return a fill opacity for a fill, or manipulate data item\r\n * directly, to create various highlighting scenarios.\r\n */\r\n ValueAxis.prototype.fillRule = function (dataItem) {\r\n var value = dataItem.value;\r\n var axis = dataItem.component;\r\n if (!dataItem.axisFill.disabled) {\r\n // rounding in left to solve floating point number\r\n if ($math.round(value / axis.step / 2, 5) == Math.round(value / axis.step / 2)) {\r\n dataItem.axisFill.__disabled = true;\r\n }\r\n else {\r\n dataItem.axisFill.__disabled = false;\r\n }\r\n }\r\n };\r\n /**\r\n * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n ValueAxis.prototype.createDataItem = function () {\r\n return new ValueAxisDataItem();\r\n };\r\n /**\r\n * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n *\r\n * @return Axis break\r\n */\r\n ValueAxis.prototype.createAxisBreak = function () {\r\n return new ValueAxisBreak();\r\n };\r\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n ValueAxis.prototype.dataChangeUpdate = function () {\r\n this.clearCache();\r\n if (!this.keepSelection) {\r\n if (this._start != 0 || this._end != 1) {\r\n this._start = 0;\r\n this._end = 1;\r\n this.dispatchImmediately(\"startendchanged\");\r\n }\r\n }\r\n else {\r\n if (this._start != 0) {\r\n this.dispatchImmediately(\"startchanged\");\r\n }\r\n if (this._end != 1) {\r\n this.dispatchImmediately(\"endchanged\");\r\n }\r\n if (this._start != 0 || this._end != 1) {\r\n this.dispatchImmediately(\"startendchanged\");\r\n }\r\n }\r\n this._maxZoomed = this._maxDefined;\r\n this._minZoomed = this._minDefined;\r\n this._maxAdjusted = this._maxDefined;\r\n this._minAdjusted = this._minDefined;\r\n };\r\n /**\r\n * Processes data items of the related Series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ValueAxis.prototype.processSeriesDataItems = function () {\r\n // @todo: add some boolean (maybe autodedect) if we need these calculations or not. this place uses a lot of cpu\r\n if (this.calculateTotals) {\r\n var series = this.series.getIndex(0);\r\n var startIndex = series.startIndex;\r\n if (series.dataItems.length > 0) {\r\n if (startIndex > 0) {\r\n startIndex--;\r\n }\r\n var endIndex = series.endIndex;\r\n if (endIndex < series.dataItems.length) {\r\n endIndex++;\r\n }\r\n var _loop_1 = function (i) {\r\n // This has to be `var` in order to avoid garbage collection\r\n var total = {};\r\n var sum = {};\r\n this_1.series.each(function (series) {\r\n if (!series.excludeFromTotal) {\r\n var dataItem_1 = series.dataItems.getIndex(i);\r\n if (dataItem_1) {\r\n $object.each(dataItem_1.values, function (key) {\r\n var value = dataItem_1.values[key].workingValue; // can not use getWorkingValue here!\r\n if ($type.isNumber(value)) {\r\n if (!$type.isNumber(total[key])) {\r\n total[key] = Math.abs(value);\r\n }\r\n else {\r\n total[key] += Math.abs(value);\r\n }\r\n if (!$type.isNumber(sum[key])) {\r\n sum[key] = value;\r\n }\r\n else {\r\n sum[key] += value;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n });\r\n this_1.series.each(function (series) {\r\n if (!series.excludeFromTotal) {\r\n var dataItem_2 = series.dataItems.getIndex(i);\r\n if (dataItem_2) {\r\n $object.each(dataItem_2.values, function (key) {\r\n var value = dataItem_2.values[key].workingValue; // can not use getWorkingValue here!\r\n if ($type.isNumber(value)) {\r\n dataItem_2.setCalculatedValue(key, total[key], \"total\");\r\n dataItem_2.setCalculatedValue(key, 100 * value / total[key], \"totalPercent\");\r\n dataItem_2.setCalculatedValue(key, sum[key], \"sum\");\r\n }\r\n });\r\n }\r\n }\r\n });\r\n };\r\n var this_1 = this;\r\n // This has to be `var` in order to avoid garbage collection\r\n for (var i = startIndex; i < endIndex; ++i) {\r\n _loop_1(i);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Validates the whole axis. Causes it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\r\n ValueAxis.prototype.validate = function () {\r\n if (this.axisLength <= 0) {\r\n return;\r\n }\r\n _super.prototype.validate.call(this);\r\n this.getMinMax();\r\n if (!$type.isNumber(this._minAdjusted)) {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.value = null;\r\n });\r\n }\r\n this.fixAxisBreaks();\r\n this.calculateZoom();\r\n this.validateAxisElements();\r\n this.validateAxisRanges();\r\n this.validateBreaks();\r\n this.hideUnusedDataItems();\r\n this.renderer.invalidateLayout();\r\n // hide too close\r\n //this.hideTooCloseDataItems();\r\n };\r\n /**\r\n * Calculates all positions, related to axis as per current zoom.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ValueAxis.prototype.calculateZoom = function () {\r\n if ($type.isNumber(this.min) && $type.isNumber(this.max)) {\r\n var min = this.positionToValue(this.start);\r\n var max = this.positionToValue(this.end);\r\n var differece = this.adjustDifference(min, max);\r\n var minMaxStep = this.adjustMinMax(min, max, differece, this._gridCount, true);\r\n var stepDecimalPlaces = $utils.decimalPlaces(minMaxStep.step);\r\n this._stepDecimalPlaces = stepDecimalPlaces;\r\n min = $math.round(min, stepDecimalPlaces);\r\n max = $math.round(max, stepDecimalPlaces);\r\n minMaxStep = this.adjustMinMax(min, max, differece, this._gridCount, true);\r\n var step = minMaxStep.step;\r\n if (this.syncWithAxis) {\r\n var calculated = this.getCache(min + \"-\" + max);\r\n if ($type.isNumber(calculated)) {\r\n step = calculated;\r\n }\r\n }\r\n else {\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n }\r\n if (this._minZoomed != min || this._maxZoomed != max || this._step != step || this._dsc) {\r\n this._dsc = false;\r\n this._minZoomed = min;\r\n this._maxZoomed = max;\r\n this._step = step;\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n }\r\n }\r\n };\r\n ValueAxis.prototype.fixSmallStep = function (step) {\r\n if (1 + step == 1) {\r\n step *= 2;\r\n return this.fixSmallStep(step);\r\n }\r\n return step;\r\n };\r\n /**\r\n * Validates Axis elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n ValueAxis.prototype.validateAxisElements = function () {\r\n var _this = this;\r\n if ($type.isNumber(this.max) && $type.isNumber(this.min)) {\r\n // first regular items\r\n var value_1 = this.minZoomed - this._step * 2;\r\n if (!this.logarithmic) {\r\n value_1 = Math.floor(value_1 / this._step) * this._step;\r\n }\r\n else {\r\n var differencePower = Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E;\r\n if (differencePower > 1) {\r\n value_1 = Math.pow(10, Math.log(this.min) * Math.LOG10E);\r\n }\r\n else {\r\n value_1 = Math.floor(this.minZoomed / this._step) * this._step;\r\n if (value_1 == 0) {\r\n value_1 = this.minZoomed;\r\n }\r\n }\r\n }\r\n var maxZoomed = this._maxZoomed + this._step;\r\n this.resetIterators();\r\n var dataItemsIterator_1 = this._dataItemsIterator;\r\n if (this._step == 0) {\r\n return;\r\n }\r\n this._step = this.fixSmallStep(this._step);\r\n var i = 0;\r\n var precisionChanged = this._prevStepDecimalPlaces != this._stepDecimalPlaces;\r\n this._prevStepDecimalPlaces = this._stepDecimalPlaces;\r\n while (value_1 <= maxZoomed) {\r\n var axisBreak = this.isInBreak(value_1);\r\n if (!axisBreak) {\r\n var dataItem = dataItemsIterator_1.find(function (x) { return x.value === value_1; });\r\n if (dataItem.__disabled) {\r\n dataItem.__disabled = false;\r\n }\r\n //this.processDataItem(dataItem);\r\n this.appendDataItem(dataItem);\r\n dataItem.axisBreak = undefined;\r\n if (dataItem.value != value_1 || precisionChanged) {\r\n dataItem.value = value_1;\r\n dataItem.text = this.formatLabel(value_1);\r\n if (dataItem.label && dataItem.label.invalid) {\r\n dataItem.label.validate();\r\n }\r\n if (dataItem.value >= this.min && dataItem.value <= this.max) {\r\n if (dataItem.label) {\r\n if ((this.axisLetter == \"Y\" && dataItem.label.measuredWidth > this.ghostLabel.measuredWidth) || (this.axisLetter == \"X\" && dataItem.label.measuredHeight > this.ghostLabel.measuredHeight)) {\r\n this.ghostLabel.text = dataItem.label.currentText;\r\n this.ghostLabel.validate();\r\n }\r\n }\r\n }\r\n }\r\n this.validateDataElement(dataItem);\r\n }\r\n i++;\r\n var oldValue = value_1;\r\n if (!this.logarithmic) {\r\n value_1 += this._step;\r\n }\r\n else {\r\n var differencePower = Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E;\r\n if (differencePower > 1) {\r\n value_1 = Math.pow(10, Math.log(this.min) * Math.LOG10E + i);\r\n }\r\n else {\r\n value_1 += this._step;\r\n }\r\n }\r\n var stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(this._step)) * Math.LOG10E));\r\n if (stepPower < 1) {\r\n // exponent is less then 1 too. Count decimals of exponent\r\n var decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 2;\r\n decCount = Math.min(13, decCount);\r\n // round value to avoid floating point issues\r\n value_1 = $math.round(value_1, decCount);\r\n // ceil causes problems: https://codepen.io/team/amcharts/pen/XWMjZwy?editors=1010\r\n if (oldValue == value_1) {\r\n value_1 = maxZoomed;\r\n break;\r\n }\r\n }\r\n }\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks) {\r\n // breaks later\r\n var renderer_1 = this.renderer;\r\n $iter.each(axisBreaks.iterator(), function (axisBreak) {\r\n if (axisBreak.breakSize > 0) {\r\n // only add grid if gap is bigger then minGridDistance\r\n if ($math.getDistance(axisBreak.startPoint, axisBreak.endPoint) > renderer_1.minGridDistance) {\r\n var breakValue_1 = axisBreak.adjustedMin;\r\n while (breakValue_1 <= axisBreak.adjustedMax) {\r\n if (breakValue_1 >= axisBreak.adjustedStartValue && breakValue_1 <= axisBreak.adjustedEndValue) {\r\n var dataItem = dataItemsIterator_1.find(function (x) { return x.value === breakValue_1; });\r\n if (dataItem.__disabled) {\r\n dataItem.__disabled = false;\r\n }\r\n //this.processDataItem(dataItem);\r\n _this.appendDataItem(dataItem);\r\n dataItem.axisBreak = axisBreak;\r\n if (dataItem.value != breakValue_1) {\r\n dataItem.value = breakValue_1;\r\n dataItem.text = _this.formatLabel(breakValue_1);\r\n if (dataItem.label && dataItem.label.invalid) {\r\n dataItem.label.validate();\r\n }\r\n }\r\n _this.validateDataElement(dataItem);\r\n }\r\n breakValue_1 += axisBreak.adjustedStep;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Validates axis data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\r\n ValueAxis.prototype.validateDataElement = function (dataItem) {\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n //dataItem.__disabled = false;\r\n dataItem.itemIndex = this._axisItemCount;\r\n this._axisItemCount++;\r\n var renderer = this.renderer;\r\n var value = dataItem.value;\r\n var endValue = dataItem.endValue;\r\n var position = this.valueToPosition(value);\r\n dataItem.position = position;\r\n var endPosition = position;\r\n var fillEndPosition = this.valueToPosition(value + this._step);\r\n if ($type.isNumber(endValue)) {\r\n endPosition = this.valueToPosition(endValue);\r\n fillEndPosition = endPosition;\r\n }\r\n // this point is needed to calculate distance to satisfy minGridDistance\r\n dataItem.point = renderer.positionToPoint(position);\r\n var tick = dataItem.tick;\r\n if (tick && !tick.disabled) {\r\n renderer.updateTickElement(tick, position, endPosition);\r\n }\r\n var grid = dataItem.grid;\r\n if (grid && !grid.disabled) {\r\n renderer.updateGridElement(grid, position, endPosition);\r\n }\r\n var label = dataItem.label;\r\n if (label && !label.disabled) {\r\n renderer.updateLabelElement(label, position, endPosition);\r\n }\r\n var fill = dataItem.axisFill;\r\n if (fill && !fill.disabled) {\r\n renderer.updateFillElement(fill, position, fillEndPosition);\r\n if (!dataItem.isRange) {\r\n this.fillRule(dataItem);\r\n }\r\n }\r\n if (dataItem.bullet) {\r\n renderer.updateBullet(dataItem.bullet, position, endPosition);\r\n }\r\n var mask = dataItem.mask;\r\n if (mask) {\r\n renderer.updateFillElement(mask, position, fillEndPosition);\r\n }\r\n };\r\n /**\r\n * Formats the value according to axis' own [[NumberFormatter]].\r\n *\r\n * @param value Source value\r\n * @return Formatted value\r\n */\r\n ValueAxis.prototype.formatLabel = function (value) {\r\n if (this.adjustLabelPrecision && value != 0) {\r\n return this.numberFormatter.format(value, undefined, this._stepDecimalPlaces);\r\n }\r\n else {\r\n return this.numberFormatter.format(value);\r\n }\r\n };\r\n Object.defineProperty(ValueAxis.prototype, \"basePoint\", {\r\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point\r\n */\r\n get: function () {\r\n var baseValue = this.baseValue;\r\n var position = this.valueToPosition(baseValue);\r\n var basePoint = this.renderer.positionToPoint(position);\r\n return basePoint;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"baseValue\", {\r\n /**\r\n * @return base value\r\n */\r\n get: function () {\r\n var baseValue = this._baseValue;\r\n if (this.logarithmic) {\r\n baseValue = this.min;\r\n }\r\n if (!this._adapterO) {\r\n return baseValue;\r\n }\r\n else {\r\n return this._adapterO.apply(\"baseValue\", baseValue);\r\n }\r\n },\r\n /**\r\n * A base value.\r\n *\r\n * This is a threshold value that will divide \"positive\" and \"negative\"\r\n * value ranges.\r\n *\r\n * Other scale-related functionality also depend on base value. E.g. stacks,\r\n * value-dependent coloring, etc.\r\n *\r\n * @param value Base value\r\n */\r\n set: function (value) {\r\n this._baseValue = value;\r\n this.invalidateLayout();\r\n this.invalidateSeries();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts a numeric value to relative position on axis\r\n *\r\n * An alias to `valueToPosition()`.\r\n *\r\n * @param value Value\r\n * @return Position\r\n */\r\n ValueAxis.prototype.anyToPosition = function (value) {\r\n return this.valueToPosition(value);\r\n };\r\n /**\r\n * Converts a numeric value to orientation point (x, y, angle) on axis\r\n *\r\n * @param value Value\r\n * @return Orientation point\r\n */\r\n ValueAxis.prototype.valueToPoint = function (value) {\r\n var position = this.valueToPosition(value);\r\n var point = this.renderer.positionToPoint(position);\r\n var angle = this.renderer.positionToAngle(position);\r\n return { x: point.x, y: point.y, angle: angle };\r\n };\r\n /**\r\n * Converts a numeric value to orientation (x, y, angle) point on axis\r\n *\r\n * @param value Value\r\n * @return Orientation point\r\n */\r\n ValueAxis.prototype.anyToPoint = function (value) {\r\n return this.valueToPoint(value);\r\n };\r\n /**\r\n * Converts a numeric value to relative position on axis.\r\n *\r\n * @param value Value\r\n * @return relative position\r\n */\r\n ValueAxis.prototype.valueToPosition = function (value) {\r\n if ($type.isNumber(value)) {\r\n // todo: think if possible to take previous value and do not go through all previous breaks\r\n var min_1 = this.min;\r\n var max_1 = this.max;\r\n if ($type.isNumber(min_1) && $type.isNumber(max_1)) {\r\n var difference = this._difference;\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks && axisBreaks.length > 0) {\r\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\r\n var startValue = axisBreak.adjustedStartValue;\r\n var endValue = axisBreak.adjustedEndValue;\r\n if ($type.isNumber(startValue) && $type.isNumber(endValue)) {\r\n if (value < startValue) {\r\n return false;\r\n }\r\n if ($math.intersect({ start: startValue, end: endValue }, { start: min_1, end: max_1 })) { // todo: check this once and set some flag in axisBreak\r\n startValue = Math.max(startValue, min_1);\r\n endValue = Math.min(endValue, max_1);\r\n var breakSize = axisBreak.breakSize;\r\n // value to the right of break end\r\n if (value > endValue) {\r\n min_1 += (endValue - startValue) * (1 - breakSize); // todo: maybe this can be done differently?\r\n }\r\n // value to the left of break start\r\n else if (value < startValue) {\r\n }\r\n // value within break\r\n else {\r\n value = startValue + (value - startValue) * breakSize;\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n var position = void 0;\r\n if (!this.logarithmic) {\r\n position = (value - min_1) / difference;\r\n }\r\n else {\r\n var treatZeroAs = this.treatZeroAs;\r\n if ($type.isNumber(treatZeroAs)) {\r\n if (value <= treatZeroAs) {\r\n value = treatZeroAs;\r\n }\r\n }\r\n position = (Math.log(value) * Math.LOG10E - Math.log(this.min) * Math.LOG10E) / ((Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E));\r\n }\r\n //position = $math.round(position, 10);\r\n return position;\r\n }\r\n }\r\n return 0;\r\n };\r\n /**\r\n * When fontSize of fontFamily changes we need to hard-invalidate all Labels of this container to position them properly.\r\n */\r\n ValueAxis.prototype.invalidateLabels = function () {\r\n _super.prototype.invalidateLabels.call(this);\r\n if (this.dataItems) {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.value = undefined;\r\n });\r\n this.invalidate();\r\n }\r\n };\r\n /**\r\n * Converts an relative position to a corresponding value within\r\n * axis' scale.\r\n *\r\n * @param position Position (px)\r\n * @return Value\r\n */\r\n ValueAxis.prototype.positionToValue = function (position) {\r\n var min = this.min;\r\n var max = this.max;\r\n if ($type.isNumber(min) && $type.isNumber(max)) {\r\n var difference_1 = max - min; //no need to adjust!\r\n var value_2 = null;\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks) {\r\n // in case we have some axis breaks\r\n if (axisBreaks.length > 0) {\r\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\r\n var breakStartPosition = axisBreak.startPosition;\r\n var breakEndPosition = axisBreak.endPosition;\r\n var breakStartValue = axisBreak.adjustedStartValue;\r\n var breakEndValue = axisBreak.adjustedEndValue;\r\n if ($type.isNumber(breakStartValue) && $type.isNumber(breakEndValue)) {\r\n if (breakStartValue > max) {\r\n return false;\r\n }\r\n if ($math.intersect({ start: breakStartValue, end: breakEndValue }, { start: min, end: max })) {\r\n breakStartValue = $math.max(breakStartValue, min);\r\n breakEndValue = $math.min(breakEndValue, max);\r\n var breakSize = axisBreak.breakSize;\r\n difference_1 -= (breakEndValue - breakStartValue) * (1 - breakSize);\r\n // position to the right of break end\r\n if (position > breakEndPosition) {\r\n min += (breakEndValue - breakStartValue) * (1 - breakSize);\r\n }\r\n // position to the left of break start\r\n else if (position < breakStartPosition) {\r\n }\r\n // value within break\r\n else {\r\n var breakPosition = (position - breakStartPosition) / (breakEndPosition - breakStartPosition);\r\n value_2 = breakStartValue + breakPosition * (breakEndValue - breakStartValue);\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n if (!$type.isNumber(value_2)) {\r\n if (this.logarithmic) {\r\n value_2 = Math.pow(Math.E, (position * ((Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E)) + Math.log(this.min) * Math.LOG10E) / Math.LOG10E);\r\n }\r\n else {\r\n value_2 = position * difference_1 + min;\r\n }\r\n }\r\n return value_2;\r\n }\r\n //}\r\n };\r\n /**\r\n * Converts an X coordinate to a relative value in axis' scale.\r\n *\r\n * @param x X (px)\r\n * @return Value\r\n */\r\n ValueAxis.prototype.xToValue = function (x) {\r\n return this.positionToValue(this.pointToPosition({ x: x, y: 0 }));\r\n };\r\n /**\r\n * Converts an Y coordinate to a relative value in axis' scale.\r\n *\r\n * @param y Y (px)\r\n * @return Value\r\n */\r\n ValueAxis.prototype.yToValue = function (y) {\r\n return this.positionToValue(this.pointToPosition({ x: 0, y: y }));\r\n };\r\n /**\r\n * Converts pixel coordinates to a relative position. (0-1)\r\n *\r\n * @param point Coorinates (px)\r\n * @return Position (0-1)\r\n */\r\n ValueAxis.prototype.pointToPosition = function (point) {\r\n if (this.renderer instanceof AxisRendererY) {\r\n return 1 - this.renderer.pointToPosition(point);\r\n }\r\n else {\r\n return this.renderer.pointToPosition(point);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ValueAxis.prototype.animateMinMax = function (min, max) {\r\n return this.animate([{ property: \"_minAdjusted\", from: this._minAdjusted, to: min }, { property: \"_maxAdjusted\", from: this._maxAdjusted, to: max }], this.rangeChangeDuration, this.rangeChangeEasing);\r\n };\r\n /**\r\n * Calculates smallest and biggest value for the axis scale.\r\n * @ignore\r\n * @todo Description (review)\r\n */\r\n ValueAxis.prototype.getMinMax = function () {\r\n var _this = this;\r\n this.updateGridCount();\r\n var min = Number.POSITIVE_INFINITY;\r\n var max = Number.NEGATIVE_INFINITY;\r\n // only if min and max are not set from outside, we go through min and max influencers\r\n if (!$type.isNumber(this._minDefined) || !$type.isNumber(this._maxDefined)) {\r\n this.series.each(function (series) {\r\n if (!series.ignoreMinMax) {\r\n // check min\r\n var seriesMin = series.min(_this);\r\n if ($type.isNumber(seriesMin) && (seriesMin < min)) {\r\n min = seriesMin;\r\n }\r\n // check max\r\n var seriesMax = series.max(_this);\r\n if ($type.isNumber(seriesMax) && (seriesMax > max)) {\r\n max = seriesMax;\r\n }\r\n }\r\n });\r\n if (this.includeRangesInMinMax) {\r\n this.axisRanges.each(function (range) {\r\n if (!range.ignoreMinMax) {\r\n var minValue = $math.min(range.value, range.endValue);\r\n var maxValue = $math.max(range.value, range.endValue);\r\n if (minValue < min || !$type.isNumber(min)) {\r\n min = minValue;\r\n }\r\n if (maxValue > max || !$type.isNumber(max)) {\r\n max = maxValue;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n if (this.logarithmic) {\r\n var treatZeroAs = this.treatZeroAs;\r\n if ($type.isNumber(treatZeroAs)) {\r\n if (min <= 0) {\r\n min = treatZeroAs;\r\n }\r\n }\r\n if (min <= 0) {\r\n this.raiseCriticalError(new Error(\"Logarithmic value axis can not have values <= 0.\"), true);\r\n }\r\n }\r\n if (min == 0 && max == 0) {\r\n max = 0.9;\r\n min = -0.9;\r\n }\r\n // if defined from outside\r\n if ($type.isNumber(this._minDefined)) {\r\n min = this._minDefined;\r\n }\r\n if ($type.isNumber(this._maxDefined)) {\r\n max = this._maxDefined;\r\n }\r\n if (this._adapterO) {\r\n min = this._adapterO.apply(\"min\", min);\r\n }\r\n if (this._adapterO) {\r\n max = this._adapterO.apply(\"max\", max);\r\n }\r\n if (!$type.isNumber(min) || !$type.isNumber(max)) {\r\n return;\r\n }\r\n this._minReal = min;\r\n this._maxReal = max;\r\n if (min == Number.POSITIVE_INFINITY) {\r\n min = undefined;\r\n }\r\n if (max == Number.NEGATIVE_INFINITY) {\r\n max = undefined;\r\n }\r\n var dif = this.adjustDifference(min, max); // previously it was max-min, but not worked well\r\n min = this.fixMin(min);\r\n max = this.fixMax(max);\r\n // this happens if starLocation and endLocation are 0.5 and DateAxis has only one date\r\n if (max - min <= 1 / Math.pow(10, 15)) {\r\n if (max - min != 0) {\r\n this._deltaMinMax = (max - min) / 2;\r\n }\r\n else {\r\n // the number by which we need to raise 10 to get difference\r\n var exponent = Math.log(Math.abs(max)) * Math.LOG10E;\r\n // here we find a number which is power of 10 and has the same count of numbers as difference has\r\n var power = Math.pow(10, Math.floor(exponent));\r\n // reduce this number by 10 times\r\n power = power / 10;\r\n this._deltaMinMax = power;\r\n }\r\n min -= this._deltaMinMax;\r\n max += this._deltaMinMax;\r\n }\r\n min -= (max - min) * this.extraMin;\r\n max += (max - min) * this.extraMax;\r\n var strict = this.strictMinMax;\r\n if ($type.isNumber(this._maxDefined)) {\r\n strict = true;\r\n }\r\n var minMaxStep = this.adjustMinMax(min, max, dif, this._gridCount, strict);\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n dif = max - min; //new\r\n // do it for the second time (importat!)\r\n minMaxStep = this.adjustMinMax(min, max, max - min, this._gridCount, true);\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n // return min max if strict\r\n if (this.strictMinMax) {\r\n if ($type.isNumber(this._minDefined)) {\r\n min = this._minDefined;\r\n }\r\n else {\r\n min = this._minReal;\r\n }\r\n if ($type.isNumber(this._maxDefined)) {\r\n max = this._maxDefined;\r\n }\r\n else {\r\n max = this._maxReal;\r\n }\r\n if (max - min <= 0.00000001) {\r\n min -= this._deltaMinMax;\r\n max += this._deltaMinMax;\r\n }\r\n min -= (max - min) * this.extraMin;\r\n max += (max - min) * this.extraMax;\r\n }\r\n if (this._adapterO) {\r\n min = this._adapterO.apply(\"min\", min);\r\n }\r\n if (this._adapterO) {\r\n max = this._adapterO.apply(\"max\", max);\r\n }\r\n this._step = minMaxStep.step;\r\n if (!$type.isNumber(min) && !$type.isNumber(max)) {\r\n this.start = 0;\r\n this.end = 1;\r\n this.renderer.labels.each(function (label) {\r\n label.dataItem.text = \"\";\r\n });\r\n }\r\n // checking isNumber is good when all series are hidden\r\n if ((this._minAdjusted != min || this._maxAdjusted != max) && $type.isNumber(min) && $type.isNumber(max)) {\r\n var animation = this._minMaxAnimation;\r\n if (this._extremesChanged && $type.isNumber(this._minAdjusted) && $type.isNumber(this._maxAdjusted) && this.inited) {\r\n if ((animation && !animation.isFinished()) && this._finalMax == max && this._finalMin == min) {\r\n return;\r\n }\r\n else {\r\n this._finalMin = min;\r\n this._finalMax = max;\r\n animation = this.animateMinMax(min, max);\r\n if (animation && !animation.isFinished()) {\r\n animation.events.on(\"animationprogress\", this.validateDataItems, this);\r\n animation.events.on(\"animationended\", function () {\r\n //this.validateDataItems();\r\n _this.series.each(function (series) {\r\n series.validate();\r\n });\r\n _this.validateDataItems();\r\n _this.handleSelectionExtremesChange();\r\n });\r\n this._minMaxAnimation = animation;\r\n }\r\n else {\r\n this.series.each(function (series) {\r\n series.invalidate();\r\n });\r\n }\r\n this.validateDataItems();\r\n this.dispatchImmediately(\"extremeschanged\");\r\n this.handleSelectionExtremesChange();\r\n }\r\n }\r\n else {\r\n if ((animation && !animation.isFinished()) && this._finalMax == max && this._finalMin == min) {\r\n return;\r\n }\r\n else {\r\n this._minAdjusted = min;\r\n this._maxAdjusted = max;\r\n this._finalMin = min;\r\n this._finalMax = max;\r\n this.invalidateDataItems();\r\n this.dispatchImmediately(\"extremeschanged\");\r\n this._saveMinMax(min, max);\r\n }\r\n }\r\n }\r\n this._extremesChanged = false;\r\n this._difference = this.adjustDifference(min, max);\r\n };\r\n /**\r\n * Adjusts the minimum value.\r\n *\r\n * This is a placeholder method for extending classes to override.\r\n *\r\n * For numeric values this does nothing, however for more complex types, like\r\n * dates, it may be necessary to adjust.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\r\n ValueAxis.prototype.fixMin = function (value) {\r\n return value;\r\n };\r\n /**\r\n * Adjusts the maximum value.\r\n *\r\n * This is a placeholder method for extending classes to override.\r\n *\r\n * For numeric values this does nothing, however for more complex types, like\r\n * dates, it may be necessary to adjust.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\r\n ValueAxis.prototype.fixMax = function (value) {\r\n return value;\r\n };\r\n /**\r\n * Adjusts actual min and max scale values so that the axis starts and ends\r\n * at \"nice\" values, unless `strictMinMax` is set.\r\n *\r\n * The `difference` can be something else than `max - min`, because of the\r\n * axis breaks.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param min [description]\r\n * @param max [description]\r\n * @param difference [description]\r\n * @param gridCount [description]\r\n * @param strictMode [description]\r\n * @return [description]\r\n */\r\n ValueAxis.prototype.adjustMinMax = function (min, max, difference, gridCount, strictMode) {\r\n // will fail if 0\r\n if (gridCount <= 1) {\r\n gridCount = 1;\r\n }\r\n gridCount = Math.round(gridCount);\r\n var initialMin = min;\r\n var initialMax = max;\r\n // in case min and max is the same, use max\r\n if (difference === 0) {\r\n difference = Math.abs(max);\r\n }\r\n // the number by which we need to raise 10 to get difference\r\n var exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\r\n // here we find a number which is power of 10 and has the same count of numbers as difference has\r\n var power = Math.pow(10, Math.floor(exponent));\r\n // reduce this number by 10 times\r\n power = power / 10;\r\n var extra = power;\r\n if (strictMode) {\r\n extra = 0;\r\n }\r\n if (!this.logarithmic) {\r\n // round down min\r\n if (strictMode) {\r\n min = Math.floor(min / power) * power;\r\n // round up max\r\n max = Math.ceil(max / power) * power;\r\n }\r\n else {\r\n min = Math.ceil(min / power) * power - extra;\r\n // round up max\r\n max = Math.floor(max / power) * power + extra;\r\n }\r\n // don't let min go below 0 if real min is >= 0\r\n if (min < 0 && initialMin >= 0) {\r\n min = 0;\r\n }\r\n // don't let max go above 0 if real max is <= 0\r\n if (max > 0 && initialMax <= 0) {\r\n max = 0;\r\n }\r\n }\r\n else {\r\n if (min <= 0) {\r\n //throw Error(\"Logarithmic value axis can not have values <= 0.\");\r\n min = this.baseValue;\r\n }\r\n // @todo: think of a better way or to restrict zooming when no series are selected\r\n if (min == Infinity) {\r\n min = 1;\r\n }\r\n if (max == -Infinity) {\r\n max = 10;\r\n }\r\n if (this.strictMinMax) {\r\n if (this._minDefined > 0) {\r\n min = this._minDefined;\r\n }\r\n else {\r\n min = min;\r\n }\r\n if (this._maxDefined > 0) {\r\n max = max;\r\n }\r\n }\r\n else {\r\n min = Math.pow(10, Math.floor(Math.log(Math.abs(min)) * Math.LOG10E));\r\n max = Math.pow(10, Math.ceil(Math.log(Math.abs(max)) * Math.LOG10E));\r\n }\r\n }\r\n // repeat diff, exponent and power again with rounded values\r\n //difference = this.adjustDifference(min, max);\r\n /*\r\n\r\n if(min > initialMin){\r\n min = initialMin;\r\n }\r\n\r\n if(max < initialMax){\r\n max = initialMax;\r\n }\r\n */\r\n exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\r\n power = Math.pow(10, Math.floor(exponent));\r\n power = power / 10;\r\n // approximate difference between two grid lines\r\n var step = Math.ceil((difference / gridCount) / power) * power;\r\n var stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\r\n // TODO: in v3 I had fixStepE here, ommiting it for a while, need to think about other solution\r\n // the step should divide by 2, 5, and 10.\r\n var stepDivisor = Math.ceil(step / stepPower); // number 0 - 10\r\n if (stepDivisor > 5) {\r\n stepDivisor = 10;\r\n }\r\n else if (stepDivisor <= 5 && stepDivisor > 2) {\r\n stepDivisor = 5;\r\n }\r\n // now get real step\r\n step = Math.ceil(step / (stepPower * stepDivisor)) * stepPower * stepDivisor;\r\n if (this.maxPrecision < Number.MAX_VALUE && step != $math.ceil(step, this.maxPrecision)) {\r\n step = $math.ceil(step, this.maxPrecision);\r\n }\r\n var decCount = 0;\r\n // in case numbers are smaller than 1\r\n if (stepPower < 1) {\r\n // exponent is less then 1 too. Count decimals of exponent\r\n decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 1;\r\n // round step\r\n step = $math.round(step, decCount);\r\n }\r\n if (!this.logarithmic) {\r\n // final min and max\r\n var minCount = Math.floor(min / step);\r\n min = $math.round(step * minCount, decCount);\r\n var maxCount = void 0;\r\n if (!strictMode) {\r\n maxCount = Math.ceil(max / step);\r\n }\r\n else {\r\n maxCount = Math.floor(max / step);\r\n }\r\n if (maxCount == minCount) {\r\n maxCount++;\r\n }\r\n max = $math.round(step * maxCount, decCount);\r\n if (max < initialMax) {\r\n max = max + step;\r\n }\r\n if (min > initialMin) {\r\n min = min - step;\r\n }\r\n }\r\n return { min: min, max: max, step: step };\r\n };\r\n Object.defineProperty(ValueAxis.prototype, \"min\", {\r\n /**\r\n * @return Min value\r\n */\r\n get: function () {\r\n var min = this._minAdjusted;\r\n if (!$type.isNumber(min)) {\r\n min = this._minDefined;\r\n }\r\n return min;\r\n },\r\n /**\r\n * A minimum value for the axis scale.\r\n *\r\n * This value might be auto-adjusted by the Axis in order to accomodate the\r\n * grid nicely, i.e. plot area is divided by grid in nice equal cells.\r\n *\r\n * The above might be overridden by `strictMinMax` which will force exact\r\n * user-defined min and max values to be used for scale.\r\n *\r\n * @param value Min value\r\n */\r\n set: function (value) {\r\n if (this._minDefined != value) {\r\n this._minDefined = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"minDefined\", {\r\n /**\r\n * Min value as defined by user's code, not auto-calculated.\r\n *\r\n * @readonly\r\n * @return Min value\r\n */\r\n get: function () {\r\n return this._minDefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"maxDefined\", {\r\n /**\r\n * Max value as defined by user's code, not auto-calculated.\r\n *\r\n * @readonly\r\n * @return Man value\r\n */\r\n get: function () {\r\n return this._maxDefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"extraMin\", {\r\n /**\r\n * @return {number}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"extraMin\");\r\n },\r\n /**\r\n * Allows relatively adjusting minimum value of the axis' scale.\r\n *\r\n * The value is relative to the actual range of values currently displayed\r\n * on the axis.\r\n *\r\n * E.g.: 0.5 will mean half of the current range. If we have axis displaying\r\n * from 100 to 200, we will now have axis displaying from 50 to 200 because\r\n * we asked to expand minimum value by 50% (0.5).\r\n *\r\n * NOTE: this setting is not compatible with `strictMinMax`.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"extraMin\", value)) {\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"extraMax\", {\r\n /**\r\n * @return Min multiplier\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"extraMax\");\r\n },\r\n /**\r\n * Allows relatively adjusting maximum value of the axis' scale.\r\n *\r\n * The value is relative to the actual range of values currently displayed\r\n * on the axis.\r\n *\r\n * E.g.: 0.5 will mean half of the current range. If we have axis displaying\r\n * from 100 to 200, we will now have axis displaying from 100 to 250 because\r\n * we asked to expand maximum value by 50% (0.5).\r\n *\r\n * NOTE: this setting is not compatible with `strictMinMax`.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"extraMax\", value)) {\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"step\", {\r\n /**\r\n * Current calculated delta in values between two adjacent grid lines (step).\r\n *\r\n * This is a read-only value and cannot be used to set actual step.\r\n *\r\n * @readonly\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/#Setting_the_density_of_the_the_grid_labels} For more information about modifying density of labels\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._step;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"max\", {\r\n /**\r\n * @return Max value\r\n */\r\n get: function () {\r\n var max = this._maxAdjusted;\r\n if (!$type.isNumber(max)) {\r\n max = this._maxDefined;\r\n }\r\n return max;\r\n },\r\n /**\r\n * A maximum value for the axis scale.\r\n *\r\n * This value might be auto-adjusted by the Axis in order to accomodate the\r\n * grid nicely, i.e. plot area is divided by grid in nice equal cells.\r\n *\r\n * The above might be overridden by `strictMinMax` which will force exact\r\n * user-defined min and max values to be used for scale.\r\n *\r\n * @param value Max value\r\n */\r\n set: function (value) {\r\n if (this._maxDefined != value) {\r\n this._maxDefined = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"adjustLabelPrecision\", {\r\n /**\r\n * @return Adjust precision\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"adjustLabelPrecision\");\r\n },\r\n /**\r\n * By default the axis will adjust precision of all numbers to match number\r\n * of decimals in all its labels, e.g.: `1.0`, `1.5`, `2.0`.\r\n *\r\n * To disable set `adjustLabelPrecision` to `false`, to use whatever other\r\n * precision or number format settings are set.\r\n *\r\n * IMPORTANT: This setting will be ignored if your number format uses\r\n * modifiers, e.g. `\"#a\"`.\r\n *\r\n * @default true\r\n * @since 4.9.14\r\n * @param value Adjust precision\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"adjustLabelPrecision\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Used for the Series to register itself as the user of this Axis.\r\n *\r\n * This will also decorate both the Series and Axis with event handlers, used\r\n * to redraw on Axis position/zoom change.\r\n *\r\n * A disposer for those events is returned, so that they can be disposed\r\n * together with Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param series Series\r\n * @return Disposer for events\r\n */\r\n ValueAxis.prototype.registerSeries = function (series) {\r\n return new MultiDisposer([\r\n _super.prototype.registerSeries.call(this, series),\r\n series.events.on(\"extremeschanged\", this.handleExtremesChange, this, false),\r\n series.events.on(\"selectionextremeschanged\", this.handleSelectionExtremesChange, this, false),\r\n this.events.on(\"extremeschanged\", series.invalidate, series, false)\r\n ]);\r\n };\r\n /**\r\n * Perform tasks after Axis zoom.\r\n */\r\n ValueAxis.prototype.handleSelectionExtremesChange = function () {\r\n var _this = this;\r\n var selectionMin;\r\n var selectionMax;\r\n var allHidden = true;\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (!series.ignoreMinMax && !series.isHidden && !series.outOfRange) {\r\n if (series.visible && !series.isHiding) {\r\n allHidden = false;\r\n }\r\n var seriesSelectionMin = series.selectionMin(_this);\r\n var seriesSelectionMax = series.selectionMax(_this);\r\n if ($type.isNumber(seriesSelectionMin)) {\r\n if (!$type.isNumber(selectionMin) || (seriesSelectionMin < selectionMin)) {\r\n selectionMin = seriesSelectionMin;\r\n }\r\n }\r\n // check max\r\n if ($type.isNumber(seriesSelectionMax)) {\r\n if (!$type.isNumber(selectionMax) || (seriesSelectionMax > selectionMax)) {\r\n selectionMax = seriesSelectionMax;\r\n }\r\n }\r\n }\r\n });\r\n if (this.includeRangesInMinMax) {\r\n this.axisRanges.each(function (range) {\r\n if (!range.ignoreMinMax) {\r\n var minValue = $math.min(range.value, range.endValue);\r\n var maxValue = $math.max(range.value, range.endValue);\r\n if (minValue < selectionMin) {\r\n selectionMin = minValue;\r\n }\r\n if (maxValue > selectionMax) {\r\n selectionMax = maxValue;\r\n }\r\n }\r\n });\r\n }\r\n // this is not good, as if date axis is initially zoomed, selection of y axis is reset to 0, 1 at the end of this method\r\n //$iter.each(this.series.iterator(), (series) => {\r\n //\tif (!series.appeared) {\r\n //\t\tallHidden = true;\r\n //\t}\r\n //})\r\n if ($type.isNumber(this._minDefined)) {\r\n if (this.strictMinMax) {\r\n selectionMin = this._minDefined;\r\n }\r\n else {\r\n selectionMin = this.min;\r\n }\r\n }\r\n else if (this.strictMinMax) {\r\n selectionMin = this._minReal;\r\n }\r\n if ($type.isNumber(this._maxDefined)) {\r\n if (this.strictMinMax) {\r\n selectionMax = this._maxDefined;\r\n }\r\n else {\r\n selectionMax = this.max;\r\n }\r\n }\r\n else if (this.strictMinMax) {\r\n selectionMax = this._maxReal;\r\n }\r\n if (selectionMin == selectionMax) {\r\n selectionMin -= this._deltaMinMax;\r\n selectionMax += this._deltaMinMax;\r\n var minMaxStep2 = this.adjustMinMax(selectionMin, selectionMax, 0, this._gridCount, this.strictMinMax);\r\n selectionMin = minMaxStep2.min;\r\n selectionMax = minMaxStep2.max;\r\n }\r\n var dif = this.adjustDifference(selectionMin, selectionMax);\r\n var minMaxStep = this.adjustMinMax(selectionMin, selectionMax, dif, this._gridCount);\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n selectionMin -= (selectionMax - selectionMin) * this.extraMin;\r\n selectionMax += (selectionMax - selectionMin) * this.extraMax;\r\n selectionMin = $math.fitToRange(selectionMin, this.min, this.max);\r\n selectionMax = $math.fitToRange(selectionMax, this.min, this.max);\r\n // do it for the second time !important\r\n dif = this.adjustDifference(selectionMin, selectionMax);\r\n minMaxStep = this.adjustMinMax(selectionMin, selectionMax, dif, this._gridCount, true);\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n if (this.strictMinMax) {\r\n selectionMin = $math.max(selectionMin, this._minDefined);\r\n selectionMax = $math.min(selectionMax, this._maxDefined);\r\n }\r\n var step = minMaxStep.step;\r\n if (this.syncWithAxis) {\r\n minMaxStep = this.syncAxes(selectionMin, selectionMax, step);\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n this.invalidate();\r\n }\r\n step = minMaxStep.step;\r\n // needed because of grouping\r\n this._difference = this.adjustDifference(this.min, this.max);\r\n var start = this.valueToPosition(selectionMin);\r\n var end = this.valueToPosition(selectionMax);\r\n // in case all series are hidden or hiding, full zoomout\r\n if (allHidden && !this.syncWithAxis) {\r\n start = 0;\r\n end = 1;\r\n }\r\n var declination = 0;\r\n if (this.syncWithAxis) {\r\n declination = 5;\r\n this.setCache(selectionMin + \"-\" + selectionMax, step);\r\n }\r\n else {\r\n if (this._step != step || this._minZoomed != selectionMin || this._maxZoomed != selectionMax) {\r\n this._dsc = true;\r\n }\r\n this._step = step;\r\n this._minZoomed = selectionMin;\r\n this._maxZoomed = selectionMax;\r\n }\r\n if (!this.keepSelection) {\r\n this.zoom({ start: start, end: end }, false, false, declination);\r\n }\r\n };\r\n Object.defineProperty(ValueAxis.prototype, \"strictMinMax\", {\r\n /**\r\n * @return Use exact values?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strictMinMax\");\r\n },\r\n /**\r\n * Indicates whether to blindly use exact `min` and `max` values set by user\r\n * when generating Axis scale.\r\n *\r\n * If not set, the Axis might slightly adjust those values to accomodate a\r\n * better looking grid.\r\n *\r\n * NOTE: if `min` and `max` are not set, setting `strictMinMax` to `true`\r\n * will result in fixing the scale of the axis to actual lowest and highest\r\n * values in the series within currently selected scope.\r\n *\r\n * @default false\r\n * @param value Use exact values?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"strictMinMax\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"logarithmic\", {\r\n /**\r\n * @return Logarithmic scale?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"logarithmic\");\r\n },\r\n /**\r\n * Indicates if this axis should use a logarithmic scale.\r\n *\r\n * Please note that logarithmic axis can **only** accommodate values bigger\r\n * than zero.\r\n *\r\n * Having zero or negative values will result in error and failure of the\r\n * whole chart.\r\n *\r\n * @param value Logarithmic scale?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"logarithmic\", value)) {\r\n this.invalidate();\r\n this.series.each(function (series) {\r\n series.invalidateDataItems();\r\n });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"keepSelection\", {\r\n /**\r\n * @return Preseve zoom after data update?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"keepSelection\");\r\n },\r\n /**\r\n * Indicates if a current selection (zoom) should be kept across data updates.\r\n *\r\n * If your axis is zoomed while chart's data is updated, the axis will try\r\n * to retain the same start and end values.\r\n *\r\n * You can also use this to initially pre-zoom axis:\r\n *\r\n * ```TypeScript\r\n * axis.keepSelection = true;\r\n * axis.start = 0.5;\r\n * axis.end = 0.7;\r\n * ```\r\n * ```JavaScript\r\n * axis.keepSelection = true;\r\n * axis.start = 0.5;\r\n * axis.end = 0.7;\r\n * ```\r\n * ```JSON\r\n * {\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"keepSelection\": true,\r\n * \"start\": 0.5,\r\n * \"end\": 0.7\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will start the chart zoomed from the middle of the actual scope\r\n * to 70%.\r\n *\r\n * @since 4.1.1\r\n * @default false\r\n * @param value Preseve zoom after data update?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"keepSelection\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"includeRangesInMinMax\", {\r\n /**\r\n * @return Include ranges?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"includeRangesInMinMax\");\r\n },\r\n /**\r\n * If set to `true`, values of axis ranges will be included when calculating\r\n * range of values / scale of the [[ValueAxis]].\r\n *\r\n * @default false\r\n * @since 4.4.9\r\n * @param value Include ranges?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"includeRangesInMinMax\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"maxPrecision\", {\r\n /**\r\n * @return max precision\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxPrecision\");\r\n },\r\n /**\r\n * Maximum number of decimals to allow when placing grid lines and labels\r\n * on axis.\r\n *\r\n * Set it to `0` (zero) to force integer-only axis labels.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"maxPrecision\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"extraTooltipPrecision\", {\r\n /**\r\n * @return Extra decimals\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"extraTooltipPrecision\");\r\n },\r\n /**\r\n * This setting allows using bigger precision for numbers displayed in axis\r\n * tooltip.\r\n *\r\n * Please note that this setting indicates additional decimal places to\r\n * automatically-calculated axis number precision.\r\n *\r\n * So if your axis displays numbers like 0.1, 0.2, etc. (one decimal place),\r\n * and you set `extraTooltipPrecision = 1`, tooltips will display numbers\r\n * like 0.12, 0.25, etc. (two decimal places).\r\n *\r\n * @default 0\r\n * @since 4.8.3\r\n * @param value Extra decimals\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"extraTooltipPrecision\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Invalidates axis data items when series extremes change\r\n */\r\n ValueAxis.prototype.handleExtremesChange = function () {\r\n var _this = this;\r\n this._extremesChanged = true;\r\n this.getMinMax();\r\n if (this.ghostLabel) {\r\n var mw_1 = 0;\r\n this.dataItems.each(function (dataItem) {\r\n if (dataItem.label && dataItem.label.pixelWidth > mw_1) {\r\n _this.ghostLabel.text = dataItem.label.currentText;\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Returns relative position on axis for series' data item's value.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey ?\r\n * @return X coordinate (px)\r\n */\r\n ValueAxis.prototype.getX = function (dataItem, key, location, stackKey, range) {\r\n return this.renderer.positionToPoint(this.getPositionX(dataItem, key, location, stackKey, range)).x;\r\n };\r\n /**\r\n * Returns the X coordinate for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey ?\r\n * @return Relative position\r\n */\r\n ValueAxis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\r\n var value = dataItem.getWorkingValue(key);\r\n if (!$type.hasValue(stackKey)) {\r\n stackKey = \"valueX\";\r\n }\r\n var stack = dataItem.getValue(stackKey, \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n if (this.logarithmic) {\r\n if (stack > 0) {\r\n value = 0;\r\n }\r\n }\r\n }\r\n var position = this.valueToPosition(value + stack);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns the Y coordinate for series' data item's value.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @return Y coordinate (px)\r\n */\r\n ValueAxis.prototype.getY = function (dataItem, key, location, stackKey, range) {\r\n return this.renderer.positionToPoint(this.getPositionY(dataItem, key, location, stackKey, range)).y;\r\n };\r\n /**\r\n * Returns relative position on axis for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @return Relative position\r\n */\r\n ValueAxis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\r\n var value = dataItem.getWorkingValue(key);\r\n if (!$type.hasValue(stackKey)) {\r\n stackKey = \"valueY\";\r\n }\r\n var stack = dataItem.getValue(stackKey, \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n if (this.logarithmic) {\r\n if (stack > 0) {\r\n value = 0;\r\n }\r\n }\r\n }\r\n var position = this.valueToPosition(value + stack);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns an angle for series data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @param range Range to fit in\r\n * @return Angle\r\n */\r\n ValueAxis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\r\n var value = dataItem.getWorkingValue(key);\r\n var stack = dataItem.getValue(stackKey, \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n }\r\n var position = this.valueToPosition(value + stack);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return this.positionToAngle(position);\r\n };\r\n /**\r\n * [getAnyRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param start [description]\r\n * @param end [description]\r\n * @param location [description]\r\n * @return [description]\r\n */\r\n ValueAxis.prototype.getAnyRangePath = function (start, end, location) {\r\n var startPosition = this.valueToPosition(start);\r\n var endPosition = this.valueToPosition(end);\r\n return this.getPositionRangePath(startPosition, endPosition); // Base class (Axis) gets range shape from AxisRenderer\r\n };\r\n /**\r\n * Returns text to show in a axis tooltip, based on specific position within\r\n * axis.\r\n *\r\n * The label will be formatted as per [[NumberFormatter]] set for the whole\r\n * chart, or explicitly for this Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (px)\r\n * @return Label (numeric value)\r\n */\r\n ValueAxis.prototype.getTooltipText = function (position) {\r\n var value = $math.round(this.positionToValue(position), this._stepDecimalPlaces + this.extraTooltipPrecision);\r\n var valueStr = this.tooltip.numberFormatter.format(value);\r\n if (!this._adapterO) {\r\n return valueStr;\r\n }\r\n else {\r\n return this._adapterO.apply(\"getTooltipText\", valueStr);\r\n }\r\n };\r\n /**\r\n * Zooms axis to specific values.\r\n *\r\n * @param startValue Start value\r\n * @param endValue End value\r\n * @param skipRangeEvent Do not invoke events\r\n * @param instantly Do not play zoom animations\r\n */\r\n ValueAxis.prototype.zoomToValues = function (startValue, endValue, skipRangeEvent, instantly) {\r\n var start = (startValue - this.min) / (this.max - this.min);\r\n var end = (endValue - this.min) / (this.max - this.min);\r\n this.zoom({ start: start, end: end }, skipRangeEvent, instantly);\r\n };\r\n Object.defineProperty(ValueAxis.prototype, \"minZoomed\", {\r\n /**\r\n * A smallest value in axis scale within current zoom.\r\n *\r\n * @return Min zoom value\r\n */\r\n get: function () {\r\n if (!this.syncWithAxis) {\r\n return $math.max(this.min, this._minZoomed);\r\n }\r\n else {\r\n return this._minZoomed;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"maxZoomed\", {\r\n /**\r\n * A biggest value in axis scale within current zoom.\r\n * @return [description]\r\n */\r\n get: function () {\r\n if (!this.syncWithAxis) {\r\n return $math.min(this.max, this._maxZoomed);\r\n }\r\n else {\r\n return this._maxZoomed;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates positioning of Axis breaks after something changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ValueAxis.prototype.fixAxisBreaks = function () {\r\n var _this = this;\r\n _super.prototype.fixAxisBreaks.call(this);\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks && axisBreaks.length > 0) {\r\n // process breaks\r\n axisBreaks.each(function (axisBreak) {\r\n var startValue = axisBreak.adjustedStartValue;\r\n var endValue = axisBreak.adjustedEndValue;\r\n // break difference\r\n var axisBreakDif = endValue - startValue;\r\n var axisBreakGridCount = Math.ceil(axisBreakDif * axisBreak.breakSize) * _this._gridCount / (_this.max - _this.min);\r\n // calculate min, max and step for axis break\r\n var breakMinMaxStep = _this.adjustMinMax(startValue, endValue, axisBreakDif, axisBreakGridCount, true);\r\n axisBreak.adjustedStep = breakMinMaxStep.step;\r\n axisBreak.adjustedMin = breakMinMaxStep.min;\r\n axisBreak.adjustedMax = breakMinMaxStep.max;\r\n });\r\n }\r\n this._difference = this.adjustDifference(this.min, this.max);\r\n };\r\n /**\r\n * Returns value based on position.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\r\n ValueAxis.prototype.getPositionLabel = function (position) {\r\n var value = this.positionToValue(position);\r\n return this.numberFormatter.format(value);\r\n };\r\n /**\r\n * Shows Axis tooltip at specific value\r\n *\r\n * @param value Value\r\n */\r\n ValueAxis.prototype.showTooltipAt = function (value) {\r\n this.showTooltipAtPosition(this.valueToPosition(value));\r\n };\r\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\r\n ValueAxis.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.min = source.min;\r\n this.max = source.max;\r\n this.calculateTotals = source.calculateTotals;\r\n this._baseValue = source.baseValue;\r\n };\r\n Object.defineProperty(ValueAxis.prototype, \"syncWithAxis\", {\r\n /**\r\n * @return Target axis\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"syncWithAxis\");\r\n },\r\n /**\r\n * Enables syncing of grid with another axis.\r\n *\r\n * To enable, set to a reference of the other `ValueAxis`. This axis will try\r\n * to maintain its scale in such way that its grid matches target axis grid.\r\n *\r\n * IMPORTANT #1: At this stage it's an experimental feature. Use it at your\r\n * own risk, as it may not work in 100% of the scenarios.\r\n *\r\n * IMPORTANT #2: `syncWithAxis` is not compatible with `strictMinMax` and\r\n * `sequencedInterpolation` settings.\r\n *\r\n * IMPORTANT #3: `syncWithAxis` is not compatible with scrollbars. Make sure\r\n * you do not add a scrollbar in the same direction as synced axes. For\r\n * example, if you have vertical synced axes, do not add `scrollbarY` on\r\n * your chart. It will create anomalies when used.\r\n *\r\n * IMPORTANT #4: `syncWithAxis` is not compatible with `XYCursor` if it has\r\n * its `behavior` set to either `zoomY` or `zoomXY`.\r\n *\r\n * @since 4.8.1\r\n * @param axis Target axis\r\n */\r\n set: function (axis) {\r\n var _this = this;\r\n if (this.setPropertyValue(\"syncWithAxis\", axis, true)) {\r\n if (axis) {\r\n this._disposers.push(axis.events.on(\"extremeschanged\", this.handleSelectionExtremesChange, this, false));\r\n this._disposers.push(axis.events.on(\"selectionextremeschanged\", this.handleSelectionExtremesChange, this, false));\r\n this._disposers.push(axis.events.on(\"startendchanged\", this.handleSelectionExtremesChange, this, false));\r\n this.events.on(\"shown\", this.handleSelectionExtremesChange, this, false);\r\n this.events.on(\"maxsizechanged\", function () {\r\n _this.clearCache();\r\n _this._disposers.push(registry.events.once(\"exitframe\", function () {\r\n _this.handleSelectionExtremesChange();\r\n }));\r\n }, this, false);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"treatZeroAs\", {\r\n /**\r\n * @return Zero replacement value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"treatZeroAs\");\r\n },\r\n /**\r\n * If set, zero values will be treated as this value.\r\n *\r\n * It is useful if you need to use data with zero-values on a logarithmic\r\n * axis scale.\r\n *\r\n * @since 4.9.34\r\n * @param value Zero replacement value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"treatZeroAs\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Syncs with a target axis.\r\n *\r\n * @param min Min\r\n * @param max Max\r\n * @param step Step\r\n */\r\n ValueAxis.prototype.syncAxes = function (min, max, step) {\r\n var axis = this.syncWithAxis;\r\n if (axis) {\r\n if (!$type.isNumber(min)) {\r\n min = this.min;\r\n }\r\n if (!$type.isNumber(max)) {\r\n max = this.max;\r\n }\r\n if (!$type.isNumber(step)) {\r\n step = this._step;\r\n }\r\n var count = Math.round((axis.maxZoomed - axis.minZoomed) / axis.step);\r\n var currentCount = Math.round((max - min) / step);\r\n if ($type.isNumber(count) && $type.isNumber(currentCount)) {\r\n var synced = false;\r\n var c = 0;\r\n var diff = (max - min) * 0.01;\r\n var omin = min;\r\n var omax = max;\r\n var ostep = step;\r\n while (synced != true) {\r\n synced = this.checkSync(omin, omax, ostep, count);\r\n c++;\r\n if (c > 1000) {\r\n synced = true;\r\n }\r\n if (!synced) {\r\n //omin = min - diff * c;\r\n if (c / 3 == Math.round(c / 3)) {\r\n omin = min - diff * c;\r\n if (min >= 0 && omin < 0) {\r\n omin = 0;\r\n }\r\n }\r\n else {\r\n omax = max + diff * c;\r\n if (omax <= 0 && omax > 0) {\r\n omax = 0;\r\n }\r\n }\r\n var minMaxStep = this.adjustMinMax(omin, omax, omax - omin, this._gridCount, true);\r\n omin = minMaxStep.min;\r\n omax = minMaxStep.max;\r\n ostep = minMaxStep.step;\r\n }\r\n else {\r\n min = omin;\r\n max = omax;\r\n step = ostep;\r\n }\r\n }\r\n }\r\n }\r\n return { min: min, max: max, step: step };\r\n };\r\n /**\r\n * Returns `true` if axis needs to be resunced with some other axis.\r\n */\r\n ValueAxis.prototype.checkSync = function (min, max, step, count) {\r\n var currentCount = (max - min) / step;\r\n for (var i = 1; i < count; i++) {\r\n if ($math.round(currentCount / i, 1) == count || currentCount * i == count) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n ValueAxis.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up axes\r\n if ($type.hasValue(config.syncWithAxis) && $type.isString(config.syncWithAxis)) {\r\n if (this.map.hasKey(config.syncWithAxis)) {\r\n config.syncWithAxis = this.map.getKey(config.syncWithAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[ValueAxis] No axis with id \\\"\" + config.syncWithAxis + \"\\\" found for `syncWithAxis`\");\r\n delete config.xAxis;\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n ValueAxis.prototype._saveMinMax = function (_min, _max) {\r\n };\r\n return ValueAxis;\r\n}(Axis));\r\nexport { ValueAxis };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ValueAxis\"] = ValueAxis;\r\nregistry.registeredClasses[\"ValueAxisDataItem\"] = ValueAxisDataItem;\r\n","/**\r\n * DateAxisBreak includes functionality to add breaks on a [[DateAxis]].\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * weekends and holidays out of the Date-based axis.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ValueAxisBreak } from \"./ValueAxisBreak\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to define breaks for [[DateAxis]].\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * weekends and holidays out of the Date-based axis.\r\n *\r\n * @see {@link IDateAxisBreakEvents} for a list of available events\r\n * @see {@link IDateAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar DateAxisBreak = /** @class */ (function (_super) {\r\n __extends(DateAxisBreak, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DateAxisBreak() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"DateAxisBreak\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(DateAxisBreak.prototype, \"startDate\", {\r\n /**\r\n * @return Start date\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startDate\");\r\n },\r\n /**\r\n * Starting date for the break.\r\n *\r\n * @param value Start date\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startDate\", value)) {\r\n this.startValue = value.getTime();\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxisBreak.prototype, \"endDate\", {\r\n /**\r\n * @return End date\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endDate\");\r\n },\r\n /**\r\n * Ending date for the break.\r\n *\r\n * @param value End date\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endDate\", value)) {\r\n this.endValue = value.getTime();\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DateAxisBreak;\r\n}(ValueAxisBreak));\r\nexport { DateAxisBreak };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DateAxisBreak\"] = DateAxisBreak;\r\n","/**\r\n * DateAxis module\r\n */\r\nimport { __assign, __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ValueAxis, ValueAxisDataItem } from \"./ValueAxis\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { DateAxisBreak } from \"./DateAxisBreak\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $time from \"../../core/utils/Time\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { OrderedListTemplate } from \"../../core/utils/SortedList\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines data item for [[DateAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar DateAxisDataItem = /** @class */ (function (_super) {\r\n __extends(DateAxisDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DateAxisDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"DateAxisDataItem\";\r\n _this.applyTheme();\r\n _this.values.date = {};\r\n _this.values.endDate = {};\r\n return _this;\r\n }\r\n Object.defineProperty(DateAxisDataItem.prototype, \"date\", {\r\n /**\r\n * @return Date\r\n */\r\n get: function () {\r\n return this.dates[\"date\"];\r\n },\r\n /**\r\n * Date position of the data item.\r\n *\r\n * @param date Date\r\n */\r\n set: function (date) {\r\n this.setDate(\"date\", date);\r\n this.value = date.getTime();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxisDataItem.prototype, \"endDate\", {\r\n /**\r\n * @return End date\r\n */\r\n get: function () {\r\n return this.dates[\"endDate\"];\r\n },\r\n /**\r\n * End date for data item.\r\n *\r\n * @param date End date\r\n */\r\n set: function (date) {\r\n this.setDate(\"endDate\", date);\r\n this.endValue = date.getTime();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DateAxisDataItem;\r\n}(ValueAxisDataItem));\r\nexport { DateAxisDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to create a date/time-based axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Time\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Time\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"title\": {\r\n * \"text\": \"Time\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link IDateAxisEvents} for a list of available Events\r\n * @see {@link IDateAxisAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/} got `DateAxis` documention\r\n * @important\r\n */\r\nvar DateAxis = /** @class */ (function (_super) {\r\n __extends(DateAxis, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DateAxis() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this._gapBreaks = false;\r\n /**\r\n * A list of date/time intervals for Date axis.\r\n *\r\n * This define various granularities available for the axis. For example\r\n * if you have an axis spanning an hour, and space for 6 grid lines / labels\r\n * the axis will choose the granularity of 10 minutes, displaying a label\r\n * every 10 minutes.\r\n *\r\n * Default intervals:\r\n *\r\n * ```JSON\r\n * [\r\n * { timeUnit: \"millisecond\", count: 1 },\r\n * { timeUnit: \"millisecond\", count: 5 },\r\n * { timeUnit: \"millisecond\", count: 10 },\r\n * { timeUnit: \"millisecond\", count: 50 },\r\n * { timeUnit: \"millisecond\", count: 100 },\r\n * { timeUnit: \"millisecond\", count: 500 },\r\n * { timeUnit: \"second\", count: 1 },\r\n * { timeUnit: \"second\", count: 5 },\r\n * { timeUnit: \"second\", count: 10 },\r\n * { timeUnit: \"second\", count: 30 },\r\n * { timeUnit: \"minute\", count: 1 },\r\n * { timeUnit: \"minute\", count: 5 },\r\n * { timeUnit: \"minute\", count: 10 },\r\n * { timeUnit: \"minute\", count: 30 },\r\n * { timeUnit: \"hour\", count: 1 },\r\n * { timeUnit: \"hour\", count: 3 },\r\n * { timeUnit: \"hour\", count: 6 },\r\n * { timeUnit: \"hour\", count: 12 },\r\n * { timeUnit: \"day\", count: 1 },\r\n * { timeUnit: \"day\", count: 2 },\r\n * { timeUnit: \"day\", count: 3 },\r\n * { timeUnit: \"day\", count: 4 },\r\n * { timeUnit: \"day\", count: 5 },\r\n * { timeUnit: \"week\", count: 1 },\r\n * { timeUnit: \"month\", count: 1 },\r\n * { timeUnit: \"month\", count: 2 },\r\n * { timeUnit: \"month\", count: 3 },\r\n * { timeUnit: \"month\", count: 6 },\r\n * { timeUnit: \"year\", count: 1 },\r\n * { timeUnit: \"year\", count: 2 },\r\n * { timeUnit: \"year\", count: 5 },\r\n * { timeUnit: \"year\", count: 10 },\r\n * { timeUnit: \"year\", count: 50 },\r\n * { timeUnit: \"year\", count: 100 }\r\n * ]\r\n * ```\r\n */\r\n _this.gridIntervals = new List();\r\n /**\r\n * If data aggregation is enabled by setting Axis' `groupData = true`, the\r\n * chart will try to aggregate data items into grouped data items.\r\n *\r\n * If there are more data items in selected period than `groupCount`, it will\r\n * group data items into bigger period.\r\n *\r\n * For example seconds might be grouped into 10-second aggregate data items.\r\n *\r\n * This setting indicates what group intervals can the chart group to.\r\n *\r\n * Default intervals:\r\n *\r\n * ```JSON\r\n * [\r\n * { timeUnit: \"millisecond\", count: 1},\r\n * { timeUnit: \"millisecond\", count: 10 },\r\n * { timeUnit: \"millisecond\", count: 100 },\r\n * { timeUnit: \"second\", count: 1 },\r\n * { timeUnit: \"second\", count: 10 },\r\n * { timeUnit: \"minute\", count: 1 },\r\n * { timeUnit: \"minute\", count: 10 },\r\n * { timeUnit: \"hour\", count: 1 },\r\n * { timeUnit: \"day\", count: 1 },\r\n * { timeUnit: \"week\", count: 1 },\r\n * { timeUnit: \"month\", count: 1 },\r\n * { timeUnit: \"year\", count: 1 }\r\n * ]\r\n * ```\r\n * `groupData = true` does not work in combination with `skipEmptyPeriods = true`.\r\n *\r\n * @since 4.7.0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/#Dynamic_data_item_grouping} for more information about dynamic data item grouping.\r\n */\r\n _this.groupIntervals = new List();\r\n /**\r\n * A collection of date formats to use when formatting different time units\r\n * on Date/time axis.\r\n *\r\n * Actual defaults will depend on the language locale set for the chart.\r\n *\r\n * To override format for a specific time unit, say days, you need to set\r\n * the appropriate key to a format string. E.g.:\r\n *\r\n * ```TypeScript\r\n * axis.dateFormats.setKey(\"day\", \"MMMM d, yyyy\");\r\n * ```\r\n * ```JavaScript\r\n * axis.dateFormats.setKey(\"day\", \"MMMM d, yyyy\");\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"dateFormats\": {\r\n * \"day\": \"MMMM d, yyyy\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link DateFormatter}\r\n */\r\n _this.dateFormats = new Dictionary();\r\n /**\r\n * These formats are applied to labels that are first in a larger unit.\r\n *\r\n * For example, if we have a DateAxis with days on it, the first day of month\r\n * indicates a break in month - a start of the bigger period.\r\n *\r\n * For those labels, `periodChangeDateFormats` are applied instead of\r\n * `dateFormats`.\r\n *\r\n * This allows us implement convenient structures, like instead of:\r\n *\r\n * `Jan 1 - Jan 2 - Jan 3 - ...`\r\n *\r\n * We can have:\r\n *\r\n * `Jan - 1 - 2 - 3 - ...`\r\n *\r\n * This can be disabled by setting `markUnitChange = false`.\r\n */\r\n _this.periodChangeDateFormats = new Dictionary();\r\n /**\r\n * Actual interval (granularity) derived from the actual data.\r\n */\r\n _this._baseIntervalReal = { timeUnit: \"day\", count: 1 };\r\n /**\r\n */\r\n _this._prevSeriesTime = {};\r\n /**\r\n * [_minDifference description]\r\n *\r\n * @todo Description\r\n */\r\n _this._minDifference = {};\r\n /**\r\n * @ignore\r\n */\r\n _this._firstWeekDay = 1;\r\n /**\r\n * A collection of start timestamps to use as axis' min timestamp for\r\n * particular data item item periods.\r\n *\r\n * @since 4.7.0\r\n * @readonly\r\n */\r\n _this.groupMin = {};\r\n /**\r\n * A collection of start timestamps to use as axis' max timestamp for\r\n * particular data item item periods.\r\n *\r\n * @since 4.7.0\r\n * @readonly\r\n */\r\n _this.groupMax = {};\r\n _this._intervalMax = {};\r\n _this._intervalMin = {};\r\n _this.className = \"DateAxis\";\r\n _this.setPropertyValue(\"markUnitChange\", true);\r\n _this.snapTooltip = true;\r\n _this.tooltipPosition = \"pointer\";\r\n _this.setPropertyValue(\"groupData\", false);\r\n _this.groupCount = 200;\r\n _this.events.on(\"parentset\", _this.getDFFormatter, _this, false);\r\n // Translatable defaults are applied in `applyInternalDefaults()`\r\n // ...\r\n // Define default intervals\r\n _this.gridIntervals.pushAll([\r\n { timeUnit: \"millisecond\", count: 1 },\r\n { timeUnit: \"millisecond\", count: 5 },\r\n { timeUnit: \"millisecond\", count: 10 },\r\n { timeUnit: \"millisecond\", count: 50 },\r\n { timeUnit: \"millisecond\", count: 100 },\r\n { timeUnit: \"millisecond\", count: 500 },\r\n { timeUnit: \"second\", count: 1 },\r\n { timeUnit: \"second\", count: 5 },\r\n { timeUnit: \"second\", count: 10 },\r\n { timeUnit: \"second\", count: 30 },\r\n { timeUnit: \"minute\", count: 1 },\r\n { timeUnit: \"minute\", count: 5 },\r\n { timeUnit: \"minute\", count: 10 },\r\n { timeUnit: \"minute\", count: 15 },\r\n { timeUnit: \"minute\", count: 30 },\r\n { timeUnit: \"hour\", count: 1 },\r\n { timeUnit: \"hour\", count: 3 },\r\n { timeUnit: \"hour\", count: 6 },\r\n { timeUnit: \"hour\", count: 12 },\r\n { timeUnit: \"day\", count: 1 },\r\n { timeUnit: \"day\", count: 2 },\r\n { timeUnit: \"day\", count: 3 },\r\n { timeUnit: \"day\", count: 4 },\r\n { timeUnit: \"day\", count: 5 },\r\n { timeUnit: \"week\", count: 1 },\r\n { timeUnit: \"month\", count: 1 },\r\n { timeUnit: \"month\", count: 2 },\r\n { timeUnit: \"month\", count: 3 },\r\n { timeUnit: \"month\", count: 6 },\r\n { timeUnit: \"year\", count: 1 },\r\n { timeUnit: \"year\", count: 2 },\r\n { timeUnit: \"year\", count: 5 },\r\n { timeUnit: \"year\", count: 10 },\r\n { timeUnit: \"year\", count: 50 },\r\n { timeUnit: \"year\", count: 100 },\r\n { timeUnit: \"year\", count: 200 },\r\n { timeUnit: \"year\", count: 500 },\r\n { timeUnit: \"year\", count: 1000 },\r\n { timeUnit: \"year\", count: 2000 },\r\n { timeUnit: \"year\", count: 5000 },\r\n { timeUnit: \"year\", count: 10000 },\r\n { timeUnit: \"year\", count: 100000 }\r\n ]);\r\n _this.groupIntervals.pushAll([\r\n { timeUnit: \"millisecond\", count: 1 },\r\n { timeUnit: \"millisecond\", count: 10 },\r\n { timeUnit: \"millisecond\", count: 100 },\r\n { timeUnit: \"second\", count: 1 },\r\n { timeUnit: \"second\", count: 10 },\r\n { timeUnit: \"minute\", count: 1 },\r\n { timeUnit: \"minute\", count: 10 },\r\n { timeUnit: \"hour\", count: 1 },\r\n { timeUnit: \"day\", count: 1 },\r\n { timeUnit: \"week\", count: 1 },\r\n { timeUnit: \"month\", count: 1 },\r\n { timeUnit: \"year\", count: 1 }\r\n ]);\r\n // Set field name\r\n _this.axisFieldName = \"date\";\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * A function which applies fills to axis cells.\r\n *\r\n * Default function fills every second fill. You can set this to a function\r\n * that follows some other logic.\r\n *\r\n * Function should accept a [[DateAxisDataItem]] and modify its `axisFill`\r\n * property accordingly.\r\n */\r\n DateAxis.prototype.fillRule = function (dataItem) {\r\n var value = dataItem.value;\r\n var axis = dataItem.component;\r\n var gridInterval = axis._gridInterval;\r\n var gridDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n if (Math.round((value - axis.min) / gridDuration) / 2 == Math.round(Math.round((value - axis.min) / gridDuration) / 2)) {\r\n dataItem.axisFill.__disabled = true;\r\n }\r\n else {\r\n dataItem.axisFill.__disabled = false;\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n DateAxis.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Set default date formats\r\n if (!this.dateFormats.hasKey(\"millisecond\")) {\r\n this.dateFormats.setKey(\"millisecond\", this.language.translate(\"_date_millisecond\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"second\")) {\r\n this.dateFormats.setKey(\"second\", this.language.translate(\"_date_second\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"minute\")) {\r\n this.dateFormats.setKey(\"minute\", this.language.translate(\"_date_minute\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"hour\")) {\r\n this.dateFormats.setKey(\"hour\", this.language.translate(\"_date_hour\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"day\")) {\r\n this.dateFormats.setKey(\"day\", this.language.translate(\"_date_day\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"week\")) {\r\n this.dateFormats.setKey(\"week\", this.language.translate(\"_date_day\")); // not a mistake\r\n }\r\n if (!this.dateFormats.hasKey(\"month\")) {\r\n this.dateFormats.setKey(\"month\", this.language.translate(\"_date_month\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"year\")) {\r\n this.dateFormats.setKey(\"year\", this.language.translate(\"_date_year\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"millisecond\")) {\r\n this.periodChangeDateFormats.setKey(\"millisecond\", this.language.translate(\"_date_millisecond\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"second\")) {\r\n this.periodChangeDateFormats.setKey(\"second\", this.language.translate(\"_date_second\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"minute\")) {\r\n this.periodChangeDateFormats.setKey(\"minute\", this.language.translate(\"_date_minute\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"hour\")) {\r\n this.periodChangeDateFormats.setKey(\"hour\", this.language.translate(\"_date_day\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"day\")) {\r\n this.periodChangeDateFormats.setKey(\"day\", this.language.translate(\"_date_day\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"week\")) {\r\n this.periodChangeDateFormats.setKey(\"week\", this.language.translate(\"_date_day\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"month\")) {\r\n this.periodChangeDateFormats.setKey(\"month\", this.language.translate(\"_date_month\") + \" \" + this.language.translate(\"_date_year\"));\r\n }\r\n };\r\n /**\r\n * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n DateAxis.prototype.createDataItem = function () {\r\n return new DateAxisDataItem();\r\n };\r\n /**\r\n * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n *\r\n * @return Axis break\r\n */\r\n DateAxis.prototype.createAxisBreak = function () {\r\n return new DateAxisBreak();\r\n };\r\n /**\r\n * Validates Axis' data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.validateDataItems = function () {\r\n // allows to keep selection of the same size\r\n var start = this.start;\r\n var end = this.end;\r\n var baseDuration = this.baseDuration;\r\n var periodCount = (this.max - this.min) / baseDuration;\r\n this._firstWeekDay = this.getFirstWeekDay();\r\n this.getDFFormatter();\r\n _super.prototype.validateDataItems.call(this);\r\n var mainBaseDuration = $time.getDuration(this.mainBaseInterval.timeUnit, this.mainBaseInterval.count);\r\n this.maxZoomFactor = Math.max(1, (this.max - this.min) / mainBaseDuration);\r\n this._deltaMinMax = this.baseDuration / 2;\r\n // allows to keep selection of the same size\r\n var newPeriodCount = (this.max - this.min) / baseDuration;\r\n start = start + (end - start) * (1 - periodCount / newPeriodCount);\r\n this.zoom({ start: start, end: end }, false, true); // added instantlyto solve zoomout problem when we have axes gaps. @todo: check how this affects maxZoomFactor\r\n };\r\n /**\r\n * Handles process after zoom.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Does nothing?\r\n */\r\n DateAxis.prototype.handleSelectionExtremesChange = function () {\r\n };\r\n /**\r\n * @ignore\r\n */\r\n DateAxis.prototype.getIntervalMax = function (interval) {\r\n return this._intervalMax[interval.timeUnit + interval.count];\r\n };\r\n /**\r\n * @ignore\r\n */\r\n DateAxis.prototype.getIntervalMin = function (interval) {\r\n return this._intervalMin[interval.timeUnit + interval.count];\r\n };\r\n /**\r\n * Calculates all positions, related to axis as per current zoom.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.calculateZoom = function () {\r\n var _this = this;\r\n _super.prototype.calculateZoom.call(this);\r\n var difference = this.adjustDifference(this._minZoomed, this._maxZoomed);\r\n var dataSetChanged = false;\r\n // if data has to be grouped, choose interval and set dataset\r\n if (this.groupData && $type.hasValue(difference)) {\r\n var mainBaseInterval = this.mainBaseInterval;\r\n var min = this.getIntervalMin(mainBaseInterval);\r\n var max = this.getIntervalMax(mainBaseInterval);\r\n var selectionMin = min + (max - min) * this.start;\r\n var selectionMax = min + (max - min) * this.end;\r\n var diff = this.adjustDifference(selectionMin, selectionMax);\r\n var modifiedDifference = diff + (this.startLocation + (1 - this.endLocation)) * this.baseDuration;\r\n var groupInterval = void 0;\r\n if (this.groupInterval) {\r\n groupInterval = __assign({}, this.groupInterval);\r\n }\r\n else {\r\n groupInterval = this.chooseInterval(0, modifiedDifference, this.groupCount, this.groupIntervals);\r\n if ($time.getDuration(groupInterval.timeUnit, groupInterval.count) < $time.getDuration(mainBaseInterval.timeUnit, mainBaseInterval.count)) {\r\n groupInterval = __assign({}, mainBaseInterval);\r\n }\r\n }\r\n this._groupInterval = groupInterval;\r\n var newId = groupInterval.timeUnit + groupInterval.count;\r\n if (this._currentDataSetId != newId) {\r\n this._currentDataSetId = newId;\r\n this.dispatch(\"groupperiodchanged\");\r\n }\r\n this.series.each(function (series) {\r\n if (series.baseAxis == _this) {\r\n if (series.setDataSet(_this._currentDataSetId)) {\r\n dataSetChanged = true;\r\n }\r\n }\r\n });\r\n }\r\n var gridInterval = this.chooseInterval(0, difference, this._gridCount);\r\n if ($time.getDuration(gridInterval.timeUnit, gridInterval.count) < this.baseDuration) {\r\n gridInterval = __assign({}, this.baseInterval);\r\n }\r\n this._gridInterval = gridInterval;\r\n this._nextGridUnit = $time.getNextUnit(gridInterval.timeUnit);\r\n // the following is needed to avoid grid flickering while scrolling\r\n this._intervalDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n this._gridDate = $time.round(new Date(this.minZoomed - $time.getDuration(gridInterval.timeUnit, gridInterval.count)), gridInterval.timeUnit, gridInterval.count, this._firstWeekDay, this._df.utc, new Date(this.min), this._df.timezoneMinutes, this._df.timezone);\r\n // tell series start/end\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (series.baseAxis == _this) {\r\n var field_1 = series.getAxisField(_this);\r\n var minZoomed = $time.round(new Date(_this._minZoomed + _this.baseDuration * 0.05), _this.baseInterval.timeUnit, _this.baseInterval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone).getTime();\r\n var minZoomedStr = minZoomed.toString();\r\n var startDataItem = series.dataItemsByAxis.getKey(_this.uid).getKey(minZoomedStr + series.currentDataSetId);\r\n var startIndex = 0;\r\n if (_this.start != 0) {\r\n if (startDataItem) {\r\n startDataItem = _this.findFirst(startDataItem, minZoomed, field_1);\r\n startIndex = startDataItem.index;\r\n }\r\n else {\r\n startIndex = series.dataItems.findClosestIndex(_this._minZoomed, function (x) { return x[field_1]; }, \"left\");\r\n }\r\n }\r\n // 1 millisecond is removed so that if only first item is selected, it would not count in the second.\r\n var baseInterval = _this.baseInterval;\r\n var maxZoomed = $time.add($time.round(new Date(_this._maxZoomed), baseInterval.timeUnit, baseInterval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone), baseInterval.timeUnit, baseInterval.count, _this._df.utc).getTime();\r\n var maxZoomedStr = maxZoomed.toString();\r\n var endDataItem = series.dataItemsByAxis.getKey(_this.uid).getKey(maxZoomedStr + series.currentDataSetId);\r\n var endIndex = series.dataItems.length;\r\n if (_this.end != 1) {\r\n if (endDataItem) {\r\n endIndex = endDataItem.index;\r\n }\r\n else {\r\n maxZoomed -= 1;\r\n endIndex = series.dataItems.findClosestIndex(maxZoomed, function (x) { return x[field_1]; }, \"right\");\r\n // not good - if end is in the gap, indexes go like 5,4,3,4,2,1\r\n //if (endIndex < series.dataItems.length) {\r\n endIndex++;\r\n //}\r\n }\r\n }\r\n if (series.max(_this) < minZoomed) {\r\n series.startIndex = series.dataItems.length;\r\n series.endIndex = series.dataItems.length;\r\n series.outOfRange = true;\r\n }\r\n else if (series.min(_this) > maxZoomed) {\r\n series.startIndex = 0;\r\n series.endIndex = 0;\r\n series.outOfRange = true;\r\n }\r\n else {\r\n series.outOfRange = false;\r\n series.startIndex = startIndex;\r\n series.endIndex = endIndex;\r\n }\r\n //\tconsole.log(series.name, startIndex, endIndex);\r\n if (!dataSetChanged && series.dataRangeInvalid) {\r\n series.validateDataRange();\r\n }\r\n }\r\n });\r\n };\r\n DateAxis.prototype.findFirst = function (dataItem, time, key) {\r\n var index = dataItem.index;\r\n if (index > 0) {\r\n var series = dataItem.component;\r\n var previousDataItem = series.dataItems.getIndex(index - 1);\r\n var previousDate = previousDataItem[key];\r\n if (!previousDate || previousDate.getTime() < time) {\r\n return dataItem;\r\n }\r\n else {\r\n return this.findFirst(previousDataItem, time, key);\r\n }\r\n }\r\n else {\r\n return dataItem;\r\n }\r\n };\r\n /**\r\n * (Re)validates data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.validateData = function () {\r\n _super.prototype.validateData.call(this);\r\n if (!$type.isNumber(this.baseInterval.count)) {\r\n this.baseInterval.count = 1;\r\n }\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"minDifference\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n var _this = this;\r\n var minDifference = Number.MAX_VALUE;\r\n this.series.each(function (series) {\r\n if (minDifference > _this._minDifference[series.uid]) {\r\n minDifference = _this._minDifference[series.uid];\r\n }\r\n });\r\n if (minDifference == Number.MAX_VALUE || minDifference == 0) {\r\n minDifference = $time.getDuration(\"day\");\r\n }\r\n return minDifference;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n DateAxis.prototype.seriesDataChangeUpdate = function (series) {\r\n this._minDifference[series.uid] = Number.MAX_VALUE;\r\n };\r\n /**\r\n * [postProcessSeriesDataItems description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n DateAxis.prototype.postProcessSeriesDataItems = function (series) {\r\n var _this = this;\r\n this._firstWeekDay = this.getFirstWeekDay();\r\n if (series) {\r\n this.seriesGroupUpdate(series);\r\n }\r\n else {\r\n this.series.each(function (series) {\r\n _this.seriesGroupUpdate(series);\r\n });\r\n }\r\n this.addEmptyUnitsBreaks();\r\n };\r\n DateAxis.prototype.seriesGroupUpdate = function (series) {\r\n var _this = this;\r\n if (JSON.stringify(series._baseInterval[this.uid]) != JSON.stringify(this.mainBaseInterval)) {\r\n series._baseInterval[this.uid] = this.mainBaseInterval;\r\n series.mainDataSet.each(function (dataItem) {\r\n _this.postProcessSeriesDataItem(dataItem);\r\n });\r\n if (this.groupData) {\r\n this.groupSeriesData(series);\r\n }\r\n }\r\n };\r\n /**\r\n * Calculates series group data.\r\n *\r\n * @param series Series\r\n * @ignore\r\n */\r\n DateAxis.prototype.groupSeriesData = function (series) {\r\n var _this = this;\r\n if (series.baseAxis == this && series.dataItems.length > 0 && !series.dataGrouped) {\r\n series.bulletsContainer.removeChildren();\r\n // make array of intervals which will be used;\r\n var intervals_1 = [];\r\n var mainBaseInterval = this.mainBaseInterval;\r\n var mainIntervalDuration_1 = $time.getDuration(mainBaseInterval.timeUnit, mainBaseInterval.count);\r\n this.groupIntervals.each(function (interval) {\r\n var intervalDuration = $time.getDuration(interval.timeUnit, interval.count);\r\n if ((intervalDuration > mainIntervalDuration_1 && intervalDuration < (_this.max - _this.min)) || _this.groupInterval) {\r\n intervals_1.push(interval);\r\n }\r\n });\r\n if (series._dataSets) {\r\n series._dataSets.each(function (key, dataItems) {\r\n dataItems.each(function (dataItem) {\r\n dataItem.dispose();\r\n });\r\n dataItems.clear();\r\n });\r\n series._dataSets.clear();\r\n }\r\n series.dataGrouped = true;\r\n $array.each(intervals_1, function (interval) {\r\n //let mainBaseInterval = this._mainBaseInterval;\r\n var key = \"date\" + _this.axisLetter;\r\n // create data set\r\n var dataSetId = interval.timeUnit + interval.count;\r\n // todo: check where this clone goes\r\n var dataSet = new OrderedListTemplate(series.mainDataSet.template.clone());\r\n series.dataSets.setKey(dataSetId, dataSet);\r\n var dataItems = series.mainDataSet;\r\n var previousTime = Number.NEGATIVE_INFINITY;\r\n var i = 0;\r\n var newDataItem;\r\n var dataFields = [];\r\n $object.each(series.dataFields, function (dfkey, df) {\r\n var dfk = dfkey;\r\n if (dfk != key && dfk.indexOf(\"Show\") == -1) {\r\n dataFields.push(dfk);\r\n }\r\n });\r\n var roundedDate;\r\n dataItems.each(function (dataItem) {\r\n var date = dataItem.getDate(key);\r\n if (date) {\r\n var time = date.getTime();\r\n roundedDate = $time.round(new Date(time), interval.timeUnit, interval.count, _this._df.firstDayOfWeek, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone);\r\n var currentTime = roundedDate.getTime();\r\n // changed period\t\t\t\t\t\t\t\t\r\n if (previousTime < currentTime) {\r\n if (newDataItem && series._adapterO) {\r\n $array.each(dataFields, function (vkey) {\r\n newDataItem.values[vkey].value = series._adapterO.apply(\"groupDataItem\", {\r\n dataItem: newDataItem,\r\n interval: interval,\r\n dataField: vkey,\r\n date: roundedDate,\r\n value: newDataItem.values[vkey].value\r\n }).value;\r\n newDataItem.values[vkey].workingValue = newDataItem.values[vkey].value;\r\n });\r\n }\r\n newDataItem = dataSet.create();\r\n newDataItem.dataContext = {};\r\n newDataItem.setWorkingLocation(\"dateX\", series.dataItems.template.locations.dateX, 0);\r\n newDataItem.setWorkingLocation(\"openDateX\", series.dataItems.template.locations.openDateX, 0);\r\n newDataItem.setWorkingLocation(\"dateY\", series.dataItems.template.locations.dateY, 0);\r\n newDataItem.setWorkingLocation(\"openDateY\", series.dataItems.template.locations.openDateY, 0);\r\n newDataItem.component = series;\r\n // other Dates?\r\n newDataItem.setDate(key, roundedDate);\r\n newDataItem._index = i;\r\n i++;\r\n $array.each(dataFields, function (vkey) {\r\n //let groupFieldName = vkey + \"Group\";\r\n var dvalues = dataItem.values[vkey];\r\n if (dvalues) {\r\n var value = dvalues.value;\r\n if (series._adapterO) {\r\n value = series._adapterO.apply(\"groupValue\", {\r\n dataItem: dataItem,\r\n interval: interval,\r\n dataField: vkey,\r\n date: roundedDate,\r\n value: value\r\n }).value;\r\n }\r\n var values = newDataItem.values[vkey];\r\n if ($type.isNumber(value)) {\r\n values.value = value;\r\n values.workingValue = value;\r\n values.open = value;\r\n values.close = value;\r\n values.low = value;\r\n values.high = value;\r\n values.sum = value;\r\n values.average = value;\r\n values.count = 1;\r\n }\r\n else {\r\n values.count = 0;\r\n }\r\n }\r\n });\r\n _this.postProcessSeriesDataItem(newDataItem, interval);\r\n $object.each(series.propertyFields, function (key, fieldValue) {\r\n var f = key;\r\n var value = dataItem.properties[key];\r\n if ($type.hasValue(value)) {\r\n newDataItem.hasProperties = true;\r\n newDataItem.setProperty(f, value);\r\n }\r\n });\r\n newDataItem.groupDataItems = [dataItem];\r\n previousTime = currentTime;\r\n }\r\n else {\r\n if (newDataItem) {\r\n $array.each(dataFields, function (vkey) {\r\n var groupFieldName = series.groupFields[vkey];\r\n var dvalues = dataItem.values[vkey];\r\n if (dvalues) {\r\n var value = dvalues.value;\r\n if (series._adapterO) {\r\n value = series._adapterO.apply(\"groupValue\", {\r\n dataItem: dataItem,\r\n interval: interval,\r\n dataField: vkey,\r\n date: roundedDate,\r\n value: value\r\n }).value;\r\n }\r\n if ($type.isNumber(value)) {\r\n var values = newDataItem.values[vkey];\r\n if (!$type.isNumber(values.open)) {\r\n values.open = value;\r\n }\r\n values.close = value;\r\n if (values.low > value || !$type.isNumber(values.low)) {\r\n values.low = value;\r\n }\r\n if (values.high < value || !$type.isNumber(values.high)) {\r\n values.high = value;\r\n }\r\n if ($type.isNumber(values.sum)) {\r\n values.sum += value;\r\n }\r\n else {\r\n values.sum = value;\r\n }\r\n values.count++;\r\n values.average = values.sum / values.count;\r\n if ($type.isNumber(values[groupFieldName])) {\r\n values.value = values[groupFieldName];\r\n values.workingValue = values.value;\r\n }\r\n }\r\n }\r\n });\r\n $utils.copyProperties(dataItem.properties, newDataItem.properties);\r\n $object.each(series.propertyFields, function (key, fieldValue) {\r\n var f = key;\r\n var value = dataItem.properties[key];\r\n if ($type.hasValue(value)) {\r\n newDataItem.hasProperties = true;\r\n newDataItem.setProperty(f, value);\r\n }\r\n });\r\n newDataItem.groupDataItems.push(dataItem);\r\n }\r\n }\r\n }\r\n if (newDataItem) {\r\n $utils.copyProperties(dataItem.dataContext, newDataItem.dataContext);\r\n }\r\n });\r\n if (newDataItem && series._adapterO) {\r\n $array.each(dataFields, function (vkey) {\r\n newDataItem.values[vkey].value = series._adapterO.apply(\"groupDataItem\", {\r\n dataItem: newDataItem,\r\n interval: interval,\r\n dataField: vkey,\r\n date: roundedDate,\r\n value: newDataItem.values[vkey].value\r\n }).value;\r\n newDataItem.values[vkey].workingValue = newDataItem.values[vkey].value;\r\n });\r\n }\r\n });\r\n this.calculateZoom();\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n DateAxis.prototype.getDFFormatter = function () {\r\n this._df = this.dateFormatter;\r\n };\r\n /**\r\n * [postProcessSeriesDataItem description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\r\n DateAxis.prototype.postProcessSeriesDataItem = function (dataItem, interval) {\r\n var _this = this;\r\n // we need to do this for all series data items not only added recently, as baseInterval might change\r\n var intervalID = \"\";\r\n if (interval) {\r\n intervalID = interval.timeUnit + interval.count;\r\n }\r\n else {\r\n interval = this.mainBaseInterval;\r\n }\r\n var series = dataItem.component;\r\n var dataItemsByAxis = series.dataItemsByAxis.getKey(this.uid);\r\n $object.each(dataItem.dates, function (key) {\r\n var date = dataItem.getDate(key);\r\n var time = date.getTime();\r\n var startDate = $time.round(new Date(time), interval.timeUnit, interval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone);\r\n var startTime = startDate.getTime();\r\n var endDate = $time.add(new Date(startTime), interval.timeUnit, interval.count, _this._df.utc);\r\n dataItem.setCalculatedValue(key, startTime, \"open\");\r\n dataItem.setCalculatedValue(key, endDate.getTime(), \"close\");\r\n dataItemsByAxis.setKey(startTime + intervalID, dataItem);\r\n });\r\n };\r\n /**\r\n * Collapses empty stretches of date/time scale by creating [[AxisBreak]]\r\n * elements for them.\r\n *\r\n * Can be used to automatically remove strethes without data, like weekends.\r\n *\r\n * No, need to call this manually. It will automatically be done if\r\n * `skipEmptyPeriods = true`.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.addEmptyUnitsBreaks = function () {\r\n var _this = this;\r\n if (this.skipEmptyPeriods && $type.isNumber(this.min) && $type.isNumber(this.max)) {\r\n var timeUnit = this.baseInterval.timeUnit;\r\n var count = this.baseInterval.count;\r\n if (this._axisBreaks) {\r\n this._axisBreaks.clear(); // TODO: what about breaks added by user?\r\n }\r\n var date = $time.round(new Date(this.min), timeUnit, count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n var axisBreak = void 0;\r\n var _loop_1 = function () {\r\n $time.add(date, timeUnit, count, this_1._df.utc);\r\n var startTime = date.getTime();\r\n var startTimeStr = startTime.toString();\r\n var hasData = $iter.contains(this_1.series.iterator(), function (series) {\r\n return !!series.dataItemsByAxis.getKey(_this.uid).getKey(startTimeStr + series.currentDataSetId);\r\n });\r\n // open break if not yet opened\r\n if (!hasData) {\r\n if (!axisBreak) {\r\n axisBreak = this_1.axisBreaks.create();\r\n axisBreak.startDate = new Date(startTime);\r\n this_1._gapBreaks = true;\r\n }\r\n }\r\n else {\r\n // close if already opened\r\n if (axisBreak) {\r\n // close at end time minus one millisecond\r\n axisBreak.endDate = new Date(startTime - 1);\r\n axisBreak = undefined;\r\n }\r\n }\r\n };\r\n var this_1 = this;\r\n while (date.getTime() < this.max - this.baseDuration) {\r\n _loop_1();\r\n }\r\n }\r\n };\r\n /**\r\n * Updates positioning of Axis breaks after something changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.fixAxisBreaks = function () {\r\n var _this = this;\r\n _super.prototype.fixAxisBreaks.call(this);\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks) {\r\n if (axisBreaks.length > 0) {\r\n // process breaks\r\n axisBreaks.each(function (axisBreak) {\r\n var breakGridCount = Math.ceil(_this._gridCount * (Math.min(_this.end, axisBreak.endPosition) - Math.max(_this.start, axisBreak.startPosition)) / (_this.end - _this.start));\r\n axisBreak.gridInterval = _this.chooseInterval(0, axisBreak.adjustedEndValue - axisBreak.adjustedStartValue, breakGridCount);\r\n var gridDate = $time.round(new Date(axisBreak.adjustedStartValue), axisBreak.gridInterval.timeUnit, axisBreak.gridInterval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone);\r\n if (gridDate.getTime() > axisBreak.startDate.getTime()) {\r\n $time.add(gridDate, axisBreak.gridInterval.timeUnit, axisBreak.gridInterval.count, _this._df.utc);\r\n }\r\n axisBreak.gridDate = gridDate;\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n DateAxis.prototype.getFirstWeekDay = function () {\r\n if (this._df) {\r\n return this._df.firstDayOfWeek;\r\n }\r\n return 1;\r\n };\r\n /**\r\n * [getGridDate description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param date [description]\r\n * @param intervalCount [description]\r\n * @return [description]\r\n */\r\n DateAxis.prototype.getGridDate = function (date, intervalCount) {\r\n var timeUnit = this._gridInterval.timeUnit;\r\n var realIntervalCount = this._gridInterval.count;\r\n // round date\r\n $time.round(date, timeUnit, 1, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n var prevTimestamp = date.getTime();\r\n var newDate = $time.copy(date);\r\n // modify date by adding intervalcount\r\n var timestamp = $time.add(newDate, timeUnit, intervalCount, this._df.utc).getTime();\r\n // if it's axis break, get first rounded date which is not in a break\r\n var axisBreak = this.isInBreak(timestamp);\r\n if (axisBreak && axisBreak.endDate) {\r\n newDate = new Date(axisBreak.endDate.getTime());\r\n $time.round(newDate, timeUnit, realIntervalCount, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n if (newDate.getTime() < axisBreak.endDate.getTime()) {\r\n $time.add(newDate, timeUnit, realIntervalCount, this._df.utc);\r\n }\r\n timestamp = newDate.getTime();\r\n }\r\n // get duration between grid lines with break duration removed\r\n var durationBreaksRemoved = this.adjustDifference(prevTimestamp, timestamp);\r\n // calculate how many time units fit to this duration\r\n var countBreaksRemoved = Math.round(durationBreaksRemoved / $time.getDuration(timeUnit));\r\n // if less units fit, add one and repeat\r\n if (countBreaksRemoved < realIntervalCount) {\r\n return this.getGridDate(date, intervalCount + realIntervalCount);\r\n }\r\n return newDate;\r\n };\r\n /**\r\n * [getBreaklessDate description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param axisBreak [description]\r\n * @param timeUnit [description]\r\n * @param count [description]\r\n * @return [description]\r\n */\r\n DateAxis.prototype.getBreaklessDate = function (axisBreak, timeUnit, count) {\r\n var date = new Date(axisBreak.endValue);\r\n $time.round(date, timeUnit, count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n $time.add(date, timeUnit, count, this._df.utc);\r\n var timestamp = date.getTime();\r\n axisBreak = this.isInBreak(timestamp);\r\n if (axisBreak) {\r\n return this.getBreaklessDate(axisBreak, timeUnit, count);\r\n }\r\n return date;\r\n };\r\n /**\r\n * (Re)validates all Axis elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\r\n DateAxis.prototype.validateAxisElements = function () {\r\n var _this = this;\r\n if ($type.isNumber(this.max) && $type.isNumber(this.min)) {\r\n this.calculateZoom();\r\n // first regular items\r\n var timestamp = this._gridDate.getTime();\r\n var timeUnit = this._gridInterval.timeUnit;\r\n var intervalCount = this._gridInterval.count;\r\n var prevGridDate = $time.copy(this._gridDate);\r\n var dataItemsIterator_1 = this._dataItemsIterator;\r\n this.resetIterators();\r\n var _loop_2 = function () {\r\n var date = this_2.getGridDate($time.copy(prevGridDate), intervalCount);\r\n timestamp = date.getTime();\r\n var endDate = $time.copy(date); // you might think it's easier to add intervalduration to timestamp, however it won't work for months or years which are not of the same length\r\n endDate = $time.add(endDate, timeUnit, intervalCount, this_2._df.utc);\r\n var format = this_2.dateFormats.getKey(timeUnit);\r\n if (this_2.markUnitChange && prevGridDate) {\r\n if ($time.checkChange(date, prevGridDate, this_2._nextGridUnit, this_2._df.utc)) {\r\n if (timeUnit !== \"year\") {\r\n format = this_2.periodChangeDateFormats.getKey(timeUnit);\r\n }\r\n }\r\n }\r\n var text = this_2._df.format(date, format);\r\n var dataItem = dataItemsIterator_1.find(function (x) { return x.text === text; });\r\n if (dataItem.__disabled) {\r\n dataItem.__disabled = false;\r\n }\r\n this_2.appendDataItem(dataItem);\r\n dataItem.axisBreak = undefined;\r\n dataItem.date = date;\r\n dataItem.endDate = endDate;\r\n dataItem.text = text;\r\n this_2.validateDataElement(dataItem);\r\n prevGridDate = date;\r\n };\r\n var this_2 = this;\r\n while (timestamp <= this._maxZoomed) {\r\n _loop_2();\r\n }\r\n // breaks later\r\n var renderer_1 = this.renderer;\r\n if (this._axisBreaks) {\r\n $iter.each(this._axisBreaks.iterator(), function (axisBreak) {\r\n if (axisBreak.breakSize > 0) {\r\n var timeUnit_1 = axisBreak.gridInterval.timeUnit;\r\n var intervalCount_1 = axisBreak.gridInterval.count;\r\n // only add grid if gap is bigger then minGridDistance\r\n if ($math.getDistance(axisBreak.startPoint, axisBreak.endPoint) > renderer_1.minGridDistance * 4) {\r\n var timestamp_1 = axisBreak.gridDate.getTime();\r\n var prevGridDate_1;\r\n var count = 0;\r\n var _loop_3 = function () {\r\n var date = $time.copy(axisBreak.gridDate);\r\n timestamp_1 = $time.add(date, timeUnit_1, intervalCount_1 * count, _this._df.utc).getTime();\r\n count++;\r\n if (timestamp_1 > axisBreak.adjustedStartValue && timestamp_1 < axisBreak.adjustedEndValue) {\r\n var endDate = $time.copy(date); // you might think it's easier to add intervalduration to timestamp, however it won't work for months or years which are not of the same length\r\n endDate = $time.add(endDate, timeUnit_1, intervalCount_1, _this._df.utc);\r\n var format = _this.dateFormats.getKey(timeUnit_1);\r\n if (_this.markUnitChange && prevGridDate_1) {\r\n if ($time.checkChange(date, prevGridDate_1, _this._nextGridUnit, _this._df.utc)) {\r\n if (timeUnit_1 !== \"year\") {\r\n format = _this.periodChangeDateFormats.getKey(timeUnit_1);\r\n }\r\n }\r\n }\r\n var text_1 = _this._df.format(date, format);\r\n var dataItem = dataItemsIterator_1.find(function (x) { return x.text === text_1; });\r\n if (dataItem.__disabled) {\r\n dataItem.__disabled = false;\r\n }\r\n //this.processDataItem(dataItem);\r\n _this.appendDataItem(dataItem);\r\n dataItem.axisBreak = axisBreak;\r\n axisBreak.dataItems.moveValue(dataItem);\r\n dataItem.date = date;\r\n dataItem.endDate = endDate;\r\n dataItem.text = text_1;\r\n prevGridDate_1 = date;\r\n _this.validateDataElement(dataItem);\r\n }\r\n };\r\n while (timestamp_1 <= axisBreak.adjustedMax) {\r\n _loop_3();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Validates Axis data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n DateAxis.prototype.validateDataElement = function (dataItem) {\r\n dataItem.itemIndex = this._axisItemCount;\r\n this._axisItemCount++;\r\n if ($type.isNumber(this.max) && $type.isNumber(this.min)) {\r\n var renderer = this.renderer;\r\n var timestamp = dataItem.value;\r\n var endTimestamp = dataItem.endValue;\r\n if (!$type.isNumber(endTimestamp)) {\r\n endTimestamp = timestamp;\r\n }\r\n var position = this.valueToPosition(timestamp);\r\n var endPosition = this.valueToPosition(endTimestamp);\r\n var fillEndPosition = endPosition;\r\n if (!dataItem.isRange && this._gridInterval.count > this.baseInterval.count) {\r\n endPosition = position + (endPosition - position) / (this._gridInterval.count / this.baseInterval.count);\r\n }\r\n dataItem.position = position;\r\n var tick = dataItem.tick;\r\n if (tick && !tick.disabled) {\r\n renderer.updateTickElement(tick, position, endPosition);\r\n }\r\n var grid = dataItem.grid;\r\n if (grid && !grid.disabled) {\r\n renderer.updateGridElement(grid, position, endPosition);\r\n }\r\n var fill = dataItem.axisFill;\r\n if (fill && !fill.disabled) {\r\n renderer.updateFillElement(fill, position, fillEndPosition);\r\n if (!dataItem.isRange) {\r\n this.fillRule(dataItem);\r\n }\r\n }\r\n var mask = dataItem.mask;\r\n if (mask) {\r\n renderer.updateFillElement(mask, position, endPosition);\r\n }\r\n if (dataItem.bullet) {\r\n renderer.updateBullet(dataItem.bullet, position, endPosition);\r\n }\r\n var label = dataItem.label;\r\n if (label && !label.disabled) {\r\n var location_1 = label.location;\r\n if (location_1 == 0) {\r\n if (this._gridInterval.count == 1 && this._gridInterval.timeUnit != \"week\" && !dataItem.isRange) {\r\n location_1 = 0.5;\r\n }\r\n else {\r\n location_1 = 0;\r\n }\r\n }\r\n renderer.updateLabelElement(label, position, endPosition, location_1);\r\n }\r\n }\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"baseDuration\", {\r\n /**\r\n * A duration in milliseconds of the `baseInterval`.\r\n *\r\n * @return Duration (ms)\r\n */\r\n get: function () {\r\n return $time.getDuration(this.baseInterval.timeUnit, this.baseInterval.count);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adjusts min/max values.\r\n *\r\n * @ignore Exclude from docs.\r\n * @todo Description (review)\r\n * @param min Min timestamp\r\n * @param max Max timestamp\r\n * @return Adjusted min/max step\r\n */\r\n DateAxis.prototype.adjustMinMax = function (min, max) {\r\n return { min: min, max: max, step: this.baseDuration };\r\n };\r\n /**\r\n * Adjusts the minimum timestamp as per cell start location.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\r\n DateAxis.prototype.fixMin = function (value) {\r\n // like this because months are not equal\r\n var interval = this.baseInterval;\r\n var startTime = $time.round(new Date(value), interval.timeUnit, interval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone).getTime();\r\n var endTime = $time.add(new Date(startTime), interval.timeUnit, interval.count, this._df.utc).getTime();\r\n return startTime + (endTime - startTime) * this.startLocation;\r\n };\r\n /**\r\n * Adjusts the maximum timestamp as per cell start location.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\r\n DateAxis.prototype.fixMax = function (value) {\r\n // like this because months are not equal\r\n var interval = this.baseInterval;\r\n var startTime = $time.round(new Date(value), interval.timeUnit, interval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone).getTime();\r\n var endTime = $time.add(new Date(startTime), interval.timeUnit, interval.count, this._df.utc).getTime();\r\n return startTime + (endTime - startTime) * this.endLocation;\r\n };\r\n /**\r\n * [chooseInterval description]\r\n *\r\n * @ignore Exclude from docs.\r\n * @todo Description\r\n * @param index [description]\r\n * @param duration [description]\r\n * @param gridCount [description]\r\n * @return [description]\r\n */\r\n DateAxis.prototype.chooseInterval = function (index, duration, gridCount, intervals) {\r\n if (!intervals) {\r\n intervals = this.gridIntervals;\r\n }\r\n var gridInterval = intervals.getIndex(index);\r\n var intervalDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n var lastIndex = intervals.length - 1;\r\n if (index >= lastIndex) {\r\n return __assign({}, intervals.getIndex(lastIndex));\r\n }\r\n var count = Math.ceil(duration / intervalDuration);\r\n if (duration < intervalDuration && index > 0) {\r\n return __assign({}, intervals.getIndex(index - 1));\r\n }\r\n if (count <= gridCount) {\r\n return __assign({}, intervals.getIndex(index));\r\n }\r\n else {\r\n if (index + 1 < intervals.length) {\r\n return this.chooseInterval(index + 1, duration, gridCount, intervals);\r\n }\r\n else {\r\n return __assign({}, intervals.getIndex(index));\r\n }\r\n }\r\n };\r\n /**\r\n * Formats the value according to axis' own [[DateFormatter]].\r\n *\r\n * @param value Source value\r\n * @return Formatted value\r\n */\r\n DateAxis.prototype.formatLabel = function (value) {\r\n return this._df.format(value);\r\n };\r\n /**\r\n * Converts a Date to an asbolute pixel position within Axis.\r\n *\r\n * @param date Date\r\n * @return Position (px)\r\n */\r\n DateAxis.prototype.dateToPosition = function (date) {\r\n return this.valueToPosition(date.getTime());\r\n };\r\n /**\r\n * Converts a numeric timestamp or a `Date` to a relative position on axis.\r\n *\r\n * @param date Date or a timestamp\r\n * @return Relative position\r\n */\r\n DateAxis.prototype.anyToPosition = function (date) {\r\n if (date instanceof Date) {\r\n return this.dateToPosition(date);\r\n }\r\n else {\r\n return this.valueToPosition(date);\r\n }\r\n };\r\n /**\r\n * Converts date to orientation point (x, y, angle) on axis\r\n *\r\n * @param date Date\r\n * @return IOrientationPoint\r\n */\r\n DateAxis.prototype.dateToPoint = function (date) {\r\n var position = this.dateToPosition(date);\r\n var point = this.renderer.positionToPoint(position);\r\n var angle = this.renderer.positionToAngle(position);\r\n return { x: point.x, y: point.y, angle: angle };\r\n };\r\n /**\r\n * Converts a numeric value to orientation (x, y, angle) point on axis\r\n *\r\n * @param value Value\r\n * @return Orientation point\r\n */\r\n DateAxis.prototype.anyToPoint = function (date) {\r\n if (date instanceof Date) {\r\n return this.dateToPoint(date);\r\n }\r\n else {\r\n return this.valueToPoint(date);\r\n }\r\n };\r\n /**\r\n * Converts pixel position within Axis to a corresponding Date.\r\n *\r\n * @param position Position (px)\r\n * @return Date\r\n */\r\n DateAxis.prototype.positionToDate = function (position) {\r\n return new Date(this.positionToValue(position));\r\n };\r\n /**\r\n * Returns the relative position on axis for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\r\n DateAxis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\r\n var value = this.getTimeByLocation(dataItem, key, location);\r\n //let stack: number = dataItem.getValue(\"valueX\", \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n }\r\n var position = this.valueToPosition(value);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns relative position on axis for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\r\n DateAxis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\r\n var value = this.getTimeByLocation(dataItem, key, location);\r\n var stack = dataItem.getValue(\"valueX\", \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n }\r\n var position = this.valueToPosition(value + stack);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns an angle for series data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @param range Range to fit in\r\n * @return Angle\r\n */\r\n DateAxis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\r\n var value = this.getTimeByLocation(dataItem, key, location);\r\n var stack = dataItem.getValue(stackKey, \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n }\r\n var position = this.valueToPosition(value + stack);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return this.positionToAngle(position);\r\n };\r\n /**\r\n * [getTimeByLocation description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @return [description]\r\n */\r\n DateAxis.prototype.getTimeByLocation = function (dataItem, key, location) {\r\n if (!$type.hasValue(key)) {\r\n return;\r\n }\r\n if (!$type.isNumber(location)) {\r\n location = dataItem.workingLocations[key];\r\n if (!$type.isNumber(location)) {\r\n location = 0;\r\n }\r\n }\r\n var startTime = dataItem.values[key][\"open\"];\r\n var endTime = dataItem.values[key][\"close\"];\r\n var workingValue = dataItem.values[key].workingValue;\r\n var value = dataItem.values[key].value;\r\n var difference = value - workingValue;\r\n startTime -= difference;\r\n endTime -= difference;\r\n if ($type.isNumber(startTime) && $type.isNumber(endTime)) {\r\n return startTime + (endTime - startTime) * location;\r\n }\r\n };\r\n /**\r\n * Processes a related series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\r\n DateAxis.prototype.processSeriesDataItem = function (dataItem, axisLetter) {\r\n var series = dataItem.component;\r\n var time;\r\n var date = dataItem[\"date\" + axisLetter];\r\n if ($type.isNumber(this.timezoneOffset)) {\r\n date.setTime(date.getTime() + (date.getTimezoneOffset() - this.timezoneOffset) * 60000);\r\n dataItem.setValue(\"date\" + axisLetter, date.getTime(), 0);\r\n }\r\n else if ($type.hasValue(this.timezone)) {\r\n date = $time.setTimezone(date, this.timezone);\r\n dataItem.setValue(\"date\" + axisLetter, date.getTime(), 0);\r\n dataItem[\"date\" + axisLetter] = date;\r\n }\r\n if (date) {\r\n time = date.getTime();\r\n }\r\n else {\r\n return;\r\n }\r\n var openDate = dataItem[\"openDate\" + axisLetter];\r\n var prevSeriesTime = this._prevSeriesTime[series.uid];\r\n var openTime;\r\n if (openDate) {\r\n openTime = openDate.getTime();\r\n }\r\n if ($type.isNumber(openTime)) {\r\n var difference = Math.abs(time - openTime);\r\n if (this._minDifference[series.uid] > difference) {\r\n this._minDifference[series.uid] = difference;\r\n }\r\n }\r\n var differece = time - prevSeriesTime;\r\n if (differece > 0) {\r\n if (this._minDifference[series.uid] > differece) {\r\n this._minDifference[series.uid] = differece;\r\n }\r\n }\r\n this._prevSeriesTime[series.uid] = time;\r\n if (series._baseInterval[this.uid]) {\r\n this.postProcessSeriesDataItem(dataItem);\r\n }\r\n };\r\n /**\r\n * [updateAxisBySeries description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n DateAxis.prototype.updateAxisBySeries = function () {\r\n _super.prototype.updateAxisBySeries.call(this);\r\n var baseInterval = this.chooseInterval(0, this.minDifference, 1);\r\n if (this.minDifference >= $time.getDuration(\"day\", 27) && baseInterval.timeUnit == \"week\") {\r\n baseInterval.timeUnit = \"month\";\r\n baseInterval.count = 1;\r\n }\r\n if (baseInterval.timeUnit == \"month\") {\r\n if (this.minDifference >= $time.getDuration(\"day\", 29 * 2) && baseInterval.count == 1) {\r\n baseInterval.count = 2;\r\n }\r\n if (this.minDifference >= $time.getDuration(\"day\", 29 * 3) && baseInterval.count == 2) {\r\n baseInterval.count = 3;\r\n }\r\n if (this.minDifference >= $time.getDuration(\"day\", 29 * 6) && baseInterval.count == 5) {\r\n baseInterval.count = 6;\r\n }\r\n }\r\n // handle daylight saving\r\n if (this.minDifference >= $time.getDuration(\"hour\", 23) && baseInterval.timeUnit == \"hour\") {\r\n baseInterval.timeUnit = \"day\";\r\n baseInterval.count = 1;\r\n }\r\n if (this.minDifference >= $time.getDuration(\"week\", 1) - $time.getDuration(\"hour\", 1) && baseInterval.timeUnit == \"day\") {\r\n baseInterval.timeUnit = \"week\";\r\n baseInterval.count = 1;\r\n }\r\n if (this.minDifference >= $time.getDuration(\"year\", 1) - $time.getDuration(\"day\", 1.01) && baseInterval.timeUnit == \"month\") {\r\n baseInterval.timeUnit = \"year\";\r\n baseInterval.count = 1;\r\n }\r\n this._baseIntervalReal = baseInterval;\r\n this._mainBaseInterval = baseInterval;\r\n // no need to invalidate\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"baseInterval\", {\r\n /**\r\n * @return Base interval\r\n */\r\n get: function () {\r\n if (this._groupInterval) {\r\n return this._groupInterval;\r\n }\r\n else if (this._baseInterval) {\r\n return this._baseInterval;\r\n }\r\n else {\r\n return this._baseIntervalReal;\r\n }\r\n },\r\n /**\r\n * A base interval (granularity) of data.\r\n *\r\n * Used to indicate what are the base units of your data.\r\n *\r\n * For example, if you have a data set that has a data point every 5 minutes,\r\n * you may want to set this to `{ timeUnit: \"minute\", count: 5 }`.\r\n *\r\n * If not set, the Axis will try to determine the setting by its own, looking\r\n * at actual data.\r\n *\r\n * For best results, try to follow these values for `count`:\r\n *\r\n * When unit is \"month\", use 12 / count = round number\r\n * When unit is \"hour\", use 24 / count = round number\r\n * When unit is \"second\" and \"minute\", use 60 / count = round number\r\n *\r\n * @param timeInterval base interval\r\n */\r\n set: function (timeInterval) {\r\n if (JSON.stringify(this._baseInterval) != JSON.stringify(timeInterval)) {\r\n this._baseInterval = timeInterval;\r\n this._mainBaseInterval = timeInterval;\r\n if (!$type.isNumber(timeInterval.count)) {\r\n timeInterval.count = 1;\r\n }\r\n this.invalidate();\r\n this.postProcessSeriesDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"mainBaseInterval\", {\r\n /**\r\n * Indicates granularity of the data of source (unaggregated) data.\r\n *\r\n * @since 4.7.0\r\n * @return Granularity of the main data set\r\n */\r\n get: function () {\r\n if (this._baseInterval) {\r\n return this._baseInterval;\r\n }\r\n else if (this._mainBaseInterval) {\r\n return this._mainBaseInterval;\r\n }\r\n else {\r\n return this._baseIntervalReal;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"skipEmptyPeriods\", {\r\n /**\r\n * @return Remove empty stretches of time?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"skipEmptyPeriods\");\r\n },\r\n /**\r\n * If enabled, axis will automatically collapse empty (without data points)\r\n * periods of time, i.e. weekends.\r\n *\r\n * An \"empty\" period is considered a stretch of time in the length of current\r\n * `baseInterval` without a single data point in it.\r\n *\r\n * For each such empty period, axis will automatically create an\r\n * [[AxisBreak]]. By default they will be invisible. You can still configure\r\n * them by accessing `axis.breaks.template`.\r\n *\r\n * [More info about breaks](https://www.amcharts.com/docs/v4/concepts/axes/#Breaks).\r\n *\r\n * Important notes:\r\n * * If you set this property to `true`, you can not add your custom axis breaks to this axis anymore.\r\n * * Using this feature affects performance. Use only if you need it.\r\n * * Setting this to `true` will reset appearance of breaks. If you want to modify appearance, do it *after* you set `skipEmptyPeriods`.\r\n * * Some axis label overlapping might happen.\r\n * * This setting is not compatible with `groupData = true`.\r\n *\r\n * @default false\r\n * @param value Remove empty stretches of time?\r\n */\r\n set: function (value) {\r\n if (value) {\r\n var breakTemplate = this.axisBreaks.template;\r\n breakTemplate.startLine.disabled = true;\r\n breakTemplate.endLine.disabled = true;\r\n breakTemplate.fillShape.disabled = true;\r\n breakTemplate.breakSize = 0;\r\n }\r\n else {\r\n if (this._gapBreaks) {\r\n this.axisBreaks.clear();\r\n this._gapBreaks = false;\r\n }\r\n }\r\n if (this.setPropertyValue(\"skipEmptyPeriods\", value)) {\r\n this.invalidate();\r\n this.postProcessSeriesDataItems();\r\n this.invalidateSeries();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"tooltipDateFormat\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipDateFormat\");\r\n },\r\n /**\r\n * A special date format to apply axis tooltips.\r\n *\r\n * Will use same format as for labels, if not set.\r\n *\r\n * @param value Date format\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipDateFormat\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"markUnitChange\", {\r\n /**\r\n * @return Use different format for period beginning?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"markUnitChange\");\r\n },\r\n /**\r\n * Use `periodChangeDateFormats` to apply different formats to the first\r\n * label in bigger time unit.\r\n *\r\n * @default true\r\n * @param value Use different format for period beginning?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"markUnitChange\", value)) {\r\n this.invalidateData();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns text to show in a tooltip, based on specific relative position\r\n * within axis.\r\n *\r\n * The label will be formatted as per [[DateFormatter]] set for the whole\r\n * chart, or explicitly for this Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position\r\n * @return Label (formatted date)\r\n */\r\n DateAxis.prototype.getTooltipText = function (position) {\r\n var text;\r\n var date = this.positionToDate(position);\r\n date = $time.round(date, this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, new Date(this.min), this._df.timezoneMinutes, this._df.timezone);\r\n this.tooltipDate = date;\r\n if ($type.hasValue(this.tooltipDateFormat)) {\r\n text = this._df.format(date, this.tooltipDateFormat, [\"day\", \"month\", \"week\", \"year\"].indexOf(this.baseInterval.timeUnit) == -1);\r\n }\r\n else {\r\n var dateFormat = this.dateFormats.getKey(this.baseInterval.timeUnit);\r\n if (dateFormat) {\r\n text = this._df.format(date, dateFormat);\r\n }\r\n else {\r\n text = this.getPositionLabel(position);\r\n }\r\n }\r\n if (!this._adapterO) {\r\n return text;\r\n }\r\n else {\r\n return this._adapterO.apply(\"getTooltipText\", text);\r\n }\r\n };\r\n /**\r\n * Takes an absolute position within axis and adjust it to a specific position within base interval. (cell)\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Source position\r\n * @param location Location in the cell\r\n * @return Adjusted position\r\n */\r\n DateAxis.prototype.roundPosition = function (position, location, axisLocation) {\r\n var baseInterval = this.baseInterval;\r\n var timeUnit = baseInterval.timeUnit;\r\n var count = baseInterval.count;\r\n var date = this.positionToDate(position);\r\n $time.round(date, timeUnit, count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n if (location > 0) {\r\n $time.add(date, timeUnit, location * count, this._df.utc);\r\n }\r\n if (axisLocation > 0 && axisLocation < 1) {\r\n date.setTime(date.getTime() + this.baseDuration * axisLocation);\r\n }\r\n if (this.isInBreak(date.getTime())) {\r\n while (date.getTime() < this.max) {\r\n $time.add(date, timeUnit, count, this._df.utc);\r\n if (!this.isInBreak(date.getTime())) {\r\n break;\r\n }\r\n }\r\n }\r\n return this.dateToPosition(date);\r\n };\r\n /**\r\n * Returns an relative position of the start of the cell (period), that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Relative position\r\n * @return Cell start relative position\r\n */\r\n DateAxis.prototype.getCellStartPosition = function (position) {\r\n return this.roundPosition(position, 0);\r\n };\r\n /**\r\n * Returns an relative position of the end of the cell (period), that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Relative position\r\n * @return Cell end relative position\r\n */\r\n DateAxis.prototype.getCellEndPosition = function (position) {\r\n return this.roundPosition(position, 1);\r\n //return this.dateToPosition($time.add(this.positionToDate(this.roundPosition(position, 1)), this.baseInterval.timeUnit, this.baseInterval.count));\r\n };\r\n /**\r\n * Returns a Series data item that corresponds to the specific pixel position\r\n * of the Axis.\r\n *\r\n * If `findNearest` (third parameter) is set to `true`, the method will try\r\n * to locate nearest available data item if none is found directly under\r\n * `position`.\r\n *\r\n * @param series Series\r\n * @param position Position (px)\r\n * @param findNearest Should axis try to find nearest tooltip if there is no data item at exact position\r\n * @return Data item\r\n */\r\n DateAxis.prototype.getSeriesDataItem = function (series, position, findNearest) {\r\n var value = this.positionToValue(position);\r\n var location = 0.5;\r\n if (this.axisLetter == \"Y\") {\r\n location = series.dataItems.template.locations.dateY;\r\n }\r\n else {\r\n location = series.dataItems.template.locations.dateX;\r\n }\r\n var deltaValue = value - location * this.baseDuration;\r\n var date = $time.round(new Date(value), this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n var nextDate = $time.round(new Date(value + this.baseDuration), this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n if (nextDate.getTime() > date.getTime()) {\r\n if (Math.abs(nextDate.getTime() - deltaValue) < Math.abs(deltaValue - date.getTime())) {\r\n date = nextDate;\r\n }\r\n }\r\n var dataItemsByAxis = series.dataItemsByAxis.getKey(this.uid);\r\n var dataItem = dataItemsByAxis.getKey(date.getTime() + series.currentDataSetId);\r\n // todo: alternatively we can find closiest here\r\n if (!dataItem && findNearest) {\r\n var key_1;\r\n if (this.axisLetter == \"Y\") {\r\n key_1 = \"dateY\";\r\n }\r\n else {\r\n key_1 = \"dateX\";\r\n }\r\n dataItem = series.dataItems.getIndex(series.dataItems.findClosestIndex(date.getTime(), function (x) {\r\n if (x[key_1]) {\r\n return x[key_1].getTime();\r\n }\r\n else {\r\n return -Infinity;\r\n }\r\n }, \"any\"));\r\n }\r\n return dataItem;\r\n };\r\n /**\r\n * Returns a formatted date based on position in axis scale.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\r\n DateAxis.prototype.getPositionLabel = function (position) {\r\n // @todo Better format recognition\r\n var date = this.positionToDate(position);\r\n return this._df.format(date, this.getCurrentLabelFormat());\r\n };\r\n /**\r\n * Returns label date format based on currently used time units\r\n *\r\n * @return Format\r\n */\r\n DateAxis.prototype.getCurrentLabelFormat = function () {\r\n return this.dateFormats.getKey(this._gridInterval ? this._gridInterval.timeUnit : \"day\");\r\n };\r\n /**\r\n * Initializes an Axis renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.initRenderer = function () {\r\n _super.prototype.initRenderer.call(this);\r\n var renderer = this.renderer;\r\n if (renderer) {\r\n // Set defaults\r\n renderer.ticks.template.location = 0;\r\n renderer.grid.template.location = 0;\r\n renderer.labels.template.location = 0;\r\n renderer.baseGrid.disabled = true;\r\n }\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"basePoint\", {\r\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point\r\n */\r\n get: function () {\r\n return { x: 0, y: 0 };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n DateAxis.prototype.animateMinMax = function (min, max) {\r\n var _this = this;\r\n var animation = this.animate([{ property: \"_minAdjusted\", from: this._minAdjusted, to: min }, { property: \"_maxAdjusted\", from: this._maxAdjusted, to: max }], this.rangeChangeDuration, this.rangeChangeEasing);\r\n animation.events.on(\"animationprogress\", function () {\r\n _this.dispatch(\"extremeschanged\");\r\n });\r\n return animation;\r\n };\r\n /**\r\n * Invalidates axis data items when series extremes change\r\n */\r\n DateAxis.prototype.handleExtremesChange = function () {\r\n _super.prototype.handleExtremesChange.call(this);\r\n if (this.groupData) {\r\n var id = this.baseInterval.timeUnit + this.baseInterval.count;\r\n this.groupMin[id] = this._finalMin;\r\n this.groupMax[id] = this._finalMax;\r\n }\r\n };\r\n /**\r\n * Zooms axis to specific Dates.\r\n *\r\n * @param startDate Start date\r\n * @param endValue End date\r\n * @param skipRangeEvent Do not invoke events\r\n * @param instantly Do not play zoom animations\r\n */\r\n DateAxis.prototype.zoomToDates = function (startDate, endDate, skipRangeEvent, instantly, adjust) {\r\n startDate = this._df.parse(startDate);\r\n endDate = this._df.parse(endDate);\r\n this.zoomToValues(startDate.getTime(), endDate.getTime(), skipRangeEvent, instantly, adjust);\r\n };\r\n /**\r\n * Zooms axis to specific values.\r\n *\r\n * @param startValue Start value\r\n * @param endValue End value\r\n * @param skipRangeEvent Do not invoke events\r\n * @param instantly Do not play zoom animations\r\n */\r\n DateAxis.prototype.zoomToValues = function (startValue, endValue, skipRangeEvent, instantly, adjust) {\r\n var _this = this;\r\n if (!this.groupData) {\r\n //let start: number = (startValue - this.min) / (this.max - this.min);\r\n //let end: number = (endValue - this.min) / (this.max - this.min);\r\n var start = this.valueToPosition(startValue);\r\n var end = this.valueToPosition(endValue);\r\n this.zoom({ start: start, end: end }, skipRangeEvent, instantly);\r\n }\r\n else {\r\n var difference = this.adjustDifference(startValue, endValue);\r\n var isEnd = false;\r\n if (endValue == this.max) {\r\n isEnd = true;\r\n }\r\n var isStart = false;\r\n if (startValue == this.min) {\r\n isStart = true;\r\n }\r\n if ($type.hasValue(difference)) {\r\n var mainBaseInterval = this.mainBaseInterval;\r\n var groupInterval_1 = this.chooseInterval(0, difference, this.groupCount, this.groupIntervals);\r\n if ((groupInterval_1.timeUnit == mainBaseInterval.timeUnit && groupInterval_1.count < mainBaseInterval.count) || $time.getDuration(groupInterval_1.timeUnit, 1) < $time.getDuration(mainBaseInterval.timeUnit, 1)) {\r\n groupInterval_1 = __assign({}, mainBaseInterval);\r\n }\r\n var id = groupInterval_1.timeUnit + groupInterval_1.count;\r\n var min_1 = this.groupMin[id];\r\n var max_1 = this.groupMax[id];\r\n if (!$type.isNumber(min_1) || !$type.isNumber(max_1)) {\r\n min_1 = Number.POSITIVE_INFINITY;\r\n max_1 = Number.NEGATIVE_INFINITY;\r\n this.series.each(function (series) {\r\n var seriesMin = series.min(_this);\r\n var seriesMax = series.max(_this);\r\n if (series._dataSets) {\r\n var ds = series._dataSets.getKey(groupInterval_1.timeUnit + groupInterval_1.count);\r\n if (ds) {\r\n var mindi = ds.getIndex(0);\r\n var maxdi = ds.getIndex(ds.length - 1);\r\n if (mindi) {\r\n if (series.xAxis == _this) {\r\n seriesMin = mindi.dateX.getTime();\r\n }\r\n else if (series.yAxis == _this) {\r\n seriesMin = mindi.dateY.getTime();\r\n }\r\n }\r\n if (maxdi) {\r\n if (series.xAxis == _this) {\r\n seriesMax = maxdi.dateX.getTime();\r\n }\r\n else if (series.yAxis == _this) {\r\n seriesMax = maxdi.dateY.getTime();\r\n }\r\n }\r\n }\r\n }\r\n seriesMax = $time.round($time.add(new Date(seriesMax), groupInterval_1.timeUnit, 1, _this._df.utc), groupInterval_1.timeUnit, 1, _this._df.firstDayOfWeek, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone).getTime();\r\n if (seriesMin < min_1) {\r\n min_1 = seriesMin;\r\n }\r\n if (seriesMax > max_1) {\r\n max_1 = seriesMax;\r\n }\r\n });\r\n this.groupMin[id] = min_1;\r\n this.groupMax[id] = max_1;\r\n }\r\n startValue = $math.fitToRange(startValue, min_1, max_1);\r\n endValue = $math.fitToRange(endValue, min_1, max_1);\r\n if (adjust) {\r\n if (isEnd) {\r\n startValue = endValue - difference;\r\n startValue = $math.fitToRange(startValue, min_1, max_1);\r\n }\r\n if (isStart) {\r\n endValue = startValue + difference;\r\n endValue = $math.fitToRange(endValue, min_1, max_1);\r\n }\r\n }\r\n var start = (startValue - min_1) / (max_1 - min_1);\r\n var end = (endValue - min_1) / (max_1 - min_1);\r\n this.zoom({ start: start, end: end }, skipRangeEvent, instantly);\r\n }\r\n }\r\n };\r\n /**\r\n * Adds `baseInterval` to \"as is\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as is?\r\n */\r\n DateAxis.prototype.asIs = function (field) {\r\n return field == \"baseInterval\" || _super.prototype.asIs.call(this, field);\r\n };\r\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\r\n DateAxis.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n _super.prototype.copyFrom.call(this, source);\r\n this.dateFormats = source.dateFormats;\r\n this.periodChangeDateFormats = source.periodChangeDateFormats;\r\n this.groupIntervals.clear();\r\n source.groupIntervals.each(function (interval) {\r\n _this.groupIntervals.push(__assign({}, interval));\r\n });\r\n this.gridIntervals.clear();\r\n source.gridIntervals.each(function (interval) {\r\n _this.gridIntervals.push(__assign({}, interval));\r\n });\r\n if (source._baseInterval) {\r\n this.baseInterval = source._baseInterval;\r\n }\r\n };\r\n /**\r\n * Shows Axis tooltip at specific relative position within Axis. (0-1)\r\n *\r\n * @param position Position (0-1)\r\n * @param local or global position\r\n */\r\n DateAxis.prototype.showTooltipAtPosition = function (position, local) {\r\n var _this = this;\r\n if (!local) {\r\n position = this.toAxisPosition(position);\r\n }\r\n if (this.snapTooltip) {\r\n // rounding is not good, pen/aac4e7f66f019d36b2447f050c600c13 (no last tootltip shown)\r\n var actualDate = this.positionToDate(position); //$time.round(this.positionToDate(position), this.baseInterval.timeUnit, 1, this.getFirstWeekDay(), this.dateFormatter.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n var actualTime_1 = actualDate.getTime();\r\n var closestDate_1;\r\n this.series.each(function (series) {\r\n if (series.baseAxis == _this) {\r\n var dataItem = _this.getSeriesDataItem(series, position, true);\r\n if (dataItem) {\r\n var date = void 0;\r\n if (series.xAxis == _this) {\r\n date = dataItem.dateX;\r\n }\r\n if (series.yAxis == _this) {\r\n date = dataItem.dateY;\r\n }\r\n if (!closestDate_1) {\r\n closestDate_1 = date;\r\n }\r\n else {\r\n if (Math.abs(closestDate_1.getTime() - actualTime_1) > Math.abs(date.getTime() - actualTime_1)) {\r\n closestDate_1 = date;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n if (closestDate_1) {\r\n var closestTime_1 = closestDate_1.getTime();\r\n closestDate_1 = $time.round(new Date(closestTime_1), this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n closestTime_1 = closestDate_1.getTime();\r\n var tooltipLocation = this.renderer.tooltipLocation;\r\n if (tooltipLocation == 0) {\r\n tooltipLocation = 0.0001;\r\n }\r\n closestDate_1 = new Date(closestDate_1.getTime() + this.baseDuration * tooltipLocation);\r\n position = this.dateToPosition(closestDate_1);\r\n if (this.chart.cursor && this.chart.cursor.snapToSeries) {\r\n //void\r\n }\r\n else {\r\n this.series.each(function (series) {\r\n var dataItem = series.dataItemsByAxis.getKey(_this.uid).getKey(closestTime_1 + series.currentDataSetId);\r\n var point = series.showTooltipAtDataItem(dataItem);\r\n if (point) {\r\n _this.chart._seriesPoints.push({ series: series, point: point });\r\n }\r\n else {\r\n // check, otherwise column tooltip will be hidden\r\n if (series.tooltipText || series.tooltipHTML) {\r\n series.hideTooltip();\r\n }\r\n }\r\n });\r\n }\r\n //this.chart.sortSeriesTooltips(seriesPoints);\r\n }\r\n }\r\n _super.prototype.showTooltipAtPosition.call(this, position, true);\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"snapTooltip\", {\r\n /**\r\n * @return Should snap?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"snapTooltip\");\r\n },\r\n /**\r\n * Should the nearest tooltip be shown if no data item is found on the\r\n * current cursor position.\r\n *\r\n * @default true\r\n * @param value Should snap?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"snapTooltip\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"groupData\", {\r\n /**\r\n * @return Group data points?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"groupData\");\r\n },\r\n /**\r\n * Indicates if data should be aggregated to composide data items if there\r\n * are more data items in selected range than `groupCount`.\r\n *\r\n * Grouping will occur automatically, based on current selection range, and\r\n * will change dynamically when user zooms in/out the chart.\r\n *\r\n * NOTE: This works only if [[DateAxis]] is base axis of an [[XYSeries]].\r\n *\r\n * The related [[XYSeries]] also needs to be set up to take advantage of, by\r\n * setting its [`groupFields`](https://www.amcharts.com/docs/v4/reference/xyseries/#groupFields_property).\r\n *\r\n * The group intervals to aggregate data to is defined by `groupIntervals`\r\n * property.\r\n *\r\n * ```TypeScript\r\n * let dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * let valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * let series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JavaScript\r\n * var dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * var valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * var series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"groupData\": true\r\n * }],\r\n * \"yAxes\": [{\r\n * \"type\": \"ValueAxis\"\r\n * }],\r\n * \"series\": [{\r\n * \"type\": \"LineSeries\",\r\n * \"dataFields\": {\r\n * \"dateX\": \"date\",\r\n * \"valueY\": \"value\"\r\n * },\r\n * \"groupFields\": {\r\n * \"valueY\": \"average\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default false\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/#Dynamic_data_item_grouping} for more information about dynamic data item grouping.\r\n * @since 4.7.0\r\n * @param value Group data points?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this.setPropertyValue(\"groupData\", value)) {\r\n this.series.each(function (series) {\r\n series.setDataSet(\"\");\r\n if (value && !series.dataGrouped && series.inited) {\r\n series._baseInterval[_this.uid] = _this.mainBaseInterval;\r\n _this.groupSeriesData(series);\r\n }\r\n });\r\n this._currentDataSetId = \"\";\r\n this._groupInterval = undefined;\r\n this.invalidate();\r\n this.invalidateSeries();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"groupInterval\", {\r\n /**\r\n * @return Interval\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"groupInterval\");\r\n },\r\n /**\r\n * Disables automatic selection of data grouping intervals and always uses\r\n * `groupInterval` if set. Works only if `groupData = true`.\r\n *\r\n * @since 4.9.24\r\n * @param value Interval\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"groupInterval\", value)) {\r\n this.invalidate();\r\n this.invalidateSeries();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"groupCount\", {\r\n /**\r\n * @return Number of data items\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"groupCount\");\r\n },\r\n /**\r\n * Indicates threshold of data items in selected range at which to start\r\n * aggregating data items if `groupData = true`.\r\n *\r\n * @default 200\r\n * @since 4.7.0\r\n * @param value Number of data items\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"groupCount\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"timezoneOffset\", {\r\n /**\r\n * @todo Timezone offset in minutes\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"timezoneOffset\");\r\n },\r\n /**\r\n * If set will recalculate all timestamps in data by applying specific offset\r\n * in minutes.\r\n *\r\n * IMPORTANT: do not set `timezoneOffset` on both `DateAxis` and `dateFormatter`. It\r\n * will skew your results by applying offset twice.\r\n *\r\n * @since 4.8.5\r\n * @param value Time zone offset in minutes\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"timezoneOffset\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"timezone\", {\r\n /**\r\n * @return Timezone\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"timezone\");\r\n },\r\n /**\r\n * If set will recalculate all timestamps in data to specific named timezone,\r\n * e.g. `\"America/Vancouver\"`, `\"Australia/Sydney\"`, `\"UTC\"`, etc.\r\n *\r\n * IMPORTANT: it is no longer recommended to use this setting. Please\r\n * set`timezone` on `dateFormatter`.\r\n *\r\n * @deprecated\r\n * @since 4.10.1\r\n * @param value Time zone\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"timezone\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"gridInterval\", {\r\n /**\r\n * Current grid interval.\r\n *\r\n * @return Grid interval\r\n */\r\n get: function () {\r\n return this._gridInterval;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n DateAxis.prototype.makeGap = function (dataItem, previous) {\r\n var series = dataItem.component;\r\n if (dataItem && previous) {\r\n if (!series.connect && $type.isNumber(series.autoGapCount)) {\r\n if (series.baseAxis == this) {\r\n var date = dataItem.dates[\"date\" + this.axisLetter];\r\n var prevDate = previous.dates[\"date\" + this.axisLetter];\r\n if (date && prevDate) {\r\n var time = date.getTime();\r\n var prevTime = prevDate.getTime();\r\n if (time - prevTime > series.autoGapCount * this.baseDuration) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"baseValue\", {\r\n /**\r\n * @return base value\r\n */\r\n get: function () {\r\n return this.min;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DateAxis.prototype._saveMinMax = function (min, max) {\r\n var groupInterval = this.groupInterval;\r\n if (!groupInterval) {\r\n groupInterval = this.mainBaseInterval;\r\n }\r\n var id = groupInterval.timeUnit + groupInterval.count;\r\n this._intervalMin[id] = min;\r\n this._intervalMax[id] = max;\r\n };\r\n return DateAxis;\r\n}(ValueAxis));\r\nexport { DateAxis };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DateAxis\"] = DateAxis;\r\nregistry.registeredClasses[\"DateAxisDataItem\"] = DateAxisDataItem;\r\n","/**\r\n * Module, defining Axis Renderer for vertical axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\nimport { WavedLine } from \"../../core/elements/WavedLine\";\r\nimport { WavedRectangle } from \"../../core/elements/WavedRectangle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for horizontal axis.\r\n *\r\n * @see {@link IAxisRendererEvents} for a list of available events\r\n * @see {@link IAxisRendererAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererX = /** @class */ (function (_super) {\r\n __extends(AxisRendererX, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererX() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisRendererX\";\r\n _this.minGridDistance = 120;\r\n _this.opposite = false;\r\n _this.rotation = 0;\r\n _this.width = percent(100);\r\n _this.labels.template.horizontalCenter = \"middle\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererX.prototype.setAxis = function (axis) {\r\n _super.prototype.setAxis.call(this, axis);\r\n axis.layout = \"vertical\";\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererX.prototype.updateGridContainer = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var gridContainer = this.gridContainer;\r\n gridContainer.x = axis.pixelX;\r\n gridContainer.width = axis.axisLength;\r\n }\r\n };\r\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.processRenderer = function () {\r\n _super.prototype.processRenderer.call(this);\r\n // can not do this in init, as axis is set later\r\n var axis = this.axis;\r\n if (axis) {\r\n if (!(axis.width instanceof Percent)) {\r\n axis.width = percent(100);\r\n }\r\n // @todo Is thi sneeded?\r\n $utils.used(this.line);\r\n var title = axis.title;\r\n title.rotation = 0;\r\n title.align = \"center\";\r\n if (this.opposite) {\r\n this.line.toFront();\r\n title.toBack();\r\n }\r\n else {\r\n title.toFront();\r\n this.toBack();\r\n this.line.toBack();\r\n }\r\n }\r\n };\r\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.updateTooltip = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var bigNum = 1000;\r\n var bbx = this.line.pixelX;\r\n var bby = this.line.pixelY;\r\n var bbw = this.axisLength;\r\n var bbh = bigNum;\r\n // top\r\n if (this.opposite) {\r\n if (!this.inside) {\r\n bby = -bigNum;\r\n bbh = bigNum;\r\n }\r\n }\r\n // bottom\r\n else {\r\n if (this.inside) {\r\n bby = -bigNum;\r\n bbh = bigNum;\r\n }\r\n }\r\n this.axis.updateTooltip(\"vertical\", { x: bbx, y: bby, width: bbw, height: bbh });\r\n }\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererX.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n label.isMeasured = !label.inside;\r\n var deltaY = 0;\r\n var verticalCenter;\r\n var maxHeight = this.gridContainer.maxHeight;\r\n if (this.opposite) {\r\n if (label.inside) {\r\n verticalCenter = \"top\";\r\n if (label.valign == \"bottom\") {\r\n deltaY = maxHeight;\r\n verticalCenter = \"bottom\";\r\n }\r\n if (label.valign == \"middle\") {\r\n deltaY = maxHeight / 2;\r\n verticalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n verticalCenter = \"bottom\";\r\n }\r\n point.y = deltaY;\r\n }\r\n else {\r\n if (label.inside) {\r\n verticalCenter = \"bottom\";\r\n if (label.valign == \"top\") {\r\n deltaY = -maxHeight;\r\n verticalCenter = \"top\";\r\n }\r\n if (label.valign == \"middle\") {\r\n deltaY = -maxHeight / 2;\r\n verticalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n verticalCenter = \"top\";\r\n }\r\n point.y += deltaY;\r\n }\r\n if (label.rotation == 0) {\r\n // Apply fuzzy logic to verticalCenter only if labels are not rotated\r\n label.verticalCenter = verticalCenter;\r\n }\r\n this.positionItem(label, point);\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n Object.defineProperty(AxisRendererX.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n var axis = this.axis;\r\n return (axis.measuredWidth - axis.pixelPaddingRight - axis.pixelPaddingLeft) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererX.prototype.positionToPoint = function (position, position2) {\r\n return { x: this.positionToCoordinate(position), y: 0 };\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererX.prototype.pointToPosition = function (point) {\r\n return this.coordinateToPosition(point.x, point.y);\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererX.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n var x1 = $math.fitToRange(this.positionToCoordinate(startPosition), 0, this.axisLength);\r\n var x2 = $math.fitToRange(this.positionToCoordinate(endPosition), 0, this.axisLength);\r\n var w = Math.abs(x2 - x1);\r\n var h = this.getHeight();\r\n var x = Math.min(x1, x2);\r\n var y = 0;\r\n return $path.rectToPath({\r\n x: x,\r\n y: y,\r\n width: w,\r\n height: h\r\n }, true);\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRendererX.prototype.updateBreakElement = function (axisBreak) {\r\n _super.prototype.updateBreakElement.call(this, axisBreak);\r\n var startLine = axisBreak.startLine;\r\n var endLine = axisBreak.endLine;\r\n var fillShape = axisBreak.fillShape;\r\n var startPoint = axisBreak.startPoint;\r\n var endPoint = axisBreak.endPoint;\r\n var y1 = axisBreak.pixelMarginLeft;\r\n var y2 = this.getHeight() - axisBreak.pixelMarginTop - axisBreak.pixelMarginBottom;\r\n startPoint.x = $math.fitToRange(startPoint.x, -1, this.axisLength + 1);\r\n endPoint.x = $math.fitToRange(endPoint.x, -1, this.axisLength + 1);\r\n if (startPoint.x == endPoint.x && (startPoint.x < 0 || startPoint.x > this.axisLength)) {\r\n axisBreak.fillShape.__disabled = true;\r\n }\r\n else {\r\n axisBreak.fillShape.__disabled = false;\r\n }\r\n startLine.y = y1;\r\n startLine.width = 0;\r\n startLine.height = y2;\r\n endLine.y = y1;\r\n endLine.width = 0;\r\n endLine.height = y2;\r\n fillShape.height = y2;\r\n fillShape.width = Math.abs(endPoint.x - startPoint.x);\r\n fillShape.y = y1;\r\n fillShape.x = startPoint.x;\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n //point.x = $utils.spritePointToSprite({x:point.x, y:0}, this, this.gridContainer).x;\r\n grid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: this.getHeight() });\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n var tickLength = tick.length;\r\n point.y = $utils.spritePointToSprite({ x: 0, y: this.line.pixelY }, this.line.parent, this.gridContainer).y;\r\n if (this.opposite) {\r\n tickLength *= (tick.inside ? 1 : -1);\r\n }\r\n else {\r\n tickLength *= (tick.inside ? -1 : 1);\r\n }\r\n tick.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: tickLength });\r\n this.positionItem(tick, point);\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.updateAxisLine = function () {\r\n this.line.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: this.axisLength, y: 0 });\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var axis = this.axis;\r\n var h = this.getHeight();\r\n var w = this.axisLength;\r\n var baseGrid = this.baseGrid;\r\n var x = axis.basePoint.x;\r\n if (x < -0.2 || x > w + 0.2) {\r\n baseGrid.hide(0);\r\n }\r\n else {\r\n var y = $utils.spritePointToSprite({ x: 0, y: 0 }, this.gridContainer, baseGrid.parent).y;\r\n baseGrid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: h });\r\n baseGrid.moveTo({ x: x, y: y });\r\n baseGrid.show(0);\r\n }\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRendererX.prototype.createBreakSprites = function (axisBreak) {\r\n axisBreak.startLine = new WavedLine();\r\n axisBreak.endLine = new WavedLine();\r\n var wavedRectangle = new WavedRectangle();\r\n wavedRectangle.setWavedSides(false, true, false, true);\r\n axisBreak.fillShape = wavedRectangle;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererX.prototype.toAxisPosition = function (value) {\r\n var inversedPosition = value;\r\n var axis = this.axis;\r\n if (axis) {\r\n var relativePositionSprite = axis.relativePositionSprite;\r\n var x = axis.pixelX;\r\n if (relativePositionSprite) {\r\n x = $utils.spritePointToSprite({ x: this.pixelX, y: 0 }, this.parent, relativePositionSprite).x;\r\n }\r\n else {\r\n relativePositionSprite = axis.parent;\r\n }\r\n if (relativePositionSprite) {\r\n var relativeX = x / relativePositionSprite.innerWidth;\r\n var relativeWidth = axis.axisLength / relativePositionSprite.innerWidth;\r\n return (inversedPosition - relativeX) / relativeWidth;\r\n }\r\n }\r\n return value;\r\n };\r\n /**\r\n * Updates and positions axis bullets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n point.y = $utils.spritePointToSprite({ x: 0, y: this.line.pixelY }, this.line.parent, this.gridContainer).y;\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n return AxisRendererX;\r\n}(AxisRenderer));\r\nexport { AxisRendererX };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRendererX\"] = AxisRendererX;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Put labels inside plot area.\r\n * Disable first and last labels.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererX) {\r\n var state = target.states.create(stateId);\r\n state.properties.inside = true;\r\n state.properties.maxLabelPosition = 0.9;\r\n state.properties.minLabelPosition = 0.1;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Disable labels altogather on very small charts\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXXS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererX) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n","/**\r\n * A module which defines functionality related to Category Axis Break.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisBreak } from \"./AxisBreak\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base class to define \"breaks\" in axes\r\n * @see {@link ICategoryAxisBreakEvents} for a list of available events\r\n * @see {@link ICategoryAxisBreakAdapters} for a list of available Adapters\r\n */\r\nvar CategoryAxisBreak = /** @class */ (function (_super) {\r\n __extends(CategoryAxisBreak, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CategoryAxisBreak() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CategoryAxisBreak\";\r\n _this.properties.startLocation = 0.5;\r\n _this.properties.endLocation = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"startPosition\", {\r\n /**\r\n * Pixel position of the break's start.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n if (this.axis) {\r\n return this.axis.indexToPosition(this.adjustedStartValue, this.startLocation);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"endPosition\", {\r\n /**\r\n * Pixel position of the break's end.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n if (this.axis) {\r\n return this.axis.indexToPosition(this.adjustedEndValue, this.endLocation);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"startCategory\", {\r\n /**\r\n * @return Start category\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startCategory\");\r\n },\r\n /**\r\n * A category break starts on.\r\n *\r\n * @param value Start category\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startCategory\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"endCategory\", {\r\n /**\r\n * @return End category\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endCategory\");\r\n },\r\n /**\r\n * A category break ends on.\r\n *\r\n * @param value End category\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endCategory\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"startValue\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n var category = this.getPropertyValue(\"startCategory\");\r\n if (category) {\r\n return this.axis.categoryToIndex(category);\r\n }\r\n else {\r\n return this.getPropertyValue(\"startValue\");\r\n }\r\n },\r\n /**\r\n * An index of start category.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startValue\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"endValue\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n var category = this.getPropertyValue(\"endCategory\");\r\n if (category) {\r\n return this.axis.categoryToIndex(category);\r\n }\r\n else {\r\n return this.getPropertyValue(\"endValue\");\r\n }\r\n },\r\n /**\r\n * An index of end category or a end value.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endValue\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"startLocation\", {\r\n /**\r\n * @return Break start location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startLocation\");\r\n },\r\n /**\r\n * Indicates where within starting category break should begin.\r\n *\r\n * Values range from `0` (start) to `1` (end), with default being `0.5` (middle).\r\n *\r\n * E.g. if you want to a break to fully encompass start and end categories,\r\n * you should set `startLocation = 0` and `endLocation = 1`.\r\n *\r\n * @since 4.9.17\r\n * @default 0.5\r\n * @param value Break start location\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startLocation\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"endLocation\", {\r\n /**\r\n * @return Break end location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endLocation\");\r\n },\r\n /**\r\n * Indicates where within ending category break should end.\r\n *\r\n * Values range from `0` (start) to `1` (end), with default being `0.5` (middle).\r\n *\r\n * E.g. if you want to a break to fully encompass start and end categories,\r\n * you should set `startLocation = 0` and `endLocation = 1`.\r\n *\r\n * @since 4.9.17\r\n * @default 0.5\r\n * @param value Break end location\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endLocation\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CategoryAxisBreak;\r\n}(AxisBreak));\r\nexport { CategoryAxisBreak };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CategoryAxisBreak\"] = CategoryAxisBreak;\r\n","/**\r\n * Category axis module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Axis, AxisDataItem } from \"./Axis\";\r\nimport { AxisRendererX } from \"./AxisRendererX\";\r\nimport { AxisRendererY } from \"./AxisRendererY\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { CategoryAxisBreak } from \"./CategoryAxisBreak\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[CategoryAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar CategoryAxisDataItem = /** @class */ (function (_super) {\r\n __extends(CategoryAxisDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CategoryAxisDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.seriesDataItems = {};\r\n _this.className = \"CategoryAxisDataItem\";\r\n _this.text = \"{category}\";\r\n _this.locations.category = 0;\r\n _this.locations.endCategory = 1;\r\n _this.deltaPosition = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(CategoryAxisDataItem.prototype, \"category\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n if (this._adapterO) {\r\n if (this._adapterO.isEnabled(\"category\")) {\r\n return this._adapterO.apply(\"category\", this.properties.category);\r\n }\r\n }\r\n return this.properties.category;\r\n },\r\n /**\r\n * Category.\r\n *\r\n * @param value Category\r\n */\r\n set: function (value) {\r\n var oldCategory = this.properties.category;\r\n this.setProperty(\"category\", value);\r\n if ($type.hasValue(oldCategory) && oldCategory != value) {\r\n if (this.component) {\r\n this.component.validateDataElement(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisDataItem.prototype, \"endCategory\", {\r\n /**\r\n * @return End category\r\n */\r\n get: function () {\r\n return this.properties.endCategory;\r\n },\r\n /**\r\n * End category.\r\n *\r\n * Used for items that span several categories, like [[CategoryAxisBreak]].\r\n *\r\n * @param value End category\r\n */\r\n set: function (value) {\r\n this.setProperty(\"endCategory\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisDataItem.prototype, \"deltaPosition\", {\r\n get: function () {\r\n return this.properties.deltaCoordinate;\r\n },\r\n set: function (value) {\r\n if (value != this.properties.deltaCoordinate) {\r\n this.setProperty(\"deltaCoordinate\", value);\r\n if (this.component) {\r\n this.component.invalidateDataItems();\r\n this.component.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CategoryAxisDataItem;\r\n}(AxisDataItem));\r\nexport { CategoryAxisDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to create a category-based axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Clients\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Clients\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"CategoryAxis\",\r\n * \"title\": {\r\n * \"text\": \"Clients\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link ICategoryAxisEvents} for a list of available Events\r\n * @see {@link ICategoryAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar CategoryAxis = /** @class */ (function (_super) {\r\n __extends(CategoryAxis, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CategoryAxis() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A collection that holds Axis' data items sorted by each category.\r\n */\r\n _this.dataItemsByCategory = new Dictionary();\r\n _this.className = \"CategoryAxis\";\r\n // Set field name\r\n _this.axisFieldName = \"category\";\r\n _this._lastDataItem = _this.createDataItem();\r\n _this._lastDataItem.component = _this;\r\n _this._disposers.push(_this._lastDataItem);\r\n // Apply theme\r\n _this.applyTheme();\r\n var dataItemsByCategory = _this.dataItemsByCategory;\r\n _this.addDisposer(_this.mainDataSet.events.on(\"removed\", function (event) {\r\n dataItemsByCategory.removeKey(event.oldValue.category);\r\n }));\r\n return _this;\r\n }\r\n /**\r\n * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n CategoryAxis.prototype.createDataItem = function () {\r\n return new CategoryAxisDataItem();\r\n };\r\n /**\r\n * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n *\r\n * @return Axis break\r\n */\r\n CategoryAxis.prototype.createAxisBreak = function () {\r\n return new CategoryAxisBreak();\r\n };\r\n /**\r\n * Processes a related series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\r\n CategoryAxis.prototype.processSeriesDataItem = function (dataItem, axisLetter) {\r\n _super.prototype.processSeriesDataItem.call(this, dataItem, axisLetter);\r\n var category = dataItem[\"category\" + this.axisLetter];\r\n if ($type.hasValue(category)) {\r\n var categoryAxisDataItem = this.dataItemsByCategory.getKey(category);\r\n if (categoryAxisDataItem) {\r\n var seriesId = dataItem.component.uid;\r\n var seriesDataItems = categoryAxisDataItem.seriesDataItems[seriesId];\r\n if (!seriesDataItems) {\r\n seriesDataItems = [];\r\n categoryAxisDataItem.seriesDataItems[seriesId] = seriesDataItems;\r\n }\r\n seriesDataItems.push(dataItem);\r\n }\r\n }\r\n else {\r\n dataItem.component.dataItems.remove(dataItem);\r\n }\r\n };\r\n /**\r\n * Validates the data range.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\r\n CategoryAxis.prototype.validateDataRange = function () {\r\n var _this = this;\r\n _super.prototype.validateDataRange.call(this);\r\n $iter.each(this._series.iterator(), function (series) {\r\n if ((series.xAxis instanceof CategoryAxis) && (series.yAxis instanceof CategoryAxis)) {\r\n series.invalidateDataRange();\r\n }\r\n else {\r\n var startIndex = _this.positionToIndex(_this.start);\r\n var endIndex = _this.positionToIndex(_this.end);\r\n if (endIndex >= _this.dataItems.length) {\r\n endIndex--;\r\n }\r\n var seriesId = series.uid;\r\n var minIndex = void 0;\r\n var maxIndex = void 0;\r\n for (var i = startIndex; i <= endIndex; i++) {\r\n var axisDataItem = _this.dataItems.getIndex(i);\r\n if (axisDataItem) {\r\n var seriesDataItems = axisDataItem.seriesDataItems[seriesId];\r\n if (seriesDataItems) {\r\n for (var i_1 = 0; i_1 < seriesDataItems.length; i_1++) {\r\n var seriesDataItem = seriesDataItems[i_1];\r\n if (seriesDataItem) {\r\n var index = seriesDataItem.index;\r\n if (!$type.isNumber(minIndex) || index < minIndex) {\r\n minIndex = index;\r\n }\r\n if (!$type.isNumber(maxIndex) || index > maxIndex) {\r\n maxIndex = index;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if ($type.isNumber(minIndex)) {\r\n series.startIndex = minIndex;\r\n }\r\n else {\r\n series.start = _this.start;\r\n }\r\n if ($type.isNumber(maxIndex)) {\r\n series.endIndex = maxIndex + 1;\r\n }\r\n else {\r\n series.end = _this.end;\r\n }\r\n // range might not change, but axis breaks might.\r\n if (_this._axisBreaks && _this._axisBreaks.length > 0) {\r\n series.invalidateDataRange();\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Validates the whole axis. Causes it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\r\n CategoryAxis.prototype.validate = function () {\r\n var _this = this;\r\n _super.prototype.validate.call(this);\r\n var dataCount = this.dataItems.length;\r\n var startIndex = $math.fitToRange(Math.floor(this.start * dataCount - 1), 0, dataCount);\r\n var endIndex = $math.fitToRange(Math.ceil(this.end * dataCount), 0, dataCount);\r\n if (this.renderer.invalid) {\r\n this.renderer.validate();\r\n }\r\n // find frequency at which we'll show items\r\n var maxCount = this.renderer.axisLength / Math.max(this.renderer.minGridDistance, 1 / Number.MAX_SAFE_INTEGER);\r\n var frequency = Math.min(this.dataItems.length, Math.ceil((endIndex - startIndex) / maxCount));\r\n this._startIndex = Math.floor(startIndex / frequency) * frequency;\r\n this._endIndex = Math.ceil(this.end * dataCount);\r\n this.fixAxisBreaks();\r\n if (this._startIndex == this._endIndex) {\r\n this._endIndex++;\r\n }\r\n this._frequency = frequency;\r\n if (this.axisLength <= 0) {\r\n return;\r\n }\r\n this.maxZoomFactor = this.dataItems.length;\r\n if (this.dataItems.length <= 0) {\r\n this.maxZoomFactor = 1;\r\n }\r\n this.resetIterators();\r\n // it's important to use protected variables here, as getters will return 0 - length\r\n // TODO use iterator instead\r\n // @ todo: not solved cat axis item fading\r\n startIndex = $math.max(0, this._startIndex - this._frequency);\r\n endIndex = $math.min(this.dataItems.length, this._endIndex + this._frequency);\r\n var itemIndex = 0;\r\n for (var i = 0; i < startIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n dataItem.__disabled = true;\r\n }\r\n for (var i = endIndex, len = this.dataItems.length; i < len; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n dataItem.__disabled = true;\r\n }\r\n for (var i = startIndex; i < endIndex; i++) {\r\n if (i < this.dataItems.length) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (i / this._frequency == Math.round(i / this._frequency)) {\r\n var axisBreak = this.isInBreak(i);\r\n if (!axisBreak) {\r\n this.appendDataItem(dataItem);\r\n this.validateDataElement(dataItem, itemIndex);\r\n }\r\n itemIndex++;\r\n }\r\n else {\r\n //previously we disabled all before, but this is better for cpu\r\n //this.validateDataElement(dataItem, itemIndex); // helps to solve shrinking // not good - creates all items\r\n dataItem.__disabled = true;\r\n }\r\n }\r\n }\r\n this.appendDataItem(this._lastDataItem);\r\n this.validateDataElement(this._lastDataItem, itemIndex + 1, this.dataItems.length);\r\n if (this._axisBreaks) {\r\n var axisBreaks = this._axisBreaks;\r\n axisBreaks.each(function (axisBreak) {\r\n var adjustedStartValue = axisBreak.adjustedStartValue;\r\n var adjustedEndValue = axisBreak.adjustedEndValue;\r\n if ($math.intersect({ start: adjustedStartValue, end: adjustedEndValue }, { start: _this._startIndex, end: _this._endIndex })) {\r\n for (var b = adjustedStartValue; b <= adjustedEndValue; b++) {\r\n var dataItem = _this.dataItems.getIndex(b);\r\n dataItem.__disabled = true;\r\n }\r\n var frequency_1 = $math.fitToRange(Math.ceil(_this._frequency / axisBreak.breakSize), 1, adjustedEndValue - adjustedStartValue);\r\n var itemIndex_1 = 0;\r\n if (axisBreak.breakSize > 0) {\r\n // TODO use iterator instead\r\n for (var b = adjustedStartValue; b <= adjustedEndValue; b = b + frequency_1) {\r\n var dataItem = _this.dataItems.getIndex(b);\r\n dataItem.__disabled = false;\r\n _this.appendDataItem(dataItem);\r\n _this.validateDataElement(dataItem, itemIndex_1);\r\n itemIndex_1++;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n this.validateBreaks();\r\n this.validateAxisRanges();\r\n this.ghostLabel.invalidate(); // solves font issue\r\n this.renderer.invalidateLayout();\r\n };\r\n /**\r\n * [validateDataElement description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @param itemIndex [description]\r\n */\r\n CategoryAxis.prototype.validateDataElement = function (dataItem, itemIndex, index) {\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n dataItem.itemIndex = this._axisItemCount;\r\n this._axisItemCount++;\r\n //dataItem.__disabled = false;\r\n var renderer = this.renderer;\r\n if (!$type.isNumber(index)) {\r\n index = this.categoryToIndex(dataItem.category);\r\n }\r\n var endIndex = this.categoryToIndex(dataItem.endCategory);\r\n if (!$type.isNumber(endIndex)) {\r\n endIndex = index;\r\n }\r\n var position = this.indexToPosition(index, dataItem.locations.category);\r\n var endPosition = this.indexToPosition(endIndex, dataItem.locations.endCategory);\r\n dataItem.position = position;\r\n var fillEndIndex;\r\n var fillPosition;\r\n var fillEndPosition;\r\n if (dataItem.isRange) {\r\n fillEndIndex = endIndex;\r\n fillPosition = this.indexToPosition(index, dataItem.locations.category);\r\n fillEndPosition = this.indexToPosition(fillEndIndex, dataItem.locations.endCategory);\r\n }\r\n dataItem.point = renderer.positionToPoint(position);\r\n var tick = dataItem.tick;\r\n if (tick && !tick.disabled) {\r\n renderer.updateTickElement(tick, position, endPosition);\r\n }\r\n var grid = dataItem.grid;\r\n if (grid && !grid.disabled) {\r\n renderer.updateGridElement(grid, position, endPosition);\r\n }\r\n var label = dataItem.label;\r\n if (label && !label.disabled) {\r\n // theorethically this might result problems if category text changes, the range text won't change. But otherwise range.label.text = \"custom text\" won't work, which is not intuitive.\r\n if (!dataItem.isRange || label.text == undefined) {\r\n dataItem.text = dataItem.text;\r\n }\r\n renderer.updateLabelElement(label, position, endPosition);\r\n if ((renderer instanceof AxisRendererY && dataItem.label.measuredWidth > this.ghostLabel.measuredWidth) || (renderer instanceof AxisRendererX && dataItem.label.measuredHeight > this.ghostLabel.measuredHeight)) {\r\n if (dataItem.label.html) {\r\n this.ghostLabel.html = dataItem.label.currentText;\r\n }\r\n else {\r\n this.ghostLabel.text = dataItem.label.currentText;\r\n }\r\n }\r\n }\r\n var fill = dataItem.axisFill;\r\n if (fill && !fill.disabled) {\r\n if (!dataItem.isRange) {\r\n fillEndIndex = index + this._frequency;\r\n fillPosition = this.indexToPosition(index, fill.location);\r\n fillEndPosition = this.indexToPosition(fillEndIndex, fill.location);\r\n }\r\n renderer.updateFillElement(fill, fillPosition, fillEndPosition);\r\n if (!dataItem.isRange) {\r\n this.fillRule(dataItem, itemIndex);\r\n }\r\n }\r\n if (dataItem.bullet) {\r\n renderer.updateBullet(dataItem.bullet, position, endPosition);\r\n }\r\n var mask = dataItem.mask;\r\n if (mask) {\r\n renderer.updateFillElement(mask, fillPosition, fillEndPosition);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n CategoryAxis.prototype.disposeData = function () {\r\n this.dataItemsByCategory.clear();\r\n _super.prototype.disposeData.call(this);\r\n };\r\n /**\r\n * Processes the axis data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n * @param dataContext The raw data that corresponds to this data item\r\n */\r\n CategoryAxis.prototype.processDataItem = function (dataItem, dataContext) {\r\n if (dataItem) {\r\n // creat a collection for fast access\r\n _super.prototype.processDataItem.call(this, dataItem, dataContext);\r\n // check if such category already exists\r\n //let existingDataItem: CategoryAxisDataItem = this.dataItemsByCategory.getKey(dataItem.category);\r\n //if (existingDataItem && existingDataItem != dataItem) {\r\n //\tthis.dataItems.remove(existingDataItem);\r\n //}\r\n if ($type.hasValue(dataItem.category)) {\r\n this.dataItemsByCategory.setKey(dataItem.category, dataItem);\r\n }\r\n }\r\n };\r\n CategoryAxis.prototype.getDataItem = function (dataContext) {\r\n var category = (dataContext[this.dataFields.category]);\r\n if ($type.hasValue(category)) {\r\n var dataItem = this.dataItemsByCategory.getKey(category);\r\n if (dataItem) {\r\n return dataItem;\r\n }\r\n else {\r\n return this.dataItems.create();\r\n }\r\n }\r\n };\r\n /**\r\n * Converts a category index to an actual screen coordinate on the axis.\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n *\r\n * @param index Index\r\n * @param location Location (0-1)\r\n * @return Position (px)\r\n */\r\n CategoryAxis.prototype.indexToPosition = function (index, location) {\r\n if (!$type.isNumber(location)) {\r\n location = 0.5;\r\n }\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var difference = this.adjustDifference(startIndex, endIndex);\r\n var startLocation = this.startLocation;\r\n var endLocation = this.endLocation;\r\n difference -= startLocation;\r\n difference -= (1 - endLocation);\r\n if (this._axisBreaks) {\r\n var axisBreaks = this._axisBreaks;\r\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\r\n var breakStartIndex = axisBreak.adjustedStartValue;\r\n var breakEndIndex = axisBreak.adjustedEndValue;\r\n if (index < startIndex || !$type.isNumber(breakStartIndex) || !$type.isNumber(breakEndIndex)) {\r\n return false;\r\n }\r\n if ($math.intersect({ start: breakStartIndex, end: breakEndIndex }, { start: startIndex, end: endIndex })) {\r\n breakStartIndex = Math.max(startIndex, breakStartIndex);\r\n breakEndIndex = Math.min(endIndex, breakEndIndex);\r\n var breakSize = axisBreak.breakSize;\r\n // value to the right of break end\r\n if (index > breakEndIndex) {\r\n startIndex += (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n }\r\n // value to the left of break start\r\n else if (index < breakStartIndex) {\r\n }\r\n // value within break\r\n else {\r\n index = breakStartIndex + (index - breakStartIndex) * breakSize;\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n var deltaPosition = 0;\r\n var dataItem = this.dataItems.getIndex(index);\r\n if (dataItem) {\r\n deltaPosition = dataItem.deltaPosition;\r\n }\r\n return $math.round(deltaPosition + (index + location - startLocation - startIndex) / difference, 5);\r\n };\r\n /**\r\n * Converts a string category name to relative position on axis.\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n *\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Position\r\n */\r\n CategoryAxis.prototype.categoryToPosition = function (category, location) {\r\n var index = this.categoryToIndex(category);\r\n return this.indexToPosition(index, location);\r\n };\r\n /**\r\n * Converts a string category name to a orientation point (x, y, angle) on axis\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Orientation point\r\n */\r\n CategoryAxis.prototype.categoryToPoint = function (category, location) {\r\n var position = this.categoryToPosition(category, location);\r\n var point = this.renderer.positionToPoint(position);\r\n var angle = this.renderer.positionToAngle(position);\r\n return { x: point.x, y: point.y, angle: angle };\r\n };\r\n /**\r\n * Converts a string category name to a orientation point (x, y, angle) on axis\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Orientation point\r\n */\r\n CategoryAxis.prototype.anyToPoint = function (category, location) {\r\n return this.categoryToPoint(category, location);\r\n };\r\n /**\r\n * Converts a string category name to relative position on axis.\r\n *\r\n * An alias to `categoryToPosition()`.\r\n *\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\r\n CategoryAxis.prototype.anyToPosition = function (category, location) {\r\n return this.categoryToPosition(category, location);\r\n };\r\n /**\r\n * Converts named category to an index of data item it corresponds to.\r\n *\r\n * @param category Category\r\n * @return Data item index\r\n */\r\n CategoryAxis.prototype.categoryToIndex = function (category) {\r\n if ($type.hasValue(category)) {\r\n var dataItem = this.dataItemsByCategory.getKey(category);\r\n if (dataItem) {\r\n return dataItem.index;\r\n }\r\n }\r\n };\r\n /**\r\n * Zooms the axis to specific named ctaegories.\r\n *\r\n * @param startCategory Start category\r\n * @param endCategory End category\r\n */\r\n CategoryAxis.prototype.zoomToCategories = function (startCategory, endCategory) {\r\n this.zoomToIndexes(this.categoryToIndex(startCategory), this.categoryToIndex(endCategory) + 1);\r\n };\r\n /**\r\n * [getAnyRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param start [description]\r\n * @param end [description]\r\n * @param startLocation [description]\r\n * @param endLocation [description]\r\n * @return [description]\r\n */\r\n CategoryAxis.prototype.getAnyRangePath = function (start, end, startLocation, endLocation) {\r\n var startPos = this.categoryToPosition(start, startLocation);\r\n var endPos = this.categoryToPosition(end, endLocation);\r\n return this.getPositionRangePath(startPos, endPos); // Base class (Axis) gets range shape from AxisRenderer\r\n };\r\n /**\r\n * Takes an absolute position (px) within axis and adjust it to a specific\r\n * `location` within category it corresponds to.\r\n *\r\n * @param position Source position (px)\r\n * @param location Location within category (0-1)\r\n * @return Adjusted position (px)\r\n */\r\n CategoryAxis.prototype.roundPosition = function (position, location) {\r\n var index = this.positionToIndex(position);\r\n return this.indexToPosition(index, location);\r\n };\r\n /**\r\n * Finds and returns first series data item with specific category\r\n * @param series Target series\r\n * @param category Category\r\n * @return XYSeriesDataItem data item\r\n */\r\n CategoryAxis.prototype.getFirstSeriesDataItem = function (series, category) {\r\n for (var i = 0; i < series.dataItems.length; i++) {\r\n var dataItem = series.dataItems.getIndex(i);\r\n if (series.xAxis == this) {\r\n if (dataItem.categoryX == category) {\r\n return dataItem;\r\n }\r\n }\r\n if (series.yAxis == this) {\r\n if (dataItem.categoryY == category) {\r\n return dataItem;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Finds and returns last series data item with specific category.\r\n * @param series Target series\r\n * @param category Category\r\n * @return XYSeriesDataItem data item\r\n */\r\n CategoryAxis.prototype.getLastSeriesDataItem = function (series, category) {\r\n for (var i = series.dataItems.length - 1; i >= 0; i--) {\r\n var dataItem = series.dataItems.getIndex(i);\r\n if (series.xAxis == this) {\r\n if (dataItem.categoryX == category) {\r\n return dataItem;\r\n }\r\n }\r\n if (series.yAxis == this) {\r\n if (dataItem.categoryY == category) {\r\n return dataItem;\r\n }\r\n }\r\n }\r\n };\r\n // todo: optimize\r\n CategoryAxis.prototype.getSeriesDataItemByCategory = function (category, series) {\r\n var _this = this;\r\n var seriesDataItem;\r\n series.dataItems.each(function (dataItem) {\r\n if (series.xAxis == _this) {\r\n if (dataItem.categoryX == category) {\r\n seriesDataItem = dataItem;\r\n }\r\n }\r\n else if (series.yAxis == _this) {\r\n if (dataItem.categoryY == category) {\r\n seriesDataItem = dataItem;\r\n }\r\n }\r\n });\r\n return seriesDataItem;\r\n };\r\n /**\r\n * Returns a data item from Series that corresponds to a specific absolute\r\n * position on the Axis.\r\n *\r\n * @param series Target series\r\n * @param position Position (px)\r\n * @return XYSeriesDataItem data item\r\n */\r\n CategoryAxis.prototype.getSeriesDataItem = function (series, position, findNearest) {\r\n var _this = this;\r\n if ($type.isNumber(position)) {\r\n var index_1 = this.positionToIndex(position);\r\n if (index_1 >= this.dataItems.length) {\r\n index_1--;\r\n }\r\n var dataItem = this.dataItems.getIndex(index_1);\r\n if (dataItem) {\r\n var category_1 = dataItem.category;\r\n var sdi_1;\r\n var seriesDataItem = series.dataItems.getIndex(index_1);\r\n if (seriesDataItem) {\r\n if (series.xAxis == this) {\r\n if (seriesDataItem.categoryX == category_1) {\r\n return seriesDataItem;\r\n }\r\n }\r\n if (series.yAxis == this) {\r\n if (seriesDataItem.categoryY == category_1) {\r\n return seriesDataItem;\r\n }\r\n }\r\n }\r\n series.dataItems.each(function (dataItem) {\r\n if (series.xAxis == _this) {\r\n if (dataItem.categoryX == category_1) {\r\n if (!sdi_1) {\r\n sdi_1 = dataItem;\r\n }\r\n if (Math.abs(index_1 - sdi_1.index) > Math.abs(index_1 - dataItem.index)) {\r\n sdi_1 = dataItem;\r\n }\r\n }\r\n }\r\n if (series.yAxis == _this) {\r\n if (dataItem.categoryY == category_1) {\r\n if (!sdi_1) {\r\n sdi_1 = dataItem;\r\n }\r\n if (Math.abs(index_1 - sdi_1.index) > Math.abs(index_1 - dataItem.index)) {\r\n sdi_1 = dataItem;\r\n }\r\n }\r\n }\r\n });\r\n //@todo\r\n if (findNearest) {\r\n }\r\n return sdi_1;\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the X coordinate for series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return X coordinate (px)\r\n */\r\n CategoryAxis.prototype.getX = function (dataItem, key, location, stackKey, range) {\r\n var position = this.getPositionX(dataItem, key, location, stackKey, range);\r\n if ($type.isNaN(position)) {\r\n return this.basePoint.x;\r\n }\r\n else {\r\n return this.renderer.positionToPoint(position).x;\r\n }\r\n };\r\n /**\r\n * Returns relative position on axis for series' data item.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\r\n CategoryAxis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\r\n var position;\r\n if ($type.hasValue(key)) {\r\n position = this.categoryToPosition(dataItem.categories[key], location);\r\n }\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns the Y coordinate for series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return Y coordinate (px)\r\n */\r\n CategoryAxis.prototype.getY = function (dataItem, key, location, stackKey, range) {\r\n var position = this.getPositionY(dataItem, key, location, stackKey, range);\r\n if ($type.isNaN(position)) {\r\n return this.basePoint.y;\r\n }\r\n else {\r\n return this.renderer.positionToPoint(position).y;\r\n }\r\n };\r\n /**\r\n * Returns relative position on axis for series' data item.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\r\n CategoryAxis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\r\n var position;\r\n if ($type.hasValue(key)) {\r\n position = this.categoryToPosition(dataItem.categories[key], location);\r\n }\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns an angle for series data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @param stackKey Stack key (?)\r\n * @param range Range to fit in\r\n * @return Angle\r\n */\r\n CategoryAxis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\r\n var position = this.categoryToPosition(dataItem.categories[key], location);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return this.positionToAngle(position);\r\n };\r\n /**\r\n * Returns an absolute pixel coordinate of the start of the cell (category),\r\n * that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Position (px)\r\n * @return Cell start position (px)\r\n */\r\n CategoryAxis.prototype.getCellStartPosition = function (position) {\r\n return this.roundPosition(position, 0);\r\n };\r\n /**\r\n * Returns an absolute pixel coordinate of the end of the cell (category),\r\n * that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Position (px)\r\n * @return Cell end position (px)\r\n */\r\n CategoryAxis.prototype.getCellEndPosition = function (position) {\r\n return this.roundPosition(position, 1);\r\n };\r\n /**\r\n * Returns text to show in a category tooltip, based on specific position\r\n * within axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (px)\r\n * @return Label (category)\r\n */\r\n CategoryAxis.prototype.getTooltipText = function (position) {\r\n var dataItem = this.dataItems.getIndex(this.positionToIndex(position));\r\n if (dataItem) {\r\n this.tooltipDataItem = dataItem;\r\n this.tooltip.dataItem = dataItem;\r\n if (this.tooltipText) {\r\n return this.tooltipText;\r\n }\r\n if (!this._adapterO) {\r\n return dataItem.category;\r\n }\r\n else {\r\n return this._adapterO.apply(\"getTooltipText\", dataItem.category);\r\n }\r\n }\r\n };\r\n /**\r\n * Returns an index of the category that corresponds to specific pixel\r\n * position within axis.\r\n *\r\n * @param position Position (px)\r\n * @return Category index\r\n */\r\n CategoryAxis.prototype.positionToIndex = function (position) {\r\n position = $math.round(position, 10);\r\n if (position < 0) {\r\n position = 0;\r\n }\r\n if (position > 1) {\r\n position = 1;\r\n }\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var difference = endIndex - startIndex - this.startLocation - (1 - this.endLocation);\r\n position += 1 / difference * this.startLocation;\r\n var index = null;\r\n if (this._axisBreaks) {\r\n var axisBreaks = this._axisBreaks;\r\n // in case we have some axis breaks\r\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\r\n var breakStartPosition = axisBreak.startPosition;\r\n var breakEndPosition = axisBreak.endPosition;\r\n var breakStartIndex = axisBreak.adjustedStartValue;\r\n var breakEndIndex = axisBreak.adjustedEndValue;\r\n breakStartIndex = $math.max(breakStartIndex, startIndex);\r\n breakEndIndex = $math.min(breakEndIndex, endIndex);\r\n var breakSize = axisBreak.breakSize;\r\n difference -= (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n // position to the right of break end\r\n if (position > breakEndPosition) {\r\n startIndex += (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n }\r\n // position to the left of break start\r\n else if (position < breakStartPosition) {\r\n }\r\n // value within break\r\n else {\r\n var breakPosition = (position - breakStartPosition) / (breakEndPosition - breakStartPosition);\r\n index = breakStartIndex + Math.round(breakPosition * (breakEndIndex - breakStartIndex));\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n if (!$type.isNumber(index)) {\r\n index = Math.floor(position * difference + startIndex);\r\n }\r\n if (index >= this.dataItems.length) {\r\n index = this.dataItems.length - 1;\r\n }\r\n // not good, when panning out of bounds, each time one less item gets selected\r\n //if (index >= endIndex) {\r\n //\tindex--;\r\n //}\r\n return index;\r\n };\r\n /**\r\n * Returns category based on position.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * This is a synonim of `getPositionLabel()` implemented here for consistentcy.\r\n *\r\n * @since 4.3.8\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\r\n CategoryAxis.prototype.positionToCategory = function (position) {\r\n return this.getPositionLabel(position);\r\n };\r\n /**\r\n * Returns category based on position.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\r\n CategoryAxis.prototype.getPositionLabel = function (position) {\r\n var dataItem = this.dataItems.getIndex(this.positionToIndex(position));\r\n if (dataItem) {\r\n return dataItem.category;\r\n }\r\n };\r\n Object.defineProperty(CategoryAxis.prototype, \"basePoint\", {\r\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point\r\n */\r\n get: function () {\r\n // This makes base grid to be drawn at the end of the axis and adds extra\r\n // grid which we need to nicely close the chart.\r\n return this.renderer.positionToPoint(1);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Initializes Axis' renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n CategoryAxis.prototype.initRenderer = function () {\r\n _super.prototype.initRenderer.call(this);\r\n var renderer = this.renderer;\r\n renderer.baseGrid.disabled = true;\r\n };\r\n Object.defineProperty(CategoryAxis.prototype, \"frequency\", {\r\n /**\r\n * Current frequency of labels of the axis.\r\n *\r\n * Normally it would be 1, but when labels start to be hidden due\r\n * to `minGridDistance` this read-only property will increase.\r\n *\r\n * @readonly\r\n * @since 4.2.0\r\n * @return Label frequency\r\n */\r\n get: function () {\r\n return this._frequency;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxis.prototype, \"sortBySeries\", {\r\n /**\r\n * @return Sort categories?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"sortBySeries\");\r\n },\r\n /**\r\n * If set to a reference of [[ColumnSeries]] the categories will be sorted\r\n * by actual values.\r\n *\r\n * The categories are ordered in descending order (from highest values to\r\n * lowest). To reverse the order, use axis renderer's `inversed` setting.\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * categoryAxis.sortBySeries = series;\r\n * categoryAxis.renderer.inversed = true;\r\n * ```\r\n * ```JavaScript\r\n * categoryAxis.sortBySeries = series;\r\n * categoryAxis.renderer.inversed = true;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"sortBySeries\": \"s1\",\r\n * \"renderer\": {\r\n * // ...\r\n * \"inversed\": true\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.8.7\r\n * @param value Sort categories?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"sortBySeries\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n CategoryAxis.prototype.processConfig = function (config) {\r\n if (config) {\r\n if ($type.hasValue(config.sortBySeries) && $type.isString(config.sortBySeries)) {\r\n if (this.map.hasKey(config.sortBySeries)) {\r\n config.sortBySeries = this.map.getKey(config.sortBySeries);\r\n }\r\n else {\r\n this.addDelayedMap(\"sortBySeries\", config.sortBySeries);\r\n delete config.sortBySeries;\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return CategoryAxis;\r\n}(Axis));\r\nexport { CategoryAxis };\r\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CategoryAxis\"] = CategoryAxis;\r\nregistry.registeredClasses[\"CategoryAxisDataItem\"] = CategoryAxisDataItem;\r\n","/**\r\n * XY series module.\r\n */\r\nimport { __extends, __values } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Series, SeriesDataItem } from \"./Series\";\r\nimport { Sprite, visualProperties } from \"../../core/Sprite\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { XYChart } from \"../types/XYChart\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $time from \"../../core/utils/Time\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport { options } from \"../../core/Options\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[XYSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar XYSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(XYSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"XYSeriesDataItem\";\r\n _this.values.customValue = {};\r\n _this.values.valueX = { stack: 0 };\r\n _this.values.valueY = { stack: 0 };\r\n _this.values.openValueX = {};\r\n _this.values.openValueY = {};\r\n _this.values.dateX = {};\r\n _this.values.dateY = {};\r\n _this.values.openDateX = {};\r\n _this.values.openDateY = {};\r\n _this.setLocation(\"dateX\", 0.5, 0);\r\n _this.setLocation(\"dateY\", 0.5, 0);\r\n _this.setLocation(\"categoryX\", 0.5, 0);\r\n _this.setLocation(\"categoryY\", 0.5, 0);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"valueX\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.valueX.value;\r\n },\r\n /**\r\n * Item's numeric value on X value axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"valueX\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"customValue\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.customValue.value;\r\n },\r\n /**\r\n * Item's custom numeric value.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"customValue\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"valueY\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.valueY.value;\r\n },\r\n /**\r\n * Item's numeric value on Y value axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"valueY\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"dateX\", {\r\n /**\r\n * @return Date\r\n */\r\n get: function () {\r\n return this.getDate(\"dateX\");\r\n },\r\n /**\r\n * Item's date value on X date-based axis.\r\n *\r\n * @param date Date\r\n */\r\n set: function (date) {\r\n this.setDate(\"dateX\", date);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"dateY\", {\r\n /**\r\n * @return Date\r\n */\r\n get: function () {\r\n return this.getDate(\"dateY\");\r\n },\r\n /**\r\n * Item's date value on Y date-based axis.\r\n *\r\n * @param date Date\r\n */\r\n set: function (date) {\r\n this.setDate(\"dateY\", date);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"categoryX\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n return this.categories.categoryX;\r\n },\r\n /**\r\n * Item's category on X category axis.\r\n *\r\n * @param category Category\r\n */\r\n set: function (category) {\r\n this.setCategory(\"categoryX\", category);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"categoryY\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n return this.categories.categoryY;\r\n },\r\n /**\r\n * Item's category on Y category axis.\r\n *\r\n * @param category Category\r\n */\r\n set: function (category) {\r\n this.setCategory(\"categoryY\", category);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openValueX\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.openValueX.value;\r\n },\r\n /**\r\n * Item's open numeric value on X value axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"openValueX\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openValueY\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.openValueY.value;\r\n },\r\n /**\r\n * Item's open numeric value on Y value axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"openValueY\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openDateX\", {\r\n /**\r\n * @return Date\r\n */\r\n get: function () {\r\n return this.getDate(\"openDateX\");\r\n },\r\n /**\r\n * Item's open date value on X date-based axis.\r\n *\r\n * @param date Date\r\n */\r\n set: function (date) {\r\n this.setDate(\"openDateX\", date);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openDateY\", {\r\n /**\r\n * @return Date\r\n */\r\n get: function () {\r\n return this.getDate(\"openDateY\");\r\n },\r\n /**\r\n * Item's open date value on Y date-based axis.\r\n *\r\n * @param date Date\r\n */\r\n set: function (date) {\r\n this.setDate(\"openDateY\", date);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openCategoryX\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n return this.categories.openCategoryX;\r\n },\r\n /**\r\n * Item's open category on X category axis.\r\n *\r\n * @param category Category\r\n */\r\n set: function (category) {\r\n this.setCategory(\"openCategoryX\", category);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openCategoryY\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n return this.categories.openCategoryY;\r\n },\r\n /**\r\n * Item's open category on Y category axis.\r\n *\r\n * @param category Category\r\n */\r\n set: function (category) {\r\n this.setCategory(\"openCategoryY\", category);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Return smallest value out of all item's value fields.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fields Fields to check in\r\n * @param working Include working (temporary) values\r\n * @param stackValue If item is in a stack, the value item starts as\r\n * @return Value\r\n */\r\n XYSeriesDataItem.prototype.getMin = function (fields, working, stackValue) {\r\n var _this = this;\r\n //if (this.visible) { // dumped because of non smooth zooming\r\n var min;\r\n if (!$type.isNumber(stackValue)) {\r\n stackValue = 0;\r\n }\r\n $array.each(fields, function (field) {\r\n var value;\r\n if (working) {\r\n value = _this.getWorkingValue(field);\r\n }\r\n else {\r\n value = _this.getValue(field);\r\n }\r\n value += stackValue;\r\n if (value < min || !$type.isNumber(min)) {\r\n min = value;\r\n }\r\n });\r\n return min;\r\n //}\r\n };\r\n /**\r\n * Return biggest value out of all item's value fields.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fields Fields to check in\r\n * @param working Include working (temporary) values\r\n * @param stackValue If item is in a stack, the value item starts as\r\n * @return Value\r\n */\r\n XYSeriesDataItem.prototype.getMax = function (fields, working, stackValue) {\r\n var _this = this;\r\n //if (this.visible) { // dumped because of non smooth zooming\r\n var max;\r\n if (!$type.isNumber(stackValue)) {\r\n stackValue = 0;\r\n }\r\n $array.each(fields, function (field) {\r\n var value;\r\n if (working) {\r\n value = _this.getWorkingValue(field);\r\n }\r\n else {\r\n value = _this.getValue(field);\r\n }\r\n value += stackValue;\r\n if (value > max || !$type.isNumber(max)) {\r\n max = value;\r\n }\r\n });\r\n return max;\r\n //}\r\n };\r\n return XYSeriesDataItem;\r\n}(SeriesDataItem));\r\nexport { XYSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines Series for [[XYChart]].\r\n *\r\n * @see {@link IXYSeriesEvents} for a list of available Events\r\n * @see {@link IXYSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar XYSeries = /** @class */ (function (_super) {\r\n __extends(XYSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYSeries() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Indicates which of the series' `dataFields` to calculate aggregate values\r\n * for.\r\n *\r\n * Available data fields for all [[XYSeries]] are:\r\n * `valueX`, `valueY`, `openValueX`, and `openValueY`.\r\n *\r\n * [[CandlestickSeries]] adds:\r\n * `lowValueX`, `lowValueY`, `highValueX`, and `highValueY`.\r\n *\r\n * Available options:\r\n * `\"open\"`, `\"close\"`, `\"low\"`, `\"high\"`, `\"average\"`, `\"sum\"`.\r\n *\r\n * Defaults are as follows:\r\n * * `valueX`: `\"close\"`\r\n * * `valueY`: `\"close\"`\r\n * * `openValueX`: `\"open\"`\r\n * * `openValueY`: `\"open\"`\r\n * * `lowValueX`: `\"low\"`\r\n * * `lowValueY`: `\"low\"`\r\n * * `highValueX`: `\"high\"`\r\n * * `highValueY`: `\"high\"`\r\n *\r\n * Is required only if data being plotted on a `DateAxis` and\r\n * its `groupData` is set to `true`.\r\n *\r\n * ```TypeScript\r\n * let dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * let valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * let series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JavaScript\r\n * var dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * var valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * var series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"groupData\": true\r\n * }],\r\n * \"yAxes\": [{\r\n * \"type\": \"ValueAxis\"\r\n * }],\r\n * \"series\": [{\r\n * \"type\": \"LineSeries\",\r\n * \"dataFields\": {\r\n * \"dateX\": \"date\",\r\n * \"valueY\": \"value\"\r\n * },\r\n * \"groupFields\": {\r\n * \"valueY\": \"average\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above setup will ensure, that if there are many data items within\r\n * selected range, they will be grouped into aggregated data points, using\r\n * average value of all the values.\r\n *\r\n * For example if we have 2 years worth of daily data (~700 data items), when\r\n * fully zoomed out, the chart would show ~100 data items instead: one for\r\n * each week in those two years.\r\n *\r\n * Grouping will occur automatically, based on current selection range, and\r\n * will change dynamically when user zooms in/out the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/#Dynamic_data_item_grouping} for more information about dynamic data item grouping.\r\n * @since 4.7.0\r\n */\r\n _this.groupFields = {};\r\n /**\r\n * X axis the series is attached to.\r\n */\r\n _this._xAxis = new MutableValueDisposer();\r\n /**\r\n * Y axis the series is attached to.\r\n */\r\n _this._yAxis = new MutableValueDisposer();\r\n /**\r\n * [_xValueFields description]\r\n *\r\n * @todo Description\r\n */\r\n _this._xValueFields = [];\r\n /**\r\n * [_yValueFields description]\r\n *\r\n * @todo Description\r\n */\r\n _this._yValueFields = [];\r\n /**\r\n * @ignore\r\n */\r\n _this._baseInterval = {};\r\n /**\r\n * @ignore\r\n */\r\n _this.dataGrouped = false;\r\n /**\r\n * @ignore\r\n */\r\n _this.usesShowFields = false;\r\n /**\r\n * @ignore\r\n */\r\n _this._dataSetChanged = false;\r\n _this._maxxX = 100000;\r\n _this._maxxY = 100000;\r\n _this._propertiesChanged = false;\r\n /**\r\n * @ignore\r\n */\r\n _this.outOfRange = false;\r\n _this.className = \"XYSeries\";\r\n _this.isMeasured = false;\r\n _this.groupFields.valueX = \"close\";\r\n _this.groupFields.valueY = \"close\";\r\n _this.groupFields.customValue = \"close\";\r\n _this.groupFields.openValueX = \"open\";\r\n _this.groupFields.openValueY = \"open\";\r\n _this.cursorTooltipEnabled = true;\r\n _this.cursorHoverEnabled = true;\r\n _this.excludeFromTotal = false;\r\n _this.mainContainer.mask = new Sprite();\r\n _this.mainContainer.mask.setElement(_this.paper.add(\"path\"));\r\n _this.stacked = false;\r\n _this.snapTooltip = false;\r\n _this._showBullets = false;\r\n _this.tooltip.pointerOrientation = \"horizontal\";\r\n _this.properties.stackToNegative = true;\r\n _this.hideTooltipWhileZooming = true;\r\n _this.setPropertyValue(\"maskBullets\", true);\r\n _this.tooltip.events.on(\"hidden\", function () {\r\n _this.returnBulletDefaultState();\r\n }, undefined, false);\r\n _this._disposers.push(_this._xAxis);\r\n _this._disposers.push(_this._yAxis);\r\n _this.observe(visualProperties, function () {\r\n if (_this.inited) {\r\n _this._propertiesChanged = true;\r\n if (_this.legendDataItem) {\r\n _this.legendDataItem.childrenCreated = false;\r\n }\r\n if (_this.chart && _this.chart.legend) {\r\n _this.chart.legend.invalidateDataItems();\r\n }\r\n _this.invalidate();\r\n }\r\n }, undefined, false);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n XYSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"X/Y Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n XYSeries.prototype.createDataItem = function () {\r\n return new XYSeriesDataItem();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.resetExtremes = function () {\r\n this._tmin.clear();\r\n this._tmax.clear();\r\n this._smin.clear();\r\n this._smax.clear();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.dataChangeUpdate = function () {\r\n this.dataGrouped = false;\r\n this._baseInterval = {};\r\n this._currentDataSetId = \"\";\r\n this.resetExtremes();\r\n if (this.xAxis) {\r\n this.xAxis.seriesDataChangeUpdate(this);\r\n }\r\n if (this.yAxis) {\r\n this.yAxis.seriesDataChangeUpdate(this);\r\n }\r\n };\r\n /**\r\n * (Re)validates the series' data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.validateData = function () {\r\n this._baseInterval = {};\r\n var dataFields = this.dataFields;\r\n if (dataFields.valueYShow || dataFields.openValueXShow || dataFields.openValueXShow || dataFields.openValueYShow) {\r\n this.usesShowFields = true;\r\n }\r\n else {\r\n this.usesShowFields = false;\r\n }\r\n this.defineFields();\r\n if (this.data.length > 0) {\r\n this.dataChangeUpdate();\r\n }\r\n _super.prototype.validateData.call(this);\r\n this.updateItemReaderText();\r\n if (this.chart) {\r\n if (!$type.hasValue(this.dataFields[this._xField]) || !$type.hasValue(this.dataFields[this._yField])) {\r\n throw Error(\"Data fields for series \\\"\" + (this.name ? this.name : this.uid) + \"\\\" are not properly defined.\");\r\n }\r\n }\r\n // 4.7.21 solves 51540\r\n if (this.inited && this.isHidden) {\r\n this.hide(0);\r\n }\r\n this.dataGrouped = false;\r\n };\r\n /**\r\n * Processes data item.\r\n *\r\n * @param dataItem Data item\r\n * @param dataContext Raw data\r\n * @param index Index of the data item\r\n */\r\n XYSeries.prototype.processDataItem = function (dataItem, dataContext) {\r\n try {\r\n _super.prototype.processDataItem.call(this, dataItem, dataContext);\r\n this.xAxis.processSeriesDataItem(dataItem, \"X\");\r\n this.yAxis.processSeriesDataItem(dataItem, \"Y\");\r\n this.setInitialWorkingValues(dataItem);\r\n }\r\n catch (e) {\r\n if (this._chart) {\r\n this._chart.raiseCriticalError(e);\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * When validating raw data, instead of processing data item, we update it\r\n *\r\n * @ignore Exclude from docs\r\n * @param item\r\n */\r\n XYSeries.prototype.updateDataItem = function (dataItem) {\r\n _super.prototype.updateDataItem.call(this, dataItem);\r\n //dataItem.events.disable();\r\n this.xAxis.processSeriesDataItem(dataItem, \"X\");\r\n this.yAxis.processSeriesDataItem(dataItem, \"Y\");\r\n //dataItem.events.enable();\t\t\r\n };\r\n /**\r\n * Inits data item's working values.\r\n *\r\n * @param dataItem Data item\r\n * @param index Data item's index\r\n */\r\n XYSeries.prototype.setInitialWorkingValues = function (dataItem) {\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis) {\r\n var dataItemsX = this.dataItemsByAxis.getKey(xAxis.uid);\r\n if (dataItemsX) {\r\n dataItemsX.clear();\r\n }\r\n if (xAxis instanceof CategoryAxis) {\r\n this.clearCatAxis(xAxis);\r\n }\r\n }\r\n if (yAxis) {\r\n var dataItemsY = this.dataItemsByAxis.getKey(yAxis.uid);\r\n if (dataItemsY) {\r\n dataItemsY.clear();\r\n }\r\n if (yAxis instanceof CategoryAxis) {\r\n this.clearCatAxis(yAxis);\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.clearCatAxis = function (axis) {\r\n var uid = this.uid;\r\n axis.dataItems.each(function (dataItem) {\r\n if (dataItem.seriesDataItems[uid]) {\r\n dataItem.seriesDataItems[uid] = [];\r\n }\r\n });\r\n };\r\n /**\r\n * Sets up which data fields to use for data access.\r\n */\r\n XYSeries.prototype.defineFields = function () {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis && yAxis) {\r\n var xAxisFieldName = xAxis.axisFieldName;\r\n var xField = (xAxisFieldName + \"X\");\r\n var xOpenField = (\"open\" + $utils.capitalize(xAxisFieldName) + \"X\");\r\n var yAxisFieldName = yAxis.axisFieldName;\r\n var yField = (yAxisFieldName + \"Y\");\r\n var yOpenField = (\"open\" + $utils.capitalize(yAxisFieldName) + \"Y\");\r\n this._xField = xField;\r\n this._yField = yField;\r\n if (this.dataFields[xOpenField]) {\r\n this._xOpenField = xOpenField;\r\n }\r\n if (this.dataFields[yOpenField]) {\r\n this._yOpenField = yOpenField;\r\n }\r\n if (!this.dataFields[yOpenField] && this.baseAxis == yAxis) {\r\n this._yOpenField = yField;\r\n }\r\n if (!this.dataFields[xOpenField] && this.baseAxis == xAxis) {\r\n this._xOpenField = xField;\r\n }\r\n if (this.stacked && this.baseAxis == xAxis) {\r\n this._xOpenField = xField;\r\n }\r\n if (this.stacked && this.baseAxis == yAxis) {\r\n this._yOpenField = yField;\r\n }\r\n if ((xAxis instanceof CategoryAxis) && (yAxis instanceof CategoryAxis)) {\r\n if (!this._yOpenField) {\r\n this._yOpenField = yField;\r\n }\r\n }\r\n this._xValueFields = [];\r\n this._yValueFields = [];\r\n this.addValueField(xAxis, this._xValueFields, this._xField);\r\n this.addValueField(xAxis, this._xValueFields, this._xOpenField);\r\n this.addValueField(yAxis, this._yValueFields, this._yField);\r\n this.addValueField(yAxis, this._yValueFields, this._yOpenField);\r\n }\r\n };\r\n /**\r\n * [axis description]\r\n *\r\n * @todo Description\r\n * @param axis Axis\r\n * @param fields Fields (?)\r\n * @param field Field\r\n */\r\n XYSeries.prototype.addValueField = function (axis, fields, field) {\r\n if (axis instanceof ValueAxis) {\r\n if ($type.hasValue(this.dataFields[field]) && fields.indexOf(field) == -1) {\r\n fields.push(field);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets category field from the category axis.\r\n *\r\n * User might set field for category axis only, but not for series. In such\r\n * case, we take field value from axis and set it for series.\r\n *\r\n * @param field Field\r\n * @param axis Axis\r\n */\r\n XYSeries.prototype.setCategoryAxisField = function (field, axis) {\r\n if (!$type.hasValue(this.dataFields[field])) {\r\n this.dataFields[field] = axis.dataFields.category;\r\n }\r\n };\r\n /**\r\n * Sets date field from the date axis.\r\n *\r\n * User might set field for category axis only, but not for series. In such\r\n * case, we take field value from axis and set it for series.\r\n *\r\n * @param field Field\r\n * @param axis Axis\r\n */\r\n XYSeries.prototype.setDateAxisField = function (field, axis) {\r\n if (!$type.hasValue(this.dataFields[field])) {\r\n this.dataFields[field] = axis.dataFields.date;\r\n }\r\n };\r\n /**\r\n * Performs after-draw tasks, e.g. creates masks.\r\n */\r\n XYSeries.prototype.afterDraw = function () {\r\n _super.prototype.afterDraw.call(this);\r\n this.createMask();\r\n };\r\n /**\r\n * Create a mask for the series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.createMask = function () {\r\n // this mask from which we cut out ranges. does not work well if ranges overlap.\r\n if (this.mainContainer.mask) {\r\n var path_1 = this.getMaskPath();\r\n // @todo: this approach won't work well on circluar or other non x/y axes\r\n $iter.each(this.axisRanges.iterator(), function (range) {\r\n if (range.axisFill.fillPath) {\r\n range.axisFill.validate();\r\n path_1 += range.axisFill.fillPath;\r\n }\r\n });\r\n this.mainContainer.mask.path = path_1;\r\n }\r\n };\r\n /**\r\n * Returns an SVG path to use as series mask.\r\n *\r\n * @return SVG path\r\n */\r\n XYSeries.prototype.getMaskPath = function () {\r\n if (this.xAxis && this.yAxis) {\r\n return $path.rectToPath({\r\n x: 0,\r\n y: 0,\r\n width: this.xAxis.axisLength,\r\n height: this.yAxis.axisLength\r\n });\r\n }\r\n return \"\";\r\n };\r\n /**\r\n * Returns axis data field to use.\r\n *\r\n * @param axis Axis\r\n * @return Field name\r\n */\r\n XYSeries.prototype.getAxisField = function (axis) {\r\n if (axis == this.xAxis) {\r\n return this.xField;\r\n }\r\n if (axis == this.yAxis) {\r\n return this.yField;\r\n }\r\n };\r\n /**\r\n * Validates data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.validateDataItems = function () {\r\n var chart = this.chart;\r\n if (chart) {\r\n this._maxxX = $math.max(100000, chart.plotContainer.maxWidth * 2);\r\n this._maxxY = $math.max(100000, chart.plotContainer.maxHeight * 2);\r\n }\r\n // this helps date axis to check which baseInterval we should use\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis && yAxis) {\r\n xAxis.updateAxisBySeries();\r\n yAxis.updateAxisBySeries();\r\n }\r\n _super.prototype.validateDataItems.call(this);\r\n if (xAxis && yAxis) {\r\n xAxis.postProcessSeriesDataItems(this);\r\n yAxis.postProcessSeriesDataItems(this);\r\n }\r\n };\r\n /**\r\n * Validates data range.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.validateDataRange = function () {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis && yAxis) {\r\n if (xAxis.dataRangeInvalid) {\r\n xAxis.validateDataRange();\r\n }\r\n if (yAxis.dataRangeInvalid) {\r\n yAxis.validateDataRange();\r\n }\r\n }\r\n _super.prototype.validateDataRange.call(this);\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.validate = function () {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis && yAxis) {\r\n if (xAxis.invalid) {\r\n xAxis.validate();\r\n }\r\n if (yAxis.invalid) {\r\n yAxis.validate();\r\n }\r\n this.y = yAxis.pixelY;\r\n this.x = xAxis.pixelX;\r\n this._showBullets = true;\r\n var minBulletDistance = this.minBulletDistance;\r\n if ($type.isNumber(minBulletDistance)) {\r\n if (this.baseAxis.axisLength / (this.endIndex - this.startIndex) < minBulletDistance) {\r\n this._showBullets = false;\r\n }\r\n }\r\n }\r\n this.updateTooltip();\r\n if ((xAxis instanceof DateAxis && xAxis.groupData && !this.dataGrouped) || (yAxis instanceof DateAxis && yAxis.groupData && !this.dataGrouped)) {\r\n return;\r\n }\r\n _super.prototype.validate.call(this);\r\n var chart = this.chart;\r\n var maskBullets = this.maskBullets;\r\n if (chart && maskBullets) {\r\n if (chart.className == \"XYChart\") {\r\n if (chart.leftAxesContainer.layout == \"vertical\" || chart.rightAxesContainer.layout == \"vertical\") {\r\n if (this.yAxis) {\r\n this.bulletsContainer.mask = this.yAxis.renderer.gridContainer;\r\n }\r\n else {\r\n this.bulletsContainer.mask = undefined;\r\n }\r\n }\r\n if (chart.topAxesContainer.layout == \"horizontal\" || chart.bottomAxesContainer.layout == \"horizontal\") {\r\n if (this.xAxis) {\r\n this.bulletsContainer.mask = this.xAxis.renderer.gridContainer;\r\n }\r\n else {\r\n this.bulletsContainer.mask = undefined;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"xAxis\", {\r\n /**\r\n * @return Axis\r\n */\r\n get: function () {\r\n if (this.chart) {\r\n if (!this._xAxis.get()) {\r\n var axis = this.chart.xAxes.getIndex(0);\r\n if (!axis) {\r\n throw Error(\"There are no X axes on chart.\");\r\n }\r\n this.xAxis = axis;\r\n }\r\n return this._xAxis.get();\r\n }\r\n },\r\n /**\r\n * X axis the series is attached to.\r\n *\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n this.setXAxis(axis);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n XYSeries.prototype.setXAxis = function (axis) {\r\n var oldAxis = this._xAxis.get();\r\n if (oldAxis != axis) {\r\n if (oldAxis) {\r\n this.dataItemsByAxis.removeKey(oldAxis.uid);\r\n // TODO why is this here ?\r\n this._xAxis.dispose();\r\n // temp @todo: why it is not disposed?\r\n oldAxis.series.removeValue(this);\r\n }\r\n this._xAxis.set(axis, axis.registerSeries(this));\r\n this.dataItemsByAxis.setKey(axis.uid, new Dictionary());\r\n this.invalidateData();\r\n }\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"yAxis\", {\r\n /**\r\n * @return Axis\r\n */\r\n get: function () {\r\n if (this.chart) {\r\n if (!this._yAxis.get()) {\r\n var axis = this.chart.yAxes.getIndex(0);\r\n if (!axis) {\r\n throw Error(\"There are no Y axes on chart.\");\r\n }\r\n this.yAxis = axis;\r\n }\r\n return this._yAxis.get();\r\n }\r\n },\r\n /**\r\n * Y axis the series is attached to.\r\n *\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n this.setYAxis(axis);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n XYSeries.prototype.setYAxis = function (axis) {\r\n var oldAxis = this._yAxis.get();\r\n if (oldAxis != axis) {\r\n if (oldAxis) {\r\n this.dataItemsByAxis.removeKey(oldAxis.uid);\r\n // TODO why is this here ?\r\n this._yAxis.dispose();\r\n // temp @todo: why it is not disposed?\r\n oldAxis.series.removeValue(this);\r\n }\r\n this._yAxis.set(axis, axis.registerSeries(this));\r\n if (axis.chart instanceof XYChart) {\r\n axis.chart.handleYAxisSet(this);\r\n }\r\n this.dataItemsByAxis.setKey(axis.uid, new Dictionary());\r\n this.invalidateData();\r\n }\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"baseAxis\", {\r\n /**\r\n * @return Axis\r\n */\r\n get: function () {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (!this._baseAxis && xAxis && yAxis) {\r\n if (yAxis instanceof DateAxis) {\r\n this._baseAxis = yAxis;\r\n }\r\n if (xAxis instanceof DateAxis) {\r\n this._baseAxis = xAxis;\r\n }\r\n if (yAxis instanceof CategoryAxis) {\r\n this._baseAxis = yAxis;\r\n }\r\n if (xAxis instanceof CategoryAxis) {\r\n this._baseAxis = xAxis;\r\n }\r\n if (!this._baseAxis) {\r\n this._baseAxis = xAxis;\r\n }\r\n }\r\n return this._baseAxis;\r\n },\r\n /**\r\n * The main (base) axis.\r\n *\r\n * This is the axis that series fills will go to, or grow animations will\r\n * happen from.\r\n *\r\n * @param value Axis\r\n */\r\n set: function (value) {\r\n if (this._baseAxis != value) {\r\n this._baseAxis = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds one or several (array) of data items to the existing data.\r\n *\r\n * @param rawDataItem One or many raw data item objects\r\n */\r\n XYSeries.prototype.addData = function (rawDataItem, removeCount, skipRaw) {\r\n _super.prototype.addData.call(this, rawDataItem, removeCount, skipRaw);\r\n var scrollbarSeries = this.scrollbarSeries;\r\n if (scrollbarSeries) {\r\n this.scrollbarSeries.addData(rawDataItem, removeCount, true);\r\n this.scrollbarSeries._parseDataFrom = this._parseDataFrom;\r\n }\r\n };\r\n XYSeries.prototype.setData = function (value) {\r\n _super.prototype.setData.call(this, value);\r\n if (this.scrollbarSeries) {\r\n this.scrollbarSeries.setData(value);\r\n }\r\n };\r\n /**\r\n * Makes the chart use particular data set.\r\n *\r\n * If `id` is not provided or there is no such data set, main data will be\r\n * used.\r\n *\r\n * @ignore\r\n * @since 4.7.0\r\n * @param id Data set id\r\n */\r\n XYSeries.prototype.setDataSet = function (id) {\r\n var changed = _super.prototype.setDataSet.call(this, id);\r\n if (changed) {\r\n this._dataSetChanged = true;\r\n var dataItems = this.dataItems;\r\n this.resetExtremes();\r\n if (dataItems && dataItems.length > 0) {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n this._prevStartIndex = undefined;\r\n this._prevEndIndex = undefined;\r\n this._startIndex = undefined;\r\n this._endIndex = undefined;\r\n if (!this.appeared) {\r\n this.processValues(false); // this will slow down!\r\n }\r\n if (xAxis instanceof DateAxis && xAxis == this.baseAxis) {\r\n this._tmin.setKey(xAxis.uid, dataItems.getIndex(0).dateX.getTime());\r\n this._tmax.setKey(xAxis.uid, dataItems.getIndex(dataItems.length - 1).dateX.getTime());\r\n this.dispatch(\"extremeschanged\");\r\n }\r\n if (yAxis instanceof DateAxis && yAxis == this.baseAxis) {\r\n this._tmin.setKey(yAxis.uid, dataItems.getIndex(0).dateY.getTime());\r\n this._tmax.setKey(yAxis.uid, dataItems.getIndex(dataItems.length - 1).dateY.getTime());\r\n this.dispatch(\"extremeschanged\");\r\n }\r\n }\r\n }\r\n return changed;\r\n };\r\n /**\r\n * Processes values after data items' were added.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItems Data items\r\n */\r\n XYSeries.prototype.processValues = function (working) {\r\n _super.prototype.processValues.call(this, working);\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (!xAxis || !yAxis) {\r\n return;\r\n }\r\n var dataItems = this.dataItems;\r\n var minX = Infinity;\r\n var maxX = -Infinity;\r\n var minY = Infinity;\r\n var maxY = -Infinity;\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var workingStartIndex = startIndex;\r\n var workingEndIndex = endIndex;\r\n if (!working) {\r\n startIndex = 0;\r\n endIndex = this.dataItems.length;\r\n }\r\n for (var i = startIndex; i < endIndex; i++) {\r\n var dataItem = dataItems.getIndex(i);\r\n this.getStackValue(dataItem, working);\r\n var stackX = dataItem.getValue(\"valueX\", \"stack\");\r\n var stackY = dataItem.getValue(\"valueY\", \"stack\");\r\n if (!working) {\r\n stackX = dataItem.getValue(\"valueX\", \"stackTrue\");\r\n stackY = dataItem.getValue(\"valueY\", \"stackTrue\");\r\n }\r\n minX = $math.min(dataItem.getMin(this._xValueFields, working, stackX), minX);\r\n minY = $math.min(dataItem.getMin(this._yValueFields, working, stackY), minY);\r\n maxX = $math.max(dataItem.getMax(this._xValueFields, working, stackX), maxX);\r\n maxY = $math.max(dataItem.getMax(this._yValueFields, working, stackY), maxY);\r\n // if it's stacked, pay attention to stack value\r\n if (this.stacked) {\r\n if (this.baseAxis == xAxis) {\r\n if (stackY < minY) {\r\n minY = stackY;\r\n }\r\n if (stackY > maxY) {\r\n maxY = stackY;\r\n }\r\n }\r\n if (this.baseAxis == yAxis) {\r\n if (stackX < minX) {\r\n minX = stackX;\r\n }\r\n if (stackX > maxX) {\r\n maxX = stackX;\r\n }\r\n }\r\n }\r\n }\r\n // this is mainly for value axis to calculate total and perecent.total of each series category\r\n xAxis.processSeriesDataItems();\r\n yAxis.processSeriesDataItems();\r\n var xAxisId = xAxis.uid;\r\n var yAxisId = yAxis.uid;\r\n if (this.xAxis instanceof ValueAxis && (minX == Infinity || maxX == -Infinity)) {\r\n this._smin.setKey(xAxisId, undefined);\r\n this._smax.setKey(xAxisId, undefined);\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n return;\r\n }\r\n if (this.yAxis instanceof ValueAxis && (minY == Infinity || maxY == -Infinity)) {\r\n this._smin.setKey(yAxisId, undefined);\r\n this._smax.setKey(yAxisId, undefined);\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n return;\r\n }\r\n if (!working) {\r\n if (this._tmin.getKey(xAxisId) != minX || this._tmax.getKey(xAxisId) != maxX || this._tmin.getKey(yAxisId) != minY || this._tmax.getKey(yAxisId) != maxY) {\r\n this._tmin.setKey(xAxisId, minX);\r\n this._tmax.setKey(xAxisId, maxX);\r\n this._tmin.setKey(yAxisId, minY);\r\n this._tmax.setKey(yAxisId, maxY);\r\n var stackedSeries = this.stackedSeries;\r\n if (stackedSeries) {\r\n if (stackedSeries.isDisposed()) {\r\n this.stackedSeries = undefined;\r\n }\r\n else {\r\n stackedSeries.processValues(false);\r\n }\r\n }\r\n this.dispatchImmediately(\"extremeschanged\");\r\n }\r\n }\r\n if (startIndex != workingStartIndex || endIndex != workingEndIndex) {\r\n minX = Infinity;\r\n maxX = -Infinity;\r\n minY = Infinity;\r\n maxY = -Infinity;\r\n for (var i = workingStartIndex; i < workingEndIndex; i++) {\r\n var dataItem = dataItems.getIndex(i);\r\n this.getStackValue(dataItem, working);\r\n var stackX = dataItem.getValue(\"valueX\", \"stack\");\r\n var stackY = dataItem.getValue(\"valueY\", \"stack\");\r\n if (!working) {\r\n stackX = dataItem.getValue(\"valueX\", \"stackTrue\");\r\n stackY = dataItem.getValue(\"valueY\", \"stackTrue\");\r\n }\r\n minX = $math.min(dataItem.getMin(this._xValueFields, working, stackX), minX);\r\n minY = $math.min(dataItem.getMin(this._yValueFields, working, stackY), minY);\r\n maxX = $math.max(dataItem.getMax(this._xValueFields, working, stackX), maxX);\r\n maxY = $math.max(dataItem.getMax(this._yValueFields, working, stackY), maxY);\r\n // if it's stacked, pay attention to stack value\r\n if (this.stacked) {\r\n if (this.baseAxis == xAxis) {\r\n if (stackY < minY) {\r\n minY = stackY;\r\n }\r\n if (stackY > maxY) {\r\n maxY = stackY;\r\n }\r\n }\r\n if (this.baseAxis == yAxis) {\r\n if (stackX < minX) {\r\n minX = stackX;\r\n }\r\n if (stackX > maxX) {\r\n maxX = stackX;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (this.xAxis instanceof ValueAxis && (minX == Infinity || maxX == -Infinity)) {\r\n this._smin.setKey(xAxisId, undefined);\r\n this._smax.setKey(xAxisId, undefined);\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n return;\r\n }\r\n if (this.yAxis instanceof ValueAxis && (minY == Infinity || maxY == -Infinity)) {\r\n this._smin.setKey(yAxisId, undefined);\r\n this._smax.setKey(yAxisId, undefined);\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n return;\r\n }\r\n if (this._smin.getKey(xAxisId) != minX || this._smax.getKey(xAxisId) != maxX || this._smin.getKey(yAxisId) != minY || this._smax.getKey(yAxisId) != maxY) {\r\n this._smin.setKey(xAxisId, minX);\r\n this._smax.setKey(xAxisId, maxX);\r\n this._smin.setKey(yAxisId, minY);\r\n this._smax.setKey(yAxisId, maxY);\r\n if (this.appeared || this.start != 0 || this.end != 1 || this.dataItems != this.mainDataSet) {\r\n /// new, helps to handle issues with change percent\r\n var changed = false;\r\n if (yAxis instanceof ValueAxis && !(yAxis instanceof DateAxis)) {\r\n var tmin = this._tmin.getKey(yAxisId);\r\n if (!$type.isNumber(tmin) || ((this.usesShowFields || this._dataSetChanged || (xAxis instanceof DateAxis && xAxis.groupData && this.isShowing)) && minY < tmin) || (this.stackedSeries && !this.isHidden && !working)) {\r\n this._tmin.setKey(yAxisId, minY);\r\n changed = true;\r\n }\r\n var tmax = this._tmax.getKey(yAxisId);\r\n if (!$type.isNumber(tmax) || ((this.usesShowFields || this._dataSetChanged || (xAxis instanceof DateAxis && xAxis.groupData && this.isShowing)) && maxY > tmax) || (this.stackedSeries && !this.isHidden && !working)) {\r\n this._tmax.setKey(yAxisId, maxY);\r\n changed = true;\r\n }\r\n }\r\n if (xAxis instanceof ValueAxis && !(xAxis instanceof DateAxis)) {\r\n var tmin = this._tmin.getKey(xAxisId);\r\n if (!$type.isNumber(tmin) || ((this.usesShowFields || this._dataSetChanged || (yAxis instanceof DateAxis && yAxis.groupData && this.isShowing)) && minX < tmin) || (this.stackedSeries && !this.isHidden && !working)) {\r\n this._tmin.setKey(xAxisId, minX);\r\n changed = true;\r\n }\r\n var tmax = this._tmax.getKey(xAxisId);\r\n if (!$type.isNumber(tmax) || ((this.usesShowFields || this._dataSetChanged || (yAxis instanceof DateAxis && yAxis.groupData && this.isShowing)) && maxX > tmax) || (this.stackedSeries && !this.isHidden && !working)) {\r\n this._tmax.setKey(xAxisId, maxX);\r\n changed = true;\r\n }\r\n }\r\n if (changed) {\r\n this.dispatchImmediately(\"extremeschanged\");\r\n }\r\n if (this.start == 0 && this.end == 1) {\r\n // yes, its ok. otherwise min/max won't be updated when zooming out\r\n this._dataSetChanged = false;\r\n }\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n }\r\n }\r\n if (!working && this.stacked) {\r\n this.processValues(true);\r\n }\r\n };\r\n /**\r\n * Hides element's [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n */\r\n XYSeries.prototype.hideTooltip = function (duration) {\r\n _super.prototype.hideTooltip.call(this, duration);\r\n this.returnBulletDefaultState();\r\n this._prevTooltipDataItem = undefined;\r\n };\r\n /**\r\n * Shows series tooltip at specific position.\r\n *\r\n * @param xPosition X\r\n * @param yPosition Y\r\n */\r\n XYSeries.prototype.showTooltipAtPosition = function (xPosition, yPosition) {\r\n var dataItem;\r\n if (this.visible && !this.isHiding && !this.isShowing) {\r\n var xAxis = this._xAxis.get();\r\n var yAxis = this._yAxis.get();\r\n if (xAxis == this.baseAxis) {\r\n dataItem = xAxis.getSeriesDataItem(this, xAxis.toAxisPosition(xPosition), this.snapTooltip);\r\n }\r\n if (yAxis == this.baseAxis) {\r\n dataItem = yAxis.getSeriesDataItem(this, yAxis.toAxisPosition(yPosition), this.snapTooltip);\r\n }\r\n var point = this.showTooltipAtDataItem(dataItem);\r\n if (point) {\r\n return point;\r\n }\r\n // so that if tooltip is shown on columns or bullets for it not to be hidden\r\n if (!this.tooltipText && !this.tooltipHTML) {\r\n return;\r\n }\r\n }\r\n this.hideTooltip();\r\n };\r\n XYSeries.prototype.getAdjustedXLocation = function (dataItem, field, bulletLocationX) {\r\n return dataItem.locations[field];\r\n };\r\n XYSeries.prototype.getAdjustedYLocation = function (dataItem, field, bulletLocationY) {\r\n return dataItem.locations[field];\r\n };\r\n /**\r\n * Shows series tooltip at specific dataItem.\r\n *\r\n * @param dataItem\r\n */\r\n XYSeries.prototype.showTooltipAtDataItem = function (dataItem) {\r\n var e_1, _a;\r\n var cursor = this.chart.cursor;\r\n if (cursor && cursor.hideSeriesTooltipsOnSelection && cursor.selection.visible && cursor.downPoint) {\r\n this.hideTooltip();\r\n return;\r\n }\r\n this.returnBulletDefaultState(dataItem);\r\n if (dataItem && dataItem.visible) {\r\n this.updateLegendValue(dataItem);\r\n if (this.cursorTooltipEnabled) {\r\n this.tooltipDataItem = dataItem;\r\n // todo: add tooltipXField and tooltipYField.\r\n var tooltipXField = this.tooltipXField;\r\n var tooltipYField = this.tooltipYField;\r\n if ($type.hasValue(dataItem[tooltipXField]) && $type.hasValue(dataItem[tooltipYField])) {\r\n var tooltipPoint = this.getPoint(dataItem, tooltipXField, tooltipYField, this.getAdjustedXLocation(dataItem, tooltipXField), this.getAdjustedYLocation(dataItem, tooltipYField));\r\n if (tooltipPoint) {\r\n if (this.chart.className == \"XYChart\" && (tooltipPoint.y < -1 || tooltipPoint.y > this.yAxis.pixelHeight + 1 || tooltipPoint.x < -1 || tooltipPoint.x > this.xAxis.pixelWidth + 1)) {\r\n // void\r\n }\r\n else {\r\n this.tooltipX = tooltipPoint.x;\r\n this.tooltipY = tooltipPoint.y;\r\n if (this._prevTooltipDataItem != dataItem) {\r\n this.dispatchImmediately(\"tooltipshownat\", {\r\n type: \"tooltipshownat\",\r\n target: this,\r\n dataItem: dataItem\r\n });\r\n this._prevTooltipDataItem = dataItem;\r\n }\r\n if (this.cursorHoverEnabled) {\r\n try {\r\n for (var _b = __values(dataItem.sprites), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var sprite = _c.value;\r\n if (!sprite.parent.visible || sprite.isHidden || sprite.__disabled || sprite.disabled || sprite.isHiding) {\r\n }\r\n else {\r\n if (!sprite.interactions.isRealHover) {\r\n sprite.dispatchImmediately(\"over\");\r\n sprite.interactions.isRealHover = true;\r\n }\r\n sprite.isHover = true;\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n }\r\n if (this.showTooltip()) {\r\n return $utils.spritePointToSvg({ x: tooltipPoint.x, y: tooltipPoint.y }, this);\r\n }\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.updateLegendValue(dataItem, true);\r\n }\r\n };\r\n /**\r\n * Returns default state to bullets when tooltip is shown at some other data\r\n * item or hidden\r\n */\r\n XYSeries.prototype.returnBulletDefaultState = function (dataItem) {\r\n var e_2, _a;\r\n if (this._prevTooltipDataItem && this._prevTooltipDataItem != dataItem) {\r\n try {\r\n for (var _b = __values(this._prevTooltipDataItem.sprites), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var sprite = _c.value;\r\n if (!sprite.isDisposed()) {\r\n var fireEvent = sprite.interactions.isRealHover;\r\n sprite.isHover = false;\r\n if (fireEvent) {\r\n sprite.dispatchImmediately(\"out\");\r\n }\r\n }\r\n else {\r\n this._prevTooltipDataItem = undefined;\r\n }\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n }\r\n };\r\n XYSeries.prototype.shouldCreateBullet = function (dataItem, bulletTemplate) {\r\n // use series xField/yField if bullet doesn't have fields set\r\n var xField = bulletTemplate.xField;\r\n if (!$type.hasValue(xField)) {\r\n xField = this.xField;\r\n }\r\n var yField = bulletTemplate.yField;\r\n if (!$type.hasValue(yField)) {\r\n yField = this.yField;\r\n }\r\n if ((this.xAxis instanceof ValueAxis && !dataItem.hasValue([xField])) || (this.yAxis instanceof ValueAxis && !dataItem.hasValue([yField]))) {\r\n return false;\r\n }\r\n if (bulletTemplate.disabled) {\r\n var disabledField = bulletTemplate.propertyFields.disabled;\r\n var dataContext = dataItem.dataContext;\r\n if (dataContext && dataContext[disabledField] === false) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.updateTooltip = function () {\r\n if (!this.hideTooltipWhileZooming && this.tooltip && !this.tooltip.isHidden && !this.isHiding && !this.isHidden && this.tooltipDataItem) {\r\n this.showTooltipAtDataItem(this.tooltipDataItem);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.positionBullet = function (bullet) {\r\n _super.prototype.positionBullet.call(this, bullet);\r\n var dataItem = bullet.dataItem;\r\n // use series xField/yField if bullet doesn't have fields set\r\n var xField = bullet.xField;\r\n if (!$type.hasValue(xField)) {\r\n xField = this.xField;\r\n }\r\n var yField = bullet.yField;\r\n if (!$type.hasValue(yField)) {\r\n yField = this.yField;\r\n }\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if ((xAxis instanceof ValueAxis && !dataItem.hasValue([xField])) || (yAxis instanceof ValueAxis && !dataItem.hasValue([yField]))) {\r\n bullet.visible = false;\r\n }\r\n else {\r\n var bulletLocationX = this.getBulletLocationX(bullet, xField);\r\n var bulletLocationY = this.getBulletLocationY(bullet, yField);\r\n var point = this.getPoint(dataItem, xField, yField, bulletLocationX, bulletLocationY);\r\n if (point) {\r\n var xOpenField = this.xOpenField;\r\n var yOpenField = this.yOpenField;\r\n var positionX = void 0;\r\n var positionY = void 0;\r\n if (xAxis instanceof DateAxis) {\r\n if (!$type.isNumber(bulletLocationX)) {\r\n bulletLocationX = 0;\r\n }\r\n var openValue = void 0;\r\n var closeValue = dataItem.getWorkingValue(xField);\r\n if (!xOpenField) {\r\n if (xAxis == this.baseAxis) {\r\n openValue = xAxis.baseValue;\r\n }\r\n }\r\n else {\r\n openValue = dataItem.getWorkingValue(xOpenField);\r\n }\r\n if (!$type.isNumber(openValue)) {\r\n openValue = closeValue;\r\n }\r\n var stack = dataItem.getValue(\"valueX\", \"stack\");\r\n openValue += stack;\r\n closeValue += stack;\r\n if (openValue == closeValue) {\r\n var baseInterval = xAxis.baseInterval;\r\n var dateFormatter = xAxis.dateFormatter;\r\n openValue = $time.round(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.firstDayOfWeek, dateFormatter.utc, undefined, dateFormatter.timezoneMinutes, dateFormatter.timezone).getTime();\r\n closeValue = $time.add(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.utc).getTime();\r\n }\r\n var middleValue = void 0;\r\n if (xAxis == this.baseAxis) {\r\n middleValue = openValue + (closeValue - openValue) * bulletLocationX;\r\n }\r\n else {\r\n middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationX);\r\n }\r\n positionX = xAxis.valueToPosition(middleValue);\r\n }\r\n else if (xAxis instanceof ValueAxis) {\r\n if (!$type.isNumber(bulletLocationX)) {\r\n bulletLocationX = 0;\r\n }\r\n var openValue = void 0;\r\n var closeValue = dataItem.getWorkingValue(xField);\r\n if (!xOpenField) {\r\n openValue = xAxis.baseValue;\r\n }\r\n else {\r\n openValue = dataItem.getWorkingValue(xOpenField);\r\n }\r\n var stack = dataItem.getValue(\"valueX\", \"stack\");\r\n openValue += stack;\r\n closeValue += stack;\r\n var middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationX);\r\n positionX = xAxis.valueToPosition(middleValue);\r\n }\r\n else if (xAxis instanceof CategoryAxis) {\r\n var rightLocation = this.getAdjustedXLocation(dataItem, xField, bullet.locationX);\r\n var leftLocation = this.getAdjustedXLocation(dataItem, xOpenField, bullet.locationX);\r\n positionX = xAxis.categoryToPosition(dataItem[xField], rightLocation);\r\n var openPositionX = void 0;\r\n if (xOpenField) {\r\n openPositionX = xAxis.categoryToPosition(dataItem[xOpenField], leftLocation);\r\n }\r\n if (!$type.isNumber(openPositionX)) {\r\n openPositionX = 1;\r\n }\r\n positionX = openPositionX + (positionX - openPositionX) * bulletLocationX;\r\n }\r\n if (yAxis instanceof DateAxis) {\r\n if (!$type.isNumber(bulletLocationY)) {\r\n bulletLocationY = 0;\r\n }\r\n var openValue = void 0;\r\n var closeValue = dataItem.getWorkingValue(yField);\r\n if (!yOpenField) {\r\n if (yAxis == this.baseAxis) {\r\n openValue = yAxis.baseValue;\r\n }\r\n }\r\n else {\r\n openValue = dataItem.getWorkingValue(yOpenField);\r\n }\r\n if (!$type.isNumber(openValue)) {\r\n openValue = closeValue;\r\n }\r\n var stack = dataItem.getValue(\"valueY\", \"stack\");\r\n openValue += stack;\r\n closeValue += stack;\r\n if (openValue == closeValue) {\r\n var baseInterval = yAxis.baseInterval;\r\n var dateFormatter = yAxis.dateFormatter;\r\n openValue = $time.round(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.firstDayOfWeek, dateFormatter.utc, undefined, dateFormatter.timezoneMinutes, dateFormatter.timezone).getTime();\r\n closeValue = $time.add(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.utc).getTime();\r\n }\r\n var middleValue = void 0;\r\n if (yAxis == this.baseAxis) {\r\n middleValue = openValue + (closeValue - openValue) * bulletLocationY;\r\n }\r\n else {\r\n middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationY);\r\n }\r\n positionY = yAxis.valueToPosition(middleValue);\r\n }\r\n else if (yAxis instanceof ValueAxis) {\r\n if (!$type.isNumber(bulletLocationY)) {\r\n bulletLocationY = 0;\r\n }\r\n var openValue = void 0;\r\n var closeValue = dataItem.getWorkingValue(yField);\r\n if (!yOpenField) {\r\n openValue = yAxis.baseValue;\r\n }\r\n else {\r\n openValue = dataItem.getWorkingValue(yOpenField);\r\n }\r\n var stack = dataItem.getValue(\"valueY\", \"stack\");\r\n openValue += stack;\r\n closeValue += stack;\r\n var middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationY);\r\n positionY = yAxis.valueToPosition(middleValue);\r\n }\r\n else if (yAxis instanceof CategoryAxis) {\r\n positionY = yAxis.categoryToPosition(dataItem[yField], bulletLocationY);\r\n var topLocation = this.getAdjustedYLocation(dataItem, yField, bullet.locationY);\r\n var bottomLocation = this.getAdjustedYLocation(dataItem, yOpenField, bullet.locationY);\r\n positionY = yAxis.categoryToPosition(dataItem[yField], topLocation);\r\n var openPositionY = void 0;\r\n if (yOpenField) {\r\n openPositionY = yAxis.categoryToPosition(dataItem[yOpenField], bottomLocation);\r\n }\r\n if (!$type.isNumber(openPositionY)) {\r\n openPositionY = 1;\r\n }\r\n positionY = openPositionY + (positionY - openPositionY) * bulletLocationY;\r\n }\r\n bullet.visible = true;\r\n this.positionBulletReal(bullet, positionX, positionY);\r\n }\r\n else {\r\n bullet.visible = false;\r\n }\r\n }\r\n };\r\n XYSeries.prototype.positionBulletReal = function (bullet, positionX, positionY) {\r\n bullet.x = this.xAxis.renderer.positionToPoint(positionX, positionY).x;\r\n bullet.y = this.yAxis.renderer.positionToPoint(positionY, positionX).y;\r\n };\r\n /**\r\n * returns bullet x location\r\n * @ignore\r\n */\r\n XYSeries.prototype.getBulletLocationX = function (bullet, field) {\r\n var bulletLocation = bullet.locationX;\r\n var dataItem = bullet.dataItem;\r\n if (!$type.isNumber(bulletLocation)) {\r\n bulletLocation = dataItem.workingLocations[field];\r\n }\r\n return bulletLocation;\r\n };\r\n /**\r\n * Returns bullet x location\r\n * @ignore\r\n */\r\n XYSeries.prototype.getBulletLocationY = function (bullet, field) {\r\n var bulletLocation = bullet.locationY;\r\n var dataItem = bullet.dataItem;\r\n if (!$type.isNumber(bulletLocation)) {\r\n bulletLocation = dataItem.workingLocations[field];\r\n }\r\n return bulletLocation;\r\n };\r\n /**\r\n * This method must be called if you update Series' data fields that might\r\n * affect stacking of the series.\r\n *\r\n * Since individual `dataField` changes are not being monitored, you need\r\n * todo it manually for changes to take affect.\r\n *\r\n * @since 4.7.21\r\n */\r\n XYSeries.prototype.updateStacking = function () {\r\n var _this = this;\r\n this.invalidateDataItems();\r\n if (this.chart) {\r\n this.chart.series.each(function (series) {\r\n if (series.baseAxis == _this.baseAxis) {\r\n series.stackedSeries = undefined;\r\n series.invalidateDataItems();\r\n series.invalidateProcessedData();\r\n }\r\n });\r\n }\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"stacked\", {\r\n /**\r\n * @return Can be stacked?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"stacked\");\r\n },\r\n /**\r\n * Can items from this series be included into stacks?\r\n *\r\n * Note: proper stacking is only possible if series have the same number\r\n * of data items. To ensure this, don't set data directly on series\r\n * but do this on chart instead.\r\n *\r\n * @default false\r\n * @param stacked Can be stacked?\r\n */\r\n set: function (stacked) {\r\n if (this.setPropertyValue(\"stacked\", stacked, true)) {\r\n this.updateStacking();\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (!stacked) {\r\n var field_1;\r\n if (xAxis != this.baseAxis && xAxis instanceof ValueAxis) {\r\n field_1 = this.xField;\r\n }\r\n if (yAxis != this.baseAxis && yAxis instanceof ValueAxis) {\r\n field_1 = this.yField;\r\n }\r\n if (field_1) {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.setCalculatedValue(field_1, 0, \"stack\");\r\n dataItem.setCalculatedValue(field_1, 0, \"stackTrue\");\r\n });\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"snapTooltip\", {\r\n /**\r\n * @return Should snap?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"snapTooltip\");\r\n },\r\n /**\r\n * Should the nearest tooltip be shown if no data item is found on the\r\n * current cursor position? In order this to work, you should set snapTooltip = false on the series baseAxis.\r\n *\r\n * @default false\r\n * @param value Should snap?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"snapTooltip\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Shows hidden series.\r\n *\r\n * @param duration Duration of reveal animation (ms)\r\n * @return Animation\r\n */\r\n XYSeries.prototype.show = function (duration) {\r\n var _this = this;\r\n if (this.isHidden) {\r\n if (this.appeared && this.xAxis instanceof DateAxis && this.xAxis.groupData) {\r\n this._tmin.setKey(this.yAxis.uid, undefined);\r\n this._tmax.setKey(this.yAxis.uid, undefined);\r\n }\r\n if (this.appeared && this.yAxis instanceof DateAxis && this.yAxis.groupData) {\r\n this._tmin.setKey(this.xAxis.uid, undefined);\r\n this._tmax.setKey(this.xAxis.uid, undefined);\r\n }\r\n }\r\n var fields;\r\n if (this.xAxis instanceof ValueAxis && this.xAxis != this.baseAxis) {\r\n fields = this._xValueFields;\r\n }\r\n if (this.yAxis instanceof ValueAxis && this.yAxis != this.baseAxis) {\r\n fields = this._yValueFields;\r\n }\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var delay = 0;\r\n var interpolationDuration = this.defaultState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n if (!options.animationsEnabled) {\r\n interpolationDuration = 0;\r\n }\r\n var anim;\r\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\r\n var i = a[0];\r\n var dataItem = a[1];\r\n var realDuration = interpolationDuration;\r\n if (i < _this.startIndex - 10 || i > _this.endIndex + 10) {\r\n realDuration = 0;\r\n delay = 0;\r\n }\r\n if (_this.sequencedInterpolation && realDuration > 0) {\r\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n }\r\n anim = dataItem.show(realDuration, delay, fields);\r\n });\r\n // other data sets\r\n this.dataSets.each(function (key, dataSet) {\r\n if (dataSet != _this.dataItems) {\r\n dataSet.each(function (dataItem) {\r\n dataItem.events.disable();\r\n dataItem.show(0, 0, fields);\r\n dataItem.events.enable();\r\n });\r\n }\r\n });\r\n if (this.mainDataSet != this.dataItems) {\r\n this.mainDataSet.each(function (dataItem) {\r\n dataItem.events.disable();\r\n dataItem.show(0, 0, fields);\r\n dataItem.events.enable();\r\n });\r\n }\r\n var animation = _super.prototype.show.call(this, duration);\r\n if (anim && !anim.isFinished()) {\r\n animation = anim;\r\n }\r\n if (this.hidden) {\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n this.hidden = false;\r\n }\r\n return animation;\r\n };\r\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of hiding animation (ms)\r\n * @return Animation\r\n */\r\n XYSeries.prototype.hide = function (duration) {\r\n var _this = this;\r\n var fields;\r\n var value;\r\n var xAxis = this.xAxis;\r\n if (xAxis instanceof ValueAxis && xAxis != this.baseAxis) {\r\n fields = this._xValueFields;\r\n // animate to zero if 0 is within zoomMin/zoomMax\r\n if (this.stacked || (xAxis.minZoomed < xAxis.baseValue && xAxis.maxZoomed > xAxis.baseValue) || this.stackedSeries) {\r\n value = xAxis.baseValue;\r\n }\r\n else {\r\n value = xAxis.min;\r\n }\r\n }\r\n var yAxis = this.yAxis;\r\n if (yAxis instanceof ValueAxis && yAxis != this.baseAxis) {\r\n fields = this._yValueFields;\r\n // animate to zero if 0 is within zoomMin/zoomMax\r\n if (this.stacked || (yAxis.minZoomed < yAxis.baseValue && yAxis.maxZoomed > yAxis.baseValue) || this.stackedSeries) {\r\n value = yAxis.baseValue;\r\n }\r\n else {\r\n value = yAxis.min;\r\n }\r\n }\r\n //if ($type.hasValue(fields)) {\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var interpolationDuration = this.hiddenState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n if (!options.animationsEnabled) {\r\n interpolationDuration = 0;\r\n }\r\n var delay = 0;\r\n var anim;\r\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\r\n var i = a[0];\r\n var dataItem = a[1];\r\n var realDuration = interpolationDuration;\r\n if (i < _this.startIndex - 10 || i > _this.endIndex + 10) {\r\n realDuration = 0;\r\n }\r\n if (realDuration == 0) {\r\n dataItem.hide(0, 0, value, fields);\r\n }\r\n else {\r\n if (_this.sequencedInterpolation && realDuration > 0) {\r\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n }\r\n anim = dataItem.hide(realDuration, delay, value, fields);\r\n }\r\n });\r\n // other data sets\r\n this.dataSets.each(function (key, dataSet) {\r\n if (dataSet != _this.dataItems) {\r\n dataSet.each(function (dataItem) {\r\n dataItem.events.disable();\r\n dataItem.hide(0, 0, value, fields);\r\n dataItem.events.enable();\r\n });\r\n }\r\n });\r\n if (this.mainDataSet != this.dataItems) {\r\n this.mainDataSet.each(function (dataItem) {\r\n dataItem.events.disable();\r\n dataItem.hide(0, 0, value, fields);\r\n dataItem.events.enable();\r\n });\r\n }\r\n var animation = _super.prototype.hide.call(this, interpolationDuration);\r\n if (animation && !animation.isFinished()) {\r\n animation.delay(delay);\r\n }\r\n if (anim && !anim.isFinished()) {\r\n animation = anim;\r\n }\r\n if (this.appeared) {\r\n this.dispatch(\"selectionextremeschanged\");\r\n }\r\n // helps to avoid flicker. otherwise columns will show up at full size and only on next frame will animate from 0\r\n this.validateDataElements();\r\n //}\r\n return animation;\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n _super.prototype.handleDataItemWorkingValueChange.call(this, dataItem, name);\r\n // to calculate stack values\r\n var axisSeries = this.baseAxis.series;\r\n $iter.each(axisSeries.iterator(), function (series) {\r\n if (series.stacked || series.stackedSeries) {\r\n series.invalidateProcessedData();\r\n }\r\n });\r\n };\r\n /**\r\n * [getStackValue description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\r\n XYSeries.prototype.getStackValue = function (dataItem, working) {\r\n // todo: here wer stack x and y values only. question is - what should we do with other values, like openX, openY?\r\n // if this series is not stacked or new stack begins, return.\r\n var _this = this;\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (!this.stacked || !xAxis || !yAxis) {\r\n return;\r\n }\r\n else {\r\n // it might seem that it's better to go through base axis series, but we do not maintain the same order as in chart.series there.\r\n var chart = this.chart;\r\n var index = chart.series.indexOf(this);\r\n var field_2;\r\n if (xAxis != this.baseAxis && xAxis instanceof ValueAxis) {\r\n field_2 = this.xField;\r\n }\r\n if (yAxis != this.baseAxis && yAxis instanceof ValueAxis) {\r\n field_2 = this.yField;\r\n }\r\n if (!field_2) {\r\n return;\r\n }\r\n //this is good for removing series, otherwise stack values will remain the same and chart won't pay atention when adding/removing series\t\t\t\r\n dataItem.setCalculatedValue(field_2, 0, \"stack\");\r\n dataItem.setCalculatedValue(field_2, 0, \"stackTrue\");\r\n $iter.eachContinue(chart.series.range(0, index).backwards().iterator(), function (prevSeries) {\r\n // stacking is only possible if both axes are the same\r\n if (prevSeries.xAxis == xAxis && prevSeries.yAxis == yAxis && prevSeries.className == _this.className) {\r\n // saving value\r\n prevSeries.stackedSeries = _this;\r\n var prevDataItem = prevSeries.dataItems.getIndex(dataItem.index); // indexes should match\r\n if (prevDataItem && prevDataItem.hasValue(_this._xValueFields) && prevDataItem.hasValue(_this._yValueFields)) {\r\n var value = dataItem.getValue(field_2);\r\n var prevValue = void 0;\r\n var prevStack = prevDataItem.getValue(field_2, \"stackTrue\");\r\n if (prevStack == null) {\r\n prevStack = 0;\r\n }\r\n var prevRealValue = prevDataItem.getValue(field_2) + prevStack;\r\n prevValue = prevDataItem.getWorkingValue(field_2) + prevDataItem.getValue(field_2, \"stack\");\r\n if (_this.stackToNegative) {\r\n if ((value >= 0 && prevRealValue >= 0) || (value < 0 && prevRealValue < 0)) {\r\n dataItem.setCalculatedValue(field_2, prevValue, \"stack\");\r\n dataItem.setCalculatedValue(field_2, prevRealValue, \"stackTrue\");\r\n return false;\r\n }\r\n else if (!prevSeries.stacked) {\r\n return false;\r\n }\r\n }\r\n else {\r\n dataItem.setCalculatedValue(field_2, prevValue, \"stack\");\r\n dataItem.setCalculatedValue(field_2, prevRealValue, \"stackTrue\");\r\n return false;\r\n }\r\n }\r\n else if (!prevSeries.stacked) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"stackToNegative\", {\r\n /**\r\n * @return Stack to base line\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"stackToNegative\");\r\n },\r\n /**\r\n * This setting indicates how negative values are treated in stacked stacked\r\n * series.\r\n *\r\n * If set to `true` (default), negative values will stack on the base line.\r\n *\r\n * If set to `false`, negative value will stack in relation to the previous\r\n * value in the stack.\r\n *\r\n * @since 4.9.34\r\n * @param value Stack to base line\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"stackToNegative\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"xField\", {\r\n /**\r\n * [xField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._xField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"yField\", {\r\n /**\r\n * [yField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._yField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"xOpenField\", {\r\n /**\r\n * [xOpenField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._xOpenField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"yOpenField\", {\r\n /**\r\n * [yOpenField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._yOpenField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"tooltipXField\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n if (this._tooltipXField) {\r\n return this._tooltipXField;\r\n }\r\n return this._xField;\r\n },\r\n /**\r\n * [tooltipXField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this._tooltipXField = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"tooltipYField\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n if (this._tooltipYField) {\r\n return this._tooltipYField;\r\n }\r\n return this._yField;\r\n },\r\n /**\r\n * [tooltipYField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this._tooltipYField = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns lowest value in the series for the specific axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\r\n XYSeries.prototype.min = function (axis) {\r\n return this._tmin.getKey(axis.uid);\r\n };\r\n /**\r\n * Returns highest value in the series for the specific axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\r\n XYSeries.prototype.max = function (axis) {\r\n return this._tmax.getKey(axis.uid);\r\n };\r\n /**\r\n * Returns lowest value in the series for the specific axis within current\r\n * selection.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\r\n XYSeries.prototype.selectionMin = function (axis) {\r\n var value = this._smin.getKey(axis.uid);\r\n // not good, because bad if there are no items with values in selection\r\n //if (!$type.isNumber(value)) {\r\n //value = this.min(axis);\r\n //}\t\t\r\n return value;\r\n };\r\n /**\r\n * Returns highest value in the series for the specific axis within current\r\n * selection.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\r\n XYSeries.prototype.selectionMax = function (axis) {\r\n var value = this._smax.getKey(axis.uid);\r\n // not good, because bad if there are no items with values in selection\r\n //if (!$type.isNumber(value)) {\r\n //value = this.max(axis);\r\n //}\r\n return value;\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYSeries.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up base axes\r\n if ($type.hasValue(config.baseAxis) && $type.isString(config.baseAxis)) {\r\n if (this.map.hasKey(config.baseAxis)) {\r\n config.baseAxis = this.map.getKey(config.baseAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.baseAxis + \"\\\" found for `baseAxis`.\");\r\n delete config.baseAxis;\r\n }\r\n }\r\n // Set up axes\r\n if ($type.hasValue(config.xAxis) && $type.isString(config.xAxis)) {\r\n if (this.map.hasKey(config.xAxis)) {\r\n config.xAxis = this.map.getKey(config.xAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.xAxis + \"\\\" found for `xAxis`.\");\r\n delete config.xAxis;\r\n }\r\n }\r\n if ($type.hasValue(config.yAxis) && $type.isString(config.yAxis)) {\r\n if (this.map.hasKey(config.yAxis)) {\r\n config.yAxis = this.map.getKey(config.yAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.yAxis + \"\\\" found for `yAxis`.\");\r\n delete config.yAxis;\r\n }\r\n }\r\n // Set up axis ranges\r\n if ($type.hasValue(config.axisRanges) && $type.isArray(config.axisRanges)) {\r\n for (var i = 0, len = config.axisRanges.length; i < len; i++) {\r\n var range = config.axisRanges[i];\r\n if (!$type.hasValue(range.type)) {\r\n range.type = \"AxisDataItem\";\r\n }\r\n if ($type.hasValue(range.axis) && $type.isString(range.axis) && this.map.hasKey(range.axis)) {\r\n range.component = this.map.getKey(range.axis);\r\n }\r\n else if ($type.hasValue(range.component) && $type.isString(range.component) && this.map.hasKey(range.component)) {\r\n range.component = this.map.getKey(range.component);\r\n }\r\n }\r\n }\r\n // Parse date fields based on the series fields\r\n if (!$type.hasValue(config.dataFields) || !$type.isObject(config.dataFields)) {\r\n this.processingErrors.push(\"`dataFields` is not set for series [\" + (this.name || \"unnamed\") + \"]\");\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n *\r\n * @param dataItem Data item\r\n * @param xKey Name of X data field\r\n * @param yKey Name of Y data field\r\n * @param locationX X location\r\n * @param locationY Y location\r\n * @param stackKeyX ?\r\n * @param stackKeyY ?\r\n * @returns Coordinates\r\n */\r\n XYSeries.prototype.getPoint = function (dataItem, xKey, yKey, locationX, locationY, stackKeyX, stackKeyY) {\r\n if (this.xAxis && this.yAxis) {\r\n var x = this.xAxis.getX(dataItem, xKey, locationX);\r\n var y = this.yAxis.getY(dataItem, yKey, locationY);\r\n x = $math.fitToRange(x, -this._maxxX, this._maxxX); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n y = $math.fitToRange(y, -this._maxxY, this._maxxY); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n return { x: x, y: y };\r\n }\r\n };\r\n /**\r\n * Updates item reader text based on the type and set up of axis.\r\n */\r\n XYSeries.prototype.updateItemReaderText = function () {\r\n // We do not want to overwrite this if `itemReaderText` was changed by\r\n // user code.\r\n if (this._itemReaderTextChanged) {\r\n return;\r\n }\r\n var text = \"\";\r\n $object.each(this.dataFields, function (key, val) {\r\n text += \"{\" + key + \"} \";\r\n });\r\n this.itemReaderText = text;\r\n this._itemReaderTextChanged = false;\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"cursorTooltipEnabled\", {\r\n /**\r\n * @return Display tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cursorTooltipEnabled\");\r\n },\r\n /**\r\n * Indicates if series should display a tooltip for chart's cursor.\r\n *\r\n * If set to `true` (default), the tooltips set for all series item's\r\n * elements like columns and bullets will be automatically shown\r\n * when [[XYCursor]] passes over category/date, even if its not hovered\r\n * directly over the item.\r\n *\r\n * Set this to `false` to disable such behavior and display item-specific\r\n * tooltips only when hovered directly over them\r\n *\r\n * @default true\r\n * @param value Display tooltip?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cursorTooltipEnabled\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"cursorHoverEnabled\", {\r\n /**\r\n * @return Hover enabled?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cursorHoverEnabled\");\r\n },\r\n /**\r\n * Indicates if series should apply hover state on bullets/columns/etc when\r\n * cursor is over the data item.\r\n *\r\n * If set to `true` (default) and chart cursor is enabled on th chart,\r\n * hovering over date/category will trigger hover states on related Series\r\n * items like bullets and columns.\r\n *\r\n * @default true\r\n * @since 4.2.2\r\n * @param value Hover enabled?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cursorHoverEnabled\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"excludeFromTotal\", {\r\n /**\r\n * @return Exclude from totals?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"excludeFromTotal\");\r\n },\r\n /**\r\n * Indicates if series' values should be excluded when calculating totals.\r\n *\r\n * @default false\r\n * @since 4.4.9\r\n * @param value Exclude from totals?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"excludeFromTotal\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"hideTooltipWhileZooming\", {\r\n /**\r\n * @return Hide tooltip while zooming?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hideTooltipWhileZooming\");\r\n },\r\n /**\r\n * Indicates if series' tooltip should be hidden while series axis range is\r\n * animating (zooming).\r\n *\r\n * @default true\r\n * @since 4.7.16\r\n * @param value Hide tooltip while zooming?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"hideTooltipWhileZooming\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"maskBullets\", {\r\n /**\r\n * @return Mask bullets?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maskBullets\");\r\n },\r\n /**\r\n * Indicates if series' bullets should be masked.\r\n *\r\n * @default true\r\n * @since 4.7.17\r\n * @param value Mask bullets?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maskBullets\", value);\r\n var chart = this.chart;\r\n if (chart) {\r\n if (value) {\r\n this.bulletsContainer.parent = chart.bulletsContainer;\r\n }\r\n else {\r\n this.bulletsContainer.parent = chart.axisBulletsContainer;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all properties from another instance of [[Series]].\r\n *\r\n * @param source Source series\r\n */\r\n XYSeries.prototype.copyFrom = function (source) {\r\n this.groupFields = $utils.copyProperties(source.groupFields, {});\r\n _super.prototype.copyFrom.call(this, source);\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n XYSeries.prototype.dispose = function () {\r\n if (this.scrollbarSeries) {\r\n this.scrollbarSeries.dispose();\r\n }\r\n _super.prototype.dispose.call(this);\r\n };\r\n return XYSeries;\r\n}(Series));\r\nexport { XYSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYSeries\"] = XYSeries;\r\nregistry.registeredClasses[\"XYSeriesDataItem\"] = XYSeriesDataItem;\r\n","/**\r\n * A module with functionality for buildin a scrollbar with an XY graph in it.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Scrollbar } from \"../../core/elements/Scrollbar\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { XYChart } from \"../types/XYChart\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { DesaturateFilter } from \"../../core/rendering/filters/DesaturateFilter\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { options } from \"../../core/Options\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A special version of the Scrollbar that has an XY chart in it.\r\n *\r\n * Used mainly as an advanced scrollbar with a preview for other XY charts.\r\n *\r\n * However, can be used as standalone element.\r\n *\r\n * @see {@link IXYChartScrollbarEvents} for a list of available events\r\n * @see {@link IXYChartScrollbarAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar XYChartScrollbar = /** @class */ (function (_super) {\r\n __extends(XYChartScrollbar, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYChartScrollbar() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A chart element Scrollbar is for.\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n _this.className = \"XYChartScrollbar\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.padding(0, 0, 0, 0);\r\n var scrollbarChart = _this.createChild(XYChart);\r\n scrollbarChart.shouldClone = false;\r\n scrollbarChart.margin(0, 0, 0, 0);\r\n scrollbarChart.padding(0, 0, 0, 0);\r\n scrollbarChart.interactionsEnabled = false;\r\n _this._scrollbarChart = scrollbarChart;\r\n if (!$utils.isIE()) {\r\n var filter = new DesaturateFilter();\r\n filter.filterUnits = \"userSpaceOnUse\";\r\n scrollbarChart.plotContainer.filters.push(filter);\r\n }\r\n _this._disposers.push(_this._scrollbarChart);\r\n _this.minHeight = 60;\r\n _this.minWidth = 60;\r\n var unselectedOverlay = _this.createChild(Sprite);\r\n unselectedOverlay.shouldClone = false;\r\n unselectedOverlay.setElement(_this.paper.add(\"path\"));\r\n unselectedOverlay.fill = interfaceColors.getFor(\"background\");\r\n unselectedOverlay.fillOpacity = 0.8;\r\n unselectedOverlay.interactionsEnabled = false;\r\n unselectedOverlay.isMeasured = false;\r\n unselectedOverlay.toBack();\r\n _this._unselectedOverlay = unselectedOverlay;\r\n _this._disposers.push(_this._unselectedOverlay);\r\n scrollbarChart.toBack();\r\n _this.background.cornerRadius(0, 0, 0, 0);\r\n var thumbBackground = _this.thumb.background;\r\n thumbBackground.cornerRadius(0, 0, 0, 0);\r\n thumbBackground.fillOpacity = 0;\r\n thumbBackground.fill = interfaceColors.getFor(\"background\");\r\n var hoverState = thumbBackground.states.getKey(\"hover\");\r\n if (hoverState) {\r\n hoverState.properties.fillOpacity = 0.2;\r\n }\r\n var downState = thumbBackground.states.getKey(\"down\");\r\n if (downState) {\r\n downState.properties.fillOpacity = 0.4;\r\n }\r\n _this._disposers.push(_this._chart);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(XYChartScrollbar.prototype, \"series\", {\r\n /**\r\n * A list of series that are used to draw graph(s) on the scrollbar.\r\n *\r\n * @readonly\r\n * @return Series\r\n */\r\n get: function () {\r\n if (!this._series) {\r\n this._series = new List();\r\n this._disposers.push(this._series.events.on(\"inserted\", this.handleSeriesAdded, this, false));\r\n this._disposers.push(this._series.events.on(\"removed\", this.handleSeriesRemoved, this, false));\r\n }\r\n return this._series;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Decorates a new series when they are pushed into a `series` list.\r\n *\r\n * @param event Event\r\n */\r\n XYChartScrollbar.prototype.handleSeriesAdded = function (event) {\r\n var _this = this;\r\n var sourceSeries = event.newValue;\r\n if (!sourceSeries.xAxis || !sourceSeries.yAxis) {\r\n return;\r\n }\r\n var scrollbarChart = this.scrollbarChart;\r\n scrollbarChart.zoomOutButton.disabled = true;\r\n this.chart = sourceSeries.chart;\r\n scrollbarChart.dateFormatter.inputDateFormat = this.chart.dateFormatter.inputDateFormat;\r\n // Ensure that scrollbar chart shares the same locale as parent chart\r\n scrollbarChart.language.locale = this.chart.language.locale;\r\n var addXAxis = true;\r\n var addYAxis = true;\r\n // check if we haven't added clone of x or y axis before\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (series != sourceSeries) {\r\n if (series.xAxis == sourceSeries.xAxis && _this.scrollbarChart.xAxes.length > 0) {\r\n addXAxis = false;\r\n }\r\n if (series.yAxis == sourceSeries.yAxis && _this.scrollbarChart.yAxes.length > 0) {\r\n addYAxis = false;\r\n }\r\n }\r\n });\r\n sourceSeries.events.on(\"beforedisposed\", function () {\r\n _this.series.removeValue(sourceSeries);\r\n });\r\n var interfaceColors = new InterfaceColorSet();\r\n var series = sourceSeries.clone();\r\n if (options.onlyShowOnViewport || options.queue) {\r\n this.addDisposer(this.chart.events.on(\"removedfromqueue\", function () {\r\n scrollbarChart.invalidateData();\r\n }));\r\n }\r\n if ($utils.isIE()) {\r\n series.stroke = color(\"#aaaaaa\");\r\n series.fill = series.stroke;\r\n series.propertyFields.fill = undefined;\r\n series.propertyFields.stroke = undefined;\r\n }\r\n sourceSeries.scrollbarSeries = series;\r\n if (addXAxis) {\r\n var xAxis = sourceSeries.xAxis.clone();\r\n scrollbarChart.xAxes.moveValue(xAxis);\r\n xAxis.title.disabled = true;\r\n xAxis.rangeChangeDuration = 0;\r\n //xAxis.id = sourceSeries.uid;\r\n var renderer = xAxis.renderer;\r\n renderer.ticks.template.disabled = true;\r\n renderer.inside = true;\r\n renderer.labels.template.inside = true;\r\n renderer.line.strokeOpacity = 0;\r\n renderer.minLabelPosition = 0.02;\r\n renderer.maxLabelPosition = 0.98;\r\n renderer.line.disabled = true;\r\n renderer.axisFills.template.disabled = true;\r\n renderer.baseGrid.disabled = true;\r\n renderer.grid.template.strokeOpacity = 0.05;\r\n renderer.minWidth = undefined;\r\n renderer.minHeight = undefined;\r\n renderer.padding(0, 0, 0, 0);\r\n renderer.chart = scrollbarChart;\r\n renderer.margin(0, 0, 0, 0);\r\n xAxis.width = percent(100);\r\n var labelsTemplate = renderer.labels.template;\r\n labelsTemplate.fillOpacity = 0.5;\r\n xAxis.maxZoomCount = undefined;\r\n xAxis.minZoomCount = undefined;\r\n if (xAxis instanceof DateAxis) {\r\n var vAxis_1 = xAxis;\r\n var sourceAxis = sourceSeries.xAxis;\r\n vAxis_1.groupCount = sourceAxis.groupCount * 5;\r\n vAxis_1.min = undefined;\r\n vAxis_1.max = undefined;\r\n this._disposers.push(vAxis_1.clonedFrom.events.on(\"extremeschanged\", function () {\r\n if ($type.isNumber(vAxis_1.clonedFrom.minDefined)) {\r\n vAxis_1.min = vAxis_1.clonedFrom.minDefined;\r\n }\r\n if ($type.isNumber(vAxis_1.clonedFrom.maxDefined)) {\r\n vAxis_1.max = vAxis_1.clonedFrom.maxDefined;\r\n }\r\n }, undefined, false));\r\n }\r\n else if (xAxis instanceof ValueAxis) {\r\n var vAxis_2 = xAxis;\r\n vAxis_2.min = undefined;\r\n vAxis_2.max = undefined;\r\n if (!$type.isNumber(vAxis_2.clonedFrom.minDefined)) {\r\n vAxis_2.min = undefined;\r\n }\r\n if (!$type.isNumber(vAxis_2.clonedFrom.maxDefined)) {\r\n vAxis_2.max = undefined;\r\n }\r\n this._disposers.push(vAxis_2.clonedFrom.events.on(\"extremeschanged\", function () {\r\n if ($type.isNumber(vAxis_2.clonedFrom.minDefined)) {\r\n vAxis_2.min = vAxis_2.clonedFrom.min;\r\n }\r\n if ($type.isNumber(vAxis_2.clonedFrom.maxDefined)) {\r\n vAxis_2.max = vAxis_2.clonedFrom.max;\r\n }\r\n }, undefined, false));\r\n }\r\n series.xAxis = xAxis;\r\n }\r\n else {\r\n this.scrollbarChart.xAxes.each(function (xAxis) {\r\n if (xAxis.clonedFrom == sourceSeries.xAxis) {\r\n series.xAxis = xAxis;\r\n }\r\n });\r\n }\r\n if (addYAxis) {\r\n var yAxis = sourceSeries.yAxis.clone();\r\n scrollbarChart.yAxes.moveValue(yAxis);\r\n yAxis.title.disabled = true;\r\n yAxis.rangeChangeDuration = 0;\r\n var renderer = yAxis.renderer;\r\n renderer.ticks.template.disabled = true;\r\n renderer.inside = true;\r\n renderer.labels.template.inside = true;\r\n renderer.line.strokeOpacity = 0;\r\n renderer.minLabelPosition = 0.02;\r\n renderer.maxLabelPosition = 0.98;\r\n renderer.line.disabled = true;\r\n renderer.axisFills.template.disabled = true;\r\n renderer.grid.template.stroke = interfaceColors.getFor(\"background\");\r\n renderer.baseGrid.disabled = true;\r\n renderer.grid.template.strokeOpacity = 0.05;\r\n renderer.minWidth = undefined;\r\n renderer.minHeight = undefined;\r\n renderer.chart = scrollbarChart;\r\n renderer.padding(0, 0, 0, 0);\r\n renderer.margin(0, 0, 0, 0);\r\n yAxis.height = percent(100);\r\n var labelsTemplate = renderer.labels.template;\r\n labelsTemplate.fillOpacity = 0.5;\r\n series.yAxis = yAxis;\r\n yAxis.maxZoomCount = undefined;\r\n yAxis.minZoomCount = undefined;\r\n if (yAxis instanceof DateAxis) {\r\n var vAxis_3 = yAxis;\r\n vAxis_3.min = undefined;\r\n vAxis_3.max = undefined;\r\n var sourceAxis = sourceSeries.yAxis;\r\n yAxis.groupCount = sourceAxis.groupCount * 5;\r\n this._disposers.push(vAxis_3.clonedFrom.events.on(\"extremeschanged\", function () {\r\n if ($type.isNumber(vAxis_3.clonedFrom.minDefined)) {\r\n vAxis_3.min = vAxis_3.clonedFrom.minDefined;\r\n }\r\n if ($type.isNumber(vAxis_3.clonedFrom.maxDefined)) {\r\n vAxis_3.max = vAxis_3.clonedFrom.maxDefined;\r\n }\r\n }));\r\n }\r\n else if (yAxis instanceof ValueAxis) {\r\n var vAxis_4 = yAxis;\r\n vAxis_4.min = undefined;\r\n vAxis_4.max = undefined;\r\n if (!$type.isNumber(vAxis_4.clonedFrom.minDefined)) {\r\n vAxis_4.min = undefined;\r\n }\r\n if (!$type.isNumber(vAxis_4.clonedFrom.maxDefined)) {\r\n vAxis_4.max = undefined;\r\n }\r\n this._disposers.push(vAxis_4.clonedFrom.events.on(\"extremeschanged\", function () {\r\n if ($type.isNumber(vAxis_4.clonedFrom.minDefined)) {\r\n vAxis_4.min = vAxis_4.clonedFrom.minDefined;\r\n }\r\n if ($type.isNumber(vAxis_4.clonedFrom.maxDefined)) {\r\n vAxis_4.max = vAxis_4.clonedFrom.maxDefined;\r\n }\r\n }));\r\n }\r\n }\r\n else {\r\n this.scrollbarChart.yAxes.each(function (yAxis) {\r\n if (yAxis.clonedFrom == sourceSeries.yAxis) {\r\n series.yAxis = yAxis;\r\n }\r\n });\r\n }\r\n series.rangeChangeDuration = 0;\r\n series.interpolationDuration = 0;\r\n series.defaultState.transitionDuration = 0;\r\n series.showOnInit = false;\r\n this._disposers.push(series.events.on(\"validated\", this.zoomOutAxes, this, false));\r\n // data might be set drectly on series\r\n this._disposers.push(sourceSeries.events.on(\"datavalidated\", function () {\r\n if (series.data != sourceSeries.data) { // data setter doesn't check this\r\n series.data = sourceSeries.data;\r\n }\r\n }, undefined, false));\r\n series.defaultState.properties.visible = true;\r\n scrollbarChart.series.push(series);\r\n this.updateByOrientation();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChartScrollbar.prototype.updateByOrientation = function () {\r\n var _this = this;\r\n if (this._scrollbarChart) {\r\n $iter.each(this._scrollbarChart.xAxes.iterator(), function (xAxis) {\r\n var renderer = xAxis.renderer;\r\n if (_this.orientation == \"vertical\") {\r\n renderer.grid.template.disabled = true;\r\n renderer.labels.template.disabled = true;\r\n renderer.minGridDistance = 10;\r\n }\r\n else {\r\n renderer.grid.template.disabled = false;\r\n renderer.labels.template.disabled = false;\r\n renderer.minGridDistance = xAxis.clonedFrom.renderer.minGridDistance;\r\n }\r\n });\r\n $iter.each(this._scrollbarChart.yAxes.iterator(), function (yAxis) {\r\n var renderer = yAxis.renderer;\r\n if (_this.orientation == \"horizontal\") {\r\n renderer.grid.template.disabled = true;\r\n renderer.labels.template.disabled = true;\r\n renderer.minGridDistance = 10;\r\n }\r\n else {\r\n renderer.grid.template.disabled = false;\r\n renderer.labels.template.disabled = false;\r\n renderer.minGridDistance = yAxis.clonedFrom.renderer.minGridDistance;\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Cleans up after series are removed from Scrollbar.\r\n *\r\n * @param event Event\r\n */\r\n XYChartScrollbar.prototype.handleSeriesRemoved = function (event) {\r\n var sourceSeries = event.oldValue;\r\n var scrollbarChart = this.scrollbarChart;\r\n scrollbarChart.series.each(function (series) {\r\n if (series && series.clonedFrom == sourceSeries) {\r\n scrollbarChart.series.removeValue(series);\r\n }\r\n });\r\n if (scrollbarChart.series.length == 0) {\r\n scrollbarChart.xAxes.clear();\r\n scrollbarChart.yAxes.clear();\r\n }\r\n try {\r\n sourceSeries.events.off(\"validated\", this.zoomOutAxes, this);\r\n }\r\n catch (err) {\r\n }\r\n };\r\n Object.defineProperty(XYChartScrollbar.prototype, \"scrollbarChart\", {\r\n /**\r\n * A chart element that is used to display graphs in the Scrollbar.\r\n *\r\n * This is not the same as `chart`. It's a totally independent instance of\r\n * [[XYChart]] with separate config, series, etc.\r\n *\r\n * It can be configured just like any other [[XYChart]].\r\n *\r\n * @readonly\r\n * @return Scrollbar's internal chart\r\n */\r\n get: function () {\r\n return this._scrollbarChart;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChartScrollbar.prototype, \"chart\", {\r\n /**\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * A chart that Scrollbar belongs to.\r\n *\r\n * @param chart Chart\r\n */\r\n set: function (chart) {\r\n if (this._chart.get() !== chart) {\r\n this._chart.set(chart, chart.events.on(\"datavalidated\", this.handleDataChanged, this, false));\r\n this.handleDataChanged();\r\n this._scrollbarChart.dataProvider = chart; // this makes scrollbar chart do not validate data untill charts' data is validated\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChartScrollbar.prototype, \"unselectedOverlay\", {\r\n /**\r\n * A [[Sprite]] object representing overlay that is used to dim area of the\r\n * scrollbar that is currently not selected.\r\n *\r\n * Use its `fillOpacity` to set opacity of the fill, with `0` (zero)\r\n * completely disabling the dimming, and `1` making unselected area completely\r\n * blank.\r\n *\r\n * @since 4.6.1\r\n * @readonly\r\n * @return Unselected area curtain element\r\n */\r\n get: function () {\r\n return this._unselectedOverlay;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates Scrollbar's internal chart's data when the main chart's data\r\n * changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChartScrollbar.prototype.handleDataChanged = function () {\r\n if (this.chart.data != this.scrollbarChart.data) {\r\n this.scrollbarChart.data = this.chart.data;\r\n }\r\n else {\r\n // add data is handled in XYChart\r\n // invalidating all data caused the problem: https://github.com/amcharts/amcharts4/issues/2096\r\n this.scrollbarChart.invalidateRawData();\r\n }\r\n };\r\n /**\r\n * Zooms out all axes on the internal chart.\r\n */\r\n XYChartScrollbar.prototype.zoomOutAxes = function () {\r\n var scrollbarChart = this.scrollbarChart;\r\n $iter.each(scrollbarChart.xAxes.iterator(), function (x) {\r\n x.zoom({ start: 0, end: 1 }, true, true);\r\n });\r\n $iter.each(scrollbarChart.yAxes.iterator(), function (y) {\r\n y.zoom({ start: 0, end: 1 }, true, true);\r\n });\r\n };\r\n /**\r\n * Updates scrollbar thumb.\r\n *\r\n * @ignore\r\n */\r\n XYChartScrollbar.prototype.updateThumb = function (dispatchEvents) {\r\n if (dispatchEvents === void 0) { dispatchEvents = true; }\r\n _super.prototype.updateThumb.call(this, dispatchEvents);\r\n if (this._unselectedOverlay) {\r\n var thumb = this.thumb;\r\n var x = thumb.pixelX || 0;\r\n var y = thumb.pixelY || 0;\r\n var w = thumb.pixelWidth || 0;\r\n var h = thumb.pixelHeight || 0;\r\n var path = \"\";\r\n if (this.orientation == \"horizontal\") {\r\n path = $path.rectToPath({\r\n x: -1,\r\n y: 0,\r\n width: x,\r\n height: h\r\n });\r\n path += $path.rectToPath({\r\n x: x + w,\r\n y: 0,\r\n width: (this.pixelWidth || 0) - x - w,\r\n height: h\r\n });\r\n }\r\n else {\r\n path = $path.rectToPath({\r\n x: 0,\r\n y: 0,\r\n width: w,\r\n height: y\r\n });\r\n path += $path.rectToPath({\r\n x: 0,\r\n y: y + h,\r\n width: w,\r\n height: (this.pixelHeight || 0) - y - h\r\n });\r\n }\r\n this._unselectedOverlay.path = path;\r\n }\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYChartScrollbar.prototype.processConfig = function (config) {\r\n if (config) {\r\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n for (var i = 0, len = config.series.length; i < len; i++) {\r\n var series = config.series[i];\r\n if ($type.hasValue(series) && $type.isString(series)) {\r\n if (this.map.hasKey(series)) {\r\n config.series[i] = this.map.getKey(series);\r\n }\r\n else {\r\n throw Error(\"XYChartScrollbar error: Series with id `\" + series + \"` does not exist.\");\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return XYChartScrollbar;\r\n}(Scrollbar));\r\nexport { XYChartScrollbar };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYChartScrollbar\"] = XYChartScrollbar;\r\n","/**\r\n * XY Chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SerialChart, SerialChartDataItem } from \"./SerialChart\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { List, ListDisposer } from \"../../core/utils/List\";\r\nimport { Color } from \"../../core/utils/Color\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { AxisRendererX } from \"../axes/AxisRendererX\";\r\nimport { AxisRendererY } from \"../axes/AxisRendererY\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { XYSeries } from \"../series/XYSeries\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\nimport { ZoomOutButton } from \"../../core/elements/ZoomOutButton\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { XYChartScrollbar } from \"../elements/XYChartScrollbar\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $number from \"../../core/utils/Number\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[XYChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar XYChartDataItem = /** @class */ (function (_super) {\r\n __extends(XYChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"XYChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return XYChartDataItem;\r\n}(SerialChartDataItem));\r\nexport { XYChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates an XY chart, and any derivative chart, like Serial, Date-based, etc.\r\n *\r\n * Basically this is a chart type, that is used to display any chart\r\n * information in a square plot area.\r\n *\r\n * The horizontal and vertical scale is determined by the type of Axis.\r\n *\r\n * The plot types are determined by type of Series.\r\n *\r\n * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * let categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * let series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"XYChart\");\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * var series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Category axis\r\n * \t\"xAxes\": [{\r\n * \t\t\"type\": \"CategoryAxis\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Value axis\r\n * \t\"yAxes\": [{\r\n * \t\t\"type\": \"ValueAxis\"\r\n * \t}],\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"ColumnSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"categoryX\": \"country\",\r\n * \t\t\t\"valueY\": \"visits\"\r\n * \t\t},\r\n * \t\t\"name\": \"Web Traffic\"\r\n * \t}],\r\n *\r\n * \t// Cursor\r\n * \t\"cursor\": {},\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"USA\",\r\n * \t\t\"visits\": 3025\r\n * \t}, {\r\n * \t\t\"country\": \"China\",\r\n * \t\t\"visits\": 1882\r\n * \t}, {\r\n * \t\t\"country\": \"Japan\",\r\n * \t\t\"visits\": 1809\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"XYChart\");\r\n * ```\r\n *\r\n *\r\n * @see {@link IXYChartEvents} for a list of available Events\r\n * @see {@link IXYChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/} for documentation\r\n * @important\r\n */\r\nvar XYChart = /** @class */ (function (_super) {\r\n __extends(XYChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Defines the type of horizontal axis rederer.\r\n */\r\n _this._axisRendererX = AxisRendererX;\r\n /**\r\n * Defines the type of vertical axis rederer.\r\n */\r\n _this._axisRendererY = AxisRendererY;\r\n /**\r\n * @ignore\r\n */\r\n _this._seriesPoints = [];\r\n _this.className = \"XYChart\";\r\n // Set defaults\r\n //this.margin(10, 10, 10, 10);\r\n _this.maskBullets = true;\r\n _this.arrangeTooltips = true;\r\n // Create main chart container\r\n var chartContainer = _this.chartContainer;\r\n chartContainer.layout = \"vertical\";\r\n _this.padding(15, 15, 15, 15);\r\n // Create top axes container\r\n var topAxesCont = chartContainer.createChild(Container);\r\n topAxesCont.shouldClone = false;\r\n topAxesCont.layout = \"vertical\";\r\n topAxesCont.width = percent(100);\r\n topAxesCont.zIndex = 1;\r\n _this.topAxesContainer = topAxesCont;\r\n // Create vertical axes and plot area container\r\n // Plot area and vertical axes share the whole width of the chart,\r\n // so we need to put then into a separate container so that layouting\r\n // engine takes care of the positioning\r\n var yAxesAndPlotCont = chartContainer.createChild(Container);\r\n yAxesAndPlotCont.shouldClone = false;\r\n yAxesAndPlotCont.layout = \"horizontal\";\r\n yAxesAndPlotCont.width = percent(100);\r\n yAxesAndPlotCont.height = percent(100);\r\n yAxesAndPlotCont.zIndex = 0;\r\n _this.yAxesAndPlotContainer = yAxesAndPlotCont;\r\n // Create a container for bottom axes\r\n var bottomAxesCont = chartContainer.createChild(Container);\r\n bottomAxesCont.shouldClone = false;\r\n bottomAxesCont.width = percent(100);\r\n bottomAxesCont.layout = \"vertical\";\r\n bottomAxesCont.zIndex = 1;\r\n _this.bottomAxesContainer = bottomAxesCont;\r\n // Create a container for left-side axes\r\n var leftAxesCont = yAxesAndPlotCont.createChild(Container);\r\n leftAxesCont.shouldClone = false;\r\n leftAxesCont.layout = \"horizontal\";\r\n leftAxesCont.height = percent(100);\r\n leftAxesCont.contentAlign = \"right\";\r\n leftAxesCont.events.on(\"transformed\", _this.updateXAxesMargins, _this, false);\r\n leftAxesCont.zIndex = 1;\r\n _this.leftAxesContainer = leftAxesCont;\r\n // Create a container for plot area\r\n var plotCont = yAxesAndPlotCont.createChild(Container);\r\n plotCont.shouldClone = false;\r\n plotCont.height = percent(100);\r\n plotCont.width = percent(100);\r\n // Create transparend background for plot container so that hover works\r\n // on all of it\r\n plotCont.background.fillOpacity = 0;\r\n _this.plotContainer = plotCont;\r\n // must go below plot container\r\n _this.mouseWheelBehavior = \"none\";\r\n _this._cursorContainer = plotCont;\r\n // Create a container for right-side axes\r\n var rightAxesCont = yAxesAndPlotCont.createChild(Container);\r\n rightAxesCont.shouldClone = false;\r\n rightAxesCont.layout = \"horizontal\";\r\n rightAxesCont.height = percent(100);\r\n rightAxesCont.zIndex = 1;\r\n rightAxesCont.events.on(\"transformed\", _this.updateXAxesMargins, _this, false);\r\n _this.rightAxesContainer = rightAxesCont;\r\n _this.seriesContainer.parent = plotCont;\r\n _this.bulletsContainer.parent = plotCont;\r\n var zoomOutButton = plotCont.createChild(ZoomOutButton);\r\n zoomOutButton.shouldClone = false;\r\n zoomOutButton.align = \"right\";\r\n zoomOutButton.valign = \"top\";\r\n zoomOutButton.zIndex = Number.MAX_SAFE_INTEGER;\r\n zoomOutButton.marginTop = 5;\r\n zoomOutButton.marginRight = 5;\r\n zoomOutButton.hide(0);\r\n _this.zoomOutButton = zoomOutButton;\r\n // Create a container for bullets\r\n var axisBulletsContainer = _this.plotContainer.createChild(Container);\r\n axisBulletsContainer.shouldClone = false;\r\n axisBulletsContainer.width = percent(100);\r\n axisBulletsContainer.height = percent(100);\r\n axisBulletsContainer.isMeasured = false;\r\n axisBulletsContainer.zIndex = 4;\r\n axisBulletsContainer.layout = \"none\";\r\n _this.axisBulletsContainer = axisBulletsContainer;\r\n _this._bulletMask = _this.plotContainer;\r\n _this.events.on(\"beforedatavalidated\", function () {\r\n _this.series.each(function (series) {\r\n series.dataGrouped = false;\r\n series._baseInterval = {};\r\n });\r\n }, _this, false);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n XYChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n this.zoomOutButton.exportable = false;\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"X/Y chart\");\r\n }\r\n };\r\n /**\r\n * Draws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n this.seriesContainer.toFront();\r\n this.bulletsContainer.toFront();\r\n if (this.maskBullets) {\r\n this.bulletsContainer.mask = this._bulletMask;\r\n }\r\n this.updateSeriesLegend();\r\n };\r\n /**\r\n * Triggers a redrawing of all chart's series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.updatePlotElements = function () {\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.invalidate();\r\n });\r\n };\r\n /**\r\n * Triggers data (re)validation which in turn can cause a redraw of the\r\n * whole chart or just aprticular series / elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.validateData = function () {\r\n // tell axes that data changed\r\n if (this._parseDataFrom == 0) {\r\n $iter.each(this.xAxes.iterator(), function (axis) {\r\n axis.dataChangeUpdate();\r\n });\r\n $iter.each(this.yAxes.iterator(), function (axis) {\r\n axis.dataChangeUpdate();\r\n });\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.dataChangeUpdate();\r\n });\r\n }\r\n _super.prototype.validateData.call(this);\r\n };\r\n /**\r\n * Updates margins for horizontal axes based on settings and available space.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.updateXAxesMargins = function () {\r\n var leftAxesWidth = this.leftAxesContainer.measuredWidth;\r\n var rightAxesWidth = this.rightAxesContainer.measuredWidth;\r\n var bottomAxesCont = this.bottomAxesContainer;\r\n if (bottomAxesCont.paddingLeft != leftAxesWidth || bottomAxesCont.paddingRight != rightAxesWidth) {\r\n bottomAxesCont.paddingLeft = leftAxesWidth;\r\n bottomAxesCont.paddingRight = rightAxesWidth;\r\n }\r\n var topAxesCont = this.topAxesContainer;\r\n if (topAxesCont.paddingLeft != leftAxesWidth || topAxesCont.paddingRight != rightAxesWidth) {\r\n topAxesCont.paddingLeft = leftAxesWidth;\r\n topAxesCont.paddingRight = rightAxesWidth;\r\n }\r\n };\r\n /**\r\n * Triggers a re-initialization of this element.\r\n *\r\n * Will result in complete redrawing of the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.reinit = function () {\r\n _super.prototype.reinit.call(this);\r\n this.series.each(function (series) {\r\n series.appeared = false;\r\n });\r\n };\r\n /**\r\n * Triggers an update on the horizontal axis when one of its properties\r\n * change.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event An event object\r\n */\r\n XYChart.prototype.handleXAxisChange = function (event) {\r\n this.updateXAxis(event.target);\r\n };\r\n /**\r\n * Triggers an update on the vertical axis when one of its properties\r\n * change.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event An event object\r\n */\r\n XYChart.prototype.handleYAxisChange = function (event) {\r\n this.updateYAxis(event.target);\r\n };\r\n /**\r\n * Sets up a new horizontal (X) axis when it is added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Axis insert event\r\n */\r\n XYChart.prototype.processXAxis = function (event) {\r\n var axis = event.newValue;\r\n axis.chart = this;\r\n if (!axis.renderer) {\r\n axis.renderer = new this._axisRendererX();\r\n axis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleXAxisChange, this, false);\r\n }\r\n axis.axisLetter = \"X\";\r\n axis.events.on(\"startendchanged\", this.handleXAxisRangeChange, this, false);\r\n //axis.events.on(\"endchanged\", this.handleXAxisRangeChange, this, false);\r\n // Although axis does not use data directly, we set dataProvider here\r\n // (but not add to chart data users) to hold up rendering before data\r\n // is parsed (system handles this)\r\n axis.dataProvider = this;\r\n this.updateXAxis(axis.renderer);\r\n this.processAxis(axis);\r\n };\r\n /**\r\n * Sets up a new vertical (Y) axis when it is added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Axis insert event\r\n */\r\n XYChart.prototype.processYAxis = function (event) {\r\n var axis = event.newValue;\r\n axis.chart = this;\r\n if (!axis.renderer) {\r\n axis.renderer = new this._axisRendererY();\r\n axis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleYAxisChange, this, false);\r\n }\r\n axis.axisLetter = \"Y\";\r\n axis.events.on(\"startendchanged\", this.handleYAxisRangeChange, this, false);\r\n //axis.events.on(\"endchanged\", this.handleYAxisRangeChange, this, false);\r\n // Although axis does not use data directly, we set dataProvider here\r\n // (but not add to chart data users) to hold up rendering before data\r\n // is parsed (system handles this)\r\n axis.dataProvider = this;\r\n this.updateYAxis(axis.renderer);\r\n this.processAxis(axis);\r\n };\r\n /**\r\n * Updates horizontal (X) scrollbar and other horizontal axis whenever axis'\r\n * value range changes.\r\n */\r\n XYChart.prototype.handleXAxisRangeChange = function () {\r\n var range = this.getCommonAxisRange(this.xAxes);\r\n if (this.scrollbarX) {\r\n this.zoomAxes(this.xAxes, range, true);\r\n }\r\n this.toggleZoomOutButton();\r\n this.updateScrollbar(this.scrollbarX, range);\r\n };\r\n /**\r\n * Shows or hides the Zoom Out button depending on whether the chart is fully\r\n * zoomed out or not.\r\n */\r\n XYChart.prototype.toggleZoomOutButton = function () {\r\n if (this.zoomOutButton) {\r\n var show_1 = false;\r\n $iter.eachContinue(this.xAxes.iterator(), function (axis) {\r\n if (axis.toggleZoomOutButton) {\r\n if (axis.maxZoomCount > 0) {\r\n var minZoomFactor = axis.maxZoomFactor / axis.maxZoomCount;\r\n if ($math.round(axis.end - axis.start, 3) < 1 / minZoomFactor) {\r\n show_1 = true;\r\n return false;\r\n }\r\n }\r\n else {\r\n if ($math.round(axis.start, 3) > 0 || $math.round(axis.end, 3) < 1) {\r\n show_1 = true;\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n $iter.eachContinue(this.yAxes.iterator(), function (axis) {\r\n if (axis.toggleZoomOutButton) {\r\n if (axis.maxZoomCount > 0) {\r\n var minZoomFactor = axis.maxZoomFactor / axis.maxZoomCount;\r\n if ($math.round(axis.end - axis.start, 3) < 1 / minZoomFactor) {\r\n show_1 = true;\r\n return false;\r\n }\r\n }\r\n else {\r\n if ($math.round(axis.start, 3) > 0 || $math.round(axis.end, 3) < 1) {\r\n show_1 = true;\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n });\r\n if (!this.seriesAppeared) {\r\n show_1 = false;\r\n }\r\n if (show_1) {\r\n this.zoomOutButton.show();\r\n }\r\n else {\r\n this.zoomOutButton.hide();\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n * moved this check to a separate method so that we could override it in TreeMapSeries\r\n */\r\n XYChart.prototype.seriesAppeared = function () {\r\n var appeared = false;\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (!series.appeared) {\r\n appeared = false;\r\n return false;\r\n }\r\n });\r\n return appeared;\r\n };\r\n /**\r\n * Updates vertical (Y) scrollbar and other horizontal axis whenever axis'\r\n * value range changes.\r\n */\r\n XYChart.prototype.handleYAxisRangeChange = function () {\r\n var range = this.getCommonAxisRange(this.yAxes);\r\n if (this.scrollbarY) {\r\n this.zoomAxes(this.yAxes, range, true);\r\n }\r\n this.toggleZoomOutButton();\r\n this.updateScrollbar(this.scrollbarY, range);\r\n };\r\n /**\r\n * Updates a relative scrollbar whenever data range of the axis changes.\r\n *\r\n * @param scrollbar Scrollbar instance\r\n * @param range New data (values) range of the axis\r\n */\r\n XYChart.prototype.updateScrollbar = function (scrollbar, range) {\r\n if (scrollbar) {\r\n scrollbar.skipRangeEvents();\r\n scrollbar.start = range.start;\r\n scrollbar.end = range.end;\r\n }\r\n };\r\n /**\r\n * Returns a common range of values between a list of axes.\r\n *\r\n * This is used to synchronize the zoom between multiple axes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axes A list of axes\r\n * @return Common value range\r\n */\r\n XYChart.prototype.getCommonAxisRange = function (axes) {\r\n var start;\r\n var end;\r\n axes.each(function (axis) {\r\n if (!axis.zoomable || (axis instanceof ValueAxis && axis.syncWithAxis)) {\r\n }\r\n else {\r\n var axisStart = axis.start;\r\n var axisEnd = axis.end;\r\n if (axis.renderer.inversed) {\r\n axisStart = 1 - axis.end;\r\n axisEnd = 1 - axis.start;\r\n }\r\n if (!$type.isNumber(start) || (axisStart < start)) {\r\n start = axisStart;\r\n }\r\n if (!$type.isNumber(end) || (axisEnd > end)) {\r\n end = axisEnd;\r\n }\r\n }\r\n });\r\n return { start: start, end: end };\r\n };\r\n /**\r\n * Triggers (re)rendering of the horizontal (X) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n XYChart.prototype.updateXAxis = function (renderer) {\r\n var axis = renderer.axis;\r\n if (renderer.opposite) {\r\n axis.parent = this.topAxesContainer;\r\n axis.toFront();\r\n }\r\n else {\r\n axis.parent = this.bottomAxesContainer;\r\n axis.toBack();\r\n }\r\n if (axis.renderer) {\r\n axis.renderer.processRenderer();\r\n }\r\n };\r\n /**\r\n * Triggers (re)rendering of the vertical (Y) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n XYChart.prototype.updateYAxis = function (renderer) {\r\n var axis = renderer.axis;\r\n if (renderer.opposite) {\r\n axis.parent = this.rightAxesContainer;\r\n axis.toBack();\r\n }\r\n else {\r\n axis.parent = this.leftAxesContainer;\r\n axis.toFront();\r\n }\r\n if (axis.renderer) {\r\n axis.renderer.processRenderer();\r\n }\r\n };\r\n /**\r\n * Decorates an Axis for use with this chart, e.g. sets proper renderer\r\n * and containers for placement.\r\n *\r\n * @param axis Axis\r\n */\r\n XYChart.prototype.processAxis = function (axis) {\r\n var _this = this;\r\n // Value axis does not use data directly, only category axis does\r\n if (axis instanceof CategoryAxis) {\r\n this._dataUsers.moveValue(axis);\r\n }\r\n var renderer = axis.renderer;\r\n renderer.gridContainer.parent = this.plotContainer;\r\n renderer.gridContainer.toBack();\r\n renderer.breakContainer.parent = this.plotContainer;\r\n renderer.breakContainer.toFront();\r\n renderer.breakContainer.zIndex = 10;\r\n axis.addDisposer(new Disposer(function () {\r\n _this.dataUsers.removeValue(axis);\r\n }));\r\n renderer.bulletsContainer.parent = this.axisBulletsContainer;\r\n this._disposers.push(axis.events.on(\"positionchanged\", function () {\r\n var point = $utils.spritePointToSprite({ x: 0, y: 0 }, axis, _this.axisBulletsContainer);\r\n if (axis.renderer instanceof AxisRendererY) {\r\n renderer.bulletsContainer.y = point.y;\r\n }\r\n if (axis.renderer instanceof AxisRendererX) {\r\n renderer.bulletsContainer.x = point.x;\r\n }\r\n }, undefined, false));\r\n this.plotContainer.events.on(\"maxsizechanged\", function () {\r\n if (_this.inited) {\r\n axis.invalidateDataItems();\r\n _this.updateSeriesMasks();\r\n }\r\n }, axis, false);\r\n };\r\n /**\r\n * This is done because for some reason IE doesn't change mask if path of a\r\n * mask changes.\r\n */\r\n XYChart.prototype.updateSeriesMasks = function () {\r\n if ($utils.isIE()) {\r\n this.series.each(function (series) {\r\n var mask = series.mainContainer.mask;\r\n series.mainContainer.mask = undefined;\r\n series.mainContainer.mask = mask;\r\n });\r\n }\r\n };\r\n XYChart.prototype.handleSeriesRemoved = function (event) {\r\n var series = event.oldValue;\r\n if (series) {\r\n if (series.xAxis) {\r\n series.xAxis.series.removeValue(series);\r\n series.xAxis.invalidateProcessedData();\r\n }\r\n if (series.yAxis) {\r\n series.yAxis.series.removeValue(series);\r\n series.yAxis.invalidateProcessedData();\r\n }\r\n // otherwise extremes won't change\r\n this.series.each(function (series) {\r\n series.resetExtremes();\r\n });\r\n }\r\n _super.prototype.handleSeriesRemoved.call(this, event);\r\n };\r\n Object.defineProperty(XYChart.prototype, \"xAxes\", {\r\n /**\r\n * A list of horizontal (X) axes.\r\n *\r\n * @return List of axes\r\n */\r\n get: function () {\r\n if (!this._xAxes) {\r\n this._xAxes = new List();\r\n this._xAxes.events.on(\"inserted\", this.processXAxis, this, false);\r\n this._xAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\r\n this._disposers.push(new ListDisposer(this._xAxes, false));\r\n }\r\n return this._xAxes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.handleAxisRemoval = function (event) {\r\n var axis = event.oldValue;\r\n this.dataUsers.removeValue(axis); // need to remove, as it might not be disposed\r\n if (axis.autoDispose) {\r\n axis.dispose();\r\n }\r\n };\r\n Object.defineProperty(XYChart.prototype, \"yAxes\", {\r\n /**\r\n * A list of vertical (Y) axes.\r\n *\r\n * @return List of axes\r\n */\r\n get: function () {\r\n if (!this._yAxes) {\r\n this._yAxes = new List();\r\n this._yAxes.events.on(\"inserted\", this.processYAxis, this, false);\r\n this._yAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\r\n this._disposers.push(new ListDisposer(this._yAxes, false));\r\n }\r\n return this._yAxes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Decorates a new [[XYSeries]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n XYChart.prototype.handleSeriesAdded = function (event) {\r\n try {\r\n _super.prototype.handleSeriesAdded.call(this, event);\r\n var series = event.newValue;\r\n if (this.xAxes.length == 0 || this.yAxes.length == 0) {\r\n registry.removeFromInvalidComponents(series);\r\n series.dataInvalid = false;\r\n }\r\n $utils.used(series.xAxis); // this is enough to get axis, handled in getter\r\n $utils.used(series.yAxis); // this is enough to get axis, handled in getter\r\n series.maskBullets = series.maskBullets;\r\n if (series.fill == undefined) {\r\n if (this.patterns) {\r\n if (!$type.hasValue(series.stroke)) {\r\n series.stroke = this.colors.next();\r\n }\r\n series.fill = this.patterns.next();\r\n if ($type.hasValue(series.fillOpacity)) {\r\n series.fill.backgroundOpacity = series.fillOpacity;\r\n }\r\n if (series.stroke instanceof Color) {\r\n series.fill.stroke = series.stroke;\r\n series.fill.fill = series.stroke;\r\n }\r\n }\r\n else {\r\n series.fill = this.colors.next();\r\n }\r\n }\r\n if (!$type.hasValue(series.stroke)) {\r\n series.stroke = series.fill;\r\n }\r\n }\r\n catch (e) {\r\n this.raiseCriticalError(e);\r\n }\r\n };\r\n Object.defineProperty(XYChart.prototype, \"cursor\", {\r\n /**\r\n * @return Cursor\r\n */\r\n get: function () {\r\n return this._cursor;\r\n },\r\n /**\r\n * Chart's [[Cursor]].\r\n *\r\n * @param cursor Cursor\r\n */\r\n set: function (cursor) {\r\n if (this._cursor != cursor) {\r\n if (this._cursor) {\r\n this.removeDispose(this._cursor);\r\n }\r\n this._cursor = cursor;\r\n if (cursor) {\r\n // TODO this is wrong, fix it\r\n this._disposers.push(cursor);\r\n cursor.chart = this;\r\n cursor.shouldClone = false;\r\n cursor.parent = this._cursorContainer;\r\n cursor.events.on(\"cursorpositionchanged\", this.handleCursorPositionChange, this, false);\r\n cursor.events.on(\"zoomstarted\", this.handleCursorZoomStart, this, false);\r\n cursor.events.on(\"zoomended\", this.handleCursorZoomEnd, this, false);\r\n cursor.events.on(\"panstarted\", this.handleCursorPanStart, this, false);\r\n cursor.events.on(\"panning\", this.handleCursorPanning, this, false);\r\n cursor.events.on(\"panended\", this.handleCursorPanEnd, this, false);\r\n cursor.events.on(\"behaviorcanceled\", this.handleCursorCanceled, this, false);\r\n cursor.events.on(\"hidden\", this.handleHideCursor, this, false);\r\n cursor.zIndex = Number.MAX_SAFE_INTEGER - 1;\r\n if (this.tapToActivate) {\r\n // We need this in order to setup cursor properly\r\n this.setTapToActivate(this.tapToActivate);\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Performs tasks when the cursor's position changes, e.g. shows proper\r\n * tooltips on axes and series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.handleCursorPositionChange = function () {\r\n var cursor = this.cursor;\r\n if (cursor.visible && !cursor.isHiding) {\r\n var xPosition_1 = this.cursor.xPosition;\r\n var yPosition_1 = this.cursor.yPosition;\r\n this.showSeriesTooltip({\r\n x: xPosition_1,\r\n y: yPosition_1\r\n });\r\n var exceptAxes_1 = [];\r\n var snapToSeries = cursor.snapToSeries;\r\n if (snapToSeries && !cursor.downPoint) {\r\n if (snapToSeries instanceof XYSeries) {\r\n snapToSeries = [snapToSeries];\r\n }\r\n var dataItems_1 = [];\r\n $array.each(snapToSeries, function (snpSeries) {\r\n if (!snpSeries.isHidden && !snpSeries.isHiding) {\r\n var xAxis = snpSeries.xAxis;\r\n var yAxis = snpSeries.yAxis;\r\n if (xAxis instanceof ValueAxis && !(xAxis instanceof DateAxis) && yAxis instanceof ValueAxis && !(yAxis instanceof DateAxis)) {\r\n snpSeries.dataItems.each(function (dataItem) {\r\n dataItems_1.push(dataItem);\r\n });\r\n $array.move(exceptAxes_1, snpSeries.yAxis);\r\n $array.move(exceptAxes_1, snpSeries.xAxis);\r\n }\r\n else {\r\n if (snpSeries.baseAxis == snpSeries.xAxis) {\r\n $array.move(exceptAxes_1, snpSeries.yAxis);\r\n dataItems_1.push(xAxis.getSeriesDataItem(snpSeries, xAxis.toAxisPosition(xPosition_1), true));\r\n }\r\n if (snpSeries.baseAxis == snpSeries.yAxis) {\r\n $array.move(exceptAxes_1, snpSeries.xAxis);\r\n dataItems_1.push(yAxis.getSeriesDataItem(snpSeries, yAxis.toAxisPosition(yPosition_1), true));\r\n }\r\n }\r\n }\r\n });\r\n var closestDataItem_1 = this.getClosest(dataItems_1, xPosition_1, yPosition_1);\r\n if (closestDataItem_1) {\r\n this.series.each(function (series) {\r\n var closestSeries = closestDataItem_1.component;\r\n if (series != closestSeries) {\r\n series.hideTooltip();\r\n if (series.xAxis != closestSeries.xAxis) {\r\n series.xAxis.hideTooltip();\r\n exceptAxes_1.push(series.xAxis);\r\n }\r\n if (series.yAxis != closestSeries.yAxis) {\r\n series.yAxis.hideTooltip();\r\n exceptAxes_1.push(series.yAxis);\r\n }\r\n }\r\n });\r\n closestDataItem_1.component.showTooltipAtDataItem(closestDataItem_1);\r\n cursor.handleSnap(closestDataItem_1.component);\r\n }\r\n }\r\n //}\r\n this._seriesPoints = [];\r\n if (this._cursorXPosition != xPosition_1) {\r\n this.showAxisTooltip(this.xAxes, xPosition_1, exceptAxes_1);\r\n }\r\n if (this._cursorYPosition != yPosition_1) {\r\n this.showAxisTooltip(this.yAxes, yPosition_1, exceptAxes_1);\r\n }\r\n if (this.arrangeTooltips) {\r\n this.sortSeriesTooltips(this._seriesPoints);\r\n }\r\n if (this.legend) {\r\n this.legend.afterDraw();\r\n }\r\n }\r\n };\r\n /**\r\n * Finds closest data item to position out of the array of items.\r\n *\r\n * @since 4.9.29\r\n * @param dataItems Array of items\r\n * @param xPosition X position\r\n * @param yPosition Y position\r\n * @return Data item\r\n */\r\n XYChart.prototype.getClosest = function (dataItems, xPosition, yPosition) {\r\n var minDistance = Infinity;\r\n var closestDataItem;\r\n $array.eachContinue(dataItems, function (dataItem) {\r\n if (dataItem) {\r\n var xAxis = dataItem.component.xAxis;\r\n var yAxis = dataItem.component.yAxis;\r\n var xPos = xAxis.positionToCoordinate(xAxis.toGlobalPosition(xAxis.toAxisPosition(xPosition)));\r\n var yPos = yAxis.positionToCoordinate(yAxis.toGlobalPosition(yAxis.toAxisPosition(yPosition)));\r\n var xField = dataItem.component.xField;\r\n var yField = dataItem.component.yField;\r\n if (xAxis instanceof ValueAxis && !$type.isNumber(dataItem.getValue(xField))) {\r\n return true;\r\n }\r\n if (yAxis instanceof ValueAxis && !$type.isNumber(dataItem.getValue(yField))) {\r\n return true;\r\n }\r\n var dxPosition = xAxis.positionToCoordinate(xAxis.toGlobalPosition(xAxis.getPositionX(dataItem, xField, dataItem.locations[xField], \"valueX\")));\r\n var dyPosition = yAxis.positionToCoordinate(yAxis.toGlobalPosition(yAxis.getPositionY(dataItem, yField, dataItem.locations[yField], \"valueY\")));\r\n var distance = Math.sqrt(Math.pow(xPos - dxPosition, 2) + Math.pow(yPos - dyPosition, 2));\r\n if (distance < minDistance) {\r\n minDistance = distance;\r\n closestDataItem = dataItem;\r\n }\r\n return true;\r\n }\r\n });\r\n return closestDataItem;\r\n };\r\n /**\r\n * Hides all cursor-related tooltips when the cursor itself is hidden.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.handleHideCursor = function () {\r\n this.hideObjectTooltip(this.xAxes);\r\n this.hideObjectTooltip(this.yAxes);\r\n this.hideObjectTooltip(this.series);\r\n this._cursorXPosition = undefined;\r\n this._cursorYPosition = undefined;\r\n this.updateSeriesLegend();\r\n };\r\n /**\r\n * Updates values for each series' legend item.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.updateSeriesLegend = function () {\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.updateLegendValue();\r\n });\r\n };\r\n /**\r\n * Hides a tooltip for a list of objects.\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprites A list of sprites to hide tooltip for\r\n */\r\n XYChart.prototype.hideObjectTooltip = function (sprites) {\r\n $iter.each(sprites.iterator(), function (sprite) {\r\n if (sprite.cursorTooltipEnabled) {\r\n sprite.hideTooltip(0);\r\n }\r\n });\r\n };\r\n /**\r\n * Shows a tooltip for all chart's series, using specific coordinates as a\r\n * reference point.\r\n *\r\n * The tooltip might be shown at different coordinates depending on the\r\n * actual data point's position, overlapping with other tooltips, etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Reference point\r\n */\r\n XYChart.prototype.showSeriesTooltip = function (position) {\r\n var _this = this;\r\n if (!position) {\r\n this.series.each(function (series) {\r\n series.hideTooltip();\r\n });\r\n return;\r\n }\r\n var seriesPoints = [];\r\n this.series.each(function (series) {\r\n //if (series.tooltipText || series.tooltipHTML) { // not good, bullets are not hovered then\r\n if ((series.xAxis instanceof DateAxis && series.xAxis.snapTooltip) || (series.yAxis instanceof DateAxis && series.yAxis.snapTooltip)) {\r\n // void\r\n }\r\n else {\r\n var point = series.showTooltipAtPosition(position.x, position.y);\r\n if (point) {\r\n series.tooltip.setBounds($utils.spriteRectToSvg({ x: 0, y: 0, width: _this.pixelWidth, height: _this.pixelHeight }, _this));\r\n seriesPoints.push({ series: series, point: point });\r\n }\r\n }\r\n //}\r\n });\r\n if (this.arrangeTooltips) {\r\n this.sortSeriesTooltips(seriesPoints);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.sortSeriesTooltips = function (seriesPoints) {\r\n if (seriesPoints.length > 0) {\r\n var cursor_1 = this.cursor;\r\n if (cursor_1 && $type.isNumber(cursor_1.maxTooltipDistance)) {\r\n var cursorPoint_1 = $utils.spritePointToSvg({ x: cursor_1.point.x, y: cursor_1.point.y }, cursor_1);\r\n var nearestSeries_1;\r\n var nearestPoint_1;\r\n var smallestDistance_1 = Infinity;\r\n $array.each(seriesPoints, function (seriesPoint) {\r\n var series = seriesPoint.series;\r\n var fixedPoint = seriesPoint.point;\r\n if (fixedPoint) {\r\n var point = { x: fixedPoint.x, y: fixedPoint.y };\r\n var distance = Math.abs($math.getDistance(point, cursorPoint_1));\r\n if (distance < smallestDistance_1) {\r\n nearestPoint_1 = point;\r\n smallestDistance_1 = distance;\r\n nearestSeries_1 = series;\r\n }\r\n }\r\n });\r\n var newSeriesPoints_1 = [];\r\n if (nearestSeries_1) {\r\n $array.each(seriesPoints, function (seriesPoint) {\r\n if (Math.abs($math.getDistance(seriesPoint.point, nearestPoint_1)) <= Math.abs(cursor_1.maxTooltipDistance)) {\r\n newSeriesPoints_1.push({ series: seriesPoint.series, point: seriesPoint.point });\r\n }\r\n else {\r\n var tooltipDataItem = seriesPoint.series.tooltipDataItem;\r\n if (tooltipDataItem) {\r\n $array.each(tooltipDataItem.sprites, function (sprite) {\r\n sprite.isHover = false;\r\n sprite.handleOutReal(); // to avoid flicker\r\n });\r\n }\r\n seriesPoint.series.hideTooltip(0);\r\n }\r\n });\r\n if (cursor_1.maxTooltipDistance < 0) {\r\n if (newSeriesPoints_1.length > 0) {\r\n $array.each(newSeriesPoints_1, function (np) {\r\n if (nearestSeries_1 != np.series) {\r\n np.series.hideTooltip(0);\r\n }\r\n });\r\n }\r\n newSeriesPoints_1 = [{ series: nearestSeries_1, point: nearestPoint_1 }];\r\n }\r\n }\r\n seriesPoints = newSeriesPoints_1;\r\n }\r\n var topLeft_1 = $utils.spritePointToSvg({ x: -0.5, y: -0.5 }, this.plotContainer);\r\n var bottomRight_1 = $utils.spritePointToSvg({ x: this.plotContainer.pixelWidth + 0.5, y: this.plotContainer.pixelHeight + 0.5 }, this.plotContainer);\r\n var sum_1 = 0;\r\n var filteredSeriesPoints_1 = [];\r\n $array.each(seriesPoints, function (seriesPoint) {\r\n var point = seriesPoint.point;\r\n if (point && $math.isInRectangle(point, { x: topLeft_1.x, y: topLeft_1.y, width: bottomRight_1.x - topLeft_1.x, height: bottomRight_1.y - topLeft_1.y })) {\r\n filteredSeriesPoints_1.push({ point: point, series: seriesPoint.series });\r\n sum_1 += point.y;\r\n }\r\n });\r\n seriesPoints = filteredSeriesPoints_1;\r\n var firstSeries = this.series.getIndex(0);\r\n var inversed = false;\r\n if (firstSeries && firstSeries.yAxis && firstSeries.yAxis.renderer.inversed) {\r\n inversed = true;\r\n }\r\n if (inversed) {\r\n seriesPoints.sort(function (a, b) { return $number.order(a.point.y, b.point.y); });\r\n }\r\n else {\r\n seriesPoints.sort(function (a, b) { return $number.order(b.point.y, a.point.y); });\r\n seriesPoints.reverse();\r\n }\r\n var averageY = sum_1 / seriesPoints.length;\r\n var maxY = $utils.svgPointToDocument({ x: 0, y: 0 }, this.svgContainer.SVGContainer).y;\r\n if (seriesPoints.length > 0) {\r\n var top_1 = topLeft_1.y;\r\n var bottom = bottomRight_1.y;\r\n // TODO is this needed ?\r\n $utils.spritePointToDocument({ x: 0, y: top_1 }, this);\r\n var dropped = false;\r\n if (averageY > top_1 + (bottom - top_1) / 2) {\r\n var nextHeight = bottom;\r\n for (var i = seriesPoints.length - 1; i >= 0; i--) {\r\n var series = seriesPoints[i].series;\r\n var tooltip = series.tooltip;\r\n var pointY = seriesPoints[i].point.y;\r\n tooltip.setBounds({ x: 0, y: -maxY, width: this.pixelWidth, height: nextHeight + maxY });\r\n if (tooltip.invalid) {\r\n tooltip.validate();\r\n }\r\n tooltip.toBack();\r\n nextHeight = $utils.spritePointToSvg({ x: 0, y: tooltip.label.pixelY - tooltip.pixelY + pointY - tooltip.pixelMarginTop }, tooltip).y;\r\n if (nextHeight < -maxY) {\r\n dropped = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (averageY <= top_1 + (bottom - top_1) / 2 || dropped) {\r\n var nextY = top_1;\r\n for (var i = 0, len = seriesPoints.length; i < len; i++) {\r\n var series = seriesPoints[i].series;\r\n var pointY = seriesPoints[i].point.y;\r\n var tooltip = series.tooltip;\r\n tooltip.setBounds({ x: 0, y: nextY, width: this.pixelWidth, height: bottom });\r\n if (tooltip.invalid) {\r\n tooltip.validate();\r\n }\r\n tooltip.toBack();\r\n nextY = $utils.spritePointToSvg({ x: 0, y: tooltip.label.pixelY + tooltip.label.measuredHeight - tooltip.pixelY + pointY + tooltip.pixelMarginBottom }, tooltip).y;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Shows tooltips for a list of axes at specific position.\r\n *\r\n * Position might be X coordinate for horizontal axes, and Y coordinate for\r\n * vertical axes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axes List of axes to show tooltip on\r\n * @param position Position (px)\r\n */\r\n XYChart.prototype.showAxisTooltip = function (axes, position, except) {\r\n var _this = this;\r\n $iter.each(axes.iterator(), function (axis) {\r\n if (!except || except.indexOf(axis) == -1) {\r\n if (_this.dataItems.length > 0 || axis.dataItems.length > 0) {\r\n axis.showTooltipAtPosition(position);\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Recalculates the value range for the axis taking into account zoom level & inversed.\r\n *\r\n * @param axis Axis\r\n * @param range Range\r\n * @return Modified range\r\n */\r\n XYChart.prototype.getUpdatedRange = function (axis, range) {\r\n if (!axis) {\r\n return;\r\n }\r\n var start;\r\n var end;\r\n var inversed = axis.renderer.inversed;\r\n if (inversed) {\r\n $math.invertRange(range);\r\n start = 1 - axis.end;\r\n end = 1 - axis.start;\r\n }\r\n else {\r\n start = axis.start;\r\n end = axis.end;\r\n }\r\n var difference = end - start;\r\n return {\r\n start: start + range.start * difference,\r\n end: start + range.end * difference\r\n };\r\n };\r\n /**\r\n * Performs zoom and other operations when user finishes zooming using chart\r\n * cursor, e.g. zooms axes.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorZoomEnd = function (event) {\r\n var cursor = this.cursor;\r\n var behavior = cursor.behavior;\r\n if (behavior == \"zoomX\" || behavior == \"zoomXY\") {\r\n var xRange = cursor.xRange;\r\n if (xRange && this.xAxes.length > 0) {\r\n xRange = this.getUpdatedRange(this.xAxes.getIndex(0), xRange);\r\n xRange.priority = \"start\";\r\n this.zoomAxes(this.xAxes, xRange);\r\n }\r\n }\r\n if (behavior == \"zoomY\" || behavior == \"zoomXY\") {\r\n var yRange = cursor.yRange;\r\n if (yRange && this.yAxes.length > 0) {\r\n yRange = this.getUpdatedRange(this.yAxes.getIndex(0), yRange);\r\n yRange.priority = \"start\";\r\n this.zoomAxes(this.yAxes, yRange);\r\n }\r\n }\r\n this.handleHideCursor();\r\n };\r\n /**\r\n * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorPanStart = function (event) {\r\n var xAxis = this.xAxes.getIndex(0);\r\n if (xAxis) {\r\n this._panStartXRange = { start: xAxis.start, end: xAxis.end };\r\n if (xAxis.renderer.inversed) {\r\n this._panStartXRange = $math.invertRange(this._panStartXRange);\r\n }\r\n }\r\n var yAxis = this.yAxes.getIndex(0);\r\n if (yAxis) {\r\n this._panStartYRange = { start: yAxis.start, end: yAxis.end };\r\n if (yAxis.renderer.inversed) {\r\n this._panStartYRange = $math.invertRange(this._panStartYRange);\r\n }\r\n }\r\n };\r\n /**\r\n * Performs zoom and other operations when user ends panning\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorPanEnd = function (event) {\r\n var cursor = this.cursor;\r\n var behavior = cursor.behavior;\r\n if (this._panEndXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\r\n var panEndRange = this._panEndXRange;\r\n var panStartRange = this._panStartXRange;\r\n var delta = 0;\r\n if (panEndRange.start < 0) {\r\n delta = panEndRange.start;\r\n }\r\n if (panStartRange.end > 1) {\r\n if (panEndRange.end > panStartRange.end) {\r\n delta = panEndRange.end - panStartRange.end;\r\n }\r\n }\r\n else if (panEndRange.end > 1) {\r\n delta = panEndRange.end - 1;\r\n }\r\n this.zoomAxes(this.xAxes, { start: panEndRange.start - delta, end: panEndRange.end - delta }, false, cursor.snapOnPan);\r\n this._panEndXRange = undefined;\r\n this._panStartXRange = undefined;\r\n }\r\n if (this._panEndYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\r\n var panEndRange = this._panEndYRange;\r\n var delta = 0;\r\n if (panEndRange.start < 0) {\r\n delta = panEndRange.start;\r\n }\r\n if (panEndRange.end > 1) {\r\n delta = panEndRange.end - 1;\r\n }\r\n this.zoomAxes(this.yAxes, { start: panEndRange.start - delta, end: panEndRange.end - delta }, false, cursor.snapOnPan);\r\n this._panEndYRange = undefined;\r\n this._panStartYRange = undefined;\r\n }\r\n };\r\n XYChart.prototype.handleCursorCanceled = function () {\r\n this._panEndXRange = undefined;\r\n this._panStartXRange = undefined;\r\n };\r\n /**\r\n * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorPanning = function (event) {\r\n var cursor = this.cursor;\r\n var behavior = cursor.behavior;\r\n var maxPanOut = cursor.maxPanOut;\r\n if (this._panStartXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\r\n var panStartRange = this._panStartXRange;\r\n var range = cursor.xRange;\r\n var axisRange = this.getCommonAxisRange(this.xAxes);\r\n var difference = (panStartRange.end - panStartRange.start);\r\n var delta = range.start * (axisRange.end - axisRange.start);\r\n var newStart = Math.max(-maxPanOut, delta + panStartRange.start);\r\n var newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\r\n if (newStart <= 0) {\r\n newEnd = newStart + difference;\r\n }\r\n if (newEnd >= 1) {\r\n newStart = newEnd - difference;\r\n }\r\n var newRange = {\r\n start: newStart,\r\n end: newEnd\r\n };\r\n this._panEndXRange = newRange;\r\n this.zoomAxes(this.xAxes, newRange, false, false, cursor.maxPanOut);\r\n }\r\n if (this._panStartYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\r\n var panStartRange = this._panStartYRange;\r\n var range = cursor.yRange;\r\n var axisRange = this.getCommonAxisRange(this.yAxes);\r\n var difference = panStartRange.end - panStartRange.start;\r\n var delta = range.start * (axisRange.end - axisRange.start);\r\n var newStart = Math.max(-maxPanOut, delta + panStartRange.start);\r\n var newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\r\n if (newStart <= 0) {\r\n newEnd = newStart + difference;\r\n }\r\n if (newEnd >= 1) {\r\n newStart = newEnd - difference;\r\n }\r\n var newRange = {\r\n start: newStart,\r\n end: newEnd\r\n };\r\n this._panEndYRange = newRange;\r\n this.zoomAxes(this.yAxes, newRange, false, false, cursor.maxPanOut);\r\n }\r\n this.handleHideCursor();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.handleYAxisSet = function (series) {\r\n };\r\n /**\r\n * Performs zoom and other operations when user starts zooming using chart\r\n * cursor, e.g. zooms axes.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorZoomStart = function (event) {\r\n // Nothing here\r\n // This method is here only as a \"placeholder\" for extending classes to\r\n // override if necessary\r\n };\r\n Object.defineProperty(XYChart.prototype, \"scrollbarX\", {\r\n /**\r\n * @return Scrollbar\r\n */\r\n get: function () {\r\n return this._scrollbarX;\r\n },\r\n /**\r\n * Horizontal (X) scrollbar.\r\n *\r\n * @param scrollbar Scrollbar\r\n */\r\n set: function (scrollbar) {\r\n var _this = this;\r\n if (this._scrollbarX) {\r\n this.removeDispose(this._scrollbarX);\r\n }\r\n this._scrollbarX = scrollbar;\r\n if (scrollbar) {\r\n this._disposers.push(scrollbar);\r\n scrollbar.parent = this.topAxesContainer;\r\n scrollbar.shouldClone = false;\r\n scrollbar.startGrip.exportable = false;\r\n scrollbar.endGrip.exportable = false;\r\n scrollbar.toBack();\r\n scrollbar.orientation = \"horizontal\";\r\n scrollbar.events.on(\"rangechanged\", this.handleXScrollbarChange, this, false);\r\n this.events.on(\"datavalidated\", function () { return scrollbar.updateThumb(false); }, this, false);\r\n // accessibility related\r\n scrollbar.adapter.add(\"positionValue\", function (arg) {\r\n var xAxis = _this.xAxes.getIndex(0);\r\n if (xAxis) {\r\n arg.value = xAxis.getPositionLabel(xAxis.renderer.inversed\r\n ? 1 - arg.position\r\n : arg.position);\r\n }\r\n return arg;\r\n });\r\n scrollbar.adapter.add(\"positionValueDirection\", function (arg) {\r\n var xAxis = _this.xAxes.getIndex(0);\r\n if (xAxis) {\r\n arg.flipped = xAxis.renderer.inversed;\r\n }\r\n return arg;\r\n });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart.prototype, \"scrollbarY\", {\r\n /**\r\n * @return Scrollbar\r\n */\r\n get: function () {\r\n return this._scrollbarY;\r\n },\r\n /**\r\n * Vertical (Y) scrollbar.\r\n *\r\n * @param scrollbar Scrollbar\r\n */\r\n set: function (scrollbar) {\r\n var _this = this;\r\n if (this._scrollbarY) {\r\n this.removeDispose(this._scrollbarY);\r\n }\r\n this._scrollbarY = scrollbar;\r\n if (scrollbar) {\r\n this._disposers.push(scrollbar);\r\n scrollbar.parent = this.rightAxesContainer;\r\n scrollbar.startGrip.exportable = false;\r\n scrollbar.shouldClone = false;\r\n scrollbar.endGrip.exportable = false;\r\n scrollbar.toFront();\r\n scrollbar.orientation = \"vertical\";\r\n scrollbar.events.on(\"rangechanged\", this.handleYScrollbarChange, this, false);\r\n this.events.on(\"datavalidated\", function () { return scrollbar.updateThumb(false); }, this, false);\r\n // accessibility related\r\n scrollbar.adapter.add(\"positionValue\", function (arg) {\r\n var yAxis = _this.yAxes.getIndex(0);\r\n if (yAxis) {\r\n arg.value = yAxis.getPositionLabel(yAxis.renderer.inversed ? arg.position : 1 - arg.position);\r\n }\r\n return arg;\r\n });\r\n scrollbar.adapter.add(\"positionValueDirection\", function (arg) {\r\n var yAxis = _this.yAxes.getIndex(0);\r\n if (yAxis) {\r\n arg.flipped = !yAxis.renderer.inversed;\r\n }\r\n return arg;\r\n });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Zooms axes affected by the horizontal (X) scrollbar when the selection\r\n * on it changes.\r\n *\r\n * @param event Scrollbar range change event\r\n */\r\n XYChart.prototype.handleXScrollbarChange = function (event) {\r\n if (this.inited) {\r\n var scrollbar = event.target;\r\n var range = scrollbar.range;\r\n if (range.start == 0) {\r\n range.priority = \"start\";\r\n }\r\n if (range.end == 1) {\r\n range.priority = \"end\";\r\n }\r\n range = this.zoomAxes(this.xAxes, range);\r\n scrollbar.fixRange(range);\r\n }\r\n };\r\n /**\r\n * Zooms axes affected by the vertical (Y) scrollbar when the selection\r\n * on it changes.\r\n *\r\n * @param event Scrollbar range change event\r\n */\r\n XYChart.prototype.handleYScrollbarChange = function (event) {\r\n if (this.inited) {\r\n var scrollbar = event.target;\r\n var range = scrollbar.range;\r\n if (range.end == 1) {\r\n range.priority = \"end\";\r\n }\r\n if (range.start == 0) {\r\n range.priority = \"start\";\r\n }\r\n range = this.zoomAxes(this.yAxes, range);\r\n scrollbar.fixRange(range);\r\n }\r\n };\r\n /**\r\n * Zooms axes that are affected by to specific relative range.\r\n *\r\n * @param axes List of axes to zoom\r\n * @param range Range of values to zoom to (0-1)\r\n * @param instantly If set to `true` will skip zooming animation\r\n * @return Recalculated range that is common to all involved axes\r\n */\r\n XYChart.prototype.zoomAxes = function (axes, range, instantly, round, declination, stop) {\r\n var realRange = { start: 0, end: 1 };\r\n this.showSeriesTooltip(); // hides\r\n var originalRange = range;\r\n if (!this.dataInvalid) {\r\n $iter.each(axes.iterator(), function (axis) {\r\n var maxZoomFactor = axis.maxZoomFactor;\r\n if ($type.isNumber(axis.minZoomCount)) {\r\n maxZoomFactor = maxZoomFactor / axis.minZoomCount;\r\n }\r\n if (stop && 1 / (range.end - range.start) >= maxZoomFactor) {\r\n // void\r\n }\r\n else {\r\n if (axis.zoomable) {\r\n if (axis.renderer.inversed) {\r\n range = $math.invertRange(originalRange);\r\n }\r\n else {\r\n range = originalRange;\r\n }\r\n axis.hideTooltip(0);\r\n if (round) {\r\n //let diff = range.end - range.start;\r\n if (axis instanceof CategoryAxis) {\r\n var cellWidth = axis.getCellEndPosition(0) - axis.getCellStartPosition(0);\r\n range.start = axis.roundPosition(range.start + cellWidth / 2 - (axis.startLocation) * cellWidth, axis.startLocation);\r\n range.end = axis.roundPosition(range.end - cellWidth / 2 + (1 - axis.endLocation) * cellWidth, axis.endLocation);\r\n }\r\n else {\r\n var d = 0.0001;\r\n range.start = axis.roundPosition(range.start + d, 0, axis.startLocation);\r\n range.end = axis.roundPosition(range.end + d, 0, axis.endLocation);\r\n }\r\n }\r\n var axisRange = axis.zoom(range, instantly, instantly, declination);\r\n if (axis.renderer.inversed) {\r\n axisRange = $math.invertRange(axisRange);\r\n }\r\n realRange = axisRange;\r\n }\r\n }\r\n });\r\n }\r\n return realRange;\r\n };\r\n Object.defineProperty(XYChart.prototype, \"maskBullets\", {\r\n /**\r\n * @return Mask bullet container?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maskBullets\");\r\n },\r\n /**\r\n * Indicates if bullet container is masked.\r\n *\r\n * If it is set to `true`, any bullets that do not fit into bullet container\r\n * will be clipped off. Settting to `false` will allow bullets to \"spill out\"\r\n * of the plot area so they are not cut off.\r\n *\r\n * @param value Mask bullet container?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"maskBullets\", value, true) && this.bulletsContainer) {\r\n if (value) {\r\n this.bulletsContainer.mask = this._bulletMask;\r\n }\r\n else {\r\n this.bulletsContainer.mask = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart.prototype, \"arrangeTooltips\", {\r\n /**\r\n * @return Arrange tooltips?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"arrangeTooltips\");\r\n },\r\n /**\r\n * Indicates if chart should arrange series tooltips so that they would not\r\n * overlap.\r\n *\r\n * If set to `true` (default), the chart will adjust vertical positions of\r\n * all simultaneously shown tooltips to avoid overlapping.\r\n *\r\n * However, if you have a vertically-arranged chart, it might not make sense,\r\n * because tooltips would most probably not be aligned horizontally. In this\r\n * case it would probably be a good idea to set this setting to `false`.\r\n *\r\n * @default true\r\n * @param value Arrange tooltips?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"arrangeTooltips\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles mouse wheel event.\r\n *\r\n * @param event Original event\r\n */\r\n XYChart.prototype.handleWheel = function (event) {\r\n var plotContainer = this.plotContainer;\r\n var svgPoint = $utils.documentPointToSvg(event.point, this.htmlContainer, this.svgContainer.cssScale);\r\n var plotPoint = $utils.svgPointToSprite(svgPoint, plotContainer);\r\n var shift = event.shift.y;\r\n this.handleWheelReal(shift, this.mouseWheelBehavior, plotPoint);\r\n };\r\n /**\r\n * Handles mouse wheel event.\r\n *\r\n * @param event Original event\r\n */\r\n XYChart.prototype.handleHorizontalWheel = function (event) {\r\n var plotContainer = this.plotContainer;\r\n var svgPoint = $utils.documentPointToSvg(event.point, this.htmlContainer, this.svgContainer.cssScale);\r\n var plotPoint = $utils.svgPointToSprite(svgPoint, plotContainer);\r\n this.handleWheelReal(event.shift.x, this.horizontalMouseWheelBehavior, plotPoint);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.handleWheelReal = function (shift, mouseWheelBehavior, plotPoint) {\r\n if (shift != 0) {\r\n var plotContainer = this.plotContainer;\r\n var rangeX = this.getCommonAxisRange(this.xAxes);\r\n var rangeY = this.getCommonAxisRange(this.yAxes);\r\n var shiftStep = .1;\r\n var maxPanOut = 0;\r\n if (mouseWheelBehavior == \"panX\" || mouseWheelBehavior == \"panXY\") {\r\n var xAxis = this.xAxes.getIndex(0);\r\n var round = false;\r\n var singleItemStep = shiftStep;\r\n if (xAxis instanceof CategoryAxis) {\r\n singleItemStep = .5 / ((rangeX.end - rangeX.start) * xAxis.dataItems.length);\r\n round = true;\r\n }\r\n shiftStep = Math.max(0.2, singleItemStep);\r\n var differenceX = rangeX.end - rangeX.start;\r\n var newStartX = Math.max(-maxPanOut, rangeX.start + shiftStep * shift / 100 * (rangeX.end - rangeX.start));\r\n var newEndX = Math.min(rangeX.end + shiftStep * shift / 100 * (rangeX.end - rangeX.start), 1 + maxPanOut);\r\n if (newStartX <= 0) {\r\n newEndX = newStartX + differenceX;\r\n }\r\n if (newEndX >= 1) {\r\n newStartX = newEndX - differenceX;\r\n }\r\n this.zoomAxes(this.xAxes, { start: newStartX, end: newEndX }, undefined, round);\r\n }\r\n if (mouseWheelBehavior == \"panY\" || mouseWheelBehavior == \"panXY\") {\r\n var yAxis = this.yAxes.getIndex(0);\r\n var singleItemStep = shiftStep;\r\n var round = false;\r\n if (yAxis instanceof CategoryAxis) {\r\n singleItemStep = .5 / ((rangeX.end - rangeX.start) * yAxis.dataItems.length);\r\n round = true;\r\n }\r\n shiftStep = Math.max(0.2, singleItemStep);\r\n shift *= -1;\r\n var differenceY = rangeY.end - rangeY.start;\r\n var newStartY = Math.max(-maxPanOut, rangeY.start + shiftStep * shift / 100 * (rangeY.end - rangeY.start));\r\n var newEndY = Math.min(rangeY.end + shiftStep * shift / 100 * (rangeY.end - rangeY.start), 1 + maxPanOut);\r\n if (newStartY <= 0) {\r\n newEndY = newStartY + differenceY;\r\n }\r\n if (newEndY >= 1) {\r\n newStartY = newEndY - differenceY;\r\n }\r\n this.zoomAxes(this.yAxes, { start: newStartY, end: newEndY }, undefined, round);\r\n }\r\n if (mouseWheelBehavior == \"zoomX\" || mouseWheelBehavior == \"zoomXY\") {\r\n var locationX = plotPoint.x / plotContainer.maxWidth;\r\n var location2X = this.xAxes.getIndex(0).toAxisPosition(locationX);\r\n var newStartX = Math.max(-maxPanOut, rangeX.start - shiftStep * (rangeX.end - rangeX.start) * shift / 100 * locationX);\r\n newStartX = Math.min(newStartX, location2X);\r\n var newEndX = Math.min(rangeX.end + shiftStep * (rangeX.end - rangeX.start) * shift / 100 * (1 - locationX), 1 + maxPanOut);\r\n newEndX = Math.max(newEndX, location2X);\r\n this.zoomAxes(this.xAxes, { start: newStartX, end: newEndX }, undefined);\r\n }\r\n if (mouseWheelBehavior == \"zoomY\" || mouseWheelBehavior == \"zoomXY\") {\r\n var locationY = plotPoint.y / plotContainer.maxHeight;\r\n var location2Y = this.yAxes.getIndex(0).toAxisPosition(locationY);\r\n var newStartY = Math.max(-maxPanOut, rangeY.start - shiftStep * (rangeY.end - rangeY.start) * shift / 100 * (1 - locationY));\r\n newStartY = Math.min(newStartY, location2Y);\r\n var newEndY = Math.min(rangeY.end + shiftStep * shift / 100 * locationY * (rangeY.end - rangeY.start), 1 + maxPanOut);\r\n newEndY = Math.max(newEndY, location2Y);\r\n this.zoomAxes(this.yAxes, { start: newStartY, end: newEndY }, undefined);\r\n }\r\n }\r\n };\r\n Object.defineProperty(XYChart.prototype, \"mouseWheelBehavior\", {\r\n /**\r\n * @return Mouse wheel behavior\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"mouseWheelBehavior\");\r\n },\r\n /**\r\n * Specifies action for when mouse wheel is used when over the chart.\r\n *\r\n * Options: Options: `\"zoomX\"`, `\"zoomY\"`, `\"zoomXY\"`, `\"panX\"`, `\"panY\"`,`\"panXY\"`, `\"none\"` (default).\r\n *\r\n * You can control sensitivity of wheel zooming via `mouseOptions`.\r\n *\r\n * @default \"none\"\r\n * @see {@link https://www.amcharts.com/docs/v4/reference/sprite/#mouseOptions_property} More information about `mouseOptions`\r\n * @param mouse wheel behavior\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"mouseWheelBehavior\", value)) {\r\n if (value != \"none\") {\r\n this._mouseWheelDisposer = this.plotContainer.events.on(\"wheel\", this.handleWheel, this, false);\r\n this._disposers.push(this._mouseWheelDisposer);\r\n }\r\n else {\r\n if (this._mouseWheelDisposer) {\r\n this.plotContainer.wheelable = false;\r\n this.plotContainer.hoverable = false;\r\n this._mouseWheelDisposer.dispose();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart.prototype, \"horizontalMouseWheelBehavior\", {\r\n /**\r\n * @return Horizontal mouse wheel behavior\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"horizontalMouseWheelBehavior\");\r\n },\r\n /**\r\n * Specifies action for when horizontal mouse wheel is used when over the chart.\r\n *\r\n * Options: Options: `\"zoomX\"`, `\"zoomY\"`, `\"zoomXY\"`, `\"panX\"`, `\"panY\"`, `\"panXY\"`, `\"none\"` (default).\r\n *\r\n * @default \"none\"\r\n * @see {@link https://www.amcharts.com/docs/v4/reference/sprite/#mouseOptions_property} More information about `mouseOptions`\r\n * @param mouse wheel behavior\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"horizontalMouseWheelBehavior\", value)) {\r\n if (value != \"none\") {\r\n this._mouseWheelDisposer2 = this.plotContainer.events.on(\"wheel\", this.handleHorizontalWheel, this, false);\r\n this._disposers.push(this._mouseWheelDisposer2);\r\n }\r\n else {\r\n if (this._mouseWheelDisposer2) {\r\n this.plotContainer.wheelable = false;\r\n this.plotContainer.hoverable = false;\r\n this._mouseWheelDisposer2.dispose();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * This function is called by the [[DataSource]]'s `dateFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @param fields Array of date fields\r\n * @return Array of date fields populated with chart's date fields\r\n */\r\n XYChart.prototype.dataSourceDateFields = function (fields) {\r\n var _this = this;\r\n // Process parent\r\n fields = _super.prototype.dataSourceDateFields.call(this, fields);\r\n // Check if we have any series with date-fields\r\n $iter.each(this.series.iterator(), function (series) {\r\n fields = _this.populateDataSourceFields(fields, series.dataFields, [\"dateX\", \"dateY\", \"openDateX\", \"openDateY\"]);\r\n });\r\n return fields;\r\n };\r\n /**\r\n * This function is called by the [[DataSource]]'s `numberFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @param value Array of number fields\r\n * @return Array of number fields populated with chart's number fields\r\n */\r\n XYChart.prototype.dataSourceNumberFields = function (fields) {\r\n var _this = this;\r\n fields = _super.prototype.dataSourceDateFields.call(this, fields);\r\n // Check if we have any series with date-fields\r\n $iter.each(this.series.iterator(), function (series) {\r\n fields = _this.populateDataSourceFields(fields, series.dataFields, [\"valueX\", \"valueY\", \"openValueX\", \"openValueY\"]);\r\n });\r\n return fields;\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYChart.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Save axis ranges for later processing\r\n var xAxes = [];\r\n var yAxes = [];\r\n // Set up axes\r\n if ($type.hasValue(config.xAxes) && $type.isArray(config.xAxes)) {\r\n for (var i = 0, len = config.xAxes.length; i < len; i++) {\r\n if (!config.xAxes[i].type) {\r\n throw Error(\"[XYChart error] No type set for xAxes[\" + i + \"].\");\r\n }\r\n else if ($type.hasValue(config.xAxes[i][\"axisRanges\"])) {\r\n // Maybe convert string dates?\r\n for (var x = 0, len_1 = config.xAxes[i][\"axisRanges\"].length; x < len_1; x++) {\r\n var range = config.xAxes[i][\"axisRanges\"][x];\r\n if ($type.hasValue(range.date) && $type.isString(range.date)) {\r\n range.date = this.dateFormatter.parse(range.date);\r\n }\r\n if ($type.hasValue(range.endDate) && $type.isString(range.endDate)) {\r\n range.endDate = this.dateFormatter.parse(range.endDate);\r\n }\r\n }\r\n xAxes.push({\r\n axisRanges: config.xAxes[i][\"axisRanges\"],\r\n index: i\r\n });\r\n delete (config.xAxes[i][\"axisRanges\"]);\r\n }\r\n }\r\n }\r\n if ($type.hasValue(config.yAxes) && $type.isArray(config.yAxes)) {\r\n for (var i = 0, len = config.yAxes.length; i < len; i++) {\r\n if (!config.yAxes[i].type) {\r\n throw Error(\"[XYChart error] No type set for yAxes[\" + i + \"].\");\r\n }\r\n else if ($type.hasValue(config.yAxes[i][\"axisRanges\"])) {\r\n // Maybe convert string dates?\r\n for (var x = 0, len_2 = config.yAxes[i][\"axisRanges\"].length; x < len_2; x++) {\r\n var range = config.yAxes[i][\"axisRanges\"][x];\r\n if ($type.hasValue(range.date) && $type.isString(range.date)) {\r\n range.date = this.dateFormatter.parse(range.date);\r\n }\r\n if ($type.hasValue(range.endDate) && $type.isString(range.endDate)) {\r\n range.endDate = this.dateFormatter.parse(range.endDate);\r\n }\r\n }\r\n yAxes.push({\r\n axisRanges: config.yAxes[i][\"axisRanges\"],\r\n index: i\r\n });\r\n delete (config.yAxes[i][\"axisRanges\"]);\r\n }\r\n }\r\n }\r\n // Set up series\r\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n for (var i = 0, len = config.series.length; i < len; i++) {\r\n config.series[i].type = config.series[i].type || \"LineSeries\";\r\n }\r\n }\r\n // Set up cursor\r\n if ($type.hasValue(config.cursor) && !$type.hasValue(config.cursor.type)) {\r\n config.cursor.type = \"XYCursor\";\r\n }\r\n // Set up scrollbars\r\n if ($type.hasValue(config.scrollbarX) && !$type.hasValue(config.scrollbarX.type)) {\r\n config.scrollbarX.type = \"Scrollbar\";\r\n }\r\n if ($type.hasValue(config.scrollbarY) && !$type.hasValue(config.scrollbarY.type)) {\r\n config.scrollbarY.type = \"Scrollbar\";\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n // Finish up with ranges.\r\n // We need to do this here because series are processed last in JSON\r\n // config. Therefore their respective objects are not yet are available\r\n // when axis (and respectively their ranges) are being processed.\r\n if (yAxes.length) {\r\n for (var i = 0, len = yAxes.length; i < len; i++) {\r\n this.yAxes.getIndex(yAxes[i].index).config = {\r\n axisRanges: yAxes[i].axisRanges\r\n };\r\n }\r\n }\r\n if (xAxes.length) {\r\n for (var i = 0, len = xAxes.length; i < len; i++) {\r\n this.xAxes.getIndex(xAxes[i].index).config = {\r\n axisRanges: xAxes[i].axisRanges\r\n };\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\r\n XYChart.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // Must come last\r\n else if (a == \"scrollbarX\") {\r\n return 1;\r\n }\r\n else if (b == \"scrollbarX\") {\r\n return -1;\r\n }\r\n else if (a == \"scrollbarY\") {\r\n return 1;\r\n }\r\n else if (b == \"scrollbarY\") {\r\n return -1;\r\n }\r\n else if (a == \"cursor\") {\r\n return 1;\r\n }\r\n else if (b == \"cursor\") {\r\n return -1;\r\n }\r\n else if (a == \"series\") {\r\n return 1;\r\n }\r\n else if (b == \"series\") {\r\n return -1;\r\n }\r\n else {\r\n return _super.prototype.configOrder.call(this, a, b);\r\n }\r\n };\r\n /**\r\n * Creates a new Series of type suitable for this chart.\r\n *\r\n * @return New series\r\n */\r\n XYChart.prototype.createSeries = function () {\r\n return new XYSeries();\r\n };\r\n Object.defineProperty(XYChart.prototype, \"zoomOutButton\", {\r\n /**\r\n * @return Zoom out button\r\n */\r\n get: function () {\r\n return this._zoomOutButton;\r\n },\r\n /**\r\n * A [[Button]] element that is used for zooming out the chart.\r\n *\r\n * This button appears only when chart is zoomed in, and disappears\r\n * autoamatically when it is zoome dout.\r\n *\r\n * @param button Zoom out button\r\n */\r\n set: function (button) {\r\n var _this = this;\r\n this._zoomOutButton = button;\r\n if (button) {\r\n button.events.on(\"hit\", function () {\r\n _this.zoomAxes(_this.xAxes, { start: 0, end: 1 });\r\n _this.zoomAxes(_this.yAxes, { start: 0, end: 1 });\r\n }, undefined, false);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all parameters from another [[XYChart]].\r\n *\r\n * @param source Source XYChart\r\n */\r\n XYChart.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n source.xAxes.each(function (axis) {\r\n var a = _this.xAxes.push(axis.clone());\r\n a.chart = _this;\r\n a.renderer.chart = _this;\r\n });\r\n source.yAxes.each(function (axis) {\r\n var a = _this.yAxes.push(axis.clone());\r\n a.renderer.chart = _this;\r\n a.chart = _this;\r\n });\r\n //this.xAxes.copyFrom(source.xAxes);\r\n //this.yAxes.copyFrom(source.yAxes);\r\n _super.prototype.copyFrom.call(this, source);\r\n //this.zoomOutButton.copyFrom(source.zoomOutButton);\r\n if (source.cursor) {\r\n this.cursor = source.cursor.clone();\r\n }\r\n if (source.scrollbarX) {\r\n this.scrollbarX = source.scrollbarX.clone();\r\n }\r\n if (source.scrollbarY) {\r\n this.scrollbarY = source.scrollbarY.clone();\r\n }\r\n //@todo copy all container properties\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n var scrollbarX = this.scrollbarX;\r\n if (scrollbarX && scrollbarX instanceof XYChartScrollbar) {\r\n scrollbarX.scrollbarChart.disposeData();\r\n }\r\n var scrollbarY = this.scrollbarY;\r\n if (scrollbarY && scrollbarY instanceof XYChartScrollbar) {\r\n scrollbarY.scrollbarChart.disposeData();\r\n }\r\n this.xAxes.each(function (axis) {\r\n if (axis instanceof CategoryAxis) {\r\n axis.disposeData();\r\n }\r\n });\r\n this.yAxes.each(function (axis) {\r\n if (axis instanceof CategoryAxis) {\r\n axis.disposeData();\r\n }\r\n });\r\n };\r\n /**\r\n * Adds one or several (array) of data items to the existing data.\r\n *\r\n * @param rawDataItem One or many raw data item objects\r\n */\r\n XYChart.prototype.addData = function (rawDataItem, removeCount) {\r\n if (this.scrollbarX instanceof XYChartScrollbar) {\r\n this.addScrollbarData(this.scrollbarX, removeCount);\r\n }\r\n if (this.scrollbarY instanceof XYChartScrollbar) {\r\n this.addScrollbarData(this.scrollbarY, removeCount);\r\n }\r\n _super.prototype.addData.call(this, rawDataItem, removeCount);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.addScrollbarData = function (scrollbar, removeCount) {\r\n var chart = scrollbar.scrollbarChart;\r\n chart._parseDataFrom = chart.data.length;\r\n chart.invalidateData();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.removeScrollbarData = function (scrollbar, removeCount) {\r\n var chart = scrollbar.scrollbarChart;\r\n if ($type.isNumber(removeCount)) {\r\n while (removeCount > 0) {\r\n var dataItem = this.dataItems.getIndex(0);\r\n if (dataItem) {\r\n chart.dataItems.remove(dataItem);\r\n }\r\n chart.dataUsers.each(function (dataUser) {\r\n var dataItem = dataUser.dataItems.getIndex(0);\r\n if (dataItem) {\r\n dataUser.dataItems.remove(dataItem);\r\n }\r\n });\r\n chart._parseDataFrom--;\r\n removeCount--;\r\n }\r\n chart.invalidateData();\r\n }\r\n };\r\n /**\r\n * Removes elements from the beginning of data\r\n *\r\n * @param count number of elements to remove\r\n */\r\n XYChart.prototype.removeData = function (count) {\r\n if (this.scrollbarX instanceof XYChartScrollbar) {\r\n this.removeScrollbarData(this.scrollbarX, count);\r\n }\r\n if (this.scrollbarY instanceof XYChartScrollbar) {\r\n this.removeScrollbarData(this.scrollbarY, count);\r\n }\r\n _super.prototype.removeData.call(this, count);\r\n };\r\n /**\r\n * @param value Tap to activate?\r\n */\r\n XYChart.prototype.setTapToActivate = function (value) {\r\n _super.prototype.setTapToActivate.call(this, value);\r\n if (this.cursor) {\r\n this.cursor.interactions.isTouchProtected = value;\r\n this.plotContainer.interactions.isTouchProtected = value;\r\n }\r\n };\r\n XYChart.prototype.handleTapToActivate = function () {\r\n _super.prototype.handleTapToActivate.call(this);\r\n if (this.cursor) {\r\n this.cursor.interactions.isTouchProtected = false;\r\n this.plotContainer.interactions.isTouchProtected = false;\r\n }\r\n };\r\n XYChart.prototype.handleTapToActivateDeactivation = function () {\r\n _super.prototype.handleTapToActivateDeactivation.call(this);\r\n if (this.cursor) {\r\n this.cursor.interactions.isTouchProtected = true;\r\n this.plotContainer.interactions.isTouchProtected = true;\r\n }\r\n };\r\n return XYChart;\r\n}(SerialChart));\r\nexport { XYChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYChart\"] = XYChart;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Remove horizontal scrollbar on narrow charts.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof XYChart && target.scrollbarX) {\r\n var state = target.states.create(stateId);\r\n var sbstate = target.scrollbarX.states.create(stateId);\r\n sbstate.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Remove vertical scrollbar on short charts.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof XYChart && target.scrollbarY) {\r\n var state = target.states.create(stateId);\r\n var sbstate = target.scrollbarY.states.create(stateId);\r\n sbstate.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n","/**\r\n * Line series segment module.\r\n * @todo Add description about what this is\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { Sprite, visualProperties } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a line series segment.\r\n *\r\n * A line segment can be used to apply different properties to a part of the\r\n * line series, between two data points.\r\n *\r\n * @see {@link ILineSeriesSegmentEvents} for a list of available events\r\n * @see {@link ILineSeriesSegmentAdapters} for a list of available Adapters\r\n * @todo Example\r\n */\r\nvar LineSeriesSegment = /** @class */ (function (_super) {\r\n __extends(LineSeriesSegment, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LineSeriesSegment() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"LineSeriesSegment\";\r\n // Set defaults\r\n _this.isMeasured = false;\r\n _this.interactionsEnabled = false;\r\n _this.layout = \"none\";\r\n // Create fill element\r\n var fillSprite = _this.createChild(Sprite);\r\n _this.fillSprite = fillSprite;\r\n fillSprite.shouldClone = false;\r\n fillSprite.setElement(_this.paper.add(\"path\"));\r\n fillSprite.isMeasured = false;\r\n _this._disposers.push(fillSprite);\r\n // Create line element\r\n var strokeSprite = _this.createChild(Sprite);\r\n _this.strokeSprite = strokeSprite;\r\n strokeSprite.shouldClone = false;\r\n strokeSprite.fill = color();\r\n strokeSprite.setElement(_this.paper.add(\"path\"));\r\n strokeSprite.isMeasured = false;\r\n _this._disposers.push(strokeSprite);\r\n return _this;\r\n }\r\n /**\r\n * Draws the series segment.\r\n *\r\n * @ignore Exclude from docs\r\n * @param points Points to connect\r\n * @param closePoints ?\r\n * @param smoothnessX Horizontal bezier setting (?)\r\n * @param smoothnessY Vertical bezier setting (?)\r\n */\r\n LineSeriesSegment.prototype.drawSegment = function (points, closePoints, smoothnessX, smoothnessY) {\r\n if (!this.disabled) {\r\n if (points.length > 0 && closePoints.length > 0 && $type.isNumber(points[0].x) && $type.isNumber(points[0].y)) {\r\n // first moveTo helps to avoid Chrome straight line in the mask bug.\r\n var path = $path.moveTo({ x: points[0].x - 0.2, y: points[0].y - 0.2 }) + $path.moveTo(points[0]);\r\n var series = this.series;\r\n if (series.smoothing == \"bezier\") {\r\n path += new $smoothing.Tension(smoothnessX, smoothnessY).smooth(points);\r\n }\r\n else if (series.smoothing == \"monotoneX\") {\r\n path += new $smoothing.MonotoneX({ closed: false }).smooth(points);\r\n }\r\n else if (series.smoothing == \"monotoneY\") {\r\n path += new $smoothing.MonotoneY({ closed: false }).smooth(points);\r\n }\r\n if (this.strokeOpacity == 0 || this.strokeSprite.strokeOpacity == 0) {\r\n // like this and not if != 0, otherwise ranges stroke won't be drawn.\r\n }\r\n else {\r\n this.strokeSprite.path = path;\r\n }\r\n if (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) { // helps to avoid drawing fill object if fill is not visible\r\n if ($type.isNumber(closePoints[0].x) && $type.isNumber(closePoints[0].y)) {\r\n path += $path.lineTo(closePoints[0]);\r\n if (series.smoothing == \"bezier\") {\r\n path += new $smoothing.Tension(smoothnessX, smoothnessY).smooth(closePoints);\r\n }\r\n else if (series.smoothing == \"monotoneX\") {\r\n path += new $smoothing.MonotoneX({ closed: false }).smooth(closePoints);\r\n }\r\n else if (series.smoothing == \"monotoneY\") {\r\n path += new $smoothing.MonotoneY({ closed: false }).smooth(closePoints);\r\n }\r\n path += $path.lineTo(points[0]);\r\n path += $path.closePath();\r\n this.fillSprite.path = path;\r\n }\r\n }\r\n }\r\n else {\r\n this.fillSprite.path = \"\";\r\n this.strokeSprite.path = \"\";\r\n }\r\n }\r\n };\r\n /**\r\n * Copies properties from a [[Sprite]] to both line and fill elements.\r\n *\r\n * @param source Source [[Sprite]] to copy properties from\r\n */\r\n LineSeriesSegment.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n var lineElement = this.strokeSprite;\r\n $object.copyProperties(source, lineElement.properties, visualProperties);\r\n lineElement.events.copyFrom(source.strokeSprite.events);\r\n lineElement.fillOpacity = 0;\r\n var fillElement = this.fillSprite;\r\n $object.copyProperties(source, fillElement.properties, visualProperties);\r\n fillElement.events.copyFrom(source.fillSprite.events);\r\n fillElement.strokeOpacity = 0;\r\n };\r\n return LineSeriesSegment;\r\n}(Container));\r\nexport { LineSeriesSegment };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LineSeriesSegment\"] = LineSeriesSegment;\r\n","/**\r\n * DurationAxis module\r\n */\r\nimport { __extends, __values } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ValueAxis, ValueAxisDataItem } from \"./ValueAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines data item for [[DurationAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar DurationAxisDataItem = /** @class */ (function (_super) {\r\n __extends(DurationAxisDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DurationAxisDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"DurationAxisDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return DurationAxisDataItem;\r\n}(ValueAxisDataItem));\r\nexport { DurationAxisDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to create an axis that shows time durations.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.DurationAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Time\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.DurationAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Time\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"DurationAxis\",\r\n * \"title\": {\r\n * \"text\": \"Time\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} for mor information about duration formatters.\r\n * @see {@link IDurationAxisEvents} for a list of available Events\r\n * @see {@link IDurationAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar DurationAxis = /** @class */ (function (_super) {\r\n __extends(DurationAxis, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DurationAxis() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A base unit (granularity) of data.\r\n *\r\n * Used to indicate what are the base units of your data.\r\n */\r\n _this._baseUnit = \"second\";\r\n _this.className = \"DurationAxis\";\r\n _this.setPropertyValue(\"maxZoomFactor\", 1000000);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Formats the value according to axis' own [[DurationFormatter]].\r\n *\r\n * @param value Source value\r\n * @return Formatted value\r\n */\r\n DurationAxis.prototype.formatLabel = function (value, format) {\r\n return this.durationFormatter.format(value, format || this.axisDurationFormat);\r\n };\r\n /**\r\n * Adjusts actual min and max scale values so that the axis starts and ends\r\n * at \"nice\" values, unless `strictMinMax` is set.\r\n *\r\n * The `difference` can be something else than `max - min`, because of the\r\n * axis breaks.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param min [description]\r\n * @param max [description]\r\n * @param difference [description]\r\n * @param gridCount [description]\r\n * @param strictMode [description]\r\n * @return [description]\r\n */\r\n DurationAxis.prototype.adjustMinMax = function (min, max, difference, gridCount, strictMode) {\r\n var e_1, _a;\r\n var minMaxStep;\r\n var timeUnit = this.baseUnit;\r\n // we don't allow to go to smaller units, setting so to avoid invalidation\r\n this.setPropertyValue(\"maxPrecision\", 0);\r\n if (timeUnit == \"millisecond\" || timeUnit == \"second\" || timeUnit == \"minute\" || timeUnit == \"hour\") {\r\n // will fail if 0\r\n if (gridCount <= 1) {\r\n gridCount = 1;\r\n }\r\n gridCount = Math.round(gridCount);\r\n var initialMin = min;\r\n var initialMax = max;\r\n // in case min and max is the same, use max\r\n if (difference === 0) {\r\n difference = Math.abs(max);\r\n }\r\n var step = difference / gridCount;\r\n var divisors = [60, 30, 20, 15, 10, 2, 1];\r\n var realDivisor = 1;\r\n if (timeUnit == \"hour\") {\r\n divisors = [24, 12, 6, 4, 2, 1];\r\n }\r\n try {\r\n for (var divisors_1 = __values(divisors), divisors_1_1 = divisors_1.next(); !divisors_1_1.done; divisors_1_1 = divisors_1.next()) {\r\n var divisor = divisors_1_1.value;\r\n if (difference / divisor > gridCount) {\r\n realDivisor = divisor;\r\n break;\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (divisors_1_1 && !divisors_1_1.done && (_a = divisors_1.return)) _a.call(divisors_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n var count = Math.ceil(((max - min) / realDivisor) / gridCount);\r\n var exponent = Math.log(Math.abs(count)) * Math.LOG10E;\r\n var power = Math.pow(10, Math.floor(exponent)) / 10;\r\n var reducedCount = count / power;\r\n // find closest to divisor\r\n var closest = $math.closest(divisors, reducedCount);\r\n count = closest * power;\r\n step = realDivisor * count;\r\n // TODO can this be removed ?\r\n this.durationFormatter.getValueUnit(step, this.baseUnit);\r\n min = Math.floor(min / step) * step;\r\n max = Math.ceil(max / step) * step;\r\n if (strictMode) {\r\n min -= step;\r\n if (min < 0 && initialMin >= 0) {\r\n min = 0;\r\n }\r\n max += step;\r\n if (max > 0 && initialMax <= 0) {\r\n max = 0;\r\n }\r\n }\r\n minMaxStep = { min: min, max: max, step: step };\r\n }\r\n else {\r\n minMaxStep = _super.prototype.adjustMinMax.call(this, min, max, difference, gridCount, strictMode);\r\n }\r\n // choose duration formatter based on step\r\n this.axisDurationFormat = this.durationFormatter.getFormat(minMaxStep.step, minMaxStep.max, this.baseUnit);\r\n return minMaxStep;\r\n };\r\n Object.defineProperty(DurationAxis.prototype, \"tooltipDurationFormat\", {\r\n /**\r\n * @return Duration format for axis labels\r\n */\r\n get: function () {\r\n return this._tooltipDurationFormat;\r\n },\r\n /**\r\n * A special duration format to apply axis tooltips.\r\n *\r\n * Will use same format as for labels, if not set.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} for mor information.\r\n * @param value Duration format for axis labels\r\n */\r\n set: function (value) {\r\n this._tooltipDurationFormat = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns text to show in a axis tooltip, based on specific position within\r\n * axis.\r\n *\r\n * The label will be formatted as per [[NumberFormatter]] set for the whole\r\n * chart, or explicitly for this Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (px)\r\n * @return Label (numeric value)\r\n */\r\n DurationAxis.prototype.getTooltipText = function (position) {\r\n var value = $math.round(this.positionToValue(position), this._stepDecimalPlaces);\r\n var valueStr = this.formatLabel(value, this.tooltipDurationFormat);\r\n if (!this._adapterO) {\r\n return valueStr;\r\n }\r\n else {\r\n return this._adapterO.apply(\"getTooltipText\", valueStr);\r\n }\r\n };\r\n Object.defineProperty(DurationAxis.prototype, \"baseUnit\", {\r\n /**\r\n * @return Base unit\r\n */\r\n get: function () {\r\n return this._baseUnit;\r\n },\r\n /**\r\n * A base unit (granularity) of data.\r\n *\r\n * Used to indicate what are the base units of your data.\r\n *\r\n * Available options: \"millisecond\", \"second\" (default), \"minute\", \"hour\",\r\n * \"day\", \"week\", \"month\", \"year\".\r\n *\r\n * @default \"second\"\r\n * @param timeUnit\r\n */\r\n set: function (timeUnit) {\r\n if (this._baseUnit != timeUnit) {\r\n this._baseUnit = timeUnit;\r\n this.durationFormatter.baseUnit = timeUnit;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\r\n DurationAxis.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.baseUnit = source.baseUnit;\r\n };\r\n return DurationAxis;\r\n}(ValueAxis));\r\nexport { DurationAxis };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DurationAxis\"] = DurationAxis;\r\nregistry.registeredClasses[\"DurationAxisDataItem\"] = DurationAxisDataItem;\r\n","/**\r\n * Line series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYSeries, XYSeriesDataItem } from \"./XYSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { LineSeriesSegment } from \"./LineSeriesSegment\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { DurationAxis } from \"../axes/DurationAxis\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Line } from \"../../core/elements/Line\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { Rectangle } from \"../../core/elements/Rectangle\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport { Bullet } from \"../elements/Bullet\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[LineSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar LineSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(LineSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LineSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"LineSeriesDataItem\";\r\n return _this;\r\n }\r\n return LineSeriesDataItem;\r\n}(XYSeriesDataItem));\r\nexport { LineSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a line graph.\r\n *\r\n * @see {@link ILineSeriesEvents} for a list of available Events\r\n * @see {@link ILineSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar LineSeries = /** @class */ (function (_super) {\r\n __extends(LineSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LineSeries() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Minimum distance in pixels between two adjacent points.\r\n *\r\n * If the distance is less than this setting, a point is skipped.\r\n *\r\n * This allows acceptable performance with huge amounts of data points.\r\n *\r\n * @default 0.5\r\n */\r\n _this.minDistance = 0.5;\r\n _this.segments = new ListTemplate(_this.createSegment());\r\n _this.segments.template.applyOnClones = true;\r\n _this._disposers.push(new ListDisposer(_this.segments));\r\n _this._disposers.push(_this.segments.template);\r\n _this._segmentsIterator = new $iter.ListIterator(_this.segments, function () { return _this.segments.create(); });\r\n _this._segmentsIterator.createNewItems = true;\r\n _this.className = \"LineSeries\";\r\n _this.strokeOpacity = 1;\r\n _this.fillOpacity = 0;\r\n _this.connect = true;\r\n _this.tensionX = 1;\r\n _this.tensionY = 1;\r\n _this.autoGapCount = 1.1;\r\n _this.smoothing = \"bezier\";\r\n _this.segmentsContainer = _this.mainContainer.createChild(Container);\r\n _this.segmentsContainer.isMeasured = false;\r\n // line series might have multiple segments and it has a separate sprite for fill and stroke for each segment. So we need to observe all the changes on series and set them on the segments\r\n // todo: we need list here, otherwise everything will be redrawn event on change of properties like tooltipX or similar.\r\n // this.addEventListener(SpriteEvent.PROPERTY_CHANGED, this.validateDataElements, false, this);\r\n _this.bulletsContainer.toFront();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n LineSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Line Series\");\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n LineSeries.prototype.createSegment = function () {\r\n return new LineSeriesSegment();\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n LineSeries.prototype.createDataItem = function () {\r\n return new LineSeriesDataItem();\r\n };\r\n /**\r\n * Inits data item's working values.\r\n *\r\n * @param dataItem Data item\r\n * @param index Data item's index\r\n */\r\n LineSeries.prototype.setInitialWorkingValues = function (dataItem) {\r\n // this makes data items animate when added\r\n var yAxis = this._yAxis.get();\r\n var xAxis = this._xAxis.get();\r\n if (this.appeared && this.visible) {\r\n var previousDataItem = this.dataItems.getIndex(dataItem.index - 1);\r\n dataItem.component = this; // as these values are set before, we don't know component yet\r\n if (this.baseAxis == xAxis) {\r\n if (yAxis instanceof ValueAxis) {\r\n var initialY = yAxis.minZoomed;\r\n if (previousDataItem) {\r\n initialY = previousDataItem.values[\"valueY\"].workingValue;\r\n }\r\n // this makes line animate from previous point to newly added point\r\n dataItem.setWorkingValue(\"valueY\", initialY, 0);\r\n dataItem.setWorkingValue(\"valueY\", dataItem.values.valueY.value);\r\n if (xAxis instanceof DateAxis) {\r\n dataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX - 1, 0); // instantly move it to previous\r\n dataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX); // animate to it's location\r\n }\r\n else if (xAxis instanceof DurationAxis) {\r\n if (previousDataItem) {\r\n var value = dataItem.valueX;\r\n dataItem.setWorkingValue(\"valueX\", previousDataItem.valueX, 0); // instantly move it to previous\r\n dataItem.setWorkingValue(\"valueX\", value); // animate to new value\r\n }\r\n }\r\n }\r\n }\r\n if (this.baseAxis == yAxis) {\r\n if (xAxis instanceof ValueAxis) {\r\n var initialX = xAxis.minZoomed;\r\n if (previousDataItem) {\r\n initialX = previousDataItem.values[\"valueX\"].workingValue;\r\n }\r\n dataItem.setWorkingValue(\"valueX\", initialX, 0);\r\n dataItem.setWorkingValue(\"valueX\", dataItem.values.valueX.value);\r\n if (yAxis instanceof DateAxis) {\r\n dataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateX - 1, 0); // instantly move it to previous\r\n dataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateY); // animate to it's location\r\n }\r\n else if (yAxis instanceof DurationAxis) {\r\n if (previousDataItem) {\r\n var value = dataItem.valueY;\r\n dataItem.setWorkingValue(\"valueY\", previousDataItem.valueY, 0); // instantly move it to previous\r\n dataItem.setWorkingValue(\"valueY\", value); // animate to new value\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.baseAxis == xAxis) {\r\n if (yAxis instanceof ValueAxis) {\r\n if (xAxis instanceof DateAxis) {\r\n dataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX);\r\n }\r\n if (xAxis instanceof CategoryAxis) {\r\n dataItem.setWorkingLocation(\"categoryX\", dataItem.locations.categoryX);\r\n }\r\n }\r\n }\r\n if (this.baseAxis == yAxis) {\r\n if (xAxis instanceof ValueAxis) {\r\n if (yAxis instanceof DateAxis) {\r\n dataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateY);\r\n }\r\n if (yAxis instanceof CategoryAxis) {\r\n dataItem.setWorkingLocation(\"categoryY\", dataItem.locations.categoryY);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Updates corresponding legend data item with current values.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n LineSeries.prototype.updateLegendValue = function (dataItem, notRange) {\r\n _super.prototype.updateLegendValue.call(this, dataItem, notRange);\r\n //This is hack to save some methos, used to set tooltip color source only\r\n if (dataItem && dataItem.segment) {\r\n this.tooltipColorSource = dataItem.segment;\r\n }\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n LineSeries.prototype.validate = function () {\r\n var _this = this;\r\n _super.prototype.validate.call(this);\r\n if (this.xAxis && this.yAxis) {\r\n this._segmentsIterator.reset();\r\n this.openSegmentWrapper(this._adjustedStartIndex);\r\n $iter.each(this.axisRanges.iterator(), function (range) {\r\n _this.openSegmentWrapper(_this._adjustedStartIndex, range);\r\n });\r\n $iter.each(this._segmentsIterator.iterator(), function (segment) {\r\n segment.__disabled = true;\r\n });\r\n }\r\n };\r\n /**\r\n * [sliceData description]\r\n *\r\n * @todo Description\r\n */\r\n LineSeries.prototype.sliceData = function () {\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n // we need extra one item to both sides with values for line series, otherwise the line will not continue out of bounds of the chart while scrolling\r\n // find first to the left\r\n // TODO use iterator instead\r\n for (var i = this.startIndex - 1; i >= 0; i--) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem && dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\r\n startIndex = i;\r\n break;\r\n }\r\n }\r\n this._adjustedStartIndex = this.findAdjustedIndex(startIndex, [\"stroke\", \"strokeWidth\", \"strokeDasharray\", \"strokeOpacity\", \"fill\", \"fillOpacity\", \"opacity\"]);\r\n // find first to the right\r\n // TODO use iterator instead\r\n for (var i = this.endIndex, len = this.dataItems.length; i < len; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem && dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\r\n endIndex = i + 1;\r\n break;\r\n }\r\n }\r\n this._workingStartIndex = startIndex;\r\n this._workingEndIndex = endIndex;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n LineSeries.prototype.findAdjustedIndex = function (adjustedIndex, properties) {\r\n var _this = this;\r\n var propertyFields = this.propertyFields;\r\n var startIndex = adjustedIndex;\r\n $array.each(properties, function (property) {\r\n if ($type.hasValue(propertyFields[property])) {\r\n for (var i = startIndex; i >= 0; i--) {\r\n var dataItem = _this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n if ($type.hasValue(dataItem.properties[property])) {\r\n if (adjustedIndex > i) {\r\n adjustedIndex = i;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n return adjustedIndex;\r\n };\r\n /**\r\n * Wraps openSegment call with iterative solution to prevent stack overflow\r\n *\r\n * @param openIndex Index\r\n * @param axisRange Range\r\n */\r\n LineSeries.prototype.openSegmentWrapper = function (openIndex, axisRange) {\r\n var params = {\r\n \"index\": openIndex,\r\n \"axisRange\": axisRange\r\n };\r\n do {\r\n params = this.openSegment(params.index, params.axisRange);\r\n } while (params);\r\n };\r\n LineSeries.prototype.getSegment = function () {\r\n var segment = this._segmentsIterator.getFirst();\r\n segment.series = this;\r\n if (segment.isDisposed()) {\r\n this.segments.removeValue(segment);\r\n return this.getSegment();\r\n }\r\n return segment;\r\n };\r\n /**\r\n * [openSegment description]\r\n *\r\n * @todo Description\r\n * @param openIndex [description]\r\n * @param axisRange [description]\r\n */\r\n LineSeries.prototype.openSegment = function (openIndex, axisRange) {\r\n var addToClose = false;\r\n var points = [];\r\n openIndex = Math.min(openIndex, this.dataItems.length);\r\n var endIndex = Math.min(this._workingEndIndex, this.dataItems.length);\r\n this._workingEndIndex = Math.min(this._workingEndIndex, this.dataItems.length);\r\n var closeIndex;\r\n var propertiesChanged = false;\r\n var segment = this.getSegment();\r\n segment.strokeDasharray = undefined;\r\n segment.__disabled = false;\r\n if (axisRange) {\r\n segment.parent = axisRange.contents;\r\n $object.copyProperties(axisRange.contents, segment, visualProperties);\r\n }\r\n else {\r\n $object.copyProperties(this, segment, visualProperties);\r\n segment.filters.clear();\r\n segment.parent = this.segmentsContainer;\r\n }\r\n this.group.node.removeAttribute(\"fill\");\r\n var connect = this.connect;\r\n var valuesFound = false; // some flag to avoid multiple closes if no values found\r\n for (var i = openIndex; i < endIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n dataItem.segment = segment;\r\n if (dataItem.hasProperties) {\r\n // if this is first item of segment\r\n if (i == openIndex) {\r\n this.updateSegmentProperties(dataItem.properties, segment);\r\n }\r\n else {\r\n // this time we only need to know if properties changed, so we don't pass segment\r\n propertiesChanged = this.updateSegmentProperties(dataItem.properties, segment, true);\r\n }\r\n }\r\n if (dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\r\n this.addPoints(points, dataItem, this.xField, this.yField);\r\n valuesFound = true;\r\n }\r\n else {\r\n // if no values in first data item, go to next\r\n if (i == openIndex) {\r\n continue;\r\n }\r\n else {\r\n // stop cycle\r\n if (!connect && valuesFound) {\r\n closeIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n closeIndex = i;\r\n if (this.baseAxis instanceof DateAxis) {\r\n var next = this.dataItems.getIndex(i + 1);\r\n if (next && this.baseAxis.makeGap(next, dataItem)) {\r\n addToClose = true;\r\n break;\r\n }\r\n }\r\n if (propertiesChanged) {\r\n break;\r\n }\r\n }\r\n return this.closeSegment(segment, points, openIndex, closeIndex, axisRange, addToClose);\r\n };\r\n /**\r\n * [addPoints description]\r\n *\r\n * @todo Description\r\n * @param points [description]\r\n * @param dataItem [description]\r\n * @param xField [description]\r\n * @param yField [description]\r\n * @param backwards [description]\r\n */\r\n LineSeries.prototype.addPoints = function (points, dataItem, xField, yField, backwards) {\r\n var point = this.getPoint(dataItem, xField, yField, dataItem.workingLocations[xField], dataItem.workingLocations[yField]);\r\n if (!backwards) {\r\n dataItem.point = point;\r\n }\r\n points.push(point);\r\n };\r\n /**\r\n * [closeSegment description]\r\n *\r\n * @todo Description\r\n * @param segment [description]\r\n * @param points [description]\r\n * @param openIndex [description]\r\n * @param closeIndex [description]\r\n * @param axisRange [description]\r\n */\r\n LineSeries.prototype.closeSegment = function (segment, points, openIndex, closeIndex, axisRange, add) {\r\n var closePoints = [];\r\n if (this.dataFields[this._xOpenField] ||\r\n this.dataFields[this._yOpenField] ||\r\n this.stacked) {\r\n for (var i = closeIndex; i >= openIndex; i--) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) { // not sure, this means that open point will only be added if value is also set for this point, but maybe it's ok.\r\n this.addPoints(closePoints, dataItem, this.xOpenField, this.yOpenField, true);\r\n }\r\n }\r\n }\r\n else {\r\n var baseAxis = this.baseAxis;\r\n var count = points.length;\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (count > 0) {\r\n if (baseAxis == xAxis) {\r\n closePoints.push({ x: points[count - 1].x, y: yAxis.basePoint.y }); // last x\r\n closePoints.push({ x: points[0].x, y: yAxis.basePoint.y }); // first x\r\n }\r\n else {\r\n closePoints.push({ x: xAxis.basePoint.x, y: points[count - 1].y }); // last y\r\n closePoints.push({ x: xAxis.basePoint.x, y: points[0].y }); // first y\r\n }\r\n }\r\n }\r\n this.drawSegment(segment, points, closePoints);\r\n if (add) {\r\n closeIndex++;\r\n }\r\n if (closeIndex < this._workingEndIndex - 1) {\r\n return { \"index\": closeIndex, \"axisRange\": axisRange };\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n /**\r\n * Draws the line segment.\r\n *\r\n * @param segment Segment\r\n * @param points Segment points\r\n * @param closePoints Segment close points\r\n */\r\n LineSeries.prototype.drawSegment = function (segment, points, closePoints) {\r\n segment.drawSegment(points, closePoints, this.tensionX, this.tensionY);\r\n };\r\n /**\r\n * Segement will get its colors from `this.dataItem`, as thats how\r\n * `getPropertyValue()` method works.\r\n *\r\n * We pass `lineSeriesDataItem.properties` as item here each time when a flag\r\n * `hasProperties` is set to `true` on data item (this means it can contain\r\n * some properties set).\r\n *\r\n * @param itemProperties Item properties\r\n * @param segment Segment\r\n * @return Properties changed?\r\n */\r\n LineSeries.prototype.updateSegmentProperties = function (itemProperties, segment, checkOnly) {\r\n var changed = false;\r\n $object.each(itemProperties, function (propertyName, value) {\r\n // some value must be defined\r\n if ($type.hasValue(value)) {\r\n var currentValue = segment[propertyName];\r\n var currentValueStr = void 0;\r\n // current value can be Color, number, anything. So we check if it has toString, otherwise just do String().\r\n // toString() will return hex if it's color. The only problem is that it will return lowercased hex and if we have uppercase in data, it will think that it changed\r\n if (currentValue) {\r\n if (currentValue.toString) {\r\n currentValueStr = currentValue.toString();\r\n }\r\n else {\r\n currentValueStr = currentValue; // not doing String(currentValue) as this will make all Objects the same\r\n }\r\n }\r\n var valueStr = void 0;\r\n if (value) {\r\n if (value.toString) {\r\n valueStr = value.toString();\r\n }\r\n else {\r\n valueStr = value; // not doing String(currentValue) as this will make all Objects the same\r\n }\r\n }\r\n if (currentValue == value || (currentValueStr != undefined && valueStr != undefined && currentValueStr == valueStr)) {\r\n // void\r\n }\r\n else {\r\n if (!checkOnly) {\r\n segment[propertyName] = value;\r\n }\r\n changed = true;\r\n }\r\n }\r\n });\r\n return changed;\r\n };\r\n Object.defineProperty(LineSeries.prototype, \"connect\", {\r\n /**\r\n * @return Connect?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"connect\");\r\n },\r\n /**\r\n * Connect the lines over empty data points?\r\n *\r\n * If set to `true` the line will connect two adjacent data points by a\r\n * straight line. Even if there are data points with missing values\r\n * in-between.\r\n *\r\n * If you set this to `false`, the line will break when there are missing\r\n * values.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/#Line_series_with_gaps} for more information about this feature\r\n * @default true\r\n * @param value Connect?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"connect\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineSeries.prototype, \"tensionX\", {\r\n /**\r\n * @return Horizontal tension (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tensionX\");\r\n },\r\n /**\r\n * Horizontal tension setting of the line (0-1).\r\n *\r\n * Can be used to create smoothed lines. It works like this:\r\n *\r\n * Accepted values are in the range between 0 and 1. The biggest value (1)\r\n * will mean that the \"tension\" is very high, so the line is maximally\r\n * attracted to the points it connects, hence the straight line.\r\n *\r\n * Using smaller numbers will \"relax\" the tension, creating some curving.\r\n *\r\n * The smaller the tension setting, the more relaxed the line and the more\r\n * wide the curve.\r\n *\r\n * This setting is for horizontal tension, meaning the curve will bend in\r\n * such way that it never goes below or above connecting points. To enable\r\n * vertical bending as well, use `tensionY`.\r\n *\r\n * IMPORTANT: line smoothing works best when data items are placed at regular\r\n * intervals. For setups where data items are spaced erratically, enabling\r\n * smoothing might result in awkwardly looking lines.\r\n *\r\n * @default 1\r\n * @param value Horizontal tension (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tensionX\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineSeries.prototype, \"tensionY\", {\r\n /**\r\n * @return Vertical tension (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tensionY\");\r\n },\r\n /**\r\n * Can be used to create smoothed lines. It works like this:\r\n *\r\n * Accepted values are in the range between 0 and 1. The biggest value (1)\r\n * will mean that the \"tension\" is very high, so the line is maximally\r\n * attracted to the points it connects, hence the straight line.\r\n *\r\n * Using smaller numbers will \"relax\" the tension, creating some curving.\r\n *\r\n * The smaller the tension setting, the more relaxed the line and the more\r\n * wide the curve.\r\n *\r\n * This setting is for vertical tension, meaning the curve might bend in\r\n * such way that it will go below or above connected points.\r\n *\r\n * Combine this setting with `tensionX` to create beautifully looking\r\n * smoothed line series.\r\n *\r\n * @default 1\r\n * @param value Vertical tension (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tensionY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n LineSeries.prototype.createLegendMarker = function (marker) {\r\n var _this = this;\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.disposeChildren();\r\n var line = marker.createChild(Line);\r\n line.shouldClone = false;\r\n //line.copyFrom(<any>this); coppies events which is not good\r\n $object.copyProperties(this, line, visualProperties);\r\n line.x2 = w;\r\n line.y = h / 2;\r\n line.y2 = 0.00001;\r\n line.visible = true;\r\n if (this.fillOpacity > 0) {\r\n var fill = marker.createChild(Rectangle);\r\n //fill.copyFrom(<any>this); coppies events which is not good\r\n $object.copyProperties(this, fill, visualProperties);\r\n fill.width = w;\r\n fill.height = h;\r\n fill.y = 0;\r\n fill.strokeOpacity = 0;\r\n fill.visible = true;\r\n line.y = 0;\r\n }\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = this.stroke;\r\n legendDataItem.colorOrig = this.fill;\r\n $iter.eachContinue(this.bullets.iterator(), function (bullet) {\r\n if ((bullet instanceof Bullet) && !bullet.copyToLegendMarker) {\r\n return false;\r\n }\r\n var hasLabels = false;\r\n if (bullet instanceof Container) {\r\n // do not copy bullets with labels\r\n $iter.each(bullet.children.iterator(), function (child) {\r\n if (child instanceof Label) {\r\n hasLabels = true;\r\n return true;\r\n }\r\n });\r\n }\r\n if (!hasLabels) {\r\n var clone = bullet.clone();\r\n clone.parent = marker;\r\n clone.isMeasured = true;\r\n clone.tooltipText = undefined;\r\n clone.x = w / 2;\r\n if (_this.fillOpacity > 0) {\r\n clone.y = 0;\r\n }\r\n else {\r\n clone.y = h / 2;\r\n }\r\n clone.visible = true;\r\n // otherwise will not transit to color after hiding\r\n if (!$type.hasValue(clone.fill)) {\r\n clone.fill = _this.fill;\r\n }\r\n if (!$type.hasValue(clone.stroke)) {\r\n clone.stroke = _this.stroke;\r\n }\r\n return false;\r\n }\r\n });\r\n };\r\n /**\r\n * @ignore\r\n */\r\n LineSeries.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this.segments.clear();\r\n };\r\n Object.defineProperty(LineSeries.prototype, \"autoGapCount\", {\r\n /**\r\n * @return Gap count\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"autoGapCount\");\r\n },\r\n /**\r\n * If `connect = false` and distance between two data points is bigger\r\n * than `baseInterval * autoGapCount`, a line will break automatically.\r\n *\r\n * @since 4.2.4\r\n * @param value Gap count\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"autoGapCount\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineSeries.prototype, \"smoothing\", {\r\n /**\r\n * @return Smoothing algorithm\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"smoothing\");\r\n },\r\n /**\r\n * Smoothing algorithm to be used for lines.\r\n *\r\n * Available options: `\"bezier\"` (default), `\"monotoneX\"`, and `\"monotoneY\"`.\r\n *\r\n * Monotone options are best suited for data with irregular intervals. Use `\"monotoneX\"` for\r\n * horizontal lines, and `\"monotoneY\"` vertical ones.\r\n *\r\n * NOTE: Both \"monotone\" algorithms will ignore `tensionX` and `tensionY` settings.\r\n *\r\n * @since 4.10.0\r\n * @param value Smoothing algorithm\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"smoothing\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LineSeries;\r\n}(XYSeries));\r\nexport { LineSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LineSeries\"] = LineSeries;\r\nregistry.registeredClasses[\"LineSeriesDataItem\"] = LineSeriesDataItem;\r\n","/**\r\n * Radar series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { LineSeries, LineSeriesDataItem } from \"./LineSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n//import { AxisRendererCircular } from \"../axes/AxisRendererCircular\";\r\n//import { Sprite } from \"../../core/Sprite\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[RadarSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar RadarSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(RadarSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadarSeriesDataItem\";\r\n _this.setLocation(\"dateX\", 0, 0);\r\n _this.setLocation(\"dateY\", 0, 0);\r\n _this.setLocation(\"categoryX\", 0, 0);\r\n _this.setLocation(\"categoryY\", 0, 0);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return RadarSeriesDataItem;\r\n}(LineSeriesDataItem));\r\nexport { RadarSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a radar graph.\r\n *\r\n * @see {@link IRadarSeriesEvents} for a list of available Events\r\n * @see {@link IRadarSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar RadarSeries = /** @class */ (function (_super) {\r\n __extends(RadarSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadarSeries\";\r\n _this.connectEnds = true;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarSeries.prototype.validate = function () {\r\n // so that radius would be updated\r\n if (this.chart.invalid) {\r\n this.chart.validate();\r\n }\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n RadarSeries.prototype.createDataItem = function () {\r\n return new RadarSeriesDataItem();\r\n };\r\n /**\r\n * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n *\r\n * @param dataItem Data item\r\n * @param xKey Name of X data field\r\n * @param yKey Name of Y data field\r\n * @param locationX X location\r\n * @param locationY Y location\r\n * @param stackKeyX ?\r\n * @param stackKeyY ?\r\n * @returns Coordinates\r\n */\r\n RadarSeries.prototype.getPoint = function (dataItem, xKey, yKey, locationX, locationY, stackKeyX, stackKeyY) {\r\n if (!stackKeyX) {\r\n stackKeyX = \"valueX\";\r\n }\r\n if (!stackKeyY) {\r\n stackKeyY = \"valueY\";\r\n }\r\n var x = this.yAxis.getX(dataItem, yKey, locationY, stackKeyY);\r\n var y = this.yAxis.getY(dataItem, yKey, locationY, stackKeyY);\r\n var radius = $math.getDistance({ x: x, y: y });\r\n // hack to be able to determine angle later\r\n if (radius == 0) {\r\n radius = 0.00001;\r\n }\r\n var angle = this.xAxis.getAngle(dataItem, xKey, locationX, stackKeyX);\r\n var startAngle = this.chart.startAngle;\r\n var endAngle = this.chart.endAngle;\r\n //\t\tangle = $math.fitToRange(angle, startAngle, endAngle);\r\n if (angle < startAngle || angle > endAngle) {\r\n return undefined;\r\n }\r\n else {\r\n return { x: radius * $math.cos(angle), y: radius * $math.sin(angle) };\r\n }\r\n };\r\n /**\r\n * [addPoints description]\r\n *\r\n * @todo Description\r\n * @param points [description]\r\n * @param dataItem [description]\r\n * @param xField [description]\r\n * @param yField [description]\r\n * @param backwards [description]\r\n */\r\n RadarSeries.prototype.addPoints = function (points, dataItem, xField, yField, backwards) {\r\n var point = this.getPoint(dataItem, xField, yField, dataItem.locations[xField], dataItem.locations[yField]);\r\n if (point) {\r\n points.push(point);\r\n }\r\n };\r\n /**\r\n * Returns an SVG path to be used as a mask for the series.\r\n *\r\n * @return SVG path\r\n */\r\n RadarSeries.prototype.getMaskPath = function () {\r\n var renderer = this.yAxis.renderer;\r\n return $path.arc(renderer.startAngle, renderer.endAngle - renderer.startAngle, renderer.pixelRadius, renderer.pixelInnerRadius);\r\n };\r\n /**\r\n * [drawSegment description]\r\n *\r\n * @todo Description\r\n * @param segment [description]\r\n * @param points [description]\r\n * @param closePoints [description]\r\n */\r\n RadarSeries.prototype.drawSegment = function (segment, points, closePoints) {\r\n var axis = this.yAxis;\r\n var renderer = axis.renderer;\r\n if (this.connectEnds && Math.abs(renderer.endAngle - renderer.startAngle) == 360) {\r\n // adds one point to the beginning of closePoints array, if needed\r\n if (this.dataFields[this._xOpenField] ||\r\n this.dataFields[this._yOpenField] ||\r\n this.stacked) {\r\n points.push(points[0]);\r\n if (closePoints.length > 0) {\r\n closePoints.unshift(closePoints[closePoints.length - 1]);\r\n }\r\n }\r\n }\r\n _super.prototype.drawSegment.call(this, segment, points, closePoints);\r\n };\r\n Object.defineProperty(RadarSeries.prototype, \"connectEnds\", {\r\n /**\r\n * @return Connect?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"connectEnds\");\r\n },\r\n /**\r\n * Should the last and and first data points be connected, forming a complete\r\n * closed circle?\r\n *\r\n * @default true\r\n * @param value Connect?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"connectEnds\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n RadarSeries.prototype.positionBulletReal = function (bullet, positionX, positionY) {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (positionX < xAxis.start || positionX > xAxis.end || positionY < yAxis.start || positionY > yAxis.end) {\r\n bullet.visible = false;\r\n }\r\n bullet.moveTo(this.xAxis.renderer.positionToPoint(positionX, positionY));\r\n };\r\n RadarSeries.prototype.setXAxis = function (axis) {\r\n _super.prototype.setXAxis.call(this, axis);\r\n this.updateRendererRefs();\r\n };\r\n RadarSeries.prototype.setYAxis = function (axis) {\r\n _super.prototype.setYAxis.call(this, axis);\r\n this.updateRendererRefs();\r\n };\r\n RadarSeries.prototype.updateRendererRefs = function () {\r\n var rendererX = this.xAxis.renderer;\r\n var rendererY = this.yAxis.renderer;\r\n rendererX.axisRendererY = rendererY;\r\n };\r\n return RadarSeries;\r\n}(LineSeries));\r\nexport { RadarSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarSeries\"] = RadarSeries;\r\nregistry.registeredClasses[\"RadarSeriesDataItem\"] = RadarSeriesDataItem;\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Provides fill element functionality for circular Axes.\r\n *\r\n * @see {@link IAxisFillCircularEvents} for a list of available events\r\n * @see {@link IAxisFillCircularAdapters} for a list of available Adapters\r\n * @todo Needs description\r\n */\r\nvar AxisFillCircular = /** @class */ (function (_super) {\r\n __extends(AxisFillCircular, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Axis\r\n */\r\n function AxisFillCircular(axis) {\r\n var _this = _super.call(this, axis) || this;\r\n _this.className = \"AxisFillCircular\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.radius = percent(100);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the fill element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisFillCircular.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.__disabled || this.disabled) {\r\n return;\r\n }\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n this.fillPath = renderer.getPositionRangePath(this.startPosition, this.endPosition, this.radius, $type.hasValue(this.innerRadius) ? this.innerRadius : renderer.innerRadius, this.cornerRadius);\r\n this.path = this.fillPath;\r\n }\r\n };\r\n Object.defineProperty(AxisFillCircular.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the fill. Relative ([[Percent]]) or absolute (pixels).\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisFillCircular.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the fill. Relative ([[Percent]]) or absolute (pixels).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisFillCircular.prototype, \"cornerRadius\", {\r\n /**\r\n * @return Corner radius (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadius\");\r\n },\r\n /**\r\n * Corner radius for the fill. In pixels.\r\n *\r\n * @param value Corner radius (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cornerRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisFillCircular;\r\n}(AxisFill));\r\nexport { AxisFillCircular };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisFillCircular\"] = AxisFillCircular;\r\n","/**\r\n * A module defining functionality for circular axis grid elements.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Grid } from \"./Grid\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a circular grid element for circular-type axis.\r\n *\r\n * @see {@link IGridCircularEvents} for a list of available events\r\n * @see {@link IGridCircularAdapters} for a list of available Adapters\r\n * @todo Review: container is better, as we'll be able to attach something to the GridCircular, also with 3d charts we might need some additional elements\r\n */\r\nvar GridCircular = /** @class */ (function (_super) {\r\n __extends(GridCircular, _super);\r\n /**\r\n * Constructor\r\n */\r\n function GridCircular() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"GridCircular\";\r\n _this.pixelPerfect = false;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(GridCircular.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the circular grid. (absolute or relative)\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GridCircular.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the circular grid. (absolute or relative)\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return GridCircular;\r\n}(Grid));\r\nexport { GridCircular };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"GridCircular\"] = GridCircular;\r\n","/**\r\n * Axis Label module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { Percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Use to create labels on circular axis.\r\n *\r\n * @see {@link IAxisLabelCircularEvents} for a list of available events\r\n * @see {@link IAxisLabelCircularAdapters} for a list of available Adapters\r\n */\r\nvar AxisLabelCircular = /** @class */ (function (_super) {\r\n __extends(AxisLabelCircular, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisLabelCircular() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n *\r\n * @ignore\r\n */\r\n _this.fdx = 0;\r\n /**\r\n *\r\n * @ignore\r\n */\r\n _this.fdy = 0;\r\n _this.className = \"AxisLabelCircular\";\r\n _this.padding(0, 0, 0, 0);\r\n _this.location = 0.5;\r\n _this.locationOnPath = 0.5;\r\n _this.radius = 0;\r\n _this.isMeasured = false;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisLabelCircular.prototype, \"relativeRotation\", {\r\n /**\r\n * @return Rotation angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"relativeRotation\");\r\n },\r\n /**\r\n * Relative rotation of the label.\r\n *\r\n * It is an angle to circle. In case 90, labels will be positioned like rays\r\n * of light, if 0 - positioned along the circle.\r\n *\r\n * @param value Rotation angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"relativeRotation\", value, true);\r\n if (!$type.hasValue(value)) {\r\n this.rotation = undefined;\r\n var dataItem = this.dataItem;\r\n if (dataItem && dataItem.component) {\r\n dataItem.component.invalidateDataItems();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisLabelCircular.prototype, \"radius\", {\r\n /**\r\n * @return Distance (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Distance from axis circle to label in pixels or percent.\r\n *\r\n * @param value Distance (px or percent)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisLabelCircular.prototype, \"bent\", {\r\n /**\r\n * @return Bent?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"bent\");\r\n },\r\n /**\r\n * Specifies if label should be bent along the circle.\r\n *\r\n * IMPORTANT: Use this with caution, since it is quite CPU-greedy.\r\n *\r\n * @since 4.1.2\r\n * @default false\r\n * @param value Bent?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"bent\", value, true);\r\n this.setPropertyValue(\"wrap\", false);\r\n this.setPropertyValue(\"horizontalCenter\", \"none\");\r\n this.setPropertyValue(\"verticalCenter\", \"none\");\r\n if (value) {\r\n this.setPropertyValue(\"dx\", 0);\r\n this.setPropertyValue(\"dy\", 0);\r\n this.setPropertyValue(\"x\", 0);\r\n this.setPropertyValue(\"y\", 0);\r\n this.setPropertyValue(\"rotation\", 0);\r\n //this.setPropertyValue(\"relativeRotation\", undefined);\r\n this.fdx = 0;\r\n this.fdy = 0;\r\n this.textAlign = \"middle\";\r\n }\r\n else {\r\n if (this.textPathElement) {\r\n this.textPathElement.dispose();\r\n this.textPathElement = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns label radius in pixels.\r\n *\r\n * @param axisRadius Radius\r\n * @return Pixel radius\r\n */\r\n AxisLabelCircular.prototype.pixelRadius = function (axisRadius) {\r\n var sign = 1;\r\n if (this.inside) {\r\n sign = -1;\r\n }\r\n return $utils.relativeToValue(this.radius, axisRadius) * sign;\r\n };\r\n /**\r\n * Returns label horizontal radius in pixels.\r\n *\r\n * @param axisRadius Radius\r\n * @param axisRadiusY Vertical radius\r\n * @return Radius\r\n */\r\n AxisLabelCircular.prototype.pixelRadiusY = function (axisRadius, axisRadiusY) {\r\n var sign = 1;\r\n if (this.inside) {\r\n sign = -1;\r\n }\r\n var radius = this.radius;\r\n if ($type.isNumber(radius)) {\r\n radius *= axisRadiusY / axisRadius;\r\n return $utils.relativeToValue(radius, axisRadius) * sign;\r\n }\r\n else {\r\n return $utils.relativeToValue(radius, axisRadiusY) * sign;\r\n }\r\n };\r\n /**\r\n * [fixPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param point Label affixation point\r\n * @param axisRadius Distance from point (px)\r\n */\r\n AxisLabelCircular.prototype.fixPosition = function (angle, axisRadius, axisRadiusY, dx, dy) {\r\n if (!$type.isNumber(axisRadiusY)) {\r\n axisRadiusY = axisRadius;\r\n }\r\n if (!$type.isNumber(dx)) {\r\n dx = 0;\r\n }\r\n if (!$type.isNumber(dy)) {\r\n dy = 0;\r\n }\r\n var point = { x: axisRadius * $math.cos(angle), y: axisRadiusY * $math.sin(angle) };\r\n if (this.invalid) {\r\n this.validate(); //@todo\" check if we need this\r\n }\r\n var isNegative = false;\r\n var realRadius = this.radius;\r\n if (realRadius instanceof Percent && realRadius.value < 0) {\r\n isNegative = true;\r\n }\r\n else if (realRadius < 0) {\r\n isNegative = true;\r\n }\r\n var relativeRotation = this.relativeRotation;\r\n var labelRadius = this.pixelRadius(axisRadius);\r\n if (this.bent) {\r\n var point_1 = { x: (axisRadius + labelRadius) * $math.cos(angle + 180), y: (axisRadiusY + labelRadius * axisRadiusY / axisRadius) * $math.sin(angle + 180) };\r\n this.path = $path.moveTo(point_1) + $path.arcTo(angle + 180, 360, axisRadius + labelRadius, axisRadiusY + labelRadius * axisRadiusY / axisRadius);\r\n if (this.textPathElement) {\r\n this.textPathElement.attr({ \"startOffset\": (this.locationOnPath * 100) + \"%\" });\r\n }\r\n return;\r\n }\r\n // WHEN ROTATED\r\n if ($type.isNumber(relativeRotation)) {\r\n this.horizontalCenter = \"none\";\r\n this.verticalCenter = \"none\";\r\n angle = $math.fitAngleToRange(angle, -180, 180);\r\n var pixelWidth = this.bbox.width;\r\n var pixelHeight = this.bbox.height;\r\n var pixelPaddingBottom = this.pixelPaddingBottom;\r\n var pixelPaddingTop = this.pixelPaddingTop;\r\n var pixelPaddingLeft = this.pixelPaddingLeft;\r\n var pixelPaddingRight = this.pixelPaddingRight;\r\n if (angle > 90 || angle < -90) {\r\n if (relativeRotation == -90) {\r\n relativeRotation = 90;\r\n pixelWidth = 0;\r\n }\r\n }\r\n else {\r\n if (relativeRotation == -90) {\r\n pixelHeight = -pixelHeight;\r\n }\r\n if (relativeRotation == 90) {\r\n relativeRotation = -90;\r\n pixelWidth = -pixelPaddingLeft - pixelPaddingRight;\r\n pixelHeight = -pixelHeight - pixelPaddingTop - pixelPaddingBottom;\r\n }\r\n }\r\n this.rotation = relativeRotation + angle + 90;\r\n var dH = $math.sin(relativeRotation) / 2;\r\n var dW = $math.cos(relativeRotation) / 2;\r\n var rotation = this.rotation;\r\n this.dx = pixelHeight * dH * $math.sin(rotation) - pixelWidth * dW * $math.cos(rotation);\r\n this.dy = -pixelHeight * dH * $math.cos(rotation) - pixelWidth * dW * $math.sin(rotation);\r\n if (!this.inside) {\r\n labelRadius += (pixelHeight + pixelPaddingBottom + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelWidth + pixelPaddingLeft + pixelPaddingRight) * $math.sin(relativeRotation);\r\n }\r\n else {\r\n if (angle > 90 || angle < -90) {\r\n labelRadius -= (pixelPaddingBottom + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelPaddingLeft + pixelPaddingRight) * $math.sin(relativeRotation);\r\n }\r\n else {\r\n labelRadius += (pixelPaddingBottom + this.bbox.height + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelPaddingLeft + pixelPaddingRight + this.bbox.width) * $math.sin(relativeRotation);\r\n }\r\n }\r\n point.x += $math.cos(angle) * labelRadius;\r\n point.y += $math.sin(angle) * labelRadius * axisRadiusY / axisRadius;\r\n }\r\n else {\r\n // END OF ROTATED\r\n this.horizontalCenter = \"middle\";\r\n this.verticalCenter = \"middle\";\r\n if (isNegative) {\r\n this.dx = 0;\r\n this.dy = 0;\r\n point.x = (axisRadius + labelRadius) * $math.cos(angle);\r\n point.y = (axisRadiusY + labelRadius * axisRadiusY / axisRadius) * $math.sin(angle);\r\n }\r\n else {\r\n // we don't use valign for labels because then they would jump while animating. instead we modify dy depending on a y position\r\n // this math makes dy to be 1 at the top of the circle, 0.5 at the middle and 1 at the bottom\r\n // @todo with this math doesn't work well with inside = true\r\n this.dy = this._measuredHeight / 2 * $math.sin(angle); //(1 - (point.y + axisRadiusY) / (2 * axisRadiusY));\r\n // simmilar with dx\r\n this.dx = this._measuredWidth / 2 * $math.cos(angle); //(1 - (point.x + axisRadius) / (2 * axisRadius));\r\n point.x += $math.cos(angle) * labelRadius;\r\n point.y += $math.sin(angle) * labelRadius * axisRadiusY / axisRadius;\r\n }\r\n }\r\n point.x += dx;\r\n point.y += dy;\r\n this.fdx = this.dx;\r\n this.fdy = this.dy;\r\n this.moveTo(point);\r\n };\r\n return AxisLabelCircular;\r\n}(AxisLabel));\r\nexport { AxisLabelCircular };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisLabelCircular\"] = AxisLabelCircular;\r\n","/**\r\n * Module, defining Axis Renderer for circular axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { AxisFillCircular } from \"./AxisFillCircular\";\r\nimport { GridCircular } from \"./GridCircular\";\r\nimport { AxisLabelCircular } from \"./AxisLabelCircular\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for circular axis.\r\n */\r\nvar AxisRendererCircular = /** @class */ (function (_super) {\r\n __extends(AxisRendererCircular, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererCircular() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * @ignore\r\n */\r\n _this.pixelRadiusReal = 0;\r\n // axis.layout = \"none\"; // does not trigger redraw when size changes\r\n _this.layout = \"none\";\r\n _this.className = \"AxisRendererCircular\";\r\n _this.isMeasured = false;\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.useChartAngles = true;\r\n _this.radius = percent(100);\r\n _this.isMeasured = false;\r\n _this.grid.template.location = 0;\r\n _this.labels.template.location = 0;\r\n _this.labels.template.radius = 15;\r\n _this.ticks.template.location = 0;\r\n _this.ticks.template.pixelPerfect = false;\r\n _this.tooltipLocation = 0;\r\n _this.line.strokeOpacity = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererCircular.prototype.setAxis = function (axis) {\r\n var _this = this;\r\n _super.prototype.setAxis.call(this, axis);\r\n axis.isMeasured = false;\r\n // modify x and y so that tooltip would always be on circle\r\n var tooltip = axis.tooltip;\r\n tooltip.adapter.add(\"dx\", function (x, target) {\r\n var point = $utils.svgPointToSprite({ x: target.pixelX, y: target.pixelY }, _this);\r\n return _this.pixelRadius * Math.cos(Math.atan2(point.y, point.x)) - point.x;\r\n });\r\n tooltip.adapter.add(\"dy\", function (y, target) {\r\n var point = $utils.svgPointToSprite({ x: target.pixelX, y: target.pixelY }, _this);\r\n return _this.pixelRadius * Math.sin(Math.atan2(point.y, point.x)) - point.y;\r\n });\r\n };\r\n /**\r\n * Validates Axis renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererCircular.prototype.validate = function () {\r\n // so that radius would be updated\r\n if (this.chart && this.chart.invalid) {\r\n this.chart.validate();\r\n }\r\n _super.prototype.validate.call(this);\r\n };\r\n Object.defineProperty(AxisRendererCircular.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n return 2 * Math.PI * this.pixelRadius;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"radius\", value, false, false, 10, false)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"pixelRadius\", {\r\n /**\r\n * Outer radius in pixels.\r\n *\r\n * @return Outer radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.radius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n var chart = this.chart;\r\n var innerRadius = this.getPropertyValue(\"innerRadius\");\r\n if (chart) {\r\n if (!$type.hasValue(innerRadius)) {\r\n innerRadius = chart.innerRadius;\r\n if (innerRadius instanceof Percent && chart) {\r\n innerRadius = percent(innerRadius.value * chart.innerRadiusModifyer * 100);\r\n }\r\n }\r\n else {\r\n if (innerRadius instanceof Percent && chart) {\r\n var mr = chart.mr;\r\n var value = innerRadius.value;\r\n value = Math.max(mr * value, mr - Math.min(chart.plotContainer.innerHeight, chart.plotContainer.innerWidth)) / mr;\r\n innerRadius = percent(value * 100);\r\n }\r\n }\r\n return innerRadius;\r\n }\r\n },\r\n /**\r\n * Inner radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"innerRadius\", value, false, false, 10, false)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"useChartAngles\", {\r\n /**\r\n * @return Use chart angles\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"useChartAngles\");\r\n },\r\n /**\r\n * Specifies if axis should use its own `startAngle` and `endAngle` or\r\n * inherit them from relative properties from chart.\r\n *\r\n * @default false\r\n * @param value Use chart's angles\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"useChartAngles\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * Inner radius in pixels.\r\n *\r\n * @return Inner radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.innerRadius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererCircular.prototype.positionToPoint = function (position, position2) {\r\n if (!$type.isNumber(position2)) {\r\n position2 = 1;\r\n }\r\n var coordinate = this.positionToCoordinate(position);\r\n var angle = this.startAngle + (this.endAngle - this.startAngle) * coordinate / this.axisLength;\r\n var radius = this.pixelRadius;\r\n var innerRadius = this.pixelInnerRadius;\r\n if (this.axisRendererY) {\r\n var realRadius = $math.fitToRange(this.axisRendererY.positionToCoordinate(position2), 0, Infinity);\r\n if (realRadius == 0) {\r\n realRadius = 0.000001;\r\n }\r\n var point = { x: realRadius * $math.cos(angle), y: realRadius * $math.sin(angle) };\r\n return point;\r\n }\r\n return { x: $math.cos(angle) * innerRadius + (radius - innerRadius) * $math.cos(angle) * position2, y: $math.sin(angle) * innerRadius + (radius - innerRadius) * $math.sin(angle) * position2 };\r\n };\r\n /**\r\n * Converts relative position (0-1) on axis to angle in degrees (0-360).\r\n *\r\n * @param position Position (0-1)\r\n * @return Angle (0-360)\r\n */\r\n AxisRendererCircular.prototype.positionToAngle = function (position) {\r\n var axis = this.axis;\r\n var arc = (this.endAngle - this.startAngle) / (axis.end - axis.start);\r\n var angle;\r\n if (axis.renderer.inversed) {\r\n angle = this.startAngle + (axis.end - position) * arc;\r\n }\r\n else {\r\n angle = this.startAngle + (position - axis.start) * arc;\r\n }\r\n return $math.round(angle, 3);\r\n };\r\n /**\r\n * Converts angle on axis to relative position(0-1).\r\n *\r\n * @param angle Angle in degrees\r\n * @return Position (0-1)\r\n */\r\n AxisRendererCircular.prototype.angleToPosition = function (angle) {\r\n var axis = this.axis;\r\n var arc = (this.endAngle - this.startAngle) / (axis.end - axis.start);\r\n var position;\r\n if (axis.renderer.inversed) {\r\n position = axis.end - (angle - this.startAngle) / arc;\r\n }\r\n else {\r\n position = (angle - this.startAngle) / arc + axis.start;\r\n }\r\n return $math.round(position, 5);\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererCircular.prototype.updateAxisLine = function () {\r\n var radius = this.pixelRadius;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var arc = $math.min(360, endAngle - startAngle);\r\n this.line.path = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, arc, radius, radius);\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererCircular.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n if ($type.isNumber(point.x) && $type.isNumber(point.y) && grid.element) {\r\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\r\n var radius = $utils.relativeRadiusToValue($type.hasValue(grid.radius) ? grid.radius : percent(100), this.pixelRadius);\r\n var gridInnerRadius = $utils.relativeRadiusToValue(grid.innerRadius, this.pixelRadius);\r\n grid.zIndex = 0;\r\n var innerRadius = $utils.relativeRadiusToValue($type.isNumber(gridInnerRadius) ? gridInnerRadius : this.innerRadius, this.pixelRadiusReal, true);\r\n if (!$type.isNumber(innerRadius)) {\r\n innerRadius = 0;\r\n }\r\n grid.path = $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) }) + $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererCircular.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n if (tick.element) {\r\n var radius = this.pixelRadius;\r\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\r\n var tickLength = tick.length;\r\n if (tick.inside) {\r\n tickLength = -tickLength;\r\n }\r\n tick.zIndex = 1;\r\n tick.path = $path.moveTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) }) + $path.lineTo({ x: (radius + tickLength) * $math.cos(angle), y: (radius + tickLength) * $math.sin(angle) });\r\n }\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererCircular.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n var radius = this.pixelRadius;\r\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\r\n point = { x: radius * $math.cos(angle), y: radius * $math.sin(angle) };\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererCircular.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n label.fixPosition(this.positionToAngle(position), this.pixelRadius);\r\n label.zIndex = 2;\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point coordinates\r\n * @return Fits?\r\n */\r\n AxisRendererCircular.prototype.fitsToBounds = function (point) {\r\n return true;\r\n };\r\n Object.defineProperty(AxisRendererCircular.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Start angle of the axis in degrees (0-360).\r\n *\r\n * @param value Start angle\r\n */\r\n set: function (value) {\r\n // do not normalize angel here!\r\n if (this.setPropertyValue(\"startAngle\", value)) {\r\n this.invalidateAxisItems();\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * End angle of the axis in degrees (0-360).\r\n *\r\n * @param value End angle\r\n */\r\n set: function (value) {\r\n // do not normalize angel here!\r\n if (this.setPropertyValue(\"endAngle\", value)) {\r\n this.invalidateAxisItems();\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererCircular.prototype.getPositionRangePath = function (startPosition, endPosition, radius, innerRadius, cornerRadius) {\r\n var path = \"\";\r\n if ($type.isNumber(startPosition) && $type.isNumber(endPosition)) {\r\n if (!$type.hasValue(radius)) {\r\n radius = this.radius;\r\n }\r\n startPosition = $math.max(startPosition, this.axis.start);\r\n endPosition = $math.min(endPosition, this.axis.end);\r\n if (endPosition < startPosition) {\r\n endPosition = startPosition;\r\n }\r\n var pixelRadius = $utils.relativeRadiusToValue(radius, this.pixelRadius);\r\n var pixelInnerRadius = $utils.relativeRadiusToValue(innerRadius, this.pixelRadius, true);\r\n var startAngle = this.positionToAngle(startPosition);\r\n var endAngle = this.positionToAngle(endPosition);\r\n var arc = endAngle - startAngle;\r\n path = $path.arc(startAngle, arc, pixelRadius, pixelInnerRadius, pixelRadius, cornerRadius);\r\n }\r\n return path;\r\n };\r\n /**\r\n * Returns a new grid element, suitable for this Axis Renderer type.\r\n *\r\n * @return Grid element\r\n */\r\n AxisRendererCircular.prototype.createGrid = function () {\r\n return new GridCircular();\r\n };\r\n /**\r\n * Returns a new fill element, suitable for this Axis Renderer type.\r\n *\r\n * @return Fill element\r\n */\r\n AxisRendererCircular.prototype.createFill = function (axis) {\r\n return new AxisFillCircular(axis);\r\n };\r\n /**\r\n * Returns a new label element, suitable for this Axis Renderer type.\r\n *\r\n * @return Label element\r\n */\r\n AxisRendererCircular.prototype.createLabel = function () {\r\n return new AxisLabelCircular();\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererCircular.prototype.pointToPosition = function (point) {\r\n var angle = $math.fitAngleToRange($math.getAngle(point), this.startAngle, this.endAngle);\r\n return this.coordinateToPosition((angle - this.startAngle) / 360 * this.axisLength);\r\n };\r\n return AxisRendererCircular;\r\n}(AxisRenderer));\r\nexport { AxisRendererCircular };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRendererCircular\"] = AxisRendererCircular;\r\n","/**\r\n * Module, defining Axis Renderer for radial axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRendererY } from \"./AxisRendererY\";\r\nimport { CategoryAxis } from \"./CategoryAxis\";\r\nimport { WavedCircle } from \"../../core/elements/WavedCircle\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { Percent, percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for radial axis.\r\n */\r\nvar AxisRendererRadial = /** @class */ (function (_super) {\r\n __extends(AxisRendererRadial, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererRadial() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n /**\r\n * @ignore\r\n */\r\n _this.pixelRadiusReal = 0;\r\n _this.className = \"AxisRendererRadial\";\r\n _this.isMeasured = false;\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.minGridDistance = 30;\r\n _this.gridType = \"circles\";\r\n _this.axisAngle = -90;\r\n _this.isMeasured = false;\r\n _this.layout = \"none\";\r\n _this.radius = percent(100);\r\n _this.line.strokeOpacity = 0;\r\n _this.labels.template.horizontalCenter = \"middle\";\r\n _this._disposers.push(_this._chart);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Validates Axis renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.validate = function () {\r\n // so that radius would be updated\r\n if (this.chart && this.chart.invalid) {\r\n this.chart.validate();\r\n }\r\n _super.prototype.validate.call(this);\r\n };\r\n Object.defineProperty(AxisRendererRadial.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n return this.pixelRadius - this.pixelInnerRadius;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, false, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"pixelRadius\", {\r\n /**\r\n * Outer radius in pixels.\r\n *\r\n * @return Outer radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.radius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n var chart = this.chart;\r\n var innerRadius = this.getPropertyValue(\"innerRadius\");\r\n if (chart) {\r\n if (!$type.hasValue(innerRadius)) {\r\n innerRadius = chart.innerRadius;\r\n if (innerRadius instanceof Percent && chart) {\r\n innerRadius = percent(innerRadius.value * chart.innerRadiusModifyer * 100);\r\n }\r\n }\r\n else {\r\n if (innerRadius instanceof Percent && chart) {\r\n var mr = chart.mr;\r\n var value = innerRadius.value;\r\n value = Math.max(mr * value, mr - Math.min(chart.plotContainer.innerHeight, chart.plotContainer.innerWidth)) / mr;\r\n innerRadius = percent(value * 100);\r\n }\r\n }\r\n }\r\n return innerRadius;\r\n },\r\n /**\r\n * Inner radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, false, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * Inner radius in pixels.\r\n *\r\n * @return Inner radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.innerRadius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererRadial.prototype.positionToPoint = function (position, position2) {\r\n var radius = $math.fitToRange(this.positionToCoordinate(position), 0, Infinity);\r\n return { x: radius * $math.cos(this.axisAngle), y: radius * $math.sin(this.axisAngle) };\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.updateAxisLine = function () {\r\n this.line.path = $path.moveTo({ x: this.pixelInnerRadius * $math.cos(this.axisAngle), y: this.pixelInnerRadius * $math.sin(this.axisAngle) }) + $path.lineTo({ x: this.pixelRadius * $math.cos(this.axisAngle), y: this.pixelRadius * $math.sin(this.axisAngle) });\r\n var title = this.axis.title;\r\n title.valign = \"none\";\r\n title.horizontalCenter = \"middle\";\r\n title.verticalCenter = \"bottom\";\r\n title.y = -this.axisLength / 2;\r\n var rotation = 90;\r\n if (this.opposite) {\r\n if (!this.inside) {\r\n rotation = -90;\r\n }\r\n }\r\n else {\r\n if (this.inside) {\r\n rotation = -90;\r\n }\r\n }\r\n title.rotation = rotation;\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererRadial.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n var path;\r\n var radius = $math.getDistance(point);\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var chart = this.chart;\r\n if ($type.isNumber(radius) && grid.element && chart) {\r\n var xAxis = chart.xAxes.getIndex(0);\r\n var count = 0;\r\n var series = chart.series.getIndex(0);\r\n if (series) {\r\n count = series.dataItems.length;\r\n }\r\n // polygons are only possible if x axis is present\r\n // @todo: review this\r\n if (this.gridType == \"polygons\" && count > 0 && series && xAxis && xAxis instanceof CategoryAxis) {\r\n var gridLocation = xAxis.renderer.grid.template.location;\r\n var angle = xAxis.getAngle(series.dataItems.getIndex(0), \"categoryX\", gridLocation);\r\n path = $path.moveTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n for (var i = 1; i < count; i++) {\r\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n angle = xAxis.getAngle(series.dataItems.getIndex(count - 1), \"categoryX\", xAxis.renderer.cellEndLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n else {\r\n path = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, endAngle - startAngle, radius, radius);\r\n }\r\n grid.path = path;\r\n }\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererRadial.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n this.positionItem(label, point);\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.updateBaseGridElement = function () {\r\n // @todo? zero grid for radar chart, is it needed?\r\n };\r\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point coordinates\r\n * @return Fits?\r\n */\r\n AxisRendererRadial.prototype.fitsToBounds = function (point) {\r\n return true;\r\n };\r\n Object.defineProperty(AxisRendererRadial.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Start angle of the axis in degrees. (0-360)\r\n *\r\n * @param value Start angle\r\n */\r\n set: function (value) {\r\n // do not normalize angle here!\r\n if (this.setPropertyValue(\"startAngle\", value)) {\r\n this.invalidateAxisItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * End angle of the axis in degrees. (0-360)\r\n *\r\n * @param value End angle\r\n */\r\n set: function (value) {\r\n // do not normalize angel here!\r\n if (this.setPropertyValue(\"endAngle\", value)) {\r\n this.invalidateAxisItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"axisAngle\", {\r\n /**\r\n * @return Axis angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"axisAngle\");\r\n //return $math.fitToRange(this.getPropertyValue(\"axisAngle\"), this.startAngle, this.endAngle); // no good, as less flexible\r\n },\r\n /**\r\n * Angle of the radial axis in degrees. (0-360)\r\n *\r\n * @param value Axis angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"axisAngle\", $math.normalizeAngle(value));\r\n this.invalidateAxisItems();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"gridType\", {\r\n /**\r\n * Grid type\r\n */\r\n get: function () {\r\n var axis = this.chart.xAxes.getIndex(0);\r\n if (axis instanceof CategoryAxis) {\r\n return this.getPropertyValue(\"gridType\");\r\n }\r\n else {\r\n return \"circles\";\r\n }\r\n },\r\n // polygons grid type is only possible under these conditions: xAxis is available and it is CategoryAxis, also at least one series should be added to a chart\r\n /**\r\n * Grid type for radial axis.\r\n *\r\n * A grid on radia axis can either be perfect circles (\"circles\"), or\r\n * straight lines (\"polygons\").\r\n *\r\n * @default \"circles\"\r\n * @param value Grid type\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"gridType\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererRadial.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n var pixelInnerRadius = this.pixelInnerRadius;\r\n var pixelRadius = this.axisLength + pixelInnerRadius;\r\n var innerRadius = $math.fitToRange(this.positionToCoordinate(startPosition), pixelInnerRadius, pixelRadius);\r\n var radius = $math.fitToRange(this.positionToCoordinate(endPosition), pixelInnerRadius, pixelRadius);\r\n //let angleCount: number = this.angleCount;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var arc = endAngle - startAngle;\r\n var path;\r\n var chart = this.chart;\r\n var xAxis = chart.xAxes.getIndex(0);\r\n var series = chart.series.getIndex(0);\r\n var count = 0;\r\n if (series) {\r\n count = series.dataItems.length;\r\n }\r\n // polygons are only possible if x axis is present\r\n // @todo: review this\r\n if (this.gridType == \"polygons\" && count > 0 && series && xAxis && xAxis instanceof CategoryAxis) {\r\n var gridLocation = xAxis.renderer.grid.template.location;\r\n var angle = xAxis.getAngle(series.dataItems.getIndex(0), \"categoryX\", gridLocation);\r\n path = $path.moveTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n for (var i = 1; i < count; i++) {\r\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n angle = xAxis.getAngle(series.dataItems.getIndex(count - 1), \"categoryX\", xAxis.renderer.cellEndLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n path += $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) });\r\n for (var i = count - 1; i >= 0; i--) {\r\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\r\n path += $path.lineTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) });\r\n }\r\n }\r\n else {\r\n path = $path.arc(startAngle, arc, radius, innerRadius);\r\n }\r\n return path;\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRendererRadial.prototype.updateBreakElement = function (axisBreak) {\r\n // @todo: someday we might need axis break when gridType is polygons\r\n var startLine = axisBreak.startLine;\r\n var endLine = axisBreak.endLine;\r\n var fillShape = axisBreak.fillShape;\r\n var startPoint = axisBreak.startPoint;\r\n var endPoint = axisBreak.endPoint;\r\n startLine.radius = Math.abs(startPoint.y);\r\n endLine.radius = Math.abs(endPoint.y);\r\n fillShape.radius = Math.abs(endPoint.y);\r\n fillShape.innerRadius = Math.abs(startPoint.y);\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRendererRadial.prototype.createBreakSprites = function (axisBreak) {\r\n axisBreak.startLine = new WavedCircle();\r\n axisBreak.endLine = new WavedCircle();\r\n axisBreak.fillShape = new WavedCircle();\r\n };\r\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.updateTooltip = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var bigNum = 4000;\r\n var bbx = -4000;\r\n var bby = -4000;\r\n var bbw = bigNum * 2;\r\n var bbh = bigNum * 2;\r\n var axisAngle = this.axisAngle;\r\n if (axisAngle < 0) {\r\n axisAngle += 360;\r\n }\r\n var tooltipOrientation = \"vertical\";\r\n if ((axisAngle > 45 && axisAngle < 135) || (axisAngle > 225 && axisAngle < 315)) {\r\n tooltipOrientation = \"horizontal\";\r\n }\r\n this.axis.updateTooltip(tooltipOrientation, { x: bbx, y: bby, width: bbw, height: bbh });\r\n }\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Position\r\n */\r\n AxisRendererRadial.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n if (tick.element) {\r\n var angle = $math.normalizeAngle(this.axisAngle + 90);\r\n if (angle / 90 != Math.round(angle / 90)) {\r\n tick.pixelPerfect = false;\r\n }\r\n else {\r\n tick.pixelPerfect = true;\r\n }\r\n var tickLength = -tick.length;\r\n if (tick.inside) {\r\n tickLength *= -1;\r\n }\r\n tick.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: tickLength * $math.cos(angle), y: tickLength * $math.sin(angle) });\r\n }\r\n this.positionItem(tick, point);\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererRadial.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n /**\r\n * Converts a position on the axis to a coordinate in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n AxisRendererRadial.prototype.positionToCoordinate = function (position) {\r\n var coordinate;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n var innerRadius = this.pixelInnerRadius;\r\n if (axis.renderer.inversed) {\r\n coordinate = (axis.end - position) * axisFullLength + innerRadius;\r\n }\r\n else {\r\n coordinate = (position - axis.start) * axisFullLength + innerRadius;\r\n }\r\n return $math.round(coordinate, 1);\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererRadial.prototype.pointToPosition = function (point) {\r\n var coordinate = ($math.getDistance(point) - this.pixelInnerRadius);\r\n return this.coordinateToPosition(coordinate);\r\n };\r\n Object.defineProperty(AxisRendererRadial.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * A chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart.set(value, null);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisRendererRadial;\r\n}(AxisRendererY));\r\nexport { AxisRendererRadial };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRendererRadial\"] = AxisRendererRadial;\r\n","/**\r\n * Radar chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport { RadarSeries } from \"../series/RadarSeries\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { AxisRendererCircular } from \"../axes/AxisRendererCircular\";\r\nimport { AxisRendererRadial } from \"../axes/AxisRendererRadial\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[RadarChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar RadarChartDataItem = /** @class */ (function (_super) {\r\n __extends(RadarChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadarChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return RadarChartDataItem;\r\n}(XYChartDataItem));\r\nexport { RadarChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Radar chart.\r\n *\r\n * @see {@link IRadarChartEvents} for a list of available Events\r\n * @see {@link IRadarChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/radar-chart/} for documentation\r\n * @important\r\n */\r\nvar RadarChart = /** @class */ (function (_super) {\r\n __extends(RadarChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Defines X axis renderer type.\r\n */\r\n _this._axisRendererX = AxisRendererCircular;\r\n /**\r\n * Defines Y axis renderer type.\r\n */\r\n _this._axisRendererY = AxisRendererRadial;\r\n /**\r\n * used by cursor. We adjust innerradius if start and end angle are close to each other\r\n * @ignore Exclude from docs\r\n */\r\n _this.innerRadiusModifyer = 1;\r\n /**\r\n * @ignore\r\n */\r\n _this.mr = 1;\r\n _this.className = \"RadarChart\";\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.radius = percent(80);\r\n _this.innerRadius = 0;\r\n var radarContainer = _this.plotContainer.createChild(Container);\r\n radarContainer.shouldClone = false;\r\n radarContainer.layout = \"absolute\";\r\n radarContainer.align = \"center\";\r\n radarContainer.valign = \"middle\";\r\n _this.seriesContainer.parent = radarContainer;\r\n _this.radarContainer = radarContainer;\r\n _this.bulletsContainer.parent = radarContainer;\r\n _this.axisBulletsContainer = radarContainer;\r\n _this._cursorContainer = radarContainer;\r\n _this.chartContainer.events.on(\"maxsizechanged\", _this.invalidate, _this, false); // need this for the chart to change radius if legend is removed/disabled\r\n _this._bulletMask = radarContainer.createChild(Circle);\r\n _this._bulletMask.shouldClone = false;\r\n _this._bulletMask.element = _this.paper.add(\"path\");\r\n _this._bulletMask.opacity = 0;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n RadarChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Radar chart\");\r\n }\r\n };\r\n /**\r\n * Decorates Axis with required properties for this chart.\r\n *\r\n * @param axis Axis\r\n */\r\n RadarChart.prototype.processAxis = function (axis) {\r\n _super.prototype.processAxis.call(this, axis);\r\n var renderer = axis.renderer;\r\n renderer.gridContainer.parent = renderer;\r\n renderer.breakContainer.parent = renderer;\r\n axis.parent = this.radarContainer;\r\n renderer.toBack();\r\n };\r\n /**\r\n * Updates all X axes after range change event.\r\n */\r\n RadarChart.prototype.handleXAxisRangeChange = function () {\r\n _super.prototype.handleXAxisRangeChange.call(this);\r\n $iter.each(this.yAxes.iterator(), function (axis) {\r\n axis.invalidate();\r\n });\r\n };\r\n /**\r\n * Updates all Y axes after range change event.\r\n */\r\n RadarChart.prototype.handleYAxisRangeChange = function () {\r\n _super.prototype.handleYAxisRangeChange.call(this);\r\n $iter.each(this.xAxes.iterator(), function (axis) {\r\n axis.invalidate();\r\n });\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n RadarChart.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up cursor\r\n if ($type.hasValue(config.cursor) && !$type.hasValue(config.cursor.type)) {\r\n config.cursor.type = \"RadarCursor\";\r\n }\r\n // Set up series\r\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n for (var i = 0, len = config.series.length; i < len; i++) {\r\n config.series[i].type = config.series[i].type || \"RadarSeries\";\r\n }\r\n }\r\n // Set up axes\r\n /*if ($type.hasValue(config.xAxes) && $type.isArray(config.xAxes)) {\r\n for (let i = 0, len = config.xAxes.length; i < len; i++) {\r\n config.xAxes[i].type = config.xAxes[i].type || \"AxisRendererCircular\";\r\n }\r\n }\r\n if ($type.hasValue(config.yAxes) && $type.isArray(config.yAxes)) {\r\n for (let i = 0, len = config.yAxes.length; i < len; i++) {\r\n config.yAxes[i].type = config.yAxes[i].type || \"AxisRendererRadial\";\r\n }\r\n }*/\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Does calculations before drawing the chart.\r\n */\r\n RadarChart.prototype.beforeDraw = function () {\r\n _super.prototype.beforeDraw.call(this);\r\n var plotContainer = this.plotContainer;\r\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\r\n var innerRect = { x: 0, y: 0, width: 0, height: 0 };\r\n var wr = plotContainer.innerWidth / rect.width;\r\n var hr = plotContainer.innerHeight / rect.height;\r\n var innerRadius = this.innerRadius;\r\n if (innerRadius instanceof Percent) {\r\n var value = innerRadius.value;\r\n var mr = Math.min(wr, hr);\r\n this.mr = mr;\r\n value = Math.max(mr * value, mr - Math.min(plotContainer.innerHeight, plotContainer.innerWidth)) / mr;\r\n innerRect = $math.getArcRect(this.startAngle, this.endAngle, value);\r\n this.innerRadiusModifyer = value / innerRadius.value;\r\n innerRadius = percent(value * 100);\r\n }\r\n // @todo handle this when innerRadius set in pixels (do it for pie also)\r\n rect = $math.getCommonRectangle([rect, innerRect]);\r\n var maxRadius = Math.min(plotContainer.innerWidth / rect.width, plotContainer.innerHeight / rect.height);\r\n var diameter = $utils.relativeRadiusToValue(this.radius, maxRadius) * 2 || 0;\r\n var radius = diameter / 2;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n this._pixelInnerRadius = $utils.relativeRadiusToValue(innerRadius, radius);\r\n this._bulletMask.path = $path.arc(startAngle, endAngle - startAngle, radius, this._pixelInnerRadius);\r\n $iter.each(this.xAxes.iterator(), function (axis) {\r\n if (axis.renderer.useChartAngles) {\r\n axis.renderer.startAngle = startAngle;\r\n axis.renderer.endAngle = endAngle;\r\n }\r\n axis.width = diameter;\r\n axis.height = diameter;\r\n //axis.renderer.width = diameter;\r\n //axis.renderer.height = diameter;\r\n axis.renderer.pixelRadiusReal = radius;\r\n //axis.renderer.innerRadius = innerRadius;\r\n });\r\n $iter.each(this.yAxes.iterator(), function (axis) {\r\n axis.renderer.startAngle = startAngle;\r\n axis.renderer.endAngle = endAngle;\r\n axis.width = diameter;\r\n axis.height = diameter;\r\n //axis.renderer.width = diameter;\r\n //axis.renderer.height = diameter;\r\n axis.renderer.pixelRadiusReal = radius;\r\n //axis.renderer.innerRadius = innerRadius;\r\n });\r\n var cursor = this.cursor;\r\n if (cursor) {\r\n cursor.width = diameter;\r\n cursor.height = diameter;\r\n cursor.startAngle = startAngle;\r\n cursor.endAngle = endAngle;\r\n }\r\n this.radarContainer.definedBBox = { x: radius * rect.x, y: radius * rect.y, width: radius * rect.width, height: radius * rect.height };\r\n this.radarContainer.validatePosition();\r\n };\r\n /**\r\n * Creates and returns a new Series, suitable for RadarChart.\r\n *\r\n * @return New Series\r\n */\r\n RadarChart.prototype.createSeries = function () {\r\n return new RadarSeries();\r\n };\r\n Object.defineProperty(RadarChart.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face begins (the radial axis is drawn) at the\r\n * top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the radial axis start horizontally to\r\n * the right, as opposed to vertical.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face ends (the radial axis is drawn) exactly\r\n * where it has started, forming a full 360 circle. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to end the circle somewhere else.\r\n *\r\n * E.g. setting this to 180 will make the radar face end at horizontal line\r\n * to the left off the center.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value End angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the Radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * @return Inner radius in pixels\r\n */\r\n get: function () {\r\n return this._pixelInnerRadius;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * If set in Percent, it will be relative to `radius`. (outer radius)\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Triggers (re)rendering of the horizontal (X) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n RadarChart.prototype.updateXAxis = function (renderer) {\r\n //do not call super!\r\n if (renderer) {\r\n renderer.processRenderer();\r\n }\r\n };\r\n /**\r\n * Triggers (re)rendering of the vertical (Y) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n RadarChart.prototype.updateYAxis = function (renderer) {\r\n // do not call super!\r\n if (renderer) {\r\n renderer.processRenderer();\r\n }\r\n };\r\n return RadarChart;\r\n}(XYChart));\r\nexport { RadarChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarChart\"] = RadarChart;\r\n","/**\r\n * Functionality for drawing simple ClockHands\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { Trapezoid } from \"../../core/elements/Trapezoid\";\r\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * ClockHand class is capable of drawing a simple pointy shape with optionally\r\n * rounderd corners and an icon.\r\n *\r\n * @see {@link IClockHandEvents} for a list of available events\r\n * @see {@link IClockHandAdapters} for a list of available Adapters\r\n * @todo Improve\r\n * @important\r\n */\r\nvar ClockHand = /** @class */ (function (_super) {\r\n __extends(ClockHand, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ClockHand() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * An Axis hand is related to.\r\n */\r\n _this._axis = new MutableValueDisposer();\r\n _this.className = \"ClockHand\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n _this.stroke = _this.fill;\r\n var pin = new Circle();\r\n pin.radius = 5;\r\n _this.pin = pin;\r\n _this.isMeasured = false;\r\n _this.startWidth = 5;\r\n _this.endWidth = 1;\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.radius = percent(100);\r\n _this.innerRadius = percent(0);\r\n var hand = new Trapezoid();\r\n _this.hand = hand;\r\n _this._disposers.push(_this._axis);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Re(validates) the clock hand, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ClockHand.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n var hand = this.hand;\r\n hand.width = this.pixelWidth;\r\n var h = Math.max(this.startWidth, this.endWidth);\r\n hand.height = h;\r\n hand.leftSide = percent(this.startWidth / h * 100);\r\n hand.rightSide = percent(this.endWidth / h * 100);\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n var x0 = $utils.relativeRadiusToValue(this.innerRadius, renderer.pixelRadius);\r\n var x1 = $utils.relativeRadiusToValue(this.radius, renderer.pixelRadius);\r\n hand.x = x0;\r\n hand.y = -h / 2;\r\n hand.width = x1 - x0;\r\n }\r\n };\r\n Object.defineProperty(ClockHand.prototype, \"pin\", {\r\n /**\r\n * @return Pin element\r\n */\r\n get: function () {\r\n return this._pin;\r\n },\r\n /**\r\n * A circle element used as hand's base. (pin)\r\n *\r\n * @param pin Pin element\r\n */\r\n set: function (pin) {\r\n if (this._pin) {\r\n this.removeDispose(this._pin);\r\n }\r\n if (pin) {\r\n this._pin = pin;\r\n pin.parent = this;\r\n this._disposers.push(pin);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"hand\", {\r\n /**\r\n * @return Hand element\r\n */\r\n get: function () {\r\n return this._hand;\r\n },\r\n /**\r\n * A trapezoid shape used for hand itself.\r\n *\r\n * The shape of the trapezoid is controlled by ClockHand's `startWidth` and\r\n * `endWidth` properties.\r\n *\r\n * Set `endWidth` to 1 (px) to make it pointy.\r\n *\r\n * @param hand Hand element\r\n */\r\n set: function (hand) {\r\n if (this._hand) {\r\n this.removeDispose(this._hand);\r\n }\r\n if (hand) {\r\n this._hand = hand;\r\n hand.parent = this;\r\n this._disposers.push(hand);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"radius\", {\r\n /**\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Radius of the hand's outer end. (tip)\r\n *\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(0)\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"innerRadius\", {\r\n /**\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Radius of the hand's inner end. (base)\r\n *\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(0)\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"startWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startWidth\");\r\n },\r\n /**\r\n * Width, in pixels, of the clock hand's inner end. (base)\r\n *\r\n * @default 5\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startWidth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"endWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endWidth\");\r\n },\r\n /**\r\n * Width, in pixels, of the clock hand's outer end. (tip)\r\n *\r\n * @default 1\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endWidth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"rotationDirection\", {\r\n /**\r\n * @return rotationDirection\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"rotationDirection\");\r\n },\r\n /**\r\n * Rotation direction\r\n *\r\n * @default any\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"rotationDirection\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Moves clock hand to particular value.\r\n *\r\n * If `duration` is set to a number in milliseconds, the hand will move\r\n * to the new position gracefully, rather than jumping rigth to it.\r\n *\r\n * Alternatively, you can also set `value` directly.\r\n *\r\n * @param value New value\r\n * @param duration Animation duration (ms)\r\n * @param easing Animation easing function\r\n */\r\n ClockHand.prototype.showValue = function (value, duration, easing) {\r\n this._value = value;\r\n if (value != undefined) {\r\n if (!$type.isNumber(duration)) {\r\n duration = 0;\r\n }\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n var newAngle = renderer.positionToAngle(this.axis.anyToPosition(value));\r\n var currentAngle = this.rotation;\r\n if (this.rotationDirection == \"clockWise\") {\r\n if (newAngle < currentAngle) {\r\n this.rotation = currentAngle - 360;\r\n }\r\n }\r\n if (this.rotationDirection == \"counterClockWise\") {\r\n if (newAngle > currentAngle) {\r\n this.rotation = currentAngle + 360;\r\n }\r\n }\r\n this.animate({ property: \"rotation\", to: newAngle }, duration, easing);\r\n }\r\n }\r\n };\r\n Object.defineProperty(ClockHand.prototype, \"currentPosition\", {\r\n /**\r\n * Returns hand's relative position on axis\r\n */\r\n get: function () {\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n return renderer.angleToPosition(this.rotation);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this._value;\r\n },\r\n /**\r\n * A current value clock hand is pointing to.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.showValue(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"axis\", {\r\n /**\r\n * @return Axis\r\n */\r\n get: function () {\r\n return this._axis.get();\r\n },\r\n /**\r\n * An Axis clock hand is associated with.\r\n *\r\n * Hand's `value` relates to values on the Axis.\r\n *\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n if (this.axis != axis) {\r\n this._axis.set(axis, new MultiDisposer([\r\n axis.events.on(\"datavalidated\", this.updateValue, this, false),\r\n axis.events.on(\"datarangechanged\", this.updateValue, this, false),\r\n axis.events.on(\"dataitemsvalidated\", this.updateValue, this, false),\r\n axis.events.on(\"propertychanged\", this.invalidate, this, false)\r\n ]));\r\n }\r\n if (axis) {\r\n var chart = axis.chart;\r\n if (chart) {\r\n this.rotation = chart.startAngle;\r\n }\r\n }\r\n this.parent = axis.renderer;\r\n this.zIndex = 5;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Triggers `value` accessor, so that Hand animates to new position, in case\r\n * value has changed.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ClockHand.prototype.updateValue = function () {\r\n this.value = this.value;\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n ClockHand.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Connect clock hands with axes\r\n if ($type.hasValue(config.axis) && $type.isString(config.axis) && this.map.hasKey(config.axis)) {\r\n config.axis = this.map.getKey(config.axis);\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return ClockHand;\r\n}(Container));\r\nexport { ClockHand };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ClockHand\"] = ClockHand;\r\n","/**\r\n * Module for building Gauge charts.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { RadarChart, RadarChartDataItem } from \"./RadarChart\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { ClockHand } from \"../elements/ClockHand\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[GaugeChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar GaugeChartDataItem = /** @class */ (function (_super) {\r\n __extends(GaugeChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function GaugeChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"GaugeChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return GaugeChartDataItem;\r\n}(RadarChartDataItem));\r\nexport { GaugeChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Gauge chart.\r\n *\r\n * @see {@link IGaugeChartEvents} for a list of available Events\r\n * @see {@link IGaugeChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/gauge-chart/} for documentation\r\n * @important\r\n */\r\nvar GaugeChart = /** @class */ (function (_super) {\r\n __extends(GaugeChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function GaugeChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"GaugeChart\";\r\n _this.startAngle = 180;\r\n _this.endAngle = 360;\r\n _this.hands = new ListTemplate(new ClockHand());\r\n _this.hands.events.on(\"inserted\", _this.processHand, _this, false);\r\n _this._disposers.push(new ListDisposer(_this.hands));\r\n _this._disposers.push(_this.hands.template);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n GaugeChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Gauge chart\");\r\n }\r\n };\r\n /**\r\n * Decorates a [[ClockHand]] when it is added to the chart.\r\n *\r\n * @param event Event\r\n */\r\n GaugeChart.prototype.processHand = function (event) {\r\n var hand = event.newValue;\r\n if (!hand.axis) {\r\n hand.axis = this.xAxes.getIndex(0);\r\n }\r\n };\r\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\r\n GaugeChart.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // Must come last\r\n else if (a == \"hands\") {\r\n return 1;\r\n }\r\n else if (b == \"hands\") {\r\n return -1;\r\n }\r\n else {\r\n return _super.prototype.configOrder.call(this, a, b);\r\n }\r\n };\r\n return GaugeChart;\r\n}(RadarChart));\r\nexport { GaugeChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"GaugeChart\"] = GaugeChart;\r\n","/**\r\n * Defines Percent Chart Series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Series, SeriesDataItem } from \"./Series\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { Color } from \"../../core/utils/Color\";\r\nimport { Tick } from \"../elements/Tick\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $ease from \"../../core/utils/Ease\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo: sequenced?\r\n/**\r\n * Defines a [[DataItem]] for [[PercentSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PercentSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(PercentSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PercentSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PercentSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Adds an `id` attribute the the slice element and returns its id.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PercentSeriesDataItem.prototype.uidAttr = function () {\r\n return this.slice.uidAttr();\r\n };\r\n /**\r\n * Hide the data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param toValue Target value for animation\r\n * @param fields Fields to animate while hiding\r\n */\r\n PercentSeriesDataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n if (!fields) {\r\n fields = [\"value\"];\r\n }\r\n return _super.prototype.hide.call(this, duration, delay, 0, fields);\r\n };\r\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Data Item\r\n */\r\n PercentSeriesDataItem.prototype.setVisibility = function (value, noChangeValues) {\r\n if (!noChangeValues) {\r\n if (value) {\r\n this.setWorkingValue(\"value\", this.values[\"value\"].value, 0, 0);\r\n }\r\n else {\r\n this.setWorkingValue(\"value\", 0, 0, 0);\r\n }\r\n }\r\n _super.prototype.setVisibility.call(this, value, noChangeValues);\r\n };\r\n /**\r\n * Show hidden data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param fields Fields to animate while hiding\r\n */\r\n PercentSeriesDataItem.prototype.show = function (duration, delay, fields) {\r\n if (!fields) {\r\n fields = [\"value\"];\r\n }\r\n return _super.prototype.show.call(this, duration, delay, fields);\r\n };\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"category\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n return this.properties.category;\r\n },\r\n /**\r\n * Category.\r\n *\r\n * @param value Category\r\n */\r\n set: function (value) {\r\n this.setProperty(\"category\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a marker used in the legend for this slice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Marker container\r\n */\r\n PercentSeriesDataItem.prototype.createLegendMarker = function (marker) {\r\n this.component.createLegendMarker(marker, this);\r\n };\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"legendDataItem\", {\r\n /**\r\n * @return Legend data item\r\n */\r\n get: function () {\r\n return this._legendDataItem;\r\n },\r\n /**\r\n * A legend's data item, that corresponds to this data item.\r\n *\r\n * @param value Legend data item\r\n */\r\n set: function (value) {\r\n this._legendDataItem = value;\r\n if (value.label) {\r\n value.label.dataItem = this;\r\n }\r\n if (value.valueLabel) {\r\n value.valueLabel.dataItem = this;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"tick\", {\r\n /**\r\n * A Tick element, related to this data item. (slice)\r\n *\r\n * @readonly\r\n * @return Tick element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._tick) {\r\n var tick_1 = this.component.ticks.create();\r\n this._tick = tick_1;\r\n this.addSprite(tick_1);\r\n this._disposers.push(tick_1);\r\n tick_1.parent = this.component.ticksContainer;\r\n this._disposers.push(new Disposer(function () {\r\n if (_this.component) {\r\n _this.component.ticks.removeValue(tick_1);\r\n }\r\n }));\r\n tick_1.visible = this.visible;\r\n }\r\n return this._tick;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"label\", {\r\n /**\r\n * A Label element, related to this data item. (slice)\r\n *\r\n * @readonly\r\n * @return Label element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._label) {\r\n var label_1 = this.component.labels.create();\r\n this.addSprite(label_1);\r\n this._label = label_1;\r\n this._disposers.push(label_1);\r\n label_1.parent = this.component.labelsContainer;\r\n this._disposers.push(new Disposer(function () {\r\n if (_this.component) {\r\n _this.component.labels.removeValue(label_1);\r\n }\r\n }));\r\n label_1.visible = this.visible;\r\n }\r\n return this._label;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"slice\", {\r\n /**\r\n * An element, related to this data item. (slice)\r\n *\r\n * @readonly\r\n * @return Slice element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._slice) {\r\n var component_1 = this.component;\r\n var slice_1 = component_1.slices.create();\r\n this.addSprite(slice_1);\r\n this._slice = slice_1;\r\n this._disposers.push(slice_1);\r\n slice_1.parent = component_1.slicesContainer;\r\n this._disposers.push(new Disposer(function () {\r\n component_1.slices.removeValue(slice_1);\r\n }));\r\n slice_1.visible = this.visible;\r\n // Apply accessibility\r\n if (component_1.itemsFocusable()) {\r\n if (!$type.hasValue(this.component.role)) {\r\n this.component.role = \"menu\";\r\n }\r\n if (!$type.hasValue(slice_1.role)) {\r\n slice_1.role = \"menuitem\";\r\n }\r\n slice_1.focusable = true;\r\n }\r\n else {\r\n if (!$type.hasValue(this.component.role)) {\r\n this.component.role = \"list\";\r\n }\r\n if (!$type.hasValue(slice_1.role)) {\r\n slice_1.role = \"listitem\";\r\n }\r\n slice_1.focusable = false;\r\n }\r\n // Apply screen reader label\r\n if (slice_1.focusable) {\r\n slice_1.events.on(\"focus\", function (ev) {\r\n slice_1.readerTitle = component_1.populateString(component_1.itemReaderText, _this);\r\n }, undefined, false);\r\n slice_1.events.on(\"blur\", function (ev) {\r\n slice_1.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n if (slice_1.hoverable) {\r\n slice_1.events.on(\"over\", function (ev) {\r\n slice_1.readerTitle = component_1.populateString(component_1.itemReaderText, _this);\r\n }, undefined, false);\r\n slice_1.events.on(\"out\", function (ev) {\r\n slice_1.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n }\r\n return this._slice;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"hiddenInLegend\", {\r\n /**\r\n * @return Disabled in legend?\r\n */\r\n get: function () {\r\n return this.properties.hiddenInLegend;\r\n },\r\n /**\r\n * Should dataItem (slice) be hidden in legend?\r\n *\r\n * @param value Visible in legend?\r\n */\r\n set: function (value) {\r\n this.setProperty(\"hiddenInLegend\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PercentSeriesDataItem;\r\n}(SeriesDataItem));\r\nexport { PercentSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[PercentSeries]] which is a base class for [[PieSeries]],\r\n * [[FunnelSeries]], and [[PyramidSeries]].\r\n *\r\n * @see {@link IPercentSeriesEvents} for a list of available Events\r\n * @see {@link IPercentSeriesAdapters} for a list of available Adapters\r\n */\r\nvar PercentSeries = /** @class */ (function (_super) {\r\n __extends(PercentSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PercentSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PercentSeries\";\r\n _this._addAllDataItems = false;\r\n _this.colors = new ColorSet();\r\n _this.colors.step = 1;\r\n _this.isMeasured = true;\r\n _this.calculatePercent = true;\r\n var slicesContainer = _this.createChild(Container);\r\n slicesContainer.shouldClone = false;\r\n slicesContainer.isMeasured = false;\r\n _this.slicesContainer = slicesContainer;\r\n var ticksContainer = _this.createChild(Container);\r\n ticksContainer.shouldClone = false;\r\n ticksContainer.isMeasured = false;\r\n ticksContainer.layout = \"none\";\r\n _this.ticksContainer = ticksContainer;\r\n var labelsContainer = _this.createChild(Container);\r\n labelsContainer.shouldClone = false;\r\n labelsContainer.isMeasured = false;\r\n labelsContainer.layout = \"none\";\r\n _this.labelsContainer = labelsContainer;\r\n _this.alignLabels = false;\r\n _this.bulletsContainer.toFront();\r\n // Make all slices focusable\r\n _this.skipFocusThreshold = 50;\r\n var defaultState = _this.defaultState;\r\n defaultState.transitionEasing = $ease.sinOut;\r\n // Accessibility\r\n _this.itemReaderText = \"{category}: {value.percent.formatNumber('#.#p')}\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creates a slice element.\r\n *\r\n * @return Slice\r\n */\r\n PercentSeries.prototype.createSlice = function () {\r\n return new Sprite();\r\n };\r\n /**\r\n * Creates a tick element.\r\n *\r\n * @return Tick\r\n */\r\n PercentSeries.prototype.createTick = function () {\r\n return new Tick();\r\n };\r\n /**\r\n * Sreates label element.\r\n *\r\n * @return label\r\n */\r\n PercentSeries.prototype.createLabel = function () {\r\n return new Label();\r\n };\r\n Object.defineProperty(PercentSeries.prototype, \"slices\", {\r\n /**\r\n * A list of slice elements for the series.\r\n *\r\n * Use its `template` to configure look and behavior of the slices. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.slices.template.stroke = am4core.color(\"#fff\");\r\n * series.slices.template.strokeWidth = 2;\r\n * ```\r\n * ```JavaScript\r\n * series.slices.template.stroke = am4core.color(\"#fff\");\r\n * series.slices.template.strokeWidth = 2;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"slices\": {\r\n * \"stroke\": \"#fff\",\r\n * \"strokeWidth\": 2\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/list-templates/} for more information about list templates\r\n * @return Slices\r\n */\r\n get: function () {\r\n if (!this._slices) {\r\n var slice = this.createSlice();\r\n slice.applyOnClones = true;\r\n this._disposers.push(slice);\r\n this.initSlice(slice);\r\n this._slices = new ListTemplate(slice);\r\n this._disposers.push(new ListDisposer(this._slices));\r\n }\r\n return this._slices;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeries.prototype, \"ticks\", {\r\n /**\r\n * A list of tick elements for the series. Ticks connect slice to its label.\r\n *\r\n * Use its `template` to configure look and behavior of the ticks. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.ticks.template.strokeWidth = 2;\r\n * ```\r\n * ```JavaScript\r\n * series.ticks.template.strokeWidth = 2;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"ticks\": {\r\n * \"strokeWidth\": 2\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/list-templates/} for more information about list templates\r\n * @return Ticks\r\n */\r\n get: function () {\r\n if (!this._ticks) {\r\n var tick = this.createTick();\r\n tick.applyOnClones = true;\r\n this._disposers.push(tick);\r\n this.initTick(tick);\r\n this._ticks = new ListTemplate(tick);\r\n this._disposers.push(new ListDisposer(this._ticks));\r\n }\r\n return this._ticks;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeries.prototype, \"labels\", {\r\n /**\r\n * A list of slice label elements for the series.\r\n *\r\n * Use its `template` to configure look and behavior of the labels. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.labels.template.fill = am4core.color(\"#c00\");\r\n * series.labels.template.fontSize = 20;\r\n * ```\r\n * ```JavaScript\r\n * series.labels.template.fill = am4core.color(\"#c00\");\r\n * series.labels.template.fontSize = 20;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"labels\": {\r\n * \"stroke\": \"#c00\",\r\n * \"fontSize\": 20\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/list-templates/} for more information about list templates\r\n * @return Labels\r\n */\r\n get: function () {\r\n if (!this._labels) {\r\n var label = this.createLabel();\r\n label.applyOnClones = true;\r\n this._disposers.push(label);\r\n this.initLabel(label);\r\n this._labels = new ListTemplate(label);\r\n this._disposers.push(new ListDisposer(this._labels));\r\n }\r\n return this._labels;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n PercentSeries.prototype.createDataItem = function () {\r\n return new PercentSeriesDataItem();\r\n };\r\n /**\r\n * Creates and returns a new slice element.\r\n *\r\n * @param sliceType Type of the slice element\r\n * @return Slice\r\n */\r\n PercentSeries.prototype.initSlice = function (slice) {\r\n };\r\n PercentSeries.prototype.initLabel = function (label) {\r\n label.text = \"{category}: {value.percent.formatNumber('#.0p')}\";\r\n label.isMeasured = false;\r\n label.padding(5, 5, 5, 5);\r\n };\r\n PercentSeries.prototype.initTick = function (label) {\r\n };\r\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PercentSeries.prototype.validateDataItems = function () {\r\n this.colors.reset();\r\n if (this.patterns) {\r\n this.patterns.reset();\r\n }\r\n _super.prototype.validateDataItems.call(this);\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n PercentSeries.prototype.validateDataElement = function (dataItem) {\r\n var slice = dataItem.slice;\r\n if (slice) {\r\n if (slice.fill == undefined) {\r\n if (this.patterns) {\r\n if (!$type.hasValue(slice.stroke)) {\r\n slice.stroke = this.colors.next();\r\n }\r\n slice.fill = this.patterns.next();\r\n if ($type.hasValue(slice.fillOpacity)) {\r\n slice.fill.backgroundOpacity = slice.fillOpacity;\r\n }\r\n if (slice.stroke instanceof Color) {\r\n slice.fill.stroke = slice.stroke;\r\n slice.fill.fill = slice.stroke;\r\n }\r\n }\r\n else {\r\n slice.fill = this.colors.next();\r\n }\r\n }\r\n else {\r\n this.colors.currentStep += this.colors.step;\r\n }\r\n if (slice.stroke == undefined) {\r\n slice.stroke = slice.fill;\r\n }\r\n }\r\n // do this at the end, otherwise bullets won't be positioned properly\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n if (slice) {\r\n dataItem.bullets.each(function (key, bullet) {\r\n if (bullet.fill == undefined) {\r\n bullet.fill = slice.fill;\r\n }\r\n if (bullet.stroke == undefined) {\r\n bullet.stroke = slice.stroke;\r\n }\r\n });\r\n }\r\n this.updateLegendValue(dataItem);\r\n };\r\n /**\r\n * Validates (processes) data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PercentSeries.prototype.validateData = function () {\r\n _super.prototype.validateData.call(this);\r\n if (this.chart) {\r\n this.chart.feedLegend();\r\n }\r\n };\r\n /**\r\n * Arranges slice labels according to position settings.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItems Data items\r\n */\r\n PercentSeries.prototype.arrangeLabels = function (dataItems) {\r\n for (var i = 0, len = dataItems.length; i < len; i++) {\r\n var dataItem = dataItems[i];\r\n var label = dataItem.label;\r\n if (label) {\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n var lh = label.measuredHeight;\r\n if (!label.visible) {\r\n lh = 0;\r\n }\r\n if (label.pixelY - lh / 2 < -this.maxHeight / 2) {\r\n label.y = -this.maxHeight / 2 + lh / 2;\r\n }\r\n var nextLabel = this.getNextLabel(i + 1, dataItems);\r\n var bottom = label.pixelY + lh / 2;\r\n if (nextLabel) {\r\n if (nextLabel.invalid) {\r\n nextLabel.validate();\r\n }\r\n var nextLabelHeight = nextLabel.measuredHeight;\r\n if (!nextLabel.visible) {\r\n nextLabelHeight = 0;\r\n }\r\n var nextLabelY = nextLabel.pixelY;\r\n if (nextLabelY == null) {\r\n nextLabelY = 0;\r\n }\r\n if (nextLabelY - nextLabelHeight / 2 < bottom) {\r\n nextLabel.y = bottom + nextLabelHeight / 2;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n PercentSeries.prototype.arrangeLabels2 = function (dataItems) {\r\n var previousTop = this.maxHeight / 2;\r\n for (var i = dataItems.length - 1; i >= 0; i--) {\r\n var dataItem = dataItems[i];\r\n var label = dataItem.label;\r\n if (label) {\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n var lh = label.measuredHeight;\r\n if (!label.visible) {\r\n lh = 0;\r\n }\r\n //if (i == dataItems.length - 1) {\r\n //previousTop += lh / 2;\r\n //}\r\n if (label.pixelY + lh / 2 > previousTop) {\r\n label.y = previousTop - lh / 2;\r\n previousTop = label.y - lh / 2;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the next label according to `index`.\r\n *\r\n * @param index Current index\r\n * @param dataItems Data items\r\n * @return Label element\r\n */\r\n PercentSeries.prototype.getNextLabel = function (index, dataItems) {\r\n if (dataItems.length >= index) {\r\n var nextDataItem = dataItems[index];\r\n if (nextDataItem) {\r\n if (nextDataItem.label) {\r\n if (nextDataItem.visible) {\r\n return nextDataItem.label;\r\n }\r\n else {\r\n return this.getNextLabel(index + 1, dataItems);\r\n }\r\n }\r\n else {\r\n return this.getNextLabel(index + 1, dataItems);\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(PercentSeries.prototype, \"colors\", {\r\n /**\r\n * @return Color set\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"colors\");\r\n },\r\n /**\r\n * A color set to be used for slices.\r\n *\r\n * For each new subsequent slice, the chart will assign the next color in\r\n * this set.\r\n *\r\n * @param value Color set\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"colors\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeries.prototype, \"patterns\", {\r\n /**\r\n * @return Pattern set\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"patterns\");\r\n },\r\n /**\r\n * A [[PatternSet]] to use when creating patterned fills for slices.\r\n *\r\n * @since 4.7.5\r\n * @param value Pattern set\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"patterns\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Binds related legend data item's visual settings to this series' visual\r\n * settings.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Container\r\n * @param dataItem Data item\r\n */\r\n PercentSeries.prototype.createLegendMarker = function (marker, dataItem) {\r\n $iter.each(marker.children.iterator(), function (child) {\r\n var slice = dataItem.slice;\r\n child.defaultState.properties.fill = slice.fill;\r\n child.defaultState.properties.stroke = slice.stroke;\r\n child.defaultState.properties.fillOpacity = slice.fillOpacity;\r\n child.defaultState.properties.strokeOpacity = slice.strokeOpacity;\r\n child.fill = slice.fill;\r\n child.stroke = slice.stroke;\r\n child.fillOpacity = slice.fillOpacity;\r\n child.strokeOpacity = slice.strokeOpacity;\r\n if (child.fill == undefined) {\r\n child.__disabled = true;\r\n }\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = slice.fill;\r\n legendDataItem.colorOrig = slice.fill;\r\n child.addDisposer(slice.events.on(\"propertychanged\", function (ev) {\r\n if (ev.property == \"fill\") {\r\n child.__disabled = false;\r\n if (!child.isActive) {\r\n child.fill = slice.fill;\r\n }\r\n child.defaultState.properties.fill = slice.fill;\r\n legendDataItem.color = slice.fill;\r\n legendDataItem.colorOrig = slice.fill;\r\n }\r\n if (ev.property == \"stroke\") {\r\n if (!child.isActive) {\r\n child.stroke = slice.stroke;\r\n }\r\n child.defaultState.properties.stroke = slice.stroke;\r\n }\r\n if (ev.property == \"strokeOpacity\") {\r\n if (!child.isActive) {\r\n child.strokeOpacity = slice.strokeOpacity;\r\n }\r\n child.defaultState.properties.strokeOpacity = slice.strokeOpacity;\r\n }\r\n }, undefined, false));\r\n });\r\n };\r\n /**\r\n * Repositions bullets when slice's size changes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n PercentSeries.prototype.handleSliceScale = function (event) {\r\n var _this = this;\r\n var slice = event.target;\r\n var dataItem = slice.dataItem;\r\n if (dataItem && dataItem.bullets) {\r\n $iter.each(dataItem.bullets.iterator(), function (a) {\r\n var value = a[1];\r\n _this.positionBullet(value);\r\n });\r\n }\r\n };\r\n /**\r\n * Repositions bullet and labels when slice moves.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n PercentSeries.prototype.handleSliceMove = function (event) {\r\n };\r\n /**\r\n * Copies all properties from another instance of [[PercentSeries]].\r\n *\r\n * @param source Source series\r\n */\r\n PercentSeries.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.slices.template.copyFrom(source.slices.template);\r\n this.labels.template.copyFrom(source.labels.template);\r\n this.ticks.template.copyFrom(source.ticks.template);\r\n this.colors = source.colors.clone();\r\n };\r\n Object.defineProperty(PercentSeries.prototype, \"alignLabels\", {\r\n /**\r\n * @return Align labels?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"alignLabels\");\r\n },\r\n /**\r\n * Align labels into nice vertical columns?\r\n *\r\n * This will ensure that labels never overlap with each other.\r\n *\r\n * Arranging labels into columns makes them more readble, and better user\r\n * experience.\r\n *\r\n * If set to `false` labels will be positioned at `label.radius` distance,\r\n * and may, in some cases, overlap.\r\n *\r\n * @default true\r\n * @param value Align labels?\r\n */\r\n set: function (value) {\r\n this.setAlignLabels(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n PercentSeries.prototype.setAlignLabels = function (value) {\r\n this.setPropertyValue(\"alignLabels\", value, true);\r\n };\r\n Object.defineProperty(PercentSeries.prototype, \"ignoreZeroValues\", {\r\n /**\r\n * @return Ignore zero values\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"ignoreZeroValues\");\r\n },\r\n /**\r\n * If set to `true` the chart will not show slices with zero values.\r\n *\r\n * @default false\r\n * @since 4.7.9\r\n * @param value Ignore zero values\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"ignoreZeroValues\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates corresponding legend data item with current values.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n PercentSeries.prototype.updateLegendValue = function (dataItem) {\r\n if (dataItem) {\r\n var legendDataItem = dataItem.legendDataItem;\r\n var legendSettings = dataItem.legendSettings;\r\n if (legendDataItem && legendSettings) {\r\n if (legendSettings) {\r\n if (legendSettings.labelText) {\r\n legendDataItem.label.text = legendSettings.labelText;\r\n }\r\n if (legendSettings.itemLabelText) {\r\n legendDataItem.label.text = legendSettings.itemLabelText;\r\n }\r\n if (legendSettings.valueText) {\r\n legendDataItem.valueLabel.text = legendSettings.valueText;\r\n }\r\n if (legendSettings.itemValueText) {\r\n legendDataItem.valueLabel.text = legendSettings.itemValueText;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n return PercentSeries;\r\n}(Series));\r\nexport { PercentSeries };\r\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PercentSeries\"] = PercentSeries;\r\nregistry.registeredClasses[\"PercentSeriesDataItem\"] = PercentSeriesDataItem;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Disable labels and ticks.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof PercentSeries) {\r\n var state = target.states.create(stateId);\r\n var labelState = target.labels.template.states.create(stateId);\r\n labelState.properties.disabled = true;\r\n var tickState = target.ticks.template.states.create(stateId);\r\n tickState.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n","/**\r\n * Percent chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SerialChart, SerialChartDataItem } from \"./SerialChart\";\r\nimport { PercentSeries } from \"../series/PercentSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[PercentChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PercentChartDataItem = /** @class */ (function (_super) {\r\n __extends(PercentChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PercentChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PercentChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PercentChartDataItem;\r\n}(SerialChartDataItem));\r\nexport { PercentChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This is a base class for \"percent-based\" chart types like Pie and Funnel.\r\n *\r\n * @see {@link IPercentChartEvents} for a list of available Events\r\n * @see {@link IPercentChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for Pie chart documentation\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for Sliced chart documentation\r\n */\r\nvar PercentChart = /** @class */ (function (_super) {\r\n __extends(PercentChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PercentChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PercentChart\";\r\n _this.align = \"none\";\r\n _this.valign = \"none\";\r\n // so that the chart is always drawn, even the legend wants all the space\r\n _this.chartContainer.minHeight = 50;\r\n _this.chartContainer.minWidth = 50;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)validates chart data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PercentChart.prototype.validateData = function () {\r\n _super.prototype.validateData.call(this);\r\n this.feedLegend();\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n PercentChart.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var legendData_1 = [];\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (!series.hiddenInLegend) {\r\n $iter.each(series.dataItems.iterator(), function (dataItem) {\r\n if (!dataItem.hiddenInLegend) {\r\n legendData_1.push(dataItem);\r\n if (!dataItem.legendSettings) {\r\n dataItem.legendSettings = series.legendSettings;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n legend.data = legendData_1;\r\n legend.dataFields.name = \"category\";\r\n }\r\n };\r\n /**\r\n * Creates a new [[PercentSeries]].\r\n *\r\n * @return New series\r\n */\r\n PercentChart.prototype.createSeries = function () {\r\n return new PercentSeries();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n PercentChart.prototype.setLegend = function (legend) {\r\n _super.prototype.setLegend.call(this, legend);\r\n if (legend) {\r\n legend.labels.template.text = \"{category}\";\r\n legend.valueLabels.template.text = \"{value.percent.formatNumber('#.0p')}\";\r\n legend.itemContainers.template.events.on(\"over\", function (event) {\r\n var percentSeriesDataItem = event.target.dataItem.dataContext;\r\n if (percentSeriesDataItem.visible && !percentSeriesDataItem.isHiding) {\r\n var slice = percentSeriesDataItem.slice;\r\n slice.dispatchImmediately(\"over\");\r\n slice.isHover = true;\r\n slice.interactions.isRealHover = true;\r\n }\r\n });\r\n legend.itemContainers.template.events.on(\"out\", function (event) {\r\n var percentSeriesDataItem = event.target.dataItem.dataContext;\r\n var slice = percentSeriesDataItem.slice;\r\n slice.dispatchImmediately(\"out\");\r\n slice.isHover = false;\r\n });\r\n }\r\n };\r\n return PercentChart;\r\n}(SerialChart));\r\nexport { PercentChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @hidden\r\n */\r\nregistry.registeredClasses[\"PercentChart\"] = PercentChart;\r\nregistry.registeredClasses[\"PercentChartDataItem\"] = PercentChartDataItem;\r\n","/**\r\n * Pie tick module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Tick } from \"../elements/Tick\";\r\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws an tick line for a pie slice connecting it to a related label.\r\n *\r\n * @see {@link IPieTickEvents} for a list of available events\r\n * @see {@link IPieTickAdapters} for a list of available Adapters\r\n */\r\nvar PieTick = /** @class */ (function (_super) {\r\n __extends(PieTick, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieTick() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A label element this tick is attached to.\r\n */\r\n _this._label = new MutableValueDisposer();\r\n /**\r\n * A slice element this tick is attached to.\r\n */\r\n _this._slice = new MutableValueDisposer();\r\n _this.className = \"PieTick\";\r\n _this.element = _this.paper.add(\"polyline\");\r\n _this._disposers.push(_this._label);\r\n _this._disposers.push(_this._slice);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the tick element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieTick.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var slice = this.slice;\r\n var label = this.label;\r\n var series = slice.dataItem.component;\r\n if (slice && slice.radius > 0 && label && label.text) {\r\n var x0 = slice.dx + slice.slice.dx + slice.pixelX + slice.ix * slice.radius * slice.scale;\r\n var y0 = slice.dy + slice.slice.dy + slice.pixelY + slice.iy * slice.radiusY * slice.scale;\r\n var x1 = void 0;\r\n var y1 = void 0;\r\n var x2 = void 0;\r\n var y2 = void 0;\r\n if (series.alignLabels) {\r\n x1 = label.pixelX - this.length;\r\n y1 = label.pixelY;\r\n x2 = label.pixelX;\r\n y2 = y1;\r\n if (label.horizontalCenter == \"right\") {\r\n x1 += 2 * this.length;\r\n x2 = x1 - this.length;\r\n }\r\n }\r\n else {\r\n var r = label.pixelRadius(slice.radius);\r\n x1 = x0 + r * slice.ix;\r\n y1 = y0 + r * slice.iy;\r\n x2 = x1;\r\n y2 = y1;\r\n }\r\n this.element.attr({ \"points\": [x0, y0, x1, y1, x2, y2] });\r\n }\r\n };\r\n Object.defineProperty(PieTick.prototype, \"slice\", {\r\n /**\r\n * @return Slice\r\n */\r\n get: function () {\r\n return this._slice.get();\r\n },\r\n /**\r\n * Slice element tick is attached to.\r\n *\r\n * @param slice Slice\r\n */\r\n set: function (slice) {\r\n this._slice.set(slice, new MultiDisposer([\r\n slice.events.on(\"transformed\", this.invalidate, this),\r\n slice.events.on(\"validated\", this.invalidate, this)\r\n ]));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieTick.prototype, \"label\", {\r\n /**\r\n * @return Label\r\n */\r\n get: function () {\r\n return this._label.get();\r\n },\r\n /**\r\n * Label element tick is attached to.\r\n *\r\n * @param label Label\r\n */\r\n set: function (label) {\r\n this._label.set(label, label.events.on(\"transformed\", this.invalidate, this, false));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PieTick;\r\n}(Tick));\r\nexport { PieTick };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieTick\"] = PieTick;\r\n","/**\r\n * Defines Pie Chart Series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PercentSeries, PercentSeriesDataItem } from \"./PercentSeries\";\r\nimport { Slice } from \"../../core/elements/Slice\";\r\n//import { Slice3D } from \"../../core/elements/3D/Slice3D\";\r\nimport { AxisLabelCircular } from \"../axes/AxisLabelCircular\";\r\nimport { PieTick } from \"../elements/PieTick\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Percent, percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo: sequenced?\r\n/**\r\n * Defines a [[DataItem]] for [[PieSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PieSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(PieSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieSeriesDataItem\";\r\n _this.values.radiusValue = {};\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(PieSeriesDataItem.prototype, \"radiusValue\", {\r\n /**\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.values.radiusValue.value;\r\n },\r\n /**\r\n * Slice's radius, if other than default.\r\n *\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n this.setValue(\"radiusValue\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Hide the data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param toValue Target value for animation\r\n * @param fields Fields to animate while hiding\r\n */\r\n PieSeriesDataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n return _super.prototype.hide.call(this, duration, delay, 0, [\"value\", \"radiusValue\"]);\r\n };\r\n /**\r\n * Show hidden data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param fields Fields to animate while hiding\r\n */\r\n PieSeriesDataItem.prototype.show = function (duration, delay, fields) {\r\n return _super.prototype.show.call(this, duration, delay, [\"value\", \"radiusValue\"]);\r\n };\r\n return PieSeriesDataItem;\r\n}(PercentSeriesDataItem));\r\nexport { PieSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a slice series on a Pie chart.\r\n *\r\n * @see {@link IPieSeriesEvents} for a list of available Events\r\n * @see {@link IPieSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar PieSeries = /** @class */ (function (_super) {\r\n __extends(PieSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieSeries\";\r\n _this.alignLabels = true;\r\n //this.startAngle = -90;\r\n //this.endAngle = 270;\r\n _this.layout = \"none\";\r\n _this.labels.template.radius = percent(5);\r\n _this.addDisposer(_this.labels.template.events.on(\"enabled\", _this.invalidate, _this, false));\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * creates slice\r\n */\r\n PieSeries.prototype.createSlice = function () {\r\n return new Slice();\r\n };\r\n /**\r\n * creates tick\r\n */\r\n PieSeries.prototype.createTick = function () {\r\n return new PieTick();\r\n };\r\n /**\r\n * creates label\r\n */\r\n PieSeries.prototype.createLabel = function () {\r\n return new AxisLabelCircular();\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PieSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Pie Slice Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n PieSeries.prototype.createDataItem = function () {\r\n return new PieSeriesDataItem();\r\n };\r\n /**\r\n * Inits slice.\r\n *\r\n * @param slice to init\r\n */\r\n PieSeries.prototype.initSlice = function (slice) {\r\n slice.isMeasured = false;\r\n slice.defaultState.properties.scale = 1;\r\n slice.observe(\"scale\", this.handleSliceScale, this);\r\n slice.observe([\"dx\", \"dy\", \"x\", \"y\", \"shiftRadius\"], this.handleSliceMove, this);\r\n slice.tooltipText = \"{category}: {value.percent.formatNumber('#.#p')} ({value.value})\";\r\n var hoverState = slice.states.create(\"hover\");\r\n hoverState.properties.scale = 1.05;\r\n var defaultState = slice.defaultState;\r\n defaultState.properties.shiftRadius = 0;\r\n slice.togglable = true;\r\n slice.events.on(\"toggled\", function (event) {\r\n event.target.hideTooltip();\r\n // The following takes care of removing hover on subsequent click of\r\n // a slice\r\n if (event.target.interactions.lastHitPointer\r\n && event.target.interactions.lastHitPointer.touch\r\n && !event.target.isActive) {\r\n event.target.isHover = false;\r\n }\r\n });\r\n var activeState = slice.states.create(\"active\");\r\n activeState.properties.shiftRadius = 0.10;\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieSeries.prototype.validate = function () {\r\n this._leftItems = [];\r\n this._rightItems = [];\r\n this._currentStartAngle = this.startAngle;\r\n this._arcRect = $math.getArcRect(this.startAngle, this.endAngle);\r\n this._maxRadiusPercent = 0;\r\n for (var i = this.startIndex; i < this.endIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n var radiusValuePercent = dataItem.values.radiusValue.percent;\r\n if (radiusValuePercent > this._maxRadiusPercent) {\r\n this._maxRadiusPercent = radiusValuePercent;\r\n }\r\n }\r\n _super.prototype.validate.call(this);\r\n if (this.alignLabels) {\r\n if (this.startAngle > this.endAngle) {\r\n this._rightItems.reverse();\r\n }\r\n else {\r\n this._leftItems.reverse();\r\n }\r\n this._rightItems.sort(function (a, b) {\r\n var aAngle = (a.slice.middleAngle + 360) % 360;\r\n var bAngle = (b.slice.middleAngle + 360) % 360;\r\n if (aAngle > 270) {\r\n aAngle -= 360;\r\n }\r\n if (bAngle > 270) {\r\n bAngle -= 360;\r\n }\r\n if (aAngle < bAngle) {\r\n return -1;\r\n }\r\n else if (aAngle > bAngle) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n this._leftItems.sort(function (a, b) {\r\n var aAngle = (a.slice.middleAngle + 360) % 360;\r\n var bAngle = (b.slice.middleAngle + 360) % 360;\r\n if (aAngle < bAngle) {\r\n return 1;\r\n }\r\n else if (aAngle > bAngle) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n this.arrangeLabels(this._rightItems);\r\n this.arrangeLabels2(this._rightItems);\r\n this.arrangeLabels(this._leftItems);\r\n this.arrangeLabels2(this._leftItems);\r\n }\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n PieSeries.prototype.validateDataElement = function (dataItem) {\r\n if (this.pixelRadius > 0) {\r\n if (this.ignoreZeroValues && (dataItem.value == 0 || dataItem.value == null)) {\r\n dataItem.__disabled = true;\r\n }\r\n else {\r\n dataItem.__disabled = false;\r\n }\r\n // SLICE\r\n var slice = dataItem.slice;\r\n slice.radius = this.pixelRadius;\r\n if ($type.isNumber(dataItem.radiusValue)) {\r\n slice.radius = this.pixelInnerRadius + (this.pixelRadius - this.pixelInnerRadius) * dataItem.values.radiusValue.percent / this._maxRadiusPercent;\r\n }\r\n if (!(slice.innerRadius instanceof Percent)) {\r\n slice.innerRadius = this.pixelInnerRadius;\r\n }\r\n slice.startAngle = this._currentStartAngle;\r\n slice.arc = Math.abs(dataItem.values.value.percent) * (this.endAngle - this.startAngle) / 100;\r\n // LABEL\r\n if (!this.labels.template.disabled) {\r\n var label = dataItem.label;\r\n var tick = dataItem.tick;\r\n tick.slice = slice;\r\n tick.label = label;\r\n var normalizedMiddleAngle = (slice.middleAngle + 360) % 360; // force angle to be 0 - 360;\r\n var point = void 0;\r\n if (this.alignLabels) {\r\n var labelRadius = label.pixelRadius(slice.radius);\r\n var x = tick.length + labelRadius;\r\n label.dx = 0;\r\n label.dy = 0;\r\n label.verticalCenter = \"middle\";\r\n var arcRect = this._arcRect;\r\n // right half\r\n if (normalizedMiddleAngle > 270 || normalizedMiddleAngle <= 90) {\r\n x += (arcRect.width + arcRect.x) * this.pixelRadius;\r\n label.horizontalCenter = \"left\";\r\n this._rightItems.push(dataItem);\r\n }\r\n // left half\r\n else {\r\n x -= arcRect.x * this.pixelRadius;\r\n label.horizontalCenter = \"right\";\r\n this._leftItems.push(dataItem);\r\n x *= -1;\r\n }\r\n var distance = slice.radius + tick.length + labelRadius;\r\n point = { x: x, y: slice.iy * distance };\r\n label.moveTo(point);\r\n }\r\n else {\r\n var depth = slice[\"depth\"];\r\n if (!$type.isNumber(depth)) {\r\n depth = 0;\r\n }\r\n label.fixPosition(slice.middleAngle, slice.radius, slice.radiusY, 0, -depth);\r\n }\r\n }\r\n this._currentStartAngle += slice.arc;\r\n // do this at the end, otherwise bullets won't be positioned properly\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n }\r\n };\r\n Object.defineProperty(PieSeries.prototype, \"radius\", {\r\n /**\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius for the series' slices in pixels or [[Percent]].\r\n *\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"radius\", value, true, false, 10, false)) {\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries.prototype, \"pixelRadius\", {\r\n /**\r\n * @return Radius\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._pixelRadius;\r\n },\r\n /**\r\n * @ignore\r\n */\r\n set: function (value) {\r\n if (this._pixelRadius != value) {\r\n this._pixelRadius = value;\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * @return Pixel inner radius\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._pixelInnerRadius;\r\n },\r\n /**\r\n * @ignore\r\n */\r\n set: function (value) {\r\n if (this._pixelInnerRadius != value) {\r\n this._pixelInnerRadius = value;\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries.prototype, \"innerRadius\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius for the series' slices in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Redo so that users can set it\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries.prototype, \"startAngle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n var startAngle = this.getPropertyValue(\"startAngle\");\r\n if ($type.isNumber(startAngle)) {\r\n return startAngle;\r\n }\r\n else {\r\n return this._startAngleInternal;\r\n }\r\n },\r\n /**\r\n * Start angle for the series' slices in degrees. (0-360)\r\n *\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", $math.normalizeAngle(value), true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries.prototype, \"endAngle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n var endAngle = this.getPropertyValue(\"endAngle\");\r\n if ($type.isNumber(endAngle)) {\r\n return endAngle;\r\n }\r\n else {\r\n return this._endAngleInternal;\r\n }\r\n },\r\n /**\r\n * End angle for the series' slices in degrees. (0-360)\r\n *\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Positions series bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet Bullet\r\n */\r\n PieSeries.prototype.positionBullet = function (bullet) {\r\n _super.prototype.positionBullet.call(this, bullet);\r\n var dataItem = bullet.dataItem;\r\n var slice = dataItem.slice;\r\n var locationX = bullet.locationX;\r\n if (!$type.isNumber(locationX)) {\r\n locationX = 0.5;\r\n }\r\n var locationY = bullet.locationY;\r\n if (!$type.isNumber(locationY)) {\r\n locationY = 1;\r\n }\r\n var angle = slice.startAngle + slice.arc * locationX;\r\n bullet.x = locationY * slice.radius * $math.cos(angle);\r\n bullet.y = locationY * slice.radiusY * $math.sin(angle);\r\n };\r\n /**\r\n * Repositions bullet and labels when slice moves.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n PieSeries.prototype.handleSliceMove = function (event) {\r\n if (!this.alignLabels) {\r\n var slice = event.target;\r\n var dataItem = slice.dataItem;\r\n // moving textelement, as label dx and dy are already employed for aligning\r\n //@labeltodo\r\n if (dataItem) {\r\n var label = dataItem.label;\r\n if (label) {\r\n label.dx = label.fdx + slice.dx + slice.pixelX;\r\n label.dy = label.fdy + slice.dy + slice.pixelY;\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(PieSeries.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n var chart = this.chart;\r\n if (chart) {\r\n return $math.getArcRect(chart.startAngle, chart.endAngle, this.pixelRadius);\r\n }\r\n return $math.getArcRect(this.startAngle, this.endAngle, this.pixelRadius);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PieSeries;\r\n}(PercentSeries));\r\nexport { PieSeries };\r\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieSeries\"] = PieSeries;\r\nregistry.registeredClasses[\"PieSeriesDataItem\"] = PieSeriesDataItem;\r\n","/**\r\n * Pie chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PercentChart, PercentChartDataItem } from \"./PercentChart\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport { PieSeries } from \"../series/PieSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[PieChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PieChartDataItem = /** @class */ (function (_super) {\r\n __extends(PieChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PieChartDataItem;\r\n}(PercentChartDataItem));\r\nexport { PieChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Pie chart.\r\n *\r\n * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * let series = chart.series.push(new am4charts.PieSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"PieChart\");\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * var series = chart.series.push(new am4charts.PieSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"PieSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"value\": \"litres\",\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"Lithuania\",\r\n * \t\t\"litres\": 501.9\r\n * \t}, {\r\n * \t\t\"country\": \"Czechia\",\r\n * \t\t\"litres\": 301.9\r\n * \t}, {\r\n * \t\t\"country\": \"Ireland\",\r\n * \t\t\"litres\": 201.1\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"PieChart\");\r\n * ```\r\n *\r\n * @see {@link IPieChartEvents} for a list of available Events\r\n * @see {@link IPieChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for documentation\r\n * @important\r\n */\r\nvar PieChart = /** @class */ (function (_super) {\r\n __extends(PieChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PieChart\";\r\n // Set defaults\r\n _this.innerRadius = 0;\r\n _this.radius = percent(80);\r\n _this.align = \"none\";\r\n _this.valign = \"none\";\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n var seriesContainer = _this.seriesContainer;\r\n seriesContainer.isMeasured = true;\r\n seriesContainer.valign = \"middle\";\r\n seriesContainer.align = \"center\";\r\n seriesContainer.layout = \"absolute\";\r\n seriesContainer.width = undefined;\r\n seriesContainer.height = undefined;\r\n // so that the pie is always drawn, even the legend wants all the space\r\n _this.chartContainer.minHeight = 50;\r\n _this.chartContainer.minWidth = 50;\r\n _this.chartContainer.events.on(\"maxsizechanged\", _this.updateRadius, _this, false); // need this for the chart to change radius if legend is removed/disabled\r\n _this._disposers.push(_this.seriesContainer.events.on(\"positionchanged\", function () {\r\n _this.bulletsContainer.x = _this.seriesContainer.x;\r\n _this.bulletsContainer.y = _this.seriesContainer.y;\r\n }));\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PieChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Pie chart\");\r\n }\r\n };\r\n /**\r\n * (Re)validates the chart, causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieChart.prototype.validateLayout = function () {\r\n _super.prototype.validateLayout.call(this);\r\n this.updateRadius();\r\n };\r\n /**\r\n * Decorates a new [[Series]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n PieChart.prototype.handleSeriesAdded = function (event) {\r\n _super.prototype.handleSeriesAdded.call(this, event);\r\n this._chartPixelRadius = undefined;\r\n this.updateSeriesAngles();\r\n };\r\n PieChart.prototype.updateSeriesAngles = function () {\r\n var _this = this;\r\n this.series.each(function (series) {\r\n series._startAngleInternal = _this.startAngle;\r\n series._endAngleInternal = _this.endAngle;\r\n //series.defaultState.properties.startAngle = this.startAngle;\r\n //series.defaultState.properties.endAngle = this.endAngle;\r\n });\r\n };\r\n /**\r\n * Recalculates pie's radius, based on a number of criteria.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieChart.prototype.updateRadius = function () {\r\n var chartCont = this.chartContainer;\r\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\r\n var innerRect = { x: 0, y: 0, width: 0, height: 0 };\r\n var innerRadius = this.innerRadius;\r\n if (innerRadius instanceof Percent) {\r\n innerRect = $math.getArcRect(this.startAngle, this.endAngle, innerRadius.value);\r\n }\r\n // @todo handle this when innerRadius set in pixels (do it for radar also)\r\n rect = $math.getCommonRectangle([rect, innerRect]);\r\n var maxRadius = Math.min(chartCont.innerWidth / rect.width, chartCont.innerHeight / rect.height);\r\n if (!$type.isNumber(maxRadius)) {\r\n maxRadius = 0;\r\n }\r\n var chartRadius = $utils.relativeRadiusToValue(this.radius, maxRadius);\r\n var chartPixelInnerRadius = $utils.relativeRadiusToValue(this.innerRadius, maxRadius);\r\n var seriesRadius = (chartRadius - chartPixelInnerRadius) / this.series.length;\r\n if (chartRadius != this._chartPixelRadius || chartPixelInnerRadius != this._chartPixelInnerRadius) {\r\n this._chartPixelRadius = chartRadius;\r\n this._chartPixelInnerRadius = chartPixelInnerRadius;\r\n //@todo: make it possible to set series radius in percent\r\n $iter.each($iter.indexed(this.series.iterator()), function (a) {\r\n var i = a[0];\r\n var series = a[1];\r\n var radius = chartPixelInnerRadius + $utils.relativeRadiusToValue(series.radius, chartRadius - chartPixelInnerRadius);\r\n var innerRadius = chartPixelInnerRadius + $utils.relativeRadiusToValue(series.innerRadius, chartRadius - chartPixelInnerRadius);\r\n if (!$type.isNumber(radius)) {\r\n radius = chartPixelInnerRadius + seriesRadius * (i + 1);\r\n }\r\n if (!$type.isNumber(innerRadius)) {\r\n innerRadius = chartPixelInnerRadius + seriesRadius * i;\r\n }\r\n series.pixelRadius = radius;\r\n series.pixelInnerRadius = innerRadius;\r\n });\r\n this.seriesContainer.definedBBox = { x: chartRadius * rect.x, y: chartRadius * rect.y, width: chartRadius * rect.width, height: chartRadius * rect.height };\r\n this.seriesContainer.invalidateLayout();\r\n }\r\n };\r\n Object.defineProperty(PieChart.prototype, \"radius\", {\r\n /**\r\n * @return Radius (px or relative)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Sets radius of the pie chart.\r\n *\r\n * Setting to a number will mean a fixed pixel radius.\r\n *\r\n * Setting to an instance of [[Percent]] will mean a relative radius to\r\n * available space.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.radius = am4core.percent(50);\r\n * ```\r\n * ```JavaScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.radius = am4core.percent(50);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // Set pie chart to be at 50% of the available space\r\n * \"radius\": \"50%\"\r\n * }\r\n * ```\r\n *\r\n * @default 80%\r\n * @param value Radius (px or relative)\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"radius\", value, true, false, 10, false)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieChart.prototype, \"innerRadius\", {\r\n /**\r\n * @return Relative inner radius (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Sets relative inner radius (to create a donut chart).\r\n *\r\n * Setting to a number will mean a fixed pixel radius.\r\n *\r\n * Setting to an instance of [[Percent]] will mean a relative radius to\r\n * available space.\r\n *\r\n * NOTE: it's not related to `radius`.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.innerRadius = am4core.percent(50);\r\n * ```\r\n * ```JavaScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.innerRadius = am4core.percent(50);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // Set pie chart to be at 50% of the available space\r\n * \"innerRadius\": \"50%\"\r\n * }\r\n * ```\r\n *\r\n * @default 0\r\n * @param value Relative inner radius (0-1)\r\n * @todo Setting things like `innerRadius` modifies `slice.radius` and it then looks like it is not the same value as in default state\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a new [[PieSeries]].\r\n *\r\n * @return New series\r\n */\r\n PieChart.prototype.createSeries = function () {\r\n return new PieSeries();\r\n };\r\n Object.defineProperty(PieChart.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Starting angle of the Pie circle. (degrees)\r\n *\r\n * Normally, a pie chart begins (the left side of the first slice is drawn)\r\n * at the top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the first slice be drawn to the right.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set to those lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a Pie chart that\r\n * looks like a quarter of a circle.\r\n *\r\n * NOTE: This setting is not supported in a 3D pie chart.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startAngle\", value)) {\r\n this.updateRadius();\r\n this.updateSeriesAngles();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieChart.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * End angle of the Pie circle. (degrees)\r\n *\r\n * Normally, a pie chart ends (the right side of the last slice is drawn)\r\n * at the top center. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to change this setting.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set to those lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a Pie chart that\r\n * looks like a quarter of a circle.\r\n *\r\n * NOTE: This setting is not supported in a 3D pie chart.\r\n *\r\n * @default 270\r\n * @param value End angle (degrees)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endAngle\", value)) {\r\n this.updateRadius();\r\n this.updateSeriesAngles();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PieChart;\r\n}(PercentChart));\r\nexport { PieChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieChart\"] = PieChart;\r\nregistry.registeredClasses[\"PieChartDataItem\"] = PieChartDataItem;\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { PieSeries, PieSeriesDataItem } from \"../series/PieSeries\";\r\nimport { Slice3D } from \"../../core/elements/3d/Slice3D\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[PieSeries3D]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PieSeries3DDataItem = /** @class */ (function (_super) {\r\n __extends(PieSeries3DDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieSeries3DDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieSeries3DDataItem\";\r\n _this.values.depthValue = {};\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(PieSeries3DDataItem.prototype, \"depthValue\", {\r\n /**\r\n * @return Depth\r\n */\r\n get: function () {\r\n return this.values[\"depthValue\"].value;\r\n },\r\n /**\r\n * Slice depth (height).\r\n *\r\n * @param value Depth\r\n */\r\n set: function (value) {\r\n this.setValue(\"depthValue\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PieSeries3DDataItem;\r\n}(PieSeriesDataItem));\r\nexport { PieSeries3DDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a slice series on a 3D pie chart.\r\n *\r\n * @see {@link IPieSeries3DEvents} for a list of available Events\r\n * @see {@link IPieSeries3DAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar PieSeries3D = /** @class */ (function (_super) {\r\n __extends(PieSeries3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieSeries3D() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieSeries3D\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n PieSeries3D.prototype.createDataItem = function () {\r\n return new PieSeries3DDataItem();\r\n };\r\n /**\r\n * creates slice\r\n */\r\n PieSeries3D.prototype.createSlice = function () {\r\n return new Slice3D();\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n PieSeries3D.prototype.validateDataElement = function (dataItem) {\r\n var slice = dataItem.slice;\r\n var depth = this.depth;\r\n if (!$type.isNumber(depth)) {\r\n depth = this.chart.depth;\r\n }\r\n var depthPercent = dataItem.values.depthValue.percent;\r\n if (!$type.isNumber(depthPercent)) {\r\n depthPercent = 100;\r\n }\r\n slice.depth = depthPercent * depth / 100;\r\n var angle = this.angle;\r\n if (!$type.isNumber(angle)) {\r\n angle = this.chart.angle;\r\n }\r\n slice.angle = angle;\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieSeries3D.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n for (var i = this._workingStartIndex; i < this._workingEndIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n var slice = dataItem.slice;\r\n var startAngle = slice.startAngle;\r\n // find quarter\r\n //q0 || q1\r\n if ((startAngle >= -90 && startAngle < 90)) {\r\n slice.toFront();\r\n }\r\n //q2 || q3\r\n else if ((startAngle >= 90)) {\r\n slice.toBack();\r\n }\r\n }\r\n };\r\n Object.defineProperty(PieSeries3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth (height) of the pie slice in pixels.\r\n *\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"depth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * Angle of the view point of the 3D pie. (0-360)\r\n *\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Positions series bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet Bullet\r\n */\r\n PieSeries3D.prototype.positionBullet = function (bullet) {\r\n _super.prototype.positionBullet.call(this, bullet);\r\n var dataItem = bullet.dataItem;\r\n var slice = dataItem.slice;\r\n bullet.y = bullet.pixelY - slice.depth;\r\n };\r\n return PieSeries3D;\r\n}(PieSeries));\r\nexport { PieSeries3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieSeries3D\"] = PieSeries3D;\r\nregistry.registeredClasses[\"PieSeries3DDataItem\"] = PieSeries3DDataItem;\r\n","/**\r\n * 3D Pie chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * Imports\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PieChart, PieChartDataItem } from \"./PieChart\";\r\nimport { PieSeries3D } from \"../series/PieSeries3D\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[PieChart3D]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PieChart3DDataItem = /** @class */ (function (_super) {\r\n __extends(PieChart3DDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChart3DDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieChart3DDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PieChart3DDataItem;\r\n}(PieChartDataItem));\r\nexport { PieChart3DDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a 3D Pie chart.\r\n *\r\n * * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.Pie3DChart);\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * let series = chart.series.push(new am4charts.Pie3DSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.Pie3DChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"Pie3DChart\");\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * var series = chart.series.push(new am4charts.Pie3DSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"Pie3DSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"value\": \"litres\",\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"Lithuania\",\r\n * \t\t\"litres\": 501.9\r\n * \t}, {\r\n * \t\t\"country\": \"Czechia\",\r\n * \t\t\"litres\": 301.9\r\n * \t}, {\r\n * \t\t\"country\": \"Ireland\",\r\n * \t\t\"litres\": 201.1\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"Pie3DChart\");\r\n * ```\r\n *\r\n * @see {@link IPieChart3DEvents} for a list of available Events\r\n * @see {@link IPieChart3DAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for documentation\r\n * @important\r\n */\r\nvar PieChart3D = /** @class */ (function (_super) {\r\n __extends(PieChart3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChart3D() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PieChart3D\";\r\n _this.depth = 20;\r\n _this.angle = 10;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(PieChart3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth of the 3D pie in pixels.\r\n *\r\n * This will determine \"height\" of the pie.\r\n *\r\n * @default 20\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"depth\", value)) {\r\n this.invalidateDataUsers();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieChart3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * An angle of a \"point of view\" in degrees. Possible range 0 - 90.\r\n *\r\n * @default 10\r\n * @param value Angle (degrees)\r\n */\r\n set: function (value) {\r\n value = $math.fitToRange(value, 0, 90);\r\n if (this.setPropertyValue(\"angle\", value)) {\r\n this.invalidateDataUsers();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and returns a new Series.\r\n *\r\n * @return New series\r\n */\r\n PieChart3D.prototype.createSeries = function () {\r\n return new PieSeries3D();\r\n };\r\n return PieChart3D;\r\n}(PieChart));\r\nexport { PieChart3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieChart3D\"] = PieChart3D;\r\n","/**\r\n * Sliced chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PercentChart, PercentChartDataItem } from \"./PercentChart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[SlicedChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar SlicedChartDataItem = /** @class */ (function (_super) {\r\n __extends(SlicedChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SlicedChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SlicedChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return SlicedChartDataItem;\r\n}(PercentChartDataItem));\r\nexport { SlicedChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Sliced chart.\r\n *\r\n * @see {@link ISlicedChartEvents} for a list of available Events\r\n * @see {@link ISlicedChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\r\nvar SlicedChart = /** @class */ (function (_super) {\r\n __extends(SlicedChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SlicedChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"SlicedChart\";\r\n _this.seriesContainer.layout = \"horizontal\";\r\n _this.padding(15, 15, 15, 15);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n SlicedChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Sliced chart\");\r\n }\r\n };\r\n /**\r\n * (Re)validates the chart, causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SlicedChart.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n };\r\n return SlicedChart;\r\n}(PercentChart));\r\nexport { SlicedChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SlicedChart\"] = SlicedChart;\r\nregistry.registeredClasses[\"SlicedChartDataItem\"] = SlicedChartDataItem;\r\n","/**\r\n * FlowDiagramNode module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $string from \"../../core/utils/String\";\r\nimport * as $order from \"../../core/utils/Order\";\r\nimport * as $number from \"../../core/utils/Number\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport { LegendSettings } from \"../Legend\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a node in a Flow Diagram.\r\n *\r\n * A Flow node is a block with a value, which represents its size on the\r\n * diagram.\r\n *\r\n * Nodes are connected via [[FlowLink]] elements.\r\n *\r\n * @see {@link IFlowDiagramNodeEvents} for a list of available events\r\n * @see {@link IFlowDiagramNodeAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar FlowDiagramNode = /** @class */ (function (_super) {\r\n __extends(FlowDiagramNode, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FlowDiagramNode() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Settings for the appearance of the related legend items.\r\n */\r\n _this.legendSettings = new LegendSettings();\r\n _this.className = \"FlowDiagramNode\";\r\n _this.isMeasured = false;\r\n // TODO can this be removed ?\r\n new InterfaceColorSet();\r\n _this.draggable = true;\r\n _this.inert = true;\r\n _this.setStateOnChildren = true;\r\n _this.events.on(\"positionchanged\", _this.invalidateLinks, _this, false);\r\n _this.events.on(\"sizechanged\", _this.invalidateLinks, _this, false);\r\n return _this;\r\n //this.events.on(\"hit\", this.handleHit, this, false);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n FlowDiagramNode.prototype.handleHit = function (event) {\r\n if (this.isHidden || this.isHiding) {\r\n this.show();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n };\r\n /**\r\n * Shows hidden node.\r\n *\r\n * @param duration Duration of reveal animation (ms)\r\n * @return Animation\r\n */\r\n FlowDiagramNode.prototype.show = function (duration) {\r\n var animation = _super.prototype.show.call(this, duration);\r\n this.outgoingDataItems.each(function (dataItem) {\r\n if (!dataItem.toNode || (dataItem.toNode && !dataItem.toNode.isHidden)) {\r\n dataItem.setWorkingValue(\"value\", dataItem.getValue(\"value\"), duration);\r\n dataItem.link.show();\r\n }\r\n });\r\n this.incomingDataItems.each(function (dataItem) {\r\n if (!dataItem.fromNode || (dataItem.fromNode && !dataItem.fromNode.isHidden)) {\r\n dataItem.setWorkingValue(\"value\", dataItem.getValue(\"value\"), duration);\r\n dataItem.link.show();\r\n }\r\n });\r\n return animation;\r\n };\r\n /**\r\n * Hides node.\r\n *\r\n * @param duration Duration of hiding animation (ms)\r\n * @return Animation\r\n */\r\n FlowDiagramNode.prototype.hide = function (duration) {\r\n var animation = _super.prototype.hide.call(this, duration);\r\n this.outgoingDataItems.each(function (dataItem) {\r\n dataItem.setWorkingValue(\"value\", 0, duration);\r\n dataItem.link.hide();\r\n });\r\n this.incomingDataItems.each(function (dataItem) {\r\n dataItem.setWorkingValue(\"value\", 0, duration);\r\n dataItem.link.hide();\r\n });\r\n return animation;\r\n };\r\n /**\r\n * Marks node as invalid, for redrawal in the next update cycle.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagramNode.prototype.validate = function () {\r\n if (!this.isDisposed()) {\r\n _super.prototype.validate.call(this);\r\n this.invalidateLinks();\r\n }\r\n };\r\n /**\r\n * Invalidates all links, attached to this node.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagramNode.prototype.invalidateLinks = function () {\r\n var _this = this;\r\n this.outgoingDataItems.each(function (dataItem) {\r\n var link = dataItem.link;\r\n if (link.colorMode == \"fromNode\") {\r\n link.fill = link.dataItem.fromNode.color;\r\n }\r\n if (link.colorMode == \"gradient\") {\r\n link.fill = link.gradient;\r\n link.stroke = link.gradient;\r\n var stop_1 = link.gradient.stops.getIndex(0);\r\n if (stop_1) {\r\n stop_1.color = _this.color;\r\n link.gradient.validate();\r\n }\r\n }\r\n });\r\n this.incomingDataItems.each(function (dataItem) {\r\n var link = dataItem.link;\r\n if (link.colorMode == \"toNode\") {\r\n link.fill = link.dataItem.toNode.color;\r\n }\r\n if (link.colorMode == \"gradient\") {\r\n link.fill = link.gradient;\r\n link.stroke = link.gradient;\r\n var stop_2 = link.gradient.stops.getIndex(1);\r\n if (stop_2) {\r\n stop_2.color = _this.color;\r\n link.gradient.validate();\r\n }\r\n }\r\n });\r\n };\r\n Object.defineProperty(FlowDiagramNode.prototype, \"incomingDataItems\", {\r\n /**\r\n * List of incoming items (links).\r\n *\r\n * @readonly\r\n * @return Incoming items\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._incomingDataItems) {\r\n var incomingDataItems = new List();\r\n incomingDataItems.events.on(\"inserted\", function () {\r\n if (_this.chart.sortBy == \"name\") {\r\n _this._incomingSorted = $iter.sort(_this._incomingDataItems.iterator(), function (x, y) { return $string.order(x.fromName, y.fromName); });\r\n }\r\n else if (_this.chart.sortBy == \"value\") {\r\n _this._incomingSorted = $iter.sort(_this._incomingDataItems.iterator(), function (x, y) { return $order.reverse($number.order(x.value, y.value)); });\r\n }\r\n else {\r\n _this._incomingSorted = _this._incomingDataItems.iterator();\r\n }\r\n }, undefined, false);\r\n this._incomingDataItems = incomingDataItems;\r\n }\r\n return this._incomingDataItems;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"outgoingDataItems\", {\r\n /**\r\n * List of outgoing items (links).\r\n *\r\n * @readonly\r\n * @return Outgoing items\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._outgoingDataItems) {\r\n var outgoingDataItems = new List();\r\n outgoingDataItems.events.on(\"inserted\", function () {\r\n if (_this.chart.sortBy == \"name\") {\r\n _this._outgoingSorted = $iter.sort(_this._outgoingDataItems.iterator(), function (x, y) { return $string.order(x.fromName, y.fromName); });\r\n }\r\n else if (_this.chart.sortBy == \"value\") {\r\n _this._outgoingSorted = $iter.sort(_this._outgoingDataItems.iterator(), function (x, y) { return $order.reverse($number.order(x.value, y.value)); });\r\n }\r\n else {\r\n _this._outgoingSorted = _this._outgoingDataItems.iterator();\r\n }\r\n }, undefined, false);\r\n this._outgoingDataItems = outgoingDataItems;\r\n }\r\n return this._outgoingDataItems;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"name\", {\r\n /**\r\n * @return Name\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"name\");\r\n },\r\n /**\r\n * A name of the node.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"name\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"total\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"total\");\r\n },\r\n /**\r\n * Sum of all incoming+outgoing link values\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"total\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"totalIncoming\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"totalIncoming\");\r\n },\r\n /**\r\n * Sum of all incomming link values.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"totalIncoming\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"totalOutgoing\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"totalOutgoing\");\r\n },\r\n /**\r\n * Sum of all outgoing link values.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"totalOutgoing\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"color\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"color\");\r\n },\r\n /**\r\n * Node's color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.setColorProperty(\"color\", value);\r\n if (this._background) {\r\n this._background.fill = value;\r\n }\r\n this.fill = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n FlowDiagramNode.prototype.createLegendMarker = function (marker) {\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.removeChildren();\r\n var column = marker.createChild(RoundedRectangle);\r\n column.shouldClone = false;\r\n $object.copyProperties(this, column, visualProperties);\r\n column.stroke = this.fill;\r\n column.copyFrom(this);\r\n column.padding(0, 0, 0, 0); // if columns will have padding (which is often), legend marker will be very narrow\r\n column.width = w;\r\n column.height = h;\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = column.fill;\r\n legendDataItem.colorOrig = column.fill;\r\n };\r\n Object.defineProperty(FlowDiagramNode.prototype, \"legendDataItem\", {\r\n /**\r\n * @return Data item\r\n */\r\n get: function () {\r\n return this._legendDataItem;\r\n },\r\n /**\r\n * Legend data item that corresponds to this series.\r\n *\r\n * @param value Data item\r\n */\r\n set: function (value) {\r\n this._legendDataItem = value;\r\n this._legendDataItem.itemContainer.deepInvalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FlowDiagramNode;\r\n}(Container));\r\nexport { FlowDiagramNode };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FlowDiagramNode\"] = FlowDiagramNode;\r\n","/**\r\n * FlowDiagramLink module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { LinearGradient } from \"../../core/rendering/fills/LinearGradient\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Bullet } from \"../elements/Bullet\";\r\nimport { Color } from \"../../core/utils/Color\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Polyline } from \"../../core/elements/Polyline\";\r\nimport { Line } from \"../../core/elements/Line\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Flow Diagram.\r\n *\r\n * @see {@link IFlowDiagramLinkEvents} for a list of available events\r\n * @see {@link IFlowDiagramLinkAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar FlowDiagramLink = /** @class */ (function (_super) {\r\n __extends(FlowDiagramLink, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FlowDiagramLink() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"FlowDiagramLink\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.maskBullets = false;\r\n _this.colorMode = \"fromNode\";\r\n _this.layout = \"none\";\r\n _this.isMeasured = false;\r\n _this.startAngle = 0;\r\n _this.endAngle = 0;\r\n _this.strokeOpacity = 0;\r\n // this is very important, otherwise the container will be shifted\r\n _this.verticalCenter = \"none\";\r\n _this.horizontalCenter = \"none\";\r\n _this.tooltipText = \"{fromName}→{toName}:{value.value}\";\r\n _this.tooltipLocation = 0.5;\r\n _this.link = _this.createChild(Sprite);\r\n _this.link.shouldClone = false;\r\n _this.link.setElement(_this.paper.add(\"path\"));\r\n _this.link.isMeasured = false;\r\n _this.fillOpacity = 0.2;\r\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Positions bullets\r\n * @ignore\r\n */\r\n FlowDiagramLink.prototype.positionBullets = function () {\r\n var _this = this;\r\n $iter.each(this.bullets.iterator(), function (bullet) {\r\n bullet.parent = _this.bulletsContainer;\r\n bullet.maxWidth = _this.maxWidth;\r\n bullet.maxHeight = _this.maxHeight;\r\n _this.positionBullet(bullet);\r\n });\r\n };\r\n Object.defineProperty(FlowDiagramLink.prototype, \"bulletsContainer\", {\r\n /**\r\n * Bullets container\r\n */\r\n get: function () {\r\n if (!this._bulletsContainer) {\r\n var bulletsContainer = this.createChild(Container);\r\n bulletsContainer.shouldClone = false;\r\n bulletsContainer.layout = \"none\";\r\n this._bulletsContainer = bulletsContainer;\r\n }\r\n return this._bulletsContainer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramLink.prototype, \"bulletsMask\", {\r\n /**\r\n * Bullets mask sprite\r\n */\r\n get: function () {\r\n if (!this._bulletsMask) {\r\n var bulletsMask = this.createChild(Sprite);\r\n bulletsMask.shouldClone = false;\r\n bulletsMask.setElement(this.paper.add(\"path\"));\r\n bulletsMask.isMeasured = false;\r\n this._bulletsMask = bulletsMask;\r\n }\r\n return this._bulletsMask;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Positions bullets at relative bullet.locationX position on the link.\r\n * @ignore\r\n */\r\n FlowDiagramLink.prototype.positionBullet = function (bullet) {\r\n var location = bullet.locationX;\r\n if (!$type.isNumber(location)) {\r\n location = bullet.locationY;\r\n }\r\n if (!$type.isNumber(location)) {\r\n location = 0.5;\r\n }\r\n var point = this.middleLine.positionToPoint(location);\r\n bullet.moveTo(point);\r\n var rotationField = bullet.propertyFields.rotation;\r\n var angle;\r\n if (bullet.dataItem) {\r\n var dataContext = bullet.dataItem.dataContext;\r\n angle = dataContext[rotationField];\r\n }\r\n if (!$type.isNumber(angle)) {\r\n angle = point.angle;\r\n }\r\n bullet.rotation = angle;\r\n };\r\n Object.defineProperty(FlowDiagramLink.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * [startAngle description]\r\n *\r\n * @todo Description\r\n * @param value Start angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramLink.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * [endAngle description]\r\n *\r\n * @todo Description\r\n * @param value End angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramLink.prototype, \"colorMode\", {\r\n /**\r\n * Fill mode\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"colorMode\");\r\n },\r\n /**\r\n * Should link be filled with a solid color, color of from node, color of toNode or gradient between node colors.\r\n * Some of the links, like ChordLink does not support gradiens well.\r\n *\r\n * @param value Fill mode\r\n */\r\n set: function (value) {\r\n if (value == \"gradient\") {\r\n var color = this.fill;\r\n this.gradient.stops.clear();\r\n if (color instanceof Color) {\r\n this.gradient.addColor(color);\r\n this.gradient.addColor(color);\r\n }\r\n this.fill = this.gradient;\r\n this.stroke = this.gradient;\r\n }\r\n this.setPropertyValue(\"colorMode\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramLink.prototype, \"maskBullets\", {\r\n /**\r\n * @return mask bullets value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maskBullets\");\r\n },\r\n /**\r\n * Should link bullets be masked or not\r\n *\r\n * @param value\r\n * @default false\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maskBullets\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramLink.prototype, \"tooltipLocation\", {\r\n /**\r\n * Tooltip location value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipLocation\");\r\n },\r\n /**\r\n * Relative location of a tooltip.\r\n * @default 0.5\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds color steps in the link gradient.\r\n *\r\n * @param value Fill option\r\n */\r\n FlowDiagramLink.prototype.setFill = function (value) {\r\n _super.prototype.setFill.call(this, value);\r\n var gradient = this._gradient;\r\n if (gradient && value instanceof Color) {\r\n gradient.stops.clear();\r\n gradient.addColor(value);\r\n gradient.addColor(value);\r\n }\r\n };\r\n /**\r\n * Updates bounding box based on element dimension settings.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagramLink.prototype.measureElement = function () {\r\n };\r\n Object.defineProperty(FlowDiagramLink.prototype, \"bullets\", {\r\n /**\r\n * List of bullets\r\n *\r\n * @return [description]\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._bullets) {\r\n this._bullets = new ListTemplate(new Bullet());\r\n this._disposers.push(new ListDisposer(this._bullets));\r\n this._disposers.push(this._bullets.template);\r\n this._bullets.events.on(\"inserted\", function (event) {\r\n event.newValue.events.on(\"propertychanged\", function (event) {\r\n if (event.property == \"locationX\" || event.property == \"locationY\") {\r\n _this.positionBullet(event.target);\r\n }\r\n }, undefined, false);\r\n }, undefined, false);\r\n }\r\n return this._bullets;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties from another [[FlowDiagramLink]].\r\n *\r\n * @param source Source link\r\n */\r\n FlowDiagramLink.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.bullets.copyFrom(source.bullets);\r\n var middleLine = this.middleLine;\r\n if (middleLine) {\r\n if (middleLine instanceof Line && source.middleLine instanceof Line) {\r\n middleLine.copyFrom(source.middleLine);\r\n }\r\n if (middleLine instanceof Polyline && source.middleLine instanceof Polyline) {\r\n middleLine.copyFrom(source.middleLine);\r\n }\r\n }\r\n this.link.copyFrom(source.link);\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Tooltip X (px)\r\n */\r\n FlowDiagramLink.prototype.getTooltipX = function () {\r\n if (this.middleLine) {\r\n return this.middleLine.positionToPoint(this.tooltipLocation).x;\r\n }\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Tooltip Y (px)\r\n */\r\n FlowDiagramLink.prototype.getTooltipY = function () {\r\n if (this.middleLine) {\r\n return this.middleLine.positionToPoint(this.tooltipLocation).y;\r\n }\r\n };\r\n Object.defineProperty(FlowDiagramLink.prototype, \"gradient\", {\r\n /**\r\n * A gradiend instance that is used to provided colored gradient fills for\r\n * the Flow link.\r\n */\r\n get: function () {\r\n if (!this._gradient) {\r\n this._gradient = new LinearGradient();\r\n }\r\n return this._gradient;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FlowDiagramLink;\r\n}(Container));\r\nexport { FlowDiagramLink };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FlowDiagramLink\"] = FlowDiagramLink;\r\n","/**\r\n * FlowDiagram module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Chart, ChartDataItem } from \"../Chart\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { DictionaryTemplate, DictionaryDisposer } from \"../../core/utils/Dictionary\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { FlowDiagramNode } from \"../elements/FlowDiagramNode\";\r\nimport { FlowDiagramLink } from \"../elements/FlowDiagramLink\";\r\nimport { LinearGradientModifier } from \"../../core/rendering/fills/LinearGradientModifier\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport { toColor, Color } from \"../../core/utils/Color\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $number from \"../../core/utils/Number\";\r\nimport * as $order from \"../../core/utils/Order\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo rearange notes after dragged\r\n/**\r\n * Defines a [[DataItem]] for [[FlowDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar FlowDiagramDataItem = /** @class */ (function (_super) {\r\n __extends(FlowDiagramDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FlowDiagramDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"FlowDiagramDataItem\";\r\n _this.values.value = {};\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"fromName\", {\r\n /**\r\n * @return name\r\n */\r\n get: function () {\r\n return this.properties.fromName;\r\n },\r\n /**\r\n * Source node's name.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setProperty(\"fromName\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"toName\", {\r\n /**\r\n * @return name\r\n */\r\n get: function () {\r\n return this.properties.toName;\r\n },\r\n /**\r\n * Destination node's name.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setProperty(\"toName\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"color\", {\r\n /**\r\n * @return color\r\n */\r\n get: function () {\r\n return this.properties.color;\r\n },\r\n /**\r\n * Node color\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setProperty(\"color\", toColor(value));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.value.value;\r\n },\r\n /**\r\n * Link's value.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"value\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"link\", {\r\n /**\r\n * A visual element, representing link between the source and target nodes.\r\n *\r\n * Link's actual thickness will be determined by `value` of this link and\r\n * `value` of the source node.\r\n *\r\n * @readonly\r\n * @return Link element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._link) {\r\n var link_1 = this.component.links.create();\r\n this._link = link_1;\r\n this.addSprite(link_1);\r\n this._disposers.push(new Disposer(function () {\r\n if (_this.component) {\r\n _this.component.links.removeValue(link_1);\r\n }\r\n }));\r\n }\r\n return this._link;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FlowDiagramDataItem;\r\n}(ChartDataItem));\r\nexport { FlowDiagramDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Pie chart\r\n * @see {@link IFlowDiagramEvents} for a list of available Events\r\n * @see {@link IFlowDiagramAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar FlowDiagram = /** @class */ (function (_super) {\r\n __extends(FlowDiagram, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FlowDiagram() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A Color Set to use when applying/generating colors for each subsequent\r\n * node.\r\n */\r\n _this.colors = new ColorSet();\r\n _this.className = \"FlowDiagram\";\r\n _this.nodePadding = 20;\r\n _this.sortBy = \"none\";\r\n _this.sequencedInterpolation = true;\r\n _this.colors.step = 2;\r\n _this.minNodeSize = 0.02;\r\n var linksContainer = _this.chartContainer.createChild(Container);\r\n linksContainer.shouldClone = false;\r\n linksContainer.layout = \"none\";\r\n linksContainer.isMeasured = false;\r\n _this.linksContainer = linksContainer;\r\n var nodesContainer = _this.chartContainer.createChild(Container);\r\n nodesContainer.shouldClone = false;\r\n nodesContainer.layout = \"none\";\r\n nodesContainer.isMeasured = false;\r\n _this.nodesContainer = nodesContainer;\r\n // this data item holds sums, averages, etc\r\n _this.dataItem = _this.createDataItem();\r\n _this.dataItem.component = _this;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n FlowDiagram.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n this.dataItem.dispose();\r\n };\r\n /**\r\n * (Re)validates chart's data, effectively causing the chart to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagram.prototype.validateData = function () {\r\n var _this = this;\r\n if (this._parseDataFrom == 0) {\r\n this.nodes.clear();\r\n }\r\n this.sortNodes();\r\n this.colors.reset();\r\n _super.prototype.validateData.call(this);\r\n var sum = 0;\r\n var count = 0;\r\n var low;\r\n var high;\r\n // build blocks\r\n $iter.each(this.dataItems.iterator(), function (dataItem) {\r\n var fromName = dataItem.fromName;\r\n if (fromName) {\r\n var node = _this.nodes.getKey(fromName);\r\n if (!node) {\r\n node = _this.nodes.create(fromName);\r\n node.name = fromName;\r\n node.chart = _this;\r\n node.dataItem = dataItem;\r\n }\r\n dataItem.fromNode = node;\r\n dataItem.fromNode.outgoingDataItems.push(dataItem);\r\n }\r\n var toName = dataItem.toName;\r\n if (toName) {\r\n var node = _this.nodes.getKey(toName);\r\n if (!node) {\r\n node = _this.nodes.create(toName);\r\n node.name = toName;\r\n node.chart = _this;\r\n node.dataItem = dataItem;\r\n }\r\n dataItem.toNode = node;\r\n dataItem.toNode.incomingDataItems.push(dataItem);\r\n }\r\n if (!dataItem.fromNode) {\r\n var strokeModifier = new LinearGradientModifier();\r\n strokeModifier.opacities = [0, 1];\r\n dataItem.link.strokeModifier = strokeModifier;\r\n }\r\n if (!dataItem.toNode) {\r\n var fillModifier = new LinearGradientModifier();\r\n fillModifier.opacities = [1, 0];\r\n dataItem.link.strokeModifier = fillModifier;\r\n }\r\n var value = dataItem.value;\r\n if ($type.isNumber(value)) {\r\n sum += value;\r\n count++;\r\n if (low > value || !$type.isNumber(low)) {\r\n low = value;\r\n }\r\n if (high < value || !$type.isNumber(high)) {\r\n high = value;\r\n }\r\n }\r\n });\r\n var key = \"value\";\r\n this.dataItem.setCalculatedValue(key, high, \"high\");\r\n this.dataItem.setCalculatedValue(key, low, \"low\");\r\n this.dataItem.setCalculatedValue(key, sum, \"sum\");\r\n this.dataItem.setCalculatedValue(key, sum / count, \"average\");\r\n this.dataItem.setCalculatedValue(key, count, \"count\");\r\n $iter.each(this.nodes.iterator(), function (strNode) {\r\n var node = strNode[1];\r\n if (node.fill instanceof Color) {\r\n node.color = node.fill;\r\n }\r\n if (node.color == undefined) {\r\n node.color = _this.colors.next();\r\n }\r\n if (node.dataItem.color != undefined) {\r\n node.color = node.dataItem.color;\r\n }\r\n if (!node.dataItem.visible) {\r\n node.hide(0);\r\n }\r\n _this.getNodeValue(node);\r\n });\r\n this.sortNodes();\r\n this.feedLegend();\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagram.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n this.invalidate();\r\n };\r\n /**\r\n * Sorts nodes by either their values or names, based on `sortBy` setting.\r\n */\r\n FlowDiagram.prototype.sortNodes = function () {\r\n if (this.sortBy == \"name\") {\r\n this._sorted = this.nodes.sortedIterator();\r\n }\r\n else if (this.sortBy == \"value\") {\r\n this._sorted = $iter.sort(this.nodes.iterator(), function (x, y) { return $order.reverse($number.order(x[1].total, y[1].total)); });\r\n }\r\n else {\r\n this._sorted = this.nodes.iterator();\r\n }\r\n };\r\n /**\r\n * Updates a cummulative value of the node.\r\n *\r\n * A node's value is determined by summing values of all of the incoming\r\n * links or all of the outgoing links, whichever results in bigger number.\r\n *\r\n * @param node Node value\r\n */\r\n FlowDiagram.prototype.getNodeValue = function (node) {\r\n // todo: totalIncomming totalOutgoing, total\r\n var incomingTotal = 0;\r\n var outgoingTotal = 0;\r\n $iter.each(node.incomingDataItems.iterator(), function (dataItem) {\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n incomingTotal += value;\r\n }\r\n });\r\n $iter.each(node.outgoingDataItems.iterator(), function (dataItem) {\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n outgoingTotal += value;\r\n }\r\n });\r\n node.total = incomingTotal + outgoingTotal;\r\n node.totalIncoming = incomingTotal;\r\n node.totalOutgoing = outgoingTotal;\r\n };\r\n ;\r\n /**\r\n * Changes the sort type of the nodes.\r\n *\r\n * This will actually reshuffle nodes using nice animation.\r\n */\r\n FlowDiagram.prototype.changeSorting = function () {\r\n this.sortNodes();\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n FlowDiagram.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Flow diagram\");\r\n }\r\n };\r\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\r\n FlowDiagram.prototype.createDataItem = function () {\r\n return new FlowDiagramDataItem();\r\n };\r\n Object.defineProperty(FlowDiagram.prototype, \"nodePadding\", {\r\n /**\r\n * @return Padding (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nodePadding\");\r\n },\r\n /**\r\n * Padding for node square in pixels.\r\n *\r\n * Padding will add extra space around node's name label.\r\n *\r\n * @param value Padding (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"nodePadding\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagram.prototype, \"sortBy\", {\r\n /**\r\n * @returns Node sorting\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"sortBy\");\r\n },\r\n /**\r\n * Sort nodes by \"name\" or \"value\" or do not sort at all. If not sorted, nodes will appear in the same order as they are in the data.\r\n * @default \"none\"\r\n * @param value Node sorting\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"sortBy\", value);\r\n this.changeSorting();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagram.prototype, \"minNodeSize\", {\r\n /**\r\n * @returns min node size\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minNodeSize\");\r\n },\r\n /**\r\n * Sometimes nodes can get very small if their value is little. With this setting you\r\n * can set min size of a node (this is relative value from the total size of all nodes)\r\n * @default 0.02\r\n * @param value Node sorting\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minNodeSize\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagram.prototype, \"nodes\", {\r\n /**\r\n * A list of chart's nodes.\r\n *\r\n * @param {DictionaryTemplate<string, this[\"_node\"]>}\r\n */\r\n get: function () {\r\n if (!this._nodes) {\r\n var template = this.createNode();\r\n template.events.on(\"hit\", function (event) {\r\n event.target.handleHit(event);\r\n });\r\n this._nodes = new DictionaryTemplate(template);\r\n this._disposers.push(new DictionaryDisposer(this._nodes));\r\n }\r\n return this._nodes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.createNode = function () {\r\n var node = new FlowDiagramNode();\r\n this._disposers.push(node);\r\n return node;\r\n };\r\n Object.defineProperty(FlowDiagram.prototype, \"links\", {\r\n /**\r\n * A list of chart's links.\r\n *\r\n * @param {ListTemplate<this[\"_link\"]>}\r\n */\r\n get: function () {\r\n if (!this._links) {\r\n this._links = new ListTemplate(this.createLink());\r\n this._disposers.push(new ListDisposer(this._links));\r\n }\r\n return this._links;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.createLink = function () {\r\n var link = new FlowDiagramLink();\r\n this._disposers.push(link);\r\n return link;\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var legendData_1 = [];\r\n this.nodes.each(function (key, node) {\r\n legendData_1.push(node);\r\n });\r\n legend.data = legendData_1;\r\n legend.dataFields.name = \"name\";\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this.nodes.clear();\r\n };\r\n return FlowDiagram;\r\n}(Chart));\r\nexport { FlowDiagram };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FlowDiagram\"] = FlowDiagram;\r\n","/**\r\n * Bullet module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Bullet } from \"./Bullet\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a bullet with a textual label.\r\n *\r\n * Uses [[Label]] instance to draw the label, so the label itself is\r\n * configurable.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar LabelBullet = /** @class */ (function (_super) {\r\n __extends(LabelBullet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LabelBullet() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"LabelBullet\";\r\n var label = _this.createChild(Label);\r\n label.shouldClone = false;\r\n label.verticalCenter = \"middle\";\r\n label.horizontalCenter = \"middle\";\r\n label.truncate = true;\r\n label.hideOversized = false;\r\n label.maxWidth = 500;\r\n label.maxHeight = 500;\r\n label.stroke = color();\r\n label.strokeOpacity = 0;\r\n label.fill = new InterfaceColorSet().getFor(\"text\");\r\n _this.events.on(\"maxsizechanged\", _this.handleMaxSize, _this, false);\r\n _this.label = label;\r\n // not good, as lineSeries will have labels somewhere in the middle.\r\n //this.locationX = 0.5;\r\n //this.locationY = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n LabelBullet.prototype.handleMaxSize = function () {\r\n this.label.maxWidth = this.maxWidth;\r\n this.label.maxHeight = this.maxHeight;\r\n };\r\n /**\r\n * Copies all proprities and related stuff from another instance of\r\n * [[LabelBullet]].\r\n *\r\n * @param source Source element\r\n */\r\n LabelBullet.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.label.copyFrom(source.label);\r\n };\r\n return LabelBullet;\r\n}(Bullet));\r\nexport { LabelBullet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LabelBullet\"] = LabelBullet;\r\n","/**\r\n * SankeyNode module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FlowDiagramNode } from \"./FlowDiagramNode\";\r\nimport { LabelBullet } from \"./LabelBullet\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a node in a Sankey Diagram.\r\n *\r\n * A Sankey node is a block with a value, which represents its size on the\r\n * diagram.\r\n *\r\n * Nodes are connected via [[SankeyLink]] elements.\r\n *\r\n * @see {@link ISankeyNodeEvents} for a list of available events\r\n * @see {@link ISankeyNodeAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar SankeyNode = /** @class */ (function (_super) {\r\n __extends(SankeyNode, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SankeyNode() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * [nextInCoord description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.nextInCoord = 0;\r\n /**\r\n * [nextOutCoord description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.nextOutCoord = 0;\r\n _this.className = \"SankeyNode\";\r\n _this.width = 10;\r\n _this.height = 10;\r\n var nameLabel = _this.createChild(LabelBullet);\r\n nameLabel.shouldClone = false;\r\n //@should we auto update these locations if position is changed?\r\n nameLabel.locationX = 1;\r\n nameLabel.locationY = 0.5;\r\n nameLabel.label.text = \"{name}\";\r\n //nameLabel.label.textElement.hideOversized = false;\r\n nameLabel.width = 150;\r\n nameLabel.height = 150;\r\n nameLabel.label.horizontalCenter = \"left\";\r\n nameLabel.label.padding(0, 5, 0, 5);\r\n _this.nameLabel = nameLabel;\r\n var valueLabel = _this.createChild(LabelBullet);\r\n valueLabel.shouldClone = false;\r\n valueLabel.label.hideOversized = false;\r\n valueLabel.locationX = 0.5;\r\n valueLabel.locationY = 0.5;\r\n valueLabel.width = 150;\r\n valueLabel.height = 150;\r\n //valueLabel.label.text = \"{value}\";\r\n valueLabel.label.horizontalCenter = \"middle\";\r\n _this.valueLabel = valueLabel;\r\n var hiddenState = _this.hiddenState;\r\n hiddenState.properties.fill = new InterfaceColorSet().getFor(\"disabledBackground\");\r\n hiddenState.properties.opacity = 0.5;\r\n hiddenState.properties.visible = true;\r\n _this.background.hiddenState.copyFrom(hiddenState);\r\n return _this;\r\n }\r\n /**\r\n * Invalidates all links, attached to this node.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SankeyNode.prototype.invalidateLinks = function () {\r\n var _this = this;\r\n _super.prototype.invalidateLinks.call(this);\r\n this.nextInCoord = 0;\r\n this.nextOutCoord = 0;\r\n var chart = this.chart;\r\n if (chart) {\r\n var orientation_1 = chart.orientation;\r\n if (this._incomingSorted) {\r\n $iter.each(this._incomingSorted, function (dataItem) {\r\n var link = dataItem.link;\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n link.parent = _this.chart.linksContainer;\r\n var x = void 0;\r\n var y = void 0;\r\n var angle = void 0;\r\n if (orientation_1 == \"horizontal\") {\r\n x = _this.pixelX + _this.dx;\r\n y = _this.nextInCoord + _this.pixelY + _this.dy;\r\n angle = 0;\r\n }\r\n else {\r\n y = _this.pixelY + _this.dy;\r\n x = _this.nextInCoord + _this.pixelX + _this.dx;\r\n angle = 90;\r\n }\r\n link.endX = x;\r\n link.endY = y;\r\n link.startAngle = angle;\r\n link.endAngle = angle;\r\n link.gradient.rotation = angle;\r\n link.linkWidth = value * chart.valueHeight;\r\n if (!dataItem.fromNode) {\r\n if (orientation_1 == \"horizontal\") {\r\n link.maxWidth = 200;\r\n link.startX = _this.pixelX + _this.dx - link.maxWidth;\r\n link.startY = link.endY;\r\n }\r\n else {\r\n link.maxHeight = 200;\r\n link.startX = link.endX;\r\n link.startY = _this.pixelY + _this.dy - link.maxHeight;\r\n }\r\n // TODO is this needed ?\r\n $utils.used(link.gradient);\r\n link.fill = dataItem.toNode.color;\r\n var stop_1 = link.gradient.stops.getIndex(0);\r\n if (stop_1) {\r\n if (link.colorMode == \"gradient\") {\r\n stop_1.color = _this.color;\r\n }\r\n stop_1.opacity = 0;\r\n link.fill = link.gradient;\r\n link.stroke = link.gradient;\r\n link.gradient.validate();\r\n }\r\n }\r\n //link.validate();\r\n _this.nextInCoord += link.linkWidth;\r\n }\r\n });\r\n }\r\n if (this._outgoingSorted) {\r\n $iter.each(this._outgoingSorted, function (dataItem) {\r\n var link = dataItem.link;\r\n link.parent = _this.chart.linksContainer;\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n var x = void 0;\r\n var y = void 0;\r\n var angle = void 0;\r\n if (orientation_1 == \"horizontal\") {\r\n angle = 0;\r\n x = _this.pixelX + _this.pixelWidth + _this.dx - 1;\r\n y = _this.nextOutCoord + _this.pixelY + _this.dy;\r\n }\r\n else {\r\n angle = 90;\r\n x = _this.nextOutCoord + _this.pixelX + _this.dx;\r\n y = _this.pixelY + _this.pixelHeight + _this.dy - 1;\r\n }\r\n link.startX = x;\r\n link.startY = y;\r\n link.startAngle = angle;\r\n link.endAngle = angle;\r\n link.gradient.rotation = angle;\r\n link.linkWidth = value * _this.chart.valueHeight;\r\n if (!dataItem.toNode) {\r\n if (orientation_1 == \"horizontal\") {\r\n link.maxWidth = 200;\r\n link.endX = _this.pixelX + link.maxWidth + _this.dx;\r\n link.endY = link.startY;\r\n }\r\n else {\r\n link.maxHeight = 200;\r\n link.endX = link.startX;\r\n link.endY = _this.pixelY + link.maxHeight + _this.dy;\r\n }\r\n link.opacity = _this.opacity;\r\n var stop_2 = link.gradient.stops.getIndex(1);\r\n if (stop_2) {\r\n if (link.colorMode == \"gradient\") {\r\n stop_2.color = _this.color;\r\n }\r\n stop_2.opacity = 0;\r\n link.fill = link.gradient;\r\n link.stroke = link.gradient;\r\n link.gradient.validate();\r\n }\r\n }\r\n //link.validate();\r\n _this.nextOutCoord += link.linkWidth;\r\n }\r\n });\r\n }\r\n }\r\n this.positionBullet(this.nameLabel);\r\n this.positionBullet(this.valueLabel);\r\n };\r\n /**\r\n * Positions the bullet so it is centered within the node element.\r\n *\r\n * @param bullet Target bullet\r\n */\r\n SankeyNode.prototype.positionBullet = function (bullet) {\r\n if (bullet) {\r\n bullet.x = this.measuredWidth * bullet.locationX;\r\n bullet.y = this.measuredHeight * bullet.locationY;\r\n }\r\n };\r\n Object.defineProperty(SankeyNode.prototype, \"level\", {\r\n /**\r\n * @return Level\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"level\");\r\n },\r\n /**\r\n * A level node is displayed at. (0 - ...)\r\n *\r\n * Levels are measured from left to right.\r\n *\r\n * The nodes in the left-most column will have `level = 0`.\r\n *\r\n * Nodes in second column - `level = 1`, etc.\r\n *\r\n * @param value Level\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"level\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties and labels from another [[SankeyNode]].\r\n *\r\n * @param source Source node\r\n */\r\n SankeyNode.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.nameLabel.copyFrom(source.nameLabel);\r\n this.valueLabel.copyFrom(source.valueLabel);\r\n };\r\n return SankeyNode;\r\n}(FlowDiagramNode));\r\nexport { SankeyNode };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SankeyNode\"] = SankeyNode;\r\n","/**\r\n * SankeyLink module\r\n */\r\nimport { __extends, __read } from \"tslib\";\r\nimport { FlowDiagramLink } from \"./FlowDiagramLink\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Polyspline } from \"../../core/elements/Polyspline\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Sankey Diagram.\r\n *\r\n * @see {@link ISankeyLinkEvents} for a list of available events\r\n * @see {@link ISankeyLinkAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar SankeyLink = /** @class */ (function (_super) {\r\n __extends(SankeyLink, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SankeyLink() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SankeyLink\";\r\n // TODO can this be removed ?\r\n new InterfaceColorSet();\r\n _this.tension = 0.8;\r\n _this.controlPointDistance = 0.2;\r\n _this.startAngle = 0;\r\n _this.endAngle = 0;\r\n _this.linkWidth = 0;\r\n _this.startX = 0;\r\n _this.endX = 0;\r\n _this.startY = 0;\r\n _this.endY = 0;\r\n _this.middleLine = _this.createChild(Polyspline);\r\n _this.middleLine.shouldClone = false;\r\n _this.middleLine.strokeOpacity = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n SankeyLink.prototype.makeBackwards = function () {\r\n if (this.states.getKey(\"backwards\") != undefined) {\r\n this.setState(\"backwards\");\r\n }\r\n };\r\n /**\r\n * (Re)validates (redraws) the link.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SankeyLink.prototype.validate = function () {\r\n var _a, _b, _c, _d;\r\n _super.prototype.validate.call(this);\r\n if (!this.isTemplate) {\r\n var x0 = this.startX;\r\n var y0 = this.startY;\r\n var x1 = this.endX;\r\n var y1 = this.endY;\r\n if (this.states.getKey(\"backwards\")) {\r\n this.setState(\"default\");\r\n }\r\n if (this.dataItem) {\r\n var chart = this.dataItem.component;\r\n if (chart) {\r\n if (chart.orientation == \"horizontal\") {\r\n if (x1 < x0) {\r\n _a = __read([x1, x0], 2), x0 = _a[0], x1 = _a[1];\r\n _b = __read([y1, y0], 2), y0 = _b[0], y1 = _b[1];\r\n this.makeBackwards();\r\n }\r\n }\r\n else {\r\n if (y1 < y0) {\r\n _c = __read([y1, y0], 2), y0 = _c[0], y1 = _c[1];\r\n _d = __read([x1, x0], 2), x0 = _d[0], x1 = _d[1];\r\n this.makeBackwards();\r\n }\r\n }\r\n }\r\n }\r\n if (!$type.isNumber(x1)) {\r\n x1 = x0;\r\n }\r\n if (!$type.isNumber(y1)) {\r\n y1 = y0;\r\n }\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var w = this.linkWidth;\r\n var path = \"\";\r\n var xt0 = x0;\r\n var yt0 = y0;\r\n var xt1 = x1;\r\n var yt1 = y1;\r\n var xb0 = x0 + w * $math.sin(startAngle);\r\n var xb1 = x1 + w * $math.sin(endAngle);\r\n var yb0 = y0 + w * $math.cos(startAngle);\r\n var yb1 = y1 + w * $math.cos(endAngle);\r\n var xm0 = x0 + w / 2 * $math.sin(startAngle);\r\n var xm1 = x1 + w / 2 * $math.sin(endAngle);\r\n var ym0 = y0 + w / 2 * $math.cos(startAngle);\r\n var ym1 = y1 + w / 2 * $math.cos(endAngle);\r\n this.zIndex = this.zIndex || this.dataItem.index;\r\n var tensionX = this.tension + (1 - this.tension) * $math.sin(startAngle);\r\n var tensionY = this.tension + (1 - this.tension) * $math.cos(startAngle);\r\n this.middleLine.tensionX = tensionX;\r\n this.middleLine.tensionY = tensionY;\r\n if ($type.isNumber(w) && ($type.isNumber(x0) && $type.isNumber(x1) && $type.isNumber(y0) && $type.isNumber(y1))) {\r\n // solves issues with gradient fill of straight lines\r\n if ($math.round(xt0, 3) == $math.round(xt1, 3)) {\r\n xt1 += 0.01;\r\n }\r\n if ($math.round(yt0, 3) == $math.round(yt1, 3)) {\r\n yt1 += 0.01;\r\n }\r\n if ($math.round(xb0, 3) == $math.round(xb1, 3)) {\r\n xb1 += 0.01;\r\n }\r\n if ($math.round(yb0, 3) == $math.round(yb1, 3)) {\r\n yb1 += 0.01;\r\n }\r\n var minX = Math.min(xb0, xb1, xt0, xt1);\r\n var minY = Math.min(yb0, yb1, yt0, yt1);\r\n var maxX = Math.max(xb0, xb1, xt0, xt1);\r\n var maxY = Math.max(yb0, yb1, yt0, yt1);\r\n this._bbox = {\r\n x: minX,\r\n y: minY,\r\n width: maxX - minX,\r\n height: maxY - minY\r\n };\r\n var cpd = this.controlPointDistance;\r\n var kxt0 = xt0 + (xt1 - xt0) * cpd * $math.cos(startAngle);\r\n var kyt0 = yt0 + (yt1 - yt0) * cpd * $math.sin(startAngle);\r\n var kxt1 = xt1 - (xt1 - xt0) * cpd * $math.cos(endAngle);\r\n var kyt1 = yt1 - (yt1 - yt0) * cpd * $math.sin(endAngle);\r\n var kxm0 = xm0 + (xm1 - xm0) * cpd * $math.cos(startAngle);\r\n var kym0 = ym0 + (ym1 - ym0) * cpd * $math.sin(startAngle);\r\n var kxm1 = xm1 - (xm1 - xm0) * cpd * $math.cos(endAngle);\r\n var kym1 = ym1 - (ym1 - ym0) * cpd * $math.sin(endAngle);\r\n var angle = $math.getAngle({ x: kxt0, y: kyt0 }, { x: kxt1, y: kyt1 });\r\n var dx = (w / $math.cos(angle) - w) / $math.tan(angle) * $math.cos(startAngle);\r\n var dy = (w / $math.sin(angle) - w) * $math.tan(angle) * $math.sin(startAngle);\r\n var kxb0 = -dx / 2 + xb0 + (xb1 - xb0) * cpd * $math.cos(startAngle);\r\n var kyb0 = -dy / 2 + yb0 + (yb1 - yb0) * cpd * $math.sin(startAngle);\r\n var kxb1 = -dx / 2 + xb1 - (xb1 - xb0) * cpd * $math.cos(endAngle);\r\n var kyb1 = -dy / 2 + yb1 - (yb1 - yb0) * cpd * $math.sin(endAngle);\r\n if (ym1 == ym0) {\r\n ym1 += 0.01;\r\n }\r\n this.middleLine.segments = [[{ x: xm0, y: ym0 }, { x: kxm0, y: kym0 }, { x: kxm1, y: kym1 }, { x: xm1, y: ym1 }]];\r\n kxt0 += dx / 2;\r\n kyt0 += dy / 2;\r\n kxt1 += dx / 2;\r\n kyt1 += dy / 2;\r\n path += $path.moveTo({ x: xt0, y: yt0 });\r\n path += new $smoothing.Tension(tensionX, tensionY).smooth([{ x: xt0, y: yt0 }, { x: kxt0, y: kyt0 }, { x: kxt1, y: kyt1 }, { x: xt1, y: yt1 }]);\r\n path += $path.lineTo({ x: xb1, y: yb1 });\r\n path += new $smoothing.Tension(tensionX, tensionY).smooth([{ x: xb1, y: yb1 }, { x: kxb1, y: kyb1 }, { x: kxb0, y: kyb0 }, { x: xb0, y: yb0 }]);\r\n path += $path.closePath();\r\n }\r\n this.link.path = path;\r\n if (this.maskBullets) {\r\n this.bulletsMask.path = path;\r\n this.bulletsContainer.mask = this.bulletsMask;\r\n }\r\n this.positionBullets();\r\n }\r\n };\r\n Object.defineProperty(SankeyLink.prototype, \"startX\", {\r\n /**\r\n * @return Start X\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startX\");\r\n },\r\n /**\r\n * [startX description]\r\n *\r\n * @todo Description\r\n * @param value Start X\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startX\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"endX\", {\r\n /**\r\n * @return End X\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endX\");\r\n },\r\n /**\r\n * [endX description]\r\n *\r\n * @todo Description\r\n * @param value End X\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endX\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"startY\", {\r\n /**\r\n * @return Start Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startY\");\r\n },\r\n /**\r\n * [startY description]\r\n *\r\n * @todo Description\r\n * @param value Start Y\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"endY\", {\r\n /**\r\n * @return End Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endY\");\r\n },\r\n /**\r\n * [endY description]\r\n *\r\n * @todo Description\r\n * @param value End Y\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"linkWidth\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"linkWidth\");\r\n },\r\n /**\r\n * [linkWidth description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"linkWidth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"controlPointDistance\", {\r\n /**\r\n * @return relative control point distance\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"controlPointDistance\");\r\n },\r\n /**\r\n * Distance of control point of a link, defines relative distance from a node at which linke should bend\r\n * @default 0.2\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"controlPointDistance\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"tension\", {\r\n /**\r\n * @return tension value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tension\");\r\n },\r\n /**\r\n * Tension of a spline, 1 would make the link to have sharp edges\r\n * @default 0.8\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tension\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SankeyLink;\r\n}(FlowDiagramLink));\r\nexport { SankeyLink };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SankeyLink\"] = SankeyLink;\r\n","/**\r\n * Sankey diagram module.\r\n */\r\nimport { __extends, __read, __spread } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FlowDiagram, FlowDiagramDataItem } from \"./FlowDiagram\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { SankeyNode } from \"../elements/SankeyNode\";\r\nimport { SankeyLink } from \"../elements/SankeyLink\";\r\nimport { Animation } from \"../../core/utils/Animation\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $object from \"../../core/utils/Object\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo rearange notes after dragged\r\n/**\r\n * Defines a [[DataItem]] for [[SankeyDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar SankeyDiagramDataItem = /** @class */ (function (_super) {\r\n __extends(SankeyDiagramDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SankeyDiagramDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SankeyDiagramDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return SankeyDiagramDataItem;\r\n}(FlowDiagramDataItem));\r\nexport { SankeyDiagramDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Sankey Diagram chart.\r\n *\r\n * @see {@link ISankeyDiagramEvents} for a list of available Events\r\n * @see {@link ISankeyDiagramAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sankey-diagram/} for documentation\r\n * @important\r\n */\r\nvar SankeyDiagram = /** @class */ (function (_super) {\r\n __extends(SankeyDiagram, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SankeyDiagram() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"SankeyDiagram\";\r\n _this.orientation = \"horizontal\";\r\n _this.nodeAlign = \"middle\";\r\n _this.nodesContainer.width = percent(100);\r\n _this.nodesContainer.height = percent(100);\r\n _this.linksContainer.width = percent(100);\r\n _this.linksContainer.height = percent(100);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)validates chart's data, effectively causing the chart to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SankeyDiagram.prototype.validateData = function () {\r\n var _this = this;\r\n this._valueHeight = undefined;\r\n _super.prototype.validateData.call(this);\r\n this._levelCount = 0;\r\n this.nodes.each(function (key, node) {\r\n node.level = undefined;\r\n });\r\n this.nodes.each(function (key, node) {\r\n node.level = _this.getNodeLevel(node, 0);\r\n _this._levelCount = $math.max(_this._levelCount, node.level);\r\n });\r\n };\r\n /**\r\n * Returns node's highest level.\r\n *\r\n * @param node Node\r\n * @param level Current level\r\n * @return New level\r\n */\r\n SankeyDiagram.prototype.getNodeLevel = function (node, level) {\r\n var _this = this;\r\n var levels = [level];\r\n $iter.each(node.incomingDataItems.iterator(), function (link) {\r\n if (link.fromNode) {\r\n if ($type.isNumber(link.fromNode.level)) {\r\n levels.push(link.fromNode.level + 1);\r\n }\r\n else {\r\n _this._counter = 0;\r\n _this.checkLoop(link.fromNode);\r\n if (_this._counter < _this.dataItems.length) {\r\n levels.push(_this.getNodeLevel(link.fromNode, level + 1));\r\n }\r\n }\r\n }\r\n });\r\n return Math.max.apply(Math, __spread(levels));\r\n };\r\n /**\r\n * Checks if there's no loop in the ancestor chain.\r\n *\r\n * @param node Node\r\n */\r\n SankeyDiagram.prototype.checkLoop = function (node) {\r\n var _this = this;\r\n this._counter++;\r\n if (this._counter > this.dataItems.length) {\r\n return;\r\n }\r\n $iter.each(node.incomingDataItems.iterator(), function (link) {\r\n _this.checkLoop(link.fromNode);\r\n });\r\n };\r\n /**\r\n * Calculates relation between pixel height and total value.\r\n *\r\n * In Sankey the actual thickness of links and height of nodes will depend\r\n * on their values.\r\n */\r\n SankeyDiagram.prototype.calculateValueHeight = function () {\r\n var _this = this;\r\n // calculate sums of each level\r\n this._levelSum = {};\r\n this._levelNodesCount = {};\r\n this.maxSum = 0;\r\n var total = this.dataItem.values.value.sum;\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n _this.getNodeValue(node);\r\n });\r\n this.nodes.each(function (key, node) {\r\n var level = node.level;\r\n var value = Math.max(node.totalIncoming, node.totalOutgoing);\r\n if (value / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n if ($type.isNumber(_this._levelSum[level])) {\r\n _this._levelSum[level] += value;\r\n }\r\n else {\r\n _this._levelSum[level] = value;\r\n }\r\n if ($type.isNumber(_this._levelNodesCount[level])) {\r\n _this._levelNodesCount[level]++;\r\n }\r\n else {\r\n _this._levelNodesCount[level] = 1;\r\n }\r\n });\r\n var availableHeight;\r\n if (this.orientation == \"horizontal\") {\r\n availableHeight = this.chartContainer.maxHeight - 1;\r\n }\r\n else {\r\n availableHeight = this.chartContainer.maxWidth - 1;\r\n }\r\n var maxSumLevel;\r\n var minHeight;\r\n $object.each(this._levelSum, function (key, value) {\r\n var realValue = value;\r\n var levelNodeCount = _this._levelNodesCount[key];\r\n var valueHeight = (availableHeight - (levelNodeCount - 1) * _this.nodePadding) / realValue;\r\n if (valueHeight == Infinity) {\r\n valueHeight = 0;\r\n }\r\n if (minHeight > valueHeight || !$type.isNumber(minHeight)) {\r\n minHeight = valueHeight;\r\n _this.maxSum = realValue;\r\n maxSumLevel = $type.toNumber(key);\r\n }\r\n });\r\n this._maxSumLevel = maxSumLevel;\r\n var maxSumLevelNodeCount = this._levelNodesCount[this._maxSumLevel];\r\n var valueHeight = (availableHeight - (maxSumLevelNodeCount - 1) * this.nodePadding) / this.maxSum;\r\n if (valueHeight == Infinity) {\r\n valueHeight = 0;\r\n }\r\n if (!$type.isNumber(this.valueHeight)) {\r\n this.valueHeight = valueHeight;\r\n }\r\n else {\r\n var finalHeight = void 0;\r\n try {\r\n finalHeight = this._heightAnimation.animationOptions[0].to;\r\n }\r\n catch (err) {\r\n }\r\n // without animations it will be non-smooth as maxValue jumps from one column to another\r\n if (finalHeight != valueHeight) {\r\n var duration = this.interpolationDuration;\r\n try {\r\n duration = this.nodes.template.states.getKey(\"active\").transitionDuration;\r\n }\r\n catch (err) {\r\n }\r\n this._heightAnimation = new Animation(this, { property: \"valueHeight\", from: this.valueHeight, to: valueHeight }, duration, this.interpolationEasing).start();\r\n this._disposers.push(this._heightAnimation);\r\n }\r\n }\r\n };\r\n /**\r\n * Redraws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SankeyDiagram.prototype.validate = function () {\r\n var _this = this;\r\n _super.prototype.validate.call(this);\r\n this.calculateValueHeight();\r\n var container = this.nodesContainer;\r\n var nextCoordinate = {};\r\n var maxSumLevelNodeCount = this._levelNodesCount[this._maxSumLevel];\r\n var total = this.dataItem.values.value.sum;\r\n var availableHeight;\r\n if (this.orientation == \"horizontal\") {\r\n availableHeight = this.chartContainer.maxHeight - 1;\r\n }\r\n else {\r\n availableHeight = this.chartContainer.maxWidth - 1;\r\n }\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var level = node.level;\r\n var levelCoordinate = 0;\r\n var nodeCount = _this._levelNodesCount[level];\r\n switch (_this.nodeAlign) {\r\n case \"bottom\":\r\n levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight - (nodeCount - maxSumLevelNodeCount) * _this.nodePadding;\r\n break;\r\n case \"middle\":\r\n levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight / 2 - (nodeCount - maxSumLevelNodeCount) * _this.nodePadding / 2;\r\n break;\r\n }\r\n if (_this.maxSum == 0) {\r\n switch (_this.nodeAlign) {\r\n case \"bottom\":\r\n levelCoordinate = availableHeight - nodeCount * (_this.minNodeSize * availableHeight + _this.nodePadding);\r\n break;\r\n case \"middle\":\r\n levelCoordinate = availableHeight / 2 - nodeCount / 2 * (_this.minNodeSize * availableHeight + _this.nodePadding);\r\n break;\r\n }\r\n }\r\n node.parent = container;\r\n var delta;\r\n var x;\r\n var y;\r\n var value = Math.max(node.totalIncoming, node.totalOutgoing);\r\n if (value / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n if (_this.orientation == \"horizontal\") {\r\n delta = (_this.innerWidth - node.pixelWidth) / _this._levelCount;\r\n x = delta * node.level;\r\n y = nextCoordinate[level] || levelCoordinate;\r\n var h = value * _this.valueHeight;\r\n if (total == 0 && h == 0) {\r\n h = _this.minNodeSize * availableHeight;\r\n }\r\n node.height = h;\r\n node.minX = x;\r\n node.maxX = x;\r\n nextCoordinate[level] = y + h + _this.nodePadding;\r\n }\r\n else {\r\n delta = (_this.innerHeight - node.pixelHeight) / _this._levelCount;\r\n x = nextCoordinate[level] || levelCoordinate;\r\n y = delta * node.level;\r\n var w = value * _this.valueHeight;\r\n if (total == 0 && w == 0) {\r\n w = _this.minNodeSize * availableHeight;\r\n }\r\n node.width = w;\r\n node.minY = y;\r\n node.maxY = y;\r\n nextCoordinate[level] = x + w + _this.nodePadding;\r\n }\r\n node.x = x;\r\n node.y = y;\r\n });\r\n };\r\n /**\r\n * Performs actual operations to reveal this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param duration Fade in duration (ms)\r\n * @return Fade in duration (ms)\r\n */\r\n SankeyDiagram.prototype.showReal = function (duration) {\r\n var _this = this;\r\n if (this.preventShow) {\r\n return;\r\n }\r\n if (this.interpolationDuration > 0) {\r\n var container_1 = this.nodesContainer;\r\n var i_1 = 0;\r\n $iter.each(this.links.iterator(), function (link) {\r\n link.hide(0);\r\n });\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var property;\r\n if (_this.orientation == \"horizontal\") {\r\n node.dx = -(container_1.pixelWidth - node.pixelWidth) / Math.max(_this._levelCount, 1);\r\n property = \"dx\";\r\n }\r\n else {\r\n node.dy = -(container_1.pixelHeight - node.pixelHeight) / Math.max(_this._levelCount, 1);\r\n property = \"dy\";\r\n }\r\n var delay = 0;\r\n var duration = _this.interpolationDuration;\r\n if (_this.sequencedInterpolation) {\r\n delay = _this.sequencedInterpolationDelay * i_1 + duration * i_1 / $iter.length(_this.nodes.iterator());\r\n }\r\n node.opacity = 0;\r\n node.invalidateLinks();\r\n node.animate([{ property: \"opacity\", from: 0, to: 1 }, { property: property, to: 0 }], _this.interpolationDuration, _this.interpolationEasing).delay(delay);\r\n $iter.each(node.outgoingDataItems.iterator(), function (dataItem) {\r\n var animation = dataItem.link.show(_this.interpolationDuration);\r\n if (animation && !animation.isFinished()) {\r\n animation.delay(delay);\r\n }\r\n });\r\n $iter.each(node.incomingDataItems.iterator(), function (dataItem) {\r\n if (!dataItem.fromNode) {\r\n var animation = dataItem.link.show(_this.interpolationDuration);\r\n if (animation && !animation.isFinished()) {\r\n animation.delay(delay);\r\n }\r\n }\r\n });\r\n i_1++;\r\n });\r\n }\r\n return _super.prototype.showReal.call(this);\r\n };\r\n /**\r\n * Changes the sort type of the nodes.\r\n *\r\n * This will actually reshuffle nodes using nice animation.\r\n */\r\n SankeyDiagram.prototype.changeSorting = function () {\r\n var _this = this;\r\n this.sortNodes();\r\n var nextCoordinate = {};\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var level = node.level;\r\n var levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight / 2;\r\n var property;\r\n var nodeHeight;\r\n if (_this.orientation == \"horizontal\") {\r\n property = \"y\";\r\n nodeHeight = node.pixelHeight;\r\n }\r\n else {\r\n property = \"x\";\r\n nodeHeight = node.pixelWidth;\r\n }\r\n node.animate({ property: property, to: nextCoordinate[level] || levelCoordinate }, _this.interpolationDuration, _this.interpolationEasing);\r\n nextCoordinate[level] = (nextCoordinate[level] || levelCoordinate) + nodeHeight + _this.nodePadding;\r\n node.invalidateLinks();\r\n });\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n SankeyDiagram.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Sankey diagram\");\r\n }\r\n };\r\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\r\n SankeyDiagram.prototype.createDataItem = function () {\r\n return new SankeyDiagramDataItem();\r\n };\r\n Object.defineProperty(SankeyDiagram.prototype, \"nodeAlign\", {\r\n /**\r\n * @returns Returns nodeAlign value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nodeAlign\");\r\n },\r\n /**\r\n * How to align nodes. In case layout is vertical, top means left and bottom means right\r\n *\r\n * @param value Node sorting\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"nodeAlign\", value);\r\n this.changeSorting();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyDiagram.prototype, \"orientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Orientation of the chart: \"horizontal\" or \"vertical\";\r\n *\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"orientation\", value, true);\r\n var nameLabel = this.nodes.template.nameLabel;\r\n if (value == \"vertical\") {\r\n this.nodes.template.width = undefined;\r\n nameLabel.label.horizontalCenter = \"middle\";\r\n nameLabel.locationX = 0.5;\r\n }\r\n else {\r\n this.nodes.template.height = undefined;\r\n nameLabel.label.horizontalCenter = \"left\";\r\n nameLabel.locationX = 1;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n SankeyDiagram.prototype.createNode = function () {\r\n var node = new SankeyNode();\r\n this._disposers.push(node);\r\n return node;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n SankeyDiagram.prototype.createLink = function () {\r\n var link = new SankeyLink();\r\n this._disposers.push(link);\r\n return link;\r\n };\r\n Object.defineProperty(SankeyDiagram.prototype, \"valueHeight\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._valueHeight;\r\n },\r\n /**\r\n * @ignore\r\n */\r\n set: function (value) {\r\n if (value != this._valueHeight) {\r\n this._valueHeight = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n SankeyDiagram.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this._sorted = this.nodes.iterator();\r\n };\r\n return SankeyDiagram;\r\n}(FlowDiagram));\r\nexport { SankeyDiagram };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SankeyDiagram\"] = SankeyDiagram;\r\n","/**\r\n * ChordNode module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FlowDiagramNode } from \"./FlowDiagramNode\";\r\nimport { AxisLabelCircular } from \"../axes/AxisLabelCircular\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Slice } from \"../../core/elements/Slice\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Bullet } from \"../elements/Bullet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a node in a Chord Diagram.\r\n *\r\n * A Chord node is a block with a value, which represents its size on the\r\n * diagram.\r\n *\r\n * Nodes are connected via [[ChordLink]] elements.\r\n *\r\n * @see {@link IChordNodeEvents} for a list of available events\r\n * @see {@link IChordNodeAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar ChordNode = /** @class */ (function (_super) {\r\n __extends(ChordNode, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChordNode() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ChordNode\";\r\n var label = _this.createChild(AxisLabelCircular);\r\n label.location = 0.5;\r\n label.radius = 5;\r\n label.text = \"{name}\";\r\n label.zIndex = 1;\r\n label.shouldClone = false;\r\n _this.label = label;\r\n _this.layout = \"none\";\r\n _this.events.on(\"positionchanged\", _this.updateRotation, _this, false);\r\n _this.isMeasured = false;\r\n _this.slice = _this.createChild(Slice);\r\n _this.slice.isMeasured = false;\r\n var hiddenState = _this.hiddenState;\r\n hiddenState.properties.fill = new InterfaceColorSet().getFor(\"disabledBackground\");\r\n hiddenState.properties.opacity = 0.5;\r\n hiddenState.properties.visible = true;\r\n _this.setStateOnChildren = false;\r\n _this.slice.hiddenState.properties.visible = true;\r\n _this.adapter.add(\"tooltipX\", function (tooltipX, target) {\r\n return target.slice.ix * (target.slice.radius - (target.slice.radius - target.slice.pixelInnerRadius) / 2);\r\n });\r\n _this.adapter.add(\"tooltipY\", function (tooltipY, target) {\r\n return target.slice.iy * (target.slice.radius - (target.slice.radius - target.slice.pixelInnerRadius) / 2);\r\n });\r\n return _this;\r\n }\r\n /**\r\n * Invalidates all links, attached to this node.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ChordNode.prototype.invalidateLinks = function () {\r\n var _this = this;\r\n _super.prototype.invalidateLinks.call(this);\r\n var label = this.label;\r\n var slice = this.slice;\r\n var chart = this.chart;\r\n if (chart && slice) {\r\n var sum = this.total;\r\n var arc_1 = slice.arc;\r\n var sliceStartAngle_1 = slice.startAngle;\r\n this.children.each(function (child) {\r\n if (child instanceof Bullet) {\r\n var locationX = child.locationX;\r\n if (!$type.isNumber(locationX)) {\r\n locationX = 0.5;\r\n }\r\n var locationY = child.locationY;\r\n if (!$type.isNumber(locationY)) {\r\n locationY = 1;\r\n }\r\n var childAngle = sliceStartAngle_1 + arc_1 * locationX;\r\n var childRadius = locationY * slice.radius;\r\n child.x = childRadius * $math.cos(childAngle);\r\n child.y = childRadius * $math.sin(childAngle);\r\n }\r\n });\r\n var labelAngle = sliceStartAngle_1 + arc_1 * label.location;\r\n var startAngle = sliceStartAngle_1 + (1 - sum / this.adjustedTotal) * arc_1 * 0.5; // if value of a node is > then sum of the links, add to center link\r\n if ($type.isNaN(startAngle)) {\r\n startAngle = sliceStartAngle_1;\r\n }\r\n label.fixPosition(labelAngle, slice.radius);\r\n this.nextAngle = startAngle;\r\n if (this._outgoingSorted) {\r\n $iter.each(this._outgoingSorted, function (dataItem) {\r\n var link = dataItem.link;\r\n link.parent = _this.chart.linksContainer;\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n if (chart.nonRibbon) {\r\n var percentWidth = link.percentWidth;\r\n if (!$type.isNumber(percentWidth)) {\r\n percentWidth = 5;\r\n }\r\n percentWidth = percentWidth / 100;\r\n link.startAngle = sliceStartAngle_1 + arc_1 / 2 - arc_1 / 2 * percentWidth;\r\n link.arc = arc_1 * percentWidth;\r\n }\r\n else {\r\n link.arc = value * chart.valueAngle;\r\n link.startAngle = _this.nextAngle;\r\n _this.nextAngle += link.arc;\r\n }\r\n if (!dataItem.toNode) {\r\n link.endAngle = link.startAngle;\r\n }\r\n link.radius = slice.pixelInnerRadius;\r\n }\r\n //link.validate();\r\n });\r\n }\r\n if (this._incomingSorted) {\r\n $iter.each(this._incomingSorted, function (dataItem) {\r\n var link = dataItem.link;\r\n link.radius = slice.pixelInnerRadius;\r\n if (chart.nonRibbon) {\r\n var percentWidth = link.percentWidth;\r\n if (!$type.isNumber(percentWidth)) {\r\n percentWidth = 5;\r\n }\r\n percentWidth = percentWidth / 100;\r\n link.endAngle = sliceStartAngle_1 + arc_1 / 2 - arc_1 / 2 * percentWidth;\r\n link.arc = arc_1 * percentWidth;\r\n }\r\n else {\r\n link.endAngle = _this.nextAngle;\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n link.arc = value * chart.valueAngle; // yes, this is needed\r\n _this.nextAngle += link.arc;\r\n }\r\n }\r\n if (!dataItem.fromNode) {\r\n link.startAngle = link.endAngle;\r\n }\r\n //link.validate();\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n * updates slice start angle so that when we drag a node it would face the center\r\n */\r\n ChordNode.prototype.updateRotation = function () {\r\n var slice = this.slice;\r\n var mAngle = this.trueStartAngle + slice.arc / 2;\r\n var radius = slice.radius;\r\n var tx = radius * $math.cos(mAngle);\r\n var ty = radius * $math.sin(mAngle);\r\n var angle = $math.getAngle({ x: tx + this.pixelX, y: ty + this.pixelY });\r\n slice.startAngle = this.trueStartAngle + (angle - mAngle);\r\n this.dx = -this.pixelX;\r\n this.dy = -this.pixelY;\r\n };\r\n /**\r\n * Copies properties and labels from another [[ChordNode]].\r\n *\r\n * @param source Source node\r\n */\r\n ChordNode.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.label.copyFrom(source.label);\r\n this.slice.copyFrom(source.slice);\r\n };\r\n return ChordNode;\r\n}(FlowDiagramNode));\r\nexport { ChordNode };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ChordNode\"] = ChordNode;\r\n","/**\r\n * Functionality for drawing quadratic curves.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Line } from \"./Line\";\r\nimport { color } from \"../utils/Color\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a waved line.\r\n *\r\n * @see {@link IQuadraticCurveEvents} for a list of available events\r\n * @see {@link IQuadraticCurveAdapters} for a list of available Adapters\r\n */\r\nvar QuadraticCurve = /** @class */ (function (_super) {\r\n __extends(QuadraticCurve, _super);\r\n /**\r\n * Constructor\r\n */\r\n function QuadraticCurve() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"QuadraticCurve\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.pixelPerfect = false;\r\n _this.fill = color();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the waved line.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n QuadraticCurve.prototype.draw = function () {\r\n //super.draw();\r\n if ($type.isNumber(this.x1 + this.x2 + this.y1 + this.y2 + this.cpx + this.cpy)) {\r\n var p1 = { x: this.x1, y: this.y1 };\r\n var p2 = { x: this.x2, y: this.y2 };\r\n var cp = { x: this.cpx, y: this.cpy };\r\n var d = $path.moveTo(p1) + $path.quadraticCurveTo(p2, cp);\r\n this.path = d;\r\n }\r\n };\r\n Object.defineProperty(QuadraticCurve.prototype, \"cpx\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cpx\");\r\n },\r\n /**\r\n * X coordinate of control point.\r\n *\r\n * @param value X\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cpx\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QuadraticCurve.prototype, \"cpy\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cpy\");\r\n },\r\n /**\r\n * Y coordinate of control point.\r\n *\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cpy\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\r\n QuadraticCurve.prototype.positionToPoint = function (position) {\r\n var p1 = { x: this.x1, y: this.y1 };\r\n var cp = { x: this.cpx, y: this.cpy };\r\n var p2 = { x: this.x2, y: this.y2 };\r\n var point1 = $math.getPointOnQuadraticCurve(p1, p2, cp, position);\r\n var point2 = $math.getPointOnQuadraticCurve(p1, p2, cp, position + 0.001);\r\n return { x: point1.x, y: point1.y, angle: $math.getAngle(point1, point2) };\r\n };\r\n return QuadraticCurve;\r\n}(Line));\r\nexport { QuadraticCurve };\r\n","/**\r\n * ChordLink module\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { FlowDiagramLink } from \"./FlowDiagramLink\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { QuadraticCurve } from \"../../core/elements/QuadraticCurve\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Chord Diagram.\r\n *\r\n * @see {@link IChordLinkEvents} for a list of available events\r\n * @see {@link IChordLinkAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar ChordLink = /** @class */ (function (_super) {\r\n __extends(ChordLink, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChordLink() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ChordLink\";\r\n _this.middleLine = _this.createChild(QuadraticCurve);\r\n _this.middleLine.shouldClone = false;\r\n _this.middleLine.strokeOpacity = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)validates (redraws) the link.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ChordLink.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n if (!this.isTemplate) {\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var arc = this.arc;\r\n var radius = this.radius;\r\n var fromNode = this.dataItem.fromNode;\r\n var toNode = this.dataItem.toNode;\r\n var fromX = 0;\r\n var fromY = 0;\r\n if (fromNode) {\r\n fromX = fromNode.pixelX + fromNode.dx;\r\n fromY = fromNode.pixelY + fromNode.dy;\r\n }\r\n var toX = 0;\r\n var toY = 0;\r\n if (toNode) {\r\n toX = toNode.pixelX + toNode.dx;\r\n toY = toNode.pixelY + toNode.dy;\r\n }\r\n if (radius > 0) {\r\n var x1 = radius * $math.cos(startAngle) + fromX;\r\n var y1 = radius * $math.sin(startAngle) + fromY;\r\n var x2 = radius * $math.cos(endAngle) + toX;\r\n var y2 = radius * $math.sin(endAngle) + toY;\r\n //let cpAngle = startAngle + arc + (endAngle - startAngle - arc) / 2;\r\n //let arcWidth = $math.getDistance({x:x1, y:y1}, {x:x4, y:y4});\r\n //let cpx = (arcWidth) * $math.cos(cpAngle);\r\n //let cpy = (arcWidth) * $math.sin(cpAngle);\r\n var cp = { x: 0, y: 0 };\r\n var path = $path.moveTo({ x: x1, y: y1 });\r\n path += $path.arcTo(startAngle, arc, radius);\r\n path += $path.quadraticCurveTo({ x: x2, y: y2 }, cp);\r\n path += $path.arcTo(endAngle, arc, radius);\r\n path += $path.quadraticCurveTo({ x: x1, y: y1 }, cp);\r\n if (arc > 0) {\r\n this.link.path = path;\r\n }\r\n else {\r\n this.link.path = \"\";\r\n }\r\n if (this.maskBullets) {\r\n this.bulletsMask.path = path;\r\n this.bulletsContainer.mask = this.bulletsMask;\r\n }\r\n var mAngle1 = startAngle + arc / 2;\r\n var mAngle2 = endAngle + arc / 2;\r\n var middleLine = this.middleLine;\r\n middleLine.x1 = radius * $math.cos(mAngle1) + fromX;\r\n middleLine.y1 = radius * $math.sin(mAngle1) + fromY;\r\n middleLine.x2 = radius * $math.cos(mAngle2) + toX;\r\n middleLine.y2 = radius * $math.sin(mAngle2) + toY;\r\n middleLine.cpx = 0;\r\n middleLine.cpy = 0;\r\n middleLine.stroke = this.fill;\r\n this.positionBullets();\r\n }\r\n }\r\n };\r\n Object.defineProperty(ChordLink.prototype, \"radius\", {\r\n /**\r\n * @return End Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * [radius description]\r\n *\r\n * @todo Description\r\n * @param value End Y\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"radius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordLink.prototype, \"arc\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"arc\");\r\n },\r\n /**\r\n * [arc description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"arc\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ChordLink;\r\n}(FlowDiagramLink));\r\nexport { ChordLink };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ChordLink\"] = ChordLink;\r\n","/**\r\n * Chord diagram module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FlowDiagram, FlowDiagramDataItem } from \"./FlowDiagram\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { ChordNode } from \"../elements/ChordNode\";\r\nimport { ChordLink } from \"../elements/ChordLink\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo rearange notes after dragged\r\n/**\r\n * Defines a [[DataItem]] for [[ChordDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar ChordDiagramDataItem = /** @class */ (function (_super) {\r\n __extends(ChordDiagramDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChordDiagramDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ChordDiagramDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return ChordDiagramDataItem;\r\n}(FlowDiagramDataItem));\r\nexport { ChordDiagramDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Chord Diagram chart.\r\n *\r\n * @see {@link IChordDiagramEvents} for a list of available Events\r\n * @see {@link IChordDiagramAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/chord-diagram/} for documentation\r\n * @important\r\n */\r\nvar ChordDiagram = /** @class */ (function (_super) {\r\n __extends(ChordDiagram, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChordDiagram() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * [valueAngle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.valueAngle = 0;\r\n _this.className = \"ChordDiagram\";\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.radius = percent(80);\r\n _this.innerRadius = -15;\r\n _this.nodePadding = 5;\r\n var chordContainer = _this.chartContainer.createChild(Container);\r\n chordContainer.align = \"center\";\r\n chordContainer.valign = \"middle\";\r\n chordContainer.shouldClone = false;\r\n chordContainer.layout = \"absolute\";\r\n _this.chordContainer = chordContainer;\r\n _this.nodesContainer.parent = chordContainer;\r\n _this.linksContainer.parent = chordContainer;\r\n _this.chartContainer.events.on(\"maxsizechanged\", _this.invalidate, _this, false);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Redraws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ChordDiagram.prototype.validate = function () {\r\n var _this = this;\r\n var chartContainer = this.chartContainer;\r\n var endAngle = this.endAngle;\r\n var startAngle = this.startAngle + this.nodePadding / 2;\r\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\r\n var innerRect = { x: 0, y: 0, width: 0, height: 0 };\r\n rect = $math.getCommonRectangle([rect, innerRect]);\r\n var maxRadius = Math.min(chartContainer.innerWidth / rect.width, chartContainer.innerHeight / rect.height);\r\n if (!$type.isNumber(maxRadius)) {\r\n maxRadius = 0;\r\n }\r\n var radius = $utils.relativeRadiusToValue(this.radius, maxRadius);\r\n var pixelInnerRadius = $utils.relativeRadiusToValue(this.innerRadius, radius, true);\r\n var total = this.dataItem.values.value.sum;\r\n var count = 0;\r\n var newTotal = 0;\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n _this.getNodeValue(node);\r\n count++;\r\n var value = node.total;\r\n if (node.total / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n newTotal += value;\r\n });\r\n this.valueAngle = (endAngle - this.startAngle - this.nodePadding * count) / newTotal;\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var slice = node.slice;\r\n slice.radius = radius;\r\n slice.innerRadius = pixelInnerRadius;\r\n var value = node.total;\r\n if (node.total / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n node.adjustedTotal = value;\r\n var arc;\r\n if (_this.nonRibbon) {\r\n arc = (endAngle - _this.startAngle) / count - _this.nodePadding;\r\n }\r\n else {\r\n arc = _this.valueAngle * value;\r\n }\r\n slice.arc = arc;\r\n slice.startAngle = startAngle;\r\n node.trueStartAngle = startAngle;\r\n node.parent = _this.nodesContainer;\r\n node.validate(); // otherwise flickers - nodes are already created, but not yet positioned etc.\r\n startAngle += arc + _this.nodePadding;\r\n });\r\n this.chordContainer.definedBBox = { x: radius * rect.x, y: radius * rect.y, width: radius * rect.width, height: radius * rect.height };\r\n this.chordContainer.invalidateLayout();\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n ChordDiagram.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Chord diagram\");\r\n }\r\n };\r\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\r\n ChordDiagram.prototype.createDataItem = function () {\r\n return new ChordDiagramDataItem();\r\n };\r\n Object.defineProperty(ChordDiagram.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face begins (the radial axis is drawn) at the\r\n * top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the radial axis start horizontally to\r\n * the right, as opposed to vertical.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face ends (the radial axis is drawn) exactly\r\n * where it has started, forming a full 360 circle. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to end the circle somewhere else.\r\n *\r\n * E.g. setting this to 180 will make the radar face end at horizontal line\r\n * to the left off the center.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value End angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the Radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the Chord nodes.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"nonRibbon\", {\r\n /**\r\n * @return Non-ribbon\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nonRibbon\");\r\n },\r\n /**\r\n *\r\n * If you set this to true, all the lines will be of the same width. This is done by making middleLine of a ChordLink visible.\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"nonRibbon\", value, true);\r\n this.links.template.middleLine.strokeOpacity = 1;\r\n this.links.template.link.fillOpacity = 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n ChordDiagram.prototype.createNode = function () {\r\n var node = new ChordNode();\r\n this._disposers.push(node);\r\n return node;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ChordDiagram.prototype.createLink = function () {\r\n var link = new ChordLink();\r\n this._disposers.push(link);\r\n return link;\r\n };\r\n return ChordDiagram;\r\n}(FlowDiagram));\r\nexport { ChordDiagram };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ChordDiagram\"] = ChordDiagram;\r\n","/**\r\n * Module that defines everything related to building Columns.\r\n * It is a container which has column element which is a RoundedRectangle.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates Columns.\r\n *\r\n * @see {@link IColumnEvents} for a list of available events\r\n * @see {@link IColumnAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar Column = /** @class */ (function (_super) {\r\n __extends(Column, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Column() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Column\";\r\n _this.width = percent(80);\r\n _this.height = percent(80);\r\n //this.isMeasured = true; // for correct position of the tooltip\r\n _this.events.disableType(\"transformed\"); // not to bug parent\r\n _this.applyOnClones = true;\r\n _this.strokeOpacity = 1;\r\n _this.layout = \"none\";\r\n _this.createAssets();\r\n // otherwise users will have to set layout themselves if they'll want to align, scale etc children\r\n _this.events.on(\"childadded\", _this.handleKidAdded, _this, false);\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n Column.prototype.handleKidAdded = function () {\r\n if (this.layout == \"none\") {\r\n this.layout = \"absolute\";\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Column.prototype.createAssets = function () {\r\n this.column = this.createChild(RoundedRectangle);\r\n this.column.shouldClone = false;\r\n this.column.isMeasured = false;\r\n this.column.cornerRadius(0, 0, 0, 0);\r\n this._disposers.push(this.column);\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n Column.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n var column = this.column;\r\n if (column) {\r\n column.width = $math.min(this.pixelWidth, this.maxWidth);\r\n column.height = $math.min(this.pixelHeight, this.maxHeight);\r\n if (column.invalid) {\r\n column.validate(); // important!\r\n }\r\n }\r\n };\r\n /**\r\n * Copies all parameters from another [[Column]].\r\n *\r\n * @param source Source Column\r\n */\r\n Column.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.column) {\r\n this.column.copyFrom(source.column);\r\n }\r\n };\r\n Object.defineProperty(Column.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n if (this.column) {\r\n return { x: 0, y: 0, width: this.column.measuredWidth, height: this.column.measuredHeight };\r\n }\r\n else {\r\n return { x: 0, y: 0, width: $math.min(this.pixelWidth, this.maxWidth), height: $math.min(this.pixelHeight, this.maxHeight) };\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Column;\r\n}(Container));\r\nexport { Column };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Column\"] = Column;\r\n","/**\r\n * Column series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYSeries, XYSeriesDataItem } from \"./XYSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Column } from \"../elements/Column\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[ColumnSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar ColumnSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(ColumnSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColumnSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColumnSeriesDataItem\";\r\n _this.locations[\"dateX\"] = 0.5;\r\n _this.locations[\"dateY\"] = 0.5;\r\n _this.locations[\"categoryX\"] = 0.5;\r\n _this.locations[\"categoryY\"] = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"column\", {\r\n /**\r\n * @return Column\r\n */\r\n get: function () {\r\n return this._column;\r\n },\r\n /**\r\n * A column used to draw a column for this data item.\r\n *\r\n * @param column\r\n */\r\n set: function (column) {\r\n this.setColumn(column);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ColumnSeriesDataItem.prototype.setColumn = function (column) {\r\n var _this = this;\r\n if (this._column && column != this._column) {\r\n $array.remove(this.sprites, this._column);\r\n }\r\n this._column = column;\r\n if (column) {\r\n var prevDataItem = column.dataItem;\r\n if (prevDataItem && prevDataItem != this) {\r\n prevDataItem.column = undefined;\r\n }\r\n this.addSprite(column);\r\n this._disposers.push(new Disposer(function () {\r\n // TODO investigate why component is undefined\r\n // https://codepen.io/team/amcharts/pen/dac4be245d658233a6d7e5597df2208b?editors=0010\r\n if (_this.component) {\r\n _this.component.columns.removeValue(column);\r\n }\r\n }));\r\n }\r\n };\r\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"width\", {\r\n get: function () {\r\n var width = this.properties.width;\r\n if (this._adapterO) {\r\n width = this._adapterO.apply(\"width\", width);\r\n }\r\n return width;\r\n },\r\n set: function (value) {\r\n if (this.properties.width != value) {\r\n this.properties.width = value;\r\n if (this.component) {\r\n this.component.validateDataElement(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"height\", {\r\n get: function () {\r\n var height = this.properties.height;\r\n if (this._adapterO) {\r\n height = this._adapterO.apply(\"height\", height);\r\n }\r\n return height;\r\n },\r\n set: function (value) {\r\n if (this.properties.height != value) {\r\n this.properties.height = value;\r\n if (this.component) {\r\n this.component.validateDataElement(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"rangesColumns\", {\r\n /**\r\n * A dictionary storing axes ranges columns by axis uid\r\n */\r\n get: function () {\r\n if (!this._rangesColumns) {\r\n this._rangesColumns = new Dictionary();\r\n }\r\n return this._rangesColumns;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ColumnSeriesDataItem;\r\n}(XYSeriesDataItem));\r\nexport { ColumnSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a column graph.\r\n *\r\n * @see {@link IColumnSeriesEvents} for a list of available Events\r\n * @see {@link IColumnSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar ColumnSeries = /** @class */ (function (_super) {\r\n __extends(ColumnSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColumnSeries() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Start location within cell for columns.\r\n */\r\n _this._startLocation = 0;\r\n /**\r\n * End location within cell for columns.\r\n */\r\n _this._endLocation = 1;\r\n _this.className = \"ColumnSeries\";\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.strokeOpacity = 0;\r\n _this.fillOpacity = 1;\r\n _this.clustered = true;\r\n var columnsContainer = _this.mainContainer.createChild(Container);\r\n columnsContainer.shouldClone = false;\r\n columnsContainer.isMeasured = false;\r\n columnsContainer.layout = \"none\";\r\n _this._columnsContainer = columnsContainer;\r\n _this.columns.template.pixelPerfect = false;\r\n _this.tooltipColorSource = _this.columns.template;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ColumnSeries.prototype, \"columnsContainer\", {\r\n /**\r\n * A container that columns are created in.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n return this._columnsContainer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n ColumnSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Column Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n ColumnSeries.prototype.createDataItem = function () {\r\n return new ColumnSeriesDataItem();\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ColumnSeries.prototype.validate = function () {\r\n //@todo Check if we can do better than use `instanceof`\r\n // find start/end locations based on clustered/stacked settings\r\n // go through chart series instead of base axis series, because axis series doesn't maintain order\r\n var _this = this;\r\n this.group.node.removeAttribute(\"fill\");\r\n if (this.chart && this.xAxis && this.yAxis) {\r\n var baseAxisSeries = this.chart.series;\r\n var clusterCount_1 = 0;\r\n var index_1 = 0;\r\n var sortedByAxis_1 = [];\r\n $iter.each(baseAxisSeries.iterator(), function (series) {\r\n if (series instanceof ColumnSeries) {\r\n if (_this.baseAxis == series.baseAxis) {\r\n var index_2;\r\n if (_this.baseAxis == _this.xAxis) {\r\n index_2 = _this.chart.yAxes.indexOf(series.yAxis);\r\n }\r\n else {\r\n index_2 = _this.chart.xAxes.indexOf(series.xAxis);\r\n }\r\n sortedByAxis_1.push({ series: series, axis: index_2 });\r\n }\r\n }\r\n });\r\n sortedByAxis_1.sort(function (a, b) { return a.axis - b.axis; });\r\n var prevAxisIndex_1;\r\n $array.each(sortedByAxis_1, function (sortedItem) {\r\n var series = sortedItem.series;\r\n if (series instanceof ColumnSeries) {\r\n if ((!series.stacked && series.clustered) || (prevAxisIndex_1 != sortedItem.axis && series.clustered)) {\r\n clusterCount_1++;\r\n }\r\n if (series == _this) {\r\n index_1 = clusterCount_1 - 1;\r\n }\r\n }\r\n prevAxisIndex_1 = sortedItem.axis;\r\n });\r\n if (!this.clustered) {\r\n index_1 = 0;\r\n clusterCount_1 = 1;\r\n }\r\n var renderer = this.baseAxis.renderer;\r\n var cellStartLocation = renderer.cellStartLocation;\r\n var cellEndLocation = renderer.cellEndLocation;\r\n this._startLocation = cellStartLocation + (index_1 / clusterCount_1) * (cellEndLocation - cellStartLocation);\r\n this._endLocation = cellStartLocation + (index_1 + 1) / clusterCount_1 * (cellEndLocation - cellStartLocation);\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis instanceof CategoryAxis && yAxis instanceof ValueAxis) {\r\n if (xAxis.sortBySeries == this) {\r\n this.sortCategoryAxis(xAxis, \"valueY\");\r\n }\r\n }\r\n if (yAxis instanceof CategoryAxis && xAxis instanceof ValueAxis) {\r\n if (yAxis.sortBySeries == this) {\r\n this.sortCategoryAxis(yAxis, \"valueX\");\r\n }\r\n }\r\n }\r\n _super.prototype.validate.call(this);\r\n for (var i = 0; i < this.startIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n this.disableUnusedColumns(dataItem);\r\n }\r\n for (var i = this.dataItems.length - 1; i > this.endIndex; i--) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n this.disableUnusedColumns(dataItem);\r\n }\r\n this._propertiesChanged = false;\r\n };\r\n ColumnSeries.prototype.sortCategoryAxis = function (axis, key) {\r\n var _this = this;\r\n this.dataItems.values.sort(function (x, y) {\r\n return y.values[key].workingValue - x.values[key].workingValue;\r\n });\r\n var i = 0;\r\n this.dataItems.each(function (dataItem) {\r\n dataItem._index = i;\r\n i++;\r\n });\r\n axis.dataItems.each(function (dataItem) {\r\n var axis = dataItem.component;\r\n var currentPosition = axis.categoryToPosition(dataItem.category) - dataItem.deltaPosition;\r\n var seriesDataItem = axis.getSeriesDataItemByCategory(dataItem.category, _this);\r\n if (seriesDataItem) {\r\n var index = _this.dataItems.indexOf(seriesDataItem);\r\n dataItem._index = index;\r\n var deltaPosition = $math.round((index + 0.5) / _this.dataItems.length - currentPosition, 3);\r\n if (dataItem.deltaAnimation && !dataItem.deltaAnimation.isDisposed() && dataItem.deltaAnimation.animationOptions[0].to == deltaPosition) {\r\n // void\r\n }\r\n else if (deltaPosition != $math.round(dataItem.deltaPosition, 3)) {\r\n if (dataItem.deltaAnimation) {\r\n dataItem.deltaAnimation.stop();\r\n }\r\n dataItem.deltaAnimation = dataItem.animate({ property: \"deltaPosition\", from: -deltaPosition, to: 0 }, axis.interpolationDuration, axis.interpolationEasing);\r\n _this._disposers.push(dataItem.deltaAnimation);\r\n }\r\n }\r\n });\r\n axis.dataItems.values.sort(function (x, y) {\r\n return x.index - y.index;\r\n });\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n ColumnSeries.prototype.validateDataElement = function (dataItem) {\r\n // important oder here, first real, then super. we need this to know size\r\n if (this.chart && this.xAxis && this.yAxis) {\r\n this.validateDataElementReal(dataItem);\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n }\r\n };\r\n /**\r\n * Returns relative start location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\r\n ColumnSeries.prototype.getStartLocation = function (dataItem) {\r\n var startLocation = this._startLocation;\r\n if (this.baseAxis == this.xAxis) {\r\n startLocation += dataItem.locations[this.xOpenField] - 0.5;\r\n }\r\n else {\r\n startLocation += dataItem.locations[this.yOpenField] - 0.5;\r\n }\r\n return startLocation;\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n /*\r\n public handleDataItemWorkingValueChange(dataItem?: this[\"_dataItem\"], name?: string): void {\r\n if (this.simplifiedProcessing) {\r\n this.validateDataElement(dataItem);\r\n }\r\n else {\r\n super.handleDataItemWorkingValueChange(dataItem, name);\r\n }\r\n }*/\r\n /**\r\n * Returns relative end location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\r\n ColumnSeries.prototype.getEndLocation = function (dataItem) {\r\n var endLocation = this._endLocation;\r\n if (this.baseAxis == this.xAxis) {\r\n endLocation += dataItem.locations[this.xField] - 0.5;\r\n }\r\n else {\r\n endLocation += dataItem.locations[this.yField] - 0.5;\r\n }\r\n return endLocation;\r\n };\r\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n ColumnSeries.prototype.validateDataElementReal = function (dataItem) {\r\n var _this = this;\r\n //\tif (dataItem.hasValue([this.xField, this.yField])) { // todo: this doesn't work with categories, think of a better way\r\n var l;\r\n var r;\r\n var t;\r\n var b;\r\n var startLocation = this.getStartLocation(dataItem);\r\n var endLocation = this.getEndLocation(dataItem);\r\n var xField = this.xField;\r\n var xOpenField = this.xOpenField;\r\n var yField = this.yField;\r\n var yOpenField = this.yOpenField;\r\n var template = this.columns.template;\r\n var percentWidth = template.percentWidth;\r\n var percentHeight = template.percentHeight;\r\n var pixelWidth = template.pixelWidth;\r\n var pixelHeight = template.pixelHeight;\r\n var maxWidth = template.maxWidth;\r\n var maxHeight = template.maxHeight;\r\n var paddingLeft = template.pixelPaddingLeft;\r\n var paddingRight = template.pixelPaddingRight;\r\n var paddingTop = template.pixelPaddingTop;\r\n var paddingBottom = template.pixelPaddingBottom;\r\n var outOfBounds = false;\r\n var diw = dataItem.width;\r\n if ($type.hasValue(diw)) {\r\n if ($type.isNumber(diw)) {\r\n pixelWidth = diw;\r\n }\r\n if (diw instanceof Percent) {\r\n percentWidth = diw.value * 100;\r\n }\r\n }\r\n var dih = dataItem.height;\r\n if ($type.hasValue(dih)) {\r\n if ($type.isNumber(dih)) {\r\n pixelHeight = dih;\r\n }\r\n if (dih instanceof Percent) {\r\n percentHeight = dih.value * 100;\r\n }\r\n }\r\n // two category axes\r\n if ((this.xAxis instanceof CategoryAxis) && (this.yAxis instanceof CategoryAxis)) {\r\n if (!dataItem.hasValue(this._xValueFields) || !dataItem.hasValue(this._yValueFields)) {\r\n return;\r\n }\r\n startLocation = 0;\r\n endLocation = 1;\r\n if (!$type.isNaN(percentWidth)) {\r\n var offset = $math.round((endLocation - startLocation) * (1 - percentWidth / 100) / 2, 5);\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n l = this.xAxis.getX(dataItem, xOpenField, startLocation);\r\n r = this.xAxis.getX(dataItem, xField, endLocation);\r\n // in case width is set in pixels\r\n if ($type.isNaN(percentWidth)) {\r\n var offset = ((r - l) - pixelWidth) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n // in case max width is set in pixels\r\n if (!$type.isNaN(maxWidth) && maxWidth < Math.abs(r - l)) {\r\n var offset = ((r - l) - maxWidth) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n startLocation = 0;\r\n endLocation = 1;\r\n if (!$type.isNaN(percentHeight)) {\r\n var offset = $math.round((1 - percentHeight / 100) / 2, 5);\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n t = this.yAxis.getY(dataItem, yOpenField, startLocation);\r\n b = this.yAxis.getY(dataItem, yField, endLocation);\r\n // in case width is set in pixels\r\n if ($type.isNaN(percentHeight)) {\r\n var offset = ((b - t) - pixelHeight) / 2;\r\n b += offset;\r\n t -= offset;\r\n }\r\n // in case max width is set in pixels\r\n if (!$type.isNaN(maxHeight) && maxHeight < Math.abs(b - t)) {\r\n var offset = ((b - t) - maxHeight) / 2;\r\n b += offset;\r\n t -= offset;\r\n }\r\n r = this.fixHorizontalCoordinate(r);\r\n l = this.fixHorizontalCoordinate(l);\r\n t = this.fixVerticalCoordinate(t);\r\n b = this.fixVerticalCoordinate(b);\r\n }\r\n else if (this.baseAxis == this.xAxis) {\r\n if (!dataItem.hasValue(this._yValueFields)) {\r\n return;\r\n }\r\n // in case width is set in percent\r\n if (!$type.isNaN(percentWidth)) {\r\n var offset = $math.round((endLocation - startLocation) * (1 - percentWidth / 100) / 2, 5);\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n l = this.xAxis.getX(dataItem, xOpenField, startLocation);\r\n r = this.xAxis.getX(dataItem, xField, endLocation);\r\n // in case width is set in pixels\r\n if ($type.isNaN(percentWidth)) {\r\n var offset = ((r - l) - pixelWidth) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n // in case width is set in pixels\r\n if (!$type.isNaN(maxWidth) && maxWidth < Math.abs(r - l)) {\r\n var offset = ((r - l) - maxWidth) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n var bottomLocation = dataItem.locations[yOpenField];\r\n var topLocation = dataItem.locations[yField];\r\n // otherwise gantt chart will start items in the middle of a cell\r\n if (this.yAxis instanceof ValueAxis) {\r\n if (this.dataFields[this.yField] != this.dataFields[this.yOpenField]) {\r\n bottomLocation = 0;\r\n topLocation = 0;\r\n }\r\n }\r\n b = this.yAxis.getY(dataItem, yOpenField, bottomLocation);\r\n t = this.yAxis.getY(dataItem, yField, topLocation);\r\n // used to save location for bullets, but it's not a good approach\r\n // dataItem.locations[xField] = startLocation + (endLocation - startLocation) / 2;\r\n var axisLenght = Math.ceil(this.yAxis.axisLength);\r\n if ((t < 0 && b < 0) || (t > axisLenght && b > axisLenght)) {\r\n outOfBounds = true;\r\n }\r\n t = this.fixVerticalCoordinate(t);\r\n b = this.fixVerticalCoordinate(b);\r\n if (Math.abs(r - l) - paddingLeft - paddingRight == 0) {\r\n outOfBounds = true;\r\n }\r\n }\r\n // horizontal bars\r\n else {\r\n if (!dataItem.hasValue(this._xValueFields)) {\r\n return;\r\n }\r\n if (!$type.isNaN(percentHeight)) {\r\n var offset = $math.round((endLocation - startLocation) * (1 - percentHeight / 100) / 2, 5);\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n t = this.yAxis.getY(dataItem, yOpenField, startLocation);\r\n b = this.yAxis.getY(dataItem, yField, endLocation);\r\n // in case height is set in pixels\r\n if ($type.isNaN(percentHeight)) {\r\n var offset = ((b - t) - pixelHeight) / 2;\r\n b -= offset;\r\n t += offset;\r\n }\r\n // in case height is set in pixels\r\n if (!$type.isNaN(maxHeight) && maxHeight < Math.abs(b - t)) {\r\n var offset = ((b - t) - maxHeight) / 2;\r\n b -= offset;\r\n t += offset;\r\n }\r\n var rightLocation = dataItem.locations[xField];\r\n var leftLocation = dataItem.locations[xOpenField];\r\n // otherwise gantt chart will start items in the middle of a cell\r\n if (this.xAxis instanceof ValueAxis) {\r\n if (this.dataFields[this.xField] != this.dataFields[this.xOpenField]) {\r\n rightLocation = 0;\r\n leftLocation = 0;\r\n }\r\n }\r\n r = this.xAxis.getX(dataItem, xField, rightLocation);\r\n l = this.xAxis.getX(dataItem, xOpenField, leftLocation);\r\n // used to save location for bullets, but it's not a good approach\r\n // dataItem.locations[yField] = startLocation + (endLocation - startLocation) / 2;\r\n var axisLenght = Math.ceil(this.xAxis.axisLength);\r\n if ((r < 0 && l < 0) || (r > axisLenght && l > axisLenght)) {\r\n outOfBounds = true;\r\n }\r\n r = this.fixHorizontalCoordinate(r);\r\n l = this.fixHorizontalCoordinate(l);\r\n if (Math.abs(t - b) - paddingTop - paddingBottom == 0) {\r\n outOfBounds = true;\r\n }\r\n }\r\n var w = Math.abs(r - l);\r\n var h = Math.abs(b - t);\r\n var x = Math.min(l, r);\r\n var y = Math.min(t, b);\r\n if (!outOfBounds) {\r\n var column_1;\r\n if (!dataItem.column) {\r\n column_1 = this.columns.create();\r\n //$object.forceCopyProperties(this.columns.template, column, visualProperties);\r\n $object.copyProperties(this, column_1, visualProperties); // need this because 3d columns are not in the same container\r\n $object.copyProperties(this.columns.template, column_1, visualProperties); // second time, no force, so that columns.template would override series properties\r\n dataItem.addSprite(column_1);\r\n dataItem.column = column_1;\r\n column_1.paper = this.paper; // sometimes pattern is not drawn if is set with adapter without this.\r\n // accessibility\r\n if (this.itemsFocusable()) {\r\n if (!$type.hasValue(this.role)) {\r\n this.role = \"menu\";\r\n }\r\n if (!$type.hasValue(column_1.role)) {\r\n column_1.role = \"menuitem\";\r\n }\r\n column_1.focusable = true;\r\n }\r\n else {\r\n if (!$type.hasValue(this.role)) {\r\n this.role = \"list\";\r\n }\r\n if (!$type.hasValue(column_1.role)) {\r\n column_1.role = \"listitem\";\r\n }\r\n column_1.focusable = false;\r\n }\r\n if (column_1.focusable) {\r\n column_1.events.on(\"focus\", function (ev) {\r\n column_1.readerTitle = _this.populateString(_this.itemReaderText, dataItem);\r\n }, undefined, false);\r\n column_1.events.on(\"blur\", function (ev) {\r\n column_1.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n if (column_1.hoverable) {\r\n column_1.events.on(\"over\", function (ev) {\r\n column_1.readerTitle = _this.populateString(_this.itemReaderText, dataItem);\r\n }, undefined, false);\r\n column_1.events.on(\"out\", function (ev) {\r\n column_1.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n column_1.parent = this.columnsContainer;\r\n column_1.virtualParent = this;\r\n }\r\n else {\r\n column_1 = dataItem.column;\r\n if (this._propertiesChanged) {\r\n $object.copyProperties(this, column_1, visualProperties);\r\n $object.copyProperties(this.columns.template, column_1, visualProperties);\r\n $array.each(visualProperties, function (property) {\r\n column_1[property] = column_1[property];\r\n });\r\n }\r\n }\r\n column_1.width = w;\r\n column_1.height = h;\r\n column_1.x = x;\r\n column_1.y = y;\r\n column_1.realX = l;\r\n column_1.realY = t;\r\n column_1.realWidth = r - l;\r\n column_1.realHeight = b - t;\r\n this.setColumnStates(column_1);\r\n if (column_1.invalid) {\r\n column_1.validate(); // validate as if it was used previously, it will flicker with previous dimensions\r\n }\r\n column_1.__disabled = false;\r\n //column.returnAfterTemp();\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (!rangeColumn) {\r\n rangeColumn = _this.columns.create();\r\n //$object.forceCopyProperties(this.columns.template, rangeColumn, visualProperties);\r\n $object.copyProperties(axisRange.contents, rangeColumn, visualProperties); // need this because 3d columns are not in the same container\r\n dataItem.addSprite(rangeColumn);\r\n dataItem.rangesColumns.setKey(axisRange.uid, rangeColumn);\r\n rangeColumn.paper = _this.paper; // sometimes pattern is not drawn if is set with adapter without this.\r\n }\r\n rangeColumn.parent = axisRange.contents;\r\n rangeColumn.width = w;\r\n rangeColumn.height = h;\r\n rangeColumn.x = x;\r\n rangeColumn.y = y;\r\n _this.setColumnStates(rangeColumn);\r\n if (rangeColumn.invalid) {\r\n rangeColumn.validate(); // validate as if it was used previously, it will flicker with previous dimensions\r\n }\r\n rangeColumn.__disabled = false;\r\n //rangeColumn.returnAfterTemp();\r\n });\r\n }\r\n else {\r\n this.disableUnusedColumns(dataItem);\r\n }\r\n dataItem.itemWidth = w;\r\n dataItem.itemHeight = h;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ColumnSeries.prototype.disableUnusedColumns = function (dataItem) {\r\n if (dataItem) {\r\n if (dataItem.column) {\r\n // otherwise might flicker when enabling\r\n dataItem.column.width = 0;\r\n dataItem.column.height = 0;\r\n dataItem.column.__disabled = true;\r\n }\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (rangeColumn) {\r\n // otherwise might flicker when enabling\r\n rangeColumn.width = 0;\r\n rangeColumn.height = 0;\r\n rangeColumn.__disabled = true;\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Apply different state/coloring to columns based on the change value.\r\n *\r\n * @param sprite Sprite to apply state to\r\n * @todo Do not apply accessibility to wicks of the candlesticks\r\n */\r\n ColumnSeries.prototype.setColumnStates = function (sprite) {\r\n if (this._dropFromOpenState || this._dropFromPreviousState || this._riseFromOpenState || this._riseFromPreviousState) {\r\n var dataItem = sprite.dataItem;\r\n if (this.xAxis instanceof ValueAxis || this.yAxis instanceof ValueAxis) {\r\n var open_1;\r\n var value = void 0;\r\n var change = void 0;\r\n if (this.baseAxis == this.yAxis) {\r\n if (this.xOpenField && this.xField && this.xAxis instanceof ValueAxis) {\r\n open_1 = dataItem.getValue(this.xOpenField);\r\n value = dataItem.getValue(this.xField);\r\n }\r\n change = dataItem.getValue(this.xAxis.axisFieldName + \"X\", \"previousChange\");\r\n }\r\n else {\r\n if (this.yOpenField && this.yField && this.yAxis instanceof ValueAxis) {\r\n open_1 = dataItem.getValue(this.yOpenField);\r\n value = dataItem.getValue(this.yField);\r\n }\r\n change = dataItem.getValue(this.yAxis.axisFieldName + \"Y\", \"previousChange\");\r\n }\r\n if (value < open_1) {\r\n dataItem.droppedFromOpen = true;\r\n sprite.defaultState.copyFrom(this._dropFromOpenState);\r\n sprite.setState(this._dropFromOpenState, 0);\r\n }\r\n else {\r\n dataItem.droppedFromOpen = false;\r\n sprite.defaultState.copyFrom(this._riseFromOpenState);\r\n sprite.setState(this._riseFromOpenState, 0);\r\n }\r\n if (change < 0) {\r\n dataItem.droppedFromPrevious = true;\r\n sprite.defaultState.copyFrom(this._dropFromPreviousState);\r\n sprite.setState((this._dropFromPreviousState), 0);\r\n }\r\n else {\r\n dataItem.droppedFromPrevious = false;\r\n sprite.defaultState.copyFrom(this._riseFromPreviousState);\r\n sprite.setState((this._riseFromPreviousState), 0);\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(ColumnSeries.prototype, \"columns\", {\r\n /**\r\n * A list of column elements in the series.\r\n *\r\n * @return Columns\r\n */\r\n get: function () {\r\n if (!this._columns) {\r\n this._columns = new ListTemplate(this.createColumnTemplate());\r\n this._disposers.push(new ListDisposer(this._columns));\r\n this._disposers.push(this._columns.template);\r\n }\r\n return this._columns;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and returns a column element to use as a template.\r\n *\r\n * @return Column template\r\n */\r\n ColumnSeries.prototype.createColumnTemplate = function () {\r\n return new Column();\r\n };\r\n Object.defineProperty(ColumnSeries.prototype, \"clustered\", {\r\n /**\r\n * @return Clustered?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"clustered\");\r\n },\r\n /**\r\n * Cluster this series columns?\r\n *\r\n * Setting to `false` will make columns overlap with other series.\r\n *\r\n * @default true\r\n * @param value Clustered?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"clustered\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeries.prototype, \"dropFromOpenState\", {\r\n /**\r\n * @return State\r\n */\r\n get: function () {\r\n if (!this._dropFromOpenState) {\r\n this._dropFromOpenState = this.states.create(\"dropFromOpenState\");\r\n }\r\n return this._dropFromOpenState;\r\n },\r\n /**\r\n * A state to apply to a column when close value is lower than open value.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * NOTE: this will work only if at least one axis is [[ValueAxis]].\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\r\n set: function (value) {\r\n this._dropFromOpenState = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeries.prototype, \"dropFromPreviousState\", {\r\n /**\r\n * @return State\r\n */\r\n get: function () {\r\n if (!this._dropFromPreviousState) {\r\n this._dropFromPreviousState = this.states.create(\"dropFromPreviousState\");\r\n }\r\n return this._dropFromPreviousState;\r\n },\r\n /**\r\n * A state to apply to a column when its value is lower value of a previous\r\n * column.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\r\n set: function (value) {\r\n this._dropFromPreviousState = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeries.prototype, \"riseFromOpenState\", {\r\n /**\r\n * @return State\r\n */\r\n get: function () {\r\n if (!this._riseFromOpenState) {\r\n this._riseFromOpenState = this.states.create(\"riseFromOpenState\");\r\n }\r\n return this._riseFromOpenState;\r\n },\r\n /**\r\n * A state to apply to a column when close value is same or higher than open\r\n * value.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * NOTE: this will work only if at least one axis is [[ValueAxis]].\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\r\n set: function (value) {\r\n this._riseFromOpenState = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeries.prototype, \"riseFromPreviousState\", {\r\n /**\r\n * @return State\r\n */\r\n get: function () {\r\n if (!this._riseFromPreviousState) {\r\n this._riseFromPreviousState = this.states.create(\"riseFromPreviousState\");\r\n }\r\n return this._riseFromPreviousState;\r\n },\r\n /**\r\n * A state to apply to a column when its value is same or higher than value\r\n * of a previous column.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\r\n set: function (value) {\r\n this._riseFromPreviousState = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates value of the related legend item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n ColumnSeries.prototype.updateLegendValue = function (dataItem, notRange) {\r\n var _this = this;\r\n _super.prototype.updateLegendValue.call(this, dataItem, notRange);\r\n if (this.legendDataItem) {\r\n var marker = this.legendDataItem.marker;\r\n var fromOpenState_1;\r\n var fromPreviousState_1;\r\n if (dataItem) {\r\n if (dataItem.droppedFromOpen) {\r\n fromOpenState_1 = this._dropFromOpenState;\r\n }\r\n else {\r\n fromOpenState_1 = this._riseFromOpenState;\r\n }\r\n if (dataItem.droppedFromPrevious) {\r\n fromPreviousState_1 = this._dropFromPreviousState;\r\n }\r\n else {\r\n fromPreviousState_1 = this._riseFromPreviousState;\r\n }\r\n }\r\n $iter.each(marker.children.iterator(), function (child) {\r\n if (dataItem) {\r\n child.setState(fromPreviousState_1);\r\n child.setState(fromOpenState_1);\r\n }\r\n else {\r\n // todo: think what to do here, maybe apply above states based on totals?\r\n child.setState(_this._riseFromPreviousState);\r\n child.setState(_this._riseFromOpenState);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n ColumnSeries.prototype.createLegendMarker = function (marker) {\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.removeChildren();\r\n var column = marker.createChild(RoundedRectangle);\r\n column.shouldClone = false;\r\n $object.copyProperties(this, column, visualProperties);\r\n column.copyFrom(this.columns.template);\r\n column.padding(0, 0, 0, 0); // if columns will have padding (which is often), legend marker will be very narrow\r\n column.width = w;\r\n column.height = h;\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = this.fill;\r\n legendDataItem.colorOrig = this.fill;\r\n };\r\n /**\r\n * Copies all properties from another instance of [[ColumnSeries]].\r\n *\r\n * @param source Source series\r\n */\r\n ColumnSeries.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.columns.template.copyFrom(source.columns.template);\r\n };\r\n /**\r\n * returns bullet x location\r\n * @ignore\r\n */\r\n ColumnSeries.prototype.getBulletLocationX = function (bullet, field) {\r\n if (this.baseAxis == this.xAxis) {\r\n var bulletLocationX = bullet.locationX;\r\n if (!$type.isNumber(bulletLocationX)) {\r\n bulletLocationX = 0.5;\r\n }\r\n var endLocation = this.getEndLocation(bullet.dataItem);\r\n var startLocation = this.getStartLocation(bullet.dataItem);\r\n return endLocation - (endLocation - startLocation) * bulletLocationX;\r\n }\r\n else {\r\n return _super.prototype.getBulletLocationX.call(this, bullet, field);\r\n }\r\n };\r\n /**\r\n * returns bullet y location\r\n * @ignore\r\n */\r\n ColumnSeries.prototype.getBulletLocationY = function (bullet, field) {\r\n if (this.baseAxis == this.yAxis) {\r\n var bulletLocationY = bullet.locationY;\r\n if (!$type.isNumber(bulletLocationY)) {\r\n bulletLocationY = 0.5;\r\n }\r\n var endLocation = this.getEndLocation(bullet.dataItem);\r\n var startLocation = this.getStartLocation(bullet.dataItem);\r\n return endLocation - (endLocation - startLocation) * bulletLocationY;\r\n }\r\n else {\r\n return _super.prototype.getBulletLocationY.call(this, bullet, field);\r\n }\r\n };\r\n ColumnSeries.prototype.getAdjustedXLocation = function (dataItem, field, bulletLocationX) {\r\n //if (this.baseAxis == this.xAxis) {\r\n if (!$type.isNumber(bulletLocationX)) {\r\n if (dataItem) {\r\n bulletLocationX = dataItem.locations[field];\r\n }\r\n else {\r\n bulletLocationX = 0.5;\r\n }\r\n }\r\n return this._endLocation - (this._endLocation - this._startLocation) * (1 - bulletLocationX);\r\n //}\r\n //else {\r\n //\treturn super.getAdjustedXLocation(dataItem, field);\r\n //}\r\n };\r\n ColumnSeries.prototype.getAdjustedYLocation = function (dataItem, field, bulletLocationY) {\r\n //if (this.baseAxis == this.yAxis) {\r\n if (!$type.isNumber(bulletLocationY)) {\r\n if (dataItem) {\r\n bulletLocationY = dataItem.locations[field];\r\n }\r\n else {\r\n bulletLocationY = 0.5;\r\n }\r\n }\r\n return this._endLocation - (this._endLocation - this._startLocation) * bulletLocationY;\r\n //}\r\n //else {\r\n //\treturn super.getAdjustedYLocation(dataItem, field);\r\n //}\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n ColumnSeries.prototype.fixVerticalCoordinate = function (coordinate) {\r\n var paddingBottom = this.columns.template.pixelPaddingBottom;\r\n var paddingTop = this.columns.template.pixelPaddingTop;\r\n var minY = -paddingTop;\r\n var maxY = this.yAxis.axisLength + paddingBottom;\r\n return $math.fitToRange(coordinate, minY, maxY);\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n ColumnSeries.prototype.fixHorizontalCoordinate = function (coordinate) {\r\n var paddingLeft = this.columns.template.pixelPaddingLeft;\r\n var paddingRight = this.columns.template.pixelPaddingRight;\r\n var minX = -paddingLeft;\r\n var maxX = this.xAxis.axisLength + paddingRight;\r\n return $math.fitToRange(coordinate, minX, maxX);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ColumnSeries.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this.columns.clear();\r\n };\r\n return ColumnSeries;\r\n}(XYSeries));\r\nexport { ColumnSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColumnSeries\"] = ColumnSeries;\r\nregistry.registeredClasses[\"ColumnSeriesDataItem\"] = ColumnSeriesDataItem;\r\n","/**\r\n * TreeMap series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\nimport * as $object from \"../../core/utils/Object\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[TreeMapSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar TreeMapSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(TreeMapSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TreeMapSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"TreeMapSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(TreeMapSeriesDataItem.prototype, \"parentName\", {\r\n /**\r\n * Data for the this particular item.\r\n *\r\n * @param value Item's data\r\n */\r\n //public set dataContext(value: Object) {\r\n //\tthis._dataContext = value;\r\n //}\r\n /**\r\n * @return Item's data\r\n */\r\n /*\r\n public get dataContext(): Object {\r\n // It's because data of tree series is TreeMapDataItems.\r\n if (this._dataContext) {\r\n return (<any>this._dataContext).dataContext;\r\n }\r\n }*/\r\n /**\r\n * The name of the item's parent item.\r\n *\r\n * @return Parent name\r\n */\r\n get: function () {\r\n var treeMapDataItem = this.treeMapDataItem;\r\n if (treeMapDataItem && treeMapDataItem.parent) {\r\n return treeMapDataItem.parent.name;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapSeriesDataItem.prototype, \"value\", {\r\n /**\r\n * Item's numeric value.\r\n *\r\n * @readonly\r\n * @return Value\r\n */\r\n get: function () {\r\n var treeMapDataItem = this.treeMapDataItem;\r\n if (treeMapDataItem) {\r\n return treeMapDataItem.value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapSeriesDataItem.prototype, \"treeMapDataItem\", {\r\n /**\r\n * A corresponding data item from the tree map.\r\n *\r\n * @readonly\r\n * @return Data item\r\n */\r\n get: function () {\r\n return this._dataContext;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Hides the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param toValue A value to set to `fields` when hiding\r\n * @param fields A list of data fields to set value to `toValue`\r\n */\r\n TreeMapSeriesDataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n var treeMapDataItem = this.treeMapDataItem;\r\n if (treeMapDataItem) {\r\n treeMapDataItem.hide(duration);\r\n }\r\n return _super.prototype.hide.call(this, duration, delay, toValue, fields);\r\n };\r\n /**\r\n * Shows the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param fields A list of fields to set values of\r\n */\r\n TreeMapSeriesDataItem.prototype.show = function (duration, delay, fields) {\r\n var treeMapDataItem = this.treeMapDataItem;\r\n if (treeMapDataItem) {\r\n treeMapDataItem.show(duration, delay, fields);\r\n }\r\n return _super.prototype.show.call(this, duration, delay, fields);\r\n };\r\n return TreeMapSeriesDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { TreeMapSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines Series for a TreeMap chart.\r\n *\r\n * @see {@link ITreeMapSeriesEvents} for a list of available Events\r\n * @see {@link ITreeMapSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar TreeMapSeries = /** @class */ (function (_super) {\r\n __extends(TreeMapSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TreeMapSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"TreeMapSeries\";\r\n _this.applyTheme();\r\n _this.fillOpacity = 1;\r\n _this.strokeOpacity = 1;\r\n _this.minBulletDistance = 0;\r\n _this.columns.template.tooltipText = \"{parentName} {name}: {value}\"; //@todo add format number?\r\n _this.columns.template.configField = \"config\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.stroke = interfaceColors.getFor(\"background\");\r\n _this.dataFields.openValueX = \"x0\";\r\n _this.dataFields.valueX = \"x1\";\r\n _this.dataFields.openValueY = \"y0\";\r\n _this.dataFields.valueY = \"y1\";\r\n _this.sequencedInterpolation = false;\r\n _this.showOnInit = false;\r\n // otherwise nodes don't stack nicely to each other\r\n _this.columns.template.pixelPerfect = false;\r\n return _this;\r\n }\r\n /**\r\n * Processes data item.\r\n *\r\n * @param dataItem Data item\r\n * @param dataContext Raw data\r\n * @param index Index of the data item\r\n */\r\n TreeMapSeries.prototype.processDataItem = function (dataItem, dataContext) {\r\n dataContext.seriesDataItem = dataItem; // save a reference here. dataContext is TreeMapDataItem and we need to know dataItem sometimes\r\n _super.prototype.processDataItem.call(this, dataItem, dataContext);\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n TreeMapSeries.prototype.createDataItem = function () {\r\n return new TreeMapSeriesDataItem();\r\n };\r\n /**\r\n * Shows series.\r\n *\r\n * @param duration Duration of fade in (ms)\r\n * @return Animation\r\n */\r\n TreeMapSeries.prototype.show = function (duration) {\r\n if (this.preventShow) {\r\n return;\r\n }\r\n var interpolationDuration = this.defaultState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n this.dataItems.each(function (dataItem) {\r\n //dataItem.treeMapDataItem.setWorkingValue(\"value\", dataItem.treeMapDataItem.values.value.value);\r\n dataItem.show(duration);\r\n });\r\n return _super.prototype.showReal.call(this, interpolationDuration);\r\n };\r\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of fade out (ms)\r\n * @return Animation\r\n */\r\n TreeMapSeries.prototype.hide = function (duration) {\r\n var interpolationDuration = this.defaultState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n var animation = _super.prototype.hideReal.call(this, interpolationDuration);\r\n this.dataItems.each(function (dataItem) {\r\n //dataItem.treeMapDataItem.setWorkingValue(\"value\", 0);\r\n dataItem.hide(duration);\r\n });\r\n return animation;\r\n };\r\n /**\r\n * Process values.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n TreeMapSeries.prototype.processValues = function () {\r\n // Just overriding so that inherited method does not kick in.\r\n };\r\n /**\r\n * Returns relative start location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\r\n TreeMapSeries.prototype.getStartLocation = function (dataItem) {\r\n return 0;\r\n };\r\n /**\r\n * Returns relative end location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\r\n TreeMapSeries.prototype.getEndLocation = function (dataItem) {\r\n return 1;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n TreeMapSeries.prototype.dataChangeUpdate = function () {\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n TreeMapSeries.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Add empty data fields if the they are not set, so that XYSeries\r\n // dataField check does not result in error.\r\n if (!$type.hasValue(config.dataFields) || !$type.isObject(config.dataFields)) {\r\n config.dataFields = {};\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n TreeMapSeries.prototype.createLegendMarker = function (marker) {\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.removeChildren();\r\n var column = marker.createChild(RoundedRectangle);\r\n column.shouldClone = false;\r\n $object.copyProperties(this, column, visualProperties);\r\n //column.copyFrom(<any>this.columns.template);\r\n column.padding(0, 0, 0, 0); // if columns will have padding (which is often), legend marker will be very narrow\r\n column.width = w;\r\n column.height = h;\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = column.fill;\r\n legendDataItem.colorOrig = column.fill;\r\n };\r\n TreeMapSeries.prototype.disableUnusedColumns = function (dataItem) {\r\n _super.prototype.disableUnusedColumns.call(this, dataItem);\r\n if (dataItem.column) {\r\n dataItem.column.__disabled = false;\r\n }\r\n };\r\n return TreeMapSeries;\r\n}(ColumnSeries));\r\nexport { TreeMapSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"TreeMapSeries\"] = TreeMapSeries;\r\nregistry.registeredClasses[\"TreeMapSeriesDataItem\"] = TreeMapSeriesDataItem;\r\n","/**\r\n * TreeMap chart module.\r\n *\r\n * Parts of the functionality used in this module are taken from D3.js library\r\n * (https://d3js.org/)\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { DictionaryTemplate, DictionaryDisposer } from \"../../core/utils/Dictionary\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { TreeMapSeries } from \"../series/TreeMapSeries\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[TreeMap]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar TreeMapDataItem = /** @class */ (function (_super) {\r\n __extends(TreeMapDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TreeMapDataItem() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Required for squarify functionality.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.rows = [];\r\n _this.className = \"TreeMapDataItem\";\r\n _this.values.value = { workingValue: 0 };\r\n _this.values.x0 = {};\r\n _this.values.y0 = {};\r\n _this.values.x1 = {};\r\n _this.values.y1 = {};\r\n _this.hasChildren.children = true;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(TreeMapDataItem.prototype, \"legendDataItem\", {\r\n /**\r\n * @return Legend data item\r\n */\r\n get: function () {\r\n return this._legendDataItem;\r\n },\r\n /**\r\n * A legend's data item, that corresponds to this data item.\r\n *\r\n * @param value Legend data item\r\n */\r\n set: function (value) {\r\n this._legendDataItem = value;\r\n if (value.label) {\r\n value.label.dataItem = this;\r\n }\r\n if (value.valueLabel) {\r\n value.valueLabel.dataItem = this;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a duration (ms) the Data Item should take to animate from one\r\n * value to another.\r\n *\r\n * If the duration is not specified via parameter, this method will try to\r\n * request a default duration from the related `Component`.\r\n *\r\n * @param duration Default duration (ms)\r\n * @return Duration (ms)\r\n */\r\n TreeMapDataItem.prototype.getDuration = function () {\r\n return 0;\r\n };\r\n Object.defineProperty(TreeMapDataItem.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n var value = 0;\r\n if (!this.children || this.children.length == 0) {\r\n value = this.values[\"value\"].workingValue;\r\n }\r\n else {\r\n $iter.each(this.children.iterator(), function (child) {\r\n var childValue = child.value;\r\n if ($type.isNumber(childValue)) {\r\n value += childValue;\r\n }\r\n });\r\n }\r\n return value;\r\n /*\r\n let value = this.values[\"value\"].workingValue;\r\n \r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n if (this.children) {\r\n $iter.each(this.children.iterator(), (child) => {\r\n if ($type.isNumber(child.value)) {\r\n value += child.value;\r\n }\r\n });\r\n }\r\n }\r\n return value;*/\r\n },\r\n /**\r\n * Numeric value of the item.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"value\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"percent\", {\r\n /**\r\n * Percent value of a node\r\n */\r\n get: function () {\r\n if (this.parent) {\r\n return this.value / this.parent.value * 100;\r\n }\r\n return 100;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"x0\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.values.x0.value;\r\n },\r\n /**\r\n * Item's X position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value X\r\n */\r\n set: function (value) {\r\n this.setValue(\"x0\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"x1\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.values.x1.value;\r\n },\r\n /**\r\n * Item's X position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value X\r\n */\r\n set: function (value) {\r\n this.setValue(\"x1\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"y0\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.values.y0.value;\r\n },\r\n /**\r\n * Item's Y position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n this.setValue(\"y0\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"y1\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.values.y1.value;\r\n },\r\n /**\r\n * Item's Y position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n this.setValue(\"y1\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"name\", {\r\n /**\r\n * @return Name\r\n */\r\n get: function () {\r\n return this.properties.name;\r\n },\r\n /**\r\n * Item's name.\r\n *\r\n * @param name Name\r\n */\r\n set: function (name) {\r\n this.setProperty(\"name\", name);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"children\", {\r\n /**\r\n * @return Item's children\r\n */\r\n get: function () {\r\n return this.properties.children;\r\n },\r\n /**\r\n * A list of item's sub-children.\r\n *\r\n * Having children means that the TreeMap chat will automatically be\r\n * \"drillable\". Clicking on an item with children will zoom to the item, then\r\n * display its children.\r\n *\r\n * Treemap can have any level of nesting.\r\n *\r\n * @param children Item's children\r\n */\r\n set: function (children) {\r\n this.setProperty(\"children\", children);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"level\", {\r\n /**\r\n * Depth level in the treemap hierarchy.\r\n *\r\n * The top-level item will have level set at 0. Its children will have\r\n * level 1, and so on.\r\n *\r\n * @readonly\r\n * @return Level\r\n */\r\n get: function () {\r\n if (!this.parent) {\r\n return 0;\r\n }\r\n else {\r\n return this.parent.level + 1;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"color\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n var color = this.properties.color;\r\n if (color == undefined) {\r\n if (this.parent) {\r\n color = this.parent.color;\r\n }\r\n }\r\n if (color == undefined) {\r\n if (this.component) {\r\n color = this.component.colors.getIndex(this.component.colors.step * this.index);\r\n }\r\n }\r\n return color;\r\n },\r\n /**\r\n * Item's color.\r\n *\r\n * If not set, will use parent's color, or, if that is not set either,\r\n * automatically assigned color from chart's color set. (`chart.colors`)\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.setProperty(\"color\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"fill\", {\r\n /**\r\n * @ignore\r\n * For the legend to work properly\r\n */\r\n get: function () {\r\n return this.color;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"series\", {\r\n get: function () {\r\n return this._series;\r\n },\r\n /**\r\n * Series of children data items\r\n * @todo: proper descrition\r\n */\r\n set: function (series) {\r\n if (series != this._series) {\r\n if (this._series) {\r\n this.component.series.removeValue(this._series);\r\n this._series.dispose();\r\n }\r\n this._series = series;\r\n this._disposers.push(series);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Hides the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param toValue A value to set to `fields` when hiding\r\n * @param fields A list of data fields to set value to `toValue`\r\n */\r\n TreeMapDataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n this.setWorkingValue(\"value\", 0);\r\n if (this.children) {\r\n this.children.each(function (child) {\r\n child.hide(duration, delay, toValue, fields);\r\n });\r\n }\r\n var seriesDataItem = this.seriesDataItem;\r\n if (seriesDataItem) {\r\n seriesDataItem.bullets.each(function (key, value) {\r\n value.hide();\r\n value.preventShow = true;\r\n });\r\n }\r\n return _super.prototype.hide.call(this, duration, delay, toValue, fields);\r\n };\r\n /**\r\n * Shows the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param fields A list of fields to set values of\r\n */\r\n TreeMapDataItem.prototype.show = function (duration, delay, fields) {\r\n this.setWorkingValue(\"value\", this.values.value.value);\r\n if (this.children) {\r\n this.children.each(function (child) {\r\n child.show(duration, delay, fields);\r\n });\r\n }\r\n var seriesDataItem = this.seriesDataItem;\r\n if (seriesDataItem) {\r\n seriesDataItem.bullets.each(function (key, value) {\r\n value.preventShow = false;\r\n });\r\n }\r\n return _super.prototype.show.call(this, duration, delay, fields);\r\n };\r\n return TreeMapDataItem;\r\n}(XYChartDataItem));\r\nexport { TreeMapDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a TreeMap chart.\r\n *\r\n * @see {@link ITreeMapEvents} for a list of available Events\r\n * @see {@link ITreeMapAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/treemap/} for documentation\r\n */\r\nvar TreeMap = /** @class */ (function (_super) {\r\n __extends(TreeMap, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TreeMap() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * An algorithm used to divide area into squares based on their value.\r\n *\r\n * Available options: squarify (default), binaryTree, slice, dice, sliceDice.\r\n *\r\n * ```TypeScript\r\n * chart.layoutAlgorithm = chart.sliceDice;\r\n * ```\r\n * ```JavaScript\r\n * chart.layoutAlgorithm = chart.sliceDice;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"layoutAlgorithm\": \"sliceDice\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/treemap/#Area_division_methods} For more info and examples.\r\n * @default squarify\r\n */\r\n _this.layoutAlgorithm = _this.squarify;\r\n /**\r\n * Is the chart zoomable?\r\n *\r\n * If the chart is `zoomable`, and items have sub-items, the chart will\r\n * drill-down to sub-items when click on their parent item.\r\n *\r\n * @default true\r\n */\r\n _this.zoomable = true;\r\n _this.className = \"TreeMap\";\r\n _this._usesData = true;\r\n _this.maxLevels = 2;\r\n _this.currentLevel = 0;\r\n _this.hideParentColumns = false;\r\n _this.colors = new ColorSet();\r\n _this.sorting = \"descending\";\r\n // create two value axes for the chart\r\n var xAxis = _this.xAxes.push(new ValueAxis());\r\n xAxis.title.disabled = true;\r\n xAxis.strictMinMax = true;\r\n var xRenderer = xAxis.renderer;\r\n xRenderer.inside = true;\r\n xRenderer.labels.template.disabled = true;\r\n xRenderer.ticks.template.disabled = true;\r\n xRenderer.grid.template.disabled = true;\r\n xRenderer.axisFills.template.disabled = true;\r\n xRenderer.minGridDistance = 100;\r\n xRenderer.line.disabled = true;\r\n xRenderer.baseGrid.disabled = true;\r\n //xRenderer.inversed = true;\r\n var yAxis = _this.yAxes.push(new ValueAxis());\r\n yAxis.title.disabled = true;\r\n yAxis.strictMinMax = true;\r\n var yRenderer = yAxis.renderer;\r\n yRenderer.inside = true;\r\n yRenderer.labels.template.disabled = true;\r\n yRenderer.ticks.template.disabled = true;\r\n yRenderer.grid.template.disabled = true;\r\n yRenderer.axisFills.template.disabled = true;\r\n yRenderer.minGridDistance = 100;\r\n yRenderer.line.disabled = true;\r\n yRenderer.baseGrid.disabled = true;\r\n yRenderer.inversed = true;\r\n // shortcuts\r\n _this.xAxis = xAxis;\r\n _this.yAxis = yAxis;\r\n var template = new TreeMapSeries();\r\n _this.seriesTemplates = new DictionaryTemplate(template);\r\n template.virtualParent = _this;\r\n _this._disposers.push(new DictionaryDisposer(_this.seriesTemplates));\r\n _this._disposers.push(template);\r\n _this.zoomOutButton.events.on(\"hit\", function () {\r\n _this.zoomToChartDataItem(_this._homeDataItem);\r\n }, undefined, false);\r\n _this.seriesTemplates.events.on(\"insertKey\", function (event) {\r\n event.newValue.isTemplate = true;\r\n }, undefined, false);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(TreeMap.prototype, \"navigationBar\", {\r\n /**\r\n * Returns navigationBar if it is added to a chart\r\n */\r\n get: function () {\r\n return this._navigationBar;\r\n },\r\n /**\r\n * A navigation bar used to show \"breadcrumb\" control, indicating current\r\n * drill-down path.\r\n */\r\n set: function (navigationBar) {\r\n var _this = this;\r\n if (this._navigationBar != navigationBar) {\r\n this._navigationBar = navigationBar;\r\n navigationBar.parent = this;\r\n navigationBar.toBack();\r\n navigationBar.links.template.events.on(\"hit\", function (event) {\r\n var dataItem = event.target.dataItem.dataContext;\r\n if (!dataItem.isDisposed()) {\r\n _this.zoomToChartDataItem(dataItem);\r\n _this.createTreeSeries(dataItem);\r\n }\r\n }, undefined, true);\r\n this._disposers.push(navigationBar);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * (Re)validates chart's data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n TreeMap.prototype.validateData = function () {\r\n this.series.clear();\r\n this._tempSeries = [];\r\n _super.prototype.validateData.call(this);\r\n if (this._homeDataItem) {\r\n this._homeDataItem.dispose();\r\n }\r\n var homeDataItem = this.dataItems.template.clone(); // cant' use createDataItem here!\r\n this._homeDataItem = homeDataItem;\r\n $iter.each(this.dataItems.iterator(), function (dataItem) {\r\n dataItem.parent = homeDataItem;\r\n });\r\n homeDataItem.children = this.dataItems;\r\n homeDataItem.x0 = 0;\r\n homeDataItem.y0 = 0;\r\n homeDataItem.name = this._homeText;\r\n var maxX = 1000;\r\n var maxY = Math.round((maxX * this.pixelHeight / this.pixelWidth) / 10) * 10 || 1000;\r\n homeDataItem.x1 = maxX;\r\n homeDataItem.y1 = maxY;\r\n this.xAxis.min = 0;\r\n this.xAxis.max = maxX;\r\n this.xAxis.getMinMax();\r\n this.yAxis.min = 0;\r\n this.yAxis.max = maxY;\r\n this.yAxis.getMinMax();\r\n this.layoutItems(homeDataItem);\r\n this.createTreeSeries(homeDataItem);\r\n this.feedLegend();\r\n };\r\n /**\r\n * Layouts and sizes all items according to their value and\r\n * `layoutAlgorithm`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Parent data item\r\n */\r\n TreeMap.prototype.layoutItems = function (parent, sorting) {\r\n if (parent) {\r\n var children = parent.children;\r\n if (!sorting) {\r\n sorting = this.sorting;\r\n }\r\n if (sorting == \"ascending\") {\r\n children.values.sort(function (a, b) {\r\n return a.value - b.value;\r\n });\r\n }\r\n if (sorting == \"descending\") {\r\n children.values.sort(function (a, b) {\r\n return b.value - a.value;\r\n });\r\n }\r\n this._updateDataItemIndexes(0);\r\n this.layoutAlgorithm(parent);\r\n for (var i = 0, len = children.length; i < len; i++) {\r\n var node = children.getIndex(i);\r\n if (node.children) {\r\n this.layoutItems(node);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Creates and returns a new treemap series.\r\n *\r\n * @todo Description\r\n * @param dataItem Data item to create series out of\r\n */\r\n TreeMap.prototype.createTreeSeries = function (dataItem) {\r\n var _this = this;\r\n this._tempSeries = [];\r\n var navigationData = [dataItem];\r\n // create parent series and navigation data\r\n var parentDataItem = dataItem.parent;\r\n while (parentDataItem != undefined) {\r\n this.initSeries(parentDataItem);\r\n navigationData.push(parentDataItem);\r\n parentDataItem = parentDataItem.parent;\r\n }\r\n navigationData.reverse();\r\n if (this.navigationBar) {\r\n this.navigationBar.data = navigationData;\r\n }\r\n // create series and children series\r\n this.createTreeSeriesReal(dataItem);\r\n // add those which are not in the list\r\n $array.each(this._tempSeries, function (series) {\r\n if (_this.series.indexOf(series) == -1) {\r\n _this.series.push(series);\r\n }\r\n series.zIndex = series.level;\r\n });\r\n };\r\n /**\r\n * [createTreeSeriesReal description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n */\r\n TreeMap.prototype.createTreeSeriesReal = function (dataItem) {\r\n if (dataItem.children) {\r\n var level = dataItem.level;\r\n if (level < this.currentLevel + this.maxLevels) {\r\n this.initSeries(dataItem);\r\n for (var i = 0; i < dataItem.children.length; i++) {\r\n var child = dataItem.children.getIndex(i);\r\n if (child.children) {\r\n this.createTreeSeriesReal(child);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n TreeMap.prototype.setData = function (value) {\r\n this.currentLevel = 0;\r\n this.currentlyZoomed = undefined;\r\n this.xAxis.start = 0;\r\n this.xAxis.end = 1;\r\n this.yAxis.start = 0;\r\n this.yAxis.end = 1;\r\n _super.prototype.setData.call(this, value);\r\n };\r\n /**\r\n * @ignore\r\n * Overriding, as tree map series are created on the fly all the time\r\n */\r\n TreeMap.prototype.seriesAppeared = function () {\r\n return true;\r\n };\r\n /**\r\n * Initializes the treemap series.\r\n *\r\n * @todo Description\r\n * @param dataItem Chart data item\r\n */\r\n TreeMap.prototype.initSeries = function (dataItem) {\r\n var _this = this;\r\n if (!dataItem.series) {\r\n var series = void 0;\r\n var template = this.seriesTemplates.getKey(dataItem.level.toString());\r\n if (template) {\r\n series = template.clone();\r\n }\r\n else {\r\n series = this.series.create();\r\n }\r\n // for the legend to get {value}\r\n series.dataItem.dataContext = dataItem;\r\n series.name = dataItem.name;\r\n series.parentDataItem = dataItem;\r\n dataItem.series = series;\r\n var level = dataItem.level;\r\n series.level = level;\r\n var dataContext = dataItem.dataContext;\r\n if (dataContext) {\r\n series.config = dataContext.config;\r\n }\r\n this.dataUsers.removeValue(series); // series do not use data directly, that's why we remove it\r\n series.data = dataItem.children.values;\r\n series.fill = dataItem.color;\r\n series.columnsContainer.hide(0);\r\n series.bulletsContainer.hide(0);\r\n series.columns.template.adapter.add(\"fill\", function (fill, target) {\r\n var dataItem = target.dataItem;\r\n if (dataItem) {\r\n var treeMapDataItem = dataItem.treeMapDataItem;\r\n if (treeMapDataItem) {\r\n target.fill = treeMapDataItem.color;\r\n target.adapter.remove(\"fill\"); //@todo: make it possible adapters applied once?\r\n return treeMapDataItem.color;\r\n }\r\n }\r\n });\r\n if (this.zoomable && (dataItem.level > this.currentLevel || (dataItem.children && dataItem.children.length > 0))) {\r\n series.columns.template.cursorOverStyle = MouseCursorStyle.pointer;\r\n if (this.zoomable) {\r\n series.columns.template.events.on(\"hit\", function (event) {\r\n var seriesDataItem = event.target.dataItem;\r\n if (dataItem.level > _this.currentLevel) {\r\n _this.zoomToChartDataItem(seriesDataItem.treeMapDataItem.parent);\r\n }\r\n else {\r\n _this.zoomToSeriesDataItem(seriesDataItem);\r\n }\r\n }, this, undefined);\r\n }\r\n }\r\n }\r\n this._tempSeries.push(dataItem.series);\r\n };\r\n /**\r\n * Toggles bullets so that labels that belong to current drill level are\r\n * shown.\r\n *\r\n * @param duration Animation duration (ms)\r\n */\r\n TreeMap.prototype.toggleBullets = function (duration) {\r\n var _this = this;\r\n // hide all series which are not in tempSeries\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (_this._tempSeries.indexOf(series) == -1) {\r\n //series.hideReal(duration);\r\n series.columnsContainer.hide();\r\n series.bulletsContainer.hide(duration);\r\n }\r\n else {\r\n //series.showReal(duration);\r\n series.columnsContainer.show();\r\n series.bulletsContainer.show(duration);\r\n series.dataItems.each(function (dataItem) {\r\n dataItem.bullets.each(function (key, bullet) {\r\n bullet.show();\r\n });\r\n });\r\n if (series.level < _this.currentLevel) {\r\n if (_this.hideParentColumns) {\r\n series.columnsContainer.hide();\r\n }\r\n series.bulletsContainer.hide(duration);\r\n }\r\n else if (series.level == _this.currentLevel) {\r\n if (_this.maxLevels > 1) {\r\n series.dataItems.each(function (dataItem) {\r\n if (dataItem.treeMapDataItem.children) {\r\n dataItem.bullets.each(function (key, bullet) {\r\n bullet.hide();\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Zooms to particular item in series.\r\n *\r\n * @param dataItem Data item\r\n */\r\n TreeMap.prototype.zoomToSeriesDataItem = function (dataItem) {\r\n this.zoomToChartDataItem(dataItem.treeMapDataItem);\r\n };\r\n /**\r\n * Zooms to particular item. If dataItem is not specified, the chart will zoom-out.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n TreeMap.prototype.zoomToChartDataItem = function (dataItem) {\r\n var _this = this;\r\n if (!dataItem) {\r\n dataItem = this._homeDataItem;\r\n }\r\n var zoomOutButton = this.zoomOutButton;\r\n // this is needed because if there is only one fist level, it won't be shown\r\n if (zoomOutButton) {\r\n if (dataItem != this._homeDataItem) {\r\n zoomOutButton.show();\r\n }\r\n else {\r\n zoomOutButton.hide();\r\n }\r\n }\r\n if (dataItem && dataItem.children) {\r\n this.xAxis.zoomToValues(dataItem.x0, dataItem.x1);\r\n this.yAxis.zoomToValues(dataItem.y0, dataItem.y1);\r\n this.currentLevel = dataItem.level;\r\n this.currentlyZoomed = dataItem;\r\n this.createTreeSeries(dataItem);\r\n var rangeChangeAnimation = this.xAxis.rangeChangeAnimation || this.yAxis.rangeChangeAnimation;\r\n if (rangeChangeAnimation && !rangeChangeAnimation.isDisposed() && !rangeChangeAnimation.isFinished()) {\r\n this._dataDisposers.push(rangeChangeAnimation);\r\n rangeChangeAnimation.events.once(\"animationended\", function () {\r\n _this.toggleBullets();\r\n });\r\n }\r\n else {\r\n this.toggleBullets();\r\n }\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n TreeMap.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"TreeMap chart\");\r\n }\r\n //this.homeText = this.language.translate(\"Home\");\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n TreeMap.prototype.createDataItem = function () {\r\n return new TreeMapDataItem();\r\n };\r\n Object.defineProperty(TreeMap.prototype, \"maxLevels\", {\r\n /**\r\n * @return Maximum drill-down level\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxLevels\");\r\n },\r\n /**\r\n * Maximum number of levels the chart will display initially.\r\n *\r\n * @default 2\r\n * @param value Maximum drill-down level\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxLevels\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMap.prototype, \"currentLevel\", {\r\n /**\r\n * @return Current level\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"currentLevel\");\r\n },\r\n /**\r\n * Current drill-down level the chart is at.\r\n *\r\n * @param value Current level\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"currentLevel\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMap.prototype, \"hideParentColumns\", {\r\n /**\r\n * @return Hide?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hideParentColumns\");\r\n },\r\n /**\r\n * If set to `true`, columns of parent nodes will be hidden when user\r\n * drills-down into deeper levels.\r\n *\r\n * @sice 4.7.4\r\n * @default false\r\n * @param value Hide?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"hideParentColumns\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMap.prototype, \"sorting\", {\r\n get: function () {\r\n return this.getPropertyValue(\"sorting\");\r\n },\r\n /**\r\n * Sorting direction of treemap items.\r\n *\r\n * Available options: \"none\", \"ascending\", and \"descending\" (default).\r\n *\r\n * @default \"descending\"\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"sorting\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and returns a new series of the suitable type.\r\n *\r\n * @return new series\r\n */\r\n TreeMap.prototype.createSeries = function () {\r\n return new TreeMapSeries();\r\n };\r\n Object.defineProperty(TreeMap.prototype, \"homeText\", {\r\n /**\r\n * @return Home text\r\n */\r\n get: function () {\r\n return this._homeText;\r\n },\r\n /**\r\n * A text displayed on the \"home\" button which is used to go back to level 0\r\n * after drill into sub-items.\r\n *\r\n * @param value Home text\r\n */\r\n set: function (value) {\r\n this._homeText = value;\r\n if (this._homeDataItem) {\r\n this._homeDataItem.name = this._homeText;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n TreeMap.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Instantiate layout algorithm\r\n if ($type.hasValue(config[\"layoutAlgorithm\"]) && $type.isString(config[\"layoutAlgorithm\"])) {\r\n switch (config[\"layoutAlgorithm\"]) {\r\n case \"squarify\":\r\n config[\"layoutAlgorithm\"] = this.squarify;\r\n break;\r\n case \"binaryTree\":\r\n config[\"layoutAlgorithm\"] = this.binaryTree;\r\n break;\r\n case \"slice\":\r\n config[\"layoutAlgorithm\"] = this.slice;\r\n break;\r\n case \"dice\":\r\n config[\"layoutAlgorithm\"] = this.dice;\r\n break;\r\n case \"sliceDice\":\r\n config[\"layoutAlgorithm\"] = this.sliceDice;\r\n break;\r\n default:\r\n delete config[\"layoutAlgorithm\"];\r\n break;\r\n }\r\n }\r\n // Set type for navigation bar\r\n if ($type.hasValue(config.navigationBar) && !$type.hasValue(config.navigationBar.type)) {\r\n config.navigationBar.type = \"NavigationBar\";\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n }\r\n };\r\n /**\r\n * Measures the size of container and informs its children of how much size\r\n * they can occupy, by setting their relative `maxWidth` and `maxHeight`\r\n * properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n TreeMap.prototype.validateLayout = function () {\r\n _super.prototype.validateLayout.call(this);\r\n this.layoutItems(this.currentlyZoomed);\r\n };\r\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n TreeMap.prototype.validateDataItems = function () {\r\n _super.prototype.validateDataItems.call(this);\r\n this.layoutItems(this._homeDataItem);\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.validateRawData();\r\n });\r\n this.zoomToChartDataItem(this._homeDataItem);\r\n };\r\n /**\r\n * ==========================================================================\r\n * TREEMAP LAYOUT FUNCTIONS\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * --------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright\r\n * notice,this list of conditions and the following disclaimer in the\r\n * documentation and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from\r\n * this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * --------------------------------------------------------------------------\r\n * @hidden\r\n */\r\n /**\r\n * Treemap layout algorithm: binaryTree.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.binaryTree = function (parent) {\r\n var nodes = parent.children, i, n = nodes.length, sum, sums = new Array(n + 1);\r\n for (sums[0] = sum = i = 0; i < n; ++i) {\r\n sums[i + 1] = sum += nodes.getIndex(i).value;\r\n }\r\n if (n > 0) {\r\n partition(0, n, parent.value, parent.x0, parent.y0, parent.x1, parent.y1);\r\n }\r\n function partition(i, j, value, x0, y0, x1, y1) {\r\n if (i >= j - 1) {\r\n var node = nodes.getIndex(i);\r\n node.x0 = x0;\r\n node.y0 = y0;\r\n node.x1 = x1;\r\n node.y1 = y1;\r\n return;\r\n }\r\n var valueOffset = sums[i], valueTarget = (value / 2) + valueOffset, k = i + 1, hi = j - 1;\r\n while (k < hi) {\r\n var mid = k + hi >>> 1;\r\n if (sums[mid] < valueTarget) {\r\n k = mid + 1;\r\n }\r\n else {\r\n hi = mid;\r\n }\r\n }\r\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) {\r\n --k;\r\n }\r\n var valueLeft = sums[k] - valueOffset, valueRight = value - valueLeft;\r\n if (value == 0) {\r\n var node = nodes.getIndex(i);\r\n node.x0 = x0;\r\n node.y0 = y0;\r\n node.x1 = x1;\r\n node.y1 = y1;\r\n return;\r\n }\r\n if ((x1 - x0) > (y1 - y0)) {\r\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\r\n partition(i, k, valueLeft, x0, y0, xk, y1);\r\n partition(k, j, valueRight, xk, y0, x1, y1);\r\n }\r\n else {\r\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\r\n partition(i, k, valueLeft, x0, y0, x1, yk);\r\n partition(k, j, valueRight, x0, yk, x1, y1);\r\n }\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: slice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.slice = function (parent) {\r\n var x0 = parent.x0;\r\n var x1 = parent.x1;\r\n var y0 = parent.y0;\r\n var y1 = parent.y1;\r\n var nodes = parent.children;\r\n var node;\r\n var i = -1;\r\n var n = nodes.length;\r\n var k = parent.value && (y1 - y0) / parent.value;\r\n while (++i < n) {\r\n node = nodes.getIndex(i);\r\n node.x0 = x0;\r\n node.x1 = x1;\r\n node.y0 = y0;\r\n y0 += node.value * k;\r\n node.y1 = y0;\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: dice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.dice = function (parent) {\r\n var x0 = parent.x0;\r\n var x1 = parent.x1;\r\n var y0 = parent.y0;\r\n var y1 = parent.y1;\r\n var nodes = parent.children, node, i = -1, n = nodes.length, k = parent.value && (x1 - x0) / parent.value;\r\n while (++i < n) {\r\n node = nodes.getIndex(i);\r\n node.y0 = y0;\r\n node.y1 = y1;\r\n node.x0 = x0;\r\n x0 += node.value * k;\r\n node.x1 = x0;\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: slideDice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.sliceDice = function (parent) {\r\n if (parent.level & 1) {\r\n this.slice(parent);\r\n }\r\n else {\r\n this.dice(parent);\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: squarify.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.squarify = function (parent) {\r\n var ratio = (1 + Math.sqrt(5)) / 2;\r\n var x0 = parent.x0;\r\n var x1 = parent.x1;\r\n var y0 = parent.y0;\r\n var y1 = parent.y1;\r\n var nodes = parent.children;\r\n var nodeValue;\r\n var i0 = 0;\r\n var i1 = 0;\r\n var n = nodes.length;\r\n var dx;\r\n var dy;\r\n var value = parent.value;\r\n var sumValue;\r\n var minValue;\r\n var maxValue;\r\n var newRatio;\r\n var minRatio;\r\n var alpha;\r\n var beta;\r\n while (i0 < n) {\r\n dx = x1 - x0;\r\n dy = y1 - y0;\r\n // Find the next non-empty node.\r\n do {\r\n sumValue = nodes.getIndex(i1++).value;\r\n } while (!sumValue && i1 < n);\r\n minValue = maxValue = sumValue;\r\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\r\n beta = sumValue * sumValue * alpha;\r\n minRatio = Math.max(maxValue / beta, beta / minValue);\r\n // Keep adding nodes while the aspect ratio maintains or improves.\r\n for (; i1 < n; ++i1) {\r\n sumValue += nodeValue = nodes.getIndex(i1).value;\r\n if (nodeValue < minValue) {\r\n minValue = nodeValue;\r\n }\r\n if (nodeValue > maxValue) {\r\n maxValue = nodeValue;\r\n }\r\n beta = sumValue * sumValue * alpha;\r\n newRatio = Math.max(maxValue / beta, beta / minValue);\r\n if (newRatio > minRatio) {\r\n sumValue -= nodeValue;\r\n break;\r\n }\r\n minRatio = newRatio;\r\n }\r\n // Position and record the row orientation.\r\n var row = this.dataItems.template.clone();\r\n row.value = sumValue;\r\n row.dice = dx < dy;\r\n row.children = nodes.slice(i0, i1);\r\n row.x0 = x0;\r\n row.y0 = y0;\r\n row.x1 = x1;\r\n row.y1 = y1;\r\n if (row.dice) {\r\n row.y1 = value ? (y0 += (dy * sumValue) / value) : y1;\r\n this.dice(row);\r\n }\r\n else {\r\n row.x1 = value ? (x0 += (dx * sumValue) / value) : x1;\r\n this.slice(row);\r\n }\r\n value -= sumValue;\r\n i0 = i1;\r\n }\r\n };\r\n TreeMap.prototype.handleSeriesAdded2 = function () {\r\n // void\r\n };\r\n /**\r\n * [handleDataItemValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n TreeMap.prototype.handleDataItemValueChange = function (dataItem, name) {\r\n if (name == \"value\") {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n TreeMap.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n if (name == \"value\") {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n TreeMap.prototype.getLegendLevel = function (dataItem) {\r\n if (!dataItem) {\r\n return;\r\n }\r\n if (!dataItem.children) {\r\n return;\r\n }\r\n if (dataItem.children.length > 1) {\r\n return dataItem;\r\n }\r\n else if (dataItem.children.length == 1) {\r\n var child = dataItem.children.getIndex(0);\r\n if (child.children) {\r\n return this.getLegendLevel(child);\r\n }\r\n else {\r\n return dataItem;\r\n }\r\n }\r\n else {\r\n return dataItem;\r\n }\r\n };\r\n TreeMap.prototype.handleLegendSeriesAdded = function (series) {\r\n // void\r\n };\r\n Object.defineProperty(TreeMap.prototype, \"homeDataItem\", {\r\n /**\r\n * A data item associated with top node.\r\n *\r\n * @since 4.8.2\r\n */\r\n get: function () {\r\n return this._homeDataItem;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n TreeMap.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n legend.dataFields.name = \"name\";\r\n var legendParent = this.getLegendLevel(this._homeDataItem);\r\n if (legendParent) {\r\n var legendData_1 = [];\r\n legendParent.children.each(function (dataItem) {\r\n //if (!dataItem.hiddenInLegend) {\r\n legendData_1.push(dataItem);\r\n //}\r\n });\r\n legend.data = legendData_1;\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n TreeMap.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this._homeDataItem = undefined;\r\n this.series.clear();\r\n if (this.navigationBar) {\r\n this.navigationBar.disposeData();\r\n }\r\n this.xAxis.disposeData();\r\n this.yAxis.disposeData();\r\n };\r\n /**\r\n * Since this chart uses hierarchical data, we need to remove childrent\r\n * dataField from export of non-hierarchical formats such as CSV and XSLX.\r\n *\r\n * @return Export\r\n */\r\n TreeMap.prototype.getExporting = function () {\r\n var _this = this;\r\n var exporting = _super.prototype.getExporting.call(this);\r\n exporting.adapter.add(\"formatDataFields\", function (info) {\r\n if (info.format == \"csv\" || info.format == \"xlsx\") {\r\n if ($type.hasValue(_this.dataFields.children)) {\r\n delete info.dataFields[_this.dataFields.children];\r\n }\r\n }\r\n return info;\r\n });\r\n return exporting;\r\n };\r\n return TreeMap;\r\n}(XYChart));\r\nexport { TreeMap };\r\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"TreeMap\"] = TreeMap;\r\n","/**\r\n * Module, defining Axis Renderer for horizontal 3D axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRendererX } from \"../axes/AxisRendererX\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Renderer for horizontal 3D axis.\r\n *\r\n * @see {@link IAxisRendererX3DEvents} for a list of available events\r\n * @see {@link IAxisRendererX3DAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererX3D = /** @class */ (function (_super) {\r\n __extends(AxisRendererX3D, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererX3D() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n *\r\n * @todo Description\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n _this.className = \"AxisRendererX3D\";\r\n _this._disposers.push(_this._chart);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX3D.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n if (grid.element) {\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n var h = this.getHeight();\r\n grid.path = $path.moveTo({ x: dx, y: dy }) + $path.lineTo({ x: dx, y: h + dy }) + $path.lineTo({ x: 0, y: h });\r\n }\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX3D.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var h = this.getHeight();\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n this.baseGrid.path = $path.moveTo({ x: dx, y: dy }) + $path.lineTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: h });\r\n };\r\n Object.defineProperty(AxisRendererX3D.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * Chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (chart) {\r\n if (chart) {\r\n this._chart.set(chart, chart.events.on(\"propertychanged\", this.handle3DChanged, this, false));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Invoked when 3D-related settings change, like depth or angle.\r\n *\r\n * @param event Event\r\n */\r\n AxisRendererX3D.prototype.handle3DChanged = function (event) {\r\n if (event.property == \"depth\" || event.property == \"angle\") {\r\n this.invalidate();\r\n }\r\n };\r\n return AxisRendererX3D;\r\n}(AxisRendererX));\r\nexport { AxisRendererX3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRendererX3D\"] = AxisRendererX3D;\r\n","/**\r\n * Module, defining Axis Renderer for vertical 3D axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRendererY } from \"../axes/AxisRendererY\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Renderer for vertical 3D axis.\r\n *\r\n * @see {@link IAxisRendererY3DEvents} for a list of available events\r\n * @see {@link IAxisRendererY3DAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererY3D = /** @class */ (function (_super) {\r\n __extends(AxisRendererY3D, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererY3D() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n *\r\n * @todo Description\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n _this.className = \"AxisRendererY3D\";\r\n _this._disposers.push(_this._chart);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY3D.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n if (grid.element) {\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n var w = this.getWidth();\r\n grid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: dx, y: dy }) + $path.lineTo({ x: w + dx, y: dy });\r\n }\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY3D.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n var w = this.getWidth();\r\n this.baseGrid.path = $path.moveTo({ x: 0, y: 0 })\r\n + $path.lineTo({ x: w, y: 0 })\r\n + $path.lineTo({ x: w + dx, y: dy });\r\n };\r\n Object.defineProperty(AxisRendererY3D.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * Chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (chart) {\r\n if (chart) {\r\n this._chart.set(chart, chart.events.on(\"propertychanged\", this.handle3DChanged, this, false));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Invoked when 3D-related settings change, like depth or angle.\r\n *\r\n * @param event Event\r\n */\r\n AxisRendererY3D.prototype.handle3DChanged = function (event) {\r\n if (event.property == \"depth\" || event.property == \"angle\") {\r\n this.invalidate();\r\n }\r\n };\r\n return AxisRendererY3D;\r\n}(AxisRendererY));\r\nexport { AxisRendererY3D };\r\n","/**\r\n * Module that defines everything related to building 3D Columns.\r\n * It is a container which has column3D element which is a Rectangle3D.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Column } from \"./Column\";\r\nimport { Rectangle3D } from \"../../core/elements/3d/Rectangle3D\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates Column3Ds.\r\n *\r\n * @see {@link IColumn3DEvents} for a list of available events\r\n * @see {@link IColumn3DAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar Column3D = /** @class */ (function (_super) {\r\n __extends(Column3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Column3D() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Column3D\";\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n Column3D.prototype.createAssets = function () {\r\n this.column3D = this.createChild(Rectangle3D);\r\n this.column3D.shouldClone = false;\r\n this.column3D.strokeOpacity = 0;\r\n // some dirty hack so that if user access column, it won't get error\r\n this.column = this.column3D;\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n Column3D.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n if (this.column3D) {\r\n this.column3D.width = this.pixelWidth;\r\n this.column3D.height = this.pixelHeight;\r\n if (this.column3D.invalid) {\r\n this.column3D.validate();\r\n }\r\n }\r\n };\r\n /**\r\n * Copies all parameters from another [[Column3D]].\r\n *\r\n * @param source Source Column3D\r\n */\r\n Column3D.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.column3D) {\r\n this.column3D.copyFrom(source.column3D);\r\n }\r\n };\r\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\r\n Column3D.prototype.setFill = function (value) {\r\n _super.prototype.setFill.call(this, value);\r\n this.column.fill = value;\r\n };\r\n return Column3D;\r\n}(Column));\r\nexport { Column3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Column3D\"] = Column3D;\r\n","/**\r\n * 3D column series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"../series/ColumnSeries\";\r\nimport { Column3D } from \"../elements/Column3D\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\nvar ColumnSeries3DDataItem = /** @class */ (function (_super) {\r\n __extends(ColumnSeries3DDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColumnSeries3DDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColumnSeries3DDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return ColumnSeries3DDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { ColumnSeries3DDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a 3D column graph.\r\n *\r\n * @see {@link IColumnSeries3DEvents} for a list of available Events\r\n * @see {@link IColumnSeries3DAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar ColumnSeries3D = /** @class */ (function (_super) {\r\n __extends(ColumnSeries3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColumnSeries3D() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColumnSeries3D\";\r\n _this.columns.template.column3D.applyOnClones = true;\r\n _this.columns.template.hiddenState.properties.visible = true;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ColumnSeries3D.prototype, \"columnsContainer\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n var chart = this.chart;\r\n if (chart && chart.columnsContainer && chart.leftAxesContainer.layout != \"vertical\" && chart.rightAxesContainer.layout != \"vertical\" && chart.bottomAxesContainer.layout != \"horizontal\" && chart.topAxesContainer.layout != \"horizontal\") {\r\n return chart.columnsContainer;\r\n }\r\n else {\r\n return this._columnsContainer;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n ColumnSeries3D.prototype.validateDataElementReal = function (dataItem) {\r\n _super.prototype.validateDataElementReal.call(this, dataItem);\r\n if (dataItem.column) {\r\n dataItem.column.dx = this.dx;\r\n dataItem.column.dy = this.dy;\r\n dataItem.column.visible = this.visible;\r\n }\r\n };\r\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ColumnSeries3D.prototype.validateDataElements = function () {\r\n _super.prototype.validateDataElements.call(this);\r\n if (this.chart) {\r\n this.chart.invalidateLayout();\r\n }\r\n };\r\n /**\r\n * Returns an element to use for 3D bar.\r\n * @ignore\r\n * @return Element.\r\n */\r\n ColumnSeries3D.prototype.createColumnTemplate = function () {\r\n return new Column3D();\r\n };\r\n Object.defineProperty(ColumnSeries3D.prototype, \"depth\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth (height) of the slices in the series in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"depth\", value, true);\r\n var template = this.columns.template; // todo: Cone is not Rectangle3D, maybe we should do some I3DShape?\r\n template.column3D.depth = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeries3D.prototype, \"angle\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Angle (0-360)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * Angle of view for the slices in series. (0-360)\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Angle (0-360)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value);\r\n var template = this.columns.template;\r\n template.column3D.angle = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ColumnSeries3D;\r\n}(ColumnSeries));\r\nexport { ColumnSeries3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColumnSeries3D\"] = ColumnSeries3D;\r\nregistry.registeredClasses[\"ColumnSeries3DDataItem\"] = ColumnSeries3DDataItem;\r\n","/**\r\n * Module for building 3D serial charts.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * Imports\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { AxisRendererX3D } from \"../axes/AxisRendererX3D\";\r\nimport { AxisRendererY3D } from \"../axes/AxisRendererY3D\";\r\nimport { ColumnSeries3D } from \"../series/ColumnSeries3D\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[XYChart3D]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar XYChart3DDataItem = /** @class */ (function (_super) {\r\n __extends(XYChart3DDataItem, _super);\r\n function XYChart3DDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"XYChart3DDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return XYChart3DDataItem;\r\n}(XYChartDataItem));\r\nexport { XYChart3DDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a 3D XY chart.\r\n *\r\n * @see {@link IXYChart3DEvents} for a list of available Events\r\n * @see {@link IXYChart3DAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/} for documentation\r\n * @important\r\n */\r\nvar XYChart3D = /** @class */ (function (_super) {\r\n __extends(XYChart3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYChart3D() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Type of the axis renderer to use for X axes.\r\n */\r\n _this._axisRendererX = AxisRendererX3D;\r\n /**\r\n * Type of the axis renderer to use for Y axes.\r\n */\r\n _this._axisRendererY = AxisRendererY3D;\r\n _this.className = \"XYChart3D\";\r\n // Set defaults\r\n _this.depth = 30;\r\n _this.angle = 30;\r\n // Creeate container for columns\r\n var columnsContainer = _this.seriesContainer.createChild(Container);\r\n columnsContainer.shouldClone = false;\r\n columnsContainer.isMeasured = false;\r\n columnsContainer.layout = \"none\";\r\n _this.columnsContainer = columnsContainer;\r\n _this.columnsContainer.mask = _this.createChild(Sprite);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * This is done because for some reason IE doesn't change mask if path of a\r\n * mask changes.\r\n */\r\n XYChart3D.prototype.updateSeriesMasks = function () {\r\n _super.prototype.updateSeriesMasks.call(this);\r\n if ($utils.isIE()) {\r\n var columnsContainer = this.columnsContainer;\r\n var mask = columnsContainer.mask;\r\n columnsContainer.mask = undefined;\r\n columnsContainer.mask = mask;\r\n }\r\n };\r\n Object.defineProperty(XYChart3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth of the 3D chart / columns in pixels.\r\n *\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"depth\", value);\r\n this.fixLayout();\r\n this.invalidateDataUsers();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * Angle the chart is viewed at.\r\n *\r\n * @todo Description (review)\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value);\r\n this.fixLayout();\r\n this.invalidateDataUsers();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart3D.prototype, \"dx3D\", {\r\n /**\r\n * A calculated horizontal 3D offset (px).\r\n *\r\n * @readonly\r\n * @return Offset (px)\r\n */\r\n get: function () {\r\n return $math.cos(this.angle) * this.depth;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart3D.prototype, \"dy3D\", {\r\n /**\r\n * A calculated vertical 3D offset (px).\r\n *\r\n * @readonly\r\n * @return Offset (px)\r\n */\r\n get: function () {\r\n return -$math.sin(this.angle) * this.depth;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * (Re)validates layout\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart3D.prototype.validateLayout = function () {\r\n _super.prototype.validateLayout.call(this);\r\n this.fixColumns();\r\n };\r\n /**\r\n * Updates the layout (padding and scrollbar positions) to accommodate for\r\n * 3D depth and angle.\r\n */\r\n XYChart3D.prototype.fixLayout = function () {\r\n this.chartContainer.paddingTop = -this.dy3D;\r\n this.chartContainer.paddingRight = this.dx3D;\r\n if (this.scrollbarX) {\r\n this.scrollbarX.dy = this.dy3D;\r\n this.scrollbarX.dx = this.dx3D;\r\n }\r\n if (this.scrollbarY) {\r\n this.scrollbarY.dy = this.dy3D;\r\n this.scrollbarY.dx = this.dx3D;\r\n }\r\n this.fixColumns();\r\n _super.prototype.fixLayout.call(this);\r\n };\r\n /**\r\n * Updates column positions, offset and dimensions based on chart's angle\r\n * and depth.\r\n */\r\n XYChart3D.prototype.fixColumns = function () {\r\n var _this = this;\r\n var count = 1;\r\n var i = 0;\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (series instanceof ColumnSeries3D) {\r\n if (!series.clustered && i > 0) {\r\n count++;\r\n }\r\n series.depthIndex = count - 1;\r\n i++;\r\n }\r\n });\r\n var s = 0;\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (series instanceof ColumnSeries3D) {\r\n series.depth = _this.depth / (count);\r\n series.angle = _this.angle;\r\n if (series.columnsContainer == _this.columnsContainer) {\r\n series.dx = _this.depth / (count) * $math.cos(_this.angle) * (series.depthIndex);\r\n series.dy = -_this.depth / (count) * $math.sin(_this.angle) * (series.depthIndex);\r\n }\r\n var inversed_1 = false;\r\n if ((series.baseAxis == series.xAxis && series.xAxis.renderer.inversed) || (series.baseAxis == series.yAxis && series.yAxis.renderer.inversed)) {\r\n inversed_1 = true;\r\n }\r\n var i_1 = 1;\r\n series.dataItems.each(function (dataItem) {\r\n var column = dataItem.column;\r\n if (column) {\r\n if (inversed_1) {\r\n column.zIndex = 1000 * (1000 - i_1) + s - series.depthIndex * 100;\r\n }\r\n else {\r\n column.zIndex = 1000 * i_1 + s - series.depthIndex * 100;\r\n }\r\n }\r\n i_1++;\r\n });\r\n if (inversed_1) {\r\n s--;\r\n }\r\n else {\r\n s++;\r\n }\r\n }\r\n });\r\n this.maskColumns();\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYChart3D.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up series\r\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n for (var i = 0, len = config.series.length; i < len; i++) {\r\n config.series[i].type = config.series[i].type || \"ColumnSeries3D\";\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n XYChart3D.prototype.maskColumns = function () {\r\n var w = this.plotContainer.pixelWidth;\r\n var h = this.plotContainer.pixelHeight;\r\n var dx = this.dx3D;\r\n var dy = this.dy3D;\r\n var path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: dx, y: dy }) + $path.lineTo({ x: w + dx, y: dy }) + $path.lineTo({ x: w + dx, y: h + dy }) + $path.lineTo({ x: w, y: h }) + $path.lineTo({ x: w, y: h }) + $path.lineTo({ x: 0, y: h }) + $path.closePath();\r\n var columnsContainer = this.columnsContainer;\r\n if (columnsContainer && columnsContainer.mask) {\r\n columnsContainer.mask.path = path;\r\n }\r\n };\r\n return XYChart3D;\r\n}(XYChart));\r\nexport { XYChart3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYChart3D\"] = XYChart3D;\r\n","/**\r\n * HeatLegend module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { LinearGradient } from \"../../core/rendering/fills/LinearGradient\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { toColor, Color } from \"../../core/utils/Color\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { ValueAxis } from \"../../charts/axes/ValueAxis\";\r\nimport { AxisRendererX } from \"../../charts/axes/AxisRendererX\";\r\nimport { AxisRendererY } from \"../../charts/axes/AxisRendererY\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $colors from \"../../core/utils/Colors\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Sankey Diagram.\r\n *\r\n * @see {@link IHeatLegendEvents} for a list of available events\r\n * @see {@link IHeatLegendAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar HeatLegend = /** @class */ (function (_super) {\r\n __extends(HeatLegend, _super);\r\n /**\r\n * Constructor\r\n */\r\n function HeatLegend() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"HeatLegend\";\r\n _this.markerContainer = _this.createChild(Container);\r\n _this.markerContainer.shouldClone = false;\r\n _this.markerCount = 1;\r\n // Create a template container and list for the a marker\r\n var marker = new RoundedRectangle();\r\n marker.minHeight = 20;\r\n marker.minWidth = 20;\r\n marker.interactionsEnabled = false;\r\n marker.fillOpacity = 1;\r\n marker.cornerRadius(0, 0, 0, 0);\r\n _this.markerContainer.minHeight = 20;\r\n _this.markerContainer.minWidth = 20;\r\n _this.orientation = \"horizontal\";\r\n _this.markers = new ListTemplate(marker);\r\n _this._disposers.push(new ListDisposer(_this.markers));\r\n _this._disposers.push(_this.markers.template);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n HeatLegend.prototype.getMinFromRules = function (property) {\r\n var series = this.series;\r\n if (series) {\r\n var minValue_1;\r\n $iter.eachContinue(series.heatRules.iterator(), function (heatRule) {\r\n if (heatRule.property == property) {\r\n minValue_1 = heatRule.min;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return minValue_1;\r\n }\r\n };\r\n HeatLegend.prototype.getMaxFromRules = function (property) {\r\n var series = this.series;\r\n if (series) {\r\n var maxValue_1;\r\n $iter.each(series.heatRules.iterator(), function (heatRule) {\r\n if (heatRule.property == property) {\r\n maxValue_1 = heatRule.max;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return maxValue_1;\r\n }\r\n };\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n HeatLegend.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n this.valueAxis.renderer.inversed = this.reverseOrder;\r\n var series = this.series;\r\n var minColor = this.minColor;\r\n var maxColor = this.maxColor;\r\n if (!$type.hasValue(minColor)) {\r\n minColor = toColor(this.getMinFromRules(\"fill\"));\r\n }\r\n if (!$type.hasValue(maxColor)) {\r\n maxColor = toColor(this.getMaxFromRules(\"fill\"));\r\n }\r\n if (series) {\r\n var seriesFill = series.fill;\r\n if (!$type.hasValue(minColor) && seriesFill instanceof Color) {\r\n minColor = seriesFill;\r\n }\r\n if (!$type.hasValue(maxColor) && seriesFill instanceof Color) {\r\n maxColor = seriesFill;\r\n }\r\n }\r\n if (!$type.hasValue(maxColor)) {\r\n maxColor = toColor(this.getMaxFromRules(\"fill\"));\r\n }\r\n var minOpacity = $type.toNumber(this.getMinFromRules(\"fillOpacity\"));\r\n if (!$type.isNumber(minOpacity)) {\r\n minOpacity = 1;\r\n }\r\n var maxOpacity = $type.toNumber(this.getMaxFromRules(\"fillOpacity\"));\r\n if (!$type.isNumber(maxOpacity)) {\r\n maxOpacity = 1;\r\n }\r\n var minStrokeOpacity = $type.toNumber(this.getMinFromRules(\"strokeOpacity\"));\r\n if (!$type.isNumber(minStrokeOpacity)) {\r\n minStrokeOpacity = 1;\r\n }\r\n var maxStrokeOpacity = $type.toNumber(this.getMaxFromRules(\"strokeOpacity\"));\r\n if (!$type.isNumber(maxStrokeOpacity)) {\r\n maxStrokeOpacity = 1;\r\n }\r\n var minStroke = toColor(this.getMinFromRules(\"stroke\"));\r\n var maxStroke = toColor(this.getMaxFromRules(\"stroke\"));\r\n //if (series) {\r\n for (var i = 0; i < this.markerCount; i++) {\r\n var marker = this.markers.getIndex(i);\r\n if (!marker) {\r\n marker = this.markers.create();\r\n marker.parent = this.markerContainer;\r\n marker.height = percent(100);\r\n marker.width = percent(100);\r\n }\r\n if (this.markerCount == 1) {\r\n var gradient = new LinearGradient();\r\n if (this.reverseOrder) {\r\n gradient.addColor(maxColor, maxOpacity);\r\n gradient.addColor(minColor, minOpacity);\r\n }\r\n else {\r\n gradient.addColor(minColor, minOpacity);\r\n gradient.addColor(maxColor, maxOpacity);\r\n }\r\n if (this.orientation == \"vertical\") {\r\n gradient.rotation = -90;\r\n }\r\n marker.fill = gradient;\r\n if ($type.hasValue(minStroke) && $type.hasValue(maxStroke)) {\r\n var strokeGradient = new LinearGradient();\r\n if (this.reverseOrder) {\r\n strokeGradient.addColor(maxStroke, maxStrokeOpacity);\r\n strokeGradient.addColor(minStroke, minStrokeOpacity);\r\n }\r\n else {\r\n strokeGradient.addColor(minStroke, minStrokeOpacity);\r\n strokeGradient.addColor(maxStroke, maxStrokeOpacity);\r\n }\r\n if (this.orientation == \"vertical\") {\r\n strokeGradient.rotation = -90;\r\n }\r\n marker.stroke = strokeGradient;\r\n }\r\n }\r\n else {\r\n var c = i;\r\n if (this.reverseOrder) {\r\n c = this.markerCount - i - 1;\r\n }\r\n var color = new Color($colors.interpolate(minColor.rgb, maxColor.rgb, c / this.markerCount));\r\n marker.fill = color;\r\n var opacity = minOpacity + (maxOpacity - minOpacity) * c / this.markerCount;\r\n marker.fillOpacity = opacity;\r\n if ($type.hasValue(minStroke) && $type.hasValue(maxStroke)) {\r\n var color_1 = new Color($colors.interpolate(minStroke.rgb, maxStroke.rgb, c / this.markerCount));\r\n marker.stroke = color_1;\r\n var opacity_1 = minStrokeOpacity + (maxStrokeOpacity - minStrokeOpacity) * c / this.markerCount;\r\n marker.strokeOpacity = opacity_1;\r\n }\r\n }\r\n }\r\n var renderer = this.valueAxis.renderer;\r\n if (this.markerCount > 1) {\r\n if (this.orientation == \"horizontal\") {\r\n renderer.minGridDistance = this.measuredWidth / this.markerCount;\r\n }\r\n else {\r\n renderer.minGridDistance = this.measuredHeight / this.markerCount;\r\n }\r\n }\r\n this.valueAxis.invalidate();\r\n for (var i = this.markerCount, len = this.markers.length; i < len; i++) {\r\n this.markers.getIndex(i).parent = undefined;\r\n }\r\n };\r\n Object.defineProperty(HeatLegend.prototype, \"minColor\", {\r\n /**\r\n * Returns minColor value\r\n * @return {Color}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minColor\");\r\n },\r\n /**\r\n * Min color of a heat legend. If a series is set for the legend, minColor is taken from series.\r\n *\r\n * @param {Color}\r\n */\r\n set: function (value) {\r\n if (!(value instanceof Color)) {\r\n value = toColor(value);\r\n }\r\n this.setColorProperty(\"minColor\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"maxColor\", {\r\n /**\r\n * Returns maxColor value\r\n * @return {Color}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxColor\");\r\n },\r\n /**\r\n * Max color of a heat legend. If a series is set for the legend, maxColor is taken from series.\r\n *\r\n * @param {Color}\r\n */\r\n set: function (value) {\r\n if (!(value instanceof Color)) {\r\n value = toColor(value);\r\n }\r\n this.setColorProperty(\"maxColor\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"markerCount\", {\r\n /**\r\n * Returns number of color squares (markers).\r\n * @return {number}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"markerCount\");\r\n },\r\n /**\r\n * Number of color squares (markers) in the heat legend. If only 1 marker is used, it will be filled with gradient.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"markerCount\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"minValue\", {\r\n /**\r\n * Returns minimum value of heat legend.\r\n * @return {number}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minValue\");\r\n },\r\n /**\r\n * Minimum value of heat legend's value axis. If a series is set for the legend, min is taken from series.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minValue\", value);\r\n this.valueAxis.min = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"maxValue\", {\r\n /**\r\n * Returns maximum value of heat legend.\r\n * @return {number}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxValue\");\r\n },\r\n /**\r\n * Maximum value of heat legend's value axis. If a series is set for the legend, max is taken from series.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxValue\", value);\r\n this.valueAxis.max = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"orientation\", {\r\n /**\r\n * Returns orientation value.\r\n *\r\n * @return {\"horizontal\" | \"vertical\"}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Heat legend orientation. Note, if you change orientation of a heat legend, you must set value axis renderer properties after that, as with orientation renderer changes.\r\n *\r\n * @param {\"horizontal\" | \"vertical\"}\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"orientation\", value, true);\r\n var markerContainer = this.markerContainer;\r\n var valueAxis = this.valueAxis;\r\n // HORIZONTAL\r\n if (value == \"horizontal\") {\r\n if (!$type.hasValue(this.width)) {\r\n this.width = 200;\r\n }\r\n this.height = undefined;\r\n valueAxis.width = percent(100);\r\n valueAxis.height = undefined;\r\n valueAxis.tooltip.pointerOrientation = \"vertical\";\r\n this.layout = \"vertical\";\r\n markerContainer.width = percent(100);\r\n markerContainer.height = undefined;\r\n if (!(valueAxis.renderer instanceof AxisRendererX)) {\r\n valueAxis.renderer = new AxisRendererX();\r\n }\r\n }\r\n // VERTICAL\r\n else {\r\n if (!$type.hasValue(this.height)) {\r\n this.height = 200;\r\n }\r\n this.width = undefined;\r\n this.layout = \"horizontal\";\r\n markerContainer.width = undefined;\r\n markerContainer.height = percent(100);\r\n valueAxis.height = percent(100);\r\n valueAxis.width = undefined;\r\n valueAxis.tooltip.pointerOrientation = \"horizontal\";\r\n if (!(valueAxis.renderer instanceof AxisRendererY)) {\r\n valueAxis.renderer = new AxisRendererY();\r\n }\r\n valueAxis.renderer.inside = true;\r\n valueAxis.renderer.labels.template.inside = true;\r\n this.markerContainer.reverseOrder = true;\r\n }\r\n var renderer = valueAxis.renderer;\r\n renderer.grid.template.disabled = true;\r\n renderer.axisFills.template.disabled = true;\r\n renderer.baseGrid.disabled = true;\r\n renderer.labels.template.padding(2, 3, 2, 3);\r\n renderer.minHeight = undefined;\r\n renderer.minWidth = undefined;\r\n this.markerContainer.layout = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"valueAxis\", {\r\n /**\r\n * Returns valueAxis value.\r\n * @return {ValueAxis}\r\n */\r\n get: function () {\r\n if (!this._valueAxis) {\r\n this.valueAxis = this.createChild(ValueAxis);\r\n this.valueAxis.shouldClone = false;\r\n }\r\n return this._valueAxis;\r\n },\r\n /**\r\n * Sets a value axis of heat legend. Value axis for heat legend is created automatically.\r\n * @param {ValueAxis}\r\n */\r\n set: function (valueAxis) {\r\n this._valueAxis = valueAxis;\r\n valueAxis.parent = this;\r\n valueAxis.strictMinMax = true;\r\n this.orientation = this.orientation;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"series\", {\r\n /**\r\n * Returns series value.\r\n * @return {Series}\r\n */\r\n get: function () {\r\n return this._series;\r\n },\r\n /**\r\n * You can set series for heat legend. It will take min, max, minColor and maxColor values from this series.\r\n * @param series\r\n */\r\n set: function (series) {\r\n var _this = this;\r\n this._series = series;\r\n var dataField = \"value\";\r\n try {\r\n var dataFieldDefined = series.heatRules.getIndex(0).dataField;\r\n if (dataFieldDefined) {\r\n dataField = dataFieldDefined;\r\n }\r\n }\r\n catch (err) {\r\n }\r\n this.updateMinMax(series.dataItem.values[dataField].low, series.dataItem.values[dataField].high);\r\n series.dataItem.events.on(\"calculatedvaluechanged\", function (event) {\r\n _this.updateMinMax(series.dataItem.values[dataField].low, series.dataItem.values[dataField].high);\r\n }, undefined, false);\r\n series.heatRules.events.on(\"inserted\", this.invalidate, this, false);\r\n series.heatRules.events.on(\"removed\", this.invalidate, this, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates min/max of value axis.\r\n * @ignore\r\n */\r\n HeatLegend.prototype.updateMinMax = function (min, max) {\r\n var valueAxis = this.valueAxis;\r\n if (!$type.isNumber(this.minValue)) {\r\n valueAxis.min = min;\r\n valueAxis.invalidate();\r\n }\r\n if (!$type.isNumber(this.maxValue)) {\r\n valueAxis.max = max;\r\n valueAxis.invalidate();\r\n }\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n HeatLegend.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up series\r\n if ($type.hasValue(config.series) && $type.isString(config.series)) {\r\n if ($type.isString(config.series)) {\r\n if (this.map.hasKey(config.series)) {\r\n config.series = this.map.getKey(config.series);\r\n }\r\n else {\r\n var seriesId_1 = config.series;\r\n var disposer_1 = this.map.events.on(\"insertKey\", function (ev) {\r\n if (ev.key == seriesId_1) {\r\n this.series = ev.newValue;\r\n disposer_1.dispose();\r\n }\r\n }, this);\r\n this._disposers.push(disposer_1);\r\n delete config.series;\r\n }\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return HeatLegend;\r\n}(Container));\r\nexport { HeatLegend };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"HeatLegend\"] = HeatLegend;\r\n","/**\r\n * Module that defines everything related to building Candlesticks.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Column } from \"./Column\";\r\nimport { Line } from \"../../core/elements/Line\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates Candlesticks.\r\n *\r\n * @see {@link ICandlestickEvents} for a list of available events\r\n * @see {@link ICandlestickAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar Candlestick = /** @class */ (function (_super) {\r\n __extends(Candlestick, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Candlestick() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Candlestick\";\r\n _this.layout = \"none\";\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n Candlestick.prototype.createAssets = function () {\r\n _super.prototype.createAssets.call(this);\r\n this.lowLine = this.createChild(Line);\r\n this.lowLine.shouldClone = false;\r\n this.highLine = this.createChild(Line);\r\n this.highLine.shouldClone = false;\r\n };\r\n /**\r\n * Copies all parameters from another [[Candlestick]].\r\n *\r\n * @param source Source Candlestick\r\n */\r\n Candlestick.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.lowLine) {\r\n this.lowLine.copyFrom(source.lowLine);\r\n }\r\n if (this.highLine) {\r\n this.highLine.copyFrom(source.highLine);\r\n }\r\n };\r\n return Candlestick;\r\n}(Column));\r\nexport { Candlestick };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Candlestick\"] = Candlestick;\r\n","/**\r\n * Candlestick Series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { Candlestick } from \"../elements/Candlestick\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[CandlestickSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar CandlestickSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(CandlestickSeriesDataItem, _super);\r\n /**\r\n * Defines a type of [[Component]] this data item is used for\r\n * @todo Disabled to work around TS bug (see if we can re-enable it again)\r\n */\r\n //public _component!: CandlestickSeries;\r\n /**\r\n * Constructor\r\n */\r\n function CandlestickSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.values.lowValueX = {};\r\n _this.values.lowValueY = {};\r\n _this.values.highValueX = {};\r\n _this.values.highValueY = {};\r\n _this.className = \"CandlestickSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"lowValueX\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.lowValueX.value;\r\n },\r\n /**\r\n * Low value for horizontal axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"lowValueX\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"lowValueY\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.lowValueY.value;\r\n },\r\n /**\r\n * Low value for vertical axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"lowValueY\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"highValueX\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.highValueX.value;\r\n },\r\n /**\r\n * High value for horizontal axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"highValueX\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"highValueY\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.highValueY.value;\r\n },\r\n /**\r\n * High value for vertical axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"highValueY\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"closeValueX\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.valueX.value;\r\n },\r\n /**\r\n * Close value for horizontal axis.\r\n *\r\n * This is an alias for `valueX` added for convenience only.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"valueX\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"closeValueY\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.valueY.value;\r\n },\r\n /**\r\n * Close value for vertical axis.\r\n *\r\n * This is an alias for `valueX` added for convenience only.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"valueY\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CandlestickSeriesDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { CandlestickSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a candlestick graph.\r\n *\r\n * @see {@link ICandlestickSeriesEvents} for a list of available Events\r\n * @see {@link ICandlestickSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar CandlestickSeries = /** @class */ (function (_super) {\r\n __extends(CandlestickSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CandlestickSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CandlestickSeries\";\r\n _this.groupFields.lowValueX = \"low\";\r\n _this.groupFields.lowValueY = \"low\";\r\n _this.groupFields.highValueX = \"high\";\r\n _this.groupFields.highValueY = \"high\";\r\n _this.strokeOpacity = 1;\r\n var interfaceColors = new InterfaceColorSet();\r\n var positiveColor = interfaceColors.getFor(\"positive\");\r\n var negativeColor = interfaceColors.getFor(\"negative\");\r\n _this.dropFromOpenState.properties.fill = negativeColor;\r\n _this.dropFromOpenState.properties.stroke = negativeColor;\r\n _this.riseFromOpenState.properties.fill = positiveColor;\r\n _this.riseFromOpenState.properties.stroke = positiveColor;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n CandlestickSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Candlestick Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n CandlestickSeries.prototype.createDataItem = function () {\r\n return new CandlestickSeriesDataItem();\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n CandlestickSeries.prototype.validateDataElementReal = function (dataItem) {\r\n _super.prototype.validateDataElementReal.call(this, dataItem);\r\n this.validateCandlestick(dataItem);\r\n };\r\n CandlestickSeries.prototype.validateCandlestick = function (dataItem) {\r\n var column = dataItem.column;\r\n if (column) {\r\n var lowLine_1 = column.lowLine;\r\n var highLine_1 = column.highLine;\r\n if (this.baseAxis == this.xAxis) {\r\n var x = column.pixelWidth / 2;\r\n lowLine_1.x = x;\r\n highLine_1.x = x;\r\n var open_1 = dataItem.getWorkingValue(this.yOpenField);\r\n var close_1 = dataItem.getWorkingValue(this.yField);\r\n var yOpen = this.yAxis.getY(dataItem, this.yOpenField);\r\n var yClose = this.yAxis.getY(dataItem, this.yField);\r\n var yLow = this.yAxis.getY(dataItem, this.yLowField);\r\n var yHigh = this.yAxis.getY(dataItem, this.yHighField);\r\n var pixelY = column.pixelY;\r\n lowLine_1.y1 = yLow - pixelY;\r\n highLine_1.y1 = yHigh - pixelY;\r\n if (open_1 < close_1) {\r\n lowLine_1.y2 = yOpen - pixelY;\r\n highLine_1.y2 = yClose - pixelY;\r\n }\r\n else {\r\n lowLine_1.y2 = yClose - pixelY;\r\n highLine_1.y2 = yOpen - pixelY;\r\n }\r\n }\r\n if (this.baseAxis == this.yAxis) {\r\n var y = column.pixelHeight / 2;\r\n lowLine_1.y = y;\r\n highLine_1.y = y;\r\n var open_2 = dataItem.getWorkingValue(this.xOpenField);\r\n var close_2 = dataItem.getWorkingValue(this.xField);\r\n var xOpen = this.xAxis.getX(dataItem, this.xOpenField);\r\n var xClose = this.xAxis.getX(dataItem, this.xField);\r\n var xLow = this.xAxis.getX(dataItem, this.xLowField);\r\n var xHigh = this.xAxis.getX(dataItem, this.xHighField);\r\n var pixelX = column.pixelX;\r\n lowLine_1.x1 = xLow - pixelX;\r\n highLine_1.x1 = xHigh - pixelX;\r\n if (open_2 < close_2) {\r\n lowLine_1.x2 = xOpen - pixelX;\r\n highLine_1.x2 = xClose - pixelX;\r\n }\r\n else {\r\n lowLine_1.x2 = xClose - pixelX;\r\n highLine_1.x2 = xOpen - pixelX;\r\n }\r\n }\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n // LOW LINE\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (rangeColumn) {\r\n var rangeLowLine = rangeColumn.lowLine;\r\n rangeLowLine.x = lowLine_1.x;\r\n rangeLowLine.y = lowLine_1.y;\r\n rangeLowLine.x1 = lowLine_1.x1;\r\n rangeLowLine.x2 = lowLine_1.x2;\r\n rangeLowLine.y1 = lowLine_1.y1;\r\n rangeLowLine.y2 = lowLine_1.y2;\r\n // HIGH LINE\r\n var rangehighLine = rangeColumn.highLine;\r\n rangehighLine.x = highLine_1.x;\r\n rangehighLine.y = highLine_1.y;\r\n rangehighLine.x1 = highLine_1.x1;\r\n rangehighLine.x2 = highLine_1.x2;\r\n rangehighLine.y1 = highLine_1.y1;\r\n rangehighLine.y2 = highLine_1.y2;\r\n }\r\n });\r\n }\r\n };\r\n Object.defineProperty(CandlestickSeries.prototype, \"xLowField\", {\r\n /**\r\n * A data field to look for \"low\" value for horizontal axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\r\n get: function () {\r\n return this._xLowField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeries.prototype, \"yLowField\", {\r\n /**\r\n * A data field to look for \"low\" value for vertical axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\r\n get: function () {\r\n return this._yLowField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeries.prototype, \"xHighField\", {\r\n /**\r\n * A data field to look for \"high\" value for horizontal axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\r\n get: function () {\r\n return this._xHighField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeries.prototype, \"yHighField\", {\r\n /**\r\n * A data field to look for \"high\" value for vertical axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\r\n get: function () {\r\n return this._yHighField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets up which data fields to use for data access.\r\n */\r\n CandlestickSeries.prototype.defineFields = function () {\r\n _super.prototype.defineFields.call(this);\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis && yAxis) {\r\n if (this.baseAxis == xAxis) {\r\n var yAxisFieldName = $utils.capitalize(yAxis.axisFieldName);\r\n this._yLowField = (\"low\" + yAxisFieldName + \"Y\");\r\n this._yHighField = (\"high\" + yAxisFieldName + \"Y\");\r\n }\r\n if (this.baseAxis == yAxis) {\r\n var xAxisFieldName = $utils.capitalize(xAxis.axisFieldName);\r\n this._xLowField = (\"low\" + xAxisFieldName + \"X\");\r\n this._xHighField = (\"high\" + xAxisFieldName + \"X\");\r\n }\r\n this.addValueField(xAxis, this._xValueFields, this._xLowField);\r\n this.addValueField(xAxis, this._xValueFields, this._xHighField);\r\n this.addValueField(yAxis, this._yValueFields, this._yLowField);\r\n this.addValueField(yAxis, this._yValueFields, this._yHighField);\r\n }\r\n };\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n CandlestickSeries.prototype.createLegendMarker = function (marker) {\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.removeChildren();\r\n var column = marker.createChild(Candlestick);\r\n column.shouldClone = false;\r\n column.copyFrom(this.columns.template);\r\n var cw;\r\n var ch;\r\n var highLine = column.lowLine;\r\n var lowLine = column.highLine;\r\n if (this.baseAxis == this.yAxis) {\r\n cw = w / 3;\r\n ch = h;\r\n highLine.y = h / 2;\r\n lowLine.y = h / 2;\r\n highLine.x2 = w / 3;\r\n lowLine.x2 = w / 3;\r\n lowLine.x = w / 3 * 2;\r\n column.column.x = w / 3;\r\n }\r\n else {\r\n cw = w;\r\n ch = h / 3;\r\n highLine.x = w / 2;\r\n lowLine.x = w / 2;\r\n highLine.y2 = h / 3;\r\n lowLine.y2 = h / 3;\r\n lowLine.y = h / 3 * 2;\r\n column.column.y = h / 3;\r\n }\r\n column.width = cw;\r\n column.height = ch;\r\n $object.copyProperties(this, marker, visualProperties);\r\n $object.copyProperties(this.columns.template, column, visualProperties);\r\n column.stroke = this.riseFromOpenState.properties.stroke;\r\n column.fill = column.stroke;\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = column.fill;\r\n legendDataItem.colorOrig = column.fill;\r\n };\r\n /**\r\n * Returns an element to use for Candlestick\r\n * @ignore\r\n * @return Element.\r\n */\r\n CandlestickSeries.prototype.createColumnTemplate = function () {\r\n return new Candlestick();\r\n };\r\n return CandlestickSeries;\r\n}(ColumnSeries));\r\nexport { CandlestickSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CandlestickSeries\"] = CandlestickSeries;\r\nregistry.registeredClasses[\"CandlestickSeriesDataItem\"] = CandlestickSeriesDataItem;\r\n","/**\r\n * Module that defines everything related to building OHLCs.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Candlestick } from \"./Candlestick\";\r\nimport { Line } from \"../../core/elements/Line\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates OHLCs.\r\n *\r\n * @see {@link IOHLCEvents} for a list of available events\r\n * @see {@link IOHLCAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar OHLC = /** @class */ (function (_super) {\r\n __extends(OHLC, _super);\r\n /**\r\n * Constructor\r\n */\r\n function OHLC() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"OHLC\";\r\n _this.layout = \"none\";\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n OHLC.prototype.createAssets = function () {\r\n //super.createAssets();\r\n this.openLine = this.createChild(Line);\r\n this.openLine.shouldClone = false;\r\n this.highLowLine = this.createChild(Line);\r\n this.highLowLine.shouldClone = false;\r\n this.closeLine = this.createChild(Line);\r\n this.closeLine.shouldClone = false;\r\n };\r\n /**\r\n * Copies all parameters from another [[OHLC]].\r\n *\r\n * @param source Source OHLC\r\n */\r\n OHLC.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.openLine) {\r\n this.openLine.copyFrom(source.openLine);\r\n }\r\n if (this.highLowLine) {\r\n this.highLowLine.copyFrom(source.highLowLine);\r\n }\r\n if (this.closeLine) {\r\n this.closeLine.copyFrom(source.closeLine);\r\n }\r\n };\r\n return OHLC;\r\n}(Candlestick));\r\nexport { OHLC };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"OHLC\"] = OHLC;\r\n","/**\r\n * Candlestick Series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { CandlestickSeries, CandlestickSeriesDataItem } from \"./CandlestickSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { OHLC } from \"../elements/OHLC\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[OHLCSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar OHLCSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(OHLCSeriesDataItem, _super);\r\n /**\r\n * Defines a type of [[Component]] this data item is used for\r\n * @todo Disabled to work around TS bug (see if we can re-enable it again)\r\n */\r\n //public _component!: OHLCSeries;\r\n /**\r\n * Constructor\r\n */\r\n function OHLCSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"OHLCSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return OHLCSeriesDataItem;\r\n}(CandlestickSeriesDataItem));\r\nexport { OHLCSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a candlestick graph.\r\n *\r\n * @see {@link IOHLCSeriesEvents} for a list of available Events\r\n * @see {@link IOHLCSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar OHLCSeries = /** @class */ (function (_super) {\r\n __extends(OHLCSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function OHLCSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"OHLCSeries\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n OHLCSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"OHLC Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n OHLCSeries.prototype.createDataItem = function () {\r\n return new OHLCSeriesDataItem();\r\n };\r\n OHLCSeries.prototype.validateCandlestick = function (dataItem) {\r\n var column = dataItem.column;\r\n if (column) {\r\n var openLine_1 = column.openLine;\r\n var highLowLine_1 = column.highLowLine;\r\n var closeLine_1 = column.closeLine;\r\n if (this.baseAxis == this.xAxis) {\r\n var x = column.pixelWidth / 2;\r\n highLowLine_1.x = x;\r\n // TODO can these be removed ?\r\n dataItem.getWorkingValue(this.yOpenField);\r\n dataItem.getWorkingValue(this.yField);\r\n var yOpen = this.yAxis.getY(dataItem, this.yOpenField);\r\n var yClose = this.yAxis.getY(dataItem, this.yField);\r\n var yLow = this.yAxis.getY(dataItem, this.yLowField);\r\n var yHigh = this.yAxis.getY(dataItem, this.yHighField);\r\n var pixelY = column.pixelY;\r\n openLine_1.y1 = yOpen - pixelY;\r\n openLine_1.y2 = yOpen - pixelY;\r\n openLine_1.x1 = 0;\r\n openLine_1.x2 = x;\r\n closeLine_1.y1 = yClose - pixelY;\r\n closeLine_1.y2 = yClose - pixelY;\r\n closeLine_1.x1 = x;\r\n closeLine_1.x2 = 2 * x;\r\n highLowLine_1.y1 = yHigh - pixelY;\r\n highLowLine_1.y2 = yLow - pixelY;\r\n }\r\n if (this.baseAxis == this.yAxis) {\r\n var y = column.pixelHeight / 2;\r\n highLowLine_1.y = y;\r\n // TODO can these be removed ?\r\n dataItem.getWorkingValue(this.xOpenField);\r\n dataItem.getWorkingValue(this.xField);\r\n var xOpen = this.xAxis.getX(dataItem, this.xOpenField);\r\n var xClose = this.xAxis.getX(dataItem, this.xField);\r\n var xLow = this.xAxis.getX(dataItem, this.xLowField);\r\n var xHigh = this.xAxis.getX(dataItem, this.xHighField);\r\n var pixelX = column.pixelX;\r\n openLine_1.x1 = xOpen - pixelX;\r\n openLine_1.x2 = xOpen - pixelX;\r\n openLine_1.y1 = y;\r\n openLine_1.y2 = 2 * y;\r\n closeLine_1.x1 = xClose - pixelX;\r\n closeLine_1.x2 = xClose - pixelX;\r\n closeLine_1.y1 = 0;\r\n closeLine_1.y2 = y;\r\n highLowLine_1.x1 = xHigh - pixelX;\r\n highLowLine_1.x2 = xLow - pixelX;\r\n }\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (rangeColumn) {\r\n var rangeOpenLine = rangeColumn.openLine;\r\n rangeOpenLine.x = openLine_1.x;\r\n rangeOpenLine.y = openLine_1.y;\r\n rangeOpenLine.x1 = openLine_1.x1;\r\n rangeOpenLine.x2 = openLine_1.x2;\r\n rangeOpenLine.y1 = openLine_1.y1;\r\n rangeOpenLine.y2 = openLine_1.y2;\r\n var rangeCloseLine = rangeColumn.closeLine;\r\n rangeCloseLine.x = closeLine_1.x;\r\n rangeCloseLine.y = closeLine_1.y;\r\n rangeCloseLine.x1 = closeLine_1.x1;\r\n rangeCloseLine.x2 = closeLine_1.x2;\r\n rangeCloseLine.y1 = closeLine_1.y1;\r\n rangeCloseLine.y2 = closeLine_1.y2;\r\n var rangeHighLowLine = rangeColumn.highLowLine;\r\n rangeHighLowLine.x = highLowLine_1.x;\r\n rangeHighLowLine.y = highLowLine_1.y;\r\n rangeHighLowLine.x1 = highLowLine_1.x1;\r\n rangeHighLowLine.x2 = highLowLine_1.x2;\r\n rangeHighLowLine.y1 = highLowLine_1.y1;\r\n rangeHighLowLine.y2 = highLowLine_1.y2;\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n OHLCSeries.prototype.createLegendMarker = function (marker) {\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.removeChildren();\r\n var column = marker.createChild(OHLC);\r\n column.shouldClone = false;\r\n column.copyFrom(this.columns.template);\r\n var cw;\r\n var ch;\r\n var openLine = column.openLine;\r\n var closeLine = column.closeLine;\r\n var highLowLine = column.highLowLine;\r\n if (this.baseAxis == this.yAxis) {\r\n cw = w / 3;\r\n ch = h;\r\n highLowLine.y = h / 2;\r\n highLowLine.x2 = w;\r\n openLine.x = w / 3 * 2;\r\n openLine.y2 = h / 2;\r\n closeLine.x = w / 3;\r\n closeLine.y2 = h;\r\n closeLine.y1 = h / 2;\r\n }\r\n else {\r\n cw = w;\r\n ch = h / 3;\r\n highLowLine.x = w / 2;\r\n highLowLine.y2 = h;\r\n openLine.y = h / 3 * 2;\r\n openLine.x2 = w / 2;\r\n closeLine.y = h / 3;\r\n closeLine.x2 = w;\r\n closeLine.x1 = w / 2;\r\n }\r\n column.width = cw;\r\n column.height = ch;\r\n $object.copyProperties(this, marker, visualProperties);\r\n $object.copyProperties(this.columns.template, column, visualProperties);\r\n column.stroke = this.riseFromOpenState.properties.stroke;\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = column.stroke;\r\n legendDataItem.colorOrig = column.stroke;\r\n };\r\n /**\r\n * Returns an element to use for Candlestick\r\n * @ignore\r\n * @return Element.\r\n */\r\n OHLCSeries.prototype.createColumnTemplate = function () {\r\n return new OHLC();\r\n };\r\n return OHLCSeries;\r\n}(CandlestickSeries));\r\nexport { OHLCSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"OHLCSeries\"] = OHLCSeries;\r\nregistry.registeredClasses[\"OHLCSeriesDataItem\"] = OHLCSeriesDataItem;\r\n","/**\r\n * Line series segment module.\r\n * @todo Add description about what this is\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { LineSeriesSegment } from \"./LineSeriesSegment\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a line series segment.\r\n *\r\n * A line segment can be used to apply different properties to a part of the\r\n * line series, between two data points.\r\n *\r\n * @see {@link IStepLineSeriesSegmentEvents} for a list of available events\r\n * @see {@link IStepLineSeriesSegmentAdapters} for a list of available Adapters\r\n * @todo Example\r\n */\r\nvar StepLineSeriesSegment = /** @class */ (function (_super) {\r\n __extends(StepLineSeriesSegment, _super);\r\n /**\r\n * Constructor\r\n */\r\n function StepLineSeriesSegment() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"StepLineSeriesSegment\";\r\n return _this;\r\n }\r\n /**\r\n * Draws the series segment.\r\n *\r\n * @ignore Exclude from docs\r\n * @param points Points to connect\r\n * @param closePoints ?\r\n * @param smoothnessX Horizontal bezier setting (?)\r\n * @param smoothnessY Vertical bezier setting (?)\r\n */\r\n StepLineSeriesSegment.prototype.drawSegment = function (points, closePoints, smoothnessX, smoothnessY, noRisers, vertical) {\r\n if (points.length > 0 && closePoints.length > 0) {\r\n if (noRisers) {\r\n var path = $path.moveTo(points[0]);\r\n if (points.length > 0) {\r\n for (var i = 1; i < points.length; i++) {\r\n var point = points[i];\r\n if (i / 2 == Math.round(i / 2)) {\r\n path += $path.moveTo(point);\r\n }\r\n else {\r\n path += $path.lineTo(point);\r\n }\r\n }\r\n }\r\n this.strokeSprite.path = path;\r\n if (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) { // helps to avoid drawing fill object if fill is not visible\r\n path = $path.moveTo(points[0]) + $path.polyline(points);\r\n path += $path.lineTo(closePoints[0]) + $path.polyline(closePoints);\r\n path += $path.lineTo(points[0]);\r\n path += $path.closePath();\r\n this.fillSprite.path = path;\r\n }\r\n else {\r\n }\r\n }\r\n else {\r\n var path = $path.moveTo(points[0]) + $path.polyline(points);\r\n this.strokeSprite.path = path;\r\n if (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) { // helps to avoid drawing fill object if fill is not visible\r\n path += $path.lineTo(closePoints[0]) + $path.polyline(closePoints);\r\n path += $path.lineTo(points[0]);\r\n path += $path.closePath();\r\n this.fillSprite.path = path;\r\n }\r\n }\r\n }\r\n else {\r\n this.strokeSprite.path = \"\";\r\n this.fillSprite.path = \"\";\r\n }\r\n };\r\n return StepLineSeriesSegment;\r\n}(LineSeriesSegment));\r\nexport { StepLineSeriesSegment };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"StepLineSeriesSegment\"] = StepLineSeriesSegment;\r\n","/**\r\n * Step line series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { LineSeries, LineSeriesDataItem } from \"./LineSeries\";\r\nimport { StepLineSeriesSegment } from \"./StepLineSeriesSegment\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[StepLineSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar StepLineSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(StepLineSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function StepLineSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"StepLineSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return StepLineSeriesDataItem;\r\n}(LineSeriesDataItem));\r\nexport { StepLineSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a step line graph.\r\n *\r\n * @see {@link IStepLineSeriesEvents} for a list of available Events\r\n * @see {@link IStepLineSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar StepLineSeries = /** @class */ (function (_super) {\r\n __extends(StepLineSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function StepLineSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"StepLineSeries\";\r\n _this.applyTheme();\r\n _this.startLocation = 0;\r\n _this.endLocation = 1;\r\n return _this;\r\n }\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n StepLineSeries.prototype.createDataItem = function () {\r\n return new StepLineSeriesDataItem();\r\n };\r\n /**\r\n * [addPoints description]\r\n *\r\n * @todo Description\r\n * @param points [description]\r\n * @param dataItem [description]\r\n * @param xField [description]\r\n * @param yField [description]\r\n * @param backwards [description]\r\n */\r\n StepLineSeries.prototype.addPoints = function (points, dataItem, xField, yField, backwards) {\r\n var startLocationX;\r\n var endLocationX;\r\n var startLocationY;\r\n var endLocationY;\r\n if (this.baseAxis == this.xAxis) {\r\n startLocationX = this.startLocation;\r\n endLocationX = this.endLocation;\r\n startLocationY = this.getAdjustedXLocation(dataItem, this.yOpenField);\r\n endLocationY = this.getAdjustedXLocation(dataItem, this.yField);\r\n }\r\n if (this.baseAxis == this.yAxis) {\r\n startLocationY = this.startLocation;\r\n endLocationY = this.endLocation;\r\n startLocationX = this.getAdjustedXLocation(dataItem, this.xOpenField);\r\n endLocationX = this.getAdjustedXLocation(dataItem, this.xField);\r\n }\r\n var x0 = this.xAxis.getX(dataItem, xField, startLocationX);\r\n var y0 = this.yAxis.getY(dataItem, yField, startLocationY);\r\n var x1 = this.xAxis.getX(dataItem, xField, endLocationX);\r\n var y1 = this.yAxis.getY(dataItem, yField, endLocationY);\r\n x0 = $math.fitToRange(x0, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n y0 = $math.fitToRange(y0, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n x1 = $math.fitToRange(x1, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n y1 = $math.fitToRange(y1, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n // this might make an impression that points are duplicated, and they indeed are, but this is needed to handle gaps in data\r\n if (!this.noRisers) {\r\n if (points.length > 1) {\r\n var prevPoint = points[points.length - 1];\r\n if (this.baseAxis == this.xAxis) {\r\n if (backwards) {\r\n points.push({ x: prevPoint.x, y: y1 });\r\n }\r\n else {\r\n points.push({ x: x0, y: prevPoint.y });\r\n }\r\n }\r\n if (this.baseAxis == this.yAxis) {\r\n if (backwards) {\r\n points.push({ x: x1, y: prevPoint.y });\r\n }\r\n else {\r\n points.push({ x: prevPoint.x, y: y0 });\r\n }\r\n }\r\n }\r\n }\r\n var point0 = { x: x0, y: y0 };\r\n var point1 = { x: x1, y: y1 };\r\n if (backwards) {\r\n points.push(point1, point0);\r\n }\r\n else {\r\n points.push(point0, point1);\r\n }\r\n };\r\n /**\r\n * Draws the line segment.\r\n *\r\n * @param segment Segment\r\n * @param points Segment points\r\n * @param closePoints Segment close points\r\n */\r\n StepLineSeries.prototype.drawSegment = function (segment, points, closePoints) {\r\n var vertical = false;\r\n if (this.yAxis == this.baseAxis) {\r\n vertical = true;\r\n }\r\n segment.drawSegment(points, closePoints, this.tensionX, this.tensionY, this.noRisers, vertical);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n StepLineSeries.prototype.createSegment = function () {\r\n return new StepLineSeriesSegment();\r\n };\r\n Object.defineProperty(StepLineSeries.prototype, \"noRisers\", {\r\n /**\r\n * @return No risers\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"noRisers\");\r\n },\r\n /**\r\n * Specifies if step line series should draw only horizontal (or only\r\n * vertical, depending on base axis) lines, instead of connecting them with\r\n * vertical (or horizontal) lines.\r\n *\r\n * @default false\r\n * @param value No risers\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"noRisers\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(StepLineSeries.prototype, \"startLocation\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startLocation\");\r\n },\r\n /**\r\n * start location of the step\r\n *\r\n * @param value Location (0-1)\r\n * @default 0\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(StepLineSeries.prototype, \"endLocation\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endLocation\");\r\n },\r\n /**\r\n * Step end location.\r\n *\r\n * @param value Location (0-1)\r\n * #default 1\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return StepLineSeries;\r\n}(LineSeries));\r\nexport { StepLineSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"StepLineSeries\"] = StepLineSeries;\r\nregistry.registeredClasses[\"StepLineSeriesDataItem\"] = StepLineSeriesDataItem;\r\n","/**\r\n * Module that defines everything related to building RadarColumns.\r\n * It is a container which has radarColumn element which is a Slice.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Column } from \"./Column\";\r\nimport { Slice } from \"../../core/elements/Slice\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates RadarColumns.\r\n *\r\n * @see {@link IRadarColumnEvents} for a list of available events\r\n * @see {@link IRadarColumnAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar RadarColumn = /** @class */ (function (_super) {\r\n __extends(RadarColumn, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarColumn() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadarColumn\";\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n RadarColumn.prototype.createAssets = function () {\r\n this.radarColumn = this.createChild(Slice);\r\n this.radarColumn.shouldClone = false;\r\n this.radarColumn.strokeOpacity = undefined;\r\n // some dirty hack so that if user access column, it won't get error\r\n this.column = this.radarColumn;\r\n };\r\n /**\r\n * Copies all parameters from another [[RadarColumn]].\r\n *\r\n * @param source Source RadarColumn\r\n */\r\n RadarColumn.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.radarColumn) {\r\n this.radarColumn.copyFrom(source.radarColumn);\r\n }\r\n };\r\n /**\r\n * X coordinate for the slice tooltip.\r\n *\r\n * @return X\r\n * @ignore\r\n */\r\n RadarColumn.prototype.getTooltipX = function () {\r\n var value = this.getPropertyValue(\"tooltipX\");\r\n if (!$type.isNumber(value)) {\r\n return this.radarColumn.getTooltipX();\r\n }\r\n return value;\r\n };\r\n /**\r\n * Y coordinate for the slice tooltip.\r\n *\r\n * @return Y\r\n * @ignore\r\n */\r\n RadarColumn.prototype.getTooltipY = function () {\r\n var value = this.getPropertyValue(\"tooltipX\");\r\n if (!$type.isNumber(value)) {\r\n return this.radarColumn.getTooltipY();\r\n }\r\n return value;\r\n };\r\n return RadarColumn;\r\n}(Column));\r\nexport { RadarColumn };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarColumn\"] = RadarColumn;\r\n","/**\r\n * Radar column series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"../series/ColumnSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { RadarColumn } from \"../elements/RadarColumn\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport { Percent } from \"../../core/utils/Percent\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[RadarColumnSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar RadarColumnSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(RadarColumnSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarColumnSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColumnSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return RadarColumnSeriesDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { RadarColumnSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a 3D column graph.\r\n *\r\n * @see {@link IRadarColumnSeriesEvents} for a list of available Events\r\n * @see {@link IRadarColumnSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar RadarColumnSeries = /** @class */ (function (_super) {\r\n __extends(RadarColumnSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarColumnSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadarColumnSeries\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creates and returns a RadarColumn element to use as column in radar chart.\r\n *\r\n * @return RadarColumn.\r\n */\r\n RadarColumnSeries.prototype.createColumnTemplate = function () {\r\n return new RadarColumn();\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarColumnSeries.prototype.validate = function () {\r\n // so that radius would be updated\r\n if (this.chart.invalid) {\r\n this.chart.validate();\r\n }\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n RadarColumnSeries.prototype.disableUnusedColumns = function (dataItem) {\r\n if (dataItem) {\r\n if (dataItem.column) {\r\n dataItem.column.__disabled = true;\r\n }\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (rangeColumn) {\r\n rangeColumn.__disabled = true;\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n RadarColumnSeries.prototype.validateDataElementReal = function (dataItem) {\r\n var _this = this;\r\n var startAngle = this.chart.startAngle;\r\n var endAngle = this.chart.endAngle;\r\n var yField = this.yField;\r\n var yOpenField = this.yOpenField;\r\n var xField = this.xField;\r\n var xOpenField = this.xOpenField;\r\n var lAngle;\r\n var rAngle;\r\n var tRadius;\r\n var bRadius;\r\n var startLocation = this.getStartLocation(dataItem);\r\n var endLocation = this.getEndLocation(dataItem);\r\n var cellAngle = (endAngle - startAngle) / (this.dataItems.length * (this.end - this.start));\r\n var radarColumn = dataItem.column;\r\n if (!radarColumn) {\r\n radarColumn = this.columns.create();\r\n dataItem.column = radarColumn;\r\n $object.copyProperties(this, radarColumn, visualProperties); // need this \r\n $object.copyProperties(this.columns.template, radarColumn, visualProperties); // second time, no force, so that columns.template would override series properties\t\t\t\r\n dataItem.addSprite(radarColumn);\r\n radarColumn.paper = this.paper; // sometimes pattern is not drawn if is set with adapter without this.\r\n this.setColumnStates(radarColumn);\r\n }\r\n var width = radarColumn.width;\r\n var percentWidth = 100;\r\n if (width instanceof Percent) {\r\n percentWidth = width.percent;\r\n }\r\n var offset = $math.round((endLocation - startLocation) * (1 - percentWidth / 100) / 2, 5);\r\n startLocation += offset;\r\n endLocation -= offset;\r\n // two category axes\r\n if ((this.xAxis instanceof CategoryAxis) && (this.yAxis instanceof CategoryAxis)) {\r\n tRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yField, 0, \"valueY\"), y: this.yAxis.getY(dataItem, yField, 0, \"valueY\") });\r\n bRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yOpenField, 1, \"valueY\"), y: this.yAxis.getY(dataItem, yOpenField, 1, \"valueY\") });\r\n lAngle = this.xAxis.getAngle(dataItem, xOpenField, 0, \"valueX\");\r\n rAngle = this.xAxis.getAngle(dataItem, xField, 1, \"valueX\");\r\n startAngle = startAngle + startLocation * cellAngle;\r\n endAngle = endAngle - (1 - endLocation) * cellAngle;\r\n }\r\n else if (this.baseAxis == this.xAxis) {\r\n tRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yField, dataItem.locations[yField], \"valueY\"), y: this.yAxis.getY(dataItem, yField, dataItem.locations[yField], \"valueY\") });\r\n bRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yOpenField, dataItem.locations[yOpenField], \"valueY\"), y: this.yAxis.getY(dataItem, yOpenField, dataItem.locations[yOpenField], \"valueY\") });\r\n lAngle = this.xAxis.getAngle(dataItem, xOpenField, startLocation, \"valueX\");\r\n rAngle = this.xAxis.getAngle(dataItem, xField, endLocation, \"valueX\");\r\n startAngle = startAngle + startLocation * cellAngle;\r\n endAngle = endAngle - (1 - endLocation) * cellAngle;\r\n }\r\n else {\r\n tRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yField, startLocation, \"valueY\"), y: this.yAxis.getY(dataItem, yField, startLocation, \"valueY\") });\r\n bRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yOpenField, endLocation, \"valueY\"), y: this.yAxis.getY(dataItem, yOpenField, endLocation, \"valueY\") });\r\n if ($type.isNumber(width)) {\r\n var abs = Math.abs(tRadius - bRadius);\r\n if (abs > width) {\r\n var d = (abs - width) / 2;\r\n tRadius += d;\r\n bRadius -= d;\r\n }\r\n }\r\n lAngle = this.xAxis.getAngle(dataItem, xField, dataItem.locations[xField], \"valueX\");\r\n rAngle = this.xAxis.getAngle(dataItem, xOpenField, dataItem.locations[xOpenField], \"valueX\");\r\n }\r\n if (rAngle < lAngle) {\r\n var temp = rAngle;\r\n rAngle = lAngle;\r\n lAngle = temp;\r\n }\r\n lAngle = $math.fitToRange(lAngle, startAngle, endAngle);\r\n rAngle = $math.fitToRange(rAngle, startAngle, endAngle);\r\n var slice = radarColumn.radarColumn;\r\n slice.startAngle = lAngle;\r\n var arc = rAngle - lAngle;\r\n if (arc > 0) {\r\n slice.arc = arc;\r\n slice.radius = tRadius;\r\n slice.innerRadius = bRadius;\r\n radarColumn.__disabled = false;\r\n radarColumn.parent = this.columnsContainer;\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (!rangeColumn) {\r\n rangeColumn = _this.columns.create();\r\n $object.forceCopyProperties(_this.columns.template, rangeColumn, visualProperties);\r\n $object.copyProperties(axisRange.contents, rangeColumn, visualProperties); // need this because 3d columns are not in the same container\r\n if (rangeColumn.dataItem) {\r\n $array.remove(rangeColumn.dataItem.sprites, rangeColumn);\r\n }\r\n dataItem.addSprite(rangeColumn);\r\n rangeColumn.paper = _this.paper; // sometimes pattern is not drawn if is set with adapter without this.\t\t\t\t\t\r\n _this.setColumnStates(rangeColumn);\r\n dataItem.rangesColumns.setKey(axisRange.uid, rangeColumn);\r\n }\r\n var slice = rangeColumn.radarColumn;\r\n slice.startAngle = lAngle;\r\n slice.arc = arc;\r\n slice.radius = tRadius;\r\n slice.innerRadius = bRadius;\r\n if (slice.invalid) {\r\n slice.paper = _this.paper;\r\n slice.validate(); // validate as if it was used previously, it will flicker with previous dimensions\r\n }\r\n rangeColumn.__disabled = false;\r\n rangeColumn.parent = axisRange.contents;\r\n });\r\n }\r\n else {\r\n this.disableUnusedColumns(dataItem);\r\n }\r\n };\r\n /**\r\n * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n *\r\n * @param dataItem Data item\r\n * @param xKey Name of X data field\r\n * @param yKey Name of Y data field\r\n * @param locationX X location\r\n * @param locationY Y location\r\n * @param stackKeyX ?\r\n * @param stackKeyY ?\r\n * @returns Coordinates\r\n */\r\n RadarColumnSeries.prototype.getPoint = function (dataItem, xKey, yKey, locationX, locationY, stackKeyX, stackKeyY) {\r\n if (!stackKeyX) {\r\n stackKeyX = \"valueX\";\r\n }\r\n if (!stackKeyY) {\r\n stackKeyY = \"valueY\";\r\n }\r\n var x = this.yAxis.getX(dataItem, yKey, locationY, stackKeyY);\r\n var y = this.yAxis.getY(dataItem, yKey, locationY, stackKeyY);\r\n var radius = $math.getDistance({ x: x, y: y });\r\n // hack to be able to determine angle later\r\n if (radius == 0) {\r\n radius = 0.00001;\r\n }\r\n var angle = this.xAxis.getAngle(dataItem, xKey, locationX, stackKeyX);\r\n return { x: radius * $math.cos(angle), y: radius * $math.sin(angle) };\r\n };\r\n /**\r\n * Returns an SVG path to be used as a mask for the series.\r\n *\r\n * @return SVG path\r\n */\r\n RadarColumnSeries.prototype.getMaskPath = function () {\r\n var renderer = this.yAxis.renderer;\r\n return $path.arc(renderer.startAngle, renderer.endAngle - renderer.startAngle, renderer.pixelRadius, renderer.pixelInnerRadius);\r\n };\r\n RadarColumnSeries.prototype.positionBulletReal = function (bullet, positionX, positionY) {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (positionX < xAxis.start || positionX > xAxis.end || positionY < yAxis.start || positionY > yAxis.end) {\r\n bullet.visible = false;\r\n }\r\n bullet.moveTo(this.xAxis.renderer.positionToPoint(positionX, positionY));\r\n };\r\n RadarColumnSeries.prototype.setXAxis = function (axis) {\r\n _super.prototype.setXAxis.call(this, axis);\r\n this.updateRendererRefs();\r\n };\r\n RadarColumnSeries.prototype.setYAxis = function (axis) {\r\n _super.prototype.setYAxis.call(this, axis);\r\n this.updateRendererRefs();\r\n };\r\n RadarColumnSeries.prototype.updateRendererRefs = function () {\r\n var rendererX = this.xAxis.renderer;\r\n var rendererY = this.yAxis.renderer;\r\n rendererX.axisRendererY = rendererY;\r\n };\r\n return RadarColumnSeries;\r\n}(ColumnSeries));\r\nexport { RadarColumnSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarColumnSeries\"] = RadarColumnSeries;\r\nregistry.registeredClasses[\"RadarColumnSeriesDataItem\"] = RadarColumnSeriesDataItem;\r\n","/**\r\n * Module that defines everything related to building Funnel slices.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to create [[FunnelSlice]] elements.\r\n *\r\n * @see {@link IFunnelSliceEvents} for a list of available events\r\n * @see {@link IFunnelSliceAdapters} for a list of available adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\r\nvar FunnelSlice = /** @class */ (function (_super) {\r\n __extends(FunnelSlice, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FunnelSlice() {\r\n var _this = _super.call(this) || this;\r\n _this.slice = _this.createChild(Sprite);\r\n _this.slice.shouldClone = false;\r\n _this.slice.setElement(_this.paper.add(\"path\"));\r\n _this.slice.isMeasured = false;\r\n _this.orientation = \"vertical\";\r\n _this.bottomWidth = percent(100);\r\n _this.topWidth = percent(100);\r\n _this.isMeasured = false;\r\n _this.width = 10;\r\n _this.height = 10;\r\n _this.expandDistance = 0;\r\n _this.className = \"FunnelSlice\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n */\r\n FunnelSlice.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var pt = this.pixelPaddingTop;\r\n var pb = this.pixelPaddingBottom;\r\n var pr = this.pixelPaddingRight;\r\n var pl = this.pixelPaddingLeft;\r\n var w = this.pixelWidth - pr - pl;\r\n var h = this.pixelHeight - pt - pb;\r\n var ed = this.expandDistance;\r\n var path = \"\";\r\n if (this.orientation == \"vertical\") {\r\n var tw = $utils.relativeToValue(this.topWidth, w);\r\n var bw = $utils.relativeToValue(this.bottomWidth, w);\r\n var tl = { x: (w - tw) / 2 + pl, y: pt };\r\n var tr = { x: (w + tw) / 2 + pl, y: pt };\r\n var br = { x: (w + bw) / 2 + pl, y: pt + h };\r\n var bl = { x: (w - bw) / 2 + pl, y: pt + h };\r\n var cpr = { x: tr.x + (br.x - tr.x) / 2 + ed * h, y: tr.y + 0.5 * h };\r\n var cpl = { x: tl.x + (bl.x - tl.x) / 2 - ed * h, y: tl.y + 0.5 * h };\r\n var qp1 = $path.lineTo(br);\r\n var qp2 = $path.lineTo(tl);\r\n if (ed != 0) {\r\n qp1 = $path.quadraticCurveTo(br, cpr);\r\n qp2 = $path.quadraticCurveTo(tl, cpl);\r\n }\r\n path = $path.moveTo(tl) + $path.lineTo(tr) + qp1 + $path.lineTo(bl) + qp2;\r\n this.tickPoint = { x: tr.x + (br.x - tr.x) / 2, y: tr.y + (br.y - tr.y) / 2 };\r\n }\r\n else {\r\n var tw = $utils.relativeToValue(this.topWidth, h);\r\n var bw = $utils.relativeToValue(this.bottomWidth, h);\r\n var tt = { x: pl, y: (h - tw) / 2 + pt };\r\n var tb = { x: pl, y: (h + tw) / 2 + pt };\r\n var bt = { x: pl + w, y: (h - bw) / 2 + pt };\r\n var bb = { x: pl + w, y: (h + bw) / 2 + pt };\r\n var cpr = { y: tt.y + (bt.y - tt.y) / 2 - ed * w, x: tt.x + 0.5 * w };\r\n var cpl = { y: tb.y + (bb.y - tb.y) / 2 + ed * w, x: tb.x + 0.5 * w };\r\n var qp1 = $path.lineTo(bt);\r\n var qp2 = $path.lineTo(tb);\r\n if (ed != 0) {\r\n qp1 = $path.quadraticCurveTo(bt, cpr);\r\n qp2 = $path.quadraticCurveTo(tb, cpl);\r\n }\r\n path = $path.moveTo(tb) + $path.lineTo(tt) + qp1 + $path.lineTo(bb) + qp2;\r\n this.tickPoint = { y: tb.y + (bb.y - tb.y) / 2, x: tb.x + (bb.x - tb.x) / 2 };\r\n }\r\n this.slice.path = path;\r\n this.invalidateLayout();\r\n };\r\n FunnelSlice.prototype.getPoint = function (locationX, locationY) {\r\n var pt = this.pixelPaddingTop;\r\n var pb = this.pixelPaddingBottom;\r\n var pr = this.pixelPaddingRight;\r\n var pl = this.pixelPaddingLeft;\r\n var w = this.pixelWidth - pr - pl;\r\n var h = this.pixelHeight - pt - pb;\r\n if (this.orientation == \"vertical\") {\r\n var tw = $utils.relativeToValue(this.topWidth, w);\r\n var bw = $utils.relativeToValue(this.bottomWidth, w);\r\n var tl = { x: (w - tw) / 2 + pl, y: pt };\r\n var tr = { x: (w + tw) / 2 + pl, y: pt };\r\n var br = { x: (w + bw) / 2 + pl, y: pt + h };\r\n var bl = { x: (w - bw) / 2 + pl, y: pt + h };\r\n var mlx = tl.x + (bl.x - tl.x) * locationY;\r\n var mrx = tr.x + (br.x - tr.x) * locationY;\r\n return { x: mlx + (mrx - mlx) * locationX, y: tr.y + (br.y - tr.y) * locationY };\r\n }\r\n else {\r\n var tw = $utils.relativeToValue(this.topWidth, h);\r\n var bw = $utils.relativeToValue(this.bottomWidth, h);\r\n var tt = { x: pl, y: (h - tw) / 2 + pt };\r\n var tb = { x: pl, y: (h + tw) / 2 + pt };\r\n var bt = { x: pl + w, y: (h - bw) / 2 + pt };\r\n var bb = { x: pl + w, y: (h + bw) / 2 + pt };\r\n var mty = tt.y + (bt.y - tt.y) * locationX;\r\n var mby = tb.y + (bb.y - tb.y) * locationX;\r\n return { y: mty + (mby - mty) * locationY, x: tt.x + (bt.x - tt.x) * locationX };\r\n }\r\n };\r\n Object.defineProperty(FunnelSlice.prototype, \"bottomWidth\", {\r\n /**\r\n * @return bottom width\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"bottomWidth\");\r\n },\r\n /**\r\n * Bottom width in pixels or percent.\r\n *\r\n * IMPORTANT: this setting might be used to set dimensions if you use slice\r\n * as a standalone element. If it's a part of [[FunnelSeries]] this setting\r\n * becomes read-only as it will be automatically reset by series.\r\n *\r\n * @param value Bottom width\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"bottomWidth\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelSlice.prototype, \"topWidth\", {\r\n /**\r\n * @return Top width\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"topWidth\");\r\n },\r\n /**\r\n * Top width in pixels or percent.\r\n *\r\n * IMPORTANT: this setting might be used to set dimensions if you use slice\r\n * as a standalone element. If it's a part of [[FunnelSeries]] this setting\r\n * becomes read-only as it will be automatically reset by series.\r\n *\r\n * @param value Top width\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"topWidth\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelSlice.prototype, \"orientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Orientation of the funnel slice: \"horizontal\" or \"vertical\".\r\n *\r\n * IMPORTANT: this setting might be used to set orintation if you use slice\r\n * as a standalone element. If it's a part of [[FunnelSeries]] this setting\r\n * becomes read-only as it will be automatically reset by series.\r\n *\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"orientation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelSlice.prototype, \"expandDistance\", {\r\n /**\r\n * @return expandDistance\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"expandDistance\");\r\n },\r\n /**\r\n * A relative distance slice's sides should be bent to. It's relative to the\r\n * height of the slice.\r\n *\r\n * Zero (default) will mean the sides will be perfectly straight.\r\n *\r\n * Positive value will make them bend outwards, resulting in \"puffed\" slices.\r\n *\r\n * Negative values will make them bend inwards.\r\n *\r\n * @default 0\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"expandDistance\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all parameters from another [[Sprite]].\r\n *\r\n * @param source Source Sprite\r\n */\r\n FunnelSlice.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.slice) {\r\n this.slice.copyFrom(source.slice);\r\n }\r\n };\r\n return FunnelSlice;\r\n}(Container));\r\nexport { FunnelSlice };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FunnelSlice\"] = FunnelSlice;\r\n","/**\r\n * Funnel tick module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Tick } from \"../elements/Tick\";\r\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws an tick line for a funnel slice connecting it to a related label.\r\n *\r\n * @see {@link IFunnelTickEvents} for a list of available events\r\n * @see {@link IFunnelTickAdapters} for a list of available Adapters\r\n */\r\nvar FunnelTick = /** @class */ (function (_super) {\r\n __extends(FunnelTick, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FunnelTick() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A label element this tick is attached to.\r\n */\r\n _this._label = new MutableValueDisposer();\r\n /**\r\n * A slice element this tick is attached to.\r\n */\r\n _this._slice = new MutableValueDisposer();\r\n _this.className = \"FunnelTick\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this._disposers.push(_this._label);\r\n _this._disposers.push(_this._slice);\r\n _this.setPropertyValue(\"locationX\", 0);\r\n _this.setPropertyValue(\"locationY\", 0);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the tick element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FunnelTick.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var slice = this.slice;\r\n var point = slice.getPoint(this.locationX, this.locationY);\r\n if (point) {\r\n var label = this.label;\r\n var series = slice.dataItem.component;\r\n var p0 = void 0;\r\n var p1 = void 0;\r\n var p2 = void 0;\r\n if (series.orientation == \"vertical\") {\r\n var x1 = label.pixelX;\r\n var y1 = label.pixelY;\r\n if (!series.labelsOpposite) {\r\n x1 += label.maxRight;\r\n }\r\n p0 = $utils.spritePointToSprite(point, slice, this.parent);\r\n p2 = $utils.spritePointToSprite({ x: x1, y: y1 }, label.parent, this.parent);\r\n p1 = { x: label.parent.pixelX - this.length, y: p2.y };\r\n if (!series.labelsOpposite) {\r\n p1.x = label.parent.measuredWidth + this.length;\r\n }\r\n }\r\n else {\r\n var x1 = label.pixelX;\r\n var y1 = label.pixelY;\r\n if (!series.labelsOpposite) {\r\n y1 += label.maxBottom;\r\n }\r\n p0 = $utils.spritePointToSprite(point, slice, this.parent);\r\n p2 = $utils.spritePointToSprite({ x: x1, y: y1 }, label.parent, this.parent);\r\n p1 = { x: p2.x, y: label.parent.pixelY - this.length };\r\n if (!series.labelsOpposite) {\r\n p1.y = label.parent.measuredHeight + this.length;\r\n }\r\n }\r\n this.path = $path.moveTo(p0) + $path.lineTo(p1) + $path.lineTo(p2);\r\n }\r\n };\r\n Object.defineProperty(FunnelTick.prototype, \"slice\", {\r\n /**\r\n * @return FunnelSlice\r\n */\r\n get: function () {\r\n return this._slice.get();\r\n },\r\n /**\r\n * [[FunnelSlice]] element tick is attached to.\r\n *\r\n * @param slice Slice\r\n */\r\n set: function (slice) {\r\n this._slice.set(slice, new MultiDisposer([\r\n slice.events.on(\"transformed\", this.invalidate, this, false),\r\n slice.events.on(\"validated\", this.invalidate, this, false)\r\n ]));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelTick.prototype, \"label\", {\r\n /**\r\n * @return Label\r\n */\r\n get: function () {\r\n return this._label.get();\r\n },\r\n /**\r\n * [[Label]] element tick is attached to.\r\n *\r\n * @param label Label\r\n */\r\n set: function (label) {\r\n this._label.set(label, label.events.on(\"transformed\", this.invalidate, this, false));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelTick.prototype, \"locationX\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"locationX\");\r\n },\r\n /**\r\n * A relative horizontal position within target element a tick is pointing\r\n * to.\r\n *\r\n * A scale is from 0 to 1, where 0 means left edge, and 1 right edge.\r\n *\r\n * You can also set any value in-between (e.g. 0.5 will point to the middle\r\n * of the slice), or outside 0-1 range, which will put tick anchor position\r\n * outside target element.\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"locationX\", value, false, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelTick.prototype, \"locationY\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"locationY\");\r\n },\r\n /**\r\n * A relative vertical position within target element a tick is pointing\r\n * to.\r\n *\r\n * A scale is from 0 to 1, where 0 means top edge, and 1 bottom edge.\r\n *\r\n * You can also set any value in-between (e.g. 0.5 will point to the middle\r\n * of the slice), or outside 0-1 range, which will put tick anchor position\r\n * outside target element.\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"locationY\", value, false, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FunnelTick;\r\n}(Tick));\r\nexport { FunnelTick };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FunnelTick\"] = FunnelTick;\r\n","/**\r\n * Defines Funnel Chart Series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PercentSeries, PercentSeriesDataItem } from \"./PercentSeries\";\r\nimport { FunnelSlice } from \"../elements/FunnelSlice\";\r\nimport { FunnelTick } from \"../elements/FunnelTick\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\nimport { options } from \"../../core/Options\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo: sequenced?\r\n/**\r\n * Defines a [[DataItem]] for [[FunnelSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar FunnelSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(FunnelSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FunnelSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"FunnelSeriesDataItem\";\r\n // this helps to invalidate series when value is 0 an it is hidden (no other events are triggered then)\r\n _this.events.on(\"visibilitychanged\", function () {\r\n if (_this.component) {\r\n _this.component.invalidateDataItems();\r\n }\r\n }, _this, false);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(FunnelSeriesDataItem.prototype, \"sliceLink\", {\r\n /**\r\n * A [[FunnelSlice]] element, related to this data item ([[FunnelSlice]]).\r\n *\r\n * @readonly\r\n * @return Slice element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._sliceLink) {\r\n var sliceLink_1 = this.component.sliceLinks.create();\r\n this._sliceLink = sliceLink_1;\r\n this._disposers.push(sliceLink_1);\r\n sliceLink_1.parent = this.component.slicesContainer;\r\n this._disposers.push(new Disposer(function () {\r\n if (_this.component) {\r\n _this.component.sliceLinks.removeValue(sliceLink_1);\r\n }\r\n }));\r\n this.addSprite(sliceLink_1);\r\n sliceLink_1.visible = this.visible;\r\n }\r\n return this._sliceLink;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FunnelSeriesDataItem;\r\n}(PercentSeriesDataItem));\r\nexport { FunnelSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a FunnelSlice series on a [[SlicedChart]].\r\n *\r\n * @see {@link IFunnelSeriesEvents} for a list of available Events\r\n * @see {@link IFunnelSeriesAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\r\nvar FunnelSeries = /** @class */ (function (_super) {\r\n __extends(FunnelSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FunnelSeries() {\r\n var _this = _super.call(this) || this;\r\n _this._nextY = 0;\r\n _this.className = \"FunnelSeries\";\r\n _this.orientation = \"vertical\";\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.slicesContainer.width = percent(100);\r\n _this.slicesContainer.height = percent(100);\r\n _this._disposers.push(_this.slicesContainer.events.on(\"maxsizechanged\", _this.invalidateDataItems, _this, false));\r\n _this.labelsOpposite = true;\r\n _this.labelsContainer.layout = \"absolute\";\r\n _this.bottomRatio = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creates a [[FunnelSlice]] element.\r\n *\r\n * @return Slice\r\n */\r\n FunnelSeries.prototype.createSlice = function () {\r\n return new FunnelSlice();\r\n };\r\n /**\r\n * Creates a [[FunnelTick]] element.\r\n *\r\n * @return Tick\r\n */\r\n FunnelSeries.prototype.createTick = function () {\r\n return new FunnelTick();\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n FunnelSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Funnel Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n FunnelSeries.prototype.createDataItem = function () {\r\n return new FunnelSeriesDataItem();\r\n };\r\n /**\r\n * Inits FunnelSlice.\r\n *\r\n * @param slice to init\r\n */\r\n FunnelSeries.prototype.initSlice = function (slice) {\r\n slice.isMeasured = false;\r\n slice.defaultState.properties.scale = 1;\r\n slice.observe(\"scale\", this.handleSliceScale, this);\r\n slice.observe([\"dx\", \"dy\", \"x\", \"y\"], this.handleSliceMove, this);\r\n slice.tooltipText = \"{category}: {value.percent.formatNumber('#.#p')} ({value.value})\";\r\n var hoverState = slice.states.create(\"hover\");\r\n hoverState.properties.expandDistance = 0.2;\r\n };\r\n /**\r\n * [initLabel description]\r\n *\r\n * @todo Description\r\n * @param label [description]\r\n */\r\n FunnelSeries.prototype.initLabel = function (label) {\r\n _super.prototype.initLabel.call(this, label);\r\n label.verticalCenter = \"middle\";\r\n label.horizontalCenter = \"middle\";\r\n label.isMeasured = true;\r\n label.padding(5, 5, 5, 5);\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FunnelSeries.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n this._nextY = 0;\r\n };\r\n /**\r\n * [validateDataElements description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n FunnelSeries.prototype.validateDataElements = function () {\r\n var _this = this;\r\n var slicesContainer = this.slicesContainer;\r\n var labelsContainer = this.labelsContainer;\r\n var labelTemplate = this.labels.template;\r\n if (this.alignLabels) {\r\n labelTemplate.interactionsEnabled = true;\r\n slicesContainer.isMeasured = true;\r\n labelsContainer.isMeasured = true;\r\n }\r\n else {\r\n labelTemplate.interactionsEnabled = false;\r\n slicesContainer.isMeasured = false;\r\n labelsContainer.isMeasured = false;\r\n }\r\n var total = 0;\r\n var count = 0;\r\n this.dataItems.each(function (dItem) {\r\n if ($type.hasValue(dItem.value)) {\r\n count++;\r\n if (dItem.value > 0) {\r\n total += Math.abs(dItem.getWorkingValue(\"value\") / dItem.value);\r\n }\r\n else {\r\n if (_this.ignoreZeroValues) {\r\n count--;\r\n }\r\n else {\r\n if (!dItem.visible || dItem.__disabled || dItem.isHiding) {\r\n count--;\r\n }\r\n else {\r\n total += 1;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n this._total = 1 / count * total;\r\n this._count = count;\r\n _super.prototype.validateDataElements.call(this);\r\n this.arrangeLabels();\r\n };\r\n /**\r\n * [getNextValue description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @return [description]\r\n */\r\n FunnelSeries.prototype.getNextValue = function (dataItem) {\r\n var index = dataItem.index;\r\n var nextValue = dataItem.getWorkingValue(\"value\");\r\n if (index < this.dataItems.length - 1) {\r\n var nextItem = this.dataItems.getIndex(index + 1);\r\n nextValue = nextItem.getWorkingValue(\"value\");\r\n if (!nextItem.visible || nextItem.isHiding || nextItem.__disabled || (nextItem.value == 0 && this.ignoreZeroValues)) {\r\n return this.getNextValue(nextItem);\r\n }\r\n }\r\n return nextValue;\r\n };\r\n /**\r\n * [formDataElement description]\r\n *\r\n * @todo Description\r\n */\r\n FunnelSeries.prototype.formDataElement = function () {\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n FunnelSeries.prototype.validateDataElement = function (dataItem) {\r\n var _this = this;\r\n //if ($type.hasValue(dataItem.value)) {\r\n // FunnelSlice\r\n var slice = dataItem.slice;\r\n slice.orientation = this.orientation;\r\n var sliceLink = dataItem.sliceLink;\r\n sliceLink.orientation = this.orientation;\r\n var tick = dataItem.tick;\r\n var label = dataItem.label;\r\n tick.slice = slice;\r\n tick.label = label;\r\n if ($type.hasValue(dataItem.value)) {\r\n this.decorateSlice(dataItem);\r\n $array.each(dataItem.sprites, function (sprite) {\r\n if (dataItem.value == 0 && _this.ignoreZeroValues) {\r\n sprite.__disabled = true;\r\n }\r\n else {\r\n sprite.__disabled = false;\r\n }\r\n });\r\n }\r\n else {\r\n $array.each(dataItem.sprites, function (sprite) {\r\n sprite.__disabled = true;\r\n });\r\n }\r\n if (dataItem.index == this.dataItems.length - 1) {\r\n sliceLink.disabled = true;\r\n }\r\n // do this at the end, otherwise bullets won't be positioned properly\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n sliceLink.fill = slice.fill;\r\n //}\r\n };\r\n /**\r\n * [decorateSlice description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n */\r\n FunnelSeries.prototype.decorateSlice = function (dataItem) {\r\n var slice = dataItem.slice;\r\n var sliceLink = dataItem.sliceLink;\r\n var label = dataItem.label;\r\n var tick = dataItem.tick;\r\n var maxWidth = this.slicesContainer.innerWidth;\r\n var maxHeight = this.slicesContainer.innerHeight;\r\n var nextValue = this.getNextValue(dataItem);\r\n var workingValue = Math.abs(dataItem.getWorkingValue(\"value\"));\r\n var bottomRatio = this.bottomRatio;\r\n var d = 1;\r\n if (dataItem.value != 0) {\r\n d = workingValue / Math.abs(dataItem.value);\r\n }\r\n else {\r\n if (dataItem.__disabled || dataItem.isHiding || !dataItem.visible) {\r\n d = 0.000001;\r\n }\r\n }\r\n if (this.ignoreZeroValues && dataItem.value == 0) {\r\n dataItem.__disabled = true;\r\n return;\r\n }\r\n else {\r\n dataItem.__disabled = false;\r\n }\r\n if (this._nextY == Infinity) {\r\n this._nextY = 0;\r\n }\r\n if (this.orientation == \"vertical\") {\r\n var linkHeight = sliceLink.pixelHeight * d;\r\n maxHeight = maxHeight + linkHeight; // to avoid one link gap in the bottom\r\n slice.topWidth = workingValue / this.dataItem.values.value.high * maxWidth;\r\n slice.bottomWidth = (workingValue - (workingValue - nextValue) * bottomRatio) / this.dataItem.values.value.high * maxWidth;\r\n sliceLink.topWidth = slice.bottomWidth;\r\n sliceLink.bottomWidth = (workingValue - (workingValue - nextValue)) / this.dataItem.values.value.high * maxWidth;\r\n slice.y = this._nextY;\r\n slice.height = Math.min(100000, $math.max(0, maxHeight / this._count * d / this._total - linkHeight));\r\n slice.x = maxWidth / 2;\r\n if (!this.alignLabels) {\r\n label.x = slice.x;\r\n }\r\n else {\r\n label.x = undefined;\r\n }\r\n label.y = slice.pixelY + slice.pixelHeight * tick.locationY;\r\n this._nextY += slice.pixelHeight + linkHeight;\r\n sliceLink.y = this._nextY - linkHeight;\r\n sliceLink.x = slice.x;\r\n }\r\n else {\r\n var linkWidth = sliceLink.pixelWidth * d;\r\n maxWidth = maxWidth + linkWidth; // to avoid one link gap in the bottom\r\n slice.topWidth = workingValue / this.dataItem.values.value.high * maxHeight;\r\n slice.bottomWidth = (workingValue - (workingValue - nextValue) * bottomRatio) / this.dataItem.values.value.high * maxHeight;\r\n sliceLink.topWidth = slice.bottomWidth;\r\n sliceLink.bottomWidth = (workingValue - (workingValue - nextValue)) / this.dataItem.values.value.high * maxHeight;\r\n slice.x = this._nextY;\r\n slice.width = Math.min(100000, maxWidth / this._count * d * 1 / this._total - linkWidth);\r\n slice.y = maxHeight / 2;\r\n if (!this.alignLabels) {\r\n label.y = slice.y;\r\n }\r\n else {\r\n label.y = this.labelsContainer.measuredHeight;\r\n }\r\n label.x = slice.pixelX + slice.pixelWidth * tick.locationX;\r\n this._nextY += slice.pixelWidth + linkWidth;\r\n sliceLink.x = this._nextY - linkWidth;\r\n sliceLink.y = slice.y;\r\n }\r\n };\r\n FunnelSeries.prototype.getLastLabel = function (index) {\r\n if (index > 0) {\r\n var lastLabel = this.labels.getIndex(index);\r\n if (lastLabel.__disabled || !lastLabel.visible) {\r\n return this.getLastLabel(index - 1);\r\n }\r\n else {\r\n return lastLabel;\r\n }\r\n }\r\n };\r\n /**\r\n * [arrangeLabels description]\r\n *\r\n * @todo Description\r\n */\r\n FunnelSeries.prototype.arrangeLabels = function () {\r\n if (this.alignLabels) {\r\n var count = this.labels.length;\r\n if (count > 1) {\r\n var lastLabel = this.getLastLabel(count - 1);\r\n if (lastLabel) {\r\n var lastY = lastLabel.pixelY;\r\n var lastX = lastLabel.pixelX;\r\n if (count > 1) {\r\n for (var i = count - 2; i >= 0; i--) {\r\n var label = this.labels.getIndex(i);\r\n if (label.visible && !label.__disabled) {\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n if (this.orientation == \"vertical\") {\r\n if (label.pixelY + label.measuredHeight > lastY) {\r\n label.y = Math.min(1000000, lastY - label.measuredHeight);\r\n }\r\n }\r\n // horizontal\r\n else {\r\n if (label.pixelX + label.measuredWidth > lastX) {\r\n label.x = Math.min(1000000, lastX - label.measuredWidth);\r\n }\r\n }\r\n lastY = label.pixelY;\r\n lastX = label.pixelX;\r\n }\r\n }\r\n lastY = 0;\r\n lastX = 0;\r\n for (var i = 0; i < count; i++) {\r\n var label = this.labels.getIndex(i);\r\n if (label.visible && !label.__disabled) {\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n if (this.orientation == \"vertical\") {\r\n if (label.pixelY < lastY) {\r\n label.y = Math.min(1000000, lastY);\r\n }\r\n }\r\n // horizontal\r\n else {\r\n if (label.pixelX < lastX) {\r\n label.x = Math.min(1000000, lastX);\r\n }\r\n }\r\n lastY += label.measuredHeight;\r\n lastX += label.measuredWidth;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Positions series bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet Bullet\r\n */\r\n FunnelSeries.prototype.positionBullet = function (bullet) {\r\n _super.prototype.positionBullet.call(this, bullet);\r\n var dataItem = bullet.dataItem;\r\n var slice = dataItem.slice;\r\n var locationX = bullet.locationX;\r\n if (!$type.isNumber(locationX)) {\r\n locationX = 0.5;\r\n }\r\n var locationY = bullet.locationY;\r\n if (!$type.isNumber(locationY)) {\r\n locationY = 1;\r\n }\r\n bullet.x = slice.pixelX + slice.measuredWidth * locationX;\r\n bullet.y = slice.pixelY + slice.measuredHeight * locationY;\r\n };\r\n Object.defineProperty(FunnelSeries.prototype, \"orientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Orientation of the funnel slices: \"horizontal\" or \"vertical\" (default).\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"orientation\", value)) {\r\n this.labelsOpposite = this.labelsOpposite;\r\n this.invalidate();\r\n if (value == \"vertical\") {\r\n this.ticks.template.locationX = 1;\r\n this.ticks.template.locationY = 0.5;\r\n this.labels.template.rotation = 0;\r\n this.layout = \"horizontal\";\r\n }\r\n else {\r\n this.ticks.template.locationX = 0.5;\r\n this.ticks.template.locationY = 1;\r\n this.labels.template.rotation = -90;\r\n this.layout = \"vertical\";\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelSeries.prototype, \"bottomRatio\", {\r\n /**\r\n * @return {number}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"bottomRatio\");\r\n },\r\n /**\r\n * Indicates how slice's bottom will change in relation to slices top AND\r\n * next slices top.\r\n *\r\n * Basically it's a relative value (0-1) that indicates bottom width\r\n * position between current slice's top width and the top withd of the next\r\n * one.\r\n *\r\n * The scale goes from 0 (closer to current slice width) to 1 (closer to next\r\n * slice with).\r\n *\r\n * `0` (default) will mean that bottom will be the same as top, resulting in\r\n * a prefectly square slice.\r\n *\r\n * From the data-viz standpoint `0` is a correct setting, since area of the\r\n * slices will depict their value correctly.\r\n *\r\n * `1` will mean that slice will become trapezoid with its bottom matching\r\n * width of the next slice.\r\n *\r\n * `0.5` will make bottom width be in the middle of width of current slice\r\n * and the next slice.\r\n *\r\n * @default 0\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"bottomRatio\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelSeries.prototype, \"sliceLinks\", {\r\n /**\r\n * A list of elements linking each actual slice.\r\n *\r\n * Please note that links are [[FunnelSlice]] objects, just like real links,\r\n * so they have all the same configuration options.\r\n *\r\n * You can use `template` of this link, to specify how links will look.\r\n *\r\n * ```TypeScript\r\n * series.sliceLinks.template.fillOpacity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * series.sliceLinks.template.fillOpacity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * \"type\": \"FunnelSeries\",\r\n * // ...\r\n * \"sliceLinks\": {\r\n * \"fillOpacity\": 0.5\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @return Funnel links\r\n */\r\n get: function () {\r\n if (!this._sliceLinks) {\r\n var sliceLink = new FunnelSlice();\r\n sliceLink.applyOnClones = true;\r\n sliceLink.fillOpacity = 0.5;\r\n sliceLink.expandDistance = -0.3;\r\n sliceLink.hiddenState.properties.opacity = 0;\r\n this._disposers.push(sliceLink);\r\n this._sliceLinks = new ListTemplate(sliceLink);\r\n this._disposers.push(new ListDisposer(this._sliceLinks));\r\n }\r\n return this._sliceLinks;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Shows hidden series.\r\n *\r\n * @param duration Duration of reveal animation (ms)\r\n * @return Animation\r\n */\r\n FunnelSeries.prototype.show = function (duration) {\r\n var _this = this;\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var interpolationDuration = this.defaultState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n if (!options.animationsEnabled) {\r\n interpolationDuration = 0;\r\n }\r\n var delay = 0;\r\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\r\n var i = a[0];\r\n var dataItem = a[1];\r\n if (_this.sequencedInterpolation) {\r\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n }\r\n dataItem.show(interpolationDuration, delay, [\"value\"]);\r\n });\r\n var animation = _super.prototype.show.call(this, duration);\r\n return animation;\r\n };\r\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of hiding animation (ms)\r\n * @return Animation\r\n */\r\n FunnelSeries.prototype.hide = function (duration) {\r\n var _this = this;\r\n var fields = [\"value\"];\r\n var value = 0;\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var delay = 0;\r\n var interpolationDuration = this.hiddenState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n if (!options.animationsEnabled) {\r\n interpolationDuration = 0;\r\n }\r\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\r\n var i = a[0];\r\n var dataItem = a[1];\r\n if (_this.sequencedInterpolation) {\r\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n }\r\n dataItem.hide(interpolationDuration, delay, value, fields);\r\n });\r\n var animation = _super.prototype.hide.call(this, duration);\r\n if (animation && !animation.isFinished()) {\r\n animation.delay(delay);\r\n }\r\n return animation;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n FunnelSeries.prototype.setAlignLabels = function (value) {\r\n _super.prototype.setAlignLabels.call(this, value);\r\n this.ticks.template.disabled = !value;\r\n var labelsContainer = this.labelsContainer;\r\n if (labelsContainer) {\r\n // do not align\r\n if (!value) {\r\n labelsContainer.width = percent(100);\r\n labelsContainer.height = percent(100);\r\n }\r\n //align\r\n else {\r\n labelsContainer.height = undefined;\r\n labelsContainer.width = undefined;\r\n labelsContainer.margin(10, 10, 10, 10);\r\n }\r\n }\r\n this.labelsOpposite = this.labelsOpposite;\r\n };\r\n Object.defineProperty(FunnelSeries.prototype, \"labelsOpposite\", {\r\n /**\r\n * @return Labels on opposite side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"labelsOpposite\");\r\n },\r\n /**\r\n * Put labels on the oppsite side of the series?\r\n *\r\n * This setting is only used if `alignLabels = true`.\r\n *\r\n * If set to `true` (default) labels will be drawn to the right (on vertical\r\n * series), or to the bottom (on horizontal series).\r\n *\r\n * If set to `false`, labels will be positioned to the left or top\r\n * respectively.\r\n *\r\n * @default true\r\n * @since 4.1.13\r\n * @param value Labels on opposite side?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"labelsOpposite\", value);\r\n var labelTemplate = this.labels.template;\r\n var labelAlign = \"none\";\r\n var labelValign = \"none\";\r\n if (!this.alignLabels) {\r\n if (this.orientation == \"vertical\") {\r\n labelAlign = \"center\";\r\n }\r\n else {\r\n labelValign = \"middle\";\r\n }\r\n }\r\n else {\r\n // opposite (left/bottom)\r\n if (value) {\r\n this.labelsContainer.toFront();\r\n // left\r\n if (this.orientation == \"vertical\") {\r\n this.ticks.template.locationX = 1;\r\n labelTemplate.horizontalCenter = \"left\";\r\n labelAlign = \"right\";\r\n }\r\n // bottom\r\n else {\r\n this.ticks.template.locationY = 1;\r\n labelTemplate.horizontalCenter = \"right\";\r\n labelValign = \"bottom\";\r\n }\r\n }\r\n // non oposite (right/top)\r\n else {\r\n this.labelsContainer.toBack();\r\n // right\r\n if (this.orientation == \"vertical\") {\r\n this.ticks.template.locationX = 0;\r\n labelAlign = \"left\";\r\n }\r\n // top\r\n else {\r\n labelValign = \"top\";\r\n this.ticks.template.locationY = 0;\r\n }\r\n }\r\n }\r\n labelTemplate.align = labelAlign;\r\n labelTemplate.valign = labelValign;\r\n this.validateLayout();\r\n this.ticks.each(function (tick) {\r\n tick.invalidate();\r\n });\r\n this.invalidateDataItems();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FunnelSeries;\r\n}(PercentSeries));\r\nexport { FunnelSeries };\r\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FunnelSeries\"] = FunnelSeries;\r\nregistry.registeredClasses[\"FunnelSeriesDataItem\"] = FunnelSeriesDataItem;\r\n","/**\r\n * Defines Pyramid Series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FunnelSeries, FunnelSeriesDataItem } from \"./FunnelSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo: sequenced?\r\n/**\r\n * Defines a [[DataItem]] for [[PyramidSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PyramidSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(PyramidSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PyramidSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PyramidSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PyramidSeriesDataItem;\r\n}(FunnelSeriesDataItem));\r\nexport { PyramidSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a FunnelSlice series on a [[SlicedChart]].\r\n *\r\n * @see {@link IPyramidSeriesEvents} for a list of available Events\r\n * @see {@link IPyramidSeriesAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\r\nvar PyramidSeries = /** @class */ (function (_super) {\r\n __extends(PyramidSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PyramidSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PyramidSeries\";\r\n _this.topWidth = percent(0);\r\n _this.bottomWidth = percent(100);\r\n _this.pyramidHeight = percent(100);\r\n _this.valueIs = \"area\";\r\n _this.sliceLinks.template.width = 0;\r\n _this.sliceLinks.template.height = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PyramidSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Pyramid Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n PyramidSeries.prototype.createDataItem = function () {\r\n return new PyramidSeriesDataItem();\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PyramidSeries.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n this._nextWidth = undefined;\r\n };\r\n /**\r\n * [getNextValue description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @return [description]\r\n */\r\n PyramidSeries.prototype.getNextValue = function (dataItem) {\r\n var index = dataItem.index;\r\n var nextValue = dataItem.getWorkingValue(\"value\");\r\n if (index < this.dataItems.length - 1) {\r\n var nextItem = this.dataItems.getIndex(index + 1);\r\n nextValue = nextItem.getWorkingValue(\"value\");\r\n }\r\n if (nextValue == 0) {\r\n nextValue = 0.000001;\r\n }\r\n return nextValue;\r\n };\r\n /**\r\n * [validateDataElements description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n PyramidSeries.prototype.validateDataElements = function () {\r\n var _this = this;\r\n var maxWidth = this.slicesContainer.innerWidth;\r\n var maxHeight = this.slicesContainer.innerHeight;\r\n this.dataItems.each(function (dataItem) {\r\n if (dataItem.value > 0) {\r\n var relValue = dataItem.getWorkingValue(\"value\") / dataItem.value;\r\n var sliceLink = dataItem.sliceLink;\r\n if (_this.orientation == \"vertical\") {\r\n maxHeight -= (sliceLink.pixelHeight * relValue);\r\n }\r\n else {\r\n maxWidth -= (sliceLink.pixelWidth * relValue);\r\n }\r\n }\r\n });\r\n this._pyramidHeight = $utils.relativeToValue(this.pyramidHeight, maxHeight);\r\n this._pyramidWidth = $utils.relativeToValue(this.pyramidHeight, maxWidth);\r\n if (this.orientation == \"vertical\") {\r\n var y = (maxHeight - this._pyramidHeight) / 2;\r\n this.slicesContainer.y = y;\r\n this.labelsContainer.y = y;\r\n this.ticksContainer.y = y;\r\n }\r\n else {\r\n var x = (maxWidth - this._pyramidWidth) / 2;\r\n this.slicesContainer.x = x;\r\n this.labelsContainer.x = x;\r\n this.ticksContainer.x = x;\r\n }\r\n _super.prototype.validateDataElements.call(this);\r\n };\r\n /**\r\n * [decorateSlice description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n */\r\n PyramidSeries.prototype.decorateSlice = function (dataItem) {\r\n var sum = this.dataItem.values.value.absoluteSum;\r\n if (sum == 0) {\r\n return;\r\n }\r\n var slice = dataItem.slice;\r\n var sliceLink = dataItem.sliceLink;\r\n var label = dataItem.label;\r\n var tick = dataItem.tick;\r\n // TODO can this be removed ?\r\n this.getNextValue(dataItem);\r\n var workingValue = Math.abs(dataItem.getWorkingValue(\"value\"));\r\n var pyramidWidth = this._pyramidWidth;\r\n var pyramidHeight = this._pyramidHeight;\r\n var maxWidth = this.slicesContainer.innerWidth;\r\n var maxHeight = this.slicesContainer.innerHeight;\r\n var linkWidth = sliceLink.pixelWidth;\r\n var linkHeight = sliceLink.pixelHeight;\r\n if ((dataItem.value == 0 || dataItem.value == null) && this.ignoreZeroValues) {\r\n dataItem.__disabled = true;\r\n }\r\n else {\r\n dataItem.__disabled = false;\r\n }\r\n if (this.orientation == \"vertical\") {\r\n var topWidth = $utils.relativeToValue(this.topWidth, maxWidth);\r\n if (!$type.isNumber(this._nextWidth)) {\r\n this._nextWidth = topWidth;\r\n }\r\n var bottomWidth = $utils.relativeToValue(this.bottomWidth, maxWidth);\r\n var sliceTopWidth = this._nextWidth;\r\n var angle = Math.atan2(pyramidHeight, topWidth - bottomWidth);\r\n var c = Math.tan(Math.PI / 2 - angle);\r\n if (c == 0) {\r\n c = 0.00000001;\r\n }\r\n var sliceHeight = void 0;\r\n var sliceBottomWidth = void 0;\r\n if (this.valueIs == \"area\") {\r\n var totalSquare = (topWidth + bottomWidth) / 2 * pyramidHeight;\r\n var square = totalSquare * workingValue / sum;\r\n var s = Math.abs(sliceTopWidth * sliceTopWidth - 2 * square * c);\r\n sliceHeight = (sliceTopWidth - Math.sqrt(s)) / c;\r\n if (sliceHeight > 0) {\r\n sliceBottomWidth = (2 * square - sliceHeight * sliceTopWidth) / sliceHeight;\r\n }\r\n else {\r\n sliceBottomWidth = sliceTopWidth;\r\n }\r\n }\r\n else {\r\n sliceHeight = pyramidHeight * workingValue / sum;\r\n sliceBottomWidth = sliceTopWidth - sliceHeight * c;\r\n }\r\n slice.height = sliceHeight;\r\n slice.width = maxWidth;\r\n slice.bottomWidth = sliceBottomWidth;\r\n slice.topWidth = sliceTopWidth;\r\n sliceLink.topWidth = slice.bottomWidth;\r\n sliceLink.bottomWidth = slice.bottomWidth;\r\n slice.y = this._nextY;\r\n //slice.x = maxWidth / 2;\r\n if (!this.alignLabels) {\r\n label.x = maxWidth / 2;\r\n }\r\n else {\r\n label.x = 0;\r\n }\r\n label.y = slice.pixelY + slice.pixelHeight * tick.locationY + slice.dy;\r\n this._nextY += slice.pixelHeight + linkHeight * workingValue / Math.max(Math.abs(dataItem.value), 0.00000001);\r\n sliceLink.y = this._nextY - linkHeight;\r\n sliceLink.x = maxWidth / 2;\r\n }\r\n else {\r\n var topWidth = $utils.relativeToValue(this.topWidth, maxHeight);\r\n if (!$type.isNumber(this._nextWidth)) {\r\n this._nextWidth = topWidth;\r\n }\r\n var bottomWidth = $utils.relativeToValue(this.bottomWidth, maxHeight);\r\n var sliceTopWidth = this._nextWidth;\r\n var angle = Math.atan2(pyramidWidth, topWidth - bottomWidth);\r\n var c = Math.tan(Math.PI / 2 - angle);\r\n if (c == 0) {\r\n c = 0.00000001;\r\n }\r\n var sliceWidth = void 0;\r\n var sliceBottomWidth = void 0;\r\n if (this.valueIs == \"area\") {\r\n var totalSquare = (topWidth + bottomWidth) / 2 * pyramidWidth;\r\n var square = totalSquare * workingValue / sum;\r\n sliceWidth = (sliceTopWidth - Math.sqrt(sliceTopWidth * sliceTopWidth - 2 * square * c)) / c;\r\n sliceBottomWidth = (2 * square - sliceWidth * sliceTopWidth) / sliceWidth;\r\n }\r\n else {\r\n sliceWidth = pyramidWidth * workingValue / sum;\r\n sliceBottomWidth = sliceTopWidth - sliceWidth * c;\r\n }\r\n slice.width = sliceWidth;\r\n slice.height = maxHeight;\r\n slice.bottomWidth = sliceBottomWidth;\r\n slice.topWidth = sliceTopWidth;\r\n sliceLink.topWidth = slice.bottomWidth;\r\n sliceLink.bottomWidth = slice.bottomWidth;\r\n slice.x = this._nextY;\r\n if (!this.alignLabels) {\r\n label.y = maxHeight / 2;\r\n }\r\n else {\r\n label.y = this.labelsContainer.measuredHeight;\r\n }\r\n label.x = slice.pixelX + slice.pixelWidth * tick.locationX + slice.dx;\r\n this._nextY += slice.pixelWidth + linkWidth * workingValue / Math.max(Math.abs(dataItem.value), 0.00000001);\r\n sliceLink.x = this._nextY - linkWidth;\r\n sliceLink.y = maxHeight / 2;\r\n }\r\n this._nextWidth = slice.bottomWidth;\r\n };\r\n Object.defineProperty(PyramidSeries.prototype, \"topWidth\", {\r\n /**\r\n * @return {number | Percent}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"topWidth\");\r\n },\r\n /**\r\n * Width of the pyramid's tip in pixels or relative (`Percent`).\r\n *\r\n * `0%` (default) means the pyramid will be perfectly pointy.\r\n * `50%` will have a cut off / blunt top that is half the width of the chart.\r\n * `100%` will take the whole width of the chart.\r\n *\r\n * If you need the downward-pointing pyramid, you might want to `topWidth` to\r\n * `100%` and `bottomWidth` to `0%`.\r\n *\r\n * @default 0%\r\n * @param {number | Percent}\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"topWidth\", value, false, false, 10, false)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PyramidSeries.prototype, \"pyramidHeight\", {\r\n /**\r\n * @return {number | Percent}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pyramidHeight\");\r\n },\r\n /**\r\n * Height of pyramid\r\n *\r\n *\r\n * @default 100%\r\n * @param {number | Percent}\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"pyramidHeight\", value, false, false, 10, false)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PyramidSeries.prototype, \"bottomWidth\", {\r\n /**\r\n * @return {number | Percent}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"bottomWidth\");\r\n },\r\n /**\r\n * Width of the pyramid's bottom (bsae) in pixels or relative (`Percent`).\r\n *\r\n * `0%` means the pyramid's botto will be pointy.\r\n * `50%` will have a cut off / blunt bottom that is half the width of the chart.\r\n * `100%` (default) will take the whole width of the chart.\r\n *\r\n * If you need the downward-pointing pyramid, you might want to `topWidth` to\r\n * `100%` and `bottomWidth` to `0%`.\r\n *\r\n * @param {number | Percent}\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"bottomWidth\", value, false, false, 10, false)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PyramidSeries.prototype, \"valueIs\", {\r\n /**\r\n * @return {\"area\" | \"height\"}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"valueIs\");\r\n },\r\n /**\r\n * Indicates how slice's value will influence its size.\r\n *\r\n * `\"area\"` (default) means that the whole area of the pyramid (counting in\r\n * modifications by `topWidth` and `bottomWidth`) will be divvied up between\r\n * slices based on their value.\r\n *\r\n * With this setting at `\"area\"` the area of the trapezoids of each slice\r\n * will represent their value relatively to values of the other slices.\r\n *\r\n * This is a correct way to depict \"weight\" of each slice based on their\r\n * values.\r\n *\r\n * `\"height\"` means whole height (as opposed to area) of the pyramid will be\r\n * divvied up between slices. Actual slice width or area is not counted in.\r\n *\r\n * From the data-viz standpoint this does not make a lot of sense, since\r\n * slices with lesser values might appear more prominent if they are placed\r\n * towards thick end of the pyramid since their areas will be bigger.\r\n *\r\n * @default \"area\"\r\n * @param {\"area\" | \"height\"}\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"valueIs\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PyramidSeries;\r\n}(FunnelSeries));\r\nexport { PyramidSeries };\r\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PyramidSeries\"] = PyramidSeries;\r\nregistry.registeredClasses[\"PyramidSeriesDataItem\"] = PyramidSeriesDataItem;\r\n","/**\r\n * Defines Pictorial Stacked Series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PyramidSeries, PyramidSeriesDataItem } from \"./PyramidSeries\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo: sequenced?\r\n/**\r\n * Defines a [[DataItem]] for [[PictorialStackedSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PictorialStackedSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(PictorialStackedSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PictorialStackedSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PictorialStackedSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PictorialStackedSeriesDataItem;\r\n}(PyramidSeriesDataItem));\r\nexport { PictorialStackedSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a PictorialStacked series on a [[SlicedChart]].\r\n *\r\n * @see {@link IPictorialStackedSeriesEvents} for a list of available Events\r\n * @see {@link IPictorialStackedSeriesAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\r\nvar PictorialStackedSeries = /** @class */ (function (_super) {\r\n __extends(PictorialStackedSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PictorialStackedSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PictorialStackedSeries\";\r\n _this.topWidth = percent(100);\r\n _this.bottomWidth = percent(100);\r\n _this.valueIs = \"height\";\r\n _this.applyTheme();\r\n _this.startLocation = 0;\r\n _this.endLocation = 1;\r\n _this.align = \"center\";\r\n _this.valign = \"middle\";\r\n _this._maskSprite = _this.slicesContainer.createChild(Sprite);\r\n _this._maskSprite.visible = false;\r\n _this._maskSprite.zIndex = 100;\r\n _this._maskSprite.shouldClone = false;\r\n return _this;\r\n }\r\n /**\r\n * Sizes the mask to fit the series.\r\n *\r\n * @ignore\r\n */\r\n PictorialStackedSeries.prototype.validateDataElements = function () {\r\n var maxWidth = this.slicesContainer.maxWidth;\r\n var maxHeight = this.slicesContainer.maxHeight;\r\n var maskSprite = this._maskSprite;\r\n //maskSprite.validatePosition(); // for some reason size of the maskSprite is 0x0 after we removed validatePosition in afterdraw\r\n var pictureWidth = maskSprite.measuredWidth / maskSprite.scale;\r\n var pictureHeight = maskSprite.measuredHeight / maskSprite.scale;\r\n var scale = $math.min(maxHeight / pictureHeight, maxWidth / pictureWidth);\r\n if (scale == Infinity) {\r\n scale = 1; // can't return here, won't draw legend properly\r\n }\r\n scale = $math.max(0.001, scale);\r\n var startLocation = this.startLocation;\r\n var endLocation = this.endLocation;\r\n var newWidth = $math.min(maxWidth, pictureWidth * scale);\r\n var newHeight = $math.min(maxHeight, pictureHeight * scale);\r\n maskSprite.scale = scale;\r\n if (this.orientation == \"vertical\") {\r\n this.topWidth = newWidth + 4;\r\n this.bottomWidth = newWidth + 4;\r\n this.pyramidHeight = newHeight * (endLocation - startLocation);\r\n maskSprite.x = maxWidth / 2;\r\n maskSprite.y = newHeight / 2;\r\n }\r\n else {\r\n this.topWidth = newHeight + 4;\r\n this.bottomWidth = newHeight + 4;\r\n this.pyramidHeight = newWidth * (endLocation - startLocation);\r\n maskSprite.valign = \"middle\";\r\n maskSprite.x = newWidth / 2;\r\n maskSprite.y = maxHeight / 2;\r\n }\r\n maskSprite.verticalCenter = \"middle\";\r\n maskSprite.horizontalCenter = \"middle\";\r\n _super.prototype.validateDataElements.call(this);\r\n var y;\r\n var x;\r\n if (this.orientation == \"vertical\") {\r\n if (this.valign == \"bottom\") {\r\n y = (maxHeight - newHeight);\r\n }\r\n if (this.valign == \"middle\") {\r\n y = (maxHeight - newHeight) / 2;\r\n }\r\n if (this.valign == \"top\") {\r\n y = 0;\r\n }\r\n if (this.align == \"left\") {\r\n x = -(maxWidth - newWidth) / 2;\r\n }\r\n if (this.align == \"center\") {\r\n x = 0;\r\n }\r\n if (this.align == \"right\") {\r\n x = (maxWidth - newWidth) / 2;\r\n }\r\n this.slices.template.dy = startLocation * newHeight;\r\n if (this.alignLabels) {\r\n this.slicesContainer.dx = x;\r\n }\r\n }\r\n else {\r\n if (this.valign == \"bottom\") {\r\n y = (maxHeight - newHeight) / 2;\r\n }\r\n if (this.valign == \"middle\") {\r\n y = 0;\r\n }\r\n if (this.valign == \"top\") {\r\n y = -(maxHeight - newHeight) / 2;\r\n }\r\n if (this.align == \"left\") {\r\n x = 0;\r\n }\r\n if (this.align == \"center\") {\r\n x = (maxWidth - newWidth) / 2;\r\n }\r\n if (this.align == \"right\") {\r\n x = (maxWidth - newWidth);\r\n }\r\n this.slices.template.dx = startLocation * newWidth;\r\n if (this.alignLabels) {\r\n this.slicesContainer.dy = y;\r\n }\r\n }\r\n this.slicesContainer.x = x;\r\n this.labelsContainer.x = x;\r\n this.ticksContainer.x = x;\r\n this.slicesContainer.y = y;\r\n this.labelsContainer.y = y;\r\n this.ticksContainer.y = y;\r\n if (newWidth > 0 && newHeight > 0) {\r\n this.slicesContainer.mask = maskSprite;\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PictorialStackedSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Pyramid Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n PictorialStackedSeries.prototype.createDataItem = function () {\r\n return new PictorialStackedSeriesDataItem();\r\n };\r\n Object.defineProperty(PictorialStackedSeries.prototype, \"maskSprite\", {\r\n /**\r\n * A [[Sprite]] element that is used as a series mask.\r\n *\r\n * If set, this element's shape will be used to apply shape to the whole\r\n * stacked pictorial series.\r\n *\r\n * You can use this element's `path` property to set an SVG path for the\r\n * shape:\r\n *\r\n * ```TypeScript\r\n * let iconPath = \"M511.82,329.991c-0.256-1.212-1.064-2.244-2.192-2.784l-24.396-11.684c17.688-29.776,11.804-68.912-15.58-91.88 c-53.756-45.084-131.696-70.936-213.828-70.936c-82.128,0-160.068,25.856-213.82,70.936c-27.416,22.992-33.28,62.18-15.524,91.972 L2.276,327.203c-1.128,0.54-1.936,1.572-2.192,2.792c-0.256,1.22,0.08,2.496,0.896,3.436l21.204,24.388 c0.764,0.88,1.868,1.376,3.02,1.376c0.084,0,0.172,0,0.26-0.008c1.244-0.084,2.384-0.74,3.072-1.776l14.852-22.376 c12.648,10.112,28.392,15.776,44.916,15.776c16.872,0,33.284-5.98,46.232-16.836c27.828-23.34,73.172-37.272,121.288-37.272 c48.12,0,93.464,13.932,121.296,37.272c12.944,10.856,29.36,16.836,46.228,16.836c16.596,0,32.4-5.724,45.08-15.916l14.94,22.512 c0.692,1.04,1.824,1.696,3.076,1.776c0.084,0.008,0.172,0.008,0.256,0.008c1.156,0,2.256-0.496,3.02-1.376l21.2-24.388C511.74,332.487,512.068,331.211,511.82,329.991z\";\r\n * // ...\r\n * series.maskSprite.path = iconPath;\r\n * ```\r\n * ```JavaScript\r\n * let iconPath = \"M511.82,329.991c-0.256-1.212-1.064-2.244-2.192-2.784l-24.396-11.684c17.688-29.776,11.804-68.912-15.58-91.88 c-53.756-45.084-131.696-70.936-213.828-70.936c-82.128,0-160.068,25.856-213.82,70.936c-27.416,22.992-33.28,62.18-15.524,91.972 L2.276,327.203c-1.128,0.54-1.936,1.572-2.192,2.792c-0.256,1.22,0.08,2.496,0.896,3.436l21.204,24.388 c0.764,0.88,1.868,1.376,3.02,1.376c0.084,0,0.172,0,0.26-0.008c1.244-0.084,2.384-0.74,3.072-1.776l14.852-22.376 c12.648,10.112,28.392,15.776,44.916,15.776c16.872,0,33.284-5.98,46.232-16.836c27.828-23.34,73.172-37.272,121.288-37.272 c48.12,0,93.464,13.932,121.296,37.272c12.944,10.856,29.36,16.836,46.228,16.836c16.596,0,32.4-5.724,45.08-15.916l14.94,22.512 c0.692,1.04,1.824,1.696,3.076,1.776c0.084,0.008,0.172,0.008,0.256,0.008c1.156,0,2.256-0.496,3.02-1.376l21.2-24.388C511.74,332.487,512.068,331.211,511.82,329.991z\";\r\n * // ...\r\n * series.maskSprite.path = iconPath;\r\n * ```\r\n * ```JSON\r\n * let iconPath = \"M511.82,329.991c-0.256-1.212-1.064-2.244-2.192-2.784l-24.396-11.684c17.688-29.776,11.804-68.912-15.58-91.88 c-53.756-45.084-131.696-70.936-213.828-70.936c-82.128,0-160.068,25.856-213.82,70.936c-27.416,22.992-33.28,62.18-15.524,91.972 L2.276,327.203c-1.128,0.54-1.936,1.572-2.192,2.792c-0.256,1.22,0.08,2.496,0.896,3.436l21.204,24.388 c0.764,0.88,1.868,1.376,3.02,1.376c0.084,0,0.172,0,0.26-0.008c1.244-0.084,2.384-0.74,3.072-1.776l14.852-22.376 c12.648,10.112,28.392,15.776,44.916,15.776c16.872,0,33.284-5.98,46.232-16.836c27.828-23.34,73.172-37.272,121.288-37.272 c48.12,0,93.464,13.932,121.296,37.272c12.944,10.856,29.36,16.836,46.228,16.836c16.596,0,32.4-5.724,45.08-15.916l14.94,22.512 c0.692,1.04,1.824,1.696,3.076,1.776c0.084,0.008,0.172,0.008,0.256,0.008c1.156,0,2.256-0.496,3.02-1.376l21.2-24.388C511.74,332.487,512.068,331.211,511.82,329.991z\";\r\n * // ...\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * \"type\": \"PictorialStackedSeries\",\r\n * // ...\r\n * \"maskSprite\": {\r\n * \"path\": iconPath\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @return Mask sprite\r\n */\r\n get: function () {\r\n return this._maskSprite;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Inits FunnelSlice.\r\n *\r\n * @param slice to init\r\n */\r\n PictorialStackedSeries.prototype.initSlice = function (slice) {\r\n _super.prototype.initSlice.call(this, slice);\r\n var hs = slice.states.getKey(\"hover\");\r\n if (hs) {\r\n hs.properties.expandDistance = 0;\r\n }\r\n };\r\n Object.defineProperty(PictorialStackedSeries.prototype, \"startLocation\", {\r\n /**\r\n * @return Start location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startLocation\");\r\n },\r\n /**\r\n * Relative location to start series from.\r\n *\r\n * Range of values: 0 to 1.\r\n *\r\n * This setting indicates where actual slices will start relatively to the\r\n * whole height/width of the series.\r\n *\r\n * For example, if we want slices to start at 30% from the top/left of the\r\n * series, we can set `startLocation = 0.3`.\r\n *\r\n * To fill shape outside of the location range, use background of the\r\n * property `slicesContainer`.\r\n *\r\n * ```TypeScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JavaScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"startLocation\": 0.2,\r\n * \"endLocation\": 0.8,\r\n * \"slicesContainer\": {\r\n * \"background\": {\r\n * \"fill\": \"#eee\"\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default 0\r\n * @since 4.1.13\r\n * @param value Start location\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startLocation\", value)) {\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PictorialStackedSeries.prototype, \"endLocation\", {\r\n /**\r\n * @return End location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endLocation\");\r\n },\r\n /**\r\n * Relative location to end series at.\r\n *\r\n * Range of values: 0 to 1.\r\n *\r\n * This setting indicates where actual slices will end relatively to the\r\n * whole height/width of the series.\r\n *\r\n * For example, if we want slices to end at 70% from the top/left of the\r\n * series, we can set `endLocation = 0.7`.\r\n *\r\n * To fill shape outside of the location range, use background of the\r\n * property `slicesContainer`.\r\n *\r\n * ```TypeScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JavaScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"startLocation\": 0.2,\r\n * \"endLocation\": 0.8,\r\n * \"slicesContainer\": {\r\n * \"background\": {\r\n * \"fill\": \"#eee\"\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default 1\r\n * @since 4.1.13\r\n * @param value End location\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endLocation\", value)) {\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PictorialStackedSeries;\r\n}(PyramidSeries));\r\nexport { PictorialStackedSeries };\r\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PictorialStackedSeries\"] = PictorialStackedSeries;\r\nregistry.registeredClasses[\"PictorialStackedSeriesDataItem\"] = PictorialStackedSeriesDataItem;\r\n","/**\r\n * Module that defines everything related to building Cone Columns.\r\n * It is a container which has coneColumn element which is a Cone.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Column } from \"./Column\";\r\nimport { Cone } from \"../../core/elements/3d/Cone\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates ConeColumns.\r\n *\r\n * @see {@link IConeColumnEvents} for a list of available events\r\n * @see {@link IConeColumnAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar ConeColumn = /** @class */ (function (_super) {\r\n __extends(ConeColumn, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ConeColumn() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ConeColumn\";\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n ConeColumn.prototype.createAssets = function () {\r\n this.coneColumn = this.createChild(Cone);\r\n this.coneColumn.shouldClone = false;\r\n // some dirty hack so that if user access column, it won't get error\r\n this.column = this.coneColumn;\r\n };\r\n /**\r\n * Copies all parameters from another [[ConeColumn]].\r\n *\r\n * @param source Source ConeColumn\r\n */\r\n ConeColumn.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.coneColumn) {\r\n this.coneColumn.copyFrom(source.coneColumn);\r\n }\r\n };\r\n return ConeColumn;\r\n}(Column));\r\nexport { ConeColumn };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ConeColumn\"] = ConeColumn;\r\n","/**\r\n * ConeSeries module\r\n * Not recommended using if you use scrollbars or your chart is zoomable in some other way.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\r\nimport { ConeColumn } from \"../elements/ConeColumn\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[ConeSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar ConeSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(ConeSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ConeSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ConeSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return ConeSeriesDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { ConeSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a cone graph.\r\n *\r\n * @see {@link IConeSeriesEvents} for a list of available Events\r\n * @see {@link IConeSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar ConeSeries = /** @class */ (function (_super) {\r\n __extends(ConeSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ConeSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ConeSeries\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns an element to use for Candlestick\r\n * @ignore\r\n * @return Element.\r\n */\r\n ConeSeries.prototype.createColumnTemplate = function () {\r\n return new ConeColumn();\r\n };\r\n /**\r\n * Returns an SVG path to use as series mask.\r\n *\r\n * @return SVG path\r\n */\r\n ConeSeries.prototype.getMaskPath = function () {\r\n var dx = 0;\r\n var dy = 0;\r\n var column = this.columns.getIndex(0);\r\n if (column) {\r\n if (this.baseAxis == this.xAxis) {\r\n dy = column.coneColumn.innerWidth / 2 + 1;\r\n }\r\n else {\r\n dx = column.coneColumn.innerHeight / 2 + 1;\r\n }\r\n return $path.rectToPath({\r\n x: -dx,\r\n y: 0,\r\n width: this.xAxis.axisLength + dx,\r\n height: this.yAxis.axisLength + dy\r\n });\r\n }\r\n };\r\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n ConeSeries.prototype.validateDataElementReal = function (dataItem) {\r\n _super.prototype.validateDataElementReal.call(this, dataItem);\r\n var column = dataItem.column;\r\n if (column) {\r\n var coneColumn = dataItem.column.coneColumn;\r\n coneColumn.fill = dataItem.column.fill;\r\n if (this.baseAxis == this.yAxis) {\r\n coneColumn.orientation = \"horizontal\";\r\n }\r\n else {\r\n coneColumn.orientation = \"vertical\";\r\n }\r\n }\r\n };\r\n return ConeSeries;\r\n}(ColumnSeries));\r\nexport { ConeSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ConeSeries\"] = ConeSeries;\r\nregistry.registeredClasses[\"ConeSeriesDataItem\"] = ConeSeriesDataItem;\r\n","/**\r\n * Module that defines everything related to building Curved Columns.\r\n * It is a container which has CurvedColumn element which is a Sprite.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Column } from \"./Column\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates CurvedColumns.\r\n *\r\n * @see {@link ICurvedColumnEvents} for a list of available events\r\n * @see {@link ICurvedColumnAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar CurvedColumn = /** @class */ (function (_super) {\r\n __extends(CurvedColumn, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CurvedColumn() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CurvedColumn\";\r\n return _this;\r\n }\r\n /**\r\n * [createAssets description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n CurvedColumn.prototype.createAssets = function () {\r\n this.curvedColumn = this.createChild(Sprite);\r\n this.curvedColumn.shouldClone = false;\r\n this.setPropertyValue(\"tension\", 0.7);\r\n this.width = percent(120);\r\n this.height = percent(120);\r\n // some dirty hack so that if user access column, it won't get error\r\n this.column = this.curvedColumn;\r\n };\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n CurvedColumn.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.realWidth;\r\n var h = this.realHeight;\r\n var x = this.realX - this.pixelX;\r\n var y = this.realY - this.pixelY;\r\n var points;\r\n // TODO can this be removed ?\r\n $utils.used(this.width);\r\n var tensionX = 1;\r\n var tensionY = 1;\r\n if (this.orientation == \"vertical\") {\r\n tensionX = this.tension;\r\n points = [{ x: 0, y: h + y }, { x: w / 2, y: y }, { x: w, y: h + y }];\r\n }\r\n else {\r\n tensionY = this.tension;\r\n h = Math.abs(h);\r\n points = [{ x: x, y: h }, { x: x + w, y: h / 2 }, { x: x, y: 0 }];\r\n }\r\n var path = $path.moveTo(points[0]) + new $smoothing.Tension(tensionX, tensionY).smooth(points);\r\n this.column.path = path;\r\n };\r\n /**\r\n * Copies all parameters from another [[CurvedColumn]].\r\n *\r\n * @param source Source CurvedColumn\r\n */\r\n CurvedColumn.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.curvedColumn) {\r\n this.curvedColumn.copyFrom(source.curvedColumn);\r\n }\r\n };\r\n Object.defineProperty(CurvedColumn.prototype, \"tension\", {\r\n /**\r\n * @return Tension (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tension\");\r\n },\r\n /**\r\n * Horizontal tension of the curve.\r\n *\r\n * Tension defines how \"lose\" the line will be.\r\n *\r\n * 1 is the maximum tension which would result in pointy columns with\r\n * straight edges.\r\n *\r\n * The smaller the tension th wider the column will be.\r\n *\r\n * @default 0.7\r\n * @param value tension (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tension\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CurvedColumn.prototype, \"orientation\", {\r\n /**\r\n * Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Orientation of the column.\r\n *\r\n * Available options: \"vertical\" (default) and \"horizontal\".\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"orientation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CurvedColumn;\r\n}(Column));\r\nexport { CurvedColumn };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CurvedColumn\"] = CurvedColumn;\r\n","/**\r\n * CurvedColumnSeries module.\r\n *\r\n * Not recommended using if you use scrollbars or your chart is zoomable in some other way.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\r\nimport { CurvedColumn } from \"../elements/CurvedColumn\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[CurvedColumnSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar CurvedColumnSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(CurvedColumnSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CurvedColumnSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CurvedColumnSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return CurvedColumnSeriesDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { CurvedColumnSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a curved columns graph.\r\n *\r\n * @see {@link ICurvedColumnSeriesEvents} for a list of available Events\r\n * @see {@link ICurvedColumnSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar CurvedColumnSeries = /** @class */ (function (_super) {\r\n __extends(CurvedColumnSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CurvedColumnSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CurvedColumnSeries\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns an element to use for the curved column.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Element.\r\n */\r\n CurvedColumnSeries.prototype.createColumnTemplate = function () {\r\n return new CurvedColumn();\r\n };\r\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n CurvedColumnSeries.prototype.validateDataElementReal = function (dataItem) {\r\n _super.prototype.validateDataElementReal.call(this, dataItem);\r\n var column = dataItem.column;\r\n column = dataItem.column;\r\n if (column) {\r\n var curvedColumn = dataItem.column.curvedColumn;\r\n curvedColumn.fill = dataItem.column.fill;\r\n if (this.baseAxis == this.yAxis) {\r\n column.orientation = \"horizontal\";\r\n }\r\n else {\r\n column.orientation = \"vertical\";\r\n }\r\n }\r\n };\r\n return CurvedColumnSeries;\r\n}(ColumnSeries));\r\nexport { CurvedColumnSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CurvedColumnSeries\"] = CurvedColumnSeries;\r\nregistry.registeredClasses[\"CurvedColumnSeriesDataItem\"] = CurvedColumnSeriesDataItem;\r\n","/**\r\n * Bullet module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Bullet } from \"./Bullet\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a bullet with a textual label.\r\n *\r\n * Uses [[Label]] instance to draw the label, so the label itself is\r\n * configurable.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar CircleBullet = /** @class */ (function (_super) {\r\n __extends(CircleBullet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CircleBullet() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CircleBullet\";\r\n var circle = _this.createChild(Circle);\r\n circle.shouldClone = false;\r\n circle.radius = 5;\r\n circle.isMeasured = false;\r\n _this.circle = circle;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Copies all proprities and related stuff from another instance of\r\n * [[CircleBullet]].\r\n *\r\n * @param source Source element\r\n */\r\n CircleBullet.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.circle.copyFrom(source.circle);\r\n };\r\n return CircleBullet;\r\n}(Bullet));\r\nexport { CircleBullet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CircleBullet\"] = CircleBullet;\r\n","/**\r\n * Bullet module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Bullet } from \"./Bullet\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a bullet with a textual label.\r\n *\r\n * Uses [[Label]] instance to draw the label, so the label itself is\r\n * configurable.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar ErrorBullet = /** @class */ (function (_super) {\r\n __extends(ErrorBullet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ErrorBullet() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ErrorBullet\";\r\n _this.errorLine = _this.createChild(Sprite);\r\n _this.errorLine.shouldClone = false;\r\n _this.width = 20;\r\n _this.height = 20;\r\n _this.strokeOpacity = 1;\r\n _this.isDynamic = true;\r\n return _this;\r\n }\r\n ErrorBullet.prototype.validatePosition = function () {\r\n _super.prototype.validatePosition.call(this);\r\n var w = this.pixelWidth / 2;\r\n var h = this.pixelHeight / 2;\r\n this.errorLine.path = $path.moveTo({ x: -w, y: -h }) + $path.lineTo({ x: w, y: -h }) + $path.moveTo({ x: 0, y: -h }) + $path.lineTo({ x: 0, y: h }) + $path.moveTo({ x: -w, y: h }) + $path.lineTo({ x: w, y: h });\r\n };\r\n /**\r\n * Copies all proprities and related stuff from another instance of\r\n * [[ErrorBullet]].\r\n *\r\n * @param source Source element\r\n */\r\n ErrorBullet.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.errorLine.copyFrom(source.errorLine);\r\n };\r\n return ErrorBullet;\r\n}(Bullet));\r\nexport { ErrorBullet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ErrorBullet\"] = ErrorBullet;\r\n","/**\r\n * Functionality for drawing simple NavigationBar.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Component } from \"../../core/Component\";\r\nimport { DataItem } from \"../../core/DataItem\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { TextLink } from \"../../core/elements/TextLink\";\r\nimport { Triangle } from \"../../core/elements/Triangle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[NavigationBar]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar NavigationBarDataItem = /** @class */ (function (_super) {\r\n __extends(NavigationBarDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function NavigationBarDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"NavigationBarDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(NavigationBarDataItem.prototype, \"name\", {\r\n /**\r\n * @return Name\r\n */\r\n get: function () {\r\n return this.properties[\"name\"];\r\n },\r\n /**\r\n * Name of the navigation bar item.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setProperty(\"name\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return NavigationBarDataItem;\r\n}(DataItem));\r\nexport { NavigationBarDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * NavigationBar class can be used to create a multi-level breadcrumb-style\r\n * navigation control.\r\n *\r\n * @see {@link INavigationBarEvents} for a list of available events\r\n * @see {@link INavigationBarAdapters} for a list of available Adapters\r\n * @todo Implement better\r\n * @important\r\n */\r\nvar NavigationBar = /** @class */ (function (_super) {\r\n __extends(NavigationBar, _super);\r\n /**\r\n * Constructor\r\n */\r\n function NavigationBar() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"NavigationBar\";\r\n var interfaceColors = new InterfaceColorSet();\r\n var textLink = new TextLink();\r\n textLink.valign = \"middle\";\r\n textLink.paddingTop = 8;\r\n textLink.paddingBottom = 8;\r\n _this.paddingBottom = 2;\r\n _this.links = new ListTemplate(textLink);\r\n _this._disposers.push(new ListDisposer(_this.links));\r\n _this._disposers.push(textLink);\r\n _this._linksIterator = new $iter.ListIterator(_this.links, function () { return _this.links.create(); });\r\n _this._linksIterator.createNewItems = true;\r\n var triangle = new Triangle();\r\n triangle.direction = \"right\";\r\n triangle.width = 8;\r\n triangle.height = 12;\r\n triangle.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n triangle.fillOpacity = 0.5;\r\n triangle.valign = \"middle\";\r\n triangle.marginLeft = 10;\r\n triangle.marginRight = 10;\r\n _this.separators = new ListTemplate(triangle);\r\n _this._disposers.push(new ListDisposer(_this.separators));\r\n _this._disposers.push(triangle);\r\n var activeLink = new TextLink();\r\n _this.activeLink = activeLink;\r\n activeLink.copyFrom(textLink);\r\n activeLink.valign = \"middle\";\r\n activeLink.fontWeight = \"bold\";\r\n _this.width = percent(100);\r\n _this.layout = \"grid\";\r\n _this.dataFields.name = \"name\";\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Completely redraws the navigation bar.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n NavigationBar.prototype.validateDataElements = function () {\r\n this.removeChildren();\r\n this._linksIterator.reset();\r\n _super.prototype.validateDataElements.call(this);\r\n //@todo: dispose\r\n };\r\n /**\r\n * Creates a visual element for a data item (nav item).\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n NavigationBar.prototype.validateDataElement = function (dataItem) {\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n var textLink;\r\n if (dataItem.index < this.dataItems.length - 1) {\r\n textLink = this._linksIterator.getLast();\r\n textLink.parent = this;\r\n var separator = this.separators.create();\r\n separator.parent = this;\r\n separator.valign = \"middle\";\r\n }\r\n else {\r\n textLink = this.activeLink;\r\n textLink.events.copyFrom(this.links.template.events);\r\n textLink.hide(0);\r\n textLink.show();\r\n textLink.parent = this;\r\n }\r\n textLink.dataItem = dataItem;\r\n textLink.text = dataItem.name;\r\n textLink.validate();\r\n };\r\n return NavigationBar;\r\n}(Component));\r\nexport { NavigationBar };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"NavigationBar\"] = NavigationBar;\r\nregistry.registeredClasses[\"NavigationBarDataItem\"] = NavigationBarDataItem;\r\n","/**\r\n * Cursor module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { getInteraction } from \"../../core/interaction/Interaction\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $dom from \"../../core/utils/DOM\";\r\nimport { system } from \"../../core/System\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Main Cursor class with common cursor functionality.\r\n *\r\n * Chart-specific cursors must extend this class.\r\n *\r\n * @see {@link ICursorEvents} for a list of available events\r\n * @see {@link ICursorAdapters} for a list of available Adapters\r\n * @todo Add description, examples\r\n * @todo Should we allow changing `_generalBehavior`?\r\n */\r\nvar Cursor = /** @class */ (function (_super) {\r\n __extends(Cursor, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Cursor() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Current cursor position during selection.\r\n *\r\n * @todo Better description\r\n */\r\n _this.point = { x: 0, y: 0 };\r\n /**\r\n * Specifies the rules when cursor needs to be moved or hidden.\r\n */\r\n _this._stick = \"none\";\r\n _this.className = \"Cursor\";\r\n // Set defaults\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.shouldClone = false;\r\n _this.hide(0);\r\n _this.trackable = true;\r\n _this.clickable = true;\r\n _this.isMeasured = false;\r\n // Add events on body to trigger down and up events (to start zooming or\r\n // selection)\r\n var interaction = getInteraction();\r\n _this._disposers.push(interaction.body.events.on(\"down\", _this.handleCursorDown, _this));\r\n _this._disposers.push(interaction.body.events.on(\"up\", _this.handleCursorUp, _this));\r\n _this._disposers.push(interaction.body.events.on(\"track\", _this.handleCursorMove, _this));\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Handle pointer movement in document and update cursor position as needed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n Cursor.prototype.handleCursorMove = function (event) {\r\n if (!this.interactionsEnabled || (this.interactions.isTouchProtected && event.touch)) {\r\n return;\r\n }\r\n if (((this._generalBehavior != \"zoom\" && this._generalBehavior != \"pan\") || !this.downPoint) && !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n // We want to let zoom/pan continue even if cursor is outside chart area\r\n if (!this.isHidden || !this.isHiding) {\r\n this.hide();\r\n }\r\n return;\r\n }\r\n var local = $utils.documentPointToSprite(event.pointer.point, this);\r\n if (this._stick == \"hard\" && this._stickPoint) {\r\n local = this._stickPoint;\r\n }\r\n if (this._stick == \"soft\" && this._stickPoint) {\r\n if (!this.fitsToBounds(local)) {\r\n local = this._stickPoint;\r\n }\r\n }\r\n if (this._adapterO) {\r\n this._adapterO.apply(\"cursorPoint\", local);\r\n }\r\n this.triggerMove(local);\r\n return local;\r\n };\r\n /**\r\n * Hides actual SVG elements and handles hiding animations.\r\n *\r\n * @param duration Fade out duration (ms)\r\n * @return Fade out duration (ms)\r\n * @ignore\r\n */\r\n Cursor.prototype.hideReal = function (duration) {\r\n if ((this._stick == \"hard\" || this._stick == \"soft\") && this._stickPoint) {\r\n return;\r\n }\r\n return _super.prototype.hideReal.call(this, duration);\r\n };\r\n /**\r\n * Places the cursor at specific point.\r\n *\r\n * The second parameter has following options:\r\n *\r\n * `\"none\"` - placed cursor will only be there until mouse/touch moves, then\r\n * it either moves to a new place (if pointer over plot area) or is hidden.\r\n *\r\n * `\"soft\"` - cursor will stay in the place if mouse/touch is happening\r\n * outside chart, but will move to a new place whe plot area is hovered or\r\n * touched.\r\n *\r\n * `\"hard\"` - cursor will stay in place no matter what, until it is moved by\r\n * another `triggerMove()` call.\r\n *\r\n * The third parameter - `force` (since `4.9.5`) - if set to `true` will\r\n * make cursor execute all of the actions associated with cursor move,\r\n * including line redraws, tooltip updates, etc. Useful when underlying\r\n * chart data is dynamically being updated.\r\n *\r\n * @param point Point to place cursor at\r\n * @param stick Level of cursor stickiness to the place\r\n * @param force Force cursor move\r\n */\r\n Cursor.prototype.triggerMove = function (point, stick, force) {\r\n point.x = $math.round(point.x, 1);\r\n point.y = $math.round(point.y, 1);\r\n if (stick) {\r\n this._stick = stick;\r\n }\r\n if (stick == \"hard\" || stick == \"soft\") {\r\n this._stickPoint = point;\r\n }\r\n this.triggerMoveReal(point, force);\r\n };\r\n /**\r\n * Places the cursor at specific point.\r\n *\r\n * @param point Point to place cursor at\r\n */\r\n Cursor.prototype.triggerMoveReal = function (point, force) {\r\n if (this.point.x != point.x || this.point.y != point.y || force) {\r\n this.point = point;\r\n this.invalidatePosition();\r\n // hide cursor if it's out of bounds\r\n if (this.fitsToBounds(point)) {\r\n this.show(0);\r\n }\r\n else {\r\n // unless we are selecting (mouse is down)\r\n if (!this.downPoint) {\r\n this.hide(0);\r\n }\r\n }\r\n if (this.visible) {\r\n this.getPositions();\r\n this.dispatch(\"cursorpositionchanged\"); // not good to dispatch later (check step count example)\r\n }\r\n }\r\n };\r\n /**\r\n * Simulates pressing down (click/touch) action by a cursor.\r\n *\r\n * @param point Point of action\r\n */\r\n Cursor.prototype.triggerDown = function (point) {\r\n this.triggerDownReal(point);\r\n };\r\n /**\r\n * Simulates pressing down (click/touch) action by a cursor.\r\n *\r\n * @param point Point of action\r\n */\r\n Cursor.prototype.triggerDownReal = function (point) {\r\n switch (this._generalBehavior) {\r\n case \"zoom\":\r\n this.dispatchImmediately(\"zoomstarted\");\r\n break;\r\n case \"select\":\r\n this.dispatchImmediately(\"selectstarted\");\r\n break;\r\n case \"pan\":\r\n this.dispatchImmediately(\"panstarted\");\r\n getInteraction().setGlobalStyle(MouseCursorStyle.grabbing);\r\n break;\r\n }\r\n };\r\n /**\r\n * Simulates the action of release of the mouse down / touch.\r\n *\r\n * @param point Point of action\r\n */\r\n Cursor.prototype.triggerUp = function (point) {\r\n this.triggerUpReal(point);\r\n };\r\n /**\r\n * Simulates the action of release of the mouse down / touch.\r\n *\r\n * @param point Point of action\r\n */\r\n Cursor.prototype.triggerUpReal = function (point) {\r\n system.requestFrame();\r\n this.updatePoint(this.upPoint);\r\n var interaction = getInteraction();\r\n if ($math.getDistance(this._upPointOrig, this._downPointOrig) > interaction.getHitOption(this.interactions, \"hitTolerance\")) {\r\n switch (this._generalBehavior) {\r\n case \"zoom\":\r\n this.dispatch(\"zoomended\");\r\n break;\r\n case \"select\":\r\n this.dispatch(\"selectended\");\r\n break;\r\n case \"pan\":\r\n this.dispatch(\"panended\");\r\n interaction.setGlobalStyle(MouseCursorStyle.default);\r\n break;\r\n }\r\n this.downPoint = undefined;\r\n this.updateSelection();\r\n }\r\n /*\r\n else {\r\n \r\n if(this._generalBehavior == \"select\"){\r\n this.dispatchImmediately(\"selectended\");\r\n }\r\n this.dispatchImmediately(\"behaviorcanceled\");\r\n interaction.setGlobalStyle(MouseCursorStyle.default);\r\n this.downPoint = undefined;\r\n }*/\r\n };\r\n /**\r\n * Updates selection dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Cursor.prototype.updateSelection = function () {\r\n };\r\n /**\r\n * Updates cursors current positions.\r\n */\r\n Cursor.prototype.getPositions = function () {\r\n // positions are used by axes or series\r\n this.xPosition = this.point.x / this.innerWidth;\r\n this.yPosition = 1 - this.point.y / this.innerHeight;\r\n };\r\n /**\r\n * Handles pointer down event so we can start zoom or selection.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original event\r\n */\r\n Cursor.prototype.handleCursorDown = function (event) {\r\n if (!this.interactionsEnabled || (this.interactions.isTouchProtected && event.touch) || !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n return;\r\n }\r\n // Initiate blur so that whatever focused element on the page is unselected\r\n $dom.blur();\r\n // Get local point\r\n var local = $utils.documentPointToSprite(event.pointer.point, this);\r\n if (this._stick == \"hard\" && this._stickPoint) {\r\n local = this._stickPoint;\r\n }\r\n if (this._adapterO) {\r\n this._adapterO.apply(\"cursorPoint\", local);\r\n }\r\n if (!this.fitsToBounds(local)) {\r\n return;\r\n }\r\n this._downPointOrig = { x: local.x, y: local.y };\r\n // We need to cancel the event to prevent gestures on touch devices\r\n if (event.event.cancelable && this.shouldPreventGestures(event.touch) && this.fitsToBounds(local)) {\r\n event.event.preventDefault();\r\n }\r\n // Make this happen\r\n this.triggerMove(local);\r\n this.triggerDown(local);\r\n };\r\n /**\r\n * Determines whether Cursor should prevent default action on move.\r\n *\r\n * Child classes should override this as necessary.\r\n *\r\n * @return Prevent default?\r\n */\r\n Cursor.prototype.shouldPreventGestures = function (touch) {\r\n return true;\r\n };\r\n /**\r\n * Updates the coordinates of where pointer down event occurred\r\n * (was pressed).\r\n */\r\n Cursor.prototype.updatePoint = function (point) {\r\n };\r\n /**\r\n * Handles pointer up event - finishes zoom or selection action.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original event\r\n */\r\n Cursor.prototype.handleCursorUp = function (event) {\r\n if (!this.interactionsEnabled) {\r\n return;\r\n }\r\n if (!this.downPoint && !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n return;\r\n }\r\n var local = $utils.documentPointToSprite(event.pointer.point, this);\r\n if (this._adapterO) {\r\n this._adapterO.apply(\"cursorPoint\", local);\r\n }\r\n if (!this.downPoint || !this.fitsToBounds(this.downPoint)) {\r\n return;\r\n }\r\n if (this._stick == \"hard\" && this._stickPoint) {\r\n local = this._stickPoint;\r\n }\r\n this._upPointOrig = { x: local.x, y: local.y };\r\n this.triggerMove(local);\r\n this.triggerUp(local);\r\n };\r\n Object.defineProperty(Cursor.prototype, \"chart\", {\r\n /**\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart;\r\n },\r\n /**\r\n * A reference to a [[Chart]] the cursor belongs to.\r\n *\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart = value;\r\n if ($type.hasValue(this._chart.plotContainer)) {\r\n getInteraction().lockElement(this._chart.plotContainer.interactions);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Cursor;\r\n}(Container));\r\nexport { Cursor };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Cursor\"] = Cursor;\r\n","/**\r\n * Cursor for XY chart\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Cursor } from \"./Cursor\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { XYSeries } from \"../series/XYSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { getInteraction } from \"../../core/interaction/Interaction\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A cursor used on [[XYChart]].\r\n *\r\n * @see {@link IXYCursorEvents} for a list of available events\r\n * @see {@link IXYCursorAdapters} for a list of available Adapters\r\n * @todo Add description, examples\r\n */\r\nvar XYCursor = /** @class */ (function (_super) {\r\n __extends(XYCursor, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYCursor() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Vertical cursor line element.\r\n */\r\n _this._lineX = new MutableValueDisposer();\r\n /**\r\n * Horizontal cursor line element.\r\n */\r\n _this._lineY = new MutableValueDisposer();\r\n /**\r\n * Horizontal [[Axis]].\r\n */\r\n _this._xAxis = new MutableValueDisposer();\r\n /**\r\n * Vertical [[Axis]].\r\n */\r\n _this._yAxis = new MutableValueDisposer();\r\n _this._snapToDisposers = [];\r\n _this.className = \"XYCursor\";\r\n // Defaults\r\n _this.behavior = \"zoomX\";\r\n _this.maxPanOut = 0.1;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.snapOnPan = true;\r\n // Create selection element\r\n var selection = _this.createChild(Sprite);\r\n selection.shouldClone = false;\r\n selection.fillOpacity = 0.2;\r\n selection.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n selection.isMeasured = false;\r\n selection.visible = false;\r\n selection.interactionsEnabled = false;\r\n _this.selection = selection;\r\n _this._disposers.push(_this.selection);\r\n // Create cursor's vertical line\r\n var lineX = _this.createChild(Sprite);\r\n lineX.shouldClone = false;\r\n lineX.stroke = interfaceColors.getFor(\"grid\");\r\n lineX.fill = color();\r\n lineX.strokeDasharray = \"3,3\";\r\n lineX.isMeasured = false;\r\n lineX.strokeOpacity = 0.4;\r\n lineX.interactionsEnabled = false;\r\n lineX.y = 0; // important\r\n _this.lineX = lineX;\r\n _this._disposers.push(_this.lineX);\r\n // Create cursor's horizontal line\r\n var lineY = _this.createChild(Sprite);\r\n lineY.shouldClone = false;\r\n lineY.stroke = interfaceColors.getFor(\"grid\");\r\n lineY.fill = color();\r\n lineY.strokeDasharray = \"3,3\";\r\n lineY.isMeasured = false;\r\n lineY.strokeOpacity = 0.4;\r\n lineY.interactionsEnabled = false;\r\n lineY.x = 0; // important\r\n _this.lineY = lineY;\r\n _this._disposers.push(_this.lineY);\r\n // Add handler for size changes\r\n _this.events.on(\"sizechanged\", _this.updateSize, _this, false);\r\n _this._disposers.push(_this._lineX);\r\n _this._disposers.push(_this._lineY);\r\n _this._disposers.push(_this._xAxis);\r\n _this._disposers.push(_this._yAxis);\r\n _this.mask = _this;\r\n _this.hideSeriesTooltipsOnSelection = true;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Updates cursor element dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYCursor.prototype.updateSize = function () {\r\n if (this.lineX) {\r\n this.lineX.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: this.innerHeight });\r\n }\r\n if (this.lineY) {\r\n this.lineY.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: this.innerWidth, y: 0 });\r\n }\r\n };\r\n /**\r\n * Updates selection dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYCursor.prototype.updateSelection = function () {\r\n if (this._usesSelection) {\r\n var downPoint = this.downPoint;\r\n var behavior = this.behavior;\r\n if (downPoint) {\r\n var point = this.point;\r\n if (this.lineX) {\r\n point.x = this.lineX.pixelX;\r\n }\r\n if (this.lineY) {\r\n point.y = this.lineY.pixelY;\r\n }\r\n var selection = this.selection;\r\n var x = Math.min(point.x, downPoint.x);\r\n var y = Math.min(point.y, downPoint.y);\r\n var w = $math.round(Math.abs(downPoint.x - point.x), this._positionPrecision);\r\n var h = $math.round(Math.abs(downPoint.y - point.y), this._positionPrecision);\r\n switch (behavior) {\r\n case \"zoomX\":\r\n y = 0;\r\n h = this.pixelHeight;\r\n break;\r\n case \"zoomY\":\r\n x = 0;\r\n w = this.pixelWidth;\r\n break;\r\n case \"selectX\":\r\n y = 0;\r\n h = this.pixelHeight;\r\n break;\r\n case \"selectY\":\r\n x = 0;\r\n w = this.pixelWidth;\r\n break;\r\n }\r\n selection.x = x;\r\n selection.y = y;\r\n selection.path = $path.rectangle(w, h);\r\n selection.validatePosition(); // otherwise Edge shoes some incorrect size rectangle\r\n }\r\n else {\r\n if (this._generalBehavior != \"select\") {\r\n this.selection.hide();\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYCursor.prototype.fixPoint = function (point) {\r\n point.x = Math.max(0, point.x);\r\n point.y = Math.max(0, point.y);\r\n point.x = Math.min(this.pixelWidth, point.x);\r\n point.y = Math.min(this.pixelHeight, point.y);\r\n return point;\r\n };\r\n /**\r\n * Places the cursor at specific point.\r\n *\r\n * @param point Point to place cursor at\r\n */\r\n XYCursor.prototype.triggerMoveReal = function (point, force) {\r\n _super.prototype.triggerMoveReal.call(this, point, force);\r\n var snapToSeries = this.snapToSeries;\r\n if ((snapToSeries && !this.downPoint)) {\r\n if (snapToSeries instanceof XYSeries) {\r\n if (snapToSeries.isHidden) {\r\n this.updateLinePositions(point);\r\n }\r\n }\r\n else {\r\n var allHidden_1 = true;\r\n $array.each(snapToSeries, function (s) {\r\n if (!s.isHidden) {\r\n allHidden_1 = false;\r\n }\r\n });\r\n if (allHidden_1) {\r\n this.updateLinePositions(point);\r\n }\r\n }\r\n }\r\n else {\r\n this.updateLinePositions(point);\r\n }\r\n if (this.downPoint && $math.getDistance(this.downPoint, point) > 3) {\r\n if (this._generalBehavior == \"pan\") {\r\n this.getPanningRanges();\r\n this.dispatch(\"panning\");\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYCursor.prototype.updateLinePositions = function (point) {\r\n point = this.fixPoint(this.point);\r\n if (this.lineX && this.lineX.visible && !this.xAxis) {\r\n this.lineX.x = point.x;\r\n }\r\n if (this.lineY && this.lineY.visible && !this.yAxis) {\r\n this.lineY.y = point.y;\r\n }\r\n this.updateSelection();\r\n };\r\n XYCursor.prototype.triggerDownReal = function (point) {\r\n if (this.visible && !this.isHiding) {\r\n if (this._generalBehavior == \"select\") {\r\n this.selection.parent = this.parent;\r\n }\r\n if (this.fitsToBounds(point)) {\r\n this.downPoint = { x: point.x, y: point.y };\r\n this.updatePoint(point);\r\n //this.updateLinePositions(point); // otherwise lines won't be in correct position and touch won't work fine\r\n this.point.x = this.downPoint.x;\r\n this.point.y = this.downPoint.y;\r\n var selection = this.selection;\r\n var selectionX = this.downPoint.x;\r\n var selectionY = this.downPoint.y;\r\n if (this._usesSelection) {\r\n selection.x = selectionX;\r\n selection.y = selectionY;\r\n selection.path = \"\";\r\n selection.show();\r\n }\r\n _super.prototype.triggerDownReal.call(this, point);\r\n }\r\n else {\r\n this.downPoint = undefined;\r\n }\r\n }\r\n else {\r\n this.downPoint = undefined;\r\n }\r\n };\r\n /**\r\n * Updates the coordinates of where pointer down event occurred\r\n * (was pressed).\r\n */\r\n XYCursor.prototype.updatePoint = function (point) {\r\n if (this.lineX) {\r\n point.x = this.lineX.pixelX;\r\n }\r\n if (this.lineY) {\r\n point.y = this.lineY.pixelY;\r\n }\r\n };\r\n /**\r\n * Handle action when cursor is released, which should perform an operation\r\n * based on its `behavior`, like zoom.\r\n *\r\n * @param point Release point\r\n */\r\n XYCursor.prototype.triggerUpReal = function (point) {\r\n if (this.hasMoved()) {\r\n if (this.downPoint) {\r\n this.upPoint = point;\r\n this.updatePoint(this.upPoint);\r\n if (this._generalBehavior != \"pan\") {\r\n this.getRanges();\r\n }\r\n if (this._generalBehavior != \"select\") {\r\n this.selection.hide();\r\n }\r\n _super.prototype.triggerUpReal.call(this, point);\r\n }\r\n }\r\n else {\r\n if (this._generalBehavior != \"select\") {\r\n this.selection.hide(0);\r\n }\r\n else {\r\n this.xRange = undefined;\r\n this.yRange = undefined;\r\n this.dispatchImmediately(\"selectended\");\r\n }\r\n // reset cursor style, just in case\r\n if (this._generalBehavior == \"pan\") {\r\n var interaction = getInteraction();\r\n interaction.setGlobalStyle(MouseCursorStyle.default);\r\n }\r\n this.dispatchImmediately(\"behaviorcanceled\");\r\n }\r\n this.downPoint = undefined;\r\n this.dispatch(\"cursorpositionchanged\");\r\n };\r\n /**\r\n * Calculates if the cursor has moved enough based on its `behavior`.\r\n *\r\n * @return Moved?\r\n */\r\n XYCursor.prototype.hasMoved = function () {\r\n var distance;\r\n if (this.behavior == \"zoomX\" || this.behavior == \"panX\") {\r\n distance = $math.getHorizontalDistance(this._upPointOrig, this._downPointOrig);\r\n }\r\n else if (this.behavior == \"zoomY\" || this.behavior == \"panY\") {\r\n distance = $math.getVerticalDistance(this._upPointOrig, this._downPointOrig);\r\n }\r\n else {\r\n distance = $math.getDistance(this._upPointOrig, this._downPointOrig);\r\n }\r\n return distance > getInteraction().getHitOption(this.interactions, \"hitTolerance\");\r\n };\r\n /**\r\n * [getRanges description]\r\n *\r\n * @todo Description\r\n */\r\n XYCursor.prototype.getPanningRanges = function () {\r\n var startX = $math.round(this.downPoint.x / this.innerWidth, 5);\r\n var startY = 1 - $math.round(this.downPoint.y / this.innerHeight, 5);\r\n var currentX = $math.round(this.point.x / this.innerWidth, 5);\r\n var currentY = 1 - $math.round(this.point.y / this.innerHeight, 5);\r\n var deltaX = startX - currentX;\r\n var deltaY = startY - currentY;\r\n this.xRange = { start: deltaX, end: 1 + deltaX };\r\n this.yRange = { start: deltaY, end: 1 + deltaY };\r\n if (this.behavior == \"panX\") {\r\n this.yRange.start = 0;\r\n this.yRange.end = 1;\r\n }\r\n if (this.behavior == \"panY\") {\r\n this.xRange.start = 0;\r\n this.xRange.end = 1;\r\n }\r\n };\r\n /**\r\n * [getRanges description]\r\n *\r\n * @todo Description\r\n */\r\n XYCursor.prototype.getRanges = function () {\r\n if (this.lineX) {\r\n this.upPoint.x = this.lineX.pixelX;\r\n }\r\n if (this.lineY) {\r\n this.upPoint.y = this.lineY.pixelY;\r\n }\r\n // @todo Is this needed?\r\n $utils.used(this.selection);\r\n var startX = $math.round(this.downPoint.x / this.innerWidth, 5);\r\n var endX = $math.round((this.upPoint.x) / this.innerWidth, 5);\r\n var startY = 1 - $math.round(this.downPoint.y / this.innerHeight, 5);\r\n var endY = 1 - $math.round((this.upPoint.y) / this.innerHeight, 5);\r\n this.xRange = { start: $math.min(startX, endX), end: $math.max(startX, endX) };\r\n this.yRange = { start: $math.min(startY, endY), end: $math.max(startY, endY) };\r\n };\r\n Object.defineProperty(XYCursor.prototype, \"behavior\", {\r\n /**\r\n * Behavior\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"behavior\");\r\n },\r\n /**\r\n * Cursor's behavior when it's moved with pointer down:\r\n *\r\n * * `\"zoomX\"` - zooms horizontally.\r\n * * `\"zoomY\"` - zooms vertically.\r\n * * `\"zoomXY\"` - zooms both horizontally and vertically.\r\n * * `\"selectX\"` - selects a range horizontally.\r\n * * `\"selectY\"` - selects a range vertically.\r\n * * `\"selectXY\"` - selects a range both horizontally and vertically.\r\n * * `\"panX\"` - moves (pans) current selection horizontally.\r\n * * `\"panY\"` - moves (pans) current selection vertically.\r\n * * `\"panXY\"` - moves (pans) current selection both horizontally and vertically.\r\n * * `\"none\"` - does nothing with pointer down.\r\n *\r\n * E.g. \"zoomXY\" will mean that pressing a mouse (or touching) over plot area\r\n * and dragging it will start zooming the chart.\r\n *\r\n * NOTE: `\"zoomXY\"` acts differently when used on a `DateAxis`.\r\n * See [this note](https://www.amcharts.com/docs/v4/concepts/chart-cursor/#zoomXY_behavior_and_DateAxis).\r\n *\r\n * @param value Bheavior\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"behavior\", value, true);\r\n this._usesSelection = false;\r\n if (value.indexOf(\"zoom\") != -1) {\r\n this._generalBehavior = \"zoom\";\r\n this._usesSelection = true;\r\n }\r\n if (value.indexOf(\"select\") != -1) {\r\n this._generalBehavior = \"select\";\r\n this._usesSelection = true;\r\n }\r\n if (value.indexOf(\"pan\") != -1) {\r\n this._generalBehavior = \"pan\";\r\n this._usesSelection = false;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Determines whether Cursor should prevent default action on move.\r\n *\r\n * If cursor's behavior is \"none\", it should not obstruct the page scrolling.\r\n *\r\n * @return Prevent default?\r\n */\r\n XYCursor.prototype.shouldPreventGestures = function (touch) {\r\n return (!this.interactions.isTouchProtected || !touch) && this.behavior != \"none\";\r\n };\r\n Object.defineProperty(XYCursor.prototype, \"fullWidthLineX\", {\r\n /**\r\n * @return Full width?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fullWidthLineX\");\r\n },\r\n /**\r\n * Cursor's horizontal line is expanded to take full width of the related\r\n * Axis' cell/category.\r\n *\r\n * NOTE: this setting will work properly if `xAxis` is set and only in case\r\n * `xAxis` is [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * @param value Full width?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fullWidthLineX\", value);\r\n if (!value) {\r\n this.updateSize();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"fullWidthLineY\", {\r\n /**\r\n * @return Full width?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fullWidthLineY\");\r\n },\r\n /**\r\n * Cursor's vertical line is expanded to take full width of the related\r\n * Axis' cell/category.\r\n *\r\n * NOTE: this setting will work properly if `yAxis` is set and only in case\r\n * `yAxis` is [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * @param value Full width?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fullWidthLineY\", value);\r\n if (!value) {\r\n this.updateSize();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"hideSeriesTooltipsOnSelection\", {\r\n /**\r\n * @return hide tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hideSeriesTooltipsOnSelection\");\r\n },\r\n /**\r\n * If set to `true` this will hide series tooltips when selecting with cursor.\r\n *\r\n * @since 4.5.15\r\n * @param value hide tooltips?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"hideSeriesTooltipsOnSelection\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"maxTooltipDistance\", {\r\n /**\r\n * @return Distance\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxTooltipDistance\");\r\n },\r\n /**\r\n * If set to a numeric value, cursor will display closest series' tooltips\r\n * plus tooltips from series that are closer to than `maxTooltipDistance` to\r\n * it.\r\n *\r\n * Set it to `-1` to always force one tooltip, even if there are multiple\r\n * data items in exactly same place.\r\n *\r\n * @since 4.7.18\r\n * @param value Distance\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxTooltipDistance\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"maxPanOut\", {\r\n /**\r\n * @return Full width?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxPanOut\");\r\n },\r\n /**\r\n * If cursor behavior is panX or panY, we allow to pan plot out of it's max bounds for a better user experience.\r\n * This setting specifies relative value by how much we can pan out the plot\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxPanOut\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"xAxis\", {\r\n /**\r\n * @return X axis\r\n */\r\n get: function () {\r\n return this._xAxis.get();\r\n },\r\n /**\r\n * A reference to X [[Axis]].\r\n *\r\n * An XY cursor can live without `xAxis` set. You set xAxis for cursor when\r\n * you have axis tooltip enabled and you want cursor line to be at the same\r\n * position as tooltip.\r\n *\r\n * This works with [[CategoryAxis]] and [[DateAxis]] but not with\r\n * [[ValueAxis]].\r\n *\r\n * @todo Description (review)\r\n * @param axis X axis\r\n */\r\n set: function (axis) {\r\n var _this = this;\r\n if (this._xAxis.get() != axis) {\r\n this._xAxis.set(axis, new MultiDisposer([\r\n axis.tooltip.events.on(\"positionchanged\", this.handleXTooltipPosition, this, false),\r\n axis.events.on(\"rangechangestarted\", function (event) {\r\n _this.hide(0);\r\n _this.preventShow = true;\r\n }, undefined, false),\r\n axis.events.on(\"rangechangeended\", function (event) {\r\n _this.preventShow = false;\r\n _this.hide(0);\r\n _this.dispatch(\"cursorpositionchanged\");\r\n }, undefined, false)\r\n ]));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"yAxis\", {\r\n /**\r\n * @return Y Axis\r\n */\r\n get: function () {\r\n return this._yAxis.get();\r\n },\r\n /**\r\n * A reference to Y [[Axis]].\r\n *\r\n * An XY cursor can live without `yAxis` set. You set xAxis for cursor when\r\n * you have axis tooltip enabled and you want cursor line to be at the same\r\n * position as tooltip.\r\n *\r\n * This works with [[CategoryAxis]] and [[DateAxis]] but not with\r\n * [[ValueAxis]].\r\n *\r\n * @todo Description (review)\r\n * @param axis Y axis\r\n */\r\n set: function (axis) {\r\n var _this = this;\r\n if (this._yAxis.get() != axis) {\r\n this._yAxis.set(axis, new MultiDisposer([\r\n axis.tooltip.events.on(\"positionchanged\", this.handleYTooltipPosition, this, false),\r\n axis.events.on(\"rangechangestarted\", function (event) {\r\n _this.hide(0);\r\n _this.__disabled = true;\r\n }, undefined, false),\r\n axis.events.on(\"rangechangeended\", function (event) {\r\n _this.__disabled = false;\r\n _this.hide(0);\r\n _this.dispatch(\"cursorpositionchanged\");\r\n }, undefined, false)\r\n ]));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates Cursor's position when axis tooltip changes position.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original Axis event\r\n */\r\n XYCursor.prototype.handleXTooltipPosition = function (event) {\r\n var tooltip = this.xAxis.tooltip;\r\n var point = $utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this);\r\n var x = point.x;\r\n point.y = 1;\r\n if (this.lineX) {\r\n this.lineX.x = x;\r\n if (!this.fitsToBounds(point)) {\r\n this.hide();\r\n }\r\n }\r\n if (this.xAxis && this.fullWidthLineX) {\r\n var startPoint = this.xAxis.currentItemStartPoint;\r\n var endPoint = this.xAxis.currentItemEndPoint;\r\n if (startPoint && endPoint) {\r\n this.lineX.x = x;\r\n var width = endPoint.x - startPoint.x;\r\n this.lineX.path = $path.rectangle(width, this.innerHeight, -width / 2);\r\n }\r\n }\r\n };\r\n /**\r\n * Updates Cursor's position when Y axis changes position or scale.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original Axis event\r\n */\r\n XYCursor.prototype.handleYTooltipPosition = function (event) {\r\n var tooltip = this.yAxis.tooltip;\r\n var point = $utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this);\r\n var y = point.y;\r\n point.x = 1;\r\n if (this.lineY) {\r\n this.lineY.y = y;\r\n if (!this.fitsToBounds(point)) {\r\n this.hide();\r\n }\r\n }\r\n if (this.yAxis && this.fullWidthLineY) {\r\n var startPoint = this.yAxis.currentItemStartPoint;\r\n var endPoint = this.yAxis.currentItemEndPoint;\r\n if (startPoint && endPoint) {\r\n this.lineY.y = y;\r\n var height = endPoint.y - startPoint.y;\r\n this.lineY.path = $path.rectangle(this.innerWidth, height, 0, -height / 2);\r\n }\r\n }\r\n };\r\n Object.defineProperty(XYCursor.prototype, \"lineX\", {\r\n /**\r\n * @return Line element\r\n */\r\n get: function () {\r\n return this._lineX.get();\r\n },\r\n /**\r\n * A Line element to use for X axis.\r\n *\r\n * @param lineX Line\r\n */\r\n set: function (lineX) {\r\n if (lineX) {\r\n lineX.setElement(this.paper.add(\"path\"));\r\n this._lineX.set(lineX, lineX.events.on(\"positionchanged\", this.updateSelection, this, false));\r\n lineX.interactionsEnabled = false;\r\n lineX.parent = this;\r\n }\r\n else {\r\n this._lineX.reset();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"lineY\", {\r\n /**\r\n * @return Line element\r\n */\r\n get: function () {\r\n return this._lineY.get();\r\n },\r\n /**\r\n * A Line element to use Y axis.\r\n *\r\n * @param lineY Line\r\n */\r\n set: function (lineY) {\r\n if (lineY) {\r\n lineY.setElement(this.paper.add(\"path\"));\r\n this._lineY.set(lineY, lineY.events.on(\"positionchanged\", this.updateSelection, this, false));\r\n lineY.parent = this;\r\n lineY.interactionsEnabled = false;\r\n }\r\n else {\r\n this._lineY.reset();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"selection\", {\r\n /**\r\n * @return Selection rectangle\r\n */\r\n get: function () {\r\n return this._selection;\r\n },\r\n /**\r\n * A selection element ([[Sprite]]).\r\n *\r\n * @param selection Selection rectangle\r\n */\r\n set: function (selection) {\r\n this._selection = selection;\r\n if (selection) {\r\n selection.element = this.paper.add(\"path\");\r\n selection.parent = this;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * Looks if `xAxis` and `yAxis` is set via ID in JSON config, and replaces\r\n * with real references.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYCursor.prototype.processConfig = function (config) {\r\n var _this = this;\r\n if (config) {\r\n // Set up axes\r\n if ($type.hasValue(config.xAxis) && $type.isString(config.xAxis)) {\r\n if (this.map.hasKey(config.xAxis)) {\r\n config.xAxis = this.map.getKey(config.xAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[XYCursor] No axis with id \\\"\" + config.xAxis + \"\\\" found for `xAxis`\");\r\n delete config.xAxis;\r\n }\r\n }\r\n if ($type.hasValue(config.yAxis) && $type.isString(config.yAxis)) {\r\n if (this.map.hasKey(config.yAxis)) {\r\n config.yAxis = this.map.getKey(config.yAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[XYCursor] No axis with id \\\"\" + config.yAxis + \"\\\" found for `yAxis`\");\r\n delete config.yAxis;\r\n }\r\n }\r\n if ($type.hasValue(config.snapToSeries)) {\r\n var snapTo_1 = $type.isArray(config.snapToSeries) ? config.snapToSeries : [config.snapToSeries];\r\n var snapError_1 = false;\r\n $array.each(snapTo_1, function (snap, index) {\r\n if ($type.isString(snap)) {\r\n if (_this.map.hasKey(snap)) {\r\n snapTo_1[index] = _this.map.getKey(snap);\r\n }\r\n else {\r\n _this.processingErrors.push(\"[XYCursor] No series with id \\\"\" + snap + \"\\\" found for `series`\");\r\n snapError_1 = true;\r\n }\r\n }\r\n });\r\n if (snapError_1) {\r\n delete config.snapToSeries;\r\n }\r\n else {\r\n config.snapToSeries = snapTo_1;\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n Object.defineProperty(XYCursor.prototype, \"snapToSeries\", {\r\n /**\r\n * @return {XYSeries | XYSeries[]}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"snapToSeries\");\r\n },\r\n /**\r\n * Specifies to which series cursor lines should be snapped.\r\n *\r\n * Can be a single series instance or an array of series.\r\n *\r\n * @param {XYSeries | XYSeries[]}\r\n */\r\n set: function (series) {\r\n var _this = this;\r\n if (this.setPropertyValue(\"snapToSeries\", series)) {\r\n if (series instanceof XYSeries) {\r\n series = [series];\r\n }\r\n if (this._snapToDisposers) {\r\n $array.each(this._snapToDisposers, function (disposer) {\r\n disposer.dispose();\r\n });\r\n }\r\n this._snapToDisposers = [];\r\n if (series) {\r\n $array.each(series, function (s) {\r\n _this._snapToDisposers.push(s.events.on(\"tooltipshownat\", function () { _this.handleSnap(s); }, undefined, false));\r\n });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"snapOnPan\", {\r\n /**\r\n * Should zoom selection \"snap\" into equal categories/intervals after panning\r\n * the chart? (when `behavior == \"panX\"`)\r\n *\r\n * @default true\r\n * @since 4.10.17\r\n * @return Snap on pan?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"snapOnPan\");\r\n },\r\n /**\r\n * @param value Snap on pan?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"snapOnPan\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Snaps the zoom selection after chart is panned.\r\n *\r\n * @ignore\r\n */\r\n XYCursor.prototype.handleSnap = function (series) {\r\n if (!this.downPoint) {\r\n var x = series.getTooltipX() + series.xAxis.pixelX;\r\n var y = series.getTooltipY() + series.yAxis.pixelY;\r\n var xAxis = series.xAxis;\r\n var yAxis = series.yAxis;\r\n if (xAxis) {\r\n if (xAxis.renderer.opposite) {\r\n y -= this.pixelHeight;\r\n }\r\n }\r\n this.point = { x: x, y: y };\r\n this.getPositions();\r\n var xx = x;\r\n var yy = y;\r\n x -= this.pixelWidth;\r\n if (yAxis) {\r\n if (yAxis.renderer.opposite) {\r\n x += this.pixelWidth;\r\n }\r\n }\r\n var tooltip = series.tooltip;\r\n var duration = tooltip.animationDuration;\r\n var easing = tooltip.animationEasing;\r\n if (xAxis instanceof ValueAxis && !(xAxis instanceof DateAxis) && yAxis instanceof ValueAxis && !(yAxis instanceof DateAxis)) {\r\n series.yAxis.showTooltipAtPosition(this.yPosition);\r\n series.xAxis.showTooltipAtPosition(this.xPosition);\r\n }\r\n else {\r\n if (series.baseAxis == series.xAxis) {\r\n series.yAxis.showTooltipAtPosition(this.yPosition);\r\n }\r\n if (series.baseAxis == series.yAxis) {\r\n series.xAxis.showTooltipAtPosition(this.xPosition);\r\n }\r\n }\r\n //\tthis.lineX.animate([{ property: \"y\", to: y }], duration, easing);\r\n //\tthis.lineY.animate([{ property: \"x\", to: x }], duration, easing);\r\n this.lineY.x = x;\r\n this.lineX.y = y;\r\n if (!this.xAxis) {\r\n this.lineX.animate([{ property: \"x\", to: xx }], duration, easing);\r\n }\r\n if (!this.yAxis) {\r\n this.lineY.animate([{ property: \"y\", to: yy }], duration, easing);\r\n }\r\n }\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n XYCursor.prototype.dispose = function () {\r\n this.hide(0);\r\n _super.prototype.dispose.call(this);\r\n };\r\n return XYCursor;\r\n}(Cursor));\r\nexport { XYCursor };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYCursor\"] = XYCursor;\r\n","import { __extends } from \"tslib\";\r\nimport { XYCursor } from \"./XYCursor\";\r\nimport { Percent, percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Cursor for [[RadarChart]].\r\n *\r\n * @see {@link IRadarCursorEvents} for a list of available events\r\n * @see {@link IRadarCursorAdapters} for a list of available Adapters\r\n */\r\nvar RadarCursor = /** @class */ (function (_super) {\r\n __extends(RadarCursor, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarCursor() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"RadarCursor\";\r\n _this.radius = percent(100);\r\n _this.innerRadius = percent(0);\r\n // Apply theme\r\n _this.applyTheme();\r\n _this.mask = undefined;\r\n return _this;\r\n }\r\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point to check\r\n * @return Fits within container?\r\n */\r\n RadarCursor.prototype.fitsToBounds = function (point) {\r\n var radius = $math.getDistance(point);\r\n //if(!$math.isAngleInRange(angle, this.startAngle, this.endAngle)){\r\n //return false;\r\n //}\r\n if (radius < this.truePixelRadius + 1 && radius > this.pixelInnerRadius - 1) { // ok to add/remove some\r\n return true;\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(RadarCursor.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Starting angle of the cursor's radial line.\r\n *\r\n * @param value Start angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarCursor.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * End angle of the cursor's radial line.\r\n *\r\n * @param value End angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n RadarCursor.prototype.triggerMoveReal = function (point, force) {\r\n if (!this.xAxis || (this.xAxis && (!this.xAxis.cursorTooltipEnabled || this.xAxis.tooltip.disabled))) {\r\n this.updateLineX(this.point);\r\n }\r\n if (!this.yAxis || (this.yAxis && (!this.yAxis.cursorTooltipEnabled || this.yAxis.tooltip.disabled))) {\r\n this.updateLineY(this.point);\r\n }\r\n this.updateSelection();\r\n _super.prototype.triggerMoveReal.call(this, point, force);\r\n };\r\n /**\r\n * (Re)draws the horizontal (circular) cursor's line.\r\n *\r\n * @param point New target point\r\n */\r\n RadarCursor.prototype.updateLineX = function (point) {\r\n var radius = this.pixelRadius;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var innerRadius = this.pixelInnerRadius;\r\n if (radius > 0 && $type.isNumber(startAngle) && $type.isNumber(endAngle) && $type.isNumber(innerRadius)) {\r\n var angle = $math.fitAngleToRange($math.getAngle(point), startAngle, endAngle);\r\n var path = void 0;\r\n if (this.lineX && this.lineX.visible) {\r\n this.lineX.moveTo({ x: 0, y: 0 });\r\n // fill\r\n if (this.xAxis && this.fullWidthLineX) {\r\n var startPoint = this.xAxis.currentItemStartPoint;\r\n var endPoint = this.xAxis.currentItemEndPoint;\r\n if (startPoint && endPoint) {\r\n var fillStartAngle = $math.fitAngleToRange($math.getAngle(startPoint), startAngle, endAngle);\r\n var fillEndAngle = $math.fitAngleToRange($math.getAngle(endPoint), startAngle, endAngle);\r\n var arc = fillEndAngle - fillStartAngle;\r\n // clockwise\r\n // this is needed, normalizeAngle doesn't solve it\r\n if (startAngle < endAngle) {\r\n if (arc < 0) {\r\n arc += 360;\r\n }\r\n }\r\n // ccw\r\n else {\r\n if (arc > 0) {\r\n arc -= 360;\r\n }\r\n }\r\n angle -= arc / 2;\r\n path = $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) })\r\n + $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) })\r\n + $path.arcTo(angle, arc, radius)\r\n + $path.lineTo({ x: innerRadius * $math.cos(angle + arc), y: innerRadius * $math.sin(angle + arc) })\r\n + $path.arcTo(angle + arc, -arc, innerRadius);\r\n }\r\n }\r\n // line\r\n if (!path) {\r\n path = $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) }) + $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n this.lineX.path = path;\r\n }\r\n }\r\n };\r\n /**\r\n * (Re)draws the vertical (radial) cursor's line.\r\n *\r\n * @param point New target point\r\n */\r\n RadarCursor.prototype.updateLineY = function (point) {\r\n if (this.lineY && this.lineY.visible) {\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var truePixelRadius = this.truePixelRadius;\r\n var radius = $math.fitToRange($math.getDistance(point), 0, this.truePixelRadius);\r\n if ($type.isNumber(radius) && $type.isNumber(startAngle)) {\r\n this.lineY.moveTo({ x: 0, y: 0 });\r\n var path = void 0;\r\n var arc = endAngle - startAngle;\r\n if (this.yAxis && this.fullWidthLineY) {\r\n // fill\r\n var startPoint = this.yAxis.currentItemStartPoint;\r\n var endPoint = this.yAxis.currentItemEndPoint;\r\n if (startPoint && endPoint) {\r\n var innerRadius = $math.fitToRange($math.getDistance(startPoint), 0, truePixelRadius);\r\n radius = $math.fitToRange($math.getDistance(endPoint), 0, truePixelRadius);\r\n path = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, arc, radius);\r\n path += $path.moveTo({ x: innerRadius * $math.cos(endAngle), y: innerRadius * $math.sin(endAngle) }) + $path.arcTo(endAngle, -arc, innerRadius);\r\n }\r\n }\r\n if (!path) {\r\n path = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, endAngle - startAngle, radius);\r\n }\r\n this.lineY.path = path;\r\n }\r\n }\r\n };\r\n /**\r\n * Updates selection dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarCursor.prototype.updateSelection = function () {\r\n if (this._usesSelection) {\r\n var downPoint = this.downPoint;\r\n if (downPoint) {\r\n var point = this.point;\r\n var radius = this.pixelRadius;\r\n var truePixelRadius = this.truePixelRadius;\r\n var innerRadius = this.pixelInnerRadius;\r\n var startAngle = Math.min(this.startAngle, this.endAngle);\r\n var endAngle = Math.max(this.startAngle, this.endAngle);\r\n var downAngle = $math.fitAngleToRange($math.getAngle(downPoint), startAngle, endAngle);\r\n var angle = $math.fitAngleToRange($math.getAngle(point), startAngle, endAngle);\r\n var downRadius = $math.getDistance(downPoint);\r\n if (downRadius < truePixelRadius) {\r\n var currentRadius = $math.fitToRange($math.getDistance(point), 0, truePixelRadius);\r\n this._prevAngle = angle;\r\n var path = $path.moveTo({ x: 0, y: 0 });\r\n var downSin = $math.sin(downAngle);\r\n var downCos = $math.cos(downAngle);\r\n var sin = $math.sin(angle);\r\n var cos = $math.cos(angle);\r\n var behavior = this.behavior;\r\n if (behavior == \"zoomX\" || behavior == \"selectX\") {\r\n path += $path.lineTo({ x: radius * downCos, y: radius * downSin }) + $path.arcTo(downAngle, angle - downAngle, radius) + $path.lineTo({ x: innerRadius * cos, y: innerRadius * sin }) + $path.arcTo(angle, downAngle - angle, innerRadius);\r\n }\r\n else if (behavior == \"zoomY\" || behavior == \"selectY\") {\r\n path = $path.moveTo({ x: currentRadius * $math.cos(startAngle), y: currentRadius * $math.sin(startAngle) }) + $path.arcTo(startAngle, endAngle - startAngle, currentRadius) + $path.lineTo({ x: downRadius * $math.cos(endAngle), y: downRadius * $math.sin(endAngle) }) + $path.arcTo(endAngle, startAngle - endAngle, downRadius) + $path.closePath();\r\n }\r\n else if (behavior == \"zoomXY\") {\r\n path = $path.moveTo({ x: currentRadius * $math.cos(downAngle), y: currentRadius * $math.sin(downAngle) }) + $path.arcTo(downAngle, angle - downAngle, currentRadius) + $path.lineTo({ x: downRadius * $math.cos(angle), y: downRadius * $math.sin(angle) }) + $path.arcTo(angle, downAngle - angle, downRadius) + $path.closePath();\r\n }\r\n this.selection.path = path;\r\n }\r\n this.selection.moveTo({ x: 0, y: 0 });\r\n }\r\n }\r\n };\r\n /**\r\n * Updates cursors current positions.\r\n */\r\n RadarCursor.prototype.getPositions = function () {\r\n // positions are used by axes or series\r\n var chart = this.chart;\r\n if (chart) {\r\n var innerRadius = this.pixelInnerRadius;\r\n var radius = this.truePixelRadius - innerRadius;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var angle = $math.fitAngleToRange($math.getAngle(this.point), startAngle, endAngle);\r\n var xPosition = ((angle - startAngle) / (endAngle - startAngle));\r\n this.xPosition = xPosition;\r\n this.yPosition = $math.fitToRange(($math.getDistance(this.point) - innerRadius) / radius, 0, 1);\r\n }\r\n };\r\n /**\r\n * Overriding inherited method, so that nothing happens when it's triggered.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarCursor.prototype.updatePoint = function (point) {\r\n };\r\n /**\r\n * Updates Cursor's position when axis tooltip changes horizontal position.\r\n *\r\n * @param event Axis event\r\n */\r\n RadarCursor.prototype.handleXTooltipPosition = function (event) {\r\n if (this.xAxis.cursorTooltipEnabled) {\r\n var tooltip = this.xAxis.tooltip;\r\n this.updateLineX($utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this));\r\n }\r\n };\r\n /**\r\n * Updates Cursor's position when axis tooltip changes vertical position.\r\n *\r\n * @todo Description\r\n * @param event Axis event\r\n */\r\n RadarCursor.prototype.handleYTooltipPosition = function (event) {\r\n if (this.yAxis.cursorTooltipEnabled) {\r\n var tooltip = this.yAxis.tooltip;\r\n this.updateLineY($utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this));\r\n }\r\n };\r\n /**\r\n * needs to be overriden\r\n * @ignore\r\n */\r\n RadarCursor.prototype.updateLinePositions = function (point) {\r\n };\r\n /**\r\n * [getRanges description]\r\n *\r\n * @todo Description\r\n */\r\n RadarCursor.prototype.getRanges = function () {\r\n var downPoint = this.downPoint;\r\n if (downPoint) {\r\n var upPoint = this.upPoint;\r\n var chart = this.chart;\r\n if (chart) {\r\n var radius = this.pixelRadius;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var downAngle = $math.fitAngleToRange($math.getAngle(downPoint), this.startAngle, this.endAngle);\r\n var upAngle = $math.fitAngleToRange($math.getAngle(upPoint), this.startAngle, this.endAngle);\r\n var downRadius = $math.fitToRange($math.getDistance(downPoint), 0, radius);\r\n var upRadius = $math.fitToRange($math.getDistance(upPoint), 0, radius);\r\n var startX = 0;\r\n var endX = 1;\r\n var startY = 0;\r\n var endY = 1;\r\n var behavior = this.behavior;\r\n if (behavior == \"zoomX\" || behavior == \"selectX\" || behavior == \"zoomXY\" || behavior == \"selectXY\") {\r\n var arc = endAngle - startAngle;\r\n startX = $math.round((downAngle - startAngle) / arc, 5);\r\n endX = $math.round((upAngle - startAngle) / arc, 5);\r\n }\r\n if (behavior == \"zoomY\" || behavior == \"selectY\" || behavior == \"zoomXY\" || behavior == \"selectXY\") {\r\n startY = $math.round(downRadius / radius, 5);\r\n endY = $math.round(upRadius / radius, 5);\r\n }\r\n this.xRange = { start: Math.min(startX, endX), end: Math.max(startX, endX) };\r\n this.yRange = { start: Math.min(startY, endY), end: Math.max(startY, endY) };\r\n if (this.behavior == \"selectX\" || this.behavior == \"selectY\" || this.behavior == \"selectXY\") {\r\n // void\r\n }\r\n else {\r\n this.selection.hide();\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Overriding inherited method, so that nothing happens when `updateSize`\r\n * is triggered.\r\n *\r\n * RadarCursor is quite complicated and needs own sizing logic.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarCursor.prototype.updateSize = function () { };\r\n Object.defineProperty(RadarCursor.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the cursor's circular line.\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, false, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarCursor.prototype, \"pixelRadius\", {\r\n /**\r\n * Outer radius of the circular line in pixels.\r\n *\r\n * @return Outer radius (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.radius, this.truePixelRadius);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarCursor.prototype, \"truePixelRadius\", {\r\n /**\r\n * [truePixelRadius description]\r\n *\r\n * @todo Description\r\n * @return Outer radius (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n return $utils.relativeToValue(percent(100), $math.min(this.innerWidth / 2, this.innerHeight / 2));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarCursor.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the cursor's circular line.\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, false, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarCursor.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * Inner radius of the circular line in pixels.\r\n *\r\n * @return Inner radius (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n var innerRadius = this.innerRadius;\r\n if (innerRadius instanceof Percent) {\r\n innerRadius = percent(100 * innerRadius.value * this.chart.innerRadiusModifyer);\r\n }\r\n return $utils.relativeRadiusToValue(innerRadius, this.truePixelRadius) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarCursor.prototype.fixPoint = function (point) {\r\n // overriding xy method\r\n return point;\r\n };\r\n return RadarCursor;\r\n}(XYCursor));\r\nexport { RadarCursor };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarCursor\"] = RadarCursor;\r\n","/**\r\n * Functionality for adding images in SVG tree.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to add `<image>` elements to SVG.\r\n *\r\n * @see {@link IImageEvents} for a list of available events\r\n * @see {@link IImageAdapters} for a list of available Adapters\r\n */\r\nvar Image = /** @class */ (function (_super) {\r\n __extends(Image, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Image() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Image\";\r\n _this.element = _this.paper.add(\"image\");\r\n _this.applyTheme();\r\n _this.width = 50;\r\n _this.height = 50;\r\n return _this;\r\n }\r\n /**\r\n * Draws an `<image>` element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Image.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.href) {\r\n var width = this.innerWidth;\r\n var height = this.innerHeight;\r\n if ($type.isNumber(this.widthRatio)) {\r\n width = height * this.widthRatio;\r\n this.width = width;\r\n }\r\n if ($type.isNumber(this.heightRatio)) {\r\n height = width * this.heightRatio;\r\n this.height = height;\r\n }\r\n this.element.attr({\r\n \"width\": width,\r\n \"height\": height\r\n });\r\n this.element.attrNS($dom.XLINK, \"xlink:href\", this.href);\r\n }\r\n };\r\n Object.defineProperty(Image.prototype, \"href\", {\r\n /**\r\n * @return Image URI\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"href\");\r\n },\r\n /**\r\n * An image URI.\r\n *\r\n * @param value Image URI\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"href\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image.prototype, \"widthRatio\", {\r\n /**\r\n * @return Ratio\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"widthRatio\");\r\n },\r\n /**\r\n * Sets image `width` relatively to its `height`.\r\n *\r\n * If image's `height = 100` and `widthRatio = 0.5` the actual width will be\r\n * `50`.\r\n *\r\n * @param value Ratio\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"widthRatio\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image.prototype, \"heightRatio\", {\r\n /**\r\n * @return Ratio\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"heightRatio\");\r\n },\r\n /**\r\n * Sets image `height` relatively to its `width`.\r\n *\r\n * If image's `width = 100` and `heightRatio = 0.5` the actual height will be\r\n * `50`.\r\n *\r\n * @param value Ratio\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"heightRatio\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n return {\r\n x: 0,\r\n y: 0,\r\n width: this.pixelWidth,\r\n height: this.pixelHeight\r\n };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Image;\r\n}(Sprite));\r\nexport { Image };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Image\"] = Image;\r\n","/**\r\n * Module for a multi-part arched line.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Polyline } from \"./Polyline\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a multi-part arched line.\r\n *\r\n * @see {@link IPolyarcEvents} for a list of available events\r\n * @see {@link IPolyarcAdapters} for a list of available Adapters\r\n */\r\nvar Polyarc = /** @class */ (function (_super) {\r\n __extends(Polyarc, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Polyarc() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Polyarc\";\r\n _this.controlPointDistance = 0.5;\r\n _this.controlPointPosition = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creats and adds an SVG path for the arc.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Polyarc.prototype.makePath = function () {\r\n this._distance = 0;\r\n var segments = this.segments;\r\n if (segments && segments.length > 0) {\r\n var path = \"\";\r\n this._realSegments = [];\r\n for (var i = 0, len = segments.length; i < len; i++) {\r\n var points = segments[i];\r\n var realPoints = [];\r\n this._realSegments.push(realPoints);\r\n if (points.length > 0) {\r\n path += $path.moveTo(points[0]);\r\n for (var p = 1; p < points.length; p++) {\r\n var pointA = points[p - 1];\r\n var pointB = points[p];\r\n var distanceAB = $math.getDistance(pointB, pointA);\r\n var cpDistance = distanceAB * this.controlPointDistance;\r\n var controlPointPosition = this.controlPointPosition;\r\n var angle = -$math.getAngle(pointA, pointB);\r\n var cpx = pointA.x + (pointB.x - pointA.x) * controlPointPosition * 0.5 - cpDistance * $math.sin(angle);\r\n var cpy = pointA.y + (pointB.y - pointA.y) * controlPointPosition * 0.5 - cpDistance * $math.cos(angle);\r\n var controlPoint1 = { x: cpx, y: cpy };\r\n var cpx2 = pointA.x + (pointB.x - pointA.x) * controlPointPosition * 1.5 - cpDistance * $math.sin(angle);\r\n var cpy2 = pointA.y + (pointB.y - pointA.y) * controlPointPosition * 1.5 - cpDistance * $math.cos(angle);\r\n var controlPoint2 = { x: cpx2, y: cpy2 };\r\n path += $path.cubicCurveTo(pointB, controlPoint1, controlPoint2);\r\n // we add a lot of points in order to get the position/angle later\r\n var stepCount = Math.ceil(distanceAB);\r\n var prevPoint = pointA;\r\n if (stepCount > 0) {\r\n for (var i_1 = 0; i_1 <= stepCount; i_1++) {\r\n var point = $math.getPointOnCubicCurve(pointA, pointB, controlPoint1, controlPoint2, i_1 / stepCount);\r\n realPoints.push(point);\r\n this._distance += $math.getDistance(prevPoint, point);\r\n prevPoint = point;\r\n }\r\n }\r\n else {\r\n realPoints.push(pointA);\r\n }\r\n }\r\n }\r\n }\r\n this.path = path;\r\n }\r\n };\r\n Object.defineProperty(Polyarc.prototype, \"controlPointPosition\", {\r\n /**\r\n * @return Position (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"controlPointPosition\");\r\n },\r\n /**\r\n * Relative position along the line the control point is. (0-1)\r\n *\r\n * @default 0.5\r\n * @param value Position (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"controlPointPosition\", value);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polyarc.prototype, \"controlPointDistance\", {\r\n /**\r\n * @return Distance (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"controlPointDistance\");\r\n },\r\n /**\r\n * Relative distance of the control point. (0-1)\r\n *\r\n * Default is half the length of the line. (0.5)\r\n *\r\n * @default 0.5\r\n * @param value Distance (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"controlPointDistance\", value);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Polyarc;\r\n}(Polyline));\r\nexport { Polyarc };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polyarc\"] = Polyarc;\r\n","/**\r\n * Morpher module contains functionality that allows morphing one polygon to\r\n * another.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { Animation, AnimationDisposer } from \"../utils/Animation\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * Morpher can be used to morph one polygon to some other polygon.\r\n */\r\nvar Morpher = /** @class */ (function (_super) {\r\n __extends(Morpher, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param morphable An object to morph\r\n */\r\n function Morpher(morphable) {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A storage for measurements.\r\n */\r\n _this._bboxes = [];\r\n /**\r\n * Duration of the morphing animation in milliseconds.\r\n */\r\n _this.morphDuration = 800;\r\n /**\r\n * An easing function to use for morphing animation.\r\n *\r\n * @see {@link Ease}\r\n */\r\n _this.morphEasing = $ease.cubicOut;\r\n /**\r\n * If set to `true`, all separate parts of the multi-part polygon will\r\n * morph into a single circle or polygon when using built-in methods\r\n * `morphToCircle()` or `morphToPolygon()`.\r\n *\r\n * Otherwise each separate part of polygon will morph to individual target\r\n * circle or polgyon.\r\n */\r\n _this.morphToSingle = true;\r\n /**\r\n * A ratio to scale morphed object in relation to the source object.\r\n */\r\n _this.scaleRatio = 1;\r\n _this.className = \"Morpher\";\r\n _this.morphable = morphable;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Morphs a polygon to another polygon.\r\n *\r\n * @param toPoints Corner points of the target shape\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphToPolygon = function (toPoints, duration, easing) {\r\n var points = this.morphable.currentPoints;\r\n if (points && toPoints) {\r\n this.sortPoints(points);\r\n this.sortPoints(toPoints);\r\n this._morphFromPointsReal = [];\r\n this._morphToPointsReal = [];\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n this._morphFromPointsReal = this.normalizePoints(toPoints, points);\r\n this._morphToPointsReal = this.normalizePoints(points, toPoints);\r\n this.morphable.currentPoints = this._morphFromPointsReal;\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n }\r\n };\r\n /**\r\n * [normalizePoints description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointsA Point A\r\n * @param pointsB Point B\r\n * @return Normalized points\r\n */\r\n Morpher.prototype.normalizePoints = function (pointsA, pointsB) {\r\n for (var i = 0, len = pointsA.length; i < len; i++) {\r\n var surfaceA = pointsA[i][0];\r\n var holeA = pointsA[i][1];\r\n var bboxA = $type.getValue($math.getBBox(surfaceA));\r\n var middleX = bboxA.x + bboxA.width;\r\n var middleY = bboxA.y + bboxA.height;\r\n // check if we have the same in PointsB\r\n if (!pointsB[i]) {\r\n pointsB[i] = [];\r\n }\r\n // check if we have surface in pointsB\r\n if (surfaceA && !pointsB[i][0]) {\r\n pointsB[i][0] = [{ x: middleX, y: middleY }, { x: middleX, y: middleY }];\r\n }\r\n if (pointsB[i][0]) {\r\n pointsB[i][0] = this.addPoints(pointsB[i][0], surfaceA.length);\r\n var distance = Infinity;\r\n var splitAt = 0;\r\n for (var a = 0; a < pointsB[i][0].length; a++) {\r\n var newDistance = $math.getDistance(pointsB[i][0][a], surfaceA[0]);\r\n if (newDistance < distance) {\r\n splitAt = a;\r\n distance = newDistance;\r\n }\r\n }\r\n var partA = pointsB[i][0].slice(0, splitAt);\r\n var partB = pointsB[i][0].slice(splitAt);\r\n pointsB[i][0] = partB.concat(partA);\r\n }\r\n if (holeA) {\r\n if (!pointsB[i][1]) {\r\n pointsB[i][1] = [{ x: middleX, y: middleY }, { x: middleX, y: middleY }];\r\n }\r\n pointsB[i][1] = this.addPoints(pointsB[i][1], holeA.length);\r\n }\r\n }\r\n return pointsB;\r\n };\r\n /**\r\n * [sortPoints description]\r\n *\r\n * @ignore Exclude from doc\r\n * @todo Description\r\n * @param points [description]\r\n * @return common bbox of points\r\n */\r\n Morpher.prototype.sortPoints = function (points) {\r\n points.sort(function (a, b) {\r\n var bbox1 = $type.getValue($math.getBBox(a[0]));\r\n var bbox2 = $type.getValue($math.getBBox(b[0]));\r\n if (bbox1.width * bbox1.height > bbox2.width * bbox2.height) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n });\r\n var bboxes = [];\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var surface = points[i][0];\r\n if (surface) {\r\n bboxes.push($type.getValue($math.getBBox(surface)));\r\n }\r\n }\r\n return $math.getCommonRectangle(bboxes);\r\n };\r\n /**\r\n * Morphs polygon to a circle (it is actually a polygon which makes a circle).\r\n *\r\n * @param radius Target circle radius (px)\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphToCircle = function (radius, duration, easing) {\r\n var points = this.morphable.points;\r\n var commonBBox = this.sortPoints(points);\r\n this._morphFromPointsReal = [];\r\n this._morphToPointsReal = [];\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n // surface\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var surface = points[i][0];\r\n var hole = points[i][1];\r\n this._morphFromPointsReal[i] = [];\r\n this._morphToPointsReal[i] = [];\r\n if (surface) {\r\n var toPoints = surface;\r\n var fromPoints = surface;\r\n var bbox = $type.getValue($math.getBBox(fromPoints)); // this._bboxes[i];\r\n if (this.morphToSingle) {\r\n bbox = $type.getValue(commonBBox);\r\n }\r\n var middleX = bbox.x + bbox.width / 2;\r\n var middleY = bbox.y + bbox.height / 2;\r\n var realRadius = radius;\r\n if (!$type.isNumber(realRadius)) {\r\n realRadius = Math.min(bbox.width / 2, bbox.height / 2);\r\n }\r\n toPoints = [];\r\n // find angle for the first point\r\n var startAngle = $math.getAngle({ x: middleX, y: middleY }, surface[0]);\r\n var count = 100;\r\n if (surface.length > count) {\r\n count = surface.length;\r\n }\r\n fromPoints = this.addPoints(surface, count);\r\n count = fromPoints.length; // add Points might increase number a bit\r\n var angle = 360 / (count - 1);\r\n for (var a = 0; a < count; a++) {\r\n var realAngle = angle * a + startAngle;\r\n var pointOnCircle = { x: middleX + realRadius * $math.cos(realAngle), y: middleY + realRadius * $math.sin(realAngle) };\r\n toPoints[a] = pointOnCircle;\r\n }\r\n if (hole && hole.length > 0) {\r\n for (var i_1 = 0, hlen = hole.length; i_1 < hlen; i_1++) {\r\n toPoints.push({ x: middleX, y: middleY });\r\n }\r\n }\r\n this._morphFromPointsReal[i][0] = fromPoints;\r\n this._morphToPointsReal[i][0] = toPoints;\r\n }\r\n }\r\n this.morphable.currentPoints = this._morphFromPointsReal;\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n };\r\n /**\r\n * [addPoints description]\r\n *\r\n * @ignore Exclude from doc\r\n * @todo Description\r\n * @param points [description]\r\n * @param mustHaveCount [description]\r\n * @return [description]\r\n */\r\n Morpher.prototype.addPoints = function (points, mustHaveCount) {\r\n var addToSegmentCount = Math.round(mustHaveCount / points.length);\r\n var newPoints = [];\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var point0 = points[i];\r\n var point1 = void 0;\r\n if (i == points.length - 1) {\r\n point1 = points[0];\r\n }\r\n else {\r\n point1 = points[i + 1];\r\n }\r\n newPoints.push(point0);\r\n for (var p = 1; p < addToSegmentCount; p++) {\r\n var percent = p / addToSegmentCount;\r\n var extraPoint = { x: point0.x + (point1.x - point0.x) * percent, y: point0.y + (point1.y - point0.y) * percent };\r\n newPoints.push(extraPoint);\r\n }\r\n // stop adding in case we already added more than left in original\r\n if (newPoints.length + points.length - i == mustHaveCount) {\r\n addToSegmentCount = 0;\r\n }\r\n }\r\n if (newPoints.length < mustHaveCount && points.length > 0) {\r\n var lastPoint = points[points.length - 1];\r\n for (var p = newPoints.length; p < mustHaveCount; p++) {\r\n // add same as last\r\n newPoints.push({ x: lastPoint.x, y: lastPoint.y });\r\n }\r\n }\r\n return newPoints;\r\n };\r\n /**\r\n * Morphs polygon into a rectangular polygon.\r\n *\r\n * @param width Width of the target rectangle (px)\r\n * @param height Height of the target rectangle (px)\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphToRectangle = function (width, height, duration, easing) {\r\n var points = this.morphable.points;\r\n this.sortPoints(points);\r\n this._morphFromPointsReal = [];\r\n this._morphToPointsReal = [];\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n //\t\tlet biggestBBox: IRectangle = this._bboxes[this._biggestIndex];\r\n // surface\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var surface = points[i][0];\r\n var hole = points[i][1];\r\n this._morphFromPointsReal[i] = [];\r\n this._morphToPointsReal[i] = [];\r\n if (surface) {\r\n var toPoints = surface;\r\n var fromPoints = surface;\r\n var bbox = this._bboxes[i];\r\n // we only work with first area. TODO: maybe we should find the biggest one?\r\n if (this.morphToSingle) {\r\n //if (i != this._biggestIndex) {\r\n //\tbbox = { x: biggestBBox.x + biggestBBox.width / 2, y: biggestBBox.y + biggestBBox.height / 2, width: 0, height: 0 };\r\n //}\r\n }\r\n var x = bbox.x;\r\n var y = bbox.y;\r\n var realWidth = width;\r\n var realHeight = height;\r\n if (!$type.isNumber(realWidth)) {\r\n realWidth = bbox.width;\r\n }\r\n if (!$type.isNumber(realHeight)) {\r\n realHeight = bbox.height;\r\n }\r\n toPoints = [{ x: x, y: y }, { x: x + realWidth, y: y }, { x: x + realWidth, y: y + realHeight }, { x: x, y: y + realHeight }];\r\n toPoints = this.addPoints(toPoints, surface.length);\r\n // if polygon has less points then count, add\r\n if (surface.length < 4) {\r\n for (var i_2 = surface.length; i_2 < 4; i_2++) {\r\n toPoints.push({ x: surface[i_2].x, y: surface[i_2].y });\r\n }\r\n }\r\n if (hole && hole.length > 0) {\r\n var middleX = bbox.x + bbox.width / 2;\r\n var middleY = bbox.y + bbox.height / 2;\r\n for (var i_3 = 0, hlen = hole.length; i_3 < hlen; i_3++) {\r\n toPoints.push({ x: middleX, y: middleY });\r\n }\r\n }\r\n this._morphFromPointsReal[i][0] = fromPoints;\r\n this._morphToPointsReal[i][0] = toPoints;\r\n }\r\n }\r\n this.morphable.currentPoints = this._morphFromPointsReal;\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n };\r\n Object.defineProperty(Morpher.prototype, \"morphProgress\", {\r\n /**\r\n * Returns the progress of morph transition.\r\n *\r\n * @return Progress (0-1)\r\n */\r\n get: function () {\r\n return this._morphProgress;\r\n },\r\n /**\r\n * Progress of the morph transition.\r\n *\r\n * Setting this will also trigger actual transformation.\r\n *\r\n * @param value Progress (0-1)\r\n */\r\n set: function (value) {\r\n this._morphProgress = value;\r\n var currentPoints = [];\r\n if (value != null) {\r\n var fromPoints = this._morphFromPointsReal;\r\n var toPoints = this._morphToPointsReal;\r\n if (fromPoints != null && toPoints != null) {\r\n for (var i = 0, len = fromPoints.length; i < len; i++) {\r\n var currentArea = [];\r\n currentPoints.push(currentArea);\r\n var surfaceFrom = fromPoints[i][0];\r\n var holeFrom = fromPoints[i][1];\r\n var surfaceTo = toPoints[i][0];\r\n var holeTo = toPoints[i][1];\r\n if (surfaceFrom && surfaceFrom.length > 0 && surfaceTo && surfaceTo.length > 0) {\r\n var currentSurface = [];\r\n for (var i_4 = 0, slen = surfaceFrom.length; i_4 < slen; i_4++) {\r\n var point0 = surfaceFrom[i_4];\r\n var point1 = surfaceTo[i_4];\r\n var currentPoint = { x: point0.x + (point1.x * this.scaleRatio - point0.x) * value, y: point0.y + (point1.y * this.scaleRatio - point0.y) * value };\r\n currentSurface.push(currentPoint);\r\n }\r\n currentArea[0] = currentSurface;\r\n }\r\n if (holeFrom && holeFrom.length > 0 && holeTo && holeTo.length > 0) {\r\n var currentHole = [];\r\n for (var i_5 = 0, hlen = holeFrom.length; i_5 < hlen; i_5++) {\r\n var point0 = holeFrom[i_5];\r\n var point1 = holeTo[i_5];\r\n var currentPoint = { x: point0.x + (point1.x * this.scaleRatio - point0.x) * value, y: point0.y + (point1.y * this.scaleRatio - point0.y) * value };\r\n currentHole.push(currentPoint);\r\n }\r\n currentArea[1] = currentHole;\r\n }\r\n }\r\n }\r\n }\r\n this.morphable.currentPoints = currentPoints;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Restores the polygon to its original appearance.\r\n *\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphBack = function (duration, easing) {\r\n this._morphToPointsReal = this._morphFromPointsReal;\r\n this._morphFromPointsReal = this.morphable.currentPoints;\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n };\r\n Object.defineProperty(Morpher.prototype, \"animations\", {\r\n /**\r\n * Returns a list of morph animations currently being played.\r\n *\r\n * @return List of animations\r\n */\r\n get: function () {\r\n if (!this._animations) {\r\n this._animations = [];\r\n this._disposers.push(new AnimationDisposer(this._animations));\r\n }\r\n return this._animations;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Morpher;\r\n}(BaseObject));\r\nexport { Morpher };\r\n","/**\r\n * Polygon module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Morpher } from \"../utils/Morpher\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a polygon.\r\n *\r\n * @see {@link IPolygonEvents} for a list of available events\r\n * @see {@link IPolygonAdapters} for a list of available Adapters\r\n */\r\nvar Polygon = /** @class */ (function (_super) {\r\n __extends(Polygon, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Polygon() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Polygon\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.shapeRendering = \"auto\";\r\n _this._currentPoints = [];\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Polygon.prototype, \"points\", {\r\n /**\r\n * @return Polygon points\r\n */\r\n get: function () {\r\n var points = this.getPropertyValue(\"points\");\r\n var path = this.path;\r\n if (path && (!points || points.length == 0)) {\r\n var valueStr = path.slice(1, path.length - 1);\r\n var segments = valueStr.split(\"ZM\");\r\n for (var s = 0; s < segments.length; s++) {\r\n var segment = segments[s];\r\n if (segment.length > 0) {\r\n var areaHole = segment.split(\"M\");\r\n var areaArr = areaHole[0];\r\n var holeArr = areaHole[1];\r\n if (areaArr && areaArr.length > 0) {\r\n var pointsArr = areaArr.split(\"L\");\r\n if (pointsArr.length > 0) {\r\n var area = [];\r\n var areaAndHole = [area];\r\n points.push(areaAndHole);\r\n for (var p = 0; p < pointsArr.length; p++) {\r\n var coords = pointsArr[p].split(\",\");\r\n area.push({ x: +coords[0], y: +coords[1] });\r\n }\r\n if (holeArr && holeArr.length > 0) {\r\n var pointsArr_1 = holeArr.split(\"L\");\r\n if (pointsArr_1.length > 0) {\r\n var hole = [];\r\n areaAndHole.push(hole);\r\n for (var p = pointsArr_1.length - 1; p >= 0; p--) {\r\n var coords = pointsArr_1[p].split(\",\");\r\n hole.push({ x: +coords[0], y: +coords[1] });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.setPropertyValue(\"points\", points);\r\n this._currentPoints = points;\r\n }\r\n return points;\r\n },\r\n /**\r\n * An array of X/Y coordinates for each elbow of the polygon.\r\n *\r\n * @todo Example\r\n * @param points Polygon points\r\n */\r\n set: function (points) {\r\n this.setPropertyValue(\"points\", points, true);\r\n this._currentPoints = points;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polygon.prototype, \"currentPoints\", {\r\n /**\r\n * @return Polygon points\r\n */\r\n get: function () {\r\n if ((!this._currentPoints || this._currentPoints.length == 0) && this.path) {\r\n this._currentPoints = this.points;\r\n }\r\n return this._currentPoints;\r\n },\r\n /**\r\n * Current points. Used when morphing the element, so that original `points`\r\n * are not overwritten.\r\n *\r\n * @param points Polygon points\r\n */\r\n set: function (points) {\r\n if (this._currentPoints != points) {\r\n this._currentPoints = points;\r\n this.draw();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Polygon.prototype.draw = function () {\r\n var path = \"\";\r\n var points = this._currentPoints;\r\n var left;\r\n var right;\r\n var top;\r\n var bottom;\r\n if (points.length > 0) {\r\n // separate areas\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n // surface\r\n var surface = points[i][0];\r\n var hole = points[i][1];\r\n if (surface && surface.length > 0) {\r\n var point = surface[0];\r\n path += $path.moveTo(point);\r\n for (var s = 0; s < surface.length; s++) {\r\n point = surface[s];\r\n path += $path.lineTo(point);\r\n if (!$type.isNumber(right) || (right < point.x)) {\r\n right = point.x;\r\n }\r\n if (!$type.isNumber(left) || (left > point.x)) {\r\n left = point.x;\r\n }\r\n if (!$type.isNumber(top) || (top > point.y)) {\r\n top = point.y;\r\n }\r\n if (!$type.isNumber(bottom) || (bottom < point.y)) {\r\n bottom = point.y;\r\n }\r\n }\r\n }\r\n // hole\r\n if (hole && hole.length > 0) {\r\n var point = hole[0];\r\n path += $path.moveTo(point);\r\n for (var h = 0, hlen = hole.length; h < hlen; h++) {\r\n point = hole[h];\r\n path += $path.lineTo(point);\r\n }\r\n }\r\n }\r\n if (path) {\r\n path += $path.closePath();\r\n }\r\n this.bbox.x = left;\r\n this.bbox.y = top;\r\n this.bbox.width = right - left;\r\n this.bbox.height = bottom - top;\r\n _super.prototype.setPath.call(this, path);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Polygon.prototype.setPath = function (value) {\r\n if (_super.prototype.setPath.call(this, value)) {\r\n this.points = [];\r\n this._bbox = this.group.getBBox();\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * Measures element\r\n */\r\n Polygon.prototype.measureElement = function () {\r\n // Overriding to avoid extra measurement.\r\n };\r\n Object.defineProperty(Polygon.prototype, \"centerPoint\", {\r\n /**\r\n * A calculated center point for the shape.\r\n *\r\n * @readonly\r\n * @return Center\r\n */\r\n get: function () {\r\n return { x: this.bbox.x + this.bbox.width / 2, y: this.bbox.y + this.bbox.height / 2 };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polygon.prototype, \"morpher\", {\r\n /**\r\n * A [[Morpher]] instance that is used to morph polygon into some other\r\n * shape.\r\n *\r\n * @readonly\r\n * @return Morpher instance\r\n */\r\n get: function () {\r\n if (!this._morpher) {\r\n this._morpher = new Morpher(this);\r\n this._disposers.push(this._morpher);\r\n }\r\n return this._morpher;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Polygon;\r\n}(Sprite));\r\nexport { Polygon };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polygon\"] = Polygon;\r\n","/**\r\n * Preloader module.\r\n *\r\n * Preloader is a progress indicator.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Slice } from \"./Slice\";\r\nimport { Label } from \"./Label\";\r\nimport { registry } from \"../Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A class used to draw and display progress indicator.\r\n *\r\n * @see {@link IPreloaderEvents} for a list of available events\r\n * @see {@link IPreloaderAdapters} for a list of available Adapters\r\n */\r\nvar Preloader = /** @class */ (function (_super) {\r\n __extends(Preloader, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Preloader() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"Preloader\";\r\n // Set dimensions\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create main container\r\n var sliceContainer = _this.createChild(Container);\r\n sliceContainer.shouldClone = false;\r\n // Add background (100%) slice\r\n var backgroundSlice = sliceContainer.createChild(Slice);\r\n backgroundSlice.shouldClone = false;\r\n backgroundSlice.radius = 53;\r\n backgroundSlice.arc = 360;\r\n backgroundSlice.fill = interfaceColors.getFor(\"fill\");\r\n backgroundSlice.fillOpacity = 0.8;\r\n backgroundSlice.innerRadius = 42;\r\n backgroundSlice.isMeasured = false;\r\n _this.backgroundSlice = backgroundSlice;\r\n // Add progress slice\r\n var progressSlice = sliceContainer.createChild(Slice);\r\n progressSlice.shouldClone = false;\r\n progressSlice.radius = 50;\r\n progressSlice.innerRadius = 45;\r\n progressSlice.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n progressSlice.fillOpacity = 0.2;\r\n progressSlice.isMeasured = false;\r\n _this.progressSlice = progressSlice;\r\n // Add text label element\r\n var label = sliceContainer.createChild(Label);\r\n label.shouldClone = false;\r\n label.horizontalCenter = \"middle\";\r\n label.verticalCenter = \"middle\";\r\n label.isMeasured = false;\r\n label.fill = interfaceColors.getFor(\"text\");\r\n label.align = \"center\";\r\n label.valign = \"middle\";\r\n label.textAlign = \"middle\";\r\n label.fillOpacity = 0.4;\r\n _this.label = label;\r\n // Set defaults\r\n _this.background.opacity = 1;\r\n _this.background.fill = interfaceColors.getFor(\"background\");\r\n _this.contentAlign = \"center\";\r\n _this.contentValign = \"middle\";\r\n _this.delay = 300;\r\n // Create hidden state\r\n var hiddenState = _this.states.create(\"hidden\");\r\n hiddenState.properties.opacity = 0;\r\n // Hide by default\r\n _this.visible = false;\r\n _this.hide(0);\r\n _this.__disabled = true;\r\n // Make it disposable\r\n // @todo Maybe it's enough to just dispose `sliceContainer`?\r\n _this._disposers.push(_this.backgroundSlice);\r\n _this._disposers.push(_this.progressSlice);\r\n _this._disposers.push(_this.label);\r\n _this._disposers.push(sliceContainer);\r\n return _this;\r\n }\r\n Object.defineProperty(Preloader.prototype, \"progress\", {\r\n /**\r\n * @return Progress (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"progress\");\r\n },\r\n /**\r\n * Current preload progress. (0-1)\r\n *\r\n * * 0 - 0%\r\n * * 0.5 - 50%\r\n * * 1 - 100%\r\n *\r\n * Setting this to a value less than 1, will automatically reveal the\r\n * preloader, while setting it to 1 (100%) will hide it.\r\n *\r\n * @param value Progress (0-1)\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n this.__disabled = false;\r\n this.validateLayout(); // show not in center without this\r\n this.setPropertyValue(\"progress\", value);\r\n /*if (!this.visible && value == 1) {\r\n return;\r\n }*/\r\n this.progressSlice.arc = 360 * value;\r\n if (this.label) {\r\n this.label.text = Math.round(value * 100) + \"%\";\r\n }\r\n if (value >= 1) {\r\n // Cancel the timeout\r\n if (this._started) {\r\n this._started = undefined;\r\n }\r\n // TODO remove closure ?\r\n registry.events.once(\"enterframe\", function () {\r\n var animation = _this.hide();\r\n if (animation && !animation.isFinished()) {\r\n animation.events.once(\"animationended\", function () {\r\n _this.__disabled = true;\r\n });\r\n }\r\n else {\r\n _this.__disabled = true;\r\n }\r\n });\r\n this.interactionsEnabled = false;\r\n this.setPropertyValue(\"progress\", 0);\r\n }\r\n else if (value > 0) {\r\n if (this.delay) {\r\n if (!this._started) {\r\n this._started = new Date().getTime();\r\n }\r\n else if ((this._started + this.delay) <= new Date().getTime()) {\r\n this.__disabled = false;\r\n this.show();\r\n this.interactionsEnabled = true;\r\n }\r\n }\r\n else {\r\n this.__disabled = false;\r\n this.show();\r\n this.interactionsEnabled = true;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Preloader.prototype, \"delay\", {\r\n /**\r\n * @return Delay (ms)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"delay\");\r\n },\r\n /**\r\n * Delay display of preloader by X milliseconds.\r\n *\r\n * When loading starts (`progress` is set to <1) and finishes (`progress` is\r\n * set to 1) before `delay` ms, the loader is never shown.\r\n *\r\n * This is used to avoid brief flashing of the preload for very quick loads.\r\n *\r\n * @default 1000\r\n * @param value Delay (ms)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"delay\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Preloader;\r\n}(Container));\r\nexport { Preloader };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Preloader\"] = Preloader;\r\n","/**\r\n * Zoom out button functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link ICloseButtonEvents} for a list of available events\r\n * @see {@link ICloseButtonAdapters} for a list of available Adapters\r\n */\r\nvar CloseButton = /** @class */ (function (_super) {\r\n __extends(CloseButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CloseButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"CloseButton\";\r\n _this.padding(8, 8, 8, 8);\r\n _this.showSystemTooltip = true;\r\n _this.width = 30;\r\n _this.height = 30;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.cursorOverStyle = MouseCursorStyle.pointer;\r\n var background = _this.background;\r\n background.cornerRadius(20, 20, 20, 20);\r\n var bgc = interfaceColors.getFor(\"background\");\r\n background.fill = bgc;\r\n background.stroke = interfaceColors.getFor(\"primaryButton\");\r\n background.strokeOpacity = 1;\r\n background.strokeWidth = 1;\r\n var downColor = interfaceColors.getFor(\"primaryButtonActive\");\r\n var bhs = background.states.getKey(\"hover\");\r\n bhs.properties.strokeWidth = 3;\r\n bhs.properties.fill = bgc;\r\n var bds = background.states.getKey(\"down\");\r\n bds.properties.stroke = downColor;\r\n bds.properties.fill = bgc;\r\n // Create an icon\r\n var icon = new Sprite();\r\n icon.element = _this.paper.add(\"path\");\r\n icon.stroke = background.stroke;\r\n _this.icon = icon;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n CloseButton.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n var w = this.pixelWidth / 3;\r\n var h = this.pixelHeight / 3;\r\n var path = $path.moveTo({ x: -w / 2, y: -h / 2 });\r\n path += $path.lineTo({ x: w / 2, y: h / 2 });\r\n path += $path.moveTo({ x: w / 2, y: -h / 2 });\r\n path += $path.lineTo({ x: -w / 2, y: h / 2 });\r\n this.icon.path = path;\r\n this.invalidateLayout();\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n CloseButton.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Close\");\r\n }\r\n };\r\n return CloseButton;\r\n}(Button));\r\nexport { CloseButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CloseButton\"] = CloseButton;\r\n","/**\r\n * Functionality for drawing simple SwitchButtons.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { Label } from \"./Label\";\r\nimport { Button } from \"../elements/Button\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * SwitchButton class is capable of drawing a simple rectangular SwitchButton with\r\n * optionally rounded corners and an icon in it.\r\n *\r\n * @see {@link ISwitchButtonEvents} for a list of available events\r\n * @see {@link ISwitchButtonAdapters} for a list of available Adapters\r\n */\r\nvar SwitchButton = /** @class */ (function (_super) {\r\n __extends(SwitchButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SwitchButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"SwitchButton\";\r\n _this.tooltipY = 0;\r\n // Set defaults\r\n _this.layout = \"horizontal\";\r\n _this.contentAlign = \"center\";\r\n _this.contentValign = \"middle\";\r\n _this.padding(8, 16, 8, 16);\r\n _this.setStateOnChildren = true;\r\n _this.states.create(\"active\");\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create the label element\r\n var leftLabel = new Label();\r\n leftLabel.fillOpacity = 0.3;\r\n var llas = leftLabel.states.create(\"active\");\r\n llas.properties.fillOpacity = 1;\r\n leftLabel.isActive = true;\r\n _this.leftLabel = leftLabel;\r\n var button = new Button();\r\n var circle = new Circle();\r\n button.contentValign = \"none\";\r\n button.padding(0, 0, 0, 0);\r\n circle.radius = 10;\r\n button.icon = circle;\r\n button.icon.valign = \"middle\";\r\n button.label = undefined;\r\n var p100 = percent(100);\r\n button.background.cornerRadius(p100, p100, p100, p100);\r\n button.width = circle.radius * 3.5;\r\n button.height = circle.radius * 2.1;\r\n button.marginLeft = 8;\r\n button.marginRight = 8;\r\n button.togglable = true;\r\n circle.dx = -circle.radius * 0.7;\r\n circle.fill = interfaceColors.getFor(\"primaryButton\");\r\n var hs = circle.states.create(\"hover\");\r\n hs.properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\r\n var as = circle.states.create(\"active\");\r\n as.properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\r\n as.properties.dx = circle.radius * 0.7;\r\n _this.switchButton = button;\r\n _this.events.on(\"toggled\", function () {\r\n _this.leftLabel.isActive = !_this.isActive;\r\n _this.rightLabel.isActive = _this.isActive;\r\n });\r\n // Create the label element\r\n var rightLabel = new Label();\r\n rightLabel.fillOpacity = 0.3;\r\n var rlas = rightLabel.states.create(\"active\");\r\n rlas.properties.fillOpacity = 1;\r\n _this.rightLabel = rightLabel;\r\n // Set up accessibility\r\n // A Button should be always focusable\r\n _this.role = \"button\";\r\n _this.focusable = true;\r\n rightLabel.valign = \"middle\";\r\n leftLabel.valign = \"middle\";\r\n button.valign = \"middle\";\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(SwitchButton.prototype, \"leftLabel\", {\r\n /**\r\n * @return Left label element\r\n */\r\n get: function () {\r\n return this._leftLabel;\r\n },\r\n /**\r\n * [[Label]] element to be used for left text.\r\n *\r\n * @param left label element\r\n */\r\n set: function (label) {\r\n if (this._leftLabel) {\r\n this.removeDispose(this._leftLabel);\r\n }\r\n this._leftLabel = label;\r\n if (label) {\r\n label.parent = this;\r\n label.interactionsEnabled = false;\r\n label.shouldClone = false;\r\n this._disposers.push(this._leftLabel);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SwitchButton.prototype, \"rightLabel\", {\r\n /**\r\n * @return Rigth label element\r\n */\r\n get: function () {\r\n return this._rightLabel;\r\n },\r\n /**\r\n * [[Label]] element to be used for left text.\r\n *\r\n * @param rigth label element\r\n */\r\n set: function (label) {\r\n if (this._rightLabel) {\r\n this.removeDispose(this._rightLabel);\r\n }\r\n this._rightLabel = label;\r\n if (label) {\r\n label.parent = this;\r\n label.interactionsEnabled = false;\r\n label.shouldClone = false;\r\n this._disposers.push(this._rightLabel);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SwitchButton.prototype, \"switch\", {\r\n /**\r\n * @ignore\r\n * @deprecated Use `switchButton` instead\r\n */\r\n get: function () {\r\n return this._switchButton;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SwitchButton.prototype, \"switchButton\", {\r\n /**\r\n * @return Button\r\n */\r\n get: function () {\r\n return this._switchButton;\r\n },\r\n /**\r\n * A [[Button]] element for switch.\r\n *\r\n * @param Button\r\n */\r\n set: function (button) {\r\n if (this._switchButton) {\r\n this.removeDispose(this._switchButton);\r\n }\r\n this._switchButton = button;\r\n if (button) {\r\n button.parent = this;\r\n button.shouldClone = false;\r\n this._disposers.push(this._switchButton);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties and other attributes.\r\n *\r\n * @param source Source\r\n */\r\n SwitchButton.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (source.leftLabel) {\r\n this.leftLabel.copyFrom(source.leftLabel);\r\n }\r\n if (source.rightLabel) {\r\n this.rightLabel.copyFrom(source.rightLabel);\r\n }\r\n if (source.switchButton) {\r\n this.switchButton.copyFrom(source.switchButton);\r\n }\r\n };\r\n return SwitchButton;\r\n}(Container));\r\nexport { SwitchButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SwitchButton\"] = SwitchButton;\r\n","/**\r\n * Slider is a scrollbar with just one selection grip.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Scrollbar } from \"../../core/elements/Scrollbar\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a slider - a version of scrollbar with just one grip.\r\n *\r\n * @see {@link ISliderEvents} for a list of available events\r\n * @see {@link ISliderAdapters} for a list of available Adapters\r\n */\r\nvar Slider = /** @class */ (function (_super) {\r\n __extends(Slider, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Slider() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Slider\";\r\n _this.thumb.opacity = 0;\r\n _this.thumb.interactionsEnabled = false;\r\n _this.endGrip.opacity = 0;\r\n _this.endGrip.interactionsEnabled = false;\r\n _this.startGrip.events.on(\"drag\", function () {\r\n _this.endGrip.x = _this.startGrip.x;\r\n _this.endGrip.y = _this.startGrip.y;\r\n });\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Slider.prototype, \"__end\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._start;\r\n },\r\n set: function (value) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slider.prototype, \"end\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._start;\r\n },\r\n /**\r\n * Relative position (0-1) of the end grip.\r\n *\r\n * @param position Position (0-1)\r\n */\r\n set: function (position) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slider.prototype, \"start\", {\r\n /**\r\n * @return Position (0-1)\r\n */\r\n get: function () {\r\n return this._start;\r\n },\r\n /**\r\n * Relative position (0-1) of the start grip.\r\n *\r\n * @param position Position (0-1)\r\n */\r\n set: function (position) {\r\n if (!this._isBusy) {\r\n this.__start = position;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Slider;\r\n}(Scrollbar));\r\nexport { Slider };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Slider\"] = Slider;\r\n","/**\r\n * Play button functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { RoundedRectangle } from \"./RoundedRectangle\";\r\nimport { registry } from \"../Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Triangle } from \"./Triangle\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link IPlayButtonEvents} for a list of available events\r\n * @see {@link IPlayButtonAdapters} for a list of available Adapters\r\n */\r\nvar PlayButton = /** @class */ (function (_super) {\r\n __extends(PlayButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PlayButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PlayButton\";\r\n _this.padding(12, 12, 12, 12);\r\n _this.showSystemTooltip = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n var background = _this.background;\r\n background.cornerRadius(25, 25, 25, 25);\r\n background.fill = interfaceColors.getFor(\"primaryButton\");\r\n background.stroke = interfaceColors.getFor(\"primaryButtonStroke\");\r\n background.strokeOpacity = 0;\r\n background.states.getKey(\"hover\").properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\r\n background.states.getKey(\"down\").properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\r\n // Create a play icon\r\n var playIcon = new Triangle();\r\n playIcon.direction = \"right\";\r\n playIcon.width = 9;\r\n playIcon.height = 11;\r\n playIcon.marginLeft = 1;\r\n playIcon.marginRight = 1;\r\n playIcon.horizontalCenter = \"middle\";\r\n playIcon.verticalCenter = \"middle\";\r\n playIcon.stroke = interfaceColors.getFor(\"primaryButtonText\");\r\n playIcon.fill = playIcon.stroke;\r\n _this.icon = playIcon;\r\n // Create a play icon\r\n var stopIcon = new RoundedRectangle();\r\n stopIcon.width = 11;\r\n stopIcon.height = 11;\r\n stopIcon.horizontalCenter = \"middle\";\r\n stopIcon.verticalCenter = \"middle\";\r\n stopIcon.cornerRadius(0, 0, 0, 0);\r\n stopIcon.stroke = interfaceColors.getFor(\"primaryButtonText\");\r\n stopIcon.fill = playIcon.stroke;\r\n _this.togglable = true;\r\n var activeState = _this.states.create(\"active\");\r\n activeState.transitionDuration = 0;\r\n activeState.properties.icon = stopIcon;\r\n _this.defaultState.transitionDuration = 0;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PlayButton.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Play\");\r\n }\r\n };\r\n return PlayButton;\r\n}(Button));\r\nexport { PlayButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PlayButton\"] = PlayButton;\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { RadialGradient } from \"./RadialGradient\";\r\nimport { GradientModifier } from \"./GradientModifier\";\r\nimport { registry } from \"../../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class can be used to modify radial gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"LinearGradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\r\nvar RadialGradientModifier = /** @class */ (function (_super) {\r\n __extends(RadialGradientModifier, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function RadialGradientModifier() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadialGradientModifier\";\r\n _this.gradient = new RadialGradient();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n RadialGradientModifier.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.gradient = source.gradient.clone();\r\n };\r\n return RadialGradientModifier;\r\n}(GradientModifier));\r\nexport { RadialGradientModifier };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadialGradientModifier\"] = RadialGradientModifier;\r\n","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern } from \"./Pattern\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $path from \"../../rendering/Path\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Line pattern.\r\n */\r\nvar LinePattern = /** @class */ (function (_super) {\r\n __extends(LinePattern, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LinePattern() {\r\n var _this = _super.call(this) || this;\r\n _this.properties[\"gap\"] = 0;\r\n _this._line = _this.paper.add(\"path\");\r\n _this.addElement(_this._line);\r\n return _this;\r\n }\r\n /**\r\n * Draws the pattern.\r\n */\r\n LinePattern.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n this.properties[\"shapeRendering\"] = \"auto\";\r\n }\r\n if (this._line) {\r\n var w = this.width;\r\n var h = this.height;\r\n var path = \"\";\r\n if (!this.gap) {\r\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n path = $path.moveTo({ x: -w, y: h / 2 }) + $path.lineTo({ x: w * 2, y: h / 2 });\r\n this.properties[\"rotationX\"] = this.width / 2;\r\n this.properties[\"rotationY\"] = this.height / 2;\r\n }\r\n else {\r\n path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: w, y: 0 });\r\n }\r\n }\r\n else {\r\n var step = this.gap + this.strokeWidth;\r\n var count = this.height / step;\r\n for (var i = -count / 2; i < count * 1.5; i++) {\r\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n path += $path.moveTo({ x: -w, y: (i + 0.5) * step }) + $path.lineTo({ x: w * 2, y: (i + 0.5) * step });\r\n this.properties[\"rotationX\"] = this.width / 2;\r\n this.properties[\"rotationY\"] = this.height / 2;\r\n }\r\n else {\r\n path += $path.moveTo({ x: -w, y: i * step }) + $path.lineTo({ x: w * 2, y: i * step });\r\n }\r\n }\r\n }\r\n this._line.attr({ \"d\": path });\r\n }\r\n };\r\n Object.defineProperty(LinePattern.prototype, \"gap\", {\r\n /**\r\n * @return gap\r\n */\r\n get: function () {\r\n return this.properties[\"gap\"];\r\n },\r\n /**\r\n * Number of pixels between pattern lines.\r\n *\r\n * The pattern will automatically draw required number of lines to fill\r\n * pattern area maintaining `gap` distance between them.\r\n *\r\n * 0 (zero) means only single line will be drawn.\r\n *\r\n * @default 0\r\n * @since 4.7.7\r\n */\r\n set: function (value) {\r\n this.properties[\"gap\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LinePattern;\r\n}(Pattern));\r\nexport { LinePattern };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LinePattern\"] = LinePattern;\r\n","/**\r\n * Rectangular pattern module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern } from \"./Pattern\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Circular pattern\r\n */\r\nvar CirclePattern = /** @class */ (function (_super) {\r\n __extends(CirclePattern, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CirclePattern() {\r\n var _this = _super.call(this) || this;\r\n _this.properties[\"radius\"] = 2;\r\n _this._circle = _this.paper.add(\"circle\");\r\n _this.addElement(_this._circle);\r\n _this.shapeRendering = \"auto\";\r\n return _this;\r\n }\r\n /**\r\n * Draws the circle element.\r\n */\r\n CirclePattern.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this._circle) {\r\n this._circle.attr({ \"r\": this.radius, \"cx\": this.width / 2, \"cy\": this.height / 2 });\r\n }\r\n };\r\n Object.defineProperty(CirclePattern.prototype, \"radius\", {\r\n /**\r\n * @return Radius (px)\r\n */\r\n get: function () {\r\n return this.properties[\"radius\"];\r\n },\r\n /**\r\n * Circle radius in pixels.\r\n *\r\n * @param value Radius (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"radius\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CirclePattern;\r\n}(Pattern));\r\nexport { CirclePattern };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CirclePattern\"] = CirclePattern;\r\n","/**\r\n * Rectangular pattern module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern } from \"./Pattern\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Rectangular pattern\r\n */\r\nvar RectPattern = /** @class */ (function (_super) {\r\n __extends(RectPattern, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RectPattern() {\r\n var _this = _super.call(this) || this;\r\n _this.rectHeight = 1;\r\n _this.rectWidth = 1;\r\n _this._rect = _this.paper.add(\"rect\");\r\n _this.addElement(_this._rect);\r\n return _this;\r\n }\r\n /**\r\n * Draws the rectangular element.\r\n */\r\n RectPattern.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n this.properties[\"rotationX\"] = this.width / 2;\r\n this.properties[\"rotationY\"] = this.height / 2;\r\n if (this._rect) {\r\n this._rect.attr({ \"width\": this.rectWidth, \"height\": this.rectHeight, \"x\": (this.width - this.rectWidth) / 2, \"y\": (this.height - this.rectHeight) / 2 });\r\n }\r\n };\r\n Object.defineProperty(RectPattern.prototype, \"rectWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.properties[\"rectWidth\"];\r\n },\r\n /**\r\n * Rectangle width in pixels.\r\n *\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"rectWidth\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RectPattern.prototype, \"rectHeight\", {\r\n /**\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n return this.properties[\"rectHeight\"];\r\n },\r\n /**\r\n * Rectangle height in pixels.\r\n *\r\n * @param value Height (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"rectHeight\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RectPattern;\r\n}(Pattern));\r\nexport { RectPattern };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RectPattern\"] = RectPattern;\r\n","/**\r\n * Module for \"Colorize\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a \"Colorize\" filter.\r\n */\r\nvar ColorizeFilter = /** @class */ (function (_super) {\r\n __extends(ColorizeFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColorizeFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColorizeFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\r\n _this.feColorMatrix.attr({ \"type\": \"matrix\" });\r\n //this.feColorMatrix.setAttribute(\"in\", \"SourceAlpha\");\r\n _this.filterPrimitives.push(_this.feColorMatrix);\r\n // Set default properties\r\n _this.intensity = 1;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)applies colors to the already existing filter by modifying filyer's\r\n * color matrix element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ColorizeFilter.prototype.applyFilter = function () {\r\n var i = this.intensity;\r\n var ii = 1 - i;\r\n var r;\r\n var g;\r\n var b;\r\n var color = this.color;\r\n if (color && color.rgb) {\r\n r = color.rgb.r / 255 * i;\r\n g = color.rgb.g / 255 * i;\r\n b = color.rgb.b / 255 * i;\r\n }\r\n else {\r\n r = 0;\r\n g = 0;\r\n b = 0;\r\n }\r\n this.feColorMatrix.attr({ \"values\": ii + \" 0 0 0 \" + r + \" 0 \" + ii + \" 0 0 \" + g + \" 0 0 \" + ii + \" 0 \" + b + \" 0 0 0 1 0\" });\r\n };\r\n Object.defineProperty(ColorizeFilter.prototype, \"color\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.properties[\"color\"];\r\n },\r\n /**\r\n * Target color to apply to the element.\r\n *\r\n * Depending on the `intensity`, all colors of the target element will steer\r\n * towards this color.\r\n *\r\n * E.g. setting to `am4core.color(\"greener\")` will make all colors greener.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.properties[\"color\"] = value;\r\n this.applyFilter();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorizeFilter.prototype, \"intensity\", {\r\n /**\r\n * @return Intensity (0-1)\r\n */\r\n get: function () {\r\n return this.properties.intensity;\r\n },\r\n /**\r\n * Intensity of the color (0-1).\r\n *\r\n * The bigger the number the more of a `color` target's colors will become.\r\n *\r\n * 0 means the colors will remain as they are.\r\n * 1 means all colors will become the target `color`.\r\n *\r\n * @default 1\r\n * @param value Intensity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties.intensity = value;\r\n this.applyFilter();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ColorizeFilter;\r\n}(Filter));\r\nexport { ColorizeFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColorizeFilter\"] = ColorizeFilter;\r\n","/**\r\n * Module for \"Blur\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a \"Blur\" filter.\r\n */\r\nvar BlurFilter = /** @class */ (function (_super) {\r\n __extends(BlurFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function BlurFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"BlurFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feGaussianBlur = _this.paper.add(\"feGaussianBlur\");\r\n _this.feGaussianBlur.attr({ \"result\": \"blurOut\", \"in\": \"SourceGraphic\" });\r\n _this.filterPrimitives.push(_this.feGaussianBlur);\r\n // Set default properties\r\n _this.width = 200;\r\n _this.height = 200;\r\n _this.blur = 1.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(BlurFilter.prototype, \"blur\", {\r\n /**\r\n * @return Blur\r\n */\r\n get: function () {\r\n return this.properties.blur;\r\n },\r\n /**\r\n * Blur value.\r\n *\r\n * The bigger the value, the blurrier the target element will become.\r\n *\r\n * @default 1.5\r\n * @param value Blur\r\n */\r\n set: function (value) {\r\n this.properties.blur = value;\r\n this.feGaussianBlur.attr({ \"stdDeviation\": value / this.scale });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return BlurFilter;\r\n}(Filter));\r\nexport { BlurFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"BlurFilter\"] = BlurFilter;\r\n","/**\r\n * Module for \"Focus\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { Filter } from \"./Filter\";\r\nimport { InterfaceColorSet } from \"../../utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a \"Focus\" filter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/accessibility/} more about accessibility\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/changing-appearance-of-focused-items/} cusomizing focus appearance\r\n */\r\nvar FocusFilter = /** @class */ (function (_super) {\r\n __extends(FocusFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FocusFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"FocusFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feFlood = _this.paper.add(\"feFlood\");\r\n _this.feFlood.attr({ \"flood-color\": new InterfaceColorSet().getFor(\"primaryButtonHover\"), \"result\": \"base\" });\r\n _this.filterPrimitives.push(_this.feFlood);\r\n _this.feMorphology = _this.paper.add(\"feMorphology\");\r\n _this.feMorphology.attr({ \"result\": \"bigger\", \"in\": \"SourceGraphic\", \"operator\": \"dilate\", \"radius\": \"2\" });\r\n _this.filterPrimitives.push(_this.feMorphology);\r\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\r\n _this.feColorMatrix.attr({ \"result\": \"mask\", \"in\": \"bigger\", \"type\": \"matrix\", \"values\": \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0\" });\r\n _this.filterPrimitives.push(_this.feColorMatrix);\r\n _this.feComposite = _this.paper.add(\"feComposite\");\r\n _this.feComposite.attr({ \"result\": \"drop\", \"in\": \"base\", \"in2\": \"mask\", \"operator\": \"in\" });\r\n _this.filterPrimitives.push(_this.feComposite);\r\n _this.feBlend = _this.paper.add(\"feBlend\");\r\n _this.feBlend.attr({ \"in\": \"SourceGraphic\", \"in2\": \"drop\", \"mode\": \"normal\" });\r\n _this.filterPrimitives.push(_this.feBlend);\r\n // Set default properties\r\n _this.width = 130;\r\n _this.height = 130;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(FocusFilter.prototype, \"stroke\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.properties[\"stroke\"];\r\n },\r\n /**\r\n * Stroke (outline) color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.properties[\"stroke\"] = value;\r\n this.feFlood.attr({ \"flood-color\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FocusFilter.prototype, \"strokeWidth\", {\r\n /**\r\n * @return Outline thickness (px)\r\n */\r\n get: function () {\r\n return this.properties[\"strokeWidth\"];\r\n },\r\n /**\r\n * Stroke (outline) thickness in pixels.\r\n *\r\n * @param value Outline thickness (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"strokeWidth\"] = value;\r\n this.feMorphology.attr({ \"radius\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FocusFilter.prototype, \"opacity\", {\r\n /**\r\n * @return Outline opacity (0-1)\r\n */\r\n get: function () {\r\n return this.properties[\"opacity\"];\r\n },\r\n /**\r\n * Opacity of the outline. (0-1)\r\n *\r\n * @param value Outline opacity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties[\"opacity\"] = value;\r\n this.feColorMatrix.attr({ \"values\": \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \" + value + \" 0\" });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets filter's target element.\r\n *\r\n * In addition it also disables built-in focus outline on element this\r\n * filter is applied to.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Element filter is being attached to\r\n */\r\n FocusFilter.prototype.setSprite = function (value) {\r\n if (this._sprite && this._sprite != value) {\r\n this._sprite.group.removeStyle(\"outline\");\r\n }\r\n value.group.addStyle({\r\n \"outline\": \"none\"\r\n });\r\n _super.prototype.setSprite.call(this, value);\r\n };\r\n return FocusFilter;\r\n}(Filter));\r\nexport { FocusFilter };\r\n","/**\r\n * This module contains PatternSet object definition\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { Color } from \"./Color\";\r\nimport { InterfaceColorSet } from \"./InterfaceColorSet\";\r\nimport { LinePattern } from \"../rendering/fills/LinePattern\";\r\nimport { RectPattern } from \"../rendering/fills/RectPattern\";\r\nimport { CirclePattern } from \"../rendering/fills/CirclePattern\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines an interable list of distinctive patterns that can be used in\r\n * conjunction to colors to generate various fill patterns.\r\n *\r\n * @important\r\n * @since 4.7.5\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nvar PatternSet = /** @class */ (function (_super) {\r\n __extends(PatternSet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PatternSet() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Holds the list of the colors in this set. (preset or auto-generated)\r\n */\r\n _this._list = [];\r\n /**\r\n * Current step.\r\n */\r\n _this._currentStep = 0;\r\n /**\r\n * If set to non-zero value, the PatternSet will start iterating patterns from\r\n * that particular index, not the first pattern in the list.\r\n */\r\n _this._startIndex = 0;\r\n /**\r\n * Current pass in cycle. Once all patterns in the list are iterated,\r\n * iteration restarts from beginning and currentPass is incremented.\r\n */\r\n _this._currentPass = 0;\r\n /**\r\n * A base color. If there are no colors pre-set in the color list, ColorSet\r\n * will use this color as a base when generating new ones, applying\r\n * `stepOptions` and `passOptions` to this base color.\r\n */\r\n _this.baseColor = new Color({\r\n r: 103,\r\n g: 183,\r\n b: 220\r\n });\r\n _this.className = \"PatternSet\";\r\n // Set base color to be used for pattern elements\r\n var interfaceColors = new InterfaceColorSet();\r\n // Set default patterns\r\n _this.list = [\r\n _this.getLinePattern(1000, 45, 1, 6),\r\n _this.getRectPattern(10, 0, 4),\r\n _this.getLinePattern(1000, -45, 1, 6),\r\n _this.getCirclePattern(11, 2, true),\r\n _this.getLinePattern(6, 90, 1),\r\n _this.getRectPattern(12, 45, 6, true),\r\n _this.getLinePattern(6, 0, 1),\r\n _this.getRectPattern(7, 0, 4),\r\n _this.getLinePattern(1000, 45, 2, 3, \"4,2\"),\r\n _this.getCirclePattern(9, 3, false),\r\n _this.getLinePattern(1000, -45, 2, 3, \"4,2\"),\r\n _this.getRectPattern(10, 45, Math.sqrt(50)),\r\n _this.getLinePattern(1000, -45, 2, 1),\r\n _this.getRectPattern(10, 0, 9),\r\n _this.getLinePattern(1000, 45, 2, 1),\r\n _this.getLinePattern(1000, 0, 3, 1),\r\n _this.getRectPattern(10, 45, 10),\r\n _this.getLinePattern(1000, 90, 3, 1)\r\n ];\r\n _this.baseColor = interfaceColors.getFor(\"stroke\");\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n PatternSet.prototype.getLinePattern = function (size, rotation, thickness, gap, strokeDashArray) {\r\n var pattern = new LinePattern();\r\n pattern.width = size;\r\n pattern.height = size;\r\n pattern.stroke = this.baseColor;\r\n pattern.gap = gap;\r\n pattern.strokeDasharray = strokeDashArray;\r\n pattern.strokeWidth = thickness;\r\n pattern.rotation = rotation;\r\n return pattern;\r\n };\r\n PatternSet.prototype.getRectPattern = function (size, rotation, thickness, outline) {\r\n var pattern = new RectPattern();\r\n pattern.width = size;\r\n pattern.height = size;\r\n pattern.rectWidth = thickness;\r\n pattern.rectHeight = thickness;\r\n if (outline) {\r\n pattern.stroke = this.baseColor;\r\n pattern.strokeWidth = 1;\r\n pattern.fillOpacity = 0;\r\n }\r\n else {\r\n pattern.fill = this.baseColor;\r\n pattern.strokeWidth = 0;\r\n }\r\n if (rotation != 0) {\r\n pattern.shapeRendering = \"auto\";\r\n }\r\n pattern.rotation = rotation;\r\n return pattern;\r\n };\r\n PatternSet.prototype.getCirclePattern = function (size, radius, outline) {\r\n var pattern = new CirclePattern();\r\n pattern.width = size;\r\n pattern.height = size;\r\n pattern.shapeRendering = \"auto\";\r\n pattern.radius = radius;\r\n if (outline) {\r\n pattern.stroke = this.baseColor;\r\n pattern.strokeWidth = 1;\r\n pattern.fillOpacity = 0;\r\n }\r\n else {\r\n pattern.fill = this.baseColor;\r\n pattern.strokeWidth = 0;\r\n }\r\n return pattern;\r\n };\r\n Object.defineProperty(PatternSet.prototype, \"list\", {\r\n /**\r\n * @return Pattern list\r\n */\r\n get: function () {\r\n return this._list;\r\n },\r\n /**\r\n * List of pre-defined patterns to be used in set.\r\n *\r\n * @param value Pattern list\r\n */\r\n set: function (value) {\r\n this._list = value;\r\n this.reset();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the next pattern in list.\r\n *\r\n * @return Pattern\r\n */\r\n PatternSet.prototype.next = function () {\r\n var pattern = this.getIndex(this.currentStep);\r\n this._currentStep++;\r\n return pattern;\r\n };\r\n /**\r\n * Returns a color at specific index in the list.\r\n *\r\n * @param i Index\r\n * @return Pattern\r\n */\r\n PatternSet.prototype.getIndex = function (i) {\r\n var pattern;\r\n while (this.list.length <= i) {\r\n this.generatePatterns();\r\n }\r\n pattern = this.list[i];\r\n return pattern.clone();\r\n };\r\n /**\r\n * Generates a new set of patterns.\r\n */\r\n PatternSet.prototype.generatePatterns = function () {\r\n var count = this.list.length / (this._currentPass + 1);\r\n this._currentPass++;\r\n for (var i = 0; i < count; i++) {\r\n this.list.push(this.list[i].clone());\r\n }\r\n };\r\n /**\r\n * Resets internal iterator.\r\n *\r\n * Calling `next()` after this will return the very first color in the color\r\n * list, even if it was already returned before.\r\n */\r\n PatternSet.prototype.reset = function () {\r\n this._currentStep = this._startIndex;\r\n };\r\n Object.defineProperty(PatternSet.prototype, \"currentStep\", {\r\n /**\r\n * @return Step\r\n */\r\n get: function () {\r\n return this._currentStep;\r\n },\r\n /**\r\n * Sets current color iteration. You can use this property to skip some\r\n * colors from iteration. E.g. setting it to `10` will skip first ten\r\n * colors.\r\n *\r\n * Please note that the number is zero-based.\r\n *\r\n * @param value Step\r\n */\r\n set: function (value) {\r\n this._currentStep = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PatternSet.prototype, \"startIndex\", {\r\n /**\r\n * @return Index\r\n */\r\n get: function () {\r\n return this._startIndex;\r\n },\r\n /**\r\n * If set to non-zero value, the ColorSet will start iterating colors from\r\n * that particular index, not the first color in the list.\r\n *\r\n * @default 0\r\n * @param value Index\r\n */\r\n set: function (value) {\r\n this._startIndex = value;\r\n this.reset();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n PatternSet.prototype.processConfig = function (config) {\r\n // if (config) {\r\n // \t// Set up axis ranges\r\n // \tif ($type.hasValue(config.list) && $type.isArray(config.list)) {\r\n // \t\tfor (let i = 0, len = config.list.length; i < len; i++) {\r\n // \t\t\tif (!(config.list[i] instanceof Color)) {\r\n // \t\t\t\tconfig.list[i] = color(config.list[i]);\r\n // \t\t\t}\r\n // \t\t}\r\n // \t}\r\n // }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return PatternSet;\r\n}(BaseObject));\r\nexport { PatternSet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PatternSet\"] = PatternSet;\r\n","/**\r\n * A plugin base class.\r\n */\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This is a base class that provides core functionality for plugins.\r\n *\r\n * The easiest way to start off with a new plugin is to extend this class.\r\n *\r\n * It will provide all the mandatory functionality, such as disposers.\r\n *\r\n * @since 4.2.2\r\n */\r\nvar Plugin = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n */\r\n function Plugin() {\r\n /**\r\n * Is this object disposed?\r\n */\r\n this._disposed = false;\r\n /**\r\n * List of IDisposer which will be disposed when the BaseObject is disposed.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this._disposers = [];\r\n // Nothing to do here\r\n }\r\n /**\r\n * Decorates series with required events and adapters used to hijack its\r\n * data.\r\n */\r\n Plugin.prototype.init = function () {\r\n // Does nothing\r\n // Override it\r\n };\r\n /**\r\n * Returns if this element is already disposed.\r\n *\r\n * @return Is disposed?\r\n */\r\n Plugin.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Disposes this object and related stuff.\r\n */\r\n Plugin.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n var a = this._disposers;\r\n this._disposers = null;\r\n while (a.length !== 0) {\r\n var disposer = a.shift();\r\n disposer.dispose();\r\n }\r\n }\r\n };\r\n return Plugin;\r\n}());\r\nexport { Plugin };\r\n","/**\r\n * AmChartsLogo module.\r\n *\r\n * AmChartsLogo shows amCharts logo for non-commercial users of a library.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Polyspline } from \"./Polyspline\";\r\nimport { color } from \"../utils/Color\";\r\nimport { LinearGradient } from \"../rendering/fills/LinearGradient\";\r\nimport { DesaturateFilter } from \"../rendering/filters/DesaturateFilter\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A class used to draw and display progress indicator.\r\n *\r\n * @see {@link IAmChartsLogoEvents} for a list of available events\r\n * @see {@link IAmChartsLogoAdapters} for a list of available Adapters\r\n * @ignore Exclude from docs\r\n */\r\nvar AmChartsLogo = /** @class */ (function (_super) {\r\n __extends(AmChartsLogo, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AmChartsLogo() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"AmChartsLogo\";\r\n _this.valign = \"bottom\";\r\n var d = 0.3;\r\n _this.opacity = 0.3;\r\n _this.defaultState.properties.opacity = 0.4;\r\n _this.url = \"https://www.amcharts.com/\";\r\n _this.urlTarget = \"_blank\";\r\n _this.showSystemTooltip = true;\r\n _this.readerTitle = \"Chart created using amCharts library\";\r\n _this.width = 220 * d;\r\n _this.height = 70 * d;\r\n _this.background.opacity = 0;\r\n var aColor = color(\"#474758\");\r\n if (new InterfaceColorSet().getFor(\"background\").alternative.hex == \"#ffffff\") {\r\n aColor = color(\"#ffffff\");\r\n }\r\n var aGradient = new LinearGradient();\r\n aGradient.addColor(aColor);\r\n aGradient.addColor(aColor, 1, 0.75);\r\n aGradient.addColor(color(\"#3cabff\"), 1, 0.755);\r\n aGradient.rotation = -10;\r\n var aStroke = aGradient;\r\n var m = _this.createChild(Polyspline);\r\n m.shouldClone = false;\r\n m.isMeasured = false;\r\n m.segments = [[{ x: 50 * d, y: 50 * d }, { x: 90 * d, y: 50 * d }, { x: 120 * d, y: 20 * d }, { x: 135 * d, y: 35 * d }, { x: 150 * d, y: 20 * d }, { x: 180 * d, y: 50 * d }, { x: 200 * d, y: 50 * d }]];\r\n m.strokeWidth = 6 * d;\r\n m.tensionX = 0.8;\r\n m.tensionY = 1;\r\n m.stroke = color(\"#3cabff\");\r\n var a = _this.createChild(Polyspline);\r\n a.shouldClone = false;\r\n a.isMeasured = false;\r\n a.segments = [[{ x: 20 * d, y: 50 * d }, { x: 50 * d, y: 50 * d }, { x: 90 * d, y: 12 * d }, { x: 133 * d, y: 50 * d }, { x: 170 * d, y: 50 * d }, { x: 200 * d, y: 50 * d }]];\r\n a.strokeWidth = 6 * d;\r\n a.tensionX = 0.75;\r\n a.tensionY = 1;\r\n a.stroke = aStroke;\r\n _this._disposers.push(a);\r\n var desaturateFilter = new DesaturateFilter();\r\n _this.filters.push(desaturateFilter);\r\n var desaturateFilterHover = new DesaturateFilter();\r\n desaturateFilterHover.saturation = 1;\r\n var hoverState = _this.states.create(\"hover\");\r\n hoverState.properties.opacity = 1;\r\n hoverState.filters.push(desaturateFilterHover);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return AmChartsLogo;\r\n}(Container));\r\nexport { AmChartsLogo };\r\n","import { __read, __spread } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { system } from \"../System\";\r\nimport { registry } from \"../Registry\";\r\nimport { Container } from \"../Container\";\r\nimport { Component } from \"../Component\";\r\nimport { Paper } from \"../rendering/Paper\";\r\nimport { SVGContainer, svgContainers } from \"../rendering/SVGContainer\";\r\nimport { FocusFilter } from \"../rendering/filters/FocusFilter\";\r\nimport { Preloader } from \"../elements/Preloader\";\r\nimport { AmChartsLogo } from \"../elements/AmChartsLogo\";\r\nimport { Tooltip } from \"../elements/Tooltip\";\r\nimport { Disposer, MultiDisposer } from \"../utils/Disposer\";\r\nimport { percent } from \"./Percent\";\r\nimport { options } from \"../Options\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\nimport * as $dom from \"./DOM\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $log from \"./Log\";\r\n/**\r\n * ============================================================================\r\n * INSTANTIATION FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates all HTML and SVG containers needed for the chart instance, as well\r\n * as the new [[Sprite]] (as specified in `classType` parameter).\r\n *\r\n * @param htmlElement A container to creat elements in\r\n * @param classType A class definition of the new element to create\r\n * @return Newly-created Sprite object\r\n */\r\nfunction createChild(htmlElement, classType) {\r\n var htmlContainer = $dom.getElement(htmlElement);\r\n // If there's no container available yet, we create a fake one\r\n var tmpContainer = false;\r\n if (!htmlContainer) {\r\n htmlContainer = document.createElement(\"div\");\r\n htmlContainer.style.width = \"200px\";\r\n htmlContainer.style.height = \"200px\";\r\n htmlContainer.style.top = \"0\";\r\n htmlContainer.style.left = \"0\";\r\n htmlContainer.style.visibility = \"hidden\";\r\n htmlContainer.style.position = \"absolute\";\r\n document.body.appendChild(htmlContainer);\r\n tmpContainer = true;\r\n }\r\n if (htmlContainer) {\r\n htmlContainer.innerHTML = \"\";\r\n //htmlContainer.style.overflow = \"hidden\";\r\n var svgDiv_1 = new SVGContainer(htmlContainer);\r\n var paper = new Paper(svgDiv_1.SVGContainer, \"svg-\" + (svgContainers.length - 1));\r\n // the approach with masks is chosen because overflow:visible is set on SVG element in order tooltips could go outside\r\n // svg area - this is often needed when working with small charts.\r\n // main container which holds content container and tooltips container\r\n var container_1 = new Container();\r\n container_1.htmlContainer = htmlContainer;\r\n container_1.svgContainer = svgDiv_1;\r\n container_1.width = percent(100);\r\n container_1.height = percent(100);\r\n container_1.background.fillOpacity = 0;\r\n container_1.paper = paper;\r\n paper.append(container_1.group);\r\n // Set up moving to proper element container if it's not yet ready at call time\r\n if (tmpContainer) {\r\n $dom.ready(function () {\r\n container_1.moveHtmlContainer(htmlElement);\r\n });\r\n }\r\n // this is set from parent container, but this one doesn't have, so do it manually.\r\n container_1.relativeWidth = 1;\r\n container_1.relativeHeight = 1;\r\n svgDiv_1.container = container_1;\r\n // creating classType instance\r\n var sprite_1 = container_1.createChild(classType);\r\n sprite_1.topParent = container_1;\r\n var uid = sprite_1.uid;\r\n registry.invalidSprites[uid] = [];\r\n registry.invalidDatas[uid] = [];\r\n registry.invalidPositions[uid] = [];\r\n registry.invalidLayouts[uid] = [];\r\n container_1.baseId = uid;\r\n sprite_1.isBaseSprite = true;\r\n sprite_1.focusFilter = new FocusFilter();\r\n registry.baseSprites.push(sprite_1);\r\n registry.baseSpritesByUid[uid] = sprite_1;\r\n sprite_1.maskRectangle = { x: 0, y: 0, width: Math.max(svgDiv_1.width || 0, 0), height: Math.max(svgDiv_1.height || 0, 0) };\r\n // this solves issues with display:none, as all children are measured as 0x0\r\n container_1.events.on(\"maxsizechanged\", function (event) {\r\n if (event.previousWidth == 0 || event.previousHeight == 0) {\r\n container_1.deepInvalidate();\r\n }\r\n if (sprite_1.maskRectangle) {\r\n sprite_1.maskRectangle = { x: 0, y: 0, width: Math.max(svgDiv_1.width || 0, 0), height: Math.max(svgDiv_1.height || 0, 0) };\r\n }\r\n });\r\n var loopTimer_1 = null;\r\n // Checks to see whether the chart was properly disposed or not\r\n var loop_1 = function () {\r\n if (!sprite_1.isDisposed()) {\r\n if ($dom.getRoot(sprite_1.dom) == null) {\r\n if (options.autoDispose) {\r\n container_1.htmlContainer = undefined;\r\n svgDiv_1.htmlElement = undefined;\r\n sprite_1.dispose();\r\n }\r\n else {\r\n $log.warn(\"Chart was not disposed\", sprite_1.uid);\r\n }\r\n loopTimer_1 = null;\r\n }\r\n else {\r\n loopTimer_1 = window.setTimeout(loop_1, 1000);\r\n }\r\n }\r\n else {\r\n loopTimer_1 = null;\r\n }\r\n };\r\n loop_1();\r\n sprite_1.addDisposer(new Disposer(function () {\r\n if (loopTimer_1 !== null) {\r\n clearTimeout(loopTimer_1);\r\n }\r\n $array.remove(registry.baseSprites, sprite_1);\r\n registry.baseSpritesByUid[sprite_1.uid] = undefined;\r\n }));\r\n // TODO figure out a better way of doing this\r\n sprite_1.addDisposer(container_1);\r\n // tooltip container\r\n var tooltipContainer_1 = container_1.createChild(Container);\r\n tooltipContainer_1.topParent = container_1;\r\n tooltipContainer_1.width = percent(100);\r\n tooltipContainer_1.height = percent(100);\r\n tooltipContainer_1.isMeasured = false;\r\n container_1.tooltipContainer = tooltipContainer_1;\r\n sprite_1.tooltip = new Tooltip();\r\n sprite_1.tooltip.hide(0);\r\n sprite_1.tooltip.setBounds({ x: 0, y: 0, width: tooltipContainer_1.maxWidth, height: tooltipContainer_1.maxHeight });\r\n tooltipContainer_1.events.on(\"maxsizechanged\", function () {\r\n $type.getValue(sprite_1.tooltip).setBounds({ x: 0, y: 0, width: tooltipContainer_1.maxWidth, height: tooltipContainer_1.maxHeight });\r\n }, undefined, false);\r\n //@todo: maybe we don't need to create one by default but only on request?\r\n var preloader_1 = new Preloader();\r\n preloader_1.events.on(\"inited\", function () {\r\n preloader_1.__disabled = true;\r\n }, undefined, false);\r\n container_1.preloader = preloader_1;\r\n //if (!options.commercialLicense) {\r\n if (sprite_1 instanceof Container && !sprite_1.hasLicense()) {\r\n var logo_1 = tooltipContainer_1.createChild(AmChartsLogo);\r\n tooltipContainer_1.events.on(\"maxsizechanged\", function (ev) {\r\n if ((tooltipContainer_1.maxWidth <= 100) || (tooltipContainer_1.maxHeight <= 50)) {\r\n logo_1.hide();\r\n }\r\n else if (logo_1.isHidden || logo_1.isHiding) {\r\n logo_1.show();\r\n }\r\n }, undefined, false);\r\n sprite_1.logo = logo_1;\r\n logo_1.align = \"left\";\r\n logo_1.valign = \"bottom\";\r\n }\r\n $utils.used(sprite_1.numberFormatter); // need to create one.\r\n // Set this as an autonomouse instance\r\n // Controls like Preloader, Export will use this.\r\n container_1.isStandaloneInstance = true;\r\n if (options.onlyShowOnViewport) {\r\n if (!$dom.isElementInViewport(htmlContainer, options.viewportTarget)) {\r\n sprite_1.__disabled = true;\r\n sprite_1.tooltipContainer.__disabled = true;\r\n var disposers = [\r\n $dom.addEventListener(window, \"DOMContentLoaded\", function () { viewPortHandler(sprite_1); }),\r\n $dom.addEventListener(window, \"load\", function () { viewPortHandler(sprite_1); }),\r\n $dom.addEventListener(window, \"resize\", function () { viewPortHandler(sprite_1); }),\r\n $dom.addEventListener(window, \"scroll\", function () { viewPortHandler(sprite_1); })\r\n ];\r\n if (options.viewportTarget) {\r\n var targets = $type.isArray(options.viewportTarget) ? options.viewportTarget : options.viewportTarget ? [options.viewportTarget] : [];\r\n for (var i = 0; i < targets.length; i++) {\r\n var target = targets[i];\r\n disposers.push($dom.addEventListener(target, \"resize\", function () { viewPortHandler(sprite_1); }));\r\n disposers.push($dom.addEventListener(target, \"scroll\", function () { viewPortHandler(sprite_1); }));\r\n }\r\n }\r\n var disposer = new MultiDisposer(disposers);\r\n sprite_1.addDisposer(disposer);\r\n sprite_1.vpDisposer = disposer;\r\n }\r\n else if (options.queue) {\r\n addToQueue(sprite_1);\r\n }\r\n }\r\n else if (options.queue) {\r\n addToQueue(sprite_1);\r\n }\r\n return sprite_1;\r\n }\r\n else {\r\n system.log(\"html container not found\");\r\n throw new Error(\"html container not found\");\r\n }\r\n}\r\n/**\r\n * Disposes all of the currently active charts.\r\n */\r\nexport function disposeAllCharts() {\r\n while (registry.baseSprites.length !== 0) {\r\n registry.baseSprites.pop().dispose();\r\n }\r\n}\r\nexport function addToQueue(sprite) {\r\n if (registry.queue.indexOf(sprite) == -1) {\r\n sprite.__disabled = true;\r\n sprite.tooltipContainer.__disabled = true;\r\n sprite.events.disableType(\"appeared\");\r\n if (registry.queue.length == 0) {\r\n registry.events.once(\"exitframe\", function () {\r\n queueHandler(sprite);\r\n });\r\n system.requestFrame();\r\n }\r\n sprite.addDisposer(new Disposer(function () {\r\n removeFromQueue(sprite);\r\n }));\r\n registry.queue.push(sprite);\r\n }\r\n}\r\nexport function removeFromQueue(sprite) {\r\n var index = registry.queue.indexOf(sprite);\r\n if (index >= 0) {\r\n registry.queue.splice(registry.queue.indexOf(sprite), 1);\r\n var nextSprite = registry.queue[index];\r\n if (nextSprite) {\r\n queueHandler(nextSprite);\r\n }\r\n }\r\n}\r\n/**\r\n * Checks whether the chart was not initialized fully due to setting\r\n * of `onlyShowOnViewport`. If it hasn't and is now in the viewport\r\n * the chart will be initialized.\r\n *\r\n * @since 4.9.12\r\n * @param sprite Top-level chart object\r\n */\r\nexport function viewPortHandler(sprite) {\r\n if (sprite.__disabled && $dom.isElementInViewport(sprite.htmlContainer, options.viewportTarget)) {\r\n if (sprite.vpDisposer) {\r\n sprite.vpDisposer.dispose();\r\n }\r\n addToQueue(sprite);\r\n }\r\n}\r\nexport function queueHandler(sprite) {\r\n if (sprite && sprite.tooltipContainer) {\r\n sprite.__disabled = false;\r\n sprite.tooltipContainer.__disabled = false;\r\n sprite.events.enableType(\"appeared\");\r\n sprite.dispatch(\"removedfromqueue\");\r\n if (sprite.showOnInit) {\r\n sprite.events.on(\"appeared\", function () {\r\n removeFromQueue(sprite);\r\n });\r\n }\r\n if (sprite.vpDisposer) {\r\n sprite.vpDisposer.dispose();\r\n }\r\n if (sprite instanceof Container) {\r\n sprite.invalidateLabels();\r\n }\r\n if (sprite.tooltipContainer) {\r\n sprite.tooltipContainer.invalidateLayout();\r\n }\r\n if (sprite instanceof Component) {\r\n sprite.invalidateData();\r\n sprite.reinit();\r\n sprite.events.once(\"datavalidated\", function () {\r\n if (sprite.showOnInit) {\r\n sprite.appear();\r\n }\r\n else {\r\n removeFromQueue(sprite);\r\n }\r\n });\r\n }\r\n else {\r\n sprite.reinit();\r\n sprite.events.once(\"inited\", function () {\r\n removeFromQueue(sprite);\r\n });\r\n if (sprite.showOnInit) {\r\n sprite.appear();\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * A shortcut to creating a chart instance.\r\n *\r\n * The first argument is either a reference to or an id of a DOM element to be\r\n * used as a container for the chart.\r\n *\r\n * The second argument is the type reference of the chart type. (for plain\r\n * JavaScript users this can also be a string indicating chart type)\r\n *\r\n * ```TypeScript\r\n * let chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n * ```\r\n * ```JavaScript\r\n * // Can pass in chart type reference like this:\r\n * var chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // ... or chart class type as a string:\r\n * var chart = am4core.create(\"chartdiv\", \"PieChart\");\r\n * ```\r\n *\r\n * @param htmlElement Reference or id of the target container element\r\n * @param classType Class type of the target chart type\r\n * @return Chart instance\r\n */\r\nexport function create(htmlElement, classType) {\r\n // This is a nasty hack for the benefit of vanilla JS users, who do not\r\n // enjoy benefits of type-check anyway.\r\n // We're allowing passing in a name of the class rather than type reference\r\n // itself.\r\n var classError;\r\n if ($type.isString(classType)) {\r\n if ($type.hasValue(registry.registeredClasses[classType])) {\r\n classType = registry.registeredClasses[classType];\r\n }\r\n else {\r\n classType = registry.registeredClasses[\"Container\"];\r\n classError = new Error(\"Class [\" + classType + \"] is not loaded.\");\r\n }\r\n }\r\n // Create the chart\r\n var chart = createChild(htmlElement, classType);\r\n // Error?\r\n if (classError) {\r\n chart.raiseCriticalError(classError);\r\n }\r\n return chart;\r\n}\r\n/**\r\n * A shortcut to creating a chart from a config object.\r\n *\r\n * Example:\r\n *\r\n * ```TypeScript\r\n * let chart am4core.createFromConfig({ ... }, \"chartdiv\", am4charts.XYChart );\r\n * ```\r\n * ```JavaScript\r\n * var chart am4core.createFromConfig({ ... }, \"chartdiv\", \"XYChart\" );\r\n * ```\r\n *\r\n * If `chartType` parameter is not supplied it must be set in a config object,\r\n * via reference to chart type, e.g.:\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": am4charts.XYChart,\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": am4charts.XYChart,\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * Or via string: (if you are using JavaScript)\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * A `container` can either be a reference to an HTML container to put chart\r\n * in, or it's unique id.\r\n *\r\n * If `container` is not specified, it must be included in the config object:\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * \"container\": \"chartdiv\",\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * \"container\": \"chartdiv\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @param config Config object in property/value pairs\r\n * @param htmlElement Container reference or ID\r\n * @param objectType Chart type\r\n * @return A newly created chart instance\r\n * @todo Throw exception if type is not correct\r\n */\r\nexport function createFromConfig(config, htmlElement, classType) {\r\n // Extract chart type from config if necessary\r\n if (!$type.hasValue(classType)) {\r\n classType = config.type;\r\n delete config.type;\r\n }\r\n // Extract element from config if necessary\r\n if (!$type.hasValue(htmlElement)) {\r\n htmlElement = config.container;\r\n delete config.container;\r\n }\r\n // Check if we need to extract actual type reference\r\n var finalType;\r\n var classError;\r\n if ($type.isString(classType) && $type.hasValue(registry.registeredClasses[classType])) {\r\n finalType = registry.registeredClasses[classType];\r\n }\r\n else if (typeof classType !== \"function\") {\r\n finalType = Container;\r\n classError = new Error(\"Class [\" + classType + \"] is not loaded.\");\r\n }\r\n else {\r\n finalType = classType;\r\n }\r\n // Create the chart\r\n var chart = createChild(htmlElement, finalType);\r\n // Set config\r\n if (classError) {\r\n chart.raiseCriticalError(classError);\r\n }\r\n else {\r\n chart.config = config;\r\n }\r\n return chart;\r\n}\r\n/**\r\n * Useful in creating real queues form mult-chart creation.\r\n *\r\n * Accepts a reference to a function which crates and returns actual chart\r\n * object.\r\n *\r\n * It returns a `Promise` which you can use to catch chart instance once it's\r\n * created.\r\n *\r\n * ```TypeScript\r\n * am4core.createDeferred(function(div) {\r\n * // Create first chart\r\n * let chart = am4core.create(div, am4charts.XYChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv1\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n *\r\n * am4core.createDeferred(function(div) {\r\n * // Create second chart\r\n * let chart = am4core.create(div, am4charts.PieChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv2\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * am4core.createDeferred(function(div) {\r\n * // Create first chart\r\n * var chart = am4core.create(div, am4charts.XYChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv1\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n *\r\n * am4core.createDeferred(function(div) {\r\n * // Create second chart\r\n * var chart = am4core.create(div, am4charts.PieChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv2\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Deferred_daisy_chained_instantiation} for more information\r\n * @since 4.10.0\r\n * @param callback Callback function that creates chart\r\n * @param scope Scope to call callback in\r\n * @param ...rest Parameters to pass into callback\r\n * @return Promise with chart instance\r\n */\r\nexport function createDeferred(callback, scope) {\r\n var rest = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n rest[_i - 2] = arguments[_i];\r\n }\r\n return new Promise(function (resolve, reject) {\r\n registry.deferred.push({\r\n scope: scope,\r\n callback: callback,\r\n args: rest,\r\n resolve: resolve\r\n });\r\n if (registry.deferred.length == 1) {\r\n processNextDeferred();\r\n }\r\n });\r\n}\r\nfunction processNextDeferred() {\r\n var _a;\r\n var next = registry.deferred[0];\r\n if (next) {\r\n var sprite_2 = (_a = next.callback).call.apply(_a, __spread([next.scope], next.args));\r\n sprite_2.events.on(\"ready\", function () {\r\n next.resolve(sprite_2);\r\n registry.deferred.shift();\r\n if (options.deferredDelay) {\r\n setTimeout(processNextDeferred, options.deferredDelay);\r\n }\r\n else {\r\n processNextDeferred();\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Applies a theme to System, and subsequently all chart instances created\r\n * from that point forward.\r\n *\r\n * amCharts supports multiple themes. Calling `useTheme` multiple times will\r\n * make the System apply multiple themes, rather than overwrite previously\r\n * set one.\r\n *\r\n * This enables combining features from multiple themes on the same chart.\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * am4core.useTheme(am4themes.material);\r\n * am4core.useTheme(am4themes.animated);\r\n * ```\r\n * ```JavaScript\r\n * am4core.useTheme(am4themes.material);\r\n * am4core.useTheme(am4themes.animated);\r\n * ```\r\n *\r\n * The above will apply both the Material color and animation options to all\r\n * charts created.\r\n *\r\n * @param value A reference to a theme\r\n */\r\nexport function useTheme(value) {\r\n if (registry.themes.indexOf(value) === -1) {\r\n registry.themes.push(value);\r\n }\r\n}\r\n/**\r\n * Removes a theme from \"active themes\" list, so it won't get applied to any\r\n * charts created subsequently.\r\n *\r\n * @param value A reference to a theme\r\n */\r\nexport function unuseTheme(value) {\r\n $array.remove(registry.themes, value);\r\n}\r\n/**\r\n * Removes all \"active\" themes. Any charts created subsequently will not have\r\n * any theme applied to them.\r\n */\r\nexport function unuseAllThemes() {\r\n registry.themes = [];\r\n}\r\n/**\r\n * Adds a license, e.g.:\r\n *\r\n * ```TypeScript\r\n * am4core.addLicense(\"xxxxxxxx\");\r\n * ```\r\n * ```JavaScript\r\n * am4core.addLicense(\"xxxxxxxx\");\r\n * ```\r\n *\r\n * Multiple licenses can be added to cover for multiple products.\r\n *\r\n * @since 4.5.16\r\n * @param license License key\r\n */\r\nexport function addLicense(license) {\r\n options.licenses.push(license);\r\n}\r\n","import { is } from \"../core/Registry\";\r\nvar theme = function (object) {\r\n if (is(object, \"SpriteState\")) {\r\n object.transitionDuration = 400;\r\n }\r\n if (is(object, \"Component\")) {\r\n object.rangeChangeDuration = 500;\r\n object.interpolationDuration = 500;\r\n object.sequencedInterpolation = false;\r\n if (is(object, \"SankeyDiagram\")) {\r\n object.sequencedInterpolation = true;\r\n }\r\n if (is(object, \"FunnelSeries\")) {\r\n object.sequencedInterpolation = true;\r\n }\r\n }\r\n if (is(object, \"Chart\")) {\r\n object.defaultState.transitionDuration = 2000;\r\n object.hiddenState.transitionDuration = 1000;\r\n }\r\n if (is(object, \"Tooltip\")) {\r\n object.animationDuration = 400;\r\n object.defaultState.transitionDuration = 400;\r\n object.hiddenState.transitionDuration = 400;\r\n }\r\n if (is(object, \"Scrollbar\")) {\r\n object.animationDuration = 500;\r\n }\r\n if (is(object, \"Series\")) {\r\n object.defaultState.transitionDuration = 1000;\r\n object.hiddenState.transitionDuration = 700;\r\n object.hiddenState.properties.opacity = 1;\r\n object.showOnInit = true;\r\n }\r\n if (is(object, \"MapSeries\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n if (is(object, \"PercentSeries\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n if (is(object, \"FunnelSlice\")) {\r\n object.defaultState.transitionDuration = 800;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Slice\")) {\r\n object.defaultState.transitionDuration = 700;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Preloader\")) {\r\n object.hiddenState.transitionDuration = 2000;\r\n }\r\n if (is(object, \"Column\")) {\r\n object.defaultState.transitionDuration = 700;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Column3D\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n};\r\nexport default theme;\r\n","import { Entity } from \"./Entity\";\r\nimport { Color } from \"./Color\";\r\n/**\r\n * An object which holds list of colors and can generate new ones.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Color_sets} for more info\r\n */\r\nexport class ColorSet extends Entity {\r\n //protected _currentPass: number = 0;\r\n _afterNew() {\r\n // Applying themes because color set will not have parent\r\n super._afterNewApplyThemes();\r\n this._dirty[\"colors\"] = false;\r\n }\r\n _beforeChanged() {\r\n if (this.isDirty(\"colors\")) {\r\n this.reset();\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n generateColors() {\r\n this.setPrivate(\"currentPass\", this.getPrivate(\"currentPass\", 0) + 1);\r\n const pass = this.getPrivate(\"currentPass\");\r\n const colors = this.get(\"colors\", [this.get(\"baseColor\", Color.fromHex(0xff0000))]);\r\n if (!this.getPrivate(\"numColors\")) {\r\n this.setPrivate(\"numColors\", colors.length);\r\n }\r\n //const len = colors.length;\r\n const len = this.getPrivate(\"numColors\");\r\n //const start = len - this.getPrivate(\"numColors\")!;\r\n const start = 0;\r\n const passOptions = this.get(\"passOptions\");\r\n const reuse = this.get(\"reuse\");\r\n for (let i = start; i < len; i++) {\r\n if (reuse) {\r\n colors.push(colors[i]);\r\n }\r\n else {\r\n const hsl = colors[i].toHSL();\r\n let h = hsl.h + (passOptions.hue || 0) * pass;\r\n while (h > 1)\r\n h -= 1;\r\n let s = hsl.s + (passOptions.saturation || 0) * pass;\r\n //if (s > 1) s -= Math.floor(s);\r\n if (s > 1)\r\n s = 1;\r\n if (s < 0)\r\n s = 0;\r\n let l = hsl.l + (passOptions.lightness || 0) * pass;\r\n //if (l > 1) l -= Math.floor(l);\r\n while (l > 1)\r\n l -= 1;\r\n colors.push(Color.fromHSL(h, s, l));\r\n }\r\n }\r\n }\r\n /**\r\n * Returns a [[Color]] at specific index.\r\n *\r\n * If there's no color at this index, a new color is generated.\r\n *\r\n * @param index Index\r\n * @return Color\r\n */\r\n getIndex(index) {\r\n const colors = this.get(\"colors\", []);\r\n const saturation = this.get(\"saturation\");\r\n if (index >= colors.length) {\r\n this.generateColors();\r\n return this.getIndex(index);\r\n }\r\n return saturation != null ? Color.saturate(colors[index], saturation) : colors[index];\r\n }\r\n /**\r\n * Returns next [[Color]] in the list.\r\n *\r\n * If the list is out of colors, new ones are generated dynamically.\r\n */\r\n next() {\r\n let currentStep = this.getPrivate(\"currentStep\", this.get(\"startIndex\", 0));\r\n this.setPrivate(\"currentStep\", currentStep + this.get(\"step\", 1));\r\n return this.getIndex(currentStep);\r\n }\r\n /**\r\n * Resets counter to the start of the list, so the next call for `next()` will\r\n * return the first color.\r\n */\r\n reset() {\r\n this.setPrivate(\"currentStep\", this.get(\"startIndex\", 0));\r\n this.setPrivate(\"currentPass\", 0);\r\n }\r\n}\r\nObject.defineProperty(ColorSet, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"ColorSet\"\r\n});\r\nObject.defineProperty(ColorSet, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([ColorSet.className])\r\n});\r\n","import { Theme } from \"../../core/Theme\";\r\nimport { percent, p50, p100 } from \"../../core/util/Percent\";\r\nimport { Color } from \"../../core/util/Color\";\r\nimport { ColorSet } from \"../../core/util/ColorSet\";\r\nimport { setColor } from \"../../themes/DefaultTheme\";\r\nimport * as $time from \"../../core/util/Time\";\r\nimport * as $type from \"../../core/util/Type\";\r\nimport * as $math from \"../../core/util/Math\";\r\nimport * as $object from \"../../core/util/Object\";\r\nimport * as $array from \"../../core/util/Array\";\r\n/**\r\n * @ignore\r\n */\r\nexport class XYChartDefaultTheme extends Theme {\r\n setupDefaultRules() {\r\n super.setupDefaultRules();\r\n const ic = this._root.interfaceColors;\r\n const language = this._root.language;\r\n const r = this.rule.bind(this);\r\n /**\r\n * ========================================================================\r\n * charts/xy\r\n * ========================================================================\r\n */\r\n r(\"XYChart\").setAll({\r\n colors: ColorSet.new(this._root, {}),\r\n paddingLeft: 20,\r\n paddingRight: 20,\r\n paddingTop: 16,\r\n paddingBottom: 16,\r\n panX: false,\r\n panY: false,\r\n wheelStep: 0.25,\r\n arrangeTooltips: true,\r\n pinchZoomX: false,\r\n pinchZoomY: false\r\n });\r\n r(\"XYSeries\").setAll({\r\n legendLabelText: \"{name}\"\r\n });\r\n r(\"Rectangle\", [\"plotbackground\", \"xy\", \"background\"]).setAll({\r\n fill: Color.fromHex(0x000000),\r\n fillOpacity: 0\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: XYChartScrollbar\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"XYChart\", [\"scrollbar\", \"chart\"]).setAll({\r\n paddingBottom: 0,\r\n paddingLeft: 0,\r\n paddingTop: 0,\r\n paddingRight: 0,\r\n colors: ColorSet.new(this._root, {\r\n saturation: 0\r\n })\r\n });\r\n {\r\n const rule = r(\"Graphics\", [\"scrollbar\", \"overlay\"]);\r\n rule.setAll({\r\n fillOpacity: 0.5\r\n });\r\n setColor(rule, \"fill\", ic, \"background\");\r\n }\r\n // Class: RoundedRectangle\r\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"thumb\"]).setAll({\r\n cornerRadiusTR: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusBL: 0,\r\n fillOpacity: 0,\r\n focusable: true\r\n });\r\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"thumb\"]).states.create(\"hover\", { fillOpacity: 0.4 });\r\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"chart\", \"background\"]).setAll({\r\n cornerRadiusTL: 0,\r\n cornerRadiusBL: 0,\r\n cornerRadiusTR: 0,\r\n cornerRadiusBR: 0\r\n });\r\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"chart\", \"background\", \"resize\", \"button\"]).setAll({\r\n cornerRadiusBL: 40,\r\n cornerRadiusBR: 40,\r\n cornerRadiusTL: 40,\r\n cornerRadiusTR: 40\r\n });\r\n r(\"AxisRendererX\", [\"xy\", \"chart\", \"scrollbar\"]).setAll({\r\n strokeOpacity: 0,\r\n inside: true\r\n });\r\n r(\"AxisRendererY\", [\"xy\", \"chart\", \"scrollbar\"]).setAll({\r\n strokeOpacity: 0,\r\n inside: true,\r\n minGridDistance: 5\r\n });\r\n r(\"AxisLabel\", [\"xy\", \"scrollbar\", \"x\"]).setAll({\r\n opacity: 0.5,\r\n centerY: p100,\r\n minPosition: 0.01,\r\n maxPosition: 0.99,\r\n fontSize: \"0.8em\"\r\n });\r\n r(\"AxisLabel\", [\"category\"]).setAll({\r\n text: \"{category}\",\r\n populateText: true\r\n });\r\n r(\"AxisLabel\", [\"x\"]).setAll({\r\n centerY: 0\r\n });\r\n r(\"AxisLabel\", [\"x\", \"inside\"]).setAll({\r\n centerY: p100\r\n });\r\n r(\"AxisLabel\", [\"x\", \"inside\", \"opposite\"]).setAll({\r\n centerY: 0\r\n });\r\n r(\"AxisLabel\", [\"x\", \"opposite\"]).setAll({\r\n centerY: p100\r\n });\r\n r(\"AxisLabel\", [\"y\"]).setAll({\r\n centerX: p100\r\n });\r\n r(\"AxisLabel\", [\"y\", \"inside\"]).setAll({\r\n centerX: 0\r\n });\r\n r(\"AxisLabel\", [\"y\", \"inside\", \"opposite\"]).setAll({\r\n centerX: p100\r\n });\r\n r(\"AxisLabel\", [\"y\", \"opposite\"]).setAll({\r\n centerX: 0\r\n });\r\n r(\"AxisLabel\", [\"minor\"]).setAll({\r\n fontSize: \"0.6em\"\r\n });\r\n r(\"AxisLabel\", [\"xy\", \"scrollbar\", \"y\"]).setAll({\r\n visible: false\r\n });\r\n // Class: Grid\r\n r(\"Grid\", [\"xy\", \"scrollbar\", \"y\"]).setAll({\r\n visible: false\r\n });\r\n // Class: Grid\r\n r(\"Grid\", [\"xy\", \"scrollbar\", \"x\"]).setAll({\r\n opacity: 0.5\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: Cursor\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"XYCursor\").setAll({\r\n behavior: \"none\",\r\n layer: 30,\r\n exportable: false,\r\n snapToSeriesBy: \"xy\",\r\n moveThreshold: 1\r\n });\r\n {\r\n const rule = r(\"Grid\", [\"cursor\", \"x\"]);\r\n rule.setAll({\r\n forceInactive: true,\r\n strokeOpacity: 0.8,\r\n strokeDasharray: [2, 2],\r\n role: \"slider\",\r\n ariaLabel: language.translate(\"Use left and right arrows to move selection\")\r\n });\r\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\r\n }\r\n {\r\n const rule = r(\"Grid\", [\"cursor\", \"y\"]);\r\n rule.setAll({\r\n forceInactive: true,\r\n strokeOpacity: 0.8,\r\n strokeDasharray: [2, 2],\r\n role: \"slider\",\r\n ariaLabel: language.translate(\"Use up and down arrows to move selection\")\r\n });\r\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"cursor\", \"selection\"]);\r\n rule.setAll({\r\n fillOpacity: 0.15,\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: Axes\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Axis\").setAll({\r\n start: 0,\r\n end: 1,\r\n minZoomCount: 1,\r\n maxZoomCount: Infinity,\r\n maxZoomFactor: 1000,\r\n maxDeviation: 0.1,\r\n snapTooltip: true,\r\n tooltipLocation: 0.5,\r\n panX: true,\r\n panY: true,\r\n zoomX: true,\r\n zoomY: true,\r\n fixAxisSize: true\r\n });\r\n r(\"AxisLabel\").setAll({\r\n location: 0.5,\r\n multiLocation: 0,\r\n centerX: p50,\r\n centerY: p50,\r\n paddingTop: 3,\r\n paddingBottom: 3,\r\n paddingLeft: 5,\r\n paddingRight: 5\r\n });\r\n // The following is deprecated following text measuring updates in 5.0.5\r\n // r(\"AxisLabel\", [\"y\"]).setAll({\r\n // \ttextAlign: \"right\"\r\n // });\r\n // r(\"AxisLabel\", [\"y\", \"opposite\"]).setAll({\r\n // \ttextAlign: \"left\"\r\n // });\r\n r(\"Container\", [\"axis\", \"header\"]).setAll({\r\n layer: 30\r\n });\r\n r(\"Rectangle\", [\"axis\", \"header\", \"background\"]).setAll({\r\n crisp: true\r\n });\r\n {\r\n const rule = r(\"AxisRenderer\");\r\n rule.setAll({\r\n crisp: true,\r\n strokeOpacity: 0\r\n });\r\n setColor(rule, \"stroke\", ic, \"grid\");\r\n }\r\n r(\"AxisRendererX\").setAll({\r\n minGridDistance: 120,\r\n opposite: false,\r\n inversed: false,\r\n cellStartLocation: 0,\r\n cellEndLocation: 1,\r\n width: p100\r\n });\r\n r(\"AxisRendererY\").setAll({\r\n minGridDistance: 40,\r\n opposite: false,\r\n inversed: false,\r\n cellStartLocation: 0,\r\n cellEndLocation: 1,\r\n height: p100\r\n });\r\n {\r\n const rule = r(\"Rectangle\", [\"axis\", \"thumb\"]);\r\n rule.setAll({\r\n fillOpacity: 0\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\r\n rule.states.create(\"hover\", { fillOpacity: 0.1 });\r\n }\r\n r(\"Rectangle\", [\"axis\", \"thumb\", \"x\"]).setAll({\r\n cursorOverStyle: \"ew-resize\"\r\n });\r\n r(\"Rectangle\", [\"axis\", \"thumb\", \"y\"]).setAll({\r\n cursorOverStyle: \"ns-resize\"\r\n });\r\n {\r\n const rule = r(\"Grid\");\r\n rule.setAll({\r\n location: 0,\r\n strokeOpacity: 0.15,\r\n crisp: true\r\n });\r\n setColor(rule, \"stroke\", ic, \"grid\");\r\n }\r\n {\r\n const rule = r(\"Grid\", [\"minor\"]);\r\n rule.setAll({\r\n location: 0,\r\n strokeOpacity: 0.07,\r\n crisp: true\r\n });\r\n setColor(rule, \"stroke\", ic, \"grid\");\r\n }\r\n r(\"Grid\", [\"base\"]).setAll({\r\n strokeOpacity: 0.3\r\n });\r\n {\r\n const rule = r(\"Graphics\", [\"axis\", \"fill\"]);\r\n rule.setAll({\r\n visible: false,\r\n isMeasured: false,\r\n position: \"absolute\",\r\n fillOpacity: 0.05,\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\r\n }\r\n r(\"Graphics\", [\"axis\", \"fill\", \"range\"]).setAll({\r\n isMeasured: true\r\n });\r\n // hides all elements of series axis range\r\n r(\"Graphics\", [\"series\", \"fill\", \"range\"]).setAll({\r\n visible: false,\r\n isMeasured: true\r\n });\r\n r(\"Grid\", [\"series\", \"range\"]).setAll({\r\n visible: false\r\n });\r\n r(\"AxisTick\", [\"series\", \"range\"]).setAll({\r\n visible: false\r\n });\r\n r(\"AxisLabel\", [\"series\", \"range\"]).setAll({\r\n visible: false\r\n });\r\n {\r\n const rule = r(\"AxisTick\");\r\n rule.setAll({\r\n location: 0.5,\r\n multiLocation: 0,\r\n strokeOpacity: 1,\r\n isMeasured: false,\r\n position: \"absolute\",\r\n visible: false\r\n });\r\n setColor(rule, \"stroke\", ic, \"grid\");\r\n }\r\n r(\"CategoryAxis\").setAll({\r\n startLocation: 0,\r\n endLocation: 1,\r\n fillRule: (dataItem, index) => {\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n if (!$type.isNumber(index) || index % 2 == 0) {\r\n axisFill.setPrivate(\"visible\", true);\r\n }\r\n else {\r\n axisFill.setPrivate(\"visible\", false);\r\n }\r\n }\r\n }\r\n });\r\n const gridIntervals = [\r\n { timeUnit: \"millisecond\", count: 1 },\r\n { timeUnit: \"millisecond\", count: 5 },\r\n { timeUnit: \"millisecond\", count: 10 },\r\n { timeUnit: \"millisecond\", count: 50 },\r\n { timeUnit: \"millisecond\", count: 100 },\r\n { timeUnit: \"millisecond\", count: 500 },\r\n { timeUnit: \"second\", count: 1 },\r\n { timeUnit: \"second\", count: 5 },\r\n { timeUnit: \"second\", count: 10 },\r\n { timeUnit: \"second\", count: 30 },\r\n { timeUnit: \"minute\", count: 1 },\r\n { timeUnit: \"minute\", count: 5 },\r\n { timeUnit: \"minute\", count: 10 },\r\n { timeUnit: \"minute\", count: 15 },\r\n { timeUnit: \"minute\", count: 30 },\r\n { timeUnit: \"hour\", count: 1 },\r\n { timeUnit: \"hour\", count: 3 },\r\n { timeUnit: \"hour\", count: 6 },\r\n { timeUnit: \"hour\", count: 12 },\r\n { timeUnit: \"day\", count: 1 },\r\n { timeUnit: \"day\", count: 2 },\r\n { timeUnit: \"day\", count: 3 },\r\n { timeUnit: \"day\", count: 4 },\r\n { timeUnit: \"day\", count: 5 },\r\n { timeUnit: \"week\", count: 1 },\r\n { timeUnit: \"month\", count: 1 },\r\n { timeUnit: \"month\", count: 2 },\r\n { timeUnit: \"month\", count: 3 },\r\n { timeUnit: \"month\", count: 6 },\r\n { timeUnit: \"year\", count: 1 },\r\n { timeUnit: \"year\", count: 2 },\r\n { timeUnit: \"year\", count: 5 },\r\n { timeUnit: \"year\", count: 10 },\r\n { timeUnit: \"year\", count: 50 },\r\n { timeUnit: \"year\", count: 100 },\r\n { timeUnit: \"year\", count: 200 },\r\n { timeUnit: \"year\", count: 500 },\r\n { timeUnit: \"year\", count: 1000 },\r\n { timeUnit: \"year\", count: 2000 },\r\n { timeUnit: \"year\", count: 5000 },\r\n { timeUnit: \"year\", count: 10000 },\r\n { timeUnit: \"year\", count: 100000 }\r\n ];\r\n const dateFormats = {\r\n \"millisecond\": language.translate(\"_date_millisecond\"),\r\n \"second\": language.translate(\"_date_second\"),\r\n \"minute\": language.translate(\"_date_minute\"),\r\n \"hour\": language.translate(\"_date_hour\"),\r\n \"day\": language.translate(\"_date_day\"),\r\n \"week\": language.translate(\"_date_day\"),\r\n \"month\": language.translate(\"_date_month\"),\r\n \"year\": language.translate(\"_date_year\")\r\n };\r\n const periodChangeDateFormats = {\r\n \"millisecond\": language.translate(\"_date_millisecond\"),\r\n \"second\": language.translate(\"_date_second\"),\r\n \"minute\": language.translate(\"_date_minute\"),\r\n \"hour\": language.translate(\"_date_day\"),\r\n \"day\": language.translate(\"_date_day\"),\r\n \"week\": language.translate(\"_date_day\"),\r\n \"month\": language.translate(\"_date_month\") + \" \" + language.translate(\"_date_year\"),\r\n \"year\": language.translate(\"_date_year\")\r\n };\r\n const tooltipDateFormats = {\r\n \"millisecond\": language.translate(\"_date_millisecond_full\"),\r\n \"second\": language.translate(\"_date_second_full\"),\r\n \"minute\": language.translate(\"_date_minute_full\"),\r\n \"hour\": language.translate(\"_date_hour_full\"),\r\n \"day\": language.translate(\"_date_day_full\"),\r\n \"week\": language.translate(\"_date_week_full\"),\r\n \"month\": language.translate(\"_date_month_full\"),\r\n \"year\": language.translate(\"_date_year\")\r\n };\r\n r(\"CategoryDateAxis\").setAll({\r\n markUnitChange: true,\r\n gridIntervals: $array.copy(gridIntervals),\r\n dateFormats: $object.copy(dateFormats),\r\n periodChangeDateFormats: $object.copy(periodChangeDateFormats)\r\n });\r\n r(\"DateAxis\").setAll({\r\n maxZoomFactor: null,\r\n strictMinMax: true,\r\n startLocation: 0,\r\n endLocation: 1,\r\n markUnitChange: true,\r\n groupData: false,\r\n groupCount: 500,\r\n gridIntervals: $array.copy(gridIntervals),\r\n dateFormats: $object.copy(dateFormats),\r\n periodChangeDateFormats: $object.copy(periodChangeDateFormats),\r\n tooltipDateFormats: tooltipDateFormats,\r\n groupIntervals: [\r\n { timeUnit: \"millisecond\", count: 1 },\r\n { timeUnit: \"millisecond\", count: 10 },\r\n { timeUnit: \"millisecond\", count: 100 },\r\n { timeUnit: \"second\", count: 1 },\r\n { timeUnit: \"second\", count: 10 },\r\n { timeUnit: \"minute\", count: 1 },\r\n { timeUnit: \"minute\", count: 10 },\r\n { timeUnit: \"hour\", count: 1 },\r\n { timeUnit: \"day\", count: 1 },\r\n { timeUnit: \"week\", count: 1 },\r\n { timeUnit: \"month\", count: 1 },\r\n { timeUnit: \"year\", count: 1 }\r\n ],\r\n fillRule: (dataItem) => {\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n const axis = dataItem.component;\r\n const value = dataItem.get(\"value\");\r\n const endValue = dataItem.get(\"endValue\");\r\n const intervalDuration = axis.intervalDuration();\r\n const baseInterval = axis.getPrivate(\"baseInterval\");\r\n const gridInterval = axis.getPrivate(\"gridInterval\", baseInterval);\r\n let min = axis.getPrivate(\"min\", 0);\r\n min = $time.round(new Date(min), gridInterval.timeUnit, gridInterval.count, this._root.locale.firstDayOfWeek, this._root.utc, undefined, this._root.timezone).getTime();\r\n if (value != null && endValue != null) {\r\n const val = Math.round(Math.round((value - min) / intervalDuration)) / 2;\r\n if (val == Math.round(val)) {\r\n axisFill.setPrivate(\"visible\", true);\r\n }\r\n else {\r\n axisFill.setPrivate(\"visible\", false);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n r(\"GaplessDateAxis\").setAll({\r\n fillRule: (dataItem) => {\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n const index = dataItem.get(\"index\");\r\n let visible = false;\r\n if (!$type.isNumber(index) || index % 2 == 0) {\r\n visible = true;\r\n }\r\n axisFill.setPrivate(\"visible\", visible);\r\n }\r\n }\r\n });\r\n r(\"ValueAxis\").setAll({\r\n baseValue: 0,\r\n logarithmic: false,\r\n strictMinMax: false,\r\n autoZoom: true,\r\n fillRule: (dataItem) => {\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n const axis = dataItem.component;\r\n const value = dataItem.get(\"value\");\r\n const step = axis.getPrivate(\"step\");\r\n if ($type.isNumber(value) && $type.isNumber(step)) {\r\n if ($math.round(value / step / 2, 5) == Math.round(value / step / 2)) {\r\n axisFill.setPrivate(\"visible\", false);\r\n }\r\n else {\r\n axisFill.setPrivate(\"visible\", true);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n r(\"DurationAxis\").setAll({\r\n baseUnit: \"second\"\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: Series\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"XYSeries\").setAll({\r\n maskBullets: true,\r\n stackToNegative: true,\r\n locationX: 0.5,\r\n locationY: 0.5,\r\n snapTooltip: false,\r\n openValueXGrouped: \"open\",\r\n openValueYGrouped: \"open\",\r\n valueXGrouped: \"close\",\r\n valueYGrouped: \"close\",\r\n seriesTooltipTarget: \"series\"\r\n });\r\n r(\"BaseColumnSeries\").setAll({\r\n adjustBulletPosition: true\r\n });\r\n r(\"ColumnSeries\").setAll({\r\n clustered: true\r\n });\r\n r(\"RoundedRectangle\", [\"series\", \"column\"]).setAll({\r\n position: \"absolute\",\r\n isMeasured: false,\r\n width: percent(70),\r\n height: percent(70),\r\n strokeWidth: 1,\r\n strokeOpacity: 1,\r\n cornerRadiusBL: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTR: 0,\r\n fillOpacity: 1,\r\n role: \"figure\"\r\n });\r\n r(\"LineSeries\").setAll({\r\n connect: true,\r\n autoGapCount: 1.1,\r\n stackToNegative: false\r\n });\r\n r(\"Graphics\", [\"series\", \"stroke\"]).setAll({\r\n position: \"absolute\",\r\n strokeWidth: 1,\r\n strokeOpacity: 1,\r\n isMeasured: false\r\n });\r\n r(\"Graphics\", [\"series\", \"fill\"]).setAll({\r\n visible: false,\r\n fillOpacity: 0,\r\n position: \"absolute\",\r\n strokeWidth: 0,\r\n strokeOpacity: 0,\r\n isMeasured: false\r\n });\r\n r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"stroke\"]).setAll({\r\n draw: (display, sprite) => {\r\n const parent = sprite.parent;\r\n if (parent) {\r\n const h = parent.height();\r\n const w = parent.width();\r\n display.moveTo(0, h / 2);\r\n display.lineTo(w, h / 2);\r\n }\r\n }\r\n });\r\n {\r\n const rule = r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"stroke\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"stroke\", ic, \"disabled\");\r\n }\r\n r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"fill\"]).setAll({\r\n draw: (display, sprite) => {\r\n const parent = sprite.parent;\r\n if (parent) {\r\n const h = parent.height();\r\n const w = parent.width();\r\n display.moveTo(0, 0);\r\n display.lineTo(w, 0);\r\n display.lineTo(w, h);\r\n display.lineTo(0, h);\r\n display.lineTo(0, 0);\r\n }\r\n }\r\n });\r\n {\r\n const rule = r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"fill\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"stroke\", ic, \"disabled\");\r\n }\r\n r(\"SmoothedXYLineSeries\").setAll({\r\n tension: 0.5\r\n });\r\n r(\"SmoothedXLineSeries\").setAll({\r\n tension: 0.5\r\n });\r\n r(\"SmoothedYLineSeries\").setAll({\r\n tension: 0.5\r\n });\r\n r(\"Candlestick\").setAll({\r\n position: \"absolute\",\r\n isMeasured: false,\r\n width: percent(50),\r\n height: percent(50),\r\n strokeWidth: 1,\r\n strokeOpacity: 1,\r\n cornerRadiusBL: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTR: 0,\r\n fillOpacity: 1,\r\n role: \"figure\"\r\n });\r\n r(\"OHLC\").setAll({\r\n width: percent(80),\r\n height: percent(80)\r\n });\r\n r(\"CandlestickSeries\").setAll({\r\n lowValueXGrouped: \"low\",\r\n lowValueYGrouped: \"low\",\r\n highValueXGrouped: \"high\",\r\n highValueYGrouped: \"high\",\r\n openValueXGrouped: \"open\",\r\n openValueYGrouped: \"open\",\r\n valueXGrouped: \"close\",\r\n valueYGrouped: \"close\"\r\n });\r\n // These rules can be used for regular columns, too\r\n {\r\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\"]).states.create(\"riseFromOpen\", {});\r\n setColor(rule, \"fill\", ic, \"positive\");\r\n setColor(rule, \"stroke\", ic, \"positive\");\r\n }\r\n {\r\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\"]).states.create(\"dropFromOpen\", {});\r\n setColor(rule, \"fill\", ic, \"negative\");\r\n setColor(rule, \"stroke\", ic, \"negative\");\r\n }\r\n // Hollow\r\n r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"riseFromOpen\", { fillOpacity: 0 });\r\n r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"dropFromOpen\", { fillOpacity: 1 });\r\n {\r\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"riseFromPrevious\", {});\r\n setColor(rule, \"fill\", ic, \"positive\");\r\n setColor(rule, \"stroke\", ic, \"positive\");\r\n }\r\n {\r\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"dropFromPrevious\", {});\r\n setColor(rule, \"fill\", ic, \"negative\");\r\n setColor(rule, \"stroke\", ic, \"negative\");\r\n }\r\n // AXIS RANGE GRIP\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"rangegrip\"]);\r\n rule.setAll({\r\n strokeOpacity: 0,\r\n fillOpacity: 0,\r\n strokeWidth: 1,\r\n width: 12,\r\n height: 12\r\n });\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"rangegrip\", \"button\", \"icon\"]);\r\n rule.setAll({\r\n interactive: false,\r\n crisp: true,\r\n strokeOpacity: 0.5,\r\n draw: (display) => {\r\n display.moveTo(0, 0.5);\r\n display.lineTo(0, 12.5);\r\n display.moveTo(2, 0.5);\r\n display.lineTo(2, 12.5);\r\n display.moveTo(4, 0.5);\r\n display.lineTo(4, 12.5);\r\n }\r\n });\r\n setColor(rule, \"stroke\", ic, \"secondaryButtonText\");\r\n }\r\n r(\"Button\", [\"rangegrip\"]).setAll({\r\n draggable: true,\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n });\r\n r(\"Button\", [\"rangegrip\", \"vertical\"]).setAll({\r\n rotation: 90,\r\n cursorOverStyle: \"ns-resize\",\r\n centerX: p50\r\n });\r\n r(\"Button\", [\"rangegrip\", \"horizontal\"]).setAll({\r\n cursorOverStyle: \"ew-resize\",\r\n centerX: p50\r\n });\r\n r(\"Button\", [\"rangegrip\", \"vertical\", \"left\"]).setAll({\r\n centerY: p100\r\n });\r\n r(\"Button\", [\"rangegrip\", \"vertical\", \"right\"]).setAll({\r\n centerY: 0\r\n });\r\n r(\"Button\", [\"rangegrip\", \"horizontal\", \"top\"]).setAll({\r\n centerY: 0\r\n });\r\n r(\"Button\", [\"rangegrip\", \"horizontal\", \"bottom\"]).setAll({\r\n centerY: p100\r\n });\r\n }\r\n}\r\n","import { Container } from \"../../core/render/Container\";\r\nimport { p100 } from \"../../core/util/Percent\";\r\n/**\r\n * A base class for all charts.\r\n */\r\nexport class Chart extends Container {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * A [[Container]] chart places its elements in.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"chartContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, { width: p100, height: p100, interactiveChildren: false }))\r\n });\r\n /**\r\n * A [[Container]] chart places its bullets in.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"bulletsContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.new(this._root, { interactiveChildren: false, isMeasured: false, position: \"absolute\", width: p100, height: p100 })\r\n });\r\n }\r\n}\r\nObject.defineProperty(Chart, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Chart\"\r\n});\r\nObject.defineProperty(Chart, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Chart.className])\r\n});\r\n","import { Chart } from \"./Chart\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { ListAutoDispose } from \"../../core/util/List\";\r\nimport { p100 } from \"../../core/util/Percent\";\r\nimport * as $array from \"../../core/util/Array\";\r\n/**\r\n * A base class for all series-based charts.\r\n */\r\nexport class SerialChart extends Chart {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * A [[Container]] where chart will store all series.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"seriesContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.new(this._root, { width: p100, height: p100, isMeasured: false })\r\n });\r\n /**\r\n * A list of chart's series.\r\n */\r\n Object.defineProperty(this, \"series\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListAutoDispose()\r\n });\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this._disposers.push(this.series);\r\n const children = this.seriesContainer.children;\r\n this._disposers.push(this.series.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n $array.each(change.oldValues, (series) => {\r\n this._removeSeries(series);\r\n });\r\n const colors = this.get(\"colors\");\r\n if (colors) {\r\n colors.reset();\r\n }\r\n }\r\n else if (change.type === \"push\") {\r\n children.moveValue(change.newValue);\r\n this._processSeries(change.newValue);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n children.setIndex(change.index, change.newValue);\r\n this._processSeries(change.newValue);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n children.insertIndex(change.index, change.newValue);\r\n this._processSeries(change.newValue);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this._removeSeries(change.oldValue);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n children.moveValue(change.value, change.newIndex);\r\n this._processSeries(change.value);\r\n }\r\n else {\r\n throw new Error(\"Unknown IListEvent type\");\r\n }\r\n }));\r\n }\r\n _processSeries(series) {\r\n series.chart = this;\r\n series._placeBulletsContainer(this);\r\n }\r\n _removeSeries(series) {\r\n if (!series.isDisposed()) {\r\n this.seriesContainer.children.removeValue(series);\r\n series._removeBulletsContainer();\r\n }\r\n }\r\n}\r\nObject.defineProperty(SerialChart, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"SerialChart\"\r\n});\r\nObject.defineProperty(SerialChart, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Chart.classNames.concat([SerialChart.className])\r\n});\r\n",";\r\nimport { XYChartDefaultTheme } from \"./XYChartDefaultTheme\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Rectangle } from \"../../core/render/Rectangle\";\r\nimport { SerialChart } from \"../../core/render/SerialChart\";\r\nimport { ListAutoDispose } from \"../../core/util/List\";\r\nimport { p100 } from \"../../core/util/Percent\";\r\nimport { Button } from \"../../core/render/Button\";\r\nimport { Graphics } from \"../../core/render/Graphics\";\r\nimport { Percent } from \"../../core/util/Percent\";\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $type from \"../../core/util/Type\";\r\nimport * as $order from \"../../core/util/Order\";\r\nimport * as $object from \"../../core/util/Object\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\nimport * as $math from \"../../core/util/Math\";\r\n/**\r\n * Creates an XY chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/} for more info\r\n * @important\r\n */\r\nexport class XYChart extends SerialChart {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * A list of horizontal axes.\r\n */\r\n Object.defineProperty(this, \"xAxes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListAutoDispose()\r\n });\r\n /**\r\n * A list of vertical axes.\r\n */\r\n Object.defineProperty(this, \"yAxes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListAutoDispose()\r\n });\r\n /**\r\n * A [[Container]] located on top of the chart, used to store top horizontal\r\n * axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"topAxesContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.chartContainer.children.push(Container.new(this._root, { width: p100, layout: this._root.verticalLayout }))\r\n });\r\n /**\r\n * A [[Container]] located in the middle the chart, used to store vertical axes\r\n * and plot area container.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"yAxesAndPlotContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.chartContainer.children.push(Container.new(this._root, { width: p100, height: p100, layout: this._root.horizontalLayout }))\r\n });\r\n /**\r\n * A [[Container]] located on bottom of the chart, used to store bottom\r\n * horizontal axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"bottomAxesContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.chartContainer.children.push(Container.new(this._root, { width: p100, layout: this._root.verticalLayout }))\r\n });\r\n /**\r\n * A [[Container]] located on left of the chart, used to store left-hand\r\n * vertical axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"leftAxesContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.yAxesAndPlotContainer.children.push(Container.new(this._root, { height: p100, layout: this._root.horizontalLayout }))\r\n });\r\n /**\r\n * A [[Container]] located in the middle of the chart, used to store plotContainer and topPlotContainer\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"plotsContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.yAxesAndPlotContainer.children.push(Container.new(this._root, { width: p100, height: p100, maskContent: false }))\r\n });\r\n /**\r\n * A [[Container]] located in the middle of the chart, used to store actual\r\n * plots (series).\r\n *\r\n * NOTE: `plotContainer` will automatically have its `background` preset. If\r\n * you need to modify background or outline for chart's plot area, you can\r\n * use `plotContainer.get(\"background\")` for that.*\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"plotContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.plotsContainer.children.push(Container.new(this._root, { width: p100, height: p100 }))\r\n });\r\n /**\r\n * A [[Container]] used for any elements that need to be displayed over\r\n * regular `plotContainer`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"topPlotContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.plotsContainer.children.push(Container.new(this._root, { width: p100, height: p100 }))\r\n });\r\n /**\r\n * A [[Container]] axis grid elements are stored in.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"gridContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.plotContainer.children.push(Container.new(this._root, { width: p100, height: p100, isMeasured: false }))\r\n });\r\n /**\r\n * A [[Container]] axis background grid elements are stored in.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"topGridContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.new(this._root, { width: p100, height: p100, isMeasured: false })\r\n });\r\n /**\r\n * A [[Container]] located on right of the chart, used to store right-hand\r\n * vertical axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"rightAxesContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.yAxesAndPlotContainer.children.push(Container.new(this._root, { height: p100, layout: this._root.horizontalLayout }))\r\n });\r\n /**\r\n * A [[Container]] axis headers are stored in.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-headers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"axisHeadersContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.plotContainer.children.push(Container.new(this._root, {}))\r\n });\r\n /**\r\n * A button that is shown when chart is not fully zoomed out.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/zoom-and-pan/#Zoom_out_button} for more info\r\n * @default Button.new()\r\n */\r\n Object.defineProperty(this, \"zoomOutButton\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.topPlotContainer.children.push(Button.new(this._root, {\r\n themeTags: [\"zoom\"],\r\n icon: Graphics.new(this._root, {\r\n themeTags: [\"button\", \"icon\"]\r\n })\r\n }))\r\n });\r\n Object.defineProperty(this, \"_movePoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { x: 0, y: 0 }\r\n });\r\n Object.defineProperty(this, \"_wheelDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_otherCharts\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_movePoints\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_downStartX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downEndX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downStartY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downEndY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n this._defaultThemes.push(XYChartDefaultTheme.new(this._root));\r\n super._afterNew();\r\n this._disposers.push(this.xAxes);\r\n this._disposers.push(this.yAxes);\r\n const root = this._root;\r\n let verticalLayout = this._root.verticalLayout;\r\n const zoomOutButton = this.zoomOutButton;\r\n zoomOutButton.events.on(\"click\", () => {\r\n this.zoomOut();\r\n });\r\n zoomOutButton.hide(0);\r\n zoomOutButton.states.lookup(\"default\").set(\"opacity\", 1);\r\n this.chartContainer.set(\"layout\", verticalLayout);\r\n const plotContainer = this.plotContainer;\r\n plotContainer.children.push(this.seriesContainer);\r\n this._disposers.push(this._processAxis(this.xAxes, this.bottomAxesContainer));\r\n this._disposers.push(this._processAxis(this.yAxes, this.leftAxesContainer));\r\n plotContainer.children.push(this.topGridContainer);\r\n plotContainer.children.push(this.bulletsContainer);\r\n // Setting trasnparent background so that full body of the plot container\r\n // is interactive\r\n plotContainer.set(\"interactive\", true);\r\n plotContainer.set(\"interactiveChildren\", false);\r\n plotContainer.set(\"background\", Rectangle.new(root, {\r\n themeTags: [\"plotbackground\", \"xy\", \"background\"]\r\n }));\r\n this._disposers.push(plotContainer.events.on(\"pointerdown\", (event) => {\r\n this._handlePlotDown(event);\r\n }));\r\n this._disposers.push(plotContainer.events.on(\"globalpointerup\", (event) => {\r\n this._handlePlotUp(event);\r\n }));\r\n this._disposers.push(plotContainer.events.on(\"globalpointermove\", (event) => {\r\n this._handlePlotMove(event);\r\n }));\r\n this._maskGrid();\r\n this._setUpTouch();\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"pinchZoomX\") || this.isDirty(\"pinchZoomY\") || this.get(\"panX\") || this.get(\"panY\")) {\r\n this._setUpTouch();\r\n }\r\n }\r\n _setUpTouch() {\r\n if (!this.plotContainer._display.cancelTouch) {\r\n this.plotContainer._display.cancelTouch = (this.get(\"pinchZoomX\") || this.get(\"pinchZoomY\") || this.get(\"panX\") || this.get(\"panY\")) ? true : false;\r\n }\r\n }\r\n _maskGrid() {\r\n this.gridContainer.set(\"maskContent\", true);\r\n this.topGridContainer.set(\"maskContent\", true);\r\n }\r\n _removeSeries(series) {\r\n series._unstack();\r\n if (series._posXDp) {\r\n series._posXDp.dispose();\r\n }\r\n if (series._posYDp) {\r\n series._posYDp.dispose();\r\n }\r\n series.set(\"baseAxis\", undefined);\r\n const xAxis = series.get(\"xAxis\");\r\n if (xAxis) {\r\n $array.remove(xAxis.series, series);\r\n xAxis.markDirtyExtremes();\r\n }\r\n const yAxis = series.get(\"yAxis\");\r\n if (yAxis) {\r\n $array.remove(yAxis.series, series);\r\n yAxis.markDirtyExtremes();\r\n }\r\n const cursor = this.get(\"cursor\");\r\n if (cursor) {\r\n const snapToSeries = cursor.get(\"snapToSeries\");\r\n if (snapToSeries) {\r\n $array.remove(snapToSeries, series);\r\n }\r\n }\r\n super._removeSeries(series);\r\n }\r\n /**\r\n * This method is invoked when mouse wheel is used over chart's plot\r\n * container, and handles zooming/pan.\r\n *\r\n * You can invoke this method manually, if you need to mimic chart's wheel\r\n * behavior over other elements of the chart.\r\n */\r\n handleWheel(event) {\r\n const wheelX = this.get(\"wheelX\");\r\n const wheelY = this.get(\"wheelY\");\r\n const plotContainer = this.plotContainer;\r\n const wheelEvent = event.originalEvent;\r\n // Ignore wheel event if it is happening on a non-chart element, e.g. if\r\n // some page element is over the chart.\r\n if ($utils.isLocalEvent(wheelEvent, this)) {\r\n wheelEvent.preventDefault();\r\n }\r\n else {\r\n return;\r\n }\r\n const plotPoint = plotContainer.toLocal(event.point);\r\n const wheelStep = this.get(\"wheelStep\", 0.2);\r\n const shiftY = wheelEvent.deltaY / 100;\r\n const shiftX = wheelEvent.deltaX / 100;\r\n const wheelZoomPositionX = this.get(\"wheelZoomPositionX\");\r\n const wheelZoomPositionY = this.get(\"wheelZoomPositionY\");\r\n if ((wheelX === \"zoomX\" || wheelX === \"zoomXY\") && shiftX != 0) {\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"zoomX\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let position = axis.fixPosition(plotPoint.x / plotContainer.width());\r\n if (wheelZoomPositionX != null) {\r\n position = wheelZoomPositionX;\r\n }\r\n let newStart = start - wheelStep * (end - start) * shiftX * position;\r\n let newEnd = end + wheelStep * (end - start) * shiftX * (1 - position);\r\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n }\r\n });\r\n }\r\n if ((wheelY === \"zoomX\" || wheelY === \"zoomXY\") && shiftY != 0) {\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"zoomX\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let position = axis.fixPosition(plotPoint.x / plotContainer.width());\r\n if (wheelZoomPositionX != null) {\r\n position = wheelZoomPositionX;\r\n }\r\n let newStart = start - wheelStep * (end - start) * shiftY * position;\r\n let newEnd = end + wheelStep * (end - start) * shiftY * (1 - position);\r\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n }\r\n });\r\n }\r\n if ((wheelX === \"zoomY\" || wheelX === \"zoomXY\") && shiftX != 0) {\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"zoomY\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let position = axis.fixPosition(plotPoint.y / plotContainer.height());\r\n if (wheelZoomPositionY != null) {\r\n position = wheelZoomPositionY;\r\n }\r\n let newStart = start - wheelStep * (end - start) * shiftX * position;\r\n let newEnd = end + wheelStep * (end - start) * shiftX * (1 - position);\r\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n }\r\n });\r\n }\r\n if ((wheelY === \"zoomY\" || wheelY === \"zoomXY\") && shiftY != 0) {\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"zoomY\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let position = axis.fixPosition(plotPoint.y / plotContainer.height());\r\n if (wheelZoomPositionY != null) {\r\n position = wheelZoomPositionY;\r\n }\r\n let newStart = start - wheelStep * (end - start) * shiftY * position;\r\n let newEnd = end + wheelStep * (end - start) * shiftY * (1 - position);\r\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n }\r\n });\r\n }\r\n if ((wheelX === \"panX\" || wheelX === \"panXY\") && shiftX != 0) {\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"panX\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftX;\r\n let newStart = start + delta;\r\n let newEnd = end + delta;\r\n let se = this._fixWheel(newStart, newEnd);\r\n newStart = se[0];\r\n newEnd = se[1];\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n });\r\n }\r\n if ((wheelY === \"panX\" || wheelY === \"panXY\") && shiftY != 0) {\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"panX\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftY;\r\n let newStart = start + delta;\r\n let newEnd = end + delta;\r\n let se = this._fixWheel(newStart, newEnd);\r\n newStart = se[0];\r\n newEnd = se[1];\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n });\r\n }\r\n if ((wheelX === \"panY\" || wheelX === \"panXY\") && shiftX != 0) {\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"panY\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftX;\r\n let newStart = start + delta;\r\n let newEnd = end + delta;\r\n let se = this._fixWheel(newStart, newEnd);\r\n newStart = se[0];\r\n newEnd = se[1];\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n });\r\n }\r\n if ((wheelY === \"panY\" || wheelY === \"panXY\") && shiftY != 0) {\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"panY\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftY;\r\n let newStart = start - delta;\r\n let newEnd = end - delta;\r\n let se = this._fixWheel(newStart, newEnd);\r\n newStart = se[0];\r\n newEnd = se[1];\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n });\r\n }\r\n }\r\n _handleSetWheel() {\r\n const wheelX = this.get(\"wheelX\");\r\n const wheelY = this.get(\"wheelY\");\r\n const plotContainer = this.plotContainer;\r\n if (wheelX !== \"none\" || wheelY !== \"none\") {\r\n this._wheelDp = plotContainer.events.on(\"wheel\", (event) => {\r\n const wheelEvent = event.originalEvent;\r\n if ((wheelX !== \"none\" && Math.abs(wheelEvent.deltaX) != 0) || (wheelY !== \"none\" && Math.abs(wheelEvent.deltaY) != 0)) {\r\n this.handleWheel(event);\r\n }\r\n });\r\n this._disposers.push(this._wheelDp);\r\n }\r\n else {\r\n if (this._wheelDp) {\r\n this._wheelDp.dispose();\r\n }\r\n }\r\n }\r\n _getWheelSign(axis) {\r\n let sign = 1;\r\n if (axis.get(\"renderer\").get(\"inversed\")) {\r\n sign = -1;\r\n }\r\n return sign;\r\n }\r\n _fixWheel(start, end) {\r\n const diff = end - start;\r\n if (start < 0) {\r\n start = 0;\r\n end = start + diff;\r\n }\r\n if (end > 1) {\r\n end = 1;\r\n start = end - diff;\r\n }\r\n return [start, end];\r\n }\r\n _handlePlotDown(event) {\r\n const originalEvent = event.originalEvent;\r\n if (originalEvent.button == 2) {\r\n return;\r\n }\r\n const plotContainer = this.plotContainer;\r\n let local = plotContainer.toLocal(event.point);\r\n if (this.get(\"pinchZoomX\") || this.get(\"pinchZoomY\")) {\r\n const pointerId = originalEvent.pointerId;\r\n if (pointerId) {\r\n if ($object.keys(plotContainer._downPoints).length > 0) {\r\n const xAxis = this.xAxes.getIndex(0);\r\n const yAxis = this.yAxes.getIndex(0);\r\n if (xAxis) {\r\n this._downStartX = xAxis.get(\"start\", 0);\r\n this._downEndX = xAxis.get(\"end\", 1);\r\n }\r\n if (yAxis) {\r\n this._downStartY = yAxis.get(\"start\", 0);\r\n this._downEndY = yAxis.get(\"end\", 1);\r\n }\r\n }\r\n }\r\n }\r\n if (this.get(\"panX\") || this.get(\"panY\")) {\r\n if (local.x >= 0 && local.y >= 0 && local.x <= plotContainer.width() && local.y <= this.height()) {\r\n //this._downPoint = local;\r\n this._downPoint = { x: originalEvent.clientX, y: originalEvent.clientY };\r\n const panX = this.get(\"panX\");\r\n const panY = this.get(\"panY\");\r\n if (panX) {\r\n this.xAxes.each((axis) => {\r\n axis._panStart = axis.get(\"start\");\r\n axis._panEnd = axis.get(\"end\");\r\n });\r\n }\r\n if (panY) {\r\n this.yAxes.each((axis) => {\r\n axis._panStart = axis.get(\"start\");\r\n axis._panEnd = axis.get(\"end\");\r\n });\r\n }\r\n const eventType = \"panstarted\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n }\r\n }\r\n _handleWheelAnimation(animation) {\r\n if (animation) {\r\n animation.events.on(\"stopped\", () => {\r\n this._dispatchWheelAnimation();\r\n });\r\n }\r\n else {\r\n this._dispatchWheelAnimation();\r\n }\r\n }\r\n _dispatchWheelAnimation() {\r\n const eventType = \"wheelended\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this });\r\n }\r\n }\r\n _handlePlotUp(event) {\r\n const downPoint = this._downPoint;\r\n if (downPoint) {\r\n if (this.get(\"panX\") || this.get(\"panY\")) {\r\n if (event.originalEvent.clientX == downPoint.x && event.originalEvent.clientY == downPoint.y) {\r\n const eventType = \"pancancelled\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n const eventType = \"panended\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n }\r\n // TODO: handle multitouch\r\n this._downPoint = undefined;\r\n this.xAxes.each((xAxis) => {\r\n xAxis._isPanning = false;\r\n });\r\n this.yAxes.each((yAxis) => {\r\n yAxis._isPanning = false;\r\n });\r\n }\r\n _handlePlotMove(event) {\r\n const plotContainer = this.plotContainer;\r\n if (this.get(\"pinchZoomX\") || this.get(\"pinchZoomY\")) {\r\n const touchEvent = event.originalEvent;\r\n const pointerId = touchEvent.pointerId;\r\n if (pointerId) {\r\n this._movePoints[pointerId] = event.point;\r\n if ($object.keys(plotContainer._downPoints).length > 1) {\r\n this._handlePinch();\r\n return;\r\n }\r\n }\r\n }\r\n let downPoint = this._downPoint;\r\n if (downPoint) {\r\n downPoint = plotContainer.toLocal(this._root.documentPointToRoot(downPoint));\r\n let local = plotContainer.toLocal(event.point);\r\n const panX = this.get(\"panX\");\r\n const panY = this.get(\"panY\");\r\n if (panX) {\r\n let scrollbarX = this.get(\"scrollbarX\");\r\n if (scrollbarX) {\r\n scrollbarX.events.disableType(\"rangechanged\");\r\n }\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"panX\")) {\r\n axis._isPanning = true;\r\n //const maxDeviation = axis.get(\"maxDeviation\", 0);\r\n let panStart = axis._panStart;\r\n let panEnd = axis._panEnd;\r\n let difference = (panEnd - panStart);\r\n let deltaX = difference * (downPoint.x - local.x) / plotContainer.width();\r\n if (axis.get(\"renderer\").get(\"inversed\")) {\r\n deltaX *= -1;\r\n }\r\n let start = panStart + deltaX;\r\n let end = panEnd + deltaX;\r\n if (end - start < 1 + axis.get(\"maxDeviation\", 1) * 2) {\r\n axis.set(\"start\", start);\r\n axis.set(\"end\", end);\r\n }\r\n }\r\n });\r\n if (scrollbarX) {\r\n scrollbarX.events.enableType(\"rangechanged\");\r\n }\r\n }\r\n if (panY) {\r\n let scrollbarY = this.get(\"scrollbarY\");\r\n if (scrollbarY) {\r\n scrollbarY.events.disableType(\"rangechanged\");\r\n }\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"panY\")) {\r\n axis._isPanning = true;\r\n //const maxDeviation = axis.get(\"maxDeviation\", 0);\r\n let panStart = axis._panStart;\r\n let panEnd = axis._panEnd;\r\n let difference = (panEnd - panStart);\r\n let deltaY = difference * (downPoint.y - local.y) / plotContainer.height();\r\n if (axis.get(\"renderer\").get(\"inversed\")) {\r\n deltaY *= -1;\r\n }\r\n let start = panStart - deltaY;\r\n let end = panEnd - deltaY;\r\n if (end - start < 1 + axis.get(\"maxDeviation\", 1) * 2) {\r\n axis.set(\"start\", start);\r\n axis.set(\"end\", end);\r\n }\r\n }\r\n });\r\n if (scrollbarY) {\r\n scrollbarY.events.enableType(\"rangechanged\");\r\n }\r\n }\r\n }\r\n }\r\n _handlePinch() {\r\n const plotContainer = this.plotContainer;\r\n let i = 0;\r\n let downPoints = [];\r\n let movePoints = [];\r\n $object.each(plotContainer._downPoints, (k, point) => {\r\n downPoints[i] = point;\r\n let movePoint = this._movePoints[k];\r\n if (movePoint) {\r\n movePoints[i] = movePoint;\r\n }\r\n i++;\r\n });\r\n if (downPoints.length > 1 && movePoints.length > 1) {\r\n const w = plotContainer.width();\r\n const h = plotContainer.height();\r\n let downPoint0 = downPoints[0];\r\n let downPoint1 = downPoints[1];\r\n let movePoint0 = movePoints[0];\r\n let movePoint1 = movePoints[1];\r\n if (downPoint0 && downPoint1 && movePoint0 && movePoint1) {\r\n movePoint0 = plotContainer.toLocal(movePoint0);\r\n movePoint1 = plotContainer.toLocal(movePoint1);\r\n downPoint0 = plotContainer.toLocal(downPoint0);\r\n downPoint1 = plotContainer.toLocal(downPoint1);\r\n if (this.get(\"pinchZoomX\")) {\r\n const downStartX = this._downStartX;\r\n const downEndX = this._downEndX;\r\n if (downStartX != null && downEndX != null) {\r\n if (downPoint0.x > downPoint1.x) {\r\n [downPoint0, downPoint1] = [downPoint1, downPoint0];\r\n [movePoint0, movePoint1] = [movePoint1, movePoint0];\r\n }\r\n let downPos0 = downStartX + (downPoint0.x / w) * (downEndX - downStartX);\r\n let downPos1 = downStartX + (downPoint1.x / w) * (downEndX - downStartX);\r\n let movePos0 = downStartX + (movePoint0.x / w) * (downEndX - downStartX);\r\n let movePos1 = downStartX + (movePoint1.x / w) * (downEndX - downStartX);\r\n let initialDistance = Math.max(0.001, downPos1 - downPos0);\r\n let currentDistance = Math.max(0.001, movePos1 - movePos0);\r\n let d = initialDistance / currentDistance;\r\n let s = downStartX * d + downPos0 - movePos0 * d;\r\n let e = downEndX * d + downPos1 - movePos1 * d;\r\n this.xAxes.each((xAxis) => {\r\n let sa = xAxis.fixPosition(s);\r\n let ea = xAxis.fixPosition(e);\r\n xAxis.zoom(sa, ea, 0);\r\n });\r\n }\r\n }\r\n if (this.get(\"pinchZoomY\")) {\r\n const downStartY = this._downStartY;\r\n const downEndY = this._downEndY;\r\n if (downStartY != null && downEndY != null) {\r\n if (downPoint0.y < downPoint1.y) {\r\n [downPoint0, downPoint1] = [downPoint1, downPoint0];\r\n [movePoint0, movePoint1] = [movePoint1, movePoint0];\r\n }\r\n let downPos0 = downStartY + (1 - downPoint0.y / h) * (downEndY - downStartY);\r\n let downPos1 = downStartY + (1 - downPoint1.y / h) * (downEndY - downStartY);\r\n let movePos0 = downStartY + (1 - movePoint0.y / h) * (downEndY - downStartY);\r\n let movePos1 = downStartY + (1 - movePoint1.y / h) * (downEndY - downStartY);\r\n let initialDistance = Math.max(0.001, downPos1 - downPos0);\r\n let currentDistance = Math.max(0.001, movePos1 - movePos0);\r\n let d = initialDistance / currentDistance;\r\n let s = downStartY * d + downPos0 - movePos0 * d;\r\n let e = downEndY * d + downPos1 - movePos1 * d;\r\n this.yAxes.each((yAxis) => {\r\n let sa = yAxis.fixPosition(s);\r\n let ea = yAxis.fixPosition(e);\r\n yAxis.zoom(sa, ea, 0);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _handleCursorPosition() {\r\n const cursor = this.get(\"cursor\");\r\n if (cursor) {\r\n const cursorPoint = cursor.getPrivate(\"point\");\r\n let snapToSeries = cursor.get(\"snapToSeries\");\r\n if (cursor._downPoint) {\r\n snapToSeries = undefined;\r\n }\r\n if (snapToSeries && cursorPoint) {\r\n const snapToSeriesBy = cursor.get(\"snapToSeriesBy\");\r\n const dataItems = [];\r\n $array.each(snapToSeries, (series) => {\r\n if (!series.isHidden() && !series.isHiding()) {\r\n if (snapToSeriesBy != \"x!\" && snapToSeriesBy != \"y!\") {\r\n const startIndex = series.startIndex();\r\n const endIndex = series.endIndex();\r\n for (let i = startIndex; i < endIndex; i++) {\r\n const dataItem = series.dataItems[i];\r\n if (dataItem && !dataItem.isHidden()) {\r\n dataItems.push(dataItem);\r\n }\r\n }\r\n }\r\n else {\r\n const tooltipDataItem = series.get(\"tooltipDataItem\");\r\n if (tooltipDataItem) {\r\n dataItems.push(tooltipDataItem);\r\n }\r\n }\r\n }\r\n });\r\n let minDistance = Infinity;\r\n let closestItem;\r\n $array.each(dataItems, (dataItem) => {\r\n const point = dataItem.get(\"point\");\r\n if (point) {\r\n let distance = 0;\r\n if (snapToSeriesBy == \"x\" || snapToSeriesBy == \"x!\") {\r\n distance = Math.abs(cursorPoint.x - point.x);\r\n }\r\n else if (snapToSeriesBy == \"y\" || snapToSeriesBy == \"y!\") {\r\n distance = Math.abs(cursorPoint.y - point.y);\r\n }\r\n else {\r\n distance = Math.hypot(cursorPoint.x - point.x, cursorPoint.y - point.y);\r\n }\r\n if (distance < minDistance) {\r\n minDistance = distance;\r\n closestItem = dataItem;\r\n }\r\n }\r\n });\r\n $array.each(snapToSeries, (series) => {\r\n const tooltip = series.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip._setDataItem(undefined);\r\n }\r\n });\r\n if (closestItem) {\r\n let series = closestItem.component;\r\n series.showDataItemTooltip(closestItem);\r\n series.setRaw(\"tooltipDataItem\", closestItem);\r\n const point = closestItem.get(\"point\");\r\n if (point) {\r\n // removing x and y to solve #72225\r\n cursor.handleMove(series.toGlobal({ x: point.x - series.x(), y: point.y - series.y() }), true);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _updateCursor() {\r\n let cursor = this.get(\"cursor\");\r\n if (cursor) {\r\n cursor.updateCursor();\r\n }\r\n }\r\n _addCursor(cursor) {\r\n this.plotContainer.children.push(cursor);\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n this.series.each((series) => {\r\n this._colorize(series);\r\n });\r\n if (this.isDirty(\"wheelX\") || this.isDirty(\"wheelY\")) {\r\n this._handleSetWheel();\r\n }\r\n if (this.isDirty(\"cursor\")) {\r\n const previous = this._prevSettings.cursor;\r\n const cursor = this.get(\"cursor\");\r\n if (cursor !== previous) {\r\n this._disposeProperty(\"cursor\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (cursor) {\r\n cursor._setChart(this);\r\n this._addCursor(cursor);\r\n this._pushPropertyDisposer(\"cursor\", cursor.events.on(\"selectended\", () => {\r\n this._handleCursorSelectEnd();\r\n }));\r\n }\r\n //this.setRaw(\"cursor\", cursor) // to reset previous value\r\n this._prevSettings.cursor = cursor;\r\n }\r\n }\r\n if (this.isDirty(\"scrollbarX\")) {\r\n const previous = this._prevSettings.scrollbarX;\r\n const scrollbarX = this.get(\"scrollbarX\");\r\n if (scrollbarX !== previous) {\r\n this._disposeProperty(\"scrollbarX\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (scrollbarX) {\r\n if (!scrollbarX.parent) {\r\n this.topAxesContainer.children.push(scrollbarX);\r\n }\r\n this._pushPropertyDisposer(\"scrollbarX\", scrollbarX.events.on(\"rangechanged\", (e) => {\r\n this._handleScrollbar(this.xAxes, e.start, e.end, e.grip);\r\n }));\r\n this._pushPropertyDisposer(\"scrollbarX\", scrollbarX.events.on(\"released\", () => {\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"zoomable\")) {\r\n this._handleAxisSelection(axis);\r\n }\r\n });\r\n }));\r\n // Used to populate `ariaLabel` with meaningful values\r\n scrollbarX.setPrivate(\"positionTextFunction\", (position) => {\r\n const axis = this.xAxes.getIndex(0);\r\n return axis ? axis.getTooltipText(position, false) || \"\" : \"\";\r\n });\r\n }\r\n this._prevSettings.scrollbarX = scrollbarX;\r\n }\r\n }\r\n if (this.isDirty(\"scrollbarY\")) {\r\n const previous = this._prevSettings.scrollbarY;\r\n const scrollbarY = this.get(\"scrollbarY\");\r\n if (scrollbarY !== previous) {\r\n this._disposeProperty(\"scrollbarY\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (scrollbarY) {\r\n if (!scrollbarY.parent) {\r\n this.rightAxesContainer.children.push(scrollbarY);\r\n }\r\n this._pushPropertyDisposer(\"scrollbarY\", scrollbarY.events.on(\"rangechanged\", (e) => {\r\n this._handleScrollbar(this.yAxes, e.start, e.end, e.grip);\r\n }));\r\n this._pushPropertyDisposer(\"scrollbarY\", scrollbarY.events.on(\"released\", () => {\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"zoomable\")) {\r\n this._handleAxisSelection(axis);\r\n }\r\n });\r\n }));\r\n // Used to populate `ariaLabel` with meaningful values\r\n scrollbarY.setPrivate(\"positionTextFunction\", (position) => {\r\n const axis = this.yAxes.getIndex(0);\r\n return axis ? axis.getTooltipText(position, false) || \"\" : \"\";\r\n });\r\n }\r\n this._prevSettings.scrollbarY = scrollbarY;\r\n }\r\n }\r\n this._handleZoomOut();\r\n }\r\n _processSeries(series) {\r\n super._processSeries(series);\r\n const xAxis = series.get(\"xAxis\");\r\n const yAxis = series.get(\"yAxis\");\r\n $array.move(xAxis.series, series);\r\n $array.move(yAxis.series, series);\r\n series._posXDp = series.addDisposer(xAxis.events.on(\"positionchanged\", () => {\r\n series._fixPosition();\r\n }));\r\n series._posXDp = series.addDisposer(yAxis.events.on(\"positionchanged\", () => {\r\n series._fixPosition();\r\n }));\r\n if (!series.get(\"baseAxis\")) {\r\n if (yAxis.isType(\"CategoryAxis\") || yAxis.isType(\"DateAxis\")) {\r\n series.set(\"baseAxis\", yAxis);\r\n }\r\n else {\r\n series.set(\"baseAxis\", xAxis);\r\n }\r\n }\r\n if (series.get(\"stacked\")) {\r\n series._markDirtyKey(\"stacked\");\r\n $array.each(series.dataItems, (dataItem) => {\r\n dataItem.set(\"stackToItemY\", undefined);\r\n dataItem.set(\"stackToItemX\", undefined);\r\n });\r\n }\r\n series._markDirtyAxes();\r\n yAxis.markDirtyExtremes();\r\n xAxis.markDirtyExtremes();\r\n xAxis._seriesAdded = true;\r\n yAxis._seriesAdded = true;\r\n this._colorize(series);\r\n }\r\n _colorize(series) {\r\n const colorSet = this.get(\"colors\");\r\n if (colorSet) {\r\n if (series.get(\"fill\") == null) {\r\n const color = colorSet.next();\r\n series._setSoft(\"stroke\", color);\r\n series._setSoft(\"fill\", color);\r\n }\r\n }\r\n }\r\n _handleCursorSelectEnd() {\r\n const cursor = this.get(\"cursor\");\r\n const behavior = cursor.get(\"behavior\");\r\n const downPositionX = cursor.getPrivate(\"downPositionX\", 0);\r\n const downPositionY = cursor.getPrivate(\"downPositionY\", 0);\r\n const positionX = Math.min(1, Math.max(0, cursor.getPrivate(\"positionX\", 0.5)));\r\n const positionY = Math.min(1, Math.max(0, cursor.getPrivate(\"positionY\", 0.5)));\r\n this.xAxes.each((axis) => {\r\n if (behavior === \"zoomX\" || behavior === \"zoomXY\") {\r\n let position0 = axis.toAxisPosition(downPositionX);\r\n let position1 = axis.toAxisPosition(positionX);\r\n axis.zoom(position0, position1);\r\n }\r\n axis.setPrivate(\"updateScrollbar\", true);\r\n });\r\n this.yAxes.each((axis) => {\r\n if (behavior === \"zoomY\" || behavior === \"zoomXY\") {\r\n let position0 = axis.toAxisPosition(downPositionY);\r\n let position1 = axis.toAxisPosition(positionY);\r\n axis.zoom(position0, position1);\r\n }\r\n axis.setPrivate(\"updateScrollbar\", true);\r\n });\r\n }\r\n _handleScrollbar(axes, start, end, priority) {\r\n axes.each((axis) => {\r\n let axisStart = axis.fixPosition(start);\r\n let axisEnd = axis.fixPosition(end);\r\n let zoomAnimation = axis.zoom(axisStart, axisEnd, undefined, priority);\r\n const updateScrollbar = \"updateScrollbar\";\r\n axis.setPrivateRaw(updateScrollbar, false);\r\n if (zoomAnimation) {\r\n zoomAnimation.events.on(\"stopped\", () => {\r\n axis.setPrivateRaw(updateScrollbar, true);\r\n });\r\n }\r\n else {\r\n axis.setPrivateRaw(updateScrollbar, true);\r\n }\r\n });\r\n }\r\n _processAxis(axes, container) {\r\n return axes.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n $array.each(change.oldValues, (axis) => {\r\n this._removeAxis(axis);\r\n });\r\n }\r\n else if (change.type === \"push\") {\r\n container.children.push(change.newValue);\r\n change.newValue.processChart(this);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n container.children.setIndex(change.index, change.newValue);\r\n change.newValue.processChart(this);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n container.children.insertIndex(change.index, change.newValue);\r\n change.newValue.processChart(this);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this._removeAxis(change.oldValue);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n container.children.moveValue(change.value, change.newIndex);\r\n change.value.processChart(this);\r\n }\r\n else {\r\n throw new Error(\"Unknown IListEvent type\");\r\n }\r\n });\r\n }\r\n _removeAxis(axis) {\r\n if (!axis.isDisposed()) {\r\n const axisParent = axis.parent;\r\n if (axisParent) {\r\n axisParent.children.removeValue(axis);\r\n }\r\n const gridContainer = axis.gridContainer;\r\n const gridParent = gridContainer.parent;\r\n if (gridParent) {\r\n gridParent.children.removeValue(gridContainer);\r\n }\r\n const topGridContainer = axis.topGridContainer;\r\n const topGridParent = topGridContainer.parent;\r\n if (topGridParent) {\r\n topGridParent.children.removeValue(topGridContainer);\r\n }\r\n }\r\n }\r\n _updateChartLayout() {\r\n const left = this.leftAxesContainer.width();\r\n const right = this.rightAxesContainer.width();\r\n const bottomAxesContainer = this.bottomAxesContainer;\r\n bottomAxesContainer.set(\"paddingLeft\", left);\r\n bottomAxesContainer.set(\"paddingRight\", right);\r\n const topAxesContainer = this.topAxesContainer;\r\n topAxesContainer.set(\"paddingLeft\", left);\r\n topAxesContainer.set(\"paddingRight\", right);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n processAxis(axis) {\r\n var cursor = this.get(\"cursor\");\r\n if (cursor) {\r\n this.addDisposer(axis.on(\"start\", () => {\r\n this._updateCursor();\r\n }));\r\n this.addDisposer(axis.on(\"end\", () => {\r\n this._updateCursor();\r\n }));\r\n }\r\n }\r\n _handleAxisSelection(axis, force) {\r\n let start = axis.fixPosition(axis.get(\"start\", 0));\r\n let end = axis.fixPosition(axis.get(\"end\", 1));\r\n if (start > end) {\r\n [start, end] = [end, start];\r\n }\r\n if (this.xAxes.indexOf(axis) != -1) {\r\n if (force || axis.getPrivate(\"updateScrollbar\")) {\r\n let scrollbarX = this.get(\"scrollbarX\");\r\n if (scrollbarX && (!scrollbarX.getPrivate(\"isBusy\") || force)) {\r\n scrollbarX.setRaw(\"start\", start);\r\n scrollbarX.setRaw(\"end\", end);\r\n scrollbarX.updateGrips();\r\n }\r\n }\r\n }\r\n else if (this.yAxes.indexOf(axis) != -1) {\r\n if (force || axis.getPrivate(\"updateScrollbar\")) {\r\n let scrollbarY = this.get(\"scrollbarY\");\r\n if (scrollbarY && (!scrollbarY.getPrivate(\"isBusy\") || force)) {\r\n scrollbarY.setRaw(\"start\", start);\r\n scrollbarY.setRaw(\"end\", end);\r\n scrollbarY.updateGrips();\r\n }\r\n }\r\n }\r\n this._handleZoomOut();\r\n }\r\n _handleZoomOut() {\r\n let zoomOutButton = this.zoomOutButton;\r\n if (zoomOutButton && zoomOutButton.parent) {\r\n let visible = false;\r\n this.xAxes.each((axis) => {\r\n if ($math.round(axis.get(\"start\", 0), 6) != 0 || $math.round(axis.get(\"end\", 1), 6) != 1) {\r\n visible = true;\r\n }\r\n });\r\n this.yAxes.each((axis) => {\r\n if ($math.round(axis.get(\"start\", 0), 6) != 0 || $math.round(axis.get(\"end\", 1), 6) != 1) {\r\n visible = true;\r\n }\r\n });\r\n if (visible) {\r\n if (zoomOutButton.isHidden()) {\r\n zoomOutButton.show();\r\n }\r\n }\r\n else {\r\n zoomOutButton.hide();\r\n }\r\n }\r\n }\r\n /**\r\n * Checks if point is within plot area.\r\n *\r\n * @param point Reference point\r\n * @return Is within plot area?\r\n */\r\n inPlot(point) {\r\n const plotContainer = this.plotContainer;\r\n const otherCharts = this.getPrivate(\"otherCharts\", this._otherCharts);\r\n const global = plotContainer.toGlobal(point);\r\n if (point.x >= -0.5 && point.y >= -0.5 && point.x <= plotContainer.width() + 0.5 && point.y <= plotContainer.height() + 0.5) {\r\n return true;\r\n }\r\n if (otherCharts) {\r\n for (let i = otherCharts.length - 1; i >= 0; i--) {\r\n const chart = otherCharts[i];\r\n if (chart != this) {\r\n const chartPlotContainer = chart.plotContainer;\r\n const documentPoint = this._root.rootPointToDocument(global);\r\n const chartRoot = chart._root.documentPointToRoot(documentPoint);\r\n const local = chartPlotContainer.toLocal(chartRoot);\r\n if (local.x >= -0.1 && local.y >= -0.1 && local.x <= chartPlotContainer.width() + 0.1 && local.y <= chartPlotContainer.height() + 0.1) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n arrangeTooltips() {\r\n const plotContainer = this.plotContainer;\r\n const w = plotContainer.width();\r\n const h = plotContainer.height();\r\n const hh = this.height();\r\n let plotT = plotContainer._display.toGlobal({ x: 0, y: 0 });\r\n let plotB = plotContainer._display.toGlobal({ x: w, y: h });\r\n const tooltips = [];\r\n let sum = 0;\r\n let minDistance = Infinity;\r\n let movePoint = this._movePoint;\r\n let maxTooltipDistance = this.get(\"maxTooltipDistance\");\r\n let maxTooltipDistanceBy = this.get(\"maxTooltipDistanceBy\", \"xy\");\r\n let closest;\r\n let closestPoint;\r\n if ($type.isNumber(maxTooltipDistance)) {\r\n this.series.each((series) => {\r\n if (!series.isHidden()) {\r\n const tooltip = series.get(\"tooltip\");\r\n if (tooltip) {\r\n let point = tooltip.get(\"pointTo\");\r\n if (point) {\r\n let distance = Math.hypot(movePoint.x - point.x, movePoint.y - point.y);\r\n if (maxTooltipDistanceBy == \"x\") {\r\n distance = Math.abs(movePoint.x - point.x);\r\n }\r\n else if (maxTooltipDistanceBy == \"y\") {\r\n distance = Math.abs(movePoint.y - point.y);\r\n }\r\n if (distance < minDistance) {\r\n minDistance = distance;\r\n closest = series;\r\n closestPoint = point;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n const tooltipSeries = [];\r\n this.series.each((series) => {\r\n const tooltip = series.get(\"tooltip\");\r\n if (tooltip && !tooltip.get(\"forceHidden\")) {\r\n let hidden = false;\r\n let point = tooltip.get(\"pointTo\");\r\n if (point) {\r\n if (maxTooltipDistance >= 0) {\r\n let point = tooltip.get(\"pointTo\");\r\n if (point && closestPoint) {\r\n if (series != closest) {\r\n let distance = Math.hypot(closestPoint.x - point.x, closestPoint.y - point.y);\r\n if (maxTooltipDistanceBy == \"x\") {\r\n distance = Math.abs(closestPoint.x - point.x);\r\n }\r\n else if (maxTooltipDistanceBy == \"y\") {\r\n distance = Math.abs(closestPoint.y - point.y);\r\n }\r\n if (distance > maxTooltipDistance) {\r\n hidden = true;\r\n }\r\n }\r\n }\r\n }\r\n else if (maxTooltipDistance == -1) {\r\n if (series != closest) {\r\n hidden = true;\r\n }\r\n }\r\n if (!this.inPlot(this._tooltipToLocal(point)) || !tooltip.dataItem) {\r\n hidden = true;\r\n }\r\n else {\r\n if (!hidden) {\r\n sum += point.y;\r\n }\r\n }\r\n if (hidden || series.isHidden() || series.isHiding()) {\r\n tooltip.hide(0);\r\n }\r\n else {\r\n tooltip.show();\r\n tooltips.push(tooltip);\r\n tooltipSeries.push(series);\r\n }\r\n }\r\n }\r\n });\r\n this.setPrivate(\"tooltipSeries\", tooltipSeries);\r\n if (this.get(\"arrangeTooltips\")) {\r\n const tooltipContainer = this._root.tooltipContainer;\r\n const count = tooltips.length;\r\n const average = sum / count;\r\n if (average > h / 2 + plotT.y) {\r\n tooltips.sort((a, b) => $order.compareNumber(b.get(\"pointTo\").y, a.get(\"pointTo\").y));\r\n let prevY = plotB.y;\r\n $array.each(tooltips, (tooltip) => {\r\n let height = tooltip.height();\r\n let centerY = tooltip.get(\"centerY\");\r\n if (centerY instanceof Percent) {\r\n height *= centerY.value;\r\n }\r\n height += tooltip.get(\"marginBottom\", 0);\r\n tooltip.set(\"bounds\", { left: plotT.x, top: plotT.y, right: plotB.x, bottom: prevY });\r\n tooltip.setPrivate(\"customData\", { left: plotT.x, top: plotT.y, right: plotB.x, bottom: prevY });\r\n prevY = Math.min(prevY - height, tooltip._fy - height);\r\n if (tooltip.parent == tooltipContainer) {\r\n tooltipContainer.children.moveValue(tooltip, 0);\r\n }\r\n });\r\n if (prevY < 0) {\r\n tooltips.reverse();\r\n let prevBottom = prevY;\r\n $array.each(tooltips, (tooltip) => {\r\n let bounds = tooltip.get(\"bounds\");\r\n if (bounds) {\r\n let top = bounds.top - prevY;\r\n let bottom = bounds.bottom - prevY;\r\n if (top < prevBottom) {\r\n top = prevBottom;\r\n bottom = top + tooltip.height();\r\n }\r\n tooltip.set(\"bounds\", { left: bounds.left, top: top, right: bounds.right, bottom: bottom });\r\n prevBottom = bounds.bottom - prevY + tooltip.get(\"marginBottom\", 0);\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n tooltips.reverse();\r\n tooltips.sort((a, b) => $order.compareNumber(a.get(\"pointTo\").y, b.get(\"pointTo\").y));\r\n let prevY = 0;\r\n $array.each(tooltips, (tooltip) => {\r\n let height = tooltip.height();\r\n let centerY = tooltip.get(\"centerY\");\r\n if (centerY instanceof Percent) {\r\n height *= centerY.value;\r\n }\r\n height += tooltip.get(\"marginBottom\", 0);\r\n tooltip.set(\"bounds\", { left: plotT.x, top: prevY, right: plotB.x, bottom: Math.max(plotT.y + hh, prevY + height) });\r\n if (tooltip.parent == tooltipContainer) {\r\n tooltipContainer.children.moveValue(tooltip, 0);\r\n }\r\n prevY = Math.max(prevY + height, tooltip._fy + height);\r\n });\r\n if (prevY > hh) {\r\n tooltips.reverse();\r\n let prevBottom = hh;\r\n $array.each(tooltips, (tooltip) => {\r\n let bounds = tooltip.get(\"bounds\");\r\n if (bounds) {\r\n let top = bounds.top - (hh - prevY);\r\n let bottom = bounds.bottom - (hh - prevY);\r\n if (bottom > prevBottom) {\r\n bottom = prevBottom;\r\n top = bottom - tooltip.height();\r\n }\r\n tooltip.set(\"bounds\", { left: bounds.left, top: top, right: bounds.right, bottom: bottom });\r\n prevBottom = bottom - tooltip.height() - tooltip.get(\"marginBottom\", 0);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n _tooltipToLocal(point) {\r\n return this.plotContainer.toLocal(point);\r\n }\r\n /**\r\n * Fully zooms out the chart.\r\n */\r\n zoomOut() {\r\n this.xAxes.each((axis) => {\r\n axis.setPrivate(\"updateScrollbar\", true);\r\n axis.zoom(0, 1);\r\n });\r\n this.yAxes.each((axis) => {\r\n axis.setPrivate(\"updateScrollbar\", true);\r\n axis.zoom(0, 1);\r\n });\r\n }\r\n _dispose() {\r\n super._dispose();\r\n // Explicitly disposing cursor to avoid memory leak of cursor adding\r\n // keyboard events after parent chart has been disposed\r\n const cursor = this.get(\"cursor\");\r\n if (cursor) {\r\n cursor.dispose();\r\n }\r\n }\r\n}\r\nObject.defineProperty(XYChart, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"XYChart\"\r\n});\r\nObject.defineProperty(XYChart, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: SerialChart.classNames.concat([XYChart.className])\r\n});\r\n","import { Container } from \"../../core/render/Container\";\r\nimport { p100 } from \"../../core/util/Percent\";\r\nimport { Graphics } from \"../../core/render/Graphics\";\r\nimport { Grid } from \"./axes/Grid\";\r\n//import { Animations } from \"../core/util/Animation\";\r\nimport * as $type from \"../../core/util/Type\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\nimport * as $math from \"../../core/util/Math\";\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $object from \"../../core/util/Object\";\r\n/**\r\n * Creates a chart cursor for an [[XYChart]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/cursor/} for more info\r\n * @important\r\n */\r\nexport class XYCursor extends Container {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_alwaysShow\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * A [[Grid]] elment that used for horizontal line of the cursor crosshair.\r\n *\r\n * @default Grid.new()\r\n */\r\n Object.defineProperty(this, \"lineX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Grid.new(this._root, {\r\n themeTags: [\"x\"]\r\n }))\r\n });\r\n /**\r\n * A [[Grid]] elment that used for horizontal line of the cursor crosshair.\r\n *\r\n * @default Grid.new()\r\n */\r\n Object.defineProperty(this, \"lineY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Grid.new(this._root, {\r\n themeTags: [\"y\"]\r\n }))\r\n });\r\n /**\r\n * An element that represents current selection.\r\n *\r\n * @default Graphics.new()\r\n */\r\n Object.defineProperty(this, \"selection\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Graphics.new(this._root, {\r\n themeTags: [\"selection\", \"cursor\"], layer: 30\r\n }))\r\n });\r\n Object.defineProperty(this, \"_movePoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_lastPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { x: 0, y: 0 }\r\n });\r\n Object.defineProperty(this, \"_lastPoint2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { x: 0, y: 0 }\r\n });\r\n Object.defineProperty(this, \"_tooltipX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_tooltipY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * A chart cursor is attached to.\r\n */\r\n Object.defineProperty(this, \"chart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_toX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_toY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"xy\", \"cursor\"]);\r\n super._afterNew();\r\n this.setAll({ \"width\": p100, height: p100, isMeasured: true, position: \"absolute\" });\r\n this.states.create(\"hidden\", { visible: true, opacity: 0 });\r\n this._drawLines();\r\n this.setPrivateRaw(\"visible\", false);\r\n this._disposers.push(this.setTimeout(() => {\r\n this.setPrivate(\"visible\", true);\r\n }, 500));\r\n this._disposers.push(this.lineX.events.on(\"positionchanged\", () => {\r\n this._handleXLine();\r\n }));\r\n this._disposers.push(this.lineY.events.on(\"positionchanged\", () => {\r\n this._handleYLine();\r\n }));\r\n this._disposers.push(this.lineX.events.on(\"focus\", () => this._handleLineFocus()));\r\n this._disposers.push(this.lineX.events.on(\"blur\", () => this._handleLineBlur()));\r\n this._disposers.push(this.lineY.events.on(\"focus\", () => this._handleLineFocus()));\r\n this._disposers.push(this.lineY.events.on(\"blur\", () => this._handleLineBlur()));\r\n if ($utils.supports(\"keyboardevents\")) {\r\n this._disposers.push($utils.addEventListener(document, \"keydown\", (ev) => {\r\n this._handleLineMove($utils.getEventKey(ev), ev.ctrlKey);\r\n }));\r\n }\r\n }\r\n _setUpTouch() {\r\n const chart = this.chart;\r\n if (chart) {\r\n chart.plotContainer._display.cancelTouch = this.get(\"behavior\") != \"none\" ? true : false;\r\n }\r\n }\r\n _handleXLine() {\r\n let x = this.lineX.x();\r\n let visible = true;\r\n if (x < 0 || x > this.width()) {\r\n visible = false;\r\n }\r\n this.lineX.setPrivate(\"visible\", visible);\r\n }\r\n _handleYLine() {\r\n let y = this.lineY.y();\r\n let visible = true;\r\n if (y < 0 || y > this.height()) {\r\n visible = false;\r\n }\r\n this.lineY.setPrivate(\"visible\", visible);\r\n }\r\n _handleLineMove(key, ctrlKey) {\r\n let dir = \"\";\r\n const chart = this.chart;\r\n let axis;\r\n if (chart && chart.xAxes.length) {\r\n if (this._root.focused(this.lineX)) {\r\n dir = \"positionX\";\r\n axis = chart.xAxes.getIndex(0);\r\n }\r\n else if (this._root.focused(this.lineY)) {\r\n axis = chart.yAxes.getIndex(0);\r\n dir = \"positionY\";\r\n }\r\n let m = 1;\r\n if (ctrlKey) {\r\n m = 5;\r\n }\r\n if (axis) {\r\n let inversed = axis.get(\"renderer\").get(\"inversed\", false);\r\n let step;\r\n if (key == \"ArrowRight\" || key == \"ArrowDown\") {\r\n step = 1;\r\n }\r\n else if (key == \"ArrowLeft\" || key == \"ArrowUp\") {\r\n step = -1;\r\n }\r\n else if (key == \"Tab\") {\r\n step = 0;\r\n }\r\n if (step != null) {\r\n if (inversed) {\r\n step *= -1;\r\n }\r\n this.set(dir, axis.nextPosition(step * m));\r\n }\r\n }\r\n }\r\n }\r\n _handleLineFocus() {\r\n this._alwaysShow = this.get(\"alwaysShow\", false);\r\n this.setAll({\r\n positionX: this.getPrivate(\"positionX\", 0),\r\n positionY: this.getPrivate(\"positionY\", 0),\r\n alwaysShow: true\r\n });\r\n this._handleLineMove(\"Tab\");\r\n }\r\n _handleLineBlur() {\r\n if (this.lineX.isFocus() || this.lineY.isFocus()) {\r\n this.setAll({\r\n positionX: undefined,\r\n positionY: undefined,\r\n alwaysShow: this._alwaysShow\r\n });\r\n }\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n if (this.isDirty(\"xAxis\")) {\r\n this._tooltipX = false;\r\n const xAxis = this.get(\"xAxis\");\r\n if (xAxis) {\r\n const tooltip = xAxis.get(\"tooltip\");\r\n if (tooltip) {\r\n this._tooltipX = true;\r\n this._disposers.push(tooltip.on(\"pointTo\", () => {\r\n this._updateXLine(tooltip);\r\n }));\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"yAxis\")) {\r\n this._tooltipY = false;\r\n const yAxis = this.get(\"yAxis\");\r\n if (yAxis) {\r\n const tooltip = yAxis.get(\"tooltip\");\r\n if (tooltip) {\r\n this._tooltipY = true;\r\n this._disposers.push(tooltip.on(\"pointTo\", () => {\r\n this._updateYLine(tooltip);\r\n }));\r\n }\r\n }\r\n }\r\n }\r\n _handleSyncWith() {\r\n const chart = this.chart;\r\n if (chart) {\r\n const syncWith = this.get(\"syncWith\");\r\n const otherCharts = [];\r\n if (syncWith) {\r\n $array.each(syncWith, (cursor) => {\r\n const chart = cursor.chart;\r\n if (chart) {\r\n otherCharts.push(chart);\r\n }\r\n });\r\n }\r\n chart._otherCharts = otherCharts;\r\n }\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n this._handleSyncWith();\r\n if (this.isDirty(\"positionX\") || this.isDirty(\"positionY\")) {\r\n const positionX = this.get(\"positionX\");\r\n const positionY = this.get(\"positionY\");\r\n if (positionX == null && positionY == null) {\r\n this.hide(0);\r\n }\r\n else {\r\n this._movePoint = this.toGlobal(this._getPoint(this.get(\"positionX\", 0), this.get(\"positionY\", 0)));\r\n this.handleMove();\r\n }\r\n }\r\n }\r\n _updateXLine(tooltip) {\r\n let x = $math.round(this._display.toLocal(tooltip.get(\"pointTo\", { x: 0, y: 0 })).x, 3);\r\n if (this._toX != x) {\r\n this.lineX.animate({ key: \"x\", to: x, duration: tooltip.get(\"animationDuration\", 0), easing: tooltip.get(\"animationEasing\") });\r\n this._toX = x;\r\n }\r\n }\r\n _updateYLine(tooltip) {\r\n let y = $math.round(this._display.toLocal(tooltip.get(\"pointTo\", { x: 0, y: 0 })).y, 3);\r\n if (this._toY != y) {\r\n this.lineY.animate({ key: \"y\", to: y, duration: tooltip.get(\"animationDuration\", 0), easing: tooltip.get(\"animationEasing\") });\r\n this._toY = y;\r\n }\r\n }\r\n _drawLines() {\r\n this.lineX.set(\"draw\", (display) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(0, this.height());\r\n });\r\n this.lineY.set(\"draw\", (display) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(this.width(), 0);\r\n });\r\n }\r\n updateCursor() {\r\n if (this.get(\"alwaysShow\")) {\r\n this._movePoint = this.toGlobal(this._getPoint(this.get(\"positionX\", 0), this.get(\"positionY\", 0)));\r\n }\r\n this.handleMove();\r\n }\r\n _setChart(chart) {\r\n this.chart = chart;\r\n this._handleSyncWith();\r\n const plotContainer = chart.plotContainer;\r\n this.events.on(\"boundschanged\", () => {\r\n this._disposers.push(this.setTimeout(() => {\r\n this.updateCursor();\r\n }, 50));\r\n });\r\n //this._display.interactive = true;\r\n if ($utils.supports(\"touchevents\")) {\r\n this._disposers.push(plotContainer.events.on(\"click\", (event) => {\r\n if ($utils.isTouchEvent(event.originalEvent)) {\r\n this._handleMove(event);\r\n }\r\n }));\r\n this._setUpTouch();\r\n }\r\n this._disposers.push(plotContainer.events.on(\"pointerdown\", (event) => {\r\n this._handleCursorDown(event);\r\n }));\r\n this._disposers.push(plotContainer.events.on(\"globalpointerup\", (event) => {\r\n this._handleCursorUp(event);\r\n if (!event.native && !this.isHidden()) {\r\n this._handleMove(event);\r\n }\r\n }));\r\n this._disposers.push(plotContainer.events.on(\"globalpointermove\", (event) => {\r\n if (!this.get(\"syncWith\")) {\r\n if ($object.keys(plotContainer._downPoints).length == 0 && !event.native && this.isHidden()) {\r\n // Ignore mouse movement if it originates on outside element and\r\n // we're not dragging.\r\n return;\r\n }\r\n }\r\n this._handleMove(event);\r\n if (Math.hypot(this._lastPoint2.x - event.point.x, this._lastPoint2.y - event.point.y) > 1) {\r\n this._handleLineBlur();\r\n this._lastPoint2 = event.point;\r\n }\r\n }));\r\n const parent = this.parent;\r\n if (parent) {\r\n parent.children.moveValue(this.selection);\r\n }\r\n }\r\n _inPlot(point) {\r\n const chart = this.chart;\r\n if (chart) {\r\n return chart.inPlot(point);\r\n }\r\n return false;\r\n }\r\n _handleCursorDown(event) {\r\n if (event.originalEvent.button == 2) {\r\n return;\r\n }\r\n const rootPoint = event.point;\r\n let local = this._display.toLocal(rootPoint);\r\n const chart = this.chart;\r\n this.selection.set(\"draw\", () => { });\r\n if (chart && this._inPlot(local)) {\r\n this._downPoint = local;\r\n if (this.get(\"behavior\") != \"none\") {\r\n this.selection.show();\r\n const type = \"selectstarted\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n let positionX = this._getPosition(local).x;\r\n let positionY = this._getPosition(local).y;\r\n this.setPrivate(\"downPositionX\", positionX);\r\n this.setPrivate(\"downPositionY\", positionY);\r\n }\r\n }\r\n _handleCursorUp(event) {\r\n // TODO: handle multitouch\r\n if (this._downPoint) {\r\n const behavior = this.get(\"behavior\", \"none\");\r\n if (behavior != \"none\") {\r\n if (behavior.charAt(0) === \"z\") {\r\n this.selection.hide();\r\n }\r\n const rootPoint = event.point;\r\n let local = this._display.toLocal(rootPoint);\r\n const downPoint = this._downPoint;\r\n const moveThreshold = this.get(\"moveThreshold\", 1);\r\n if (local && downPoint) {\r\n let dispatch = false;\r\n if (behavior === \"zoomX\" || behavior === \"zoomXY\" || behavior === \"selectX\" || behavior === \"selectXY\") {\r\n if (Math.abs(local.x - downPoint.x) > moveThreshold) {\r\n dispatch = true;\r\n }\r\n }\r\n if (behavior === \"zoomY\" || behavior === \"zoomXY\" || behavior === \"selectY\" || behavior === \"selectXY\") {\r\n if (Math.abs(local.y - downPoint.y) > moveThreshold) {\r\n dispatch = true;\r\n }\r\n }\r\n if (dispatch) {\r\n const type = \"selectended\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n else {\r\n const type = \"selectcancelled\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this._downPoint = undefined;\r\n }\r\n _handleMove(event) {\r\n if (this.getPrivate(\"visible\")) {\r\n const chart = this.chart;\r\n if (chart && $object.keys(chart.plotContainer._downPoints).length > 1) {\r\n this.set(\"forceHidden\", true);\r\n return;\r\n }\r\n else {\r\n this.set(\"forceHidden\", false);\r\n }\r\n // TODO: handle multitouch\r\n const rootPoint = event.point;\r\n const lastPoint = this._lastPoint;\r\n if (Math.round(lastPoint.x) === Math.round(rootPoint.x) && Math.round(lastPoint.y) === Math.round(rootPoint.y)) {\r\n return;\r\n }\r\n this._lastPoint = rootPoint;\r\n this.setPrivate(\"lastPoint\", rootPoint);\r\n this.handleMove({ x: rootPoint.x, y: rootPoint.y }, false, event.originalEvent);\r\n }\r\n }\r\n _getPosition(point) {\r\n return { x: point.x / this.width(), y: point.y / this.height() };\r\n }\r\n /**\r\n * Moves the cursor to X/Y coordinates within chart container (`point`).\r\n *\r\n * If `skipEvent` parameter is set to `true`, the move will not invoke\r\n * the `\"cursormoved\"` event.\r\n *\r\n * @param point X/Y to move cursor to\r\n * @param skipEvent Do not fire \"cursormoved\" event\r\n */\r\n handleMove(point, skipEvent, originalEvent) {\r\n if (!point) {\r\n point = this._movePoint;\r\n }\r\n const alwaysShow = this.get(\"alwaysShow\");\r\n if (!point) {\r\n this.hide(0);\r\n return;\r\n }\r\n this._movePoint = point;\r\n let local = this._display.toLocal(point);\r\n let chart = this.chart;\r\n if (chart && (this._inPlot(local) || this._downPoint)) {\r\n chart._movePoint = point;\r\n if (this.isHidden()) {\r\n this.show();\r\n const behavior = this.get(\"behavior\", \"\");\r\n if (behavior.charAt(0) == \"z\") {\r\n this.selection.set(\"draw\", () => { });\r\n }\r\n }\r\n let x = local.x;\r\n let y = local.y;\r\n let xyPos = this._getPosition(local);\r\n this.setPrivate(\"point\", local);\r\n let snapToSeries = this.get(\"snapToSeries\");\r\n if (this._downPoint) {\r\n snapToSeries = undefined;\r\n }\r\n let userPositionX = this.get(\"positionX\");\r\n let positionX = xyPos.x;\r\n if ($type.isNumber(userPositionX)) {\r\n positionX = userPositionX;\r\n }\r\n let userPositionY = this.get(\"positionY\");\r\n let positionY = xyPos.y;\r\n if ($type.isNumber(userPositionY)) {\r\n positionY = userPositionY;\r\n }\r\n this.setPrivate(\"positionX\", positionX);\r\n this.setPrivate(\"positionY\", positionY);\r\n const xy = this._getPoint(positionX, positionY);\r\n x = xy.x;\r\n y = xy.y;\r\n chart.xAxes.each((axis) => {\r\n axis._handleCursorPosition(positionX, snapToSeries);\r\n if (alwaysShow) {\r\n axis.handleCursorShow();\r\n }\r\n });\r\n chart.yAxes.each((axis) => {\r\n axis._handleCursorPosition(positionY, snapToSeries);\r\n if (alwaysShow) {\r\n axis.handleCursorShow();\r\n }\r\n });\r\n if (!skipEvent) {\r\n chart._handleCursorPosition();\r\n const type = \"cursormoved\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, point: point, originalEvent: originalEvent });\r\n }\r\n }\r\n this._updateLines(x, y);\r\n chart.arrangeTooltips();\r\n }\r\n else if (!this._downPoint) {\r\n if (!alwaysShow) {\r\n this.hide(0);\r\n const type = \"cursorhidden\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n }\r\n }\r\n if (this._downPoint && this.get(\"behavior\") != \"none\") {\r\n this._updateSelection(local);\r\n }\r\n }\r\n _getPoint(positionX, positionY) {\r\n return { x: this.width() * positionX, y: this.height() * positionY };\r\n }\r\n _updateLines(x, y) {\r\n if (!this._tooltipX) {\r\n this.lineX.set(\"x\", x);\r\n }\r\n if (!this._tooltipY) {\r\n this.lineY.set(\"y\", y);\r\n }\r\n this._drawLines();\r\n }\r\n _updateSelection(point) {\r\n const selection = this.selection;\r\n const behavior = this.get(\"behavior\");\r\n const w = this.width();\r\n const h = this.height();\r\n if (point.x < 0) {\r\n point.x = 0;\r\n }\r\n if (point.x > w) {\r\n point.x = w;\r\n }\r\n if (point.y < 0) {\r\n point.y = 0;\r\n }\r\n if (point.y > h) {\r\n point.y = h;\r\n }\r\n selection.set(\"draw\", (display) => {\r\n const downPoint = this._downPoint;\r\n if (downPoint) {\r\n if (behavior === \"zoomXY\" || behavior === \"selectXY\") {\r\n display.moveTo(downPoint.x, downPoint.y);\r\n display.lineTo(downPoint.x, point.y);\r\n display.lineTo(point.x, point.y);\r\n display.lineTo(point.x, downPoint.y);\r\n display.lineTo(downPoint.x, downPoint.y);\r\n }\r\n else if (behavior === \"zoomX\" || behavior === \"selectX\") {\r\n display.moveTo(downPoint.x, 0);\r\n display.lineTo(downPoint.x, h);\r\n display.lineTo(point.x, h);\r\n display.lineTo(point.x, 0);\r\n display.lineTo(downPoint.x, 0);\r\n }\r\n else if (behavior === \"zoomY\" || behavior === \"selectY\") {\r\n display.moveTo(0, downPoint.y);\r\n display.lineTo(w, downPoint.y);\r\n display.lineTo(w, point.y);\r\n display.lineTo(0, point.y);\r\n display.lineTo(0, downPoint.y);\r\n }\r\n }\r\n });\r\n }\r\n _onHide() {\r\n if (this.isHidden()) {\r\n let chart = this.chart;\r\n if (chart) {\r\n chart.xAxes.each((axis) => {\r\n axis.handleCursorHide();\r\n });\r\n chart.yAxes.each((axis) => {\r\n axis.handleCursorHide();\r\n });\r\n chart.series.each((series) => {\r\n series.handleCursorHide();\r\n });\r\n }\r\n }\r\n super._onHide();\r\n }\r\n _onShow() {\r\n if (!this.isHidden()) {\r\n let chart = this.chart;\r\n if (chart) {\r\n chart.xAxes.each((axis) => {\r\n axis.handleCursorShow();\r\n });\r\n chart.yAxes.each((axis) => {\r\n axis.handleCursorShow();\r\n });\r\n }\r\n }\r\n super._onShow();\r\n }\r\n _dispose() {\r\n super._dispose();\r\n this.selection.dispose();\r\n }\r\n}\r\nObject.defineProperty(XYCursor, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"XYCursor\"\r\n});\r\nObject.defineProperty(XYCursor, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([XYCursor.className])\r\n});\r\n","import { DataItem } from \"../../../core/render/Component\";\r\nimport { Component } from \"../../../core/render/Component\";\r\nimport { Container } from \"../../../core/render/Container\";\r\nimport { p100 } from \"../../../core/util/Percent\";\r\nimport { List } from \"../../../core/util/List\";\r\nimport { Rectangle } from \"../../../core/render/Rectangle\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\n/**\r\n * A base class for all axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Adding_axes} for more info\r\n */\r\nexport class Axis extends Component {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_series\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_isPanning\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * Array of minor data items.\r\n */\r\n Object.defineProperty(this, \"minorDataItems\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n /**\r\n * A [[Container]] that holds all the axis label elements.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"labelsContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, {}))\r\n });\r\n /**\r\n * A [[Container]] that holds all the axis grid and fill elements.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"gridContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.new(this._root, { width: p100, height: p100 })\r\n });\r\n /**\r\n * A [[Container]] that holds axis grid elements which goes above the series.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"topGridContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.new(this._root, { width: p100, height: p100 })\r\n });\r\n /**\r\n * A [[Container]] that holds all the axis bullet elements.\r\n *\r\n * @default new Container\r\n */\r\n Object.defineProperty(this, \"bulletsContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, { isMeasured: false, width: p100, height: p100, position: \"absolute\" }))\r\n });\r\n /**\r\n * A referenece to the the chart the axis belongs to.\r\n */\r\n Object.defineProperty(this, \"chart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_rangesDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_panStart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_panEnd\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_sAnimation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_eAnimation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_skipSync\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * A list of axis ranges.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n * @default new List()\r\n */\r\n Object.defineProperty(this, \"axisRanges\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new List()\r\n });\r\n Object.defineProperty(this, \"_seriesAxisRanges\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n /**\r\n * A control label that is invisible but is used to keep width the width of\r\n * the axis constant.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/value-axis/#Ghost_label} for more info\r\n */\r\n Object.defineProperty(this, \"ghostLabel\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_cursorPosition\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: -1\r\n });\r\n Object.defineProperty(this, \"_snapToSeries\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_seriesValuesDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_seriesAdded\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * A container above the axis that can be used to add additional stuff into\r\n * it. For example a legend, label, or an icon.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-headers/} for more info\r\n * @default new Container\r\n */\r\n Object.defineProperty(this, \"axisHeader\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, {\r\n themeTags: [\"axis\", \"header\"],\r\n position: \"absolute\",\r\n background: Rectangle.new(this._root, {\r\n themeTags: [\"header\", \"background\"],\r\n fill: this._root.interfaceColors.get(\"background\")\r\n })\r\n }))\r\n });\r\n Object.defineProperty(this, \"_bullets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n }\r\n _dispose() {\r\n // these could be in other parents, so disposing just in case\r\n this.gridContainer.dispose();\r\n this.topGridContainer.dispose();\r\n this.bulletsContainer.dispose();\r\n this.labelsContainer.dispose();\r\n this.axisHeader.dispose();\r\n super._dispose();\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this.setPrivate(\"updateScrollbar\", true);\r\n this._disposers.push(this.axisRanges.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n $array.each(change.oldValues, (dataItem) => {\r\n this.disposeDataItem(dataItem);\r\n });\r\n }\r\n else if (change.type === \"push\") {\r\n this._processAxisRange(change.newValue, [\"range\"]);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n this._processAxisRange(change.newValue, [\"range\"]);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n this._processAxisRange(change.newValue, [\"range\"]);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this.disposeDataItem(change.oldValue);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n this._processAxisRange(change.value, [\"range\"]);\r\n }\r\n else {\r\n throw new Error(\"Unknown IStreamEvent type\");\r\n }\r\n }));\r\n const renderer = this.get(\"renderer\");\r\n if (renderer) {\r\n renderer.axis = this;\r\n renderer.processAxis();\r\n }\r\n this.children.push(renderer);\r\n this.ghostLabel = renderer.makeLabel(new DataItem(this, undefined, {}), []);\r\n this.ghostLabel.adapters.disable(\"text\");\r\n this.ghostLabel.setAll({ opacity: 0, tooltipText: undefined, tooltipHTML: undefined, interactive: false });\r\n this.ghostLabel.events.disable();\r\n }\r\n _updateFinals(_start, _end) {\r\n }\r\n /**\r\n * Zooms the axis to relative locations.\r\n *\r\n * Both `start` and `end` are relative: 0 means start of the axis, 1 - end.\r\n *\r\n * @param start Relative start\r\n * @param end Relative end\r\n * @param duration Duration of the zoom animation in milliseconds\r\n * @return Zoom animation\r\n */\r\n zoom(start, end, duration, priority) {\r\n if (this.get(\"zoomable\", true)) {\r\n this._updateFinals(start, end);\r\n if (this.get(\"start\") !== start || this.get(\"end\") != end) {\r\n let sAnimation = this._sAnimation;\r\n let eAnimation = this._eAnimation;\r\n let maxDeviation = this.get(\"maxDeviation\", 0.5) * Math.min(1, (end - start));\r\n if (start < -maxDeviation) {\r\n start = -maxDeviation;\r\n }\r\n if (end > 1 + maxDeviation) {\r\n end = 1 + maxDeviation;\r\n }\r\n if (start > end) {\r\n [start, end] = [end, start];\r\n }\r\n if (!$type.isNumber(duration)) {\r\n duration = this.get(\"interpolationDuration\", 0);\r\n }\r\n if (!priority) {\r\n priority = \"end\";\r\n }\r\n let maxZoomFactor = this.getPrivate(\"maxZoomFactor\", this.get(\"maxZoomFactor\", 100));\r\n let maxZoomFactorReal = maxZoomFactor;\r\n if (end === 1 && start !== 0) {\r\n if (start < this.get(\"start\", 0)) {\r\n priority = \"start\";\r\n }\r\n else {\r\n priority = \"end\";\r\n }\r\n }\r\n if (start === 0 && end !== 1) {\r\n if (end > this.get(\"end\", 1)) {\r\n priority = \"end\";\r\n }\r\n else {\r\n priority = \"start\";\r\n }\r\n }\r\n let minZoomCount = this.get(\"minZoomCount\", 0);\r\n let maxZoomCount = this.get(\"maxZoomCount\", Infinity);\r\n if ($type.isNumber(minZoomCount)) {\r\n maxZoomFactor = maxZoomFactorReal / minZoomCount;\r\n }\r\n let minZoomFactor = 1;\r\n if ($type.isNumber(maxZoomCount)) {\r\n minZoomFactor = maxZoomFactorReal / maxZoomCount;\r\n }\r\n // most likely we are dragging left scrollbar grip here, so we tend to modify end\r\n if (priority === \"start\") {\r\n if (maxZoomCount > 0) {\r\n // add to the end\r\n if (1 / (end - start) < minZoomFactor) {\r\n end = start + 1 / minZoomFactor;\r\n }\r\n }\r\n // add to the end\r\n if (1 / (end - start) > maxZoomFactor) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n //unless end is > 0\r\n if (end > 1 && end - start < 1 / maxZoomFactor) {\r\n //end = 1;\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n }\r\n // most likely we are dragging right, so we modify left\r\n else {\r\n if (maxZoomCount > 0) {\r\n // add to the end\r\n if (1 / (end - start) < minZoomFactor) {\r\n start = end - 1 / minZoomFactor;\r\n }\r\n }\r\n // remove from start\r\n if (1 / (end - start) > maxZoomFactor) {\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n if (start < 0 && end - start < 1 / maxZoomFactor) {\r\n //start = 0;\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n }\r\n if (1 / (end - start) > maxZoomFactor) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n if (1 / (end - start) > maxZoomFactor) {\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n if (maxZoomCount != null && minZoomCount != null && (start == this.get(\"start\") && end == this.get(\"end\"))) {\r\n const chart = this.chart;\r\n if (chart) {\r\n chart._handleAxisSelection(this, true);\r\n }\r\n }\r\n if (((sAnimation && sAnimation.playing && sAnimation.to == start) || this.get(\"start\") == start) && ((eAnimation && eAnimation.playing && eAnimation.to == end) || this.get(\"end\") == end)) {\r\n return;\r\n }\r\n if (duration > 0) {\r\n let easing = this.get(\"interpolationEasing\");\r\n let sAnimation, eAnimation;\r\n if (this.get(\"start\") != start) {\r\n sAnimation = this.animate({ key: \"start\", to: start, duration: duration, easing: easing });\r\n }\r\n if (this.get(\"end\") != end) {\r\n eAnimation = this.animate({ key: \"end\", to: end, duration: duration, easing: easing });\r\n }\r\n this._sAnimation = sAnimation;\r\n this._eAnimation = eAnimation;\r\n if (sAnimation) {\r\n return sAnimation;\r\n }\r\n else if (eAnimation) {\r\n return eAnimation;\r\n }\r\n }\r\n else {\r\n this.set(\"start\", start);\r\n this.set(\"end\", end);\r\n }\r\n }\r\n else {\r\n if (this._sAnimation) {\r\n this._sAnimation.stop();\r\n }\r\n if (this._eAnimation) {\r\n this._eAnimation.stop();\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * A list of series using this axis.\r\n *\r\n * @return Series\r\n */\r\n get series() {\r\n return this._series;\r\n }\r\n _processAxisRange(dataItem, themeTags) {\r\n dataItem.setRaw(\"isRange\", true);\r\n this._createAssets(dataItem, themeTags);\r\n this._rangesDirty = true;\r\n this._prepareDataItem(dataItem);\r\n const above = dataItem.get(\"above\");\r\n const container = this.topGridContainer;\r\n const grid = dataItem.get(\"grid\");\r\n if (above && grid) {\r\n container.children.moveValue(grid);\r\n }\r\n const fill = dataItem.get(\"axisFill\");\r\n if (above && fill) {\r\n container.children.moveValue(fill);\r\n }\r\n }\r\n _prepareDataItem(_dataItem, _index) { }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyExtremes() {\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtySelectionExtremes() {\r\n }\r\n _calculateTotals() {\r\n }\r\n _updateAxisRanges() {\r\n this._bullets = {};\r\n this.axisRanges.each((axisRange) => {\r\n this._prepareDataItem(axisRange);\r\n });\r\n $array.each(this._seriesAxisRanges, (axisRange) => {\r\n this._prepareDataItem(axisRange);\r\n });\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n if (this.get(\"fixAxisSize\")) {\r\n this.ghostLabel.set(\"visible\", true);\r\n }\r\n else {\r\n this.ghostLabel.set(\"visible\", false);\r\n }\r\n if (this.isDirty(\"start\") || this.isDirty(\"end\")) {\r\n const chart = this.chart;\r\n if (chart) {\r\n chart._updateCursor();\r\n }\r\n let start = this.get(\"start\", 0);\r\n let end = this.get(\"end\", 1);\r\n let maxDeviation = this.get(\"maxDeviation\", 0.5) * Math.min(1, (end - start));\r\n if (start < -maxDeviation) {\r\n let delta = start + maxDeviation;\r\n start = -maxDeviation;\r\n this.setRaw(\"start\", start);\r\n if (this.isDirty(\"end\")) {\r\n this.setRaw(\"end\", end - delta);\r\n }\r\n }\r\n if (end > 1 + maxDeviation) {\r\n let delta = end - 1 - maxDeviation;\r\n end = 1 + maxDeviation;\r\n this.setRaw(\"end\", end);\r\n if (this.isDirty(\"start\")) {\r\n this.setRaw(\"start\", start - delta);\r\n }\r\n }\r\n }\r\n const renderer = this.get(\"renderer\");\r\n renderer._start = this.get(\"start\");\r\n renderer._end = this.get(\"end\");\r\n renderer._inversed = renderer.get(\"inversed\", false);\r\n renderer._axisLength = renderer.axisLength() / (renderer._end - renderer._start);\r\n renderer._updateLC();\r\n if (this.isDirty(\"tooltip\")) {\r\n const tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n const rendererTags = renderer.get(\"themeTags\");\r\n tooltip.addTag(\"axis\");\r\n tooltip.addTag(this.className.toLowerCase());\r\n tooltip._applyThemes();\r\n if (rendererTags) {\r\n tooltip.set(\"themeTags\", $utils.mergeTags(tooltip.get(\"themeTags\"), rendererTags));\r\n tooltip.label._applyThemes();\r\n }\r\n }\r\n }\r\n }\r\n _updateTooltipBounds() {\r\n const tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n this.get(\"renderer\").updateTooltipBounds(tooltip);\r\n }\r\n }\r\n _updateBounds() {\r\n super._updateBounds();\r\n this._updateTooltipBounds();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n processChart(chart) {\r\n this.chart = chart;\r\n const renderer = this.get(\"renderer\");\r\n renderer.chart = chart;\r\n chart.gridContainer.children.push(this.gridContainer);\r\n chart.topGridContainer.children.push(this.topGridContainer);\r\n chart.axisHeadersContainer.children.push(this.axisHeader);\r\n this.on(\"start\", () => {\r\n chart._handleAxisSelection(this);\r\n });\r\n this.on(\"end\", () => {\r\n chart._handleAxisSelection(this);\r\n });\r\n chart.plotContainer.onPrivate(\"width\", () => {\r\n this.markDirtySize();\r\n });\r\n chart.plotContainer.onPrivate(\"height\", () => {\r\n this.markDirtySize();\r\n });\r\n chart.processAxis(this);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n hideDataItem(dataItem) {\r\n this._toggleFHDataItem(dataItem, true);\r\n return super.hideDataItem(dataItem);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n showDataItem(dataItem) {\r\n this._toggleFHDataItem(dataItem, false);\r\n return super.showDataItem(dataItem);\r\n }\r\n _toggleFHDataItem(dataItem, forceHidden) {\r\n const fh = \"forceHidden\";\r\n const label = dataItem.get(\"label\");\r\n if (label) {\r\n label.set(fh, forceHidden);\r\n }\r\n const grid = dataItem.get(\"grid\");\r\n if (grid) {\r\n grid.set(fh, forceHidden);\r\n }\r\n const tick = dataItem.get(\"tick\");\r\n if (tick) {\r\n tick.set(fh, forceHidden);\r\n }\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n axisFill.set(fh, forceHidden);\r\n }\r\n const bullet = dataItem.get(\"bullet\");\r\n if (bullet) {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite.set(fh, forceHidden);\r\n }\r\n }\r\n }\r\n _toggleDataItem(dataItem, visible) {\r\n const label = dataItem.get(\"label\");\r\n const v = \"visible\";\r\n if (label) {\r\n label.setPrivate(v, visible);\r\n }\r\n const grid = dataItem.get(\"grid\");\r\n if (grid) {\r\n grid.setPrivate(v, visible);\r\n }\r\n const tick = dataItem.get(\"tick\");\r\n if (tick) {\r\n tick.setPrivate(v, visible);\r\n }\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n axisFill.setPrivate(v, visible);\r\n }\r\n const bullet = dataItem.get(\"bullet\");\r\n if (bullet) {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite.setPrivate(v, visible);\r\n }\r\n }\r\n }\r\n _createAssets(dataItem, tags, minor) {\r\n var _a, _b, _c;\r\n const renderer = this.get(\"renderer\");\r\n let m = \"minor\";\r\n const label = dataItem.get(\"label\");\r\n if (!label) {\r\n renderer.makeLabel(dataItem, tags);\r\n }\r\n else {\r\n let themeTags = label.get(\"themeTags\");\r\n let remove = false;\r\n if (minor) {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) == -1) {\r\n remove = true;\r\n }\r\n }\r\n else {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) != -1) {\r\n remove = true;\r\n }\r\n }\r\n if (remove) {\r\n (_a = label.parent) === null || _a === void 0 ? void 0 : _a.children.removeValue(label);\r\n renderer.makeLabel(dataItem, tags);\r\n label.dispose();\r\n renderer.labels.removeValue(label);\r\n }\r\n }\r\n const grid = dataItem.get(\"grid\");\r\n if (!grid) {\r\n renderer.makeGrid(dataItem, tags);\r\n }\r\n else {\r\n let themeTags = grid.get(\"themeTags\");\r\n let remove = false;\r\n if (minor) {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) == -1) {\r\n remove = true;\r\n }\r\n }\r\n else {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) != -1) {\r\n remove = true;\r\n }\r\n }\r\n if (remove) {\r\n (_b = grid.parent) === null || _b === void 0 ? void 0 : _b.children.removeValue(grid);\r\n renderer.makeGrid(dataItem, tags);\r\n grid.dispose();\r\n renderer.grid.removeValue(grid);\r\n }\r\n }\r\n const tick = dataItem.get(\"tick\");\r\n if (!tick) {\r\n renderer.makeTick(dataItem, tags);\r\n }\r\n else {\r\n let remove = false;\r\n let themeTags = tick.get(\"themeTags\");\r\n if (minor) {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) == -1) {\r\n remove = true;\r\n }\r\n }\r\n else {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) != -1) {\r\n remove = true;\r\n }\r\n }\r\n if (remove) {\r\n (_c = tick.parent) === null || _c === void 0 ? void 0 : _c.children.removeValue(tick);\r\n renderer.makeTick(dataItem, tags);\r\n tick.dispose();\r\n renderer.ticks.removeValue(tick);\r\n }\r\n }\r\n if (!minor && !dataItem.get(\"axisFill\")) {\r\n renderer.makeAxisFill(dataItem, tags);\r\n }\r\n this._processBullet(dataItem);\r\n }\r\n _processBullet(dataItem) {\r\n let bullet = dataItem.get(\"bullet\");\r\n let axisBullet = this.get(\"bullet\");\r\n if (!bullet && axisBullet && !dataItem.get(\"isRange\")) {\r\n bullet = axisBullet(this._root, this, dataItem);\r\n }\r\n if (bullet) {\r\n bullet.axis = this;\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite._setDataItem(dataItem);\r\n dataItem.setRaw(\"bullet\", bullet);\r\n if (!sprite.parent) {\r\n this.bulletsContainer.children.push(sprite);\r\n }\r\n }\r\n }\r\n }\r\n _afterChanged() {\r\n super._afterChanged();\r\n const chart = this.chart;\r\n if (chart) {\r\n chart._updateChartLayout();\r\n chart.axisHeadersContainer.markDirtySize();\r\n }\r\n this.get(\"renderer\")._updatePositions();\r\n this._seriesAdded = false;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n disposeDataItem(dataItem) {\r\n super.disposeDataItem(dataItem);\r\n const renderer = this.get(\"renderer\");\r\n const label = dataItem.get(\"label\");\r\n if (label) {\r\n renderer.labels.removeValue(label);\r\n label.dispose();\r\n }\r\n const tick = dataItem.get(\"tick\");\r\n if (tick) {\r\n renderer.ticks.removeValue(tick);\r\n tick.dispose();\r\n }\r\n const grid = dataItem.get(\"grid\");\r\n if (grid) {\r\n renderer.grid.removeValue(grid);\r\n grid.dispose();\r\n }\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n renderer.axisFills.removeValue(axisFill);\r\n axisFill.dispose();\r\n }\r\n const bullet = dataItem.get(\"bullet\");\r\n if (bullet) {\r\n bullet.dispose();\r\n }\r\n }\r\n _updateGhost() {\r\n this.setPrivate(\"cellWidth\", this.getCellWidthPosition() * this.get(\"renderer\").axisLength());\r\n const ghostLabel = this.ghostLabel;\r\n if (!ghostLabel.isHidden()) {\r\n const bounds = ghostLabel.localBounds();\r\n const gWidth = Math.ceil(bounds.right - bounds.left);\r\n let text = ghostLabel.get(\"text\");\r\n $array.each(this.dataItems, (dataItem) => {\r\n const label = dataItem.get(\"label\");\r\n if (label && !label.isHidden()) {\r\n const bounds = label.localBounds();\r\n const w = Math.ceil(bounds.right - bounds.left);\r\n if (w > gWidth) {\r\n text = label.text._getText();\r\n }\r\n }\r\n });\r\n ghostLabel.set(\"text\", text);\r\n }\r\n let start = this.get(\"start\", 0);\r\n let end = this.get(\"end\", 1);\r\n this.get(\"renderer\").updateLabel(ghostLabel, start + (end - start) * 0.5);\r\n }\r\n _handleCursorPosition(position, snapToSeries) {\r\n const renderer = this.get(\"renderer\");\r\n position = renderer.toAxisPosition(position);\r\n this._cursorPosition = position;\r\n this._snapToSeries = snapToSeries;\r\n this.updateTooltip();\r\n }\r\n /**\r\n * Can be called when axis zoom changes and you need to update tooltip\r\n * position.\r\n */\r\n updateTooltip() {\r\n const snapToSeries = this._snapToSeries;\r\n let position = this._cursorPosition;\r\n const tooltip = this.get(\"tooltip\");\r\n const renderer = this.get(\"renderer\");\r\n if ($type.isNumber(position)) {\r\n $array.each(this.series, (series) => {\r\n if (series.get(\"baseAxis\") === this) {\r\n const dataItem = this.getSeriesItem(series, position, this.get(\"tooltipLocation\"));\r\n if (snapToSeries && snapToSeries.indexOf(series) != -1) {\r\n series.updateLegendMarker(dataItem);\r\n series.updateLegendValue(dataItem);\r\n series._settings.tooltipDataItem = dataItem;\r\n }\r\n else {\r\n series.showDataItemTooltip(dataItem);\r\n series.setRaw(\"tooltipDataItem\", dataItem);\r\n }\r\n }\r\n });\r\n if (this.get(\"snapTooltip\")) {\r\n position = this.roundAxisPosition(position, this.get(\"tooltipLocation\", 0.5));\r\n }\r\n this.setPrivateRaw(\"tooltipPosition\", position);\r\n if (tooltip) {\r\n renderer.updateTooltipBounds(tooltip);\r\n if (!$type.isNaN(position)) {\r\n this._updateTooltipText(tooltip, position);\r\n renderer.positionTooltip(tooltip, position);\r\n if (position < this.get(\"start\", 0) || position > this.get(\"end\", 1)) {\r\n tooltip.hide(0);\r\n }\r\n else {\r\n tooltip.show(0);\r\n }\r\n }\r\n else {\r\n tooltip.hide(0);\r\n }\r\n }\r\n }\r\n }\r\n _updateTooltipText(tooltip, position) {\r\n tooltip.label.set(\"text\", this.getTooltipText(position));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n roundAxisPosition(position, _location) {\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n handleCursorShow() {\r\n let tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip.show();\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n handleCursorHide() {\r\n let tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip.hide();\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n processSeriesDataItem(_dataItem, _fields) {\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._sizeDirty = false;\r\n this._rangesDirty = false;\r\n }\r\n /**\r\n * Converts pixel coordinate to a relative position on axis.\r\n *\r\n * @param coordinate Coordinate\r\n * @return Relative position\r\n */\r\n coordinateToPosition(coordinate) {\r\n const renderer = this.get(\"renderer\");\r\n return renderer.toAxisPosition(coordinate / renderer.axisLength());\r\n }\r\n /**\r\n * Converts relative position of the plot area to relative position of the\r\n * axis with zoom taken into account.\r\n *\r\n * @param position Position\r\n * @return Relative position\r\n */\r\n toAxisPosition(position) {\r\n return this.get(\"renderer\").toAxisPosition(position);\r\n }\r\n /**\r\n * Converts relative position of the axis to a global position taking current\r\n * zoom into account (opposite to what `toAxisPosition` does).\r\n *\r\n * @since 5.4.2\r\n * @param position Position\r\n * @return Global position\r\n */\r\n toGlobalPosition(position) {\r\n return this.get(\"renderer\").toGlobalPosition(position);\r\n }\r\n /**\r\n * Adjusts position with inversed taken into account.\r\n *\r\n * @ignore\r\n */\r\n fixPosition(position) {\r\n return this.get(\"renderer\").fixPosition(position);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n shouldGap(_dataItem, _nextItem, _autoGapCount, _fieldName) {\r\n return false;\r\n }\r\n /**\r\n * Creates and returns an axis range object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n * @param axisDataItem Axis data item\r\n * @return Axis range\r\n */\r\n createAxisRange(axisDataItem) {\r\n return this.axisRanges.push(axisDataItem);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _groupSeriesData(_series) { }\r\n /**\r\n * Returns relative position between two grid lines of the axis.\r\n *\r\n * @return Position\r\n */\r\n getCellWidthPosition() {\r\n return 0.05;\r\n }\r\n}\r\nObject.defineProperty(Axis, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Axis\"\r\n});\r\nObject.defineProperty(Axis, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Component.classNames.concat([Axis.className])\r\n});\r\n","/** @ignore */ /** */\r\nimport * as $math from \"./Math\";\r\n/**\r\n * @ignore\r\n */\r\nexport function segmentedLine(display, segments) {\r\n for (let s = 0, len = segments.length; s < len; s++) {\r\n const groups = segments[s];\r\n if (groups.length > 0) {\r\n let firstGroup = groups[0];\r\n if (firstGroup.length > 0) {\r\n let firstPoint = firstGroup[0];\r\n display.moveTo(firstPoint.x, firstPoint.y);\r\n for (let g = 0, len = groups.length; g < len; g++) {\r\n line(display, groups[g]);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function line(display, points) {\r\n for (let p = 0, len = points.length; p < len; p++) {\r\n const point = points[p];\r\n display.lineTo(point.x, point.y);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function moveTo(display, point) {\r\n display.moveTo(point.x, point.y);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function clear(display) {\r\n display.clear();\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function smoothedSegmentedline(display, segments, tensionX, tensionY) {\r\n for (let s = 0, len = segments.length; s < len; s++) {\r\n const groups = segments[s];\r\n if (groups.length > 0) {\r\n let firstGroup = groups[0];\r\n if (firstGroup.length > 0) {\r\n let firstPoint = firstGroup[0];\r\n display.moveTo(firstPoint.x, firstPoint.y);\r\n for (let g = 0, len = groups.length; g < len; g++) {\r\n const points = groups[g];\r\n if (points.length > 0) {\r\n display.lineTo(points[0].x, points[0].y);\r\n }\r\n smoothedLine(display, points, tensionX, tensionY);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function smoothedLine(display, points, tensionX, tensionY) {\r\n for (let i = points.length - 1; i > 0; i--) {\r\n let p0 = points[i];\r\n let p1 = points[i - 1];\r\n if (Math.abs(p0.x - p1.x) < 0.1 && Math.abs(p0.y - p1.y) < 0.1) {\r\n points.splice(i - 1, 1);\r\n }\r\n }\r\n if (points.length < 3 || (tensionX >= 1 && tensionY >= 1)) {\r\n line(display, points);\r\n return;\r\n }\r\n tensionX = 1 - tensionX + 0.00001;\r\n tensionY = 1 - tensionY + 0.00001;\r\n let first = points[0];\r\n let last = points[points.length - 1];\r\n let closed = false;\r\n if ($math.round(first.x, 3) == $math.round(last.x) && $math.round(first.y) == $math.round(last.y)) {\r\n closed = true;\r\n }\r\n // Can't moveTo here, as it wont be possible to have fill then.\r\n let path = \"\";\r\n for (let i = 0, len = points.length - 1; i < len; i++) {\r\n let p0 = points[i - 1];\r\n let p1 = points[i];\r\n let p2 = points[i + 1];\r\n let p3 = points[i + 2];\r\n if (i === 0) {\r\n if (closed) {\r\n p0 = points[len - 2];\r\n }\r\n else {\r\n p0 = points[0];\r\n }\r\n }\r\n else if (i == len - 1) {\r\n if (closed) {\r\n p3 = points[1];\r\n }\r\n else {\r\n p3 = p2;\r\n }\r\n }\r\n let controlPointA = $math.getCubicControlPointA(p0, p1, p2, tensionX, tensionY);\r\n let controlPointB = $math.getCubicControlPointB(p1, p2, p3, tensionX, tensionY);\r\n display.bezierCurveTo(controlPointA.x, controlPointA.y, controlPointB.x, controlPointB.y, p2.x, p2.y);\r\n }\r\n return path;\r\n}\r\n","import { Graphics } from \"./Graphics\";\r\nimport * as $draw from \"../util/Draw\";\r\n/**\r\n * Draws a line.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class Line extends Graphics {\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"points\") || this.isDirty(\"segments\") || this._sizeDirty || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n const points = this.get(\"points\");\r\n const segments = this.get(\"segments\");\r\n if (points && points.length > 0) {\r\n let point = points[0];\r\n this._display.moveTo(point.x, point.y);\r\n $draw.segmentedLine(this._display, [[points]]);\r\n }\r\n else if (segments) {\r\n $draw.segmentedLine(this._display, segments);\r\n }\r\n else if (!this.get(\"draw\")) {\r\n let w = this.width();\r\n let h = this.height();\r\n this._display.moveTo(0, 0);\r\n this._display.lineTo(w, h);\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Line, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Line\"\r\n});\r\nObject.defineProperty(Line, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Line.className])\r\n});\r\n","import { Line } from \"./Line\";\r\n/**\r\n * Draws a tick element (mostly used on axes).\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n */\r\nexport class Tick extends Line {\r\n}\r\nObject.defineProperty(Tick, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Tick\"\r\n});\r\nObject.defineProperty(Tick, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Line.classNames.concat([Tick.className])\r\n});\r\n","import { Tick } from \"../../../core/render/Tick\";\r\n/**\r\n * Draws an axis tick.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/#Ticks} for more info\r\n * @important\r\n */\r\nexport class AxisTick extends Tick {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_tickPoints\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n}\r\nObject.defineProperty(AxisTick, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"AxisTick\"\r\n});\r\nObject.defineProperty(AxisTick, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Tick.classNames.concat([AxisTick.className])\r\n});\r\n","import { Label } from \"../../../core/render/Label\";\r\n/**\r\n * Draws an axis label.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/#Labels} for more info\r\n * @important\r\n */\r\nexport class AxisLabel extends Label {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_tickPoints\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n}\r\nObject.defineProperty(AxisLabel, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"AxisLabel\"\r\n});\r\nObject.defineProperty(AxisLabel, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Label.classNames.concat([AxisLabel.className])\r\n});\r\n","import { Graphics } from \"../../../core/render/Graphics\";\r\nimport { Template } from \"../../../core/util/Template\";\r\nimport { ListTemplate } from \"../../../core/util/List\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { Grid } from \"./Grid\";\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\n/**\r\n * Base class for an axis renderer.\r\n *\r\n * Should not be used on its own.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Axis_renderer} for more info\r\n */\r\nexport class AxisRenderer extends Graphics {\r\n constructor() {\r\n super(...arguments);\r\n // save for quick access\r\n Object.defineProperty(this, \"_axisLength\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 100\r\n });\r\n Object.defineProperty(this, \"_start\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_end\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_inversed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_minSize\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n /**\r\n * Chart the renderer is used in.\r\n */\r\n Object.defineProperty(this, \"chart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_lc\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_ls\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_thumbDownPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downStart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downEnd\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A list of ticks in the axis.\r\n *\r\n * `ticks.template` can be used to configure ticks.\r\n *\r\n * @default new ListTemplate<AxisTick>\r\n */\r\n Object.defineProperty(this, \"ticks\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => AxisTick._new(this._root, {\r\n themeTags: $utils.mergeTags(this.ticks.template.get(\"themeTags\", []), this.get(\"themeTags\", []))\r\n }, [this.ticks.template]))\r\n });\r\n /**\r\n * A list of grid elements in the axis.\r\n *\r\n * `grid.template` can be used to configure grid.\r\n *\r\n * @default new ListTemplate<Grid>\r\n */\r\n Object.defineProperty(this, \"grid\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => Grid._new(this._root, {\r\n themeTags: $utils.mergeTags(this.grid.template.get(\"themeTags\", []), this.get(\"themeTags\", []))\r\n }, [this.grid.template]))\r\n });\r\n /**\r\n * A list of fills in the axis.\r\n *\r\n * `axisFills.template` can be used to configure axis fills.\r\n *\r\n * @default new ListTemplate<Graphics>\r\n */\r\n Object.defineProperty(this, \"axisFills\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => Graphics._new(this._root, {\r\n themeTags: $utils.mergeTags(this.axisFills.template.get(\"themeTags\", [\"axis\", \"fill\"]), this.get(\"themeTags\", []))\r\n }, [this.axisFills.template]))\r\n });\r\n /**\r\n * A list of labels in the axis.\r\n *\r\n * `labels.template` can be used to configure axis labels.\r\n *\r\n * @default new ListTemplate<AxisLabel>\r\n */\r\n Object.defineProperty(this, \"labels\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => AxisLabel._new(this._root, {\r\n themeTags: $utils.mergeTags(this.labels.template.get(\"themeTags\", []), this.get(\"themeTags\", []))\r\n }, [this.labels.template]))\r\n });\r\n /**\r\n * An [[Axis]] renderer is for.\r\n */\r\n Object.defineProperty(this, \"axis\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A thumb Graphics to be used for panning the axis (the one which shows under the labels when hovered)\r\n */\r\n Object.defineProperty(this, \"thumb\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeTick(dataItem, themeTags) {\r\n const tick = this.ticks.make();\r\n tick._setDataItem(dataItem);\r\n dataItem.setRaw(\"tick\", tick);\r\n tick.set(\"themeTags\", $utils.mergeTags(tick.get(\"themeTags\"), themeTags));\r\n this.axis.labelsContainer.children.push(tick);\r\n this.ticks.push(tick);\r\n return tick;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeGrid(dataItem, themeTags) {\r\n const grid = this.grid.make();\r\n grid._setDataItem(dataItem);\r\n dataItem.setRaw(\"grid\", grid);\r\n grid.set(\"themeTags\", $utils.mergeTags(grid.get(\"themeTags\"), themeTags));\r\n this.axis.gridContainer.children.push(grid);\r\n this.grid.push(grid);\r\n return grid;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeAxisFill(dataItem, themeTags) {\r\n const axisFill = this.axisFills.make();\r\n axisFill._setDataItem(dataItem);\r\n axisFill.set(\"themeTags\", $utils.mergeTags(axisFill.get(\"themeTags\"), themeTags));\r\n this.axis.gridContainer.children.push(axisFill);\r\n dataItem.setRaw(\"axisFill\", axisFill);\r\n this.axisFills.push(axisFill);\r\n return axisFill;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeLabel(dataItem, themeTags) {\r\n const label = this.labels.make();\r\n label.set(\"themeTags\", $utils.mergeTags(label.get(\"themeTags\"), themeTags));\r\n this.axis.labelsContainer.children.moveValue(label, 0);\r\n label._setDataItem(dataItem);\r\n dataItem.setRaw(\"label\", label);\r\n this.labels.push(label);\r\n return label;\r\n }\r\n axisLength() {\r\n return 0;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n gridCount() {\r\n return this.axisLength() / this.get(\"minGridDistance\", 50);\r\n }\r\n _updatePositions() {\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this.set(\"isMeasured\", false);\r\n const thumb = this.thumb;\r\n if (thumb) {\r\n this._disposers.push(thumb.events.on(\"pointerdown\", (event) => {\r\n this._handleThumbDown(event);\r\n }));\r\n this._disposers.push(thumb.events.on(\"globalpointerup\", (event) => {\r\n this._handleThumbUp(event);\r\n }));\r\n this._disposers.push(thumb.events.on(\"globalpointermove\", (event) => {\r\n this._handleThumbMove(event);\r\n }));\r\n }\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"minGridDistance\")) {\r\n this.root.events.once(\"frameended\", () => {\r\n this.axis.markDirtySize();\r\n });\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this.isDirty(\"pan\")) {\r\n const thumb = this.thumb;\r\n if (thumb) {\r\n const labelsContainer = this.axis.labelsContainer;\r\n const pan = this.get(\"pan\");\r\n if (pan == \"zoom\") {\r\n labelsContainer.children.push(thumb);\r\n }\r\n else if (pan == \"none\") {\r\n labelsContainer.children.removeValue(thumb);\r\n }\r\n }\r\n }\r\n }\r\n _handleThumbDown(event) {\r\n this._thumbDownPoint = this.toLocal(event.point);\r\n const axis = this.axis;\r\n this._downStart = axis.get(\"start\");\r\n this._downEnd = axis.get(\"end\");\r\n }\r\n _handleThumbUp(_event) {\r\n this._thumbDownPoint = undefined;\r\n }\r\n _handleThumbMove(event) {\r\n const downPoint = this._thumbDownPoint;\r\n if (downPoint) {\r\n const point = this.toLocal(event.point);\r\n const downStart = this._downStart;\r\n const downEnd = this._downEnd;\r\n const extra = this._getPan(point, downPoint) * Math.min(1, (downEnd - downStart)) / 2;\r\n this.axis.zoom(downStart - extra, downEnd + extra, 0);\r\n }\r\n }\r\n _getPan(_point1, _point2) {\r\n return 0;\r\n }\r\n /**\r\n * Converts relative position (0-1) on axis to a pixel coordinate.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n positionToCoordinate(position) {\r\n if (this._inversed) {\r\n return (this._end - position) * this._axisLength;\r\n }\r\n else {\r\n return (position - this._start) * this._axisLength;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTooltipBounds(_tooltip) { }\r\n _updateSize() {\r\n this.markDirty();\r\n this._clear = true;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toAxisPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n position = position * (end - start);\r\n if (!this.get(\"inversed\")) {\r\n position = start + position;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toGlobalPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n if (!this.get(\"inversed\")) {\r\n position = position - start;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n position = position / (end - start);\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n fixPosition(position) {\r\n if (this.get(\"inversed\")) {\r\n return 1 - position;\r\n }\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _updateLC() {\r\n }\r\n toggleVisibility(sprite, position, minPosition, maxPosition) {\r\n let axis = this.axis;\r\n const start = axis.get(\"start\", 0);\r\n const end = axis.get(\"end\", 1);\r\n let updatedStart = start + (end - start) * (minPosition - 0.0001);\r\n let updatedEnd = start + (end - start) * (maxPosition + 0.0001);\r\n if (position < updatedStart || position > updatedEnd) {\r\n sprite.setPrivate(\"visible\", false);\r\n }\r\n else {\r\n sprite.setPrivate(\"visible\", true);\r\n }\r\n }\r\n _positionTooltip(tooltip, point) {\r\n const chart = this.chart;\r\n if (chart) {\r\n tooltip.set(\"pointTo\", this._display.toGlobal(point));\r\n if (!chart.inPlot(point)) {\r\n tooltip.hide();\r\n }\r\n }\r\n }\r\n processAxis() { }\r\n}\r\nObject.defineProperty(AxisRenderer, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"AxisRenderer\"\r\n});\r\nObject.defineProperty(AxisRenderer, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([AxisRenderer.className])\r\n});\r\n","import { AxisRenderer } from \"./AxisRenderer\";\r\nimport { p100 } from \"../../../core/util/Percent\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\nimport { Rectangle } from \"../../../core/render/Rectangle\";\r\n/**\r\n * Used to render horizontal axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Axis_renderer} for more info\r\n * @important\r\n */\r\nexport class AxisRendererX extends AxisRenderer {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"thumb\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Rectangle.new(this._root, { width: p100, isMeasured: false, themeTags: [\"axis\", \"x\", \"thumb\"] })\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"renderer\", \"x\"]);\r\n super._afterNew();\r\n this.setPrivateRaw(\"letter\", \"X\");\r\n const gridTemplate = this.grid.template;\r\n gridTemplate.set(\"height\", p100);\r\n gridTemplate.set(\"width\", 0);\r\n gridTemplate.set(\"draw\", (display, graphics) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(0, graphics.height());\r\n });\r\n this.set(\"draw\", (display, graphics) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(graphics.width(), 0);\r\n });\r\n }\r\n _changed() {\r\n super._changed();\r\n const axis = this.axis;\r\n axis.ghostLabel.setPrivate(\"visible\", !this.get(\"inside\"));\r\n axis.ghostLabel.set(\"x\", -1000);\r\n const opposite = \"opposite\";\r\n const inside = \"inside\";\r\n if (this.isDirty(opposite) || this.isDirty(inside)) {\r\n const chart = this.chart;\r\n const axisChildren = axis.children;\r\n if (this.get(inside)) {\r\n axis.addTag(inside);\r\n }\r\n else {\r\n axis.removeTag(inside);\r\n }\r\n if (chart) {\r\n if (this.get(opposite)) {\r\n const children = chart.topAxesContainer.children;\r\n if (children.indexOf(axis) == -1) {\r\n children.insertIndex(0, axis);\r\n }\r\n axis.addTag(opposite);\r\n axisChildren.moveValue(this);\r\n }\r\n else {\r\n const children = chart.bottomAxesContainer.children;\r\n if (children.indexOf(axis) == -1) {\r\n children.moveValue(axis);\r\n }\r\n axis.removeTag(opposite);\r\n axisChildren.moveValue(this, 0);\r\n }\r\n axis.ghostLabel._applyThemes();\r\n this.labels.each((label) => {\r\n label._applyThemes();\r\n });\r\n this.root._markDirtyRedraw();\r\n }\r\n axis.markDirtySize();\r\n }\r\n this.thumb.setPrivate(\"height\", axis.labelsContainer.height());\r\n }\r\n _getPan(point1, point2) {\r\n return (point2.x - point1.x) / this.width();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toAxisPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n position -= this._ls;\r\n position = position * (end - start) / this._lc;\r\n if (!this.get(\"inversed\")) {\r\n position = start + position;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toGlobalPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n if (!this.get(\"inversed\")) {\r\n position = position - start;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n position = position / (end - start) * this._lc;\r\n position += this._ls;\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _updateLC() {\r\n const axis = this.axis;\r\n const parent = axis.parent;\r\n if (parent) {\r\n const w = parent.innerWidth();\r\n this._lc = this.axisLength() / w;\r\n this._ls = (axis.x() - parent.get(\"paddingLeft\", 0)) / w;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _updatePositions() {\r\n const axis = this.axis;\r\n const x = axis.x() - $utils.relativeToValue(axis.get(\"centerX\", 0), axis.width()) - axis.parent.get(\"paddingLeft\", 0);\r\n axis.gridContainer.set(\"x\", x);\r\n axis.topGridContainer.set(\"x\", x);\r\n axis.bulletsContainer.set(\"y\", this.y());\r\n const chart = axis.chart;\r\n if (chart) {\r\n const plotContainer = chart.plotContainer;\r\n const axisHeader = axis.axisHeader;\r\n let width = axis.get(\"marginLeft\", 0);\r\n let x = axis.x() - width;\r\n const parent = axis.parent;\r\n if (parent) {\r\n x -= parent.get(\"paddingLeft\", 0);\r\n }\r\n if (axisHeader.children.length > 0) {\r\n width = axis.axisHeader.width();\r\n axis.set(\"marginLeft\", width + 1);\r\n }\r\n else {\r\n axisHeader.set(\"width\", width);\r\n }\r\n axisHeader.setAll({ x: x, y: -1, height: plotContainer.height() + 2 });\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n processAxis() {\r\n super.processAxis();\r\n const axis = this.axis;\r\n if (axis.get(\"width\") == null) {\r\n axis.set(\"width\", p100);\r\n }\r\n ;\r\n const verticalLayout = this._root.verticalLayout;\r\n axis.set(\"layout\", verticalLayout);\r\n axis.labelsContainer.set(\"width\", p100);\r\n axis.axisHeader.setAll({ layout: verticalLayout });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n axisLength() {\r\n return this.axis.width();\r\n }\r\n /**\r\n * Converts axis relative position to actual coordinate in pixels.\r\n *\r\n * @param position Position\r\n * @return Point\r\n */\r\n positionToPoint(position) {\r\n return { x: this.positionToCoordinate(position), y: 0 };\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTick(tick, position, endPosition, count) {\r\n if (tick) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = 0.5;\r\n if ($type.isNumber(count) && count > 1) {\r\n location = tick.get(\"multiLocation\", location);\r\n }\r\n else {\r\n location = tick.get(\"location\", location);\r\n }\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n tick.set(\"x\", this.positionToCoordinate(position));\r\n let length = tick.get(\"length\", 0);\r\n const inside = tick.get(\"inside\", this.get(\"inside\", false));\r\n if (this.get(\"opposite\")) {\r\n tick.set(\"y\", p100);\r\n if (!inside) {\r\n length *= -1;\r\n }\r\n }\r\n else {\r\n tick.set(\"y\", 0);\r\n if (inside) {\r\n length *= -1;\r\n }\r\n }\r\n tick.set(\"draw\", (display) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(0, length);\r\n });\r\n this.toggleVisibility(tick, position, tick.get(\"minPosition\", 0), tick.get(\"maxPosition\", 1));\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLabel(label, position, endPosition, count) {\r\n if (label) {\r\n let location = 0.5;\r\n if ($type.isNumber(count) && count > 1) {\r\n location = label.get(\"multiLocation\", location);\r\n }\r\n else {\r\n location = label.get(\"location\", location);\r\n }\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n const inside = label.get(\"inside\", this.get(\"inside\", false));\r\n const opposite = this.get(\"opposite\");\r\n if (opposite) {\r\n if (!inside) {\r\n label.set(\"position\", \"relative\");\r\n label.set(\"y\", p100);\r\n }\r\n else {\r\n label.set(\"position\", \"absolute\");\r\n label.set(\"y\", 0);\r\n }\r\n }\r\n else {\r\n if (!inside) {\r\n label.set(\"y\", undefined);\r\n label.set(\"position\", \"relative\");\r\n }\r\n else {\r\n label.set(\"y\", 0);\r\n label.set(\"position\", \"absolute\");\r\n }\r\n }\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n label.set(\"x\", this.positionToCoordinate(position));\r\n this.toggleVisibility(label, position, label.get(\"minPosition\", 0), label.get(\"maxPosition\", 1));\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateGrid(grid, position, endPosition) {\r\n if (grid) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = grid.get(\"location\", 0.5);\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n grid.set(\"x\", this.positionToCoordinate(position));\r\n this.toggleVisibility(grid, position, 0, 1);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateBullet(bullet, position, endPosition) {\r\n if (bullet) {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = bullet.get(\"location\", 0.5);\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n let bulletPosition = this.axis.roundAxisPosition(position, location);\r\n let previousBullet = this.axis._bullets[bulletPosition];\r\n let d = -1;\r\n if (this.get(\"opposite\")) {\r\n d = 1;\r\n }\r\n if (bullet.get(\"stacked\")) {\r\n if (previousBullet) {\r\n let previousSprite = previousBullet.get(\"sprite\");\r\n if (previousSprite) {\r\n sprite.set(\"y\", previousSprite.y() + previousSprite.height() * d);\r\n }\r\n }\r\n else {\r\n sprite.set(\"y\", 0);\r\n }\r\n }\r\n this.axis._bullets[bulletPosition] = bullet;\r\n sprite.set(\"x\", this.positionToCoordinate(position));\r\n this.toggleVisibility(sprite, position, 0, 1);\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateFill(fill, position, endPosition) {\r\n if (fill) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n if (!$type.isNumber(endPosition)) {\r\n endPosition = 1;\r\n }\r\n let x0 = this.positionToCoordinate(position);\r\n let x1 = this.positionToCoordinate(endPosition);\r\n this.fillDrawMethod(fill, x0, x1);\r\n }\r\n }\r\n fillDrawMethod(fill, x0, x1) {\r\n fill.set(\"draw\", (display) => {\r\n //display.drawRect(x0, 0, x1 - x0, this.axis!.gridContainer.height());\r\n // using for holes, so can not be rectangle\r\n const h = this.axis.gridContainer.height();\r\n const w = this.width();\r\n if (x1 < x0) {\r\n [x1, x0] = [x0, x1];\r\n }\r\n if (x0 > w || x1 < 0) {\r\n return;\r\n }\r\n /*\r\n const limit = 10000;\r\n\r\n x0 = Math.max(-limit, x0);\r\n x1 = Math.min(limit, x1);\r\n */\r\n display.moveTo(x0, 0);\r\n display.lineTo(x1, 0);\r\n display.lineTo(x1, h);\r\n display.lineTo(x0, h);\r\n display.lineTo(x0, 0);\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n positionTooltip(tooltip, position) {\r\n this._positionTooltip(tooltip, { x: this.positionToCoordinate(position), y: 0 });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTooltipBounds(tooltip) {\r\n const inside = this.get(\"inside\");\r\n const num = 100000;\r\n let global = this._display.toGlobal({ x: 0, y: 0 });\r\n let x = global.x;\r\n let y = 0;\r\n let w = this.axisLength();\r\n let h = num;\r\n let pointerOrientation = \"up\";\r\n if (this.get(\"opposite\")) {\r\n if (inside) {\r\n pointerOrientation = \"up\";\r\n y = global.y;\r\n h = num;\r\n }\r\n else {\r\n pointerOrientation = \"down\";\r\n y = global.y - num;\r\n h = num;\r\n }\r\n }\r\n else {\r\n if (inside) {\r\n pointerOrientation = \"down\";\r\n y = global.y - num;\r\n h = num;\r\n }\r\n else {\r\n pointerOrientation = \"up\";\r\n y = global.y;\r\n h = num;\r\n }\r\n }\r\n const bounds = { left: x, right: x + w, top: y, bottom: y + h };\r\n const oldBounds = tooltip.get(\"bounds\");\r\n if (!$utils.sameBounds(bounds, oldBounds)) {\r\n tooltip.set(\"bounds\", bounds);\r\n tooltip.set(\"pointerOrientation\", pointerOrientation);\r\n }\r\n }\r\n}\r\nObject.defineProperty(AxisRendererX, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"AxisRendererX\"\r\n});\r\nObject.defineProperty(AxisRendererX, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: AxisRenderer.classNames.concat([AxisRendererX.className])\r\n});\r\n","import { AxisRenderer } from \"./AxisRenderer\";\r\nimport { p100 } from \"../../../core/util/Percent\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\nimport { Rectangle } from \"../../../core/render/Rectangle\";\r\n/**\r\n * Used to render vertical axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Axis_renderer} for more info\r\n * @important\r\n */\r\nexport class AxisRendererY extends AxisRenderer {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_downY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"thumb\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Rectangle.new(this._root, { height: p100, isMeasured: false, themeTags: [\"axis\", \"y\", \"thumb\"] })\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"renderer\", \"y\"]);\r\n if (this._settings.opposite) {\r\n this._settings.themeTags.push(\"opposite\");\r\n }\r\n super._afterNew();\r\n this.setPrivateRaw(\"letter\", \"Y\");\r\n const gridTemplate = this.grid.template;\r\n gridTemplate.set(\"width\", p100);\r\n gridTemplate.set(\"height\", 0);\r\n gridTemplate.set(\"draw\", (display, graphics) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(graphics.width(), 0);\r\n });\r\n this.set(\"draw\", (display, renderer) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(0, renderer.height());\r\n });\r\n }\r\n _getPan(point1, point2) {\r\n return (point1.y - point2.y) / this.height();\r\n }\r\n _changed() {\r\n super._changed();\r\n const axis = this.axis;\r\n axis.ghostLabel.setPrivate(\"visible\", !this.get(\"inside\"));\r\n axis.ghostLabel.set(\"y\", -1000);\r\n const thumb = this.thumb;\r\n const opposite = \"opposite\";\r\n const inside = \"inside\";\r\n const chart = this.chart;\r\n if (this.isDirty(opposite) || this.isDirty(inside)) {\r\n const axisChildren = axis.children;\r\n if (this.get(inside)) {\r\n axis.addTag(inside);\r\n }\r\n else {\r\n axis.removeTag(inside);\r\n }\r\n if (chart) {\r\n if (this.get(opposite)) {\r\n const children = chart.rightAxesContainer.children;\r\n if (children.indexOf(axis) == -1) {\r\n children.moveValue(axis, 0);\r\n }\r\n axis.addTag(opposite);\r\n axisChildren.moveValue(this, 0);\r\n }\r\n else {\r\n const children = chart.leftAxesContainer.children;\r\n if (children.indexOf(axis) == -1) {\r\n children.moveValue(axis);\r\n }\r\n axis.removeTag(opposite);\r\n axisChildren.moveValue(this);\r\n }\r\n axis.ghostLabel._applyThemes();\r\n this.labels.each((label) => {\r\n label._applyThemes();\r\n });\r\n this.root._markDirtyRedraw();\r\n }\r\n axis.markDirtySize();\r\n }\r\n const w = axis.labelsContainer.width();\r\n if (chart) {\r\n if (this.get(opposite)) {\r\n thumb.set(\"centerX\", 0);\r\n }\r\n else {\r\n thumb.set(\"centerX\", w);\r\n }\r\n }\r\n thumb.setPrivate(\"width\", w);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n processAxis() {\r\n super.processAxis();\r\n const axis = this.axis;\r\n if (axis.get(\"height\") == null) {\r\n axis.set(\"height\", p100);\r\n }\r\n const horizontalLayout = this._root.horizontalLayout;\r\n axis.set(\"layout\", horizontalLayout);\r\n axis.labelsContainer.set(\"height\", p100);\r\n axis.axisHeader.set(\"layout\", horizontalLayout);\r\n }\r\n _updatePositions() {\r\n const axis = this.axis;\r\n const y = axis.y() - $utils.relativeToValue(axis.get(\"centerY\", 0), axis.height());\r\n axis.gridContainer.set(\"y\", y);\r\n axis.topGridContainer.set(\"y\", y);\r\n axis.bulletsContainer.set(\"x\", this.x());\r\n const chart = axis.chart;\r\n if (chart) {\r\n const plotContainer = chart.plotContainer;\r\n const axisHeader = axis.axisHeader;\r\n let height = axis.get(\"marginTop\", 0);\r\n if (axisHeader.children.length > 0) {\r\n height = axis.axisHeader.height();\r\n axis.set(\"marginTop\", height + 1);\r\n }\r\n else {\r\n axisHeader.set(\"height\", height);\r\n }\r\n axisHeader.setAll({ y: axis.y() - height, x: -1, width: plotContainer.width() + 2 });\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n axisLength() {\r\n return this.axis.innerHeight();\r\n }\r\n /**\r\n * Converts axis relative position to actual coordinate in pixels.\r\n *\r\n * @param position Position\r\n * @return Point\r\n */\r\n positionToPoint(position) {\r\n return { x: 0, y: this.positionToCoordinate(position) };\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLabel(label, position, endPosition, count) {\r\n if (label) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = 0.5;\r\n if ($type.isNumber(count) && count > 1) {\r\n location = label.get(\"multiLocation\", location);\r\n }\r\n else {\r\n location = label.get(\"location\", location);\r\n }\r\n const opposite = this.get(\"opposite\");\r\n const inside = label.get(\"inside\", this.get(\"inside\", false));\r\n if (opposite) {\r\n label.set(\"x\", 0);\r\n if (inside) {\r\n label.set(\"position\", \"absolute\");\r\n }\r\n else {\r\n label.set(\"position\", \"relative\");\r\n }\r\n }\r\n else {\r\n if (inside) {\r\n label.set(\"x\", 0);\r\n label.set(\"position\", \"absolute\");\r\n }\r\n else {\r\n label.set(\"x\", undefined);\r\n label.set(\"position\", \"relative\");\r\n }\r\n }\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n label.set(\"y\", this.positionToCoordinate(position));\r\n this.toggleVisibility(label, position, label.get(\"minPosition\", 0), label.get(\"maxPosition\", 1));\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateGrid(grid, position, endPosition) {\r\n if (grid) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = grid.get(\"location\", 0.5);\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n grid.set(\"y\", this.positionToCoordinate(position));\r\n this.toggleVisibility(grid, position, 0, 1);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTick(tick, position, endPosition, count) {\r\n if (tick) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = 0.5;\r\n if ($type.isNumber(count) && count > 1) {\r\n location = tick.get(\"multiLocation\", location);\r\n }\r\n else {\r\n location = tick.get(\"location\", location);\r\n }\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n tick.set(\"y\", this.positionToCoordinate(position));\r\n let length = tick.get(\"length\", 0);\r\n const inside = tick.get(\"inside\", this.get(\"inside\", false));\r\n if (this.get(\"opposite\")) {\r\n tick.set(\"x\", 0);\r\n if (inside) {\r\n length *= -1;\r\n }\r\n }\r\n else {\r\n if (!inside) {\r\n length *= -1;\r\n }\r\n }\r\n tick.set(\"draw\", (display) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(length, 0);\r\n });\r\n this.toggleVisibility(tick, position, tick.get(\"minPosition\", 0), tick.get(\"maxPosition\", 1));\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateBullet(bullet, position, endPosition) {\r\n if (bullet) {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = bullet.get(\"location\", 0.5);\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n let bulletPosition = this.axis.roundAxisPosition(position, location);\r\n let previousBullet = this.axis._bullets[bulletPosition];\r\n let d = 1;\r\n if (this.get(\"opposite\")) {\r\n d = -1;\r\n }\r\n if (bullet.get(\"stacked\")) {\r\n if (previousBullet) {\r\n let previousSprite = previousBullet.get(\"sprite\");\r\n if (previousSprite) {\r\n sprite.set(\"x\", previousSprite.x() + previousSprite.width() * d);\r\n }\r\n }\r\n else {\r\n sprite.set(\"x\", 0);\r\n }\r\n }\r\n this.axis._bullets[bulletPosition] = bullet;\r\n sprite.set(\"y\", this.positionToCoordinate(position));\r\n this.toggleVisibility(sprite, position, 0, 1);\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateFill(fill, position, endPosition) {\r\n if (fill) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n if (!$type.isNumber(endPosition)) {\r\n endPosition = 1;\r\n }\r\n let y0 = this.positionToCoordinate(position);\r\n let y1 = this.positionToCoordinate(endPosition);\r\n this.fillDrawMethod(fill, y0, y1);\r\n }\r\n }\r\n fillDrawMethod(fill, y0, y1) {\r\n fill.set(\"draw\", (display) => {\r\n // using for holes, so can not be rectangle\r\n const w = this.axis.gridContainer.width();\r\n const h = this.height();\r\n if (y1 < y0) {\r\n [y1, y0] = [y0, y1];\r\n }\r\n if (y0 > h || y1 < 0) {\r\n return;\r\n }\r\n //y0 = Math.max(0, y0);\r\n //y1 = Math.min(h, y1);\r\n display.moveTo(0, y0);\r\n display.lineTo(w, y0);\r\n display.lineTo(w, y1);\r\n display.lineTo(0, y1);\r\n display.lineTo(0, y0);\r\n });\r\n }\r\n /**\r\n * Converts relative position (0-1) on axis to a pixel coordinate.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n positionToCoordinate(position) {\r\n if (!this._inversed) {\r\n return (this._end - position) * this._axisLength;\r\n }\r\n else {\r\n return (position - this._start) * this._axisLength;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n positionTooltip(tooltip, position) {\r\n this._positionTooltip(tooltip, { x: 0, y: this.positionToCoordinate(position) });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTooltipBounds(tooltip) {\r\n const inside = this.get(\"inside\");\r\n const num = 100000;\r\n let global = this._display.toGlobal({ x: 0, y: 0 });\r\n let y = global.y;\r\n let x = 0;\r\n let h = this.axisLength();\r\n let w = num;\r\n let pointerOrientation = \"right\";\r\n if (this.get(\"opposite\")) {\r\n if (inside) {\r\n pointerOrientation = \"right\";\r\n x = global.x - num;\r\n w = num;\r\n }\r\n else {\r\n pointerOrientation = \"left\";\r\n x = global.x;\r\n w = num;\r\n }\r\n }\r\n else {\r\n if (inside) {\r\n pointerOrientation = \"left\";\r\n x = global.x;\r\n w = num;\r\n }\r\n else {\r\n pointerOrientation = \"right\";\r\n x = global.x - num;\r\n w = num;\r\n }\r\n }\r\n const bounds = { left: x, right: x + w, top: y, bottom: y + h };\r\n const oldBounds = tooltip.get(\"bounds\");\r\n if (!$utils.sameBounds(bounds, oldBounds)) {\r\n tooltip.set(\"bounds\", bounds);\r\n tooltip.set(\"pointerOrientation\", pointerOrientation);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _updateLC() {\r\n const axis = this.axis;\r\n const parent = axis.parent;\r\n if (parent) {\r\n const h = parent.innerHeight();\r\n this._lc = this.axisLength() / h;\r\n this._ls = axis.y() / h;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toAxisPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n position -= this._ls;\r\n position = position * (end - start) / this._lc;\r\n if (this.get(\"inversed\")) {\r\n position = start + position;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toGlobalPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n if (this.get(\"inversed\")) {\r\n position = position - start;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n position = position / (end - start) * this._lc;\r\n position += this._ls;\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n fixPosition(position) {\r\n if (!this.get(\"inversed\")) {\r\n return 1 - position;\r\n }\r\n return position;\r\n }\r\n}\r\nObject.defineProperty(AxisRendererY, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"AxisRendererY\"\r\n});\r\nObject.defineProperty(AxisRendererY, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: AxisRenderer.classNames.concat([AxisRendererY.className])\r\n});\r\n","import { Axis } from \"./Axis\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $math from \"../../../core/util/Math\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\nimport { populateString } from \"../../../core/util/PopulateString\";\r\n/**\r\n * Creates a category axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/category-axis/} for more info\r\n * @important\r\n */\r\nexport class CategoryAxis extends Axis {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_frequency\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_itemMap\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"axis\"]);\r\n this.fields.push(\"category\");\r\n this.setPrivateRaw(\"name\", \"category\");\r\n this.addTag(\"category\");\r\n super._afterNew();\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n const len = this.dataItems.length;\r\n let i = 0;\r\n if (this._valuesDirty) {\r\n this._itemMap = {};\r\n $array.each(this.dataItems, (dataItem) => {\r\n dataItem.setRaw(\"index\", i);\r\n this._itemMap[dataItem.get(\"category\")] = dataItem;\r\n i++;\r\n });\r\n this.setPrivateRaw(\"maxZoomFactor\", len);\r\n }\r\n this.setPrivateRaw(\"startIndex\", Math.max(Math.round(this.get(\"start\", 0) * len), 0));\r\n this.setPrivateRaw(\"endIndex\", Math.min(Math.round(this.get(\"end\", 1) * len), len));\r\n if (this._sizeDirty || this._valuesDirty || (this.isDirty(\"start\") || this.isDirty(\"end\") || this.isPrivateDirty(\"endIndex\") || this.isPrivateDirty(\"startIndex\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\"))) {\r\n if (this.dataItems.length > 0) {\r\n this._handleRangeChange();\r\n this._prepareAxisItems();\r\n this._updateAxisRanges();\r\n }\r\n }\r\n }\r\n _handleRangeChange() {\r\n $array.each(this.series, (series) => {\r\n let startCategory = this.dataItems[this.startIndex()].get(\"category\");\r\n let endCategory = this.dataItems[this.endIndex() - 1].get(\"category\");\r\n let baseAxis = series.get(\"baseAxis\");\r\n let xAxis = series.get(\"xAxis\");\r\n let yAxis = series.get(\"yAxis\");\r\n if (xAxis instanceof CategoryAxis && yAxis instanceof CategoryAxis) {\r\n series._markDirtyAxes();\r\n }\r\n else if (baseAxis === this) {\r\n let key;\r\n let openKey;\r\n let otherAxis = yAxis;\r\n if (xAxis === baseAxis) {\r\n if (series.get(\"categoryXField\")) {\r\n key = \"categoryX\";\r\n }\r\n if (series.get(\"openCategoryXField\")) {\r\n openKey = \"openCategoryX\";\r\n }\r\n }\r\n else if (yAxis === baseAxis) {\r\n if (series.get(\"categoryYField\")) {\r\n key = \"categoryY\";\r\n }\r\n if (series.get(\"openCategoryYField\")) {\r\n openKey = \"openCategoryY\";\r\n }\r\n otherAxis = xAxis;\r\n }\r\n if (otherAxis.className == \"ValueAxis\") {\r\n if (key || openKey) {\r\n let startDataItem;\r\n let endDataItem;\r\n for (let i = 0, len = series.dataItems.length; i < len; i++) {\r\n let dataItem = series.dataItems[i];\r\n if (key) {\r\n if (dataItem.get(key) === startCategory) {\r\n startDataItem = dataItem;\r\n break;\r\n }\r\n }\r\n if (openKey) {\r\n if (dataItem.get(openKey) === startCategory) {\r\n startDataItem = dataItem;\r\n break;\r\n }\r\n }\r\n }\r\n for (let i = series.dataItems.length - 1; i >= 0; i--) {\r\n let dataItem = series.dataItems[i];\r\n if (key) {\r\n if (dataItem.get(key) === endCategory) {\r\n endDataItem = dataItem;\r\n break;\r\n }\r\n }\r\n if (openKey) {\r\n if (dataItem.get(openKey) === endCategory) {\r\n endDataItem = dataItem;\r\n break;\r\n }\r\n }\r\n }\r\n let startIndex = 0;\r\n let endIndex = series.dataItems.length;\r\n if (startDataItem) {\r\n startIndex = series.dataItems.indexOf(startDataItem);\r\n }\r\n if (endDataItem) {\r\n endIndex = series.dataItems.indexOf(endDataItem) + 1;\r\n }\r\n series.setPrivate(\"startIndex\", startIndex);\r\n series.setPrivate(\"endIndex\", endIndex);\r\n let hasValue = false;\r\n for (let i = startIndex; i < endIndex; i++) {\r\n const dataItem = series.dataItems[i];\r\n $array.each(series.__valueXShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n hasValue = true;\r\n }\r\n });\r\n $array.each(series.__valueYShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n hasValue = true;\r\n }\r\n });\r\n if (hasValue) {\r\n break;\r\n }\r\n }\r\n series.setPrivate(\"outOfSelection\", !hasValue);\r\n }\r\n }\r\n series._markDirtyAxes(); // must be outside\r\n }\r\n });\r\n }\r\n _prepareAxisItems() {\r\n var _a;\r\n const renderer = this.get(\"renderer\");\r\n const len = this.dataItems.length;\r\n let startIndex = this.startIndex();\r\n if (startIndex > 0) {\r\n startIndex--;\r\n }\r\n let endIndex = this.endIndex();\r\n if (endIndex < len) {\r\n endIndex++;\r\n }\r\n const minorLabelsEnabled = renderer.get(\"minorLabelsEnabled\");\r\n const minorGridEnabled = renderer.get(\"minorGridEnabled\", minorLabelsEnabled);\r\n let maxCount = renderer.axisLength() / Math.max(renderer.get(\"minGridDistance\"), 1);\r\n let frequency = Math.max(1, Math.min(len, Math.ceil((endIndex - startIndex) / maxCount)));\r\n startIndex = Math.floor(startIndex / frequency) * frequency;\r\n this._frequency = frequency;\r\n for (let j = 0; j < len; j++) {\r\n this._toggleDataItem(this.dataItems[j], false);\r\n }\r\n let f = this.dataItems[startIndex].get(\"index\", 0);\r\n for (let i = startIndex; i < endIndex; i = i + frequency) {\r\n let dataItem = this.dataItems[i];\r\n this._createAssets(dataItem, []);\r\n this._toggleDataItem(dataItem, true);\r\n let count = frequency;\r\n if (minorGridEnabled) {\r\n count = 1;\r\n }\r\n this._prepareDataItem(dataItem, f, count);\r\n f++;\r\n }\r\n if (renderer.get(\"minorGridEnabled\")) {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n let dataItem = this.dataItems[i];\r\n if (i % frequency != 0) {\r\n this._createAssets(dataItem, [\"minor\"], true);\r\n this._toggleDataItem(dataItem, true);\r\n this._prepareDataItem(dataItem, 0, 1);\r\n if (!minorLabelsEnabled) {\r\n (_a = dataItem.get(\"label\")) === null || _a === void 0 ? void 0 : _a.setPrivate(\"visible\", false);\r\n }\r\n }\r\n }\r\n }\r\n this._updateGhost();\r\n }\r\n _prepareDataItem(dataItem, fillIndex, count) {\r\n let renderer = this.get(\"renderer\");\r\n let categoryLocation = dataItem.get(\"categoryLocation\", 0);\r\n let endCategoryLocation = dataItem.get(\"endCategoryLocation\", 1);\r\n let index = dataItem.get(\"index\");\r\n if (!$type.isNumber(index)) {\r\n index = this.categoryToIndex(dataItem.get(\"category\"));\r\n }\r\n let position = this.indexToPosition(index, categoryLocation);\r\n let endCategory = dataItem.get(\"endCategory\");\r\n let endIndex;\r\n if (endCategory) {\r\n endIndex = this.categoryToIndex(endCategory);\r\n if (!$type.isNumber(endIndex)) {\r\n endIndex = index;\r\n }\r\n }\r\n else {\r\n endIndex = index;\r\n }\r\n let endPosition = this.indexToPosition(endIndex, endCategoryLocation);\r\n let fillEndIndex;\r\n let fillEndPosition;\r\n if (dataItem.get(\"isRange\")) {\r\n fillEndIndex = endIndex;\r\n }\r\n else {\r\n fillEndIndex = index + this._frequency - 1;\r\n }\r\n fillEndPosition = this.indexToPosition(fillEndIndex, endCategoryLocation);\r\n renderer.updateLabel(dataItem.get(\"label\"), position, endPosition, count);\r\n renderer.updateGrid(dataItem.get(\"grid\"), position, endPosition);\r\n renderer.updateTick(dataItem.get(\"tick\"), position, endPosition, count);\r\n renderer.updateFill(dataItem.get(\"axisFill\"), position, fillEndPosition);\r\n this._processBullet(dataItem);\r\n renderer.updateBullet(dataItem.get(\"bullet\"), position, endPosition);\r\n const fillRule = this.get(\"fillRule\");\r\n if (fillRule) {\r\n fillRule(dataItem, fillIndex);\r\n }\r\n }\r\n startIndex() {\r\n let len = this.dataItems.length;\r\n return Math.min(Math.max(this.getPrivate(\"startIndex\", 0), 0), len - 1);\r\n }\r\n endIndex() {\r\n let len = this.dataItems.length;\r\n return Math.max(1, Math.min(this.getPrivate(\"endIndex\", len), len));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n baseValue() {\r\n }\r\n /**\r\n * @ignore\r\n */\r\n basePosition() {\r\n return 0;\r\n }\r\n /**\r\n * Returns X coordinate in pixels corresponding to specific category index.\r\n *\r\n * @param value Index\r\n * @return X coordinate\r\n */\r\n getX(value) {\r\n let axisDataItem = this._itemMap[value];\r\n if (axisDataItem) {\r\n return this._settings.renderer.positionToCoordinate(this.indexToPosition(axisDataItem.get(\"index\", 0)));\r\n }\r\n return NaN;\r\n }\r\n /**\r\n * Returns Y coordinate in pixels corresponding to specific category index.\r\n *\r\n * @param value Index\r\n * @return Y coordinate\r\n */\r\n getY(value) {\r\n let axisDataItem = this._itemMap[value];\r\n if (axisDataItem) {\r\n return this._settings.renderer.positionToCoordinate(this.indexToPosition(axisDataItem.get(\"index\", 0)));\r\n }\r\n return NaN;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemPositionX(dataItem, field, cellLocation, _axisLocation) {\r\n const category = dataItem.get(field);\r\n const axisDataItem = this._itemMap[category];\r\n if (axisDataItem) {\r\n return this.indexToPosition(axisDataItem.get(\"index\", 0), cellLocation);\r\n }\r\n return NaN;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemCoordinateX(dataItem, field, cellLocation, _axisLocation) {\r\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionX(dataItem, field, cellLocation, _axisLocation));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemPositionY(dataItem, field, cellLocation, _axisLocation) {\r\n const category = dataItem.get(field);\r\n const axisDataItem = this._itemMap[category];\r\n if (axisDataItem) {\r\n return this.indexToPosition(axisDataItem.get(\"index\", 0), cellLocation);\r\n }\r\n return NaN;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemCoordinateY(dataItem, field, cellLocation, _axisLocation) {\r\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionY(dataItem, field, cellLocation, _axisLocation));\r\n }\r\n /**\r\n * Converts category index to a relative position.\r\n *\r\n * `location` indicates relative position within category: 0 - start, 1 - end.\r\n *\r\n * If not set, will use middle (0.5) of the category.\r\n *\r\n * @param index Index\r\n * @param location Location\r\n * @return Index\r\n */\r\n indexToPosition(index, location) {\r\n if (!$type.isNumber(location)) {\r\n location = 0.5;\r\n }\r\n let len = this.dataItems.length;\r\n let startLocation = this.get(\"startLocation\", 0);\r\n let endLocation = this.get(\"endLocation\", 1);\r\n len -= startLocation;\r\n len -= (1 - endLocation);\r\n let position = (index + location - startLocation) / len;\r\n let dataItem = this.dataItems[index];\r\n if (dataItem) {\r\n position += dataItem.get(\"deltaPosition\", 0);\r\n }\r\n return position;\r\n }\r\n /**\r\n * Returns an index of a category.\r\n *\r\n * @param category Category to look up\r\n * @return Index\r\n */\r\n categoryToIndex(category) {\r\n let dataItem = this._itemMap[category];\r\n if (dataItem) {\r\n return dataItem.get(\"index\");\r\n }\r\n return NaN;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n dataItemToPosition(dataItem) {\r\n return this.indexToPosition(dataItem.get(\"index\"));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n roundAxisPosition(position, location) {\r\n position += (0.5 - location) / this.dataItems.length;\r\n return this.indexToPosition(this.axisPositionToIndex(position), location);\r\n }\r\n /**\r\n * Returns an index of the category that corresponds to specific pixel\r\n * position within axis.\r\n *\r\n * @param position Position (px)\r\n * @return Category index\r\n */\r\n axisPositionToIndex(position) {\r\n let len = this.dataItems.length;\r\n return $math.fitToRange(Math.floor(position * len), 0, len - 1); //$math.fitToRange(Math.floor((end - start) * len * position + len * start), 0, len - 1);\r\n }\r\n /**\r\n * Returns text to be used in an axis tooltip for specific relative position.\r\n *\r\n * @param position Position\r\n * @return Tooltip text\r\n */\r\n getTooltipText(position, _adjustPosition) {\r\n //@todo number formatter + tag\r\n const dataItem = this.dataItems[this.axisPositionToIndex(position)];\r\n if (dataItem) {\r\n const label = dataItem.get(\"label\");\r\n if (label) {\r\n return populateString(label, this.get(\"tooltipText\", \"\"));\r\n }\r\n }\r\n }\r\n _updateTooltipText(tooltip, position) {\r\n tooltip._setDataItem(this.dataItems[this.axisPositionToIndex(position)]);\r\n tooltip.label.text.markDirtyText();\r\n }\r\n /**\r\n * Returns a data item from series that is closest to the `position`.\r\n *\r\n * @param series Series\r\n * @param position Relative position\r\n * @return Data item\r\n */\r\n getSeriesItem(series, position) {\r\n if (this.dataItems.length > 0) {\r\n let fieldName = (this.getPrivate(\"name\") + this.get(\"renderer\").getPrivate(\"letter\"));\r\n let index = this.axisPositionToIndex(position);\r\n // try simple first\r\n let seriesDataItem = series.dataItems[index];\r\n let axisDataItem = this.dataItems[index];\r\n let category = axisDataItem.get(\"category\");\r\n if (seriesDataItem && axisDataItem) {\r\n if (seriesDataItem.get(fieldName) === category) {\r\n return seriesDataItem;\r\n }\r\n }\r\n // if not found, try looking\r\n for (let i = 0, len = series.dataItems.length; i < len; i++) {\r\n let dataItem = series.dataItems[i];\r\n if (dataItem.get(fieldName) === category) {\r\n return dataItem;\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Zooms the axis to specific `start` and `end` indexes.\r\n *\r\n * Optional `duration` specifies duration of zoom animation in milliseconds.\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @param duration Duration in milliseconds\r\n */\r\n zoomToIndexes(start, end, duration) {\r\n let len = this.dataItems.length;\r\n this.zoom(start / len, end / len, duration);\r\n }\r\n zoomToCategories(startCategory, endCategory, duration) {\r\n this.zoomToIndexes(this.categoryToIndex(startCategory), this.categoryToIndex(endCategory) + 1, duration);\r\n }\r\n /**\r\n * Returns position span between start and end of a single cell in axis.\r\n *\r\n * @since 5.2.30\r\n * @return Position\r\n */\r\n getCellWidthPosition() {\r\n return this._frequency / this.dataItems.length / (this.get(\"end\", 1) - this.get(\"start\", 0));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n nextPosition(count) {\r\n if (count == null) {\r\n count = 1;\r\n }\r\n if (this.get(\"renderer\").getPrivate(\"letter\") == \"Y\") {\r\n count *= -1;\r\n }\r\n const position = this.getPrivate(\"tooltipPosition\", 0);\r\n const index = $math.fitToRange(this.axisPositionToIndex(position) + count, 0, this.dataItems.length - 1);\r\n return this.toGlobalPosition(this.indexToPosition(index));\r\n }\r\n}\r\nObject.defineProperty(CategoryAxis, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"CategoryAxis\"\r\n});\r\nObject.defineProperty(CategoryAxis, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Axis.classNames.concat([CategoryAxis.className])\r\n});\r\n","import { DataItem } from \"../../../core/render/Component\";\r\nimport { ValueAxis } from \"./ValueAxis\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $math from \"../../../core/util/Math\";\r\nimport * as $order from \"../../../core/util/Order\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $object from \"../../../core/util/Object\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\nimport * as $time from \"../../../core/util/Time\";\r\n/**\r\n * Creates a date axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/} for more info\r\n * @important\r\n */\r\nexport class DateAxis extends ValueAxis {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_dataGrouped\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_seriesDataGrouped\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_groupingCalculated\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_intervalDuration\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_baseDuration\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_intervalMax\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_intervalMin\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"axis\"]);\r\n super._afterNew();\r\n this._setBaseInterval(this.get(\"baseInterval\"));\r\n this.on(\"baseInterval\", () => {\r\n this._setBaseInterval(this.get(\"baseInterval\"));\r\n });\r\n }\r\n _setBaseInterval(interval) {\r\n this.setPrivateRaw(\"baseInterval\", interval);\r\n this._baseDuration = $time.getIntervalDuration(interval);\r\n }\r\n _fixZoomFactor() {\r\n const maxZoomFactor = this.get(\"maxZoomFactor\");\r\n if (maxZoomFactor != null && maxZoomFactor != Infinity) {\r\n this.setPrivateRaw(\"maxZoomFactor\", maxZoomFactor);\r\n }\r\n else {\r\n this.setPrivateRaw(\"maxZoomFactor\", Math.round((this.getPrivate(\"max\", 0) - this.getPrivate(\"min\", 0)) / this.baseMainDuration()));\r\n }\r\n }\r\n _groupData() {\r\n const min = this.getPrivate(\"min\");\r\n const max = this.getPrivate(\"max\");\r\n if (($type.isNumber(min) && $type.isNumber(max))) {\r\n this._fixZoomFactor();\r\n const groupInterval = this.getPrivate(\"groupInterval\");\r\n if (groupInterval) {\r\n this._setBaseInterval(groupInterval);\r\n }\r\n else {\r\n this._setBaseInterval(this.get(\"baseInterval\"));\r\n }\r\n if (this.isDirty(\"groupInterval\")) {\r\n let groupInterval = this.get(\"groupInterval\");\r\n if (groupInterval) {\r\n this.setRaw(\"groupIntervals\", [groupInterval]);\r\n this._handleRangeChange();\r\n }\r\n }\r\n if (this.isDirty(\"groupData\")) {\r\n if (!this._dataGrouped) {\r\n if (this.get(\"groupData\")) {\r\n $array.each(this.series, (series) => {\r\n this._groupSeriesData(series);\r\n });\r\n this._handleRangeChange();\r\n }\r\n else {\r\n let baseInterval = this.get(\"baseInterval\");\r\n let mainDataSetId = baseInterval.timeUnit + baseInterval.count;\r\n $array.each(this.series, (series) => {\r\n series.setDataSet(mainDataSetId);\r\n series.resetGrouping();\r\n });\r\n this._setBaseInterval(baseInterval);\r\n this.setPrivateRaw(\"groupInterval\", undefined);\r\n this.markDirtyExtremes();\r\n }\r\n this._dataGrouped = true;\r\n }\r\n }\r\n }\r\n }\r\n _groupSeriesData(series) {\r\n if (this.get(\"groupData\") && !series.get(\"groupDataDisabled\")) {\r\n this._dataGrouped = true; // helps to avoid double grouping\r\n this._seriesDataGrouped = true;\r\n // make array of intervals which will be used;\r\n let intervals = [];\r\n let baseDuration = this.baseMainDuration();\r\n let groupIntervals = this.get(\"groupIntervals\");\r\n if (groupIntervals) { }\r\n $array.each(groupIntervals, (interval) => {\r\n let intervalDuration = $time.getIntervalDuration(interval);\r\n if (intervalDuration > baseDuration) {\r\n intervals.push(interval);\r\n }\r\n });\r\n series._dataSets = {};\r\n const key = this.getPrivate(\"name\") + this.get(\"renderer\").getPrivate(\"letter\");\r\n let fields;\r\n const baseAxis = series.get(\"baseAxis\");\r\n if (series.get(\"xAxis\") === baseAxis) {\r\n fields = series._valueYFields;\r\n }\r\n else if (series.get(\"yAxis\") === baseAxis) {\r\n fields = series._valueXFields;\r\n }\r\n let dataItems = series._mainDataItems;\r\n let baseInterval = this.get(\"baseInterval\");\r\n let mainDataSetId = baseInterval.timeUnit + baseInterval.count;\r\n series._dataSets[mainDataSetId] = dataItems;\r\n const groupCallback = series.get(\"groupDataCallback\");\r\n let groupOriginals = series.get(\"groupDataWithOriginals\", false);\r\n if (groupCallback) {\r\n groupOriginals = true;\r\n }\r\n $array.each(intervals, (interval) => {\r\n let previousTime = -Infinity;\r\n let dataSetId = interval.timeUnit + interval.count;\r\n series._dataSets[dataSetId] = [];\r\n let newDataItem;\r\n let sum = {};\r\n let count = {};\r\n let groupFieldValues = {};\r\n let workingFields = {};\r\n $array.each(fields, (field) => {\r\n sum[field] = 0;\r\n count[field] = 0;\r\n groupFieldValues[field] = series.get((field + \"Grouped\"));\r\n workingFields[field] = field + \"Working\";\r\n });\r\n let intervalDuration = $time.getDuration(interval.timeUnit);\r\n let firstItem = dataItems[0];\r\n let firstTime;\r\n if (firstItem) {\r\n firstTime = dataItems[0].get(key);\r\n }\r\n let prevNewDataItem;\r\n $array.each(dataItems, (dataItem) => {\r\n let time = dataItem.get(key);\r\n //let roundedTime = $time.round(new Date(time), interval.timeUnit, interval.count, firstDay, utc, firstDate, timezone).getTime();\r\n let roundedTime = $time.roun(time, interval.timeUnit, interval.count, this._root, firstTime);\r\n let dataContext;\r\n if (previousTime < roundedTime - intervalDuration / 24) {\r\n dataContext = $object.copy(dataItem.dataContext);\r\n newDataItem = new DataItem(series, dataContext, series._makeDataItem(dataContext));\r\n newDataItem.setRaw(key, roundedTime);\r\n series._dataSets[dataSetId].push(newDataItem);\r\n $array.each(fields, (field) => {\r\n let value = dataItem.get(field);\r\n if ($type.isNumber(value)) {\r\n newDataItem.setRaw(field, value);\r\n newDataItem.setRaw(workingFields[field], value);\r\n count[field] = 1;\r\n sum[field] = value;\r\n }\r\n else {\r\n sum[field] = 0;\r\n count[field] = 0;\r\n }\r\n });\r\n if (groupOriginals) {\r\n newDataItem.set(\"originals\", [dataItem]);\r\n }\r\n if (groupCallback && prevNewDataItem) {\r\n groupCallback(prevNewDataItem, interval);\r\n }\r\n prevNewDataItem = newDataItem;\r\n }\r\n else {\r\n $array.each(fields, (field) => {\r\n let groupKey = groupFieldValues[field];\r\n let value = dataItem.get(field);\r\n if (value != null) {\r\n let currentValue = newDataItem.get(field);\r\n switch (groupKey) {\r\n case \"close\":\r\n newDataItem.setRaw(field, value);\r\n break;\r\n case \"sum\":\r\n newDataItem.setRaw(field, currentValue + value);\r\n break;\r\n case \"open\":\r\n break;\r\n case \"low\":\r\n if (value < currentValue) {\r\n newDataItem.setRaw(field, value);\r\n }\r\n break;\r\n case \"high\":\r\n if (value > currentValue) {\r\n newDataItem.setRaw(field, value);\r\n }\r\n break;\r\n case \"average\":\r\n count[field]++;\r\n sum[field] += value;\r\n let average = sum[field] / count[field];\r\n newDataItem.setRaw(field, average);\r\n break;\r\n case \"extreme\":\r\n if (Math.abs(value) > Math.abs(currentValue)) {\r\n newDataItem.setRaw(field, value);\r\n }\r\n break;\r\n }\r\n newDataItem.setRaw(workingFields[field], newDataItem.get(field));\r\n let dataContext = $object.copy(dataItem.dataContext);\r\n dataContext[key] = roundedTime;\r\n newDataItem.dataContext = dataContext;\r\n }\r\n });\r\n if (groupOriginals) {\r\n newDataItem.get(\"originals\").push(dataItem);\r\n }\r\n }\r\n previousTime = roundedTime;\r\n });\r\n if (groupCallback && prevNewDataItem) {\r\n groupCallback(prevNewDataItem, interval);\r\n }\r\n });\r\n if (series._dataSetId) {\r\n series.setDataSet(series._dataSetId);\r\n }\r\n this.markDirtySize();\r\n // solves problem if new series was added\r\n if (this._seriesAdded) {\r\n this._root.events.once(\"frameended\", () => {\r\n this.markDirtySize();\r\n });\r\n }\r\n }\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._groupingCalculated = false;\r\n this._dataGrouped = false;\r\n }\r\n /**\r\n * Returns a time interval axis would group data to for a specified duration.\r\n *\r\n * @since 5.2.1\r\n */\r\n getGroupInterval(duration) {\r\n let baseInterval = this.get(\"baseInterval\");\r\n let groupInterval = $time.chooseInterval(0, duration, this.get(\"groupCount\", Infinity), this.get(\"groupIntervals\"));\r\n if ($time.getIntervalDuration(groupInterval) < $time.getIntervalDuration(baseInterval)) {\r\n groupInterval = Object.assign({}, baseInterval);\r\n }\r\n return groupInterval;\r\n }\r\n /**\r\n * Return `max` of a specified time interval.\r\n *\r\n * Will work only if the axis was grouped to this interval at least once.\r\n *\r\n * @since 5.2.1\r\n * @param interval Interval\r\n * @return Max\r\n */\r\n getIntervalMax(interval) {\r\n return this._intervalMax[interval.timeUnit + interval.count];\r\n }\r\n /**\r\n * Return `min` of a specified time interval.\r\n *\r\n * Will work only if the axis was grouped to this interval at least once.\r\n *\r\n * @since 5.2.1\r\n * @param interval Interval\r\n * @return Min\r\n */\r\n getIntervalMin(interval) {\r\n return this._intervalMin[interval.timeUnit + interval.count];\r\n }\r\n _handleRangeChange() {\r\n super._handleRangeChange();\r\n let selectionMin = Math.round(this.getPrivate(\"selectionMin\"));\r\n let selectionMax = Math.round(this.getPrivate(\"selectionMax\"));\r\n if ($type.isNumber(selectionMin) && $type.isNumber(selectionMax)) {\r\n if (this.get(\"endLocation\") == 0) {\r\n selectionMax += 1;\r\n }\r\n if (this.get(\"groupData\") && !this._groupingCalculated) {\r\n this._groupingCalculated = true;\r\n let groupInterval = this.get(\"groupInterval\");\r\n let current = this.getPrivate(\"groupInterval\");\r\n let modifiedDifference = (selectionMax - selectionMin) + (this.get(\"startLocation\", 0) + (1 - this.get(\"endLocation\", 1)) * this.baseDuration());\r\n if (current) {\r\n let duration = $time.getIntervalDuration(current);\r\n modifiedDifference = Math.ceil(modifiedDifference / duration) * duration;\r\n }\r\n if (!groupInterval) {\r\n groupInterval = this.getGroupInterval(modifiedDifference);\r\n }\r\n if (groupInterval && (!current || (current.timeUnit !== groupInterval.timeUnit || current.count !== groupInterval.count) || this._seriesDataGrouped)) {\r\n this._seriesDataGrouped = false;\r\n this.setPrivateRaw(\"groupInterval\", groupInterval);\r\n this._setBaseInterval(groupInterval);\r\n let newId = groupInterval.timeUnit + groupInterval.count;\r\n $array.each(this.series, (series) => {\r\n if (series.get(\"baseAxis\") === this) {\r\n series.setDataSet(newId);\r\n }\r\n });\r\n this.markDirtyExtremes();\r\n this._root.events.once(\"frameended\", () => {\r\n this._root.events.once(\"frameended\", () => {\r\n const type = \"groupintervalchanged\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n $array.each(this.series, (series) => {\r\n if (series.get(\"baseAxis\") === this) {\r\n let fieldName = (this.getPrivate(\"name\") + this.get(\"renderer\").getPrivate(\"letter\"));\r\n const start = $array.getFirstSortedIndex(series.dataItems, (dataItem) => {\r\n return $order.compare(dataItem.get(fieldName), selectionMin);\r\n });\r\n let startIndex = start.index;\r\n if (startIndex > 0) {\r\n startIndex -= 1;\r\n }\r\n selectionMax += this.baseDuration() * (1 - this.get(\"endLocation\", 1));\r\n const end = $array.getSortedIndex(series.dataItems, (dataItem) => {\r\n return $order.compare(dataItem.get(fieldName), selectionMax);\r\n });\r\n let endIndex = end.index;\r\n let endIndex2 = endIndex;\r\n if (endIndex2 > 1) {\r\n endIndex2--;\r\n }\r\n const firstDataItem = series.dataItems[startIndex];\r\n const lastDataItem = series.dataItems[endIndex2];\r\n let lastDate;\r\n let firstDate;\r\n if (firstDataItem) {\r\n firstDate = firstDataItem.get(fieldName);\r\n }\r\n if (lastDataItem) {\r\n lastDate = lastDataItem.get(fieldName);\r\n }\r\n let outOfSelection = false;\r\n if (lastDate != null && firstDate != null) {\r\n if (lastDate < selectionMin || firstDate > selectionMax) {\r\n outOfSelection = true;\r\n }\r\n }\r\n series.setPrivate(\"outOfSelection\", outOfSelection);\r\n series.setPrivate(\"startIndex\", startIndex);\r\n series.setPrivate(\"adjustedStartIndex\", series._adjustStartIndex(startIndex));\r\n series.setPrivate(\"endIndex\", endIndex);\r\n this.root.events.once(\"frameended\", () => {\r\n series._markDirtyPrivateKey(\"adjustedStartIndex\");\r\n });\r\n }\r\n });\r\n }\r\n }\r\n _adjustMinMax(min, max, gridCount, _strictMode) {\r\n return { min: min, max: max, step: (max - min) / gridCount };\r\n }\r\n /**\r\n * @ignore\r\n */\r\n intervalDuration() {\r\n return this._intervalDuration;\r\n }\r\n _saveMinMax(min, max) {\r\n let groupInterval = this.getPrivate(\"groupInterval\");\r\n if (!groupInterval) {\r\n groupInterval = this.get(\"baseInterval\");\r\n }\r\n let id = groupInterval.timeUnit + groupInterval.count;\r\n this._intervalMin[id] = min;\r\n this._intervalMax[id] = max;\r\n }\r\n _getM(timeUnit) {\r\n if (timeUnit == \"month\" || timeUnit == \"year\" || timeUnit == \"day\") {\r\n return 1.05;\r\n }\r\n return 1.01;\r\n }\r\n _getMinorInterval(interval) {\r\n var _a;\r\n let minorGridInterval;\r\n let count = interval.count;\r\n let timeUnit = interval.timeUnit;\r\n if (count > 1) {\r\n if (count == 10) {\r\n count = 5;\r\n }\r\n else if (count == 15) {\r\n count = 5;\r\n }\r\n else if (count == 12) {\r\n count = 2;\r\n }\r\n else if (count == 6) {\r\n count = 1;\r\n }\r\n else if (count == 30) {\r\n count = 10;\r\n }\r\n else if (count < 10) {\r\n count = 1;\r\n }\r\n minorGridInterval = { timeUnit: timeUnit, count: count };\r\n }\r\n if (timeUnit == \"week\") {\r\n if (((_a = this.getPrivate(\"baseInterval\")) === null || _a === void 0 ? void 0 : _a.timeUnit) != \"week\") {\r\n minorGridInterval = { timeUnit: \"day\", count: 1 };\r\n }\r\n }\r\n return minorGridInterval;\r\n }\r\n _prepareAxisItems() {\r\n const min = this.getPrivate(\"min\");\r\n const max = this.getPrivate(\"max\");\r\n if ($type.isNumber(min) && $type.isNumber(max)) {\r\n const root = this._root;\r\n const selectionMin = Math.round(this.getPrivate(\"selectionMin\"));\r\n const selectionMax = Math.round(this.getPrivate(\"selectionMax\"));\r\n const renderer = this.get(\"renderer\");\r\n const baseInterval = this.getPrivate(\"baseInterval\");\r\n let value = selectionMin;\r\n let i = 0;\r\n const intervals = this.get(\"gridIntervals\");\r\n let gridInterval = $time.chooseInterval(0, selectionMax - selectionMin, renderer.gridCount(), intervals);\r\n if ($time.getIntervalDuration(gridInterval) < this.baseDuration()) {\r\n gridInterval = Object.assign({}, baseInterval);\r\n }\r\n const intervalDuration = $time.getIntervalDuration(gridInterval);\r\n this._intervalDuration = intervalDuration;\r\n const nextGridUnit = $time.getNextUnit(gridInterval.timeUnit);\r\n const utc = root.utc;\r\n const timezone = root.timezone;\r\n //value = $time.round(new Date(selectionMin - intervalDuration), gridInterval.timeUnit, gridInterval.count, firstDay, utc, new Date(min), timezone).getTime();\r\n value = $time.roun(selectionMin - intervalDuration, gridInterval.timeUnit, gridInterval.count, root, min);\r\n let previousValue = value - intervalDuration;\r\n let format;\r\n const formats = this.get(\"dateFormats\");\r\n this.setPrivateRaw(\"gridInterval\", gridInterval);\r\n const minorLabelsEnabled = renderer.get(\"minorLabelsEnabled\");\r\n const minorGridEnabled = renderer.get(\"minorGridEnabled\", minorLabelsEnabled);\r\n let minorGridInterval;\r\n let minorDuration = 0;\r\n if (minorGridEnabled) {\r\n minorGridInterval = this._getMinorInterval(gridInterval);\r\n minorDuration = $time.getIntervalDuration(minorGridInterval);\r\n }\r\n let m = 0;\r\n while (value < selectionMax + intervalDuration) {\r\n let dataItem;\r\n if (this.dataItems.length < i + 1) {\r\n dataItem = new DataItem(this, undefined, {});\r\n this._dataItems.push(dataItem);\r\n this.processDataItem(dataItem);\r\n }\r\n else {\r\n dataItem = this.dataItems[i];\r\n }\r\n this._createAssets(dataItem, []);\r\n this._toggleDataItem(dataItem, true);\r\n dataItem.setRaw(\"value\", value);\r\n dataItem.setRaw(\"labelEndValue\", undefined);\r\n let endValue = value + $time.getDuration(gridInterval.timeUnit, gridInterval.count * this._getM(gridInterval.timeUnit));\r\n //endValue = $time.round(new Date(endValue), gridInterval.timeUnit, 1, firstDay, utc, undefined, timezone).getTime();\r\n endValue = $time.roun(endValue, gridInterval.timeUnit, 1, root);\r\n dataItem.setRaw(\"endValue\", endValue);\r\n let date = new Date(value);\r\n format = formats[gridInterval.timeUnit];\r\n if (nextGridUnit && this.get(\"markUnitChange\") && $type.isNumber(previousValue)) {\r\n if (gridInterval.timeUnit != \"year\") {\r\n if ($time.checkChange(value, previousValue, nextGridUnit, utc, timezone)) {\r\n format = this.get(\"periodChangeDateFormats\")[gridInterval.timeUnit];\r\n }\r\n }\r\n }\r\n const label = dataItem.get(\"label\");\r\n if (label) {\r\n label.set(\"text\", root.dateFormatter.format(date, format));\r\n }\r\n let count = gridInterval.count;\r\n // so that labels of week would always be at the beginning of the grid\r\n if (gridInterval.timeUnit == \"week\") {\r\n dataItem.setRaw(\"labelEndValue\", value);\r\n }\r\n if (minorGridEnabled) {\r\n count = 1;\r\n let timeUnit = gridInterval.timeUnit;\r\n if (timeUnit == \"week\") {\r\n timeUnit = \"day\";\r\n }\r\n let labelEndValue = value + $time.getDuration(timeUnit, this._getM(timeUnit));\r\n //labelEndValue = $time.round(new Date(labelEndValue), timeUnit, 1, firstDay, utc, undefined, timezone).getTime();\r\n labelEndValue = $time.roun(labelEndValue, timeUnit, 1, root);\r\n dataItem.setRaw(\"labelEndValue\", labelEndValue);\r\n }\r\n this._prepareDataItem(dataItem, count);\r\n previousValue = value;\r\n value = endValue;\r\n // min grid\r\n if (minorGridInterval) {\r\n const minorTimeUnit = minorGridInterval.timeUnit;\r\n const minorCount = minorGridInterval.count;\r\n const mmm = this._getM(minorTimeUnit);\r\n //let minorValue = $time.round(new Date(previousValue + minorDuration * this._getM(minorGridInterval.timeUnit)), minorGridInterval.timeUnit, minorGridInterval.count, firstDay, utc, new Date(previousValue), timezone).getTime();\r\n let minorValue = $time.roun(previousValue + minorDuration * mmm, minorTimeUnit, minorCount, root, previousValue);\r\n let previousMinorValue;\r\n let minorFormats = this.get(\"minorDateFormats\", this.get(\"dateFormats\"));\r\n while (minorValue < value - 0.01 * minorDuration) {\r\n let minorDataItem;\r\n if (this.minorDataItems.length < m + 1) {\r\n minorDataItem = new DataItem(this, undefined, {});\r\n this.minorDataItems.push(minorDataItem);\r\n this.processDataItem(minorDataItem);\r\n }\r\n else {\r\n minorDataItem = this.minorDataItems[m];\r\n }\r\n this._createAssets(minorDataItem, [\"minor\"], true);\r\n this._toggleDataItem(minorDataItem, true);\r\n minorDataItem.setRaw(\"value\", minorValue);\r\n let minorEndValue = minorValue + $time.getDuration(minorTimeUnit, minorCount * mmm);\r\n //minorEndValue = $time.round(new Date(minorEndValue), minorGridInterval.timeUnit, 1, firstDay, utc, undefined, timezone).getTime();\r\n minorEndValue = $time.roun(minorEndValue, minorTimeUnit, 1, root);\r\n minorDataItem.setRaw(\"endValue\", minorEndValue);\r\n let date = new Date(minorValue);\r\n format = minorFormats[minorTimeUnit];\r\n const minorLabel = minorDataItem.get(\"label\");\r\n if (minorLabel) {\r\n if (minorLabelsEnabled) {\r\n minorLabel.set(\"text\", root.dateFormatter.format(date, format));\r\n }\r\n else {\r\n minorLabel.setPrivate(\"visible\", false);\r\n }\r\n }\r\n this._prepareDataItem(minorDataItem, 1);\r\n if (minorValue == previousMinorValue) {\r\n break;\r\n }\r\n previousMinorValue = minorValue;\r\n minorValue = minorEndValue;\r\n m++;\r\n }\r\n }\r\n if (value == previousValue) {\r\n break;\r\n }\r\n i++;\r\n }\r\n for (let j = i; j < this.dataItems.length; j++) {\r\n this._toggleDataItem(this.dataItems[j], false);\r\n }\r\n for (let j = m; j < this.minorDataItems.length; j++) {\r\n this._toggleDataItem(this.minorDataItems[j], false);\r\n }\r\n $array.each(this.series, (series) => {\r\n if (series.inited) {\r\n series._markDirtyAxes();\r\n }\r\n });\r\n }\r\n this._updateGhost();\r\n }\r\n _updateFinals(start, end) {\r\n this.setPrivateRaw(\"selectionMinFinal\", this.positionToValue(start));\r\n this.setPrivateRaw(\"selectionMaxFinal\", this.positionToValue(end));\r\n }\r\n _getDelta() {\r\n this._deltaMinMax = this.baseDuration() / 2;\r\n }\r\n _fixMin(min) {\r\n const baseInterval = this.getPrivate(\"baseInterval\");\r\n const timeUnit = baseInterval.timeUnit;\r\n //let startTime = $time.round(new Date(min), timeUnit, baseInterval.count, firstDay, utc, undefined, timezone).getTime();\r\n let startTime = $time.roun(min, timeUnit, baseInterval.count, this._root);\r\n let endTime = startTime + $time.getDuration(timeUnit, baseInterval.count * this._getM(timeUnit));\r\n //endTime = $time.round(new Date(endTime), timeUnit, 1, firstDay, utc, undefined, timezone).getTime();\r\n endTime = $time.roun(endTime, timeUnit, 1, this._root);\r\n return startTime + (endTime - startTime) * this.get(\"startLocation\", 0);\r\n }\r\n _fixMax(max) {\r\n const baseInterval = this.getPrivate(\"baseInterval\");\r\n const timeUnit = baseInterval.timeUnit;\r\n //let startTime = $time.round(new Date(max), timeUnit, baseInterval.count, firstDay, utc, undefined, timezone).getTime();\r\n let startTime = $time.roun(max, timeUnit, baseInterval.count, this._root);\r\n let endTime = startTime + $time.getDuration(timeUnit, baseInterval.count * this._getM(timeUnit));\r\n //endTime = $time.round(new Date(endTime), timeUnit, 1, firstDay, utc, undefined, timezone).getTime();\r\n endTime = $time.roun(endTime, timeUnit, 1, this._root);\r\n return startTime + (endTime - startTime) * this.get(\"endLocation\", 1);\r\n }\r\n _updateDates(_date, _series) {\r\n }\r\n /**\r\n * Returns a duration of currently active `baseInterval` in milliseconds.\r\n *\r\n * @return Duration\r\n */\r\n baseDuration() {\r\n return this._baseDuration;\r\n //return $time.getIntervalDuration(this.getPrivate(\"baseInterval\"));\r\n }\r\n /**\r\n * Returns a duration of user-defined `baseInterval` in milliseconds.\r\n *\r\n * @return Duration\r\n */\r\n baseMainDuration() {\r\n return $time.getIntervalDuration(this.get(\"baseInterval\"));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n processSeriesDataItem(dataItem, fields) {\r\n const baseInterval = this.getPrivate(\"baseInterval\");\r\n if (!dataItem.open) {\r\n dataItem.open = {};\r\n }\r\n if (!dataItem.close) {\r\n dataItem.close = {};\r\n }\r\n $array.each(fields, (field) => {\r\n let value = dataItem.get(field);\r\n if ($type.isNumber(value)) {\r\n let startTime = dataItem.open[field];\r\n let endTime = dataItem.close[field];\r\n // this is done to save cpu, as rounding is quite expensive, especially with timezone set. \r\n // if value is between prev start and end, it means it didn't change, all is fine.\r\n if (value >= startTime && value <= endTime) {\r\n }\r\n else {\r\n const timeUnit = baseInterval.timeUnit;\r\n const count = baseInterval.count;\r\n //startTime = $time.round(new Date(value), timeUnit, count, firstDay, utc, undefined, timezone).getTime();\r\n startTime = $time.roun(value, timeUnit, count, this._root);\r\n endTime = startTime + $time.getDuration(timeUnit, count * this._getM(timeUnit));\r\n //endTime = $time.round(new Date(endTime), timeUnit, 1, firstDay, utc, undefined, timezone).getTime();\r\n endTime = $time.roun(endTime, timeUnit, 1, this._root);\r\n dataItem.open[field] = startTime;\r\n dataItem.close[field] = endTime;\r\n }\r\n this._updateDates(startTime, dataItem.component);\r\n }\r\n });\r\n }\r\n _handleSizeDirty() {\r\n // void \r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemPositionX(dataItem, field, cellLocation, axisLocation) {\r\n let openValue;\r\n let closeValue;\r\n if (dataItem.open && dataItem.close) {\r\n openValue = dataItem.open[field];\r\n closeValue = dataItem.close[field];\r\n }\r\n else {\r\n openValue = dataItem.get(field);\r\n closeValue = openValue;\r\n }\r\n let value = openValue + (closeValue - openValue) * cellLocation;\r\n value = this._baseValue + (value - this._baseValue) * axisLocation;\r\n return this.valueToPosition(value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemCoordinateX(dataItem, field, cellLocation, axisLocation) {\r\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionX(dataItem, field, cellLocation, axisLocation));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemPositionY(dataItem, field, cellLocation, axisLocation) {\r\n let openValue;\r\n let closeValue;\r\n if (dataItem.open && dataItem.close) {\r\n openValue = dataItem.open[field];\r\n closeValue = dataItem.close[field];\r\n }\r\n else {\r\n openValue = dataItem.get(field);\r\n closeValue = openValue;\r\n }\r\n let value = openValue + (closeValue - openValue) * cellLocation;\r\n value = this._baseValue + (value - this._baseValue) * axisLocation;\r\n return this.valueToPosition(value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemCoordinateY(dataItem, field, cellLocation, axisLocation) {\r\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionY(dataItem, field, cellLocation, axisLocation));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n roundAxisPosition(position, location) {\r\n let value = this.positionToValue(position);\r\n value = value - (location - 0.5) * this.baseDuration();\r\n let baseInterval = this.getPrivate(\"baseInterval\");\r\n if (!$type.isNaN(value)) {\r\n const firstDay = this._root.locale.firstDayOfWeek;\r\n const timeUnit = baseInterval.timeUnit;\r\n const utc = this._root.utc;\r\n const timezone = this._root.timezone;\r\n const count = baseInterval.count;\r\n //value = $time.round(new Date(value), timeUnit, count, firstDay, utc, new Date(this.getPrivate(\"min\", 0)), timezone).getTime();\r\n value = $time.roun(value, timeUnit, count, this._root, this.getPrivate(\"min\", 0));\r\n let duration = $time.getDateIntervalDuration(baseInterval, new Date(value), firstDay, utc, timezone);\r\n if (timezone) {\r\n //value = $time.round(new Date(value + this.baseDuration() * 0.05), timeUnit, count, firstDay, utc, new Date(this.getPrivate(\"min\", 0)), timezone).getTime();\r\n value = $time.roun(value + this.baseDuration() * 0.05, timeUnit, count, this._root, this.getPrivate(\"min\", 0));\r\n duration = $time.getDateIntervalDuration(baseInterval, new Date(value + duration * location), firstDay, utc, timezone);\r\n }\r\n return this.valueToPosition(value + duration * location);\r\n }\r\n return NaN;\r\n }\r\n /**\r\n * Returns text to be used in an axis tooltip for specific relative position.\r\n *\r\n * NOTE: Unless `adjustPosition` (2nd parameter) is set to `false`, the method\r\n * will adjust position by `tooltipIntervalOffset`.\r\n *\r\n * @param position Position\r\n * @param adjustPosition Adjust position\r\n * @return Tooltip text\r\n */\r\n getTooltipText(position, adjustPosition) {\r\n //@todo number formatter + tag\r\n if (this.getPrivate(\"min\") != null) {\r\n let format = this.get(\"tooltipDateFormats\")[this.getPrivate(\"baseInterval\").timeUnit];\r\n let value = this.positionToValue(position);\r\n if ($type.isNumber(value)) {\r\n let date = new Date(value);\r\n let baseInterval = this.getPrivate(\"baseInterval\");\r\n let duration = $time.getDateIntervalDuration(baseInterval, date, this._root.locale.firstDayOfWeek, this._root.utc, this._root.timezone);\r\n if (adjustPosition !== false) {\r\n date = new Date(value + this.get(\"tooltipIntervalOffset\", -this.get(\"tooltipLocation\", 0.5)) * duration);\r\n }\r\n return this._root.dateFormatter.format(date, this.get(\"tooltipDateFormat\", format));\r\n }\r\n }\r\n return \"\";\r\n }\r\n /**\r\n * Returns a data item from series that is closest to the `position`.\r\n *\r\n * @param series Series\r\n * @param position Relative position\r\n * @return Data item\r\n */\r\n getSeriesItem(series, position, location, snap) {\r\n let fieldName = (this.getPrivate(\"name\") + this.get(\"renderer\").getPrivate(\"letter\"));\r\n let value = this.positionToValue(position);\r\n if (location == null) {\r\n location = 0.5;\r\n }\r\n value = value - (location - 0.5) * this.baseDuration();\r\n const result = $array.getSortedIndex(series.dataItems, (dataItem) => {\r\n let diValue = 0;\r\n if (dataItem.open) {\r\n diValue = dataItem.open[fieldName];\r\n }\r\n return $order.compare(diValue, value);\r\n });\r\n if (snap || series.get(\"snapTooltip\")) {\r\n let first = series.dataItems[result.index - 1];\r\n let second = series.dataItems[result.index];\r\n if (first && second) {\r\n if (first.open && second.close) {\r\n let open = first.open[fieldName];\r\n let close = second.close[fieldName];\r\n if (Math.abs(value - open) > Math.abs(value - close)) {\r\n return second;\r\n }\r\n }\r\n }\r\n if (first) {\r\n return first;\r\n }\r\n if (second) {\r\n return second;\r\n }\r\n }\r\n else {\r\n const dataItem = series.dataItems[result.index - 1];\r\n if (dataItem) {\r\n if (dataItem.open && dataItem.close) {\r\n let open = dataItem.open[fieldName];\r\n let close = dataItem.close[fieldName];\r\n if (value >= open && value <= close) {\r\n return dataItem;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n shouldGap(dataItem, nextItem, autoGapCount, fieldName) {\r\n const value1 = dataItem.get(fieldName);\r\n const value2 = nextItem.get(fieldName);\r\n if (value2 - value1 > this.baseDuration() * autoGapCount) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Zooms the axis to specific `start` and `end` dates.\r\n *\r\n * Optional `duration` specifies duration of zoom animation in milliseconds.\r\n *\r\n * @param start Start Date\r\n * @param end End Date\r\n * @param duration Duration in milliseconds\r\n */\r\n zoomToDates(start, end, duration) {\r\n this.zoomToValues(start.getTime(), end.getTime(), duration);\r\n }\r\n /**\r\n * Zooms the axis to specific `start` and `end` values.\r\n *\r\n * Optional `duration` specifies duration of zoom animation in milliseconds.\r\n *\r\n * @param start Start value\r\n * @param end End value\r\n * @param duration Duration in milliseconds\r\n */\r\n zoomToValues(start, end, duration) {\r\n const min = this.getPrivate(\"minFinal\", 0);\r\n const max = this.getPrivate(\"maxFinal\", 0);\r\n if (this.getPrivate(\"min\") != null && this.getPrivate(\"max\") != null) {\r\n if (this.get(\"groupData\")) {\r\n const futureGroupInterval = this.getGroupInterval(end - start);\r\n const baseInterval = this.get(\"baseInterval\");\r\n let baseMin = this.getIntervalMin(baseInterval);\r\n let baseMax = this.getIntervalMax(baseInterval) - 1;\r\n baseMax = $time.roun(baseMax, futureGroupInterval.timeUnit, futureGroupInterval.count, this.root);\r\n baseMax += this._getM(futureGroupInterval.timeUnit) * $time.getIntervalDuration(futureGroupInterval);\r\n baseMax = $time.roun(baseMax, futureGroupInterval.timeUnit, futureGroupInterval.count, this.root);\r\n let futureMin = $time.roun(baseMin, futureGroupInterval.timeUnit, futureGroupInterval.count, this.root);\r\n let futureMax = $time.roun(baseMax, futureGroupInterval.timeUnit, futureGroupInterval.count, this.root);\r\n let s = (start - futureMin) / (futureMax - futureMin);\r\n let e = (end - futureMin) / (futureMax - futureMin);\r\n this.zoom(s, e, duration);\r\n }\r\n else {\r\n this.zoom((start - min) / (max - min), (end - min) / (max - min), duration);\r\n }\r\n }\r\n }\r\n /**\r\n * Returns a `Date` object corresponding to specific position within plot\r\n * area.\r\n *\r\n * @param position Pposition\r\n * @return Date\r\n */\r\n positionToDate(position) {\r\n return new Date(this.positionToValue(position));\r\n }\r\n /**\r\n * Returns a relative position within plot area that corresponds to specific\r\n * date.\r\n *\r\n * @param date Date\r\n * @return Position\r\n */\r\n dateToPosition(date) {\r\n return this.valueToPosition(date.getTime());\r\n }\r\n /**\r\n * Returns relative position between two grid lines of the axis.\r\n *\r\n * @since 5.2.30\r\n * @return Position\r\n */\r\n getCellWidthPosition() {\r\n let max = this.getPrivate(\"selectionMax\", this.getPrivate(\"max\"));\r\n let min = this.getPrivate(\"selectionMin\", this.getPrivate(\"min\"));\r\n if ($type.isNumber(max) && $type.isNumber(min)) {\r\n return this._intervalDuration / (max - min);\r\n }\r\n return 0.05;\r\n }\r\n nextPosition(count) {\r\n if (count == null) {\r\n count = 1;\r\n }\r\n let dtime = this.get(\"tooltipLocation\", 0.5) * this.baseDuration();\r\n if (this.get(\"renderer\").getPrivate(\"letter\") == \"Y\") {\r\n count *= -1;\r\n }\r\n let tooltipValue = this.positionToValue(this.getPrivate(\"tooltipPosition\", 0));\r\n const baseInterval = this.getPrivate(\"baseInterval\");\r\n let time = this._nextTime(tooltipValue, count, baseInterval);\r\n let selectionMin = this.getPrivate(\"selectionMin\", 0);\r\n let selectionMax = this.getPrivate(\"selectionMax\", 0);\r\n let min = $time.roun(selectionMin, baseInterval.timeUnit, baseInterval.count, this._root);\r\n let max = $time.roun(selectionMax, baseInterval.timeUnit, baseInterval.count, this._root);\r\n time += dtime;\r\n time = $math.fitToRange(time, min + dtime, max - dtime);\r\n return this.toGlobalPosition(this.valueToPosition(time));\r\n }\r\n _nextTime(time, count, baseInterval) {\r\n return $time.roun(time + count * this.baseDuration(), baseInterval.timeUnit, baseInterval.count, this._root);\r\n }\r\n}\r\nObject.defineProperty(DateAxis, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"DateAxis\"\r\n});\r\nObject.defineProperty(DateAxis, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: ValueAxis.classNames.concat([DateAxis.className])\r\n});\r\n","import { Graphics } from \"../../../core/render/Graphics\";\r\n/**\r\n * Creates an axis grid line.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/#Grid} for more info\r\n * @important\r\n */\r\nexport class Grid extends Graphics {\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\")) {\r\n this._clear = true;\r\n }\r\n }\r\n}\r\nObject.defineProperty(Grid, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Grid\"\r\n});\r\nObject.defineProperty(Grid, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Grid.className])\r\n});\r\n","import { DataItem } from \"../../../core/render/Component\";\r\nimport { Axis } from \"./Axis\";\r\nimport { MultiDisposer } from \"../../../core/util/Disposer\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $math from \"../../../core/util/Math\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\n/**\r\n * Creates a value axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/value-axis/} for more info\r\n * @important\r\n */\r\nexport class ValueAxis extends Axis {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_dirtyExtremes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dirtySelectionExtremes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_deltaMinMax\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_minReal\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_maxReal\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_minRealLog\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_baseValue\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_syncDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_minLogAdjusted\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyExtremes() {\r\n this._dirtyExtremes = true;\r\n this.markDirty();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtySelectionExtremes() {\r\n this._dirtySelectionExtremes = true;\r\n this.markDirty();\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"axis\"]);\r\n this.setPrivateRaw(\"name\", \"value\");\r\n this.addTag(\"value\");\r\n super._afterNew();\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n if (this.isDirty(\"syncWithAxis\")) {\r\n let previousValue = this._prevSettings.syncWithAxis;\r\n if (previousValue) {\r\n if (this._syncDp) {\r\n this._syncDp.dispose();\r\n }\r\n }\r\n let syncWithAxis = this.get(\"syncWithAxis\");\r\n if (syncWithAxis) {\r\n this._syncDp = new MultiDisposer([\r\n syncWithAxis.onPrivate(\"selectionMinFinal\", () => {\r\n this._dirtySelectionExtremes = true;\r\n }),\r\n syncWithAxis.onPrivate(\"selectionMaxFinal\", () => {\r\n this._dirtySelectionExtremes = true;\r\n })\r\n ]);\r\n }\r\n }\r\n let someDirty = false;\r\n if (this.isDirty(\"min\") || this.isDirty(\"max\") || this.isDirty(\"maxPrecision\") || this.isDirty(\"numberFormat\")) {\r\n someDirty = true;\r\n this.ghostLabel.set(\"text\", \"\");\r\n }\r\n //if (this._dirtyExtremes || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"min\") || this.isDirty(\"max\") || this.isDirty(\"extraMin\") || this.isDirty(\"extraMax\") || this.isDirty(\"logarithmic\") || this.isDirty(\"treatZeroAs\") || this.isDirty(\"baseValue\") || this.isDirty(\"strictMinMax\") || this.isDirty(\"maxPrecision\")) {\r\n if (this._sizeDirty || this._dirtyExtremes || this._valuesDirty || someDirty || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"extraMin\") || this.isDirty(\"extraMax\") || this.isDirty(\"logarithmic\") || this.isDirty(\"treatZeroAs\") || this.isDirty(\"baseValue\") || this.isDirty(\"strictMinMax\") || this.isDirty(\"strictMinMaxSelection\")) {\r\n this._getMinMax();\r\n this._dirtyExtremes = false;\r\n }\r\n this._handleSizeDirty();\r\n if (this._dirtySelectionExtremes && !this._isPanning && this.get(\"autoZoom\", true)) {\r\n const chart = this.chart;\r\n let getMM = false;\r\n // #1563\r\n if (chart) {\r\n const letter = this.get(\"renderer\").getPrivate(\"letter\");\r\n if (letter == \"Y\") {\r\n chart.xAxes.each((axis) => {\r\n if (axis.className != \"ValueAxis\") {\r\n getMM = true;\r\n }\r\n });\r\n }\r\n else if (letter == \"X\") {\r\n chart.yAxes.each((axis) => {\r\n if (axis.className != \"ValueAxis\") {\r\n getMM = true;\r\n }\r\n });\r\n }\r\n }\r\n if (getMM) {\r\n this._getSelectionMinMax();\r\n }\r\n this._dirtySelectionExtremes = false;\r\n }\r\n this._groupData();\r\n if (this._sizeDirty || this._valuesDirty || this.isDirty(\"start\") || this.isDirty(\"end\") || this.isPrivateDirty(\"min\") || this.isPrivateDirty(\"selectionMax\") || this.isPrivateDirty(\"selectionMin\") || this.isPrivateDirty(\"max\") || this.isPrivateDirty(\"step\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"logarithmic\")) {\r\n this._handleRangeChange();\r\n this._prepareAxisItems();\r\n this._updateAxisRanges();\r\n }\r\n this._baseValue = this.baseValue();\r\n }\r\n _handleSizeDirty() {\r\n if (this._sizeDirty) {\r\n this._dirtySelectionExtremes = true;\r\n }\r\n }\r\n _groupData() {\r\n }\r\n _formatText(value) {\r\n const numberFormat = this.get(\"numberFormat\");\r\n const formatter = this.getNumberFormatter();\r\n let text = \"\";\r\n if (numberFormat) {\r\n text = formatter.format(value, numberFormat);\r\n }\r\n else {\r\n text = formatter.format(value, undefined, this.getPrivate(\"stepDecimalPlaces\"));\r\n }\r\n return text;\r\n }\r\n _prepareAxisItems() {\r\n const min = this.getPrivate(\"min\");\r\n const max = this.getPrivate(\"max\");\r\n if ($type.isNumber(min) && $type.isNumber(max)) {\r\n const logarithmic = this.get(\"logarithmic\");\r\n const step = this.getPrivate(\"step\");\r\n const selectionMin = this.getPrivate(\"selectionMin\");\r\n const selectionMax = this.getPrivate(\"selectionMax\") + step;\r\n let value = selectionMin - step;\r\n let differencePower = 1;\r\n let minLog = min;\r\n if (logarithmic) {\r\n value = this._minLogAdjusted;\r\n if (value < selectionMin) {\r\n while (value < selectionMin) {\r\n value += step;\r\n }\r\n }\r\n minLog = value;\r\n if (minLog <= 0) {\r\n minLog = 1;\r\n if (step < 1) {\r\n if ($type.isNumber(this._minRealLog)) {\r\n minLog = this._minRealLog;\r\n }\r\n else {\r\n minLog = Math.pow(10, -50);\r\n }\r\n }\r\n }\r\n differencePower = Math.log(selectionMax - step) * Math.LOG10E - Math.log(minLog) * Math.LOG10E;\r\n if (differencePower > 2) {\r\n value = Math.pow(10, Math.log(minLog) * Math.LOG10E - 50);\r\n }\r\n }\r\n /// minor grid\r\n const renderer = this.get(\"renderer\");\r\n const minorLabelsEnabled = renderer.get(\"minorLabelsEnabled\");\r\n const minorGridEnabled = renderer.get(\"minorGridEnabled\", minorLabelsEnabled);\r\n let stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\r\n const stepAdjusted = Math.round(step / stepPower);\r\n let minorGridCount = 2;\r\n if ($math.round(stepAdjusted / 5, 10) % 1 == 0) {\r\n minorGridCount = 5;\r\n }\r\n if ($math.round(stepAdjusted / 10, 10) % 1 == 0) {\r\n minorGridCount = 10;\r\n }\r\n let minorStep = step / minorGridCount;\r\n // end of minor grid\r\n let i = 0;\r\n let m = 0;\r\n let previous = -Infinity;\r\n while (value < selectionMax) {\r\n let dataItem;\r\n if (this.dataItems.length < i + 1) {\r\n dataItem = new DataItem(this, undefined, {});\r\n this._dataItems.push(dataItem);\r\n this.processDataItem(dataItem);\r\n }\r\n else {\r\n dataItem = this.dataItems[i];\r\n }\r\n this._createAssets(dataItem, []);\r\n this._toggleDataItem(dataItem, true);\r\n dataItem.setRaw(\"value\", value);\r\n const label = dataItem.get(\"label\");\r\n if (label) {\r\n label.set(\"text\", this._formatText(value));\r\n }\r\n this._prepareDataItem(dataItem);\r\n let nextValue = value;\r\n if (!logarithmic) {\r\n nextValue += step;\r\n }\r\n else {\r\n if (differencePower > 2) {\r\n nextValue = Math.pow(10, Math.log(minLog) * Math.LOG10E + i - 50);\r\n }\r\n else {\r\n nextValue += step;\r\n }\r\n }\r\n // minor grid\r\n if (minorGridEnabled) {\r\n let minorValue = value + minorStep;\r\n if (logarithmic) {\r\n if (differencePower > 2) {\r\n let minorMinMaxStep = this._adjustMinMax(value, nextValue, 10);\r\n minorStep = minorMinMaxStep.step;\r\n }\r\n minorValue = value + minorStep;\r\n }\r\n while (minorValue < nextValue - step * 0.00000000001) {\r\n let minorDataItem;\r\n if (this.minorDataItems.length < m + 1) {\r\n minorDataItem = new DataItem(this, undefined, {});\r\n this.minorDataItems.push(minorDataItem);\r\n this.processDataItem(minorDataItem);\r\n }\r\n else {\r\n minorDataItem = this.minorDataItems[m];\r\n }\r\n this._createAssets(minorDataItem, [\"minor\"], true);\r\n this._toggleDataItem(minorDataItem, true);\r\n minorDataItem.setRaw(\"value\", minorValue);\r\n const minorLabel = minorDataItem.get(\"label\");\r\n if (minorLabel) {\r\n if (minorLabelsEnabled) {\r\n minorLabel.set(\"text\", this._formatText(minorValue));\r\n }\r\n else {\r\n minorLabel.setPrivate(\"visible\", false);\r\n }\r\n }\r\n this._prepareDataItem(minorDataItem);\r\n minorValue += minorStep;\r\n m++;\r\n }\r\n }\r\n value = nextValue;\r\n if (previous == value) {\r\n break;\r\n }\r\n let stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\r\n if (stepPower < 1 && !logarithmic) {\r\n // exponent is less then 1 too. Count decimals of exponent\r\n let decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 2;\r\n // round value to avoid floating point issues\r\n value = $math.round(value, decCount);\r\n }\r\n i++;\r\n previous = value;\r\n }\r\n for (let j = i; j < this.dataItems.length; j++) {\r\n this._toggleDataItem(this.dataItems[j], false);\r\n }\r\n for (let j = m; j < this.minorDataItems.length; j++) {\r\n this._toggleDataItem(this.minorDataItems[j], false);\r\n }\r\n $array.each(this.series, (series) => {\r\n if (series.inited) {\r\n series._markDirtyAxes();\r\n }\r\n });\r\n this._updateGhost();\r\n }\r\n }\r\n _prepareDataItem(dataItem, count) {\r\n let renderer = this.get(\"renderer\");\r\n let value = dataItem.get(\"value\");\r\n let endValue = dataItem.get(\"endValue\");\r\n let position = this.valueToPosition(value);\r\n let endPosition = position;\r\n let fillEndPosition = this.valueToPosition(value + this.getPrivate(\"step\"));\r\n if ($type.isNumber(endValue)) {\r\n endPosition = this.valueToPosition(endValue);\r\n fillEndPosition = endPosition;\r\n }\r\n if (dataItem.get(\"isRange\")) {\r\n if (endValue == null) {\r\n fillEndPosition = position;\r\n }\r\n }\r\n let labelEndPosition = endPosition;\r\n let labelEndValue = dataItem.get(\"labelEndValue\");\r\n if (labelEndValue != null) {\r\n labelEndPosition = this.valueToPosition(labelEndValue);\r\n }\r\n renderer.updateLabel(dataItem.get(\"label\"), position, labelEndPosition, count);\r\n const grid = dataItem.get(\"grid\");\r\n renderer.updateGrid(grid, position, endPosition);\r\n if (grid) {\r\n if (value == this.get(\"baseValue\", 0)) {\r\n grid.addTag(\"base\");\r\n grid._applyThemes();\r\n }\r\n else if (grid.hasTag(\"base\")) {\r\n grid.removeTag(\"base\");\r\n grid._applyThemes();\r\n }\r\n }\r\n renderer.updateTick(dataItem.get(\"tick\"), position, labelEndPosition, count);\r\n renderer.updateFill(dataItem.get(\"axisFill\"), position, fillEndPosition);\r\n this._processBullet(dataItem);\r\n renderer.updateBullet(dataItem.get(\"bullet\"), position, endPosition);\r\n if (!dataItem.get(\"isRange\")) {\r\n const fillRule = this.get(\"fillRule\");\r\n if (fillRule) {\r\n fillRule(dataItem);\r\n }\r\n }\r\n }\r\n _handleRangeChange() {\r\n let selectionMin = this.positionToValue(this.get(\"start\", 0));\r\n let selectionMax = this.positionToValue(this.get(\"end\", 1));\r\n const gridCount = this.get(\"renderer\").gridCount();\r\n let minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount, true);\r\n let stepDecimalPlaces = $utils.decimalPlaces(minMaxStep.step);\r\n this.setPrivateRaw(\"stepDecimalPlaces\", stepDecimalPlaces);\r\n selectionMin = $math.round(selectionMin, stepDecimalPlaces);\r\n selectionMax = $math.round(selectionMax, stepDecimalPlaces);\r\n minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount, true);\r\n let step = minMaxStep.step;\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n if (this.getPrivate(\"selectionMin\") !== selectionMin || this.getPrivate(\"selectionMax\") !== selectionMax || this.getPrivate(\"step\") !== step) {\r\n // do not change to setPrivate, will cause SO\r\n this.setPrivateRaw(\"selectionMin\", selectionMin);\r\n this.setPrivateRaw(\"selectionMax\", selectionMax);\r\n this.setPrivateRaw(\"step\", step);\r\n }\r\n }\r\n /**\r\n * Converts a relative position to a corresponding numeric value from axis\r\n * scale.\r\n *\r\n * @param position Relative position\r\n * @return Value\r\n */\r\n positionToValue(position) {\r\n const min = this.getPrivate(\"min\");\r\n const max = this.getPrivate(\"max\");\r\n if (!this.get(\"logarithmic\")) {\r\n return position * (max - min) + min;\r\n }\r\n else {\r\n return Math.pow(Math.E, (position * ((Math.log(max) * Math.LOG10E - Math.log(min) * Math.LOG10E)) + Math.log(min) * Math.LOG10E) / Math.LOG10E);\r\n }\r\n }\r\n /**\r\n * Convers value to a relative position on axis.\r\n *\r\n * @param value Value\r\n * @return Relative position\r\n */\r\n valueToPosition(value) {\r\n const min = this.getPrivate(\"min\");\r\n const max = this.getPrivate(\"max\");\r\n if (!this.get(\"logarithmic\")) {\r\n return (value - min) / (max - min);\r\n }\r\n else {\r\n if (value <= 0) {\r\n let treatZeroAs = this.get(\"treatZeroAs\");\r\n if ($type.isNumber(treatZeroAs)) {\r\n value = treatZeroAs;\r\n }\r\n }\r\n return (Math.log(value) * Math.LOG10E - Math.log(min) * Math.LOG10E) / ((Math.log(max) * Math.LOG10E - Math.log(min) * Math.LOG10E));\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n valueToFinalPosition(value) {\r\n const min = this.getPrivate(\"minFinal\");\r\n const max = this.getPrivate(\"maxFinal\");\r\n if (!this.get(\"logarithmic\")) {\r\n return (value - min) / (max - min);\r\n }\r\n else {\r\n if (value <= 0) {\r\n let treatZeroAs = this.get(\"treatZeroAs\");\r\n if ($type.isNumber(treatZeroAs)) {\r\n value = treatZeroAs;\r\n }\r\n }\r\n return (Math.log(value) * Math.LOG10E - Math.log(min) * Math.LOG10E) / ((Math.log(max) * Math.LOG10E - Math.log(min) * Math.LOG10E));\r\n }\r\n }\r\n /**\r\n * Returns X coordinate in pixels corresponding to specific value.\r\n *\r\n * @param value Numeric value\r\n * @param location Location\r\n * @param baseValue Base value\r\n * @return X coordinate\r\n */\r\n getX(value, location, baseValue) {\r\n value = baseValue + (value - baseValue) * location;\r\n const position = this.valueToPosition(value);\r\n return this._settings.renderer.positionToCoordinate(position);\r\n }\r\n /**\r\n * Returns X coordinate in pixels corresponding to specific value.\r\n *\r\n * @param value Numeric value\r\n * @param location Location\r\n * @param baseValue Base value\r\n * @return X coordinate\r\n */\r\n getY(value, location, baseValue) {\r\n value = baseValue + (value - baseValue) * location;\r\n const position = this.valueToPosition(value);\r\n return this._settings.renderer.positionToCoordinate(position);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemCoordinateX(dataItem, field, _cellLocation, axisLocation) {\r\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionX(dataItem, field, _cellLocation, axisLocation));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemPositionX(dataItem, field, _cellLocation, axisLocation) {\r\n let value = dataItem.get(field);\r\n const stackToItem = dataItem.get(\"stackToItemX\");\r\n if (stackToItem) {\r\n const series = dataItem.component;\r\n value = value * axisLocation + series.getStackedXValueWorking(dataItem, field);\r\n }\r\n else {\r\n value = this._baseValue + (value - this._baseValue) * axisLocation;\r\n }\r\n return this.valueToPosition(value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemCoordinateY(dataItem, field, _cellLocation, axisLocation) {\r\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionY(dataItem, field, _cellLocation, axisLocation));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemPositionY(dataItem, field, _cellLocation, axisLocation) {\r\n let value = dataItem.get(field);\r\n const stackToItem = dataItem.get(\"stackToItemY\");\r\n if (stackToItem) {\r\n const series = dataItem.component;\r\n value = value * axisLocation + series.getStackedYValueWorking(dataItem, field);\r\n }\r\n else {\r\n value = this._baseValue + (value - this._baseValue) * axisLocation;\r\n }\r\n return this.valueToPosition(value);\r\n }\r\n /**\r\n * Returns relative position of axis' `baseValue`.\r\n *\r\n * @return Base value position\r\n */\r\n basePosition() {\r\n return this.valueToPosition(this.baseValue());\r\n }\r\n /**\r\n * Base value of the [[ValueAxis]], which determines positive and negative\r\n * values.\r\n *\r\n * @return Base value\r\n */\r\n baseValue() {\r\n const min = Math.min(this.getPrivate(\"minFinal\", -Infinity), this.getPrivate(\"selectionMin\", -Infinity));\r\n const max = Math.max(this.getPrivate(\"maxFinal\", Infinity), this.getPrivate(\"selectionMax\", Infinity));\r\n let baseValue = this.get(\"baseValue\", 0);\r\n if (baseValue < min) {\r\n baseValue = min;\r\n }\r\n if (baseValue > max) {\r\n baseValue = max;\r\n }\r\n return baseValue;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n cellEndValue(value) {\r\n return value;\r\n }\r\n fixSmallStep(step) {\r\n // happens because of floating point error\r\n if (1 + step === 1) {\r\n step *= 2;\r\n return this.fixSmallStep(step);\r\n }\r\n return step;\r\n }\r\n _fixMin(min) {\r\n return min;\r\n }\r\n _fixMax(max) {\r\n return max;\r\n }\r\n _calculateTotals() {\r\n if (this.get(\"calculateTotals\")) {\r\n let series = this.series[0];\r\n if (series) {\r\n let startIndex = series.startIndex();\r\n if (series.dataItems.length > 0) {\r\n if (startIndex > 0) {\r\n startIndex--;\r\n }\r\n let endIndex = series.endIndex();\r\n if (endIndex < series.dataItems.length) {\r\n endIndex++;\r\n }\r\n let field;\r\n let vc;\r\n if (series.get(\"yAxis\") == this) {\r\n field = \"valueY\";\r\n vc = \"vcy\";\r\n }\r\n else if (series.get(\"xAxis\") == this) {\r\n field = \"valueX\";\r\n vc = \"vcx\";\r\n }\r\n let fieldWorking = field + \"Working\";\r\n if (field) {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n let sum = 0;\r\n let total = 0;\r\n $array.each(this.series, (series) => {\r\n if (!series.get(\"excludeFromTotal\")) {\r\n let dataItem = series.dataItems[i];\r\n if (dataItem) {\r\n let value = dataItem.get(fieldWorking) * series.get(vc);\r\n if (!$type.isNaN(value)) {\r\n sum += value;\r\n total += Math.abs(value);\r\n }\r\n }\r\n }\r\n });\r\n $array.each(this.series, (series) => {\r\n if (!series.get(\"excludeFromTotal\")) {\r\n let dataItem = series.dataItems[i];\r\n if (dataItem) {\r\n let value = dataItem.get(fieldWorking) * series.get(vc);\r\n if (!$type.isNaN(value)) {\r\n dataItem.set((field + \"Total\"), total);\r\n dataItem.set((field + \"Sum\"), sum);\r\n dataItem.set((field + \"TotalPercent\"), value / total * 100);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _getSelectionMinMax() {\r\n const min = this.getPrivate(\"minFinal\");\r\n const max = this.getPrivate(\"maxFinal\");\r\n const minDefined = this.get(\"min\");\r\n const maxDefined = this.get(\"max\");\r\n let extraMin = this.get(\"extraMin\", 0);\r\n let extraMax = this.get(\"extraMax\", 0);\r\n if (this.get(\"logarithmic\")) {\r\n if (this.get(\"extraMin\") == null) {\r\n extraMin = 0.1;\r\n }\r\n if (this.get(\"extraMax\") == null) {\r\n extraMax = 0.2;\r\n }\r\n }\r\n const gridCount = this.get(\"renderer\").gridCount();\r\n const selectionStrictMinMax = this.get(\"strictMinMaxSelection\");\r\n let strictMinMax = this.get(\"strictMinMax\");\r\n if ($type.isNumber(min) && $type.isNumber(max)) {\r\n let selectionMin = max;\r\n let selectionMax = min;\r\n $array.each(this.series, (series) => {\r\n if (!series.get(\"ignoreMinMax\")) {\r\n let seriesMin;\r\n let seriesMax;\r\n const outOfSelection = series.getPrivate(\"outOfSelection\");\r\n if (series.get(\"xAxis\") === this) {\r\n if (!outOfSelection) {\r\n let minX = series.getPrivate(\"minX\");\r\n let maxX = series.getPrivate(\"maxX\");\r\n // solves #90085\r\n if (series.startIndex() != 0 || series.endIndex() != series.dataItems.length) {\r\n minX = undefined;\r\n maxX = undefined;\r\n }\r\n seriesMin = series.getPrivate(\"selectionMinX\", minX);\r\n seriesMax = series.getPrivate(\"selectionMaxX\", maxX);\r\n }\r\n }\r\n else if (series.get(\"yAxis\") === this) {\r\n if (!outOfSelection) {\r\n let minY = series.getPrivate(\"minY\");\r\n let maxY = series.getPrivate(\"maxY\");\r\n // solves #90085\r\n if (series.startIndex() != 0 || series.endIndex() != series.dataItems.length) {\r\n minY = undefined;\r\n maxY = undefined;\r\n }\r\n seriesMin = series.getPrivate(\"selectionMinY\", minY);\r\n seriesMax = series.getPrivate(\"selectionMaxY\", maxY);\r\n }\r\n }\r\n if (!series.isHidden() && !series.isShowing()) {\r\n if ($type.isNumber(seriesMin)) {\r\n selectionMin = Math.min(selectionMin, seriesMin);\r\n }\r\n if ($type.isNumber(seriesMax)) {\r\n selectionMax = Math.max(selectionMax, seriesMax);\r\n }\r\n }\r\n }\r\n });\r\n this.axisRanges.each((range) => {\r\n if (range.get(\"affectsMinMax\")) {\r\n let value = range.get(\"value\");\r\n if (value != null) {\r\n selectionMin = Math.min(selectionMin, value);\r\n selectionMax = Math.max(selectionMax, value);\r\n }\r\n value = range.get(\"endValue\");\r\n if (value != null) {\r\n selectionMin = Math.min(selectionMin, value);\r\n selectionMax = Math.max(selectionMax, value);\r\n }\r\n }\r\n });\r\n if (selectionMin > selectionMax) {\r\n [selectionMin, selectionMax] = [selectionMax, selectionMin];\r\n }\r\n if ($type.isNumber(minDefined)) {\r\n if (strictMinMax) {\r\n selectionMin = minDefined;\r\n }\r\n else {\r\n selectionMin = min;\r\n }\r\n }\r\n else if (strictMinMax) {\r\n if ($type.isNumber(this._minReal)) {\r\n selectionMin = this._minReal;\r\n }\r\n }\r\n if ($type.isNumber(maxDefined)) {\r\n if (strictMinMax) {\r\n selectionMax = maxDefined;\r\n }\r\n else {\r\n selectionMax = max;\r\n }\r\n }\r\n else if (strictMinMax) {\r\n if ($type.isNumber(this._maxReal)) {\r\n selectionMax = this._maxReal;\r\n }\r\n }\r\n if (selectionMin === selectionMax) {\r\n let smin = selectionMin;\r\n selectionMin -= this._deltaMinMax;\r\n selectionMax += this._deltaMinMax;\r\n if (selectionMin < min) {\r\n let d = smin - min;\r\n if (d == 0) {\r\n d = this._deltaMinMax;\r\n }\r\n selectionMin = smin - d;\r\n selectionMax = smin + d;\r\n strictMinMax = true;\r\n }\r\n let minMaxStep2 = this._adjustMinMax(selectionMin, selectionMax, gridCount, strictMinMax);\r\n selectionMin = minMaxStep2.min;\r\n selectionMax = minMaxStep2.max;\r\n }\r\n let selectionMinReal = selectionMin;\r\n let selectionMaxReal = selectionMax;\r\n let delta = selectionMax - selectionMin;\r\n selectionMin -= delta * extraMin;\r\n selectionMax += delta * extraMax;\r\n let minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount);\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n selectionMin = $math.fitToRange(selectionMin, min, max);\r\n selectionMax = $math.fitToRange(selectionMax, min, max);\r\n // do it for the second time !important\t\t\t\r\n minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount, true);\r\n if (!strictMinMax) {\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n }\r\n const syncWithAxis = this.get(\"syncWithAxis\");\r\n if (syncWithAxis) {\r\n minMaxStep = this._syncAxes(selectionMin, selectionMax, minMaxStep.step, syncWithAxis.getPrivate(\"selectionMinFinal\", syncWithAxis.getPrivate(\"minFinal\", 0)), syncWithAxis.getPrivate(\"selectionMaxFinal\", syncWithAxis.getPrivate(\"maxFinal\", 1)), syncWithAxis.getPrivate(\"selectionStepFinal\", syncWithAxis.getPrivate(\"step\", 1)));\r\n if (minMaxStep.min < min) {\r\n minMaxStep.min = min;\r\n }\r\n if (minMaxStep.max > max) {\r\n minMaxStep.max = max;\r\n }\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n }\r\n if (strictMinMax) {\r\n if ($type.isNumber(minDefined)) {\r\n selectionMin = Math.max(selectionMin, minDefined);\r\n }\r\n if ($type.isNumber(maxDefined)) {\r\n selectionMax = Math.min(selectionMax, maxDefined);\r\n }\r\n }\r\n if (selectionStrictMinMax) {\r\n selectionMin = selectionMinReal - (selectionMaxReal - selectionMinReal) * extraMin;\r\n selectionMax = selectionMaxReal + (selectionMaxReal - selectionMinReal) * extraMax;\r\n }\r\n if (strictMinMax) {\r\n if ($type.isNumber(minDefined)) {\r\n selectionMin = minDefined;\r\n }\r\n else {\r\n selectionMin = selectionMinReal;\r\n }\r\n if ($type.isNumber(maxDefined)) {\r\n selectionMax = maxDefined;\r\n }\r\n else {\r\n selectionMax = selectionMaxReal;\r\n }\r\n if (selectionMax - selectionMin <= 0.00000001) {\r\n selectionMin -= this._deltaMinMax;\r\n selectionMax += this._deltaMinMax;\r\n }\r\n let delta = selectionMax - selectionMin;\r\n selectionMin -= delta * extraMin;\r\n selectionMax += delta * extraMax;\r\n }\r\n if (this.get(\"logarithmic\")) {\r\n if (selectionMin <= 0) {\r\n selectionMin = selectionMinReal * (1 - Math.min(extraMin, 0.99));\r\n }\r\n if (selectionMin < min) {\r\n selectionMin = min;\r\n }\r\n if (selectionMax > max) {\r\n selectionMax = max;\r\n }\r\n }\r\n let len = Math.min(20, Math.ceil(Math.log(this.getPrivate(\"maxZoomFactor\", 100) + 1) / Math.LN10) + 2);\r\n let start = $math.round(this.valueToFinalPosition(selectionMin), len);\r\n let end = $math.round(this.valueToFinalPosition(selectionMax), len);\r\n this.setPrivateRaw(\"selectionMinFinal\", selectionMin);\r\n this.setPrivateRaw(\"selectionMaxFinal\", selectionMax);\r\n this.setPrivateRaw(\"selectionStepFinal\", minMaxStep.step);\r\n this.zoom(start, end);\r\n }\r\n }\r\n _getMinMax() {\r\n let minDefined = this.get(\"min\");\r\n let maxDefined = this.get(\"max\");\r\n let min = Infinity;\r\n let max = -Infinity;\r\n let extraMin = this.get(\"extraMin\", 0);\r\n let extraMax = this.get(\"extraMax\", 0);\r\n if (this.get(\"logarithmic\")) {\r\n if (this.get(\"extraMin\") == null) {\r\n extraMin = 0.1;\r\n }\r\n if (this.get(\"extraMax\") == null) {\r\n extraMax = 0.2;\r\n }\r\n }\r\n let minDiff = Infinity;\r\n $array.each(this.series, (series) => {\r\n if (!series.get(\"ignoreMinMax\")) {\r\n let seriesMin;\r\n let seriesMax;\r\n if (series.get(\"xAxis\") === this) {\r\n seriesMin = series.getPrivate(\"minX\");\r\n seriesMax = series.getPrivate(\"maxX\");\r\n }\r\n else if (series.get(\"yAxis\") === this) {\r\n seriesMin = series.getPrivate(\"minY\");\r\n seriesMax = series.getPrivate(\"maxY\");\r\n }\r\n if ($type.isNumber(seriesMin) && $type.isNumber(seriesMax)) {\r\n min = Math.min(min, seriesMin);\r\n max = Math.max(max, seriesMax);\r\n let diff = seriesMax - seriesMin;\r\n if (diff <= 0) {\r\n diff = Math.abs(seriesMax / 100);\r\n }\r\n if (diff < minDiff) {\r\n minDiff = diff;\r\n }\r\n }\r\n }\r\n });\r\n this.axisRanges.each((range) => {\r\n if (range.get(\"affectsMinMax\")) {\r\n let value = range.get(\"value\");\r\n if (value != null) {\r\n min = Math.min(min, value);\r\n max = Math.max(max, value);\r\n }\r\n value = range.get(\"endValue\");\r\n if (value != null) {\r\n min = Math.min(min, value);\r\n max = Math.max(max, value);\r\n }\r\n }\r\n });\r\n if (this.get(\"logarithmic\")) {\r\n let treatZeroAs = this.get(\"treatZeroAs\");\r\n if ($type.isNumber(treatZeroAs)) {\r\n if (min <= 0) {\r\n min = treatZeroAs;\r\n }\r\n }\r\n if (min <= 0) {\r\n new Error(\"Logarithmic value axis can not have values <= 0.\");\r\n }\r\n }\r\n if (min === 0 && max === 0) {\r\n max = 0.9;\r\n min = -0.9;\r\n }\r\n if ($type.isNumber(minDefined)) {\r\n min = minDefined;\r\n }\r\n if ($type.isNumber(maxDefined)) {\r\n max = maxDefined;\r\n }\r\n // meaning no min/max found on series/ranges and no min/max was defined\r\n if (min === Infinity || max === -Infinity) {\r\n this.setPrivate(\"minFinal\", undefined);\r\n this.setPrivate(\"maxFinal\", undefined);\r\n return;\r\n }\r\n if (min > max) {\r\n [min, max] = [max, min];\r\n }\r\n const initialMin = min;\r\n const initialMax = max;\r\n // adapter\r\n let minAdapted = this.adapters.fold(\"min\", min);\r\n let maxAdapted = this.adapters.fold(\"max\", max);\r\n this._minRealLog = min;\r\n if ($type.isNumber(minAdapted)) {\r\n min = minAdapted;\r\n }\r\n if ($type.isNumber(maxAdapted)) {\r\n max = maxAdapted;\r\n }\r\n // DateAxis does some magic here\r\n min = this._fixMin(min);\r\n max = this._fixMax(max);\r\n // this happens if starLocation and endLocation are 0.5 and DateAxis has only one date\t\t\r\n if (max - min <= 1 / Math.pow(10, 15)) {\r\n if (max - min !== 0) {\r\n this._deltaMinMax = (max - min) / 2;\r\n }\r\n else {\r\n this._getDelta(max);\r\n }\r\n min -= this._deltaMinMax;\r\n max += this._deltaMinMax;\r\n }\r\n // add extras\r\n min -= (max - min) * extraMin;\r\n max += (max - min) * extraMax;\r\n if (this.get(\"logarithmic\")) {\r\n // don't let min go below 0 if real min is >= 0\r\n if (min < 0 && initialMin >= 0) {\r\n min = 0;\r\n }\r\n // don't let max go above 0 if real max is <= 0\r\n if (max > 0 && initialMax <= 0) {\r\n max = 0;\r\n }\r\n }\r\n this._minReal = min;\r\n this._maxReal = max;\r\n let strictMinMax = this.get(\"strictMinMax\");\r\n let strictMinMaxSelection = this.get(\"strictMinMaxSelection\", false);\r\n if (strictMinMaxSelection) {\r\n strictMinMax = strictMinMaxSelection;\r\n }\r\n let strict = strictMinMax;\r\n if ($type.isNumber(maxDefined)) {\r\n strict = true;\r\n }\r\n let gridCount = this.get(\"renderer\").gridCount();\r\n let minMaxStep = this._adjustMinMax(min, max, gridCount, strict);\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n // do it for the second time with strict true (importat!)\r\n minMaxStep = this._adjustMinMax(min, max, gridCount, true);\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n // return min max if strict\r\n if (strictMinMax) {\r\n if ($type.isNumber(minDefined)) {\r\n min = minDefined;\r\n }\r\n else {\r\n min = this._minReal;\r\n }\r\n if ($type.isNumber(maxDefined)) {\r\n max = maxDefined;\r\n }\r\n else {\r\n max = this._maxReal;\r\n }\r\n if (max - min <= 0.00000001) {\r\n min -= this._deltaMinMax;\r\n max += this._deltaMinMax;\r\n }\r\n let delta = max - min;\r\n min -= delta * extraMin;\r\n max += delta * extraMax;\r\n }\r\n minAdapted = this.adapters.fold(\"min\", min);\r\n maxAdapted = this.adapters.fold(\"max\", max);\r\n if ($type.isNumber(minAdapted)) {\r\n min = minAdapted;\r\n }\r\n if ($type.isNumber(maxAdapted)) {\r\n max = maxAdapted;\r\n }\r\n if (minDiff == Infinity) {\r\n minDiff = (max - min);\r\n }\r\n // this is to avoid floating point number error\r\n let decCount = Math.round(Math.abs(Math.log(Math.abs(max - min)) * Math.LOG10E)) + 5;\r\n min = $math.round(min, decCount);\r\n max = $math.round(max, decCount);\r\n const syncWithAxis = this.get(\"syncWithAxis\");\r\n if (syncWithAxis) {\r\n minMaxStep = this._syncAxes(min, max, minMaxStep.step, syncWithAxis.getPrivate(\"minFinal\", syncWithAxis.getPrivate(\"min\", 0)), syncWithAxis.getPrivate(\"maxFinal\", syncWithAxis.getPrivate(\"max\", 1)), syncWithAxis.getPrivate(\"step\", 1));\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n }\r\n this.setPrivateRaw(\"maxZoomFactor\", Math.max(1, Math.ceil((max - min) / minDiff * this.get(\"maxZoomFactor\", 100))));\r\n this._fixZoomFactor();\r\n if (this.get(\"logarithmic\")) {\r\n this._minLogAdjusted = min;\r\n min = this._minReal;\r\n max = this._maxReal;\r\n if (min <= 0) {\r\n min = initialMin * (1 - Math.min(extraMin, 0.99));\r\n }\r\n }\r\n if ($type.isNumber(min) && $type.isNumber(max)) {\r\n if (this.getPrivate(\"minFinal\") !== min || this.getPrivate(\"maxFinal\") !== max) {\r\n this.setPrivate(\"minFinal\", min);\r\n this.setPrivate(\"maxFinal\", max);\r\n this._saveMinMax(min, max);\r\n const duration = this.get(\"interpolationDuration\", 0);\r\n const easing = this.get(\"interpolationEasing\");\r\n this.animatePrivate({ key: \"min\", to: min, duration, easing });\r\n this.animatePrivate({ key: \"max\", to: max, duration, easing });\r\n }\r\n }\r\n }\r\n _fixZoomFactor() {\r\n }\r\n _getDelta(max) {\r\n // the number by which we need to raise 10 to get difference\r\n let exponent = Math.log(Math.abs(max)) * Math.LOG10E;\r\n // here we find a number which is power of 10 and has the same count of numbers as difference has\r\n let power = Math.pow(10, Math.floor(exponent));\r\n // reduce this number by 10 times\r\n power = power / 10;\r\n this._deltaMinMax = power;\r\n }\r\n _saveMinMax(_min, _max) {\r\n }\r\n _adjustMinMax(min, max, gridCount, strictMode) {\r\n // will fail if 0\r\n if (gridCount <= 1) {\r\n gridCount = 1;\r\n }\r\n gridCount = Math.round(gridCount);\r\n let initialMin = min;\r\n let initialMax = max;\r\n let difference = max - min;\r\n // in case min and max is the same, use max\r\n if (difference === 0) {\r\n difference = Math.abs(max);\r\n }\r\n // the number by which we need to raise 10 to get difference\r\n let exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\r\n // here we find a number which is power of 10 and has the same count of numbers as difference has\r\n let power = Math.pow(10, Math.floor(exponent));\r\n // reduce this number by 10 times\r\n power = power / 10;\r\n let extra = power;\r\n if (strictMode) {\r\n extra = 0;\r\n }\r\n // round down min\r\n if (strictMode) {\r\n min = Math.floor(min / power) * power;\r\n // round up max\r\n max = Math.ceil(max / power) * power;\r\n }\r\n else {\r\n min = Math.ceil(min / power) * power - extra;\r\n // round up max\r\n max = Math.floor(max / power) * power + extra;\r\n }\r\n // don't let min go below 0 if real min is >= 0\r\n if (min < 0 && initialMin >= 0) {\r\n min = 0;\r\n }\r\n // don't let max go above 0 if real max is <= 0\r\n if (max > 0 && initialMax <= 0) {\r\n max = 0;\r\n }\r\n exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\r\n power = Math.pow(10, Math.floor(exponent));\r\n power = power / 100; // used to be 10 in v4, but this caused issue that there could be limited number of grids with even very small minGridDistance\r\n // approximate difference between two grid lines\r\n let step = Math.ceil((difference / gridCount) / power) * power;\r\n let stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\r\n // the step should divide by 2, 5, and 10.\r\n let stepDivisor = Math.ceil(step / stepPower); // number 0 - 10\r\n if (stepDivisor > 5) {\r\n stepDivisor = 10;\r\n }\r\n else if (stepDivisor <= 5 && stepDivisor > 2) {\r\n stepDivisor = 5;\r\n }\r\n // now get real step\r\n step = Math.ceil(step / (stepPower * stepDivisor)) * stepPower * stepDivisor;\r\n let maxPrecision = this.get(\"maxPrecision\");\r\n if ($type.isNumber(maxPrecision)) {\r\n let ceiledStep = $math.ceil(step, maxPrecision);\r\n if (maxPrecision < Number.MAX_VALUE && step !== ceiledStep) {\r\n step = ceiledStep;\r\n if (step == 0) {\r\n step = 1;\r\n }\r\n }\r\n }\r\n let decCount = 0;\r\n // in case numbers are smaller than 1\r\n if (stepPower < 1) {\r\n // exponent is less then 1 too. Count decimals of exponent\r\n decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 1;\r\n // round step\r\n step = $math.round(step, decCount);\r\n }\r\n // final min and max\r\n let minCount = Math.floor(min / step);\r\n min = $math.round(step * minCount, decCount);\r\n let maxCount;\r\n if (!strictMode) {\r\n maxCount = Math.ceil(max / step);\r\n }\r\n else {\r\n maxCount = Math.floor(max / step);\r\n }\r\n if (maxCount === minCount) {\r\n maxCount++;\r\n }\r\n max = $math.round(step * maxCount, decCount);\r\n if (max < initialMax) {\r\n max = max + step;\r\n }\r\n if (min > initialMin) {\r\n min = min - step;\r\n }\r\n step = this.fixSmallStep(step);\r\n return { min: min, max: max, step: step };\r\n }\r\n /**\r\n * Returns text to be used in an axis tooltip for specific relative position.\r\n *\r\n * @param position Position\r\n * @return Tooltip text\r\n */\r\n getTooltipText(position, _adjustPosition) {\r\n const numberFormat = this.get(\"tooltipNumberFormat\", this.get(\"numberFormat\"));\r\n const formatter = this.getNumberFormatter();\r\n const extraDecimals = this.get(\"extraTooltipPrecision\", 0);\r\n const decimals = this.getPrivate(\"stepDecimalPlaces\", 0) + extraDecimals;\r\n const value = $math.round(this.positionToValue(position), decimals);\r\n if (numberFormat) {\r\n return formatter.format(value, numberFormat);\r\n }\r\n else {\r\n return formatter.format(value, undefined, decimals);\r\n }\r\n }\r\n /**\r\n * Returns a data item from series that is closest to the `position`.\r\n *\r\n * @param series Series\r\n * @param position Relative position\r\n * @return Data item\r\n */\r\n getSeriesItem(series, position) {\r\n let fieldName = (this.getPrivate(\"name\") + this.get(\"renderer\").getPrivate(\"letter\"));\r\n let value = this.positionToValue(position);\r\n let index = undefined;\r\n let oldDiff;\r\n $array.each(series.dataItems, (dataItem, i) => {\r\n const diff = Math.abs(dataItem.get(fieldName) - value);\r\n if (index === undefined || diff < oldDiff) {\r\n index = i;\r\n oldDiff = diff;\r\n }\r\n });\r\n if (index != null) {\r\n return series.dataItems[index];\r\n }\r\n }\r\n /**\r\n * Zooms the axis to specific `start` and `end` values.\r\n *\r\n * Optional `duration` specifies duration of zoom animation in milliseconds.\r\n *\r\n * @param start Start value\r\n * @param end End value\r\n * @param duration Duration in milliseconds\r\n */\r\n zoomToValues(start, end, duration) {\r\n const min = this.getPrivate(\"minFinal\", 0);\r\n const max = this.getPrivate(\"maxFinal\", 0);\r\n if (this.getPrivate(\"min\") != null && this.getPrivate(\"max\") != null) {\r\n this.zoom((start - min) / (max - min), (end - min) / (max - min), duration);\r\n }\r\n }\r\n /**\r\n * Syncs with a target axis.\r\n *\r\n * @param min Min\r\n * @param max Max\r\n * @param step Step\r\n */\r\n _syncAxes(min, max, step, syncMin, syncMax, syncStep) {\r\n let axis = this.get(\"syncWithAxis\");\r\n if (axis) {\r\n let count = Math.round(syncMax - syncMin) / syncStep;\r\n let currentCount = Math.round((max - min) / step);\r\n let gridCount = this.get(\"renderer\").gridCount();\r\n if ($type.isNumber(count) && $type.isNumber(currentCount)) {\r\n let synced = false;\r\n let c = 0;\r\n let diff = (max - min) * 0.01;\r\n let omin = min;\r\n let omax = max;\r\n let ostep = step;\r\n while (synced != true) {\r\n synced = this._checkSync(omin, omax, ostep, count);\r\n c++;\r\n if (c > 500) {\r\n synced = true;\r\n }\r\n if (!synced) {\r\n if (c / 3 == Math.round(c / 3)) {\r\n omin = min - diff * c;\r\n if (min >= 0 && omin < 0) {\r\n omin = 0;\r\n }\r\n }\r\n else {\r\n omax = max + diff * c;\r\n if (omax <= 0 && omax > 0) {\r\n omax = 0;\r\n }\r\n }\r\n let minMaxStep = this._adjustMinMax(omin, omax, gridCount, true);\r\n omin = minMaxStep.min;\r\n omax = minMaxStep.max;\r\n ostep = minMaxStep.step;\r\n }\r\n else {\r\n min = omin;\r\n max = omax;\r\n step = ostep;\r\n }\r\n }\r\n }\r\n }\r\n return { min: min, max: max, step: step };\r\n }\r\n /**\r\n * Returns `true` if axis needs to be resunced with some other axis.\r\n */\r\n _checkSync(min, max, step, count) {\r\n let currentCount = (max - min) / step;\r\n for (let i = 1; i < count; i++) {\r\n if ($math.round(currentCount / i, 1) == count || currentCount * i == count) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * Returns relative position between two grid lines of the axis.\r\n *\r\n * @return Position\r\n */\r\n getCellWidthPosition() {\r\n let max = this.getPrivate(\"selectionMax\", this.getPrivate(\"max\"));\r\n let min = this.getPrivate(\"selectionMin\", this.getPrivate(\"min\"));\r\n if ($type.isNumber(max) && $type.isNumber(min)) {\r\n return this.getPrivate(\"step\", 1) / (max - min);\r\n }\r\n return 0.05;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n nextPosition(count) {\r\n if (count == null) {\r\n count = 1;\r\n }\r\n if (this.get(\"renderer\").getPrivate(\"letter\") == \"Y\") {\r\n count *= -1;\r\n }\r\n let value = this.positionToValue(this.getPrivate(\"tooltipPosition\", 0));\r\n value += this.getPrivate(\"step\", 1) * count;\r\n value = $math.fitToRange(value, this.getPrivate(\"selectionMin\", 0), this.getPrivate(\"selectionMax\", 1));\r\n return this.toGlobalPosition(this.valueToPosition(value));\r\n }\r\n}\r\nObject.defineProperty(ValueAxis, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"ValueAxis\"\r\n});\r\nObject.defineProperty(ValueAxis, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Axis.classNames.concat([ValueAxis.className])\r\n});\r\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import { XYSeries } from \"./XYSeries\";\r\nimport { Graphics } from \"../../../core/render/Graphics\";\r\nimport { line, area } from \"d3-shape\";\r\nimport { Template } from \"../../../core/util/Template\";\r\nimport { ListTemplate } from \"../../../core/util/List\";\r\nimport { color } from \"../../../core/util/Color\";\r\nimport { DataItem } from \"../../../core/render/Component\";\r\nimport { Rectangle } from \"../../../core/render/Rectangle\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\n/**\r\n * Used to plot line and/or area series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/line-series/} for more info\r\n * @important\r\n */\r\nexport class LineSeries extends XYSeries {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_endIndex\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_strokeGenerator\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: line()\r\n });\r\n Object.defineProperty(this, \"_fillGenerator\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: area()\r\n });\r\n Object.defineProperty(this, \"_legendStroke\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_legendFill\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A [[TemplateList]] of all line segments in series.\r\n *\r\n * `strokes.template` can be used to set default settings for all line\r\n * segments, or to change on existing ones.\r\n *\r\n * @default new ListTemplate<Graphics>\r\n */\r\n Object.defineProperty(this, \"strokes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => Graphics._new(this._root, {\r\n themeTags: $utils.mergeTags(this.strokes.template.get(\"themeTags\", []), [\"line\", \"series\", \"stroke\"])\r\n }, [this.strokes.template]))\r\n });\r\n /**\r\n * A [[TemplateList]] of all segment fills in series.\r\n *\r\n * `fills.template` can be used to set default settings for all segment\r\n * fills, or to change on existing ones.\r\n *\r\n * @default new ListTemplate<Graphics>\r\n */\r\n Object.defineProperty(this, \"fills\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => Graphics._new(this._root, {\r\n themeTags: $utils.mergeTags(this.strokes.template.get(\"themeTags\", []), [\"line\", \"series\", \"fill\"])\r\n }, [this.fills.template]))\r\n });\r\n // custom set from data\r\n Object.defineProperty(this, \"_fillTemplate\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_strokeTemplate\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_previousPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [0, 0, 0, 0]\r\n });\r\n Object.defineProperty(this, \"_dindex\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_sindex\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n }\r\n _afterNew() {\r\n this._fillGenerator.y0(function (p) {\r\n return p[3];\r\n });\r\n this._fillGenerator.x0(function (p) {\r\n return p[2];\r\n });\r\n this._fillGenerator.y1(function (p) {\r\n return p[1];\r\n });\r\n this._fillGenerator.x1(function (p) {\r\n return p[0];\r\n });\r\n super._afterNew();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeStroke(strokes) {\r\n const stroke = this.mainContainer.children.push(strokes.make());\r\n strokes.push(stroke);\r\n return stroke;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeFill(fills) {\r\n const fill = this.mainContainer.children.push(fills.make());\r\n fills.push(fill);\r\n return fill;\r\n }\r\n _updateChildren() {\r\n this._strokeTemplate = undefined;\r\n this._fillTemplate = undefined;\r\n let xAxis = this.get(\"xAxis\");\r\n let yAxis = this.get(\"yAxis\");\r\n if (this.isDirty(\"stroke\")) {\r\n const stroke = this.get(\"stroke\");\r\n this.strokes.template.set(\"stroke\", stroke);\r\n const legendStroke = this._legendStroke;\r\n if (legendStroke) {\r\n legendStroke.states.lookup(\"default\").set(\"stroke\", stroke);\r\n }\r\n }\r\n if (this.isDirty(\"fill\")) {\r\n const fill = this.get(\"fill\");\r\n this.fills.template.set(\"fill\", fill);\r\n const legendFill = this._legendFill;\r\n if (legendFill) {\r\n legendFill.states.lookup(\"default\").set(\"fill\", fill);\r\n }\r\n }\r\n if (this.isDirty(\"curveFactory\")) {\r\n const curveFactory = this.get(\"curveFactory\");\r\n if (curveFactory) {\r\n this._strokeGenerator.curve(curveFactory);\r\n this._fillGenerator.curve(curveFactory);\r\n }\r\n }\r\n if (xAxis.inited && yAxis.inited) {\r\n if (this._axesDirty || this._valuesDirty || this._stackDirty || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this._sizeDirty || this.isDirty(\"connect\") || this.isDirty(\"curveFactory\")) {\r\n this.fills.each((fill) => {\r\n fill.setPrivate(\"visible\", false);\r\n });\r\n this.strokes.each((fill) => {\r\n fill.setPrivate(\"visible\", false);\r\n });\r\n this.axisRanges.each((axisRange) => {\r\n let fills = axisRange.fills;\r\n if (fills) {\r\n fills.each((fill) => {\r\n fill.setPrivate(\"visible\", false);\r\n });\r\n }\r\n let strokes = axisRange.strokes;\r\n if (strokes) {\r\n strokes.each((stroke) => {\r\n stroke.setPrivate(\"visible\", false);\r\n });\r\n }\r\n });\r\n let startIndex = this.startIndex();\r\n let strokeTemplateField = this.strokes.template.get(\"templateField\");\r\n let fillTemplateField = this.fills.template.get(\"templateField\");\r\n let strokeTemplateFound = true;\r\n let fillTemplateFound = true;\r\n if (strokeTemplateField) {\r\n strokeTemplateFound = false;\r\n }\r\n if (fillTemplateField) {\r\n fillTemplateFound = false;\r\n }\r\n for (let i = startIndex - 1; i >= 0; i--) {\r\n let dataItem = this.dataItems[i];\r\n let hasValues = true;\r\n let dataContext = dataItem.dataContext;\r\n if (strokeTemplateField) {\r\n if (dataContext[strokeTemplateField]) {\r\n strokeTemplateFound = true;\r\n }\r\n }\r\n if (fillTemplateField) {\r\n if (dataContext[fillTemplateField]) {\r\n fillTemplateFound = true;\r\n }\r\n }\r\n $array.each(this._valueFields, (field) => {\r\n if (!$type.isNumber(dataItem.get(field))) {\r\n hasValues = false;\r\n }\r\n });\r\n if (hasValues && strokeTemplateFound && fillTemplateFound) {\r\n startIndex = i;\r\n break;\r\n }\r\n }\r\n let len = this.dataItems.length;\r\n let endIndex = this.endIndex();\r\n if (endIndex < len) {\r\n endIndex++;\r\n for (let i = endIndex; i < len; i++) {\r\n let dataItem = this.dataItems[i];\r\n let hasValues = true;\r\n $array.each(this._valueFields, (field) => {\r\n if (!$type.isNumber(dataItem.get(field))) {\r\n hasValues = false;\r\n }\r\n });\r\n if (hasValues) {\r\n endIndex = i + 1;\r\n break;\r\n }\r\n }\r\n }\r\n if (startIndex > 0) {\r\n startIndex--;\r\n }\r\n this._endIndex = endIndex;\r\n this._clearGraphics();\r\n this._sindex = 0;\r\n this._dindex = startIndex;\r\n if (this.dataItems.length == 1) {\r\n this._startSegment(0);\r\n }\r\n else {\r\n // this is done to avoid recursion with a lot of segments \r\n while (this._dindex < endIndex - 1) {\r\n this._startSegment(this._dindex);\r\n this._sindex++;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this._skipped = true;\r\n }\r\n super._updateChildren();\r\n }\r\n _clearGraphics() {\r\n this.strokes.clear();\r\n this.fills.clear();\r\n }\r\n _startSegment(dataItemIndex) {\r\n let endIndex = this._endIndex;\r\n let currentEndIndex = endIndex;\r\n const autoGapCount = this.get(\"autoGapCount\");\r\n const connect = this.get(\"connect\");\r\n const fill = this.makeFill(this.fills);\r\n const fillTemplate = this._fillTemplate;\r\n const originalTemplate = this.fills.template;\r\n if (fillTemplate && fillTemplate != originalTemplate) {\r\n fill.template = fillTemplate;\r\n }\r\n fill.setPrivate(\"visible\", true);\r\n const stroke = this.makeStroke(this.strokes);\r\n const strokeTemplate = this._strokeTemplate;\r\n if (strokeTemplate && strokeTemplate != this.strokes.template) {\r\n stroke.template = strokeTemplate;\r\n }\r\n stroke.setPrivate(\"visible\", true);\r\n let xAxis = this.get(\"xAxis\");\r\n let yAxis = this.get(\"yAxis\");\r\n let baseAxis = this.get(\"baseAxis\");\r\n let vcx = this.get(\"vcx\", 1);\r\n let vcy = this.get(\"vcy\", 1);\r\n let xField = this._xField;\r\n let yField = this._yField;\r\n let xOpenField = this._xOpenField;\r\n let yOpenField = this._yOpenField;\r\n const xOpenFieldValue = this.get(\"openValueXField\");\r\n const yOpenFieldValue = this.get(\"openValueYField\");\r\n if (!xOpenFieldValue) {\r\n xOpenField = this._xField;\r\n }\r\n if (!yOpenFieldValue) {\r\n yOpenField = this._yField;\r\n }\r\n const stacked = this.get(\"stacked\");\r\n const basePosX = xAxis.basePosition();\r\n const basePosY = yAxis.basePosition();\r\n let baseField;\r\n if (baseAxis === yAxis) {\r\n baseField = this._yField;\r\n }\r\n else {\r\n baseField = this._xField;\r\n }\r\n const segments = [];\r\n let points = [];\r\n segments.push(points);\r\n const strokeTemplateField = this.strokes.template.get(\"templateField\");\r\n const fillTemplateField = this.fills.template.get(\"templateField\");\r\n let locationX = this.get(\"locationX\", 0.5);\r\n let locationY = this.get(\"locationY\", 0.5);\r\n let openLocationX = this.get(\"openLocationX\", locationX);\r\n let openLocationY = this.get(\"openLocationY\", locationY);\r\n const minDistance = this.get(\"minDistance\", 0);\r\n let i;\r\n let fillVisible = this.fills.template.get(\"visible\");\r\n if (this.axisRanges.length > 0) {\r\n fillVisible = true;\r\n }\r\n let getOpen = false;\r\n if (stacked || xOpenFieldValue || yOpenFieldValue) {\r\n getOpen = true;\r\n }\r\n const o = {\r\n points, segments, stacked, getOpen, basePosX, basePosY, fillVisible, xField, yField, xOpenField, yOpenField, vcx, vcy, baseAxis, xAxis, yAxis, locationX, locationY, openLocationX, openLocationY, minDistance\r\n };\r\n let rangeStrokeTemplate = this._strokeTemplate;\r\n let rangeFillTemplate = this._fillTemplate;\r\n for (i = dataItemIndex; i < currentEndIndex; i++) {\r\n this._dindex = i;\r\n const dataItem = this._dataItems[i];\r\n let valueX = dataItem.get(xField);\r\n let valueY = dataItem.get(yField);\r\n if (valueX == null || valueY == null) {\r\n if (!connect) {\r\n points = [];\r\n segments.push(points);\r\n o.points = points;\r\n }\r\n }\r\n else {\r\n this._getPoints(dataItem, o);\r\n }\r\n if (strokeTemplateField) {\r\n let strokeTemplate = dataItem.dataContext[strokeTemplateField];\r\n if (strokeTemplate) {\r\n if (!(strokeTemplate instanceof Template)) {\r\n strokeTemplate = Template.new(strokeTemplate);\r\n }\r\n this._strokeTemplate = strokeTemplate;\r\n if (i > dataItemIndex) {\r\n currentEndIndex = i;\r\n break;\r\n }\r\n else {\r\n rangeStrokeTemplate = strokeTemplate;\r\n stroke.template = strokeTemplate;\r\n }\r\n }\r\n }\r\n if (fillTemplateField) {\r\n let fillTemplate = dataItem.dataContext[fillTemplateField];\r\n if (fillTemplate) {\r\n if (!(fillTemplate instanceof Template)) {\r\n fillTemplate = Template.new(fillTemplate);\r\n }\r\n this._fillTemplate = fillTemplate;\r\n if (i > dataItemIndex) {\r\n currentEndIndex = i;\r\n break;\r\n }\r\n else {\r\n rangeFillTemplate = fillTemplate;\r\n fill.template = fillTemplate;\r\n }\r\n }\r\n }\r\n if (!connect) {\r\n let nextItem = this.dataItems[i + 1];\r\n if (nextItem) {\r\n if (baseAxis.shouldGap(dataItem, nextItem, autoGapCount, baseField)) {\r\n points = [];\r\n segments.push(points);\r\n o.points = points;\r\n }\r\n }\r\n }\r\n }\r\n fill.setRaw(\"userData\", [dataItemIndex, i]);\r\n stroke.setRaw(\"userData\", [dataItemIndex, i]);\r\n if (i === endIndex) {\r\n this._endLine(points, segments[0][0]);\r\n }\r\n if (stroke) {\r\n this._drawStroke(stroke, segments);\r\n }\r\n if (fill) {\r\n this._drawFill(fill, segments);\r\n }\r\n this.axisRanges.each((axisRange) => {\r\n const container = axisRange.container;\r\n const fills = axisRange.fills;\r\n const fill = this.makeFill(fills);\r\n if (container) {\r\n container.children.push(fill);\r\n }\r\n fill.setPrivate(\"visible\", true);\r\n this._drawFill(fill, segments);\r\n const strokes = axisRange.strokes;\r\n const stroke = this.makeStroke(strokes);\r\n if (container) {\r\n container.children.push(stroke);\r\n }\r\n if (rangeStrokeTemplate && rangeStrokeTemplate != this.strokes.template) {\r\n stroke.template = rangeStrokeTemplate;\r\n }\r\n if (rangeFillTemplate && rangeFillTemplate != this.fills.template) {\r\n fill.template = rangeFillTemplate;\r\n }\r\n stroke.setPrivate(\"visible\", true);\r\n this._drawStroke(stroke, segments);\r\n fill.setRaw(\"userData\", [dataItemIndex, i]);\r\n stroke.setRaw(\"userData\", [dataItemIndex, i]);\r\n });\r\n }\r\n _getPoints(dataItem, o) {\r\n let points = o.points;\r\n let itemLocationX = dataItem.get(\"locationX\", o.locationX);\r\n let itemLocationY = dataItem.get(\"locationY\", o.locationY);\r\n let xPos = o.xAxis.getDataItemPositionX(dataItem, o.xField, itemLocationX, o.vcx);\r\n let yPos = o.yAxis.getDataItemPositionY(dataItem, o.yField, itemLocationY, o.vcy);\r\n if (this._shouldInclude(xPos)) {\r\n const iPoint = this.getPoint(xPos, yPos);\r\n const point = [iPoint.x, iPoint.y];\r\n iPoint.x += this._x;\r\n iPoint.y += this._y;\r\n dataItem.set(\"point\", iPoint);\r\n if (o.fillVisible) {\r\n let xPos0 = xPos;\r\n let yPos0 = yPos;\r\n if (o.baseAxis === o.xAxis) {\r\n yPos0 = o.basePosY;\r\n }\r\n else if (o.baseAxis === o.yAxis) {\r\n xPos0 = o.basePosX;\r\n }\r\n if (o.getOpen) {\r\n let valueX = dataItem.get(o.xOpenField);\r\n let valueY = dataItem.get(o.yOpenField);\r\n if (valueX != null && valueY != null) {\r\n let itemLocationX = dataItem.get(\"openLocationX\", o.openLocationX);\r\n let itemLocationY = dataItem.get(\"openLocationY\", o.openLocationY);\r\n if (o.stacked) {\r\n let stackToItemX = dataItem.get(\"stackToItemX\");\r\n let stackToItemY = dataItem.get(\"stackToItemY\");\r\n if (stackToItemX) {\r\n xPos0 = o.xAxis.getDataItemPositionX(stackToItemX, o.xField, itemLocationX, stackToItemX.component.get(\"vcx\"));\r\n if ($type.isNaN(xPos0)) {\r\n xPos0 = o.basePosX;\r\n }\r\n }\r\n else {\r\n if (o.yAxis === o.baseAxis) {\r\n xPos0 = o.basePosX;\r\n }\r\n else {\r\n xPos0 = o.xAxis.getDataItemPositionX(dataItem, o.xOpenField, itemLocationX, o.vcx);\r\n }\r\n }\r\n if (stackToItemY) {\r\n yPos0 = o.yAxis.getDataItemPositionY(stackToItemY, o.yField, itemLocationY, stackToItemY.component.get(\"vcy\"));\r\n if ($type.isNaN(yPos0)) {\r\n yPos0 = o.basePosY;\r\n }\r\n }\r\n else {\r\n if (o.xAxis === o.baseAxis) {\r\n yPos0 = o.basePosY;\r\n }\r\n else {\r\n yPos0 = o.yAxis.getDataItemPositionY(dataItem, o.yOpenField, itemLocationY, o.vcy);\r\n }\r\n }\r\n }\r\n else {\r\n xPos0 = o.xAxis.getDataItemPositionX(dataItem, o.xOpenField, itemLocationX, o.vcx);\r\n yPos0 = o.yAxis.getDataItemPositionY(dataItem, o.yOpenField, itemLocationY, o.vcy);\r\n }\r\n }\r\n }\r\n let closeIPoint = this.getPoint(xPos0, yPos0);\r\n point[2] = closeIPoint.x;\r\n point[3] = closeIPoint.y;\r\n }\r\n if (o.minDistance > 0) {\r\n const p0 = point[0];\r\n const p1 = point[1];\r\n const p2 = point[2];\r\n const p3 = point[3];\r\n const prev = this._previousPoint;\r\n const pp0 = prev[0];\r\n const pp1 = prev[1];\r\n const pp2 = prev[2];\r\n const pp3 = prev[3];\r\n if (Math.hypot(p0 - pp0, p1 - pp1) > o.minDistance || (p2 && p3 && Math.hypot(p2 - pp2, p3 - pp3) > o.minDistance)) {\r\n points.push(point);\r\n this._previousPoint = point;\r\n }\r\n }\r\n else {\r\n points.push(point);\r\n }\r\n }\r\n }\r\n _endLine(_points, _firstPoint) {\r\n }\r\n _drawStroke(graphics, segments) {\r\n if (graphics.get(\"visible\") && !graphics.get(\"forceHidden\")) {\r\n graphics.set(\"draw\", (display) => {\r\n $array.each(segments, (segment) => {\r\n this._strokeGenerator.context(display);\r\n this._strokeGenerator(segment);\r\n });\r\n });\r\n }\r\n }\r\n _drawFill(graphics, segments) {\r\n if (graphics.get(\"visible\") && !graphics.get(\"forceHidden\")) {\r\n graphics.set(\"draw\", (display) => {\r\n $array.each(segments, (segment) => {\r\n this._fillGenerator.context(display);\r\n this._fillGenerator(segment);\r\n });\r\n });\r\n }\r\n }\r\n _processAxisRange(axisRange) {\r\n super._processAxisRange(axisRange);\r\n axisRange.fills = new ListTemplate(Template.new({}), () => Graphics._new(this._root, {\r\n themeTags: $utils.mergeTags(axisRange.fills.template.get(\"themeTags\", []), [\"line\", \"series\", \"fill\"]),\r\n }, [this.fills.template, axisRange.fills.template]));\r\n axisRange.strokes = new ListTemplate(Template.new({}), () => Graphics._new(this._root, {\r\n themeTags: $utils.mergeTags(axisRange.strokes.template.get(\"themeTags\", []), [\"line\", \"series\", \"stroke\"]),\r\n }, [this.strokes.template, axisRange.strokes.template]));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n createLegendMarker(_dataItem) {\r\n const legendDataItem = this.get(\"legendDataItem\");\r\n if (legendDataItem) {\r\n const marker = legendDataItem.get(\"marker\");\r\n const markerRectangle = legendDataItem.get(\"markerRectangle\");\r\n if (markerRectangle) {\r\n markerRectangle.setPrivate(\"visible\", false);\r\n }\r\n marker.set(\"background\", Rectangle.new(marker._root, { fillOpacity: 0, fill: color(0x000000) }));\r\n const legendStroke = marker.children.push(Graphics._new(marker._root, {\r\n themeTags: [\"line\", \"series\", \"legend\", \"marker\", \"stroke\"], interactive: false\r\n }, [this.strokes.template]));\r\n this._legendStroke = legendStroke;\r\n const legendFill = marker.children.push(Graphics._new(marker._root, {\r\n themeTags: [\"line\", \"series\", \"legend\", \"marker\", \"fill\"]\r\n }, [this.fills.template]));\r\n this._legendFill = legendFill;\r\n const disabledColor = this._root.interfaceColors.get(\"disabled\");\r\n legendStroke.states.create(\"disabled\", { fill: disabledColor, stroke: disabledColor });\r\n legendFill.states.create(\"disabled\", { fill: disabledColor, stroke: disabledColor });\r\n if (this.bullets.length > 0) {\r\n const bulletFunction = this.bullets.getIndex(0);\r\n if (bulletFunction) {\r\n const bullet = bulletFunction(marker._root, this, new DataItem(this, { legend: true }, {}));\r\n if (bullet) {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite instanceof Graphics) {\r\n sprite.states.create(\"disabled\", { fill: disabledColor, stroke: disabledColor });\r\n }\r\n if (sprite) {\r\n sprite.set(\"tooltipText\", undefined);\r\n sprite.set(\"tooltipHTML\", undefined);\r\n marker.children.push(sprite);\r\n sprite.setAll({ x: marker.width() / 2, y: marker.height() / 2 });\r\n marker.events.on(\"boundschanged\", () => {\r\n sprite.setAll({ x: marker.width() / 2, y: marker.height() / 2 });\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(LineSeries, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"LineSeries\"\r\n});\r\nObject.defineProperty(LineSeries, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: XYSeries.classNames.concat([LineSeries.className])\r\n});\r\n","import { __awaiter } from \"tslib\";\r\nimport { DataItem } from \"../../../core/render/Component\";\r\nimport { Series } from \"../../../core/render/Series\";\r\nimport { List } from \"../../../core/util/List\";\r\nimport { Container } from \"../../../core/render/Container\";\r\nimport { Graphics } from \"../../../core/render/Graphics\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $object from \"../../../core/util/Object\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\n/**\r\n * @ignore\r\n */\r\nfunction min(left, right) {\r\n if (left == null) {\r\n return right;\r\n }\r\n else if (right == null) {\r\n return left;\r\n }\r\n else if (right < left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction max(left, right) {\r\n if (left == null) {\r\n return right;\r\n }\r\n else if (right == null) {\r\n return left;\r\n }\r\n else if (right > left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n}\r\n/**\r\n * A base class for all XY chart series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/} for more info\r\n */\r\nexport class XYSeries extends Series {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_xField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_yField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_xOpenField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_yOpenField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_xLowField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_xHighField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_yLowField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_yHighField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_axesDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_stackDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_selectionProcessed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dataSets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_mainContainerMask\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_bullets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n /**\r\n * A [[Container]] that us used to put series' elements in.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"mainContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, {}))\r\n });\r\n /**\r\n * A list of axis ranges that affect the series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n */\r\n Object.defineProperty(this, \"axisRanges\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new List()\r\n });\r\n Object.defineProperty(this, \"_skipped\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_couldStackTo\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_reallyStackedTo\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_stackedSeries\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_aLocationX0\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_aLocationX1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_aLocationY0\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_aLocationY1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_showBullets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"valueXFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\r\n \"valueX\",\r\n \"openValueX\",\r\n \"lowValueX\",\r\n \"highValueX\"\r\n ]\r\n });\r\n Object.defineProperty(this, \"valueYFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\r\n \"valueY\",\r\n \"openValueY\",\r\n \"lowValueY\",\r\n \"highValueY\"\r\n ]\r\n });\r\n Object.defineProperty(this, \"_valueXFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_valueYFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // used for full min/max\r\n Object.defineProperty(this, \"_valueXShowFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_valueYShowFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // used for selection (uses working)\r\n Object.defineProperty(this, \"__valueXShowFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"__valueYShowFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_emptyDataItem\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new DataItem(this, undefined, {})\r\n });\r\n Object.defineProperty(this, \"_dataSetId\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipFieldX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipFieldY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_posXDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_posYDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n this.fields.push(\"categoryX\", \"categoryY\", \"openCategoryX\", \"openCategoryY\");\r\n this.valueFields.push(\"valueX\", \"valueY\", \"openValueX\", \"openValueY\", \"lowValueX\", \"lowValueY\", \"highValueX\", \"highValueY\");\r\n this._setRawDefault(\"vcx\", 1);\r\n this._setRawDefault(\"vcy\", 1);\r\n // this can't go to themes, as data might be parsed before theme\r\n this._setRawDefault(\"valueXShow\", \"valueXWorking\");\r\n this._setRawDefault(\"valueYShow\", \"valueYWorking\");\r\n this._setRawDefault(\"openValueXShow\", \"openValueXWorking\");\r\n this._setRawDefault(\"openValueYShow\", \"openValueYWorking\");\r\n this._setRawDefault(\"lowValueXShow\", \"lowValueXWorking\");\r\n this._setRawDefault(\"lowValueYShow\", \"lowValueYWorking\");\r\n this._setRawDefault(\"highValueXShow\", \"highValueXWorking\");\r\n this._setRawDefault(\"highValueYShow\", \"highValueYWorking\");\r\n this._setRawDefault(\"lowValueXGrouped\", \"low\");\r\n this._setRawDefault(\"lowValueYGrouped\", \"low\");\r\n this._setRawDefault(\"highValueXGrouped\", \"high\");\r\n this._setRawDefault(\"highValueYGrouped\", \"high\");\r\n super._afterNew();\r\n this.set(\"maskContent\", true);\r\n this._disposers.push(this.axisRanges.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n $array.each(change.oldValues, (axisRange) => {\r\n this._removeAxisRange(axisRange);\r\n });\r\n }\r\n else if (change.type === \"push\") {\r\n this._processAxisRange(change.newValue);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n this._processAxisRange(change.newValue);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n this._processAxisRange(change.newValue);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this._removeAxisRange(change.oldValue);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n this._processAxisRange(change.value);\r\n }\r\n else {\r\n throw new Error(\"Unknown IStreamEvent type\");\r\n }\r\n }));\r\n this.states.create(\"hidden\", { opacity: 1, visible: false });\r\n this.onPrivate(\"startIndex\", () => {\r\n this.root.events.once(\"frameended\", () => {\r\n this.updateLegendValue();\r\n });\r\n });\r\n this.onPrivate(\"endIndex\", () => {\r\n this.root.events.once(\"frameended\", () => {\r\n this.updateLegendValue();\r\n });\r\n });\r\n this._makeFieldNames();\r\n }\r\n _processAxisRange(axisRange) {\r\n const container = Container.new(this._root, {});\r\n axisRange.container = container;\r\n this.children.push(container);\r\n axisRange.series = this;\r\n const axisDataItem = axisRange.axisDataItem;\r\n axisDataItem.setRaw(\"isRange\", true);\r\n const axis = axisDataItem.component;\r\n if (axis) {\r\n axis._processAxisRange(axisDataItem, [\"range\", \"series\"]);\r\n const bullet = axisDataItem.get(\"bullet\");\r\n if (bullet) {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite.setPrivate(\"visible\", false);\r\n }\r\n }\r\n const axisFill = axisDataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n container.set(\"mask\", axisFill);\r\n }\r\n axis._seriesAxisRanges.push(axisDataItem);\r\n }\r\n }\r\n _removeAxisRange(axisRange) {\r\n const axisDataItem = axisRange.axisDataItem;\r\n const axis = axisDataItem.component;\r\n axis.disposeDataItem(axisDataItem);\r\n $array.remove(axis._seriesAxisRanges, axisDataItem);\r\n const container = axisRange.container;\r\n if (container) {\r\n container.dispose();\r\n }\r\n }\r\n _updateFields() {\r\n super._updateFields();\r\n this._valueXFields = [];\r\n this._valueYFields = [];\r\n this._valueXShowFields = [];\r\n this._valueYShowFields = [];\r\n this.__valueXShowFields = [];\r\n this.__valueYShowFields = [];\r\n if (this.valueXFields) {\r\n $array.each(this.valueXFields, (key) => {\r\n const field = this.get((key + \"Field\"));\r\n if (field) {\r\n this._valueXFields.push(key);\r\n let field = this.get((key + \"Show\"));\r\n this.__valueXShowFields.push(field);\r\n if (field.indexOf(\"Working\") != -1) {\r\n this._valueXShowFields.push(field.split(\"Working\")[0]);\r\n }\r\n else {\r\n this._valueXShowFields.push(field);\r\n }\r\n }\r\n });\r\n }\r\n if (this.valueYFields) {\r\n $array.each(this.valueYFields, (key) => {\r\n const field = this.get((key + \"Field\"));\r\n if (field) {\r\n this._valueYFields.push(key);\r\n let field = this.get((key + \"Show\"));\r\n this.__valueYShowFields.push(field);\r\n if (field.indexOf(\"Working\") != -1) {\r\n this._valueYShowFields.push(field.split(\"Working\")[0]);\r\n }\r\n else {\r\n this._valueYShowFields.push(field);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n _dispose() {\r\n super._dispose();\r\n this._bullets = {};\r\n const chart = this.chart;\r\n if (chart) {\r\n chart.series.removeValue(this);\r\n }\r\n $array.removeFirst(this.get(\"xAxis\").series, this);\r\n $array.removeFirst(this.get(\"yAxis\").series, this);\r\n }\r\n // TODO use SelectKeys<this[\"_privateSettings\"], number | undefined>\r\n _min(key, value) {\r\n let newValue = min(this.getPrivate(key), value);\r\n this.setPrivate(key, newValue);\r\n }\r\n // TODO use SelectKeys<this[\"_privateSettings\"], number | undefined>\r\n _max(key, value) {\r\n let newValue = max(this.getPrivate(key), value);\r\n this.setPrivate(key, newValue);\r\n }\r\n _shouldMakeBullet(dataItem) {\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n if (!xAxis.inited || !yAxis.inited) {\r\n return false;\r\n }\r\n const minBulletDistance = this.get(\"minBulletDistance\", 0);\r\n if (minBulletDistance > 0) {\r\n let startIndex = this.startIndex();\r\n let endIndex = this.endIndex();\r\n let count = endIndex - startIndex;\r\n if (xAxis == baseAxis) {\r\n if (xAxis.get(\"renderer\").axisLength() / count < minBulletDistance / 5) {\r\n return false;\r\n }\r\n }\r\n else if (yAxis == baseAxis) {\r\n if (yAxis.get(\"renderer\").axisLength() / count < minBulletDistance / 5) {\r\n return false;\r\n }\r\n }\r\n }\r\n if (dataItem.get(this._xField) != null && dataItem.get(this._yField) != null) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n _makeFieldNames() {\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const xName = xAxis.getPrivate(\"name\");\r\n const xCapName = $utils.capitalizeFirst(xName);\r\n const yName = yAxis.getPrivate(\"name\");\r\n const yCapName = $utils.capitalizeFirst(yName);\r\n const xLetter = xAxis.get(\"renderer\").getPrivate(\"letter\");\r\n const yLetter = yAxis.get(\"renderer\").getPrivate(\"letter\");\r\n const open = \"open\";\r\n const low = \"low\";\r\n const high = \"high\";\r\n const show = \"Show\";\r\n if (xAxis.className === \"ValueAxis\") {\r\n this._xField = this.get((xName + xLetter + show));\r\n this._xOpenField = this.get((open + xCapName + xLetter + show));\r\n this._xLowField = this.get((low + xCapName + xLetter + show));\r\n this._xHighField = this.get((high + xCapName + xLetter + show));\r\n }\r\n else {\r\n this._xField = (xName + xLetter);\r\n this._xOpenField = (open + xCapName + xLetter);\r\n this._xLowField = (low + xCapName + xLetter);\r\n this._xHighField = (high + xCapName + xLetter);\r\n }\r\n if (yAxis.className === \"ValueAxis\") {\r\n this._yField = this.get((yName + yLetter + show));\r\n this._yOpenField = this.get((open + yCapName + yLetter + show));\r\n this._yLowField = this.get((low + yCapName + yLetter + show));\r\n this._yHighField = this.get((high + yCapName + yLetter + show));\r\n }\r\n else {\r\n this._yField = (yName + yLetter);\r\n this._yOpenField = (open + yCapName + yLetter);\r\n this._yLowField = (low + yCapName + yLetter);\r\n this._yHighField = (high + yCapName + yLetter);\r\n }\r\n }\r\n _fixVC() {\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const hiddenState = this.states.lookup(\"hidden\");\r\n const sequencedInterpolation = this.get(\"sequencedInterpolation\");\r\n if (hiddenState) {\r\n let value = 0;\r\n if (sequencedInterpolation) {\r\n value = 0.999999999999; // makes animate, good for stacked\r\n }\r\n if (xAxis === baseAxis) {\r\n hiddenState.set(\"vcy\", value);\r\n }\r\n else if (yAxis === baseAxis) {\r\n hiddenState.set(\"vcx\", value);\r\n }\r\n else {\r\n hiddenState.set(\"vcy\", value);\r\n hiddenState.set(\"vcx\", value);\r\n }\r\n }\r\n }\r\n _handleMaskBullets() {\r\n if (this.isDirty(\"maskBullets\")) {\r\n this.bulletsContainer.set(\"maskContent\", this.get(\"maskBullets\"));\r\n }\r\n }\r\n _fixPosition() {\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n this.set(\"x\", xAxis.x() - $utils.relativeToValue(xAxis.get(\"centerX\", 0), xAxis.width()) - xAxis.parent.get(\"paddingLeft\", 0));\r\n this.set(\"y\", yAxis.y() - $utils.relativeToValue(yAxis.get(\"centerY\", 0), yAxis.height()) - yAxis.parent.get(\"paddingTop\", 0));\r\n this.bulletsContainer.set(\"y\", this.y());\r\n this.bulletsContainer.set(\"x\", this.x());\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n this._bullets = {};\r\n if (this.isDirty(\"valueYShow\") || this.isDirty(\"valueXShow\") || this.isDirty(\"openValueYShow\") || this.isDirty(\"openValueXShow\") || this.isDirty(\"lowValueYShow\") || this.isDirty(\"lowValueXShow\") || this.isDirty(\"highValueYShow\") || this.isDirty(\"highValueXShow\")) {\r\n this._updateFields();\r\n this._makeFieldNames();\r\n this._valuesDirty = true;\r\n }\r\n if (this.isDirty(\"xAxis\") || this.isDirty(\"yAxis\")) {\r\n this._valuesDirty = true;\r\n }\r\n this.set(\"width\", this.get(\"xAxis\").width());\r\n this.set(\"height\", this.get(\"yAxis\").height());\r\n this._handleMaskBullets();\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const tooltipPositionX = this.get(\"tooltipPositionX\");\r\n let tooltipFieldX;\r\n switch (tooltipPositionX) {\r\n case \"open\":\r\n tooltipFieldX = this._xOpenField;\r\n break;\r\n case \"low\":\r\n tooltipFieldX = this._xLowField;\r\n break;\r\n case \"high\":\r\n tooltipFieldX = this._xHighField;\r\n break;\r\n default:\r\n tooltipFieldX = this._xField;\r\n }\r\n this._tooltipFieldX = tooltipFieldX;\r\n const tooltipPositionY = this.get(\"tooltipPositionY\");\r\n let tooltipFieldY;\r\n switch (tooltipPositionY) {\r\n case \"open\":\r\n tooltipFieldY = this._yOpenField;\r\n break;\r\n case \"low\":\r\n tooltipFieldY = this._yLowField;\r\n break;\r\n case \"high\":\r\n tooltipFieldY = this._yHighField;\r\n break;\r\n default:\r\n tooltipFieldY = this._yField;\r\n }\r\n this._tooltipFieldY = tooltipFieldY;\r\n if (this.isDirty(\"baseAxis\")) {\r\n this._fixVC();\r\n }\r\n this._fixPosition();\r\n const stacked = this.get(\"stacked\");\r\n if (this.isDirty(\"stacked\")) {\r\n if (stacked) {\r\n if (this._valuesDirty && !this._dataProcessed) {\r\n }\r\n else {\r\n this._stack();\r\n }\r\n }\r\n else {\r\n this._unstack();\r\n }\r\n }\r\n if (this._valuesDirty && !this._dataProcessed) {\r\n this._dataProcessed = true;\r\n if (stacked) {\r\n this._stack();\r\n }\r\n $array.each(this.dataItems, (dataItem) => {\r\n $array.each(this._valueXShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n if (stacked) {\r\n value += this.getStackedXValue(dataItem, key);\r\n }\r\n this._min(\"minX\", value);\r\n this._max(\"maxX\", value);\r\n }\r\n });\r\n $array.each(this._valueYShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n if (stacked) {\r\n value += this.getStackedYValue(dataItem, key);\r\n }\r\n this._min(\"minY\", value);\r\n this._max(\"maxY\", value);\r\n }\r\n });\r\n xAxis.processSeriesDataItem(dataItem, this._valueXFields);\r\n yAxis.processSeriesDataItem(dataItem, this._valueYFields);\r\n });\r\n xAxis._seriesValuesDirty = true;\r\n yAxis._seriesValuesDirty = true;\r\n if (!this.get(\"ignoreMinMax\")) {\r\n if (this.isPrivateDirty(\"minX\") || this.isPrivateDirty(\"maxX\")) {\r\n xAxis.markDirtyExtremes();\r\n }\r\n if (this.isPrivateDirty(\"minY\") || this.isPrivateDirty(\"maxY\")) {\r\n yAxis.markDirtyExtremes();\r\n }\r\n }\r\n this._markStakedDirtyStack();\r\n //this.updateLegendMarker(undefined); // causes legend marker to change color instantly when on\r\n if (!this.get(\"tooltipDataItem\")) {\r\n this.updateLegendValue(undefined);\r\n }\r\n }\r\n if (this.isDirty(\"vcx\") || this.isDirty(\"vcy\")) {\r\n this._markStakedDirtyStack();\r\n }\r\n if (!this._dataGrouped) {\r\n xAxis._groupSeriesData(this);\r\n yAxis._groupSeriesData(this);\r\n this._dataGrouped = true;\r\n }\r\n if (this._valuesDirty || this.isPrivateDirty(\"startIndex\") || this.isPrivateDirty(\"adjustedStartIndex\") || this.isPrivateDirty(\"endIndex\") || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this._stackDirty || this._sizeDirty) {\r\n let startIndex = this.startIndex();\r\n let endIndex = this.endIndex();\r\n let minBulletDistance = this.get(\"minBulletDistance\", 0);\r\n if (minBulletDistance > 0 && baseAxis) {\r\n if (baseAxis.get(\"renderer\").axisLength() / (endIndex - startIndex) > minBulletDistance) {\r\n this._showBullets = true;\r\n }\r\n else {\r\n this._showBullets = false;\r\n }\r\n }\r\n if ((this._psi != startIndex || this._pei != endIndex || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this.isPrivateDirty(\"adjustedStartIndex\") || this._stackDirty || this._valuesDirty) && !this._selectionProcessed) {\r\n this._selectionProcessed = true;\r\n const vcx = this.get(\"vcx\", 1);\r\n const vcy = this.get(\"vcy\", 1);\r\n const stacked = this.get(\"stacked\", false);\r\n const outOfSelection = this.getPrivate(\"outOfSelection\");\r\n if (baseAxis === xAxis || !baseAxis) {\r\n yAxis._calculateTotals();\r\n this.setPrivateRaw(\"selectionMinY\", undefined);\r\n this.setPrivateRaw(\"selectionMaxY\", undefined);\r\n if (!outOfSelection) {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n this.processYSelectionDataItem(this.dataItems[i], vcy, stacked);\r\n }\r\n }\r\n else {\r\n yAxis.markDirtySelectionExtremes();\r\n }\r\n }\r\n if (baseAxis === yAxis || !baseAxis) {\r\n xAxis._calculateTotals();\r\n this.setPrivateRaw(\"selectionMinX\", undefined);\r\n this.setPrivateRaw(\"selectionMaxX\", undefined);\r\n if (!outOfSelection) {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n this.processXSelectionDataItem(this.dataItems[i], vcx, stacked);\r\n }\r\n }\r\n else {\r\n yAxis.markDirtySelectionExtremes();\r\n }\r\n }\r\n if (baseAxis === xAxis || !baseAxis) {\r\n if (this.get(\"valueYShow\") !== \"valueYWorking\") {\r\n const selectionMinY = this.getPrivate(\"selectionMinY\");\r\n if (selectionMinY != null) {\r\n this.setPrivateRaw(\"minY\", selectionMinY);\r\n yAxis.markDirtyExtremes();\r\n }\r\n const selectionMaxY = this.getPrivate(\"selectionMaxY\");\r\n if (selectionMaxY != null) {\r\n this.setPrivateRaw(\"maxY\", selectionMaxY);\r\n yAxis.markDirtyExtremes();\r\n }\r\n }\r\n }\r\n if (baseAxis === yAxis || !baseAxis) {\r\n if (this.get(\"valueXShow\") !== \"valueXWorking\") {\r\n const selectionMinX = this.getPrivate(\"selectionMinX\");\r\n if (selectionMinX != null) {\r\n this.setPrivateRaw(\"minX\", selectionMinX);\r\n yAxis.markDirtyExtremes();\r\n }\r\n const selectionMaxX = this.getPrivate(\"selectionMaxX\");\r\n if (selectionMaxX != null) {\r\n this.setPrivateRaw(\"maxX\", selectionMaxX);\r\n xAxis.markDirtyExtremes();\r\n }\r\n }\r\n }\r\n if (this.isPrivateDirty(\"selectionMinX\") || this.isPrivateDirty(\"selectionMaxX\")) {\r\n xAxis.markDirtySelectionExtremes();\r\n }\r\n if (this.isPrivateDirty(\"selectionMinY\") || this.isPrivateDirty(\"selectionMaxY\")) {\r\n yAxis.markDirtySelectionExtremes();\r\n }\r\n // this.updateLegendValue(undefined); flickers while panning\r\n }\r\n }\r\n }\r\n _makeRangeMask() {\r\n if (this.axisRanges.length > 0) {\r\n let mainContainerMask = this._mainContainerMask;\r\n if (mainContainerMask == null) {\r\n mainContainerMask = this.children.push(Graphics.new(this._root, {}));\r\n this._mainContainerMask = mainContainerMask;\r\n mainContainerMask.set(\"draw\", (display, target) => {\r\n const parent = this.parent;\r\n if (parent) {\r\n const w = this._root.container.width();\r\n const h = this._root.container.height();\r\n display.moveTo(-w, -h);\r\n display.lineTo(-w, h * 2);\r\n display.lineTo(w * 2, h * 2);\r\n display.lineTo(w * 2, -h);\r\n display.lineTo(-w, -h);\r\n this.axisRanges.each((axisRange) => {\r\n const fill = axisRange.axisDataItem.get(\"axisFill\");\r\n if (parent) {\r\n if (fill) {\r\n let draw = fill.get(\"draw\");\r\n if (draw) {\r\n draw(display, target);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n this.mainContainer._display.mask = mainContainerMask._display;\r\n });\r\n }\r\n mainContainerMask.markDirty();\r\n mainContainerMask._markDirtyKey(\"fill\");\r\n }\r\n else {\r\n this.mainContainer._display.mask = null;\r\n }\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n // save for performance\r\n this._x = this.x();\r\n this._y = this.y();\r\n this._makeRangeMask();\r\n }\r\n _stack() {\r\n const chart = this.chart;\r\n if (chart) {\r\n const seriesIndex = chart.series.indexOf(this);\r\n this._couldStackTo = [];\r\n if (seriesIndex > 0) {\r\n let series;\r\n for (let i = seriesIndex - 1; i >= 0; i--) {\r\n series = chart.series.getIndex(i);\r\n if (series.get(\"xAxis\") === this.get(\"xAxis\") && series.get(\"yAxis\") === this.get(\"yAxis\") && series.className === this.className) {\r\n this._couldStackTo.push(series);\r\n if (!series.get(\"stacked\")) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this._stackDataItems();\r\n }\r\n }\r\n _unstack() {\r\n $object.each(this._reallyStackedTo, (_key, value) => {\r\n delete (value._stackedSeries[this.uid]);\r\n });\r\n this._reallyStackedTo = {};\r\n $array.each(this.dataItems, (dataItem) => {\r\n dataItem.setRaw(\"stackToItemY\", undefined);\r\n dataItem.setRaw(\"stackToItemX\", undefined);\r\n });\r\n }\r\n _stackDataItems() {\r\n // this works only with the same number of data @todo: search by date/category?\r\n const baseAxis = this.get(\"baseAxis\");\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n let field;\r\n let stackToItemKey;\r\n if (baseAxis === xAxis) {\r\n field = \"valueY\";\r\n stackToItemKey = \"stackToItemY\";\r\n }\r\n else if (baseAxis === yAxis) {\r\n field = \"valueX\";\r\n stackToItemKey = \"stackToItemX\";\r\n }\r\n let len = this._couldStackTo.length;\r\n let index = 0;\r\n const stackToNegative = this.get(\"stackToNegative\");\r\n this._reallyStackedTo = {};\r\n $array.each(this.dataItems, (dataItem) => {\r\n for (let s = 0; s < len; s++) {\r\n let stackToSeries = this._couldStackTo[s];\r\n let stackToItem = stackToSeries.dataItems[index];\r\n let value = dataItem.get(field);\r\n if (stackToItem) {\r\n let stackValue = stackToItem.get(field);\r\n if (stackToNegative) {\r\n if ($type.isNumber(value)) {\r\n if ($type.isNumber(stackValue)) {\r\n if (value >= 0 && stackValue >= 0) {\r\n dataItem.setRaw(stackToItemKey, stackToItem);\r\n this._reallyStackedTo[stackToSeries.uid] = stackToSeries;\r\n stackToSeries._stackedSeries[this.uid] = this;\r\n break;\r\n }\r\n if (value < 0 && stackValue < 0) {\r\n dataItem.setRaw(stackToItemKey, stackToItem);\r\n this._reallyStackedTo[stackToSeries.uid] = stackToSeries;\r\n stackToSeries._stackedSeries[this.uid] = this;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else {\r\n if ($type.isNumber(value) && $type.isNumber(stackValue)) {\r\n dataItem.setRaw(stackToItemKey, stackToItem);\r\n this._reallyStackedTo[stackToSeries.uid] = stackToSeries;\r\n stackToSeries._stackedSeries[this.uid] = this;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n index++;\r\n });\r\n }\r\n processXSelectionDataItem(dataItem, vcx, stacked) {\r\n $array.each(this.__valueXShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n if (stacked) {\r\n value += this.getStackedXValueWorking(dataItem, key);\r\n }\r\n this._min(\"selectionMinX\", value);\r\n this._max(\"selectionMaxX\", value * vcx);\r\n }\r\n });\r\n }\r\n processYSelectionDataItem(dataItem, vcy, stacked) {\r\n $array.each(this.__valueYShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n if (stacked) {\r\n value += this.getStackedYValueWorking(dataItem, key);\r\n }\r\n this._min(\"selectionMinY\", value);\r\n this._max(\"selectionMaxY\", value * vcy);\r\n }\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getStackedYValueWorking(dataItem, key) {\r\n const stackToItem = dataItem.get(\"stackToItemY\");\r\n if (stackToItem) {\r\n const stackedToSeries = stackToItem.component;\r\n return stackToItem.get(key, 0) * stackedToSeries.get(\"vcy\", 1) + this.getStackedYValueWorking(stackToItem, key);\r\n }\r\n return 0;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getStackedXValueWorking(dataItem, key) {\r\n const stackToItem = dataItem.get(\"stackToItemX\");\r\n if (stackToItem) {\r\n const stackedToSeries = stackToItem.component;\r\n return stackToItem.get(key, 0) * stackedToSeries.get(\"vcx\", 1) + this.getStackedXValueWorking(stackToItem, key);\r\n }\r\n return 0;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getStackedYValue(dataItem, key) {\r\n const stackToItem = dataItem.get(\"stackToItemY\");\r\n if (stackToItem) {\r\n return stackToItem.get(key, 0) + this.getStackedYValue(stackToItem, key);\r\n }\r\n return 0;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getStackedXValue(dataItem, key) {\r\n const stackToItem = dataItem.get(\"stackToItemX\");\r\n if (stackToItem) {\r\n return stackToItem.get(key, 0) + this.getStackedXValue(stackToItem, key);\r\n }\r\n return 0;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n createLegendMarker(_dataItem) {\r\n this.updateLegendMarker();\r\n }\r\n _markDirtyAxes() {\r\n this._axesDirty = true;\r\n this.markDirty();\r\n }\r\n _markDataSetDirty() {\r\n this._afterDataChange();\r\n this._valuesDirty = true;\r\n this._dataProcessed = false;\r\n this._aggregatesCalculated = false;\r\n this.markDirty();\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._axesDirty = false;\r\n this._selectionProcessed = false;\r\n this._stackDirty = false;\r\n this._dataProcessed = false;\r\n }\r\n _positionBullet(bullet) {\r\n let sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n let dataItem = sprite.dataItem;\r\n let locationX = bullet.get(\"locationX\", dataItem.get(\"locationX\", 0.5));\r\n let locationY = bullet.get(\"locationY\", dataItem.get(\"locationY\", 0.5));\r\n let xAxis = this.get(\"xAxis\");\r\n let yAxis = this.get(\"yAxis\");\r\n let positionX = xAxis.getDataItemPositionX(dataItem, this._xField, locationX, this.get(\"vcx\", 1));\r\n let positionY = yAxis.getDataItemPositionY(dataItem, this._yField, locationY, this.get(\"vcy\", 1));\r\n let point = this.getPoint(positionX, positionY);\r\n let left = dataItem.get(\"left\", point.x);\r\n let right = dataItem.get(\"right\", point.x);\r\n let top = dataItem.get(\"top\", point.y);\r\n let bottom = dataItem.get(\"bottom\", point.y);\r\n let x = 0;\r\n let y = 0;\r\n let w = right - left;\r\n let h = bottom - top;\r\n if (this._shouldShowBullet(positionX, positionY)) {\r\n sprite.setPrivate(\"visible\", !bullet.getPrivate(\"hidden\"));\r\n let field = bullet.get(\"field\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n if (field != undefined) {\r\n let realField;\r\n if (baseAxis == xAxis) {\r\n if (field == \"value\") {\r\n realField = this._yField;\r\n }\r\n else if (field == \"open\") {\r\n realField = this._yOpenField;\r\n }\r\n else if (field == \"high\") {\r\n realField = this._yHighField;\r\n }\r\n else if (field == \"low\") {\r\n realField = this._yLowField;\r\n }\r\n if (realField) {\r\n positionY = yAxis.getDataItemPositionY(dataItem, realField, 0, this.get(\"vcy\", 1));\r\n point = yAxis.get(\"renderer\").positionToPoint(positionY);\r\n y = point.y;\r\n x = left + w * locationX;\r\n }\r\n }\r\n else {\r\n if (field == \"value\") {\r\n realField = this._xField;\r\n }\r\n else if (field == \"open\") {\r\n realField = this._xOpenField;\r\n }\r\n else if (field == \"high\") {\r\n realField = this._xHighField;\r\n }\r\n else if (field == \"low\") {\r\n realField = this._xLowField;\r\n }\r\n if (realField) {\r\n positionX = xAxis.getDataItemPositionX(dataItem, realField, 0, this.get(\"vcx\", 1));\r\n point = xAxis.get(\"renderer\").positionToPoint(positionX);\r\n x = point.x;\r\n y = bottom - h * locationY;\r\n }\r\n }\r\n }\r\n else {\r\n x = left + w * locationX;\r\n y = bottom - h * locationY;\r\n }\r\n const stacked = bullet.get(\"stacked\");\r\n if (stacked) {\r\n const chart = this.chart;\r\n if (baseAxis == xAxis) {\r\n let previousBullet = this._bullets[positionX + \"_\" + positionY];\r\n if (previousBullet) {\r\n let previousBounds = previousBullet.bounds();\r\n let bounds = sprite.localBounds();\r\n let yo = y;\r\n y = previousBounds.top;\r\n if (stacked == \"down\") {\r\n y = previousBounds.bottom - bounds.top;\r\n }\r\n else if (stacked == \"auto\") {\r\n if (chart) {\r\n if (yo < chart.plotContainer.height() / 2) {\r\n y = previousBounds.bottom - bounds.top;\r\n }\r\n else {\r\n y += bounds.bottom;\r\n }\r\n }\r\n }\r\n else {\r\n y += bounds.bottom;\r\n }\r\n }\r\n this._bullets[positionX + \"_\" + positionY] = sprite;\r\n }\r\n else {\r\n let previousBullet = this._bullets[positionX + \"_\" + positionY];\r\n if (previousBullet) {\r\n let previousBounds = previousBullet.bounds();\r\n let bounds = sprite.localBounds();\r\n let xo = x;\r\n x = previousBounds.right;\r\n if (stacked == \"down\") {\r\n x = previousBounds.left - bounds.right;\r\n }\r\n else if (stacked == \"auto\") {\r\n if (chart) {\r\n if (xo < chart.plotContainer.width() / 2) {\r\n x = previousBounds.left - bounds.right;\r\n }\r\n else {\r\n x -= bounds.left;\r\n }\r\n }\r\n }\r\n else {\r\n x -= bounds.left;\r\n }\r\n }\r\n this._bullets[positionX + \"_\" + positionY] = sprite;\r\n }\r\n }\r\n if (sprite.isType(\"Label\")) {\r\n sprite.setPrivate(\"maxWidth\", Math.abs(w));\r\n sprite.setPrivate(\"maxHeight\", Math.abs(h));\r\n }\r\n sprite.setAll({ x, y });\r\n }\r\n else {\r\n sprite.setPrivate(\"visible\", false);\r\n }\r\n }\r\n }\r\n _shouldShowBullet(_positionX, _positionY) {\r\n return this._showBullets;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setDataSet(id) {\r\n if (this._dataSets[id]) {\r\n this._handleDataSetChange();\r\n this._dataItems = this._dataSets[id];\r\n this._markDataSetDirty();\r\n this._dataSetId = id;\r\n const type = \"datasetchanged\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, id: id });\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n resetGrouping() {\r\n $object.each(this._dataSets, (_key, dataSet) => {\r\n if (dataSet != this._mainDataItems) {\r\n $array.each(dataSet, (dataItem) => {\r\n this.disposeDataItem(dataItem);\r\n });\r\n }\r\n });\r\n this._dataSets = {};\r\n this._dataItems = this.mainDataItems;\r\n }\r\n _handleDataSetChange() {\r\n $array.each(this._dataItems, (dataItem) => {\r\n let bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n if (bullet) {\r\n let sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite.setPrivate(\"visible\", false);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n this._selectionProcessed = false; // for totals to be calculated\r\n }\r\n /**\r\n * Shows hidden series.\r\n *\r\n * @param duration Duration of animation in milliseconds\r\n * @return Animation promise\r\n */\r\n show(duration) {\r\n const _super = Object.create(null, {\r\n show: { get: () => super.show }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this._fixVC();\r\n let promises = [];\r\n promises.push(_super.show.call(this, duration).then(() => {\r\n this._isShowing = false;\r\n let xAxis = this.get(\"xAxis\");\r\n let yAxis = this.get(\"yAxis\");\r\n let baseAxis = this.get(\"baseAxis\");\r\n if (yAxis !== baseAxis) {\r\n yAxis.markDirtySelectionExtremes();\r\n }\r\n if (xAxis !== baseAxis) {\r\n xAxis.markDirtySelectionExtremes();\r\n }\r\n }));\r\n promises.push(this.bulletsContainer.show(duration));\r\n promises.push(this._sequencedShowHide(true, duration));\r\n yield Promise.all(promises);\r\n });\r\n }\r\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of animation in milliseconds\r\n * @return Animation promise\r\n */\r\n hide(duration) {\r\n const _super = Object.create(null, {\r\n hide: { get: () => super.hide }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this._fixVC();\r\n let promises = [];\r\n promises.push(_super.hide.call(this, duration).then(() => {\r\n this._isHiding = false;\r\n }));\r\n promises.push(this.bulletsContainer.hide(duration));\r\n promises.push(this._sequencedShowHide(false, duration));\r\n yield Promise.all(promises);\r\n });\r\n }\r\n /**\r\n * Shows series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n showDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n showDataItem: { get: () => super.showDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.showDataItem.call(this, dataItem, duration)];\r\n if (!$type.isNumber(duration)) {\r\n duration = this.get(\"stateAnimationDuration\", 0);\r\n }\r\n const easing = this.get(\"stateAnimationEasing\");\r\n $array.each(this._valueFields, (key) => {\r\n promises.push(dataItem.animate({ key: key + \"Working\", to: dataItem.get(key), duration: duration, easing: easing }).waitForStop());\r\n });\r\n yield Promise.all(promises);\r\n });\r\n }\r\n /**\r\n * Hides series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n hideDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n hideDataItem: { get: () => super.hideDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.hideDataItem.call(this, dataItem, duration)];\r\n const hiddenState = this.states.create(\"hidden\", {});\r\n if (!$type.isNumber(duration)) {\r\n duration = hiddenState.get(\"stateAnimationDuration\", this.get(\"stateAnimationDuration\", 0));\r\n }\r\n const easing = hiddenState.get(\"stateAnimationEasing\", this.get(\"stateAnimationEasing\"));\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const stacked = this.get(\"stacked\");\r\n if (baseAxis === xAxis || !baseAxis) {\r\n $array.each(this._valueYFields, (key) => {\r\n let min = yAxis.getPrivate(\"min\");\r\n let baseValue = yAxis.baseValue();\r\n if ($type.isNumber(min) && min > baseValue) {\r\n baseValue = min;\r\n }\r\n if (stacked) {\r\n baseValue = 0;\r\n }\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n promises.push(dataItem.animate({ key: key + \"Working\", to: baseValue, duration: duration, easing: easing }).waitForStop());\r\n }\r\n });\r\n }\r\n if (baseAxis === yAxis || !baseAxis) {\r\n let min = xAxis.getPrivate(\"min\");\r\n let baseValue = xAxis.baseValue();\r\n if ($type.isNumber(min) && min > baseValue) {\r\n baseValue = min;\r\n }\r\n if (stacked) {\r\n baseValue = 0;\r\n }\r\n $array.each(this._valueXFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n promises.push(dataItem.animate({ key: key + \"Working\", to: baseValue, duration: duration, easing: easing }).waitForStop());\r\n }\r\n });\r\n }\r\n yield Promise.all(promises);\r\n });\r\n }\r\n _markDirtyStack() {\r\n this._stackDirty = true;\r\n this.markDirty();\r\n this._markStakedDirtyStack();\r\n }\r\n _markStakedDirtyStack() {\r\n const stackedSeries = this._stackedSeries;\r\n if (stackedSeries) {\r\n $object.each(stackedSeries, (_key, value) => {\r\n if (!value._stackDirty) {\r\n value._markDirtyStack();\r\n }\r\n });\r\n }\r\n }\r\n _afterChanged() {\r\n super._afterChanged();\r\n if (this._skipped) {\r\n this._markDirtyAxes();\r\n this._skipped = false;\r\n }\r\n }\r\n /**\r\n * Shows a tooltip for specific data item.\r\n *\r\n * @param dataItem Data item\r\n */\r\n showDataItemTooltip(dataItem) {\r\n if (!this.getPrivate(\"doNotUpdateLegend\")) {\r\n this.updateLegendMarker(dataItem);\r\n this.updateLegendValue(dataItem);\r\n }\r\n const tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n if (!this.isHidden() && this.get(\"visible\")) {\r\n tooltip._setDataItem(dataItem);\r\n if (dataItem) {\r\n let locationX = this.get(\"locationX\", 0);\r\n let locationY = this.get(\"locationY\", 1);\r\n let itemLocationX = dataItem.get(\"locationX\", locationX);\r\n let itemLocationY = dataItem.get(\"locationY\", locationY);\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const vcx = this.get(\"vcx\", 1);\r\n const vcy = this.get(\"vcy\", 1);\r\n const xPos = xAxis.getDataItemPositionX(dataItem, this._tooltipFieldX, this._aLocationX0 + (this._aLocationX1 - this._aLocationX0) * itemLocationX, vcx);\r\n const yPos = yAxis.getDataItemPositionY(dataItem, this._tooltipFieldY, this._aLocationY0 + (this._aLocationY1 - this._aLocationY0) * itemLocationY, vcy);\r\n const point = this.getPoint(xPos, yPos);\r\n let show = true;\r\n $array.each(this._valueFields, (field) => {\r\n if (dataItem.get(field) == null) {\r\n show = false;\r\n }\r\n });\r\n if (show) {\r\n const chart = this.chart;\r\n if (chart && chart.inPlot(point)) {\r\n tooltip.label.text.markDirtyText();\r\n tooltip.set(\"tooltipTarget\", this._getTooltipTarget(dataItem));\r\n tooltip.set(\"pointTo\", this._display.toGlobal({ x: point.x, y: point.y }));\r\n }\r\n else {\r\n tooltip._setDataItem(undefined);\r\n }\r\n }\r\n else {\r\n tooltip._setDataItem(undefined);\r\n }\r\n }\r\n }\r\n else {\r\n this.hideTooltip();\r\n }\r\n }\r\n }\r\n hideTooltip() {\r\n const tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip.set(\"tooltipTarget\", this);\r\n }\r\n return super.hideTooltip();\r\n }\r\n _getTooltipTarget(dataItem) {\r\n if (this.get(\"seriesTooltipTarget\") == \"bullet\") {\r\n const bullets = dataItem.bullets;\r\n if (bullets && bullets.length > 0) {\r\n const bullet = bullets[0];\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n return sprite;\r\n }\r\n }\r\n }\r\n return this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLegendValue(dataItem) {\r\n const legendDataItem = this.get(\"legendDataItem\");\r\n if (legendDataItem) {\r\n const label = legendDataItem.get(\"label\");\r\n if (label) {\r\n let txt = \"\";\r\n if (dataItem) {\r\n label._setDataItem(dataItem);\r\n txt = this.get(\"legendLabelText\", label.get(\"text\", this.get(\"name\", \"\")));\r\n }\r\n else {\r\n label._setDataItem(this._emptyDataItem);\r\n txt = this.get(\"legendRangeLabelText\", this.get(\"legendLabelText\", label.get(\"text\", this.get(\"name\", \"\"))));\r\n }\r\n label.set(\"text\", txt);\r\n }\r\n const valueLabel = legendDataItem.get(\"valueLabel\");\r\n if (valueLabel) {\r\n let txt = \"\";\r\n if (dataItem) {\r\n valueLabel._setDataItem(dataItem);\r\n txt = this.get(\"legendValueText\", valueLabel.get(\"text\", \"\"));\r\n }\r\n else {\r\n valueLabel._setDataItem(this._emptyDataItem);\r\n txt = this.get(\"legendRangeValueText\", valueLabel.get(\"text\", \"\"));\r\n }\r\n valueLabel.set(\"text\", txt);\r\n }\r\n }\r\n }\r\n _getItemReaderLabel() {\r\n let text = \"X: {\" + this._xField;\r\n if (this.get(\"xAxis\").isType(\"DateAxis\")) {\r\n text += \".formatDate()\";\r\n }\r\n text += \"}; Y: {\" + this._yField;\r\n if (this.get(\"yAxis\").isType(\"DateAxis\")) {\r\n text += \".formatDate()\";\r\n }\r\n text += \"}\";\r\n return text;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getPoint(positionX, positionY) {\r\n let x = this.get(\"xAxis\").get(\"renderer\").positionToCoordinate(positionX);\r\n let y = this.get(\"yAxis\").get(\"renderer\").positionToCoordinate(positionY);\r\n // if coordinate is super big, canvas fails to draw line, capping to some big number (won't make any visual difference)\r\n let max = 999999999;\r\n if (y < -max) {\r\n y = -max;\r\n }\r\n if (y > max) {\r\n y = max;\r\n }\r\n if (x < -max) {\r\n x = -max;\r\n }\r\n if (x > max) {\r\n x = max;\r\n }\r\n return { x: x, y: y };\r\n }\r\n _shouldInclude(_position) {\r\n return true;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n handleCursorHide() {\r\n this.hideTooltip();\r\n this.updateLegendValue(undefined);\r\n this.updateLegendMarker(undefined);\r\n }\r\n _afterDataChange() {\r\n super._afterDataChange();\r\n this.get(\"xAxis\")._markDirtyKey(\"start\");\r\n this.get(\"yAxis\")._markDirtyKey(\"start\");\r\n this.resetExtremes();\r\n }\r\n /**\r\n * Resets cached axis scale values.\r\n */\r\n resetExtremes() {\r\n this.setPrivate(\"selectionMinX\", undefined);\r\n this.setPrivate(\"selectionMaxX\", undefined);\r\n this.setPrivate(\"selectionMinY\", undefined);\r\n this.setPrivate(\"selectionMaxY\", undefined);\r\n this.setPrivate(\"minX\", undefined);\r\n this.setPrivate(\"minY\", undefined);\r\n this.setPrivate(\"maxX\", undefined);\r\n this.setPrivate(\"maxY\", undefined);\r\n }\r\n /**\r\n * Creates and returns an axis range object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n * @param axisDataItem Axis data item\r\n * @return Axis range\r\n */\r\n createAxisRange(axisDataItem) {\r\n return this.axisRanges.push({\r\n axisDataItem: axisDataItem\r\n });\r\n }\r\n /**\r\n * A list of series's main (ungrouped) data items.\r\n *\r\n * @return Data items\r\n */\r\n get mainDataItems() {\r\n return this._mainDataItems;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _adjustStartIndex(index) {\r\n const xAxis = this.get(\"xAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n if (baseAxis == xAxis && xAxis.isType(\"DateAxis\")) {\r\n const baseDuration = xAxis.baseDuration();\r\n const minSelection = xAxis.getPrivate(\"selectionMin\", xAxis.getPrivate(\"min\", 0));\r\n const dl = baseDuration * this.get(\"locationX\", 0.5);\r\n let value = -Infinity;\r\n while (value < minSelection) {\r\n const dataItem = this.dataItems[index];\r\n if (dataItem) {\r\n const open = dataItem.open;\r\n if (open) {\r\n value = open[\"valueX\"];\r\n }\r\n else {\r\n value = dataItem.get(\"valueX\", 0);\r\n }\r\n value += dl;\r\n if (value < minSelection) {\r\n index++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n}\r\nObject.defineProperty(XYSeries, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"XYSeries\"\r\n});\r\nObject.defineProperty(XYSeries, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Series.classNames.concat([XYSeries.className])\r\n});\r\n","/**\r\n * @ignore\r\n */\r\nexport class Registry {\r\n constructor() {\r\n /**\r\n * Currently running version of amCharts.\r\n */\r\n Object.defineProperty(this, \"version\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"5.9.13\"\r\n });\r\n /**\r\n * List of applied licenses.\r\n * @ignore\r\n */\r\n Object.defineProperty(this, \"licenses\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n /**\r\n * Entities that have their `id` setting set.\r\n */\r\n Object.defineProperty(this, \"entitiesById\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n /**\r\n * All created [[Root]] elements.\r\n */\r\n Object.defineProperty(this, \"rootElements\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport const registry = new Registry();\r\n/**\r\n * Adds a license, e.g.:\r\n *\r\n * ```TypeScript\r\n * am5.addLicense(\"xxxxxxxx\");\r\n * ```\r\n * ```JavaScript\r\n * am5.addLicense(\"xxxxxxxx\");\r\n * ```\r\n *\r\n * Multiple licenses can be added to cover for multiple products.\r\n *\r\n * @param license License key\r\n */\r\nexport function addLicense(license) {\r\n registry.licenses.push(license);\r\n}\r\n/**\r\n * Disposes all [[Root]] elements.\r\n */\r\nexport function disposeAllRootElements() {\r\n let root;\r\n while (root = registry.rootElements.pop()) {\r\n root.dispose();\r\n }\r\n}\r\n/**\r\n * Finds and returns a `Root` element assigned to a container with `id`.\r\n *\r\n * @param id Container ID\r\n * @return Root\r\n * @since 5.9.2\r\n */\r\nexport function getRootById(id) {\r\n let found;\r\n registry.rootElements.forEach((item) => {\r\n if (item.dom.id == id) {\r\n found = item;\r\n }\r\n });\r\n return found;\r\n}\r\n","/** @ignore */ /** */\r\nimport * as $array from \"./Array\";\r\nimport * as $utils from \"./Utils\";\r\n/**\r\n * @ignore\r\n */\r\nclass Native {\r\n constructor() {\r\n Object.defineProperty(this, \"_observer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_targets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n this._observer = new ResizeObserver((entries) => {\r\n $array.each(entries, (entry) => {\r\n $array.each(this._targets, (x) => {\r\n if (x.target === entry.target) {\r\n x.callback();\r\n }\r\n });\r\n });\r\n });\r\n }\r\n addTarget(target, callback) {\r\n this._observer.observe(target, { box: \"border-box\" });\r\n this._targets.push({ target, callback });\r\n }\r\n removeTarget(target) {\r\n this._observer.unobserve(target);\r\n $array.keepIf(this._targets, (x) => {\r\n return x.target !== target;\r\n });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass Raf {\r\n constructor() {\r\n Object.defineProperty(this, \"_timer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_targets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n addTarget(target, callback) {\r\n if (this._timer === null) {\r\n let lastTime = null;\r\n const loop = () => {\r\n const currentTime = Date.now();\r\n if (lastTime === null || currentTime > (lastTime + Raf.delay)) {\r\n lastTime = currentTime;\r\n $array.each(this._targets, (x) => {\r\n let newSize = x.target.getBoundingClientRect();\r\n if (newSize.width !== x.size.width || newSize.height !== x.size.height) {\r\n x.size = newSize;\r\n x.callback();\r\n }\r\n });\r\n }\r\n if (this._targets.length === 0) {\r\n this._timer = null;\r\n }\r\n else {\r\n this._timer = requestAnimationFrame(loop);\r\n }\r\n };\r\n this._timer = requestAnimationFrame(loop);\r\n }\r\n // We start off with fake bounds so that sensor always kicks in\r\n let size = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0, x: 0, y: 0 };\r\n this._targets.push({ target, callback, size });\r\n }\r\n removeTarget(target) {\r\n $array.keepIf(this._targets, (x) => {\r\n return x.target !== target;\r\n });\r\n if (this._targets.length === 0) {\r\n if (this._timer !== null) {\r\n cancelAnimationFrame(this._timer);\r\n this._timer = null;\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Raf, \"delay\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 200\r\n});\r\n/**\r\n * @ignore\r\n */\r\nlet observer = null;\r\n/**\r\n * @ignore\r\n */\r\nfunction makeSensor() {\r\n if (observer === null) {\r\n if (typeof ResizeObserver !== \"undefined\") {\r\n observer = new Native();\r\n }\r\n else {\r\n observer = new Raf();\r\n }\r\n }\r\n return observer;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class ResizeSensor {\r\n constructor(element, callback) {\r\n Object.defineProperty(this, \"_sensor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_element\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_listener\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n this._sensor = makeSensor();\r\n this._element = element;\r\n // This is needed because we need to know when the window is zoomed\r\n this._listener = $utils.onZoom(callback);\r\n this._sensor.addTarget(element, callback);\r\n }\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._sensor.removeTarget(this._element);\r\n this._listener.dispose();\r\n }\r\n }\r\n get sensor() {\r\n return this._sensor;\r\n }\r\n}\r\n","import { Entity } from \"./Entity\";\r\n/**\r\n * Presets for common UI elements.\r\n */\r\nexport class InterfaceColors extends Entity {\r\n}\r\nObject.defineProperty(InterfaceColors, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"InterfaceColors\"\r\n});\r\nObject.defineProperty(InterfaceColors, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([InterfaceColors.className])\r\n});\r\n","import { Entity } from \"./Entity\";\r\nimport { TextFormatter } from \"./TextFormatter\";\r\nimport * as $object from \"./Object\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Number formatter\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-numbers/} for more info\r\n * @important\r\n */\r\nexport class NumberFormatter extends Entity {\r\n _setDefaults() {\r\n // Defaults\r\n this._setDefault(\"negativeBase\", 0);\r\n this._setDefault(\"numberFormat\", \"#,###.#####\");\r\n this._setDefault(\"smallNumberThreshold\", 1.00);\r\n const bns = \"_big_number_suffix_\";\r\n const sns = \"_small_number_suffix_\";\r\n const bs = \"_byte_suffix_\";\r\n this._setDefault(\"bigNumberPrefixes\", [\r\n { \"number\": 1e+3, \"suffix\": this._t(bns + \"3\") },\r\n { \"number\": 1e+6, \"suffix\": this._t(bns + \"6\") },\r\n { \"number\": 1e+9, \"suffix\": this._t(bns + \"9\") },\r\n { \"number\": 1e+12, \"suffix\": this._t(bns + \"12\") },\r\n { \"number\": 1e+15, \"suffix\": this._t(bns + \"15\") },\r\n { \"number\": 1e+18, \"suffix\": this._t(bns + \"18\") },\r\n { \"number\": 1e+21, \"suffix\": this._t(bns + \"21\") },\r\n { \"number\": 1e+24, \"suffix\": this._t(bns + \"24\") }\r\n ]);\r\n this._setDefault(\"smallNumberPrefixes\", [\r\n { \"number\": 1e-24, \"suffix\": this._t(sns + \"24\") },\r\n { \"number\": 1e-21, \"suffix\": this._t(sns + \"21\") },\r\n { \"number\": 1e-18, \"suffix\": this._t(sns + \"18\") },\r\n { \"number\": 1e-15, \"suffix\": this._t(sns + \"15\") },\r\n { \"number\": 1e-12, \"suffix\": this._t(sns + \"12\") },\r\n { \"number\": 1e-9, \"suffix\": this._t(sns + \"9\") },\r\n { \"number\": 1e-6, \"suffix\": this._t(sns + \"6\") },\r\n { \"number\": 1e-3, \"suffix\": this._t(sns + \"3\") }\r\n ]);\r\n this._setDefault(\"bytePrefixes\", [\r\n { \"number\": 1, suffix: this._t(bs + \"B\") },\r\n { \"number\": 1024, suffix: this._t(bs + \"KB\") },\r\n { \"number\": 1048576, suffix: this._t(bs + \"MB\") },\r\n { \"number\": 1073741824, suffix: this._t(bs + \"GB\") },\r\n { \"number\": 1099511627776, suffix: this._t(bs + \"TB\") },\r\n { \"number\": 1125899906842624, suffix: this._t(bs + \"PB\") }\r\n ]);\r\n super._setDefaults();\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n }\r\n /**\r\n * Formats the number according to specific format.\r\n *\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @return Formatted number\r\n */\r\n format(value, format, precision) {\r\n // no format passed in or \"Number\"\r\n if (format == null || ($type.isString(format) && format.toLowerCase() === \"number\")) {\r\n format = this.get(\"numberFormat\", \"\");\r\n }\r\n // Init return value\r\n let formatted;\r\n // Cast to number just in case\r\n // TODO: maybe use better casting\r\n let source = Number(value);\r\n // Is it a built-in format or Intl.NumberFormatOptions\r\n if ($type.isObject(format)) {\r\n try {\r\n if (this.get(\"intlLocales\")) {\r\n return new Intl.NumberFormat(this.get(\"intlLocales\"), format).format(source);\r\n }\r\n else {\r\n return new Intl.NumberFormat(undefined, format).format(source);\r\n }\r\n }\r\n catch (e) {\r\n return \"Invalid\";\r\n }\r\n }\r\n else {\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // Get format info (it will also deal with parser caching)\r\n let info = this.parseFormat(format, this._root.language);\r\n // format and replace the number\r\n let details;\r\n if (source > this.get(\"negativeBase\")) {\r\n details = info.positive;\r\n }\r\n else if (source < this.get(\"negativeBase\")) {\r\n details = info.negative;\r\n }\r\n else {\r\n details = info.zero;\r\n }\r\n // Adjust precision\r\n if (precision != null && !details.mod) {\r\n details = $object.copy(details);\r\n details.decimals.active = source == 0 ? 0 : precision;\r\n }\r\n // Format\r\n formatted = details.template.split($type.PLACEHOLDER).join(this.applyFormat(source, details));\r\n }\r\n if (this.get(\"forceLTR\") === true) {\r\n formatted = \"‎\" + formatted;\r\n }\r\n return formatted;\r\n }\r\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param language Language\r\n * @ignore\r\n */\r\n parseFormat(format, language) {\r\n // Check cache\r\n // TODO\r\n // let cached = this.getCache(format);\r\n // if (cached != null) {\r\n // \treturn cached;\r\n // }\r\n const thousandSeparator = language.translateEmpty(\"_thousandSeparator\");\r\n const decimalSeparator = language.translateEmpty(\"_decimalSeparator\");\r\n // init format parse info holder\r\n let info = {\r\n \"positive\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": thousandSeparator\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": decimalSeparator\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n },\r\n \"negative\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": thousandSeparator\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": decimalSeparator\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n },\r\n \"zero\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": thousandSeparator\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": decimalSeparator\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n }\r\n };\r\n // Escape double vertical bars (that mean display one vertical bar)\r\n format = format.replace(\"||\", $type.PLACEHOLDER2);\r\n // Split it up and deal with different formats\r\n let parts = format.split(\"|\");\r\n info.positive.source = parts[0];\r\n if (typeof parts[2] === \"undefined\") {\r\n info.zero = info.positive;\r\n }\r\n else {\r\n info.zero.source = parts[2];\r\n }\r\n if (typeof parts[1] === \"undefined\") {\r\n info.negative = info.positive;\r\n }\r\n else {\r\n info.negative.source = parts[1];\r\n }\r\n // Parse each\r\n $object.each(info, (_part, item) => {\r\n // Already parsed\r\n if (item.parsed) {\r\n return;\r\n }\r\n // Check cached\r\n // TODO\r\n // if (typeof this.getCache(item.source) !== \"undefined\") {\r\n // \tinfo[part] = this.getCache(item.source);\r\n // \treturn;\r\n // }\r\n // Begin parsing\r\n let partFormat = item.source;\r\n // Just \"Number\"?\r\n if (partFormat.toLowerCase() === \"number\") {\r\n partFormat = this.get(\"numberFormat\", \"#,###.#####\");\r\n }\r\n // Let TextFormatter split into chunks\r\n let chunks = TextFormatter.chunk(partFormat, true);\r\n for (let i = 0; i < chunks.length; i++) {\r\n let chunk = chunks[i];\r\n // replace back double vertical bar\r\n chunk.text = chunk.text.replace($type.PLACEHOLDER2, \"|\");\r\n if (chunk.type === \"value\") {\r\n // Parse format\r\n // Look for codes\r\n let matches = chunk.text.match(/[#0.,]+[ ]?[abespABESP%!]?[abespABESP‰!]?/);\r\n if (matches) {\r\n if (matches === null || matches[0] === \"\") {\r\n // no codes here - assume string\r\n // nothing to do here\r\n item.template += chunk.text;\r\n }\r\n else {\r\n // look for the format modifiers at the end\r\n let mods = matches[0].match(/[abespABESP%‰!]{2}|[abespABESP%‰]{1}$/);\r\n if (mods) {\r\n item.mod = mods[0].toLowerCase();\r\n item.modSpacing = matches[0].match(/[ ]{1}[abespABESP%‰!]{1}$/) ? true : false;\r\n }\r\n // break the format up\r\n let a = matches[0].split(\".\");\r\n // Deal with thousands\r\n if (a[0] === \"\") {\r\n // No directives for thousands\r\n // Leave default settings (no formatting)\r\n }\r\n else {\r\n // Counts\r\n item.thousands.active = (a[0].match(/0/g) || []).length;\r\n item.thousands.passive = (a[0].match(/\\#/g) || []).length + item.thousands.active;\r\n // Separator interval\r\n let b = a[0].split(\",\");\r\n if (b.length === 1) {\r\n // No thousands separators\r\n // Do nothing\r\n }\r\n else {\r\n // Use length fo the last chunk as thousands length\r\n item.thousands.interval = (b.pop() || \"\").length;\r\n if (item.thousands.interval === 0) {\r\n item.thousands.interval = -1;\r\n }\r\n }\r\n }\r\n // Deal with decimals\r\n if (typeof (a[1]) === \"undefined\") {\r\n // No directives for decimals\r\n // Leave at defaults (no formatting)\r\n }\r\n else {\r\n // Counts\r\n item.decimals.active = (a[1].match(/0/g) || []).length;\r\n item.decimals.passive = (a[1].match(/\\#/g) || []).length + item.decimals.active;\r\n }\r\n // Add special code to template\r\n item.template += chunk.text.split(matches[0]).join($type.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n else {\r\n // Quoted string - take it as it is\r\n item.template += chunk.text;\r\n }\r\n }\r\n // Apply style formatting\r\n //item.template = getTextFormatter().format(item.template, this.outputFormat);\r\n // Save cache\r\n // TODO\r\n //this.setCache(item.source, item);\r\n // Mark this as parsed\r\n item.parsed = true;\r\n });\r\n // Save cache (the whole thing)\r\n // TODO\r\n //this.setCache(format, info);\r\n return info;\r\n }\r\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by parseFormat()\r\n * @return Formatted number\r\n * @ignore\r\n */\r\n applyFormat(value, details) {\r\n // Use absolute values\r\n let negative = value < 0;\r\n value = Math.abs(value);\r\n // Recalculate according to modifier\r\n let prefix = \"\", suffix = \"\";\r\n let mods = details.mod ? details.mod.split(\"\") : [];\r\n if (mods.indexOf(\"b\") !== -1) {\r\n let a = this.applyPrefix(value, this.get(\"bytePrefixes\"), mods.indexOf(\"!\") !== -1);\r\n value = a[0];\r\n prefix = a[1];\r\n suffix = a[2];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (mods.indexOf(\"a\") !== -1) {\r\n let a = this.applyPrefix(value, value < this.get(\"smallNumberThreshold\") ? this.get(\"smallNumberPrefixes\") : this.get(\"bigNumberPrefixes\"), mods.indexOf(\"!\") !== -1);\r\n value = a[0];\r\n prefix = a[1];\r\n suffix = a[2];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (mods.indexOf(\"p\") !== -1) {\r\n let ol = Math.min(value.toString().length + 2, 21);\r\n //value *= 100;\r\n value = parseFloat(value.toPrecision(ol));\r\n prefix = this._root.language.translate(\"_percentPrefix\");\r\n suffix = this._root.language.translate(\"_percentSuffix\");\r\n if (prefix == \"\" && suffix == \"\") {\r\n suffix = \"%\";\r\n }\r\n }\r\n else if (mods.indexOf(\"%\") !== -1) {\r\n let ol = Math.min(value.toString().length + 2, 21);\r\n value *= 100;\r\n value = parseFloat(value.toPrecision(ol));\r\n suffix = \"%\";\r\n }\r\n else if (mods.indexOf(\"‰\") !== -1) {\r\n let ol = Math.min(value.toString().length + 3, 21);\r\n value *= 1000;\r\n value = parseFloat(value.toPrecision(ol));\r\n suffix = \"‰\";\r\n }\r\n // Round to passive\r\n if (mods.indexOf(\"e\") !== -1) {\r\n // convert the value to exponential\r\n let exp;\r\n if (details.decimals.passive >= 0) {\r\n exp = value.toExponential(details.decimals.passive).split(\"e\");\r\n }\r\n else {\r\n exp = value.toExponential().split(\"e\");\r\n }\r\n value = Number(exp[0]);\r\n suffix = \"e\" + exp[1];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (details.decimals.passive === 0) {\r\n value = Math.round(value);\r\n }\r\n else if (details.decimals.passive > 0) {\r\n const decimals = $utils.decimalPlaces(value);\r\n if (decimals > 0) {\r\n const d = Math.pow(10, details.decimals.passive);\r\n value = Math.round(parseFloat((value * d).toFixed(decimals))) / d;\r\n }\r\n }\r\n // Init return value\r\n let res = \"\";\r\n // Calc integer and decimal parts\r\n let a = $type.numberToString(value).split(\".\");\r\n // Format integers\r\n let ints = a[0];\r\n // Pad integers to active length\r\n if (ints.length < details.thousands.active) {\r\n ints = Array(details.thousands.active - ints.length + 1).join(\"0\") + ints;\r\n }\r\n // Insert thousands separators\r\n if (details.thousands.interval > 0) {\r\n let ip = [];\r\n let intsr = ints.split(\"\").reverse().join(\"\");\r\n for (let i = 0, len = ints.length; i <= len; i += details.thousands.interval) {\r\n let c = intsr.substr(i, details.thousands.interval).split(\"\").reverse().join(\"\");\r\n if (c !== \"\") {\r\n ip.unshift(c);\r\n }\r\n }\r\n ints = ip.join(details.thousands.separator);\r\n }\r\n // Add integers\r\n res += ints;\r\n // Add decimals\r\n if (a.length === 1) {\r\n a.push(\"\");\r\n }\r\n let decs = a[1];\r\n // Fill zeros?\r\n if (decs.length < details.decimals.active) {\r\n decs += Array(details.decimals.active - decs.length + 1).join(\"0\");\r\n }\r\n if (decs !== \"\") {\r\n res += details.decimals.separator + decs;\r\n }\r\n // Can't have empty return value\r\n if (res === \"\") {\r\n res = \"0\";\r\n }\r\n // Add minus sign back\r\n if (value !== 0 && negative && (mods.indexOf(\"s\") === -1)) {\r\n res = \"-\" + res;\r\n }\r\n // Add suffixes/prefixes\r\n if (prefix) {\r\n res = prefix + res;\r\n }\r\n if (suffix) {\r\n res += suffix;\r\n }\r\n return res;\r\n }\r\n applyPrefix(value, prefixes, force = false) {\r\n let newvalue = value;\r\n let prefix = \"\";\r\n let suffix = \"\";\r\n let applied = false;\r\n let k = 1;\r\n for (let i = 0, len = prefixes.length; i < len; i++) {\r\n if (prefixes[i].number <= value) {\r\n if (prefixes[i].number === 0) {\r\n newvalue = 0;\r\n }\r\n else {\r\n newvalue = value / prefixes[i].number;\r\n k = prefixes[i].number;\r\n }\r\n prefix = prefixes[i].prefix;\r\n suffix = prefixes[i].suffix;\r\n applied = true;\r\n }\r\n }\r\n if (!applied && force && prefixes.length && value != 0) {\r\n // Prefix was not applied. Use the first prefix.\r\n newvalue = value / prefixes[0].number;\r\n prefix = prefixes[0].prefix;\r\n suffix = prefixes[0].suffix;\r\n applied = true;\r\n }\r\n if (applied) {\r\n newvalue = parseFloat(newvalue.toPrecision(Math.min(k.toString().length + Math.floor(newvalue).toString().replace(/[^0-9]*/g, \"\").length, 21)));\r\n }\r\n return [newvalue, prefix, suffix];\r\n }\r\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\r\n escape(text) {\r\n return text.replace(\"||\", $type.PLACEHOLDER2);\r\n }\r\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\r\n unescape(text) {\r\n return text.replace($type.PLACEHOLDER2, \"|\");\r\n }\r\n}\r\n","function parseDate(timezone, date) {\r\n let year = 0;\r\n let month = 0;\r\n let day = 1;\r\n let hour = 0;\r\n let minute = 0;\r\n let second = 0;\r\n let millisecond = 0;\r\n let weekday = 0;\r\n timezone.formatToParts(date).forEach((x) => {\r\n switch (x.type) {\r\n case \"year\":\r\n year = +x.value;\r\n break;\r\n case \"month\":\r\n month = (+x.value) - 1;\r\n break;\r\n case \"day\":\r\n day = +x.value;\r\n break;\r\n case \"hour\":\r\n hour = +x.value;\r\n break;\r\n case \"minute\":\r\n minute = +x.value;\r\n break;\r\n case \"second\":\r\n second = +x.value;\r\n break;\r\n case \"fractionalSecond\":\r\n millisecond = +x.value;\r\n break;\r\n case \"weekday\":\r\n switch (x.value) {\r\n case \"Sun\":\r\n weekday = 0;\r\n break;\r\n case \"Mon\":\r\n weekday = 1;\r\n break;\r\n case \"Tue\":\r\n weekday = 2;\r\n break;\r\n case \"Wed\":\r\n weekday = 3;\r\n break;\r\n case \"Thu\":\r\n weekday = 4;\r\n break;\r\n case \"Fri\":\r\n weekday = 5;\r\n break;\r\n case \"Sat\":\r\n weekday = 6;\r\n break;\r\n }\r\n }\r\n });\r\n if (hour === 24) {\r\n hour = 0;\r\n }\r\n return { year, month, day, hour, minute, second, millisecond, weekday };\r\n}\r\nfunction toUTCDate(timezone, date) {\r\n const { year, month, day, hour, minute, second, millisecond } = parseDate(timezone, date);\r\n return Date.UTC(year, month, day, hour, minute, second, millisecond);\r\n}\r\nexport class Timezone {\r\n constructor(timezone, isReal) {\r\n Object.defineProperty(this, \"_utc\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_dtf\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"name\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n this.name = timezone;\r\n this._utc = new Intl.DateTimeFormat(\"UTC\", {\r\n hour12: false,\r\n timeZone: \"UTC\",\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n second: \"2-digit\",\r\n weekday: \"short\",\r\n fractionalSecondDigits: 3,\r\n });\r\n this._dtf = new Intl.DateTimeFormat(\"UTC\", {\r\n hour12: false,\r\n timeZone: timezone,\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n second: \"2-digit\",\r\n weekday: \"short\",\r\n fractionalSecondDigits: 3,\r\n });\r\n }\r\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param timezone IANA timezone\r\n * @return Instantiated object\r\n */\r\n static new(timezone) {\r\n return (new this(timezone, true));\r\n }\r\n convertLocal(date) {\r\n const offset = this.offsetUTC(date);\r\n const userOffset = date.getTimezoneOffset();\r\n const output = new Date(date);\r\n output.setUTCMinutes(output.getUTCMinutes() - (offset - userOffset));\r\n const newUserOffset = output.getTimezoneOffset();\r\n if (userOffset != newUserOffset) {\r\n output.setUTCMinutes(output.getUTCMinutes() + newUserOffset - userOffset);\r\n }\r\n return output;\r\n }\r\n offsetUTC(date) {\r\n const utc = toUTCDate(this._utc, date);\r\n const dtf = toUTCDate(this._dtf, date);\r\n return (utc - dtf) / 60000;\r\n }\r\n parseDate(date) {\r\n return parseDate(this._dtf, date);\r\n }\r\n}\r\n","import { Entity } from \"./Entity\";\r\nimport { TextFormatter } from \"./TextFormatter\";\r\nimport { Timezone } from \"./Timezone\";\r\nimport * as $type from \"./Type\";\r\nimport * as $utils from \"./Utils\";\r\n/**\r\n * Date formatter class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n * @important\r\n */\r\nexport class DateFormatter extends Entity {\r\n _setDefaults() {\r\n // Defaults\r\n this._setDefault(\"capitalize\", true);\r\n this._setDefault(\"dateFormat\", \"yyyy-MM-dd\");\r\n super._setDefaults();\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n }\r\n /**\r\n * Formats a source `Date` object into string format\r\n * @param source inpout date\r\n * @param format Output format\r\n * @param ignoreTimezone Ignore timezone?\r\n * @return Formatted date\r\n */\r\n format(source, format, ignoreTimezone = false) {\r\n // Locale?\r\n // TODO\r\n // No format passed in or it's empty\r\n if (typeof format === \"undefined\" || format === \"\") {\r\n format = this.get(\"dateFormat\", \"yyyy-MM-dd\");\r\n }\r\n // Init return value\r\n let formatted;\r\n // Cast?\r\n // TODO: decide if we need to cast\r\n let date = source;\r\n // Is it a built-in format or Intl.DateTimeFormat\r\n if ($type.isObject(format)) {\r\n try {\r\n const locales = this.get(\"intlLocales\");\r\n if (locales) {\r\n return new Intl.DateTimeFormat(locales, format).format(date);\r\n }\r\n else {\r\n return new Intl.DateTimeFormat(undefined, format).format(date);\r\n }\r\n }\r\n catch (e) {\r\n return \"Invalid\";\r\n }\r\n }\r\n // get format info (it will also deal with parser caching)\r\n let info = this.parseFormat(format);\r\n // Should we apply custom time zone?\r\n const timezone = this._root.timezone;\r\n if (timezone && !this._root.utc && !ignoreTimezone) {\r\n date = timezone.convertLocal(date);\r\n }\r\n // Check if it's a valid date\r\n if (!$type.isNumber(date.getTime())) {\r\n // TODO translation\r\n //return this._t(\"Invalid date\");\r\n return \"Invalid date\";\r\n }\r\n // Apply format\r\n formatted = this.applyFormat(date, info, ignoreTimezone);\r\n // Capitalize\r\n if (this.get(\"capitalize\")) {\r\n formatted = formatted.replace(/^.{1}/, formatted.substr(0, 1).toUpperCase());\r\n }\r\n // We're done\r\n return formatted;\r\n }\r\n /**\r\n * Applies format to Date.\r\n *\r\n * @param date Date object\r\n * @param info Parsed format information\r\n * @return Formatted date string\r\n */\r\n applyFormat(date, info, ignoreTimezone = false) {\r\n // Init return value\r\n let res = info.template;\r\n // Get values\r\n let fullYear, month, weekday, day, hours, minutes, seconds, milliseconds, timestamp = date.getTime();\r\n if (this._root.utc && !ignoreTimezone) {\r\n fullYear = date.getUTCFullYear();\r\n month = date.getUTCMonth();\r\n weekday = date.getUTCDay();\r\n day = date.getUTCDate();\r\n hours = date.getUTCHours();\r\n minutes = date.getUTCMinutes();\r\n seconds = date.getUTCSeconds();\r\n milliseconds = date.getUTCMilliseconds();\r\n }\r\n else {\r\n fullYear = date.getFullYear();\r\n month = date.getMonth();\r\n weekday = date.getDay();\r\n day = date.getDate();\r\n hours = date.getHours();\r\n minutes = date.getMinutes();\r\n seconds = date.getSeconds();\r\n milliseconds = date.getMilliseconds();\r\n }\r\n // Go through each part and format/replace it in template\r\n for (let i = 0, len = info.parts.length; i < len; i++) {\r\n let value = \"\";\r\n switch (info.parts[i]) {\r\n case \"G\":\r\n value = this._t(fullYear < 0\r\n ? \"_era_bc\"\r\n : \"_era_ad\");\r\n break;\r\n case \"yyyy\":\r\n value = Math.abs(fullYear).toString();\r\n if (fullYear < 0) {\r\n value += this._t(\"_era_bc\");\r\n }\r\n break;\r\n case \"yyy\":\r\n case \"yy\":\r\n case \"y\":\r\n value = Math.abs(fullYear).toString().substr(-info.parts[i].length);\r\n if (fullYear < 0) {\r\n value += this._t(\"_era_bc\");\r\n }\r\n break;\r\n case \"YYYY\":\r\n case \"YYY\":\r\n case \"YY\":\r\n case \"Y\":\r\n let year = $utils.getWeekYear(date, this._root.utc);\r\n if (info.parts[i] == \"YYYY\") {\r\n value = Math.abs(year).toString();\r\n }\r\n else {\r\n value = Math.abs(year).toString().substr(-info.parts[i].length);\r\n }\r\n if (year < 0) {\r\n value += this._t(\"_era_bc\");\r\n }\r\n break;\r\n case \"u\":\r\n // @todo\r\n break;\r\n case \"q\":\r\n value = \"\" + Math.ceil((date.getMonth() + 1) / 3);\r\n break;\r\n case \"MMMMM\":\r\n value = this._t(this._getMonth(month)).substr(0, 1);\r\n break;\r\n case \"MMMM\":\r\n value = this._t(this._getMonth(month));\r\n break;\r\n case \"MMM\":\r\n value = this._t(this._getShortMonth(month));\r\n break;\r\n case \"MM\":\r\n value = $utils.padString(month + 1, 2, \"0\");\r\n break;\r\n case \"M\":\r\n value = (month + 1).toString();\r\n break;\r\n case \"ww\":\r\n value = $utils.padString($utils.getWeek(date, this._root.utc), 2, \"0\");\r\n break;\r\n case \"w\":\r\n value = $utils.getWeek(date, this._root.utc).toString();\r\n break;\r\n case \"W\":\r\n value = $utils.getMonthWeek(date, this._root.utc).toString();\r\n break;\r\n case \"dd\":\r\n value = $utils.padString(day, 2, \"0\");\r\n break;\r\n case \"d\":\r\n value = day.toString();\r\n break;\r\n case \"DD\":\r\n case \"DDD\":\r\n value = $utils.padString($utils.getYearDay(date, this._root.utc).toString(), info.parts[i].length, \"0\");\r\n break;\r\n case \"D\":\r\n value = $utils.getYearDay(date, this._root.utc).toString();\r\n break;\r\n case \"F\":\r\n // @todo\r\n break;\r\n case \"g\":\r\n // @todo\r\n break;\r\n case \"t\":\r\n value = this._root.language.translateFunc(\"_dateOrd\").call(this, day);\r\n break;\r\n case \"E\":\r\n value = (weekday || 7).toString();\r\n break;\r\n case \"EE\":\r\n value = $utils.padString((weekday || 7).toString(), 2, \"0\");\r\n break;\r\n case \"EEE\":\r\n case \"eee\":\r\n value = this._t(this._getShortWeekday(weekday));\r\n break;\r\n case \"EEEE\":\r\n case \"eeee\":\r\n value = this._t(this._getWeekday(weekday));\r\n break;\r\n case \"EEEEE\":\r\n case \"eeeee\":\r\n value = this._t(this._getShortWeekday(weekday)).substr(0, 1);\r\n break;\r\n case \"e\":\r\n case \"ee\":\r\n value = (weekday - (this._root.locale.firstDayOfWeek || 1) + 1).toString();\r\n if (info.parts[i] == \"ee\") {\r\n value = $utils.padString(value, 2, \"0\");\r\n }\r\n break;\r\n case \"a\":\r\n if (hours >= 12) {\r\n value = this._t(\"PM\");\r\n }\r\n else {\r\n value = this._t(\"AM\");\r\n }\r\n break;\r\n case \"aa\":\r\n if (hours >= 12) {\r\n value = this._t(\"P.M.\");\r\n }\r\n else {\r\n value = this._t(\"A.M.\");\r\n }\r\n break;\r\n case \"aaa\":\r\n if (hours >= 12) {\r\n value = this._t(\"P\");\r\n }\r\n else {\r\n value = this._t(\"A\");\r\n }\r\n break;\r\n case \"h\":\r\n value = $utils.get12Hours(hours).toString();\r\n break;\r\n case \"hh\":\r\n value = $utils.padString($utils.get12Hours(hours), 2, \"0\");\r\n break;\r\n case \"H\":\r\n value = hours.toString();\r\n break;\r\n case \"HH\":\r\n value = $utils.padString(hours, 2, \"0\");\r\n break;\r\n case \"K\":\r\n value = $utils.get12Hours(hours, 0).toString();\r\n break;\r\n case \"KK\":\r\n value = $utils.padString($utils.get12Hours(hours, 0), 2, \"0\");\r\n break;\r\n case \"k\":\r\n value = (hours + 1).toString();\r\n break;\r\n case \"kk\":\r\n value = $utils.padString(hours + 1, 2, \"0\");\r\n break;\r\n case \"m\":\r\n value = minutes.toString();\r\n break;\r\n case \"mm\":\r\n value = $utils.padString(minutes, 2, \"0\");\r\n break;\r\n case \"s\":\r\n value = seconds.toString();\r\n break;\r\n case \"ss\":\r\n value = $utils.padString(seconds, 2, \"0\");\r\n break;\r\n case \"S\":\r\n case \"SS\":\r\n case \"SSS\":\r\n value = Math.round((milliseconds / 1000) * Math.pow(10, info.parts[i].length)).toString();\r\n break;\r\n case \"x\":\r\n value = timestamp.toString();\r\n break;\r\n case \"n\":\r\n case \"nn\":\r\n case \"nnn\":\r\n value = $utils.padString(milliseconds, info.parts[i].length, \"0\");\r\n break;\r\n case \"z\":\r\n value = $utils.getTimeZone(date, false, false, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined).replace(/[+-]+[0-9]+$/, \"\");\r\n break;\r\n case \"zz\":\r\n value = $utils.getTimeZone(date, true, false, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined);\r\n break;\r\n case \"zzz\":\r\n value = $utils.getTimeZone(date, false, true, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined).replace(/[+-]+[0-9]+$/, \"\");\r\n break;\r\n case \"zzzz\":\r\n value = $utils.getTimeZone(date, true, true, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined);\r\n break;\r\n case \"Z\":\r\n case \"ZZ\":\r\n let timezone = this._root.utc ? \"UTC\" : this._root.timezone;\r\n if (timezone instanceof Timezone) {\r\n timezone = timezone.name;\r\n }\r\n const offset = timezone ? $utils.getTimezoneOffset(timezone) : date.getTimezoneOffset();\r\n let tz = Math.abs(offset) / 60;\r\n let tzh = Math.floor(tz);\r\n let tzm = tz * 60 - tzh * 60;\r\n if (this._root.utc) {\r\n tzh = 0;\r\n tzm = 0;\r\n }\r\n if (info.parts[i] == \"Z\") {\r\n value = \"GMT\";\r\n value += offset > 0 ? \"-\" : \"+\";\r\n value += $utils.padString(tzh, 2) + \":\" + $utils.padString(tzm, 2);\r\n }\r\n else {\r\n value = offset > 0 ? \"-\" : \"+\";\r\n value += $utils.padString(tzh, 2) + $utils.padString(tzm, 2);\r\n }\r\n break;\r\n case \"i\":\r\n value = date.toISOString();\r\n break;\r\n case \"I\":\r\n value = date.toUTCString();\r\n break;\r\n }\r\n res = res.replace($type.PLACEHOLDER, value);\r\n }\r\n return res;\r\n }\r\n /**\r\n * Parses format into structured infromation.\r\n *\r\n * @param format Format template\r\n */\r\n parseFormat(format) {\r\n // Check cache\r\n // TODO: implement caching of the parsed format\r\n // Init format parse info holder\r\n let info = {\r\n \"template\": \"\",\r\n \"parts\": []\r\n };\r\n // Let TextFormatter split into chunks\r\n let chunks = TextFormatter.chunk(format, true);\r\n for (let i = 0; i < chunks.length; i++) {\r\n let chunk = chunks[i];\r\n if (chunk.type === \"value\") {\r\n // Just \"Date\"?\r\n if (chunk.text.match(/^date$/i)) {\r\n let dateFormat = this.get(\"dateFormat\", \"yyyy-MM-dd\");\r\n if (!$type.isString(dateFormat)) {\r\n dateFormat = \"yyyy-MM-dd\";\r\n }\r\n chunk.text = dateFormat;\r\n }\r\n // Find all possible parts\r\n let matches = chunk.text.match(/G|yyyy|yyy|yy|y|YYYY|YYY|YY|Y|u|q|MMMMM|MMMM|MMM|MM|M|ww|w|W|dd|d|DDD|DD|D|F|g|EEEEE|EEEE|EEE|EE|E|eeeee|eeee|eee|ee|e|aaa|aa|a|hh|h|HH|H|KK|K|kk|k|mm|m|ss|s|SSS|SS|S|A|zzzz|zzz|zz|z|ZZ|Z|t|x|nnn|nn|n|i|I/g);\r\n // Found?\r\n if (matches) {\r\n // Populate template\r\n for (let x = 0; x < matches.length; x++) {\r\n info.parts.push(matches[x]);\r\n chunk.text = chunk.text.replace(matches[x], $type.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n // Apply to template\r\n info.template += chunk.text;\r\n }\r\n // Save cache\r\n // TODO\r\n return info;\r\n }\r\n _months() {\r\n return [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n }\r\n _getMonth(index) {\r\n return this._months()[index];\r\n }\r\n _shortMonths() {\r\n return [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May(short)\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n }\r\n _getShortMonth(index) {\r\n return this._shortMonths()[index];\r\n }\r\n _weekdays() {\r\n return [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\r\n }\r\n _getWeekday(index) {\r\n return this._weekdays()[index];\r\n }\r\n _shortWeekdays() {\r\n return [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\r\n }\r\n _getShortWeekday(index) {\r\n return this._shortWeekdays()[index];\r\n }\r\n parse(source, format) {\r\n // Is it already a Date\r\n if (source instanceof Date) {\r\n return source;\r\n }\r\n // Is it a numeric timestamp\r\n if ($type.isNumber(source)) {\r\n return new Date(source);\r\n }\r\n // Are we parsing a timestamp?\r\n if (format == \"x\") {\r\n return new Date(parseInt(source));\r\n }\r\n // No? Let's check if it's string, and try converting to it if nec\r\n if (!$type.isString(source)) {\r\n source = source.toString();\r\n }\r\n // Init return value\r\n let res;\r\n // Init RegEx for parsing\r\n let reg = \"\";\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // Clip format to length of the source string\r\n format = format.substr(0, source.length);\r\n // Parse format\r\n let info = this.parseFormat(format);\r\n // Init parsed items holder\r\n let parsedIndexes = {\r\n \"year\": -1,\r\n \"year3\": -1,\r\n \"year2\": -1,\r\n \"year1\": -1,\r\n \"month\": -1,\r\n \"monthShort\": -1,\r\n \"monthLong\": -1,\r\n \"weekdayShort\": -1,\r\n \"weekdayLong\": -1,\r\n \"day\": -1,\r\n \"yearDay\": -1,\r\n \"week\": -1,\r\n \"hourBase0\": -1,\r\n \"hour12Base0\": -1,\r\n \"hourBase1\": -1,\r\n \"hour12Base1\": -1,\r\n \"minute\": -1,\r\n \"second\": -1,\r\n \"millisecond\": -1,\r\n \"millisecondDigits\": -1,\r\n \"am\": -1,\r\n \"zone\": -1,\r\n \"timestamp\": -1,\r\n \"iso\": -1\r\n };\r\n // Init values\r\n let resValues = {\r\n \"year\": 1970,\r\n \"month\": 0,\r\n \"day\": 1,\r\n \"hour\": 0,\r\n \"minute\": 0,\r\n \"second\": 0,\r\n \"millisecond\": 0,\r\n \"timestamp\": null,\r\n \"offset\": 0,\r\n \"utc\": this._root.utc\r\n };\r\n // Index adjuster\r\n let indexAdjust = 0;\r\n let index = 0;\r\n // Iterate through all of the parts\r\n for (let i = 0; i < info.parts.length; i++) {\r\n // Set current match index\r\n index = i + indexAdjust + 1;\r\n switch (info.parts[i]) {\r\n case \"yyyy\":\r\n case \"YYYY\":\r\n reg += \"([0-9]{4})\";\r\n parsedIndexes.year = index;\r\n break;\r\n case \"yyy\":\r\n case \"YYY\":\r\n reg += \"([0-9]{3})\";\r\n parsedIndexes.year3 = index;\r\n break;\r\n case \"yy\":\r\n case \"YY\":\r\n reg += \"([0-9]{2})\";\r\n parsedIndexes.year2 = index;\r\n break;\r\n case \"y\":\r\n case \"Y\":\r\n reg += \"([0-9]{1})\";\r\n parsedIndexes.year1 = index;\r\n break;\r\n case \"MMMM\":\r\n reg += \"(\" + this.getStringList(this._months()).join(\"|\") + \")\";\r\n parsedIndexes.monthLong = index;\r\n break;\r\n case \"MMM\":\r\n reg += \"(\" + this.getStringList(this._shortMonths()).join(\"|\") + \")\";\r\n parsedIndexes.monthShort = index;\r\n break;\r\n case \"MM\":\r\n case \"M\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.month = index;\r\n break;\r\n case \"ww\":\r\n case \"w\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.week = index;\r\n break;\r\n case \"dd\":\r\n case \"d\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.day = index;\r\n break;\r\n case \"DDD\":\r\n case \"DD\":\r\n case \"D\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.yearDay = index;\r\n break;\r\n case \"dddd\":\r\n reg += \"(\" + this.getStringList(this._weekdays()).join(\"|\") + \")\";\r\n parsedIndexes.weekdayLong = index;\r\n break;\r\n case \"ddd\":\r\n reg += \"(\" + this.getStringList(this._shortWeekdays()).join(\"|\") + \")\";\r\n parsedIndexes.weekdayShort = index;\r\n break;\r\n case \"aaa\":\r\n case \"aa\":\r\n case \"a\":\r\n // TODO: fix (escape regex)\r\n reg += \"(\" + this.getStringList([\"AM\", \"PM\", \"A\\.M\\.\", \"P\\.M\\.\", \"A\", \"P\"]).join(\"|\") + \")\";\r\n parsedIndexes.am = index;\r\n break;\r\n case \"hh\":\r\n case \"h\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hour12Base1 = index;\r\n break;\r\n case \"HH\":\r\n case \"H\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hourBase0 = index;\r\n break;\r\n case \"KK\":\r\n case \"K\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hour12Base0 = index;\r\n break;\r\n case \"kk\":\r\n case \"k\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hourBase1 = index;\r\n break;\r\n case \"mm\":\r\n case \"m\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.minute = index;\r\n break;\r\n case \"ss\":\r\n case \"s\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.second = index;\r\n break;\r\n case \"SSS\":\r\n case \"SS\":\r\n case \"S\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.millisecond = index;\r\n parsedIndexes.millisecondDigits = info.parts[i].length;\r\n break;\r\n case \"nnn\":\r\n case \"nn\":\r\n case \"n\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.millisecond = index;\r\n break;\r\n case \"x\":\r\n reg += \"([0-9]{1,})\";\r\n parsedIndexes.timestamp = index;\r\n break;\r\n case \"Z\":\r\n reg += \"GMT([-+]+[0-9]{2}:[0-9]{2})\";\r\n parsedIndexes.zone = index;\r\n break;\r\n case \"ZZ\":\r\n reg += \"([\\\\-+]+[0-9]{2}[0-9]{2})\";\r\n parsedIndexes.zone = index;\r\n break;\r\n case \"i\":\r\n reg += \"([0-9]{4})-?([0-9]{2})-?([0-9]{2})T?([0-9]{2}):?([0-9]{2}):?([0-9]{2})\\\\.?([0-9]{0,3})([zZ]|[+\\\\-][0-9]{2}:?[0-9]{2}|$)\";\r\n parsedIndexes.iso = index;\r\n indexAdjust += 7;\r\n break;\r\n case \"G\":\r\n case \"YYYY\":\r\n case \"YYY\":\r\n case \"YY\":\r\n case \"Y\":\r\n case \"MMMMM\":\r\n case \"W\":\r\n case \"EEEEE\":\r\n case \"EEEE\":\r\n case \"EEE\":\r\n case \"EE\":\r\n case \"E\":\r\n case \"eeeee\":\r\n case \"eeee\":\r\n case \"eee\":\r\n case \"ee\":\r\n case \"e\":\r\n case \"zzzz\":\r\n case \"zzz\":\r\n case \"zz\":\r\n case \"z\":\r\n case \"t\":\r\n // Ignore\r\n indexAdjust--;\r\n break;\r\n }\r\n reg += \"[^0-9]*\";\r\n }\r\n // Try matching\r\n let regex = new RegExp(reg);\r\n let matches = source.match(regex);\r\n if (matches) {\r\n // Populate the date object\r\n // Full year\r\n if (parsedIndexes.year > -1) {\r\n resValues.year = parseInt(matches[parsedIndexes.year]);\r\n }\r\n // 3-digit year\r\n if (parsedIndexes.year3 > -1) {\r\n let val = parseInt(matches[parsedIndexes.year3]);\r\n val += 1000;\r\n resValues.year = val;\r\n }\r\n // 2-digit year\r\n if (parsedIndexes.year2 > -1) {\r\n let val = parseInt(matches[parsedIndexes.year2]);\r\n if (val > 50) {\r\n val += 1000;\r\n }\r\n else {\r\n val += 2000;\r\n }\r\n resValues.year = val;\r\n }\r\n // 1-digit year\r\n if (parsedIndexes.year1 > -1) {\r\n let val = parseInt(matches[parsedIndexes.year1]);\r\n val = Math.floor((new Date().getFullYear()) / 10) * 10 + val;\r\n resValues.year = val;\r\n }\r\n // Full month\r\n if (parsedIndexes.monthLong > -1) {\r\n resValues.month = this.resolveMonth(matches[parsedIndexes.monthLong]);\r\n }\r\n // Short month\r\n if (parsedIndexes.monthShort > -1) {\r\n resValues.month = this.resolveShortMonth(matches[parsedIndexes.monthShort]);\r\n }\r\n // Numeric month\r\n if (parsedIndexes.month > -1) {\r\n resValues.month = parseInt(matches[parsedIndexes.month]) - 1;\r\n }\r\n // Weekday\r\n // @todo\r\n // Week\r\n if ((parsedIndexes.week > -1) && (parsedIndexes.day === -1)) {\r\n // We parse weeks ONLY if day is not explicitly set\r\n // TODO: this needs work\r\n // (but maybe later - I can hardly imagine anyone passing their dates in weeks)\r\n resValues.month = 0;\r\n resValues.day = $utils.getDayFromWeek(parseInt(matches[parsedIndexes.week]), resValues.year, 1, this._root.utc);\r\n }\r\n // Day\r\n if (parsedIndexes.day > -1) {\r\n resValues.day = parseInt(matches[parsedIndexes.day]);\r\n }\r\n // Year day\r\n if (parsedIndexes.yearDay > -1) {\r\n resValues.month = 0;\r\n resValues.day = parseInt(matches[parsedIndexes.yearDay]);\r\n }\r\n // 24 Hour (0-23)\r\n if (parsedIndexes.hourBase0 > -1) {\r\n resValues.hour = parseInt(matches[parsedIndexes.hourBase0]);\r\n }\r\n // 24 Hour (1-24)\r\n if (parsedIndexes.hourBase1 > -1) {\r\n resValues.hour = parseInt(matches[parsedIndexes.hourBase1]) - 1;\r\n }\r\n // 12 Hour (0-11)\r\n if (parsedIndexes.hour12Base0 > -1) {\r\n let val = parseInt(matches[parsedIndexes.hour12Base0]);\r\n if (val == 11) {\r\n val = 0;\r\n }\r\n if ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n val += 12;\r\n }\r\n resValues.hour = val;\r\n }\r\n // 12 Hour (1-12)\r\n if (parsedIndexes.hour12Base1 > -1) {\r\n let val = parseInt(matches[parsedIndexes.hour12Base1]);\r\n if (val == 12) {\r\n val = 0;\r\n }\r\n if ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n val += 12;\r\n }\r\n resValues.hour = val;\r\n }\r\n // Minute\r\n if (parsedIndexes.minute > -1) {\r\n resValues.minute = parseInt(matches[parsedIndexes.minute]);\r\n }\r\n // Second\r\n if (parsedIndexes.second > -1) {\r\n resValues.second = parseInt(matches[parsedIndexes.second]);\r\n }\r\n // Millisecond\r\n if (parsedIndexes.millisecond > -1) {\r\n let val = parseInt(matches[parsedIndexes.millisecond]);\r\n if (parsedIndexes.millisecondDigits == 2) {\r\n val *= 10;\r\n }\r\n else if (parsedIndexes.millisecondDigits == 1) {\r\n val *= 100;\r\n }\r\n resValues.millisecond = val;\r\n }\r\n // Timestamp\r\n if (parsedIndexes.timestamp > -1) {\r\n resValues.timestamp = parseInt(matches[parsedIndexes.timestamp]);\r\n const ts = new Date(resValues.timestamp);\r\n resValues.year = ts.getUTCFullYear();\r\n resValues.month = ts.getUTCMonth();\r\n resValues.day = ts.getUTCDate();\r\n resValues.hour = ts.getUTCHours();\r\n resValues.minute = ts.getUTCMinutes();\r\n resValues.second = ts.getUTCSeconds();\r\n resValues.millisecond = ts.getUTCMilliseconds();\r\n }\r\n // Adjust time zone\r\n if (parsedIndexes.zone > -1) {\r\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.zone]);\r\n }\r\n // ISO\r\n if (parsedIndexes.iso > -1) {\r\n resValues.year = $type.toNumber(matches[parsedIndexes.iso + 0]);\r\n resValues.month = $type.toNumber(matches[parsedIndexes.iso + 1]) - 1;\r\n resValues.day = $type.toNumber(matches[parsedIndexes.iso + 2]);\r\n resValues.hour = $type.toNumber(matches[parsedIndexes.iso + 3]);\r\n resValues.minute = $type.toNumber(matches[parsedIndexes.iso + 4]);\r\n resValues.second = $type.toNumber(matches[parsedIndexes.iso + 5]);\r\n resValues.millisecond = $type.toNumber(matches[parsedIndexes.iso + 6]);\r\n if (matches[parsedIndexes.iso + 7] == \"Z\" || matches[parsedIndexes.iso + 7] == \"z\") {\r\n resValues.utc = true;\r\n }\r\n else if (matches[parsedIndexes.iso + 7] != \"\") {\r\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.iso + 7]);\r\n }\r\n }\r\n // Create Date object\r\n if (resValues.utc) {\r\n res = new Date(Date.UTC(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute, resValues.second, resValues.millisecond));\r\n }\r\n else {\r\n res = new Date(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute + resValues.offset, resValues.second, resValues.millisecond);\r\n }\r\n }\r\n else {\r\n // Didn't match anything\r\n // Let's try dropping it into Date constructor and hope for the best\r\n res = new Date(source);\r\n }\r\n return res;\r\n }\r\n resolveTimezoneOffset(date, zone) {\r\n let value = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\r\n if (value) {\r\n let match = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\r\n let dir = match[1];\r\n let hour = match[2];\r\n let minute = match[3];\r\n let offset = parseInt(hour) * 60 + parseInt(minute);\r\n // Adjust offset\r\n // Making it negative does not seem to make sense, but it's right\r\n // because of how JavaScript calculates GMT offsets\r\n if (dir == \"+\") {\r\n offset *= -1;\r\n }\r\n // Check the difference in offset\r\n let originalOffset = (date || new Date()).getTimezoneOffset();\r\n let diff = offset - originalOffset;\r\n return diff;\r\n }\r\n return 0;\r\n }\r\n /**\r\n * Resolves month name (i.e. \"December\") into a month number (11).\r\n *\r\n * @param value Month name\r\n * @return Month number\r\n */\r\n resolveMonth(value) {\r\n // Let's try English first\r\n let month = this._months().indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Try the translation\r\n if (!this._root.language.isDefault()) {\r\n month = this._root.language.translateAll(this._months()).indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n }\r\n return 0;\r\n }\r\n /**\r\n * Resolves short month name (i.e. \"Dec\") into a month number.\r\n *\r\n * @param value Short month name\r\n * @return Month number\r\n */\r\n resolveShortMonth(value) {\r\n // Let's try English first\r\n let month = this._shortMonths().indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Maybe long month (workaround for May)\r\n month = this._months().indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Try the translation\r\n if (this._root.language && !this._root.language.isDefault()) {\r\n month = this._root.language.translateAll(this._shortMonths()).indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n }\r\n return 0;\r\n }\r\n /**\r\n * Checks if passed in string represents AM/PM notation in many of its\r\n * versions.\r\n *\r\n * @param value Source string\r\n * @return Is it AM/PM?\r\n */\r\n isAm(value) {\r\n let list = this.getStringList([\"AM\", \"A.M.\", \"A\"]);\r\n return list.indexOf(value.toUpperCase()) > -1;\r\n }\r\n /**\r\n * Translates list of strings.\r\n *\r\n * @param list Source strings\r\n * @return Translated strings\r\n */\r\n getStringList(list) {\r\n let res = [];\r\n for (let i = 0; i < list.length; i++) {\r\n // translate?\r\n if (this._root.language) {\r\n res.push($utils.escapeForRgex(this._t(list[i])));\r\n }\r\n else {\r\n res.push($utils.escapeForRgex(list[i]));\r\n }\r\n }\r\n return res;\r\n }\r\n}\r\n","import { Entity } from \"./Entity\";\r\nimport { TextFormatter } from \"./TextFormatter\";\r\nimport * as $object from \"./Object\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * A class used to format numberic values as time duration.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-durations/} for more info\r\n */\r\nexport class DurationFormatter extends Entity {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * Collection of aliases for units.\r\n */\r\n Object.defineProperty(this, \"_unitAliases\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {\r\n \"Y\": \"y\",\r\n \"D\": \"d\",\r\n \"H\": \"h\",\r\n \"K\": \"h\",\r\n \"k\": \"h\",\r\n \"n\": \"S\"\r\n }\r\n });\r\n }\r\n _setDefaults() {\r\n const dmillisecond = \"_duration_millisecond\";\r\n const dsecond = \"_duration_second\";\r\n const dminute = \"_duration_minute\";\r\n const dhour = \"_duration_hour\";\r\n const dday = \"_duration_day\";\r\n const dweek = \"_duration_week\";\r\n const dmonth = \"_duration_month\";\r\n const dyear = \"_duration_year\";\r\n const asecond = \"_second\";\r\n const aminute = \"_minute\";\r\n const ahour = \"_hour\";\r\n const aday = \"_day\";\r\n const aweek = \"_week\";\r\n const amonth = \"_week\";\r\n const ayear = \"_year\";\r\n // Defaults\r\n this._setDefault(\"negativeBase\", 0);\r\n this._setDefault(\"baseUnit\", \"second\");\r\n this._setDefault(\"durationFormats\", {\r\n \"millisecond\": {\r\n \"millisecond\": this._t(dmillisecond),\r\n \"second\": this._t((dmillisecond + asecond)),\r\n \"minute\": this._t((dmillisecond + aminute)),\r\n \"hour\": this._t((dmillisecond + ahour)),\r\n \"day\": this._t((dmillisecond + aday)),\r\n \"week\": this._t((dmillisecond + aweek)),\r\n \"month\": this._t((dmillisecond + amonth)),\r\n \"year\": this._t((dmillisecond + ayear))\r\n },\r\n \"second\": {\r\n \"second\": this._t((dsecond)),\r\n \"minute\": this._t((dsecond + aminute)),\r\n \"hour\": this._t((dsecond + ahour)),\r\n \"day\": this._t((dsecond + aday)),\r\n \"week\": this._t((dsecond + aweek)),\r\n \"month\": this._t((dsecond + amonth)),\r\n \"year\": this._t((dsecond + ayear))\r\n },\r\n \"minute\": {\r\n \"minute\": this._t((dminute)),\r\n \"hour\": this._t((dminute + ahour)),\r\n \"day\": this._t((dminute + aday)),\r\n \"week\": this._t((dminute + aweek)),\r\n \"month\": this._t((dminute + amonth)),\r\n \"year\": this._t((dminute + ayear))\r\n },\r\n \"hour\": {\r\n \"hour\": this._t((dhour)),\r\n \"day\": this._t((dhour + aday)),\r\n \"week\": this._t((dhour + aweek)),\r\n \"month\": this._t((dhour + amonth)),\r\n \"year\": this._t((dhour + ayear))\r\n },\r\n \"day\": {\r\n \"day\": this._t((dday)),\r\n \"week\": this._t((dday + aweek)),\r\n \"month\": this._t((dday + amonth)),\r\n \"year\": this._t((dday + ayear))\r\n },\r\n \"week\": {\r\n \"week\": this._t((dweek)),\r\n \"month\": this._t((dweek + amonth)),\r\n \"year\": this._t((dweek + ayear))\r\n },\r\n \"month\": {\r\n \"month\": this._t((dmonth)),\r\n \"year\": this._t((dmonth + ayear))\r\n },\r\n \"year\": {\r\n \"year\": this._t(dyear)\r\n }\r\n });\r\n super._setDefaults();\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n }\r\n /**\r\n * Formats the number as duration.\r\n *\r\n * For example `1000` (base unit seconds) would be converted to `16:40` as in\r\n * 16 minutes and 40 seconds.\r\n *\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @param base Override base unit\r\n * @return Formatted number\r\n */\r\n format(value, format, base) {\r\n // no base unit?\r\n let baseUnit = base || this.get(\"baseUnit\");\r\n // no format passed in or empty\r\n if (typeof format === \"undefined\" || format === \"\") {\r\n if (this.get(\"durationFormat\") != null) {\r\n format = this.get(\"durationFormat\");\r\n }\r\n else {\r\n format = this.getFormat($type.toNumber(value), undefined, baseUnit);\r\n }\r\n }\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // get format info (it will also deal with parser caching)\r\n let info = this.parseFormat(format, baseUnit);\r\n // cast to number just in case\r\n // TODO: maybe use better casting\r\n let source = Number(value);\r\n // format and replace the number\r\n let details;\r\n if (source > this.get(\"negativeBase\")) {\r\n details = info.positive;\r\n }\r\n else if (source < this.get(\"negativeBase\")) {\r\n details = info.negative;\r\n }\r\n else {\r\n details = info.zero;\r\n }\r\n // Format\r\n let formatted = this.applyFormat(source, details);\r\n // Apply color?\r\n if (details.color !== \"\") {\r\n formatted = \"[\" + details.color + \"]\" + formatted + \"[/]\";\r\n }\r\n return formatted;\r\n }\r\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param base Override base unit\r\n * @return Parsed information\r\n */\r\n parseFormat(format, base) {\r\n // Check cache\r\n // TODO\r\n // let cached = this.getCache(format);\r\n // if (cached != null) {\r\n // \treturn cached;\r\n // }\r\n // no base unit?\r\n let baseUnit = base || this.get(\"baseUnit\");\r\n // Initialize duration parsing info\r\n let info = {\r\n \"positive\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n },\r\n \"negative\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n },\r\n \"zero\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n }\r\n };\r\n // Escape double vertical bars (that mean display one vertical bar)\r\n format = format.replace(\"||\", $type.PLACEHOLDER2);\r\n // Split it up and deal with different formats\r\n let parts = format.split(\"|\");\r\n info.positive.source = parts[0];\r\n if (typeof parts[2] === \"undefined\") {\r\n info.zero = info.positive;\r\n }\r\n else {\r\n info.zero.source = parts[2];\r\n }\r\n if (typeof parts[1] === \"undefined\") {\r\n info.negative = info.positive;\r\n }\r\n else {\r\n info.negative.source = parts[1];\r\n }\r\n // Parse each\r\n $object.each(info, (_part, item) => {\r\n // Already parsed\r\n if (item.parsed) {\r\n return;\r\n }\r\n // Check cached\r\n // TODO\r\n // if (typeof this.getCache(item.source) !== \"undefined\") {\r\n // \tinfo[part] = this.getCache(item.source);\r\n // \treturn;\r\n // }\r\n // Begin parsing\r\n let partFormat = item.source;\r\n // Check for [] directives\r\n let dirs = [];\r\n dirs = item.source.match(/^\\[([^\\]]*)\\]/);\r\n if (dirs && dirs.length && dirs[0] !== \"\") {\r\n partFormat = item.source.substr(dirs[0].length);\r\n item.color = dirs[1];\r\n }\r\n // Let TextFormatter split into chunks\r\n let chunks = TextFormatter.chunk(partFormat, true);\r\n for (let i = 0; i < chunks.length; i++) {\r\n let chunk = chunks[i];\r\n // replace back double vertical bar\r\n chunk.text = chunk.text.replace($type.PLACEHOLDER2, \"|\");\r\n if (chunk.type === \"value\") {\r\n // Just \"Duration\"?\r\n // if (chunk.text.toLowerCase() === \"duration\") {\r\n // \tchunk.text = durationFormat;\r\n // }\r\n // Check for \"a\" (absolute) modifier\r\n if (chunk.text.match(/[yYMdDwhHKkmsSn]+a/)) {\r\n item.absolute = true;\r\n chunk.text = chunk.text.replace(/([yYMdDwhHKkmsSn]+)a/, \"$1\");\r\n }\r\n // Find all possible parts\r\n let matches = chunk.text.match(/y+|Y+|M+|d+|D+|w+|h+|H+|K+|k+|m+|s+|S+|n+/g);\r\n if (matches) {\r\n // Populate template\r\n for (let x = 0; x < matches.length; x++) {\r\n // Is it an alias?\r\n if (matches[x] == null) {\r\n matches[x] = this._unitAliases[matches[x]];\r\n }\r\n item.parts.push(matches[x]);\r\n chunk.text = chunk.text.replace(matches[x], $type.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n // Apply to template\r\n item.template += chunk.text;\r\n }\r\n // Apply style formatting\r\n //item.template = TextFormatter.format(item.template, this.outputFormat);\r\n // Save cache\r\n // TODO\r\n //this.setCache(item.source, item);\r\n // Mark this as parsed\r\n item.parsed = true;\r\n });\r\n // Save cache (the whole thing)\r\n // TODO\r\n //this.setCache(format, info);\r\n return info;\r\n }\r\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by {parseFormat}\r\n * @return Formatted duration\r\n */\r\n applyFormat(value, details) {\r\n // Use absolute values\r\n let negative = !details.absolute && (value < this.get(\"negativeBase\"));\r\n value = Math.abs(value);\r\n // Recalculate to milliseconds\r\n let tstamp = this.toTimeStamp(value, details.baseUnit);\r\n // Init return value\r\n let res = details.template;\r\n // Iterate through duration parts\r\n for (let i = 0, len = details.parts.length; i < len; i++) {\r\n // Gather the part\r\n let part = details.parts[i];\r\n let unit = this._toTimeUnit(part.substr(0, 1));\r\n let digits = part.length;\r\n // Calculate current unit value\r\n let ints = Math.floor(tstamp / this._getUnitValue(unit));\r\n res = res.replace($type.PLACEHOLDER, $utils.padString(ints, digits, \"0\"));\r\n // Reduce timestamp\r\n tstamp -= ints * this._getUnitValue(unit);\r\n }\r\n // Reapply negative sign\r\n if (negative) {\r\n res = \"-\" + res;\r\n }\r\n return res;\r\n }\r\n /**\r\n * Converts numeric value to timestamp in milliseconds.\r\n *\r\n * @param value A source value\r\n * @param baseUnit Base unit the source value is in: \"q\", \"s\", \"i\", \"h\", \"d\", \"w\", \"m\", \"y\"\r\n * @return Value representation as a timestamp in milliseconds\r\n */\r\n toTimeStamp(value, baseUnit) {\r\n return value * this._getUnitValue(baseUnit);\r\n }\r\n _toTimeUnit(code) {\r\n switch (code) {\r\n case \"S\":\r\n return \"millisecond\";\r\n case \"s\":\r\n return \"second\";\r\n case \"m\":\r\n return \"minute\";\r\n case \"h\":\r\n return \"hour\";\r\n case \"d\":\r\n return \"day\";\r\n case \"w\":\r\n return \"week\";\r\n case \"M\":\r\n return \"month\";\r\n case \"y\":\r\n return \"year\";\r\n }\r\n ;\r\n }\r\n /**\r\n * Returns appropriate default format for the value.\r\n *\r\n * If `maxValue` is sepcified, it will use that value to determine the time\r\n * unit for the format.\r\n *\r\n * For example if your `baseUnit` is `\"second\"` and you pass in `10`, you\r\n * will get `\"10\"`.\r\n *\r\n * However, you might want it to be formatted in the context of bigger scale,\r\n * say 10 minutes (600 seconds). If you pass in `600` as `maxValue`, all\r\n * values, including small ones will use format with minutes, e.g.:\r\n * `00:10`, `00:50`, `12: 30`, etc.\r\n *\r\n * @param value Value to format\r\n * @param maxValue Maximum value to be used to determine format\r\n * @param baseUnit Base unit of the value\r\n * @return Format\r\n */\r\n getFormat(value, maxValue, baseUnit) {\r\n // Is format override set?\r\n if (this.get(\"durationFormat\") != null) {\r\n return this.get(\"durationFormat\");\r\n }\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.get(\"baseUnit\");\r\n }\r\n if (maxValue != null && value != maxValue) {\r\n value = Math.abs(value);\r\n maxValue = Math.abs(maxValue);\r\n let maxUnit = this.getValueUnit(Math.max(value, maxValue), baseUnit);\r\n return this.get(\"durationFormats\")[baseUnit][maxUnit];\r\n }\r\n else {\r\n let unit = this.getValueUnit(value, baseUnit);\r\n return this.get(\"durationFormats\")[baseUnit][unit];\r\n }\r\n }\r\n /**\r\n * Returns value's closest denominator time unit, e.g 100 seconds is\r\n * `\"minute\"`, while 59 seconds would still be `second`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Denominator\r\n */\r\n getValueUnit(value, baseUnit) {\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.get(\"baseUnit\");\r\n }\r\n // Convert to milliseconds\r\n let currentUnit;\r\n let ms = this.getMilliseconds(value, baseUnit);\r\n $object.eachContinue(this._getUnitValues(), (key, val) => {\r\n if (key == baseUnit || currentUnit) {\r\n let num = ms / val;\r\n if (num <= 1) {\r\n if (!currentUnit) {\r\n currentUnit = key;\r\n }\r\n return false;\r\n }\r\n currentUnit = key;\r\n }\r\n return true;\r\n });\r\n return currentUnit;\r\n }\r\n /**\r\n * Converts value to milliseconds according to `baseUnit`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Value in milliseconds\r\n */\r\n getMilliseconds(value, baseUnit) {\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.get(\"baseUnit\");\r\n }\r\n return value * this._getUnitValue(baseUnit);\r\n }\r\n _getUnitValue(timeUnit) {\r\n return this._getUnitValues()[timeUnit];\r\n }\r\n _getUnitValues() {\r\n return {\r\n \"millisecond\": 1,\r\n \"second\": 1000,\r\n \"minute\": 60000,\r\n \"hour\": 3600000,\r\n \"day\": 86400000,\r\n \"week\": 604800000,\r\n \"month\": 2592000000,\r\n \"year\": 31536000000,\r\n };\r\n }\r\n}\r\n","/**\r\n * amCharts 5 locale\r\n *\r\n * Locale: en\r\n * Language: International English\r\n * Author: Martynas Majeris\r\n *\r\n * Follow instructions in [on this page](https://www.amcharts.com/docs/v5/tutorials/creating-translations/) to make corrections or add new translations.\r\n *\r\n * ---\r\n * Edit but leave the header section above this line. You can remove any\r\n * subsequent comment sections.\r\n * ---\r\n *\r\n * Use this file as a template to create translations. Leave the key part in\r\n * English intact. Fill the value with a translation.\r\n *\r\n * Empty string means no translation, so default \"International English\"\r\n * will be used.\r\n *\r\n * If you need the translation to literally be an empty string, use `null`\r\n * instead.\r\n *\r\n * IMPORTANT:\r\n * When translating make good effort to keep the translation length\r\n * at least the same chartcount as the English, especially for short prompts.\r\n *\r\n * Having significantly longer prompts may distort the actual charts.\r\n *\r\n * NOTE:\r\n * Some prompts - like months or weekdays - come in two versions: full and\r\n * shortened.\r\n *\r\n * If there's no official shortened version of these in your language, and it\r\n * would not be possible to invent such short versions that don't seem weird\r\n * to native speakers of that language, fill those with the same as full\r\n * version.\r\n *\r\n * PLACEHOLDERS:\r\n * Some prompts have placeholders like \"%1\". Those will be replaced by actual\r\n * values during translation and should be retained in the translated prompts.\r\n *\r\n * Placeholder positions may be changed to better suit structure of the\r\n * sentence.\r\n *\r\n * For example \"From %1 to %2\", when actually used will replace \"%1\" with an\r\n * actual value representing range start, and \"%2\" will be replaced by end\r\n * value.\r\n *\r\n * E.g. in a Scrollbar for Value axis \"From %1 to %2\" will become\r\n * \"From 100 to 200\". You may translate \"From\" and \"to\", as well as re-arrange\r\n * the order of the prompt itself, but make sure the \"%1\" and \"%2\" remain, in\r\n * places where they will make sense.\r\n *\r\n * Save the file as language_LOCALE, i.e. `en_GB.ts`, `fr_FR.ts`, etc.\r\n */\r\nexport default {\r\n \"firstDayOfWeek\": 1,\r\n // Number formatting options.\r\n // \r\n // Please check with the local standards which separator is accepted to be\r\n // used for separating decimals, and which for thousands.\r\n \"_decimalSeparator\": \".\",\r\n \"_thousandSeparator\": \",\",\r\n // Position of the percent sign in numbers\r\n \"_percentPrefix\": null,\r\n \"_percentSuffix\": \"%\",\r\n // Suffixes for numbers\r\n // When formatting numbers, big or small numers might be reformatted to\r\n // shorter version, by applying a suffix.\r\n // \r\n // For example, 1000000 might become \"1m\".\r\n // Or 1024 might become \"1KB\" if we're formatting byte numbers.\r\n // \r\n // This section defines such suffixes for all such cases.\r\n \"_big_number_suffix_3\": \"k\",\r\n \"_big_number_suffix_6\": \"M\",\r\n \"_big_number_suffix_9\": \"G\",\r\n \"_big_number_suffix_12\": \"T\",\r\n \"_big_number_suffix_15\": \"P\",\r\n \"_big_number_suffix_18\": \"E\",\r\n \"_big_number_suffix_21\": \"Z\",\r\n \"_big_number_suffix_24\": \"Y\",\r\n \"_small_number_suffix_3\": \"m\",\r\n \"_small_number_suffix_6\": \"μ\",\r\n \"_small_number_suffix_9\": \"n\",\r\n \"_small_number_suffix_12\": \"p\",\r\n \"_small_number_suffix_15\": \"f\",\r\n \"_small_number_suffix_18\": \"a\",\r\n \"_small_number_suffix_21\": \"z\",\r\n \"_small_number_suffix_24\": \"y\",\r\n \"_byte_suffix_B\": \"B\",\r\n \"_byte_suffix_KB\": \"KB\",\r\n \"_byte_suffix_MB\": \"MB\",\r\n \"_byte_suffix_GB\": \"GB\",\r\n \"_byte_suffix_TB\": \"TB\",\r\n \"_byte_suffix_PB\": \"PB\",\r\n // Default date formats for various periods.\r\n // \r\n // This should reflect official or de facto formatting universally accepted\r\n // in the country translation is being made for\r\n // Available format codes here:\r\n // https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/#Format_codes\r\n // \r\n // This will be used when formatting date/time for particular granularity,\r\n // e.g. \"_date_hour\" will be shown whenever we need to show time as hours.\r\n // \r\n // \"date\" is used as in default date format when showing standalone dates.\r\n \"_date\": \"yyyy-MM-dd\",\r\n \"_date_millisecond\": \"mm:ss SSS\",\r\n \"_date_millisecond_full\": \"HH:mm:ss SSS\",\r\n \"_date_second\": \"HH:mm:ss\",\r\n \"_date_second_full\": \"HH:mm:ss\",\r\n \"_date_minute\": \"HH:mm\",\r\n \"_date_minute_full\": \"HH:mm - MMM dd, yyyy\",\r\n \"_date_hour\": \"HH:mm\",\r\n \"_date_hour_full\": \"HH:mm - MMM dd, yyyy\",\r\n \"_date_day\": \"MMM dd\",\r\n \"_date_day_full\": \"MMM dd, yyyy\",\r\n \"_date_week\": \"ww\",\r\n \"_date_week_full\": \"MMM dd, yyyy\",\r\n \"_date_month\": \"MMM\",\r\n \"_date_month_full\": \"MMM, yyyy\",\r\n \"_date_year\": \"yyyy\",\r\n // Default duration formats for various base units.\r\n // \r\n // This will be used by DurationFormatter to format numeric values into\r\n // duration.\r\n // \r\n // Notice how each duration unit comes in several versions. This is to ensure\r\n // that each base unit is shown correctly.\r\n // \r\n // For example, if we have baseUnit set to \"second\", meaning our duration is\r\n // in seconds.\r\n // \r\n // If we pass in `50` to formatter, it will know that we have just 50 seconds\r\n // (less than a minute) so it will use format in `\"_duration_second\"` (\"ss\"),\r\n // and the formatted result will be in like `\"50\"`.\r\n // \r\n // If we pass in `70`, which is more than a minute, the formatter will switch\r\n // to `\"_duration_second_minute\"` (\"mm:ss\"), resulting in \"01:10\" formatted\r\n // text.\r\n // \r\n // Available codes here:\r\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/#Available_Codes\r\n \"_duration_millisecond\": \"SSS\",\r\n \"_duration_millisecond_second\": \"ss.SSS\",\r\n \"_duration_millisecond_minute\": \"mm:ss SSS\",\r\n \"_duration_millisecond_hour\": \"hh:mm:ss SSS\",\r\n \"_duration_millisecond_day\": \"d'd' mm:ss SSS\",\r\n \"_duration_millisecond_week\": \"d'd' mm:ss SSS\",\r\n \"_duration_millisecond_month\": \"M'm' dd'd' mm:ss SSS\",\r\n \"_duration_millisecond_year\": \"y'y' MM'm' dd'd' mm:ss SSS\",\r\n \"_duration_second\": \"ss\",\r\n \"_duration_second_minute\": \"mm:ss\",\r\n \"_duration_second_hour\": \"hh:mm:ss\",\r\n \"_duration_second_day\": \"d'd' hh:mm:ss\",\r\n \"_duration_second_week\": \"d'd' hh:mm:ss\",\r\n \"_duration_second_month\": \"M'm' dd'd' hh:mm:ss\",\r\n \"_duration_second_year\": \"y'y' MM'm' dd'd' hh:mm:ss\",\r\n \"_duration_minute\": \"mm\",\r\n \"_duration_minute_hour\": \"hh:mm\",\r\n \"_duration_minute_day\": \"d'd' hh:mm\",\r\n \"_duration_minute_week\": \"d'd' hh:mm\",\r\n \"_duration_minute_month\": \"M'm' dd'd' hh:mm\",\r\n \"_duration_minute_year\": \"y'y' MM'm' dd'd' hh:mm\",\r\n \"_duration_hour\": \"hh'h'\",\r\n \"_duration_hour_day\": \"d'd' hh'h'\",\r\n \"_duration_hour_week\": \"d'd' hh'h'\",\r\n \"_duration_hour_month\": \"M'm' dd'd' hh'h'\",\r\n \"_duration_hour_year\": \"y'y' MM'm' dd'd' hh'h'\",\r\n \"_duration_day\": \"d'd'\",\r\n \"_duration_day_week\": \"d'd'\",\r\n \"_duration_day_month\": \"M'm' dd'd'\",\r\n \"_duration_day_year\": \"y'y' MM'm' dd'd'\",\r\n \"_duration_week\": \"w'w'\",\r\n \"_duration_week_month\": \"w'w'\",\r\n \"_duration_week_year\": \"w'w'\",\r\n \"_duration_month\": \"M'm'\",\r\n \"_duration_month_year\": \"y'y' MM'm'\",\r\n \"_duration_year\": \"y'y'\",\r\n // Era translations\r\n \"_era_ad\": \"AD\",\r\n \"_era_bc\": \"BC\",\r\n // Day part, used in 12-hour formats, e.g. 5 P.M.\r\n // Please note that these come in 3 variants:\r\n // * one letter (e.g. \"A\")\r\n // * two letters (e.g. \"AM\")\r\n // * two letters with dots (e.g. \"A.M.\")\r\n // \r\n // All three need to to be translated even if they are all the same. Some\r\n // users might use one, some the other.\r\n \"A\": \"\",\r\n \"P\": \"\",\r\n \"AM\": \"\",\r\n \"PM\": \"\",\r\n \"A.M.\": \"\",\r\n \"P.M.\": \"\",\r\n // Date-related stuff.\r\n // \r\n // When translating months, if there's a difference, use the form which is\r\n // best for a full date, e.g. as you would use it in \"2018 January 1\".\r\n // \r\n // Note that May is listed twice. This is because in English May is the same\r\n // in both long and short forms, while in other languages it may not be the\r\n // case. Translate \"May\" to full word, while \"May(short)\" to shortened\r\n // version.\r\n // \r\n // Should month names and weekdays be capitalized or not?\r\n // \r\n // Rule of thumb is this: if the names should always be capitalized,\r\n // regardless of name position within date (\"January\", \"21st January 2018\",\r\n // etc.) use capitalized names. Otherwise enter all lowercase.\r\n // \r\n // The date formatter will automatically capitalize names if they are the\r\n // first (or only) word in resulting date.\r\n \"January\": \"\",\r\n \"February\": \"\",\r\n \"March\": \"\",\r\n \"April\": \"\",\r\n \"May\": \"\",\r\n \"June\": \"\",\r\n \"July\": \"\",\r\n \"August\": \"\",\r\n \"September\": \"\",\r\n \"October\": \"\",\r\n \"November\": \"\",\r\n \"December\": \"\",\r\n \"Jan\": \"\",\r\n \"Feb\": \"\",\r\n \"Mar\": \"\",\r\n \"Apr\": \"\",\r\n \"May(short)\": \"May\",\r\n \"Jun\": \"\",\r\n \"Jul\": \"\",\r\n \"Aug\": \"\",\r\n \"Sep\": \"\",\r\n \"Oct\": \"\",\r\n \"Nov\": \"\",\r\n \"Dec\": \"\",\r\n // Weekdays.\r\n \"Sunday\": \"\",\r\n \"Monday\": \"\",\r\n \"Tuesday\": \"\",\r\n \"Wednesday\": \"\",\r\n \"Thursday\": \"\",\r\n \"Friday\": \"\",\r\n \"Saturday\": \"\",\r\n \"Sun\": \"\",\r\n \"Mon\": \"\",\r\n \"Tue\": \"\",\r\n \"Wed\": \"\",\r\n \"Thu\": \"\",\r\n \"Fri\": \"\",\r\n \"Sat\": \"\",\r\n // Date ordinal function.\r\n // \r\n // This is used when adding number ordinal when formatting days in dates.\r\n // \r\n // E.g. \"January 1st\", \"February 2nd\".\r\n // \r\n // The function accepts day number, and returns a string to be added to the\r\n // day, like in default English translation, if we pass in 2, we will receive\r\n // \"nd\" back.\r\n \"_dateOrd\": function (day) {\r\n let res = \"th\";\r\n if ((day < 11) || (day > 13)) {\r\n switch (day % 10) {\r\n case 1:\r\n res = \"st\";\r\n break;\r\n case 2:\r\n res = \"nd\";\r\n break;\r\n case 3:\r\n res = \"rd\";\r\n break;\r\n }\r\n }\r\n return res;\r\n },\r\n // Various chart controls.\r\n // Shown as a tooltip on zoom out button.\r\n \"Zoom Out\": \"\",\r\n // Timeline buttons\r\n \"Play\": \"\",\r\n \"Stop\": \"\",\r\n // Chart's Legend screen reader title.\r\n \"Legend\": \"\",\r\n // Legend's item screen reader indicator.\r\n \"Press ENTER to toggle\": \"\",\r\n // Shown when the chart is busy loading something.\r\n \"Loading\": \"\",\r\n // Shown as the first button in the breadcrumb navigation, e.g.:\r\n // Home > First level > ...\r\n \"Home\": \"\",\r\n // Chart types.\r\n // Those are used as default screen reader titles for the main chart element\r\n // unless developer has set some more descriptive title.\r\n \"Chart\": \"\",\r\n \"Serial chart\": \"\",\r\n \"X/Y chart\": \"\",\r\n \"Pie chart\": \"\",\r\n \"Gauge chart\": \"\",\r\n \"Radar chart\": \"\",\r\n \"Sankey diagram\": \"\",\r\n \"Flow diagram\": \"\",\r\n \"Chord diagram\": \"\",\r\n \"TreeMap chart\": \"\",\r\n \"Force directed tree\": \"\",\r\n \"Sliced chart\": \"\",\r\n // Series types.\r\n // Used to name series by type for screen readers if they do not have their\r\n // name set.\r\n \"Series\": \"\",\r\n \"Candlestick Series\": \"\",\r\n \"OHLC Series\": \"\",\r\n \"Column Series\": \"\",\r\n \"Line Series\": \"\",\r\n \"Pie Slice Series\": \"\",\r\n \"Funnel Series\": \"\",\r\n \"Pyramid Series\": \"\",\r\n \"X/Y Series\": \"\",\r\n // Map-related stuff.\r\n \"Map\": \"\",\r\n \"Press ENTER to zoom in\": \"\",\r\n \"Press ENTER to zoom out\": \"\",\r\n \"Use arrow keys to zoom in and out\": \"\",\r\n \"Use plus and minus keys on your keyboard to zoom in and out\": \"\",\r\n // Export-related stuff.\r\n // These prompts are used in Export menu labels.\r\n // \r\n // \"Export\" is the top-level menu item.\r\n // \r\n // \"Image\", \"Data\", \"Print\" as second-level indicating type of export\r\n // operation.\r\n // \r\n // Leave actual format untranslated, unless you absolutely know that they\r\n // would convey more meaning in some other way.\r\n \"Export\": \"\",\r\n \"Image\": \"\",\r\n \"Data\": \"\",\r\n \"Print\": \"\",\r\n \"Press ENTER or use arrow keys to navigate\": \"\",\r\n \"Press ENTER to open\": \"\",\r\n \"Press ENTER to print.\": \"\",\r\n \"Press ENTER to export as %1.\": \"\",\r\n \"(Press ESC to close this message)\": \"\",\r\n \"Image Export Complete\": \"\",\r\n \"Export operation took longer than expected. Something might have gone wrong.\": \"\",\r\n \"Saved from\": \"\",\r\n \"PNG\": \"\",\r\n \"JPG\": \"\",\r\n \"GIF\": \"\",\r\n \"SVG\": \"\",\r\n \"PDF\": \"\",\r\n \"JSON\": \"\",\r\n \"CSV\": \"\",\r\n \"XLSX\": \"\",\r\n \"HTML\": \"\",\r\n // Scrollbar-related stuff.\r\n // \r\n // Scrollbar is a control which can zoom and pan the axes on the chart.\r\n // \r\n // Each scrollbar has two grips: left or right (for horizontal scrollbar) or\r\n // upper and lower (for vertical one).\r\n // \r\n // Prompts change in relation to whether Scrollbar is vertical or horizontal.\r\n // \r\n // The final section is used to indicate the current range of selection.\r\n \"Use TAB to select grip buttons or left and right arrows to change selection\": \"\",\r\n \"Use left and right arrows to move selection\": \"\",\r\n \"Use left and right arrows to move left selection\": \"\",\r\n \"Use left and right arrows to move right selection\": \"\",\r\n \"Use TAB select grip buttons or up and down arrows to change selection\": \"\",\r\n \"Use up and down arrows to move selection\": \"\",\r\n \"Use up and down arrows to move lower selection\": \"\",\r\n \"Use up and down arrows to move upper selection\": \"\",\r\n \"From %1 to %2\": \"\",\r\n \"From %1\": \"\",\r\n \"To %1\": \"\",\r\n // Data loader-related.\r\n \"No parser available for file: %1\": \"\",\r\n \"Error parsing file: %1\": \"\",\r\n \"Unable to load file: %1\": \"\",\r\n \"Invalid date\": \"\",\r\n // Common actions\r\n \"Close\": \"\",\r\n \"Minimize\": \"\"\r\n};\r\n","import { Entity } from \"./Entity\";\r\nimport * as $array from \"./Array\";\r\nimport * as $object from \"./Object\";\r\nimport en from \"../../../locales/en\";\r\n;\r\n/**\r\n * Add localization functionality.\r\n */\r\nexport class Language extends Entity {\r\n _setDefaults() {\r\n this.setPrivate(\"defaultLocale\", en);\r\n super._setDefaults();\r\n }\r\n /**\r\n * Returns a prompt translation.\r\n *\r\n * @param prompt Prompt to translate\r\n * @param locale Target locale\r\n * @param ...rest Parameters\r\n * @return Translation\r\n */\r\n translate(prompt, locale, ...rest) {\r\n // Get langauge\r\n if (!locale) {\r\n locale = this._root.locale || this.getPrivate(\"defaultLocale\");\r\n }\r\n // Init translation\r\n let translation = prompt;\r\n let value = locale[prompt];\r\n // Try to look for the translation\r\n if (value === null) {\r\n translation = \"\";\r\n }\r\n else if (value != null) {\r\n // It might be an empty string\r\n if (value) {\r\n translation = value;\r\n }\r\n }\r\n else if (locale !== this.getPrivate(\"defaultLocale\")) {\r\n // Try to look in default language\r\n return this.translate(prompt, this.getPrivate(\"defaultLocale\"), ...rest);\r\n }\r\n // Replace %1, %2, etc params\r\n if (rest.length) {\r\n for (let len = rest.length, i = 0; i < len; ++i) {\r\n translation = translation.split(\"%\" + (i + 1)).join(rest[i]);\r\n }\r\n }\r\n // Return the translation\r\n return translation;\r\n }\r\n /**\r\n * Returns a prompt translation, including custom prompts.\r\n *\r\n * @param prompt Prompt to translate\r\n * @param locale Target locale\r\n * @param ...rest Parameters\r\n * @return Translation\r\n */\r\n translateAny(prompt, locale, ...rest) {\r\n return this.translate(prompt, locale, ...rest);\r\n }\r\n /**\r\n * Add a custom prompt to locale.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/creating-translations/#Extending_locale_with_custom_prompts}\r\n * @param prompt Source prompt\r\n * @param translation Tanslation\r\n * @param locale Target locale\r\n */\r\n setTranslationAny(prompt, translation, locale) {\r\n const localeTarget = locale || this._root.locale;\r\n localeTarget[prompt] = translation;\r\n }\r\n /**\r\n * Add a batch of custom prompts.\r\n *\r\n * @since 5.3.3\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/creating-translations/#Extending_locale_with_custom_prompts}\r\n * @param translations Translations\r\n * @param locale Target locale\r\n */\r\n setTranslationsAny(translations, locale) {\r\n $object.each(translations, (key, val) => {\r\n this.setTranslationAny(key, val, locale);\r\n });\r\n }\r\n translateEmpty(prompt, locale, ...rest) {\r\n let translation = this.translate(prompt, locale, ...rest);\r\n return translation == prompt ? \"\" : translation;\r\n }\r\n translateFunc(prompt, locale) {\r\n if (this._root.locale[prompt]) {\r\n return this._root.locale[prompt];\r\n }\r\n // Try to look in default language\r\n if (locale !== this.getPrivate(\"defaultLocale\")) {\r\n return this.translateFunc(prompt, this.getPrivate(\"defaultLocale\"));\r\n }\r\n // Fail - return empty function\r\n return () => {\r\n return \"\";\r\n };\r\n }\r\n /**\r\n * Translates a btach of prompts.\r\n *\r\n * @param list Array of prompts to translate\r\n * @param locale Target locale\r\n * @return Array of translations\r\n */\r\n translateAll(list, locale) {\r\n // Translate all items in the list\r\n if (!this.isDefault()) {\r\n return $array.map(list, (x) => this.translate(x, locale));\r\n }\r\n else {\r\n return list;\r\n }\r\n }\r\n /**\r\n * Returns `true` if the currently selected locale is a default locale.\r\n *\r\n * @return `true` if locale is default; `false` if it is not.\r\n */\r\n isDefault() {\r\n return this.getPrivate(\"defaultLocale\") === this._root.locale;\r\n }\r\n}\r\n","/**\r\n * Modified from Pixi:\r\n *\r\n * The MIT License\r\n *\r\n * Copyright (c) 2013-2017 Mathew Groves, Chad Engler\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n/**\r\n * @ignore\r\n */\r\nexport class Matrix {\r\n constructor(a = 1, b = 0, c = 0, d = 1, tx = 0, ty = 0) {\r\n Object.defineProperty(this, \"a\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"b\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"c\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"d\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"tx\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"ty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.a = a;\r\n this.b = b;\r\n this.c = c;\r\n this.d = d;\r\n this.tx = tx;\r\n this.ty = ty;\r\n }\r\n /**\r\n * Sets the matrix based on all the available properties\r\n */\r\n setTransform(x, y, pivotX, pivotY, rotation, scale = 1) {\r\n this.a = Math.cos(rotation) * scale;\r\n this.b = Math.sin(rotation) * scale;\r\n this.c = -Math.sin(rotation) * scale;\r\n this.d = Math.cos(rotation) * scale;\r\n this.tx = x - ((pivotX * this.a) + (pivotY * this.c));\r\n this.ty = y - ((pivotX * this.b) + (pivotY * this.d));\r\n }\r\n /**\r\n * Get a new position with the current transformation applied.\r\n * Can be used to go from a child's coordinate space to the world coordinate space. (e.g. rendering)\r\n */\r\n apply(origin) {\r\n return {\r\n x: (this.a * origin.x) + (this.c * origin.y) + this.tx,\r\n y: (this.b * origin.x) + (this.d * origin.y) + this.ty\r\n };\r\n }\r\n /**\r\n * Get a new position with the inverse of the current transformation applied.\r\n * Can be used to go from the world coordinate space to a child's coordinate space. (e.g. input)\r\n */\r\n applyInverse(origin) {\r\n const id = 1 / ((this.a * this.d) + (this.c * -this.b));\r\n return {\r\n x: (this.d * id * origin.x) + (-this.c * id * origin.y) + (((this.ty * this.c) - (this.tx * this.d)) * id),\r\n y: (this.a * id * origin.y) + (-this.b * id * origin.x) + (((-this.ty * this.a) + (this.tx * this.b)) * id)\r\n };\r\n }\r\n /**\r\n * Appends the given Matrix to this Matrix.\r\n */\r\n append(matrix) {\r\n const a1 = this.a;\r\n const b1 = this.b;\r\n const c1 = this.c;\r\n const d1 = this.d;\r\n this.a = (matrix.a * a1) + (matrix.b * c1);\r\n this.b = (matrix.a * b1) + (matrix.b * d1);\r\n this.c = (matrix.c * a1) + (matrix.d * c1);\r\n this.d = (matrix.c * b1) + (matrix.d * d1);\r\n this.tx = (matrix.tx * a1) + (matrix.ty * c1) + this.tx;\r\n this.ty = (matrix.tx * b1) + (matrix.ty * d1) + this.ty;\r\n }\r\n /**\r\n * Prepends the given Matrix to this Matrix.\r\n */\r\n prepend(matrix) {\r\n const tx1 = this.tx;\r\n if (matrix.a !== 1 || matrix.b !== 0 || matrix.c !== 0 || matrix.d !== 1) {\r\n const a1 = this.a;\r\n const c1 = this.c;\r\n this.a = (a1 * matrix.a) + (this.b * matrix.c);\r\n this.b = (a1 * matrix.b) + (this.b * matrix.d);\r\n this.c = (c1 * matrix.a) + (this.d * matrix.c);\r\n this.d = (c1 * matrix.b) + (this.d * matrix.d);\r\n }\r\n this.tx = (tx1 * matrix.a) + (this.ty * matrix.c) + matrix.tx;\r\n this.ty = (tx1 * matrix.b) + (this.ty * matrix.d) + matrix.ty;\r\n }\r\n /**\r\n * Copies the other matrix's properties into this matrix\r\n */\r\n copyFrom(matrix) {\r\n this.a = matrix.a;\r\n this.b = matrix.b;\r\n this.c = matrix.c;\r\n this.d = matrix.d;\r\n this.tx = matrix.tx;\r\n this.ty = matrix.ty;\r\n }\r\n}\r\n","var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar TAU = Math.PI * 2;\n\nvar mapToEllipse = function mapToEllipse(_ref, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _ref.x,\n y = _ref.y;\n\n x *= rx;\n y *= ry;\n\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\n\nvar approxUnitArc = function approxUnitArc(ang1, ang2) {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n\n return [{\n x: x1 - y1 * a,\n y: y1 + x1 * a\n }, {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n }, {\n x: x2,\n y: y2\n }];\n};\n\nvar vectorAngle = function vectorAngle(ux, uy, vx, vy) {\n var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n\n var dot = ux * vx + uy * vy;\n\n if (dot > 1) {\n dot = 1;\n }\n\n if (dot < -1) {\n dot = -1;\n }\n\n return sign * Math.acos(dot);\n};\n\nvar getArcCenter = function getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n\n var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n\n if (radicant < 0) {\n radicant = 0;\n }\n\n radicant /= rxsq * pypsq + rysq * pxpsq;\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n\n return [centerx, centery, ang1, ang2];\n};\n\nvar arcToBezier = function arcToBezier(_ref2) {\n var px = _ref2.px,\n py = _ref2.py,\n cx = _ref2.cx,\n cy = _ref2.cy,\n rx = _ref2.rx,\n ry = _ref2.ry,\n _ref2$xAxisRotation = _ref2.xAxisRotation,\n xAxisRotation = _ref2$xAxisRotation === undefined ? 0 : _ref2$xAxisRotation,\n _ref2$largeArcFlag = _ref2.largeArcFlag,\n largeArcFlag = _ref2$largeArcFlag === undefined ? 0 : _ref2$largeArcFlag,\n _ref2$sweepFlag = _ref2.sweepFlag,\n sweepFlag = _ref2$sweepFlag === undefined ? 0 : _ref2$sweepFlag;\n\n var curves = [];\n\n if (rx === 0 || ry === 0) {\n return [];\n }\n\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n\n if (pxp === 0 && pyp === 0) {\n return [];\n }\n\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n\n var _getArcCenter = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp),\n _getArcCenter2 = _slicedToArray(_getArcCenter, 4),\n centerx = _getArcCenter2[0],\n centery = _getArcCenter2[1],\n ang1 = _getArcCenter2[2],\n ang2 = _getArcCenter2[3];\n\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n\n\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0;\n }\n\n var segments = Math.max(Math.ceil(ratio), 1);\n\n ang2 /= segments;\n\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n\n return curves.map(function (curve) {\n var _mapToEllipse = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery),\n x1 = _mapToEllipse.x,\n y1 = _mapToEllipse.y;\n\n var _mapToEllipse2 = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery),\n x2 = _mapToEllipse2.x,\n y2 = _mapToEllipse2.y;\n\n var _mapToEllipse3 = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery),\n x = _mapToEllipse3.x,\n y = _mapToEllipse3.y;\n\n return { x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y };\n });\n};\n\nexport default arcToBezier;","/** @ignore */ /** */\r\nimport { BlendMode } from \"./Renderer\";\r\nimport { Color } from \"../../util/Color\";\r\nimport { Matrix } from \"../../util/Matrix\";\r\nimport { Percent, percent } from \"../../util/Percent\";\r\n//import { Throttler } from \"../../util/Throttler\";\r\nimport { ArrayDisposer, Disposer, DisposerClass, CounterDisposer, MultiDisposer } from \"../../util/Disposer\";\r\nimport { TextFormatter } from \"../../util/TextFormatter\";\r\nimport * as $utils from \"../../util/Utils\";\r\nimport * as $array from \"../../util/Array\";\r\nimport * as $object from \"../../util/Object\";\r\nimport * as $type from \"../../util/Type\";\r\nimport * as $math from \"../../util/Math\";\r\nimport arcToBezier from 'svg-arc-to-cubic-bezier';\r\n/**\r\n * @ignore\r\n */\r\nfunction checkArgs(name, actual, expected) {\r\n if (actual !== expected) {\r\n throw new Error(\"Required \" + expected + \" arguments for \" + name + \" but got \" + actual);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction checkMinArgs(name, actual, expected) {\r\n if (actual < expected) {\r\n throw new Error(\"Required at least \" + expected + \" arguments for \" + name + \" but got \" + actual);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction checkEvenArgs(name, actual, expected) {\r\n checkMinArgs(name, actual, expected);\r\n if ((actual % expected) !== 0) {\r\n throw new Error(\"Arguments for \" + name + \" must be in pairs of \" + expected);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n * This splits the flag so that way 0017 will be processed as 0 0 17\r\n *\r\n * This is important for weird paths like `M17 5A1 1 0 0017 30 1 1 0 0017 5`\r\n */\r\nfunction splitArcFlags(args) {\r\n for (let i = 0; i < args.length; i += 7) {\r\n let index = i + 3;\r\n let flag = args[index];\r\n if (flag.length > 1) {\r\n const a = /^([01])([01])(.*)$/.exec(flag);\r\n if (a !== null) {\r\n args.splice(index, 0, a[1]);\r\n ++index;\r\n args.splice(index, 0, a[2]);\r\n ++index;\r\n if (a[3].length > 0) {\r\n args[index] = a[3];\r\n }\r\n else {\r\n args.splice(index, 1);\r\n }\r\n }\r\n }\r\n ++index;\r\n flag = args[index];\r\n if (flag.length > 1) {\r\n const a = /^([01])(.+)$/.exec(flag);\r\n if (a !== null) {\r\n args.splice(index, 0, a[1]);\r\n ++index;\r\n args[index] = a[2];\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction assertBinary(value) {\r\n if (value === 0 || value === 1) {\r\n return value;\r\n }\r\n else {\r\n throw new Error(\"Flag must be 0 or 1\");\r\n }\r\n}\r\n// 1 -> 0xffffff * (2 / 2)\r\n// 2 -> 0xffffff * (1 / 2)\r\n//\r\n// 3 -> 0xffffff * (3 / 4)\r\n// 4 -> 0xffffff * (1 / 4)\r\n//\r\n// 5 -> 0xffffff * (7 / 8)\r\n// 6 -> 0xffffff * (5 / 8)\r\n// 7 -> 0xffffff * (3 / 8)\r\n// 8 -> 0xffffff * (1 / 8)\r\n//\r\n// 9 -> 0xffffff * (15 / 16)\r\n// 10 -> 0xffffff * (13 / 16)\r\n// 11 -> 0xffffff * (11 / 16)\r\n// 12 -> 0xffffff * (9 / 16)\r\n// 13 -> 0xffffff * (7 / 16)\r\n// 14 -> 0xffffff * (5 / 16)\r\n// 15 -> 0xffffff * (3 / 16)\r\n// 16 -> 0xffffff * (1 / 16)\r\n// @todo remove this old color distribution algo if the new one pans out\r\n/*function distributeId(id: number): number {\r\n if (id === 1) {\r\n return 0x000001;\r\n\r\n } else {\r\n // Finds the closest power of 2\r\n const base = Math.pow(2, Math.ceil(Math.log(id) / Math.log(2)));\r\n\r\n // Translates the id into an odd fraction index\r\n const index = ((base - id) * 2) + 1;\r\n\r\n // TODO is Math.round correct ?\r\n return Math.round(0xffffff * (index / base));\r\n }\r\n}*/\r\n/**\r\n * Function by smeans:\r\n * https://lowcode.life/generating-unique-contrasting-colors-in-javascript/\r\n * @ignore\r\n */\r\nfunction distributeId(id) {\r\n const rgb = [0, 0, 0];\r\n for (let i = 0; i < 24; i++) {\r\n rgb[i % 3] <<= 1;\r\n rgb[i % 3] |= id & 0x01;\r\n id >>= 1;\r\n }\r\n return (rgb[0] | 0) + (rgb[1] << 8) + (rgb[2] << 16);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction eachTargets(hitTarget, f) {\r\n for (;;) {\r\n if (hitTarget.interactive) {\r\n if (!f(hitTarget)) {\r\n break;\r\n }\r\n }\r\n if (hitTarget._parent) {\r\n hitTarget = hitTarget._parent;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n}\r\n// TODO feature detection for mouse/touch/pointer\r\n/**\r\n * @ignore\r\n */\r\nfunction onPointerEvent(element, name, f) {\r\n return $utils.addEventListener(element, $utils.getRendererEvent(name), (event) => {\r\n const target = $utils.getEventTarget(event);\r\n let touches = event.touches;\r\n if (touches) {\r\n if (touches.length == 0) {\r\n touches = event.changedTouches;\r\n }\r\n f($array.copy(touches), target);\r\n }\r\n else {\r\n f([event], target);\r\n }\r\n });\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction isTainted(image) {\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n const context = canvas.getContext(\"2d\", { willReadFrequently: true });\r\n context.drawImage(image, 0, 0, 1, 1);\r\n try {\r\n context.getImageData(0, 0, 1, 1);\r\n return false;\r\n }\r\n catch (err) {\r\n console.warn(\"Image \\\"\" + image.src + \"\\\" is loaded from different host and is not covered by CORS policy. For more information about the implications read here: https://www.amcharts.com/docs/v5/concepts/cors\");\r\n return true;\r\n }\r\n}\r\n/**\r\n * This is needed to workaround a bug in iOS which causes it to not GC canvas elements.\r\n *\r\n * @ignore\r\n */\r\nfunction clearCanvas(view) {\r\n view.width = 0;\r\n view.height = 0;\r\n view.style.width = \"0px\";\r\n view.style.height = \"0px\";\r\n}\r\n/**\r\n * Aligns the coordinate to the pixel, so it renders crisp\r\n *\r\n * @ignore\r\n */\r\nfunction crisp(x) {\r\n return Math.floor(x) + .5;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasPivot {\r\n constructor() {\r\n Object.defineProperty(this, \"_x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n }\r\n get x() {\r\n return this._x;\r\n }\r\n get y() {\r\n return this._y;\r\n }\r\n set x(value) {\r\n this._x = value;\r\n }\r\n set y(value) {\r\n this._y = value;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasDisplayObject extends DisposerClass {\r\n constructor(renderer) {\r\n super();\r\n Object.defineProperty(this, \"_layer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"mask\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"visible\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"exportable\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"interactive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"inactive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"wheelable\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"cancelTouch\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"isMeasured\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"buttonMode\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"alpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"compoundAlpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"angle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"scale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"crisp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"pivot\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new CanvasPivot()\r\n });\r\n Object.defineProperty(this, \"filter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"cursorOverStyle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_replacedCursorStyle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_localMatrix\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Matrix()\r\n });\r\n Object.defineProperty(this, \"_matrix\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Matrix()\r\n });\r\n // TODO can this be replaced with _localMatrix ?\r\n Object.defineProperty(this, \"_uMatrix\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Matrix()\r\n });\r\n Object.defineProperty(this, \"_renderer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_parent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_localBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_bounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_colorId\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._renderer = renderer;\r\n }\r\n subStatus(status) {\r\n return {\r\n inactive: (this.inactive == null ? status.inactive : this.inactive),\r\n layer: this._layer || status.layer,\r\n };\r\n }\r\n _dispose() {\r\n this._renderer._removeObject(this);\r\n this.getLayer().dirty = true;\r\n }\r\n getCanvas() {\r\n return this.getLayer().view;\r\n }\r\n getLayer() {\r\n let self = this;\r\n for (;;) {\r\n if (self._layer) {\r\n return self._layer;\r\n }\r\n else if (self._parent) {\r\n self = self._parent;\r\n }\r\n else {\r\n return this._renderer.defaultLayer;\r\n }\r\n }\r\n }\r\n setLayer(order, margin) {\r\n if (order == null) {\r\n this._layer = undefined;\r\n }\r\n else {\r\n const visible = true;\r\n this._layer = this._renderer.getLayer(order, visible);\r\n this._layer.visible = visible;\r\n this._layer.margin = margin;\r\n if (margin) {\r\n $utils.setInteractive(this._layer.view, false);\r\n }\r\n this._renderer._ghostLayer.setMargin(this._renderer.layers);\r\n if (this._parent) {\r\n this._parent.registerChildLayer(this._layer);\r\n }\r\n this._layer.dirty = true;\r\n this._renderer.resizeLayer(this._layer);\r\n this._renderer.resizeGhost();\r\n }\r\n }\r\n markDirtyLayer() {\r\n this.getLayer().dirty = true;\r\n }\r\n clear() {\r\n this.invalidateBounds();\r\n }\r\n invalidateBounds() {\r\n this._localBounds = undefined;\r\n }\r\n _addBounds(_bounds) { }\r\n _getColorId() {\r\n if (this._colorId === undefined) {\r\n this._colorId = this._renderer.paintId(this);\r\n }\r\n return this._colorId;\r\n }\r\n _isInteractive(status) {\r\n return !status.inactive && (this.interactive || this._renderer._forceInteractive > 0);\r\n }\r\n _isInteractiveMask(status) {\r\n return this._isInteractive(status);\r\n }\r\n contains(child) {\r\n for (;;) {\r\n if (child === this) {\r\n return true;\r\n }\r\n else if (child._parent) {\r\n child = child._parent;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n }\r\n toGlobal(point) {\r\n return this._matrix.apply(point);\r\n }\r\n toLocal(point) {\r\n return this._matrix.applyInverse(point);\r\n }\r\n getLocalMatrix() {\r\n this._uMatrix.setTransform(0, 0, this.pivot.x, this.pivot.y, this.angle * Math.PI / 180, this.scale);\r\n return this._uMatrix;\r\n }\r\n getLocalBounds() {\r\n if (!this._localBounds) {\r\n const bn = 10000000;\r\n this._localBounds = {\r\n left: bn,\r\n top: bn,\r\n right: -bn,\r\n bottom: -bn\r\n };\r\n this._addBounds(this._localBounds);\r\n }\r\n return this._localBounds;\r\n }\r\n getAdjustedBounds(bounds) {\r\n this._setMatrix();\r\n const matrix = this.getLocalMatrix();\r\n const p0 = matrix.apply({ x: bounds.left, y: bounds.top });\r\n const p1 = matrix.apply({ x: bounds.right, y: bounds.top });\r\n const p2 = matrix.apply({ x: bounds.right, y: bounds.bottom });\r\n const p3 = matrix.apply({ x: bounds.left, y: bounds.bottom });\r\n return {\r\n left: Math.min(p0.x, p1.x, p2.x, p3.x),\r\n top: Math.min(p0.y, p1.y, p2.y, p3.y),\r\n right: Math.max(p0.x, p1.x, p2.x, p3.x),\r\n bottom: Math.max(p0.y, p1.y, p2.y, p3.y)\r\n };\r\n }\r\n on(key, callback, context) {\r\n if (this.interactive) {\r\n return this._renderer._addEvent(this, key, callback, context);\r\n }\r\n else {\r\n return new Disposer(() => { });\r\n }\r\n }\r\n _setMatrix() {\r\n // TODO only calculate this if it has actually changed\r\n this._localMatrix.setTransform(this.x, this.y, this.pivot.x, this.pivot.y, \r\n // Converts degrees to radians\r\n this.angle * Math.PI / 180, this.scale);\r\n this._matrix.copyFrom(this._localMatrix);\r\n if (this._parent) {\r\n // TODO only calculate this if it has actually changed\r\n this._matrix.prepend(this._parent._matrix);\r\n }\r\n }\r\n _transform(context, resolution) {\r\n const m = this._matrix;\r\n let tx = m.tx * resolution;\r\n let ty = m.ty * resolution;\r\n if (this.crisp) {\r\n tx = crisp(tx);\r\n ty = crisp(ty);\r\n }\r\n context.setTransform(m.a * resolution, m.b * resolution, m.c * resolution, m.d * resolution, tx, ty);\r\n }\r\n _transformMargin(context, resolution, margin) {\r\n const m = this._matrix;\r\n context.setTransform(m.a * resolution, m.b * resolution, m.c * resolution, m.d * resolution, (m.tx + margin.left) * resolution, (m.ty + margin.top) * resolution);\r\n }\r\n _transformLayer(context, resolution, layer) {\r\n if (layer.margin) {\r\n this._transformMargin(context, layer.scale || resolution, layer.margin);\r\n }\r\n else {\r\n this._transform(context, layer.scale || resolution);\r\n }\r\n }\r\n render(status) {\r\n if (this.visible && (this.exportable !== false || !this._renderer._omitTainted)) {\r\n this._setMatrix();\r\n const subStatus = this.subStatus(status);\r\n const resolution = this._renderer.resolution;\r\n const layers = this._renderer.layers;\r\n const ghostLayer = this._renderer._ghostLayer;\r\n const ghostContext = ghostLayer.context;\r\n const mask = this.mask;\r\n if (mask) {\r\n mask._setMatrix();\r\n }\r\n // TODO improve this\r\n $array.each(layers, (layer) => {\r\n if (layer) {\r\n const context = layer.context;\r\n context.save();\r\n // We must apply the mask before we transform the element\r\n if (mask) {\r\n mask._transformLayer(context, resolution, layer);\r\n mask._runPath(context);\r\n context.clip();\r\n }\r\n context.globalAlpha = this.compoundAlpha * this.alpha;\r\n this._transformLayer(context, resolution, layer);\r\n if (this.filter) {\r\n context.filter = this.filter;\r\n }\r\n }\r\n });\r\n ghostContext.save();\r\n // We must apply the mask before we transform the element\r\n if (mask && this._isInteractiveMask(subStatus)) {\r\n mask._transformMargin(ghostContext, resolution, ghostLayer.margin);\r\n mask._runPath(ghostContext);\r\n ghostContext.clip();\r\n }\r\n this._transformMargin(ghostContext, resolution, ghostLayer.margin);\r\n this._render(subStatus);\r\n ghostContext.restore();\r\n $array.each(layers, (layer) => {\r\n if (layer) {\r\n layer.context.restore();\r\n }\r\n });\r\n }\r\n }\r\n _render(status) {\r\n if (this.exportable === false) {\r\n status.layer.tainted = true;\r\n }\r\n }\r\n hovering() {\r\n return this._renderer._hovering.has(this);\r\n }\r\n dragging() {\r\n return this._renderer._dragging.some((x) => x.value === this);\r\n }\r\n shouldCancelTouch() {\r\n const renderer = this._renderer;\r\n if (renderer.tapToActivate && !renderer._touchActive) {\r\n return false;\r\n }\r\n if (this.cancelTouch) {\r\n return true;\r\n }\r\n else if (this._parent) {\r\n return this._parent.shouldCancelTouch();\r\n }\r\n return false;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasContainer extends CanvasDisplayObject {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"interactiveChildren\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_childLayers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_children\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n _isInteractiveMask(status) {\r\n return this.interactiveChildren || super._isInteractiveMask(status);\r\n }\r\n addChild(child) {\r\n child._parent = this;\r\n this._children.push(child);\r\n if (child._layer) {\r\n this.registerChildLayer(child._layer);\r\n }\r\n }\r\n addChildAt(child, index) {\r\n child._parent = this;\r\n this._children.splice(index, 0, child);\r\n if (child._layer) {\r\n this.registerChildLayer(child._layer);\r\n }\r\n }\r\n removeChild(child) {\r\n child._parent = undefined;\r\n $array.removeFirst(this._children, child);\r\n }\r\n _render(status) {\r\n super._render(status);\r\n const renderer = this._renderer;\r\n if (this.interactive && this.interactiveChildren) {\r\n ++renderer._forceInteractive;\r\n }\r\n $array.each(this._children, (child) => {\r\n child.compoundAlpha = this.compoundAlpha * this.alpha;\r\n child.render(status);\r\n });\r\n if (this.interactive && this.interactiveChildren) {\r\n --renderer._forceInteractive;\r\n }\r\n }\r\n registerChildLayer(layer) {\r\n if (!this._childLayers) {\r\n this._childLayers = [];\r\n }\r\n $array.pushOne(this._childLayers, layer);\r\n if (this._parent) {\r\n this._parent.registerChildLayer(layer);\r\n }\r\n }\r\n markDirtyLayer(deep = false) {\r\n super.markDirtyLayer();\r\n if (deep && this._childLayers) {\r\n $array.each(this._childLayers, (layer) => layer.dirty = true);\r\n }\r\n }\r\n _dispose() {\r\n super._dispose();\r\n if (this._childLayers) {\r\n $array.each(this._childLayers, (layer) => {\r\n layer.dirty = true;\r\n });\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction setPoint(bounds, point) {\r\n bounds.left = Math.min(bounds.left, point.x);\r\n bounds.top = Math.min(bounds.top, point.y);\r\n bounds.right = Math.max(bounds.right, point.x);\r\n bounds.bottom = Math.max(bounds.bottom, point.y);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass Op {\r\n colorize(_context, _forceColor) { }\r\n colorizeGhost(context, forceColor) {\r\n this.colorize(context, forceColor);\r\n }\r\n path(_context) { }\r\n pathGhost(context) {\r\n this.path(context);\r\n }\r\n addBounds(_bounds) { }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass BeginPath extends Op {\r\n colorize(context, _forceColor) {\r\n context.beginPath();\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass BeginFill extends Op {\r\n constructor(color) {\r\n super();\r\n Object.defineProperty(this, \"color\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: color\r\n });\r\n }\r\n colorize(context, forceColor) {\r\n if (forceColor !== undefined) {\r\n context.fillStyle = forceColor;\r\n }\r\n else {\r\n context.fillStyle = this.color;\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass EndFill extends Op {\r\n constructor(clearShadow) {\r\n super();\r\n Object.defineProperty(this, \"clearShadow\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: clearShadow\r\n });\r\n }\r\n colorize(context, _forceColor) {\r\n context.fill();\r\n if (this.clearShadow) {\r\n context.shadowColor = \"\";\r\n context.shadowBlur = 0;\r\n context.shadowOffsetX = 0;\r\n context.shadowOffsetY = 0;\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass EndStroke extends Op {\r\n colorize(context, _forceColor) {\r\n context.stroke();\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass LineStyle extends Op {\r\n constructor(width, color, lineJoin) {\r\n super();\r\n Object.defineProperty(this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: width\r\n });\r\n Object.defineProperty(this, \"color\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: color\r\n });\r\n Object.defineProperty(this, \"lineJoin\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: lineJoin\r\n });\r\n }\r\n colorize(context, forceColor) {\r\n if (forceColor !== undefined) {\r\n context.strokeStyle = forceColor;\r\n }\r\n else {\r\n context.strokeStyle = this.color;\r\n }\r\n context.lineWidth = this.width;\r\n if (this.lineJoin) {\r\n context.lineJoin = this.lineJoin;\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass LineDash extends Op {\r\n constructor(dash) {\r\n super();\r\n Object.defineProperty(this, \"dash\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: dash\r\n });\r\n }\r\n colorize(context, _forceColor) {\r\n context.setLineDash(this.dash);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass LineDashOffset extends Op {\r\n constructor(dashOffset) {\r\n super();\r\n Object.defineProperty(this, \"dashOffset\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: dashOffset\r\n });\r\n }\r\n colorize(context, _forceColor) {\r\n context.lineDashOffset = this.dashOffset;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass DrawRect extends Op {\r\n constructor(x, y, width, height) {\r\n super();\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n Object.defineProperty(this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: width\r\n });\r\n Object.defineProperty(this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: height\r\n });\r\n }\r\n path(context) {\r\n context.rect(this.x, this.y, this.width, this.height);\r\n }\r\n addBounds(bounds) {\r\n const l = this.x;\r\n const t = this.y;\r\n const r = l + this.width;\r\n const b = t + this.height;\r\n setPoint(bounds, { x: l, y: t });\r\n setPoint(bounds, { x: r, y: t });\r\n setPoint(bounds, { x: l, y: b });\r\n setPoint(bounds, { x: r, y: b });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass DrawCircle extends Op {\r\n constructor(x, y, radius) {\r\n super();\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n Object.defineProperty(this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radius\r\n });\r\n }\r\n path(context) {\r\n context.moveTo(this.x + this.radius, this.y);\r\n context.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);\r\n }\r\n // TODO handle skewing and rotation\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.x - this.radius, y: this.y - this.radius });\r\n setPoint(bounds, { x: this.x + this.radius, y: this.y + this.radius });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass DrawEllipse extends Op {\r\n constructor(x, y, radiusX, radiusY) {\r\n super();\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n Object.defineProperty(this, \"radiusX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radiusX\r\n });\r\n Object.defineProperty(this, \"radiusY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radiusY\r\n });\r\n }\r\n path(context) {\r\n context.ellipse(0, 0, this.radiusX, this.radiusY, 0, 0, Math.PI * 2);\r\n }\r\n // TODO handle skewing and rotation\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.x - this.radiusX, y: this.y - this.radiusY });\r\n setPoint(bounds, { x: this.x + this.radiusX, y: this.y + this.radiusY });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass Arc extends Op {\r\n constructor(cx, cy, radius, startAngle, endAngle, anticlockwise) {\r\n super();\r\n Object.defineProperty(this, \"cx\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cx\r\n });\r\n Object.defineProperty(this, \"cy\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cy\r\n });\r\n Object.defineProperty(this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radius\r\n });\r\n Object.defineProperty(this, \"startAngle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: startAngle\r\n });\r\n Object.defineProperty(this, \"endAngle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: endAngle\r\n });\r\n Object.defineProperty(this, \"anticlockwise\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: anticlockwise\r\n });\r\n }\r\n path(context) {\r\n if (this.radius > 0) {\r\n context.arc(this.cx, this.cy, this.radius, this.startAngle, this.endAngle, this.anticlockwise);\r\n }\r\n }\r\n addBounds(bounds) {\r\n let arcBounds = $math.getArcBounds(this.cx, this.cy, this.startAngle * $math.DEGREES, this.endAngle * $math.DEGREES, this.radius);\r\n setPoint(bounds, { x: arcBounds.left, y: arcBounds.top });\r\n setPoint(bounds, { x: arcBounds.right, y: arcBounds.bottom });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass ArcTo extends Op {\r\n constructor(x1, y1, x2, y2, radius) {\r\n super();\r\n Object.defineProperty(this, \"x1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x1\r\n });\r\n Object.defineProperty(this, \"y1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y1\r\n });\r\n Object.defineProperty(this, \"x2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x2\r\n });\r\n Object.defineProperty(this, \"y2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y2\r\n });\r\n Object.defineProperty(this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radius\r\n });\r\n }\r\n path(context) {\r\n if (this.radius > 0) {\r\n context.arcTo(this.x1, this.y1, this.x2, this.y2, this.radius);\r\n }\r\n }\r\n // TODO: add points\r\n addBounds(_bounds) {\r\n /*\r\n // not finished\r\n https://math.stackexchange.com/questions/1781438/finding-the-center-of-a-circle-given-two-points-and-a-radius-algebraically\r\n\r\n if (prevPoint) {\r\n let x1 = prevPoint.x;\r\n let y1 = prevPoint.y;\r\n let x2 = this.x2;\r\n let y2 = this.y2;\r\n let r = this.radius;\r\n\r\n let xa = (x2 - x1) / 2;\r\n let ya = (y2 - y1) / 2;\r\n\r\n let x0 = x1 + xa;\r\n let y0 = y1 + ya;\r\n\r\n let a = Math.hypot(xa, ya);\r\n let b = Math.sqrt(r * r - a * a);\r\n\r\n let cx = x0 + b * ya / a;\r\n let cy = y0 - b * xa / a;\r\n\r\n console.log(cx, cy);\r\n }*/\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass LineTo extends Op {\r\n constructor(x, y) {\r\n super();\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n }\r\n path(context) {\r\n context.lineTo(this.x, this.y);\r\n }\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.x, y: this.y });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass MoveTo extends Op {\r\n constructor(x, y) {\r\n super();\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n }\r\n path(context) {\r\n context.moveTo(this.x, this.y);\r\n }\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.x, y: this.y });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass ClosePath extends Op {\r\n path(context) {\r\n context.closePath();\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass BezierCurveTo extends Op {\r\n constructor(cpX, cpY, cpX2, cpY2, toX, toY) {\r\n super();\r\n Object.defineProperty(this, \"cpX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpX\r\n });\r\n Object.defineProperty(this, \"cpY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpY\r\n });\r\n Object.defineProperty(this, \"cpX2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpX2\r\n });\r\n Object.defineProperty(this, \"cpY2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpY2\r\n });\r\n Object.defineProperty(this, \"toX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toX\r\n });\r\n Object.defineProperty(this, \"toY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toY\r\n });\r\n }\r\n path(context) {\r\n context.bezierCurveTo(this.cpX, this.cpY, this.cpX2, this.cpY2, this.toX, this.toY);\r\n }\r\n // TODO: OK?\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.cpX, y: this.cpY });\r\n setPoint(bounds, { x: this.cpX2, y: this.cpY2 });\r\n setPoint(bounds, { x: this.toX, y: this.toY });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass QuadraticCurveTo extends Op {\r\n constructor(cpX, cpY, toX, toY) {\r\n super();\r\n Object.defineProperty(this, \"cpX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpX\r\n });\r\n Object.defineProperty(this, \"cpY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpY\r\n });\r\n Object.defineProperty(this, \"toX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toX\r\n });\r\n Object.defineProperty(this, \"toY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toY\r\n });\r\n }\r\n path(context) {\r\n context.quadraticCurveTo(this.cpX, this.cpY, this.toX, this.toY);\r\n }\r\n // TODO: OK?\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.cpX, y: this.cpY });\r\n setPoint(bounds, { x: this.toX, y: this.toY });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass Shadow extends Op {\r\n constructor(color, blur, offsetX, offsetY, opacity) {\r\n super();\r\n Object.defineProperty(this, \"color\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: color\r\n });\r\n Object.defineProperty(this, \"blur\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: blur\r\n });\r\n Object.defineProperty(this, \"offsetX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: offsetX\r\n });\r\n Object.defineProperty(this, \"offsetY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: offsetY\r\n });\r\n Object.defineProperty(this, \"opacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: opacity\r\n });\r\n }\r\n colorize(context, _forceColor) {\r\n if (this.opacity) {\r\n context.fillStyle = this.color;\r\n }\r\n context.shadowColor = this.color;\r\n context.shadowBlur = this.blur;\r\n context.shadowOffsetX = this.offsetX;\r\n context.shadowOffsetY = this.offsetY;\r\n }\r\n colorizeGhost(_context, _forceColor) { }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass GraphicsImage extends Op {\r\n constructor(image, width, height, x, y) {\r\n super();\r\n Object.defineProperty(this, \"image\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: image\r\n });\r\n Object.defineProperty(this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: width\r\n });\r\n Object.defineProperty(this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: height\r\n });\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n }\r\n path(context) {\r\n context.drawImage(this.image, this.x, this.y, this.width, this.height);\r\n }\r\n // TODO: OK?\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.x, y: this.y });\r\n setPoint(bounds, { x: this.width, y: this.height });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasGraphics extends CanvasDisplayObject {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_operations\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"blendMode\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: BlendMode.NORMAL\r\n });\r\n Object.defineProperty(this, \"_hasShadows\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_fillAlpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_strokeAlpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n clear() {\r\n super.clear();\r\n this._operations.length = 0;\r\n }\r\n _pushOp(op) {\r\n this._operations.push(op);\r\n }\r\n beginFill(color, alpha = 1) {\r\n this._fillAlpha = alpha;\r\n if (color) {\r\n if (color instanceof Color) {\r\n this._pushOp(new BeginFill(color.toCSS(alpha)));\r\n }\r\n else {\r\n this.isMeasured = true;\r\n this._pushOp(new BeginFill(color));\r\n }\r\n }\r\n else {\r\n this._pushOp(new BeginFill(\"rgba(0, 0, 0, \" + alpha + \")\"));\r\n }\r\n }\r\n endFill() {\r\n this._pushOp(new EndFill(this._hasShadows));\r\n }\r\n endStroke() {\r\n this._pushOp(new EndStroke());\r\n }\r\n beginPath() {\r\n this._pushOp(new BeginPath());\r\n }\r\n lineStyle(width = 0, color, alpha = 1, lineJoin) {\r\n this._strokeAlpha = alpha;\r\n if (color) {\r\n if (color instanceof Color) {\r\n this._pushOp(new LineStyle(width, color.toCSS(alpha), lineJoin));\r\n }\r\n else {\r\n this._pushOp(new LineStyle(width, color, lineJoin));\r\n }\r\n }\r\n else {\r\n this._pushOp(new LineStyle(width, \"rgba(0, 0, 0, \" + alpha + \")\", lineJoin));\r\n }\r\n }\r\n setLineDash(dash) {\r\n this._pushOp(new LineDash(dash ? dash : []));\r\n }\r\n setLineDashOffset(dashOffset = 0) {\r\n this._pushOp(new LineDashOffset(dashOffset));\r\n }\r\n drawRect(x, y, width, height) {\r\n this._pushOp(new DrawRect(x, y, width, height));\r\n }\r\n drawCircle(x, y, radius) {\r\n this._pushOp(new DrawCircle(x, y, radius));\r\n }\r\n drawEllipse(x, y, radiusX, radiusY) {\r\n this._pushOp(new DrawEllipse(x, y, radiusX, radiusY));\r\n }\r\n arc(cx, cy, radius, startAngle, endAngle, anticlockwise = false) {\r\n this._pushOp(new Arc(cx, cy, radius, startAngle, endAngle, anticlockwise));\r\n }\r\n arcTo(x1, y1, x2, y2, radius) {\r\n this._pushOp(new ArcTo(x1, y1, x2, y2, radius));\r\n }\r\n lineTo(x, y) {\r\n this._pushOp(new LineTo(x, y));\r\n }\r\n moveTo(x, y) {\r\n this._pushOp(new MoveTo(x, y));\r\n }\r\n bezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY) {\r\n this._pushOp(new BezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY));\r\n }\r\n quadraticCurveTo(cpX, cpY, toX, toY) {\r\n this._pushOp(new QuadraticCurveTo(cpX, cpY, toX, toY));\r\n }\r\n closePath() {\r\n this._pushOp(new ClosePath());\r\n }\r\n shadow(color, blur = 0, offsetX = 0, offsetY = 0, opacity) {\r\n this._hasShadows = true;\r\n this._pushOp(new Shadow(opacity ? color.toCSS(opacity) : color.toCSS(this._fillAlpha || this._strokeAlpha), blur, offsetX, offsetY));\r\n }\r\n image(image, width, height, x, y) {\r\n this._pushOp(new GraphicsImage(image, width, height, x, y));\r\n }\r\n // https://svgwg.org/svg2-draft/paths.html#DProperty\r\n // TODO better error checking\r\n svgPath(path) {\r\n let x = 0;\r\n let y = 0;\r\n let cpx = null;\r\n let cpy = null;\r\n let qcpx = null;\r\n let qcpy = null;\r\n const SEGMENTS_REGEXP = /([MmZzLlHhVvCcSsQqTtAa])([^MmZzLlHhVvCcSsQqTtAa]*)/g;\r\n const ARGS_REGEXP = /[\\u0009\\u0020\\u000A\\u000C\\u000D]*([\\+\\-]?[0-9]*\\.?[0-9]+(?:[eE][\\+\\-]?[0-9]+)?)[\\u0009\\u0020\\u000A\\u000C\\u000D]*,?/g;\r\n let match;\r\n while ((match = SEGMENTS_REGEXP.exec(path)) !== null) {\r\n const name = match[1];\r\n const rest = match[2];\r\n const args = [];\r\n while ((match = ARGS_REGEXP.exec(rest)) !== null) {\r\n args.push(match[1]);\r\n }\r\n // Reset control point\r\n if (name !== \"S\" && name !== \"s\" && name !== \"C\" && name !== \"c\") {\r\n cpx = null;\r\n cpy = null;\r\n }\r\n // Reset control point\r\n if (name !== \"Q\" && name !== \"q\" && name !== \"T\" && name !== \"t\") {\r\n qcpx = null;\r\n qcpy = null;\r\n }\r\n switch (name) {\r\n case \"M\":\r\n checkEvenArgs(name, args.length, 2);\r\n x = +args[0];\r\n y = +args[1];\r\n this.moveTo(x, y);\r\n for (let i = 2; i < args.length; i += 2) {\r\n x = +args[i];\r\n y = +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"m\":\r\n checkEvenArgs(name, args.length, 2);\r\n x += +args[0];\r\n y += +args[1];\r\n this.moveTo(x, y);\r\n for (let i = 2; i < args.length; i += 2) {\r\n x += +args[i];\r\n y += +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"L\":\r\n checkEvenArgs(name, args.length, 2);\r\n for (let i = 0; i < args.length; i += 2) {\r\n x = +args[i];\r\n y = +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"l\":\r\n checkEvenArgs(name, args.length, 2);\r\n for (let i = 0; i < args.length; i += 2) {\r\n x += +args[i];\r\n y += +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"H\":\r\n checkMinArgs(name, args.length, 1);\r\n for (let i = 0; i < args.length; ++i) {\r\n x = +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"h\":\r\n checkMinArgs(name, args.length, 1);\r\n for (let i = 0; i < args.length; ++i) {\r\n x += +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"V\":\r\n checkMinArgs(name, args.length, 1);\r\n for (let i = 0; i < args.length; ++i) {\r\n y = +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"v\":\r\n checkMinArgs(name, args.length, 1);\r\n for (let i = 0; i < args.length; ++i) {\r\n y += +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"C\":\r\n checkEvenArgs(name, args.length, 6);\r\n for (let i = 0; i < args.length; i += 6) {\r\n const x1 = +args[i];\r\n const y1 = +args[i + 1];\r\n cpx = +args[i + 2];\r\n cpy = +args[i + 3];\r\n x = +args[i + 4];\r\n y = +args[i + 5];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"c\":\r\n checkEvenArgs(name, args.length, 6);\r\n for (let i = 0; i < args.length; i += 6) {\r\n const x1 = +args[i] + x;\r\n const y1 = +args[i + 1] + y;\r\n cpx = +args[i + 2] + x;\r\n cpy = +args[i + 3] + y;\r\n x += +args[i + 4];\r\n y += +args[i + 5];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"S\":\r\n checkEvenArgs(name, args.length, 4);\r\n if (cpx === null || cpy === null) {\r\n cpx = x;\r\n cpy = y;\r\n }\r\n for (let i = 0; i < args.length; i += 4) {\r\n const x1 = 2 * x - cpx;\r\n const y1 = 2 * y - cpy;\r\n cpx = +args[i];\r\n cpy = +args[i + 1];\r\n x = +args[i + 2];\r\n y = +args[i + 3];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"s\":\r\n checkEvenArgs(name, args.length, 4);\r\n if (cpx === null || cpy === null) {\r\n cpx = x;\r\n cpy = y;\r\n }\r\n for (let i = 0; i < args.length; i += 4) {\r\n const x1 = 2 * x - cpx;\r\n const y1 = 2 * y - cpy;\r\n cpx = +args[i] + x;\r\n cpy = +args[i + 1] + y;\r\n x += +args[i + 2];\r\n y += +args[i + 3];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"Q\":\r\n checkEvenArgs(name, args.length, 4);\r\n for (let i = 0; i < args.length; i += 4) {\r\n qcpx = +args[i];\r\n qcpy = +args[i + 1];\r\n x = +args[i + 2];\r\n y = +args[i + 3];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"q\":\r\n checkEvenArgs(name, args.length, 4);\r\n for (let i = 0; i < args.length; i += 4) {\r\n qcpx = +args[i] + x;\r\n qcpy = +args[i + 1] + y;\r\n x += +args[i + 2];\r\n y += +args[i + 3];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"T\":\r\n checkEvenArgs(name, args.length, 2);\r\n if (qcpx === null || qcpy === null) {\r\n qcpx = x;\r\n qcpy = y;\r\n }\r\n for (let i = 0; i < args.length; i += 2) {\r\n qcpx = 2 * x - qcpx;\r\n qcpy = 2 * y - qcpy;\r\n x = +args[i];\r\n y = +args[i + 1];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"t\":\r\n checkEvenArgs(name, args.length, 2);\r\n if (qcpx === null || qcpy === null) {\r\n qcpx = x;\r\n qcpy = y;\r\n }\r\n for (let i = 0; i < args.length; i += 2) {\r\n qcpx = 2 * x - qcpx;\r\n qcpy = 2 * y - qcpy;\r\n x += +args[i];\r\n y += +args[i + 1];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"A\":\r\n case \"a\":\r\n const relative = (name === \"a\");\r\n splitArcFlags(args);\r\n checkEvenArgs(name, args.length, 7);\r\n for (let i = 0; i < args.length; i += 7) {\r\n let cx = +args[i + 5];\r\n let cy = +args[i + 6];\r\n if (relative) {\r\n cx += x;\r\n cy += y;\r\n }\r\n const bs = arcToBezier({\r\n px: x,\r\n py: y,\r\n rx: +args[i],\r\n ry: +args[i + 1],\r\n xAxisRotation: +args[i + 2],\r\n largeArcFlag: assertBinary(+args[i + 3]),\r\n sweepFlag: assertBinary(+args[i + 4]),\r\n cx,\r\n cy,\r\n });\r\n $array.each(bs, (b) => {\r\n this.bezierCurveTo(b.x1, b.y1, b.x2, b.y2, b.x, b.y);\r\n x = b.x;\r\n y = b.y;\r\n });\r\n }\r\n break;\r\n case \"Z\":\r\n case \"z\":\r\n checkArgs(name, args.length, 0);\r\n this.closePath();\r\n break;\r\n }\r\n }\r\n }\r\n _runPath(context) {\r\n context.beginPath();\r\n $array.each(this._operations, (op) => {\r\n op.path(context);\r\n });\r\n }\r\n _render(status) {\r\n super._render(status);\r\n const layerDirty = status.layer.dirty;\r\n const interactive = this._isInteractive(status);\r\n if (layerDirty || interactive) {\r\n const context = status.layer.context;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n if (layerDirty) {\r\n context.globalCompositeOperation = this.blendMode;\r\n context.beginPath();\r\n }\r\n let color;\r\n if (interactive) {\r\n ghostContext.beginPath();\r\n color = this._getColorId();\r\n }\r\n $array.each(this._operations, (op) => {\r\n if (layerDirty) {\r\n op.path(context);\r\n op.colorize(context, undefined);\r\n }\r\n if (interactive) {\r\n op.pathGhost(ghostContext);\r\n op.colorizeGhost(ghostContext, color);\r\n }\r\n });\r\n }\r\n }\r\n renderDetached(context) {\r\n if (this.visible) {\r\n this._setMatrix();\r\n context.save();\r\n // We must apply the mask before we transform the element\r\n const mask = this.mask;\r\n if (mask) {\r\n mask._setMatrix();\r\n mask._transform(context, 1);\r\n mask._runPath(context);\r\n context.clip();\r\n }\r\n // TODO handle compoundAlpha somehow ?\r\n context.globalAlpha = this.compoundAlpha * this.alpha;\r\n this._transform(context, 1);\r\n if (this.filter) {\r\n context.filter = this.filter;\r\n }\r\n context.globalCompositeOperation = this.blendMode;\r\n context.beginPath();\r\n $array.each(this._operations, (op) => {\r\n op.path(context);\r\n op.colorize(context, undefined);\r\n });\r\n context.restore();\r\n }\r\n }\r\n _addBounds(bounds) {\r\n if (this.visible && this.isMeasured) {\r\n $array.each(this._operations, (op) => {\r\n op.addBounds(bounds);\r\n });\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasText extends CanvasDisplayObject {\r\n constructor(renderer, text, style) {\r\n super(renderer);\r\n Object.defineProperty(this, \"text\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"style\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"resolution\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"textVisible\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_textInfo\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_originalScale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n this.text = text;\r\n this.style = style;\r\n }\r\n invalidateBounds() {\r\n super.invalidateBounds();\r\n this._textInfo = undefined;\r\n }\r\n _shared(context) {\r\n if (this.style.textAlign) {\r\n context.textAlign = this.style.textAlign;\r\n }\r\n if (this.style.direction) {\r\n context.direction = this.style.direction;\r\n }\r\n if (this.style.textBaseline) {\r\n context.textBaseline = this.style.textBaseline;\r\n }\r\n }\r\n _prerender(status, ignoreGhost = false, ignoreFontWeight = false) {\r\n super._render(status);\r\n const context = status.layer.context;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n // Font style\r\n const style = this.style;\r\n let fontStyle = this._getFontStyle(undefined, ignoreFontWeight);\r\n context.font = fontStyle;\r\n if (this._isInteractive(status) && !ignoreGhost) {\r\n ghostContext.font = fontStyle;\r\n }\r\n // Other parameters\r\n if (style.fill) {\r\n if (style.fill instanceof Color) {\r\n context.fillStyle = style.fill.toCSS(style.fillOpacity != undefined ? style.fillOpacity : 1);\r\n }\r\n else {\r\n context.fillStyle = style.fill;\r\n }\r\n }\r\n if (style.shadowColor) {\r\n status.layer.context.shadowColor = style.shadowColor.toCSS(style.shadowOpacity || 1);\r\n }\r\n if (style.shadowBlur) {\r\n status.layer.context.shadowBlur = style.shadowBlur;\r\n }\r\n if (style.shadowOffsetX) {\r\n status.layer.context.shadowOffsetX = style.shadowOffsetX;\r\n }\r\n if (style.shadowOffsetY) {\r\n status.layer.context.shadowOffsetY = style.shadowOffsetY;\r\n }\r\n this._shared(context);\r\n if (this._isInteractive(status) && !ignoreGhost) {\r\n ghostContext.fillStyle = this._getColorId();\r\n this._shared(ghostContext);\r\n }\r\n }\r\n _getFontStyle(style2, ignoreFontWeight = false) {\r\n // Process defaults\r\n const style = this.style;\r\n let fontStyle = [];\r\n if (style2 && style2.fontVariant) {\r\n fontStyle.push(style2.fontVariant);\r\n }\r\n else if (style.fontVariant) {\r\n fontStyle.push(style.fontVariant);\r\n }\r\n if (!ignoreFontWeight) {\r\n if (style2 && style2.fontWeight) {\r\n fontStyle.push(style2.fontWeight);\r\n }\r\n else if (style.fontWeight) {\r\n fontStyle.push(style.fontWeight);\r\n }\r\n }\r\n if (style2 && style2.fontStyle) {\r\n fontStyle.push(style2.fontStyle);\r\n }\r\n else if (style.fontStyle) {\r\n fontStyle.push(style.fontStyle);\r\n }\r\n if (style2 && style2.fontSize) {\r\n if ($type.isNumber(style2.fontSize)) {\r\n style2.fontSize = style2.fontSize + \"px\";\r\n }\r\n fontStyle.push(style2.fontSize);\r\n }\r\n else if (style.fontSize) {\r\n if ($type.isNumber(style.fontSize)) {\r\n style.fontSize = style.fontSize + \"px\";\r\n }\r\n fontStyle.push(style.fontSize);\r\n }\r\n if (style2 && style2.fontFamily) {\r\n fontStyle.push(style2.fontFamily);\r\n }\r\n else if (style.fontFamily) {\r\n fontStyle.push(style.fontFamily);\r\n }\r\n else if (fontStyle.length) {\r\n fontStyle.push(\"Arial\");\r\n }\r\n return fontStyle.join(\" \");\r\n }\r\n _render(status) {\r\n // We need measurements in order to properly position text for alignment\r\n if (!this._textInfo) {\r\n this._measure(status);\r\n }\r\n if (this.textVisible) {\r\n const interactive = this._isInteractive(status);\r\n const context = status.layer.context;\r\n const layerDirty = status.layer.dirty;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n context.save();\r\n ghostContext.save();\r\n this._prerender(status);\r\n // const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\r\n // const x = this._localBounds && (this._localBounds.left < 0) ? Math.abs(this._localBounds.left) : 0;\r\n // Process text info produced by _measure()\r\n $array.each(this._textInfo, (line, _index) => {\r\n $array.each(line.textChunks, (chunk, _index) => {\r\n // Set style\r\n if (chunk.style) {\r\n context.save();\r\n ghostContext.save();\r\n context.font = chunk.style;\r\n if (this._isInteractive(status)) {\r\n ghostContext.font = chunk.style;\r\n }\r\n }\r\n if (chunk.fill) {\r\n context.save();\r\n context.fillStyle = chunk.fill.toCSS();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Draw text\r\n if (layerDirty) {\r\n context.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\r\n }\r\n // Draw underline\r\n if (chunk.textDecoration == \"underline\" || chunk.textDecoration == \"line-through\") {\r\n let thickness = 1;\r\n let offset = 1;\r\n let fontSize = chunk.height;\r\n const oversizedBehavior = this.style.oversizedBehavior || \"\";\r\n if ([\"truncate\", \"wrap\", \"wrap-no-break\"].indexOf(oversizedBehavior) > -1) {\r\n // Measure actual width of the text so the line fits\r\n const metrics = this._measureText(chunk.text, context);\r\n chunk.width = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\r\n }\r\n let offsetX = chunk.offsetX;\r\n switch (this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n offsetX -= chunk.width;\r\n break;\r\n case \"center\":\r\n offsetX -= chunk.width / 2;\r\n break;\r\n }\r\n if (chunk.style) {\r\n const format = TextFormatter.getTextStyle(chunk.style);\r\n switch (format.fontWeight) {\r\n case \"bolder\":\r\n case \"bold\":\r\n case \"700\":\r\n case \"800\":\r\n case \"900\":\r\n thickness = 2;\r\n break;\r\n }\r\n }\r\n if (fontSize) {\r\n offset = fontSize / 20;\r\n }\r\n let y;\r\n if (chunk.textDecoration == \"line-through\") {\r\n y = thickness + line.offsetY + chunk.offsetY - chunk.height / 2;\r\n }\r\n else {\r\n y = thickness + offset * 1.5 + line.offsetY + chunk.offsetY;\r\n }\r\n context.save();\r\n context.beginPath();\r\n if (chunk.fill) {\r\n context.strokeStyle = chunk.fill.toCSS();\r\n }\r\n else if (this.style.fill && this.style.fill instanceof Color) {\r\n context.strokeStyle = this.style.fill.toCSS();\r\n }\r\n context.lineWidth = thickness * offset;\r\n context.moveTo(offsetX, y);\r\n context.lineTo(offsetX + chunk.width, y);\r\n context.stroke();\r\n context.restore();\r\n }\r\n if (interactive && this.interactive) {\r\n // Draw text in ghost canvas ONLY if it is set as interactive\r\n // explicitly. This way we avoid hit test anomalies caused by anti\r\n // aliasing of text.\r\n ghostContext.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\r\n }\r\n if (chunk.fill) {\r\n context.restore();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Reset style\r\n if (chunk.style) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n });\r\n });\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n }\r\n _addBounds(bounds) {\r\n if (this.visible && this.isMeasured) {\r\n //if (this._textVisible) {\r\n const x = this._measure({\r\n inactive: this.inactive,\r\n layer: this.getLayer(),\r\n });\r\n setPoint(bounds, { x: x.left, y: x.top });\r\n setPoint(bounds, { x: x.right, y: x.bottom });\r\n //}\r\n }\r\n }\r\n _ignoreFontWeight() {\r\n return /apple/i.test(navigator.vendor);\r\n }\r\n _measure(status) {\r\n const context = status.layer.context;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n const rtl = this.style.direction == \"rtl\";\r\n // Reset text info\r\n this._textInfo = [];\r\n // Init\r\n const oversizedBehavior = this.style.oversizedBehavior;\r\n const maxWidth = this.style.maxWidth;\r\n const truncate = $type.isNumber(maxWidth) && oversizedBehavior == \"truncate\";\r\n const wrap = $type.isNumber(maxWidth) && (oversizedBehavior == \"wrap\" || oversizedBehavior == \"wrap-no-break\");\r\n // Pre-render\r\n context.save();\r\n ghostContext.save();\r\n this._prerender(status, true, this._ignoreFontWeight());\r\n // Get default font metrix\r\n const refText = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 \";\r\n // Split up text into lines\r\n const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\r\n let styleRestored = true;\r\n let minX = 0;\r\n let maxX = 0;\r\n // Iterate through the lines\r\n let offsetY = 0;\r\n let currentStyle;\r\n $array.each(lines, (line, _index) => {\r\n // Split up line into format/value chunks\r\n let chunks;\r\n if (line == \"\") {\r\n chunks = [{\r\n type: \"value\",\r\n text: \"\"\r\n }];\r\n }\r\n else {\r\n chunks = TextFormatter.chunk(line, false, this.style.ignoreFormatting);\r\n }\r\n while (chunks.length > 0) {\r\n // Init line object\r\n let lineInfo = {\r\n offsetY: offsetY,\r\n ascent: 0,\r\n width: 0,\r\n height: 0,\r\n left: 0,\r\n right: 0,\r\n textChunks: []\r\n };\r\n // Measure reference text\r\n const metrics = this._measureText(refText, context);\r\n const height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\r\n lineInfo.height = height;\r\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\r\n let currentFormat;\r\n let currentDecoration = this.style.textDecoration;\r\n let currentFill;\r\n let currentChunkWidth;\r\n let skipFurtherText = false;\r\n let firstTextChunk = true;\r\n let leftoverChunks = [];\r\n let currentVerticalAlign;\r\n //let offsetX = 0;\r\n //let chunk;\r\n //while(chunk = chunks.shift()) {\r\n $array.eachContinue(chunks, (chunk, index) => {\r\n // Format chunk\r\n if (chunk.type == \"format\") {\r\n if (chunk.text == \"[/]\") {\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n styleRestored = true;\r\n }\r\n currentFill = undefined;\r\n currentStyle = undefined;\r\n currentChunkWidth = undefined;\r\n currentDecoration = this.style.textDecoration;\r\n currentVerticalAlign = undefined;\r\n currentFormat = chunk.text;\r\n }\r\n else {\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n let format = TextFormatter.getTextStyle(chunk.text);\r\n const fontStyle = this._getFontStyle(format);\r\n context.save();\r\n ghostContext.save();\r\n context.font = fontStyle;\r\n currentStyle = fontStyle;\r\n currentFormat = chunk.text;\r\n if (format.textDecoration) {\r\n currentDecoration = format.textDecoration;\r\n }\r\n if (format.fill) {\r\n currentFill = format.fill;\r\n }\r\n if (format.width) {\r\n currentChunkWidth = $type.toNumber(format.width);\r\n }\r\n if (format.verticalAlign) {\r\n currentVerticalAlign = format.verticalAlign;\r\n }\r\n styleRestored = false;\r\n // Measure reference text after change of format\r\n const metrics = this._measureText(refText, context);\r\n const height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\r\n if (height > lineInfo.height) {\r\n lineInfo.height = height;\r\n }\r\n if (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\r\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\r\n }\r\n }\r\n }\r\n // Text chunk\r\n else if (chunk.type == \"value\" && !skipFurtherText) {\r\n // Measure\r\n const metrics = this._measureText(chunk.text, context);\r\n let chunkWidth = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\r\n // Check for fit\r\n if (truncate) {\r\n // Break words?\r\n let breakWords = firstTextChunk || this.style.breakWords || false;\r\n // Measure ellipsis and check if it fits\r\n const ellipsis = this.style.ellipsis || \"\";\r\n const ellipsisMetrics = this._measureText(ellipsis, context);\r\n const ellipsisWidth = ellipsisMetrics.actualBoundingBoxLeft + ellipsisMetrics.actualBoundingBoxRight;\r\n // Check fit\r\n if ((lineInfo.width + chunkWidth) > maxWidth) {\r\n const excessWidth = maxWidth - lineInfo.width - ellipsisWidth;\r\n chunk.text = this._truncateText(context, chunk.text, excessWidth, breakWords);\r\n chunk.text += ellipsis;\r\n skipFurtherText = true;\r\n }\r\n }\r\n else if (wrap) {\r\n // Check fit\r\n if ((lineInfo.width + chunkWidth) > maxWidth) {\r\n const excessWidth = maxWidth - lineInfo.width;\r\n const tmpText = this._truncateText(context, chunk.text, excessWidth, false, (firstTextChunk && this.style.oversizedBehavior != \"wrap-no-break\"));\r\n if (tmpText == \"\") {\r\n // Unable to fit a single letter - hide the whole label\r\n this.textVisible = true;\r\n return false;\r\n }\r\n //skipFurtherText = true;\r\n //Add remaining chunks for the next line\r\n leftoverChunks = chunks.slice(index + 1);\r\n //Add remaining text of current chunk if it was forced-cut\r\n if ($utils.trim(tmpText) != $utils.trim(chunk.text)) {\r\n leftoverChunks.unshift({\r\n type: \"value\",\r\n text: chunk.text.substr(tmpText.length)\r\n });\r\n if (currentFormat) {\r\n leftoverChunks.unshift({\r\n type: \"format\",\r\n text: currentFormat\r\n });\r\n }\r\n }\r\n // Set current chunk (truncated)\r\n chunk.text = $utils.trim(tmpText);\r\n chunks = [];\r\n skipFurtherText = true;\r\n }\r\n }\r\n // Chunk width?\r\n let leftBoundMod = 1;\r\n let rightBoundMod = 1;\r\n if (currentStyle && currentChunkWidth && (currentChunkWidth > chunkWidth)) {\r\n // increase horizontal bounding boxes accordingly\r\n const boundsMod = chunkWidth / currentChunkWidth;\r\n switch (this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n leftBoundMod = boundsMod;\r\n break;\r\n case \"center\":\r\n leftBoundMod = boundsMod;\r\n rightBoundMod = boundsMod;\r\n break;\r\n default:\r\n rightBoundMod = boundsMod;\r\n }\r\n chunkWidth = currentChunkWidth;\r\n }\r\n const chunkHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\r\n if (chunkHeight > lineInfo.height) {\r\n lineInfo.height = chunkHeight;\r\n }\r\n if (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\r\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\r\n }\r\n lineInfo.width += chunkWidth;\r\n lineInfo.left += metrics.actualBoundingBoxLeft / leftBoundMod;\r\n lineInfo.right += metrics.actualBoundingBoxRight / rightBoundMod;\r\n lineInfo.textChunks.push({\r\n style: currentStyle,\r\n fill: currentFill,\r\n text: chunk.text,\r\n width: chunkWidth,\r\n height: chunkHeight,\r\n left: metrics.actualBoundingBoxLeft,\r\n right: metrics.actualBoundingBoxRight,\r\n ascent: metrics.actualBoundingBoxAscent,\r\n offsetX: 0,\r\n offsetY: 0,\r\n textDecoration: currentDecoration,\r\n verticalAlign: currentVerticalAlign\r\n });\r\n //offsetX += chunkWidth;\r\n firstTextChunk = false;\r\n }\r\n if (leftoverChunks) {\r\n //return false;\r\n }\r\n return true;\r\n //}\r\n });\r\n if (this.style.lineHeight instanceof Percent) {\r\n lineInfo.height *= this.style.lineHeight.value;\r\n lineInfo.ascent *= this.style.lineHeight.value;\r\n }\r\n else {\r\n lineInfo.height *= this.style.lineHeight || 1.2;\r\n lineInfo.ascent *= this.style.lineHeight || 1.2;\r\n }\r\n if (minX < lineInfo.left) {\r\n minX = lineInfo.left;\r\n }\r\n if (maxX < lineInfo.right) {\r\n maxX = lineInfo.right;\r\n }\r\n this._textInfo.push(lineInfo);\r\n //lineInfo.offsetY += lineInfo.ascent;\r\n offsetY += lineInfo.height;\r\n // Reset chunks so that it can proceed to the next line\r\n chunks = leftoverChunks || [];\r\n }\r\n });\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n // Adjust chunk internal offsets\r\n $array.each(this._textInfo, (lineInfo, _index) => {\r\n let currentChunkOffset = 0;\r\n $array.each(lineInfo.textChunks, (chunk) => {\r\n chunk.offsetX = currentChunkOffset + chunk.left - lineInfo.left;\r\n chunk.offsetY += lineInfo.height - lineInfo.height * (this.style.baselineRatio || 0.19);\r\n currentChunkOffset += chunk.width;\r\n if (chunk.verticalAlign) {\r\n switch (chunk.verticalAlign) {\r\n case \"super\":\r\n chunk.offsetY -= lineInfo.height / 2 - chunk.height / 2;\r\n break;\r\n case \"sub\":\r\n chunk.offsetY += chunk.height / 2;\r\n break;\r\n }\r\n }\r\n });\r\n });\r\n const bounds = {\r\n left: rtl ? -maxX : -minX,\r\n top: 0,\r\n right: rtl ? minX : maxX,\r\n bottom: offsetY,\r\n };\r\n // We need to fit?\r\n if (oversizedBehavior !== \"none\") {\r\n const ratio = this._fitRatio(bounds);\r\n if (ratio < 1) {\r\n if (oversizedBehavior == \"fit\") {\r\n if ($type.isNumber(this.style.minScale) && (ratio < this.style.minScale)) {\r\n this.textVisible = false;\r\n bounds.left = 0;\r\n bounds.top = 0;\r\n bounds.right = 0;\r\n bounds.bottom = 0;\r\n }\r\n else {\r\n if (!this._originalScale || this._originalScale == 1) {\r\n this._originalScale = this.scale;\r\n }\r\n this.scale = ratio;\r\n this.textVisible = true;\r\n }\r\n }\r\n else if (oversizedBehavior == \"hide\") {\r\n this.textVisible = false;\r\n bounds.left = 0;\r\n bounds.top = 0;\r\n bounds.right = 0;\r\n bounds.bottom = 0;\r\n }\r\n else {\r\n switch (this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n bounds.left = -maxWidth;\r\n bounds.right = 0;\r\n break;\r\n case \"center\":\r\n bounds.left = -maxWidth / 2;\r\n bounds.right = maxWidth / 2;\r\n break;\r\n default:\r\n bounds.left = 0;\r\n bounds.right = maxWidth;\r\n }\r\n this.scale = this._originalScale || 1;\r\n this._originalScale = undefined;\r\n this.textVisible = true;\r\n }\r\n }\r\n else {\r\n this.scale = this._originalScale || 1;\r\n this._originalScale = undefined;\r\n this.textVisible = true;\r\n }\r\n }\r\n context.restore();\r\n ghostContext.restore();\r\n return bounds;\r\n }\r\n _fitRatio(bounds) {\r\n const maxW = this.style.maxWidth;\r\n const maxH = this.style.maxHeight;\r\n if (!$type.isNumber(maxW) && !$type.isNumber(maxH)) {\r\n return 1;\r\n }\r\n const w = bounds.right - bounds.left;\r\n const h = bounds.bottom - bounds.top;\r\n return Math.min(maxW / w || 1, maxH / h || 1);\r\n }\r\n _truncateText(context, text, maxWidth, breakWords = false, fallbackBreakWords = true) {\r\n let width;\r\n do {\r\n if (breakWords) {\r\n text = text.slice(0, -1);\r\n }\r\n else {\r\n let tmp = text.replace(/[^,;:!?\\\\\\/\\s​]+[,;:!?\\\\\\/\\s​]*$/g, \"\");\r\n if ((tmp == \"\" || tmp === text) && fallbackBreakWords) {\r\n breakWords = true;\r\n }\r\n else if (tmp == \"\") {\r\n return text;\r\n }\r\n else {\r\n text = tmp;\r\n }\r\n }\r\n const metrics = this._measureText(text, context);\r\n width = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\r\n } while ((width > maxWidth) && text != \"\");\r\n return text;\r\n }\r\n _measureText(text, context) {\r\n let metrics = context.measureText(text);\r\n let fakeMetrics = {};\r\n if (metrics.actualBoundingBoxAscent == null) {\r\n const div = document.createElement(\"div\");\r\n div.innerText = text;\r\n div.style.visibility = \"hidden\";\r\n div.style.position = \"absolute\";\r\n div.style.top = \"-1000000px;\";\r\n div.style.fontFamily = this.style.fontFamily || \"\";\r\n div.style.fontSize = this.style.fontSize + \"\";\r\n document.body.appendChild(div);\r\n const bbox = div.getBoundingClientRect();\r\n document.body.removeChild(div);\r\n const h = bbox.height;\r\n const w = metrics.width;\r\n let left = 0;\r\n let right = w;\r\n fakeMetrics = {\r\n actualBoundingBoxAscent: h,\r\n actualBoundingBoxDescent: 0,\r\n actualBoundingBoxLeft: left,\r\n actualBoundingBoxRight: right,\r\n fontBoundingBoxAscent: h,\r\n fontBoundingBoxDescent: 0,\r\n width: w\r\n };\r\n //return fake;\r\n }\r\n else {\r\n fakeMetrics = {\r\n actualBoundingBoxAscent: metrics.actualBoundingBoxAscent,\r\n actualBoundingBoxDescent: metrics.actualBoundingBoxDescent,\r\n actualBoundingBoxLeft: metrics.actualBoundingBoxLeft,\r\n actualBoundingBoxRight: metrics.actualBoundingBoxRight,\r\n fontBoundingBoxAscent: metrics.actualBoundingBoxAscent,\r\n fontBoundingBoxDescent: metrics.actualBoundingBoxDescent,\r\n width: metrics.width\r\n };\r\n }\r\n const w = metrics.width;\r\n switch (this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n fakeMetrics.actualBoundingBoxLeft = w;\r\n fakeMetrics.actualBoundingBoxRight = 0;\r\n break;\r\n case \"center\":\r\n fakeMetrics.actualBoundingBoxLeft = w / 2;\r\n fakeMetrics.actualBoundingBoxRight = w / 2;\r\n break;\r\n default:\r\n fakeMetrics.actualBoundingBoxLeft = 0;\r\n fakeMetrics.actualBoundingBoxRight = w;\r\n }\r\n return fakeMetrics;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasTextStyle {\r\n constructor() {\r\n //public wordWrapWidth: number = 100;\r\n Object.defineProperty(this, \"fill\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fillOpacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"textAlign\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontFamily\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontSize\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontWeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontStyle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontVariant\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"textDecoration\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowColor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowBlur\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOffsetX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOffsetY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOpacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // leading?: number;\r\n // letterSpacing?: number;\r\n Object.defineProperty(this, \"lineHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: percent(120)\r\n });\r\n Object.defineProperty(this, \"baselineRatio\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0.19\r\n });\r\n // padding?: number;\r\n // stroke?: number;\r\n // strokeThickness?: number;\r\n // trim?: number;\r\n // wordWrap?: boolean;\r\n Object.defineProperty(this, \"direction\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"textBaseline\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"oversizedBehavior\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"none\"\r\n });\r\n Object.defineProperty(this, \"breakWords\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"ellipsis\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"…\"\r\n });\r\n Object.defineProperty(this, \"maxWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"maxHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"minScale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"ignoreFormatting\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasRadialText extends CanvasText {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"textType\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"circular\"\r\n });\r\n Object.defineProperty(this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"startAngle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"inside\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"orientation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"auto\"\r\n });\r\n Object.defineProperty(this, \"kerning\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_textReversed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n _render(status) {\r\n switch (this.textType) {\r\n case \"circular\":\r\n this._renderCircular(status);\r\n break;\r\n default:\r\n super._render(status);\r\n break;\r\n }\r\n }\r\n _renderCircular(status) {\r\n if (this.textVisible) {\r\n this._prerender(status);\r\n const interactive = this._isInteractive(status);\r\n const context = status.layer.context;\r\n const layerDirty = status.layer.dirty;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n // Savepoint\r\n context.save();\r\n if (interactive) {\r\n ghostContext.save();\r\n }\r\n // We need measurements in order to properly position text for alignment\r\n if (!this._textInfo) {\r\n this._measure(status);\r\n }\r\n // Init\r\n let radius = (this.radius || 0);\r\n let startAngle = (this.startAngle || 0);\r\n let deltaAngle = 0;\r\n let orientation = this.orientation;\r\n let inward = orientation == \"auto\" ? \"auto\" : orientation == \"inward\";\r\n const inside = this.inside;\r\n const align = this.style.textAlign || \"left\";\r\n const kerning = this.kerning || 0;\r\n let clockwise = align == \"left\" ? 1 : -1;\r\n const shouldReverse = !this._textReversed;\r\n // Check if we need to invert the whole stuff\r\n if (inward == \"auto\") {\r\n // Calc max angle so we know whether we need to flip it\r\n let maxAngle = 0;\r\n let midAngle = 0;\r\n $array.each(this._textInfo, (line, _index) => {\r\n const deltaAngle = startAngle + (line.width / (radius - line.height)) / 2 * -clockwise;\r\n if (deltaAngle > maxAngle) {\r\n maxAngle = deltaAngle;\r\n }\r\n });\r\n if (align == \"left\") {\r\n midAngle = (maxAngle + deltaAngle / 2) * $math.DEGREES;\r\n }\r\n else if (align == \"right\") {\r\n midAngle = (maxAngle - deltaAngle / 2) * $math.DEGREES;\r\n }\r\n else {\r\n midAngle = startAngle * $math.DEGREES;\r\n }\r\n midAngle = $math.normalizeAngle(midAngle);\r\n inward = (midAngle >= 270) || (midAngle <= 90);\r\n }\r\n if (inward == true && shouldReverse) {\r\n this._textInfo.reverse();\r\n this._textReversed = true;\r\n }\r\n // if ((inward == false && align == \"left\") || (inward == true && align == \"right\")) {\r\n // \tclockwise *= -1;\r\n // }\r\n // Process text info produced by _measure()\r\n $array.each(this._textInfo, (line, _index) => {\r\n const textHeight = line.height;\r\n // Adjust radius (for `inside = false`)\r\n // Radius adjustment for `inside = false` is below the line calculation\r\n if (!inside) {\r\n radius += textHeight;\r\n }\r\n // Reverse letters if we're painting them counter-clockwise\r\n if (((clockwise == -1 && inward) || (clockwise == 1 && !inward)) && shouldReverse) {\r\n line.textChunks.reverse();\r\n }\r\n // Init angles\r\n let lineStartAngle = startAngle;\r\n deltaAngle = 0;\r\n // Adjust for center-align\r\n if (align == \"center\") {\r\n lineStartAngle += (line.width / (radius - textHeight)) / 2 * -clockwise;\r\n deltaAngle = lineStartAngle - startAngle;\r\n }\r\n // if (inward == \"auto\") {\r\n // \tlet midAngle;\r\n // \tif (align == \"left\") {\r\n // \t\tmidAngle = (lineStartAngle + deltaAngle / 2) * $math.DEGREES;\r\n // \t}\r\n // \telse if () {\r\n // \t\tmidAngle = (lineStartAngle - deltaAngle / 2) * $math.DEGREES;\r\n // \t}\r\n // \tinward = (midAngle >= 270) || (midAngle <= 90);\r\n // }\r\n // Rotate letters if they are facing outward\r\n lineStartAngle += (Math.PI * (inward ? 0 : 1)); // Rotate 180 if outward\r\n // Savepoint\r\n context.save();\r\n if (interactive) {\r\n ghostContext.save();\r\n }\r\n // Assume starting angle\r\n context.rotate(lineStartAngle);\r\n if (interactive) {\r\n ghostContext.rotate(lineStartAngle);\r\n }\r\n let angleShift = 0;\r\n $array.each(line.textChunks, (chunk, _index) => {\r\n // Draw the letter\r\n const char = chunk.text;\r\n const charWidth = chunk.width;\r\n // Rotate half a letter\r\n angleShift = (charWidth / 2) / (radius - textHeight) * clockwise;\r\n context.rotate(angleShift);\r\n if (interactive) {\r\n ghostContext.rotate(angleShift);\r\n }\r\n // Set style\r\n if (chunk.style) {\r\n context.save();\r\n ghostContext.save();\r\n context.font = chunk.style;\r\n if (interactive) {\r\n ghostContext.font = chunk.style;\r\n }\r\n }\r\n if (chunk.fill) {\r\n context.save();\r\n context.fillStyle = chunk.fill.toCSS();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Center letters\r\n context.textBaseline = \"middle\";\r\n context.textAlign = \"center\";\r\n if (interactive) {\r\n ghostContext.textBaseline = \"middle\";\r\n ghostContext.textAlign = \"center\";\r\n }\r\n // Plop the letter\r\n if (layerDirty) {\r\n context.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));\r\n }\r\n if (interactive) {\r\n ghostContext.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));\r\n }\r\n if (chunk.fill) {\r\n context.restore();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Reset style\r\n if (chunk.style) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n // Rotate half a letter and add spacing\r\n angleShift = (charWidth / 2 + kerning) / (radius - textHeight) * clockwise;\r\n context.rotate(angleShift);\r\n if (interactive) {\r\n ghostContext.rotate(angleShift);\r\n }\r\n });\r\n // Restore angle\r\n context.restore();\r\n if (interactive) {\r\n ghostContext.restore();\r\n }\r\n // Adjust radius (for `inside = true`)\r\n if (inside) {\r\n radius -= textHeight;\r\n }\r\n });\r\n // Restore\r\n context.restore();\r\n if (interactive) {\r\n ghostContext.restore();\r\n }\r\n }\r\n }\r\n _measure(status) {\r\n switch (this.textType) {\r\n case \"circular\":\r\n return this._measureCircular(status);\r\n default:\r\n return super._measure(status);\r\n }\r\n }\r\n _measureCircular(status) {\r\n const context = status.layer.context;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n const rtl = this.style.direction == \"rtl\";\r\n const oversizedBehavior = this.style.oversizedBehavior;\r\n const maxWidth = this.style.maxWidth;\r\n const truncate = $type.isNumber(maxWidth) && oversizedBehavior == \"truncate\";\r\n const ellipsis = this.style.ellipsis || \"\";\r\n let ellipsisMetrics;\r\n //const wrap = $type.isNumber(maxWidth) && (oversizedBehavior == \"wrap\" || oversizedBehavior == \"wrap-no-break\");\r\n // Reset text info\r\n this.textVisible = true;\r\n this._textInfo = [];\r\n this._textReversed = false;\r\n // Pre-render\r\n context.save();\r\n ghostContext.save();\r\n this._prerender(status, true);\r\n // Split up text into lines\r\n const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\r\n let styleRestored = true;\r\n let totalWidth = 0;\r\n // Iterate through the lines\r\n let offsetY = 0;\r\n $array.each(lines, (line, _index) => {\r\n // Split up line into format/value chunks\r\n let chunks = TextFormatter.chunk(line, false, this.style.ignoreFormatting);\r\n // Init line object\r\n let lineInfo = {\r\n offsetY: offsetY,\r\n ascent: 0,\r\n width: 0,\r\n height: 0,\r\n left: 0,\r\n right: 0,\r\n textChunks: []\r\n };\r\n let currentStyle;\r\n let currentFill;\r\n let currentChunkWidth;\r\n //while(chunk = chunks.shift()) {\r\n $array.each(chunks, (chunk, _index) => {\r\n // Format chunk\r\n if (chunk.type == \"format\") {\r\n if (chunk.text == \"[/]\") {\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n styleRestored = true;\r\n }\r\n currentFill = undefined;\r\n currentStyle = undefined;\r\n currentChunkWidth = undefined;\r\n }\r\n else {\r\n let format = TextFormatter.getTextStyle(chunk.text);\r\n const fontStyle = this._getFontStyle(format);\r\n context.save();\r\n ghostContext.save();\r\n context.font = fontStyle;\r\n currentStyle = fontStyle;\r\n if (format.fill) {\r\n currentFill = format.fill;\r\n }\r\n if (format.width) {\r\n currentChunkWidth = $type.toNumber(format.width);\r\n }\r\n styleRestored = false;\r\n }\r\n if (truncate) {\r\n ellipsisMetrics = this._measureText(ellipsis, context);\r\n }\r\n }\r\n // Text format\r\n else if (chunk.type == \"value\") {\r\n // Measure each letter\r\n let chars = chunk.text.match(/./ug) || [];\r\n if (rtl) {\r\n chars = $utils.splitString(chunk.text);\r\n chars.reverse();\r\n }\r\n for (let i = 0; i < chars.length; i++) {\r\n const char = chars[i];\r\n // Measure\r\n const metrics = this._measureText(char, context);\r\n let chunkWidth = metrics.width;\r\n // Chunk width?\r\n if (currentStyle && currentChunkWidth && (currentChunkWidth > chunkWidth)) {\r\n chunkWidth = currentChunkWidth;\r\n }\r\n const chunkHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\r\n if (chunkHeight > lineInfo.height) {\r\n lineInfo.height = chunkHeight;\r\n }\r\n if (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\r\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\r\n }\r\n totalWidth += chunkWidth;\r\n // Handle oversized behavior\r\n if (truncate) {\r\n // Measure ellipsis and check if it fits\r\n if (!ellipsisMetrics) {\r\n ellipsisMetrics = this._measureText(ellipsis, context);\r\n }\r\n const ellipsisWidth = ellipsisMetrics.actualBoundingBoxLeft + ellipsisMetrics.actualBoundingBoxRight;\r\n //totalWidth += ellipsisWidth;\r\n if ((totalWidth + ellipsisWidth) > maxWidth) {\r\n if (lineInfo.textChunks.length == 1) {\r\n this.textVisible = false;\r\n }\r\n else {\r\n lineInfo.width += ellipsisWidth;\r\n lineInfo.left += ellipsisMetrics.actualBoundingBoxLeft;\r\n lineInfo.right += ellipsisMetrics.actualBoundingBoxRight;\r\n lineInfo.textChunks.push({\r\n style: currentStyle,\r\n fill: currentFill,\r\n text: ellipsis,\r\n width: ellipsisWidth,\r\n height: chunkHeight + ellipsisMetrics.actualBoundingBoxDescent,\r\n left: ellipsisMetrics.actualBoundingBoxLeft,\r\n right: ellipsisMetrics.actualBoundingBoxRight,\r\n ascent: ellipsisMetrics.actualBoundingBoxAscent,\r\n offsetX: 0,\r\n offsetY: chunkHeight,\r\n textDecoration: undefined\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n lineInfo.width += chunkWidth;\r\n lineInfo.left += metrics.actualBoundingBoxLeft;\r\n lineInfo.right += metrics.actualBoundingBoxRight;\r\n lineInfo.textChunks.push({\r\n style: currentStyle,\r\n fill: currentFill,\r\n text: char,\r\n width: chunkWidth,\r\n height: chunkHeight + metrics.actualBoundingBoxDescent,\r\n left: metrics.actualBoundingBoxLeft,\r\n right: metrics.actualBoundingBoxRight,\r\n ascent: metrics.actualBoundingBoxAscent,\r\n offsetX: 0,\r\n offsetY: chunkHeight,\r\n textDecoration: undefined\r\n });\r\n if (rtl) {\r\n // @todo still needed?\r\n //break;\r\n }\r\n }\r\n }\r\n });\r\n if (this.style.lineHeight instanceof Percent) {\r\n lineInfo.height *= this.style.lineHeight.value;\r\n }\r\n else {\r\n lineInfo.height *= this.style.lineHeight || 1.2;\r\n }\r\n this._textInfo.push(lineInfo);\r\n //lineInfo.offsetY += lineInfo.ascent;\r\n offsetY += lineInfo.height;\r\n });\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n if (oversizedBehavior == \"hide\" && (totalWidth > maxWidth)) {\r\n this.textVisible = false;\r\n }\r\n // Adjust chunk internal offsets\r\n $array.each(this._textInfo, (lineInfo) => {\r\n $array.each(lineInfo.textChunks, (chunk) => {\r\n chunk.offsetY += Math.round((lineInfo.height - chunk.height + (lineInfo.ascent - chunk.ascent)) / 2);\r\n });\r\n });\r\n context.restore();\r\n ghostContext.restore();\r\n return {\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n };\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasImage extends CanvasDisplayObject {\r\n constructor(renderer, image) {\r\n super(renderer);\r\n Object.defineProperty(this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"image\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"tainted\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowColor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowBlur\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOffsetX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOffsetY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOpacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_imageMask\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.image = image;\r\n }\r\n _dispose() {\r\n super._dispose();\r\n if (this._imageMask) {\r\n clearCanvas(this._imageMask);\r\n }\r\n }\r\n getLocalBounds() {\r\n if (!this._localBounds) {\r\n let w = 0;\r\n let h = 0;\r\n if (this.width) {\r\n w = this.width;\r\n }\r\n if (this.height) {\r\n h = this.height;\r\n }\r\n this._localBounds = {\r\n left: 0,\r\n top: 0,\r\n right: w,\r\n bottom: h\r\n };\r\n this._addBounds(this._localBounds);\r\n }\r\n return this._localBounds;\r\n }\r\n _render(status) {\r\n super._render(status);\r\n if (this.image) {\r\n if (this.tainted === undefined) {\r\n this.tainted = isTainted(this.image);\r\n status.layer.tainted = true;\r\n }\r\n if (this.tainted && this._renderer._omitTainted) {\r\n return;\r\n }\r\n if (status.layer.dirty) {\r\n if (this.shadowColor) {\r\n status.layer.context.shadowColor = this.shadowColor.toCSS(this.shadowOpacity || 1);\r\n }\r\n if (this.shadowBlur) {\r\n status.layer.context.shadowBlur = this.shadowBlur;\r\n }\r\n if (this.shadowOffsetX) {\r\n status.layer.context.shadowOffsetX = this.shadowOffsetX;\r\n }\r\n if (this.shadowOffsetY) {\r\n status.layer.context.shadowOffsetY = this.shadowOffsetY;\r\n }\r\n // TODO should this round ?\r\n const width = this.width || this.image.naturalWidth;\r\n const height = this.height || this.image.naturalHeight;\r\n status.layer.context.drawImage(this.image, 0, 0, width, height);\r\n }\r\n if (this.interactive && this._isInteractive(status)) {\r\n const mask = this._getMask(this.image);\r\n this._renderer._ghostLayer.context.drawImage(mask, 0, 0);\r\n }\r\n }\r\n }\r\n clear() {\r\n super.clear();\r\n this.image = undefined;\r\n this._imageMask = undefined;\r\n }\r\n _getMask(image) {\r\n if (this._imageMask === undefined) {\r\n // TODO should this round ?\r\n const width = this.width || image.naturalWidth;\r\n const height = this.height || image.naturalHeight;\r\n // We need to create a second canvas because destination-in clears out the entire canvas\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = width;\r\n canvas.height = height;\r\n const context = canvas.getContext(\"2d\");\r\n context.imageSmoothingEnabled = false;\r\n context.fillStyle = this._getColorId();\r\n context.fillRect(0, 0, width, height);\r\n if (!isTainted(image)) {\r\n context.globalCompositeOperation = \"destination-in\";\r\n context.drawImage(image, 0, 0, width, height);\r\n }\r\n this._imageMask = canvas;\r\n }\r\n return this._imageMask;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasRendererEvent {\r\n constructor(event, originalPoint, point, bbox) {\r\n Object.defineProperty(this, \"event\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: event\r\n });\r\n Object.defineProperty(this, \"originalPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: originalPoint\r\n });\r\n Object.defineProperty(this, \"point\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: point\r\n });\r\n Object.defineProperty(this, \"bbox\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: bbox\r\n });\r\n Object.defineProperty(this, \"id\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"simulated\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"native\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n if ($utils.supports(\"touchevents\") && event instanceof Touch) {\r\n this.id = event.identifier;\r\n }\r\n else {\r\n this.id = null;\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasRenderer extends ArrayDisposer {\r\n constructor(resolution) {\r\n super();\r\n Object.defineProperty(this, \"view\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: document.createElement(\"div\")\r\n });\r\n Object.defineProperty(this, \"_layerDom\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: document.createElement(\"div\")\r\n });\r\n Object.defineProperty(this, \"layers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_dirtyLayers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"defaultLayer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.getLayer(0)\r\n });\r\n Object.defineProperty(this, \"_ghostLayer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new GhostLayer()\r\n });\r\n Object.defineProperty(this, \"_patternCanvas\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: document.createElement(\"canvas\")\r\n });\r\n Object.defineProperty(this, \"_patternContext\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._patternCanvas.getContext(\"2d\")\r\n });\r\n Object.defineProperty(this, \"_realWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_realHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_calculatedWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_calculatedHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"resolution\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"interactionsEnabled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_listeners\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_colorId\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_colorMap\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_forceInteractive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_omitTainted\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n // TODO this should store the Id as well\r\n Object.defineProperty(this, \"_hovering\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Set()\r\n });\r\n Object.defineProperty(this, \"_dragging\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_mousedown\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_lastPointerMoveEvent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"tapToActivate\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"tapToActivateTimeout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 3000\r\n });\r\n Object.defineProperty(this, \"_touchActive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_touchActiveTimeout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n if (resolution == null) {\r\n this.resolution = window.devicePixelRatio;\r\n }\r\n else {\r\n this.resolution = resolution;\r\n }\r\n this.view.style.position = \"absolute\";\r\n this.view.setAttribute(\"aria-hidden\", \"true\");\r\n this.view.appendChild(this._layerDom);\r\n this._disposers.push(new Disposer(() => {\r\n $object.each(this._events, (_key, events) => {\r\n events.disposer.dispose();\r\n });\r\n $array.each(this.layers, (layer) => {\r\n clearCanvas(layer.view);\r\n if (layer.exportableView) {\r\n clearCanvas(layer.exportableView);\r\n }\r\n });\r\n clearCanvas(this._ghostLayer.view);\r\n clearCanvas(this._patternCanvas);\r\n }));\r\n /*\r\n this._disposers.push($utils.addEventListener(this._ghostLayer.view, \"click\", (originalEvent: MouseEvent) => {\r\n const event = this.getEvent(originalEvent);\r\n const target = this._getHitTarget(event.originalPoint, event.bbox);\r\n console.debug(target);\r\n }));\r\n */\r\n // Monitor for possible pixel ratio changes (when page is zoomed)\r\n this._disposers.push($utils.onZoom(() => {\r\n if (resolution == null) {\r\n this.resolution = window.devicePixelRatio;\r\n }\r\n }));\r\n // We need this in order top prevent default touch gestures when dragging\r\n // draggable elements\r\n if ($utils.supports(\"touchevents\")) {\r\n const listener = (ev) => {\r\n if (this._dragging.length !== 0) {\r\n $array.eachContinue(this._dragging, (item) => {\r\n if (item.value.shouldCancelTouch()) {\r\n ev.preventDefault();\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n // If touch down happends, delay touch out\r\n if (this._touchActiveTimeout) {\r\n this._delayTouchDeactivate();\r\n }\r\n };\r\n this._disposers.push($utils.addEventListener(window, \"touchstart\", listener, { passive: false }));\r\n this._disposers.push($utils.addEventListener(this.view, \"touchstart\", listener, { passive: false }));\r\n this._disposers.push($utils.addEventListener(this.view, \"touchmove\", () => {\r\n // If touch is moving, delay touch out\r\n if (this._touchActiveTimeout) {\r\n this._delayTouchDeactivate();\r\n }\r\n }, { passive: true }));\r\n this._disposers.push($utils.addEventListener(window, \"click\", (_ev) => {\r\n this._touchActive = false;\r\n }, { passive: true }));\r\n this._disposers.push($utils.addEventListener(this.view, \"click\", (_ev) => {\r\n window.setTimeout(() => {\r\n this._touchActive = true;\r\n this._delayTouchDeactivate();\r\n }, 100);\r\n }, { passive: true }));\r\n }\r\n // Prevent scrolling of the window when hovering on \"wheelable\" object\r\n if ($utils.supports(\"wheelevents\")) {\r\n this._disposers.push($utils.addEventListener(this.view, \"wheel\", (ev) => {\r\n let prevent = false;\r\n this._hovering.forEach((obj) => {\r\n if (obj.wheelable) {\r\n prevent = true;\r\n return false;\r\n }\r\n });\r\n if (prevent) {\r\n ev.preventDefault();\r\n }\r\n }, { passive: false }));\r\n }\r\n }\r\n /*protected _mouseMoveThrottler: Throttler = new Throttler(() => {\r\n this._dispatchGlobalMousemove(this._lastPointerMoveEvent.event, this._lastPointerMoveEvent.native);\r\n });\r\n */\r\n resetImageArray() {\r\n this._ghostLayer.imageArray = undefined;\r\n }\r\n _delayTouchDeactivate() {\r\n if (this._touchActiveTimeout) {\r\n clearTimeout(this._touchActiveTimeout);\r\n }\r\n if (this.tapToActivateTimeout > 0) {\r\n this._touchActiveTimeout = window.setTimeout(() => {\r\n this._touchActive = false;\r\n }, this.tapToActivateTimeout);\r\n }\r\n }\r\n get debugGhostView() {\r\n return !!this._ghostLayer.view.parentNode;\r\n }\r\n set debugGhostView(value) {\r\n if (value) {\r\n if (!this._ghostLayer.view.parentNode) {\r\n this.view.appendChild(this._ghostLayer.view);\r\n }\r\n }\r\n else {\r\n if (this._ghostLayer.view.parentNode) {\r\n this._ghostLayer.view.parentNode.removeChild(this._ghostLayer.view);\r\n }\r\n }\r\n }\r\n createLinearGradient(x1, y1, x2, y2) {\r\n return this.defaultLayer.context.createLinearGradient(x1, y1, x2, y2);\r\n }\r\n createRadialGradient(x1, y1, radius1, x2, y2, radius2) {\r\n return this.defaultLayer.context.createRadialGradient(x1, y1, radius1, x2, y2, radius2);\r\n }\r\n createPattern(graphics, background, repetition, width, height) {\r\n // const patternCanvas = document.createElement(\"canvas\");\r\n // const patternContext = patternCanvas.getContext(\"2d\")!;\r\n // patternCanvas.width = width;\r\n // patternCanvas.height = height;\r\n // if (fill) {\r\n // \tpatternContext.fillStyle = fill.toCSS();\r\n // \tpatternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height);\r\n // }\r\n // const layer = {\r\n // \tview: patternCanvas,\r\n // \tcontext: patternContext,\r\n // \tvisible: true,\r\n // \torder: 0,\r\n // \twidth: width,\r\n // \theight: height,\r\n // \tdirty: true\r\n // };\r\n // // patternContext.arc(0, 0, 50, 0, .5 * Math.PI);\r\n // // patternContext.stroke();\r\n // image.targetLayer = layer;\r\n // image.render(layer);\r\n //this._layerDom.appendChild(patternCanvas);\r\n this._patternCanvas.width = width;\r\n this._patternCanvas.height = height;\r\n this._patternContext.clearRect(0, 0, width, height);\r\n // patternCanvas.style.width = width * this.resolution + \"px\";\r\n // patternCanvas.style.height = height * this.resolution + \"px\";\r\n background.renderDetached(this._patternContext);\r\n graphics.renderDetached(this._patternContext);\r\n return this._patternContext.createPattern(this._patternCanvas, repetition);\r\n }\r\n makeContainer() {\r\n return new CanvasContainer(this);\r\n }\r\n makeGraphics() {\r\n return new CanvasGraphics(this);\r\n }\r\n makeText(text, style) {\r\n return new CanvasText(this, text, style);\r\n }\r\n makeTextStyle() {\r\n return new CanvasTextStyle();\r\n }\r\n makeRadialText(text, style) {\r\n return new CanvasRadialText(this, text, style);\r\n }\r\n makePicture(image) {\r\n return new CanvasImage(this, image);\r\n }\r\n resizeLayer(layer) {\r\n layer.resize(this._calculatedWidth, this._calculatedHeight, this._calculatedWidth, this._calculatedHeight, this.resolution);\r\n }\r\n resizeGhost() {\r\n this._ghostLayer.resize(this._calculatedWidth, this._calculatedHeight, this._calculatedWidth, this._calculatedHeight, this.resolution);\r\n }\r\n resize(realWidth, realHeight, calculatedWidth, calculatedHeight) {\r\n this._realWidth = realWidth;\r\n this._realHeight = realHeight;\r\n this._calculatedWidth = calculatedWidth;\r\n this._calculatedHeight = calculatedHeight;\r\n $array.each(this.layers, (layer) => {\r\n if (layer) {\r\n layer.dirty = true;\r\n this.resizeLayer(layer);\r\n }\r\n });\r\n this.resizeGhost();\r\n this.view.style.width = calculatedWidth + \"px\";\r\n this.view.style.height = calculatedHeight + \"px\";\r\n }\r\n createDetachedLayer(willReadFrequently = false) {\r\n const view = document.createElement(\"canvas\");\r\n const context = view.getContext(\"2d\", { willReadFrequently: willReadFrequently });\r\n const layer = new CanvasLayer(view, context);\r\n view.style.position = \"absolute\";\r\n view.style.top = \"0px\";\r\n view.style.left = \"0px\";\r\n return layer;\r\n }\r\n getLayerByOrder(order) {\r\n const layers = this.layers;\r\n const length = layers.length;\r\n for (let i = 0; i < length; i++) {\r\n const layer = layers[i];\r\n if (layer.order == order) {\r\n return layer;\r\n }\r\n }\r\n }\r\n getLayer(order, visible = true) {\r\n let existingLayer = this.getLayerByOrder(order);\r\n if (existingLayer) {\r\n return existingLayer;\r\n }\r\n const layer = this.createDetachedLayer(order == 99);\r\n layer.order = order;\r\n layer.visible = visible;\r\n layer.view.className = \"am5-layer-\" + order;\r\n if (layer.visible) {\r\n this.resizeLayer(layer);\r\n }\r\n const layers = this.layers;\r\n layers.push(layer);\r\n layers.sort((a, b) => {\r\n if (a.order > b.order) {\r\n return 1;\r\n }\r\n else if (a.order < b.order) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n const length = layers.length;\r\n const layerIndex = $array.indexOf(layers, layer);\r\n let next;\r\n for (let i = layerIndex + 1; i < length; i++) {\r\n if (layers[i].visible) {\r\n next = layers[i];\r\n break;\r\n }\r\n }\r\n if (layer.visible) {\r\n if (next === undefined) {\r\n this._layerDom.appendChild(layer.view);\r\n }\r\n else {\r\n this._layerDom.insertBefore(layer.view, next.view);\r\n }\r\n }\r\n return layer;\r\n }\r\n render(root) {\r\n this._dirtyLayers.length = 0;\r\n $array.each(this.layers, (layer) => {\r\n if (layer) {\r\n if (layer.dirty && layer.visible) {\r\n this._dirtyLayers.push(layer);\r\n layer.clear();\r\n }\r\n }\r\n });\r\n this._ghostLayer.clear();\r\n root.render({\r\n inactive: null,\r\n layer: this.defaultLayer,\r\n });\r\n this._ghostLayer.context.restore();\r\n //setTimeout(() => {\r\n // Remove this after the Chrome bug is fixed:\r\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1279394\r\n $array.each(this.layers, (layer) => {\r\n if (layer) {\r\n const context = layer.context;\r\n context.beginPath();\r\n context.moveTo(0, 0);\r\n context.stroke();\r\n }\r\n });\r\n $array.each(this._dirtyLayers, (layer) => {\r\n layer.context.restore();\r\n layer.dirty = false;\r\n });\r\n //}, 100)\r\n if (this._hovering.size && this._lastPointerMoveEvent) {\r\n const { events, target, native } = this._lastPointerMoveEvent;\r\n //this._mouseMoveThrottler.run();\r\n $array.each(events, (event) => {\r\n this._dispatchGlobalMousemove(event, target, native);\r\n });\r\n }\r\n }\r\n paintId(obj) {\r\n const id = distributeId(++this._colorId);\r\n const color = Color.fromHex(id).toCSS();\r\n this._colorMap[color] = obj;\r\n return color;\r\n }\r\n _removeObject(obj) {\r\n if (obj._colorId !== undefined) {\r\n delete this._colorMap[obj._colorId];\r\n }\r\n }\r\n // protected _identifyObjectByColor(colorId: number): CanvasDisplayObject | undefined {\r\n // \treturn this._colorMap[colorId];\r\n // }\r\n _adjustBoundingBox(bbox) {\r\n const margin = this._ghostLayer.margin;\r\n return new DOMRect(-margin.left, -margin.top, bbox.width + margin.left + margin.right, bbox.height + margin.top + margin.bottom);\r\n }\r\n getEvent(originalEvent, adjustPoint = true) {\r\n const bbox = this.view.getBoundingClientRect();\r\n const x = originalEvent.clientX || 0;\r\n const y = originalEvent.clientY || 0;\r\n const widthScale = this._calculatedWidth / this._realWidth;\r\n const heightScale = this._calculatedHeight / this._realHeight;\r\n const originalPoint = {\r\n x: x - bbox.left,\r\n y: y - bbox.top,\r\n };\r\n const point = {\r\n x: (x - (adjustPoint ? bbox.left : 0)) * widthScale,\r\n y: (y - (adjustPoint ? bbox.top : 0)) * heightScale,\r\n };\r\n return new CanvasRendererEvent(originalEvent, originalPoint, point, this._adjustBoundingBox(bbox));\r\n }\r\n _getHitTarget(point, bbox, target) {\r\n if (bbox.width === 0 || bbox.height === 0 || point.x < bbox.left || point.x > bbox.right || point.y < bbox.top || point.y > bbox.bottom) {\r\n return;\r\n }\r\n if (!target || !this._layerDom.contains(target)) {\r\n return;\r\n }\r\n const pixel = this._ghostLayer.getImageData(point, bbox);\r\n if (pixel.data[0] === 0 && pixel.data[1] === 0 && pixel.data[2] === 0) {\r\n return false;\r\n }\r\n const colorId = Color.fromRGB(pixel.data[0], pixel.data[1], pixel.data[2]).toCSS();\r\n const hit = this._colorMap[colorId];\r\n return hit;\r\n }\r\n getObjectAtPoint(point) {\r\n const data = this._ghostLayer.getImageArray(point);\r\n if (data[0] === 0 && data[1] === 0 && data[2] === 0) {\r\n return undefined;\r\n }\r\n const colorId = Color.fromRGB(data[0], data[1], data[2]).toCSS();\r\n const hit = this._colorMap[colorId];\r\n return hit;\r\n }\r\n _withEvents(key, f) {\r\n const events = this._events[key];\r\n if (events !== undefined) {\r\n events.dispatching = true;\r\n try {\r\n f(events);\r\n }\r\n finally {\r\n events.dispatching = false;\r\n if (events.cleanup) {\r\n events.cleanup = false;\r\n $array.keepIf(events.callbacks, (callback) => {\r\n return !callback.disposed;\r\n });\r\n if (events.callbacks.length === 0) {\r\n events.disposer.dispose();\r\n delete this._events[key];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _dispatchEventAll(key, event) {\r\n if (!this.interactionsEnabled) {\r\n return;\r\n }\r\n this._withEvents(key, (events) => {\r\n $array.each(events.callbacks, (callback) => {\r\n if (!callback.disposed) {\r\n callback.callback.call(callback.context, event);\r\n }\r\n });\r\n });\r\n }\r\n _dispatchEvent(key, target, event) {\r\n if (!this.interactionsEnabled) {\r\n return false;\r\n }\r\n let dispatched = false;\r\n this._withEvents(key, (events) => {\r\n $array.each(events.callbacks, (callback) => {\r\n if (!callback.disposed && callback.object === target) {\r\n callback.callback.call(callback.context, event);\r\n dispatched = true;\r\n }\r\n });\r\n });\r\n return dispatched;\r\n }\r\n _dispatchMousedown(originalEvent, originalTarget) {\r\n const button = originalEvent.button;\r\n if (button != 0 && button != 2 && button != 1 && button !== undefined) {\r\n // Ignore non-primary mouse buttons\r\n return;\r\n }\r\n const event = this.getEvent(originalEvent);\r\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\r\n if (target) {\r\n const id = event.id;\r\n let dragged = false;\r\n eachTargets(target, (obj) => {\r\n const info = { id: id, value: obj };\r\n this._mousedown.push(info);\r\n if (!dragged && this._dispatchEvent(\"pointerdown\", obj, event)) {\r\n // Only dispatch the first element which matches\r\n dragged = true;\r\n const has = this._dragging.some((x) => {\r\n return x.value === obj && x.id === id;\r\n });\r\n if (!has) {\r\n this._dragging.push(info);\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n }\r\n _dispatchGlobalMousemove(originalEvent, originalTarget, native) {\r\n const event = this.getEvent(originalEvent);\r\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\r\n event.native = native;\r\n if (target) {\r\n this._hovering.forEach((obj) => {\r\n if (!obj.contains(target)) {\r\n this._hovering.delete(obj);\r\n if (obj.cursorOverStyle) {\r\n $utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle);\r\n }\r\n this._dispatchEvent(\"pointerout\", obj, event);\r\n }\r\n });\r\n if (event.native) {\r\n eachTargets(target, (obj) => {\r\n if (!this._hovering.has(obj)) {\r\n this._hovering.add(obj);\r\n if (obj.cursorOverStyle) {\r\n obj._replacedCursorStyle = $utils.getStyle(document.body, \"cursor\");\r\n $utils.setStyle(document.body, \"cursor\", obj.cursorOverStyle);\r\n }\r\n this._dispatchEvent(\"pointerover\", obj, event);\r\n }\r\n return true;\r\n });\r\n }\r\n //} else if (target === false) {\r\n }\r\n else {\r\n this._hovering.forEach((obj) => {\r\n if (obj.cursorOverStyle) {\r\n $utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle);\r\n }\r\n this._dispatchEvent(\"pointerout\", obj, event);\r\n });\r\n this._hovering.clear();\r\n }\r\n this._dispatchEventAll(\"globalpointermove\", event);\r\n }\r\n removeHovering(graphics) {\r\n this._hovering.delete(graphics);\r\n if (graphics.cursorOverStyle) {\r\n $utils.setStyle(document.body, \"cursor\", graphics._replacedCursorStyle);\r\n }\r\n }\r\n _dispatchGlobalMouseup(originalEvent, native) {\r\n const event = this.getEvent(originalEvent);\r\n event.native = native;\r\n //const target = this._getHitTarget(event.originalPoint);\r\n this._dispatchEventAll(\"globalpointerup\", event);\r\n }\r\n _dispatchDragMove(originalEvent) {\r\n if (this._dragging.length !== 0) {\r\n const event = this.getEvent(originalEvent);\r\n const id = event.id;\r\n this._dragging.forEach((obj) => {\r\n if (obj.id === id) {\r\n this._dispatchEvent(\"pointermove\", obj.value, event);\r\n }\r\n });\r\n }\r\n }\r\n _dispatchDragEnd(originalEvent, originalTarget) {\r\n const button = originalEvent.button;\r\n let clickevent;\r\n if (button == 0 || button === undefined) {\r\n clickevent = \"click\";\r\n }\r\n else if (button == 2) {\r\n clickevent = \"rightclick\";\r\n }\r\n else if (button == 1) {\r\n clickevent = \"middleclick\";\r\n }\r\n else {\r\n // Ignore non-primary mouse buttons\r\n return;\r\n }\r\n const event = this.getEvent(originalEvent);\r\n const id = event.id;\r\n if (this._mousedown.length !== 0) {\r\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\r\n if (target) {\r\n this._mousedown.forEach((obj) => {\r\n if (obj.id === id && obj.value.contains(target)) {\r\n this._dispatchEvent(clickevent, obj.value, event);\r\n }\r\n });\r\n }\r\n this._mousedown.length = 0;\r\n }\r\n if (this._dragging.length !== 0) {\r\n this._dragging.forEach((obj) => {\r\n if (obj.id === id) {\r\n this._dispatchEvent(\"pointerup\", obj.value, event);\r\n }\r\n });\r\n this._dragging.length = 0;\r\n }\r\n }\r\n _dispatchDoubleClick(originalEvent, originalTarget) {\r\n const event = this.getEvent(originalEvent);\r\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\r\n if (target) {\r\n eachTargets(target, (obj) => {\r\n if (this._dispatchEvent(\"dblclick\", obj, event)) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n _dispatchWheel(originalEvent, originalTarget) {\r\n const event = this.getEvent(originalEvent);\r\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\r\n if (target) {\r\n eachTargets(target, (obj) => {\r\n if (this._dispatchEvent(\"wheel\", obj, event)) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n _makeSharedEvent(key, f) {\r\n if (this._listeners[key] === undefined) {\r\n const listener = f();\r\n this._listeners[key] = new CounterDisposer(() => {\r\n delete this._listeners[key];\r\n listener.dispose();\r\n });\r\n }\r\n return this._listeners[key].increment();\r\n }\r\n _onPointerEvent(name, f) {\r\n let native = false;\r\n let timer = null;\r\n function clear() {\r\n timer = null;\r\n native = false;\r\n }\r\n return new MultiDisposer([\r\n new Disposer(() => {\r\n if (timer !== null) {\r\n clearTimeout(timer);\r\n }\r\n clear();\r\n }),\r\n $utils.addEventListener(this.view, $utils.getRendererEvent(name), (_) => {\r\n native = true;\r\n if (timer !== null) {\r\n clearTimeout(timer);\r\n }\r\n timer = window.setTimeout(clear, 0);\r\n }),\r\n onPointerEvent(window, name, (ev, target) => {\r\n if (timer !== null) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n f(ev, target, native);\r\n native = false;\r\n }),\r\n ]);\r\n }\r\n // This ensures that only a single DOM event is added (e.g. only a single mousemove event listener)\r\n _initEvent(key) {\r\n switch (key) {\r\n case \"globalpointermove\":\r\n case \"pointerover\":\r\n case \"pointerout\":\r\n return this._makeSharedEvent(\"pointermove\", () => {\r\n const listener = (events, target, native) => {\r\n this._lastPointerMoveEvent = { events, target, native };\r\n $array.each(events, (event) => {\r\n this._dispatchGlobalMousemove(event, target, native);\r\n });\r\n };\r\n return new MultiDisposer([\r\n this._onPointerEvent(\"pointerdown\", listener),\r\n this._onPointerEvent(\"pointermove\", listener),\r\n ]);\r\n });\r\n case \"globalpointerup\":\r\n return this._makeSharedEvent(\"pointerup\", () => {\r\n const mouseup = this._onPointerEvent(\"pointerup\", (events, target, native) => {\r\n $array.each(events, (event) => {\r\n this._dispatchGlobalMouseup(event, native);\r\n });\r\n this._lastPointerMoveEvent = { events, target, native };\r\n });\r\n const pointercancel = this._onPointerEvent(\"pointercancel\", (events, target, native) => {\r\n $array.each(events, (event) => {\r\n this._dispatchGlobalMouseup(event, native);\r\n });\r\n this._lastPointerMoveEvent = { events, target, native };\r\n });\r\n return new Disposer(() => {\r\n mouseup.dispose();\r\n pointercancel.dispose();\r\n });\r\n });\r\n case \"click\":\r\n case \"rightclick\":\r\n case \"middleclick\":\r\n case \"pointerdown\":\r\n /*\r\n return this._makeSharedEvent(\"pointerdown\", () => {\r\n return this._onPointerEvent(\"pointerdown\", (event, target, native) => {\r\n this._lastPointerMoveEvent = { event, target, native };\r\n this._dispatchMousedown(event)\r\n });\r\n });\r\n */\r\n case \"pointermove\":\r\n case \"pointerup\":\r\n return this._makeSharedEvent(\"pointerdown\", () => {\r\n //const throttler = new Throttler();\r\n const mousedown = this._onPointerEvent(\"pointerdown\", (events, target) => {\r\n $array.each(events, (ev) => {\r\n this._dispatchMousedown(ev, target);\r\n });\r\n });\r\n // TODO handle throttling properly for multitouch\r\n const mousemove = this._onPointerEvent(\"pointermove\", (ev) => {\r\n //throttler.throttle(() => {\r\n $array.each(ev, (ev) => {\r\n this._dispatchDragMove(ev);\r\n });\r\n //});\r\n });\r\n const mouseup = this._onPointerEvent(\"pointerup\", (ev, target) => {\r\n $array.each(ev, (ev) => {\r\n this._dispatchDragEnd(ev, target);\r\n });\r\n });\r\n const pointercancel = this._onPointerEvent(\"pointercancel\", (ev, target) => {\r\n $array.each(ev, (ev) => {\r\n this._dispatchDragEnd(ev, target);\r\n });\r\n });\r\n return new Disposer(() => {\r\n mousedown.dispose();\r\n mousemove.dispose();\r\n mouseup.dispose();\r\n pointercancel.dispose();\r\n });\r\n });\r\n case \"dblclick\":\r\n return this._makeSharedEvent(\"dblclick\", () => {\r\n return this._onPointerEvent(\"dblclick\", (ev, target) => {\r\n $array.each(ev, (ev) => {\r\n this._dispatchDoubleClick(ev, target);\r\n });\r\n });\r\n });\r\n case \"wheel\":\r\n return this._makeSharedEvent(\"wheel\", () => {\r\n return $utils.addEventListener(this.view, $utils.getRendererEvent(\"wheel\"), (event) => {\r\n this._dispatchWheel(event, $utils.getEventTarget(event));\r\n }, { passive: false });\r\n });\r\n }\r\n }\r\n _addEvent(object, key, callback, context) {\r\n let events = this._events[key];\r\n if (events === undefined) {\r\n events = this._events[key] = {\r\n disposer: this._initEvent(key),\r\n callbacks: [],\r\n dispatching: false,\r\n cleanup: false,\r\n };\r\n }\r\n const listener = { object, context, callback, disposed: false };\r\n events.callbacks.push(listener);\r\n return new Disposer(() => {\r\n listener.disposed = true;\r\n if (events.dispatching) {\r\n events.cleanup = true;\r\n }\r\n else {\r\n $array.removeFirst(events.callbacks, listener);\r\n if (events.callbacks.length === 0) {\r\n events.disposer.dispose();\r\n delete this._events[key];\r\n }\r\n }\r\n });\r\n }\r\n getCanvas(root, options) {\r\n // Make sure everything is rendered\r\n this.render(root);\r\n if (!options) {\r\n options = {};\r\n }\r\n let scale = this.resolution;\r\n let canvasWidth = Math.floor(this._calculatedWidth * this.resolution);\r\n let canvasHeight = Math.floor(this._calculatedHeight * this.resolution);\r\n // Check if we need to scale\r\n if (options.minWidth && (options.minWidth > canvasWidth)) {\r\n let minScale = options.minWidth / canvasWidth;\r\n if (minScale > scale) {\r\n scale = minScale * this.resolution;\r\n }\r\n }\r\n if (options.minHeight && (options.minHeight > canvasHeight)) {\r\n let minScale = options.minHeight / canvasHeight;\r\n if (minScale > scale) {\r\n scale = minScale * this.resolution;\r\n }\r\n }\r\n if (options.maxWidth && (options.maxWidth < canvasWidth)) {\r\n let maxScale = options.maxWidth / canvasWidth;\r\n if (maxScale < scale) {\r\n scale = maxScale * this.resolution;\r\n }\r\n }\r\n if (options.maxHeight && (options.maxHeight > canvasHeight)) {\r\n let maxScale = options.maxHeight / canvasHeight;\r\n if (maxScale < scale) {\r\n scale = maxScale * this.resolution;\r\n }\r\n }\r\n // Check if we need to compensate for pixel ratio\r\n if (options.maintainPixelRatio) {\r\n scale /= this.resolution;\r\n }\r\n // Init list canvases to remove from DOM after export\r\n const canvases = [];\r\n // Set up new canvas for export\r\n let forceRender = false;\r\n const canvas = document.createElement(\"canvas\");\r\n if (scale != this.resolution) {\r\n forceRender = true;\r\n canvasWidth = canvasWidth * scale / this.resolution;\r\n canvasHeight = canvasHeight * scale / this.resolution;\r\n }\r\n canvas.width = canvasWidth;\r\n canvas.height = canvasHeight;\r\n // Add to DOM so it inherits CSS\r\n canvas.style.position = \"fixed\";\r\n canvas.style.top = \"-10000px\";\r\n this.view.appendChild(canvas);\r\n canvases.push(canvas);\r\n // Context\r\n const context = canvas.getContext(\"2d\");\r\n let width = 0;\r\n let height = 0;\r\n let needRerender = false;\r\n $array.each(this.layers, (layer) => {\r\n if (layer && layer.visible) {\r\n if (layer.tainted || forceRender) {\r\n needRerender = true;\r\n layer.exportableView = layer.view;\r\n layer.exportableContext = layer.context;\r\n layer.view = document.createElement(\"canvas\");\r\n // Add to DOM so it inherits CSS\r\n layer.view.style.position = \"fixed\";\r\n layer.view.style.top = \"-10000px\";\r\n this.view.appendChild(layer.view);\r\n canvases.push(layer.view);\r\n let extraX = 0;\r\n let extraY = 0;\r\n if (layer.margin) {\r\n extraX += layer.margin.left || 0 + layer.margin.right || 0;\r\n extraY += layer.margin.top || 0 + layer.margin.bottom || 0;\r\n }\r\n layer.view.width = canvasWidth + extraX;\r\n layer.view.height = canvasHeight + extraY;\r\n layer.context = layer.view.getContext(\"2d\");\r\n layer.dirty = true;\r\n layer.scale = scale;\r\n }\r\n }\r\n });\r\n if (needRerender) {\r\n this._omitTainted = true;\r\n this.render(root);\r\n this._omitTainted = false;\r\n }\r\n $array.each(this.layers, (layer) => {\r\n if (layer && layer.visible) {\r\n // Layer is fine. Just plop it into our target canvas\r\n let x = 0;\r\n let y = 0;\r\n if (layer.margin) {\r\n x = -(layer.margin.left || 0) * this.resolution;\r\n y = -(layer.margin.top || 0) * this.resolution;\r\n }\r\n context.drawImage(layer.view, x, y);\r\n // Restore layer original canvas\r\n if (layer.exportableView) {\r\n layer.view = layer.exportableView;\r\n layer.exportableView = undefined;\r\n }\r\n if (layer.exportableContext) {\r\n layer.context = layer.exportableContext;\r\n layer.exportableContext = undefined;\r\n }\r\n if (width < layer.view.clientWidth) {\r\n width = layer.view.clientWidth;\r\n }\r\n if (height < layer.view.clientHeight) {\r\n height = layer.view.clientHeight;\r\n }\r\n layer.scale = undefined;\r\n }\r\n });\r\n canvas.style.width = width + \"px\";\r\n canvas.style.height = height + \"px\";\r\n $array.each(canvases, (canvas) => {\r\n canvas.style.position = \"\";\r\n canvas.style.top = \"\";\r\n this.view.removeChild(canvas);\r\n });\r\n return canvas;\r\n }\r\n}\r\nclass GhostLayer {\r\n constructor() {\r\n Object.defineProperty(this, \"view\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"context\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"margin\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n }\r\n });\r\n Object.defineProperty(this, \"_resolution\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"imageArray\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.view = document.createElement(\"canvas\");\r\n this.context = this.view.getContext(\"2d\", { alpha: false, willReadFrequently: true });\r\n this.context.imageSmoothingEnabled = false;\r\n this.view.style.position = \"absolute\";\r\n this.view.style.top = \"0px\";\r\n this.view.style.left = \"0px\";\r\n }\r\n resize(canvasWidth, canvasHeight, domWidth, domHeight, resolution) {\r\n this._resolution = resolution;\r\n canvasWidth += (this.margin.left + this.margin.right);\r\n canvasHeight += (this.margin.top + this.margin.bottom);\r\n // TODO this should take into account calculateSize\r\n domWidth += (this.margin.left + this.margin.right);\r\n domHeight += (this.margin.top + this.margin.bottom);\r\n this.view.style.left = -this.margin.left + \"px\";\r\n this.view.style.top = -this.margin.top + \"px\";\r\n this._width = Math.floor(canvasWidth * resolution);\r\n this._height = Math.floor(canvasHeight * resolution);\r\n this.view.width = this._width;\r\n this.view.style.width = domWidth + \"px\";\r\n this.view.height = this._height;\r\n this.view.style.height = domHeight + \"px\";\r\n }\r\n getImageData(point, bbox) {\r\n return this.context.getImageData(\r\n // TODO should this round ?\r\n Math.round(((point.x - bbox.left) / bbox.width) * this._width), Math.round(((point.y - bbox.top) / bbox.height) * this._height), 1, 1);\r\n }\r\n getImageArray(point) {\r\n if (!this.imageArray) {\r\n this.imageArray = this.context.getImageData(0, 0, this._width, this._height).data;\r\n }\r\n const data = this.imageArray;\r\n const x = Math.round(point.x * this._resolution);\r\n const y = Math.round(point.y * this._resolution);\r\n const i = (y * this._width + x) * 4;\r\n return [data[i], data[i + 1], data[i + 2], data[i + 3]];\r\n }\r\n setMargin(layers) {\r\n this.margin.left = 0;\r\n this.margin.right = 0;\r\n this.margin.top = 0;\r\n this.margin.bottom = 0;\r\n $array.each(layers, (layer) => {\r\n if (layer.margin) {\r\n this.margin.left = Math.max(this.margin.left, layer.margin.left);\r\n this.margin.right = Math.max(this.margin.right, layer.margin.right);\r\n this.margin.top = Math.max(this.margin.top, layer.margin.top);\r\n this.margin.bottom = Math.max(this.margin.bottom, layer.margin.bottom);\r\n }\r\n });\r\n }\r\n clear() {\r\n this.context.save();\r\n this.context.fillStyle = '#000';\r\n this.context.fillRect(0, 0, this._width, this._height);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasLayer {\r\n constructor(view, context) {\r\n Object.defineProperty(this, \"view\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"context\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"tainted\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"margin\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"order\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"visible\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"scale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"dirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"exportableView\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"exportableContext\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n this.view = view;\r\n this.context = context;\r\n }\r\n resize(canvasWidth, canvasHeight, domWidth, domHeight, resolution) {\r\n // TODO should this take into account calculateSize ?\r\n if (this.width != null) {\r\n canvasWidth = this.width;\r\n domWidth = this.width;\r\n }\r\n // TODO should this take into account calculateSize ?\r\n if (this.height != null) {\r\n canvasHeight = this.height;\r\n domHeight = this.height;\r\n }\r\n if (this.margin) {\r\n canvasWidth += (this.margin.left + this.margin.right);\r\n canvasHeight += (this.margin.top + this.margin.bottom);\r\n // TODO this should take into account calculateSize\r\n domWidth += (this.margin.left + this.margin.right);\r\n domHeight += (this.margin.top + this.margin.bottom);\r\n this.view.style.left = -this.margin.left + \"px\";\r\n this.view.style.top = -this.margin.top + \"px\";\r\n }\r\n else {\r\n this.view.style.left = \"0px\";\r\n this.view.style.top = \"0px\";\r\n }\r\n this._width = Math.floor(canvasWidth * resolution);\r\n this._height = Math.floor(canvasHeight * resolution);\r\n this.view.width = this._width;\r\n this.view.style.width = domWidth + \"px\";\r\n this.view.height = this._height;\r\n this.view.style.height = domHeight + \"px\";\r\n }\r\n clear() {\r\n this.context.save();\r\n this.context.clearRect(0, 0, this._width, this._height);\r\n }\r\n}\r\n","import { AnimationState } from \"./util/Animation\";\r\nimport { Container } from \"./render/Container\";\r\nimport { Text } from \"./render/Text\";\r\nimport { HorizontalLayout } from \"./render/HorizontalLayout\";\r\nimport { VerticalLayout } from \"./render/VerticalLayout\";\r\nimport { GridLayout } from \"./render/GridLayout\";\r\nimport { Disposer } from \"./util/Disposer\";\r\nimport { ResizeSensor } from \"./util/ResizeSensor\";\r\nimport { InterfaceColors } from \"./util/InterfaceColors\";\r\nimport { Graphics } from \"./render/Graphics\";\r\nimport { Rectangle } from \"./render/Rectangle\";\r\nimport { Tooltip } from \"./render/Tooltip\";\r\nimport { NumberFormatter } from \"./util/NumberFormatter\";\r\nimport { DateFormatter } from \"./util/DateFormatter\";\r\nimport { DurationFormatter } from \"./util/DurationFormatter\";\r\nimport { Language } from \"./util/Language\";\r\nimport { EventDispatcher } from \"./util/EventDispatcher\";\r\nimport { DefaultTheme } from \"../themes/DefaultTheme\";\r\nimport { CanvasRenderer } from \"./render/backend/CanvasRenderer\";\r\nimport { p100, percent } from \"./util/Percent\";\r\nimport { color } from \"./util/Color\";\r\nimport { populateString } from \"./util/PopulateString\";\r\nimport { registry } from \"./Registry\";\r\nimport * as $order from \"./util/Order\";\r\nimport * as $array from \"./util/Array\";\r\nimport * as $object from \"./util/Object\";\r\nimport * as $utils from \"./util/Utils\";\r\nimport * as $type from \"./util/Type\";\r\nimport en from \"../../locales/en\";\r\nfunction rAF(fps, callback) {\r\n if (fps == null) {\r\n requestAnimationFrame(callback);\r\n }\r\n else {\r\n setTimeout(() => {\r\n requestAnimationFrame(callback);\r\n }, 1000 / fps);\r\n }\r\n}\r\n// TODO implement Disposer\r\n/**\r\n * Root element of the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#Root_element} for more info\r\n */\r\nexport class Root {\r\n constructor(id, settings = {}, isReal) {\r\n /**\r\n * A reference to original chart container (div element).\r\n */\r\n Object.defineProperty(this, \"dom\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_inner\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_settings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_isDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isDirtyParents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isDirtyAnimation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirtyParents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirtyBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirtyPositions\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_ticker\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_tickers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_updateTick\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n /**\r\n * Root's event dispatcher.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new EventDispatcher()\r\n });\r\n /**\r\n * @ignore\r\n * @todo needs description\r\n */\r\n Object.defineProperty(this, \"animationTime\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_animations\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_renderer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_rootContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Main content container.\r\n */\r\n Object.defineProperty(this, \"container\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A [[Container]] used to display tooltips in.\r\n */\r\n Object.defineProperty(this, \"tooltipContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipContainerSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltip\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // Locale-related\r\n /**\r\n * @ignore\r\n */\r\n Object.defineProperty(this, \"language\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Language.new(this, {})\r\n });\r\n /**\r\n * Locale used by the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/}\r\n */\r\n Object.defineProperty(this, \"locale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: en\r\n });\r\n // Date-time related\r\n /**\r\n * Use UTC when formatting date/time.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/#utc-and-time-zones} for more info\r\n */\r\n Object.defineProperty(this, \"utc\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * If set, will format date/time in specific time zone.\r\n *\r\n * The value should be named time zone, e.g.:\r\n * `\"America/Vancouver\"`, `\"Australia/Sydney\"`, `\"UTC\"`.\r\n *\r\n * NOTE: Using time zone feature may noticeable affect performance of the\r\n * chart, especially with large data sets, since every single date will need\r\n * to be recalculated.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#time-zone} for more info\r\n * @since 5.1.0\r\n */\r\n Object.defineProperty(this, \"timezone\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * The maximum FPS that the Root will run at.\r\n *\r\n * If `undefined` it will run at the highest FPS.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Performance} for more info\r\n */\r\n Object.defineProperty(this, \"fps\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Number formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-numbers/} for more info\r\n */\r\n Object.defineProperty(this, \"numberFormatter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: NumberFormatter.new(this, {})\r\n });\r\n /**\r\n * Date/time formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n */\r\n Object.defineProperty(this, \"dateFormatter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: DateFormatter.new(this, {})\r\n });\r\n /**\r\n * Duration formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n */\r\n Object.defineProperty(this, \"durationFormatter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: DurationFormatter.new(this, {})\r\n });\r\n // Accessibility\r\n /**\r\n * Global tab index for using for the whole chart\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/accessibility/} for more info\r\n */\r\n Object.defineProperty(this, \"tabindex\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n //@todo maybe make this better\r\n Object.defineProperty(this, \"_tabindexes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_a11yD\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_focusElementDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_focusElementContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_focusedSprite\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_isShift\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_keyboardDragPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipElementContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_readerAlertElement\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_logo\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipDiv\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Used for dynamically-created CSS and JavaScript with strict source policies.\r\n */\r\n Object.defineProperty(this, \"nonce\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Special color set to be used for various controls.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Interface_colors} for more info\r\n */\r\n Object.defineProperty(this, \"interfaceColors\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * An instance of vertical layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default VerticalLayout.new()\r\n */\r\n Object.defineProperty(this, \"verticalLayout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: VerticalLayout.new(this, {})\r\n });\r\n /**\r\n * An instance of horizontal layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default HorizontalLayout.new()\r\n */\r\n Object.defineProperty(this, \"horizontalLayout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: HorizontalLayout.new(this, {})\r\n });\r\n /**\r\n * An instance of grid layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default VerticalLayout.new()\r\n */\r\n Object.defineProperty(this, \"gridLayout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: GridLayout.new(this, {})\r\n });\r\n Object.defineProperty(this, \"_paused\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * Indicates whether chart should resized automatically when parent container\r\n * width and/or height changes.\r\n *\r\n * If disabled (`autoResize = false`) you can make the chart resize manually\r\n * by calling root element's `resize()` method.\r\n */\r\n Object.defineProperty(this, \"autoResize\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_fontHash\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"\"\r\n });\r\n Object.defineProperty(this, \"_isDisposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_disposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_resizeSensorDisposer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltips\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_htmlElementContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_htmlEnabledContainers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n this._settings = settings;\r\n if (settings.accessible == false) {\r\n this._a11yD = true;\r\n }\r\n if (settings.useSafeResolution == null) {\r\n settings.useSafeResolution = true;\r\n }\r\n let resolution;\r\n if (settings.useSafeResolution) {\r\n resolution = $utils.getSafeResolution();\r\n }\r\n this._renderer = new CanvasRenderer(resolution);\r\n let dom;\r\n if (id instanceof HTMLElement) {\r\n dom = id;\r\n }\r\n else {\r\n dom = document.getElementById(id);\r\n }\r\n $array.each(registry.rootElements, (root) => {\r\n if (root.dom === dom) {\r\n throw new Error(\"You cannot have multiple Roots on the same DOM node\");\r\n }\r\n });\r\n this.interfaceColors = InterfaceColors.new(this, {});\r\n if (dom === null) {\r\n throw new Error(\"Could not find HTML element with id `\" + id + \"`\");\r\n }\r\n this.dom = dom;\r\n let inner = document.createElement(\"div\");\r\n inner.style.position = \"relative\";\r\n inner.style.width = \"100%\";\r\n inner.style.height = \"100%\";\r\n dom.appendChild(inner);\r\n const tooltipContainerBounds = settings.tooltipContainerBounds;\r\n if (tooltipContainerBounds) {\r\n this._tooltipContainerSettings = tooltipContainerBounds;\r\n }\r\n this._inner = inner;\r\n this._updateComputedStyles();\r\n registry.rootElements.push(this);\r\n }\r\n static new(id, settings) {\r\n const root = new Root(id, settings, true);\r\n root._init();\r\n return root;\r\n }\r\n moveDOM(id) {\r\n let dom;\r\n if (id instanceof HTMLElement) {\r\n dom = id;\r\n }\r\n else {\r\n dom = document.getElementById(id);\r\n }\r\n if (dom) {\r\n while (this.dom.childNodes.length > 0) {\r\n dom.appendChild(this.dom.childNodes[0]);\r\n }\r\n this.dom = dom;\r\n this._initResizeSensor();\r\n this.resize();\r\n }\r\n }\r\n _handleLogo() {\r\n if (this._logo) {\r\n const w = this.dom.offsetWidth;\r\n const h = this.dom.offsetHeight;\r\n if ((w <= 150) || (h <= 60)) {\r\n this._logo.hide();\r\n }\r\n else {\r\n this._logo.show();\r\n }\r\n }\r\n }\r\n _showBranding() {\r\n if (!this._logo) {\r\n const logo = this.tooltipContainer.children.push(Container.new(this, {\r\n interactive: true,\r\n interactiveChildren: false,\r\n position: \"absolute\",\r\n setStateOnChildren: true,\r\n paddingTop: 9,\r\n paddingRight: 9,\r\n paddingBottom: 9,\r\n paddingLeft: 9,\r\n scale: .6,\r\n y: percent(100),\r\n centerY: p100,\r\n tooltipText: \"Created using amCharts 5\",\r\n tooltipX: p100,\r\n cursorOverStyle: \"pointer\",\r\n background: Rectangle.new(this, {\r\n fill: color(0x474758),\r\n fillOpacity: 0,\r\n tooltipY: 5\r\n })\r\n }));\r\n const tooltip = Tooltip.new(this, {\r\n pointerOrientation: \"horizontal\",\r\n paddingTop: 4,\r\n paddingRight: 7,\r\n paddingBottom: 4,\r\n paddingLeft: 7\r\n });\r\n tooltip.label.setAll({\r\n fontSize: 12\r\n });\r\n tooltip.get(\"background\").setAll({\r\n fill: this.interfaceColors.get(\"background\"),\r\n stroke: this.interfaceColors.get(\"grid\"),\r\n strokeOpacity: 0.3\r\n });\r\n logo.set(\"tooltip\", tooltip);\r\n logo.events.on(\"click\", () => {\r\n window.open(\"https://www.amcharts.com/\", \"_blank\");\r\n });\r\n logo.states.create(\"hover\", {});\r\n const m = logo.children.push(Graphics.new(this, {\r\n stroke: color(0xcccccc),\r\n strokeWidth: 3,\r\n svgPath: \"M5 25 L13 25h13.6c3.4 0 6 0 10.3-4.3s5.2-12 8.6-12c3.4 0 4.3 8.6 7.7 8.6M83.4 25H79.8c-3.4 0-6 0-10.3-4.3s-5.2-12-8.6-12-4.3 8.6-7.7 8.6\"\r\n }));\r\n m.states.create(\"hover\", { stroke: color(0x3CABFF) });\r\n const a = logo.children.push(Graphics.new(this, {\r\n stroke: color(0x888888),\r\n strokeWidth: 3,\r\n svgPath: \"M83.4 25h-31C37 25 39.5 4.4 28.4 4.4S18.9 24.2 4.3 25H0\"\r\n }));\r\n a.states.create(\"hover\", { stroke: color(0x474758) });\r\n //logo.set(\"tooltip\", this._tooltip);\r\n //logo.setPrivate(\"tooltipTarget\", logo.get(\"background\"));\r\n this._logo = logo;\r\n this._handleLogo();\r\n }\r\n }\r\n _getRealSize() {\r\n return this.dom.getBoundingClientRect();\r\n }\r\n _getCalculatedSize(rect) {\r\n if (this._settings.calculateSize) {\r\n return this._settings.calculateSize(rect);\r\n }\r\n else {\r\n return {\r\n width: rect.width,\r\n height: rect.height,\r\n };\r\n }\r\n }\r\n _init() {\r\n const settings = this._settings;\r\n if (settings.accessible !== false) {\r\n if (settings.focusable) {\r\n this._inner.setAttribute(\"focusable\", \"true\");\r\n this._inner.setAttribute(\"tabindex\", this.tabindex + \"\");\r\n }\r\n if (settings.ariaLabel) {\r\n this._inner.setAttribute(\"aria-label\", settings.ariaLabel);\r\n }\r\n if (settings.role) {\r\n this._inner.setAttribute(\"role\", settings.role);\r\n }\r\n }\r\n const renderer = this._renderer;\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const width = Math.floor(size.width);\r\n const height = Math.floor(size.height);\r\n const realWidth = Math.floor(rect.width);\r\n const realHeight = Math.floor(rect.height);\r\n const rootContainer = Container.new(this, {\r\n visible: true,\r\n width: width,\r\n height: height,\r\n });\r\n this._rootContainer = rootContainer;\r\n this._rootContainer._defaultThemes.push(DefaultTheme.new(this));\r\n const container = rootContainer.children.push(Container.new(this, { visible: true, width: p100, height: p100 }));\r\n this.container = container;\r\n renderer.resize(realWidth, realHeight, width, height);\r\n //@todo: better appendChild - refer\r\n this._inner.appendChild(renderer.view);\r\n // TODO: TMP TMP TMP for testing only, remove\r\n //renderer.debugGhostView = true;\r\n this._initResizeSensor();\r\n // HTML content holder\r\n const htmlElementContainer = document.createElement(\"div\");\r\n this._htmlElementContainer = htmlElementContainer;\r\n htmlElementContainer.className = \"am5-html-container\";\r\n htmlElementContainer.style.position = \"absolute\";\r\n htmlElementContainer.style.pointerEvents = \"none\";\r\n if (!this._tooltipContainerSettings) {\r\n htmlElementContainer.style.overflow = \"hidden\";\r\n }\r\n this._inner.appendChild(htmlElementContainer);\r\n if (this._a11yD !== true) {\r\n // Create element which is used to make announcements to screen reader\r\n const readerAlertElement = document.createElement(\"div\");\r\n readerAlertElement.className = \"am5-reader-container\";\r\n readerAlertElement.setAttribute(\"role\", \"alert\");\r\n // readerAlertElement.style.zIndex = \"-100000\";\r\n // readerAlertElement.style.opacity = \"0\";\r\n // readerAlertElement.style.top = \"0\";\r\n readerAlertElement.style.position = \"absolute\";\r\n readerAlertElement.style.width = \"1px\";\r\n readerAlertElement.style.height = \"1px\";\r\n readerAlertElement.style.overflow = \"hidden\";\r\n readerAlertElement.style.clip = \"rect(1px, 1px, 1px, 1px)\";\r\n this._readerAlertElement = readerAlertElement;\r\n this._inner.appendChild(this._readerAlertElement);\r\n const focusElementContainer = document.createElement(\"div\");\r\n focusElementContainer.className = \"am5-focus-container\";\r\n focusElementContainer.style.position = \"absolute\";\r\n focusElementContainer.style.pointerEvents = \"none\";\r\n focusElementContainer.style.top = \"0px\";\r\n focusElementContainer.style.left = \"0px\";\r\n focusElementContainer.style.overflow = \"hidden\";\r\n focusElementContainer.style.width = width + \"px\";\r\n focusElementContainer.style.height = height + \"px\";\r\n focusElementContainer.setAttribute(\"role\", \"graphics-document\");\r\n $utils.setInteractive(focusElementContainer, false);\r\n this._focusElementContainer = focusElementContainer;\r\n this._inner.appendChild(this._focusElementContainer);\r\n const tooltipElementContainer = document.createElement(\"div\");\r\n this._tooltipElementContainer = tooltipElementContainer;\r\n tooltipElementContainer.className = \"am5-tooltip-container\";\r\n this._inner.appendChild(tooltipElementContainer);\r\n // Add keyboard events for accessibility, e.g. simulating drag with arrow\r\n // keys and click with ENTER\r\n if ($utils.supports(\"keyboardevents\")) {\r\n this._disposers.push($utils.addEventListener(window, \"keydown\", (ev) => {\r\n const eventKey = $utils.getEventKey(ev);\r\n if (eventKey == \"Shift\") {\r\n this._isShift = true;\r\n }\r\n else if (eventKey == \"Tab\") {\r\n this._isShift = ev.shiftKey;\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(window, \"keyup\", (ev) => {\r\n const eventKey = $utils.getEventKey(ev);\r\n if (eventKey == \"Shift\") {\r\n this._isShift = false;\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(focusElementContainer, \"click\", () => {\r\n // Some screen readers convert ENTER (and some SPACE) press whil on\r\n // focused element to a \"click\" event, preventing actual \"keydown\"\r\n // event from firing. We're using this \"click\" event to still\r\n // generate internal click events.\r\n const focusedSprite = this._focusedSprite;\r\n if (focusedSprite) {\r\n const downEvent = renderer.getEvent(new MouseEvent(\"click\"));\r\n focusedSprite.events.dispatch(\"click\", {\r\n type: \"click\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(focusElementContainer, \"keydown\", (ev) => {\r\n const focusedSprite = this._focusedSprite;\r\n if (focusedSprite) {\r\n if (ev.key == \"Escape\") {\r\n // ESC pressed - lose current focus\r\n $utils.blur();\r\n this._focusedSprite = undefined;\r\n }\r\n let dragOffsetX = 0;\r\n let dragOffsetY = 0;\r\n // TODO: figure out if using bogus MouseEvent is fine, or it will\r\n // fail on some platforms\r\n const eventKey = $utils.getEventKey(ev);\r\n switch (eventKey) {\r\n case \"Enter\":\r\n case \" \":\r\n if (eventKey == \" \" && focusedSprite.get(\"role\") != \"checkbox\") {\r\n return;\r\n }\r\n ev.preventDefault();\r\n const downEvent = renderer.getEvent(new MouseEvent(\"mouse\"));\r\n focusedSprite.events.dispatch(\"click\", {\r\n type: \"click\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n return;\r\n case \"ArrowLeft\":\r\n dragOffsetX = -6;\r\n break;\r\n case \"ArrowRight\":\r\n dragOffsetX = 6;\r\n break;\r\n case \"ArrowUp\":\r\n dragOffsetY = -6;\r\n break;\r\n case \"ArrowDown\":\r\n dragOffsetY = 6;\r\n break;\r\n default:\r\n return;\r\n }\r\n if (dragOffsetX != 0 || dragOffsetY != 0) {\r\n ev.preventDefault();\r\n if (!focusedSprite.isDragging()) {\r\n // Start dragging\r\n this._keyboardDragPoint = {\r\n x: 0,\r\n y: 0\r\n };\r\n const downEvent = renderer.getEvent(new MouseEvent(\"mousedown\", {\r\n clientX: 0,\r\n clientY: 0\r\n }));\r\n if (focusedSprite.events.isEnabled(\"pointerdown\")) {\r\n focusedSprite.events.dispatch(\"pointerdown\", {\r\n type: \"pointerdown\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n }\r\n else {\r\n // Move focus marker\r\n //this._positionFocusElement(focusedSprite);\r\n }\r\n // Move incrementally\r\n const dragPoint = this._keyboardDragPoint;\r\n dragPoint.x += dragOffsetX;\r\n dragPoint.y += dragOffsetY;\r\n const moveEvent = renderer.getEvent(new MouseEvent(\"mousemove\", {\r\n clientX: dragPoint.x,\r\n clientY: dragPoint.y\r\n }), false);\r\n if (focusedSprite.events.isEnabled(\"globalpointermove\")) {\r\n focusedSprite.events.dispatch(\"globalpointermove\", {\r\n type: \"globalpointermove\",\r\n originalEvent: moveEvent.event,\r\n point: moveEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n }\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(focusElementContainer, \"keyup\", (ev) => {\r\n if (this._focusedSprite) {\r\n const focusedSprite = this._focusedSprite;\r\n const eventKey = $utils.getEventKey(ev);\r\n switch (eventKey) {\r\n case \"ArrowLeft\":\r\n case \"ArrowRight\":\r\n case \"ArrowTop\":\r\n case \"ArrowDown\":\r\n if (focusedSprite.isDragging()) {\r\n // Simulate drag stop\r\n const dragPoint = this._keyboardDragPoint;\r\n const upEvent = renderer.getEvent(new MouseEvent(\"mouseup\", {\r\n clientX: dragPoint.x,\r\n clientY: dragPoint.y\r\n }));\r\n if (focusedSprite.events.isEnabled(\"globalpointerup\")) {\r\n focusedSprite.events.dispatch(\"globalpointerup\", {\r\n type: \"globalpointerup\",\r\n originalEvent: upEvent.event,\r\n point: upEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n //this._positionFocusElement(focusedSprite);\r\n this._keyboardDragPoint = undefined;\r\n // @todo dispatch mouseup event instead of calling dragStop?\r\n // this._dispatchEvent(\"globalpointerup\", target, upEvent);\r\n return;\r\n }\r\n else if (focusedSprite.get(\"focusableGroup\")) {\r\n // Find next item in focusable group\r\n const group = focusedSprite.get(\"focusableGroup\");\r\n const items = this._tabindexes.filter((item) => {\r\n return item.get(\"focusableGroup\") == group && item.getPrivate(\"focusable\") !== false && item.isVisibleDeep() ? true : false;\r\n });\r\n let index = items.indexOf(focusedSprite);\r\n const lastIndex = items.length - 1;\r\n index += (eventKey == \"ArrowRight\" || eventKey == \"ArrowDown\") ? 1 : -1;\r\n if (index < 0) {\r\n index = lastIndex;\r\n }\r\n else if (index > lastIndex) {\r\n index = 0;\r\n }\r\n $utils.focus(items[index].getPrivate(\"focusElement\").dom);\r\n }\r\n break;\r\n }\r\n }\r\n }));\r\n }\r\n }\r\n this._startTicker();\r\n this.setThemes([]);\r\n this._addTooltip();\r\n if (!this._hasLicense()) {\r\n this._showBranding();\r\n }\r\n }\r\n _initResizeSensor() {\r\n if (this._resizeSensorDisposer) {\r\n this._resizeSensorDisposer.dispose();\r\n }\r\n this._resizeSensorDisposer = new ResizeSensor(this.dom, () => {\r\n if (this.autoResize) {\r\n this.resize();\r\n }\r\n });\r\n this._disposers.push(this._resizeSensorDisposer);\r\n }\r\n /**\r\n * If automatic resizing of char is disabled (`root.autoResize = false`), it\r\n * can be resized manually by calling this method.\r\n */\r\n resize() {\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const w = Math.floor(size.width);\r\n const h = Math.floor(size.height);\r\n if (w > 0 && h > 0) {\r\n const realWidth = Math.floor(rect.width);\r\n const realHeight = Math.floor(rect.height);\r\n const htmlElementContainer = this._htmlElementContainer;\r\n htmlElementContainer.style.width = w + \"px\";\r\n htmlElementContainer.style.height = h + \"px\";\r\n if (this._a11yD !== true) {\r\n const focusElementContainer = this._focusElementContainer;\r\n focusElementContainer.style.width = w + \"px\";\r\n focusElementContainer.style.height = h + \"px\";\r\n }\r\n this._renderer.resize(realWidth, realHeight, w, h);\r\n const rootContainer = this._rootContainer;\r\n rootContainer.setPrivate(\"width\", w);\r\n rootContainer.setPrivate(\"height\", h);\r\n this._render();\r\n this._handleLogo();\r\n }\r\n }\r\n _render() {\r\n this._renderer.render(this._rootContainer._display);\r\n if (this._focusElementDirty) {\r\n this._updateCurrentFocus();\r\n this._focusElementDirty = false;\r\n }\r\n }\r\n _runTickers(currentTime) {\r\n $array.each(this._tickers, (f) => {\r\n f(currentTime);\r\n });\r\n }\r\n _runAnimations(currentTime) {\r\n let running = 0;\r\n $array.keepIf(this._animations, (animation) => {\r\n const state = animation._runAnimation(currentTime);\r\n if (state === AnimationState.Stopped) {\r\n return false;\r\n }\r\n else if (state === AnimationState.Playing) {\r\n ++running;\r\n return true;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n this._isDirtyAnimation = false;\r\n return running === 0;\r\n }\r\n _runDirties() {\r\n //console.log(\"tick **************************************************************\");\r\n let allParents = {};\r\n while (this._isDirtyParents) {\r\n // This must be before calling _prepareChildren\r\n this._isDirtyParents = false;\r\n $object.keys(this._dirtyParents).forEach((key) => {\r\n const parent = this._dirtyParents[key];\r\n delete this._dirtyParents[key];\r\n if (!parent.isDisposed()) {\r\n allParents[parent.uid] = parent;\r\n parent._prepareChildren();\r\n }\r\n });\r\n }\r\n $object.keys(allParents).forEach((key) => {\r\n allParents[key]._updateChildren();\r\n });\r\n const objects = [];\r\n //\t\tconsole.log(\"_beforeChanged\")\r\n $object.keys(this._dirty).forEach((key) => {\r\n const entity = this._dirty[key];\r\n if (entity.isDisposed()) {\r\n delete this._dirty[entity.uid];\r\n }\r\n else {\r\n objects.push(entity);\r\n entity._beforeChanged();\r\n }\r\n });\r\n //\t\tconsole.log(\"_changed\")\r\n objects.forEach((entity) => {\r\n entity._changed();\r\n delete this._dirty[entity.uid];\r\n entity._clearDirty();\r\n });\r\n this._isDirty = false;\r\n const depths = {};\r\n const bounds = [];\r\n $object.keys(this._dirtyBounds).forEach((key) => {\r\n const entity = this._dirtyBounds[key];\r\n delete this._dirtyBounds[key];\r\n if (!entity.isDisposed()) {\r\n depths[entity.uid] = entity.depth();\r\n bounds.push(entity);\r\n }\r\n });\r\n this._positionHTMLElements();\r\n // High depth -> low depth\r\n bounds.sort((x, y) => {\r\n return $order.compare(depths[y.uid], depths[x.uid]);\r\n });\r\n //\t\tconsole.log(\"_updateBounds\")\r\n bounds.forEach((entity) => {\r\n entity._updateBounds();\r\n });\r\n //\t\tconsole.log(\"_updatePosition\")\r\n const dirtyPositions = this._dirtyPositions;\r\n $object.keys(dirtyPositions).forEach((key) => {\r\n const sprite = dirtyPositions[key];\r\n delete dirtyPositions[key];\r\n if (!sprite.isDisposed()) {\r\n sprite._updatePosition();\r\n }\r\n });\r\n //\t\tconsole.log(\"_afterChanged\")\r\n objects.forEach((entity) => {\r\n entity._afterChanged();\r\n });\r\n }\r\n _renderFrame(currentTime) {\r\n if (this._updateTick) {\r\n if (this.events.isEnabled(\"framestarted\")) {\r\n this.events.dispatch(\"framestarted\", {\r\n type: \"framestarted\",\r\n target: this,\r\n timestamp: currentTime,\r\n });\r\n }\r\n this._checkComputedStyles();\r\n this._runTickers(currentTime);\r\n const animationDone = this._runAnimations(currentTime);\r\n this._runDirties();\r\n this._render();\r\n this._renderer.resetImageArray();\r\n this._positionHTMLElements();\r\n if (this.events.isEnabled(\"frameended\")) {\r\n this.events.dispatch(\"frameended\", {\r\n type: \"frameended\",\r\n target: this,\r\n timestamp: currentTime,\r\n });\r\n }\r\n return this._tickers.length === 0 &&\r\n animationDone &&\r\n !this._isDirtyAnimation &&\r\n !this._isDirty;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n _runTicker(currentTime, now) {\r\n if (!this.isDisposed()) {\r\n this.animationTime = currentTime;\r\n const done = this._renderFrame(currentTime);\r\n // No more work to do\r\n if (done) {\r\n this._ticker = null;\r\n this.animationTime = null;\r\n }\r\n else {\r\n if (!this._paused) {\r\n if (now) {\r\n this._ticker;\r\n }\r\n else {\r\n rAF(this.fps, this._ticker);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _runTickerNow(timeout = 10000) {\r\n if (!this.isDisposed()) {\r\n const endTime = performance.now() + timeout;\r\n for (;;) {\r\n const currentTime = performance.now();\r\n if (currentTime >= endTime) {\r\n this.animationTime = null;\r\n break;\r\n }\r\n this.animationTime = currentTime;\r\n const done = this._renderFrame(currentTime);\r\n if (done) {\r\n this.animationTime = null;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n _startTicker() {\r\n if (this._ticker === null) {\r\n this.animationTime = null;\r\n this._ticker = (currentTime) => {\r\n this._runTicker(currentTime);\r\n };\r\n rAF(this.fps, this._ticker);\r\n }\r\n }\r\n /**\r\n * Returns whether the root is updating or not.\r\n */\r\n get updateTick() {\r\n return this._updateTick;\r\n }\r\n /**\r\n * Enables or disables the root updating.\r\n */\r\n set updateTick(value) {\r\n this._updateTick = value;\r\n if (value) {\r\n this._startTicker();\r\n }\r\n }\r\n _addDirtyEntity(entity) {\r\n this._isDirty = true;\r\n if (this._dirty[entity.uid] === undefined) {\r\n this._dirty[entity.uid] = entity;\r\n }\r\n this._startTicker();\r\n }\r\n _addDirtyParent(parent) {\r\n this._isDirty = true;\r\n this._isDirtyParents = true;\r\n if (this._dirtyParents[parent.uid] === undefined) {\r\n this._dirtyParents[parent.uid] = parent;\r\n }\r\n this._startTicker();\r\n }\r\n _addDirtyBounds(entity) {\r\n this._isDirty = true;\r\n if (this._dirtyBounds[entity.uid] === undefined) {\r\n this._dirtyBounds[entity.uid] = entity;\r\n }\r\n this._startTicker();\r\n }\r\n _addDirtyPosition(sprite) {\r\n this._isDirty = true;\r\n if (this._dirtyPositions[sprite.uid] === undefined) {\r\n this._dirtyPositions[sprite.uid] = sprite;\r\n }\r\n this._startTicker();\r\n }\r\n _addAnimation(animation) {\r\n this._isDirtyAnimation = true;\r\n // TODO use numeric id instead\r\n if (this._animations.indexOf(animation) === -1) {\r\n this._animations.push(animation);\r\n }\r\n this._startTicker();\r\n }\r\n _markDirty() {\r\n this._isDirty = true;\r\n }\r\n _markDirtyRedraw() {\r\n this.events.once(\"frameended\", () => {\r\n this._isDirty = true;\r\n this._startTicker();\r\n });\r\n }\r\n eachFrame(f) {\r\n this._tickers.push(f);\r\n this._startTicker();\r\n return new Disposer(() => {\r\n $array.removeFirst(this._tickers, f);\r\n });\r\n }\r\n markDirtyGlobal(container) {\r\n if (!container) {\r\n container = this.container;\r\n }\r\n container.walkChildren((child) => {\r\n if (child instanceof Container) {\r\n this.markDirtyGlobal(child);\r\n }\r\n child.markDirty();\r\n child.markDirtyBounds();\r\n });\r\n }\r\n /**\r\n * Returns width of the target container, in pixels.\r\n *\r\n * @return Width\r\n */\r\n width() {\r\n // TODO make this more efficient, maybe just return the renderer's width ?\r\n return Math.floor(this._getCalculatedSize(this._getRealSize()).width);\r\n }\r\n /**\r\n * Returns height of the target container, in pixels.\r\n *\r\n * @return Height\r\n */\r\n height() {\r\n // TODO make this more efficient, maybe just return the renderer's height ?\r\n return Math.floor(this._getCalculatedSize(this._getRealSize()).height);\r\n }\r\n /**\r\n * Disposes root and all the content in it.\r\n */\r\n dispose() {\r\n if (!this._isDisposed) {\r\n this._isDisposed = true;\r\n this._rootContainer.dispose();\r\n this._renderer.dispose();\r\n this.horizontalLayout.dispose();\r\n this.verticalLayout.dispose();\r\n this.interfaceColors.dispose();\r\n $array.each(this._disposers, (x) => {\r\n x.dispose();\r\n });\r\n if (this._inner) {\r\n $utils.removeElement(this._inner);\r\n }\r\n $array.remove(registry.rootElements, this);\r\n }\r\n }\r\n /**\r\n * Returns `true` if root element is disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n isDisposed() {\r\n return this._isDisposed;\r\n }\r\n /**\r\n * Triggers screen reader read out a message.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/accessibility/} for more info\r\n * @param text Alert text\r\n */\r\n readerAlert(text) {\r\n if (this._a11yD !== true) {\r\n this._readerAlertElement.innerHTML = $utils.stripTags(text);\r\n }\r\n }\r\n /**\r\n * Sets themes to be used for the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\r\n * @param themes A list of themes\r\n */\r\n setThemes(themes) {\r\n this._rootContainer.set(\"themes\", themes);\r\n // otherwise new themes are not applied\r\n const tooltipContainer = this.tooltipContainer;\r\n if (tooltipContainer) {\r\n tooltipContainer._applyThemes();\r\n }\r\n // @todo review this\r\n const interfaceColors = this.interfaceColors;\r\n if (interfaceColors) {\r\n interfaceColors._applyThemes();\r\n }\r\n }\r\n _addTooltip() {\r\n if (!this.tooltipContainer) {\r\n const tooltipContainerSettings = this._tooltipContainerSettings;\r\n const tooltipContainer = this._rootContainer.children.push(Container.new(this, {\r\n position: \"absolute\",\r\n isMeasured: false,\r\n width: p100,\r\n height: p100,\r\n layer: tooltipContainerSettings ? 35 : 30,\r\n layerMargin: tooltipContainerSettings ? tooltipContainerSettings : undefined\r\n }));\r\n this.tooltipContainer = tooltipContainer;\r\n const tooltip = Tooltip.new(this, {});\r\n this.container.set(\"tooltip\", tooltip);\r\n tooltip.hide(0);\r\n this._tooltip = tooltip;\r\n }\r\n }\r\n /**\r\n * Accesibility\r\n */\r\n _registerTabindexOrder(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n if (target.get(\"focusable\")) {\r\n $array.pushOne(this._tabindexes, target);\r\n }\r\n else {\r\n $array.remove(this._tabindexes, target);\r\n }\r\n this._invalidateTabindexes();\r\n }\r\n _unregisterTabindexOrder(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n $array.remove(this._tabindexes, target);\r\n this._invalidateTabindexes();\r\n }\r\n _invalidateTabindexes() {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n this._tabindexes.sort((a, b) => {\r\n const aindex = a.get(\"tabindexOrder\", 0);\r\n const bindex = b.get(\"tabindexOrder\", 0);\r\n if (aindex == bindex) {\r\n return 0;\r\n }\r\n else if (aindex > bindex) {\r\n return 1;\r\n }\r\n else {\r\n return -1;\r\n }\r\n });\r\n const groups = [];\r\n $array.each(this._tabindexes, (item, index) => {\r\n if (!item.getPrivate(\"focusElement\")) {\r\n this._makeFocusElement(index, item);\r\n }\r\n else {\r\n this._moveFocusElement(index, item);\r\n }\r\n const group = item.get(\"focusableGroup\");\r\n if (group && item.getPrivate(\"focusable\") !== false) {\r\n if (groups.indexOf(group) !== -1) {\r\n // Non-first element in the group, make it not directly focusable\r\n item.getPrivate(\"focusElement\").dom.setAttribute(\"tabindex\", \"-1\");\r\n }\r\n else {\r\n groups.push(group);\r\n }\r\n }\r\n });\r\n }\r\n _updateCurrentFocus() {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n if (this._focusedSprite) {\r\n this._decorateFocusElement(this._focusedSprite);\r\n this._positionFocusElement(this._focusedSprite);\r\n }\r\n }\r\n _decorateFocusElement(target, focusElement) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n // Decorate with proper accessibility attributes\r\n if (!focusElement) {\r\n focusElement = target.getPrivate(\"focusElement\").dom;\r\n }\r\n if (!focusElement) {\r\n return;\r\n }\r\n const role = target.get(\"role\");\r\n if (role) {\r\n focusElement.setAttribute(\"role\", role);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"role\");\r\n }\r\n const ariaLabel = target.get(\"ariaLabel\");\r\n if (ariaLabel) {\r\n const label = populateString(target, ariaLabel);\r\n focusElement.setAttribute(\"aria-label\", label);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-label\");\r\n }\r\n const ariaLive = target.get(\"ariaLive\");\r\n if (ariaLive) {\r\n focusElement.setAttribute(\"aria-live\", ariaLive);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-live\");\r\n }\r\n const ariaChecked = target.get(\"ariaChecked\");\r\n if (ariaChecked != null && role && [\"checkbox\", \"option\", \"radio\", \"menuitemcheckbox\", \"menuitemradio\", \"treeitem\"].indexOf(role) !== -1) {\r\n focusElement.setAttribute(\"aria-checked\", ariaChecked ? \"true\" : \"false\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-checked\");\r\n }\r\n const ariaCurrent = target.get(\"ariaCurrent\");\r\n if (ariaCurrent != null) {\r\n focusElement.setAttribute(\"aria-current\", ariaCurrent);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-current\");\r\n }\r\n const ariaSelected = target.get(\"ariaSelected\");\r\n if (ariaSelected != null && role && [\"gridcell\", \"option\", \"row\", \"tab\", \"columnheader\", \"rowheader\", \"treeitem\"].indexOf(role) !== -1) {\r\n focusElement.setAttribute(\"aria-selected\", ariaSelected ? \"true\" : \"false\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-selected\");\r\n }\r\n if (target.get(\"ariaHidden\")) {\r\n focusElement.setAttribute(\"aria-hidden\", \"true\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-hidden\");\r\n }\r\n const ariaOrientation = target.get(\"ariaOrientation\");\r\n if (ariaOrientation) {\r\n focusElement.setAttribute(\"aria-orientation\", ariaOrientation);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-orientation\");\r\n }\r\n const ariaValueNow = target.get(\"ariaValueNow\");\r\n if (ariaValueNow) {\r\n focusElement.setAttribute(\"aria-valuenow\", ariaValueNow);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuenow\");\r\n }\r\n const ariaValueMin = target.get(\"ariaValueMin\");\r\n if (ariaValueMin) {\r\n focusElement.setAttribute(\"aria-valuemin\", ariaValueMin);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuemin\");\r\n }\r\n const ariaValueMax = target.get(\"ariaValueMax\");\r\n if (ariaValueMax) {\r\n focusElement.setAttribute(\"aria-valuemax\", ariaValueMax);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuemax\");\r\n }\r\n const ariaValueText = target.get(\"ariaValueText\");\r\n if (ariaValueText) {\r\n focusElement.setAttribute(\"aria-valuetext\", ariaValueText);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuetext\");\r\n }\r\n const ariaControls = target.get(\"ariaControls\");\r\n if (ariaControls) {\r\n focusElement.setAttribute(\"aria-controls\", ariaControls);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-controls\");\r\n }\r\n if (target.get(\"visible\") && target.get(\"opacity\") !== 0 && target.get(\"role\") != \"tooltip\" && !target.isHidden() && target.getPrivate(\"focusable\") !== false) {\r\n if (focusElement.getAttribute(\"tabindex\") != \"-1\") {\r\n focusElement.setAttribute(\"tabindex\", \"\" + this.tabindex);\r\n }\r\n focusElement.removeAttribute(\"aria-hidden\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"tabindex\");\r\n focusElement.setAttribute(\"aria-hidden\", \"true\");\r\n }\r\n }\r\n _makeFocusElement(index, target) {\r\n if (target.getPrivate(\"focusElement\") || this._a11yD == true) {\r\n return;\r\n }\r\n // Init\r\n const focusElement = document.createElement(\"div\");\r\n if (target.get(\"role\") != \"tooltip\") {\r\n focusElement.tabIndex = this.tabindex;\r\n }\r\n focusElement.style.position = \"absolute\";\r\n $utils.setInteractive(focusElement, false);\r\n const disposers = [];\r\n target.setPrivate(\"focusElement\", {\r\n dom: focusElement,\r\n disposers,\r\n });\r\n this._decorateFocusElement(target);\r\n disposers.push($utils.addEventListener(focusElement, \"focus\", (ev) => {\r\n this._handleFocus(ev);\r\n }));\r\n disposers.push($utils.addEventListener(focusElement, \"blur\", (ev) => {\r\n this._handleBlur(ev);\r\n }));\r\n this._moveFocusElement(index, target);\r\n }\r\n _removeFocusElement(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n $array.remove(this._tabindexes, target);\r\n const focusElement = target.getPrivate(\"focusElement\");\r\n if (focusElement) {\r\n const container = this._focusElementContainer;\r\n container.removeChild(focusElement.dom);\r\n $array.each(focusElement.disposers, (x) => {\r\n x.dispose();\r\n });\r\n }\r\n }\r\n _hideFocusElement(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const focusElement = target.getPrivate(\"focusElement\");\r\n focusElement.dom.style.display = \"none\";\r\n }\r\n _moveFocusElement(index, target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n // Get container\r\n const container = this._focusElementContainer;\r\n const focusElement = target.getPrivate(\"focusElement\").dom;\r\n if (focusElement === this._focusElementContainer.children[index]) {\r\n // Nothing to do\r\n return;\r\n }\r\n const next = this._focusElementContainer.children[index + 1];\r\n if (next) {\r\n container.insertBefore(focusElement, next);\r\n }\r\n else {\r\n container.append(focusElement);\r\n }\r\n }\r\n _positionFocusElement(target) {\r\n if (this._a11yD == true || target == undefined) {\r\n return;\r\n }\r\n const bounds = target.globalBounds();\r\n let width = bounds.right == bounds.left ? target.width() : bounds.right - bounds.left;\r\n let height = bounds.top == bounds.bottom ? target.height() : bounds.bottom - bounds.top;\r\n const padding = this._settings.focusPadding !== undefined ? this._settings.focusPadding : 2;\r\n let x = bounds.left - padding;\r\n let y = bounds.top - padding;\r\n if (width < 0) {\r\n x += width;\r\n width = Math.abs(width);\r\n }\r\n if (height < 0) {\r\n y += height;\r\n height = Math.abs(height);\r\n }\r\n const focusElement = target.getPrivate(\"focusElement\").dom;\r\n focusElement.style.top = y + \"px\";\r\n focusElement.style.left = x + \"px\";\r\n focusElement.style.width = (width + padding * 2) + \"px\";\r\n focusElement.style.height = (height + padding * 2) + \"px\";\r\n }\r\n _getSpriteByFocusElement(target) {\r\n let found;\r\n $array.eachContinue(this._tabindexes, (item, _index) => {\r\n if (item.getPrivate(\"focusElement\").dom === target) {\r\n found = item;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return found;\r\n }\r\n _handleFocus(ev) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n // Get element\r\n //const focused = this._tabindexes[index];\r\n const focused = this._getSpriteByFocusElement(ev.target);\r\n if (!focused) {\r\n return;\r\n }\r\n // Jump over hidden elements\r\n if (!focused.isVisibleDeep()) {\r\n this._focusNext(ev.target, this._isShift ? -1 : 1);\r\n return;\r\n }\r\n // Size and position\r\n this._positionFocusElement(focused);\r\n //this._decorateFocusElement(focused);\r\n this._focusedSprite = focused;\r\n if (focused.events.isEnabled(\"focus\")) {\r\n focused.events.dispatch(\"focus\", {\r\n type: \"focus\",\r\n originalEvent: ev,\r\n target: focused\r\n });\r\n }\r\n }\r\n _focusNext(el, direction) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const focusableElements = Array.from(document.querySelectorAll([\r\n 'a[href]',\r\n 'area[href]',\r\n 'button:not([disabled])',\r\n 'details',\r\n 'input:not([disabled])',\r\n 'iframe:not([disabled])',\r\n 'select:not([disabled])',\r\n 'textarea:not([disabled])',\r\n '[contentEditable=\"\"]',\r\n '[contentEditable=\"true\"]',\r\n '[contentEditable=\"TRUE\"]',\r\n '[tabindex]:not([tabindex^=\"-\"])',\r\n //':not([disabled])'\r\n ].join(',')));\r\n let index = focusableElements.indexOf(el) + direction;\r\n if (index < 0) {\r\n index = focusableElements.length - 1;\r\n }\r\n else if (index >= focusableElements.length) {\r\n index = 0;\r\n }\r\n focusableElements[index].focus();\r\n }\r\n _handleBlur(ev) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const focused = this._focusedSprite;\r\n if (focused && !focused.isDisposed() && focused.events.isEnabled(\"blur\")) {\r\n focused.events.dispatch(\"blur\", {\r\n type: \"blur\",\r\n originalEvent: ev,\r\n target: focused\r\n });\r\n }\r\n this._focusedSprite = undefined;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTooltip(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const text = $utils.stripTags(target._getText());\r\n let tooltipElement = target.getPrivate(\"tooltipElement\");\r\n if (target.get(\"role\") == \"tooltip\" && text != \"\") {\r\n if (!tooltipElement) {\r\n tooltipElement = this._makeTooltipElement(target);\r\n }\r\n if (tooltipElement.innerHTML != text) {\r\n tooltipElement.innerHTML = text;\r\n }\r\n tooltipElement.setAttribute(\"aria-hidden\", target.isVisibleDeep() ? \"false\" : \"true\");\r\n }\r\n else if (tooltipElement) {\r\n tooltipElement.remove();\r\n target.removePrivate(\"tooltipElement\");\r\n }\r\n }\r\n _makeTooltipElement(target) {\r\n const container = this._tooltipElementContainer;\r\n const tooltipElement = document.createElement(\"div\");\r\n tooltipElement.style.position = \"absolute\";\r\n tooltipElement.style.width = \"1px\";\r\n tooltipElement.style.height = \"1px\";\r\n tooltipElement.style.overflow = \"hidden\";\r\n tooltipElement.style.clip = \"rect(1px, 1px, 1px, 1px)\";\r\n $utils.setInteractive(tooltipElement, false);\r\n this._decorateFocusElement(target, tooltipElement);\r\n container.append(tooltipElement);\r\n target.setPrivate(\"tooltipElement\", tooltipElement);\r\n return tooltipElement;\r\n }\r\n _removeTooltipElement(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const tooltipElement = target.getPrivate(\"tooltipElement\");\r\n if (tooltipElement) {\r\n const parent = tooltipElement.parentElement;\r\n if (parent) {\r\n parent.removeChild(tooltipElement);\r\n }\r\n }\r\n }\r\n _invalidateAccessibility(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n this._focusElementDirty = true;\r\n const focusElement = target.getPrivate(\"focusElement\");\r\n if (target.get(\"focusable\")) {\r\n if (focusElement) {\r\n this._decorateFocusElement(target);\r\n this._positionFocusElement(target);\r\n }\r\n // else {\r\n // \tthis._renderer._makeFocusElement(0, this);\r\n // }\r\n }\r\n else if (focusElement) {\r\n this._removeFocusElement(target);\r\n }\r\n //this.updateCurrentFocus();\r\n }\r\n /**\r\n * Returns `true` if `target` is currently focused.\r\n *\r\n * @param target Target\r\n * @return Focused?\r\n */\r\n focused(target) {\r\n return this._focusedSprite === target;\r\n }\r\n /**\r\n * Converts document coordinates to coordinates withing root element.\r\n *\r\n * @param point Document point\r\n * @return Root point\r\n */\r\n documentPointToRoot(point) {\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const scaleWidth = size.width / rect.width;\r\n const scaleHeight = size.height / rect.height;\r\n return {\r\n x: (point.x - rect.left) * scaleWidth,\r\n y: (point.y - rect.top) * scaleHeight,\r\n };\r\n }\r\n /**\r\n * Converts root coordinates to document\r\n *\r\n * @param point Document point\r\n * @return Root point\r\n */\r\n rootPointToDocument(point) {\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const scaleWidth = size.width / rect.width;\r\n const scaleHeight = size.height / rect.height;\r\n return {\r\n x: (point.x / scaleWidth) + rect.left,\r\n y: (point.y / scaleHeight) + rect.top\r\n };\r\n }\r\n /**\r\n * @ignore\r\n */\r\n addDisposer(disposer) {\r\n this._disposers.push(disposer);\r\n return disposer;\r\n }\r\n _updateComputedStyles() {\r\n const styles = window.getComputedStyle(this.dom);\r\n let fontHash = \"\";\r\n $object.each(styles, (key, val) => {\r\n if ($type.isString(key) && key.match(/^font/)) {\r\n fontHash += val;\r\n }\r\n });\r\n const changed = fontHash != this._fontHash;\r\n if (changed) {\r\n this._fontHash = fontHash;\r\n }\r\n return changed;\r\n }\r\n _checkComputedStyles() {\r\n if (this._updateComputedStyles()) {\r\n this._invalidateLabelBounds(this.container);\r\n }\r\n }\r\n _invalidateLabelBounds(target) {\r\n if (target instanceof Container) {\r\n target.children.each((child) => {\r\n this._invalidateLabelBounds(child);\r\n });\r\n }\r\n else if (target instanceof Text) {\r\n target.markDirtyBounds();\r\n }\r\n }\r\n /**\r\n * To all the clever heads out there. Yes, we did not make any attempts to\r\n * scramble this.\r\n *\r\n * This is a part of a tool meant for our users to manage their commercial\r\n * licenses for removal of amCharts branding from charts.\r\n *\r\n * The only legit way to do so is to purchase a commercial license for amCharts:\r\n * https://www.amcharts.com/online-store/\r\n *\r\n * Removing or altering this code, or disabling amCharts branding in any other\r\n * way is against the license and thus illegal.\r\n */\r\n _hasLicense() {\r\n for (let i = 0; i < registry.licenses.length; i++) {\r\n if (registry.licenses[i].match(/^AM5C.{5,}/i)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _licenseApplied() {\r\n if (this._logo) {\r\n this._logo.set(\"forceHidden\", true);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n get debugGhostView() {\r\n return this._renderer.debugGhostView;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n set debugGhostView(value) {\r\n this._renderer.debugGhostView = value;\r\n }\r\n /**\r\n * Set this to `true` if you need chart to require first a tap onto it before\r\n * touch gesture related functionality like zoom/pan is turned on.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Touch_related_options} for more info\r\n * @default false\r\n * @since 5.2.9\r\n * @param value Needs a tap to activate touch functions\r\n */\r\n set tapToActivate(value) {\r\n this._renderer.tapToActivate = value;\r\n }\r\n /**\r\n * @return Needs a tap to activate touch functions\r\n */\r\n get tapToActivate() {\r\n return this._renderer.tapToActivate;\r\n }\r\n /**\r\n * If `tapToActivate` is set to `true`, this setting will determine number\r\n * of milliseconds the chart will stay \"active\", before releasing the\r\n * controls back to the page.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Touch_related_options} for more info\r\n * @default 3000\r\n * @since 5.2.9\r\n * @param value Timeout\r\n */\r\n set tapToActivateTimeout(value) {\r\n this._renderer.tapToActivateTimeout = value;\r\n }\r\n /**\r\n * @return Timeout\r\n */\r\n get tapToActivateTimeout() {\r\n return this._renderer.tapToActivateTimeout;\r\n }\r\n _makeHTMLElement(target) {\r\n // Get container\r\n const container = this._htmlElementContainer;\r\n // Init\r\n const htmlElement = document.createElement(\"div\");\r\n target.setPrivate(\"htmlElement\", htmlElement);\r\n //htmlElement.tabIndex = this.tabindex;\r\n htmlElement.style.position = \"absolute\";\r\n htmlElement.style.overflow = \"auto\";\r\n htmlElement.style.boxSizing = \"border-box\";\r\n $utils.setInteractive(htmlElement, target.get(\"interactive\", false));\r\n // Translate events\r\n if (target.events.isEnabled(\"click\")) {\r\n $utils.setInteractive(htmlElement, true);\r\n this._disposers.push($utils.addEventListener(htmlElement, \"click\", (ev) => {\r\n const downEvent = this._renderer.getEvent(ev);\r\n target.events.dispatch(\"click\", {\r\n type: \"click\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: false,\r\n target: target\r\n });\r\n }));\r\n }\r\n this._positionHTMLElement(target);\r\n container.append(htmlElement);\r\n $array.pushOne(this._htmlEnabledContainers, target);\r\n return htmlElement;\r\n }\r\n _positionHTMLElements() {\r\n $array.each(this._htmlEnabledContainers, (target) => {\r\n this._positionHTMLElement(target);\r\n });\r\n }\r\n _positionHTMLElement(target) {\r\n const htmlElement = target.getPrivate(\"htmlElement\");\r\n if (htmlElement) {\r\n // Translate settings\r\n const visualSettings = [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\", \"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\"];\r\n $array.each(visualSettings, (setting) => {\r\n const value = target.get(setting);\r\n if (value) {\r\n htmlElement.style[setting] = value + \"px\";\r\n }\r\n else {\r\n htmlElement.style[setting] = \"\";\r\n }\r\n });\r\n // Init and reset scale / rotation\r\n const scale = target.compositeScale() || 1;\r\n const rotation = target.compositeRotation() || 0;\r\n htmlElement.style.transform = \"\";\r\n htmlElement.style.transformOrigin = \"\";\r\n // Deal with opacity\r\n const opacity = target.compositeOpacity();\r\n setTimeout(() => {\r\n htmlElement.style.opacity = opacity + \"\";\r\n }, 10);\r\n const visible = target.isVisibleDeep();\r\n if (visible) {\r\n htmlElement.style.display = \"block\";\r\n }\r\n // Deal with position\r\n const bounds = target.globalBounds();\r\n htmlElement.style.top = (bounds.top) + \"px\";\r\n htmlElement.style.left = (bounds.left) + \"px\";\r\n // Use width/height if those are set\r\n const width = target.get(\"width\");\r\n const height = target.get(\"height\");\r\n let w = 0;\r\n let h = 0;\r\n if (width) {\r\n w = target.width();\r\n }\r\n if (height) {\r\n h = target.height();\r\n }\r\n if (!width || !height) {\r\n htmlElement.style.position = \"fixed\";\r\n htmlElement.style.width = \"\";\r\n htmlElement.style.height = \"\";\r\n const bbox = htmlElement.getBoundingClientRect();\r\n htmlElement.style.position = \"absolute\";\r\n if (!width)\r\n w = bbox.width;\r\n if (!height)\r\n h = bbox.height;\r\n target._adjustedLocalBounds = { left: 0, right: 0, top: 0, bottom: 0 };\r\n target.setPrivate(\"minWidth\", w / scale);\r\n target.setPrivate(\"minHeight\", h / scale);\r\n }\r\n else {\r\n target.removePrivate(\"minWidth\");\r\n target.removePrivate(\"minHeight\");\r\n }\r\n if (w > 0) {\r\n htmlElement.style.minWidth = (w) + \"px\";\r\n }\r\n if (h > 0) {\r\n htmlElement.style.minHeight = (h) + \"px\";\r\n }\r\n // Hide or show\r\n if (!visible || opacity == 0) {\r\n htmlElement.style.display = \"none\";\r\n }\r\n // Deal with scale\r\n if (scale != 1) {\r\n htmlElement.style.transform += \"scale(\" + scale + \")\";\r\n }\r\n if (rotation != 0) {\r\n htmlElement.style.transform += \" rotate(\" + rotation + \"deg)\";\r\n }\r\n if (htmlElement.style.transform != \"\") {\r\n htmlElement.style.transformOrigin = target.get(\"centerX\", 0) + \"% \" + target.get(\"centerY\", 0) + \"%\";\r\n }\r\n }\r\n }\r\n _setHTMLContent(target, html) {\r\n let htmlElement = target.getPrivate(\"htmlElement\");\r\n if (!htmlElement) {\r\n htmlElement = this._makeHTMLElement(target);\r\n }\r\n if (htmlElement.innerHTML != html) {\r\n htmlElement.innerHTML = html;\r\n }\r\n }\r\n _removeHTMLContent(target) {\r\n let htmlElement = target.getPrivate(\"htmlElement\");\r\n if (htmlElement) {\r\n this._htmlElementContainer.removeChild(htmlElement);\r\n target.removePrivate(\"htmlElement\");\r\n }\r\n $array.remove(this._htmlEnabledContainers, target);\r\n }\r\n}\r\n","import { Template } from \"./util/Template\";\r\nimport * as $order from \"./util/Order\";\r\nimport * as $array from \"./util/Array\";\r\n/**\r\n * A base class for an amCharts theme.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\r\n * @important\r\n */\r\nexport class Theme {\r\n constructor(root, isReal) {\r\n Object.defineProperty(this, \"_root\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_rules\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n this._root = root;\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n }\r\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param root Root element\r\n * @param settings Settings\r\n * @param template Template\r\n * @return Instantiated object\r\n */\r\n static new(root) {\r\n const x = (new this(root, true));\r\n x.setupDefaultRules();\r\n return x;\r\n }\r\n setupDefaultRules() { }\r\n /**\r\n * Looks up the rules for a specific theme class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @return Array<IRule<A>>\r\n */\r\n _lookupRules(themeClass) {\r\n return this._rules[themeClass];\r\n }\r\n /**\r\n * Creates a [[Template]] for specific theme class and tags.\r\n *\r\n * NOTE: the difference from `rule()` is that `ruleRaw()` does not do any\r\n * type checks.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @param themeTags Theme tags\r\n * @return Template\r\n */\r\n ruleRaw(themeClass, themeTags = []) {\r\n let rules = this._rules[themeClass];\r\n if (!rules) {\r\n rules = this._rules[themeClass] = [];\r\n }\r\n themeTags.sort($order.compare);\r\n const { index, found } = $array.getSortedIndex(rules, (x) => {\r\n const order = $order.compare(x.tags.length, themeTags.length);\r\n if (order === 0) {\r\n return $order.compareArray(x.tags, themeTags, $order.compare);\r\n }\r\n else {\r\n return order;\r\n }\r\n });\r\n if (found) {\r\n return rules[index].template;\r\n }\r\n else {\r\n const template = Template.new({});\r\n rules.splice(index, 0, {\r\n tags: themeTags,\r\n template,\r\n });\r\n return template;\r\n }\r\n }\r\n /**\r\n * Creates a [[Template]] for specific theme class and tags.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @param themeTags Theme tags\r\n * @return Template\r\n */\r\n rule(themeClass, themeTags = []) {\r\n return this.ruleRaw(themeClass, themeTags);\r\n }\r\n}\r\n","import { Entity } from \"../../core/util/Entity\";\r\n/**\r\n * A universal placeholder for bullet elements.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/bullets/} for more info\r\n */\r\nexport class Bullet extends Entity {\r\n constructor() {\r\n super(...arguments);\r\n // used by MapPolygons where one data item can have multiple bullets of the same kind\r\n Object.defineProperty(this, \"_index\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Target series object if it's a bullet for series.\r\n */\r\n Object.defineProperty(this, \"series\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n // Applying themes because bullet will not have parent\r\n super._afterNewApplyThemes();\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"sprite\")) {\r\n const sprite = this.get(\"sprite\");\r\n if (sprite) {\r\n sprite.setAll({ position: \"absolute\", role: \"figure\" });\r\n this._disposers.push(sprite);\r\n }\r\n }\r\n if (this.isDirty(\"locationX\") || this.isDirty(\"locationY\")) {\r\n if (this.series) {\r\n this.series._positionBullet(this);\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Bullet, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Bullet\"\r\n});\r\nObject.defineProperty(Bullet, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Bullet.className])\r\n});\r\n","import { RoundedRectangle } from \"../render/RoundedRectangle\";\r\nimport { Container } from \"./Container\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\n/**\r\n * Draws an interactive button.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/} for more info\r\n * @important\r\n */\r\nexport class Button extends Container {\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"button\"]);\r\n super._afterNew();\r\n if (!this._settings.background) {\r\n this.set(\"background\", RoundedRectangle.new(this._root, {\r\n themeTags: $utils.mergeTags(this._settings.themeTags, [\"background\"])\r\n }));\r\n }\r\n this.setPrivate(\"trustBounds\", true);\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n if (this.isDirty(\"icon\")) {\r\n const previous = this._prevSettings.icon;\r\n const icon = this.get(\"icon\");\r\n if (icon !== previous) {\r\n this._disposeProperty(\"icon\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (icon) {\r\n this.children.push(icon);\r\n }\r\n this._prevSettings.icon = icon;\r\n }\r\n }\r\n if (this.isDirty(\"label\")) {\r\n const previous = this._prevSettings.label;\r\n const label = this.get(\"label\");\r\n if (label !== previous) {\r\n this._disposeProperty(\"label\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (label) {\r\n this.children.push(label);\r\n }\r\n this._prevSettings.label = label;\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Button, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Button\"\r\n});\r\nObject.defineProperty(Button, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Button.className])\r\n});\r\n","import { List } from \"./List\";\r\n/**\r\n * A [[List]] that holds components data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/data/} for more info\r\n */\r\nexport class ListData extends List {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * An optional processor for data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/data/#Pre_processing_data} for more info\r\n */\r\n Object.defineProperty(this, \"processor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n incrementRef() { }\r\n /**\r\n * @ignore\r\n */\r\n decrementRef() { }\r\n _onPush(newValue) {\r\n if (this.processor) {\r\n this.processor.processRow(newValue);\r\n }\r\n super._onPush(newValue);\r\n }\r\n _onInsertIndex(index, newValue) {\r\n if (this.processor) {\r\n this.processor.processRow(newValue);\r\n }\r\n super._onInsertIndex(index, newValue);\r\n }\r\n _onSetIndex(index, oldValue, newValue) {\r\n if (this.processor) {\r\n this.processor.processRow(newValue);\r\n }\r\n super._onSetIndex(index, oldValue, newValue);\r\n }\r\n}\r\n/**\r\n * @deprecated\r\n * @todo remove\r\n */\r\nexport class JsonData {\r\n constructor(value) {\r\n Object.defineProperty(this, \"processor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_value\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._value = value;\r\n }\r\n incrementRef() { }\r\n decrementRef() { }\r\n}\r\n","import { __awaiter } from \"tslib\";\r\nimport { Settings } from \"../util/Entity\";\r\nimport { Container } from \"./Container\";\r\nimport { ListData } from \"../util/Data\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $object from \"../util/Object\";\r\n/**\r\n * A base element that holds data bit (data item) for any [[Component]].\r\n */\r\nexport class DataItem extends Settings {\r\n constructor(component, dataContext, settings) {\r\n super(settings);\r\n /**\r\n * A data item's owener [[Component]].\r\n */\r\n Object.defineProperty(this, \"component\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A reference to actual item in source data this item is based on.\r\n */\r\n Object.defineProperty(this, \"dataContext\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * @todo requires description\r\n */\r\n Object.defineProperty(this, \"bullets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A set of \"open\" values.\r\n */\r\n Object.defineProperty(this, \"open\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A set of \"close\" values.\r\n */\r\n Object.defineProperty(this, \"close\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.dataContext = dataContext;\r\n this.component = component;\r\n this._settings.visible = true;\r\n this._checkDirty();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirty() {\r\n this.component.markDirtyValues(this);\r\n }\r\n _startAnimation() {\r\n this.component._root._addAnimation(this);\r\n }\r\n _animationTime() {\r\n return this.component._root.animationTime;\r\n }\r\n _dispose() {\r\n if (this.component) {\r\n this.component.disposeDataItem(this);\r\n }\r\n super._dispose();\r\n }\r\n /**\r\n * Shows a data item that's currently hidden.\r\n */\r\n show(duration) {\r\n this.setRaw(\"visible\", true);\r\n if (this.component) {\r\n this.component.showDataItem(this, duration);\r\n }\r\n }\r\n /**\r\n * Hides a data item that's currently visible.\r\n */\r\n hide(duration) {\r\n this.setRaw(\"visible\", false);\r\n if (this.component) {\r\n this.component.hideDataItem(this, duration);\r\n }\r\n }\r\n isHidden() {\r\n return !this.get(\"visible\");\r\n }\r\n}\r\n/**\r\n * A base class for elements that make use of data.\r\n */\r\nexport class Component extends Container {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_data\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListData()\r\n });\r\n Object.defineProperty(this, \"_dataItems\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_mainDataItems\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._dataItems\r\n });\r\n Object.defineProperty(this, \"valueFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"fields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\"id\"]\r\n });\r\n Object.defineProperty(this, \"_valueFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_valueFieldsF\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_fields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_fieldsF\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_valuesDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dataChanged\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dataGrouped\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * Indicates if the component has already been initialized.\r\n */\r\n Object.defineProperty(this, \"inited\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n /**\r\n * Component's data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/data/} for more info\r\n */\r\n set data(data) {\r\n data.incrementRef();\r\n this._data.decrementRef();\r\n this._data = data;\r\n }\r\n /**\r\n * @return Data\r\n */\r\n get data() {\r\n return this._data;\r\n }\r\n _dispose() {\r\n super._dispose();\r\n this._data.decrementRef();\r\n }\r\n _onDataClear() {\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this._data.incrementRef();\r\n this._updateFields();\r\n this._disposers.push(this.data.events.onAll((change) => {\r\n const dataItems = this._mainDataItems;\r\n this.markDirtyValues();\r\n this._markDirtyGroup();\r\n this._dataChanged = true;\r\n if (change.type === \"clear\") {\r\n $array.each(dataItems, (dataItem) => {\r\n dataItem.dispose();\r\n });\r\n dataItems.length = 0;\r\n this._onDataClear();\r\n }\r\n else if (change.type === \"push\") {\r\n const dataItem = new DataItem(this, change.newValue, this._makeDataItem(change.newValue));\r\n dataItems.push(dataItem);\r\n this.processDataItem(dataItem);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n const dataItem = dataItems[change.index];\r\n const properties = this._makeDataItem(change.newValue);\r\n if (dataItem.bullets && dataItem.bullets.length == 0) {\r\n dataItem.bullets = undefined;\r\n }\r\n $object.keys(properties).forEach((key) => {\r\n dataItem.animate({\r\n key: key,\r\n to: properties[key],\r\n duration: this.get(\"interpolationDuration\", 0),\r\n easing: this.get(\"interpolationEasing\"),\r\n });\r\n });\r\n dataItem.dataContext = change.newValue;\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n const dataItem = new DataItem(this, change.newValue, this._makeDataItem(change.newValue));\r\n dataItems.splice(change.index, 0, dataItem);\r\n this.processDataItem(dataItem);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n const dataItem = dataItems[change.index];\r\n dataItem.dispose();\r\n dataItems.splice(change.index, 1);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n const dataItem = dataItems[change.oldIndex];\r\n dataItems.splice(change.oldIndex, 1);\r\n dataItems.splice(change.newIndex, 0, dataItem);\r\n }\r\n else {\r\n throw new Error(\"Unknown IStreamEvent type\");\r\n }\r\n this._afterDataChange();\r\n }));\r\n }\r\n _updateFields() {\r\n if (this.valueFields) {\r\n this._valueFields = [];\r\n this._valueFieldsF = {};\r\n $array.each(this.valueFields, (key) => {\r\n const field = this.get((key + \"Field\"));\r\n if (field) {\r\n this._valueFields.push(key);\r\n this._valueFieldsF[key] = { fieldKey: key + \"Field\", workingKey: key + \"Working\" };\r\n }\r\n });\r\n }\r\n if (this.fields) {\r\n this._fields = [];\r\n this._fieldsF = {};\r\n $array.each(this.fields, (key) => {\r\n const field = this.get((key + \"Field\"));\r\n if (field) {\r\n this._fields.push(key);\r\n this._fieldsF[key] = key + \"Field\";\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * A list of component's data items.\r\n *\r\n * @return Data items\r\n */\r\n get dataItems() {\r\n return this._dataItems;\r\n }\r\n processDataItem(_dataItem) { }\r\n _makeDataItem(data) {\r\n //const output: this[\"_dataItemSettings\"] = {};\r\n const output = {}; // temporary to solve error\r\n if (this._valueFields) {\r\n $array.each(this._valueFields, (key) => {\r\n const field = this.get((this._valueFieldsF[key].fieldKey));\r\n output[key] = data[field];\r\n output[this._valueFieldsF[key].workingKey] = output[key];\r\n });\r\n }\r\n if (this._fields) {\r\n $array.each(this._fields, (key) => {\r\n const field = this.get((this._fieldsF[key]));\r\n output[key] = data[field];\r\n });\r\n }\r\n return output;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeDataItem(data) {\r\n let dataItem = new DataItem(this, undefined, data);\r\n this.processDataItem(dataItem);\r\n return dataItem;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n pushDataItem(data) {\r\n const dataItem = this.makeDataItem(data);\r\n this._mainDataItems.push(dataItem);\r\n return dataItem;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n disposeDataItem(_dataItem) {\r\n }\r\n /**\r\n * Shows component's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param _duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n showDataItem(dataItem, _duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n dataItem.set(\"visible\", true);\r\n });\r\n }\r\n /**\r\n * Hides component's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param _duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n hideDataItem(dataItem, _duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n dataItem.set(\"visible\", false);\r\n });\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._valuesDirty = false;\r\n }\r\n _afterDataChange() {\r\n }\r\n _afterChanged() {\r\n super._afterChanged();\r\n if (this._dataChanged) {\r\n const type = \"datavalidated\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n this._dataChanged = false;\r\n }\r\n this.inited = true;\r\n }\r\n /**\r\n * Forces a repaint of the element which relies on data.\r\n *\r\n * @since 5.0.21\r\n */\r\n markDirtyValues(_dataItem) {\r\n this.markDirty();\r\n this._valuesDirty = true;\r\n }\r\n _markDirtyGroup() {\r\n this._dataGrouped = false;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtySize() {\r\n this._sizeDirty = true;\r\n this.markDirty();\r\n }\r\n}\r\nObject.defineProperty(Component, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Component\"\r\n});\r\nObject.defineProperty(Component, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Component.className])\r\n});\r\n","import { List } from \"./List\";\r\nimport * as $array from \"./Array\";\r\n/**\r\n * A version of [[List]] to hold children of the [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/} for more info\r\n */\r\nexport class Children extends List {\r\n constructor(container) {\r\n super();\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_container\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._container = container;\r\n this._events = this.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n $array.each(change.oldValues, (x) => {\r\n this._onRemoved(x);\r\n });\r\n }\r\n else if (change.type === \"push\") {\r\n this._onInserted(change.newValue);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n this._onRemoved(change.oldValue);\r\n this._onInserted(change.newValue, change.index);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n this._onInserted(change.newValue, change.index);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this._onRemoved(change.oldValue);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n this._onRemoved(change.value);\r\n this._onInserted(change.value, change.newIndex);\r\n }\r\n else {\r\n throw new Error(\"Unknown IListEvent type\");\r\n }\r\n });\r\n }\r\n _onInserted(child, index) {\r\n child._setParent(this._container, true);\r\n const childrenDisplay = this._container._childrenDisplay;\r\n if (index === undefined) {\r\n childrenDisplay.addChild(child._display);\r\n }\r\n else {\r\n childrenDisplay.addChildAt(child._display, index);\r\n }\r\n }\r\n _onRemoved(child) {\r\n this._container._childrenDisplay.removeChild(child._display);\r\n this._container.markDirtyBounds();\r\n this._container.markDirty();\r\n }\r\n /**\r\n * Returns `true` if obejct is disposed.\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Permanently dispose this object.\r\n */\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._events.dispose();\r\n $array.each(this.values, (child) => {\r\n child.dispose();\r\n });\r\n }\r\n }\r\n}\r\n","import { Children } from \"../util/Children\";\r\nimport { Percent } from \"../util/Percent\";\r\nimport { Sprite } from \"./Sprite\";\r\nimport { Rectangle } from \"./Rectangle\";\r\nimport { HorizontalLayout } from \"./HorizontalLayout\";\r\nimport { VerticalLayout } from \"./VerticalLayout\";\r\nimport { GridLayout } from \"./GridLayout\";\r\nimport { populateString } from \"../util/PopulateString\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $type from \"../util/Type\";\r\nimport * as $utils from \"../util/Utils\";\r\n/**\r\n * A basic element that can have child elements, maintain their layout, and\r\n * have a background.\r\n *\r\n * It can have any [[Sprite]] element as a child, from very basic shapes, to\r\n * full-fledged charts.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/} for more info\r\n * @important\r\n */\r\nexport class Container extends Sprite {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_display\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeContainer()\r\n });\r\n Object.defineProperty(this, \"_childrenDisplay\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeContainer()\r\n });\r\n /**\r\n * List of Container's child elements.\r\n */\r\n Object.defineProperty(this, \"children\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Children(this)\r\n });\r\n Object.defineProperty(this, \"_percentageSizeChildren\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_percentagePositionChildren\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_prevWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_prevHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_contentWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_contentHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_contentMask\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_vsbd0\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_vsbd1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this._display.addChild(this._childrenDisplay);\r\n }\r\n _dispose() {\r\n $array.eachReverse(this.allChildren(), (child) => {\r\n child.dispose();\r\n });\r\n if (this.getPrivate(\"htmlElement\")) {\r\n this._root._removeHTMLContent(this);\r\n }\r\n super._dispose();\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this.isDirty(\"interactiveChildren\")) {\r\n this._display.interactiveChildren = this.get(\"interactiveChildren\", false);\r\n }\r\n if (this.isDirty(\"layout\")) {\r\n this._prevWidth = 0;\r\n this._prevHeight = 0;\r\n this.markDirtyBounds();\r\n if (this._prevSettings.layout) {\r\n this.children.each((child) => {\r\n child.removePrivate(\"x\");\r\n child.removePrivate(\"y\");\r\n });\r\n }\r\n }\r\n if (this.isDirty(\"paddingTop\") || this.isDirty(\"paddingBottom\") || this.isDirty(\"paddingLeft\") || this.isDirty(\"paddingRight\")) {\r\n this.children.each((child) => {\r\n child.markDirtyPosition();\r\n });\r\n }\r\n if (this.isDirty(\"maskContent\")) {\r\n const childrenDisplay = this._childrenDisplay;\r\n let contentMask = this._contentMask;\r\n if (this.get(\"maskContent\")) {\r\n if (!contentMask) {\r\n contentMask = Rectangle.new(this._root, {\r\n x: -.5,\r\n y: -.5,\r\n width: this.width() + 1,\r\n height: this.height() + 1\r\n });\r\n this._contentMask = contentMask;\r\n childrenDisplay.addChildAt(contentMask._display, 0);\r\n childrenDisplay.mask = contentMask._display;\r\n }\r\n }\r\n else {\r\n if (contentMask) {\r\n childrenDisplay.removeChild(contentMask._display);\r\n childrenDisplay.mask = null;\r\n contentMask.dispose();\r\n this._contentMask = undefined;\r\n }\r\n }\r\n }\r\n }\r\n _updateSize() {\r\n super._updateSize();\r\n $array.each(this._percentageSizeChildren, (child) => {\r\n child._updateSize();\r\n });\r\n $array.each(this._percentagePositionChildren, (child) => {\r\n child.markDirtyPosition();\r\n child._updateSize();\r\n });\r\n this.updateBackground();\r\n }\r\n updateBackground() {\r\n const background = this.get(\"background\");\r\n let bounds = this._localBounds;\r\n if (bounds && !this.isHidden()) {\r\n let x = bounds.left;\r\n let y = bounds.top;\r\n let w = bounds.right - x;\r\n let h = bounds.bottom - y;\r\n let maxWidth = this.get(\"maxWidth\");\r\n let maxHeight = this.get(\"maxHeight\");\r\n if (maxHeight) {\r\n if (h > maxHeight) {\r\n h = maxHeight;\r\n }\r\n }\r\n if (maxWidth) {\r\n if (w > maxWidth) {\r\n w = maxWidth;\r\n }\r\n }\r\n let width = this.width();\r\n let height = this.height();\r\n if (background) {\r\n background.setAll({ width: w, height: h, x: x, y: y });\r\n if (this._display.interactive) {\r\n background._display.interactive = true;\r\n }\r\n }\r\n const contentMask = this._contentMask;\r\n if (contentMask) {\r\n contentMask.setAll({ width: width + 1, height: height + 1 });\r\n }\r\n const verticalScrollbar = this.get(\"verticalScrollbar\");\r\n if (verticalScrollbar) {\r\n verticalScrollbar.set(\"height\", height);\r\n verticalScrollbar.set(\"x\", width - verticalScrollbar.width() - verticalScrollbar.get(\"marginRight\", 0));\r\n verticalScrollbar.set(\"end\", verticalScrollbar.get(\"start\", 0) + height / this._contentHeight);\r\n const bg = verticalScrollbar.get(\"background\");\r\n if (bg) {\r\n bg.setAll({ width: verticalScrollbar.width(), height: height });\r\n }\r\n let visible = true;\r\n if (this._contentHeight <= height) {\r\n visible = false;\r\n }\r\n verticalScrollbar.setPrivate(\"visible\", visible);\r\n }\r\n }\r\n }\r\n _applyThemes(force = false) {\r\n if (super._applyThemes(force)) {\r\n this.eachChildren((child) => {\r\n child._applyThemes(force);\r\n });\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n _applyState(name) {\r\n super._applyState(name);\r\n if (this.get(\"setStateOnChildren\")) {\r\n this.eachChildren((child) => {\r\n child.states.apply(name);\r\n });\r\n }\r\n }\r\n _applyStateAnimated(name, duration) {\r\n super._applyStateAnimated(name, duration);\r\n if (this.get(\"setStateOnChildren\")) {\r\n this.eachChildren((child) => {\r\n child.states.applyAnimate(name, duration);\r\n });\r\n }\r\n }\r\n /**\r\n * Returns container's inner width (width without padding) in pixels.\r\n *\r\n * @return Inner width (px)\r\n */\r\n innerWidth() {\r\n return this.width() - this.get(\"paddingRight\", 0) - this.get(\"paddingLeft\", 0);\r\n }\r\n /**\r\n * Returns container's inner height (height without padding) in pixels.\r\n *\r\n * @return Inner height (px)\r\n */\r\n innerHeight() {\r\n return this.height() - this.get(\"paddingTop\", 0) - this.get(\"paddingBottom\", 0);\r\n }\r\n _getBounds() {\r\n let width = this.get(\"width\");\r\n let height = this.get(\"height\");\r\n let pWidth = this.getPrivate(\"width\");\r\n let pHeight = this.getPrivate(\"height\");\r\n let bounds = {\r\n left: 0,\r\n top: 0,\r\n right: this.width(),\r\n bottom: this.height()\r\n };\r\n let layout = this.get(\"layout\");\r\n let horizontal = false;\r\n let vertical = false;\r\n if (layout instanceof HorizontalLayout || layout instanceof GridLayout) {\r\n horizontal = true;\r\n }\r\n if (layout instanceof VerticalLayout) {\r\n vertical = true;\r\n }\r\n if ((width != null || pWidth != null) && (height != null || pHeight != null) && !this.get(\"verticalScrollbar\")) {\r\n // void\r\n }\r\n else {\r\n let m = Number.MAX_VALUE;\r\n let l = m;\r\n let r = -m;\r\n let t = m;\r\n let b = -m;\r\n const paddingLeft = this.get(\"paddingLeft\", 0);\r\n const paddingTop = this.get(\"paddingTop\", 0);\r\n const paddingRight = this.get(\"paddingRight\", 0);\r\n const paddingBottom = this.get(\"paddingBottom\", 0);\r\n this.children.each((child) => {\r\n if (child.get(\"position\") != \"absolute\" && child.get(\"isMeasured\")) {\r\n let childBounds = child.adjustedLocalBounds();\r\n let childX = child.x();\r\n let childY = child.y();\r\n let cl = childX + childBounds.left;\r\n let cr = childX + childBounds.right;\r\n let ct = childY + childBounds.top;\r\n let cb = childY + childBounds.bottom;\r\n if (horizontal) {\r\n cl -= child.get(\"marginLeft\", 0);\r\n cr += child.get(\"marginRight\", 0);\r\n }\r\n if (vertical) {\r\n ct -= child.get(\"marginTop\", 0);\r\n cb += child.get(\"marginBottom\", 0);\r\n }\r\n if (cl < l) {\r\n l = cl;\r\n }\r\n if (cr > r) {\r\n r = cr;\r\n }\r\n if (ct < t) {\r\n t = ct;\r\n }\r\n if (cb > b) {\r\n b = cb;\r\n }\r\n }\r\n });\r\n if (l == m) {\r\n l = 0;\r\n }\r\n if (r == -m) {\r\n r = 0;\r\n }\r\n if (t == m) {\r\n t = 0;\r\n }\r\n if (b == -m) {\r\n b = 0;\r\n }\r\n bounds.left = l - paddingLeft;\r\n bounds.top = t - paddingTop;\r\n bounds.right = r + paddingRight;\r\n bounds.bottom = b + paddingBottom;\r\n const minWidth = this.get(\"minWidth\");\r\n if ($type.isNumber(minWidth) && minWidth > 0) {\r\n if (bounds.right - bounds.left < minWidth) {\r\n if (bounds.right >= minWidth) {\r\n bounds.left = bounds.right - minWidth;\r\n }\r\n else {\r\n bounds.right = bounds.left + minWidth;\r\n }\r\n }\r\n }\r\n const minHeight = this.get(\"minHeight\");\r\n if ($type.isNumber(minHeight) && minHeight > 0) {\r\n if (bounds.bottom - bounds.top < minHeight) {\r\n if (bounds.bottom >= minHeight) {\r\n bounds.top = bounds.bottom - minHeight;\r\n }\r\n else {\r\n bounds.bottom = bounds.top + minHeight;\r\n }\r\n }\r\n }\r\n }\r\n this._contentWidth = bounds.right - bounds.left;\r\n this._contentHeight = bounds.bottom - bounds.top;\r\n if ($type.isNumber(width)) {\r\n bounds.left = 0;\r\n bounds.right = width;\r\n }\r\n if ($type.isNumber(pWidth)) {\r\n bounds.left = 0;\r\n bounds.right = pWidth;\r\n }\r\n if ($type.isNumber(height)) {\r\n bounds.top = 0;\r\n bounds.bottom = height;\r\n }\r\n if ($type.isNumber(pHeight)) {\r\n bounds.top = 0;\r\n bounds.bottom = pHeight;\r\n }\r\n this._localBounds = bounds;\r\n }\r\n _updateBounds() {\r\n const layout = this.get(\"layout\");\r\n if (layout) {\r\n layout.updateContainer(this);\r\n }\r\n super._updateBounds();\r\n this.updateBackground();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirty() {\r\n super.markDirty();\r\n this._root._addDirtyParent(this);\r\n }\r\n _prepareChildren() {\r\n const innerWidth = this.innerWidth();\r\n const innerHeight = this.innerHeight();\r\n if (innerWidth != this._prevWidth || innerHeight != this._prevHeight) {\r\n let layout = this.get(\"layout\");\r\n let horizontal = false;\r\n let vertical = false;\r\n if (layout) {\r\n if (layout instanceof HorizontalLayout || layout instanceof GridLayout) {\r\n horizontal = true;\r\n }\r\n if (layout instanceof VerticalLayout) {\r\n vertical = true;\r\n }\r\n }\r\n $array.each(this._percentageSizeChildren, (child) => {\r\n if (!horizontal) {\r\n let width = child.get(\"width\");\r\n if (width instanceof Percent) {\r\n child.setPrivate(\"width\", width.value * innerWidth);\r\n }\r\n }\r\n if (!vertical) {\r\n let height = child.get(\"height\");\r\n if (height instanceof Percent) {\r\n child.setPrivate(\"height\", height.value * innerHeight);\r\n }\r\n }\r\n });\r\n $array.each(this._percentagePositionChildren, (child) => {\r\n child.markDirtyPosition();\r\n child.markDirtyBounds();\r\n });\r\n this._prevWidth = innerWidth;\r\n this._prevHeight = innerHeight;\r\n this._sizeDirty = true;\r\n this.updateBackground();\r\n }\r\n this._handleStates();\r\n }\r\n _updateHTMLContent() {\r\n const html = this.get(\"html\");\r\n if (html && html !== \"\") {\r\n this._root._setHTMLContent(this, populateString(this, this.get(\"html\", \"\")));\r\n }\r\n else {\r\n this._root._removeHTMLContent(this);\r\n }\r\n this._root._positionHTMLElement(this);\r\n }\r\n _updateChildren() {\r\n if (this.isDirty(\"html\")) {\r\n this._updateHTMLContent();\r\n }\r\n if (this.isDirty(\"verticalScrollbar\")) {\r\n const verticalScrollbar = this.get(\"verticalScrollbar\");\r\n if (verticalScrollbar) {\r\n verticalScrollbar._setParent(this);\r\n verticalScrollbar.startGrip.setPrivate(\"visible\", false);\r\n verticalScrollbar.endGrip.setPrivate(\"visible\", false);\r\n this.set(\"maskContent\", true);\r\n this.set(\"paddingRight\", verticalScrollbar.width() + verticalScrollbar.get(\"marginRight\", 0) + verticalScrollbar.get(\"marginLeft\", 0));\r\n let background = this.get(\"background\");\r\n if (!background) {\r\n background = this.set(\"background\", Rectangle.new(this._root, {\r\n themeTags: [\"background\"],\r\n fillOpacity: 0,\r\n fill: this._root.interfaceColors.get(\"alternativeBackground\")\r\n }));\r\n }\r\n this._vsbd0 = this.events.on(\"wheel\", (event) => {\r\n const wheelEvent = event.originalEvent;\r\n // Ignore wheel event if it is happening on a non-chart element, e.g. if\r\n // some page element is over the chart.\r\n if ($utils.isLocalEvent(wheelEvent, this)) {\r\n wheelEvent.preventDefault();\r\n }\r\n else {\r\n return;\r\n }\r\n let shiftY = wheelEvent.deltaY / 5000;\r\n const start = verticalScrollbar.get(\"start\", 0);\r\n const end = verticalScrollbar.get(\"end\", 1);\r\n if (start + shiftY <= 0) {\r\n shiftY = -start;\r\n }\r\n if (end + shiftY >= 1) {\r\n shiftY = 1 - end;\r\n }\r\n if (start + shiftY >= 0 && end + shiftY <= 1) {\r\n verticalScrollbar.set(\"start\", start + shiftY);\r\n verticalScrollbar.set(\"end\", end + shiftY);\r\n }\r\n });\r\n this._disposers.push(this._vsbd0);\r\n this._vsbd1 = verticalScrollbar.events.on(\"rangechanged\", () => {\r\n let h = this._contentHeight;\r\n const childrenDisplay = this._childrenDisplay;\r\n const contentMask = this._contentMask;\r\n childrenDisplay.y = -verticalScrollbar.get(\"start\", 0) * h;\r\n childrenDisplay.markDirtyLayer();\r\n if (contentMask) {\r\n contentMask._display.y = -childrenDisplay.y;\r\n childrenDisplay.mask = contentMask._display;\r\n }\r\n });\r\n this._disposers.push(this._vsbd1);\r\n this._display.addChild(verticalScrollbar._display);\r\n }\r\n else {\r\n const previous = this._prevSettings.verticalScrollbar;\r\n if (previous) {\r\n this._display.removeChild(previous._display);\r\n if (this._vsbd0) {\r\n this._vsbd0.dispose();\r\n }\r\n if (this._vsbd1) {\r\n this._vsbd1.dispose();\r\n }\r\n const childrenDisplay = this._childrenDisplay;\r\n childrenDisplay.y = 0;\r\n this.setPrivate(\"height\", undefined);\r\n this.set(\"maskContent\", false);\r\n this.set(\"paddingRight\", undefined);\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"background\")) {\r\n // TODO maybe this should dispose ?\r\n const previous = this._prevSettings[\"background\"];\r\n if (previous) {\r\n this._display.removeChild(previous._display);\r\n }\r\n const background = this.get(\"background\");\r\n if (background instanceof Sprite) {\r\n background.set(\"isMeasured\", false);\r\n background._setParent(this);\r\n this._display.addChildAt(background._display, 0);\r\n }\r\n }\r\n if (this.isDirty(\"mask\")) {\r\n const mask = this.get(\"mask\");\r\n const previous = this._prevSettings[\"mask\"];\r\n if (previous) {\r\n this._display.removeChild(previous._display);\r\n if (previous != mask) {\r\n previous.dispose();\r\n }\r\n }\r\n if (mask) {\r\n const parent = mask.parent;\r\n if (parent) {\r\n parent.children.removeValue(mask);\r\n }\r\n mask._setParent(this);\r\n this._display.addChildAt(mask._display, 0);\r\n this._childrenDisplay.mask = mask._display;\r\n }\r\n }\r\n }\r\n _processTemplateField() {\r\n super._processTemplateField();\r\n this.children.each((child) => {\r\n child._processTemplateField();\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n walkChildren(f) {\r\n this.children.each((child) => {\r\n if (child instanceof Container) {\r\n child.walkChildren(f);\r\n }\r\n f(child);\r\n });\r\n }\r\n eachChildren(f) {\r\n const background = this.get(\"background\");\r\n if (background) {\r\n f(background);\r\n }\r\n const verticalScrollbar = this.get(\"verticalScrollbar\");\r\n if (verticalScrollbar) {\r\n f(verticalScrollbar);\r\n }\r\n const mask = this.get(\"mask\");\r\n if (mask) {\r\n f(mask);\r\n }\r\n this.children.values.forEach((child) => {\r\n f(child);\r\n });\r\n }\r\n allChildren() {\r\n const output = [];\r\n this.eachChildren((x) => {\r\n output.push(x);\r\n });\r\n return output;\r\n }\r\n _setDataItem(dataItem) {\r\n const updated = (dataItem !== this._dataItem);\r\n super._setDataItem(dataItem);\r\n const html = this.get(\"html\", \"\");\r\n if (html && html !== \"\" && updated) {\r\n this._root._setHTMLContent(this, populateString(this, html));\r\n }\r\n }\r\n}\r\nObject.defineProperty(Container, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Container\"\r\n});\r\nObject.defineProperty(Container, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Sprite.classNames.concat([Container.className])\r\n});\r\n","import { Entity } from \"../../util/Entity\";\r\n/**\r\n * Base class for patterns.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/} for more info\r\n */\r\nexport class Pattern extends Entity {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_display\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeGraphics()\r\n });\r\n Object.defineProperty(this, \"_backgroundDisplay\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeGraphics()\r\n });\r\n Object.defineProperty(this, \"_clear\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_pattern\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n // Applying themes because pattern will not have parent\r\n super._afterNewApplyThemes();\r\n }\r\n get pattern() {\r\n return this._pattern;\r\n }\r\n _draw() { }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"repetition\") || this.isDirty(\"width\") || this.isDirty(\"height\") || this.isDirty(\"rotation\") || this.isDirty(\"strokeWidth\") || this.isDirty(\"strokeDasharray\") || this.isDirty(\"strokeDashoffset\") || this.isDirty(\"colorOpacity\") || this.isDirty(\"fillOpacity\")) {\r\n this._clear = true;\r\n }\r\n this._checkDirtyFill();\r\n }\r\n _checkDirtyFill() {\r\n if (this.isDirty(\"color\") || this.isDirty(\"fill\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n const repetition = this.get(\"repetition\", \"\");\r\n const width = this.get(\"width\", 100);\r\n const height = this.get(\"height\", 100);\r\n const fill = this.get(\"fill\");\r\n const fillOpacity = this.get(\"fillOpacity\", 1);\r\n const backgroundDisplay = this._backgroundDisplay;\r\n const display = this._display;\r\n display.clear();\r\n backgroundDisplay.clear();\r\n if (fill && (fillOpacity > 0)) {\r\n backgroundDisplay.beginFill(fill, fillOpacity);\r\n backgroundDisplay.drawRect(0, 0, width, height);\r\n backgroundDisplay.endFill();\r\n }\r\n display.angle = this.get(\"rotation\", 0);\r\n //display.pivot = { x: width / 2, y: height / 2 };\r\n this._draw();\r\n this._pattern = this._root._renderer.createPattern(display, backgroundDisplay, repetition, width, height);\r\n }\r\n this._clear = false;\r\n }\r\n}\r\nObject.defineProperty(Pattern, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Pattern\"\r\n});\r\nObject.defineProperty(Pattern, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Pattern.className])\r\n});\r\n","import { Pattern } from \"./Pattern\";\r\n/**\r\n * Picture pattern.\r\n *\r\n * @since 5.2.15\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/} for more info\r\n */\r\nexport class PicturePattern extends Pattern {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_image\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n this._clear = true;\r\n if (this.isDirty(\"src\")) {\r\n this._load();\r\n }\r\n const canvas = this.get(\"canvas\");\r\n if (canvas) {\r\n this.set(\"width\", canvas.width);\r\n this.set(\"height\", canvas.height);\r\n }\r\n }\r\n _draw() {\r\n super._draw();\r\n const image = this._image;\r\n if (image) {\r\n const patternWidth = this.get(\"width\", 100);\r\n const patternHeight = this.get(\"height\", 100);\r\n // Fit\r\n const fit = this.get(\"fit\", \"image\");\r\n let width = 0;\r\n let height = 0;\r\n if (fit == \"pattern\") {\r\n width = patternWidth;\r\n height = patternHeight;\r\n }\r\n else {\r\n width = image.width;\r\n height = image.height;\r\n if (fit == \"image\") {\r\n this.set(\"width\", width);\r\n this.set(\"height\", height);\r\n }\r\n }\r\n // Position\r\n const centered = this.get(\"centered\", true);\r\n let x = 0;\r\n let y = 0;\r\n if (centered) {\r\n x = patternWidth / 2 - width / 2;\r\n y = patternHeight / 2 - height / 2;\r\n }\r\n this._display.image(image, width, height, x, y);\r\n }\r\n const canvas = this.get(\"canvas\");\r\n if (canvas) {\r\n this._display.image(canvas, canvas.width, canvas.height, 0, 0);\r\n }\r\n }\r\n _load() {\r\n const src = this.get(\"src\");\r\n if (src) {\r\n const image = new Image();\r\n //image.crossOrigin = \"Anonymous\";\r\n image.src = src;\r\n image.decode().then(() => {\r\n this._image = image;\r\n this._draw();\r\n if (this.events.isEnabled(\"loaded\")) {\r\n this.events.dispatch(\"loaded\", { type: \"loaded\", target: this });\r\n }\r\n }).catch((_error) => {\r\n // TODO: maybe raise error?\r\n });\r\n }\r\n }\r\n}\r\nObject.defineProperty(PicturePattern, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"PicturePattern\"\r\n});\r\nObject.defineProperty(PicturePattern, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Pattern.classNames.concat([PicturePattern.className])\r\n});\r\n","import { PicturePattern } from \"../render/patterns/PicturePattern\";\r\nimport { Sprite } from \"./Sprite\";\r\nimport { BlendMode } from \"./backend/Renderer\";\r\nimport * as $type from \"../util/Type\";\r\nimport * as $array from \"../util/Array\";\r\nexport const visualSettings = [\"fill\", \"fillOpacity\", \"stroke\", \"strokeWidth\", \"strokeOpacity\", \"fillPattern\", \"strokePattern\", \"fillGradient\", \"strokeGradient\", \"strokeDasharray\", \"strokeDashoffset\", \"shadowBlur\", \"shadowColor\", \"shadowOpacity\", \"shadowOffsetX\", \"shadowOffsetY\", \"blur\", \"sepia\", \"invert\", \"brightness\", \"hue\", \"contrast\", \"saturate\"];\r\n/**\r\n * Base class used for drawing shapes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class Graphics extends Sprite {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_display\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeGraphics()\r\n });\r\n Object.defineProperty(this, \"_clear\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"draw\") || this.isDirty(\"svgPath\")) {\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"fill\") || this.isDirty(\"stroke\") || this.isDirty(\"visible\") || this.isDirty(\"forceHidden\") || this.isDirty(\"scale\") || this.isDirty(\"fillGradient\") || this.isDirty(\"strokeGradient\") || this.isDirty(\"fillPattern\") || this.isDirty(\"strokePattern\") || this.isDirty(\"fillOpacity\") || this.isDirty(\"strokeOpacity\") || this.isDirty(\"strokeWidth\") || this.isDirty(\"draw\") || this.isDirty(\"blendMode\") || this.isDirty(\"strokeDasharray\") || this.isDirty(\"strokeDashoffset\") || this.isDirty(\"svgPath\") || this.isDirty(\"lineJoin\") || this.isDirty(\"shadowColor\") || this.isDirty(\"shadowBlur\") || this.isDirty(\"shadowOffsetX\") || this.isDirty(\"shadowOffsetY\")) {\r\n this._clear = true;\r\n }\r\n this._display.crisp = this.get(\"crisp\", false);\r\n if (this.isDirty(\"fillGradient\")) {\r\n const gradient = this.get(\"fillGradient\");\r\n if (gradient) {\r\n this._display.isMeasured = true;\r\n const gradientTarget = gradient.get(\"target\");\r\n if (gradientTarget) {\r\n this._disposers.push(gradientTarget.events.on(\"boundschanged\", () => {\r\n this._markDirtyKey(\"fill\");\r\n }));\r\n this._disposers.push(gradientTarget.events.on(\"positionchanged\", () => {\r\n this._markDirtyKey(\"fill\");\r\n }));\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"strokeGradient\")) {\r\n const gradient = this.get(\"strokeGradient\");\r\n if (gradient) {\r\n this._display.isMeasured = true;\r\n const gradientTarget = gradient.get(\"target\");\r\n if (gradientTarget) {\r\n this._disposers.push(gradientTarget.events.on(\"boundschanged\", () => {\r\n this._markDirtyKey(\"stroke\");\r\n }));\r\n this._disposers.push(gradientTarget.events.on(\"positionchanged\", () => {\r\n this._markDirtyKey(\"stroke\");\r\n }));\r\n }\r\n }\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n this.markDirtyBounds();\r\n this.markDirtyLayer();\r\n this._display.clear();\r\n let strokeDasharray = this.get(\"strokeDasharray\");\r\n if ($type.isNumber(strokeDasharray)) {\r\n if (strokeDasharray < 0.5) {\r\n strokeDasharray = [0];\r\n }\r\n else {\r\n strokeDasharray = [strokeDasharray];\r\n }\r\n }\r\n this._display.setLineDash(strokeDasharray);\r\n const strokeDashoffset = this.get(\"strokeDashoffset\");\r\n if (strokeDashoffset) {\r\n this._display.setLineDashOffset(strokeDashoffset);\r\n }\r\n const blendMode = this.get(\"blendMode\", BlendMode.NORMAL);\r\n this._display.blendMode = blendMode;\r\n const draw = this.get(\"draw\");\r\n if (draw && typeof draw === \"function\") {\r\n draw(this._display, this);\r\n }\r\n const svgPath = this.get(\"svgPath\");\r\n if (svgPath != null) {\r\n this._display.svgPath(svgPath);\r\n }\r\n }\r\n }\r\n _afterChanged() {\r\n super._afterChanged();\r\n if (this._clear) {\r\n const fill = this.get(\"fill\");\r\n const fillGradient = this.get(\"fillGradient\");\r\n const fillPattern = this.get(\"fillPattern\");\r\n const fillOpacity = this.get(\"fillOpacity\");\r\n const stroke = this.get(\"stroke\");\r\n const strokeGradient = this.get(\"strokeGradient\");\r\n const strokePattern = this.get(\"strokePattern\");\r\n const shadowColor = this.get(\"shadowColor\");\r\n const shadowBlur = this.get(\"shadowBlur\");\r\n const shadowOffsetX = this.get(\"shadowOffsetX\");\r\n const shadowOffsetY = this.get(\"shadowOffsetY\");\r\n const shadowOpacity = this.get(\"shadowOpacity\");\r\n if (shadowColor && (shadowBlur || shadowOffsetX || shadowOffsetY)) {\r\n this._display.shadow(shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY, shadowOpacity);\r\n }\r\n if (fill && !fillGradient) {\r\n this._display.beginFill(fill, fillOpacity);\r\n this._display.endFill();\r\n }\r\n if (fillGradient) {\r\n if (fill) {\r\n const stops = fillGradient.get(\"stops\", []);\r\n if (stops.length) {\r\n $array.each(stops, (stop) => {\r\n if ((!stop.color || stop.colorInherited) && fill) {\r\n stop.color = fill;\r\n stop.colorInherited = true;\r\n }\r\n if (stop.opacity == null || stop.opacityInherited) {\r\n stop.opacity = fillOpacity;\r\n stop.opacityInherited = true;\r\n }\r\n });\r\n }\r\n }\r\n const gradient = fillGradient.getFill(this);\r\n if (gradient) {\r\n this._display.beginFill(gradient, fillOpacity);\r\n this._display.endFill();\r\n }\r\n }\r\n if (fillPattern) {\r\n const pattern = fillPattern.pattern;\r\n if (pattern) {\r\n this._display.beginFill(pattern, fillOpacity);\r\n this._display.endFill();\r\n if (fillPattern instanceof PicturePattern) {\r\n fillPattern.events.once(\"loaded\", () => {\r\n this._clear = true;\r\n this.markDirty();\r\n });\r\n }\r\n }\r\n }\r\n if (stroke || strokeGradient || strokePattern) {\r\n const strokeOpacity = this.get(\"strokeOpacity\");\r\n let strokeWidth = this.get(\"strokeWidth\", 1);\r\n if (this.get(\"nonScalingStroke\")) {\r\n strokeWidth = strokeWidth / this.get(\"scale\", 1);\r\n }\r\n if (this.get(\"crisp\")) {\r\n strokeWidth /= this._root._renderer.resolution;\r\n }\r\n const lineJoin = this.get(\"lineJoin\");\r\n if (stroke && !strokeGradient) {\r\n this._display.lineStyle(strokeWidth, stroke, strokeOpacity, lineJoin);\r\n this._display.endStroke();\r\n }\r\n if (strokeGradient) {\r\n const stops = strokeGradient.get(\"stops\", []);\r\n if (stops.length) {\r\n $array.each(stops, (stop) => {\r\n if ((!stop.color || stop.colorInherited) && stroke) {\r\n stop.color = stroke;\r\n stop.colorInherited = true;\r\n }\r\n if (stop.opacity == null || stop.opacityInherited) {\r\n stop.opacity = strokeOpacity;\r\n stop.opacityInherited = true;\r\n }\r\n });\r\n }\r\n const gradient = strokeGradient.getFill(this);\r\n if (gradient) {\r\n this._display.lineStyle(strokeWidth, gradient, strokeOpacity, lineJoin);\r\n this._display.endStroke();\r\n }\r\n }\r\n if (strokePattern) {\r\n /*\r\n let changed = false;\r\n \r\n if (stroke && (!strokePattern.get(\"color\") || strokePattern.get(\"colorInherited\"))) {\r\n strokePattern.set(\"color\", stroke);\r\n strokePattern.set(\"colorInherited\", true);\r\n changed = true;\r\n }\r\n if (changed) {\r\n // @todo: is this OK?\r\n strokePattern._changed();\r\n }\r\n */\r\n let pattern = strokePattern.pattern;\r\n if (pattern) {\r\n this._display.lineStyle(strokeWidth, pattern, strokeOpacity, lineJoin);\r\n this._display.endStroke();\r\n if (strokePattern instanceof PicturePattern) {\r\n strokePattern.events.once(\"loaded\", () => {\r\n this._clear = true;\r\n this.markDirty();\r\n });\r\n }\r\n }\r\n }\r\n }\r\n if (this.getPrivate(\"showingTooltip\")) {\r\n this.showTooltip();\r\n }\r\n }\r\n this._clear = false;\r\n }\r\n}\r\nObject.defineProperty(Graphics, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Graphics\"\r\n});\r\nObject.defineProperty(Graphics, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Sprite.classNames.concat([Graphics.className])\r\n});\r\n","import { Layout, eachChildren } from \"./Layout\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $math from \"../util/Math\";\r\n/**\r\n * A grid children layout for [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Layout} for more info\r\n */\r\nexport class GridLayout extends Layout {\r\n _afterNew() {\r\n this._setRawDefault(\"maxColumns\", Number.MAX_VALUE);\r\n super._afterNew();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateContainer(container) {\r\n let paddingLeft = container.get(\"paddingLeft\", 0);\r\n let paddingRight = container.get(\"paddingRight\", 0);\r\n let paddingTop = container.get(\"paddingTop\", 0);\r\n let availableWidth = container.maxWidth() - paddingLeft - paddingRight;\r\n let minCellWidth = availableWidth;\r\n let maxCellWidth = 1;\r\n eachChildren(container, (child) => {\r\n if (child.get(\"visible\") && child.getPrivate(\"visible\") && !child.get(\"forceHidden\")) {\r\n if (child.get(\"position\") != \"absolute\") {\r\n let childWidth = child.width();\r\n if (childWidth < minCellWidth) {\r\n minCellWidth = childWidth;\r\n }\r\n if (childWidth > maxCellWidth) {\r\n maxCellWidth = childWidth;\r\n }\r\n }\r\n }\r\n });\r\n minCellWidth = $math.fitToRange(minCellWidth, 1, availableWidth);\r\n maxCellWidth = $math.fitToRange(maxCellWidth, 1, availableWidth);\r\n let columnCount = 1;\r\n if (this.get(\"fixedWidthGrid\")) {\r\n columnCount = availableWidth / maxCellWidth;\r\n }\r\n else {\r\n columnCount = availableWidth / minCellWidth;\r\n }\r\n columnCount = Math.max(1, Math.floor(columnCount));\r\n columnCount = Math.min(this.get(\"maxColumns\", Number.MAX_VALUE), columnCount);\r\n let columnWidths = this.getColumnWidths(container, columnCount, maxCellWidth, availableWidth);\r\n let prevY = paddingTop;\r\n let column = 0;\r\n let maxColumnHeight = 0;\r\n columnCount = columnWidths.length;\r\n let prevX = paddingLeft;\r\n eachChildren(container, (child) => {\r\n if (child.get(\"position\") == \"relative\" && child.isVisible()) {\r\n const marginTop = child.get(\"marginTop\", 0);\r\n const marginBottom = child.get(\"marginBottom\", 0);\r\n let bounds = child.adjustedLocalBounds();\r\n let marginLeft = child.get(\"marginLeft\", 0);\r\n let marginRight = child.get(\"marginRight\", 0);\r\n let x = prevX + marginLeft - bounds.left;\r\n let y = prevY + marginTop - bounds.top;\r\n child.setPrivate(\"x\", x);\r\n child.setPrivate(\"y\", y);\r\n prevX += columnWidths[column] + marginRight;\r\n maxColumnHeight = Math.max(maxColumnHeight, child.height() + marginTop + marginBottom);\r\n column++;\r\n if (column >= columnCount) {\r\n column = 0;\r\n prevX = paddingLeft;\r\n prevY += maxColumnHeight;\r\n }\r\n }\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getColumnWidths(container, columnCount, maxCellWidth, availableWidth) {\r\n let totalWidth = 0;\r\n let columnWidths = [];\r\n let column = 0;\r\n eachChildren(container, (child) => {\r\n let bounds = child.adjustedLocalBounds();\r\n if (child.get(\"position\") != \"absolute\" && child.isVisible()) {\r\n if (this.get(\"fixedWidthGrid\")) {\r\n columnWidths[column] = maxCellWidth;\r\n }\r\n else {\r\n columnWidths[column] = Math.max(columnWidths[column] | 0, bounds.right - bounds.left + child.get(\"marginLeft\", 0) + child.get(\"marginRight\", 0));\r\n }\r\n if (column < container.children.length - 1) {\r\n column++;\r\n if (column == columnCount) {\r\n column = 0;\r\n }\r\n }\r\n }\r\n });\r\n $array.each(columnWidths, (w) => {\r\n totalWidth += w;\r\n });\r\n if (totalWidth > availableWidth) {\r\n if (columnCount > 2) {\r\n columnCount -= 1;\r\n return this.getColumnWidths(container, columnCount, maxCellWidth, availableWidth);\r\n }\r\n else {\r\n return [availableWidth];\r\n }\r\n }\r\n return columnWidths;\r\n }\r\n}\r\nObject.defineProperty(GridLayout, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"GridLayout\"\r\n});\r\nObject.defineProperty(GridLayout, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Layout.classNames.concat([GridLayout.className])\r\n});\r\n","import { Layout, eachChildren } from \"./Layout\";\r\nimport * as $type from \"../util/Type\";\r\nimport { Percent } from \"../util/Percent\";\r\n/**\r\n * A horizontal children layout for [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Layout} for more info\r\n */\r\nexport class HorizontalLayout extends Layout {\r\n /**\r\n * @ignore\r\n */\r\n updateContainer(container) {\r\n let paddingLeft = container.get(\"paddingLeft\", 0);\r\n let availableWidth = container.innerWidth();\r\n let totalPercent = 0;\r\n eachChildren(container, (child) => {\r\n if (child.isVisible()) {\r\n if (child.get(\"position\") == \"relative\") {\r\n let childWidth = child.get(\"width\");\r\n if (childWidth instanceof Percent) {\r\n totalPercent += childWidth.value;\r\n let w = availableWidth * childWidth.value;\r\n let minWidth = child.get(\"minWidth\", child.getPrivate(\"minWidth\", -Infinity));\r\n if (minWidth > w) {\r\n availableWidth -= minWidth;\r\n totalPercent -= childWidth.value;\r\n }\r\n let maxWidth = child.get(\"maxWidth\", child.getPrivate(\"maxWidth\", Infinity));\r\n if (w > maxWidth) {\r\n availableWidth -= maxWidth;\r\n totalPercent -= childWidth.value;\r\n }\r\n }\r\n else {\r\n if (!$type.isNumber(childWidth)) {\r\n childWidth = child.width();\r\n }\r\n availableWidth -= childWidth + child.get(\"marginLeft\", 0) + child.get(\"marginRight\", 0);\r\n }\r\n }\r\n }\r\n });\r\n if (availableWidth <= 0 || availableWidth == Infinity) {\r\n availableWidth = .1;\r\n }\r\n //if (availableWidth > 0) {\r\n eachChildren(container, (child) => {\r\n if (child.isVisible()) {\r\n if (child.get(\"position\") == \"relative\") {\r\n let childWidth = child.get(\"width\");\r\n if (childWidth instanceof Percent) {\r\n let privateWidth = availableWidth * childWidth.value / totalPercent - child.get(\"marginLeft\", 0) - child.get(\"marginRight\", 0);\r\n let minWidth = child.get(\"minWidth\", child.getPrivate(\"minWidth\", -Infinity));\r\n let maxWidth = child.get(\"maxWidth\", child.getPrivate(\"maxWidth\", Infinity));\r\n privateWidth = Math.min(Math.max(minWidth, privateWidth), maxWidth);\r\n child.setPrivate(\"width\", privateWidth);\r\n }\r\n else {\r\n if (child._prevSettings.width instanceof Percent) {\r\n child.setPrivate(\"width\", undefined);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n //}\r\n let prevX = paddingLeft;\r\n eachChildren(container, (child) => {\r\n if (child.get(\"position\") == \"relative\") {\r\n if (child.isVisible()) {\r\n let bounds = child.adjustedLocalBounds();\r\n let marginLeft = child.get(\"marginLeft\", 0);\r\n let marginRight = child.get(\"marginRight\", 0);\r\n let maxWidth = child.get(\"maxWidth\");\r\n let left = bounds.left;\r\n let right = bounds.right;\r\n if (maxWidth) {\r\n if (right - left > maxWidth) {\r\n right = left + maxWidth;\r\n }\r\n }\r\n let x = prevX + marginLeft - left;\r\n child.setPrivate(\"x\", x);\r\n prevX = x + right + marginRight;\r\n }\r\n else {\r\n child.setPrivate(\"x\", undefined);\r\n }\r\n }\r\n });\r\n }\r\n}\r\nObject.defineProperty(HorizontalLayout, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"HorizontalLayout\"\r\n});\r\nObject.defineProperty(HorizontalLayout, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Layout.classNames.concat([HorizontalLayout.className])\r\n});\r\n","import { Text } from \"../render/Text\";\r\nimport { p50, p100 } from \"../util/Percent\";\r\nimport { Container } from \"./Container\";\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $type from \"../../core/util/Type\";\r\n/**\r\n * Creates a label with support for in-line styling and data bindings.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/labels/} for more info\r\n */\r\nexport class Label extends Container {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_text\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_textKeys\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\r\n \"text\",\r\n \"fill\",\r\n \"fillOpacity\",\r\n \"textAlign\",\r\n \"fontFamily\",\r\n \"fontSize\",\r\n \"fontStyle\",\r\n \"fontWeight\",\r\n \"fontStyle\",\r\n \"fontVariant\",\r\n \"textDecoration\",\r\n \"shadowColor\",\r\n \"shadowBlur\",\r\n \"shadowOffsetX\",\r\n \"shadowOffsetY\",\r\n \"shadowOpacity\",\r\n // \"leading\",\r\n // \"letterSpacing\",\r\n \"lineHeight\",\r\n \"baselineRatio\",\r\n //\"padding\",\r\n // \"stroke\",\r\n // \"strokeThickness\",\r\n // \"trim\",\r\n // \"wordWrap\",\r\n \"direction\",\r\n \"textBaseline\",\r\n \"oversizedBehavior\",\r\n \"breakWords\",\r\n \"ellipsis\",\r\n \"minScale\",\r\n \"populateText\",\r\n \"role\",\r\n \"ignoreFormatting\",\r\n \"maxChars\",\r\n \"ariaLabel\"\r\n ]\r\n });\r\n }\r\n /**\r\n * @ignore Text is not to be used directly\r\n */\r\n get text() {\r\n return this._text;\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this._makeText();\r\n $array.each(this._textKeys, (property) => {\r\n const propValue = this.get(property);\r\n if (propValue != undefined) {\r\n this._text.set(property, propValue);\r\n }\r\n });\r\n if (this.get(\"html\", \"\") !== \"\") {\r\n this._text.set(\"text\", \"\");\r\n }\r\n this.onPrivate(\"maxWidth\", () => {\r\n this._setMaxDimentions();\r\n });\r\n this.onPrivate(\"maxHeight\", () => {\r\n this._setMaxDimentions();\r\n });\r\n }\r\n _makeText() {\r\n this._text = this.children.push(Text.new(this._root, {}));\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n const text = this._text;\r\n $array.each(this._textKeys, (property) => {\r\n this._text.set(property, this.get(property));\r\n });\r\n if (this.isDirty(\"maxWidth\") || this.isDirty(\"maxHeight\") || this.isDirty(\"rotation\")) {\r\n this._setMaxDimentions();\r\n }\r\n // Do not show regular text if HTML is used\r\n if (this.get(\"html\", \"\") !== \"\") {\r\n text.set(\"text\", \"\");\r\n }\r\n else {\r\n text.set(\"text\", this.get(\"text\"));\r\n this._maybeUpdateHTMLColor();\r\n }\r\n if (this.isDirty(\"fill\")) {\r\n this._maybeUpdateHTMLColor();\r\n }\r\n if (this.isDirty(\"textAlign\") || this.isDirty(\"width\")) {\r\n const textAlign = this.get(\"textAlign\");\r\n let x;\r\n if (this.get(\"width\") != null) {\r\n if (textAlign == \"right\") {\r\n x = p100;\r\n }\r\n else if (textAlign == \"center\") {\r\n x = p50;\r\n }\r\n else {\r\n x = 0;\r\n }\r\n }\r\n else {\r\n if (textAlign == \"left\" || textAlign == \"start\") {\r\n x = this.get(\"paddingLeft\", 0);\r\n }\r\n else if (textAlign == \"right\" || textAlign == \"end\") {\r\n x = -this.get(\"paddingRight\", 0);\r\n }\r\n }\r\n text.set(\"x\", x);\r\n }\r\n const background = this.get(\"background\");\r\n if (background) {\r\n background.setPrivate(\"visible\", text._display.textVisible);\r\n }\r\n }\r\n _maybeUpdateHTMLColor() {\r\n const htmlElement = this.getPrivate(\"htmlElement\");\r\n if (htmlElement && this.get(\"fill\")) {\r\n htmlElement.style.color = this.get(\"fill\").toCSSHex();\r\n }\r\n }\r\n _setMaxDimentions() {\r\n const rotation = this.get(\"rotation\");\r\n const vertical = rotation == 90 || rotation == 270 || rotation == -90;\r\n const text = this._text;\r\n const maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\", Infinity));\r\n if ($type.isNumber(maxWidth)) {\r\n text.set(vertical ? \"maxHeight\" : \"maxWidth\", maxWidth - this.get(\"paddingLeft\", 0) - this.get(\"paddingRight\", 0));\r\n }\r\n else {\r\n text.set(vertical ? \"maxHeight\" : \"maxWidth\", undefined);\r\n }\r\n const maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\", Infinity));\r\n if ($type.isNumber(maxHeight)) {\r\n text.set(vertical ? \"maxWidth\" : \"maxHeight\", maxHeight - this.get(\"paddingTop\", 0) - this.get(\"paddingBottom\", 0));\r\n }\r\n else {\r\n text.set(vertical ? \"maxWidth\" : \"maxHeight\", undefined);\r\n }\r\n this.root.events.once(\"frameended\", () => {\r\n text.markDirtyBounds();\r\n });\r\n }\r\n _setDataItem(dataItem) {\r\n super._setDataItem(dataItem);\r\n this._markDirtyKey(\"text\");\r\n const text = this._text;\r\n if (text.get(\"populateText\")) {\r\n text.markDirtyText();\r\n }\r\n const html = this.get(\"html\");\r\n if (html && html !== \"\") {\r\n this._updateHTMLContent();\r\n }\r\n }\r\n /**\r\n * Returns text with populated placeholders and formatting if `populateText` is\r\n * set to `true`.\r\n *\r\n * @return Populated text\r\n */\r\n getText() {\r\n return this._text._getText();\r\n }\r\n /**\r\n * Returns \"aria-label\" text with populated placeholders and formatting\r\n * if `populateText` is set to `true`.\r\n *\r\n * @return Populated text\r\n */\r\n getAccessibleText() {\r\n return this._text._getAccessibleText();\r\n }\r\n}\r\nObject.defineProperty(Label, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Label\"\r\n});\r\nObject.defineProperty(Label, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Label.className])\r\n});\r\n","import { Entity } from \"../util/Entity\";\r\nexport function eachChildren(container, f) {\r\n if (container.get(\"reverseChildren\", false)) {\r\n container.children.eachReverse(f);\r\n }\r\n else {\r\n container.children.each(f);\r\n }\r\n}\r\n/**\r\n * Base class for [[Container]] layouts.\r\n */\r\nexport class Layout extends Entity {\r\n}\r\nObject.defineProperty(Layout, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Layout\"\r\n});\r\nObject.defineProperty(Layout, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Layout.className])\r\n});\r\n","import { Series } from \"./Series\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Label } from \"../../core/render/Label\";\r\nimport { RoundedRectangle } from \"../../core/render/RoundedRectangle\";\r\nimport { Template } from \"../../core/util/Template\";\r\nimport { ListTemplate } from \"../../core/util/List\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\n/**\r\n * A universal legend control.\r\n *\r\n * @important\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/legend/} for more info\r\n */\r\nexport class Legend extends Series {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * List of all [[Container]] elements for legend items.\r\n *\r\n * @default new ListTemplate<Container>\r\n */\r\n Object.defineProperty(this, \"itemContainers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => Container._new(this._root, {\r\n themeTags: $utils.mergeTags(this.itemContainers.template.get(\"themeTags\", []), [\"legend\", \"item\"]),\r\n themeTagsSelf: $utils.mergeTags(this.itemContainers.template.get(\"themeTagsSelf\", []), [\"itemcontainer\"]),\r\n background: RoundedRectangle.new(this._root, {\r\n themeTags: $utils.mergeTags(this.itemContainers.template.get(\"themeTags\", []), [\"legend\", \"item\", \"background\"]),\r\n themeTagsSelf: $utils.mergeTags(this.itemContainers.template.get(\"themeTagsSelf\", []), [\"itemcontainer\"])\r\n })\r\n }, [this.itemContainers.template]))\r\n });\r\n /**\r\n * List of legend marker elements.\r\n *\r\n * @default new ListTemplate<Container>\r\n */\r\n Object.defineProperty(this, \"markers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => Container._new(this._root, {\r\n themeTags: $utils.mergeTags(this.markers.template.get(\"themeTags\", []), [\"legend\", \"marker\"])\r\n }, [this.markers.template]))\r\n });\r\n /**\r\n * List of legend label elements.\r\n *\r\n * @default new ListTemplate<Label>\r\n */\r\n Object.defineProperty(this, \"labels\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => Label._new(this._root, {\r\n themeTags: $utils.mergeTags(this.labels.template.get(\"themeTags\", []), [\"legend\", \"label\"])\r\n }, [this.labels.template]))\r\n });\r\n /**\r\n * List of legend value label elements.\r\n *\r\n * @default new ListTemplate<label>\r\n */\r\n Object.defineProperty(this, \"valueLabels\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => Label._new(this._root, {\r\n themeTags: $utils.mergeTags(this.valueLabels.template.get(\"themeTags\", []), [\"legend\", \"label\", \"value\"])\r\n }, [this.valueLabels.template]))\r\n });\r\n /**\r\n * List of rectangle elements used for default legend markers.\r\n *\r\n * @default new ListTemplate<RoundedRectangle>\r\n */\r\n Object.defineProperty(this, \"markerRectangles\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListTemplate(Template.new({}), () => RoundedRectangle._new(this._root, {\r\n themeTags: $utils.mergeTags(this.markerRectangles.template.get(\"themeTags\", []), [\"legend\", \"marker\", \"rectangle\"])\r\n }, [this.markerRectangles.template]))\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"legend\"]);\r\n this.fields.push(\"name\", \"stroke\", \"fill\");\r\n super._afterNew();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeItemContainer(dataItem) {\r\n const itemContainer = this.children.push(this.itemContainers.make());\r\n itemContainer._setDataItem(dataItem);\r\n this.itemContainers.push(itemContainer);\r\n itemContainer.states.create(\"disabled\", {});\r\n return itemContainer;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeMarker() {\r\n const marker = this.markers.make();\r\n this.markers.push(marker);\r\n marker.states.create(\"disabled\", {});\r\n return marker;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeLabel() {\r\n const label = this.labels.make();\r\n label.states.create(\"disabled\", {});\r\n return label;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeValueLabel() {\r\n const valueLabel = this.valueLabels.make();\r\n valueLabel.states.create(\"disabled\", {});\r\n return valueLabel;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeMarkerRectangle() {\r\n const markerRectangle = this.markerRectangles.make();\r\n markerRectangle.states.create(\"disabled\", {});\r\n return markerRectangle;\r\n }\r\n processDataItem(dataItem) {\r\n super.processDataItem(dataItem);\r\n const itemContainer = this.makeItemContainer(dataItem);\r\n const nameField = this.get(\"nameField\");\r\n const fillField = this.get(\"fillField\");\r\n const strokeField = this.get(\"strokeField\");\r\n if (itemContainer) {\r\n const clickTarget = this.get(\"clickTarget\", \"itemContainer\");\r\n const item = dataItem.dataContext;\r\n if (item && item.set) {\r\n item.set(\"legendDataItem\", dataItem);\r\n }\r\n itemContainer._setDataItem(dataItem);\r\n dataItem.set(\"itemContainer\", itemContainer);\r\n const marker = this.makeMarker();\r\n if (marker) {\r\n itemContainer.children.push(marker);\r\n marker._setDataItem(dataItem);\r\n dataItem.set(\"marker\", marker);\r\n const useDefaultMarker = this.get(\"useDefaultMarker\");\r\n const markerRectangle = marker.children.push(this.makeMarkerRectangle());\r\n let fill = dataItem.get(\"fill\");\r\n let stroke = dataItem.get(\"stroke\");\r\n dataItem.set(\"markerRectangle\", markerRectangle);\r\n if (item && item.get) {\r\n fill = item.get(fillField, fill);\r\n stroke = item.get(strokeField, stroke);\r\n }\r\n if (!stroke) {\r\n stroke = fill;\r\n }\r\n if (!useDefaultMarker) {\r\n if (item && item.createLegendMarker) {\r\n item.createLegendMarker();\r\n }\r\n }\r\n else {\r\n if (item.on) {\r\n item.on(fillField, () => {\r\n markerRectangle.set(\"fill\", item.get(fillField));\r\n });\r\n item.on(strokeField, () => {\r\n markerRectangle.set(\"stroke\", item.get(strokeField));\r\n });\r\n }\r\n }\r\n markerRectangle.setAll({ fill, stroke });\r\n // this solves if template field is set on slice\r\n const component = item.component;\r\n if (component && component.updateLegendMarker) {\r\n component.updateLegendMarker(item);\r\n }\r\n }\r\n const label = this.makeLabel();\r\n if (label) {\r\n itemContainer.children.push(label);\r\n label._setDataItem(dataItem);\r\n dataItem.set(\"label\", label);\r\n label.text.on(\"text\", () => {\r\n itemContainer.setRaw(\"ariaLabel\", label.text._getText() + (this.get(\"clickTarget\") !== \"none\" ? \"; \" + this._t(\"Press ENTER to toggle\") : \"\"));\r\n itemContainer.markDirtyAccessibility();\r\n });\r\n if (item && item.get) {\r\n dataItem.set(\"name\", item.get(nameField));\r\n }\r\n let name = dataItem.get(\"name\");\r\n if (name) {\r\n label.set(\"text\", name);\r\n }\r\n }\r\n const valueLabel = this.makeValueLabel();\r\n if (valueLabel) {\r\n itemContainer.children.push(valueLabel);\r\n valueLabel._setDataItem(dataItem);\r\n dataItem.set(\"valueLabel\", valueLabel);\r\n }\r\n if (item && item.show) {\r\n item.on(\"visible\", (visible) => {\r\n itemContainer.set(\"disabled\", !visible);\r\n });\r\n if (!item.get(\"visible\")) {\r\n itemContainer.set(\"disabled\", true);\r\n }\r\n if (clickTarget != \"none\") {\r\n let clickContainer = itemContainer;\r\n if (clickTarget == \"marker\") {\r\n clickContainer = marker;\r\n }\r\n this._addClickEvents(clickContainer, item, dataItem);\r\n }\r\n }\r\n // Sort children\r\n this.children.values.sort((a, b) => {\r\n const targetA = a.dataItem.dataContext;\r\n const targetB = b.dataItem.dataContext;\r\n if (targetA && targetB) {\r\n const indexA = this.data.indexOf(targetA);\r\n const indexB = this.data.indexOf(targetB);\r\n if (indexA > indexB) {\r\n return 1;\r\n }\r\n else if (indexA < indexB) {\r\n return -1;\r\n }\r\n }\r\n return 0;\r\n });\r\n if (item && item.updateLegendValue) {\r\n item.updateLegendValue();\r\n }\r\n }\r\n }\r\n _addClickEvents(container, item, dataItem) {\r\n container.set(\"cursorOverStyle\", \"pointer\");\r\n container.events.on(\"pointerover\", () => {\r\n const component = item.component;\r\n if (component && component.hoverDataItem) {\r\n component.hoverDataItem(item);\r\n }\r\n });\r\n container.events.on(\"pointerout\", () => {\r\n const component = item.component;\r\n if (component && component.hoverDataItem) {\r\n component.unhoverDataItem(item);\r\n }\r\n });\r\n container.events.on(\"click\", () => {\r\n const labelText = dataItem.get(\"label\").text._getText();\r\n if (item.show && item.isHidden && (item.isHidden() || item.get(\"visible\") === false)) {\r\n item.show();\r\n container.set(\"disabled\", false);\r\n this._root.readerAlert(this._t(\"%1 shown\", this._root.locale, labelText));\r\n }\r\n else if (item.hide) {\r\n item.hide();\r\n container.set(\"disabled\", true);\r\n this._root.readerAlert(this._t(\"%1 hidden\", this._root.locale, labelText));\r\n }\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n disposeDataItem(dataItem) {\r\n super.disposeDataItem(dataItem);\r\n const dataContext = dataItem.dataContext;\r\n if (dataContext && dataContext.get) {\r\n const di = dataContext.get(\"legendDataItem\");\r\n if (di == dataItem) {\r\n dataContext.set(\"legendDataItem\", undefined);\r\n }\r\n }\r\n let itemContainer = dataItem.get(\"itemContainer\");\r\n if (itemContainer) {\r\n this.itemContainers.removeValue(itemContainer);\r\n itemContainer.dispose();\r\n }\r\n let marker = dataItem.get(\"marker\");\r\n if (marker) {\r\n this.markers.removeValue(marker);\r\n marker.dispose();\r\n }\r\n let markerRectangle = dataItem.get(\"markerRectangle\");\r\n if (markerRectangle) {\r\n this.markerRectangles.removeValue(markerRectangle);\r\n markerRectangle.dispose();\r\n }\r\n let label = dataItem.get(\"label\");\r\n if (label) {\r\n this.labels.removeValue(label);\r\n label.dispose();\r\n }\r\n let valueLabel = dataItem.get(\"valueLabel\");\r\n if (valueLabel) {\r\n this.valueLabels.removeValue(valueLabel);\r\n valueLabel.dispose();\r\n }\r\n }\r\n}\r\nObject.defineProperty(Legend, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Legend\"\r\n});\r\nObject.defineProperty(Legend, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Series.classNames.concat([Legend.className])\r\n});\r\n","import { Graphics } from \"./Graphics\";\r\n/**\r\n * Draws a rectangle.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class Rectangle extends Graphics {\r\n _afterNew() {\r\n super._afterNew();\r\n this._display.isMeasured = true;\r\n this.setPrivateRaw(\"trustBounds\", true);\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"width\") || this.isDirty(\"height\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear && !this.get(\"draw\")) {\r\n this._draw();\r\n }\r\n }\r\n _draw() {\r\n this._display.drawRect(0, 0, this.width(), this.height());\r\n }\r\n _updateSize() {\r\n this.markDirty();\r\n this._clear = true;\r\n }\r\n}\r\nObject.defineProperty(Rectangle, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Rectangle\"\r\n});\r\nObject.defineProperty(Rectangle, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Rectangle.className])\r\n});\r\n","import * as $type from \"../util/Type\";\r\nimport * as $math from \"../util/Math\";\r\nimport * as $utils from \"../util/Utils\";\r\nimport { Rectangle } from \"./Rectangle\";\r\n/**\r\n * Draws a rectangle with rounded corners.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class RoundedRectangle extends Rectangle {\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"cornerRadiusTL\") || this.isDirty(\"cornerRadiusTR\") || this.isDirty(\"cornerRadiusBR\") || this.isDirty(\"cornerRadiusBL\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _draw() {\r\n let width = this.width();\r\n let height = this.height();\r\n let w = width;\r\n let h = height;\r\n let wSign = w / Math.abs(width);\r\n let hSign = h / Math.abs(height);\r\n if ($type.isNumber(w) && $type.isNumber(h)) {\r\n let minSide = Math.min(w, h) / 2;\r\n let crtl = $utils.relativeToValue(this.get(\"cornerRadiusTL\", 8), minSide);\r\n let crtr = $utils.relativeToValue(this.get(\"cornerRadiusTR\", 8), minSide);\r\n let crbr = $utils.relativeToValue(this.get(\"cornerRadiusBR\", 8), minSide);\r\n let crbl = $utils.relativeToValue(this.get(\"cornerRadiusBL\", 8), minSide);\r\n let maxcr = Math.min(Math.abs(w / 2), Math.abs(h / 2));\r\n crtl = $math.fitToRange(crtl, 0, maxcr);\r\n crtr = $math.fitToRange(crtr, 0, maxcr);\r\n crbr = $math.fitToRange(crbr, 0, maxcr);\r\n crbl = $math.fitToRange(crbl, 0, maxcr);\r\n const display = this._display;\r\n display.moveTo(crtl * wSign, 0);\r\n display.lineTo(w - crtr * wSign, 0);\r\n if (crtr > 0) {\r\n display.arcTo(w, 0, w, crtr * hSign, crtr);\r\n }\r\n display.lineTo(w, h - crbr * hSign);\r\n if (crbr > 0) {\r\n display.arcTo(w, h, w - crbr * wSign, h, crbr);\r\n }\r\n display.lineTo(crbl * wSign, h);\r\n if (crbl > 0) {\r\n display.arcTo(0, h, 0, h - crbl * hSign, crbl);\r\n }\r\n display.lineTo(0, crtl * hSign);\r\n if (crtl > 0) {\r\n display.arcTo(0, 0, crtl * wSign, 0, crtl);\r\n }\r\n display.closePath();\r\n }\r\n }\r\n}\r\nObject.defineProperty(RoundedRectangle, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"RoundedRectangle\"\r\n});\r\nObject.defineProperty(RoundedRectangle, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Rectangle.classNames.concat([RoundedRectangle.className])\r\n});\r\n","import { RoundedRectangle } from \"../render/RoundedRectangle\";\r\nimport { Container } from \"./Container\";\r\nimport { Graphics } from \"./Graphics\";\r\nimport { Button } from \"./Button\";\r\nimport * as $type from \"../util/Type\";\r\nimport * as $utils from \"../util/Utils\";\r\n/**\r\n * A control that allows zooming chart's axes, or other uses requiring range\r\n * selection.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/scrollbars/} for more info\r\n */\r\nexport class Scrollbar extends Container {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * A thumb elment - a draggable square between the grips, used for panning\r\n * the selection.\r\n */\r\n Object.defineProperty(this, \"thumb\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._makeThumb()\r\n });\r\n /**\r\n * Start grip button.\r\n */\r\n Object.defineProperty(this, \"startGrip\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._makeButton()\r\n });\r\n /**\r\n * End grip button.\r\n */\r\n Object.defineProperty(this, \"endGrip\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._makeButton()\r\n });\r\n Object.defineProperty(this, \"_thumbBusy\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_startDown\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_endDown\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_thumbDown\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_gripDown\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _addOrientationClass() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"scrollbar\", this._settings.orientation]);\r\n if (!this._settings.background) {\r\n this._settings.background = RoundedRectangle.new(this._root, {\r\n themeTags: $utils.mergeTags(this._settings.themeTags, [\"main\", \"background\"])\r\n });\r\n }\r\n }\r\n _makeButton() {\r\n return this.children.push(Button.new(this._root, {\r\n themeTags: [\"resize\", \"button\", this.get(\"orientation\")], icon: Graphics.new(this._root, {\r\n themeTags: [\"icon\"]\r\n })\r\n }));\r\n }\r\n _makeThumb() {\r\n return this.children.push(RoundedRectangle.new(this._root, {\r\n themeTags: [\"thumb\", this.get(\"orientation\")]\r\n }));\r\n }\r\n _handleAnimation(animation) {\r\n if (animation) {\r\n this._disposers.push(animation.events.on(\"stopped\", () => {\r\n this.setPrivateRaw(\"isBusy\", false);\r\n this._thumbBusy = false;\r\n }));\r\n }\r\n }\r\n _afterNew() {\r\n this._addOrientationClass();\r\n super._afterNew();\r\n const startGrip = this.startGrip;\r\n const endGrip = this.endGrip;\r\n const thumb = this.thumb;\r\n const background = this.get(\"background\");\r\n if (background) {\r\n this._disposers.push(background.events.on(\"click\", (event) => {\r\n this.setPrivateRaw(\"isBusy\", true);\r\n const point = this._display.toLocal(event.point);\r\n const w = this.width();\r\n const h = this.height();\r\n const orientation = this.get(\"orientation\");\r\n let newMiddle;\r\n if (orientation == \"vertical\") {\r\n newMiddle = (point.y - thumb.height() / 2) / h;\r\n }\r\n else {\r\n newMiddle = (point.x - thumb.width() / 2) / w;\r\n }\r\n let newCoordinate;\r\n let key;\r\n if (orientation == \"vertical\") {\r\n newCoordinate = newMiddle * h;\r\n key = \"y\";\r\n }\r\n else {\r\n newCoordinate = newMiddle * w;\r\n key = \"x\";\r\n }\r\n const duration = this.get(\"animationDuration\", 0);\r\n if (duration > 0) {\r\n this._thumbBusy = true;\r\n this._handleAnimation(this.thumb.animate({ key: key, to: newCoordinate, duration: duration, easing: this.get(\"animationEasing\") }));\r\n }\r\n else {\r\n this.thumb.set(key, newCoordinate);\r\n this._root.events.once(\"frameended\", () => {\r\n this.setPrivateRaw(\"isBusy\", false);\r\n });\r\n }\r\n }));\r\n }\r\n this._disposers.push(thumb.events.on(\"dblclick\", (event) => {\r\n if (!$utils.isLocalEvent(event.originalEvent, this)) {\r\n return;\r\n }\r\n const duration = this.get(\"animationDuration\", 0);\r\n const easing = this.get(\"animationEasing\");\r\n this.animate({ key: \"start\", to: 0, duration: duration, easing: easing });\r\n this.animate({ key: \"end\", to: 1, duration: duration, easing: easing });\r\n }));\r\n this._disposers.push(startGrip.events.on(\"pointerdown\", () => {\r\n this.setPrivateRaw(\"isBusy\", true);\r\n this._startDown = true;\r\n this._gripDown = \"start\";\r\n }));\r\n this._disposers.push(endGrip.events.on(\"pointerdown\", () => {\r\n this.setPrivateRaw(\"isBusy\", true);\r\n this._endDown = true;\r\n this._gripDown = \"end\";\r\n }));\r\n this._disposers.push(thumb.events.on(\"pointerdown\", () => {\r\n this.setPrivateRaw(\"isBusy\", true);\r\n this._thumbDown = true;\r\n this._gripDown = undefined;\r\n }));\r\n this._disposers.push(startGrip.events.on(\"globalpointerup\", () => {\r\n if (this._startDown) {\r\n this.setPrivateRaw(\"isBusy\", false);\r\n this._released();\r\n }\r\n this._startDown = false;\r\n }));\r\n this._disposers.push(endGrip.events.on(\"globalpointerup\", () => {\r\n if (this._endDown) {\r\n this.setPrivateRaw(\"isBusy\", false);\r\n this._released();\r\n }\r\n this._endDown = false;\r\n }));\r\n this._disposers.push(thumb.events.on(\"globalpointerup\", () => {\r\n if (this._thumbDown) {\r\n this.setPrivateRaw(\"isBusy\", false);\r\n this._released();\r\n }\r\n this._thumbDown = false;\r\n }));\r\n this._disposers.push(startGrip.on(\"x\", () => {\r\n this._updateThumb();\r\n }));\r\n this._disposers.push(endGrip.on(\"x\", () => {\r\n this._updateThumb();\r\n }));\r\n this._disposers.push(startGrip.on(\"y\", () => {\r\n this._updateThumb();\r\n }));\r\n this._disposers.push(endGrip.on(\"y\", () => {\r\n this._updateThumb();\r\n }));\r\n this._disposers.push(thumb.events.on(\"positionchanged\", () => {\r\n this._updateGripsByThumb();\r\n }));\r\n if (this.get(\"orientation\") == \"vertical\") {\r\n startGrip.set(\"x\", 0);\r\n endGrip.set(\"x\", 0);\r\n this._disposers.push(thumb.adapters.add(\"y\", (value) => {\r\n return Math.max(Math.min(Number(value), this.height() - thumb.height()), 0);\r\n }));\r\n this._disposers.push(thumb.adapters.add(\"x\", (_value) => {\r\n return this.width() / 2;\r\n }));\r\n this._disposers.push(startGrip.adapters.add(\"x\", (_value) => {\r\n return this.width() / 2;\r\n }));\r\n this._disposers.push(endGrip.adapters.add(\"x\", (_value) => {\r\n return this.width() / 2;\r\n }));\r\n this._disposers.push(startGrip.adapters.add(\"y\", (value) => {\r\n return Math.max(Math.min(Number(value), this.height()), 0);\r\n }));\r\n this._disposers.push(endGrip.adapters.add(\"y\", (value) => {\r\n return Math.max(Math.min(Number(value), this.height()), 0);\r\n }));\r\n }\r\n else {\r\n startGrip.set(\"y\", 0);\r\n endGrip.set(\"y\", 0);\r\n this._disposers.push(thumb.adapters.add(\"x\", (value) => {\r\n return Math.max(Math.min(Number(value), this.width() - thumb.width()), 0);\r\n }));\r\n this._disposers.push(thumb.adapters.add(\"y\", (_value) => {\r\n return this.height() / 2;\r\n }));\r\n this._disposers.push(startGrip.adapters.add(\"y\", (_value) => {\r\n return this.height() / 2;\r\n }));\r\n this._disposers.push(endGrip.adapters.add(\"y\", (_value) => {\r\n return this.height() / 2;\r\n }));\r\n this._disposers.push(startGrip.adapters.add(\"x\", (value) => {\r\n return Math.max(Math.min(Number(value), this.width()), 0);\r\n }));\r\n this._disposers.push(endGrip.adapters.add(\"x\", (value) => {\r\n return Math.max(Math.min(Number(value), this.width()), 0);\r\n }));\r\n }\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n if (this.isDirty(\"end\") || this.isDirty(\"start\") || this._sizeDirty) {\r\n this.updateGrips();\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this.isDirty(\"start\") || this.isDirty(\"end\")) {\r\n const eventType = \"rangechanged\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this, start: this.get(\"start\", 0), end: this.get(\"end\", 1), grip: this._gripDown });\r\n }\r\n }\r\n }\r\n _released() {\r\n const eventType = \"released\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this });\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateGrips() {\r\n const startGrip = this.startGrip;\r\n const endGrip = this.endGrip;\r\n const orientation = this.get(\"orientation\");\r\n const height = this.height();\r\n const width = this.width();\r\n if (orientation == \"vertical\") {\r\n startGrip.set(\"y\", height * this.get(\"start\", 0));\r\n endGrip.set(\"y\", height * this.get(\"end\", 1));\r\n }\r\n else {\r\n startGrip.set(\"x\", width * this.get(\"start\", 0));\r\n endGrip.set(\"x\", width * this.get(\"end\", 1));\r\n }\r\n const valueFunction = this.getPrivate(\"positionTextFunction\");\r\n const from = Math.round(this.get(\"start\", 0) * 100);\r\n const to = Math.round(this.get(\"end\", 0) * 100);\r\n let fromValue;\r\n let toValue;\r\n if (valueFunction) {\r\n fromValue = valueFunction.call(this, this.get(\"start\", 0));\r\n toValue = valueFunction.call(this, this.get(\"end\", 0));\r\n }\r\n else {\r\n fromValue = from + \"%\";\r\n toValue = to + \"%\";\r\n }\r\n startGrip.set(\"ariaLabel\", this._t(\"From %1\", undefined, fromValue));\r\n startGrip.set(\"ariaValueNow\", \"\" + from);\r\n startGrip.set(\"ariaValueText\", from + \"%\");\r\n startGrip.set(\"ariaValueMin\", \"0\");\r\n startGrip.set(\"ariaValueMax\", \"100\");\r\n endGrip.set(\"ariaLabel\", this._t(\"To %1\", undefined, toValue));\r\n endGrip.set(\"ariaValueNow\", \"\" + to);\r\n endGrip.set(\"ariaValueText\", to + \"%\");\r\n endGrip.set(\"ariaValueMin\", \"0\");\r\n endGrip.set(\"ariaValueMax\", \"100\");\r\n }\r\n _updateThumb() {\r\n const thumb = this.thumb;\r\n const startGrip = this.startGrip;\r\n const endGrip = this.endGrip;\r\n const height = this.height();\r\n const width = this.width();\r\n let x0 = startGrip.x();\r\n let x1 = endGrip.x();\r\n let y0 = startGrip.y();\r\n let y1 = endGrip.y();\r\n let start = 0;\r\n let end = 1;\r\n if (this.get(\"orientation\") == \"vertical\") {\r\n if ($type.isNumber(y0) && $type.isNumber(y1)) {\r\n if (!this._thumbBusy && !thumb.isDragging()) {\r\n thumb.set(\"height\", y1 - y0);\r\n thumb.set(\"y\", y0);\r\n }\r\n start = y0 / height;\r\n end = y1 / height;\r\n }\r\n }\r\n else {\r\n if ($type.isNumber(x0) && $type.isNumber(x1)) {\r\n if (!this._thumbBusy && !thumb.isDragging()) {\r\n thumb.set(\"width\", x1 - x0);\r\n thumb.set(\"x\", x0);\r\n }\r\n start = x0 / width;\r\n end = x1 / width;\r\n }\r\n }\r\n if (this.getPrivate(\"isBusy\") && (this.get(\"start\") != start || this.get(\"end\") != end)) {\r\n this.set(\"start\", start);\r\n this.set(\"end\", end);\r\n }\r\n const valueFunction = this.getPrivate(\"positionTextFunction\");\r\n const from = Math.round(this.get(\"start\", 0) * 100);\r\n const to = Math.round(this.get(\"end\", 0) * 100);\r\n let fromValue;\r\n let toValue;\r\n if (valueFunction) {\r\n fromValue = valueFunction.call(this, this.get(\"start\", 0));\r\n toValue = valueFunction.call(this, this.get(\"end\", 0));\r\n }\r\n else {\r\n fromValue = from + \"%\";\r\n toValue = to + \"%\";\r\n }\r\n thumb.set(\"ariaLabel\", this._t(\"From %1 to %2\", undefined, fromValue, toValue));\r\n thumb.set(\"ariaValueNow\", \"\" + from);\r\n thumb.set(\"ariaValueText\", from + \"%\");\r\n }\r\n _updateGripsByThumb() {\r\n const thumb = this.thumb;\r\n const startGrip = this.startGrip;\r\n const endGrip = this.endGrip;\r\n if (this.get(\"orientation\") == \"vertical\") {\r\n const thumbSize = thumb.height();\r\n startGrip.set(\"y\", thumb.y());\r\n endGrip.set(\"y\", thumb.y() + thumbSize);\r\n }\r\n else {\r\n const thumbSize = thumb.width();\r\n startGrip.set(\"x\", thumb.x());\r\n endGrip.set(\"x\", thumb.x() + thumbSize);\r\n }\r\n }\r\n}\r\nObject.defineProperty(Scrollbar, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Scrollbar\"\r\n});\r\nObject.defineProperty(Scrollbar, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Scrollbar.className])\r\n});\r\n","import { __awaiter } from \"tslib\";\r\nimport { Component } from \"../../core/render/Component\";\r\nimport { List } from \"../../core/util/List\";\r\nimport { Color } from \"../../core/util/Color\";\r\nimport { percentInterpolate } from \"../../core/util/Animation\";\r\nimport { Percent } from \"../../core/util/Percent\";\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $type from \"../../core/util/Type\";\r\nimport * as $time from \"../../core/util/Time\";\r\nimport { p100 } from \"../../core/util/Percent\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Label } from \"../../core/render/Label\";\r\n/**\r\n * A base class for all series.\r\n */\r\nexport class Series extends Component {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_aggregatesCalculated\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_selectionAggregatesCalculated\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dataProcessed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_psi\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_pei\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A chart series belongs to.\r\n */\r\n Object.defineProperty(this, \"chart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * List of bullets to use for the series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/bullets/} for more info\r\n */\r\n Object.defineProperty(this, \"bullets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new List()\r\n });\r\n /**\r\n * A [[Container]] series' bullets are stored in.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"bulletsContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.new(this._root, { width: p100, height: p100, position: \"absolute\" })\r\n });\r\n }\r\n _afterNew() {\r\n this.valueFields.push(\"value\", \"customValue\");\r\n super._afterNew();\r\n this.setPrivate(\"customData\", {});\r\n this._disposers.push(this.bullets.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else if (change.type === \"push\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else {\r\n throw new Error(\"Unknown IListEvent type\");\r\n }\r\n }));\r\n }\r\n _dispose() {\r\n this.bulletsContainer.dispose(); // can be in a different parent\r\n super._dispose();\r\n }\r\n startIndex() {\r\n let len = this.dataItems.length;\r\n return Math.min(this.getPrivate(\"startIndex\", 0), len);\r\n }\r\n endIndex() {\r\n let len = this.dataItems.length;\r\n return Math.min(this.getPrivate(\"endIndex\", len), len);\r\n }\r\n _handleBullets(dataItems) {\r\n $array.each(dataItems, (dataItem) => {\r\n const bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n bullet.dispose();\r\n });\r\n dataItem.bullets = undefined;\r\n }\r\n });\r\n this.markDirtyValues();\r\n }\r\n /**\r\n * Looks up and returns a data item by its ID.\r\n *\r\n * @param id ID\r\n * @return Data item\r\n */\r\n getDataItemById(id) {\r\n return $array.find(this.dataItems, (dataItem) => {\r\n return dataItem.get(\"id\") == id;\r\n });\r\n }\r\n _makeBullets(dataItem) {\r\n if (this._shouldMakeBullet(dataItem)) {\r\n dataItem.bullets = [];\r\n this.bullets.each((bulletFunction) => {\r\n this._makeBullet(dataItem, bulletFunction);\r\n });\r\n }\r\n }\r\n _shouldMakeBullet(_dataItem) {\r\n return true;\r\n }\r\n _makeBullet(dataItem, bulletFunction, index) {\r\n const bullet = bulletFunction(this._root, this, dataItem);\r\n if (bullet) {\r\n bullet._index = index;\r\n this._makeBulletReal(dataItem, bullet);\r\n }\r\n return bullet;\r\n }\r\n _makeBulletReal(dataItem, bullet) {\r\n let sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite._setDataItem(dataItem);\r\n sprite.setRaw(\"position\", \"absolute\");\r\n this.bulletsContainer.children.push(sprite);\r\n }\r\n bullet.series = this;\r\n dataItem.bullets.push(bullet);\r\n }\r\n /**\r\n * Adds bullet directly to a data item.\r\n *\r\n * Please note: method accepts [[Bullet]] instance as a paramter, not a\r\n * reference to a function.\r\n *\r\n * You should add Bullet instance, not a method like you do it on series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/bullets/#Adding_directly_to_data_item} for more info\r\n * @since 5.6.0\r\n *\r\n * @param dataItem Target data item\r\n * @param bullet Bullet instance\r\n */\r\n addBullet(dataItem, bullet) {\r\n if (!dataItem.bullets) {\r\n dataItem.bullets = [];\r\n }\r\n if (bullet) {\r\n this._makeBulletReal(dataItem, bullet);\r\n }\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._aggregatesCalculated = false;\r\n this._selectionAggregatesCalculated = false;\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n let startIndex = this.startIndex();\r\n let endIndex = this.endIndex();\r\n if (this.isDirty(\"name\")) {\r\n this.updateLegendValue();\r\n }\r\n if (this.isDirty(\"heatRules\")) {\r\n this._valuesDirty = true;\r\n }\r\n if (this.isPrivateDirty(\"baseValueSeries\")) {\r\n const baseValueSeries = this.getPrivate(\"baseValueSeries\");\r\n if (baseValueSeries) {\r\n this._disposers.push(baseValueSeries.onPrivate(\"startIndex\", () => {\r\n this.markDirtyValues();\r\n }));\r\n }\r\n }\r\n const calculateAggregates = this.get(\"calculateAggregates\");\r\n if (calculateAggregates) {\r\n if (this._valuesDirty && !this._dataProcessed) {\r\n if (!this._aggregatesCalculated) {\r\n this._calculateAggregates(0, this.dataItems.length);\r\n this._aggregatesCalculated = true;\r\n if (startIndex != 0) {\r\n this._psi = undefined;\r\n }\r\n }\r\n }\r\n if ((this._psi != startIndex || this._pei != endIndex || this.isPrivateDirty(\"adjustedStartIndex\")) && !this._selectionAggregatesCalculated) {\r\n if (startIndex === 0 && endIndex === this.dataItems.length && this._aggregatesCalculated) {\r\n // void\r\n }\r\n else {\r\n this._calculateAggregates(startIndex, endIndex);\r\n }\r\n this._selectionAggregatesCalculated = true;\r\n }\r\n }\r\n if (this.isDirty(\"tooltip\")) {\r\n let tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip.hide(0);\r\n tooltip.set(\"tooltipTarget\", this);\r\n }\r\n }\r\n if (this.isDirty(\"fill\") || this.isDirty(\"stroke\")) {\r\n let markerRectangle;\r\n const legendDataItem = this.get(\"legendDataItem\");\r\n if (legendDataItem) {\r\n markerRectangle = legendDataItem.get(\"markerRectangle\");\r\n if (markerRectangle) {\r\n if (this.isVisible()) {\r\n if (this.isDirty(\"stroke\")) {\r\n let stroke = this.get(\"stroke\");\r\n markerRectangle.set(\"stroke\", stroke);\r\n }\r\n if (this.isDirty(\"fill\")) {\r\n let fill = this.get(\"fill\");\r\n markerRectangle.set(\"fill\", fill);\r\n }\r\n }\r\n }\r\n }\r\n this.updateLegendMarker(undefined);\r\n }\r\n if (this.bullets.length > 0) {\r\n let startIndex = this.startIndex();\r\n let endIndex = this.endIndex();\r\n if (endIndex < this.dataItems.length) {\r\n endIndex++;\r\n }\r\n for (let i = startIndex; i < endIndex; i++) {\r\n let dataItem = this.dataItems[i];\r\n if (!dataItem.bullets) {\r\n this._makeBullets(dataItem);\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _adjustStartIndex(index) {\r\n return index;\r\n }\r\n _calculateAggregates(startIndex, endIndex) {\r\n let fields = this._valueFields;\r\n if (!fields) {\r\n throw new Error(\"No value fields are set for the series.\");\r\n }\r\n const sum = {};\r\n const absSum = {};\r\n const count = {};\r\n const low = {};\r\n const high = {};\r\n const open = {};\r\n const close = {};\r\n const average = {};\r\n const previous = {};\r\n $array.each(fields, (key) => {\r\n sum[key] = 0;\r\n absSum[key] = 0;\r\n count[key] = 0;\r\n });\r\n $array.each(fields, (key) => {\r\n let change = key + \"Change\";\r\n let changePercent = key + \"ChangePercent\";\r\n let changePrevious = key + \"ChangePrevious\";\r\n let changePreviousPercent = key + \"ChangePreviousPercent\";\r\n let changeSelection = key + \"ChangeSelection\";\r\n let changeSelectionPercent = key + \"ChangeSelectionPercent\";\r\n let openKey = \"valueY\";\r\n if (key == \"valueX\" || key == \"openValueX\" || key == \"lowValueX\" || key == \"highValueX\") {\r\n openKey = \"valueX\";\r\n }\r\n const baseValueSeries = this.getPrivate(\"baseValueSeries\");\r\n const adjustedStartIndex = this.getPrivate(\"adjustedStartIndex\", startIndex);\r\n for (let i = adjustedStartIndex; i < endIndex; i++) {\r\n const dataItem = this.dataItems[i];\r\n if (dataItem) {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n count[key]++;\r\n sum[key] += value;\r\n absSum[key] += Math.abs(value);\r\n average[key] = sum[key] / count[key];\r\n if (low[key] > value || low[key] == null) {\r\n low[key] = value;\r\n }\r\n if (high[key] < value || high[key] == null) {\r\n high[key] = value;\r\n }\r\n close[key] = value;\r\n if (open[key] == null) {\r\n open[key] = value;\r\n previous[key] = value;\r\n if (baseValueSeries) {\r\n open[openKey] = baseValueSeries._getBase(openKey);\r\n }\r\n }\r\n if (startIndex === 0) {\r\n dataItem.setRaw((change), value - open[openKey]);\r\n dataItem.setRaw((changePercent), (value - open[openKey]) / open[openKey] * 100);\r\n }\r\n dataItem.setRaw((changePrevious), value - previous[openKey]);\r\n dataItem.setRaw((changePreviousPercent), (value - previous[openKey]) / previous[openKey] * 100);\r\n dataItem.setRaw((changeSelection), value - open[openKey]);\r\n dataItem.setRaw((changeSelectionPercent), (value - open[openKey]) / open[openKey] * 100);\r\n previous[key] = value;\r\n }\r\n }\r\n }\r\n if (endIndex < this.dataItems.length - 1) {\r\n const dataItem = this.dataItems[endIndex];\r\n if (dataItem) {\r\n let value = dataItem.get(key);\r\n dataItem.setRaw((changePrevious), value - previous[openKey]);\r\n dataItem.setRaw((changePreviousPercent), (value - previous[openKey]) / previous[openKey] * 100);\r\n dataItem.setRaw((changeSelection), value - open[openKey]);\r\n dataItem.setRaw((changeSelectionPercent), (value - open[openKey]) / open[openKey] * 100);\r\n }\r\n }\r\n if (startIndex > 0) {\r\n startIndex--;\r\n }\r\n delete previous[key];\r\n for (let i = startIndex; i < adjustedStartIndex; i++) {\r\n const dataItem = this.dataItems[i];\r\n if (dataItem) {\r\n let value = dataItem.get(key);\r\n if (previous[key] == null) {\r\n previous[key] = value;\r\n }\r\n if (value != null) {\r\n dataItem.setRaw((changePrevious), value - previous[openKey]);\r\n dataItem.setRaw((changePreviousPercent), (value - previous[openKey]) / previous[openKey] * 100);\r\n dataItem.setRaw((changeSelection), value - open[openKey]);\r\n dataItem.setRaw((changeSelectionPercent), (value - open[openKey]) / open[openKey] * 100);\r\n previous[key] = value;\r\n }\r\n }\r\n }\r\n });\r\n $array.each(fields, (key) => {\r\n this.setPrivate((key + \"AverageSelection\"), average[key]);\r\n this.setPrivate((key + \"CountSelection\"), count[key]);\r\n this.setPrivate((key + \"SumSelection\"), sum[key]);\r\n this.setPrivate((key + \"AbsoluteSumSelection\"), absSum[key]);\r\n this.setPrivate((key + \"LowSelection\"), low[key]);\r\n this.setPrivate((key + \"HighSelection\"), high[key]);\r\n this.setPrivate((key + \"OpenSelection\"), open[key]);\r\n this.setPrivate((key + \"CloseSelection\"), close[key]);\r\n });\r\n if (startIndex === 0 && endIndex === this.dataItems.length) {\r\n $array.each(fields, (key) => {\r\n this.setPrivate((key + \"Average\"), average[key]);\r\n this.setPrivate((key + \"Count\"), count[key]);\r\n this.setPrivate((key + \"Sum\"), sum[key]);\r\n this.setPrivate((key + \"AbsoluteSum\"), absSum[key]);\r\n this.setPrivate((key + \"Low\"), low[key]);\r\n this.setPrivate((key + \"High\"), high[key]);\r\n this.setPrivate((key + \"Open\"), open[key]);\r\n this.setPrivate((key + \"Close\"), close[key]);\r\n });\r\n }\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n this._psi = this.startIndex();\r\n this._pei = this.endIndex();\r\n if (this.isDirty(\"visible\")) {\r\n this.bulletsContainer.set(\"visible\", this.get(\"visible\"));\r\n }\r\n // Apply heat rules\r\n const rules = this.get(\"heatRules\");\r\n if (this._valuesDirty && rules && rules.length > 0) {\r\n $array.each(rules, (rule) => {\r\n const minValue = rule.minValue || this.getPrivate((rule.dataField + \"Low\")) || 0;\r\n const maxValue = rule.maxValue || this.getPrivate((rule.dataField + \"High\")) || 0;\r\n $array.each(rule.target._entities, (target) => {\r\n const value = target.dataItem.get(rule.dataField);\r\n if (!$type.isNumber(value)) {\r\n if (rule.neutral) {\r\n target.set(rule.key, rule.neutral);\r\n }\r\n const states = target.states;\r\n if (states) {\r\n const defaultState = states.lookup(\"default\");\r\n if (defaultState && rule.neutral) {\r\n defaultState.set(rule.key, rule.neutral);\r\n }\r\n }\r\n if (!rule.customFunction) {\r\n return;\r\n }\r\n }\r\n if (rule.customFunction) {\r\n rule.customFunction.call(this, target, minValue, maxValue, value);\r\n }\r\n else {\r\n let percent;\r\n if (rule.logarithmic) {\r\n percent = (Math.log(value) * Math.LOG10E - Math.log(minValue) * Math.LOG10E) / ((Math.log(maxValue) * Math.LOG10E - Math.log(minValue) * Math.LOG10E));\r\n }\r\n else {\r\n percent = (value - minValue) / (maxValue - minValue);\r\n }\r\n if ($type.isNumber(value) && (!$type.isNumber(percent) || Math.abs(percent) == Infinity)) {\r\n percent = 0.5;\r\n }\r\n // fixes problems if all values are the same\r\n let propertyValue;\r\n if ($type.isNumber(rule.min)) {\r\n propertyValue = rule.min + (rule.max - rule.min) * percent;\r\n }\r\n else if (rule.min instanceof Color) {\r\n propertyValue = Color.interpolate(percent, rule.min, rule.max);\r\n }\r\n else if (rule.min instanceof Percent) {\r\n propertyValue = percentInterpolate(percent, rule.min, rule.max);\r\n }\r\n target.set(rule.key, propertyValue);\r\n const states = target.states;\r\n if (states) {\r\n const defaultState = states.lookup(\"default\");\r\n if (defaultState) {\r\n defaultState.set(rule.key, propertyValue);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n if (this.get(\"visible\")) {\r\n let count = this.dataItems.length;\r\n let startIndex = this.startIndex();\r\n let endIndex = this.endIndex();\r\n if (endIndex < count) {\r\n endIndex++;\r\n }\r\n if (startIndex > 0) {\r\n startIndex--;\r\n }\r\n for (let i = 0; i < startIndex; i++) {\r\n this._hideBullets(this.dataItems[i]);\r\n }\r\n for (let i = startIndex; i < endIndex; i++) {\r\n this._positionBullets(this.dataItems[i]);\r\n }\r\n for (let i = endIndex; i < count; i++) {\r\n this._hideBullets(this.dataItems[i]);\r\n }\r\n }\r\n }\r\n _positionBullets(dataItem) {\r\n if (dataItem.bullets) {\r\n $array.each(dataItem.bullets, (bullet) => {\r\n this._positionBullet(bullet);\r\n const sprite = bullet.get(\"sprite\");\r\n if (bullet.get(\"dynamic\")) {\r\n if (sprite) {\r\n sprite._markDirtyKey(\"fill\");\r\n sprite.markDirtySize();\r\n }\r\n if (sprite instanceof Container) {\r\n sprite.walkChildren((child) => {\r\n child._markDirtyKey(\"fill\");\r\n child.markDirtySize();\r\n if (child instanceof Label) {\r\n child.text.markDirtyText();\r\n }\r\n });\r\n }\r\n }\r\n if (sprite instanceof Label && sprite.get(\"populateText\")) {\r\n sprite.text.markDirtyText();\r\n }\r\n });\r\n }\r\n }\r\n _hideBullets(dataItem) {\r\n if (dataItem.bullets) {\r\n $array.each(dataItem.bullets, (bullet) => {\r\n let sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite.setPrivate(\"visible\", false);\r\n }\r\n });\r\n }\r\n }\r\n _positionBullet(_bullet) {\r\n }\r\n _placeBulletsContainer(chart) {\r\n chart.bulletsContainer.children.moveValue(this.bulletsContainer);\r\n }\r\n _removeBulletsContainer() {\r\n const bulletsContainer = this.bulletsContainer;\r\n if (bulletsContainer.parent) {\r\n bulletsContainer.parent.children.removeValue(bulletsContainer);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n disposeDataItem(dataItem) {\r\n //super.disposeDataItem(dataItem); // does nothing\r\n const bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n bullet.dispose();\r\n });\r\n }\r\n }\r\n _getItemReaderLabel() {\r\n return \"\";\r\n }\r\n /**\r\n * Shows series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n showDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n showDataItem: { get: () => super.showDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.showDataItem.call(this, dataItem, duration)];\r\n const bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n promises.push(sprite.show(duration));\r\n }\r\n });\r\n }\r\n yield Promise.all(promises);\r\n });\r\n }\r\n /**\r\n * Hides series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n hideDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n hideDataItem: { get: () => super.hideDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.hideDataItem.call(this, dataItem, duration)];\r\n const bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n promises.push(sprite.hide(duration));\r\n }\r\n });\r\n }\r\n yield Promise.all(promises);\r\n });\r\n }\r\n _sequencedShowHide(show, duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.get(\"sequencedInterpolation\")) {\r\n if (!$type.isNumber(duration)) {\r\n duration = this.get(\"interpolationDuration\", 0);\r\n }\r\n if (duration > 0) {\r\n const startIndex = this.startIndex();\r\n const endIndex = this.endIndex();\r\n yield Promise.all($array.map(this.dataItems, (dataItem, i) => __awaiter(this, void 0, void 0, function* () {\r\n let realDuration = duration || 0;\r\n if (i < startIndex - 10 || i > endIndex + 10) {\r\n realDuration = 0;\r\n }\r\n //let delay = this.get(\"sequencedDelay\", 0) * i + realDuration * (i - startIndex) / (endIndex - startIndex);\r\n let delay = this.get(\"sequencedDelay\", 0) + realDuration / (endIndex - startIndex);\r\n yield $time.sleep(delay * (i - startIndex));\r\n if (show) {\r\n yield this.showDataItem(dataItem, realDuration);\r\n }\r\n else {\r\n yield this.hideDataItem(dataItem, realDuration);\r\n }\r\n })));\r\n }\r\n else {\r\n yield Promise.all($array.map(this.dataItems, (dataItem) => {\r\n if (show) {\r\n return this.showDataItem(dataItem, 0);\r\n }\r\n else {\r\n return this.hideDataItem(dataItem, 0);\r\n }\r\n }));\r\n }\r\n }\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLegendValue(dataItem) {\r\n if (dataItem) {\r\n const legendDataItem = dataItem.get(\"legendDataItem\");\r\n if (legendDataItem) {\r\n const valueLabel = legendDataItem.get(\"valueLabel\");\r\n if (valueLabel) {\r\n const text = valueLabel.text;\r\n let txt = \"\";\r\n valueLabel._setDataItem(dataItem);\r\n txt = this.get(\"legendValueText\", text.get(\"text\", \"\"));\r\n valueLabel.set(\"text\", txt);\r\n text.markDirtyText();\r\n }\r\n const label = legendDataItem.get(\"label\");\r\n if (label) {\r\n const text = label.text;\r\n let txt = \"\";\r\n label._setDataItem(dataItem);\r\n txt = this.get(\"legendLabelText\", text.get(\"text\", \"\"));\r\n label.set(\"text\", txt);\r\n text.markDirtyText();\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLegendMarker(_dataItem) {\r\n }\r\n _onHide() {\r\n super._onHide();\r\n const tooltip = this.getTooltip();\r\n if (tooltip) {\r\n tooltip.hide();\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n hoverDataItem(_dataItem) { }\r\n /**\r\n * @ignore\r\n */\r\n unhoverDataItem(_dataItem) { }\r\n /**\r\n * @ignore\r\n */\r\n _getBase(key) {\r\n const dataItem = this.dataItems[this.startIndex()];\r\n if (dataItem) {\r\n return dataItem.get(key);\r\n }\r\n return 0;\r\n }\r\n}\r\nObject.defineProperty(Series, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Series\"\r\n});\r\nObject.defineProperty(Series, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Component.classNames.concat([Series.className])\r\n});\r\n","import { __awaiter } from \"tslib\";\r\nimport { Entity } from \"../util/Entity\";\r\nimport { Template } from \"../util/Template\";\r\nimport { Percent } from \"../util/Percent\";\r\nimport { EventDispatcher } from \"../util/EventDispatcher\";\r\nimport { MultiDisposer, CounterDisposer } from \"../util/Disposer\";\r\nimport { waitForAnimations } from \"../util/Animation\";\r\nimport * as $utils from \"../util/Utils\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $type from \"../util/Type\";\r\nimport * as $object from \"../util/Object\";\r\nimport * as $math from \"../util/Math\";\r\n//import { populateString } from \"../util/PopulateString\";\r\n/**\r\n * An [[EventDispatcher]] for [[Sprite]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\r\nclass SpriteEventDispatcher extends EventDispatcher {\r\n constructor(sprite) {\r\n super();\r\n Object.defineProperty(this, \"_sprite\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_rendererDisposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dispatchParents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n this._sprite = sprite;\r\n }\r\n _makePointerEvent(key, event) {\r\n return {\r\n type: key,\r\n originalEvent: event.event,\r\n point: event.point,\r\n simulated: event.simulated,\r\n native: event.native,\r\n target: this._sprite\r\n };\r\n }\r\n _onRenderer(key, dispatch) {\r\n // TODO: is this OK? it'd be good not to require to set this on each individual element\r\n this._sprite.set(\"interactive\", true);\r\n this._sprite._display.interactive = true;\r\n let events = this._rendererDisposers[key];\r\n if (events === undefined) {\r\n const disposer = this._sprite._display.on(key, (e) => {\r\n dispatch.call(this, e);\r\n });\r\n events = this._rendererDisposers[key] = new CounterDisposer(() => {\r\n delete this._rendererDisposers[key];\r\n disposer.dispose();\r\n });\r\n }\r\n return events.increment();\r\n }\r\n _on(once, type, callback, context, shouldClone, dispatch) {\r\n const info = super._on(once, type, callback, context, shouldClone, dispatch);\r\n const rendererEvent = SpriteEventDispatcher.RENDERER_EVENTS[type];\r\n if (rendererEvent !== undefined) {\r\n info.disposer = new MultiDisposer([\r\n info.disposer,\r\n this._onRenderer(type, rendererEvent),\r\n ]);\r\n }\r\n return info;\r\n }\r\n /**\r\n * Will stop any bubbling up of the event to element's parents.\r\n *\r\n * Should be called in an event handler, e.g.:\r\n *\r\n * ```TypeScript\r\n * element.events.on(\"pointerdown\", function(ev) {\r\n * // Do something here and prevent from \"pointerdown\" bubbling up\r\n * // ...\r\n * ev.target.events.stopParentDispatch();\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * element.events.on(\"pointerdown\", function(ev) {\r\n * // Do something here and prevent from \"pointerdown\" bubbling up\r\n * // ...\r\n * ev.target.events.stopParentDispatch();\r\n * });\r\n * ```\r\n */\r\n stopParentDispatch() {\r\n this._dispatchParents = false;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n dispatchParents(type, event) {\r\n const old = this._dispatchParents;\r\n this._dispatchParents = true;\r\n try {\r\n this.dispatch(type, event);\r\n if (this._dispatchParents && this._sprite.parent) {\r\n this._sprite.parent.events.dispatchParents(type, event);\r\n }\r\n }\r\n finally {\r\n this._dispatchParents = old;\r\n }\r\n }\r\n}\r\nObject.defineProperty(SpriteEventDispatcher, \"RENDERER_EVENTS\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {\r\n \"click\": function (event) {\r\n if (this.isEnabled(\"click\") && !this._sprite.isDragging() && this._sprite._hasDown() && !this._sprite._hasMoved(this._makePointerEvent(\"click\", event))) {\r\n this.dispatch(\"click\", this._makePointerEvent(\"click\", event));\r\n }\r\n },\r\n \"rightclick\": function (event) {\r\n if (this.isEnabled(\"rightclick\")) {\r\n this.dispatch(\"rightclick\", this._makePointerEvent(\"rightclick\", event));\r\n }\r\n },\r\n \"middleclick\": function (event) {\r\n if (this.isEnabled(\"middleclick\")) {\r\n this.dispatch(\"middleclick\", this._makePointerEvent(\"middleclick\", event));\r\n }\r\n },\r\n \"dblclick\": function (event) {\r\n this.dispatchParents(\"dblclick\", this._makePointerEvent(\"dblclick\", event));\r\n },\r\n \"pointerover\": function (event) {\r\n const sprite = this._sprite;\r\n let dispatch = true;\r\n if (sprite.getPrivate(\"trustBounds\")) {\r\n sprite._getBounds();\r\n const bounds = sprite.globalBounds();\r\n if (sprite.isType(\"Graphics\")) {\r\n const strokeWidth = sprite.get(\"strokeWidth\", 1) / 2;\r\n if (strokeWidth >= 1) {\r\n bounds.left -= strokeWidth;\r\n bounds.right += strokeWidth;\r\n bounds.top -= strokeWidth;\r\n bounds.bottom += strokeWidth;\r\n }\r\n }\r\n if (!$math.inBounds(event.point, bounds)) {\r\n dispatch = false;\r\n sprite._root._renderer.removeHovering(sprite._display);\r\n }\r\n }\r\n if (dispatch && this.isEnabled(\"pointerover\")) {\r\n this.dispatch(\"pointerover\", this._makePointerEvent(\"pointerover\", event));\r\n }\r\n },\r\n \"pointerout\": function (event) {\r\n if (this.isEnabled(\"pointerout\")) {\r\n this.dispatch(\"pointerout\", this._makePointerEvent(\"pointerout\", event));\r\n }\r\n },\r\n \"pointerdown\": function (event) {\r\n this.dispatchParents(\"pointerdown\", this._makePointerEvent(\"pointerdown\", event));\r\n },\r\n \"pointerup\": function (event) {\r\n if (this.isEnabled(\"pointerup\")) {\r\n this.dispatch(\"pointerup\", this._makePointerEvent(\"pointerup\", event));\r\n }\r\n },\r\n \"globalpointerup\": function (event) {\r\n if (this.isEnabled(\"globalpointerup\")) {\r\n this.dispatch(\"globalpointerup\", this._makePointerEvent(\"globalpointerup\", event));\r\n }\r\n },\r\n \"globalpointermove\": function (event) {\r\n if (this.isEnabled(\"globalpointermove\")) {\r\n this.dispatch(\"globalpointermove\", this._makePointerEvent(\"globalpointermove\", event));\r\n }\r\n },\r\n \"wheel\": function (event) {\r\n this.dispatchParents(\"wheel\", {\r\n type: \"wheel\",\r\n target: this._sprite,\r\n originalEvent: event.event,\r\n point: event.point,\r\n });\r\n },\r\n }\r\n});\r\n/**\r\n * A base class for all visual elements.\r\n *\r\n * @important\r\n */\r\nexport class Sprite extends Entity {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_adjustedLocalBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { left: 0, right: 0, top: 0, bottom: 0 }\r\n });\r\n Object.defineProperty(this, \"_localBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { left: 0, right: 0, top: 0, bottom: 0 }\r\n });\r\n Object.defineProperty(this, \"_parent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_dataItem\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_templateField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_sizeDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n // Will be true only when dragging\r\n Object.defineProperty(this, \"_isDragging\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n // The event when the dragging starts\r\n Object.defineProperty(this, \"_dragEvent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // The position when dragging starts\r\n Object.defineProperty(this, \"_dragPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_isHidden\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isShowing\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isHiding\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isDown\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_downPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downPoints\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_toggleDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_dragDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_hoverDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_focusDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipMoveDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipPointerDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_statesHandled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n _afterNew() {\r\n this.setPrivateRaw(\"visible\", true);\r\n super._afterNew();\r\n }\r\n /**\r\n * Marks some setting as dirty. Could be used to trigger adapter.\r\n * @param key\r\n */\r\n markDirtyKey(key) {\r\n this._markDirtyKey(key);\r\n }\r\n _markDirtyKey(key) {\r\n super._markDirtyKey(key);\r\n if (key == \"x\" || key == \"y\" || key == \"dx\" || key == \"dy\") {\r\n this.markDirtyBounds();\r\n this._addPercentagePositionChildren();\r\n this.markDirtyPosition();\r\n }\r\n }\r\n _markDirtyPrivateKey(key) {\r\n super._markDirtyPrivateKey(key);\r\n if (key == \"x\" || key == \"y\") {\r\n this.markDirtyPosition();\r\n }\r\n }\r\n _removeTemplateField() {\r\n if (this._templateField) {\r\n this._templateField._removeObjectTemplate(this);\r\n }\r\n }\r\n _createEvents() {\r\n return new SpriteEventDispatcher(this);\r\n }\r\n _processTemplateField() {\r\n let template;\r\n const field = this.get(\"templateField\");\r\n if (field) {\r\n const dataItem = this.dataItem;\r\n if (dataItem) {\r\n const context = dataItem.dataContext;\r\n if (context) {\r\n template = context[field];\r\n if (!(template instanceof Template) && template) {\r\n template = Template.new(template);\r\n }\r\n }\r\n }\r\n }\r\n if (this._templateField !== template) {\r\n this._removeTemplateField();\r\n this._templateField = template;\r\n if (template) {\r\n template._setObjectTemplate(this);\r\n }\r\n this._applyTemplates();\r\n }\r\n }\r\n // TODO change this to run before the element is added to the parent, so that way\r\n // it doesn't need to apply the themes twice\r\n _setDataItem(dataItem) {\r\n const oldDataItem = this._dataItem;\r\n this._dataItem = dataItem;\r\n this._processTemplateField();\r\n const eventType = \"dataitemchanged\";\r\n if (dataItem != oldDataItem) {\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, {\r\n type: eventType,\r\n target: this,\r\n oldDataItem: oldDataItem,\r\n newDataItem: dataItem\r\n });\r\n }\r\n }\r\n }\r\n /**\r\n * A [[DataItem]] used for this element.\r\n *\r\n * NOTE: data item is being assigned automatically in most cases where it\r\n * matters. Use this accessor to set data item only if you know what you're\r\n * doing.\r\n *\r\n * @param value Data item\r\n */\r\n set dataItem(value) {\r\n this._setDataItem(value);\r\n }\r\n /**\r\n * @return DataItem\r\n */\r\n get dataItem() {\r\n if (this._dataItem) {\r\n return this._dataItem;\r\n }\r\n else {\r\n let parent = this._parent;\r\n while (parent) {\r\n if (parent._dataItem) {\r\n return parent._dataItem;\r\n }\r\n else {\r\n parent = parent._parent;\r\n }\r\n }\r\n }\r\n }\r\n _addPercentageSizeChildren() {\r\n let parent = this.parent;\r\n if (parent) {\r\n if (this.get(\"width\") instanceof Percent || this.get(\"height\") instanceof Percent) {\r\n $array.pushOne(parent._percentageSizeChildren, this);\r\n }\r\n else {\r\n $array.removeFirst(parent._percentageSizeChildren, this);\r\n }\r\n }\r\n }\r\n _addPercentagePositionChildren() {\r\n let parent = this.parent;\r\n if (parent) {\r\n if (this.get(\"x\") instanceof Percent || this.get(\"y\") instanceof Percent) {\r\n $array.pushOne(parent._percentagePositionChildren, this);\r\n }\r\n else {\r\n $array.removeFirst(parent._percentagePositionChildren, this);\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyPosition() {\r\n this._root._addDirtyPosition(this);\r\n }\r\n updatePivotPoint() {\r\n const bounds = this._localBounds;\r\n if (bounds) {\r\n const centerX = this.get(\"centerX\");\r\n if (centerX != null) {\r\n this._display.pivot.x = bounds.left + $utils.relativeToValue(centerX, bounds.right - bounds.left);\r\n }\r\n const centerY = this.get(\"centerY\");\r\n if (centerY != null) {\r\n this._display.pivot.y = bounds.top + $utils.relativeToValue(centerY, bounds.bottom - bounds.top);\r\n }\r\n }\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n // handling states in beforeChanged, otherwise states is not applied without animated theme\r\n this._handleStates();\r\n if (this.isDirty(\"tooltip\")) {\r\n const previous = this._prevSettings.tooltip;\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n }\r\n if (this.isDirty(\"layer\") || this.isDirty(\"layerMargin\")) {\r\n this._display.setLayer(this.get(\"layer\"), this.get(\"layerMargin\"));\r\n this.markDirtyLayer();\r\n }\r\n if (this.isDirty(\"tooltipPosition\")) {\r\n const tooltipMoveDp = this._tooltipMoveDp;\r\n if (tooltipMoveDp) {\r\n tooltipMoveDp.dispose();\r\n this._tooltipMoveDp = undefined;\r\n }\r\n const tooltipPointerDp = this._tooltipPointerDp;\r\n if (tooltipPointerDp) {\r\n tooltipPointerDp.dispose();\r\n this._tooltipPointerDp = undefined;\r\n }\r\n if (this.get(\"tooltipPosition\") == \"pointer\") {\r\n if (this.isHover()) {\r\n this._tooltipMoveDp = this.events.on(\"globalpointermove\", (e) => {\r\n this.showTooltip(e.point);\r\n });\r\n }\r\n this._tooltipPointerDp = new MultiDisposer([\r\n this.events.on(\"pointerover\", () => {\r\n this._tooltipMoveDp = this.events.on(\"globalpointermove\", (e) => {\r\n this.showTooltip(e.point);\r\n });\r\n }),\r\n this.events.on(\"pointerout\", () => {\r\n const tooltipMoveDp = this._tooltipMoveDp;\r\n if (tooltipMoveDp) {\r\n tooltipMoveDp.dispose();\r\n this._tooltipMoveDp = undefined;\r\n }\r\n })\r\n ]);\r\n }\r\n }\r\n }\r\n _handleStates() {\r\n if (!this._statesHandled) {\r\n if (this.isDirty(\"active\")) {\r\n if (this.get(\"active\")) {\r\n this.states.applyAnimate(\"active\");\r\n this.set(\"ariaChecked\", true);\r\n }\r\n else {\r\n if (!this.isHidden()) {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n this.set(\"ariaChecked\", false);\r\n }\r\n this.markDirtyAccessibility();\r\n }\r\n if (this.isDirty(\"disabled\")) {\r\n if (this.get(\"disabled\")) {\r\n this.states.applyAnimate(\"disabled\");\r\n this.set(\"ariaChecked\", false);\r\n }\r\n else {\r\n if (!this.isHidden()) {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n this.set(\"ariaChecked\", true);\r\n }\r\n this.markDirtyAccessibility();\r\n }\r\n this._statesHandled = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n const display = this._display;\r\n const events = this.events;\r\n if (this.isDirty(\"draggable\")) {\r\n const draggable = this.get(\"draggable\");\r\n if (draggable) {\r\n this.set(\"interactive\", true);\r\n this._dragDp = new MultiDisposer([\r\n events.on(\"pointerdown\", (ev) => {\r\n this.dragStart(ev);\r\n }),\r\n events.on(\"globalpointermove\", (ev) => {\r\n this.dragMove(ev);\r\n }),\r\n events.on(\"globalpointerup\", (ev) => {\r\n this.dragStop(ev);\r\n })\r\n ]);\r\n }\r\n else {\r\n if (this._dragDp) {\r\n this._dragDp.dispose();\r\n this._dragDp = undefined;\r\n }\r\n }\r\n display.cancelTouch = draggable ? true : false;\r\n }\r\n if (this.isDirty(\"tooltipText\") || this.isDirty(\"tooltipHTML\") || this.isDirty(\"showTooltipOn\")) {\r\n const tooltipText = this.get(\"tooltipText\");\r\n const tooltipHTML = this.get(\"tooltipHTML\");\r\n const showTooltipOn = this.get(\"showTooltipOn\", \"hover\");\r\n if (this._tooltipDp) {\r\n this._tooltipDp.dispose();\r\n this._tooltipDp = undefined;\r\n }\r\n if (tooltipText || tooltipHTML) {\r\n if (showTooltipOn == \"click\") {\r\n this._tooltipDp = new MultiDisposer([\r\n events.on(\"click\", () => {\r\n this.setTimeout(() => this.showTooltip(), 10);\r\n }),\r\n $utils.addEventListener(document, \"click\", (_ev) => {\r\n this.hideTooltip();\r\n })\r\n ]);\r\n this._disposers.push(this._tooltipDp);\r\n }\r\n else if (showTooltipOn == \"always\") {\r\n // nothing\r\n }\r\n else {\r\n this._tooltipDp = new MultiDisposer([\r\n events.on(\"pointerover\", () => {\r\n this.showTooltip();\r\n }),\r\n events.on(\"pointerout\", () => {\r\n this.hideTooltip();\r\n })\r\n ]);\r\n this._disposers.push(this._tooltipDp);\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"toggleKey\")) {\r\n let toggleKey = this.get(\"toggleKey\");\r\n if (toggleKey && toggleKey != \"none\") {\r\n this._toggleDp = events.on(\"click\", () => {\r\n if (!this._isDragging) {\r\n this.set(toggleKey, !this.get(toggleKey));\r\n }\r\n });\r\n }\r\n else {\r\n if (this._toggleDp) {\r\n this._toggleDp.dispose();\r\n this._toggleDp = undefined;\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"opacity\")) {\r\n display.alpha = Math.max(0, this.get(\"opacity\", 1));\r\n if (this.get(\"focusable\")) {\r\n this.markDirtyAccessibility();\r\n }\r\n }\r\n if (this.isDirty(\"rotation\")) {\r\n this.markDirtyBounds();\r\n display.angle = this.get(\"rotation\", 0);\r\n }\r\n if (this.isDirty(\"scale\")) {\r\n this.markDirtyBounds();\r\n display.scale = this.get(\"scale\", 0);\r\n }\r\n if (this.isDirty(\"centerX\") || this.isDirty(\"centerY\")) {\r\n this.markDirtyBounds();\r\n this.updatePivotPoint();\r\n }\r\n if (this.isDirty(\"visible\") || this.isPrivateDirty(\"visible\") || this.isDirty(\"forceHidden\")) {\r\n if (!this.get(\"visible\") || !this.getPrivate(\"visible\") || this.get(\"forceHidden\")) {\r\n display.visible = false;\r\n this.hideTooltip();\r\n }\r\n else {\r\n display.visible = true;\r\n }\r\n this.markDirtyBounds();\r\n if (this.get(\"focusable\")) {\r\n this.markDirtyAccessibility();\r\n }\r\n }\r\n if (this.isDirty(\"width\") || this.isDirty(\"height\")) {\r\n this.markDirtyBounds();\r\n this._addPercentageSizeChildren();\r\n const parent = this.parent;\r\n if (parent) {\r\n if ((this.isDirty(\"width\") && this.get(\"width\") instanceof Percent) || (this.isDirty(\"height\") && this.get(\"height\") instanceof Percent)) {\r\n parent.markDirty();\r\n parent._prevWidth = 0;\r\n }\r\n }\r\n this._sizeDirty = true;\r\n }\r\n if (this.isDirty(\"maxWidth\") || this.isDirty(\"maxHeight\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"minWidth\") || this.isDirty(\"minHeight\") || this.isPrivateDirty(\"maxWidth\") || this.isPrivateDirty(\"maxHeight\") || this.isPrivateDirty(\"minWidth\") || this.isPrivateDirty(\"minHeight\") || this.isDirty(\"marginLeft\") || this.isDirty(\"marginTop\") || this.isDirty(\"marginRight\") || this.isDirty(\"marginBottom\")) {\r\n this.markDirtyBounds();\r\n this._sizeDirty = true;\r\n }\r\n if (this._sizeDirty) {\r\n this._updateSize();\r\n }\r\n if (this.isDirty(\"wheelable\")) {\r\n const wheelable = this.get(\"wheelable\");\r\n if (wheelable) {\r\n this.set(\"interactive\", true);\r\n }\r\n display.wheelable = wheelable ? true : false;\r\n }\r\n // Accessibility\r\n if (this.isDirty(\"tabindexOrder\") || this.isDirty(\"focusableGroup\")) {\r\n if (this.get(\"focusable\")) {\r\n this._root._registerTabindexOrder(this);\r\n }\r\n else {\r\n this._root._unregisterTabindexOrder(this);\r\n }\r\n }\r\n if (this.isDirty(\"filter\")) {\r\n //this.markDirtyBounds();\r\n display.filter = this.get(\"filter\");\r\n }\r\n let filter = this.get(\"filter\", \"\");\r\n if (this.isDirty(\"blur\")) {\r\n const blur = this.get(\"blur\", 0);\r\n if (blur != 0) {\r\n filter += \" blur(\" + blur + \"px)\";\r\n }\r\n }\r\n if (this.isDirty(\"saturate\")) {\r\n const saturate = this.get(\"saturate\", 1);\r\n if (saturate != 1) {\r\n filter += \" saturate(\" + saturate + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"brightness\")) {\r\n const brightness = this.get(\"brightness\", 1);\r\n if (brightness != 1) {\r\n filter += \" brightness(\" + brightness + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"contrast\")) {\r\n const contrast = this.get(\"contrast\", 1);\r\n if (contrast != 1) {\r\n filter += \" contrast(\" + contrast + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"sepia\")) {\r\n const sepia = this.get(\"sepia\", 0);\r\n if (sepia != 0) {\r\n filter += \" sepia(\" + sepia + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"hue\")) {\r\n const hue = this.get(\"hue\", 0);\r\n if (hue != 0) {\r\n filter += \" hue-rotate(\" + hue + \"deg)\";\r\n }\r\n }\r\n if (this.isDirty(\"invert\")) {\r\n const invert = this.get(\"invert\", 0);\r\n if (invert != 0) {\r\n filter += \" invert(\" + invert + \")\";\r\n }\r\n }\r\n if (filter) {\r\n display.filter = filter;\r\n }\r\n if (this.isDirty(\"cursorOverStyle\")) {\r\n display.cursorOverStyle = this.get(\"cursorOverStyle\");\r\n }\r\n if (this.isDirty(\"hoverOnFocus\")) {\r\n if (this.get(\"hoverOnFocus\")) {\r\n this._focusDp = new MultiDisposer([\r\n events.on(\"focus\", () => {\r\n // TODO: proper hover, not just tooltip\r\n this.showTooltip();\r\n }),\r\n events.on(\"blur\", () => {\r\n // TODO: proper hover, not just tooltip\r\n this.hideTooltip();\r\n })\r\n ]);\r\n }\r\n else {\r\n if (this._focusDp) {\r\n this._focusDp.dispose();\r\n this._focusDp = undefined;\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"focusable\")) {\r\n if (this.get(\"focusable\")) {\r\n this._root._registerTabindexOrder(this);\r\n }\r\n else {\r\n this._root._unregisterTabindexOrder(this);\r\n }\r\n this.markDirtyAccessibility();\r\n }\r\n if (this.isPrivateDirty(\"focusable\")) {\r\n this.markDirtyAccessibility();\r\n }\r\n if (this.isDirty(\"role\") || this.isDirty(\"ariaLive\") || this.isDirty(\"ariaChecked\") || this.isDirty(\"ariaHidden\") || this.isDirty(\"ariaOrientation\") || this.isDirty(\"ariaValueNow\") || this.isDirty(\"ariaValueMin\") || this.isDirty(\"ariaValueMax\") || this.isDirty(\"ariaValueText\") || this.isDirty(\"ariaLabel\") || this.isDirty(\"ariaControls\")) {\r\n // display.accessibility.ariaLabel = populateString(this, this.get(\"ariaLabel\", \"\"));\r\n // @todo make sure ariaLabel gets populated in Root\r\n this.markDirtyAccessibility();\r\n }\r\n if (this.isDirty(\"exportable\")) {\r\n display.exportable = this.get(\"exportable\");\r\n }\r\n if (this.isDirty(\"interactive\")) {\r\n const events = this.events;\r\n if (this.get(\"interactive\") && !events.isDisposed()) {\r\n this._hoverDp = new MultiDisposer([\r\n events.on(\"click\", (ev) => {\r\n if ($utils.isTouchEvent(ev.originalEvent)) {\r\n if (!this.getPrivate(\"touchHovering\")) {\r\n this.setTimeout(() => {\r\n this._handleOver();\r\n if (this.get(\"tooltipText\") || this.get(\"tooltipHTML\")) {\r\n this.showTooltip();\r\n }\r\n this.setPrivateRaw(\"touchHovering\", true);\r\n this.events.dispatch(\"pointerover\", {\r\n type: \"pointerover\",\r\n target: ev.target,\r\n originalEvent: ev.originalEvent,\r\n point: ev.point,\r\n simulated: ev.simulated\r\n });\r\n }, 10);\r\n }\r\n }\r\n }),\r\n events.on(\"globalpointerup\", (ev) => {\r\n if ($utils.isTouchEvent(ev.originalEvent)) {\r\n if (this.getPrivate(\"touchHovering\")) {\r\n this._handleOut();\r\n if (this.get(\"tooltipText\") || this.get(\"tooltipHTML\")) {\r\n this.hideTooltip();\r\n }\r\n this.setPrivateRaw(\"touchHovering\", false);\r\n this.events.dispatch(\"pointerout\", {\r\n type: \"pointerout\",\r\n target: ev.target,\r\n originalEvent: ev.originalEvent,\r\n point: ev.point,\r\n simulated: ev.simulated\r\n });\r\n }\r\n }\r\n if (this._isDown) {\r\n this._handleUp(ev);\r\n }\r\n //this._isDown = false;\r\n }),\r\n events.on(\"pointerover\", () => {\r\n this._handleOver();\r\n }),\r\n events.on(\"pointerout\", () => {\r\n this._handleOut();\r\n }),\r\n events.on(\"pointerdown\", (e) => {\r\n this._handleDown(e);\r\n })\r\n ]);\r\n }\r\n else {\r\n this._display.interactive = false;\r\n if (this._hoverDp) {\r\n this._hoverDp.dispose();\r\n this._hoverDp = undefined;\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"forceInactive\")) {\r\n this._display.inactive = this.get(\"forceInactive\", null);\r\n }\r\n if (this.get(\"showTooltipOn\") == \"always\" && this._display.visible) {\r\n this.showTooltip();\r\n }\r\n }\r\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\r\n dragStart(e) {\r\n this._dragEvent = e;\r\n this.events.stopParentDispatch();\r\n }\r\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\r\n dragStop(e) {\r\n this._dragEvent = undefined;\r\n this._dragPoint = undefined;\r\n this.events.stopParentDispatch();\r\n if (this._isDragging) {\r\n this._isDragging = false;\r\n const type = \"dragstop\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated,\r\n });\r\n }\r\n }\r\n }\r\n _handleOver() {\r\n if (!this.isHidden()) {\r\n if (this.get(\"active\") && this.states.lookup(\"hoverActive\")) {\r\n this.states.applyAnimate(\"hoverActive\");\r\n }\r\n else if (this.get(\"disabled\") && this.states.lookup(\"hoverDisabled\")) {\r\n this.states.applyAnimate(\"hoverDisabled\");\r\n }\r\n else {\r\n this.states.applyAnimate(\"hover\");\r\n }\r\n if (this.get(\"draggable\") && this._isDown && this.states.lookup(\"down\")) {\r\n this.states.applyAnimate(\"down\");\r\n }\r\n }\r\n }\r\n _handleOut() {\r\n if (!this.isHidden()) {\r\n if (this.get(\"active\") && this.states.lookup(\"active\")) {\r\n this.states.applyAnimate(\"active\");\r\n }\r\n else if (this.get(\"disabled\") && this.states.lookup(\"disabled\")) {\r\n this.states.applyAnimate(\"disabled\");\r\n }\r\n else {\r\n if (this.states.lookup(\"hover\") || this.states.lookup(\"hoverActive\")) {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n }\r\n if (this.get(\"draggable\") && this._isDown && this.states.lookup(\"down\")) {\r\n this.states.applyAnimate(\"down\");\r\n }\r\n }\r\n }\r\n _handleUp(e) {\r\n if (!this.isHidden()) {\r\n if (this.get(\"active\") && this.states.lookup(\"active\")) {\r\n this.states.applyAnimate(\"active\");\r\n }\r\n else if (this.get(\"disabled\") && this.states.lookup(\"disabled\")) {\r\n this.states.applyAnimate(\"disabled\");\r\n }\r\n else if (this.states.lookup(\"down\")) {\r\n if (this.isHover()) {\r\n this.states.applyAnimate(\"hover\");\r\n }\r\n else {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n }\r\n // @todo remove this once migrated to _downPoints\r\n this._downPoint = undefined;\r\n const pointerId = $utils.getPointerId(e.originalEvent);\r\n delete this._downPoints[pointerId];\r\n if ($object.keys(this._downPoints).length == 0) {\r\n this._isDown = false;\r\n }\r\n }\r\n }\r\n _hasMoved(e) {\r\n // @todo remove this once migrated to _downPoints\r\n // if (this._downPoint) {\r\n // \tconst x = Math.abs(this._downPoint.x - e.point.x);\r\n // \tconst y = Math.abs(this._downPoint.y - e.point.y);\r\n // \treturn (x > 5) || (y > 5);\r\n // }\r\n const pointerId = $utils.getPointerId(e.originalEvent);\r\n const downPoint = this._downPoints[pointerId];\r\n if (downPoint) {\r\n const x = Math.abs(downPoint.x - e.point.x);\r\n const y = Math.abs(downPoint.y - e.point.y);\r\n return (x > 5) || (y > 5);\r\n }\r\n return false;\r\n }\r\n _hasDown() {\r\n return $object.keys(this._downPoints).length > 0;\r\n }\r\n _handleDown(e) {\r\n const parent = this.parent;\r\n if (parent && !this.get(\"draggable\")) {\r\n parent._handleDown(e);\r\n }\r\n if (this.get(\"interactive\") && !this.isHidden()) {\r\n if (this.states.lookup(\"down\")) {\r\n this.states.applyAnimate(\"down\");\r\n }\r\n this._downPoint = {\r\n x: e.point.x,\r\n y: e.point.y\r\n };\r\n // @todo remove this once migrated to _downPoints\r\n this._isDown = true;\r\n const pointerId = $utils.getPointerId(e.originalEvent);\r\n this._downPoints[pointerId] = {\r\n x: e.point.x,\r\n y: e.point.y\r\n };\r\n }\r\n }\r\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\r\n dragMove(e) {\r\n let dragEvent = this._dragEvent;\r\n if (dragEvent) {\r\n if (dragEvent.simulated && !e.simulated) {\r\n return true;\r\n }\r\n let angle = 0;\r\n let parent = this.parent;\r\n let scale = 1;\r\n while (parent != null) {\r\n angle += parent.get(\"rotation\", 0);\r\n parent = parent.parent;\r\n if (parent) {\r\n scale *= parent.get(\"scale\", 1);\r\n }\r\n }\r\n let x = (e.point.x - dragEvent.point.x) / scale;\r\n let y = (e.point.y - dragEvent.point.y) / scale;\r\n const events = this.events;\r\n if (dragEvent.simulated && !this._isDragging) {\r\n this._isDragging = true;\r\n this._dragEvent = e;\r\n this._dragPoint = {\r\n x: this.x(),\r\n y: this.y()\r\n };\r\n const type = \"dragstart\";\r\n if (events.isEnabled(type)) {\r\n events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated,\r\n });\r\n }\r\n }\r\n if (this._isDragging) {\r\n let dragPoint = this._dragPoint;\r\n this.set(\"x\", dragPoint.x + x * $math.cos(angle) + y * $math.sin(angle));\r\n this.set(\"y\", dragPoint.y + y * $math.cos(angle) - x * $math.sin(angle));\r\n const type = \"dragged\";\r\n if (events.isEnabled(type)) {\r\n events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated,\r\n });\r\n }\r\n }\r\n else {\r\n if (Math.hypot(x, y) > 5) {\r\n this._isDragging = true;\r\n this._dragEvent = e;\r\n this._dragPoint = {\r\n x: this.x(),\r\n y: this.y()\r\n };\r\n const type = \"dragstart\";\r\n if (events.isEnabled(type)) {\r\n events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _updateSize() {\r\n }\r\n _getBounds() {\r\n this._localBounds = this._display.getLocalBounds();\r\n }\r\n /**\r\n * Returns depth (how deep in the hierachy of the content tree) of this\r\n * element.\r\n *\r\n * @return Depth\r\n */\r\n depth() {\r\n let self = this.parent;\r\n let depth = 0;\r\n while (true) {\r\n if (self) {\r\n ++depth;\r\n self = self.parent;\r\n }\r\n else {\r\n return depth;\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtySize() {\r\n this._sizeDirty = true;\r\n this.markDirty();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyBounds() {\r\n const display = this._display;\r\n if (this.get(\"isMeasured\")) {\r\n this._root._addDirtyBounds(this);\r\n display.isMeasured = true;\r\n display.invalidateBounds();\r\n const parent = this.parent;\r\n if (parent && this.get(\"position\") != \"absolute\") {\r\n if (parent.get(\"width\") == null || parent.get(\"height\") == null || parent.get(\"layout\")) {\r\n parent.markDirtyBounds();\r\n }\r\n }\r\n if (this.get(\"focusable\") && this.isFocus()) {\r\n this.markDirtyAccessibility();\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyAccessibility() {\r\n //if (this._root.focused(this)) {\r\n this._root._invalidateAccessibility(this);\r\n //}\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyLayer() {\r\n //this._display.markDirtyLayer(this.isDirty(\"opacity\") || this.isDirty(\"visible\")); https://codepen.io/team/amcharts/pen/gOWZPmP <- problems\r\n this._display.markDirtyLayer(true);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirty() {\r\n super.markDirty();\r\n this.markDirtyLayer();\r\n }\r\n _updateBounds() {\r\n const oldBounds = this._adjustedLocalBounds;\r\n let newBounds;\r\n // if display.visible == false, it still returns bounds\r\n if (!this.get(\"visible\") || !this.getPrivate(\"visible\") || this.get(\"forceHidden\")) {\r\n newBounds = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n };\r\n this._localBounds = newBounds;\r\n this._adjustedLocalBounds = newBounds;\r\n }\r\n else {\r\n this._getBounds();\r\n this._fixMinBounds(this._localBounds);\r\n this.updatePivotPoint();\r\n this._adjustedLocalBounds = this._display.getAdjustedBounds(this._localBounds);\r\n newBounds = this._adjustedLocalBounds;\r\n }\r\n if (!oldBounds || (oldBounds.left !== newBounds.left || oldBounds.top !== newBounds.top || oldBounds.right !== newBounds.right || oldBounds.bottom !== newBounds.bottom)) {\r\n const eventType = \"boundschanged\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this });\r\n }\r\n if (this.parent) {\r\n this.parent.markDirty();\r\n this.parent.markDirtyBounds();\r\n }\r\n // Update tooltip position together with the Sprite\r\n if (this.getPrivate(\"showingTooltip\")) {\r\n this.showTooltip();\r\n }\r\n }\r\n }\r\n _fixMinBounds(bounds) {\r\n let minWidth = this.get(\"minWidth\", this.getPrivate(\"minWidth\"));\r\n let minHeight = this.get(\"minHeight\", this.getPrivate(\"minHeight\"));\r\n if ($type.isNumber(minWidth)) {\r\n if (bounds.right - bounds.left < minWidth) {\r\n bounds.right = bounds.left + minWidth;\r\n }\r\n }\r\n if ($type.isNumber(minHeight)) {\r\n if (bounds.bottom - bounds.top < minHeight) {\r\n bounds.bottom = bounds.top + minHeight;\r\n }\r\n }\r\n let privateWidth = this.getPrivate(\"width\");\r\n let privateHeight = this.getPrivate(\"height\");\r\n if ($type.isNumber(privateWidth)) {\r\n if (privateWidth > 0) {\r\n bounds.right = bounds.left + privateWidth;\r\n }\r\n else {\r\n bounds.left = bounds.right + privateWidth;\r\n }\r\n }\r\n if ($type.isNumber(privateHeight)) {\r\n if (privateHeight > 0) {\r\n bounds.bottom = bounds.top + privateHeight;\r\n }\r\n else {\r\n bounds.top = bounds.bottom + privateHeight;\r\n }\r\n }\r\n }\r\n _removeParent(parent) {\r\n if (parent) {\r\n parent.children.removeValue(this);\r\n $array.removeFirst(parent._percentageSizeChildren, this);\r\n $array.removeFirst(parent._percentagePositionChildren, this);\r\n }\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._sizeDirty = false;\r\n this._statesHandled = false;\r\n }\r\n /**\r\n * Simulate hover over element.\r\n */\r\n hover() {\r\n this.showTooltip();\r\n this._handleOver();\r\n }\r\n /**\r\n * Simulate unhover over element.\r\n */\r\n unhover() {\r\n this.hideTooltip();\r\n this._handleOut();\r\n }\r\n /**\r\n * Shows element's [[Tooltip]].\r\n */\r\n showTooltip(point) {\r\n const tooltip = this.getTooltip();\r\n const tooltipText = this.get(\"tooltipText\");\r\n const tooltipHTML = this.get(\"tooltipHTML\");\r\n if ((tooltipText || tooltipHTML) && tooltip) {\r\n const tooltipPosition = this.get(\"tooltipPosition\");\r\n const tooltipTarget = this.getPrivate(\"tooltipTarget\", this);\r\n if (tooltipPosition == \"fixed\" || !point) {\r\n this._display._setMatrix();\r\n point = this.toGlobal(tooltipTarget._getTooltipPoint());\r\n }\r\n tooltip.set(\"pointTo\", point);\r\n tooltip.set(\"tooltipTarget\", tooltipTarget);\r\n if (!tooltip.get(\"x\")) {\r\n tooltip.set(\"x\", point.x);\r\n }\r\n if (!tooltip.get(\"y\")) {\r\n tooltip.set(\"y\", point.y);\r\n }\r\n if (tooltipText) {\r\n tooltip.label.set(\"text\", tooltipText);\r\n }\r\n if (tooltipHTML) {\r\n tooltip.label.set(\"html\", tooltipHTML);\r\n }\r\n const dataItem = this.dataItem;\r\n if (dataItem) {\r\n tooltip.label._setDataItem(dataItem);\r\n }\r\n if (this.get(\"showTooltipOn\") == \"always\" && (point.x < 0 || point.x > this._root.width() || point.y < 0 || point.y > this._root.height())) {\r\n this.hideTooltip();\r\n return;\r\n }\r\n tooltip.label.text.markDirtyText();\r\n const promise = tooltip.show();\r\n this.setPrivateRaw(\"showingTooltip\", true);\r\n return promise;\r\n }\r\n }\r\n /**\r\n * Hides element's [[Tooltip]].\r\n */\r\n hideTooltip() {\r\n const tooltip = this.getTooltip();\r\n if (tooltip) {\r\n if (tooltip.get(\"tooltipTarget\") == this.getPrivate(\"tooltipTarget\", this) || this.get(\"tooltip\") == tooltip) {\r\n let timeout = tooltip.get(\"keepTargetHover\") && tooltip.get(\"stateAnimationDuration\", 0) == 0 ? 400 : undefined;\r\n const promise = tooltip.hide(timeout);\r\n this.setPrivateRaw(\"showingTooltip\", false);\r\n return promise;\r\n }\r\n }\r\n }\r\n _getTooltipPoint() {\r\n const bounds = this._localBounds;\r\n if (bounds) {\r\n let x = 0;\r\n let y = 0;\r\n if (!this.get(\"isMeasured\")) {\r\n x = $utils.relativeToValue(this.get(\"tooltipX\", 0), this.width());\r\n y = $utils.relativeToValue(this.get(\"tooltipY\", 0), this.height());\r\n }\r\n else {\r\n x = bounds.left + $utils.relativeToValue(this.get(\"tooltipX\", 0), bounds.right - bounds.left);\r\n y = bounds.top + $utils.relativeToValue(this.get(\"tooltipY\", 0), bounds.bottom - bounds.top);\r\n }\r\n return { x, y };\r\n }\r\n return { x: 0, y: 0 };\r\n }\r\n /**\r\n * Returns [[Tooltip]] used for this element.\r\n *\r\n * @return Tooltip\r\n */\r\n getTooltip() {\r\n let tooltip = this.get(\"tooltip\");\r\n if (!tooltip) {\r\n let parent = this.parent;\r\n if (parent) {\r\n return parent.getTooltip();\r\n }\r\n }\r\n else {\r\n return tooltip;\r\n }\r\n }\r\n _updatePosition() {\r\n const parent = this.parent;\r\n let dx = this.get(\"dx\", 0);\r\n let dy = this.get(\"dy\", 0);\r\n let x = this.get(\"x\");\r\n let _x = this.getPrivate(\"x\");\r\n let xx = 0;\r\n let yy = 0;\r\n const position = this.get(\"position\");\r\n if (x instanceof Percent) {\r\n if (parent) {\r\n x = parent.innerWidth() * x.value + parent.get(\"paddingLeft\", 0);\r\n }\r\n else {\r\n x = 0;\r\n }\r\n }\r\n if ($type.isNumber(x)) {\r\n xx = x + dx;\r\n }\r\n else {\r\n if (_x != null) {\r\n xx = _x;\r\n }\r\n else if (parent) {\r\n if (position == \"relative\") {\r\n xx = parent.get(\"paddingLeft\", 0) + dx;\r\n }\r\n }\r\n }\r\n let y = this.get(\"y\");\r\n let _y = this.getPrivate(\"y\");\r\n if (y instanceof Percent) {\r\n if (parent) {\r\n y = parent.innerHeight() * y.value + parent.get(\"paddingTop\", 0);\r\n }\r\n else {\r\n y = 0;\r\n }\r\n }\r\n if ($type.isNumber(y)) {\r\n yy = y + dy;\r\n }\r\n else {\r\n if (_y != null) {\r\n yy = _y;\r\n }\r\n else if (parent) {\r\n if (position == \"relative\") {\r\n yy = parent.get(\"paddingTop\", 0) + dy;\r\n }\r\n }\r\n }\r\n const display = this._display;\r\n if (display.x != xx || display.y != yy) {\r\n display.invalidateBounds();\r\n display.x = xx;\r\n display.y = yy;\r\n const eventType = \"positionchanged\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this });\r\n }\r\n }\r\n // Update tooltip position together with the Sprite\r\n if (this.getPrivate(\"showingTooltip\")) {\r\n this.showTooltip();\r\n }\r\n }\r\n /**\r\n * Returns element's actual X position in pixels.\r\n *\r\n * @return X (px)\r\n */\r\n x() {\r\n let x = this.get(\"x\");\r\n let _x = this.getPrivate(\"x\");\r\n const parent = this.parent;\r\n if (parent) {\r\n if (x instanceof Percent) {\r\n return $utils.relativeToValue(x, parent.innerWidth()) + parent.get(\"paddingLeft\", 0);\r\n }\r\n else {\r\n if (!$type.isNumber(x)) {\r\n if (_x != null) {\r\n return _x;\r\n }\r\n else {\r\n return parent.get(\"paddingLeft\", this._display.x);\r\n }\r\n }\r\n else {\r\n return x;\r\n }\r\n }\r\n }\r\n return this._display.x;\r\n }\r\n /**\r\n * Returns element's actual Y position in pixels.\r\n *\r\n * @return Y (px)\r\n */\r\n y() {\r\n let _y = this.getPrivate(\"y\");\r\n if (_y != null) {\r\n return _y;\r\n }\r\n let y = this.get(\"y\");\r\n const parent = this.parent;\r\n if (parent) {\r\n if (y instanceof Percent) {\r\n return $utils.relativeToValue(y, parent.innerHeight()) + parent.get(\"paddingTop\", 0);\r\n }\r\n else {\r\n if (!$type.isNumber(y)) {\r\n if (_y != null) {\r\n return _y;\r\n }\r\n else {\r\n return parent.get(\"paddingTop\", this._display.y);\r\n }\r\n }\r\n else {\r\n return y;\r\n }\r\n }\r\n }\r\n return this._display.y;\r\n }\r\n _dispose() {\r\n super._dispose();\r\n this._display.dispose();\r\n this._removeTemplateField();\r\n this._removeParent(this.parent);\r\n this._root._removeFocusElement(this);\r\n const tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip.dispose();\r\n }\r\n this.markDirty();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n adjustedLocalBounds() {\r\n this._fixMinBounds(this._adjustedLocalBounds);\r\n return this._adjustedLocalBounds;\r\n }\r\n /**\r\n * Returns local coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\r\n localBounds() {\r\n return this._localBounds;\r\n }\r\n /**\r\n * Returns adjusted local coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\r\n bounds() {\r\n const bounds = this._adjustedLocalBounds;\r\n const x = this.x();\r\n const y = this.y();\r\n return { left: bounds.left + x, right: bounds.right + x, top: bounds.top + y, bottom: bounds.bottom + y };\r\n }\r\n /**\r\n * Returns global coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\r\n globalBounds() {\r\n const bounds = this.localBounds();\r\n const p0 = this.toGlobal({ x: bounds.left, y: bounds.top });\r\n const p1 = this.toGlobal({ x: bounds.right, y: bounds.top });\r\n const p2 = this.toGlobal({ x: bounds.right, y: bounds.bottom });\r\n const p3 = this.toGlobal({ x: bounds.left, y: bounds.bottom });\r\n return {\r\n left: Math.min(p0.x, p1.x, p2.x, p3.x),\r\n top: Math.min(p0.y, p1.y, p2.y, p3.y),\r\n right: Math.max(p0.x, p1.x, p2.x, p3.x),\r\n bottom: Math.max(p0.y, p1.y, p2.y, p3.y)\r\n };\r\n }\r\n _onShow(_duration) {\r\n }\r\n _onHide(_duration) {\r\n }\r\n /**\r\n * Plays initial reveal animation regardless if element is currently hidden\r\n * or visible.\r\n *\r\n * @param duration Duration of the animation in milliseconds\r\n * @param delay Delay showing of the element by X milliseconds\r\n * @return Promise\r\n */\r\n appear(duration, delay) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.hide(0);\r\n if (delay) {\r\n return new Promise((success, _error) => {\r\n this.setTimeout(() => {\r\n success(this.show(duration));\r\n }, delay);\r\n });\r\n }\r\n else {\r\n return this.show(duration);\r\n }\r\n });\r\n }\r\n /**\r\n * Shows currently hidden element and returns a `Promise` which completes\r\n * when all showing animations are finished.\r\n *\r\n * ```TypeScript\r\n * series.show().then(function(ev) {\r\n * console.log(\"Series is now fully visible\");\r\n * })\r\n * ```\r\n * ```JavaScript\r\n * series.show().then(function(ev) {\r\n * console.log(\"Series is now fully visible\");\r\n * })\r\n * ```\r\n *\r\n * @return Promise\r\n */\r\n show(duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._isShowing) {\r\n this._isHidden = false;\r\n this._isShowing = true;\r\n this._isHiding = false;\r\n if (this.states.lookup(\"default\").get(\"visible\")) {\r\n this.set(\"visible\", true);\r\n }\r\n this._onShow(duration);\r\n const animations = this.states.applyAnimate(\"default\", duration);\r\n yield waitForAnimations(animations);\r\n this._isShowing = false;\r\n }\r\n });\r\n }\r\n /**\r\n * Hides the element and returns a `Promise` which completes when all hiding\r\n * animations are finished.\r\n *\r\n * ```TypeScript\r\n * series.hide().then(function(ev) {\r\n * console.log(\"Series finished hiding\");\r\n * })\r\n * ```\r\n * ```JavaScript\r\n * series.hide().then(function(ev) {\r\n * console.log(\"Series finished hiding\");\r\n * })\r\n * ```\r\n *\r\n * @return Promise\r\n */\r\n hide(duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._isHiding && !this._isHidden) {\r\n this._isHiding = true;\r\n this._isShowing = false;\r\n let state = this.states.lookup(\"hidden\");\r\n if (!state) {\r\n state = this.states.create(\"hidden\", {\r\n \"opacity\": 0,\r\n \"visible\": false\r\n });\r\n }\r\n this._isHidden = true;\r\n this._onHide(duration);\r\n const animations = this.states.applyAnimate(\"hidden\", duration);\r\n yield waitForAnimations(animations);\r\n this._isHiding = false;\r\n }\r\n });\r\n }\r\n /**\r\n * Returns `true` if this element is currently hidden.\r\n *\r\n * @return Is hidden?\r\n */\r\n isHidden() {\r\n return this._isHidden;\r\n }\r\n /**\r\n * Returns `true` if this element is currently animating to a default state.\r\n *\r\n * @return Is showing?\r\n */\r\n isShowing() {\r\n return this._isShowing;\r\n }\r\n /**\r\n * Returns `true` if this element is currently animating to a hidden state.\r\n *\r\n * @return Is hiding?\r\n */\r\n isHiding() {\r\n return this._isHiding;\r\n }\r\n /**\r\n * Returns `true` if this element is currently hovered by a pointer.\r\n *\r\n * @return Is hovered?\r\n */\r\n isHover() {\r\n return this._display.hovering();\r\n }\r\n /**\r\n * Returns `true` if this element does currently have focus.\r\n *\r\n * @return Is focused?\r\n */\r\n isFocus() {\r\n return this._root.focused(this);\r\n }\r\n /**\r\n * Returns `true` if this element is currently being dragged.\r\n *\r\n * @return Is dragged?\r\n */\r\n isDragging() {\r\n return this._isDragging;\r\n }\r\n /**\r\n * Returns `false` if if either public or private setting `visible` is set\r\n * to `false`, or `forceHidden` is set to `true`.\r\n *\r\n * @return Visible?\r\n */\r\n isVisible() {\r\n if (this.get(\"visible\") && this.getPrivate(\"visible\") && !this.get(\"forceHidden\")) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Same as `isVisible()`, except it checks all ascendants, too.\r\n *\r\n * @since 5.2.7\r\n * @return Visible?\r\n */\r\n isVisibleDeep() {\r\n return this._parent ? (this._parent.isVisibleDeep() && this.isVisible()) : this.isVisible();\r\n }\r\n /**\r\n * Returns an actual opacity of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.2.11\r\n */\r\n compositeOpacity() {\r\n const opacity = this.get(\"opacity\", 1);\r\n return this._parent ? (this._parent.compositeOpacity() * opacity) : opacity;\r\n }\r\n /**\r\n * Returns an actual scale of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.9.2\r\n */\r\n compositeScale() {\r\n const scale = this.get(\"scale\", 1);\r\n return this._parent ? (this._parent.compositeScale() * scale) : scale;\r\n }\r\n /**\r\n * Returns an actual roation of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.9.2\r\n */\r\n compositeRotation() {\r\n const rotation = this.get(\"rotation\", 0);\r\n return this._parent ? (this._parent.compositeRotation() + rotation) : rotation;\r\n }\r\n /**\r\n * Returns width of this element in pixels.\r\n *\r\n * @return Width (px)\r\n */\r\n width() {\r\n let width = this.get(\"width\");\r\n let maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\"));\r\n let minWidth = this.get(\"minWidth\", this.getPrivate(\"minWidth\"));\r\n let privateWidth = this.getPrivate(\"width\");\r\n let w = 0;\r\n if ($type.isNumber(privateWidth)) {\r\n w = privateWidth;\r\n }\r\n else {\r\n if (width == null) {\r\n if (this._adjustedLocalBounds) {\r\n w = this._adjustedLocalBounds.right - this._adjustedLocalBounds.left;\r\n }\r\n }\r\n else {\r\n if (width instanceof Percent) {\r\n const parent = this.parent;\r\n if (parent) {\r\n w = parent.innerWidth() * width.value;\r\n }\r\n else {\r\n w = this._root.width() * width.value;\r\n }\r\n }\r\n else if ($type.isNumber(width)) {\r\n w = width;\r\n }\r\n }\r\n }\r\n if ($type.isNumber(minWidth)) {\r\n w = Math.max(minWidth, w);\r\n }\r\n if ($type.isNumber(maxWidth)) {\r\n w = Math.min(maxWidth, w);\r\n }\r\n return w;\r\n }\r\n /**\r\n * Returns maximum allowed width of this element in pixels.\r\n *\r\n * @return Maximum width (px)\r\n */\r\n maxWidth() {\r\n let maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\"));\r\n if ($type.isNumber(maxWidth)) {\r\n return maxWidth;\r\n }\r\n else {\r\n let width = this.get(\"width\");\r\n if ($type.isNumber(width)) {\r\n return width;\r\n }\r\n }\r\n const parent = this.parent;\r\n if (parent) {\r\n return parent.innerWidth();\r\n }\r\n return this._root.width();\r\n }\r\n /**\r\n * Returns maximum allowed height of this element in pixels.\r\n *\r\n * @return Maximum height (px)\r\n */\r\n maxHeight() {\r\n let maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\"));\r\n if ($type.isNumber(maxHeight)) {\r\n return maxHeight;\r\n }\r\n else {\r\n let height = this.get(\"height\");\r\n if ($type.isNumber(height)) {\r\n return height;\r\n }\r\n }\r\n const parent = this.parent;\r\n if (parent) {\r\n return parent.innerHeight();\r\n }\r\n return this._root.height();\r\n }\r\n /**\r\n * Returns height of this element in pixels.\r\n *\r\n * @return Height (px)\r\n */\r\n height() {\r\n let height = this.get(\"height\");\r\n let maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\"));\r\n let minHeight = this.get(\"minHeight\", this.getPrivate(\"minHeight\"));\r\n let privateHeight = this.getPrivate(\"height\");\r\n let h = 0;\r\n if ($type.isNumber(privateHeight)) {\r\n h = privateHeight;\r\n }\r\n else {\r\n if (height == null) {\r\n if (this._adjustedLocalBounds) {\r\n h = this._adjustedLocalBounds.bottom - this._adjustedLocalBounds.top;\r\n }\r\n }\r\n else {\r\n if (height instanceof Percent) {\r\n const parent = this.parent;\r\n if (parent) {\r\n h = parent.innerHeight() * height.value;\r\n }\r\n else {\r\n h = this._root.height() * height.value;\r\n }\r\n }\r\n else if ($type.isNumber(height)) {\r\n h = height;\r\n }\r\n }\r\n }\r\n if ($type.isNumber(minHeight)) {\r\n h = Math.max(minHeight, h);\r\n }\r\n if ($type.isNumber(maxHeight)) {\r\n h = Math.min(maxHeight, h);\r\n }\r\n return h;\r\n }\r\n _findStaticTemplate(f) {\r\n // templateField overrides template\r\n if (this._templateField && f(this._templateField)) {\r\n return this._templateField;\r\n }\r\n return super._findStaticTemplate(f);\r\n }\r\n _walkParents(f) {\r\n if (this._parent) {\r\n this._walkParent(f);\r\n }\r\n }\r\n _walkParent(f) {\r\n if (this._parent) {\r\n this._parent._walkParent(f);\r\n }\r\n f(this);\r\n }\r\n /**\r\n * Parent [[Container]] of this element.\r\n *\r\n * @return Parent container\r\n */\r\n get parent() {\r\n return this._parent;\r\n }\r\n _setParent(parent, updateChildren = false) {\r\n const prevParent = this._parent;\r\n if (parent !== prevParent) {\r\n this.markDirtyBounds();\r\n parent.markDirty();\r\n this._parent = parent;\r\n if (updateChildren) {\r\n this._removeParent(prevParent);\r\n if (parent) {\r\n this._addPercentageSizeChildren();\r\n this._addPercentagePositionChildren();\r\n }\r\n }\r\n this.markDirtyPosition();\r\n this._applyThemes();\r\n }\r\n }\r\n /**\r\n * Returns an instance of [[NumberFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return NumberFormatter instace\r\n */\r\n getNumberFormatter() {\r\n return this.get(\"numberFormatter\", this._root.numberFormatter);\r\n }\r\n /**\r\n * Returns an instance of [[DateFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return DateFormatter instace\r\n */\r\n getDateFormatter() {\r\n return this.get(\"dateFormatter\", this._root.dateFormatter);\r\n }\r\n /**\r\n * Returns an instance of [[DurationFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return DurationFormatter instace\r\n */\r\n getDurationFormatter() {\r\n return this.get(\"durationFormatter\", this._root.durationFormatter);\r\n }\r\n /**\r\n * Converts X/Y coordinate within this element to a global coordinate.\r\n *\r\n * @param point Local coordinate\r\n * @return Global coordinate\r\n */\r\n toGlobal(point) {\r\n return this._display.toGlobal(point);\r\n }\r\n /**\r\n * Converts global X/Y coordinate to a coordinate within this element.\r\n *\r\n * @param point Global coordinate\r\n * @return Local coordinate\r\n */\r\n toLocal(point) {\r\n return this._display.toLocal(point);\r\n }\r\n _getDownPoint() {\r\n const id = this._getDownPointId();\r\n if (id) {\r\n return this._downPoints[id];\r\n }\r\n }\r\n _getDownPointId() {\r\n if (this._downPoints) {\r\n return $object.keysOrdered(this._downPoints, (a, b) => {\r\n if (a > b) {\r\n return 1;\r\n }\r\n if (a < b) {\r\n return -1;\r\n }\r\n return 0;\r\n })[0];\r\n }\r\n }\r\n /**\r\n * Moves sprite to the end of the parent's children array.\r\n *\r\n * Depending on `layout` setting of the parten container, it may effect the\r\n * positioning or overlapping order of the elements.\r\n */\r\n toFront() {\r\n const parent = this.parent;\r\n if (parent) {\r\n parent.children.moveValue(this, parent.children.length - 1);\r\n }\r\n }\r\n /**\r\n * Moves sprite to the beginning of the parent's children array.\r\n *\r\n * Depending on `layout` setting of the parten container, it may effect the\r\n * positioning or overlapping order of the elements.\r\n */\r\n toBack() {\r\n const parent = this.parent;\r\n if (parent) {\r\n parent.children.moveValue(this, 0);\r\n }\r\n }\r\n}\r\nObject.defineProperty(Sprite, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Sprite\"\r\n});\r\nObject.defineProperty(Sprite, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Sprite.className])\r\n});\r\n","import { Sprite } from \"./Sprite\";\r\nimport { populateString } from \"../util/PopulateString\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $utils from \"../util/Utils\";\r\nimport { Disposer } from \"../util/Disposer\";\r\n/**\r\n * @ignore Text is an internal class. Use Label instead.\r\n */\r\nexport class Text extends Sprite {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"textStyle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeTextStyle()\r\n });\r\n Object.defineProperty(this, \"_display\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeText(\"\", this.textStyle)\r\n });\r\n Object.defineProperty(this, \"_textStyles\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\r\n \"textAlign\",\r\n \"fontFamily\",\r\n \"fontSize\",\r\n \"fontStyle\",\r\n \"fontWeight\",\r\n \"fontStyle\",\r\n \"fontVariant\",\r\n \"textDecoration\",\r\n \"shadowColor\",\r\n \"shadowBlur\",\r\n \"shadowOffsetX\",\r\n \"shadowOffsetY\",\r\n \"shadowOpacity\",\r\n // \"leading\",\r\n // \"letterSpacing\",\r\n \"lineHeight\",\r\n \"baselineRatio\",\r\n //\"padding\",\r\n // \"stroke\",\r\n // \"strokeThickness\",\r\n // \"trim\",\r\n // \"wordWrap\",\r\n \"direction\",\r\n \"textBaseline\",\r\n \"oversizedBehavior\",\r\n \"breakWords\",\r\n \"ellipsis\",\r\n \"minScale\",\r\n \"maxChars\"\r\n ]\r\n });\r\n Object.defineProperty(this, \"_originalScale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _updateBounds() {\r\n if (!this.get(\"text\")) {\r\n let newBounds = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n };\r\n this._adjustedLocalBounds = newBounds;\r\n }\r\n else {\r\n super._updateBounds();\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n this._display.clear();\r\n let textStyle = this.textStyle;\r\n if (this.isDirty(\"opacity\")) {\r\n let opacity = this.get(\"opacity\", 1);\r\n this._display.alpha = opacity;\r\n }\r\n if (this.isDirty(\"text\") || this.isDirty(\"populateText\")) {\r\n this._display.text = this._getText();\r\n this.markDirtyBounds();\r\n if (this.get(\"role\") == \"tooltip\") {\r\n this._root.updateTooltip(this);\r\n }\r\n }\r\n if (this.isPrivateDirty(\"tooltipElement\")) {\r\n const tooltipElement = this.getPrivate(\"tooltipElement\");\r\n if (tooltipElement) {\r\n this._disposers.push(new Disposer(() => {\r\n this._root._removeTooltipElement(this);\r\n }));\r\n }\r\n }\r\n if (this.isDirty(\"width\")) {\r\n textStyle.wordWrapWidth = this.width();\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"oversizedBehavior\")) {\r\n textStyle.oversizedBehavior = this.get(\"oversizedBehavior\", \"none\");\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"breakWords\")) {\r\n textStyle.breakWords = this.get(\"breakWords\", false);\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"ellipsis\")) {\r\n textStyle.ellipsis = this.get(\"ellipsis\");\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"ignoreFormatting\")) {\r\n textStyle.ignoreFormatting = this.get(\"ignoreFormatting\", false);\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"minScale\")) {\r\n textStyle.minScale = this.get(\"minScale\", 0);\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"fill\")) {\r\n let fill = this.get(\"fill\");\r\n if (fill) {\r\n textStyle.fill = fill;\r\n }\r\n }\r\n if (this.isDirty(\"fillOpacity\")) {\r\n let fillOpacity = this.get(\"fillOpacity\", 1);\r\n if (fillOpacity) {\r\n textStyle.fillOpacity = fillOpacity;\r\n }\r\n }\r\n if (this.isDirty(\"maxWidth\") || this.isPrivateDirty(\"maxWidth\")) {\r\n textStyle.maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\"));\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"maxHeight\") || this.isPrivateDirty(\"maxHeight\")) {\r\n textStyle.maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\"));\r\n this.markDirtyBounds();\r\n }\r\n $array.each(this._textStyles, (styleName) => {\r\n if (this._dirty[styleName]) {\r\n textStyle[styleName] = this.get(styleName);\r\n this.markDirtyBounds();\r\n }\r\n });\r\n textStyle[\"fontSize\"] = this.get(\"fontSize\");\r\n textStyle[\"fontFamily\"] = this.get(\"fontFamily\");\r\n this._display.style = textStyle;\r\n if (this.isDirty(\"role\") && this.get(\"role\") == \"tooltip\") {\r\n this._root.updateTooltip(this);\r\n }\r\n }\r\n _getText() {\r\n let text = this.get(\"text\", \"\");\r\n if (this.get(\"maxChars\")) {\r\n text = $utils.truncateTextWithEllipsis(text, this.get(\"maxChars\", 100000000), this.get(\"breakWords\"), this.get(\"ellipsis\"));\r\n }\r\n return this.get(\"populateText\") ? populateString(this, text) : text;\r\n }\r\n _getAccessibleText() {\r\n const ariaLabel = this.get(\"ariaLabel\");\r\n if (ariaLabel !== undefined) {\r\n return this.get(\"populateText\") ? populateString(this, ariaLabel) : ariaLabel;\r\n }\r\n return this._getText();\r\n }\r\n /**\r\n * Forces the text to be re-evaluated and re-populated.\r\n */\r\n markDirtyText() {\r\n this._display.text = this._getText();\r\n if (this.get(\"role\") == \"tooltip\") {\r\n this._root.updateTooltip(this);\r\n }\r\n this.markDirtyBounds();\r\n this.markDirty();\r\n }\r\n _setDataItem(dataItem) {\r\n super._setDataItem(dataItem);\r\n if (this.get(\"populateText\")) {\r\n this.markDirtyText();\r\n }\r\n }\r\n getNumberFormatter() {\r\n if (this.parent) {\r\n return this.parent.getNumberFormatter();\r\n }\r\n else {\r\n return super.getNumberFormatter();\r\n }\r\n }\r\n getDateFormatter() {\r\n if (this.parent) {\r\n return this.parent.getDateFormatter();\r\n }\r\n else {\r\n return super.getDateFormatter();\r\n }\r\n }\r\n getDurationFormatter() {\r\n if (this.parent) {\r\n return this.parent.getDurationFormatter();\r\n }\r\n else {\r\n return super.getDurationFormatter();\r\n }\r\n }\r\n}\r\nObject.defineProperty(Text, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Text\"\r\n});\r\nObject.defineProperty(Text, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Sprite.classNames.concat([Text.className])\r\n});\r\n","import { Graphics } from \"./Graphics\";\r\nimport * as $math from \"../util/Math\";\r\n/**\r\n * Draws a rectangle with a pointer.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class PointedRectangle extends Graphics {\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"pointerBaseWidth\") || this.isDirty(\"cornerRadius\") || this.isDirty(\"pointerLength\") || this.isDirty(\"pointerX\") || this.isDirty(\"pointerY\") || this.isDirty(\"width\") || this.isDirty(\"height\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n this.markDirtyBounds();\r\n let w = this.width();\r\n let h = this.height();\r\n if (w > 0 && h > 0) {\r\n let cr = this.get(\"cornerRadius\", 8);\r\n cr = $math.fitToRange(cr, 0, Math.min(w / 2, h / 2));\r\n let x = this.get(\"pointerX\", 0);\r\n let y = this.get(\"pointerY\", 0);\r\n let bwh = this.get(\"pointerBaseWidth\", 15) / 2;\r\n // corner coordinates\r\n // top left\r\n let xtl = 0;\r\n let ytl = 0;\r\n // top right\r\n let xtr = w;\r\n let ytr = 0;\r\n // bottom right\r\n let xbr = w;\r\n let ybr = h;\r\n // bottom left\r\n let xbl = 0;\r\n let ybl = h;\r\n // find stem base side: http://$math.stackexchange.com/questions/274712/calculate-on-which-side-of-straign-line-is-dot-located\r\n // d=(x−x1)(y2−y1)−(y−y1)(x2−x1)\r\n let d1 = (x - xtl) * (ybr - ytl) - (y - ytl) * (xbr - xtl);\r\n let d2 = (x - xbl) * (ytr - ybl) - (y - ybl) * (xtr - xbl);\r\n const display = this._display;\r\n // top\r\n display.moveTo(cr, 0);\r\n if (d1 > 0 && d2 > 0) {\r\n let stemX = Math.round($math.fitToRange(x, cr + bwh, w - bwh - cr));\r\n y = $math.fitToRange(y, -Infinity, 0);\r\n display.lineTo(stemX - bwh, 0);\r\n display.lineTo(x, y);\r\n display.lineTo(stemX + bwh, 0);\r\n }\r\n display.lineTo(w - cr, 0);\r\n display.arcTo(w, 0, w, cr, cr);\r\n // right\r\n if (d1 > 0 && d2 < 0) {\r\n let stemY = Math.round($math.fitToRange(y, cr + bwh, h - bwh - cr));\r\n x = $math.fitToRange(x, w, Infinity);\r\n display.lineTo(w, cr);\r\n display.lineTo(w, Math.max(stemY - bwh, cr));\r\n display.lineTo(x, y);\r\n display.lineTo(w, stemY + bwh);\r\n }\r\n display.lineTo(w, h - cr);\r\n display.arcTo(w, h, w - cr, h, cr);\r\n // bottom\r\n if (d1 < 0 && d2 < 0) {\r\n let stemX = Math.round($math.fitToRange(x, cr + bwh, w - bwh - cr));\r\n y = $math.fitToRange(y, h, Infinity);\r\n display.lineTo(w - cr, h);\r\n display.lineTo(stemX + bwh, h);\r\n display.lineTo(x, y);\r\n display.lineTo(stemX - bwh, h);\r\n }\r\n display.lineTo(cr, h);\r\n display.arcTo(0, h, 0, h - cr, cr);\r\n // left\r\n if (d1 < 0 && d2 > 0) {\r\n let stemY = Math.round($math.fitToRange(y, cr + bwh, h - cr - bwh));\r\n x = $math.fitToRange(x, -Infinity, 0);\r\n display.lineTo(0, h - cr);\r\n display.lineTo(0, stemY + bwh);\r\n display.lineTo(x, y);\r\n display.lineTo(0, Math.max(stemY - bwh, cr));\r\n }\r\n display.lineTo(0, cr);\r\n display.arcTo(0, 0, cr, 0, cr);\r\n display.closePath();\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(PointedRectangle, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"PointedRectangle\"\r\n});\r\nObject.defineProperty(PointedRectangle, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([PointedRectangle.className])\r\n});\r\n","import { MultiDisposer } from \"../util/Disposer\";\r\nimport { Label } from \"../render/Label\";\r\nimport { PointedRectangle } from \"../render/PointedRectangle\";\r\nimport { Container } from \"./Container\";\r\nimport { Percent } from \"../util/Percent\";\r\nimport { Color } from \"../util/Color\";\r\nimport * as $math from \"../util/Math\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $utils from \"../util/Utils\";\r\n/**\r\n * Creates a tooltip.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/tooltips/} for more info\r\n * @important\r\n */\r\nexport class Tooltip extends Container {\r\n constructor(root, settings, isReal, templates = []) {\r\n super(root, settings, isReal, templates);\r\n Object.defineProperty(this, \"_fx\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_fy\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_label\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_fillDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_strokeDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_labelDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_w\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_h\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_keepHoverDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_htmlContentHovered\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"tooltip\"]);\r\n super._afterNew();\r\n const background = this._setDefaultFn(\"background\", () => {\r\n return PointedRectangle.new(this._root, {});\r\n });\r\n background.set(\"themeTags\", [\"tooltip\", \"background\"]);\r\n this._label = this.children.push(Label.new(this._root, {}));\r\n this._disposers.push(this._label.events.on(\"boundschanged\", () => {\r\n this._updateBackground();\r\n }));\r\n this._disposers.push(this.on(\"bounds\", () => {\r\n this._updateBackground();\r\n }));\r\n this._updateTextColor();\r\n this._root.tooltipContainer.children.push(this);\r\n this.hide(0);\r\n this._disposers.push(this.label.onPrivate(\"htmlElement\", (htmlElement) => {\r\n if (htmlElement) {\r\n this._disposers.push($utils.addEventListener(htmlElement, \"pointerover\", (_ev) => {\r\n this._htmlContentHovered = true;\r\n }));\r\n this._disposers.push($utils.addEventListener(htmlElement, \"pointerout\", (_ev) => {\r\n this._htmlContentHovered = false;\r\n }));\r\n }\r\n }));\r\n this.on(\"visible\", (_ev) => {\r\n this._handleReaderAnnouncement();\r\n });\r\n this.label.events.on(\"dataitemchanged\", (_ev) => {\r\n this._handleReaderAnnouncement();\r\n });\r\n this._root._tooltips.push(this);\r\n }\r\n _handleReaderAnnouncement() {\r\n if (this.get(\"readerAnnounce\") && this.isVisibleDeep()) {\r\n this._root.readerAlert(this.label.getAccessibleText());\r\n }\r\n }\r\n /**\r\n * A [[Label]] element for the tooltip.\r\n *\r\n * @readonly\r\n * @return Label\r\n */\r\n get label() {\r\n return this._label;\r\n }\r\n /**\r\n * Permanently disposes the tooltip.\r\n */\r\n dispose() {\r\n super.dispose();\r\n $array.remove(this._root._tooltips, this);\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n if (this.isDirty(\"pointerOrientation\") || this.isPrivateDirty(\"minWidth\") || this.isPrivateDirty(\"minHeight\")) {\r\n this.get(\"background\")._markDirtyKey(\"width\");\r\n }\r\n const labelText = this.get(\"labelText\");\r\n if (labelText != null) {\r\n this.label.set(\"text\", this.get(\"labelText\"));\r\n }\r\n const labelHTML = this.get(\"labelHTML\");\r\n if (labelHTML != null) {\r\n this.label.set(\"html\", this.get(\"labelHTML\"));\r\n }\r\n const labelAriaLabel = this.get(\"labelAriaLabel\");\r\n if (labelAriaLabel != null) {\r\n this.label.set(\"ariaLabel\", this.get(\"labelAriaLabel\"));\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this.isDirty(\"pointTo\") || this.isDirty(\"pointerOrientation\")) {\r\n // can't compare to previous, as sometimes pointTo is set twice (when pointer moves, so the position won't be udpated)\r\n this._updateBackground();\r\n }\r\n if (this.isDirty(\"tooltipTarget\")) {\r\n this.updateBackgroundColor();\r\n }\r\n if (this.isDirty(\"keepTargetHover\")) {\r\n const keephover = this.get(\"keepTargetHover\");\r\n if (keephover) {\r\n const bg = this.get(\"background\");\r\n this._keepHoverDp = new MultiDisposer([\r\n bg.events.on(\"pointerover\", (_ev) => {\r\n let target = this.get(\"tooltipTarget\");\r\n if (target) {\r\n if (target.parent && target.parent.getPrivate(\"tooltipTarget\") == target) {\r\n target = target.parent;\r\n }\r\n target.hover();\r\n }\r\n }),\r\n bg.events.on(\"pointerout\", (_ev) => {\r\n let target = this.get(\"tooltipTarget\");\r\n if (target) {\r\n if (target.parent && target.parent.getPrivate(\"tooltipTarget\") == target) {\r\n target = target.parent;\r\n }\r\n if (!this._htmlContentHovered) {\r\n target.unhover();\r\n }\r\n }\r\n })\r\n ]);\r\n this.label.onPrivate(\"htmlElement\", (htmlElement) => {\r\n if (this._keepHoverDp && htmlElement) {\r\n this._keepHoverDp.disposers.push($utils.addEventListener(htmlElement, \"pointerleave\", (ev) => {\r\n const outEvent = this.root._renderer.getEvent(ev);\r\n bg.events.dispatch(\"pointerout\", {\r\n type: \"pointerout\",\r\n originalEvent: outEvent.event,\r\n point: outEvent.point,\r\n simulated: false,\r\n target: bg\r\n });\r\n }));\r\n }\r\n });\r\n }\r\n else {\r\n if (this._keepHoverDp) {\r\n this._keepHoverDp.dispose();\r\n this._keepHoverDp = undefined;\r\n }\r\n }\r\n }\r\n }\r\n _onShow() {\r\n super._onShow();\r\n this.updateBackgroundColor();\r\n }\r\n updateBackgroundColor() {\r\n let tooltipTarget = this.get(\"tooltipTarget\");\r\n const background = this.get(\"background\");\r\n let fill;\r\n let stroke;\r\n if (tooltipTarget && background) {\r\n fill = tooltipTarget.get(\"fill\");\r\n stroke = tooltipTarget.get(\"stroke\");\r\n if (fill == null) {\r\n fill = stroke;\r\n }\r\n if (this.get(\"getFillFromSprite\")) {\r\n if (this._fillDp) {\r\n this._fillDp.dispose();\r\n }\r\n if (fill != null) {\r\n background.set(\"fill\", fill);\r\n }\r\n this._fillDp = tooltipTarget.on(\"fill\", (fill) => {\r\n if (fill != null) {\r\n background.set(\"fill\", fill);\r\n this._updateTextColor(fill);\r\n }\r\n });\r\n this._disposers.push(this._fillDp);\r\n }\r\n if (this.get(\"getStrokeFromSprite\")) {\r\n if (this._strokeDp) {\r\n this._strokeDp.dispose();\r\n }\r\n if (fill != null) {\r\n background.set(\"stroke\", fill);\r\n }\r\n this._strokeDp = tooltipTarget.on(\"fill\", (fill) => {\r\n if (fill != null) {\r\n background.set(\"stroke\", fill);\r\n }\r\n });\r\n this._disposers.push(this._strokeDp);\r\n }\r\n if (this.get(\"getLabelFillFromSprite\")) {\r\n if (this._labelDp) {\r\n this._labelDp.dispose();\r\n }\r\n if (fill != null) {\r\n this.label.set(\"fill\", fill);\r\n }\r\n this._labelDp = tooltipTarget.on(\"fill\", (fill) => {\r\n if (fill != null) {\r\n this.label.set(\"fill\", fill);\r\n }\r\n });\r\n this._disposers.push(this._labelDp);\r\n }\r\n }\r\n this._updateTextColor(fill);\r\n }\r\n _updateTextColor(fill) {\r\n if (this.get(\"autoTextColor\")) {\r\n if (fill == null) {\r\n fill = this.get(\"background\").get(\"fill\");\r\n }\r\n if (fill == null) {\r\n fill = this._root.interfaceColors.get(\"background\");\r\n }\r\n if (fill instanceof Color) {\r\n this.label.set(\"fill\", Color.alternative(fill, this._root.interfaceColors.get(\"alternativeText\"), this._root.interfaceColors.get(\"text\")));\r\n }\r\n }\r\n }\r\n _setDataItem(dataItem) {\r\n super._setDataItem(dataItem);\r\n this.label._setDataItem(dataItem);\r\n }\r\n _updateBackground() {\r\n super.updateBackground();\r\n const parent = this._root.container;\r\n if (parent) {\r\n let cw = 0.5;\r\n let ch = 0.5;\r\n let centerX = this.get(\"centerX\");\r\n if (centerX instanceof Percent) {\r\n cw = centerX.value;\r\n }\r\n let centerY = this.get(\"centerY\");\r\n if (centerY instanceof Percent) {\r\n ch = centerY.value;\r\n }\r\n let parentW = parent.width();\r\n let parentH = parent.height();\r\n let tooltipContainer = this.parent;\r\n let xx = 0;\r\n let yy = 0;\r\n if (tooltipContainer) {\r\n xx = tooltipContainer.x();\r\n yy = tooltipContainer.y();\r\n const layerMargin = tooltipContainer.get(\"layerMargin\");\r\n if (layerMargin) {\r\n xx += layerMargin.left || 0;\r\n yy += layerMargin.top || 0;\r\n parentW += (layerMargin.left || 0) + (layerMargin.right || 0);\r\n parentH += (layerMargin.top || 0) + (layerMargin.bottom || 0);\r\n }\r\n }\r\n const bounds = this.get(\"bounds\", { left: -xx, top: -yy, right: parentW - xx, bottom: parentH - yy });\r\n this._updateBounds();\r\n let w = this.width();\r\n let h = this.height();\r\n // use old w and h,as when tooltip is hidden, these are 0 and unneeded animation happens\r\n if (w === 0) {\r\n w = this._w;\r\n }\r\n if (h === 0) {\r\n h = this._h;\r\n }\r\n let pointTo = this.get(\"pointTo\", { x: parentW / 2, y: parentH / 2 });\r\n let x = pointTo.x;\r\n let y = pointTo.y;\r\n let pointerOrientation = this.get(\"pointerOrientation\");\r\n let background = this.get(\"background\");\r\n let pointerLength = 0;\r\n let bgStrokeSizeY = 0;\r\n let bgStrokeSizeX = 0;\r\n if (background instanceof PointedRectangle) {\r\n pointerLength = background.get(\"pointerLength\", 0);\r\n bgStrokeSizeY = background.get(\"strokeWidth\", 0) / 2;\r\n bgStrokeSizeX = bgStrokeSizeY;\r\n background.set(\"width\", w);\r\n background.set(\"height\", h);\r\n }\r\n let pointerX = 0;\r\n let pointerY = 0;\r\n let boundsW = bounds.right - bounds.left;\r\n let boundsH = bounds.bottom - bounds.top;\r\n // horizontal\r\n if (pointerOrientation == \"horizontal\" || pointerOrientation == \"left\" || pointerOrientation == \"right\") {\r\n bgStrokeSizeY = 0;\r\n if (pointerOrientation == \"horizontal\") {\r\n if (x > bounds.left + boundsW / 2) {\r\n x -= (w * (1 - cw) + pointerLength);\r\n bgStrokeSizeX *= -1;\r\n }\r\n else {\r\n x += (w * cw + pointerLength);\r\n }\r\n }\r\n else if (pointerOrientation == \"left\") {\r\n x += (w * (1 - cw) + pointerLength);\r\n }\r\n else {\r\n x -= (w * cw + pointerLength);\r\n bgStrokeSizeX *= -1;\r\n }\r\n }\r\n // vertical pointer\r\n else {\r\n bgStrokeSizeX = 0;\r\n if (pointerOrientation == \"vertical\") {\r\n if (y > bounds.top + h / 2 + pointerLength) {\r\n y -= (h * (1 - ch) + pointerLength);\r\n }\r\n else {\r\n y += (h * ch + pointerLength);\r\n bgStrokeSizeY *= -1;\r\n }\r\n }\r\n else if (pointerOrientation == \"down\") {\r\n y -= (h * (1 - ch) + pointerLength);\r\n }\r\n else {\r\n y += (h * ch + pointerLength);\r\n bgStrokeSizeY *= -1;\r\n }\r\n }\r\n x = $math.fitToRange(x, bounds.left + w * cw, bounds.left + boundsW - w * (1 - cw)) + bgStrokeSizeX;\r\n y = $math.fitToRange(y, bounds.top + h * ch, bounds.top + boundsH - h * (1 - ch)) - bgStrokeSizeY;\r\n pointerX = pointTo.x - x + w * cw + bgStrokeSizeX;\r\n pointerY = pointTo.y - y + h * ch - bgStrokeSizeY;\r\n this._fx = x;\r\n this._fy = y;\r\n const animationDuration = this.get(\"animationDuration\", 0);\r\n if (animationDuration > 0 && this.get(\"visible\") && this.get(\"opacity\") > 0.1) {\r\n const animationEasing = this.get(\"animationEasing\");\r\n this.animate({ key: \"x\", to: x, duration: animationDuration, easing: animationEasing });\r\n this.animate({ key: \"y\", to: y, duration: animationDuration, easing: animationEasing });\r\n }\r\n else {\r\n this.set(\"x\", x);\r\n this.set(\"y\", y);\r\n }\r\n if (background instanceof PointedRectangle) {\r\n background.set(\"pointerX\", pointerX);\r\n background.set(\"pointerY\", pointerY);\r\n }\r\n if (w > 0) {\r\n this._w = w;\r\n }\r\n if (h > 0) {\r\n this._h = h;\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Tooltip, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Tooltip\"\r\n});\r\nObject.defineProperty(Tooltip, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Tooltip.className])\r\n});\r\n","import { Layout, eachChildren } from \"./Layout\";\r\nimport * as $type from \"../util/Type\";\r\nimport { Percent } from \"../util/Percent\";\r\n/**\r\n * A vertical children layout for [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Layout} for more info\r\n */\r\nexport class VerticalLayout extends Layout {\r\n /**\r\n * @ignore\r\n */\r\n updateContainer(container) {\r\n let paddingTop = container.get(\"paddingTop\", 0);\r\n let availableHeight = container.innerHeight();\r\n let totalPercent = 0;\r\n eachChildren(container, (child) => {\r\n if (child.isVisible()) {\r\n if (child.get(\"position\") == \"relative\") {\r\n let childHeight = child.get(\"height\");\r\n if (childHeight instanceof Percent) {\r\n totalPercent += childHeight.value;\r\n let h = availableHeight * childHeight.value;\r\n let minHeight = child.get(\"minHeight\", child.getPrivate(\"minHeight\", -Infinity));\r\n if (minHeight > h) {\r\n availableHeight -= minHeight;\r\n totalPercent -= childHeight.value;\r\n }\r\n let maxHeight = child.get(\"maxHeight\", child.getPrivate(\"maxHeight\", Infinity));\r\n if (h > maxHeight) {\r\n availableHeight -= maxHeight;\r\n totalPercent -= childHeight.value;\r\n }\r\n }\r\n else {\r\n if (!$type.isNumber(childHeight)) {\r\n childHeight = child.height();\r\n }\r\n availableHeight -= childHeight + child.get(\"marginTop\", 0) + child.get(\"marginBottom\", 0);\r\n }\r\n }\r\n }\r\n });\r\n if (availableHeight <= 0 || availableHeight == Infinity) {\r\n availableHeight = .1;\r\n }\r\n //if (availableHeight > 0) {\r\n eachChildren(container, (child) => {\r\n if (child.isVisible()) {\r\n if (child.get(\"position\") == \"relative\") {\r\n let childHeight = child.get(\"height\");\r\n if (childHeight instanceof Percent) {\r\n let privateHeight = availableHeight * childHeight.value / totalPercent - child.get(\"marginTop\", 0) - child.get(\"marginBottom\", 0);\r\n let minHeight = child.get(\"minHeight\", child.getPrivate(\"minHeight\", -Infinity));\r\n let maxHeight = child.get(\"maxHeight\", child.getPrivate(\"maxHeight\", Infinity));\r\n privateHeight = Math.min(Math.max(minHeight, privateHeight), maxHeight);\r\n child.setPrivate(\"height\", privateHeight);\r\n }\r\n else {\r\n if (child._prevSettings.height instanceof Percent) {\r\n child.setPrivate(\"height\", undefined);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n //}\r\n let prevY = paddingTop;\r\n eachChildren(container, (child) => {\r\n if (child.get(\"position\") == \"relative\") {\r\n if (child.isVisible()) {\r\n let bounds = child.adjustedLocalBounds();\r\n let marginTop = child.get(\"marginTop\", 0);\r\n let top = bounds.top;\r\n let bottom = bounds.bottom;\r\n let maxHeight = child.get(\"maxHeight\");\r\n if (maxHeight) {\r\n if (bottom - top > maxHeight) {\r\n bottom = top + maxHeight;\r\n }\r\n }\r\n let marginBottom = child.get(\"marginBottom\", 0);\r\n let y = prevY + marginTop - top;\r\n child.setPrivate(\"y\", y);\r\n prevY = y + bottom + marginBottom;\r\n }\r\n else {\r\n child.setPrivate(\"y\", undefined);\r\n }\r\n }\r\n });\r\n }\r\n}\r\nObject.defineProperty(VerticalLayout, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"VerticalLayout\"\r\n});\r\nObject.defineProperty(VerticalLayout, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Layout.classNames.concat([VerticalLayout.className])\r\n});\r\n","/**\r\n * From https://github.com/pixijs/pixi.js/blob/3dd0ff9a935f0bc13a09aefff9eb2872f02c51b9/packages/canvas/canvas-renderer/src/utils/mapCanvasBlendModesToPixi.ts#L13\r\n */\r\nexport var BlendMode;\r\n(function (BlendMode) {\r\n BlendMode[\"ADD\"] = \"lighter\";\r\n BlendMode[\"COLOR\"] = \"color\";\r\n BlendMode[\"COLOR_BURN\"] = \"color-burn\";\r\n BlendMode[\"COLOR_DODGE\"] = \"color-dodge\";\r\n BlendMode[\"DARKEN\"] = \"darken\";\r\n BlendMode[\"DIFFERENCE\"] = \"difference\";\r\n BlendMode[\"DST_OVER\"] = \"destination-over\";\r\n BlendMode[\"EXCLUSION\"] = \"exclusion\";\r\n BlendMode[\"HARD_LIGHT\"] = \"hard-light\";\r\n BlendMode[\"HUE\"] = \"hue\";\r\n BlendMode[\"LIGHTEN\"] = \"lighten\";\r\n BlendMode[\"LUMINOSITY\"] = \"luminosity\";\r\n BlendMode[\"MULTIPLY\"] = \"multiply\";\r\n BlendMode[\"NORMAL\"] = \"source-over\";\r\n BlendMode[\"OVERLAY\"] = \"overlay\";\r\n BlendMode[\"SATURATION\"] = \"saturation\";\r\n BlendMode[\"SCREEN\"] = \"screen\";\r\n BlendMode[\"SOFT_LIGHT\"] = \"soft-light\";\r\n BlendMode[\"SRC_ATOP\"] = \"source-atop\";\r\n BlendMode[\"XOR\"] = \"xor\";\r\n})(BlendMode || (BlendMode = {}));\r\n","import { __awaiter } from \"tslib\";\r\nimport { Percent } from \"./Percent\";\r\nimport { Color } from \"./Color\";\r\nimport { EventDispatcher } from \"./EventDispatcher\";\r\nimport * as $object from \"./Object\";\r\n/**\r\n * @ignore\r\n */\r\nexport function waitForAnimations(animations) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (animations !== undefined) {\r\n const promises = [];\r\n $object.each(animations, (_, animation) => {\r\n promises.push(animation.waitForStop());\r\n });\r\n yield Promise.all(promises);\r\n }\r\n });\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function normalize(value, min, max) {\r\n if (min === max) {\r\n return 0;\r\n }\r\n else {\r\n return Math.min(Math.max((value - min) * (1 / (max - min)), 0), 1);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function range(diff, from, to) {\r\n return from + (diff * (to - from));\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function defaultInterpolate(diff, from, to) {\r\n if (diff >= 1) {\r\n return to;\r\n }\r\n else {\r\n return from;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function percentInterpolate(diff, from, to) {\r\n return new Percent(range(diff, from.percent, to.percent));\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function colorInterpolate(diff, from, to) {\r\n return Color.interpolate(diff, from, to);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getInterpolate(from, to) {\r\n if (typeof from === \"number\" && typeof to === \"number\") {\r\n return range;\r\n }\r\n if (from instanceof Percent && to instanceof Percent) {\r\n return percentInterpolate;\r\n }\r\n if (from instanceof Color && to instanceof Color) {\r\n return colorInterpolate;\r\n }\r\n return defaultInterpolate;\r\n}\r\nexport var AnimationState;\r\n(function (AnimationState) {\r\n AnimationState[AnimationState[\"Stopped\"] = 0] = \"Stopped\";\r\n AnimationState[AnimationState[\"Playing\"] = 1] = \"Playing\";\r\n AnimationState[AnimationState[\"Paused\"] = 2] = \"Paused\";\r\n})(AnimationState || (AnimationState = {}));\r\n/**\r\n * @ignore\r\n */\r\nexport class AnimationTime {\r\n constructor(entity, duration) {\r\n Object.defineProperty(this, \"_entity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_duration\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_playingDuration\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_startingTime\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_current\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_from\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_to\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new EventDispatcher()\r\n });\r\n Object.defineProperty(this, \"easing\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._entity = entity;\r\n this._duration = duration;\r\n }\r\n _stopEvent() {\r\n const type = \"stopped\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n }\r\n _runAnimation(currentTime) {\r\n if (this._playingDuration !== null) {\r\n if (this._startingTime === null) {\r\n this._startingTime = currentTime;\r\n return AnimationState.Playing;\r\n }\r\n else {\r\n const diff = (currentTime - this._startingTime) / this._playingDuration;\r\n if (diff >= 1) {\r\n this._playingDuration = null;\r\n this._startingTime = null;\r\n this._from = this._to;\r\n this._current = this._to;\r\n this._entity.markDirty();\r\n this._stopEvent();\r\n const type = \"ended\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n return AnimationState.Stopped;\r\n }\r\n else {\r\n this._current = range(diff, this._from, this._to);\r\n this._entity.markDirty();\r\n const type = \"progress\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, progress: diff });\r\n }\r\n return AnimationState.Playing;\r\n }\r\n }\r\n }\r\n else {\r\n return AnimationState.Stopped;\r\n }\r\n }\r\n _play() {\r\n this._from = this._current;\r\n if (this._playingDuration === null) {\r\n this._entity._root._addAnimation(this);\r\n const type = \"started\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n }\r\n else {\r\n this._startingTime = null;\r\n }\r\n this._playingDuration = Math.abs(this._to - this._from) * this._duration;\r\n }\r\n get duration() {\r\n return this._duration;\r\n }\r\n set duration(value) {\r\n if (this._duration !== value) {\r\n this._duration = value;\r\n if (value === 0) {\r\n this.jumpTo(this._to);\r\n }\r\n else if (this._current !== this._to) {\r\n this._play();\r\n }\r\n }\r\n }\r\n get current() {\r\n if (this.easing) {\r\n return this.easing(this._current);\r\n }\r\n else {\r\n return this._current;\r\n }\r\n }\r\n stop() {\r\n this.jumpTo(this._current);\r\n }\r\n jumpTo(value) {\r\n if (this._current !== value) {\r\n this._entity.markDirty();\r\n }\r\n if (this._playingDuration !== null) {\r\n this._stopEvent();\r\n }\r\n this._playingDuration = null;\r\n this._startingTime = null;\r\n this._current = value;\r\n this._from = value;\r\n this._to = value;\r\n }\r\n tweenTo(value) {\r\n if (this._current === value || this._duration === 0) {\r\n this.jumpTo(value);\r\n }\r\n else {\r\n if (this._to !== value) {\r\n this._to = value;\r\n this._play();\r\n }\r\n }\r\n }\r\n}\r\n/*export class AnimationValue extends AnimationTime {\r\n public _min: number;\r\n public _max: number;\r\n\r\n constructor(entity: Entity, duration: number, min: number, max: number) {\r\n super(entity, duration);\r\n this._min = min;\r\n this._max = max;\r\n }\r\n\r\n public get min(): number {\r\n return this._min;\r\n }\r\n\r\n public set min(value: number) {\r\n if (this._min !== value) {\r\n this._min = value;\r\n this._entity.markDirty();\r\n }\r\n }\r\n\r\n public get max(): number {\r\n return this._max;\r\n }\r\n\r\n public set max(value: number) {\r\n if (this._max !== value) {\r\n this._max = value;\r\n this._entity.markDirty();\r\n }\r\n }\r\n\r\n public currentValue(): number {\r\n return range(super.currentTime(), this._min, this._max);\r\n }\r\n\r\n public jumpToValue(value: number) {\r\n super.jumpToTime(normalize(value, this._min, this._max));\r\n }\r\n\r\n public tweenToValue(value: number) {\r\n super.tweenToTime(normalize(value, this._min, this._max));\r\n }\r\n}\r\n*/\r\n","import * as $type from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Searches `array` for `value`.\r\n *\r\n * Returns -1 if not found.\r\n *\r\n * @param array Source array\r\n * @param value Value to search\r\n * @returns Index\r\n */\r\nexport function indexOf(array, value) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n // TODO handle NaN\r\n if (array[i] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls `test` for each element in `array`.\r\n *\r\n * If `test` returns `true` then it immediately returns `true`.\r\n *\r\n * If `test` returns `false` for all of the elements in `array` then it returns `false`.\r\n *\r\n * @param array Source array\r\n * @param test Function which is called on each element\r\n * @returns Whether `test` returned true or not\r\n */\r\nexport function any(array, test) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n if (test(array[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Calls `fn` function for every member of array and returns a new array out\r\n * of all outputs.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n * @returns New array\r\n */\r\nexport function map(array, fn) {\r\n const length = array.length;\r\n const output = new Array(length);\r\n for (let i = 0; i < length; ++i) {\r\n output[i] = fn(array[i], i);\r\n }\r\n return output;\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function each(array, fn) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n fn(array[i], i);\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array in reverse order and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachReverse(array, fn) {\r\n let i = array.length;\r\n while (i > 0) {\r\n --i;\r\n fn(array[i], i);\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * If `fn` call evaluates to `false`, further iteration is cancelled.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue(array, fn) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n if (!fn(array[i], i)) {\r\n break;\r\n }\r\n }\r\n}\r\n/**\r\n * Shifts an item at `index` towards beginning of the array.\r\n *\r\n * @param array Source array\r\n * @param index Target element index\r\n */\r\nexport function shiftLeft(array, index) {\r\n const length = array.length;\r\n for (let i = index; i < length; ++i) {\r\n array[i - index] = array[i];\r\n }\r\n array.length = length - index;\r\n}\r\n/**\r\n * Returns the last item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function last(array) {\r\n const length = array.length;\r\n return length ? array[length - 1] : undefined;\r\n}\r\n/**\r\n * Returns the first item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function first(array) {\r\n return array[0];\r\n}\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * Caps `index` to be between `0` and `array.length`\r\n *\r\n * @param array Source array\r\n * @param element Item to insert\r\n * @param array Index to insert item at\r\n */\r\nexport function insert(array, element, index) {\r\n //if (array) {\r\n index = Math.max(0, Math.min(index, array.length));\r\n array.splice(index, 0, element);\r\n //}\r\n}\r\n/**\r\n * Removes all copies of `element` from `array` (if they exist) and then\r\n * inserts `element` at `index`.\r\n *\r\n * @param array Source array\r\n * @param element Item\r\n * @param array Index to move item to\r\n */\r\nexport function setIndex(array, element, index) {\r\n remove(array, element);\r\n insert(array, element, index);\r\n}\r\n/**\r\n * Pushes all of the elements from `input` into `array`.\r\n *\r\n * @param array Output array\r\n * @param input Input array\r\n */\r\nexport function pushAll(array, input) {\r\n const length = input.length;\r\n for (let i = 0; i < length; ++i) {\r\n array.push(input[i]);\r\n }\r\n}\r\n/**\r\n * Removes `element` from `array`.\r\n *\r\n * If there are multiple copies of `element`, they are all removed.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n */\r\nexport function remove(array, element) {\r\n let found = false;\r\n let index = 0;\r\n for (;;) {\r\n index = array.indexOf(element, index);\r\n if (index === -1) {\r\n return found;\r\n }\r\n else {\r\n found = true;\r\n array.splice(index, 1);\r\n }\r\n }\r\n}\r\nexport function removeFirst(array, element) {\r\n let index = array.indexOf(element);\r\n if (index !== -1) {\r\n array.splice(index, 1);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Adds an `element` to `array`.\r\n *\r\n * If array already contains and item like this, it is removed before adding\r\n * it again.\r\n *\r\n * Optionally `toIndex` can be specified to add element at specific index.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to move item to\r\n */\r\nexport function move(array, element, toIndex) {\r\n // @todo this implementation must be the same as the List.moveValue method\r\n // @todo don't do anything if the desired index is the same as the current index\r\n let index = indexOf(array, element);\r\n // @todo remove all old values rather than only the first ?\r\n if (index !== -1) {\r\n removeIndex(array, index);\r\n }\r\n if (toIndex == null) {\r\n array.push(element);\r\n }\r\n else {\r\n insertIndex(array, toIndex, element);\r\n }\r\n}\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to add item at\r\n */\r\nexport function add(array, element, index) {\r\n // Append to the end if index is not set\r\n if (!$type.isNumber(index)) {\r\n array.push(element);\r\n }\r\n // Add to the beginning of array if index is 0\r\n else if (index === 0) {\r\n array.unshift(element);\r\n }\r\n // Add to indicated place if index is set\r\n else {\r\n array.splice(index, 0, element);\r\n }\r\n}\r\n/**\r\n * Pushes `element` into `array` if it doesn't already exist.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n */\r\nexport function pushOne(array, element) {\r\n if (array.indexOf(element) === -1) {\r\n array.push(element);\r\n }\r\n}\r\n/**\r\n * Removes `element` from `array` (if it exists) and then inserts `element` at\r\n * `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n * @param array Index to move item to\r\n */\r\nexport function replace(array, element, index) {\r\n // check if exists\r\n let ind = array.indexOf(element);\r\n // remove if exists\r\n if (ind !== -1) {\r\n array.splice(ind, 1);\r\n }\r\n // add to end if index is not set\r\n if (!$type.isNumber(index)) {\r\n array.push(element);\r\n }\r\n // add to indicated place if index is set\r\n else {\r\n array.splice(index, 0, element);\r\n }\r\n}\r\n/**\r\n * Wraps `input` in an array, if it isn't already an array.\r\n *\r\n * @param input Source value\r\n * @return An array\r\n */\r\nexport function toArray(input) {\r\n if (Array.isArray(input)) {\r\n return input;\r\n }\r\n else {\r\n return [input];\r\n }\r\n}\r\n/**\r\n * Returns `true` if `element` exists in `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to search for\r\n * @returns Item in array?\r\n */\r\nexport function has(array, element) {\r\n return indexOf(array, element) !== -1;\r\n}\r\n/**\r\n * Returns a shallow copy of `array`.\r\n *\r\n * @param array Source array\r\n * @returns Copy of the array\r\n */\r\nexport function copy(array) {\r\n const length = array.length;\r\n // It's faster to create the array with a pre-defined length\r\n const output = new Array(length);\r\n for (let i = 0; i < length; ++i) {\r\n // Because the array has a pre-defined length, we have to assign rather than push\r\n // This is also faster than pushing\r\n output[i] = array[i];\r\n }\r\n return output;\r\n}\r\n/**\r\n * Returns a copy of `array` which contains all the elements between `start`\r\n * and `end`. (including `start` and excluding `end`)\r\n *\r\n * If `end` is not provided, it defaults to `array.length`.\r\n *\r\n * @param array Source array\r\n * @param start Start index\r\n * @param end End index\r\n * @returns Part of the array\r\n */\r\nexport function slice(array, start, end = array.length) {\r\n const output = new Array(end - start);\r\n for (let i = start; i < end; ++i) {\r\n output[i - start] = array[i];\r\n }\r\n return output;\r\n}\r\n/**\r\n * Inserts a value into array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n * @param value Value to insert\r\n */\r\nexport function insertIndex(array, index, value) {\r\n array.splice(index, 0, value);\r\n}\r\n/**\r\n * Removes a value from array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n */\r\nexport function removeIndex(array, index) {\r\n array.splice(index, 1);\r\n}\r\n/**\r\n * Searches the array using custom function and returns index of the item if\r\n * found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns -1.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\r\nexport function findIndex(array, matches) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n if (matches(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * This is the same as `findIndex` except it searches from right to left.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\r\nexport function findIndexReverse(array, matches) {\r\n let i = array.length;\r\n while (i > 0) {\r\n --i;\r\n if (matches(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function find(array, matches) {\r\n const index = findIndex(array, matches);\r\n if (index !== -1) {\r\n return array[index];\r\n }\r\n}\r\n/**\r\n * This is the same as `find` except it searches from right to left.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function findReverse(array, matches) {\r\n const index = findIndexReverse(array, matches);\r\n if (index !== -1) {\r\n return array[index];\r\n }\r\n}\r\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If value\r\n * is not `undefined`, it returns it.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function findMap(array, matches) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n const value = matches(array[i], i);\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function shuffle(array) {\r\n // https://stackoverflow.com/a/2450976/449477\r\n let currentIndex = array.length, temporaryValue, randomIndex;\r\n // While there remain elements to shuffle...\r\n while (0 !== currentIndex) {\r\n // Pick a remaining element...\r\n randomIndex = Math.floor(Math.random() * currentIndex);\r\n currentIndex -= 1;\r\n // And swap it with the current element.\r\n temporaryValue = array[currentIndex];\r\n array[currentIndex] = array[randomIndex];\r\n array[randomIndex] = temporaryValue;\r\n }\r\n}\r\n/**\r\n * Orders an array using specific `ordering` function and returns right-most index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @returns Result of the search\r\n */\r\nexport function getSortedIndex(array, ordering) {\r\n let start = 0;\r\n let end = array.length;\r\n let found = false;\r\n while (start < end) {\r\n // TODO is this faster/slower than using Math.floor ?\r\n const pivot = (start + end) >> 1;\r\n const order = ordering(array[pivot]);\r\n // less\r\n if (order < 0) {\r\n start = pivot + 1;\r\n // equal\r\n }\r\n else if (order === 0) {\r\n found = true;\r\n start = pivot + 1;\r\n // more\r\n }\r\n else {\r\n end = pivot;\r\n }\r\n }\r\n return {\r\n found: found,\r\n index: (found ? start - 1 : start)\r\n };\r\n}\r\n/**\r\n * Orders an array using specific `ordering` function and returns left-most index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @returns Result of the search\r\n */\r\nexport function getFirstSortedIndex(array, ordering) {\r\n let start = 0;\r\n let end = array.length;\r\n let found = false;\r\n while (start < end) {\r\n // TODO is this faster/slower than using Math.floor ?\r\n const pivot = (start + end) >> 1;\r\n const order = ordering(array[pivot]);\r\n // less\r\n if (order < 0) {\r\n start = pivot + 1;\r\n // equal\r\n }\r\n else if (order === 0) {\r\n found = true;\r\n end = pivot;\r\n // more\r\n }\r\n else {\r\n end = pivot;\r\n }\r\n }\r\n return {\r\n found: found,\r\n index: start\r\n };\r\n}\r\nexport function keepIf(array, keep) {\r\n let i = array.length;\r\n while (i > 0) {\r\n --i;\r\n if (!keep(array[i])) {\r\n array.splice(i, 1);\r\n }\r\n }\r\n}\r\n","import { range } from \"./Animation\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * @ignore\r\n */\r\nfunction string2hex(string) {\r\n //string = cssColorNames[string.toLowerCase()] || string;\r\n if (string[0] === \"#\") {\r\n string = string.substr(1);\r\n }\r\n if (string.length == 3) {\r\n string = string[0].repeat(2) + string[1].repeat(2) + string[2].repeat(2);\r\n }\r\n return parseInt(string, 16);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function rgba2hex(color) {\r\n color = color.replace(/[ ]/g, \"\");\r\n // Init\r\n let matches = color.match(/^rgb\\(([0-9]*),([0-9]*),([0-9]*)\\)/i);\r\n // Try rgb() format\r\n if (matches) {\r\n matches.push(\"1\");\r\n }\r\n else {\r\n matches = color.match(/^rgba\\(([0-9]*),([0-9]*),([0-9]*),([.0-9]*)\\)/i);\r\n if (!matches) {\r\n return 0x000000;\r\n }\r\n }\r\n let hex = \"\";\r\n for (let i = 1; i <= 3; i++) {\r\n let val = parseInt(matches[i]).toString(16);\r\n if (val.length == 1) {\r\n val = \"0\" + val;\r\n }\r\n hex += val;\r\n }\r\n return string2hex(hex);\r\n}\r\n/**\r\n * Returns a new [[Color]] object base on input.\r\n *\r\n * Accepts parameters in CSS hex or rgb/rtba strings, or hex numbers.\r\n *\r\n * * `\"#f00\"`\r\n * * `\"#ff0000\"`\r\n * * `\"rgb(255, 0, 0)\"`\r\n * * `\"rgba(255, 0, 0, 1)\"`\r\n * * `0xff0000`\r\n *\r\n * @param input Input color\r\n * @return Color\r\n */\r\nexport function color(input) {\r\n return Color.fromAny(input);\r\n}\r\n/**\r\n * Wherever color needs to be specified in amCharts 5, `Color` object needs to\r\n * be used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/} for more info\r\n * @important\r\n */\r\nexport class Color {\r\n constructor(hex) {\r\n Object.defineProperty(this, \"_hex\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._hex = hex | 0;\r\n }\r\n /**\r\n * Color numeric value.\r\n */\r\n get hex() {\r\n return this._hex;\r\n }\r\n /**\r\n * Value of color's R channel.\r\n * @return R value\r\n */\r\n get r() {\r\n return this._hex >>> 16;\r\n }\r\n /**\r\n * Value of color's G channel.\r\n * @return G value\r\n */\r\n get g() {\r\n return (this._hex >> 8) & 0xFF;\r\n }\r\n /**\r\n * Value of color's B channel.\r\n * @return B value\r\n */\r\n get b() {\r\n return this._hex & 0xFF;\r\n }\r\n /**\r\n * Returns color CSS representation in form of `rgba(r, g, b, a)` string.\r\n *\r\n * @param alpha Opacity\r\n * @return CSS string\r\n */\r\n toCSS(alpha = 1) {\r\n return \"rgba(\" + this.r + \", \" + this.g + \", \" + this.b + \", \" + alpha + \")\";\r\n }\r\n /**\r\n * Returns color CSS representation in form of `#rgb` string.\r\n *\r\n * @return CSS string\r\n */\r\n toCSSHex() {\r\n return \"#\" + $utils.padString(this.r.toString(16), 2) + $utils.padString(this.g.toString(16), 2) + $utils.padString(this.b.toString(16), 2);\r\n }\r\n /**\r\n * Returns color's HSL info.\r\n * @param alpha Opacity\r\n * @return HSL info\r\n */\r\n toHSL(alpha = 1) {\r\n return $utils.rgbToHsl({\r\n r: this.r,\r\n g: this.g,\r\n b: this.b,\r\n a: alpha\r\n });\r\n }\r\n /**\r\n * Converts HSL values into a new [[Color]] object.\r\n *\r\n * @param h H value\r\n * @param s S value\r\n * @param l L value\r\n * @return Color object\r\n */\r\n static fromHSL(h, s, l) {\r\n const rgb = $utils.hslToRgb({\r\n h: h,\r\n s: s,\r\n l: l\r\n });\r\n return this.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n toString() {\r\n return this.toCSSHex();\r\n }\r\n /**\r\n * Converts hex number into a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromHex(0xff0000) // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromHex(0xff0000) // red\r\n * ```\r\n *\r\n * @param hex Hex color\r\n * @return Color\r\n */\r\n static fromHex(hex) {\r\n return new Color(hex);\r\n }\r\n /**\r\n * Converts RGB values to a new [[Color]] object.\r\n *\r\n * @param r R value\r\n * @param g G value\r\n * @param b B value\r\n * @return Color\r\n */\r\n static fromRGB(r, g, b) {\r\n return new Color((b | 0) + (g << 8) + (r << 16));\r\n }\r\n /**\r\n * Converts RGB string to a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromString(\"#ff0000\") // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromString(\"#ff0000\") // red\r\n * ```\r\n *\r\n * @param s RGB string\r\n * @return Color\r\n */\r\n static fromString(s) {\r\n return new Color(string2hex(s));\r\n }\r\n /**\r\n * Converts CSS rgba() syntax to a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromCSS(\"rgba(255, 0, 0, 1)\") // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromCSS(\"rgba(255, 0, 0, 1)\") // red\r\n * ```\r\n *\r\n * @param {string} s [description]\r\n * @return {Color} [description]\r\n */\r\n static fromCSS(s) {\r\n return new Color(rgba2hex(s));\r\n }\r\n /**\r\n * Convert to color from virtually anything.\r\n *\r\n * Will throw an exception if unable to resolve the color.\r\n *\r\n * @param s Source\r\n * @return Color\r\n */\r\n static fromAny(s) {\r\n if ($type.isString(s)) {\r\n if (s[0] == \"#\") {\r\n return Color.fromString(s);\r\n }\r\n else if (s.substr(0, 3) == \"rgb\") {\r\n return Color.fromCSS(s);\r\n }\r\n }\r\n else if ($type.isNumber(s)) {\r\n return Color.fromHex(s);\r\n }\r\n else if (s instanceof Color) {\r\n return Color.fromHex(s.hex);\r\n }\r\n throw new Error(\"Unknown color syntax: \" + s);\r\n }\r\n /**\r\n * Returns a new [[Color]] object based on either `lightAlternative` or\r\n * `darkAlternative` depending on which one is more contrasting with\r\n * the `color`.\r\n *\r\n * @param color Reference color\r\n * @param lightAlternative Light color\r\n * @param darkAlternative Dark color\r\n * @return Alternative color\r\n */\r\n static alternative(color, lightAlternative, darkAlternative) {\r\n const rgb = $utils.alternativeColor({ r: color.r, g: color.g, b: color.b }, lightAlternative ? { r: lightAlternative.r, g: lightAlternative.g, b: lightAlternative.b } : undefined, darkAlternative ? { r: darkAlternative.r, g: darkAlternative.g, b: darkAlternative.b } : undefined);\r\n return this.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n /**\r\n * Returns an intermediate Color between two reference colors depending on\r\n * the progress (`diff`) between the two.\r\n *\r\n * @param diff Progress\r\n * @param from Source color\r\n * @param to Target color\r\n * @param mode Interpolation mode\r\n * @return Color\r\n */\r\n static interpolate(diff, from, to, mode = \"rgb\") {\r\n if (mode == \"hsl\") {\r\n const fromHSL = from.toHSL();\r\n const toHSL = to.toHSL();\r\n return Color.fromHSL(range(diff, fromHSL.h, toHSL.h), range(diff, fromHSL.s, toHSL.s), range(diff, fromHSL.l, toHSL.l));\r\n }\r\n else {\r\n return Color.fromRGB(range(diff, from.r, to.r), range(diff, from.g, to.g), range(diff, from.b, to.b));\r\n }\r\n }\r\n /**\r\n * Returns a new [[Color]] lightened by `percent` value.\r\n *\r\n * Use negative value to darken the color.\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\r\n static lighten(color, percent) {\r\n const rgb = $utils.lighten({ r: color.r, g: color.g, b: color.b }, percent);\r\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n /**\r\n * Returns a new [[Color]] brightened by `percent` value.\r\n *\r\n * Use negative value to dim the color.\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\r\n static brighten(color, percent) {\r\n const rgb = $utils.brighten({ r: color.r, g: color.g, b: color.b }, percent);\r\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n /**\r\n * Returns a new [[Color]] saturated by `percent` value.\r\n *\r\n * Value range is between `0` (fully desaturated), to `1` (full color).\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\r\n static saturate(color, percent) {\r\n const rgb = $utils.saturate({ r: color.r, g: color.g, b: color.b }, percent);\r\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n}\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $array from \"./Array\";\r\n/**\r\n * A base class for disposable objects.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class DisposerClass {\r\n /**\r\n * Constructor.\r\n */\r\n constructor() {\r\n /**\r\n * Is object disposed?\r\n */\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._disposed = false;\r\n }\r\n /**\r\n * Checks if object is disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Disposes the object.\r\n */\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._dispose();\r\n }\r\n }\r\n}\r\n/**\r\n * A class for creating an IDisposer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class Disposer {\r\n /**\r\n * Constructor.\r\n *\r\n * @param dispose Function that disposes object\r\n */\r\n constructor(dispose) {\r\n /**\r\n * Is object disposed?\r\n */\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Method that disposes the object.\r\n */\r\n Object.defineProperty(this, \"_dispose\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._disposed = false;\r\n this._dispose = dispose;\r\n }\r\n /**\r\n * Checks if object is disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Disposes the object.\r\n */\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._dispose();\r\n }\r\n }\r\n}\r\n/**\r\n * This can be extended by other classes to add a `_disposers` property.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class ArrayDisposer extends DisposerClass {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_disposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n _dispose() {\r\n $array.each(this._disposers, (x) => {\r\n x.dispose();\r\n });\r\n }\r\n}\r\n/**\r\n * A collection of related disposers that can be disposed in one go.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class MultiDisposer extends DisposerClass {\r\n constructor(disposers) {\r\n super();\r\n Object.defineProperty(this, \"_disposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._disposers = disposers;\r\n }\r\n _dispose() {\r\n $array.each(this._disposers, (x) => {\r\n x.dispose();\r\n });\r\n }\r\n get disposers() {\r\n return this._disposers;\r\n }\r\n}\r\n/**\r\n * A special kind of Disposer that has attached value set.\r\n *\r\n * If a new value is set using `set()` method, the old disposer value is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport class MutableValueDisposer extends DisposerClass {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * Current disposer.\r\n */\r\n Object.defineProperty(this, \"_disposer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Current value.\r\n */\r\n Object.defineProperty(this, \"_value\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _dispose() {\r\n if (this._disposer != null) {\r\n this._disposer.dispose();\r\n this._disposer = undefined;\r\n }\r\n }\r\n /**\r\n * Returns current value.\r\n *\r\n * @return Value\r\n */\r\n get() {\r\n return this._value;\r\n }\r\n /**\r\n * Sets value and disposes previous disposer if it was set.\r\n *\r\n * @param value New value\r\n * @param disposer Disposer\r\n */\r\n set(value, disposer) {\r\n if (this._disposer != null) {\r\n this._disposer.dispose();\r\n }\r\n this._disposer = disposer;\r\n this._value = value;\r\n }\r\n /**\r\n * Resets the disposer value.\r\n */\r\n reset() {\r\n this.set(undefined, undefined);\r\n }\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport class CounterDisposer extends Disposer {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * [_counter description]\r\n *\r\n * @todo Description\r\n */\r\n Object.defineProperty(this, \"_counter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n }\r\n /**\r\n * [increment description]\r\n *\r\n * @todo Description\r\n */\r\n increment() {\r\n // TODO throw an error if it is disposed\r\n ++this._counter;\r\n // TODO make this more efficient\r\n return new Disposer(() => {\r\n --this._counter;\r\n if (this._counter === 0) {\r\n this.dispose();\r\n }\r\n });\r\n }\r\n}\r\n","/**\r\n * A collection of easing functions\r\n *\r\n * Parts of this collection are taken from D3.js library (https://d3js.org/)\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $math from \"./Math\";\r\n/**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * ----------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n *\tthis list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n *\tthis list of conditions and the following disclaimer in the documentation\r\n *\tand/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n *\tcontributors may be used to endorse or promote products derived from this\r\n *\tsoftware without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ----------------------------------------------------------------------------\r\n * @hidden\r\n */\r\n/**\r\n */\r\nexport function linear(t) {\r\n return t;\r\n}\r\nexport function quad(t) {\r\n return t * t;\r\n}\r\nexport function cubic(t) {\r\n return t * t * t;\r\n}\r\nexport function pow(t, e) {\r\n return Math.pow(t, e);\r\n}\r\nexport function exp(t) {\r\n return Math.pow(2, 10 * t - 10);\r\n}\r\nexport function sine(t) {\r\n return 1 - Math.cos(t * $math.HALFPI);\r\n}\r\nexport function circle(t) {\r\n return 1 - Math.sqrt(1 - t * t);\r\n}\r\n/**\r\n * ============================================================================\r\n * TRANSFORMERS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n */\r\nexport function yoyo(ease) {\r\n return function (t) {\r\n if (t < 0.5) {\r\n return ease(t * 2.0);\r\n }\r\n else {\r\n return ease((1.0 - t) * 2.0);\r\n }\r\n };\r\n}\r\nexport function out(ease) {\r\n return function (t) {\r\n return 1.0 - ease(1.0 - t);\r\n };\r\n}\r\nexport function inOut(ease) {\r\n return function (t) {\r\n if (t <= 0.5) {\r\n return ease(t * 2.0) / 2.0;\r\n }\r\n else {\r\n return 1.0 - (ease((1.0 - t) * 2.0) / 2.0);\r\n }\r\n };\r\n}\r\n/**\r\n * ============================================================================\r\n * BOUNCE\r\n * ============================================================================\r\n * @hidden\r\n */\r\nlet b1 = 4 / 11, b2 = 6 / 11, b3 = 8 / 11, b4 = 3 / 4, b5 = 9 / 11, b6 = 10 / 11, b7 = 15 / 16, b8 = 21 / 22, b9 = 63 / 64, b0 = 1 / b1 / b1;\r\nexport function bounce(t) {\r\n return 1 - bounceOut(1 - t);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction bounceOut(t) {\r\n t = t;\r\n if (t < b1) {\r\n return b0 * t * t;\r\n }\r\n else if (t < b3) {\r\n return b0 * (t -= b2) * t + b4;\r\n }\r\n else if (t < b6) {\r\n return b0 * (t -= b5) * t + b7;\r\n }\r\n else {\r\n return b0 * (t -= b8) * t + b9;\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * ELASTIC\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * @ignore\r\n */\r\nlet tau = 2 * Math.PI;\r\n/**\r\n * @ignore\r\n */\r\nlet amplitude = 1;\r\n/**\r\n * @ignore\r\n */\r\nlet period = 0.3 / tau;\r\n/**\r\n * @ignore\r\n */\r\nlet s = Math.asin(1 / amplitude) * period;\r\nexport function elastic(t) {\r\n let v = t;\r\n return amplitude * Math.pow(2, 10 * --v) * Math.sin((s - v) / period);\r\n}\r\n","import * as $object from \"./Object\";\r\nimport * as $ease from \"./Ease\";\r\n/**\r\n * An object representing a collection of setting values to apply as required.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/states/} for more info\r\n */\r\nexport class State {\r\n constructor(entity, settings) {\r\n Object.defineProperty(this, \"_entity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_settings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_userSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n this._entity = entity;\r\n this._settings = settings;\r\n $object.each(settings, (key) => {\r\n this._userSettings[key] = true;\r\n });\r\n }\r\n get(key, fallback) {\r\n const value = this._settings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setRaw(key, value) {\r\n this._settings[key] = value;\r\n }\r\n /**\r\n * Sets a setting `value` for the specified `key` to be set when the state\r\n * is applied.\r\n *\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\r\n set(key, value) {\r\n this._userSettings[key] = true;\r\n this.setRaw(key, value);\r\n }\r\n /**\r\n * Removes a setting value for the specified `key`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n */\r\n remove(key) {\r\n delete this._userSettings[key];\r\n delete this._settings[key];\r\n }\r\n /**\r\n * Sets multiple settings at once.\r\n *\r\n * `settings` must be an object with key: value pairs.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param settings Settings\r\n */\r\n setAll(settings) {\r\n $object.keys(settings).forEach((key) => {\r\n this.set(key, settings[key]);\r\n });\r\n }\r\n _eachSetting(f) {\r\n $object.each(this._settings, f);\r\n }\r\n /**\r\n * Applies the state to the target element.\r\n *\r\n * All setting values are set immediately.\r\n */\r\n apply() {\r\n const seen = {};\r\n seen[\"stateAnimationEasing\"] = true;\r\n seen[\"stateAnimationDuration\"] = true;\r\n const defaultState = this._entity.states.lookup(\"default\");\r\n this._eachSetting((key, value) => {\r\n if (!seen[key]) {\r\n seen[key] = true;\r\n // save values to default state\r\n if (this !== defaultState) {\r\n if (!(key in defaultState._settings)) {\r\n defaultState._settings[key] = this._entity.get(key);\r\n }\r\n }\r\n this._entity.set(key, value);\r\n }\r\n });\r\n }\r\n /**\r\n * Applies the state to the target element.\r\n *\r\n * Returns an object representing all [[Animation]] objects created for\r\n * each setting key transition.\r\n *\r\n * @return Animations\r\n */\r\n applyAnimate(duration) {\r\n if (duration == null) {\r\n duration = this._settings.stateAnimationDuration;\r\n }\r\n if (duration == null) {\r\n duration = this.get(\"stateAnimationDuration\", this._entity.get(\"stateAnimationDuration\", 0));\r\n }\r\n let easing = this._settings.stateAnimationEasing;\r\n if (easing == null) {\r\n easing = this.get(\"stateAnimationEasing\", this._entity.get(\"stateAnimationEasing\", $ease.cubic));\r\n }\r\n const defaultState = this._entity.states.lookup(\"default\");\r\n const seen = {};\r\n seen[\"stateAnimationEasing\"] = true;\r\n seen[\"stateAnimationDuration\"] = true;\r\n const animations = {};\r\n this._eachSetting((key, value) => {\r\n if (!seen[key]) {\r\n seen[key] = true;\r\n // save values to default state\r\n if (this != defaultState) {\r\n if (!(key in defaultState._settings)) {\r\n defaultState._settings[key] = this._entity.get(key);\r\n }\r\n }\r\n const animation = this._entity.animate({\r\n key: key,\r\n to: value,\r\n duration: duration,\r\n easing: easing\r\n });\r\n if (animation) {\r\n animations[key] = animation;\r\n }\r\n }\r\n });\r\n return animations;\r\n }\r\n}\r\n/**\r\n * Collection of [[State]] objects for an element.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/states/} for more info\r\n */\r\nexport class States {\r\n constructor(entity) {\r\n Object.defineProperty(this, \"_states\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_entity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._entity = entity;\r\n }\r\n /**\r\n * Checks if a state by `name` exists. Returns it there is one.\r\n *\r\n * @param name State name\r\n * @return State\r\n */\r\n lookup(name) {\r\n return this._states[name];\r\n }\r\n /**\r\n * Sets supplied `settings` on a state by the `name`.\r\n *\r\n * If such state does not yet exists, it is created.\r\n *\r\n * @param name State name\r\n * @param settings Settings\r\n * @return New State\r\n */\r\n create(name, settings) {\r\n const state = this._states[name];\r\n if (state) {\r\n state.setAll(settings);\r\n return state;\r\n }\r\n else {\r\n const state = new State(this._entity, settings);\r\n this._states[name] = state;\r\n return state;\r\n }\r\n }\r\n /**\r\n * Removes the state called `name`.\r\n *\r\n * @param name State name\r\n */\r\n remove(name) {\r\n delete this._states[name];\r\n }\r\n /**\r\n * Applies a named state to the target element.\r\n *\r\n * @param newState State name\r\n */\r\n apply(newState) {\r\n const state = this._states[newState];\r\n if (state) {\r\n state.apply();\r\n }\r\n this._entity._applyState(newState);\r\n }\r\n /**\r\n * Applies a named state to the element.\r\n *\r\n * Returns an object representing all [[Animation]] objects created for\r\n * each setting key transition.\r\n *\r\n * @param newState State name\r\n * @return Animations\r\n */\r\n applyAnimate(newState, duration) {\r\n let animations;\r\n const state = this._states[newState];\r\n if (state) {\r\n animations = state.applyAnimate(duration);\r\n }\r\n this._entity._applyStateAnimated(newState, duration);\r\n return animations;\r\n }\r\n}\r\n","import { Disposer } from \"./Disposer\";\r\nimport { EventDispatcher } from \"./EventDispatcher\";\r\nimport { AnimationState, getInterpolate } from \"./Animation\";\r\nimport { States } from \"./States\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $object from \"./Object\";\r\nimport * as $ease from \"./Ease\";\r\nimport * as $array from \"./Array\";\r\nimport * as $order from \"./Order\";\r\n/**\r\n * Allows to dynamically modify setting value of its target element.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/adapters/} for more info\r\n */\r\nexport class Adapters {\r\n constructor(entity) {\r\n Object.defineProperty(this, \"_entity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_callbacks\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_disabled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n this._entity = entity;\r\n }\r\n /**\r\n * Add a function (`callback`) that will modify value for setting `key`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/adapters/} for more info\r\n */\r\n add(key, callback) {\r\n let callbacks = this._callbacks[key];\r\n if (callbacks === undefined) {\r\n callbacks = this._callbacks[key] = [];\r\n }\r\n callbacks.push(callback);\r\n this._entity._markDirtyKey(key);\r\n return new Disposer(() => {\r\n if ($array.removeFirst(callbacks, callback)) {\r\n this._entity._markDirtyKey(key);\r\n }\r\n });\r\n }\r\n /**\r\n * Removes all adapters for the specific key.\r\n *\r\n * @since 5.1.0\r\n */\r\n remove(key) {\r\n const callbacks = this._callbacks[key];\r\n if (callbacks !== undefined) {\r\n delete this._callbacks[key];\r\n if (callbacks.length !== 0) {\r\n this._entity._markDirtyKey(key);\r\n }\r\n }\r\n }\r\n /**\r\n * Enables (previously disabled) adapters for specific key.\r\n *\r\n * @since 5.1.0\r\n */\r\n enable(key) {\r\n if (this._disabled[key]) {\r\n delete this._disabled[key];\r\n this._entity._markDirtyKey(key);\r\n }\r\n }\r\n /**\r\n * Disables all adapters for specific key.\r\n *\r\n * @since 5.1.0\r\n */\r\n disable(key) {\r\n if (!this._disabled[key]) {\r\n this._disabled[key] = true;\r\n this._entity._markDirtyKey(key);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n fold(key, value) {\r\n if (!this._disabled[key]) {\r\n const callbacks = this._callbacks[key];\r\n if (callbacks !== undefined) {\r\n for (let i = 0, len = callbacks.length; i < len; ++i) {\r\n value = callbacks[i](value, this._entity, key);\r\n }\r\n }\r\n }\r\n return value;\r\n }\r\n}\r\n/**\r\n * Animation object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/} for more info\r\n */\r\nexport class Animation {\r\n constructor(animation, from, to, duration, easing, loops, startingTime) {\r\n Object.defineProperty(this, \"_animation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_from\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_to\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_duration\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_easing\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_loops\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_interpolate\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_oldTime\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_time\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_stopped\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_playing\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new EventDispatcher()\r\n });\r\n this._animation = animation;\r\n this._from = from;\r\n this._to = to;\r\n this._duration = duration;\r\n this._easing = easing;\r\n this._loops = loops;\r\n this._interpolate = getInterpolate(from, to);\r\n this._oldTime = startingTime;\r\n }\r\n get to() {\r\n return this._to;\r\n }\r\n get from() {\r\n return this._from;\r\n }\r\n get playing() {\r\n return this._playing;\r\n }\r\n get stopped() {\r\n return this._stopped;\r\n }\r\n stop() {\r\n if (!this._stopped) {\r\n this._stopped = true;\r\n this._playing = false;\r\n if (this.events.isEnabled(\"stopped\")) {\r\n this.events.dispatch(\"stopped\", {\r\n type: \"stopped\",\r\n target: this,\r\n });\r\n }\r\n }\r\n }\r\n pause() {\r\n this._playing = false;\r\n this._oldTime = null;\r\n }\r\n play() {\r\n if (!this._stopped && !this._playing) {\r\n this._playing = true;\r\n this._animation._startAnimation();\r\n }\r\n }\r\n get percentage() {\r\n return this._time / this._duration;\r\n }\r\n waitForStop() {\r\n return new Promise((resolve, _reject) => {\r\n if (this._stopped) {\r\n resolve();\r\n }\r\n else {\r\n const listener = () => {\r\n stopped.dispose();\r\n resolve();\r\n };\r\n const stopped = this.events.on(\"stopped\", listener);\r\n }\r\n });\r\n }\r\n _checkEnded() {\r\n if (this._loops > 1) {\r\n --this._loops;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n _run(currentTime) {\r\n if (this._oldTime !== null) {\r\n this._time += currentTime - this._oldTime;\r\n if (this._time > this._duration) {\r\n this._time = this._duration;\r\n }\r\n }\r\n this._oldTime = currentTime;\r\n }\r\n _reset(currentTime) {\r\n this._oldTime = currentTime;\r\n this._time = 0;\r\n }\r\n _value(diff) {\r\n return this._interpolate(this._easing(diff), this._from, this._to);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nlet counter = 0;\r\n/**\r\n * Base class for [[Entity]] objects that support Settings.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n */\r\nexport class Settings {\r\n constructor(settings) {\r\n /**\r\n * Unique ID.\r\n */\r\n Object.defineProperty(this, \"uid\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: ++counter\r\n });\r\n Object.defineProperty(this, \"_settings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_privateSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_settingEvents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_privateSettingEvents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_prevSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_prevPrivateSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_animatingSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_animatingPrivateSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n // TODO move this into Entity\r\n Object.defineProperty(this, \"_userProperties\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n this._settings = settings;\r\n }\r\n _checkDirty() {\r\n $object.keys(this._settings).forEach((key) => {\r\n this._userProperties[key] = true;\r\n this._markDirtyKey(key);\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n resetUserSettings() {\r\n this._userProperties = {};\r\n }\r\n _runAnimation(currentTime) {\r\n let state = AnimationState.Stopped;\r\n if (!this.isDisposed()) {\r\n let playing = false;\r\n let paused = false;\r\n $object.each(this._animatingSettings, (key, animation) => {\r\n if (animation.stopped) {\r\n this._stopAnimation(key);\r\n }\r\n else if (animation.playing) {\r\n animation._run(currentTime);\r\n const diff = animation.percentage;\r\n if (diff >= 1) {\r\n if (animation._checkEnded()) {\r\n this.set(key, animation._value(1));\r\n }\r\n else {\r\n playing = true;\r\n animation._reset(currentTime);\r\n this._set(key, animation._value(1));\r\n }\r\n }\r\n else {\r\n playing = true;\r\n this._set(key, animation._value(diff));\r\n }\r\n }\r\n else {\r\n paused = true;\r\n }\r\n });\r\n $object.each(this._animatingPrivateSettings, (key, animation) => {\r\n if (animation.stopped) {\r\n this._stopAnimationPrivate(key);\r\n }\r\n else if (animation.playing) {\r\n animation._run(currentTime);\r\n const diff = animation.percentage;\r\n if (diff >= 1) {\r\n if (animation._checkEnded()) {\r\n this.setPrivate(key, animation._value(1));\r\n }\r\n else {\r\n playing = true;\r\n animation._reset(currentTime);\r\n this._setPrivate(key, animation._value(1));\r\n }\r\n }\r\n else {\r\n playing = true;\r\n this._setPrivate(key, animation._value(diff));\r\n }\r\n }\r\n else {\r\n paused = true;\r\n }\r\n });\r\n if (playing) {\r\n state = AnimationState.Playing;\r\n }\r\n else if (paused) {\r\n state = AnimationState.Paused;\r\n }\r\n }\r\n return state;\r\n }\r\n _markDirtyKey(_key) {\r\n this.markDirty();\r\n }\r\n _markDirtyPrivateKey(_key) {\r\n this.markDirty();\r\n }\r\n /**\r\n * Sets a callback function to invoke when specific key of settings changes\r\n * or is set.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Settings key\r\n * @param callback Callback\r\n * @return Disposer for event\r\n */\r\n on(key, callback) {\r\n let events = this._settingEvents[key];\r\n if (events === undefined) {\r\n events = this._settingEvents[key] = [];\r\n }\r\n events.push(callback);\r\n return new Disposer(() => {\r\n $array.removeFirst(events, callback);\r\n if (events.length === 0) {\r\n delete this._settingEvents[key];\r\n }\r\n });\r\n }\r\n /**\r\n * Removes a callback for when value of a setting changes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Private settings key\r\n * @param callback Callback\r\n * @since 5.9.2\r\n */\r\n off(key, callback) {\r\n let events = this._settingEvents[key];\r\n if (events !== undefined && callback !== undefined) {\r\n $array.removeFirst(events, callback);\r\n }\r\n else {\r\n delete this._settingEvents[key];\r\n }\r\n }\r\n /**\r\n * Sets a callback function to invoke when specific key of private settings\r\n * changes or is set.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Private settings key\r\n * @param callback Callback\r\n * @return Disposer for event\r\n */\r\n onPrivate(key, callback) {\r\n let events = this._privateSettingEvents[key];\r\n if (events === undefined) {\r\n events = this._privateSettingEvents[key] = [];\r\n }\r\n events.push(callback);\r\n return new Disposer(() => {\r\n $array.removeFirst(events, callback);\r\n if (events.length === 0) {\r\n delete this._privateSettingEvents[key];\r\n }\r\n });\r\n }\r\n /**\r\n * Removes a callback for when value of a private setting changes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Private settings key\r\n * @param callback Callback\r\n * @since 5.9.2\r\n */\r\n offPrivate(key, callback) {\r\n let events = this._privateSettingEvents[key];\r\n if (events !== undefined && callback !== undefined) {\r\n $array.removeFirst(events, callback);\r\n }\r\n else {\r\n delete this._privateSettingEvents[key];\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getRaw(key, fallback) {\r\n const value = this._settings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n /**\r\n * Returns `true` if the setting exists.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Settings key\r\n * @return {boolean} Key exists\r\n */\r\n has(key) {\r\n return key in this._settings;\r\n }\r\n get(key, fallback) {\r\n return this.getRaw(key, fallback);\r\n }\r\n _sendKeyEvent(key, value) {\r\n const events = this._settingEvents[key];\r\n if (events !== undefined) {\r\n $array.each(events, (callback) => {\r\n callback(value, this, key);\r\n });\r\n }\r\n }\r\n _sendPrivateKeyEvent(key, value) {\r\n const events = this._privateSettingEvents[key];\r\n if (events !== undefined) {\r\n $array.each(events, (callback) => {\r\n callback(value, this, key);\r\n });\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _setRaw(key, old, value) {\r\n this._prevSettings[key] = old;\r\n this._sendKeyEvent(key, value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setRaw(key, value) {\r\n const old = this._settings[key];\r\n this._settings[key] = value;\r\n if (old !== value) {\r\n this._setRaw(key, old, value);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _set(key, value) {\r\n const old = this._settings[key];\r\n this._settings[key] = value;\r\n if (old !== value) {\r\n this._setRaw(key, old, value);\r\n this._markDirtyKey(key);\r\n }\r\n }\r\n _stopAnimation(key) {\r\n const animation = this._animatingSettings[key];\r\n if (animation) {\r\n delete this._animatingSettings[key];\r\n animation.stop();\r\n }\r\n }\r\n /**\r\n * Sets a setting `value` for the specified `key`, and returns the same `value`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\r\n set(key, value) {\r\n this._set(key, value);\r\n this._stopAnimation(key);\r\n return value;\r\n }\r\n /**\r\n * Removes a setting value for the specified `key`;\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n */\r\n remove(key) {\r\n if (key in this._settings) {\r\n this._prevSettings[key] = this._settings[key];\r\n delete this._settings[key];\r\n this._sendKeyEvent(key, undefined);\r\n this._markDirtyKey(key);\r\n }\r\n this._stopAnimation(key);\r\n }\r\n /**\r\n * Removes all keys;\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n */\r\n removeAll() {\r\n $array.each($object.keys(this._settings), (key) => {\r\n this.remove(key);\r\n });\r\n }\r\n /**\r\n * Returns a value of a private setting.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/#Private_settings} for more info\r\n */\r\n getPrivate(key, fallback) {\r\n const value = this._privateSettings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _setPrivateRaw(key, old, value) {\r\n this._prevPrivateSettings[key] = old;\r\n this._sendPrivateKeyEvent(key, value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setPrivateRaw(key, value) {\r\n const old = this._privateSettings[key];\r\n this._privateSettings[key] = value;\r\n if (old !== value) {\r\n this._setPrivateRaw(key, old, value);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _setPrivate(key, value) {\r\n const old = this._privateSettings[key];\r\n this._privateSettings[key] = value;\r\n if (old !== value) {\r\n this._setPrivateRaw(key, old, value);\r\n this._markDirtyPrivateKey(key);\r\n }\r\n }\r\n _stopAnimationPrivate(key) {\r\n const animation = this._animatingPrivateSettings[key];\r\n if (animation) {\r\n animation.stop();\r\n delete this._animatingPrivateSettings[key];\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setPrivate(key, value) {\r\n this._setPrivate(key, value);\r\n this._stopAnimationPrivate(key);\r\n return value;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n removePrivate(key) {\r\n if (key in this._privateSettings) {\r\n this._prevPrivateSettings[key] = this._privateSettings[key];\r\n delete this._privateSettings[key];\r\n this._markDirtyPrivateKey(key);\r\n }\r\n this._stopAnimationPrivate(key);\r\n }\r\n /**\r\n * Sets multiple settings at once.\r\n *\r\n * `settings` must be an object with key: value pairs.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param settings Settings\r\n */\r\n setAll(settings) {\r\n $object.each(settings, (key, value) => {\r\n this.set(key, value);\r\n });\r\n }\r\n /**\r\n * Animates setting values from current/start values to new ones.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/#Animating_settings} for more info\r\n * @param options Animation options\r\n * @return Animation object\r\n */\r\n animate(options) {\r\n const key = options.key;\r\n const to = options.to;\r\n const duration = options.duration || 0;\r\n const loops = options.loops || 1;\r\n const from = (options.from === undefined ? this.get(key) : options.from);\r\n const easing = (options.easing === undefined ? $ease.linear : options.easing);\r\n if (duration === 0) {\r\n this.set(key, to);\r\n }\r\n else {\r\n if (from === undefined || from === to) {\r\n this.set(key, to);\r\n }\r\n else {\r\n this.set(key, from);\r\n const animation = this._animatingSettings[key] = new Animation(this, from, to, duration, easing, loops, this._animationTime());\r\n this._startAnimation();\r\n return animation;\r\n }\r\n }\r\n const animation = new Animation(this, from, to, duration, easing, loops, null);\r\n animation.stop();\r\n return animation;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n animatePrivate(options) {\r\n const key = options.key;\r\n const to = options.to;\r\n const duration = options.duration || 0;\r\n const loops = options.loops || 1;\r\n const from = (options.from === undefined ? this.getPrivate(key) : options.from);\r\n const easing = (options.easing === undefined ? $ease.linear : options.easing);\r\n if (duration === 0) {\r\n this.setPrivate(key, to);\r\n }\r\n else {\r\n if (from === undefined || from === to) {\r\n this.setPrivate(key, to);\r\n }\r\n else {\r\n this.setPrivate(key, from);\r\n const animation = this._animatingPrivateSettings[key] = new Animation(this, from, to, duration, easing, loops, this._animationTime());\r\n this._startAnimation();\r\n return animation;\r\n }\r\n }\r\n const animation = new Animation(this, from, to, duration, easing, loops, null);\r\n animation.stop();\r\n return animation;\r\n }\r\n _dispose() { }\r\n /**\r\n * Returns `true` if this element is disposed.\r\n *\r\n * @return Disposed\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Disposes this object.\r\n */\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._dispose();\r\n }\r\n }\r\n}\r\n/**\r\n * Base class.\r\n *\r\n * @important\r\n */\r\nexport class Entity extends Settings {\r\n /**\r\n * IMPORTANT! Do not instantiate this class via `new Class()` syntax.\r\n *\r\n * Use static method `Class.new()` instead.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @ignore\r\n */\r\n constructor(root, settings, isReal, templates = []) {\r\n super(settings);\r\n Object.defineProperty(this, \"_root\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_user_id\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n }); // for testing purposes\r\n Object.defineProperty(this, \"states\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new States(this)\r\n });\r\n Object.defineProperty(this, \"adapters\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Adapters(this)\r\n });\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._createEvents()\r\n });\r\n Object.defineProperty(this, \"_userPrivateProperties\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirtyPrivate\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_template\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // Templates for the themes\r\n Object.defineProperty(this, \"_templates\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n // Internal templates which can be overridden by the user's templates\r\n Object.defineProperty(this, \"_internalTemplates\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // Default themes which can be overridden by the user's themes\r\n Object.defineProperty(this, \"_defaultThemes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n // Disposers for all of the templates\r\n Object.defineProperty(this, \"_templateDisposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_disposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n // Whether the template setup function should be run\r\n Object.defineProperty(this, \"_runSetup\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_disposerProperties\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n this._root = root;\r\n this._internalTemplates = templates;\r\n if (settings.id) {\r\n this._registerId(settings.id);\r\n }\r\n }\r\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param root Root element\r\n * @param settings Settings\r\n * @param template Template\r\n * @return Instantiated object\r\n */\r\n static new(root, settings, template) {\r\n const x = (new this(root, settings, true));\r\n x._template = template;\r\n x._afterNew();\r\n return x;\r\n }\r\n static _new(root, settings, templates = []) {\r\n const x = (new this(root, settings, true, templates));\r\n x._afterNew();\r\n return x;\r\n }\r\n _afterNew() {\r\n this._checkDirty();\r\n let shouldApply = false;\r\n const template = this._template;\r\n if (template) {\r\n shouldApply = true;\r\n template._setObjectTemplate(this);\r\n }\r\n $array.each(this._internalTemplates, (template) => {\r\n shouldApply = true;\r\n template._setObjectTemplate(this);\r\n });\r\n if (shouldApply) {\r\n this._applyTemplates(false);\r\n }\r\n this.states.create(\"default\", {});\r\n this._setDefaults();\r\n }\r\n // This is the same as _afterNew, except it also applies the themes.\r\n // This should only be used for classes which don't have a parent (because they extend from Entity and not Sprite).\r\n _afterNewApplyThemes() {\r\n this._checkDirty();\r\n const template = this._template;\r\n if (template) {\r\n template._setObjectTemplate(this);\r\n }\r\n $array.each(this._internalTemplates, (template) => {\r\n template._setObjectTemplate(this);\r\n });\r\n this.states.create(\"default\", {});\r\n this._setDefaults();\r\n this._applyThemes();\r\n }\r\n _createEvents() {\r\n return new EventDispatcher();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n get classNames() {\r\n return this.constructor.classNames;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n get className() {\r\n return this.constructor.className;\r\n }\r\n _setDefaults() {\r\n }\r\n _setDefaultFn(key, f) {\r\n const value = this.get(key);\r\n if (value) {\r\n return value;\r\n }\r\n else {\r\n const value = f();\r\n this.set(key, value);\r\n return value;\r\n }\r\n }\r\n _setDefault(key, value) {\r\n if (!this.has(key)) {\r\n super.set(key, value);\r\n }\r\n }\r\n _setRawDefault(key, value) {\r\n if (!this.has(key)) {\r\n super.setRaw(key, value);\r\n }\r\n }\r\n _clearDirty() {\r\n $object.keys(this._dirty).forEach((key) => {\r\n this._dirty[key] = false;\r\n });\r\n $object.keys(this._dirtyPrivate).forEach((key) => {\r\n this._dirtyPrivate[key] = false;\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n isDirty(key) {\r\n return !!this._dirty[key];\r\n }\r\n /**\r\n * @ignore\r\n */\r\n isPrivateDirty(key) {\r\n return !!this._dirtyPrivate[key];\r\n }\r\n _markDirtyKey(key) {\r\n this._dirty[key] = true;\r\n super._markDirtyKey(key);\r\n }\r\n _markDirtyPrivateKey(key) {\r\n this._dirtyPrivate[key] = true;\r\n super._markDirtyKey(key);\r\n }\r\n /**\r\n * Checks if element is of certain class (or inherits one).\r\n *\r\n * @param type Class name to check\r\n * @return {boolean} Is of class?\r\n */\r\n isType(type) {\r\n return this.classNames.indexOf(type) !== -1;\r\n }\r\n _pushPropertyDisposer(key, disposer) {\r\n let disposers = this._disposerProperties[key];\r\n if (disposers === undefined) {\r\n disposers = this._disposerProperties[key] = [];\r\n }\r\n disposers.push(disposer);\r\n return disposer;\r\n }\r\n _disposeProperty(key) {\r\n const disposers = this._disposerProperties[key];\r\n if (disposers !== undefined) {\r\n $array.each(disposers, (disposer) => {\r\n disposer.dispose();\r\n });\r\n delete this._disposerProperties[key];\r\n }\r\n }\r\n /**\r\n * @todo needs description\r\n * @param value Template\r\n */\r\n set template(value) {\r\n const template = this._template;\r\n if (template !== value) {\r\n this._template = value;\r\n if (template) {\r\n template._removeObjectTemplate(this);\r\n }\r\n if (value) {\r\n value._setObjectTemplate(this);\r\n }\r\n this._applyTemplates();\r\n }\r\n }\r\n get template() {\r\n return this._template;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirty() {\r\n this._root._addDirtyEntity(this);\r\n }\r\n _startAnimation() {\r\n this._root._addAnimation(this);\r\n }\r\n _animationTime() {\r\n return this._root.animationTime;\r\n }\r\n _applyState(_name) { }\r\n _applyStateAnimated(_name, _duration) { }\r\n get(key, fallback) {\r\n const value = this.adapters.fold(key, this._settings[key]);\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n isUserSetting(key) {\r\n return this._userProperties[key] || false;\r\n }\r\n /**\r\n * Sets a setting `value` for the specified `key`, and returns the same `value`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\r\n set(key, value) {\r\n this._userProperties[key] = true;\r\n return super.set(key, value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setRaw(key, value) {\r\n this._userProperties[key] = true;\r\n super.setRaw(key, value);\r\n }\r\n /**\r\n * Sets a setting `value` for the specified `key` only if the value for this key was not set previously using set method, and returns the same `value`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\r\n _setSoft(key, value) {\r\n if (!this._userProperties[key]) {\r\n return super.set(key, value);\r\n }\r\n return value;\r\n }\r\n /**\r\n * Removes a setting value for the specified `key`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n */\r\n remove(key) {\r\n delete this._userProperties[key];\r\n this._removeTemplateProperty(key);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setPrivate(key, value) {\r\n this._userPrivateProperties[key] = true;\r\n return super.setPrivate(key, value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setPrivateRaw(key, value) {\r\n this._userPrivateProperties[key] = true;\r\n super.setPrivateRaw(key, value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n removePrivate(key) {\r\n delete this._userPrivateProperties[key];\r\n this._removeTemplatePrivateProperty(key);\r\n }\r\n _setTemplateProperty(template, key, value) {\r\n if (!this._userProperties[key]) {\r\n const match = this._findTemplateByKey(key);\r\n if (template === match) {\r\n super.set(key, value);\r\n }\r\n }\r\n }\r\n _setTemplatePrivateProperty(template, key, value) {\r\n if (!this._userPrivateProperties[key]) {\r\n const match = this._findTemplateByPrivateKey(key);\r\n if (template === match) {\r\n super.setPrivate(key, value);\r\n }\r\n }\r\n }\r\n _removeTemplateProperty(key) {\r\n if (!this._userProperties[key]) {\r\n const match = this._findTemplateByKey(key);\r\n if (match) {\r\n // TODO don't stop the animation if the property didn't change\r\n super.set(key, match._settings[key]);\r\n }\r\n else {\r\n super.remove(key);\r\n }\r\n }\r\n }\r\n _removeTemplatePrivateProperty(key) {\r\n if (!this._userPrivateProperties[key]) {\r\n const match = this._findTemplateByPrivateKey(key);\r\n if (match) {\r\n // TODO don't stop the animation if the property didn't change\r\n super.setPrivate(key, match._privateSettings[key]);\r\n }\r\n else {\r\n super.removePrivate(key);\r\n }\r\n }\r\n }\r\n _walkParents(f) {\r\n f(this._root._rootContainer);\r\n f(this);\r\n }\r\n // TODO faster version of this method which is specialized to just 1 key\r\n _applyStateByKey(name) {\r\n const other = this.states.create(name, {});\r\n const seen = {};\r\n this._eachTemplate((template) => {\r\n const state = template.states.lookup(name);\r\n if (state) {\r\n state._apply(other, seen);\r\n }\r\n });\r\n $object.each(other._settings, (key) => {\r\n if (!seen[key] && !other._userSettings[key]) {\r\n other.remove(key);\r\n }\r\n });\r\n }\r\n _applyTemplate(template, state) {\r\n this._templateDisposers.push(template._apply(this, state));\r\n $object.each(template._settings, (key, value) => {\r\n if (!state.settings[key] && !this._userProperties[key]) {\r\n state.settings[key] = true;\r\n super.set(key, value);\r\n }\r\n });\r\n $object.each(template._privateSettings, (key, value) => {\r\n if (!state.privateSettings[key] && !this._userPrivateProperties[key]) {\r\n state.privateSettings[key] = true;\r\n super.setPrivate(key, value);\r\n }\r\n });\r\n if (this._runSetup && template.setup) {\r\n this._runSetup = false;\r\n template.setup(this);\r\n }\r\n }\r\n /**\r\n * Calls the closure with each template and returns the first template which is true\r\n */\r\n _findStaticTemplate(f) {\r\n if (this._template) {\r\n if (f(this._template)) {\r\n return this._template;\r\n }\r\n }\r\n }\r\n _eachTemplate(f) {\r\n this._findStaticTemplate((template) => {\r\n f(template);\r\n return false;\r\n });\r\n // _internalTemplates is sorted with most specific to the right\r\n $array.eachReverse(this._internalTemplates, f);\r\n // _templates is sorted with most specific to the left\r\n $array.each(this._templates, f);\r\n }\r\n _applyTemplates(remove = true) {\r\n if (remove) {\r\n this._disposeTemplates();\r\n }\r\n const state = {\r\n settings: {},\r\n privateSettings: {},\r\n states: {},\r\n };\r\n this._eachTemplate((template) => {\r\n this._applyTemplate(template, state);\r\n });\r\n if (remove) {\r\n $object.each(this._settings, (key) => {\r\n if (!this._userProperties[key] && !state.settings[key]) {\r\n super.remove(key);\r\n }\r\n });\r\n $object.each(this._privateSettings, (key) => {\r\n if (!this._userPrivateProperties[key] && !state.privateSettings[key]) {\r\n super.removePrivate(key);\r\n }\r\n });\r\n }\r\n }\r\n _findTemplate(f) {\r\n const value = this._findStaticTemplate(f);\r\n if (value === undefined) {\r\n // _internalTemplates is sorted with most specific to the right\r\n const value = $array.findReverse(this._internalTemplates, f);\r\n if (value === undefined) {\r\n // _templates is sorted with most specific to the left\r\n return $array.find(this._templates, f);\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n _findTemplateByKey(key) {\r\n return this._findTemplate((template) => {\r\n return key in template._settings;\r\n });\r\n }\r\n _findTemplateByPrivateKey(key) {\r\n return this._findTemplate((template) => {\r\n return key in template._privateSettings;\r\n });\r\n }\r\n _disposeTemplates() {\r\n $array.each(this._templateDisposers, (disposer) => {\r\n disposer.dispose();\r\n });\r\n this._templateDisposers.length = 0;\r\n }\r\n _removeTemplates() {\r\n $array.each(this._templates, (template) => {\r\n template._removeObjectTemplate(this);\r\n });\r\n this._templates.length = 0;\r\n }\r\n _applyThemes(force = false) {\r\n let isConnected = false;\r\n const defaults = [];\r\n let themes = [];\r\n const themeTags = new Set();\r\n const tags = this.get(\"themeTagsSelf\");\r\n if (tags) {\r\n $array.each(tags, (tag) => {\r\n themeTags.add(tag);\r\n });\r\n }\r\n this._walkParents((entity) => {\r\n if (entity === this._root._rootContainer) {\r\n isConnected = true;\r\n }\r\n if (entity._defaultThemes.length > 0) {\r\n defaults.push(entity._defaultThemes);\r\n }\r\n const theme = entity.get(\"themes\");\r\n if (theme) {\r\n themes.push(theme);\r\n }\r\n const tags = entity.get(\"themeTags\");\r\n if (tags) {\r\n $array.each(tags, (tag) => {\r\n themeTags.add(tag);\r\n });\r\n }\r\n });\r\n themes = defaults.concat(themes);\r\n this._removeTemplates();\r\n if (isConnected || force) {\r\n $array.eachReverse(this.classNames, (name) => {\r\n const allRules = [];\r\n $array.each(themes, (themes) => {\r\n $array.each(themes, (theme) => {\r\n const rules = theme._lookupRules(name);\r\n if (rules) {\r\n $array.eachReverse(rules, (rule) => {\r\n const matches = rule.tags.every((tag) => {\r\n return themeTags.has(tag);\r\n });\r\n if (matches) {\r\n const result = $array.getFirstSortedIndex(allRules, (x) => {\r\n const order = $order.compare(rule.tags.length, x.tags.length);\r\n if (order === 0) {\r\n return $order.compareArray(rule.tags, x.tags, $order.compare);\r\n }\r\n else {\r\n return order;\r\n }\r\n });\r\n allRules.splice(result.index, 0, rule);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n $array.each(allRules, (rule) => {\r\n this._templates.push(rule.template);\r\n rule.template._setObjectTemplate(this);\r\n });\r\n });\r\n }\r\n this._applyTemplates();\r\n if (isConnected || force) {\r\n // This causes it to only run the setup function the first time that the themes are applied\r\n this._runSetup = false;\r\n }\r\n return isConnected || force;\r\n }\r\n _changed() { }\r\n _beforeChanged() {\r\n if (this.isDirty(\"id\")) {\r\n const id = this.get(\"id\");\r\n if (id) {\r\n this._registerId(id);\r\n }\r\n const prevId = this._prevSettings.id;\r\n if (prevId) {\r\n delete registry.entitiesById[prevId];\r\n }\r\n }\r\n }\r\n _registerId(id) {\r\n if (registry.entitiesById[id] && registry.entitiesById[id] !== this) {\r\n throw new Error(\"An entity with id \\\"\" + id + \"\\\" already exists.\");\r\n }\r\n registry.entitiesById[id] = this;\r\n }\r\n _afterChanged() { }\r\n /**\r\n * @ignore\r\n */\r\n addDisposer(disposer) {\r\n this._disposers.push(disposer);\r\n return disposer;\r\n }\r\n _dispose() {\r\n super._dispose();\r\n const template = this._template;\r\n if (template) {\r\n template._removeObjectTemplate(this);\r\n }\r\n $array.each(this._internalTemplates, (template) => {\r\n template._removeObjectTemplate(this);\r\n });\r\n this._removeTemplates();\r\n this._disposeTemplates();\r\n this.events.dispose();\r\n this._disposers.forEach((x) => {\r\n x.dispose();\r\n });\r\n $object.each(this._disposerProperties, (_, disposers) => {\r\n $array.each(disposers, (disposer) => {\r\n disposer.dispose();\r\n });\r\n });\r\n const id = this.get(\"id\");\r\n if (id) {\r\n delete registry.entitiesById[id];\r\n }\r\n }\r\n /**\r\n * Creates and returns a \"disposable\" timeout.\r\n *\r\n * @param fn Callback\r\n * @param delay Delay in milliseconds\r\n * @return Timeout disposer\r\n */\r\n setTimeout(fn, delay) {\r\n const id = setTimeout(() => {\r\n this.removeDispose(disposer);\r\n fn();\r\n }, delay);\r\n const disposer = new Disposer(() => {\r\n clearTimeout(id);\r\n });\r\n this._disposers.push(disposer);\r\n return disposer;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n removeDispose(target) {\r\n if (!this.isDisposed()) {\r\n let index = $array.indexOf(this._disposers, target);\r\n if (index > -1) {\r\n this._disposers.splice(index, 1);\r\n }\r\n }\r\n target.dispose();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n hasTag(tag) {\r\n return $array.indexOf(this.get(\"themeTags\", []), tag) !== -1;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n addTag(tag) {\r\n if (!this.hasTag(tag)) {\r\n const tags = this.get(\"themeTags\", []);\r\n tags.push(tag);\r\n this.set(\"themeTags\", tags);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n removeTag(tag) {\r\n if (this.hasTag(tag)) {\r\n const tags = this.get(\"themeTags\", []);\r\n $array.remove(tags, tag);\r\n this.set(\"themeTags\", tags);\r\n }\r\n }\r\n _t(text, locale, ...rest) {\r\n return this._root.language.translate(text, locale, ...rest);\r\n }\r\n /**\r\n * An instance of [[Root]] object.\r\n *\r\n * @readonly\r\n * @since 5.0.6\r\n * @return Root object\r\n */\r\n get root() {\r\n return this._root;\r\n }\r\n}\r\nObject.defineProperty(Entity, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Entity\"\r\n});\r\nObject.defineProperty(Entity, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\"Entity\"]\r\n});\r\n","/**\r\n * Event Dispatcher module is used for registering listeners and dispatching\r\n * events across amCharts system.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Disposer, MultiDisposer } from \"./Disposer\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Universal Event Dispatcher.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\r\nexport class EventDispatcher {\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n Object.defineProperty(this, \"_listeners\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_killed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_disabled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_iterating\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_enabled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._listeners = [];\r\n this._killed = [];\r\n this._disabled = {};\r\n this._iterating = 0;\r\n this._enabled = true;\r\n this._disposed = false;\r\n }\r\n /**\r\n * Returns if this object has been already disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Dispose (destroy) this object.\r\n */\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n const a = this._listeners;\r\n this._iterating = 1;\r\n this._listeners = null;\r\n this._disabled = null;\r\n try {\r\n $array.each(a, (x) => {\r\n x.disposer.dispose();\r\n });\r\n }\r\n finally {\r\n this._killed = null;\r\n this._iterating = null;\r\n }\r\n }\r\n }\r\n /**\r\n * Checks if this particular event dispatcher has any listeners set.\r\n *\r\n * @return Has listeners?\r\n */\r\n hasListeners() {\r\n return this._listeners.length !== 0;\r\n }\r\n /**\r\n * Checks if this particular event dispatcher has any particular listeners set.\r\n *\r\n * @return Has particular event listeners?\r\n */\r\n hasListenersByType(type) {\r\n return $array.any(this._listeners, (x) => (x.type === null || x.type === type) && !x.killed);\r\n }\r\n /**\r\n * Enable dispatching of events if they were previously disabled by\r\n * `disable()`.\r\n */\r\n enable() {\r\n this._enabled = true;\r\n }\r\n /**\r\n * Disable dispatching of events until re-enabled by `enable()`.\r\n */\r\n disable() {\r\n this._enabled = false;\r\n }\r\n /**\r\n * Enable dispatching particular event, if it was disabled before by\r\n * `disableType()`.\r\n *\r\n * @param type Event type\r\n */\r\n enableType(type) {\r\n delete this._disabled[type];\r\n }\r\n /**\r\n * Disable dispatching of events for a certain event type.\r\n *\r\n * Optionally, can set how many dispatches to skip before automatically\r\n * re-enabling the dispatching.\r\n *\r\n * @param type Event type\r\n * @param amount Number of event dispatches to skip\r\n */\r\n disableType(type, amount = Infinity) {\r\n this._disabled[type] = amount;\r\n }\r\n /**\r\n * Removes listener from dispatcher.\r\n *\r\n * Will throw an exception if such listener does not exists.\r\n *\r\n * @param listener Listener to remove\r\n */\r\n _removeListener(listener) {\r\n if (this._iterating === 0) {\r\n const index = this._listeners.indexOf(listener);\r\n if (index === -1) {\r\n throw new Error(\"Invalid state: could not remove listener\");\r\n }\r\n this._listeners.splice(index, 1);\r\n }\r\n else {\r\n this._killed.push(listener);\r\n }\r\n }\r\n /**\r\n * Removes existing listener by certain parameters.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\r\n _removeExistingListener(once, type, callback, context) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._eachListener((info) => {\r\n if (info.once === once && // TODO is this correct ?\r\n info.type === type &&\r\n (callback === undefined || info.callback === callback) &&\r\n info.context === context) {\r\n info.disposer.dispose();\r\n }\r\n });\r\n }\r\n /**\r\n * Checks if dispatching for particular event type is enabled.\r\n *\r\n * @param type Event type\r\n * @return Enabled?\r\n */\r\n isEnabled(type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n // TODO is this check correct ?\r\n return this._enabled && this._listeners.length > 0 && this.hasListenersByType(type) && this._disabled[type] === undefined;\r\n }\r\n /**\r\n * Removes all listeners of a particular event type\r\n *\r\n * @param type Listener's type\r\n */\r\n removeType(type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._eachListener((info) => {\r\n if (info.type === type) {\r\n info.disposer.dispose();\r\n }\r\n });\r\n }\r\n /**\r\n * Checks if there's already a listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @return Has listener?\r\n */\r\n has(type, callback, context) {\r\n const index = $array.findIndex(this._listeners, (info) => {\r\n return info.once !== true && // Ignoring \"once\" listeners\r\n info.type === type &&\r\n (callback === undefined || info.callback === callback) &&\r\n info.context === context;\r\n });\r\n return index !== -1;\r\n }\r\n /**\r\n * Checks whether event of the particular type should be dispatched.\r\n *\r\n * @param type Event type\r\n * @return Dispatch?\r\n */\r\n _shouldDispatch(type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n const count = this._disabled[type];\r\n if (!$type.isNumber(count)) {\r\n return this._enabled;\r\n }\r\n else {\r\n if (count <= 1) {\r\n delete this._disabled[type];\r\n }\r\n else {\r\n --this._disabled[type];\r\n }\r\n return false;\r\n }\r\n }\r\n /**\r\n * [_eachListener description]\r\n *\r\n * All of this extra code is needed when a listener is removed while iterating\r\n *\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\n _eachListener(fn) {\r\n ++this._iterating;\r\n try {\r\n $array.each(this._listeners, fn);\r\n }\r\n finally {\r\n --this._iterating;\r\n // TODO should this be inside or outside the finally ?\r\n if (this._iterating === 0 && this._killed.length !== 0) {\r\n // Remove killed listeners\r\n $array.each(this._killed, (killed) => {\r\n this._removeListener(killed);\r\n });\r\n this._killed.length = 0;\r\n }\r\n }\r\n }\r\n /**\r\n * Dispatches an event immediately without waiting for next cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\r\n dispatch(type, event) {\r\n if (this._shouldDispatch(type)) {\r\n // TODO check if it's faster to use an object of listeners rather than a single big array\r\n // TODO if the function throws, maybe it should keep going ?\r\n this._eachListener((listener) => {\r\n if (!listener.killed && (listener.type === null || listener.type === type)) {\r\n listener.dispatch(type, event);\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * Shelves the event to be dispatched within next update cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\r\n /*public dispatchLater<Key extends keyof T>(type: Key, event: T[Key]): void {\r\n if (this._shouldDispatch(type)) {\r\n this._eachListener((listener) => {\r\n // TODO check if it's faster to use an object of listeners rather than a single big array\r\n if (!listener.killed && (listener.type === null || listener.type === type)) {\r\n // TODO if the function throws, maybe it should keep going ?\r\n // TODO dispatch during the update cycle, rather than using whenIdle\r\n $async.whenIdle(() => {\r\n if (!listener.killed) {\r\n listener.dispatch(type, event);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }*/\r\n /**\r\n * Creates, catalogs and returns an [[EventListener]].\r\n *\r\n * Event listener can be disposed.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @param dispatch\r\n * @returns An event listener\r\n */\r\n _on(once, type, callback, context, shouldClone, dispatch) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._removeExistingListener(once, type, callback, context);\r\n const info = {\r\n type: type,\r\n callback: callback,\r\n context: context,\r\n shouldClone: shouldClone,\r\n dispatch: dispatch,\r\n killed: false,\r\n once: once,\r\n disposer: new Disposer(() => {\r\n info.killed = true;\r\n this._removeListener(info);\r\n })\r\n };\r\n this._listeners.push(info);\r\n return info;\r\n }\r\n /**\r\n * Creates an event listener to be invoked on **any** event.\r\n *\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\r\n onAll(callback, context, shouldClone = true) {\r\n return this._on(false, null, callback, context, shouldClone, (_type, event) => callback.call(context, event)).disposer;\r\n }\r\n /**\r\n * Creates an event listener to be invoked on a specific event type.\r\n *\r\n * ```TypeScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n *\r\n * The above will invoke our custom event handler whenever series we put\r\n * event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\r\n on(type, callback, context, shouldClone = true) {\r\n return this._on(false, type, callback, context, shouldClone, (_type, event) => callback.call(context, event)).disposer;\r\n }\r\n /**\r\n * Creates an event listener to be invoked on a specific event type once.\r\n *\r\n * Once the event listener is invoked, it is automatically disposed.\r\n *\r\n * ```TypeScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n *\r\n * The above will invoke our custom event handler the first time series we\r\n * put event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\r\n once(type, callback, context, shouldClone = true) {\r\n const x = this._on(true, type, callback, context, shouldClone, (_type, event) => {\r\n x.disposer.dispose();\r\n callback.call(context, event);\r\n });\r\n // TODO maybe this should return a different Disposer ?\r\n return x.disposer;\r\n }\r\n /**\r\n * Removes the event listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\r\n off(type, callback, context) {\r\n this._removeExistingListener(false, type, callback, context);\r\n }\r\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n * @ignore\r\n */\r\n copyFrom(source) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n if (source === this) {\r\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n }\r\n const disposers = [];\r\n $array.each(source._listeners, (x) => {\r\n // TODO is this correct ?\r\n if (!x.killed && x.shouldClone) {\r\n if (x.type === null) {\r\n disposers.push(this.onAll(x.callback, x.context));\r\n }\r\n else if (x.once) {\r\n disposers.push(this.once(x.type, x.callback, x.context));\r\n }\r\n else {\r\n disposers.push(this.on(x.type, x.callback, x.context));\r\n }\r\n }\r\n });\r\n return new MultiDisposer(disposers);\r\n }\r\n}\r\n/**\r\n * A version of the [[EventDispatcher]] that dispatches events for a specific\r\n * target object.\r\n *\r\n * @ignore\r\n */\r\nexport class TargetedEventDispatcher extends EventDispatcher {\r\n /**\r\n * Constructor\r\n *\r\n * @param target Event dispatcher target\r\n */\r\n constructor(target) {\r\n super();\r\n /**\r\n * A target object which is originating events using this dispatcher.\r\n */\r\n Object.defineProperty(this, \"target\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.target = target;\r\n }\r\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n * @ignore\r\n */\r\n copyFrom(source) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n if (source === this) {\r\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n }\r\n const disposers = [];\r\n $array.each(source._listeners, (x) => {\r\n // TODO very hacky\r\n if (x.context === source.target) {\r\n return;\r\n }\r\n // TODO is this correct ?\r\n if (!x.killed && x.shouldClone) {\r\n if (x.type === null) {\r\n disposers.push(this.onAll(x.callback, x.context));\r\n }\r\n else if (x.once) {\r\n disposers.push(this.once(x.type, x.callback, x.context));\r\n }\r\n else {\r\n disposers.push(this.on(x.type, x.callback, x.context));\r\n }\r\n }\r\n });\r\n return new MultiDisposer(disposers);\r\n }\r\n}\r\n","import { EventDispatcher } from \"./EventDispatcher\";\r\nimport * as $array from \"./Array\";\r\n/**\r\n * Checks if specific index fits into length.\r\n *\r\n * @param index Index\r\n * @param len Length\r\n * @ignore\r\n */\r\nfunction checkBounds(index, len) {\r\n if (!(index >= 0 && index < len)) {\r\n throw new Error(\"Index out of bounds: \" + index);\r\n }\r\n}\r\n/**\r\n * A List class is used to hold a number of indexed items of the same type.\r\n */\r\nexport class List {\r\n /**\r\n * Constructor\r\n *\r\n * @param initial Inital list of values to add to list\r\n */\r\n constructor(initial = []) {\r\n /**\r\n * List values.\r\n */\r\n Object.defineProperty(this, \"_values\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new EventDispatcher()\r\n });\r\n this._values = initial;\r\n }\r\n /**\r\n * An array of values in the list.\r\n *\r\n * Do not use this property to add values. Rather use dedicated methods, like\r\n * `push()`, `removeIndex()`, etc.\r\n *\r\n * @readonly\r\n * @return List values\r\n */\r\n get values() {\r\n return this._values;\r\n }\r\n /**\r\n * Checks if list contains specific item reference.\r\n *\r\n * @param item Item to search for\r\n * @return `true` if found, `false` if not found\r\n */\r\n contains(value) {\r\n return this._values.indexOf(value) !== -1;\r\n }\r\n /**\r\n * Removes specific item from the list.\r\n *\r\n * @param item An item to remove\r\n */\r\n removeValue(value) {\r\n let i = 0;\r\n let length = this._values.length;\r\n while (i < length) {\r\n // TODO handle NaN\r\n if (this._values[i] === value) {\r\n this.removeIndex(i);\r\n --length;\r\n }\r\n else {\r\n ++i;\r\n }\r\n }\r\n }\r\n /**\r\n * Searches the list for specific item and returns its index.\r\n *\r\n * @param item An item to search for\r\n * @return Index or -1 if not found\r\n */\r\n indexOf(value) {\r\n return $array.indexOf(this._values, value);\r\n }\r\n /**\r\n * Number of items in list.\r\n *\r\n * @readonly\r\n * @return Number of items\r\n */\r\n get length() {\r\n return this._values.length;\r\n }\r\n /**\r\n * Checks if there's a value at specific index.\r\n *\r\n * @param index Index\r\n * @return Value exists?\r\n */\r\n hasIndex(index) {\r\n return index >= 0 && index < this._values.length;\r\n }\r\n /**\r\n * Returns an item at specified index.\r\n *\r\n * @param index Index\r\n * @return List item\r\n */\r\n getIndex(index) {\r\n return this._values[index];\r\n }\r\n _onPush(newValue) {\r\n if (this.events.isEnabled(\"push\")) {\r\n this.events.dispatch(\"push\", {\r\n type: \"push\",\r\n target: this,\r\n newValue\r\n });\r\n }\r\n }\r\n _onInsertIndex(index, newValue) {\r\n if (this.events.isEnabled(\"insertIndex\")) {\r\n this.events.dispatch(\"insertIndex\", {\r\n type: \"insertIndex\",\r\n target: this,\r\n index,\r\n newValue\r\n });\r\n }\r\n }\r\n _onSetIndex(index, oldValue, newValue) {\r\n if (this.events.isEnabled(\"setIndex\")) {\r\n this.events.dispatch(\"setIndex\", {\r\n type: \"setIndex\",\r\n target: this,\r\n index,\r\n oldValue,\r\n newValue\r\n });\r\n }\r\n }\r\n _onRemoveIndex(index, oldValue) {\r\n if (this.events.isEnabled(\"removeIndex\")) {\r\n this.events.dispatch(\"removeIndex\", {\r\n type: \"removeIndex\",\r\n target: this,\r\n index,\r\n oldValue\r\n });\r\n }\r\n }\r\n _onMoveIndex(oldIndex, newIndex, value) {\r\n if (this.events.isEnabled(\"moveIndex\")) {\r\n this.events.dispatch(\"moveIndex\", {\r\n type: \"moveIndex\",\r\n target: this,\r\n oldIndex,\r\n newIndex,\r\n value,\r\n });\r\n }\r\n }\r\n _onClear(oldValues) {\r\n if (this.events.isEnabled(\"clear\")) {\r\n this.events.dispatch(\"clear\", {\r\n type: \"clear\",\r\n target: this,\r\n oldValues\r\n });\r\n }\r\n }\r\n /**\r\n * Sets value at specific index.\r\n *\r\n * If there's already a value at the index, it is overwritten.\r\n *\r\n * @param index Index\r\n * @param value New value\r\n * @return New value\r\n */\r\n setIndex(index, value) {\r\n checkBounds(index, this._values.length);\r\n const oldValue = this._values[index];\r\n // Do nothing if the old value and the new value are the same\r\n if (oldValue !== value) {\r\n this._values[index] = value;\r\n this._onSetIndex(index, oldValue, value);\r\n }\r\n return oldValue;\r\n }\r\n /**\r\n * Adds an item to the list at a specific index, which pushes all the other\r\n * items further down the list.\r\n *\r\n * @param index Index\r\n * @param item An item to add\r\n */\r\n insertIndex(index, value) {\r\n checkBounds(index, this._values.length + 1);\r\n $array.insertIndex(this._values, index, value);\r\n this._onInsertIndex(index, value);\r\n return value;\r\n }\r\n /**\r\n * Swaps indexes of two items in the list.\r\n *\r\n * @param a Item 1\r\n * @param b Item 2\r\n */\r\n swap(a, b) {\r\n const len = this._values.length;\r\n checkBounds(a, len);\r\n checkBounds(b, len);\r\n if (a !== b) {\r\n const value_a = this._values[a];\r\n const value_b = this._values[b];\r\n this._values[a] = value_b;\r\n this._onSetIndex(a, value_a, value_b);\r\n this._values[b] = value_a;\r\n this._onSetIndex(b, value_b, value_a);\r\n }\r\n }\r\n /**\r\n * Removes a value at specific index.\r\n *\r\n * @param index Index of value to remove\r\n * @return Removed value\r\n */\r\n removeIndex(index) {\r\n checkBounds(index, this._values.length);\r\n const oldValue = this._values[index];\r\n $array.removeIndex(this._values, index);\r\n this._onRemoveIndex(index, oldValue);\r\n return oldValue;\r\n }\r\n /**\r\n * Moves an item to a specific index within the list.\r\n *\r\n * If the index is not specified it will move the item to the end of the\r\n * list.\r\n *\r\n * @param value Item to move\r\n * @param index Index to place item at\r\n */\r\n moveValue(value, toIndex) {\r\n // TODO don't do anything if the desired index is the same as the current index\r\n let index = this.indexOf(value);\r\n // TODO remove all old values rather than only the first ?\r\n if (index !== -1) {\r\n $array.removeIndex(this._values, index);\r\n if (toIndex == null) {\r\n const toIndex = this._values.length;\r\n this._values.push(value);\r\n this._onMoveIndex(index, toIndex, value);\r\n }\r\n else {\r\n $array.insertIndex(this._values, toIndex, value);\r\n this._onMoveIndex(index, toIndex, value);\r\n }\r\n }\r\n else if (toIndex == null) {\r\n this._values.push(value);\r\n this._onPush(value);\r\n }\r\n else {\r\n $array.insertIndex(this._values, toIndex, value);\r\n this._onInsertIndex(toIndex, value);\r\n }\r\n return value;\r\n }\r\n /**\r\n * Adds an item to the end of the list.\r\n *\r\n * @param item An item to add\r\n */\r\n push(value) {\r\n this._values.push(value);\r\n this._onPush(value);\r\n return value;\r\n }\r\n /**\r\n * Adds an item as a first item in the list.\r\n *\r\n * @param item An item to add\r\n */\r\n unshift(value) {\r\n this.insertIndex(0, value);\r\n return value;\r\n }\r\n /**\r\n * Adds multiple items to the list.\r\n *\r\n * @param items An Array of items to add\r\n */\r\n pushAll(values) {\r\n $array.each(values, (value) => {\r\n this.push(value);\r\n });\r\n }\r\n /**\r\n * Copies and adds items from abother list.\r\n *\r\n * @param source A list top copy items from\r\n */\r\n copyFrom(source) {\r\n this.pushAll(source._values);\r\n }\r\n /**\r\n * Returns the last item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\r\n pop() {\r\n let index = this._values.length - 1;\r\n return index < 0 ? undefined : this.removeIndex(this._values.length - 1);\r\n }\r\n /**\r\n * Returns the first item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\r\n shift() {\r\n return this._values.length ? this.removeIndex(0) : undefined;\r\n }\r\n /**\r\n * Sets multiple items to the list.\r\n *\r\n * All current items are removed.\r\n *\r\n * @param newArray New items\r\n */\r\n setAll(newArray) {\r\n const old = this._values;\r\n this._values = [];\r\n this._onClear(old);\r\n $array.each(newArray, (value) => {\r\n this._values.push(value);\r\n this._onPush(value);\r\n });\r\n }\r\n /**\r\n * Removes all items from the list.\r\n */\r\n clear() {\r\n this.setAll([]);\r\n }\r\n /**\r\n * Returns an ES6 iterator for the list.\r\n */\r\n *[Symbol.iterator]() {\r\n const length = this._values.length;\r\n for (let i = 0; i < length; ++i) {\r\n yield this._values[i];\r\n }\r\n }\r\n /**\r\n * Calls `f` for each element in the list.\r\n *\r\n * `f` should have at least one parameter defined which will get a current\r\n * item, with optional second argument - index.\r\n */\r\n each(f) {\r\n $array.each(this._values, f);\r\n }\r\n /**\r\n * Calls `f` for each element in the list, from right to left.\r\n *\r\n * `f` should have at least one parameter defined which will get a current\r\n * item, with optional second argument - index.\r\n */\r\n eachReverse(f) {\r\n $array.eachReverse(this._values, f);\r\n }\r\n}\r\n/**\r\n * A version of a [[List]] where the elements are disposed automatically when\r\n * removed from the list, unless `autoDispose` is set to `false`.\r\n */\r\nexport class ListAutoDispose extends List {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * Automatically disposes elements that are removed from the list.\r\n *\r\n * @default true\r\n */\r\n Object.defineProperty(this, \"autoDispose\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n _onSetIndex(index, oldValue, newValue) {\r\n if (this.autoDispose) {\r\n oldValue.dispose();\r\n }\r\n super._onSetIndex(index, oldValue, newValue);\r\n }\r\n _onRemoveIndex(index, oldValue) {\r\n if (this.autoDispose) {\r\n oldValue.dispose();\r\n }\r\n super._onRemoveIndex(index, oldValue);\r\n }\r\n _onClear(oldValues) {\r\n if (this.autoDispose) {\r\n $array.each(oldValues, (x) => {\r\n x.dispose();\r\n });\r\n }\r\n super._onClear(oldValues);\r\n }\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n if (this.autoDispose) {\r\n $array.each(this._values, (x) => {\r\n x.dispose();\r\n });\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * A version of a [[List]] that is able to create new elements as well as\r\n * apply additional settings to newly created items.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/list-templates/} for more info\r\n */\r\nexport class ListTemplate extends ListAutoDispose {\r\n constructor(template, make) {\r\n super();\r\n Object.defineProperty(this, \"template\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"make\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.template = template;\r\n this.make = make;\r\n }\r\n}\r\n","import { isNumber } from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * CONSTANTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nexport const PI = Math.PI;\r\nexport const HALFPI = PI / 2;\r\nexport const RADIANS = PI / 180;\r\nexport const DEGREES = 180 / PI;\r\n/**\r\n * Rounds the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @param floor In case value ends with 0.5 and precision is 0, we might need to floor the value instead of ceiling it.\r\n * @return Rounded value\r\n */\r\nexport function round(value, precision, floor) {\r\n if (!isNumber(precision) || precision <= 0) {\r\n let rounded = Math.round(value);\r\n if (floor) {\r\n if (rounded - value == 0.5) {\r\n rounded--;\r\n }\r\n }\r\n return rounded;\r\n }\r\n else {\r\n let d = Math.pow(10, precision);\r\n return Math.round(value * d) / d;\r\n }\r\n}\r\n/**\r\n * Ceils the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @return Rounded value\r\n */\r\nexport function ceil(value, precision) {\r\n if (!isNumber(precision) || precision <= 0) {\r\n return Math.ceil(value);\r\n }\r\n else {\r\n let d = Math.pow(10, precision);\r\n return Math.ceil(value * d) / d;\r\n }\r\n}\r\n/**\r\n * [getCubicControlPointA description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointA(p0, p1, p2, tensionX, tensionY) {\r\n return { x: ((-p0.x + p1.x / tensionX + p2.x) * tensionX), y: ((-p0.y + p1.y / tensionY + p2.y) * tensionY) };\r\n}\r\n/**\r\n * [getCubicControlPointB description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointB(p1, p2, p3, tensionX, tensionY) {\r\n return { x: ((p1.x + p2.x / tensionX - p3.x) * tensionX), y: ((p1.y + p2.y / tensionY - p3.y) * tensionY) };\r\n}\r\nexport function fitToRange(value, min, max) {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\n/**\r\n * Returns sine of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function sin(angle) {\r\n return Math.sin(RADIANS * angle);\r\n}\r\n/**\r\n * Returns tan of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function tan(angle) {\r\n return Math.tan(RADIANS * angle);\r\n}\r\n/**\r\n * Returns cosine of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Cosine\r\n */\r\nexport function cos(angle) {\r\n return Math.cos(RADIANS * angle);\r\n}\r\n// 0 to 360\r\nexport function normalizeAngle(value) {\r\n value = value % 360;\r\n if (value < 0) {\r\n value += 360;\r\n }\r\n return value;\r\n}\r\n// TODO this doesn't work properly for skewing, and it's probably broken for rotation too\r\nexport function getArcBounds(cx, cy, startAngle, endAngle, radius) {\r\n let minX = Number.MAX_VALUE;\r\n let minY = Number.MAX_VALUE;\r\n let maxX = -Number.MAX_VALUE;\r\n let maxY = -Number.MAX_VALUE;\r\n let bpoints = [];\r\n bpoints.push(getArcPoint(radius, startAngle));\r\n bpoints.push(getArcPoint(radius, endAngle));\r\n let fromAngle = Math.min(Math.floor(startAngle / 90) * 90, Math.floor(endAngle / 90) * 90);\r\n let toAngle = Math.max(Math.ceil(startAngle / 90) * 90, Math.ceil(endAngle / 90) * 90);\r\n for (let angle = fromAngle; angle <= toAngle; angle += 90) {\r\n if (angle >= startAngle && angle <= endAngle) {\r\n bpoints.push(getArcPoint(radius, angle));\r\n }\r\n }\r\n for (let i = 0; i < bpoints.length; i++) {\r\n let pt = bpoints[i];\r\n if (pt.x < minX) {\r\n minX = pt.x;\r\n }\r\n if (pt.y < minY) {\r\n minY = pt.y;\r\n }\r\n if (pt.x > maxX) {\r\n maxX = pt.x;\r\n }\r\n if (pt.y > maxY) {\r\n maxY = pt.y;\r\n }\r\n }\r\n return ({ left: cx + minX, top: cy + minY, right: cx + maxX, bottom: cy + maxY });\r\n}\r\n/**\r\n * Returns point on arc\r\n *\r\n * @param center point\r\n * @param radius\r\n * @param arc\r\n * @return {boolean}\r\n */\r\nexport function getArcPoint(radius, arc) {\r\n return ({ x: radius * cos(arc), y: radius * sin(arc) });\r\n}\r\nexport function mergeBounds(bounds) {\r\n const len = bounds.length;\r\n if (len > 0) {\r\n let bound = bounds[0];\r\n let left = bound.left;\r\n let top = bound.top;\r\n let right = bound.right;\r\n let bottom = bound.bottom;\r\n if (len > 1) {\r\n for (let i = 1; i < len; i++) {\r\n bound = bounds[i];\r\n left = Math.min(bound.left, left);\r\n right = Math.max(bound.right, right);\r\n top = Math.min(bound.top, top);\r\n bottom = Math.max(bound.bottom, bottom);\r\n }\r\n }\r\n return { left, right, top, bottom };\r\n }\r\n return { left: 0, right: 0, top: 0, bottom: 0 };\r\n}\r\nexport function fitAngleToRange(value, startAngle, endAngle) {\r\n if (startAngle > endAngle) {\r\n let temp = startAngle;\r\n startAngle = endAngle;\r\n endAngle = temp;\r\n }\r\n value = normalizeAngle(value);\r\n let count = (startAngle - normalizeAngle(startAngle)) / 360;\r\n if (value < startAngle) {\r\n value += 360 * (count + 1);\r\n }\r\n let maxEnd = startAngle + (endAngle - startAngle) / 2 + 180;\r\n let maxStart = startAngle + (endAngle - startAngle) / 2 - 180;\r\n if (value > endAngle) {\r\n if (value - 360 > startAngle) {\r\n value -= 360;\r\n }\r\n else {\r\n if (value < maxEnd) {\r\n value = endAngle;\r\n }\r\n else {\r\n value = startAngle;\r\n }\r\n }\r\n }\r\n if (value < startAngle) {\r\n if (value > maxStart) {\r\n value = startAngle;\r\n }\r\n else {\r\n value = endAngle;\r\n }\r\n }\r\n return value;\r\n}\r\nexport function inBounds(point, bounds) {\r\n if (point.x >= bounds.left && point.y >= bounds.top && point.x <= bounds.right && point.y <= bounds.bottom) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function getAngle(point1, point2) {\r\n if (!point2) {\r\n point2 = { x: point1.x * 2, y: point1.y * 2 };\r\n }\r\n let diffX = point2.x - point1.x;\r\n let diffY = point2.y - point1.y;\r\n let angle = Math.atan2(diffY, diffX) * DEGREES;\r\n if (angle < 0) {\r\n angle += 360;\r\n }\r\n return normalizeAngle(angle);\r\n}\r\n/**\r\n * [getPointOnQuadraticCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPoint [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\r\nexport function getPointOnQuadraticCurve(pointA, pointB, controlPoint, position) {\r\n let x = (1 - position) * (1 - position) * pointA.x + 2 * (1 - position) * position * controlPoint.x + position * position * pointB.x;\r\n let y = (1 - position) * (1 - position) * pointA.y + 2 * (1 - position) * position * controlPoint.y + position * position * pointB.y;\r\n return { x: x, y: y };\r\n}\r\nexport function getPointOnLine(pointA, pointB, position) {\r\n return { x: pointA.x + (pointB.x - pointA.x) * position, y: pointA.y + (pointB.y - pointA.y) * position };\r\n}\r\n/**\r\n * Returns the closest value from the array of values to the reference value.\r\n *\r\n * @param values Array of values\r\n * @param value Reference value\r\n * @return Closes value from the array\r\n */\r\nexport function closest(values, referenceValue) {\r\n return values.reduce(function (prev, curr) {\r\n return (Math.abs(curr - referenceValue) < Math.abs(prev - referenceValue) ? curr : prev);\r\n });\r\n}\r\n/**\r\n * Returns true if bounds overlap\r\n * @param bounds1 IBounds\r\n * @param bounds2 IBounds\r\n * @returns boolean\r\n */\r\nexport function boundsOverlap(bounds1, bounds2) {\r\n const horizontalOverlap = bounds1.left < bounds2.right && bounds1.right > bounds2.left;\r\n const verticalOverlap = bounds1.top < bounds2.bottom && bounds1.bottom > bounds2.top;\r\n return horizontalOverlap && verticalOverlap;\r\n}\r\n/**\r\n * Generates points of a spiral\r\n * @param cx\r\n * @param cy\r\n * @param radius\r\n * @param radiusY\r\n * @param innerRadius\r\n * @param step\r\n * @param radiusStep\r\n * @param startAngle\r\n * @param endAngle\r\n * @returns IPoint[]\r\n */\r\nexport function spiralPoints(cx, cy, radius, radiusY, innerRadius, step, radiusStep, startAngle, endAngle) {\r\n let r = innerRadius + 0.01;\r\n let angle = startAngle * RADIANS;\r\n let points = [];\r\n while (r < radius + radiusStep) {\r\n let stepSize = step;\r\n if (stepSize / 2 > r) {\r\n stepSize = 2 * r;\r\n }\r\n angle += 2 * Math.asin(stepSize / 2 / r);\r\n if (angle * DEGREES > endAngle + ((radius - innerRadius) / radiusStep) * 360) {\r\n break;\r\n }\r\n let degrees = angle * DEGREES;\r\n let point = { x: cx + r * Math.cos(angle), y: cy + r * radiusY / radius * Math.sin(angle) };\r\n points.push(point);\r\n r = innerRadius + degrees / 360 * radiusStep;\r\n }\r\n points.shift();\r\n return points;\r\n}\r\n/**\r\n * Returns true if circles overlap\r\n * @param circle1\r\n * @param circle2\r\n * @returns boolean\r\n */\r\nexport function circlesOverlap(circle1, circle2) {\r\n return Math.hypot(circle1.x - circle2.x, circle1.y - circle2.y) <= circle1.radius + circle2.radius;\r\n}\r\n","import * as $array from \"./Array\";\r\nexport function keys(object) {\r\n return Object.keys(object);\r\n}\r\n/**\r\n * Returns an array of object's property names ordered using specific ordering\r\n * function.\r\n *\r\n * @param object Source object\r\n * @param order Ordering function\r\n * @returns Object property names\r\n */\r\nexport function keysOrdered(object, order) {\r\n return keys(object).sort(order);\r\n}\r\nexport function copy(object) {\r\n return Object.assign({}, object);\r\n}\r\nexport function each(object, f) {\r\n keys(object).forEach((key) => {\r\n f(key, object[key]);\r\n });\r\n}\r\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * If return value of the function evaluates to `false` further iteration is\r\n * cancelled.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue(object, fn) {\r\n for (let key in object) {\r\n if (hasKey(object, key)) {\r\n if (!fn(key, object[key])) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Orders object properties using custom `ord` function and iterates through\r\n * them calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n * @param order Ordering function\r\n */\r\nexport function eachOrdered(object, fn, ord) {\r\n $array.each(keysOrdered(object, ord), (key) => {\r\n fn(key, object[key]);\r\n });\r\n}\r\n/**\r\n * Checks if `object` has a specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Has key?\r\n */\r\nexport function hasKey(object, key) {\r\n return {}.hasOwnProperty.call(object, key);\r\n}\r\n/**\r\n * Copies all properties of one object to the other, omitting undefined, but only if property in target object doesn't have a value set.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\r\nexport function softCopyProperties(source, target) {\r\n each(source, (key, value) => {\r\n // only if value is set\r\n //if ($type.hasValue(value) && !($type.hasValue((<any>target)[key]))) {\r\n if (value != null && target[key] == null) {\r\n target[key] = value;\r\n }\r\n });\r\n return target;\r\n}\r\n","/**\r\n * @ignore\r\n */\r\nexport function compare(left, right) {\r\n if (left === right) {\r\n return 0;\r\n }\r\n else if (left < right) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function compareArray(left, right, f) {\r\n const leftLength = left.length;\r\n const rightLength = right.length;\r\n const length = Math.min(leftLength, rightLength);\r\n for (let i = 0; i < length; ++i) {\r\n const order = f(left[i], right[i]);\r\n if (order !== 0) {\r\n return order;\r\n }\r\n }\r\n return compare(leftLength, rightLength);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function reverse(order) {\r\n if (order < 0) {\r\n return 1;\r\n }\r\n else if (order > 0) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function compareNumber(a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n else if (a < b) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n","/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a relative value (percent).\r\n *\r\n * The Percent object, can be instantiated using two ways:\r\n *\r\n * * Via `new Percent(X)`.\r\n * * Via `am5.percent(X)`.\r\n *\r\n * You can also use shortcut functions for `0%`, `50%`, and `100%`:\r\n * * `am5.p0`\r\n * * `am5.p50`\r\n * * `am5.p100`\r\n */\r\nexport class Percent {\r\n /**\r\n * Constructor.\r\n *\r\n * @param percent Percent value\r\n */\r\n constructor(percent) {\r\n /**\r\n * Value in percent.\r\n */\r\n Object.defineProperty(this, \"_value\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._value = percent;\r\n }\r\n /**\r\n * Relative value.\r\n *\r\n * E.g. 100% is 1, 50% is 0.5, etc.\r\n *\r\n * This is useful to apply transformations to other values. E.g.:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = new am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = new am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * Alternatively, you can use `am5.percent()` helper function:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * @readonly\r\n * @return Relative value\r\n */\r\n get value() {\r\n return this._value / 100;\r\n }\r\n /**\r\n * Value in percent.\r\n *\r\n * @readonly\r\n * @return Percent\r\n */\r\n get percent() {\r\n return this._value;\r\n }\r\n toString() {\r\n return \"\" + this._value + \"%\";\r\n }\r\n interpolate(min, max) {\r\n return min + (this.value * (max - min));\r\n }\r\n static normalize(percent, min, max) {\r\n if (percent instanceof Percent) {\r\n return percent;\r\n }\r\n else {\r\n if (min === max) {\r\n return new Percent(0);\r\n }\r\n else {\r\n return new Percent(Math.min(Math.max((percent - min) * (1 / (max - min)), 0), 1) * 100);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Converts numeric percent value to a proper [[Percent]] object.\r\n *\r\n * ```TypeScript\r\n * pieSeries.set(\"radius\", am5.percent(80));\r\n * ```\r\n * ```JavaScript\r\n * pieSeries.set(\"radius\", am5.percent(80));\r\n * ```\r\n *\r\n * @param value Percent\r\n * @return Percent object\r\n */\r\nexport function percent(value) {\r\n return new Percent(value);\r\n}\r\n/**\r\n * A shortcut function to `am5.percent(0)`.\r\n */\r\nexport const p0 = percent(0);\r\n/**\r\n * A shortcut function to `am5.percent(100)`.\r\n */\r\nexport const p100 = percent(100);\r\n/**\r\n * A shortcut function to `am5.percent(50)`.\r\n */\r\nexport const p50 = percent(50);\r\n/**\r\n * Checks if value is a [[Percent]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Input value\r\n * @return Is percent?\r\n */\r\nexport function isPercent(value) {\r\n return value instanceof Percent;\r\n}\r\n","/** @ignore */ /** */\r\nimport * as $type from \"./Type\";\r\nimport * as $utils from \"./Utils\";\r\nimport { Sprite } from \"../render/Sprite\";\r\nimport { TextFormatter } from \"./TextFormatter\";\r\n/**\r\n * @ignore\r\n */\r\nexport function populateString(target, string) {\r\n if (string != null) {\r\n string = \"\" + string;\r\n string = TextFormatter.escape(string);\r\n let tags = string.match(/\\{([^}]+)\\}/g);\r\n let i;\r\n if (tags) {\r\n for (i = 0; i < tags.length; i++) {\r\n let tag = tags[i].replace(/\\{([^}]+)\\}/, \"$1\");\r\n let value = getTagValue(target, tag, \"\");\r\n if (value == null) {\r\n value = \"\";\r\n }\r\n string = string.split(tags[i]).join(value);\r\n }\r\n }\r\n string = TextFormatter.unescape(string);\r\n }\r\n else {\r\n string = \"\";\r\n }\r\n // TODO: apply adapter?\r\n return string;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction getTagValue(target, tagName, format) {\r\n let value;\r\n const dataItem = target.dataItem;\r\n // Parse parts\r\n let parts = [];\r\n let reg = /(format[a-zA-Z]*)\\((.*)\\)|([^.]+)/g;\r\n let matches;\r\n while (true) {\r\n matches = reg.exec(tagName);\r\n if (matches === null) {\r\n break;\r\n }\r\n if (matches[3]) {\r\n // Simple property\r\n parts.push({\r\n prop: matches[3]\r\n });\r\n // Check if maybe we should force a formatter on this value\r\n const dateFields = target.getDateFormatter().get(\"dateFields\", []);\r\n const numericFields = target.getNumberFormatter().get(\"numericFields\", []);\r\n const durationFields = target.getDurationFormatter().get(\"durationFields\", []);\r\n if (dateFields.indexOf(matches[3]) !== -1) {\r\n parts.push({\r\n method: \"formatDate\",\r\n params: []\r\n });\r\n }\r\n else if (numericFields.indexOf(matches[3]) !== -1) {\r\n parts.push({\r\n method: \"formatNumber\",\r\n params: []\r\n });\r\n }\r\n else if (durationFields.indexOf(matches[3]) !== -1) {\r\n parts.push({\r\n method: \"formatDuration\",\r\n params: []\r\n });\r\n }\r\n }\r\n else {\r\n // Method\r\n // Parse parameters\r\n let params = [];\r\n if ($utils.trim(matches[2]) != \"\") {\r\n let reg2 = /'([^']*)'|\"([^\"]*)\"|([0-9\\-]+)/g;\r\n let matches2;\r\n while (true) {\r\n matches2 = reg2.exec(matches[2]);\r\n if (matches2 === null) {\r\n break;\r\n }\r\n params.push(matches2[1] || matches2[2] || matches2[3]);\r\n }\r\n }\r\n parts.push({\r\n method: matches[1],\r\n params: params\r\n });\r\n }\r\n }\r\n // Check if we can retrieve the value from data item\r\n if (dataItem) {\r\n // Check values\r\n value = getTagValueFromObject(target, parts, dataItem._settings);\r\n // Check properties\r\n if (value == null || $type.isObject(value)) { // isObject helps to solve problem with date axis, as for example dateX will get dateX from values object and won't get to the dateX date.\r\n value = getTagValueFromObject(target, parts, dataItem);\r\n }\r\n // Check data context\r\n let dataContext = dataItem.dataContext;\r\n if (value == null && dataContext) {\r\n value = getTagValueFromObject(target, parts, dataContext);\r\n // Maybe it's a literal dot-separated name of the key in dataContext?\r\n if (value == null) {\r\n value = getTagValueFromObject(target, [{\r\n prop: tagName\r\n }], dataContext);\r\n }\r\n // scond data context level sometimes exist (tree map)\r\n if (value == null && dataContext.dataContext) {\r\n value = getTagValueFromObject(target, parts, dataContext.dataContext);\r\n }\r\n }\r\n // Check component's data item\r\n if (value == null && dataItem.component && dataItem.component.dataItem !== dataItem) {\r\n value = getTagValue(dataItem.component, tagName, format);\r\n }\r\n }\r\n // Check sprite's properties\r\n if (value == null) {\r\n value = getTagValueFromObject(target, parts, target);\r\n }\r\n // Finally, check the parent\r\n if (value == null && target.parent) {\r\n value = getTagValue(target.parent, tagName, format);\r\n }\r\n return value;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction getCustomDataValue(target, prop) {\r\n const customData = target.getPrivate(\"customData\");\r\n if ($type.isObject(customData)) {\r\n return customData[prop];\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getTagValueFromObject(target, parts, object, format) {\r\n let current = object;\r\n let formatApplied = false;\r\n for (let i = 0, len = parts.length; i < len; i++) {\r\n let part = parts[i];\r\n if (part.prop) {\r\n // Regular property\r\n if (current instanceof Sprite) {\r\n let tmp = current.get(part.prop);\r\n if (tmp == null)\r\n tmp = current.getPrivate(part.prop);\r\n if (tmp == null)\r\n tmp = getCustomDataValue(current, part.prop);\r\n if (tmp == null)\r\n tmp = current[part.prop];\r\n current = tmp;\r\n }\r\n else if (current.get) {\r\n let tmp = current.get(part.prop);\r\n if (tmp == null)\r\n tmp = current[part.prop];\r\n current = tmp;\r\n }\r\n else {\r\n current = current[part.prop];\r\n }\r\n if (current == null) {\r\n // Not set, return undefined\r\n return;\r\n }\r\n }\r\n else {\r\n // Method\r\n switch (part.method) {\r\n case \"formatNumber\":\r\n let numberValue = $type.toNumber(current);\r\n if (numberValue != null) {\r\n current = target.getNumberFormatter().format(numberValue, format || part.params[0] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"formatDate\":\r\n let dateValue = $type.toDate(current);\r\n if (!$type.isDate(dateValue) || $type.isNaN(dateValue.getTime())) {\r\n // Was not able to get date out of value, quitting and letting\r\n // calling method try another value\r\n return;\r\n }\r\n if (dateValue != null) {\r\n current = target.getDateFormatter().format(dateValue, format || part.params[0] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"formatDuration\":\r\n let durationValue = $type.toNumber(current);\r\n if (durationValue != null) {\r\n current = target.getDurationFormatter().format(durationValue, format || part.params[0] || undefined, part.params[1] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"urlEncode\":\r\n case \"encodeURIComponent\":\r\n current = encodeURIComponent(current);\r\n break;\r\n default:\r\n if (current[part.method]) {\r\n current[part.method].apply(object, part.params);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n // Apply default format if it wasn't applied explicitly\r\n if (!formatApplied) {\r\n let formatParts = [{\r\n method: \"\",\r\n params: format\r\n }];\r\n if (format == null) {\r\n // Format is not set\r\n // Determine from the type of the value\r\n if ($type.isNumber(current)) {\r\n formatParts[0].method = \"formatNumber\";\r\n formatParts[0].params = \"\";\r\n }\r\n else if ($type.isDate(current)) {\r\n formatParts[0].method = \"formatDate\";\r\n formatParts[0].params = \"\";\r\n }\r\n }\r\n else {\r\n // Format set\r\n // Try to determine formatter based on the format\r\n let formatterType = $utils.getFormat(format);\r\n // format\r\n if (formatterType === \"number\") {\r\n formatParts[0].method = \"formatNumber\";\r\n }\r\n else if (formatterType === \"date\") {\r\n formatParts[0].method = \"formatDate\";\r\n }\r\n else if (formatterType === \"duration\") {\r\n formatParts[0].method = \"formatDuration\";\r\n }\r\n }\r\n // Apply format\r\n if (formatParts[0].method) {\r\n current = getTagValueFromObject(target, formatParts, current);\r\n }\r\n }\r\n return current;\r\n}\r\n","import { EventDispatcher } from \"./EventDispatcher\";\r\nimport { Disposer, MultiDisposer } from \"./Disposer\";\r\nimport * as $array from \"./Array\";\r\nimport * as $object from \"./Object\";\r\nexport class TemplateState {\r\n constructor(name, template, settings) {\r\n Object.defineProperty(this, \"_settings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_name\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_template\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._name = name;\r\n this._template = template;\r\n this._settings = settings;\r\n }\r\n get(key, fallback) {\r\n const value = this._settings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n set(key, value) {\r\n this._settings[key] = value;\r\n // TODO maybe only do this if the value changed ?\r\n this._template._stateChanged(this._name);\r\n }\r\n remove(key) {\r\n delete this._settings[key];\r\n // TODO maybe only do this if the value changed ?\r\n this._template._stateChanged(this._name);\r\n }\r\n setAll(settings) {\r\n $object.keys(settings).forEach((key) => {\r\n this._settings[key] = settings[key];\r\n });\r\n this._template._stateChanged(this._name);\r\n }\r\n _apply(other, seen) {\r\n $object.each(this._settings, (key, value) => {\r\n if (!seen[key] && !other._userSettings[key]) {\r\n seen[key] = true;\r\n other.setRaw(key, value);\r\n }\r\n });\r\n }\r\n}\r\nexport class TemplateStates {\r\n constructor(template) {\r\n Object.defineProperty(this, \"_template\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_states\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n this._template = template;\r\n }\r\n lookup(name) {\r\n return this._states[name];\r\n }\r\n create(name, settings) {\r\n const state = this._states[name];\r\n if (state) {\r\n state.setAll(settings);\r\n return state;\r\n }\r\n else {\r\n const state = new TemplateState(name, this._template, settings);\r\n this._states[name] = state;\r\n this._template._stateChanged(name);\r\n return state;\r\n }\r\n }\r\n remove(name) {\r\n delete this._states[name];\r\n this._template._stateChanged(name);\r\n }\r\n _apply(entity, state) {\r\n $object.each(this._states, (key, value) => {\r\n let seen = state.states[key];\r\n if (seen == null) {\r\n seen = state.states[key] = {};\r\n }\r\n const other = entity.states.create(key, {});\r\n value._apply(other, seen);\r\n });\r\n }\r\n}\r\nexport class TemplateAdapters {\r\n constructor() {\r\n Object.defineProperty(this, \"_callbacks\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n }\r\n add(key, callback) {\r\n let callbacks = this._callbacks[key];\r\n if (callbacks === undefined) {\r\n callbacks = this._callbacks[key] = [];\r\n }\r\n callbacks.push(callback);\r\n return new Disposer(() => {\r\n $array.removeFirst(callbacks, callback);\r\n if (callbacks.length === 0) {\r\n delete this._callbacks[key];\r\n }\r\n });\r\n }\r\n remove(key) {\r\n const callbacks = this._callbacks[key];\r\n if (callbacks !== undefined) {\r\n delete this._callbacks[key];\r\n }\r\n }\r\n _apply(entity) {\r\n const disposers = [];\r\n $object.each(this._callbacks, (key, callbacks) => {\r\n $array.each(callbacks, (callback) => {\r\n disposers.push(entity.adapters.add(key, callback));\r\n });\r\n });\r\n return new MultiDisposer(disposers);\r\n }\r\n}\r\n// TODO maybe extend from Properties ?\r\nexport class Template {\r\n constructor(settings, isReal) {\r\n Object.defineProperty(this, \"_settings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_privateSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n // TODO code duplication with Properties\r\n Object.defineProperty(this, \"_settingEvents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_privateSettingEvents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_entities\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"states\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new TemplateStates(this)\r\n });\r\n Object.defineProperty(this, \"adapters\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new TemplateAdapters()\r\n });\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new EventDispatcher()\r\n });\r\n Object.defineProperty(this, \"setup\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n this._settings = settings;\r\n }\r\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param root Root element\r\n * @param settings Settings\r\n * @param template Template\r\n * @return Instantiated object\r\n */\r\n static new(settings) {\r\n return new Template(settings, true);\r\n }\r\n /**\r\n * Array of all entities using this template.\r\n */\r\n get entities() {\r\n return this._entities;\r\n }\r\n get(key, fallback) {\r\n const value = this._settings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n setRaw(key, value) {\r\n this._settings[key] = value;\r\n }\r\n set(key, value) {\r\n if (this._settings[key] !== value) {\r\n this.setRaw(key, value);\r\n this._entities.forEach((entity) => {\r\n entity._setTemplateProperty(this, key, value);\r\n });\r\n }\r\n }\r\n remove(key) {\r\n if (key in this._settings) {\r\n delete this._settings[key];\r\n this._entities.forEach((entity) => {\r\n entity._removeTemplateProperty(key);\r\n });\r\n }\r\n }\r\n removeAll() {\r\n $object.each(this._settings, (key, _value) => {\r\n this.remove(key);\r\n });\r\n }\r\n getPrivate(key, fallback) {\r\n const value = this._privateSettings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n setPrivateRaw(key, value) {\r\n this._privateSettings[key] = value;\r\n return value;\r\n }\r\n setPrivate(key, value) {\r\n if (this._privateSettings[key] !== value) {\r\n this.setPrivateRaw(key, value);\r\n this._entities.forEach((entity) => {\r\n entity._setTemplatePrivateProperty(this, key, value);\r\n });\r\n }\r\n return value;\r\n }\r\n removePrivate(key) {\r\n if (key in this._privateSettings) {\r\n delete this._privateSettings[key];\r\n this._entities.forEach((entity) => {\r\n entity._removeTemplatePrivateProperty(key);\r\n });\r\n }\r\n }\r\n setAll(value) {\r\n $object.each(value, (key, value) => {\r\n this.set(key, value);\r\n });\r\n }\r\n // TODO code duplication with Properties\r\n on(key, callback) {\r\n let events = this._settingEvents[key];\r\n if (events === undefined) {\r\n events = this._settingEvents[key] = [];\r\n }\r\n events.push(callback);\r\n return new Disposer(() => {\r\n $array.removeFirst(events, callback);\r\n if (events.length === 0) {\r\n delete this._settingEvents[key];\r\n }\r\n });\r\n }\r\n // TODO code duplication with Properties\r\n onPrivate(key, callback) {\r\n let events = this._privateSettingEvents[key];\r\n if (events === undefined) {\r\n events = this._privateSettingEvents[key] = [];\r\n }\r\n events.push(callback);\r\n return new Disposer(() => {\r\n $array.removeFirst(events, callback);\r\n if (events.length === 0) {\r\n delete this._privateSettingEvents[key];\r\n }\r\n });\r\n }\r\n _apply(entity, state) {\r\n const disposers = [];\r\n $object.each(this._settingEvents, (key, events) => {\r\n $array.each(events, (event) => {\r\n disposers.push(entity.on(key, event));\r\n });\r\n });\r\n $object.each(this._privateSettingEvents, (key, events) => {\r\n $array.each(events, (event) => {\r\n disposers.push(entity.onPrivate(key, event));\r\n });\r\n });\r\n this.states._apply(entity, state);\r\n disposers.push(this.adapters._apply(entity));\r\n disposers.push(entity.events.copyFrom(this.events));\r\n return new MultiDisposer(disposers);\r\n }\r\n _setObjectTemplate(entity) {\r\n this._entities.push(entity);\r\n }\r\n _removeObjectTemplate(entity) {\r\n $array.remove(this._entities, entity);\r\n }\r\n _stateChanged(name) {\r\n this._entities.forEach((entity) => {\r\n entity._applyStateByKey(name);\r\n });\r\n }\r\n}\r\n","import { Color } from \"./Color\";\r\nimport * as $type from \"./Type\";\r\nexport class TextFormatter {\r\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\r\n static escape(text) {\r\n return text.\r\n replace(/\\[\\[/g, this.prefix + \"1\").\r\n replace(/([^\\/\\]]{1})\\]\\]/g, \"$1\" + this.prefix + \"2\").\r\n replace(/\\]\\]/g, this.prefix + \"2\").\r\n replace(/\\{\\{/g, this.prefix + \"3\").\r\n replace(/\\}\\}/g, this.prefix + \"4\").\r\n replace(/\\'\\'/g, this.prefix + \"5\");\r\n }\r\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\r\n static unescape(text) {\r\n return text.\r\n replace(new RegExp(this.prefix + \"1\", \"g\"), \"[[\").\r\n replace(new RegExp(this.prefix + \"2\", \"g\"), \"]]\").\r\n replace(new RegExp(this.prefix + \"3\", \"g\"), \"{{\").\r\n replace(new RegExp(this.prefix + \"4\", \"g\"), \"}}\").\r\n replace(new RegExp(this.prefix + \"5\", \"g\"), \"''\");\r\n }\r\n /**\r\n * Cleans up the text text for leftover double square brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Cleaned up text\r\n */\r\n static cleanUp(text) {\r\n return text.\r\n replace(/\\[\\[/g, \"[\").\r\n replace(/\\]\\]/g, \"]\").\r\n replace(/\\{\\{/g, \"{\").\r\n replace(/\\}\\}/g, \"}\").\r\n replace(/\\'\\'/g, \"'\");\r\n }\r\n /**\r\n * Splits string into chunks. (style blocks, quoted blocks, regular blocks)\r\n *\r\n * If the second parameter `quotedBlocks` is set to `true` this method will\r\n * also single out text blocks enclosed within single quotes that no\r\n * formatting should be applied to, and they should be displayed as is.\r\n *\r\n * Default for the above is `false`, so that you can use single quote in text\r\n * without escaping it.\r\n *\r\n * If enabled, single quotes can be escaped by doubling it - adding two\r\n * single quotes, which will be replaced by a one single quote in the final\r\n * output.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to chunk\r\n * @param quotedBlocks Use quoted blocks\r\n * @param noFormatting Formatting blocks will be treated as regular text\r\n * @return Array of string chunks\r\n */\r\n static chunk(text, quotedBlocks = false, noFormatting = false) {\r\n // Init result\r\n let res = [];\r\n // Replace double (escaped) square spaces and quotes with temporary codes\r\n text = this.escape(text);\r\n // Deal with style blocks\r\n let chunks = quotedBlocks ? text.split(\"'\") : [text];\r\n for (let i = 0; i < chunks.length; i++) {\r\n let chunk = chunks[i];\r\n // Empty?\r\n if (chunk === \"\") {\r\n continue;\r\n }\r\n if ((i % 2) === 0) {\r\n // Text outside quotes\r\n // Parse for style blocks which are \"text\" chunks, the rest chunks are\r\n // \"value\"\r\n chunk = chunk.replace(/\\]\\[/g, \"]\" + $type.PLACEHOLDER + \"[\");\r\n chunk = chunk.replace(/\\[\\]/g, \"[ ]\");\r\n let chunks2 = chunk.split(/[\\[\\]]+/);\r\n for (let i2 = 0; i2 < chunks2.length; i2++) {\r\n let chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\r\n // Placeholder?\r\n if (chunk2 === $type.PLACEHOLDER) {\r\n continue;\r\n }\r\n // Empty?\r\n if (chunk2 === \"\") {\r\n continue;\r\n }\r\n // Block or value\r\n if ((i2 % 2) === 0) {\r\n res.push({\r\n \"type\": \"value\",\r\n \"text\": chunk2\r\n });\r\n }\r\n else {\r\n res.push({\r\n \"type\": noFormatting ? \"value\" : \"format\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n // A text within doublequotes\r\n // All chunks are \"text\"\r\n let chunks2 = chunk.split(/[\\[\\]]+/);\r\n for (let i2 = 0; i2 < chunks2.length; i2++) {\r\n let chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\r\n // Empty?\r\n if (chunk2 === \"\") {\r\n continue;\r\n }\r\n // Block or text\r\n if ((i2 % 2) === 0) {\r\n res.push({\r\n \"type\": \"text\",\r\n \"text\": chunk2\r\n });\r\n }\r\n else if (this.isImage(chunk2)) {\r\n res.push({\r\n \"type\": \"image\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n else {\r\n res.push({\r\n \"type\": \"format\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n /**\r\n * Checks if supplied format contains image information and should be\r\n * formatted as such.\r\n * I.e.: `[img: myImage.png]`\r\n *\r\n * @ignore\r\n * @param text Format\r\n * @return true if it is an image\r\n */\r\n static isImage(text) {\r\n return text.match(/img[ ]?:/) ? true : false;\r\n }\r\n static getTextStyle(style) {\r\n // let textStyle: string[] = [];\r\n // let textFill: string | undefined;\r\n let format = {};\r\n if (style == \"\" || style == \"[ ]\") {\r\n return {};\r\n }\r\n // Pre-process quoted text\r\n const q = style.match(/('[^']*')|(\"[^\"]*\")/gi);\r\n if (q) {\r\n for (let i = 0; i < q.length; i++) {\r\n style = style.replace(q[i], q[i].replace(/['\"]*/g, \"\").replace(/[ ]+/g, \"+\"));\r\n }\r\n }\r\n // Get style parts\r\n let b = style.match(/([\\w\\-]*:[\\s]?[^;\\s\\]]*)|(\\#[\\w]{1,6})|([\\w\\-]+)|(\\/)/gi);\r\n // Empty?\r\n if (!b) {\r\n return {};\r\n }\r\n // Check each part\r\n for (let i = 0; i < b.length; i++) {\r\n if (b[i].match(/^(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)$/i)) {\r\n format.fontWeight = b[i];\r\n }\r\n else if (b[i].match(/^(underline|line-through)$/i)) {\r\n format.textDecoration = b[i];\r\n }\r\n else if (b[i] == \"/\") {\r\n // Just closing tag\r\n // Do nothing\r\n }\r\n else if (!b[i].match(/:/)) {\r\n // Color\r\n format.fill = Color.fromString(b[i]);\r\n }\r\n else {\r\n const p = b[i].replace(\"+\", \" \").split(/:[ ]*/);\r\n format[p[0]] = p[1];\r\n //textStyle.push(b[i].replace(/^[a-zA-Z]:[ ]*/, \"\"));\r\n //b[i] = b[i].replace(/\\+/g, \" \");\r\n }\r\n }\r\n return format;\r\n }\r\n}\r\nObject.defineProperty(TextFormatter, \"prefix\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"__amcharts__\"\r\n});\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $type from \"./Type\";\r\nimport * as $utils from \"./Utils\";\r\n/**\r\n * Returns a `Promise` which can be used to execute code after number of\r\n * milliseconds.\r\n *\r\n * @param ms Sleep duration in ms\r\n * @return Promise\r\n */\r\nexport function sleep(ms) {\r\n return new Promise((resolve, _reject) => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\r\n/**\r\n * Maps time period names to their numeric representations in milliseconds.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport let timeUnitDurations = {\r\n millisecond: 1,\r\n second: 1000,\r\n minute: 60000,\r\n hour: 3600000,\r\n day: 86400000,\r\n week: 604800000,\r\n month: 365.242 / 12 * 86400000,\r\n year: 31536000000\r\n};\r\n/**\r\n * Returns the next time unit that goes after source `unit`.\r\n *\r\n * E.g. \"hour\" is the next unit after \"minute\", etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param unit Source time unit\r\n * @return Next time unit\r\n */\r\nexport function getNextUnit(unit) {\r\n switch (unit) {\r\n case \"year\":\r\n return;\r\n case \"month\":\r\n return \"year\";\r\n case \"week\":\r\n return \"month\";\r\n case \"day\":\r\n return \"month\"; // not a mistake\r\n case \"hour\":\r\n return \"day\";\r\n case \"minute\":\r\n return \"hour\";\r\n case \"second\":\r\n return \"minute\";\r\n case \"millisecond\":\r\n return \"second\";\r\n }\r\n}\r\n/**\r\n * Returns number of milliseconds in the `count` of time `unit`.\r\n *\r\n * Available units: \"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\",\r\n * \"month\", and \"year\".\r\n *\r\n * @param unit Time unit\r\n * @param count Number of units\r\n * @return Milliseconds\r\n */\r\nexport function getDuration(unit, count) {\r\n if (count == null) {\r\n count = 1;\r\n }\r\n return timeUnitDurations[unit] * count;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getIntervalDuration(interval) {\r\n if (interval) {\r\n return timeUnitDurations[interval.timeUnit] * interval.count;\r\n }\r\n return 0;\r\n}\r\nexport function getDateIntervalDuration(interval, date, firstDateOfWeek, utc, timezone) {\r\n const unit = interval.timeUnit;\r\n const count = interval.count;\r\n if (unit == \"hour\" || unit == \"minute\" || unit == \"second\" || unit == \"millisecond\") {\r\n return timeUnitDurations[interval.timeUnit] * interval.count;\r\n }\r\n else {\r\n const firstTime = round(new Date(date.getTime()), unit, count, firstDateOfWeek, utc, undefined, timezone).getTime();\r\n let lastTime = firstTime + count * getDuration(unit) * 1.05;\r\n lastTime = round(new Date(lastTime), unit, 1, firstDateOfWeek, utc, undefined, timezone).getTime();\r\n return lastTime - firstTime;\r\n }\r\n}\r\n/**\r\n * Returns current `Date` object.\r\n *\r\n * @return Current date\r\n */\r\nexport function now() {\r\n return new Date();\r\n}\r\n/**\r\n * Returns current timestamp.\r\n *\r\n * @return Current timestamp\r\n */\r\nexport function getTime() {\r\n return now().getTime();\r\n}\r\n/**\r\n * Returns a copy of the `Date` object.\r\n *\r\n * @param date Source date\r\n * @return Copy\r\n */\r\nexport function copy(date) {\r\n return new Date(date.getTime()); // todo: check if this is ok. new Date(date) used to strip milliseconds on FF in v3\r\n}\r\n/**\r\n * Checks if the `unit` part of two `Date` objects do not match. Two dates\r\n * represent a \"range\" of time, rather the same time date.\r\n *\r\n * @param timeOne timestamp\r\n * @param timeTwo timestamp\r\n * @param unit Time unit to check\r\n * @return Range?\r\n */\r\nexport function checkChange(timeOne, timeTwo, unit, utc, timezone) {\r\n // quick\r\n if ((timeTwo - timeOne) > getDuration(unit, 1.2)) {\r\n return true;\r\n }\r\n let dateOne = new Date(timeOne);\r\n let dateTwo = new Date(timeTwo);\r\n if (timezone) {\r\n dateOne = timezone.convertLocal(dateOne);\r\n dateTwo = timezone.convertLocal(dateTwo);\r\n }\r\n let timeZoneOffset1 = 0;\r\n let timeZoneOffset2 = 0;\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset1 = dateOne.getTimezoneOffset();\r\n dateOne.setUTCMinutes(dateOne.getUTCMinutes() - timeZoneOffset1);\r\n timeZoneOffset2 = dateTwo.getTimezoneOffset();\r\n dateTwo.setUTCMinutes(dateTwo.getUTCMinutes() - timeZoneOffset2);\r\n }\r\n let changed = false;\r\n switch (unit) {\r\n case \"year\":\r\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"month\":\r\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\r\n changed = true;\r\n }\r\n else if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"day\":\r\n if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\r\n changed = true;\r\n }\r\n else if (dateOne.getUTCDate() != dateTwo.getUTCDate()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"hour\":\r\n if (dateOne.getUTCHours() != dateTwo.getUTCHours()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"minute\":\r\n if (dateOne.getUTCMinutes() != dateTwo.getUTCMinutes()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"second\":\r\n if (dateOne.getUTCSeconds() != dateTwo.getUTCSeconds()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"millisecond\":\r\n if (dateOne.getTime() != dateTwo.getTime()) {\r\n changed = true;\r\n }\r\n break;\r\n }\r\n if (changed) {\r\n return changed;\r\n }\r\n let nextUnit = getNextUnit(unit);\r\n if (nextUnit) {\r\n return checkChange(timeOne, timeTwo, nextUnit, utc, timezone);\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Adds `count` of time `unit` to the source date. Returns a modified `Date` object.\r\n *\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to add\r\n * @return Modified date\r\n */\r\nexport function add(date, unit, count, utc, timezone) {\r\n let timeZoneOffset = 0;\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset = date.getTimezoneOffset();\r\n if (timezone) {\r\n timeZoneOffset -= timezone.offsetUTC(date);\r\n }\r\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\r\n }\r\n switch (unit) {\r\n case \"day\":\r\n let day = date.getUTCDate();\r\n date.setUTCDate(day + count);\r\n break;\r\n case \"second\":\r\n let seconds = date.getUTCSeconds();\r\n date.setUTCSeconds(seconds + count);\r\n break;\r\n case \"millisecond\":\r\n let milliseconds = date.getUTCMilliseconds();\r\n date.setUTCMilliseconds(milliseconds + count);\r\n break;\r\n case \"hour\":\r\n let hours = date.getUTCHours();\r\n date.setUTCHours(hours + count);\r\n break;\r\n case \"minute\":\r\n let minutes = date.getUTCMinutes();\r\n date.setUTCMinutes(minutes + count);\r\n break;\r\n case \"year\":\r\n let year = date.getUTCFullYear();\r\n date.setUTCFullYear(year + count);\r\n break;\r\n case \"month\":\r\n const endDays = date.getUTCDate();\r\n const startDays = new Date(date.getUTCFullYear(), date.getUTCMonth(), 0).getUTCDate();\r\n let month = date.getUTCMonth();\r\n if (endDays > startDays) {\r\n date.setUTCMonth(month + count, startDays);\r\n }\r\n else {\r\n date.setUTCMonth(month + count);\r\n }\r\n break;\r\n case \"week\":\r\n let wday = date.getUTCDate();\r\n date.setUTCDate(wday + count * 7);\r\n break;\r\n }\r\n if (!utc && unit != \"millisecond\") {\r\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\r\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\r\n let newTimeZoneOffset = date.getTimezoneOffset();\r\n if (timezone) {\r\n newTimeZoneOffset += timezone.offsetUTC(date);\r\n }\r\n if (newTimeZoneOffset != timeZoneOffset) {\r\n let diff = newTimeZoneOffset - timeZoneOffset;\r\n date.setUTCMinutes(date.getUTCMinutes() + diff);\r\n // solves issues if new time falls back to old time zone\r\n if (date.getTimezoneOffset() != newTimeZoneOffset) {\r\n date.setUTCMinutes(date.getUTCMinutes() - diff);\r\n }\r\n }\r\n }\r\n }\r\n return date;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function roun(time, unit, count, root, firstTime) {\r\n let firstDate;\r\n if (firstTime != null) {\r\n firstDate = new Date(firstTime);\r\n }\r\n return round(new Date(time), unit, count, root.locale.firstDayOfWeek, root.utc, firstDate, root.timezone).getTime();\r\n}\r\n/**\r\n * \"Rounds\" the date to specific time unit.\r\n *\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to round to\r\n * @param firstDateOfWeek First day of week\r\n * @param utc Use UTC timezone\r\n * @param firstDate First date to round to\r\n * @param roundMinutes Minutes to round to (some timezones use non-whole hour)\r\n * @param timezone Use specific named timezone when rounding\r\n * @return New date\r\n */\r\nexport function round(date, unit, count, firstDateOfWeek, utc, firstDate, timezone) {\r\n if (!timezone || utc) {\r\n let timeZoneOffset = 0;\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset = date.getTimezoneOffset();\r\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\r\n }\r\n switch (unit) {\r\n case \"day\":\r\n let day = date.getUTCDate();\r\n if (count > 1) {\r\n //\tday = Math.floor(day / count) * count;\r\n if (firstDate) {\r\n firstDate = round(firstDate, \"day\", 1);\r\n let difference = date.getTime() - firstDate.getTime();\r\n let unitCount = Math.floor(difference / getDuration(\"day\") / count);\r\n let duration = getDuration(\"day\", unitCount * count);\r\n date.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\r\n }\r\n }\r\n else {\r\n date.setUTCDate(day);\r\n }\r\n date.setUTCHours(0, 0, 0, 0);\r\n break;\r\n case \"second\":\r\n let seconds = date.getUTCSeconds();\r\n if (count > 1) {\r\n seconds = Math.floor(seconds / count) * count;\r\n }\r\n date.setUTCSeconds(seconds, 0);\r\n break;\r\n case \"millisecond\":\r\n if (count == 1) {\r\n return date; // much better for perf!\r\n }\r\n let milliseconds = date.getUTCMilliseconds();\r\n milliseconds = Math.floor(milliseconds / count) * count;\r\n date.setUTCMilliseconds(milliseconds);\r\n break;\r\n case \"hour\":\r\n let hours = date.getUTCHours();\r\n if (count > 1) {\r\n hours = Math.floor(hours / count) * count;\r\n }\r\n date.setUTCHours(hours, 0, 0, 0);\r\n break;\r\n case \"minute\":\r\n let minutes = date.getUTCMinutes();\r\n if (count > 1) {\r\n minutes = Math.floor(minutes / count) * count;\r\n }\r\n date.setUTCMinutes(minutes, 0, 0);\r\n break;\r\n case \"month\":\r\n let month = date.getUTCMonth();\r\n if (count > 1) {\r\n month = Math.floor(month / count) * count;\r\n }\r\n date.setUTCMonth(month, 1);\r\n date.setUTCHours(0, 0, 0, 0);\r\n break;\r\n case \"year\":\r\n let year = date.getUTCFullYear();\r\n if (count > 1) {\r\n year = Math.floor(year / count) * count;\r\n }\r\n date.setUTCFullYear(year, 0, 1);\r\n date.setUTCHours(0, 0, 0, 0);\r\n break;\r\n case \"week\":\r\n if (count > 1) {\r\n if (firstDate) {\r\n firstDate = round(firstDate, \"week\", 1);\r\n let difference = date.getTime() - firstDate.getTime();\r\n let unitCount = Math.floor(difference / getDuration(\"week\") / count);\r\n let duration = getDuration(\"week\", unitCount * count);\r\n date.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\r\n }\r\n }\r\n let wday = date.getUTCDate();\r\n let weekDay = date.getUTCDay();\r\n if (!$type.isNumber(firstDateOfWeek)) {\r\n firstDateOfWeek = 1;\r\n }\r\n if (weekDay >= firstDateOfWeek) {\r\n wday = wday - weekDay + firstDateOfWeek;\r\n }\r\n else {\r\n wday = wday - (7 + weekDay) + firstDateOfWeek;\r\n }\r\n date.setUTCDate(wday);\r\n date.setUTCHours(0, 0, 0, 0);\r\n break;\r\n }\r\n if (!utc && unit != \"millisecond\") {\r\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\r\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\r\n let newTimeZoneOffset = date.getTimezoneOffset();\r\n if (newTimeZoneOffset != timeZoneOffset) {\r\n let diff = newTimeZoneOffset - timeZoneOffset;\r\n date.setUTCMinutes(date.getUTCMinutes() + diff);\r\n }\r\n }\r\n }\r\n return date;\r\n }\r\n else {\r\n if (isNaN(date.getTime())) {\r\n return date;\r\n }\r\n let tzoffset = timezone.offsetUTC(date);\r\n let timeZoneOffset = date.getTimezoneOffset();\r\n let parsedDate = timezone.parseDate(date);\r\n let year = parsedDate.year;\r\n let month = parsedDate.month;\r\n let day = parsedDate.day;\r\n let hour = parsedDate.hour;\r\n let minute = parsedDate.minute;\r\n let second = parsedDate.second;\r\n let millisecond = parsedDate.millisecond;\r\n let weekday = parsedDate.weekday;\r\n let offsetDif = tzoffset - timeZoneOffset;\r\n switch (unit) {\r\n case \"day\":\r\n if (count > 1 && firstDate) {\r\n firstDate = round(firstDate, \"day\", 1, firstDateOfWeek, utc, undefined, timezone);\r\n let difference = date.getTime() - firstDate.getTime();\r\n let unitCount = Math.floor(difference / getDuration(\"day\") / count);\r\n let duration = getDuration(\"day\", unitCount * count);\r\n date.setTime(firstDate.getTime() + duration);\r\n parsedDate = timezone.parseDate(date);\r\n year = parsedDate.year;\r\n month = parsedDate.month;\r\n day = parsedDate.day;\r\n }\r\n hour = 0;\r\n minute = offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n case \"second\":\r\n minute += offsetDif;\r\n if (count > 1) {\r\n second = Math.floor(second / count) * count;\r\n }\r\n millisecond = 0;\r\n break;\r\n case \"millisecond\":\r\n minute += offsetDif;\r\n if (count > 1) {\r\n millisecond = Math.floor(millisecond / count) * count;\r\n }\r\n break;\r\n case \"hour\":\r\n if (count > 1) {\r\n hour = Math.floor(hour / count) * count;\r\n }\r\n minute = offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n case \"minute\":\r\n if (count > 1) {\r\n minute = Math.floor(minute / count) * count;\r\n }\r\n minute += offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n case \"month\":\r\n if (count > 1) {\r\n month = Math.floor(month / count) * count;\r\n }\r\n day = 1;\r\n hour = 0;\r\n minute = offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n case \"year\":\r\n if (count > 1) {\r\n year = Math.floor(year / count) * count;\r\n }\r\n month = 0;\r\n day = 1;\r\n hour = 0;\r\n minute = offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n case \"week\":\r\n if (!$type.isNumber(firstDateOfWeek)) {\r\n firstDateOfWeek = 1;\r\n }\r\n if (weekday >= firstDateOfWeek) {\r\n day = day - weekday + firstDateOfWeek;\r\n }\r\n else {\r\n day = day - (7 + weekday) + firstDateOfWeek;\r\n }\r\n hour = 0;\r\n minute = offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n }\r\n date = new Date(year, month, day, hour, minute, second, millisecond);\r\n let newTimeZoneOffset = date.getTimezoneOffset();\r\n let newTzoffset = timezone.offsetUTC(date);\r\n let newDiff = newTzoffset - newTimeZoneOffset;\r\n if (newDiff != offsetDif) {\r\n date.setTime(date.getTime() + (newDiff - offsetDif) * 60000);\r\n }\r\n return date;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function chooseInterval(index, duration, gridCount, intervals) {\r\n let gridInterval = intervals[index];\r\n let intervalDuration = getIntervalDuration(gridInterval);\r\n let lastIndex = intervals.length - 1;\r\n if (index >= lastIndex) {\r\n return Object.assign({}, intervals[lastIndex]);\r\n }\r\n let count = Math.ceil(duration / intervalDuration);\r\n if (duration < intervalDuration && index > 0) {\r\n return Object.assign({}, intervals[index - 1]);\r\n }\r\n if (count <= gridCount) {\r\n return Object.assign({}, intervals[index]);\r\n }\r\n else {\r\n if (index + 1 < intervals.length) {\r\n return chooseInterval(index + 1, duration, gridCount, intervals);\r\n }\r\n else {\r\n return Object.assign({}, intervals[index]);\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getUnitValue(date, unit) {\r\n switch (unit) {\r\n case \"day\":\r\n return date.getDate();\r\n case \"second\":\r\n return date.getSeconds();\r\n case \"millisecond\":\r\n return date.getMilliseconds();\r\n case \"hour\":\r\n return date.getHours();\r\n case \"minute\":\r\n return date.getMinutes();\r\n case \"month\":\r\n return date.getMonth();\r\n case \"year\":\r\n return date.getFullYear();\r\n case \"week\":\r\n return $utils.getWeek(date);\r\n }\r\n}\r\n","/**\r\n * A collection of utility functions for various type checks and conversion\r\n * @hidden\r\n */\r\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns `true` if value is not a number (NaN).\r\n *\r\n * @param value Input value\r\n * @return Is NaN?\r\n */\r\nexport function isNaN(value) {\r\n return Number(value) !== value;\r\n}\r\n/**\r\n * Returns a type of the value.\r\n *\r\n * @param value Input value\r\n * @return Type of the value\r\n * @ignore\r\n */\r\nexport function getType(value) {\r\n return ({}).toString.call(value);\r\n}\r\n/**\r\n * Asserts that the condition is true.\r\n *\r\n * @param condition Condition to check\r\n * @param message Message to display in the error\r\n * @ignore\r\n */\r\nexport function assert(condition, message = \"Assertion failed\") {\r\n if (!condition) {\r\n throw new Error(message);\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * QUICK CONVERSION\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Converts any value into a `number`.\r\n *\r\n * @param value Source value\r\n * @return Number representation of value\r\n */\r\nexport function toNumber(value) {\r\n if (value != null && !isNumber(value)) {\r\n let converted = Number(value);\r\n if (isNaN(converted) && isString(value) && value != \"\") {\r\n return toNumber(value.replace(/[^0-9.\\-]+/g, ''));\r\n }\r\n return converted;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Converts anything to Date object.\r\n *\r\n * @param value A value of any type\r\n * @return Date object representing a value\r\n */\r\nexport function toDate(value) {\r\n if (isDate(value)) {\r\n // TODO maybe don't create a new Date ?\r\n return new Date(value);\r\n }\r\n else if (isNumber(value)) {\r\n return new Date(value);\r\n }\r\n else {\r\n // Try converting to number (assuming timestamp)\r\n let num = Number(value);\r\n if (!isNumber(num)) {\r\n return new Date(value);\r\n }\r\n else {\r\n return new Date(num);\r\n }\r\n }\r\n}\r\n/**\r\n * Converts numeric value into string. Deals with large or small numbers that\r\n * would otherwise use exponents.\r\n *\r\n * @param value Numeric value\r\n * @return Numeric value as string\r\n */\r\nexport function numberToString(value) {\r\n // TODO handle Infinity and -Infinity\r\n if (isNaN(value)) {\r\n return \"NaN\";\r\n }\r\n if (value === Infinity) {\r\n return \"Infinity\";\r\n }\r\n if (value === -Infinity) {\r\n return \"-Infinity\";\r\n }\r\n // Negative 0\r\n if ((value === 0) && (1 / value === -Infinity)) {\r\n return \"-0\";\r\n }\r\n // Preserve negative and deal with absoute values\r\n let negative = value < 0;\r\n value = Math.abs(value);\r\n // TODO test this\r\n let parsed = /^([0-9]+)(?:\\.([0-9]+))?(?:e[\\+\\-]([0-9]+))?$/.exec(\"\" + value);\r\n let digits = parsed[1];\r\n let decimals = parsed[2] || \"\";\r\n let res;\r\n // Leave the nummber as it is if it does not use exponents\r\n if (parsed[3] === undefined) {\r\n res = (decimals === \"\" ? digits : digits + \".\" + decimals);\r\n }\r\n else {\r\n let exponent = +parsed[3];\r\n // Deal with decimals\r\n if (value < 1) {\r\n let zeros = exponent - 1;\r\n res = \"0.\" + repeat(\"0\", zeros) + digits + decimals;\r\n // Deal with integers\r\n }\r\n else {\r\n let zeros = exponent - decimals.length;\r\n if (zeros === 0) {\r\n res = digits + decimals;\r\n }\r\n else if (zeros < 0) {\r\n res = digits + decimals.slice(0, zeros) + \".\" + decimals.slice(zeros);\r\n }\r\n else {\r\n res = digits + decimals + repeat(\"0\", zeros);\r\n }\r\n }\r\n }\r\n return negative ? \"-\" + res : res;\r\n}\r\n/**\r\n * Repeats a `string` number of times as set in `amount`.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make this faster\r\n * @param string Source string\r\n * @param amount Number of times to repeat string\r\n * @return New string\r\n */\r\nexport function repeat(string, amount) {\r\n return new Array(amount + 1).join(string);\r\n}\r\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Checks if parameter is `Date`.\r\n *\r\n * @param value Input value\r\n * @return Is Date?\r\n */\r\nexport function isDate(value) {\r\n return getType(value) === \"[object Date]\";\r\n}\r\n/**\r\n * Checks if parameter is `string`.\r\n *\r\n * @param value Input value\r\n * @return Is string?\r\n */\r\nexport function isString(value) {\r\n return typeof value === \"string\";\r\n}\r\n/**\r\n * Checks if parameter is `number`.\r\n *\r\n * @param value Input value\r\n * @return Is number?\r\n */\r\nexport function isNumber(value) {\r\n return typeof value === \"number\" && Number(value) == value;\r\n}\r\n/**\r\n * Checks if parameter is `object`.\r\n *\r\n * @param value Input value\r\n * @return Is object?\r\n */\r\nexport function isObject(value) {\r\n return typeof value === \"object\" && value !== null;\r\n}\r\n/**\r\n * Checks if parameter is `Array`.\r\n *\r\n * @param value Input value\r\n * @return Is Array?\r\n */\r\nexport function isArray(value) {\r\n return Array.isArray(value);\r\n}\r\n/**\r\n * ============================================================================\r\n * STATIC CONSTANTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport const PLACEHOLDER = \"__§§§__\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport const PLACEHOLDER2 = \"__§§§§__\";\r\n","import * as $type from \"./Type\";\r\nimport * as $array from \"./Array\";\r\nimport * as $object from \"./Object\";\r\nimport { Disposer, DisposerClass } from \"./Disposer\";\r\n/**\r\n * ============================================================================\r\n * DOM FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Execute a function when DOM is ready.\r\n *\r\n * @since 5.0.2\r\n * @param f Callback\r\n */\r\nexport function ready(f) {\r\n if (document.readyState !== \"loading\") {\r\n f();\r\n }\r\n else {\r\n const listener = () => {\r\n if (document.readyState !== \"loading\") {\r\n document.removeEventListener(\"readystatechange\", listener);\r\n f();\r\n }\r\n };\r\n document.addEventListener(\"readystatechange\", listener);\r\n }\r\n}\r\n/**\r\n * Removes a DOM element.\r\n * @param el Target element\r\n */\r\nexport function removeElement(el) {\r\n if (el.parentNode) {\r\n el.parentNode.removeChild(el);\r\n }\r\n}\r\n/**\r\n * Function that adds a disposable event listener directly to a DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dom A DOM element to add event to\r\n * @param type Event type\r\n * @param listener Event listener\r\n * @returns Disposable event\r\n */\r\nexport function addEventListener(dom, type, listener, options) {\r\n //@todo proper type check for options: EventListenerOptions | boolean (TS for some reason gives error on passive parameter)\r\n dom.addEventListener(type, listener, options || false);\r\n return new Disposer(() => {\r\n dom.removeEventListener(type, listener, options || false);\r\n });\r\n}\r\n/**\r\n * Function that adds an event listener which is triggered when the browser's zoom changes.\r\n *\r\n * @param listener Event listener\r\n * @returns Disposable event\r\n */\r\nexport function onZoom(listener) {\r\n // TODO use matchMedia instead ?\r\n return addEventListener(window, \"resize\", (_ev) => {\r\n listener();\r\n });\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function supports(cap) {\r\n switch (cap) {\r\n case \"touchevents\":\r\n //return \"ontouchstart\" in document.documentElement;\r\n return window.hasOwnProperty(\"TouchEvent\");\r\n case \"pointerevents\":\r\n return window.hasOwnProperty(\"PointerEvent\");\r\n case \"mouseevents\":\r\n return window.hasOwnProperty(\"MouseEvent\");\r\n case \"wheelevents\":\r\n return window.hasOwnProperty(\"WheelEvent\");\r\n case \"keyboardevents\":\r\n return window.hasOwnProperty(\"KeyboardEvent\");\r\n }\r\n return false;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getPointerId(event) {\r\n let id = event.pointerId || 0;\r\n return id;\r\n}\r\n/**\r\n * Removes focus from any element by shifting focus to body.\r\n *\r\n * @ignore\r\n */\r\nexport function blur() {\r\n if (document.activeElement && document.activeElement != document.body) {\r\n if (document.activeElement.blur) {\r\n document.activeElement.blur();\r\n }\r\n else {\r\n let input = document.createElement(\"button\");\r\n input.style.position = \"fixed\";\r\n input.style.top = \"0px\";\r\n input.style.left = \"-10000px\";\r\n document.body.appendChild(input);\r\n input.focus();\r\n input.blur();\r\n document.body.removeChild(input);\r\n }\r\n }\r\n}\r\n/**\r\n * Focuses element.\r\n *\r\n * @ignore\r\n */\r\nexport function focus(el) {\r\n if (el) {\r\n el.focus();\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getRendererEvent(key) {\r\n if (supports(\"pointerevents\")) {\r\n return key;\r\n }\r\n else if (supports(\"touchevents\")) {\r\n switch (key) {\r\n case \"pointerover\": return \"touchstart\";\r\n case \"pointerout\": return \"touchend\";\r\n case \"pointerleave\": return \"touchend\";\r\n case \"pointerdown\": return \"touchstart\";\r\n case \"pointermove\": return \"touchmove\";\r\n case \"pointerup\": return \"touchend\";\r\n case \"click\": return \"click\";\r\n case \"dblclick\": return \"dblclick\";\r\n }\r\n }\r\n else if (supports(\"mouseevents\")) {\r\n switch (key) {\r\n case \"pointerover\": return \"mouseover\";\r\n case \"pointerout\": return \"mouseout\";\r\n case \"pointerleave\": return \"mouseleave\";\r\n case \"pointerdown\": return \"mousedown\";\r\n case \"pointermove\": return \"mousemove\";\r\n case \"pointerup\": return \"mouseup\";\r\n case \"click\": return \"click\";\r\n case \"dblclick\": return \"dblclick\";\r\n }\r\n }\r\n return key;\r\n}\r\n/**\r\n * Determines if pointer event originated from a touch pointer or mouse.\r\n *\r\n * @param ev Original event\r\n * @return Touch pointer?\r\n */\r\nexport function isTouchEvent(ev) {\r\n if (typeof Touch !== \"undefined\" && ev instanceof Touch) {\r\n return true;\r\n }\r\n else if (typeof PointerEvent !== \"undefined\" && ev instanceof PointerEvent && ev.pointerType != null) {\r\n switch (ev.pointerType) {\r\n case \"touch\":\r\n case \"pen\":\r\n case 2:\r\n return true;\r\n case \"mouse\":\r\n case 4:\r\n return false;\r\n default:\r\n return !(ev instanceof MouseEvent);\r\n }\r\n }\r\n else if (ev.type != null) {\r\n if (ev.type.match(/^mouse/)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Sets style property on DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function setStyle(dom, property, value) {\r\n dom.style[property] = value;\r\n}\r\nexport function getStyle(dom, property) {\r\n return dom.style[property];\r\n}\r\n/**\r\n * Gets the target of the event, works for shadow DOM too.\r\n */\r\nexport function getEventTarget(event) {\r\n if (event.composedPath) {\r\n const path = event.composedPath();\r\n if (path.length === 0) {\r\n return null;\r\n }\r\n else {\r\n return path[0];\r\n }\r\n }\r\n else {\r\n return event.target;\r\n }\r\n}\r\n/**\r\n * Checks of element `a` contains element `b`.\r\n *\r\n * @param a Aleged ascendant\r\n * @param b Aleged descendant\r\n * @return Contains?\r\n */\r\nexport function contains(a, b) {\r\n let cursor = b;\r\n while (true) {\r\n if (a === cursor) {\r\n return true;\r\n }\r\n else if (cursor.parentNode === null) {\r\n // TODO better ShadowRoot detection\r\n if (cursor.host == null) {\r\n return false;\r\n }\r\n else {\r\n cursor = cursor.host;\r\n }\r\n }\r\n else {\r\n cursor = cursor.parentNode;\r\n }\r\n }\r\n}\r\n/**\r\n * Returns `true` if pointer event originated on an element within Root.\r\n *\r\n * @since 5.2.8\r\n * @param event Event\r\n * @param target Target element\r\n */\r\nexport function isLocalEvent(event, target) {\r\n return event.target && contains(target.root.dom, event.target);\r\n}\r\n/**\r\n * Disables or enables interactivity of a DOM element.\r\n *\r\n * @param target Target element\r\n * @param interactive Interactive?\r\n */\r\nexport function setInteractive(target, interactive) {\r\n if (interactive) {\r\n target.style.pointerEvents = \"auto\";\r\n }\r\n else {\r\n target.style.pointerEvents = \"none\";\r\n }\r\n}\r\nexport function getEventKey(event) {\r\n if (event.key !== undefined) {\r\n return event.key;\r\n }\r\n switch (event.keyCode) {\r\n case 9: return \"Tab\";\r\n case 13: return \"Enter\";\r\n case 16: return \"Shift\";\r\n case 17: return \"Control\";\r\n case 27: return \"Escape\";\r\n case 32: return \" \";\r\n case 37: return \"ArrowLeft\";\r\n case 38: return \"ArrowUp\";\r\n case 39: return \"ArrowRight\";\r\n case 40: return \"ArrowDown\";\r\n case 46: return \"Delete\";\r\n }\r\n return \"\" + event.keyCode;\r\n}\r\n/**\r\n * Returns the shadow root of the element or null\r\n *\r\n * @param a Node\r\n * @return Root\r\n */\r\nexport function getShadowRoot(a) {\r\n let cursor = a;\r\n while (true) {\r\n if (cursor.parentNode === null) {\r\n // TODO better ShadowRoot detection\r\n if (cursor.host != null) {\r\n return cursor;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n cursor = cursor.parentNode;\r\n }\r\n }\r\n}\r\n/**\r\n * [rootStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nlet rootStylesheet;\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nfunction createStylesheet(element, text, nonce = \"\") {\r\n // TODO use createElementNS ?\r\n const e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n if (nonce != \"\") {\r\n e.setAttribute(\"nonce\", nonce);\r\n }\r\n e.textContent = text;\r\n if (element === null) {\r\n document.head.appendChild(e);\r\n }\r\n else {\r\n element.appendChild(e);\r\n }\r\n return e;\r\n}\r\n/**\r\n * [getStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\nfunction getStylesheet(element, nonce = \"\") {\r\n if (element === null) {\r\n if (rootStylesheet == null) {\r\n // TODO use createElementNS ?\r\n const e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n if (nonce != \"\") {\r\n e.setAttribute(\"nonce\", nonce);\r\n }\r\n document.head.appendChild(e);\r\n rootStylesheet = e.sheet;\r\n }\r\n return rootStylesheet;\r\n }\r\n else {\r\n // TODO use createElementNS ?\r\n const e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n if (nonce != \"\") {\r\n e.setAttribute(\"nonce\", nonce);\r\n }\r\n element.appendChild(e);\r\n return e.sheet;\r\n }\r\n}\r\n/**\r\n * [makeStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param selector [description]\r\n * @return [description]\r\n */\r\nfunction appendStylesheet(root, selector) {\r\n const index = root.cssRules.length;\r\n root.insertRule(selector + \"{}\", index);\r\n return root.cssRules[index];\r\n}\r\n/**\r\n * Defines a class for a CSS rule.\r\n *\r\n * Can be used to dynamically add CSS to the document.\r\n */\r\nexport class StyleRule extends DisposerClass {\r\n /**\r\n * Constructor.\r\n *\r\n * @param selector CSS selector\r\n * @param styles An object of style attribute - value pairs\r\n */\r\n constructor(element, selector, styles, nonce = \"\") {\r\n super();\r\n Object.defineProperty(this, \"_root\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * CSS rule.\r\n */\r\n Object.defineProperty(this, \"_rule\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._root = getStylesheet(element, nonce);\r\n try {\r\n this._rule = appendStylesheet(this._root, selector);\r\n }\r\n catch (err) {\r\n // Create an empty rule on failed selectors\r\n this._rule = appendStylesheet(this._root, \":not(*)\");\r\n }\r\n $object.each(styles, (key, value) => {\r\n this.setStyle(key, value);\r\n });\r\n }\r\n /**\r\n * A CSS selector text.\r\n *\r\n * E.g.: `.myClass p`\r\n *\r\n * @param selector CSS selector\r\n */\r\n set selector(selector) {\r\n this._rule.selectorText = selector;\r\n }\r\n /**\r\n * @return CSS selector\r\n */\r\n get selector() {\r\n return this._rule.selectorText;\r\n }\r\n // TODO test this\r\n _dispose() {\r\n // TODO a bit hacky\r\n const index = $array.indexOf(this._root.cssRules, this._rule);\r\n if (index === -1) {\r\n throw new Error(\"Could not dispose StyleRule\");\r\n }\r\n else {\r\n // TODO if it's empty remove it from the DOM ?\r\n this._root.deleteRule(index);\r\n }\r\n }\r\n /**\r\n * Sets the same style properties with browser-specific prefixes.\r\n *\r\n * @param name Attribute name\r\n * @param value Attribute value\r\n */\r\n _setVendorPrefixName(name, value) {\r\n const style = this._rule.style;\r\n style.setProperty(\"-webkit-\" + name, value, \"\");\r\n style.setProperty(\"-moz-\" + name, value, \"\");\r\n style.setProperty(\"-ms-\" + name, value, \"\");\r\n style.setProperty(\"-o-\" + name, value, \"\");\r\n style.setProperty(name, value, \"\");\r\n }\r\n /**\r\n * Sets a value for specific style attribute.\r\n *\r\n * @param name Attribute\r\n * @param value Value\r\n */\r\n setStyle(name, value) {\r\n if (name === \"transition\") {\r\n this._setVendorPrefixName(name, value);\r\n }\r\n else {\r\n this._rule.style.setProperty(name, value, \"\");\r\n }\r\n }\r\n}\r\n/**\r\n * Defines a class for an entire CSS style sheet.\r\n *\r\n * Can be used to dynamically add CSS to the document.\r\n */\r\nexport class StyleSheet extends DisposerClass {\r\n /**\r\n * Constructor.\r\n *\r\n * @param text CSS stylesheet\r\n */\r\n constructor(element, text, nonce = \"\") {\r\n super();\r\n Object.defineProperty(this, \"_element\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._element = createStylesheet(element, text, nonce);\r\n }\r\n _dispose() {\r\n if (this._element.parentNode) {\r\n this._element.parentNode.removeChild(this._element);\r\n }\r\n }\r\n}\r\n/**\r\n * Adds a class name to an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\r\nexport function addClass(element, className) {\r\n if (!element) {\r\n return;\r\n }\r\n if (element.classList) {\r\n const classes = className.split(\" \");\r\n $array.each(classes, (name) => {\r\n element.classList.add(name);\r\n });\r\n }\r\n else {\r\n let currentClassName = element.getAttribute(\"class\");\r\n if (currentClassName) {\r\n element.setAttribute(\"class\", currentClassName.split(\" \").filter((item) => {\r\n return item !== className;\r\n }).join(\" \") + \" \" + className);\r\n }\r\n else {\r\n element.setAttribute(\"class\", className);\r\n }\r\n }\r\n}\r\n/**\r\n * Removes a class name from an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\r\nexport function removeClass(element, className) {\r\n if (!element) {\r\n return;\r\n }\r\n if (element.classList) {\r\n element.classList.remove(className);\r\n }\r\n else {\r\n let currentClassName = element.getAttribute(\"class\");\r\n if (currentClassName) {\r\n element.setAttribute(\"class\", currentClassName.split(\" \").filter((item) => {\r\n return item !== className;\r\n }).join(\" \"));\r\n }\r\n }\r\n}\r\n// /**\r\n// * Applies a set of styles to an element. Stores the original styles so they\r\n// * can be restored later.\r\n// *\r\n// * @ignore\r\n// * @param io Element\r\n// */\r\n// export function prepElementForDrag(dom: HTMLElement): void {\r\n// \t// @todo: save current values\r\n// \t// Define possible props\r\n// \tlet props = [\r\n// \t\t\"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\r\n// \t\t\"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\r\n// \t\t\"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\r\n// \t\t\"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\r\n// \t\t\"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\r\n// \t\t\"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\r\n// \t];\r\n// \tfor (let i = 0; i < props.length; i++) {\r\n// \t\tif (props[i] in dom.style) {\r\n// \t\t\tsetStyle(dom, props[i], \"none\");\r\n// \t\t}\r\n// \t}\r\n// \t// Remove iOS-specific selection;\r\n// \tsetStyle(dom, \"tapHighlightColor\", \"rgba(0, 0, 0, 0)\");\r\n// }\r\n// /**\r\n// * Restores replaced styles\r\n// *\r\n// * @ignore\r\n// * @param io Element\r\n// */\r\n// export function unprepElementForDrag(dom: HTMLElement): void {\r\n// \t// Define possible props\r\n// \tlet props = [\r\n// \t\t\"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\r\n// \t\t\"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\r\n// \t\t\"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\r\n// \t\t\"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\r\n// \t\t\"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\r\n// \t\t\"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\r\n// \t];\r\n// \tfor (let i = 0; i < props.length; i++) {\r\n// \t\tif (props[i] in dom.style) {\r\n// \t\t\tsetStyle(dom, props[i], \"\");\r\n// \t\t}\r\n// \t}\r\n// \t// Remove iOS-specific selection;\r\n// \tsetStyle(dom, \"tapHighlightColor\", \"\");\r\n// }\r\nexport function iOS() {\r\n return /apple/i.test(navigator.vendor) && \"ontouchend\" in document;\r\n}\r\nexport function getSafeResolution() {\r\n return iOS() ? 1 : undefined;\r\n}\r\nexport function relativeToValue(percent, full) {\r\n if ($type.isNumber(percent)) {\r\n return percent;\r\n }\r\n else if (percent != null && $type.isNumber(percent.value) && $type.isNumber(full)) {\r\n return full * percent.value;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\n/**\r\n * Returns number of decimals\r\n *\r\n * @ignore Exclude from docs\r\n * @param number Input number\r\n * @return Number of decimals\r\n */\r\nexport function decimalPlaces(number) {\r\n let match = ('' + number).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\r\n if (!match) {\r\n return 0;\r\n }\r\n return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));\r\n}\r\n/**\r\n * ============================================================================\r\n * STRING FORMATTING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Pads a string with additional characters to certain length.\r\n *\r\n * @param value A numeric value\r\n * @param len Result string length in characters\r\n * @param char A character to use for padding\r\n * @return Padded value as string\r\n */\r\nexport function padString(value, len = 0, char = \"0\") {\r\n if (typeof value !== \"string\") {\r\n value = value.toString();\r\n }\r\n return len > value.length ? Array(len - value.length + 1).join(char) + value : value;\r\n}\r\nexport function trimLeft(text) {\r\n return text.replace(/^[\\s]*/, \"\");\r\n}\r\nexport function trimRight(text) {\r\n return text.replace(/[\\s]*$/, \"\");\r\n}\r\nexport function trim(text) {\r\n return trimLeft(trimRight(text));\r\n}\r\nexport function truncateTextWithEllipsis(text, maxLength, breakWords = false, ellipsis = \"...\") {\r\n if (text.length > maxLength) {\r\n // Find the last non-alphanumeric character before maxLength\r\n let lastNonAlphanumericIndex = maxLength - 1;\r\n while (lastNonAlphanumericIndex >= 0 && text.charAt(lastNonAlphanumericIndex).match(/\\w/)) {\r\n lastNonAlphanumericIndex--;\r\n }\r\n if (lastNonAlphanumericIndex >= 0 && breakWords == false) {\r\n return text.substring(0, lastNonAlphanumericIndex + 1) + '...';\r\n }\r\n else {\r\n // If no non-alphanumeric character found, truncate without breaking words\r\n return text.substring(0, maxLength) + ellipsis;\r\n }\r\n }\r\n else {\r\n return text;\r\n }\r\n}\r\n/**\r\n * Tries to determine format type.\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format string\r\n * @return Format type (\"string\" | \"number\" | \"date\" | \"duration\")\r\n */\r\nexport function getFormat(format) {\r\n // Undefined?\r\n if (typeof format === \"undefined\") {\r\n return \"string\";\r\n }\r\n // Cleanup and lowercase format\r\n format = format.toLowerCase().replace(/^\\[[^\\]]*\\]/, \"\");\r\n // Remove style tags\r\n format = format.replace(/\\[[^\\]]+\\]/, \"\");\r\n // Trim\r\n format = format.trim();\r\n // Check for any explicit format hints (i.e. /Date)\r\n let hints = format.match(/\\/(date|number|duration)$/);\r\n if (hints) {\r\n return hints[1];\r\n }\r\n // Check for explicit hints\r\n if (format === \"number\") {\r\n return \"number\";\r\n }\r\n if (format === \"date\") {\r\n return \"date\";\r\n }\r\n if (format === \"duration\") {\r\n return \"duration\";\r\n }\r\n // Detect number formatting symbols\r\n if (format.match(/[#0]/)) {\r\n return \"number\";\r\n }\r\n // Detect date formatting symbols\r\n if (format.match(/[ymwdhnsqaxkzgtei]/)) {\r\n return \"date\";\r\n }\r\n // Nothing? Let's display as string\r\n return \"string\";\r\n}\r\n/**\r\n * Cleans up format:\r\n * * Strips out formatter hints\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format\r\n * @return Cleaned format\r\n */\r\nexport function cleanFormat(format) {\r\n return format.replace(/\\/(date|number|duration)$/i, \"\");\r\n}\r\n/**\r\n * Strips all tags from the string.\r\n *\r\n * @param text Source string\r\n * @return String without tags\r\n */\r\nexport function stripTags(text) {\r\n return text ? text.replace(/<[^>]*>/g, \"\") : text;\r\n}\r\n/**\r\n * Removes new lines and tags from a string.\r\n *\r\n * @param text String to conver\r\n * @return Converted string\r\n */\r\nexport function plainText(text) {\r\n return text ? stripTags((\"\" + text).replace(/[\\n\\r]+/g, \". \")) : text;\r\n}\r\n/**\r\n * Escapes string so it can safely be used in a Regex.\r\n *\r\n * @param value Unsescaped string\r\n * @return Escaped string\r\n */\r\nexport function escapeForRgex(value) {\r\n return value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n}\r\n/**\r\n * Adds space before each uppercase letter.\r\n *\r\n * @param str Input string\r\n * @return Output string\r\n */\r\nexport function addSpacing(str) {\r\n let result = \"\";\r\n for (let i = 0; i < str.length; i++) {\r\n const char = str.charAt(i);\r\n if (char.toUpperCase() == char && i != 0) {\r\n result += \" \";\r\n }\r\n result += char;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Splits the string into separate characters. Keeps RTL words non-split.\r\n *\r\n * @param source Input\r\n * @return Split text\r\n */\r\nexport function splitString(source) {\r\n // Regular expression to identify RTL characters\r\n const rtlChar = /[\\u0590-\\u05FF\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]/;\r\n // Regular expression to capture segments ending with specific Arabic characters\r\n const splitPattern = /([^اأدذرزو]*[اأدذرزو])/gi;\r\n // Split input string into array of words or characters, including whitespace\r\n let segments = source.split(/(\\s+)/); // Split by whitespace, capturing it\r\n let result = [];\r\n segments.forEach(segment => {\r\n if (segment.match(/^\\s+$/)) {\r\n // If the segment is purely whitespace\r\n if (segment = \" \") {\r\n segment = \" \";\r\n }\r\n result.push(segment);\r\n }\r\n else if (rtlChar.test(segment)) {\r\n // If the segment contains RTL characters, handle special splits\r\n let parts = segment.split(splitPattern).filter(part => part !== '');\r\n // Concatenate parts processed by the split pattern directly to result\r\n result = result.concat(parts);\r\n }\r\n else {\r\n // Treat this segment as LTR: split into characters\r\n result = result.concat([...segment]);\r\n }\r\n });\r\n return result;\r\n}\r\n/**\r\n * ============================================================================\r\n * DATE-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns a year day.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Year day\r\n * @todo Account for UTC\r\n */\r\nexport function getYearDay(date, utc = false) {\r\n // TODO: utc needed?\r\n utc;\r\n const start = new Date(date.getFullYear(), 0, 0);\r\n const diff = (date.getTime() - start.getTime()) + ((start.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000);\r\n const oneDay = 1000 * 60 * 60 * 24;\r\n return Math.floor(diff / oneDay);\r\n}\r\n/**\r\n * Returns week number for a given date.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number\r\n * @todo Account for UTC\r\n */\r\nexport function getWeek(date, _utc = false) {\r\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\r\n const day = d.getUTCDay() || 7;\r\n d.setUTCDate(d.getUTCDate() + 4 - day);\r\n const firstDay = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\r\n return Math.ceil((((d.getTime() - firstDay.getTime()) / 86400000) + 1) / 7);\r\n}\r\n/**\r\n * Returns a \"week year\" of the given date.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Year of week\r\n * @since 5.3.0\r\n * @todo Account for UTC\r\n */\r\nexport function getWeekYear(date, _utc = false) {\r\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\r\n const day = d.getUTCDay() || 7;\r\n d.setUTCDate(d.getUTCDate() + 4 - day);\r\n const firstDay = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\r\n return firstDay.getFullYear();\r\n}\r\n/**\r\n * Returns a week number in the month.\r\n *\r\n * @param date Source Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number in month\r\n */\r\nexport function getMonthWeek(date, utc = false) {\r\n const firstWeek = getWeek(new Date(date.getFullYear(), date.getMonth(), 1), utc);\r\n let currentWeek = getWeek(date, utc);\r\n if (currentWeek == 1) {\r\n currentWeek = 53;\r\n }\r\n return currentWeek - firstWeek + 1;\r\n}\r\n/**\r\n * Returns a year day out of the given week number.\r\n *\r\n * @param week Week\r\n * @param year Year\r\n * @param weekday Weekday\r\n * @param utc Assume UTC dates\r\n * @return Day in a year\r\n */\r\nexport function getDayFromWeek(week, year, weekday = 1, utc = false) {\r\n let date = new Date(year, 0, 4, 0, 0, 0, 0);\r\n if (utc) {\r\n date.setUTCFullYear(year);\r\n }\r\n let day = week * 7 + weekday - ((date.getDay() || 7) + 3);\r\n return day;\r\n}\r\n/**\r\n * Returns 12-hour representation out of the 24-hour hours.\r\n *\r\n * @param hours 24-hour number\r\n * @return 12-hour number\r\n */\r\nexport function get12Hours(hours, base) {\r\n if (hours > 12) {\r\n hours -= 12;\r\n }\r\n else if (hours === 0) {\r\n hours = 12;\r\n }\r\n return base != null ? hours + (base - 1) : hours;\r\n}\r\n/**\r\n * Returns a string name of the time zone.\r\n *\r\n * @param date Date object\r\n * @param long Should return long (\"Pacific Standard Time\") or short abbreviation (\"PST\")\r\n * @param savings Include information if it's in daylight savings mode\r\n * @param utc Assume UTC dates\r\n * @return Time zone name\r\n */\r\nexport function getTimeZone(date, long = false, savings = false, utc = false, timezone) {\r\n if (utc) {\r\n return long ? \"Coordinated Universal Time\" : \"UTC\";\r\n }\r\n else if (timezone) {\r\n const d1 = date.toLocaleString(\"en-US\", { timeZone: timezone });\r\n const d2 = date.toLocaleString(\"en-US\", { timeZone: timezone, timeZoneName: long ? \"long\" : \"short\" });\r\n return trim(d2.substr(d1.length));\r\n }\r\n let wotz = date.toLocaleString(\"UTC\");\r\n let wtz = date.toLocaleString(\"UTC\", { timeZoneName: long ? \"long\" : \"short\" }).substr(wotz.length);\r\n //wtz = wtz.replace(/[+-]+[0-9]+$/, \"\");\r\n if (savings === false) {\r\n wtz = wtz.replace(/ (standard|daylight|summer|winter) /i, \" \");\r\n }\r\n return trim(wtz);\r\n}\r\nexport function getTimezoneOffset(timezone) {\r\n const date = new Date(Date.UTC(2012, 0, 1, 0, 0, 0, 0));\r\n const utcDate = new Date(date.toLocaleString(\"en-US\", { timeZone: \"UTC\" }));\r\n const tzDate = new Date(date.toLocaleString(\"en-US\", { timeZone: timezone }));\r\n return (tzDate.getTime() - utcDate.getTime()) / 6e4 * -1;\r\n}\r\nexport function capitalizeFirst(text) {\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n}\r\n/**\r\n * The functions below are taken and adapted from Garry Tan's blog post:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * The further attributions go mjijackson.com, which now seems to be defunct.\r\n */\r\n/**\r\n * Converts an HSL color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes h, s, and l are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @param h The hue\r\n * @param s The saturation\r\n * @param l The lightness\r\n * @return The RGB representation\r\n */\r\nexport function hslToRgb(color) {\r\n let r, g, b;\r\n let h = color.h;\r\n let s = color.s;\r\n let l = color.l;\r\n if (s == 0) {\r\n r = g = b = l; // achromatic\r\n }\r\n else {\r\n let hue2rgb = function hue2rgb(p, q, t) {\r\n if (t < 0) {\r\n t += 1;\r\n }\r\n if (t > 1) {\r\n t -= 1;\r\n }\r\n if (t < 1 / 6) {\r\n return p + (q - p) * 6 * t;\r\n }\r\n if (t < 1 / 2) {\r\n return q;\r\n }\r\n if (t < 2 / 3) {\r\n return p + (q - p) * (2 / 3 - t) * 6;\r\n }\r\n return p;\r\n };\r\n let q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n let p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n return {\r\n r: Math.round(r * 255),\r\n g: Math.round(g * 255),\r\n b: Math.round(b * 255)\r\n };\r\n}\r\n/**\r\n * Converts an RGB color value to HSL. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h, s, and l in the set [0, 1].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @param r The red color value\r\n * @param g The green color value\r\n * @param b The blue color value\r\n * @return The HSL representation\r\n */\r\nexport function rgbToHsl(color) {\r\n let r = color.r / 255;\r\n let g = color.g / 255;\r\n let b = color.b / 255;\r\n let max = Math.max(r, g, b);\r\n let min = Math.min(r, g, b);\r\n let h = 0;\r\n let s = 0;\r\n let l = (max + min) / 2;\r\n if (max === min) {\r\n h = s = 0; // achromatic\r\n }\r\n else {\r\n let d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n h /= 6;\r\n }\r\n return {\r\n h: h,\r\n s: s,\r\n l: l,\r\n };\r\n}\r\n/**\r\n * Converts HSV to HSL.\r\n *\r\n * https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_HSL\r\n */\r\nexport function hsvToHsl(hsv) {\r\n const l = hsv.v * (1 - (hsv.s / 2));\r\n const s = (l === 0 || l === 1\r\n ? 0\r\n : (hsv.v - l) / Math.min(l, 1 - l));\r\n return {\r\n h: hsv.h,\r\n s,\r\n l,\r\n a: hsv.a,\r\n };\r\n}\r\n/**\r\n * Converts HSL to HSV.\r\n *\r\n * https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_HSV\r\n */\r\nexport function hslToHsv(hsl) {\r\n const v = hsl.l + (hsl.s * Math.min(hsl.l, 1 - hsl.l));\r\n const s = (v === 0\r\n ? 0\r\n : 2 * (1 - (hsl.l / v)));\r\n return {\r\n h: hsl.h,\r\n s,\r\n v,\r\n a: hsl.a,\r\n };\r\n}\r\n/**\r\n * Returns a color that is `percent` brighter than the reference color.\r\n *\r\n * @param color Reference color\r\n * @param percent Brightness percent\r\n * @return Hex code of the new color\r\n */\r\nexport function lighten(rgb, percent) {\r\n if (rgb) {\r\n return {\r\n r: Math.max(0, Math.min(255, rgb.r + getLightnessStep(rgb.r, percent))),\r\n g: Math.max(0, Math.min(255, rgb.g + getLightnessStep(rgb.g, percent))),\r\n b: Math.max(0, Math.min(255, rgb.b + getLightnessStep(rgb.b, percent))),\r\n a: rgb.a\r\n };\r\n }\r\n else {\r\n // TODO is this correct ?\r\n return rgb;\r\n }\r\n}\r\n;\r\n/**\r\n * Gets lightness step.\r\n *\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\r\nexport function getLightnessStep(value, percent) {\r\n let base = percent > 0 ? 255 - value : value;\r\n return Math.round(base * percent);\r\n}\r\n/**\r\n * Returns a color that is `percent` brighter than the source `color`.\r\n *\r\n * @param color Source color\r\n * @param percent Brightness percent\r\n * @return New color\r\n */\r\nexport function brighten(rgb, percent) {\r\n if (rgb) {\r\n let base = Math.min(Math.max(rgb.r, rgb.g, rgb.b), 230);\r\n //let base = Math.max(rgb.r, rgb.g, rgb.b);\r\n let step = getLightnessStep(base, percent);\r\n return {\r\n r: Math.max(0, Math.min(255, Math.round(rgb.r + step))),\r\n g: Math.max(0, Math.min(255, Math.round(rgb.g + step))),\r\n b: Math.max(0, Math.min(255, Math.round(rgb.b + step))),\r\n a: rgb.a\r\n };\r\n }\r\n else {\r\n // TODO is this correct ?\r\n return rgb;\r\n }\r\n}\r\n;\r\n/**\r\n * Returns brightness step.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\r\nexport function getBrightnessStep(_value, percent) {\r\n let base = 255; //percent > 0 ? 255 - value : value;\r\n return Math.round(base * percent);\r\n}\r\n/**\r\n * Returns `true` if color is \"light\". Useful indetermining which contrasting\r\n * color to use for elements over this color. E.g.: you would want to use\r\n * black text over light background, and vice versa.\r\n *\r\n * @param color Source color\r\n * @return Light?\r\n */\r\nexport function isLight(color) {\r\n return ((color.r * 299) + (color.g * 587) + (color.b * 114)) / 1000 >= 128;\r\n}\r\n/**\r\n * Returns a new [[iRGB]] object based on `rgb` parameter with specific\r\n * saturation applied.\r\n *\r\n * `saturation` can be in the range of 0 (fully desaturated) to 1 (fully\r\n * saturated).\r\n *\r\n * @param color Base color\r\n * @param saturation Saturation (0-1)\r\n * @return New color\r\n */\r\nexport function saturate(rgb, saturation) {\r\n if (rgb === undefined || saturation == 1) {\r\n return rgb;\r\n }\r\n let hsl = rgbToHsl(rgb);\r\n hsl.s = saturation;\r\n return hslToRgb(hsl);\r\n}\r\n/**\r\n * Returns a color which contrasts more with the source `color`.\r\n *\r\n * @param color Base color\r\n * @param lightAlternative Light option\r\n * @param darkAlternative Dark option\r\n * @return New color\r\n */\r\nexport function alternativeColor(color, lightAlternative = { r: 255, g: 255, b: 255 }, darkAlternative = { r: 255, g: 255, b: 255 }) {\r\n let light = lightAlternative;\r\n let dark = darkAlternative;\r\n if (isLight(darkAlternative)) {\r\n light = darkAlternative;\r\n dark = lightAlternative;\r\n }\r\n return isLight(color) ? dark : light;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function mergeTags(tags1, tags2) {\r\n if (!tags1) {\r\n tags1 = [];\r\n }\r\n return [...tags1, ...tags2].filter((value, index, self) => {\r\n return self.indexOf(value) === index;\r\n });\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function sameBounds(a, b) {\r\n if (!b) {\r\n return false;\r\n }\r\n if (a.left != b.left) {\r\n return false;\r\n }\r\n if (a.right != b.right) {\r\n return false;\r\n }\r\n if (a.top != b.top) {\r\n return false;\r\n }\r\n if (a.bottom != b.bottom) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n","import { Theme } from \"../core/Theme\";\r\nimport { p100, p50 } from \"../core/util/Percent\";\r\nimport { Color } from \"../core/util/Color\";\r\nimport { GridLayout } from \"../core/render/GridLayout\";\r\nimport * as $ease from \"../core/util/Ease\";\r\n/**\r\n * @ignore\r\n */\r\nexport function setColor(rule, key, ic, name) {\r\n // TODO this shouldn't use get, figure out a better way\r\n rule.set(key, ic.get(name));\r\n ic.on(name, (value) => {\r\n rule.set(key, value);\r\n });\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class DefaultTheme extends Theme {\r\n setupDefaultRules() {\r\n super.setupDefaultRules();\r\n const language = this._root.language;\r\n const ic = this._root.interfaceColors;\r\n const horizontalLayout = this._root.horizontalLayout;\r\n const verticalLayout = this._root.verticalLayout;\r\n const r = this.rule.bind(this);\r\n /**\r\n * ========================================================================\r\n * core\r\n * ========================================================================\r\n */\r\n r(\"InterfaceColors\").setAll({\r\n stroke: Color.fromHex(0xe5e5e5),\r\n fill: Color.fromHex(0xf3f3f3),\r\n primaryButton: Color.fromHex(0x6794dc),\r\n primaryButtonHover: Color.fromHex(0x6771dc),\r\n primaryButtonDown: Color.fromHex(0x68dc76),\r\n primaryButtonActive: Color.fromHex(0x68dc76),\r\n primaryButtonDisabled: Color.fromHex(0xdadada),\r\n primaryButtonTextDisabled: Color.fromHex(0xffffff),\r\n primaryButtonText: Color.fromHex(0xffffff),\r\n primaryButtonStroke: Color.fromHex(0xffffff),\r\n secondaryButton: Color.fromHex(0xd9d9d9),\r\n secondaryButtonHover: Color.fromHex(0xa3a3a3),\r\n secondaryButtonDown: Color.fromHex(0x8d8d8d),\r\n secondaryButtonActive: Color.fromHex(0xe6e6e6),\r\n secondaryButtonText: Color.fromHex(0x000000),\r\n secondaryButtonStroke: Color.fromHex(0xffffff),\r\n grid: Color.fromHex(0x000000),\r\n background: Color.fromHex(0xffffff),\r\n alternativeBackground: Color.fromHex(0x000000),\r\n text: Color.fromHex(0x000000),\r\n alternativeText: Color.fromHex(0xffffff),\r\n disabled: Color.fromHex(0xadadad),\r\n positive: Color.fromHex(0x50b300),\r\n negative: Color.fromHex(0xb30000)\r\n });\r\n {\r\n const rule = r(\"ColorSet\");\r\n rule.setAll({\r\n passOptions: {\r\n hue: 0.05,\r\n saturation: 0,\r\n lightness: 0\r\n },\r\n colors: [\r\n Color.fromHex(0x67b7dc)\r\n ],\r\n step: 1,\r\n //baseColor: Color.fromRGB(103, 183, 220),\r\n //count: 20,\r\n reuse: false,\r\n startIndex: 0\r\n });\r\n rule.setPrivate(\"currentStep\", 0);\r\n rule.setPrivate(\"currentPass\", 0);\r\n }\r\n r(\"Entity\").setAll({\r\n stateAnimationDuration: 0,\r\n stateAnimationEasing: $ease.out($ease.cubic)\r\n });\r\n r(\"Component\").setAll({\r\n interpolationDuration: 0,\r\n interpolationEasing: $ease.out($ease.cubic)\r\n });\r\n r(\"Sprite\").setAll({\r\n visible: true,\r\n scale: 1,\r\n opacity: 1,\r\n rotation: 0,\r\n position: \"relative\",\r\n tooltipX: p50,\r\n tooltipY: p50,\r\n tooltipPosition: \"fixed\",\r\n isMeasured: true\r\n });\r\n r(\"Sprite\").states.create(\"default\", { \"visible\": true, opacity: 1 });\r\n r(\"Container\").setAll({\r\n interactiveChildren: true,\r\n setStateOnChildren: false\r\n });\r\n r(\"Graphics\").setAll({\r\n strokeWidth: 1\r\n });\r\n r(\"Chart\").setAll({\r\n width: p100,\r\n height: p100,\r\n interactiveChildren: false\r\n });\r\n r(\"ZoomableContainer\").setAll({\r\n width: p100,\r\n height: p100,\r\n wheelable: true,\r\n pinchZoom: true,\r\n maxZoomLevel: 32,\r\n minZoomLevel: 1,\r\n zoomStep: 2,\r\n animationEasing: $ease.out($ease.cubic),\r\n animationDuration: 600\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: alignment\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Sprite\", [\"horizontal\", \"center\"]).setAll({\r\n centerX: p50,\r\n x: p50\r\n });\r\n r(\"Sprite\", [\"vertical\", \"center\"]).setAll({\r\n centerY: p50,\r\n y: p50\r\n });\r\n r(\"Container\", [\"horizontal\", \"layout\"]).setAll({\r\n layout: horizontalLayout\r\n });\r\n r(\"Container\", [\"vertical\", \"layout\"]).setAll({\r\n layout: verticalLayout\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: patterns\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Pattern\").setAll({\r\n repetition: \"repeat\",\r\n width: 50,\r\n height: 50,\r\n rotation: 0,\r\n fillOpacity: 1\r\n });\r\n r(\"LinePattern\").setAll({\r\n gap: 6,\r\n colorOpacity: 1,\r\n width: 49,\r\n height: 49\r\n });\r\n r(\"RectanglePattern\").setAll({\r\n gap: 6,\r\n checkered: false,\r\n centered: true,\r\n maxWidth: 5,\r\n maxHeight: 5,\r\n width: 48,\r\n height: 48,\r\n strokeWidth: 0\r\n });\r\n r(\"CirclePattern\").setAll({\r\n gap: 5,\r\n checkered: false,\r\n centered: false,\r\n radius: 3,\r\n strokeWidth: 0,\r\n width: 45,\r\n height: 45\r\n });\r\n r(\"GrainPattern\").setAll({\r\n width: 200,\r\n height: 200,\r\n colors: [Color.fromHex(0x000000)],\r\n size: 1,\r\n horizontalGap: 0,\r\n verticalGap: 0,\r\n density: 1,\r\n minOpacity: 0,\r\n maxOpacity: 0.2\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: gradients\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"LinearGradient\").setAll({\r\n rotation: 90\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Legend\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Legend\").setAll({\r\n fillField: \"fill\",\r\n strokeField: \"stroke\",\r\n nameField: \"name\",\r\n layout: GridLayout.new(this._root, {}),\r\n layer: 30,\r\n clickTarget: \"itemContainer\"\r\n });\r\n // Class: Container\r\n r(\"Container\", [\"legend\", \"item\", \"itemcontainer\"]).setAll({\r\n paddingLeft: 5,\r\n paddingRight: 5,\r\n paddingBottom: 5,\r\n paddingTop: 5,\r\n layout: horizontalLayout,\r\n setStateOnChildren: true,\r\n interactiveChildren: false,\r\n ariaChecked: true,\r\n focusable: true,\r\n ariaLabel: language.translate(\"Press ENTER to toggle\"),\r\n role: \"checkbox\"\r\n });\r\n {\r\n const rule = r(\"Rectangle\", [\"legend\", \"item\", \"background\"]);\r\n rule.setAll({\r\n fillOpacity: 0,\r\n });\r\n setColor(rule, \"fill\", ic, \"background\");\r\n }\r\n r(\"Container\", [\"legend\", \"marker\"]).setAll({\r\n setStateOnChildren: true,\r\n centerY: p50,\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n paddingBottom: 0,\r\n paddingTop: 0,\r\n width: 18,\r\n height: 18\r\n });\r\n r(\"RoundedRectangle\", [\"legend\", \"marker\", \"rectangle\"]).setAll({\r\n width: p100,\r\n height: p100,\r\n cornerRadiusBL: 3,\r\n cornerRadiusTL: 3,\r\n cornerRadiusBR: 3,\r\n cornerRadiusTR: 3\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"legend\", \"marker\", \"rectangle\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"disabled\");\r\n setColor(rule, \"stroke\", ic, \"disabled\");\r\n }\r\n r(\"Label\", [\"legend\", \"label\"]).setAll({\r\n centerY: p50,\r\n marginLeft: 5,\r\n paddingRight: 0,\r\n paddingLeft: 0,\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n populateText: true\r\n });\r\n {\r\n const rule = r(\"Label\", [\"legend\", \"label\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"disabled\");\r\n }\r\n r(\"Label\", [\"legend\", \"value\", \"label\"]).setAll({\r\n centerY: p50,\r\n marginLeft: 5,\r\n paddingRight: 0,\r\n paddingLeft: 0,\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n width: 50,\r\n centerX: p100,\r\n populateText: true\r\n });\r\n {\r\n const rule = r(\"Label\", [\"legend\", \"value\", \"label\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"disabled\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: HeatLegend\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"HeatLegend\").setAll({\r\n stepCount: 1\r\n });\r\n r(\"RoundedRectangle\", [\"heatlegend\", \"marker\"]).setAll({\r\n cornerRadiusTR: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusBL: 0\r\n });\r\n r(\"RoundedRectangle\", [\"vertical\", \"heatlegend\", \"marker\"]).setAll({\r\n height: p100,\r\n width: 15\r\n });\r\n r(\"RoundedRectangle\", [\"horizontal\", \"heatlegend\", \"marker\"]).setAll({\r\n width: p100,\r\n height: 15\r\n });\r\n r(\"HeatLegend\", [\"vertical\"]).setAll({\r\n height: p100\r\n });\r\n r(\"HeatLegend\", [\"horizontal\"]).setAll({\r\n width: p100\r\n });\r\n r(\"Label\", [\"heatlegend\", \"start\"]).setAll({\r\n paddingLeft: 5,\r\n paddingRight: 5,\r\n paddingTop: 5,\r\n paddingBottom: 5\r\n });\r\n r(\"Label\", [\"heatlegend\", \"end\"]).setAll({\r\n paddingLeft: 5,\r\n paddingRight: 5,\r\n paddingTop: 5,\r\n paddingBottom: 5\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Labels\r\n * ------------------------------------------------------------------------\r\n */\r\n {\r\n const rule = r(\"Label\");\r\n rule.setAll({\r\n paddingTop: 8,\r\n paddingBottom: 8,\r\n paddingLeft: 10,\r\n paddingRight: 10,\r\n fontFamily: \"-apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Helvetica, Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\"\",\r\n fontSize: \"1em\",\r\n populateText: false\r\n });\r\n setColor(rule, \"fill\", ic, \"text\");\r\n }\r\n r(\"RadialLabel\").setAll({\r\n textType: \"regular\",\r\n centerY: p50,\r\n centerX: p50,\r\n inside: false,\r\n radius: 0,\r\n baseRadius: p100,\r\n orientation: \"auto\",\r\n textAlign: \"center\"\r\n });\r\n r(\"EditableLabel\").setAll({\r\n editOn: \"click\",\r\n //setStateOnChildren: true,\r\n themeTags: [\"editablelabel\"],\r\n multiLine: true\r\n });\r\n r(\"RoundedRectangle\", [\"editablelabel\", \"background\"]).setAll({\r\n fillOpacity: 0,\r\n fill: Color.fromHex(0x000000),\r\n cornerRadiusBL: 3,\r\n cornerRadiusBR: 3,\r\n cornerRadiusTL: 3,\r\n cornerRadiusTR: 3,\r\n strokeOpacity: 0,\r\n stroke: Color.fromHex(0x000000)\r\n });\r\n {\r\n r(\"RoundedRectangle\", [\"editablelabel\", \"background\"]).states.create(\"active\", {\r\n strokeOpacity: 0.2,\r\n });\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Elements and shapes\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"RoundedRectangle\").setAll({\r\n cornerRadiusTL: 8,\r\n cornerRadiusBL: 8,\r\n cornerRadiusTR: 8,\r\n cornerRadiusBR: 8\r\n });\r\n r(\"PointedRectangle\").setAll({\r\n pointerBaseWidth: 15,\r\n pointerLength: 10,\r\n cornerRadius: 8\r\n });\r\n r(\"Slice\").setAll({\r\n shiftRadius: 0,\r\n dRadius: 0,\r\n dInnerRadius: 0\r\n });\r\n {\r\n const rule = r(\"Tick\");\r\n rule.setAll({\r\n strokeOpacity: .15,\r\n isMeasured: false,\r\n length: 4.5,\r\n position: \"absolute\",\r\n crisp: true\r\n });\r\n setColor(rule, \"stroke\", ic, \"grid\");\r\n }\r\n r(\"Bullet\").setAll({\r\n locationX: 0.5,\r\n locationY: 0.5\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Tooltip\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Tooltip\").setAll({\r\n position: \"absolute\",\r\n getFillFromSprite: true,\r\n getStrokeFromSprite: false,\r\n autoTextColor: true,\r\n paddingTop: 9,\r\n paddingBottom: 8,\r\n paddingLeft: 10,\r\n paddingRight: 10,\r\n marginBottom: 5,\r\n pointerOrientation: \"vertical\",\r\n centerX: p50,\r\n centerY: p50,\r\n animationEasing: $ease.out($ease.cubic),\r\n exportable: false\r\n //layer: 100\r\n });\r\n r(\"Polygon\").setAll({\r\n animationEasing: $ease.out($ease.cubic),\r\n });\r\n {\r\n const rule = r(\"PointedRectangle\", [\"tooltip\", \"background\"]);\r\n rule.setAll({\r\n strokeOpacity: 0.9,\r\n cornerRadius: 4,\r\n pointerLength: 4,\r\n pointerBaseWidth: 8,\r\n fillOpacity: 0.9,\r\n stroke: Color.fromHex(0xffffff)\r\n });\r\n }\r\n {\r\n const rule = r(\"Label\", [\"tooltip\"]);\r\n rule.setAll({\r\n role: \"tooltip\",\r\n populateText: true,\r\n paddingRight: 0,\r\n paddingTop: 0,\r\n paddingLeft: 0,\r\n paddingBottom: 0\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeText\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Button\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Button\").setAll({\r\n paddingTop: 8,\r\n paddingBottom: 8,\r\n paddingLeft: 10,\r\n paddingRight: 10,\r\n interactive: true,\r\n layout: horizontalLayout,\r\n interactiveChildren: false,\r\n setStateOnChildren: true,\r\n focusable: true\r\n });\r\n r(\"Button\").states.create(\"hover\", {});\r\n r(\"Button\").states.create(\"down\", { stateAnimationDuration: 0 });\r\n r(\"Button\").states.create(\"active\", {});\r\n r(\"Button\").states.create(\"disabled\", {\r\n forceInactive: true\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]);\r\n setColor(rule, \"fill\", ic, \"primaryButton\");\r\n setColor(rule, \"stroke\", ic, \"primaryButtonStroke\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]).states.create(\"hover\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonHover\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]).states.create(\"down\", { stateAnimationDuration: 0 });\r\n setColor(rule, \"fill\", ic, \"primaryButtonDown\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]).states.create(\"active\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonActive\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonDisabled\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"button\", \"icon\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonTextDisabled\");\r\n }\r\n {\r\n const rule = r(\"Label\", [\"button\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonTextDisabled\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"button\", \"icon\"]);\r\n rule.setAll({\r\n forceInactive: true\r\n });\r\n setColor(rule, \"stroke\", ic, \"primaryButtonText\");\r\n }\r\n {\r\n const rule = r(\"Label\", [\"button\"]);\r\n setColor(rule, \"fill\", ic, \"primaryButtonText\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: ZoomOutButton\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Button\", [\"zoom\"]).setAll({\r\n paddingTop: 18,\r\n paddingBottom: 18,\r\n paddingLeft: 12,\r\n paddingRight: 12,\r\n centerX: 46,\r\n centerY: -10,\r\n y: 0,\r\n x: p100,\r\n role: \"button\",\r\n ariaLabel: language.translate(\"Zoom Out\"),\r\n layer: 30\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"button\", \"zoom\"]);\r\n rule.setAll({\r\n cornerRadiusBL: 40,\r\n cornerRadiusBR: 40,\r\n cornerRadiusTL: 40,\r\n cornerRadiusTR: 40\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButton\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"button\", \"zoom\"]).states.create(\"hover\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonHover\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"button\", \"zoom\"]).states.create(\"down\", { stateAnimationDuration: 0 });\r\n setColor(rule, \"fill\", ic, \"primaryButtonDown\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"icon\", \"button\", \"zoom\"]);\r\n rule.setAll({\r\n crisp: true,\r\n strokeOpacity: 0.7,\r\n draw: (display) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(12, 0);\r\n }\r\n });\r\n setColor(rule, \"stroke\", ic, \"primaryButtonText\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: ResizeButton\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Button\", [\"resize\"]).setAll({\r\n paddingTop: 9,\r\n paddingBottom: 9,\r\n paddingLeft: 13,\r\n paddingRight: 13,\r\n draggable: true,\r\n centerX: p50,\r\n centerY: p50,\r\n position: \"absolute\",\r\n role: \"slider\",\r\n ariaValueMin: \"0\",\r\n ariaValueMax: \"100\",\r\n ariaLabel: language.translate(\"Use up and down arrows to move selection\")\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"resize\", \"button\"]);\r\n rule.setAll({\r\n cornerRadiusBL: 40,\r\n cornerRadiusBR: 40,\r\n cornerRadiusTL: 40,\r\n cornerRadiusTR: 40\r\n });\r\n setColor(rule, \"fill\", ic, \"secondaryButton\");\r\n setColor(rule, \"stroke\", ic, \"secondaryButtonStroke\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"resize\", \"button\"]).states.create(\"hover\", {});\r\n setColor(rule, \"fill\", ic, \"secondaryButtonHover\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"resize\", \"button\"]).states.create(\"down\", { stateAnimationDuration: 0 });\r\n setColor(rule, \"fill\", ic, \"secondaryButtonDown\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"resize\", \"button\", \"icon\"]);\r\n rule.setAll({\r\n interactive: false,\r\n crisp: true,\r\n strokeOpacity: 0.5,\r\n draw: (display) => {\r\n display.moveTo(0, 0.5);\r\n display.lineTo(0, 12.5);\r\n display.moveTo(4, 0.5);\r\n display.lineTo(4, 12.5);\r\n }\r\n });\r\n setColor(rule, \"stroke\", ic, \"secondaryButtonText\");\r\n }\r\n r(\"Button\", [\"resize\", \"vertical\"]).setAll({\r\n rotation: 90,\r\n cursorOverStyle: \"ns-resize\"\r\n });\r\n r(\"Button\", [\"resize\", \"horizontal\"]).setAll({\r\n cursorOverStyle: \"ew-resize\"\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: PlayButton\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Button\", [\"play\"]).setAll({\r\n paddingTop: 13,\r\n paddingBottom: 13,\r\n paddingLeft: 14,\r\n paddingRight: 14,\r\n ariaLabel: language.translate(\"Play\"),\r\n toggleKey: \"active\"\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"play\", \"background\"]);\r\n rule.setAll({\r\n strokeOpacity: 0.5,\r\n cornerRadiusBL: 100,\r\n cornerRadiusBR: 100,\r\n cornerRadiusTL: 100,\r\n cornerRadiusTR: 100\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButton\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"play\", \"icon\"]);\r\n rule.setAll({\r\n stateAnimationDuration: 0,\r\n dx: 1,\r\n draw: (display) => {\r\n display.moveTo(0, -5);\r\n display.lineTo(8, 0);\r\n display.lineTo(0, 5);\r\n display.lineTo(0, -5);\r\n }\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButtonText\");\r\n }\r\n r(\"Graphics\", [\"play\", \"icon\"]).states.create(\"default\", {\r\n stateAnimationDuration: 0\r\n });\r\n r(\"Graphics\", [\"play\", \"icon\"]).states.create(\"active\", {\r\n stateAnimationDuration: 0,\r\n draw: (display) => {\r\n display.moveTo(-4, -5);\r\n display.lineTo(-1, -5);\r\n display.lineTo(-1, 5);\r\n display.lineTo(-4, 5);\r\n display.lineTo(-4, -5);\r\n display.moveTo(4, -5);\r\n display.lineTo(1, -5);\r\n display.lineTo(1, 5);\r\n display.lineTo(4, 5);\r\n display.lineTo(4, -5);\r\n }\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: SwitchButton\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Button\", [\"switch\"]).setAll({\r\n paddingTop: 4,\r\n paddingBottom: 4,\r\n paddingLeft: 4,\r\n paddingRight: 4,\r\n ariaLabel: language.translate(\"Press ENTER to toggle\"),\r\n toggleKey: \"active\",\r\n width: 40,\r\n height: 24,\r\n layout: null\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"switch\", \"background\"]);\r\n rule.setAll({\r\n strokeOpacity: 0.5,\r\n cornerRadiusBL: 100,\r\n cornerRadiusBR: 100,\r\n cornerRadiusTL: 100,\r\n cornerRadiusTR: 100\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButton\");\r\n }\r\n {\r\n const rule = r(\"Circle\", [\"switch\", \"icon\"]);\r\n rule.setAll({\r\n radius: 8,\r\n centerY: 0,\r\n centerX: 0,\r\n dx: 0\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButtonText\");\r\n }\r\n r(\"Graphics\", [\"switch\", \"icon\"]).states.create(\"active\", {\r\n dx: 16\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Scrollbar\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Scrollbar\").setAll({\r\n start: 0,\r\n end: 1,\r\n layer: 30,\r\n animationEasing: $ease.out($ease.cubic)\r\n });\r\n r(\"Scrollbar\", [\"vertical\"]).setAll({\r\n marginRight: 13,\r\n marginLeft: 13,\r\n minWidth: 12,\r\n height: p100\r\n });\r\n r(\"Scrollbar\", [\"horizontal\"]).setAll({\r\n marginTop: 13,\r\n marginBottom: 13,\r\n minHeight: 12,\r\n width: p100\r\n });\r\n this.rule(\"Button\", [\"scrollbar\"]).setAll({\r\n exportable: false\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"main\", \"background\"]);\r\n rule.setAll({\r\n cornerRadiusTL: 8,\r\n cornerRadiusBL: 8,\r\n cornerRadiusTR: 8,\r\n cornerRadiusBR: 8,\r\n fillOpacity: 0.8,\r\n });\r\n setColor(rule, \"fill\", ic, \"fill\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\"]);\r\n rule.setAll({\r\n role: \"slider\",\r\n ariaLive: \"polite\",\r\n position: \"absolute\",\r\n draggable: true\r\n });\r\n setColor(rule, \"fill\", ic, \"secondaryButton\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\"]).states.create(\"hover\", {});\r\n setColor(rule, \"fill\", ic, \"secondaryButtonHover\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\"]).states.create(\"down\", { stateAnimationDuration: 0 });\r\n setColor(rule, \"fill\", ic, \"secondaryButtonDown\");\r\n }\r\n r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\", \"vertical\"]).setAll({\r\n x: p50,\r\n width: p100,\r\n centerX: p50,\r\n ariaLabel: language.translate(\"Use up and down arrows to move selection\")\r\n });\r\n r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\", \"horizontal\"]).setAll({\r\n y: p50,\r\n centerY: p50,\r\n height: p100,\r\n ariaLabel: language.translate(\"Use left and right arrows to move selection\")\r\n });\r\n // @todo: is this needed? used to be \"ContentScrollbar\"\r\n // r(\"Scrollbar\", [\"content?\"]).setAll({\r\n // \tmarginRight: 0,\r\n // \tmarginLeft: 5,\r\n // \tlayer: 5\r\n // });\r\n /**\r\n * ========================================================================\r\n * charts/xy\r\n * ========================================================================\r\n *\r\n * This needs to be in DefaultTheme because it's the only theme that is\r\n * automatically applied to Root, and tooltips different ancestors\r\n * than actual charts using them.\r\n */\r\n {\r\n const rule = r(\"PointedRectangle\", [\"axis\", \"tooltip\", \"background\"]);\r\n rule.setAll({\r\n cornerRadius: 0\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\r\n }\r\n r(\"Label\", [\"axis\", \"tooltip\"]).setAll({\r\n role: undefined\r\n });\r\n r(\"Label\", [\"axis\", \"tooltip\", \"y\"]).setAll({\r\n textAlign: \"right\"\r\n });\r\n r(\"Label\", [\"axis\", \"tooltip\", \"y\", \"opposite\"]).setAll({\r\n textAlign: \"left\"\r\n });\r\n r(\"Label\", [\"axis\", \"tooltip\", \"x\"]).setAll({\r\n textAlign: \"center\"\r\n });\r\n r(\"Tooltip\", [\"categoryaxis\"]).setAll({\r\n labelText: \"{category}\"\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * Shapes\r\n * ------------------------------------------------------------------------\r\n */\r\n // Class: Graphics\r\n r(\"Star\").setAll({\r\n spikes: 5,\r\n innerRadius: 5,\r\n radius: 10\r\n });\r\n // STOCK\r\n r(\"Tooltip\", [\"stock\"]).setAll({\r\n paddingTop: 6,\r\n paddingBottom: 5,\r\n paddingLeft: 7,\r\n paddingRight: 7\r\n });\r\n r(\"PointedRectangle\", [\"tooltip\", \"stock\", \"axis\"]).setAll({\r\n pointerLength: 0,\r\n pointerBaseWidth: 0,\r\n cornerRadius: 3\r\n });\r\n r(\"Label\", [\"tooltip\", \"stock\"]).setAll({\r\n fontSize: \"0.8em\"\r\n });\r\n // resizer\r\n r(\"SpriteResizer\").setAll({\r\n rotationStep: 10,\r\n isMeasured: false\r\n });\r\n {\r\n const rule = r(\"Container\", [\"resizer\", \"grip\"]);\r\n rule.states.create(\"hover\", {});\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"resizer\", \"grip\"]);\r\n rule.setAll({\r\n strokeOpacity: 0.7,\r\n strokeWidth: 1,\r\n fillOpacity: 1,\r\n width: 12,\r\n height: 12\r\n });\r\n setColor(rule, \"fill\", ic, \"background\");\r\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"resizer\", \"grip\", \"outline\"]);\r\n rule.setAll({\r\n strokeOpacity: 0,\r\n fillOpacity: 0,\r\n width: 20,\r\n height: 20\r\n });\r\n rule.states.create(\"hover\", {\r\n fillOpacity: 0.3\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\r\n }\r\n r(\"RoundedRectangle\", [\"resizer\", \"grip\", \"left\"]).setAll({\r\n cornerRadiusBL: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusTR: 0\r\n });\r\n r(\"RoundedRectangle\", [\"resizer\", \"grip\", \"right\"]).setAll({\r\n cornerRadiusBL: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusTR: 0\r\n });\r\n {\r\n const rule = r(\"Rectangle\", [\"resizer\", \"rectangle\"]);\r\n rule.setAll({\r\n strokeDasharray: [2, 2],\r\n strokeOpacity: 0.5,\r\n strokeWidth: 1\r\n });\r\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\r\n }\r\n r(\"Graphics\", [\"button\", \"plus\", \"icon\"]).setAll({\r\n x: p50,\r\n y: p50,\r\n draw: (display) => {\r\n display.moveTo(-4, 0);\r\n display.lineTo(4, 0);\r\n display.moveTo(0, -4);\r\n display.lineTo(0, 4);\r\n }\r\n });\r\n r(\"Graphics\", [\"button\", \"minus\", \"icon\"]).setAll({\r\n x: p50,\r\n y: p50,\r\n draw: (display) => {\r\n display.moveTo(-4, 0);\r\n display.lineTo(4, 0);\r\n }\r\n });\r\n r(\"Graphics\", [\"button\", \"home\", \"icon\"]).setAll({\r\n x: p50,\r\n y: p50,\r\n svgPath: \"M 8 -1 L 6 -1 L 6 7 L 2 7 L 2 1 L -2 1 L -2 7 L -6 7 L -6 -1 L -8 -1 L 0 -9 L 8 -1 Z M 8 -1\"\r\n });\r\n r(\"Button\", [\"zoomtools\"]).setAll({\r\n marginTop: 1,\r\n marginBottom: 2\r\n });\r\n r(\"ZoomTools\").setAll({\r\n x: p100,\r\n centerX: p100,\r\n y: p100,\r\n centerY: p100,\r\n paddingRight: 10,\r\n paddingBottom: 10\r\n });\r\n }\r\n}\r\n","import { AnimatedTheme } from \"../.internal/themes/AnimatedTheme\";\r\nexport default AnimatedTheme;\r\n","import { Theme } from \"../core/Theme\";\r\n/**\r\n * @ignore\r\n */\r\nexport class AnimatedTheme extends Theme {\r\n setupDefaultRules() {\r\n super.setupDefaultRules();\r\n this.rule(\"Component\").setAll({\r\n interpolationDuration: 600\r\n });\r\n this.rule(\"Hierarchy\").set(\"animationDuration\", 600);\r\n this.rule(\"Scrollbar\").set(\"animationDuration\", 600);\r\n this.rule(\"Tooltip\").set(\"animationDuration\", 300);\r\n this.rule(\"MapChart\").set(\"animationDuration\", 1000);\r\n this.rule(\"MapChart\").set(\"wheelDuration\", 300);\r\n this.rule(\"Entity\").setAll({\r\n stateAnimationDuration: 600\r\n });\r\n this.rule(\"Sprite\").states.create(\"default\", { stateAnimationDuration: 600 });\r\n this.rule(\"Tooltip\", [\"axis\"]).setAll({\r\n animationDuration: 200\r\n });\r\n this.rule(\"WordCloud\").set(\"animationDuration\", 500);\r\n this.rule(\"Polygon\").set(\"animationDuration\", 600);\r\n this.rule(\"ArcDiagram\").set(\"animationDuration\", 600);\r\n }\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Client = void 0;\nvar Client = /** @class */ (function () {\n function Client() {\n throw new Error(\"not implemented\");\n }\n return Client;\n}());\nexports.Client = Client;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Client = void 0;\nvar Client = /** @class */ (function () {\n function Client() {\n throw new Error(\"not implemented\");\n }\n return Client;\n}());\nexports.Client = Client;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Client = void 0;\nvar Client = /** @class */ (function () {\n function Client() {\n throw new Error(\"not implemented\");\n }\n return Client;\n}());\nexports.Client = Client;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sugarpod = exports.wpapi = exports.wpdb = exports.common = void 0;\n/** top level export */\nvar wpdb = require(\"./wpdb\");\nexports.wpdb = wpdb;\nvar sugarpod = require(\"./sugarpod\");\nexports.sugarpod = sugarpod;\nvar wpapi = require(\"./wpapi\");\nexports.wpapi = wpapi;\nvar common = require(\"./models/wp-model\");\nexports.common = common;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentIdEnum = exports.CoachAppIds = exports.CoachAppIdEnum = exports.IdentifierProviderIdForEnvironment = exports.EnvironmentId = exports.IdentifierProviders = exports.IdentifierProviderId = exports.IdentityProviders = void 0;\n/** DEPRECATED - use IdentifierProviderIssuer */\nexports.IdentityProviders = {\n CaravanHealthPatientId: {\n issuer: \"https://identity.caravanhealth.com/chpatid\",\n ssoType: \"none\",\n description: \"Caravan Health Patient ID\",\n formatSubject: function (chPatId) { return chPatId; },\n parseSubject: function (id) { return { chPatId: id }; }\n },\n CaravanHealthPatientInTierPrivacyPartition: {\n issuer: \"https://identity.caravanhealth.com/patient-in-tier\",\n ssoType: \"none\",\n description: \"Caravan Health patient in privacy partition\",\n formatSubject: function (tierId, chPatId) { return \"\".concat(tierId, \":\").concat(chPatId); },\n parseSubject: function (subject) {\n var items = subject.split(\":\");\n return {\n tierId: items[0],\n chPatId: items[1]\n };\n }\n }\n};\n/** These are the known identifier providers */\nvar IdentifierProviderId;\n(function (IdentifierProviderId) {\n IdentifierProviderId[\"CaravanHealthPatientId\"] = \"CaravanHealthPatientId\";\n IdentifierProviderId[\"CaravanHealthPatientInHierarchyNodeDevEnvironment\"] = \"CaravanHealthPatientInHierarchyNodeDevEnvironment\";\n IdentifierProviderId[\"CaravanHealthPatientInHierarchyNodeQAEnvironment\"] = \"CaravanHealthPatientInHierarchyNodeQAEnvironment\";\n IdentifierProviderId[\"CaravanHealthPatientInHierarchyNodeDemoEnvironment\"] = \"CaravanHealthPatientInHierarchyNodeDemoEnvironment\";\n IdentifierProviderId[\"CaravanHealthPatientInHierarchyNodeProdEnvironment\"] = \"CaravanHealthPatientInHierarchyNodeProdEnvironment\";\n IdentifierProviderId[\"CaravanHealthSmsCarePlanPhoneNumber\"] = \"CaravanHealthSmsCarePlanPhoneNumber\";\n})(IdentifierProviderId || (exports.IdentifierProviderId = IdentifierProviderId = {}));\n;\nexports.IdentifierProviders = {\n CaravanHealthPatientId: {\n issuer: \"https://identity.caravanhealth.com/chpatid\",\n description: \"Caravan Health Patient ID\",\n formatSubject: function (chPatId) { return chPatId; },\n parseSubject: function (id) { return { chPatId: id }; },\n isNotRequired: true,\n isNotUnique: true\n },\n CaravanHealthPatientInHierarchyNodeDevEnvironment: {\n issuer: \"https://dev.patient.identity.caravanhealth.com\",\n description: \"Caravan Health patient hierarchy node privacy partition (Development environment)\",\n formatSubject: function (tierId, chPatId) { return \"\".concat(tierId, \":\").concat(chPatId); },\n parseSubject: function (subject) {\n var items = subject.split(\":\");\n return {\n tierId: items[0],\n chPatId: items[1]\n };\n }\n },\n CaravanHealthPatientInHierarchyNodeQAEnvironment: {\n issuer: \"https://qa.patient.identity.caravanhealth.com\",\n description: \"Caravan Health patient hierarchy node privacy partition (QA environment)\",\n formatSubject: function (tierId, chPatId) { return \"\".concat(tierId, \":\").concat(chPatId); },\n parseSubject: function (subject) {\n var items = subject.split(\":\");\n return {\n tierId: items[0],\n chPatId: items[1]\n };\n }\n },\n CaravanHealthPatientInHierarchyNodeDemoEnvironment: {\n issuer: \"https://demo.patient.identity.caravanhealth.com\",\n description: \"Caravan Health patient hierarchy node privacy partition (Demo environment)\",\n formatSubject: function (tierId, chPatId) { return \"\".concat(tierId, \":\").concat(chPatId); },\n parseSubject: function (subject) {\n var items = subject.split(\":\");\n return {\n tierId: items[0],\n chPatId: items[1]\n };\n }\n },\n CaravanHealthPatientInHierarchyNodeProdEnvironment: {\n issuer: \"https://prod.patient.identity.caravanhealth.com\",\n description: \"Caravan Health patient hierarchy node privacy partition (Production environment)\",\n formatSubject: function (tierId, chPatId) { return \"\".concat(tierId, \":\").concat(chPatId); },\n parseSubject: function (subject) {\n var items = subject.split(\":\");\n return {\n tierId: items[0],\n chPatId: items[1]\n };\n }\n },\n CaravanHealthSmsCarePlanPhoneNumber: {\n issuer: \"https://identity.caravanhealth.com/smscareplanphonenumber\",\n description: \"Phone number to be used for SMS channel in patient management plans\",\n formatSubject: function (phone) { return phone; },\n parseSubject: function (subject) { return { phone: subject }; }\n }\n};\n// This is starting to feel needlessly complicated :/\nvar EnvironmentId;\n(function (EnvironmentId) {\n EnvironmentId[\"dev\"] = \"dev\";\n EnvironmentId[\"qa\"] = \"qa\";\n EnvironmentId[\"demo\"] = \"demo\";\n EnvironmentId[\"prod\"] = \"prod\";\n})(EnvironmentId || (exports.EnvironmentId = EnvironmentId = {}));\nexports.IdentifierProviderIdForEnvironment = {\n dev: IdentifierProviderId.CaravanHealthPatientInHierarchyNodeDevEnvironment,\n qa: IdentifierProviderId.CaravanHealthPatientInHierarchyNodeQAEnvironment,\n demo: IdentifierProviderId.CaravanHealthPatientInHierarchyNodeDemoEnvironment,\n prod: IdentifierProviderId.CaravanHealthPatientInHierarchyNodeProdEnvironment\n};\nvar CoachAppIdEnum;\n(function (CoachAppIdEnum) {\n CoachAppIdEnum[\"dev\"] = \"93b14305-c16a-4f29-bcd1-abe5680ab49e\";\n CoachAppIdEnum[\"qa\"] = \"76cea668-b792-439a-9e8a-13af9d10c752\";\n CoachAppIdEnum[\"demo\"] = \"17e61bfa-2fdb-4d74-9f91-3f5f571d9e9b\";\n CoachAppIdEnum[\"prod\"] = \"638367a0-f2fe-4baf-ac7a-ef8ba4a5c633\";\n})(CoachAppIdEnum || (exports.CoachAppIdEnum = CoachAppIdEnum = {}));\nexports.CoachAppIds = {\n dev: '93b14305-c16a-4f29-bcd1-abe5680ab49e',\n qa: '76cea668-b792-439a-9e8a-13af9d10c752',\n demo: '17e61bfa-2fdb-4d74-9f91-3f5f571d9e9b',\n prod: '638367a0-f2fe-4baf-ac7a-ef8ba4a5c633'\n};\n/** This comes from the coach.Components database table\n * REVIEW - these constants should arguably go into a `coach-constants` package that's shared across\n * apps/services rather than being stored here and in the coach web app.\n */\nvar ComponentIdEnum;\n(function (ComponentIdEnum) {\n ComponentIdEnum[ComponentIdEnum[\"PatientEngagement\"] = 9] = \"PatientEngagement\";\n ComponentIdEnum[ComponentIdEnum[\"TwilioFlow\"] = 49] = \"TwilioFlow\";\n})(ComponentIdEnum || (exports.ComponentIdEnum = ComponentIdEnum = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isMissingMrnAnomaly(x) {\n return x.type === \"MissingMrn\";\n}\nfunction isMismatchedDemographicsAnomaly(x) {\n return x.type === \"MismatchedDemographics\";\n}\nfunction isProcedureScheduleAnomaly(x) {\n return x.type === \"ProcedureSchedule\";\n}\n//#endregion Anomaly\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RecurrenceOptions = void 0;\n/** Used by the UI to populate a SELECT element */\nexports.RecurrenceOptions = {\n daily: { \"label\": \"Daily\", \"value\": \"daily\" },\n mwf: { \"label\": \"Mon/Wed/Fri\", \"value\": \"m-w-f\" },\n tr: { \"label\": \"Tue/Thu\", \"value\": \"t-r\" },\n weekly: { \"label\": \"Weekly\", \"value\": \"weekly\" },\n biweekly: { \"label\": \"Every 2 Weeks\", \"value\": \"bi-weekly\" },\n monthly: { \"label\": \"Monthly\", \"value\": \"monthly\" }\n};\n;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isModule(p) {\n return p.isModule;\n}\n/* Just keep the one in active use */\n// export interface TwilioFlowScheduleDefinitions {\n// scheduleDefinitions:Array<TwilioScheduleDefinition>\n// }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\n//\n// From SytemSettings database collection\n//\n// Used for miscellaneous settings related to services.\n//\n// REVIEW - these types are service-specific, may want to rethink where\n// this should live and what the \"base class\" looks like.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\n/** @module task */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isActivityTask = exports.isWebContentTask = void 0;\nfunction isWebContentTask(t) {\n switch (t.type) {\n case \"education\":\n return true;\n default:\n return false;\n }\n}\nexports.isWebContentTask = isWebContentTask;\nfunction isActivityTask(arg) {\n return arg.type === \"activity\";\n}\nexports.isActivityTask = isActivityTask;\n//#endregion Tasks\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isRepeatingTask = void 0;\n;\nfunction isRepeatingTask(arg) {\n switch (arg.type) {\n case \"bloodPressure\":\n case \"bloodSugar\":\n case \"weight\":\n case \"exercise\":\n case \"outcomes\":\n case \"symptoms\":\n case \"activity\":\n case \"didyoufall\":\n case \"videodiary\":\n case \"education\":\n case \"educationVideo\":\n case \"survey\":\n case \"fooddiary\":\n case \"pain\":\n case \"painmedication\":\n case \"medication\":\n case \"meddiary\":\n case \"smoking\":\n case \"ice\":\n case \"wounds\":\n return true;\n default:\n return false;\n }\n}\nexports.isRepeatingTask = isRepeatingTask;\n","\"use strict\";\n/** @module task */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTaskRuleActionUpdateTask = exports.isTaskRuleActionTemplated = exports.isTaskRuleActionAlert = void 0;\nfunction isTaskRuleActionAlert(x) {\n return x.type === \"createAlert\";\n}\nexports.isTaskRuleActionAlert = isTaskRuleActionAlert;\nfunction isTaskRuleActionTemplated(x) {\n switch (x.type) {\n case \"sendEmail\":\n case \"sendTextMessage\":\n case \"sendPushNotification\":\n return true;\n default:\n return false;\n }\n}\nexports.isTaskRuleActionTemplated = isTaskRuleActionTemplated;\nfunction isTaskRuleActionUpdateTask(x) {\n return x.type === \"updateTask\";\n}\nexports.isTaskRuleActionUpdateTask = isTaskRuleActionUpdateTask;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBloodPressureTask = void 0;\nfunction isBloodPressureTask(arg) {\n return arg.type === \"bloodPressure\";\n}\nexports.isBloodPressureTask = isBloodPressureTask;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBloodSugarTask = void 0;\nfunction isBloodSugarTask(arg) {\n return arg.type === \"bloodSugar\";\n}\nexports.isBloodSugarTask = isBloodSugarTask;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AllTwilioFlowTaskFrequencyKeys = void 0;\nexports.AllTwilioFlowTaskFrequencyKeys = ['weekday', 'mwf', 'weekly', 'biweekly', 'monthly'];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWeightTask = void 0;\nfunction isWeightTask(arg) {\n return arg.type === \"weightTracker\" || arg.type === \"weight\";\n}\nexports.isWeightTask = isWeightTask;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AllPatientSnfStatusItems = void 0;\nexports.AllPatientSnfStatusItems = [\"ServiceDelay\", \"ClinicianDelay\", \"PatientDecompensation\", \"PatientDelay\", \"DischargeIssue\", \"InpatientTransfer\", \"Other\"];\nfunction isOpenIdIdentifier(id) {\n return id.type === \"openid\";\n}\n//#endregion User\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\n/**\n * Shared object model\n *\n * Separated out so that shared properties between API and database don't need separate definitions.\n *\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./task.base\"), exports);\n__exportStar(require(\"./task.type-twilioFlow\"), exports);\n__exportStar(require(\"./user\"), exports);\n__exportStar(require(\"./anomaly\"), exports);\n__exportStar(require(\"./configurableField\"), exports);\n__exportStar(require(\"./configuration\"), exports);\n__exportStar(require(\"./episodeOfCare\"), exports);\n__exportStar(require(\"./notification\"), exports);\n__exportStar(require(\"./organization\"), exports);\n__exportStar(require(\"./protocol\"), exports);\n__exportStar(require(\"./completion.base\"), exports);\n__exportStar(require(\"./alert\"), exports);\n__exportStar(require(\"./userSurvey\"), exports);\n__exportStar(require(\"./survey\"), exports);\n__exportStar(require(\"./surveyResponse\"), exports);\n__exportStar(require(\"./systemSettings\"), exports);\n__exportStar(require(\"./userReport\"), exports);\n__exportStar(require(\"./template\"), exports);\n__exportStar(require(\"./timeTrackingEvent\"), exports);\n__exportStar(require(\"./token\"), exports);\n__exportStar(require(\"./_common\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.common = void 0;\nexports.common = require(\"./_common\");\n__exportStar(require(\"./configurableField\"), exports);\n__exportStar(require(\"../models/task.base\"), exports);\n__exportStar(require(\"../models/task.facet.rules\"), exports);\n__exportStar(require(\"../models/task.facet.repeating\"), exports);\n__exportStar(require(\"../models/task.type-bloodPressure\"), exports);\n__exportStar(require(\"../models/task.type-bloodSugar\"), exports);\n__exportStar(require(\"../models/task.type-weight\"), exports);\n//#endregion\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"../models/task.facet.rules\"), exports);\n__exportStar(require(\"../models/task.facet.repeating\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.client = exports.model = void 0;\n/** wrapper file for exporting sugarpod api parts */\nvar m = require(\"./models/sugarpod-model\");\nexports.model = m;\nvar c = require(\"./clients/sugarpod-client\");\nexports.client = c;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.client = exports.model = void 0;\n/** wrapper file for exporting wpapi parts */\nvar m = require(\"./models/wpapi-model\");\nexports.model = m;\nvar c = require(\"./clients/wpapi-client\");\nexports.client = c;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.client = exports.model = void 0;\n/** Wrapper file for exporting wp database related components */\nvar m = require(\"./models/wpdb-model\");\nexports.model = m;\nvar c = require(\"./clients/wpdb-client\");\nexports.client = c;\n","import * as i0 from '@angular/core';\nimport { NgZone, Injectable, EventEmitter, Component, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';\nimport { VanillaFrameworkOverrides, AgPromise, BaseComponentWrapper, ComponentUtil, Grid } from 'ag-grid-community';\n\nclass AngularFrameworkOverrides extends VanillaFrameworkOverrides {\n constructor(_ngZone) {\n super();\n this._ngZone = _ngZone;\n }\n setEmitterUsedCallback(isEmitterUsed) {\n this.isEmitterUsed = isEmitterUsed;\n }\n setTimeout(action, timeout) {\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => {\n window.setTimeout(() => {\n action();\n }, timeout);\n });\n }\n else {\n window.setTimeout(() => {\n action();\n }, timeout);\n }\n }\n setInterval(action, interval) {\n return new AgPromise(resolve => {\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => {\n resolve(window.setInterval(() => {\n action();\n }, interval));\n });\n }\n else {\n resolve(window.setInterval(() => {\n action();\n }, interval));\n }\n });\n }\n addEventListener(element, eventType, listener, useCapture) {\n if (this.isOutsideAngular(eventType) && this._ngZone) {\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener(eventType, listener, useCapture);\n });\n }\n else {\n element.addEventListener(eventType, listener, useCapture);\n }\n }\n dispatchEvent(eventType, listener, global = false) {\n if (this.isOutsideAngular(eventType)) {\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(listener);\n }\n else {\n listener();\n }\n }\n else if (this.isEmitterUsed(eventType) || global) {\n // only trigger off events (and potentially change detection) if actually used\n if (!NgZone.isInAngularZone() && this._ngZone) {\n this._ngZone.run(listener);\n }\n else {\n listener();\n }\n }\n }\n isFrameworkComponent(comp) {\n if (!comp) {\n return false;\n }\n const prototype = comp.prototype;\n const isAngularComp = prototype && 'agInit' in prototype;\n return isAngularComp;\n }\n}\nAngularFrameworkOverrides.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AngularFrameworkOverrides, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAngularFrameworkOverrides.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AngularFrameworkOverrides });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AngularFrameworkOverrides, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\nclass AngularFrameworkComponentWrapper extends BaseComponentWrapper {\n setViewContainerRef(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n setComponentFactoryResolver(componentFactoryResolver) {\n this.componentFactoryResolver = componentFactoryResolver;\n }\n createWrapper(OriginalConstructor) {\n let that = this;\n class DynamicAgNg2Component extends BaseGuiComponent {\n init(params) {\n super.init(params);\n this._componentRef.changeDetectorRef.detectChanges();\n }\n createComponent() {\n return that.createComponent(OriginalConstructor);\n }\n hasMethod(name) {\n return wrapper.getFrameworkComponentInstance()[name] != null;\n }\n callMethod(name, args) {\n const componentRef = this.getFrameworkComponentInstance();\n return wrapper.getFrameworkComponentInstance()[name].apply(componentRef, args);\n }\n addMethod(name, callback) {\n wrapper[name] = callback;\n }\n }\n let wrapper = new DynamicAgNg2Component();\n return wrapper;\n }\n createComponent(componentType) {\n // used to cache the factory, but this a) caused issues when used with either webpack/angularcli with --prod\n // but more significantly, the underlying implementation of resolveComponentFactory uses a map too, so us\n // caching the factory here yields no performance benefits\n let factory = this.componentFactoryResolver.resolveComponentFactory(componentType);\n return this.viewContainerRef.createComponent(factory);\n }\n}\nAngularFrameworkComponentWrapper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AngularFrameworkComponentWrapper, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nAngularFrameworkComponentWrapper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AngularFrameworkComponentWrapper });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AngularFrameworkComponentWrapper, decorators: [{\n type: Injectable\n }] });\nclass BaseGuiComponent {\n init(params) {\n this._params = params;\n this._componentRef = this.createComponent();\n this._agAwareComponent = this._componentRef.instance;\n this._frameworkComponentInstance = this._componentRef.instance;\n this._eGui = this._componentRef.location.nativeElement;\n this._agAwareComponent.agInit(this._params);\n }\n getGui() {\n return this._eGui;\n }\n destroy() {\n if (this._frameworkComponentInstance && typeof this._frameworkComponentInstance.destroy === 'function') {\n this._frameworkComponentInstance.destroy();\n }\n if (this._componentRef) {\n this._componentRef.destroy();\n }\n }\n getFrameworkComponentInstance() {\n return this._frameworkComponentInstance;\n }\n}\n\nclass AgGridAngular {\n constructor(elementDef, viewContainerRef, angularFrameworkOverrides, frameworkComponentWrapper, componentFactoryResolver) {\n this.viewContainerRef = viewContainerRef;\n this.angularFrameworkOverrides = angularFrameworkOverrides;\n this.frameworkComponentWrapper = frameworkComponentWrapper;\n this.componentFactoryResolver = componentFactoryResolver;\n this._initialised = false;\n this._destroyed = false;\n // in order to ensure firing of gridReady is deterministic\n this._fullyReady = AgPromise.resolve(true);\n // @START@\n /** Specifies the status bar components to use in the status bar. */\n this.statusBar = undefined;\n /** Specifies the side bar components. */\n this.sideBar = undefined;\n /** Set to `true` to not show the context menu. Use if you don't want to use the default 'right click' context menu. Default: `false` */\n this.suppressContextMenu = undefined;\n /** When using `suppressContextMenu`, you can use the `onCellContextMenu` function to provide your own code to handle cell `contextmenu` events.\n * This flag is useful to prevent the browser from showing its default context menu.\n * Default: `false`\n */\n this.preventDefaultOnContextMenu = undefined;\n /** Allows context menu to show, even when `Ctrl` key is held down. Default: `false` */\n this.allowContextMenuWithControlKey = undefined;\n /** Set to `true` to always show the column menu button, rather than only showing when the mouse is over the column header. Default: `false` */\n this.suppressMenuHide = undefined;\n /** Set to `true` to use the browser's default tooltip instead of using the grid's Tooltip Component. Default: `false` */\n this.enableBrowserTooltips = undefined;\n /** The delay in milliseconds that it takes for tooltips to show up once an element is hovered over.\n * **Note:** This property does not work if `enableBrowserTooltips` is `true`.\n * Default: `2000`\n */\n this.tooltipShowDelay = undefined;\n /** The delay in milliseconds that it takes for tooltips to hide once they have been displayed.\n * **Note:** This property does not work if `enableBrowserTooltips` is `true`.\n * Default: `10000`\n */\n this.tooltipHideDelay = undefined;\n /** Set to `true` to have tooltips follow the cursor once they are displayed. Default: `false` */\n this.tooltipMouseTrack = undefined;\n /** DOM element to use as the popup parent for grid popups (context menu, column menu etc). */\n this.popupParent = undefined;\n /** Set to `true` to also include headers when copying to clipboard using `Ctrl + C` clipboard. Default: `false` */\n this.copyHeadersToClipboard = undefined;\n /** Set to `true` to also include group headers when copying to clipboard using `Ctrl + C` clipboard. Default: `false` */\n this.copyGroupHeadersToClipboard = undefined;\n /** Specify the delimiter to use when copying to clipboard.\n * Default: `\\t`\n */\n this.clipboardDelimiter = undefined;\n /** Set to `true` to copy the cell range or focused cell to the clipboard and never the selected rows. Default: `false` */\n this.suppressCopyRowsToClipboard = undefined;\n /** Set to `true` to copy rows instead of ranges when a range with only a single cell is selected. Default: `false` */\n this.suppressCopySingleCellRanges = undefined;\n /** Set to `true` to work around a bug with Excel (Windows) that adds an extra empty line at the end of ranges copied to the clipboard. Default: `false` */\n this.suppressLastEmptyLineOnPaste = undefined;\n /** Set to `true` to turn off paste operations within the grid. Default: `false` */\n this.suppressClipboardPaste = undefined;\n /** Set to `true` to stop the grid trying to use the Clipboard API, if it is blocked, and immediately fallback to the workaround. Default: `false` */\n this.suppressClipboardApi = undefined;\n /** Set to `true` to block **cut** operations within the grid. Default: `false` */\n this.suppressCutToClipboard = undefined;\n /** Array of Column / Column Group definitions. */\n this.columnDefs = undefined;\n /** A default column definition. Items defined in the actual column definitions get precedence. */\n this.defaultColDef = undefined;\n /** A default column group definition. All column group definitions will use these properties. Items defined in the actual column group definition get precedence. */\n this.defaultColGroupDef = undefined;\n /** An object map of custom column types which contain groups of properties that column definitions can inherit by referencing in their `type` property. */\n this.columnTypes = undefined;\n /** Keeps the order of Columns maintained after new Column Definitions are updated. Default: `false` */\n this.maintainColumnOrder = undefined;\n /** If `true`, then dots in field names (e.g. `'address.firstLine'`) are not treated as deep references. Allows you to use dots in your field name if you prefer. Default: `false` */\n this.suppressFieldDotNotation = undefined;\n /** The height in pixels for the row containing the column label header. If not specified, it uses the theme value of `header-height`. */\n this.headerHeight = undefined;\n /** The height in pixels for the rows containing header column groups. If not specified, it uses `headerHeight`. */\n this.groupHeaderHeight = undefined;\n /** The height in pixels for the row containing the floating filters. If not specified, it uses the theme value of `header-height`. */\n this.floatingFiltersHeight = undefined;\n /** The height in pixels for the row containing the columns when in pivot mode. If not specified, it uses `headerHeight`. */\n this.pivotHeaderHeight = undefined;\n /** The height in pixels for the row containing header column groups when in pivot mode. If not specified, it uses `groupHeaderHeight`. */\n this.pivotGroupHeaderHeight = undefined;\n /** Allow reordering and pinning columns by dragging columns from the Columns Tool Panel to the grid. Default: `false` */\n this.allowDragFromColumnsToolPanel = undefined;\n /** Set to `true` to suppress column moving, i.e. to make the columns fixed position. Default: `false` */\n this.suppressMovableColumns = undefined;\n /** If `true`, the `ag-column-moving` class is not added to the grid while columns are moving. In the default themes, this results in no animation when moving columns. Default: `false` */\n this.suppressColumnMoveAnimation = undefined;\n /** If `true`, when you drag a column out of the grid (e.g. to the group zone) the column is not hidden. Default: `false` */\n this.suppressDragLeaveHidesColumns = undefined;\n /** If `true`, when you drag a column into a row group panel the column is not hidden. Default: `false` */\n this.suppressRowGroupHidesColumns = undefined;\n /** Set to `'shift'` to have shift-resize as the default resize operation (same as user holding down `Shift` while resizing). */\n this.colResizeDefault = undefined;\n /** Suppresses auto-sizing columns for columns. In other words, double clicking a column's header's edge will not auto-size. Default: `false` */\n this.suppressAutoSize = undefined;\n /** Number of pixels to add to a column width after the [auto-sizing](/column-sizing/#auto-size-columns) calculation.\n * Set this if you want to add extra room to accommodate (for example) sort icons, or some other dynamic nature of the header.\n * Default: `20`\n */\n this.autoSizePadding = undefined;\n /** Set this to `true` to skip the `headerName` when `autoSize` is called by default. Default: `false` */\n this.skipHeaderOnAutoSize = undefined;\n /** A map of component names to components. */\n this.components = undefined;\n /** @deprecated As of v27, use `components` for framework components too. */\n this.frameworkComponents = undefined;\n /** Set to `'fullRow'` to enable Full Row Editing. Otherwise leave blank to edit one cell at a time. */\n this.editType = undefined;\n /** Set to `true` to enable Single Click Editing for cells, to start editing with a single click. Default: `false` */\n this.singleClickEdit = undefined;\n /** Set to `true` so that neither single nor double click starts editing. Default: `false` */\n this.suppressClickEdit = undefined;\n /** Set to `true` to stop the grid updating data after `Edit`, `Clipboard` and `Fill Handle` operations. When this is set, it is intended the application will update the data, eg in an external immutable store, and then pass the new dataset to the grid. <br />**Note:** `rowNode.setDataValue()` does not update the value of the cell when this is `True`, it fires `onCellEditRequest` instead. Default: `false`. */\n this.readOnlyEdit = undefined;\n /** Set this to `true` to stop cell editing when grid loses focus.\n * The default is that the grid stays editing until focus goes onto another cell.\n * Default: `false`\n */\n this.stopEditingWhenCellsLoseFocus = undefined;\n /** Set to `true` along with `enterMovesDownAfterEdit` to have Excel-style behaviour for the `Enter` key.\n * i.e. pressing the `Enter` key will move down to the cell beneath.\n * Default: `false`\n */\n this.enterMovesDown = undefined;\n /** Set to `true` along with `enterMovesDown` to have Excel-style behaviour for the 'Enter' key.\n * i.e. pressing the Enter key will move down to the cell beneath.\n * Default: `false`\n */\n this.enterMovesDownAfterEdit = undefined;\n /** Forces Cell Editing to start when backspace is pressed. This is only relevant for MacOS users. */\n this.enableCellEditingOnBackspace = undefined;\n /** Set to `true` to enable Undo / Redo while editing. */\n this.undoRedoCellEditing = undefined;\n /** Set the size of the undo / redo stack. Default: `10` */\n this.undoRedoCellEditingLimit = undefined;\n /** A default configuration object used to export to CSV. */\n this.defaultCsvExportParams = undefined;\n /** Prevents the user from exporting the grid to CSV. Default: `false` */\n this.suppressCsvExport = undefined;\n /** A default configuration object used to export to Excel. */\n this.defaultExcelExportParams = undefined;\n /** Prevents the user from exporting the grid to Excel. Default: `false` */\n this.suppressExcelExport = undefined;\n /** A list (array) of Excel styles to be used when exporting to Excel with styles. */\n this.excelStyles = undefined;\n /** Rows are filtered using this text as a Quick Filter. */\n this.quickFilterText = undefined;\n /** Set to `true` to turn on the Quick Filter cache, used to improve performance when using the Quick Filter. Default: `false` */\n this.cacheQuickFilter = undefined;\n /** Set to `true` to exclude hidden columns from being checked by the Quick Filter.\n * This can give a significant performance improvement when there are a large number of hidden columns,\n * and you are only interested in filtering on what's visible. Default: `false`\n */\n this.excludeHiddenColumnsFromQuickFilter = undefined;\n /** Set to `true` to override the default tree data filtering behaviour to instead exclude child nodes from filter results. Default: `false` */\n this.excludeChildrenWhenTreeDataFiltering = undefined;\n /** Set to `true` to Enable Charts. Default: `false` */\n this.enableCharts = undefined;\n /** The list of chart themes to be used. */\n this.chartThemes = undefined;\n /** A map containing custom chart themes. */\n this.customChartThemes = undefined;\n /** Chart theme overrides applied to all themes. */\n this.chartThemeOverrides = undefined;\n /** @deprecated As of v29, no longer used. To suppress use `suppressChartToolPanelsButton`. */\n this.enableChartToolPanelsButton = undefined;\n /** Set to `true` to show the 'hamburger' menu option from the Chart Toolbar and display the remaining toolbar buttons. Default: `false` */\n this.suppressChartToolPanelsButton = undefined;\n /** Allows customisation of the Chart Tool Panels, such as changing the tool panels visibility and order, as well as choosing which charts should be displayed in the settings panel. */\n this.chartToolPanelsDef = undefined;\n /** Provide your own loading cell renderer to use when data is loading via a DataSource.\n * See [Loading Cell Renderer](https://www.ag-grid.com/javascript-data-grid/component-loading-cell-renderer/) for framework specific implementation details.\n */\n this.loadingCellRenderer = undefined;\n /** @deprecated As of v27, use `loadingCellRenderer` for framework components too. */\n this.loadingCellRendererFramework = undefined;\n /** Params to be passed to the `loadingCellRenderer` component. */\n this.loadingCellRendererParams = undefined;\n /** Callback to select which loading cell renderer to be used when data is loading via a DataSource. */\n this.loadingCellRendererSelector = undefined;\n /** A map of key->value pairs for localising text within the grid. */\n this.localeText = undefined;\n /** Set to `true` to enable Master Detail. Default: `false` */\n this.masterDetail = undefined;\n /** Set to `true` to keep detail rows for when they are displayed again. Default: `false` */\n this.keepDetailRows = undefined;\n /** Sets the number of details rows to keep. Default: `10` */\n this.keepDetailRowsCount = undefined;\n /** Provide a custom `detailCellRenderer` to use when a master row is expanded.\n * See [Detail Cell Renderer](https://www.ag-grid.com/javascript-data-grid/master-detail-custom-detail/) for framework specific implementation details.\n */\n this.detailCellRenderer = undefined;\n /** @deprecated As of v27, use `detailCellRenderer` for framework components too. */\n this.detailCellRendererFramework = undefined;\n /** Specifies the params to be used by the Detail Cell Renderer. Can also be a function that provides the params to enable dynamic definitions of the params. */\n this.detailCellRendererParams = undefined;\n /** Set fixed height in pixels for each detail row. */\n this.detailRowHeight = undefined;\n /** Set to `true` to have the detail grid dynamically change it's height to fit it's rows. */\n this.detailRowAutoHeight = undefined;\n /** Provides a context object that is provided to different callbacks the grid uses. Used for passing additional information to the callbacks by your application. */\n this.context = undefined;\n /** A list of grids to treat as Aligned Grids. If grids are aligned then the columns and horizontal scrolling will be kept in sync. */\n this.alignedGrids = undefined;\n /** Change this value to set the tabIndex order of the Grid within your application. Default: `0` */\n this.tabIndex = undefined;\n /** The number of rows rendered outside the viewable area the grid renders.\n * Having a buffer means the grid will have rows ready to show as the user slowly scrolls vertically.\n * Default: `10`\n */\n this.rowBuffer = undefined;\n /** Set to `true` to turn on the value cache. Default: `false` */\n this.valueCache = undefined;\n /** Set to `true` to configure the value cache to not expire after data updates. Default: `false` */\n this.valueCacheNeverExpires = undefined;\n /** Set to `true` to allow cell expressions. Default: `false` */\n this.enableCellExpressions = undefined;\n /** If `true`, row nodes do not have their parents set.\n * The grid doesn't use the parent reference, but it is included to help the client code navigate the node tree if it wants by providing bi-direction navigation up and down the tree.\n * If this is a problem (e.g. if you need to convert the tree to JSON, which does not allow cyclic dependencies) then set this to `true`.\n * Default: `false`\n */\n this.suppressParentsInRowNodes = undefined;\n /** Disables touch support (but does not remove the browser's efforts to simulate mouse events on touch). Default: `false` */\n this.suppressTouch = undefined;\n /** Set to `true` to not set focus back on the grid after a refresh. This can avoid issues where you want to keep the focus on another part of the browser. Default: `false` */\n this.suppressFocusAfterRefresh = undefined;\n /** Disables the asynchronous nature of the events introduced in v10, and makes them synchronous. This property only exists for the purpose of supporting legacy code which has a dependency on synchronous events from earlier versions (v9 or earlier) of AG Grid. **It is strongly recommended that you do not change this property unless you have legacy issues.** Default: `false` */\n this.suppressAsyncEvents = undefined;\n /** The grid will check for `ResizeObserver` and use it if it exists in the browser, otherwise it will use the grid's alternative implementation. Some users reported issues with Chrome's `ResizeObserver`. Use this property to always use the grid's alternative implementation should such problems exist. Default: `false` */\n this.suppressBrowserResizeObserver = undefined;\n /** Disables showing a warning message in the console if using a `gridOptions` or `colDef` property that doesn't exist. Default: `false` */\n this.suppressPropertyNamesCheck = undefined;\n /** Disables change detection. Default: `false` */\n this.suppressChangeDetection = undefined;\n /** Set this to `true` to enable debug information from the grid and related components. Will result in additional logging being output, but very useful when investigating problems. Default: `false` */\n this.debug = undefined;\n /** Provide a template for 'loading' overlay. */\n this.overlayLoadingTemplate = undefined;\n /** Provide a custom loading overlay component.\n * See [Loading Overlay Component](https://www.ag-grid.com/javascript-data-grid/component-overlay/#simple-loading-overlay-component) for framework specific implementation details.\n */\n this.loadingOverlayComponent = undefined;\n /** @deprecated As of v27, use `loadingOverlayComponent` for framework components too. */\n this.loadingOverlayComponentFramework = undefined;\n /** Customise the parameters provided to the loading overlay component. */\n this.loadingOverlayComponentParams = undefined;\n /** Disables the 'loading' overlay. Default: `false` */\n this.suppressLoadingOverlay = undefined;\n /** Provide a template for 'no rows' overlay. */\n this.overlayNoRowsTemplate = undefined;\n /** Provide a custom no rows overlay component.\n * See [No Rows Overlay Component](https://www.ag-grid.com/javascript-data-grid/component-overlay/#simple-no-rows-overlay-component) for framework specific implementation details.\n */\n this.noRowsOverlayComponent = undefined;\n /** @deprecated As of v27, use `noRowsOverlayComponent` for framework components too. */\n this.noRowsOverlayComponentFramework = undefined;\n /** Customise the parameters provided to the no rows overlay component. */\n this.noRowsOverlayComponentParams = undefined;\n /** Disables the 'no rows' overlay. Default: `false` */\n this.suppressNoRowsOverlay = undefined;\n /** Set whether pagination is enabled. Default: `false` */\n this.pagination = undefined;\n /** How many rows to load per page. If `paginationAutoPageSize` is specified, this property is ignored. Default: `100` */\n this.paginationPageSize = undefined;\n /** Set to `true` so that the number of rows to load per page is automatically adjusted by the grid so each page shows enough rows to just fill the area designated for the grid. If `false`, `paginationPageSize` is used. Default: `false` */\n this.paginationAutoPageSize = undefined;\n /** Set to `true` to have pages split children of groups when using Row Grouping or detail rows with Master Detail. Default: `false` */\n this.paginateChildRows = undefined;\n /** If `true`, the default grid controls for navigation are hidden.\n * This is useful if `pagination=true` and you want to provide your own pagination controls.\n * Otherwise, when `pagination=true` the grid automatically shows the necessary controls at the bottom so that the user can navigate through the different pages.\n * Default: `false`\n */\n this.suppressPaginationPanel = undefined;\n /** Set to `true` to enable pivot mode. Default: `false` */\n this.pivotMode = undefined;\n /** When to show the 'pivot panel' (where you drag rows to pivot) at the top. Note that the pivot panel will never show if `pivotMode` is off. Default: `never` */\n this.pivotPanelShow = undefined;\n /** When set and the grid is in pivot mode, automatically calculated totals will appear within the Pivot Column Groups, in the position specified. */\n this.pivotColumnGroupTotals = undefined;\n /** When set and the grid is in pivot mode, automatically calculated totals will appear for each value column in the position specified. */\n this.pivotRowTotals = undefined;\n /** If `true`, the grid will not swap in the grouping column when pivoting. Useful if pivoting using Server Side Row Model or Viewport Row Model and you want full control of all columns including the group column. Default: `false` */\n this.pivotSuppressAutoColumn = undefined;\n /** When enabled, pivot column groups will appear 'fixed', without the ability to expand and collapse the column groups. Default: `false` */\n this.suppressExpandablePivotGroups = undefined;\n /** If `true`, then row group, pivot and value aggregation will be read-only from the GUI. The grid will display what values are used for each, but will not allow the user to change the selection. Default: `false` */\n this.functionsReadOnly = undefined;\n /** A map of 'function name' to 'function' for custom aggregation functions. */\n this.aggFuncs = undefined;\n /** When `true`, column headers won't include the `aggFunc` name, e.g. `'sum(Bank Balance)`' will just be `'Bank Balance'`. Default: `false` */\n this.suppressAggFuncInHeader = undefined;\n /** When `true`, the aggregations won't be computed for the root node of the grid. Default: `false` */\n this.suppressAggAtRootLevel = undefined;\n /** When using change detection, only the updated column will be re-aggregated. Default: `false` */\n this.aggregateOnlyChangedColumns = undefined;\n /** Set to `true` so that aggregations are not impacted by filtering. Default: `false` */\n this.suppressAggFilteredOnly = undefined;\n /** Set to `true` to omit the value Column header when there is only a single value column. Default: `false` */\n this.removePivotHeaderRowWhenSingleValueColumn = undefined;\n /** Set to `true` to enable Row Animation. Default: `false` */\n this.animateRows = undefined;\n /** Set to `true` to have cells flash after data changes. Default: `false` */\n this.enableCellChangeFlash = undefined;\n /** To be used in combination with `enableCellChangeFlash`, this configuration will set the delay in milliseconds of how long a cell should remain in its \"flashed\" state.\n * Default: `500`\n */\n this.cellFlashDelay = undefined;\n /** To be used in combination with `enableCellChangeFlash`, this configuration will set the delay in milliseconds of how long the \"flashed\" state animation takes to fade away after the timer set by `cellFlashDelay` has completed.\n * Default: `1000`\n */\n this.cellFadeDelay = undefined;\n /** Set to `true` to have cells flash after data changes even when the change is due to filtering. Default: `false` */\n this.allowShowChangeAfterFilter = undefined;\n /** Switch between layout options: `normal`, `autoHeight`, `print`.\n * Default: `normal`\n */\n this.domLayout = undefined;\n /** When `true`, the order of rows and columns in the DOM are consistent with what is on screen. Default: `false` */\n this.ensureDomOrder = undefined;\n /** Set to `true` to operate the grid in RTL (Right to Left) mode. Default: `false` */\n this.enableRtl = undefined;\n /** Set to `true` so that the grid doesn't virtualise the columns. For example, if you have 100 columns, but only 10 visible due to scrolling, all 100 will always be rendered. Default: `false` */\n this.suppressColumnVirtualisation = undefined;\n /** By default the grid has a limit of rendering a maximum of 500 rows at once (remember the grid only renders rows you can see, so unless your display shows more than 500 rows without vertically scrolling this will never be an issue).\n * <br />**This is only relevant if you are manually setting `rowBuffer` to a high value (rendering more rows than can be seen), or `suppressRowVirtualisation` is true, or if your grid height is able to display more than 500 rows at once.**\n * Default: `false`\n */\n this.suppressMaxRenderedRowRestriction = undefined;\n /** Set to `true` so that the grid doesn't virtualise the rows. For example, if you have 100 rows, but only 10 visible due to scrolling, all 100 will always be rendered. Default: `false` */\n this.suppressRowVirtualisation = undefined;\n /** Set to `true` to enable Managed Row Dragging. Default: `false` */\n this.rowDragManaged = undefined;\n /** Set to `true` to suppress row dragging. Default: `false` */\n this.suppressRowDrag = undefined;\n /** Set to `true` to suppress moving rows while dragging the `rowDrag` waffle. This option highlights the position where the row will be placed and it will only move the row on mouse up. Default: `false` */\n this.suppressMoveWhenRowDragging = undefined;\n /** Set to `true` to enable clicking and dragging anywhere on the row without the need for a drag handle. Default: `false` */\n this.rowDragEntireRow = undefined;\n /** Set to `true` to enable dragging multiple rows at the same time. Default: `false` */\n this.rowDragMultiRow = undefined;\n /** A callback that should return a string to be displayed by the `rowDragComp` while dragging a row.\n * If this callback is not set, the current cell value will be used.\n * If the `rowDragText` callback is set in the ColDef it will take precedence over this, except when\n * `rowDragEntireRow=true`.\n */\n this.rowDragText = undefined;\n /** Provide your own cell renderer component to use for full width rows.\n * See [Full Width Rows](https://www.ag-grid.com/javascript-data-grid/full-width-rows/) for framework specific implementation details.\n */\n this.fullWidthCellRenderer = undefined;\n /** @deprecated As of v27, use `fullWidthCellRenderer` for framework components too. */\n this.fullWidthCellRendererFramework = undefined;\n /** Customise the parameters provided to the `fullWidthCellRenderer` component. */\n this.fullWidthCellRendererParams = undefined;\n /** Set to `true` to have the Full Width Rows embedded in grid's main container so they can be scrolled horizontally . */\n this.embedFullWidthRows = undefined;\n /** Specifies how the results of row grouping should be displayed.\n *\n * The options are:\n *\n * - `'singleColumn'`: single group column automatically added by the grid.\n * - `'multipleColumns'`: a group column per row group is added automatically.\n * - `'groupRows'`: group rows are automatically added instead of group columns.\n * - `'custom'`: informs the grid that group columns will be provided.\n */\n this.groupDisplayType = undefined;\n /** If grouping, set to the number of levels to expand by default, e.g. `0` for none, `1` for first level only, etc. Set to `-1` to expand everything. Default: `0` */\n this.groupDefaultExpanded = undefined;\n /** Allows specifying the group 'auto column' if you are not happy with the default. If grouping, this column definition is included as the first column in the grid. If not grouping, this column is not included. */\n this.autoGroupColumnDef = undefined;\n /** When `true`, preserves the current group order when sorting on non-group columns. Default: `false` */\n this.groupMaintainOrder = undefined;\n /** When `true`, if you select a group, the children of the group will also be selected. Default: `false` */\n this.groupSelectsChildren = undefined;\n /** Set to determine whether filters should be applied on aggregated group values. Default: `false` */\n this.groupAggFiltering = undefined;\n /** If grouping, this controls whether to show a group footer when the group is expanded.\n * If `true`, then by default, the footer will contain aggregate data (if any) when shown and the header will be blank.\n * When closed, the header will contain the aggregate data regardless of this setting (as the footer is hidden anyway).\n * This is handy for 'total' rows, that are displayed below the data when the group is open, and alongside the group when it is closed.\n * Default: `false`\n */\n this.groupIncludeFooter = undefined;\n /** Set to `true` to show a 'grand total' group footer across all groups. Default: `false` */\n this.groupIncludeTotalFooter = undefined;\n /** If `true`, and showing footer, aggregate data will always be displayed at both the header and footer levels. This stops the possibly undesirable behaviour of the header details 'jumping' to the footer on expand. Default: `false` */\n this.groupSuppressBlankHeader = undefined;\n /** If using `groupSelectsChildren`, then only the children that pass the current filter will get selected. Default: `false` */\n this.groupSelectsFiltered = undefined;\n /** Shows the open group in the group column for non-group rows. Default: `false` */\n this.showOpenedGroup = undefined;\n /** Set to `true` to collapse groups that only have one child. */\n this.groupRemoveSingleChildren = undefined;\n /** Set to `true` to collapse lowest level groups that only have one child. Default: `false` */\n this.groupRemoveLowestSingleChildren = undefined;\n /** Set to `true` to hide parents that are open. When used with multiple columns for showing groups, it can give a more pleasing user experience. Default: `false` */\n this.groupHideOpenParents = undefined;\n /** Set to `true` to prevent the grid from creating a '(Blanks)' group for nodes which do not belong to a group, and display the unbalanced nodes alongside group nodes. Default: `false` */\n this.groupAllowUnbalanced = undefined;\n /** When to show the 'row group panel' (where you drag rows to group) at the top. Default: `never` */\n this.rowGroupPanelShow = undefined;\n /** Provide the Cell Renderer to use when `groupDisplayType = 'groupRows'`.\n * See [Group Row Cell Renderer](https://www.ag-grid.com/javascript-data-grid/grouping-group-rows/#providing-cell-renderer) for framework specific implementation details.\n */\n this.groupRowRenderer = undefined;\n /** @deprecated As of v27, use `groupRowRenderer` for framework components too. */\n this.groupRowRendererFramework = undefined;\n /** Customise the parameters provided to the `groupRowRenderer` component. */\n this.groupRowRendererParams = undefined;\n /** By default, when a column is un-grouped, i.e. using the Row Group Panel, it is made visible in the grid. This property stops the column becoming visible again when un-grouping. Default: `false` */\n this.suppressMakeColumnVisibleAfterUnGroup = undefined;\n /** Set to `true` to enable the Grid to work with Tree Data. You must also implement the `getDataPath(data)` callback. */\n this.treeData = undefined;\n /** Set to `true` to suppress sort indicators and actions from the row group panel. Default: `false`. */\n this.rowGroupPanelSuppressSort = undefined;\n /** Set to `true` to keep open Group Rows visible at the top of the grid. Default: `false`.*/\n this.groupRowsSticky = undefined;\n /** @deprecated v24 - no longer needed, transaction updates keep group state */\n this.rememberGroupStateWhenNewData = undefined;\n /** Data to be displayed as pinned top rows in the grid. */\n this.pinnedTopRowData = undefined;\n /** Data to be displayed as pinned bottom rows in the grid. */\n this.pinnedBottomRowData = undefined;\n /** Sets the row model type. Default: `clientSide` */\n this.rowModelType = undefined;\n /** Set the data to be displayed as rows in the grid. */\n this.rowData = undefined;\n /** @deprecated 27.1 Immutable Data is on by default when grid callback getRowId() is implemented\n * Enables Immutable Data mode, for compatibility with immutable stores. Default: `false` */\n this.immutableData = undefined;\n /** How many milliseconds to wait before executing a batch of async transactions. */\n this.asyncTransactionWaitMillis = undefined;\n /** Prevents Transactions changing sort, filter, group or pivot state when transaction only contains updates. Default: `false` */\n this.suppressModelUpdateAfterUpdateTransaction = undefined;\n /** Provide the datasource for infinite scrolling. */\n this.datasource = undefined;\n /** How many extra blank rows to display to the user at the end of the dataset, which sets the vertical scroll and then allows the grid to request viewing more rows of data.\n * Default: `1`\n */\n this.cacheOverflowSize = undefined;\n /** How many extra blank rows to display to the user at the end of the dataset, which sets the vertical scroll and then allows the grid to request viewing more rows of data.\n * Default: `1`\n */\n this.infiniteInitialRowCount = undefined;\n /** Set how many loading rows to display to the user for the root level group.\n * Default: `1`\n */\n this.serverSideInitialRowCount = undefined;\n /** @deprecated v28 Whether to use Full Store or Partial Store for storing rows. Default: `partial`.\n * Deprecated in favour of suppressServerSideInfiniteScroll. When false, Partial Store is used. When true,\n * Full Store is used.\n */\n this.serverSideStoreType = undefined;\n /** When `true`, the Server-side Row Model will suppress Infinite Scrolling and load all the data at the current level.\n * Default: `false`\n */\n this.suppressServerSideInfiniteScroll = undefined;\n /** How many rows for each block in the store, i.e. how many rows returned from the server at a time.\n * Default: `100`\n */\n this.cacheBlockSize = undefined;\n /** How many blocks to keep in the store. Default is no limit, so every requested block is kept. Use this if you have memory concerns, and blocks that were least recently viewed will be purged when the limit is hit. The grid will additionally make sure it has all the blocks needed to display what is currently visible, in case this property is set to a low value. */\n this.maxBlocksInCache = undefined;\n /** How many requests to hit the server with concurrently. If the max is reached, requests are queued.\n * Set to `-1` for no maximum restriction on requests.\n * Default: `2`\n */\n this.maxConcurrentDatasourceRequests = undefined;\n /** How many milliseconds to wait before loading a block. Useful when scrolling over many blocks, as it prevents blocks loading until scrolling has settled. */\n this.blockLoadDebounceMillis = undefined;\n /** When enabled, closing group rows will remove children of that row. Next time the row is opened, child rows will be read from the datasource again. This property only applies when there is Row Grouping. Default: `false` */\n this.purgeClosedRowNodes = undefined;\n /** Provide the `serverSideDatasource` for server side row model. */\n this.serverSideDatasource = undefined;\n /** When enabled, always refreshes top level groups regardless of which column was sorted. This property only applies when there is Row Grouping & sorting is handled on the server. Default: `false` */\n this.serverSideSortAllLevels = undefined;\n /** When enabled, always refreshes top level groups regardless of which column was filtered. This property only applies when there is Row Grouping & filtering is handled on the server. Default: `false` */\n this.serverSideFilterAllLevels = undefined;\n /**\n * When enabled, Sorting will be done on the server. Only applicable when `suppressServerSideInfiniteScroll=true`.\n * Default: `false`\n */\n this.serverSideSortOnServer = undefined;\n /** When enabled, Filtering will be done on the server. Only applicable when `suppressServerSideInfiniteScroll=true`.\n * Default: `false`\n */\n this.serverSideFilterOnServer = undefined;\n /** @deprecated v28 This property has been deprecated. Use `serverSideSortAllLevels` instead. */\n this.serverSideSortingAlwaysResets = undefined;\n /** @deprecated v28 This property has been deprecated. Use `serverSideFilterAllLevels` instead. */\n this.serverSideFilteringAlwaysResets = undefined;\n /** To use the viewport row model you need to provide the grid with a `viewportDatasource`. */\n this.viewportDatasource = undefined;\n /** When using viewport row model, sets the page size for the viewport. */\n this.viewportRowModelPageSize = undefined;\n /** When using viewport row model, sets the buffer size for the viewport. */\n this.viewportRowModelBufferSize = undefined;\n /** Set to `true` to always show the horizontal scrollbar. Default: `false` */\n this.alwaysShowHorizontalScroll = undefined;\n /** Set to `true` to always show the vertical scrollbar. Default: `false` */\n this.alwaysShowVerticalScroll = undefined;\n /** Set to `true` to debounce the vertical scrollbar. Can provide smoother scrolling on slow machines. Default: `false` */\n this.debounceVerticalScrollbar = undefined;\n /** Set to `true` to never show the horizontal scroll. This is useful if the grid is aligned with another grid and will scroll when the other grid scrolls. (Should not be used in combination with `alwaysShowHorizontalScroll`.) Default: `false` */\n this.suppressHorizontalScroll = undefined;\n /** When `true`, the grid will not scroll to the top when new row data is provided. Use this if you don't want the default behaviour of scrolling to the top every time you load new data. Default: `false` */\n this.suppressScrollOnNewData = undefined;\n /** When `true`, the grid will not allow mousewheel / touchpad scroll when popup elements are present. Default: `false` */\n this.suppressScrollWhenPopupsAreOpen = undefined;\n /** When `true`, the grid will not use animation frames when drawing rows while scrolling. Use this if the grid is working fast enough that you don't need animation frames and you don't want the grid to flicker. Default: `false` */\n this.suppressAnimationFrame = undefined;\n /** If `true`, middle clicks will result in `click` events for cells and rows. Otherwise the browser will use middle click to scroll the grid.<br />**Note:** Not all browsers fire `click` events with the middle button. Most will fire only `mousedown` and `mouseup` events, which can be used to focus a cell, but will not work to call the `onCellClicked` function. Default: `false` */\n this.suppressMiddleClickScrolls = undefined;\n /** If `true`, mouse wheel events will be passed to the browser. Useful if your grid has no vertical scrolls and you want the mouse to scroll the browser page. Default: `false` */\n this.suppressPreventDefaultOnMouseWheel = undefined;\n /** Tell the grid how wide in pixels the scrollbar is, which is used in grid width calculations. Set only if using non-standard browser-provided scrollbars, so the grid can use the non-standard size in its calculations. */\n this.scrollbarWidth = undefined;\n /** Type of Row Selection: `single`, `multiple`. */\n this.rowSelection = undefined;\n /** Set to `true` to allow multiple rows to be selected using single click. Default: `false` */\n this.rowMultiSelectWithClick = undefined;\n /** If `true`, rows will not be deselected if you hold down `Ctrl` and click the row or press `Space`. Default: `false` */\n this.suppressRowDeselection = undefined;\n /** If `true`, row selection won't happen when rows are clicked. Use when you only want checkbox selection. Default: `false` */\n this.suppressRowClickSelection = undefined;\n /** @deprecated v27 This property has been deprecated. Use `suppressCellFocus` instead.\n */\n this.suppressCellSelection = undefined;\n /** If `true`, cells won't be focusable. This means keyboard navigation will be disabled for grid cells, but remain enabled in other elements of the grid such as column headers, floating filters, tool panels. Default: `false` */\n this.suppressCellFocus = undefined;\n /** If `true`, only a single range can be selected. Default: `false` */\n this.suppressMultiRangeSelection = undefined;\n /** Set to `true` to be able to select the text within cells.\n *\n * **Note:** When this is set to `true`, the clipboard service is disabled.\n * Default: `false`\n */\n this.enableCellTextSelection = undefined;\n /** Set to `true` to enable Range Selection. Default: `false` */\n this.enableRangeSelection = undefined;\n /** Set to `true` to enable the Range Handle. Default: `false` */\n this.enableRangeHandle = undefined;\n /** Set to `true` to enable the Fill Handle. Default: `false` */\n this.enableFillHandle = undefined;\n /** Set to `'x'` to force the fill handle direction to horizontal, or set to `'y'` to force the fill handle direction to vertical. Default: `xy` */\n this.fillHandleDirection = undefined;\n /** Set this to `true` to prevent cell values from being cleared when the Range Selection is reduced by the Fill Handle. Default: `false`*/\n this.suppressClearOnFillReduction = undefined;\n /** Array defining the order in which sorting occurs (if sorting is enabled). Values can be `'asc'`, `'desc'` or `null`. For example: `sortingOrder: ['asc', 'desc']`. Default: `[null, 'asc', 'desc']` */\n this.sortingOrder = undefined;\n /** Set to `true` to specify that the sort should take accented characters into account. If this feature is turned on the sort will be slower. Default: `false` */\n this.accentedSort = undefined;\n /** Set to `true` to show the 'no sort' icon. Default: `false` */\n this.unSortIcon = undefined;\n /** Set to `true` to suppress multi-sort when the user shift-clicks a column header. Default: `false` */\n this.suppressMultiSort = undefined;\n /** Set to `true` to always multi-sort when the user clicks a column header, regardless of key presses. Default: `false` */\n this.alwaysMultiSort = undefined;\n /** Set to `'ctrl'` to have multi sorting work using the `Ctrl` (or `Command ⌘` for Mac) key. */\n this.multiSortKey = undefined;\n /** Set to `true` to suppress sorting of un-sorted data to match original row data. Default: `false` */\n this.suppressMaintainUnsortedOrder = undefined;\n /** Icons to use inside the grid instead of the grid's default icons. */\n this.icons = undefined;\n /** Default row height in pixels. Default: `25` */\n this.rowHeight = undefined;\n /** The style properties to apply to all rows. Set to an object of key (style names) and values (style values) */\n this.rowStyle = undefined;\n /** CSS class(es) for all rows. Provide either a string (class name) or array of strings (array of class names). */\n this.rowClass = undefined;\n /** Rules which can be applied to include certain CSS classes. */\n this.rowClassRules = undefined;\n /** Set to `true` to not highlight rows by adding the `ag-row-hover` CSS class. Default: `false` */\n this.suppressRowHoverHighlight = undefined;\n /** Uses CSS `top` instead of CSS `transform` for positioning rows. Useful if the transform function is causing issues such as used in row spanning. Default: `false` */\n this.suppressRowTransform = undefined;\n /** Set to `true` to highlight columns by adding the `ag-column-hover` CSS class. Default: `false` */\n this.columnHoverHighlight = undefined;\n this.deltaSort = undefined;\n this.treeDataDisplayType = undefined;\n /** @deprecated v29.2 */\n this.functionsPassive = undefined;\n this.enableGroupEdit = undefined;\n /** For customising the context menu. */\n this.getContextMenuItems = undefined;\n /** For customising the main 'column header' menu. */\n this.getMainMenuItems = undefined;\n /** Allows user to process popups after they are created. Applications can use this if they want to, for example, reposition the popup. */\n this.postProcessPopup = undefined;\n /** Allows you to process cells for the clipboard. Handy if for example you have `Date` objects that need to have a particular format if importing into Excel. */\n this.processCellForClipboard = undefined;\n /** Allows you to process header values for the clipboard. */\n this.processHeaderForClipboard = undefined;\n /** Allows you to process group header values for the clipboard. */\n this.processGroupHeaderForClipboard = undefined;\n /** Allows you to process cells from the clipboard. Handy if for example you have number fields, and want to block non-numbers from getting into the grid. */\n this.processCellFromClipboard = undefined;\n /** Allows you to get the data that would otherwise go to the clipboard. To be used when you want to control the 'copy to clipboard' operation yourself. */\n this.sendToClipboard = undefined;\n /** Allows complete control of the paste operation, including cancelling the operation (so nothing happens) or replacing the data with other data. */\n this.processDataFromClipboard = undefined;\n /** Grid calls this method to know if an external filter is present. */\n this.isExternalFilterPresent = undefined;\n /** Should return `true` if external filter passes, otherwise `false`. */\n this.doesExternalFilterPass = undefined;\n /** Callback to be used to customise the chart toolbar items. */\n this.getChartToolbarItems = undefined;\n /** Callback to enable displaying the chart in an alternative chart container. */\n this.createChartContainer = undefined;\n /** Allows overriding the default behaviour for when user hits navigation (arrow) key when a header is focused. Return the next Header position to navigate to or `null` to stay on current header. */\n this.navigateToNextHeader = undefined;\n /** Allows overriding the default behaviour for when user hits `Tab` key when a header is focused. Return the next Header position to navigate to or `null` to stay on current header. */\n this.tabToNextHeader = undefined;\n /** Allows overriding the default behaviour for when user hits navigation (arrow) key when a cell is focused. Return the next Cell position to navigate to or `null` to stay on current cell. */\n this.navigateToNextCell = undefined;\n /** Allows overriding the default behaviour for when user hits `Tab` key when a cell is focused. Return the next Cell position to navigate to or null to stay on current cell. */\n this.tabToNextCell = undefined;\n /** @deprecated v27.2 - Use `getLocaleText` instead. */\n this.localeTextFunc = undefined;\n /** A callback for localising text within the grid. */\n this.getLocaleText = undefined;\n /** Allows overriding what `document` is used. Currently used by Drag and Drop (may extend to other places in the future). Use this when you want the grid to use a different `document` than the one available on the global scope. This can happen if docking out components (something which Electron supports) */\n this.getDocument = undefined;\n /** Allows user to format the numbers in the pagination panel, i.e. 'row count' and 'page number' labels. This is for pagination panel only, to format numbers inside the grid's cells (i.e. your data), then use `valueFormatter` in the column definitions. */\n this.paginationNumberFormatter = undefined;\n /** @deprecated v27.2 - Use `getGroupRowAgg` instead. */\n this.groupRowAggNodes = undefined;\n /** Callback to use when you need access to more then the current column for aggregation. */\n this.getGroupRowAgg = undefined;\n /** (Client-side Row Model only) Allows groups to be open by default. */\n this.isGroupOpenByDefault = undefined;\n /** Allows default sorting of groups. */\n this.initialGroupOrderComparator = undefined;\n /** @deprecated v27.2 - Use `initialGroupOrderComparator` instead */\n this.defaultGroupOrderComparator = undefined;\n /** @deprecated v28 - Use `processPivotResultColDef` instead */\n this.processSecondaryColDef = undefined;\n /** @deprecated v28 - Use `processPivotResultColGroupDef` instead */\n this.processSecondaryColGroupDef = undefined;\n /** Callback to be used with pivoting, to allow changing the second column definition. */\n this.processPivotResultColDef = undefined;\n /** Callback to be used with pivoting, to allow changing the second column group definition. */\n this.processPivotResultColGroupDef = undefined;\n /** Callback to be used when working with Tree Data when `treeData = true`. */\n this.getDataPath = undefined;\n /** Allows setting the child count for a group row. */\n this.getChildCount = undefined;\n /** Allows providing different params for different levels of grouping. */\n this.getServerSideGroupLevelParams = undefined;\n /** @deprecated v28 Use `getServerSideGroupLevelParams` instead. */\n this.getServerSideStoreParams = undefined;\n /** Allows groups to be open by default. */\n this.isServerSideGroupOpenByDefault = undefined;\n /** Allows cancelling transactions. */\n this.isApplyServerSideTransaction = undefined;\n /** SSRM Tree Data: Allows specifying which rows are expandable. */\n this.isServerSideGroup = undefined;\n /** SSRM Tree Data: Allows specifying group keys. */\n this.getServerSideGroupKey = undefined;\n /** Return a business key for the node. If implemented, each row in the DOM will have an attribute `row-id='abc'` where `abc` is what you return as the business key.\n * This is useful for automated testing, as it provides a way for your tool to identify rows based on unique business keys.\n */\n this.getBusinessKeyForNode = undefined;\n /** @deprecated v27.1 Use `getRowId` instead - however be aware, `getRowId()` will also set grid option `immutableData=true`\n * Allows you to set the ID for a particular row node based on the data. */\n this.getRowNodeId = undefined;\n /** Allows setting the ID for a particular row node based on the data. */\n this.getRowId = undefined;\n /** When enabled, getRowId() callback is implemented and new Row Data is set, the grid will disregard all previous rows and treat the new Row Data as new data. As a consequence, all Row State (eg selection, rendered rows) will be reset. Default: `false` */\n this.resetRowDataOnUpdate = undefined;\n /** Allows you to process rows after they are created, so you can do final adding of custom attributes etc. */\n this.processRowPostCreate = undefined;\n /** Callback to be used to determine which rows are selectable. By default rows are selectable, so return `false` to make a row un-selectable. */\n this.isRowSelectable = undefined;\n /** Callback to be used with Master Detail to determine if a row should be a master row. If `false` is returned no detail row will exist for this row. */\n this.isRowMaster = undefined;\n /** Callback to fill values instead of simply copying values or increasing number values using linear progression. */\n this.fillOperation = undefined;\n /** @deprecated v27.2 Use `postSortRows` instead */\n this.postSort = undefined;\n /** Callback to perform additional sorting after the grid has sorted the rows. */\n this.postSortRows = undefined;\n /** Callback version of property `rowStyle` to set style for each row individually. Function should return an object of CSS values or undefined for no styles. */\n this.getRowStyle = undefined;\n /** Callback version of property `rowClass` to set class(es) for each row individually. Function should return either a string (class name), array of strings (array of class names) or undefined for no class. */\n this.getRowClass = undefined;\n /** Callback version of property `rowHeight` to set height for each row individually. Function should return a positive number of pixels, or return `null`/`undefined` to use the default row height. */\n this.getRowHeight = undefined;\n /** @deprecated v27.2 Use `isFullWidthRow` instead. */\n this.isFullWidthCell = undefined;\n /** Tells the grid if this row should be rendered as full width. */\n this.isFullWidthRow = undefined;\n /** The tool panel was hidden or shown. Use `api.isToolPanelShowing()` to get status. */\n this.toolPanelVisibleChanged = new EventEmitter();\n /** The tool panel size has been changed. */\n this.toolPanelSizeChanged = new EventEmitter();\n /** Paste operation has started. */\n this.pasteStart = new EventEmitter();\n /** Paste operation has ended. */\n this.pasteEnd = new EventEmitter();\n /** A column, or group of columns, was hidden / shown. */\n this.columnVisible = new EventEmitter();\n /** A column, or group of columns, was pinned / unpinned. */\n this.columnPinned = new EventEmitter();\n /** A column was resized. */\n this.columnResized = new EventEmitter();\n /** A column was moved. */\n this.columnMoved = new EventEmitter();\n /** A value column was added or removed. */\n this.columnValueChanged = new EventEmitter();\n /** The pivot mode flag was changed. */\n this.columnPivotModeChanged = new EventEmitter();\n /** A pivot column was added, removed or order changed. */\n this.columnPivotChanged = new EventEmitter();\n /** A column group was opened / closed. */\n this.columnGroupOpened = new EventEmitter();\n /** User set new columns. */\n this.newColumnsLoaded = new EventEmitter();\n /** The list of grid columns changed. */\n this.gridColumnsChanged = new EventEmitter();\n /** The list of displayed columns changed. This can result from columns open / close, column move, pivot, group, etc. */\n this.displayedColumnsChanged = new EventEmitter();\n /** The list of rendered columns changed (only columns in the visible scrolled viewport are rendered by default). */\n this.virtualColumnsChanged = new EventEmitter();\n /** Shotgun - gets called when either a) new columns are set or b) `columnApi.applyColumnState()` is used, so everything has changed. */\n this.columnEverythingChanged = new EventEmitter();\n /** Only used by Angular, React and VueJS AG Grid components (not used if doing plain JavaScript).\n * If the grid receives changes due to bound properties, this event fires after the grid has finished processing the change.\n */\n this.componentStateChanged = new EventEmitter();\n /** Value has changed after editing (this event will not fire if editing was cancelled, eg ESC was pressed) or\n * if cell value has changed as a result of cut, paste, cell clear (pressing Delete key),\n * fill handle, copy range down, undo and redo.\n */\n this.cellValueChanged = new EventEmitter();\n /** Value has changed after editing. Only fires when `readOnlyEdit=true`. */\n this.cellEditRequest = new EventEmitter();\n /** A cell's value within a row has changed. This event corresponds to Full Row Editing only. */\n this.rowValueChanged = new EventEmitter();\n /** Editing a cell has started. */\n this.cellEditingStarted = new EventEmitter();\n /** Editing a cell has stopped. */\n this.cellEditingStopped = new EventEmitter();\n /** Editing a row has started (when row editing is enabled). When row editing, this event will be fired once and `cellEditingStarted` will be fired for each individual cell. Only fires when doing Full Row Editing. */\n this.rowEditingStarted = new EventEmitter();\n /** Editing a row has stopped (when row editing is enabled). When row editing, this event will be fired once and `cellEditingStopped` will be fired for each individual cell. Only fires when doing Full Row Editing. */\n this.rowEditingStopped = new EventEmitter();\n /** Undo operation has started. */\n this.undoStarted = new EventEmitter();\n /** Undo operation has ended. */\n this.undoEnded = new EventEmitter();\n /** Redo operation has started. */\n this.redoStarted = new EventEmitter();\n /** Redo operation has ended. */\n this.redoEnded = new EventEmitter();\n /** Filter has been opened. */\n this.filterOpened = new EventEmitter();\n /** Filter has been modified and applied. */\n this.filterChanged = new EventEmitter();\n /** Filter was modified but not applied. Used when filters have 'Apply' buttons. */\n this.filterModified = new EventEmitter();\n /** A chart has been created. */\n this.chartCreated = new EventEmitter();\n /** The data range for the chart has been changed. */\n this.chartRangeSelectionChanged = new EventEmitter();\n /** Formatting changes have been made by users through the Format Panel. */\n this.chartOptionsChanged = new EventEmitter();\n /** A chart has been destroyed. */\n this.chartDestroyed = new EventEmitter();\n /** DOM event `keyDown` happened on a cell. */\n this.cellKeyDown = new EventEmitter();\n /** DOM event `keyPress` happened on a cell. */\n this.cellKeyPress = new EventEmitter();\n /** The grid has initialised and is ready for most api calls, but may not be fully rendered yet */\n this.gridReady = new EventEmitter();\n /** Fired the first time data is rendered into the grid. Use this event if you want to auto resize columns based on their contents */\n this.firstDataRendered = new EventEmitter();\n /** The size of the grid `div` has changed. In other words, the grid was resized. */\n this.gridSizeChanged = new EventEmitter();\n /** Displayed rows have changed. Triggered after sort, filter or tree expand / collapse events. */\n this.modelUpdated = new EventEmitter();\n /** A row was removed from the DOM, for any reason. Use to clean up resources (if any) used by the row. */\n this.virtualRowRemoved = new EventEmitter();\n /** Which rows are rendered in the DOM has changed. */\n this.viewportChanged = new EventEmitter();\n /** The body was scrolled horizontally or vertically. */\n this.bodyScroll = new EventEmitter();\n /** Main body of the grid has stopped scrolling, either horizontally or vertically. */\n this.bodyScrollEnd = new EventEmitter();\n /** When dragging starts. This could be any action that uses the grid's Drag and Drop service, e.g. Column Moving, Column Resizing, Range Selection, Fill Handle, etc. */\n this.dragStarted = new EventEmitter();\n /** When dragging stops. This could be any action that uses the grid's Drag and Drop service, e.g. Column Moving, Column Resizing, Range Selection, Fill Handle, etc. */\n this.dragStopped = new EventEmitter();\n /** Triggered every time the paging state changes. Some of the most common scenarios for this event to be triggered are:\n *\n * - The page size changes.\n * - The current shown page is changed.\n * - New data is loaded onto the grid.\n */\n this.paginationChanged = new EventEmitter();\n /** A drag has started, or dragging was already started and the mouse has re-entered the grid having previously left the grid. */\n this.rowDragEnter = new EventEmitter();\n /** The mouse has moved while dragging. */\n this.rowDragMove = new EventEmitter();\n /** The mouse has left the grid while dragging. */\n this.rowDragLeave = new EventEmitter();\n /** The drag has finished over the grid. */\n this.rowDragEnd = new EventEmitter();\n /** A row group column was added or removed. */\n this.columnRowGroupChanged = new EventEmitter();\n /** A row group was opened or closed. */\n this.rowGroupOpened = new EventEmitter();\n /** Fired when calling either of the API methods `expandAll()` or `collapseAll()`. */\n this.expandOrCollapseAll = new EventEmitter();\n /** The client has set new pinned row data into the grid. */\n this.pinnedRowDataChanged = new EventEmitter();\n /** @deprecated v28 No longer fired, use onRowDataUpdated instead */\n this.rowDataChanged = new EventEmitter();\n /** The client has updated data for the grid by either a) setting new Row Data or b) Applying a Row Transaction. */\n this.rowDataUpdated = new EventEmitter();\n /** Async transactions have been applied. Contains a list of all transaction results. */\n this.asyncTransactionsFlushed = new EventEmitter();\n /** A server side store has finished refreshing. */\n this.storeRefreshed = new EventEmitter();\n /** Cell is clicked. */\n this.cellClicked = new EventEmitter();\n /** Cell is double clicked. */\n this.cellDoubleClicked = new EventEmitter();\n /** Cell is focused. */\n this.cellFocused = new EventEmitter();\n /** Mouse entered cell. */\n this.cellMouseOver = new EventEmitter();\n /** Mouse left cell. */\n this.cellMouseOut = new EventEmitter();\n /** Mouse down on cell. */\n this.cellMouseDown = new EventEmitter();\n /** Row is clicked. */\n this.rowClicked = new EventEmitter();\n /** Row is double clicked. */\n this.rowDoubleClicked = new EventEmitter();\n /** Row is selected or deselected. The event contains the node in question, so call the node's `isSelected()` method to see if it was just selected or deselected. */\n this.rowSelected = new EventEmitter();\n /** Row selection is changed. Use the grid API `getSelectedNodes()` or `getSelectedRows()` to get the new list of selected nodes / row data. */\n this.selectionChanged = new EventEmitter();\n /** Cell is right clicked. */\n this.cellContextMenu = new EventEmitter();\n /** A change to range selection has occurred. */\n this.rangeSelectionChanged = new EventEmitter();\n /** Sort has changed. The grid also listens for this and updates the model. */\n this.sortChanged = new EventEmitter();\n /** @deprecated v29.2 */\n this.columnRowGroupChangeRequest = new EventEmitter();\n /** @deprecated v29.2 */\n this.columnPivotChangeRequest = new EventEmitter();\n /** @deprecated v29.2 */\n this.columnValueChangeRequest = new EventEmitter();\n /** @deprecated v29.2 */\n this.columnAggFuncChangeRequest = new EventEmitter();\n this._nativeElement = elementDef.nativeElement;\n }\n ngAfterViewInit() {\n this.frameworkComponentWrapper.setViewContainerRef(this.viewContainerRef);\n this.frameworkComponentWrapper.setComponentFactoryResolver(this.componentFactoryResolver);\n this.angularFrameworkOverrides.setEmitterUsedCallback(this.isEmitterUsed.bind(this));\n this.gridOptions = ComponentUtil.copyAttributesToGridOptions(this.gridOptions, this);\n this.gridParams = {\n globalEventListener: this.globalEventListener.bind(this),\n frameworkOverrides: this.angularFrameworkOverrides,\n providedBeanInstances: {\n frameworkComponentWrapper: this.frameworkComponentWrapper\n },\n modules: (this.modules || [])\n };\n new Grid(this._nativeElement, this.gridOptions, this.gridParams);\n if (this.gridOptions.api) {\n this.api = this.gridOptions.api;\n }\n if (this.gridOptions.columnApi) {\n this.columnApi = this.gridOptions.columnApi;\n }\n this._initialised = true;\n // sometimes, especially in large client apps gridReady can fire before ngAfterViewInit\n // this ties these together so that gridReady will always fire after agGridAngular's ngAfterViewInit\n // the actual containing component's ngAfterViewInit will fire just after agGridAngular's\n this._fullyReady.resolveNow(null, resolve => resolve);\n }\n ngOnChanges(changes) {\n if (this._initialised) {\n ComponentUtil.processOnChange(changes, this.api);\n }\n }\n ngOnDestroy() {\n if (this._initialised) {\n // need to do this before the destroy, so we know not to emit any events\n // while tearing down the grid.\n this._destroyed = true;\n if (this.api) {\n this.api.destroy();\n }\n }\n }\n // we'll emit the emit if a user is listening for a given event either on the component via normal angular binding\n // or via gridOptions\n isEmitterUsed(eventType) {\n const emitter = this[eventType];\n const hasEmitter = !!emitter && emitter.observers && emitter.observers.length > 0;\n // gridReady => onGridReady\n const asEventName = `on${eventType.charAt(0).toUpperCase()}${eventType.substring(1)}`;\n const hasGridOptionListener = !!this.gridOptions && !!this.gridOptions[asEventName];\n return hasEmitter || hasGridOptionListener;\n }\n globalEventListener(eventType, event) {\n // if we are tearing down, don't emit angular events, as this causes\n // problems with the angular router\n if (this._destroyed) {\n return;\n }\n // generically look up the eventType\n const emitter = this[eventType];\n if (emitter && this.isEmitterUsed(eventType)) {\n if (eventType === 'gridReady') {\n // if the user is listening for gridReady, wait for ngAfterViewInit to fire first, then emit the\n // gridReady event\n this._fullyReady.then((result => {\n emitter.emit(event);\n }));\n }\n else {\n emitter.emit(event);\n }\n }\n }\n}\nAgGridAngular.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AgGridAngular, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: AngularFrameworkOverrides }, { token: AngularFrameworkComponentWrapper }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });\nAgGridAngular.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.17\", type: AgGridAngular, selector: \"ag-grid-angular\", inputs: { gridOptions: \"gridOptions\", modules: \"modules\", statusBar: \"statusBar\", sideBar: \"sideBar\", suppressContextMenu: \"suppressContextMenu\", preventDefaultOnContextMenu: \"preventDefaultOnContextMenu\", allowContextMenuWithControlKey: \"allowContextMenuWithControlKey\", suppressMenuHide: \"suppressMenuHide\", enableBrowserTooltips: \"enableBrowserTooltips\", tooltipShowDelay: \"tooltipShowDelay\", tooltipHideDelay: \"tooltipHideDelay\", tooltipMouseTrack: \"tooltipMouseTrack\", popupParent: \"popupParent\", copyHeadersToClipboard: \"copyHeadersToClipboard\", copyGroupHeadersToClipboard: \"copyGroupHeadersToClipboard\", clipboardDelimiter: \"clipboardDelimiter\", suppressCopyRowsToClipboard: \"suppressCopyRowsToClipboard\", suppressCopySingleCellRanges: \"suppressCopySingleCellRanges\", suppressLastEmptyLineOnPaste: \"suppressLastEmptyLineOnPaste\", suppressClipboardPaste: \"suppressClipboardPaste\", suppressClipboardApi: \"suppressClipboardApi\", suppressCutToClipboard: \"suppressCutToClipboard\", columnDefs: \"columnDefs\", defaultColDef: \"defaultColDef\", defaultColGroupDef: \"defaultColGroupDef\", columnTypes: \"columnTypes\", maintainColumnOrder: \"maintainColumnOrder\", suppressFieldDotNotation: \"suppressFieldDotNotation\", headerHeight: \"headerHeight\", groupHeaderHeight: \"groupHeaderHeight\", floatingFiltersHeight: \"floatingFiltersHeight\", pivotHeaderHeight: \"pivotHeaderHeight\", pivotGroupHeaderHeight: \"pivotGroupHeaderHeight\", allowDragFromColumnsToolPanel: \"allowDragFromColumnsToolPanel\", suppressMovableColumns: \"suppressMovableColumns\", suppressColumnMoveAnimation: \"suppressColumnMoveAnimation\", suppressDragLeaveHidesColumns: \"suppressDragLeaveHidesColumns\", suppressRowGroupHidesColumns: \"suppressRowGroupHidesColumns\", colResizeDefault: \"colResizeDefault\", suppressAutoSize: \"suppressAutoSize\", autoSizePadding: \"autoSizePadding\", skipHeaderOnAutoSize: \"skipHeaderOnAutoSize\", components: \"components\", frameworkComponents: \"frameworkComponents\", editType: \"editType\", singleClickEdit: \"singleClickEdit\", suppressClickEdit: \"suppressClickEdit\", readOnlyEdit: \"readOnlyEdit\", stopEditingWhenCellsLoseFocus: \"stopEditingWhenCellsLoseFocus\", enterMovesDown: \"enterMovesDown\", enterMovesDownAfterEdit: \"enterMovesDownAfterEdit\", enableCellEditingOnBackspace: \"enableCellEditingOnBackspace\", undoRedoCellEditing: \"undoRedoCellEditing\", undoRedoCellEditingLimit: \"undoRedoCellEditingLimit\", defaultCsvExportParams: \"defaultCsvExportParams\", suppressCsvExport: \"suppressCsvExport\", defaultExcelExportParams: \"defaultExcelExportParams\", suppressExcelExport: \"suppressExcelExport\", excelStyles: \"excelStyles\", quickFilterText: \"quickFilterText\", cacheQuickFilter: \"cacheQuickFilter\", excludeHiddenColumnsFromQuickFilter: \"excludeHiddenColumnsFromQuickFilter\", excludeChildrenWhenTreeDataFiltering: \"excludeChildrenWhenTreeDataFiltering\", enableCharts: \"enableCharts\", chartThemes: \"chartThemes\", customChartThemes: \"customChartThemes\", chartThemeOverrides: \"chartThemeOverrides\", enableChartToolPanelsButton: \"enableChartToolPanelsButton\", suppressChartToolPanelsButton: \"suppressChartToolPanelsButton\", chartToolPanelsDef: \"chartToolPanelsDef\", loadingCellRenderer: \"loadingCellRenderer\", loadingCellRendererFramework: \"loadingCellRendererFramework\", loadingCellRendererParams: \"loadingCellRendererParams\", loadingCellRendererSelector: \"loadingCellRendererSelector\", localeText: \"localeText\", masterDetail: \"masterDetail\", keepDetailRows: \"keepDetailRows\", keepDetailRowsCount: \"keepDetailRowsCount\", detailCellRenderer: \"detailCellRenderer\", detailCellRendererFramework: \"detailCellRendererFramework\", detailCellRendererParams: \"detailCellRendererParams\", detailRowHeight: \"detailRowHeight\", detailRowAutoHeight: \"detailRowAutoHeight\", context: \"context\", alignedGrids: \"alignedGrids\", tabIndex: \"tabIndex\", rowBuffer: \"rowBuffer\", valueCache: \"valueCache\", valueCacheNeverExpires: \"valueCacheNeverExpires\", enableCellExpressions: \"enableCellExpressions\", suppressParentsInRowNodes: \"suppressParentsInRowNodes\", suppressTouch: \"suppressTouch\", suppressFocusAfterRefresh: \"suppressFocusAfterRefresh\", suppressAsyncEvents: \"suppressAsyncEvents\", suppressBrowserResizeObserver: \"suppressBrowserResizeObserver\", suppressPropertyNamesCheck: \"suppressPropertyNamesCheck\", suppressChangeDetection: \"suppressChangeDetection\", debug: \"debug\", overlayLoadingTemplate: \"overlayLoadingTemplate\", loadingOverlayComponent: \"loadingOverlayComponent\", loadingOverlayComponentFramework: \"loadingOverlayComponentFramework\", loadingOverlayComponentParams: \"loadingOverlayComponentParams\", suppressLoadingOverlay: \"suppressLoadingOverlay\", overlayNoRowsTemplate: \"overlayNoRowsTemplate\", noRowsOverlayComponent: \"noRowsOverlayComponent\", noRowsOverlayComponentFramework: \"noRowsOverlayComponentFramework\", noRowsOverlayComponentParams: \"noRowsOverlayComponentParams\", suppressNoRowsOverlay: \"suppressNoRowsOverlay\", pagination: \"pagination\", paginationPageSize: \"paginationPageSize\", paginationAutoPageSize: \"paginationAutoPageSize\", paginateChildRows: \"paginateChildRows\", suppressPaginationPanel: \"suppressPaginationPanel\", pivotMode: \"pivotMode\", pivotPanelShow: \"pivotPanelShow\", pivotColumnGroupTotals: \"pivotColumnGroupTotals\", pivotRowTotals: \"pivotRowTotals\", pivotSuppressAutoColumn: \"pivotSuppressAutoColumn\", suppressExpandablePivotGroups: \"suppressExpandablePivotGroups\", functionsReadOnly: \"functionsReadOnly\", aggFuncs: \"aggFuncs\", suppressAggFuncInHeader: \"suppressAggFuncInHeader\", suppressAggAtRootLevel: \"suppressAggAtRootLevel\", aggregateOnlyChangedColumns: \"aggregateOnlyChangedColumns\", suppressAggFilteredOnly: \"suppressAggFilteredOnly\", removePivotHeaderRowWhenSingleValueColumn: \"removePivotHeaderRowWhenSingleValueColumn\", animateRows: \"animateRows\", enableCellChangeFlash: \"enableCellChangeFlash\", cellFlashDelay: \"cellFlashDelay\", cellFadeDelay: \"cellFadeDelay\", allowShowChangeAfterFilter: \"allowShowChangeAfterFilter\", domLayout: \"domLayout\", ensureDomOrder: \"ensureDomOrder\", enableRtl: \"enableRtl\", suppressColumnVirtualisation: \"suppressColumnVirtualisation\", suppressMaxRenderedRowRestriction: \"suppressMaxRenderedRowRestriction\", suppressRowVirtualisation: \"suppressRowVirtualisation\", rowDragManaged: \"rowDragManaged\", suppressRowDrag: \"suppressRowDrag\", suppressMoveWhenRowDragging: \"suppressMoveWhenRowDragging\", rowDragEntireRow: \"rowDragEntireRow\", rowDragMultiRow: \"rowDragMultiRow\", rowDragText: \"rowDragText\", fullWidthCellRenderer: \"fullWidthCellRenderer\", fullWidthCellRendererFramework: \"fullWidthCellRendererFramework\", fullWidthCellRendererParams: \"fullWidthCellRendererParams\", embedFullWidthRows: \"embedFullWidthRows\", groupDisplayType: \"groupDisplayType\", groupDefaultExpanded: \"groupDefaultExpanded\", autoGroupColumnDef: \"autoGroupColumnDef\", groupMaintainOrder: \"groupMaintainOrder\", groupSelectsChildren: \"groupSelectsChildren\", groupAggFiltering: \"groupAggFiltering\", groupIncludeFooter: \"groupIncludeFooter\", groupIncludeTotalFooter: \"groupIncludeTotalFooter\", groupSuppressBlankHeader: \"groupSuppressBlankHeader\", groupSelectsFiltered: \"groupSelectsFiltered\", showOpenedGroup: \"showOpenedGroup\", groupRemoveSingleChildren: \"groupRemoveSingleChildren\", groupRemoveLowestSingleChildren: \"groupRemoveLowestSingleChildren\", groupHideOpenParents: \"groupHideOpenParents\", groupAllowUnbalanced: \"groupAllowUnbalanced\", rowGroupPanelShow: \"rowGroupPanelShow\", groupRowRenderer: \"groupRowRenderer\", groupRowRendererFramework: \"groupRowRendererFramework\", groupRowRendererParams: \"groupRowRendererParams\", suppressMakeColumnVisibleAfterUnGroup: \"suppressMakeColumnVisibleAfterUnGroup\", treeData: \"treeData\", rowGroupPanelSuppressSort: \"rowGroupPanelSuppressSort\", groupRowsSticky: \"groupRowsSticky\", rememberGroupStateWhenNewData: \"rememberGroupStateWhenNewData\", pinnedTopRowData: \"pinnedTopRowData\", pinnedBottomRowData: \"pinnedBottomRowData\", rowModelType: \"rowModelType\", rowData: \"rowData\", immutableData: \"immutableData\", asyncTransactionWaitMillis: \"asyncTransactionWaitMillis\", suppressModelUpdateAfterUpdateTransaction: \"suppressModelUpdateAfterUpdateTransaction\", datasource: \"datasource\", cacheOverflowSize: \"cacheOverflowSize\", infiniteInitialRowCount: \"infiniteInitialRowCount\", serverSideInitialRowCount: \"serverSideInitialRowCount\", serverSideStoreType: \"serverSideStoreType\", suppressServerSideInfiniteScroll: \"suppressServerSideInfiniteScroll\", cacheBlockSize: \"cacheBlockSize\", maxBlocksInCache: \"maxBlocksInCache\", maxConcurrentDatasourceRequests: \"maxConcurrentDatasourceRequests\", blockLoadDebounceMillis: \"blockLoadDebounceMillis\", purgeClosedRowNodes: \"purgeClosedRowNodes\", serverSideDatasource: \"serverSideDatasource\", serverSideSortAllLevels: \"serverSideSortAllLevels\", serverSideFilterAllLevels: \"serverSideFilterAllLevels\", serverSideSortOnServer: \"serverSideSortOnServer\", serverSideFilterOnServer: \"serverSideFilterOnServer\", serverSideSortingAlwaysResets: \"serverSideSortingAlwaysResets\", serverSideFilteringAlwaysResets: \"serverSideFilteringAlwaysResets\", viewportDatasource: \"viewportDatasource\", viewportRowModelPageSize: \"viewportRowModelPageSize\", viewportRowModelBufferSize: \"viewportRowModelBufferSize\", alwaysShowHorizontalScroll: \"alwaysShowHorizontalScroll\", alwaysShowVerticalScroll: \"alwaysShowVerticalScroll\", debounceVerticalScrollbar: \"debounceVerticalScrollbar\", suppressHorizontalScroll: \"suppressHorizontalScroll\", suppressScrollOnNewData: \"suppressScrollOnNewData\", suppressScrollWhenPopupsAreOpen: \"suppressScrollWhenPopupsAreOpen\", suppressAnimationFrame: \"suppressAnimationFrame\", suppressMiddleClickScrolls: \"suppressMiddleClickScrolls\", suppressPreventDefaultOnMouseWheel: \"suppressPreventDefaultOnMouseWheel\", scrollbarWidth: \"scrollbarWidth\", rowSelection: \"rowSelection\", rowMultiSelectWithClick: \"rowMultiSelectWithClick\", suppressRowDeselection: \"suppressRowDeselection\", suppressRowClickSelection: \"suppressRowClickSelection\", suppressCellSelection: \"suppressCellSelection\", suppressCellFocus: \"suppressCellFocus\", suppressMultiRangeSelection: \"suppressMultiRangeSelection\", enableCellTextSelection: \"enableCellTextSelection\", enableRangeSelection: \"enableRangeSelection\", enableRangeHandle: \"enableRangeHandle\", enableFillHandle: \"enableFillHandle\", fillHandleDirection: \"fillHandleDirection\", suppressClearOnFillReduction: \"suppressClearOnFillReduction\", sortingOrder: \"sortingOrder\", accentedSort: \"accentedSort\", unSortIcon: \"unSortIcon\", suppressMultiSort: \"suppressMultiSort\", alwaysMultiSort: \"alwaysMultiSort\", multiSortKey: \"multiSortKey\", suppressMaintainUnsortedOrder: \"suppressMaintainUnsortedOrder\", icons: \"icons\", rowHeight: \"rowHeight\", rowStyle: \"rowStyle\", rowClass: \"rowClass\", rowClassRules: \"rowClassRules\", suppressRowHoverHighlight: \"suppressRowHoverHighlight\", suppressRowTransform: \"suppressRowTransform\", columnHoverHighlight: \"columnHoverHighlight\", deltaSort: \"deltaSort\", treeDataDisplayType: \"treeDataDisplayType\", functionsPassive: \"functionsPassive\", enableGroupEdit: \"enableGroupEdit\", getContextMenuItems: \"getContextMenuItems\", getMainMenuItems: \"getMainMenuItems\", postProcessPopup: \"postProcessPopup\", processCellForClipboard: \"processCellForClipboard\", processHeaderForClipboard: \"processHeaderForClipboard\", processGroupHeaderForClipboard: \"processGroupHeaderForClipboard\", processCellFromClipboard: \"processCellFromClipboard\", sendToClipboard: \"sendToClipboard\", processDataFromClipboard: \"processDataFromClipboard\", isExternalFilterPresent: \"isExternalFilterPresent\", doesExternalFilterPass: \"doesExternalFilterPass\", getChartToolbarItems: \"getChartToolbarItems\", createChartContainer: \"createChartContainer\", navigateToNextHeader: \"navigateToNextHeader\", tabToNextHeader: \"tabToNextHeader\", navigateToNextCell: \"navigateToNextCell\", tabToNextCell: \"tabToNextCell\", localeTextFunc: \"localeTextFunc\", getLocaleText: \"getLocaleText\", getDocument: \"getDocument\", paginationNumberFormatter: \"paginationNumberFormatter\", groupRowAggNodes: \"groupRowAggNodes\", getGroupRowAgg: \"getGroupRowAgg\", isGroupOpenByDefault: \"isGroupOpenByDefault\", initialGroupOrderComparator: \"initialGroupOrderComparator\", defaultGroupOrderComparator: \"defaultGroupOrderComparator\", processSecondaryColDef: \"processSecondaryColDef\", processSecondaryColGroupDef: \"processSecondaryColGroupDef\", processPivotResultColDef: \"processPivotResultColDef\", processPivotResultColGroupDef: \"processPivotResultColGroupDef\", getDataPath: \"getDataPath\", getChildCount: \"getChildCount\", getServerSideGroupLevelParams: \"getServerSideGroupLevelParams\", getServerSideStoreParams: \"getServerSideStoreParams\", isServerSideGroupOpenByDefault: \"isServerSideGroupOpenByDefault\", isApplyServerSideTransaction: \"isApplyServerSideTransaction\", isServerSideGroup: \"isServerSideGroup\", getServerSideGroupKey: \"getServerSideGroupKey\", getBusinessKeyForNode: \"getBusinessKeyForNode\", getRowNodeId: \"getRowNodeId\", getRowId: \"getRowId\", resetRowDataOnUpdate: \"resetRowDataOnUpdate\", processRowPostCreate: \"processRowPostCreate\", isRowSelectable: \"isRowSelectable\", isRowMaster: \"isRowMaster\", fillOperation: \"fillOperation\", postSort: \"postSort\", postSortRows: \"postSortRows\", getRowStyle: \"getRowStyle\", getRowClass: \"getRowClass\", getRowHeight: \"getRowHeight\", isFullWidthCell: \"isFullWidthCell\", isFullWidthRow: \"isFullWidthRow\" }, outputs: { toolPanelVisibleChanged: \"toolPanelVisibleChanged\", toolPanelSizeChanged: \"toolPanelSizeChanged\", pasteStart: \"pasteStart\", pasteEnd: \"pasteEnd\", columnVisible: \"columnVisible\", columnPinned: \"columnPinned\", columnResized: \"columnResized\", columnMoved: \"columnMoved\", columnValueChanged: \"columnValueChanged\", columnPivotModeChanged: \"columnPivotModeChanged\", columnPivotChanged: \"columnPivotChanged\", columnGroupOpened: \"columnGroupOpened\", newColumnsLoaded: \"newColumnsLoaded\", gridColumnsChanged: \"gridColumnsChanged\", displayedColumnsChanged: \"displayedColumnsChanged\", virtualColumnsChanged: \"virtualColumnsChanged\", columnEverythingChanged: \"columnEverythingChanged\", componentStateChanged: \"componentStateChanged\", cellValueChanged: \"cellValueChanged\", cellEditRequest: \"cellEditRequest\", rowValueChanged: \"rowValueChanged\", cellEditingStarted: \"cellEditingStarted\", cellEditingStopped: \"cellEditingStopped\", rowEditingStarted: \"rowEditingStarted\", rowEditingStopped: \"rowEditingStopped\", undoStarted: \"undoStarted\", undoEnded: \"undoEnded\", redoStarted: \"redoStarted\", redoEnded: \"redoEnded\", filterOpened: \"filterOpened\", filterChanged: \"filterChanged\", filterModified: \"filterModified\", chartCreated: \"chartCreated\", chartRangeSelectionChanged: \"chartRangeSelectionChanged\", chartOptionsChanged: \"chartOptionsChanged\", chartDestroyed: \"chartDestroyed\", cellKeyDown: \"cellKeyDown\", cellKeyPress: \"cellKeyPress\", gridReady: \"gridReady\", firstDataRendered: \"firstDataRendered\", gridSizeChanged: \"gridSizeChanged\", modelUpdated: \"modelUpdated\", virtualRowRemoved: \"virtualRowRemoved\", viewportChanged: \"viewportChanged\", bodyScroll: \"bodyScroll\", bodyScrollEnd: \"bodyScrollEnd\", dragStarted: \"dragStarted\", dragStopped: \"dragStopped\", paginationChanged: \"paginationChanged\", rowDragEnter: \"rowDragEnter\", rowDragMove: \"rowDragMove\", rowDragLeave: \"rowDragLeave\", rowDragEnd: \"rowDragEnd\", columnRowGroupChanged: \"columnRowGroupChanged\", rowGroupOpened: \"rowGroupOpened\", expandOrCollapseAll: \"expandOrCollapseAll\", pinnedRowDataChanged: \"pinnedRowDataChanged\", rowDataChanged: \"rowDataChanged\", rowDataUpdated: \"rowDataUpdated\", asyncTransactionsFlushed: \"asyncTransactionsFlushed\", storeRefreshed: \"storeRefreshed\", cellClicked: \"cellClicked\", cellDoubleClicked: \"cellDoubleClicked\", cellFocused: \"cellFocused\", cellMouseOver: \"cellMouseOver\", cellMouseOut: \"cellMouseOut\", cellMouseDown: \"cellMouseDown\", rowClicked: \"rowClicked\", rowDoubleClicked: \"rowDoubleClicked\", rowSelected: \"rowSelected\", selectionChanged: \"selectionChanged\", cellContextMenu: \"cellContextMenu\", rangeSelectionChanged: \"rangeSelectionChanged\", sortChanged: \"sortChanged\", columnRowGroupChangeRequest: \"columnRowGroupChangeRequest\", columnPivotChangeRequest: \"columnPivotChangeRequest\", columnValueChangeRequest: \"columnValueChangeRequest\", columnAggFuncChangeRequest: \"columnAggFuncChangeRequest\" }, providers: [\n AngularFrameworkOverrides,\n AngularFrameworkComponentWrapper\n ], usesOnChanges: true, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AgGridAngular, decorators: [{\n type: Component,\n args: [{\n selector: 'ag-grid-angular',\n template: '',\n providers: [\n AngularFrameworkOverrides,\n AngularFrameworkComponentWrapper\n ],\n // tell angular we don't want view encapsulation, we don't want a shadow root\n encapsulation: ViewEncapsulation.None\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: AngularFrameworkOverrides }, { type: AngularFrameworkComponentWrapper }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { gridOptions: [{\n type: Input\n }], modules: [{\n type: Input\n }], statusBar: [{\n type: Input\n }], sideBar: [{\n type: Input\n }], suppressContextMenu: [{\n type: Input\n }], preventDefaultOnContextMenu: [{\n type: Input\n }], allowContextMenuWithControlKey: [{\n type: Input\n }], suppressMenuHide: [{\n type: Input\n }], enableBrowserTooltips: [{\n type: Input\n }], tooltipShowDelay: [{\n type: Input\n }], tooltipHideDelay: [{\n type: Input\n }], tooltipMouseTrack: [{\n type: Input\n }], popupParent: [{\n type: Input\n }], copyHeadersToClipboard: [{\n type: Input\n }], copyGroupHeadersToClipboard: [{\n type: Input\n }], clipboardDelimiter: [{\n type: Input\n }], suppressCopyRowsToClipboard: [{\n type: Input\n }], suppressCopySingleCellRanges: [{\n type: Input\n }], suppressLastEmptyLineOnPaste: [{\n type: Input\n }], suppressClipboardPaste: [{\n type: Input\n }], suppressClipboardApi: [{\n type: Input\n }], suppressCutToClipboard: [{\n type: Input\n }], columnDefs: [{\n type: Input\n }], defaultColDef: [{\n type: Input\n }], defaultColGroupDef: [{\n type: Input\n }], columnTypes: [{\n type: Input\n }], maintainColumnOrder: [{\n type: Input\n }], suppressFieldDotNotation: [{\n type: Input\n }], headerHeight: [{\n type: Input\n }], groupHeaderHeight: [{\n type: Input\n }], floatingFiltersHeight: [{\n type: Input\n }], pivotHeaderHeight: [{\n type: Input\n }], pivotGroupHeaderHeight: [{\n type: Input\n }], allowDragFromColumnsToolPanel: [{\n type: Input\n }], suppressMovableColumns: [{\n type: Input\n }], suppressColumnMoveAnimation: [{\n type: Input\n }], suppressDragLeaveHidesColumns: [{\n type: Input\n }], suppressRowGroupHidesColumns: [{\n type: Input\n }], colResizeDefault: [{\n type: Input\n }], suppressAutoSize: [{\n type: Input\n }], autoSizePadding: [{\n type: Input\n }], skipHeaderOnAutoSize: [{\n type: Input\n }], components: [{\n type: Input\n }], frameworkComponents: [{\n type: Input\n }], editType: [{\n type: Input\n }], singleClickEdit: [{\n type: Input\n }], suppressClickEdit: [{\n type: Input\n }], readOnlyEdit: [{\n type: Input\n }], stopEditingWhenCellsLoseFocus: [{\n type: Input\n }], enterMovesDown: [{\n type: Input\n }], enterMovesDownAfterEdit: [{\n type: Input\n }], enableCellEditingOnBackspace: [{\n type: Input\n }], undoRedoCellEditing: [{\n type: Input\n }], undoRedoCellEditingLimit: [{\n type: Input\n }], defaultCsvExportParams: [{\n type: Input\n }], suppressCsvExport: [{\n type: Input\n }], defaultExcelExportParams: [{\n type: Input\n }], suppressExcelExport: [{\n type: Input\n }], excelStyles: [{\n type: Input\n }], quickFilterText: [{\n type: Input\n }], cacheQuickFilter: [{\n type: Input\n }], excludeHiddenColumnsFromQuickFilter: [{\n type: Input\n }], excludeChildrenWhenTreeDataFiltering: [{\n type: Input\n }], enableCharts: [{\n type: Input\n }], chartThemes: [{\n type: Input\n }], customChartThemes: [{\n type: Input\n }], chartThemeOverrides: [{\n type: Input\n }], enableChartToolPanelsButton: [{\n type: Input\n }], suppressChartToolPanelsButton: [{\n type: Input\n }], chartToolPanelsDef: [{\n type: Input\n }], loadingCellRenderer: [{\n type: Input\n }], loadingCellRendererFramework: [{\n type: Input\n }], loadingCellRendererParams: [{\n type: Input\n }], loadingCellRendererSelector: [{\n type: Input\n }], localeText: [{\n type: Input\n }], masterDetail: [{\n type: Input\n }], keepDetailRows: [{\n type: Input\n }], keepDetailRowsCount: [{\n type: Input\n }], detailCellRenderer: [{\n type: Input\n }], detailCellRendererFramework: [{\n type: Input\n }], detailCellRendererParams: [{\n type: Input\n }], detailRowHeight: [{\n type: Input\n }], detailRowAutoHeight: [{\n type: Input\n }], context: [{\n type: Input\n }], alignedGrids: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], rowBuffer: [{\n type: Input\n }], valueCache: [{\n type: Input\n }], valueCacheNeverExpires: [{\n type: Input\n }], enableCellExpressions: [{\n type: Input\n }], suppressParentsInRowNodes: [{\n type: Input\n }], suppressTouch: [{\n type: Input\n }], suppressFocusAfterRefresh: [{\n type: Input\n }], suppressAsyncEvents: [{\n type: Input\n }], suppressBrowserResizeObserver: [{\n type: Input\n }], suppressPropertyNamesCheck: [{\n type: Input\n }], suppressChangeDetection: [{\n type: Input\n }], debug: [{\n type: Input\n }], overlayLoadingTemplate: [{\n type: Input\n }], loadingOverlayComponent: [{\n type: Input\n }], loadingOverlayComponentFramework: [{\n type: Input\n }], loadingOverlayComponentParams: [{\n type: Input\n }], suppressLoadingOverlay: [{\n type: Input\n }], overlayNoRowsTemplate: [{\n type: Input\n }], noRowsOverlayComponent: [{\n type: Input\n }], noRowsOverlayComponentFramework: [{\n type: Input\n }], noRowsOverlayComponentParams: [{\n type: Input\n }], suppressNoRowsOverlay: [{\n type: Input\n }], pagination: [{\n type: Input\n }], paginationPageSize: [{\n type: Input\n }], paginationAutoPageSize: [{\n type: Input\n }], paginateChildRows: [{\n type: Input\n }], suppressPaginationPanel: [{\n type: Input\n }], pivotMode: [{\n type: Input\n }], pivotPanelShow: [{\n type: Input\n }], pivotColumnGroupTotals: [{\n type: Input\n }], pivotRowTotals: [{\n type: Input\n }], pivotSuppressAutoColumn: [{\n type: Input\n }], suppressExpandablePivotGroups: [{\n type: Input\n }], functionsReadOnly: [{\n type: Input\n }], aggFuncs: [{\n type: Input\n }], suppressAggFuncInHeader: [{\n type: Input\n }], suppressAggAtRootLevel: [{\n type: Input\n }], aggregateOnlyChangedColumns: [{\n type: Input\n }], suppressAggFilteredOnly: [{\n type: Input\n }], removePivotHeaderRowWhenSingleValueColumn: [{\n type: Input\n }], animateRows: [{\n type: Input\n }], enableCellChangeFlash: [{\n type: Input\n }], cellFlashDelay: [{\n type: Input\n }], cellFadeDelay: [{\n type: Input\n }], allowShowChangeAfterFilter: [{\n type: Input\n }], domLayout: [{\n type: Input\n }], ensureDomOrder: [{\n type: Input\n }], enableRtl: [{\n type: Input\n }], suppressColumnVirtualisation: [{\n type: Input\n }], suppressMaxRenderedRowRestriction: [{\n type: Input\n }], suppressRowVirtualisation: [{\n type: Input\n }], rowDragManaged: [{\n type: Input\n }], suppressRowDrag: [{\n type: Input\n }], suppressMoveWhenRowDragging: [{\n type: Input\n }], rowDragEntireRow: [{\n type: Input\n }], rowDragMultiRow: [{\n type: Input\n }], rowDragText: [{\n type: Input\n }], fullWidthCellRenderer: [{\n type: Input\n }], fullWidthCellRendererFramework: [{\n type: Input\n }], fullWidthCellRendererParams: [{\n type: Input\n }], embedFullWidthRows: [{\n type: Input\n }], groupDisplayType: [{\n type: Input\n }], groupDefaultExpanded: [{\n type: Input\n }], autoGroupColumnDef: [{\n type: Input\n }], groupMaintainOrder: [{\n type: Input\n }], groupSelectsChildren: [{\n type: Input\n }], groupAggFiltering: [{\n type: Input\n }], groupIncludeFooter: [{\n type: Input\n }], groupIncludeTotalFooter: [{\n type: Input\n }], groupSuppressBlankHeader: [{\n type: Input\n }], groupSelectsFiltered: [{\n type: Input\n }], showOpenedGroup: [{\n type: Input\n }], groupRemoveSingleChildren: [{\n type: Input\n }], groupRemoveLowestSingleChildren: [{\n type: Input\n }], groupHideOpenParents: [{\n type: Input\n }], groupAllowUnbalanced: [{\n type: Input\n }], rowGroupPanelShow: [{\n type: Input\n }], groupRowRenderer: [{\n type: Input\n }], groupRowRendererFramework: [{\n type: Input\n }], groupRowRendererParams: [{\n type: Input\n }], suppressMakeColumnVisibleAfterUnGroup: [{\n type: Input\n }], treeData: [{\n type: Input\n }], rowGroupPanelSuppressSort: [{\n type: Input\n }], groupRowsSticky: [{\n type: Input\n }], rememberGroupStateWhenNewData: [{\n type: Input\n }], pinnedTopRowData: [{\n type: Input\n }], pinnedBottomRowData: [{\n type: Input\n }], rowModelType: [{\n type: Input\n }], rowData: [{\n type: Input\n }], immutableData: [{\n type: Input\n }], asyncTransactionWaitMillis: [{\n type: Input\n }], suppressModelUpdateAfterUpdateTransaction: [{\n type: Input\n }], datasource: [{\n type: Input\n }], cacheOverflowSize: [{\n type: Input\n }], infiniteInitialRowCount: [{\n type: Input\n }], serverSideInitialRowCount: [{\n type: Input\n }], serverSideStoreType: [{\n type: Input\n }], suppressServerSideInfiniteScroll: [{\n type: Input\n }], cacheBlockSize: [{\n type: Input\n }], maxBlocksInCache: [{\n type: Input\n }], maxConcurrentDatasourceRequests: [{\n type: Input\n }], blockLoadDebounceMillis: [{\n type: Input\n }], purgeClosedRowNodes: [{\n type: Input\n }], serverSideDatasource: [{\n type: Input\n }], serverSideSortAllLevels: [{\n type: Input\n }], serverSideFilterAllLevels: [{\n type: Input\n }], serverSideSortOnServer: [{\n type: Input\n }], serverSideFilterOnServer: [{\n type: Input\n }], serverSideSortingAlwaysResets: [{\n type: Input\n }], serverSideFilteringAlwaysResets: [{\n type: Input\n }], viewportDatasource: [{\n type: Input\n }], viewportRowModelPageSize: [{\n type: Input\n }], viewportRowModelBufferSize: [{\n type: Input\n }], alwaysShowHorizontalScroll: [{\n type: Input\n }], alwaysShowVerticalScroll: [{\n type: Input\n }], debounceVerticalScrollbar: [{\n type: Input\n }], suppressHorizontalScroll: [{\n type: Input\n }], suppressScrollOnNewData: [{\n type: Input\n }], suppressScrollWhenPopupsAreOpen: [{\n type: Input\n }], suppressAnimationFrame: [{\n type: Input\n }], suppressMiddleClickScrolls: [{\n type: Input\n }], suppressPreventDefaultOnMouseWheel: [{\n type: Input\n }], scrollbarWidth: [{\n type: Input\n }], rowSelection: [{\n type: Input\n }], rowMultiSelectWithClick: [{\n type: Input\n }], suppressRowDeselection: [{\n type: Input\n }], suppressRowClickSelection: [{\n type: Input\n }], suppressCellSelection: [{\n type: Input\n }], suppressCellFocus: [{\n type: Input\n }], suppressMultiRangeSelection: [{\n type: Input\n }], enableCellTextSelection: [{\n type: Input\n }], enableRangeSelection: [{\n type: Input\n }], enableRangeHandle: [{\n type: Input\n }], enableFillHandle: [{\n type: Input\n }], fillHandleDirection: [{\n type: Input\n }], suppressClearOnFillReduction: [{\n type: Input\n }], sortingOrder: [{\n type: Input\n }], accentedSort: [{\n type: Input\n }], unSortIcon: [{\n type: Input\n }], suppressMultiSort: [{\n type: Input\n }], alwaysMultiSort: [{\n type: Input\n }], multiSortKey: [{\n type: Input\n }], suppressMaintainUnsortedOrder: [{\n type: Input\n }], icons: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], rowStyle: [{\n type: Input\n }], rowClass: [{\n type: Input\n }], rowClassRules: [{\n type: Input\n }], suppressRowHoverHighlight: [{\n type: Input\n }], suppressRowTransform: [{\n type: Input\n }], columnHoverHighlight: [{\n type: Input\n }], deltaSort: [{\n type: Input\n }], treeDataDisplayType: [{\n type: Input\n }], functionsPassive: [{\n type: Input\n }], enableGroupEdit: [{\n type: Input\n }], getContextMenuItems: [{\n type: Input\n }], getMainMenuItems: [{\n type: Input\n }], postProcessPopup: [{\n type: Input\n }], processCellForClipboard: [{\n type: Input\n }], processHeaderForClipboard: [{\n type: Input\n }], processGroupHeaderForClipboard: [{\n type: Input\n }], processCellFromClipboard: [{\n type: Input\n }], sendToClipboard: [{\n type: Input\n }], processDataFromClipboard: [{\n type: Input\n }], isExternalFilterPresent: [{\n type: Input\n }], doesExternalFilterPass: [{\n type: Input\n }], getChartToolbarItems: [{\n type: Input\n }], createChartContainer: [{\n type: Input\n }], navigateToNextHeader: [{\n type: Input\n }], tabToNextHeader: [{\n type: Input\n }], navigateToNextCell: [{\n type: Input\n }], tabToNextCell: [{\n type: Input\n }], localeTextFunc: [{\n type: Input\n }], getLocaleText: [{\n type: Input\n }], getDocument: [{\n type: Input\n }], paginationNumberFormatter: [{\n type: Input\n }], groupRowAggNodes: [{\n type: Input\n }], getGroupRowAgg: [{\n type: Input\n }], isGroupOpenByDefault: [{\n type: Input\n }], initialGroupOrderComparator: [{\n type: Input\n }], defaultGroupOrderComparator: [{\n type: Input\n }], processSecondaryColDef: [{\n type: Input\n }], processSecondaryColGroupDef: [{\n type: Input\n }], processPivotResultColDef: [{\n type: Input\n }], processPivotResultColGroupDef: [{\n type: Input\n }], getDataPath: [{\n type: Input\n }], getChildCount: [{\n type: Input\n }], getServerSideGroupLevelParams: [{\n type: Input\n }], getServerSideStoreParams: [{\n type: Input\n }], isServerSideGroupOpenByDefault: [{\n type: Input\n }], isApplyServerSideTransaction: [{\n type: Input\n }], isServerSideGroup: [{\n type: Input\n }], getServerSideGroupKey: [{\n type: Input\n }], getBusinessKeyForNode: [{\n type: Input\n }], getRowNodeId: [{\n type: Input\n }], getRowId: [{\n type: Input\n }], resetRowDataOnUpdate: [{\n type: Input\n }], processRowPostCreate: [{\n type: Input\n }], isRowSelectable: [{\n type: Input\n }], isRowMaster: [{\n type: Input\n }], fillOperation: [{\n type: Input\n }], postSort: [{\n type: Input\n }], postSortRows: [{\n type: Input\n }], getRowStyle: [{\n type: Input\n }], getRowClass: [{\n type: Input\n }], getRowHeight: [{\n type: Input\n }], isFullWidthCell: [{\n type: Input\n }], isFullWidthRow: [{\n type: Input\n }], toolPanelVisibleChanged: [{\n type: Output\n }], toolPanelSizeChanged: [{\n type: Output\n }], pasteStart: [{\n type: Output\n }], pasteEnd: [{\n type: Output\n }], columnVisible: [{\n type: Output\n }], columnPinned: [{\n type: Output\n }], columnResized: [{\n type: Output\n }], columnMoved: [{\n type: Output\n }], columnValueChanged: [{\n type: Output\n }], columnPivotModeChanged: [{\n type: Output\n }], columnPivotChanged: [{\n type: Output\n }], columnGroupOpened: [{\n type: Output\n }], newColumnsLoaded: [{\n type: Output\n }], gridColumnsChanged: [{\n type: Output\n }], displayedColumnsChanged: [{\n type: Output\n }], virtualColumnsChanged: [{\n type: Output\n }], columnEverythingChanged: [{\n type: Output\n }], componentStateChanged: [{\n type: Output\n }], cellValueChanged: [{\n type: Output\n }], cellEditRequest: [{\n type: Output\n }], rowValueChanged: [{\n type: Output\n }], cellEditingStarted: [{\n type: Output\n }], cellEditingStopped: [{\n type: Output\n }], rowEditingStarted: [{\n type: Output\n }], rowEditingStopped: [{\n type: Output\n }], undoStarted: [{\n type: Output\n }], undoEnded: [{\n type: Output\n }], redoStarted: [{\n type: Output\n }], redoEnded: [{\n type: Output\n }], filterOpened: [{\n type: Output\n }], filterChanged: [{\n type: Output\n }], filterModified: [{\n type: Output\n }], chartCreated: [{\n type: Output\n }], chartRangeSelectionChanged: [{\n type: Output\n }], chartOptionsChanged: [{\n type: Output\n }], chartDestroyed: [{\n type: Output\n }], cellKeyDown: [{\n type: Output\n }], cellKeyPress: [{\n type: Output\n }], gridReady: [{\n type: Output\n }], firstDataRendered: [{\n type: Output\n }], gridSizeChanged: [{\n type: Output\n }], modelUpdated: [{\n type: Output\n }], virtualRowRemoved: [{\n type: Output\n }], viewportChanged: [{\n type: Output\n }], bodyScroll: [{\n type: Output\n }], bodyScrollEnd: [{\n type: Output\n }], dragStarted: [{\n type: Output\n }], dragStopped: [{\n type: Output\n }], paginationChanged: [{\n type: Output\n }], rowDragEnter: [{\n type: Output\n }], rowDragMove: [{\n type: Output\n }], rowDragLeave: [{\n type: Output\n }], rowDragEnd: [{\n type: Output\n }], columnRowGroupChanged: [{\n type: Output\n }], rowGroupOpened: [{\n type: Output\n }], expandOrCollapseAll: [{\n type: Output\n }], pinnedRowDataChanged: [{\n type: Output\n }], rowDataChanged: [{\n type: Output\n }], rowDataUpdated: [{\n type: Output\n }], asyncTransactionsFlushed: [{\n type: Output\n }], storeRefreshed: [{\n type: Output\n }], cellClicked: [{\n type: Output\n }], cellDoubleClicked: [{\n type: Output\n }], cellFocused: [{\n type: Output\n }], cellMouseOver: [{\n type: Output\n }], cellMouseOut: [{\n type: Output\n }], cellMouseDown: [{\n type: Output\n }], rowClicked: [{\n type: Output\n }], rowDoubleClicked: [{\n type: Output\n }], rowSelected: [{\n type: Output\n }], selectionChanged: [{\n type: Output\n }], cellContextMenu: [{\n type: Output\n }], rangeSelectionChanged: [{\n type: Output\n }], sortChanged: [{\n type: Output\n }], columnRowGroupChangeRequest: [{\n type: Output\n }], columnPivotChangeRequest: [{\n type: Output\n }], columnValueChangeRequest: [{\n type: Output\n }], columnAggFuncChangeRequest: [{\n type: Output\n }] } });\n\nclass AgGridModule {\n}\nAgGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AgGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAgGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AgGridModule, declarations: [AgGridAngular], exports: [AgGridAngular] });\nAgGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AgGridModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: AgGridModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [AgGridAngular],\n exports: [AgGridAngular]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AgGridAngular, AgGridModule, AngularFrameworkComponentWrapper, AngularFrameworkOverrides };\n","/**\n * @ag-grid-community/all-modules - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * If value is undefined, null or blank, returns null, otherwise returns the value\n * @param {T} value\n * @returns {T | null}\n */\nfunction makeNull(value) {\n if (value == null || value === '') {\n return null;\n }\n return value;\n}\nfunction exists(value, allowEmptyString) {\n if (allowEmptyString === void 0) { allowEmptyString = false; }\n return value != null && (value !== '' || allowEmptyString);\n}\nfunction missing(value) {\n return !exists(value);\n}\nfunction missingOrEmpty(value) {\n return value == null || value.length === 0;\n}\nfunction toStringOrNull(value) {\n return value != null && typeof value.toString === 'function' ? value.toString() : null;\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nfunction attrToNumber(value) {\n if (value === undefined) {\n // undefined or empty means ignore the value\n return;\n }\n if (value === null || value === '') {\n // null or blank means clear\n return null;\n }\n if (typeof value === 'number') {\n return isNaN(value) ? undefined : value;\n }\n var valueParsed = parseInt(value, 10);\n return isNaN(valueParsed) ? undefined : valueParsed;\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nfunction attrToBoolean(value) {\n if (value === undefined) {\n // undefined or empty means ignore the value\n return;\n }\n if (value === null || value === '') {\n // null means clear\n return false;\n }\n if (typeof value === 'boolean') {\n // if simple boolean, return the boolean\n return value;\n }\n // if equal to the string 'true' (ignoring case) then return true\n return (/true/i).test(value);\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nfunction attrToString(value) {\n if (value == null || value === '') {\n return;\n }\n return value;\n}\n/** @deprecated */\nfunction referenceCompare(left, right) {\n if (left == null && right == null) {\n return true;\n }\n if (left == null && right != null) {\n return false;\n }\n if (left != null && right == null) {\n return false;\n }\n return left === right;\n}\nfunction jsonEquals(val1, val2) {\n var val1Json = val1 ? JSON.stringify(val1) : null;\n var val2Json = val2 ? JSON.stringify(val2) : null;\n return val1Json === val2Json;\n}\nfunction defaultComparator(valueA, valueB, accentedCompare) {\n if (accentedCompare === void 0) { accentedCompare = false; }\n var valueAMissing = valueA == null;\n var valueBMissing = valueB == null;\n // this is for aggregations sum and avg, where the result can be a number that is wrapped.\n // if we didn't do this, then the toString() value would be used, which would result in\n // the strings getting used instead of the numbers.\n if (valueA && valueA.toNumber) {\n valueA = valueA.toNumber();\n }\n if (valueB && valueB.toNumber) {\n valueB = valueB.toNumber();\n }\n if (valueAMissing && valueBMissing) {\n return 0;\n }\n if (valueAMissing) {\n return -1;\n }\n if (valueBMissing) {\n return 1;\n }\n function doQuickCompare(a, b) {\n return (a > b ? 1 : (a < b ? -1 : 0));\n }\n if (typeof valueA !== 'string') {\n return doQuickCompare(valueA, valueB);\n }\n if (!accentedCompare) {\n return doQuickCompare(valueA, valueB);\n }\n try {\n // using local compare also allows chinese comparisons\n return valueA.localeCompare(valueB);\n }\n catch (e) {\n // if something wrong with localeCompare, eg not supported\n // by browser, then just continue with the quick one\n return doQuickCompare(valueA, valueB);\n }\n}\nfunction values(object) {\n if (object instanceof Set || object instanceof Map) {\n var arr_1 = [];\n object.forEach(function (value) { return arr_1.push(value); });\n return arr_1;\n }\n return Object.values(object);\n}\n\nvar GenericUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n makeNull: makeNull,\n exists: exists,\n missing: missing,\n missingOrEmpty: missingOrEmpty,\n toStringOrNull: toStringOrNull,\n attrToNumber: attrToNumber,\n attrToBoolean: attrToBoolean,\n attrToString: attrToString,\n referenceCompare: referenceCompare,\n jsonEquals: jsonEquals,\n defaultComparator: defaultComparator,\n values: values\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ColumnKeyCreator = /** @class */ (function () {\n function ColumnKeyCreator() {\n this.existingKeys = {};\n }\n ColumnKeyCreator.prototype.addExistingKeys = function (keys) {\n for (var i = 0; i < keys.length; i++) {\n this.existingKeys[keys[i]] = true;\n }\n };\n ColumnKeyCreator.prototype.getUniqueKey = function (colId, colField) {\n // in case user passed in number for colId, convert to string\n colId = toStringOrNull(colId);\n var count = 0;\n while (true) {\n var idToTry = void 0;\n if (colId) {\n idToTry = colId;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else if (colField) {\n idToTry = colField;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else {\n idToTry = '' + count;\n }\n if (!this.existingKeys[idToTry]) {\n this.existingKeys[idToTry] = true;\n return idToTry;\n }\n count++;\n }\n };\n return ColumnKeyCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction iterateObject(object, callback) {\n if (object == null) {\n return;\n }\n if (Array.isArray(object)) {\n object.forEach(function (value, index) { return callback(\"\" + index, value); });\n }\n else {\n Object.keys(object).forEach(function (key) { return callback(key, object[key]); });\n }\n}\nfunction cloneObject(object) {\n var copy = {};\n var keys = Object.keys(object);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = object[key];\n copy[key] = value;\n }\n return copy;\n}\nfunction deepCloneObject(object) {\n return JSON.parse(JSON.stringify(object));\n}\n// returns copy of an object, doing a deep clone of any objects with that object.\n// this is used for eg creating copies of Column Definitions, where we want to\n// deep copy all objects, but do not want to deep copy functions (eg when user provides\n// a function or class for colDef.cellRenderer)\nfunction deepCloneDefinition(object, keysToSkip) {\n if (!object) {\n return;\n }\n var obj = object;\n var res = {};\n Object.keys(obj).forEach(function (key) {\n if (keysToSkip && keysToSkip.indexOf(key) >= 0) {\n return;\n }\n var value = obj[key];\n // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}. it does\n // NOT include the following:\n // 1) arrays\n // 2) functions or classes (eg ColumnAPI instance)\n var sourceIsSimpleObject = isNonNullObject(value) && value.constructor === Object;\n if (sourceIsSimpleObject) {\n res[key] = deepCloneDefinition(value);\n }\n else {\n res[key] = value;\n }\n });\n return res;\n}\nfunction getProperty(object, key) {\n return object[key];\n}\nfunction setProperty(object, key, value) {\n object[key] = value;\n}\n/**\n * Will copy the specified properties from `source` into the equivalent properties on `target`, ignoring properties with\n * a value of `undefined`.\n */\nfunction copyPropertiesIfPresent(source, target) {\n var properties = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n properties[_i - 2] = arguments[_i];\n }\n properties.forEach(function (p) { return copyPropertyIfPresent(source, target, p); });\n}\n/**\n * Will copy the specified property from `source` into the equivalent property on `target`, unless the property has a\n * value of `undefined`. If a transformation is provided, it will be applied to the value before being set on `target`.\n */\nfunction copyPropertyIfPresent(source, target, property, transform) {\n var value = getProperty(source, property);\n if (value !== undefined) {\n setProperty(target, property, transform ? transform(value) : value);\n }\n}\nfunction getAllKeysInObjects(objects) {\n var allValues = {};\n objects.filter(function (obj) { return obj != null; }).forEach(function (obj) {\n Object.keys(obj).forEach(function (key) { return allValues[key] = null; });\n });\n return Object.keys(allValues);\n}\nfunction getAllValuesInObject(obj) {\n if (!obj) {\n return [];\n }\n var anyObject = Object;\n if (typeof anyObject.values === 'function') {\n return anyObject.values(obj);\n }\n var ret = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj.propertyIsEnumerable(key)) {\n ret.push(obj[key]);\n }\n }\n return ret;\n}\nfunction mergeDeep(dest, source, copyUndefined, makeCopyOfSimpleObjects) {\n if (copyUndefined === void 0) { copyUndefined = true; }\n if (makeCopyOfSimpleObjects === void 0) { makeCopyOfSimpleObjects = false; }\n if (!exists(source)) {\n return;\n }\n iterateObject(source, function (key, sourceValue) {\n var destValue = dest[key];\n if (destValue === sourceValue) {\n return;\n }\n // when creating params, we don't want to just copy objects over. otherwise merging ColDefs (eg DefaultColDef\n // and Column Types) would result in params getting shared between objects.\n // by putting an empty value into destValue first, it means we end up copying over values from\n // the source object, rather than just copying in the source object in it's entirety.\n if (makeCopyOfSimpleObjects) {\n var objectIsDueToBeCopied = destValue == null && sourceValue != null;\n if (objectIsDueToBeCopied) {\n // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}, as opposed\n // to a Class instance (such as ColumnAPI instance).\n var sourceIsSimpleObject = typeof sourceValue === 'object' && sourceValue.constructor === Object;\n var dontCopy = sourceIsSimpleObject;\n if (dontCopy) {\n destValue = {};\n dest[key] = destValue;\n }\n }\n }\n if (isNonNullObject(sourceValue) && isNonNullObject(destValue) && !Array.isArray(destValue)) {\n mergeDeep(destValue, sourceValue, copyUndefined, makeCopyOfSimpleObjects);\n }\n else if (copyUndefined || sourceValue !== undefined) {\n dest[key] = sourceValue;\n }\n });\n}\nfunction missingOrEmptyObject(value) {\n return missing(value) || Object.keys(value).length === 0;\n}\nfunction get(source, expression, defaultValue) {\n if (source == null) {\n return defaultValue;\n }\n var keys = expression.split('.');\n var objectToRead = source;\n while (keys.length > 1) {\n objectToRead = objectToRead[keys.shift()];\n if (objectToRead == null) {\n return defaultValue;\n }\n }\n var value = objectToRead[keys[0]];\n return value != null ? value : defaultValue;\n}\nfunction set(target, expression, value) {\n if (target == null) {\n return;\n }\n var keys = expression.split('.');\n var objectToUpdate = target;\n // Create empty objects\n keys.forEach(function (key, i) {\n if (!objectToUpdate[key]) {\n objectToUpdate[key] = {};\n }\n if (i < keys.length - 1) {\n objectToUpdate = objectToUpdate[key];\n }\n });\n objectToUpdate[keys[keys.length - 1]] = value;\n}\nfunction getValueUsingField(data, field, fieldContainsDots) {\n if (!field || !data) {\n return;\n }\n // if no '.', then it's not a deep value\n if (!fieldContainsDots) {\n return data[field];\n }\n // otherwise it is a deep value, so need to dig for it\n var fields = field.split('.');\n var currentObject = data;\n for (var i = 0; i < fields.length; i++) {\n if (currentObject == null) {\n return undefined;\n }\n currentObject = currentObject[fields[i]];\n }\n return currentObject;\n}\n// used by ColumnAPI and GridAPI to remove all references, so keeping grid in memory resulting in a\n// memory leak if user is not disposing of the GridAPI or ColumnApi references\nfunction removeAllReferences(obj, objectName) {\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n // we want to replace all the @autowired services, which are objects. any simple types (boolean, string etc)\n // we don't care about\n if (typeof value === 'object') {\n obj[key] = undefined;\n }\n });\n var proto = Object.getPrototypeOf(obj);\n var properties = {};\n Object.keys(proto).forEach(function (key) {\n var value = proto[key];\n // leave all basic types - this is needed for GridAPI to leave the \"destroyed: boolean\" attribute alone\n if (typeof value === 'function') {\n var func = function () {\n console.warn(\"AG Grid: \" + objectName + \" function \" + key + \"() cannot be called as the grid has been destroyed.\\n Please don't call grid API functions on destroyed grids - as a matter of fact you shouldn't\\n be keeping the API reference, your application has a memory leak! Remove the API reference\\n when the grid is destroyed.\");\n };\n properties[key] = { value: func, writable: true };\n }\n });\n Object.defineProperties(obj, properties);\n}\nfunction isNonNullObject(value) {\n return typeof value === 'object' && value !== null;\n}\n\nvar ObjectUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n iterateObject: iterateObject,\n cloneObject: cloneObject,\n deepCloneObject: deepCloneObject,\n deepCloneDefinition: deepCloneDefinition,\n getProperty: getProperty,\n setProperty: setProperty,\n copyPropertiesIfPresent: copyPropertiesIfPresent,\n copyPropertyIfPresent: copyPropertyIfPresent,\n getAllKeysInObjects: getAllKeysInObjects,\n getAllValuesInObject: getAllValuesInObject,\n mergeDeep: mergeDeep,\n missingOrEmptyObject: missingOrEmptyObject,\n get: get,\n set: set,\n getValueUsingField: getValueUsingField,\n removeAllReferences: removeAllReferences,\n isNonNullObject: isNonNullObject\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar doOnceFlags = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nfunction doOnce(func, key) {\n if (doOnceFlags[key]) {\n return;\n }\n func();\n doOnceFlags[key] = true;\n}\nfunction getFunctionName(funcConstructor) {\n // for every other browser in the world\n if (funcConstructor.name) {\n return funcConstructor.name;\n }\n // for the pestilence that is ie11\n var matches = /function\\s+([^\\(]+)/.exec(funcConstructor.toString());\n return matches && matches.length === 2 ? matches[1].trim() : null;\n}\nfunction isFunction(val) {\n return !!(val && val.constructor && val.call && val.apply);\n}\nfunction executeInAWhile(funcs) {\n executeAfter(funcs, 400);\n}\nvar executeNextVMTurnFuncs = [];\nvar executeNextVMTurnPending = false;\nfunction executeNextVMTurn(func) {\n executeNextVMTurnFuncs.push(func);\n if (executeNextVMTurnPending) {\n return;\n }\n executeNextVMTurnPending = true;\n window.setTimeout(function () {\n var funcsCopy = executeNextVMTurnFuncs.slice();\n executeNextVMTurnFuncs.length = 0;\n executeNextVMTurnPending = false;\n funcsCopy.forEach(function (func) { return func(); });\n }, 0);\n}\nfunction executeAfter(funcs, milliseconds) {\n if (milliseconds === void 0) { milliseconds = 0; }\n if (funcs.length > 0) {\n window.setTimeout(function () { return funcs.forEach(function (func) { return func(); }); }, milliseconds);\n }\n}\n/**\n * @param {Function} func The function to be debounced\n * @param {number} delay The time in ms to debounce\n * @return {Function} The debounced function\n */\nfunction debounce(func, delay) {\n var timeout;\n // Calling debounce returns a new anonymous function\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this;\n window.clearTimeout(timeout);\n // Set the new timeout\n timeout = window.setTimeout(function () {\n func.apply(context, args);\n }, delay);\n };\n}\n/**\n * @param {Function} func The function to be throttled\n * @param {number} wait The time in ms to throttle\n * @return {Function} The throttled function\n */\nfunction throttle(func, wait) {\n var previousCall = 0;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this;\n var currentCall = new Date().getTime();\n if (currentCall - previousCall < wait) {\n return;\n }\n previousCall = currentCall;\n func.apply(context, args);\n };\n}\nfunction waitUntil(condition, callback, timeout, timeoutMessage) {\n if (timeout === void 0) { timeout = 100; }\n var timeStamp = new Date().getTime();\n var interval = null;\n var executed = false;\n var internalCallback = function () {\n var reachedTimeout = ((new Date().getTime()) - timeStamp) > timeout;\n if (condition() || reachedTimeout) {\n callback();\n executed = true;\n if (interval != null) {\n window.clearInterval(interval);\n interval = null;\n }\n if (reachedTimeout && timeoutMessage) {\n console.warn(timeoutMessage);\n }\n }\n };\n internalCallback();\n if (!executed) {\n interval = window.setInterval(internalCallback, 10);\n }\n}\nfunction compose() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return function (arg) { return fns.reduce(function (composed, f) { return f(composed); }, arg); };\n}\nfunction callIfPresent(func) {\n if (func) {\n func();\n }\n}\nvar noop = function () { return; };\n\nvar FunctionUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n doOnce: doOnce,\n getFunctionName: getFunctionName,\n isFunction: isFunction,\n executeInAWhile: executeInAWhile,\n executeNextVMTurn: executeNextVMTurn,\n executeAfter: executeAfter,\n debounce: debounce,\n throttle: throttle,\n waitUntil: waitUntil,\n compose: compose,\n callIfPresent: callIfPresent,\n noop: noop\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$w = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$p = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$w(arguments[i]));\n return ar;\n};\nvar Context = /** @class */ (function () {\n function Context(params, logger) {\n this.beanWrappers = {};\n this.destroyed = false;\n if (!params || !params.beanClasses) {\n return;\n }\n this.contextParams = params;\n this.logger = logger;\n this.logger.log(\">> creating ag-Application Context\");\n this.createBeans();\n var beanInstances = this.getBeanInstances();\n this.wireBeans(beanInstances);\n this.logger.log(\">> ag-Application Context ready - component is alive\");\n }\n Context.prototype.getBeanInstances = function () {\n return values(this.beanWrappers).map(function (beanEntry) { return beanEntry.beanInstance; });\n };\n Context.prototype.createBean = function (bean, afterPreCreateCallback) {\n if (!bean) {\n throw Error(\"Can't wire to bean since it is null\");\n }\n this.wireBeans([bean], afterPreCreateCallback);\n return bean;\n };\n Context.prototype.wireBeans = function (beanInstances, afterPreCreateCallback) {\n this.autoWireBeans(beanInstances);\n this.methodWireBeans(beanInstances);\n this.callLifeCycleMethods(beanInstances, 'preConstructMethods');\n // the callback sets the attributes, so the component has access to attributes\n // before postConstruct methods in the component are executed\n if (exists(afterPreCreateCallback)) {\n beanInstances.forEach(afterPreCreateCallback);\n }\n this.callLifeCycleMethods(beanInstances, 'postConstructMethods');\n };\n Context.prototype.createBeans = function () {\n var _this = this;\n // register all normal beans\n this.contextParams.beanClasses.forEach(this.createBeanWrapper.bind(this));\n // register override beans, these will overwrite beans above of same name\n // instantiate all beans - overridden beans will be left out\n iterateObject(this.beanWrappers, function (key, beanEntry) {\n var constructorParamsMeta;\n if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {\n constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;\n }\n var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);\n var newInstance = new (beanEntry.bean.bind.apply(beanEntry.bean, __spread$p([null], constructorParams)));\n beanEntry.beanInstance = newInstance;\n });\n var createdBeanNames = Object.keys(this.beanWrappers).join(', ');\n this.logger.log(\"created beans: \" + createdBeanNames);\n };\n // tslint:disable-next-line\n Context.prototype.createBeanWrapper = function (BeanClass) {\n var metaData = BeanClass.__agBeanMetaData;\n if (!metaData) {\n var beanName = void 0;\n if (BeanClass.prototype.constructor) {\n beanName = getFunctionName(BeanClass.prototype.constructor);\n }\n else {\n beanName = \"\" + BeanClass;\n }\n console.error(\"Context item \" + beanName + \" is not a bean\");\n return;\n }\n var beanEntry = {\n bean: BeanClass,\n beanInstance: null,\n beanName: metaData.beanName\n };\n this.beanWrappers[metaData.beanName] = beanEntry;\n };\n Context.prototype.autoWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n var attributes = metaData.agClassAttributes;\n if (!attributes) {\n return;\n }\n attributes.forEach(function (attribute) {\n var otherBean = _this.lookupBeanInstance(beanName, attribute.beanName, attribute.optional);\n beanInstance[attribute.attributeName] = otherBean;\n });\n });\n });\n };\n Context.prototype.methodWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n iterateObject(metaData.autowireMethods, function (methodName, wireParams) {\n // skip constructor, as this is dealt with elsewhere\n if (methodName === \"agConstructor\") {\n return;\n }\n var initParams = _this.getBeansForParameters(wireParams, beanName);\n beanInstance[methodName].apply(beanInstance, initParams);\n });\n });\n });\n };\n Context.prototype.forEachMetaDataInHierarchy = function (beanInstance, callback) {\n var prototype = Object.getPrototypeOf(beanInstance);\n while (prototype != null) {\n var constructor = prototype.constructor;\n if (constructor.hasOwnProperty('__agBeanMetaData')) {\n var metaData = constructor.__agBeanMetaData;\n var beanName = this.getBeanName(constructor);\n callback(metaData, beanName);\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n };\n Context.prototype.getBeanName = function (constructor) {\n if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {\n return constructor.__agBeanMetaData.beanName;\n }\n var constructorString = constructor.toString();\n var beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n return beanName;\n };\n Context.prototype.getBeansForParameters = function (parameters, beanName) {\n var _this = this;\n var beansList = [];\n if (parameters) {\n iterateObject(parameters, function (paramIndex, otherBeanName) {\n var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);\n beansList[Number(paramIndex)] = otherBean;\n });\n }\n return beansList;\n };\n Context.prototype.lookupBeanInstance = function (wiringBean, beanName, optional) {\n if (optional === void 0) { optional = false; }\n if (beanName === \"context\") {\n return this;\n }\n if (this.contextParams.providedBeanInstances && this.contextParams.providedBeanInstances.hasOwnProperty(beanName)) {\n return this.contextParams.providedBeanInstances[beanName];\n }\n var beanEntry = this.beanWrappers[beanName];\n if (beanEntry) {\n return beanEntry.beanInstance;\n }\n if (!optional) {\n console.error(\"AG Grid: unable to find bean reference \" + beanName + \" while initialising \" + wiringBean);\n }\n return null;\n };\n Context.prototype.callLifeCycleMethods = function (beanInstances, lifeCycleMethod) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) { return _this.callLifeCycleMethodsOnBean(beanInstance, lifeCycleMethod); });\n };\n Context.prototype.callLifeCycleMethodsOnBean = function (beanInstance, lifeCycleMethod, methodToIgnore) {\n // putting all methods into a map removes duplicates\n var allMethods = {};\n // dump methods from each level of the metadata hierarchy\n this.forEachMetaDataInHierarchy(beanInstance, function (metaData) {\n var methods = metaData[lifeCycleMethod];\n if (methods) {\n methods.forEach(function (methodName) {\n if (methodName != methodToIgnore) {\n allMethods[methodName] = true;\n }\n });\n }\n });\n var allMethodsList = Object.keys(allMethods);\n allMethodsList.forEach(function (methodName) { return beanInstance[methodName](); });\n };\n Context.prototype.getBean = function (name) {\n return this.lookupBeanInstance(\"getBean\", name, true);\n };\n Context.prototype.destroy = function () {\n if (this.destroyed) {\n return;\n }\n this.logger.log(\">> Shutting down ag-Application Context\");\n var beanInstances = this.getBeanInstances();\n this.destroyBeans(beanInstances);\n this.contextParams.providedBeanInstances = null;\n this.destroyed = true;\n this.logger.log(\">> ag-Application Context shut down - component is dead\");\n };\n Context.prototype.destroyBean = function (bean) {\n if (!bean) {\n return;\n }\n this.destroyBeans([bean]);\n };\n Context.prototype.destroyBeans = function (beans) {\n var _this = this;\n if (!beans) {\n return [];\n }\n beans.forEach(function (bean) {\n _this.callLifeCycleMethodsOnBean(bean, 'preDestroyMethods', 'destroy');\n // call destroy() explicitly if it exists\n var beanAny = bean;\n if (typeof beanAny.destroy === 'function') {\n beanAny.destroy();\n }\n });\n return [];\n };\n return Context;\n}());\nfunction PreConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps$1(target.constructor);\n if (!props.preConstructMethods) {\n props.preConstructMethods = [];\n }\n props.preConstructMethods.push(methodName);\n}\nfunction PostConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps$1(target.constructor);\n if (!props.postConstructMethods) {\n props.postConstructMethods = [];\n }\n props.postConstructMethods.push(methodName);\n}\nfunction PreDestroy(target, methodName, descriptor) {\n var props = getOrCreateProps$1(target.constructor);\n if (!props.preDestroyMethods) {\n props.preDestroyMethods = [];\n }\n props.preDestroyMethods.push(methodName);\n}\nfunction Bean(beanName) {\n return function (classConstructor) {\n var props = getOrCreateProps$1(classConstructor);\n props.beanName = beanName;\n };\n}\nfunction Autowired(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, false, target, propertyKey, null);\n };\n}\nfunction Optional(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, true, target, propertyKey, null);\n };\n}\nfunction autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {\n if (name === null) {\n console.error(\"AG Grid: Autowired name should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"AG Grid: Autowired should be on an attribute\");\n return;\n }\n // it's an attribute on the class\n var props = getOrCreateProps$1(target.constructor);\n if (!props.agClassAttributes) {\n props.agClassAttributes = [];\n }\n props.agClassAttributes.push({\n attributeName: methodOrAttributeName,\n beanName: name,\n optional: optional\n });\n}\nfunction Qualifier(name) {\n return function (classPrototype, methodOrAttributeName, index) {\n var constructor = typeof classPrototype == \"function\" ? classPrototype : classPrototype.constructor;\n var props;\n if (typeof index === \"number\") {\n // it's a parameter on a method\n var methodName = void 0;\n if (methodOrAttributeName) {\n props = getOrCreateProps$1(constructor);\n methodName = methodOrAttributeName;\n }\n else {\n props = getOrCreateProps$1(constructor);\n methodName = \"agConstructor\";\n }\n if (!props.autowireMethods) {\n props.autowireMethods = {};\n }\n if (!props.autowireMethods[methodName]) {\n props.autowireMethods[methodName] = {};\n }\n props.autowireMethods[methodName][index] = name;\n }\n };\n}\nfunction getOrCreateProps$1(target) {\n if (!target.hasOwnProperty(\"__agBeanMetaData\")) {\n target.__agBeanMetaData = {};\n }\n return target.__agBeanMetaData;\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$a = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar EventService = /** @class */ (function () {\n function EventService() {\n this.allSyncListeners = new Map();\n this.allAsyncListeners = new Map();\n this.globalSyncListeners = new Set();\n this.globalAsyncListeners = new Set();\n this.asyncFunctionsQueue = [];\n this.scheduled = false;\n // using an object performs better than a Set for the number of different events we have\n this.firedEvents = {};\n }\n // because this class is used both inside the context and outside the context, we do not\n // use autowired attributes, as that would be confusing, as sometimes the attributes\n // would be wired, and sometimes not.\n //\n // the global event servers used by AG Grid is autowired by the context once, and this\n // setBeans method gets called once.\n //\n // the times when this class is used outside of the context (eg RowNode has an instance of this\n // class) then it is not a bean, and this setBeans method is not called.\n EventService.prototype.setBeans = function (loggerFactory, gridOptionsService, frameworkOverrides, globalEventListener) {\n if (globalEventListener === void 0) { globalEventListener = null; }\n this.frameworkOverrides = frameworkOverrides;\n this.gridOptionsService = gridOptionsService;\n if (globalEventListener) {\n var async = gridOptionsService.useAsyncEvents();\n this.addGlobalListener(globalEventListener, async);\n }\n };\n EventService.prototype.getListeners = function (eventType, async, autoCreateListenerCollection) {\n var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n var listeners = listenerMap.get(eventType);\n // Note: 'autoCreateListenerCollection' should only be 'true' if a listener is about to be added. For instance\n // getListeners() is also called during event dispatch even though no listeners are added. This measure protects\n // against 'memory bloat' as empty collections will prevent the RowNode's event service from being removed after\n // the RowComp is destroyed, see noRegisteredListenersExist() below.\n if (!listeners && autoCreateListenerCollection) {\n listeners = new Set();\n listenerMap.set(eventType, listeners);\n }\n return listeners;\n };\n EventService.prototype.noRegisteredListenersExist = function () {\n return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 &&\n this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0;\n };\n EventService.prototype.addEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n this.getListeners(eventType, async, true).add(listener);\n };\n EventService.prototype.removeEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n var listeners = this.getListeners(eventType, async, false);\n if (!listeners) {\n return;\n }\n listeners.delete(listener);\n if (listeners.size === 0) {\n var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n listenerMap.delete(eventType);\n }\n };\n EventService.prototype.addGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);\n };\n EventService.prototype.removeGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);\n };\n EventService.prototype.dispatchEvent = function (event) {\n var agEvent = event;\n if (this.gridOptionsService) {\n // Apply common properties to all dispatched events if this event service has had its beans set with gridOptionsService.\n // Note there are multiple instances of EventService that are used local to components which do not set gridOptionsService.\n var _a = this.gridOptionsService, api = _a.api, columnApi = _a.columnApi, context = _a.context;\n agEvent.api = api;\n agEvent.columnApi = columnApi;\n agEvent.context = context;\n }\n this.dispatchToListeners(agEvent, true);\n this.dispatchToListeners(agEvent, false);\n this.firedEvents[agEvent.type] = true;\n };\n EventService.prototype.dispatchEventOnce = function (event) {\n if (!this.firedEvents[event.type]) {\n this.dispatchEvent(event);\n }\n };\n EventService.prototype.dispatchToListeners = function (event, async) {\n var _this = this;\n var eventType = event.type;\n if (async && 'event' in event) {\n var browserEvent = event.event;\n if (browserEvent instanceof Event) {\n // AG-7893 - Persist composedPath() so that its result can still be accessed by the user asynchronously.\n // Within an async event handler if they call composedPath() on the event it will always return an empty [].\n event.eventPath = browserEvent.composedPath();\n }\n }\n var processEventListeners = function (listeners) { return listeners.forEach(function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(event); });\n }\n else {\n listener(event);\n }\n }); };\n var listeners = this.getListeners(eventType, async, false);\n if (listeners) {\n processEventListeners(listeners);\n }\n var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;\n globalListeners.forEach(function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true); });\n }\n else {\n _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true);\n }\n });\n };\n // this gets called inside the grid's thread, for each event that it\n // wants to set async. the grid then batches the events into one setTimeout()\n // because setTimeout() is an expensive operation. ideally we would have\n // each event in it's own setTimeout(), but we batch for performance.\n EventService.prototype.dispatchAsync = function (func) {\n // add to the queue for executing later in the next VM turn\n this.asyncFunctionsQueue.push(func);\n // check if timeout is already scheduled. the first time the grid calls\n // this within it's thread turn, this should be false, so it will schedule\n // the 'flush queue' method the first time it comes here. then the flag is\n // set to 'true' so it will know it's already scheduled for subsequent calls.\n if (!this.scheduled) {\n // if not scheduled, schedule one\n window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n // mark that it is scheduled\n this.scheduled = true;\n }\n };\n // this happens in the next VM turn only, and empties the queue of events\n EventService.prototype.flushAsyncQueue = function () {\n this.scheduled = false;\n // we take a copy, because the event listener could be using\n // the grid, which would cause more events, which would be potentially\n // added to the queue, so safe to take a copy, the new events will\n // get executed in a later VM turn rather than risk updating the\n // queue as we are flushing it.\n var queueCopy = this.asyncFunctionsQueue.slice();\n this.asyncFunctionsQueue = [];\n // execute the queue\n queueCopy.forEach(function (func) { return func(); });\n };\n __decorate$2z([\n __param$a(0, Qualifier('loggerFactory')),\n __param$a(1, Qualifier('gridOptionsService')),\n __param$a(2, Qualifier('frameworkOverrides')),\n __param$a(3, Qualifier('globalEventListener'))\n ], EventService.prototype, \"setBeans\", null);\n EventService = __decorate$2z([\n Bean('eventService')\n ], EventService);\n return EventService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ModuleNames;\n(function (ModuleNames) {\n ModuleNames[\"CommunityCoreModule\"] = \"@ag-grid-community/core\";\n // community modules\n ModuleNames[\"InfiniteRowModelModule\"] = \"@ag-grid-community/infinite-row-model\";\n ModuleNames[\"ClientSideRowModelModule\"] = \"@ag-grid-community/client-side-row-model\";\n ModuleNames[\"CsvExportModule\"] = \"@ag-grid-community/csv-export\";\n // enterprise core - users don't need to import on this, but other enterprise modules do\n ModuleNames[\"EnterpriseCoreModule\"] = \"@ag-grid-enterprise/core\";\n // enterprise modules\n ModuleNames[\"RowGroupingModule\"] = \"@ag-grid-enterprise/row-grouping\";\n ModuleNames[\"ColumnsToolPanelModule\"] = \"@ag-grid-enterprise/column-tool-panel\";\n ModuleNames[\"FiltersToolPanelModule\"] = \"@ag-grid-enterprise/filter-tool-panel\";\n ModuleNames[\"MenuModule\"] = \"@ag-grid-enterprise/menu\";\n ModuleNames[\"SetFilterModule\"] = \"@ag-grid-enterprise/set-filter\";\n ModuleNames[\"MultiFilterModule\"] = \"@ag-grid-enterprise/multi-filter\";\n ModuleNames[\"StatusBarModule\"] = \"@ag-grid-enterprise/status-bar\";\n ModuleNames[\"SideBarModule\"] = \"@ag-grid-enterprise/side-bar\";\n ModuleNames[\"RangeSelectionModule\"] = \"@ag-grid-enterprise/range-selection\";\n ModuleNames[\"MasterDetailModule\"] = \"@ag-grid-enterprise/master-detail\";\n ModuleNames[\"RichSelectModule\"] = \"@ag-grid-enterprise/rich-select\";\n ModuleNames[\"GridChartsModule\"] = \"@ag-grid-enterprise/charts\";\n ModuleNames[\"ViewportRowModelModule\"] = \"@ag-grid-enterprise/viewport-row-model\";\n ModuleNames[\"ServerSideRowModelModule\"] = \"@ag-grid-enterprise/server-side-row-model\";\n ModuleNames[\"ExcelExportModule\"] = \"@ag-grid-enterprise/excel-export\";\n ModuleNames[\"ClipboardModule\"] = \"@ag-grid-enterprise/clipboard\";\n ModuleNames[\"SparklinesModule\"] = \"@ag-grid-enterprise/sparklines\";\n // framework wrappers currently don't provide beans, comps etc, so no need to be modules,\n // however i argue they should be as in theory they 'could' provide beans etc\n ModuleNames[\"AngularModule\"] = \"@ag-grid-community/angular\";\n ModuleNames[\"ReactModule\"] = \"@ag-grid-community/react\";\n ModuleNames[\"VueModule\"] = \"@ag-grid-community/vue\";\n // and then this, which is definitely not a grid module, as it should not have any dependency\n // on the grid (ie shouldn't even reference the Module interface)\n // ChartsModule = \"@ag-grid-community/charts-core\",\n})(ModuleNames || (ModuleNames = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$v = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar ModuleRegistry = /** @class */ (function () {\n function ModuleRegistry() {\n }\n ModuleRegistry.register = function (module, moduleBased) {\n if (moduleBased === void 0) { moduleBased = true; }\n ModuleRegistry.runVersionChecks(module);\n ModuleRegistry.modulesMap[module.moduleName] = module;\n ModuleRegistry.setModuleBased(moduleBased);\n };\n ModuleRegistry.runVersionChecks = function (module) {\n if (!ModuleRegistry.currentModuleVersion) {\n ModuleRegistry.currentModuleVersion = module.version;\n }\n if (!module.version) {\n console.error(\"AG Grid: You are using incompatible versions of AG Grid modules. Major and minor versions should always match across modules. '\" + module.moduleName + \"' is incompatible. Please update all modules to the same version.\");\n }\n else if (module.version !== ModuleRegistry.currentModuleVersion) {\n console.error(\"AG Grid: You are using incompatible versions of AG Grid modules. Major and minor versions should always match across modules. '\" + module.moduleName + \"' is version \" + module.version + \" but the other modules are version \" + this.currentModuleVersion + \". Please update all modules to the same version.\");\n }\n if (module.validate) {\n var result = module.validate();\n if (!result.isValid) {\n var errorResult = result;\n console.error(\"AG Grid: \" + errorResult.message);\n }\n }\n };\n ModuleRegistry.setModuleBased = function (moduleBased) {\n if (ModuleRegistry.moduleBased === undefined) {\n ModuleRegistry.moduleBased = moduleBased;\n }\n else {\n if (ModuleRegistry.moduleBased !== moduleBased) {\n doOnce(function () {\n console.warn(\"AG Grid: You are mixing modules (i.e. @ag-grid-community/core) and packages (ag-grid-community) - you can only use one or the other of these mechanisms.\");\n console.warn('Please see https://www.ag-grid.com/javascript-grid/packages-modules/ for more information.');\n }, 'ModulePackageCheck');\n }\n }\n };\n /**\n * INTERNAL - Set if files are being served from a single UMD bundle to provide accurate enterprise upgrade steps.\n */\n ModuleRegistry.setIsBundled = function () {\n ModuleRegistry.isBundled = true;\n };\n // noinspection JSUnusedGlobalSymbols\n ModuleRegistry.registerModules = function (modules, moduleBased) {\n if (moduleBased === void 0) { moduleBased = true; }\n ModuleRegistry.setModuleBased(moduleBased);\n if (!modules) {\n return;\n }\n modules.forEach(function (module) { return ModuleRegistry.register(module, moduleBased); });\n };\n ModuleRegistry.assertRegistered = function (moduleName, reason) {\n var _a;\n if (this.isRegistered(moduleName)) {\n return true;\n }\n var warningKey = reason + moduleName;\n var warningMessage;\n if (ModuleRegistry.isBundled) {\n {\n warningMessage =\n \"AG Grid: unable to use \" + reason + \" as 'ag-grid-enterprise' has not been loaded. Check you are using the Enterprise bundle:\\n \\n <script src=\\\"https://cdn.jsdelivr.net/npm/ag-grid-enterprise@AG_GRID_VERSION/dist/ag-grid-enterprise.min.js\\\"></script>\\n \\nFor more info see: https://ag-grid.com/javascript-data-grid/getting-started/#getting-started-with-ag-grid-enterprise\";\n }\n }\n else if (ModuleRegistry.moduleBased || ModuleRegistry.moduleBased === undefined) {\n var modName = (_a = Object.entries(ModuleNames).find(function (_a) {\n var _b = __read$v(_a, 2); _b[0]; var v = _b[1];\n return v === moduleName;\n })) === null || _a === void 0 ? void 0 : _a[0];\n warningMessage =\n \"AG Grid: unable to use \" + reason + \" as the \" + modName + \" is not registered. Check if you have registered the module:\\n \\n import { ModuleRegistry } from '@ag-grid-community/core';\\n import { \" + modName + \" } from '\" + moduleName + \"';\\n \\n ModuleRegistry.registerModules([ \" + modName + \" ]);\\n\\nFor more info see: https://www.ag-grid.com/javascript-grid/modules/\";\n }\n else {\n warningMessage =\n \"AG Grid: unable to use \" + reason + \" as package 'ag-grid-enterprise' has not been imported. Check that you have imported the package:\\n \\n import 'ag-grid-enterprise';\\n \\nFor more info see: https://www.ag-grid.com/javascript-grid/packages/\";\n }\n doOnce(function () {\n console.warn(warningMessage);\n }, warningKey);\n return false;\n };\n ModuleRegistry.isRegistered = function (moduleName) {\n return !!ModuleRegistry.modulesMap[moduleName];\n };\n ModuleRegistry.getRegisteredModules = function () {\n return values(ModuleRegistry.modulesMap);\n };\n ModuleRegistry.isPackageBased = function () {\n return !ModuleRegistry.moduleBased;\n };\n // having in a map a) removes duplicates and b) allows fast lookup\n ModuleRegistry.modulesMap = {};\n return ModuleRegistry;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$u = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$o = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$u(arguments[i]));\n return ar;\n};\nvar instanceIdSequence$4 = 0;\nfunction getNextColInstanceId() {\n return instanceIdSequence$4++;\n}\n// Wrapper around a user provide column definition. The grid treats the column definition as ready only.\n// This class contains all the runtime information about a column, plus some logic (the definition has no logic).\n// This class implements both interfaces ColumnGroupChild and ProvidedColumnGroupChild as the class can\n// appear as a child of either the original tree or the displayed tree. However the relevant group classes\n// for each type only implements one, as each group can only appear in it's associated tree (eg ProvidedColumnGroup\n// can only appear in OriginalColumn tree).\nvar Column = /** @class */ (function () {\n function Column(colDef, userProvidedColDef, colId, primary) {\n // used by React (and possibly other frameworks) as key for rendering. also used to\n // identify old vs new columns for destroying cols when no longer used.\n this.instanceId = getNextColInstanceId();\n // The measured height of this column's header when autoHeaderHeight is enabled\n this.autoHeaderHeight = null;\n this.moving = false;\n this.menuVisible = false;\n this.filterActive = false;\n this.eventService = new EventService();\n this.tooltipEnabled = false;\n this.rowGroupActive = false;\n this.pivotActive = false;\n this.aggregationActive = false;\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.colId = colId;\n this.primary = primary;\n this.setState(colDef);\n }\n Column.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n Column.prototype.setState = function (colDef) {\n // sort\n if (colDef.sort !== undefined) {\n if (colDef.sort === 'asc' || colDef.sort === 'desc') {\n this.sort = colDef.sort;\n }\n }\n else {\n if (colDef.initialSort === 'asc' || colDef.initialSort === 'desc') {\n this.sort = colDef.initialSort;\n }\n }\n // sortIndex\n var sortIndex = attrToNumber(colDef.sortIndex);\n var initialSortIndex = attrToNumber(colDef.initialSortIndex);\n if (sortIndex !== undefined) {\n if (sortIndex !== null) {\n this.sortIndex = sortIndex;\n }\n }\n else {\n if (initialSortIndex !== null) {\n this.sortIndex = initialSortIndex;\n }\n }\n // hide\n var hide = attrToBoolean(colDef.hide);\n var initialHide = attrToBoolean(colDef.initialHide);\n if (hide !== undefined) {\n this.visible = !hide;\n }\n else {\n this.visible = !initialHide;\n }\n // pinned\n if (colDef.pinned !== undefined) {\n this.setPinned(colDef.pinned);\n }\n else {\n this.setPinned(colDef.initialPinned);\n }\n // flex\n var flex = attrToNumber(colDef.flex);\n var initialFlex = attrToNumber(colDef.initialFlex);\n if (flex !== undefined) {\n this.flex = flex;\n }\n else if (initialFlex !== undefined) {\n this.flex = initialFlex;\n }\n };\n // gets called when user provides an alternative colDef, eg\n Column.prototype.setColDef = function (colDef, userProvidedColDef) {\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.initMinAndMaxWidths();\n this.initDotNotation();\n this.eventService.dispatchEvent(this.createColumnEvent('colDefChanged', \"api\"));\n };\n /**\n * Returns the column definition provided by the application.\n * This may not be correct, as items can be superseded by default column options.\n * However it's useful for comparison, eg to know which application column definition matches that column.\n */\n Column.prototype.getUserProvidedColDef = function () {\n return this.userProvidedColDef;\n };\n Column.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n /** Returns the parent column group, if column grouping is active. */\n Column.prototype.getParent = function () {\n return this.parent;\n };\n Column.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n Column.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n // this is done after constructor as it uses gridOptionsService\n Column.prototype.initialise = function () {\n this.initMinAndMaxWidths();\n this.resetActualWidth('gridInitializing');\n this.initDotNotation();\n this.initTooltip();\n this.validate();\n };\n Column.prototype.initDotNotation = function () {\n var suppressDotNotation = this.gridOptionsService.is('suppressFieldDotNotation');\n this.fieldContainsDots = exists(this.colDef.field) && this.colDef.field.indexOf('.') >= 0 && !suppressDotNotation;\n this.tooltipFieldContainsDots = exists(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf('.') >= 0 && !suppressDotNotation;\n };\n Column.prototype.initMinAndMaxWidths = function () {\n var colDef = this.colDef;\n this.minWidth = this.columnUtils.calculateColMinWidth(colDef);\n this.maxWidth = this.columnUtils.calculateColMaxWidth(colDef);\n };\n Column.prototype.initTooltip = function () {\n this.tooltipEnabled = exists(this.colDef.tooltipField) ||\n exists(this.colDef.tooltipValueGetter) ||\n exists(this.colDef.tooltipComponent) ||\n exists(this.colDef.tooltipComponentFramework);\n };\n Column.prototype.resetActualWidth = function (source) {\n if (source === void 0) { source = 'api'; }\n var initialWidth = this.columnUtils.calculateColInitialWidth(this.colDef);\n this.setActualWidth(initialWidth, source, true);\n };\n Column.prototype.isEmptyGroup = function () {\n return false;\n };\n Column.prototype.isRowGroupDisplayed = function (colId) {\n if (missing(this.colDef) || missing(this.colDef.showRowGroup)) {\n return false;\n }\n var showingAllGroups = this.colDef.showRowGroup === true;\n var showingThisGroup = this.colDef.showRowGroup === colId;\n return showingAllGroups || showingThisGroup;\n };\n /** Returns `true` if column is a primary column, `false` if secondary. Secondary columns are used for pivoting. */\n Column.prototype.isPrimary = function () {\n return this.primary;\n };\n /** Returns `true` if column filtering is allowed. */\n Column.prototype.isFilterAllowed = function () {\n // filter defined means it's a string, class or true.\n // if its false, null or undefined then it's false.\n var filterDefined = !!this.colDef.filter || !!this.colDef.filterFramework;\n return filterDefined;\n };\n Column.prototype.isFieldContainsDots = function () {\n return this.fieldContainsDots;\n };\n Column.prototype.isTooltipEnabled = function () {\n return this.tooltipEnabled;\n };\n Column.prototype.isTooltipFieldContainsDots = function () {\n return this.tooltipFieldContainsDots;\n };\n Column.prototype.validate = function () {\n var colDefAny = this.colDef;\n function warnOnce(msg, key, obj) {\n doOnce(function () {\n if (obj) {\n console.warn(msg, obj);\n }\n else {\n doOnce(function () { return console.warn(msg); }, key);\n }\n }, key);\n }\n var usingCSRM = this.gridOptionsService.isRowModelType('clientSide');\n if (usingCSRM && !ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule)) {\n var rowGroupingItems = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'enableValue', 'pivot', 'pivotIndex', 'aggFunc'];\n var itemsUsed = rowGroupingItems.filter(function (x) { return exists(colDefAny[x]); });\n if (itemsUsed.length > 0) {\n ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, itemsUsed.map(function (i) { return 'colDef.' + i; }).join(', '));\n }\n }\n if (this.colDef.cellEditor === 'agRichSelect' || this.colDef.cellEditor === 'agRichSelectCellEditor') {\n ModuleRegistry.assertRegistered(ModuleNames.RichSelectModule, this.colDef.cellEditor);\n }\n if (this.gridOptionsService.isTreeData()) {\n var itemsNotAllowedWithTreeData = ['rowGroup', 'rowGroupIndex', 'pivot', 'pivotIndex'];\n var itemsUsed = itemsNotAllowedWithTreeData.filter(function (x) { return exists(colDefAny[x]); });\n if (itemsUsed.length > 0) {\n warnOnce(\"AG Grid: \" + itemsUsed.join() + \" is not possible when doing tree data, your column definition should not have \" + itemsUsed.join(), 'TreeDataCannotRowGroup');\n }\n }\n if (exists(colDefAny.menuTabs)) {\n if (Array.isArray(colDefAny.menuTabs)) {\n var communityMenuTabs_1 = ['filterMenuTab'];\n var enterpriseMenuTabs_1 = ['columnsMenuTab', 'generalMenuTab'];\n var itemsUsed = enterpriseMenuTabs_1.filter(function (x) { return colDefAny.menuTabs.includes(x); });\n if (itemsUsed.length > 0) {\n ModuleRegistry.assertRegistered(ModuleNames.MenuModule, \"menuTab(s): \" + itemsUsed.map(function (t) { return \"'\" + t + \"'\"; }).join());\n }\n colDefAny.menuTabs.forEach(function (tab) {\n if (!enterpriseMenuTabs_1.includes(tab) && !communityMenuTabs_1.includes(tab)) {\n warnOnce(\"AG Grid: '\" + tab + \"' is not valid for 'colDef.menuTabs'. Valid values are: \" + __spread$o(communityMenuTabs_1, enterpriseMenuTabs_1).map(function (t) { return \"'\" + t + \"'\"; }).join() + \".\", 'wrongValue_menuTabs_' + tab);\n }\n });\n }\n else {\n warnOnce(\"AG Grid: The typeof 'colDef.menuTabs' should be an array not:\" + typeof colDefAny.menuTabs, 'wrongType_menuTabs');\n }\n }\n if (exists(colDefAny.columnsMenuParams)) {\n ModuleRegistry.assertRegistered(ModuleNames.MenuModule, 'columnsMenuParams');\n }\n if (exists(colDefAny.columnsMenuParams)) {\n ModuleRegistry.assertRegistered(ModuleNames.ColumnsToolPanelModule, 'columnsMenuParams');\n }\n if (exists(this.colDef.width) && typeof this.colDef.width !== 'number') {\n warnOnce('AG Grid: colDef.width should be a number, not ' + typeof this.colDef.width, 'ColumnCheck');\n }\n if (colDefAny.pinnedRowCellRenderer || colDefAny.pinnedRowCellRendererParams || colDefAny.pinnedRowCellRendererFramework) {\n warnOnce('AG Grid: pinnedRowCellRenderer[Params,Framework] no longer exist. Use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned.', 'colDef.pinnedRowCellRenderer-deprecated');\n }\n if (exists(colDefAny.columnGroupShow) && colDefAny.columnGroupShow !== 'closed' && colDefAny.columnGroupShow !== 'open') {\n warnOnce(\"AG Grid: '\" + colDefAny.columnGroupShow + \"' is not valid for columnGroupShow. Valid values are 'open', 'closed', undefined, null\", 'columnGroupShow_invalid');\n }\n };\n /** Add an event listener to the column. */\n Column.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n /** Remove event listener from the column. */\n Column.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n Column.prototype.createColumnFunctionCallbackParams = function (rowNode) {\n return {\n node: rowNode,\n data: rowNode.data,\n column: this,\n colDef: this.colDef,\n context: this.gridOptionsService.context,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi\n };\n };\n Column.prototype.isSuppressNavigable = function (rowNode) {\n // if boolean set, then just use it\n if (typeof this.colDef.suppressNavigable === 'boolean') {\n return this.colDef.suppressNavigable;\n }\n // if function, then call the function to find out\n if (typeof this.colDef.suppressNavigable === 'function') {\n var params = this.createColumnFunctionCallbackParams(rowNode);\n var userFunc = this.colDef.suppressNavigable;\n return userFunc(params);\n }\n return false;\n };\n /**\n * Returns `true` if the cell for this column is editable for the given `rowNode`, otherwise `false`.\n */\n Column.prototype.isCellEditable = function (rowNode) {\n // only allow editing of groups if the user has this option enabled\n if (rowNode.group && !this.gridOptionsService.is('enableGroupEdit')) {\n return false;\n }\n return this.isColumnFunc(rowNode, this.colDef.editable);\n };\n Column.prototype.isSuppressFillHandle = function () {\n return !!attrToBoolean(this.colDef.suppressFillHandle);\n };\n Column.prototype.isAutoHeight = function () {\n return !!attrToBoolean(this.colDef.autoHeight);\n };\n Column.prototype.isAutoHeaderHeight = function () {\n return !!attrToBoolean(this.colDef.autoHeaderHeight);\n };\n Column.prototype.isRowDrag = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.rowDrag);\n };\n Column.prototype.isDndSource = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.dndSource);\n };\n Column.prototype.isCellCheckboxSelection = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);\n };\n Column.prototype.isSuppressPaste = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);\n };\n Column.prototype.isResizable = function () {\n return !!attrToBoolean(this.colDef.resizable);\n };\n Column.prototype.isColumnFunc = function (rowNode, value) {\n // if boolean set, then just use it\n if (typeof value === 'boolean') {\n return value;\n }\n // if function, then call the function to find out\n if (typeof value === 'function') {\n var params = this.createColumnFunctionCallbackParams(rowNode);\n var editableFunc = value;\n return editableFunc(params);\n }\n return false;\n };\n Column.prototype.setMoving = function (moving, source) {\n if (source === void 0) { source = \"api\"; }\n this.moving = moving;\n this.eventService.dispatchEvent(this.createColumnEvent('movingChanged', source));\n };\n Column.prototype.createColumnEvent = function (type, source) {\n return {\n type: type,\n column: this,\n columns: [this],\n source: source,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n };\n Column.prototype.isMoving = function () {\n return this.moving;\n };\n /** If sorting is active, returns the sort direction e.g. `'asc'` or `'desc'`. */\n Column.prototype.getSort = function () {\n return this.sort;\n };\n Column.prototype.setSort = function (sort, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.sort !== sort) {\n this.sort = sort;\n this.eventService.dispatchEvent(this.createColumnEvent('sortChanged', source));\n }\n };\n Column.prototype.setMenuVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.menuVisible !== visible) {\n this.menuVisible = visible;\n this.eventService.dispatchEvent(this.createColumnEvent('menuVisibleChanged', source));\n }\n };\n Column.prototype.isMenuVisible = function () {\n return this.menuVisible;\n };\n Column.prototype.isSortAscending = function () {\n return this.sort === 'asc';\n };\n Column.prototype.isSortDescending = function () {\n return this.sort === 'desc';\n };\n Column.prototype.isSortNone = function () {\n return missing(this.sort);\n };\n Column.prototype.isSorting = function () {\n return exists(this.sort);\n };\n Column.prototype.getSortIndex = function () {\n return this.sortIndex;\n };\n Column.prototype.setSortIndex = function (sortOrder) {\n this.sortIndex = sortOrder;\n };\n Column.prototype.setAggFunc = function (aggFunc) {\n this.aggFunc = aggFunc;\n };\n /** If aggregation is set for the column, returns the aggregation function. */\n Column.prototype.getAggFunc = function () {\n return this.aggFunc;\n };\n Column.prototype.getLeft = function () {\n return this.left;\n };\n Column.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n Column.prototype.getRight = function () {\n return this.left + this.actualWidth;\n };\n Column.prototype.setLeft = function (left, source) {\n if (source === void 0) { source = \"api\"; }\n this.oldLeft = this.left;\n if (this.left !== left) {\n this.left = left;\n this.eventService.dispatchEvent(this.createColumnEvent('leftChanged', source));\n }\n };\n /** Returns `true` if filter is active on the column. */\n Column.prototype.isFilterActive = function () {\n return this.filterActive;\n };\n // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event\n Column.prototype.setFilterActive = function (active, source, additionalEventAttributes) {\n if (source === void 0) { source = \"api\"; }\n if (this.filterActive !== active) {\n this.filterActive = active;\n this.eventService.dispatchEvent(this.createColumnEvent('filterActiveChanged', source));\n }\n var filterChangedEvent = this.createColumnEvent('filterChanged', source);\n if (additionalEventAttributes) {\n mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n this.eventService.dispatchEvent(filterChangedEvent);\n };\n /** Returns `true` when this `Column` is hovered, otherwise `false` */\n Column.prototype.isHovered = function () {\n return this.columnHoverService.isHovered(this);\n };\n Column.prototype.setPinned = function (pinned) {\n if (pinned === true || pinned === 'left') {\n this.pinned = 'left';\n }\n else if (pinned === 'right') {\n this.pinned = 'right';\n }\n else {\n this.pinned = null;\n }\n };\n Column.prototype.setFirstRightPinned = function (firstRightPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n this.eventService.dispatchEvent(this.createColumnEvent('firstRightPinnedChanged', source));\n }\n };\n Column.prototype.setLastLeftPinned = function (lastLeftPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n this.eventService.dispatchEvent(this.createColumnEvent('lastLeftPinnedChanged', source));\n }\n };\n Column.prototype.isFirstRightPinned = function () {\n return this.firstRightPinned;\n };\n Column.prototype.isLastLeftPinned = function () {\n return this.lastLeftPinned;\n };\n Column.prototype.isPinned = function () {\n return this.pinned === 'left' || this.pinned === 'right';\n };\n Column.prototype.isPinnedLeft = function () {\n return this.pinned === 'left';\n };\n Column.prototype.isPinnedRight = function () {\n return this.pinned === 'right';\n };\n Column.prototype.getPinned = function () {\n return this.pinned;\n };\n Column.prototype.setVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n var newValue = visible === true;\n if (this.visible !== newValue) {\n this.visible = newValue;\n this.eventService.dispatchEvent(this.createColumnEvent('visibleChanged', source));\n }\n };\n Column.prototype.isVisible = function () {\n return this.visible;\n };\n Column.prototype.isSpanHeaderHeight = function () {\n return !!this.getColDef().spanHeaderHeight;\n };\n /** Returns the column definition for this column.\n * The column definition will be the result of merging the application provided column definition with any provided defaults\n * (e.g. `defaultColDef` grid option, or column types.\n *\n * Equivalent: `getDefinition` */\n Column.prototype.getColDef = function () {\n return this.colDef;\n };\n Column.prototype.getColumnGroupShow = function () {\n return this.colDef.columnGroupShow;\n };\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getId`, `getUniqueId` */\n Column.prototype.getColId = function () {\n return this.colId;\n };\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getColId`, `getUniqueId` */\n Column.prototype.getId = function () {\n return this.colId;\n };\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getColId`, `getId` */\n Column.prototype.getUniqueId = function () {\n return this.colId;\n };\n Column.prototype.getDefinition = function () {\n return this.colDef;\n };\n /** Returns the current width of the column. If the column is resized, the actual width is the new size. */\n Column.prototype.getActualWidth = function () {\n return this.actualWidth;\n };\n Column.prototype.getAutoHeaderHeight = function () {\n return this.autoHeaderHeight;\n };\n /** Returns true if the header height has changed */\n Column.prototype.setAutoHeaderHeight = function (height) {\n var changed = height !== this.autoHeaderHeight;\n this.autoHeaderHeight = height;\n return changed;\n };\n Column.prototype.createBaseColDefParams = function (rowNode) {\n var params = {\n node: rowNode,\n data: rowNode.data,\n colDef: this.colDef,\n column: this,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n return params;\n };\n Column.prototype.getColSpan = function (rowNode) {\n if (missing(this.colDef.colSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var colSpan = this.colDef.colSpan(params);\n // colSpan must be number equal to or greater than 1\n return Math.max(colSpan, 1);\n };\n Column.prototype.getRowSpan = function (rowNode) {\n if (missing(this.colDef.rowSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var rowSpan = this.colDef.rowSpan(params);\n // rowSpan must be number equal to or greater than 1\n return Math.max(rowSpan, 1);\n };\n Column.prototype.setActualWidth = function (actualWidth, source, silent) {\n if (source === void 0) { source = \"api\"; }\n if (silent === void 0) { silent = false; }\n if (this.minWidth != null) {\n actualWidth = Math.max(actualWidth, this.minWidth);\n }\n if (this.maxWidth != null) {\n actualWidth = Math.min(actualWidth, this.maxWidth);\n }\n if (this.actualWidth !== actualWidth) {\n // disable flex for this column if it was manually resized.\n this.actualWidth = actualWidth;\n if (this.flex && source !== 'flex' && source !== 'gridInitializing') {\n this.flex = null;\n }\n if (!silent) {\n this.fireColumnWidthChangedEvent(source);\n }\n }\n };\n Column.prototype.fireColumnWidthChangedEvent = function (source) {\n this.eventService.dispatchEvent(this.createColumnEvent('widthChanged', source));\n };\n Column.prototype.isGreaterThanMax = function (width) {\n if (this.maxWidth != null) {\n return width > this.maxWidth;\n }\n return false;\n };\n Column.prototype.getMinWidth = function () {\n return this.minWidth;\n };\n Column.prototype.getMaxWidth = function () {\n return this.maxWidth;\n };\n Column.prototype.getFlex = function () {\n return this.flex || 0;\n };\n // this method should only be used by the columnModel to\n // change flex when required by the applyColumnState method.\n Column.prototype.setFlex = function (flex) {\n if (this.flex !== flex) {\n this.flex = flex;\n }\n };\n Column.prototype.setMinimum = function (source) {\n if (source === void 0) { source = \"api\"; }\n if (exists(this.minWidth)) {\n this.setActualWidth(this.minWidth, source);\n }\n };\n Column.prototype.setRowGroupActive = function (rowGroup, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.rowGroupActive !== rowGroup) {\n this.rowGroupActive = rowGroup;\n this.eventService.dispatchEvent(this.createColumnEvent('columnRowGroupChanged', source));\n }\n };\n /** Returns `true` if row group is currently active for this column. */\n Column.prototype.isRowGroupActive = function () {\n return this.rowGroupActive;\n };\n Column.prototype.setPivotActive = function (pivot, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.pivotActive !== pivot) {\n this.pivotActive = pivot;\n this.eventService.dispatchEvent(this.createColumnEvent('columnPivotChanged', source));\n }\n };\n /** Returns `true` if pivot is currently active for this column. */\n Column.prototype.isPivotActive = function () {\n return this.pivotActive;\n };\n Column.prototype.isAnyFunctionActive = function () {\n return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n };\n Column.prototype.isAnyFunctionAllowed = function () {\n return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n };\n Column.prototype.setValueActive = function (value, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.aggregationActive !== value) {\n this.aggregationActive = value;\n this.eventService.dispatchEvent(this.createColumnEvent('columnValueChanged', source));\n }\n };\n /** Returns `true` if value (aggregation) is currently active for this column. */\n Column.prototype.isValueActive = function () {\n return this.aggregationActive;\n };\n Column.prototype.isAllowPivot = function () {\n return this.colDef.enablePivot === true;\n };\n Column.prototype.isAllowValue = function () {\n return this.colDef.enableValue === true;\n };\n Column.prototype.isAllowRowGroup = function () {\n return this.colDef.enableRowGroup === true;\n };\n Column.prototype.getMenuTabs = function (defaultValues) {\n var menuTabs = this.getColDef().menuTabs;\n if (menuTabs == null) {\n menuTabs = defaultValues;\n }\n return menuTabs;\n };\n // + renderedHeaderCell - for making header cell transparent when moving\n Column.EVENT_MOVING_CHANGED = 'movingChanged';\n // + renderedCell - changing left position\n Column.EVENT_LEFT_CHANGED = 'leftChanged';\n // + renderedCell - changing width\n Column.EVENT_WIDTH_CHANGED = 'widthChanged';\n // + renderedCell - for changing pinned classes\n Column.EVENT_LAST_LEFT_PINNED_CHANGED = 'lastLeftPinnedChanged';\n Column.EVENT_FIRST_RIGHT_PINNED_CHANGED = 'firstRightPinnedChanged';\n // + renderedColumn - for changing visibility icon\n Column.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n // + every time the filter changes, used in the floating filters\n Column.EVENT_FILTER_CHANGED = 'filterChanged';\n // + renderedHeaderCell - marks the header with filter icon\n Column.EVENT_FILTER_ACTIVE_CHANGED = 'filterActiveChanged';\n // + renderedHeaderCell - marks the header with sort icon\n Column.EVENT_SORT_CHANGED = 'sortChanged';\n // + renderedHeaderCell - marks the header with sort icon\n Column.EVENT_COL_DEF_CHANGED = 'colDefChanged';\n Column.EVENT_MENU_VISIBLE_CHANGED = 'menuVisibleChanged';\n // + toolpanel, for gui updates\n Column.EVENT_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n // + toolpanel, for gui updates\n Column.EVENT_PIVOT_CHANGED = 'columnPivotChanged';\n // + toolpanel, for gui updates\n Column.EVENT_VALUE_CHANGED = 'columnValueChanged';\n __decorate$2y([\n Autowired('gridOptionsService')\n ], Column.prototype, \"gridOptionsService\", void 0);\n __decorate$2y([\n Autowired('columnUtils')\n ], Column.prototype, \"columnUtils\", void 0);\n __decorate$2y([\n Autowired('columnHoverService')\n ], Column.prototype, \"columnHoverService\", void 0);\n __decorate$2y([\n PostConstruct\n ], Column.prototype, \"initialise\", null);\n return Column;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ProvidedColumnGroup = /** @class */ (function () {\n function ProvidedColumnGroup(colGroupDef, groupId, padding, level) {\n this.localEventService = new EventService();\n this.expandable = false;\n // used by React (and possibly other frameworks) as key for rendering. also used to\n // identify old vs new columns for destroying cols when no longer used.\n this.instanceId = getNextColInstanceId();\n this.expandableListenerRemoveCallback = null;\n this.colGroupDef = colGroupDef;\n this.groupId = groupId;\n this.expanded = !!colGroupDef && !!colGroupDef.openByDefault;\n this.padding = padding;\n this.level = level;\n }\n ProvidedColumnGroup.prototype.destroy = function () {\n if (this.expandableListenerRemoveCallback) {\n this.reset(null, undefined);\n }\n };\n ProvidedColumnGroup.prototype.reset = function (colGroupDef, level) {\n this.colGroupDef = colGroupDef;\n this.level = level;\n this.originalParent = null;\n if (this.expandableListenerRemoveCallback) {\n this.expandableListenerRemoveCallback();\n }\n // we use ! below, as we want to set the object back to the\n // way it was when it was first created\n this.children = undefined;\n this.expandable = undefined;\n };\n ProvidedColumnGroup.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n ProvidedColumnGroup.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n ProvidedColumnGroup.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n ProvidedColumnGroup.prototype.getLevel = function () {\n return this.level;\n };\n ProvidedColumnGroup.prototype.isVisible = function () {\n // return true if at least one child is visible\n if (this.children) {\n return this.children.some(function (child) { return child.isVisible(); });\n }\n return false;\n };\n ProvidedColumnGroup.prototype.isPadding = function () {\n return this.padding;\n };\n ProvidedColumnGroup.prototype.setExpanded = function (expanded) {\n this.expanded = expanded === undefined ? false : expanded;\n var event = {\n type: ProvidedColumnGroup.EVENT_EXPANDED_CHANGED\n };\n this.localEventService.dispatchEvent(event);\n };\n ProvidedColumnGroup.prototype.isExpandable = function () {\n return this.expandable;\n };\n ProvidedColumnGroup.prototype.isExpanded = function () {\n return this.expanded;\n };\n ProvidedColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n ProvidedColumnGroup.prototype.getId = function () {\n return this.getGroupId();\n };\n ProvidedColumnGroup.prototype.setChildren = function (children) {\n this.children = children;\n };\n ProvidedColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n ProvidedColumnGroup.prototype.getColGroupDef = function () {\n return this.colGroupDef;\n };\n ProvidedColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n ProvidedColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n if (!this.children) {\n return;\n }\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ProvidedColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n ProvidedColumnGroup.prototype.getColumnGroupShow = function () {\n var colGroupDef = this.colGroupDef;\n if (!colGroupDef) {\n return;\n }\n return colGroupDef.columnGroupShow;\n };\n // need to check that this group has at least one col showing when both expanded and contracted.\n // if not, then we don't allow expanding and contracting on this group\n ProvidedColumnGroup.prototype.setupExpandable = function () {\n var _this = this;\n this.setExpandable();\n if (this.expandableListenerRemoveCallback) {\n this.expandableListenerRemoveCallback();\n }\n var listener = this.onColumnVisibilityChanged.bind(this);\n this.getLeafColumns().forEach(function (col) { return col.addEventListener('visibleChanged', listener); });\n this.expandableListenerRemoveCallback = function () {\n _this.getLeafColumns().forEach(function (col) { return col.removeEventListener('visibleChanged', listener); });\n _this.expandableListenerRemoveCallback = null;\n };\n };\n ProvidedColumnGroup.prototype.setExpandable = function () {\n if (this.isPadding()) {\n return;\n }\n // want to make sure the group doesn't disappear when it's open\n var atLeastOneShowingWhenOpen = false;\n // want to make sure the group doesn't disappear when it's closed\n var atLeastOneShowingWhenClosed = false;\n // want to make sure the group has something to show / hide\n var atLeastOneChangeable = false;\n var children = this.findChildrenRemovingPadding();\n for (var i = 0, j = children.length; i < j; i++) {\n var abstractColumn = children[i];\n if (!abstractColumn.isVisible()) {\n continue;\n }\n // if the abstractColumn is a grid generated group, there will be no colDef\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n if (headerGroupShow === 'open') {\n atLeastOneShowingWhenOpen = true;\n atLeastOneChangeable = true;\n }\n else if (headerGroupShow === 'closed') {\n atLeastOneShowingWhenClosed = true;\n atLeastOneChangeable = true;\n }\n else {\n atLeastOneShowingWhenOpen = true;\n atLeastOneShowingWhenClosed = true;\n }\n }\n var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n if (this.expandable !== expandable) {\n this.expandable = expandable;\n var event_1 = {\n type: ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED\n };\n this.localEventService.dispatchEvent(event_1);\n }\n };\n ProvidedColumnGroup.prototype.findChildrenRemovingPadding = function () {\n var res = [];\n var process = function (items) {\n items.forEach(function (item) {\n // if padding, we add this children instead of the padding\n var skipBecausePadding = item instanceof ProvidedColumnGroup && item.isPadding();\n if (skipBecausePadding) {\n process(item.children);\n }\n else {\n res.push(item);\n }\n });\n };\n process(this.children);\n return res;\n };\n ProvidedColumnGroup.prototype.onColumnVisibilityChanged = function () {\n this.setExpandable();\n };\n ProvidedColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n ProvidedColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n ProvidedColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';\n __decorate$2x([\n PreDestroy\n ], ProvidedColumnGroup.prototype, \"destroy\", null);\n return ProvidedColumnGroup;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DefaultColumnTypes = {\n numericColumn: {\n headerClass: 'ag-right-aligned-header',\n cellClass: 'ag-right-aligned-cell'\n },\n rightAligned: {\n headerClass: 'ag-right-aligned-header',\n cellClass: 'ag-right-aligned-cell'\n }\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction firstExistingValue() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (exists(value)) {\n return value;\n }\n }\n return null;\n}\nfunction existsAndNotEmpty(value) {\n return value != null && value.length > 0;\n}\nfunction last(arr) {\n if (!arr || !arr.length) {\n return;\n }\n return arr[arr.length - 1];\n}\nfunction areEqual(a, b, comparator) {\n if (a == null && b == null) {\n return true;\n }\n return a != null &&\n b != null &&\n a.length === b.length &&\n a.every(function (value, index) { return comparator ? comparator(value, b[index]) : b[index] === value; });\n}\n/** @deprecated */\nfunction shallowCompare(arr1, arr2) {\n return areEqual(arr1, arr2);\n}\nfunction sortNumerically(array) {\n return array.sort(function (a, b) { return a - b; });\n}\nfunction removeRepeatsFromArray(array, object) {\n if (!array) {\n return;\n }\n for (var index = array.length - 2; index >= 0; index--) {\n var thisOneMatches = array[index] === object;\n var nextOneMatches = array[index + 1] === object;\n if (thisOneMatches && nextOneMatches) {\n array.splice(index + 1, 1);\n }\n }\n}\nfunction removeFromArray(array, object) {\n var index = array.indexOf(object);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nfunction removeAllFromArray(array, toRemove) {\n toRemove.forEach(function (item) { return removeFromArray(array, item); });\n}\nfunction insertIntoArray(array, object, toIndex) {\n array.splice(toIndex, 0, object);\n}\nfunction insertArrayIntoArray(dest, src, toIndex) {\n if (dest == null || src == null) {\n return;\n }\n // put items in backwards, otherwise inserted items end up in reverse order\n for (var i = src.length - 1; i >= 0; i--) {\n var item = src[i];\n insertIntoArray(dest, item, toIndex);\n }\n}\nfunction moveInArray(array, objectsToMove, toIndex) {\n // first take out items from the array\n removeAllFromArray(array, objectsToMove);\n // now add the objects, in same order as provided to us, that means we start at the end\n // as the objects will be pushed to the right as they are inserted\n objectsToMove.slice().reverse().forEach(function (obj) { return insertIntoArray(array, obj, toIndex); });\n}\nfunction includes(array, value) {\n return array.indexOf(value) > -1;\n}\nfunction flatten(arrayOfArrays) {\n return [].concat.apply([], arrayOfArrays);\n}\nfunction pushAll(target, source) {\n if (source == null || target == null) {\n return;\n }\n source.forEach(function (value) { return target.push(value); });\n}\nfunction toStrings(array) {\n return array.map(toStringOrNull);\n}\nfunction forEachReverse(list, action) {\n if (list == null) {\n return;\n }\n for (var i = list.length - 1; i >= 0; i--) {\n action(list[i], i);\n }\n}\n\nvar ArrayUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n firstExistingValue: firstExistingValue,\n existsAndNotEmpty: existsAndNotEmpty,\n last: last,\n areEqual: areEqual,\n shallowCompare: shallowCompare,\n sortNumerically: sortNumerically,\n removeRepeatsFromArray: removeRepeatsFromArray,\n removeFromArray: removeFromArray,\n removeAllFromArray: removeAllFromArray,\n insertIntoArray: insertIntoArray,\n insertArrayIntoArray: insertArrayIntoArray,\n moveInArray: moveInArray,\n includes: includes,\n flatten: flatten,\n pushAll: pushAll,\n toStrings: toStrings,\n forEachReverse: forEachReverse\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';\nvar PASSIVE_EVENTS$1 = ['touchstart', 'touchend', 'touchmove', 'touchcancel', 'scroll'];\nvar supports = {};\n/**\n * a user once raised an issue - they said that when you opened a popup (eg context menu)\n * and then clicked on a selection checkbox, the popup wasn't closed. this is because the\n * popup listens for clicks on the body, however ag-grid WAS stopping propagation on the\n * checkbox clicks (so the rows didn't pick them up as row selection selection clicks).\n * to get around this, we have a pattern to stop propagation for the purposes of AG Grid,\n * but we still let the event pass back to the body.\n * @param {Event} event\n */\nfunction stopPropagationForAgGrid(event) {\n event[AG_GRID_STOP_PROPAGATION] = true;\n}\nfunction isStopPropagationForAgGrid(event) {\n return event[AG_GRID_STOP_PROPAGATION] === true;\n}\nvar isEventSupported = (function () {\n var tags = {\n select: 'input',\n change: 'input',\n submit: 'form',\n reset: 'form',\n error: 'img',\n load: 'img',\n abort: 'img'\n };\n var eventChecker = function (eventName) {\n if (typeof supports[eventName] === 'boolean') {\n return supports[eventName];\n }\n var el = document.createElement(tags[eventName] || 'div');\n eventName = 'on' + eventName;\n return supports[eventName] = (eventName in el);\n };\n return eventChecker;\n})();\nfunction getCtrlForEventTarget(gridOptionsService, eventTarget, type) {\n var sourceElement = eventTarget;\n while (sourceElement) {\n var renderedComp = gridOptionsService.getDomData(sourceElement, type);\n if (renderedComp) {\n return renderedComp;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n}\nfunction isElementInEventPath(element, event) {\n if (!event || !element) {\n return false;\n }\n return getEventPath(event).indexOf(element) >= 0;\n}\nfunction createEventPath(event) {\n var res = [];\n var pointer = event.target;\n while (pointer) {\n res.push(pointer);\n pointer = pointer.parentElement;\n }\n return res;\n}\n/**\n * Gets the path for a browser Event or from the target on an AG Grid Event\n * https://developer.mozilla.org/en-US/docs/Web/API/Event\n * @param {Event| { target: EventTarget }} event\n * @returns {EventTarget[]}\n */\nfunction getEventPath(event) {\n // This can be called with either a browser event or an AG Grid Event that has a target property.\n var eventNoType = event;\n if (eventNoType.path) {\n return eventNoType.path;\n }\n if (eventNoType.composedPath) {\n return eventNoType.composedPath();\n }\n // If this is an AG Grid event build the path ourselves\n return createEventPath(eventNoType);\n}\nfunction addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {\n var isPassive = includes(PASSIVE_EVENTS$1, event);\n var options = isPassive ? { passive: true } : undefined;\n // this check is here for certain scenarios where I believe the user must be destroying\n // the grid somehow but continuing for it to be used\n if (frameworkOverrides && frameworkOverrides.addEventListener) {\n frameworkOverrides.addEventListener(eElement, event, listener, options);\n }\n}\n\nvar EventUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n stopPropagationForAgGrid: stopPropagationForAgGrid,\n isStopPropagationForAgGrid: isStopPropagationForAgGrid,\n isEventSupported: isEventSupported,\n getCtrlForEventTarget: getCtrlForEventTarget,\n isElementInEventPath: isElementInEventPath,\n createEventPath: createEventPath,\n getEventPath: getEventPath,\n addSafePassiveEventListener: addSafePassiveEventListener\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BeanStub = /** @class */ (function () {\n function BeanStub() {\n var _this = this;\n this.destroyFunctions = [];\n this.destroyed = false;\n // for vue 3 - prevents Vue from trying to make this (and obviously any sub classes) from being reactive\n // prevents vue from creating proxies for created objects and prevents identity related issues\n this.__v_skip = true;\n this.isAlive = function () { return !_this.destroyed; };\n }\n // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n // points to a bean or component that was not properly disposed of.\n // constructor() {\n // setTimeout(()=> {\n // if (this.isAlive()) {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n // console.log('is alive ' + beanName);\n // }\n // }, 5000);\n // }\n // CellComp and GridComp and override this because they get the FrameworkOverrides from the Beans bean\n BeanStub.prototype.getFrameworkOverrides = function () {\n return this.frameworkOverrides;\n };\n BeanStub.prototype.getContext = function () {\n return this.context;\n };\n BeanStub.prototype.destroy = function () {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n this.destroyFunctions.forEach(function (func) { return func(); });\n this.destroyFunctions.length = 0;\n this.destroyed = true;\n this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });\n };\n BeanStub.prototype.addEventListener = function (eventType, listener) {\n if (!this.localEventService) {\n this.localEventService = new EventService();\n }\n this.localEventService.addEventListener(eventType, listener);\n };\n BeanStub.prototype.removeEventListener = function (eventType, listener) {\n if (this.localEventService) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n };\n BeanStub.prototype.dispatchEventAsync = function (event) {\n var _this = this;\n window.setTimeout(function () { return _this.dispatchEvent(event); }, 0);\n };\n BeanStub.prototype.dispatchEvent = function (event) {\n if (this.localEventService) {\n this.localEventService.dispatchEvent(event);\n }\n };\n BeanStub.prototype.addManagedListener = function (object, event, listener) {\n var _this = this;\n if (this.destroyed) {\n return;\n }\n if (object instanceof HTMLElement) {\n addSafePassiveEventListener(this.getFrameworkOverrides(), object, event, listener);\n }\n else {\n object.addEventListener(event, listener);\n }\n var destroyFunc = function () {\n object.removeEventListener(event, listener);\n _this.destroyFunctions = _this.destroyFunctions.filter(function (fn) { return fn !== destroyFunc; });\n return null;\n };\n this.destroyFunctions.push(destroyFunc);\n return destroyFunc;\n };\n BeanStub.prototype.addManagedPropertyListener = function (event, listener) {\n var _this = this;\n if (this.destroyed) {\n return;\n }\n this.gridOptionsService.addEventListener(event, listener);\n var destroyFunc = function () {\n _this.gridOptionsService.removeEventListener(event, listener);\n _this.destroyFunctions = _this.destroyFunctions.filter(function (fn) { return fn !== destroyFunc; });\n return null;\n };\n this.destroyFunctions.push(destroyFunc);\n return destroyFunc;\n };\n BeanStub.prototype.addDestroyFunc = function (func) {\n // if we are already destroyed, we execute the func now\n if (this.isAlive()) {\n this.destroyFunctions.push(func);\n }\n else {\n func();\n }\n };\n BeanStub.prototype.createManagedBean = function (bean, context) {\n var res = this.createBean(bean, context);\n this.addDestroyFunc(this.destroyBean.bind(this, bean, context));\n return res;\n };\n BeanStub.prototype.createBean = function (bean, context, afterPreCreateCallback) {\n return (context || this.getContext()).createBean(bean, afterPreCreateCallback);\n };\n BeanStub.prototype.destroyBean = function (bean, context) {\n return (context || this.getContext()).destroyBean(bean);\n };\n BeanStub.prototype.destroyBeans = function (beans, context) {\n var _this = this;\n if (beans) {\n beans.forEach(function (bean) { return _this.destroyBean(bean, context); });\n }\n return [];\n };\n BeanStub.EVENT_DESTROYED = 'destroyed';\n __decorate$2w([\n Autowired('frameworkOverrides')\n ], BeanStub.prototype, \"frameworkOverrides\", void 0);\n __decorate$2w([\n Autowired('context')\n ], BeanStub.prototype, \"context\", void 0);\n __decorate$2w([\n Autowired('eventService')\n ], BeanStub.prototype, \"eventService\", void 0);\n __decorate$2w([\n Autowired('gridOptionsService')\n ], BeanStub.prototype, \"gridOptionsService\", void 0);\n __decorate$2w([\n Autowired('localeService')\n ], BeanStub.prototype, \"localeService\", void 0);\n __decorate$2w([\n Autowired('environment')\n ], BeanStub.prototype, \"environment\", void 0);\n __decorate$2w([\n PreDestroy\n ], BeanStub.prototype, \"destroy\", null);\n return BeanStub;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2S = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$9 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\n// takes ColDefs and ColGroupDefs and turns them into Columns and OriginalGroups\nvar ColumnFactory = /** @class */ (function (_super) {\n __extends$2S(ColumnFactory, _super);\n function ColumnFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnFactory.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ColumnFactory');\n };\n ColumnFactory.prototype.createColumnTree = function (defs, primaryColumns, existingTree) {\n // column key creator dishes out unique column id's in a deterministic way,\n // so if we have two grids (that could be master/slave) with same column definitions,\n // then this ensures the two grids use identical id's.\n var columnKeyCreator = new ColumnKeyCreator();\n var _a = this.extractExistingTreeData(existingTree), existingCols = _a.existingCols, existingGroups = _a.existingGroups, existingColKeys = _a.existingColKeys;\n columnKeyCreator.addExistingKeys(existingColKeys);\n // create am unbalanced tree that maps the provided definitions\n var unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingCols, columnKeyCreator, existingGroups);\n var treeDept = this.findMaxDept(unbalancedTree, 0);\n this.logger.log('Number of levels for grouped columns is ' + treeDept);\n var columnTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n var deptFirstCallback = function (child, parent) {\n if (child instanceof ProvidedColumnGroup) {\n child.setupExpandable();\n }\n // we set the original parents at the end, rather than when we go along, as balancing the tree\n // adds extra levels into the tree. so we can only set parents when balancing is done.\n child.setOriginalParent(parent);\n };\n this.columnUtils.depthFirstOriginalTreeSearch(null, columnTree, deptFirstCallback);\n return {\n columnTree: columnTree,\n treeDept: treeDept\n };\n };\n ColumnFactory.prototype.extractExistingTreeData = function (existingTree) {\n var existingCols = [];\n var existingGroups = [];\n var existingColKeys = [];\n if (existingTree) {\n this.columnUtils.depthFirstOriginalTreeSearch(null, existingTree, function (item) {\n if (item instanceof ProvidedColumnGroup) {\n var group = item;\n existingGroups.push(group);\n }\n else {\n var col = item;\n existingColKeys.push(col.getId());\n existingCols.push(col);\n }\n });\n }\n return { existingCols: existingCols, existingGroups: existingGroups, existingColKeys: existingColKeys };\n };\n ColumnFactory.prototype.createForAutoGroups = function (autoGroupCols, gridBalancedTree) {\n var _this = this;\n return autoGroupCols.map(function (col) { return _this.createAutoGroupTreeItem(gridBalancedTree, col); });\n };\n ColumnFactory.prototype.createAutoGroupTreeItem = function (balancedColumnTree, column) {\n var dept = this.findDepth(balancedColumnTree);\n // at the end, this will be the top of the tree item.\n var nextChild = column;\n for (var i = dept - 1; i >= 0; i--) {\n var autoGroup = new ProvidedColumnGroup(null, \"FAKE_PATH_\" + column.getId() + \"}_\" + i, true, i);\n this.createBean(autoGroup);\n autoGroup.setChildren([nextChild]);\n nextChild.setOriginalParent(autoGroup);\n nextChild = autoGroup;\n }\n // at this point, the nextChild is the top most item in the tree\n return nextChild;\n };\n ColumnFactory.prototype.findDepth = function (balancedColumnTree) {\n var dept = 0;\n var pointer = balancedColumnTree;\n while (pointer && pointer[0] && pointer[0] instanceof ProvidedColumnGroup) {\n dept++;\n pointer = pointer[0].getChildren();\n }\n return dept;\n };\n ColumnFactory.prototype.balanceColumnTree = function (unbalancedTree, currentDept, columnDept, columnKeyCreator) {\n var result = [];\n // go through each child, for groups, recurse a level deeper,\n // for columns we need to pad\n for (var i = 0; i < unbalancedTree.length; i++) {\n var child = unbalancedTree[i];\n if (child instanceof ProvidedColumnGroup) {\n // child is a group, all we do is go to the next level of recursion\n var originalGroup = child;\n var newChildren = this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);\n originalGroup.setChildren(newChildren);\n result.push(originalGroup);\n }\n else {\n // child is a column - so here we add in the padded column groups if needed\n var firstPaddedGroup = void 0;\n var currentPaddedGroup = void 0;\n // this for loop will NOT run any loops if no padded column groups are needed\n for (var j = columnDept - 1; j >= currentDept; j--) {\n var newColId = columnKeyCreator.getUniqueKey(null, null);\n var colGroupDefMerged = this.createMergedColGroupDef(null);\n var paddedGroup = new ProvidedColumnGroup(colGroupDefMerged, newColId, true, currentDept);\n this.createBean(paddedGroup);\n if (currentPaddedGroup) {\n currentPaddedGroup.setChildren([paddedGroup]);\n }\n currentPaddedGroup = paddedGroup;\n if (!firstPaddedGroup) {\n firstPaddedGroup = currentPaddedGroup;\n }\n }\n // likewise this if statement will not run if no padded groups\n if (firstPaddedGroup && currentPaddedGroup) {\n result.push(firstPaddedGroup);\n var hasGroups = unbalancedTree.some(function (leaf) { return leaf instanceof ProvidedColumnGroup; });\n if (hasGroups) {\n currentPaddedGroup.setChildren([child]);\n continue;\n }\n else {\n currentPaddedGroup.setChildren(unbalancedTree);\n break;\n }\n }\n result.push(child);\n }\n }\n return result;\n };\n ColumnFactory.prototype.findMaxDept = function (treeChildren, dept) {\n var maxDeptThisLevel = dept;\n for (var i = 0; i < treeChildren.length; i++) {\n var abstractColumn = treeChildren[i];\n if (abstractColumn instanceof ProvidedColumnGroup) {\n var originalGroup = abstractColumn;\n var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);\n if (maxDeptThisLevel < newDept) {\n maxDeptThisLevel = newDept;\n }\n }\n }\n return maxDeptThisLevel;\n };\n ColumnFactory.prototype.recursivelyCreateColumns = function (defs, level, primaryColumns, existingColsCopy, columnKeyCreator, existingGroups) {\n var _this = this;\n return (defs || []).map(function (def) {\n if (_this.isColumnGroup(def)) {\n return _this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, existingGroups);\n }\n else {\n return _this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator);\n }\n });\n };\n ColumnFactory.prototype.createColumnGroup = function (primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, existingGroups) {\n var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);\n var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId || null, null);\n var providedGroup = new ProvidedColumnGroup(colGroupDefMerged, groupId, false, level);\n this.createBean(providedGroup);\n var existingGroup = this.findExistingGroup(colGroupDef, existingGroups);\n // make sure we remove, so if user provided duplicate id, then we don't have more than\n // one column instance for colDef with common id\n if (existingGroup) {\n removeFromArray(existingGroups, existingGroup);\n }\n if (existingGroup && existingGroup.isExpanded()) {\n providedGroup.setExpanded(true);\n }\n var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, existingGroups);\n providedGroup.setChildren(children);\n return providedGroup;\n };\n ColumnFactory.prototype.createMergedColGroupDef = function (colGroupDef) {\n var colGroupDefMerged = {};\n Object.assign(colGroupDefMerged, this.gridOptionsService.get('defaultColGroupDef'));\n Object.assign(colGroupDefMerged, colGroupDef);\n return colGroupDefMerged;\n };\n ColumnFactory.prototype.createColumn = function (primaryColumns, colDef, existingColsCopy, columnKeyCreator) {\n var colDefMerged = this.mergeColDefs(colDef);\n // see if column already exists\n var column = this.findExistingColumn(colDef, existingColsCopy);\n // make sure we remove, so if user provided duplicate id, then we don't have more than\n // one column instance for colDef with common id\n if (existingColsCopy && column) {\n removeFromArray(existingColsCopy, column);\n }\n if (!column) {\n // no existing column, need to create one\n var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);\n column = new Column(colDefMerged, colDef, colId, primaryColumns);\n this.context.createBean(column);\n }\n else {\n column.setColDef(colDefMerged, colDef);\n this.applyColumnState(column, colDefMerged);\n }\n return column;\n };\n ColumnFactory.prototype.applyColumnState = function (column, colDef) {\n // flex\n var flex = attrToNumber(colDef.flex);\n if (flex !== undefined) {\n column.setFlex(flex);\n }\n // width - we only set width if column is not flexing\n var noFlexThisCol = column.getFlex() <= 0;\n if (noFlexThisCol) {\n // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)\n var width = attrToNumber(colDef.width);\n if (width != null) {\n column.setActualWidth(width);\n }\n else {\n // otherwise set the width again, in case min or max width has changed,\n // and width needs to be adjusted.\n var widthBeforeUpdate = column.getActualWidth();\n column.setActualWidth(widthBeforeUpdate);\n }\n }\n // sort - anything but undefined will set sort, thus null or empty string will clear the sort\n if (colDef.sort !== undefined) {\n if (colDef.sort == 'asc' || colDef.sort == 'desc') {\n column.setSort(colDef.sort);\n }\n else {\n column.setSort(undefined);\n }\n }\n // sorted at - anything but undefined, thus null will clear the sortIndex\n var sortIndex = attrToNumber(colDef.sortIndex);\n if (sortIndex !== undefined) {\n column.setSortIndex(sortIndex);\n }\n // hide - anything but undefined, thus null will clear the hide\n var hide = attrToBoolean(colDef.hide);\n if (hide !== undefined) {\n column.setVisible(!hide);\n }\n // pinned - anything but undefined, thus null or empty string will remove pinned\n if (colDef.pinned !== undefined) {\n column.setPinned(colDef.pinned);\n }\n };\n ColumnFactory.prototype.findExistingColumn = function (newColDef, existingColsCopy) {\n return (existingColsCopy || []).find(function (existingCol) {\n var existingColDef = existingCol.getUserProvidedColDef();\n if (!existingColDef) {\n return false;\n }\n var newHasId = newColDef.colId != null;\n var newHasField = newColDef.field != null;\n if (newHasId) {\n return existingCol.getId() === newColDef.colId;\n }\n if (newHasField) {\n return existingColDef.field === newColDef.field;\n }\n // if no id or field present, then try object equivalence.\n if (existingColDef === newColDef) {\n return true;\n }\n return false;\n });\n };\n ColumnFactory.prototype.findExistingGroup = function (newGroupDef, existingGroups) {\n return existingGroups.find(function (existingGroup) {\n var existingDef = existingGroup.getColGroupDef();\n if (!existingDef) {\n return false;\n }\n var newHasId = newGroupDef.groupId != null;\n if (newHasId) {\n return existingGroup.getId() === newGroupDef.groupId;\n }\n return false;\n });\n };\n ColumnFactory.prototype.mergeColDefs = function (colDef) {\n // start with empty merged definition\n var colDefMerged = {};\n // merge properties from default column definitions\n var defaultColDef = this.gridOptionsService.get('defaultColDef');\n mergeDeep(colDefMerged, defaultColDef, false, true);\n // merge properties from column type properties\n var columnType = colDef.type;\n if (!columnType) {\n columnType = defaultColDef && defaultColDef.type;\n }\n // if type of both colDef and defaultColDef, then colDef gets preference\n if (columnType) {\n this.assignColumnTypes(columnType, colDefMerged);\n }\n // merge properties from column definitions\n mergeDeep(colDefMerged, colDef, false, true);\n var autoGroupColDef = this.gridOptionsService.get('autoGroupColumnDef');\n var isSortingCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n if (colDef.rowGroup && autoGroupColDef && isSortingCoupled) {\n // override the sort for row group columns where the autoGroupColDef defines these values.\n mergeDeep(colDefMerged, { sort: autoGroupColDef.sort, initialSort: autoGroupColDef.initialSort }, false, true);\n }\n return colDefMerged;\n };\n ColumnFactory.prototype.assignColumnTypes = function (type, colDefMerged) {\n var typeKeys = [];\n if (type instanceof Array) {\n var invalidArray = type.some(function (a) { return typeof a !== 'string'; });\n if (invalidArray) {\n console.warn(\"AG Grid: if colDef.type is supplied an array it should be of type 'string[]'\");\n }\n else {\n typeKeys = type;\n }\n }\n else if (typeof type === 'string') {\n typeKeys = type.split(',');\n }\n else {\n console.warn(\"AG Grid: colDef.type should be of type 'string' | 'string[]'\");\n return;\n }\n // merge user defined with default column types\n var allColumnTypes = Object.assign({}, DefaultColumnTypes);\n var userTypes = this.gridOptionsService.get('columnTypes') || {};\n iterateObject(userTypes, function (key, value) {\n if (key in allColumnTypes) {\n console.warn(\"AG Grid: the column type '\" + key + \"' is a default column type and cannot be overridden.\");\n }\n else {\n allColumnTypes[key] = value;\n }\n });\n typeKeys.forEach(function (t) {\n var typeColDef = allColumnTypes[t.trim()];\n if (typeColDef) {\n mergeDeep(colDefMerged, typeColDef, false, true);\n }\n else {\n console.warn(\"AG Grid: colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\");\n }\n });\n };\n // if object has children, we assume it's a group\n ColumnFactory.prototype.isColumnGroup = function (abstractColDef) {\n return abstractColDef.children !== undefined;\n };\n __decorate$2v([\n Autowired('columnUtils')\n ], ColumnFactory.prototype, \"columnUtils\", void 0);\n __decorate$2v([\n __param$9(0, Qualifier('loggerFactory'))\n ], ColumnFactory.prototype, \"setBeans\", null);\n ColumnFactory = __decorate$2v([\n Bean('columnFactory')\n ], ColumnFactory);\n return ColumnFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ColDefUtil = /** @class */ (function () {\n function ColDefUtil() {\n }\n ColDefUtil.ColDefPropertyMap = {\n headerName: undefined,\n columnGroupShow: undefined,\n headerClass: undefined,\n toolPanelClass: undefined,\n headerValueGetter: undefined,\n pivotKeys: undefined,\n groupId: undefined,\n colId: undefined,\n sort: undefined,\n initialSort: undefined,\n field: undefined,\n type: undefined,\n tooltipComponent: undefined,\n tooltipField: undefined,\n headerTooltip: undefined,\n cellClass: undefined,\n showRowGroup: undefined,\n filter: undefined,\n initialAggFunc: undefined,\n defaultAggFunc: undefined,\n aggFunc: undefined,\n pinned: undefined,\n initialPinned: undefined,\n chartDataType: undefined,\n cellEditorPopupPosition: undefined,\n headerGroupComponent: undefined,\n headerGroupComponentFramework: undefined,\n headerGroupComponentParams: undefined,\n cellStyle: undefined,\n cellRenderer: undefined,\n cellRendererParams: undefined,\n cellRendererFramework: undefined,\n cellEditor: undefined,\n cellEditorFramework: undefined,\n cellEditorParams: undefined,\n filterFramework: undefined,\n filterParams: undefined,\n pivotValueColumn: undefined,\n headerComponent: undefined,\n headerComponentFramework: undefined,\n headerComponentParams: undefined,\n floatingFilterComponent: undefined,\n floatingFilterComponentParams: undefined,\n floatingFilterComponentFramework: undefined,\n tooltipComponentParams: undefined,\n tooltipComponentFramework: undefined,\n refData: undefined,\n columnsMenuParams: undefined,\n children: undefined,\n sortingOrder: undefined,\n allowedAggFuncs: undefined,\n menuTabs: undefined,\n pivotTotalColumnIds: undefined,\n cellClassRules: undefined,\n icons: undefined,\n sortIndex: undefined,\n initialSortIndex: undefined,\n flex: undefined,\n initialFlex: undefined,\n width: undefined,\n initialWidth: undefined,\n minWidth: undefined,\n maxWidth: undefined,\n rowGroupIndex: undefined,\n initialRowGroupIndex: undefined,\n pivotIndex: undefined,\n initialPivotIndex: undefined,\n suppressCellFlash: undefined,\n suppressColumnsToolPanel: undefined,\n suppressFiltersToolPanel: undefined,\n openByDefault: undefined,\n marryChildren: undefined,\n stickyLabel: undefined,\n hide: undefined,\n initialHide: undefined,\n rowGroup: undefined,\n initialRowGroup: undefined,\n pivot: undefined,\n initialPivot: undefined,\n checkboxSelection: undefined,\n showDisabledCheckboxes: undefined,\n headerCheckboxSelection: undefined,\n headerCheckboxSelectionFilteredOnly: undefined,\n headerCheckboxSelectionCurrentPageOnly: undefined,\n suppressMenu: undefined,\n suppressMovable: undefined,\n lockPosition: undefined,\n lockVisible: undefined,\n lockPinned: undefined,\n unSortIcon: undefined,\n suppressSizeToFit: undefined,\n suppressAutoSize: undefined,\n enableRowGroup: undefined,\n enablePivot: undefined,\n enableValue: undefined,\n editable: undefined,\n suppressPaste: undefined,\n suppressNavigable: undefined,\n enableCellChangeFlash: undefined,\n rowDrag: undefined,\n dndSource: undefined,\n autoHeight: undefined,\n wrapText: undefined,\n sortable: undefined,\n resizable: undefined,\n singleClickEdit: undefined,\n floatingFilter: undefined,\n cellEditorPopup: undefined,\n suppressFillHandle: undefined,\n wrapHeaderText: undefined,\n autoHeaderHeight: undefined,\n dndSourceOnRowDrag: undefined,\n valueGetter: undefined,\n valueSetter: undefined,\n filterValueGetter: undefined,\n keyCreator: undefined,\n valueFormatter: undefined,\n valueParser: undefined,\n comparator: undefined,\n equals: undefined,\n pivotComparator: undefined,\n suppressKeyboardEvent: undefined,\n suppressHeaderKeyboardEvent: undefined,\n colSpan: undefined,\n rowSpan: undefined,\n getQuickFilterText: undefined,\n onCellValueChanged: undefined,\n onCellClicked: undefined,\n onCellDoubleClicked: undefined,\n onCellContextMenu: undefined,\n rowDragText: undefined,\n tooltipValueGetter: undefined,\n cellRendererSelector: undefined,\n cellEditorSelector: undefined,\n spanHeaderHeight: undefined\n };\n ColDefUtil.ALL_PROPERTIES = Object.keys(ColDefUtil.ColDefPropertyMap);\n // used when doing property checks - this causes noise when using frameworks which can add their own fw specific\n // properties to colDefs, gridOptions etc\n ColDefUtil.FRAMEWORK_PROPERTIES = [\n '__ob__',\n '__v_skip',\n '__metadata__',\n 'mappedColumnProperties',\n 'hasChildColumns',\n 'toColDef',\n 'createColDefFromGridColumn'\n ];\n return ColDefUtil;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar Events = /** @class */ (function () {\n function Events() {\n }\n /** Everything has changed with the columns. Either complete new set of columns set, or user called applyColumnState() */\n /** @deprecated - grid no longer uses this, and setSate() also fires individual events */\n Events.EVENT_COLUMN_EVERYTHING_CHANGED = 'columnEverythingChanged';\n /** User has set in new columns. */\n Events.EVENT_NEW_COLUMNS_LOADED = 'newColumnsLoaded';\n /** The pivot mode flag was changed */\n Events.EVENT_COLUMN_PIVOT_MODE_CHANGED = 'columnPivotModeChanged';\n /** A row group column was added, removed or order changed. */\n Events.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n /** expandAll / collapseAll was called from the api. */\n Events.EVENT_EXPAND_COLLAPSE_ALL = 'expandOrCollapseAll';\n /** A pivot column was added, removed or order changed. */\n Events.EVENT_COLUMN_PIVOT_CHANGED = 'columnPivotChanged';\n /** The list of grid columns has changed. */\n Events.EVENT_GRID_COLUMNS_CHANGED = 'gridColumnsChanged';\n /** A value column was added, removed or agg function was changed. */\n Events.EVENT_COLUMN_VALUE_CHANGED = 'columnValueChanged';\n /** A column was moved */\n Events.EVENT_COLUMN_MOVED = 'columnMoved';\n /** One or more columns was shown / hidden */\n Events.EVENT_COLUMN_VISIBLE = 'columnVisible';\n /** One or more columns was pinned / unpinned*/\n Events.EVENT_COLUMN_PINNED = 'columnPinned';\n /** A column group was opened / closed */\n Events.EVENT_COLUMN_GROUP_OPENED = 'columnGroupOpened';\n /** One or more columns was resized. If just one, the column in the event is set. */\n Events.EVENT_COLUMN_RESIZED = 'columnResized';\n /** The list of displayed columns has changed, can result from columns open / close, column move, pivot, group, etc */\n Events.EVENT_DISPLAYED_COLUMNS_CHANGED = 'displayedColumnsChanged';\n /** The list of virtual columns has changed, results from viewport changing */\n Events.EVENT_VIRTUAL_COLUMNS_CHANGED = 'virtualColumnsChanged';\n /** Async Transactions Executed */\n Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED = 'asyncTransactionsFlushed';\n /** A row group was opened / closed */\n Events.EVENT_ROW_GROUP_OPENED = 'rowGroupOpened';\n /** @deprecated v28 use EVENT_ROW_DATA_UPDATED instead */\n Events.EVENT_ROW_DATA_CHANGED = 'rowDataChanged';\n /** The client has updated data for the grid */\n Events.EVENT_ROW_DATA_UPDATED = 'rowDataUpdated';\n /** The client has set new floating data into the grid */\n Events.EVENT_PINNED_ROW_DATA_CHANGED = 'pinnedRowDataChanged';\n /** Range selection has changed */\n Events.EVENT_RANGE_SELECTION_CHANGED = 'rangeSelectionChanged';\n /** Chart was created */\n Events.EVENT_CHART_CREATED = 'chartCreated';\n /** Chart Range selection has changed */\n Events.EVENT_CHART_RANGE_SELECTION_CHANGED = 'chartRangeSelectionChanged';\n /** Chart Options have changed */\n Events.EVENT_CHART_OPTIONS_CHANGED = 'chartOptionsChanged';\n /** Chart was destroyed */\n Events.EVENT_CHART_DESTROYED = 'chartDestroyed';\n /** For when the tool panel is shown / hidden */\n Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED = 'toolPanelVisibleChanged';\n Events.EVENT_TOOL_PANEL_SIZE_CHANGED = 'toolPanelSizeChanged';\n /**\n * This is a replacement event for EVENT_TOOL_PANEL_VISIBLE_CHANGED. In v30, the original event interface will be dropped\n * and replaced with the new event (but using the old event type and interface name)\n */\n Events.EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED = 'internalToolPanelVisibleChanged';\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START = 'columnPanelItemDragStart';\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END = 'columnPanelItemDragEnd';\n /** Model was updated - grid updates the drawn rows when this happens */\n Events.EVENT_MODEL_UPDATED = 'modelUpdated';\n Events.EVENT_PASTE_START = 'pasteStart';\n Events.EVENT_PASTE_END = 'pasteEnd';\n Events.EVENT_FILL_START = 'fillStart';\n Events.EVENT_FILL_END = 'fillEnd';\n /** Undo operation has started. */\n Events.EVENT_UNDO_STARTED = 'undoStarted';\n /** Undo operation has ended. */\n Events.EVENT_UNDO_ENDED = 'undoEnded';\n /** Redo operation has started. */\n Events.EVENT_REDO_STARTED = 'redoStarted';\n /** Redo operation has ended. */\n Events.EVENT_REDO_ENDED = 'redoEnded';\n Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START = 'keyShortcutChangedCellStart';\n Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END = 'keyShortcutChangedCellEnd';\n Events.EVENT_CELL_CLICKED = 'cellClicked';\n Events.EVENT_CELL_DOUBLE_CLICKED = 'cellDoubleClicked';\n Events.EVENT_CELL_MOUSE_DOWN = 'cellMouseDown';\n Events.EVENT_CELL_CONTEXT_MENU = 'cellContextMenu';\n Events.EVENT_CELL_VALUE_CHANGED = 'cellValueChanged';\n Events.EVENT_CELL_EDIT_REQUEST = 'cellEditRequest';\n Events.EVENT_ROW_VALUE_CHANGED = 'rowValueChanged';\n Events.EVENT_CELL_FOCUSED = 'cellFocused';\n Events.EVENT_CELL_FOCUS_CLEARED = 'cellFocusCleared';\n Events.EVENT_FULL_WIDTH_ROW_FOCUSED = 'fullWidthRowFocused';\n Events.EVENT_ROW_SELECTED = 'rowSelected';\n Events.EVENT_SELECTION_CHANGED = 'selectionChanged';\n Events.EVENT_CELL_KEY_DOWN = 'cellKeyDown';\n Events.EVENT_CELL_KEY_PRESS = 'cellKeyPress';\n Events.EVENT_CELL_MOUSE_OVER = 'cellMouseOver';\n Events.EVENT_CELL_MOUSE_OUT = 'cellMouseOut';\n /** 2 events for filtering. The grid LISTENS for filterChanged and afterFilterChanged */\n Events.EVENT_FILTER_CHANGED = 'filterChanged';\n /** Filter was change but not applied. Only useful if apply buttons are used in filters. */\n Events.EVENT_FILTER_MODIFIED = 'filterModified';\n Events.EVENT_FILTER_OPENED = 'filterOpened';\n Events.EVENT_SORT_CHANGED = 'sortChanged';\n /** A row was removed from the dom, for any reason. Use to clean up resources (if any) used by the row. */\n Events.EVENT_VIRTUAL_ROW_REMOVED = 'virtualRowRemoved';\n Events.EVENT_ROW_CLICKED = 'rowClicked';\n Events.EVENT_ROW_DOUBLE_CLICKED = 'rowDoubleClicked';\n /** Gets called once after the grid has finished initialising. */\n Events.EVENT_GRID_READY = 'gridReady';\n /** Width of height of the main grid div has changed. Grid listens for this and does layout of grid if it's\n * changed, so always filling the space it was given. */\n Events.EVENT_GRID_SIZE_CHANGED = 'gridSizeChanged';\n /** The indexes of the rows rendered has changed, eg user has scrolled to a new vertical position. */\n Events.EVENT_VIEWPORT_CHANGED = 'viewportChanged';\n /* The width of the scrollbar has been calculated */\n Events.EVENT_SCROLLBAR_WIDTH_CHANGED = 'scrollbarWidthChanged';\n /** Rows were rendered for the first time (ie on async data load). */\n Events.EVENT_FIRST_DATA_RENDERED = 'firstDataRendered';\n /** A column drag has started, either resizing a column or moving a column. */\n Events.EVENT_DRAG_STARTED = 'dragStarted';\n /** A column drag has stopped */\n Events.EVENT_DRAG_STOPPED = 'dragStopped';\n Events.EVENT_CHECKBOX_CHANGED = 'checkboxChanged';\n Events.EVENT_ROW_EDITING_STARTED = 'rowEditingStarted';\n Events.EVENT_ROW_EDITING_STOPPED = 'rowEditingStopped';\n Events.EVENT_CELL_EDITING_STARTED = 'cellEditingStarted';\n Events.EVENT_CELL_EDITING_STOPPED = 'cellEditingStopped';\n /** Main body of grid has scrolled, either horizontally or vertically */\n Events.EVENT_BODY_SCROLL = 'bodyScroll';\n /** Main body of the grid has stopped scrolling, either horizontally or vertically */\n Events.EVENT_BODY_SCROLL_END = 'bodyScrollEnd';\n Events.EVENT_HEIGHT_SCALE_CHANGED = 'heightScaleChanged';\n /** The displayed page for pagination has changed. For example the data was filtered or sorted,\n * or the user has moved to a different page. */\n Events.EVENT_PAGINATION_CHANGED = 'paginationChanged';\n /** Only used by React, Angular, Web Components and VueJS AG Grid components\n * (not used if doing plain JavaScript). If the grid receives changes due\n * to bound properties, this event fires after the grid has finished processing the change. */\n Events.EVENT_COMPONENT_STATE_CHANGED = 'componentStateChanged';\n /** Only used by the SSRM, called when the grid has no more rows to refresh */\n Events.EVENT_STORE_REFRESHED = 'storeRefreshed';\n /***************************** INTERNAL EVENTS: START ******************************************* */\n /** Please remember to add to ComponentUtil.EXCLUDED_INTERNAL_EVENTS to not have these events exposed to framework components. */\n /** All items from here down are used internally by the grid, not intended for external use. */\n // not documented, either experimental, or we just don't want users using an depending on them\n Events.EVENT_BODY_HEIGHT_CHANGED = 'bodyHeightChanged';\n Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = 'displayedColumnsWidthChanged';\n Events.EVENT_SCROLL_VISIBILITY_CHANGED = 'scrollVisibilityChanged';\n Events.EVENT_COLUMN_HOVER_CHANGED = 'columnHoverChanged';\n Events.EVENT_FLASH_CELLS = 'flashCells';\n Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED = 'paginationPixelOffsetChanged';\n Events.EVENT_DISPLAYED_ROWS_CHANGED = 'displayedRowsChanged';\n Events.EVENT_LEFT_PINNED_WIDTH_CHANGED = 'leftPinnedWidthChanged';\n Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED = 'rightPinnedWidthChanged';\n Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED = 'rowContainerHeightChanged';\n Events.EVENT_HEADER_HEIGHT_CHANGED = 'headerHeightChanged';\n Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED = 'columnHeaderHeightChanged';\n Events.EVENT_ROW_DRAG_ENTER = 'rowDragEnter';\n Events.EVENT_ROW_DRAG_MOVE = 'rowDragMove';\n Events.EVENT_ROW_DRAG_LEAVE = 'rowDragLeave';\n Events.EVENT_ROW_DRAG_END = 'rowDragEnd';\n // environment\n Events.EVENT_GRID_STYLES_CHANGED = 'gridStylesChanged';\n // primarily for charts\n Events.EVENT_POPUP_TO_FRONT = 'popupToFront';\n // these are used for server side group and agg - only used by CS with Viewport Row Model - intention is\n // to design these better around server side functions and then release to general public when fully working with\n // all the row models.\n Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = 'columnRowGroupChangeRequest';\n Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = 'columnPivotChangeRequest';\n Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST = 'columnValueChangeRequest';\n Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = 'columnAggFuncChangeRequest';\n Events.EVENT_KEYBOARD_FOCUS = 'keyboardFocus';\n Events.EVENT_MOUSE_FOCUS = 'mouseFocus';\n Events.EVENT_STORE_UPDATED = 'storeUpdated';\n Events.EVENT_FILTER_DESTROYED = 'filterDestroyed';\n return Events;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$t = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$n = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$t(arguments[i]));\n return ar;\n};\n/**\n * These keys are used for validating properties supplied on a gridOptions object, and for code generation.\n * If you change the properties on the gridOptions interface, you *must* update this file as well to be consistent.\n */\nvar PropertyKeys = /** @class */ (function () {\n function PropertyKeys() {\n }\n PropertyKeys.STRING_PROPERTIES = [\n 'rowSelection', 'overlayLoadingTemplate', 'overlayNoRowsTemplate',\n 'quickFilterText', 'rowModelType', 'editType', 'domLayout', 'clipboardDelimiter', 'rowGroupPanelShow',\n 'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow', 'fillHandleDirection',\n 'serverSideStoreType', 'groupDisplayType', 'treeDataDisplayType', 'colResizeDefault'\n ];\n PropertyKeys.OBJECT_PROPERTIES = [\n 'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'localeText', 'icons',\n 'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs', 'fullWidthCellRendererParams',\n 'defaultColGroupDef', 'defaultColDef', 'defaultCsvExportParams', 'defaultExcelExportParams', 'columnTypes',\n 'rowClassRules', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',\n 'noRowsOverlayComponentParams', 'popupParent', 'statusBar', 'sideBar', 'chartThemeOverrides',\n 'customChartThemes', 'chartToolPanelsDef'\n ];\n PropertyKeys.ARRAY_PROPERTIES = [\n 'sortingOrder', 'alignedGrids', 'rowData', 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData', 'chartThemes', 'rowClass'\n ];\n PropertyKeys.NUMBER_PROPERTIES = [\n 'rowHeight', 'detailRowHeight', 'rowBuffer', 'headerHeight', 'groupHeaderHeight', 'floatingFiltersHeight',\n 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded', 'viewportRowModelPageSize',\n 'viewportRowModelBufferSize', 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests', 'tooltipShowDelay',\n 'tooltipHideDelay', 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount', 'serverSideInitialRowCount', 'scrollbarWidth',\n 'asyncTransactionWaitMillis', 'blockLoadDebounceMillis', 'keepDetailRowsCount',\n 'undoRedoCellEditingLimit', 'cellFlashDelay', 'cellFadeDelay', 'tabIndex'\n ];\n PropertyKeys.BOOLEAN_PROPERTIES = [\n 'suppressMakeColumnVisibleAfterUnGroup', 'suppressRowClickSelection', 'suppressCellSelection', 'suppressCellFocus', 'suppressHorizontalScroll',\n 'alwaysShowHorizontalScroll', 'alwaysShowVerticalScroll', 'debug', 'enableBrowserTooltips', 'enableCellExpressions', 'groupSelectsChildren',\n 'groupIncludeFooter', 'groupIncludeTotalFooter', 'groupSuppressBlankHeader', 'suppressMenuHide', 'suppressRowDeselection', 'unSortIcon',\n 'suppressMultiSort', 'alwaysMultiSort', 'singleClickEdit', 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize',\n 'skipHeaderOnAutoSize', 'suppressParentsInRowNodes', 'suppressColumnMoveAnimation', 'suppressMovableColumns', 'suppressFieldDotNotation',\n 'enableRangeSelection', 'enableRangeHandle', 'enableFillHandle', 'suppressClearOnFillReduction', 'deltaSort', 'suppressTouch', 'suppressAsyncEvents',\n 'allowContextMenuWithControlKey', 'suppressContextMenu', 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns',\n 'suppressRowGroupHidesColumns', 'suppressMiddleClickScrolls', 'suppressPreventDefaultOnMouseWheel', 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard',\n 'copyGroupHeadersToClipboard', 'pivotMode', 'suppressAggFuncInHeader', 'suppressColumnVirtualisation', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh',\n 'functionsPassive', 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren', 'groupRemoveLowestSingleChildren', 'enableRtl',\n 'suppressClickEdit', 'rowDragEntireRow', 'rowDragManaged', 'suppressRowDrag', 'suppressMoveWhenRowDragging', 'rowDragMultiRow', 'enableGroupEdit',\n 'embedFullWidthRows', 'suppressPaginationPanel', 'groupHideOpenParents', 'groupAllowUnbalanced', 'pagination', 'paginationAutoPageSize', 'suppressScrollOnNewData',\n 'suppressScrollWhenPopupsAreOpen', 'purgeClosedRowNodes', 'cacheQuickFilter', 'excludeHiddenColumnsFromQuickFilter', 'ensureDomOrder', 'accentedSort', 'suppressChangeDetection',\n 'valueCache', 'valueCacheNeverExpires', 'aggregateOnlyChangedColumns', 'suppressAnimationFrame', 'suppressExcelExport', 'suppressCsvExport', 'treeData', 'masterDetail',\n 'suppressMultiRangeSelection', 'enterMovesDownAfterEdit', 'enterMovesDown', 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick', 'suppressRowHoverHighlight',\n 'suppressRowTransform', 'suppressClipboardPaste', 'suppressLastEmptyLineOnPaste', 'enableCharts', 'enableChartToolPanelsButton', 'suppressChartToolPanelsButton',\n 'suppressMaintainUnsortedOrder', 'enableCellTextSelection', 'suppressBrowserResizeObserver', 'suppressMaxRenderedRowRestriction', 'excludeChildrenWhenTreeDataFiltering',\n 'tooltipMouseTrack', 'keepDetailRows', 'paginateChildRows', 'preventDefaultOnContextMenu', 'undoRedoCellEditing', 'allowDragFromColumnsToolPanel', 'immutableData',\n 'pivotSuppressAutoColumn', 'suppressExpandablePivotGroups', 'debounceVerticalScrollbar', 'detailRowAutoHeight', 'serverSideFilteringAlwaysResets',\n 'serverSideSortingAlwaysResets', 'serverSideSortAllLevels', 'serverSideFilterAllLevels', 'serverSideSortOnServer', 'serverSideFilterOnServer', 'suppressAggFilteredOnly',\n 'showOpenedGroup', 'suppressClipboardApi', 'suppressModelUpdateAfterUpdateTransaction', 'stopEditingWhenCellsLoseFocus', 'maintainColumnOrder', 'groupMaintainOrder',\n 'columnHoverHighlight', 'reactUi', 'suppressReactUi', 'readOnlyEdit', 'suppressRowVirtualisation', 'enableCellEditingOnBackspace', 'resetRowDataOnUpdate',\n 'removePivotHeaderRowWhenSingleValueColumn', 'suppressCopySingleCellRanges', 'groupRowsSticky', 'suppressServerSideInfiniteScroll', 'rowGroupPanelSuppressSort',\n 'allowShowChangeAfterFilter', 'suppressCutToClipboard'\n ];\n /** You do not need to include event callbacks in this list, as they are generated automatically. */\n PropertyKeys.FUNCTIONAL_PROPERTIES = [\n 'localeTextFunc', 'doesExternalFilterPass', 'groupRowAggNodes', 'isFullWidthCell', 'processSecondaryColDef', 'processSecondaryColGroupDef', 'processPivotResultColDef',\n 'processPivotResultColGroupDef', 'getBusinessKeyForNode', 'isRowSelectable', 'postSort', 'defaultGroupOrderComparator', 'rowDragText',\n 'groupRowRenderer', 'groupRowRendererFramework', 'fullWidthCellRenderer', 'fullWidthCellRendererFramework',\n 'loadingCellRenderer', 'loadingCellRendererFramework', 'loadingOverlayComponent', 'loadingOverlayComponentFramework', 'noRowsOverlayComponent', 'noRowsOverlayComponentFramework',\n 'detailCellRenderer', 'detailCellRendererFramework'\n ];\n PropertyKeys.CALLBACK_PROPERTIES = [\n 'getLocaleText', 'isExternalFilterPresent', 'getRowHeight', 'getRowClass', 'getRowStyle', 'getContextMenuItems', 'getMainMenuItems',\n 'processRowPostCreate', 'processCellForClipboard', 'getGroupRowAgg', 'getRowNodeId', 'isFullWidthRow',\n 'sendToClipboard', 'navigateToNextHeader', 'tabToNextHeader', 'navigateToNextCell',\n 'tabToNextCell', 'processCellFromClipboard', 'getDocument', 'postProcessPopup', 'getChildCount', 'getDataPath', 'isRowMaster', 'postSortRows', 'processHeaderForClipboard',\n 'processGroupHeaderForClipboard', 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup',\n 'createChartContainer', 'getChartToolbarItems', 'fillOperation', 'isApplyServerSideTransaction', 'getServerSideStoreParams', 'getServerSideGroupLevelParams',\n 'isServerSideGroupOpenByDefault', 'isGroupOpenByDefault', 'initialGroupOrderComparator',\n 'loadingCellRendererSelector', 'getRowId', 'groupAggFiltering'\n ];\n PropertyKeys.FUNCTION_PROPERTIES = __spread$n(PropertyKeys.FUNCTIONAL_PROPERTIES, PropertyKeys.CALLBACK_PROPERTIES);\n PropertyKeys.ALL_PROPERTIES = __spread$n(PropertyKeys.ARRAY_PROPERTIES, PropertyKeys.OBJECT_PROPERTIES, PropertyKeys.STRING_PROPERTIES, PropertyKeys.NUMBER_PROPERTIES, PropertyKeys.FUNCTION_PROPERTIES, PropertyKeys.BOOLEAN_PROPERTIES);\n /**\n * Used when performing property checks. This avoids noise caused when using frameworks, which can add their own\n * framework-specific properties to colDefs, gridOptions etc.\n */\n PropertyKeys.FRAMEWORK_PROPERTIES = [\n '__ob__', '__v_skip', '__metadata__', 'mappedColumnProperties', 'hasChildColumns', 'toColDef', 'createColDefFromGridColumn'\n ];\n return PropertyKeys;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$l = (undefined && undefined.__assign) || function () {\n __assign$l = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$l.apply(this, arguments);\n};\nvar __read$s = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$m = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$s(arguments[i]));\n return ar;\n};\nvar ComponentUtil = /** @class */ (function () {\n function ComponentUtil() {\n }\n ComponentUtil.getCallbackForEvent = function (eventName) {\n if (!eventName || eventName.length < 2) {\n return eventName;\n }\n return 'on' + eventName[0].toUpperCase() + eventName.substr(1);\n };\n ComponentUtil.getCoercionLookup = function () {\n var coercionLookup = {};\n __spread$m(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.FUNCTION_PROPERTIES, ComponentUtil.EVENT_CALLBACKS).forEach(function (key) { return coercionLookup[key] = 'none'; });\n ComponentUtil.BOOLEAN_PROPERTIES\n .forEach(function (key) { return coercionLookup[key] = 'boolean'; });\n ComponentUtil.NUMBER_PROPERTIES\n .forEach(function (key) { return coercionLookup[key] = 'number'; });\n return coercionLookup;\n };\n ComponentUtil.getValue = function (key, rawValue) {\n var coercionStep = ComponentUtil.coercionLookup[key];\n if (coercionStep) {\n var newValue = rawValue;\n switch (coercionStep) {\n case 'number': {\n newValue = ComponentUtil.toNumber(rawValue);\n break;\n }\n case 'boolean': {\n newValue = ComponentUtil.toBoolean(rawValue);\n break;\n }\n case 'none': {\n // if groupAggFiltering exists and isn't a function, handle as a boolean.\n if (key === 'groupAggFiltering' && typeof rawValue !== 'function') {\n newValue = ComponentUtil.toBoolean(rawValue);\n }\n break;\n }\n }\n return newValue;\n }\n return undefined;\n };\n ComponentUtil.getGridOptionKeys = function (component, isVue) {\n // Vue does not have keys in prod so instead need to run through all the \n // gridOptions checking for presence of a gridOption key.\n return isVue\n ? Object.keys(ComponentUtil.coercionLookup)\n : Object.keys(component);\n };\n ComponentUtil.copyAttributesToGridOptions = function (gridOptions, component, isVue) {\n if (isVue === void 0) { isVue = false; }\n // create empty grid options if none were passed\n if (typeof gridOptions !== 'object') {\n gridOptions = {};\n }\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n var keys = ComponentUtil.getGridOptionKeys(component, isVue);\n // Loop through component props, if they are not undefined and a valid gridOption copy to gridOptions\n keys.forEach(function (key) {\n var value = component[key];\n if (typeof value !== 'undefined') {\n var coercedValue = ComponentUtil.getValue(key, value);\n if (coercedValue !== undefined) {\n pGridOptions[key] = coercedValue;\n }\n }\n });\n return gridOptions;\n };\n ComponentUtil.processOnChange = function (changes, api) {\n if (!changes || Object.keys(changes).length === 0) {\n return;\n }\n var changesToApply = __assign$l({}, changes);\n // We manually call these updates so that we can provide a different source of gridOptionsChanged\n // We do not call setProperty as this will be called by the grid api methods\n if (changesToApply.columnTypes) {\n api.setColumnTypes(changesToApply.columnTypes.currentValue, \"gridOptionsChanged\");\n delete changesToApply.columnTypes;\n }\n if (changesToApply.autoGroupColumnDef) {\n api.setAutoGroupColumnDef(changesToApply.autoGroupColumnDef.currentValue, \"gridOptionsChanged\");\n delete changesToApply.autoGroupColumnDef;\n }\n if (changesToApply.defaultColDef) {\n api.setDefaultColDef(changesToApply.defaultColDef.currentValue, \"gridOptionsChanged\");\n delete changesToApply.defaultColDef;\n }\n if (changesToApply.columnDefs) {\n api.setColumnDefs(changesToApply.columnDefs.currentValue, \"gridOptionsChanged\");\n delete changesToApply.columnDefs;\n }\n Object.keys(changesToApply).forEach(function (key) {\n var gridKey = key;\n var coercedValue = ComponentUtil.getValue(gridKey, changesToApply[gridKey].currentValue);\n api.__setProperty(gridKey, coercedValue);\n });\n // copy changes into an event for dispatch\n var event = {\n type: Events.EVENT_COMPONENT_STATE_CHANGED\n };\n iterateObject(changes, function (key, value) {\n event[key] = value;\n });\n api.dispatchEvent(event);\n };\n ComponentUtil.toBoolean = function (value) {\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n // for boolean, compare to empty String to allow attributes appearing with\n // no value to be treated as 'true'\n return value.toUpperCase() === 'TRUE' || value == '';\n }\n return false;\n };\n ComponentUtil.toNumber = function (value) {\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n return Number(value);\n }\n };\n // all events\n ComponentUtil.EVENTS = values(Events);\n // events that are internal to AG Grid and should not be exposed to users via documentation or generated framework components\n /** Exclude the following internal events from code generation to prevent exposing these events via framework components */\n ComponentUtil.EXCLUDED_INTERNAL_EVENTS = [\n Events.EVENT_SCROLLBAR_WIDTH_CHANGED,\n Events.EVENT_CHECKBOX_CHANGED,\n Events.EVENT_HEIGHT_SCALE_CHANGED,\n Events.EVENT_BODY_HEIGHT_CHANGED,\n Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n Events.EVENT_SCROLL_VISIBILITY_CHANGED,\n Events.EVENT_COLUMN_HOVER_CHANGED,\n Events.EVENT_FLASH_CELLS,\n Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED,\n Events.EVENT_DISPLAYED_ROWS_CHANGED,\n Events.EVENT_LEFT_PINNED_WIDTH_CHANGED,\n Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED,\n Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED,\n Events.EVENT_POPUP_TO_FRONT,\n Events.EVENT_KEYBOARD_FOCUS,\n Events.EVENT_MOUSE_FOCUS,\n Events.EVENT_STORE_UPDATED,\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END,\n Events.EVENT_FILL_START,\n Events.EVENT_FILL_END,\n Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START,\n Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END,\n Events.EVENT_FULL_WIDTH_ROW_FOCUSED,\n Events.EVENT_HEADER_HEIGHT_CHANGED,\n Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED,\n Events.EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED,\n Events.EVENT_CELL_FOCUS_CLEARED,\n Events.EVENT_GRID_STYLES_CHANGED,\n Events.EVENT_FILTER_DESTROYED\n ];\n // events that are available for use by users of AG Grid and so should be documented\n /** EVENTS that should be exposed via code generation for the framework components. */\n ComponentUtil.PUBLIC_EVENTS = ComponentUtil.EVENTS.filter(function (e) { return !includes(ComponentUtil.EXCLUDED_INTERNAL_EVENTS, e); });\n // onXXX methods, based on the above events\n ComponentUtil.EVENT_CALLBACKS = ComponentUtil.EVENTS.map(function (event) { return ComponentUtil.getCallbackForEvent(event); });\n ComponentUtil.STRING_PROPERTIES = PropertyKeys.STRING_PROPERTIES;\n ComponentUtil.OBJECT_PROPERTIES = PropertyKeys.OBJECT_PROPERTIES;\n ComponentUtil.ARRAY_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES;\n ComponentUtil.NUMBER_PROPERTIES = PropertyKeys.NUMBER_PROPERTIES;\n ComponentUtil.BOOLEAN_PROPERTIES = PropertyKeys.BOOLEAN_PROPERTIES;\n ComponentUtil.FUNCTION_PROPERTIES = PropertyKeys.FUNCTION_PROPERTIES;\n ComponentUtil.ALL_PROPERTIES = PropertyKeys.ALL_PROPERTIES;\n ComponentUtil.ALL_PROPERTIES_SET = new Set(PropertyKeys.ALL_PROPERTIES);\n ComponentUtil.coercionLookup = ComponentUtil.getCoercionLookup();\n return ComponentUtil;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction fuzzyCheckStrings(inputValues, validValues, allSuggestions) {\n var fuzzyMatches = {};\n var invalidInputs = inputValues.filter(function (inputValue) {\n return !validValues.some(function (validValue) { return validValue === inputValue; });\n });\n if (invalidInputs.length > 0) {\n invalidInputs.forEach(function (invalidInput) {\n return fuzzyMatches[invalidInput] = fuzzySuggestions(invalidInput, allSuggestions);\n });\n }\n return fuzzyMatches;\n}\n/**\n *\n * @param {String} inputValue The value to be compared against a list of strings\n * @param allSuggestions The list of strings to be compared against\n */\nfunction fuzzySuggestions(inputValue, allSuggestions, hideIrrelevant, filterByPercentageOfBestMatch) {\n var thisSuggestions = allSuggestions.map(function (text) { return ({\n value: text,\n relevance: stringWeightedDistances(inputValue.toLowerCase(), text.toLocaleLowerCase())\n }); });\n thisSuggestions.sort(function (a, b) { return b.relevance - a.relevance; });\n if (hideIrrelevant) {\n thisSuggestions = thisSuggestions.filter(function (suggestion) { return suggestion.relevance !== 0; });\n }\n if (filterByPercentageOfBestMatch && filterByPercentageOfBestMatch > 0) {\n var bestMatch = thisSuggestions[0].relevance;\n var limit_1 = bestMatch * filterByPercentageOfBestMatch;\n thisSuggestions = thisSuggestions.filter(function (suggestion) { return limit_1 - suggestion.relevance < 0; });\n }\n return thisSuggestions.map(function (suggestion) { return suggestion.value; });\n}\nfunction stringWeightedDistances(str1, str2) {\n var a = str1.replace(/\\s/g, '');\n var b = str2.replace(/\\s/g, '');\n var weight = 0;\n var lastIndex = -1;\n for (var i = 0; i < a.length; i++) {\n var idx = b.indexOf(a[i], lastIndex + 1);\n if (idx === -1) {\n continue;\n }\n lastIndex = idx;\n weight += (100 - (lastIndex * 100 / 10000) * 100);\n }\n return weight;\n}\n\nvar FuzzyMatchUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fuzzyCheckStrings: fuzzyCheckStrings,\n fuzzySuggestions: fuzzySuggestions\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$r = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$l = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$r(arguments[i]));\n return ar;\n};\nfunction logDeprecation(version, oldProp, newProp, message) {\n var newPropMsg = newProp ? \"Please use '\" + newProp + \"' instead. \" : '';\n doOnce(function () { return console.warn(\"AG Grid: since v\" + version + \", '\" + oldProp + \"' is deprecated. \" + newPropMsg + (message !== null && message !== void 0 ? message : '')); }, \"Deprecated_\" + oldProp);\n}\nvar GridOptionsValidator = /** @class */ (function () {\n function GridOptionsValidator() {\n this.deprecatedProperties = {\n serverSideInfiniteScroll: { version: '29', message: 'Infinite Scrolling is now the default behaviour. This can be suppressed with `suppressServerSideInfiniteScroll`.' },\n rememberGroupStateWhenNewData: { version: '24', message: 'Now that transaction updates are possible and they keep group state, this feature is no longer needed.' },\n suppressEnterpriseResetOnNewColumns: { version: '25', message: 'Now that it is possible to dynamically change columns in the grid, this is no longer needed.' },\n suppressColumnStateEvents: { version: '25', message: 'Events should be ignored based on the `event.source`, which will be \"api\" if the event was due to setting column state via the API.' },\n defaultExportParams: { version: '25.2', message: 'The property `defaultExportParams` has been replaced by `defaultCsvExportParams` and `defaultExcelExportParams`' },\n stopEditingWhenGridLosesFocus: { version: '25.2.2', newProp: 'stopEditingWhenCellsLoseFocus', copyToNewProp: true },\n applyColumnDefOrder: { version: '26', message: 'The property `applyColumnDefOrder` is no longer needed, as this is the default behaviour. To turn this behaviour off, set maintainColumnOrder=true' },\n groupMultiAutoColumn: { version: '26', newProp: 'groupDisplayType', copyToNewProp: true, newPropValue: 'multipleColumns' },\n groupUseEntireRow: { version: '26', newProp: 'groupDisplayType', copyToNewProp: true, newPropValue: 'groupRows' },\n defaultGroupSortComparator: { version: '26', newProp: 'initialGroupOrderComparator' },\n enableMultiRowDragging: { version: '26.1', newProp: 'rowDragMultiRow', copyToNewProp: true },\n colWidth: { version: '26.1', newProp: 'defaultColDef.width' },\n minColWidth: { version: '26.1', newProp: 'defaultColDef.minWidth' },\n maxColWidth: { version: '26.1', newProp: 'defaultColDef.maxWidth' },\n reactUi: { version: '26.1', message: 'React UI is on by default, so no need for reactUi=true. To turn it off, set suppressReactUi=true.' },\n suppressCellSelection: { version: '27', newProp: 'suppressCellFocus', copyToNewProp: true },\n clipboardDeliminator: { version: '27.1', newProp: 'clipboardDelimiter', copyToNewProp: true },\n getRowNodeId: { version: '27.1', newProp: 'getRowId', message: 'The difference: if getRowId() is implemented then immutable data is enabled by default.' },\n defaultGroupOrderComparator: { version: '27.2', newProp: 'initialGroupOrderComparator' },\n groupRowAggNodes: { version: '27.2', newProp: 'getGroupRowAgg' },\n postSort: { version: '27.2', newProp: 'postSortRows' },\n isFullWidthCell: { version: '27.2', newProp: 'isFullWidthRow' },\n localeTextFunc: { version: '27.2', newProp: 'getLocaleText' },\n serverSideFilteringAlwaysResets: { version: '28.0', newProp: 'serverSideFilterAllLevels', copyToNewProp: true, },\n serverSideSortingAlwaysResets: { version: '28.0', newProp: 'serverSideSortAllLevels', copyToNewProp: true, },\n suppressReactUi: { version: '28', message: 'The legacy React rendering engine is deprecated and will be removed in the next major version of the grid.' },\n processSecondaryColDef: { version: '28', newProp: 'processPivotResultColDef', copyToNewProp: true },\n processSecondaryColGroupDef: { version: '28', newProp: 'processPivotResultColGroupDef', copyToNewProp: true },\n getServerSideStoreParams: { version: '28', newProp: 'getServerSideGroupLevelParams', copyToNewProp: true },\n enableChartToolPanelsButton: { version: '29', message: 'The Chart Tool Panels button is now enabled by default. To hide the Chart Tool Panels button and display the hamburger button instead, set suppressChartToolPanelsButton=true.' },\n functionsPassive: { version: '29.2' },\n onColumnRowGroupChangeRequest: { version: '29.2' },\n onColumnPivotChangeRequest: { version: '29.2' },\n onColumnValueChangeRequest: { version: '29.2' },\n onColumnAggFuncChangeRequest: { version: '29.2' },\n };\n }\n GridOptionsValidator.prototype.pickOneWarning = function (prop1, prop2) {\n console.warn(\"AG Grid: \" + prop1 + \" and \" + prop2 + \" do not work with each other, you need to pick one.\");\n };\n GridOptionsValidator.prototype.init = function () {\n var _this = this;\n this.checkForDeprecated();\n this.checkForViolations();\n if (this.gridOptions.suppressPropertyNamesCheck !== true) {\n this.checkGridOptionsProperties();\n this.checkColumnDefProperties();\n }\n this.checkColumnDefViolations();\n if (this.gridOptionsService.is('groupSelectsChildren') && this.gridOptionsService.is('suppressParentsInRowNodes')) {\n console.warn(\"AG Grid: 'groupSelectsChildren' does not work with 'suppressParentsInRowNodes', this selection method needs the part in rowNode to work\");\n }\n if (this.gridOptionsService.is('groupSelectsChildren')) {\n if (this.gridOptionsService.get('rowSelection') !== 'multiple') {\n console.warn(\"AG Grid: rowSelection must be 'multiple' for groupSelectsChildren to make sense\");\n }\n }\n if (this.gridOptionsService.is('groupRemoveSingleChildren') && this.gridOptionsService.is('groupHideOpenParents')) {\n this.pickOneWarning('groupRemoveSingleChildren', 'groupHideOpenParents');\n }\n if (this.gridOptionsService.get('domLayout') === 'autoHeight' && !this.gridOptionsService.isRowModelType('clientSide')) {\n if (!this.gridOptionsService.is('pagination')) {\n console.warn(\"AG Grid: domLayout='autoHeight' was ignored as it is only supported by the Client-Side row model, unless using pagination.\");\n this.gridOptions.domLayout = 'normal';\n }\n }\n if (this.gridOptionsService.isRowModelType('serverSide')) {\n var msg = function (prop, alt) { return (\"AG Grid: '\" + prop + \"' is not supported on the Server-Side Row Model.\" + (alt ? \" Please use \" + alt + \" instead.\" : '')); };\n if (this.gridOptionsService.exists('groupDefaultExpanded')) {\n console.warn(msg('groupDefaultExpanded', 'isServerSideGroupOpenByDefault callback'));\n }\n if (this.gridOptionsService.exists('groupIncludeFooter')) {\n console.warn(msg('groupIncludeFooter'));\n }\n if (this.gridOptionsService.exists('groupIncludeTotalFooter')) {\n console.warn(msg('groupIncludeTotalFooter'));\n }\n }\n if (this.gridOptionsService.is('enableRangeSelection')) {\n ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'enableRangeSelection');\n }\n else if (this.gridOptionsService.is('enableRangeHandle') || this.gridOptionsService.is('enableFillHandle')) {\n console.warn(\"AG Grid: 'enableRangeHandle' or 'enableFillHandle' will not work unless 'enableRangeSelection' is set to true\");\n }\n var validateRegistered = function (prop, module) { return _this.gridOptionsService.exists(prop) && ModuleRegistry.assertRegistered(module, prop); };\n // Ensure the SideBar is registered which will then lead them to register Column / Filter Tool panels as required by their config.\n // It is possible to use the SideBar only with your own custom tool panels.\n validateRegistered('sideBar', ModuleNames.SideBarModule);\n validateRegistered('statusBar', ModuleNames.StatusBarModule);\n validateRegistered('enableCharts', ModuleNames.GridChartsModule);\n validateRegistered('getMainMenuItems', ModuleNames.MenuModule);\n validateRegistered('getContextMenuItems', ModuleNames.MenuModule);\n validateRegistered('allowContextMenuWithControlKey', ModuleNames.MenuModule);\n if (this.gridOptionsService.is('groupRowsSticky')) {\n if (this.gridOptionsService.is('groupHideOpenParents')) {\n this.pickOneWarning('groupRowsSticky', 'groupHideOpenParents');\n }\n if (this.gridOptionsService.is('masterDetail')) {\n this.pickOneWarning('groupRowsSticky', 'masterDetail');\n }\n if (this.gridOptionsService.is('pagination')) {\n this.pickOneWarning('groupRowsSticky', 'pagination');\n }\n }\n };\n GridOptionsValidator.prototype.checkColumnDefProperties = function () {\n var _this = this;\n if (this.gridOptions.columnDefs == null) {\n return;\n }\n var validProperties = __spread$l(ColDefUtil.ALL_PROPERTIES, ColDefUtil.FRAMEWORK_PROPERTIES);\n var validateColDef = function (colDef, propertyName) {\n var userProperties = Object.getOwnPropertyNames(colDef);\n _this.checkProperties(userProperties, validProperties, validProperties, propertyName, 'https://www.ag-grid.com/javascript-data-grid/column-properties/');\n if (colDef.children) {\n colDef.children.forEach(function (child) { return validateColDef(child, 'columnDefs.children'); });\n }\n };\n this.gridOptions.columnDefs.forEach(function (colDef) { return validateColDef(colDef, 'columnDefs'); });\n if (this.gridOptions.defaultColDef) {\n validateColDef(this.gridOptions.defaultColDef, 'defaultColDef');\n }\n };\n GridOptionsValidator.prototype.checkColumnDefViolations = function () {\n var _a;\n var rowModel = (_a = this.gridOptionsService.get('rowModelType')) !== null && _a !== void 0 ? _a : 'clientSide';\n var unsupportedPropertiesMap = {\n infinite: ['headerCheckboxSelection', 'headerCheckboxSelectionFilteredOnly', 'headerCheckboxSelectionCurrentPageOnly'],\n viewport: ['headerCheckboxSelection', 'headerCheckboxSelectionFilteredOnly', 'headerCheckboxSelectionCurrentPageOnly'],\n serverSide: ['headerCheckboxSelectionFilteredOnly', 'headerCheckboxSelectionCurrentPageOnly'],\n clientSide: [],\n };\n var unsupportedProperties = unsupportedPropertiesMap[rowModel];\n if (!(unsupportedProperties === null || unsupportedProperties === void 0 ? void 0 : unsupportedProperties.length)) {\n return;\n }\n var validateColDef = function (colDef) {\n unsupportedProperties.forEach(function (property) {\n if (property in colDef && !!colDef[property]) {\n console.warn(\"AG Grid: Column property \" + property + \" is not supported with the row model type \" + rowModel + \".\");\n }\n });\n };\n if (this.gridOptions.columnDefs != null) {\n this.gridOptions.columnDefs.forEach(function (colDef) { return validateColDef(colDef); });\n }\n if (this.gridOptions.autoGroupColumnDef != null) {\n validateColDef(this.gridOptions.autoGroupColumnDef);\n }\n if (this.gridOptions.defaultColDef != null) {\n validateColDef(this.gridOptions.defaultColDef);\n }\n };\n GridOptionsValidator.prototype.checkGridOptionsProperties = function () {\n var userProperties = Object.getOwnPropertyNames(this.gridOptions);\n var validProperties = __spread$l(PropertyKeys.ALL_PROPERTIES, PropertyKeys.FRAMEWORK_PROPERTIES, ComponentUtil.EVENT_CALLBACKS);\n var validPropertiesAndExceptions = __spread$l(validProperties, ['api', 'columnApi'], Object.keys(this.deprecatedProperties));\n this.checkProperties(userProperties, validPropertiesAndExceptions, validProperties, 'gridOptions', 'https://www.ag-grid.com/javascript-data-grid/grid-options/');\n };\n GridOptionsValidator.prototype.checkProperties = function (userProperties, validPropertiesAndExceptions, validProperties, containerName, docsUrl) {\n var invalidProperties = fuzzyCheckStrings(userProperties, validPropertiesAndExceptions, validProperties);\n iterateObject(invalidProperties, function (key, value) {\n doOnce(function () { return console.warn(\"AG Grid: invalid \" + containerName + \" property '\" + key + \"' did you mean any of these: \" + value.slice(0, 8).join(\", \")); }, 'invalidProperty' + containerName + key);\n });\n if (Object.keys(invalidProperties).length > 0) {\n doOnce(function () { return console.warn(\"AG Grid: to see all the valid \" + containerName + \" properties please check: \" + docsUrl); }, 'invalidProperties' + containerName + docsUrl);\n }\n };\n GridOptionsValidator.prototype.checkForDeprecated = function () {\n // casting to generic object, so typescript compiles even though\n // we are looking for attributes that don't exist\n var options = this.gridOptions;\n Object.entries(this.deprecatedProperties).forEach(function (_a) {\n var _b;\n var _c = __read$r(_a, 2), oldProp = _c[0], details = _c[1];\n var oldPropValue = options[oldProp];\n if (oldPropValue) {\n logDeprecation(details.version, oldProp, details.newProp, details.message);\n if (details.copyToNewProp && details.newProp && options[details.newProp] == null) {\n options[details.newProp] = (_b = details.newPropValue) !== null && _b !== void 0 ? _b : oldPropValue;\n }\n }\n });\n // Manual messages and deprecation behaviour that don't fit our standard approach above.\n if (options.groupSuppressAutoColumn) {\n var propName = options.treeData ? 'treeDataDisplayType' : 'groupDisplayType';\n console.warn(\"AG Grid: since v26.0, the grid property `groupSuppressAutoColumn` has been replaced by `\" + propName + \" = 'custom'`\");\n options[propName] = 'custom';\n }\n if (options.immutableData) {\n if (options.getRowId) {\n console.warn('AG Grid: since v27.1, `immutableData` is deprecated. With the `getRowId` callback implemented, immutable data is enabled by default so you can remove `immutableData=true`.');\n }\n else {\n console.warn('AG Grid: since v27.1, `immutableData` is deprecated. To enable immutable data you must implement the `getRowId()` callback.');\n }\n }\n if (options.serverSideStoreType) {\n console.warn('AG Grid: since v29.0, `serverSideStoreType` has been replaced by `suppressServerSideInfiniteScroll`. Set to false to use Partial Store, and true to use Full Store.');\n options.suppressServerSideInfiniteScroll = options.serverSideStoreType !== 'partial';\n }\n };\n GridOptionsValidator.prototype.checkForViolations = function () {\n if (this.gridOptionsService.is('treeData')) {\n this.treeDataViolations();\n }\n };\n GridOptionsValidator.prototype.treeDataViolations = function () {\n if (this.gridOptionsService.isRowModelType('clientSide')) {\n if (!this.gridOptionsService.exists('getDataPath')) {\n console.warn('AG Grid: property usingTreeData=true with rowModel=clientSide, but you did not ' +\n 'provide getDataPath function, please provide getDataPath function if using tree data.');\n }\n }\n if (this.gridOptionsService.isRowModelType('serverSide')) {\n if (!this.gridOptionsService.exists('isServerSideGroup')) {\n console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide isServerSideGroup function, please provide isServerSideGroup function if using tree data.');\n }\n if (!this.gridOptionsService.exists('getServerSideGroupKey')) {\n console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide getServerSideGroupKey function, please provide getServerSideGroupKey function if using tree data.');\n }\n }\n };\n __decorate$2u([\n Autowired('gridOptions')\n ], GridOptionsValidator.prototype, \"gridOptions\", void 0);\n __decorate$2u([\n Autowired('gridOptionsService')\n ], GridOptionsValidator.prototype, \"gridOptionsService\", void 0);\n __decorate$2u([\n PostConstruct\n ], GridOptionsValidator.prototype, \"init\", null);\n GridOptionsValidator = __decorate$2u([\n Bean('gridOptionsValidator')\n ], GridOptionsValidator);\n return GridOptionsValidator;\n}());\nfunction matchesGroupDisplayType(toMatch, supplied) {\n var groupDisplayTypeValues = ['groupRows', 'multipleColumns', 'custom', 'singleColumn'];\n if (groupDisplayTypeValues.indexOf(supplied) < 0) {\n console.warn(\"AG Grid: '\" + supplied + \"' is not a valid groupDisplayType value - possible values are: '\" + groupDisplayTypeValues.join(\"', '\") + \"'\");\n return false;\n }\n return supplied === toMatch;\n}\nfunction matchesTreeDataDisplayType(toMatch, supplied) {\n var treeDataDisplayTypeValues = ['auto', 'custom'];\n if (treeDataDisplayTypeValues.indexOf(supplied) < 0) {\n console.warn(\"AG Grid: '\" + supplied + \"' is not a valid treeDataDisplayType value - possible values are: '\" + treeDataDisplayTypeValues.join(\"', '\") + \"'\");\n return false;\n }\n return supplied === toMatch;\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnGroup = /** @class */ (function () {\n function ColumnGroup(providedColumnGroup, groupId, partId, pinned) {\n // depends on the open/closed state of the group, only displaying columns are stored here\n this.displayedChildren = [];\n this.localEventService = new EventService();\n this.groupId = groupId;\n this.partId = partId;\n this.providedColumnGroup = providedColumnGroup;\n this.pinned = pinned;\n }\n // this is static, a it is used outside of this class\n ColumnGroup.createUniqueId = function (groupId, instanceId) {\n return groupId + '_' + instanceId;\n };\n // as the user is adding and removing columns, the groups are recalculated.\n // this reset clears out all children, ready for children to be added again\n ColumnGroup.prototype.reset = function () {\n this.parent = null;\n this.children = null;\n this.displayedChildren = null;\n };\n ColumnGroup.prototype.getParent = function () {\n return this.parent;\n };\n ColumnGroup.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n ColumnGroup.prototype.getUniqueId = function () {\n return ColumnGroup.createUniqueId(this.groupId, this.partId);\n };\n ColumnGroup.prototype.isEmptyGroup = function () {\n return this.displayedChildren.length === 0;\n };\n ColumnGroup.prototype.isMoving = function () {\n var allLeafColumns = this.getProvidedColumnGroup().getLeafColumns();\n if (!allLeafColumns || allLeafColumns.length === 0) {\n return false;\n }\n return allLeafColumns.every(function (col) { return col.isMoving(); });\n };\n ColumnGroup.prototype.checkLeft = function () {\n // first get all children to setLeft, as it impacts our decision below\n this.displayedChildren.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n child.checkLeft();\n }\n });\n // set our left based on first displayed column\n if (this.displayedChildren.length > 0) {\n if (this.gridOptionsService.is('enableRtl')) {\n var lastChild = last(this.displayedChildren);\n var lastChildLeft = lastChild.getLeft();\n this.setLeft(lastChildLeft);\n }\n else {\n var firstChildLeft = this.displayedChildren[0].getLeft();\n this.setLeft(firstChildLeft);\n }\n }\n else {\n // this should never happen, as if we have no displayed columns, then\n // this groups should not even exist.\n this.setLeft(null);\n }\n };\n ColumnGroup.prototype.getLeft = function () {\n return this.left;\n };\n ColumnGroup.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n ColumnGroup.prototype.setLeft = function (left) {\n this.oldLeft = left;\n if (this.left !== left) {\n this.left = left;\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));\n }\n };\n ColumnGroup.prototype.getPinned = function () {\n return this.pinned;\n };\n ColumnGroup.prototype.createAgEvent = function (type) {\n return { type: type };\n };\n ColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n ColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n ColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n ColumnGroup.prototype.getPartId = function () {\n return this.partId;\n };\n ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {\n var result = false;\n this.children.forEach(function (foundChild) {\n if (wantedChild === foundChild) {\n result = true;\n }\n if (foundChild instanceof ColumnGroup) {\n if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {\n result = true;\n }\n }\n });\n return result;\n };\n ColumnGroup.prototype.getActualWidth = function () {\n var groupActualWidth = 0;\n if (this.displayedChildren) {\n this.displayedChildren.forEach(function (child) {\n groupActualWidth += child.getActualWidth();\n });\n }\n return groupActualWidth;\n };\n ColumnGroup.prototype.isResizable = function () {\n if (!this.displayedChildren) {\n return false;\n }\n // if at least one child is resizable, then the group is resizable\n var result = false;\n this.displayedChildren.forEach(function (child) {\n if (child.isResizable()) {\n result = true;\n }\n });\n return result;\n };\n ColumnGroup.prototype.getMinWidth = function () {\n var result = 0;\n this.displayedChildren.forEach(function (groupChild) {\n result += groupChild.getMinWidth() || 0;\n });\n return result;\n };\n ColumnGroup.prototype.addChild = function (child) {\n if (!this.children) {\n this.children = [];\n }\n this.children.push(child);\n };\n ColumnGroup.prototype.getDisplayedChildren = function () {\n return this.displayedChildren;\n };\n ColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n ColumnGroup.prototype.getDisplayedLeafColumns = function () {\n var result = [];\n this.addDisplayedLeafColumns(result);\n return result;\n };\n ColumnGroup.prototype.getDefinition = function () {\n return this.providedColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.getColGroupDef = function () {\n return this.providedColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.isPadding = function () {\n return this.providedColumnGroup.isPadding();\n };\n ColumnGroup.prototype.isExpandable = function () {\n return this.providedColumnGroup.isExpandable();\n };\n ColumnGroup.prototype.isExpanded = function () {\n return this.providedColumnGroup.isExpanded();\n };\n ColumnGroup.prototype.setExpanded = function (expanded) {\n this.providedColumnGroup.setExpanded(expanded);\n };\n ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {\n this.displayedChildren.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addDisplayedLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n ColumnGroup.prototype.getColumnGroupShow = function () {\n return this.providedColumnGroup.getColumnGroupShow();\n };\n ColumnGroup.prototype.getProvidedColumnGroup = function () {\n return this.providedColumnGroup;\n };\n /** @deprecated v27 getOriginalColumnGroup is deprecated, use getProvidedColumnGroup. */\n ColumnGroup.prototype.getOriginalColumnGroup = function () {\n logDeprecation('27', 'getOriginalColumnGroup', 'getProvidedColumnGroup');\n return this.getProvidedColumnGroup();\n };\n ColumnGroup.prototype.getPaddingLevel = function () {\n var parent = this.getParent();\n if (!this.isPadding() || !parent || !parent.isPadding()) {\n return 0;\n }\n return 1 + parent.getPaddingLevel();\n };\n ColumnGroup.prototype.calculateDisplayedColumns = function () {\n var _this = this;\n // clear out last time we calculated\n this.displayedChildren = [];\n // find the column group that is controlling expandable. this is relevant when we have padding (empty)\n // groups, where the expandable is actually the first parent that is not a padding group.\n var parentWithExpansion = this;\n while (parentWithExpansion != null && parentWithExpansion.isPadding()) {\n parentWithExpansion = parentWithExpansion.getParent();\n }\n var isExpandable = parentWithExpansion ? parentWithExpansion.providedColumnGroup.isExpandable() : false;\n // it not expandable, everything is visible\n if (!isExpandable) {\n this.displayedChildren = this.children;\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n return;\n }\n // Add cols based on columnGroupShow\n // Note - the below also adds padding groups, these are always added because they never have\n // colDef.columnGroupShow set.\n this.children.forEach(function (child) {\n // never add empty groups\n var emptyGroup = child instanceof ColumnGroup && (!child.displayedChildren || !child.displayedChildren.length);\n if (emptyGroup) {\n return;\n }\n var headerGroupShow = child.getColumnGroupShow();\n switch (headerGroupShow) {\n case 'open':\n // when set to open, only show col if group is open\n if (parentWithExpansion.providedColumnGroup.isExpanded()) {\n _this.displayedChildren.push(child);\n }\n break;\n case 'closed':\n // when set to open, only show col if group is open\n if (!parentWithExpansion.providedColumnGroup.isExpanded()) {\n _this.displayedChildren.push(child);\n }\n break;\n default:\n _this.displayedChildren.push(child);\n break;\n }\n });\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n };\n ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';\n ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';\n __decorate$2t([\n Autowired('gridOptionsService')\n ], ColumnGroup.prototype, \"gridOptionsService\", void 0);\n return ColumnGroup;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// class returns unique instance id's for columns.\n// eg, the following calls (in this order) will result in:\n//\n// getInstanceIdForKey('country') => 0\n// getInstanceIdForKey('country') => 1\n// getInstanceIdForKey('country') => 2\n// getInstanceIdForKey('country') => 3\n// getInstanceIdForKey('age') => 0\n// getInstanceIdForKey('age') => 1\n// getInstanceIdForKey('country') => 4\nvar GroupInstanceIdCreator = /** @class */ (function () {\n function GroupInstanceIdCreator() {\n // this map contains keys to numbers, so we remember what the last call was\n this.existingIds = {};\n }\n GroupInstanceIdCreator.prototype.getInstanceIdForKey = function (key) {\n var lastResult = this.existingIds[key];\n var result;\n if (typeof lastResult !== 'number') {\n // first time this key\n result = 0;\n }\n else {\n result = lastResult + 1;\n }\n this.existingIds[key] = result;\n return result;\n };\n return GroupInstanceIdCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2R = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';\nvar AutoGroupColService = /** @class */ (function (_super) {\n __extends$2R(AutoGroupColService, _super);\n function AutoGroupColService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AutoGroupColService.prototype.createAutoGroupColumns = function (existingCols, rowGroupColumns) {\n var _this = this;\n var groupAutoColumns = [];\n var doingTreeData = this.gridOptionsService.isTreeData();\n var doingMultiAutoColumn = this.gridOptionsService.isGroupMultiAutoColumn();\n if (doingTreeData && doingMultiAutoColumn) {\n console.warn('AG Grid: you cannot mix groupDisplayType = \"multipleColumns\" with treeData, only one column can be used to display groups when doing tree data');\n doingMultiAutoColumn = false;\n }\n // if doing groupDisplayType = \"multipleColumns\", then we call the method multiple times, once\n // for each column we are grouping by\n if (doingMultiAutoColumn) {\n rowGroupColumns.forEach(function (rowGroupCol, index) {\n groupAutoColumns.push(_this.createOneAutoGroupColumn(existingCols, rowGroupCol, index));\n });\n }\n else {\n groupAutoColumns.push(this.createOneAutoGroupColumn(existingCols));\n }\n return groupAutoColumns;\n };\n // rowGroupCol and index are missing if groupDisplayType != \"multipleColumns\"\n AutoGroupColService.prototype.createOneAutoGroupColumn = function (existingCols, rowGroupCol, index) {\n // if one provided by user, use it, otherwise create one\n var defaultAutoColDef = this.generateDefaultColDef(rowGroupCol);\n // if doing multi, set the field\n var colId;\n if (rowGroupCol) {\n colId = GROUP_AUTO_COLUMN_ID + \"-\" + rowGroupCol.getId();\n }\n else {\n colId = GROUP_AUTO_COLUMN_ID;\n }\n var userAutoColDef = this.gridOptionsService.get('autoGroupColumnDef');\n mergeDeep(defaultAutoColDef, userAutoColDef);\n defaultAutoColDef = this.columnFactory.mergeColDefs(defaultAutoColDef);\n defaultAutoColDef.colId = colId;\n // For tree data the filter is always allowed\n if (!this.gridOptionsService.isTreeData()) {\n // we would only allow filter if the user has provided field or value getter. otherwise the filter\n // would not be able to work.\n var noFieldOrValueGetter = missing(defaultAutoColDef.field) &&\n missing(defaultAutoColDef.valueGetter) &&\n missing(defaultAutoColDef.filterValueGetter) &&\n defaultAutoColDef.filter !== 'agGroupColumnFilter';\n if (noFieldOrValueGetter) {\n defaultAutoColDef.filter = false;\n }\n }\n // if showing many cols, we don't want to show more than one with a checkbox for selection\n if (index && index > 0) {\n defaultAutoColDef.headerCheckboxSelection = false;\n }\n var existingCol = existingCols.find(function (col) { return col.getId() == colId; });\n if (existingCol) {\n existingCol.setColDef(defaultAutoColDef, null);\n this.columnFactory.applyColumnState(existingCol, defaultAutoColDef);\n return existingCol;\n }\n var isSortingCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n if (isSortingCoupled && (defaultAutoColDef.sort || defaultAutoColDef.initialSort) && !defaultAutoColDef.field) {\n // if no field, then this column cannot hold its own sort state\n mergeDeep(defaultAutoColDef, { sort: null, initialSort: null }, true, true);\n }\n var newCol = new Column(defaultAutoColDef, null, colId, true);\n this.context.createBean(newCol);\n return newCol;\n };\n AutoGroupColService.prototype.generateDefaultColDef = function (rowGroupCol) {\n var userDef = this.gridOptionsService.get('autoGroupColumnDef');\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var res = {\n headerName: localeTextFunc('group', 'Group')\n };\n var userHasProvidedGroupCellRenderer = userDef &&\n (userDef.cellRenderer || userDef.cellRendererFramework || userDef.cellRendererSelector);\n // only add the default group cell renderer if user hasn't provided one\n if (!userHasProvidedGroupCellRenderer) {\n res.cellRenderer = 'agGroupCellRenderer';\n }\n // we never allow moving the group column\n // defaultAutoColDef.suppressMovable = true;\n if (rowGroupCol) {\n var colDef = rowGroupCol.getColDef();\n Object.assign(res, {\n // cellRendererParams.groupKey: colDefToCopy.field;\n headerName: this.columnModel.getDisplayNameForColumn(rowGroupCol, 'header'),\n headerValueGetter: colDef.headerValueGetter\n });\n if (colDef.cellRenderer || colDef.cellRendererFramework) {\n Object.assign(res, {\n cellRendererParams: {\n innerRenderer: colDef.cellRenderer,\n innerRendererFramework: colDef.cellRendererFramework,\n innerRendererParams: colDef.cellRendererParams\n }\n });\n }\n res.showRowGroup = rowGroupCol.getColId();\n }\n else {\n res.showRowGroup = true;\n }\n return res;\n };\n __decorate$2s([\n Autowired('columnModel')\n ], AutoGroupColService.prototype, \"columnModel\", void 0);\n __decorate$2s([\n Autowired('columnFactory')\n ], AutoGroupColService.prototype, \"columnFactory\", void 0);\n AutoGroupColService = __decorate$2s([\n Bean('autoGroupColService')\n ], AutoGroupColService);\n return AutoGroupColService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar reUnescapedHtml = /[&<>\"']/g;\n/**\n * HTML Escapes.\n */\nvar HTML_ESCAPES = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n/**\n * It encodes any string in UTF-8 format\n * taken from https://github.com/mathiasbynens/utf8.js\n * @param {string} s\n * @returns {string}\n */\nfunction utf8_encode(s) {\n var stringFromCharCode = String.fromCharCode;\n function ucs2decode(string) {\n var output = [];\n if (!string) {\n return [];\n }\n var len = string.length;\n var counter = 0;\n var value;\n var extra;\n while (counter < len) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < len) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n }\n else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n }\n else {\n output.push(value);\n }\n }\n return output;\n }\n function checkScalarValue(point) {\n if (point >= 0xD800 && point <= 0xDFFF) {\n throw Error('Lone surrogate U+' + point.toString(16).toUpperCase() +\n ' is not a scalar value');\n }\n }\n function createByte(point, shift) {\n return stringFromCharCode(((point >> shift) & 0x3F) | 0x80);\n }\n function encodeCodePoint(point) {\n if ((point >= 0 && point <= 31 && point !== 10)) {\n var convertedCode = point.toString(16).toUpperCase();\n var paddedCode = convertedCode.padStart(4, '0');\n return \"_x\" + paddedCode + \"_\";\n }\n if ((point & 0xFFFFFF80) == 0) { // 1-byte sequence\n return stringFromCharCode(point);\n }\n var symbol = '';\n if ((point & 0xFFFFF800) == 0) { // 2-byte sequence\n symbol = stringFromCharCode(((point >> 6) & 0x1F) | 0xC0);\n }\n else if ((point & 0xFFFF0000) == 0) { // 3-byte sequence\n checkScalarValue(point);\n symbol = stringFromCharCode(((point >> 12) & 0x0F) | 0xE0);\n symbol += createByte(point, 6);\n }\n else if ((point & 0xFFE00000) == 0) { // 4-byte sequence\n symbol = stringFromCharCode(((point >> 18) & 0x07) | 0xF0);\n symbol += createByte(point, 12);\n symbol += createByte(point, 6);\n }\n symbol += stringFromCharCode((point & 0x3F) | 0x80);\n return symbol;\n }\n var codePoints = ucs2decode(s);\n var length = codePoints.length;\n var index = -1;\n var codePoint;\n var byteString = '';\n while (++index < length) {\n codePoint = codePoints[index];\n byteString += encodeCodePoint(codePoint);\n }\n return byteString;\n}\nfunction capitalise(str) {\n return str[0].toUpperCase() + str.substr(1).toLowerCase();\n}\nfunction escapeString(toEscape, skipEscapingHtmlChars) {\n if (toEscape == null) {\n return null;\n }\n // we call toString() twice, in case value is an object, where user provides\n // a toString() method, and first call to toString() returns back something other\n // than a string (eg a number to render)\n var stringResult = toEscape.toString().toString();\n if (skipEscapingHtmlChars) {\n return stringResult;\n }\n // in react we don't need to escape html characters, as it's done by the framework\n return stringResult.replace(reUnescapedHtml, function (chr) { return HTML_ESCAPES[chr]; });\n}\n/**\n * Converts a camelCase string into startCase\n * @param {string} camelCase\n * @return {string}\n */\nfunction camelCaseToHumanText(camelCase) {\n if (!camelCase || camelCase == null) {\n return null;\n }\n // either split on a lowercase followed by uppercase ie asHereTo -> as Here To\n var rex = /([a-z])([A-Z])/g;\n // or starts with uppercase and we take all expect the last which is assumed to be part of next word if followed by lowercase HEREToThere -> HERE To There\n var rexCaps = /([A-Z]+)([A-Z])([a-z])/g;\n var words = camelCase\n .replace(rex, '$1 $2')\n .replace(rexCaps, '$1 $2$3')\n .replace(/\\./g, ' ')\n .split(' ');\n return words.map(function (word) { return word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : ''); }).join(' ');\n}\n\nvar StringUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n utf8_encode: utf8_encode,\n capitalise: capitalise,\n escapeString: escapeString,\n camelCaseToHumanText: camelCaseToHumanText\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction convertToMap(arr) {\n var map = new Map();\n arr.forEach(function (pair) { return map.set(pair[0], pair[1]); });\n return map;\n}\n// handy for organising a list into a map, where each item is mapped by an attribute, eg mapping Columns by ID\nfunction mapById(arr, callback) {\n var map = new Map();\n arr.forEach(function (item) { return map.set(callback(item), item); });\n return map;\n}\nfunction keys(map) {\n var arr = [];\n map.forEach(function (_, key) { return arr.push(key); });\n return arr;\n}\n\nvar MapUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n convertToMap: convertToMap,\n mapById: mapById,\n keys: keys\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2Q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$8 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __values$6 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$q = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$k = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$q(arguments[i]));\n return ar;\n};\nvar ColumnModel = /** @class */ (function (_super) {\n __extends$2Q(ColumnModel, _super);\n function ColumnModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // header row count, based on user provided columns\n _this.primaryHeaderRowCount = 0;\n _this.secondaryHeaderRowCount = 0;\n // header row count, either above, or based on pivoting if we are pivoting\n _this.gridHeaderRowCount = 0;\n // leave level columns of the displayed trees\n _this.displayedColumnsLeft = [];\n _this.displayedColumnsRight = [];\n _this.displayedColumnsCenter = [];\n // all three lists above combined\n _this.displayedColumns = [];\n // for fast lookup, to see if a column or group is still displayed\n _this.displayedColumnsAndGroupsMap = {};\n // all columns to be rendered\n _this.viewportColumns = [];\n // A hash key to keep track of changes in viewport columns\n _this.viewportColumnsHash = '';\n // same as viewportColumns, except we always include columns with headerAutoHeight\n _this.headerViewportColumns = [];\n // all columns to be rendered in the centre\n _this.viewportColumnsCenter = [];\n // same as viewportColumnsCenter, except we always include columns with headerAutoHeight\n _this.headerViewportColumnsCenter = [];\n _this.autoHeightActiveAtLeastOnce = false;\n _this.rowGroupColumns = [];\n _this.valueColumns = [];\n _this.pivotColumns = [];\n _this.ready = false;\n _this.autoGroupsNeedBuilding = false;\n _this.forceRecreateAutoGroups = false;\n _this.pivotMode = false;\n _this.bodyWidth = 0;\n _this.leftWidth = 0;\n _this.rightWidth = 0;\n _this.bodyWidthDirty = true;\n return _this;\n }\n ColumnModel.prototype.init = function () {\n var _this = this;\n this.suppressColumnVirtualisation = this.gridOptionsService.is('suppressColumnVirtualisation');\n var pivotMode = this.gridOptionsService.is('pivotMode');\n if (this.isPivotSettingAllowed(pivotMode)) {\n this.pivotMode = pivotMode;\n }\n this.usingTreeData = this.gridOptionsService.isTreeData();\n this.addManagedPropertyListener('groupDisplayType', function () { return _this.onAutoGroupColumnDefChanged(); });\n this.addManagedPropertyListener('autoGroupColumnDef', function () { return _this.onAutoGroupColumnDefChanged(); });\n this.addManagedPropertyListener('defaultColDef', function (params) { return _this.onSharedColDefChanged(params.source); });\n this.addManagedPropertyListener('columnTypes', function (params) { return _this.onSharedColDefChanged(params.source); });\n };\n ColumnModel.prototype.onAutoGroupColumnDefChanged = function () {\n this.autoGroupsNeedBuilding = true;\n this.forceRecreateAutoGroups = true;\n this.updateGridColumns();\n this.updateDisplayedColumns('gridOptionsChanged');\n };\n ColumnModel.prototype.onSharedColDefChanged = function (source) {\n if (source === void 0) { source = 'api'; }\n // likewise for autoGroupCol, the default col def impacts this\n this.forceRecreateAutoGroups = true;\n this.createColumnsFromColumnDefs(true, source);\n };\n ColumnModel.prototype.setColumnDefs = function (columnDefs, source) {\n if (source === void 0) { source = 'api'; }\n var colsPreviouslyExisted = !!this.columnDefs;\n this.columnDefs = columnDefs;\n this.createColumnsFromColumnDefs(colsPreviouslyExisted, source);\n };\n ColumnModel.prototype.destroyOldColumns = function (oldTree, newTree) {\n var oldObjectsById = {};\n if (!oldTree) {\n return;\n }\n // add in all old columns to be destroyed\n this.columnUtils.depthFirstOriginalTreeSearch(null, oldTree, function (child) {\n oldObjectsById[child.getInstanceId()] = child;\n });\n // however we don't destroy anything in the new tree. if destroying the grid, there is no new tree\n if (newTree) {\n this.columnUtils.depthFirstOriginalTreeSearch(null, newTree, function (child) {\n oldObjectsById[child.getInstanceId()] = null;\n });\n }\n // what's left can be destroyed\n var colsToDestroy = Object.values(oldObjectsById).filter(function (item) { return item != null; });\n this.destroyBeans(colsToDestroy);\n };\n ColumnModel.prototype.destroyColumns = function () {\n this.destroyOldColumns(this.primaryColumnTree);\n this.destroyOldColumns(this.secondaryBalancedTree);\n this.destroyOldColumns(this.groupAutoColsBalancedTree);\n };\n ColumnModel.prototype.createColumnsFromColumnDefs = function (colsPreviouslyExisted, source) {\n var _this = this;\n if (source === void 0) { source = 'api'; }\n // only need to dispatch before/after events if updating columns, never if setting columns for first time\n var dispatchEventsFunc = colsPreviouslyExisted ? this.compareColumnStatesAndDispatchEvents(source) : undefined;\n // always invalidate cache on changing columns, as the column id's for the new columns\n // could overlap with the old id's, so the cache would return old values for new columns.\n this.valueCache.expire();\n // NOTE ==================\n // we should be destroying the existing columns and groups if they exist, for example, the original column\n // group adds a listener to the columns, it should be also removing the listeners\n this.autoGroupsNeedBuilding = true;\n var oldPrimaryColumns = this.primaryColumns;\n var oldPrimaryTree = this.primaryColumnTree;\n var balancedTreeResult = this.columnFactory.createColumnTree(this.columnDefs, true, oldPrimaryTree);\n this.destroyOldColumns(this.primaryColumnTree, balancedTreeResult.columnTree);\n this.primaryColumnTree = balancedTreeResult.columnTree;\n this.primaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n this.primaryColumnsMap = {};\n this.primaryColumns.forEach(function (col) { return _this.primaryColumnsMap[col.getId()] = col; });\n this.extractRowGroupColumns(source, oldPrimaryColumns);\n this.extractPivotColumns(source, oldPrimaryColumns);\n this.extractValueColumns(source, oldPrimaryColumns);\n this.ready = true;\n // if we are showing secondary columns, then no need to update grid columns\n // at this point, as it's the pivot service responsibility to change these\n // if we are no longer pivoting (ie and need to revert back to primary, otherwise\n // we shouldn't be touching the primary).\n var gridColsNotProcessed = this.gridColsArePrimary === undefined;\n var processGridCols = this.gridColsArePrimary || gridColsNotProcessed;\n if (processGridCols) {\n this.updateGridColumns();\n if (colsPreviouslyExisted && !this.gridOptionsService.is('maintainColumnOrder')) {\n this.orderGridColumnsLikePrimary();\n }\n this.updateDisplayedColumns(source);\n this.checkViewportColumns();\n }\n // this event is not used by AG Grid, but left here for backwards compatibility,\n // in case applications use it\n this.dispatchEverythingChanged(source);\n if (dispatchEventsFunc) {\n dispatchEventsFunc();\n }\n this.dispatchNewColumnsLoaded();\n };\n ColumnModel.prototype.dispatchNewColumnsLoaded = function () {\n var newColumnsLoadedEvent = {\n type: Events.EVENT_NEW_COLUMNS_LOADED\n };\n this.eventService.dispatchEvent(newColumnsLoadedEvent);\n };\n // this event is legacy, no grid code listens to it. instead the grid listens to New Columns Loaded\n ColumnModel.prototype.dispatchEverythingChanged = function (source) {\n if (source === void 0) { source = 'api'; }\n var eventEverythingChanged = {\n type: Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n source: source\n };\n this.eventService.dispatchEvent(eventEverythingChanged);\n };\n ColumnModel.prototype.orderGridColumnsLikePrimary = function () {\n var _this = this;\n var primaryColumns = this.primaryColumns;\n if (!primaryColumns) {\n return;\n }\n this.gridColumns.sort(function (colA, colB) {\n var primaryIndexA = primaryColumns.indexOf(colA);\n var primaryIndexB = primaryColumns.indexOf(colB);\n // if both cols are present in primary, then we just return the position,\n // so position is maintained.\n var indexAPresent = primaryIndexA >= 0;\n var indexBPresent = primaryIndexB >= 0;\n if (indexAPresent && indexBPresent) {\n return primaryIndexA - primaryIndexB;\n }\n if (indexAPresent) {\n // B is auto group column, so put B first\n return 1;\n }\n if (indexBPresent) {\n // A is auto group column, so put A first\n return -1;\n }\n // otherwise both A and B are auto-group columns. so we just keep the order\n // as they were already in.\n var gridIndexA = _this.gridColumns.indexOf(colA);\n var gridIndexB = _this.gridColumns.indexOf(colB);\n return gridIndexA - gridIndexB;\n });\n this.gridColumns = this.placeLockedColumns(this.gridColumns);\n };\n ColumnModel.prototype.getAllDisplayedAutoHeightCols = function () {\n return this.displayedAutoHeightCols;\n };\n ColumnModel.prototype.setViewport = function () {\n if (this.gridOptionsService.is('enableRtl')) {\n this.viewportLeft = this.bodyWidth - this.scrollPosition - this.scrollWidth;\n this.viewportRight = this.bodyWidth - this.scrollPosition;\n }\n else {\n this.viewportLeft = this.scrollPosition;\n this.viewportRight = this.scrollWidth + this.scrollPosition;\n }\n };\n // used by clipboard service, to know what columns to paste into\n ColumnModel.prototype.getDisplayedColumnsStartingAt = function (column) {\n var currentColumn = column;\n var columns = [];\n while (currentColumn != null) {\n columns.push(currentColumn);\n currentColumn = this.getDisplayedColAfter(currentColumn);\n }\n return columns;\n };\n // checks what columns are currently displayed due to column virtualisation. dispatches an event\n // if the list of columns has changed.\n // + setColumnWidth(), setViewportPosition(), setColumnDefs(), sizeColumnsToFit()\n ColumnModel.prototype.checkViewportColumns = function () {\n // check displayCenterColumnTree exists first, as it won't exist when grid is initialising\n if (this.displayedColumnsCenter == null) {\n return;\n }\n var viewportColumnsChanged = this.extractViewport();\n if (!viewportColumnsChanged) {\n return;\n }\n var event = {\n type: Events.EVENT_VIRTUAL_COLUMNS_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.setViewportPosition = function (scrollWidth, scrollPosition) {\n if (scrollWidth !== this.scrollWidth || scrollPosition !== this.scrollPosition || this.bodyWidthDirty) {\n this.scrollWidth = scrollWidth;\n this.scrollPosition = scrollPosition;\n // we need to call setVirtualViewportLeftAndRight() at least once after the body width changes,\n // as the viewport can stay the same, but in RTL, if body width changes, we need to work out the\n // virtual columns again\n this.bodyWidthDirty = true;\n this.setViewport();\n if (this.ready) {\n this.checkViewportColumns();\n }\n }\n };\n ColumnModel.prototype.isPivotMode = function () {\n return this.pivotMode;\n };\n ColumnModel.prototype.isPivotSettingAllowed = function (pivot) {\n if (pivot && this.gridOptionsService.isTreeData()) {\n console.warn(\"AG Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'\");\n return false;\n }\n return true;\n };\n ColumnModel.prototype.setPivotMode = function (pivotMode, source) {\n if (source === void 0) { source = 'api'; }\n if (pivotMode === this.pivotMode || !this.isPivotSettingAllowed(this.pivotMode)) {\n return;\n }\n this.pivotMode = pivotMode;\n // we need to update grid columns to cover the scenario where user has groupDisplayType = 'custom', as\n // this means we don't use auto group column UNLESS we are in pivot mode (it's mandatory in pivot mode),\n // so need to updateGridColumn() to check it autoGroupCol needs to be added / removed\n this.autoGroupsNeedBuilding = true;\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n var event = {\n type: Events.EVENT_COLUMN_PIVOT_MODE_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {\n if (missing(this.secondaryColumns)) {\n return null;\n }\n var valueColumnToFind = this.getPrimaryColumn(valueColKey);\n var foundColumn = null;\n this.secondaryColumns.forEach(function (column) {\n var thisPivotKeys = column.getColDef().pivotKeys;\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotKeyMatches = areEqual(thisPivotKeys, pivotKeys);\n var pivotValueMatches = pivotValueColumn === valueColumnToFind;\n if (pivotKeyMatches && pivotValueMatches) {\n foundColumn = column;\n }\n });\n return foundColumn;\n };\n ColumnModel.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('columnModel');\n };\n ColumnModel.prototype.setFirstRightAndLastLeftPinned = function (source) {\n var lastLeft;\n var firstRight;\n if (this.gridOptionsService.is('enableRtl')) {\n lastLeft = this.displayedColumnsLeft ? this.displayedColumnsLeft[0] : null;\n firstRight = this.displayedColumnsRight ? last(this.displayedColumnsRight) : null;\n }\n else {\n lastLeft = this.displayedColumnsLeft ? last(this.displayedColumnsLeft) : null;\n firstRight = this.displayedColumnsRight ? this.displayedColumnsRight[0] : null;\n }\n this.gridColumns.forEach(function (column) {\n column.setLastLeftPinned(column === lastLeft, source);\n column.setFirstRightPinned(column === firstRight, source);\n });\n };\n ColumnModel.prototype.autoSizeColumns = function (params) {\n var _this = this;\n var columns = params.columns, skipHeader = params.skipHeader, skipHeaderGroups = params.skipHeaderGroups, stopAtGroup = params.stopAtGroup, _a = params.source, source = _a === void 0 ? 'api' : _a;\n // because of column virtualisation, we can only do this function on columns that are\n // actually rendered, as non-rendered columns (outside the viewport and not rendered\n // due to column virtualisation) are not present. this can result in all rendered columns\n // getting narrowed, which in turn introduces more rendered columns on the RHS which\n // did not get autosized in the original run, leaving the visible grid with columns on\n // the LHS sized, but RHS no. so we keep looping through the visible columns until\n // no more cols are available (rendered) to be resized\n // we autosize after animation frames finish in case any cell renderers need to complete first. this can\n // happen eg if client code is calling api.autoSizeAllColumns() straight after grid is initialised, but grid\n // hasn't fully drawn out all the cells yet (due to cell renderers in animation frames).\n this.animationFrameService.flushAllFrames();\n // keep track of which cols we have resized in here\n var columnsAutosized = [];\n // initialise with anything except 0 so that while loop executes at least once\n var changesThisTimeAround = -1;\n var shouldSkipHeader = skipHeader != null ? skipHeader : this.gridOptionsService.is('skipHeaderOnAutoSize');\n var shouldSkipHeaderGroups = skipHeaderGroups != null ? skipHeaderGroups : shouldSkipHeader;\n while (changesThisTimeAround !== 0) {\n changesThisTimeAround = 0;\n this.actionOnGridColumns(columns, function (column) {\n // if already autosized, skip it\n if (columnsAutosized.indexOf(column) >= 0) {\n return false;\n }\n // get how wide this col should be\n var preferredWidth = _this.autoWidthCalculator.getPreferredWidthForColumn(column, shouldSkipHeader);\n // preferredWidth = -1 if this col is not on the screen\n if (preferredWidth > 0) {\n var newWidth = _this.normaliseColumnWidth(column, preferredWidth);\n column.setActualWidth(newWidth, source);\n columnsAutosized.push(column);\n changesThisTimeAround++;\n }\n return true;\n }, source);\n }\n if (!shouldSkipHeaderGroups) {\n this.autoSizeColumnGroupsByColumns(columns, source, stopAtGroup);\n }\n this.dispatchColumnResizedEvent(columnsAutosized, true, 'autosizeColumns');\n };\n ColumnModel.prototype.dispatchColumnResizedEvent = function (columns, finished, source, flexColumns) {\n if (flexColumns === void 0) { flexColumns = null; }\n if (columns && columns.length) {\n var event_1 = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: columns,\n column: columns.length === 1 ? columns[0] : null,\n flexColumns: flexColumns,\n finished: finished,\n source: source\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ColumnModel.prototype.dispatchColumnChangedEvent = function (type, columns, source) {\n var event = {\n type: type,\n columns: columns,\n column: (columns && columns.length == 1) ? columns[0] : null,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.dispatchColumnMovedEvent = function (params) {\n var movedColumns = params.movedColumns, source = params.source, toIndex = params.toIndex, finished = params.finished;\n var event = {\n type: Events.EVENT_COLUMN_MOVED,\n columns: movedColumns,\n column: movedColumns && movedColumns.length === 1 ? movedColumns[0] : null,\n toIndex: toIndex,\n finished: finished,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.dispatchColumnPinnedEvent = function (changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n // if just one column, we use this, otherwise we don't include the col\n var column = changedColumns.length === 1 ? changedColumns[0] : null;\n // only include visible if it's common in all columns\n var pinned = this.getCommonValue(changedColumns, function (col) { return col.getPinned(); });\n var event = {\n type: Events.EVENT_COLUMN_PINNED,\n // mistake in typing, 'undefined' should be allowed, as 'null' means 'not pinned'\n pinned: pinned != null ? pinned : null,\n columns: changedColumns,\n column: column,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.dispatchColumnVisibleEvent = function (changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n // if just one column, we use this, otherwise we don't include the col\n var column = changedColumns.length === 1 ? changedColumns[0] : null;\n // only include visible if it's common in all columns\n var visible = this.getCommonValue(changedColumns, function (col) { return col.isVisible(); });\n var event = {\n type: Events.EVENT_COLUMN_VISIBLE,\n visible: visible,\n columns: changedColumns,\n column: column,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.autoSizeColumn = function (key, skipHeader, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.autoSizeColumns({ columns: [key], skipHeader: skipHeader, skipHeaderGroups: true, source: source });\n }\n };\n ColumnModel.prototype.autoSizeColumnGroupsByColumns = function (keys, source, stopAtGroup) {\n var e_1, _a, e_2, _b;\n var columnGroups = new Set();\n var columns = this.getGridColumns(keys);\n columns.forEach(function (col) {\n var parent = col.getParent();\n while (parent && parent != stopAtGroup) {\n if (!parent.isPadding()) {\n columnGroups.add(parent);\n }\n parent = parent.getParent();\n }\n });\n var headerGroupCtrl;\n var resizedColumns = [];\n try {\n for (var columnGroups_1 = __values$6(columnGroups), columnGroups_1_1 = columnGroups_1.next(); !columnGroups_1_1.done; columnGroups_1_1 = columnGroups_1.next()) {\n var columnGroup = columnGroups_1_1.value;\n try {\n for (var _c = (e_2 = void 0, __values$6(this.ctrlsService.getHeaderRowContainerCtrls())), _d = _c.next(); !_d.done; _d = _c.next()) {\n var headerContainerCtrl = _d.value;\n headerGroupCtrl = headerContainerCtrl.getHeaderCtrlForColumn(columnGroup);\n if (headerGroupCtrl) {\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (headerGroupCtrl) {\n headerGroupCtrl.resizeLeafColumnsToFit(source);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (columnGroups_1_1 && !columnGroups_1_1.done && (_a = columnGroups_1.return)) _a.call(columnGroups_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return resizedColumns;\n };\n ColumnModel.prototype.autoSizeAllColumns = function (skipHeader, source) {\n if (source === void 0) { source = \"api\"; }\n var allDisplayedColumns = this.getAllDisplayedColumns();\n this.autoSizeColumns({ columns: allDisplayedColumns, skipHeader: skipHeader, source: source });\n };\n // Possible candidate for reuse (alot of recursive traversal duplication)\n ColumnModel.prototype.getColumnsFromTree = function (rootColumns) {\n var result = [];\n var recursiveFindColumns = function (childColumns) {\n for (var i = 0; i < childColumns.length; i++) {\n var child = childColumns[i];\n if (child instanceof Column) {\n result.push(child);\n }\n else if (child instanceof ProvidedColumnGroup) {\n recursiveFindColumns(child.getChildren());\n }\n }\n };\n recursiveFindColumns(rootColumns);\n return result;\n };\n ColumnModel.prototype.getAllDisplayedTrees = function () {\n if (this.displayedTreeLeft && this.displayedTreeRight && this.displayedTreeCentre) {\n return this.displayedTreeLeft\n .concat(this.displayedTreeCentre)\n .concat(this.displayedTreeRight);\n }\n return null;\n };\n // + columnSelectPanel\n ColumnModel.prototype.getPrimaryColumnTree = function () {\n return this.primaryColumnTree;\n };\n // + gridPanel -> for resizing the body and setting top margin\n ColumnModel.prototype.getHeaderRowCount = function () {\n return this.gridHeaderRowCount;\n };\n // + headerRenderer -> setting pinned body width\n ColumnModel.prototype.getDisplayedTreeLeft = function () {\n return this.displayedTreeLeft;\n };\n // + headerRenderer -> setting pinned body width\n ColumnModel.prototype.getDisplayedTreeRight = function () {\n return this.displayedTreeRight;\n };\n // + headerRenderer -> setting pinned body width\n ColumnModel.prototype.getDisplayedTreeCentre = function () {\n return this.displayedTreeCentre;\n };\n // gridPanel -> ensureColumnVisible\n ColumnModel.prototype.isColumnDisplayed = function (column) {\n return this.getAllDisplayedColumns().indexOf(column) >= 0;\n };\n // + csvCreator\n ColumnModel.prototype.getAllDisplayedColumns = function () {\n return this.displayedColumns;\n };\n ColumnModel.prototype.getViewportColumns = function () {\n return this.viewportColumns;\n };\n ColumnModel.prototype.getDisplayedLeftColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedColumnsLeft;\n }\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsLeft);\n };\n ColumnModel.prototype.getDisplayedRightColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedColumnsRight;\n }\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsRight);\n };\n ColumnModel.prototype.isColSpanActive = function () {\n return this.colSpanActive;\n };\n ColumnModel.prototype.getDisplayedColumnsForRow = function (rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {\n var result = [];\n var lastConsideredCol = null;\n var _loop_1 = function (i) {\n var col = displayedColumns[i];\n var maxAllowedColSpan = displayedColumns.length - i;\n var colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);\n var columnsToCheckFilter = [col];\n if (colSpan > 1) {\n var colsToRemove = colSpan - 1;\n for (var j = 1; j <= colsToRemove; j++) {\n columnsToCheckFilter.push(displayedColumns[i + j]);\n }\n i += colsToRemove;\n }\n // see which cols we should take out for column virtualisation\n var filterPasses;\n if (filterCallback) {\n // if user provided a callback, means some columns may not be in the viewport.\n // the user will NOT provide a callback if we are talking about pinned areas,\n // as pinned areas have no horizontal scroll and do not virtualise the columns.\n // if lots of columns, that means column spanning, and we set filterPasses = true\n // if one or more of the columns spanned pass the filter.\n filterPasses = false;\n columnsToCheckFilter.forEach(function (colForFilter) {\n if (filterCallback(colForFilter)) {\n filterPasses = true;\n }\n });\n }\n else {\n filterPasses = true;\n }\n if (filterPasses) {\n if (result.length === 0 && lastConsideredCol) {\n var gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;\n if (gapBeforeColumn) {\n result.push(lastConsideredCol);\n }\n }\n result.push(col);\n }\n lastConsideredCol = col;\n out_i_1 = i;\n };\n var out_i_1;\n for (var i = 0; i < displayedColumns.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n return result;\n };\n // + rowRenderer\n // if we are not column spanning, this just returns back the virtual centre columns,\n // however if we are column spanning, then different rows can have different virtual\n // columns, so we have to work out the list for each individual row.\n ColumnModel.prototype.getViewportCenterColumnsForRow = function (rowNode) {\n var _this = this;\n if (!this.colSpanActive) {\n return this.viewportColumnsCenter;\n }\n var emptySpaceBeforeColumn = function (col) {\n var left = col.getLeft();\n return exists(left) && left > _this.viewportLeft;\n };\n // if doing column virtualisation, then we filter based on the viewport.\n var filterCallback = this.suppressColumnVirtualisation ? null : this.isColumnInRowViewport.bind(this);\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsCenter, filterCallback, emptySpaceBeforeColumn);\n };\n ColumnModel.prototype.getAriaColumnIndex = function (col) {\n return this.getAllGridColumns().indexOf(col) + 1;\n };\n ColumnModel.prototype.isColumnInHeaderViewport = function (col) {\n // for headers, we never filter out autoHeaderHeight columns, if calculating\n if (col.isAutoHeaderHeight()) {\n return true;\n }\n return this.isColumnInRowViewport(col);\n };\n ColumnModel.prototype.isColumnInRowViewport = function (col) {\n // we never filter out autoHeight columns, as we need them in the DOM for calculating Auto Height\n if (col.isAutoHeight()) {\n return true;\n }\n var columnLeft = col.getLeft() || 0;\n var columnRight = columnLeft + col.getActualWidth();\n // adding 200 for buffer size, so some cols off viewport are rendered.\n // this helps horizontal scrolling so user rarely sees white space (unless\n // they scroll horizontally fast). however we are conservative, as the more\n // buffer the slower the vertical redraw speed\n var leftBounds = this.viewportLeft - 200;\n var rightBounds = this.viewportRight + 200;\n var columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;\n var columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;\n return !columnToMuchLeft && !columnToMuchRight;\n };\n // used by:\n // + angularGrid -> setting pinned body width\n // note: this should be cached\n ColumnModel.prototype.getDisplayedColumnsLeftWidth = function () {\n return this.getWidthOfColsInList(this.displayedColumnsLeft);\n };\n // note: this should be cached\n ColumnModel.prototype.getDisplayedColumnsRightWidth = function () {\n return this.getWidthOfColsInList(this.displayedColumnsRight);\n };\n ColumnModel.prototype.updatePrimaryColumnList = function (keys, masterList, actionIsAdd, columnCallback, eventType, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n if (!keys || missingOrEmpty(keys)) {\n return;\n }\n var atLeastOne = false;\n keys.forEach(function (key) {\n var columnToAdd = _this.getPrimaryColumn(key);\n if (!columnToAdd) {\n return;\n }\n if (actionIsAdd) {\n if (masterList.indexOf(columnToAdd) >= 0) {\n return;\n }\n masterList.push(columnToAdd);\n }\n else {\n if (masterList.indexOf(columnToAdd) < 0) {\n return;\n }\n removeFromArray(masterList, columnToAdd);\n }\n columnCallback(columnToAdd);\n atLeastOne = true;\n });\n if (!atLeastOne) {\n return;\n }\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n var event = {\n type: eventType,\n columns: masterList,\n column: masterList.length === 1 ? masterList[0] : null,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.setRowGroupColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.setPrimaryColumnList(colKeys, this.rowGroupColumns, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.setRowGroupActive.bind(this), source);\n };\n ColumnModel.prototype.setRowGroupActive = function (active, column, source) {\n if (active === column.isRowGroupActive()) {\n return;\n }\n column.setRowGroupActive(active, source);\n if (active && !this.gridOptionsService.is('suppressRowGroupHidesColumns')) {\n this.setColumnVisible(column, false, source);\n }\n if (!active && !this.gridOptionsService.is('suppressMakeColumnVisibleAfterUnGroup')) {\n this.setColumnVisible(column, true, source);\n }\n };\n ColumnModel.prototype.addRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.addRowGroupColumns([key], source);\n }\n };\n ColumnModel.prototype.addRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, true, this.setRowGroupActive.bind(this, true), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnModel.prototype.removeRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, false, this.setRowGroupActive.bind(this, false), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnModel.prototype.removeRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.removeRowGroupColumns([key], source);\n }\n };\n ColumnModel.prototype.addPivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, true, function (column) { return column.setPivotActive(true, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnModel.prototype.setPivotColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.pivotColumns, Events.EVENT_COLUMN_PIVOT_CHANGED, function (added, column) {\n column.setPivotActive(added, source);\n }, source);\n };\n ColumnModel.prototype.addPivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.addPivotColumns([key], source);\n };\n ColumnModel.prototype.removePivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, false, function (column) { return column.setPivotActive(false, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnModel.prototype.removePivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.removePivotColumns([key], source);\n };\n ColumnModel.prototype.setPrimaryColumnList = function (colKeys, masterList, eventName, columnCallback, source) {\n var _this = this;\n masterList.length = 0;\n if (exists(colKeys)) {\n colKeys.forEach(function (key) {\n var column = _this.getPrimaryColumn(key);\n if (column) {\n masterList.push(column);\n }\n });\n }\n (this.primaryColumns || []).forEach(function (column) {\n var added = masterList.indexOf(column) >= 0;\n columnCallback(added, column);\n });\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n this.dispatchColumnChangedEvent(eventName, masterList, source);\n };\n ColumnModel.prototype.setValueColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.valueColumns, Events.EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this), source);\n };\n ColumnModel.prototype.setValueActive = function (active, column, source) {\n if (active === column.isValueActive()) {\n return;\n }\n column.setValueActive(active, source);\n if (active && !column.getAggFunc()) {\n var initialAggFunc = this.aggFuncService.getDefaultAggFunc(column);\n column.setAggFunc(initialAggFunc);\n }\n };\n ColumnModel.prototype.addValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, true, this.setValueActive.bind(this, true), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n ColumnModel.prototype.addValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n if (colKey) {\n this.addValueColumns([colKey], source);\n }\n };\n ColumnModel.prototype.removeValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n this.removeValueColumns([colKey], source);\n };\n ColumnModel.prototype.removeValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, false, this.setValueActive.bind(this, false), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n // returns the width we can set to this col, taking into consideration min and max widths\n ColumnModel.prototype.normaliseColumnWidth = function (column, newWidth) {\n var minWidth = column.getMinWidth();\n if (exists(minWidth) && newWidth < minWidth) {\n newWidth = minWidth;\n }\n var maxWidth = column.getMaxWidth();\n if (exists(maxWidth) && column.isGreaterThanMax(newWidth)) {\n newWidth = maxWidth;\n }\n return newWidth;\n };\n ColumnModel.prototype.getPrimaryOrGridColumn = function (key) {\n var column = this.getPrimaryColumn(key);\n return column || this.getGridColumn(key);\n };\n ColumnModel.prototype.setColumnWidths = function (columnWidths, shiftKey, // @takeFromAdjacent - if user has 'shift' pressed, then pixels are taken from adjacent column\n finished, // @finished - ends up in the event, tells the user if more events are to come\n source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n var sets = [];\n columnWidths.forEach(function (columnWidth) {\n var col = _this.getPrimaryOrGridColumn(columnWidth.key);\n if (!col) {\n return;\n }\n sets.push({\n width: columnWidth.newWidth,\n ratios: [1],\n columns: [col]\n });\n // if user wants to do shift resize by default, then we invert the shift operation\n var defaultIsShift = _this.gridOptionsService.get('colResizeDefault') === 'shift';\n if (defaultIsShift) {\n shiftKey = !shiftKey;\n }\n if (shiftKey) {\n var otherCol = _this.getDisplayedColAfter(col);\n if (!otherCol) {\n return;\n }\n var widthDiff = col.getActualWidth() - columnWidth.newWidth;\n var otherColWidth = otherCol.getActualWidth() + widthDiff;\n sets.push({\n width: otherColWidth,\n ratios: [1],\n columns: [otherCol]\n });\n }\n });\n if (sets.length === 0) {\n return;\n }\n this.resizeColumnSets({\n resizeSets: sets,\n finished: finished,\n source: source\n });\n };\n ColumnModel.prototype.checkMinAndMaxWidthsForSet = function (columnResizeSet) {\n var columns = columnResizeSet.columns, width = columnResizeSet.width;\n // every col has a min width, so sum them all up and see if we have enough room\n // for all the min widths\n var minWidthAccumulated = 0;\n var maxWidthAccumulated = 0;\n var maxWidthActive = true;\n columns.forEach(function (col) {\n var minWidth = col.getMinWidth();\n minWidthAccumulated += minWidth || 0;\n var maxWidth = col.getMaxWidth();\n if (exists(maxWidth) && maxWidth > 0) {\n maxWidthAccumulated += maxWidth;\n }\n else {\n // if at least one columns has no max width, it means the group of columns\n // then has no max width, as at least one column can take as much width as possible\n maxWidthActive = false;\n }\n });\n var minWidthPasses = width >= minWidthAccumulated;\n var maxWidthPasses = !maxWidthActive || (width <= maxWidthAccumulated);\n return minWidthPasses && maxWidthPasses;\n };\n // method takes sets of columns and resizes them. either all sets will be resized, or nothing\n // be resized. this is used for example when user tries to resize a group and holds shift key,\n // then both the current group (grows), and the adjacent group (shrinks), will get resized,\n // so that's two sets for this method.\n ColumnModel.prototype.resizeColumnSets = function (params) {\n var _this = this;\n var resizeSets = params.resizeSets, finished = params.finished, source = params.source;\n var passMinMaxCheck = !resizeSets || resizeSets.every(function (columnResizeSet) { return _this.checkMinAndMaxWidthsForSet(columnResizeSet); });\n if (!passMinMaxCheck) {\n // even though we are not going to resize beyond min/max size, we still need to dispatch event when finished\n if (finished) {\n var columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;\n this.dispatchColumnResizedEvent(columns, finished, source);\n }\n return; // don't resize!\n }\n var changedCols = [];\n var allResizedCols = [];\n resizeSets.forEach(function (set) {\n var width = set.width, columns = set.columns, ratios = set.ratios;\n // keep track of pixels used, and last column gets the remaining,\n // to cater for rounding errors, and min width adjustments\n var newWidths = {};\n var finishedCols = {};\n columns.forEach(function (col) { return allResizedCols.push(col); });\n // the loop below goes through each col. if a col exceeds it's min/max width,\n // it then gets set to its min/max width and the column is removed marked as 'finished'\n // and the calculation is done again leaving this column out. take for example columns\n // {A, width: 50, maxWidth: 100}\n // {B, width: 50}\n // {C, width: 50}\n // and then the set is set to width 600 - on the first pass the grid tries to set each column\n // to 200. it checks A and sees 200 > 100 and so sets the width to 100. col A is then marked\n // as 'finished' and the calculation is done again with the remaining cols B and C, which end up\n // splitting the remaining 500 pixels.\n var finishedColsGrew = true;\n var loopCount = 0;\n var _loop_2 = function () {\n loopCount++;\n if (loopCount > 1000) {\n // this should never happen, but in the future, someone might introduce a bug here,\n // so we stop the browser from hanging and report bug properly\n console.error('AG Grid: infinite loop in resizeColumnSets');\n return \"break\";\n }\n finishedColsGrew = false;\n var subsetCols = [];\n var subsetRatioTotal = 0;\n var pixelsToDistribute = width;\n columns.forEach(function (col, index) {\n var thisColFinished = finishedCols[col.getId()];\n if (thisColFinished) {\n pixelsToDistribute -= newWidths[col.getId()];\n }\n else {\n subsetCols.push(col);\n var ratioThisCol = ratios[index];\n subsetRatioTotal += ratioThisCol;\n }\n });\n // because we are not using all of the ratios (cols can be missing),\n // we scale the ratio. if all columns are included, then subsetRatioTotal=1,\n // and so the ratioScale will be 1.\n var ratioScale = 1 / subsetRatioTotal;\n subsetCols.forEach(function (col, index) {\n var lastCol = index === (subsetCols.length - 1);\n var colNewWidth;\n if (lastCol) {\n colNewWidth = pixelsToDistribute;\n }\n else {\n colNewWidth = Math.round(ratios[index] * width * ratioScale);\n pixelsToDistribute -= colNewWidth;\n }\n var minWidth = col.getMinWidth();\n var maxWidth = col.getMaxWidth();\n if (exists(minWidth) && colNewWidth < minWidth) {\n colNewWidth = minWidth;\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n else if (exists(maxWidth) && maxWidth > 0 && colNewWidth > maxWidth) {\n colNewWidth = maxWidth;\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n newWidths[col.getId()] = colNewWidth;\n });\n };\n while (finishedColsGrew) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n columns.forEach(function (col) {\n var newWidth = newWidths[col.getId()];\n var actualWidth = col.getActualWidth();\n if (actualWidth !== newWidth) {\n col.setActualWidth(newWidth, source);\n changedCols.push(col);\n }\n });\n });\n // if no cols changed, then no need to update more or send event.\n var atLeastOneColChanged = changedCols.length > 0;\n var flexedCols = [];\n if (atLeastOneColChanged) {\n flexedCols = this.refreshFlexedColumns({ resizingCols: allResizedCols, skipSetLeft: true });\n this.setLeftValues(source);\n this.updateBodyWidths();\n this.checkViewportColumns();\n }\n // check for change first, to avoid unnecessary firing of events\n // however we always dispatch 'finished' events. this is important\n // when groups are resized, as if the group is changing slowly,\n // eg 1 pixel at a time, then each change will dispatch change events\n // in all the columns in the group, but only one with get the pixel.\n var colsForEvent = allResizedCols.concat(flexedCols);\n if (atLeastOneColChanged || finished) {\n this.dispatchColumnResizedEvent(colsForEvent, finished, source, flexedCols);\n }\n };\n ColumnModel.prototype.setColumnAggFunc = function (key, aggFunc, source) {\n if (source === void 0) { source = \"api\"; }\n if (!key) {\n return;\n }\n var column = this.getPrimaryColumn(key);\n if (!column) {\n return;\n }\n column.setAggFunc(aggFunc);\n this.dispatchColumnChangedEvent(Events.EVENT_COLUMN_VALUE_CHANGED, [column], source);\n };\n ColumnModel.prototype.moveRowGroupColumn = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.rowGroupColumns[fromIndex];\n this.rowGroupColumns.splice(fromIndex, 1);\n this.rowGroupColumns.splice(toIndex, 0, column);\n var event = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n columns: this.rowGroupColumns,\n column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.moveColumns = function (columnsToMoveKeys, toIndex, source, finished) {\n if (source === void 0) { source = \"api\"; }\n if (finished === void 0) { finished = true; }\n this.columnAnimationService.start();\n if (toIndex > this.gridColumns.length - columnsToMoveKeys.length) {\n console.warn('AG Grid: tried to insert columns in invalid location, toIndex = ' + toIndex);\n console.warn('AG Grid: remember that you should not count the moving columns when calculating the new index');\n return;\n }\n // we want to pull all the columns out first and put them into an ordered list\n var movedColumns = this.getGridColumns(columnsToMoveKeys);\n var failedRules = !this.doesMovePassRules(movedColumns, toIndex);\n if (failedRules) {\n return;\n }\n moveInArray(this.gridColumns, movedColumns, toIndex);\n this.updateDisplayedColumns(source);\n this.dispatchColumnMovedEvent({ movedColumns: movedColumns, source: source, toIndex: toIndex, finished: finished });\n this.columnAnimationService.finish();\n };\n ColumnModel.prototype.doesMovePassRules = function (columnsToMove, toIndex) {\n // make a copy of what the grid columns would look like after the move\n var proposedColumnOrder = this.getProposedColumnOrder(columnsToMove, toIndex);\n return this.doesOrderPassRules(proposedColumnOrder);\n };\n ColumnModel.prototype.doesOrderPassRules = function (gridOrder) {\n if (!this.doesMovePassMarryChildren(gridOrder)) {\n return false;\n }\n if (!this.doesMovePassLockedPositions(gridOrder)) {\n return false;\n }\n return true;\n };\n ColumnModel.prototype.getProposedColumnOrder = function (columnsToMove, toIndex) {\n var proposedColumnOrder = this.gridColumns.slice();\n moveInArray(proposedColumnOrder, columnsToMove, toIndex);\n return proposedColumnOrder;\n };\n // returns the provided cols sorted in same order as they appear in grid columns. eg if grid columns\n // contains [a,b,c,d,e] and col passed is [e,a] then the passed cols are sorted into [a,e]\n ColumnModel.prototype.sortColumnsLikeGridColumns = function (cols) {\n var _this = this;\n if (!cols || cols.length <= 1) {\n return;\n }\n var notAllColsInGridColumns = cols.filter(function (c) { return _this.gridColumns.indexOf(c) < 0; }).length > 0;\n if (notAllColsInGridColumns) {\n return;\n }\n cols.sort(function (a, b) {\n var indexA = _this.gridColumns.indexOf(a);\n var indexB = _this.gridColumns.indexOf(b);\n return indexA - indexB;\n });\n };\n ColumnModel.prototype.doesMovePassLockedPositions = function (proposedColumnOrder) {\n // Placement is a number indicating 'left' 'center' or 'right' as 0 1 2\n var lastPlacement = 0;\n var rulePassed = true;\n var lockPositionToPlacement = function (position) {\n if (!position) { // false or undefined\n return 1;\n }\n if (position === true) {\n return 0;\n }\n return position === 'left' ? 0 : 2; // Otherwise 'right'\n };\n proposedColumnOrder.forEach(function (col) {\n var placement = lockPositionToPlacement(col.getColDef().lockPosition);\n if (placement < lastPlacement) { // If placement goes down, we're not in the correct order\n rulePassed = false;\n }\n lastPlacement = placement;\n });\n return rulePassed;\n };\n ColumnModel.prototype.doesMovePassMarryChildren = function (allColumnsCopy) {\n var rulePassed = true;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (child) {\n if (!(child instanceof ProvidedColumnGroup)) {\n return;\n }\n var columnGroup = child;\n var colGroupDef = columnGroup.getColGroupDef();\n var marryChildren = colGroupDef && colGroupDef.marryChildren;\n if (!marryChildren) {\n return;\n }\n var newIndexes = [];\n columnGroup.getLeafColumns().forEach(function (col) {\n var newColIndex = allColumnsCopy.indexOf(col);\n newIndexes.push(newColIndex);\n });\n var maxIndex = Math.max.apply(Math, newIndexes);\n var minIndex = Math.min.apply(Math, newIndexes);\n // spread is how far the first column in this group is away from the last column\n var spread = maxIndex - minIndex;\n var maxSpread = columnGroup.getLeafColumns().length - 1;\n // if the columns\n if (spread > maxSpread) {\n rulePassed = false;\n }\n // console.log(`maxIndex = ${maxIndex}, minIndex = ${minIndex}, spread = ${spread}, maxSpread = ${maxSpread}, fail = ${spread > (count-1)}`)\n // console.log(allColumnsCopy.map( col => col.getColDef().field).join(','));\n });\n return rulePassed;\n };\n ColumnModel.prototype.moveColumn = function (key, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n this.moveColumns([key], toIndex, source);\n };\n ColumnModel.prototype.moveColumnByIndex = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.gridColumns[fromIndex];\n this.moveColumn(column, toIndex, source);\n };\n ColumnModel.prototype.getColumnDefs = function () {\n var _this = this;\n if (!this.primaryColumns) {\n return;\n }\n var cols = this.primaryColumns.slice();\n if (this.gridColsArePrimary) {\n cols.sort(function (a, b) { return _this.gridColumns.indexOf(a) - _this.gridColumns.indexOf(b); });\n }\n else if (this.lastPrimaryOrder) {\n cols.sort(function (a, b) { return _this.lastPrimaryOrder.indexOf(a) - _this.lastPrimaryOrder.indexOf(b); });\n }\n return this.columnDefFactory.buildColumnDefs(cols, this.rowGroupColumns, this.pivotColumns);\n };\n // used by:\n // + angularGrid -> for setting body width\n // + rowController -> setting main row widths (when inserting and resizing)\n // need to cache this\n ColumnModel.prototype.getBodyContainerWidth = function () {\n return this.bodyWidth;\n };\n ColumnModel.prototype.getContainerWidth = function (pinned) {\n switch (pinned) {\n case 'left':\n return this.leftWidth;\n case 'right':\n return this.rightWidth;\n default:\n return this.bodyWidth;\n }\n };\n // after setColumnWidth or updateGroupsAndDisplayedColumns\n ColumnModel.prototype.updateBodyWidths = function () {\n var newBodyWidth = this.getWidthOfColsInList(this.displayedColumnsCenter);\n var newLeftWidth = this.getWidthOfColsInList(this.displayedColumnsLeft);\n var newRightWidth = this.getWidthOfColsInList(this.displayedColumnsRight);\n // this is used by virtual col calculation, for RTL only, as a change to body width can impact displayed\n // columns, due to RTL inverting the y coordinates\n this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;\n var atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;\n if (atLeastOneChanged) {\n this.bodyWidth = newBodyWidth;\n this.leftWidth = newLeftWidth;\n this.rightWidth = newRightWidth;\n // when this fires, it is picked up by the gridPanel, which ends up in\n // gridPanel calling setWidthAndScrollPosition(), which in turn calls setViewportPosition()\n var event_2 = {\n type: Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n };\n this.eventService.dispatchEvent(event_2);\n }\n };\n // + rowController\n ColumnModel.prototype.getValueColumns = function () {\n return this.valueColumns ? this.valueColumns : [];\n };\n // + rowController\n ColumnModel.prototype.getPivotColumns = function () {\n return this.pivotColumns ? this.pivotColumns : [];\n };\n // + clientSideRowModel\n ColumnModel.prototype.isPivotActive = function () {\n return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;\n };\n // + toolPanel\n ColumnModel.prototype.getRowGroupColumns = function () {\n return this.rowGroupColumns ? this.rowGroupColumns : [];\n };\n // + rowController -> while inserting rows\n ColumnModel.prototype.getDisplayedCenterColumns = function () {\n return this.displayedColumnsCenter;\n };\n // + rowController -> while inserting rows\n ColumnModel.prototype.getDisplayedLeftColumns = function () {\n return this.displayedColumnsLeft;\n };\n ColumnModel.prototype.getDisplayedRightColumns = function () {\n return this.displayedColumnsRight;\n };\n ColumnModel.prototype.getDisplayedColumns = function (type) {\n switch (type) {\n case 'left':\n return this.getDisplayedLeftColumns();\n case 'right':\n return this.getDisplayedRightColumns();\n default:\n return this.getDisplayedCenterColumns();\n }\n };\n // used by:\n // + clientSideRowController -> sorting, building quick filter text\n // + headerRenderer -> sorting (clearing icon)\n ColumnModel.prototype.getAllPrimaryColumns = function () {\n return this.primaryColumns ? this.primaryColumns.slice() : null;\n };\n ColumnModel.prototype.getSecondaryColumns = function () {\n return this.secondaryColumns ? this.secondaryColumns.slice() : null;\n };\n ColumnModel.prototype.getAllColumnsForQuickFilter = function () {\n return this.columnsForQuickFilter;\n };\n // + moveColumnController\n ColumnModel.prototype.getAllGridColumns = function () {\n return this.gridColumns;\n };\n ColumnModel.prototype.isEmpty = function () {\n return missingOrEmpty(this.gridColumns);\n };\n ColumnModel.prototype.isRowGroupEmpty = function () {\n return missingOrEmpty(this.rowGroupColumns);\n };\n ColumnModel.prototype.setColumnVisible = function (key, visible, source) {\n if (source === void 0) { source = \"api\"; }\n this.setColumnsVisible([key], visible, source);\n };\n ColumnModel.prototype.setColumnsVisible = function (keys, visible, source) {\n if (visible === void 0) { visible = false; }\n if (source === void 0) { source = \"api\"; }\n this.applyColumnState({\n state: keys.map(function (key) { return ({\n colId: typeof key === 'string' ? key : key.getColId(),\n hide: !visible,\n }); }),\n }, source);\n };\n ColumnModel.prototype.setColumnPinned = function (key, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.setColumnsPinned([key], pinned, source);\n }\n };\n ColumnModel.prototype.setColumnsPinned = function (keys, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.gridOptionsService.isDomLayout('print')) {\n console.warn(\"AG Grid: Changing the column pinning status is not allowed with domLayout='print'\");\n return;\n }\n this.columnAnimationService.start();\n var actualPinned;\n if (pinned === true || pinned === 'left') {\n actualPinned = 'left';\n }\n else if (pinned === 'right') {\n actualPinned = 'right';\n }\n else {\n actualPinned = null;\n }\n this.actionOnGridColumns(keys, function (col) {\n if (col.getPinned() !== actualPinned) {\n col.setPinned(actualPinned);\n return true;\n }\n return false;\n }, source, function () {\n var event = {\n type: Events.EVENT_COLUMN_PINNED,\n pinned: actualPinned,\n column: null,\n columns: null,\n source: source\n };\n return event;\n });\n this.columnAnimationService.finish();\n };\n // does an action on a set of columns. provides common functionality for looking up the\n // columns based on key, getting a list of effected columns, and then updated the event\n // with either one column (if it was just one col) or a list of columns\n // used by: autoResize, setVisible, setPinned\n ColumnModel.prototype.actionOnGridColumns = function (// the column keys this action will be on\n keys, \n // the action to do - if this returns false, the column was skipped\n // and won't be included in the event\n action, \n // should return back a column event of the right type\n source, createEvent) {\n var _this = this;\n if (missingOrEmpty(keys)) {\n return;\n }\n var updatedColumns = [];\n keys.forEach(function (key) {\n var column = _this.getGridColumn(key);\n if (!column) {\n return;\n }\n // need to check for false with type (ie !== instead of !=)\n // as not returning anything (undefined) would also be false\n var resultOfAction = action(column);\n if (resultOfAction !== false) {\n updatedColumns.push(column);\n }\n });\n if (!updatedColumns.length) {\n return;\n }\n this.updateDisplayedColumns(source);\n if (exists(createEvent) && createEvent) {\n var event_3 = createEvent();\n event_3.columns = updatedColumns;\n event_3.column = updatedColumns.length === 1 ? updatedColumns[0] : null;\n this.eventService.dispatchEvent(event_3);\n }\n };\n ColumnModel.prototype.getDisplayedColBefore = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex > 0) {\n return allDisplayedColumns[oldIndex - 1];\n }\n return null;\n };\n // used by:\n // + rowRenderer -> for navigation\n ColumnModel.prototype.getDisplayedColAfter = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex < (allDisplayedColumns.length - 1)) {\n return allDisplayedColumns[oldIndex + 1];\n }\n return null;\n };\n ColumnModel.prototype.getDisplayedGroupAfter = function (columnGroup) {\n return this.getDisplayedGroupAtDirection(columnGroup, 'After');\n };\n ColumnModel.prototype.getDisplayedGroupBefore = function (columnGroup) {\n return this.getDisplayedGroupAtDirection(columnGroup, 'Before');\n };\n ColumnModel.prototype.getDisplayedGroupAtDirection = function (columnGroup, direction) {\n // pick the last displayed column in this group\n var requiredLevel = columnGroup.getProvidedColumnGroup().getLevel() + columnGroup.getPaddingLevel();\n var colGroupLeafColumns = columnGroup.getDisplayedLeafColumns();\n var col = direction === 'After' ? last(colGroupLeafColumns) : colGroupLeafColumns[0];\n var getDisplayColMethod = \"getDisplayedCol\" + direction;\n while (true) {\n // keep moving to the next col, until we get to another group\n var column = this[getDisplayColMethod](col);\n if (!column) {\n return null;\n }\n var groupPointer = this.getColumnGroupAtLevel(column, requiredLevel);\n if (groupPointer !== columnGroup) {\n return groupPointer;\n }\n }\n };\n ColumnModel.prototype.getColumnGroupAtLevel = function (column, level) {\n // get group at same level as the one we are looking for\n var groupPointer = column.getParent();\n var originalGroupLevel;\n var groupPointerLevel;\n while (true) {\n var groupPointerProvidedColumnGroup = groupPointer.getProvidedColumnGroup();\n originalGroupLevel = groupPointerProvidedColumnGroup.getLevel();\n groupPointerLevel = groupPointer.getPaddingLevel();\n if (originalGroupLevel + groupPointerLevel <= level) {\n break;\n }\n groupPointer = groupPointer.getParent();\n }\n return groupPointer;\n };\n ColumnModel.prototype.isPinningLeft = function () {\n return this.displayedColumnsLeft.length > 0;\n };\n ColumnModel.prototype.isPinningRight = function () {\n return this.displayedColumnsRight.length > 0;\n };\n ColumnModel.prototype.getPrimaryAndSecondaryAndAutoColumns = function () {\n var _a;\n return (_a = []).concat.apply(_a, __spread$k([\n this.primaryColumns || [],\n this.groupAutoColumns || [],\n this.secondaryColumns || [],\n ]));\n };\n ColumnModel.prototype.createStateItemFromColumn = function (column) {\n var rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;\n var pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;\n var aggFunc = column.isValueActive() ? column.getAggFunc() : null;\n var sort = column.getSort() != null ? column.getSort() : null;\n var sortIndex = column.getSortIndex() != null ? column.getSortIndex() : null;\n var flex = column.getFlex() != null && column.getFlex() > 0 ? column.getFlex() : null;\n var res = {\n colId: column.getColId(),\n width: column.getActualWidth(),\n hide: !column.isVisible(),\n pinned: column.getPinned(),\n sort: sort,\n sortIndex: sortIndex,\n aggFunc: aggFunc,\n rowGroup: column.isRowGroupActive(),\n rowGroupIndex: rowGroupIndex,\n pivot: column.isPivotActive(),\n pivotIndex: pivotIndex,\n flex: flex\n };\n return res;\n };\n ColumnModel.prototype.getColumnState = function () {\n if (missing(this.primaryColumns) || !this.isAlive()) {\n return [];\n }\n var colsForState = this.getPrimaryAndSecondaryAndAutoColumns();\n var res = colsForState.map(this.createStateItemFromColumn.bind(this));\n this.orderColumnStateList(res);\n return res;\n };\n ColumnModel.prototype.orderColumnStateList = function (columnStateList) {\n // for fast looking, store the index of each column\n var colIdToGridIndexMap = convertToMap(this.gridColumns.map(function (col, index) { return [col.getColId(), index]; }));\n columnStateList.sort(function (itemA, itemB) {\n var posA = colIdToGridIndexMap.has(itemA.colId) ? colIdToGridIndexMap.get(itemA.colId) : -1;\n var posB = colIdToGridIndexMap.has(itemB.colId) ? colIdToGridIndexMap.get(itemB.colId) : -1;\n return posA - posB;\n });\n };\n ColumnModel.prototype.resetColumnState = function (source) {\n // NOTE = there is one bug here that no customer has noticed - if a column has colDef.lockPosition,\n // this is ignored below when ordering the cols. to work, we should always put lockPosition cols first.\n // As a work around, developers should just put lockPosition columns first in their colDef list.\n if (source === void 0) { source = \"api\"; }\n // we can't use 'allColumns' as the order might of messed up, so get the primary ordered list\n var primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n var columnStates = [];\n // we start at 1000, so if user has mix of rowGroup and group specified, it will work with both.\n // eg IF user has ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=true,\n // THEN result will be ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=1000\n var letRowGroupIndex = 1000;\n var letPivotIndex = 1000;\n var colsToProcess = [];\n if (this.groupAutoColumns) {\n colsToProcess = colsToProcess.concat(this.groupAutoColumns);\n }\n if (primaryColumns) {\n colsToProcess = colsToProcess.concat(primaryColumns);\n }\n colsToProcess.forEach(function (column) {\n var getValueOrNull = function (a, b) { return a != null ? a : b != null ? b : null; };\n var colDef = column.getColDef();\n var sort = getValueOrNull(colDef.sort, colDef.initialSort);\n var sortIndex = getValueOrNull(colDef.sortIndex, colDef.initialSortIndex);\n var hide = getValueOrNull(colDef.hide, colDef.initialHide);\n var pinned = getValueOrNull(colDef.pinned, colDef.initialPinned);\n var width = getValueOrNull(colDef.width, colDef.initialWidth);\n var flex = getValueOrNull(colDef.flex, colDef.initialFlex);\n var rowGroupIndex = getValueOrNull(colDef.rowGroupIndex, colDef.initialRowGroupIndex);\n var rowGroup = getValueOrNull(colDef.rowGroup, colDef.initialRowGroup);\n if (rowGroupIndex == null && (rowGroup == null || rowGroup == false)) {\n rowGroupIndex = null;\n rowGroup = null;\n }\n var pivotIndex = getValueOrNull(colDef.pivotIndex, colDef.initialPivotIndex);\n var pivot = getValueOrNull(colDef.pivot, colDef.initialPivot);\n if (pivotIndex == null && (pivot == null || pivot == false)) {\n pivotIndex = null;\n pivot = null;\n }\n var aggFunc = getValueOrNull(colDef.aggFunc, colDef.initialAggFunc);\n var stateItem = {\n colId: column.getColId(),\n sort: sort,\n sortIndex: sortIndex,\n hide: hide,\n pinned: pinned,\n width: width,\n flex: flex,\n rowGroup: rowGroup,\n rowGroupIndex: rowGroupIndex,\n pivot: pivot,\n pivotIndex: pivotIndex,\n aggFunc: aggFunc,\n };\n if (missing(rowGroupIndex) && rowGroup) {\n stateItem.rowGroupIndex = letRowGroupIndex++;\n }\n if (missing(pivotIndex) && pivot) {\n stateItem.pivotIndex = letPivotIndex++;\n }\n columnStates.push(stateItem);\n });\n this.applyColumnState({ state: columnStates, applyOrder: true }, source);\n };\n ColumnModel.prototype.applyColumnState = function (params, source) {\n var _this = this;\n if (missingOrEmpty(this.primaryColumns)) {\n return false;\n }\n if (params && params.state && !params.state.forEach) {\n console.warn('AG Grid: applyColumnState() - the state attribute should be an array, however an array was not found. Please provide an array of items (one for each col you want to change) for state.');\n return false;\n }\n var applyStates = function (states, existingColumns, getById) {\n var dispatchEventsFunc = _this.compareColumnStatesAndDispatchEvents(source);\n _this.autoGroupsNeedBuilding = true;\n // at the end below, this list will have all columns we got no state for\n var columnsWithNoState = existingColumns.slice();\n var rowGroupIndexes = {};\n var pivotIndexes = {};\n var autoGroupColumnStates = [];\n // If pivoting is modified, these are the states we try to reapply after\n // the secondary columns are re-generated\n var unmatchedAndAutoStates = [];\n var unmatchedCount = 0;\n var previousRowGroupCols = _this.rowGroupColumns.slice();\n var previousPivotCols = _this.pivotColumns.slice();\n states.forEach(function (state) {\n var colId = state.colId || '';\n // auto group columns are re-created so deferring syncing with ColumnState\n var isAutoGroupColumn = colId.startsWith(GROUP_AUTO_COLUMN_ID);\n if (isAutoGroupColumn) {\n autoGroupColumnStates.push(state);\n unmatchedAndAutoStates.push(state);\n return;\n }\n var column = getById(colId);\n if (!column) {\n unmatchedAndAutoStates.push(state);\n unmatchedCount += 1;\n }\n else {\n _this.syncColumnWithStateItem(column, state, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);\n removeFromArray(columnsWithNoState, column);\n }\n });\n // anything left over, we got no data for, so add in the column as non-value, non-rowGroup and hidden\n var applyDefaultsFunc = function (col) {\n return _this.syncColumnWithStateItem(col, null, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);\n };\n columnsWithNoState.forEach(applyDefaultsFunc);\n // sort the lists according to the indexes that were provided\n var comparator = function (indexes, oldList, colA, colB) {\n var indexA = indexes[colA.getId()];\n var indexB = indexes[colB.getId()];\n var aHasIndex = indexA != null;\n var bHasIndex = indexB != null;\n if (aHasIndex && bHasIndex) {\n // both a and b are new cols with index, so sort on index\n return indexA - indexB;\n }\n if (aHasIndex) {\n // a has an index, so it should be before a\n return -1;\n }\n if (bHasIndex) {\n // b has an index, so it should be before a\n return 1;\n }\n var oldIndexA = oldList.indexOf(colA);\n var oldIndexB = oldList.indexOf(colB);\n var aHasOldIndex = oldIndexA >= 0;\n var bHasOldIndex = oldIndexB >= 0;\n if (aHasOldIndex && bHasOldIndex) {\n // both a and b are old cols, so sort based on last order\n return oldIndexA - oldIndexB;\n }\n if (aHasOldIndex) {\n // a is old, b is new, so b is first\n return -1;\n }\n // this bit does matter, means both are new cols\n // but without index or that b is old and a is new\n return 1;\n };\n _this.rowGroupColumns.sort(comparator.bind(_this, rowGroupIndexes, previousRowGroupCols));\n _this.pivotColumns.sort(comparator.bind(_this, pivotIndexes, previousPivotCols));\n _this.updateGridColumns();\n // sync newly created auto group columns with ColumnState\n var autoGroupColsCopy = _this.groupAutoColumns ? _this.groupAutoColumns.slice() : [];\n autoGroupColumnStates.forEach(function (stateItem) {\n var autoCol = _this.getAutoColumn(stateItem.colId);\n removeFromArray(autoGroupColsCopy, autoCol);\n _this.syncColumnWithStateItem(autoCol, stateItem, params.defaultState, null, null, true, source);\n });\n // autogroup cols with nothing else, apply the default\n autoGroupColsCopy.forEach(applyDefaultsFunc);\n _this.applyOrderAfterApplyState(params);\n _this.updateDisplayedColumns(source);\n _this.dispatchEverythingChanged(source);\n dispatchEventsFunc(); // Will trigger secondary column changes if pivoting modified\n return { unmatchedAndAutoStates: unmatchedAndAutoStates, unmatchedCount: unmatchedCount };\n };\n this.columnAnimationService.start();\n var _a = applyStates(params.state || [], this.primaryColumns || [], function (id) { return _this.getPrimaryColumn(id); }), unmatchedAndAutoStates = _a.unmatchedAndAutoStates, unmatchedCount = _a.unmatchedCount;\n // If there are still states left over, see if we can apply them to newly generated\n // secondary or auto columns. Also if defaults exist, ensure they are applied to secondary cols\n if (unmatchedAndAutoStates.length > 0 || exists(params.defaultState)) {\n unmatchedCount = applyStates(unmatchedAndAutoStates, this.secondaryColumns || [], function (id) { return _this.getSecondaryColumn(id); }).unmatchedCount;\n }\n this.columnAnimationService.finish();\n return unmatchedCount === 0; // Successful if no states unaccounted for\n };\n ColumnModel.prototype.applyOrderAfterApplyState = function (params) {\n var _this = this;\n if (!params.applyOrder || !params.state) {\n return;\n }\n var newOrder = [];\n var processedColIds = {};\n params.state.forEach(function (item) {\n if (!item.colId || processedColIds[item.colId]) {\n return;\n }\n var col = _this.gridColumnsMap[item.colId];\n if (col) {\n newOrder.push(col);\n processedColIds[item.colId] = true;\n }\n });\n // add in all other columns\n var autoGroupInsertIndex = 0;\n this.gridColumns.forEach(function (col) {\n var colId = col.getColId();\n var alreadyProcessed = processedColIds[colId] != null;\n if (alreadyProcessed) {\n return;\n }\n var isAutoGroupCol = colId.startsWith(GROUP_AUTO_COLUMN_ID);\n if (isAutoGroupCol) {\n // auto group columns, if missing from state list, are added to the start.\n // it's common to have autoGroup missing, as grouping could be on by default\n // on a column, but the user could of since removed the grouping via the UI.\n // if we don't inc the insert index, autoGroups will be inserted in reverse order\n insertIntoArray(newOrder, col, autoGroupInsertIndex++);\n }\n else {\n // normal columns, if missing from state list, are added at the end\n newOrder.push(col);\n }\n });\n // this is already done in updateGridColumns, however we changed the order above (to match the order of the state\n // columns) so we need to do it again. we could of put logic into the order above to take into account fixed\n // columns, however if we did then we would have logic for updating fixed columns twice. reusing the logic here\n // is less sexy for the code here, but it keeps consistency.\n newOrder = this.placeLockedColumns(newOrder);\n if (!this.doesMovePassMarryChildren(newOrder)) {\n console.warn('AG Grid: Applying column order broke a group where columns should be married together. Applying new order has been discarded.');\n return;\n }\n this.gridColumns = newOrder;\n };\n ColumnModel.prototype.compareColumnStatesAndDispatchEvents = function (source) {\n var _this = this;\n var startState = {\n rowGroupColumns: this.rowGroupColumns.slice(),\n pivotColumns: this.pivotColumns.slice(),\n valueColumns: this.valueColumns.slice()\n };\n var columnStateBefore = this.getColumnState();\n var columnStateBeforeMap = {};\n columnStateBefore.forEach(function (col) {\n columnStateBeforeMap[col.colId] = col;\n });\n return function () {\n var colsForState = _this.getPrimaryAndSecondaryAndAutoColumns();\n // dispatches generic ColumnEvents where all columns are returned rather than what has changed\n var dispatchWhenListsDifferent = function (eventType, colsBefore, colsAfter, idMapper) {\n var beforeList = colsBefore.map(idMapper);\n var afterList = colsAfter.map(idMapper);\n var unchanged = areEqual(beforeList, afterList);\n if (unchanged) {\n return;\n }\n // returning all columns rather than what has changed!\n var event = {\n type: eventType,\n columns: colsAfter,\n column: colsAfter.length === 1 ? colsAfter[0] : null,\n source: source\n };\n _this.eventService.dispatchEvent(event);\n };\n // determines which columns have changed according to supplied predicate\n var getChangedColumns = function (changedPredicate) {\n var changedColumns = [];\n colsForState.forEach(function (column) {\n var colStateBefore = columnStateBeforeMap[column.getColId()];\n if (colStateBefore && changedPredicate(colStateBefore, column)) {\n changedColumns.push(column);\n }\n });\n return changedColumns;\n };\n var columnIdMapper = function (c) { return c.getColId(); };\n dispatchWhenListsDifferent(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, startState.rowGroupColumns, _this.rowGroupColumns, columnIdMapper);\n dispatchWhenListsDifferent(Events.EVENT_COLUMN_PIVOT_CHANGED, startState.pivotColumns, _this.pivotColumns, columnIdMapper);\n var valueChangePredicate = function (cs, c) {\n var oldActive = cs.aggFunc != null;\n var activeChanged = oldActive != c.isValueActive();\n // we only check aggFunc if the agg is active\n var aggFuncChanged = oldActive && cs.aggFunc != c.getAggFunc();\n return activeChanged || aggFuncChanged;\n };\n var changedValues = getChangedColumns(valueChangePredicate);\n if (changedValues.length > 0) {\n // we pass all value columns, now the ones that changed. this is the same\n // as pivot and rowGroup cols, but different to all other properties below.\n // this is more for backwards compatibility, as it's always been this way.\n // really it should be the other way, as the order of the cols makes no difference\n // for valueColumns (apart from displaying them in the tool panel).\n _this.dispatchColumnChangedEvent(Events.EVENT_COLUMN_VALUE_CHANGED, _this.valueColumns, source);\n }\n var resizeChangePredicate = function (cs, c) { return cs.width != c.getActualWidth(); };\n _this.dispatchColumnResizedEvent(getChangedColumns(resizeChangePredicate), true, source);\n var pinnedChangePredicate = function (cs, c) { return cs.pinned != c.getPinned(); };\n _this.dispatchColumnPinnedEvent(getChangedColumns(pinnedChangePredicate), source);\n var visibilityChangePredicate = function (cs, c) { return cs.hide == c.isVisible(); };\n _this.dispatchColumnVisibleEvent(getChangedColumns(visibilityChangePredicate), source);\n var sortChangePredicate = function (cs, c) { return cs.sort != c.getSort() || cs.sortIndex != c.getSortIndex(); };\n if (getChangedColumns(sortChangePredicate).length > 0) {\n _this.sortController.dispatchSortChangedEvents(source);\n }\n // special handling for moved column events\n _this.normaliseColumnMovedEventForColumnState(columnStateBefore, source);\n };\n };\n ColumnModel.prototype.getCommonValue = function (cols, valueGetter) {\n if (!cols || cols.length == 0) {\n return undefined;\n }\n // compare each value to the first value. if nothing differs, then value is common so return it.\n var firstValue = valueGetter(cols[0]);\n for (var i = 1; i < cols.length; i++) {\n if (firstValue !== valueGetter(cols[i])) {\n // values differ, no common value\n return undefined;\n }\n }\n return firstValue;\n };\n ColumnModel.prototype.normaliseColumnMovedEventForColumnState = function (colStateBefore, source) {\n // we are only interested in columns that were both present and visible before and after\n var _this = this;\n var colStateAfter = this.getColumnState();\n var colStateAfterMapped = {};\n colStateAfter.forEach(function (s) { return colStateAfterMapped[s.colId] = s; });\n // get id's of cols in both before and after lists\n var colsIntersectIds = {};\n colStateBefore.forEach(function (s) {\n if (colStateAfterMapped[s.colId]) {\n colsIntersectIds[s.colId] = true;\n }\n });\n // filter state lists, so we only have cols that were present before and after\n var beforeFiltered = colStateBefore.filter(function (c) { return colsIntersectIds[c.colId]; });\n var afterFiltered = colStateAfter.filter(function (c) { return colsIntersectIds[c.colId]; });\n // see if any cols are in a different location\n var movedColumns = [];\n afterFiltered.forEach(function (csAfter, index) {\n var csBefore = beforeFiltered && beforeFiltered[index];\n if (csBefore && csBefore.colId !== csAfter.colId) {\n var gridCol = _this.getGridColumn(csBefore.colId);\n if (gridCol) {\n movedColumns.push(gridCol);\n }\n }\n });\n if (!movedColumns.length) {\n return;\n }\n this.dispatchColumnMovedEvent({ movedColumns: movedColumns, source: source, finished: true });\n };\n ColumnModel.prototype.syncColumnWithStateItem = function (column, stateItem, defaultState, rowGroupIndexes, pivotIndexes, autoCol, source) {\n if (!column) {\n return;\n }\n var getValue = function (key1, key2) {\n var obj = { value1: undefined, value2: undefined };\n var calculated = false;\n if (stateItem) {\n if (stateItem[key1] !== undefined) {\n obj.value1 = stateItem[key1];\n calculated = true;\n }\n if (exists(key2) && stateItem[key2] !== undefined) {\n obj.value2 = stateItem[key2];\n calculated = true;\n }\n }\n if (!calculated && defaultState) {\n if (defaultState[key1] !== undefined) {\n obj.value1 = defaultState[key1];\n }\n if (exists(key2) && defaultState[key2] !== undefined) {\n obj.value2 = defaultState[key2];\n }\n }\n return obj;\n };\n // following ensures we are left with boolean true or false, eg converts (null, undefined, 0) all to true\n var hide = getValue('hide').value1;\n if (hide !== undefined) {\n column.setVisible(!hide, source);\n }\n // sets pinned to 'left' or 'right'\n var pinned = getValue('pinned').value1;\n if (pinned !== undefined) {\n column.setPinned(pinned);\n }\n // if width provided and valid, use it, otherwise stick with the old width\n var minColWidth = this.columnUtils.calculateColMinWidth(column.getColDef());\n // flex\n var flex = getValue('flex').value1;\n if (flex !== undefined) {\n column.setFlex(flex);\n }\n // width - we only set width if column is not flexing\n var noFlexThisCol = column.getFlex() <= 0;\n if (noFlexThisCol) {\n // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)\n var width = getValue('width').value1;\n if (width != null) {\n if (minColWidth != null && width >= minColWidth) {\n column.setActualWidth(width, source);\n }\n }\n }\n var sort = getValue('sort').value1;\n if (sort !== undefined) {\n if (sort === 'desc' || sort === 'asc') {\n column.setSort(sort, source);\n }\n else {\n column.setSort(undefined, source);\n }\n }\n var sortIndex = getValue('sortIndex').value1;\n if (sortIndex !== undefined) {\n column.setSortIndex(sortIndex);\n }\n // we do not do aggFunc, rowGroup or pivot for auto cols or secondary cols\n if (autoCol || !column.isPrimary()) {\n return;\n }\n var aggFunc = getValue('aggFunc').value1;\n if (aggFunc !== undefined) {\n if (typeof aggFunc === 'string') {\n column.setAggFunc(aggFunc);\n if (!column.isValueActive()) {\n column.setValueActive(true, source);\n this.valueColumns.push(column);\n }\n }\n else {\n if (exists(aggFunc)) {\n console.warn('AG Grid: stateItem.aggFunc must be a string. if using your own aggregation ' +\n 'functions, register the functions first before using them in get/set state. This is because it is ' +\n 'intended for the column state to be stored and retrieved as simple JSON.');\n }\n // Note: we do not call column.setAggFunc(null), so that next time we aggregate\n // by this column (eg drag the column to the agg section int he toolpanel) it will\n // default to the last aggregation function.\n if (column.isValueActive()) {\n column.setValueActive(false, source);\n removeFromArray(this.valueColumns, column);\n }\n }\n }\n var _a = getValue('rowGroup', 'rowGroupIndex'), rowGroup = _a.value1, rowGroupIndex = _a.value2;\n if (rowGroup !== undefined || rowGroupIndex !== undefined) {\n if (typeof rowGroupIndex === 'number' || rowGroup) {\n if (!column.isRowGroupActive()) {\n column.setRowGroupActive(true, source);\n this.rowGroupColumns.push(column);\n }\n if (rowGroupIndexes && typeof rowGroupIndex === 'number') {\n rowGroupIndexes[column.getId()] = rowGroupIndex;\n }\n }\n else {\n if (column.isRowGroupActive()) {\n column.setRowGroupActive(false, source);\n removeFromArray(this.rowGroupColumns, column);\n }\n }\n }\n var _b = getValue('pivot', 'pivotIndex'), pivot = _b.value1, pivotIndex = _b.value2;\n if (pivot !== undefined || pivotIndex !== undefined) {\n if (typeof pivotIndex === 'number' || pivot) {\n if (!column.isPivotActive()) {\n column.setPivotActive(true, source);\n this.pivotColumns.push(column);\n }\n if (pivotIndexes && typeof pivotIndex === 'number') {\n pivotIndexes[column.getId()] = pivotIndex;\n }\n }\n else {\n if (column.isPivotActive()) {\n column.setPivotActive(false, source);\n removeFromArray(this.pivotColumns, column);\n }\n }\n }\n };\n ColumnModel.prototype.getGridColumns = function (keys) {\n return this.getColumns(keys, this.getGridColumn.bind(this));\n };\n ColumnModel.prototype.getColumns = function (keys, columnLookupCallback) {\n var foundColumns = [];\n if (keys) {\n keys.forEach(function (key) {\n var column = columnLookupCallback(key);\n if (column) {\n foundColumns.push(column);\n }\n });\n }\n return foundColumns;\n };\n // used by growGroupPanel\n ColumnModel.prototype.getColumnWithValidation = function (key) {\n if (key == null) {\n return null;\n }\n var column = this.getGridColumn(key);\n if (!column) {\n console.warn('AG Grid: could not find column ' + key);\n }\n return column;\n };\n ColumnModel.prototype.getPrimaryColumn = function (key) {\n if (!this.primaryColumns) {\n return null;\n }\n return this.getColumn(key, this.primaryColumns, this.primaryColumnsMap);\n };\n ColumnModel.prototype.getGridColumn = function (key) {\n return this.getColumn(key, this.gridColumns, this.gridColumnsMap);\n };\n ColumnModel.prototype.getSecondaryColumn = function (key) {\n if (!this.secondaryColumns) {\n return null;\n }\n return this.getColumn(key, this.secondaryColumns, this.secondaryColumnsMap);\n };\n ColumnModel.prototype.getColumn = function (key, columnList, columnMap) {\n if (!key) {\n return null;\n }\n // most of the time this method gets called the key is a string, so we put this shortcut in\n // for performance reasons, to see if we can match for ID (it doesn't do auto columns, that's done below)\n if (typeof key == 'string' && columnMap[key]) {\n return columnMap[key];\n }\n for (var i = 0; i < columnList.length; i++) {\n if (this.columnsMatch(columnList[i], key)) {\n return columnList[i];\n }\n }\n return this.getAutoColumn(key);\n };\n ColumnModel.prototype.getSourceColumnsForGroupColumn = function (groupCol) {\n var sourceColumnId = groupCol.getColDef().showRowGroup;\n if (!sourceColumnId) {\n return null;\n }\n if (sourceColumnId === true) {\n return this.rowGroupColumns.slice(0);\n }\n var column = this.getPrimaryColumn(sourceColumnId);\n return column ? [column] : null;\n };\n ColumnModel.prototype.getAutoColumn = function (key) {\n var _this = this;\n if (!this.groupAutoColumns ||\n !exists(this.groupAutoColumns) ||\n missing(this.groupAutoColumns)) {\n return null;\n }\n return this.groupAutoColumns.find(function (groupCol) { return _this.columnsMatch(groupCol, key); }) || null;\n };\n ColumnModel.prototype.columnsMatch = function (column, key) {\n var columnMatches = column === key;\n var colDefMatches = column.getColDef() === key;\n var idMatches = column.getColId() == key;\n return columnMatches || colDefMatches || idMatches;\n };\n ColumnModel.prototype.getDisplayNameForColumn = function (column, location, includeAggFunc) {\n if (includeAggFunc === void 0) { includeAggFunc = false; }\n if (!column) {\n return null;\n }\n var headerName = this.getHeaderName(column.getColDef(), column, null, null, location);\n if (includeAggFunc) {\n return this.wrapHeaderNameWithAggFunc(column, headerName);\n }\n return headerName;\n };\n ColumnModel.prototype.getDisplayNameForProvidedColumnGroup = function (columnGroup, providedColumnGroup, location) {\n var colGroupDef = providedColumnGroup ? providedColumnGroup.getColGroupDef() : null;\n if (colGroupDef) {\n return this.getHeaderName(colGroupDef, null, columnGroup, providedColumnGroup, location);\n }\n return null;\n };\n ColumnModel.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) {\n return this.getDisplayNameForProvidedColumnGroup(columnGroup, columnGroup.getProvidedColumnGroup(), location);\n };\n // location is where the column is going to appear, ie who is calling us\n ColumnModel.prototype.getHeaderName = function (colDef, column, columnGroup, providedColumnGroup, location) {\n var headerValueGetter = colDef.headerValueGetter;\n if (headerValueGetter) {\n var params = {\n colDef: colDef,\n column: column,\n columnGroup: columnGroup,\n providedColumnGroup: providedColumnGroup,\n location: location,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n if (typeof headerValueGetter === 'function') {\n // valueGetter is a function, so just call it\n return headerValueGetter(params);\n }\n else if (typeof headerValueGetter === 'string') {\n // valueGetter is an expression, so execute the expression\n return this.expressionService.evaluate(headerValueGetter, params);\n }\n console.warn('AG Grid: headerValueGetter must be a function or a string');\n return '';\n }\n else if (colDef.headerName != null) {\n return colDef.headerName;\n }\n else if (colDef.field) {\n return camelCaseToHumanText(colDef.field);\n }\n return '';\n };\n ColumnModel.prototype.wrapHeaderNameWithAggFunc = function (column, headerName) {\n if (this.gridOptionsService.is('suppressAggFuncInHeader')) {\n return headerName;\n }\n // only columns with aggregation active can have aggregations\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotActiveOnThisColumn = exists(pivotValueColumn);\n var aggFunc = null;\n var aggFuncFound;\n // otherwise we have a measure that is active, and we are doing aggregation on it\n if (pivotActiveOnThisColumn) {\n var isCollapsedHeaderEnabled = this.gridOptionsService.is('removePivotHeaderRowWhenSingleValueColumn') && this.valueColumns.length === 1;\n var isTotalColumn = column.getColDef().pivotTotalColumnIds !== undefined;\n if (isCollapsedHeaderEnabled && !isTotalColumn) {\n return headerName; // Skip decorating the header - in this case the label is the pivot key, not the value col\n }\n aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;\n aggFuncFound = true;\n }\n else {\n var measureActive = column.isValueActive();\n var aggregationPresent = this.pivotMode || !this.isRowGroupEmpty();\n if (measureActive && aggregationPresent) {\n aggFunc = column.getAggFunc();\n aggFuncFound = true;\n }\n else {\n aggFuncFound = false;\n }\n }\n if (aggFuncFound) {\n var aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'func';\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n return aggFuncStringTranslated + \"(\" + headerName + \")\";\n }\n return headerName;\n };\n // returns the group with matching colId and instanceId. If instanceId is missing,\n // matches only on the colId.\n ColumnModel.prototype.getColumnGroup = function (colId, partId) {\n if (!colId) {\n return null;\n }\n if (colId instanceof ColumnGroup) {\n return colId;\n }\n var allColumnGroups = this.getAllDisplayedTrees();\n var checkPartId = typeof partId === 'number';\n var result = null;\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof ColumnGroup) {\n var columnGroup = child;\n var matched = void 0;\n if (checkPartId) {\n matched = colId === columnGroup.getGroupId() && partId === columnGroup.getPartId();\n }\n else {\n matched = colId === columnGroup.getGroupId();\n }\n if (matched) {\n result = columnGroup;\n }\n }\n });\n return result;\n };\n ColumnModel.prototype.isReady = function () {\n return this.ready;\n };\n ColumnModel.prototype.extractValueColumns = function (source, oldPrimaryColumns) {\n this.valueColumns = this.extractColumns(oldPrimaryColumns, this.valueColumns, function (col, flag) { return col.setValueActive(flag, source); }, \n // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null\n function () { return undefined; }, function () { return undefined; }, \n // aggFunc is a string, so return it's existence\n function (colDef) {\n var aggFunc = colDef.aggFunc;\n // null or empty string means clear\n if (aggFunc === null || aggFunc === '') {\n return null;\n }\n if (aggFunc === undefined) {\n return;\n }\n return !!aggFunc;\n }, function (colDef) {\n // return false if any of the following: null, undefined, empty string\n return colDef.initialAggFunc != null && colDef.initialAggFunc != '';\n });\n // all new columns added will have aggFunc missing, so set it to what is in the colDef\n this.valueColumns.forEach(function (col) {\n var colDef = col.getColDef();\n // if aggFunc provided, we always override, as reactive property\n if (colDef.aggFunc != null && colDef.aggFunc != '') {\n col.setAggFunc(colDef.aggFunc);\n }\n else {\n // otherwise we use initialAggFunc only if no agg func set - which happens when new column only\n if (!col.getAggFunc()) {\n col.setAggFunc(colDef.initialAggFunc);\n }\n }\n });\n };\n ColumnModel.prototype.extractRowGroupColumns = function (source, oldPrimaryColumns) {\n this.rowGroupColumns = this.extractColumns(oldPrimaryColumns, this.rowGroupColumns, function (col, flag) { return col.setRowGroupActive(flag, source); }, function (colDef) { return colDef.rowGroupIndex; }, function (colDef) { return colDef.initialRowGroupIndex; }, function (colDef) { return colDef.rowGroup; }, function (colDef) { return colDef.initialRowGroup; });\n };\n ColumnModel.prototype.extractColumns = function (oldPrimaryColumns, previousCols, setFlagFunc, getIndexFunc, getInitialIndexFunc, getValueFunc, getInitialValueFunc) {\n if (oldPrimaryColumns === void 0) { oldPrimaryColumns = []; }\n if (previousCols === void 0) { previousCols = []; }\n var colsWithIndex = [];\n var colsWithValue = [];\n // go though all cols.\n // if value, change\n // if default only, change only if new\n (this.primaryColumns || []).forEach(function (col) {\n var colIsNew = oldPrimaryColumns.indexOf(col) < 0;\n var colDef = col.getColDef();\n var value = attrToBoolean(getValueFunc(colDef));\n var initialValue = attrToBoolean(getInitialValueFunc(colDef));\n var index = attrToNumber(getIndexFunc(colDef));\n var initialIndex = attrToNumber(getInitialIndexFunc(colDef));\n var include;\n var valuePresent = value !== undefined;\n var indexPresent = index !== undefined;\n var initialValuePresent = initialValue !== undefined;\n var initialIndexPresent = initialIndex !== undefined;\n if (valuePresent) {\n include = value; // boolean value is guaranteed as attrToBoolean() is used above\n }\n else if (indexPresent) {\n if (index === null) {\n // if col is new we don't want to use the default / initial if index is set to null. Similarly,\n // we don't want to include the property for existing columns, i.e. we want to 'clear' it.\n include = false;\n }\n else {\n // note that 'null >= 0' evaluates to true which means 'rowGroupIndex = null' would enable row\n // grouping if the null check didn't exist above.\n include = index >= 0;\n }\n }\n else {\n if (colIsNew) {\n // as no value or index is 'present' we use the default / initial when col is new\n if (initialValuePresent) {\n include = initialValue;\n }\n else if (initialIndexPresent) {\n include = initialIndex != null && initialIndex >= 0;\n }\n else {\n include = false;\n }\n }\n else {\n // otherwise include it if included last time, e.g. if we are extracting row group cols and this col\n // is an existing row group col (i.e. it exists in 'previousCols') then we should include it.\n include = previousCols.indexOf(col) >= 0;\n }\n }\n if (include) {\n var useIndex = colIsNew ? (index != null || initialIndex != null) : index != null;\n useIndex ? colsWithIndex.push(col) : colsWithValue.push(col);\n }\n });\n var getIndexForCol = function (col) {\n var index = getIndexFunc(col.getColDef());\n var defaultIndex = getInitialIndexFunc(col.getColDef());\n return index != null ? index : defaultIndex;\n };\n // sort cols with index, and add these first\n colsWithIndex.sort(function (colA, colB) {\n var indexA = getIndexForCol(colA);\n var indexB = getIndexForCol(colB);\n if (indexA === indexB) {\n return 0;\n }\n if (indexA < indexB) {\n return -1;\n }\n return 1;\n });\n var res = [].concat(colsWithIndex);\n // second add columns that were there before and in the same order as they were before,\n // so we are preserving order of current grouping of columns that simply have rowGroup=true\n previousCols.forEach(function (col) {\n if (colsWithValue.indexOf(col) >= 0) {\n res.push(col);\n }\n });\n // lastly put in all remaining cols\n colsWithValue.forEach(function (col) {\n if (res.indexOf(col) < 0) {\n res.push(col);\n }\n });\n // set flag=false for removed cols\n previousCols.forEach(function (col) {\n if (res.indexOf(col) < 0) {\n setFlagFunc(col, false);\n }\n });\n // set flag=true for newly added cols\n res.forEach(function (col) {\n if (previousCols.indexOf(col) < 0) {\n setFlagFunc(col, true);\n }\n });\n return res;\n };\n ColumnModel.prototype.extractPivotColumns = function (source, oldPrimaryColumns) {\n this.pivotColumns = this.extractColumns(oldPrimaryColumns, this.pivotColumns, function (col, flag) { return col.setPivotActive(flag, source); }, function (colDef) { return colDef.pivotIndex; }, function (colDef) { return colDef.initialPivotIndex; }, function (colDef) { return colDef.pivot; }, function (colDef) { return colDef.initialPivot; });\n };\n ColumnModel.prototype.resetColumnGroupState = function (source) {\n if (source === void 0) { source = \"api\"; }\n var stateItems = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.primaryColumnTree, function (child) {\n if (child instanceof ProvidedColumnGroup) {\n var colGroupDef = child.getColGroupDef();\n var groupState = {\n groupId: child.getGroupId(),\n open: !colGroupDef ? undefined : colGroupDef.openByDefault\n };\n stateItems.push(groupState);\n }\n });\n this.setColumnGroupState(stateItems, source);\n };\n ColumnModel.prototype.getColumnGroupState = function () {\n var columnGroupState = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof ProvidedColumnGroup) {\n columnGroupState.push({\n groupId: node.getGroupId(),\n open: node.isExpanded()\n });\n }\n });\n return columnGroupState;\n };\n ColumnModel.prototype.setColumnGroupState = function (stateItems, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n var impactedGroups = [];\n stateItems.forEach(function (stateItem) {\n var groupKey = stateItem.groupId;\n var newValue = stateItem.open;\n var providedColumnGroup = _this.getProvidedColumnGroup(groupKey);\n if (!providedColumnGroup) {\n return;\n }\n if (providedColumnGroup.isExpanded() === newValue) {\n return;\n }\n _this.logger.log('columnGroupOpened(' + providedColumnGroup.getGroupId() + ',' + newValue + ')');\n providedColumnGroup.setExpanded(newValue);\n impactedGroups.push(providedColumnGroup);\n });\n this.updateGroupsAndDisplayedColumns(source);\n this.setFirstRightAndLastLeftPinned(source);\n impactedGroups.forEach(function (providedColumnGroup) {\n var event = {\n type: Events.EVENT_COLUMN_GROUP_OPENED,\n columnGroup: providedColumnGroup\n };\n _this.eventService.dispatchEvent(event);\n });\n this.columnAnimationService.finish();\n };\n // called by headerRenderer - when a header is opened or closed\n ColumnModel.prototype.setColumnGroupOpened = function (key, newValue, source) {\n if (source === void 0) { source = \"api\"; }\n var keyAsString;\n if (key instanceof ProvidedColumnGroup) {\n keyAsString = key.getId();\n }\n else {\n keyAsString = key || '';\n }\n this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);\n };\n ColumnModel.prototype.getProvidedColumnGroup = function (key) {\n // if (key instanceof ProvidedColumnGroup) { return key; }\n if (typeof key !== 'string') {\n console.error('AG Grid: group key must be a string');\n }\n // otherwise, search for the column group by id\n var res = null;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof ProvidedColumnGroup) {\n if (node.getId() === key) {\n res = node;\n }\n }\n });\n return res;\n };\n ColumnModel.prototype.calculateColumnsForDisplay = function () {\n var _this = this;\n var columnsForDisplay;\n if (this.pivotMode && missing(this.secondaryColumns)) {\n // pivot mode is on, but we are not pivoting, so we only\n // show columns we are aggregating on\n columnsForDisplay = this.gridColumns.filter(function (column) {\n var isAutoGroupCol = _this.groupAutoColumns && includes(_this.groupAutoColumns, column);\n var isValueCol = _this.valueColumns && includes(_this.valueColumns, column);\n return isAutoGroupCol || isValueCol;\n });\n }\n else {\n // otherwise continue as normal. this can be working on the primary\n // or secondary columns, whatever the gridColumns are set to\n columnsForDisplay = this.gridColumns.filter(function (column) {\n // keep col if a) it's auto-group or b) it's visible\n var isAutoGroupCol = _this.groupAutoColumns && includes(_this.groupAutoColumns, column);\n return isAutoGroupCol || column.isVisible();\n });\n }\n return columnsForDisplay;\n };\n ColumnModel.prototype.checkColSpanActiveInCols = function (columns) {\n var result = false;\n columns.forEach(function (col) {\n if (exists(col.getColDef().colSpan)) {\n result = true;\n }\n });\n return result;\n };\n ColumnModel.prototype.calculateColumnsForGroupDisplay = function () {\n var _this = this;\n this.groupDisplayColumns = [];\n this.groupDisplayColumnsMap = {};\n var checkFunc = function (col) {\n var colDef = col.getColDef();\n var underlyingColumn = colDef.showRowGroup;\n if (colDef && exists(underlyingColumn)) {\n _this.groupDisplayColumns.push(col);\n if (typeof underlyingColumn === 'string') {\n _this.groupDisplayColumnsMap[underlyingColumn] = col;\n }\n else if (underlyingColumn === true) {\n _this.getRowGroupColumns().forEach(function (rowGroupCol) {\n _this.groupDisplayColumnsMap[rowGroupCol.getId()] = col;\n });\n }\n }\n };\n this.gridColumns.forEach(checkFunc);\n if (this.groupAutoColumns) {\n this.groupAutoColumns.forEach(checkFunc);\n }\n };\n ColumnModel.prototype.getGroupDisplayColumns = function () {\n return this.groupDisplayColumns;\n };\n ColumnModel.prototype.getGroupDisplayColumnForGroup = function (rowGroupColumnId) {\n return this.groupDisplayColumnsMap[rowGroupColumnId];\n };\n ColumnModel.prototype.updateDisplayedColumns = function (source) {\n var columnsForDisplay = this.calculateColumnsForDisplay();\n this.buildDisplayedTrees(columnsForDisplay);\n this.calculateColumnsForGroupDisplay();\n // also called when group opened/closed\n this.updateGroupsAndDisplayedColumns(source);\n // also called when group opened/closed\n this.setFirstRightAndLastLeftPinned(source);\n };\n ColumnModel.prototype.isSecondaryColumnsPresent = function () {\n return exists(this.secondaryColumns);\n };\n ColumnModel.prototype.setSecondaryColumns = function (colDefs, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n var newColsPresent = colDefs && colDefs.length > 0;\n // if not cols passed, and we had no cols anyway, then do nothing\n if (!newColsPresent && missing(this.secondaryColumns)) {\n return;\n }\n if (newColsPresent) {\n this.processSecondaryColumnDefinitions(colDefs);\n var balancedTreeResult = this.columnFactory.createColumnTree(colDefs, false, this.secondaryBalancedTree || this.previousSecondaryColumns || undefined);\n this.destroyOldColumns(this.secondaryBalancedTree, balancedTreeResult.columnTree);\n this.secondaryBalancedTree = balancedTreeResult.columnTree;\n this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);\n this.secondaryColumnsMap = {};\n this.secondaryColumns.forEach(function (col) { return _this.secondaryColumnsMap[col.getId()] = col; });\n this.previousSecondaryColumns = null;\n }\n else {\n this.previousSecondaryColumns = this.secondaryBalancedTree;\n this.secondaryBalancedTree = null;\n this.secondaryHeaderRowCount = -1;\n this.secondaryColumns = null;\n this.secondaryColumnsMap = {};\n }\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n };\n ColumnModel.prototype.processSecondaryColumnDefinitions = function (colDefs) {\n var columnCallback = this.gridOptionsService.get('processPivotResultColDef') || this.gridOptionsService.get('processSecondaryColDef');\n var groupCallback = this.gridOptionsService.get('processPivotResultColGroupDef') || this.gridOptionsService.get('processSecondaryColGroupDef');\n if (!columnCallback && !groupCallback) {\n return undefined;\n }\n var searchForColDefs = function (colDefs2) {\n colDefs2.forEach(function (abstractColDef) {\n var isGroup = exists(abstractColDef.children);\n if (isGroup) {\n var colGroupDef = abstractColDef;\n if (groupCallback) {\n groupCallback(colGroupDef);\n }\n searchForColDefs(colGroupDef.children);\n }\n else {\n var colDef = abstractColDef;\n if (columnCallback) {\n columnCallback(colDef);\n }\n }\n });\n };\n if (colDefs) {\n searchForColDefs(colDefs);\n }\n };\n // called from: applyColumnState, setColumnDefs, setSecondaryColumns\n ColumnModel.prototype.updateGridColumns = function () {\n var _this = this;\n var prevGridCols = this.gridBalancedTree;\n if (this.gridColsArePrimary) {\n this.lastPrimaryOrder = this.gridColumns;\n }\n else {\n this.lastSecondaryOrder = this.gridColumns;\n }\n var sortOrderToRecover;\n if (this.secondaryColumns && this.secondaryBalancedTree) {\n var hasSameColumns = this.secondaryColumns.every(function (col) {\n return _this.gridColumnsMap[col.getColId()] !== undefined;\n });\n this.gridBalancedTree = this.secondaryBalancedTree.slice();\n this.gridHeaderRowCount = this.secondaryHeaderRowCount;\n this.gridColumns = this.secondaryColumns.slice();\n this.gridColsArePrimary = false;\n // If the current columns are the same or a subset of the previous\n // we keep the previous order, otherwise we go back to the order the pivot\n // cols are generated in\n if (hasSameColumns) {\n sortOrderToRecover = this.lastSecondaryOrder;\n }\n }\n else if (this.primaryColumns) {\n this.gridBalancedTree = this.primaryColumnTree.slice();\n this.gridHeaderRowCount = this.primaryHeaderRowCount;\n this.gridColumns = this.primaryColumns.slice();\n this.gridColsArePrimary = true;\n // updateGridColumns gets called after user adds a row group. we want to maintain the order of the columns\n // when this happens (eg if user moved a column) rather than revert back to the original column order.\n // likewise if changing in/out of pivot mode, we want to maintain the order of the cols\n sortOrderToRecover = this.lastPrimaryOrder;\n }\n // create the new auto columns\n var areAutoColsChanged = this.createGroupAutoColumnsIfNeeded();\n // if auto group cols have changed, and we have a sort order, we need to move auto cols to the start\n if (areAutoColsChanged && sortOrderToRecover) {\n var groupAutoColsMap_1 = convertToMap(this.groupAutoColumns.map(function (col) { return [col, true]; }));\n // if group columns has changed, we don't preserve the group column order, so remove them from the old order\n sortOrderToRecover = sortOrderToRecover.filter(function (col) { return !groupAutoColsMap_1.has(col); });\n // and add them to the start of the order\n sortOrderToRecover = __spread$k(this.groupAutoColumns, sortOrderToRecover);\n }\n this.addAutoGroupToGridColumns();\n this.orderGridColsLike(sortOrderToRecover);\n this.gridColumns = this.placeLockedColumns(this.gridColumns);\n this.refreshQuickFilterColumns();\n this.clearDisplayedAndViewportColumns();\n this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);\n this.gridColumnsMap = {};\n this.gridColumns.forEach(function (col) { return _this.gridColumnsMap[col.getId()] = col; });\n this.setAutoHeightActive();\n if (!areEqual(prevGridCols, this.gridBalancedTree)) {\n var event_4 = {\n type: Events.EVENT_GRID_COLUMNS_CHANGED\n };\n this.eventService.dispatchEvent(event_4);\n }\n };\n ColumnModel.prototype.setAutoHeightActive = function () {\n this.autoHeightActive = this.gridColumns.filter(function (col) { return col.isAutoHeight(); }).length > 0;\n if (this.autoHeightActive) {\n this.autoHeightActiveAtLeastOnce = true;\n var supportedRowModel = this.gridOptionsService.isRowModelType('clientSide') || this.gridOptionsService.isRowModelType('serverSide');\n if (!supportedRowModel) {\n var message_1 = 'AG Grid - autoHeight columns only work with Client Side Row Model and Server Side Row Model.';\n doOnce(function () { return console.warn(message_1); }, 'autoHeightActive.wrongRowModel');\n }\n }\n };\n ColumnModel.prototype.orderGridColsLike = function (colsOrder) {\n if (missing(colsOrder)) {\n return;\n }\n var lastOrderMapped = convertToMap(colsOrder.map(function (col, index) { return [col, index]; }));\n // only do the sort if at least one column is accounted for. columns will be not accounted for\n // if changing from secondary to primary columns\n var noColsFound = true;\n this.gridColumns.forEach(function (col) {\n if (lastOrderMapped.has(col)) {\n noColsFound = false;\n }\n });\n if (noColsFound) {\n return;\n }\n // order cols in the same order as before. we need to make sure that all\n // cols still exists, so filter out any that no longer exist.\n var gridColsMap = convertToMap(this.gridColumns.map(function (col) { return [col, true]; }));\n var oldColsOrdered = colsOrder.filter(function (col) { return gridColsMap.has(col); });\n var oldColsMap = convertToMap(oldColsOrdered.map(function (col) { return [col, true]; }));\n var newColsOrdered = this.gridColumns.filter(function (col) { return !oldColsMap.has(col); });\n // add in the new columns, at the end (if no group), or at the end of the group (if a group)\n var newGridColumns = oldColsOrdered.slice();\n newColsOrdered.forEach(function (newCol) {\n var parent = newCol.getOriginalParent();\n // if no parent, means we are not grouping, so just add the column to the end\n if (!parent) {\n newGridColumns.push(newCol);\n return;\n }\n // find the group the column belongs to. if no siblings at the current level (eg col in group on it's\n // own) then go up one level and look for siblings there.\n var siblings = [];\n while (!siblings.length && parent) {\n var leafCols = parent.getLeafColumns();\n leafCols.forEach(function (leafCol) {\n var presentInNewGriColumns = newGridColumns.indexOf(leafCol) >= 0;\n var noYetInSiblings = siblings.indexOf(leafCol) < 0;\n if (presentInNewGriColumns && noYetInSiblings) {\n siblings.push(leafCol);\n }\n });\n parent = parent.getOriginalParent();\n }\n // if no siblings exist at any level, this means the col is in a group (or parent groups) on it's own\n if (!siblings.length) {\n newGridColumns.push(newCol);\n return;\n }\n // find index of last column in the group\n var indexes = siblings.map(function (col) { return newGridColumns.indexOf(col); });\n var lastIndex = Math.max.apply(Math, __spread$k(indexes));\n insertIntoArray(newGridColumns, newCol, lastIndex + 1);\n });\n this.gridColumns = newGridColumns;\n };\n ColumnModel.prototype.isPrimaryColumnGroupsPresent = function () {\n return this.primaryHeaderRowCount > 1;\n };\n // if we are using autoGroupCols, then they should be included for quick filter. this covers the\n // following scenarios:\n // a) user provides 'field' into autoGroupCol of normal grid, so now because a valid col to filter leafs on\n // b) using tree data and user depends on autoGroupCol for first col, and we also want to filter on this\n // (tree data is a bit different, as parent rows can be filtered on, unlike row grouping)\n ColumnModel.prototype.refreshQuickFilterColumns = function () {\n var _a;\n var columnsForQuickFilter;\n if (this.groupAutoColumns) {\n columnsForQuickFilter = ((_a = this.primaryColumns) !== null && _a !== void 0 ? _a : []).concat(this.groupAutoColumns);\n }\n else if (this.primaryColumns) {\n columnsForQuickFilter = this.primaryColumns;\n }\n columnsForQuickFilter = columnsForQuickFilter !== null && columnsForQuickFilter !== void 0 ? columnsForQuickFilter : [];\n this.columnsForQuickFilter = this.gridOptionsService.is('excludeHiddenColumnsFromQuickFilter')\n ? columnsForQuickFilter.filter(function (col) { return col.isVisible() || col.isRowGroupActive(); })\n : columnsForQuickFilter;\n };\n ColumnModel.prototype.placeLockedColumns = function (cols) {\n var left = [];\n var normal = [];\n var right = [];\n cols.forEach(function (col) {\n var position = col.getColDef().lockPosition;\n if (position === 'right') {\n right.push(col);\n }\n else if (position === 'left' || position === true) {\n left.push(col);\n }\n else {\n normal.push(col);\n }\n });\n return __spread$k(left, normal, right);\n };\n ColumnModel.prototype.addAutoGroupToGridColumns = function () {\n if (missing(this.groupAutoColumns)) {\n this.destroyOldColumns(this.groupAutoColsBalancedTree);\n this.groupAutoColsBalancedTree = null;\n return;\n }\n this.gridColumns = this.groupAutoColumns ? this.groupAutoColumns.concat(this.gridColumns) : this.gridColumns;\n var newAutoColsTree = this.columnFactory.createForAutoGroups(this.groupAutoColumns, this.gridBalancedTree);\n this.destroyOldColumns(this.groupAutoColsBalancedTree, newAutoColsTree);\n this.groupAutoColsBalancedTree = newAutoColsTree;\n this.gridBalancedTree = newAutoColsTree.concat(this.gridBalancedTree);\n };\n // gets called after we copy down grid columns, to make sure any part of the gui\n // that tries to draw, eg the header, it will get empty lists of columns rather\n // than stale columns. for example, the header will received gridColumnsChanged\n // event, so will try and draw, but it will draw successfully when it acts on the\n // virtualColumnsChanged event\n ColumnModel.prototype.clearDisplayedAndViewportColumns = function () {\n this.viewportRowLeft = {};\n this.viewportRowRight = {};\n this.viewportRowCenter = {};\n this.displayedColumnsLeft = [];\n this.displayedColumnsRight = [];\n this.displayedColumnsCenter = [];\n this.displayedColumns = [];\n this.viewportColumns = [];\n this.headerViewportColumns = [];\n this.viewportColumnsHash = '';\n };\n ColumnModel.prototype.updateGroupsAndDisplayedColumns = function (source) {\n this.updateOpenClosedVisibilityInColumnGroups();\n this.deriveDisplayedColumns(source);\n this.refreshFlexedColumns();\n this.extractViewport();\n this.updateBodyWidths();\n // this event is picked up by the gui, headerRenderer and rowRenderer, to recalculate what columns to display\n var event = {\n type: Events.EVENT_DISPLAYED_COLUMNS_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.deriveDisplayedColumns = function (source) {\n this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeLeft, this.displayedColumnsLeft);\n this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeCentre, this.displayedColumnsCenter);\n this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeRight, this.displayedColumnsRight);\n this.joinDisplayedColumns();\n this.setLeftValues(source);\n this.displayedAutoHeightCols = this.displayedColumns.filter(function (col) { return col.isAutoHeight(); });\n };\n ColumnModel.prototype.isAutoRowHeightActive = function () {\n return this.autoHeightActive;\n };\n ColumnModel.prototype.wasAutoRowHeightEverActive = function () {\n return this.autoHeightActiveAtLeastOnce;\n };\n ColumnModel.prototype.joinDisplayedColumns = function () {\n if (this.gridOptionsService.is('enableRtl')) {\n this.displayedColumns = this.displayedColumnsRight\n .concat(this.displayedColumnsCenter)\n .concat(this.displayedColumnsLeft);\n }\n else {\n this.displayedColumns = this.displayedColumnsLeft\n .concat(this.displayedColumnsCenter)\n .concat(this.displayedColumnsRight);\n }\n };\n // sets the left pixel position of each column\n ColumnModel.prototype.setLeftValues = function (source) {\n this.setLeftValuesOfColumns(source);\n this.setLeftValuesOfGroups();\n };\n ColumnModel.prototype.setLeftValuesOfColumns = function (source) {\n var _this = this;\n if (!this.primaryColumns) {\n return;\n }\n // go through each list of displayed columns\n var allColumns = this.primaryColumns.slice(0);\n // let totalColumnWidth = this.getWidthOfColsInList()\n var doingRtl = this.gridOptionsService.is('enableRtl');\n [\n this.displayedColumnsLeft,\n this.displayedColumnsRight,\n this.displayedColumnsCenter\n ].forEach(function (columns) {\n if (doingRtl) {\n // when doing RTL, we start at the top most pixel (ie RHS) and work backwards\n var left_1 = _this.getWidthOfColsInList(columns);\n columns.forEach(function (column) {\n left_1 -= column.getActualWidth();\n column.setLeft(left_1, source);\n });\n }\n else {\n // otherwise normal LTR, we start at zero\n var left_2 = 0;\n columns.forEach(function (column) {\n column.setLeft(left_2, source);\n left_2 += column.getActualWidth();\n });\n }\n removeAllFromArray(allColumns, columns);\n });\n // items left in allColumns are columns not displayed, so remove the left position. this is\n // important for the rows, as if a col is made visible, then taken out, then made visible again,\n // we don't want the animation of the cell floating in from the old position, whatever that was.\n allColumns.forEach(function (column) {\n column.setLeft(null, source);\n });\n };\n ColumnModel.prototype.setLeftValuesOfGroups = function () {\n // a groups left value is the lest left value of it's children\n [\n this.displayedTreeLeft,\n this.displayedTreeRight,\n this.displayedTreeCentre\n ].forEach(function (columns) {\n columns.forEach(function (column) {\n if (column instanceof ColumnGroup) {\n var columnGroup = column;\n columnGroup.checkLeft();\n }\n });\n });\n };\n ColumnModel.prototype.derivedDisplayedColumnsFromDisplayedTree = function (tree, columns) {\n columns.length = 0;\n this.columnUtils.depthFirstDisplayedColumnTreeSearch(tree, function (child) {\n if (child instanceof Column) {\n columns.push(child);\n }\n });\n };\n ColumnModel.prototype.extractViewportColumns = function () {\n if (this.suppressColumnVirtualisation) {\n // no virtualisation, so don't filter\n this.viewportColumnsCenter = this.displayedColumnsCenter;\n this.headerViewportColumnsCenter = this.displayedColumnsCenter;\n }\n else {\n // filter out what should be visible\n this.viewportColumnsCenter = this.displayedColumnsCenter.filter(this.isColumnInRowViewport.bind(this));\n this.headerViewportColumnsCenter = this.displayedColumnsCenter.filter(this.isColumnInHeaderViewport.bind(this));\n }\n this.viewportColumns = this.viewportColumnsCenter\n .concat(this.displayedColumnsLeft)\n .concat(this.displayedColumnsRight);\n this.headerViewportColumns = this.headerViewportColumnsCenter\n .concat(this.displayedColumnsLeft)\n .concat(this.displayedColumnsRight);\n };\n ColumnModel.prototype.getVirtualHeaderGroupRow = function (type, dept) {\n var result;\n switch (type) {\n case 'left':\n result = this.viewportRowLeft[dept];\n break;\n case 'right':\n result = this.viewportRowRight[dept];\n break;\n default:\n result = this.viewportRowCenter[dept];\n break;\n }\n if (missing(result)) {\n result = [];\n }\n return result;\n };\n ColumnModel.prototype.calculateHeaderRows = function () {\n // go through each group, see if any of it's cols are displayed, and if yes,\n // then this group is included\n this.viewportRowLeft = {};\n this.viewportRowRight = {};\n this.viewportRowCenter = {};\n // for easy lookup when building the groups.\n var virtualColIds = {};\n this.headerViewportColumns.forEach(function (col) { return virtualColIds[col.getId()] = true; });\n var testGroup = function (children, result, dept) {\n var returnValue = false;\n for (var i = 0; i < children.length; i++) {\n // see if this item is within viewport\n var child = children[i];\n var addThisItem = false;\n if (child instanceof Column) {\n // for column, test if column is included\n addThisItem = virtualColIds[child.getId()] === true;\n }\n else {\n // if group, base decision on children\n var columnGroup = child;\n var displayedChildren = columnGroup.getDisplayedChildren();\n if (displayedChildren) {\n addThisItem = testGroup(displayedChildren, result, dept + 1);\n }\n }\n if (addThisItem) {\n returnValue = true;\n if (!result[dept]) {\n result[dept] = [];\n }\n result[dept].push(child);\n }\n }\n return returnValue;\n };\n testGroup(this.displayedTreeLeft, this.viewportRowLeft, 0);\n testGroup(this.displayedTreeRight, this.viewportRowRight, 0);\n testGroup(this.displayedTreeCentre, this.viewportRowCenter, 0);\n };\n ColumnModel.prototype.extractViewport = function () {\n var hashColumn = function (c) { return c.getId() + \"-\" + (c.getPinned() || 'normal'); };\n this.extractViewportColumns();\n var newHash = this.viewportColumns.map(hashColumn).join('#');\n var changed = this.viewportColumnsHash !== newHash;\n if (changed) {\n this.viewportColumnsHash = newHash;\n this.calculateHeaderRows();\n }\n return changed;\n };\n ColumnModel.prototype.refreshFlexedColumns = function (params) {\n var _this = this;\n if (params === void 0) { params = {}; }\n var source = params.source ? params.source : 'flex';\n if (params.viewportWidth != null) {\n this.flexViewportWidth = params.viewportWidth;\n }\n if (!this.flexViewportWidth) {\n return [];\n }\n // If the grid has left-over space, divide it between flexing columns in proportion to their flex value.\n // A \"flexing column\" is one that has a 'flex' value set and is not currently being constrained by its\n // minWidth or maxWidth rules.\n var flexAfterDisplayIndex = -1;\n if (params.resizingCols) {\n params.resizingCols.forEach(function (col) {\n var indexOfCol = _this.displayedColumnsCenter.indexOf(col);\n if (flexAfterDisplayIndex < indexOfCol) {\n flexAfterDisplayIndex = indexOfCol;\n }\n });\n }\n var isColFlex = function (col) {\n var afterResizingCols = _this.displayedColumnsCenter.indexOf(col) > flexAfterDisplayIndex;\n return col.getFlex() && afterResizingCols;\n };\n var knownWidthColumns = this.displayedColumnsCenter.filter(function (col) { return !isColFlex(col); });\n var flexingColumns = this.displayedColumnsCenter.filter(function (col) { return isColFlex(col); });\n var changedColumns = [];\n if (!flexingColumns.length) {\n return [];\n }\n var flexingColumnSizes = [];\n var spaceForFlexingColumns;\n outer: while (true) {\n var totalFlex = flexingColumns.reduce(function (count, col) { return count + col.getFlex(); }, 0);\n spaceForFlexingColumns = this.flexViewportWidth - this.getWidthOfColsInList(knownWidthColumns);\n for (var i = 0; i < flexingColumns.length; i++) {\n var col = flexingColumns[i];\n var widthByFlexRule = spaceForFlexingColumns * col.getFlex() / totalFlex;\n var constrainedWidth = 0;\n var minWidth = col.getMinWidth();\n var maxWidth = col.getMaxWidth();\n if (exists(minWidth) && widthByFlexRule < minWidth) {\n constrainedWidth = minWidth;\n }\n else if (exists(maxWidth) && widthByFlexRule > maxWidth) {\n constrainedWidth = maxWidth;\n }\n if (constrainedWidth) {\n // This column is not in fact flexing as it is being constrained to a specific size\n // so remove it from the list of flexing columns and start again\n col.setActualWidth(constrainedWidth, source);\n removeFromArray(flexingColumns, col);\n changedColumns.push(col);\n knownWidthColumns.push(col);\n continue outer;\n }\n flexingColumnSizes[i] = Math.round(widthByFlexRule);\n }\n break;\n }\n var remainingSpace = spaceForFlexingColumns;\n flexingColumns.forEach(function (col, i) {\n col.setActualWidth(Math.min(flexingColumnSizes[i], remainingSpace), source);\n changedColumns.push(col);\n remainingSpace -= flexingColumnSizes[i];\n });\n if (!params.skipSetLeft) {\n this.setLeftValues(source);\n }\n if (params.updateBodyWidths) {\n this.updateBodyWidths();\n }\n if (params.fireResizedEvent) {\n this.dispatchColumnResizedEvent(changedColumns, true, source, flexingColumns);\n }\n return flexingColumns;\n };\n // called from api\n ColumnModel.prototype.sizeColumnsToFit = function (gridWidth, source, silent, params) {\n var _a, _b, _c, _d, _e;\n if (source === void 0) { source = \"sizeColumnsToFit\"; }\n var limitsMap = {};\n if (params) {\n (_a = params === null || params === void 0 ? void 0 : params.columnLimits) === null || _a === void 0 ? void 0 : _a.forEach(function (_a) {\n var key = _a.key, dimensions = __rest(_a, [\"key\"]);\n limitsMap[typeof key === 'string' ? key : key.getColId()] = dimensions;\n });\n }\n // avoid divide by zero\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var doColumnsAlreadyFit = gridWidth === this.getWidthOfColsInList(allDisplayedColumns);\n if (gridWidth <= 0 || !allDisplayedColumns.length || doColumnsAlreadyFit) {\n return;\n }\n var colsToSpread = [];\n var colsToNotSpread = [];\n allDisplayedColumns.forEach(function (column) {\n if (column.getColDef().suppressSizeToFit === true) {\n colsToNotSpread.push(column);\n }\n else {\n colsToSpread.push(column);\n }\n });\n // make a copy of the cols that are going to be resized\n var colsToDispatchEventFor = colsToSpread.slice(0);\n var finishedResizing = false;\n var moveToNotSpread = function (column) {\n removeFromArray(colsToSpread, column);\n colsToNotSpread.push(column);\n };\n // resetting cols to their original width makes the sizeColumnsToFit more deterministic,\n // rather than depending on the current size of the columns. most users call sizeColumnsToFit\n // immediately after grid is created, so will make no difference. however if application is calling\n // sizeColumnsToFit repeatedly (eg after column group is opened / closed repeatedly) we don't want\n // the columns to start shrinking / growing over time.\n //\n // NOTE: the process below will assign values to `this.actualWidth` of each column without firing events\n // for this reason we need to manually dispatch resize events after the resize has been done for each column.\n colsToSpread.forEach(function (column) { return column.resetActualWidth(source); });\n while (!finishedResizing) {\n finishedResizing = true;\n var availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);\n if (availablePixels <= 0) {\n // no width, set everything to minimum\n colsToSpread.forEach(function (column) {\n var _a, _b;\n var widthOverride = (_b = (_a = limitsMap === null || limitsMap === void 0 ? void 0 : limitsMap[column.getId()]) === null || _a === void 0 ? void 0 : _a.minWidth) !== null && _b !== void 0 ? _b : params === null || params === void 0 ? void 0 : params.defaultMinWidth;\n if (typeof widthOverride === 'number') {\n column.setActualWidth(widthOverride);\n return;\n }\n column.setMinimum(source);\n });\n }\n else {\n var scale = availablePixels / this.getWidthOfColsInList(colsToSpread);\n // we set the pixels for the last col based on what's left, as otherwise\n // we could be a pixel or two short or extra because of rounding errors.\n var pixelsForLastCol = availablePixels;\n // backwards through loop, as we are removing items as we go\n for (var i = colsToSpread.length - 1; i >= 0; i--) {\n var column = colsToSpread[i];\n var widthOverride = limitsMap === null || limitsMap === void 0 ? void 0 : limitsMap[column.getId()];\n var minOverride = ((_b = widthOverride === null || widthOverride === void 0 ? void 0 : widthOverride.minWidth) !== null && _b !== void 0 ? _b : params === null || params === void 0 ? void 0 : params.defaultMinWidth);\n var maxOverride = ((_c = widthOverride === null || widthOverride === void 0 ? void 0 : widthOverride.maxWidth) !== null && _c !== void 0 ? _c : params === null || params === void 0 ? void 0 : params.defaultMaxWidth);\n var colMinWidth = (_d = column.getMinWidth()) !== null && _d !== void 0 ? _d : 0;\n var colMaxWidth = (_e = column.getMaxWidth()) !== null && _e !== void 0 ? _e : Number.MAX_VALUE;\n var minWidth = typeof minOverride === 'number' && minOverride > colMinWidth ? minOverride : column.getMinWidth();\n var maxWidth = typeof maxOverride === 'number' && maxOverride < colMaxWidth ? maxOverride : column.getMaxWidth();\n var newWidth = Math.round(column.getActualWidth() * scale);\n if (exists(minWidth) && newWidth < minWidth) {\n newWidth = minWidth;\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else if (exists(maxWidth) && newWidth > maxWidth) {\n newWidth = maxWidth;\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else if (i === 0) { // if this is the last column\n newWidth = pixelsForLastCol;\n }\n column.setActualWidth(newWidth, source, true);\n pixelsForLastCol -= newWidth;\n }\n }\n }\n // see notes above\n colsToDispatchEventFor.forEach(function (col) {\n col.fireColumnWidthChangedEvent(source);\n });\n this.setLeftValues(source);\n this.updateBodyWidths();\n if (silent) {\n return;\n }\n this.dispatchColumnResizedEvent(colsToDispatchEventFor, true, source);\n };\n ColumnModel.prototype.buildDisplayedTrees = function (visibleColumns) {\n var leftVisibleColumns = [];\n var rightVisibleColumns = [];\n var centerVisibleColumns = [];\n visibleColumns.forEach(function (column) {\n switch (column.getPinned()) {\n case \"left\":\n leftVisibleColumns.push(column);\n break;\n case \"right\":\n rightVisibleColumns.push(column);\n break;\n default:\n centerVisibleColumns.push(column);\n break;\n }\n });\n var groupInstanceIdCreator = new GroupInstanceIdCreator();\n this.displayedTreeLeft = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, 'left', this.displayedTreeLeft);\n this.displayedTreeRight = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, 'right', this.displayedTreeRight);\n this.displayedTreeCentre = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, null, this.displayedTreeCentre);\n this.updateDisplayedMap();\n };\n ColumnModel.prototype.updateDisplayedMap = function () {\n var _this = this;\n this.displayedColumnsAndGroupsMap = {};\n var func = function (child) {\n _this.displayedColumnsAndGroupsMap[child.getUniqueId()] = child;\n };\n this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeCentre, func);\n this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeLeft, func);\n this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeRight, func);\n };\n ColumnModel.prototype.isDisplayed = function (item) {\n var fromMap = this.displayedColumnsAndGroupsMap[item.getUniqueId()];\n // check for reference, in case new column / group with same id is now present\n return fromMap === item;\n };\n ColumnModel.prototype.updateOpenClosedVisibilityInColumnGroups = function () {\n var allColumnGroups = this.getAllDisplayedTrees();\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof ColumnGroup) {\n var columnGroup = child;\n columnGroup.calculateDisplayedColumns();\n }\n });\n };\n ColumnModel.prototype.getGroupAutoColumns = function () {\n return this.groupAutoColumns;\n };\n /**\n * Creates new auto group columns if required\n * @returns whether auto cols have changed\n */\n ColumnModel.prototype.createGroupAutoColumnsIfNeeded = function () {\n if (!this.autoGroupsNeedBuilding) {\n return false;\n }\n this.autoGroupsNeedBuilding = false;\n var groupFullWidthRow = this.gridOptionsService.isGroupUseEntireRow(this.pivotMode);\n // we need to allow suppressing auto-column separately for group and pivot as the normal situation\n // is CSRM and user provides group column themselves for normal view, but when they go into pivot the\n // columns are generated by the grid so no opportunity for user to provide group column. so need a way\n // to suppress auto-col for grouping only, and not pivot.\n // however if using Viewport RM or SSRM and user is providing the columns, the user may wish full control\n // of the group column in this instance.\n var suppressAutoColumn = this.pivotMode ?\n this.gridOptionsService.is('pivotSuppressAutoColumn') : this.isGroupSuppressAutoColumn();\n var groupingActive = this.rowGroupColumns.length > 0 || this.usingTreeData;\n var needAutoColumns = groupingActive && !suppressAutoColumn && !groupFullWidthRow;\n if (needAutoColumns) {\n var existingCols = this.groupAutoColumns || [];\n var newAutoGroupCols = this.autoGroupColService.createAutoGroupColumns(existingCols, this.rowGroupColumns);\n var autoColsDifferent = !this.autoColsEqual(newAutoGroupCols, this.groupAutoColumns);\n // we force recreate so new group cols pick up the new\n // definitions. otherwise we could ignore the new cols because they appear to be the same.\n if (autoColsDifferent || this.forceRecreateAutoGroups) {\n this.groupAutoColumns = newAutoGroupCols;\n return true;\n }\n }\n else {\n this.groupAutoColumns = null;\n }\n return false;\n };\n ColumnModel.prototype.isGroupSuppressAutoColumn = function () {\n var groupDisplayType = this.gridOptionsService.get('groupDisplayType');\n var isCustomRowGroups = groupDisplayType ? matchesGroupDisplayType('custom', groupDisplayType) : false;\n if (isCustomRowGroups) {\n return true;\n }\n var treeDataDisplayType = this.gridOptionsService.get('treeDataDisplayType');\n return treeDataDisplayType ? matchesTreeDataDisplayType('custom', treeDataDisplayType) : false;\n };\n ColumnModel.prototype.autoColsEqual = function (colsA, colsB) {\n return areEqual(colsA, colsB, function (a, b) { return a.getColId() === b.getColId(); });\n };\n ColumnModel.prototype.getWidthOfColsInList = function (columnList) {\n return columnList.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n };\n ColumnModel.prototype.getGridBalancedTree = function () {\n return this.gridBalancedTree;\n };\n ColumnModel.prototype.hasFloatingFilters = function () {\n if (!this.gridColumns) {\n return false;\n }\n var res = this.gridColumns.some(function (col) { return col.getColDef().floatingFilter; });\n return res;\n };\n ColumnModel.prototype.getFirstDisplayedColumn = function () {\n var isRtl = this.gridOptionsService.is('enableRtl');\n var queryOrder = [\n 'getDisplayedLeftColumns',\n 'getDisplayedCenterColumns',\n 'getDisplayedRightColumns'\n ];\n if (isRtl) {\n queryOrder.reverse();\n }\n for (var i = 0; i < queryOrder.length; i++) {\n var container = this[queryOrder[i]]();\n if (container.length) {\n return isRtl ? last(container) : container[0];\n }\n }\n return null;\n };\n ColumnModel.prototype.setColumnHeaderHeight = function (col, height) {\n var changed = col.setAutoHeaderHeight(height);\n if (changed) {\n var event_5 = {\n type: Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED,\n column: col,\n columns: [col],\n source: 'autosizeColumnHeaderHeight',\n };\n this.eventService.dispatchEvent(event_5);\n }\n };\n ColumnModel.prototype.getColumnGroupHeaderRowHeight = function () {\n if (this.isPivotMode()) {\n return this.getPivotGroupHeaderHeight();\n }\n return this.getGroupHeaderHeight();\n };\n ColumnModel.prototype.getColumnHeaderRowHeight = function () {\n var defaultHeight = (this.isPivotMode() ?\n this.getPivotHeaderHeight() :\n this.getHeaderHeight());\n var displayedHeights = this.getAllDisplayedColumns()\n .filter(function (col) { return col.isAutoHeaderHeight(); })\n .map(function (col) { return col.getAutoHeaderHeight() || 0; });\n return Math.max.apply(Math, __spread$k([defaultHeight], displayedHeights));\n };\n ColumnModel.prototype.getHeaderHeight = function () {\n var _a;\n return (_a = this.gridOptionsService.getNum('headerHeight')) !== null && _a !== void 0 ? _a : this.environment.getFromTheme(25, 'headerHeight');\n };\n ColumnModel.prototype.getFloatingFiltersHeight = function () {\n var _a;\n return (_a = this.gridOptionsService.getNum('floatingFiltersHeight')) !== null && _a !== void 0 ? _a : this.getHeaderHeight();\n };\n ColumnModel.prototype.getGroupHeaderHeight = function () {\n var _a;\n return (_a = this.gridOptionsService.getNum('groupHeaderHeight')) !== null && _a !== void 0 ? _a : this.getHeaderHeight();\n };\n ColumnModel.prototype.getPivotHeaderHeight = function () {\n var _a;\n return (_a = this.gridOptionsService.getNum('pivotHeaderHeight')) !== null && _a !== void 0 ? _a : this.getHeaderHeight();\n };\n ColumnModel.prototype.getPivotGroupHeaderHeight = function () {\n var _a;\n return (_a = this.gridOptionsService.getNum('pivotGroupHeaderHeight')) !== null && _a !== void 0 ? _a : this.getGroupHeaderHeight();\n };\n __decorate$2r([\n Autowired('expressionService')\n ], ColumnModel.prototype, \"expressionService\", void 0);\n __decorate$2r([\n Autowired('columnFactory')\n ], ColumnModel.prototype, \"columnFactory\", void 0);\n __decorate$2r([\n Autowired('displayedGroupCreator')\n ], ColumnModel.prototype, \"displayedGroupCreator\", void 0);\n __decorate$2r([\n Autowired('ctrlsService')\n ], ColumnModel.prototype, \"ctrlsService\", void 0);\n __decorate$2r([\n Autowired('autoWidthCalculator')\n ], ColumnModel.prototype, \"autoWidthCalculator\", void 0);\n __decorate$2r([\n Autowired('columnUtils')\n ], ColumnModel.prototype, \"columnUtils\", void 0);\n __decorate$2r([\n Autowired('columnAnimationService')\n ], ColumnModel.prototype, \"columnAnimationService\", void 0);\n __decorate$2r([\n Autowired('autoGroupColService')\n ], ColumnModel.prototype, \"autoGroupColService\", void 0);\n __decorate$2r([\n Optional('aggFuncService')\n ], ColumnModel.prototype, \"aggFuncService\", void 0);\n __decorate$2r([\n Optional('valueCache')\n ], ColumnModel.prototype, \"valueCache\", void 0);\n __decorate$2r([\n Optional('animationFrameService')\n ], ColumnModel.prototype, \"animationFrameService\", void 0);\n __decorate$2r([\n Autowired('sortController')\n ], ColumnModel.prototype, \"sortController\", void 0);\n __decorate$2r([\n Autowired('columnDefFactory')\n ], ColumnModel.prototype, \"columnDefFactory\", void 0);\n __decorate$2r([\n PostConstruct\n ], ColumnModel.prototype, \"init\", null);\n __decorate$2r([\n PreDestroy\n ], ColumnModel.prototype, \"destroyColumns\", null);\n __decorate$2r([\n __param$8(0, Qualifier('loggerFactory'))\n ], ColumnModel.prototype, \"setBeans\", null);\n ColumnModel = __decorate$2r([\n Bean('columnModel')\n ], ColumnModel);\n return ColumnModel;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2P = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar ColumnUtils = /** @class */ (function (_super) {\n __extends$2P(ColumnUtils, _super);\n function ColumnUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnUtils.prototype.calculateColMinWidth = function (colDef) {\n return colDef.minWidth != null ? colDef.minWidth : this.environment.getMinColWidth();\n };\n ColumnUtils.prototype.calculateColMaxWidth = function (colDef) {\n return colDef.maxWidth != null ? colDef.maxWidth : Number.MAX_SAFE_INTEGER;\n };\n ColumnUtils.prototype.calculateColInitialWidth = function (colDef) {\n var minColWidth = this.calculateColMinWidth(colDef);\n var maxColWidth = this.calculateColMaxWidth(colDef);\n var width;\n var colDefWidth = attrToNumber(colDef.width);\n var colDefInitialWidth = attrToNumber(colDef.initialWidth);\n if (colDefWidth != null) {\n width = colDefWidth;\n }\n else if (colDefInitialWidth != null) {\n width = colDefInitialWidth;\n }\n else {\n width = 200;\n }\n return Math.max(Math.min(width, maxColWidth), minColWidth);\n };\n ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {\n var result = [];\n var found = false;\n var recursePath = function (balancedColumnTree, dept) {\n for (var i = 0; i < balancedColumnTree.length; i++) {\n if (found) {\n return;\n }\n // quit the search, so 'result' is kept with the found result\n var node = balancedColumnTree[i];\n if (node instanceof ProvidedColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else if (node === column) {\n found = true;\n }\n }\n };\n recursePath(originalBalancedTree, 0);\n // we should always find the path, but in case there is a bug somewhere, returning null\n // will make it fail rather than provide a 'hard to track down' bug\n return found ? result : null;\n };\n ColumnUtils.prototype.depthFirstOriginalTreeSearch = function (parent, tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n _this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n }\n callback(child, parent);\n });\n };\n ColumnUtils.prototype.depthFirstAllColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);\n }\n callback(child);\n });\n };\n ColumnUtils.prototype.depthFirstDisplayedColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);\n }\n callback(child);\n });\n };\n ColumnUtils = __decorate$2q([\n Bean('columnUtils')\n ], ColumnUtils);\n return ColumnUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2O = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar DisplayedGroupCreator = /** @class */ (function (_super) {\n __extends$2O(DisplayedGroupCreator, _super);\n function DisplayedGroupCreator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DisplayedGroupCreator.prototype.createDisplayedGroups = function (\n // all displayed columns sorted - this is the columns the grid should show\n sortedVisibleColumns, \n // the tree of columns, as provided by the users, used to know what groups columns roll up into\n balancedColumnTree, \n // creates unique id's for the group\n groupInstanceIdCreator, \n // whether it's left, right or center col\n pinned, \n // we try to reuse old groups if we can, to allow gui to do animation\n oldDisplayedGroups) {\n var _this = this;\n var result = [];\n var previousRealPath;\n var previousOriginalPath;\n var oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);\n // go through each column, then do a bottom up comparison to the previous column, and start\n // to share groups if they converge at any point.\n sortedVisibleColumns.forEach(function (currentColumn) {\n var currentOriginalPath = _this.getOriginalPathForColumn(balancedColumnTree, currentColumn);\n var currentRealPath = [];\n var firstColumn = !previousOriginalPath;\n for (var i = 0; i < currentOriginalPath.length; i++) {\n if (firstColumn || currentOriginalPath[i] !== previousOriginalPath[i]) {\n // new group needed\n var newGroup = _this.createColumnGroup(currentOriginalPath[i], groupInstanceIdCreator, oldColumnsMapped, pinned);\n currentRealPath[i] = newGroup;\n // if top level, add to result, otherwise add to parent\n if (i == 0) {\n result.push(newGroup);\n }\n else {\n currentRealPath[i - 1].addChild(newGroup);\n }\n }\n else {\n // reuse old group\n currentRealPath[i] = previousRealPath[i];\n }\n }\n var noColumnGroups = currentRealPath.length === 0;\n if (noColumnGroups) {\n // if we are not grouping, then the result of the above is an empty\n // path (no groups), and we just add the column to the root list.\n result.push(currentColumn);\n }\n else {\n var leafGroup = last(currentRealPath);\n leafGroup.addChild(currentColumn);\n }\n previousRealPath = currentRealPath;\n previousOriginalPath = currentOriginalPath;\n });\n this.setupParentsIntoColumns(result, null);\n return result;\n };\n DisplayedGroupCreator.prototype.createColumnGroup = function (providedGroup, groupInstanceIdCreator, oldColumnsMapped, pinned) {\n var groupId = providedGroup.getGroupId();\n var instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n var uniqueId = ColumnGroup.createUniqueId(groupId, instanceId);\n var columnGroup = oldColumnsMapped[uniqueId];\n // if the user is setting new colDefs, it is possible that the id's overlap, and we\n // would have a false match from above. so we double check we are talking about the\n // same original column group.\n if (columnGroup && columnGroup.getProvidedColumnGroup() !== providedGroup) {\n columnGroup = null;\n }\n if (exists(columnGroup)) {\n // clean out the old column group here, as we will be adding children into it again\n columnGroup.reset();\n }\n else {\n columnGroup = new ColumnGroup(providedGroup, groupId, instanceId, pinned);\n this.context.createBean(columnGroup);\n }\n return columnGroup;\n };\n // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup\n DisplayedGroupCreator.prototype.mapOldGroupsById = function (displayedGroups) {\n var result = {};\n var recursive = function (columnsOrGroups) {\n columnsOrGroups.forEach(function (columnOrGroup) {\n if (columnOrGroup instanceof ColumnGroup) {\n var columnGroup = columnOrGroup;\n result[columnOrGroup.getUniqueId()] = columnGroup;\n recursive(columnGroup.getChildren());\n }\n });\n };\n if (displayedGroups) {\n recursive(displayedGroups);\n }\n return result;\n };\n DisplayedGroupCreator.prototype.setupParentsIntoColumns = function (columnsOrGroups, parent) {\n var _this = this;\n columnsOrGroups.forEach(function (columnsOrGroup) {\n columnsOrGroup.setParent(parent);\n if (columnsOrGroup instanceof ColumnGroup) {\n var columnGroup = columnsOrGroup;\n _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);\n }\n });\n };\n DisplayedGroupCreator.prototype.getOriginalPathForColumn = function (balancedColumnTree, column) {\n var result = [];\n var found = false;\n var recursePath = function (columnTree, dept) {\n for (var i = 0; i < columnTree.length; i++) {\n // quit the search, so 'result' is kept with the found result\n if (found) {\n return;\n }\n var node = columnTree[i];\n if (node instanceof ProvidedColumnGroup) {\n recursePath(node.getChildren(), dept + 1);\n result[dept] = node;\n }\n else if (node === column) {\n found = true;\n }\n }\n };\n recursePath(balancedColumnTree, 0);\n // it's possible we didn't find a path. this happens if the column is generated\n // by the grid (auto-group), in that the definition didn't come from the client. in this case,\n // we create a fake original path.\n if (found) {\n return result;\n }\n console.warn('AG Grid: could not get path');\n return null;\n };\n DisplayedGroupCreator = __decorate$2p([\n Bean('displayedGroupCreator')\n ], DisplayedGroupCreator);\n return DisplayedGroupCreator;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2N = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgStackComponentsRegistry = /** @class */ (function (_super) {\n __extends$2N(AgStackComponentsRegistry, _super);\n function AgStackComponentsRegistry() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.componentsMappedByName = {};\n return _this;\n }\n AgStackComponentsRegistry.prototype.setupComponents = function (components) {\n var _this = this;\n if (components) {\n components.forEach(function (componentMeta) { return _this.addComponent(componentMeta); });\n }\n };\n AgStackComponentsRegistry.prototype.addComponent = function (componentMeta) {\n // get name of the class as a string\n // insert a dash after every capital letter\n // let classEscaped = className.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n // put all to upper case\n var classUpperCase = classEscaped.toUpperCase();\n // finally store\n this.componentsMappedByName[classUpperCase] = componentMeta.componentClass;\n };\n AgStackComponentsRegistry.prototype.getComponentClass = function (htmlTag) {\n return this.componentsMappedByName[htmlTag];\n };\n AgStackComponentsRegistry = __decorate$2o([\n Bean('agStackComponentsRegistry')\n ], AgStackComponentsRegistry);\n return AgStackComponentsRegistry;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// ARIA HELPER FUNCTIONS\nfunction toggleAriaAttribute(element, attribute, value) {\n if (value == null || value == '') {\n removeAriaAttribute(element, attribute);\n }\n else {\n setAriaAttribute(element, attribute, value);\n }\n}\nfunction setAriaAttribute(element, attribute, value) {\n element.setAttribute(ariaAttributeName(attribute), value.toString());\n}\nfunction removeAriaAttribute(element, attribute) {\n element.removeAttribute(ariaAttributeName(attribute));\n}\nfunction ariaAttributeName(attribute) {\n return \"aria-\" + attribute;\n}\nfunction setAriaRole(element, role) {\n if (role) {\n element.setAttribute('role', role);\n }\n else {\n element.removeAttribute('role');\n }\n}\nfunction getAriaSortState(sortDirection) {\n var sort;\n if (sortDirection === 'asc') {\n sort = 'ascending';\n }\n else if (sortDirection === 'desc') {\n sort = 'descending';\n }\n else if (sortDirection === 'mixed') {\n sort = 'other';\n }\n else {\n sort = 'none';\n }\n return sort;\n}\n// ARIA ATTRIBUTE GETTERS\nfunction getAriaLevel(element) {\n return parseInt(element.getAttribute('aria-level'), 10);\n}\nfunction getAriaPosInSet(element) {\n return parseInt(element.getAttribute('aria-posinset'), 10);\n}\nfunction getAriaDescribedBy(element) {\n return element.getAttribute('aria-describedby') || '';\n}\n// ARIA ATTRIBUTE SETTERS\nfunction setAriaLabel(element, label) {\n toggleAriaAttribute(element, 'label', label);\n}\nfunction setAriaLabelledBy(element, labelledBy) {\n toggleAriaAttribute(element, 'labelledby', labelledBy);\n}\nfunction setAriaDescription(element, description) {\n toggleAriaAttribute(element, 'description', description);\n}\nfunction setAriaDescribedBy(element, describedby) {\n toggleAriaAttribute(element, 'describedby', describedby);\n}\nfunction setAriaLive(element, live) {\n toggleAriaAttribute(element, 'live', live);\n}\nfunction setAriaLevel(element, level) {\n toggleAriaAttribute(element, 'level', level);\n}\nfunction setAriaDisabled(element, disabled) {\n toggleAriaAttribute(element, 'disabled', disabled);\n}\nfunction setAriaHidden(element, hidden) {\n toggleAriaAttribute(element, 'hidden', hidden);\n}\nfunction setAriaExpanded(element, expanded) {\n setAriaAttribute(element, 'expanded', expanded);\n}\nfunction removeAriaExpanded(element) {\n removeAriaAttribute(element, 'expanded');\n}\nfunction setAriaSetSize(element, setsize) {\n setAriaAttribute(element, 'setsize', setsize);\n}\nfunction setAriaPosInSet(element, position) {\n setAriaAttribute(element, 'posinset', position);\n}\nfunction setAriaMultiSelectable(element, multiSelectable) {\n setAriaAttribute(element, 'multiselectable', multiSelectable);\n}\nfunction setAriaRowCount(element, rowCount) {\n setAriaAttribute(element, 'rowcount', rowCount);\n}\nfunction setAriaRowIndex(element, rowIndex) {\n setAriaAttribute(element, 'rowindex', rowIndex);\n}\nfunction setAriaColCount(element, colCount) {\n setAriaAttribute(element, 'colcount', colCount);\n}\nfunction setAriaColIndex(element, colIndex) {\n setAriaAttribute(element, 'colindex', colIndex);\n}\nfunction setAriaColSpan(element, colSpan) {\n setAriaAttribute(element, 'colspan', colSpan);\n}\nfunction setAriaSort(element, sort) {\n setAriaAttribute(element, 'sort', sort);\n}\nfunction removeAriaSort(element) {\n removeAriaAttribute(element, 'sort');\n}\nfunction setAriaSelected(element, selected) {\n toggleAriaAttribute(element, 'selected', selected);\n}\nfunction setAriaChecked(element, checked) {\n setAriaAttribute(element, 'checked', checked === undefined ? 'mixed' : checked);\n}\n\nvar AriaUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n setAriaRole: setAriaRole,\n getAriaSortState: getAriaSortState,\n getAriaLevel: getAriaLevel,\n getAriaPosInSet: getAriaPosInSet,\n getAriaDescribedBy: getAriaDescribedBy,\n setAriaLabel: setAriaLabel,\n setAriaLabelledBy: setAriaLabelledBy,\n setAriaDescription: setAriaDescription,\n setAriaDescribedBy: setAriaDescribedBy,\n setAriaLive: setAriaLive,\n setAriaLevel: setAriaLevel,\n setAriaDisabled: setAriaDisabled,\n setAriaHidden: setAriaHidden,\n setAriaExpanded: setAriaExpanded,\n removeAriaExpanded: removeAriaExpanded,\n setAriaSetSize: setAriaSetSize,\n setAriaPosInSet: setAriaPosInSet,\n setAriaMultiSelectable: setAriaMultiSelectable,\n setAriaRowCount: setAriaRowCount,\n setAriaRowIndex: setAriaRowIndex,\n setAriaColCount: setAriaColCount,\n setAriaColIndex: setAriaColIndex,\n setAriaColSpan: setAriaColSpan,\n setAriaSort: setAriaSort,\n removeAriaSort: removeAriaSort,\n setAriaSelected: setAriaSelected,\n setAriaChecked: setAriaChecked\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * These variables are lazy loaded, as otherwise they try and get initialised when we are loading\n * unit tests and we don't have references to window or document in the unit tests\n */\nvar isSafari;\nvar safariVersion;\nvar isChrome;\nvar isFirefox;\nvar isMacOs;\nvar isIOS;\nvar invisibleScrollbar;\nvar browserScrollbarWidth;\nfunction isBrowserSafari() {\n if (isSafari === undefined) {\n isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n }\n return isSafari;\n}\nfunction getSafariVersion() {\n if (safariVersion === undefined) {\n if (isBrowserSafari()) {\n var versionMatch = navigator.userAgent.match(/version\\/(\\d+)/i);\n if (versionMatch) {\n safariVersion = versionMatch[1] != null ? parseFloat(versionMatch[1]) : 0;\n }\n }\n else {\n safariVersion = 0;\n }\n }\n return safariVersion;\n}\n/**\n * Returns true for Chrome and also for Edge (Chromium)\n */\nfunction isBrowserChrome() {\n if (isChrome === undefined) {\n var win = window;\n isChrome = (!!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime)) ||\n (/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));\n }\n return isChrome;\n}\nfunction isBrowserFirefox() {\n if (isFirefox === undefined) {\n isFirefox = /(firefox)/i.test(navigator.userAgent);\n }\n return isFirefox;\n}\nfunction isMacOsUserAgent() {\n if (isMacOs === undefined) {\n isMacOs = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\n }\n return isMacOs;\n}\nfunction isIOSUserAgent() {\n if (isIOS === undefined) {\n isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n // eslint-disable-next-line\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n }\n return isIOS;\n}\nfunction browserSupportsPreventScroll() {\n // all browsers except safari support focus({ preventScroll: true }).\n // this feature was added on Safari 15+\n return !isBrowserSafari() || getSafariVersion() >= 15;\n}\nfunction getTabIndex(el) {\n if (!el) {\n return null;\n }\n var numberTabIndex = el.tabIndex;\n var tabIndex = el.getAttribute('tabIndex');\n if (numberTabIndex === -1 && (tabIndex === null || (tabIndex === '' && !isBrowserFirefox()))) {\n return null;\n }\n return numberTabIndex.toString();\n}\nfunction getMaxDivHeight() {\n if (!document.body) {\n return -1;\n }\n var res = 1000000;\n // FF reports the height back but still renders blank after ~6M px\n var testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6000000 : 1000000000;\n var div = document.createElement('div');\n document.body.appendChild(div);\n while (true) {\n var test = res * 2;\n div.style.height = test + 'px';\n if (test > testUpTo || div.clientHeight !== test) {\n break;\n }\n else {\n res = test;\n }\n }\n document.body.removeChild(div);\n return res;\n}\nfunction getBodyWidth() {\n var _a, _b, _c;\n return (_b = (_a = document.body) === null || _a === void 0 ? void 0 : _a.clientWidth) !== null && _b !== void 0 ? _b : (window.innerHeight || ((_c = document.documentElement) === null || _c === void 0 ? void 0 : _c.clientWidth) || -1);\n}\nfunction getBodyHeight() {\n var _a, _b, _c;\n return (_b = (_a = document.body) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : (window.innerHeight || ((_c = document.documentElement) === null || _c === void 0 ? void 0 : _c.clientHeight) || -1);\n}\nfunction getScrollbarWidth() {\n if (browserScrollbarWidth == null) {\n initScrollbarWidthAndVisibility();\n }\n return browserScrollbarWidth;\n}\nfunction initScrollbarWidthAndVisibility() {\n var body = document.body;\n var div = document.createElement('div');\n div.style.width = div.style.height = '100px';\n div.style.opacity = '0';\n div.style.overflow = 'scroll';\n div.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n div.style.position = 'absolute';\n body.appendChild(div);\n var width = div.offsetWidth - div.clientWidth;\n // if width is 0 and client width is 0, means the DOM isn't ready\n if (width === 0 && div.clientWidth === 0) {\n width = null;\n }\n // remove div\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n if (width != null) {\n browserScrollbarWidth = width;\n invisibleScrollbar = width === 0;\n }\n}\nfunction isInvisibleScrollbar() {\n if (invisibleScrollbar == null) {\n initScrollbarWidthAndVisibility();\n }\n return invisibleScrollbar;\n}\n\nvar BrowserUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isBrowserSafari: isBrowserSafari,\n getSafariVersion: getSafariVersion,\n isBrowserChrome: isBrowserChrome,\n isBrowserFirefox: isBrowserFirefox,\n isMacOsUserAgent: isMacOsUserAgent,\n isIOSUserAgent: isIOSUserAgent,\n browserSupportsPreventScroll: browserSupportsPreventScroll,\n getTabIndex: getTabIndex,\n getMaxDivHeight: getMaxDivHeight,\n getBodyWidth: getBodyWidth,\n getBodyHeight: getBodyHeight,\n getScrollbarWidth: getScrollbarWidth,\n isInvisibleScrollbar: isInvisibleScrollbar\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction padStartWidthZeros(value, totalStringSize) {\n return value.toString().padStart(totalStringSize, '0');\n}\nfunction createArrayOfNumbers(first, last) {\n var result = [];\n for (var i = first; i <= last; i++) {\n result.push(i);\n }\n return result;\n}\nfunction cleanNumber(value) {\n if (typeof value === 'string') {\n value = parseInt(value, 10);\n }\n if (typeof value === 'number') {\n return Math.floor(value);\n }\n return null;\n}\nfunction decToHex(number, bytes) {\n var hex = '';\n for (var i = 0; i < bytes; i++) {\n hex += String.fromCharCode(number & 0xff);\n number >>>= 8;\n }\n return hex;\n}\nfunction formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator) {\n if (typeof value !== 'number') {\n return '';\n }\n return formatNumberCommas(Math.round(value * 100) / 100, thousandSeparator, decimalSeparator);\n}\n/**\n * the native method number.toLocaleString(undefined, {minimumFractionDigits: 0})\n * puts in decimal places in IE, so we use this method instead\n * from: http://blog.tompawlak.org/number-currency-formatting-javascript\n * @param {number} value\n * @returns {string}\n */\nfunction formatNumberCommas(value, thousandSeparator, decimalSeparator) {\n if (typeof value !== 'number') {\n return '';\n }\n return value.toString().replace('.', decimalSeparator).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1\" + thousandSeparator);\n}\nfunction sum(values) {\n return values == null ? null : values.reduce(function (total, value) { return total + value; }, 0);\n}\nfunction zeroOrGreater(value, defaultValue) {\n if (value >= 0) {\n return value;\n }\n // zero gets returned if number is missing or the wrong type\n return defaultValue;\n}\nfunction oneOrGreater(value, defaultValue) {\n var valueNumber = parseInt(value, 10);\n if (!isNaN(valueNumber) && isFinite(valueNumber) && valueNumber > 0) {\n return valueNumber;\n }\n return defaultValue;\n}\n\nvar NumberUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n padStartWidthZeros: padStartWidthZeros,\n createArrayOfNumbers: createArrayOfNumbers,\n cleanNumber: cleanNumber,\n decToHex: decToHex,\n formatNumberTwoDecimalPlacesAndCommas: formatNumberTwoDecimalPlacesAndCommas,\n formatNumberCommas: formatNumberCommas,\n sum: sum,\n zeroOrGreater: zeroOrGreater,\n oneOrGreater: oneOrGreater\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$p = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/**\n * Serialises a Date to a string of format `yyyy-MM-dd HH:mm:ss`.\n * An alternative separator can be provided to be used instead of hyphens.\n * @param date The date to serialise\n * @param includeTime Whether to include the time in the serialised string\n * @param separator The separator to use between date parts\n */\nfunction serialiseDate(date, includeTime, separator) {\n if (includeTime === void 0) { includeTime = true; }\n if (separator === void 0) { separator = '-'; }\n if (!date) {\n return null;\n }\n var serialised = [date.getFullYear(), date.getMonth() + 1, date.getDate()].map(function (part) { return padStartWidthZeros(part, 2); }).join(separator);\n if (includeTime) {\n serialised += ' ' + [date.getHours(), date.getMinutes(), date.getSeconds()].map(function (part) { return padStartWidthZeros(part, 2); }).join(':');\n }\n return serialised;\n}\nvar calculateOrdinal = function (value) {\n if (value > 3 && value < 21) {\n return 'th';\n }\n var remainder = value % 10;\n switch (remainder) {\n case 1: return \"st\";\n case 2: return \"nd\";\n case 3: return \"rd\";\n }\n return 'th';\n};\n/**\n * Serialises a Date to a string of format the defined format, does not include time.\n * @param date The date to serialise\n * @param format The string to format the date to, defaults to YYYY-MM-DD\n */\nfunction dateToFormattedString(date, format) {\n if (format === void 0) { format = 'YYYY-MM-DD'; }\n var fullYear = padStartWidthZeros(date.getFullYear(), 4);\n var months = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n ];\n var days = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',\n ];\n var replace = {\n YYYY: function () { return fullYear.slice(fullYear.length - 4, fullYear.length); },\n YY: function () { return fullYear.slice(fullYear.length - 2, fullYear.length); },\n Y: function () { return \"\" + date.getFullYear(); },\n MMMM: function () { return months[date.getMonth()]; },\n MMM: function () { return months[date.getMonth()].slice(0, 3); },\n MM: function () { return padStartWidthZeros(date.getMonth() + 1, 2); },\n Mo: function () { return \"\" + (date.getMonth() + 1) + calculateOrdinal(date.getMonth() + 1); },\n M: function () { return \"\" + (date.getMonth() + 1); },\n Do: function () { return \"\" + date.getDate() + calculateOrdinal(date.getDate()); },\n DD: function () { return padStartWidthZeros(date.getDate(), 2); },\n D: function () { return \"\" + date.getDate(); },\n dddd: function () { return days[date.getDay()]; },\n ddd: function () { return days[date.getDay()].slice(0, 3); },\n dd: function () { return days[date.getDay()].slice(0, 2); },\n do: function () { return \"\" + date.getDay() + calculateOrdinal(date.getDay()); },\n d: function () { return \"\" + date.getDay(); },\n };\n var regexp = new RegExp(Object.keys(replace).join('|'), 'g');\n return format.replace(regexp, function (match) {\n if (match in replace) {\n return replace[match]();\n }\n return match;\n });\n}\n/**\n * Parses a date and time from a string in the format `yyyy-MM-dd HH:mm:ss`\n */\nfunction parseDateTimeFromString(value) {\n if (!value) {\n return null;\n }\n var _a = __read$p(value.split(' '), 2), dateStr = _a[0], timeStr = _a[1];\n if (!dateStr) {\n return null;\n }\n var fields = dateStr.split('-').map(function (f) { return parseInt(f, 10); });\n if (fields.filter(function (f) { return !isNaN(f); }).length !== 3) {\n return null;\n }\n var _b = __read$p(fields, 3), year = _b[0], month = _b[1], day = _b[2];\n var date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day) {\n // date was not parsed as expected so must have been invalid\n return null;\n }\n if (!timeStr || timeStr === '00:00:00') {\n return date;\n }\n var _c = __read$p(timeStr.split(':').map(function (part) { return parseInt(part, 10); }), 3), hours = _c[0], minutes = _c[1], seconds = _c[2];\n if (hours >= 0 && hours < 24) {\n date.setHours(hours);\n }\n if (minutes >= 0 && minutes < 60) {\n date.setMinutes(minutes);\n }\n if (seconds >= 0 && seconds < 60) {\n date.setSeconds(seconds);\n }\n return date;\n}\n\nvar DateUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n serialiseDate: serialiseDate,\n dateToFormattedString: dateToFormattedString,\n parseDateTimeFromString: parseDateTimeFromString\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __values$5 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$o = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar rtlNegativeScroll;\n/**\n * This method adds a class to an element and remove that class from all siblings.\n * Useful for toggling state.\n * @param {HTMLElement} element The element to receive the class\n * @param {string} elementClass The class to be assigned to the element\n * @param {boolean} otherElementClass The class to be assigned to siblings of the element, but not the element itself\n */\nfunction radioCssClass(element, elementClass, otherElementClass) {\n var parent = element.parentElement;\n var sibling = parent && parent.firstChild;\n while (sibling) {\n if (elementClass) {\n sibling.classList.toggle(elementClass, sibling === element);\n }\n if (otherElementClass) {\n sibling.classList.toggle(otherElementClass, sibling !== element);\n }\n sibling = sibling.nextSibling;\n }\n}\nvar FOCUSABLE_SELECTOR = '[tabindex], input, select, button, textarea, [href]';\nvar FOCUSABLE_EXCLUDE = '.ag-hidden, .ag-hidden *, [disabled], .ag-disabled, .ag-disabled *';\nfunction isFocusableFormField(element) {\n var matches = Element.prototype.matches || Element.prototype.msMatchesSelector;\n var inputSelector = 'input, select, button, textarea';\n var isFocusable = matches.call(element, inputSelector);\n var isNotFocusable = matches.call(element, FOCUSABLE_EXCLUDE);\n var isElementVisible = isVisible(element);\n var focusable = isFocusable && !isNotFocusable && isElementVisible;\n return focusable;\n}\nfunction setDisplayed(element, displayed, options) {\n if (options === void 0) { options = {}; }\n var skipAriaHidden = options.skipAriaHidden;\n element.classList.toggle('ag-hidden', !displayed);\n if (!skipAriaHidden) {\n setAriaHidden(element, !displayed);\n }\n}\nfunction setVisible(element, visible, options) {\n if (options === void 0) { options = {}; }\n var skipAriaHidden = options.skipAriaHidden;\n element.classList.toggle('ag-invisible', !visible);\n if (!skipAriaHidden) {\n setAriaHidden(element, !visible);\n }\n}\nfunction setDisabled(element, disabled) {\n var attributeName = 'disabled';\n var addOrRemoveDisabledAttribute = disabled ?\n function (e) { return e.setAttribute(attributeName, ''); } :\n function (e) { return e.removeAttribute(attributeName); };\n addOrRemoveDisabledAttribute(element);\n nodeListForEach(element.querySelectorAll('input'), function (input) { return addOrRemoveDisabledAttribute(input); });\n}\nfunction isElementChildOfClass(element, cls, maxNest) {\n var counter = 0;\n while (element) {\n if (element.classList.contains(cls)) {\n return true;\n }\n element = element.parentElement;\n if (typeof maxNest == 'number') {\n if (++counter > maxNest) {\n break;\n }\n }\n else if (element === maxNest) {\n break;\n }\n }\n return false;\n}\n// returns back sizes as doubles instead of strings. similar to\n// getBoundingClientRect, however getBoundingClientRect does not:\n// a) work with fractions (eg browser is zooming)\n// b) has CSS transitions applied (eg CSS scale, browser zoom), which we don't want, we want the un-transitioned values\nfunction getElementSize(el) {\n var _a = window.getComputedStyle(el), height = _a.height, width = _a.width, borderTopWidth = _a.borderTopWidth, borderRightWidth = _a.borderRightWidth, borderBottomWidth = _a.borderBottomWidth, borderLeftWidth = _a.borderLeftWidth, paddingTop = _a.paddingTop, paddingRight = _a.paddingRight, paddingBottom = _a.paddingBottom, paddingLeft = _a.paddingLeft, marginTop = _a.marginTop, marginRight = _a.marginRight, marginBottom = _a.marginBottom, marginLeft = _a.marginLeft, boxSizing = _a.boxSizing;\n return {\n height: parseFloat(height),\n width: parseFloat(width),\n borderTopWidth: parseFloat(borderTopWidth),\n borderRightWidth: parseFloat(borderRightWidth),\n borderBottomWidth: parseFloat(borderBottomWidth),\n borderLeftWidth: parseFloat(borderLeftWidth),\n paddingTop: parseFloat(paddingTop),\n paddingRight: parseFloat(paddingRight),\n paddingBottom: parseFloat(paddingBottom),\n paddingLeft: parseFloat(paddingLeft),\n marginTop: parseFloat(marginTop),\n marginRight: parseFloat(marginRight),\n marginBottom: parseFloat(marginBottom),\n marginLeft: parseFloat(marginLeft),\n boxSizing: boxSizing\n };\n}\nfunction getInnerHeight(el) {\n var size = getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.height - size.paddingTop - size.paddingBottom;\n }\n return size.height;\n}\nfunction getInnerWidth(el) {\n var size = getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.width - size.paddingLeft - size.paddingRight;\n }\n return size.width;\n}\nfunction getAbsoluteHeight(el) {\n var size = getElementSize(el);\n var marginRight = size.marginBottom + size.marginTop;\n return Math.ceil(el.offsetHeight + marginRight);\n}\nfunction getAbsoluteWidth(el) {\n var size = getElementSize(el);\n var marginWidth = size.marginLeft + size.marginRight;\n return Math.ceil(el.offsetWidth + marginWidth);\n}\nfunction isRtlNegativeScroll() {\n if (typeof rtlNegativeScroll === \"boolean\") {\n return rtlNegativeScroll;\n }\n var template = document.createElement('div');\n template.style.direction = 'rtl';\n template.style.width = '1px';\n template.style.height = '1px';\n template.style.position = 'fixed';\n template.style.top = '0px';\n template.style.overflow = 'hidden';\n template.dir = 'rtl';\n template.innerHTML = /* html */\n \"<div style=\\\"width: 2px\\\">\\n <span style=\\\"display: inline-block; width: 1px\\\"></span>\\n <span style=\\\"display: inline-block; width: 1px\\\"></span>\\n </div>\";\n document.body.appendChild(template);\n template.scrollLeft = 1;\n rtlNegativeScroll = Math.floor(template.scrollLeft) === 0;\n document.body.removeChild(template);\n return rtlNegativeScroll;\n}\nfunction getScrollLeft(element, rtl) {\n var scrollLeft = element.scrollLeft;\n if (rtl) {\n // Absolute value - for FF that reports RTL scrolls in negative numbers\n scrollLeft = Math.abs(scrollLeft);\n if (isBrowserChrome() && !isRtlNegativeScroll()) {\n scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;\n }\n }\n return scrollLeft;\n}\nfunction setScrollLeft(element, value, rtl) {\n if (rtl) {\n // Chrome and Safari when doing RTL have the END position of the scroll as zero, not the start\n if (isRtlNegativeScroll()) {\n value *= -1;\n }\n else if (isBrowserSafari() || isBrowserChrome()) {\n value = element.scrollWidth - element.clientWidth - value;\n }\n }\n element.scrollLeft = value;\n}\nfunction clearElement(el) {\n while (el && el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n/** @deprecated */\nfunction removeElement(parent, cssSelector) {\n removeFromParent(parent.querySelector(cssSelector));\n}\nfunction removeFromParent(node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction isVisible(element) {\n return element.offsetParent !== null;\n}\n/**\n * Loads the template and returns it as an element. makes up for no simple way in\n * the dom api to load html directly, eg we cannot do this: document.createElement(template)\n * @param {string} template\n * @returns {HTMLElement}\n */\nfunction loadTemplate(template) {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = (template || '').trim();\n return tempDiv.firstChild;\n}\nfunction appendHtml(eContainer, htmlTemplate) {\n if (eContainer.lastChild) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML\n // we put the items at the start, so new items appear underneath old items,\n // so when expanding/collapsing groups, the new rows don't go on top of the\n // rows below that are moving our of the way\n eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n }\n else {\n eContainer.innerHTML = htmlTemplate;\n }\n}\n/** @deprecated */\nfunction getElementAttribute(element, attributeName) {\n if (element.attributes && element.attributes[attributeName]) {\n var attribute = element.attributes[attributeName];\n return attribute.value;\n }\n return null;\n}\nfunction offsetHeight(element) {\n return element && element.clientHeight ? element.clientHeight : 0;\n}\nfunction offsetWidth(element) {\n return element && element.clientWidth ? element.clientWidth : 0;\n}\nfunction ensureDomOrder(eContainer, eChild, eChildBefore) {\n // if already in right order, do nothing\n if (eChildBefore && eChildBefore.nextSibling === eChild) {\n return;\n }\n var focusedEl = document.activeElement;\n var eChildHasFocus = eChild.contains(focusedEl);\n if (eChildBefore) {\n if (eChildBefore.nextSibling) {\n // insert between the eRowBefore and the row after it\n eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n }\n else {\n // if nextSibling is missing, means other row is at end, so just append new row at the end\n eContainer.appendChild(eChild);\n }\n }\n else {\n // otherwise put at start\n if (eContainer.firstChild && eContainer.firstChild !== eChild) {\n // insert it at the first location\n eContainer.insertAdjacentElement('afterbegin', eChild);\n }\n }\n if (eChildHasFocus && focusedEl && browserSupportsPreventScroll()) {\n focusedEl.focus({ preventScroll: true });\n }\n}\nfunction setDomChildOrder(eContainer, orderedChildren) {\n for (var i = 0; i < orderedChildren.length; i++) {\n var correctCellAtIndex = orderedChildren[i];\n var actualCellAtIndex = eContainer.children[i];\n if (actualCellAtIndex !== correctCellAtIndex) {\n eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);\n }\n }\n}\nfunction insertWithDomOrder(eContainer, eToInsert, eChildBefore) {\n if (eChildBefore) {\n // if previous element exists, just slot in after the previous element\n eChildBefore.insertAdjacentElement('afterend', eToInsert);\n }\n else {\n if (eContainer.firstChild) {\n // insert it at the first location\n eContainer.insertAdjacentElement('afterbegin', eToInsert);\n }\n else {\n // otherwise eContainer is empty, so just append it\n eContainer.appendChild(eToInsert);\n }\n }\n}\n/** @deprecated */\nfunction prependDC(parent, documentFragment) {\n if (exists(parent.firstChild)) {\n parent.insertBefore(documentFragment, parent.firstChild);\n }\n else {\n parent.appendChild(documentFragment);\n }\n}\nfunction addStylesToElement(eElement, styles) {\n var e_1, _a;\n if (!styles) {\n return;\n }\n try {\n for (var _b = __values$5(Object.entries(styles)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$o(_c.value, 2), key = _d[0], value = _d[1];\n if (!key || !key.length || value == null) {\n continue;\n }\n // changes the key from camelCase into a hyphenated-string\n var parsedKey = key.replace(/[A-Z]/g, function (s) { return \"-\" + s.toLocaleLowerCase(); });\n var valueAsString = value.toString();\n var parsedValue = valueAsString.replace(/\\s*!important/g, '');\n var priority = parsedValue.length != valueAsString.length ? 'important' : undefined;\n eElement.style.setProperty(parsedKey, value, priority);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n}\nfunction isHorizontalScrollShowing(element) {\n return element.clientWidth < element.scrollWidth;\n}\nfunction isVerticalScrollShowing(element) {\n return element.clientHeight < element.scrollHeight;\n}\nfunction setElementWidth(element, width) {\n if (width === 'flex') {\n element.style.removeProperty('width');\n element.style.removeProperty('minWidth');\n element.style.removeProperty('maxWidth');\n element.style.flex = '1 1 auto';\n }\n else {\n setFixedWidth(element, width);\n }\n}\nfunction setFixedWidth(element, width) {\n width = formatSize(width);\n element.style.width = width.toString();\n element.style.maxWidth = width.toString();\n element.style.minWidth = width.toString();\n}\nfunction setElementHeight(element, height) {\n if (height === 'flex') {\n element.style.removeProperty('height');\n element.style.removeProperty('minHeight');\n element.style.removeProperty('maxHeight');\n element.style.flex = '1 1 auto';\n }\n else {\n setFixedHeight(element, height);\n }\n}\nfunction setFixedHeight(element, height) {\n height = formatSize(height);\n element.style.height = height.toString();\n element.style.maxHeight = height.toString();\n element.style.minHeight = height.toString();\n}\nfunction formatSize(size) {\n if (typeof size === 'number') {\n return size + \"px\";\n }\n return size;\n}\nfunction isNodeOrElement(o) {\n return o instanceof Node || o instanceof HTMLElement;\n}\n/**\n * Makes a copy of a node list into a list\n * @param {NodeList} nodeList\n * @returns {Node[]}\n */\nfunction copyNodeList(nodeList) {\n if (nodeList == null) {\n return [];\n }\n var result = [];\n nodeListForEach(nodeList, function (node) { return result.push(node); });\n return result;\n}\nfunction iterateNamedNodeMap(map, callback) {\n if (!map) {\n return;\n }\n for (var i = 0; i < map.length; i++) {\n var attr = map[i];\n callback(attr.name, attr.value);\n }\n}\nfunction addOrRemoveAttribute(element, name, value) {\n if (value == null) {\n element.removeAttribute(name);\n }\n else {\n element.setAttribute(name, value.toString());\n }\n}\nfunction nodeListForEach(nodeList, action) {\n if (nodeList == null) {\n return;\n }\n for (var i = 0; i < nodeList.length; i++) {\n action(nodeList[i]);\n }\n}\n\nvar DomUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n radioCssClass: radioCssClass,\n FOCUSABLE_SELECTOR: FOCUSABLE_SELECTOR,\n FOCUSABLE_EXCLUDE: FOCUSABLE_EXCLUDE,\n isFocusableFormField: isFocusableFormField,\n setDisplayed: setDisplayed,\n setVisible: setVisible,\n setDisabled: setDisabled,\n isElementChildOfClass: isElementChildOfClass,\n getElementSize: getElementSize,\n getInnerHeight: getInnerHeight,\n getInnerWidth: getInnerWidth,\n getAbsoluteHeight: getAbsoluteHeight,\n getAbsoluteWidth: getAbsoluteWidth,\n isRtlNegativeScroll: isRtlNegativeScroll,\n getScrollLeft: getScrollLeft,\n setScrollLeft: setScrollLeft,\n clearElement: clearElement,\n removeElement: removeElement,\n removeFromParent: removeFromParent,\n isVisible: isVisible,\n loadTemplate: loadTemplate,\n appendHtml: appendHtml,\n getElementAttribute: getElementAttribute,\n offsetHeight: offsetHeight,\n offsetWidth: offsetWidth,\n ensureDomOrder: ensureDomOrder,\n setDomChildOrder: setDomChildOrder,\n insertWithDomOrder: insertWithDomOrder,\n prependDC: prependDC,\n addStylesToElement: addStylesToElement,\n isHorizontalScrollShowing: isHorizontalScrollShowing,\n isVerticalScrollShowing: isVerticalScrollShowing,\n setElementWidth: setElementWidth,\n setFixedWidth: setFixedWidth,\n setElementHeight: setElementHeight,\n setFixedHeight: setFixedHeight,\n formatSize: formatSize,\n isNodeOrElement: isNodeOrElement,\n copyNodeList: copyNodeList,\n iterateNamedNodeMap: iterateNamedNodeMap,\n addOrRemoveAttribute: addOrRemoveAttribute,\n nodeListForEach: nodeListForEach\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n//\n// IMPORTANT NOTE!\n//\n// If you change the list below, copy/paste the new content into the docs page javascript-grid-icons\n//\nvar iconNameClassMap = {\n // header column group shown when expanded (click to contract)\n columnGroupOpened: 'expanded',\n // header column group shown when contracted (click to expand)\n columnGroupClosed: 'contracted',\n // tool panel column group contracted (click to expand)\n columnSelectClosed: 'tree-closed',\n // tool panel column group expanded (click to contract)\n columnSelectOpen: 'tree-open',\n // column tool panel header expand/collapse all button, shown when some children are expanded and\n // others are collapsed\n columnSelectIndeterminate: 'tree-indeterminate',\n // shown on ghost icon while dragging column to the side of the grid to pin\n columnMovePin: 'pin',\n // shown on ghost icon while dragging over part of the page that is not a drop zone\n columnMoveHide: 'eye-slash',\n // shown on ghost icon while dragging columns to reorder\n columnMoveMove: 'arrows',\n // animating icon shown when dragging a column to the right of the grid causes horizontal scrolling\n columnMoveLeft: 'left',\n // animating icon shown when dragging a column to the left of the grid causes horizontal scrolling\n columnMoveRight: 'right',\n // shown on ghost icon while dragging over Row Groups drop zone\n columnMoveGroup: 'group',\n // shown on ghost icon while dragging over Values drop zone\n columnMoveValue: 'aggregation',\n // shown on ghost icon while dragging over pivot drop zone\n columnMovePivot: 'pivot',\n // shown on ghost icon while dragging over drop zone that doesn't support it, e.g.\n // string column over aggregation drop zone\n dropNotAllowed: 'not-allowed',\n // shown on row group when contracted (click to expand)\n groupContracted: 'tree-closed',\n // shown on row group when expanded (click to contract)\n groupExpanded: 'tree-open',\n // set filter tree list group contracted (click to expand)\n setFilterGroupClosed: 'tree-closed',\n // set filter tree list group expanded (click to contract)\n setFilterGroupOpen: 'tree-open',\n // set filter tree list expand/collapse all button, shown when some children are expanded and\n // others are collapsed\n setFilterGroupIndeterminate: 'tree-indeterminate',\n // context menu chart item\n chart: 'chart',\n // chart window title bar\n close: 'cross',\n // X (remove) on column 'pill' after adding it to a drop zone list\n cancel: 'cancel',\n // indicates the currently active pin state in the \"Pin column\" sub-menu of the column menu\n check: 'tick',\n // \"go to first\" button in pagination controls\n first: 'first',\n // \"go to previous\" button in pagination controls\n previous: 'previous',\n // \"go to next\" button in pagination controls\n next: 'next',\n // \"go to last\" button in pagination controls\n last: 'last',\n // shown on top right of chart when chart is linked to range data (click to unlink)\n linked: 'linked',\n // shown on top right of chart when chart is not linked to range data (click to link)\n unlinked: 'unlinked',\n // \"Choose colour\" button on chart settings tab\n colorPicker: 'color-picker',\n // rotating spinner shown by the loading cell renderer\n groupLoading: 'loading',\n // button to launch enterprise column menu\n menu: 'menu',\n // filter tool panel tab\n filter: 'filter',\n // column tool panel tab\n columns: 'columns',\n // button in chart regular size window title bar (click to maximise)\n maximize: 'maximize',\n // button in chart maximised window title bar (click to make regular size)\n minimize: 'minimize',\n // \"Pin column\" item in column header menu\n menuPin: 'pin',\n // \"Value aggregation\" column menu item (shown on numeric columns when grouping is active)\"\n menuValue: 'aggregation',\n // \"Group by {column-name}\" item in column header menu\n menuAddRowGroup: 'group',\n // \"Un-Group by {column-name}\" item in column header menu\n menuRemoveRowGroup: 'group',\n // context menu copy item\n clipboardCopy: 'copy',\n // context menu cut item\n clipboardCut: 'cut',\n // context menu paste item\n clipboardPaste: 'paste',\n // identifies the pivot drop zone\n pivotPanel: 'pivot',\n // \"Row groups\" drop zone in column tool panel\n rowGroupPanel: 'group',\n // columns tool panel Values drop zone\n valuePanel: 'aggregation',\n // drag handle used to pick up draggable columns\n columnDrag: 'grip',\n // drag handle used to pick up draggable rows\n rowDrag: 'grip',\n // context menu export item\n save: 'save',\n // csv export\n csvExport: 'csv',\n // excel export,\n excelExport: 'excel',\n // icon on dropdown editors\n smallDown: 'small-down',\n // version of small-right used in RTL mode\n smallLeft: 'small-left',\n // separater between column 'pills' when you add multiple columns to the header drop zone\n smallRight: 'small-right',\n smallUp: 'small-up',\n // show on column header when column is sorted ascending\n sortAscending: 'asc',\n // show on column header when column is sorted descending\n sortDescending: 'desc',\n // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true\n sortUnSort: 'none'\n};\n/**\n * If icon provided, use this (either a string, or a function callback).\n * if not, then use the default icon from the theme\n * @param {string} iconName\n * @param {GridOptionsService} gridOptionsService\n * @param {Column | null} [column]\n * @returns {Element}\n */\nfunction createIcon(iconName, gridOptionsService, column) {\n var iconContents = createIconNoSpan(iconName, gridOptionsService, column);\n if (iconContents) {\n var className = iconContents.className;\n if ((typeof className === 'string' && className.indexOf('ag-icon') > -1) ||\n (typeof className === 'object' && className['ag-icon'])) {\n return iconContents;\n }\n }\n var eResult = document.createElement('span');\n eResult.appendChild(iconContents);\n return eResult;\n}\nfunction createIconNoSpan(iconName, gridOptionsService, column, forceCreate) {\n var userProvidedIcon = null;\n // check col for icon first\n var icons = column && column.getColDef().icons;\n if (icons) {\n userProvidedIcon = icons[iconName];\n }\n // if not in col, try grid options\n if (gridOptionsService && !userProvidedIcon) {\n var optionsIcons = gridOptionsService.get('icons');\n if (optionsIcons) {\n userProvidedIcon = optionsIcons[iconName];\n }\n }\n // now if user provided, use it\n if (userProvidedIcon) {\n var rendererResult = void 0;\n if (typeof userProvidedIcon === 'function') {\n rendererResult = userProvidedIcon();\n }\n else if (typeof userProvidedIcon === 'string') {\n rendererResult = userProvidedIcon;\n }\n else {\n throw new Error('icon from grid options needs to be a string or a function');\n }\n if (typeof rendererResult === 'string') {\n return loadTemplate(rendererResult);\n }\n if (isNodeOrElement(rendererResult)) {\n return rendererResult;\n }\n console.warn('AG Grid: iconRenderer should return back a string or a dom object');\n }\n else {\n var span = document.createElement('span');\n var cssClass = iconNameClassMap[iconName];\n if (!cssClass) {\n if (!forceCreate) {\n console.warn(\"AG Grid: Did not find icon \" + iconName);\n cssClass = '';\n }\n else {\n cssClass = iconName;\n }\n }\n span.setAttribute('class', \"ag-icon ag-icon-\" + cssClass);\n span.setAttribute('unselectable', 'on');\n setAriaRole(span, 'presentation');\n return span;\n }\n}\n\nvar IconUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n iconNameClassMap: iconNameClassMap,\n createIcon: createIcon,\n createIconNoSpan: createIconNoSpan\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar KeyCode = /** @class */ (function () {\n function KeyCode() {\n }\n KeyCode.BACKSPACE = 'Backspace';\n KeyCode.TAB = 'Tab';\n KeyCode.ENTER = 'Enter';\n KeyCode.ESCAPE = 'Escape';\n KeyCode.SPACE = ' ';\n KeyCode.LEFT = 'ArrowLeft';\n KeyCode.UP = 'ArrowUp';\n KeyCode.RIGHT = 'ArrowRight';\n KeyCode.DOWN = 'ArrowDown';\n KeyCode.DELETE = 'Delete';\n KeyCode.F2 = 'F2';\n KeyCode.PAGE_UP = 'PageUp';\n KeyCode.PAGE_DOWN = 'PageDown';\n KeyCode.PAGE_HOME = 'Home';\n KeyCode.PAGE_END = 'End';\n // these should be used with `event.code` instead of `event.key`\n // as `event.key` changes when non-latin keyboards are used\n KeyCode.A = 'KeyA';\n KeyCode.C = 'KeyC';\n KeyCode.D = 'KeyD';\n KeyCode.V = 'KeyV';\n KeyCode.X = 'KeyX';\n KeyCode.Y = 'KeyY';\n KeyCode.Z = 'KeyZ';\n return KeyCode;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar A_KEYCODE = 65;\nvar C_KEYCODE = 67;\nvar V_KEYCODE = 86;\nvar D_KEYCODE = 68;\nvar Z_KEYCODE = 90;\nvar Y_KEYCODE = 89;\nfunction isEventFromPrintableCharacter(event) {\n // no allowed printable chars have alt or ctrl key combinations\n if (event.altKey || event.ctrlKey || event.metaKey) {\n return false;\n }\n // if key is length 1, eg if it is 'a' for the a key, or '2' for the '2' key.\n // non-printable characters have names, eg 'Enter' or 'Backspace'.\n var printableCharacter = event.key.length === 1;\n return printableCharacter;\n}\n/**\n * Allows user to tell the grid to skip specific keyboard events\n * @param {GridOptionsService} gridOptionsService\n * @param {KeyboardEvent} keyboardEvent\n * @param {IRowNode} rowNode\n * @param {Column} column\n * @param {boolean} editing\n * @returns {boolean}\n */\nfunction isUserSuppressingKeyboardEvent(gridOptionsService, keyboardEvent, rowNode, column, editing) {\n var colDefFunc = column ? column.getColDef().suppressKeyboardEvent : undefined;\n // if no callbacks provided by user, then do nothing\n if (!colDefFunc) {\n return false;\n }\n var params = {\n event: keyboardEvent,\n editing: editing,\n column: column,\n api: gridOptionsService.api,\n node: rowNode,\n data: rowNode.data,\n colDef: column.getColDef(),\n context: gridOptionsService.context,\n columnApi: gridOptionsService.columnApi\n };\n // colDef get first preference on suppressing events\n if (colDefFunc) {\n var colDefFuncResult = colDefFunc(params);\n // if colDef func suppressed, then return now, no need to call gridOption func\n if (colDefFuncResult) {\n return true;\n }\n }\n // otherwise return false, don't suppress, as colDef didn't suppress and no func on gridOptions\n return false;\n}\nfunction isUserSuppressingHeaderKeyboardEvent(gridOptionsService, keyboardEvent, headerRowIndex, column) {\n var colDef = column.getDefinition();\n var colDefFunc = colDef && colDef.suppressHeaderKeyboardEvent;\n if (!exists(colDefFunc)) {\n return false;\n }\n var params = {\n api: gridOptionsService.api,\n columnApi: gridOptionsService.columnApi,\n context: gridOptionsService.context,\n colDef: colDef,\n column: column,\n headerRowIndex: headerRowIndex,\n event: keyboardEvent\n };\n return !!colDefFunc(params);\n}\nfunction normaliseQwertyAzerty(keyboardEvent) {\n var keyCode = keyboardEvent.keyCode;\n var code;\n switch (keyCode) {\n case A_KEYCODE:\n code = KeyCode.A;\n break;\n case C_KEYCODE:\n code = KeyCode.C;\n break;\n case V_KEYCODE:\n code = KeyCode.V;\n break;\n case D_KEYCODE:\n code = KeyCode.D;\n break;\n case Z_KEYCODE:\n code = KeyCode.Z;\n break;\n case Y_KEYCODE:\n code = KeyCode.Y;\n break;\n default:\n code = keyboardEvent.code;\n }\n return code;\n}\nfunction isDeleteKey(key, alwaysReturnFalseOnBackspace) {\n if (alwaysReturnFalseOnBackspace === void 0) { alwaysReturnFalseOnBackspace = false; }\n if (key === KeyCode.DELETE) {\n return true;\n }\n if (!alwaysReturnFalseOnBackspace && key === KeyCode.BACKSPACE) {\n return isMacOsUserAgent();\n }\n return false;\n}\n\nvar KeyboardUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isEventFromPrintableCharacter: isEventFromPrintableCharacter,\n isUserSuppressingKeyboardEvent: isUserSuppressingKeyboardEvent,\n isUserSuppressingHeaderKeyboardEvent: isUserSuppressingHeaderKeyboardEvent,\n normaliseQwertyAzerty: normaliseQwertyAzerty,\n isDeleteKey: isDeleteKey\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * `True` if the event is close to the original event by X pixels either vertically or horizontally.\n * we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n * @param {MouseEvent | TouchEvent} e1\n * @param {MouseEvent | TouchEvent} e2\n * @param {number} pixelCount\n * @returns {boolean}\n */\nfunction areEventsNear(e1, e2, pixelCount) {\n // by default, we wait 4 pixels before starting the drag\n if (pixelCount === 0) {\n return false;\n }\n var diffX = Math.abs(e1.clientX - e2.clientX);\n var diffY = Math.abs(e1.clientY - e2.clientY);\n return Math.max(diffX, diffY) <= pixelCount;\n}\n\nvar MouseUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n areEventsNear: areEventsNear\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * Gets called by: a) ClientSideNodeManager and b) GroupStage to do sorting.\n * when in ClientSideNodeManager we always have indexes (as this sorts the items the\n * user provided) but when in GroupStage, the nodes can contain filler nodes that\n * don't have order id's\n * @param {RowNode[]} rowNodes\n * @param {Object} rowNodeOrder\n *\n * @returns a boolean representing whether nodes were reordered\n */\nfunction sortRowNodesByOrder(rowNodes, rowNodeOrder) {\n if (!rowNodes) {\n return false;\n }\n var comparator = function (nodeA, nodeB) {\n var positionA = rowNodeOrder[nodeA.id];\n var positionB = rowNodeOrder[nodeB.id];\n var aHasIndex = positionA !== undefined;\n var bHasIndex = positionB !== undefined;\n var bothNodesAreUserNodes = aHasIndex && bHasIndex;\n var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;\n if (bothNodesAreUserNodes) {\n // when comparing two nodes the user has provided, they always\n // have indexes\n return positionA - positionB;\n }\n if (bothNodesAreFillerNodes) {\n // when comparing two filler nodes, we have no index to compare them\n // against, however we want this sorting to be deterministic, so that\n // the rows don't jump around as the user does delta updates. so we\n // want the same sort result. so we use the __objectId - which doesn't make sense\n // from a sorting point of view, but does give consistent behaviour between\n // calls. otherwise groups jump around as delta updates are done.\n // note: previously here we used nodeId, however this gave a strange order\n // as string ordering of numbers is wrong, so using id based on creation order\n // as least gives better looking order.\n return nodeA.__objectId - nodeB.__objectId;\n }\n if (aHasIndex) {\n return 1;\n }\n return -1;\n };\n // check if the list first needs sorting\n var rowNodeA;\n var rowNodeB;\n var atLeastOneOutOfOrder = false;\n for (var i = 0; i < rowNodes.length - 1; i++) {\n rowNodeA = rowNodes[i];\n rowNodeB = rowNodes[i + 1];\n if (comparator(rowNodeA, rowNodeB) > 0) {\n atLeastOneOutOfOrder = true;\n break;\n }\n }\n if (atLeastOneOutOfOrder) {\n rowNodes.sort(comparator);\n return true;\n }\n return false;\n}\nfunction traverseNodesWithKey(nodes, callback) {\n var keyParts = [];\n recursiveSearchNodes(nodes);\n function recursiveSearchNodes(currentNodes) {\n if (!currentNodes) {\n return;\n }\n currentNodes.forEach(function (node) {\n // also checking for children for tree data\n if (node.group || node.hasChildren()) {\n keyParts.push(node.key);\n var key = keyParts.join('|');\n callback(node, key);\n recursiveSearchNodes(node.childrenAfterGroup);\n keyParts.pop();\n }\n });\n }\n}\n\nvar RowNodeUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n sortRowNodesByOrder: sortRowNodesByOrder,\n traverseNodesWithKey: traverseNodesWithKey\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction convertToSet(list) {\n var set = new Set();\n list.forEach(function (x) { return set.add(x); });\n return set;\n}\n\nvar SetUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n convertToSet: convertToSet\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$k = (undefined && undefined.__assign) || function () {\n __assign$k = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$k.apply(this, arguments);\n};\nvar utils = __assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k({}, AriaUtils), ArrayUtils), BrowserUtils), DateUtils), DomUtils), EventUtils), FunctionUtils), FuzzyMatchUtils), GenericUtils), IconUtils), KeyboardUtils), MapUtils), MouseUtils), NumberUtils), ObjectUtils), RowNodeUtils), SetUtils), StringUtils);\nvar _ = utils;\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar NumberSequence = /** @class */ (function () {\n function NumberSequence(initValue, step) {\n if (initValue === void 0) { initValue = 0; }\n if (step === void 0) { step = 1; }\n this.nextValue = initValue;\n this.step = step;\n }\n NumberSequence.prototype.next = function () {\n var valToReturn = this.nextValue;\n this.nextValue += this.step;\n return valToReturn;\n };\n NumberSequence.prototype.peek = function () {\n return this.nextValue;\n };\n NumberSequence.prototype.skip = function (count) {\n this.nextValue += count;\n };\n return NumberSequence;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar AgPromiseStatus;\n(function (AgPromiseStatus) {\n AgPromiseStatus[AgPromiseStatus[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n AgPromiseStatus[AgPromiseStatus[\"RESOLVED\"] = 1] = \"RESOLVED\";\n})(AgPromiseStatus || (AgPromiseStatus = {}));\nvar AgPromise = /** @class */ (function () {\n function AgPromise(callback) {\n var _this = this;\n this.status = AgPromiseStatus.IN_PROGRESS;\n this.resolution = null;\n this.waiters = [];\n callback(function (value) { return _this.onDone(value); }, function (params) { return _this.onReject(params); });\n }\n AgPromise.all = function (promises) {\n return new AgPromise(function (resolve) {\n var remainingToResolve = promises.length;\n var combinedValues = new Array(remainingToResolve);\n promises.forEach(function (promise, index) {\n promise.then(function (value) {\n combinedValues[index] = value;\n remainingToResolve--;\n if (remainingToResolve === 0) {\n resolve(combinedValues);\n }\n });\n });\n });\n };\n AgPromise.resolve = function (value) {\n if (value === void 0) { value = null; }\n return new AgPromise(function (resolve) { return resolve(value); });\n };\n AgPromise.prototype.then = function (func) {\n var _this = this;\n return new AgPromise(function (resolve) {\n if (_this.status === AgPromiseStatus.RESOLVED) {\n resolve(func(_this.resolution));\n }\n else {\n _this.waiters.push(function (value) { return resolve(func(value)); });\n }\n });\n };\n AgPromise.prototype.resolveNow = function (ifNotResolvedValue, ifResolved) {\n return this.status === AgPromiseStatus.RESOLVED ? ifResolved(this.resolution) : ifNotResolvedValue;\n };\n AgPromise.prototype.onDone = function (value) {\n this.status = AgPromiseStatus.RESOLVED;\n this.resolution = value;\n this.waiters.forEach(function (waiter) { return waiter(value); });\n };\n AgPromise.prototype.onReject = function (params) {\n console.warn('TBI');\n };\n return AgPromise;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * A Util Class only used when debugging for printing time to console\n */\nvar Timer = /** @class */ (function () {\n function Timer() {\n this.timestamp = new Date().getTime();\n }\n Timer.prototype.print = function (msg) {\n var duration = (new Date().getTime()) - this.timestamp;\n console.info(msg + \" = \" + duration);\n this.timestamp = new Date().getTime();\n };\n return Timer;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2M = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$j = (undefined && undefined.__assign) || function () {\n __assign$j = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$j.apply(this, arguments);\n};\nvar __decorate$2n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TooltipStates;\n(function (TooltipStates) {\n TooltipStates[TooltipStates[\"NOTHING\"] = 0] = \"NOTHING\";\n TooltipStates[TooltipStates[\"WAITING_TO_SHOW\"] = 1] = \"WAITING_TO_SHOW\";\n TooltipStates[TooltipStates[\"SHOWING\"] = 2] = \"SHOWING\";\n})(TooltipStates || (TooltipStates = {}));\nvar CustomTooltipFeature = /** @class */ (function (_super) {\n __extends$2M(CustomTooltipFeature, _super);\n function CustomTooltipFeature(parentComp) {\n var _this = _super.call(this) || this;\n _this.DEFAULT_SHOW_TOOLTIP_DELAY = 2000;\n _this.DEFAULT_HIDE_TOOLTIP_DELAY = 10000;\n _this.SHOW_QUICK_TOOLTIP_DIFF = 1000;\n _this.FADE_OUT_TOOLTIP_TIMEOUT = 1000;\n _this.state = TooltipStates.NOTHING;\n // when showing the tooltip, we need to make sure it's the most recent instance we request, as due to\n // async we could request two tooltips before the first instance returns, in which case we should\n // disregard the second instance.\n _this.tooltipInstanceCount = 0;\n _this.tooltipMouseTrack = false;\n _this.parentComp = parentComp;\n return _this;\n }\n CustomTooltipFeature.prototype.postConstruct = function () {\n this.tooltipShowDelay = this.getTooltipDelay('show') || this.DEFAULT_SHOW_TOOLTIP_DELAY;\n this.tooltipHideDelay = this.getTooltipDelay('hide') || this.DEFAULT_HIDE_TOOLTIP_DELAY;\n this.tooltipMouseTrack = this.gridOptionsService.is('tooltipMouseTrack');\n var el = this.parentComp.getGui();\n this.addManagedListener(el, 'mouseenter', this.onMouseEnter.bind(this));\n this.addManagedListener(el, 'mouseleave', this.onMouseLeave.bind(this));\n this.addManagedListener(el, 'mousemove', this.onMouseMove.bind(this));\n this.addManagedListener(el, 'mousedown', this.onMouseDown.bind(this));\n this.addManagedListener(el, 'keydown', this.onKeyDown.bind(this));\n };\n CustomTooltipFeature.prototype.destroy = function () {\n // if this component gets destroyed while tooltip is showing, need to make sure\n // we don't end with no mouseLeave event resulting in zombie tooltip\n this.setToDoNothing();\n _super.prototype.destroy.call(this);\n };\n CustomTooltipFeature.prototype.onMouseEnter = function (e) {\n if (isIOSUserAgent()) {\n return;\n }\n // every mouseenter should be following by a mouseleave, however for some unkonwn, it's possible for\n // mouseenter to be called twice in a row, which can happen if editing the cell. this was reported\n // in https://ag-grid.atlassian.net/browse/AG-4422. to get around this, we check the state, and if\n // state is !=nothing, then we know mouseenter was already received.\n if (this.state != TooltipStates.NOTHING) {\n return;\n }\n // if another tooltip was hidden very recently, we only wait 200ms to show, not the normal waiting time\n var delay = this.isLastTooltipHiddenRecently() ? 200 : this.tooltipShowDelay;\n this.showTooltipTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay);\n this.lastMouseEvent = e;\n this.state = TooltipStates.WAITING_TO_SHOW;\n };\n CustomTooltipFeature.prototype.onMouseLeave = function () {\n this.setToDoNothing();\n };\n CustomTooltipFeature.prototype.onKeyDown = function () {\n this.setToDoNothing();\n };\n CustomTooltipFeature.prototype.setToDoNothing = function () {\n if (this.state === TooltipStates.SHOWING) {\n this.hideTooltip();\n }\n this.clearTimeouts();\n this.state = TooltipStates.NOTHING;\n };\n CustomTooltipFeature.prototype.onMouseMove = function (e) {\n // there is a delay from the time we mouseOver a component and the time the\n // tooltip is displayed, so we need to track mousemove to be able to correctly\n // position the tooltip when showTooltip is called.\n this.lastMouseEvent = e;\n if (this.tooltipMouseTrack &&\n this.state === TooltipStates.SHOWING &&\n this.tooltipComp) {\n this.positionTooltipUnderLastMouseEvent();\n }\n };\n CustomTooltipFeature.prototype.onMouseDown = function () {\n this.setToDoNothing();\n };\n CustomTooltipFeature.prototype.getTooltipDelay = function (type) {\n var tooltipShowDelay = this.gridOptionsService.getNum('tooltipShowDelay');\n var tooltipHideDelay = this.gridOptionsService.getNum('tooltipHideDelay');\n var delay = type === 'show' ? tooltipShowDelay : tooltipHideDelay;\n var capitalisedType = capitalise(type);\n if (exists(delay)) {\n if (delay < 0) {\n doOnce(function () { return console.warn(\"AG Grid: tooltip\" + capitalisedType + \"Delay should not be lower than 0\"); }, \"tooltip\" + capitalisedType + \"DelayWarn\");\n }\n return Math.max(200, delay);\n }\n return null;\n };\n CustomTooltipFeature.prototype.hideTooltip = function () {\n // check if comp exists - due to async, although we asked for\n // one, the instance may not be back yet\n if (this.tooltipComp) {\n this.destroyTooltipComp();\n CustomTooltipFeature.lastTooltipHideTime = new Date().getTime();\n }\n this.state = TooltipStates.NOTHING;\n };\n CustomTooltipFeature.prototype.destroyTooltipComp = function () {\n var _this = this;\n // add class to fade out the tooltip\n this.tooltipComp.getGui().classList.add('ag-tooltip-hiding');\n // make local copies of these variables, as we use them in the async function below,\n // and we clear then to 'undefined' later, so need to take a copy before they are undefined.\n var tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;\n var tooltipComp = this.tooltipComp;\n window.setTimeout(function () {\n tooltipPopupDestroyFunc();\n _this.getContext().destroyBean(tooltipComp);\n }, this.FADE_OUT_TOOLTIP_TIMEOUT);\n this.tooltipPopupDestroyFunc = undefined;\n this.tooltipComp = undefined;\n };\n CustomTooltipFeature.prototype.isLastTooltipHiddenRecently = function () {\n // return true if <1000ms since last time we hid a tooltip\n var now = new Date().getTime();\n var then = CustomTooltipFeature.lastTooltipHideTime;\n return (now - then) < this.SHOW_QUICK_TOOLTIP_DIFF;\n };\n CustomTooltipFeature.prototype.showTooltip = function () {\n var params = __assign$j({}, this.parentComp.getTooltipParams());\n if (!exists(params.value)) {\n this.setToDoNothing();\n return;\n }\n this.state = TooltipStates.SHOWING;\n this.tooltipInstanceCount++;\n // we pass in tooltipInstanceCount so the callback knows what the count was when\n // we requested the tooltip, so if another tooltip was requested in the mean time\n // we disregard it\n var callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);\n var userDetails = this.userComponentFactory.getTooltipCompDetails(params);\n userDetails.newAgStackInstance().then(callback);\n };\n CustomTooltipFeature.prototype.newTooltipComponentCallback = function (tooltipInstanceCopy, tooltipComp) {\n var compNoLongerNeeded = this.state !== TooltipStates.SHOWING || this.tooltipInstanceCount !== tooltipInstanceCopy;\n if (compNoLongerNeeded) {\n this.getContext().destroyBean(tooltipComp);\n return;\n }\n var eGui = tooltipComp.getGui();\n this.tooltipComp = tooltipComp;\n if (!eGui.classList.contains('ag-tooltip')) {\n eGui.classList.add('ag-tooltip-custom');\n }\n var translate = this.localeService.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n eChild: eGui,\n ariaLabel: translate('ariaLabelTooltip', 'Tooltip')\n });\n if (addPopupRes) {\n this.tooltipPopupDestroyFunc = addPopupRes.hideFunc;\n }\n // this.tooltipPopupDestroyFunc = this.popupService.addPopup(false, eGui, false);\n this.positionTooltipUnderLastMouseEvent();\n this.hideTooltipTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.tooltipHideDelay);\n };\n CustomTooltipFeature.prototype.positionTooltipUnderLastMouseEvent = function () {\n this.popupService.positionPopupUnderMouseEvent({\n type: 'tooltip',\n mouseEvent: this.lastMouseEvent,\n ePopup: this.tooltipComp.getGui(),\n nudgeY: 18,\n skipObserver: this.tooltipMouseTrack\n });\n };\n CustomTooltipFeature.prototype.clearTimeouts = function () {\n if (this.showTooltipTimeoutId) {\n window.clearTimeout(this.showTooltipTimeoutId);\n this.showTooltipTimeoutId = undefined;\n }\n if (this.hideTooltipTimeoutId) {\n window.clearTimeout(this.hideTooltipTimeoutId);\n this.hideTooltipTimeoutId = undefined;\n }\n };\n __decorate$2n([\n Autowired('popupService')\n ], CustomTooltipFeature.prototype, \"popupService\", void 0);\n __decorate$2n([\n Autowired('userComponentFactory')\n ], CustomTooltipFeature.prototype, \"userComponentFactory\", void 0);\n __decorate$2n([\n PostConstruct\n ], CustomTooltipFeature.prototype, \"postConstruct\", null);\n return CustomTooltipFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar CssClassManager = /** @class */ (function () {\n function CssClassManager(getGui) {\n // to minimise DOM hits, we only apply CSS classes if they have changed. as adding a CSS class that is already\n // there, or removing one that wasn't present, all takes CPU.\n this.cssClassStates = {};\n this.getGui = getGui;\n }\n CssClassManager.prototype.addCssClass = function (className) {\n var _this = this;\n var list = (className || '').split(' ');\n if (list.length > 1) {\n list.forEach(function (cls) { return _this.addCssClass(cls); });\n return;\n }\n var updateNeeded = this.cssClassStates[className] !== true;\n if (updateNeeded && className.length) {\n var eGui = this.getGui();\n if (eGui) {\n eGui.classList.add(className);\n }\n this.cssClassStates[className] = true;\n }\n };\n CssClassManager.prototype.removeCssClass = function (className) {\n var _this = this;\n var list = (className || '').split(' ');\n if (list.length > 1) {\n list.forEach(function (cls) { return _this.removeCssClass(cls); });\n return;\n }\n var updateNeeded = this.cssClassStates[className] !== false;\n if (updateNeeded && className.length) {\n var eGui = this.getGui();\n if (eGui) {\n eGui.classList.remove(className);\n }\n this.cssClassStates[className] = false;\n }\n };\n CssClassManager.prototype.containsCssClass = function (className) {\n var eGui = this.getGui();\n if (!eGui) {\n return false;\n }\n return eGui.classList.contains(className);\n };\n CssClassManager.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n var _this = this;\n if (!className) {\n return;\n }\n // we check for spaces before doing the split, as doing the split\n // created a performance problem (on windows only, see AG-6765)\n if (className.indexOf(' ') >= 0) {\n var list = (className || '').split(' ');\n if (list.length > 1) {\n list.forEach(function (cls) { return _this.addOrRemoveCssClass(cls, addOrRemove); });\n return;\n }\n }\n var updateNeeded = this.cssClassStates[className] !== addOrRemove;\n if (updateNeeded && className.length) {\n var eGui = this.getGui();\n if (eGui) {\n eGui.classList.toggle(className, addOrRemove);\n }\n this.cssClassStates[className] = addOrRemove;\n }\n };\n return CssClassManager;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2L = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar compIdSequence = new NumberSequence();\nvar Component = /** @class */ (function (_super) {\n __extends$2L(Component, _super);\n function Component(template) {\n var _this = _super.call(this) || this;\n // if false, then CSS class \"ag-hidden\" is applied, which sets \"display: none\"\n _this.displayed = true;\n // if false, then CSS class \"ag-invisible\" is applied, which sets \"visibility: hidden\"\n _this.visible = true;\n // unique id for this row component. this is used for getting a reference to the HTML dom.\n // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n // around as we create a new rowComp instance for the same row node).\n _this.compId = compIdSequence.next();\n _this.cssClassManager = new CssClassManager(function () { return _this.eGui; });\n if (template) {\n _this.setTemplate(template);\n }\n return _this;\n }\n Component.prototype.preConstructOnComponent = function () {\n this.usingBrowserTooltips = this.gridOptionsService.is('enableBrowserTooltips');\n };\n Component.prototype.getCompId = function () {\n return this.compId;\n };\n Component.prototype.getTooltipParams = function () {\n return {\n value: this.tooltipText,\n location: 'UNKNOWN'\n };\n };\n Component.prototype.setTooltip = function (newTooltipText) {\n var _this = this;\n var removeTooltip = function () {\n if (_this.usingBrowserTooltips) {\n _this.getGui().removeAttribute('title');\n }\n else {\n _this.tooltipFeature = _this.destroyBean(_this.tooltipFeature);\n }\n };\n var addTooltip = function () {\n if (_this.usingBrowserTooltips) {\n _this.getGui().setAttribute('title', _this.tooltipText);\n }\n else {\n _this.tooltipFeature = _this.createBean(new CustomTooltipFeature(_this));\n }\n };\n if (this.tooltipText != newTooltipText) {\n if (this.tooltipText) {\n removeTooltip();\n }\n if (newTooltipText != null) {\n this.tooltipText = newTooltipText;\n if (this.tooltipText) {\n addTooltip();\n }\n }\n }\n };\n // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n Component.prototype.createChildComponentsFromTags = function (parentNode, paramsMap) {\n var _this = this;\n // we MUST take a copy of the list first, as the 'swapComponentForNode' adds comments into the DOM\n // which messes up the traversal order of the children.\n var childNodeList = copyNodeList(parentNode.childNodes);\n childNodeList.forEach(function (childNode) {\n if (!(childNode instanceof HTMLElement)) {\n return;\n }\n var childComp = _this.createComponentFromElement(childNode, function (childComp) {\n // copy over all attributes, including css classes, so any attributes user put on the tag\n // wll be carried across\n var childGui = childComp.getGui();\n if (childGui) {\n _this.copyAttributesFromNode(childNode, childComp.getGui());\n }\n }, paramsMap);\n if (childComp) {\n if (childComp.addItems && childNode.children.length) {\n _this.createChildComponentsFromTags(childNode, paramsMap);\n // converting from HTMLCollection to Array\n var items = Array.prototype.slice.call(childNode.children);\n childComp.addItems(items);\n }\n // replace the tag (eg ag-checkbox) with the proper HTMLElement (eg 'div') in the dom\n _this.swapComponentForNode(childComp, parentNode, childNode);\n }\n else if (childNode.childNodes) {\n _this.createChildComponentsFromTags(childNode, paramsMap);\n }\n });\n };\n Component.prototype.createComponentFromElement = function (element, afterPreCreateCallback, paramsMap) {\n var key = element.nodeName;\n var componentParams = paramsMap ? paramsMap[element.getAttribute('ref')] : undefined;\n var ComponentClass = this.agStackComponentsRegistry.getComponentClass(key);\n if (ComponentClass) {\n Component.elementGettingCreated = element;\n var newComponent = new ComponentClass(componentParams);\n newComponent.setParentComponent(this);\n this.createBean(newComponent, null, afterPreCreateCallback);\n return newComponent;\n }\n return null;\n };\n Component.prototype.copyAttributesFromNode = function (source, dest) {\n iterateNamedNodeMap(source.attributes, function (name, value) { return dest.setAttribute(name, value); });\n };\n Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {\n var eComponent = newComponent.getGui();\n parentNode.replaceChild(eComponent, childNode);\n parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n this.addDestroyFunc(this.destroyBean.bind(this, newComponent));\n this.swapInComponentForQuerySelectors(newComponent, childNode);\n };\n Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {\n var thisNoType = this;\n this.iterateOverQuerySelectors(function (querySelector) {\n if (thisNoType[querySelector.attributeName] === childNode) {\n thisNoType[querySelector.attributeName] = newComponent;\n }\n });\n };\n Component.prototype.iterateOverQuerySelectors = function (action) {\n var thisPrototype = Object.getPrototypeOf(this);\n while (thisPrototype != null) {\n var metaData = thisPrototype.__agComponentMetaData;\n var currentProtoName = getFunctionName(thisPrototype.constructor);\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n metaData[currentProtoName].querySelectors.forEach(function (querySelector) { return action(querySelector); });\n }\n thisPrototype = Object.getPrototypeOf(thisPrototype);\n }\n };\n Component.prototype.setTemplate = function (template, paramsMap) {\n var eGui = loadTemplate(template);\n this.setTemplateFromElement(eGui, paramsMap);\n };\n Component.prototype.setTemplateFromElement = function (element, paramsMap) {\n this.eGui = element;\n this.eGui.__agComponent = this;\n this.wireQuerySelectors();\n // context will not be available when user sets template in constructor\n if (!!this.getContext()) {\n this.createChildComponentsFromTags(this.getGui(), paramsMap);\n }\n };\n Component.prototype.createChildComponentsPreConstruct = function () {\n // ui exists if user sets template in constructor. when this happens, we have to wait for the context\n // to be autoWired first before we can create child components.\n if (!!this.getGui()) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.wireQuerySelectors = function () {\n var _this = this;\n if (!this.eGui) {\n return;\n }\n var thisNoType = this;\n this.iterateOverQuerySelectors(function (querySelector) {\n var setResult = function (result) { return thisNoType[querySelector.attributeName] = result; };\n // if it's a ref selector, and match is on top level component, we return\n // the element. otherwise no way of components putting ref=xxx on the top\n // level element as querySelector only looks at children.\n var topLevelRefMatch = querySelector.refSelector\n && _this.eGui.getAttribute('ref') === querySelector.refSelector;\n if (topLevelRefMatch) {\n setResult(_this.eGui);\n }\n else {\n // otherwise use querySelector, which looks at children\n var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);\n if (resultOfQuery) {\n setResult(resultOfQuery.__agComponent || resultOfQuery);\n }\n }\n });\n };\n Component.prototype.getGui = function () {\n return this.eGui;\n };\n Component.prototype.getFocusableElement = function () {\n return this.eGui;\n };\n Component.prototype.setParentComponent = function (component) {\n this.parentComponent = component;\n };\n Component.prototype.getParentComponent = function () {\n return this.parentComponent;\n };\n // this method is for older code, that wants to provide the gui element,\n // it is not intended for this to be in ag-Stack\n Component.prototype.setGui = function (eGui) {\n this.eGui = eGui;\n };\n Component.prototype.queryForHtmlElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.queryForHtmlInputElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.appendChild = function (newChild, container) {\n if (newChild == null) {\n return;\n }\n if (!container) {\n container = this.eGui;\n }\n if (isNodeOrElement(newChild)) {\n container.appendChild(newChild);\n }\n else {\n var childComponent = newChild;\n container.appendChild(childComponent.getGui());\n }\n };\n Component.prototype.isDisplayed = function () {\n return this.displayed;\n };\n Component.prototype.setVisible = function (visible, options) {\n if (options === void 0) { options = {}; }\n if (visible !== this.visible) {\n this.visible = visible;\n var skipAriaHidden = options.skipAriaHidden;\n setVisible(this.eGui, visible, { skipAriaHidden: skipAriaHidden });\n }\n };\n Component.prototype.setDisplayed = function (displayed, options) {\n if (options === void 0) { options = {}; }\n if (displayed !== this.displayed) {\n this.displayed = displayed;\n var skipAriaHidden = options.skipAriaHidden;\n setDisplayed(this.eGui, displayed, { skipAriaHidden: skipAriaHidden });\n var event_1 = {\n type: Component.EVENT_DISPLAYED_CHANGED,\n visible: this.displayed\n };\n this.dispatchEvent(event_1);\n }\n };\n Component.prototype.destroy = function () {\n if (this.tooltipFeature) {\n this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n }\n if (this.parentComponent) {\n this.parentComponent = undefined;\n }\n var eGui = this.eGui;\n if (eGui && eGui.__agComponent) {\n eGui.__agComponent = undefined;\n }\n _super.prototype.destroy.call(this);\n };\n Component.prototype.addGuiEventListener = function (event, listener, options) {\n var _this = this;\n this.eGui.addEventListener(event, listener, options);\n this.addDestroyFunc(function () { return _this.eGui.removeEventListener(event, listener); });\n };\n Component.prototype.addCssClass = function (className) {\n this.cssClassManager.addCssClass(className);\n };\n Component.prototype.removeCssClass = function (className) {\n this.cssClassManager.removeCssClass(className);\n };\n Component.prototype.containsCssClass = function (className) {\n return this.cssClassManager.containsCssClass(className);\n };\n Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n this.cssClassManager.addOrRemoveCssClass(className, addOrRemove);\n };\n Component.prototype.getAttribute = function (key) {\n var eGui = this.eGui;\n return eGui ? eGui.getAttribute(key) : null;\n };\n Component.prototype.getRefElement = function (refName) {\n return this.queryForHtmlElement(\"[ref=\\\"\" + refName + \"\\\"]\");\n };\n Component.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n __decorate$2m([\n Autowired('agStackComponentsRegistry')\n ], Component.prototype, \"agStackComponentsRegistry\", void 0);\n __decorate$2m([\n PreConstruct\n ], Component.prototype, \"preConstructOnComponent\", null);\n __decorate$2m([\n PreConstruct\n ], Component.prototype, \"createChildComponentsPreConstruct\", null);\n return Component;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction QuerySelector(selector) {\n return querySelectorFunc.bind(this, selector, undefined);\n}\nfunction RefSelector(ref) {\n return querySelectorFunc.bind(this, \"[ref=\" + ref + \"]\", ref);\n}\nfunction querySelectorFunc(selector, refSelector, classPrototype, methodOrAttributeName, index) {\n if (selector === null) {\n console.error('AG Grid: QuerySelector selector should not be null');\n return;\n }\n if (typeof index === 'number') {\n console.error('AG Grid: QuerySelector should be on an attribute');\n return;\n }\n addToObjectProps(classPrototype, 'querySelectors', {\n attributeName: methodOrAttributeName,\n querySelector: selector,\n refSelector: refSelector\n });\n}\n// // think we should take this out, put property bindings on the\n// export function Method(eventName?: string): Function {\n// return methodFunc.bind(this, eventName);\n// }\n//\n// function methodFunc(alias: string, target: Object, methodName: string) {\n// if (alias === null) {\n// console.error(\"AG Grid: EventListener eventName should not be null\");\n// return;\n// }\n//\n// addToObjectProps(target, 'methods', {\n// methodName: methodName,\n// alias: alias\n// });\n// }\nfunction addToObjectProps(target, key, value) {\n // it's an attribute on the class\n var props = getOrCreateProps(target, getFunctionName(target.constructor));\n if (!props[key]) {\n props[key] = [];\n }\n props[key].push(value);\n}\nfunction getOrCreateProps(target, instanceName) {\n if (!target.__agComponentMetaData) {\n target.__agComponentMetaData = {};\n }\n if (!target.__agComponentMetaData[instanceName]) {\n target.__agComponentMetaData[instanceName] = {};\n }\n return target.__agComponentMetaData[instanceName];\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2K = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// optional floating filter for user provided filters - instead of providing a floating filter,\n// they can provide a getModelAsString() method on the filter instead. this class just displays\n// the string returned from getModelAsString()\nvar ReadOnlyFloatingFilter = /** @class */ (function (_super) {\n __extends$2K(ReadOnlyFloatingFilter, _super);\n function ReadOnlyFloatingFilter() {\n return _super.call(this, /* html */ \"\\n <div class=\\\"ag-floating-filter-input\\\" role=\\\"presentation\\\">\\n <ag-input-text-field ref=\\\"eFloatingFilterText\\\"></ag-input-text-field>\\n </div>\") || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n ReadOnlyFloatingFilter.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n ReadOnlyFloatingFilter.prototype.init = function (params) {\n this.params = params;\n var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n var translate = this.localeService.getLocaleTextFunc();\n this.eFloatingFilterText\n .setDisabled(true)\n .setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input'));\n };\n ReadOnlyFloatingFilter.prototype.onParentModelChanged = function (parentModel) {\n var _this = this;\n if (!parentModel) {\n this.eFloatingFilterText.setValue('');\n return;\n }\n this.params.parentFilterInstance(function (filterInstance) {\n // it would be nice to check if getModelAsString was present before creating this component,\n // however that is not possible, as React Hooks and VueJS don't attached the methods to the Filter until\n // AFTER the filter is created, not allowing inspection before this (we create floating filters as columns\n // are drawn, but the parent filters are only created when needed).\n if (filterInstance.getModelAsString) {\n var modelAsString = filterInstance.getModelAsString(parentModel);\n _this.eFloatingFilterText.setValue(modelAsString);\n }\n });\n };\n __decorate$2l([\n RefSelector('eFloatingFilterText')\n ], ReadOnlyFloatingFilter.prototype, \"eFloatingFilterText\", void 0);\n __decorate$2l([\n Autowired('columnModel')\n ], ReadOnlyFloatingFilter.prototype, \"columnModel\", void 0);\n return ReadOnlyFloatingFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/** Provides sync access to async component. Date component can be lazy created - this class encapsulates\n * this by keeping value locally until DateComp has loaded, then passing DateComp the value. */\nvar DateCompWrapper = /** @class */ (function () {\n function DateCompWrapper(context, userComponentFactory, dateComponentParams, eParent) {\n var _this = this;\n this.alive = true;\n this.context = context;\n this.eParent = eParent;\n var compDetails = userComponentFactory.getDateCompDetails(dateComponentParams);\n var promise = compDetails.newAgStackInstance();\n promise.then(function (dateComp) {\n // because async, check the filter still exists after component comes back\n if (!_this.alive) {\n context.destroyBean(dateComp);\n return;\n }\n _this.dateComp = dateComp;\n if (!dateComp) {\n return;\n }\n eParent.appendChild(dateComp.getGui());\n if (dateComp.afterGuiAttached) {\n dateComp.afterGuiAttached();\n }\n if (_this.tempValue) {\n dateComp.setDate(_this.tempValue);\n }\n if (_this.disabled != null) {\n _this.setDateCompDisabled(_this.disabled);\n }\n });\n }\n DateCompWrapper.prototype.destroy = function () {\n this.alive = false;\n this.dateComp = this.context.destroyBean(this.dateComp);\n };\n DateCompWrapper.prototype.getDate = function () {\n return this.dateComp ? this.dateComp.getDate() : this.tempValue;\n };\n DateCompWrapper.prototype.setDate = function (value) {\n if (this.dateComp) {\n this.dateComp.setDate(value);\n }\n else {\n this.tempValue = value;\n }\n };\n DateCompWrapper.prototype.setDisabled = function (disabled) {\n if (this.dateComp) {\n this.setDateCompDisabled(disabled);\n }\n else {\n this.disabled = disabled;\n }\n };\n DateCompWrapper.prototype.setDisplayed = function (displayed) {\n setDisplayed(this.eParent, displayed);\n };\n DateCompWrapper.prototype.setInputPlaceholder = function (placeholder) {\n if (this.dateComp && this.dateComp.setInputPlaceholder) {\n this.dateComp.setInputPlaceholder(placeholder);\n }\n };\n DateCompWrapper.prototype.setInputAriaLabel = function (label) {\n if (this.dateComp && this.dateComp.setInputAriaLabel) {\n this.dateComp.setInputAriaLabel(label);\n }\n };\n DateCompWrapper.prototype.afterGuiAttached = function (params) {\n if (this.dateComp && typeof this.dateComp.afterGuiAttached === 'function') {\n this.dateComp.afterGuiAttached(params);\n }\n };\n DateCompWrapper.prototype.setDateCompDisabled = function (disabled) {\n if (this.dateComp == null) {\n return;\n }\n if (this.dateComp.setDisabled == null) {\n return;\n }\n this.dateComp.setDisabled(disabled);\n };\n return DateCompWrapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$i = (undefined && undefined.__assign) || function () {\n __assign$i = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$i.apply(this, arguments);\n};\n/* Common logic for options, used by both filters and floating filters. */\nvar OptionsFactory = /** @class */ (function () {\n function OptionsFactory() {\n this.customFilterOptions = {};\n }\n OptionsFactory.prototype.init = function (params, defaultOptions) {\n this.filterOptions = params.filterOptions || defaultOptions;\n this.mapCustomOptions();\n this.selectDefaultItem(params);\n this.checkForDeprecatedParams();\n };\n OptionsFactory.prototype.checkForDeprecatedParams = function () {\n if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.test != null; })) {\n console.warn(\"AG Grid: [IFilterOptionDef] since v26.2.0, test() has been replaced with predicate().\");\n }\n if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.hideFilterInput != null; })) {\n console.warn(\"AG Grid: [IFilterOptionDef] since v26.2.0, useOfHideFilterInput has been replaced with numberOfInputs.\");\n }\n };\n OptionsFactory.prototype.getFilterOptions = function () {\n return this.filterOptions;\n };\n OptionsFactory.prototype.mapCustomOptions = function () {\n var _this = this;\n if (!this.filterOptions) {\n return;\n }\n this.filterOptions.forEach(function (filterOption) {\n if (typeof filterOption === 'string') {\n return;\n }\n var requiredProperties = [['displayKey'], ['displayName'], ['predicate', 'test']];\n var propertyCheck = function (keys) {\n if (!keys.some(function (key) { return filterOption[key] != null; })) {\n console.warn(\"AG Grid: ignoring FilterOptionDef as it doesn't contain one of '\" + keys + \"'\");\n return false;\n }\n return true;\n };\n if (!requiredProperties.every(propertyCheck)) {\n _this.filterOptions = _this.filterOptions.filter(function (v) { return v === filterOption; }) || [];\n return;\n }\n var test = filterOption.test;\n var mutatedFilterOptions = __assign$i({}, filterOption);\n if (test != null && filterOption.predicate == null) {\n mutatedFilterOptions.predicate = function (v, cv) { return test(v[0], cv); };\n delete mutatedFilterOptions.test;\n }\n if (mutatedFilterOptions.hideFilterInput && mutatedFilterOptions.numberOfInputs == null) {\n mutatedFilterOptions.numberOfInputs = 0;\n delete mutatedFilterOptions.hideFilterInput;\n }\n _this.customFilterOptions[filterOption.displayKey] = mutatedFilterOptions;\n });\n };\n OptionsFactory.prototype.selectDefaultItem = function (params) {\n if (params.defaultOption) {\n this.defaultOption = params.defaultOption;\n }\n else if (this.filterOptions.length >= 1) {\n var firstFilterOption = this.filterOptions[0];\n if (typeof firstFilterOption === 'string') {\n this.defaultOption = firstFilterOption;\n }\n else if (firstFilterOption.displayKey) {\n this.defaultOption = firstFilterOption.displayKey;\n }\n else {\n console.warn(\"AG Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'\");\n }\n }\n else {\n console.warn('AG Grid: no filter options for filter');\n }\n };\n OptionsFactory.prototype.getDefaultOption = function () {\n return this.defaultOption;\n };\n OptionsFactory.prototype.getCustomOption = function (name) {\n return this.customFilterOptions[name];\n };\n return OptionsFactory;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DEFAULT_FILTER_LOCALE_TEXT = {\n applyFilter: 'Apply',\n clearFilter: 'Clear',\n resetFilter: 'Reset',\n cancelFilter: 'Cancel',\n textFilter: 'Text Filter',\n numberFilter: 'Number Filter',\n dateFilter: 'Date Filter',\n setFilter: 'Set Filter',\n filterOoo: 'Filter...',\n empty: 'Choose One',\n equals: 'Equals',\n notEqual: 'Not equal',\n lessThan: 'Less than',\n greaterThan: 'Greater than',\n inRange: 'In range',\n inRangeStart: 'From',\n inRangeEnd: 'To',\n lessThanOrEqual: 'Less than or equals',\n greaterThanOrEqual: 'Greater than or equals',\n contains: 'Contains',\n notContains: 'Not contains',\n startsWith: 'Starts with',\n endsWith: 'Ends with',\n blank: 'Blank',\n notBlank: 'Not blank',\n andCondition: 'AND',\n orCondition: 'OR',\n dateFormatOoo: 'yyyy-mm-dd',\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2J = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$h = (undefined && undefined.__assign) || function () {\n __assign$h = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$h.apply(this, arguments);\n};\nvar __decorate$2k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ManagedFocusFeature = /** @class */ (function (_super) {\n __extends$2J(ManagedFocusFeature, _super);\n function ManagedFocusFeature(eFocusableElement, callbacks) {\n if (callbacks === void 0) { callbacks = {}; }\n var _this = _super.call(this) || this;\n _this.eFocusableElement = eFocusableElement;\n _this.callbacks = callbacks;\n _this.callbacks = __assign$h({ shouldStopEventPropagation: function () { return false; }, onTabKeyDown: function (e) {\n if (e.defaultPrevented) {\n return;\n }\n var nextRoot = _this.focusService.findNextFocusableElement(_this.eFocusableElement, false, e.shiftKey);\n if (!nextRoot) {\n return;\n }\n nextRoot.focus();\n e.preventDefault();\n } }, callbacks);\n return _this;\n }\n ManagedFocusFeature.prototype.postConstruct = function () {\n this.eFocusableElement.classList.add(ManagedFocusFeature.FOCUS_MANAGED_CLASS);\n this.addKeyDownListeners(this.eFocusableElement);\n if (this.callbacks.onFocusIn) {\n this.addManagedListener(this.eFocusableElement, 'focusin', this.callbacks.onFocusIn);\n }\n if (this.callbacks.onFocusOut) {\n this.addManagedListener(this.eFocusableElement, 'focusout', this.callbacks.onFocusOut);\n }\n };\n ManagedFocusFeature.prototype.addKeyDownListeners = function (eGui) {\n var _this = this;\n this.addManagedListener(eGui, 'keydown', function (e) {\n if (e.defaultPrevented || isStopPropagationForAgGrid(e)) {\n return;\n }\n if (_this.callbacks.shouldStopEventPropagation(e)) {\n stopPropagationForAgGrid(e);\n return;\n }\n if (e.key === KeyCode.TAB) {\n _this.callbacks.onTabKeyDown(e);\n }\n else if (_this.callbacks.handleKeyDown) {\n _this.callbacks.handleKeyDown(e);\n }\n });\n };\n ManagedFocusFeature.FOCUS_MANAGED_CLASS = 'ag-focus-managed';\n __decorate$2k([\n Autowired('focusService')\n ], ManagedFocusFeature.prototype, \"focusService\", void 0);\n __decorate$2k([\n PostConstruct\n ], ManagedFocusFeature.prototype, \"postConstruct\", null);\n return ManagedFocusFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2I = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RESIZE_CONTAINER_STYLE = 'ag-resizer-wrapper';\nvar RESIZE_TEMPLATE = /* html */ \"<div class=\\\"\" + RESIZE_CONTAINER_STYLE + \"\\\">\\n <div ref=\\\"eTopLeftResizer\\\" class=\\\"ag-resizer ag-resizer-topLeft\\\"></div>\\n <div ref=\\\"eTopResizer\\\" class=\\\"ag-resizer ag-resizer-top\\\"></div>\\n <div ref=\\\"eTopRightResizer\\\" class=\\\"ag-resizer ag-resizer-topRight\\\"></div>\\n <div ref=\\\"eRightResizer\\\" class=\\\"ag-resizer ag-resizer-right\\\"></div>\\n <div ref=\\\"eBottomRightResizer\\\" class=\\\"ag-resizer ag-resizer-bottomRight\\\"></div>\\n <div ref=\\\"eBottomResizer\\\" class=\\\"ag-resizer ag-resizer-bottom\\\"></div>\\n <div ref=\\\"eBottomLeftResizer\\\" class=\\\"ag-resizer ag-resizer-bottomLeft\\\"></div>\\n <div ref=\\\"eLeftResizer\\\" class=\\\"ag-resizer ag-resizer-left\\\"></div>\\n </div>\";\nvar PositionableFeature = /** @class */ (function (_super) {\n __extends$2I(PositionableFeature, _super);\n function PositionableFeature(element, config) {\n var _this = _super.call(this) || this;\n _this.element = element;\n _this.dragStartPosition = {\n x: 0,\n y: 0\n };\n _this.position = {\n x: 0,\n y: 0\n };\n _this.lastSize = {\n width: -1,\n height: -1\n };\n _this.positioned = false;\n _this.resizersAdded = false;\n _this.resizeListeners = [];\n _this.boundaryEl = null;\n _this.isResizing = false;\n _this.isMoving = false;\n _this.resizable = {};\n _this.movable = false;\n _this.currentResizer = null;\n _this.config = Object.assign({}, { popup: false }, config);\n return _this;\n }\n PositionableFeature.prototype.center = function () {\n var _a = this.offsetParent, clientHeight = _a.clientHeight, clientWidth = _a.clientWidth;\n var x = (clientWidth / 2) - (this.getWidth() / 2);\n var y = (clientHeight / 2) - (this.getHeight() / 2);\n this.offsetElement(x, y);\n };\n PositionableFeature.prototype.initialisePosition = function () {\n if (this.positioned) {\n return;\n }\n var _a = this.config, centered = _a.centered, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent, minWidth = _a.minWidth, width = _a.width, minHeight = _a.minHeight, height = _a.height, x = _a.x, y = _a.y;\n if (!this.offsetParent) {\n this.setOffsetParent();\n }\n var computedMinHeight = 0;\n var computedMinWidth = 0;\n // here we don't use the main offset parent but the element's offsetParent\n // in order to calculated the minWidth and minHeight correctly\n var isVisible = !!this.element.offsetParent;\n if (isVisible) {\n var boundaryEl = this.findBoundaryElement();\n var offsetParentComputedStyles = window.getComputedStyle(boundaryEl);\n if (offsetParentComputedStyles.minWidth != null) {\n var paddingWidth = boundaryEl.offsetWidth - this.element.offsetWidth;\n computedMinWidth = parseInt(offsetParentComputedStyles.minWidth, 10) - paddingWidth;\n }\n if (offsetParentComputedStyles.minHeight != null) {\n var paddingHeight = boundaryEl.offsetHeight - this.element.offsetHeight;\n computedMinHeight = parseInt(offsetParentComputedStyles.minHeight, 10) - paddingHeight;\n }\n }\n this.minHeight = minHeight || computedMinHeight;\n this.minWidth = minWidth || computedMinWidth;\n if (width) {\n this.setWidth(width);\n }\n if (height) {\n this.setHeight(height);\n }\n if (!width || !height) {\n this.refreshSize();\n }\n if (centered) {\n this.center();\n }\n else if (x || y) {\n this.offsetElement(x, y);\n }\n else if (isVisible && forcePopupParentAsOffsetParent && this.boundaryEl) {\n var top_1 = parseFloat(this.boundaryEl.style.top);\n var left = parseFloat(this.boundaryEl.style.left);\n this.offsetElement(isNaN(left) ? 0 : left, isNaN(top_1) ? 0 : top_1);\n }\n this.positioned = !!this.offsetParent;\n };\n PositionableFeature.prototype.isPositioned = function () {\n return this.positioned;\n };\n PositionableFeature.prototype.getPosition = function () {\n return this.position;\n };\n PositionableFeature.prototype.setMovable = function (movable, moveElement) {\n if (!this.config.popup || movable === this.movable) {\n return;\n }\n this.movable = movable;\n var params = this.moveElementDragListener || {\n eElement: moveElement,\n onDragStart: this.onMoveStart.bind(this),\n onDragging: this.onMove.bind(this),\n onDragStop: this.onMoveEnd.bind(this)\n };\n if (movable) {\n this.dragService.addDragSource(params);\n this.moveElementDragListener = params;\n }\n else {\n this.dragService.removeDragSource(params);\n this.moveElementDragListener = undefined;\n }\n };\n PositionableFeature.prototype.setResizable = function (resizable) {\n var _this = this;\n this.clearResizeListeners();\n if (resizable) {\n this.addResizers();\n }\n else {\n this.removeResizers();\n }\n if (typeof resizable === 'boolean') {\n if (resizable === false) {\n return;\n }\n resizable = {\n topLeft: resizable,\n top: resizable,\n topRight: resizable,\n right: resizable,\n bottomRight: resizable,\n bottom: resizable,\n bottomLeft: resizable,\n left: resizable\n };\n }\n Object.keys(resizable).forEach(function (side) {\n var resizableStructure = resizable;\n var isSideResizable = !!resizableStructure[side];\n var resizerEl = _this.getResizerElement(side);\n var params = {\n dragStartPixels: 0,\n eElement: resizerEl,\n onDragStart: function (e) { return _this.onResizeStart(e, side); },\n onDragging: _this.onResize.bind(_this),\n onDragStop: function (e) { return _this.onResizeEnd(e, side); },\n };\n if (isSideResizable || (!_this.isAlive() && !isSideResizable)) {\n if (isSideResizable) {\n _this.dragService.addDragSource(params);\n _this.resizeListeners.push(params);\n resizerEl.style.pointerEvents = 'all';\n }\n else {\n resizerEl.style.pointerEvents = 'none';\n }\n _this.resizable[side] = isSideResizable;\n }\n });\n };\n PositionableFeature.prototype.removeSizeFromEl = function () {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\n this.element.style.removeProperty('flex');\n };\n PositionableFeature.prototype.restoreLastSize = function () {\n this.element.style.flex = '0 0 auto';\n var _a = this.lastSize, height = _a.height, width = _a.width;\n if (width !== -1) {\n this.element.style.width = width + \"px\";\n }\n if (height !== -1) {\n this.element.style.height = height + \"px\";\n }\n };\n PositionableFeature.prototype.getHeight = function () {\n return this.element.offsetHeight;\n };\n PositionableFeature.prototype.setHeight = function (height) {\n var popup = this.config.popup;\n var eGui = this.element;\n var isPercent = false;\n if (typeof height === 'string' && height.indexOf('%') !== -1) {\n setFixedHeight(eGui, height);\n height = getAbsoluteHeight(eGui);\n isPercent = true;\n }\n else if (this.positioned) {\n height = Math.max(this.minHeight, height);\n var availableHeight = this.getAvailableHeight();\n if (availableHeight && height > availableHeight) {\n height = availableHeight;\n }\n }\n if (this.getHeight() === height) {\n return;\n }\n if (!isPercent) {\n if (popup) {\n setFixedHeight(eGui, height);\n }\n else {\n eGui.style.height = height + \"px\";\n eGui.style.flex = '0 0 auto';\n this.lastSize.height = typeof height === 'number' ? height : parseFloat(height);\n }\n }\n else {\n eGui.style.maxHeight = 'unset';\n eGui.style.minHeight = 'unset';\n }\n };\n PositionableFeature.prototype.getAvailableHeight = function () {\n var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;\n if (!this.positioned) {\n this.initialisePosition();\n }\n var clientHeight = this.offsetParent.clientHeight;\n if (!clientHeight) {\n return null;\n }\n var elRect = this.element.getBoundingClientRect();\n var offsetParentRect = this.offsetParent.getBoundingClientRect();\n var yPosition = popup ? this.position.y : elRect.top;\n var parentTop = popup ? 0 : offsetParentRect.top;\n // When `forcePopupParentAsOffsetParent`, there may be elements that appear after the resizable element, but aren't included in the height.\n // Take these into account here\n var additionalHeight = 0;\n if (forcePopupParentAsOffsetParent) {\n var parentEl = this.element.parentElement;\n if (parentEl) {\n var bottom = parentEl.getBoundingClientRect().bottom;\n additionalHeight = bottom - elRect.bottom;\n }\n }\n var availableHeight = clientHeight + parentTop - yPosition - additionalHeight;\n return availableHeight;\n };\n PositionableFeature.prototype.getWidth = function () {\n return this.element.offsetWidth;\n };\n PositionableFeature.prototype.setWidth = function (width) {\n var eGui = this.element;\n var popup = this.config.popup;\n var isPercent = false;\n if (typeof width === 'string' && width.indexOf('%') !== -1) {\n setFixedWidth(eGui, width);\n width = getAbsoluteWidth(eGui);\n isPercent = true;\n }\n else if (this.positioned) {\n width = Math.max(this.minWidth, width);\n var clientWidth = this.offsetParent.clientWidth;\n var xPosition = popup ? this.position.x : this.element.getBoundingClientRect().left;\n if (clientWidth && (width + xPosition > clientWidth)) {\n width = clientWidth - xPosition;\n }\n }\n if (this.getWidth() === width) {\n return;\n }\n if (!isPercent) {\n if (this.config.popup) {\n setFixedWidth(eGui, width);\n }\n else {\n eGui.style.width = width + \"px\";\n eGui.style.flex = ' unset';\n this.lastSize.width = typeof width === 'number' ? width : parseFloat(width);\n }\n }\n else {\n eGui.style.maxWidth = 'unset';\n eGui.style.minWidth = 'unset';\n }\n };\n PositionableFeature.prototype.offsetElement = function (x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n var ePopup = this.config.forcePopupParentAsOffsetParent ? this.boundaryEl : this.element;\n this.popupService.positionPopup({\n ePopup: ePopup,\n keepWithinBounds: true,\n skipObserver: this.movable || this.isResizable(),\n updatePosition: function () { return ({ x: x, y: y }); }\n });\n this.setPosition(parseFloat(ePopup.style.left), parseFloat(ePopup.style.top));\n };\n PositionableFeature.prototype.constrainSizeToAvailableHeight = function (constrain) {\n var _this = this;\n if (!this.config.forcePopupParentAsOffsetParent) {\n return;\n }\n var applyMaxHeightToElement = function () {\n var availableHeight = _this.getAvailableHeight();\n _this.element.style.setProperty('max-height', availableHeight + \"px\");\n };\n if (constrain) {\n this.resizeObserverSubscriber = this.resizeObserverService.observeResize(this.popupService.getPopupParent(), applyMaxHeightToElement);\n }\n else {\n this.element.style.removeProperty('max-height');\n if (this.resizeObserverSubscriber) {\n this.resizeObserverSubscriber();\n this.resizeObserverSubscriber = undefined;\n }\n }\n };\n PositionableFeature.prototype.setPosition = function (x, y) {\n this.position.x = x;\n this.position.y = y;\n };\n PositionableFeature.prototype.updateDragStartPosition = function (x, y) {\n this.dragStartPosition = { x: x, y: y };\n };\n PositionableFeature.prototype.calculateMouseMovement = function (params) {\n var e = params.e, isLeft = params.isLeft, isTop = params.isTop, anywhereWithin = params.anywhereWithin, topBuffer = params.topBuffer;\n var xDiff = e.clientX - this.dragStartPosition.x;\n var yDiff = e.clientY - this.dragStartPosition.y;\n var movementX = this.shouldSkipX(e, !!isLeft, !!anywhereWithin, xDiff) ? 0 : xDiff;\n var movementY = this.shouldSkipY(e, !!isTop, topBuffer, yDiff) ? 0 : yDiff;\n return { movementX: movementX, movementY: movementY };\n };\n PositionableFeature.prototype.shouldSkipX = function (e, isLeft, anywhereWithin, diff) {\n var elRect = this.element.getBoundingClientRect();\n var parentRect = this.offsetParent.getBoundingClientRect();\n var boundaryElRect = this.boundaryEl.getBoundingClientRect();\n var xPosition = this.config.popup ? this.position.x : elRect.left;\n // skip if cursor is outside of popupParent horizontally\n var skipX = ((xPosition <= 0 && parentRect.left >= e.clientX) ||\n (parentRect.right <= e.clientX && parentRect.right <= boundaryElRect.right));\n if (skipX) {\n return true;\n }\n if (isLeft) {\n skipX = (\n // skip if we are moving to the left and the cursor\n // is positioned to the right of the left side anchor\n (diff < 0 && e.clientX > xPosition + parentRect.left) ||\n // skip if we are moving to the right and the cursor\n // is positioned to the left of the dialog\n (diff > 0 && e.clientX < xPosition + parentRect.left));\n }\n else {\n if (anywhereWithin) {\n // if anywhereWithin is true, we allow to move\n // as long as the cursor is within the dialog\n skipX = ((diff < 0 && e.clientX > boundaryElRect.right) ||\n (diff > 0 && e.clientX < xPosition + parentRect.left));\n }\n else {\n skipX = (\n // if the movement is bound to the right side of the dialog\n // we skip if we are moving to the left and the cursor\n // is to the right of the dialog\n (diff < 0 && e.clientX > boundaryElRect.right) ||\n // or skip if we are moving to the right and the cursor\n // is to the left of the right side anchor\n (diff > 0 && e.clientX < boundaryElRect.right));\n }\n }\n return skipX;\n };\n PositionableFeature.prototype.shouldSkipY = function (e, isTop, topBuffer, diff) {\n if (topBuffer === void 0) { topBuffer = 0; }\n var elRect = this.element.getBoundingClientRect();\n var parentRect = this.offsetParent.getBoundingClientRect();\n var boundaryElRect = this.boundaryEl.getBoundingClientRect();\n var yPosition = this.config.popup ? this.position.y : elRect.top;\n // skip if cursor is outside of popupParent vertically\n var skipY = ((yPosition <= 0 && parentRect.top >= e.clientY) ||\n (parentRect.bottom <= e.clientY && parentRect.bottom <= boundaryElRect.bottom));\n if (skipY) {\n return true;\n }\n if (isTop) {\n skipY = (\n // skip if we are moving to towards top and the cursor is\n // below the top anchor + topBuffer\n // note: topBuffer is used when moving the dialog using the title bar\n (diff < 0 && e.clientY > yPosition + parentRect.top + topBuffer) ||\n // skip if we are moving to the bottom and the cursor is\n // above the top anchor\n (diff > 0 && e.clientY < yPosition + parentRect.top));\n }\n else {\n skipY = (\n // skip if we are moving towards the top and the cursor\n // is below the bottom anchor\n (diff < 0 && e.clientY > boundaryElRect.bottom) ||\n // skip if we are moving towards the bottom and the cursor\n // is above the bottom anchor\n (diff > 0 && e.clientY < boundaryElRect.bottom));\n }\n return skipY;\n };\n PositionableFeature.prototype.createResizeMap = function () {\n var eGui = this.element;\n this.resizerMap = {\n topLeft: { element: eGui.querySelector('[ref=eTopLeftResizer]') },\n top: { element: eGui.querySelector('[ref=eTopResizer]') },\n topRight: { element: eGui.querySelector('[ref=eTopRightResizer]') },\n right: { element: eGui.querySelector('[ref=eRightResizer]') },\n bottomRight: { element: eGui.querySelector('[ref=eBottomRightResizer]') },\n bottom: { element: eGui.querySelector('[ref=eBottomResizer]') },\n bottomLeft: { element: eGui.querySelector('[ref=eBottomLeftResizer]') },\n left: { element: eGui.querySelector('[ref=eLeftResizer]') }\n };\n };\n PositionableFeature.prototype.addResizers = function () {\n if (this.resizersAdded) {\n return;\n }\n var eGui = this.element;\n if (!eGui) {\n return;\n }\n var parser = new DOMParser();\n var resizers = parser.parseFromString(RESIZE_TEMPLATE, 'text/html').body;\n eGui.appendChild(resizers.firstChild);\n this.createResizeMap();\n this.resizersAdded = true;\n };\n PositionableFeature.prototype.removeResizers = function () {\n this.resizerMap = undefined;\n var resizerEl = this.element.querySelector(\".\" + RESIZE_CONTAINER_STYLE);\n if (resizerEl) {\n this.element.removeChild(resizerEl);\n }\n this.resizersAdded = false;\n };\n PositionableFeature.prototype.getResizerElement = function (side) {\n return this.resizerMap[side].element;\n };\n PositionableFeature.prototype.onResizeStart = function (e, side) {\n this.boundaryEl = this.findBoundaryElement();\n if (!this.positioned) {\n this.initialisePosition();\n }\n this.currentResizer = {\n isTop: !!side.match(/top/i),\n isRight: !!side.match(/right/i),\n isBottom: !!side.match(/bottom/i),\n isLeft: !!side.match(/left/i),\n };\n this.element.classList.add('ag-resizing');\n this.resizerMap[side].element.classList.add('ag-active');\n var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;\n if (!popup && !forcePopupParentAsOffsetParent) {\n this.applySizeToSiblings(this.currentResizer.isBottom || this.currentResizer.isTop);\n }\n this.isResizing = true;\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n PositionableFeature.prototype.getSiblings = function () {\n var element = this.element;\n var parent = element.parentElement;\n if (!parent) {\n return null;\n }\n return Array.prototype.slice.call(parent.children).filter(function (el) { return !el.classList.contains('ag-hidden'); });\n };\n PositionableFeature.prototype.getMinSizeOfSiblings = function () {\n var siblings = this.getSiblings() || [];\n var height = 0;\n var width = 0;\n for (var i = 0; i < siblings.length; i++) {\n var currentEl = siblings[i];\n var isFlex = !!currentEl.style.flex && currentEl.style.flex !== '0 0 auto';\n if (currentEl === this.element) {\n continue;\n }\n var nextHeight = this.minHeight || 0;\n var nextWidth = this.minWidth || 0;\n if (isFlex) {\n var computedStyle = window.getComputedStyle(currentEl);\n if (computedStyle.minHeight) {\n nextHeight = parseInt(computedStyle.minHeight, 10);\n }\n if (computedStyle.minWidth) {\n nextWidth = parseInt(computedStyle.minWidth, 10);\n }\n }\n else {\n nextHeight = currentEl.offsetHeight;\n nextWidth = currentEl.offsetWidth;\n }\n height += nextHeight;\n width += nextWidth;\n }\n return { height: height, width: width };\n };\n PositionableFeature.prototype.applySizeToSiblings = function (vertical) {\n var containerToFlex = null;\n var siblings = this.getSiblings();\n if (!siblings) {\n return;\n }\n for (var i = 0; i < siblings.length; i++) {\n var el = siblings[i];\n if (el === containerToFlex) {\n continue;\n }\n if (vertical) {\n el.style.height = el.offsetHeight + \"px\";\n }\n else {\n el.style.width = el.offsetWidth + \"px\";\n }\n el.style.flex = '0 0 auto';\n if (el === this.element) {\n containerToFlex = siblings[i + 1];\n }\n }\n if (containerToFlex) {\n containerToFlex.style.removeProperty('height');\n containerToFlex.style.removeProperty('min-height');\n containerToFlex.style.removeProperty('max-height');\n containerToFlex.style.flex = '1 1 auto';\n }\n };\n PositionableFeature.prototype.isResizable = function () {\n return Object.values(this.resizable).some(function (value) { return value; });\n };\n PositionableFeature.prototype.onResize = function (e) {\n if (!this.isResizing || !this.currentResizer) {\n return;\n }\n var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;\n var _b = this.currentResizer, isTop = _b.isTop, isRight = _b.isRight, isBottom = _b.isBottom, isLeft = _b.isLeft;\n var isHorizontal = isRight || isLeft;\n var isVertical = isBottom || isTop;\n var _c = this.calculateMouseMovement({ e: e, isLeft: isLeft, isTop: isTop }), movementX = _c.movementX, movementY = _c.movementY;\n var xPosition = this.position.x;\n var yPosition = this.position.y;\n var offsetLeft = 0;\n var offsetTop = 0;\n if (isHorizontal && movementX) {\n var direction = isLeft ? -1 : 1;\n var oldWidth = this.getWidth();\n var newWidth = oldWidth + (movementX * direction);\n var skipWidth = false;\n if (isLeft) {\n offsetLeft = oldWidth - newWidth;\n if (xPosition + offsetLeft <= 0 || newWidth <= this.minWidth) {\n skipWidth = true;\n offsetLeft = 0;\n }\n }\n if (!skipWidth) {\n this.setWidth(newWidth);\n }\n }\n if (isVertical && movementY) {\n var direction = isTop ? -1 : 1;\n var oldHeight = this.getHeight();\n var newHeight = oldHeight + (movementY * direction);\n var skipHeight = false;\n if (isTop) {\n offsetTop = oldHeight - newHeight;\n if (yPosition + offsetTop <= 0 || newHeight <= this.minHeight) {\n skipHeight = true;\n offsetTop = 0;\n }\n }\n else {\n // do not let the size of all siblings be higher than the parent container\n if (!this.config.popup &&\n !this.config.forcePopupParentAsOffsetParent &&\n oldHeight < newHeight &&\n (this.getMinSizeOfSiblings().height + newHeight) > this.element.parentElement.offsetHeight) {\n skipHeight = true;\n }\n }\n if (!skipHeight) {\n this.setHeight(newHeight);\n }\n }\n this.updateDragStartPosition(e.clientX, e.clientY);\n if ((popup || forcePopupParentAsOffsetParent) && offsetLeft || offsetTop) {\n this.offsetElement(xPosition + offsetLeft, yPosition + offsetTop);\n }\n };\n PositionableFeature.prototype.onResizeEnd = function (e, side) {\n this.isResizing = false;\n this.currentResizer = null;\n this.boundaryEl = null;\n var params = {\n type: 'resize',\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi\n };\n this.element.classList.remove('ag-resizing');\n this.resizerMap[side].element.classList.remove('ag-active');\n this.dispatchEvent(params);\n };\n PositionableFeature.prototype.refreshSize = function () {\n var eGui = this.element;\n if (this.config.popup) {\n if (!this.config.width) {\n this.setWidth(eGui.offsetWidth);\n }\n if (!this.config.height) {\n this.setHeight(eGui.offsetHeight);\n }\n }\n };\n PositionableFeature.prototype.onMoveStart = function (e) {\n this.boundaryEl = this.findBoundaryElement();\n if (!this.positioned) {\n this.initialisePosition();\n }\n this.isMoving = true;\n this.element.classList.add('ag-moving');\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n PositionableFeature.prototype.onMove = function (e) {\n if (!this.isMoving) {\n return;\n }\n var _a = this.position, x = _a.x, y = _a.y;\n var topBuffer;\n if (this.config.calculateTopBuffer) {\n topBuffer = this.config.calculateTopBuffer();\n }\n var _b = this.calculateMouseMovement({\n e: e,\n isTop: true,\n anywhereWithin: true,\n topBuffer: topBuffer\n }), movementX = _b.movementX, movementY = _b.movementY;\n this.offsetElement(x + movementX, y + movementY);\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n PositionableFeature.prototype.onMoveEnd = function () {\n this.isMoving = false;\n this.boundaryEl = null;\n this.element.classList.remove('ag-moving');\n };\n PositionableFeature.prototype.setOffsetParent = function () {\n if (this.config.forcePopupParentAsOffsetParent) {\n this.offsetParent = this.popupService.getPopupParent();\n }\n else {\n this.offsetParent = this.element.offsetParent;\n }\n };\n PositionableFeature.prototype.findBoundaryElement = function () {\n var el = this.element;\n while (el) {\n if (window.getComputedStyle(el).position !== 'static') {\n return el;\n }\n el = el.parentElement;\n }\n return this.element;\n };\n PositionableFeature.prototype.clearResizeListeners = function () {\n while (this.resizeListeners.length) {\n var params = this.resizeListeners.pop();\n this.dragService.removeDragSource(params);\n }\n };\n PositionableFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.moveElementDragListener) {\n this.dragService.removeDragSource(this.moveElementDragListener);\n }\n this.constrainSizeToAvailableHeight(false);\n this.clearResizeListeners();\n this.removeResizers();\n };\n __decorate$2j([\n Autowired('popupService')\n ], PositionableFeature.prototype, \"popupService\", void 0);\n __decorate$2j([\n Autowired('resizeObserverService')\n ], PositionableFeature.prototype, \"resizeObserverService\", void 0);\n __decorate$2j([\n Autowired('dragService')\n ], PositionableFeature.prototype, \"dragService\", void 0);\n return PositionableFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2H = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Contains common logic to all provided filters (apply button, clear button, etc).\n * All the filters that come with AG Grid extend this class. User filters do not\n * extend this class.\n *\n * @param M type of filter-model managed by the concrete sub-class that extends this type\n * @param V type of value managed by the concrete sub-class that extends this type\n */\nvar ProvidedFilter = /** @class */ (function (_super) {\n __extends$2H(ProvidedFilter, _super);\n function ProvidedFilter(filterNameKey) {\n var _this = _super.call(this) || this;\n _this.filterNameKey = filterNameKey;\n _this.applyActive = false;\n _this.hidePopup = null;\n _this.debouncePending = false;\n // after the user hits 'apply' the model gets copied to here. this is then the model that we use for\n // all filtering. so if user changes UI but doesn't hit apply, then the UI will be out of sync with this model.\n // this is what we want, as the UI should only become the 'active' filter once it's applied. when apply is\n // inactive, this model will be in sync (following the debounce ms). if the UI is not a valid filter\n // (eg the value is missing so nothing to filter on, or for set filter all checkboxes are checked so filter\n // not active) then this appliedModel will be null/undefined.\n _this.appliedModel = null;\n return _this;\n }\n ProvidedFilter.prototype.postConstruct = function () {\n this.resetTemplate(); // do this first to create the DOM\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n this.positionableFeature = new PositionableFeature(this.getPositionableElement(), {\n forcePopupParentAsOffsetParent: true\n });\n this.createBean(this.positionableFeature);\n };\n // override\n ProvidedFilter.prototype.handleKeyDown = function (e) { };\n ProvidedFilter.prototype.getFilterTitle = function () {\n return this.translate(this.filterNameKey);\n };\n ProvidedFilter.prototype.isFilterActive = function () {\n // filter is active if we have a valid applied model\n return !!this.appliedModel;\n };\n ProvidedFilter.prototype.resetTemplate = function (paramsMap) {\n var eGui = this.getGui();\n if (eGui) {\n eGui.removeEventListener('submit', this.onFormSubmit);\n }\n var templateString = /* html */ \"\\n <form class=\\\"ag-filter-wrapper\\\">\\n <div class=\\\"ag-filter-body-wrapper ag-\" + this.getCssIdentifier() + \"-body-wrapper\\\" ref=\\\"eFilterBody\\\">\\n \" + this.createBodyTemplate() + \"\\n </div>\\n </form>\";\n this.setTemplate(templateString, paramsMap);\n eGui = this.getGui();\n if (eGui) {\n eGui.addEventListener('submit', this.onFormSubmit);\n }\n };\n ProvidedFilter.prototype.isReadOnly = function () {\n return !!this.providedFilterParams.readOnly;\n };\n ProvidedFilter.prototype.init = function (params) {\n var _this = this;\n this.setParams(params);\n this.resetUiToDefaults(true).then(function () {\n _this.updateUiVisibility();\n _this.setupOnBtApplyDebounce();\n });\n };\n ProvidedFilter.prototype.setParams = function (params) {\n this.providedFilterParams = params;\n this.applyActive = ProvidedFilter.isUseApplyButton(params);\n this.createButtonPanel();\n };\n ProvidedFilter.prototype.createButtonPanel = function () {\n var _this = this;\n var buttons = this.providedFilterParams.buttons;\n if (!buttons || buttons.length < 1 || this.isReadOnly()) {\n return;\n }\n var eButtonsPanel = document.createElement('div');\n eButtonsPanel.classList.add('ag-filter-apply-panel');\n var addButton = function (type) {\n var text;\n var clickListener;\n switch (type) {\n case 'apply':\n text = _this.translate('applyFilter');\n clickListener = function (e) { return _this.onBtApply(false, false, e); };\n break;\n case 'clear':\n text = _this.translate('clearFilter');\n clickListener = function () { return _this.onBtClear(); };\n break;\n case 'reset':\n text = _this.translate('resetFilter');\n clickListener = function () { return _this.onBtReset(); };\n break;\n case 'cancel':\n text = _this.translate('cancelFilter');\n clickListener = function (e) { _this.onBtCancel(e); };\n break;\n default:\n console.warn('AG Grid: Unknown button type specified');\n return;\n }\n var buttonType = type === 'apply' ? 'submit' : 'button';\n var button = loadTemplate(\n /* html */\n \"<button\\n type=\\\"\" + buttonType + \"\\\"\\n ref=\\\"\" + type + \"FilterButton\\\"\\n class=\\\"ag-standard-button ag-filter-apply-panel-button\\\"\\n >\" + text + \"\\n </button>\");\n eButtonsPanel.appendChild(button);\n _this.addManagedListener(button, 'click', clickListener);\n };\n convertToSet(buttons).forEach(function (type) { return addButton(type); });\n this.getGui().appendChild(eButtonsPanel);\n };\n // subclasses can override this to provide alternative debounce defaults\n ProvidedFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n ProvidedFilter.prototype.setupOnBtApplyDebounce = function () {\n var _this = this;\n var debounceMs = ProvidedFilter.getDebounceMs(this.providedFilterParams, this.getDefaultDebounceMs());\n var debounceFunc = debounce(this.checkApplyDebounce.bind(this), debounceMs);\n this.onBtApplyDebounce = function () {\n _this.debouncePending = true;\n debounceFunc();\n };\n };\n ProvidedFilter.prototype.checkApplyDebounce = function () {\n if (this.debouncePending) {\n // May already have been applied, so don't apply again (e.g. closing filter before debounce timeout)\n this.debouncePending = false;\n this.onBtApply();\n }\n };\n ProvidedFilter.prototype.getModel = function () {\n return this.appliedModel ? this.appliedModel : null;\n };\n ProvidedFilter.prototype.setModel = function (model) {\n var _this = this;\n var promise = model != null ? this.setModelIntoUi(model) : this.resetUiToDefaults();\n return promise.then(function () {\n _this.updateUiVisibility();\n // we set the model from the GUI, rather than the provided model,\n // so the model is consistent, e.g. handling of null/undefined will be the same,\n // or if model is case insensitive, then casing is removed.\n _this.applyModel('api');\n });\n };\n ProvidedFilter.prototype.onBtCancel = function (e) {\n var _this = this;\n this.resetUiToActiveModel(this.getModel(), function () {\n _this.handleCancelEnd(e);\n });\n };\n ProvidedFilter.prototype.handleCancelEnd = function (e) {\n if (this.providedFilterParams.closeOnApply) {\n this.close(e);\n }\n };\n ProvidedFilter.prototype.resetUiToActiveModel = function (currentModel, afterUiUpdatedFunc) {\n var _this = this;\n var afterAppliedFunc = function () {\n _this.onUiChanged(false, 'prevent');\n afterUiUpdatedFunc === null || afterUiUpdatedFunc === void 0 ? void 0 : afterUiUpdatedFunc();\n };\n if (currentModel != null) {\n this.setModelIntoUi(currentModel).then(afterAppliedFunc);\n }\n else {\n this.resetUiToDefaults().then(afterAppliedFunc);\n }\n };\n ProvidedFilter.prototype.onBtClear = function () {\n var _this = this;\n this.resetUiToDefaults().then(function () { return _this.onUiChanged(); });\n };\n ProvidedFilter.prototype.onBtReset = function () {\n this.onBtClear();\n this.onBtApply();\n };\n /**\n * Applies changes made in the UI to the filter, and returns true if the model has changed.\n */\n ProvidedFilter.prototype.applyModel = function (source) {\n var newModel = this.getModelFromUi();\n if (!this.isModelValid(newModel)) {\n return false;\n }\n var previousModel = this.appliedModel;\n this.appliedModel = newModel;\n // models can be same if user pasted same content into text field, or maybe just changed the case\n // and it's a case insensitive filter\n return !this.areModelsEqual(previousModel, newModel);\n };\n ProvidedFilter.prototype.isModelValid = function (model) {\n return true;\n };\n ProvidedFilter.prototype.onFormSubmit = function (e) {\n e.preventDefault();\n };\n ProvidedFilter.prototype.onBtApply = function (afterFloatingFilter, afterDataChange, e) {\n if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }\n if (afterDataChange === void 0) { afterDataChange = false; }\n // Prevent form submission\n if (e) {\n e.preventDefault();\n }\n if (this.applyModel(afterDataChange ? 'rowDataUpdated' : 'ui')) {\n // the floating filter uses 'afterFloatingFilter' info, so it doesn't refresh after filter changed if change\n // came from floating filter\n this.providedFilterParams.filterChangedCallback({ afterFloatingFilter: afterFloatingFilter, afterDataChange: afterDataChange });\n }\n var closeOnApply = this.providedFilterParams.closeOnApply;\n // only close if an apply button is visible, otherwise we'd be closing every time a change was made!\n if (closeOnApply && this.applyActive && !afterFloatingFilter && !afterDataChange) {\n this.close(e);\n }\n };\n ProvidedFilter.prototype.onNewRowsLoaded = function () {\n };\n ProvidedFilter.prototype.close = function (e) {\n if (!this.hidePopup) {\n return;\n }\n var keyboardEvent = e;\n var key = keyboardEvent && keyboardEvent.key;\n var params;\n if (key === 'Enter' || key === 'Space') {\n params = { keyboardEvent: keyboardEvent };\n }\n this.hidePopup(params);\n this.hidePopup = null;\n };\n /**\n * By default, if the change came from a floating filter it will be applied immediately, otherwise if there is no\n * apply button it will be applied after a debounce, otherwise it will not be applied at all. This behaviour can\n * be adjusted by using the apply parameter.\n */\n ProvidedFilter.prototype.onUiChanged = function (fromFloatingFilter, apply) {\n if (fromFloatingFilter === void 0) { fromFloatingFilter = false; }\n this.updateUiVisibility();\n this.providedFilterParams.filterModifiedCallback();\n if (this.applyActive && !this.isReadOnly()) {\n var isValid = this.isModelValid(this.getModelFromUi());\n setDisabled(this.getRefElement('applyFilterButton'), !isValid);\n }\n if ((fromFloatingFilter && !apply) || apply === 'immediately') {\n this.onBtApply(fromFloatingFilter);\n }\n else if ((!this.applyActive && !apply) || apply === 'debounce') {\n this.onBtApplyDebounce();\n }\n };\n ProvidedFilter.prototype.afterGuiAttached = function (params) {\n if (params) {\n this.hidePopup = params.hidePopup;\n }\n this.refreshFilterResizer(params === null || params === void 0 ? void 0 : params.container);\n };\n ProvidedFilter.prototype.refreshFilterResizer = function (containerType) {\n // tool panel is scrollable, so don't need to size\n if (!this.positionableFeature || containerType === 'toolPanel') {\n return;\n }\n var isFloatingFilter = containerType === 'floatingFilter';\n var _a = this, positionableFeature = _a.positionableFeature, gridOptionsService = _a.gridOptionsService;\n if (isFloatingFilter) {\n positionableFeature.restoreLastSize();\n positionableFeature.setResizable(gridOptionsService.is('enableRtl')\n ? { bottom: true, bottomLeft: true, left: true }\n : { bottom: true, bottomRight: true, right: true });\n }\n else {\n this.positionableFeature.removeSizeFromEl();\n this.positionableFeature.setResizable(false);\n }\n this.positionableFeature.constrainSizeToAvailableHeight(true);\n };\n ProvidedFilter.prototype.afterGuiDetached = function () {\n this.checkApplyDebounce();\n if (this.positionableFeature) {\n this.positionableFeature.constrainSizeToAvailableHeight(false);\n }\n };\n // static, as used by floating filter also\n ProvidedFilter.getDebounceMs = function (params, debounceDefault) {\n if (ProvidedFilter.isUseApplyButton(params)) {\n if (params.debounceMs != null) {\n console.warn('AG Grid: debounceMs is ignored when apply button is present');\n }\n return 0;\n }\n return params.debounceMs != null ? params.debounceMs : debounceDefault;\n };\n // static, as used by floating filter also\n ProvidedFilter.isUseApplyButton = function (params) {\n return !!params.buttons && params.buttons.indexOf('apply') >= 0;\n };\n ProvidedFilter.prototype.destroy = function () {\n var eGui = this.getGui();\n if (eGui) {\n eGui.removeEventListener('submit', this.onFormSubmit);\n }\n this.hidePopup = null;\n if (this.positionableFeature) {\n this.positionableFeature = this.destroyBean(this.positionableFeature);\n }\n _super.prototype.destroy.call(this);\n };\n ProvidedFilter.prototype.translate = function (key) {\n var translate = this.localeService.getLocaleTextFunc();\n return translate(key, DEFAULT_FILTER_LOCALE_TEXT[key]);\n };\n ProvidedFilter.prototype.getCellValue = function (rowNode) {\n var _a = this.providedFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;\n return this.providedFilterParams.valueGetter({\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n data: rowNode.data,\n getValue: function (field) { return rowNode.data[field]; },\n node: rowNode,\n });\n };\n // override to control positionable feature\n ProvidedFilter.prototype.getPositionableElement = function () {\n return this.eFilterBody;\n };\n __decorate$2i([\n Autowired('rowModel')\n ], ProvidedFilter.prototype, \"rowModel\", void 0);\n __decorate$2i([\n RefSelector('eFilterBody')\n ], ProvidedFilter.prototype, \"eFilterBody\", void 0);\n __decorate$2i([\n PostConstruct\n ], ProvidedFilter.prototype, \"postConstruct\", null);\n return ProvidedFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2G = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAbstractLabel = /** @class */ (function (_super) {\n __extends$2G(AgAbstractLabel, _super);\n function AgAbstractLabel(config, template) {\n var _this = _super.call(this, template) || this;\n _this.labelSeparator = '';\n _this.labelAlignment = 'left';\n _this.disabled = false;\n _this.label = '';\n _this.config = config || {};\n return _this;\n }\n AgAbstractLabel.prototype.postConstruct = function () {\n this.addCssClass('ag-labeled');\n this.eLabel.classList.add('ag-label');\n var _a = this.config, labelSeparator = _a.labelSeparator, label = _a.label, labelWidth = _a.labelWidth, labelAlignment = _a.labelAlignment;\n if (labelSeparator != null) {\n this.setLabelSeparator(labelSeparator);\n }\n if (label != null) {\n this.setLabel(label);\n }\n if (labelWidth != null) {\n this.setLabelWidth(labelWidth);\n }\n this.setLabelAlignment(labelAlignment || this.labelAlignment);\n this.refreshLabel();\n };\n AgAbstractLabel.prototype.refreshLabel = function () {\n clearElement(this.eLabel);\n if (typeof this.label === 'string') {\n this.eLabel.innerText = this.label + this.labelSeparator;\n }\n else if (this.label) {\n this.eLabel.appendChild(this.label);\n }\n if (this.label === '') {\n setDisplayed(this.eLabel, false);\n setAriaRole(this.eLabel, 'presentation');\n }\n else {\n setDisplayed(this.eLabel, true);\n setAriaRole(this.eLabel, null);\n }\n };\n AgAbstractLabel.prototype.setLabelSeparator = function (labelSeparator) {\n if (this.labelSeparator === labelSeparator) {\n return this;\n }\n this.labelSeparator = labelSeparator;\n if (this.label != null) {\n this.refreshLabel();\n }\n return this;\n };\n AgAbstractLabel.prototype.getLabelId = function () {\n this.eLabel.id = this.eLabel.id || \"ag-\" + this.getCompId() + \"-label\";\n return this.eLabel.id;\n };\n AgAbstractLabel.prototype.getLabel = function () {\n return this.label;\n };\n AgAbstractLabel.prototype.setLabel = function (label) {\n if (this.label === label) {\n return this;\n }\n this.label = label;\n this.refreshLabel();\n return this;\n };\n AgAbstractLabel.prototype.setLabelAlignment = function (alignment) {\n var eGui = this.getGui();\n var eGuiClassList = eGui.classList;\n eGuiClassList.toggle('ag-label-align-left', alignment === 'left');\n eGuiClassList.toggle('ag-label-align-right', alignment === 'right');\n eGuiClassList.toggle('ag-label-align-top', alignment === 'top');\n return this;\n };\n AgAbstractLabel.prototype.setLabelEllipsis = function (hasEllipsis) {\n this.eLabel.classList.toggle('ag-label-ellipsis', hasEllipsis);\n return this;\n };\n AgAbstractLabel.prototype.setLabelWidth = function (width) {\n if (this.label == null) {\n return this;\n }\n setElementWidth(this.eLabel, width);\n return this;\n };\n AgAbstractLabel.prototype.setDisabled = function (disabled) {\n disabled = !!disabled;\n var element = this.getGui();\n setDisabled(element, disabled);\n element.classList.toggle('ag-disabled', disabled);\n this.disabled = disabled;\n return this;\n };\n AgAbstractLabel.prototype.isDisabled = function () {\n return !!this.disabled;\n };\n __decorate$2h([\n PostConstruct\n ], AgAbstractLabel.prototype, \"postConstruct\", null);\n return AgAbstractLabel;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2F = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgAbstractField = /** @class */ (function (_super) {\n __extends$2F(AgAbstractField, _super);\n function AgAbstractField(config, template, className) {\n var _this = _super.call(this, config, template) || this;\n _this.className = className;\n return _this;\n }\n AgAbstractField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n if (this.className) {\n this.addCssClass(this.className);\n }\n };\n AgAbstractField.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () { return callbackFn(_this.getValue()); });\n return this;\n };\n AgAbstractField.prototype.getWidth = function () {\n return this.getGui().clientWidth;\n };\n AgAbstractField.prototype.setWidth = function (width) {\n setFixedWidth(this.getGui(), width);\n return this;\n };\n AgAbstractField.prototype.getPreviousValue = function () {\n return this.previousValue;\n };\n AgAbstractField.prototype.getValue = function () {\n return this.value;\n };\n AgAbstractField.prototype.setValue = function (value, silent) {\n if (this.value === value) {\n return this;\n }\n this.previousValue = this.value;\n this.value = value;\n if (!silent) {\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n }\n return this;\n };\n AgAbstractField.EVENT_CHANGED = 'valueChange';\n return AgAbstractField;\n}(AgAbstractLabel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2E = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgPickerField = /** @class */ (function (_super) {\n __extends$2E(AgPickerField, _super);\n function AgPickerField(config, className, pickerIcon, ariaRole) {\n var _this = _super.call(this, config, \n /* html */ \"<div class=\\\"ag-picker-field\\\" role=\\\"presentation\\\">\\n <div ref=\\\"eLabel\\\"></div>\\n <div ref=\\\"eWrapper\\\"\\n class=\\\"ag-wrapper ag-picker-field-wrapper\\\"\\n tabIndex=\\\"-1\\\"\\n aria-expanded=\\\"false\\\"\\n \" + (ariaRole ? \"role=\\\"\" + ariaRole + \"\\\"\" : '') + \"\\n >\\n <div ref=\\\"eDisplayField\\\" class=\\\"ag-picker-field-display\\\"></div>\\n <div ref=\\\"eIcon\\\" class=\\\"ag-picker-field-icon\\\" aria-hidden=\\\"true\\\"></div>\\n </div>\\n </div>\", className) || this;\n _this.pickerIcon = pickerIcon;\n _this.isPickerDisplayed = false;\n _this.isDestroyingPicker = false;\n _this.skipClick = false;\n return _this;\n }\n AgPickerField.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n var displayId = this.getCompId() + \"-display\";\n this.eDisplayField.setAttribute('id', displayId);\n setAriaDescribedBy(this.eWrapper, displayId);\n var clickHandler = function () {\n if (_this.skipClick) {\n _this.skipClick = false;\n return;\n }\n if (_this.isDisabled()) {\n return;\n }\n _this.pickerComponent = _this.showPicker();\n };\n var eGui = this.getGui();\n this.addManagedListener(eGui, 'mousedown', function (e) {\n if (!_this.skipClick &&\n _this.pickerComponent &&\n _this.pickerComponent.isAlive() &&\n isVisible(_this.pickerComponent.getGui()) &&\n eGui.contains(e.target)) {\n _this.skipClick = true;\n }\n });\n this.addManagedListener(eGui, 'keydown', function (e) {\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n clickHandler();\n case KeyCode.ESCAPE:\n if (_this.isPickerDisplayed) {\n e.preventDefault();\n }\n break;\n }\n });\n this.addManagedListener(this.eWrapper, 'click', clickHandler);\n this.addManagedListener(this.eLabel, 'click', clickHandler);\n if (this.pickerIcon) {\n var icon = createIconNoSpan(this.pickerIcon, this.gridOptionsService);\n if (icon) {\n this.eIcon.appendChild(icon);\n }\n }\n };\n AgPickerField.prototype.refreshLabel = function () {\n if (exists(this.getLabel())) {\n setAriaLabelledBy(this.eWrapper, this.getLabelId());\n }\n else {\n this.eWrapper.removeAttribute('aria-labelledby');\n }\n _super.prototype.refreshLabel.call(this);\n };\n AgPickerField.prototype.setAriaLabel = function (label) {\n setAriaLabel(this.eWrapper, label);\n return this;\n };\n AgPickerField.prototype.setInputWidth = function (width) {\n setElementWidth(this.eWrapper, width);\n return this;\n };\n AgPickerField.prototype.getFocusableElement = function () {\n return this.eWrapper;\n };\n __decorate$2g([\n RefSelector('eLabel')\n ], AgPickerField.prototype, \"eLabel\", void 0);\n __decorate$2g([\n RefSelector('eWrapper')\n ], AgPickerField.prototype, \"eWrapper\", void 0);\n __decorate$2g([\n RefSelector('eDisplayField')\n ], AgPickerField.prototype, \"eDisplayField\", void 0);\n __decorate$2g([\n RefSelector('eIcon')\n ], AgPickerField.prototype, \"eIcon\", void 0);\n return AgPickerField;\n}(AgAbstractField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2D = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgList = /** @class */ (function (_super) {\n __extends$2D(AgList, _super);\n function AgList(cssIdentifier) {\n if (cssIdentifier === void 0) { cssIdentifier = 'default'; }\n var _this = _super.call(this, /* html */ \"<div class=\\\"ag-list ag-\" + cssIdentifier + \"-list\\\" role=\\\"listbox\\\"></div>\") || this;\n _this.cssIdentifier = cssIdentifier;\n _this.options = [];\n _this.itemEls = [];\n return _this;\n }\n AgList.prototype.init = function () {\n this.addManagedListener(this.getGui(), 'keydown', this.handleKeyDown.bind(this));\n };\n AgList.prototype.handleKeyDown = function (e) {\n var key = e.key;\n switch (key) {\n case KeyCode.ENTER:\n if (!this.highlightedEl) {\n this.setValue(this.getValue());\n }\n else {\n var pos = this.itemEls.indexOf(this.highlightedEl);\n this.setValueByIndex(pos);\n }\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n var isDown = key === KeyCode.DOWN;\n var itemToHighlight = void 0;\n e.preventDefault();\n if (!this.highlightedEl) {\n itemToHighlight = this.itemEls[isDown ? 0 : this.itemEls.length - 1];\n }\n else {\n var currentIdx = this.itemEls.indexOf(this.highlightedEl);\n var nextPos = currentIdx + (isDown ? 1 : -1);\n nextPos = Math.min(Math.max(nextPos, 0), this.itemEls.length - 1);\n itemToHighlight = this.itemEls[nextPos];\n }\n this.highlightItem(itemToHighlight);\n break;\n }\n };\n AgList.prototype.addOptions = function (listOptions) {\n var _this = this;\n listOptions.forEach(function (listOption) { return _this.addOption(listOption); });\n return this;\n };\n AgList.prototype.addOption = function (listOption) {\n var value = listOption.value, text = listOption.text;\n var sanitisedText = escapeString(text || value);\n this.options.push({ value: value, text: sanitisedText });\n this.renderOption(value, sanitisedText);\n this.updateIndices();\n return this;\n };\n AgList.prototype.updateIndices = function () {\n var options = this.getGui().querySelectorAll('.ag-list-item');\n options.forEach(function (option, idx) {\n setAriaPosInSet(option, idx + 1);\n setAriaSetSize(option, options.length);\n });\n };\n AgList.prototype.renderOption = function (value, text) {\n var _this = this;\n var itemEl = document.createElement('div');\n setAriaRole(itemEl, 'option');\n itemEl.classList.add('ag-list-item', \"ag-\" + this.cssIdentifier + \"-list-item\");\n itemEl.innerHTML = \"<span>\" + text + \"</span>\";\n itemEl.tabIndex = -1;\n this.itemEls.push(itemEl);\n this.addManagedListener(itemEl, 'mouseover', function () { return _this.highlightItem(itemEl); });\n this.addManagedListener(itemEl, 'mouseleave', function () { return _this.clearHighlighted(); });\n this.addManagedListener(itemEl, 'click', function () { return _this.setValue(value); });\n this.getGui().appendChild(itemEl);\n };\n AgList.prototype.setValue = function (value, silent) {\n if (this.value === value) {\n this.fireItemSelected();\n return this;\n }\n if (value == null) {\n this.reset();\n return this;\n }\n var idx = this.options.findIndex(function (option) { return option.value === value; });\n if (idx !== -1) {\n var option = this.options[idx];\n this.value = option.value;\n this.displayValue = option.text != null ? option.text : option.value;\n this.highlightItem(this.itemEls[idx]);\n if (!silent) {\n this.fireChangeEvent();\n }\n }\n return this;\n };\n AgList.prototype.setValueByIndex = function (idx) {\n return this.setValue(this.options[idx].value);\n };\n AgList.prototype.getValue = function () {\n return this.value;\n };\n AgList.prototype.getDisplayValue = function () {\n return this.displayValue;\n };\n AgList.prototype.refreshHighlighted = function () {\n var _this = this;\n this.clearHighlighted();\n var idx = this.options.findIndex(function (option) { return option.value === _this.value; });\n if (idx !== -1) {\n this.highlightItem(this.itemEls[idx]);\n }\n };\n AgList.prototype.reset = function () {\n this.value = null;\n this.displayValue = null;\n this.clearHighlighted();\n this.fireChangeEvent();\n };\n AgList.prototype.highlightItem = function (el) {\n if (!el.offsetParent) {\n return;\n }\n this.clearHighlighted();\n this.highlightedEl = el;\n this.highlightedEl.classList.add(AgList.ACTIVE_CLASS);\n setAriaSelected(this.highlightedEl, true);\n this.highlightedEl.focus();\n };\n AgList.prototype.clearHighlighted = function () {\n if (!this.highlightedEl || !this.highlightedEl.offsetParent) {\n return;\n }\n this.highlightedEl.classList.remove(AgList.ACTIVE_CLASS);\n setAriaSelected(this.highlightedEl, false);\n this.highlightedEl = null;\n };\n AgList.prototype.fireChangeEvent = function () {\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n this.fireItemSelected();\n };\n AgList.prototype.fireItemSelected = function () {\n this.dispatchEvent({ type: AgList.EVENT_ITEM_SELECTED });\n };\n AgList.EVENT_ITEM_SELECTED = 'selectedItem';\n AgList.ACTIVE_CLASS = 'ag-active-item';\n __decorate$2f([\n PostConstruct\n ], AgList.prototype, \"init\", null);\n return AgList;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2C = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgSelect = /** @class */ (function (_super) {\n __extends$2C(AgSelect, _super);\n function AgSelect(config) {\n return _super.call(this, config, 'ag-select', 'smallDown', 'listbox') || this;\n }\n AgSelect.prototype.init = function () {\n var _this = this;\n this.listComponent = this.createBean(new AgList('select'));\n this.listComponent.setParentComponent(this);\n this.eWrapper.tabIndex = 0;\n this.listComponent.addManagedListener(this.listComponent, AgList.EVENT_ITEM_SELECTED, function () {\n if (_this.hideList) {\n _this.hideList();\n }\n _this.dispatchEvent({ type: AgSelect.EVENT_ITEM_SELECTED });\n });\n this.listComponent.addManagedListener(this.listComponent, AgAbstractField.EVENT_CHANGED, function () {\n _this.setValue(_this.listComponent.getValue(), false, true);\n if (_this.hideList) {\n _this.hideList();\n }\n });\n };\n AgSelect.prototype.showPicker = function () {\n var _this = this;\n var listGui = this.listComponent.getGui();\n var eDocument = this.gridOptionsService.getDocument();\n var destroyMouseWheelFunc = this.addManagedListener(eDocument.body, 'wheel', function (e) {\n if (!listGui.contains(e.target) && _this.hideList) {\n _this.hideList();\n }\n });\n var destroyFocusOutFunc = this.addManagedListener(listGui, 'focusout', function (e) {\n if (!listGui.contains(e.relatedTarget) && _this.hideList) {\n _this.hideList();\n }\n });\n var translate = this.localeService.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: listGui,\n closeOnEsc: true,\n closedCallback: function () {\n _this.hideList = null;\n _this.isPickerDisplayed = false;\n destroyFocusOutFunc();\n destroyMouseWheelFunc();\n if (_this.isAlive()) {\n setAriaExpanded(_this.eWrapper, false);\n _this.getFocusableElement().focus();\n }\n },\n ariaLabel: translate('ariaLabelSelectField', 'Select Field')\n });\n if (addPopupRes) {\n this.hideList = addPopupRes.hideFunc;\n }\n this.isPickerDisplayed = true;\n setElementWidth(listGui, getAbsoluteWidth(this.eWrapper));\n setAriaExpanded(this.eWrapper, true);\n listGui.style.maxHeight = getInnerHeight(this.popupService.getPopupParent()) + 'px';\n listGui.style.position = 'absolute';\n this.popupService.positionPopupByComponent({\n type: 'ag-list',\n eventSource: this.eWrapper,\n ePopup: listGui,\n position: 'under',\n keepWithinBounds: true\n });\n this.listComponent.refreshHighlighted();\n return this.listComponent;\n };\n AgSelect.prototype.addOptions = function (options) {\n var _this = this;\n options.forEach(function (option) { return _this.addOption(option); });\n return this;\n };\n AgSelect.prototype.addOption = function (option) {\n this.listComponent.addOption(option);\n return this;\n };\n AgSelect.prototype.setValue = function (value, silent, fromPicker) {\n if (this.value === value) {\n return this;\n }\n if (!fromPicker) {\n this.listComponent.setValue(value, true);\n }\n var newValue = this.listComponent.getValue();\n if (newValue === this.getValue()) {\n return this;\n }\n this.eDisplayField.innerHTML = this.listComponent.getDisplayValue();\n return _super.prototype.setValue.call(this, value, silent);\n };\n AgSelect.prototype.destroy = function () {\n if (this.hideList) {\n this.hideList();\n }\n this.destroyBean(this.listComponent);\n _super.prototype.destroy.call(this);\n };\n AgSelect.EVENT_ITEM_SELECTED = 'selectedItem';\n __decorate$2e([\n Autowired('popupService')\n ], AgSelect.prototype, \"popupService\", void 0);\n __decorate$2e([\n PostConstruct\n ], AgSelect.prototype, \"init\", null);\n return AgSelect;\n}(AgPickerField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2B = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAbstractInputField = /** @class */ (function (_super) {\n __extends$2B(AgAbstractInputField, _super);\n function AgAbstractInputField(config, className, inputType, displayFieldTag) {\n if (inputType === void 0) { inputType = 'text'; }\n if (displayFieldTag === void 0) { displayFieldTag = 'input'; }\n var _this = _super.call(this, config, /* html */ \"\\n <div role=\\\"presentation\\\">\\n <div ref=\\\"eLabel\\\" class=\\\"ag-input-field-label\\\"></div>\\n <div ref=\\\"eWrapper\\\" class=\\\"ag-wrapper ag-input-wrapper\\\" role=\\\"presentation\\\">\\n <\" + displayFieldTag + \" ref=\\\"eInput\\\" class=\\\"ag-input-field-input\\\"></\" + displayFieldTag + \">\\n </div>\\n </div>\", className) || this;\n _this.inputType = inputType;\n _this.displayFieldTag = displayFieldTag;\n return _this;\n }\n AgAbstractInputField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n this.setInputType();\n this.eLabel.classList.add(this.className + \"-label\");\n this.eWrapper.classList.add(this.className + \"-input-wrapper\");\n this.eInput.classList.add(this.className + \"-input\");\n this.addCssClass('ag-input-field');\n this.eInput.id = this.eInput.id || \"ag-\" + this.getCompId() + \"-input\";\n var _a = this.config, width = _a.width, value = _a.value;\n if (width != null) {\n this.setWidth(width);\n }\n if (value != null) {\n this.setValue(value);\n }\n this.addInputListeners();\n };\n AgAbstractInputField.prototype.refreshLabel = function () {\n if (exists(this.getLabel())) {\n setAriaLabelledBy(this.eInput, this.getLabelId());\n }\n else {\n this.eInput.removeAttribute('aria-labelledby');\n }\n _super.prototype.refreshLabel.call(this);\n };\n AgAbstractInputField.prototype.addInputListeners = function () {\n var _this = this;\n this.addManagedListener(this.eInput, 'input', function (e) { return _this.setValue(e.target.value); });\n };\n AgAbstractInputField.prototype.setInputType = function () {\n if (this.displayFieldTag === 'input') {\n this.eInput.setAttribute('type', this.inputType);\n }\n };\n AgAbstractInputField.prototype.getInputElement = function () {\n return this.eInput;\n };\n AgAbstractInputField.prototype.setInputWidth = function (width) {\n setElementWidth(this.eWrapper, width);\n return this;\n };\n AgAbstractInputField.prototype.setInputName = function (name) {\n this.getInputElement().setAttribute('name', name);\n return this;\n };\n AgAbstractInputField.prototype.getFocusableElement = function () {\n return this.eInput;\n };\n AgAbstractInputField.prototype.setMaxLength = function (length) {\n var eInput = this.eInput;\n eInput.maxLength = length;\n return this;\n };\n AgAbstractInputField.prototype.setInputPlaceholder = function (placeholder) {\n addOrRemoveAttribute(this.eInput, 'placeholder', placeholder);\n return this;\n };\n AgAbstractInputField.prototype.setInputAriaLabel = function (label) {\n setAriaLabel(this.eInput, label);\n return this;\n };\n AgAbstractInputField.prototype.setDisabled = function (disabled) {\n setDisabled(this.eInput, disabled);\n return _super.prototype.setDisabled.call(this, disabled);\n };\n __decorate$2d([\n RefSelector('eLabel')\n ], AgAbstractInputField.prototype, \"eLabel\", void 0);\n __decorate$2d([\n RefSelector('eWrapper')\n ], AgAbstractInputField.prototype, \"eWrapper\", void 0);\n __decorate$2d([\n RefSelector('eInput')\n ], AgAbstractInputField.prototype, \"eInput\", void 0);\n return AgAbstractInputField;\n}(AgAbstractField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2A = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgCheckbox = /** @class */ (function (_super) {\n __extends$2A(AgCheckbox, _super);\n function AgCheckbox(config, className, inputType) {\n if (className === void 0) { className = 'ag-checkbox'; }\n if (inputType === void 0) { inputType = 'checkbox'; }\n var _this = _super.call(this, config, className, inputType) || this;\n _this.labelAlignment = 'right';\n _this.selected = false;\n _this.readOnly = false;\n _this.passive = false;\n return _this;\n }\n AgCheckbox.prototype.addInputListeners = function () {\n this.addManagedListener(this.eInput, 'click', this.onCheckboxClick.bind(this));\n this.addManagedListener(this.eLabel, 'click', this.toggle.bind(this));\n };\n AgCheckbox.prototype.getNextValue = function () {\n return this.selected === undefined ? true : !this.selected;\n };\n AgCheckbox.prototype.setPassive = function (passive) {\n this.passive = passive;\n };\n AgCheckbox.prototype.isReadOnly = function () {\n return this.readOnly;\n };\n AgCheckbox.prototype.setReadOnly = function (readOnly) {\n this.eWrapper.classList.toggle('ag-disabled', readOnly);\n this.eInput.disabled = readOnly;\n this.readOnly = readOnly;\n };\n AgCheckbox.prototype.setDisabled = function (disabled) {\n this.eWrapper.classList.toggle('ag-disabled', disabled);\n return _super.prototype.setDisabled.call(this, disabled);\n };\n AgCheckbox.prototype.toggle = function () {\n if (this.eInput.disabled) {\n return;\n }\n var previousValue = this.isSelected();\n var nextValue = this.getNextValue();\n if (this.passive) {\n this.dispatchChange(nextValue, previousValue);\n }\n else {\n this.setValue(nextValue);\n }\n };\n AgCheckbox.prototype.getValue = function () {\n return this.isSelected();\n };\n AgCheckbox.prototype.setValue = function (value, silent) {\n this.refreshSelectedClass(value);\n this.setSelected(value, silent);\n return this;\n };\n AgCheckbox.prototype.setName = function (name) {\n var input = this.getInputElement();\n input.name = name;\n return this;\n };\n AgCheckbox.prototype.isSelected = function () {\n return this.selected;\n };\n AgCheckbox.prototype.setSelected = function (selected, silent) {\n if (this.isSelected() === selected) {\n return;\n }\n this.previousValue = this.isSelected();\n selected = this.selected = typeof selected === 'boolean' ? selected : undefined;\n this.eInput.checked = selected;\n this.eInput.indeterminate = selected === undefined;\n if (!silent) {\n this.dispatchChange(this.selected, this.previousValue);\n }\n };\n AgCheckbox.prototype.dispatchChange = function (selected, previousValue, event) {\n this.dispatchEvent({ type: AgCheckbox.EVENT_CHANGED, selected: selected, previousValue: previousValue, event: event });\n var input = this.getInputElement();\n var checkboxChangedEvent = {\n type: Events.EVENT_CHECKBOX_CHANGED,\n id: input.id,\n name: input.name,\n selected: selected,\n previousValue: previousValue\n };\n this.eventService.dispatchEvent(checkboxChangedEvent);\n };\n AgCheckbox.prototype.onCheckboxClick = function (e) {\n if (this.passive || this.eInput.disabled) {\n return;\n }\n var previousValue = this.isSelected();\n var selected = this.selected = e.target.checked;\n this.refreshSelectedClass(selected);\n this.dispatchChange(selected, previousValue, e);\n };\n AgCheckbox.prototype.refreshSelectedClass = function (value) {\n this.eWrapper.classList.toggle('ag-checked', value === true);\n this.eWrapper.classList.toggle('ag-indeterminate', value == null);\n };\n return AgCheckbox;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgRadioButton = /** @class */ (function (_super) {\n __extends$2z(AgRadioButton, _super);\n function AgRadioButton(config) {\n return _super.call(this, config, 'ag-radio-button', 'radio') || this;\n }\n AgRadioButton.prototype.isSelected = function () {\n return this.eInput.checked;\n };\n AgRadioButton.prototype.toggle = function () {\n if (this.eInput.disabled) {\n return;\n }\n // do not allow an active radio button to be deselected\n if (!this.isSelected()) {\n this.setValue(true);\n }\n };\n AgRadioButton.prototype.addInputListeners = function () {\n _super.prototype.addInputListeners.call(this);\n this.addManagedListener(this.eventService, Events.EVENT_CHECKBOX_CHANGED, this.onChange.bind(this));\n };\n /**\n * This ensures that if another radio button in the same named group is selected, we deselect this radio button.\n * By default the browser does this for you, but we are managing classes ourselves in order to ensure input\n * elements are styled correctly in IE11, and the DOM 'changed' event is only fired when a button is selected,\n * not deselected, so we need to use our own event.\n */\n AgRadioButton.prototype.onChange = function (event) {\n if (event.selected &&\n event.name &&\n this.eInput.name &&\n this.eInput.name === event.name &&\n event.id &&\n this.eInput.id !== event.id) {\n this.setValue(false, true);\n }\n };\n return AgRadioButton;\n}(AgCheckbox));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read$n = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$j = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$n(arguments[i]));\n return ar;\n};\nvar SimpleFilterModelFormatter = /** @class */ (function () {\n function SimpleFilterModelFormatter(localeService, optionsFactory) {\n this.localeService = localeService;\n this.optionsFactory = optionsFactory;\n }\n // used by:\n // 1) NumberFloatingFilter & TextFloatingFilter: Always, for both when editable and read only.\n // 2) DateFloatingFilter: Only when read only (as we show text rather than a date picker when read only)\n SimpleFilterModelFormatter.prototype.getModelAsString = function (model) {\n var _this = this;\n if (!model) {\n return null;\n }\n var isCombined = model.operator != null;\n var translate = this.localeService.getLocaleTextFunc();\n if (isCombined) {\n var combinedModel = model;\n var conditions = combinedModel.conditions;\n if (!conditions) {\n var condition1 = combinedModel.condition1, condition2 = combinedModel.condition2;\n conditions = [condition1, condition2];\n }\n var customOptions = conditions.map(function (condition) { return _this.getModelAsString(condition); });\n var joinOperatorTranslateKey = combinedModel.operator === 'AND' ? 'andCondition' : 'orCondition';\n return customOptions.join(\" \" + translate(joinOperatorTranslateKey, DEFAULT_FILTER_LOCALE_TEXT[joinOperatorTranslateKey]) + \" \");\n }\n else if (model.type === SimpleFilter.BLANK || model.type === SimpleFilter.NOT_BLANK) {\n return translate(model.type, model.type);\n }\n else {\n var condition = model;\n var customOption = this.optionsFactory.getCustomOption(condition.type);\n // For custom filter options we display the Name of the filter instead\n // of displaying the `from` value, as it wouldn't be relevant\n var _a = customOption || {}, displayKey = _a.displayKey, displayName = _a.displayName, numberOfInputs = _a.numberOfInputs;\n if (displayKey && displayName && numberOfInputs === 0) {\n translate(displayKey, displayName);\n return displayName;\n }\n return this.conditionToString(condition, customOption);\n }\n };\n return SimpleFilterModelFormatter;\n}());\n/**\n * Every filter with a dropdown where the user can specify a comparing type against the filter values.\n *\n * @param M type of filter-model managed by the concrete sub-class that extends this type\n * @param V type of value managed by the concrete sub-class that extends this type\n * @param E type of UI element used for collecting user-input\n */\nvar SimpleFilter = /** @class */ (function (_super) {\n __extends$2y(SimpleFilter, _super);\n function SimpleFilter() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.eTypes = [];\n _this.eJoinOperatorPanels = [];\n _this.eJoinOperatorsAnd = [];\n _this.eJoinOperatorsOr = [];\n _this.eConditionBodies = [];\n _this.listener = function () { return _this.onUiChanged(); };\n _this.lastUiCompletePosition = null;\n _this.joinOperatorId = 0;\n return _this;\n }\n SimpleFilter.prototype.getNumberOfInputs = function (type) {\n var customOpts = this.optionsFactory.getCustomOption(type);\n if (customOpts) {\n var numberOfInputs = customOpts.numberOfInputs;\n return numberOfInputs != null ? numberOfInputs : 1;\n }\n var zeroInputTypes = [\n SimpleFilter.EMPTY, SimpleFilter.NOT_BLANK, SimpleFilter.BLANK,\n ];\n if (type && zeroInputTypes.indexOf(type) >= 0) {\n return 0;\n }\n else if (type === SimpleFilter.IN_RANGE) {\n return 2;\n }\n return 1;\n };\n // floating filter calls this when user applies filter from floating filter\n SimpleFilter.prototype.onFloatingFilterChanged = function (type, value) {\n this.setTypeFromFloatingFilter(type);\n this.setValueFromFloatingFilter(value);\n this.onUiChanged(true);\n };\n SimpleFilter.prototype.setTypeFromFloatingFilter = function (type) {\n var _this = this;\n this.eTypes.forEach(function (eType, position) {\n if (position === 0) {\n eType.setValue(type, true);\n }\n else {\n eType.setValue(_this.optionsFactory.getDefaultOption(), true);\n }\n });\n };\n SimpleFilter.prototype.getModelFromUi = function () {\n var conditions = this.getUiCompleteConditions();\n if (conditions.length === 0) {\n return null;\n }\n if (this.maxNumConditions > 1 && conditions.length > 1) {\n return {\n filterType: this.getFilterType(),\n operator: this.getJoinOperator(),\n condition1: conditions[0],\n condition2: conditions[1],\n conditions: conditions\n };\n }\n return conditions[0];\n };\n SimpleFilter.prototype.getConditionTypes = function () {\n return this.eTypes.map(function (eType) { return eType.getValue(); });\n };\n SimpleFilter.prototype.getConditionType = function (position) {\n return this.eTypes[position].getValue();\n };\n SimpleFilter.prototype.getJoinOperator = function () {\n if (this.eJoinOperatorsOr.length === 0) {\n return this.defaultJoinOperator;\n }\n return this.eJoinOperatorsOr[0].getValue() === true ? 'OR' : 'AND';\n };\n SimpleFilter.prototype.areModelsEqual = function (a, b) {\n var _this = this;\n // both are missing\n if (!a && !b) {\n return true;\n }\n // one is missing, other present\n if ((!a && b) || (a && !b)) {\n return false;\n }\n // one is combined, the other is not\n var aIsSimple = !a.operator;\n var bIsSimple = !b.operator;\n var oneSimpleOneCombined = (!aIsSimple && bIsSimple) || (aIsSimple && !bIsSimple);\n if (oneSimpleOneCombined) {\n return false;\n }\n var res;\n // otherwise both present, so compare\n if (aIsSimple) {\n var aSimple = a;\n var bSimple = b;\n res = this.areSimpleModelsEqual(aSimple, bSimple);\n }\n else {\n var aCombined = a;\n var bCombined = b;\n res = aCombined.operator === bCombined.operator\n && areEqual(aCombined.conditions, bCombined.conditions, function (aModel, bModel) { return _this.areSimpleModelsEqual(aModel, bModel); });\n }\n return res;\n };\n SimpleFilter.prototype.setModelIntoUi = function (model) {\n var _this = this;\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n if (!combinedModel.conditions) {\n combinedModel.conditions = [\n combinedModel.condition1,\n combinedModel.condition2\n ];\n }\n var numConditions = this.validateAndUpdateConditions(combinedModel.conditions);\n var numPrevConditions = this.getNumConditions();\n if (numConditions < numPrevConditions) {\n this.removeConditionsAndOperators(numConditions);\n }\n else if (numConditions > numPrevConditions) {\n for (var i = numPrevConditions; i < numConditions; i++) {\n this.createJoinOperatorPanel();\n this.createOption();\n }\n }\n var orChecked_1 = combinedModel.operator === 'OR';\n this.eJoinOperatorsAnd.forEach(function (eJoinOperatorAnd) { return eJoinOperatorAnd.setValue(!orChecked_1, true); });\n this.eJoinOperatorsOr.forEach(function (eJoinOperatorOr) { return eJoinOperatorOr.setValue(orChecked_1, true); });\n combinedModel.conditions.forEach(function (condition, position) {\n _this.eTypes[position].setValue(condition.type, true);\n _this.setConditionIntoUi(condition, position);\n });\n }\n else {\n var simpleModel = model;\n if (this.getNumConditions() > 1) {\n this.removeConditionsAndOperators(1);\n }\n this.eTypes[0].setValue(simpleModel.type, true);\n this.setConditionIntoUi(simpleModel, 0);\n }\n this.lastUiCompletePosition = this.getNumConditions() - 1;\n this.createMissingConditionsAndOperators();\n this.onUiChanged();\n return AgPromise.resolve();\n };\n SimpleFilter.prototype.validateAndUpdateConditions = function (conditions) {\n var numConditions = conditions.length;\n if (numConditions > this.maxNumConditions) {\n conditions.splice(this.maxNumConditions);\n doOnce(function () { return console.warn('AG Grid: Filter Model contains more conditions than \"filterParams.maxNumConditions\". Additional conditions have been ignored.'); }, 'simpleFilterSetModelMaxNumConditions');\n numConditions = this.maxNumConditions;\n }\n return numConditions;\n };\n SimpleFilter.prototype.doesFilterPass = function (params) {\n var _this = this;\n var _a;\n var model = this.getModel();\n if (model == null) {\n return true;\n }\n var operator = model.operator;\n var models = [];\n if (operator) {\n var combinedModel = model;\n models.push.apply(models, __spread$j(((_a = combinedModel.conditions) !== null && _a !== void 0 ? _a : [])));\n }\n else {\n models.push(model);\n }\n var combineFunction = operator && operator === 'OR' ? 'some' : 'every';\n return models[combineFunction](function (m) { return _this.individualConditionPasses(params, m); });\n };\n SimpleFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.setNumConditions(params);\n this.defaultJoinOperator = this.getDefaultJoinOperator(params.defaultJoinOperator);\n this.filterPlaceholder = params.filterPlaceholder;\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params, this.getDefaultFilterOptions());\n this.createOption();\n this.createMissingConditionsAndOperators();\n };\n SimpleFilter.prototype.setNumConditions = function (params) {\n var _a, _b;\n if (params.suppressAndOrCondition != null) {\n doOnce(function () { return console.warn('AG Grid: Since v29.2 \"filterParams.suppressAndOrCondition\" is deprecated. Use \"filterParams.maxNumConditions = 1\" instead.'); }, 'simpleFilterSuppressAndOrCondition');\n }\n if (params.alwaysShowBothConditions != null) {\n doOnce(function () { return console.warn('AG Grid: Since v29.2 \"filterParams.alwaysShowBothConditions\" is deprecated. Use \"filterParams.numAlwaysVisibleConditions = 2\" instead.'); }, 'simpleFilterAlwaysShowBothConditions');\n }\n this.maxNumConditions = (_a = params.maxNumConditions) !== null && _a !== void 0 ? _a : (params.suppressAndOrCondition ? 1 : 2);\n if (this.maxNumConditions < 1) {\n doOnce(function () { return console.warn('AG Grid: \"filterParams.maxNumConditions\" must be greater than or equal to zero.'); }, 'simpleFilterMaxNumConditions');\n this.maxNumConditions = 1;\n }\n this.numAlwaysVisibleConditions = (_b = params.numAlwaysVisibleConditions) !== null && _b !== void 0 ? _b : (params.alwaysShowBothConditions ? 2 : 1);\n if (this.numAlwaysVisibleConditions < 1) {\n doOnce(function () { return console.warn('AG Grid: \"filterParams.numAlwaysVisibleConditions\" must be greater than or equal to zero.'); }, 'simpleFilterNumAlwaysVisibleConditions');\n this.numAlwaysVisibleConditions = 1;\n }\n if (this.numAlwaysVisibleConditions > this.maxNumConditions) {\n doOnce(function () { return console.warn('AG Grid: \"filterParams.numAlwaysVisibleConditions\" cannot be greater than \"filterParams.maxNumConditions\".'); }, 'simpleFilterNumAlwaysVisibleGreaterThanMaxNumConditions');\n this.numAlwaysVisibleConditions = this.maxNumConditions;\n }\n };\n SimpleFilter.prototype.createOption = function () {\n var _this = this;\n var eType = this.createManagedBean(new AgSelect());\n this.eTypes.push(eType);\n eType.addCssClass('ag-filter-select');\n this.eFilterBody.appendChild(eType.getGui());\n var eConditionBody = this.createValueElement();\n this.eConditionBodies.push(eConditionBody);\n this.eFilterBody.appendChild(eConditionBody);\n this.putOptionsIntoDropdown(eType);\n this.resetType(eType);\n var position = this.getNumConditions() - 1;\n this.forEachPositionInput(position, function (element) { return _this.resetInput(element); });\n this.addChangedListeners(eType, position);\n };\n SimpleFilter.prototype.createJoinOperatorPanel = function () {\n var eJoinOperatorPanel = document.createElement('div');\n this.eJoinOperatorPanels.push(eJoinOperatorPanel);\n eJoinOperatorPanel.classList.add('ag-filter-condition');\n var eJoinOperatorAnd = this.createJoinOperator(this.eJoinOperatorsAnd, eJoinOperatorPanel, 'and');\n var eJoinOperatorOr = this.createJoinOperator(this.eJoinOperatorsOr, eJoinOperatorPanel, 'or');\n this.eFilterBody.appendChild(eJoinOperatorPanel);\n var index = this.eJoinOperatorPanels.length - 1;\n var uniqueGroupId = this.joinOperatorId++;\n this.resetJoinOperatorAnd(eJoinOperatorAnd, index, uniqueGroupId);\n this.resetJoinOperatorOr(eJoinOperatorOr, index, uniqueGroupId);\n if (!this.isReadOnly()) {\n eJoinOperatorAnd.onValueChange(this.listener);\n eJoinOperatorOr.onValueChange(this.listener);\n }\n };\n SimpleFilter.prototype.createJoinOperator = function (eJoinOperators, eJoinOperatorPanel, andOr) {\n var eJoinOperator = this.createManagedBean(new AgRadioButton());\n eJoinOperators.push(eJoinOperator);\n eJoinOperator.addCssClass('ag-filter-condition-operator');\n eJoinOperator.addCssClass(\"ag-filter-condition-operator-\" + andOr);\n eJoinOperatorPanel.appendChild(eJoinOperator.getGui());\n return eJoinOperator;\n };\n SimpleFilter.prototype.getDefaultJoinOperator = function (defaultJoinOperator) {\n return defaultJoinOperator === 'AND' || defaultJoinOperator === 'OR' ? defaultJoinOperator : 'AND';\n };\n SimpleFilter.prototype.putOptionsIntoDropdown = function (eType) {\n var _this = this;\n var filterOptions = this.optionsFactory.getFilterOptions();\n // Add specified options to all condition drop-downs.\n filterOptions.forEach(function (option) {\n var listOption = typeof option === 'string' ?\n _this.createBoilerplateListOption(option) :\n _this.createCustomListOption(option);\n eType.addOption(listOption);\n });\n // Make drop-downs read-only if there is only one option.\n eType.setDisabled(filterOptions.length <= 1);\n };\n SimpleFilter.prototype.createBoilerplateListOption = function (option) {\n return { value: option, text: this.translate(option) };\n };\n SimpleFilter.prototype.createCustomListOption = function (option) {\n var displayKey = option.displayKey;\n var customOption = this.optionsFactory.getCustomOption(option.displayKey);\n return {\n value: displayKey,\n text: customOption ?\n this.localeService.getLocaleTextFunc()(customOption.displayKey, customOption.displayName) :\n this.translate(displayKey),\n };\n };\n /**\n * @deprecated As of v29.2 filters can have more than two conditions. Check `colDef.filterParams.maxNumConditions` instead.\n */\n SimpleFilter.prototype.isAllowTwoConditions = function () {\n return this.maxNumConditions >= 2;\n };\n SimpleFilter.prototype.createBodyTemplate = function () {\n // created dynamically\n return '';\n };\n SimpleFilter.prototype.getCssIdentifier = function () {\n return 'simple-filter';\n };\n SimpleFilter.prototype.updateUiVisibility = function () {\n var joinOperator = this.getJoinOperator();\n this.updateNumConditions();\n // from here, the number of elements in all the collections is correct, so can just update the values/statuses\n this.updateConditionStatusesAndValues(this.lastUiCompletePosition, joinOperator);\n };\n SimpleFilter.prototype.updateNumConditions = function () {\n var _a;\n // Collection sizes are already correct if updated via API, so only need to handle UI updates here\n var lastUiCompletePosition = -1;\n var areAllConditionsUiComplete = true;\n for (var position = 0; position < this.getNumConditions(); position++) {\n if (this.isConditionUiComplete(position)) {\n lastUiCompletePosition = position;\n }\n else {\n areAllConditionsUiComplete = false;\n }\n }\n if (this.shouldAddNewConditionAtEnd(areAllConditionsUiComplete)) {\n this.createJoinOperatorPanel();\n this.createOption();\n }\n else {\n var activePosition = (_a = this.lastUiCompletePosition) !== null && _a !== void 0 ? _a : this.getNumConditions() - 2;\n if (lastUiCompletePosition < activePosition) {\n // remove any incomplete conditions at the end, excluding the active position\n this.removeConditionsAndOperators(activePosition + 1);\n var removeStartPosition = lastUiCompletePosition + 1;\n var numConditionsToRemove = activePosition - removeStartPosition;\n if (numConditionsToRemove > 0) {\n this.removeConditionsAndOperators(removeStartPosition, numConditionsToRemove);\n }\n this.createMissingConditionsAndOperators();\n }\n }\n this.lastUiCompletePosition = lastUiCompletePosition;\n };\n SimpleFilter.prototype.updateConditionStatusesAndValues = function (lastUiCompletePosition, joinOperator) {\n var _this = this;\n this.eTypes.forEach(function (eType, position) {\n var disabled = _this.isConditionDisabled(position, lastUiCompletePosition);\n var group = position === 1 ? [eType, _this.eJoinOperatorPanels[0], _this.eJoinOperatorsAnd[0], _this.eJoinOperatorsOr[0]] : [eType];\n group.forEach(function (element) {\n if (element instanceof AgAbstractInputField || element instanceof AgSelect) {\n element.setDisabled(disabled);\n }\n else {\n setDisabled(element, disabled);\n }\n });\n });\n this.eConditionBodies.forEach(function (element, index) {\n setDisplayed(element, _this.isConditionBodyVisible(index));\n });\n var orChecked = (joinOperator !== null && joinOperator !== void 0 ? joinOperator : this.getJoinOperator()) === 'OR';\n this.eJoinOperatorsAnd.forEach(function (eJoinOperatorAnd, index) {\n eJoinOperatorAnd.setValue(!orChecked, true);\n });\n this.eJoinOperatorsOr.forEach(function (eJoinOperatorOr, index) {\n eJoinOperatorOr.setValue(orChecked, true);\n });\n this.forEachInput(function (element, index, position, numberOfInputs) {\n _this.setElementDisplayed(element, index < numberOfInputs);\n _this.setElementDisabled(element, _this.isConditionDisabled(position, lastUiCompletePosition));\n });\n this.resetPlaceholder();\n };\n SimpleFilter.prototype.shouldAddNewConditionAtEnd = function (areAllConditionsUiComplete) {\n return areAllConditionsUiComplete && this.getNumConditions() < this.maxNumConditions && !this.isReadOnly();\n };\n SimpleFilter.prototype.removeConditionsAndOperators = function (startPosition, deleteCount) {\n if (startPosition >= this.getNumConditions()) {\n return;\n }\n this.removeComponents(this.eTypes, startPosition, deleteCount);\n this.removeElements(this.eConditionBodies, startPosition, deleteCount);\n this.removeValueElements(startPosition, deleteCount);\n var joinOperatorIndex = Math.max(startPosition - 1, 0);\n this.removeElements(this.eJoinOperatorPanels, joinOperatorIndex, deleteCount);\n this.removeComponents(this.eJoinOperatorsAnd, joinOperatorIndex, deleteCount);\n this.removeComponents(this.eJoinOperatorsOr, joinOperatorIndex, deleteCount);\n };\n SimpleFilter.prototype.removeElements = function (elements, startPosition, deleteCount) {\n var removedElements = this.removeItems(elements, startPosition, deleteCount);\n removedElements.forEach(function (element) { return removeFromParent(element); });\n };\n SimpleFilter.prototype.removeComponents = function (components, startPosition, deleteCount) {\n var _this = this;\n var removedComponents = this.removeItems(components, startPosition, deleteCount);\n removedComponents.forEach(function (comp) {\n removeFromParent(comp.getGui());\n _this.destroyBean(comp);\n });\n };\n SimpleFilter.prototype.removeItems = function (items, startPosition, deleteCount) {\n return deleteCount == null ? items.splice(startPosition) : items.splice(startPosition, deleteCount);\n };\n SimpleFilter.prototype.afterGuiAttached = function (params) {\n _super.prototype.afterGuiAttached.call(this, params);\n this.resetPlaceholder();\n if (!params || (!params.suppressFocus && !this.isReadOnly())) {\n var firstInput = this.getInputs(0)[0];\n if (!firstInput) {\n return;\n }\n if (firstInput instanceof AgAbstractInputField) {\n firstInput.getInputElement().focus();\n }\n }\n };\n SimpleFilter.prototype.afterGuiDetached = function () {\n _super.prototype.afterGuiDetached.call(this);\n var appliedModel = this.getModel();\n if (!this.areModelsEqual(appliedModel, this.getModelFromUi())) {\n this.resetUiToActiveModel(appliedModel);\n }\n // remove incomplete positions\n var lastUiCompletePosition = -1;\n // as we remove incomplete positions, the last UI complete position will change\n var updatedLastUiCompletePosition = -1;\n var conditionsRemoved = false;\n var joinOperator = this.getJoinOperator();\n for (var position = this.getNumConditions() - 1; position >= 0; position--) {\n if (this.isConditionUiComplete(position)) {\n if (lastUiCompletePosition === -1) {\n lastUiCompletePosition = position;\n updatedLastUiCompletePosition = position;\n }\n }\n else {\n var shouldRemovePositionAtEnd = position >= this.numAlwaysVisibleConditions && !this.isConditionUiComplete(position - 1);\n var positionBeforeLastUiCompletePosition = position < lastUiCompletePosition;\n if (shouldRemovePositionAtEnd || positionBeforeLastUiCompletePosition) {\n this.removeConditionsAndOperators(position, 1);\n conditionsRemoved = true;\n if (positionBeforeLastUiCompletePosition) {\n updatedLastUiCompletePosition--;\n }\n }\n }\n }\n var shouldUpdateConditionStatusesAndValues = false;\n if (this.getNumConditions() < this.numAlwaysVisibleConditions) {\n // if conditions have been removed, need to recreate new ones at the end up to the number required\n this.createMissingConditionsAndOperators();\n shouldUpdateConditionStatusesAndValues = true;\n }\n if (this.shouldAddNewConditionAtEnd(updatedLastUiCompletePosition === this.getNumConditions() - 1)) {\n this.createJoinOperatorPanel();\n this.createOption();\n shouldUpdateConditionStatusesAndValues = true;\n }\n if (shouldUpdateConditionStatusesAndValues) {\n this.updateConditionStatusesAndValues(updatedLastUiCompletePosition, joinOperator);\n }\n if (conditionsRemoved) {\n this.updateJoinOperatorsDisabled();\n }\n this.lastUiCompletePosition = updatedLastUiCompletePosition;\n };\n SimpleFilter.prototype.getPlaceholderText = function (defaultPlaceholder, position) {\n var placeholder = this.translate(defaultPlaceholder);\n if (isFunction(this.filterPlaceholder)) {\n var filterPlaceholderFn = this.filterPlaceholder;\n var filterOptionKey = this.eTypes[position].getValue();\n var filterOption = this.translate(filterOptionKey);\n placeholder = filterPlaceholderFn({\n filterOptionKey: filterOptionKey,\n filterOption: filterOption,\n placeholder: placeholder\n });\n }\n else if (typeof this.filterPlaceholder === 'string') {\n placeholder = this.filterPlaceholder;\n }\n return placeholder;\n };\n // allow sub-classes to reset HTML placeholders after UI update.\n SimpleFilter.prototype.resetPlaceholder = function () {\n var _this = this;\n var globalTranslate = this.localeService.getLocaleTextFunc();\n this.forEachInput(function (element, index, position, numberOfInputs) {\n if (!(element instanceof AgAbstractInputField)) {\n return;\n }\n var placeholder = index === 0 && numberOfInputs > 1 ? 'inRangeStart' :\n index === 0 ? 'filterOoo' :\n 'inRangeEnd';\n var ariaLabel = index === 0 && numberOfInputs > 1 ? globalTranslate('ariaFilterFromValue', 'Filter from value') :\n index === 0 ? globalTranslate('ariaFilterValue', 'Filter Value') :\n globalTranslate('ariaFilterToValue', 'Filter to Value');\n element.setInputPlaceholder(_this.getPlaceholderText(placeholder, position));\n element.setInputAriaLabel(ariaLabel);\n });\n };\n SimpleFilter.prototype.setElementValue = function (element, value) {\n if (element instanceof AgAbstractInputField) {\n element.setValue(value != null ? String(value) : null, true);\n }\n };\n SimpleFilter.prototype.setElementDisplayed = function (element, displayed) {\n if (element instanceof Component) {\n setDisplayed(element.getGui(), displayed);\n }\n };\n SimpleFilter.prototype.setElementDisabled = function (element, disabled) {\n if (element instanceof Component) {\n setDisabled(element.getGui(), disabled);\n }\n };\n SimpleFilter.prototype.attachElementOnChange = function (element, listener) {\n if (element instanceof AgAbstractInputField) {\n element.onValueChange(listener);\n }\n };\n SimpleFilter.prototype.forEachInput = function (cb) {\n var _this = this;\n this.getConditionTypes().forEach(function (type, position) {\n _this.forEachPositionTypeInput(position, type, cb);\n });\n };\n SimpleFilter.prototype.forEachPositionInput = function (position, cb) {\n var type = this.getConditionType(position);\n this.forEachPositionTypeInput(position, type, cb);\n };\n SimpleFilter.prototype.forEachPositionTypeInput = function (position, type, cb) {\n var numberOfInputs = this.getNumberOfInputs(type);\n var inputs = this.getInputs(position);\n for (var index = 0; index < inputs.length; index++) {\n var input = inputs[index];\n if (input != null) {\n cb(input, index, position, numberOfInputs);\n }\n }\n };\n SimpleFilter.prototype.isConditionDisabled = function (position, lastUiCompletePosition) {\n if (this.isReadOnly()) {\n return true;\n } // Read-only mode trumps everything.\n if (position === 0) {\n return false;\n } // Position 0 should typically be editable.\n // Only allow editing of a 2nd or later condition if the previous condition is complete and no subsequent conditions are complete.\n return position > lastUiCompletePosition + 1;\n };\n SimpleFilter.prototype.isConditionBodyVisible = function (position) {\n // Check that the condition needs inputs.\n var type = this.getConditionType(position);\n var numberOfInputs = this.getNumberOfInputs(type);\n return numberOfInputs > 0;\n };\n // returns true if the UI represents a working filter, eg all parts are filled out.\n // eg if text filter and textfield blank then returns false.\n SimpleFilter.prototype.isConditionUiComplete = function (position) {\n if (position >= this.getNumConditions()) {\n return false;\n } // Condition doesn't exist.\n var type = this.getConditionType(position);\n if (type === SimpleFilter.EMPTY) {\n return false;\n }\n if (this.getValues(position).some(function (v) { return v == null; })) {\n return false;\n }\n return true;\n };\n SimpleFilter.prototype.getNumConditions = function () {\n return this.eTypes.length;\n };\n SimpleFilter.prototype.getUiCompleteConditions = function () {\n var conditions = [];\n for (var position = 0; position < this.getNumConditions(); position++) {\n if (this.isConditionUiComplete(position)) {\n conditions.push(this.createCondition(position));\n }\n }\n return conditions;\n };\n SimpleFilter.prototype.createMissingConditionsAndOperators = function () {\n if (this.isReadOnly()) {\n return;\n } // don't show incomplete conditions when read only\n for (var i = this.getNumConditions(); i < this.numAlwaysVisibleConditions; i++) {\n this.createJoinOperatorPanel();\n this.createOption();\n }\n };\n SimpleFilter.prototype.resetUiToDefaults = function (silent) {\n var _this = this;\n this.removeConditionsAndOperators(this.isReadOnly() ? 1 : this.numAlwaysVisibleConditions);\n this.eTypes.forEach(function (eType) { return _this.resetType(eType); });\n this.eJoinOperatorsAnd.forEach(function (eJoinOperatorAnd, index) { return _this.resetJoinOperatorAnd(eJoinOperatorAnd, index, _this.joinOperatorId + index); });\n this.eJoinOperatorsOr.forEach(function (eJoinOperatorOr, index) { return _this.resetJoinOperatorOr(eJoinOperatorOr, index, _this.joinOperatorId + index); });\n this.joinOperatorId++;\n this.forEachInput(function (element) { return _this.resetInput(element); });\n this.resetPlaceholder();\n this.createMissingConditionsAndOperators();\n this.lastUiCompletePosition = null;\n if (!silent) {\n this.onUiChanged();\n }\n return AgPromise.resolve();\n };\n SimpleFilter.prototype.resetType = function (eType) {\n var translate = this.localeService.getLocaleTextFunc();\n var filteringLabel = translate('ariaFilteringOperator', 'Filtering operator');\n eType\n .setValue(this.optionsFactory.getDefaultOption(), true)\n .setAriaLabel(filteringLabel)\n .setDisabled(this.isReadOnly());\n };\n SimpleFilter.prototype.resetJoinOperatorAnd = function (eJoinOperatorAnd, index, uniqueGroupId) {\n this.resetJoinOperator(eJoinOperatorAnd, index, this.isDefaultOperator('AND'), this.translate('andCondition'), uniqueGroupId);\n };\n SimpleFilter.prototype.resetJoinOperatorOr = function (eJoinOperatorOr, index, uniqueGroupId) {\n this.resetJoinOperator(eJoinOperatorOr, index, this.isDefaultOperator('OR'), this.translate('orCondition'), uniqueGroupId);\n };\n SimpleFilter.prototype.resetJoinOperator = function (eJoinOperator, index, value, label, uniqueGroupId) {\n this.updateJoinOperatorDisabled(eJoinOperator\n .setValue(value, true)\n .setName(\"ag-simple-filter-and-or-\" + this.getCompId() + \"-\" + uniqueGroupId)\n .setLabel(label), index);\n };\n SimpleFilter.prototype.updateJoinOperatorsDisabled = function () {\n var _this = this;\n this.eJoinOperatorsAnd.forEach(function (eJoinOperator, index) { return _this.updateJoinOperatorDisabled(eJoinOperator, index); });\n this.eJoinOperatorsOr.forEach(function (eJoinOperator, index) { return _this.updateJoinOperatorDisabled(eJoinOperator, index); });\n };\n SimpleFilter.prototype.updateJoinOperatorDisabled = function (eJoinOperator, index) {\n eJoinOperator.setDisabled(this.isReadOnly() || index > 0);\n };\n SimpleFilter.prototype.resetInput = function (element) {\n this.setElementValue(element, null);\n this.setElementDisabled(element, this.isReadOnly());\n };\n // puts model values into the UI\n SimpleFilter.prototype.setConditionIntoUi = function (model, position) {\n var _this = this;\n var values = this.mapValuesFromModel(model);\n this.forEachInput(function (element, index, elPosition, _) {\n if (elPosition !== position) {\n return;\n }\n _this.setElementValue(element, values[index] != null ? values[index] : null);\n });\n };\n // after floating filter changes, this sets the 'value' section. this is implemented by the base class\n // (as that's where value is controlled), the 'type' part from the floating filter is dealt with in this class.\n SimpleFilter.prototype.setValueFromFloatingFilter = function (value) {\n var _this = this;\n this.forEachInput(function (element, index, position, _) {\n _this.setElementValue(element, index === 0 && position === 0 ? value : null);\n });\n };\n SimpleFilter.prototype.isDefaultOperator = function (operator) {\n return operator === this.defaultJoinOperator;\n };\n SimpleFilter.prototype.addChangedListeners = function (eType, position) {\n var _this = this;\n if (this.isReadOnly()) {\n return;\n }\n eType.onValueChange(this.listener);\n this.forEachPositionInput(position, function (element) {\n _this.attachElementOnChange(element, _this.listener);\n });\n };\n /** returns true if the row passes the said condition */\n SimpleFilter.prototype.individualConditionPasses = function (params, filterModel) {\n var cellValue = this.getCellValue(params.node);\n var values = this.mapValuesFromModel(filterModel);\n var customFilterOption = this.optionsFactory.getCustomOption(filterModel.type);\n var customFilterResult = this.evaluateCustomFilter(customFilterOption, values, cellValue);\n if (customFilterResult != null) {\n return customFilterResult;\n }\n if (cellValue == null) {\n return this.evaluateNullValue(filterModel.type);\n }\n return this.evaluateNonNullValue(values, cellValue, filterModel, params);\n };\n SimpleFilter.prototype.evaluateCustomFilter = function (customFilterOption, values, cellValue) {\n if (customFilterOption == null) {\n return;\n }\n var predicate = customFilterOption.predicate;\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (predicate != null && !values.some(function (v) { return v == null; })) {\n return predicate(values, cellValue);\n }\n // No custom filter invocation, indicate that to the caller.\n return;\n };\n SimpleFilter.prototype.isBlank = function (cellValue) {\n return cellValue == null ||\n (typeof cellValue === 'string' && cellValue.trim().length === 0);\n };\n SimpleFilter.EMPTY = 'empty';\n SimpleFilter.BLANK = 'blank';\n SimpleFilter.NOT_BLANK = 'notBlank';\n SimpleFilter.EQUALS = 'equals';\n SimpleFilter.NOT_EQUAL = 'notEqual';\n SimpleFilter.LESS_THAN = 'lessThan';\n SimpleFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\n SimpleFilter.GREATER_THAN = 'greaterThan';\n SimpleFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\n SimpleFilter.IN_RANGE = 'inRange';\n SimpleFilter.CONTAINS = 'contains';\n SimpleFilter.NOT_CONTAINS = 'notContains';\n SimpleFilter.STARTS_WITH = 'startsWith';\n SimpleFilter.ENDS_WITH = 'endsWith';\n return SimpleFilter;\n}(ProvidedFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2x = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar ScalarFilter = /** @class */ (function (_super) {\n __extends$2x(ScalarFilter, _super);\n function ScalarFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ScalarFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.scalarFilterParams = params;\n };\n ScalarFilter.prototype.evaluateNullValue = function (filterType) {\n switch (filterType) {\n case ScalarFilter.EQUALS:\n case ScalarFilter.NOT_EQUAL:\n if (this.scalarFilterParams.includeBlanksInEquals) {\n return true;\n }\n break;\n case ScalarFilter.GREATER_THAN:\n case ScalarFilter.GREATER_THAN_OR_EQUAL:\n if (this.scalarFilterParams.includeBlanksInGreaterThan) {\n return true;\n }\n break;\n case ScalarFilter.LESS_THAN:\n case ScalarFilter.LESS_THAN_OR_EQUAL:\n if (this.scalarFilterParams.includeBlanksInLessThan) {\n return true;\n }\n break;\n case ScalarFilter.IN_RANGE:\n if (this.scalarFilterParams.includeBlanksInRange) {\n return true;\n }\n break;\n case ScalarFilter.BLANK:\n return true;\n case ScalarFilter.NOT_BLANK:\n return false;\n }\n return false;\n };\n ScalarFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel) {\n var comparator = this.comparator();\n var compareResult = values[0] != null ? comparator(values[0], cellValue) : 0;\n switch (filterModel.type) {\n case ScalarFilter.EQUALS:\n return compareResult === 0;\n case ScalarFilter.NOT_EQUAL:\n return compareResult !== 0;\n case ScalarFilter.GREATER_THAN:\n return compareResult > 0;\n case ScalarFilter.GREATER_THAN_OR_EQUAL:\n return compareResult >= 0;\n case ScalarFilter.LESS_THAN:\n return compareResult < 0;\n case ScalarFilter.LESS_THAN_OR_EQUAL:\n return compareResult <= 0;\n case ScalarFilter.IN_RANGE: {\n var compareToResult = comparator(values[1], cellValue);\n return this.scalarFilterParams.inRangeInclusive ?\n compareResult >= 0 && compareToResult <= 0 :\n compareResult > 0 && compareToResult < 0;\n }\n case ScalarFilter.BLANK:\n return this.isBlank(cellValue);\n case ScalarFilter.NOT_BLANK:\n return !this.isBlank(cellValue);\n default:\n console.warn('AG Grid: Unexpected type of filter \"' + filterModel.type + '\", it looks like the filter was configured with incorrect Filter Options');\n return true;\n }\n };\n return ScalarFilter;\n}(SimpleFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2w = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$g = (undefined && undefined.__assign) || function () {\n __assign$g = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$g.apply(this, arguments);\n};\nvar __decorate$2c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DEFAULT_MIN_YEAR = 1000;\nvar DEFAULT_MAX_YEAR = Infinity;\nvar DateFilterModelFormatter = /** @class */ (function (_super) {\n __extends$2w(DateFilterModelFormatter, _super);\n function DateFilterModelFormatter(dateFilterParams, localeService, optionsFactory) {\n var _this = _super.call(this, localeService, optionsFactory) || this;\n _this.dateFilterParams = dateFilterParams;\n return _this;\n }\n DateFilterModelFormatter.prototype.conditionToString = function (condition, options) {\n var type = condition.type;\n var numberOfInputs = (options || {}).numberOfInputs;\n var isRange = type == SimpleFilter.IN_RANGE || numberOfInputs === 2;\n var dateFrom = parseDateTimeFromString(condition.dateFrom);\n var dateTo = parseDateTimeFromString(condition.dateTo);\n var format = this.dateFilterParams.inRangeFloatingFilterDateFormat;\n if (isRange) {\n var formattedFrom = dateFrom !== null ? dateToFormattedString(dateFrom, format) : 'null';\n var formattedTo = dateTo !== null ? dateToFormattedString(dateTo, format) : 'null';\n return formattedFrom + \"-\" + formattedTo;\n }\n if (dateFrom != null) {\n return dateToFormattedString(dateFrom, format);\n }\n // cater for when the type doesn't need a value\n return \"\" + type;\n };\n return DateFilterModelFormatter;\n}(SimpleFilterModelFormatter));\nvar DateFilter = /** @class */ (function (_super) {\n __extends$2w(DateFilter, _super);\n function DateFilter() {\n var _this = _super.call(this, 'dateFilter') || this;\n _this.eConditionPanelsFrom = [];\n _this.eConditionPanelsTo = [];\n _this.dateConditionFromComps = [];\n _this.dateConditionToComps = [];\n _this.minValidYear = DEFAULT_MIN_YEAR;\n _this.maxValidYear = DEFAULT_MAX_YEAR;\n return _this;\n }\n DateFilter.prototype.afterGuiAttached = function (params) {\n _super.prototype.afterGuiAttached.call(this, params);\n this.dateConditionFromComps[0].afterGuiAttached(params);\n };\n DateFilter.prototype.mapValuesFromModel = function (filterModel) {\n // unlike the other filters, we do two things here:\n // 1) allow for different attribute names (same as done for other filters) (eg the 'from' and 'to'\n // are in different locations in Date and Number filter models)\n // 2) convert the type (because Date filter uses Dates, however model is 'string')\n //\n // NOTE: The conversion of string to date also removes the timezone - i.e. when user picks\n // a date from the UI, it will have timezone info in it. This is lost when creating\n // the model. When we recreate the date again here, it's without a timezone.\n var _a = filterModel || {}, dateFrom = _a.dateFrom, dateTo = _a.dateTo, type = _a.type;\n return [\n dateFrom && parseDateTimeFromString(dateFrom) || null,\n dateTo && parseDateTimeFromString(dateTo) || null,\n ].slice(0, this.getNumberOfInputs(type));\n };\n DateFilter.prototype.comparator = function () {\n return this.dateFilterParams.comparator ? this.dateFilterParams.comparator : this.defaultComparator.bind(this);\n };\n DateFilter.prototype.defaultComparator = function (filterDate, cellValue) {\n // The default comparator assumes that the cellValue is a date\n var cellAsDate = cellValue;\n if (cellValue == null || cellAsDate < filterDate) {\n return -1;\n }\n if (cellAsDate > filterDate) {\n return 1;\n }\n return 0;\n };\n DateFilter.prototype.setParams = function (params) {\n this.dateFilterParams = params;\n _super.prototype.setParams.call(this, params);\n var yearParser = function (param, fallback) {\n if (params[param] != null) {\n if (!isNaN(params[param])) {\n return params[param] == null ? fallback : Number(params[param]);\n }\n else {\n console.warn(\"AG Grid: DateFilter \" + param + \" is not a number\");\n }\n }\n return fallback;\n };\n this.minValidYear = yearParser('minValidYear', DEFAULT_MIN_YEAR);\n this.maxValidYear = yearParser('maxValidYear', DEFAULT_MAX_YEAR);\n if (this.minValidYear > this.maxValidYear) {\n console.warn(\"AG Grid: DateFilter minValidYear should be <= maxValidYear\");\n }\n this.filterModelFormatter = new DateFilterModelFormatter(this.dateFilterParams, this.localeService, this.optionsFactory);\n };\n DateFilter.prototype.createDateCompWrapper = function (element) {\n var _this = this;\n var dateCompWrapper = new DateCompWrapper(this.getContext(), this.userComponentFactory, {\n onDateChanged: function () { return _this.onUiChanged(); },\n filterParams: this.dateFilterParams\n }, element);\n this.addDestroyFunc(function () { return dateCompWrapper.destroy(); });\n return dateCompWrapper;\n };\n DateFilter.prototype.setElementValue = function (element, value) {\n element.setDate(value);\n };\n DateFilter.prototype.setElementDisplayed = function (element, displayed) {\n element.setDisplayed(displayed);\n };\n DateFilter.prototype.setElementDisabled = function (element, disabled) {\n element.setDisabled(disabled);\n };\n DateFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFilter.prototype.createValueElement = function () {\n var eCondition = document.createElement('div');\n eCondition.classList.add('ag-filter-body');\n this.createFromToElement(eCondition, this.eConditionPanelsFrom, this.dateConditionFromComps, 'from');\n this.createFromToElement(eCondition, this.eConditionPanelsTo, this.dateConditionToComps, 'to');\n return eCondition;\n };\n DateFilter.prototype.createFromToElement = function (eCondition, eConditionPanels, dateConditionComps, fromTo) {\n var eConditionPanel = document.createElement('div');\n eConditionPanel.classList.add(\"ag-filter-\" + fromTo);\n eConditionPanel.classList.add(\"ag-filter-date-\" + fromTo);\n eConditionPanels.push(eConditionPanel);\n eCondition.appendChild(eConditionPanel);\n dateConditionComps.push(this.createDateCompWrapper(eConditionPanel));\n };\n DateFilter.prototype.removeValueElements = function (startPosition, deleteCount) {\n this.removeDateComps(this.dateConditionFromComps, startPosition, deleteCount);\n this.removeDateComps(this.dateConditionToComps, startPosition, deleteCount);\n this.removeItems(this.eConditionPanelsFrom, startPosition, deleteCount);\n this.removeItems(this.eConditionPanelsTo, startPosition, deleteCount);\n };\n DateFilter.prototype.removeDateComps = function (components, startPosition, deleteCount) {\n var removedComponents = this.removeItems(components, startPosition, deleteCount);\n removedComponents.forEach(function (comp) { return comp.destroy(); });\n };\n DateFilter.prototype.isConditionUiComplete = function (position) {\n var _this = this;\n if (!_super.prototype.isConditionUiComplete.call(this, position)) {\n return false;\n }\n var isValidDate = function (value) { return value != null\n && value.getUTCFullYear() >= _this.minValidYear\n && value.getUTCFullYear() <= _this.maxValidYear; };\n var valid = true;\n this.forEachInput(function (element, index, elPosition, numberOfInputs) {\n if (elPosition !== position || !valid || index >= numberOfInputs) {\n return;\n }\n valid = valid && isValidDate(element.getDate());\n });\n return valid;\n };\n DateFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.dateFrom === bSimple.dateFrom\n && aSimple.dateTo === bSimple.dateTo\n && aSimple.type === bSimple.type;\n };\n DateFilter.prototype.getFilterType = function () {\n return 'date';\n };\n DateFilter.prototype.createCondition = function (position) {\n var type = this.getConditionType(position);\n var model = {};\n var values = this.getValues(position);\n if (values.length > 0) {\n model.dateFrom = serialiseDate(values[0]);\n }\n if (values.length > 1) {\n model.dateTo = serialiseDate(values[1]);\n }\n return __assign$g({ dateFrom: null, dateTo: null, filterType: this.getFilterType(), type: type }, model);\n };\n DateFilter.prototype.resetPlaceholder = function () {\n var globalTranslate = this.localeService.getLocaleTextFunc();\n var placeholder = this.translate('dateFormatOoo');\n var ariaLabel = globalTranslate('ariaFilterValue', 'Filter Value');\n this.forEachInput(function (element) {\n element.setInputPlaceholder(placeholder);\n element.setInputAriaLabel(ariaLabel);\n });\n };\n DateFilter.prototype.getInputs = function (position) {\n if (position >= this.dateConditionFromComps.length) {\n return [null, null];\n }\n return [this.dateConditionFromComps[position], this.dateConditionToComps[position]];\n };\n DateFilter.prototype.getValues = function (position) {\n var result = [];\n this.forEachPositionInput(position, function (element, index, _elPosition, numberOfInputs) {\n if (index < numberOfInputs) {\n result.push(element.getDate());\n }\n });\n return result;\n };\n DateFilter.prototype.getModelAsString = function (model) {\n var _a;\n return (_a = this.filterModelFormatter.getModelAsString(model)) !== null && _a !== void 0 ? _a : '';\n };\n DateFilter.DEFAULT_FILTER_OPTIONS = [\n ScalarFilter.EQUALS,\n ScalarFilter.GREATER_THAN,\n ScalarFilter.LESS_THAN,\n ScalarFilter.NOT_EQUAL,\n ScalarFilter.IN_RANGE,\n ScalarFilter.BLANK,\n ScalarFilter.NOT_BLANK,\n ];\n __decorate$2c([\n Autowired('userComponentFactory')\n ], DateFilter.prototype, \"userComponentFactory\", void 0);\n return DateFilter;\n}(ScalarFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2v = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar SimpleFloatingFilter = /** @class */ (function (_super) {\n __extends$2v(SimpleFloatingFilter, _super);\n function SimpleFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SimpleFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n SimpleFloatingFilter.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n SimpleFloatingFilter.prototype.isEventFromFloatingFilter = function (event) {\n return event && event.afterFloatingFilter;\n };\n SimpleFloatingFilter.prototype.isEventFromDataChange = function (event) {\n return event === null || event === void 0 ? void 0 : event.afterDataChange;\n };\n SimpleFloatingFilter.prototype.getLastType = function () {\n return this.lastType;\n };\n SimpleFloatingFilter.prototype.isReadOnly = function () {\n return this.readOnly;\n };\n SimpleFloatingFilter.prototype.setLastTypeFromModel = function (model) {\n // if no model provided by the parent filter use default\n if (!model) {\n this.lastType = this.optionsFactory.getDefaultOption();\n return;\n }\n var isCombined = model.operator;\n var condition;\n if (isCombined) {\n var combinedModel = model;\n condition = combinedModel.conditions[0];\n }\n else {\n condition = model;\n }\n this.lastType = condition.type;\n };\n SimpleFloatingFilter.prototype.canWeEditAfterModelFromParentFilter = function (model) {\n if (!model) {\n // if no model, then we can edit as long as the lastType is something we can edit, as this\n // is the type we will provide to the parent filter if the user decides to use the floating filter.\n return this.isTypeEditable(this.lastType);\n }\n // never allow editing if the filter is combined (ie has two parts)\n var isCombined = model.operator;\n if (isCombined) {\n return false;\n }\n var simpleModel = model;\n return this.isTypeEditable(simpleModel.type);\n };\n SimpleFloatingFilter.prototype.init = function (params) {\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params.filterParams, this.getDefaultFilterOptions());\n this.lastType = this.optionsFactory.getDefaultOption();\n // readOnly is a property of ProvidedFilterParams - we need to find a better (type-safe)\n // way to support reading this in the future.\n this.readOnly = !!params.filterParams.readOnly;\n // we are editable if:\n // 1) there is a type (user has configured filter wrong if not type)\n // AND\n // 2) the default type is not 'in range'\n var editable = this.isTypeEditable(this.lastType);\n this.setEditable(editable);\n };\n SimpleFloatingFilter.prototype.doesFilterHaveSingleInput = function (filterType) {\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n var numberOfInputs = (customFilterOption || {}).numberOfInputs;\n return numberOfInputs == null || numberOfInputs == 1;\n };\n SimpleFloatingFilter.prototype.isTypeEditable = function (type) {\n var uneditableTypes = [\n SimpleFilter.IN_RANGE, SimpleFilter.EMPTY, SimpleFilter.BLANK, SimpleFilter.NOT_BLANK,\n ];\n return !!type &&\n !this.isReadOnly() &&\n this.doesFilterHaveSingleInput(type) &&\n uneditableTypes.indexOf(type) < 0;\n };\n return SimpleFloatingFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2u = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DateFloatingFilter = /** @class */ (function (_super) {\n __extends$2u(DateFloatingFilter, _super);\n function DateFloatingFilter() {\n return _super.call(this, /* html */ \"\\n <div class=\\\"ag-floating-filter-input\\\" role=\\\"presentation\\\">\\n <ag-input-text-field ref=\\\"eReadOnlyText\\\"></ag-input-text-field>\\n <div ref=\\\"eDateWrapper\\\" style=\\\"display: flex;\\\"></div>\\n </div>\") || this;\n }\n DateFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.params = params;\n this.filterParams = params.filterParams;\n this.createDateComponent();\n var translate = this.localeService.getLocaleTextFunc();\n this.eReadOnlyText\n .setDisabled(true)\n .setInputAriaLabel(translate('ariaDateFilterInput', 'Date Filter Input'));\n this.filterModelFormatter = new DateFilterModelFormatter(this.filterParams, this.localeService, this.optionsFactory);\n };\n DateFloatingFilter.prototype.setEditable = function (editable) {\n setDisplayed(this.eDateWrapper, editable);\n setDisplayed(this.eReadOnlyText.getGui(), !editable);\n };\n DateFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n // We don't want to update the floating filter if the floating filter caused the change,\n // because the UI is already in sync. if we didn't do this, the UI would behave strangely\n // as it would be updating as the user is typing.\n // This is similar for data changes, which don't affect provided date floating filters\n if (this.isEventFromFloatingFilter(event) || this.isEventFromDataChange(event)) {\n return;\n }\n _super.prototype.setLastTypeFromModel.call(this, model);\n var allowEditing = !this.isReadOnly() &&\n this.canWeEditAfterModelFromParentFilter(model);\n this.setEditable(allowEditing);\n if (allowEditing) {\n if (model) {\n var dateModel = model;\n this.dateComp.setDate(parseDateTimeFromString(dateModel.dateFrom));\n }\n else {\n this.dateComp.setDate(null);\n }\n this.eReadOnlyText.setValue('');\n }\n else {\n this.eReadOnlyText.setValue(this.filterModelFormatter.getModelAsString(model));\n this.dateComp.setDate(null);\n }\n };\n DateFloatingFilter.prototype.onDateChanged = function () {\n var _this = this;\n var filterValueDate = this.dateComp.getDate();\n var filterValueText = serialiseDate(filterValueDate);\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n var date = parseDateTimeFromString(filterValueText);\n filterInstance.onFloatingFilterChanged(_this.getLastType() || null, date);\n }\n });\n };\n DateFloatingFilter.prototype.createDateComponent = function () {\n var _this = this;\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var dateComponentParams = {\n onDateChanged: debounce(this.onDateChanged.bind(this), debounceMs),\n filterParams: this.params.column.getColDef().filterParams\n };\n this.dateComp = new DateCompWrapper(this.getContext(), this.userComponentFactory, dateComponentParams, this.eDateWrapper);\n this.addDestroyFunc(function () { return _this.dateComp.destroy(); });\n };\n DateFloatingFilter.prototype.getFilterModelFormatter = function () {\n return this.filterModelFormatter;\n };\n __decorate$2b([\n Autowired('userComponentFactory')\n ], DateFloatingFilter.prototype, \"userComponentFactory\", void 0);\n __decorate$2b([\n RefSelector('eReadOnlyText')\n ], DateFloatingFilter.prototype, \"eReadOnlyText\", void 0);\n __decorate$2b([\n RefSelector('eDateWrapper')\n ], DateFloatingFilter.prototype, \"eDateWrapper\", void 0);\n return DateFloatingFilter;\n}(SimpleFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2t = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DefaultDateComponent = /** @class */ (function (_super) {\n __extends$2t(DefaultDateComponent, _super);\n function DefaultDateComponent() {\n return _super.call(this, /* html */ \"\\n <div class=\\\"ag-filter-filter\\\">\\n <ag-input-text-field class=\\\"ag-date-filter\\\" ref=\\\"eDateInput\\\"></ag-input-text-field>\\n </div>\") || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n DefaultDateComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n DefaultDateComponent.prototype.init = function (params) {\n var _this = this;\n var eDocument = this.gridOptionsService.getDocument();\n var inputElement = this.eDateInput.getInputElement();\n var shouldUseBrowserDatePicker = this.shouldUseBrowserDatePicker(params);\n if (shouldUseBrowserDatePicker) {\n inputElement.type = 'date';\n }\n // ensures that the input element is focussed when a clear button is clicked,\n // unless using safari as there is no clear button and focus does not work properly\n var usingSafariDatePicker = shouldUseBrowserDatePicker && isBrowserSafari();\n this.addManagedListener(inputElement, 'mousedown', function () {\n if (_this.eDateInput.isDisabled() || usingSafariDatePicker) {\n return;\n }\n inputElement.focus();\n });\n this.addManagedListener(inputElement, 'input', function (e) {\n if (e.target !== eDocument.activeElement) {\n return;\n }\n if (_this.eDateInput.isDisabled()) {\n return;\n }\n params.onDateChanged();\n });\n var _a = params.filterParams || {}, minValidYear = _a.minValidYear, maxValidYear = _a.maxValidYear;\n if (minValidYear) {\n inputElement.min = minValidYear + \"-01-01\";\n }\n if (maxValidYear) {\n inputElement.max = maxValidYear + \"-12-31\";\n }\n };\n DefaultDateComponent.prototype.getDate = function () {\n return parseDateTimeFromString(this.eDateInput.getValue());\n };\n DefaultDateComponent.prototype.setDate = function (date) {\n this.eDateInput.setValue(serialiseDate(date, false));\n };\n DefaultDateComponent.prototype.setInputPlaceholder = function (placeholder) {\n this.eDateInput.setInputPlaceholder(placeholder);\n };\n DefaultDateComponent.prototype.setDisabled = function (disabled) {\n this.eDateInput.setDisabled(disabled);\n };\n DefaultDateComponent.prototype.afterGuiAttached = function (params) {\n if (!params || !params.suppressFocus) {\n this.eDateInput.getInputElement().focus();\n }\n };\n DefaultDateComponent.prototype.shouldUseBrowserDatePicker = function (params) {\n if (params.filterParams && params.filterParams.browserDatePicker != null) {\n return params.filterParams.browserDatePicker;\n }\n return isBrowserChrome() || isBrowserFirefox() || (isBrowserSafari() && getSafariVersion() >= 14.1);\n };\n __decorate$2a([\n RefSelector('eDateInput')\n ], DefaultDateComponent.prototype, \"eDateInput\", void 0);\n return DefaultDateComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2s = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgInputTextField = /** @class */ (function (_super) {\n __extends$2s(AgInputTextField, _super);\n function AgInputTextField(config, className, inputType) {\n if (className === void 0) { className = 'ag-text-field'; }\n if (inputType === void 0) { inputType = 'text'; }\n return _super.call(this, config, className, inputType) || this;\n }\n AgInputTextField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n if (this.config.allowedCharPattern) {\n this.preventDisallowedCharacters();\n }\n };\n AgInputTextField.prototype.setValue = function (value, silent) {\n var ret = _super.prototype.setValue.call(this, value, silent);\n if (this.eInput.value !== value) {\n this.eInput.value = exists(value) ? value : '';\n }\n return ret;\n };\n AgInputTextField.prototype.preventDisallowedCharacters = function () {\n var pattern = new RegExp(\"[\" + this.config.allowedCharPattern + \"]\");\n var preventDisallowedCharacters = function (event) {\n if (event.ctrlKey || event.metaKey) {\n // copy/paste can fall in here on certain browsers (e.g. Safari)\n return;\n }\n if (event.key && !pattern.test(event.key)) {\n event.preventDefault();\n }\n };\n this.addManagedListener(this.eInput, 'keypress', preventDisallowedCharacters);\n this.addManagedListener(this.eInput, 'paste', function (e) {\n var _a;\n var text = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');\n if (text && text.split('').some(function (c) { return !pattern.test(c); })) {\n e.preventDefault();\n }\n });\n };\n return AgInputTextField;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2r = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgInputNumberField = /** @class */ (function (_super) {\n __extends$2r(AgInputNumberField, _super);\n function AgInputNumberField(config) {\n return _super.call(this, config, 'ag-number-field', 'number') || this;\n }\n AgInputNumberField.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.addManagedListener(this.eInput, 'blur', function () {\n var floatedValue = parseFloat(_this.eInput.value);\n var value = isNaN(floatedValue) ? '' : _this.normalizeValue(floatedValue.toString());\n if (_this.value !== value) {\n _this.setValue(value);\n }\n });\n this.addManagedListener(this.eInput, 'wheel', this.onWheel.bind(this));\n this.eInput.step = 'any';\n };\n AgInputNumberField.prototype.onWheel = function (e) {\n // Prevent default scroll events from incrementing / decrementing the input, since its inconsistent between browsers\n if (document.activeElement === this.eInput) {\n e.preventDefault();\n }\n };\n AgInputNumberField.prototype.normalizeValue = function (value) {\n if (value === '') {\n return '';\n }\n if (this.precision) {\n value = this.adjustPrecision(value);\n }\n var val = parseFloat(value);\n if (this.min != null && val < this.min) {\n value = this.min.toString();\n }\n else if (this.max != null && val > this.max) {\n value = this.max.toString();\n }\n return value;\n };\n AgInputNumberField.prototype.adjustPrecision = function (value) {\n if (this.precision) {\n var floatString = parseFloat(value).toFixed(this.precision);\n value = parseFloat(floatString).toString();\n }\n return value;\n };\n AgInputNumberField.prototype.setMin = function (min) {\n if (this.min === min) {\n return this;\n }\n this.min = min;\n addOrRemoveAttribute(this.eInput, 'min', min);\n return this;\n };\n AgInputNumberField.prototype.setMax = function (max) {\n if (this.max === max) {\n return this;\n }\n this.max = max;\n addOrRemoveAttribute(this.eInput, 'max', max);\n return this;\n };\n AgInputNumberField.prototype.setPrecision = function (precision) {\n this.precision = precision;\n return this;\n };\n AgInputNumberField.prototype.setStep = function (step) {\n if (this.step === step) {\n return this;\n }\n this.step = step;\n addOrRemoveAttribute(this.eInput, 'step', step);\n return this;\n };\n AgInputNumberField.prototype.setValue = function (value, silent) {\n if (value != null) {\n value = this.adjustPrecision(value);\n var normalizedValue = this.normalizeValue(value);\n if (value != normalizedValue) {\n return this;\n }\n }\n return _super.prototype.setValue.call(this, value, silent);\n };\n return AgInputNumberField;\n}(AgInputTextField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar NumberFilterModelFormatter = /** @class */ (function (_super) {\n __extends$2q(NumberFilterModelFormatter, _super);\n function NumberFilterModelFormatter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFilterModelFormatter.prototype.conditionToString = function (condition, options) {\n var numberOfInputs = (options || {}).numberOfInputs;\n var isRange = condition.type == SimpleFilter.IN_RANGE || numberOfInputs === 2;\n if (isRange) {\n return condition.filter + \"-\" + condition.filterTo;\n }\n // cater for when the type doesn't need a value\n if (condition.filter != null) {\n return \"\" + condition.filter;\n }\n return \"\" + condition.type;\n };\n return NumberFilterModelFormatter;\n}(SimpleFilterModelFormatter));\nfunction getAllowedCharPattern(filterParams) {\n var allowedCharPattern = (filterParams !== null && filterParams !== void 0 ? filterParams : {}).allowedCharPattern;\n if (allowedCharPattern) {\n return allowedCharPattern;\n }\n if (!isBrowserChrome()) {\n // only Chrome and Edge (Chromium) have nice HTML5 number field handling, so for other browsers we provide an equivalent\n // constraint instead\n return '\\\\d\\\\-\\\\.';\n }\n return null;\n}\nvar NumberFilter = /** @class */ (function (_super) {\n __extends$2q(NumberFilter, _super);\n function NumberFilter() {\n var _this = _super.call(this, 'numberFilter') || this;\n _this.eValuesFrom = [];\n _this.eValuesTo = [];\n return _this;\n }\n NumberFilter.prototype.mapValuesFromModel = function (filterModel) {\n var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;\n return [\n this.processValue(filter),\n this.processValue(filterTo),\n ].slice(0, this.getNumberOfInputs(type));\n };\n NumberFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n NumberFilter.prototype.comparator = function () {\n return function (left, right) {\n if (left === right) {\n return 0;\n }\n return left < right ? 1 : -1;\n };\n };\n NumberFilter.prototype.setParams = function (params) {\n this.numberFilterParams = params;\n _super.prototype.setParams.call(this, params);\n this.filterModelFormatter = new NumberFilterModelFormatter(this.localeService, this.optionsFactory);\n };\n NumberFilter.prototype.getDefaultFilterOptions = function () {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n };\n NumberFilter.prototype.createValueElement = function () {\n var allowedCharPattern = getAllowedCharPattern(this.numberFilterParams);\n var eCondition = document.createElement('div');\n eCondition.classList.add('ag-filter-body');\n setAriaRole(eCondition, 'presentation');\n this.createFromToElement(eCondition, this.eValuesFrom, 'from', allowedCharPattern);\n this.createFromToElement(eCondition, this.eValuesTo, 'to', allowedCharPattern);\n return eCondition;\n };\n NumberFilter.prototype.createFromToElement = function (eCondition, eValues, fromTo, allowedCharPattern) {\n var eValue = this.createManagedBean(allowedCharPattern ? new AgInputTextField({ allowedCharPattern: allowedCharPattern }) : new AgInputNumberField());\n eValue.addCssClass(\"ag-filter-\" + fromTo);\n eValue.addCssClass('ag-filter-filter');\n eValues.push(eValue);\n eCondition.appendChild(eValue.getGui());\n };\n NumberFilter.prototype.removeValueElements = function (startPosition, deleteCount) {\n this.removeComponents(this.eValuesFrom, startPosition, deleteCount);\n this.removeComponents(this.eValuesTo, startPosition, deleteCount);\n };\n NumberFilter.prototype.getValues = function (position) {\n var _this = this;\n var result = [];\n this.forEachPositionInput(position, function (element, index, _elPosition, numberOfInputs) {\n if (index < numberOfInputs) {\n result.push(_this.processValue(_this.stringToFloat(element.getValue())));\n }\n });\n return result;\n };\n NumberFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter\n && aSimple.filterTo === bSimple.filterTo\n && aSimple.type === bSimple.type;\n };\n NumberFilter.prototype.getFilterType = function () {\n return 'number';\n };\n NumberFilter.prototype.processValue = function (value) {\n if (value == null) {\n return null;\n }\n return isNaN(value) ? null : value;\n };\n NumberFilter.prototype.stringToFloat = function (value) {\n if (typeof value === 'number') {\n return value;\n }\n var filterText = makeNull(value);\n if (filterText != null && filterText.trim() === '') {\n filterText = null;\n }\n if (this.numberFilterParams.numberParser) {\n return this.numberFilterParams.numberParser(filterText);\n }\n return filterText == null || filterText.trim() === '-' ? null : parseFloat(filterText);\n };\n NumberFilter.prototype.createCondition = function (position) {\n var type = this.getConditionType(position);\n var model = {\n filterType: this.getFilterType(),\n type: type\n };\n var values = this.getValues(position);\n if (values.length > 0) {\n model.filter = values[0];\n }\n if (values.length > 1) {\n model.filterTo = values[1];\n }\n return model;\n };\n NumberFilter.prototype.getInputs = function (position) {\n if (position >= this.eValuesFrom.length) {\n return [null, null];\n }\n return [this.eValuesFrom[position], this.eValuesTo[position]];\n };\n NumberFilter.prototype.getModelAsString = function (model) {\n var _a;\n return (_a = this.filterModelFormatter.getModelAsString(model)) !== null && _a !== void 0 ? _a : '';\n };\n NumberFilter.DEFAULT_FILTER_OPTIONS = [\n ScalarFilter.EQUALS,\n ScalarFilter.NOT_EQUAL,\n ScalarFilter.LESS_THAN,\n ScalarFilter.LESS_THAN_OR_EQUAL,\n ScalarFilter.GREATER_THAN,\n ScalarFilter.GREATER_THAN_OR_EQUAL,\n ScalarFilter.IN_RANGE,\n ScalarFilter.BLANK,\n ScalarFilter.NOT_BLANK,\n ];\n return NumberFilter;\n}(ScalarFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2p = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$f = (undefined && undefined.__assign) || function () {\n __assign$f = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$f.apply(this, arguments);\n};\nvar TextFilterModelFormatter = /** @class */ (function (_super) {\n __extends$2p(TextFilterModelFormatter, _super);\n function TextFilterModelFormatter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFilterModelFormatter.prototype.conditionToString = function (condition, options) {\n var numberOfInputs = (options || {}).numberOfInputs;\n var isRange = condition.type == SimpleFilter.IN_RANGE || numberOfInputs === 2;\n if (isRange) {\n return condition.filter + \"-\" + condition.filterTo;\n }\n // cater for when the type doesn't need a value\n if (condition.filter != null) {\n return \"\" + condition.filter;\n }\n return \"\" + condition.type;\n };\n return TextFilterModelFormatter;\n}(SimpleFilterModelFormatter));\nvar TextFilter = /** @class */ (function (_super) {\n __extends$2p(TextFilter, _super);\n function TextFilter() {\n var _this = _super.call(this, 'textFilter') || this;\n _this.eValuesFrom = [];\n _this.eValuesTo = [];\n return _this;\n }\n TextFilter.trimInput = function (value) {\n var trimmedInput = value && value.trim();\n // trim the input, unless it is all whitespace (this is consistent with Excel behaviour)\n return trimmedInput === '' ? value : trimmedInput;\n };\n TextFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextFilter.prototype.setParams = function (params) {\n this.textFilterParams = params;\n _super.prototype.setParams.call(this, params);\n this.matcher = this.getTextMatcher();\n this.formatter = this.textFilterParams.textFormatter ||\n (this.textFilterParams.caseSensitive ? TextFilter.DEFAULT_FORMATTER : TextFilter.DEFAULT_LOWERCASE_FORMATTER);\n this.filterModelFormatter = new TextFilterModelFormatter(this.localeService, this.optionsFactory);\n };\n TextFilter.prototype.getTextMatcher = function () {\n var legacyComparator = this.textFilterParams.textCustomComparator;\n if (legacyComparator) {\n _.doOnce(function () { return console.warn('AG Grid - textCustomComparator is deprecated, use textMatcher instead.'); }, 'textCustomComparator.deprecated');\n return function (_a) {\n var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;\n return legacyComparator(filterOption, value, filterText);\n };\n }\n return this.textFilterParams.textMatcher || TextFilter.DEFAULT_MATCHER;\n };\n TextFilter.prototype.createCondition = function (position) {\n var type = this.getConditionType(position);\n var model = {\n filterType: this.getFilterType(),\n type: type,\n };\n var values = this.getValues(position);\n if (values.length > 0) {\n model.filter = values[0];\n }\n if (values.length > 1) {\n model.filterTo = values[1];\n }\n return model;\n };\n TextFilter.prototype.getFilterType = function () {\n return 'text';\n };\n TextFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter &&\n aSimple.filterTo === bSimple.filterTo &&\n aSimple.type === bSimple.type;\n };\n TextFilter.prototype.getInputs = function (position) {\n if (position >= this.eValuesFrom.length) {\n return [null, null];\n }\n return [this.eValuesFrom[position], this.eValuesTo[position]];\n };\n TextFilter.prototype.getValues = function (position) {\n var _this = this;\n var result = [];\n this.forEachPositionInput(position, function (element, index, _elPosition, numberOfInputs) {\n if (index < numberOfInputs) {\n var value = makeNull(element.getValue());\n var cleanValue = (_this.textFilterParams.trimInput ? TextFilter.trimInput(value) : value) || null;\n result.push(cleanValue);\n element.setValue(cleanValue, true); // ensure clean value is visible\n }\n });\n return result;\n };\n TextFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n TextFilter.prototype.createValueElement = function () {\n var eCondition = document.createElement('div');\n eCondition.classList.add('ag-filter-body');\n setAriaRole(eCondition, 'presentation');\n this.createFromToElement(eCondition, this.eValuesFrom, 'from');\n this.createFromToElement(eCondition, this.eValuesTo, 'to');\n return eCondition;\n };\n TextFilter.prototype.createFromToElement = function (eCondition, eValues, fromTo) {\n var eValue = this.createManagedBean(new AgInputTextField());\n eValue.addCssClass(\"ag-filter-\" + fromTo);\n eValue.addCssClass('ag-filter-filter');\n eValues.push(eValue);\n eCondition.appendChild(eValue.getGui());\n };\n TextFilter.prototype.removeValueElements = function (startPosition, deleteCount) {\n this.removeComponents(this.eValuesFrom, startPosition, deleteCount);\n this.removeComponents(this.eValuesTo, startPosition, deleteCount);\n };\n TextFilter.prototype.mapValuesFromModel = function (filterModel) {\n var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;\n return [\n filter || null,\n filterTo || null,\n ].slice(0, this.getNumberOfInputs(type));\n };\n TextFilter.prototype.evaluateNullValue = function (filterType) {\n var filterTypesAllowNulls = [\n SimpleFilter.NOT_EQUAL, SimpleFilter.NOT_CONTAINS, SimpleFilter.BLANK,\n ];\n return filterType ? filterTypesAllowNulls.indexOf(filterType) >= 0 : false;\n };\n TextFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel, params) {\n var _this = this;\n var formattedValues = values.map(function (v) { return _this.formatter(v); }) || [];\n var cellValueFormatted = this.formatter(cellValue);\n var _a = this.textFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context, textFormatter = _a.textFormatter;\n if (filterModel.type === SimpleFilter.BLANK) {\n return this.isBlank(cellValue);\n }\n else if (filterModel.type === SimpleFilter.NOT_BLANK) {\n return !this.isBlank(cellValue);\n }\n var matcherParams = {\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n node: params.node,\n data: params.data,\n filterOption: filterModel.type,\n value: cellValueFormatted,\n textFormatter: textFormatter,\n };\n return formattedValues.some(function (v) { return _this.matcher(__assign$f(__assign$f({}, matcherParams), { filterText: v })); });\n };\n TextFilter.prototype.getModelAsString = function (model) {\n var _a;\n return (_a = this.filterModelFormatter.getModelAsString(model)) !== null && _a !== void 0 ? _a : '';\n };\n TextFilter.DEFAULT_FILTER_OPTIONS = [\n SimpleFilter.CONTAINS,\n SimpleFilter.NOT_CONTAINS,\n SimpleFilter.EQUALS,\n SimpleFilter.NOT_EQUAL,\n SimpleFilter.STARTS_WITH,\n SimpleFilter.ENDS_WITH,\n SimpleFilter.BLANK,\n SimpleFilter.NOT_BLANK,\n ];\n TextFilter.DEFAULT_FORMATTER = function (from) { return from; };\n TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) { return from == null ? null : from.toString().toLowerCase(); };\n TextFilter.DEFAULT_MATCHER = function (_a) {\n var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;\n if (filterText == null) {\n return false;\n }\n switch (filterOption) {\n case TextFilter.CONTAINS:\n return value.indexOf(filterText) >= 0;\n case TextFilter.NOT_CONTAINS:\n return value.indexOf(filterText) < 0;\n case TextFilter.EQUALS:\n return value === filterText;\n case TextFilter.NOT_EQUAL:\n return value != filterText;\n case TextFilter.STARTS_WITH:\n return value.indexOf(filterText) === 0;\n case TextFilter.ENDS_WITH:\n var index = value.lastIndexOf(filterText);\n return index >= 0 && index === (value.length - filterText.length);\n default:\n return false;\n }\n };\n return TextFilter;\n}(SimpleFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2o = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$29 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FloatingFilterTextInputService = /** @class */ (function (_super) {\n __extends$2o(FloatingFilterTextInputService, _super);\n function FloatingFilterTextInputService(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n return _this;\n }\n FloatingFilterTextInputService.prototype.setupGui = function (parentElement) {\n this.eFloatingFilterTextInput = this.createManagedBean(new AgInputTextField(this.params.config));\n this.eFloatingFilterTextInput.setInputAriaLabel(this.params.ariaLabel);\n parentElement.appendChild(this.eFloatingFilterTextInput.getGui());\n };\n FloatingFilterTextInputService.prototype.setEditable = function (editable) {\n this.eFloatingFilterTextInput.setDisabled(!editable);\n };\n FloatingFilterTextInputService.prototype.getValue = function () {\n return this.eFloatingFilterTextInput.getValue();\n };\n FloatingFilterTextInputService.prototype.setValue = function (value, silent) {\n this.eFloatingFilterTextInput.setValue(value, silent);\n };\n FloatingFilterTextInputService.prototype.addValueChangedListener = function (listener) {\n var inputGui = this.eFloatingFilterTextInput.getGui();\n this.addManagedListener(inputGui, 'input', listener);\n this.addManagedListener(inputGui, 'keypress', listener);\n this.addManagedListener(inputGui, 'keydown', listener);\n };\n return FloatingFilterTextInputService;\n}(BeanStub));\nvar TextInputFloatingFilter = /** @class */ (function (_super) {\n __extends$2o(TextInputFloatingFilter, _super);\n function TextInputFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextInputFloatingFilter.prototype.postConstruct = function () {\n this.setTemplate(/* html */ \"\\n <div class=\\\"ag-floating-filter-input\\\" role=\\\"presentation\\\" ref=\\\"eFloatingFilterInputContainer\\\"></div>\\n \");\n };\n TextInputFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextInputFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n if (this.isEventFromFloatingFilter(event) || this.isEventFromDataChange(event)) {\n // if the floating filter triggered the change, it is already in sync.\n // Data changes also do not affect provided text floating filters\n return;\n }\n this.setLastTypeFromModel(model);\n this.setEditable(this.canWeEditAfterModelFromParentFilter(model));\n this.floatingFilterInputService.setValue(this.getFilterModelFormatter().getModelAsString(model));\n };\n TextInputFloatingFilter.prototype.init = function (params) {\n this.params = params;\n var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n var translate = this.localeService.getLocaleTextFunc();\n var ariaLabel = displayName + \" \" + translate('ariaFilterInput', 'Filter Input');\n this.floatingFilterInputService = this.createFloatingFilterInputService(ariaLabel);\n this.floatingFilterInputService.setupGui(this.eFloatingFilterInputContainer);\n _super.prototype.init.call(this, params);\n this.applyActive = ProvidedFilter.isUseApplyButton(this.params.filterParams);\n if (!this.isReadOnly()) {\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var toDebounce = debounce(this.syncUpWithParentFilter.bind(this), debounceMs);\n this.floatingFilterInputService.addValueChangedListener(toDebounce);\n }\n };\n TextInputFloatingFilter.prototype.syncUpWithParentFilter = function (e) {\n var _this = this;\n var enterKeyPressed = e.key === KeyCode.ENTER;\n if (this.applyActive && !enterKeyPressed) {\n return;\n }\n var value = this.floatingFilterInputService.getValue();\n if (this.params.filterParams.trimInput) {\n value = TextFilter.trimInput(value);\n this.floatingFilterInputService.setValue(value, true); // ensure visible value is trimmed\n }\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n // NumberFilter is typed as number, but actually receives string values\n filterInstance.onFloatingFilterChanged(_this.getLastType() || null, value || null);\n }\n });\n };\n TextInputFloatingFilter.prototype.setEditable = function (editable) {\n this.floatingFilterInputService.setEditable(editable);\n };\n __decorate$29([\n Autowired('columnModel')\n ], TextInputFloatingFilter.prototype, \"columnModel\", void 0);\n __decorate$29([\n RefSelector('eFloatingFilterInputContainer')\n ], TextInputFloatingFilter.prototype, \"eFloatingFilterInputContainer\", void 0);\n __decorate$29([\n PostConstruct\n ], TextInputFloatingFilter.prototype, \"postConstruct\", null);\n return TextInputFloatingFilter;\n}(SimpleFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2n = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar FloatingFilterNumberInputService = /** @class */ (function (_super) {\n __extends$2n(FloatingFilterNumberInputService, _super);\n function FloatingFilterNumberInputService(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n _this.numberInputActive = true;\n return _this;\n }\n FloatingFilterNumberInputService.prototype.setupGui = function (parentElement) {\n this.eFloatingFilterNumberInput = this.createManagedBean(new AgInputNumberField());\n this.eFloatingFilterTextInput = this.createManagedBean(new AgInputTextField());\n this.eFloatingFilterTextInput.setDisabled(true);\n this.eFloatingFilterNumberInput.setInputAriaLabel(this.params.ariaLabel);\n this.eFloatingFilterTextInput.setInputAriaLabel(this.params.ariaLabel);\n parentElement.appendChild(this.eFloatingFilterNumberInput.getGui());\n parentElement.appendChild(this.eFloatingFilterTextInput.getGui());\n };\n FloatingFilterNumberInputService.prototype.setEditable = function (editable) {\n this.numberInputActive = editable;\n this.eFloatingFilterNumberInput.setDisplayed(this.numberInputActive);\n this.eFloatingFilterTextInput.setDisplayed(!this.numberInputActive);\n };\n FloatingFilterNumberInputService.prototype.getValue = function () {\n return this.getActiveInputElement().getValue();\n };\n FloatingFilterNumberInputService.prototype.setValue = function (value, silent) {\n this.getActiveInputElement().setValue(value, silent);\n };\n FloatingFilterNumberInputService.prototype.getActiveInputElement = function () {\n return this.numberInputActive ? this.eFloatingFilterNumberInput : this.eFloatingFilterTextInput;\n };\n FloatingFilterNumberInputService.prototype.addValueChangedListener = function (listener) {\n this.setupListeners(this.eFloatingFilterNumberInput.getGui(), listener);\n this.setupListeners(this.eFloatingFilterTextInput.getGui(), listener);\n };\n FloatingFilterNumberInputService.prototype.setupListeners = function (element, listener) {\n this.addManagedListener(element, 'input', listener);\n this.addManagedListener(element, 'keypress', listener);\n this.addManagedListener(element, 'keydown', listener);\n };\n return FloatingFilterNumberInputService;\n}(BeanStub));\nvar NumberFloatingFilter = /** @class */ (function (_super) {\n __extends$2n(NumberFloatingFilter, _super);\n function NumberFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.filterModelFormatter = new NumberFilterModelFormatter(this.localeService, this.optionsFactory);\n };\n NumberFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n };\n NumberFloatingFilter.prototype.getFilterModelFormatter = function () {\n return this.filterModelFormatter;\n };\n NumberFloatingFilter.prototype.createFloatingFilterInputService = function (ariaLabel) {\n var allowedCharPattern = getAllowedCharPattern(this.params.filterParams);\n if (allowedCharPattern) {\n // need to sue text input\n return this.createManagedBean(new FloatingFilterTextInputService({\n config: { allowedCharPattern: allowedCharPattern },\n ariaLabel: ariaLabel\n }));\n }\n return this.createManagedBean(new FloatingFilterNumberInputService({ ariaLabel: ariaLabel }));\n };\n return NumberFloatingFilter;\n}(TextInputFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2m = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TextFloatingFilter = /** @class */ (function (_super) {\n __extends$2m(TextFloatingFilter, _super);\n function TextFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.filterModelFormatter = new TextFilterModelFormatter(this.localeService, this.optionsFactory);\n };\n TextFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n TextFloatingFilter.prototype.getFilterModelFormatter = function () {\n return this.filterModelFormatter;\n };\n TextFloatingFilter.prototype.createFloatingFilterInputService = function (ariaLabel) {\n return this.createManagedBean(new FloatingFilterTextInputService({\n ariaLabel: ariaLabel\n }));\n };\n return TextFloatingFilter;\n}(TextInputFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar TouchListener = /** @class */ (function () {\n function TouchListener(eElement, preventMouseClick) {\n var _this = this;\n if (preventMouseClick === void 0) { preventMouseClick = false; }\n this.destroyFuncs = [];\n this.touching = false;\n this.eventService = new EventService();\n this.eElement = eElement;\n this.preventMouseClick = preventMouseClick;\n var startListener = this.onTouchStart.bind(this);\n var moveListener = this.onTouchMove.bind(this);\n var endListener = this.onTouchEnd.bind(this);\n this.eElement.addEventListener(\"touchstart\", startListener, { passive: true });\n this.eElement.addEventListener(\"touchmove\", moveListener, { passive: true });\n // we set passive=false, as we want to prevent default on this event\n this.eElement.addEventListener(\"touchend\", endListener, { passive: false });\n this.destroyFuncs.push(function () {\n _this.eElement.removeEventListener(\"touchstart\", startListener, { passive: true });\n _this.eElement.removeEventListener(\"touchmove\", moveListener, { passive: true });\n _this.eElement.removeEventListener(\"touchend\", endListener, { passive: false });\n });\n }\n TouchListener.prototype.getActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n var matches = touchList[i].identifier === this.touchStart.identifier;\n if (matches) {\n return touchList[i];\n }\n }\n return null;\n };\n TouchListener.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n TouchListener.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n TouchListener.prototype.onTouchStart = function (touchEvent) {\n var _this = this;\n // only looking at one touch point at any time\n if (this.touching) {\n return;\n }\n this.touchStart = touchEvent.touches[0];\n this.touching = true;\n this.moved = false;\n var touchStartCopy = this.touchStart;\n window.setTimeout(function () {\n var touchesMatch = _this.touchStart === touchStartCopy;\n if (_this.touching && touchesMatch && !_this.moved) {\n _this.moved = true;\n var event_1 = {\n type: TouchListener.EVENT_LONG_TAP,\n touchStart: _this.touchStart,\n touchEvent: touchEvent\n };\n _this.eventService.dispatchEvent(event_1);\n }\n }, 500);\n };\n TouchListener.prototype.onTouchMove = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n var touch = this.getActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n var eventIsFarAway = !areEventsNear(touch, this.touchStart, 4);\n if (eventIsFarAway) {\n this.moved = true;\n }\n };\n TouchListener.prototype.onTouchEnd = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n if (!this.moved) {\n var event_2 = {\n type: TouchListener.EVENT_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_2);\n this.checkForDoubleTap();\n }\n // stops the tap from also been processed as a mouse click\n if (this.preventMouseClick && touchEvent.cancelable) {\n touchEvent.preventDefault();\n }\n this.touching = false;\n };\n TouchListener.prototype.checkForDoubleTap = function () {\n var now = new Date().getTime();\n if (this.lastTapTime && this.lastTapTime > 0) {\n // if previous tap, see if duration is short enough to be considered double tap\n var interval = now - this.lastTapTime;\n if (interval > TouchListener.DOUBLE_TAP_MILLIS) {\n // dispatch double tap event\n var event_3 = {\n type: TouchListener.EVENT_DOUBLE_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_3);\n // this stops a tripple tap ending up as two double taps\n this.lastTapTime = null;\n }\n else {\n this.lastTapTime = now;\n }\n }\n else {\n this.lastTapTime = now;\n }\n };\n TouchListener.prototype.destroy = function () {\n this.destroyFuncs.forEach(function (func) { return func(); });\n };\n TouchListener.EVENT_TAP = \"tap\";\n TouchListener.EVENT_DOUBLE_TAP = \"doubleTap\";\n TouchListener.EVENT_LONG_TAP = \"longTap\";\n TouchListener.DOUBLE_TAP_MILLIS = 500;\n return TouchListener;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$28 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortIndicatorComp = /** @class */ (function (_super) {\n __extends$2l(SortIndicatorComp, _super);\n function SortIndicatorComp(skipTemplate) {\n var _this = _super.call(this) || this;\n if (!skipTemplate) {\n _this.setTemplate(SortIndicatorComp.TEMPLATE);\n }\n return _this;\n }\n SortIndicatorComp.prototype.attachCustomElements = function (eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone) {\n this.eSortOrder = eSortOrder;\n this.eSortAsc = eSortAsc;\n this.eSortDesc = eSortDesc;\n this.eSortMixed = eSortMixed;\n this.eSortNone = eSortNone;\n };\n SortIndicatorComp.prototype.setupSort = function (column, suppressOrder) {\n var _this = this;\n if (suppressOrder === void 0) { suppressOrder = false; }\n this.column = column;\n this.suppressOrder = suppressOrder;\n this.setupMultiSortIndicator();\n var canSort = !!this.column.getColDef().sortable;\n if (!canSort) {\n return;\n }\n this.addInIcon('sortAscending', this.eSortAsc, column);\n this.addInIcon('sortDescending', this.eSortDesc, column);\n this.addInIcon('sortUnSort', this.eSortNone, column);\n // Watch global events, as row group columns can effect their display column.\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, function () { return _this.onSortChanged(); });\n // when grouping changes so can sort indexes and icons\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.onSortChanged(); });\n this.onSortChanged();\n };\n SortIndicatorComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = createIconNoSpan(iconName, this.gridOptionsService, column);\n if (eIcon) {\n eParent.appendChild(eIcon);\n }\n };\n SortIndicatorComp.prototype.onSortChanged = function () {\n this.updateIcons();\n if (!this.suppressOrder) {\n this.updateSortOrder();\n }\n };\n SortIndicatorComp.prototype.updateIcons = function () {\n var sortDirection = this.sortController.getDisplaySortForColumn(this.column);\n if (this.eSortAsc) {\n var isAscending = sortDirection === 'asc';\n setDisplayed(this.eSortAsc, isAscending, { skipAriaHidden: true });\n }\n if (this.eSortDesc) {\n var isDescending = sortDirection === 'desc';\n setDisplayed(this.eSortDesc, isDescending, { skipAriaHidden: true });\n }\n if (this.eSortNone) {\n var alwaysHideNoSort = !this.column.getColDef().unSortIcon && !this.gridOptionsService.is('unSortIcon');\n var isNone = sortDirection === null || sortDirection === undefined;\n setDisplayed(this.eSortNone, !alwaysHideNoSort && isNone, { skipAriaHidden: true });\n }\n };\n SortIndicatorComp.prototype.setupMultiSortIndicator = function () {\n var _this = this;\n this.addInIcon('sortUnSort', this.eSortMixed, this.column);\n var isColumnShowingRowGroup = this.column.getColDef().showRowGroup;\n var areGroupsCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n if (areGroupsCoupled && isColumnShowingRowGroup) {\n // Watch global events, as row group columns can effect their display column.\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, function () { return _this.updateMultiSortIndicator(); });\n // when grouping changes so can sort indexes and icons\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.updateMultiSortIndicator(); });\n this.updateMultiSortIndicator();\n }\n };\n SortIndicatorComp.prototype.updateMultiSortIndicator = function () {\n if (this.eSortMixed) {\n var isMixedSort = this.sortController.getDisplaySortForColumn(this.column) === 'mixed';\n setDisplayed(this.eSortMixed, isMixedSort, { skipAriaHidden: true });\n }\n };\n // we listen here for global sort events, NOT column sort events, as we want to do this\n // when sorting has been set on all column (if we listened just for our col (where we\n // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n SortIndicatorComp.prototype.updateSortOrder = function () {\n var _this = this;\n var _a;\n if (!this.eSortOrder) {\n return;\n }\n var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n var indexThisCol = (_a = this.sortController.getDisplaySortIndexForColumn(this.column)) !== null && _a !== void 0 ? _a : -1;\n var moreThanOneColSorting = allColumnsWithSorting.some(function (col) { var _a; return (_a = _this.sortController.getDisplaySortIndexForColumn(col)) !== null && _a !== void 0 ? _a : -1 >= 1; });\n var showIndex = indexThisCol >= 0 && moreThanOneColSorting;\n setDisplayed(this.eSortOrder, showIndex, { skipAriaHidden: true });\n if (indexThisCol >= 0) {\n this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n }\n else {\n clearElement(this.eSortOrder);\n }\n };\n SortIndicatorComp.TEMPLATE = \"<span class=\\\"ag-sort-indicator-container\\\">\\n <span ref=\\\"eSortOrder\\\" class=\\\"ag-sort-indicator-icon ag-sort-order ag-hidden\\\" aria-hidden=\\\"true\\\"></span>\\n <span ref=\\\"eSortAsc\\\" class=\\\"ag-sort-indicator-icon ag-sort-ascending-icon ag-hidden\\\" aria-hidden=\\\"true\\\"></span>\\n <span ref=\\\"eSortDesc\\\" class=\\\"ag-sort-indicator-icon ag-sort-descending-icon ag-hidden\\\" aria-hidden=\\\"true\\\"></span>\\n <span ref=\\\"eSortMixed\\\" class=\\\"ag-sort-indicator-icon ag-sort-mixed-icon ag-hidden\\\" aria-hidden=\\\"true\\\"></span>\\n <span ref=\\\"eSortNone\\\" class=\\\"ag-sort-indicator-icon ag-sort-none-icon ag-hidden\\\" aria-hidden=\\\"true\\\"></span>\\n </span>\";\n __decorate$28([\n RefSelector('eSortOrder')\n ], SortIndicatorComp.prototype, \"eSortOrder\", void 0);\n __decorate$28([\n RefSelector('eSortAsc')\n ], SortIndicatorComp.prototype, \"eSortAsc\", void 0);\n __decorate$28([\n RefSelector('eSortDesc')\n ], SortIndicatorComp.prototype, \"eSortDesc\", void 0);\n __decorate$28([\n RefSelector('eSortMixed')\n ], SortIndicatorComp.prototype, \"eSortMixed\", void 0);\n __decorate$28([\n RefSelector('eSortNone')\n ], SortIndicatorComp.prototype, \"eSortNone\", void 0);\n __decorate$28([\n Autowired('columnModel')\n ], SortIndicatorComp.prototype, \"columnModel\", void 0);\n __decorate$28([\n Autowired('sortController')\n ], SortIndicatorComp.prototype, \"sortController\", void 0);\n return SortIndicatorComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$27 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderComp = /** @class */ (function (_super) {\n __extends$2k(HeaderComp, _super);\n function HeaderComp() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastMovingChanged = 0;\n return _this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n HeaderComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n HeaderComp.prototype.refresh = function (params) {\n this.params = params;\n // if template changed, then recreate the whole comp, the code required to manage\n // a changing template is to difficult for what it's worth.\n if (this.workOutTemplate() != this.currentTemplate) {\n return false;\n }\n if (this.workOutShowMenu() != this.currentShowMenu) {\n return false;\n }\n if (this.workOutSort() != this.currentSort) {\n return false;\n }\n this.setDisplayName(params);\n return true;\n };\n HeaderComp.prototype.workOutTemplate = function () {\n var template = firstExistingValue(this.params.template, HeaderComp.TEMPLATE);\n // take account of any newlines & whitespace before/after the actual template\n template = template && template.trim ? template.trim() : template;\n return template;\n };\n HeaderComp.prototype.init = function (params) {\n this.params = params;\n this.currentTemplate = this.workOutTemplate();\n this.setTemplate(this.currentTemplate);\n this.setupTap();\n this.setupIcons(params.column);\n this.setMenu();\n this.setupSort();\n this.setupFilterIcon();\n this.setDisplayName(params);\n };\n HeaderComp.prototype.setDisplayName = function (params) {\n if (this.currentDisplayName != params.displayName) {\n this.currentDisplayName = params.displayName;\n var displayNameSanitised = escapeString(this.currentDisplayName);\n if (this.eText) {\n this.eText.innerHTML = displayNameSanitised;\n }\n }\n };\n HeaderComp.prototype.setupIcons = function (column) {\n this.addInIcon('menu', this.eMenu, column);\n this.addInIcon('filter', this.eFilter, column);\n };\n HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = createIconNoSpan(iconName, this.gridOptionsService, column);\n if (eIcon) {\n eParent.appendChild(eIcon);\n }\n };\n HeaderComp.prototype.setupTap = function () {\n var _this = this;\n var gridOptionsService = this.gridOptionsService;\n if (gridOptionsService.is('suppressTouch')) {\n return;\n }\n var touchListener = new TouchListener(this.getGui(), true);\n var suppressMenuHide = gridOptionsService.is('suppressMenuHide');\n var tapMenuButton = suppressMenuHide && exists(this.eMenu);\n var menuTouchListener = tapMenuButton ? new TouchListener(this.eMenu, true) : touchListener;\n if (this.params.enableMenu) {\n var eventType = tapMenuButton ? 'EVENT_TAP' : 'EVENT_LONG_TAP';\n var showMenuFn = function (event) {\n gridOptionsService.api.showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);\n };\n this.addManagedListener(menuTouchListener, TouchListener[eventType], showMenuFn);\n }\n if (this.params.enableSorting) {\n var tapListener = function (event) {\n var target = event.touchStart.target;\n // When suppressMenuHide is true, a tap on the menu icon will bubble up\n // to the header container, in that case we should not sort\n if (suppressMenuHide && _this.eMenu.contains(target)) {\n return;\n }\n _this.sortController.progressSort(_this.params.column, false, \"uiColumnSorted\");\n };\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, tapListener);\n }\n // if tapMenuButton is true `touchListener` and `menuTouchListener` are different\n // so we need to make sure to destroy both listeners here\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n if (tapMenuButton) {\n this.addDestroyFunc(function () { return menuTouchListener.destroy(); });\n }\n };\n HeaderComp.prototype.workOutShowMenu = function () {\n // we don't show the menu if on an iPad/iPhone, as the user cannot have a pointer device/\n // However if suppressMenuHide is set to true the menu will be displayed alwasys, so it's ok\n // to show it on iPad in this case (as hover isn't needed). If suppressMenuHide\n // is false (default) user will need to use longpress to display the menu.\n var menuHides = !this.gridOptionsService.is('suppressMenuHide');\n var onIpadAndMenuHides = isIOSUserAgent() && menuHides;\n var showMenu = this.params.enableMenu && !onIpadAndMenuHides;\n return showMenu;\n };\n HeaderComp.prototype.setMenu = function () {\n var _this = this;\n // if no menu provided in template, do nothing\n if (!this.eMenu) {\n return;\n }\n this.currentShowMenu = this.workOutShowMenu();\n if (!this.currentShowMenu) {\n removeFromParent(this.eMenu);\n return;\n }\n var suppressMenuHide = this.gridOptionsService.is('suppressMenuHide');\n this.addManagedListener(this.eMenu, 'click', function () { return _this.showMenu(_this.eMenu); });\n this.eMenu.classList.toggle('ag-header-menu-always-show', suppressMenuHide);\n };\n HeaderComp.prototype.showMenu = function (eventSource) {\n if (!eventSource) {\n eventSource = this.eMenu;\n }\n this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource, 'columnMenu');\n };\n HeaderComp.prototype.workOutSort = function () {\n return this.params.enableSorting;\n };\n HeaderComp.prototype.setupSort = function () {\n var _this = this;\n this.currentSort = this.params.enableSorting;\n // eSortIndicator will not be present when customers provided custom header\n // templates, in that case, we need to look for provided sort elements and\n // manually create eSortIndicator.\n if (!this.eSortIndicator) {\n this.eSortIndicator = this.context.createBean(new SortIndicatorComp(true));\n this.eSortIndicator.attachCustomElements(this.eSortOrder, this.eSortAsc, this.eSortDesc, this.eSortMixed, this.eSortNone);\n }\n this.eSortIndicator.setupSort(this.params.column);\n // we set up the indicator prior to the check for whether this column is sortable, as it allows the indicator to\n // set up the multi sort indicator which can appear irrelevant of whether this column can itself be sorted.\n // this can occur in the case of a non-sortable group display column.\n if (!this.currentSort) {\n return;\n }\n var sortUsingCtrl = this.gridOptionsService.get('multiSortKey') === 'ctrl';\n // keep track of last time the moving changed flag was set\n this.addManagedListener(this.params.column, Column.EVENT_MOVING_CHANGED, function () {\n _this.lastMovingChanged = new Date().getTime();\n });\n // add the event on the header, so when clicked, we do sorting\n if (this.eLabel) {\n this.addManagedListener(this.eLabel, 'click', function (event) {\n // sometimes when moving a column via dragging, this was also firing a clicked event.\n // here is issue raised by user: https://ag-grid.zendesk.com/agent/tickets/1076\n // this check stops sort if a) column is moving or b) column moved less than 200ms ago (so caters for race condition)\n var moving = _this.params.column.isMoving();\n var nowTime = new Date().getTime();\n // typically there is <2ms if moving flag was set recently, as it would be done in same VM turn\n var movedRecently = (nowTime - _this.lastMovingChanged) < 50;\n var columnMoving = moving || movedRecently;\n if (!columnMoving) {\n var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n _this.params.progressSort(multiSort);\n }\n });\n }\n var onSortingChanged = function () {\n _this.addOrRemoveCssClass('ag-header-cell-sorted-asc', _this.params.column.isSortAscending());\n _this.addOrRemoveCssClass('ag-header-cell-sorted-desc', _this.params.column.isSortDescending());\n _this.addOrRemoveCssClass('ag-header-cell-sorted-none', _this.params.column.isSortNone());\n if (_this.params.column.getColDef().showRowGroup) {\n var sourceColumns = _this.columnModel.getSourceColumnsForGroupColumn(_this.params.column);\n // this == is intentional, as it allows null and undefined to match, which are both unsorted states\n var sortDirectionsMatch = sourceColumns === null || sourceColumns === void 0 ? void 0 : sourceColumns.every(function (sourceCol) { return _this.params.column.getSort() == sourceCol.getSort(); });\n var isMultiSorting = !sortDirectionsMatch;\n _this.addOrRemoveCssClass('ag-header-cell-sorted-mixed', isMultiSorting);\n }\n };\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, onSortingChanged);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, onSortingChanged);\n };\n HeaderComp.prototype.setupFilterIcon = function () {\n if (!this.eFilter) {\n return;\n }\n this.addManagedListener(this.params.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n };\n HeaderComp.prototype.onFilterChanged = function () {\n var filterPresent = this.params.column.isFilterActive();\n setDisplayed(this.eFilter, filterPresent, { skipAriaHidden: true });\n };\n HeaderComp.TEMPLATE = \"<div class=\\\"ag-cell-label-container\\\" role=\\\"presentation\\\">\\n <span ref=\\\"eMenu\\\" class=\\\"ag-header-icon ag-header-cell-menu-button\\\" aria-hidden=\\\"true\\\"></span>\\n <div ref=\\\"eLabel\\\" class=\\\"ag-header-cell-label\\\" role=\\\"presentation\\\">\\n <span ref=\\\"eText\\\" class=\\\"ag-header-cell-text\\\"></span>\\n <span ref=\\\"eFilter\\\" class=\\\"ag-header-icon ag-header-label-icon ag-filter-icon\\\" aria-hidden=\\\"true\\\"></span>\\n <ag-sort-indicator ref=\\\"eSortIndicator\\\"></ag-sort-indicator>\\n </div>\\n </div>\";\n __decorate$27([\n Autowired('sortController')\n ], HeaderComp.prototype, \"sortController\", void 0);\n __decorate$27([\n Autowired('menuFactory')\n ], HeaderComp.prototype, \"menuFactory\", void 0);\n __decorate$27([\n Autowired('columnModel')\n ], HeaderComp.prototype, \"columnModel\", void 0);\n __decorate$27([\n RefSelector('eFilter')\n ], HeaderComp.prototype, \"eFilter\", void 0);\n __decorate$27([\n RefSelector('eSortIndicator')\n ], HeaderComp.prototype, \"eSortIndicator\", void 0);\n __decorate$27([\n RefSelector('eMenu')\n ], HeaderComp.prototype, \"eMenu\", void 0);\n __decorate$27([\n RefSelector('eLabel')\n ], HeaderComp.prototype, \"eLabel\", void 0);\n __decorate$27([\n RefSelector('eText')\n ], HeaderComp.prototype, \"eText\", void 0);\n __decorate$27([\n RefSelector('eSortOrder')\n ], HeaderComp.prototype, \"eSortOrder\", void 0);\n __decorate$27([\n RefSelector('eSortAsc')\n ], HeaderComp.prototype, \"eSortAsc\", void 0);\n __decorate$27([\n RefSelector('eSortDesc')\n ], HeaderComp.prototype, \"eSortDesc\", void 0);\n __decorate$27([\n RefSelector('eSortMixed')\n ], HeaderComp.prototype, \"eSortMixed\", void 0);\n __decorate$27([\n RefSelector('eSortNone')\n ], HeaderComp.prototype, \"eSortNone\", void 0);\n return HeaderComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$26 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderGroupComp = /** @class */ (function (_super) {\n __extends$2j(HeaderGroupComp, _super);\n function HeaderGroupComp() {\n return _super.call(this, HeaderGroupComp.TEMPLATE) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n HeaderGroupComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n HeaderGroupComp.prototype.init = function (params) {\n this.params = params;\n this.checkWarnings();\n this.setupLabel();\n this.addGroupExpandIcon();\n this.setupExpandIcons();\n };\n HeaderGroupComp.prototype.checkWarnings = function () {\n var paramsAny = this.params;\n if (paramsAny.template) {\n var message_1 = \"AG Grid: A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)\";\n doOnce(function () { return console.warn(message_1); }, 'HeaderGroupComp.templateNotSupported');\n }\n };\n HeaderGroupComp.prototype.setupExpandIcons = function () {\n var _this = this;\n this.addInIcon(\"columnGroupOpened\", \"agOpened\");\n this.addInIcon(\"columnGroupClosed\", \"agClosed\");\n var expandAction = function (event) {\n if (isStopPropagationForAgGrid(event)) {\n return;\n }\n var newExpandedValue = !_this.params.columnGroup.isExpanded();\n _this.columnModel.setColumnGroupOpened(_this.params.columnGroup.getProvidedColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n };\n this.addTouchAndClickListeners(this.eCloseIcon, expandAction);\n this.addTouchAndClickListeners(this.eOpenIcon, expandAction);\n var stopPropagationAction = function (event) {\n stopPropagationForAgGrid(event);\n };\n // adding stopPropagation to the double click for the icons prevents double click action happening\n // when the icons are clicked. if the icons are double clicked, then the groups should open and\n // then close again straight away. if we also listened to double click, then the group would open,\n // close, then open, which is not what we want. double click should only action if the user double\n // clicks outside of the icons.\n this.addManagedListener(this.eCloseIcon, \"dblclick\", stopPropagationAction);\n this.addManagedListener(this.eOpenIcon, \"dblclick\", stopPropagationAction);\n this.addManagedListener(this.getGui(), \"dblclick\", expandAction);\n this.updateIconVisibility();\n var providedColumnGroup = this.params.columnGroup.getProvidedColumnGroup();\n this.addManagedListener(providedColumnGroup, ProvidedColumnGroup.EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));\n this.addManagedListener(providedColumnGroup, ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));\n };\n HeaderGroupComp.prototype.addTouchAndClickListeners = function (eElement, action) {\n var touchListener = new TouchListener(eElement, true);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, action);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n this.addManagedListener(eElement, \"click\", action);\n };\n HeaderGroupComp.prototype.updateIconVisibility = function () {\n var columnGroup = this.params.columnGroup;\n if (columnGroup.isExpandable()) {\n var expanded = this.params.columnGroup.isExpanded();\n setDisplayed(this.eOpenIcon, expanded);\n setDisplayed(this.eCloseIcon, !expanded);\n }\n else {\n setDisplayed(this.eOpenIcon, false);\n setDisplayed(this.eCloseIcon, false);\n }\n };\n HeaderGroupComp.prototype.addInIcon = function (iconName, refName) {\n var eIcon = createIconNoSpan(iconName, this.gridOptionsService, null);\n if (eIcon) {\n this.getRefElement(refName).appendChild(eIcon);\n }\n };\n HeaderGroupComp.prototype.addGroupExpandIcon = function () {\n if (!this.params.columnGroup.isExpandable()) {\n setDisplayed(this.eOpenIcon, false);\n setDisplayed(this.eCloseIcon, false);\n return;\n }\n };\n HeaderGroupComp.prototype.setupLabel = function () {\n var _a;\n // no renderer, default text render\n var _b = this.params, displayName = _b.displayName, columnGroup = _b.columnGroup;\n if (exists(displayName)) {\n var displayNameSanitised = escapeString(displayName);\n this.getRefElement('agLabel').innerHTML = displayNameSanitised;\n }\n this.addOrRemoveCssClass('ag-sticky-label', !!((_a = columnGroup.getColGroupDef()) === null || _a === void 0 ? void 0 : _a.stickyLabel));\n };\n HeaderGroupComp.TEMPLATE = \"<div class=\\\"ag-header-group-cell-label\\\" ref=\\\"agContainer\\\" role=\\\"presentation\\\">\\n <span ref=\\\"agLabel\\\" class=\\\"ag-header-group-text\\\" role=\\\"presentation\\\"></span>\\n <span ref=\\\"agOpened\\\" class=\\\"ag-header-icon ag-header-expand-icon ag-header-expand-icon-expanded\\\"></span>\\n <span ref=\\\"agClosed\\\" class=\\\"ag-header-icon ag-header-expand-icon ag-header-expand-icon-collapsed\\\"></span>\\n </div>\";\n __decorate$26([\n Autowired(\"columnModel\")\n ], HeaderGroupComp.prototype, \"columnModel\", void 0);\n __decorate$26([\n RefSelector(\"agOpened\")\n ], HeaderGroupComp.prototype, \"eOpenIcon\", void 0);\n __decorate$26([\n RefSelector(\"agClosed\")\n ], HeaderGroupComp.prototype, \"eCloseIcon\", void 0);\n return HeaderGroupComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar PopupComponent = /** @class */ (function (_super) {\n __extends$2i(PopupComponent, _super);\n function PopupComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupComponent.prototype.isPopup = function () {\n return true;\n };\n PopupComponent.prototype.setParentComponent = function (container) {\n container.addCssClass('ag-has-popup');\n _super.prototype.setParentComponent.call(this, container);\n };\n PopupComponent.prototype.destroy = function () {\n var parentComp = this.parentComponent;\n var hasParent = parentComp && parentComp.isAlive();\n if (hasParent) {\n parentComp.getGui().classList.remove('ag-has-popup');\n }\n _super.prototype.destroy.call(this);\n };\n return PopupComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$25 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LargeTextCellEditor = /** @class */ (function (_super) {\n __extends$2h(LargeTextCellEditor, _super);\n function LargeTextCellEditor() {\n return _super.call(this, LargeTextCellEditor.TEMPLATE) || this;\n }\n LargeTextCellEditor.prototype.init = function (params) {\n this.params = params;\n this.focusAfterAttached = params.cellStartedEdit;\n this.eTextArea\n .setMaxLength(params.maxLength || 200)\n .setCols(params.cols || 60)\n .setRows(params.rows || 10);\n if (exists(params.value, true)) {\n this.eTextArea.setValue(params.value.toString(), true);\n }\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n };\n LargeTextCellEditor.prototype.onKeyDown = function (event) {\n var key = event.key;\n if (key === KeyCode.LEFT ||\n key === KeyCode.UP ||\n key === KeyCode.RIGHT ||\n key === KeyCode.DOWN ||\n (event.shiftKey && key === KeyCode.ENTER)) { // shift+enter allows for newlines\n event.stopPropagation();\n }\n };\n LargeTextCellEditor.prototype.afterGuiAttached = function () {\n var translate = this.localeService.getLocaleTextFunc();\n this.eTextArea.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));\n if (this.focusAfterAttached) {\n this.eTextArea.getFocusableElement().focus();\n }\n };\n LargeTextCellEditor.prototype.getValue = function () {\n return this.params.parseValue(this.eTextArea.getValue());\n };\n LargeTextCellEditor.TEMPLATE = \"<div class=\\\"ag-large-text\\\" tabindex=\\\"0\\\">\\n <ag-input-text-area ref=\\\"eTextArea\\\" class=\\\"ag-large-text-input\\\"></ag-input-text-area>\\n </div>\";\n __decorate$25([\n RefSelector(\"eTextArea\")\n ], LargeTextCellEditor.prototype, \"eTextArea\", void 0);\n return LargeTextCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$24 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectCellEditor = /** @class */ (function (_super) {\n __extends$2g(SelectCellEditor, _super);\n function SelectCellEditor() {\n var _this = _super.call(this, '<div class=\"ag-cell-edit-wrapper\"><ag-select class=\"ag-cell-editor\" ref=\"eSelect\"></ag-select></div>') || this;\n _this.startedByEnter = false;\n return _this;\n }\n SelectCellEditor.prototype.init = function (params) {\n var _this = this;\n this.focusAfterAttached = params.cellStartedEdit;\n if (missing(params.values)) {\n console.warn('AG Grid: no values found for select cellEditor');\n return;\n }\n this.startedByEnter = params.eventKey != null ? params.eventKey === KeyCode.ENTER : false;\n var hasValue = false;\n params.values.forEach(function (value) {\n var option = { value: value };\n var valueFormatted = _this.valueFormatterService.formatValue(params.column, null, value);\n var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n option.text = valueFormattedExits ? valueFormatted : value;\n _this.eSelect.addOption(option);\n hasValue = hasValue || params.value === value;\n });\n if (hasValue) {\n this.eSelect.setValue(params.value, true);\n }\n else if (params.values.length) {\n this.eSelect.setValue(params.values[0], true);\n }\n // we don't want to add this if full row editing, otherwise selecting will stop the\n // full row editing.\n if (this.gridOptionsService.get('editType') !== 'fullRow') {\n this.addManagedListener(this.eSelect, AgSelect.EVENT_ITEM_SELECTED, function () { return params.stopEditing(); });\n }\n };\n SelectCellEditor.prototype.afterGuiAttached = function () {\n if (this.focusAfterAttached) {\n this.eSelect.getFocusableElement().focus();\n }\n if (this.startedByEnter) {\n this.eSelect.showPicker();\n }\n };\n SelectCellEditor.prototype.focusIn = function () {\n this.eSelect.getFocusableElement().focus();\n };\n SelectCellEditor.prototype.getValue = function () {\n return this.eSelect.getValue();\n };\n SelectCellEditor.prototype.isPopup = function () {\n return false;\n };\n __decorate$24([\n Autowired('valueFormatterService')\n ], SelectCellEditor.prototype, \"valueFormatterService\", void 0);\n __decorate$24([\n RefSelector('eSelect')\n ], SelectCellEditor.prototype, \"eSelect\", void 0);\n return SelectCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$23 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TextCellEditor = /** @class */ (function (_super) {\n __extends$2f(TextCellEditor, _super);\n function TextCellEditor() {\n return _super.call(this, TextCellEditor.TEMPLATE) || this;\n }\n TextCellEditor.prototype.init = function (params) {\n this.params = params;\n var eInput = this.eInput;\n var startValue;\n // cellStartedEdit is only false if we are doing fullRow editing\n if (params.cellStartedEdit) {\n this.focusAfterAttached = true;\n if (params.eventKey === KeyCode.BACKSPACE || params.eventKey === KeyCode.DELETE) {\n startValue = '';\n }\n else if (params.charPress) {\n startValue = params.charPress;\n }\n else {\n startValue = this.getStartValue(params);\n if (params.eventKey !== KeyCode.F2) {\n this.highlightAllOnFocus = true;\n }\n }\n }\n else {\n this.focusAfterAttached = false;\n startValue = this.getStartValue(params);\n }\n if (startValue != null) {\n eInput.setValue(startValue, true);\n }\n if (params.maxLength != null) {\n eInput.setMaxLength(params.maxLength);\n }\n this.addManagedListener(eInput.getGui(), 'keydown', function (event) {\n var key = event.key;\n if (key === KeyCode.PAGE_UP || key === KeyCode.PAGE_DOWN) {\n event.preventDefault();\n }\n });\n };\n TextCellEditor.prototype.afterGuiAttached = function () {\n var translate = this.localeService.getLocaleTextFunc();\n var eInput = this.eInput;\n eInput.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));\n if (!this.focusAfterAttached) {\n return;\n }\n // Added for AG-3238. We can't remove this explicit focus() because Chrome requires an input\n // to be focused before setSelectionRange will work. But it triggers a bug in Safari where\n // explicitly focusing then blurring an empty field will cause the parent container to scroll.\n if (!isBrowserSafari()) {\n eInput.getFocusableElement().focus();\n }\n var inputEl = eInput.getInputElement();\n if (this.highlightAllOnFocus) {\n inputEl.select();\n }\n else {\n // when we started editing, we want the caret at the end, not the start.\n // this comes into play in two scenarios:\n // a) when user hits F2\n // b) when user hits a printable character\n var value = eInput.getValue();\n var len = (exists(value) && value.length) || 0;\n if (len) {\n inputEl.setSelectionRange(len, len);\n }\n }\n };\n // gets called when tabbing trough cells and in full row edit mode\n TextCellEditor.prototype.focusIn = function () {\n var eInput = this.eInput;\n var focusEl = eInput.getFocusableElement();\n var inputEl = eInput.getInputElement();\n focusEl.focus();\n inputEl.select();\n };\n TextCellEditor.prototype.getValue = function () {\n var eInput = this.eInput;\n return this.params.parseValue(eInput.getValue());\n };\n TextCellEditor.prototype.getStartValue = function (params) {\n var formatValue = params.useFormatter || params.column.getColDef().refData;\n return formatValue ? params.formatValue(params.value) : params.value;\n };\n TextCellEditor.prototype.isPopup = function () {\n return false;\n };\n TextCellEditor.TEMPLATE = \"<div class=\\\"ag-cell-edit-wrapper\\\">\\n <ag-input-text-field class=\\\"ag-cell-editor\\\" ref=\\\"eInput\\\"></ag-input-text-field>\\n </div>\";\n __decorate$23([\n RefSelector('eInput')\n ], TextCellEditor.prototype, \"eInput\", void 0);\n return TextCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$22 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ARROW_UP = '\\u2191';\nvar ARROW_DOWN = '\\u2193';\nvar AnimateShowChangeCellRenderer = /** @class */ (function (_super) {\n __extends$2e(AnimateShowChangeCellRenderer, _super);\n function AnimateShowChangeCellRenderer() {\n var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n return _this;\n }\n AnimateShowChangeCellRenderer.prototype.init = function (params) {\n // this.params = params;\n this.eValue = this.queryForHtmlElement('.ag-value-change-value');\n this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');\n this.refresh(params);\n };\n AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {\n var absDelta = Math.abs(delta);\n var valueFormatted = params.formatValue(absDelta);\n var valueToUse = exists(valueFormatted) ? valueFormatted : absDelta;\n var deltaUp = (delta >= 0);\n if (deltaUp) {\n this.eDelta.innerHTML = ARROW_UP + valueToUse;\n }\n else {\n // because negative, use ABS to remove sign\n this.eDelta.innerHTML = ARROW_DOWN + valueToUse;\n }\n this.eDelta.classList.toggle('ag-value-change-delta-up', deltaUp);\n this.eDelta.classList.toggle('ag-value-change-delta-down', !deltaUp);\n };\n AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {\n var _this = this;\n // the refreshCount makes sure that if the value updates again while\n // the below timer is waiting, then the below timer will realise it\n // is not the most recent and will not try to remove the delta value.\n this.refreshCount++;\n var refreshCountCopy = this.refreshCount;\n window.setTimeout(function () {\n if (refreshCountCopy === _this.refreshCount) {\n _this.hideDeltaValue();\n }\n }, 2000);\n };\n AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {\n this.eValue.classList.remove('ag-value-change-value-highlight');\n clearElement(this.eDelta);\n };\n AnimateShowChangeCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (value === this.lastValue) {\n return false;\n }\n if (exists(params.valueFormatted)) {\n this.eValue.innerHTML = params.valueFormatted;\n }\n else if (exists(params.value)) {\n this.eValue.innerHTML = value;\n }\n else {\n clearElement(this.eValue);\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return false;\n }\n if (typeof value === 'number' && typeof this.lastValue === 'number') {\n var delta = value - this.lastValue;\n this.showDelta(params, delta);\n }\n // highlight the current value, but only if it's not new, otherwise it\n // would get highlighted first time the value is shown\n if (this.lastValue) {\n this.eValue.classList.add('ag-value-change-value-highlight');\n }\n this.setTimerToRemoveDelta();\n this.lastValue = value;\n return true;\n };\n AnimateShowChangeCellRenderer.TEMPLATE = '<span>' +\n '<span class=\"ag-value-change-delta\"></span>' +\n '<span class=\"ag-value-change-value\"></span>' +\n '</span>';\n __decorate$22([\n Autowired('filterManager')\n ], AnimateShowChangeCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateShowChangeCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$21 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AnimateSlideCellRenderer = /** @class */ (function (_super) {\n __extends$2d(AnimateSlideCellRenderer, _super);\n function AnimateSlideCellRenderer() {\n var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');\n return _this;\n }\n AnimateSlideCellRenderer.prototype.init = function (params) {\n this.refresh(params);\n };\n AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {\n var _this = this;\n this.refreshCount++;\n // below we keep checking this, and stop working on the animation\n // if it no longer matches - this means another animation has started\n // and this one is stale.\n var refreshCountCopy = this.refreshCount;\n // if old animation, remove it\n if (this.ePrevious) {\n this.getGui().removeChild(this.ePrevious);\n }\n this.ePrevious = loadTemplate('<span class=\"ag-value-slide-previous ag-value-slide-out\"></span>');\n this.ePrevious.innerHTML = this.eCurrent.innerHTML;\n this.getGui().insertBefore(this.ePrevious, this.eCurrent);\n // having timeout of 0 allows use to skip to the next css turn,\n // so we know the previous css classes have been applied. so the\n // complex set of setTimeout below creates the animation\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _this.ePrevious.classList.add('ag-value-slide-out-end');\n }, 50);\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _this.getGui().removeChild(_this.ePrevious);\n _this.ePrevious = null;\n }, 3000);\n };\n AnimateSlideCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (missing(value)) {\n value = '';\n }\n if (value === this.lastValue) {\n return false;\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return false;\n }\n this.addSlideAnimation();\n this.lastValue = value;\n if (exists(params.valueFormatted)) {\n this.eCurrent.innerHTML = params.valueFormatted;\n }\n else if (exists(params.value)) {\n this.eCurrent.innerHTML = value;\n }\n else {\n clearElement(this.eCurrent);\n }\n return true;\n };\n AnimateSlideCellRenderer.TEMPLATE = \"<span>\\n <span class=\\\"ag-value-slide-current\\\"></span>\\n </span>\";\n __decorate$21([\n Autowired('filterManager')\n ], AnimateSlideCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateSlideCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$e = (undefined && undefined.__assign) || function () {\n __assign$e = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$e.apply(this, arguments);\n};\nvar RowNode = /** @class */ (function () {\n function RowNode(beans) {\n /** The current row index. If the row is filtered out or in a collapsed group, this value will be `null`. */\n this.rowIndex = null;\n /** The key for the group eg Ireland, UK, USA */\n this.key = null;\n /** Children mapped by the pivot columns. */\n this.childrenMapped = {};\n /**\n * This will be `true` if it has a rowIndex assigned, otherwise `false`.\n */\n this.displayed = false;\n /** The row top position in pixels. */\n this.rowTop = null;\n /** The top pixel for this row last time, makes sense if data set was ordered or filtered,\n * it is used so new rows can animate in from their old position. */\n this.oldRowTop = null;\n /** `true` by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n this.selectable = true;\n /** Used by sorting service - to give deterministic sort to groups. Previously we\n * just id for this, however id is a string and had slower sorting compared to numbers. */\n this.__objectId = RowNode.OBJECT_ID_SEQUENCE++;\n /** When one or more Columns are using autoHeight, this keeps track of height of each autoHeight Cell,\n * indexed by the Column ID. */\n this.__autoHeights = {};\n /** `true` when nodes with the same id are being removed and added as part of the same batch transaction */\n this.alreadyRendered = false;\n this.highlighted = null;\n this.hovered = false;\n this.selected = false;\n this.beans = beans;\n }\n /**\n * Replaces the data on the `rowNode`. When this method is called, the grid will refresh the entire rendered row if it is displayed.\n */\n RowNode.prototype.setData = function (data) {\n this.setDataCommon(data, false);\n };\n // similar to setRowData, however it is expected that the data is the same data item. this\n // is intended to be used with Redux type stores, where the whole data can be changed. we are\n // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n /**\n * Updates the data on the `rowNode`. When this method is called, the grid will refresh the entire rendered row if it is displayed.\n */\n RowNode.prototype.updateData = function (data) {\n this.setDataCommon(data, true);\n };\n RowNode.prototype.setDataCommon = function (data, update) {\n var oldData = this.data;\n this.data = data;\n this.beans.valueCache.onDataChanged();\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n this.resetQuickFilterAggregateText();\n var event = this.createDataChangedEvent(data, oldData, update);\n this.dispatchLocalEvent(event);\n };\n // when we are doing master / detail, the detail node is lazy created, but then kept around.\n // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n // in sync, otherwise expand/collapse of the detail would still show the old values.\n RowNode.prototype.updateDataOnDetailNode = function () {\n if (this.detailNode) {\n this.detailNode.data = this.data;\n }\n };\n RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {\n return {\n type: RowNode.EVENT_DATA_CHANGED,\n node: this,\n oldData: oldData,\n newData: newData,\n update: update\n };\n };\n RowNode.prototype.createLocalRowEvent = function (type) {\n return {\n type: type,\n node: this\n };\n };\n RowNode.prototype.getRowIndexString = function () {\n if (this.rowPinned === 'top') {\n return 't-' + this.rowIndex;\n }\n if (this.rowPinned === 'bottom') {\n return 'b-' + this.rowIndex;\n }\n return this.rowIndex.toString();\n };\n RowNode.prototype.createDaemonNode = function () {\n var oldNode = new RowNode(this.beans);\n // just copy the id and data, this is enough for the node to be used\n // in the selection controller (the selection controller is the only\n // place where daemon nodes can live).\n oldNode.id = this.id;\n oldNode.data = this.data;\n oldNode.__daemon = true;\n oldNode.selected = this.selected;\n oldNode.level = this.level;\n return oldNode;\n };\n RowNode.prototype.setDataAndId = function (data, id) {\n var oldNode = exists(this.id) ? this.createDaemonNode() : null;\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.setId(id);\n this.beans.selectionService.syncInRowNode(this, oldNode);\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.checkRowSelectable = function () {\n var isRowSelectableFunc = this.beans.gridOptionsService.get('isRowSelectable');\n this.setRowSelectable(isRowSelectableFunc ? isRowSelectableFunc(this) : true);\n };\n RowNode.prototype.setRowSelectable = function (newVal) {\n if (this.selectable !== newVal) {\n this.selectable = newVal;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));\n }\n var isGroupSelectsChildren = this.beans.gridOptionsService.is('groupSelectsChildren');\n if (isGroupSelectsChildren) {\n var selected = this.calculateSelectedFromChildren();\n this.setSelectedParams({ newValue: selected !== null && selected !== void 0 ? selected : false, source: 'selectableChanged' });\n }\n }\n };\n RowNode.prototype.setId = function (id) {\n // see if user is providing the id's\n var getRowIdFunc = this.beans.gridOptionsService.getRowIdFunc();\n if (getRowIdFunc) {\n // if user is providing the id's, then we set the id only after the data has been set.\n // this is important for virtual pagination and viewport, where empty rows exist.\n if (this.data) {\n // we pass 'true' as we skip this level when generating keys,\n // as we don't always have the key for this level (eg when updating\n // data via transaction on SSRM, we are getting key to look up the\n // RowNode, don't have the RowNode yet, thus no way to get the current key)\n var parentKeys = this.getGroupKeys(true);\n this.id = getRowIdFunc({\n data: this.data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level: this.level\n });\n // make sure id provided doesn't start with 'row-group-' as this is reserved. also check that\n // it has 'startsWith' in case the user provided a number.\n if (this.id !== null && typeof this.id === 'string' && this.id.startsWith(RowNode.ID_PREFIX_ROW_GROUP)) {\n console.error(\"AG Grid: Row IDs cannot start with \" + RowNode.ID_PREFIX_ROW_GROUP + \", this is a reserved prefix for AG Grid's row grouping feature.\");\n }\n // force id to be a string\n if (this.id !== null && typeof this.id !== 'string') {\n this.id = '' + this.id;\n }\n }\n else {\n // this can happen if user has set blank into the rowNode after the row previously\n // having data. this happens in virtual page row model, when data is delete and\n // the page is refreshed.\n this.id = undefined;\n }\n }\n else {\n this.id = id;\n }\n };\n RowNode.prototype.getGroupKeys = function (excludeSelf) {\n if (excludeSelf === void 0) { excludeSelf = false; }\n var keys = [];\n var pointer = this;\n if (excludeSelf) {\n pointer = pointer.parent;\n }\n while (pointer && pointer.level >= 0) {\n keys.push(pointer.key);\n pointer = pointer.parent;\n }\n keys.reverse();\n return keys;\n };\n RowNode.prototype.isPixelInRange = function (pixel) {\n if (!exists(this.rowTop) || !exists(this.rowHeight)) {\n return false;\n }\n return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);\n };\n RowNode.prototype.setFirstChild = function (firstChild) {\n if (this.firstChild === firstChild) {\n return;\n }\n this.firstChild = firstChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setLastChild = function (lastChild) {\n if (this.lastChild === lastChild) {\n return;\n }\n this.lastChild = lastChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setChildIndex = function (childIndex) {\n if (this.childIndex === childIndex) {\n return;\n }\n this.childIndex = childIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setRowTop = function (rowTop) {\n this.oldRowTop = this.rowTop;\n if (this.rowTop === rowTop) {\n return;\n }\n this.rowTop = rowTop;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));\n }\n this.setDisplayed(rowTop !== null);\n };\n RowNode.prototype.clearRowTopAndRowIndex = function () {\n this.oldRowTop = null;\n this.setRowTop(null);\n this.setRowIndex(null);\n };\n RowNode.prototype.setDisplayed = function (displayed) {\n if (this.displayed === displayed) {\n return;\n }\n this.displayed = displayed;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DISPLAYED_CHANGED));\n }\n };\n RowNode.prototype.setDragging = function (dragging) {\n if (this.dragging === dragging) {\n return;\n }\n this.dragging = dragging;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));\n }\n };\n RowNode.prototype.setHighlighted = function (highlighted) {\n if (highlighted === this.highlighted) {\n return;\n }\n this.highlighted = highlighted;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HIGHLIGHT_CHANGED));\n }\n };\n RowNode.prototype.setHovered = function (hovered) {\n if (this.hovered === hovered) {\n return;\n }\n this.hovered = hovered;\n };\n RowNode.prototype.isHovered = function () {\n return this.hovered;\n };\n RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {\n if (this.allChildrenCount === allChildrenCount) {\n return;\n }\n this.allChildrenCount = allChildrenCount;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));\n }\n };\n RowNode.prototype.setMaster = function (master) {\n if (this.master === master) {\n return;\n }\n // if changing AWAY from master, then unexpand, otherwise\n // next time it's shown it is expanded again\n if (this.master && !master) {\n this.expanded = false;\n }\n this.master = master;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_MASTER_CHANGED));\n }\n };\n RowNode.prototype.setGroup = function (group) {\n if (this.group === group) {\n return;\n }\n // if we used to be a group, and no longer, then close the node\n if (this.group && !group) {\n this.expanded = false;\n }\n this.group = group;\n this.updateHasChildren();\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_GROUP_CHANGED));\n }\n };\n /**\n * Sets the row height.\n * Call if you want to change the height initially assigned to the row.\n * After calling, you must call `api.onRowHeightChanged()` so the grid knows it needs to work out the placement of the rows. */\n RowNode.prototype.setRowHeight = function (rowHeight, estimated) {\n if (estimated === void 0) { estimated = false; }\n this.rowHeight = rowHeight;\n this.rowHeightEstimated = estimated;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));\n }\n };\n RowNode.prototype.setRowAutoHeight = function (cellHeight, column) {\n if (!this.__autoHeights) {\n this.__autoHeights = {};\n }\n this.__autoHeights[column.getId()] = cellHeight;\n if (cellHeight != null) {\n if (this.checkAutoHeightsDebounced == null) {\n this.checkAutoHeightsDebounced = debounce(this.checkAutoHeights.bind(this), 1);\n }\n this.checkAutoHeightsDebounced();\n }\n };\n RowNode.prototype.checkAutoHeights = function () {\n var _this = this;\n var notAllPresent = false;\n var nonePresent = true;\n var newRowHeight = 0;\n var autoHeights = this.__autoHeights;\n if (autoHeights == null) {\n return;\n }\n var displayedAutoHeightCols = this.beans.columnModel.getAllDisplayedAutoHeightCols();\n displayedAutoHeightCols.forEach(function (col) {\n var cellHeight = autoHeights[col.getId()];\n if (cellHeight == null) {\n // If column spanning is active a column may not provide auto height for a row if that\n // cell is not present for the given row due to a previous cell spanning over the auto height column.\n if (_this.beans.columnModel.isColSpanActive()) {\n var activeColsForRow = [];\n switch (col.getPinned()) {\n case 'left':\n activeColsForRow = _this.beans.columnModel.getDisplayedLeftColumnsForRow(_this);\n break;\n case 'right':\n activeColsForRow = _this.beans.columnModel.getDisplayedRightColumnsForRow(_this);\n break;\n case null:\n activeColsForRow = _this.beans.columnModel.getViewportCenterColumnsForRow(_this);\n break;\n }\n if (activeColsForRow.includes(col)) {\n // Column is present in the row, i.e not spanned over, but no auto height was provided so we cannot calculate the row height\n notAllPresent = true;\n return;\n }\n // Ignore this column as it is spanned over and not present in the row\n cellHeight = -1;\n }\n else {\n notAllPresent = true;\n return;\n }\n }\n else {\n // At least one auto height is present\n nonePresent = false;\n }\n if (cellHeight > newRowHeight) {\n newRowHeight = cellHeight;\n }\n });\n if (notAllPresent) {\n return;\n }\n // we take min of 10, so we don't adjust for empty rows. if <10, we put to default.\n // this prevents the row starting very small when waiting for async components,\n // which would then mean the grid squashes in far to many rows (as small heights\n // means more rows fit in) which looks crap. so best ignore small values and assume\n // we are still waiting for values to render.\n if (nonePresent || newRowHeight < 10) {\n newRowHeight = this.beans.gridOptionsService.getRowHeightForNode(this).height;\n }\n if (newRowHeight == this.rowHeight) {\n return;\n }\n this.setRowHeight(newRowHeight);\n var rowModel = this.beans.rowModel;\n if (rowModel.onRowHeightChangedDebounced) {\n rowModel.onRowHeightChangedDebounced();\n }\n };\n RowNode.prototype.setRowIndex = function (rowIndex) {\n if (this.rowIndex === rowIndex) {\n return;\n }\n this.rowIndex = rowIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setUiLevel = function (uiLevel) {\n if (this.uiLevel === uiLevel) {\n return;\n }\n this.uiLevel = uiLevel;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));\n }\n };\n /**\n * Set the expanded state of this rowNode. Pass `true` to expand and `false` to collapse.\n */\n RowNode.prototype.setExpanded = function (expanded, e) {\n if (this.expanded === expanded) {\n return;\n }\n this.expanded = expanded;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));\n }\n var event = Object.assign({}, this.createGlobalRowEvent(Events.EVENT_ROW_GROUP_OPENED), {\n expanded: expanded,\n event: e || null\n });\n this.beans.rowNodeEventThrottle.dispatchExpanded(event);\n // when using footers we need to refresh the group row, as the aggregation\n // values jump between group and footer\n if (this.beans.gridOptionsService.is('groupIncludeFooter')) {\n this.beans.rowRenderer.refreshCells({ rowNodes: [this] });\n }\n };\n RowNode.prototype.createGlobalRowEvent = function (type) {\n return {\n type: type,\n node: this,\n data: this.data,\n rowIndex: this.rowIndex,\n rowPinned: this.rowPinned,\n context: this.beans.gridOptionsService.context,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi\n };\n };\n RowNode.prototype.dispatchLocalEvent = function (event) {\n if (this.eventService) {\n this.eventService.dispatchEvent(event);\n }\n };\n /**\n * Replaces the value on the `rowNode` for the specified column. When complete,\n * the grid will refresh the rendered cell on the required row only.\n * **Note**: This method on fires `onCellEditRequest` when the Grid is on **Read Only** mode.\n *\n * @param colKey The column where the value should be updated\n * @param newValue The new value\n * @param eventSource The source of the event\n * @returns `True` if the value was changed, otherwise `False`.\n */\n RowNode.prototype.setDataValue = function (colKey, newValue, eventSource) {\n var _this = this;\n var getColumnFromKey = function () {\n var _a;\n if (typeof colKey !== 'string') {\n return colKey;\n }\n // if in pivot mode, grid columns wont include primary columns\n return (_a = _this.beans.columnModel.getGridColumn(colKey)) !== null && _a !== void 0 ? _a : _this.beans.columnModel.getPrimaryColumn(colKey);\n };\n // When it is done via the editors, no 'cell changed' event gets fired, as it's assumed that\n // the cell knows about the change given it's in charge of the editing.\n // this method is for the client to call, so the cell listens for the change\n // event, and also flashes the cell when the change occurs.\n var column = getColumnFromKey();\n var oldValue = this.getValueFromValueService(column);\n if (this.beans.gridOptionsService.is('readOnlyEdit')) {\n this.dispatchEventForSaveValueReadOnly(column, oldValue, newValue, eventSource);\n return false;\n }\n var valueChanged = this.beans.valueService.setValue(this, column, newValue, eventSource);\n this.dispatchCellChangedEvent(column, newValue, oldValue);\n this.checkRowSelectable();\n return valueChanged;\n };\n RowNode.prototype.getValueFromValueService = function (column) {\n // if we don't check this, then the grid will render leaf groups as open even if we are not\n // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow\n // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded\n // them via the API, or user user expanded them in the UI before turning on pivot mode\n var lockedClosedGroup = this.leafGroup && this.beans.columnModel.isPivotMode();\n var isOpenGroup = this.group && this.expanded && !this.footer && !lockedClosedGroup;\n // are we showing group footers\n var groupFootersEnabled = this.beans.gridOptionsService.is('groupIncludeFooter');\n // if doing footers, we normally don't show agg data at group level when group is open\n var groupAlwaysShowAggData = this.beans.gridOptionsService.is('groupSuppressBlankHeader');\n // if doing grouping and footers, we don't want to include the agg value\n // in the header when the group is open\n var ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;\n var value = this.beans.valueService.getValue(column, this, false, ignoreAggData);\n return value;\n };\n RowNode.prototype.dispatchEventForSaveValueReadOnly = function (column, oldValue, newValue, eventSource) {\n var event = {\n type: Events.EVENT_CELL_EDIT_REQUEST,\n event: null,\n rowIndex: this.rowIndex,\n rowPinned: this.rowPinned,\n column: column,\n colDef: column.getColDef(),\n context: this.beans.gridOptionsService.context,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n data: this.data,\n node: this,\n oldValue: oldValue,\n newValue: newValue,\n value: newValue,\n source: eventSource\n };\n this.beans.eventService.dispatchEvent(event);\n };\n RowNode.prototype.setGroupValue = function (colKey, newValue) {\n var column = this.beans.columnModel.getGridColumn(colKey);\n if (missing(this.groupData)) {\n this.groupData = {};\n }\n var columnId = column.getColId();\n var oldValue = this.groupData[columnId];\n if (oldValue === newValue) {\n return;\n }\n this.groupData[columnId] = newValue;\n this.dispatchCellChangedEvent(column, newValue, oldValue);\n };\n // sets the data for an aggregation\n RowNode.prototype.setAggData = function (newAggData) {\n var _this = this;\n // find out all keys that could potentially change\n var colIds = getAllKeysInObjects([this.aggData, newAggData]);\n var oldAggData = this.aggData;\n this.aggData = newAggData;\n // if no event service, nobody has registered for events, so no need fire event\n if (this.eventService) {\n colIds.forEach(function (colId) {\n var column = _this.beans.columnModel.getGridColumn(colId);\n var value = _this.aggData ? _this.aggData[colId] : undefined;\n var oldValue = oldAggData ? oldAggData[colId] : undefined;\n _this.dispatchCellChangedEvent(column, value, oldValue);\n });\n }\n };\n RowNode.prototype.updateHasChildren = function () {\n // in CSRM, the group property will be set before the childrenAfterGroup property, check both to prevent flickering\n var newValue = (this.group && !this.footer) || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n var isSsrm = this.beans.gridOptionsService.isRowModelType('serverSide');\n if (isSsrm) {\n var isTreeData = this.beans.gridOptionsService.isTreeData();\n var isGroupFunc = this.beans.gridOptionsService.get('isServerSideGroup');\n // stubs and footers can never have children, as they're grid rows. if tree data the presence of children\n // is determined by the isServerSideGroup callback, if not tree data then the rows group property will be set.\n newValue = !this.stub && !this.footer && (isTreeData ? !!isGroupFunc && isGroupFunc(this.data) : !!this.group);\n }\n if (newValue !== this.__hasChildren) {\n this.__hasChildren = !!newValue;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HAS_CHILDREN_CHANGED));\n }\n }\n };\n RowNode.prototype.hasChildren = function () {\n if (this.__hasChildren == null) {\n this.updateHasChildren();\n }\n return this.__hasChildren;\n };\n RowNode.prototype.isEmptyRowGroupNode = function () {\n return this.group && missingOrEmpty(this.childrenAfterGroup);\n };\n RowNode.prototype.dispatchCellChangedEvent = function (column, newValue, oldValue) {\n var cellChangedEvent = {\n type: RowNode.EVENT_CELL_CHANGED,\n node: this,\n column: column,\n newValue: newValue,\n oldValue: oldValue\n };\n this.dispatchLocalEvent(cellChangedEvent);\n };\n /**\n * The first time `quickFilter` runs, the grid creates a one-off string representation of the row.\n * This string is then used for the quick filter instead of hitting each column separately.\n * When you edit, using grid editing, this string gets cleared down.\n * However if you edit without using grid editing, you will need to clear this string down for the row to be updated with the new values.\n * Otherwise new values will not work with the `quickFilter`. */\n RowNode.prototype.resetQuickFilterAggregateText = function () {\n this.quickFilterAggregateText = null;\n };\n /** Returns:\n * - `true` if the node can be expanded, i.e it is a group or master row.\n * - `false` if the node cannot be expanded\n */\n RowNode.prototype.isExpandable = function () {\n return (this.hasChildren() && !this.footer) || this.master ? true : false;\n };\n /** Returns:\n * - `true` if node is selected,\n * - `false` if the node isn't selected\n * - `undefined` if it's partially selected (group where not all children are selected). */\n RowNode.prototype.isSelected = function () {\n // for footers, we just return what our sibling selected state is, as cannot select a footer\n if (this.footer) {\n return this.sibling.isSelected();\n }\n return this.selected;\n };\n /** Perform a depth-first search of this node and its children. */\n RowNode.prototype.depthFirstSearch = function (callback) {\n if (this.childrenAfterGroup) {\n this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });\n }\n callback(this);\n };\n // + selectionController.calculatedSelectedForAllGroupNodes()\n RowNode.prototype.calculateSelectedFromChildren = function () {\n var _a;\n var atLeastOneSelected = false;\n var atLeastOneDeSelected = false;\n var atLeastOneMixed = false;\n if (!((_a = this.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n return this.selectable ? this.selected : null;\n }\n for (var i = 0; i < this.childrenAfterGroup.length; i++) {\n var child = this.childrenAfterGroup[i];\n var childState = child.isSelected();\n // non-selectable nodes must be calculated from their children, or ignored if no value results.\n if (!child.selectable) {\n var selectable = child.calculateSelectedFromChildren();\n if (selectable === null) {\n continue;\n }\n childState = selectable;\n }\n switch (childState) {\n case true:\n atLeastOneSelected = true;\n break;\n case false:\n atLeastOneDeSelected = true;\n break;\n default:\n atLeastOneMixed = true;\n break;\n }\n }\n if (atLeastOneMixed || (atLeastOneSelected && atLeastOneDeSelected)) {\n return undefined;\n }\n if (atLeastOneSelected) {\n return true;\n }\n if (atLeastOneDeSelected) {\n return false;\n }\n if (!this.selectable) {\n return null;\n }\n return this.selected;\n };\n RowNode.prototype.setSelectedInitialValue = function (selected) {\n this.selected = selected;\n };\n RowNode.prototype.selectThisNode = function (newValue, e, source) {\n if (source === void 0) { source = 'api'; }\n // we only check selectable when newValue=true (ie selecting) to allow unselecting values,\n // as selectable is dynamic, need a way to unselect rows when selectable becomes false.\n var selectionNotAllowed = !this.selectable && newValue;\n var selectionNotChanged = this.selected === newValue;\n if (selectionNotAllowed || selectionNotChanged) {\n return false;\n }\n this.selected = newValue;\n if (this.eventService) {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));\n }\n var event = __assign$e(__assign$e({}, this.createGlobalRowEvent(Events.EVENT_ROW_SELECTED)), { event: e || null, source: source });\n this.beans.eventService.dispatchEvent(event);\n return true;\n };\n /**\n * Select (or deselect) the node.\n * @param newValue -`true` for selection, `false` for deselection.\n * @param clearSelection - If selecting, then passing `true` will select the node exclusively (i.e. NOT do multi select). If doing deselection, `clearSelection` has no impact.\n * @param suppressFinishActions - Pass `true` to prevent the `selectionChanged` from being fired. Note that the `rowSelected` event will still be fired.\n * @param source - Source property that will appear in the `selectionChanged` event.\n */\n RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions, source) {\n if (clearSelection === void 0) { clearSelection = false; }\n if (suppressFinishActions === void 0) { suppressFinishActions = false; }\n if (source === void 0) { source = 'api'; }\n this.setSelectedParams({\n newValue: newValue,\n clearSelection: clearSelection,\n suppressFinishActions: suppressFinishActions,\n rangeSelect: false,\n source: source\n });\n };\n // to make calling code more readable, this is the same method as setSelected except it takes names parameters\n RowNode.prototype.setSelectedParams = function (params) {\n if (this.rowPinned) {\n console.warn('AG Grid: cannot select pinned rows');\n return 0;\n }\n if (this.id === undefined) {\n console.warn('AG Grid: cannot select node until id for node is known');\n return 0;\n }\n return this.beans.selectionService.setNodeSelected(__assign$e(__assign$e({}, params), { node: this.footer ? this.sibling : this }));\n };\n /**\n * Returns:\n * - `true` if node is either pinned to the `top` or `bottom`\n * - `false` if the node isn't pinned\n */\n RowNode.prototype.isRowPinned = function () {\n return this.rowPinned === 'top' || this.rowPinned === 'bottom';\n };\n RowNode.prototype.isParentOfNode = function (potentialParent) {\n var parentNode = this.parent;\n while (parentNode) {\n if (parentNode === potentialParent) {\n return true;\n }\n parentNode = parentNode.parent;\n }\n return false;\n };\n /** Add an event listener. */\n RowNode.prototype.addEventListener = function (eventType, listener) {\n if (!this.eventService) {\n this.eventService = new EventService();\n }\n this.eventService.addEventListener(eventType, listener);\n };\n /** Remove event listener. */\n RowNode.prototype.removeEventListener = function (eventType, listener) {\n if (!this.eventService) {\n return;\n }\n this.eventService.removeEventListener(eventType, listener);\n if (this.eventService.noRegisteredListenersExist()) {\n this.eventService = null;\n }\n };\n RowNode.prototype.onMouseEnter = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n };\n RowNode.prototype.onMouseLeave = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n };\n RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {\n var currentRowNode = this;\n var isCandidate = true;\n var foundFirstChildPath = false;\n var nodeToSwapIn = null;\n // if we are hiding groups, then if we are the first child, of the first child,\n // all the way up to the column we are interested in, then we show the group cell.\n while (isCandidate && !foundFirstChildPath) {\n var parentRowNode = currentRowNode.parent;\n var firstChild = exists(parentRowNode) && currentRowNode.firstChild;\n if (firstChild) {\n if (parentRowNode.rowGroupColumn === rowGroupColumn) {\n foundFirstChildPath = true;\n nodeToSwapIn = parentRowNode;\n }\n }\n else {\n isCandidate = false;\n }\n currentRowNode = parentRowNode;\n }\n return foundFirstChildPath ? nodeToSwapIn : null;\n };\n /**\n * Returns:\n * - `true` if the node is a full width cell\n * - `false` if the node is not a full width cell\n */\n RowNode.prototype.isFullWidthCell = function () {\n var isFullWidthCellFunc = this.getIsFullWidthCellFunc();\n return isFullWidthCellFunc ? isFullWidthCellFunc({ rowNode: this }) : false;\n };\n RowNode.prototype.getIsFullWidthCellFunc = function () {\n var isFullWidthRow = this.beans.gridOptionsService.getCallback('isFullWidthRow');\n if (isFullWidthRow) {\n return isFullWidthRow;\n }\n // this is the deprecated way, so provide a proxy to make it compatible\n var isFullWidthCell = this.beans.gridOptionsService.get('isFullWidthCell');\n if (isFullWidthCell) {\n return function (params) { return isFullWidthCell(params.rowNode); };\n }\n };\n /**\n * Returns the route of the row node. If the Row Node is a group, it returns the route to that Row Node.\n * If the Row Node is not a group, it returns `undefined`.\n */\n RowNode.prototype.getRoute = function () {\n if (this.key == null) {\n return;\n }\n var res = [];\n var pointer = this;\n while (pointer.key != null) {\n res.push(pointer.key);\n pointer = pointer.parent;\n }\n return res.reverse();\n };\n RowNode.prototype.createFooter = function () {\n var _this = this;\n // only create footer node once, otherwise we have daemons and\n // the animate screws up with the daemons hanging around\n if (this.sibling) {\n return;\n }\n var footerNode = new RowNode(this.beans);\n Object.keys(this).forEach(function (key) {\n footerNode[key] = _this[key];\n });\n footerNode.footer = true;\n footerNode.setRowTop(null);\n footerNode.setRowIndex(null);\n // manually set oldRowTop to null so we discard any\n // previous information about its position.\n footerNode.oldRowTop = null;\n footerNode.id = 'rowGroupFooter_' + this.id;\n // get both header and footer to reference each other as siblings. this is never undone,\n // only overwritten. so if a group is expanded, then contracted, it will have a ghost\n // sibling - but that's fine, as we can ignore this if the header is contracted.\n footerNode.sibling = this;\n this.sibling = footerNode;\n };\n RowNode.ID_PREFIX_ROW_GROUP = 'row-group-';\n RowNode.ID_PREFIX_TOP_PINNED = 't-';\n RowNode.ID_PREFIX_BOTTOM_PINNED = 'b-';\n RowNode.OBJECT_ID_SEQUENCE = 0;\n RowNode.EVENT_ROW_SELECTED = 'rowSelected';\n RowNode.EVENT_DATA_CHANGED = 'dataChanged';\n RowNode.EVENT_CELL_CHANGED = 'cellChanged';\n RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\n RowNode.EVENT_MASTER_CHANGED = 'masterChanged';\n RowNode.EVENT_GROUP_CHANGED = 'groupChanged';\n RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\n RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\n RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\n RowNode.EVENT_TOP_CHANGED = 'topChanged';\n RowNode.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\n RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\n RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\n RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\n RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n RowNode.EVENT_HAS_CHILDREN_CHANGED = 'hasChildrenChanged';\n RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';\n RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\n RowNode.EVENT_HIGHLIGHT_CHANGED = 'rowHighlightChanged';\n RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';\n return RowNode;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$d = (undefined && undefined.__assign) || function () {\n __assign$d = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$d.apply(this, arguments);\n};\nvar __decorate$20 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CheckboxSelectionComponent = /** @class */ (function (_super) {\n __extends$2c(CheckboxSelectionComponent, _super);\n function CheckboxSelectionComponent() {\n return _super.call(this, /* html*/ \"\\n <div class=\\\"ag-selection-checkbox\\\" role=\\\"presentation\\\">\\n <ag-checkbox role=\\\"presentation\\\" ref=\\\"eCheckbox\\\"></ag-checkbox>\\n </div>\") || this;\n }\n CheckboxSelectionComponent.prototype.postConstruct = function () {\n this.eCheckbox.setPassive(true);\n };\n CheckboxSelectionComponent.prototype.getCheckboxId = function () {\n return this.eCheckbox.getInputElement().id;\n };\n CheckboxSelectionComponent.prototype.onDataChanged = function () {\n // when rows are loaded for the second time, this can impact the selection, as a row\n // could be loaded as already selected (if user scrolls down, and then up again).\n this.onSelectionChanged();\n };\n CheckboxSelectionComponent.prototype.onSelectableChanged = function () {\n this.showOrHideSelect();\n };\n CheckboxSelectionComponent.prototype.onSelectionChanged = function () {\n var translate = this.localeService.getLocaleTextFunc();\n var state = this.rowNode.isSelected();\n var stateName = state === undefined\n ? translate('ariaIndeterminate', 'indeterminate')\n : (state === true\n ? translate('ariaChecked', 'checked')\n : translate('ariaUnchecked', 'unchecked'));\n var ariaLabel = translate('ariaRowToggleSelection', 'Press Space to toggle row selection');\n this.eCheckbox.setValue(state, true);\n this.eCheckbox.setInputAriaLabel(ariaLabel + \" (\" + stateName + \")\");\n };\n CheckboxSelectionComponent.prototype.onCheckedClicked = function (event) {\n var groupSelectsFiltered = this.gridOptionsService.is('groupSelectsFiltered');\n var updatedCount = this.rowNode.setSelectedParams({ newValue: false, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered, event: event, source: 'checkboxSelected' });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.onUncheckedClicked = function (event) {\n var groupSelectsFiltered = this.gridOptionsService.is('groupSelectsFiltered');\n var updatedCount = this.rowNode.setSelectedParams({ newValue: true, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered, event: event, source: 'checkboxSelected' });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.init = function (params) {\n var _this = this;\n this.rowNode = params.rowNode;\n this.column = params.column;\n this.overrides = params.overrides;\n this.onSelectionChanged();\n // we don't want double click on this icon to open a group\n this.addManagedListener(this.eCheckbox.getInputElement(), 'dblclick', function (event) {\n stopPropagationForAgGrid(event);\n });\n this.addManagedListener(this.eCheckbox.getInputElement(), 'click', function (event) {\n // we don't want the row clicked event to fire when selecting the checkbox, otherwise the row\n // would possibly get selected twice\n stopPropagationForAgGrid(event);\n var isSelected = _this.eCheckbox.getValue();\n if (isSelected) {\n _this.onCheckedClicked(event);\n }\n else {\n _this.onUncheckedClicked(event || {});\n }\n });\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onSelectionChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onDataChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_SELECTABLE_CHANGED, this.onSelectableChanged.bind(this));\n var isRowSelectableFunc = this.gridOptionsService.get('isRowSelectable');\n var checkboxVisibleIsDynamic = isRowSelectableFunc || typeof this.getIsVisible() === 'function';\n if (checkboxVisibleIsDynamic) {\n var showOrHideSelectListener = this.showOrHideSelect.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, showOrHideSelectListener);\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, showOrHideSelectListener);\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, showOrHideSelectListener);\n this.showOrHideSelect();\n }\n this.eCheckbox.getInputElement().setAttribute('tabindex', '-1');\n };\n CheckboxSelectionComponent.prototype.showOrHideSelect = function () {\n var _a, _b, _c, _d;\n // if the isRowSelectable() is not provided the row node is selectable by default\n var selectable = this.rowNode.selectable;\n // checkboxSelection callback is deemed a legacy solution however we will still consider it's result.\n // If selectable, then also check the colDef callback. if not selectable, this it short circuits - no need\n // to call the colDef callback.\n var isVisible = this.getIsVisible();\n if (selectable) {\n if (typeof isVisible === 'function') {\n var extraParams = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.callbackParams;\n var params = (_b = this.column) === null || _b === void 0 ? void 0 : _b.createColumnFunctionCallbackParams(this.rowNode);\n selectable = params ? isVisible(__assign$d(__assign$d({}, extraParams), params)) : false;\n }\n else {\n selectable = isVisible !== null && isVisible !== void 0 ? isVisible : false;\n }\n }\n var disableInsteadOfHide = (_c = this.column) === null || _c === void 0 ? void 0 : _c.getColDef().showDisabledCheckboxes;\n if (disableInsteadOfHide) {\n this.eCheckbox.setDisabled(!selectable);\n this.setVisible(true);\n this.setDisplayed(true);\n return;\n }\n if ((_d = this.overrides) === null || _d === void 0 ? void 0 : _d.removeHidden) {\n this.setDisplayed(selectable);\n return;\n }\n this.setVisible(selectable);\n };\n CheckboxSelectionComponent.prototype.getIsVisible = function () {\n var _a, _b;\n if (this.overrides) {\n return this.overrides.isVisible;\n }\n // column will be missing if groupDisplayType = 'groupRows'\n return (_b = (_a = this.column) === null || _a === void 0 ? void 0 : _a.getColDef()) === null || _b === void 0 ? void 0 : _b.checkboxSelection;\n };\n __decorate$20([\n RefSelector('eCheckbox')\n ], CheckboxSelectionComponent.prototype, \"eCheckbox\", void 0);\n __decorate$20([\n PostConstruct\n ], CheckboxSelectionComponent.prototype, \"postConstruct\", null);\n return CheckboxSelectionComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$4 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar DragSourceType;\n(function (DragSourceType) {\n DragSourceType[DragSourceType[\"ToolPanel\"] = 0] = \"ToolPanel\";\n DragSourceType[DragSourceType[\"HeaderCell\"] = 1] = \"HeaderCell\";\n DragSourceType[DragSourceType[\"RowDrag\"] = 2] = \"RowDrag\";\n DragSourceType[DragSourceType[\"ChartPanel\"] = 3] = \"ChartPanel\";\n})(DragSourceType || (DragSourceType = {}));\nvar VerticalDirection;\n(function (VerticalDirection) {\n VerticalDirection[VerticalDirection[\"Up\"] = 0] = \"Up\";\n VerticalDirection[VerticalDirection[\"Down\"] = 1] = \"Down\";\n})(VerticalDirection || (VerticalDirection = {}));\nvar HorizontalDirection;\n(function (HorizontalDirection) {\n HorizontalDirection[HorizontalDirection[\"Left\"] = 0] = \"Left\";\n HorizontalDirection[HorizontalDirection[\"Right\"] = 1] = \"Right\";\n})(HorizontalDirection || (HorizontalDirection = {}));\nvar DragAndDropService = /** @class */ (function (_super) {\n __extends$2b(DragAndDropService, _super);\n function DragAndDropService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dragSourceAndParamsList = [];\n _this.dropTargets = [];\n return _this;\n }\n DragAndDropService_1 = DragAndDropService;\n DragAndDropService.prototype.init = function () {\n this.ePinnedIcon = createIcon('columnMovePin', this.gridOptionsService, null);\n this.eHideIcon = createIcon('columnMoveHide', this.gridOptionsService, null);\n this.eMoveIcon = createIcon('columnMoveMove', this.gridOptionsService, null);\n this.eLeftIcon = createIcon('columnMoveLeft', this.gridOptionsService, null);\n this.eRightIcon = createIcon('columnMoveRight', this.gridOptionsService, null);\n this.eGroupIcon = createIcon('columnMoveGroup', this.gridOptionsService, null);\n this.eAggregateIcon = createIcon('columnMoveValue', this.gridOptionsService, null);\n this.ePivotIcon = createIcon('columnMovePivot', this.gridOptionsService, null);\n this.eDropNotAllowedIcon = createIcon('dropNotAllowed', this.gridOptionsService, null);\n };\n DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {\n if (allowTouch === void 0) { allowTouch = false; }\n var params = {\n eElement: dragSource.eElement,\n dragStartPixels: dragSource.dragStartPixels,\n onDragStart: this.onDragStart.bind(this, dragSource),\n onDragStop: this.onDragStop.bind(this),\n onDragging: this.onDragging.bind(this)\n };\n this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n this.dragService.addDragSource(params, allowTouch);\n };\n DragAndDropService.prototype.removeDragSource = function (dragSource) {\n var sourceAndParams = this.dragSourceAndParamsList.find(function (item) { return item.dragSource === dragSource; });\n if (sourceAndParams) {\n this.dragService.removeDragSource(sourceAndParams.params);\n removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n }\n };\n DragAndDropService.prototype.clearDragSourceParamsList = function () {\n var _this = this;\n this.dragSourceAndParamsList.forEach(function (sourceAndParams) { return _this.dragService.removeDragSource(sourceAndParams.params); });\n this.dragSourceAndParamsList.length = 0;\n this.dropTargets.length = 0;\n };\n DragAndDropService.prototype.nudge = function () {\n if (this.dragging) {\n this.onDragging(this.eventLastTime, true);\n }\n };\n DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {\n this.dragging = true;\n this.dragSource = dragSource;\n this.eventLastTime = mouseEvent;\n this.dragItem = this.dragSource.getDragItem();\n this.lastDropTarget = this.dragSource.dragSourceDropTarget;\n if (this.dragSource.onDragStarted) {\n this.dragSource.onDragStarted();\n }\n this.createGhost();\n };\n DragAndDropService.prototype.onDragStop = function (mouseEvent) {\n this.eventLastTime = null;\n this.dragging = false;\n if (this.dragSource.onDragStopped) {\n this.dragSource.onDragStopped();\n }\n if (this.lastDropTarget && this.lastDropTarget.onDragStop) {\n var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);\n this.lastDropTarget.onDragStop(draggingEvent);\n }\n this.lastDropTarget = null;\n this.dragItem = null;\n this.removeGhost();\n };\n DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {\n var _this = this;\n var _a, _b, _c, _d;\n var hDirection = this.getHorizontalDirection(mouseEvent);\n var vDirection = this.getVerticalDirection(mouseEvent);\n this.eventLastTime = mouseEvent;\n this.positionGhost(mouseEvent);\n // check if mouseEvent intersects with any of the drop targets\n var validDropTargets = this.dropTargets.filter(function (target) { return _this.isMouseOnDropTarget(mouseEvent, target); });\n var dropTarget = this.findCurrentDropTarget(mouseEvent, validDropTargets);\n if (dropTarget !== this.lastDropTarget) {\n this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n if (this.lastDropTarget !== null && dropTarget === null) {\n (_b = (_a = this.dragSource).onGridExit) === null || _b === void 0 ? void 0 : _b.call(_a, this.dragItem);\n }\n if (this.lastDropTarget === null && dropTarget !== null) {\n (_d = (_c = this.dragSource).onGridEnter) === null || _d === void 0 ? void 0 : _d.call(_c, this.dragItem);\n }\n this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget = dropTarget;\n }\n else if (dropTarget && dropTarget.onDragging) {\n var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragging(draggingEvent);\n }\n };\n DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {\n var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n var containers = [[dropTarget.getContainer()]];\n return secondaryContainers ? containers.concat(secondaryContainers) : containers;\n };\n DragAndDropService.prototype.allContainersIntersect = function (mouseEvent, containers) {\n var e_1, _a;\n try {\n for (var containers_1 = __values$4(containers), containers_1_1 = containers_1.next(); !containers_1_1.done; containers_1_1 = containers_1.next()) {\n var container = containers_1_1.value;\n var rect = container.getBoundingClientRect();\n // if element is not visible, then width and height are zero\n if (rect.width === 0 || rect.height === 0) {\n return false;\n }\n var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX < rect.right;\n var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY < rect.bottom;\n if (!horizontalFit || !verticalFit) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (containers_1_1 && !containers_1_1.done && (_a = containers_1.return)) _a.call(containers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {\n var e_2, _a;\n var allContainersFromDropTarget = this.getAllContainersFromDropTarget(dropTarget);\n var mouseOverTarget = false;\n try {\n for (var allContainersFromDropTarget_1 = __values$4(allContainersFromDropTarget), allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next(); !allContainersFromDropTarget_1_1.done; allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next()) {\n var currentContainers = allContainersFromDropTarget_1_1.value;\n if (this.allContainersIntersect(mouseEvent, currentContainers)) {\n mouseOverTarget = true;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (allContainersFromDropTarget_1_1 && !allContainersFromDropTarget_1_1.done && (_a = allContainersFromDropTarget_1.return)) _a.call(allContainersFromDropTarget_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (dropTarget.targetContainsSource && !dropTarget.getContainer().contains(this.dragSource.eElement)) {\n return false;\n }\n return mouseOverTarget && dropTarget.isInterestedIn(this.dragSource.type, this.dragSource.eElement);\n };\n DragAndDropService.prototype.findCurrentDropTarget = function (mouseEvent, validDropTargets) {\n var e_3, _a, e_4, _b;\n var len = validDropTargets.length;\n if (len === 0) {\n return null;\n }\n if (len === 1) {\n return validDropTargets[0];\n }\n var rootNode = this.gridOptionsService.getRootNode();\n // elementsFromPoint return a list of elements under\n // the mouseEvent sorted from topMost to bottomMost\n var elementStack = rootNode.elementsFromPoint(mouseEvent.clientX, mouseEvent.clientY);\n try {\n // loop over the sorted elementStack to find which dropTarget comes first\n for (var elementStack_1 = __values$4(elementStack), elementStack_1_1 = elementStack_1.next(); !elementStack_1_1.done; elementStack_1_1 = elementStack_1.next()) {\n var el = elementStack_1_1.value;\n try {\n for (var validDropTargets_1 = (e_4 = void 0, __values$4(validDropTargets)), validDropTargets_1_1 = validDropTargets_1.next(); !validDropTargets_1_1.done; validDropTargets_1_1 = validDropTargets_1.next()) {\n var dropTarget = validDropTargets_1_1.value;\n var containers = flatten(this.getAllContainersFromDropTarget(dropTarget));\n if (containers.indexOf(el) !== -1) {\n return dropTarget;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (validDropTargets_1_1 && !validDropTargets_1_1.done && (_b = validDropTargets_1.return)) _b.call(validDropTargets_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (elementStack_1_1 && !elementStack_1_1.done && (_a = elementStack_1.return)) _a.call(elementStack_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n // we should never hit this point of the code because only\n // valid dropTargets should be provided to this method.\n return null;\n };\n DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n if (!dropTarget) {\n return;\n }\n if (dropTarget.onDragEnter) {\n var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragEnter(dragEnterEvent);\n }\n this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n };\n DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {\n if (!this.lastDropTarget) {\n return;\n }\n if (this.lastDropTarget.onDragLeave) {\n var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget.onDragLeave(dragLeaveEvent);\n }\n this.setGhostIcon(null);\n };\n DragAndDropService.prototype.addDropTarget = function (dropTarget) {\n this.dropTargets.push(dropTarget);\n };\n DragAndDropService.prototype.removeDropTarget = function (dropTarget) {\n this.dropTargets = this.dropTargets.filter(function (target) { return target.getContainer() !== dropTarget.getContainer(); });\n };\n DragAndDropService.prototype.hasExternalDropZones = function () {\n return this.dropTargets.some(function (zones) { return zones.external; });\n };\n DragAndDropService.prototype.findExternalZone = function (params) {\n var externalTargets = this.dropTargets.filter(function (target) { return target.external; });\n return externalTargets.find(function (zone) { return zone.getContainer() === params.getContainer(); }) || null;\n };\n DragAndDropService.prototype.getHorizontalDirection = function (event) {\n var clientX = this.eventLastTime && this.eventLastTime.clientX;\n var eClientX = event.clientX;\n if (clientX === eClientX) {\n return null;\n }\n return clientX > eClientX ? HorizontalDirection.Left : HorizontalDirection.Right;\n };\n DragAndDropService.prototype.getVerticalDirection = function (event) {\n var clientY = this.eventLastTime && this.eventLastTime.clientY;\n var eClientY = event.clientY;\n if (clientY === eClientY) {\n return null;\n }\n return clientY > eClientY ? VerticalDirection.Up : VerticalDirection.Down;\n };\n DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {\n // localise x and y to the target\n var dropZoneTarget = dropTarget.getContainer();\n var rect = dropZoneTarget.getBoundingClientRect();\n var _a = this, api = _a.gridApi, columnApi = _a.columnApi, dragItem = _a.dragItem, dragSource = _a.dragSource;\n var x = event.clientX - rect.left;\n var y = event.clientY - rect.top;\n return { event: event, x: x, y: y, vDirection: vDirection, hDirection: hDirection, dragSource: dragSource, fromNudge: fromNudge, dragItem: dragItem, api: api, columnApi: columnApi, dropZoneTarget: dropZoneTarget };\n };\n DragAndDropService.prototype.positionGhost = function (event) {\n var ghost = this.eGhost;\n if (!ghost) {\n return;\n }\n var ghostRect = ghost.getBoundingClientRect();\n var ghostHeight = ghostRect.height;\n // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which\n // then brought in scrollbars to the browser. no idea why, but putting in -2 here\n // works around it which is good enough for me.\n var browserWidth = getBodyWidth() - 2;\n var browserHeight = getBodyHeight() - 2;\n var top = event.pageY - (ghostHeight / 2);\n var left = event.pageX - 10;\n var eDocument = this.gridOptionsService.getDocument();\n var win = (eDocument.defaultView || window);\n var windowScrollY = win.pageYOffset || eDocument.documentElement.scrollTop;\n var windowScrollX = win.pageXOffset || eDocument.documentElement.scrollLeft;\n // check ghost is not positioned outside of the browser\n if (browserWidth > 0 && ((left + ghost.clientWidth) > (browserWidth + windowScrollX))) {\n left = browserWidth + windowScrollX - ghost.clientWidth;\n }\n if (left < 0) {\n left = 0;\n }\n if (browserHeight > 0 && ((top + ghost.clientHeight) > (browserHeight + windowScrollY))) {\n top = browserHeight + windowScrollY - ghost.clientHeight;\n }\n if (top < 0) {\n top = 0;\n }\n ghost.style.left = left + \"px\";\n ghost.style.top = top + \"px\";\n };\n DragAndDropService.prototype.removeGhost = function () {\n if (this.eGhost && this.eGhostParent) {\n this.eGhostParent.removeChild(this.eGhost);\n }\n this.eGhost = null;\n };\n DragAndDropService.prototype.createGhost = function () {\n this.eGhost = loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n this.mouseEventService.stampTopLevelGridCompWithGridInstance(this.eGhost);\n var theme = this.environment.getTheme().theme;\n if (theme) {\n this.eGhost.classList.add(theme);\n }\n this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');\n this.setGhostIcon(null);\n var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n var dragItemName = this.dragSource.dragItemName;\n if (isFunction(dragItemName)) {\n dragItemName = dragItemName();\n }\n eText.innerHTML = escapeString(dragItemName) || '';\n this.eGhost.style.height = '25px';\n this.eGhost.style.top = '20px';\n this.eGhost.style.left = '20px';\n var eDocument = this.gridOptionsService.getDocument();\n var targetEl = null;\n try {\n targetEl = eDocument.fullscreenElement;\n }\n catch (e) {\n // some environments like SalesForce will throw errors\n // simply by trying to read the fullscreenElement property\n }\n finally {\n if (!targetEl) {\n var rootNode = this.gridOptionsService.getRootNode();\n var body = rootNode.querySelector('body');\n if (body) {\n targetEl = body;\n }\n else if (rootNode instanceof ShadowRoot) {\n targetEl = rootNode;\n }\n else {\n targetEl = rootNode === null || rootNode === void 0 ? void 0 : rootNode.documentElement;\n }\n }\n }\n this.eGhostParent = targetEl;\n if (!this.eGhostParent) {\n console.warn('AG Grid: could not find document body, it is needed for dragging columns');\n }\n else {\n this.eGhostParent.appendChild(this.eGhost);\n }\n };\n DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {\n if (shake === void 0) { shake = false; }\n clearElement(this.eGhostIcon);\n var eIcon = null;\n if (!iconName) {\n iconName = this.dragSource.defaultIconName || DragAndDropService_1.ICON_NOT_ALLOWED;\n }\n switch (iconName) {\n case DragAndDropService_1.ICON_PINNED:\n eIcon = this.ePinnedIcon;\n break;\n case DragAndDropService_1.ICON_MOVE:\n eIcon = this.eMoveIcon;\n break;\n case DragAndDropService_1.ICON_LEFT:\n eIcon = this.eLeftIcon;\n break;\n case DragAndDropService_1.ICON_RIGHT:\n eIcon = this.eRightIcon;\n break;\n case DragAndDropService_1.ICON_GROUP:\n eIcon = this.eGroupIcon;\n break;\n case DragAndDropService_1.ICON_AGGREGATE:\n eIcon = this.eAggregateIcon;\n break;\n case DragAndDropService_1.ICON_PIVOT:\n eIcon = this.ePivotIcon;\n break;\n case DragAndDropService_1.ICON_NOT_ALLOWED:\n eIcon = this.eDropNotAllowedIcon;\n break;\n case DragAndDropService_1.ICON_HIDE:\n eIcon = this.eHideIcon;\n break;\n }\n this.eGhostIcon.classList.toggle('ag-shake-left-to-right', shake);\n if (eIcon === this.eHideIcon && this.gridOptionsService.is('suppressDragLeaveHidesColumns')) {\n return;\n }\n if (eIcon) {\n this.eGhostIcon.appendChild(eIcon);\n }\n };\n var DragAndDropService_1;\n DragAndDropService.ICON_PINNED = 'pinned';\n DragAndDropService.ICON_MOVE = 'move';\n DragAndDropService.ICON_LEFT = 'left';\n DragAndDropService.ICON_RIGHT = 'right';\n DragAndDropService.ICON_GROUP = 'group';\n DragAndDropService.ICON_AGGREGATE = 'aggregate';\n DragAndDropService.ICON_PIVOT = 'pivot';\n DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\n DragAndDropService.ICON_HIDE = 'hide';\n DragAndDropService.GHOST_TEMPLATE = \"<div class=\\\"ag-dnd-ghost ag-unselectable\\\">\\n <span class=\\\"ag-dnd-ghost-icon ag-shake-left-to-right\\\"></span>\\n <div class=\\\"ag-dnd-ghost-label\\\"></div>\\n </div>\";\n __decorate$1$([\n Autowired('dragService')\n ], DragAndDropService.prototype, \"dragService\", void 0);\n __decorate$1$([\n Autowired('mouseEventService')\n ], DragAndDropService.prototype, \"mouseEventService\", void 0);\n __decorate$1$([\n Autowired('columnApi')\n ], DragAndDropService.prototype, \"columnApi\", void 0);\n __decorate$1$([\n Autowired('gridApi')\n ], DragAndDropService.prototype, \"gridApi\", void 0);\n __decorate$1$([\n PostConstruct\n ], DragAndDropService.prototype, \"init\", null);\n __decorate$1$([\n PreDestroy\n ], DragAndDropService.prototype, \"clearDragSourceParamsList\", null);\n DragAndDropService = DragAndDropService_1 = __decorate$1$([\n Bean('dragAndDropService')\n ], DragAndDropService);\n return DragAndDropService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowDragComp = /** @class */ (function (_super) {\n __extends$2a(RowDragComp, _super);\n function RowDragComp(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {\n var _this = _super.call(this) || this;\n _this.cellValueFn = cellValueFn;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.customGui = customGui;\n _this.dragStartPixels = dragStartPixels;\n _this.suppressVisibilityChange = suppressVisibilityChange;\n _this.dragSource = null;\n return _this;\n }\n RowDragComp.prototype.isCustomGui = function () {\n return this.customGui != null;\n };\n RowDragComp.prototype.postConstruct = function () {\n if (!this.customGui) {\n this.setTemplate(/* html */ \"<div class=\\\"ag-drag-handle ag-row-drag\\\" aria-hidden=\\\"true\\\"></div>\");\n this.getGui().appendChild(createIconNoSpan('rowDrag', this.beans.gridOptionsService, null));\n this.addDragSource();\n }\n else {\n this.setDragElement(this.customGui, this.dragStartPixels);\n }\n this.checkCompatibility();\n if (!this.suppressVisibilityChange) {\n var strategy = this.beans.gridOptionsService.is('rowDragManaged') ?\n new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column) :\n new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column);\n this.createManagedBean(strategy, this.beans.context);\n }\n };\n RowDragComp.prototype.setDragElement = function (dragElement, dragStartPixels) {\n this.setTemplateFromElement(dragElement);\n this.addDragSource(dragStartPixels);\n };\n RowDragComp.prototype.getSelectedNodes = function () {\n var isRowDragMultiRow = this.beans.gridOptionsService.is('rowDragMultiRow');\n if (!isRowDragMultiRow) {\n return [this.rowNode];\n }\n var selection = this.beans.selectionService.getSelectedNodes();\n return selection.indexOf(this.rowNode) !== -1 ? selection : [this.rowNode];\n };\n // returns true if all compatibility items work out\n RowDragComp.prototype.checkCompatibility = function () {\n var managed = this.beans.gridOptionsService.is('rowDragManaged');\n var treeData = this.beans.gridOptionsService.isTreeData();\n if (treeData && managed) {\n doOnce(function () {\n return console.warn('AG Grid: If using row drag with tree data, you cannot have rowDragManaged=true');\n }, 'RowDragComp.managedAndTreeData');\n }\n };\n RowDragComp.prototype.getDragItem = function () {\n return {\n rowNode: this.rowNode,\n rowNodes: this.getSelectedNodes(),\n columns: this.column ? [this.column] : undefined,\n defaultTextValue: this.cellValueFn(),\n };\n };\n RowDragComp.prototype.getRowDragText = function (column) {\n if (column) {\n var colDef = column.getColDef();\n if (colDef.rowDragText) {\n return colDef.rowDragText;\n }\n }\n return this.gridOptionsService.get('rowDragText');\n };\n RowDragComp.prototype.addDragSource = function (dragStartPixels) {\n var _this = this;\n if (dragStartPixels === void 0) { dragStartPixels = 4; }\n // if this is changing the drag element, delete the previous dragSource\n if (this.dragSource) {\n this.removeDragSource();\n }\n var rowDragText = this.getRowDragText(this.column);\n var translate = this.localeService.getLocaleTextFunc();\n this.dragSource = {\n type: DragSourceType.RowDrag,\n eElement: this.getGui(),\n dragItemName: function () {\n var _a;\n var dragItem = _this.getDragItem();\n var dragItemCount = ((_a = dragItem.rowNodes) === null || _a === void 0 ? void 0 : _a.length) || 1;\n if (rowDragText) {\n return rowDragText(dragItem, dragItemCount);\n }\n return dragItemCount === 1 ? _this.cellValueFn() : dragItemCount + \" \" + translate('rowDragRows', 'rows');\n },\n getDragItem: function () { return _this.getDragItem(); },\n dragStartPixels: dragStartPixels,\n dragSourceDomDataKey: this.beans.gridOptionsService.getDomDataKey()\n };\n this.beans.dragAndDropService.addDragSource(this.dragSource, true);\n };\n RowDragComp.prototype.removeDragSource = function () {\n if (this.dragSource) {\n this.beans.dragAndDropService.removeDragSource(this.dragSource);\n }\n this.dragSource = null;\n };\n __decorate$1_([\n Autowired('beans')\n ], RowDragComp.prototype, \"beans\", void 0);\n __decorate$1_([\n PostConstruct\n ], RowDragComp.prototype, \"postConstruct\", null);\n __decorate$1_([\n PreDestroy\n ], RowDragComp.prototype, \"removeDragSource\", null);\n return RowDragComp;\n}(Component));\nvar VisibilityStrategy = /** @class */ (function (_super) {\n __extends$2a(VisibilityStrategy, _super);\n function VisibilityStrategy(parent, rowNode, column) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.rowNode = rowNode;\n _this.column = column;\n return _this;\n }\n VisibilityStrategy.prototype.setDisplayedOrVisible = function (neverDisplayed) {\n var displayedOptions = { skipAriaHidden: true };\n if (neverDisplayed) {\n this.parent.setDisplayed(false, displayedOptions);\n }\n else {\n var shown = true;\n var isShownSometimes = false;\n if (this.column) {\n shown = this.column.isRowDrag(this.rowNode) || this.parent.isCustomGui();\n isShownSometimes = isFunction(this.column.getColDef().rowDrag);\n }\n // if shown sometimes, them some rows can have drag handle while other don't,\n // so we use setVisible to keep the handles horizontally aligned (as setVisible\n // keeps the empty space, whereas setDisplayed looses the space)\n if (isShownSometimes) {\n this.parent.setDisplayed(true, displayedOptions);\n this.parent.setVisible(shown, displayedOptions);\n }\n else {\n this.parent.setDisplayed(shown, displayedOptions);\n this.parent.setVisible(true, displayedOptions);\n }\n }\n };\n return VisibilityStrategy;\n}(BeanStub));\n// when non managed, the visibility depends on suppressRowDrag property only\nvar NonManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends$2a(NonManagedVisibilityStrategy, _super);\n function NonManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n NonManagedVisibilityStrategy.prototype.postConstruct = function () {\n this.addManagedPropertyListener('suppressRowDrag', this.onSuppressRowDrag.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var neverDisplayed = this.beans.gridOptionsService.is('suppressRowDrag');\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate$1_([\n PostConstruct\n ], NonManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return NonManagedVisibilityStrategy;\n}(VisibilityStrategy));\n// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property\nvar ManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends$2a(ManagedVisibilityStrategy, _super);\n function ManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n ManagedVisibilityStrategy.prototype.postConstruct = function () {\n // we do not show the component if sort, filter or grouping is active\n this.addManagedListener(this.beans.eventService, Events.EVENT_SORT_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_FILTER_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedPropertyListener('suppressRowDrag', this.onSuppressRowDrag.bind(this));\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();\n var rowDragFeature = gridBodyCon.getRowDragFeature();\n var shouldPreventRowMove = rowDragFeature && rowDragFeature.shouldPreventRowMove();\n var suppressRowDrag = this.beans.gridOptionsService.is('suppressRowDrag');\n var hasExternalDropZones = this.beans.dragAndDropService.hasExternalDropZones();\n var neverDisplayed = (shouldPreventRowMove && !hasExternalDropZones) || suppressRowDrag;\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate$1_([\n PostConstruct\n ], ManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return ManagedVisibilityStrategy;\n}(VisibilityStrategy));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$29 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$c = (undefined && undefined.__assign) || function () {\n __assign$c = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$c.apply(this, arguments);\n};\nvar __decorate$1Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupCellRendererCtrl = /** @class */ (function (_super) {\n __extends$29(GroupCellRendererCtrl, _super);\n function GroupCellRendererCtrl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupCellRendererCtrl.prototype.init = function (comp, eGui, eCheckbox, eExpanded, eContracted, compClass, params) {\n this.params = params;\n this.eGui = eGui;\n this.eCheckbox = eCheckbox;\n this.eExpanded = eExpanded;\n this.eContracted = eContracted;\n this.comp = comp;\n this.compClass = compClass;\n var topLevelFooter = this.isTopLevelFooter();\n var embeddedRowMismatch = this.isEmbeddedRowMismatch();\n // This allows for empty strings to appear as groups since\n // it will only return for null or undefined.\n var isNullValueAndNotMaster = params.value == null && !params.node.master;\n var skipCell = false;\n // if the groupCellRenderer is inside of a footer and groupHideOpenParents is true\n // we should only display the groupCellRenderer if the current column is the rowGroupedColumn\n if (this.gridOptionsService.is('groupIncludeFooter') && this.gridOptionsService.is('groupHideOpenParents')) {\n var node = params.node;\n if (node.footer) {\n var showRowGroup = params.colDef && params.colDef.showRowGroup;\n var rowGroupColumnId = node.rowGroupColumn && node.rowGroupColumn.getColId();\n skipCell = showRowGroup !== rowGroupColumnId;\n }\n }\n this.cellIsBlank = topLevelFooter ? false : (embeddedRowMismatch || (isNullValueAndNotMaster && !params.node.master) || skipCell);\n if (this.cellIsBlank) {\n return;\n }\n this.setupShowingValueForOpenedParent();\n this.findDisplayedGroupNode();\n this.addFullWidthRowDraggerIfNeeded();\n this.addExpandAndContract();\n this.addCheckboxIfNeeded();\n this.addValueElement();\n this.setupIndent();\n this.refreshAriaExpanded();\n };\n GroupCellRendererCtrl.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // property cleanup to avoid memory leaks\n this.expandListener = null;\n };\n GroupCellRendererCtrl.prototype.refreshAriaExpanded = function () {\n var _a = this.params, node = _a.node, eParentOfValue = _a.eParentOfValue;\n if (this.expandListener) {\n this.expandListener = this.expandListener();\n }\n if (!this.isExpandable()) {\n removeAriaExpanded(eParentOfValue);\n return;\n }\n var listener = function () {\n // for react, we don't use JSX, as setting attributes via jsx is slower\n setAriaExpanded(eParentOfValue, !!node.expanded);\n };\n this.expandListener = this.addManagedListener(node, RowNode.EVENT_EXPANDED_CHANGED, listener) || null;\n listener();\n };\n GroupCellRendererCtrl.prototype.isTopLevelFooter = function () {\n if (!this.gridOptionsService.is('groupIncludeTotalFooter')) {\n return false;\n }\n if (this.params.value != null || this.params.node.level != -1) {\n return false;\n }\n // at this point, we know it's the root node and there is no value present, so it's a footer cell.\n // the only thing to work out is if we are displaying groups across multiple\n // columns (groupDisplayType: 'multipleColumns'), we only want 'total' to appear in the first column.\n var colDef = this.params.colDef;\n var doingFullWidth = colDef == null;\n if (doingFullWidth) {\n return true;\n }\n if (colDef.showRowGroup === true) {\n return true;\n }\n var rowGroupCols = this.columnModel.getRowGroupColumns();\n // this is a sanity check, rowGroupCols should always be present\n if (!rowGroupCols || rowGroupCols.length === 0) {\n return true;\n }\n var firstRowGroupCol = rowGroupCols[0];\n return firstRowGroupCol.getId() === colDef.showRowGroup;\n };\n // if we are doing embedded full width rows, we only show the renderer when\n // in the body, or if pinning in the pinned section, or if pinning and RTL,\n // in the right section. otherwise we would have the cell repeated in each section.\n GroupCellRendererCtrl.prototype.isEmbeddedRowMismatch = function () {\n if (!this.params.fullWidth || !this.gridOptionsService.is('embedFullWidthRows')) {\n return false;\n }\n var pinnedLeftCell = this.params.pinned === 'left';\n var pinnedRightCell = this.params.pinned === 'right';\n var bodyCell = !pinnedLeftCell && !pinnedRightCell;\n if (this.gridOptionsService.is('enableRtl')) {\n if (this.columnModel.isPinningLeft()) {\n return !pinnedRightCell;\n }\n return !bodyCell;\n }\n if (this.columnModel.isPinningLeft()) {\n return !pinnedLeftCell;\n }\n return !bodyCell;\n };\n GroupCellRendererCtrl.prototype.findDisplayedGroupNode = function () {\n var column = this.params.column;\n var rowNode = this.params.node;\n if (this.showingValueForOpenedParent) {\n var pointer = rowNode.parent;\n while (pointer != null) {\n if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {\n this.displayedGroupNode = pointer;\n break;\n }\n pointer = pointer.parent;\n }\n }\n // if we didn't find a displayed group, set it to the row node\n if (missing(this.displayedGroupNode)) {\n this.displayedGroupNode = rowNode;\n }\n };\n GroupCellRendererCtrl.prototype.setupShowingValueForOpenedParent = function () {\n // note - this code depends on sortService.updateGroupDataForHiddenOpenParents, where group data\n // is updated to reflect the dragged down parents\n var rowNode = this.params.node;\n var column = this.params.column;\n if (!this.gridOptionsService.is('groupHideOpenParents')) {\n this.showingValueForOpenedParent = false;\n return;\n }\n // hideOpenParents means rowNode.groupData can have data for the group this column is displaying, even though\n // this rowNode isn't grouping by the column we are displaying\n // if no groupData at all, we are not showing a parent value\n if (!rowNode.groupData) {\n this.showingValueForOpenedParent = false;\n return;\n }\n // this is the normal case, in that we are showing a group for which this column is configured. note that\n // this means the Row Group is closed (if it was open, we would not be displaying it)\n var showingGroupNode = rowNode.rowGroupColumn != null;\n if (showingGroupNode) {\n var keyOfGroupingColumn = rowNode.rowGroupColumn.getId();\n var configuredToShowThisGroupLevel = column.isRowGroupDisplayed(keyOfGroupingColumn);\n // if showing group as normal, we didn't take group info from parent\n if (configuredToShowThisGroupLevel) {\n this.showingValueForOpenedParent = false;\n return;\n }\n }\n // see if we are showing a Group Value for the Displayed Group. if we are showing a group value, and this Row Node\n // is not grouping by this Displayed Group, we must of gotten the value from a parent node\n var valPresent = rowNode.groupData[column.getId()] != null;\n this.showingValueForOpenedParent = valPresent;\n };\n GroupCellRendererCtrl.prototype.addValueElement = function () {\n if (this.displayedGroupNode.footer) {\n this.addFooterValue();\n }\n else {\n this.addGroupValue();\n this.addChildCount();\n }\n };\n GroupCellRendererCtrl.prototype.addGroupValue = function () {\n // we try and use the cellRenderer of the column used for the grouping if we can\n var paramsAdjusted = this.adjustParamsWithDetailsFromRelatedColumn();\n var innerCompDetails = this.getInnerCompDetails(paramsAdjusted);\n var valueFormatted = paramsAdjusted.valueFormatted, value = paramsAdjusted.value;\n var valueWhenNoRenderer = valueFormatted;\n if (valueWhenNoRenderer == null) {\n if (value === '' && this.params.node.group) {\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n valueWhenNoRenderer = localeTextFunc('blanks', '(Blanks)');\n }\n else {\n valueWhenNoRenderer = value !== null && value !== void 0 ? value : null;\n }\n }\n this.comp.setInnerRenderer(innerCompDetails, valueWhenNoRenderer);\n };\n GroupCellRendererCtrl.prototype.adjustParamsWithDetailsFromRelatedColumn = function () {\n var relatedColumn = this.displayedGroupNode.rowGroupColumn;\n var column = this.params.column;\n if (!relatedColumn) {\n return this.params;\n }\n var notFullWidth = column != null;\n if (notFullWidth) {\n var showingThisRowGroup = column.isRowGroupDisplayed(relatedColumn.getId());\n if (!showingThisRowGroup) {\n return this.params;\n }\n }\n var params = this.params;\n var _a = this.params, value = _a.value, node = _a.node;\n var valueFormatted = this.valueFormatterService.formatValue(relatedColumn, node, value);\n // we don't update the original params, as they could of come through React,\n // as react has RowGroupCellRenderer, which means the params could be props which\n // would be read only\n var paramsAdjusted = __assign$c(__assign$c({}, params), { valueFormatted: valueFormatted });\n return paramsAdjusted;\n };\n GroupCellRendererCtrl.prototype.addFooterValue = function () {\n var footerValueGetter = this.params.footerValueGetter;\n var footerValue = '';\n if (footerValueGetter) {\n // params is same as we were given, except we set the value as the item to display\n var paramsClone = cloneObject(this.params);\n paramsClone.value = this.params.value;\n if (typeof footerValueGetter === 'function') {\n footerValue = footerValueGetter(paramsClone);\n }\n else if (typeof footerValueGetter === 'string') {\n footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);\n }\n else {\n console.warn('AG Grid: footerValueGetter should be either a function or a string (expression)');\n }\n }\n else {\n footerValue = 'Total ' + (this.params.value != null ? this.params.value : '');\n }\n var innerCompDetails = this.getInnerCompDetails(this.params);\n this.comp.setInnerRenderer(innerCompDetails, footerValue);\n };\n GroupCellRendererCtrl.prototype.getInnerCompDetails = function (params) {\n var _this = this;\n // for full width rows, we don't do any of the below\n if (params.fullWidth) {\n return this.userComponentFactory.getFullWidthGroupRowInnerCellRenderer(this.gridOptionsService.get('groupRowRendererParams'), params);\n }\n // when grouping, the normal case is we use the cell renderer of the grouped column. eg if grouping by country\n // and then rating, we will use the country cell renderer for each country group row and likewise the rating\n // cell renderer for each rating group row.\n //\n // however if the user has innerCellRenderer defined, this gets preference and we don't use cell renderers\n // of the grouped columns.\n //\n // so we check and use in the following order:\n //\n // 1) thisColDef.cellRendererParams.innerRenderer of the column showing the groups (eg auto group column)\n // 2) groupedColDef.cellRenderer of the grouped column\n // 3) groupedColDef.cellRendererParams.innerRenderer\n // we check if cell renderer provided for the group cell renderer, eg colDef.cellRendererParams.innerRenderer\n var innerCompDetails = this.userComponentFactory\n .getInnerRendererDetails(params, params);\n // avoid using GroupCellRenderer again, otherwise stack overflow, as we insert same renderer again and again.\n // this covers off chance user is grouping by a column that is also configured with GroupCellRenderer\n var isGroupRowRenderer = function (details) { return details && details.componentClass == _this.compClass; };\n if (innerCompDetails && !isGroupRowRenderer(innerCompDetails)) {\n // use the renderer defined in cellRendererParams.innerRenderer\n return innerCompDetails;\n }\n var relatedColumn = this.displayedGroupNode.rowGroupColumn;\n var relatedColDef = relatedColumn ? relatedColumn.getColDef() : undefined;\n if (!relatedColDef) {\n return;\n }\n // otherwise see if we can use the cellRenderer of the column we are grouping by\n var relatedCompDetails = this.userComponentFactory\n .getCellRendererDetails(relatedColDef, params);\n if (relatedCompDetails && !isGroupRowRenderer(relatedCompDetails)) {\n // Only if the original column is using a specific renderer, it it is a using a DEFAULT one ignore it\n return relatedCompDetails;\n }\n if (isGroupRowRenderer(relatedCompDetails) &&\n relatedColDef.cellRendererParams &&\n relatedColDef.cellRendererParams.innerRenderer) {\n // edge case - this comes from a column which has been grouped dynamically, that has a renderer 'group'\n // and has an inner cell renderer\n var res = this.userComponentFactory.getInnerRendererDetails(relatedColDef.cellRendererParams, params);\n return res;\n }\n };\n GroupCellRendererCtrl.prototype.addChildCount = function () {\n // only include the child count if it's included, eg if user doing custom aggregation,\n // then this could be left out, or set to -1, ie no child count\n if (this.params.suppressCount) {\n return;\n }\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));\n // filtering changes the child count, so need to cater for it\n this.updateChildCount();\n };\n GroupCellRendererCtrl.prototype.updateChildCount = function () {\n var allChildrenCount = this.displayedGroupNode.allChildrenCount;\n var showingGroupForThisNode = this.isShowRowGroupForThisRow();\n var showCount = showingGroupForThisNode && allChildrenCount != null && allChildrenCount >= 0;\n var countString = showCount ? \"(\" + allChildrenCount + \")\" : \"\";\n this.comp.setChildCount(countString);\n };\n GroupCellRendererCtrl.prototype.isShowRowGroupForThisRow = function () {\n if (this.gridOptionsService.isTreeData()) {\n return true;\n }\n var rowGroupColumn = this.displayedGroupNode.rowGroupColumn;\n if (!rowGroupColumn) {\n return false;\n }\n // column is null for fullWidthRows\n var column = this.params.column;\n var thisColumnIsInterested = column == null || column.isRowGroupDisplayed(rowGroupColumn.getId());\n return thisColumnIsInterested;\n };\n GroupCellRendererCtrl.prototype.addExpandAndContract = function () {\n var _a;\n var params = this.params;\n var eExpandedIcon = createIconNoSpan('groupExpanded', this.gridOptionsService, null);\n var eContractedIcon = createIconNoSpan('groupContracted', this.gridOptionsService, null);\n if (eExpandedIcon) {\n this.eExpanded.appendChild(eExpandedIcon);\n }\n if (eContractedIcon) {\n this.eContracted.appendChild(eContractedIcon);\n }\n var eGroupCell = params.eGridCell;\n // if editing groups, then double click is to start editing\n var isDoubleClickEdit = ((_a = this.params.column) === null || _a === void 0 ? void 0 : _a.isCellEditable(params.node)) && this.gridOptionsService.is('enableGroupEdit');\n if (!isDoubleClickEdit && this.isExpandable() && !params.suppressDoubleClickExpand) {\n this.addManagedListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));\n }\n this.addManagedListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));\n this.addManagedListener(this.eContracted, 'click', this.onExpandClicked.bind(this));\n // expand / contract as the user hits enter\n this.addManagedListener(eGroupCell, 'keydown', this.onKeyDown.bind(this));\n this.addManagedListener(params.node, RowNode.EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));\n this.showExpandAndContractIcons();\n // because we don't show the expand / contract when there are no children, we need to check every time\n // the number of children change.\n var expandableChangedListener = this.onRowNodeIsExpandableChanged.bind(this);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, expandableChangedListener);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_MASTER_CHANGED, expandableChangedListener);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_GROUP_CHANGED, expandableChangedListener);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_HAS_CHILDREN_CHANGED, expandableChangedListener);\n };\n GroupCellRendererCtrl.prototype.onExpandClicked = function (mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // so if we expand a node, it does not also get selected.\n stopPropagationForAgGrid(mouseEvent);\n this.onExpandOrContract(mouseEvent);\n };\n GroupCellRendererCtrl.prototype.onExpandOrContract = function (e) {\n // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row\n var rowNode = this.displayedGroupNode;\n var nextExpandState = !rowNode.expanded;\n if (!nextExpandState && rowNode.sticky) {\n this.scrollToStickyNode(rowNode);\n }\n rowNode.setExpanded(nextExpandState, e);\n };\n GroupCellRendererCtrl.prototype.scrollToStickyNode = function (rowNode) {\n var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n var scrollFeature = gridBodyCtrl.getScrollFeature();\n scrollFeature.setVerticalScrollPosition(rowNode.rowTop - rowNode.stickyRowTop);\n };\n GroupCellRendererCtrl.prototype.isExpandable = function () {\n if (this.showingValueForOpenedParent) {\n return true;\n }\n var rowNode = this.displayedGroupNode;\n var reducedLeafNode = this.columnModel.isPivotMode() && rowNode.leafGroup;\n var expandableGroup = rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode;\n if (!expandableGroup) {\n return false;\n }\n // column is null for fullWidthRows\n var column = this.params.column;\n var displayingForOneColumnOnly = column != null && typeof column.getColDef().showRowGroup === 'string';\n if (displayingForOneColumnOnly) {\n var showing = this.isShowRowGroupForThisRow();\n return showing;\n }\n return true;\n };\n GroupCellRendererCtrl.prototype.showExpandAndContractIcons = function () {\n var _a = this, params = _a.params, displayedGroup = _a.displayedGroupNode, columnModel = _a.columnModel;\n var node = params.node;\n var isExpandable = this.isExpandable();\n if (isExpandable) {\n // if expandable, show one based on expand state.\n // if we were dragged down, means our parent is always expanded\n var expanded = this.showingValueForOpenedParent ? true : node.expanded;\n this.comp.setExpandedDisplayed(expanded);\n this.comp.setContractedDisplayed(!expanded);\n }\n else {\n // it not expandable, show neither\n this.comp.setExpandedDisplayed(false);\n this.comp.setContractedDisplayed(false);\n }\n // compensation padding for leaf nodes, so there is blank space instead of the expand icon\n var pivotMode = columnModel.isPivotMode();\n var pivotModeAndLeafGroup = pivotMode && displayedGroup.leafGroup;\n var addExpandableCss = isExpandable && !pivotModeAndLeafGroup;\n var isTotalFooterNode = node.footer && node.level === -1;\n this.comp.addOrRemoveCssClass('ag-cell-expandable', addExpandableCss);\n this.comp.addOrRemoveCssClass('ag-row-group', addExpandableCss);\n if (pivotMode) {\n this.comp.addOrRemoveCssClass('ag-pivot-leaf-group', pivotModeAndLeafGroup);\n }\n else if (!isTotalFooterNode) {\n this.comp.addOrRemoveCssClass('ag-row-group-leaf-indent', !addExpandableCss);\n }\n };\n GroupCellRendererCtrl.prototype.onRowNodeIsExpandableChanged = function () {\n // maybe if no children now, we should hide the expand / contract icons\n this.showExpandAndContractIcons();\n // if we have no children, this impacts the indent\n this.setIndent();\n this.refreshAriaExpanded();\n };\n GroupCellRendererCtrl.prototype.setupIndent = function () {\n // only do this if an indent - as this overwrites the padding that\n // the theme set, which will make things look 'not aligned' for the\n // first group level.\n var node = this.params.node;\n var suppressPadding = this.params.suppressPadding;\n if (!suppressPadding) {\n this.addManagedListener(node, RowNode.EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));\n this.setIndent();\n }\n };\n GroupCellRendererCtrl.prototype.setIndent = function () {\n if (this.gridOptionsService.is('groupHideOpenParents')) {\n return;\n }\n var params = this.params;\n var rowNode = params.node;\n // if we are only showing one group column, we don't want to be indenting based on level\n var fullWithRow = !!params.colDef;\n var treeData = this.gridOptionsService.isTreeData();\n var manyDimensionThisColumn = !fullWithRow || treeData || params.colDef.showRowGroup === true;\n var paddingCount = manyDimensionThisColumn ? rowNode.uiLevel : 0;\n if (this.indentClass) {\n this.comp.addOrRemoveCssClass(this.indentClass, false);\n }\n this.indentClass = 'ag-row-group-indent-' + paddingCount;\n this.comp.addOrRemoveCssClass(this.indentClass, true);\n };\n GroupCellRendererCtrl.prototype.addFullWidthRowDraggerIfNeeded = function () {\n var _this = this;\n if (!this.params.fullWidth || !this.params.rowDrag) {\n return;\n }\n var rowDragComp = new RowDragComp(function () { return _this.params.value; }, this.params.node);\n this.createManagedBean(rowDragComp, this.context);\n this.eGui.insertAdjacentElement('afterbegin', rowDragComp.getGui());\n };\n GroupCellRendererCtrl.prototype.isUserWantsSelected = function () {\n var paramsCheckbox = this.params.checkbox;\n // if a function, we always return true as change detection can show or hide the checkbox.\n return typeof paramsCheckbox === 'function' || paramsCheckbox === true;\n };\n GroupCellRendererCtrl.prototype.addCheckboxIfNeeded = function () {\n var _this = this;\n var rowNode = this.displayedGroupNode;\n var checkboxNeeded = this.isUserWantsSelected() &&\n // footers cannot be selected\n !rowNode.footer &&\n // pinned rows cannot be selected\n !rowNode.rowPinned &&\n // details cannot be selected\n !rowNode.detail;\n if (checkboxNeeded) {\n var cbSelectionComponent_1 = new CheckboxSelectionComponent();\n this.getContext().createBean(cbSelectionComponent_1);\n cbSelectionComponent_1.init({\n rowNode: rowNode,\n column: this.params.column,\n overrides: {\n isVisible: this.params.checkbox,\n callbackParams: this.params,\n removeHidden: true,\n },\n });\n this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());\n this.addDestroyFunc(function () { return _this.getContext().destroyBean(cbSelectionComponent_1); });\n }\n this.comp.setCheckboxVisible(checkboxNeeded);\n };\n GroupCellRendererCtrl.prototype.onKeyDown = function (event) {\n var enterKeyPressed = event.key === KeyCode.ENTER;\n if (!enterKeyPressed || this.params.suppressEnterExpand) {\n return;\n }\n var cellEditable = this.params.column && this.params.column.isCellEditable(this.params.node);\n if (cellEditable) {\n return;\n }\n this.onExpandOrContract(event);\n };\n GroupCellRendererCtrl.prototype.onCellDblClicked = function (mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // we want to avoid acting on double click events on the expand / contract icon,\n // as that icons already has expand / collapse functionality on it. otherwise if\n // the icon was double clicked, we would get 'click', 'click', 'dblclick' which\n // is open->close->open, however double click should be open->close only.\n var targetIsExpandIcon = isElementInEventPath(this.eExpanded, mouseEvent)\n || isElementInEventPath(this.eContracted, mouseEvent);\n if (!targetIsExpandIcon) {\n this.onExpandOrContract(mouseEvent);\n }\n };\n __decorate$1Z([\n Autowired('expressionService')\n ], GroupCellRendererCtrl.prototype, \"expressionService\", void 0);\n __decorate$1Z([\n Autowired('valueFormatterService')\n ], GroupCellRendererCtrl.prototype, \"valueFormatterService\", void 0);\n __decorate$1Z([\n Autowired('columnModel')\n ], GroupCellRendererCtrl.prototype, \"columnModel\", void 0);\n __decorate$1Z([\n Autowired('userComponentFactory')\n ], GroupCellRendererCtrl.prototype, \"userComponentFactory\", void 0);\n __decorate$1Z([\n Autowired(\"ctrlsService\")\n ], GroupCellRendererCtrl.prototype, \"ctrlsService\", void 0);\n return GroupCellRendererCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$28 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupCellRenderer = /** @class */ (function (_super) {\n __extends$28(GroupCellRenderer, _super);\n function GroupCellRenderer() {\n return _super.call(this, GroupCellRenderer.TEMPLATE) || this;\n }\n GroupCellRenderer.prototype.init = function (params) {\n var _this = this;\n var compProxy = {\n setInnerRenderer: function (compDetails, valueToDisplay) { return _this.setRenderDetails(compDetails, valueToDisplay); },\n setChildCount: function (count) { return _this.eChildCount.innerHTML = count; },\n addOrRemoveCssClass: function (cssClass, value) { return _this.addOrRemoveCssClass(cssClass, value); },\n setContractedDisplayed: function (expanded) { return setDisplayed(_this.eContracted, expanded); },\n setExpandedDisplayed: function (expanded) { return setDisplayed(_this.eExpanded, expanded); },\n setCheckboxVisible: function (visible) { return _this.eCheckbox.classList.toggle('ag-invisible', !visible); }\n };\n var ctrl = this.createManagedBean(new GroupCellRendererCtrl());\n var fullWidth = !params.colDef;\n var eGui = this.getGui();\n ctrl.init(compProxy, eGui, this.eCheckbox, this.eExpanded, this.eContracted, this.constructor, params);\n if (fullWidth) {\n setAriaRole(eGui, 'gridcell');\n }\n };\n GroupCellRenderer.prototype.setRenderDetails = function (compDetails, valueToDisplay) {\n var _this = this;\n if (compDetails) {\n var componentPromise = compDetails.newAgStackInstance();\n if (!componentPromise) {\n return;\n }\n componentPromise.then(function (comp) {\n if (!comp) {\n return;\n }\n var destroyComp = function () { return _this.context.destroyBean(comp); };\n if (_this.isAlive()) {\n _this.eValue.appendChild(comp.getGui());\n _this.addDestroyFunc(destroyComp);\n }\n else {\n destroyComp();\n }\n });\n }\n else {\n this.eValue.innerText = valueToDisplay;\n }\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to have public here instead of private or protected\n GroupCellRenderer.prototype.destroy = function () {\n this.getContext().destroyBean(this.innerCellRenderer);\n _super.prototype.destroy.call(this);\n };\n GroupCellRenderer.prototype.refresh = function () {\n return false;\n };\n GroupCellRenderer.TEMPLATE = \"<span class=\\\"ag-cell-wrapper\\\">\\n <span class=\\\"ag-group-expanded\\\" ref=\\\"eExpanded\\\"></span>\\n <span class=\\\"ag-group-contracted\\\" ref=\\\"eContracted\\\"></span>\\n <span class=\\\"ag-group-checkbox ag-invisible\\\" ref=\\\"eCheckbox\\\"></span>\\n <span class=\\\"ag-group-value\\\" ref=\\\"eValue\\\"></span>\\n <span class=\\\"ag-group-child-count\\\" ref=\\\"eChildCount\\\"></span>\\n </span>\";\n __decorate$1Y([\n RefSelector('eExpanded')\n ], GroupCellRenderer.prototype, \"eExpanded\", void 0);\n __decorate$1Y([\n RefSelector('eContracted')\n ], GroupCellRenderer.prototype, \"eContracted\", void 0);\n __decorate$1Y([\n RefSelector('eCheckbox')\n ], GroupCellRenderer.prototype, \"eCheckbox\", void 0);\n __decorate$1Y([\n RefSelector('eValue')\n ], GroupCellRenderer.prototype, \"eValue\", void 0);\n __decorate$1Y([\n RefSelector('eChildCount')\n ], GroupCellRenderer.prototype, \"eChildCount\", void 0);\n return GroupCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$27 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LoadingCellRenderer = /** @class */ (function (_super) {\n __extends$27(LoadingCellRenderer, _super);\n function LoadingCellRenderer() {\n return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;\n }\n LoadingCellRenderer.prototype.init = function (params) {\n params.node.failedLoad ? this.setupFailed() : this.setupLoading();\n };\n LoadingCellRenderer.prototype.setupFailed = function () {\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingError', 'ERR');\n };\n LoadingCellRenderer.prototype.setupLoading = function () {\n var eLoadingIcon = createIconNoSpan('groupLoading', this.gridOptionsService, null);\n if (eLoadingIcon) {\n this.eLoadingIcon.appendChild(eLoadingIcon);\n }\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');\n };\n LoadingCellRenderer.prototype.refresh = function (params) {\n return false;\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n LoadingCellRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n LoadingCellRenderer.TEMPLATE = \"<div class=\\\"ag-loading\\\">\\n <span class=\\\"ag-loading-icon\\\" ref=\\\"eLoadingIcon\\\"></span>\\n <span class=\\\"ag-loading-text\\\" ref=\\\"eLoadingText\\\"></span>\\n </div>\";\n __decorate$1X([\n RefSelector('eLoadingIcon')\n ], LoadingCellRenderer.prototype, \"eLoadingIcon\", void 0);\n __decorate$1X([\n RefSelector('eLoadingText')\n ], LoadingCellRenderer.prototype, \"eLoadingText\", void 0);\n return LoadingCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$26 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LoadingOverlayComponent$1 = /** @class */ (function (_super) {\n __extends$26(LoadingOverlayComponent, _super);\n function LoadingOverlayComponent() {\n return _super.call(this) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n LoadingOverlayComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n LoadingOverlayComponent.prototype.init = function (params) {\n var _a;\n var template = (_a = this.gridOptionsService.get('overlayLoadingTemplate')) !== null && _a !== void 0 ? _a : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));\n this.setTemplate(localisedTemplate);\n };\n LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '<span class=\"ag-overlay-loading-center\">[LOADING...]</span>';\n return LoadingOverlayComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$25 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar NoRowsOverlayComponent$1 = /** @class */ (function (_super) {\n __extends$25(NoRowsOverlayComponent, _super);\n function NoRowsOverlayComponent() {\n return _super.call(this) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n NoRowsOverlayComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n NoRowsOverlayComponent.prototype.init = function (params) {\n var _a;\n var template = (_a = this.gridOptionsService.get('overlayNoRowsTemplate')) !== null && _a !== void 0 ? _a : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));\n this.setTemplate(localisedTemplate);\n };\n NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '<span class=\"ag-overlay-no-rows-center\">[NO_ROWS_TO_SHOW]</span>';\n return NoRowsOverlayComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$24 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TooltipComponent$1 = /** @class */ (function (_super) {\n __extends$24(TooltipComponent, _super);\n function TooltipComponent() {\n return _super.call(this, /* html */ \"<div class=\\\"ag-tooltip\\\"></div>\") || this;\n }\n // will need to type params\n TooltipComponent.prototype.init = function (params) {\n var value = params.value;\n this.getGui().innerHTML = escapeString(value);\n };\n return TooltipComponent;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$23 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$m = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$i = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$m(arguments[i]));\n return ar;\n};\nvar UserComponentRegistry = /** @class */ (function (_super) {\n __extends$23(UserComponentRegistry, _super);\n function UserComponentRegistry() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.agGridDefaults = {\n //date\n agDateInput: DefaultDateComponent,\n //header\n agColumnHeader: HeaderComp,\n agColumnGroupHeader: HeaderGroupComp,\n agSortIndicator: SortIndicatorComp,\n //floating filters\n agTextColumnFloatingFilter: TextFloatingFilter,\n agNumberColumnFloatingFilter: NumberFloatingFilter,\n agDateColumnFloatingFilter: DateFloatingFilter,\n agReadOnlyFloatingFilter: ReadOnlyFloatingFilter,\n // renderers\n agAnimateShowChangeCellRenderer: AnimateShowChangeCellRenderer,\n agAnimateSlideCellRenderer: AnimateSlideCellRenderer,\n agGroupCellRenderer: GroupCellRenderer,\n agGroupRowRenderer: GroupCellRenderer,\n agLoadingCellRenderer: LoadingCellRenderer,\n //editors\n agCellEditor: TextCellEditor,\n agTextCellEditor: TextCellEditor,\n agSelectCellEditor: SelectCellEditor,\n agLargeTextCellEditor: LargeTextCellEditor,\n //filter\n agTextColumnFilter: TextFilter,\n agNumberColumnFilter: NumberFilter,\n agDateColumnFilter: DateFilter,\n //overlays\n agLoadingOverlay: LoadingOverlayComponent$1,\n agNoRowsOverlay: NoRowsOverlayComponent$1,\n // tooltips\n agTooltipComponent: TooltipComponent$1\n };\n /** Used to provide useful error messages if a user is trying to use an enterprise component without loading the module. */\n _this.enterpriseAgDefaultCompsModule = {\n agSetColumnFilter: ModuleNames.SetFilterModule,\n agSetColumnFloatingFilter: ModuleNames.SetFilterModule,\n agMultiColumnFilter: ModuleNames.MultiFilterModule,\n agMultiColumnFloatingFilter: ModuleNames.MultiFilterModule,\n agGroupColumnFilter: ModuleNames.RowGroupingModule,\n agGroupColumnFloatingFilter: ModuleNames.RowGroupingModule,\n agRichSelect: ModuleNames.RichSelectModule,\n agRichSelectCellEditor: ModuleNames.RichSelectModule,\n agDetailCellRenderer: ModuleNames.MasterDetailModule,\n agSparklineCellRenderer: ModuleNames.SparklinesModule\n };\n _this.deprecatedAgGridDefaults = {\n agPopupTextCellEditor: 'AG Grid: Since v27.1 The agPopupTextCellEditor is deprecated. Instead use { cellEditor: \"agTextCellEditor\", cellEditorPopup: true }',\n agPopupSelectCellEditor: 'AG Grid: Since v27.1 the agPopupSelectCellEditor is deprecated. Instead use { cellEditor: \"agSelectCellEditor\", cellEditorPopup: true }',\n };\n _this.jsComps = {};\n _this.fwComps = {};\n return _this;\n }\n UserComponentRegistry.prototype.init = function () {\n var _this = this;\n if (this.gridOptions.components != null) {\n iterateObject(this.gridOptions.components, function (key, component) { return _this.registerJsComponent(key, component); });\n }\n if (this.gridOptions.frameworkComponents != null) {\n iterateObject(this.gridOptions.frameworkComponents, function (key, component) { return _this.registerFwComponent(key, component); });\n }\n };\n UserComponentRegistry.prototype.registerDefaultComponent = function (name, component) {\n if (this.agGridDefaults[name]) {\n console.error(\"Trying to overwrite a default component. You should call registerComponent\");\n return;\n }\n this.agGridDefaults[name] = component;\n };\n UserComponentRegistry.prototype.registerJsComponent = function (name, component) {\n if (this.fwComps[name]) {\n console.error(\"Trying to register a component that you have already registered for frameworks: \" + name);\n return;\n }\n this.jsComps[name] = component;\n };\n /**\n * B the business interface (ie IHeader)\n * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n */\n UserComponentRegistry.prototype.registerFwComponent = function (name, component) {\n var warningMessage = \"AG Grid: As of v27, registering components via grid property frameworkComponents is deprecated. Instead register both JavaScript AND Framework Components via the components property.\";\n doOnce(function () { return console.warn(warningMessage); }, \"UserComponentRegistry.frameworkComponentsDeprecated\");\n this.fwComps[name] = component;\n };\n UserComponentRegistry.prototype.retrieve = function (propertyName, name) {\n var _this = this;\n var createResult = function (component, componentFromFramework) { return ({ componentFromFramework: componentFromFramework, component: component }); };\n // FrameworkOverrides.frameworkComponent() is used in two locations:\n // 1) for Vue, user provided components get registered via a framework specific way.\n // 2) for React, it's how the React UI provides alternative default components (eg GroupCellRenderer and DetailCellRenderer)\n var registeredViaFrameworkComp = this.getFrameworkOverrides().frameworkComponent(name, this.gridOptions.components);\n if (registeredViaFrameworkComp != null) {\n return createResult(registeredViaFrameworkComp, true);\n }\n var frameworkComponent = this.fwComps[name];\n if (frameworkComponent) {\n return createResult(frameworkComponent, true);\n }\n var jsComponent = this.jsComps[name];\n if (jsComponent) {\n var isFwkComp = this.getFrameworkOverrides().isFrameworkComponent(jsComponent);\n return createResult(jsComponent, isFwkComp);\n }\n var defaultComponent = this.agGridDefaults[name];\n if (defaultComponent) {\n return createResult(defaultComponent, false);\n }\n var moduleForComponent = this.enterpriseAgDefaultCompsModule[name];\n if (moduleForComponent) {\n ModuleRegistry.assertRegistered(moduleForComponent, \"AG Grid '\" + propertyName + \"' component: \" + name);\n }\n else if (this.deprecatedAgGridDefaults[name]) {\n doOnce(function () { return console.warn(_this.deprecatedAgGridDefaults[name]); }, name);\n }\n else {\n doOnce(function () { _this.warnAboutMissingComponent(propertyName, name); }, \"MissingComp\" + name);\n }\n return null;\n };\n UserComponentRegistry.prototype.warnAboutMissingComponent = function (propertyName, componentName) {\n var validComponents = __spread$i(Object.keys(this.agGridDefaults).filter(function (k) { return !['agCellEditor', 'agGroupRowRenderer', 'agSortIndicator'].includes(k); }), Object.keys(this.jsComps), Object.keys(this.fwComps));\n var suggestions = fuzzySuggestions(componentName, validComponents, true, 0.8);\n console.warn(\"AG Grid: Could not find '\" + componentName + \"' component. It was configured as \\\"\" + propertyName + \": '\" + componentName + \"'\\\" but it wasn't found in the list of registered components.\");\n if (suggestions.length > 0) {\n console.warn(\" Did you mean: [\" + suggestions.slice(0, 3) + \"]?\");\n }\n console.warn(\"If using a custom component check it has been registered as described in: https://ag-grid.com/javascript-data-grid/components/\");\n };\n __decorate$1W([\n Autowired('gridOptions')\n ], UserComponentRegistry.prototype, \"gridOptions\", void 0);\n __decorate$1W([\n PostConstruct\n ], UserComponentRegistry.prototype, \"init\", null);\n UserComponentRegistry = __decorate$1W([\n Bean('userComponentRegistry')\n ], UserComponentRegistry);\n return UserComponentRegistry;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DateComponent = {\n propertyName: 'dateComponent',\n cellRenderer: false\n};\nvar HeaderComponent = {\n propertyName: 'headerComponent',\n cellRenderer: false\n};\nvar HeaderGroupComponent = {\n propertyName: 'headerGroupComponent',\n cellRenderer: false\n};\nvar CellRendererComponent = {\n propertyName: 'cellRenderer',\n cellRenderer: true\n};\nvar CellEditorComponent = {\n propertyName: 'cellEditor',\n cellRenderer: false\n};\nvar InnerRendererComponent = {\n propertyName: 'innerRenderer',\n cellRenderer: true\n};\nvar LoadingOverlayComponent = {\n propertyName: 'loadingOverlayComponent',\n cellRenderer: false\n};\nvar NoRowsOverlayComponent = {\n propertyName: 'noRowsOverlayComponent',\n cellRenderer: false\n};\nvar TooltipComponent = {\n propertyName: 'tooltipComponent',\n cellRenderer: false\n};\nvar FilterComponent = {\n propertyName: 'filter',\n cellRenderer: false\n};\nvar FloatingFilterComponent = {\n propertyName: 'floatingFilterComponent',\n cellRenderer: false\n};\nvar ToolPanelComponent = {\n propertyName: 'toolPanel',\n cellRenderer: false\n};\nvar StatusPanelComponent = {\n propertyName: 'statusPanel',\n cellRenderer: false\n};\nvar FullWidth = {\n propertyName: 'fullWidthCellRenderer',\n cellRenderer: true\n};\nvar FullWidthLoading = {\n propertyName: 'loadingCellRenderer',\n cellRenderer: true\n};\nvar FullWidthGroup = {\n propertyName: 'groupRowRenderer',\n cellRenderer: true\n};\nvar FullWidthDetail = {\n propertyName: 'detailCellRenderer',\n cellRenderer: true\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar FloatingFilterMapper = /** @class */ (function () {\n function FloatingFilterMapper() {\n }\n FloatingFilterMapper.getFloatingFilterType = function (filterType) {\n return this.filterToFloatingFilterMapping[filterType];\n };\n FloatingFilterMapper.filterToFloatingFilterMapping = {\n set: 'agSetColumnFloatingFilter',\n agSetColumnFilter: 'agSetColumnFloatingFilter',\n multi: 'agMultiColumnFloatingFilter',\n agMultiColumnFilter: 'agMultiColumnFloatingFilter',\n group: 'agGroupColumnFloatingFilter',\n agGroupColumnFilter: 'agGroupColumnFloatingFilter',\n number: 'agNumberColumnFloatingFilter',\n agNumberColumnFilter: 'agNumberColumnFloatingFilter',\n date: 'agDateColumnFloatingFilter',\n agDateColumnFilter: 'agDateColumnFloatingFilter',\n text: 'agTextColumnFloatingFilter',\n agTextColumnFilter: 'agTextColumnFloatingFilter'\n };\n return FloatingFilterMapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$22 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UserComponentFactory = /** @class */ (function (_super) {\n __extends$22(UserComponentFactory, _super);\n function UserComponentFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UserComponentFactory.prototype.getHeaderCompDetails = function (colDef, params) {\n return this.getCompDetails(colDef, HeaderComponent, 'agColumnHeader', params);\n };\n UserComponentFactory.prototype.getHeaderGroupCompDetails = function (params) {\n var colGroupDef = params.columnGroup.getColGroupDef();\n return this.getCompDetails(colGroupDef, HeaderGroupComponent, 'agColumnGroupHeader', params);\n };\n // this one is unusual, as it can be LoadingCellRenderer, DetailCellRenderer, FullWidthCellRenderer or GroupRowRenderer.\n // so we have to pass the type in.\n UserComponentFactory.prototype.getFullWidthCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidth, null, params, true);\n };\n UserComponentFactory.prototype.getFullWidthLoadingCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidthLoading, 'agLoadingCellRenderer', params, true);\n };\n UserComponentFactory.prototype.getFullWidthGroupCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidthGroup, 'agGroupRowRenderer', params, true);\n };\n UserComponentFactory.prototype.getFullWidthDetailCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidthDetail, 'agDetailCellRenderer', params, true);\n };\n // CELL RENDERER\n UserComponentFactory.prototype.getInnerRendererDetails = function (def, params) {\n return this.getCompDetails(def, InnerRendererComponent, null, params);\n };\n UserComponentFactory.prototype.getFullWidthGroupRowInnerCellRenderer = function (def, params) {\n return this.getCompDetails(def, InnerRendererComponent, null, params);\n };\n UserComponentFactory.prototype.getCellRendererDetails = function (def, params) {\n return this.getCompDetails(def, CellRendererComponent, null, params);\n };\n // CELL EDITOR\n UserComponentFactory.prototype.getCellEditorDetails = function (def, params) {\n return this.getCompDetails(def, CellEditorComponent, 'agCellEditor', params, true);\n };\n // FILTER\n UserComponentFactory.prototype.getFilterDetails = function (def, params, defaultFilter) {\n return this.getCompDetails(def, FilterComponent, defaultFilter, params, true);\n };\n UserComponentFactory.prototype.getDateCompDetails = function (params) {\n return this.getCompDetails(this.gridOptions, DateComponent, 'agDateInput', params, true);\n };\n UserComponentFactory.prototype.getLoadingOverlayCompDetails = function (params) {\n return this.getCompDetails(this.gridOptions, LoadingOverlayComponent, 'agLoadingOverlay', params, true);\n };\n UserComponentFactory.prototype.getNoRowsOverlayCompDetails = function (params) {\n return this.getCompDetails(this.gridOptions, NoRowsOverlayComponent, 'agNoRowsOverlay', params, true);\n };\n UserComponentFactory.prototype.getTooltipCompDetails = function (params) {\n return this.getCompDetails(params.colDef, TooltipComponent, 'agTooltipComponent', params, true);\n };\n UserComponentFactory.prototype.getSetFilterCellRendererDetails = function (def, params) {\n return this.getCompDetails(def, CellRendererComponent, null, params);\n };\n UserComponentFactory.prototype.getFloatingFilterCompDetails = function (def, params, defaultFloatingFilter) {\n return this.getCompDetails(def, FloatingFilterComponent, defaultFloatingFilter, params);\n };\n UserComponentFactory.prototype.getToolPanelCompDetails = function (toolPanelDef, params) {\n return this.getCompDetails(toolPanelDef, ToolPanelComponent, null, params, true);\n };\n UserComponentFactory.prototype.getStatusPanelCompDetails = function (def, params) {\n return this.getCompDetails(def, StatusPanelComponent, null, params, true);\n };\n UserComponentFactory.prototype.getCompDetails = function (defObject, type, defaultName, params, mandatory) {\n var _this = this;\n if (mandatory === void 0) { mandatory = false; }\n var propertyName = type.propertyName, cellRenderer = type.cellRenderer;\n var _a = this.getCompKeys(defObject, type, params), compName = _a.compName, jsComp = _a.jsComp, fwComp = _a.fwComp, paramsFromSelector = _a.paramsFromSelector, popupFromSelector = _a.popupFromSelector, popupPositionFromSelector = _a.popupPositionFromSelector;\n var lookupFromRegistry = function (key) {\n var item = _this.userComponentRegistry.retrieve(propertyName, key);\n if (item) {\n jsComp = !item.componentFromFramework ? item.component : undefined;\n fwComp = item.componentFromFramework ? item.component : undefined;\n }\n };\n // if compOption is a string, means we need to look the item up\n if (compName != null) {\n lookupFromRegistry(compName);\n }\n // if lookup brought nothing back, and we have a default, lookup the default\n if (jsComp == null && fwComp == null && defaultName != null) {\n lookupFromRegistry(defaultName);\n }\n // if we have a comp option, and it's a function, replace it with an object equivalent adaptor\n if (jsComp && cellRenderer && !this.agComponentUtils.doesImplementIComponent(jsComp)) {\n jsComp = this.agComponentUtils.adaptFunction(propertyName, jsComp);\n }\n if (!jsComp && !fwComp) {\n if (mandatory) {\n console.error(\"AG Grid: Could not find component \" + compName + \", did you forget to configure this component?\");\n }\n return;\n }\n var paramsMerged = this.mergeParamsWithApplicationProvidedParams(defObject, type, params, paramsFromSelector);\n var componentFromFramework = jsComp == null;\n var componentClass = jsComp ? jsComp : fwComp;\n return {\n componentFromFramework: componentFromFramework,\n componentClass: componentClass,\n params: paramsMerged,\n type: type,\n popupFromSelector: popupFromSelector,\n popupPositionFromSelector: popupPositionFromSelector,\n newAgStackInstance: function () { return _this.newAgStackInstance(componentClass, componentFromFramework, paramsMerged, type); }\n };\n };\n UserComponentFactory.prototype.getCompKeys = function (defObject, type, params) {\n var _this = this;\n var propertyName = type.propertyName;\n var compName;\n var jsComp;\n var fwComp;\n var paramsFromSelector;\n var popupFromSelector;\n var popupPositionFromSelector;\n // there are two types of js comps, class based and func based. we can only check for\n // class based, by checking if getGui() exists. no way to differentiate js func based vs eg react func based\n // const isJsClassComp = (comp: any) => this.agComponentUtils.doesImplementIComponent(comp);\n // const fwActive = this.frameworkComponentWrapper != null;\n // pull from defObject if available\n if (defObject) {\n var defObjectAny = defObject;\n // if selector, use this\n var selectorFunc = defObjectAny[propertyName + 'Selector'];\n var selectorRes = selectorFunc ? selectorFunc(params) : null;\n var assignComp = function (providedJsComp, providedFwComp) {\n var xxxFrameworkDeprecatedWarn = function () {\n var warningMessage = \"AG Grid: As of v27, the property \" + propertyName + \"Framework is deprecated. The property \" + propertyName + \" can now be used for JavaScript AND Framework Components.\";\n doOnce(function () { return console.warn(warningMessage); }, \"UserComponentFactory.\" + propertyName + \"FrameworkDeprecated\");\n };\n if (typeof providedJsComp === 'string') {\n compName = providedJsComp;\n }\n else if (typeof providedFwComp === 'string') {\n xxxFrameworkDeprecatedWarn();\n compName = providedFwComp;\n // comp===true for filters, which means use the default comp\n }\n else if (providedJsComp != null && providedJsComp !== true) {\n var isFwkComp = _this.getFrameworkOverrides().isFrameworkComponent(providedJsComp);\n if (isFwkComp) {\n fwComp = providedJsComp;\n }\n else {\n jsComp = providedJsComp;\n }\n }\n else if (providedFwComp != null) {\n xxxFrameworkDeprecatedWarn();\n fwComp = providedFwComp;\n }\n };\n if (selectorRes) {\n if (selectorRes.frameworkComponent != null) {\n var warningMessage_1 = \"AG Grid: As of v27, the return for \" + propertyName + \"Selector has attributes [component, params] only. The attribute frameworkComponent is deprecated. You should now return back Framework Components using the 'component' attribute and the grid works out if it's a framework component or not.\";\n doOnce(function () { return console.warn(warningMessage_1); }, \"UserComponentFactory.\" + propertyName + \"FrameworkSelectorDeprecated\");\n assignComp(selectorRes.frameworkComponent, undefined);\n }\n else {\n assignComp(selectorRes.component, undefined);\n }\n paramsFromSelector = selectorRes.params;\n popupFromSelector = selectorRes.popup;\n popupPositionFromSelector = selectorRes.popupPosition;\n }\n else {\n // if no selector, or result of selector is empty, take from defObject\n assignComp(defObjectAny[propertyName], defObjectAny[propertyName + 'Framework']);\n }\n }\n return { compName: compName, jsComp: jsComp, fwComp: fwComp, paramsFromSelector: paramsFromSelector, popupFromSelector: popupFromSelector, popupPositionFromSelector: popupPositionFromSelector };\n };\n UserComponentFactory.prototype.newAgStackInstance = function (ComponentClass, componentFromFramework, params, type) {\n var propertyName = type.propertyName;\n var jsComponent = !componentFromFramework;\n // using javascript component\n var instance;\n if (jsComponent) {\n instance = new ComponentClass();\n }\n else {\n // Using framework component\n var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);\n instance = this.frameworkComponentWrapper.wrap(ComponentClass, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, type);\n }\n var deferredInit = this.initComponent(instance, params);\n if (deferredInit == null) {\n return AgPromise.resolve(instance);\n }\n return deferredInit.then(function () { return instance; });\n };\n // used by Floating Filter\n UserComponentFactory.prototype.mergeParamsWithApplicationProvidedParams = function (defObject, type, paramsFromGrid, paramsFromSelector) {\n if (paramsFromSelector === void 0) { paramsFromSelector = null; }\n var params = {\n context: this.gridOptionsService.context,\n columnApi: this.gridOptionsService.columnApi,\n api: this.gridOptionsService.api\n };\n mergeDeep(params, paramsFromGrid);\n // pull user params from either the old prop name and new prop name\n // eg either cellRendererParams and cellCompParams\n var defObjectAny = defObject;\n var userParams = defObjectAny && defObjectAny[type.propertyName + 'Params'];\n if (typeof userParams === 'function') {\n var userParamsFromFunc = userParams(paramsFromGrid);\n mergeDeep(params, userParamsFromFunc);\n }\n else if (typeof userParams === 'object') {\n mergeDeep(params, userParams);\n }\n mergeDeep(params, paramsFromSelector);\n return params;\n };\n UserComponentFactory.prototype.initComponent = function (component, params) {\n this.context.createBean(component);\n if (component.init == null) {\n return;\n }\n return component.init(params);\n };\n UserComponentFactory.prototype.getDefaultFloatingFilterType = function (def) {\n if (def == null) {\n return null;\n }\n var defaultFloatingFilterType = null;\n var _a = this.getCompKeys(def, FilterComponent), compName = _a.compName, jsComp = _a.jsComp, fwComp = _a.fwComp;\n if (compName) {\n // will be undefined if not in the map\n defaultFloatingFilterType = FloatingFilterMapper.getFloatingFilterType(compName);\n }\n else {\n var usingDefaultFilter = (jsComp == null && fwComp == null) && (def.filter === true);\n if (usingDefaultFilter) {\n var setFilterModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule);\n defaultFloatingFilterType = setFilterModuleLoaded ? 'agSetColumnFloatingFilter' : 'agTextColumnFloatingFilter';\n }\n }\n return defaultFloatingFilterType;\n };\n __decorate$1V([\n Autowired('gridOptions')\n ], UserComponentFactory.prototype, \"gridOptions\", void 0);\n __decorate$1V([\n Autowired('agComponentUtils')\n ], UserComponentFactory.prototype, \"agComponentUtils\", void 0);\n __decorate$1V([\n Autowired('componentMetadataProvider')\n ], UserComponentFactory.prototype, \"componentMetadataProvider\", void 0);\n __decorate$1V([\n Autowired('userComponentRegistry')\n ], UserComponentFactory.prototype, \"userComponentRegistry\", void 0);\n __decorate$1V([\n Optional('frameworkComponentWrapper')\n ], UserComponentFactory.prototype, \"frameworkComponentWrapper\", void 0);\n UserComponentFactory = __decorate$1V([\n Bean('userComponentFactory')\n ], UserComponentFactory);\n return UserComponentFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// Excel Export\nvar ExcelFactoryMode;\n(function (ExcelFactoryMode) {\n ExcelFactoryMode[ExcelFactoryMode[\"SINGLE_SHEET\"] = 0] = \"SINGLE_SHEET\";\n ExcelFactoryMode[ExcelFactoryMode[\"MULTI_SHEET\"] = 1] = \"MULTI_SHEET\";\n})(ExcelFactoryMode || (ExcelFactoryMode = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$21 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** Adds drag listening onto an element. In AG Grid this is used twice, first is resizing columns,\n * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */\nvar DragService = /** @class */ (function (_super) {\n __extends$21(DragService, _super);\n function DragService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dragEndFunctions = [];\n _this.dragSources = [];\n return _this;\n }\n DragService.prototype.removeAllListeners = function () {\n this.dragSources.forEach(this.removeListener.bind(this));\n this.dragSources.length = 0;\n };\n DragService.prototype.removeListener = function (dragSourceAndListener) {\n var element = dragSourceAndListener.dragSource.eElement;\n var mouseDownListener = dragSourceAndListener.mouseDownListener;\n element.removeEventListener('mousedown', mouseDownListener);\n // remove touch listener only if it exists\n if (dragSourceAndListener.touchEnabled) {\n var touchStartListener = dragSourceAndListener.touchStartListener;\n element.removeEventListener('touchstart', touchStartListener, { passive: true });\n }\n };\n DragService.prototype.removeDragSource = function (params) {\n var dragSourceAndListener = this.dragSources.find(function (item) { return item.dragSource === params; });\n if (!dragSourceAndListener) {\n return;\n }\n this.removeListener(dragSourceAndListener);\n removeFromArray(this.dragSources, dragSourceAndListener);\n };\n DragService.prototype.isDragging = function () {\n return this.dragging;\n };\n DragService.prototype.addDragSource = function (params, includeTouch) {\n var _this = this;\n if (includeTouch === void 0) { includeTouch = false; }\n var mouseListener = this.onMouseDown.bind(this, params);\n params.eElement.addEventListener('mousedown', mouseListener);\n var touchListener = null;\n var suppressTouch = this.gridOptionsService.is('suppressTouch');\n if (includeTouch && !suppressTouch) {\n touchListener = function (touchEvent) {\n if (isFocusableFormField(touchEvent.target)) {\n return;\n }\n if (touchEvent.cancelable) {\n touchEvent.preventDefault();\n touchEvent.stopPropagation();\n }\n _this.onTouchStart(params, touchEvent);\n };\n // we set passive=false, as we want to prevent default on this event\n params.eElement.addEventListener('touchstart', touchListener, { passive: false });\n }\n this.dragSources.push({\n dragSource: params,\n mouseDownListener: mouseListener,\n touchStartListener: touchListener,\n touchEnabled: includeTouch\n });\n };\n DragService.prototype.getStartTarget = function () {\n return this.startTarget;\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onTouchStart = function (params, touchEvent) {\n var _this = this;\n this.currentDragParams = params;\n this.dragging = false;\n var touch = touchEvent.touches[0];\n this.touchLastTime = touch;\n this.touchStart = touch;\n var touchMoveEvent = function (e) { return _this.onTouchMove(e, params.eElement); };\n var touchEndEvent = function (e) { return _this.onTouchUp(e, params.eElement); };\n var documentTouchMove = function (e) { if (e.cancelable) {\n e.preventDefault();\n } };\n var target = touchEvent.target;\n var events = [\n // Prevents the page document from moving while we are dragging items around.\n // preventDefault needs to be called in the touchmove listener and never inside the\n // touchstart, because using touchstart causes the click event to be cancelled on touch devices.\n { target: this.gridOptionsService.getRootNode(), type: 'touchmove', listener: documentTouchMove, options: { passive: false } },\n { target: target, type: 'touchmove', listener: touchMoveEvent, options: { passive: true } },\n { target: target, type: 'touchend', listener: touchEndEvent, options: { passive: true } },\n { target: target, type: 'touchcancel', listener: touchEndEvent, options: { passive: true } }\n ];\n // temporally add these listeners, for the duration of the drag\n this.addTemporaryEvents(events);\n // see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onCommonMove(touch, this.touchStart, params.eElement);\n }\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onMouseDown = function (params, mouseEvent) {\n var _this = this;\n var e = mouseEvent;\n if (params.skipMouseEvent && params.skipMouseEvent(mouseEvent)) {\n return;\n }\n // if there are two elements with parent / child relationship, and both are draggable,\n // when we drag the child, we should NOT drag the parent. an example of this is row moving\n // and range selection - row moving should get preference when use drags the rowDrag component.\n if (e._alreadyProcessedByDragService) {\n return;\n }\n e._alreadyProcessedByDragService = true;\n // only interested in left button clicks\n if (mouseEvent.button !== 0) {\n return;\n }\n this.currentDragParams = params;\n this.dragging = false;\n this.mouseStartEvent = mouseEvent;\n this.startTarget = mouseEvent.target;\n var mouseMoveEvent = function (event) { return _this.onMouseMove(event, params.eElement); };\n var mouseUpEvent = function (event) { return _this.onMouseUp(event, params.eElement); };\n var contextEvent = function (event) { return event.preventDefault(); };\n var target = this.gridOptionsService.getRootNode();\n var events = [\n { target: target, type: 'mousemove', listener: mouseMoveEvent },\n { target: target, type: 'mouseup', listener: mouseUpEvent },\n { target: target, type: 'contextmenu', listener: contextEvent }\n ];\n // temporally add these listeners, for the duration of the drag\n this.addTemporaryEvents(events);\n //see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onMouseMove(mouseEvent, params.eElement);\n }\n };\n DragService.prototype.addTemporaryEvents = function (events) {\n events.forEach(function (currentEvent) {\n var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;\n target.addEventListener(type, listener, options);\n });\n this.dragEndFunctions.push(function () {\n events.forEach(function (currentEvent) {\n var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;\n target.removeEventListener(type, listener, options);\n });\n });\n };\n // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {\n // by default, we wait 4 pixels before starting the drag\n var dragStartPixels = this.currentDragParams.dragStartPixels;\n var requiredPixelDiff = exists(dragStartPixels) ? dragStartPixels : 4;\n return areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n };\n DragService.prototype.getFirstActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n if (touchList[i].identifier === this.touchStart.identifier) {\n return touchList[i];\n }\n }\n return null;\n };\n DragService.prototype.onCommonMove = function (currentEvent, startEvent, el) {\n if (!this.dragging) {\n // if mouse hasn't travelled from the start position enough, do nothing\n if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {\n return;\n }\n this.dragging = true;\n var event_1 = {\n type: Events.EVENT_DRAG_STARTED,\n target: el\n };\n this.eventService.dispatchEvent(event_1);\n this.currentDragParams.onDragStart(startEvent);\n // we need ONE drag action at the startEvent, so that we are guaranteed the drop target\n // at the start gets notified. this is because the drag can start outside of the element\n // that started it, as the mouse is allowed drag away from the mouse down before it's\n // considered a drag (the isEventNearStartEvent() above). if we didn't do this, then\n // it would be possible to click a column by the edge, then drag outside of the drop zone\n // in less than 4 pixels and the drag officially starts outside of the header but the header\n // wouldn't be notified of the dragging.\n this.currentDragParams.onDragging(startEvent);\n }\n this.currentDragParams.onDragging(currentEvent);\n };\n DragService.prototype.onTouchMove = function (touchEvent, el) {\n var touch = this.getFirstActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n // this.___statusPanel.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');\n this.onCommonMove(touch, this.touchStart, el);\n };\n // only gets called after a mouse down - as this is only added after mouseDown\n // and is removed when mouseUp happens\n DragService.prototype.onMouseMove = function (mouseEvent, el) {\n // when `isEnableCellTextSelect` is `true`, we need to preventDefault on mouseMove\n // to avoid the grid text being selected while dragging components.\n // Note: Safari also has an issue, where `user-select: none` is not being respected.\n if ((this.gridOptionsService.is('enableCellTextSelection') || isBrowserSafari()) &&\n // The event type can be `mousedown` when `dragStartPixels=0`\n // we should only preventDefault on `mousemove`.\n mouseEvent.type === 'mousemove' &&\n mouseEvent.cancelable &&\n this.mouseEventService.isEventFromThisGrid(mouseEvent) &&\n // we should not prevent mouseMove when above a form field\n // as that would prevent the text in the field from being selected\n !this.isOverFormFieldElement(mouseEvent)) {\n mouseEvent.preventDefault();\n }\n this.onCommonMove(mouseEvent, this.mouseStartEvent, el);\n };\n DragService.prototype.isOverFormFieldElement = function (mouseEvent) {\n var el = mouseEvent.target;\n var tagName = el === null || el === void 0 ? void 0 : el.tagName.toLocaleLowerCase();\n return !!(tagName === null || tagName === void 0 ? void 0 : tagName.match('^a$|textarea|input|select|button'));\n };\n DragService.prototype.onTouchUp = function (touchEvent, el) {\n var touch = this.getFirstActiveTouch(touchEvent.changedTouches);\n // i haven't worked this out yet, but there is no matching touch\n // when we get the touch up event. to get around this, we swap in\n // the last touch. this is a hack to 'get it working' while we\n // figure out what's going on, why we are not getting a touch in\n // current event.\n if (!touch) {\n touch = this.touchLastTime;\n }\n // if mouse was left up before we started to move, then this is a tap.\n // we check this before onUpCommon as onUpCommon resets the dragging\n // let tap = !this.dragging;\n // let tapTarget = this.currentDragParams.eElement;\n this.onUpCommon(touch, el);\n // if tap, tell user\n // console.log(`${Math.random()} tap = ${tap}`);\n // if (tap) {\n // tapTarget.click();\n // }\n };\n DragService.prototype.onMouseUp = function (mouseEvent, el) {\n this.onUpCommon(mouseEvent, el);\n };\n DragService.prototype.onUpCommon = function (eventOrTouch, el) {\n if (this.dragging) {\n this.dragging = false;\n this.currentDragParams.onDragStop(eventOrTouch);\n var event_2 = {\n type: Events.EVENT_DRAG_STOPPED,\n target: el\n };\n this.eventService.dispatchEvent(event_2);\n }\n this.mouseStartEvent = null;\n this.startTarget = null;\n this.touchStart = null;\n this.touchLastTime = null;\n this.currentDragParams = null;\n this.dragEndFunctions.forEach(function (func) { return func(); });\n this.dragEndFunctions.length = 0;\n };\n __decorate$1U([\n Autowired('mouseEventService')\n ], DragService.prototype, \"mouseEventService\", void 0);\n __decorate$1U([\n PreDestroy\n ], DragService.prototype, \"removeAllListeners\", null);\n DragService = __decorate$1U([\n Bean('dragService')\n ], DragService);\n return DragService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar RowHighlightPosition;\n(function (RowHighlightPosition) {\n RowHighlightPosition[RowHighlightPosition[\"Above\"] = 0] = \"Above\";\n RowHighlightPosition[RowHighlightPosition[\"Below\"] = 1] = \"Below\";\n})(RowHighlightPosition || (RowHighlightPosition = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ClientSideRowModelSteps;\n(function (ClientSideRowModelSteps) {\n ClientSideRowModelSteps[\"EVERYTHING\"] = \"group\";\n ClientSideRowModelSteps[\"FILTER\"] = \"filter\";\n ClientSideRowModelSteps[\"SORT\"] = \"sort\";\n ClientSideRowModelSteps[\"MAP\"] = \"map\";\n ClientSideRowModelSteps[\"AGGREGATE\"] = \"aggregate\";\n ClientSideRowModelSteps[\"FILTER_AGGREGATES\"] = \"filter_aggregates\";\n ClientSideRowModelSteps[\"PIVOT\"] = \"pivot\";\n ClientSideRowModelSteps[\"NOTHING\"] = \"nothing\";\n})(ClientSideRowModelSteps || (ClientSideRowModelSteps = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction unwrapUserComp(comp) {\n var compAsAny = comp;\n var isProxy = compAsAny != null && compAsAny.getFrameworkComponentInstance != null;\n return isProxy ? compAsAny.getFrameworkComponentInstance() : comp;\n}\nvar GridApi = /** @class */ (function () {\n function GridApi() {\n this.detailGridInfoMap = {};\n this.destroyCalled = false;\n }\n GridApi.prototype.registerOverlayWrapperComp = function (overlayWrapperComp) {\n this.overlayWrapperComp = overlayWrapperComp;\n };\n GridApi.prototype.registerSideBarComp = function (sideBarComp) {\n this.sideBarComp = sideBarComp;\n };\n GridApi.prototype.init = function () {\n var _this = this;\n switch (this.rowModel.getType()) {\n case 'clientSide':\n this.clientSideRowModel = this.rowModel;\n break;\n case 'infinite':\n this.infiniteRowModel = this.rowModel;\n break;\n case 'serverSide':\n this.serverSideRowModel = this.rowModel;\n break;\n }\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n });\n };\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n GridApi.prototype.__getAlignedGridService = function () {\n return this.alignedGridsService;\n };\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n GridApi.prototype.__getContext = function () {\n return this.context;\n };\n GridApi.prototype.getSetterMethod = function (key) {\n return \"set\" + key.charAt(0).toUpperCase() + key.substring(1);\n };\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n GridApi.prototype.__setProperty = function (propertyName, value) {\n // Ensure the GridOptions property gets updated and fires the change event as we\n // cannot assume that the dynamic Api call will updated GridOptions.\n this.gridOptionsService.set(propertyName, value);\n // If the dynamic api does update GridOptions then change detection in the \n // GridOptionsService will prevent the event being fired twice.\n var setterName = this.getSetterMethod(propertyName);\n var dynamicApi = this;\n if (dynamicApi[setterName]) {\n dynamicApi[setterName](value);\n }\n };\n /** Register a detail grid with the master grid when it is created. */\n GridApi.prototype.addDetailGridInfo = function (id, gridInfo) {\n this.detailGridInfoMap[id] = gridInfo;\n };\n /** Unregister a detail grid from the master grid when it is destroyed. */\n GridApi.prototype.removeDetailGridInfo = function (id) {\n this.detailGridInfoMap[id] = undefined;\n };\n /** Returns the `DetailGridInfo` corresponding to the supplied `detailGridId`. */\n GridApi.prototype.getDetailGridInfo = function (id) {\n return this.detailGridInfoMap[id];\n };\n /** Iterates through each `DetailGridInfo` in the grid and calls the supplied callback on each. */\n GridApi.prototype.forEachDetailGridInfo = function (callback) {\n var index = 0;\n iterateObject(this.detailGridInfoMap, function (id, gridInfo) {\n // check for undefined, as old references will still be lying around\n if (exists(gridInfo)) {\n callback(gridInfo, index);\n index++;\n }\n });\n };\n /** Similar to `exportDataAsCsv`, except returns the result as a string rather than download it. */\n GridApi.prototype.getDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.getDataAsCsv')) {\n return this.csvCreator.getDataAsCsv(params);\n }\n };\n /** Downloads a CSV export of the grid's data. */\n GridApi.prototype.exportDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.exportDataAsCSv')) {\n this.csvCreator.exportDataAsCsv(params);\n }\n };\n GridApi.prototype.getExcelExportMode = function (params) {\n var baseParams = this.gridOptionsService.get('defaultExcelExportParams');\n var mergedParams = Object.assign({ exportMode: 'xlsx' }, baseParams, params);\n return mergedParams.exportMode;\n };\n GridApi.prototype.assertNotExcelMultiSheet = function (method, params) {\n if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.' + method)) {\n return false;\n }\n var exportMode = this.getExcelExportMode(params);\n if (this.excelCreator.getFactoryMode(exportMode) === ExcelFactoryMode.MULTI_SHEET) {\n console.warn(\"AG Grid: The Excel Exporter is currently on Multi Sheet mode. End that operation by calling 'api.getMultipleSheetAsExcel()' or 'api.exportMultipleSheetsAsExcel()'\");\n return false;\n }\n return true;\n };\n /** Similar to `exportDataAsExcel`, except instead of downloading a file, it will return a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) to be processed by the user. */\n GridApi.prototype.getDataAsExcel = function (params) {\n if (this.assertNotExcelMultiSheet('getDataAsExcel', params)) {\n return this.excelCreator.getDataAsExcel(params);\n }\n };\n /** Downloads an Excel export of the grid's data. */\n GridApi.prototype.exportDataAsExcel = function (params) {\n if (this.assertNotExcelMultiSheet('exportDataAsExcel', params)) {\n this.excelCreator.exportDataAsExcel(params);\n }\n };\n /** This is method to be used to get the grid's data as a sheet, that will later be exported either by `getMultipleSheetsAsExcel()` or `exportMultipleSheetsAsExcel()`. */\n GridApi.prototype.getSheetDataForExcel = function (params) {\n if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getSheetDataForExcel')) {\n return;\n }\n var exportMode = this.getExcelExportMode(params);\n this.excelCreator.setFactoryMode(ExcelFactoryMode.MULTI_SHEET, exportMode);\n return this.excelCreator.getSheetDataForExcel(params);\n };\n /** Similar to `exportMultipleSheetsAsExcel`, except instead of downloading a file, it will return a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) to be processed by the user. */\n GridApi.prototype.getMultipleSheetsAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getMultipleSheetsAsExcel')) {\n return this.excelCreator.getMultipleSheetsAsExcel(params);\n }\n };\n /** Downloads an Excel export of multiple sheets in one file. */\n GridApi.prototype.exportMultipleSheetsAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.exportMultipleSheetsAsExcel')) {\n return this.excelCreator.exportMultipleSheetsAsExcel(params);\n }\n };\n /**\n * Sets an ARIA property in the grid panel (element with `role=\\\"grid\\\"`), and removes an ARIA property when the value is null.\n *\n * Example: `api.setGridAriaProperty('label', 'my grid')` will set `aria-label=\\\"my grid\\\"`.\n *\n * `api.setGridAriaProperty('label', null)` will remove the `aria-label` attribute from the grid element.\n */\n GridApi.prototype.setGridAriaProperty = function (property, value) {\n if (!property) {\n return;\n }\n var eGrid = this.ctrlsService.getGridBodyCtrl().getGui();\n var ariaProperty = \"aria-\" + property;\n if (value === null) {\n eGrid.removeAttribute(ariaProperty);\n }\n else {\n eGrid.setAttribute(ariaProperty, value);\n }\n };\n GridApi.prototype.logMissingRowModel = function (apiMethod) {\n var requiredRowModels = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n requiredRowModels[_i - 1] = arguments[_i];\n }\n console.error(\"AG Grid: api.\" + apiMethod + \" can only be called when gridOptions.rowModelType is \" + requiredRowModels.join(' or '));\n };\n /** Set new datasource for Server-Side Row Model. */\n GridApi.prototype.setServerSideDatasource = function (datasource) {\n if (this.serverSideRowModel) {\n this.serverSideRowModel.setDatasource(datasource);\n }\n else {\n this.logMissingRowModel('setServerSideDatasource', 'serverSide');\n }\n };\n /**\n * Updates the `cacheBlockSize` when requesting data from the server if `suppressServerSideInfiniteScroll` is not enabled.\n *\n * Note this purges all the cached data and reloads all the rows of the grid.\n * */\n GridApi.prototype.setCacheBlockSize = function (blockSize) {\n if (this.serverSideRowModel) {\n this.gridOptionsService.set('cacheBlockSize', blockSize);\n this.serverSideRowModel.resetRootStore();\n }\n else {\n this.logMissingRowModel('setCacheBlockSize', 'serverSide');\n }\n };\n /** Set new datasource for Infinite Row Model. */\n GridApi.prototype.setDatasource = function (datasource) {\n if (this.gridOptionsService.isRowModelType('infinite')) {\n this.rowModel.setDatasource(datasource);\n }\n else {\n this.logMissingRowModel('setDatasource', 'infinite');\n }\n };\n /** Set new datasource for Viewport Row Model. */\n GridApi.prototype.setViewportDatasource = function (viewportDatasource) {\n if (this.gridOptionsService.isRowModelType('viewport')) {\n // this is bad coding, because it's using an interface that's exposed in the enterprise.\n // really we should create an interface in the core for viewportDatasource and let\n // the enterprise implement it, rather than casting to 'any' here\n this.rowModel.setViewportDatasource(viewportDatasource);\n }\n else {\n this.logMissingRowModel('setViewportDatasource', 'viewport');\n }\n };\n /** Set the row data. */\n GridApi.prototype.setRowData = function (rowData) {\n // immutable service is part of the CSRM module, if missing, no CSRM\n var missingImmutableService = this.immutableService == null;\n if (missingImmutableService) {\n this.logMissingRowModel('setRowData', 'clientSide');\n return;\n }\n // if no keys provided provided for rows, then we can tread the operation as Immutable\n if (this.immutableService.isActive()) {\n this.immutableService.setRowData(rowData);\n }\n else {\n this.selectionService.reset();\n this.clientSideRowModel.setRowData(rowData);\n }\n };\n /** Set the top pinned rows. Call with no rows / undefined to clear top pinned rows. */\n GridApi.prototype.setPinnedTopRowData = function (rows) {\n this.pinnedRowModel.setPinnedTopRowData(rows);\n };\n /** Set the bottom pinned rows. Call with no rows / undefined to clear bottom pinned rows. */\n GridApi.prototype.setPinnedBottomRowData = function (rows) {\n this.pinnedRowModel.setPinnedBottomRowData(rows);\n };\n /** Gets the number of top pinned rows. */\n GridApi.prototype.getPinnedTopRowCount = function () {\n return this.pinnedRowModel.getPinnedTopRowCount();\n };\n /** Gets the number of bottom pinned rows. */\n GridApi.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedRowModel.getPinnedBottomRowCount();\n };\n /** Gets the top pinned row with the specified index. */\n GridApi.prototype.getPinnedTopRow = function (index) {\n return this.pinnedRowModel.getPinnedTopRow(index);\n };\n /** Gets the top pinned row with the specified index. */\n GridApi.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedRowModel.getPinnedBottomRow(index);\n };\n /**\n * Call to set new column definitions. The grid will redraw all the column headers, and then redraw all of the rows.\n */\n GridApi.prototype.setColumnDefs = function (colDefs, source) {\n if (source === void 0) { source = \"api\"; }\n this.columnModel.setColumnDefs(colDefs, source);\n // Keep gridOptions.columnDefs in sync\n this.gridOptionsService.set('columnDefs', colDefs, true, { source: source });\n };\n /** Call to set new auto group column definition. The grid will recreate any auto-group columns if present. */\n GridApi.prototype.setAutoGroupColumnDef = function (colDef, source) {\n if (source === void 0) { source = \"api\"; }\n this.gridOptionsService.set('autoGroupColumnDef', colDef, true, { source: source });\n };\n /** Call to set new Default Column Definition. */\n GridApi.prototype.setDefaultColDef = function (colDef, source) {\n if (source === void 0) { source = \"api\"; }\n this.gridOptionsService.set('defaultColDef', colDef, true, { source: source });\n };\n /** Call to set new Column Types. */\n GridApi.prototype.setColumnTypes = function (columnTypes, source) {\n if (source === void 0) { source = \"api\"; }\n this.gridOptionsService.set('columnTypes', columnTypes, true, { source: source });\n };\n GridApi.prototype.expireValueCache = function () {\n this.valueCache.expire();\n };\n /**\n * Returns an object with two properties:\n * - `top`: The top pixel position of the current scroll in the grid\n * - `bottom`: The bottom pixel position of the current scroll in the grid\n */\n GridApi.prototype.getVerticalPixelRange = function () {\n return this.gridBodyCtrl.getScrollFeature().getVScrollPosition();\n };\n /**\n * Returns an object with two properties:\n * - `left`: The left pixel position of the current scroll in the grid\n * - `right`: The right pixel position of the current scroll in the grid\n */\n GridApi.prototype.getHorizontalPixelRange = function () {\n return this.gridBodyCtrl.getScrollFeature().getHScrollPosition();\n };\n /** If `true`, the horizontal scrollbar will always be present, even if not required. Otherwise, it will only be displayed when necessary. */\n GridApi.prototype.setAlwaysShowHorizontalScroll = function (show) {\n this.gridOptionsService.set('alwaysShowHorizontalScroll', show);\n };\n /** If `true`, the vertical scrollbar will always be present, even if not required. Otherwise it will only be displayed when necessary. */\n GridApi.prototype.setAlwaysShowVerticalScroll = function (show) {\n this.gridOptionsService.set('alwaysShowVerticalScroll', show);\n };\n /** Performs change detection on all cells, refreshing cells where required. */\n GridApi.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n this.rowRenderer.refreshCells(params);\n };\n /** Flash rows, columns or individual cells. */\n GridApi.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n this.rowRenderer.flashCells(params);\n };\n /** Remove row(s) from the DOM and recreate them again from scratch. */\n GridApi.prototype.redrawRows = function (params) {\n if (params === void 0) { params = {}; }\n var rowNodes = params ? params.rowNodes : undefined;\n this.rowRenderer.redrawRows(rowNodes);\n };\n GridApi.prototype.setFunctionsReadOnly = function (readOnly) {\n this.gridOptionsService.set('functionsReadOnly', readOnly);\n };\n /** Redraws the header. Useful if a column name changes, or something else that changes how the column header is displayed. */\n GridApi.prototype.refreshHeader = function () {\n this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (c) { return c.refresh(); });\n };\n /** Returns `true` if any filter is set. This includes quick filter, advanced filter or external filter. */\n GridApi.prototype.isAnyFilterPresent = function () {\n return this.filterManager.isAnyFilterPresent();\n };\n /** Returns `true` if any column filter is set, otherwise `false`. */\n GridApi.prototype.isColumnFilterPresent = function () {\n return this.filterManager.isColumnFilterPresent() || this.filterManager.isAggregateFilterPresent();\n };\n /** Returns `true` if the Quick Filter is set, otherwise `false`. */\n GridApi.prototype.isQuickFilterPresent = function () {\n return this.filterManager.isQuickFilterPresent();\n };\n /**\n * Returns the row model inside the table.\n * From here you can see the original rows, rows after filter has been applied,\n * rows after aggregation has been applied, and the final set of 'to be displayed' rows.\n */\n GridApi.prototype.getModel = function () {\n return this.rowModel;\n };\n /** Expand or collapse a specific row node, optionally expanding/collapsing all of its parent nodes. */\n GridApi.prototype.setRowNodeExpanded = function (rowNode, expanded, expandParents) {\n if (rowNode) {\n // expand all parents recursively, except root node.\n if (expandParents && rowNode.parent && rowNode.parent.level !== -1) {\n this.setRowNodeExpanded(rowNode.parent, expanded, expandParents);\n }\n rowNode.setExpanded(expanded);\n }\n };\n /**\n * Informs the grid that row group expanded state has changed and it needs to rerender the group nodes.\n * Typically called after updating the row node expanded state explicitly, i.e `rowNode.expanded = false`,\n * across multiple groups and you want to update the grid view in a single rerender instead of on every group change.\n */\n GridApi.prototype.onGroupExpandedOrCollapsed = function () {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('onGroupExpandedOrCollapsed', 'clientSide');\n return;\n }\n // we don't really want the user calling this if only one rowNode was expanded, instead they should be\n // calling rowNode.setExpanded(boolean) - this way we do a 'keepRenderedRows=false' so that the whole\n // grid gets refreshed again - otherwise the row with the rowNodes that were changed won't get updated,\n // and thus the expand icon in the group cell won't get 'opened' or 'closed'.\n this.clientSideRowModel.refreshModel({ step: ClientSideRowModelSteps.MAP });\n };\n /**\n * Refresh the Client-Side Row Model, executing the grouping, filtering and sorting again.\n * Optionally provide the step you wish the refresh to apply from. Defaults to `everything`.\n */\n GridApi.prototype.refreshClientSideRowModel = function (step) {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('refreshClientSideRowModel', 'clientSide');\n return;\n }\n this.clientSideRowModel.refreshModel(step);\n };\n /** Returns `true` when there are no more animation frames left to process. */\n GridApi.prototype.isAnimationFrameQueueEmpty = function () {\n return this.animationFrameService.isQueueEmpty();\n };\n GridApi.prototype.flushAllAnimationFrames = function () {\n this.animationFrameService.flushAllFrames();\n };\n /**\n * Returns the row node with the given ID.\n * The row node ID is the one you provide from the callback `getRowId(params)`,\n * otherwise the ID is a number (cast as string) auto-generated by the grid when\n * the row data is set.\n */\n GridApi.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n /**\n * Gets the sizes that various UI elements will be rendered at with the current theme.\n * If you override the row or header height using `gridOptions`, the override value you provided will be returned.\n */\n GridApi.prototype.getSizesForCurrentTheme = function () {\n return {\n rowHeight: this.gridOptionsService.getRowHeightAsNumber(),\n headerHeight: this.columnModel.getHeaderHeight()\n };\n };\n /** Expand all groups. */\n GridApi.prototype.expandAll = function () {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.expandOrCollapseAll(true);\n }\n else if (this.serverSideRowModel) {\n this.serverSideRowModel.expandAll(true);\n }\n else {\n this.logMissingRowModel('expandAll', 'clientSide', 'serverSide');\n }\n };\n /** Collapse all groups. */\n GridApi.prototype.collapseAll = function () {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.expandOrCollapseAll(false);\n }\n else if (this.serverSideRowModel) {\n this.serverSideRowModel.expandAll(false);\n }\n else {\n this.logMissingRowModel('expandAll', 'clientSide', 'serverSide');\n }\n };\n /**\n * Registers a callback to a virtual row.\n * A virtual row is a row that is visually rendered on the screen (rows that are not visible because of the scroll position are not rendered).\n * Unlike normal events, you do not need to unregister rendered row listeners.\n * When the rendered row is removed from the grid, all associated rendered row listeners will also be removed.\n * listen for this event if your `cellRenderer` needs to do cleanup when the row no longer exists.\n */\n GridApi.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);\n };\n /** Get the current Quick Filter text from the grid, or `undefined` if none is set. */\n GridApi.prototype.getQuickFilter = function () {\n return this.gridOptionsService.get('quickFilterText');\n };\n /** Pass a Quick Filter text into the grid for filtering. */\n GridApi.prototype.setQuickFilter = function (newFilter) {\n this.gridOptionsService.set('quickFilterText', newFilter);\n };\n /**\n * Updates the `excludeHiddenColumnsFromQuickFilter` grid option.\n * Set to `true` to exclude hidden columns from being checked by the Quick Filter (or `false` to include them).\n * This can give a significant performance improvement when there are a large number of hidden columns,\n * and you are only interested in filtering on what's visible.\n */\n GridApi.prototype.setExcludeHiddenColumnsFromQuickFilter = function (value) {\n this.gridOptionsService.set('excludeHiddenColumnsFromQuickFilter', value);\n };\n /**\n * Select all rows, regardless of filtering and rows that are not visible due to grouping being enabled and their groups not expanded.\n * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAll'`\n */\n GridApi.prototype.selectAll = function (source) {\n if (source === void 0) { source = 'apiSelectAll'; }\n this.selectionService.selectAllRowNodes({ source: source });\n };\n /**\n * Clear all row selections, regardless of filtering.\n * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAll'`\n */\n GridApi.prototype.deselectAll = function (source) {\n if (source === void 0) { source = 'apiSelectAll'; }\n this.selectionService.deselectAllRowNodes({ source: source });\n };\n /**\n * Select all filtered rows.\n * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAllFiltered'`\n */\n GridApi.prototype.selectAllFiltered = function (source) {\n if (source === void 0) { source = 'apiSelectAllFiltered'; }\n this.selectionService.selectAllRowNodes({ source: source, justFiltered: true });\n };\n /**\n * Clear all filtered selections.\n * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAllFiltered'`\n */\n GridApi.prototype.deselectAllFiltered = function (source) {\n if (source === void 0) { source = 'apiSelectAllFiltered'; }\n this.selectionService.deselectAllRowNodes({ source: source, justFiltered: true });\n };\n /**\n * Returns an object containing rules matching the selected rows in the SSRM.\n *\n * If `groupSelectsChildren=false` the returned object will be flat, and will conform to IServerSideSelectionState.\n * If `groupSelectsChildren=true` the retuned object will be hierarchical, and will conform to IServerSideGroupSelectionState.\n */\n GridApi.prototype.getServerSideSelectionState = function () {\n if (missing(this.serverSideRowModel)) {\n this.logMissingRowModel('getServerSideSelectionState', 'serverSide');\n return null;\n }\n return this.selectionService.getServerSideSelectionState();\n };\n /**\n * Set the rules matching the selected rows in the SSRM.\n *\n * If `groupSelectsChildren=false` the param will be flat, and should conform to IServerSideSelectionState.\n * If `groupSelectsChildren=true` the param will be hierarchical, and should conform to IServerSideGroupSelectionState.\n */\n GridApi.prototype.setServerSideSelectionState = function (state) {\n if (missing(this.serverSideRowModel)) {\n this.logMissingRowModel('setServerSideSelectionState', 'serverSide');\n return;\n }\n this.selectionService.setServerSideSelectionState(state);\n };\n /**\n * Select all rows on the current page.\n * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAllCurrentPage'`\n */\n GridApi.prototype.selectAllOnCurrentPage = function (source) {\n if (source === void 0) { source = 'apiSelectAllCurrentPage'; }\n this.selectionService.selectAllRowNodes({ source: source, justCurrentPage: true });\n };\n /**\n * Clear all filtered on the current page.\n * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAllCurrentPage'`\n */\n GridApi.prototype.deselectAllOnCurrentPage = function (source) {\n if (source === void 0) { source = 'apiSelectAllCurrentPage'; }\n this.selectionService.deselectAllRowNodes({ source: source, justCurrentPage: true });\n };\n /**\n * Sets columns to adjust in size to fit the grid horizontally.\n **/\n GridApi.prototype.sizeColumnsToFit = function (params) {\n this.gridBodyCtrl.sizeColumnsToFit(params);\n };\n /** Show the 'loading' overlay. */\n GridApi.prototype.showLoadingOverlay = function () {\n this.overlayWrapperComp.showLoadingOverlay();\n };\n /** Show the 'no rows' overlay. */\n GridApi.prototype.showNoRowsOverlay = function () {\n this.overlayWrapperComp.showNoRowsOverlay();\n };\n /** Hides the overlay if showing. */\n GridApi.prototype.hideOverlay = function () {\n this.overlayWrapperComp.hideOverlay();\n };\n /**\n * Returns an unsorted list of selected nodes.\n * Getting the underlying node (rather than the data) is useful when working with tree / aggregated data,\n * as the node can be traversed.\n */\n GridApi.prototype.getSelectedNodes = function () {\n return this.selectionService.getSelectedNodes();\n };\n /** Returns an unsorted list of selected rows (i.e. row data that you provided). */\n GridApi.prototype.getSelectedRows = function () {\n return this.selectionService.getSelectedRows();\n };\n /**\n * Returns a list of all selected nodes at 'best cost', a feature to be used with groups / trees.\n * If a group has all its children selected, then the group appears in the result, but not the children.\n * Designed for use with `'children'` as the group selection type, where groups don't actually appear in the selection normally.\n */\n GridApi.prototype.getBestCostNodeSelection = function () {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('getBestCostNodeSelection', 'clientSide');\n return;\n }\n return this.selectionService.getBestCostNodeSelection();\n };\n /** Retrieve rendered nodes. Due to virtualisation this will contain only the current visible rows and those in the buffer. */\n GridApi.prototype.getRenderedNodes = function () {\n return this.rowRenderer.getRenderedNodes();\n };\n /**\n * Ensures the column is visible by scrolling the table if needed.\n *\n * This will have no effect before the firstDataRendered event has fired.\n *\n * @param key - The column to ensure visible\n * @param position - Where the column will be positioned.\n * - `auto` - Scrolls the minimum amount to make sure the column is visible.\n * - `start` - Scrolls the column to the start of the viewport.\n * - `middle` - Scrolls the column to the middle of the viewport.\n * - `end` - Scrolls the column to the end of the viewport.\n */\n GridApi.prototype.ensureColumnVisible = function (key, position) {\n if (position === void 0) { position = 'auto'; }\n this.gridBodyCtrl.getScrollFeature().ensureColumnVisible(key, position);\n };\n /**\n * Vertically scrolls the grid until the provided row index is inside the visible viewport.\n * If a position is provided, the grid will attempt to scroll until the row is at the given position within the viewport.\n * This will have no effect before the firstDataRendered event has fired.\n */\n GridApi.prototype.ensureIndexVisible = function (index, position) {\n this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(index, position);\n };\n /**\n * Vertically scrolls the grid until the provided row (or a row matching the provided comparator) is inside the visible viewport.\n * If a position is provided, the grid will attempt to scroll until the row is at the given position within the viewport.\n * This will have no effect before the firstDataRendered event has fired.\n */\n GridApi.prototype.ensureNodeVisible = function (nodeSelector, position) {\n if (position === void 0) { position = null; }\n this.gridBodyCtrl.getScrollFeature().ensureNodeVisible(nodeSelector, position);\n };\n /**\n * Similar to `forEachNode`, except lists all the leaf nodes.\n * This effectively goes through all the data that you provided to the grid before the grid performed any grouping.\n * If using tree data, goes through all the nodes for the data you provided, including nodes that have children,\n * but excluding groups the grid created where gaps were missing in the hierarchy.\n */\n GridApi.prototype.forEachLeafNode = function (callback) {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('forEachLeafNode', 'clientSide');\n return;\n }\n this.clientSideRowModel.forEachLeafNode(callback);\n };\n /**\n * Iterates through each node (row) in the grid and calls the callback for each node.\n * This works similar to the `forEach` method on a JavaScript array.\n * This is called for every node, ignoring any filtering or sorting applied within the grid.\n * If using the Infinite Row Model, then this gets called for each page loaded in the page cache.\n */\n GridApi.prototype.forEachNode = function (callback, includeFooterNodes) {\n this.rowModel.forEachNode(callback, includeFooterNodes);\n };\n /** Similar to `forEachNode`, except skips any filtered out data. */\n GridApi.prototype.forEachNodeAfterFilter = function (callback) {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('forEachNodeAfterFilter', 'clientSide');\n return;\n }\n this.clientSideRowModel.forEachNodeAfterFilter(callback);\n };\n /** Similar to `forEachNodeAfterFilter`, except the callbacks are called in the order the rows are displayed in the grid. */\n GridApi.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('forEachNodeAfterFilterAndSort', 'clientSide');\n return;\n }\n this.clientSideRowModel.forEachNodeAfterFilterAndSort(callback);\n };\n /**\n * Returns the filter component instance for a column.\n * `key` can be a string field name or a ColDef object (matches on object reference, useful if field names are not unique).\n * If your filter is created asynchronously, `getFilterInstance` will return `null` so you will need to use the `callback` to access the filter instance instead.\n */\n GridApi.prototype.getFilterInstance = function (key, callback) {\n var res = this.getFilterInstanceImpl(key, function (instance) {\n if (!callback) {\n return;\n }\n var unwrapped = unwrapUserComp(instance);\n callback(unwrapped);\n });\n var unwrapped = unwrapUserComp(res);\n return unwrapped;\n };\n GridApi.prototype.getFilterInstanceImpl = function (key, callback) {\n var column = this.columnModel.getPrimaryColumn(key);\n if (!column) {\n return undefined;\n }\n var filterPromise = this.filterManager.getFilterComponent(column, 'NO_UI');\n var currentValue = filterPromise && filterPromise.resolveNow(null, function (filterComp) { return filterComp; });\n if (currentValue) {\n setTimeout(callback, 0, currentValue);\n }\n else if (filterPromise) {\n filterPromise.then(function (comp) {\n callback(comp);\n });\n }\n return currentValue;\n };\n /** Destroys a filter. Useful to force a particular filter to be created from scratch again. */\n GridApi.prototype.destroyFilter = function (key) {\n var column = this.columnModel.getPrimaryColumn(key);\n if (column) {\n return this.filterManager.destroyFilter(column, 'api');\n }\n };\n /** Gets the status panel instance corresponding to the supplied `id`. */\n GridApi.prototype.getStatusPanel = function (key) {\n if (!ModuleRegistry.assertRegistered(ModuleNames.StatusBarModule, 'api.getStatusPanel')) {\n return;\n }\n var comp = this.statusBarService.getStatusPanel(key);\n return unwrapUserComp(comp);\n };\n GridApi.prototype.getColumnDef = function (key) {\n var column = this.columnModel.getPrimaryColumn(key);\n if (column) {\n return column.getColDef();\n }\n return null;\n };\n /**\n * Returns the current column definitions.\n */\n GridApi.prototype.getColumnDefs = function () { return this.columnModel.getColumnDefs(); };\n /** Informs the grid that a filter has changed. This is typically called after a filter change through one of the filter APIs. */\n GridApi.prototype.onFilterChanged = function () {\n this.filterManager.onFilterChanged();\n };\n /**\n * Gets the grid to act as if the sort was changed.\n * Useful if you update some values and want to get the grid to reorder them according to the new values.\n */\n GridApi.prototype.onSortChanged = function () {\n this.sortController.onSortChanged('api');\n };\n /** Sets the state of all the advanced filters. Provide it with what you get from `getFilterModel()` to restore filter state. */\n GridApi.prototype.setFilterModel = function (model) {\n this.filterManager.setFilterModel(model);\n };\n /** Gets the current state of all the advanced filters. Used for saving filter state. */\n GridApi.prototype.getFilterModel = function () {\n return this.filterManager.getFilterModel();\n };\n /** Returns the focused cell (or the last focused cell if the grid lost focus). */\n GridApi.prototype.getFocusedCell = function () {\n return this.focusService.getFocusedCell();\n };\n /** Clears the focused cell. */\n GridApi.prototype.clearFocusedCell = function () {\n return this.focusService.clearFocusedCell();\n };\n /** Sets the focus to the specified cell. `rowPinned` can be either 'top', 'bottom' or null (for not pinned). */\n GridApi.prototype.setFocusedCell = function (rowIndex, colKey, rowPinned) {\n this.focusService.setFocusedCell({ rowIndex: rowIndex, column: colKey, rowPinned: rowPinned, forceBrowserFocus: true });\n };\n /** Sets the `suppressRowDrag` property. */\n GridApi.prototype.setSuppressRowDrag = function (value) {\n this.gridOptionsService.set('suppressRowDrag', value);\n };\n /** Sets the `suppressMoveWhenRowDragging` property. */\n GridApi.prototype.setSuppressMoveWhenRowDragging = function (value) {\n this.gridOptionsService.set('suppressMoveWhenRowDragging', value);\n };\n /** Sets the `suppressRowClickSelection` property. */\n GridApi.prototype.setSuppressRowClickSelection = function (value) {\n this.gridOptionsService.set('suppressRowClickSelection', value);\n };\n /** Adds a drop zone outside of the grid where rows can be dropped. */\n GridApi.prototype.addRowDropZone = function (params) {\n this.gridBodyCtrl.getRowDragFeature().addRowDropZone(params);\n };\n /** Removes an external drop zone added by `addRowDropZone`. */\n GridApi.prototype.removeRowDropZone = function (params) {\n var activeDropTarget = this.dragAndDropService.findExternalZone(params);\n if (activeDropTarget) {\n this.dragAndDropService.removeDropTarget(activeDropTarget);\n }\n };\n /** Returns the `RowDropZoneParams` to be used by another grid's `addRowDropZone` method. */\n GridApi.prototype.getRowDropZoneParams = function (events) {\n return this.gridBodyCtrl.getRowDragFeature().getRowDropZone(events);\n };\n /** Sets the height in pixels for the row containing the column label header. */\n GridApi.prototype.setHeaderHeight = function (headerHeight) {\n this.gridOptionsService.set('headerHeight', headerHeight);\n };\n /**\n * Switch between layout options: `normal`, `autoHeight`, `print`.\n * Defaults to `normal` if no domLayout provided.\n */\n GridApi.prototype.setDomLayout = function (domLayout) {\n if (!this.clientSideRowModel && domLayout === 'autoHeight' && !this.gridOptionsService.is('pagination')) {\n console.error(\"AG Grid: domLayout can only be set to 'autoHeight' when using the client side row model or when using pagination.\");\n return;\n }\n this.gridOptionsService.set('domLayout', domLayout);\n };\n /** Sets the `enableCellTextSelection` property. */\n GridApi.prototype.setEnableCellTextSelection = function (selectable) {\n this.gridBodyCtrl.setCellTextSelection(selectable);\n };\n /** Sets the preferred direction for the selection fill handle. */\n GridApi.prototype.setFillHandleDirection = function (direction) {\n this.gridOptionsService.set('fillHandleDirection', direction);\n };\n /** Sets the height in pixels for the rows containing header column groups. */\n GridApi.prototype.setGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsService.set('groupHeaderHeight', headerHeight);\n };\n /** Sets the height in pixels for the row containing the floating filters. */\n GridApi.prototype.setFloatingFiltersHeight = function (headerHeight) {\n this.gridOptionsService.set('floatingFiltersHeight', headerHeight);\n };\n /** Sets the height in pixels for the row containing the columns when in pivot mode. */\n GridApi.prototype.setPivotHeaderHeight = function (headerHeight) {\n this.gridOptionsService.set('pivotHeaderHeight', headerHeight);\n };\n /** Sets the height in pixels for the row containing header column groups when in pivot mode. */\n GridApi.prototype.setPivotGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsService.set('pivotGroupHeaderHeight', headerHeight);\n };\n GridApi.prototype.setPivotMode = function (pivotMode) {\n this.columnModel.setPivotMode(pivotMode);\n };\n GridApi.prototype.setAnimateRows = function (animateRows) {\n this.gridOptionsService.set('animateRows', animateRows);\n };\n GridApi.prototype.setIsExternalFilterPresent = function (isExternalFilterPresentFunc) {\n this.gridOptionsService.set('isExternalFilterPresent', isExternalFilterPresentFunc);\n };\n GridApi.prototype.setDoesExternalFilterPass = function (doesExternalFilterPassFunc) {\n this.gridOptionsService.set('doesExternalFilterPass', doesExternalFilterPassFunc);\n };\n GridApi.prototype.setNavigateToNextCell = function (navigateToNextCellFunc) {\n this.gridOptionsService.set('navigateToNextCell', navigateToNextCellFunc);\n };\n GridApi.prototype.setTabToNextCell = function (tabToNextCellFunc) {\n this.gridOptionsService.set('tabToNextCell', tabToNextCellFunc);\n };\n GridApi.prototype.setTabToNextHeader = function (tabToNextHeaderFunc) {\n this.gridOptionsService.set('tabToNextHeader', tabToNextHeaderFunc);\n };\n GridApi.prototype.setNavigateToNextHeader = function (navigateToNextHeaderFunc) {\n this.gridOptionsService.set('navigateToNextHeader', navigateToNextHeaderFunc);\n };\n GridApi.prototype.setRowGroupPanelShow = function (rowGroupPanelShow) {\n this.gridOptionsService.set('rowGroupPanelShow', rowGroupPanelShow);\n };\n /** @deprecated v27.2 - Use `setGetGroupRowAgg` instead. */\n GridApi.prototype.setGroupRowAggNodes = function (groupRowAggNodesFunc) {\n logDeprecation('27.2', 'setGroupRowAggNodes', 'setGetGroupRowAgg');\n this.gridOptionsService.set('groupRowAggNodes', groupRowAggNodesFunc);\n };\n GridApi.prototype.setGetGroupRowAgg = function (getGroupRowAggFunc) {\n this.gridOptionsService.set('getGroupRowAgg', getGroupRowAggFunc);\n };\n GridApi.prototype.setGetBusinessKeyForNode = function (getBusinessKeyForNodeFunc) {\n this.gridOptionsService.set('getBusinessKeyForNode', getBusinessKeyForNodeFunc);\n };\n GridApi.prototype.setGetChildCount = function (getChildCountFunc) {\n this.gridOptionsService.set('getChildCount', getChildCountFunc);\n };\n GridApi.prototype.setProcessRowPostCreate = function (processRowPostCreateFunc) {\n this.gridOptionsService.set('processRowPostCreate', processRowPostCreateFunc);\n };\n /** @deprecated v27.1 Use `setGetRowId` instead */\n GridApi.prototype.setGetRowNodeId = function (getRowNodeIdFunc) {\n logDeprecation('27.1', 'setGetRowNodeId', 'setGetRowId');\n this.gridOptionsService.set('getRowNodeId', getRowNodeIdFunc);\n };\n GridApi.prototype.setGetRowId = function (getRowIdFunc) {\n this.gridOptionsService.set('getRowId', getRowIdFunc);\n };\n GridApi.prototype.setGetRowClass = function (rowClassFunc) {\n this.gridOptionsService.set('getRowClass', rowClassFunc);\n };\n /** @deprecated v27.2 Use `setIsFullWidthRow` instead. */\n GridApi.prototype.setIsFullWidthCell = function (isFullWidthCellFunc) {\n logDeprecation('27.2', 'setIsFullWidthCell', 'setIsFullWidthRow');\n this.gridOptionsService.set('isFullWidthCell', isFullWidthCellFunc);\n };\n GridApi.prototype.setIsFullWidthRow = function (isFullWidthRowFunc) {\n this.gridOptionsService.set('isFullWidthRow', isFullWidthRowFunc);\n };\n GridApi.prototype.setIsRowSelectable = function (isRowSelectableFunc) {\n this.gridOptionsService.set('isRowSelectable', isRowSelectableFunc);\n };\n GridApi.prototype.setIsRowMaster = function (isRowMasterFunc) {\n this.gridOptionsService.set('isRowMaster', isRowMasterFunc);\n };\n /** @deprecated v27.2 Use `setPostSortRows` instead */\n GridApi.prototype.setPostSort = function (postSortFunc) {\n logDeprecation('27.2', 'setPostSort', 'setPostSortRows');\n this.gridOptionsService.set('postSort', postSortFunc);\n };\n GridApi.prototype.setPostSortRows = function (postSortRowsFunc) {\n this.gridOptionsService.set('postSortRows', postSortRowsFunc);\n };\n GridApi.prototype.setGetDocument = function (getDocumentFunc) {\n this.gridOptionsService.set('getDocument', getDocumentFunc);\n };\n GridApi.prototype.setGetContextMenuItems = function (getContextMenuItemsFunc) {\n this.gridOptionsService.set('getContextMenuItems', getContextMenuItemsFunc);\n };\n GridApi.prototype.setGetMainMenuItems = function (getMainMenuItemsFunc) {\n this.gridOptionsService.set('getMainMenuItems', getMainMenuItemsFunc);\n };\n GridApi.prototype.setProcessCellForClipboard = function (processCellForClipboardFunc) {\n this.gridOptionsService.set('processCellForClipboard', processCellForClipboardFunc);\n };\n GridApi.prototype.setSendToClipboard = function (sendToClipboardFunc) {\n this.gridOptionsService.set('sendToClipboard', sendToClipboardFunc);\n };\n GridApi.prototype.setProcessCellFromClipboard = function (processCellFromClipboardFunc) {\n this.gridOptionsService.set('processCellFromClipboard', processCellFromClipboardFunc);\n };\n /** @deprecated v28 use `setProcessPivotResultColDef` instead */\n GridApi.prototype.setProcessSecondaryColDef = function (processSecondaryColDefFunc) {\n logDeprecation('28.0', 'setProcessSecondaryColDef', 'setProcessPivotResultColDef');\n this.setProcessPivotResultColDef(processSecondaryColDefFunc);\n };\n /** @deprecated v28 use `setProcessPivotResultColGroupDef` instead */\n GridApi.prototype.setProcessSecondaryColGroupDef = function (processSecondaryColGroupDefFunc) {\n logDeprecation('28.0', 'setProcessSecondaryColGroupDef', 'setProcessPivotResultColGroupDef');\n this.setProcessPivotResultColGroupDef(processSecondaryColGroupDefFunc);\n };\n GridApi.prototype.setProcessPivotResultColDef = function (processPivotResultColDefFunc) {\n this.gridOptionsService.set('processPivotResultColDef', processPivotResultColDefFunc);\n };\n GridApi.prototype.setProcessPivotResultColGroupDef = function (processPivotResultColGroupDefFunc) {\n this.gridOptionsService.set('processPivotResultColGroupDef', processPivotResultColGroupDefFunc);\n };\n GridApi.prototype.setPostProcessPopup = function (postProcessPopupFunc) {\n this.gridOptionsService.set('postProcessPopup', postProcessPopupFunc);\n };\n /** @deprecated v27.2 - Use `setInitialGroupOrderComparator` instead */\n GridApi.prototype.setDefaultGroupOrderComparator = function (defaultGroupOrderComparatorFunc) {\n logDeprecation('27.2', 'setDefaultGroupOrderComparator', 'setInitialGroupOrderComparator');\n this.gridOptionsService.set('defaultGroupOrderComparator', defaultGroupOrderComparatorFunc);\n };\n GridApi.prototype.setInitialGroupOrderComparator = function (initialGroupOrderComparatorFunc) {\n this.gridOptionsService.set('initialGroupOrderComparator', initialGroupOrderComparatorFunc);\n };\n GridApi.prototype.setGetChartToolbarItems = function (getChartToolbarItemsFunc) {\n this.gridOptionsService.set('getChartToolbarItems', getChartToolbarItemsFunc);\n };\n GridApi.prototype.setPaginationNumberFormatter = function (paginationNumberFormatterFunc) {\n this.gridOptionsService.set('paginationNumberFormatter', paginationNumberFormatterFunc);\n };\n /** @deprecated v28 use setGetServerSideGroupLevelParams instead */\n GridApi.prototype.setGetServerSideStoreParams = function (getServerSideStoreParamsFunc) {\n logDeprecation('28.0', 'setGetServerSideStoreParams', 'setGetServerSideGroupLevelParams');\n this.setGetServerSideGroupLevelParams(getServerSideStoreParamsFunc);\n };\n GridApi.prototype.setGetServerSideGroupLevelParams = function (getServerSideGroupLevelParamsFunc) {\n this.gridOptionsService.set('getServerSideGroupLevelParams', getServerSideGroupLevelParamsFunc);\n };\n GridApi.prototype.setIsServerSideGroupOpenByDefault = function (isServerSideGroupOpenByDefaultFunc) {\n this.gridOptionsService.set('isServerSideGroupOpenByDefault', isServerSideGroupOpenByDefaultFunc);\n };\n GridApi.prototype.setIsApplyServerSideTransaction = function (isApplyServerSideTransactionFunc) {\n this.gridOptionsService.set('isApplyServerSideTransaction', isApplyServerSideTransactionFunc);\n };\n GridApi.prototype.setIsServerSideGroup = function (isServerSideGroupFunc) {\n this.gridOptionsService.set('isServerSideGroup', isServerSideGroupFunc);\n };\n GridApi.prototype.setGetServerSideGroupKey = function (getServerSideGroupKeyFunc) {\n this.gridOptionsService.set('getServerSideGroupKey', getServerSideGroupKeyFunc);\n };\n GridApi.prototype.setGetRowStyle = function (rowStyleFunc) {\n this.gridOptionsService.set('getRowStyle', rowStyleFunc);\n };\n GridApi.prototype.setGetRowHeight = function (rowHeightFunc) {\n this.gridOptionsService.set('getRowHeight', rowHeightFunc);\n };\n GridApi.prototype.assertSideBarLoaded = function (apiMethod) {\n return ModuleRegistry.assertRegistered(ModuleNames.SideBarModule, 'api.' + apiMethod);\n };\n /** Returns `true` if the side bar is visible. */\n GridApi.prototype.isSideBarVisible = function () {\n return this.assertSideBarLoaded('isSideBarVisible') && this.sideBarComp.isDisplayed();\n };\n /** Show/hide the entire side bar, including any visible panel and the tab buttons. */\n GridApi.prototype.setSideBarVisible = function (show) {\n if (this.assertSideBarLoaded('setSideBarVisible')) {\n this.sideBarComp.setDisplayed(show);\n }\n };\n /** Sets the side bar position relative to the grid. Possible values are `'left'` or `'right'`. */\n GridApi.prototype.setSideBarPosition = function (position) {\n if (this.assertSideBarLoaded('setSideBarPosition')) {\n this.sideBarComp.setSideBarPosition(position);\n }\n };\n /** Opens a particular tool panel. Provide the ID of the tool panel to open. */\n GridApi.prototype.openToolPanel = function (key) {\n if (this.assertSideBarLoaded('openToolPanel')) {\n this.sideBarComp.openToolPanel(key, 'api');\n }\n };\n /** Closes the currently open tool panel (if any). */\n GridApi.prototype.closeToolPanel = function () {\n if (this.assertSideBarLoaded('closeToolPanel')) {\n this.sideBarComp.close('api');\n }\n };\n /** Returns the ID of the currently shown tool panel if any, otherwise `null`. */\n GridApi.prototype.getOpenedToolPanel = function () {\n if (this.assertSideBarLoaded('getOpenedToolPanel')) {\n return this.sideBarComp.openedItem();\n }\n return null;\n };\n /** Force refresh all tool panels by calling their `refresh` method. */\n GridApi.prototype.refreshToolPanel = function () {\n if (this.assertSideBarLoaded('refreshToolPanel')) {\n this.sideBarComp.refresh();\n }\n };\n /** Returns `true` if the tool panel is showing, otherwise `false`. */\n GridApi.prototype.isToolPanelShowing = function () {\n return this.assertSideBarLoaded('isToolPanelShowing') && this.sideBarComp.isToolPanelShowing();\n };\n /** Gets the tool panel instance corresponding to the supplied `id`. */\n GridApi.prototype.getToolPanelInstance = function (id) {\n if (this.assertSideBarLoaded('getToolPanelInstance')) {\n var comp = this.sideBarComp.getToolPanelInstance(id);\n return unwrapUserComp(comp);\n }\n };\n /** Returns the current side bar configuration. If a shortcut was used, returns the detailed long form. */\n GridApi.prototype.getSideBar = function () {\n if (this.assertSideBarLoaded('getSideBar')) {\n return this.sideBarComp.getDef();\n }\n return undefined;\n };\n /** Resets the side bar to the provided configuration. The parameter is the same as the sideBar grid property. The side bar is re-created from scratch with the new config. */\n GridApi.prototype.setSideBar = function (def) {\n this.gridOptionsService.set('sideBar', def);\n };\n GridApi.prototype.setSuppressClipboardPaste = function (value) {\n this.gridOptionsService.set('suppressClipboardPaste', value);\n };\n /** Tells the grid to recalculate the row heights. */\n GridApi.prototype.resetRowHeights = function () {\n if (exists(this.clientSideRowModel)) {\n if (this.columnModel.isAutoRowHeightActive()) {\n console.warn('AG Grid: calling gridApi.resetRowHeights() makes no sense when using Auto Row Height.');\n return;\n }\n this.clientSideRowModel.resetRowHeights();\n }\n };\n GridApi.prototype.setGroupRemoveSingleChildren = function (value) {\n this.gridOptionsService.set('groupRemoveSingleChildren', value);\n };\n GridApi.prototype.setGroupRemoveLowestSingleChildren = function (value) {\n this.gridOptionsService.set('groupRemoveLowestSingleChildren', value);\n };\n GridApi.prototype.setGroupDisplayType = function (value) {\n this.gridOptionsService.set('groupDisplayType', value);\n };\n GridApi.prototype.setRowClass = function (className) {\n this.gridOptionsService.set('rowClass', className);\n };\n /** Sets the `deltaSort` property */\n GridApi.prototype.setDeltaSort = function (enable) {\n this.gridOptionsService.set('deltaSort', enable);\n };\n /**\n * Sets the `rowCount` and `maxRowFound` properties.\n * The second parameter, `maxRowFound`, is optional and if left out, only `rowCount` is set.\n * Set `rowCount` to adjust the height of the vertical scroll.\n * Set `maxRowFound` to enable / disable searching for more rows.\n * Use this method if you add or remove rows into the dataset and need to reset the number of rows or instruct the grid that the entire row count is no longer known.\n */\n GridApi.prototype.setRowCount = function (rowCount, maxRowFound) {\n if (this.serverSideRowModel) {\n if (this.columnModel.isRowGroupEmpty()) {\n this.serverSideRowModel.setRowCount(rowCount, maxRowFound);\n return;\n }\n console.error('AG Grid: setRowCount cannot be used while using row grouping.');\n return;\n }\n if (this.infiniteRowModel) {\n this.infiniteRowModel.setRowCount(rowCount, maxRowFound);\n return;\n }\n this.logMissingRowModel('setRowCount', 'infinite', 'serverSide');\n };\n /** Tells the grid a row height has changed. To be used after calling `rowNode.setRowHeight(newHeight)`. */\n GridApi.prototype.onRowHeightChanged = function () {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.onRowHeightChanged();\n }\n else if (this.serverSideRowModel) {\n this.serverSideRowModel.onRowHeightChanged();\n }\n };\n /**\n * Gets the value for a column for a particular `rowNode` (row).\n * This is useful if you want the raw value of a cell e.g. if implementing your own CSV export.\n */\n GridApi.prototype.getValue = function (colKey, rowNode) {\n var column = this.columnModel.getPrimaryColumn(colKey);\n if (missing(column)) {\n column = this.columnModel.getGridColumn(colKey);\n }\n if (missing(column)) {\n return null;\n }\n return this.valueService.getValue(column, rowNode);\n };\n /** Add an event listener for the specified `eventType`. Works similar to `addEventListener` for a browser DOM element. */\n GridApi.prototype.addEventListener = function (eventType, listener) {\n var async = this.gridOptionsService.useAsyncEvents();\n this.eventService.addEventListener(eventType, listener, async);\n };\n /** Add an event listener for all event types coming from the grid. */\n GridApi.prototype.addGlobalListener = function (listener) {\n var async = this.gridOptionsService.useAsyncEvents();\n this.eventService.addGlobalListener(listener, async);\n };\n /** Remove an event listener. */\n GridApi.prototype.removeEventListener = function (eventType, listener) {\n var async = this.gridOptionsService.useAsyncEvents();\n this.eventService.removeEventListener(eventType, listener, async);\n };\n /** Remove a global event listener. */\n GridApi.prototype.removeGlobalListener = function (listener) {\n var async = this.gridOptionsService.useAsyncEvents();\n this.eventService.removeGlobalListener(listener, async);\n };\n GridApi.prototype.dispatchEvent = function (event) {\n this.eventService.dispatchEvent(event);\n };\n /** Will destroy the grid and release resources. If you are using a framework you do not need to call this, as the grid links in with the framework lifecycle. However if you are using Web Components or native JavaScript, you do need to call this, to avoid a memory leak in your application. */\n GridApi.prototype.destroy = function () {\n // this is needed as GridAPI is a bean, and GridAPI.destroy() is called as part\n // of context.destroy(). so we need to stop the infinite loop.\n if (this.destroyCalled) {\n return;\n }\n this.destroyCalled = true;\n // destroy the UI first (as they use the services)\n var gridCtrl = this.ctrlsService.getGridCtrl();\n if (gridCtrl) {\n gridCtrl.destroyGridUi();\n }\n // destroy the services\n this.context.destroy();\n };\n GridApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {\n // some users were raising support issues with regards memory leaks. the problem was the customers applications\n // were keeping references to the API. trying to educate them all would be difficult, easier to just remove\n // all references in the API so at least the core grid can be garbage collected.\n //\n // wait about 100ms before clearing down the references, in case user has some cleanup to do,\n // and needs to deference the API first\n setTimeout(removeAllReferences.bind(window, this, 'Grid API'), 100);\n };\n GridApi.prototype.warnIfDestroyed = function (methodName) {\n if (this.destroyCalled) {\n console.warn(\"AG Grid: Grid API method \" + methodName + \" was called on a grid that was destroyed.\");\n }\n return this.destroyCalled;\n };\n /** Reset the Quick Filter cache text on every rowNode. */\n GridApi.prototype.resetQuickFilter = function () {\n if (this.warnIfDestroyed('resetQuickFilter')) {\n return;\n }\n this.filterManager.resetQuickFilterCache();\n };\n /** Returns the list of selected cell ranges. */\n GridApi.prototype.getCellRanges = function () {\n if (this.rangeService) {\n return this.rangeService.getCellRanges();\n }\n ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.getCellRanges');\n return null;\n };\n /** Adds the provided cell range to the selected ranges. */\n GridApi.prototype.addCellRange = function (params) {\n if (this.rangeService) {\n this.rangeService.addCellRange(params);\n return;\n }\n ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.addCellRange');\n };\n /** Clears the selected ranges. */\n GridApi.prototype.clearRangeSelection = function () {\n if (this.rangeService) {\n this.rangeService.removeAllCellRanges();\n }\n ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'gridApi.clearRangeSelection');\n };\n /** Reverts the last cell edit. */\n GridApi.prototype.undoCellEditing = function () {\n this.undoRedoService.undo('api');\n };\n /** Re-applies the most recently undone cell edit. */\n GridApi.prototype.redoCellEditing = function () {\n this.undoRedoService.redo('api');\n };\n /** Returns current number of available cell edit undo operations. */\n GridApi.prototype.getCurrentUndoSize = function () {\n return this.undoRedoService.getCurrentUndoStackSize();\n };\n /** Returns current number of available cell edit redo operations. */\n GridApi.prototype.getCurrentRedoSize = function () {\n return this.undoRedoService.getCurrentRedoStackSize();\n };\n /** Returns a list of models with information about the charts that are currently rendered from the grid. */\n GridApi.prototype.getChartModels = function () {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartModels')) {\n return this.chartService.getChartModels();\n }\n };\n /** Returns the `ChartRef` using the supplied `chartId`. */\n GridApi.prototype.getChartRef = function (chartId) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartRef')) {\n return this.chartService.getChartRef(chartId);\n }\n };\n /** Returns a base64-encoded image data URL for the referenced chartId. */\n GridApi.prototype.getChartImageDataURL = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartImageDataURL')) {\n return this.chartService.getChartImageDataURL(params);\n }\n };\n /** Starts a browser-based image download for the referenced chartId. */\n GridApi.prototype.downloadChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.downloadChart')) {\n return this.chartService.downloadChart(params);\n }\n };\n /** Open the Chart Tool Panel. */\n GridApi.prototype.openChartToolPanel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.openChartToolPanel')) {\n return this.chartService.openChartToolPanel(params);\n }\n };\n /** Close the Chart Tool Panel. */\n GridApi.prototype.closeChartToolPanel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.closeChartToolPanel')) {\n return this.chartService.closeChartToolPanel(params.chartId);\n }\n };\n /** Used to programmatically create charts from a range. */\n GridApi.prototype.createRangeChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createRangeChart')) {\n return this.chartService.createRangeChart(params);\n }\n };\n /** Used to programmatically create cross filter charts from a range. */\n GridApi.prototype.createCrossFilterChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createCrossFilterChart')) {\n return this.chartService.createCrossFilterChart(params);\n }\n };\n /** Restores a chart using the `ChartModel` that was previously obtained from `getChartModels()`. */\n GridApi.prototype.restoreChart = function (chartModel, chartContainer) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.restoreChart')) {\n return this.chartService.restoreChart(chartModel, chartContainer);\n }\n };\n /** Used to programmatically create pivot charts from a grid. */\n GridApi.prototype.createPivotChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createPivotChart')) {\n return this.chartService.createPivotChart(params);\n }\n };\n /** Copies data to clipboard by following the same rules as pressing Ctrl+C. */\n GridApi.prototype.copyToClipboard = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'api.copyToClipboard')) {\n this.clipboardService.copyToClipboard(params);\n }\n };\n /** Cuts data to clipboard by following the same rules as pressing Ctrl+X. */\n GridApi.prototype.cutToClipboard = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'api.cutToClipboard')) {\n this.clipboardService.cutToClipboard(params);\n }\n };\n /** Copies the selected rows to the clipboard. */\n GridApi.prototype.copySelectedRowsToClipboard = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'api.copySelectedRowsToClipboard')) {\n this.clipboardService.copySelectedRowsToClipboard(params);\n }\n };\n /** Copies the selected ranges to the clipboard. */\n GridApi.prototype.copySelectedRangeToClipboard = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'api.copySelectedRangeToClipboard')) {\n this.clipboardService.copySelectedRangeToClipboard(params);\n }\n };\n /** Copies the selected range down, similar to `Ctrl + D` in Excel. */\n GridApi.prototype.copySelectedRangeDown = function () {\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'api.copySelectedRangeDown')) {\n this.clipboardService.copyRangeDown();\n }\n };\n /** Shows the column menu after and positions it relative to the provided button element. Use in conjunction with your own header template. */\n GridApi.prototype.showColumnMenuAfterButtonClick = function (colKey, buttonElement) {\n // use grid column so works with pivot mode\n var column = this.columnModel.getGridColumn(colKey);\n this.menuFactory.showMenuAfterButtonClick(column, buttonElement, 'columnMenu');\n };\n /** Shows the column menu after and positions it relative to the mouse event. Use in conjunction with your own header template. */\n GridApi.prototype.showColumnMenuAfterMouseClick = function (colKey, mouseEvent) {\n // use grid column so works with pivot mode\n var column = this.columnModel.getGridColumn(colKey);\n if (!column) {\n column = this.columnModel.getPrimaryColumn(colKey);\n }\n if (!column) {\n console.error(\"AG Grid: column '\" + colKey + \"' not found\");\n return;\n }\n this.menuFactory.showMenuAfterMouseEvent(column, mouseEvent);\n };\n /** Hides any visible context menu or column menu. */\n GridApi.prototype.hidePopupMenu = function () {\n // hide the context menu if in enterprise\n if (this.contextMenuFactory) {\n this.contextMenuFactory.hideActiveMenu();\n }\n // and hide the column menu always\n this.menuFactory.hideActiveMenu();\n };\n /** DOM element to use as the popup parent for grid popups (context menu, column menu etc). */\n GridApi.prototype.setPopupParent = function (ePopupParent) {\n this.gridOptionsService.set('popupParent', ePopupParent);\n };\n /** Navigates the grid focus to the next cell, as if tabbing. */\n GridApi.prototype.tabToNextCell = function (event) {\n return this.navigationService.tabToNextCell(false, event);\n };\n /** Navigates the grid focus to the previous cell, as if shift-tabbing. */\n GridApi.prototype.tabToPreviousCell = function (event) {\n return this.navigationService.tabToNextCell(true, event);\n };\n /** Returns the list of active cell renderer instances. */\n GridApi.prototype.getCellRendererInstances = function (params) {\n if (params === void 0) { params = {}; }\n var res = this.rowRenderer.getCellRendererInstances(params);\n var unwrapped = res.map(unwrapUserComp);\n return unwrapped;\n };\n /** Returns the list of active cell editor instances. Optionally provide parameters to restrict to certain columns / row nodes. */\n GridApi.prototype.getCellEditorInstances = function (params) {\n if (params === void 0) { params = {}; }\n var res = this.rowRenderer.getCellEditorInstances(params);\n var unwrapped = res.map(unwrapUserComp);\n return unwrapped;\n };\n /** If the grid is editing, returns back details of the editing cell(s). */\n GridApi.prototype.getEditingCells = function () {\n return this.rowRenderer.getEditingCells();\n };\n /** If a cell is editing, it stops the editing. Pass `true` if you want to cancel the editing (i.e. don't accept changes). */\n GridApi.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.rowRenderer.stopEditing(cancel);\n };\n /** Start editing the provided cell. If another cell is editing, the editing will be stopped in that other cell. */\n GridApi.prototype.startEditingCell = function (params) {\n var column = this.columnModel.getGridColumn(params.colKey);\n if (!column) {\n console.warn(\"AG Grid: no column found for \" + params.colKey);\n return;\n }\n var cellPosition = {\n rowIndex: params.rowIndex,\n rowPinned: params.rowPinned || null,\n column: column\n };\n var notPinned = params.rowPinned == null;\n if (notPinned) {\n this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(params.rowIndex);\n }\n var cell = this.navigationService.getCellByPosition(cellPosition);\n if (!cell) {\n return;\n }\n cell.startRowOrCellEdit(params.key, params.charPress);\n };\n /** Add an aggregation function with the specified key. */\n GridApi.prototype.addAggFunc = function (key, aggFunc) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFunc(key, aggFunc);\n }\n };\n /** Add aggregations function with the specified keys. */\n GridApi.prototype.addAggFuncs = function (aggFuncs) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFuncs(aggFuncs);\n }\n };\n /** Clears all aggregation functions (including those provided by the grid). */\n GridApi.prototype.clearAggFuncs = function () {\n if (this.aggFuncService) {\n this.aggFuncService.clear();\n }\n };\n /** Apply transactions to the server side row model. */\n GridApi.prototype.applyServerSideTransaction = function (transaction) {\n if (!this.serverSideTransactionManager) {\n this.logMissingRowModel('applyServerSideTransaction', 'serverSide');\n return;\n }\n return this.serverSideTransactionManager.applyTransaction(transaction);\n };\n /** Batch apply transactions to the server side row model. */\n GridApi.prototype.applyServerSideTransactionAsync = function (transaction, callback) {\n if (!this.serverSideTransactionManager) {\n this.logMissingRowModel('applyServerSideTransactionAsync', 'serverSide');\n return;\n }\n return this.serverSideTransactionManager.applyTransactionAsync(transaction, callback);\n };\n /** Gets all failed server side loads to retry. */\n GridApi.prototype.retryServerSideLoads = function () {\n if (!this.serverSideRowModel) {\n this.logMissingRowModel('retryServerSideLoads', 'serverSide');\n return;\n }\n this.serverSideRowModel.retryLoads();\n };\n GridApi.prototype.flushServerSideAsyncTransactions = function () {\n if (!this.serverSideTransactionManager) {\n this.logMissingRowModel('flushServerSideAsyncTransactions', 'serverSide');\n return;\n }\n return this.serverSideTransactionManager.flushAsyncTransactions();\n };\n /** Update row data. Pass a transaction object with lists for `add`, `remove` and `update`. */\n GridApi.prototype.applyTransaction = function (rowDataTransaction) {\n if (!this.clientSideRowModel) {\n this.logMissingRowModel('applyTransaction', 'clientSide');\n return;\n }\n var res = this.clientSideRowModel.updateRowData(rowDataTransaction);\n // do change detection for all present cells\n if (!this.gridOptionsService.is('suppressChangeDetection')) {\n this.rowRenderer.refreshCells();\n }\n return res;\n };\n /** Same as `applyTransaction` except executes asynchronously for efficiency. */\n GridApi.prototype.applyTransactionAsync = function (rowDataTransaction, callback) {\n if (!this.clientSideRowModel) {\n this.logMissingRowModel('applyTransactionAsync', 'clientSide');\n return;\n }\n this.clientSideRowModel.batchUpdateRowData(rowDataTransaction, callback);\n };\n /** Executes any remaining asynchronous grid transactions, if any are waiting to be executed. */\n GridApi.prototype.flushAsyncTransactions = function () {\n if (!this.clientSideRowModel) {\n this.logMissingRowModel('flushAsyncTransactions', 'clientSide');\n return;\n }\n this.clientSideRowModel.flushAsyncTransactions();\n };\n GridApi.prototype.setSuppressModelUpdateAfterUpdateTransaction = function (value) {\n this.gridOptionsService.set('suppressModelUpdateAfterUpdateTransaction', value);\n };\n /**\n * Marks all the currently loaded blocks in the cache for reload.\n * If you have 10 blocks in the cache, all 10 will be marked for reload.\n * The old data will continue to be displayed until the new data is loaded.\n */\n GridApi.prototype.refreshInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.refreshCache();\n }\n else {\n this.logMissingRowModel('refreshInfiniteCache', 'infinite');\n }\n };\n /**\n * Purges the cache.\n * The grid is then told to refresh. Only the blocks required to display the current data on screen are fetched (typically no more than 2).\n * The grid will display nothing while the new blocks are loaded.\n * Use this to immediately remove the old data from the user.\n */\n GridApi.prototype.purgeInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.purgeCache();\n }\n else {\n this.logMissingRowModel('purgeInfiniteCache', 'infinite');\n }\n };\n /**\n * Refresh a server-side store level.\n * If you pass no parameters, then the top level store is refreshed.\n * To refresh a child level, pass in the string of keys to get to the desired level.\n * Once the store refresh is complete, the storeRefreshed event is fired.\n */\n GridApi.prototype.refreshServerSide = function (params) {\n if (!this.serverSideRowModel) {\n this.logMissingRowModel('refreshServerSide', 'serverSide');\n return;\n }\n this.serverSideRowModel.refreshStore(params);\n };\n /** @deprecated v28 use `refreshServerSide` instead */\n GridApi.prototype.refreshServerSideStore = function (params) {\n logDeprecation('28.0', 'refreshServerSideStore', 'refreshServerSide');\n return this.refreshServerSide(params);\n };\n /** @deprecated v28 use `getServerSideGroupLevelState` instead */\n GridApi.prototype.getServerSideStoreState = function () {\n logDeprecation('28.0', 'getServerSideStoreState', 'getServerSideGroupLevelState');\n return this.getServerSideGroupLevelState();\n };\n /** Returns info on all server side group levels. */\n GridApi.prototype.getServerSideGroupLevelState = function () {\n if (!this.serverSideRowModel) {\n this.logMissingRowModel('getServerSideGroupLevelState', 'serverSide');\n return [];\n }\n return this.serverSideRowModel.getStoreState();\n };\n /** The row count defines how many rows the grid allows scrolling to. */\n GridApi.prototype.getInfiniteRowCount = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.getRowCount();\n }\n else {\n this.logMissingRowModel('getInfiniteRowCount', 'infinite');\n }\n };\n /** Returns `true` if grid allows for scrolling past the last row to load more rows, thus providing infinite scroll. */\n GridApi.prototype.isLastRowIndexKnown = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.isLastRowIndexKnown();\n }\n else {\n this.logMissingRowModel('isLastRowIndexKnown', 'infinite');\n }\n };\n /**\n * Returns an object representing the state of the cache. This is useful for debugging and understanding how the cache is working.\n */\n GridApi.prototype.getCacheBlockState = function () {\n return this.rowNodeBlockLoader.getBlockState();\n };\n /** Get the index of the first displayed row due to scrolling (includes invisible rendered rows in the buffer). */\n GridApi.prototype.getFirstDisplayedRow = function () {\n return this.rowRenderer.getFirstVirtualRenderedRow();\n };\n /** Get the index of the last displayed row due to scrolling (includes invisible rendered rows in the buffer). */\n GridApi.prototype.getLastDisplayedRow = function () {\n return this.rowRenderer.getLastVirtualRenderedRow();\n };\n /** Returns the displayed `RowNode` at the given `index`. */\n GridApi.prototype.getDisplayedRowAtIndex = function (index) {\n return this.rowModel.getRow(index);\n };\n /** Returns the total number of displayed rows. */\n GridApi.prototype.getDisplayedRowCount = function () {\n return this.rowModel.getRowCount();\n };\n /**\n * Set whether the grid paginates the data or not.\n * - `true` to enable pagination\n * - `false` to disable pagination\n */\n GridApi.prototype.setPagination = function (value) {\n if (!this.clientSideRowModel && this.gridOptionsService.get('domLayout') === 'autoHeight' && !value) {\n console.error(\"AG Grid: Pagination cannot be disabled when using domLayout set to 'autoHeight' unless using the client-side row model.\");\n return;\n }\n this.gridOptionsService.set('pagination', value);\n };\n /**\n * Returns `true` when the last page is known.\n * This will always be `true` if you are using the Client-Side Row Model for pagination.\n * Returns `false` when the last page is not known; this only happens when using Infinite Row Model.\n */\n GridApi.prototype.paginationIsLastPageFound = function () {\n return this.paginationProxy.isLastPageFound();\n };\n /** Returns how many rows are being shown per page. */\n GridApi.prototype.paginationGetPageSize = function () {\n return this.paginationProxy.getPageSize();\n };\n /** Sets the `paginationPageSize`, then re-paginates the grid so the changes are applied immediately. */\n GridApi.prototype.paginationSetPageSize = function (size) {\n this.gridOptionsService.set('paginationPageSize', size);\n };\n /** Returns the 0-based index of the page which is showing. */\n GridApi.prototype.paginationGetCurrentPage = function () {\n return this.paginationProxy.getCurrentPage();\n };\n /** Returns the total number of pages. Returns `null` if `paginationIsLastPageFound() === false`. */\n GridApi.prototype.paginationGetTotalPages = function () {\n return this.paginationProxy.getTotalPages();\n };\n /** The total number of rows. Returns `null` if `paginationIsLastPageFound() === false`. */\n GridApi.prototype.paginationGetRowCount = function () {\n return this.paginationProxy.getMasterRowCount();\n };\n /** Navigates to the next page. */\n GridApi.prototype.paginationGoToNextPage = function () {\n this.paginationProxy.goToNextPage();\n };\n /** Navigates to the previous page. */\n GridApi.prototype.paginationGoToPreviousPage = function () {\n this.paginationProxy.goToPreviousPage();\n };\n /** Navigates to the first page. */\n GridApi.prototype.paginationGoToFirstPage = function () {\n this.paginationProxy.goToFirstPage();\n };\n /** Navigates to the last page. */\n GridApi.prototype.paginationGoToLastPage = function () {\n this.paginationProxy.goToLastPage();\n };\n /** Goes to the specified page. If the page requested doesn't exist, it will go to the last page. */\n GridApi.prototype.paginationGoToPage = function (page) {\n this.paginationProxy.goToPage(page);\n };\n __decorate$1T([\n Optional('immutableService')\n ], GridApi.prototype, \"immutableService\", void 0);\n __decorate$1T([\n Optional('csvCreator')\n ], GridApi.prototype, \"csvCreator\", void 0);\n __decorate$1T([\n Optional('excelCreator')\n ], GridApi.prototype, \"excelCreator\", void 0);\n __decorate$1T([\n Autowired('rowRenderer')\n ], GridApi.prototype, \"rowRenderer\", void 0);\n __decorate$1T([\n Autowired('navigationService')\n ], GridApi.prototype, \"navigationService\", void 0);\n __decorate$1T([\n Autowired('filterManager')\n ], GridApi.prototype, \"filterManager\", void 0);\n __decorate$1T([\n Autowired('columnModel')\n ], GridApi.prototype, \"columnModel\", void 0);\n __decorate$1T([\n Autowired('selectionService')\n ], GridApi.prototype, \"selectionService\", void 0);\n __decorate$1T([\n Autowired('gridOptionsService')\n ], GridApi.prototype, \"gridOptionsService\", void 0);\n __decorate$1T([\n Autowired('valueService')\n ], GridApi.prototype, \"valueService\", void 0);\n __decorate$1T([\n Autowired('alignedGridsService')\n ], GridApi.prototype, \"alignedGridsService\", void 0);\n __decorate$1T([\n Autowired('eventService')\n ], GridApi.prototype, \"eventService\", void 0);\n __decorate$1T([\n Autowired('pinnedRowModel')\n ], GridApi.prototype, \"pinnedRowModel\", void 0);\n __decorate$1T([\n Autowired('context')\n ], GridApi.prototype, \"context\", void 0);\n __decorate$1T([\n Autowired('rowModel')\n ], GridApi.prototype, \"rowModel\", void 0);\n __decorate$1T([\n Autowired('sortController')\n ], GridApi.prototype, \"sortController\", void 0);\n __decorate$1T([\n Autowired('paginationProxy')\n ], GridApi.prototype, \"paginationProxy\", void 0);\n __decorate$1T([\n Autowired('focusService')\n ], GridApi.prototype, \"focusService\", void 0);\n __decorate$1T([\n Autowired('dragAndDropService')\n ], GridApi.prototype, \"dragAndDropService\", void 0);\n __decorate$1T([\n Optional('rangeService')\n ], GridApi.prototype, \"rangeService\", void 0);\n __decorate$1T([\n Optional('clipboardService')\n ], GridApi.prototype, \"clipboardService\", void 0);\n __decorate$1T([\n Optional('aggFuncService')\n ], GridApi.prototype, \"aggFuncService\", void 0);\n __decorate$1T([\n Autowired('menuFactory')\n ], GridApi.prototype, \"menuFactory\", void 0);\n __decorate$1T([\n Optional('contextMenuFactory')\n ], GridApi.prototype, \"contextMenuFactory\", void 0);\n __decorate$1T([\n Autowired('valueCache')\n ], GridApi.prototype, \"valueCache\", void 0);\n __decorate$1T([\n Autowired('animationFrameService')\n ], GridApi.prototype, \"animationFrameService\", void 0);\n __decorate$1T([\n Optional('statusBarService')\n ], GridApi.prototype, \"statusBarService\", void 0);\n __decorate$1T([\n Optional('chartService')\n ], GridApi.prototype, \"chartService\", void 0);\n __decorate$1T([\n Optional('undoRedoService')\n ], GridApi.prototype, \"undoRedoService\", void 0);\n __decorate$1T([\n Optional('rowNodeBlockLoader')\n ], GridApi.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$1T([\n Optional('ssrmTransactionManager')\n ], GridApi.prototype, \"serverSideTransactionManager\", void 0);\n __decorate$1T([\n Autowired('ctrlsService')\n ], GridApi.prototype, \"ctrlsService\", void 0);\n __decorate$1T([\n PostConstruct\n ], GridApi.prototype, \"init\", null);\n __decorate$1T([\n PreDestroy\n ], GridApi.prototype, \"cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid\", null);\n GridApi = __decorate$1T([\n Bean('gridApi')\n ], GridApi);\n return GridApi;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$20 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$b = (undefined && undefined.__assign) || function () {\n __assign$b = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$b.apply(this, arguments);\n};\nvar __decorate$1S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterManager = /** @class */ (function (_super) {\n __extends$20(FilterManager, _super);\n function FilterManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.allColumnFilters = new Map();\n _this.activeAggregateFilters = [];\n _this.activeColumnFilters = [];\n _this.quickFilter = null;\n _this.quickFilterParts = null;\n // this is true when the grid is processing the filter change. this is used by the cell comps, so that they\n // don't flash when data changes due to filter changes. there is no need to flash when filter changes as the\n // user is in control, so doesn't make sense to show flashing changes. for example, go to main demo where\n // this feature is turned off (hack code to always return false for isSuppressFlashingCellsBecauseFiltering(), put in)\n // 100,000 rows and group by country. then do some filtering. all the cells flash, which is silly.\n _this.processingFilterChange = false;\n return _this;\n }\n FilterManager_1 = FilterManager;\n FilterManager.prototype.init = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, function () { return _this.onColumnsChanged(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, function () { return _this.refreshFiltersForAggregations(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, function () { return _this.refreshFiltersForAggregations(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function () {\n _this.refreshFiltersForAggregations();\n _this.resetQuickFilterCache();\n });\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () { return _this.resetQuickFilterCache(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.resetQuickFilterCache(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, function () {\n if (_this.gridOptionsService.is('excludeHiddenColumnsFromQuickFilter')) {\n _this.resetQuickFilterCache();\n }\n });\n this.addManagedPropertyListener('quickFilterText', function (e) { return _this.setQuickFilter(e.currentValue); });\n this.addManagedPropertyListener('excludeHiddenColumnsFromQuickFilter', function () { return _this.onExcludeHiddenColumnsFromQuickFilterChanged(); });\n this.quickFilter = this.parseQuickFilter(this.gridOptionsService.get('quickFilterText'));\n this.setQuickFilterParts();\n this.allowShowChangeAfterFilter = this.gridOptionsService.is('allowShowChangeAfterFilter');\n this.externalFilterPresent = this.isExternalFilterPresentCallback();\n };\n FilterManager.prototype.isExternalFilterPresentCallback = function () {\n var isFilterPresent = this.gridOptionsService.getCallback('isExternalFilterPresent');\n if (typeof isFilterPresent === 'function') {\n return isFilterPresent({});\n }\n return false;\n };\n FilterManager.prototype.doesExternalFilterPass = function (node) {\n var doesFilterPass = this.gridOptionsService.get('doesExternalFilterPass');\n if (typeof doesFilterPass === 'function') {\n return doesFilterPass(node);\n }\n return false;\n };\n FilterManager.prototype.setQuickFilterParts = function () {\n this.quickFilterParts = this.quickFilter ? this.quickFilter.split(' ') : null;\n };\n FilterManager.prototype.setFilterModel = function (model) {\n var _this = this;\n var allPromises = [];\n var previousModel = this.getFilterModel();\n if (model) {\n // mark the filters as we set them, so any active filters left over we stop\n var modelKeys_1 = convertToSet(Object.keys(model));\n this.allColumnFilters.forEach(function (filterWrapper, colId) {\n var newModel = model[colId];\n allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel));\n modelKeys_1.delete(colId);\n });\n // at this point, processedFields contains data for which we don't have a filter working yet\n modelKeys_1.forEach(function (colId) {\n var column = _this.columnModel.getPrimaryColumn(colId) || _this.columnModel.getGridColumn(colId);\n if (!column) {\n console.warn('AG Grid: setFilterModel() - no column found for colId: ' + colId);\n return;\n }\n if (!column.isFilterAllowed()) {\n console.warn('AG Grid: setFilterModel() - unable to fully apply model, filtering disabled for colId: ' + colId);\n return;\n }\n var filterWrapper = _this.getOrCreateFilterWrapper(column, 'NO_UI');\n if (!filterWrapper) {\n console.warn('AG-Grid: setFilterModel() - unable to fully apply model, unable to create filter for colId: ' + colId);\n return;\n }\n allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]));\n });\n }\n else {\n this.allColumnFilters.forEach(function (filterWrapper) {\n allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, null));\n });\n }\n AgPromise.all(allPromises).then(function () {\n var currentModel = _this.getFilterModel();\n var columns = [];\n _this.allColumnFilters.forEach(function (filterWrapper, colId) {\n var before = previousModel ? previousModel[colId] : null;\n var after = currentModel ? currentModel[colId] : null;\n if (!_.jsonEquals(before, after)) {\n columns.push(filterWrapper.column);\n }\n });\n if (columns.length > 0) {\n _this.onFilterChanged({ columns: columns });\n }\n });\n };\n FilterManager.prototype.setModelOnFilterWrapper = function (filterPromise, newModel) {\n return new AgPromise(function (resolve) {\n filterPromise.then(function (filter) {\n if (typeof filter.setModel !== 'function') {\n console.warn('AG Grid: filter missing setModel method, which is needed for setFilterModel');\n resolve();\n }\n (filter.setModel(newModel) || AgPromise.resolve()).then(function () { return resolve(); });\n });\n });\n };\n FilterManager.prototype.getFilterModel = function () {\n var result = {};\n this.allColumnFilters.forEach(function (filterWrapper, key) {\n // because user can provide filters, we provide useful error checking and messages\n var filterPromise = filterWrapper.filterPromise;\n var filter = filterPromise.resolveNow(null, function (promiseFilter) { return promiseFilter; });\n if (filter == null) {\n return null;\n }\n if (typeof filter.getModel !== 'function') {\n console.warn('AG Grid: filter API missing getModel method, which is needed for getFilterModel');\n return;\n }\n var model = filter.getModel();\n if (exists(model)) {\n result[key] = model;\n }\n });\n return result;\n };\n FilterManager.prototype.isColumnFilterPresent = function () {\n return this.activeColumnFilters.length > 0;\n };\n FilterManager.prototype.isAggregateFilterPresent = function () {\n return !!this.activeAggregateFilters.length;\n };\n FilterManager.prototype.isExternalFilterPresent = function () {\n return this.externalFilterPresent;\n };\n FilterManager.prototype.doAggregateFiltersPass = function (node, filterToSkip) {\n return this.doColumnFiltersPass(node, filterToSkip, true);\n };\n // called by:\n // 1) onFilterChanged()\n // 2) onNewRowsLoaded()\n FilterManager.prototype.updateActiveFilters = function () {\n var _this = this;\n this.activeColumnFilters.length = 0;\n this.activeAggregateFilters.length = 0;\n var isFilterActive = function (filter) {\n if (!filter) {\n return false;\n } // this never happens, including to avoid compile error\n if (!filter.isFilterActive) {\n console.warn('AG Grid: Filter is missing isFilterActive() method');\n return false;\n }\n return filter.isFilterActive();\n };\n var groupFilterEnabled = !!this.gridOptionsService.getGroupAggFiltering();\n var isAggFilter = function (column) {\n var isSecondary = !column.isPrimary();\n // the only filters that can appear on secondary columns are groupAgg filters\n if (isSecondary) {\n return true;\n }\n var isShowingPrimaryColumns = !_this.columnModel.isPivotActive();\n var isValueActive = column.isValueActive();\n // primary columns are only ever groupAgg filters if a) value is active and b) showing primary columns\n if (!isValueActive || !isShowingPrimaryColumns) {\n return false;\n }\n // from here on we know: isPrimary=true, isValueActive=true, isShowingPrimaryColumns=true\n if (_this.columnModel.isPivotMode()) {\n // primary column is pretending to be a pivot column, ie pivotMode=true, but we are\n // still showing primary columns\n return true;\n }\n // we are not pivoting, so we groupFilter when it's an agg column\n return groupFilterEnabled;\n };\n this.allColumnFilters.forEach(function (filterWrapper) {\n if (filterWrapper.filterPromise.resolveNow(false, isFilterActive)) {\n var filterComp = filterWrapper.filterPromise.resolveNow(null, function (filter) { return filter; });\n if (isAggFilter(filterWrapper.column)) {\n _this.activeAggregateFilters.push(filterComp);\n }\n else {\n _this.activeColumnFilters.push(filterComp);\n }\n }\n });\n };\n FilterManager.prototype.updateFilterFlagInColumns = function (source, additionalEventAttributes) {\n this.allColumnFilters.forEach(function (filterWrapper) {\n var isFilterActive = filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n filterWrapper.column.setFilterActive(isFilterActive, source, additionalEventAttributes);\n });\n };\n FilterManager.prototype.isAnyFilterPresent = function () {\n return this.isQuickFilterPresent() || this.isColumnFilterPresent() || this.isAggregateFilterPresent() || this.isExternalFilterPresent();\n };\n FilterManager.prototype.doColumnFiltersPass = function (node, filterToSkip, targetAggregates) {\n var data = node.data, aggData = node.aggData;\n var targetedFilters = targetAggregates ? this.activeAggregateFilters : this.activeColumnFilters;\n var targetedData = targetAggregates ? aggData : data;\n for (var i = 0; i < targetedFilters.length; i++) {\n var filter = targetedFilters[i];\n if (filter == null || filter === filterToSkip) {\n continue;\n }\n if (typeof filter.doesFilterPass !== 'function') {\n // because users can do custom filters, give nice error message\n throw new Error('Filter is missing method doesFilterPass');\n }\n if (!filter.doesFilterPass({ node: node, data: targetedData })) {\n return false;\n }\n }\n return true;\n };\n FilterManager.prototype.parseQuickFilter = function (newFilter) {\n if (!exists(newFilter)) {\n return null;\n }\n if (!this.gridOptionsService.isRowModelType('clientSide')) {\n console.warn('AG Grid - Quick filtering only works with the Client-Side Row Model');\n return null;\n }\n return newFilter.toUpperCase();\n };\n FilterManager.prototype.setQuickFilter = function (newFilter) {\n if (newFilter != null && typeof newFilter !== 'string') {\n console.warn(\"AG Grid - setQuickFilter() only supports string inputs, received: \" + typeof newFilter);\n return;\n }\n var parsedFilter = this.parseQuickFilter(newFilter);\n if (this.quickFilter !== parsedFilter) {\n this.quickFilter = parsedFilter;\n this.setQuickFilterParts();\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.resetQuickFilterCache = function () {\n this.rowModel.forEachNode(function (node) { return node.quickFilterAggregateText = null; });\n };\n FilterManager.prototype.onExcludeHiddenColumnsFromQuickFilterChanged = function () {\n this.columnModel.refreshQuickFilterColumns();\n this.resetQuickFilterCache();\n if (this.isQuickFilterPresent()) {\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.refreshFiltersForAggregations = function () {\n var isAggFiltering = this.gridOptionsService.getGroupAggFiltering();\n if (isAggFiltering) {\n this.onFilterChanged();\n }\n };\n // sometimes (especially in React) the filter can call onFilterChanged when we are in the middle\n // of a render cycle. this would be bad, so we wait for render cycle to complete when this happens.\n // this happens in react when we change React State in the grid (eg setting RowCtrl's in RowContainer)\n // which results in React State getting applied in the main application, triggering a useEffect() to\n // be kicked off adn then the application calling the grid's API. in AG-6554, the custom filter was\n // getting it's useEffect() triggered in this way.\n FilterManager.prototype.callOnFilterChangedOutsideRenderCycle = function (params) {\n var _this = this;\n if (params === void 0) { params = {}; }\n var action = function () { return _this.onFilterChanged(params); };\n if (this.rowRenderer.isRefreshInProgress()) {\n setTimeout(action, 0);\n }\n else {\n action();\n }\n };\n FilterManager.prototype.onFilterChanged = function (params) {\n if (params === void 0) { params = {}; }\n var filterInstance = params.filterInstance, additionalEventAttributes = params.additionalEventAttributes, columns = params.columns;\n this.updateDependantFilters();\n this.updateActiveFilters();\n this.updateFilterFlagInColumns('filterChanged', additionalEventAttributes);\n this.externalFilterPresent = this.isExternalFilterPresentCallback();\n this.allColumnFilters.forEach(function (filterWrapper) {\n if (!filterWrapper.filterPromise) {\n return;\n }\n filterWrapper.filterPromise.then(function (filter) {\n if (filter && filter !== filterInstance && filter.onAnyFilterChanged) {\n filter.onAnyFilterChanged();\n }\n });\n });\n var filterChangedEvent = {\n type: Events.EVENT_FILTER_CHANGED,\n columns: columns || [],\n };\n if (additionalEventAttributes) {\n mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n // because internal events are not async in ag-grid, when the dispatchEvent\n // method comes back, we know all listeners have finished executing.\n this.processingFilterChange = true;\n this.eventService.dispatchEvent(filterChangedEvent);\n this.processingFilterChange = false;\n };\n FilterManager.prototype.isSuppressFlashingCellsBecauseFiltering = function () {\n // if user has elected to always flash cell changes, then always return false, otherwise we suppress flashing\n // changes when filtering\n return !this.allowShowChangeAfterFilter && this.processingFilterChange;\n };\n FilterManager.prototype.isQuickFilterPresent = function () {\n return this.quickFilter !== null;\n };\n FilterManager.prototype.doesRowPassOtherFilters = function (filterToSkip, node) {\n return this.doesRowPassFilter({ rowNode: node, filterInstanceToSkip: filterToSkip });\n };\n FilterManager.prototype.doesRowPassQuickFilterNoCache = function (node, filterPart) {\n var _this = this;\n var columns = this.columnModel.getAllColumnsForQuickFilter();\n return columns.some(function (column) {\n var part = _this.getQuickFilterTextForColumn(column, node);\n return exists(part) && part.indexOf(filterPart) >= 0;\n });\n };\n FilterManager.prototype.doesRowPassQuickFilterCache = function (node, filterPart) {\n if (!node.quickFilterAggregateText) {\n this.aggregateRowForQuickFilter(node);\n }\n return node.quickFilterAggregateText.indexOf(filterPart) >= 0;\n };\n FilterManager.prototype.doesRowPassQuickFilter = function (node) {\n var _this = this;\n var usingCache = this.gridOptionsService.is('cacheQuickFilter');\n // each part must pass, if any fails, then the whole filter fails\n return this.quickFilterParts.every(function (part) {\n return usingCache ? _this.doesRowPassQuickFilterCache(node, part) : _this.doesRowPassQuickFilterNoCache(node, part);\n });\n };\n FilterManager.prototype.doesRowPassAggregateFilters = function (params) {\n if (this.isAggregateFilterPresent() && !this.doAggregateFiltersPass(params.rowNode, params.filterInstanceToSkip)) {\n return false;\n }\n // got this far, all filters pass\n return true;\n };\n FilterManager.prototype.doesRowPassFilter = function (params) {\n // the row must pass ALL of the filters, so if any of them fail,\n // we return true. that means if a row passes the quick filter,\n // but fails the column filter, it fails overall\n // first up, check quick filter\n if (this.isQuickFilterPresent() && !this.doesRowPassQuickFilter(params.rowNode)) {\n return false;\n }\n // secondly, give the client a chance to reject this row\n if (this.isExternalFilterPresent() && !this.doesExternalFilterPass(params.rowNode)) {\n return false;\n }\n // lastly, check column filter\n if (this.isColumnFilterPresent() && !this.doColumnFiltersPass(params.rowNode, params.filterInstanceToSkip)) {\n return false;\n }\n // got this far, all filters pass\n return true;\n };\n FilterManager.prototype.getQuickFilterTextForColumn = function (column, node) {\n var value = this.valueService.getValue(column, node, true);\n var colDef = column.getColDef();\n if (colDef.getQuickFilterText) {\n var params = {\n value: value,\n node: node,\n data: node.data,\n column: column,\n colDef: colDef,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n value = colDef.getQuickFilterText(params);\n }\n return exists(value) ? value.toString().toUpperCase() : null;\n };\n FilterManager.prototype.aggregateRowForQuickFilter = function (node) {\n var _this = this;\n var stringParts = [];\n var columns = this.columnModel.getAllColumnsForQuickFilter();\n columns.forEach(function (column) {\n var part = _this.getQuickFilterTextForColumn(column, node);\n if (exists(part)) {\n stringParts.push(part);\n }\n });\n node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);\n };\n FilterManager.prototype.onNewRowsLoaded = function (source) {\n this.allColumnFilters.forEach(function (filterWrapper) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.onNewRowsLoaded) {\n filter.onNewRowsLoaded();\n }\n });\n });\n this.updateFilterFlagInColumns(source, { afterDataChange: true });\n this.updateActiveFilters();\n };\n FilterManager.prototype.createValueGetter = function (column) {\n var _this = this;\n return function (_a) {\n var node = _a.node;\n return _this.valueService.getValue(column, node, true);\n };\n };\n FilterManager.prototype.getFilterComponent = function (column, source, createIfDoesNotExist) {\n var _a;\n if (createIfDoesNotExist === void 0) { createIfDoesNotExist = true; }\n if (createIfDoesNotExist) {\n return ((_a = this.getOrCreateFilterWrapper(column, source)) === null || _a === void 0 ? void 0 : _a.filterPromise) || null;\n }\n var filterWrapper = this.cachedFilter(column);\n return filterWrapper ? filterWrapper.filterPromise : null;\n };\n FilterManager.prototype.isFilterActive = function (column) {\n var filterWrapper = this.cachedFilter(column);\n return !!filterWrapper && filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n };\n FilterManager.prototype.getOrCreateFilterWrapper = function (column, source) {\n if (!column.isFilterAllowed()) {\n return null;\n }\n var filterWrapper = this.cachedFilter(column);\n if (!filterWrapper) {\n filterWrapper = this.createFilterWrapper(column, source);\n this.allColumnFilters.set(column.getColId(), filterWrapper);\n }\n else if (source !== 'NO_UI') {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n };\n FilterManager.prototype.cachedFilter = function (column) {\n return this.allColumnFilters.get(column.getColId());\n };\n FilterManager.prototype.createFilterInstance = function (column) {\n var _this = this;\n var defaultFilter = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule) ? 'agSetColumnFilter' : 'agTextColumnFilter';\n var colDef = column.getColDef();\n var filterInstance;\n var params = __assign$b(__assign$b({}, this.createFilterParams(column, colDef)), { filterModifiedCallback: function () {\n var event = {\n type: Events.EVENT_FILTER_MODIFIED,\n column: column,\n filterInstance: filterInstance\n };\n _this.eventService.dispatchEvent(event);\n }, filterChangedCallback: function (additionalEventAttributes) {\n var params = { filterInstance: filterInstance, additionalEventAttributes: additionalEventAttributes, columns: [column] };\n _this.callOnFilterChangedOutsideRenderCycle(params);\n }, doesRowPassOtherFilter: function (node) { return _this.doesRowPassOtherFilters(filterInstance, node); } });\n var compDetails = this.userComponentFactory.getFilterDetails(colDef, params, defaultFilter);\n if (!compDetails) {\n return null;\n }\n var componentPromise = compDetails.newAgStackInstance();\n if (componentPromise) {\n componentPromise.then(function (r) { return filterInstance = r; });\n }\n return componentPromise;\n };\n FilterManager.prototype.createFilterParams = function (column, colDef) {\n var params = {\n column: column,\n colDef: cloneObject(colDef),\n rowModel: this.rowModel,\n filterChangedCallback: function () { },\n filterModifiedCallback: function () { },\n valueGetter: this.createValueGetter(column),\n doesRowPassOtherFilter: function () { return true; },\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n };\n return params;\n };\n FilterManager.prototype.createFilterWrapper = function (column, source) {\n var filterWrapper = {\n column: column,\n filterPromise: null,\n compiledElement: null,\n guiPromise: AgPromise.resolve(null)\n };\n filterWrapper.filterPromise = this.createFilterInstance(column);\n if (filterWrapper.filterPromise) {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n };\n FilterManager.prototype.putIntoGui = function (filterWrapper, source) {\n var _this = this;\n var eFilterGui = document.createElement('div');\n eFilterGui.className = 'ag-filter';\n filterWrapper.guiPromise = new AgPromise(function (resolve) {\n filterWrapper.filterPromise.then(function (filter) {\n var guiFromFilter = filter.getGui();\n if (!exists(guiFromFilter)) {\n console.warn(\"AG Grid: getGui method from filter returned \" + guiFromFilter + \", it should be a DOM element or an HTML template string.\");\n }\n // for backwards compatibility with Angular 1 - we\n // used to allow providing back HTML from getGui().\n // once we move away from supporting Angular 1\n // directly, we can change this.\n if (typeof guiFromFilter === 'string') {\n guiFromFilter = loadTemplate(guiFromFilter);\n }\n eFilterGui.appendChild(guiFromFilter);\n resolve(eFilterGui);\n var event = {\n type: Events.EVENT_FILTER_OPENED,\n column: filterWrapper.column,\n source: source,\n eGui: eFilterGui\n };\n _this.eventService.dispatchEvent(event);\n });\n });\n };\n FilterManager.prototype.onColumnsChanged = function () {\n var _this = this;\n var columns = [];\n this.allColumnFilters.forEach(function (wrapper, colId) {\n var currentColumn;\n if (wrapper.column.isPrimary()) {\n currentColumn = _this.columnModel.getPrimaryColumn(colId);\n }\n else {\n currentColumn = _this.columnModel.getGridColumn(colId);\n }\n if (currentColumn) {\n return;\n }\n columns.push(wrapper.column);\n _this.disposeFilterWrapper(wrapper, 'columnChanged');\n });\n if (columns.length > 0) {\n this.onFilterChanged({ columns: columns });\n }\n else {\n // onFilterChanged does this already\n this.updateDependantFilters();\n }\n };\n FilterManager.prototype.updateDependantFilters = function () {\n var _this = this;\n // Group column filters can be dependant on underlying column filters, but don't normally get created until they're used for the first time.\n // Instead, create them by default when any filter changes.\n var groupColumns = this.columnModel.getGroupAutoColumns();\n groupColumns === null || groupColumns === void 0 ? void 0 : groupColumns.forEach(function (groupColumn) {\n if (groupColumn.getColDef().filter === 'agGroupColumnFilter') {\n _this.getOrCreateFilterWrapper(groupColumn, 'NO_UI');\n }\n });\n };\n // for group filters, can change dynamically whether they are allowed or not\n FilterManager.prototype.isFilterAllowed = function (column) {\n var _a, _b;\n var isFilterAllowed = column.isFilterAllowed();\n if (!isFilterAllowed) {\n return false;\n }\n var filterWrapper = this.allColumnFilters.get(column.getColId());\n return (_b = (_a = filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.resolveNow(true, \n // defer to filter component isFilterAllowed if it exists\n function (filter) {\n var _a, _b;\n return (typeof ((_a = filter) === null || _a === void 0 ? void 0 : _a.isFilterAllowed) === 'function')\n ? (_b = filter) === null || _b === void 0 ? void 0 : _b.isFilterAllowed() : true;\n })) !== null && _b !== void 0 ? _b : true;\n };\n FilterManager.prototype.getFloatingFilterCompDetails = function (column, showParentFilter) {\n var _this = this;\n var colDef = column.getColDef();\n var filterParams = this.createFilterParams(column, colDef);\n var finalFilterParams = this.userComponentFactory.mergeParamsWithApplicationProvidedParams(colDef, FilterComponent, filterParams);\n var defaultFloatingFilterType = this.userComponentFactory.getDefaultFloatingFilterType(colDef);\n if (defaultFloatingFilterType == null) {\n defaultFloatingFilterType = 'agReadOnlyFloatingFilter';\n }\n var parentFilterInstance = function (callback) {\n var filterComponent = _this.getFilterComponent(column, 'NO_UI');\n if (filterComponent == null) {\n return;\n }\n filterComponent.then(function (instance) {\n callback(unwrapUserComp(instance));\n });\n };\n var params = {\n column: column,\n filterParams: finalFilterParams,\n currentParentModel: function () { return _this.getCurrentFloatingFilterParentModel(column); },\n parentFilterInstance: parentFilterInstance,\n showParentFilter: showParentFilter,\n suppressFilterButton: false // This one might be overridden from the colDef\n };\n return this.userComponentFactory.getFloatingFilterCompDetails(colDef, params, defaultFloatingFilterType);\n };\n FilterManager.prototype.getCurrentFloatingFilterParentModel = function (column) {\n var filterComponent = this.getFilterComponent(column, 'NO_UI', false);\n return filterComponent ? filterComponent.resolveNow(null, function (filter) { return filter && filter.getModel(); }) : null;\n };\n // destroys the filter, so it no longer takes part\n /**\n * @param source if not calling this from the API, will need to add a new value\n */\n FilterManager.prototype.destroyFilter = function (column, source) {\n if (source === void 0) { source = 'api'; }\n var filterWrapper = this.allColumnFilters.get(column.getColId());\n if (filterWrapper) {\n this.disposeFilterWrapper(filterWrapper, source);\n this.onFilterChanged({ columns: [column] });\n }\n };\n FilterManager.prototype.disposeFilterWrapper = function (filterWrapper, source) {\n var _this = this;\n filterWrapper.filterPromise.then(function (filter) {\n (filter.setModel(null) || AgPromise.resolve()).then(function () {\n _this.getContext().destroyBean(filter);\n filterWrapper.column.setFilterActive(false, 'filterDestroyed');\n _this.allColumnFilters.delete(filterWrapper.column.getColId());\n var event = {\n type: Events.EVENT_FILTER_DESTROYED,\n source: source,\n column: filterWrapper.column,\n };\n _this.eventService.dispatchEvent(event);\n });\n });\n };\n FilterManager.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n this.allColumnFilters.forEach(function (filterWrapper) { return _this.disposeFilterWrapper(filterWrapper, 'gridDestroyed'); });\n };\n var FilterManager_1;\n FilterManager.QUICK_FILTER_SEPARATOR = '\\n';\n __decorate$1S([\n Autowired('valueService')\n ], FilterManager.prototype, \"valueService\", void 0);\n __decorate$1S([\n Autowired('columnModel')\n ], FilterManager.prototype, \"columnModel\", void 0);\n __decorate$1S([\n Autowired('rowModel')\n ], FilterManager.prototype, \"rowModel\", void 0);\n __decorate$1S([\n Autowired('userComponentFactory')\n ], FilterManager.prototype, \"userComponentFactory\", void 0);\n __decorate$1S([\n Autowired('rowRenderer')\n ], FilterManager.prototype, \"rowRenderer\", void 0);\n __decorate$1S([\n PostConstruct\n ], FilterManager.prototype, \"init\", null);\n FilterManager = FilterManager_1 = __decorate$1S([\n Bean('filterManager')\n ], FilterManager);\n return FilterManager;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1$ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AbstractHeaderCellComp = /** @class */ (function (_super) {\n __extends$1$(AbstractHeaderCellComp, _super);\n function AbstractHeaderCellComp(template, ctrl) {\n var _this = _super.call(this, template) || this;\n _this.ctrl = ctrl;\n return _this;\n }\n AbstractHeaderCellComp.prototype.getCtrl = function () {\n return this.ctrl;\n };\n return AbstractHeaderCellComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1_ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderFilterCellComp = /** @class */ (function (_super) {\n __extends$1_(HeaderFilterCellComp, _super);\n function HeaderFilterCellComp(ctrl) {\n return _super.call(this, HeaderFilterCellComp.TEMPLATE, ctrl) || this;\n }\n HeaderFilterCellComp.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n addOrRemoveBodyCssClass: function (cssClassName, on) { return _this.eFloatingFilterBody.classList.toggle(cssClassName, on); },\n setButtonWrapperDisplayed: function (displayed) { return setDisplayed(_this.eButtonWrapper, displayed); },\n setCompDetails: function (compDetails) { return _this.setCompDetails(compDetails); },\n getFloatingFilterComp: function () { return _this.compPromise; },\n setWidth: function (width) { return eGui.style.width = width; },\n setMenuIcon: function (eIcon) { return _this.eButtonShowMainFilter.appendChild(eIcon); }\n };\n this.ctrl.setComp(compProxy, eGui, this.eButtonShowMainFilter, this.eFloatingFilterBody);\n };\n HeaderFilterCellComp.prototype.setCompDetails = function (compDetails) {\n var _this = this;\n // because we are providing defaultFloatingFilterType, we know it will never be undefined;\n this.compPromise = compDetails.newAgStackInstance();\n this.compPromise.then(function (comp) { return _this.afterCompCreated(comp); });\n };\n HeaderFilterCellComp.prototype.afterCompCreated = function (comp) {\n var _this = this;\n if (!comp) {\n return;\n }\n this.addDestroyFunc(function () { return _this.context.destroyBean(comp); });\n if (!this.isAlive()) {\n return;\n }\n this.eFloatingFilterBody.appendChild(comp.getGui());\n if (comp.afterGuiAttached) {\n comp.afterGuiAttached();\n }\n };\n HeaderFilterCellComp.TEMPLATE = \"<div class=\\\"ag-header-cell ag-floating-filter\\\" role=\\\"gridcell\\\" tabindex=\\\"-1\\\">\\n <div ref=\\\"eFloatingFilterBody\\\" role=\\\"presentation\\\"></div>\\n <div class=\\\"ag-floating-filter-button ag-hidden\\\" ref=\\\"eButtonWrapper\\\" role=\\\"presentation\\\">\\n <button type=\\\"button\\\" aria-label=\\\"Open Filter Menu\\\" class=\\\"ag-floating-filter-button-button\\\" ref=\\\"eButtonShowMainFilter\\\" tabindex=\\\"-1\\\"></button>\\n </div>\\n </div>\";\n __decorate$1R([\n RefSelector('eFloatingFilterBody')\n ], HeaderFilterCellComp.prototype, \"eFloatingFilterBody\", void 0);\n __decorate$1R([\n RefSelector('eButtonWrapper')\n ], HeaderFilterCellComp.prototype, \"eButtonWrapper\", void 0);\n __decorate$1R([\n RefSelector('eButtonShowMainFilter')\n ], HeaderFilterCellComp.prototype, \"eButtonShowMainFilter\", void 0);\n __decorate$1R([\n PostConstruct\n ], HeaderFilterCellComp.prototype, \"postConstruct\", null);\n return HeaderFilterCellComp;\n}(AbstractHeaderCellComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1Z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LayoutCssClasses;\n(function (LayoutCssClasses) {\n LayoutCssClasses[\"AUTO_HEIGHT\"] = \"ag-layout-auto-height\";\n LayoutCssClasses[\"NORMAL\"] = \"ag-layout-normal\";\n LayoutCssClasses[\"PRINT\"] = \"ag-layout-print\";\n})(LayoutCssClasses || (LayoutCssClasses = {}));\nvar LayoutFeature = /** @class */ (function (_super) {\n __extends$1Z(LayoutFeature, _super);\n function LayoutFeature(view) {\n var _this = _super.call(this) || this;\n _this.view = view;\n return _this;\n }\n LayoutFeature.prototype.postConstruct = function () {\n this.addManagedPropertyListener('domLayout', this.updateLayoutClasses.bind(this));\n this.updateLayoutClasses();\n };\n LayoutFeature.prototype.updateLayoutClasses = function () {\n var domLayout = this.getDomLayout();\n var params = {\n autoHeight: domLayout === 'autoHeight',\n normal: domLayout === 'normal',\n print: domLayout === 'print'\n };\n var cssClass = params.autoHeight ? LayoutCssClasses.AUTO_HEIGHT :\n params.print ? LayoutCssClasses.PRINT : LayoutCssClasses.NORMAL;\n this.view.updateLayoutClasses(cssClass, params);\n };\n // returns either 'print', 'autoHeight' or 'normal' (normal is the default)\n LayoutFeature.prototype.getDomLayout = function () {\n var _a;\n var domLayout = (_a = this.gridOptionsService.get('domLayout')) !== null && _a !== void 0 ? _a : 'normal';\n var validLayouts = ['normal', 'print', 'autoHeight'];\n if (validLayouts.indexOf(domLayout) === -1) {\n doOnce(function () {\n return console.warn(\"AG Grid: \" + domLayout + \" is not valid for DOM Layout, valid values are 'normal', 'autoHeight', 'print'.\");\n }, 'warn about dom layout values');\n return 'normal';\n }\n return domLayout;\n };\n __decorate$1Q([\n PostConstruct\n ], LayoutFeature.prototype, \"postConstruct\", null);\n return LayoutFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1Y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$a = (undefined && undefined.__assign) || function () {\n __assign$a = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$a.apply(this, arguments);\n};\nvar __decorate$1P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridBodyScrollFeature = /** @class */ (function (_super) {\n __extends$1Y(GridBodyScrollFeature, _super);\n function GridBodyScrollFeature(eBodyViewport) {\n var _this = _super.call(this) || this;\n _this.scrollLeft = -1;\n _this.nextScrollTop = -1;\n _this.scrollTop = -1;\n _this.eBodyViewport = eBodyViewport;\n _this.resetLastHScrollDebounced = debounce(function () { return _this.eLastHScroll = null; }, 500);\n _this.resetLastVScrollDebounced = debounce(function () { return _this.eLastVScroll = null; }, 500);\n return _this;\n }\n GridBodyScrollFeature.prototype.postConstruct = function () {\n var _this = this;\n this.enableRtl = this.gridOptionsService.is('enableRtl');\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n this.ctrlsService.whenReady(function (p) {\n _this.centerRowContainerCtrl = p.centerRowContainerCtrl;\n _this.onDisplayedColumnsWidthChanged();\n _this.addScrollListener();\n });\n };\n GridBodyScrollFeature.prototype.addScrollListener = function () {\n var fakeHScroll = this.ctrlsService.getFakeHScrollComp();\n var fakeVScroll = this.ctrlsService.getFakeVScrollComp();\n this.addManagedListener(this.centerRowContainerCtrl.getViewportElement(), 'scroll', this.onHScroll.bind(this));\n this.addManagedListener(fakeHScroll.getViewport(), 'scroll', this.onFakeHScroll.bind(this));\n var isDebounce = this.gridOptionsService.is('debounceVerticalScrollbar');\n var onVScroll = isDebounce ?\n debounce(this.onVScroll.bind(this), 100) : this.onVScroll.bind(this);\n var onFakeVScroll = isDebounce ?\n debounce(this.onFakeVScroll.bind(this), 100) : this.onFakeVScroll.bind(this);\n this.addManagedListener(this.eBodyViewport, 'scroll', onVScroll);\n this.addManagedListener(fakeVScroll.getViewport(), 'scroll', onFakeVScroll);\n };\n GridBodyScrollFeature.prototype.onDisplayedColumnsWidthChanged = function () {\n if (this.enableRtl) {\n // because RTL is all backwards, a change in the width of the row\n // can cause a change in the scroll position, without a scroll event,\n // because the scroll position in RTL is a function that depends on\n // the width. to be convinced of this, take out this line, enable RTL,\n // scroll all the way to the left and then resize a column\n this.horizontallyScrollHeaderCenterAndFloatingCenter();\n }\n };\n GridBodyScrollFeature.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function (scrollLeft) {\n // when doing RTL, this method gets called once prematurely\n var notYetInitialised = this.centerRowContainerCtrl == null;\n if (notYetInitialised) {\n return;\n }\n if (scrollLeft === undefined) {\n scrollLeft = this.centerRowContainerCtrl.getCenterViewportScrollLeft();\n }\n var offset = this.enableRtl ? scrollLeft : -scrollLeft;\n var topCenterContainer = this.ctrlsService.getTopCenterRowContainerCtrl();\n var stickyTopCenterContainer = this.ctrlsService.getStickyTopCenterRowContainerCtrl();\n var bottomCenterContainer = this.ctrlsService.getBottomCenterRowContainerCtrl();\n var fakeHScroll = this.ctrlsService.getFakeHScrollComp();\n var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n centerHeaderContainer.setHorizontalScroll(-offset);\n bottomCenterContainer.setContainerTranslateX(offset);\n topCenterContainer.setContainerTranslateX(offset);\n stickyTopCenterContainer.setContainerTranslateX(offset);\n var centerViewport = this.centerRowContainerCtrl.getViewportElement();\n var isCenterViewportLastHorizontal = this.eLastHScroll === centerViewport;\n var partner = isCenterViewportLastHorizontal ?\n fakeHScroll.getViewport() :\n this.centerRowContainerCtrl.getViewportElement();\n setScrollLeft(partner, Math.abs(scrollLeft), this.enableRtl);\n };\n GridBodyScrollFeature.prototype.isControllingHScroll = function (eDiv) {\n if (!this.eLastHScroll) {\n this.eLastHScroll = eDiv;\n return true;\n }\n return eDiv === this.eLastHScroll;\n };\n GridBodyScrollFeature.prototype.isControllingVScroll = function (eDiv) {\n if (!this.eLastVScroll) {\n this.eLastVScroll = eDiv;\n return true;\n }\n return eDiv === this.eLastVScroll;\n };\n GridBodyScrollFeature.prototype.onFakeHScroll = function () {\n var fakeHScrollViewport = this.ctrlsService.getFakeHScrollComp().getViewport();\n if (!this.isControllingHScroll(fakeHScrollViewport)) {\n return;\n }\n this.onHScrollCommon(fakeHScrollViewport);\n };\n GridBodyScrollFeature.prototype.onHScroll = function () {\n var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();\n if (!this.isControllingHScroll(centerContainerViewport)) {\n return;\n }\n this.onHScrollCommon(centerContainerViewport);\n };\n GridBodyScrollFeature.prototype.onHScrollCommon = function (eSource) {\n var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();\n var scrollLeft = centerContainerViewport.scrollLeft;\n if (this.shouldBlockScrollUpdate('horizontal', scrollLeft, true)) {\n return;\n }\n // we do Math.round() rather than Math.floor(), to mirror how scroll values are applied.\n // eg if a scale is applied (ie user has zoomed the browser), then applying scroll=200\n // could result in 199.88, which then floor(199.88) = 199, however round(199.88) = 200.\n // initially Math.floor() was used, however this caused (almost) infinite loop with aligned grids,\n // as the scroll would move 1px at at time bouncing from one grid to the next (eg one grid would cause\n // scroll to 200px, the next to 199px, then the first back to 198px and so on).\n this.doHorizontalScroll(Math.round(getScrollLeft(eSource, this.enableRtl)));\n this.resetLastHScrollDebounced();\n };\n GridBodyScrollFeature.prototype.onFakeVScroll = function () {\n var fakeVScrollViewport = this.ctrlsService.getFakeVScrollComp().getViewport();\n if (!this.isControllingVScroll(fakeVScrollViewport)) {\n return;\n }\n this.onVScrollCommon(fakeVScrollViewport);\n };\n GridBodyScrollFeature.prototype.onVScroll = function () {\n if (!this.isControllingVScroll(this.eBodyViewport)) {\n return;\n }\n this.onVScrollCommon(this.eBodyViewport);\n };\n GridBodyScrollFeature.prototype.onVScrollCommon = function (eSource) {\n var scrollTop = eSource.scrollTop;\n if (this.shouldBlockScrollUpdate('vertical', scrollTop, true)) {\n return;\n }\n this.animationFrameService.setScrollTop(scrollTop);\n this.nextScrollTop = scrollTop;\n if (eSource === this.eBodyViewport) {\n var fakeVScrollViewport = this.ctrlsService.getFakeVScrollComp().getViewport();\n fakeVScrollViewport.scrollTop = scrollTop;\n }\n else {\n this.eBodyViewport.scrollTop = scrollTop;\n }\n // the `scrollGridIfNeeded` will recalculate the rows to be rendered by the grid\n // so it should only be called after `eBodyViewport` has been scrolled to the correct\n // position, otherwise the `first` and `last` row could be miscalculated.\n if (this.gridOptionsService.is('suppressAnimationFrame')) {\n this.scrollGridIfNeeded();\n }\n else {\n this.animationFrameService.schedule();\n }\n this.resetLastVScrollDebounced();\n };\n GridBodyScrollFeature.prototype.doHorizontalScroll = function (scrollLeft) {\n var fakeHScrollViewport = this.ctrlsService.getFakeHScrollComp().getViewport();\n var fakeScrollLeft = getScrollLeft(fakeHScrollViewport, this.enableRtl);\n if (this.scrollLeft === scrollLeft && scrollLeft === fakeScrollLeft) {\n return;\n }\n this.scrollLeft = scrollLeft;\n this.fireScrollEvent('horizontal');\n this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);\n this.onHorizontalViewportChanged();\n };\n GridBodyScrollFeature.prototype.fireScrollEvent = function (direction) {\n var _this = this;\n var bodyScrollEvent = {\n type: Events.EVENT_BODY_SCROLL,\n direction: direction,\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventService.dispatchEvent(bodyScrollEvent);\n window.clearTimeout(this.scrollTimer);\n this.scrollTimer = undefined;\n this.scrollTimer = window.setTimeout(function () {\n var bodyScrollEndEvent = __assign$a(__assign$a({}, bodyScrollEvent), { type: Events.EVENT_BODY_SCROLL_END });\n _this.eventService.dispatchEvent(bodyScrollEndEvent);\n }, 100);\n };\n GridBodyScrollFeature.prototype.shouldBlockScrollUpdate = function (direction, scrollTo, touchOnly) {\n // touch devices allow elastic scroll - which temporally scrolls the panel outside of the viewport\n // (eg user uses touch to go to the left of the grid, but drags past the left, the rows will actually\n // scroll past the left until the user releases the mouse). when this happens, we want ignore the scroll,\n // as otherwise it was causing the rows and header to flicker.\n if (touchOnly === void 0) { touchOnly = false; }\n // sometimes when scrolling, we got values that extended the maximum scroll allowed. we used to\n // ignore these scrolls. problem is the max scroll position could be skipped (eg the previous scroll event\n // could be 10px before the max position, and then current scroll event could be 20px after the max position).\n // if we just ignored the last event, we would be setting the scroll to 10px before the max position, when in\n // actual fact the user has exceeded the max scroll and thus scroll should be set to the max.\n if (touchOnly && !isIOSUserAgent()) {\n return false;\n }\n if (direction === 'vertical') {\n return this.shouldBlockVerticalScroll(scrollTo);\n }\n return this.shouldBlockHorizontalScroll(scrollTo);\n };\n GridBodyScrollFeature.prototype.shouldBlockVerticalScroll = function (scrollTo) {\n var clientHeight = getInnerHeight(this.eBodyViewport);\n var scrollHeight = this.eBodyViewport.scrollHeight;\n if (scrollTo < 0 || (scrollTo + clientHeight > scrollHeight)) {\n return true;\n }\n return false;\n };\n GridBodyScrollFeature.prototype.shouldBlockHorizontalScroll = function (scrollTo) {\n var clientWidth = this.centerRowContainerCtrl.getCenterWidth();\n var scrollWidth = this.centerRowContainerCtrl.getViewportElement().scrollWidth;\n if (this.enableRtl && isRtlNegativeScroll()) {\n if (scrollTo > 0) {\n return true;\n }\n }\n else if (scrollTo < 0) {\n return true;\n }\n if (Math.abs(scrollTo) + clientWidth > scrollWidth) {\n return true;\n }\n return false;\n };\n GridBodyScrollFeature.prototype.redrawRowsAfterScroll = function () {\n this.fireScrollEvent('vertical');\n };\n GridBodyScrollFeature.prototype.onHorizontalViewportChanged = function () {\n this.centerRowContainerCtrl.onHorizontalViewportChanged();\n };\n // this is to cater for AG-3274, where grid is removed from the dom and then inserted back in again.\n // (which happens with some implementations of tabbing). this can result in horizontal scroll getting\n // reset back to the left, however no scroll event is fired. so we need to get header to also scroll\n // back to the left to be kept in sync.\n // adding and removing the grid from the DOM both resets the scroll position and\n // triggers a resize event, so notify listeners if the scroll position has changed\n GridBodyScrollFeature.prototype.checkScrollLeft = function () {\n if (this.scrollLeft !== this.centerRowContainerCtrl.getCenterViewportScrollLeft()) {\n this.onHScrollCommon(this.centerRowContainerCtrl.getViewportElement());\n }\n };\n GridBodyScrollFeature.prototype.scrollGridIfNeeded = function () {\n var frameNeeded = this.scrollTop != this.nextScrollTop;\n if (frameNeeded) {\n this.scrollTop = this.nextScrollTop;\n this.redrawRowsAfterScroll();\n }\n return frameNeeded;\n };\n // called by scrollHorizontally method and alignedGridsService\n GridBodyScrollFeature.prototype.setHorizontalScrollPosition = function (hScrollPosition) {\n var minScrollLeft = 0;\n var maxScrollLeft = this.centerRowContainerCtrl.getViewportElement().scrollWidth - this.centerRowContainerCtrl.getCenterWidth();\n if (this.shouldBlockScrollUpdate('horizontal', hScrollPosition)) {\n if (this.enableRtl && isRtlNegativeScroll()) {\n hScrollPosition = hScrollPosition > 0 ? 0 : maxScrollLeft;\n }\n else {\n hScrollPosition = Math.min(Math.max(hScrollPosition, minScrollLeft), maxScrollLeft);\n }\n }\n setScrollLeft(this.centerRowContainerCtrl.getViewportElement(), Math.abs(hScrollPosition), this.enableRtl);\n // we need to manually do the event handling (rather than wait for the event)\n // for the alignedGridsService, as if we don't, the aligned grid service gets\n // notified async, and then it's 'consuming' flag doesn't get used right, and\n // we can end up with an infinite loop\n this.doHorizontalScroll(hScrollPosition);\n };\n GridBodyScrollFeature.prototype.setVerticalScrollPosition = function (vScrollPosition) {\n this.eBodyViewport.scrollTop = vScrollPosition;\n };\n GridBodyScrollFeature.prototype.getVScrollPosition = function () {\n var result = {\n top: this.eBodyViewport.scrollTop,\n bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight\n };\n return result;\n };\n GridBodyScrollFeature.prototype.getHScrollPosition = function () {\n return this.centerRowContainerCtrl.getHScrollPosition();\n };\n GridBodyScrollFeature.prototype.isHorizontalScrollShowing = function () {\n return this.centerRowContainerCtrl.isHorizontalScrollShowing();\n };\n // called by the headerRootComp and moveColumnController\n GridBodyScrollFeature.prototype.scrollHorizontally = function (pixels) {\n var oldScrollPosition = this.centerRowContainerCtrl.getViewportElement().scrollLeft;\n this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n return this.centerRowContainerCtrl.getViewportElement().scrollLeft - oldScrollPosition;\n };\n // gets called by rowRenderer when new data loaded, as it will want to scroll to the top\n GridBodyScrollFeature.prototype.scrollToTop = function () {\n this.eBodyViewport.scrollTop = 0;\n };\n // Valid values for position are bottom, middle and top\n GridBodyScrollFeature.prototype.ensureNodeVisible = function (comparator, position) {\n if (position === void 0) { position = null; }\n // look for the node index we want to display\n var rowCount = this.rowModel.getRowCount();\n var indexToSelect = -1;\n // go through all the nodes, find the one we want to show\n for (var i = 0; i < rowCount; i++) {\n var node = this.rowModel.getRow(i);\n if (typeof comparator === 'function') {\n // Have to assert type here, as type could be TData & Function\n var predicate = comparator;\n if (node && predicate(node)) {\n indexToSelect = i;\n break;\n }\n }\n else {\n // check object equality against node and data\n if (comparator === node || comparator === node.data) {\n indexToSelect = i;\n break;\n }\n }\n }\n if (indexToSelect >= 0) {\n this.ensureIndexVisible(indexToSelect, position);\n }\n };\n // Valid values for position are bottom, middle and top\n // position should be {'top','middle','bottom', or undefined/null}.\n // if undefined/null, then the grid will to the minimal amount of scrolling,\n // eg if grid needs to scroll up, it scrolls until row is on top,\n // if grid needs to scroll down, it scrolls until row is on bottom,\n // if row is already in view, grid does not scroll\n GridBodyScrollFeature.prototype.ensureIndexVisible = function (index, position) {\n // if for print or auto height, everything is always visible\n if (this.gridOptionsService.isDomLayout('print')) {\n return;\n }\n var rowCount = this.paginationProxy.getRowCount();\n if (typeof index !== 'number' || index < 0 || index >= rowCount) {\n console.warn('AG Grid: Invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n var isPaging = this.gridOptionsService.is('pagination');\n var paginationPanelEnabled = isPaging && !this.gridOptionsService.is('suppressPaginationPanel');\n if (!paginationPanelEnabled) {\n this.paginationProxy.goToPageWithIndex(index);\n }\n var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n var stickyTopHeight = gridBodyCtrl.getStickyTopHeight();\n var rowNode = this.paginationProxy.getRow(index);\n var rowGotShiftedDuringOperation;\n do {\n var startingRowTop = rowNode.rowTop;\n var startingRowHeight = rowNode.rowHeight;\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var rowTopPixel = rowNode.rowTop - paginationOffset;\n var rowBottomPixel = rowTopPixel + rowNode.rowHeight;\n var scrollPosition = this.getVScrollPosition();\n var heightOffset = this.heightScaler.getDivStretchOffset();\n var vScrollTop = scrollPosition.top + heightOffset;\n var vScrollBottom = scrollPosition.bottom + heightOffset;\n var viewportHeight = vScrollBottom - vScrollTop;\n // work out the pixels for top, middle and bottom up front,\n // make the if/else below easier to read\n var pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);\n var pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);\n // make sure if middle, the row is not outside the top of the grid\n var pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);\n var rowAboveViewport = (vScrollTop + stickyTopHeight) > rowTopPixel;\n var rowBelowViewport = vScrollBottom < rowBottomPixel;\n var newScrollPosition = null;\n if (position === 'top') {\n newScrollPosition = pxTop;\n }\n else if (position === 'bottom') {\n newScrollPosition = pxBottom;\n }\n else if (position === 'middle') {\n newScrollPosition = pxMiddle;\n }\n else if (rowAboveViewport) {\n // if row is before, scroll up with row at top\n newScrollPosition = pxTop - stickyTopHeight;\n }\n else if (rowBelowViewport) {\n // if row is after, scroll down with row at bottom\n newScrollPosition = pxBottom;\n }\n if (newScrollPosition !== null) {\n this.eBodyViewport.scrollTop = newScrollPosition;\n this.rowRenderer.redrawAfterScroll();\n }\n // the row can get shifted if during the rendering (during rowRenderer.redrawAfterScroll()),\n // the height of a row changes due to lazy calculation of row heights when using\n // colDef.autoHeight or gridOptions.getRowHeight.\n // if row was shifted, then the position we scrolled to is incorrect.\n rowGotShiftedDuringOperation = (startingRowTop !== rowNode.rowTop)\n || (startingRowHeight !== rowNode.rowHeight);\n } while (rowGotShiftedDuringOperation);\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n GridBodyScrollFeature.prototype.ensureColumnVisible = function (key, position) {\n if (position === void 0) { position = 'auto'; }\n var column = this.columnModel.getGridColumn(key);\n if (!column) {\n return;\n }\n // calling ensureColumnVisible on a pinned column doesn't make sense\n if (column.isPinned()) {\n return;\n }\n // defensive\n if (!this.columnModel.isColumnDisplayed(column)) {\n return;\n }\n var newHorizontalScroll = this.getPositionedHorizontalScroll(column, position);\n if (newHorizontalScroll !== null) {\n this.centerRowContainerCtrl.setCenterViewportScrollLeft(newHorizontalScroll);\n }\n // this will happen anyway, as the move will cause a 'scroll' event on the body, however\n // it is possible that the ensureColumnVisible method is called from within AG Grid and\n // the caller will need to have the columns rendered to continue, which will be before\n // the event has been worked on (which is the case for cell navigation).\n this.centerRowContainerCtrl.onHorizontalViewportChanged();\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n GridBodyScrollFeature.prototype.getPositionedHorizontalScroll = function (column, position) {\n var _a = this.isColumnOutsideViewport(column), columnBeforeStart = _a.columnBeforeStart, columnAfterEnd = _a.columnAfterEnd;\n var viewportTooSmallForColumn = this.centerRowContainerCtrl.getCenterWidth() < column.getActualWidth();\n var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();\n var isRtl = this.enableRtl;\n var alignColToStart = (isRtl ? columnBeforeStart : columnAfterEnd) || viewportTooSmallForColumn;\n var alignColToEnd = isRtl ? columnAfterEnd : columnBeforeStart;\n if (position !== 'auto') {\n alignColToStart = position === 'start';\n alignColToEnd = position === 'end';\n }\n var isMiddle = position === 'middle';\n if (alignColToStart || alignColToEnd || isMiddle) {\n var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colMiddle = _b.colMiddle, colRight = _b.colRight;\n if (isMiddle) {\n return colMiddle - viewportWidth / 2;\n }\n if (alignColToStart) {\n return isRtl ? colRight : colLeft;\n }\n return isRtl ? (colLeft - viewportWidth) : (colRight - viewportWidth);\n }\n return null;\n };\n GridBodyScrollFeature.prototype.isColumnOutsideViewport = function (column) {\n var _a = this.getViewportBounds(), viewportStart = _a.start, viewportEnd = _a.end;\n var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colRight = _b.colRight;\n var isRtl = this.enableRtl;\n var columnBeforeStart = isRtl ? (viewportStart > colRight) : (viewportEnd < colRight);\n var columnAfterEnd = isRtl ? (viewportEnd < colLeft) : (viewportStart > colLeft);\n return { columnBeforeStart: columnBeforeStart, columnAfterEnd: columnAfterEnd };\n };\n GridBodyScrollFeature.prototype.getColumnBounds = function (column) {\n var isRtl = this.enableRtl;\n var bodyWidth = this.columnModel.getBodyContainerWidth();\n var colWidth = column.getActualWidth();\n var colLeft = column.getLeft();\n var multiplier = isRtl ? -1 : 1;\n var colLeftPixel = isRtl ? (bodyWidth - colLeft) : colLeft;\n var colRightPixel = colLeftPixel + colWidth * multiplier;\n var colMidPixel = colLeftPixel + colWidth / 2 * multiplier;\n return { colLeft: colLeftPixel, colMiddle: colMidPixel, colRight: colRightPixel };\n };\n GridBodyScrollFeature.prototype.getViewportBounds = function () {\n var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();\n var scrollPosition = this.centerRowContainerCtrl.getCenterViewportScrollLeft();\n var viewportStartPixel = scrollPosition;\n var viewportEndPixel = viewportWidth + scrollPosition;\n return { start: viewportStartPixel, end: viewportEndPixel, width: viewportWidth };\n };\n __decorate$1P([\n Autowired('ctrlsService')\n ], GridBodyScrollFeature.prototype, \"ctrlsService\", void 0);\n __decorate$1P([\n Autowired('animationFrameService')\n ], GridBodyScrollFeature.prototype, \"animationFrameService\", void 0);\n __decorate$1P([\n Autowired('paginationProxy')\n ], GridBodyScrollFeature.prototype, \"paginationProxy\", void 0);\n __decorate$1P([\n Autowired('rowModel')\n ], GridBodyScrollFeature.prototype, \"rowModel\", void 0);\n __decorate$1P([\n Autowired('rowContainerHeightService')\n ], GridBodyScrollFeature.prototype, \"heightScaler\", void 0);\n __decorate$1P([\n Autowired('rowRenderer')\n ], GridBodyScrollFeature.prototype, \"rowRenderer\", void 0);\n __decorate$1P([\n Autowired('columnModel')\n ], GridBodyScrollFeature.prototype, \"columnModel\", void 0);\n __decorate$1P([\n PostConstruct\n ], GridBodyScrollFeature.prototype, \"postConstruct\", null);\n return GridBodyScrollFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar AutoScrollService = /** @class */ (function () {\n function AutoScrollService(params) {\n this.tickingInterval = null;\n this.onScrollCallback = null;\n this.scrollContainer = params.scrollContainer;\n this.scrollHorizontally = params.scrollAxis.indexOf('x') !== -1;\n this.scrollVertically = params.scrollAxis.indexOf('y') !== -1;\n this.scrollByTick = params.scrollByTick != null ? params.scrollByTick : 20;\n if (params.onScrollCallback) {\n this.onScrollCallback = params.onScrollCallback;\n }\n if (this.scrollVertically) {\n this.getVerticalPosition = params.getVerticalPosition;\n this.setVerticalPosition = params.setVerticalPosition;\n }\n if (this.scrollHorizontally) {\n this.getHorizontalPosition = params.getHorizontalPosition;\n this.setHorizontalPosition = params.setHorizontalPosition;\n }\n this.shouldSkipVerticalScroll = params.shouldSkipVerticalScroll || (function () { return false; });\n this.shouldSkipHorizontalScroll = params.shouldSkipHorizontalScroll || (function () { return false; });\n }\n AutoScrollService.prototype.check = function (mouseEvent, forceSkipVerticalScroll) {\n if (forceSkipVerticalScroll === void 0) { forceSkipVerticalScroll = false; }\n var skipVerticalScroll = forceSkipVerticalScroll || this.shouldSkipVerticalScroll();\n if (skipVerticalScroll && this.shouldSkipHorizontalScroll()) {\n return;\n }\n var rect = this.scrollContainer.getBoundingClientRect();\n var scrollTick = this.scrollByTick;\n this.tickLeft = mouseEvent.clientX < (rect.left + scrollTick);\n this.tickRight = mouseEvent.clientX > (rect.right - scrollTick);\n this.tickUp = mouseEvent.clientY < (rect.top + scrollTick) && !skipVerticalScroll;\n this.tickDown = mouseEvent.clientY > (rect.bottom - scrollTick) && !skipVerticalScroll;\n if (this.tickLeft || this.tickRight || this.tickUp || this.tickDown) {\n this.ensureTickingStarted();\n }\n else {\n this.ensureCleared();\n }\n };\n AutoScrollService.prototype.ensureTickingStarted = function () {\n if (this.tickingInterval === null) {\n this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);\n this.tickCount = 0;\n }\n };\n AutoScrollService.prototype.doTick = function () {\n this.tickCount++;\n var tickAmount;\n tickAmount = this.tickCount > 20 ? 200 : (this.tickCount > 10 ? 80 : 40);\n if (this.scrollVertically) {\n var vScrollPosition = this.getVerticalPosition();\n if (this.tickUp) {\n this.setVerticalPosition(vScrollPosition - tickAmount);\n }\n if (this.tickDown) {\n this.setVerticalPosition(vScrollPosition + tickAmount);\n }\n }\n if (this.scrollHorizontally) {\n var hScrollPosition = this.getHorizontalPosition();\n if (this.tickLeft) {\n this.setHorizontalPosition(hScrollPosition - tickAmount);\n }\n if (this.tickRight) {\n this.setHorizontalPosition(hScrollPosition + tickAmount);\n }\n }\n if (this.onScrollCallback) {\n this.onScrollCallback();\n }\n };\n AutoScrollService.prototype.ensureCleared = function () {\n if (this.tickingInterval) {\n window.clearInterval(this.tickingInterval);\n this.tickingInterval = null;\n }\n };\n return AutoScrollService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1X = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$9 = (undefined && undefined.__assign) || function () {\n __assign$9 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$9.apply(this, arguments);\n};\nvar __decorate$1O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$l = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$h = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$l(arguments[i]));\n return ar;\n};\nvar RowDragFeature = /** @class */ (function (_super) {\n __extends$1X(RowDragFeature, _super);\n function RowDragFeature(eContainer) {\n var _this = _super.call(this) || this;\n _this.isMultiRowDrag = false;\n _this.isGridSorted = false;\n _this.isGridFiltered = false;\n _this.isRowGroupActive = false;\n _this.eContainer = eContainer;\n return _this;\n }\n RowDragFeature.prototype.postConstruct = function () {\n var _this = this;\n if (this.gridOptionsService.isRowModelType('clientSide')) {\n this.clientSideRowModel = this.rowModel;\n }\n var refreshStatus = function () {\n _this.onSortChanged();\n _this.onFilterChanged();\n _this.onRowGroupChanged();\n };\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, function () {\n refreshStatus();\n });\n refreshStatus();\n this.ctrlsService.whenReady(function () {\n var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n _this.autoScrollService = new AutoScrollService({\n scrollContainer: gridBodyCon.getBodyViewportElement(),\n scrollAxis: 'y',\n getVerticalPosition: function () { return gridBodyCon.getScrollFeature().getVScrollPosition().top; },\n setVerticalPosition: function (position) { return gridBodyCon.getScrollFeature().setVerticalScrollPosition(position); },\n onScrollCallback: function () { _this.onDragging(_this.lastDraggingEvent); }\n });\n });\n };\n RowDragFeature.prototype.onSortChanged = function () {\n this.isGridSorted = this.sortController.isSortActive();\n };\n RowDragFeature.prototype.onFilterChanged = function () {\n this.isGridFiltered = this.filterManager.isAnyFilterPresent();\n };\n RowDragFeature.prototype.onRowGroupChanged = function () {\n var rowGroups = this.columnModel.getRowGroupColumns();\n this.isRowGroupActive = !missingOrEmpty(rowGroups);\n };\n RowDragFeature.prototype.getContainer = function () {\n return this.eContainer;\n };\n RowDragFeature.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.RowDrag;\n };\n RowDragFeature.prototype.getIconName = function () {\n var managedDrag = this.gridOptionsService.is('rowDragManaged');\n if (managedDrag && this.shouldPreventRowMove()) {\n return DragAndDropService.ICON_NOT_ALLOWED;\n }\n return DragAndDropService.ICON_MOVE;\n };\n RowDragFeature.prototype.shouldPreventRowMove = function () {\n return this.isGridSorted || this.isGridFiltered || this.isRowGroupActive;\n };\n RowDragFeature.prototype.getRowNodes = function (draggingEvent) {\n var _this = this;\n if (!this.isFromThisGrid(draggingEvent)) {\n return (draggingEvent.dragItem.rowNodes || []);\n }\n var isRowDragMultiRow = this.gridOptionsService.is('rowDragMultiRow');\n var selectedNodes = __spread$h(this.selectionService.getSelectedNodes()).sort(function (a, b) {\n if (a.rowIndex == null || b.rowIndex == null) {\n return 0;\n }\n return _this.getRowIndexNumber(a) - _this.getRowIndexNumber(b);\n });\n var currentNode = draggingEvent.dragItem.rowNode;\n if (isRowDragMultiRow && selectedNodes.indexOf(currentNode) !== -1) {\n this.isMultiRowDrag = true;\n return selectedNodes;\n }\n this.isMultiRowDrag = false;\n return [currentNode];\n };\n RowDragFeature.prototype.onDragEnter = function (draggingEvent) {\n // builds a lits of all rows being dragged before firing events\n draggingEvent.dragItem.rowNodes = this.getRowNodes(draggingEvent);\n // when entering, we fire the enter event, then in onEnterOrDragging,\n // we also fire the move event. so we get both events when entering.\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_ENTER, draggingEvent);\n this.getRowNodes(draggingEvent).forEach(function (rowNode) {\n rowNode.setDragging(true);\n });\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.onDragging = function (draggingEvent) {\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.isFromThisGrid = function (draggingEvent) {\n var dragSourceDomDataKey = draggingEvent.dragSource.dragSourceDomDataKey;\n return dragSourceDomDataKey === this.gridOptionsService.getDomDataKey();\n };\n RowDragFeature.prototype.isDropZoneWithinThisGrid = function (draggingEvent) {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var gridGui = gridBodyCon.getGui();\n var dropZoneTarget = draggingEvent.dropZoneTarget;\n return !gridGui.contains(dropZoneTarget);\n };\n RowDragFeature.prototype.onEnterOrDragging = function (draggingEvent) {\n // this event is fired for enter and move\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_MOVE, draggingEvent);\n this.lastDraggingEvent = draggingEvent;\n var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var managedDrag = this.gridOptionsService.is('rowDragManaged');\n if (managedDrag) {\n this.doManagedDrag(draggingEvent, pixel);\n }\n this.autoScrollService.check(draggingEvent.event);\n };\n RowDragFeature.prototype.doManagedDrag = function (draggingEvent, pixel) {\n var isFromThisGrid = this.isFromThisGrid(draggingEvent);\n var managedDrag = this.gridOptionsService.is('rowDragManaged');\n var rowNodes = draggingEvent.dragItem.rowNodes;\n if (managedDrag && this.shouldPreventRowMove()) {\n return;\n }\n if (this.gridOptionsService.is('suppressMoveWhenRowDragging') || !isFromThisGrid) {\n if (!this.isDropZoneWithinThisGrid(draggingEvent)) {\n this.clientSideRowModel.highlightRowAtPixel(rowNodes[0], pixel);\n }\n }\n else {\n this.moveRows(rowNodes, pixel);\n }\n };\n RowDragFeature.prototype.getRowIndexNumber = function (rowNode) {\n return parseInt(last(rowNode.getRowIndexString().split('-')), 10);\n };\n RowDragFeature.prototype.moveRowAndClearHighlight = function (draggingEvent) {\n var _this = this;\n var lastHighlightedRowNode = this.clientSideRowModel.getLastHighlightedRowNode();\n var isBelow = lastHighlightedRowNode && lastHighlightedRowNode.highlighted === RowHighlightPosition.Below;\n var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var rowNodes = draggingEvent.dragItem.rowNodes;\n var increment = isBelow ? 1 : 0;\n if (this.isFromThisGrid(draggingEvent)) {\n rowNodes.forEach(function (rowNode) {\n if (rowNode.rowTop < pixel) {\n increment -= 1;\n }\n });\n this.moveRows(rowNodes, pixel, increment);\n }\n else {\n var getRowIdFunc_1 = this.gridOptionsService.getRowIdFunc();\n var addIndex = this.clientSideRowModel.getRowIndexAtPixel(pixel) + 1;\n if (this.clientSideRowModel.getHighlightPosition(pixel) === RowHighlightPosition.Above) {\n addIndex--;\n }\n this.clientSideRowModel.updateRowData({\n add: rowNodes\n .map(function (node) { return node.data; })\n .filter(function (data) { return !_this.clientSideRowModel.getRowNode(getRowIdFunc_1 ? getRowIdFunc_1({ data: data, level: 0 }) : data.id); }),\n addIndex: addIndex\n });\n }\n this.clearRowHighlight();\n };\n RowDragFeature.prototype.clearRowHighlight = function () {\n this.clientSideRowModel.highlightRowAtPixel(null);\n };\n RowDragFeature.prototype.moveRows = function (rowNodes, pixel, increment) {\n if (increment === void 0) { increment = 0; }\n var rowWasMoved = this.clientSideRowModel.ensureRowsAtPixel(rowNodes, pixel, increment);\n if (rowWasMoved) {\n this.focusService.clearFocusedCell();\n if (this.rangeService) {\n this.rangeService.removeAllCellRanges();\n }\n }\n };\n RowDragFeature.prototype.addRowDropZone = function (params) {\n var _this = this;\n if (!params.getContainer()) {\n doOnce(function () { return console.warn('AG Grid: addRowDropZone - A container target needs to be provided'); }, 'add-drop-zone-empty-target');\n return;\n }\n if (this.dragAndDropService.findExternalZone(params)) {\n console.warn('AG Grid: addRowDropZone - target already exists in the list of DropZones. Use `removeRowDropZone` before adding it again.');\n return;\n }\n var processedParams = {\n getContainer: params.getContainer\n };\n if (params.fromGrid) {\n params.fromGrid = undefined;\n processedParams = params;\n }\n else {\n if (params.onDragEnter) {\n processedParams.onDragEnter = function (e) {\n params.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n };\n }\n if (params.onDragLeave) {\n processedParams.onDragLeave = function (e) {\n params.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n };\n }\n if (params.onDragging) {\n processedParams.onDragging = function (e) {\n params.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n };\n }\n if (params.onDragStop) {\n processedParams.onDragStop = function (e) {\n params.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e));\n };\n }\n }\n this.dragAndDropService.addDropTarget(__assign$9({ isInterestedIn: function (type) { return type === DragSourceType.RowDrag; }, getIconName: function () { return DragAndDropService.ICON_MOVE; }, external: true }, processedParams));\n };\n RowDragFeature.prototype.getRowDropZone = function (events) {\n var _this = this;\n var getContainer = this.getContainer.bind(this);\n var onDragEnter = this.onDragEnter.bind(this);\n var onDragLeave = this.onDragLeave.bind(this);\n var onDragging = this.onDragging.bind(this);\n var onDragStop = this.onDragStop.bind(this);\n if (!events) {\n return { getContainer: getContainer, onDragEnter: onDragEnter, onDragLeave: onDragLeave, onDragging: onDragging, onDragStop: onDragStop, /* @private */ fromGrid: true };\n }\n return {\n getContainer: getContainer,\n onDragEnter: events.onDragEnter\n ? (function (e) {\n onDragEnter(e);\n events.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n })\n : onDragEnter,\n onDragLeave: events.onDragLeave\n ? (function (e) {\n onDragLeave(e);\n events.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n })\n : onDragLeave,\n onDragging: events.onDragging\n ? (function (e) {\n onDragging(e);\n events.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n })\n : onDragging,\n onDragStop: events.onDragStop\n ? (function (e) {\n onDragStop(e);\n events.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e));\n })\n : onDragStop,\n fromGrid: true /* @private */\n };\n };\n RowDragFeature.prototype.draggingToRowDragEvent = function (type, draggingEvent) {\n var yNormalised = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var mouseIsPastLastRow = yNormalised > this.paginationProxy.getCurrentPageHeight();\n var overIndex = -1;\n var overNode;\n if (!mouseIsPastLastRow) {\n overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);\n overNode = this.rowModel.getRow(overIndex);\n }\n var vDirectionString;\n switch (draggingEvent.vDirection) {\n case VerticalDirection.Down:\n vDirectionString = 'down';\n break;\n case VerticalDirection.Up:\n vDirectionString = 'up';\n break;\n default:\n vDirectionString = null;\n break;\n }\n var event = {\n type: type,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n event: draggingEvent.event,\n node: draggingEvent.dragItem.rowNode,\n nodes: draggingEvent.dragItem.rowNodes,\n overIndex: overIndex,\n overNode: overNode,\n y: yNormalised,\n vDirection: vDirectionString\n };\n return event;\n };\n RowDragFeature.prototype.dispatchGridEvent = function (type, draggingEvent) {\n var event = this.draggingToRowDragEvent(type, draggingEvent);\n this.eventService.dispatchEvent(event);\n };\n RowDragFeature.prototype.onDragLeave = function (draggingEvent) {\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_LEAVE, draggingEvent);\n this.stopDragging(draggingEvent);\n if (this.gridOptionsService.is('rowDragManaged')) {\n this.clearRowHighlight();\n }\n if (this.isFromThisGrid(draggingEvent)) {\n this.isMultiRowDrag = false;\n }\n };\n RowDragFeature.prototype.onDragStop = function (draggingEvent) {\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_END, draggingEvent);\n this.stopDragging(draggingEvent);\n if (this.gridOptionsService.is('rowDragManaged') &&\n (this.gridOptionsService.is('suppressMoveWhenRowDragging') || !this.isFromThisGrid(draggingEvent)) &&\n !this.isDropZoneWithinThisGrid(draggingEvent)) {\n this.moveRowAndClearHighlight(draggingEvent);\n }\n };\n RowDragFeature.prototype.stopDragging = function (draggingEvent) {\n this.autoScrollService.ensureCleared();\n this.getRowNodes(draggingEvent).forEach(function (rowNode) {\n rowNode.setDragging(false);\n });\n };\n __decorate$1O([\n Autowired('dragAndDropService')\n ], RowDragFeature.prototype, \"dragAndDropService\", void 0);\n __decorate$1O([\n Autowired('rowModel')\n ], RowDragFeature.prototype, \"rowModel\", void 0);\n __decorate$1O([\n Autowired('paginationProxy')\n ], RowDragFeature.prototype, \"paginationProxy\", void 0);\n __decorate$1O([\n Autowired('columnModel')\n ], RowDragFeature.prototype, \"columnModel\", void 0);\n __decorate$1O([\n Autowired('focusService')\n ], RowDragFeature.prototype, \"focusService\", void 0);\n __decorate$1O([\n Autowired('sortController')\n ], RowDragFeature.prototype, \"sortController\", void 0);\n __decorate$1O([\n Autowired('filterManager')\n ], RowDragFeature.prototype, \"filterManager\", void 0);\n __decorate$1O([\n Autowired('selectionService')\n ], RowDragFeature.prototype, \"selectionService\", void 0);\n __decorate$1O([\n Autowired('mouseEventService')\n ], RowDragFeature.prototype, \"mouseEventService\", void 0);\n __decorate$1O([\n Autowired('ctrlsService')\n ], RowDragFeature.prototype, \"ctrlsService\", void 0);\n __decorate$1O([\n Optional('rangeService')\n ], RowDragFeature.prototype, \"rangeService\", void 0);\n __decorate$1O([\n PostConstruct\n ], RowDragFeature.prototype, \"postConstruct\", null);\n return RowDragFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1W = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowAnimationCssClasses;\n(function (RowAnimationCssClasses) {\n RowAnimationCssClasses[\"ANIMATION_ON\"] = \"ag-row-animation\";\n RowAnimationCssClasses[\"ANIMATION_OFF\"] = \"ag-row-no-animation\";\n})(RowAnimationCssClasses || (RowAnimationCssClasses = {}));\nvar CSS_CLASS_CELL_SELECTABLE = 'ag-selectable';\nvar CSS_CLASS_FORCE_VERTICAL_SCROLL = 'ag-force-vertical-scroll';\nvar CSS_CLASS_COLUMN_MOVING = 'ag-column-moving';\nvar GridBodyCtrl = /** @class */ (function (_super) {\n __extends$1W(GridBodyCtrl, _super);\n function GridBodyCtrl() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stickyTopHeight = 0;\n return _this;\n }\n GridBodyCtrl.prototype.getScrollFeature = function () {\n return this.bodyScrollFeature;\n };\n GridBodyCtrl.prototype.getBodyViewportElement = function () {\n return this.eBodyViewport;\n };\n GridBodyCtrl.prototype.setComp = function (comp, eGridBody, eBodyViewport, eTop, eBottom, eStickyTop) {\n this.comp = comp;\n this.eGridBody = eGridBody;\n this.eBodyViewport = eBodyViewport;\n this.eTop = eTop;\n this.eBottom = eBottom;\n this.eStickyTop = eStickyTop;\n this.setCellTextSelection(this.gridOptionsService.is('enableCellTextSelection'));\n this.createManagedBean(new LayoutFeature(this.comp));\n this.bodyScrollFeature = this.createManagedBean(new GridBodyScrollFeature(this.eBodyViewport));\n this.addRowDragListener();\n this.setupRowAnimationCssClass();\n this.addEventListeners();\n this.addFocusListeners([eTop, eBodyViewport, eBottom, eStickyTop]);\n this.onGridColumnsChanged();\n this.addBodyViewportListener();\n this.setFloatingHeights();\n this.disableBrowserDragging();\n this.addStopEditingWhenGridLosesFocus();\n this.ctrlsService.registerGridBodyCtrl(this);\n };\n GridBodyCtrl.prototype.getComp = function () {\n return this.comp;\n };\n GridBodyCtrl.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_HEADER_HEIGHT_CHANGED, this.onHeaderHeightChanged.bind(this));\n };\n GridBodyCtrl.prototype.addFocusListeners = function (elements) {\n var _this = this;\n elements.forEach(function (element) {\n _this.addManagedListener(element, 'focusin', function (e) {\n var target = e.target;\n // element being focused is nested?\n var isFocusedElementNested = isElementChildOfClass(target, 'ag-root', element);\n element.classList.toggle('ag-has-focus', !isFocusedElementNested);\n });\n _this.addManagedListener(element, 'focusout', function (e) {\n var target = e.target, relatedTarget = e.relatedTarget;\n var gridContainRelatedTarget = element.contains(relatedTarget);\n var isNestedRelatedTarget = isElementChildOfClass(relatedTarget, 'ag-root', element);\n var isNestedTarget = isElementChildOfClass(target, 'ag-root', element);\n // element losing focus belongs to a nested grid,\n // it should not be handled here.\n if (isNestedTarget) {\n return;\n }\n // the grid does not contain, or the focus element is within\n // a nested grid\n if (!gridContainRelatedTarget || isNestedRelatedTarget) {\n element.classList.remove('ag-has-focus');\n }\n });\n });\n };\n // used by ColumnAnimationService\n GridBodyCtrl.prototype.setColumnMovingCss = function (moving) {\n this.comp.setColumnMovingCss(CSS_CLASS_COLUMN_MOVING, moving);\n };\n GridBodyCtrl.prototype.setCellTextSelection = function (selectable) {\n if (selectable === void 0) { selectable = false; }\n var cssClass = selectable ? CSS_CLASS_CELL_SELECTABLE : null;\n this.comp.setCellSelectableCss(cssClass, selectable);\n };\n GridBodyCtrl.prototype.onScrollVisibilityChanged = function () {\n var visible = this.scrollVisibleService.isVerticalScrollShowing();\n this.setVerticalScrollPaddingVisible(visible);\n this.setStickyTopWidth(visible);\n var scrollbarWidth = visible ? (this.gridOptionsService.getScrollbarWidth() || 0) : 0;\n var pad = isInvisibleScrollbar() ? 16 : 0;\n var width = \"calc(100% + \" + (scrollbarWidth + pad) + \"px)\";\n this.comp.setBodyViewportWidth(width);\n };\n GridBodyCtrl.prototype.onGridColumnsChanged = function () {\n var columns = this.columnModel.getAllGridColumns();\n this.comp.setColumnCount(columns ? columns.length : 0);\n };\n // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)\n // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.\n GridBodyCtrl.prototype.disableBrowserDragging = function () {\n this.addManagedListener(this.eGridBody, 'dragstart', function (event) {\n if (event.target instanceof HTMLImageElement) {\n event.preventDefault();\n return false;\n }\n });\n };\n GridBodyCtrl.prototype.addStopEditingWhenGridLosesFocus = function () {\n var _this = this;\n if (!this.gridOptionsService.is('stopEditingWhenCellsLoseFocus')) {\n return;\n }\n var focusOutListener = function (event) {\n // this is the element the focus is moving to\n var elementWithFocus = event.relatedTarget;\n if (getTabIndex(elementWithFocus) === null) {\n _this.rowRenderer.stopEditing();\n return;\n }\n var clickInsideGrid = \n // see if click came from inside the viewports\n viewports.some(function (viewport) { return viewport.contains(elementWithFocus); })\n // and also that it's not from a detail grid\n && _this.mouseEventService.isElementInThisGrid(elementWithFocus);\n if (!clickInsideGrid) {\n var popupService = _this.popupService;\n clickInsideGrid =\n popupService.getActivePopups().some(function (popup) { return popup.contains(elementWithFocus); }) ||\n popupService.isElementWithinCustomPopup(elementWithFocus);\n }\n if (!clickInsideGrid) {\n _this.rowRenderer.stopEditing();\n }\n };\n var viewports = [this.eBodyViewport, this.eBottom, this.eTop, this.eStickyTop];\n viewports.forEach(function (viewport) { return _this.addManagedListener(viewport, 'focusout', focusOutListener); });\n };\n GridBodyCtrl.prototype.updateRowCount = function () {\n var headerCount = this.headerNavigationService.getHeaderRowCount();\n var rowCount = this.rowModel.isLastRowIndexKnown() ? this.rowModel.getRowCount() : -1;\n var total = rowCount === -1 ? -1 : (headerCount + rowCount);\n this.comp.setRowCount(total);\n };\n GridBodyCtrl.prototype.registerBodyViewportResizeListener = function (listener) {\n this.comp.registerBodyViewportResizeListener(listener);\n };\n GridBodyCtrl.prototype.setVerticalScrollPaddingVisible = function (visible) {\n var overflowY = visible ? 'scroll' : 'hidden';\n this.comp.setPinnedTopBottomOverflowY(overflowY);\n };\n GridBodyCtrl.prototype.isVerticalScrollShowing = function () {\n var show = this.gridOptionsService.is('alwaysShowVerticalScroll');\n var cssClass = show ? CSS_CLASS_FORCE_VERTICAL_SCROLL : null;\n var allowVerticalScroll = this.gridOptionsService.isDomLayout('normal');\n this.comp.setAlwaysVerticalScrollClass(cssClass, show);\n return show || (allowVerticalScroll && isVerticalScrollShowing(this.eBodyViewport));\n };\n GridBodyCtrl.prototype.setupRowAnimationCssClass = function () {\n var _this = this;\n var listener = function () {\n // we don't want to use row animation if scaling, as rows jump strangely as you scroll,\n // when scaling and doing row animation.\n var animateRows = _this.gridOptionsService.isAnimateRows() && !_this.rowContainerHeightService.isStretching();\n var animateRowsCssClass = animateRows ? RowAnimationCssClasses.ANIMATION_ON : RowAnimationCssClasses.ANIMATION_OFF;\n _this.comp.setRowAnimationCssOnBodyViewport(animateRowsCssClass, animateRows);\n };\n listener();\n this.addManagedListener(this.eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, listener);\n this.addManagedPropertyListener('animateRows', listener);\n };\n GridBodyCtrl.prototype.getGridBodyElement = function () {\n return this.eGridBody;\n };\n GridBodyCtrl.prototype.addBodyViewportListener = function () {\n // we want to listen for clicks directly on the eBodyViewport, so the user has a way of showing\n // the context menu if no rows or columns are displayed, or user simply clicks outside of a cell\n var listener = this.onBodyViewportContextMenu.bind(this);\n this.addManagedListener(this.eBodyViewport, 'contextmenu', listener);\n this.mockContextMenuForIPad(listener);\n this.addManagedListener(this.eBodyViewport, 'wheel', this.onBodyViewportWheel.bind(this));\n this.addManagedListener(this.eStickyTop, 'wheel', this.onStickyTopWheel.bind(this));\n // allow mouseWheel on the Full Width Container to Scroll the Viewport\n this.addFullWidthContainerWheelListener();\n };\n GridBodyCtrl.prototype.addFullWidthContainerWheelListener = function () {\n var _this = this;\n var fullWidthContainer = this.eBodyViewport.querySelector('.ag-full-width-container');\n var eCenterColsViewport = this.eBodyViewport.querySelector('.ag-center-cols-viewport');\n if (fullWidthContainer && eCenterColsViewport) {\n this.addManagedListener(fullWidthContainer, 'wheel', function (e) { return _this.onFullWidthContainerWheel(e, eCenterColsViewport); });\n }\n };\n GridBodyCtrl.prototype.onFullWidthContainerWheel = function (e, eCenterColsViewport) {\n if (!e.deltaX || Math.abs(e.deltaY) > Math.abs(e.deltaX)) {\n return;\n }\n e.preventDefault();\n eCenterColsViewport.scrollBy({ left: e.deltaX });\n };\n GridBodyCtrl.prototype.onBodyViewportContextMenu = function (mouseEvent, touch, touchEvent) {\n if (!mouseEvent && !touchEvent) {\n return;\n }\n if (this.gridOptionsService.is('preventDefaultOnContextMenu')) {\n var event_1 = (mouseEvent || touchEvent);\n event_1.preventDefault();\n }\n var target = (mouseEvent || touch).target;\n if (target === this.eBodyViewport || target === this.ctrlsService.getCenterRowContainerCtrl().getViewportElement()) {\n // show it\n if (!this.contextMenuFactory) {\n return;\n }\n if (mouseEvent) {\n this.contextMenuFactory.onContextMenu(mouseEvent, null, null, null, null, this.eGridBody);\n }\n else if (touchEvent) {\n this.contextMenuFactory.onContextMenu(null, touchEvent, null, null, null, this.eGridBody);\n }\n }\n };\n GridBodyCtrl.prototype.mockContextMenuForIPad = function (listener) {\n // we do NOT want this when not in iPad\n if (!isIOSUserAgent()) {\n return;\n }\n var touchListener = new TouchListener(this.eBodyViewport);\n var longTapListener = function (event) {\n listener(undefined, event.touchStart, event.touchEvent);\n };\n this.addManagedListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n };\n GridBodyCtrl.prototype.onBodyViewportWheel = function (e) {\n if (!this.gridOptionsService.is('suppressScrollWhenPopupsAreOpen')) {\n return;\n }\n if (this.popupService.hasAnchoredPopup()) {\n e.preventDefault();\n }\n };\n GridBodyCtrl.prototype.onStickyTopWheel = function (e) {\n e.preventDefault();\n if (e.offsetY) {\n this.scrollVertically(e.deltaY);\n }\n };\n GridBodyCtrl.prototype.getGui = function () {\n return this.eGridBody;\n };\n // called by rowDragFeature\n GridBodyCtrl.prototype.scrollVertically = function (pixels) {\n var oldScrollPosition = this.eBodyViewport.scrollTop;\n this.bodyScrollFeature.setVerticalScrollPosition(oldScrollPosition + pixels);\n return this.eBodyViewport.scrollTop - oldScrollPosition;\n };\n GridBodyCtrl.prototype.addRowDragListener = function () {\n this.rowDragFeature = this.createManagedBean(new RowDragFeature(this.eBodyViewport));\n this.dragAndDropService.addDropTarget(this.rowDragFeature);\n };\n GridBodyCtrl.prototype.getRowDragFeature = function () {\n return this.rowDragFeature;\n };\n GridBodyCtrl.prototype.onPinnedRowDataChanged = function () {\n this.setFloatingHeights();\n };\n GridBodyCtrl.prototype.setFloatingHeights = function () {\n var pinnedRowModel = this.pinnedRowModel;\n var floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();\n if (floatingTopHeight) {\n // adding 1px for cell bottom border\n floatingTopHeight += 1;\n }\n var floatingBottomHeight = pinnedRowModel.getPinnedBottomTotalHeight();\n if (floatingBottomHeight) {\n // adding 1px for cell bottom border\n floatingBottomHeight += 1;\n }\n this.comp.setTopHeight(floatingTopHeight);\n this.comp.setBottomHeight(floatingBottomHeight);\n this.comp.setTopDisplay(floatingTopHeight ? 'inherit' : 'none');\n this.comp.setBottomDisplay(floatingBottomHeight ? 'inherit' : 'none');\n this.setStickyTopOffsetTop();\n };\n GridBodyCtrl.prototype.setStickyTopHeight = function (height) {\n if (height === void 0) { height = 0; }\n // console.log('setting sticky top height ' + height);\n this.comp.setStickyTopHeight(height + \"px\");\n this.stickyTopHeight = height;\n };\n GridBodyCtrl.prototype.getStickyTopHeight = function () {\n return this.stickyTopHeight;\n };\n GridBodyCtrl.prototype.setStickyTopWidth = function (vScrollVisible) {\n if (!vScrollVisible) {\n this.comp.setStickyTopWidth('100%');\n }\n else {\n var scrollbarWidth = this.gridOptionsService.getScrollbarWidth();\n this.comp.setStickyTopWidth(\"calc(100% - \" + scrollbarWidth + \"px)\");\n }\n };\n GridBodyCtrl.prototype.onHeaderHeightChanged = function () {\n this.setStickyTopOffsetTop();\n };\n GridBodyCtrl.prototype.setStickyTopOffsetTop = function () {\n var headerCtrl = this.ctrlsService.getGridHeaderCtrl();\n var headerHeight = headerCtrl.getHeaderHeight();\n var pinnedTopHeight = this.pinnedRowModel.getPinnedTopTotalHeight();\n var height = 0;\n if (headerHeight > 0) {\n height += headerHeight + 1;\n }\n if (pinnedTopHeight > 0) {\n height += pinnedTopHeight + 1;\n }\n this.comp.setStickyTopTop(height + \"px\");\n };\n // method will call itself if no available width. this covers if the grid\n // isn't visible, but is just about to be visible.\n GridBodyCtrl.prototype.sizeColumnsToFit = function (params, nextTimeout) {\n var _this = this;\n var removeScrollWidth = this.isVerticalScrollShowing();\n var scrollWidthToRemove = removeScrollWidth ? this.gridOptionsService.getScrollbarWidth() : 0;\n // bodyViewportWidth should be calculated from eGridBody, not eBodyViewport\n // because we change the width of the bodyViewport to hide the real browser scrollbar\n var bodyViewportWidth = getInnerWidth(this.eGridBody);\n var availableWidth = bodyViewportWidth - scrollWidthToRemove;\n if (availableWidth > 0) {\n this.columnModel.sizeColumnsToFit(availableWidth, \"sizeColumnsToFit\", false, params);\n return;\n }\n if (nextTimeout === undefined) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(params, 100);\n }, 0);\n }\n else if (nextTimeout === 100) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(params, 500);\n }, 100);\n }\n else if (nextTimeout === 500) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(params, -1);\n }, 500);\n }\n else {\n console.warn('AG Grid: tried to call sizeColumnsToFit() but the grid is coming back with ' +\n 'zero width, maybe the grid is not visible yet on the screen?');\n }\n };\n // + rangeService\n GridBodyCtrl.prototype.addScrollEventListener = function (listener) {\n this.eBodyViewport.addEventListener('scroll', listener, { passive: true });\n };\n // + focusService\n GridBodyCtrl.prototype.removeScrollEventListener = function (listener) {\n this.eBodyViewport.removeEventListener('scroll', listener);\n };\n __decorate$1N([\n Autowired('rowContainerHeightService')\n ], GridBodyCtrl.prototype, \"rowContainerHeightService\", void 0);\n __decorate$1N([\n Autowired('ctrlsService')\n ], GridBodyCtrl.prototype, \"ctrlsService\", void 0);\n __decorate$1N([\n Autowired('columnModel')\n ], GridBodyCtrl.prototype, \"columnModel\", void 0);\n __decorate$1N([\n Autowired('scrollVisibleService')\n ], GridBodyCtrl.prototype, \"scrollVisibleService\", void 0);\n __decorate$1N([\n Optional('contextMenuFactory')\n ], GridBodyCtrl.prototype, \"contextMenuFactory\", void 0);\n __decorate$1N([\n Autowired('headerNavigationService')\n ], GridBodyCtrl.prototype, \"headerNavigationService\", void 0);\n __decorate$1N([\n Autowired('dragAndDropService')\n ], GridBodyCtrl.prototype, \"dragAndDropService\", void 0);\n __decorate$1N([\n Autowired('pinnedRowModel')\n ], GridBodyCtrl.prototype, \"pinnedRowModel\", void 0);\n __decorate$1N([\n Autowired('rowRenderer')\n ], GridBodyCtrl.prototype, \"rowRenderer\", void 0);\n __decorate$1N([\n Autowired('popupService')\n ], GridBodyCtrl.prototype, \"popupService\", void 0);\n __decorate$1N([\n Autowired('mouseEventService')\n ], GridBodyCtrl.prototype, \"mouseEventService\", void 0);\n __decorate$1N([\n Autowired('rowModel')\n ], GridBodyCtrl.prototype, \"rowModel\", void 0);\n return GridBodyCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar SelectionHandleType;\n(function (SelectionHandleType) {\n SelectionHandleType[SelectionHandleType[\"FILL\"] = 0] = \"FILL\";\n SelectionHandleType[SelectionHandleType[\"RANGE\"] = 1] = \"RANGE\";\n})(SelectionHandleType || (SelectionHandleType = {}));\nvar CellRangeType;\n(function (CellRangeType) {\n CellRangeType[CellRangeType[\"VALUE\"] = 0] = \"VALUE\";\n CellRangeType[CellRangeType[\"DIMENSION\"] = 1] = \"DIMENSION\";\n})(CellRangeType || (CellRangeType = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar CSS_CELL_RANGE_SELECTED = 'ag-cell-range-selected';\nvar CSS_CELL_RANGE_CHART = 'ag-cell-range-chart';\nvar CSS_CELL_RANGE_SINGLE_CELL = 'ag-cell-range-single-cell';\nvar CSS_CELL_RANGE_CHART_CATEGORY = 'ag-cell-range-chart-category';\nvar CSS_CELL_RANGE_HANDLE = 'ag-cell-range-handle';\nvar CSS_CELL_RANGE_TOP = 'ag-cell-range-top';\nvar CSS_CELL_RANGE_RIGHT = 'ag-cell-range-right';\nvar CSS_CELL_RANGE_BOTTOM = 'ag-cell-range-bottom';\nvar CSS_CELL_RANGE_LEFT = 'ag-cell-range-left';\nvar CellRangeFeature = /** @class */ (function () {\n function CellRangeFeature(beans, ctrl) {\n this.beans = beans;\n this.cellCtrl = ctrl;\n }\n CellRangeFeature.prototype.setComp = function (cellComp, eGui) {\n this.cellComp = cellComp;\n this.eGui = eGui;\n this.onRangeSelectionChanged();\n };\n CellRangeFeature.prototype.onRangeSelectionChanged = function () {\n // when using reactUi, given UI is async, it's possible this method is called before the comp is registered\n if (!this.cellComp) {\n return;\n }\n this.rangeCount = this.beans.rangeService.getCellRangeCount(this.cellCtrl.getCellPosition());\n this.hasChartRange = this.getHasChartRange();\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED, this.rangeCount !== 0);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-1\", this.rangeCount === 1);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-2\", this.rangeCount === 2);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-3\", this.rangeCount === 3);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-4\", this.rangeCount >= 4);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART, this.hasChartRange);\n setAriaSelected(this.eGui, this.rangeCount > 0 ? true : undefined);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SINGLE_CELL, this.isSingleCell());\n this.updateRangeBorders();\n this.refreshHandle();\n };\n CellRangeFeature.prototype.updateRangeBorders = function () {\n var rangeBorders = this.getRangeBorders();\n var isSingleCell = this.isSingleCell();\n var isTop = !isSingleCell && rangeBorders.top;\n var isRight = !isSingleCell && rangeBorders.right;\n var isBottom = !isSingleCell && rangeBorders.bottom;\n var isLeft = !isSingleCell && rangeBorders.left;\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_TOP, isTop);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_RIGHT, isRight);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_BOTTOM, isBottom);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_LEFT, isLeft);\n };\n CellRangeFeature.prototype.isSingleCell = function () {\n var rangeService = this.beans.rangeService;\n return this.rangeCount === 1 && rangeService && !rangeService.isMoreThanOneCell();\n };\n CellRangeFeature.prototype.getHasChartRange = function () {\n var rangeService = this.beans.rangeService;\n if (!this.rangeCount || !rangeService) {\n return false;\n }\n var cellRanges = rangeService.getCellRanges();\n return cellRanges.length > 0 && cellRanges.every(function (range) { return includes([CellRangeType.DIMENSION, CellRangeType.VALUE], range.type); });\n };\n CellRangeFeature.prototype.updateRangeBordersIfRangeCount = function () {\n // we only need to update range borders if we are in a range\n if (this.rangeCount > 0) {\n this.updateRangeBorders();\n this.refreshHandle();\n }\n };\n CellRangeFeature.prototype.getRangeBorders = function () {\n var _this = this;\n var isRtl = this.beans.gridOptionsService.is('enableRtl');\n var top = false;\n var right = false;\n var bottom = false;\n var left = false;\n var thisCol = this.cellCtrl.getCellPosition().column;\n var _a = this.beans, rangeService = _a.rangeService, columnModel = _a.columnModel;\n var leftCol;\n var rightCol;\n if (isRtl) {\n leftCol = columnModel.getDisplayedColAfter(thisCol);\n rightCol = columnModel.getDisplayedColBefore(thisCol);\n }\n else {\n leftCol = columnModel.getDisplayedColBefore(thisCol);\n rightCol = columnModel.getDisplayedColAfter(thisCol);\n }\n var ranges = rangeService.getCellRanges().filter(function (range) { return rangeService.isCellInSpecificRange(_this.cellCtrl.getCellPosition(), range); });\n // this means we are the first column in the grid\n if (!leftCol) {\n left = true;\n }\n // this means we are the last column in the grid\n if (!rightCol) {\n right = true;\n }\n for (var i = 0; i < ranges.length; i++) {\n if (top && right && bottom && left) {\n break;\n }\n var range = ranges[i];\n var startRow = rangeService.getRangeStartRow(range);\n var endRow = rangeService.getRangeEndRow(range);\n if (!top && this.beans.rowPositionUtils.sameRow(startRow, this.cellCtrl.getCellPosition())) {\n top = true;\n }\n if (!bottom && this.beans.rowPositionUtils.sameRow(endRow, this.cellCtrl.getCellPosition())) {\n bottom = true;\n }\n if (!left && leftCol && range.columns.indexOf(leftCol) < 0) {\n left = true;\n }\n if (!right && rightCol && range.columns.indexOf(rightCol) < 0) {\n right = true;\n }\n }\n return { top: top, right: right, bottom: bottom, left: left };\n };\n CellRangeFeature.prototype.refreshHandle = function () {\n if (!this.beans.rangeService) {\n return;\n }\n var shouldHaveSelectionHandle = this.shouldHaveSelectionHandle();\n if (this.selectionHandle && !shouldHaveSelectionHandle) {\n this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);\n }\n if (shouldHaveSelectionHandle) {\n this.addSelectionHandle();\n }\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_HANDLE, !!this.selectionHandle);\n };\n CellRangeFeature.prototype.shouldHaveSelectionHandle = function () {\n var _a = this.beans, gridOptionsService = _a.gridOptionsService, rangeService = _a.rangeService;\n var cellRanges = rangeService.getCellRanges();\n var rangesLen = cellRanges.length;\n if (this.rangeCount < 1 || rangesLen < 1) {\n return false;\n }\n var cellRange = last(cellRanges);\n var cellPosition = this.cellCtrl.getCellPosition();\n var isFillHandleAvailable = gridOptionsService.is('enableFillHandle') && !this.cellCtrl.isSuppressFillHandle();\n var isRangeHandleAvailable = gridOptionsService.is('enableRangeHandle');\n var handleIsAvailable = rangesLen === 1 && !this.cellCtrl.isEditing() && (isFillHandleAvailable || isRangeHandleAvailable);\n if (this.hasChartRange) {\n var hasCategoryRange = cellRanges[0].type === CellRangeType.DIMENSION;\n var isCategoryCell = hasCategoryRange && rangeService.isCellInSpecificRange(cellPosition, cellRanges[0]);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART_CATEGORY, isCategoryCell);\n handleIsAvailable = cellRange.type === CellRangeType.VALUE;\n }\n return handleIsAvailable &&\n cellRange.endRow != null &&\n rangeService.isContiguousRange(cellRange) &&\n rangeService.isBottomRightCell(cellRange, cellPosition);\n };\n CellRangeFeature.prototype.addSelectionHandle = function () {\n var _a = this.beans, gridOptionsService = _a.gridOptionsService, rangeService = _a.rangeService;\n var cellRangeType = last(rangeService.getCellRanges()).type;\n var selectionHandleFill = gridOptionsService.is('enableFillHandle') && missing(cellRangeType);\n var type = selectionHandleFill ? SelectionHandleType.FILL : SelectionHandleType.RANGE;\n if (this.selectionHandle && this.selectionHandle.getType() !== type) {\n this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);\n }\n if (!this.selectionHandle) {\n this.selectionHandle = this.beans.selectionHandleFactory.createSelectionHandle(type);\n }\n this.selectionHandle.refresh(this.cellCtrl);\n };\n CellRangeFeature.prototype.destroy = function () {\n this.beans.context.destroyBean(this.selectionHandle);\n };\n return CellRangeFeature;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1V = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Takes care of:\n * #) Cell Width (including when doing cell spanning, which makes width cover many columns)\n * #) Cell Height (when doing row span, otherwise we don't touch the height as it's just row height)\n * #) Cell Left (the horizontal positioning of the cell, the vertical positioning is on the row)\n */\nvar CellPositionFeature = /** @class */ (function (_super) {\n __extends$1V(CellPositionFeature, _super);\n function CellPositionFeature(ctrl, beans) {\n var _this = _super.call(this) || this;\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.column = ctrl.getColumn();\n _this.rowNode = ctrl.getRowNode();\n _this.setupColSpan();\n _this.setupRowSpan();\n return _this;\n }\n CellPositionFeature.prototype.setupRowSpan = function () {\n this.rowSpan = this.column.getRowSpan(this.rowNode);\n };\n CellPositionFeature.prototype.setComp = function (eGui) {\n this.eGui = eGui;\n this.onLeftChanged();\n this.onWidthChanged();\n this.applyRowSpan();\n };\n CellPositionFeature.prototype.onDisplayColumnsChanged = function () {\n var colsSpanning = this.getColSpanningList();\n if (!areEqual(this.colsSpanning, colsSpanning)) {\n this.colsSpanning = colsSpanning;\n this.onWidthChanged();\n this.onLeftChanged(); // left changes when doing RTL\n }\n };\n CellPositionFeature.prototype.setupColSpan = function () {\n // if no col span is active, then we don't set it up, as it would be wasteful of CPU\n if (this.column.getColDef().colSpan == null) {\n return;\n }\n this.colsSpanning = this.getColSpanningList();\n // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n this.addManagedListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));\n // because we are spanning over multiple cols, we check for width any time any cols width changes.\n // this is expensive - really we should be explicitly checking only the cols we are spanning over\n // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.\n this.addManagedListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n };\n CellPositionFeature.prototype.onWidthChanged = function () {\n if (!this.eGui) {\n return;\n }\n var width = this.getCellWidth();\n this.eGui.style.width = width + \"px\";\n };\n CellPositionFeature.prototype.getCellWidth = function () {\n if (!this.colsSpanning) {\n return this.column.getActualWidth();\n }\n return this.colsSpanning.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n };\n CellPositionFeature.prototype.getColSpanningList = function () {\n var colSpan = this.column.getColSpan(this.rowNode);\n var colsSpanning = [];\n // if just one col, the col span is just the column we are in\n if (colSpan === 1) {\n colsSpanning.push(this.column);\n }\n else {\n var pointer = this.column;\n var pinned = this.column.getPinned();\n for (var i = 0; pointer && i < colSpan; i++) {\n colsSpanning.push(pointer);\n pointer = this.beans.columnModel.getDisplayedColAfter(pointer);\n if (!pointer || missing(pointer)) {\n break;\n }\n // we do not allow col spanning to span outside of pinned areas\n if (pinned !== pointer.getPinned()) {\n break;\n }\n }\n }\n return colsSpanning;\n };\n CellPositionFeature.prototype.onLeftChanged = function () {\n if (!this.eGui) {\n return;\n }\n var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n this.eGui.style.left = left + 'px';\n };\n CellPositionFeature.prototype.getCellLeft = function () {\n var mostLeftCol;\n if (this.beans.gridOptionsService.is('enableRtl') && this.colsSpanning) {\n mostLeftCol = last(this.colsSpanning);\n }\n else {\n mostLeftCol = this.column;\n }\n return mostLeftCol.getLeft();\n };\n CellPositionFeature.prototype.modifyLeftForPrintLayout = function (leftPosition) {\n if (!this.cellCtrl.isPrintLayout() || this.column.getPinned() === 'left') {\n return leftPosition;\n }\n var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();\n if (this.column.getPinned() === 'right') {\n var bodyWidth = this.beans.columnModel.getBodyContainerWidth();\n return leftWidth + bodyWidth + (leftPosition || 0);\n }\n // is in body\n return leftWidth + (leftPosition || 0);\n };\n CellPositionFeature.prototype.applyRowSpan = function () {\n if (this.rowSpan === 1) {\n return;\n }\n var singleRowHeight = this.beans.gridOptionsService.getRowHeightAsNumber();\n var totalRowHeight = singleRowHeight * this.rowSpan;\n this.eGui.style.height = totalRowHeight + \"px\";\n this.eGui.style.zIndex = '1';\n };\n // overriding to make public, as we don't dispose this bean via context\n CellPositionFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return CellPositionFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1U = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar CellCustomStyleFeature = /** @class */ (function (_super) {\n __extends$1U(CellCustomStyleFeature, _super);\n function CellCustomStyleFeature(ctrl, beans) {\n var _this = _super.call(this) || this;\n _this.staticClasses = [];\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.column = ctrl.getColumn();\n _this.rowNode = ctrl.getRowNode();\n return _this;\n }\n CellCustomStyleFeature.prototype.setComp = function (comp) {\n this.cellComp = comp;\n this.applyUserStyles();\n this.applyCellClassRules();\n this.applyClassesFromColDef();\n };\n CellCustomStyleFeature.prototype.applyCellClassRules = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var cellClassParams = {\n value: this.cellCtrl.getValue(),\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n column: this.column,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context\n };\n this.beans.stylingService.processClassRules(colDef.cellClassRules, cellClassParams, function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); }, function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });\n };\n CellCustomStyleFeature.prototype.applyUserStyles = function () {\n var colDef = this.column.getColDef();\n if (!colDef.cellStyle) {\n return;\n }\n var styles;\n if (typeof colDef.cellStyle === 'function') {\n var cellStyleParams = {\n column: this.column,\n value: this.cellCtrl.getValue(),\n colDef: colDef,\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context,\n };\n var cellStyleFunc = colDef.cellStyle;\n styles = cellStyleFunc(cellStyleParams);\n }\n else {\n styles = colDef.cellStyle;\n }\n if (styles) {\n this.cellComp.setUserStyles(styles);\n }\n };\n CellCustomStyleFeature.prototype.applyClassesFromColDef = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var cellClassParams = {\n value: this.cellCtrl.getValue(),\n data: this.rowNode.data,\n node: this.rowNode,\n column: this.column,\n colDef: colDef,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context\n };\n if (this.staticClasses.length) {\n this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });\n }\n this.staticClasses = this.beans.stylingService.getStaticCellClasses(colDef, cellClassParams);\n if (this.staticClasses.length) {\n this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); });\n }\n };\n // overriding to make public, as we don't dispose this bean via context\n CellCustomStyleFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return CellCustomStyleFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1T = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TooltipFeature = /** @class */ (function (_super) {\n __extends$1T(TooltipFeature, _super);\n function TooltipFeature(ctrl, beans) {\n var _this = _super.call(this) || this;\n _this.ctrl = ctrl;\n _this.beans = beans;\n return _this;\n }\n TooltipFeature.prototype.setComp = function (comp) {\n this.comp = comp;\n this.setupTooltip();\n };\n TooltipFeature.prototype.setupTooltip = function () {\n this.browserTooltips = this.beans.gridOptionsService.is('enableBrowserTooltips');\n this.updateTooltipText();\n if (this.browserTooltips) {\n this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);\n }\n else {\n this.createTooltipFeatureIfNeeded();\n }\n };\n TooltipFeature.prototype.updateTooltipText = function () {\n this.tooltip = this.ctrl.getTooltipValue();\n };\n TooltipFeature.prototype.createTooltipFeatureIfNeeded = function () {\n var _this = this;\n if (this.genericTooltipFeature != null) {\n return;\n }\n var parent = {\n getTooltipParams: function () { return _this.getTooltipParams(); },\n getGui: function () { return _this.ctrl.getGui(); }\n };\n this.genericTooltipFeature = this.createManagedBean(new CustomTooltipFeature(parent), this.beans.context);\n };\n TooltipFeature.prototype.refreshToolTip = function () {\n this.updateTooltipText();\n if (this.browserTooltips) {\n this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);\n }\n };\n TooltipFeature.prototype.getTooltipParams = function () {\n var ctrl = this.ctrl;\n var column = ctrl.getColumn ? ctrl.getColumn() : undefined;\n var colDef = ctrl.getColDef ? ctrl.getColDef() : undefined;\n var rowNode = ctrl.getRowNode ? ctrl.getRowNode() : undefined;\n return {\n location: ctrl.getLocation(),\n colDef: colDef,\n column: column,\n rowIndex: ctrl.getRowIndex ? ctrl.getRowIndex() : undefined,\n node: rowNode,\n data: rowNode ? rowNode.data : undefined,\n value: this.getTooltipText(),\n valueFormatted: ctrl.getValueFormatted ? ctrl.getValueFormatted() : undefined,\n };\n };\n TooltipFeature.prototype.getTooltipText = function () {\n return this.tooltip;\n };\n // overriding to make public, as we don't dispose this bean via context\n TooltipFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return TooltipFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** Using the IoC has a slight performance consideration, which is no problem most of the\n * time, unless we are trashing objects - which is the case when scrolling and rowComp\n * and cellComp. So for performance reasons, RowComp and CellComp do not get autowired\n * with the IoC. Instead they get passed this object which is all the beans the RowComp\n * and CellComp need. Not autowiring all the cells gives performance improvement. */\nvar Beans = /** @class */ (function () {\n function Beans() {\n }\n Beans.prototype.postConstruct = function () {\n this.doingMasterDetail = this.gridOptionsService.isMasterDetail();\n if (this.gridOptionsService.isRowModelType('clientSide')) {\n this.clientSideRowModel = this.rowModel;\n }\n if (this.gridOptionsService.isRowModelType('serverSide')) {\n this.serverSideRowModel = this.rowModel;\n }\n };\n __decorate$1M([\n Autowired('resizeObserverService')\n ], Beans.prototype, \"resizeObserverService\", void 0);\n __decorate$1M([\n Autowired('paginationProxy')\n ], Beans.prototype, \"paginationProxy\", void 0);\n __decorate$1M([\n Autowired('context')\n ], Beans.prototype, \"context\", void 0);\n __decorate$1M([\n Autowired('columnApi')\n ], Beans.prototype, \"columnApi\", void 0);\n __decorate$1M([\n Autowired('gridApi')\n ], Beans.prototype, \"gridApi\", void 0);\n __decorate$1M([\n Autowired('gridOptionsService')\n ], Beans.prototype, \"gridOptionsService\", void 0);\n __decorate$1M([\n Autowired('expressionService')\n ], Beans.prototype, \"expressionService\", void 0);\n __decorate$1M([\n Autowired('environment')\n ], Beans.prototype, \"environment\", void 0);\n __decorate$1M([\n Autowired('rowRenderer')\n ], Beans.prototype, \"rowRenderer\", void 0);\n __decorate$1M([\n Autowired('templateService')\n ], Beans.prototype, \"templateService\", void 0);\n __decorate$1M([\n Autowired('valueService')\n ], Beans.prototype, \"valueService\", void 0);\n __decorate$1M([\n Autowired('eventService')\n ], Beans.prototype, \"eventService\", void 0);\n __decorate$1M([\n Autowired('columnModel')\n ], Beans.prototype, \"columnModel\", void 0);\n __decorate$1M([\n Autowired('headerNavigationService')\n ], Beans.prototype, \"headerNavigationService\", void 0);\n __decorate$1M([\n Autowired('navigationService')\n ], Beans.prototype, \"navigationService\", void 0);\n __decorate$1M([\n Autowired('columnAnimationService')\n ], Beans.prototype, \"columnAnimationService\", void 0);\n __decorate$1M([\n Optional('rangeService')\n ], Beans.prototype, \"rangeService\", void 0);\n __decorate$1M([\n Autowired('focusService')\n ], Beans.prototype, \"focusService\", void 0);\n __decorate$1M([\n Optional('contextMenuFactory')\n ], Beans.prototype, \"contextMenuFactory\", void 0);\n __decorate$1M([\n Autowired('popupService')\n ], Beans.prototype, \"popupService\", void 0);\n __decorate$1M([\n Autowired('valueFormatterService')\n ], Beans.prototype, \"valueFormatterService\", void 0);\n __decorate$1M([\n Autowired('stylingService')\n ], Beans.prototype, \"stylingService\", void 0);\n __decorate$1M([\n Autowired('columnHoverService')\n ], Beans.prototype, \"columnHoverService\", void 0);\n __decorate$1M([\n Autowired('userComponentFactory')\n ], Beans.prototype, \"userComponentFactory\", void 0);\n __decorate$1M([\n Autowired('userComponentRegistry')\n ], Beans.prototype, \"userComponentRegistry\", void 0);\n __decorate$1M([\n Autowired('animationFrameService')\n ], Beans.prototype, \"animationFrameService\", void 0);\n __decorate$1M([\n Autowired('dragService')\n ], Beans.prototype, \"dragService\", void 0);\n __decorate$1M([\n Autowired('dragAndDropService')\n ], Beans.prototype, \"dragAndDropService\", void 0);\n __decorate$1M([\n Autowired('sortController')\n ], Beans.prototype, \"sortController\", void 0);\n __decorate$1M([\n Autowired('filterManager')\n ], Beans.prototype, \"filterManager\", void 0);\n __decorate$1M([\n Autowired('rowContainerHeightService')\n ], Beans.prototype, \"rowContainerHeightService\", void 0);\n __decorate$1M([\n Autowired('frameworkOverrides')\n ], Beans.prototype, \"frameworkOverrides\", void 0);\n __decorate$1M([\n Autowired('cellPositionUtils')\n ], Beans.prototype, \"cellPositionUtils\", void 0);\n __decorate$1M([\n Autowired('rowPositionUtils')\n ], Beans.prototype, \"rowPositionUtils\", void 0);\n __decorate$1M([\n Autowired('selectionService')\n ], Beans.prototype, \"selectionService\", void 0);\n __decorate$1M([\n Optional('selectionHandleFactory')\n ], Beans.prototype, \"selectionHandleFactory\", void 0);\n __decorate$1M([\n Autowired('rowCssClassCalculator')\n ], Beans.prototype, \"rowCssClassCalculator\", void 0);\n __decorate$1M([\n Autowired('rowModel')\n ], Beans.prototype, \"rowModel\", void 0);\n __decorate$1M([\n Autowired('ctrlsService')\n ], Beans.prototype, \"ctrlsService\", void 0);\n __decorate$1M([\n Autowired('ctrlsFactory')\n ], Beans.prototype, \"ctrlsFactory\", void 0);\n __decorate$1M([\n Autowired('agStackComponentsRegistry')\n ], Beans.prototype, \"agStackComponentsRegistry\", void 0);\n __decorate$1M([\n Autowired('valueCache')\n ], Beans.prototype, \"valueCache\", void 0);\n __decorate$1M([\n Autowired('rowNodeEventThrottle')\n ], Beans.prototype, \"rowNodeEventThrottle\", void 0);\n __decorate$1M([\n Autowired('localeService')\n ], Beans.prototype, \"localeService\", void 0);\n __decorate$1M([\n PostConstruct\n ], Beans.prototype, \"postConstruct\", null);\n Beans = __decorate$1M([\n Bean('beans')\n ], Beans);\n return Beans;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1S = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar CellMouseListenerFeature = /** @class */ (function (_super) {\n __extends$1S(CellMouseListenerFeature, _super);\n function CellMouseListenerFeature(ctrl, beans, column) {\n var _this = _super.call(this) || this;\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.column = column;\n return _this;\n }\n CellMouseListenerFeature.prototype.onMouseEvent = function (eventName, mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n switch (eventName) {\n case 'click':\n this.onCellClicked(mouseEvent);\n break;\n case 'mousedown':\n case 'touchstart':\n this.onMouseDown(mouseEvent);\n break;\n case 'dblclick':\n this.onCellDoubleClicked(mouseEvent);\n break;\n case 'mouseout':\n this.onMouseOut(mouseEvent);\n break;\n case 'mouseover':\n this.onMouseOver(mouseEvent);\n break;\n }\n };\n CellMouseListenerFeature.prototype.onCellClicked = function (mouseEvent) {\n // iPad doesn't have double click - so we need to mimic it to enable editing for iPad.\n if (this.isDoubleClickOnIPad()) {\n this.onCellDoubleClicked(mouseEvent);\n mouseEvent.preventDefault(); // if we don't do this, then iPad zooms in\n return;\n }\n var _a = this.beans, eventService = _a.eventService, rangeService = _a.rangeService, gridOptionsService = _a.gridOptionsService;\n var multiKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n if (rangeService && multiKeyPressed) {\n // the mousedown event has created the range already, so we only intersect if there is more than one\n // range on this cell\n if (rangeService.getCellRangeCount(this.cellCtrl.getCellPosition()) > 1) {\n rangeService.intersectLastRange(true);\n }\n }\n var cellClickedEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_CLICKED);\n eventService.dispatchEvent(cellClickedEvent);\n var colDef = this.column.getColDef();\n if (colDef.onCellClicked) {\n // to make callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellClicked(cellClickedEvent); }, 0);\n }\n var editOnSingleClick = (gridOptionsService.is('singleClickEdit') || colDef.singleClickEdit)\n && !gridOptionsService.is('suppressClickEdit');\n if (editOnSingleClick) {\n this.cellCtrl.startRowOrCellEdit();\n }\n };\n // returns true if on iPad and this is second 'click' event in 200ms\n CellMouseListenerFeature.prototype.isDoubleClickOnIPad = function () {\n if (!isIOSUserAgent() || isEventSupported('dblclick')) {\n return false;\n }\n var nowMillis = new Date().getTime();\n var res = nowMillis - this.lastIPadMouseClickEvent < 200;\n this.lastIPadMouseClickEvent = nowMillis;\n return res;\n };\n CellMouseListenerFeature.prototype.onCellDoubleClicked = function (mouseEvent) {\n var colDef = this.column.getColDef();\n // always dispatch event to eventService\n var cellDoubleClickedEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_DOUBLE_CLICKED);\n this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);\n // check if colDef also wants to handle event\n if (typeof colDef.onCellDoubleClicked === 'function') {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellDoubleClicked(cellDoubleClickedEvent); }, 0);\n }\n var editOnDoubleClick = !this.beans.gridOptionsService.is('singleClickEdit')\n && !this.beans.gridOptionsService.is('suppressClickEdit');\n if (editOnDoubleClick) {\n this.cellCtrl.startRowOrCellEdit(null, null, mouseEvent);\n }\n };\n CellMouseListenerFeature.prototype.onMouseDown = function (mouseEvent) {\n var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;\n var target = mouseEvent.target;\n var _a = this.beans, eventService = _a.eventService, rangeService = _a.rangeService;\n // do not change the range for right-clicks inside an existing range\n if (this.isRightClickInExistingRange(mouseEvent)) {\n return;\n }\n var ranges = rangeService && rangeService.getCellRanges().length != 0;\n if (!shiftKey || !ranges) {\n // We only need to pass true to focusCell when the browser is Safari and we are trying\n // to focus the cell itself. This should never be true if the mousedown was triggered\n // due to a click on a cell editor for example.\n var forceBrowserFocus = (isBrowserSafari()) && !this.cellCtrl.isEditing() && !isFocusableFormField(target);\n this.cellCtrl.focusCell(forceBrowserFocus);\n }\n // if shift clicking, and a range exists, we keep the focus on the cell that started the\n // range as the user then changes the range selection.\n if (shiftKey && ranges) {\n // this stops the cell from getting focused\n mouseEvent.preventDefault();\n }\n // if we are clicking on a checkbox, we need to make sure the cell wrapping that checkbox\n // is focused but we don't want to change the range selection, so return here.\n if (this.containsWidget(target)) {\n return;\n }\n if (rangeService) {\n var thisCell = this.cellCtrl.getCellPosition();\n if (shiftKey) {\n rangeService.extendLatestRangeToCell(thisCell);\n }\n else {\n var ctrlKeyPressed = ctrlKey || metaKey;\n rangeService.setRangeToCell(thisCell, ctrlKeyPressed);\n }\n }\n eventService.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_DOWN));\n };\n CellMouseListenerFeature.prototype.isRightClickInExistingRange = function (mouseEvent) {\n var rangeService = this.beans.rangeService;\n if (rangeService) {\n var cellInRange = rangeService.isCellInAnyRange(this.cellCtrl.getCellPosition());\n if (cellInRange && mouseEvent.button === 2) {\n return true;\n }\n }\n return false;\n };\n CellMouseListenerFeature.prototype.containsWidget = function (target) {\n return isElementChildOfClass(target, 'ag-selection-checkbox', 3);\n };\n CellMouseListenerFeature.prototype.onMouseOut = function (mouseEvent) {\n if (this.mouseStayingInsideCell(mouseEvent)) {\n return;\n }\n var cellMouseOutEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OUT);\n this.beans.eventService.dispatchEvent(cellMouseOutEvent);\n this.beans.columnHoverService.clearMouseOver();\n };\n CellMouseListenerFeature.prototype.onMouseOver = function (mouseEvent) {\n if (this.mouseStayingInsideCell(mouseEvent)) {\n return;\n }\n var cellMouseOverEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OVER);\n this.beans.eventService.dispatchEvent(cellMouseOverEvent);\n this.beans.columnHoverService.setMouseOver([this.column]);\n };\n CellMouseListenerFeature.prototype.mouseStayingInsideCell = function (e) {\n if (!e.target || !e.relatedTarget) {\n return false;\n }\n var eGui = this.cellCtrl.getGui();\n var cellContainsTarget = eGui.contains(e.target);\n var cellContainsRelatedTarget = eGui.contains(e.relatedTarget);\n return cellContainsTarget && cellContainsRelatedTarget;\n };\n CellMouseListenerFeature.prototype.destroy = function () {\n };\n return CellMouseListenerFeature;\n}(Beans));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1R = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar CellKeyboardListenerFeature = /** @class */ (function (_super) {\n __extends$1R(CellKeyboardListenerFeature, _super);\n function CellKeyboardListenerFeature(ctrl, beans, column, rowNode, rowCtrl) {\n var _this = _super.call(this) || this;\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.rowNode = rowNode;\n _this.rowCtrl = rowCtrl;\n return _this;\n }\n CellKeyboardListenerFeature.prototype.setComp = function (eGui) {\n this.eGui = eGui;\n };\n CellKeyboardListenerFeature.prototype.onKeyDown = function (event) {\n var key = event.key;\n switch (key) {\n case KeyCode.ENTER:\n this.onEnterKeyDown(event);\n break;\n case KeyCode.F2:\n this.onF2KeyDown(event);\n break;\n case KeyCode.ESCAPE:\n this.onEscapeKeyDown(event);\n break;\n case KeyCode.TAB:\n this.onTabKeyDown(event);\n break;\n case KeyCode.BACKSPACE:\n case KeyCode.DELETE:\n this.onBackspaceOrDeleteKeyPressed(key, event);\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n this.onNavigationKeyPressed(event, key);\n break;\n }\n };\n CellKeyboardListenerFeature.prototype.onNavigationKeyPressed = function (event, key) {\n if (this.cellCtrl.isEditing()) {\n return;\n }\n if (event.shiftKey && this.cellCtrl.isRangeSelectionEnabled()) {\n this.onShiftRangeSelect(event);\n }\n else {\n this.beans.navigationService.navigateToNextCell(event, key, this.cellCtrl.getCellPosition(), true);\n }\n // if we don't prevent default, the grid will scroll with the navigation keys\n event.preventDefault();\n };\n CellKeyboardListenerFeature.prototype.onShiftRangeSelect = function (event) {\n if (!this.beans.rangeService) {\n return;\n }\n var endCell = this.beans.rangeService.extendLatestRangeInDirection(event);\n if (endCell) {\n this.beans.navigationService.ensureCellVisible(endCell);\n }\n };\n CellKeyboardListenerFeature.prototype.onTabKeyDown = function (event) {\n this.beans.navigationService.onTabKeyDown(this.cellCtrl, event);\n };\n CellKeyboardListenerFeature.prototype.onBackspaceOrDeleteKeyPressed = function (key, event) {\n var _a = this, cellCtrl = _a.cellCtrl, beans = _a.beans, rowNode = _a.rowNode;\n var gridOptionsService = beans.gridOptionsService, rangeService = beans.rangeService, eventService = beans.eventService;\n if (cellCtrl.isEditing()) {\n return;\n }\n eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START });\n if (isDeleteKey(key, gridOptionsService.is('enableCellEditingOnBackspace'))) {\n if (rangeService && gridOptionsService.isEnableRangeSelection()) {\n rangeService.clearCellRangeCellValues();\n }\n else if (cellCtrl.isCellEditable()) {\n rowNode.setDataValue(cellCtrl.getColumn(), null, 'cellClear');\n }\n }\n else {\n cellCtrl.startRowOrCellEdit(key, undefined, event);\n }\n eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END });\n };\n CellKeyboardListenerFeature.prototype.onEnterKeyDown = function (e) {\n if (this.cellCtrl.isEditing() || this.rowCtrl.isEditing()) {\n this.cellCtrl.stopEditingAndFocus();\n }\n else {\n if (this.beans.gridOptionsService.is('enterMovesDown')) {\n this.beans.navigationService.navigateToNextCell(null, KeyCode.DOWN, this.cellCtrl.getCellPosition(), false);\n }\n else {\n this.cellCtrl.startRowOrCellEdit(KeyCode.ENTER, undefined, e);\n if (this.cellCtrl.isEditing()) {\n // if we started editing, then we need to prevent default, otherwise the Enter action can get\n // applied to the cell editor. this happened, for example, with largeTextCellEditor where not\n // preventing default results in a 'new line' character getting inserted in the text area\n // when the editing was started\n e.preventDefault();\n }\n }\n }\n };\n CellKeyboardListenerFeature.prototype.onF2KeyDown = function (event) {\n if (!this.cellCtrl.isEditing()) {\n this.cellCtrl.startRowOrCellEdit(KeyCode.F2, undefined, event);\n }\n };\n CellKeyboardListenerFeature.prototype.onEscapeKeyDown = function (event) {\n if (this.cellCtrl.isEditing()) {\n this.cellCtrl.stopRowOrCellEdit(true);\n this.cellCtrl.focusCell(true);\n }\n };\n CellKeyboardListenerFeature.prototype.onKeyPress = function (event) {\n // check this, in case focus is on a (for example) a text field inside the cell,\n // in which cse we should not be listening for these key pressed\n var eventTarget = event.target;\n var eventOnChildComponent = eventTarget !== this.eGui;\n if (eventOnChildComponent || this.cellCtrl.isEditing()) {\n return;\n }\n var pressedChar = String.fromCharCode(event.charCode);\n if (pressedChar === ' ') {\n this.onSpaceKeyPressed(event);\n }\n else if (isEventFromPrintableCharacter(event)) {\n this.cellCtrl.startRowOrCellEdit(null, pressedChar, event);\n // if we don't prevent default, then the keypress also gets applied to the text field\n // (at least when doing the default editor), but we need to allow the editor to decide\n // what it wants to do. we only do this IF editing was started - otherwise it messes\n // up when the use is not doing editing, but using rendering with text fields in cellRenderer\n // (as it would block the the user from typing into text fields).\n event.preventDefault();\n }\n };\n CellKeyboardListenerFeature.prototype.onSpaceKeyPressed = function (event) {\n var gridOptionsService = this.beans.gridOptionsService;\n if (!this.cellCtrl.isEditing() && gridOptionsService.isRowSelection()) {\n var currentSelection = this.rowNode.isSelected();\n var newSelection = !currentSelection;\n if (newSelection || !gridOptionsService.is('suppressRowDeselection')) {\n var groupSelectsFiltered = this.beans.gridOptionsService.is('groupSelectsFiltered');\n var updatedCount = this.rowNode.setSelectedParams({\n newValue: newSelection,\n rangeSelect: event.shiftKey,\n groupSelectsFiltered: groupSelectsFiltered,\n event: event,\n source: 'spacePressed'\n });\n if (currentSelection === undefined && updatedCount === 0) {\n this.rowNode.setSelectedParams({\n newValue: false,\n rangeSelect: event.shiftKey,\n groupSelectsFiltered: groupSelectsFiltered,\n event: event,\n source: 'spacePressed'\n });\n }\n }\n }\n // prevent default as space key, by default, moves browser scroll down\n event.preventDefault();\n };\n CellKeyboardListenerFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return CellKeyboardListenerFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1Q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DndSourceComp = /** @class */ (function (_super) {\n __extends$1Q(DndSourceComp, _super);\n function DndSourceComp(rowNode, column, beans, eCell) {\n var _this = _super.call(this, \"<div class=\\\"ag-drag-handle ag-row-drag\\\" draggable=\\\"true\\\"></div>\") || this;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.beans = beans;\n _this.eCell = eCell;\n return _this;\n }\n DndSourceComp.prototype.postConstruct = function () {\n var eGui = this.getGui();\n eGui.appendChild(createIconNoSpan('rowDrag', this.beans.gridOptionsService, null));\n // we need to stop the event propagation here to avoid starting a range selection while dragging\n this.addGuiEventListener('mousedown', function (e) {\n e.stopPropagation();\n });\n this.addDragSource();\n this.checkVisibility();\n };\n DndSourceComp.prototype.addDragSource = function () {\n this.addGuiEventListener('dragstart', this.onDragStart.bind(this));\n };\n DndSourceComp.prototype.onDragStart = function (dragEvent) {\n var _this = this;\n var providedOnRowDrag = this.column.getColDef().dndSourceOnRowDrag;\n dragEvent.dataTransfer.setDragImage(this.eCell, 0, 0);\n // default behaviour is to convert data to json and set into drag component\n var defaultOnRowDrag = function () {\n try {\n var jsonData = JSON.stringify(_this.rowNode.data);\n dragEvent.dataTransfer.setData('application/json', jsonData);\n dragEvent.dataTransfer.setData('text/plain', jsonData);\n }\n catch (e) {\n // if we cannot convert the data to json, then we do not set the type\n }\n };\n if (providedOnRowDrag) {\n var params = {\n rowNode: this.rowNode, dragEvent: dragEvent,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n providedOnRowDrag(params);\n }\n else {\n defaultOnRowDrag();\n }\n };\n DndSourceComp.prototype.checkVisibility = function () {\n var visible = this.column.isDndSource(this.rowNode);\n this.setDisplayed(visible);\n };\n __decorate$1L([\n PostConstruct\n ], DndSourceComp.prototype, \"postConstruct\", null);\n return DndSourceComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1P = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$8 = (undefined && undefined.__assign) || function () {\n __assign$8 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$8.apply(this, arguments);\n};\nvar CSS_CELL = 'ag-cell';\nvar CSS_AUTO_HEIGHT = 'ag-cell-auto-height';\nvar CSS_NORMAL_HEIGHT = 'ag-cell-normal-height';\nvar CSS_CELL_FOCUS = 'ag-cell-focus';\nvar CSS_CELL_FIRST_RIGHT_PINNED = 'ag-cell-first-right-pinned';\nvar CSS_CELL_LAST_LEFT_PINNED = 'ag-cell-last-left-pinned';\nvar CSS_CELL_NOT_INLINE_EDITING = 'ag-cell-not-inline-editing';\nvar CSS_COLUMN_HOVER = 'ag-column-hover';\nvar CSS_CELL_WRAP_TEXT = 'ag-cell-wrap-text';\nvar instanceIdSequence$3 = 0;\nvar CellCtrl = /** @class */ (function (_super) {\n __extends$1P(CellCtrl, _super);\n function CellCtrl(column, rowNode, beans, rowCtrl) {\n var _this = _super.call(this) || this;\n _this.cellRangeFeature = null;\n _this.cellPositionFeature = null;\n _this.cellCustomStyleFeature = null;\n _this.tooltipFeature = null;\n _this.cellMouseListenerFeature = null;\n _this.cellKeyboardListenerFeature = null;\n _this.suppressRefreshCell = false;\n _this.onCellCompAttachedFuncs = [];\n _this.column = column;\n _this.rowNode = rowNode;\n _this.beans = beans;\n _this.rowCtrl = rowCtrl;\n // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'\n _this.instanceId = column.getId() + '-' + instanceIdSequence$3++;\n _this.createCellPosition();\n _this.addFeatures();\n return _this;\n }\n CellCtrl.prototype.addFeatures = function () {\n var _this = this;\n this.cellPositionFeature = new CellPositionFeature(this, this.beans);\n this.addDestroyFunc(function () { var _a; (_a = _this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.cellPositionFeature = null; });\n this.cellCustomStyleFeature = new CellCustomStyleFeature(this, this.beans);\n this.addDestroyFunc(function () { var _a; (_a = _this.cellCustomStyleFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.cellCustomStyleFeature = null; });\n this.cellMouseListenerFeature = new CellMouseListenerFeature(this, this.beans, this.column);\n this.addDestroyFunc(function () { var _a; (_a = _this.cellMouseListenerFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.cellMouseListenerFeature = null; });\n this.cellKeyboardListenerFeature = new CellKeyboardListenerFeature(this, this.beans, this.column, this.rowNode, this.rowCtrl);\n this.addDestroyFunc(function () { var _a; (_a = _this.cellKeyboardListenerFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.cellKeyboardListenerFeature = null; });\n var rangeSelectionEnabled = this.beans.rangeService && this.beans.gridOptionsService.isEnableRangeSelection();\n if (rangeSelectionEnabled) {\n this.cellRangeFeature = new CellRangeFeature(this.beans, this);\n this.addDestroyFunc(function () { var _a; (_a = _this.cellRangeFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.cellRangeFeature = null; });\n }\n if (this.column.isTooltipEnabled()) {\n this.addTooltipFeature();\n }\n };\n CellCtrl.prototype.addTooltipFeature = function () {\n var _this = this;\n var getTooltipValue = function () {\n var colDef = _this.column.getColDef();\n var data = _this.rowNode.data;\n if (colDef.tooltipField && exists(data)) {\n return getValueUsingField(data, colDef.tooltipField, _this.column.isTooltipFieldContainsDots());\n }\n var valueGetter = colDef.tooltipValueGetter;\n if (valueGetter) {\n return valueGetter({\n location: 'cell',\n api: _this.beans.gridOptionsService.api,\n columnApi: _this.beans.gridOptionsService.columnApi,\n context: _this.beans.gridOptionsService.context,\n colDef: _this.column.getColDef(),\n column: _this.column,\n rowIndex: _this.cellPosition.rowIndex,\n node: _this.rowNode,\n data: _this.rowNode.data,\n value: _this.value,\n valueFormatted: _this.valueFormatted,\n });\n }\n return null;\n };\n var tooltipCtrl = {\n getColumn: function () { return _this.column; },\n getColDef: function () { return _this.column.getColDef(); },\n getRowIndex: function () { return _this.cellPosition.rowIndex; },\n getRowNode: function () { return _this.rowNode; },\n getGui: function () { return _this.getGui(); },\n getLocation: function () { return 'cell'; },\n getTooltipValue: getTooltipValue,\n // this makes no sense, why is the cell formatted value passed to the tooltip???\n getValueFormatted: function () { return _this.valueFormatted; }\n };\n this.tooltipFeature = new TooltipFeature(tooltipCtrl, this.beans);\n this.addDestroyFunc(function () { var _a; (_a = _this.tooltipFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.tooltipFeature = null; });\n };\n CellCtrl.prototype.setComp = function (comp, eGui, eCellWrapper, printLayout, startEditing) {\n var _a, _b, _c, _d;\n this.cellComp = comp;\n this.eGui = eGui;\n this.printLayout = printLayout;\n // we force to make sure formatter gets called at least once,\n // even if value has not changed (is is undefined)\n this.updateAndFormatValue(true);\n this.addDomData();\n this.onCellFocused();\n this.applyStaticCssClasses();\n this.setWrapText();\n this.onFirstRightPinnedChanged();\n this.onLastLeftPinnedChanged();\n this.onColumnHover();\n this.setupControlComps();\n if (eCellWrapper) {\n this.setupAutoHeight(eCellWrapper);\n }\n this.setAriaColIndex();\n if (!this.beans.gridOptionsService.is('suppressCellFocus')) {\n this.cellComp.setTabIndex(-1);\n }\n var colIdSanitised = escapeString(this.column.getId());\n this.cellComp.setColId(colIdSanitised);\n this.cellComp.setRole('gridcell');\n (_a = this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.setComp(eGui);\n (_b = this.cellCustomStyleFeature) === null || _b === void 0 ? void 0 : _b.setComp(comp);\n (_c = this.tooltipFeature) === null || _c === void 0 ? void 0 : _c.setComp(comp);\n (_d = this.cellKeyboardListenerFeature) === null || _d === void 0 ? void 0 : _d.setComp(this.eGui);\n if (this.cellRangeFeature) {\n this.cellRangeFeature.setComp(comp, eGui);\n }\n if (startEditing && this.isCellEditable()) {\n this.startEditing();\n }\n else {\n this.showValue();\n }\n if (this.onCellCompAttachedFuncs.length) {\n this.onCellCompAttachedFuncs.forEach(function (func) { return func(); });\n this.onCellCompAttachedFuncs = [];\n }\n };\n CellCtrl.prototype.setupAutoHeight = function (eCellWrapper) {\n var _this = this;\n if (!this.column.isAutoHeight()) {\n return;\n }\n var eParentCell = eCellWrapper.parentElement;\n // taking minRowHeight from getRowHeightForNode means the getRowHeight() callback is used,\n // thus allowing different min heights for different rows.\n var minRowHeight = this.beans.gridOptionsService.getRowHeightForNode(this.rowNode).height;\n var measureHeight = function (timesCalled) {\n if (_this.editing) {\n return;\n }\n // because of the retry's below, it's possible the retry's go beyond\n // the rows life.\n if (!_this.isAlive()) {\n return;\n }\n var _a = getElementSize(eParentCell), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom, borderBottomWidth = _a.borderBottomWidth, borderTopWidth = _a.borderTopWidth;\n var extraHeight = paddingTop + paddingBottom + borderBottomWidth + borderTopWidth;\n var wrapperHeight = eCellWrapper.offsetHeight;\n var autoHeight = wrapperHeight + extraHeight;\n if (timesCalled < 5) {\n // if not in doc yet, means framework not yet inserted, so wait for next VM turn,\n // maybe it will be ready next VM turn\n var doc = _this.beans.gridOptionsService.getDocument();\n var notYetInDom = !doc || !doc.contains(eCellWrapper);\n // this happens in React, where React hasn't put any content in. we say 'possibly'\n // as a) may not be React and b) the cell could be empty anyway\n var possiblyNoContentYet = autoHeight == 0;\n if (notYetInDom || possiblyNoContentYet) {\n _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(timesCalled + 1); }, 0);\n return;\n }\n }\n var newHeight = Math.max(autoHeight, minRowHeight);\n _this.rowNode.setRowAutoHeight(newHeight, _this.column);\n };\n var listener = function () { return measureHeight(0); };\n // do once to set size in case size doesn't change, common when cell is blank\n listener();\n var destroyResizeObserver = this.beans.resizeObserverService.observeResize(eCellWrapper, listener);\n this.addDestroyFunc(function () {\n destroyResizeObserver();\n _this.rowNode.setRowAutoHeight(undefined, _this.column);\n });\n };\n CellCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n CellCtrl.prototype.showValue = function (forceNewCellRendererInstance) {\n if (forceNewCellRendererInstance === void 0) { forceNewCellRendererInstance = false; }\n var valueToDisplay = this.valueFormatted != null ? this.valueFormatted : this.value;\n var params = this.createCellRendererParams();\n var compDetails = this.beans.userComponentFactory.getCellRendererDetails(this.column.getColDef(), params);\n this.cellComp.setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance);\n this.refreshHandle();\n };\n CellCtrl.prototype.setupControlComps = function () {\n var colDef = this.column.getColDef();\n this.includeSelection = this.isIncludeControl(colDef.checkboxSelection);\n this.includeRowDrag = this.isIncludeControl(colDef.rowDrag);\n this.includeDndSource = this.isIncludeControl(colDef.dndSource);\n this.cellComp.setIncludeSelection(this.includeSelection);\n this.cellComp.setIncludeDndSource(this.includeDndSource);\n this.cellComp.setIncludeRowDrag(this.includeRowDrag);\n };\n CellCtrl.prototype.isForceWrapper = function () {\n // text selection requires the value to be wrapped in another element\n var forceWrapper = this.beans.gridOptionsService.is('enableCellTextSelection') || this.column.isAutoHeight();\n return forceWrapper;\n };\n CellCtrl.prototype.isIncludeControl = function (value) {\n var rowNodePinned = this.rowNode.rowPinned != null;\n var isFunc = typeof value === 'function';\n var res = rowNodePinned ? false : isFunc || value === true;\n return res;\n };\n CellCtrl.prototype.refreshShouldDestroy = function () {\n var colDef = this.column.getColDef();\n var selectionChanged = this.includeSelection != this.isIncludeControl(colDef.checkboxSelection);\n var rowDragChanged = this.includeRowDrag != this.isIncludeControl(colDef.rowDrag);\n var dndSourceChanged = this.includeDndSource != this.isIncludeControl(colDef.dndSource);\n return selectionChanged || rowDragChanged || dndSourceChanged;\n };\n // either called internally if single cell editing, or called by rowRenderer if row editing\n CellCtrl.prototype.startEditing = function (key, charPress, cellStartedEdit, event) {\n var _this = this;\n if (key === void 0) { key = null; }\n if (charPress === void 0) { charPress = null; }\n if (cellStartedEdit === void 0) { cellStartedEdit = false; }\n if (event === void 0) { event = null; }\n if (!this.isCellEditable() || this.editing) {\n return;\n }\n // because of async in React, the cellComp may not be set yet, if no cellComp then we are\n // yet to initialise the cell, so we re-schedule this operation for when celLComp is attached\n if (!this.cellComp) {\n this.onCellCompAttachedFuncs.push(function () { _this.startEditing(key, charPress, cellStartedEdit, event); });\n return;\n }\n var editorParams = this.createCellEditorParams(key, charPress, cellStartedEdit);\n var colDef = this.column.getColDef();\n var compDetails = this.beans.userComponentFactory.getCellEditorDetails(colDef, editorParams);\n // if cellEditorSelector was used, we give preference to popup and popupPosition from the selector\n var popup = (compDetails === null || compDetails === void 0 ? void 0 : compDetails.popupFromSelector) != null ? compDetails.popupFromSelector : !!colDef.cellEditorPopup;\n var position = (compDetails === null || compDetails === void 0 ? void 0 : compDetails.popupPositionFromSelector) != null ? compDetails.popupPositionFromSelector : colDef.cellEditorPopupPosition;\n this.setEditing(true);\n this.cellComp.setEditDetails(compDetails, popup, position);\n var e = this.createEvent(event, Events.EVENT_CELL_EDITING_STARTED);\n this.beans.eventService.dispatchEvent(e);\n };\n CellCtrl.prototype.setEditing = function (editing) {\n if (this.editing === editing) {\n return;\n }\n this.editing = editing;\n this.refreshHandle();\n };\n // pass in 'true' to cancel the editing.\n CellCtrl.prototype.stopRowOrCellEdit = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (this.beans.gridOptionsService.get('editType') === 'fullRow') {\n this.rowCtrl.stopRowEditing(cancel);\n }\n else {\n this.stopEditing(cancel);\n }\n };\n CellCtrl.prototype.onPopupEditorClosed = function () {\n if (!this.isEditing()) {\n return;\n }\n // note: this happens because of a click outside of the grid or if the popupEditor\n // is closed with `Escape` key. if another cell was clicked, then the editing will\n // have already stopped and returned on the conditional above.\n this.stopEditingAndFocus();\n };\n CellCtrl.prototype.takeValueFromCellEditor = function (cancel) {\n var noValueResult = { newValueExists: false };\n if (cancel) {\n return noValueResult;\n }\n var cellEditor = this.cellComp.getCellEditor();\n if (!cellEditor) {\n return noValueResult;\n }\n var userWantsToCancel = cellEditor.isCancelAfterEnd && cellEditor.isCancelAfterEnd();\n if (userWantsToCancel) {\n return noValueResult;\n }\n var newValue = cellEditor.getValue();\n return {\n newValue: newValue,\n newValueExists: true\n };\n };\n /**\n * @returns `True` if the value changes, otherwise `False`.\n */\n CellCtrl.prototype.saveNewValue = function (oldValue, newValue) {\n if (newValue === oldValue) {\n return false;\n }\n // we suppressRefreshCell because the call to rowNode.setDataValue() results in change detection\n // getting triggered, which results in all cells getting refreshed. we do not want this refresh\n // to happen on this call as we want to call it explicitly below. otherwise refresh gets called twice.\n // if we only did this refresh (and not the one below) then the cell would flash and not be forced.\n this.suppressRefreshCell = true;\n var valueChanged = this.rowNode.setDataValue(this.column, newValue, 'edit');\n this.suppressRefreshCell = false;\n return valueChanged;\n };\n /**\n * Ends the Cell Editing\n * @param cancel `True` if the edit process is being canceled.\n * @returns `True` if the value of the `GridCell` has been updated, otherwise `False`.\n */\n CellCtrl.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (!this.editing) {\n return false;\n }\n var _a = this.takeValueFromCellEditor(cancel), newValue = _a.newValue, newValueExists = _a.newValueExists;\n var oldValue = this.rowNode.getValueFromValueService(this.column);\n var valueChanged = false;\n if (newValueExists) {\n valueChanged = this.saveNewValue(oldValue, newValue);\n }\n this.setEditing(false);\n this.cellComp.setEditDetails(); // passing nothing stops editing\n this.updateAndFormatValue();\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n this.dispatchEditingStoppedEvent(oldValue, newValue, !cancel && !!valueChanged);\n return valueChanged;\n };\n CellCtrl.prototype.dispatchEditingStoppedEvent = function (oldValue, newValue, valueChanged) {\n var editingStoppedEvent = __assign$8(__assign$8({}, this.createEvent(null, Events.EVENT_CELL_EDITING_STOPPED)), { oldValue: oldValue,\n newValue: newValue,\n valueChanged: valueChanged });\n this.beans.eventService.dispatchEvent(editingStoppedEvent);\n };\n CellCtrl.prototype.createCellEditorParams = function (key, charPress, cellStartedEdit) {\n return {\n value: this.rowNode.getValueFromValueService(this.column),\n eventKey: key,\n charPress: charPress,\n column: this.column,\n colDef: this.column.getColDef(),\n rowIndex: this.getCellPosition().rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n api: this.beans.gridOptionsService.api,\n cellStartedEdit: cellStartedEdit,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context,\n onKeyDown: this.onKeyDown.bind(this),\n stopEditing: this.stopEditingAndFocus.bind(this),\n eGridCell: this.getGui(),\n parseValue: this.parseValue.bind(this),\n formatValue: this.formatValue.bind(this)\n };\n };\n CellCtrl.prototype.createCellRendererParams = function () {\n var _this = this;\n var res = {\n value: this.value,\n valueFormatted: this.valueFormatted,\n getValue: function () { return _this.rowNode.getValueFromValueService(_this.column); },\n setValue: function (value) { return _this.beans.valueService.setValue(_this.rowNode, _this.column, value); },\n formatValue: this.formatValue.bind(this),\n data: this.rowNode.data,\n node: this.rowNode,\n pinned: this.column.getPinned(),\n colDef: this.column.getColDef(),\n column: this.column,\n rowIndex: this.getCellPosition().rowIndex,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context,\n refreshCell: this.refreshCell.bind(this),\n eGridCell: this.getGui(),\n eParentOfValue: this.cellComp.getParentOfValue(),\n registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.registerRowDragger(rowDraggerElement, dragStartPixels, suppressVisibilityChange); },\n };\n return res;\n };\n CellCtrl.prototype.parseValue = function (newValue) {\n var colDef = this.column.getColDef();\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n oldValue: this.getValue(),\n newValue: newValue,\n colDef: colDef,\n column: this.column,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context\n };\n var valueParser = colDef.valueParser;\n if (exists(valueParser)) {\n if (typeof valueParser === 'function') {\n return valueParser(params);\n }\n return this.beans.expressionService.evaluate(valueParser, params);\n }\n return newValue;\n };\n CellCtrl.prototype.setFocusOutOnEditor = function () {\n if (!this.editing) {\n return;\n }\n var cellEditor = this.cellComp.getCellEditor();\n if (cellEditor && cellEditor.focusOut) {\n cellEditor.focusOut();\n }\n };\n CellCtrl.prototype.setFocusInOnEditor = function () {\n if (!this.editing) {\n return;\n }\n var cellEditor = this.cellComp.getCellEditor();\n if (cellEditor && cellEditor.focusIn) {\n // if the editor is present, then we just focus it\n cellEditor.focusIn();\n }\n else {\n // if the editor is not present, it means async cell editor (eg React fibre)\n // and we are trying to set focus before the cell editor is present, so we\n // focus the cell instead\n this.focusCell(true);\n }\n };\n CellCtrl.prototype.onCellChanged = function (event) {\n // because of async in React, the cellComp may not be set yet, if no cellComp then we are\n // yet to initialise the cell, so no need to refresh.\n if (!this.cellComp) {\n return;\n }\n var eventImpactsThisCell = event.column === this.column;\n if (eventImpactsThisCell) {\n this.refreshCell({});\n }\n };\n // + stop editing {forceRefresh: true, suppressFlash: true}\n // + event cellChanged {}\n // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n // + rowCtrl: event dataChanged {suppressFlash: !update, newData: !update}\n // + rowCtrl: api refreshCells() {animate: true/false}\n // + rowRenderer: api softRefreshView() {}\n CellCtrl.prototype.refreshCell = function (params) {\n var _a, _b, _c;\n // if we are in the middle of 'stopEditing', then we don't refresh here, as refresh gets called explicitly\n if (this.suppressRefreshCell || this.editing) {\n return;\n }\n // In React, due to async, it's possible a refresh was asked for before the CellComp\n // has been set. If this happens, we skip the refresh, as the cell is going to be\n // initialised anyway once the CellComp is set.\n if (!this.cellComp) {\n return;\n }\n var colDef = this.column.getColDef();\n var newData = params != null && !!params.newData;\n var suppressFlash = (params != null && !!params.suppressFlash) || !!colDef.suppressCellFlash;\n // we always refresh if cell has no value - this can happen when user provides Cell Renderer and the\n // cell renderer doesn't rely on a value, instead it could be looking directly at the data, or maybe\n // printing the current time (which would be silly)???. Generally speaking\n // non of {field, valueGetter, showRowGroup} is bad in the users application, however for this edge case, it's\n // best always refresh and take the performance hit rather than never refresh and users complaining in support\n // that cells are not updating.\n var noValueProvided = colDef.field == null && colDef.valueGetter == null && colDef.showRowGroup == null;\n var forceRefresh = (params && params.forceRefresh) || noValueProvided || newData;\n var valuesDifferent = this.updateAndFormatValue();\n var dataNeedsUpdating = forceRefresh || valuesDifferent;\n if (dataNeedsUpdating) {\n // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.\n // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')\n // then we are not showing a movement in the stock price, rather we are showing different stock.\n this.showValue(newData);\n // we don't want to flash the cells when processing a filter change, as otherwise the UI would\n // be to busy. see comment in FilterManager with regards processingFilterChange\n var processingFilterChange = this.beans.filterManager.isSuppressFlashingCellsBecauseFiltering();\n var flashCell = !suppressFlash && !processingFilterChange &&\n (this.beans.gridOptionsService.is('enableCellChangeFlash') || colDef.enableCellChangeFlash);\n if (flashCell) {\n this.flashCell();\n }\n (_a = this.cellCustomStyleFeature) === null || _a === void 0 ? void 0 : _a.applyUserStyles();\n (_b = this.cellCustomStyleFeature) === null || _b === void 0 ? void 0 : _b.applyClassesFromColDef();\n }\n this.refreshToolTip();\n // we do cellClassRules even if the value has not changed, so that users who have rules that\n // look at other parts of the row (where the other part of the row might of changed) will work.\n (_c = this.cellCustomStyleFeature) === null || _c === void 0 ? void 0 : _c.applyCellClassRules();\n };\n // cell editors call this, when they want to stop for reasons other\n // than what we pick up on. eg selecting from a dropdown ends editing.\n CellCtrl.prototype.stopEditingAndFocus = function (suppressNavigateAfterEdit) {\n if (suppressNavigateAfterEdit === void 0) { suppressNavigateAfterEdit = false; }\n this.stopRowOrCellEdit();\n this.focusCell(true);\n if (!suppressNavigateAfterEdit) {\n this.navigateAfterEdit();\n }\n };\n CellCtrl.prototype.navigateAfterEdit = function () {\n var fullRowEdit = this.beans.gridOptionsService.get('editType') === 'fullRow';\n if (fullRowEdit) {\n return;\n }\n var enterMovesDownAfterEdit = this.beans.gridOptionsService.is('enterMovesDownAfterEdit');\n if (enterMovesDownAfterEdit) {\n this.beans.navigationService.navigateToNextCell(null, KeyCode.DOWN, this.getCellPosition(), false);\n }\n };\n // user can also call this via API\n CellCtrl.prototype.flashCell = function (delays) {\n var flashDelay = delays && delays.flashDelay;\n var fadeDelay = delays && delays.fadeDelay;\n this.animateCell('data-changed', flashDelay, fadeDelay);\n };\n CellCtrl.prototype.animateCell = function (cssName, flashDelay, fadeDelay) {\n var _this = this;\n var _a, _b;\n var fullName = \"ag-cell-\" + cssName;\n var animationFullName = \"ag-cell-\" + cssName + \"-animation\";\n var gridOptionsService = this.beans.gridOptionsService;\n if (!flashDelay) {\n flashDelay = (_a = gridOptionsService.getNum('cellFlashDelay')) !== null && _a !== void 0 ? _a : 500;\n }\n if (!exists(fadeDelay)) {\n fadeDelay = (_b = gridOptionsService.getNum('cellFadeDelay')) !== null && _b !== void 0 ? _b : 1000;\n }\n // we want to highlight the cells, without any animation\n this.cellComp.addOrRemoveCssClass(fullName, true);\n this.cellComp.addOrRemoveCssClass(animationFullName, false);\n // then once that is applied, we remove the highlight with animation\n window.setTimeout(function () {\n if (!_this.isAlive()) {\n return;\n }\n _this.cellComp.addOrRemoveCssClass(fullName, false);\n _this.cellComp.addOrRemoveCssClass(animationFullName, true);\n _this.eGui.style.transition = \"background-color \" + fadeDelay + \"ms\";\n window.setTimeout(function () {\n if (!_this.isAlive()) {\n return;\n }\n // and then to leave things as we got them, we remove the animation\n _this.cellComp.addOrRemoveCssClass(animationFullName, false);\n _this.eGui.style.transition = '';\n }, fadeDelay);\n }, flashDelay);\n };\n CellCtrl.prototype.onFlashCells = function (event) {\n if (!this.cellComp) {\n return;\n }\n var cellId = this.beans.cellPositionUtils.createId(this.getCellPosition());\n var shouldFlash = event.cells[cellId];\n if (shouldFlash) {\n this.animateCell('highlight');\n }\n };\n CellCtrl.prototype.isCellEditable = function () {\n return this.column.isCellEditable(this.rowNode);\n };\n CellCtrl.prototype.isSuppressFillHandle = function () {\n return this.column.isSuppressFillHandle();\n };\n CellCtrl.prototype.formatValue = function (value) {\n var res = this.callValueFormatter(value);\n return res != null ? res : value;\n };\n CellCtrl.prototype.callValueFormatter = function (value) {\n return this.beans.valueFormatterService.formatValue(this.column, this.rowNode, value);\n };\n CellCtrl.prototype.updateAndFormatValue = function (force) {\n if (force === void 0) { force = false; }\n var oldValue = this.value;\n var oldValueFormatted = this.valueFormatted;\n this.value = this.rowNode.getValueFromValueService(this.column);\n this.valueFormatted = this.callValueFormatter(this.value);\n var valuesDifferent = force ? true :\n !this.valuesAreEqual(oldValue, this.value) || this.valueFormatted != oldValueFormatted;\n return valuesDifferent;\n };\n CellCtrl.prototype.valuesAreEqual = function (val1, val2) {\n // if the user provided an equals method, use that, otherwise do simple comparison\n var colDef = this.column.getColDef();\n return colDef.equals ? colDef.equals(val1, val2) : val1 === val2;\n };\n CellCtrl.prototype.getComp = function () {\n return this.cellComp;\n };\n CellCtrl.prototype.getValue = function () {\n return this.value;\n };\n CellCtrl.prototype.getValueFormatted = function () {\n return this.valueFormatted;\n };\n CellCtrl.prototype.addDomData = function () {\n var _this = this;\n var element = this.getGui();\n this.beans.gridOptionsService.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, this);\n this.addDestroyFunc(function () { return _this.beans.gridOptionsService.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, null); });\n };\n CellCtrl.prototype.createEvent = function (domEvent, eventType) {\n var event = {\n type: eventType,\n node: this.rowNode,\n data: this.rowNode.data,\n value: this.value,\n column: this.column,\n colDef: this.column.getColDef(),\n context: this.beans.gridOptionsService.context,\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n rowPinned: this.rowNode.rowPinned,\n event: domEvent,\n rowIndex: this.rowNode.rowIndex\n };\n return event;\n };\n CellCtrl.prototype.onKeyPress = function (event) {\n var _a;\n (_a = this.cellKeyboardListenerFeature) === null || _a === void 0 ? void 0 : _a.onKeyPress(event);\n };\n CellCtrl.prototype.onKeyDown = function (event) {\n var _a;\n (_a = this.cellKeyboardListenerFeature) === null || _a === void 0 ? void 0 : _a.onKeyDown(event);\n };\n CellCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {\n var _a;\n (_a = this.cellMouseListenerFeature) === null || _a === void 0 ? void 0 : _a.onMouseEvent(eventName, mouseEvent);\n };\n CellCtrl.prototype.getGui = function () {\n return this.eGui;\n };\n CellCtrl.prototype.refreshToolTip = function () {\n var _a;\n (_a = this.tooltipFeature) === null || _a === void 0 ? void 0 : _a.refreshToolTip();\n };\n CellCtrl.prototype.getColSpanningList = function () {\n return this.cellPositionFeature.getColSpanningList();\n };\n CellCtrl.prototype.onLeftChanged = function () {\n var _a;\n if (!this.cellComp) {\n return;\n }\n (_a = this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.onLeftChanged();\n };\n CellCtrl.prototype.onDisplayedColumnsChanged = function () {\n if (!this.eGui) {\n return;\n }\n this.setAriaColIndex();\n };\n CellCtrl.prototype.setAriaColIndex = function () {\n var colIdx = this.beans.columnModel.getAriaColumnIndex(this.column);\n setAriaColIndex(this.getGui(), colIdx); // for react, we don't use JSX, as it slowed down column moving\n };\n CellCtrl.prototype.isSuppressNavigable = function () {\n return this.column.isSuppressNavigable(this.rowNode);\n };\n CellCtrl.prototype.onWidthChanged = function () {\n var _a;\n return (_a = this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.onWidthChanged();\n };\n CellCtrl.prototype.getColumn = function () {\n return this.column;\n };\n CellCtrl.prototype.getRowNode = function () {\n return this.rowNode;\n };\n CellCtrl.prototype.getBeans = function () {\n return this.beans;\n };\n CellCtrl.prototype.isPrintLayout = function () {\n return this.printLayout;\n };\n CellCtrl.prototype.appendChild = function (htmlElement) {\n this.eGui.appendChild(htmlElement);\n };\n CellCtrl.prototype.refreshHandle = function () {\n if (this.cellRangeFeature) {\n this.cellRangeFeature.refreshHandle();\n }\n };\n CellCtrl.prototype.getCellPosition = function () {\n return this.cellPosition;\n };\n CellCtrl.prototype.isEditing = function () {\n return this.editing;\n };\n // called by rowRenderer when user navigates via tab key\n CellCtrl.prototype.startRowOrCellEdit = function (key, charPress, event) {\n if (event === void 0) { event = null; }\n if (!this.cellComp) {\n return;\n }\n if (this.beans.gridOptionsService.get('editType') === 'fullRow') {\n this.rowCtrl.startRowEditing(key, charPress, this);\n }\n else {\n this.startEditing(key, charPress, true, event);\n }\n };\n CellCtrl.prototype.getRowCtrl = function () {\n return this.rowCtrl;\n };\n CellCtrl.prototype.getRowPosition = function () {\n return {\n rowIndex: this.cellPosition.rowIndex,\n rowPinned: this.cellPosition.rowPinned\n };\n };\n CellCtrl.prototype.updateRangeBordersIfRangeCount = function () {\n if (!this.cellComp) {\n return;\n }\n if (this.cellRangeFeature) {\n this.cellRangeFeature.updateRangeBordersIfRangeCount();\n }\n };\n CellCtrl.prototype.onRangeSelectionChanged = function () {\n if (!this.cellComp) {\n return;\n }\n if (this.cellRangeFeature) {\n this.cellRangeFeature.onRangeSelectionChanged();\n }\n };\n CellCtrl.prototype.isRangeSelectionEnabled = function () {\n return this.cellRangeFeature != null;\n };\n CellCtrl.prototype.focusCell = function (forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n this.beans.focusService.setFocusedCell({\n rowIndex: this.getCellPosition().rowIndex,\n column: this.column,\n rowPinned: this.rowNode.rowPinned,\n forceBrowserFocus: forceBrowserFocus\n });\n };\n CellCtrl.prototype.onRowIndexChanged = function () {\n // when index changes, this influences items that need the index, so we update the\n // grid cell so they are working off the new index.\n this.createCellPosition();\n // when the index of the row changes, ie means the cell may have lost or gained focus\n this.onCellFocused();\n // check range selection\n if (this.cellRangeFeature) {\n this.cellRangeFeature.onRangeSelectionChanged();\n }\n };\n CellCtrl.prototype.onFirstRightPinnedChanged = function () {\n if (!this.cellComp) {\n return;\n }\n var firstRightPinned = this.column.isFirstRightPinned();\n this.cellComp.addOrRemoveCssClass(CSS_CELL_FIRST_RIGHT_PINNED, firstRightPinned);\n };\n CellCtrl.prototype.onLastLeftPinnedChanged = function () {\n if (!this.cellComp) {\n return;\n }\n var lastLeftPinned = this.column.isLastLeftPinned();\n this.cellComp.addOrRemoveCssClass(CSS_CELL_LAST_LEFT_PINNED, lastLeftPinned);\n };\n CellCtrl.prototype.onCellFocused = function (event) {\n if (!this.cellComp || this.beans.gridOptionsService.is('suppressCellFocus')) {\n return;\n }\n var cellFocused = this.beans.focusService.isCellFocused(this.cellPosition);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_FOCUS, cellFocused);\n // see if we need to force browser focus - this can happen if focus is programmatically set\n if (cellFocused && event && event.forceBrowserFocus) {\n var focusEl = this.cellComp.getFocusableElement();\n focusEl.focus({ preventScroll: !!event.preventScrollOnBrowserFocus });\n }\n // if another cell was focused, and we are editing, then stop editing\n var fullRowEdit = this.beans.gridOptionsService.get('editType') === 'fullRow';\n if (!cellFocused && !fullRowEdit && this.editing) {\n this.stopRowOrCellEdit();\n }\n };\n CellCtrl.prototype.createCellPosition = function () {\n this.cellPosition = {\n rowIndex: this.rowNode.rowIndex,\n rowPinned: makeNull(this.rowNode.rowPinned),\n column: this.column\n };\n };\n // CSS Classes that only get applied once, they never change\n CellCtrl.prototype.applyStaticCssClasses = function () {\n this.cellComp.addOrRemoveCssClass(CSS_CELL, true);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, true);\n // normal cells fill the height of the row. autoHeight cells have no height to let them\n // fit the height of content.\n var autoHeight = this.column.isAutoHeight() == true;\n this.cellComp.addOrRemoveCssClass(CSS_AUTO_HEIGHT, autoHeight);\n this.cellComp.addOrRemoveCssClass(CSS_NORMAL_HEIGHT, !autoHeight);\n };\n CellCtrl.prototype.onColumnHover = function () {\n if (!this.cellComp) {\n return;\n }\n if (!this.beans.gridOptionsService.is('columnHoverHighlight')) {\n return;\n }\n var isHovered = this.beans.columnHoverService.isHovered(this.column);\n this.cellComp.addOrRemoveCssClass(CSS_COLUMN_HOVER, isHovered);\n };\n CellCtrl.prototype.onColDefChanged = function () {\n if (!this.cellComp) {\n return;\n }\n this.setWrapText();\n if (!this.editing) {\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n }\n };\n CellCtrl.prototype.setWrapText = function () {\n var value = this.column.getColDef().wrapText == true;\n this.cellComp.addOrRemoveCssClass(CSS_CELL_WRAP_TEXT, value);\n };\n CellCtrl.prototype.dispatchCellContextMenuEvent = function (event) {\n var colDef = this.column.getColDef();\n var cellContextMenuEvent = this.createEvent(event, Events.EVENT_CELL_CONTEXT_MENU);\n this.beans.eventService.dispatchEvent(cellContextMenuEvent);\n if (colDef.onCellContextMenu) {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellContextMenu(cellContextMenuEvent); }, 0);\n }\n };\n CellCtrl.prototype.getCellRenderer = function () {\n return this.cellComp ? this.cellComp.getCellRenderer() : null;\n };\n CellCtrl.prototype.getCellEditor = function () {\n return this.cellComp ? this.cellComp.getCellEditor() : null;\n };\n CellCtrl.prototype.destroy = function () {\n this.onCellCompAttachedFuncs = [];\n _super.prototype.destroy.call(this);\n };\n CellCtrl.prototype.createSelectionCheckbox = function () {\n var cbSelectionComponent = new CheckboxSelectionComponent();\n this.beans.context.createBean(cbSelectionComponent);\n cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column });\n // put the checkbox in before the value\n return cbSelectionComponent;\n };\n CellCtrl.prototype.createDndSource = function () {\n var dndSourceComp = new DndSourceComp(this.rowNode, this.column, this.beans, this.eGui);\n this.beans.context.createBean(dndSourceComp);\n return dndSourceComp;\n };\n CellCtrl.prototype.registerRowDragger = function (customElement, dragStartPixels, suppressVisibilityChange) {\n var _this = this;\n // if previously existed, then we are only updating\n if (this.customRowDragComp) {\n this.customRowDragComp.setDragElement(customElement, dragStartPixels);\n return;\n }\n var newComp = this.createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange);\n if (newComp) {\n this.customRowDragComp = newComp;\n this.addDestroyFunc(function () { _this.beans.context.destroyBean(newComp); _this.customRowDragComp = null; });\n }\n };\n CellCtrl.prototype.createRowDragComp = function (customElement, dragStartPixels, suppressVisibilityChange) {\n var _this = this;\n var pagination = this.beans.gridOptionsService.is('pagination');\n var rowDragManaged = this.beans.gridOptionsService.is('rowDragManaged');\n var clientSideRowModelActive = this.beans.gridOptionsService.isRowModelType('clientSide');\n if (rowDragManaged) {\n // row dragging only available in default row model\n if (!clientSideRowModelActive) {\n doOnce(function () { return console.warn('AG Grid: managed row dragging is only allowed in the Client Side Row Model'); }, 'CellComp.addRowDragging');\n return;\n }\n if (pagination) {\n doOnce(function () { return console.warn('AG Grid: managed row dragging is not possible when doing pagination'); }, 'CellComp.addRowDragging');\n return;\n }\n }\n // otherwise (normal case) we are creating a RowDraggingComp for the first time\n var rowDragComp = new RowDragComp(function () { return _this.value; }, this.rowNode, this.column, customElement, dragStartPixels, suppressVisibilityChange);\n this.beans.context.createBean(rowDragComp);\n return rowDragComp;\n };\n CellCtrl.DOM_DATA_KEY_CELL_CTRL = 'cellCtrl';\n return CellCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1O = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values$3 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$k = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$g = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$k(arguments[i]));\n return ar;\n};\nvar RowType$1;\n(function (RowType) {\n RowType[\"Normal\"] = \"Normal\";\n RowType[\"FullWidth\"] = \"FullWidth\";\n RowType[\"FullWidthLoading\"] = \"FullWidthLoading\";\n RowType[\"FullWidthGroup\"] = \"FullWidthGroup\";\n RowType[\"FullWidthDetail\"] = \"FullWidthDetail\";\n})(RowType$1 || (RowType$1 = {}));\nvar instanceIdSequence$2 = 0;\nvar RowCtrl = /** @class */ (function (_super) {\n __extends$1O(RowCtrl, _super);\n function RowCtrl(rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout) {\n var _this = _super.call(this) || this;\n _this.allRowGuis = [];\n _this.active = true;\n _this.centerCellCtrls = { list: [], map: {} };\n _this.leftCellCtrls = { list: [], map: {} };\n _this.rightCellCtrls = { list: [], map: {} };\n _this.slideInAnimation = {\n left: false,\n center: false,\n right: false,\n fullWidth: false\n };\n _this.fadeInAnimation = {\n left: false,\n center: false,\n right: false,\n fullWidth: false\n };\n _this.lastMouseDownOnDragger = false;\n _this.updateColumnListsPending = false;\n _this.businessKeySanitised = null;\n _this.beans = beans;\n _this.rowNode = rowNode;\n _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();\n _this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n _this.printLayout = printLayout;\n _this.instanceId = rowNode.id + '-' + instanceIdSequence$2++;\n _this.setAnimateFlags(animateIn);\n _this.initRowBusinessKey();\n _this.rowFocused = _this.beans.focusService.isRowFocused(_this.rowNode.rowIndex, _this.rowNode.rowPinned);\n _this.rowLevel = _this.beans.rowCssClassCalculator.calculateRowLevel(_this.rowNode);\n _this.setRowType();\n _this.addListeners();\n return _this;\n }\n RowCtrl.prototype.initRowBusinessKey = function () {\n var businessKeyForNodeFunc = this.beans.gridOptionsService.get('getBusinessKeyForNode');\n if (typeof businessKeyForNodeFunc !== 'function') {\n return;\n }\n var businessKey = businessKeyForNodeFunc(this.rowNode);\n this.businessKeySanitised = escapeString(businessKey);\n };\n RowCtrl.prototype.isSticky = function () {\n return this.rowNode.sticky;\n };\n RowCtrl.prototype.getBeans = function () {\n return this.beans;\n };\n RowCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n RowCtrl.prototype.setComp = function (rowComp, element, containerType) {\n var gui = { rowComp: rowComp, element: element, containerType: containerType };\n this.allRowGuis.push(gui);\n if (containerType === RowContainerType.LEFT) {\n this.leftGui = gui;\n }\n else if (containerType === RowContainerType.RIGHT) {\n this.rightGui = gui;\n }\n else if (containerType === RowContainerType.FULL_WIDTH) {\n this.fullWidthGui = gui;\n }\n else {\n this.centerGui = gui;\n }\n this.initialiseRowComp(gui);\n // pinned rows render before the main grid body in the SSRM, only fire the event after the main body has rendered.\n if (this.rowType !== 'FullWidthLoading' && !this.rowNode.rowPinned) {\n // this is fired within setComp as we know that the component renderer is now trying to render.\n // linked with the fact the function implementation queues behind requestAnimationFrame should allow\n // us to be certain that all rendering is done by the time the event fires.\n this.beans.rowRenderer.dispatchFirstDataRenderedEvent();\n }\n };\n RowCtrl.prototype.unsetComp = function (containerType) {\n this.allRowGuis = this.allRowGuis\n .filter(function (rowGui) { return rowGui.containerType !== containerType; });\n if (containerType === RowContainerType.LEFT) {\n this.leftGui = undefined;\n }\n else if (containerType === RowContainerType.RIGHT) {\n this.rightGui = undefined;\n }\n else if (containerType === RowContainerType.FULL_WIDTH) {\n this.fullWidthGui = undefined;\n }\n };\n RowCtrl.prototype.isCacheable = function () {\n return this.rowType === RowType$1.FullWidthDetail\n && this.beans.gridOptionsService.is('keepDetailRows');\n };\n RowCtrl.prototype.setCached = function (cached) {\n var displayValue = cached ? 'none' : '';\n this.allRowGuis.forEach(function (rg) { return rg.element.style.display = displayValue; });\n };\n RowCtrl.prototype.initialiseRowComp = function (gui) {\n var _this = this;\n var gos = this.beans.gridOptionsService;\n this.onRowHeightChanged(gui);\n this.updateRowIndexes(gui);\n this.setFocusedClasses(gui);\n this.setStylesFromGridOptions(gui);\n if (gos.isRowSelection() && this.rowNode.selectable) {\n this.onRowSelected(gui);\n }\n this.updateColumnLists(!this.useAnimationFrameForCreate);\n var comp = gui.rowComp;\n comp.setRole('row');\n var initialRowClasses = this.getInitialRowClasses(gui.containerType);\n initialRowClasses.forEach(function (name) { return comp.addOrRemoveCssClass(name, true); });\n this.executeSlideAndFadeAnimations(gui);\n if (this.rowNode.group) {\n setAriaExpanded(gui.element, this.rowNode.expanded == true);\n }\n var rowIdSanitised = escapeString(this.rowNode.id);\n if (rowIdSanitised != null) {\n comp.setRowId(rowIdSanitised);\n }\n if (this.businessKeySanitised != null) {\n comp.setRowBusinessKey(this.businessKeySanitised);\n }\n if (this.isFullWidth() && !this.beans.gridOptionsService.is('suppressCellFocus')) {\n comp.setTabIndex(-1);\n }\n // DOM DATA\n gos.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, this);\n this.addDestroyFunc(function () { return gos.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, null); });\n // adding hover functionality adds listener to this row, so we\n // do it lazily in an animation frame\n if (this.useAnimationFrameForCreate) {\n this.beans.animationFrameService.createTask(this.addHoverFunctionality.bind(this, gui.element), this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n this.addHoverFunctionality(gui.element);\n }\n if (this.isFullWidth()) {\n this.setupFullWidth(gui);\n }\n if (gos.is('rowDragEntireRow')) {\n this.addRowDraggerToRow(gui);\n }\n if (this.useAnimationFrameForCreate) {\n // the height animation we only want active after the row is alive for 1 second.\n // this stops the row animation working when rows are initially created. otherwise\n // auto-height rows get inserted into the dom and resized immediately, which gives\n // very bad UX (eg 10 rows get inserted, then all 10 expand, look particularly bad\n // when scrolling). so this makes sure when rows are shown for the first time, they\n // are resized immediately without animation.\n this.beans.animationFrameService.addDestroyTask(function () {\n if (!_this.isAlive()) {\n return;\n }\n gui.rowComp.addOrRemoveCssClass('ag-after-created', true);\n });\n }\n this.executeProcessRowPostCreateFunc();\n };\n RowCtrl.prototype.executeSlideAndFadeAnimations = function (gui) {\n var _this = this;\n var containerType = gui.containerType;\n var shouldSlide = this.slideInAnimation[containerType];\n if (shouldSlide) {\n executeNextVMTurn(function () {\n _this.onTopChanged();\n });\n this.slideInAnimation[containerType] = false;\n }\n var shouldFade = this.fadeInAnimation[containerType];\n if (shouldFade) {\n executeNextVMTurn(function () {\n gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', false);\n });\n this.fadeInAnimation[containerType] = false;\n }\n };\n RowCtrl.prototype.addRowDraggerToRow = function (gui) {\n if (this.beans.gridOptionsService.isEnableRangeSelection()) {\n doOnce(function () {\n console.warn('AG Grid: Setting `rowDragEntireRow: true` in the gridOptions doesn\\'t work with `enableRangeSelection: true`');\n }, 'rowDragAndRangeSelectionEnabled');\n return;\n }\n var translate = this.beans.localeService.getLocaleTextFunc();\n var rowDragComp = new RowDragComp(function () { return \"1 \" + translate('rowDragRow', 'row'); }, this.rowNode, undefined, gui.element, undefined, true);\n this.createManagedBean(rowDragComp, this.beans.context);\n };\n RowCtrl.prototype.setupFullWidth = function (gui) {\n var pinned = this.getPinnedForContainer(gui.containerType);\n var params = this.createFullWidthParams(gui.element, pinned);\n if (this.rowType == RowType$1.FullWidthDetail) {\n if (!ModuleRegistry.assertRegistered(ModuleNames.MasterDetailModule, \"cell renderer 'agDetailCellRenderer' (for master detail)\")) {\n return;\n }\n }\n var compDetails;\n switch (this.rowType) {\n case RowType$1.FullWidthDetail:\n compDetails = this.beans.userComponentFactory.getFullWidthDetailCellRendererDetails(params);\n break;\n case RowType$1.FullWidthGroup:\n compDetails = this.beans.userComponentFactory.getFullWidthGroupCellRendererDetails(params);\n break;\n case RowType$1.FullWidthLoading:\n compDetails = this.beans.userComponentFactory.getFullWidthLoadingCellRendererDetails(params);\n break;\n default:\n compDetails = this.beans.userComponentFactory.getFullWidthCellRendererDetails(params);\n break;\n }\n gui.rowComp.showFullWidth(compDetails);\n };\n RowCtrl.prototype.isPrintLayout = function () {\n return this.printLayout;\n };\n RowCtrl.prototype.getFullWidthCellRenderer = function () {\n var _a, _b;\n return (_b = (_a = this.fullWidthGui) === null || _a === void 0 ? void 0 : _a.rowComp) === null || _b === void 0 ? void 0 : _b.getFullWidthCellRenderer();\n };\n // use by autoWidthCalculator, as it clones the elements\n RowCtrl.prototype.getCellElement = function (column) {\n var cellCtrl = this.getCellCtrl(column);\n return cellCtrl ? cellCtrl.getGui() : null;\n };\n RowCtrl.prototype.executeProcessRowPostCreateFunc = function () {\n var _a;\n var func = this.beans.gridOptionsService.getCallback('processRowPostCreate');\n if (!func || !this.areAllContainersReady()) {\n return;\n }\n var params = {\n eRow: (_a = this.centerGui) === null || _a === void 0 ? void 0 : _a.element,\n ePinnedLeftRow: this.leftGui ? this.leftGui.element : undefined,\n ePinnedRightRow: this.rightGui ? this.rightGui.element : undefined,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n addRenderedRowListener: this.addEventListener.bind(this),\n };\n func(params);\n };\n RowCtrl.prototype.areAllContainersReady = function () {\n var isLeftReady = !!this.leftGui || !this.beans.columnModel.isPinningLeft();\n var isCenterReady = !!this.centerGui;\n var isRightReady = !!this.rightGui || !this.beans.columnModel.isPinningRight();\n return isLeftReady && isCenterReady && isRightReady;\n };\n RowCtrl.prototype.setRowType = function () {\n var isStub = this.rowNode.stub;\n var isFullWidthCell = this.rowNode.isFullWidthCell();\n var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;\n var pivotMode = this.beans.columnModel.isPivotMode();\n // we only use full width for groups, not footers. it wouldn't make sense to include footers if not looking\n // for totals. if users complain about this, then we should introduce a new property 'footerUseEntireRow'\n // so each can be set independently (as a customer complained about footers getting full width, hence\n // introducing this logic)\n var isGroupRow = !!this.rowNode.group && !this.rowNode.footer;\n var isFullWidthGroup = isGroupRow && this.beans.gridOptionsService.isGroupUseEntireRow(pivotMode);\n if (isStub) {\n this.rowType = RowType$1.FullWidthLoading;\n }\n else if (isDetailCell) {\n this.rowType = RowType$1.FullWidthDetail;\n }\n else if (isFullWidthCell) {\n this.rowType = RowType$1.FullWidth;\n }\n else if (isFullWidthGroup) {\n this.rowType = RowType$1.FullWidthGroup;\n }\n else {\n this.rowType = RowType$1.Normal;\n }\n };\n RowCtrl.prototype.updateColumnLists = function (suppressAnimationFrame, useFlushSync) {\n var _this = this;\n if (suppressAnimationFrame === void 0) { suppressAnimationFrame = false; }\n if (useFlushSync === void 0) { useFlushSync = false; }\n if (this.isFullWidth()) {\n return;\n }\n var noAnimation = suppressAnimationFrame\n || this.beans.gridOptionsService.is('suppressAnimationFrame')\n || this.printLayout;\n if (noAnimation) {\n this.updateColumnListsImpl(useFlushSync);\n return;\n }\n if (this.updateColumnListsPending) {\n return;\n }\n this.beans.animationFrameService.createTask(function () {\n if (!_this.active) {\n return;\n }\n _this.updateColumnListsImpl(true);\n }, this.rowNode.rowIndex, 'createTasksP1');\n this.updateColumnListsPending = true;\n };\n RowCtrl.prototype.createCellCtrls = function (prev, cols, pinned) {\n var _this = this;\n if (pinned === void 0) { pinned = null; }\n var res = {\n list: [],\n map: {}\n };\n var addCell = function (colInstanceId, cellCtrl) {\n res.list.push(cellCtrl);\n res.map[colInstanceId] = cellCtrl;\n };\n cols.forEach(function (col) {\n // we use instanceId's rather than colId as it's possible there is a Column with same Id,\n // but it's referring to a different column instance. Happens a lot with pivot, as pivot col id's are\n // reused eg pivot_0, pivot_1 etc\n var colInstanceId = col.getInstanceId();\n var cellCtrl = prev.map[colInstanceId];\n if (!cellCtrl) {\n cellCtrl = new CellCtrl(col, _this.rowNode, _this.beans, _this);\n }\n addCell(colInstanceId, cellCtrl);\n });\n prev.list.forEach(function (prevCellCtrl) {\n var cellInResult = res.map[prevCellCtrl.getColumn().getInstanceId()] != null;\n if (cellInResult) {\n return;\n }\n var keepCell = !_this.isCellEligibleToBeRemoved(prevCellCtrl, pinned);\n if (keepCell) {\n addCell(prevCellCtrl.getColumn().getInstanceId(), prevCellCtrl);\n return;\n }\n prevCellCtrl.destroy();\n });\n return res;\n };\n RowCtrl.prototype.updateColumnListsImpl = function (useFlushSync) {\n var _this = this;\n if (useFlushSync === void 0) { useFlushSync = false; }\n this.updateColumnListsPending = false;\n var columnModel = this.beans.columnModel;\n if (this.printLayout) {\n this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, columnModel.getAllDisplayedColumns());\n this.leftCellCtrls = { list: [], map: {} };\n this.rightCellCtrls = { list: [], map: {} };\n }\n else {\n var centerCols = columnModel.getViewportCenterColumnsForRow(this.rowNode);\n this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, centerCols);\n var leftCols = columnModel.getDisplayedLeftColumnsForRow(this.rowNode);\n this.leftCellCtrls = this.createCellCtrls(this.leftCellCtrls, leftCols, 'left');\n var rightCols = columnModel.getDisplayedRightColumnsForRow(this.rowNode);\n this.rightCellCtrls = this.createCellCtrls(this.rightCellCtrls, rightCols, 'right');\n }\n this.allRowGuis.forEach(function (item) {\n var cellControls = item.containerType === RowContainerType.LEFT ? _this.leftCellCtrls :\n item.containerType === RowContainerType.RIGHT ? _this.rightCellCtrls : _this.centerCellCtrls;\n item.rowComp.setCellCtrls(cellControls.list, useFlushSync);\n });\n };\n RowCtrl.prototype.isCellEligibleToBeRemoved = function (cellCtrl, nextContainerPinned) {\n var REMOVE_CELL = true;\n var KEEP_CELL = false;\n // always remove the cell if it's not rendered or if it's in the wrong pinned location\n var column = cellCtrl.getColumn();\n if (column.getPinned() != nextContainerPinned) {\n return REMOVE_CELL;\n }\n // we want to try and keep editing and focused cells\n var editing = cellCtrl.isEditing();\n var focused = this.beans.focusService.isCellFocused(cellCtrl.getCellPosition());\n var mightWantToKeepCell = editing || focused;\n if (mightWantToKeepCell) {\n var column_1 = cellCtrl.getColumn();\n var displayedColumns = this.beans.columnModel.getAllDisplayedColumns();\n var cellStillDisplayed = displayedColumns.indexOf(column_1) >= 0;\n return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n }\n return REMOVE_CELL;\n };\n RowCtrl.prototype.setAnimateFlags = function (animateIn) {\n if (this.isSticky() || !animateIn) {\n return;\n }\n var oldRowTopExists = exists(this.rowNode.oldRowTop);\n var pinningLeft = this.beans.columnModel.isPinningLeft();\n var pinningRight = this.beans.columnModel.isPinningRight();\n if (oldRowTopExists) {\n // if the row had a previous position, we slide it in\n this.slideInAnimation.center = true;\n this.slideInAnimation.left = pinningLeft;\n this.slideInAnimation.right = pinningRight;\n }\n else {\n // if the row had no previous position, we fade it in\n this.fadeInAnimation.center = true;\n this.fadeInAnimation.left = pinningLeft;\n this.fadeInAnimation.right = pinningRight;\n }\n };\n RowCtrl.prototype.isEditing = function () {\n return this.editingRow;\n };\n RowCtrl.prototype.stopRowEditing = function (cancel) {\n this.stopEditing(cancel);\n };\n RowCtrl.prototype.isFullWidth = function () {\n return this.rowType !== RowType$1.Normal;\n };\n RowCtrl.prototype.getRowType = function () {\n return this.rowType;\n };\n RowCtrl.prototype.refreshFullWidth = function () {\n var _this = this;\n // returns 'true' if refresh succeeded\n var tryRefresh = function (gui, pinned) {\n if (!gui) {\n return true;\n } // no refresh needed\n var cellRenderer = gui.rowComp.getFullWidthCellRenderer();\n // no cell renderer, either means comp not yet ready, or comp ready but now reference\n // to it (happens in react when comp is stateless). if comp not ready, we don't need to\n // refresh, however we don't know which one, so we refresh to cover the case where it's\n // react comp without reference so need to force a refresh\n if (!cellRenderer) {\n return false;\n }\n // no refresh method present, so can't refresh, hard refresh needed\n if (!cellRenderer.refresh) {\n return false;\n }\n var params = _this.createFullWidthParams(gui.element, pinned);\n var refreshSucceeded = cellRenderer.refresh(params);\n return refreshSucceeded;\n };\n var fullWidthSuccess = tryRefresh(this.fullWidthGui, null);\n var centerSuccess = tryRefresh(this.centerGui, null);\n var leftSuccess = tryRefresh(this.leftGui, 'left');\n var rightSuccess = tryRefresh(this.rightGui, 'right');\n var allFullWidthRowsRefreshed = fullWidthSuccess && centerSuccess && leftSuccess && rightSuccess;\n return allFullWidthRowsRefreshed;\n };\n RowCtrl.prototype.addListeners = function () {\n var _this = this;\n this.addManagedListener(this.rowNode, RowNode.EVENT_HEIGHT_CHANGED, function () { return _this.onRowHeightChanged(); });\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, function () { return _this.onRowSelected(); });\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_TOP_CHANGED, this.onTopChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_EXPANDED_CHANGED, this.updateExpandedCss.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_HAS_CHILDREN_CHANGED, this.updateExpandedCss.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_HIGHLIGHT_CHANGED, this.onRowNodeHighlightChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_UI_LEVEL_CHANGED, this.onUiLevelChanged.bind(this));\n var eventService = this.beans.eventService;\n this.addManagedListener(eventService, Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED, this.onPaginationPixelOffsetChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_CELL_FOCUSED, this.onCellFocused.bind(this));\n this.addManagedListener(eventService, Events.EVENT_CELL_FOCUS_CLEARED, this.onCellFocusCleared.bind(this));\n this.addManagedListener(eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addManagedListener(eventService, Events.EVENT_COLUMN_MOVED, this.onColumnMoved.bind(this));\n this.addListenersForCellComps();\n };\n RowCtrl.prototype.onColumnMoved = function () {\n this.updateColumnLists();\n };\n RowCtrl.prototype.addListenersForCellComps = function () {\n var _this = this;\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRowIndexChanged(); });\n });\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, function (event) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellChanged(event); });\n });\n };\n RowCtrl.prototype.onRowNodeDataChanged = function (event) {\n // if master row has updated, then need to also try to refresh the detail node\n if (this.rowNode.detailNode) {\n this.beans.rowRenderer.refreshFullWidthRow(this.rowNode.detailNode);\n }\n if (this.isFullWidth()) {\n this.beans.rowRenderer.refreshFullWidthRow(this.rowNode);\n return;\n }\n // if this is an update, we want to refresh, as this will allow the user to put in a transition\n // into the cellRenderer refresh method. otherwise this might be completely new data, in which case\n // we will want to completely replace the cells\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n return cellCtrl.refreshCell({\n suppressFlash: !event.update,\n newData: !event.update\n });\n });\n // check for selected also, as this could be after lazy loading of the row data, in which case\n // the id might of just gotten set inside the row and the row selected state may of changed\n // as a result. this is what happens when selected rows are loaded in virtual pagination.\n // - niall note - since moving to the stub component, this may no longer be true, as replacing\n // the stub component now replaces the entire row\n this.onRowSelected();\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowCtrl.prototype.onRowNodeCellChanged = function () {\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowCtrl.prototype.postProcessCss = function () {\n this.setStylesFromGridOptions();\n this.postProcessClassesFromGridOptions();\n this.postProcessRowClassRules();\n this.postProcessRowDragging();\n };\n RowCtrl.prototype.onRowNodeHighlightChanged = function () {\n var highlighted = this.rowNode.highlighted;\n this.allRowGuis.forEach(function (gui) {\n var aboveOn = highlighted === RowHighlightPosition.Above;\n var belowOn = highlighted === RowHighlightPosition.Below;\n gui.rowComp.addOrRemoveCssClass('ag-row-highlight-above', aboveOn);\n gui.rowComp.addOrRemoveCssClass('ag-row-highlight-below', belowOn);\n });\n };\n RowCtrl.prototype.onRowNodeDraggingChanged = function () {\n this.postProcessRowDragging();\n };\n RowCtrl.prototype.postProcessRowDragging = function () {\n var dragging = this.rowNode.dragging;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-dragging', dragging); });\n };\n RowCtrl.prototype.updateExpandedCss = function () {\n var expandable = this.rowNode.isExpandable();\n var expanded = this.rowNode.expanded == true;\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass('ag-row-group', expandable);\n gui.rowComp.addOrRemoveCssClass('ag-row-group-expanded', expandable && expanded);\n gui.rowComp.addOrRemoveCssClass('ag-row-group-contracted', expandable && !expanded);\n setAriaExpanded(gui.element, expandable && expanded);\n });\n };\n RowCtrl.prototype.onDisplayedColumnsChanged = function () {\n // we skip animations for onDisplayedColumnChanged, as otherwise the client could remove columns and\n // then set data, and any old valueGetter's (ie from cols that were removed) would still get called.\n this.updateColumnLists(true);\n if (this.beans.columnModel.wasAutoRowHeightEverActive()) {\n this.rowNode.checkAutoHeights();\n }\n };\n RowCtrl.prototype.onVirtualColumnsChanged = function () {\n this.updateColumnLists(false, true);\n };\n RowCtrl.prototype.getRowPosition = function () {\n return {\n rowPinned: makeNull(this.rowNode.rowPinned),\n rowIndex: this.rowNode.rowIndex\n };\n };\n RowCtrl.prototype.onKeyboardNavigate = function (keyboardEvent) {\n var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });\n var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n if (!isFullWidthContainerFocused) {\n return;\n }\n var node = this.rowNode;\n var lastFocusedCell = this.beans.focusService.getFocusedCell();\n var cellPosition = {\n rowIndex: node.rowIndex,\n rowPinned: node.rowPinned,\n column: (lastFocusedCell && lastFocusedCell.column)\n };\n this.beans.navigationService.navigateToNextCell(keyboardEvent, keyboardEvent.key, cellPosition, true);\n keyboardEvent.preventDefault();\n };\n RowCtrl.prototype.onTabKeyDown = function (keyboardEvent) {\n if (keyboardEvent.defaultPrevented || isStopPropagationForAgGrid(keyboardEvent)) {\n return;\n }\n var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });\n var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n var nextEl = null;\n if (!isFullWidthContainerFocused) {\n nextEl = this.beans.focusService.findNextFocusableElement(currentFullWidthContainer, false, keyboardEvent.shiftKey);\n }\n if ((this.isFullWidth() && isFullWidthContainerFocused) || !nextEl) {\n this.beans.navigationService.onTabKeyDown(this, keyboardEvent);\n }\n };\n RowCtrl.prototype.onFullWidthRowFocused = function (event) {\n var _a;\n var node = this.rowNode;\n var isFocused = !event ? false : this.isFullWidth() && event.rowIndex === node.rowIndex && event.rowPinned == node.rowPinned;\n var element = this.fullWidthGui ? this.fullWidthGui.element : (_a = this.centerGui) === null || _a === void 0 ? void 0 : _a.element;\n if (!element) {\n return;\n } // can happen with react ui, comp not yet ready\n element.classList.toggle('ag-full-width-focus', isFocused);\n if (isFocused) {\n // we don't scroll normal rows into view when we focus them, so we don't want\n // to scroll Full Width rows either.\n element.focus({ preventScroll: true });\n }\n };\n RowCtrl.prototype.refreshCell = function (cellCtrl) {\n this.centerCellCtrls = this.removeCellCtrl(this.centerCellCtrls, cellCtrl);\n this.leftCellCtrls = this.removeCellCtrl(this.leftCellCtrls, cellCtrl);\n this.rightCellCtrls = this.removeCellCtrl(this.rightCellCtrls, cellCtrl);\n this.updateColumnLists();\n };\n RowCtrl.prototype.removeCellCtrl = function (prev, cellCtrlToRemove) {\n var res = {\n list: [],\n map: {}\n };\n prev.list.forEach(function (cellCtrl) {\n if (cellCtrl === cellCtrlToRemove) {\n return;\n }\n res.list.push(cellCtrl);\n res.map[cellCtrl.getInstanceId()] = cellCtrl;\n });\n return res;\n };\n RowCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {\n switch (eventName) {\n case 'dblclick':\n this.onRowDblClick(mouseEvent);\n break;\n case 'click':\n this.onRowClick(mouseEvent);\n break;\n case 'touchstart':\n case 'mousedown':\n this.onRowMouseDown(mouseEvent);\n break;\n }\n };\n RowCtrl.prototype.createRowEvent = function (type, domEvent) {\n return {\n type: type,\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n context: this.beans.gridOptionsService.context,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n event: domEvent\n };\n };\n RowCtrl.prototype.createRowEventWithSource = function (type, domEvent) {\n var event = this.createRowEvent(type, domEvent);\n // when first developing this, we included the rowComp in the event.\n // this seems very weird. so when introducing the event types, i left the 'source'\n // out of the type, and just include the source in the two places where this event\n // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any\n // users to be using this, as the rowComp isn't an object we expose, so would be\n // very surprising if a user was using it.\n event.source = this;\n return event;\n };\n RowCtrl.prototype.onRowDblClick = function (mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n };\n RowCtrl.prototype.onRowMouseDown = function (mouseEvent) {\n this.lastMouseDownOnDragger = isElementChildOfClass(mouseEvent.target, 'ag-row-drag', 3);\n if (!this.isFullWidth()) {\n return;\n }\n var node = this.rowNode;\n var columnModel = this.beans.columnModel;\n if (this.beans.rangeService) {\n this.beans.rangeService.removeAllCellRanges();\n }\n this.beans.focusService.setFocusedCell({\n rowIndex: node.rowIndex,\n column: columnModel.getAllDisplayedColumns()[0],\n rowPinned: node.rowPinned,\n forceBrowserFocus: true\n });\n };\n RowCtrl.prototype.onRowClick = function (mouseEvent) {\n var stop = isStopPropagationForAgGrid(mouseEvent) || this.lastMouseDownOnDragger;\n if (stop) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n // ctrlKey for windows, metaKey for Apple\n var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n var shiftKeyPressed = mouseEvent.shiftKey;\n // we do not allow selecting the group by clicking, when groupSelectChildren, as the logic to\n // handle this is broken. to observe, change the logic below and allow groups to be selected.\n // you will see the group gets selected, then all children get selected, then the grid unselects\n // the children (as the default behaviour when clicking is to unselect other rows) which results\n // in the group getting unselected (as all children are unselected). the correct thing would be\n // to change this, so that children of the selected group are not then subsequenly un-selected.\n var groupSelectsChildren = this.beans.gridOptionsService.is('groupSelectsChildren');\n if (\n // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,\n // so return if it's a group row\n (groupSelectsChildren && this.rowNode.group) ||\n // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,\n // and we click it, the selection should not change (ie any currently selected row should stay selected)\n !this.rowNode.selectable ||\n // we also don't allow selection of pinned rows\n this.rowNode.rowPinned ||\n // if no selection method enabled, do nothing\n !this.beans.gridOptionsService.isRowSelection() ||\n // if click selection suppressed, do nothing\n this.beans.gridOptionsService.is('suppressRowClickSelection')) {\n return;\n }\n var multiSelectOnClick = this.beans.gridOptionsService.is('rowMultiSelectWithClick');\n var rowDeselectionWithCtrl = !this.beans.gridOptionsService.is('suppressRowDeselection');\n var source = 'rowClicked';\n if (this.rowNode.isSelected()) {\n if (multiSelectOnClick) {\n this.rowNode.setSelectedParams({ newValue: false, event: mouseEvent, source: source });\n }\n else if (multiSelectKeyPressed) {\n if (rowDeselectionWithCtrl) {\n this.rowNode.setSelectedParams({ newValue: false, event: mouseEvent, source: source });\n }\n }\n else {\n // selected with no multi key, must make sure anything else is unselected\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: !shiftKeyPressed, rangeSelect: shiftKeyPressed, event: mouseEvent, source: source });\n }\n }\n else {\n var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: shiftKeyPressed, event: mouseEvent, source: source });\n }\n };\n RowCtrl.prototype.setupDetailRowAutoHeight = function (eDetailGui) {\n var _this = this;\n if (this.rowType !== RowType$1.FullWidthDetail) {\n return;\n }\n if (!this.beans.gridOptionsService.is('detailRowAutoHeight')) {\n return;\n }\n var checkRowSizeFunc = function () {\n var clientHeight = eDetailGui.clientHeight;\n // if the UI is not ready, the height can be 0, which we ignore, as otherwise a flicker will occur\n // as UI goes from the default height, to 0, then to the real height as UI becomes ready. this means\n // it's not possible for have 0 as auto-height, however this is an improbable use case, as even an\n // empty detail grid would still have some styling around it giving at least a few pixels.\n if (clientHeight != null && clientHeight > 0) {\n // we do the update in a timeout, to make sure we are not calling from inside the grid\n // doing another update\n var updateRowHeightFunc = function () {\n _this.rowNode.setRowHeight(clientHeight);\n if (_this.beans.clientSideRowModel) {\n _this.beans.clientSideRowModel.onRowHeightChanged();\n }\n else if (_this.beans.serverSideRowModel) {\n _this.beans.serverSideRowModel.onRowHeightChanged();\n }\n };\n _this.beans.frameworkOverrides.setTimeout(updateRowHeightFunc, 0);\n }\n };\n var resizeObserverDestroyFunc = this.beans.resizeObserverService.observeResize(eDetailGui, checkRowSizeFunc);\n this.addDestroyFunc(resizeObserverDestroyFunc);\n checkRowSizeFunc();\n };\n RowCtrl.prototype.createFullWidthParams = function (eRow, pinned) {\n var _this = this;\n var params = {\n fullWidth: true,\n data: this.rowNode.data,\n node: this.rowNode,\n value: this.rowNode.key,\n valueFormatted: this.rowNode.key,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context,\n // these need to be taken out, as part of 'afterAttached' now\n eGridCell: eRow,\n eParentOfValue: eRow,\n pinned: pinned,\n addRenderedRowListener: this.addEventListener.bind(this),\n registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange); }\n };\n return params;\n };\n RowCtrl.prototype.addFullWidthRowDragging = function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) {\n if (value === void 0) { value = ''; }\n if (!this.isFullWidth()) {\n return;\n }\n var rowDragComp = new RowDragComp(function () { return value; }, this.rowNode, undefined, rowDraggerElement, dragStartPixels, suppressVisibilityChange);\n this.createManagedBean(rowDragComp, this.beans.context);\n };\n RowCtrl.prototype.onUiLevelChanged = function () {\n var newLevel = this.beans.rowCssClassCalculator.calculateRowLevel(this.rowNode);\n if (this.rowLevel != newLevel) {\n var classToAdd_1 = 'ag-row-level-' + newLevel;\n var classToRemove_1 = 'ag-row-level-' + this.rowLevel;\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass(classToAdd_1, true);\n gui.rowComp.addOrRemoveCssClass(classToRemove_1, false);\n });\n }\n this.rowLevel = newLevel;\n };\n RowCtrl.prototype.isFirstRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();\n };\n RowCtrl.prototype.isLastRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();\n };\n RowCtrl.prototype.onModelUpdated = function () {\n this.refreshFirstAndLastRowStyles();\n };\n RowCtrl.prototype.refreshFirstAndLastRowStyles = function () {\n var newFirst = this.isFirstRowOnPage();\n var newLast = this.isLastRowOnPage();\n if (this.firstRowOnPage !== newFirst) {\n this.firstRowOnPage = newFirst;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-first', newFirst); });\n }\n if (this.lastRowOnPage !== newLast) {\n this.lastRowOnPage = newLast;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-last', newLast); });\n }\n };\n RowCtrl.prototype.stopEditing = function (cancel) {\n var e_1, _a;\n if (cancel === void 0) { cancel = false; }\n // if we are already stopping row edit, there is\n // no need to start this process again.\n if (this.stoppingRowEdit) {\n return;\n }\n var cellControls = this.getAllCellCtrls();\n var isRowEdit = this.editingRow;\n this.stoppingRowEdit = true;\n var fireRowEditEvent = false;\n try {\n for (var cellControls_1 = __values$3(cellControls), cellControls_1_1 = cellControls_1.next(); !cellControls_1_1.done; cellControls_1_1 = cellControls_1.next()) {\n var ctrl = cellControls_1_1.value;\n var valueChanged = ctrl.stopEditing(cancel);\n if (isRowEdit && !cancel && !fireRowEditEvent && valueChanged) {\n fireRowEditEvent = true;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (cellControls_1_1 && !cellControls_1_1.done && (_a = cellControls_1.return)) _a.call(cellControls_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (fireRowEditEvent) {\n var event_1 = this.createRowEvent(Events.EVENT_ROW_VALUE_CHANGED);\n this.beans.eventService.dispatchEvent(event_1);\n }\n if (isRowEdit) {\n this.setEditingRow(false);\n }\n this.stoppingRowEdit = false;\n };\n RowCtrl.prototype.setInlineEditingCss = function (editing) {\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass(\"ag-row-inline-editing\", editing);\n gui.rowComp.addOrRemoveCssClass(\"ag-row-not-inline-editing\", !editing);\n });\n };\n RowCtrl.prototype.setEditingRow = function (value) {\n this.editingRow = value;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-editing', value); });\n var event = value ?\n this.createRowEvent(Events.EVENT_ROW_EDITING_STARTED)\n : this.createRowEvent(Events.EVENT_ROW_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n RowCtrl.prototype.startRowEditing = function (key, charPress, sourceRenderedCell, event) {\n if (key === void 0) { key = null; }\n if (charPress === void 0) { charPress = null; }\n if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }\n if (event === void 0) { event = null; }\n // don't do it if already editing\n if (this.editingRow) {\n return;\n }\n var atLeastOneEditing = this.getAllCellCtrls().reduce(function (prev, cellCtrl) {\n var cellStartedEdit = cellCtrl === sourceRenderedCell;\n if (cellStartedEdit) {\n cellCtrl.startEditing(key, charPress, cellStartedEdit, event);\n }\n else {\n cellCtrl.startEditing(null, null, cellStartedEdit, event);\n }\n if (prev) {\n return true;\n }\n return cellCtrl.isEditing();\n }, false);\n if (atLeastOneEditing) {\n this.setEditingRow(true);\n }\n };\n RowCtrl.prototype.getAllCellCtrls = function () {\n if (this.leftCellCtrls.list.length === 0 && this.rightCellCtrls.list.length === 0) {\n return this.centerCellCtrls.list;\n }\n var res = __spread$g(this.centerCellCtrls.list, this.leftCellCtrls.list, this.rightCellCtrls.list);\n return res;\n };\n RowCtrl.prototype.postProcessClassesFromGridOptions = function () {\n var _this = this;\n var cssClasses = this.beans.rowCssClassCalculator.processClassesFromGridOptions(this.rowNode);\n if (!cssClasses || !cssClasses.length) {\n return;\n }\n cssClasses.forEach(function (classStr) {\n _this.allRowGuis.forEach(function (c) { return c.rowComp.addOrRemoveCssClass(classStr, true); });\n });\n };\n RowCtrl.prototype.postProcessRowClassRules = function () {\n var _this = this;\n this.beans.rowCssClassCalculator.processRowClassRules(this.rowNode, function (className) {\n _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, true); });\n }, function (className) {\n _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, false); });\n });\n };\n RowCtrl.prototype.setStylesFromGridOptions = function (gui) {\n var rowStyles = this.processStylesFromGridOptions();\n this.forEachGui(gui, function (gui) { return gui.rowComp.setUserStyles(rowStyles); });\n };\n RowCtrl.prototype.getPinnedForContainer = function (rowContainerType) {\n var pinned = rowContainerType === RowContainerType.LEFT\n ? 'left'\n : rowContainerType === RowContainerType.RIGHT\n ? 'right'\n : null;\n return pinned;\n };\n RowCtrl.prototype.getInitialRowClasses = function (rowContainerType) {\n var pinned = this.getPinnedForContainer(rowContainerType);\n var params = {\n rowNode: this.rowNode,\n rowFocused: this.rowFocused,\n fadeRowIn: this.fadeInAnimation[rowContainerType],\n rowIsEven: this.rowNode.rowIndex % 2 === 0,\n rowLevel: this.rowLevel,\n fullWidthRow: this.isFullWidth(),\n firstRowOnPage: this.isFirstRowOnPage(),\n lastRowOnPage: this.isLastRowOnPage(),\n printLayout: this.printLayout,\n expandable: this.rowNode.isExpandable(),\n pinned: pinned\n };\n return this.beans.rowCssClassCalculator.getInitialRowClasses(params);\n };\n RowCtrl.prototype.processStylesFromGridOptions = function () {\n // part 1 - rowStyle\n var rowStyle = this.beans.gridOptionsService.get('rowStyle');\n if (rowStyle && typeof rowStyle === 'function') {\n console.warn('AG Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');\n return;\n }\n // part 1 - rowStyleFunc\n var rowStyleFunc = this.beans.gridOptionsService.getCallback('getRowStyle');\n var rowStyleFuncResult;\n if (rowStyleFunc) {\n var params = {\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex\n };\n rowStyleFuncResult = rowStyleFunc(params);\n }\n return Object.assign({}, rowStyle, rowStyleFuncResult);\n };\n RowCtrl.prototype.onRowSelected = function (gui) {\n var _this = this;\n // Treat undefined as false, if we pass undefined down it gets treated as toggle class, rather than explicitly\n // setting the required value\n var selected = !!this.rowNode.isSelected();\n this.forEachGui(gui, function (gui) {\n gui.rowComp.addOrRemoveCssClass('ag-row-selected', selected);\n setAriaSelected(gui.element, selected ? true : undefined);\n var ariaLabel = _this.createAriaLabel();\n setAriaLabel(gui.element, ariaLabel == null ? '' : ariaLabel);\n });\n };\n RowCtrl.prototype.createAriaLabel = function () {\n var selected = this.rowNode.isSelected();\n if (selected && this.beans.gridOptionsService.is('suppressRowDeselection')) {\n return undefined;\n }\n var translate = this.beans.localeService.getLocaleTextFunc();\n var label = translate(selected ? 'ariaRowDeselect' : 'ariaRowSelect', \"Press SPACE to \" + (selected ? 'deselect' : 'select') + \" this row.\");\n return label;\n };\n RowCtrl.prototype.isUseAnimationFrameForCreate = function () {\n return this.useAnimationFrameForCreate;\n };\n RowCtrl.prototype.addHoverFunctionality = function (eRow) {\n var _this = this;\n // because we use animation frames to do this, it's possible the row no longer exists\n // by the time we get to add it\n if (!this.active) {\n return;\n }\n // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel\n // like we do for all the other mouse events.\n // because of the pinning, we cannot simply add / remove the class based on the eRow. we\n // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a\n // mouse hover, it sets such in the rowNode, and then all three reflect the change as\n // all are listening for event on the row node.\n // step 1 - add listener, to set flag on row node\n this.addManagedListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });\n this.addManagedListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });\n // step 2 - listen for changes on row node (which any eRow can trigger)\n this.addManagedListener(this.rowNode, RowNode.EVENT_MOUSE_ENTER, function () {\n // if hover turned off, we don't add the class. we do this here so that if the application\n // toggles this property mid way, we remove the hover form the last row, but we stop\n // adding hovers from that point onwards. Also, do not highlight while dragging elements around.\n if (!_this.beans.dragService.isDragging() &&\n !_this.beans.gridOptionsService.is('suppressRowHoverHighlight')) {\n eRow.classList.add('ag-row-hover');\n _this.rowNode.setHovered(true);\n }\n });\n this.addManagedListener(this.rowNode, RowNode.EVENT_MOUSE_LEAVE, function () {\n eRow.classList.remove('ag-row-hover');\n _this.rowNode.setHovered(false);\n });\n };\n // for animation, we don't want to animate entry or exit to a very far away pixel,\n // otherwise the row would move so fast, it would appear to disappear. so this method\n // moves the row closer to the viewport if it is far away, so the row slide in / out\n // at a speed the user can see.\n RowCtrl.prototype.roundRowTopToBounds = function (rowTop) {\n var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();\n var range = gridBodyCon.getScrollFeature().getVScrollPosition();\n var minPixel = this.applyPaginationOffset(range.top, true) - 100;\n var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n return Math.min(Math.max(minPixel, rowTop), maxPixel);\n };\n RowCtrl.prototype.getFrameworkOverrides = function () {\n return this.beans.frameworkOverrides;\n };\n RowCtrl.prototype.forEachGui = function (gui, callback) {\n var list = gui ? [gui] : this.allRowGuis;\n list.forEach(callback);\n };\n RowCtrl.prototype.onRowHeightChanged = function (gui) {\n // check for exists first - if the user is resetting the row height, then\n // it will be null (or undefined) momentarily until the next time the flatten\n // stage is called where the row will then update again with a new height\n if (this.rowNode.rowHeight == null) {\n return;\n }\n var rowHeight = this.rowNode.rowHeight;\n var defaultRowHeight = this.beans.environment.getDefaultRowHeight();\n var isHeightFromFunc = this.beans.gridOptionsService.isGetRowHeightFunction();\n var heightFromFunc = isHeightFromFunc ? this.beans.gridOptionsService.getRowHeightForNode(this.rowNode).height : undefined;\n var lineHeight = heightFromFunc ? Math.min(defaultRowHeight, heightFromFunc) - 2 + \"px\" : undefined;\n this.forEachGui(gui, function (gui) {\n gui.element.style.height = rowHeight + \"px\";\n // If the row height is coming from a function, this means some rows can\n // be smaller than the theme had intended. so we set --ag-line-height on\n // the row, which is picked up by the theme CSS and is used in a calc\n // for the CSS line-height property, which makes sure the line-height is\n // not bigger than the row height, otherwise the row text would not fit.\n // We do not use rowNode.rowHeight here, as this could be the result of autoHeight,\n // and we found using the autoHeight result causes a loop, where changing the\n // line-height them impacts the cell height, resulting in a new autoHeight,\n // resulting in a new line-height and so on loop.\n // const heightFromFunc = this.beans.gridOptionsService.getRowHeightForNode(this.rowNode).height;\n if (lineHeight) {\n gui.element.style.setProperty('--ag-line-height', lineHeight);\n }\n });\n };\n RowCtrl.prototype.addEventListener = function (eventType, listener) {\n _super.prototype.addEventListener.call(this, eventType, listener);\n };\n RowCtrl.prototype.removeEventListener = function (eventType, listener) {\n _super.prototype.removeEventListener.call(this, eventType, listener);\n };\n // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n RowCtrl.prototype.destroyFirstPass = function () {\n this.active = false;\n // why do we have this method? shouldn't everything below be added as a destroy func beside\n // the corresponding create logic?\n if (this.beans.gridOptionsService.isAnimateRows()) {\n this.setupRemoveAnimation();\n }\n this.rowNode.setHovered(false);\n var event = this.createRowEvent(Events.EVENT_VIRTUAL_ROW_REMOVED);\n this.dispatchEvent(event);\n this.beans.eventService.dispatchEvent(event);\n _super.prototype.destroy.call(this);\n };\n RowCtrl.prototype.setupRemoveAnimation = function () {\n // we don't animate sticky rows\n if (this.isSticky()) {\n return;\n }\n var rowStillVisibleJustNotInViewport = this.rowNode.rowTop != null;\n if (rowStillVisibleJustNotInViewport) {\n // if the row is not rendered, but in viewport, it means it has moved,\n // so we animate the row out. if the new location is very far away,\n // the animation will be so fast the row will look like it's just disappeared,\n // so instead we animate to a position just outside the viewport.\n var rowTop = this.roundRowTopToBounds(this.rowNode.rowTop);\n this.setRowTop(rowTop);\n }\n else {\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', true); });\n }\n };\n RowCtrl.prototype.destroySecondPass = function () {\n this.allRowGuis.length = 0;\n var destroyCellCtrls = function (ctrls) {\n ctrls.list.forEach(function (c) { return c.destroy(); });\n return { list: [], map: {} };\n };\n this.centerCellCtrls = destroyCellCtrls(this.centerCellCtrls);\n this.leftCellCtrls = destroyCellCtrls(this.leftCellCtrls);\n this.rightCellCtrls = destroyCellCtrls(this.rightCellCtrls);\n };\n RowCtrl.prototype.setFocusedClasses = function (gui) {\n var _this = this;\n this.forEachGui(gui, function (gui) {\n gui.rowComp.addOrRemoveCssClass('ag-row-focus', _this.rowFocused);\n gui.rowComp.addOrRemoveCssClass('ag-row-no-focus', !_this.rowFocused);\n });\n };\n RowCtrl.prototype.onCellFocused = function () {\n this.onCellFocusChanged();\n };\n RowCtrl.prototype.onCellFocusCleared = function () {\n this.onCellFocusChanged();\n };\n RowCtrl.prototype.onCellFocusChanged = function () {\n var rowFocused = this.beans.focusService.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n if (rowFocused !== this.rowFocused) {\n this.rowFocused = rowFocused;\n this.setFocusedClasses();\n }\n // if we are editing, then moving the focus out of a row will stop editing\n if (!rowFocused && this.editingRow) {\n this.stopEditing(false);\n }\n };\n RowCtrl.prototype.onPaginationChanged = function () {\n var currentPage = this.beans.paginationProxy.getCurrentPage();\n // it is possible this row is in the new page, but the page number has changed, which means\n // it needs to reposition itself relative to the new page\n if (this.paginationPage !== currentPage) {\n this.paginationPage = currentPage;\n this.onTopChanged();\n }\n this.refreshFirstAndLastRowStyles();\n };\n RowCtrl.prototype.onTopChanged = function () {\n this.setRowTop(this.rowNode.rowTop);\n };\n RowCtrl.prototype.onPaginationPixelOffsetChanged = function () {\n // the pixel offset is used when calculating rowTop to set on the row DIV\n this.onTopChanged();\n };\n // applies pagination offset, eg if on second page, and page height is 500px, then removes\n // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.\n // reverse will take the offset away rather than add.\n RowCtrl.prototype.applyPaginationOffset = function (topPx, reverse) {\n if (reverse === void 0) { reverse = false; }\n if (this.rowNode.isRowPinned()) {\n return topPx;\n }\n var pixelOffset = this.beans.paginationProxy.getPixelOffset();\n var multiplier = reverse ? 1 : -1;\n return topPx + (pixelOffset * multiplier);\n };\n RowCtrl.prototype.setRowTop = function (pixels) {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return;\n }\n // need to make sure rowTop is not null, as this can happen if the node was once\n // visible (ie parent group was expanded) but is now not visible\n if (exists(pixels)) {\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);\n var topPx = afterScalingPixels + \"px\";\n this.setRowTopStyle(topPx);\n }\n };\n // the top needs to be set into the DOM element when the element is created, not updated afterwards.\n // otherwise the transition would not work, as it would be transitioning from zero (the unset value).\n // for example, suppose a row that is outside the viewport, then user does a filter to remove other rows\n // and this row now appears in the viewport, and the row moves up (ie it was under the viewport and not rendered,\n // but now is in the viewport) then a new RowComp is created, however it should have it's position initialised\n // to below the viewport, so the row will appear to animate up. if we didn't set the initial position at creation\n // time, the row would animate down (ie from position zero).\n RowCtrl.prototype.getInitialRowTop = function (rowContainerType) {\n var suppressRowTransform = this.beans.gridOptionsService.is('suppressRowTransform');\n return suppressRowTransform ? this.getInitialRowTopShared(rowContainerType) : undefined;\n };\n RowCtrl.prototype.getInitialTransform = function (rowContainerType) {\n var suppressRowTransform = this.beans.gridOptionsService.is('suppressRowTransform');\n return suppressRowTransform ? undefined : \"translateY(\" + this.getInitialRowTopShared(rowContainerType) + \")\";\n };\n RowCtrl.prototype.getInitialRowTopShared = function (rowContainerType) {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return '';\n }\n var rowTop;\n if (this.isSticky()) {\n rowTop = this.rowNode.stickyRowTop;\n }\n else {\n // if sliding in, we take the old row top. otherwise we just set the current row top.\n var pixels = this.slideInAnimation[rowContainerType] ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n // we don't apply scaling if row is pinned\n rowTop = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);\n }\n return rowTop + 'px';\n };\n RowCtrl.prototype.setRowTopStyle = function (topPx) {\n var suppressRowTransform = this.beans.gridOptionsService.is('suppressRowTransform');\n this.allRowGuis.forEach(function (gui) { return suppressRowTransform ?\n gui.rowComp.setTop(topPx) :\n gui.rowComp.setTransform(\"translateY(\" + topPx + \")\"); });\n };\n RowCtrl.prototype.getRowNode = function () {\n return this.rowNode;\n };\n RowCtrl.prototype.getCellCtrl = function (column) {\n // first up, check for cell directly linked to this column\n var res = null;\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.getColumn() == column) {\n res = cellCtrl;\n }\n });\n if (res != null) {\n return res;\n }\n // second up, if not found, then check for spanned cols.\n // we do this second (and not at the same time) as this is\n // more expensive, as spanning cols is a\n // infrequently used feature so we don't need to do this most\n // of the time\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.getColSpanningList().indexOf(column) >= 0) {\n res = cellCtrl;\n }\n });\n return res;\n };\n RowCtrl.prototype.onRowIndexChanged = function () {\n // we only bother updating if the rowIndex is present. if it is not present, it means this row\n // is child of a group node, and the group node was closed, it's the only way to have no row index.\n // when this happens, row is about to be de-rendered, so we don't care, rowComp is about to die!\n if (this.rowNode.rowIndex != null) {\n this.onCellFocusChanged();\n this.updateRowIndexes();\n this.postProcessCss();\n }\n };\n RowCtrl.prototype.updateRowIndexes = function (gui) {\n var rowIndexStr = this.rowNode.getRowIndexString();\n var headerRowCount = this.beans.headerNavigationService.getHeaderRowCount();\n var rowIsEven = this.rowNode.rowIndex % 2 === 0;\n var ariaRowIndex = headerRowCount + this.rowNode.rowIndex + 1;\n this.forEachGui(gui, function (c) {\n c.rowComp.setRowIndex(rowIndexStr);\n c.rowComp.addOrRemoveCssClass('ag-row-even', rowIsEven);\n c.rowComp.addOrRemoveCssClass('ag-row-odd', !rowIsEven);\n setAriaRowIndex(c.element, ariaRowIndex);\n });\n };\n // returns the pinned left container, either the normal one, or the embedded full with one if exists\n RowCtrl.prototype.getPinnedLeftRowElement = function () {\n return this.leftGui ? this.leftGui.element : undefined;\n };\n // returns the pinned right container, either the normal one, or the embedded full with one if exists\n RowCtrl.prototype.getPinnedRightRowElement = function () {\n return this.rightGui ? this.rightGui.element : undefined;\n };\n // returns the body container, either the normal one, or the embedded full with one if exists\n RowCtrl.prototype.getBodyRowElement = function () {\n return this.centerGui ? this.centerGui.element : undefined;\n };\n // returns the full width container\n RowCtrl.prototype.getFullWidthRowElement = function () {\n return this.fullWidthGui ? this.fullWidthGui.element : undefined;\n };\n RowCtrl.DOM_DATA_KEY_ROW_CTRL = 'renderedRow';\n return RowCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1N = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$j = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar RowContainerEventsFeature = /** @class */ (function (_super) {\n __extends$1N(RowContainerEventsFeature, _super);\n function RowContainerEventsFeature(element) {\n var _this = _super.call(this) || this;\n _this.element = element;\n return _this;\n }\n RowContainerEventsFeature.prototype.postConstruct = function () {\n this.addMouseListeners();\n this.mockContextMenuForIPad();\n this.addKeyboardEvents();\n };\n RowContainerEventsFeature.prototype.addKeyboardEvents = function () {\n var _this = this;\n var eventNames = ['keydown', 'keypress'];\n eventNames.forEach(function (eventName) {\n var listener = _this.processKeyboardEvent.bind(_this, eventName);\n _this.addManagedListener(_this.element, eventName, listener);\n });\n };\n RowContainerEventsFeature.prototype.addMouseListeners = function () {\n var _this = this;\n var mouseDownEvent = isEventSupported('touchstart') ? 'touchstart' : 'mousedown';\n var eventNames = ['dblclick', 'contextmenu', 'mouseover', 'mouseout', 'click', mouseDownEvent];\n eventNames.forEach(function (eventName) {\n var listener = _this.processMouseEvent.bind(_this, eventName);\n _this.addManagedListener(_this.element, eventName, listener);\n });\n };\n RowContainerEventsFeature.prototype.processMouseEvent = function (eventName, mouseEvent) {\n if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) ||\n isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var rowComp = this.getRowForEvent(mouseEvent);\n var cellCtrl = this.mouseEventService.getRenderedCellForEvent(mouseEvent);\n if (eventName === \"contextmenu\") {\n this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellCtrl);\n }\n else {\n if (cellCtrl) {\n cellCtrl.onMouseEvent(eventName, mouseEvent);\n }\n if (rowComp) {\n rowComp.onMouseEvent(eventName, mouseEvent);\n }\n }\n };\n RowContainerEventsFeature.prototype.mockContextMenuForIPad = function () {\n var _this = this;\n // we do NOT want this when not in iPad, otherwise we will be doing\n if (!isIOSUserAgent()) {\n return;\n }\n var touchListener = new TouchListener(this.element);\n var longTapListener = function (event) {\n var rowComp = _this.getRowForEvent(event.touchEvent);\n var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);\n _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);\n };\n this.addManagedListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n };\n RowContainerEventsFeature.prototype.getRowForEvent = function (event) {\n var sourceElement = event.target;\n while (sourceElement) {\n var rowCon = this.gridOptionsService.getDomData(sourceElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n if (rowCon) {\n return rowCon;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n };\n RowContainerEventsFeature.prototype.handleContextMenuMouseEvent = function (mouseEvent, touchEvent, rowComp, cellCtrl) {\n var rowNode = rowComp ? rowComp.getRowNode() : null;\n var column = cellCtrl ? cellCtrl.getColumn() : null;\n var value = null;\n if (column) {\n var event_1 = mouseEvent ? mouseEvent : touchEvent;\n cellCtrl.dispatchCellContextMenuEvent(event_1);\n value = this.valueService.getValue(column, rowNode);\n }\n // if user clicked on a cell, anchor to that cell, otherwise anchor to the grid panel\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var anchorToElement = cellCtrl ? cellCtrl.getGui() : gridBodyCon.getGridBodyElement();\n if (this.contextMenuFactory) {\n this.contextMenuFactory.onContextMenu(mouseEvent, touchEvent, rowNode, column, value, anchorToElement);\n }\n };\n RowContainerEventsFeature.prototype.processKeyboardEvent = function (eventName, keyboardEvent) {\n var cellComp = getCtrlForEventTarget(this.gridOptionsService, keyboardEvent.target, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n var rowComp = getCtrlForEventTarget(this.gridOptionsService, keyboardEvent.target, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n if (keyboardEvent.defaultPrevented) {\n return;\n }\n if (cellComp) {\n this.processCellKeyboardEvent(cellComp, eventName, keyboardEvent);\n }\n else if (rowComp && rowComp.isFullWidth()) {\n this.processFullWidthRowKeyboardEvent(rowComp, eventName, keyboardEvent);\n }\n };\n RowContainerEventsFeature.prototype.processCellKeyboardEvent = function (cellCtrl, eventName, keyboardEvent) {\n var rowNode = cellCtrl.getRowNode();\n var column = cellCtrl.getColumn();\n var editing = cellCtrl.isEditing();\n var gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsService, keyboardEvent, rowNode, column, editing);\n if (gridProcessingAllowed) {\n switch (eventName) {\n case 'keydown':\n // first see if it's a scroll key, page up / down, home / end etc\n var wasScrollKey = !editing && this.navigationService.handlePageScrollingKey(keyboardEvent);\n // if not a scroll key, then we pass onto cell\n if (!wasScrollKey) {\n cellCtrl.onKeyDown(keyboardEvent);\n }\n // perform clipboard and undo / redo operations\n this.doGridOperations(keyboardEvent, cellCtrl.isEditing());\n break;\n case 'keypress':\n cellCtrl.onKeyPress(keyboardEvent);\n break;\n }\n }\n if (eventName === 'keydown') {\n var cellKeyDownEvent = cellCtrl.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_DOWN);\n this.eventService.dispatchEvent(cellKeyDownEvent);\n }\n if (eventName === 'keypress') {\n var cellKeyPressEvent = cellCtrl.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_PRESS);\n this.eventService.dispatchEvent(cellKeyPressEvent);\n }\n };\n RowContainerEventsFeature.prototype.processFullWidthRowKeyboardEvent = function (rowComp, eventName, keyboardEvent) {\n var rowNode = rowComp.getRowNode();\n var focusedCell = this.focusService.getFocusedCell();\n var column = (focusedCell && focusedCell.column);\n var gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsService, keyboardEvent, rowNode, column, false);\n if (gridProcessingAllowed) {\n var key = keyboardEvent.key;\n if (eventName === 'keydown') {\n switch (key) {\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n this.navigationService.handlePageScrollingKey(keyboardEvent);\n break;\n case KeyCode.UP:\n case KeyCode.DOWN:\n rowComp.onKeyboardNavigate(keyboardEvent);\n break;\n case KeyCode.TAB:\n rowComp.onTabKeyDown(keyboardEvent);\n break;\n }\n }\n }\n if (eventName === 'keydown') {\n var cellKeyDownEvent = rowComp.createRowEvent(Events.EVENT_CELL_KEY_DOWN, keyboardEvent);\n this.eventService.dispatchEvent(cellKeyDownEvent);\n }\n if (eventName === 'keypress') {\n var cellKeyPressEvent = rowComp.createRowEvent(Events.EVENT_CELL_KEY_PRESS, keyboardEvent);\n this.eventService.dispatchEvent(cellKeyPressEvent);\n }\n };\n RowContainerEventsFeature.prototype.doGridOperations = function (keyboardEvent, editing) {\n // check if ctrl or meta key pressed\n if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {\n return;\n }\n // if the cell the event came from is editing, then we do not\n // want to do the default shortcut keys, otherwise the editor\n // (eg a text field) would not be able to do the normal cut/copy/paste\n if (editing) {\n return;\n }\n // for copy / paste, we don't want to execute when the event\n // was from a child grid (happens in master detail)\n if (!this.mouseEventService.isEventFromThisGrid(keyboardEvent)) {\n return;\n }\n var keyCode = normaliseQwertyAzerty(keyboardEvent);\n if (keyCode === KeyCode.A) {\n return this.onCtrlAndA(keyboardEvent);\n }\n if (keyCode === KeyCode.C) {\n return this.onCtrlAndC(keyboardEvent);\n }\n if (keyCode === KeyCode.X) {\n return this.onCtrlAndX(keyboardEvent);\n }\n if (keyCode === KeyCode.V) {\n return this.onCtrlAndV();\n }\n if (keyCode === KeyCode.D) {\n return this.onCtrlAndD(keyboardEvent);\n }\n if (keyCode === KeyCode.Z) {\n return this.onCtrlAndZ(keyboardEvent);\n }\n if (keyCode === KeyCode.Y) {\n return this.onCtrlAndY();\n }\n };\n RowContainerEventsFeature.prototype.onCtrlAndA = function (event) {\n var _a = this, pinnedRowModel = _a.pinnedRowModel, paginationProxy = _a.paginationProxy, rangeService = _a.rangeService;\n if (rangeService && paginationProxy.isRowsToRender()) {\n var _b = __read$j([\n pinnedRowModel.isEmpty('top'),\n pinnedRowModel.isEmpty('bottom')\n ], 2), isEmptyPinnedTop = _b[0], isEmptyPinnedBottom = _b[1];\n var floatingStart = isEmptyPinnedTop ? null : 'top';\n var floatingEnd = void 0;\n var rowEnd = void 0;\n if (isEmptyPinnedBottom) {\n floatingEnd = null;\n rowEnd = this.paginationProxy.getRowCount() - 1;\n }\n else {\n floatingEnd = 'bottom';\n rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;\n }\n var allDisplayedColumns = this.columnModel.getAllDisplayedColumns();\n if (missingOrEmpty(allDisplayedColumns)) {\n return;\n }\n rangeService.setCellRange({\n rowStartIndex: 0,\n rowStartPinned: floatingStart,\n rowEndIndex: rowEnd,\n rowEndPinned: floatingEnd,\n columnStart: allDisplayedColumns[0],\n columnEnd: last(allDisplayedColumns)\n });\n }\n event.preventDefault();\n };\n RowContainerEventsFeature.prototype.onCtrlAndC = function (event) {\n if (!this.clipboardService || this.gridOptionsService.is('enableCellTextSelection')) {\n return;\n }\n this.clipboardService.copyToClipboard();\n event.preventDefault();\n };\n RowContainerEventsFeature.prototype.onCtrlAndX = function (event) {\n if (!this.clipboardService ||\n this.gridOptionsService.is('enableCellTextSelection') ||\n this.gridOptionsService.is('suppressCutToClipboard')) {\n return;\n }\n this.clipboardService.cutToClipboard();\n event.preventDefault();\n };\n RowContainerEventsFeature.prototype.onCtrlAndV = function () {\n if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule) && !this.gridOptionsService.is('suppressClipboardPaste')) {\n this.clipboardService.pasteFromClipboard();\n }\n };\n RowContainerEventsFeature.prototype.onCtrlAndD = function (event) {\n if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule) && !this.gridOptionsService.is('suppressClipboardPaste')) {\n this.clipboardService.copyRangeDown();\n }\n event.preventDefault();\n };\n RowContainerEventsFeature.prototype.onCtrlAndZ = function (event) {\n if (!this.gridOptionsService.is('undoRedoCellEditing')) {\n return;\n }\n event.preventDefault();\n if (event.shiftKey) {\n this.undoRedoService.redo('ui');\n }\n else {\n this.undoRedoService.undo('ui');\n }\n };\n RowContainerEventsFeature.prototype.onCtrlAndY = function () {\n this.undoRedoService.redo('ui');\n };\n __decorate$1K([\n Autowired('mouseEventService')\n ], RowContainerEventsFeature.prototype, \"mouseEventService\", void 0);\n __decorate$1K([\n Autowired('valueService')\n ], RowContainerEventsFeature.prototype, \"valueService\", void 0);\n __decorate$1K([\n Optional('contextMenuFactory')\n ], RowContainerEventsFeature.prototype, \"contextMenuFactory\", void 0);\n __decorate$1K([\n Autowired('ctrlsService')\n ], RowContainerEventsFeature.prototype, \"ctrlsService\", void 0);\n __decorate$1K([\n Autowired('navigationService')\n ], RowContainerEventsFeature.prototype, \"navigationService\", void 0);\n __decorate$1K([\n Autowired('focusService')\n ], RowContainerEventsFeature.prototype, \"focusService\", void 0);\n __decorate$1K([\n Autowired('undoRedoService')\n ], RowContainerEventsFeature.prototype, \"undoRedoService\", void 0);\n __decorate$1K([\n Autowired('columnModel')\n ], RowContainerEventsFeature.prototype, \"columnModel\", void 0);\n __decorate$1K([\n Autowired('paginationProxy')\n ], RowContainerEventsFeature.prototype, \"paginationProxy\", void 0);\n __decorate$1K([\n Autowired('pinnedRowModel')\n ], RowContainerEventsFeature.prototype, \"pinnedRowModel\", void 0);\n __decorate$1K([\n Optional('rangeService')\n ], RowContainerEventsFeature.prototype, \"rangeService\", void 0);\n __decorate$1K([\n Optional('clipboardService')\n ], RowContainerEventsFeature.prototype, \"clipboardService\", void 0);\n __decorate$1K([\n PostConstruct\n ], RowContainerEventsFeature.prototype, \"postConstruct\", null);\n return RowContainerEventsFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1M = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// listens to changes in the center viewport size, for column and row virtualisation,\n// and adjusts grid as necessary. there are two viewports, one for horizontal and one for\n// vertical scrolling.\nvar ViewportSizeFeature = /** @class */ (function (_super) {\n __extends$1M(ViewportSizeFeature, _super);\n function ViewportSizeFeature(centerContainerCtrl) {\n var _this = _super.call(this) || this;\n _this.centerContainerCtrl = centerContainerCtrl;\n return _this;\n }\n ViewportSizeFeature.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n _this.listenForResize();\n });\n this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, this.onScrollbarWidthChanged.bind(this));\n };\n ViewportSizeFeature.prototype.listenForResize = function () {\n var _this = this;\n var listener = function () { return _this.onCenterViewportResized(); };\n // centerContainer gets horizontal resizes\n this.centerContainerCtrl.registerViewportResizeListener(listener);\n // eBodyViewport gets vertical resizes\n this.gridBodyCtrl.registerBodyViewportResizeListener(listener);\n };\n ViewportSizeFeature.prototype.onScrollbarWidthChanged = function () {\n this.checkViewportAndScrolls();\n };\n ViewportSizeFeature.prototype.onCenterViewportResized = function () {\n if (this.centerContainerCtrl.isViewportVisible()) {\n this.checkViewportAndScrolls();\n var newWidth = this.centerContainerCtrl.getCenterWidth();\n if (newWidth !== this.centerWidth) {\n this.centerWidth = newWidth;\n this.columnModel.refreshFlexedColumns({ viewportWidth: this.centerWidth, updateBodyWidths: true, fireResizedEvent: true });\n }\n }\n else {\n this.bodyHeight = 0;\n }\n };\n // gets called every time the viewport size changes. we use this to check visibility of scrollbars\n // in the grid panel, and also to check size and position of viewport for row and column virtualisation.\n ViewportSizeFeature.prototype.checkViewportAndScrolls = function () {\n // results in updating anything that depends on scroll showing\n this.updateScrollVisibleService();\n // fires event if height changes, used by PaginationService, HeightScalerService, RowRenderer\n this.checkBodyHeight();\n // check for virtual columns for ColumnController\n this.onHorizontalViewportChanged();\n this.gridBodyCtrl.getScrollFeature().checkScrollLeft();\n };\n ViewportSizeFeature.prototype.getBodyHeight = function () {\n return this.bodyHeight;\n };\n ViewportSizeFeature.prototype.checkBodyHeight = function () {\n var eBodyViewport = this.gridBodyCtrl.getBodyViewportElement();\n var bodyHeight = getInnerHeight(eBodyViewport);\n if (this.bodyHeight !== bodyHeight) {\n this.bodyHeight = bodyHeight;\n var event_1 = {\n type: Events.EVENT_BODY_HEIGHT_CHANGED\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ViewportSizeFeature.prototype.updateScrollVisibleService = function () {\n // because of column animation (which takes 200ms), we have to do this twice.\n // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n // will animate to the left to fill the gap. this animation means just after\n // the cols are removed, the remaining cols are still in the original location\n // at the start of the animation, so pre animation the H scrollbar is still needed,\n // but post animation it is not.\n this.updateScrollVisibleServiceImpl();\n setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);\n };\n ViewportSizeFeature.prototype.updateScrollVisibleServiceImpl = function () {\n var params = {\n horizontalScrollShowing: this.isHorizontalScrollShowing(),\n verticalScrollShowing: this.gridBodyCtrl.isVerticalScrollShowing()\n };\n this.scrollVisibleService.setScrollsVisible(params);\n };\n ViewportSizeFeature.prototype.isHorizontalScrollShowing = function () {\n return this.centerContainerCtrl.isHorizontalScrollShowing();\n };\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged\n ViewportSizeFeature.prototype.onHorizontalViewportChanged = function () {\n var scrollWidth = this.centerContainerCtrl.getCenterWidth();\n var scrollPosition = this.centerContainerCtrl.getViewportScrollLeft();\n this.columnModel.setViewportPosition(scrollWidth, scrollPosition);\n };\n __decorate$1J([\n Autowired('ctrlsService')\n ], ViewportSizeFeature.prototype, \"ctrlsService\", void 0);\n __decorate$1J([\n Autowired('columnModel')\n ], ViewportSizeFeature.prototype, \"columnModel\", void 0);\n __decorate$1J([\n Autowired('scrollVisibleService')\n ], ViewportSizeFeature.prototype, \"scrollVisibleService\", void 0);\n __decorate$1J([\n PostConstruct\n ], ViewportSizeFeature.prototype, \"postConstruct\", null);\n return ViewportSizeFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1L = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetPinnedLeftWidthFeature = /** @class */ (function (_super) {\n __extends$1L(SetPinnedLeftWidthFeature, _super);\n function SetPinnedLeftWidthFeature(element) {\n var _this = _super.call(this) || this;\n _this.element = element;\n return _this;\n }\n SetPinnedLeftWidthFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, this.onPinnedLeftWidthChanged.bind(this));\n };\n SetPinnedLeftWidthFeature.prototype.onPinnedLeftWidthChanged = function () {\n var leftWidth = this.pinnedWidthService.getPinnedLeftWidth();\n var displayed = leftWidth > 0;\n setDisplayed(this.element, displayed);\n setFixedWidth(this.element, leftWidth);\n };\n SetPinnedLeftWidthFeature.prototype.getWidth = function () {\n return this.pinnedWidthService.getPinnedLeftWidth();\n };\n __decorate$1I([\n Autowired('pinnedWidthService')\n ], SetPinnedLeftWidthFeature.prototype, \"pinnedWidthService\", void 0);\n __decorate$1I([\n PostConstruct\n ], SetPinnedLeftWidthFeature.prototype, \"postConstruct\", null);\n return SetPinnedLeftWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1K = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetPinnedRightWidthFeature = /** @class */ (function (_super) {\n __extends$1K(SetPinnedRightWidthFeature, _super);\n function SetPinnedRightWidthFeature(element) {\n var _this = _super.call(this) || this;\n _this.element = element;\n return _this;\n }\n SetPinnedRightWidthFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, this.onPinnedRightWidthChanged.bind(this));\n };\n SetPinnedRightWidthFeature.prototype.onPinnedRightWidthChanged = function () {\n var rightWidth = this.pinnedWidthService.getPinnedRightWidth();\n var displayed = rightWidth > 0;\n setDisplayed(this.element, displayed);\n setFixedWidth(this.element, rightWidth);\n };\n SetPinnedRightWidthFeature.prototype.getWidth = function () {\n return this.pinnedWidthService.getPinnedRightWidth();\n };\n __decorate$1H([\n Autowired('pinnedWidthService')\n ], SetPinnedRightWidthFeature.prototype, \"pinnedWidthService\", void 0);\n __decorate$1H([\n PostConstruct\n ], SetPinnedRightWidthFeature.prototype, \"postConstruct\", null);\n return SetPinnedRightWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1J = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetHeightFeature = /** @class */ (function (_super) {\n __extends$1J(SetHeightFeature, _super);\n function SetHeightFeature(eContainer, eWrapper) {\n var _this = _super.call(this) || this;\n _this.eContainer = eContainer;\n _this.eWrapper = eWrapper;\n return _this;\n }\n SetHeightFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED, this.onHeightChanged.bind(this));\n };\n SetHeightFeature.prototype.onHeightChanged = function () {\n var height = this.maxDivHeightScaler.getUiContainerHeight();\n var heightString = height != null ? height + \"px\" : \"\";\n this.eContainer.style.height = heightString;\n if (this.eWrapper) {\n this.eWrapper.style.height = heightString;\n }\n };\n __decorate$1G([\n Autowired(\"rowContainerHeightService\")\n ], SetHeightFeature.prototype, \"maxDivHeightScaler\", void 0);\n __decorate$1G([\n PostConstruct\n ], SetHeightFeature.prototype, \"postConstruct\", null);\n return SetHeightFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1I = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DragListenerFeature = /** @class */ (function (_super) {\n __extends$1I(DragListenerFeature, _super);\n function DragListenerFeature(eContainer) {\n var _this = _super.call(this) || this;\n _this.eContainer = eContainer;\n return _this;\n }\n DragListenerFeature.prototype.postConstruct = function () {\n var _this = this;\n if (!this.gridOptionsService.isEnableRangeSelection() || // no range selection if no property\n missing(this.rangeService) // no range selection if not enterprise version\n ) {\n return;\n }\n var params = {\n eElement: this.eContainer,\n onDragStart: this.rangeService.onDragStart.bind(this.rangeService),\n onDragStop: this.rangeService.onDragStop.bind(this.rangeService),\n onDragging: this.rangeService.onDragging.bind(this.rangeService)\n };\n this.dragService.addDragSource(params);\n this.addDestroyFunc(function () { return _this.dragService.removeDragSource(params); });\n };\n __decorate$1F([\n Optional('rangeService')\n ], DragListenerFeature.prototype, \"rangeService\", void 0);\n __decorate$1F([\n Autowired('dragService')\n ], DragListenerFeature.prototype, \"dragService\", void 0);\n __decorate$1F([\n PostConstruct\n ], DragListenerFeature.prototype, \"postConstruct\", null);\n return DragListenerFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1H = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CenterWidthFeature = /** @class */ (function (_super) {\n __extends$1H(CenterWidthFeature, _super);\n function CenterWidthFeature(callback, addSpacer) {\n if (addSpacer === void 0) { addSpacer = false; }\n var _this = _super.call(this) || this;\n _this.callback = callback;\n _this.addSpacer = addSpacer;\n return _this;\n }\n CenterWidthFeature.prototype.postConstruct = function () {\n var listener = this.setWidth.bind(this);\n this.addManagedPropertyListener('domLayout', listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, listener);\n if (this.addSpacer) {\n this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, listener);\n }\n this.setWidth();\n };\n CenterWidthFeature.prototype.setWidth = function () {\n var columnModel = this.columnModel;\n var printLayout = this.gridOptionsService.isDomLayout('print');\n var centerWidth = columnModel.getBodyContainerWidth();\n var leftWidth = columnModel.getDisplayedColumnsLeftWidth();\n var rightWidth = columnModel.getDisplayedColumnsRightWidth();\n var totalWidth;\n if (printLayout) {\n totalWidth = centerWidth + leftWidth + rightWidth;\n }\n else {\n totalWidth = centerWidth;\n if (this.addSpacer) {\n var relevantWidth = this.gridOptionsService.is('enableRtl') ? leftWidth : rightWidth;\n if (relevantWidth === 0 && this.scrollVisibleService.isVerticalScrollShowing()) {\n totalWidth += this.gridOptionsService.getScrollbarWidth();\n }\n }\n }\n this.callback(totalWidth);\n };\n __decorate$1E([\n Autowired('columnModel')\n ], CenterWidthFeature.prototype, \"columnModel\", void 0);\n __decorate$1E([\n Autowired('scrollVisibleService')\n ], CenterWidthFeature.prototype, \"scrollVisibleService\", void 0);\n __decorate$1E([\n PostConstruct\n ], CenterWidthFeature.prototype, \"postConstruct\", null);\n return CenterWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1G = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$i = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$f = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$i(arguments[i]));\n return ar;\n};\nvar RowContainerName;\n(function (RowContainerName) {\n RowContainerName[\"LEFT\"] = \"left\";\n RowContainerName[\"RIGHT\"] = \"right\";\n RowContainerName[\"CENTER\"] = \"center\";\n RowContainerName[\"FULL_WIDTH\"] = \"fullWidth\";\n RowContainerName[\"TOP_LEFT\"] = \"topLeft\";\n RowContainerName[\"TOP_RIGHT\"] = \"topRight\";\n RowContainerName[\"TOP_CENTER\"] = \"topCenter\";\n RowContainerName[\"TOP_FULL_WIDTH\"] = \"topFullWidth\";\n RowContainerName[\"STICKY_TOP_LEFT\"] = \"stickyTopLeft\";\n RowContainerName[\"STICKY_TOP_RIGHT\"] = \"stickyTopRight\";\n RowContainerName[\"STICKY_TOP_CENTER\"] = \"stickyTopCenter\";\n RowContainerName[\"STICKY_TOP_FULL_WIDTH\"] = \"stickyTopFullWidth\";\n RowContainerName[\"BOTTOM_LEFT\"] = \"bottomLeft\";\n RowContainerName[\"BOTTOM_RIGHT\"] = \"bottomRight\";\n RowContainerName[\"BOTTOM_CENTER\"] = \"bottomCenter\";\n RowContainerName[\"BOTTOM_FULL_WIDTH\"] = \"bottomFullWidth\";\n})(RowContainerName || (RowContainerName = {}));\nvar RowContainerType;\n(function (RowContainerType) {\n RowContainerType[\"LEFT\"] = \"left\";\n RowContainerType[\"RIGHT\"] = \"right\";\n RowContainerType[\"CENTER\"] = \"center\";\n RowContainerType[\"FULL_WIDTH\"] = \"fullWidth\";\n})(RowContainerType || (RowContainerType = {}));\nfunction getRowContainerTypeForName(name) {\n switch (name) {\n case RowContainerName.CENTER:\n case RowContainerName.TOP_CENTER:\n case RowContainerName.STICKY_TOP_CENTER:\n case RowContainerName.BOTTOM_CENTER:\n return RowContainerType.CENTER;\n case RowContainerName.LEFT:\n case RowContainerName.TOP_LEFT:\n case RowContainerName.STICKY_TOP_LEFT:\n case RowContainerName.BOTTOM_LEFT:\n return RowContainerType.LEFT;\n case RowContainerName.RIGHT:\n case RowContainerName.TOP_RIGHT:\n case RowContainerName.STICKY_TOP_RIGHT:\n case RowContainerName.BOTTOM_RIGHT:\n return RowContainerType.RIGHT;\n case RowContainerName.FULL_WIDTH:\n case RowContainerName.TOP_FULL_WIDTH:\n case RowContainerName.STICKY_TOP_FULL_WIDTH:\n case RowContainerName.BOTTOM_FULL_WIDTH:\n return RowContainerType.FULL_WIDTH;\n default:\n throw Error('Invalid Row Container Type');\n }\n}\nvar ContainerCssClasses = convertToMap([\n [RowContainerName.CENTER, 'ag-center-cols-container'],\n [RowContainerName.LEFT, 'ag-pinned-left-cols-container'],\n [RowContainerName.RIGHT, 'ag-pinned-right-cols-container'],\n [RowContainerName.FULL_WIDTH, 'ag-full-width-container'],\n [RowContainerName.TOP_CENTER, 'ag-floating-top-container'],\n [RowContainerName.TOP_LEFT, 'ag-pinned-left-floating-top'],\n [RowContainerName.TOP_RIGHT, 'ag-pinned-right-floating-top'],\n [RowContainerName.TOP_FULL_WIDTH, 'ag-floating-top-full-width-container'],\n [RowContainerName.STICKY_TOP_CENTER, 'ag-sticky-top-container'],\n [RowContainerName.STICKY_TOP_LEFT, 'ag-pinned-left-sticky-top'],\n [RowContainerName.STICKY_TOP_RIGHT, 'ag-pinned-right-sticky-top'],\n [RowContainerName.STICKY_TOP_FULL_WIDTH, 'ag-sticky-top-full-width-container'],\n [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-container'],\n [RowContainerName.BOTTOM_LEFT, 'ag-pinned-left-floating-bottom'],\n [RowContainerName.BOTTOM_RIGHT, 'ag-pinned-right-floating-bottom'],\n [RowContainerName.BOTTOM_FULL_WIDTH, 'ag-floating-bottom-full-width-container'],\n]);\nvar ViewportCssClasses = convertToMap([\n [RowContainerName.CENTER, 'ag-center-cols-viewport'],\n [RowContainerName.TOP_CENTER, 'ag-floating-top-viewport'],\n [RowContainerName.STICKY_TOP_CENTER, 'ag-sticky-top-viewport'],\n [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-viewport'],\n]);\nvar WrapperCssClasses = convertToMap([\n [RowContainerName.CENTER, 'ag-center-cols-clipper'],\n]);\nvar RowContainerCtrl = /** @class */ (function (_super) {\n __extends$1G(RowContainerCtrl, _super);\n function RowContainerCtrl(name) {\n var _this = _super.call(this) || this;\n _this.visible = true;\n // Maintaining a constant reference enables optimization in React.\n _this.EMPTY_CTRLS = [];\n _this.name = name;\n _this.isFullWithContainer =\n _this.name === RowContainerName.TOP_FULL_WIDTH\n || _this.name === RowContainerName.STICKY_TOP_FULL_WIDTH\n || _this.name === RowContainerName.BOTTOM_FULL_WIDTH\n || _this.name === RowContainerName.FULL_WIDTH;\n return _this;\n }\n RowContainerCtrl.getRowContainerCssClasses = function (name) {\n var containerClass = ContainerCssClasses.get(name);\n var viewportClass = ViewportCssClasses.get(name);\n var wrapperClass = WrapperCssClasses.get(name);\n return { container: containerClass, viewport: viewportClass, wrapper: wrapperClass };\n };\n RowContainerCtrl.getPinned = function (name) {\n switch (name) {\n case RowContainerName.BOTTOM_LEFT:\n case RowContainerName.TOP_LEFT:\n case RowContainerName.STICKY_TOP_LEFT:\n case RowContainerName.LEFT:\n return 'left';\n case RowContainerName.BOTTOM_RIGHT:\n case RowContainerName.TOP_RIGHT:\n case RowContainerName.STICKY_TOP_RIGHT:\n case RowContainerName.RIGHT:\n return 'right';\n default:\n return null;\n }\n };\n RowContainerCtrl.prototype.postConstruct = function () {\n var _this = this;\n this.enableRtl = this.gridOptionsService.is('enableRtl');\n this.embedFullWidthRows = this.gridOptionsService.is('embedFullWidthRows');\n this.forContainers([RowContainerName.CENTER], function () { return _this.viewportSizeFeature = _this.createManagedBean(new ViewportSizeFeature(_this)); });\n };\n RowContainerCtrl.prototype.registerWithCtrlsService = function () {\n switch (this.name) {\n case RowContainerName.CENTER:\n this.ctrlsService.registerCenterRowContainerCtrl(this);\n break;\n case RowContainerName.LEFT:\n this.ctrlsService.registerLeftRowContainerCtrl(this);\n break;\n case RowContainerName.RIGHT:\n this.ctrlsService.registerRightRowContainerCtrl(this);\n break;\n case RowContainerName.TOP_CENTER:\n this.ctrlsService.registerTopCenterRowContainerCtrl(this);\n break;\n case RowContainerName.TOP_LEFT:\n this.ctrlsService.registerTopLeftRowContainerCon(this);\n break;\n case RowContainerName.TOP_RIGHT:\n this.ctrlsService.registerTopRightRowContainerCtrl(this);\n break;\n case RowContainerName.STICKY_TOP_CENTER:\n this.ctrlsService.registerStickyTopCenterRowContainerCtrl(this);\n break;\n case RowContainerName.STICKY_TOP_LEFT:\n this.ctrlsService.registerStickyTopLeftRowContainerCon(this);\n break;\n case RowContainerName.STICKY_TOP_RIGHT:\n this.ctrlsService.registerStickyTopRightRowContainerCtrl(this);\n break;\n case RowContainerName.BOTTOM_CENTER:\n this.ctrlsService.registerBottomCenterRowContainerCtrl(this);\n break;\n case RowContainerName.BOTTOM_LEFT:\n this.ctrlsService.registerBottomLeftRowContainerCtrl(this);\n break;\n case RowContainerName.BOTTOM_RIGHT:\n this.ctrlsService.registerBottomRightRowContainerCtrl(this);\n break;\n }\n };\n RowContainerCtrl.prototype.forContainers = function (names, callback) {\n if (names.indexOf(this.name) >= 0) {\n callback();\n }\n };\n RowContainerCtrl.prototype.getContainerElement = function () {\n return this.eContainer;\n };\n RowContainerCtrl.prototype.getViewportSizeFeature = function () {\n return this.viewportSizeFeature;\n };\n RowContainerCtrl.prototype.setComp = function (view, eContainer, eViewport, eWrapper) {\n var _this = this;\n this.comp = view;\n this.eContainer = eContainer;\n this.eViewport = eViewport;\n this.eWrapper = eWrapper;\n this.createManagedBean(new RowContainerEventsFeature(this.eContainer));\n this.addPreventScrollWhileDragging();\n this.listenOnDomOrder();\n this.stopHScrollOnPinnedRows();\n var allTopNoFW = [RowContainerName.TOP_CENTER, RowContainerName.TOP_LEFT, RowContainerName.TOP_RIGHT];\n var allStickyTopNoFW = [RowContainerName.STICKY_TOP_CENTER, RowContainerName.STICKY_TOP_LEFT, RowContainerName.STICKY_TOP_RIGHT];\n var allBottomNoFW = [RowContainerName.BOTTOM_CENTER, RowContainerName.BOTTOM_LEFT, RowContainerName.BOTTOM_RIGHT];\n var allMiddleNoFW = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT];\n var allNoFW = __spread$f(allTopNoFW, allBottomNoFW, allMiddleNoFW, allStickyTopNoFW);\n var allMiddle = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT, RowContainerName.FULL_WIDTH];\n var allCenter = [RowContainerName.CENTER, RowContainerName.TOP_CENTER, RowContainerName.STICKY_TOP_CENTER, RowContainerName.BOTTOM_CENTER];\n var allLeft = [RowContainerName.LEFT, RowContainerName.BOTTOM_LEFT, RowContainerName.TOP_LEFT, RowContainerName.STICKY_TOP_LEFT];\n var allRight = [RowContainerName.RIGHT, RowContainerName.BOTTOM_RIGHT, RowContainerName.TOP_RIGHT, RowContainerName.STICKY_TOP_RIGHT];\n this.forContainers(allLeft, function () {\n _this.pinnedWidthFeature = _this.createManagedBean(new SetPinnedLeftWidthFeature(_this.eContainer));\n _this.addManagedListener(_this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, function () { return _this.onPinnedWidthChanged(); });\n });\n this.forContainers(allRight, function () {\n _this.pinnedWidthFeature = _this.createManagedBean(new SetPinnedRightWidthFeature(_this.eContainer));\n _this.addManagedListener(_this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, function () { return _this.onPinnedWidthChanged(); });\n });\n this.forContainers(allMiddle, function () { return _this.createManagedBean(new SetHeightFeature(_this.eContainer, _this.eWrapper)); });\n this.forContainers(allNoFW, function () { return _this.createManagedBean(new DragListenerFeature(_this.eContainer)); });\n this.forContainers(allCenter, function () { return _this.createManagedBean(new CenterWidthFeature(function (width) { return _this.comp.setContainerWidth(width + \"px\"); })); });\n if (isInvisibleScrollbar()) {\n this.forContainers([RowContainerName.CENTER], function () {\n var pinnedWidthChangedEvent = _this.enableRtl ? Events.EVENT_LEFT_PINNED_WIDTH_CHANGED : Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED;\n _this.addManagedListener(_this.eventService, pinnedWidthChangedEvent, function () { return _this.refreshPaddingForFakeScrollbar(); });\n });\n this.refreshPaddingForFakeScrollbar();\n }\n this.addListeners();\n this.registerWithCtrlsService();\n };\n RowContainerCtrl.prototype.refreshPaddingForFakeScrollbar = function () {\n var _a = this, enableRtl = _a.enableRtl, columnModel = _a.columnModel, name = _a.name, eWrapper = _a.eWrapper, eContainer = _a.eContainer;\n var sideToCheck = enableRtl ? RowContainerName.LEFT : RowContainerName.RIGHT;\n this.forContainers([RowContainerName.CENTER, sideToCheck], function () {\n var pinnedWidth = columnModel.getContainerWidth(sideToCheck);\n var marginSide = enableRtl ? 'marginLeft' : 'marginRight';\n if (name === RowContainerName.CENTER) {\n eWrapper.style[marginSide] = pinnedWidth ? '0px' : '16px';\n }\n else {\n eContainer.style[marginSide] = pinnedWidth ? '16px' : '0px';\n }\n });\n };\n RowContainerCtrl.prototype.addListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, function () { return _this.onScrollVisibilityChanged(); });\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, function () { return _this.onDisplayedColumnsChanged(); });\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () { return _this.onDisplayedColumnsWidthChanged(); });\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_ROWS_CHANGED, function (params) { return _this.onDisplayedRowsChanged(params.afterScroll); });\n this.onScrollVisibilityChanged();\n this.onDisplayedColumnsChanged();\n this.onDisplayedColumnsWidthChanged();\n this.onDisplayedRowsChanged();\n };\n RowContainerCtrl.prototype.listenOnDomOrder = function () {\n var _this = this;\n // sticky section must show rows in set order\n var allStickyContainers = [RowContainerName.STICKY_TOP_CENTER, RowContainerName.STICKY_TOP_LEFT, RowContainerName.STICKY_TOP_RIGHT, RowContainerName.STICKY_TOP_FULL_WIDTH];\n var isStickContainer = allStickyContainers.indexOf(this.name) >= 0;\n if (isStickContainer) {\n this.comp.setDomOrder(true);\n return;\n }\n var listener = function () {\n var isEnsureDomOrder = _this.gridOptionsService.is('ensureDomOrder');\n var isPrintLayout = _this.gridOptionsService.isDomLayout('print');\n _this.comp.setDomOrder(isEnsureDomOrder || isPrintLayout);\n };\n this.addManagedPropertyListener('domLayout', listener);\n listener();\n };\n // when editing a pinned row, if the cell is half outside the scrollable area, the browser can\n // scroll the column into view. we do not want this, the pinned sections should never scroll.\n // so we listen to scrolls on these containers and reset the scroll if we find one.\n RowContainerCtrl.prototype.stopHScrollOnPinnedRows = function () {\n var _this = this;\n this.forContainers([RowContainerName.TOP_CENTER, RowContainerName.STICKY_TOP_CENTER, RowContainerName.BOTTOM_CENTER], function () {\n var resetScrollLeft = function () { return _this.eViewport.scrollLeft = 0; };\n _this.addManagedListener(_this.eViewport, 'scroll', resetScrollLeft);\n });\n };\n RowContainerCtrl.prototype.onDisplayedColumnsChanged = function () {\n var _this = this;\n this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });\n };\n RowContainerCtrl.prototype.onDisplayedColumnsWidthChanged = function () {\n var _this = this;\n this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });\n };\n RowContainerCtrl.prototype.onScrollVisibilityChanged = function () {\n var scrollWidth = this.gridOptionsService.getScrollbarWidth() || 0;\n if (this.name === RowContainerName.CENTER) {\n var visible = this.scrollVisibleService.isHorizontalScrollShowing();\n var scrollbarWidth = visible ? scrollWidth : 0;\n var size = scrollbarWidth == 0 ? '100%' : \"calc(100% + \" + scrollbarWidth + \"px)\";\n this.comp.setViewportHeight(size);\n }\n if (this.name === RowContainerName.FULL_WIDTH) {\n var pad = isInvisibleScrollbar() ? 16 : 0;\n var size = \"calc(100% - \" + pad + \"px)\";\n this.eContainer.style.setProperty('width', size);\n }\n };\n // this methods prevents the grid views from being scrolled while the dragService is being used\n // eg. the view should not scroll up and down while dragging rows using the rowDragComp.\n RowContainerCtrl.prototype.addPreventScrollWhileDragging = function () {\n var _this = this;\n var preventScroll = function (e) {\n if (_this.dragService.isDragging()) {\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n };\n this.eContainer.addEventListener('touchmove', preventScroll, { passive: false });\n this.addDestroyFunc(function () { return _this.eContainer.removeEventListener('touchmove', preventScroll); });\n };\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged\n RowContainerCtrl.prototype.onHorizontalViewportChanged = function () {\n var scrollWidth = this.getCenterWidth();\n var scrollPosition = this.getCenterViewportScrollLeft();\n this.columnModel.setViewportPosition(scrollWidth, scrollPosition);\n };\n RowContainerCtrl.prototype.getCenterWidth = function () {\n return getInnerWidth(this.eViewport);\n };\n RowContainerCtrl.prototype.getCenterViewportScrollLeft = function () {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n return getScrollLeft(this.eViewport, this.enableRtl);\n };\n RowContainerCtrl.prototype.registerViewportResizeListener = function (listener) {\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eViewport, listener);\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n };\n RowContainerCtrl.prototype.isViewportVisible = function () {\n return isVisible(this.eViewport);\n };\n RowContainerCtrl.prototype.getViewportScrollLeft = function () {\n return getScrollLeft(this.eViewport, this.enableRtl);\n };\n RowContainerCtrl.prototype.isHorizontalScrollShowing = function () {\n var isAlwaysShowHorizontalScroll = this.gridOptionsService.is('alwaysShowHorizontalScroll');\n return isAlwaysShowHorizontalScroll || isHorizontalScrollShowing(this.eViewport);\n };\n RowContainerCtrl.prototype.getViewportElement = function () {\n return this.eViewport;\n };\n RowContainerCtrl.prototype.setContainerTranslateX = function (amount) {\n this.eContainer.style.transform = \"translateX(\" + amount + \"px)\";\n };\n RowContainerCtrl.prototype.getHScrollPosition = function () {\n var res = {\n left: this.eViewport.scrollLeft,\n right: this.eViewport.scrollLeft + this.eViewport.offsetWidth\n };\n return res;\n };\n RowContainerCtrl.prototype.setCenterViewportScrollLeft = function (value) {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n setScrollLeft(this.eViewport, value, this.enableRtl);\n };\n RowContainerCtrl.prototype.isContainerVisible = function () {\n var pinned = RowContainerCtrl.getPinned(this.name);\n return !pinned || (!!this.pinnedWidthFeature && this.pinnedWidthFeature.getWidth() > 0);\n };\n RowContainerCtrl.prototype.onPinnedWidthChanged = function () {\n var visible = this.isContainerVisible();\n if (this.visible != visible) {\n this.visible = visible;\n this.onDisplayedRowsChanged();\n }\n if (isInvisibleScrollbar()) {\n this.refreshPaddingForFakeScrollbar();\n }\n };\n RowContainerCtrl.prototype.onDisplayedRowsChanged = function (useFlushSync) {\n var _this = this;\n if (useFlushSync === void 0) { useFlushSync = false; }\n if (this.visible) {\n var printLayout_1 = this.gridOptionsService.isDomLayout('print');\n var doesRowMatch = function (rowCtrl) {\n var fullWidthRow = rowCtrl.isFullWidth();\n var embedFW = _this.embedFullWidthRows || printLayout_1;\n var match = _this.isFullWithContainer ?\n !embedFW && fullWidthRow\n : embedFW || !fullWidthRow;\n return match;\n };\n // this list contains either all pinned top, center or pinned bottom rows\n // this filters out rows not for this container, eg if it's a full with row, but we are not full with container\n var rowsThisContainer = this.getRowCtrls().filter(doesRowMatch);\n this.comp.setRowCtrls(rowsThisContainer, useFlushSync);\n }\n else {\n this.comp.setRowCtrls(this.EMPTY_CTRLS, false);\n }\n };\n RowContainerCtrl.prototype.getRowCtrls = function () {\n switch (this.name) {\n case RowContainerName.TOP_CENTER:\n case RowContainerName.TOP_LEFT:\n case RowContainerName.TOP_RIGHT:\n case RowContainerName.TOP_FULL_WIDTH:\n return this.rowRenderer.getTopRowCtrls();\n case RowContainerName.STICKY_TOP_CENTER:\n case RowContainerName.STICKY_TOP_LEFT:\n case RowContainerName.STICKY_TOP_RIGHT:\n case RowContainerName.STICKY_TOP_FULL_WIDTH:\n return this.rowRenderer.getStickyTopRowCtrls();\n case RowContainerName.BOTTOM_CENTER:\n case RowContainerName.BOTTOM_LEFT:\n case RowContainerName.BOTTOM_RIGHT:\n case RowContainerName.BOTTOM_FULL_WIDTH:\n return this.rowRenderer.getBottomRowCtrls();\n default:\n return this.rowRenderer.getRowCtrls();\n }\n };\n __decorate$1D([\n Autowired('scrollVisibleService')\n ], RowContainerCtrl.prototype, \"scrollVisibleService\", void 0);\n __decorate$1D([\n Autowired('dragService')\n ], RowContainerCtrl.prototype, \"dragService\", void 0);\n __decorate$1D([\n Autowired('ctrlsService')\n ], RowContainerCtrl.prototype, \"ctrlsService\", void 0);\n __decorate$1D([\n Autowired('columnModel')\n ], RowContainerCtrl.prototype, \"columnModel\", void 0);\n __decorate$1D([\n Autowired('resizeObserverService')\n ], RowContainerCtrl.prototype, \"resizeObserverService\", void 0);\n __decorate$1D([\n Autowired('rowRenderer')\n ], RowContainerCtrl.prototype, \"rowRenderer\", void 0);\n __decorate$1D([\n PostConstruct\n ], RowContainerCtrl.prototype, \"postConstruct\", null);\n return RowContainerCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1F = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GRID_BODY_TEMPLATE = /* html */ \"<div class=\\\"ag-root ag-unselectable\\\" role=\\\"treegrid\\\">\\n <ag-header-root ref=\\\"gridHeader\\\"></ag-header-root>\\n <div class=\\\"ag-floating-top\\\" ref=\\\"eTop\\\" role=\\\"presentation\\\">\\n <ag-row-container ref=\\\"topLeftContainer\\\" name=\\\"\" + RowContainerName.TOP_LEFT + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"topCenterContainer\\\" name=\\\"\" + RowContainerName.TOP_CENTER + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"topRightContainer\\\" name=\\\"\" + RowContainerName.TOP_RIGHT + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"topFullWidthContainer\\\" name=\\\"\" + RowContainerName.TOP_FULL_WIDTH + \"\\\"></ag-row-container>\\n </div>\\n <div class=\\\"ag-body\\\" ref=\\\"eBody\\\" role=\\\"presentation\\\">\\n <div class=\\\"ag-body-clipper\\\" ref=\\\"eBodyClipper\\\" role=\\\"presentation\\\">\\n <div class=\\\"ag-body-viewport\\\" ref=\\\"eBodyViewport\\\" role=\\\"presentation\\\">\\n <ag-row-container ref=\\\"leftContainer\\\" name=\\\"\" + RowContainerName.LEFT + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"centerContainer\\\" name=\\\"\" + RowContainerName.CENTER + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"rightContainer\\\" name=\\\"\" + RowContainerName.RIGHT + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"fullWidthContainer\\\" name=\\\"\" + RowContainerName.FULL_WIDTH + \"\\\"></ag-row-container>\\n </div>\\n </div>\\n <ag-fake-vertical-scroll></ag-fake-vertical-scroll>\\n </div>\\n <div class=\\\"ag-sticky-top\\\" ref=\\\"eStickyTop\\\" role=\\\"presentation\\\">\\n <ag-row-container ref=\\\"stickyTopLeftContainer\\\" name=\\\"\" + RowContainerName.STICKY_TOP_LEFT + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"stickyTopCenterContainer\\\" name=\\\"\" + RowContainerName.STICKY_TOP_CENTER + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"stickyTopRightContainer\\\" name=\\\"\" + RowContainerName.STICKY_TOP_RIGHT + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"stickyTopFullWidthContainer\\\" name=\\\"\" + RowContainerName.STICKY_TOP_FULL_WIDTH + \"\\\"></ag-row-container>\\n </div>\\n <div class=\\\"ag-floating-bottom\\\" ref=\\\"eBottom\\\" role=\\\"presentation\\\">\\n <ag-row-container ref=\\\"bottomLeftContainer\\\" name=\\\"\" + RowContainerName.BOTTOM_LEFT + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"bottomCenterContainer\\\" name=\\\"\" + RowContainerName.BOTTOM_CENTER + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"bottomRightContainer\\\" name=\\\"\" + RowContainerName.BOTTOM_RIGHT + \"\\\"></ag-row-container>\\n <ag-row-container ref=\\\"bottomFullWidthContainer\\\" name=\\\"\" + RowContainerName.BOTTOM_FULL_WIDTH + \"\\\"></ag-row-container>\\n </div>\\n <ag-fake-horizontal-scroll></ag-fake-horizontal-scroll>\\n <ag-overlay-wrapper></ag-overlay-wrapper>\\n </div>\";\nvar GridBodyComp = /** @class */ (function (_super) {\n __extends$1F(GridBodyComp, _super);\n function GridBodyComp() {\n return _super.call(this, GRID_BODY_TEMPLATE) || this;\n }\n GridBodyComp.prototype.init = function () {\n var _this = this;\n var setHeight = function (height, element) {\n var heightString = height + \"px\";\n element.style.minHeight = heightString;\n element.style.height = heightString;\n };\n var compProxy = {\n setRowAnimationCssOnBodyViewport: function (cssClass, animate) { return _this.setRowAnimationCssOnBodyViewport(cssClass, animate); },\n setColumnCount: function (count) { return setAriaColCount(_this.getGui(), count); },\n setRowCount: function (count) { return setAriaRowCount(_this.getGui(), count); },\n setTopHeight: function (height) { return setHeight(height, _this.eTop); },\n setBottomHeight: function (height) { return setHeight(height, _this.eBottom); },\n setTopDisplay: function (display) { return _this.eTop.style.display = display; },\n setBottomDisplay: function (display) { return _this.eBottom.style.display = display; },\n setStickyTopHeight: function (height) { return _this.eStickyTop.style.height = height; },\n setStickyTopTop: function (top) { return _this.eStickyTop.style.top = top; },\n setStickyTopWidth: function (width) { return _this.eStickyTop.style.width = width; },\n setColumnMovingCss: function (cssClass, flag) { return _this.addOrRemoveCssClass(cssClass, flag); },\n updateLayoutClasses: function (cssClass, params) {\n var classLists = [\n _this.eBodyViewport.classList,\n _this.eBodyClipper.classList,\n _this.eBody.classList\n ];\n classLists.forEach(function (classList) {\n classList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n classList.toggle(LayoutCssClasses.NORMAL, params.normal);\n classList.toggle(LayoutCssClasses.PRINT, params.print);\n });\n _this.addOrRemoveCssClass(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n _this.addOrRemoveCssClass(LayoutCssClasses.NORMAL, params.normal);\n _this.addOrRemoveCssClass(LayoutCssClasses.PRINT, params.print);\n },\n setAlwaysVerticalScrollClass: function (cssClass, on) {\n return _this.eBodyViewport.classList.toggle(CSS_CLASS_FORCE_VERTICAL_SCROLL, on);\n },\n registerBodyViewportResizeListener: function (listener) {\n var unsubscribeFromResize = _this.resizeObserverService.observeResize(_this.eBodyViewport, listener);\n _this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n },\n setPinnedTopBottomOverflowY: function (overflow) { return _this.eTop.style.overflowY = _this.eBottom.style.overflowY = overflow; },\n setCellSelectableCss: function (cssClass, selectable) {\n [_this.eTop, _this.eBodyViewport, _this.eBottom]\n .forEach(function (ct) { return ct.classList.toggle(CSS_CLASS_CELL_SELECTABLE, selectable); });\n },\n setBodyViewportWidth: function (width) { return _this.eBodyViewport.style.width = width; }\n };\n this.ctrl = this.createManagedBean(new GridBodyCtrl());\n this.ctrl.setComp(compProxy, this.getGui(), this.eBodyViewport, this.eTop, this.eBottom, this.eStickyTop);\n if (this.rangeService || this.gridOptionsService.get('rowSelection') === 'multiple') {\n setAriaMultiSelectable(this.getGui(), true);\n }\n };\n GridBodyComp.prototype.setRowAnimationCssOnBodyViewport = function (cssClass, animateRows) {\n var bodyViewportClassList = this.eBodyViewport.classList;\n bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_ON, animateRows);\n bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_OFF, !animateRows);\n };\n GridBodyComp.prototype.getFloatingTopBottom = function () {\n return [this.eTop, this.eBottom];\n };\n __decorate$1C([\n Autowired('resizeObserverService')\n ], GridBodyComp.prototype, \"resizeObserverService\", void 0);\n __decorate$1C([\n Optional('rangeService')\n ], GridBodyComp.prototype, \"rangeService\", void 0);\n __decorate$1C([\n RefSelector('eBodyViewport')\n ], GridBodyComp.prototype, \"eBodyViewport\", void 0);\n __decorate$1C([\n RefSelector('eStickyTop')\n ], GridBodyComp.prototype, \"eStickyTop\", void 0);\n __decorate$1C([\n RefSelector('eTop')\n ], GridBodyComp.prototype, \"eTop\", void 0);\n __decorate$1C([\n RefSelector('eBottom')\n ], GridBodyComp.prototype, \"eBottom\", void 0);\n __decorate$1C([\n RefSelector('gridHeader')\n ], GridBodyComp.prototype, \"headerRootComp\", void 0);\n __decorate$1C([\n RefSelector('eBodyClipper')\n ], GridBodyComp.prototype, \"eBodyClipper\", void 0);\n __decorate$1C([\n RefSelector('eBody')\n ], GridBodyComp.prototype, \"eBody\", void 0);\n __decorate$1C([\n PostConstruct\n ], GridBodyComp.prototype, \"init\", null);\n return GridBodyComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1E = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ScrollVisibleService = /** @class */ (function (_super) {\n __extends$1E(ScrollVisibleService, _super);\n function ScrollVisibleService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ScrollVisibleService.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n };\n ScrollVisibleService.prototype.onDisplayedColumnsChanged = function () {\n this.update();\n };\n ScrollVisibleService.prototype.onDisplayedColumnsWidthChanged = function () {\n this.update();\n };\n ScrollVisibleService.prototype.update = function () {\n // because of column animation (which takes 200ms), we have to do this twice.\n // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n // will animate to the left to fill the gap. this animation means just after\n // the cols are removed, the remaining cols are still in the original location\n // at the start of the animation, so pre animation the H scrollbar is still needed,\n // but post animation it is not.\n this.updateImpl();\n setTimeout(this.updateImpl.bind(this), 500);\n };\n ScrollVisibleService.prototype.updateImpl = function () {\n var centerRowCtrl = this.ctrlsService.getCenterRowContainerCtrl();\n if (!centerRowCtrl) {\n return;\n }\n var params = {\n horizontalScrollShowing: centerRowCtrl.isHorizontalScrollShowing(),\n verticalScrollShowing: this.isVerticalScrollShowing()\n };\n this.setScrollsVisible(params);\n };\n ScrollVisibleService.prototype.setScrollsVisible = function (params) {\n var atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing ||\n this.verticalScrollShowing !== params.verticalScrollShowing;\n if (atLeastOneDifferent) {\n this.horizontalScrollShowing = params.horizontalScrollShowing;\n this.verticalScrollShowing = params.verticalScrollShowing;\n var event_1 = {\n type: Events.EVENT_SCROLL_VISIBILITY_CHANGED\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n // used by pagination service - to know page height\n ScrollVisibleService.prototype.isHorizontalScrollShowing = function () {\n return this.horizontalScrollShowing;\n };\n // used by header container\n ScrollVisibleService.prototype.isVerticalScrollShowing = function () {\n return this.verticalScrollShowing;\n };\n __decorate$1B([\n Autowired('ctrlsService')\n ], ScrollVisibleService.prototype, \"ctrlsService\", void 0);\n __decorate$1B([\n PostConstruct\n ], ScrollVisibleService.prototype, \"postConstruct\", null);\n ScrollVisibleService = __decorate$1B([\n Bean('scrollVisibleService')\n ], ScrollVisibleService);\n return ScrollVisibleService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1D = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MouseEventService = /** @class */ (function (_super) {\n __extends$1D(MouseEventService, _super);\n function MouseEventService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();\n return _this;\n }\n MouseEventService_1 = MouseEventService;\n // we put the instance id onto the main DOM element. this is used for events, when grids are inside grids,\n // so the grid can work out if the even came from this grid or a grid inside this one. see the ctrl+v logic\n // for where this is used.\n MouseEventService.prototype.stampTopLevelGridCompWithGridInstance = function (eGridDiv) {\n eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;\n };\n MouseEventService.prototype.getRenderedCellForEvent = function (event) {\n return getCtrlForEventTarget(this.gridOptionsService, event.target, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n };\n // walks the path of the event, and returns true if this grid is the first one that it finds. if doing\n // master / detail grids, and a child grid is found, then it returns false. this stops things like copy/paste\n // getting executed on many grids at the same time.\n MouseEventService.prototype.isEventFromThisGrid = function (event) {\n var res = this.isElementInThisGrid(event.target);\n return res;\n };\n MouseEventService.prototype.isElementInThisGrid = function (element) {\n var pointer = element;\n while (pointer) {\n var instanceId = pointer[MouseEventService_1.GRID_DOM_KEY];\n if (exists(instanceId)) {\n var eventFromThisGrid = instanceId === this.gridInstanceId;\n return eventFromThisGrid;\n }\n pointer = pointer.parentElement;\n }\n return false;\n };\n MouseEventService.prototype.getCellPositionForEvent = function (event) {\n var cellComp = this.getRenderedCellForEvent(event);\n return cellComp ? cellComp.getCellPosition() : null;\n };\n MouseEventService.prototype.getNormalisedPosition = function (event) {\n var gridPanelHasScrolls = this.gridOptionsService.isDomLayout('normal');\n var e = event;\n var x;\n var y;\n if (e.clientX != null || e.clientY != null) {\n x = e.clientX;\n y = e.clientY;\n }\n else {\n x = e.x;\n y = e.y;\n }\n if (gridPanelHasScrolls) {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var vRange = gridBodyCon.getScrollFeature().getVScrollPosition();\n var hRange = gridBodyCon.getScrollFeature().getHScrollPosition();\n x += hRange.left;\n y += vRange.top;\n }\n return { x: x, y: y };\n };\n var MouseEventService_1;\n MouseEventService.gridInstanceSequence = new NumberSequence();\n MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';\n __decorate$1A([\n Autowired('ctrlsService')\n ], MouseEventService.prototype, \"ctrlsService\", void 0);\n MouseEventService = MouseEventService_1 = __decorate$1A([\n Bean('mouseEventService')\n ], MouseEventService);\n return MouseEventService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1C = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$7 = (undefined && undefined.__assign) || function () {\n __assign$7 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$7.apply(this, arguments);\n};\nvar __decorate$1z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NavigationService = /** @class */ (function (_super) {\n __extends$1C(NavigationService, _super);\n function NavigationService() {\n var _this = _super.call(this) || this;\n _this.onPageDown = throttle(_this.onPageDown, 100);\n _this.onPageUp = throttle(_this.onPageUp, 100);\n return _this;\n }\n NavigationService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.gridBodyCon = p.gridBodyCtrl;\n });\n };\n NavigationService.prototype.handlePageScrollingKey = function (event) {\n var key = event.key;\n var alt = event.altKey;\n var ctrl = event.ctrlKey || event.metaKey;\n var rangeServiceShouldHandleShift = !!this.rangeService && event.shiftKey;\n // home and end can be processed without knowing the currently selected cell, this can occur for full width rows.\n var currentCell = this.mouseEventService.getCellPositionForEvent(event);\n var processed = false;\n switch (key) {\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n // handle home and end when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onHomeOrEndKey(key);\n processed = true;\n }\n break;\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n case KeyCode.UP:\n case KeyCode.DOWN:\n if (!currentCell) {\n return false;\n }\n // handle when ctrl is pressed only, if shift is pressed\n // it will be handled by the rangeService\n if (ctrl && !alt && !rangeServiceShouldHandleShift) {\n this.onCtrlUpDownLeftRight(key, currentCell);\n processed = true;\n }\n break;\n case KeyCode.PAGE_DOWN:\n if (!currentCell) {\n return false;\n }\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageDown(currentCell);\n processed = true;\n }\n break;\n case KeyCode.PAGE_UP:\n if (!currentCell) {\n return false;\n }\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageUp(currentCell);\n processed = true;\n }\n break;\n }\n if (processed) {\n event.preventDefault();\n }\n return processed;\n };\n NavigationService.prototype.navigateTo = function (navigateParams) {\n var scrollIndex = navigateParams.scrollIndex, scrollType = navigateParams.scrollType, scrollColumn = navigateParams.scrollColumn, focusIndex = navigateParams.focusIndex, focusColumn = navigateParams.focusColumn;\n if (exists(scrollColumn) && !scrollColumn.isPinned()) {\n this.gridBodyCon.getScrollFeature().ensureColumnVisible(scrollColumn);\n }\n if (exists(scrollIndex)) {\n this.gridBodyCon.getScrollFeature().ensureIndexVisible(scrollIndex, scrollType);\n }\n // setFocusedCell relies on the browser default focus behavior to scroll the focused cell into view,\n // however, this behavior will cause the cell border to be cut off, or if we have sticky rows, the\n // cell will be completely hidden, so we call ensureIndexVisible without a position to guarantee\n // minimal scroll to get the row into view.\n if (!navigateParams.isAsync) {\n this.gridBodyCon.getScrollFeature().ensureIndexVisible(focusIndex);\n }\n // if we don't do this, the range will be left on the last cell, which will leave the last focused cell\n // highlighted.\n this.focusService.setFocusedCell({ rowIndex: focusIndex, column: focusColumn, rowPinned: null, forceBrowserFocus: true });\n if (this.rangeService) {\n var cellPosition = { rowIndex: focusIndex, rowPinned: null, column: focusColumn };\n this.rangeService.setRangeToCell(cellPosition);\n }\n };\n NavigationService.prototype.onPageDown = function (gridCell) {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n var pixelsInOnePage = this.getViewportHeight();\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;\n var currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);\n if (this.columnModel.isAutoRowHeightActive()) {\n this.navigateToNextPageWithAutoHeight(gridCell, currentPageBottomRow);\n }\n else {\n this.navigateToNextPage(gridCell, currentPageBottomRow);\n }\n };\n NavigationService.prototype.onPageUp = function (gridCell) {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageTopPixel = scrollPosition.top;\n var currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);\n if (this.columnModel.isAutoRowHeightActive()) {\n this.navigateToNextPageWithAutoHeight(gridCell, currentPageTopRow, true);\n }\n else {\n this.navigateToNextPage(gridCell, currentPageTopRow, true);\n }\n };\n NavigationService.prototype.navigateToNextPage = function (gridCell, scrollIndex, up) {\n if (up === void 0) { up = false; }\n var pixelsInOnePage = this.getViewportHeight();\n var firstRow = this.paginationProxy.getPageFirstRow();\n var lastRow = this.paginationProxy.getPageLastRow();\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);\n var rowPixelDiff = up\n ? ((currentRowNode === null || currentRowNode === void 0 ? void 0 : currentRowNode.rowHeight) - pixelsInOnePage - pagingPixelOffset)\n : (pixelsInOnePage - pagingPixelOffset);\n var nextCellPixel = (currentRowNode === null || currentRowNode === void 0 ? void 0 : currentRowNode.rowTop) + rowPixelDiff;\n var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n if (focusIndex === gridCell.rowIndex) {\n var diff = up ? -1 : 1;\n scrollIndex = focusIndex = gridCell.rowIndex + diff;\n }\n var scrollType;\n if (up) {\n scrollType = 'bottom';\n if (focusIndex < firstRow) {\n focusIndex = firstRow;\n }\n if (scrollIndex < firstRow) {\n scrollIndex = firstRow;\n }\n }\n else {\n scrollType = 'top';\n if (focusIndex > lastRow) {\n focusIndex = lastRow;\n }\n if (scrollIndex > lastRow) {\n scrollIndex = lastRow;\n }\n }\n if (this.isRowTallerThanView(focusIndex)) {\n scrollIndex = focusIndex;\n scrollType = 'top';\n }\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: scrollType,\n scrollColumn: null,\n focusIndex: focusIndex,\n focusColumn: gridCell.column\n });\n };\n NavigationService.prototype.navigateToNextPageWithAutoHeight = function (gridCell, scrollIndex, up) {\n var _this = this;\n if (up === void 0) { up = false; }\n // because autoHeight will calculate the height of rows after scroll\n // first we scroll towards the required point, then we add a small\n // delay to allow the height to be recalculated, check which index\n // should be focused and then finally navigate to that index.\n // TODO: we should probably have an event fired once to scrollbar has\n // settled and all rowHeights have been calculated instead of relying\n // on a setTimeout of 50ms.\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: up ? 'bottom' : 'top',\n scrollColumn: null,\n focusIndex: scrollIndex,\n focusColumn: gridCell.column\n });\n setTimeout(function () {\n var focusIndex = _this.getNextFocusIndexForAutoHeight(gridCell, up);\n _this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: up ? 'bottom' : 'top',\n scrollColumn: null,\n focusIndex: focusIndex,\n focusColumn: gridCell.column,\n isAsync: true\n });\n }, 50);\n };\n NavigationService.prototype.getNextFocusIndexForAutoHeight = function (gridCell, up) {\n var _a;\n if (up === void 0) { up = false; }\n var step = up ? -1 : 1;\n var pixelsInOnePage = this.getViewportHeight();\n var lastRowIndex = this.paginationProxy.getPageLastRow();\n var pixelSum = 0;\n var currentIndex = gridCell.rowIndex;\n while (currentIndex >= 0 && currentIndex <= lastRowIndex) {\n var currentCell = this.paginationProxy.getRow(currentIndex);\n if (currentCell) {\n var currentCellHeight = (_a = currentCell.rowHeight) !== null && _a !== void 0 ? _a : 0;\n if (pixelSum + currentCellHeight > pixelsInOnePage) {\n break;\n }\n pixelSum += currentCellHeight;\n }\n currentIndex += step;\n }\n return Math.max(0, Math.min(currentIndex, lastRowIndex));\n };\n NavigationService.prototype.getViewportHeight = function () {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n var scrollbarWidth = this.gridOptionsService.getScrollbarWidth();\n var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n if (this.ctrlsService.getCenterRowContainerCtrl().isHorizontalScrollShowing()) {\n pixelsInOnePage -= scrollbarWidth;\n }\n return pixelsInOnePage;\n };\n NavigationService.prototype.isRowTallerThanView = function (rowIndex) {\n var rowNode = this.paginationProxy.getRow(rowIndex);\n if (!rowNode) {\n return false;\n }\n var rowHeight = rowNode.rowHeight;\n if (typeof rowHeight !== 'number') {\n return false;\n }\n return rowHeight > this.getViewportHeight();\n };\n NavigationService.prototype.onCtrlUpDownLeftRight = function (key, gridCell) {\n var cellToFocus = this.cellNavigationService.getNextCellToFocus(key, gridCell, true);\n var rowIndex = cellToFocus.rowIndex, column = cellToFocus.column;\n this.navigateTo({\n scrollIndex: rowIndex,\n scrollType: null,\n scrollColumn: column,\n focusIndex: rowIndex,\n focusColumn: column\n });\n };\n // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring\n // same cell into view (which means either scroll all the way up, or all the way down).\n NavigationService.prototype.onHomeOrEndKey = function (key) {\n var homeKey = key === KeyCode.PAGE_HOME;\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var columnToSelect = homeKey ? allColumns[0] : last(allColumns);\n var scrollIndex = homeKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: null,\n scrollColumn: columnToSelect,\n focusIndex: scrollIndex,\n focusColumn: columnToSelect\n });\n };\n // result of keyboard event\n NavigationService.prototype.onTabKeyDown = function (previous, keyboardEvent) {\n var backwards = keyboardEvent.shiftKey;\n var movedToNextCell = this.tabToNextCellCommon(previous, backwards, keyboardEvent);\n if (movedToNextCell) {\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n keyboardEvent.preventDefault();\n return;\n }\n // if we didn't move to next cell, then need to tab out of the cells, ie to the header (if going\n // backwards)\n if (backwards) {\n var _a = previous.getRowPosition(), rowIndex = _a.rowIndex, rowPinned = _a.rowPinned;\n var firstRow = rowPinned ? rowIndex === 0 : rowIndex === this.paginationProxy.getPageFirstRow();\n if (firstRow) {\n if (this.gridOptionsService.getNum('headerHeight') === 0) {\n this.focusService.focusNextGridCoreContainer(true, true);\n }\n else {\n keyboardEvent.preventDefault();\n this.focusService.focusLastHeader(keyboardEvent);\n }\n }\n }\n else {\n // if the case it's a popup editor, the focus is on the editor and not the previous cell.\n // in order for the tab navigation to work, we need to focus the browser back onto the\n // previous cell.\n if (previous instanceof CellCtrl) {\n previous.focusCell(true);\n }\n if (this.focusService.focusNextGridCoreContainer(backwards)) {\n keyboardEvent.preventDefault();\n }\n }\n };\n // comes from API\n NavigationService.prototype.tabToNextCell = function (backwards, event) {\n var focusedCell = this.focusService.getFocusedCell();\n // if no focus, then cannot navigate\n if (!focusedCell) {\n return false;\n }\n var cellOrRow = this.getCellByPosition(focusedCell);\n // if cell is not rendered, means user has scrolled away from the cell\n // or that the focusedCell is a Full Width Row\n if (!cellOrRow) {\n cellOrRow = this.rowRenderer.getRowByPosition(focusedCell);\n if (!cellOrRow || !cellOrRow.isFullWidth()) {\n return false;\n }\n }\n return this.tabToNextCellCommon(cellOrRow, backwards, event);\n };\n NavigationService.prototype.tabToNextCellCommon = function (previous, backwards, event) {\n var editing = previous.isEditing();\n // if cell is not editing, there is still chance row is editing if it's Full Row Editing\n if (!editing && previous instanceof CellCtrl) {\n var cell = previous;\n var row = cell.getRowCtrl();\n if (row) {\n editing = row.isEditing();\n }\n }\n var res;\n if (editing) {\n // if we are editing, we know it's not a Full Width Row (RowComp)\n if (this.gridOptionsService.get('editType') === 'fullRow') {\n res = this.moveToNextEditingRow(previous, backwards, event);\n }\n else {\n res = this.moveToNextEditingCell(previous, backwards, event);\n }\n }\n else {\n res = this.moveToNextCellNotEditing(previous, backwards);\n }\n // if a cell wasn't found, it's possible that focus was moved to the header\n return res || !!this.focusService.getFocusedHeader();\n };\n NavigationService.prototype.moveToNextEditingCell = function (previousCell, backwards, event) {\n if (event === void 0) { event = null; }\n var previousPos = previousCell.getCellPosition();\n // before we stop editing, we need to focus the cell element\n // so the grid doesn't detect that focus has left the grid\n previousCell.getGui().focus();\n // need to do this before getting next cell to edit, in case the next cell\n // has editable function (eg colDef.editable=func() ) and it depends on the\n // result of this cell, so need to save updates from the first edit, in case\n // the value is referenced in the function.\n previousCell.stopEditing();\n // find the next cell to start editing\n var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n if (nextCell == null) {\n return false;\n }\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n nextCell.startEditing(null, null, true, event);\n nextCell.focusCell(false);\n return true;\n };\n NavigationService.prototype.moveToNextEditingRow = function (previousCell, backwards, event) {\n if (event === void 0) { event = null; }\n var previousPos = previousCell.getCellPosition();\n // find the next cell to start editing\n var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n if (nextCell == null) {\n return false;\n }\n var nextPos = nextCell.getCellPosition();\n var previousEditable = this.isCellEditable(previousPos);\n var nextEditable = this.isCellEditable(nextPos);\n var rowsMatch = nextPos && previousPos.rowIndex === nextPos.rowIndex && previousPos.rowPinned === nextPos.rowPinned;\n if (previousEditable) {\n previousCell.setFocusOutOnEditor();\n }\n if (!rowsMatch) {\n var pRow = previousCell.getRowCtrl();\n pRow.stopEditing();\n var nRow = nextCell.getRowCtrl();\n nRow.startRowEditing(undefined, undefined, undefined, event);\n }\n if (nextEditable) {\n nextCell.setFocusInOnEditor();\n nextCell.focusCell();\n }\n else {\n nextCell.focusCell(true);\n }\n return true;\n };\n NavigationService.prototype.moveToNextCellNotEditing = function (previousCell, backwards) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var cellPos;\n if (previousCell instanceof RowCtrl) {\n cellPos = __assign$7(__assign$7({}, previousCell.getRowPosition()), { column: backwards ? displayedColumns[0] : last(displayedColumns) });\n }\n else {\n cellPos = previousCell.getCellPosition();\n }\n // find the next cell to start editing\n var nextCell = this.findNextCellToFocusOn(cellPos, backwards, false);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (nextCell instanceof CellCtrl) {\n nextCell.focusCell(true);\n }\n else if (nextCell) {\n return this.tryToFocusFullWidthRow(nextCell.getRowPosition(), backwards);\n }\n return exists(nextCell);\n };\n // called by the cell, when tab is pressed while editing.\n // @return: RenderedCell when navigation successful, otherwise null\n NavigationService.prototype.findNextCellToFocusOn = function (previousPosition, backwards, startEditing) {\n var nextPosition = previousPosition;\n while (true) {\n if (previousPosition !== nextPosition) {\n previousPosition = nextPosition;\n }\n if (!backwards) {\n nextPosition = this.getLastCellOfColSpan(nextPosition);\n }\n nextPosition = this.cellNavigationService.getNextTabbedCell(nextPosition, backwards);\n // allow user to override what cell to go to next\n var userFunc = this.gridOptionsService.getCallback('tabToNextCell');\n if (exists(userFunc)) {\n var params = {\n backwards: backwards,\n editing: startEditing,\n previousCellPosition: previousPosition,\n nextCellPosition: nextPosition ? nextPosition : null\n };\n var userCell = userFunc(params);\n if (exists(userCell)) {\n if (userCell.floating) {\n doOnce(function () { console.warn(\"AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n userCell.rowPinned = userCell.floating;\n }\n nextPosition = {\n rowIndex: userCell.rowIndex,\n column: userCell.column,\n rowPinned: userCell.rowPinned\n };\n }\n else {\n nextPosition = null;\n }\n }\n // if no 'next cell', means we have got to last cell of grid, so nothing to move to,\n // so bottom right cell going forwards, or top left going backwards\n if (!nextPosition) {\n return null;\n }\n if (nextPosition.rowIndex < 0) {\n var headerLen = this.headerNavigationService.getHeaderRowCount();\n this.focusService.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: headerLen + (nextPosition.rowIndex),\n column: nextPosition.column\n }\n });\n return null;\n }\n // if editing, but cell not editable, skip cell. we do this before we do all of\n // the 'ensure index visible' and 'flush all frames', otherwise if we are skipping\n // a bunch of cells (eg 10 rows) then all the work on ensuring cell visible is useless\n // (except for the last one) which causes grid to stall for a while.\n // note - for full row edit, we do focus non-editable cells, as the row stays in edit mode.\n var fullRowEdit = this.gridOptionsService.get('editType') === 'fullRow';\n if (startEditing && !fullRowEdit) {\n var cellIsEditable = this.isCellEditable(nextPosition);\n if (!cellIsEditable) {\n continue;\n }\n }\n this.ensureCellVisible(nextPosition);\n // we have to call this after ensureColumnVisible - otherwise it could be a virtual column\n // or row that is not currently in view, hence the renderedCell would not exist\n var nextCell = this.getCellByPosition(nextPosition);\n // if next cell is fullWidth row, then no rendered cell,\n // as fullWidth rows have no cells, so we skip it\n if (!nextCell) {\n var row = this.rowRenderer.getRowByPosition(nextPosition);\n if (!row || !row.isFullWidth() || startEditing) {\n continue;\n }\n return row;\n }\n if (nextCell.isSuppressNavigable()) {\n continue;\n }\n // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation\n // consistent, we set into range here also.\n if (this.rangeService) {\n this.rangeService.setRangeToCell(nextPosition);\n }\n // we successfully tabbed onto a grid cell, so return true\n return nextCell;\n }\n };\n NavigationService.prototype.isCellEditable = function (cell) {\n var rowNode = this.lookupRowNodeForCell(cell);\n if (rowNode) {\n return cell.column.isCellEditable(rowNode);\n }\n return false;\n };\n NavigationService.prototype.getCellByPosition = function (cellPosition) {\n var rowCtrl = this.rowRenderer.getRowByPosition(cellPosition);\n if (!rowCtrl) {\n return null;\n }\n return rowCtrl.getCellCtrl(cellPosition.column);\n };\n NavigationService.prototype.lookupRowNodeForCell = function (cell) {\n if (cell.rowPinned === 'top') {\n return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);\n }\n if (cell.rowPinned === 'bottom') {\n return this.pinnedRowModel.getPinnedBottomRow(cell.rowIndex);\n }\n return this.paginationProxy.getRow(cell.rowIndex);\n };\n // we use index for rows, but column object for columns, as the next column (by index) might not\n // be visible (header grouping) so it's not reliable, so using the column object instead.\n NavigationService.prototype.navigateToNextCell = function (event, key, currentCell, allowUserOverride) {\n // we keep searching for a next cell until we find one. this is how the group rows get skipped\n var nextCell = currentCell;\n var hitEdgeOfGrid = false;\n while (nextCell && (nextCell === currentCell || !this.isValidNavigateCell(nextCell))) {\n // if the current cell is spanning across multiple columns, we need to move\n // our current position to be the last cell on the right before finding the\n // the next target.\n if (this.gridOptionsService.is('enableRtl')) {\n if (key === KeyCode.LEFT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n }\n else if (key === KeyCode.RIGHT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n nextCell = this.cellNavigationService.getNextCellToFocus(key, nextCell);\n // eg if going down, and nextCell=undefined, means we are gone past the last row\n hitEdgeOfGrid = missing(nextCell);\n }\n if (hitEdgeOfGrid && event && event.key === KeyCode.UP) {\n nextCell = {\n rowIndex: -1,\n rowPinned: null,\n column: currentCell.column\n };\n }\n // allow user to override what cell to go to next. when doing normal cell navigation (with keys)\n // we allow this, however if processing 'enter after edit' we don't allow override\n if (allowUserOverride) {\n var userFunc = this.gridOptionsService.getCallback('navigateToNextCell');\n if (exists(userFunc)) {\n var params = {\n key: key,\n previousCellPosition: currentCell,\n nextCellPosition: nextCell ? nextCell : null,\n event: event\n };\n var userCell = userFunc(params);\n if (exists(userCell)) {\n if (userCell.floating) {\n doOnce(function () { console.warn(\"AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n userCell.rowPinned = userCell.floating;\n }\n nextCell = {\n rowPinned: userCell.rowPinned,\n rowIndex: userCell.rowIndex,\n column: userCell.column\n };\n }\n else {\n nextCell = null;\n }\n }\n }\n // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid\n if (!nextCell) {\n return;\n }\n if (nextCell.rowIndex < 0) {\n var headerLen = this.headerNavigationService.getHeaderRowCount();\n this.focusService.focusHeaderPosition({\n headerPosition: { headerRowIndex: headerLen + (nextCell.rowIndex), column: currentCell.column },\n event: event || undefined\n });\n return;\n }\n // in case we have col spanning we get the cellComp and use it to get the\n // position. This was we always focus the first cell inside the spanning.\n var normalisedPosition = this.getNormalisedPosition(nextCell);\n if (normalisedPosition) {\n this.focusPosition(normalisedPosition);\n }\n else {\n this.tryToFocusFullWidthRow(nextCell);\n }\n };\n NavigationService.prototype.getNormalisedPosition = function (cellPosition) {\n // ensureCellVisible first, to make sure cell at position is rendered.\n this.ensureCellVisible(cellPosition);\n var cellCtrl = this.getCellByPosition(cellPosition);\n // not guaranteed to have a cellComp when using the SSRM as blocks are loading.\n if (!cellCtrl) {\n return null;\n }\n cellPosition = cellCtrl.getCellPosition();\n // we call this again, as nextCell can be different to it's previous value due to Column Spanning\n // (ie if cursor moving from right to left, and cell is spanning columns, then nextCell was the\n // last column in the group, however now it's the first column in the group). if we didn't do\n // ensureCellVisible again, then we could only be showing the last portion (last column) of the\n // merged cells.\n this.ensureCellVisible(cellPosition);\n return cellPosition;\n };\n NavigationService.prototype.tryToFocusFullWidthRow = function (position, backwards) {\n if (backwards === void 0) { backwards = false; }\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var rowComp = this.rowRenderer.getRowByPosition(position);\n if (!rowComp || !rowComp.isFullWidth()) {\n return false;\n }\n var currentCellFocused = this.focusService.getFocusedCell();\n var cellPosition = {\n rowIndex: position.rowIndex,\n rowPinned: position.rowPinned,\n column: position.column || (backwards ? last(displayedColumns) : displayedColumns[0])\n };\n this.focusPosition(cellPosition);\n var fromBelow = currentCellFocused != null ? this.rowPositionUtils.before(cellPosition, currentCellFocused) : false;\n var focusEvent = {\n type: Events.EVENT_FULL_WIDTH_ROW_FOCUSED,\n rowIndex: cellPosition.rowIndex,\n rowPinned: cellPosition.rowPinned,\n column: cellPosition.column,\n isFullWidthCell: true,\n floating: cellPosition.rowPinned,\n fromBelow: fromBelow\n };\n this.eventService.dispatchEvent(focusEvent);\n return true;\n };\n NavigationService.prototype.focusPosition = function (cellPosition) {\n this.focusService.setFocusedCell({\n rowIndex: cellPosition.rowIndex,\n column: cellPosition.column,\n rowPinned: cellPosition.rowPinned,\n forceBrowserFocus: true\n });\n if (this.rangeService) {\n this.rangeService.setRangeToCell(cellPosition);\n }\n };\n NavigationService.prototype.isValidNavigateCell = function (cell) {\n var rowNode = this.rowPositionUtils.getRowNode(cell);\n // we do not allow focusing on detail rows and full width rows\n return !!rowNode;\n };\n NavigationService.prototype.getLastCellOfColSpan = function (cell) {\n var cellCtrl = this.getCellByPosition(cell);\n if (!cellCtrl) {\n return cell;\n }\n var colSpanningList = cellCtrl.getColSpanningList();\n if (colSpanningList.length === 1) {\n return cell;\n }\n return {\n rowIndex: cell.rowIndex,\n column: last(colSpanningList),\n rowPinned: cell.rowPinned\n };\n };\n NavigationService.prototype.ensureCellVisible = function (gridCell) {\n var isGroupStickyEnabled = this.gridOptionsService.is('groupRowsSticky');\n var rowNode = this.rowModel.getRow(gridCell.rowIndex);\n // sticky rows are always visible, so the grid shouldn't scroll to focus them.\n var skipScrollToRow = isGroupStickyEnabled && (rowNode === null || rowNode === void 0 ? void 0 : rowNode.sticky);\n // this scrolls the row into view\n if (!skipScrollToRow && missing(gridCell.rowPinned)) {\n this.gridBodyCon.getScrollFeature().ensureIndexVisible(gridCell.rowIndex);\n }\n if (!gridCell.column.isPinned()) {\n this.gridBodyCon.getScrollFeature().ensureColumnVisible(gridCell.column);\n }\n };\n __decorate$1z([\n Autowired('mouseEventService')\n ], NavigationService.prototype, \"mouseEventService\", void 0);\n __decorate$1z([\n Autowired('paginationProxy')\n ], NavigationService.prototype, \"paginationProxy\", void 0);\n __decorate$1z([\n Autowired('focusService')\n ], NavigationService.prototype, \"focusService\", void 0);\n __decorate$1z([\n Optional('rangeService')\n ], NavigationService.prototype, \"rangeService\", void 0);\n __decorate$1z([\n Autowired('columnModel')\n ], NavigationService.prototype, \"columnModel\", void 0);\n __decorate$1z([\n Autowired('rowModel')\n ], NavigationService.prototype, \"rowModel\", void 0);\n __decorate$1z([\n Autowired('ctrlsService')\n ], NavigationService.prototype, \"ctrlsService\", void 0);\n __decorate$1z([\n Autowired('rowRenderer')\n ], NavigationService.prototype, \"rowRenderer\", void 0);\n __decorate$1z([\n Autowired('headerNavigationService')\n ], NavigationService.prototype, \"headerNavigationService\", void 0);\n __decorate$1z([\n Autowired(\"rowPositionUtils\")\n ], NavigationService.prototype, \"rowPositionUtils\", void 0);\n __decorate$1z([\n Autowired(\"cellNavigationService\")\n ], NavigationService.prototype, \"cellNavigationService\", void 0);\n __decorate$1z([\n Autowired(\"pinnedRowModel\")\n ], NavigationService.prototype, \"pinnedRowModel\", void 0);\n __decorate$1z([\n PostConstruct\n ], NavigationService.prototype, \"postConstruct\", null);\n NavigationService = __decorate$1z([\n Bean('navigationService')\n ], NavigationService);\n return NavigationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1B = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PopupEditorWrapper = /** @class */ (function (_super) {\n __extends$1B(PopupEditorWrapper, _super);\n function PopupEditorWrapper(params) {\n var _this = _super.call(this, /* html */ \"<div class=\\\"ag-popup-editor\\\" tabindex=\\\"-1\\\"/>\") || this;\n _this.params = params;\n return _this;\n }\n PopupEditorWrapper.prototype.postConstruct = function () {\n this.gridOptionsService.setDomData(this.getGui(), PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER, true);\n this.addKeyDownListener();\n };\n PopupEditorWrapper.prototype.addKeyDownListener = function () {\n var _this = this;\n var eGui = this.getGui();\n var params = this.params;\n var listener = function (event) {\n if (!isUserSuppressingKeyboardEvent(_this.gridOptionsService, event, params.node, params.column, true)) {\n params.onKeyDown(event);\n }\n };\n this.addManagedListener(eGui, 'keydown', listener);\n };\n PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER = 'popupEditorWrapper';\n __decorate$1y([\n PostConstruct\n ], PopupEditorWrapper.prototype, \"postConstruct\", null);\n return PopupEditorWrapper;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1A = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar CellComp = /** @class */ (function (_super) {\n __extends$1A(CellComp, _super);\n function CellComp(beans, cellCtrl, printLayout, eRow, editingRow) {\n var _this = _super.call(this) || this;\n // every time we go into edit mode, or back again, this gets incremented.\n // it's the components way of dealing with the async nature of framework components,\n // so if a framework component takes a while to be created, we know if the object\n // is still relevant when creating is finished. eg we could click edit / un-edit 20\n // times before the first React edit component comes back - we should discard\n // the first 19.\n _this.rendererVersion = 0;\n _this.editorVersion = 0;\n _this.beans = beans;\n _this.column = cellCtrl.getColumn();\n _this.rowNode = cellCtrl.getRowNode();\n _this.rowCtrl = cellCtrl.getRowCtrl();\n _this.eRow = eRow;\n _this.setTemplate(/* html */ \"<div comp-id=\\\"\" + _this.getCompId() + \"\\\"/>\");\n var eGui = _this.getGui();\n _this.forceWrapper = cellCtrl.isForceWrapper();\n _this.refreshWrapper(false);\n var setAttribute = function (name, value, element) {\n var actualElement = element ? element : eGui;\n if (value != null && value != '') {\n actualElement.setAttribute(name, value);\n }\n else {\n actualElement.removeAttribute(name);\n }\n };\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setUserStyles: function (styles) { return addStylesToElement(eGui, styles); },\n getFocusableElement: function () { return _this.getFocusableElement(); },\n setTabIndex: function (tabIndex) { return setAttribute('tabindex', tabIndex.toString()); },\n setRole: function (role) { return setAriaRole(eGui, role); },\n setColId: function (colId) { return setAttribute('col-id', colId); },\n setTitle: function (title) { return setAttribute('title', title); },\n setIncludeSelection: function (include) { return _this.includeSelection = include; },\n setIncludeRowDrag: function (include) { return _this.includeRowDrag = include; },\n setIncludeDndSource: function (include) { return _this.includeDndSource = include; },\n setRenderDetails: function (compDetails, valueToDisplay, force) {\n return _this.setRenderDetails(compDetails, valueToDisplay, force);\n },\n setEditDetails: function (compDetails, popup, position) {\n return _this.setEditDetails(compDetails, popup, position);\n },\n getCellEditor: function () { return _this.cellEditor || null; },\n getCellRenderer: function () { return _this.cellRenderer || null; },\n getParentOfValue: function () { return _this.getParentOfValue(); }\n };\n _this.cellCtrl = cellCtrl;\n cellCtrl.setComp(compProxy, _this.getGui(), _this.eCellWrapper, printLayout, editingRow);\n return _this;\n }\n CellComp.prototype.getParentOfValue = function () {\n if (this.eCellValue) {\n // if not editing, and using wrapper, then value goes in eCellValue\n return this.eCellValue;\n }\n if (this.eCellWrapper) {\n // if editing, and using wrapper, value (cell editor) goes in eCellWrapper\n return this.eCellWrapper;\n }\n // if editing or rendering, and not using wrapper, value (or comp) is directly inside cell\n return this.getGui();\n };\n CellComp.prototype.setRenderDetails = function (compDetails, valueToDisplay, forceNewCellRendererInstance) {\n // this can happen if the users asks for the cell to refresh, but we are not showing the vale as we are editing\n var isInlineEditing = this.cellEditor && !this.cellEditorPopupWrapper;\n if (isInlineEditing) {\n return;\n }\n // this means firstRender will be true for one pass only, as it's initialised to undefined\n this.firstRender = this.firstRender == null;\n // if display template has changed, means any previous Cell Renderer is in the wrong location\n var controlWrapperChanged = this.refreshWrapper(false);\n this.refreshEditStyles(false);\n // all of these have dependencies on the eGui, so only do them after eGui is set\n if (compDetails) {\n var neverRefresh = forceNewCellRendererInstance || controlWrapperChanged;\n var cellRendererRefreshSuccessful = neverRefresh ? false : this.refreshCellRenderer(compDetails);\n if (!cellRendererRefreshSuccessful) {\n this.destroyRenderer();\n this.createCellRendererInstance(compDetails);\n }\n }\n else {\n this.destroyRenderer();\n this.insertValueWithoutCellRenderer(valueToDisplay);\n }\n };\n CellComp.prototype.setEditDetails = function (compDetails, popup, position) {\n if (compDetails) {\n this.createCellEditorInstance(compDetails, popup, position);\n }\n else {\n this.destroyEditor();\n }\n };\n CellComp.prototype.removeControls = function () {\n this.checkboxSelectionComp = this.beans.context.destroyBean(this.checkboxSelectionComp);\n this.dndSourceComp = this.beans.context.destroyBean(this.dndSourceComp);\n this.rowDraggingComp = this.beans.context.destroyBean(this.rowDraggingComp);\n };\n // returns true if wrapper was changed\n CellComp.prototype.refreshWrapper = function (editing) {\n var providingControls = this.includeRowDrag || this.includeDndSource || this.includeSelection;\n var usingWrapper = providingControls || this.forceWrapper;\n var putWrapperIn = usingWrapper && this.eCellWrapper == null;\n if (putWrapperIn) {\n this.eCellWrapper = loadTemplate(/* html */ \"<div class=\\\"ag-cell-wrapper\\\" role=\\\"presentation\\\"></div>\");\n this.getGui().appendChild(this.eCellWrapper);\n }\n var takeWrapperOut = !usingWrapper && this.eCellWrapper != null;\n if (takeWrapperOut) {\n removeFromParent(this.eCellWrapper);\n this.eCellWrapper = undefined;\n }\n this.addOrRemoveCssClass('ag-cell-value', !usingWrapper);\n var usingCellValue = !editing && usingWrapper;\n var putCellValueIn = usingCellValue && this.eCellValue == null;\n if (putCellValueIn) {\n this.eCellValue = loadTemplate(/* html */ \"<span class=\\\"ag-cell-value\\\" role=\\\"presentation\\\"></span>\");\n this.eCellWrapper.appendChild(this.eCellValue);\n }\n var takeCellValueOut = !usingCellValue && this.eCellValue != null;\n if (takeCellValueOut) {\n removeFromParent(this.eCellValue);\n this.eCellValue = undefined;\n }\n var templateChanged = putWrapperIn || takeWrapperOut || putCellValueIn || takeCellValueOut;\n if (templateChanged) {\n this.removeControls();\n }\n if (!editing) {\n if (providingControls) {\n this.addControls();\n }\n }\n return templateChanged;\n };\n CellComp.prototype.addControls = function () {\n if (this.includeRowDrag) {\n if (this.rowDraggingComp == null) {\n this.rowDraggingComp = this.cellCtrl.createRowDragComp();\n if (this.rowDraggingComp) {\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(this.rowDraggingComp.getGui(), this.eCellValue);\n }\n }\n }\n if (this.includeDndSource) {\n if (this.dndSourceComp == null) {\n this.dndSourceComp = this.cellCtrl.createDndSource();\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(this.dndSourceComp.getGui(), this.eCellValue);\n }\n }\n if (this.includeSelection) {\n if (this.checkboxSelectionComp == null) {\n this.checkboxSelectionComp = this.cellCtrl.createSelectionCheckbox();\n this.eCellWrapper.insertBefore(this.checkboxSelectionComp.getGui(), this.eCellValue);\n }\n }\n };\n CellComp.prototype.createCellEditorInstance = function (compDetails, popup, position) {\n var _this = this;\n var versionCopy = this.editorVersion;\n var cellEditorPromise = compDetails.newAgStackInstance();\n if (!cellEditorPromise) {\n return;\n } // if empty, userComponentFactory already did a console message\n var params = compDetails.params;\n cellEditorPromise.then(function (c) { return _this.afterCellEditorCreated(versionCopy, c, params, popup, position); });\n // if we don't do this, and editor component is async, then there will be a period\n // when the component isn't present and keyboard navigation won't work - so example\n // of user hitting tab quickly (more quickly than renderers getting created) won't work\n var cellEditorAsync = missing(this.cellEditor);\n if (cellEditorAsync && params.cellStartedEdit) {\n this.cellCtrl.focusCell(true);\n }\n };\n CellComp.prototype.insertValueWithoutCellRenderer = function (valueToDisplay) {\n var eParent = this.getParentOfValue();\n clearElement(eParent);\n var escapedValue = valueToDisplay != null ? escapeString(valueToDisplay) : null;\n if (escapedValue != null) {\n eParent.innerHTML = escapedValue;\n }\n };\n CellComp.prototype.destroyEditorAndRenderer = function () {\n this.destroyRenderer();\n this.destroyEditor();\n };\n CellComp.prototype.destroyRenderer = function () {\n var context = this.beans.context;\n this.cellRenderer = context.destroyBean(this.cellRenderer);\n removeFromParent(this.cellRendererGui);\n this.cellRendererGui = null;\n this.rendererVersion++;\n };\n CellComp.prototype.destroyEditor = function () {\n var context = this.beans.context;\n if (this.hideEditorPopup) {\n this.hideEditorPopup();\n }\n this.hideEditorPopup = undefined;\n this.cellEditor = context.destroyBean(this.cellEditor);\n this.cellEditorPopupWrapper = context.destroyBean(this.cellEditorPopupWrapper);\n removeFromParent(this.cellEditorGui);\n this.cellEditorGui = null;\n this.editorVersion++;\n };\n CellComp.prototype.refreshCellRenderer = function (compClassAndParams) {\n if (this.cellRenderer == null || this.cellRenderer.refresh == null) {\n return false;\n }\n // if different Cell Renderer configured this time (eg user is using selector, and\n // returns different component) then don't refresh, force recreate of Cell Renderer\n if (this.cellRendererClass !== compClassAndParams.componentClass) {\n return false;\n }\n // take any custom params off of the user\n var result = this.cellRenderer.refresh(compClassAndParams.params);\n // NOTE on undefined: previous version of the cellRenderer.refresh() interface\n // returned nothing, if the method existed, we assumed it refreshed. so for\n // backwards compatibility, we assume if method exists and returns nothing,\n // that it was successful.\n return result === true || result === undefined;\n };\n CellComp.prototype.createCellRendererInstance = function (compDetails) {\n var _this = this;\n // never use task service if animation frame service is turned off.\n // and lastly we never use it if doing auto-height, as the auto-height service checks the\n // row height directly after the cell is created, it doesn't wait around for the tasks to complete \n var suppressAnimationFrame = this.beans.gridOptionsService.is('suppressAnimationFrame');\n var useTaskService = !suppressAnimationFrame;\n var displayComponentVersionCopy = this.rendererVersion;\n var componentClass = compDetails.componentClass;\n var createCellRendererFunc = function () {\n var staleTask = _this.rendererVersion !== displayComponentVersionCopy || !_this.isAlive();\n if (staleTask) {\n return;\n }\n // this can return null in the event that the user has switched from a renderer component to nothing, for example\n // when using a cellRendererSelect to return a component or null depending on row data etc\n var componentPromise = compDetails.newAgStackInstance();\n var callback = _this.afterCellRendererCreated.bind(_this, displayComponentVersionCopy, componentClass);\n if (componentPromise) {\n componentPromise.then(callback);\n }\n };\n // we only use task service when rendering for first time, which means it is not used when doing edits.\n // if we changed this (always use task service) would make sense, however it would break tests, possibly\n // test of users.\n if (useTaskService && this.firstRender) {\n this.beans.animationFrameService.createTask(createCellRendererFunc, this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n createCellRendererFunc();\n }\n };\n CellComp.prototype.getCtrl = function () {\n return this.cellCtrl;\n };\n CellComp.prototype.getRowCtrl = function () {\n return this.rowCtrl;\n };\n CellComp.prototype.getCellRenderer = function () {\n return this.cellRenderer;\n };\n CellComp.prototype.getCellEditor = function () {\n return this.cellEditor;\n };\n CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRendererClass, cellRenderer) {\n var staleTask = !this.isAlive() || cellRendererVersion !== this.rendererVersion;\n if (staleTask) {\n this.beans.context.destroyBean(cellRenderer);\n return;\n }\n this.cellRenderer = cellRenderer;\n this.cellRendererClass = cellRendererClass;\n this.cellRendererGui = this.cellRenderer.getGui();\n if (this.cellRendererGui != null) {\n var eParent = this.getParentOfValue();\n clearElement(eParent);\n eParent.appendChild(this.cellRendererGui);\n }\n };\n CellComp.prototype.afterCellEditorCreated = function (requestVersion, cellEditor, params, popup, position) {\n // if editingCell=false, means user cancelled the editor before component was ready.\n // if versionMismatch, then user cancelled the edit, then started the edit again, and this\n // is the first editor which is now stale.\n var staleComp = requestVersion !== this.editorVersion;\n if (staleComp) {\n this.beans.context.destroyBean(cellEditor);\n return;\n }\n var editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();\n if (editingCancelledByUserComp) {\n this.beans.context.destroyBean(cellEditor);\n this.cellCtrl.stopEditing(true);\n return;\n }\n if (!cellEditor.getGui) {\n console.warn(\"AG Grid: cellEditor for column \" + this.column.getId() + \" is missing getGui() method\");\n this.beans.context.destroyBean(cellEditor);\n return;\n }\n this.cellEditor = cellEditor;\n this.cellEditorGui = cellEditor.getGui();\n var cellEditorInPopup = popup || (cellEditor.isPopup !== undefined && cellEditor.isPopup());\n if (cellEditorInPopup) {\n this.addPopupCellEditor(params, position);\n }\n else {\n this.addInCellEditor();\n }\n this.refreshEditStyles(true, cellEditorInPopup);\n if (cellEditor.afterGuiAttached) {\n cellEditor.afterGuiAttached();\n }\n };\n CellComp.prototype.refreshEditStyles = function (editing, isPopup) {\n var _a;\n this.addOrRemoveCssClass('ag-cell-inline-editing', editing && !isPopup);\n this.addOrRemoveCssClass('ag-cell-popup-editing', editing && !!isPopup);\n this.addOrRemoveCssClass('ag-cell-not-inline-editing', !editing || !!isPopup);\n (_a = this.rowCtrl) === null || _a === void 0 ? void 0 : _a.setInlineEditingCss(editing);\n };\n CellComp.prototype.addInCellEditor = function () {\n var eGui = this.getGui();\n // if focus is inside the cell, we move focus to the cell itself\n // before removing it's contents, otherwise errors could be thrown.\n var eDocument = this.beans.gridOptionsService.getDocument();\n if (eGui.contains(eDocument.activeElement)) {\n eGui.focus();\n }\n this.destroyRenderer();\n this.refreshWrapper(true);\n this.clearParentOfValue();\n if (this.cellEditorGui) {\n var eParent = this.getParentOfValue();\n eParent.appendChild(this.cellEditorGui);\n }\n };\n CellComp.prototype.addPopupCellEditor = function (params, position) {\n var _this = this;\n if (this.beans.gridOptionsService.get('editType') === 'fullRow') {\n console.warn('AG Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +\n '- either turn off fullRowEdit, or stop using popup editors.');\n }\n var cellEditor = this.cellEditor;\n // if a popup, then we wrap in a popup editor and return the popup\n this.cellEditorPopupWrapper = this.beans.context.createBean(new PopupEditorWrapper(params));\n var ePopupGui = this.cellEditorPopupWrapper.getGui();\n if (this.cellEditorGui) {\n ePopupGui.appendChild(this.cellEditorGui);\n }\n var popupService = this.beans.popupService;\n var useModelPopup = this.beans.gridOptionsService.is('stopEditingWhenCellsLoseFocus');\n // see if position provided by colDef, if not then check old way of method on cellComp\n var positionToUse = position != null\n ? position\n : cellEditor.getPopupPosition\n ? cellEditor.getPopupPosition()\n : 'over';\n var isRtl = this.beans.gridOptionsService.is('enableRtl');\n var positionParams = {\n ePopup: ePopupGui,\n column: this.column,\n rowNode: this.rowNode,\n type: 'popupCellEditor',\n eventSource: this.getGui(),\n position: positionToUse,\n alignSide: isRtl ? 'right' : 'left',\n keepWithinBounds: true\n };\n var positionCallback = popupService.positionPopupByComponent.bind(popupService, positionParams);\n var translate = this.beans.localeService.getLocaleTextFunc();\n var addPopupRes = popupService.addPopup({\n modal: useModelPopup,\n eChild: ePopupGui,\n closeOnEsc: true,\n closedCallback: function () { _this.cellCtrl.onPopupEditorClosed(); },\n anchorToElement: this.getGui(),\n positionCallback: positionCallback,\n ariaLabel: translate('ariaLabelCellEditor', 'Cell Editor')\n });\n if (addPopupRes) {\n this.hideEditorPopup = addPopupRes.hideFunc;\n }\n };\n CellComp.prototype.detach = function () {\n this.eRow.removeChild(this.getGui());\n };\n // if the row is also getting destroyed, then we don't need to remove from dom,\n // as the row will also get removed, so no need to take out the cells from the row\n // if the row is going (removing is an expensive operation, so only need to remove\n // the top part)\n //\n // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n CellComp.prototype.destroy = function () {\n this.cellCtrl.stopEditing();\n this.destroyEditorAndRenderer();\n this.removeControls();\n _super.prototype.destroy.call(this);\n };\n CellComp.prototype.clearParentOfValue = function () {\n var eGui = this.getGui();\n // if focus is inside the cell, we move focus to the cell itself\n // before removing it's contents, otherwise errors could be thrown.\n var eDocument = this.beans.gridOptionsService.getDocument();\n if (eGui.contains(eDocument.activeElement) && browserSupportsPreventScroll()) {\n eGui.focus({ preventScroll: true });\n }\n clearElement(this.getParentOfValue());\n };\n return CellComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RowComp = /** @class */ (function (_super) {\n __extends$1z(RowComp, _super);\n function RowComp(ctrl, beans, containerType) {\n var _this = _super.call(this) || this;\n _this.cellComps = {};\n _this.beans = beans;\n _this.rowCtrl = ctrl;\n _this.setTemplate(/* html */ \"<div comp-id=\\\"\" + _this.getCompId() + \"\\\" style=\\\"\" + _this.getInitialStyle(containerType) + \"\\\"/>\");\n var eGui = _this.getGui();\n var style = eGui.style;\n var compProxy = {\n setDomOrder: function (domOrder) { return _this.domOrder = domOrder; },\n setCellCtrls: function (cellCtrls) { return _this.setCellCtrls(cellCtrls); },\n showFullWidth: function (compDetails) { return _this.showFullWidth(compDetails); },\n getFullWidthCellRenderer: function () { return _this.getFullWidthCellRenderer(); },\n addOrRemoveCssClass: function (name, on) { return _this.addOrRemoveCssClass(name, on); },\n setUserStyles: function (styles) { return addStylesToElement(eGui, styles); },\n setTop: function (top) { return style.top = top; },\n setTransform: function (transform) { return style.transform = transform; },\n setRowIndex: function (rowIndex) { return eGui.setAttribute('row-index', rowIndex); },\n setRole: function (role) { return setAriaRole(eGui, role); },\n setRowId: function (rowId) { return eGui.setAttribute('row-id', rowId); },\n setRowBusinessKey: function (businessKey) { return eGui.setAttribute('row-business-key', businessKey); },\n setTabIndex: function (tabIndex) { return eGui.setAttribute('tabindex', tabIndex.toString()); }\n };\n ctrl.setComp(compProxy, _this.getGui(), containerType);\n _this.addDestroyFunc(function () {\n ctrl.unsetComp(containerType);\n });\n return _this;\n }\n RowComp.prototype.getInitialStyle = function (containerType) {\n var transform = this.rowCtrl.getInitialTransform(containerType);\n var top = this.rowCtrl.getInitialRowTop(containerType);\n return transform ? \"transform: \" + transform : \"top: \" + top;\n };\n RowComp.prototype.showFullWidth = function (compDetails) {\n var _this = this;\n var callback = function (cellRenderer) {\n if (_this.isAlive()) {\n var eGui = cellRenderer.getGui();\n _this.getGui().appendChild(eGui);\n _this.rowCtrl.setupDetailRowAutoHeight(eGui);\n _this.setFullWidthRowComp(cellRenderer);\n }\n else {\n _this.beans.context.destroyBean(cellRenderer);\n }\n };\n // if not in cache, create new one\n var res = compDetails.newAgStackInstance();\n if (!res) {\n return;\n }\n res.then(callback);\n };\n RowComp.prototype.setCellCtrls = function (cellCtrls) {\n var _this = this;\n var cellsToRemove = Object.assign({}, this.cellComps);\n cellCtrls.forEach(function (cellCtrl) {\n var key = cellCtrl.getInstanceId();\n var existingCellComp = _this.cellComps[key];\n if (existingCellComp == null) {\n _this.newCellComp(cellCtrl);\n }\n else {\n cellsToRemove[key] = null;\n }\n });\n var cellCompsToRemove = getAllValuesInObject(cellsToRemove)\n .filter(function (cellComp) { return cellComp != null; });\n this.destroyCells(cellCompsToRemove);\n this.ensureDomOrder(cellCtrls);\n };\n RowComp.prototype.ensureDomOrder = function (cellCtrls) {\n var _this = this;\n if (!this.domOrder) {\n return;\n }\n var elementsInOrder = [];\n cellCtrls.forEach(function (cellCtrl) {\n var cellComp = _this.cellComps[cellCtrl.getInstanceId()];\n if (cellComp) {\n elementsInOrder.push(cellComp.getGui());\n }\n });\n setDomChildOrder(this.getGui(), elementsInOrder);\n };\n RowComp.prototype.newCellComp = function (cellCtrl) {\n var cellComp = new CellComp(this.beans, cellCtrl, this.rowCtrl.isPrintLayout(), this.getGui(), this.rowCtrl.isEditing());\n this.cellComps[cellCtrl.getInstanceId()] = cellComp;\n this.getGui().appendChild(cellComp.getGui());\n };\n RowComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.destroyAllCells();\n };\n RowComp.prototype.destroyAllCells = function () {\n var cellsToDestroy = getAllValuesInObject(this.cellComps).filter(function (cp) { return cp != null; });\n this.destroyCells(cellsToDestroy);\n };\n RowComp.prototype.setFullWidthRowComp = function (fullWidthRowComponent) {\n var _this = this;\n if (this.fullWidthCellRenderer) {\n console.error('AG Grid - should not be setting fullWidthRowComponent twice');\n }\n this.fullWidthCellRenderer = fullWidthRowComponent;\n this.addDestroyFunc(function () {\n _this.fullWidthCellRenderer = _this.beans.context.destroyBean(_this.fullWidthCellRenderer);\n });\n };\n RowComp.prototype.getFullWidthCellRenderer = function () {\n return this.fullWidthCellRenderer;\n };\n RowComp.prototype.destroyCells = function (cellComps) {\n var _this = this;\n cellComps.forEach(function (cellComp) {\n // could be old reference, ie removed cell\n if (!cellComp) {\n return;\n }\n // check cellComp belongs in this container\n var instanceId = cellComp.getCtrl().getInstanceId();\n if (_this.cellComps[instanceId] !== cellComp) {\n return;\n }\n cellComp.detach();\n cellComp.destroy();\n _this.cellComps[instanceId] = null;\n });\n };\n return RowComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$6 = (undefined && undefined.__assign) || function () {\n __assign$6 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$6.apply(this, arguments);\n};\nvar __decorate$1x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction templateFactory() {\n var name = Component.elementGettingCreated.getAttribute('name');\n var cssClasses = RowContainerCtrl.getRowContainerCssClasses(name);\n var res;\n var template1 = name === RowContainerName.CENTER;\n var template2 = name === RowContainerName.TOP_CENTER\n || name === RowContainerName.STICKY_TOP_CENTER\n || name === RowContainerName.BOTTOM_CENTER;\n if (template1) {\n res = /* html */\n \"<div class=\\\"\" + cssClasses.wrapper + \"\\\" ref=\\\"eWrapper\\\" role=\\\"presentation\\\">\\n <div class=\\\"\" + cssClasses.viewport + \"\\\" ref=\\\"eViewport\\\" role=\\\"presentation\\\">\\n <div class=\\\"\" + cssClasses.container + \"\\\" ref=\\\"eContainer\\\"></div>\\n </div>\\n </div>\";\n }\n else if (template2) {\n res = /* html */\n \"<div class=\\\"\" + cssClasses.viewport + \"\\\" ref=\\\"eViewport\\\" role=\\\"presentation\\\">\\n <div class=\\\"\" + cssClasses.container + \"\\\" ref=\\\"eContainer\\\"></div>\\n </div>\";\n }\n else {\n res = /* html */\n \"<div class=\\\"\" + cssClasses.container + \"\\\" ref=\\\"eContainer\\\"></div>\";\n }\n return res;\n}\nvar RowContainerComp = /** @class */ (function (_super) {\n __extends$1y(RowContainerComp, _super);\n function RowContainerComp() {\n var _this = _super.call(this, templateFactory()) || this;\n _this.rowComps = {};\n _this.name = Component.elementGettingCreated.getAttribute('name');\n _this.type = getRowContainerTypeForName(_this.name);\n return _this;\n }\n RowContainerComp.prototype.postConstruct = function () {\n var _this = this;\n var compProxy = {\n setViewportHeight: function (height) { return _this.eViewport.style.height = height; },\n setRowCtrls: function (rowCtrls) { return _this.setRowCtrls(rowCtrls); },\n setDomOrder: function (domOrder) {\n _this.domOrder = domOrder;\n },\n setContainerWidth: function (width) { return _this.eContainer.style.width = width; }\n };\n var ctrl = this.createManagedBean(new RowContainerCtrl(this.name));\n ctrl.setComp(compProxy, this.eContainer, this.eViewport, this.eWrapper);\n };\n RowContainerComp.prototype.preDestroy = function () {\n // destroys all row comps\n this.setRowCtrls([]);\n };\n RowContainerComp.prototype.setRowCtrls = function (rowCtrls) {\n var _this = this;\n var oldRows = __assign$6({}, this.rowComps);\n this.rowComps = {};\n this.lastPlacedElement = null;\n var processRow = function (rowCon) {\n var instanceId = rowCon.getInstanceId();\n var existingRowComp = oldRows[instanceId];\n if (existingRowComp) {\n _this.rowComps[instanceId] = existingRowComp;\n delete oldRows[instanceId];\n _this.ensureDomOrder(existingRowComp.getGui());\n }\n else {\n var rowComp = new RowComp(rowCon, _this.beans, _this.type);\n _this.rowComps[instanceId] = rowComp;\n _this.appendRow(rowComp.getGui());\n }\n };\n rowCtrls.forEach(processRow);\n getAllValuesInObject(oldRows).forEach(function (oldRowComp) {\n _this.eContainer.removeChild(oldRowComp.getGui());\n oldRowComp.destroy();\n });\n setAriaRole(this.eContainer, rowCtrls.length ? \"rowgroup\" : \"presentation\");\n };\n RowContainerComp.prototype.appendRow = function (element) {\n if (this.domOrder) {\n insertWithDomOrder(this.eContainer, element, this.lastPlacedElement);\n }\n else {\n this.eContainer.appendChild(element);\n }\n this.lastPlacedElement = element;\n };\n RowContainerComp.prototype.ensureDomOrder = function (eRow) {\n if (this.domOrder) {\n ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);\n this.lastPlacedElement = eRow;\n }\n };\n __decorate$1x([\n Autowired('beans')\n ], RowContainerComp.prototype, \"beans\", void 0);\n __decorate$1x([\n RefSelector('eViewport')\n ], RowContainerComp.prototype, \"eViewport\", void 0);\n __decorate$1x([\n RefSelector('eContainer')\n ], RowContainerComp.prototype, \"eContainer\", void 0);\n __decorate$1x([\n RefSelector('eWrapper')\n ], RowContainerComp.prototype, \"eWrapper\", void 0);\n __decorate$1x([\n PostConstruct\n ], RowContainerComp.prototype, \"postConstruct\", null);\n __decorate$1x([\n PreDestroy\n ], RowContainerComp.prototype, \"preDestroy\", null);\n return RowContainerComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BodyDropPivotTarget = /** @class */ (function () {\n function BodyDropPivotTarget(pinned) {\n this.columnsToAggregate = [];\n this.columnsToGroup = [];\n this.columnsToPivot = [];\n this.pinned = pinned;\n }\n /** Callback for when drag enters */\n BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {\n var _this = this;\n this.clearColumnsList();\n // in pivot mode, we don't accept any drops if functions are read only\n if (this.gridOptionsService.is('functionsReadOnly')) {\n return;\n }\n var dragColumns = draggingEvent.dragItem.columns;\n if (!dragColumns) {\n return;\n }\n dragColumns.forEach(function (column) {\n // we don't allow adding secondary columns\n if (!column.isPrimary()) {\n return;\n }\n if (column.isAnyFunctionActive()) {\n return;\n }\n if (column.isAllowValue()) {\n _this.columnsToAggregate.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToGroup.push(column);\n }\n else if (column.isAllowPivot()) {\n _this.columnsToPivot.push(column);\n }\n });\n };\n BodyDropPivotTarget.prototype.getIconName = function () {\n var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n if (totalColumns > 0) {\n return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n }\n return null;\n };\n /** Callback for when drag leaves */\n BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {\n // if we are taking columns out of the center, then we remove them from the report\n this.clearColumnsList();\n };\n BodyDropPivotTarget.prototype.clearColumnsList = function () {\n this.columnsToAggregate.length = 0;\n this.columnsToGroup.length = 0;\n this.columnsToPivot.length = 0;\n };\n /** Callback for when dragging */\n BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {\n };\n /** Callback for when drag stops */\n BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {\n if (this.columnsToAggregate.length > 0) {\n this.columnModel.addValueColumns(this.columnsToAggregate, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToGroup.length > 0) {\n this.columnModel.addRowGroupColumns(this.columnsToGroup, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToPivot.length > 0) {\n this.columnModel.addPivotColumns(this.columnsToPivot, \"toolPanelDragAndDrop\");\n }\n };\n __decorate$1w([\n Autowired('columnModel')\n ], BodyDropPivotTarget.prototype, \"columnModel\", void 0);\n __decorate$1w([\n Autowired('gridOptionsService')\n ], BodyDropPivotTarget.prototype, \"gridOptionsService\", void 0);\n return BodyDropPivotTarget;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$h = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar MoveColumnFeature = /** @class */ (function () {\n function MoveColumnFeature(pinned, eContainer) {\n this.needToMoveLeft = false;\n this.needToMoveRight = false;\n this.lastMovedInfo = null;\n this.pinned = pinned;\n this.eContainer = eContainer;\n this.centerContainer = !exists(pinned);\n }\n MoveColumnFeature.prototype.init = function () {\n var _this = this;\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n });\n };\n MoveColumnFeature.prototype.getIconName = function () {\n return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n };\n MoveColumnFeature.prototype.onDragEnter = function (draggingEvent) {\n // we do dummy drag, so make sure column appears in the right location when first placed\n var columns = draggingEvent.dragItem.columns;\n var dragCameFromToolPanel = draggingEvent.dragSource.type === DragSourceType.ToolPanel;\n if (dragCameFromToolPanel) {\n // the if statement doesn't work if drag leaves grid, then enters again\n this.setColumnsVisible(columns, true, \"uiColumnDragged\");\n }\n else {\n // restore previous state of visible columns upon re-entering. this means if the user drags\n // a group out, and then drags the group back in, only columns that were originally visible\n // will be visible again. otherwise a group with three columns (but only two visible) could\n // be dragged out, then when it's dragged in again, all three are visible. this stops that.\n var visibleState_1 = draggingEvent.dragItem.visibleState;\n var visibleColumns = (columns || []).filter(function (column) { return visibleState_1[column.getId()]; });\n this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n }\n this.setColumnsPinned(columns, this.pinned, \"uiColumnDragged\");\n this.onDragging(draggingEvent, true, true);\n };\n MoveColumnFeature.prototype.onDragLeave = function () {\n this.ensureIntervalCleared();\n this.lastMovedInfo = null;\n };\n MoveColumnFeature.prototype.setColumnsVisible = function (columns, visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockVisible; });\n this.columnModel.setColumnsVisible(allowedCols, visible, source);\n }\n };\n MoveColumnFeature.prototype.setColumnsPinned = function (columns, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n this.columnModel.setColumnsPinned(allowedCols, pinned, source);\n }\n };\n MoveColumnFeature.prototype.onDragStop = function () {\n this.onDragging(this.lastDraggingEvent, false, true, true);\n this.ensureIntervalCleared();\n this.lastMovedInfo = null;\n };\n MoveColumnFeature.prototype.normaliseX = function (x) {\n // flip the coordinate if doing RTL\n if (this.gridOptionsService.is('enableRtl')) {\n var clientWidth = this.eContainer.clientWidth;\n x = clientWidth - x;\n }\n // adjust for scroll only if centre container (the pinned containers don't scroll)\n if (this.centerContainer) {\n x += this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();\n }\n return x;\n };\n MoveColumnFeature.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {\n if (this.centerContainer) {\n // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)\n // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen\n var firstVisiblePixel = this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();\n var lastVisiblePixel = firstVisiblePixel + this.ctrlsService.getCenterRowContainerCtrl().getCenterWidth();\n if (this.gridOptionsService.is('enableRtl')) {\n this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n else {\n this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n if (this.needToMoveLeft || this.needToMoveRight) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n }\n };\n MoveColumnFeature.prototype.onDragging = function (draggingEvent, fromEnter, fakeEvent, finished) {\n var _this = this;\n var _a;\n if (draggingEvent === void 0) { draggingEvent = this.lastDraggingEvent; }\n if (fromEnter === void 0) { fromEnter = false; }\n if (fakeEvent === void 0) { fakeEvent = false; }\n if (finished === void 0) { finished = false; }\n if (finished) {\n if (this.lastMovedInfo) {\n var _b = this.lastMovedInfo, columns = _b.columns, toIndex = _b.toIndex;\n this.moveColumns(columns, toIndex, 'uiColumnMoved', true);\n }\n return;\n }\n this.lastDraggingEvent = draggingEvent;\n // if moving up or down (ie not left or right) then do nothing\n if (missing(draggingEvent.hDirection)) {\n return;\n }\n var mouseX = this.normaliseX(draggingEvent.x);\n // if the user is dragging into the panel, ie coming from the side panel into the main grid,\n // we don't want to scroll the grid this time, it would appear like the table is jumping\n // each time a column is dragged in.\n if (!fromEnter) {\n this.checkCenterForScrolling(mouseX);\n }\n var hDirection = this.normaliseDirection(draggingEvent.hDirection);\n var dragSourceType = draggingEvent.dragSource.type;\n var allMovingColumns = ((_a = draggingEvent.dragSource.getDragItem().columns) === null || _a === void 0 ? void 0 : _a.filter(function (col) {\n if (col.getColDef().lockPinned) {\n // if locked return true only if both col and container are same pin type.\n // double equals (==) here on purpose so that null==undefined is true (for not pinned options)\n return col.getPinned() == _this.pinned;\n }\n // if not pin locked, then always allowed to be in this container\n return true;\n })) || [];\n this.attemptMoveColumns({ dragSourceType: dragSourceType, allMovingColumns: allMovingColumns, hDirection: hDirection, mouseX: mouseX, fromEnter: fromEnter, fakeEvent: fakeEvent });\n };\n MoveColumnFeature.prototype.normaliseDirection = function (hDirection) {\n if (this.gridOptionsService.is('enableRtl')) {\n switch (hDirection) {\n case HorizontalDirection.Left: return HorizontalDirection.Right;\n case HorizontalDirection.Right: return HorizontalDirection.Left;\n default: console.error(\"AG Grid: Unknown direction \" + hDirection);\n }\n }\n else {\n return hDirection;\n }\n };\n MoveColumnFeature.prototype.attemptMoveColumns = function (params) {\n var dragSourceType = params.dragSourceType, hDirection = params.hDirection, mouseX = params.mouseX, fromEnter = params.fromEnter, fakeEvent = params.fakeEvent;\n var draggingLeft = hDirection === HorizontalDirection.Left;\n var draggingRight = hDirection === HorizontalDirection.Right;\n var allMovingColumns = params.allMovingColumns;\n if (dragSourceType === DragSourceType.HeaderCell) {\n // If the columns we're dragging are the only visible columns of their group, move the hidden ones too\n var newCols_1 = [];\n allMovingColumns.forEach(function (col) {\n var movingGroup = null;\n var parent = col.getParent();\n while (parent != null && parent.getDisplayedLeafColumns().length === 1) {\n movingGroup = parent;\n parent = parent.getParent();\n }\n if (movingGroup != null) {\n movingGroup.getLeafColumns().forEach(function (newCol) {\n if (!newCols_1.includes(newCol)) {\n newCols_1.push(newCol);\n }\n });\n }\n else if (!newCols_1.includes(col)) {\n newCols_1.push(col);\n }\n });\n allMovingColumns = newCols_1;\n }\n // it is important to sort the moving columns as they are in grid columns, as the list of moving columns\n // could themselves be part of 'married children' groups, which means we need to maintain the order within\n // the moving list.\n var allMovingColumnsOrdered = allMovingColumns.slice();\n this.columnModel.sortColumnsLikeGridColumns(allMovingColumnsOrdered);\n var validMoves = this.calculateValidMoves(allMovingColumnsOrdered, draggingRight, mouseX);\n // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move\n // (ie left or right) to the mouse direction. however\n var oldIndex = this.calculateOldIndex(allMovingColumnsOrdered);\n if (validMoves.length === 0) {\n return;\n }\n var firstValidMove = validMoves[0];\n // the two check below stop an error when the user grabs a group my a middle column, then\n // it is possible the mouse pointer is to the right of a column while been dragged left.\n // so we need to make sure that the mouse pointer is actually left of the left most column\n // if moving left, and right of the right most column if moving right\n // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from\n // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should\n // place the column to the RHS even if the mouse is moving left and the column is already on\n // the LHS. otherwise we stick to the rule described above.\n var constrainDirection = oldIndex !== null && !fromEnter;\n // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag\n if (dragSourceType == DragSourceType.HeaderCell) {\n constrainDirection = oldIndex !== null;\n }\n // if the event was faked by a change in column pin state, then the original location of the column\n // is not reliable for dictating where the column may now be placed.\n if (constrainDirection && !fakeEvent) {\n // only allow left drag if this column is moving left\n if (draggingLeft && firstValidMove >= oldIndex) {\n return;\n }\n // only allow right drag if this column is moving right\n if (draggingRight && firstValidMove <= oldIndex) {\n return;\n }\n }\n // From when we find a move that passes all the rules\n // Remember what that move would look like in terms of displayed cols\n // keep going with further moves until we find a different result in displayed output\n // In this way potentialMoves contains all potential moves over 'hidden' columns\n var displayedCols = this.columnModel.getAllDisplayedColumns();\n var potentialMoves = [];\n var targetOrder = null;\n for (var i = 0; i < validMoves.length; i++) {\n var move = validMoves[i];\n var order = this.columnModel.getProposedColumnOrder(allMovingColumnsOrdered, move);\n if (!this.columnModel.doesOrderPassRules(order)) {\n continue;\n }\n var displayedOrder = order.filter(function (col) { return displayedCols.includes(col); });\n if (targetOrder === null) {\n targetOrder = displayedOrder;\n }\n else if (!_.areEqual(displayedOrder, targetOrder)) {\n break; // Stop looking for potential moves if the displayed result changes from the target\n }\n var fragCount = this.groupFragCount(order);\n potentialMoves.push({ move: move, fragCount: fragCount });\n }\n if (potentialMoves.length === 0) {\n return;\n }\n // The best move is the move with least group fragmentation\n potentialMoves.sort(function (a, b) { return a.fragCount - b.fragCount; });\n this.moveColumns(allMovingColumns, potentialMoves[0].move, 'uiColumnMoved', false);\n };\n // returns the index of the first column in the list ONLY if the cols are all beside\n // each other. if the cols are not beside each other, then returns null\n MoveColumnFeature.prototype.calculateOldIndex = function (movingCols) {\n var gridCols = this.columnModel.getAllGridColumns();\n var indexes = sortNumerically(movingCols.map(function (col) { return gridCols.indexOf(col); }));\n var firstIndex = indexes[0];\n var lastIndex = last(indexes);\n var spread = lastIndex - firstIndex;\n var gapsExist = spread !== indexes.length - 1;\n return gapsExist ? null : firstIndex;\n };\n MoveColumnFeature.prototype.moveColumns = function (columns, toIndex, source, finished) {\n this.columnModel.moveColumns(columns, toIndex, source, finished);\n this.lastMovedInfo = finished ? null : { columns: columns, toIndex: toIndex };\n };\n // A measure of how fragmented in terms of groups an order of columns is\n MoveColumnFeature.prototype.groupFragCount = function (columns) {\n function parents(col) {\n var result = [];\n var parent = col.getOriginalParent();\n while (parent != null) {\n result.push(parent);\n parent = parent.getOriginalParent();\n }\n return result;\n }\n var count = 0;\n var _loop_1 = function (i) {\n var _a;\n var a = parents(columns[i]);\n var b = parents(columns[i + 1]);\n // iterate over the longest one\n _a = __read$h(a.length > b.length ? [a, b] : [b, a], 2), a = _a[0], b = _a[1];\n a.forEach(function (parent) {\n if (b.indexOf(parent) === -1) {\n count++; // More fragmented if other column doesn't share the parent\n }\n });\n };\n for (var i = 0; i < columns.length - 1; i++) {\n _loop_1(i);\n }\n return count;\n };\n MoveColumnFeature.prototype.calculateValidMoves = function (movingCols, draggingRight, mouseX) {\n var isMoveBlocked = this.gridOptionsService.is('suppressMovableColumns') || movingCols.some(function (col) { return col.getColDef().suppressMovable; });\n if (isMoveBlocked) {\n return [];\n }\n // this is the list of cols on the screen, so it's these we use when comparing the x mouse position\n var allDisplayedCols = this.columnModel.getDisplayedColumns(this.pinned);\n // but this list is the list of all cols, when we move a col it's the index within this list that gets used,\n // so the result we return has to be and index location for this list\n var allGridCols = this.columnModel.getAllGridColumns();\n var movingDisplayedCols = allDisplayedCols.filter(function (col) { return includes(movingCols, col); });\n var otherDisplayedCols = allDisplayedCols.filter(function (col) { return !includes(movingCols, col); });\n var otherGridCols = allGridCols.filter(function (col) { return !includes(movingCols, col); });\n // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.\n // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving\n // col between b and c (so that it is under the mouse position).\n var displayIndex = 0;\n var availableWidth = mouseX;\n // if we are dragging right, then the columns will be to the left of the mouse, so we also want to\n // include the width of the moving columns\n if (draggingRight) {\n var widthOfMovingDisplayedCols_1 = 0;\n movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });\n availableWidth -= widthOfMovingDisplayedCols_1;\n }\n if (availableWidth > 0) {\n // now count how many of the displayed columns will fit to the left\n for (var i = 0; i < otherDisplayedCols.length; i++) {\n var col = otherDisplayedCols[i];\n availableWidth -= col.getActualWidth();\n if (availableWidth < 0) {\n break;\n }\n displayIndex++;\n }\n // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works\n if (draggingRight) {\n displayIndex++;\n }\n }\n // the display index is with respect to all the showing columns, however when we move, it's with\n // respect to all grid columns, so we need to translate from display index to grid index\n var firstValidMove;\n if (displayIndex > 0) {\n var leftColumn = otherDisplayedCols[displayIndex - 1];\n firstValidMove = otherGridCols.indexOf(leftColumn) + 1;\n }\n else {\n firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);\n if (firstValidMove === -1) {\n firstValidMove = 0;\n }\n }\n var validMoves = [firstValidMove];\n var numberComparator = function (a, b) { return a - b; };\n // add in other valid moves due to hidden columns and married children. for example, a particular\n // move might break a group that has married children (so move isn't valid), however there could\n // be hidden columns (not displayed) that we could jump over to make the move valid. because\n // they are hidden, user doesn't see any different, however it allows moves that would otherwise\n // not work. for example imagine a group with 9 columns and all columns are hidden except the\n // middle one (so 4 hidden to left, 4 hidden to right), then when moving 'firstValidMove' will\n // be relative to the not-shown column, however we need to consider the move jumping over all the\n // hidden children. if we didn't do this, then if the group just described was at the end (RHS) of the\n // grid, there would be no way to put a column after it (as the grid would only consider beside the\n // visible column, which would fail valid move rules).\n if (draggingRight) {\n // if dragging right, then we add all the additional moves to the right. so in other words\n // if the next move is not valid, find the next move to the right that is valid.\n var pointer = firstValidMove + 1;\n var lastIndex = allGridCols.length - 1;\n while (pointer <= lastIndex) {\n validMoves.push(pointer);\n pointer++;\n }\n // adding columns here means the order is now messed up\n validMoves.sort(numberComparator);\n }\n else {\n // if dragging left we do the reverse of dragging right, we add in all the valid moves to the\n // left. however we also have to consider moves to the right for all hidden columns first.\n // (this logic is hard to reason with, it was worked out with trial and error,\n // more observation rather than science).\n // add moves to the right\n var pointer = firstValidMove;\n var lastIndex = allGridCols.length - 1;\n var displacedCol = allGridCols[pointer];\n while (pointer <= lastIndex && this.isColumnHidden(allDisplayedCols, displacedCol)) {\n pointer++;\n validMoves.push(pointer);\n displacedCol = allGridCols[pointer];\n }\n // add moves to the left\n pointer = firstValidMove - 1;\n var firstDisplayIndex = 0;\n while (pointer >= firstDisplayIndex) {\n validMoves.push(pointer);\n pointer--;\n }\n // adding columns here means the order is now messed up\n validMoves.sort(numberComparator).reverse();\n }\n return validMoves;\n };\n // isHidden takes into account visible=false and group=closed, ie it is not displayed\n MoveColumnFeature.prototype.isColumnHidden = function (displayedColumns, col) {\n return displayedColumns.indexOf(col) < 0;\n };\n MoveColumnFeature.prototype.ensureIntervalStarted = function () {\n if (!this.movingIntervalId) {\n this.intervalCount = 0;\n this.failedMoveAttempts = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n if (this.needToMoveLeft) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_LEFT, true);\n }\n else {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_RIGHT, true);\n }\n }\n };\n MoveColumnFeature.prototype.ensureIntervalCleared = function () {\n if (this.movingIntervalId) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_MOVE);\n }\n };\n MoveColumnFeature.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved = null;\n var scrollFeature = this.gridBodyCon.getScrollFeature();\n if (this.needToMoveLeft) {\n pixelsMoved = scrollFeature.scrollHorizontally(-pixelsToMove);\n }\n else if (this.needToMoveRight) {\n pixelsMoved = scrollFeature.scrollHorizontally(pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n this.failedMoveAttempts = 0;\n }\n else {\n // we count the failed move attempts. if we fail to move 7 times, then we pin the column.\n // this is how we achieve pining by dragging the column to the edge of the grid.\n this.failedMoveAttempts++;\n var columns = this.lastDraggingEvent.dragItem.columns;\n var columnsThatCanPin = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n if (columnsThatCanPin.length > 0) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_PINNED);\n if (this.failedMoveAttempts > 7) {\n var pinType = this.needToMoveLeft ? 'left' : 'right';\n this.setColumnsPinned(columnsThatCanPin, pinType, \"uiColumnDragged\");\n this.dragAndDropService.nudge();\n }\n }\n }\n };\n __decorate$1v([\n Autowired('columnModel')\n ], MoveColumnFeature.prototype, \"columnModel\", void 0);\n __decorate$1v([\n Autowired('dragAndDropService')\n ], MoveColumnFeature.prototype, \"dragAndDropService\", void 0);\n __decorate$1v([\n Autowired('gridOptionsService')\n ], MoveColumnFeature.prototype, \"gridOptionsService\", void 0);\n __decorate$1v([\n Autowired('ctrlsService')\n ], MoveColumnFeature.prototype, \"ctrlsService\", void 0);\n __decorate$1v([\n PostConstruct\n ], MoveColumnFeature.prototype, \"init\", null);\n return MoveColumnFeature;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1x = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BodyDropTarget = /** @class */ (function (_super) {\n __extends$1x(BodyDropTarget, _super);\n function BodyDropTarget(pinned, eContainer) {\n var _this = _super.call(this) || this;\n _this.pinned = pinned;\n _this.eContainer = eContainer;\n return _this;\n }\n BodyDropTarget.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n switch (_this.pinned) {\n case 'left':\n _this.eSecondaryContainers = [\n [p.gridBodyCtrl.getBodyViewportElement(), p.leftRowContainerCtrl.getContainerElement()],\n [p.bottomLeftRowContainerCtrl.getContainerElement()],\n [p.topLeftRowContainerCtrl.getContainerElement()]\n ];\n break;\n case 'right':\n _this.eSecondaryContainers = [\n [p.gridBodyCtrl.getBodyViewportElement(), p.rightRowContainerCtrl.getContainerElement()],\n [p.bottomRightRowContainerCtrl.getContainerElement()],\n [p.topRightRowContainerCtrl.getContainerElement()]\n ];\n break;\n default:\n _this.eSecondaryContainers = [\n [p.gridBodyCtrl.getBodyViewportElement(), p.centerRowContainerCtrl.getViewportElement()],\n [p.bottomCenterRowContainerCtrl.getViewportElement()],\n [p.topCenterRowContainerCtrl.getViewportElement()]\n ];\n break;\n }\n });\n };\n BodyDropTarget.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.HeaderCell ||\n (type === DragSourceType.ToolPanel && this.gridOptionsService.is('allowDragFromColumnsToolPanel'));\n };\n BodyDropTarget.prototype.getSecondaryContainers = function () {\n return this.eSecondaryContainers;\n };\n BodyDropTarget.prototype.getContainer = function () {\n return this.eContainer;\n };\n BodyDropTarget.prototype.init = function () {\n this.moveColumnFeature = this.createManagedBean(new MoveColumnFeature(this.pinned, this.eContainer));\n this.bodyDropPivotTarget = this.createManagedBean(new BodyDropPivotTarget(this.pinned));\n this.dragAndDropService.addDropTarget(this);\n };\n BodyDropTarget.prototype.getIconName = function () {\n return this.currentDropListener.getIconName();\n };\n // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel\n // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when\n // dropped into the grid's body.\n BodyDropTarget.prototype.isDropColumnInPivotMode = function (draggingEvent) {\n // in pivot mode, then if moving a column (ie didn't come from toolpanel) then it's\n // a standard column move, however if it came from the toolpanel, then we are introducing\n // dimensions or values to the grid\n return this.columnModel.isPivotMode() && draggingEvent.dragSource.type === DragSourceType.ToolPanel;\n };\n BodyDropTarget.prototype.onDragEnter = function (draggingEvent) {\n // we pick the drop listener depending on whether we are in pivot mode are not. if we are\n // in pivot mode, then dropping cols changes the row group, pivot, value stats. otherwise\n // we change visibility state and position.\n this.currentDropListener = this.isDropColumnInPivotMode(draggingEvent) ? this.bodyDropPivotTarget : this.moveColumnFeature;\n this.currentDropListener.onDragEnter(draggingEvent);\n };\n BodyDropTarget.prototype.onDragLeave = function (params) {\n this.currentDropListener.onDragLeave(params);\n };\n BodyDropTarget.prototype.onDragging = function (params) {\n this.currentDropListener.onDragging(params);\n };\n BodyDropTarget.prototype.onDragStop = function (params) {\n this.currentDropListener.onDragStop(params);\n };\n __decorate$1u([\n Autowired('dragAndDropService')\n ], BodyDropTarget.prototype, \"dragAndDropService\", void 0);\n __decorate$1u([\n Autowired('columnModel')\n ], BodyDropTarget.prototype, \"columnModel\", void 0);\n __decorate$1u([\n Autowired('ctrlsService')\n ], BodyDropTarget.prototype, \"ctrlsService\", void 0);\n __decorate$1u([\n PostConstruct\n ], BodyDropTarget.prototype, \"postConstruct\", null);\n __decorate$1u([\n PostConstruct\n ], BodyDropTarget.prototype, \"init\", null);\n return BodyDropTarget;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$g = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$e = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$g(arguments[i]));\n return ar;\n};\nvar CssClassApplier = /** @class */ (function () {\n function CssClassApplier() {\n }\n CssClassApplier.getHeaderClassesFromColDef = function (abstractColDef, gridOptionsService, column, columnGroup) {\n if (missing(abstractColDef)) {\n return [];\n }\n return this.getColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, gridOptionsService, column, columnGroup);\n };\n CssClassApplier.getToolPanelClassesFromColDef = function (abstractColDef, gridOptionsService, column, columnGroup) {\n if (missing(abstractColDef)) {\n return [];\n }\n return this.getColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, gridOptionsService, column, columnGroup);\n };\n CssClassApplier.getClassParams = function (abstractColDef, gridOptionsService, column, columnGroup) {\n return {\n // bad naming, as colDef here can be a group or a column,\n // however most people won't appreciate the difference,\n // so keeping it as colDef to avoid confusion.\n colDef: abstractColDef,\n column: column,\n columnGroup: columnGroup,\n api: gridOptionsService.api,\n columnApi: gridOptionsService.columnApi,\n context: gridOptionsService.context\n };\n };\n CssClassApplier.getColumnClassesFromCollDef = function (classesOrFunc, abstractColDef, gridOptionsService, column, columnGroup) {\n if (missing(classesOrFunc)) {\n return [];\n }\n var classToUse;\n if (typeof classesOrFunc === 'function') {\n var params = this.getClassParams(abstractColDef, gridOptionsService, column, columnGroup);\n classToUse = classesOrFunc(params);\n }\n else {\n classToUse = classesOrFunc;\n }\n if (typeof classToUse === 'string') {\n return [classToUse];\n }\n if (Array.isArray(classToUse)) {\n return __spread$e(classToUse);\n }\n return [];\n };\n return CssClassApplier;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1w = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderCellComp = /** @class */ (function (_super) {\n __extends$1w(HeaderCellComp, _super);\n function HeaderCellComp(ctrl) {\n var _this = _super.call(this, HeaderCellComp.TEMPLATE, ctrl) || this;\n _this.headerCompVersion = 0;\n _this.column = ctrl.getColumnGroupChild();\n _this.pinned = ctrl.getPinned();\n return _this;\n }\n HeaderCellComp.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var setAttribute = function (name, value, element) {\n var actualElement = element ? element : eGui;\n if (value != null && value != '') {\n actualElement.setAttribute(name, value);\n }\n else {\n actualElement.removeAttribute(name);\n }\n };\n var compProxy = {\n setWidth: function (width) { return eGui.style.width = width; },\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setColId: function (id) { return setAttribute('col-id', id); },\n setTitle: function (title) { return setAttribute('title', title); },\n setAriaDescription: function (label) { return setAriaDescription(eGui, label); },\n setAriaSort: function (sort) { return sort ? setAriaSort(eGui, sort) : removeAriaSort(eGui); },\n setUserCompDetails: function (compDetails) { return _this.setUserCompDetails(compDetails); },\n getUserCompInstance: function () { return _this.headerComp; }\n };\n this.ctrl.setComp(compProxy, this.getGui(), this.eResize, this.eHeaderCompWrapper);\n var selectAllGui = this.ctrl.getSelectAllGui();\n this.eResize.insertAdjacentElement('afterend', selectAllGui);\n };\n HeaderCellComp.prototype.destroyHeaderComp = function () {\n if (this.headerComp) {\n this.eHeaderCompWrapper.removeChild(this.headerCompGui);\n this.headerComp = this.destroyBean(this.headerComp);\n this.headerCompGui = undefined;\n }\n };\n HeaderCellComp.prototype.setUserCompDetails = function (compDetails) {\n var _this = this;\n this.headerCompVersion++;\n var versionCopy = this.headerCompVersion;\n compDetails.newAgStackInstance().then(function (comp) { return _this.afterCompCreated(versionCopy, comp); });\n };\n HeaderCellComp.prototype.afterCompCreated = function (version, headerComp) {\n if (version != this.headerCompVersion || !this.isAlive()) {\n this.destroyBean(headerComp);\n return;\n }\n this.destroyHeaderComp();\n this.headerComp = headerComp;\n this.headerCompGui = headerComp.getGui();\n this.eHeaderCompWrapper.appendChild(this.headerCompGui);\n this.ctrl.setDragSource(this.getGui());\n };\n HeaderCellComp.TEMPLATE = \"<div class=\\\"ag-header-cell\\\" role=\\\"columnheader\\\" tabindex=\\\"-1\\\">\\n <div ref=\\\"eResize\\\" class=\\\"ag-header-cell-resize\\\" role=\\\"presentation\\\"></div>\\n <div ref=\\\"eHeaderCompWrapper\\\" class=\\\"ag-header-cell-comp-wrapper\\\" role=\\\"presentation\\\"></div>\\n </div>\";\n __decorate$1t([\n RefSelector('eResize')\n ], HeaderCellComp.prototype, \"eResize\", void 0);\n __decorate$1t([\n RefSelector('eHeaderCompWrapper')\n ], HeaderCellComp.prototype, \"eHeaderCompWrapper\", void 0);\n __decorate$1t([\n PostConstruct\n ], HeaderCellComp.prototype, \"postConstruct\", null);\n __decorate$1t([\n PreDestroy\n ], HeaderCellComp.prototype, \"destroyHeaderComp\", null);\n return HeaderCellComp;\n}(AbstractHeaderCellComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1v = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderGroupCellComp = /** @class */ (function (_super) {\n __extends$1v(HeaderGroupCellComp, _super);\n function HeaderGroupCellComp(ctrl) {\n return _super.call(this, HeaderGroupCellComp.TEMPLATE, ctrl) || this;\n }\n HeaderGroupCellComp.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var setAttribute = function (key, value) {\n return value != undefined ? eGui.setAttribute(key, value) : eGui.removeAttribute(key);\n };\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setResizableDisplayed: function (displayed) { return setDisplayed(_this.eResize, displayed); },\n setWidth: function (width) { return eGui.style.width = width; },\n setColId: function (id) { return eGui.setAttribute(\"col-id\", id); },\n setAriaExpanded: function (expanded) { return setAttribute('aria-expanded', expanded); },\n setTitle: function (title) { return setAttribute(\"title\", title); },\n setUserCompDetails: function (details) { return _this.setUserCompDetails(details); }\n };\n this.ctrl.setComp(compProxy, eGui, this.eResize);\n };\n HeaderGroupCellComp.prototype.setUserCompDetails = function (details) {\n var _this = this;\n details.newAgStackInstance().then(function (comp) { return _this.afterHeaderCompCreated(comp); });\n };\n HeaderGroupCellComp.prototype.afterHeaderCompCreated = function (headerGroupComp) {\n var _this = this;\n var destroyFunc = function () { return _this.destroyBean(headerGroupComp); };\n if (!this.isAlive()) {\n destroyFunc();\n return;\n }\n this.getGui().appendChild(headerGroupComp.getGui());\n this.addDestroyFunc(destroyFunc);\n this.ctrl.setDragSource(headerGroupComp.getGui());\n };\n HeaderGroupCellComp.TEMPLATE = \"<div class=\\\"ag-header-group-cell\\\" role=\\\"columnheader\\\" tabindex=\\\"-1\\\">\\n <div ref=\\\"eResize\\\" class=\\\"ag-header-cell-resize\\\" role=\\\"presentation\\\"></div>\\n </div>\";\n __decorate$1s([\n Autowired('userComponentFactory')\n ], HeaderGroupCellComp.prototype, \"userComponentFactory\", void 0);\n __decorate$1s([\n RefSelector('eResize')\n ], HeaderGroupCellComp.prototype, \"eResize\", void 0);\n __decorate$1s([\n PostConstruct\n ], HeaderGroupCellComp.prototype, \"postConstruct\", null);\n return HeaderGroupCellComp;\n}(AbstractHeaderCellComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1u = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderRowType;\n(function (HeaderRowType) {\n HeaderRowType[\"COLUMN_GROUP\"] = \"group\";\n HeaderRowType[\"COLUMN\"] = \"column\";\n HeaderRowType[\"FLOATING_FILTER\"] = \"filter\";\n})(HeaderRowType || (HeaderRowType = {}));\nvar HeaderRowComp = /** @class */ (function (_super) {\n __extends$1u(HeaderRowComp, _super);\n function HeaderRowComp(ctrl) {\n var _this = _super.call(this) || this;\n _this.headerComps = {};\n var extraClass = ctrl.getType() == HeaderRowType.COLUMN_GROUP ? \"ag-header-row-column-group\" :\n ctrl.getType() == HeaderRowType.FLOATING_FILTER ? \"ag-header-row-column-filter\" : \"ag-header-row-column\";\n _this.setTemplate(/* html */ \"<div class=\\\"ag-header-row \" + extraClass + \"\\\" role=\\\"row\\\"></div>\");\n _this.ctrl = ctrl;\n return _this;\n }\n //noinspection JSUnusedLocalSymbols\n HeaderRowComp.prototype.init = function () {\n var _this = this;\n var compProxy = {\n setTransform: function (transform) { return _this.getGui().style.transform = transform; },\n setHeight: function (height) { return _this.getGui().style.height = height; },\n setTop: function (top) { return _this.getGui().style.top = top; },\n setHeaderCtrls: function (ctrls) { return _this.setHeaderCtrls(ctrls); },\n setWidth: function (width) { return _this.getGui().style.width = width; },\n setAriaRowIndex: function (rowIndex) { return setAriaRowIndex(_this.getGui(), rowIndex); }\n };\n this.ctrl.setComp(compProxy);\n };\n HeaderRowComp.prototype.destroyHeaderCtrls = function () {\n this.setHeaderCtrls([]);\n };\n HeaderRowComp.prototype.setHeaderCtrls = function (ctrls) {\n var _this = this;\n if (!this.isAlive()) {\n return;\n }\n var oldComps = this.headerComps;\n this.headerComps = {};\n ctrls.forEach(function (ctrl) {\n var id = ctrl.getInstanceId();\n var comp = oldComps[id];\n delete oldComps[id];\n if (comp == null) {\n comp = _this.createHeaderComp(ctrl);\n _this.getGui().appendChild(comp.getGui());\n }\n _this.headerComps[id] = comp;\n });\n iterateObject(oldComps, function (id, comp) {\n _this.getGui().removeChild(comp.getGui());\n _this.destroyBean(comp);\n });\n var isEnsureDomOrder = this.gridOptionsService.is('ensureDomOrder');\n var isPrintLayout = this.gridOptionsService.isDomLayout('print');\n if (isEnsureDomOrder || isPrintLayout) {\n var comps = getAllValuesInObject(this.headerComps);\n // ordering the columns by left position orders them in the order they appear on the screen\n comps.sort(function (a, b) {\n var leftA = a.getCtrl().getColumnGroupChild().getLeft();\n var leftB = b.getCtrl().getColumnGroupChild().getLeft();\n return leftA - leftB;\n });\n var elementsInOrder = comps.map(function (c) { return c.getGui(); });\n setDomChildOrder(this.getGui(), elementsInOrder);\n }\n };\n HeaderRowComp.prototype.createHeaderComp = function (headerCtrl) {\n var result;\n switch (this.ctrl.getType()) {\n case HeaderRowType.COLUMN_GROUP:\n result = new HeaderGroupCellComp(headerCtrl);\n break;\n case HeaderRowType.FLOATING_FILTER:\n result = new HeaderFilterCellComp(headerCtrl);\n break;\n default:\n result = new HeaderCellComp(headerCtrl);\n break;\n }\n this.createBean(result);\n result.setParentComponent(this);\n return result;\n };\n __decorate$1r([\n PostConstruct\n ], HeaderRowComp.prototype, \"init\", null);\n __decorate$1r([\n PreDestroy\n ], HeaderRowComp.prototype, \"destroyHeaderCtrls\", null);\n return HeaderRowComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1t = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar instanceIdSequence$1 = 0;\nvar AbstractHeaderCellCtrl = /** @class */ (function (_super) {\n __extends$1t(AbstractHeaderCellCtrl, _super);\n function AbstractHeaderCellCtrl(columnGroupChild, parentRowCtrl) {\n var _this = _super.call(this) || this;\n _this.lastFocusEvent = null;\n _this.columnGroupChild = columnGroupChild;\n _this.parentRowCtrl = parentRowCtrl;\n // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'\n _this.instanceId = columnGroupChild.getUniqueId() + '-' + instanceIdSequence$1++;\n return _this;\n }\n AbstractHeaderCellCtrl.prototype.shouldStopEventPropagation = function (e) {\n var _a = this.focusService.getFocusedHeader(), headerRowIndex = _a.headerRowIndex, column = _a.column;\n return isUserSuppressingHeaderKeyboardEvent(this.gridOptionsService, e, headerRowIndex, column);\n };\n AbstractHeaderCellCtrl.prototype.getWrapperHasFocus = function () {\n var eDocument = this.gridOptionsService.getDocument();\n var activeEl = eDocument.activeElement;\n return activeEl === this.eGui;\n };\n AbstractHeaderCellCtrl.prototype.setGui = function (eGui) {\n this.eGui = eGui;\n this.addDomData();\n };\n AbstractHeaderCellCtrl.prototype.handleKeyDown = function (e) {\n var wrapperHasFocus = this.getWrapperHasFocus();\n switch (e.key) {\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n if (wrapperHasFocus) {\n e.preventDefault();\n }\n }\n };\n AbstractHeaderCellCtrl.prototype.addDomData = function () {\n var _this = this;\n var key = AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL;\n this.gridOptionsService.setDomData(this.eGui, key, this);\n this.addDestroyFunc(function () { return _this.gridOptionsService.setDomData(_this.eGui, key, null); });\n };\n AbstractHeaderCellCtrl.prototype.getGui = function () {\n return this.eGui;\n };\n AbstractHeaderCellCtrl.prototype.focus = function (event) {\n if (!this.eGui) {\n return false;\n }\n this.lastFocusEvent = event || null;\n this.eGui.focus();\n return true;\n };\n AbstractHeaderCellCtrl.prototype.getRowIndex = function () {\n return this.parentRowCtrl.getRowIndex();\n };\n AbstractHeaderCellCtrl.prototype.getParentRowCtrl = function () {\n return this.parentRowCtrl;\n };\n AbstractHeaderCellCtrl.prototype.getPinned = function () {\n return this.parentRowCtrl.getPinned();\n };\n AbstractHeaderCellCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n AbstractHeaderCellCtrl.prototype.getColumnGroupChild = function () {\n return this.columnGroupChild;\n };\n AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL = 'headerCtrl';\n __decorate$1q([\n Autowired('focusService')\n ], AbstractHeaderCellCtrl.prototype, \"focusService\", void 0);\n __decorate$1q([\n Autowired('beans')\n ], AbstractHeaderCellCtrl.prototype, \"beans\", void 0);\n __decorate$1q([\n Autowired('userComponentFactory')\n ], AbstractHeaderCellCtrl.prototype, \"userComponentFactory\", void 0);\n return AbstractHeaderCellCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1s = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetLeftFeature = /** @class */ (function (_super) {\n __extends$1s(SetLeftFeature, _super);\n function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {\n var _this = _super.call(this) || this;\n _this.columnOrGroup = columnOrGroup;\n _this.eCell = eCell;\n _this.ariaEl = _this.eCell.querySelector('[role=columnheader]') || _this.eCell;\n _this.colsSpanning = colsSpanning;\n _this.beans = beans;\n return _this;\n }\n SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {\n this.colsSpanning = colsSpanning;\n this.onLeftChanged();\n };\n SetLeftFeature.prototype.getColumnOrGroup = function () {\n if (this.beans.gridOptionsService.is('enableRtl') && this.colsSpanning) {\n return last(this.colsSpanning);\n }\n return this.columnOrGroup;\n };\n SetLeftFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.columnOrGroup, Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n this.setLeftFirstTime();\n // when in print layout, the left position is also dependent on the width of the pinned sections.\n // so additionally update left if any column width changes.\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onLeftChanged.bind(this));\n // setting left has a dependency on print layout\n this.addManagedPropertyListener('domLayout', this.onLeftChanged.bind(this));\n };\n SetLeftFeature.prototype.setLeftFirstTime = function () {\n var suppressMoveAnimation = this.beans.gridOptionsService.is('suppressColumnMoveAnimation');\n var oldLeftExists = exists(this.columnOrGroup.getOldLeft());\n var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;\n if (animateColumnMove) {\n this.animateInLeft();\n }\n else {\n this.onLeftChanged();\n }\n };\n SetLeftFeature.prototype.animateInLeft = function () {\n var _this = this;\n var colOrGroup = this.getColumnOrGroup();\n var left = colOrGroup.getLeft();\n var oldLeft = colOrGroup.getOldLeft();\n var oldActualLeft = this.modifyLeftForPrintLayout(colOrGroup, oldLeft);\n var actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(oldActualLeft);\n // we must keep track of the left we want to set to, as this would otherwise lead to a race\n // condition, if the user changed the left value many times in one VM turn, then we want to make\n // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left\n // position. eg if user changes column position twice, then setLeft() below executes twice in next\n // VM turn, but only one (the correct one) should get applied.\n this.actualLeft = actualLeft;\n this.beans.columnAnimationService.executeNextVMTurn(function () {\n // test this left value is the latest one to be applied, and if not, do nothing\n if (_this.actualLeft === actualLeft) {\n _this.setLeft(actualLeft);\n }\n });\n };\n SetLeftFeature.prototype.onLeftChanged = function () {\n var colOrGroup = this.getColumnOrGroup();\n var left = colOrGroup.getLeft();\n this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(this.actualLeft);\n };\n SetLeftFeature.prototype.modifyLeftForPrintLayout = function (colOrGroup, leftPosition) {\n var printLayout = this.beans.gridOptionsService.isDomLayout('print');\n if (!printLayout) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === 'left') {\n return leftPosition;\n }\n var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();\n if (colOrGroup.getPinned() === 'right') {\n var bodyWidth = this.beans.columnModel.getBodyContainerWidth();\n return leftWidth + bodyWidth + leftPosition;\n }\n // is in body\n return leftWidth + leftPosition;\n };\n SetLeftFeature.prototype.setLeft = function (value) {\n // if the value is null, then that means the column is no longer\n // displayed. there is logic in the rendering to fade these columns\n // out, so we don't try and change their left positions.\n if (exists(value)) {\n this.eCell.style.left = value + \"px\";\n }\n var indexColumn;\n if (this.columnOrGroup instanceof Column) {\n indexColumn = this.columnOrGroup;\n }\n else {\n var columnGroup = this.columnOrGroup;\n var children = columnGroup.getLeafColumns();\n if (!children.length) {\n return;\n }\n if (children.length > 1) {\n setAriaColSpan(this.ariaEl, children.length);\n }\n indexColumn = children[0];\n }\n var index = this.beans.columnModel.getAriaColumnIndex(indexColumn);\n setAriaColIndex(this.ariaEl, index);\n };\n __decorate$1p([\n PostConstruct\n ], SetLeftFeature.prototype, \"postConstruct\", null);\n return SetLeftFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1r = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HoverFeature = /** @class */ (function (_super) {\n __extends$1r(HoverFeature, _super);\n function HoverFeature(columns, element) {\n var _this = _super.call(this) || this;\n _this.columns = columns;\n _this.element = element;\n return _this;\n }\n HoverFeature.prototype.postConstruct = function () {\n if (this.gridOptionsService.is('columnHoverHighlight')) {\n this.addMouseHoverListeners();\n }\n };\n HoverFeature.prototype.addMouseHoverListeners = function () {\n this.addManagedListener(this.element, 'mouseout', this.onMouseOut.bind(this));\n this.addManagedListener(this.element, 'mouseover', this.onMouseOver.bind(this));\n };\n HoverFeature.prototype.onMouseOut = function () {\n this.columnHoverService.clearMouseOver();\n };\n HoverFeature.prototype.onMouseOver = function () {\n this.columnHoverService.setMouseOver(this.columns);\n };\n __decorate$1o([\n Autowired('columnHoverService')\n ], HoverFeature.prototype, \"columnHoverService\", void 0);\n __decorate$1o([\n PostConstruct\n ], HoverFeature.prototype, \"postConstruct\", null);\n return HoverFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderFilterCellCtrl = /** @class */ (function (_super) {\n __extends$1q(HeaderFilterCellCtrl, _super);\n function HeaderFilterCellCtrl(column, parentRowCtrl) {\n var _this = _super.call(this, column, parentRowCtrl) || this;\n _this.column = column;\n return _this;\n }\n HeaderFilterCellCtrl.prototype.setComp = function (comp, eGui, eButtonShowMainFilter, eFloatingFilterBody) {\n _super.prototype.setGui.call(this, eGui);\n this.comp = comp;\n this.eButtonShowMainFilter = eButtonShowMainFilter;\n this.eFloatingFilterBody = eFloatingFilterBody;\n var colDef = this.column.getColDef();\n var filterExists = !!colDef.filter || !!colDef.filterFramework;\n var floatingFilterExists = !!colDef.floatingFilter;\n this.active = filterExists && floatingFilterExists;\n this.setupWidth();\n this.setupLeft();\n this.setupHover();\n this.setupFocus();\n this.setupUserComp();\n this.setupSyncWithFilter();\n this.setupUi();\n this.addManagedListener(this.eButtonShowMainFilter, 'click', this.showParentFilter.bind(this));\n if (this.active) {\n this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, this.updateFilterButton.bind(this));\n }\n };\n HeaderFilterCellCtrl.prototype.setupUi = function () {\n this.comp.setButtonWrapperDisplayed(!this.suppressFilterButton && this.active);\n if (!this.active) {\n return;\n }\n this.comp.addOrRemoveBodyCssClass('ag-floating-filter-full-body', this.suppressFilterButton);\n this.comp.addOrRemoveBodyCssClass('ag-floating-filter-body', !this.suppressFilterButton);\n var eMenuIcon = createIconNoSpan('filter', this.gridOptionsService, this.column);\n if (eMenuIcon) {\n this.eButtonShowMainFilter.appendChild(eMenuIcon);\n }\n };\n HeaderFilterCellCtrl.prototype.setupFocus = function () {\n this.createManagedBean(new ManagedFocusFeature(this.eGui, {\n shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this)\n }));\n };\n HeaderFilterCellCtrl.prototype.onTabKeyDown = function (e) {\n var eDocument = this.gridOptionsService.getDocument();\n var activeEl = eDocument.activeElement;\n var wrapperHasFocus = activeEl === this.eGui;\n if (wrapperHasFocus) {\n return;\n }\n var nextFocusableEl = this.focusService.findNextFocusableElement(this.eGui, null, e.shiftKey);\n if (nextFocusableEl) {\n this.beans.headerNavigationService.scrollToColumn(this.column);\n e.preventDefault();\n nextFocusableEl.focus();\n return;\n }\n var nextFocusableColumn = this.findNextColumnWithFloatingFilter(e.shiftKey);\n if (!nextFocusableColumn) {\n return;\n }\n if (this.focusService.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: this.getParentRowCtrl().getRowIndex(),\n column: nextFocusableColumn\n },\n event: e\n })) {\n e.preventDefault();\n }\n };\n HeaderFilterCellCtrl.prototype.findNextColumnWithFloatingFilter = function (backwards) {\n var columModel = this.beans.columnModel;\n var nextCol = this.column;\n do {\n nextCol = backwards\n ? columModel.getDisplayedColBefore(nextCol)\n : columModel.getDisplayedColAfter(nextCol);\n if (!nextCol) {\n break;\n }\n } while (!nextCol.getColDef().filter || !nextCol.getColDef().floatingFilter);\n return nextCol;\n };\n HeaderFilterCellCtrl.prototype.handleKeyDown = function (e) {\n _super.prototype.handleKeyDown.call(this, e);\n var wrapperHasFocus = this.getWrapperHasFocus();\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n if (!wrapperHasFocus) {\n e.preventDefault();\n }\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n if (wrapperHasFocus) {\n return;\n }\n e.stopPropagation();\n case KeyCode.ENTER:\n if (wrapperHasFocus) {\n if (this.focusService.focusInto(this.eGui)) {\n e.preventDefault();\n }\n }\n break;\n case KeyCode.ESCAPE:\n if (!wrapperHasFocus) {\n this.eGui.focus();\n }\n }\n };\n HeaderFilterCellCtrl.prototype.onFocusIn = function (e) {\n var isRelatedWithin = this.eGui.contains(e.relatedTarget);\n // when the focus is already within the component,\n // we default to the browser's behavior\n if (isRelatedWithin) {\n return;\n }\n var notFromHeaderWrapper = !!e.relatedTarget && !e.relatedTarget.classList.contains('ag-floating-filter');\n var fromWithinHeader = !!e.relatedTarget && isElementChildOfClass(e.relatedTarget, 'ag-floating-filter');\n if (notFromHeaderWrapper && fromWithinHeader && e.target === this.eGui) {\n var lastFocusEvent = this.lastFocusEvent;\n var fromTab = !!(lastFocusEvent && lastFocusEvent.key === KeyCode.TAB);\n if (lastFocusEvent && fromTab) {\n var shouldFocusLast = lastFocusEvent.shiftKey;\n this.focusService.focusInto(this.eGui, shouldFocusLast);\n }\n }\n var rowIndex = this.getRowIndex();\n this.beans.focusService.setFocusedHeader(rowIndex, this.column);\n };\n HeaderFilterCellCtrl.prototype.setupHover = function () {\n var _this = this;\n this.createManagedBean(new HoverFeature([this.column], this.eGui));\n var listener = function () {\n if (!_this.gridOptionsService.is('columnHoverHighlight')) {\n return;\n }\n var hovered = _this.columnHoverService.isHovered(_this.column);\n _this.comp.addOrRemoveCssClass('ag-column-hover', hovered);\n };\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, listener);\n listener();\n };\n HeaderFilterCellCtrl.prototype.setupLeft = function () {\n var setLeftFeature = new SetLeftFeature(this.column, this.eGui, this.beans);\n this.createManagedBean(setLeftFeature);\n };\n HeaderFilterCellCtrl.prototype.setupUserComp = function () {\n var _this = this;\n if (!this.active) {\n return;\n }\n var colDef = this.column.getColDef();\n // this is unusual - we need a params value OUTSIDE the component the params are for.\n // the params are for the floating filter component, but this property is actually for the wrapper.\n this.suppressFilterButton = colDef.floatingFilterComponentParams ? !!colDef.floatingFilterComponentParams.suppressFilterButton : false;\n var compDetails = this.filterManager.getFloatingFilterCompDetails(this.column, function () { return _this.showParentFilter(); });\n if (compDetails) {\n this.comp.setCompDetails(compDetails);\n }\n };\n HeaderFilterCellCtrl.prototype.showParentFilter = function () {\n var eventSource = this.suppressFilterButton ? this.eFloatingFilterBody : this.eButtonShowMainFilter;\n this.menuFactory.showMenuAfterButtonClick(this.column, eventSource, 'floatingFilter', 'filterMenuTab', ['filterMenuTab']);\n };\n HeaderFilterCellCtrl.prototype.setupSyncWithFilter = function () {\n var _this = this;\n if (!this.active) {\n return;\n }\n var syncWithFilter = function (filterChangedEvent) {\n var compPromise = _this.comp.getFloatingFilterComp();\n if (!compPromise) {\n return;\n }\n var parentModel = _this.filterManager.getCurrentFloatingFilterParentModel(_this.column);\n compPromise.then(function (comp) {\n if (comp) {\n comp.onParentModelChanged(parentModel, filterChangedEvent);\n }\n });\n };\n this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, syncWithFilter);\n if (this.filterManager.isFilterActive(this.column)) {\n syncWithFilter(null);\n }\n };\n HeaderFilterCellCtrl.prototype.setupWidth = function () {\n var _this = this;\n var listener = function () {\n var width = _this.column.getActualWidth() + \"px\";\n _this.comp.setWidth(width);\n };\n this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, listener);\n listener();\n };\n HeaderFilterCellCtrl.prototype.updateFilterButton = function () {\n if (!this.suppressFilterButton && this.comp) {\n this.comp.setButtonWrapperDisplayed(this.filterManager.isFilterAllowed(this.column));\n }\n };\n __decorate$1n([\n Autowired('filterManager')\n ], HeaderFilterCellCtrl.prototype, \"filterManager\", void 0);\n __decorate$1n([\n Autowired('columnHoverService')\n ], HeaderFilterCellCtrl.prototype, \"columnHoverService\", void 0);\n __decorate$1n([\n Autowired('menuFactory')\n ], HeaderFilterCellCtrl.prototype, \"menuFactory\", void 0);\n return HeaderFilterCellCtrl;\n}(AbstractHeaderCellCtrl));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1p = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ResizeFeature = /** @class */ (function (_super) {\n __extends$1p(ResizeFeature, _super);\n function ResizeFeature(pinned, column, eResize, comp, ctrl) {\n var _this = _super.call(this) || this;\n _this.pinned = pinned;\n _this.column = column;\n _this.eResize = eResize;\n _this.comp = comp;\n _this.ctrl = ctrl;\n return _this;\n }\n ResizeFeature.prototype.postConstruct = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var destroyResizeFuncs = [];\n var canResize;\n var canAutosize;\n var addResize = function () {\n setDisplayed(_this.eResize, canResize);\n if (!canResize) {\n return;\n }\n var finishedWithResizeFunc = _this.horizontalResizeService.addResizeBar({\n eResizeBar: _this.eResize,\n onResizeStart: _this.onResizeStart.bind(_this),\n onResizing: _this.onResizing.bind(_this, false),\n onResizeEnd: _this.onResizing.bind(_this, true)\n });\n destroyResizeFuncs.push(finishedWithResizeFunc);\n if (canAutosize) {\n var skipHeaderOnAutoSize_1 = _this.gridOptionsService.is('skipHeaderOnAutoSize');\n var autoSizeColListener_1 = function () {\n _this.columnModel.autoSizeColumn(_this.column, skipHeaderOnAutoSize_1, \"uiColumnResized\");\n };\n _this.eResize.addEventListener('dblclick', autoSizeColListener_1);\n var touchListener_1 = new TouchListener(_this.eResize);\n touchListener_1.addEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener_1);\n _this.addDestroyFunc(function () {\n _this.eResize.removeEventListener('dblclick', autoSizeColListener_1);\n touchListener_1.removeEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener_1);\n touchListener_1.destroy();\n });\n }\n };\n var removeResize = function () {\n destroyResizeFuncs.forEach(function (f) { return f(); });\n destroyResizeFuncs.length = 0;\n };\n var refresh = function () {\n var resize = _this.column.isResizable();\n var autoSize = !_this.gridOptionsService.is('suppressAutoSize') && !colDef.suppressAutoSize;\n var propertyChange = resize !== canResize || autoSize !== canAutosize;\n if (propertyChange) {\n canResize = resize;\n canAutosize = autoSize;\n removeResize();\n addResize();\n }\n };\n refresh();\n this.addDestroyFunc(removeResize);\n this.ctrl.addRefreshFunction(refresh);\n };\n ResizeFeature.prototype.onResizing = function (finished, resizeAmount) {\n var resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);\n var columnWidths = [{ key: this.column, newWidth: this.resizeStartWidth + resizeAmountNormalised }];\n this.columnModel.setColumnWidths(columnWidths, this.resizeWithShiftKey, finished, \"uiColumnResized\");\n if (finished) {\n this.comp.addOrRemoveCssClass('ag-column-resizing', false);\n }\n };\n ResizeFeature.prototype.onResizeStart = function (shiftKey) {\n this.resizeStartWidth = this.column.getActualWidth();\n this.resizeWithShiftKey = shiftKey;\n this.comp.addOrRemoveCssClass('ag-column-resizing', true);\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?\n ResizeFeature.prototype.normaliseResizeAmount = function (dragChange) {\n var result = dragChange;\n var notPinningLeft = this.pinned !== 'left';\n var pinningRight = this.pinned === 'right';\n if (this.gridOptionsService.is('enableRtl')) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (notPinningLeft) {\n result *= -1;\n }\n }\n else {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n if (pinningRight) {\n result *= -1;\n }\n }\n return result;\n };\n __decorate$1m([\n Autowired('horizontalResizeService')\n ], ResizeFeature.prototype, \"horizontalResizeService\", void 0);\n __decorate$1m([\n Autowired('columnModel')\n ], ResizeFeature.prototype, \"columnModel\", void 0);\n __decorate$1m([\n PostConstruct\n ], ResizeFeature.prototype, \"postConstruct\", null);\n return ResizeFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1o = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectAllFeature = /** @class */ (function (_super) {\n __extends$1o(SelectAllFeature, _super);\n function SelectAllFeature(column) {\n var _this = _super.call(this) || this;\n _this.cbSelectAllVisible = false;\n _this.processingEventFromCheckbox = false;\n _this.column = column;\n var colDef = column.getColDef();\n _this.filteredOnly = !!(colDef === null || colDef === void 0 ? void 0 : colDef.headerCheckboxSelectionFilteredOnly);\n _this.currentPageOnly = !!(colDef === null || colDef === void 0 ? void 0 : colDef.headerCheckboxSelectionCurrentPageOnly);\n return _this;\n }\n SelectAllFeature.prototype.onSpaceKeyPressed = function (e) {\n var checkbox = this.cbSelectAll;\n var eDocument = this.gridOptionsService.getDocument();\n if (checkbox.isDisplayed() && !checkbox.getGui().contains(eDocument.activeElement)) {\n e.preventDefault();\n checkbox.setValue(!checkbox.getValue());\n }\n };\n SelectAllFeature.prototype.getCheckboxGui = function () {\n return this.cbSelectAll.getGui();\n };\n SelectAllFeature.prototype.setComp = function (ctrl) {\n this.headerCellCtrl = ctrl;\n this.cbSelectAll = this.createManagedBean(new AgCheckbox());\n this.cbSelectAll.addCssClass('ag-header-select-all');\n setAriaRole(this.cbSelectAll.getGui(), 'presentation');\n this.showOrHideSelectAll();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideSelectAll.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onSelectionChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));\n this.addManagedListener(this.cbSelectAll, AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));\n setAriaHidden(this.cbSelectAll.getGui(), true);\n this.cbSelectAll.getInputElement().setAttribute('tabindex', '-1');\n this.refreshSelectAllLabel();\n };\n SelectAllFeature.prototype.showOrHideSelectAll = function () {\n this.cbSelectAllVisible = this.isCheckboxSelection();\n this.cbSelectAll.setDisplayed(this.cbSelectAllVisible, { skipAriaHidden: true });\n if (this.cbSelectAllVisible) {\n // in case user is trying this feature with the wrong model type\n this.checkRightRowModelType('selectAllCheckbox');\n // make sure checkbox is showing the right state\n this.updateStateOfCheckbox();\n }\n this.refreshSelectAllLabel();\n };\n SelectAllFeature.prototype.onModelChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.onSelectionChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.updateStateOfCheckbox = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n this.processingEventFromCheckbox = true;\n var allSelected = this.selectionService.getSelectAllState(this.filteredOnly, this.currentPageOnly);\n this.cbSelectAll.setValue(allSelected);\n this.refreshSelectAllLabel();\n this.processingEventFromCheckbox = false;\n };\n SelectAllFeature.prototype.refreshSelectAllLabel = function () {\n if (!this.cbSelectAllVisible) {\n this.headerCellCtrl.setAriaDescriptionProperty('selectAll', null);\n this.cbSelectAll.setInputAriaLabel(null);\n }\n else {\n var translate = this.localeService.getLocaleTextFunc();\n var checked = this.cbSelectAll.getValue();\n var ariaStatus = checked ? translate('ariaChecked', 'checked') : translate('ariaUnchecked', 'unchecked');\n var ariaLabel = translate('ariaRowSelectAll', 'Press Space to toggle all rows selection');\n this.headerCellCtrl.setAriaDescriptionProperty('selectAll', ariaLabel + \" (\" + ariaStatus + \")\");\n this.cbSelectAll.setInputAriaLabel(ariaLabel + \" (\" + ariaStatus + \")\");\n }\n this.headerCellCtrl.refreshAriaDescription();\n };\n SelectAllFeature.prototype.checkRightRowModelType = function (feature) {\n var rowModelType = this.rowModel.getType();\n var rowModelMatches = rowModelType === 'clientSide' || rowModelType === 'serverSide';\n if (!rowModelMatches) {\n console.warn(\"AG Grid: \" + feature + \" is only available if using 'clientSide' or 'serverSide' rowModelType, you are using \" + rowModelType + \".\");\n return false;\n }\n return true;\n };\n SelectAllFeature.prototype.onCbSelectAll = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n if (!this.cbSelectAllVisible) {\n return;\n }\n var value = this.cbSelectAll.getValue();\n var source = 'uiSelectAll';\n if (this.currentPageOnly)\n source = 'uiSelectAllCurrentPage';\n else if (this.filteredOnly)\n source = 'uiSelectAllFiltered';\n var params = {\n source: source,\n justFiltered: this.filteredOnly,\n justCurrentPage: this.currentPageOnly,\n };\n if (value) {\n this.selectionService.selectAllRowNodes(params);\n }\n else {\n this.selectionService.deselectAllRowNodes(params);\n }\n };\n SelectAllFeature.prototype.isCheckboxSelection = function () {\n var result = this.column.getColDef().headerCheckboxSelection;\n if (typeof result === 'function') {\n var func = result;\n var params = {\n column: this.column,\n colDef: this.column.getColDef(),\n columnApi: this.columnApi,\n api: this.gridApi,\n context: this.gridOptionsService.context\n };\n result = func(params);\n }\n if (result) {\n return this.checkRightRowModelType('headerCheckboxSelection');\n }\n return false;\n };\n __decorate$1l([\n Autowired('gridApi')\n ], SelectAllFeature.prototype, \"gridApi\", void 0);\n __decorate$1l([\n Autowired('columnApi')\n ], SelectAllFeature.prototype, \"columnApi\", void 0);\n __decorate$1l([\n Autowired('rowModel')\n ], SelectAllFeature.prototype, \"rowModel\", void 0);\n __decorate$1l([\n Autowired('selectionService')\n ], SelectAllFeature.prototype, \"selectionService\", void 0);\n return SelectAllFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1n = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderCellCtrl = /** @class */ (function (_super) {\n __extends$1n(HeaderCellCtrl, _super);\n function HeaderCellCtrl(column, parentRowCtrl) {\n var _this = _super.call(this, column, parentRowCtrl) || this;\n _this.refreshFunctions = [];\n _this.userHeaderClasses = new Set();\n _this.ariaDescriptionProperties = new Map();\n _this.column = column;\n return _this;\n }\n HeaderCellCtrl.prototype.setComp = function (comp, eGui, eResize, eHeaderCompWrapper) {\n var _this = this;\n _super.prototype.setGui.call(this, eGui);\n this.comp = comp;\n this.updateState();\n this.setupWidth();\n this.setupMovingCss();\n this.setupMenuClass();\n this.setupSortableClass();\n this.setupWrapTextClass();\n this.refreshSpanHeaderHeight();\n this.setupAutoHeight(eHeaderCompWrapper);\n this.addColumnHoverListener();\n this.setupFilterCss();\n this.setupColId();\n this.setupClassesFromColDef();\n this.setupTooltip();\n this.addActiveHeaderMouseListeners();\n this.setupSelectAll();\n this.setupUserComp();\n this.refreshAria();\n this.createManagedBean(new ResizeFeature(this.getPinned(), this.column, eResize, comp, this));\n this.createManagedBean(new HoverFeature([this.column], eGui));\n this.createManagedBean(new SetLeftFeature(this.column, eGui, this.beans));\n this.createManagedBean(new ManagedFocusFeature(eGui, {\n shouldStopEventPropagation: function (e) { return _this.shouldStopEventPropagation(e); },\n onTabKeyDown: function () { return null; },\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this),\n onFocusOut: this.onFocusOut.bind(this)\n }));\n this.addManagedListener(this.column, Column.EVENT_COL_DEF_CHANGED, this.onColDefChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.onColumnPivotChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_HEADER_HEIGHT_CHANGED, this.onHeaderHeightChanged.bind(this));\n };\n HeaderCellCtrl.prototype.setupUserComp = function () {\n var compDetails = this.lookupUserCompDetails();\n this.setCompDetails(compDetails);\n };\n HeaderCellCtrl.prototype.setCompDetails = function (compDetails) {\n this.userCompDetails = compDetails;\n this.comp.setUserCompDetails(compDetails);\n };\n HeaderCellCtrl.prototype.lookupUserCompDetails = function () {\n var params = this.createParams();\n var colDef = this.column.getColDef();\n return this.userComponentFactory.getHeaderCompDetails(colDef, params);\n };\n HeaderCellCtrl.prototype.createParams = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var params = {\n column: this.column,\n displayName: this.displayName,\n enableSorting: colDef.sortable,\n enableMenu: this.menuEnabled,\n showColumnMenu: function (source) {\n _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);\n },\n progressSort: function (multiSort) {\n _this.sortController.progressSort(_this.column, !!multiSort, \"uiColumnSorted\");\n },\n setSort: function (sort, multiSort) {\n _this.sortController.setSortForColumn(_this.column, sort, !!multiSort, \"uiColumnSorted\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context,\n eGridHeader: this.getGui()\n };\n return params;\n };\n HeaderCellCtrl.prototype.setupSelectAll = function () {\n this.selectAllFeature = this.createManagedBean(new SelectAllFeature(this.column));\n this.selectAllFeature.setComp(this);\n };\n HeaderCellCtrl.prototype.getSelectAllGui = function () {\n return this.selectAllFeature.getCheckboxGui();\n };\n HeaderCellCtrl.prototype.handleKeyDown = function (e) {\n _super.prototype.handleKeyDown.call(this, e);\n if (e.key === KeyCode.SPACE) {\n this.selectAllFeature.onSpaceKeyPressed(e);\n }\n if (e.key === KeyCode.ENTER) {\n this.onEnterKeyPressed(e);\n }\n };\n HeaderCellCtrl.prototype.onEnterKeyPressed = function (e) {\n /// THIS IS BAD - we are assuming the header is not a user provided comp\n var headerComp = this.comp.getUserCompInstance();\n if (!headerComp) {\n return;\n }\n if (e.ctrlKey || e.metaKey) {\n if (this.menuEnabled && headerComp.showMenu) {\n e.preventDefault();\n headerComp.showMenu();\n }\n }\n else if (this.sortable) {\n var multiSort = e.shiftKey;\n this.sortController.progressSort(this.column, multiSort, \"uiColumnSorted\");\n }\n };\n HeaderCellCtrl.prototype.isMenuEnabled = function () {\n return this.menuEnabled;\n };\n HeaderCellCtrl.prototype.onFocusIn = function (e) {\n if (!this.getGui().contains(e.relatedTarget)) {\n var rowIndex = this.getRowIndex();\n this.focusService.setFocusedHeader(rowIndex, this.column);\n }\n this.setActiveHeader(true);\n };\n HeaderCellCtrl.prototype.onFocusOut = function (e) {\n if (this.getGui().contains(e.relatedTarget)) {\n return;\n }\n this.setActiveHeader(false);\n };\n HeaderCellCtrl.prototype.setupTooltip = function () {\n var _this = this;\n var tooltipCtrl = {\n getColumn: function () { return _this.column; },\n getColDef: function () { return _this.column.getColDef(); },\n getGui: function () { return _this.eGui; },\n getLocation: function () { return 'header'; },\n getTooltipValue: function () {\n var res = _this.column.getColDef().headerTooltip;\n return res;\n },\n };\n var tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));\n tooltipFeature.setComp(this.comp);\n this.refreshFunctions.push(function () { return tooltipFeature.refreshToolTip(); });\n };\n HeaderCellCtrl.prototype.setupClassesFromColDef = function () {\n var _this = this;\n var refreshHeaderClasses = function () {\n var colDef = _this.column.getColDef();\n var classes = CssClassApplier.getHeaderClassesFromColDef(colDef, _this.gridOptionsService, _this.column, null);\n var oldClasses = _this.userHeaderClasses;\n _this.userHeaderClasses = new Set(classes);\n classes.forEach(function (c) {\n if (oldClasses.has(c)) {\n // class already added, no need to apply it, but remove from old set\n oldClasses.delete(c);\n }\n else {\n // class new since last time, so apply it\n _this.comp.addOrRemoveCssClass(c, true);\n }\n });\n // now old set only has classes that were applied last time, but not this time, so remove them\n oldClasses.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, false); });\n };\n this.refreshFunctions.push(refreshHeaderClasses);\n refreshHeaderClasses();\n };\n HeaderCellCtrl.prototype.setDragSource = function (eSource) {\n var _this = this;\n this.dragSourceElement = eSource;\n this.removeDragSource();\n if (!eSource) {\n return;\n }\n if (!this.draggable) {\n return;\n }\n var hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n this.moveDragSource = {\n type: DragSourceType.HeaderCell,\n eElement: eSource,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n getDragItem: function () { return _this.createDragItem(); },\n dragItemName: this.displayName,\n onDragStarted: function () { return _this.column.setMoving(true, \"uiColumnMoved\"); },\n onDragStopped: function () { return _this.column.setMoving(false, \"uiColumnMoved\"); },\n onGridEnter: function (dragItem) {\n var _a;\n if (hideColumnOnExit) {\n var unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n _this.columnModel.setColumnsVisible(unlockedColumns, true, \"uiColumnMoved\");\n }\n },\n onGridExit: function (dragItem) {\n var _a;\n if (hideColumnOnExit) {\n var unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n _this.columnModel.setColumnsVisible(unlockedColumns, false, \"uiColumnMoved\");\n }\n },\n };\n this.dragAndDropService.addDragSource(this.moveDragSource, true);\n };\n HeaderCellCtrl.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n HeaderCellCtrl.prototype.removeDragSource = function () {\n if (this.moveDragSource) {\n this.dragAndDropService.removeDragSource(this.moveDragSource);\n this.moveDragSource = undefined;\n }\n };\n HeaderCellCtrl.prototype.onColDefChanged = function () {\n this.refresh();\n };\n HeaderCellCtrl.prototype.updateState = function () {\n var colDef = this.column.getColDef();\n this.menuEnabled = this.menuFactory.isMenuEnabled(this.column) && !colDef.suppressMenu;\n this.sortable = colDef.sortable;\n this.displayName = this.calculateDisplayName();\n this.draggable = this.workOutDraggable();\n };\n HeaderCellCtrl.prototype.addRefreshFunction = function (func) {\n this.refreshFunctions.push(func);\n };\n HeaderCellCtrl.prototype.refresh = function () {\n this.updateState();\n this.refreshHeaderComp();\n this.refreshAria();\n this.refreshFunctions.forEach(function (f) { return f(); });\n };\n HeaderCellCtrl.prototype.refreshHeaderComp = function () {\n var newCompDetails = this.lookupUserCompDetails();\n var compInstance = this.comp.getUserCompInstance();\n // only try refresh if old comp exists adn it is the correct type\n var attemptRefresh = compInstance != null && this.userCompDetails.componentClass == newCompDetails.componentClass;\n var headerCompRefreshed = attemptRefresh ? this.attemptHeaderCompRefresh(newCompDetails.params) : false;\n if (headerCompRefreshed) {\n // we do this as a refresh happens after colDefs change, and it's possible the column has had it's\n // draggable property toggled. no need to call this if not refreshing, as setDragSource is done\n // as part of appendHeaderComp\n this.setDragSource(this.dragSourceElement);\n }\n else {\n this.setCompDetails(newCompDetails);\n }\n };\n HeaderCellCtrl.prototype.attemptHeaderCompRefresh = function (params) {\n var headerComp = this.comp.getUserCompInstance();\n if (!headerComp) {\n return false;\n }\n // if no refresh method, then we want to replace the headerComp\n if (!headerComp.refresh) {\n return false;\n }\n var res = headerComp.refresh(params);\n return res;\n };\n HeaderCellCtrl.prototype.calculateDisplayName = function () {\n return this.columnModel.getDisplayNameForColumn(this.column, 'header', true);\n };\n HeaderCellCtrl.prototype.checkDisplayName = function () {\n // display name can change if aggFunc different, eg sum(Gold) is now max(Gold)\n if (this.displayName !== this.calculateDisplayName()) {\n this.refresh();\n }\n };\n HeaderCellCtrl.prototype.workOutDraggable = function () {\n var colDef = this.column.getColDef();\n var isSuppressMovableColumns = this.gridOptionsService.is('suppressMovableColumns');\n var colCanMove = !isSuppressMovableColumns && !colDef.suppressMovable && !colDef.lockPosition;\n // we should still be allowed drag the column, even if it can't be moved, if the column\n // can be dragged to a rowGroup or pivot drop zone\n return !!colCanMove || !!colDef.enableRowGroup || !!colDef.enablePivot;\n };\n HeaderCellCtrl.prototype.onColumnRowGroupChanged = function () {\n this.checkDisplayName();\n };\n HeaderCellCtrl.prototype.onColumnPivotChanged = function () {\n this.checkDisplayName();\n };\n HeaderCellCtrl.prototype.onColumnValueChanged = function () {\n this.checkDisplayName();\n };\n HeaderCellCtrl.prototype.setupWidth = function () {\n var _this = this;\n var listener = function () {\n var columnWidth = _this.column.getActualWidth();\n _this.comp.setWidth(columnWidth + \"px\");\n };\n this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupMovingCss = function () {\n var _this = this;\n var listener = function () {\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.column.isMoving());\n };\n this.addManagedListener(this.column, Column.EVENT_MOVING_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupMenuClass = function () {\n var _this = this;\n var listener = function () {\n _this.comp.addOrRemoveCssClass('ag-column-menu-visible', _this.column.isMenuVisible());\n };\n this.addManagedListener(this.column, Column.EVENT_MENU_VISIBLE_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupSortableClass = function () {\n var _this = this;\n var updateSortableCssClass = function () {\n _this.comp.addOrRemoveCssClass('ag-header-cell-sortable', !!_this.sortable);\n };\n updateSortableCssClass();\n this.addRefreshFunction(updateSortableCssClass);\n this.addManagedListener(this.eventService, Column.EVENT_SORT_CHANGED, this.refreshAriaSort.bind(this));\n };\n HeaderCellCtrl.prototype.setupWrapTextClass = function () {\n var _this = this;\n var listener = function () {\n var wrapText = !!_this.column.getColDef().wrapHeaderText;\n _this.comp.addOrRemoveCssClass('ag-header-cell-wrap-text', wrapText);\n };\n listener();\n this.addRefreshFunction(listener);\n };\n HeaderCellCtrl.prototype.onHeaderHeightChanged = function () {\n this.refreshSpanHeaderHeight();\n };\n HeaderCellCtrl.prototype.refreshSpanHeaderHeight = function () {\n var _a = this, eGui = _a.eGui, column = _a.column, comp = _a.comp, columnModel = _a.columnModel, gridOptionsService = _a.gridOptionsService;\n if (!column.isSpanHeaderHeight()) {\n return;\n }\n var _b = this.getColumnGroupPaddingInfo(), numberOfParents = _b.numberOfParents, isSpanningTotal = _b.isSpanningTotal;\n comp.addOrRemoveCssClass('ag-header-span-height', numberOfParents > 0);\n if (numberOfParents === 0) {\n return;\n }\n comp.addOrRemoveCssClass('ag-header-span-total', isSpanningTotal);\n var pivotMode = gridOptionsService.is('pivotMode');\n var groupHeaderHeight = pivotMode\n ? columnModel.getPivotGroupHeaderHeight()\n : columnModel.getGroupHeaderHeight();\n var headerHeight = columnModel.getColumnHeaderRowHeight();\n var extraHeight = numberOfParents * groupHeaderHeight;\n eGui.style.setProperty('top', -extraHeight + \"px\");\n eGui.style.setProperty('height', headerHeight + extraHeight + \"px\");\n };\n HeaderCellCtrl.prototype.getColumnGroupPaddingInfo = function () {\n var parent = this.column.getParent();\n if (!parent || !parent.isPadding()) {\n return { numberOfParents: 0, isSpanningTotal: false };\n }\n var numberOfParents = parent.getPaddingLevel() + 1;\n var isSpanningTotal = true;\n while (parent) {\n if (!parent.isPadding()) {\n isSpanningTotal = false;\n break;\n }\n parent = parent.getParent();\n }\n return { numberOfParents: numberOfParents, isSpanningTotal: isSpanningTotal };\n };\n HeaderCellCtrl.prototype.setupAutoHeight = function (wrapperElement) {\n var _this = this;\n var measureHeight = function (timesCalled) {\n if (!_this.isAlive()) {\n return;\n }\n var _a = getElementSize(_this.getGui()), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom, borderBottomWidth = _a.borderBottomWidth, borderTopWidth = _a.borderTopWidth;\n var extraHeight = paddingTop + paddingBottom + borderBottomWidth + borderTopWidth;\n var wrapperHeight = wrapperElement.offsetHeight;\n var autoHeight = wrapperHeight + extraHeight;\n if (timesCalled < 5) {\n // if not in doc yet, means framework not yet inserted, so wait for next VM turn,\n // maybe it will be ready next VM turn\n var doc = _this.beans.gridOptionsService.getDocument();\n var notYetInDom = !doc || !doc.contains(wrapperElement);\n // this happens in React, where React hasn't put any content in. we say 'possibly'\n // as a) may not be React and b) the cell could be empty anyway\n var possiblyNoContentYet = autoHeight == 0;\n if (notYetInDom || possiblyNoContentYet) {\n _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(timesCalled + 1); }, 0);\n return;\n }\n }\n _this.columnModel.setColumnHeaderHeight(_this.column, autoHeight);\n };\n var isMeasuring = false;\n var stopResizeObserver;\n var checkMeasuring = function () {\n var isSpanHeaderHeight = _this.column.isSpanHeaderHeight();\n var newValue = _this.column.isAutoHeaderHeight();\n if (isSpanHeaderHeight) {\n stopMeasuring();\n if (newValue) {\n var message_1 = \"AG Grid: The properties `spanHeaderHeight` and `autoHeaderHeight` cannot be used together in the same column.\";\n doOnce(function () { return console.warn(message_1); }, 'HeaderCellCtrl.spanHeaderHeightAndAutoHeaderHeight');\n }\n return;\n }\n if (newValue && !isMeasuring) {\n startMeasuring();\n }\n if (!newValue && isMeasuring) {\n stopMeasuring();\n }\n };\n var startMeasuring = function () {\n isMeasuring = true;\n measureHeight(0);\n _this.comp.addOrRemoveCssClass('ag-header-cell-auto-height', true);\n stopResizeObserver = _this.resizeObserverService.observeResize(wrapperElement, function () { return measureHeight(0); });\n };\n var stopMeasuring = function () {\n isMeasuring = false;\n if (stopResizeObserver) {\n stopResizeObserver();\n }\n _this.comp.addOrRemoveCssClass('ag-header-cell-auto-height', false);\n stopResizeObserver = undefined;\n };\n checkMeasuring();\n this.addDestroyFunc(function () { return stopMeasuring(); });\n // In theory we could rely on the resize observer for everything - but since it's debounced\n // it can be a little janky for smooth movement. in this case its better to react to our own events\n // And unfortunately we cant _just_ rely on our own events, since custom components can change whenever\n this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, function () { return isMeasuring && measureHeight(0); });\n // Displaying the sort icon changes the available area for text, so sort changes can affect height\n this.addManagedListener(this.eventService, Column.EVENT_SORT_CHANGED, function () {\n // Rendering changes for sort, happen after the event... not ideal\n if (isMeasuring) {\n _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(0); });\n }\n });\n this.addRefreshFunction(checkMeasuring);\n };\n HeaderCellCtrl.prototype.refreshAriaSort = function () {\n if (this.sortable) {\n var translate = this.localeService.getLocaleTextFunc();\n var sort = this.sortController.getDisplaySortForColumn(this.column) || null;\n this.comp.setAriaSort(getAriaSortState(sort));\n this.setAriaDescriptionProperty('sort', translate('ariaSortableColumn', 'Press ENTER to sort.'));\n }\n else {\n this.comp.setAriaSort();\n this.setAriaDescriptionProperty('sort', null);\n }\n };\n HeaderCellCtrl.prototype.refreshAriaMenu = function () {\n if (this.menuEnabled) {\n var translate = this.localeService.getLocaleTextFunc();\n this.setAriaDescriptionProperty('menu', translate('ariaMenuColumn', 'Press CTRL ENTER to open column menu.'));\n }\n else {\n this.setAriaDescriptionProperty('menu', null);\n }\n };\n HeaderCellCtrl.prototype.setAriaDescriptionProperty = function (property, value) {\n if (value != null) {\n this.ariaDescriptionProperties.set(property, value);\n }\n else {\n this.ariaDescriptionProperties.delete(property);\n }\n };\n HeaderCellCtrl.prototype.refreshAriaDescription = function () {\n var descriptionArray = Array.from(this.ariaDescriptionProperties.values());\n this.comp.setAriaDescription(descriptionArray.length ? descriptionArray.join(' ') : undefined);\n };\n HeaderCellCtrl.prototype.refreshAria = function () {\n this.refreshAriaSort();\n this.refreshAriaMenu();\n this.refreshAriaDescription();\n };\n HeaderCellCtrl.prototype.addColumnHoverListener = function () {\n var _this = this;\n var listener = function () {\n if (!_this.gridOptionsService.is('columnHoverHighlight')) {\n return;\n }\n var isHovered = _this.columnHoverService.isHovered(_this.column);\n _this.comp.addOrRemoveCssClass('ag-column-hover', isHovered);\n };\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupFilterCss = function () {\n var _this = this;\n var listener = function () {\n _this.comp.addOrRemoveCssClass('ag-header-cell-filtered', _this.column.isFilterActive());\n };\n this.addManagedListener(this.column, Column.EVENT_FILTER_ACTIVE_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupColId = function () {\n this.comp.setColId(this.column.getColId());\n };\n HeaderCellCtrl.prototype.addActiveHeaderMouseListeners = function () {\n var _this = this;\n var listener = function (e) { return _this.setActiveHeader(e.type === 'mouseenter'); };\n this.addManagedListener(this.getGui(), 'mouseenter', listener);\n this.addManagedListener(this.getGui(), 'mouseleave', listener);\n };\n HeaderCellCtrl.prototype.setActiveHeader = function (active) {\n this.comp.addOrRemoveCssClass('ag-header-active', active);\n };\n __decorate$1k([\n Autowired('columnModel')\n ], HeaderCellCtrl.prototype, \"columnModel\", void 0);\n __decorate$1k([\n Autowired('columnHoverService')\n ], HeaderCellCtrl.prototype, \"columnHoverService\", void 0);\n __decorate$1k([\n Autowired('sortController')\n ], HeaderCellCtrl.prototype, \"sortController\", void 0);\n __decorate$1k([\n Autowired('menuFactory')\n ], HeaderCellCtrl.prototype, \"menuFactory\", void 0);\n __decorate$1k([\n Autowired('dragAndDropService')\n ], HeaderCellCtrl.prototype, \"dragAndDropService\", void 0);\n __decorate$1k([\n Autowired('resizeObserverService')\n ], HeaderCellCtrl.prototype, \"resizeObserverService\", void 0);\n __decorate$1k([\n Autowired('gridApi')\n ], HeaderCellCtrl.prototype, \"gridApi\", void 0);\n __decorate$1k([\n Autowired('columnApi')\n ], HeaderCellCtrl.prototype, \"columnApi\", void 0);\n __decorate$1k([\n PreDestroy\n ], HeaderCellCtrl.prototype, \"removeDragSource\", null);\n return HeaderCellCtrl;\n}(AbstractHeaderCellCtrl));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1m = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupResizeFeature = /** @class */ (function (_super) {\n __extends$1m(GroupResizeFeature, _super);\n function GroupResizeFeature(comp, eResize, pinned, columnGroup) {\n var _this = _super.call(this) || this;\n _this.eResize = eResize;\n _this.comp = comp;\n _this.pinned = pinned;\n _this.columnGroup = columnGroup;\n return _this;\n }\n GroupResizeFeature.prototype.postConstruct = function () {\n var _this = this;\n if (!this.columnGroup.isResizable()) {\n this.comp.setResizableDisplayed(false);\n return;\n }\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.eResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n if (!this.gridOptionsService.is('suppressAutoSize')) {\n var skipHeaderOnAutoSize_1 = this.gridOptionsService.is('skipHeaderOnAutoSize');\n this.eResize.addEventListener('dblclick', function () {\n // get list of all the column keys we are responsible for\n var keys = [];\n var leafCols = _this.columnGroup.getDisplayedLeafColumns();\n leafCols.forEach(function (column) {\n // not all cols in the group may be participating with auto-resize\n if (!column.getColDef().suppressAutoSize) {\n keys.push(column.getColId());\n }\n });\n if (keys.length > 0) {\n _this.columnModel.autoSizeColumns({\n columns: keys,\n skipHeader: skipHeaderOnAutoSize_1,\n stopAtGroup: _this.columnGroup,\n source: 'uiColumnResized'\n });\n }\n _this.resizeLeafColumnsToFit('uiColumnResized');\n });\n }\n };\n GroupResizeFeature.prototype.onResizeStart = function (shiftKey) {\n var _this = this;\n this.calculateInitialValues();\n var takeFromGroup = null;\n if (shiftKey) {\n takeFromGroup = this.columnModel.getDisplayedGroupAfter(this.columnGroup);\n }\n if (takeFromGroup) {\n var takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();\n this.resizeTakeFromCols = takeFromLeafCols.filter(function (col) { return col.isResizable(); });\n this.resizeTakeFromStartWidth = 0;\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromStartWidth += col.getActualWidth(); });\n this.resizeTakeFromRatios = [];\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromRatios.push(col.getActualWidth() / _this.resizeTakeFromStartWidth); });\n }\n else {\n this.resizeTakeFromCols = null;\n this.resizeTakeFromStartWidth = null;\n this.resizeTakeFromRatios = null;\n }\n this.comp.addOrRemoveCssClass('ag-column-resizing', true);\n };\n GroupResizeFeature.prototype.onResizing = function (finished, resizeAmount, source) {\n if (source === void 0) { source = 'uiColumnResized'; }\n var resizeAmountNormalised = this.normaliseDragChange(resizeAmount);\n var width = this.resizeStartWidth + resizeAmountNormalised;\n this.resizeColumns(width, source, finished);\n };\n GroupResizeFeature.prototype.resizeLeafColumnsToFit = function (source) {\n var preferredSize = this.autoWidthCalculator.getPreferredWidthForColumnGroup(this.columnGroup);\n this.calculateInitialValues();\n if (preferredSize > this.resizeStartWidth) {\n this.resizeColumns(preferredSize, source, true);\n }\n };\n GroupResizeFeature.prototype.resizeColumns = function (totalWidth, source, finished) {\n if (finished === void 0) { finished = true; }\n var resizeSets = [];\n resizeSets.push({\n columns: this.resizeCols,\n ratios: this.resizeRatios,\n width: totalWidth\n });\n if (this.resizeTakeFromCols) {\n var diff = totalWidth - this.resizeStartWidth;\n resizeSets.push({\n columns: this.resizeTakeFromCols,\n ratios: this.resizeTakeFromRatios,\n width: this.resizeTakeFromStartWidth - diff\n });\n }\n this.columnModel.resizeColumnSets({\n resizeSets: resizeSets,\n finished: finished,\n source: source\n });\n if (finished) {\n this.comp.addOrRemoveCssClass('ag-column-resizing', false);\n }\n };\n GroupResizeFeature.prototype.calculateInitialValues = function () {\n var _this = this;\n var leafCols = this.columnGroup.getDisplayedLeafColumns();\n this.resizeCols = leafCols.filter(function (col) { return col.isResizable(); });\n this.resizeStartWidth = 0;\n this.resizeCols.forEach(function (col) { return _this.resizeStartWidth += col.getActualWidth(); });\n this.resizeRatios = [];\n this.resizeCols.forEach(function (col) { return _this.resizeRatios.push(col.getActualWidth() / _this.resizeStartWidth); });\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderCell - should refactor out?\n GroupResizeFeature.prototype.normaliseDragChange = function (dragChange) {\n var result = dragChange;\n if (this.gridOptionsService.is('enableRtl')) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== 'left') {\n result *= -1;\n }\n }\n else if (this.pinned === 'right') {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n result *= -1;\n }\n return result;\n };\n __decorate$1j([\n Autowired('horizontalResizeService')\n ], GroupResizeFeature.prototype, \"horizontalResizeService\", void 0);\n __decorate$1j([\n Autowired('autoWidthCalculator')\n ], GroupResizeFeature.prototype, \"autoWidthCalculator\", void 0);\n __decorate$1j([\n Autowired('columnModel')\n ], GroupResizeFeature.prototype, \"columnModel\", void 0);\n __decorate$1j([\n PostConstruct\n ], GroupResizeFeature.prototype, \"postConstruct\", null);\n return GroupResizeFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupWidthFeature = /** @class */ (function (_super) {\n __extends$1l(GroupWidthFeature, _super);\n function GroupWidthFeature(comp, columnGroup) {\n var _this = _super.call(this) || this;\n // the children can change, we keep destroy functions related to listening to the children here\n _this.removeChildListenersFuncs = [];\n _this.columnGroup = columnGroup;\n _this.comp = comp;\n return _this;\n }\n GroupWidthFeature.prototype.postConstruct = function () {\n // we need to listen to changes in child columns, as they impact our width\n this.addListenersToChildrenColumns();\n // the children belonging to this group can change, so we need to add and remove listeners as they change\n this.addManagedListener(this.columnGroup, ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));\n this.onWidthChanged();\n // the child listeners are not tied to this components life-cycle, as children can get added and removed\n // to the group - hence they are on a different life-cycle. so we must make sure the existing children\n // listeners are removed when we finally get destroyed\n this.addDestroyFunc(this.removeListenersOnChildrenColumns.bind(this));\n };\n GroupWidthFeature.prototype.addListenersToChildrenColumns = function () {\n var _this = this;\n // first destroy any old listeners\n this.removeListenersOnChildrenColumns();\n // now add new listeners to the new set of children\n var widthChangedListener = this.onWidthChanged.bind(this);\n this.columnGroup.getLeafColumns().forEach(function (column) {\n column.addEventListener('widthChanged', widthChangedListener);\n column.addEventListener('visibleChanged', widthChangedListener);\n _this.removeChildListenersFuncs.push(function () {\n column.removeEventListener('widthChanged', widthChangedListener);\n column.removeEventListener('visibleChanged', widthChangedListener);\n });\n });\n };\n GroupWidthFeature.prototype.removeListenersOnChildrenColumns = function () {\n this.removeChildListenersFuncs.forEach(function (func) { return func(); });\n this.removeChildListenersFuncs = [];\n };\n GroupWidthFeature.prototype.onDisplayedChildrenChanged = function () {\n this.addListenersToChildrenColumns();\n this.onWidthChanged();\n };\n GroupWidthFeature.prototype.onWidthChanged = function () {\n var columnWidth = this.columnGroup.getActualWidth();\n this.comp.setWidth(columnWidth + \"px\");\n this.comp.addOrRemoveCssClass('ag-hidden', columnWidth === 0);\n };\n __decorate$1i([\n PostConstruct\n ], GroupWidthFeature.prototype, \"postConstruct\", null);\n return GroupWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderGroupCellCtrl = /** @class */ (function (_super) {\n __extends$1k(HeaderGroupCellCtrl, _super);\n function HeaderGroupCellCtrl(columnGroup, parentRowCtrl) {\n var _this = _super.call(this, columnGroup, parentRowCtrl) || this;\n _this.columnGroup = columnGroup;\n return _this;\n }\n HeaderGroupCellCtrl.prototype.setComp = function (comp, eGui, eResize) {\n _super.prototype.setGui.call(this, eGui);\n this.comp = comp;\n this.displayName = this.columnModel.getDisplayNameForColumnGroup(this.columnGroup, 'header');\n this.addClasses();\n this.addAttributes();\n this.setupMovingCss();\n this.setupExpandable();\n this.setupTooltip();\n this.setupUserComp();\n var pinned = this.getParentRowCtrl().getPinned();\n var leafCols = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n this.createManagedBean(new HoverFeature(leafCols, eGui));\n this.createManagedBean(new SetLeftFeature(this.columnGroup, eGui, this.beans));\n this.createManagedBean(new GroupWidthFeature(comp, this.columnGroup));\n this.groupResizeFeature = this.createManagedBean(new GroupResizeFeature(comp, eResize, pinned, this.columnGroup));\n this.createManagedBean(new ManagedFocusFeature(eGui, {\n shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n onTabKeyDown: function () { return undefined; },\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this)\n }));\n };\n HeaderGroupCellCtrl.prototype.resizeLeafColumnsToFit = function (source) {\n var _a, _b;\n // AG-8205 Temp null check to avoid throwing when a component has not been setup yet (React 18)\n (_a = this.groupResizeFeature) === null || _a === void 0 ? void 0 : _a.onResizeStart(false);\n (_b = this.groupResizeFeature) === null || _b === void 0 ? void 0 : _b.resizeLeafColumnsToFit(source);\n };\n HeaderGroupCellCtrl.prototype.setupUserComp = function () {\n var _this = this;\n var displayName = this.displayName;\n var params = {\n displayName: this.displayName,\n columnGroup: this.columnGroup,\n setExpanded: function (expanded) {\n _this.columnModel.setColumnGroupOpened(_this.columnGroup.getProvidedColumnGroup(), expanded, \"gridInitializing\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context\n };\n if (!displayName) {\n var columnGroup = this.columnGroup;\n var leafCols = columnGroup.getLeafColumns();\n // find the top most column group that represents the same columns. so if we are dragging a group, we also\n // want to visually show the parent groups dragging for the same column set. for example imaging 5 levels\n // of grouping, with each group only containing the next group, and the last group containing three columns,\n // then when you move any group (even the lowest level group) you are in-fact moving all the groups, as all\n // the groups represent the same column set.\n while (columnGroup.getParent() && columnGroup.getParent().getLeafColumns().length === leafCols.length) {\n columnGroup = columnGroup.getParent();\n }\n var colGroupDef = columnGroup.getColGroupDef();\n if (colGroupDef) {\n displayName = colGroupDef.headerName;\n }\n if (!displayName) {\n displayName = leafCols ? this.columnModel.getDisplayNameForColumn(leafCols[0], 'header', true) : '';\n }\n }\n var compDetails = this.userComponentFactory.getHeaderGroupCompDetails(params);\n this.comp.setUserCompDetails(compDetails);\n };\n HeaderGroupCellCtrl.prototype.setupTooltip = function () {\n var _this = this;\n var colGroupDef = this.columnGroup.getColGroupDef();\n var tooltipCtrl = {\n getColumn: function () { return _this.columnGroup; },\n getGui: function () { return _this.eGui; },\n getLocation: function () { return 'headerGroup'; },\n getTooltipValue: function () { return colGroupDef && colGroupDef.headerTooltip; }\n };\n if (colGroupDef) {\n tooltipCtrl.getColDef = function () { return colGroupDef; };\n }\n var tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));\n tooltipFeature.setComp(this.comp);\n };\n HeaderGroupCellCtrl.prototype.setupExpandable = function () {\n var providedColGroup = this.columnGroup.getProvidedColumnGroup();\n this.refreshExpanded();\n this.addManagedListener(providedColGroup, ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED, this.refreshExpanded.bind(this));\n this.addManagedListener(providedColGroup, ProvidedColumnGroup.EVENT_EXPANDED_CHANGED, this.refreshExpanded.bind(this));\n };\n HeaderGroupCellCtrl.prototype.refreshExpanded = function () {\n var column = this.columnGroup;\n this.expandable = column.isExpandable();\n var expanded = column.isExpanded();\n if (this.expandable) {\n this.comp.setAriaExpanded(expanded ? 'true' : 'false');\n }\n else {\n this.comp.setAriaExpanded(undefined);\n }\n };\n HeaderGroupCellCtrl.prototype.addAttributes = function () {\n this.comp.setColId(this.columnGroup.getUniqueId());\n };\n HeaderGroupCellCtrl.prototype.addClasses = function () {\n var _this = this;\n var colGroupDef = this.columnGroup.getColGroupDef();\n var classes = CssClassApplier.getHeaderClassesFromColDef(colGroupDef, this.gridOptionsService, null, this.columnGroup);\n // having different classes below allows the style to not have a bottom border\n // on the group header, if no group is specified\n if (this.columnGroup.isPadding()) {\n classes.push('ag-header-group-cell-no-group');\n var leafCols = this.columnGroup.getLeafColumns();\n if (leafCols.every(function (col) { return col.isSpanHeaderHeight(); })) {\n classes.push('ag-header-span-height');\n }\n }\n else {\n classes.push('ag-header-group-cell-with-group');\n }\n classes.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, true); });\n };\n HeaderGroupCellCtrl.prototype.setupMovingCss = function () {\n var _this = this;\n var providedColumnGroup = this.columnGroup.getProvidedColumnGroup();\n var leafColumns = providedColumnGroup.getLeafColumns();\n // this function adds or removes the moving css, based on if the col is moving.\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n var listener = function () { return _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.columnGroup.isMoving()); };\n leafColumns.forEach(function (col) {\n _this.addManagedListener(col, Column.EVENT_MOVING_CHANGED, listener);\n });\n listener();\n };\n HeaderGroupCellCtrl.prototype.onFocusIn = function (e) {\n if (!this.eGui.contains(e.relatedTarget)) {\n var rowIndex = this.getRowIndex();\n this.beans.focusService.setFocusedHeader(rowIndex, this.columnGroup);\n }\n };\n HeaderGroupCellCtrl.prototype.handleKeyDown = function (e) {\n _super.prototype.handleKeyDown.call(this, e);\n var wrapperHasFocus = this.getWrapperHasFocus();\n if (!this.expandable || !wrapperHasFocus) {\n return;\n }\n if (e.key === KeyCode.ENTER) {\n var column = this.columnGroup;\n var newExpandedValue = !column.isExpanded();\n this.columnModel.setColumnGroupOpened(column.getProvidedColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n }\n };\n // unlike columns, this will only get called once, as we don't react on props on column groups\n // (we will always destroy and recreate this comp if something changes)\n HeaderGroupCellCtrl.prototype.setDragSource = function (eHeaderGroup) {\n var _this = this;\n if (this.isSuppressMoving()) {\n return;\n }\n var allLeafColumns = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n var hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n var dragSource = {\n type: DragSourceType.HeaderCell,\n eElement: eHeaderGroup,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n dragItemName: this.displayName,\n // we add in the original group leaf columns, so we move both visible and non-visible items\n getDragItem: this.getDragItemForGroup.bind(this),\n onDragStarted: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(true, \"uiColumnDragged\"); }); },\n onDragStopped: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(false, \"uiColumnDragged\"); }); },\n onGridEnter: function (dragItem) {\n var _a;\n if (hideColumnOnExit) {\n var unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n _this.columnModel.setColumnsVisible(unlockedColumns, true, \"uiColumnMoved\");\n }\n },\n onGridExit: function (dragItem) {\n var _a;\n if (hideColumnOnExit) {\n var unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n _this.columnModel.setColumnsVisible(unlockedColumns, false, \"uiColumnMoved\");\n }\n },\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n // when moving the columns, we want to move all the columns (contained within the DragItem) in this group in one go,\n // and in the order they are currently in the screen.\n HeaderGroupCellCtrl.prototype.getDragItemForGroup = function () {\n var allColumnsOriginalOrder = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n // capture visible state, used when re-entering grid to dictate which columns should be visible\n var visibleState = {};\n allColumnsOriginalOrder.forEach(function (column) { return visibleState[column.getId()] = column.isVisible(); });\n var allColumnsCurrentOrder = [];\n this.columnModel.getAllDisplayedColumns().forEach(function (column) {\n if (allColumnsOriginalOrder.indexOf(column) >= 0) {\n allColumnsCurrentOrder.push(column);\n removeFromArray(allColumnsOriginalOrder, column);\n }\n });\n // we are left with non-visible columns, stick these in at the end\n allColumnsOriginalOrder.forEach(function (column) { return allColumnsCurrentOrder.push(column); });\n // create and return dragItem\n return {\n columns: allColumnsCurrentOrder,\n visibleState: visibleState\n };\n };\n HeaderGroupCellCtrl.prototype.isSuppressMoving = function () {\n // if any child is fixed, then don't allow moving\n var childSuppressesMoving = false;\n this.columnGroup.getLeafColumns().forEach(function (column) {\n if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {\n childSuppressesMoving = true;\n }\n });\n var result = childSuppressesMoving || this.gridOptionsService.is('suppressMovableColumns');\n return result;\n };\n __decorate$1h([\n Autowired('columnModel')\n ], HeaderGroupCellCtrl.prototype, \"columnModel\", void 0);\n __decorate$1h([\n Autowired('dragAndDropService')\n ], HeaderGroupCellCtrl.prototype, \"dragAndDropService\", void 0);\n __decorate$1h([\n Autowired('gridApi')\n ], HeaderGroupCellCtrl.prototype, \"gridApi\", void 0);\n __decorate$1h([\n Autowired('columnApi')\n ], HeaderGroupCellCtrl.prototype, \"columnApi\", void 0);\n return HeaderGroupCellCtrl;\n}(AbstractHeaderCellCtrl));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar instanceIdSequence = 0;\nvar HeaderRowCtrl = /** @class */ (function (_super) {\n __extends$1j(HeaderRowCtrl, _super);\n function HeaderRowCtrl(rowIndex, pinned, type) {\n var _this = _super.call(this) || this;\n _this.instanceId = instanceIdSequence++;\n _this.headerCellCtrls = {};\n _this.rowIndex = rowIndex;\n _this.pinned = pinned;\n _this.type = type;\n return _this;\n }\n HeaderRowCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n HeaderRowCtrl.prototype.setComp = function (comp) {\n this.comp = comp;\n this.onRowHeightChanged();\n this.onVirtualColumnsChanged();\n this.setWidth();\n this.addEventListeners();\n if (isBrowserSafari()) {\n // fix for a Safari rendering bug that caused the header to flicker above chart panels\n // as you move the mouse over the header\n this.comp.setTransform('translateZ(0)');\n }\n comp.setAriaRowIndex(this.rowIndex + 1);\n };\n HeaderRowCtrl.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, this.onRowHeightChanged.bind(this));\n // when print layout changes, it changes what columns are in what section\n this.addManagedPropertyListener('domLayout', this.onDisplayedColumnsChanged.bind(this));\n this.addManagedPropertyListener('headerHeight', this.onRowHeightChanged.bind(this));\n this.addManagedPropertyListener('pivotHeaderHeight', this.onRowHeightChanged.bind(this));\n this.addManagedPropertyListener('groupHeaderHeight', this.onRowHeightChanged.bind(this));\n this.addManagedPropertyListener('pivotGroupHeaderHeight', this.onRowHeightChanged.bind(this));\n this.addManagedPropertyListener('floatingFiltersHeight', this.onRowHeightChanged.bind(this));\n };\n HeaderRowCtrl.prototype.getHeaderCellCtrl = function (column) {\n return values(this.headerCellCtrls).find(function (cellCtrl) { return cellCtrl.getColumnGroupChild() === column; });\n };\n HeaderRowCtrl.prototype.onDisplayedColumnsChanged = function () {\n this.onVirtualColumnsChanged();\n this.setWidth();\n this.onRowHeightChanged();\n };\n HeaderRowCtrl.prototype.getType = function () {\n return this.type;\n };\n HeaderRowCtrl.prototype.onColumnResized = function () {\n this.setWidth();\n };\n HeaderRowCtrl.prototype.setWidth = function () {\n var width = this.getWidthForRow();\n this.comp.setWidth(width + \"px\");\n };\n HeaderRowCtrl.prototype.getWidthForRow = function () {\n var printLayout = this.gridOptionsService.isDomLayout('print');\n if (printLayout) {\n var pinned = this.pinned != null;\n if (pinned) {\n return 0;\n }\n return this.columnModel.getContainerWidth('right')\n + this.columnModel.getContainerWidth('left')\n + this.columnModel.getContainerWidth(null);\n }\n // if not printing, just return the width as normal\n return this.columnModel.getContainerWidth(this.pinned);\n };\n HeaderRowCtrl.prototype.onRowHeightChanged = function () {\n var headerRowCount = this.columnModel.getHeaderRowCount();\n var sizes = [];\n var numberOfFloating = 0;\n if (this.columnModel.hasFloatingFilters()) {\n headerRowCount++;\n numberOfFloating = 1;\n }\n var groupHeight = this.columnModel.getColumnGroupHeaderRowHeight();\n var headerHeight = this.columnModel.getColumnHeaderRowHeight();\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n for (var i = 0; i < numberOfGroups; i++) {\n sizes.push(groupHeight);\n }\n sizes.push(headerHeight);\n for (var i = 0; i < numberOfFloating; i++) {\n sizes.push(this.columnModel.getFloatingFiltersHeight());\n }\n var topOffset = 0;\n for (var i = 0; i < this.rowIndex; i++) {\n topOffset += sizes[i];\n }\n var thisRowHeight = sizes[this.rowIndex] + 'px';\n this.comp.setTop(topOffset + 'px');\n this.comp.setHeight(thisRowHeight);\n };\n HeaderRowCtrl.prototype.getPinned = function () {\n return this.pinned;\n };\n HeaderRowCtrl.prototype.getRowIndex = function () {\n return this.rowIndex;\n };\n HeaderRowCtrl.prototype.onVirtualColumnsChanged = function () {\n var _this = this;\n var oldCtrls = this.headerCellCtrls;\n this.headerCellCtrls = {};\n var columns = this.getColumnsInViewport();\n columns.forEach(function (child) {\n // skip groups that have no displayed children. this can happen when the group is broken,\n // and this section happens to have nothing to display for the open / closed state.\n // (a broken group is one that is split, ie columns in the group have a non-group column\n // in between them)\n if (child.isEmptyGroup()) {\n return;\n }\n var idOfChild = child.getUniqueId();\n // if we already have this cell rendered, do nothing\n var headerCtrl = oldCtrls[idOfChild];\n delete oldCtrls[idOfChild];\n // it's possible there is a new Column with the same ID, but it's for a different Column.\n // this is common with pivoting, where the pivot cols change, but the id's are still pivot_0,\n // pivot_1 etc. so if new col but same ID, need to remove the old col here first as we are\n // about to replace it in the this.headerComps map.\n var forOldColumn = headerCtrl && headerCtrl.getColumnGroupChild() != child;\n if (forOldColumn) {\n _this.destroyBean(headerCtrl);\n headerCtrl = undefined;\n }\n if (headerCtrl == null) {\n switch (_this.type) {\n case HeaderRowType.FLOATING_FILTER:\n headerCtrl = _this.createBean(new HeaderFilterCellCtrl(child, _this));\n break;\n case HeaderRowType.COLUMN_GROUP:\n headerCtrl = _this.createBean(new HeaderGroupCellCtrl(child, _this));\n break;\n default:\n headerCtrl = _this.createBean(new HeaderCellCtrl(child, _this));\n break;\n }\n }\n _this.headerCellCtrls[idOfChild] = headerCtrl;\n });\n // we want to keep columns that are focused, otherwise keyboard navigation breaks\n var isFocusedAndDisplayed = function (ctrl) {\n var isFocused = _this.focusService.isHeaderWrapperFocused(ctrl);\n if (!isFocused) {\n return false;\n }\n var isDisplayed = _this.columnModel.isDisplayed(ctrl.getColumnGroupChild());\n return isDisplayed;\n };\n iterateObject(oldCtrls, function (id, oldCtrl) {\n var keepCtrl = isFocusedAndDisplayed(oldCtrl);\n if (keepCtrl) {\n _this.headerCellCtrls[id] = oldCtrl;\n }\n else {\n _this.destroyBean(oldCtrl);\n }\n });\n var ctrlsToDisplay = getAllValuesInObject(this.headerCellCtrls);\n this.comp.setHeaderCtrls(ctrlsToDisplay);\n };\n HeaderRowCtrl.prototype.getColumnsInViewport = function () {\n var printLayout = this.gridOptionsService.isDomLayout('print');\n return printLayout ? this.getColumnsInViewportPrintLayout() : this.getColumnsInViewportNormalLayout();\n };\n HeaderRowCtrl.prototype.getColumnsInViewportPrintLayout = function () {\n var _this = this;\n // for print layout, we add all columns into the center\n if (this.pinned != null) {\n return [];\n }\n var viewportColumns = [];\n var actualDepth = this.getActualDepth();\n ['left', null, 'right'].forEach(function (pinned) {\n var items = _this.columnModel.getVirtualHeaderGroupRow(pinned, actualDepth);\n viewportColumns = viewportColumns.concat(items);\n });\n return viewportColumns;\n };\n HeaderRowCtrl.prototype.getActualDepth = function () {\n return this.type == HeaderRowType.FLOATING_FILTER ? this.rowIndex - 1 : this.rowIndex;\n };\n HeaderRowCtrl.prototype.getColumnsInViewportNormalLayout = function () {\n // when in normal layout, we add the columns for that container only\n return this.columnModel.getVirtualHeaderGroupRow(this.pinned, this.getActualDepth());\n };\n HeaderRowCtrl.prototype.focusHeader = function (column, event) {\n var allCtrls = getAllValuesInObject(this.headerCellCtrls);\n var ctrl = allCtrls.find(function (ctrl) { return ctrl.getColumnGroupChild() == column; });\n if (!ctrl) {\n return false;\n }\n ctrl.focus(event);\n return true;\n };\n HeaderRowCtrl.prototype.destroy = function () {\n var _this = this;\n iterateObject(this.headerCellCtrls, function (key, ctrl) {\n _this.destroyBean(ctrl);\n });\n this.headerCellCtrls = {};\n _super.prototype.destroy.call(this);\n };\n __decorate$1g([\n Autowired('columnModel')\n ], HeaderRowCtrl.prototype, \"columnModel\", void 0);\n __decorate$1g([\n Autowired('focusService')\n ], HeaderRowCtrl.prototype, \"focusService\", void 0);\n return HeaderRowCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$f = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$d = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$f(arguments[i]));\n return ar;\n};\nvar HeaderRowContainerCtrl = /** @class */ (function (_super) {\n __extends$1i(HeaderRowContainerCtrl, _super);\n function HeaderRowContainerCtrl(pinned) {\n var _this = _super.call(this) || this;\n _this.hidden = false;\n _this.groupsRowCtrls = [];\n _this.pinned = pinned;\n return _this;\n }\n HeaderRowContainerCtrl.prototype.setComp = function (comp, eGui) {\n this.comp = comp;\n this.eViewport = eGui;\n this.setupCenterWidth();\n this.setupPinnedWidth();\n this.setupDragAndDrop(this.eViewport);\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.ctrlsService.registerHeaderContainer(this, this.pinned);\n if (this.columnModel.isReady()) {\n this.refresh();\n }\n };\n HeaderRowContainerCtrl.prototype.setupDragAndDrop = function (dropContainer) {\n var bodyDropTarget = new BodyDropTarget(this.pinned, dropContainer);\n this.createManagedBean(bodyDropTarget);\n };\n HeaderRowContainerCtrl.prototype.refresh = function (keepColumns) {\n var _this = this;\n if (keepColumns === void 0) { keepColumns = false; }\n var sequence = new NumberSequence();\n var focusedHeaderPosition = this.focusService.getFocusHeaderToUseAfterRefresh();\n var refreshColumnGroups = function () {\n var groupRowCount = _this.columnModel.getHeaderRowCount() - 1;\n _this.groupsRowCtrls = _this.destroyBeans(_this.groupsRowCtrls);\n for (var i = 0; i < groupRowCount; i++) {\n var ctrl = _this.createBean(new HeaderRowCtrl(sequence.next(), _this.pinned, HeaderRowType.COLUMN_GROUP));\n _this.groupsRowCtrls.push(ctrl);\n }\n };\n var refreshColumns = function () {\n var rowIndex = sequence.next();\n var needNewInstance = !_this.hidden && (_this.columnsRowCtrl == null || !keepColumns || _this.columnsRowCtrl.getRowIndex() !== rowIndex);\n var shouldDestroyInstance = needNewInstance || _this.hidden;\n if (shouldDestroyInstance) {\n _this.columnsRowCtrl = _this.destroyBean(_this.columnsRowCtrl);\n }\n if (needNewInstance) {\n _this.columnsRowCtrl = _this.createBean(new HeaderRowCtrl(rowIndex, _this.pinned, HeaderRowType.COLUMN));\n }\n };\n var refreshFilters = function () {\n var includeFloatingFilter = _this.columnModel.hasFloatingFilters() && !_this.hidden;\n var destroyPreviousComp = function () {\n _this.filtersRowCtrl = _this.destroyBean(_this.filtersRowCtrl);\n };\n if (!includeFloatingFilter) {\n destroyPreviousComp();\n return;\n }\n var rowIndex = sequence.next();\n if (_this.filtersRowCtrl) {\n var rowIndexMismatch = _this.filtersRowCtrl.getRowIndex() !== rowIndex;\n if (!keepColumns || rowIndexMismatch) {\n destroyPreviousComp();\n }\n }\n if (!_this.filtersRowCtrl) {\n _this.filtersRowCtrl = _this.createBean(new HeaderRowCtrl(rowIndex, _this.pinned, HeaderRowType.FLOATING_FILTER));\n }\n };\n refreshColumnGroups();\n refreshColumns();\n refreshFilters();\n var allCtrls = this.getAllCtrls();\n this.comp.setCtrls(allCtrls);\n this.restoreFocusOnHeader(focusedHeaderPosition);\n };\n HeaderRowContainerCtrl.prototype.restoreFocusOnHeader = function (position) {\n if (position == null || position.column.getPinned() != this.pinned) {\n return;\n }\n this.focusService.focusHeaderPosition({ headerPosition: position });\n };\n HeaderRowContainerCtrl.prototype.getAllCtrls = function () {\n var res = __spread$d(this.groupsRowCtrls);\n if (this.columnsRowCtrl) {\n res.push(this.columnsRowCtrl);\n }\n if (this.filtersRowCtrl) {\n res.push(this.filtersRowCtrl);\n }\n return res;\n };\n // grid cols have changed - this also means the number of rows in the header can have\n // changed. so we remove all the old rows and insert new ones for a complete refresh\n HeaderRowContainerCtrl.prototype.onGridColumnsChanged = function () {\n this.refresh(true);\n };\n HeaderRowContainerCtrl.prototype.setupCenterWidth = function () {\n var _this = this;\n if (this.pinned != null) {\n return;\n }\n this.createManagedBean(new CenterWidthFeature(function (width) { return _this.comp.setCenterWidth(width + \"px\"); }, true));\n };\n HeaderRowContainerCtrl.prototype.setHorizontalScroll = function (offset) {\n this.comp.setViewportScrollLeft(offset);\n };\n HeaderRowContainerCtrl.prototype.setupPinnedWidth = function () {\n var _this = this;\n if (this.pinned == null) {\n return;\n }\n var pinningLeft = this.pinned === 'left';\n var pinningRight = this.pinned === 'right';\n this.hidden = true;\n var listener = function () {\n var width = pinningLeft ? _this.pinnedWidthService.getPinnedLeftWidth() : _this.pinnedWidthService.getPinnedRightWidth();\n if (width == null) {\n return;\n } // can happen at initialisation, width not yet set\n var hidden = (width == 0);\n var hiddenChanged = _this.hidden !== hidden;\n var isRtl = _this.gridOptionsService.is('enableRtl');\n var scrollbarWidth = _this.gridOptionsService.getScrollbarWidth();\n // if there is a scroll showing (and taking up space, so Windows, and not iOS)\n // in the body, then we add extra space to keep header aligned with the body,\n // as body width fits the cols and the scrollbar\n var addPaddingForScrollbar = _this.scrollVisibleService.isVerticalScrollShowing() && ((isRtl && pinningLeft) || (!isRtl && pinningRight));\n var widthWithPadding = addPaddingForScrollbar ? width + scrollbarWidth : width;\n _this.comp.setPinnedContainerWidth(widthWithPadding + \"px\");\n _this.comp.setDisplayed(!hidden);\n if (hiddenChanged) {\n _this.hidden = hidden;\n _this.refresh();\n }\n };\n this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, listener);\n };\n HeaderRowContainerCtrl.prototype.getHeaderCtrlForColumn = function (column) {\n if (column instanceof Column) {\n if (!this.columnsRowCtrl) {\n return;\n }\n return this.columnsRowCtrl.getHeaderCellCtrl(column);\n }\n if (this.groupsRowCtrls.length === 0) {\n return;\n }\n for (var i = 0; i < this.groupsRowCtrls.length; i++) {\n var ctrl = this.groupsRowCtrls[i].getHeaderCellCtrl(column);\n if (ctrl) {\n return ctrl;\n }\n }\n };\n HeaderRowContainerCtrl.prototype.getHtmlElementForColumnHeader = function (column) {\n /* tslint:enable */\n var cellCtrl = this.getHeaderCtrlForColumn(column);\n if (!cellCtrl) {\n return null;\n }\n return cellCtrl.getGui();\n };\n HeaderRowContainerCtrl.prototype.getRowType = function (rowIndex) {\n var allCtrls = this.getAllCtrls();\n var ctrl = allCtrls[rowIndex];\n return ctrl ? ctrl.getType() : undefined;\n };\n HeaderRowContainerCtrl.prototype.focusHeader = function (rowIndex, column, event) {\n var allCtrls = this.getAllCtrls();\n var ctrl = allCtrls[rowIndex];\n if (!ctrl) {\n return false;\n }\n return ctrl.focusHeader(column, event);\n };\n HeaderRowContainerCtrl.prototype.getRowCount = function () {\n return this.groupsRowCtrls.length + (this.columnsRowCtrl ? 1 : 0) + (this.filtersRowCtrl ? 1 : 0);\n };\n HeaderRowContainerCtrl.prototype.destroy = function () {\n if (this.filtersRowCtrl) {\n this.filtersRowCtrl = this.destroyBean(this.filtersRowCtrl);\n }\n if (this.columnsRowCtrl) {\n this.columnsRowCtrl = this.destroyBean(this.columnsRowCtrl);\n }\n if (this.groupsRowCtrls && this.groupsRowCtrls.length) {\n this.groupsRowCtrls = this.destroyBeans(this.groupsRowCtrls);\n }\n _super.prototype.destroy.call(this);\n };\n __decorate$1f([\n Autowired('ctrlsService')\n ], HeaderRowContainerCtrl.prototype, \"ctrlsService\", void 0);\n __decorate$1f([\n Autowired('scrollVisibleService')\n ], HeaderRowContainerCtrl.prototype, \"scrollVisibleService\", void 0);\n __decorate$1f([\n Autowired('pinnedWidthService')\n ], HeaderRowContainerCtrl.prototype, \"pinnedWidthService\", void 0);\n __decorate$1f([\n Autowired('columnModel')\n ], HeaderRowContainerCtrl.prototype, \"columnModel\", void 0);\n __decorate$1f([\n Autowired('focusService')\n ], HeaderRowContainerCtrl.prototype, \"focusService\", void 0);\n return HeaderRowContainerCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderRowContainerComp = /** @class */ (function (_super) {\n __extends$1h(HeaderRowContainerComp, _super);\n function HeaderRowContainerComp(pinned) {\n var _this = _super.call(this) || this;\n _this.headerRowComps = {};\n _this.rowCompsList = [];\n _this.pinned = pinned;\n return _this;\n }\n HeaderRowContainerComp.prototype.init = function () {\n var _this = this;\n this.selectAndSetTemplate();\n var compProxy = {\n setDisplayed: function (displayed) { return _this.setDisplayed(displayed); },\n setCtrls: function (ctrls) { return _this.setCtrls(ctrls); },\n // only gets called for center section\n setCenterWidth: function (width) { return _this.eCenterContainer.style.width = width; },\n setViewportScrollLeft: function (left) { return _this.getGui().scrollLeft = left; },\n // only gets called for pinned sections\n setPinnedContainerWidth: function (width) {\n var eGui = _this.getGui();\n eGui.style.width = width;\n eGui.style.maxWidth = width;\n eGui.style.minWidth = width;\n }\n };\n var ctrl = this.createManagedBean(new HeaderRowContainerCtrl(this.pinned));\n ctrl.setComp(compProxy, this.getGui());\n };\n HeaderRowContainerComp.prototype.selectAndSetTemplate = function () {\n var pinnedLeft = this.pinned == 'left';\n var pinnedRight = this.pinned == 'right';\n var template = pinnedLeft ? HeaderRowContainerComp.PINNED_LEFT_TEMPLATE :\n pinnedRight ? HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE : HeaderRowContainerComp.CENTER_TEMPLATE;\n this.setTemplate(template);\n // for left and right, we add rows directly to the root element,\n // but for center container we add elements to the child container.\n this.eRowContainer = this.eCenterContainer ? this.eCenterContainer : this.getGui();\n };\n HeaderRowContainerComp.prototype.destroyRowComps = function () {\n this.setCtrls([]);\n };\n HeaderRowContainerComp.prototype.destroyRowComp = function (rowComp) {\n this.destroyBean(rowComp);\n this.eRowContainer.removeChild(rowComp.getGui());\n };\n HeaderRowContainerComp.prototype.setCtrls = function (ctrls) {\n var _this = this;\n var oldRowComps = this.headerRowComps;\n this.headerRowComps = {};\n this.rowCompsList = [];\n var prevGui;\n var appendEnsuringDomOrder = function (rowComp) {\n var eGui = rowComp.getGui();\n var notAlreadyIn = eGui.parentElement != _this.eRowContainer;\n if (notAlreadyIn) {\n _this.eRowContainer.appendChild(eGui);\n }\n if (prevGui) {\n ensureDomOrder(_this.eRowContainer, eGui, prevGui);\n }\n prevGui = eGui;\n };\n ctrls.forEach(function (ctrl) {\n var ctrlId = ctrl.getInstanceId();\n var existingComp = oldRowComps[ctrlId];\n delete oldRowComps[ctrlId];\n var rowComp = existingComp ? existingComp : _this.createBean(new HeaderRowComp(ctrl));\n _this.headerRowComps[ctrlId] = rowComp;\n _this.rowCompsList.push(rowComp);\n appendEnsuringDomOrder(rowComp);\n });\n getAllValuesInObject(oldRowComps).forEach(function (c) { return _this.destroyRowComp(c); });\n };\n HeaderRowContainerComp.PINNED_LEFT_TEMPLATE = \"<div class=\\\"ag-pinned-left-header\\\" role=\\\"presentation\\\"></div>\";\n HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE = \"<div class=\\\"ag-pinned-right-header\\\" role=\\\"presentation\\\"></div>\";\n HeaderRowContainerComp.CENTER_TEMPLATE = \"<div class=\\\"ag-header-viewport\\\" role=\\\"presentation\\\">\\n <div class=\\\"ag-header-container\\\" ref=\\\"eCenterContainer\\\" role=\\\"rowgroup\\\"></div>\\n </div>\";\n __decorate$1e([\n RefSelector('eCenterContainer')\n ], HeaderRowContainerComp.prototype, \"eCenterContainer\", void 0);\n __decorate$1e([\n PostConstruct\n ], HeaderRowContainerComp.prototype, \"init\", null);\n __decorate$1e([\n PreDestroy\n ], HeaderRowContainerComp.prototype, \"destroyRowComps\", null);\n return HeaderRowContainerComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderNavigationDirection;\n(function (HeaderNavigationDirection) {\n HeaderNavigationDirection[HeaderNavigationDirection[\"UP\"] = 0] = \"UP\";\n HeaderNavigationDirection[HeaderNavigationDirection[\"DOWN\"] = 1] = \"DOWN\";\n HeaderNavigationDirection[HeaderNavigationDirection[\"LEFT\"] = 2] = \"LEFT\";\n HeaderNavigationDirection[HeaderNavigationDirection[\"RIGHT\"] = 3] = \"RIGHT\";\n})(HeaderNavigationDirection || (HeaderNavigationDirection = {}));\nvar HeaderNavigationService = /** @class */ (function (_super) {\n __extends$1g(HeaderNavigationService, _super);\n function HeaderNavigationService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HeaderNavigationService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.gridBodyCon = p.gridBodyCtrl;\n });\n };\n HeaderNavigationService.prototype.getHeaderRowCount = function () {\n var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n return centerHeaderContainer ? centerHeaderContainer.getRowCount() : 0;\n };\n /*\n * This method navigates grid header vertically\n * @return {boolean} true to preventDefault on the event that caused this navigation.\n */\n HeaderNavigationService.prototype.navigateVertically = function (direction, fromHeader, event) {\n if (!fromHeader) {\n fromHeader = this.focusService.getFocusedHeader();\n }\n if (!fromHeader) {\n return false;\n }\n var headerRowIndex = fromHeader.headerRowIndex, column = fromHeader.column;\n var rowLen = this.getHeaderRowCount();\n var isUp = direction === HeaderNavigationDirection.UP;\n var _a = isUp\n ? this.headerPositionUtils.getColumnVisibleParent(column, headerRowIndex)\n : this.headerPositionUtils.getColumnVisibleChild(column, headerRowIndex), nextRow = _a.nextRow, nextFocusColumn = _a.nextFocusColumn;\n var skipColumn = false;\n if (nextRow < 0) {\n nextRow = 0;\n nextFocusColumn = column;\n skipColumn = true;\n }\n if (nextRow >= rowLen) {\n nextRow = -1; // -1 indicates the focus should move to grid rows.\n }\n if (!skipColumn && !nextFocusColumn) {\n return false;\n }\n return this.focusService.focusHeaderPosition({\n headerPosition: { headerRowIndex: nextRow, column: nextFocusColumn },\n allowUserOverride: true,\n event: event\n });\n };\n /*\n * This method navigates grid header horizontally\n * @return {boolean} true to preventDefault on the event that caused this navigation.\n */\n HeaderNavigationService.prototype.navigateHorizontally = function (direction, fromTab, event) {\n if (fromTab === void 0) { fromTab = false; }\n var focusedHeader = this.focusService.getFocusedHeader();\n var isLeft = direction === HeaderNavigationDirection.LEFT;\n var isRtl = this.gridOptionsService.is('enableRtl');\n var nextHeader;\n var normalisedDirection;\n // either navigating to the left or isRtl (cannot be both)\n if (isLeft !== isRtl) {\n normalisedDirection = 'Before';\n nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);\n }\n else {\n normalisedDirection = 'After';\n nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);\n }\n if (nextHeader || !fromTab) {\n return this.focusService.focusHeaderPosition({\n headerPosition: nextHeader,\n direction: normalisedDirection,\n fromTab: fromTab,\n allowUserOverride: true,\n event: event\n });\n }\n return this.focusNextHeaderRow(focusedHeader, normalisedDirection, event);\n };\n HeaderNavigationService.prototype.focusNextHeaderRow = function (focusedHeader, direction, event) {\n var currentIndex = focusedHeader.headerRowIndex;\n var nextPosition = null;\n var nextRowIndex;\n if (direction === 'Before') {\n if (currentIndex > 0) {\n nextRowIndex = currentIndex - 1;\n nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'end');\n }\n }\n else {\n nextRowIndex = currentIndex + 1;\n nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'start');\n }\n return this.focusService.focusHeaderPosition({\n headerPosition: nextPosition,\n direction: direction,\n fromTab: true,\n allowUserOverride: true,\n event: event\n });\n };\n HeaderNavigationService.prototype.scrollToColumn = function (column, direction) {\n if (direction === void 0) { direction = 'After'; }\n if (column.getPinned()) {\n return;\n }\n var columnToScrollTo;\n if (column instanceof ColumnGroup) {\n var columns = column.getDisplayedLeafColumns();\n columnToScrollTo = direction === 'Before' ? last(columns) : columns[0];\n }\n else {\n columnToScrollTo = column;\n }\n this.gridBodyCon.getScrollFeature().ensureColumnVisible(columnToScrollTo);\n };\n __decorate$1d([\n Autowired('focusService')\n ], HeaderNavigationService.prototype, \"focusService\", void 0);\n __decorate$1d([\n Autowired('headerPositionUtils')\n ], HeaderNavigationService.prototype, \"headerPositionUtils\", void 0);\n __decorate$1d([\n Autowired('ctrlsService')\n ], HeaderNavigationService.prototype, \"ctrlsService\", void 0);\n __decorate$1d([\n PostConstruct\n ], HeaderNavigationService.prototype, \"postConstruct\", null);\n HeaderNavigationService = __decorate$1d([\n Bean('headerNavigationService')\n ], HeaderNavigationService);\n return HeaderNavigationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridHeaderCtrl = /** @class */ (function (_super) {\n __extends$1f(GridHeaderCtrl, _super);\n function GridHeaderCtrl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridHeaderCtrl.prototype.setComp = function (comp, eGui, eFocusableElement) {\n this.comp = comp;\n this.eGui = eGui;\n this.createManagedBean(new ManagedFocusFeature(eFocusableElement, {\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusOut: this.onFocusOut.bind(this)\n }));\n // for setting ag-pivot-on / ag-pivot-off CSS classes\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.onPivotModeChanged();\n this.setupHeaderHeight();\n this.ctrlsService.registerGridHeaderCtrl(this);\n };\n GridHeaderCtrl.prototype.setupHeaderHeight = function () {\n var listener = this.setHeaderHeight.bind(this);\n listener();\n this.addManagedPropertyListener('headerHeight', listener);\n this.addManagedPropertyListener('pivotHeaderHeight', listener);\n this.addManagedPropertyListener('groupHeaderHeight', listener);\n this.addManagedPropertyListener('pivotGroupHeaderHeight', listener);\n this.addManagedPropertyListener('floatingFiltersHeight', listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, listener);\n };\n GridHeaderCtrl.prototype.getHeaderHeight = function () {\n return this.headerHeight;\n };\n GridHeaderCtrl.prototype.setHeaderHeight = function () {\n var columnModel = this.columnModel;\n var numberOfFloating = 0;\n var headerRowCount = columnModel.getHeaderRowCount();\n var totalHeaderHeight;\n var hasFloatingFilters = columnModel.hasFloatingFilters();\n if (hasFloatingFilters) {\n headerRowCount++;\n numberOfFloating = 1;\n }\n var groupHeight = this.columnModel.getColumnGroupHeaderRowHeight();\n var headerHeight = this.columnModel.getColumnHeaderRowHeight();\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n totalHeaderHeight = numberOfFloating * columnModel.getFloatingFiltersHeight();\n totalHeaderHeight += numberOfGroups * groupHeight;\n totalHeaderHeight += headerHeight;\n if (this.headerHeight === totalHeaderHeight) {\n return;\n }\n this.headerHeight = totalHeaderHeight;\n // one extra pixel is needed here to account for the\n // height of the border\n var px = totalHeaderHeight + 1 + \"px\";\n this.comp.setHeightAndMinHeight(px);\n this.eventService.dispatchEvent({\n type: Events.EVENT_HEADER_HEIGHT_CHANGED\n });\n };\n GridHeaderCtrl.prototype.onPivotModeChanged = function () {\n var pivotMode = this.columnModel.isPivotMode();\n this.comp.addOrRemoveCssClass('ag-pivot-on', pivotMode);\n this.comp.addOrRemoveCssClass('ag-pivot-off', !pivotMode);\n };\n GridHeaderCtrl.prototype.onDisplayedColumnsChanged = function () {\n var columns = this.columnModel.getAllDisplayedColumns();\n var shouldAllowOverflow = columns.some(function (col) { return col.isSpanHeaderHeight(); });\n this.comp.addOrRemoveCssClass('ag-header-allow-overflow', shouldAllowOverflow);\n };\n GridHeaderCtrl.prototype.onTabKeyDown = function (e) {\n var isRtl = this.gridOptionsService.is('enableRtl');\n var direction = e.shiftKey !== isRtl\n ? HeaderNavigationDirection.LEFT\n : HeaderNavigationDirection.RIGHT;\n if (this.headerNavigationService.navigateHorizontally(direction, true, e) ||\n this.focusService.focusNextGridCoreContainer(e.shiftKey)) {\n e.preventDefault();\n }\n };\n GridHeaderCtrl.prototype.handleKeyDown = function (e) {\n var direction = null;\n switch (e.key) {\n case KeyCode.LEFT:\n direction = HeaderNavigationDirection.LEFT;\n case KeyCode.RIGHT:\n if (!exists(direction)) {\n direction = HeaderNavigationDirection.RIGHT;\n }\n this.headerNavigationService.navigateHorizontally(direction, false, e);\n break;\n case KeyCode.UP:\n direction = HeaderNavigationDirection.UP;\n case KeyCode.DOWN:\n if (!exists(direction)) {\n direction = HeaderNavigationDirection.DOWN;\n }\n if (this.headerNavigationService.navigateVertically(direction, null, e)) {\n e.preventDefault();\n }\n break;\n default:\n return;\n }\n };\n GridHeaderCtrl.prototype.onFocusOut = function (e) {\n var eDocument = this.gridOptionsService.getDocument();\n var relatedTarget = e.relatedTarget;\n if (!relatedTarget && this.eGui.contains(eDocument.activeElement)) {\n return;\n }\n if (!this.eGui.contains(relatedTarget)) {\n this.focusService.clearFocusedHeader();\n }\n };\n __decorate$1c([\n Autowired('headerNavigationService')\n ], GridHeaderCtrl.prototype, \"headerNavigationService\", void 0);\n __decorate$1c([\n Autowired('focusService')\n ], GridHeaderCtrl.prototype, \"focusService\", void 0);\n __decorate$1c([\n Autowired('columnModel')\n ], GridHeaderCtrl.prototype, \"columnModel\", void 0);\n __decorate$1c([\n Autowired('ctrlsService')\n ], GridHeaderCtrl.prototype, \"ctrlsService\", void 0);\n return GridHeaderCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridHeaderComp = /** @class */ (function (_super) {\n __extends$1e(GridHeaderComp, _super);\n function GridHeaderComp() {\n return _super.call(this, GridHeaderComp.TEMPLATE) || this;\n }\n GridHeaderComp.prototype.postConstruct = function () {\n var _this = this;\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setHeightAndMinHeight: function (height) {\n _this.getGui().style.height = height;\n _this.getGui().style.minHeight = height;\n }\n };\n var ctrl = this.createManagedBean(new GridHeaderCtrl());\n ctrl.setComp(compProxy, this.getGui(), this.getFocusableElement());\n var addContainer = function (container) {\n _this.createManagedBean(container);\n _this.appendChild(container);\n };\n addContainer(new HeaderRowContainerComp('left'));\n addContainer(new HeaderRowContainerComp(null));\n addContainer(new HeaderRowContainerComp('right'));\n };\n GridHeaderComp.TEMPLATE = \"<div class=\\\"ag-header\\\" role=\\\"presentation\\\"/>\";\n __decorate$1b([\n PostConstruct\n ], GridHeaderComp.prototype, \"postConstruct\", null);\n return GridHeaderComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HorizontalResizeService = /** @class */ (function (_super) {\n __extends$1d(HorizontalResizeService, _super);\n function HorizontalResizeService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HorizontalResizeService.prototype.addResizeBar = function (params) {\n var _this = this;\n var dragSource = {\n dragStartPixels: params.dragStartPixels || 0,\n eElement: params.eResizeBar,\n onDragStart: this.onDragStart.bind(this, params),\n onDragStop: this.onDragStop.bind(this, params),\n onDragging: this.onDragging.bind(this, params)\n };\n this.dragService.addDragSource(dragSource, true);\n // we pass remove func back to the caller, so call can tell us when they\n // are finished, and then we remove the listener from the drag source\n var finishedWithResizeFunc = function () { return _this.dragService.removeDragSource(dragSource); };\n return finishedWithResizeFunc;\n };\n HorizontalResizeService.prototype.onDragStart = function (params, mouseEvent) {\n this.dragStartX = mouseEvent.clientX;\n this.setResizeIcons();\n var shiftKey = mouseEvent instanceof MouseEvent && mouseEvent.shiftKey === true;\n params.onResizeStart(shiftKey);\n };\n HorizontalResizeService.prototype.setResizeIcons = function () {\n var ctrl = this.ctrlsService.getGridCtrl();\n // change the body cursor, so when drag moves out of the drag bar, the cursor is still 'resize' (or 'move'\n ctrl.setResizeCursor(true);\n // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n ctrl.disableUserSelect(true);\n };\n HorizontalResizeService.prototype.onDragStop = function (params, mouseEvent) {\n params.onResizeEnd(this.resizeAmount);\n this.resetIcons();\n };\n HorizontalResizeService.prototype.resetIcons = function () {\n var ctrl = this.ctrlsService.getGridCtrl();\n ctrl.setResizeCursor(false);\n ctrl.disableUserSelect(false);\n };\n HorizontalResizeService.prototype.onDragging = function (params, mouseEvent) {\n this.resizeAmount = mouseEvent.clientX - this.dragStartX;\n params.onResizing(this.resizeAmount);\n };\n __decorate$1a([\n Autowired('dragService')\n ], HorizontalResizeService.prototype, \"dragService\", void 0);\n __decorate$1a([\n Autowired('ctrlsService')\n ], HorizontalResizeService.prototype, \"ctrlsService\", void 0);\n HorizontalResizeService = __decorate$1a([\n Bean('horizontalResizeService')\n ], HorizontalResizeService);\n return HorizontalResizeService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$19 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StandardMenuFactory = /** @class */ (function (_super) {\n __extends$1c(StandardMenuFactory, _super);\n function StandardMenuFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StandardMenuFactory.prototype.hideActiveMenu = function () {\n if (this.hidePopup) {\n this.hidePopup();\n }\n };\n StandardMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderMouseEvent({\n column: column,\n type: 'columnMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenu\n });\n }, 'columnMenu', mouseEvent.target);\n };\n StandardMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, containerType) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupByComponent({\n type: containerType,\n eventSource: eventSource,\n ePopup: eMenu,\n keepWithinBounds: true,\n position: 'under',\n column: column,\n });\n }, containerType, eventSource);\n };\n StandardMenuFactory.prototype.showPopup = function (column, positionCallback, containerType, eventSource) {\n var _this = this;\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');\n if (!filterWrapper) {\n throw new Error('AG Grid - unable to show popup filter, filter instantiation failed');\n }\n var eMenu = document.createElement('div');\n setAriaRole(eMenu, 'presentation');\n eMenu.classList.add('ag-menu');\n this.tabListener = this.addManagedListener(eMenu, 'keydown', function (e) { return _this.trapFocusWithin(e, eMenu); });\n filterWrapper.guiPromise.then(function (gui) { return eMenu.appendChild(gui); });\n var hidePopup;\n var afterGuiDetached = function () { var _a; return (_a = filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.then(function (filter) { var _a; return (_a = filter === null || filter === void 0 ? void 0 : filter.afterGuiDetached) === null || _a === void 0 ? void 0 : _a.call(filter); }); };\n var anchorToElement = eventSource || this.ctrlsService.getGridBodyCtrl().getGui();\n var closedCallback = function (e) {\n column.setMenuVisible(false, 'contextMenu');\n var isKeyboardEvent = e instanceof KeyboardEvent;\n if (_this.tabListener) {\n _this.tabListener = _this.tabListener();\n }\n if (isKeyboardEvent && eventSource && isVisible(eventSource)) {\n var focusableEl = _this.focusService.findTabbableParent(eventSource);\n if (focusableEl) {\n focusableEl.focus();\n }\n }\n afterGuiDetached();\n };\n var translate = this.localeService.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eMenu,\n closeOnEsc: true,\n closedCallback: closedCallback,\n positionCallback: function () { return positionCallback(eMenu); },\n anchorToElement: anchorToElement,\n ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')\n });\n if (addPopupRes) {\n this.hidePopup = hidePopup = addPopupRes.hideFunc;\n }\n filterWrapper.filterPromise.then(function (filter) {\n // need to make sure the filter is present before positioning, as only\n // after filter it is visible can we find out what the width of it is\n positionCallback(eMenu);\n if (filter.afterGuiAttached) {\n filter.afterGuiAttached({ container: containerType, hidePopup: hidePopup });\n }\n });\n column.setMenuVisible(true, 'contextMenu');\n };\n StandardMenuFactory.prototype.trapFocusWithin = function (e, menu) {\n if (e.key !== KeyCode.TAB ||\n e.defaultPrevented ||\n this.focusService.findNextFocusableElement(menu, false, e.shiftKey)) {\n return;\n }\n e.preventDefault();\n this.focusService.focusInto(menu, e.shiftKey);\n };\n StandardMenuFactory.prototype.isMenuEnabled = function (column) {\n // for standard, we show menu if filter is enabled, and the menu is not suppressed by passing an empty array\n return column.isFilterAllowed() && column.getMenuTabs(['filterMenuTab']).includes('filterMenuTab');\n };\n __decorate$19([\n Autowired('filterManager')\n ], StandardMenuFactory.prototype, \"filterManager\", void 0);\n __decorate$19([\n Autowired('popupService')\n ], StandardMenuFactory.prototype, \"popupService\", void 0);\n __decorate$19([\n Autowired('focusService')\n ], StandardMenuFactory.prototype, \"focusService\", void 0);\n __decorate$19([\n Autowired('ctrlsService')\n ], StandardMenuFactory.prototype, \"ctrlsService\", void 0);\n StandardMenuFactory = __decorate$19([\n Bean('menuFactory')\n ], StandardMenuFactory);\n return StandardMenuFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$18 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TabbedLayout = /** @class */ (function (_super) {\n __extends$1b(TabbedLayout, _super);\n function TabbedLayout(params) {\n var _this = _super.call(this, TabbedLayout.getTemplate(params.cssClass)) || this;\n _this.items = [];\n _this.tabbedItemScrollMap = new Map();\n _this.params = params;\n if (params.items) {\n params.items.forEach(function (item) { return _this.addItem(item); });\n }\n return _this;\n }\n TabbedLayout.prototype.postConstruct = function () {\n var _this = this;\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n this.addDestroyFunc(function () { var _a, _b, _c; return (_c = (_b = (_a = _this.activeItem) === null || _a === void 0 ? void 0 : _a.tabbedItem) === null || _b === void 0 ? void 0 : _b.afterDetachedCallback) === null || _c === void 0 ? void 0 : _c.call(_b); });\n };\n TabbedLayout.getTemplate = function (cssClass) {\n return /* html */ \"<div class=\\\"ag-tabs \" + cssClass + \"\\\">\\n <div ref=\\\"eHeader\\\" role=\\\"tablist\\\" class=\\\"ag-tabs-header \" + (cssClass ? cssClass + \"-header\" : '') + \"\\\"></div>\\n <div ref=\\\"eBody\\\" role=\\\"presentation\\\" class=\\\"ag-tabs-body \" + (cssClass ? cssClass + \"-body\" : '') + \"\\\"></div>\\n </div>\";\n };\n TabbedLayout.prototype.handleKeyDown = function (e) {\n var eDocument = this.gridOptionsService.getDocument();\n switch (e.key) {\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n if (!this.eHeader.contains(eDocument.activeElement)) {\n return;\n }\n var isRightKey = e.key === KeyCode.RIGHT;\n var isRtl = this.gridOptionsService.is('enableRtl');\n var currentPosition = this.items.indexOf(this.activeItem);\n var nextPosition = isRightKey !== isRtl ? Math.min(currentPosition + 1, this.items.length - 1) : Math.max(currentPosition - 1, 0);\n if (currentPosition === nextPosition) {\n return;\n }\n e.preventDefault();\n var nextItem = this.items[nextPosition];\n this.showItemWrapper(nextItem);\n nextItem.eHeaderButton.focus();\n break;\n case KeyCode.UP:\n case KeyCode.DOWN:\n e.stopPropagation();\n break;\n }\n };\n TabbedLayout.prototype.onTabKeyDown = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n var _a = this, focusService = _a.focusService, eHeader = _a.eHeader, eBody = _a.eBody, activeItem = _a.activeItem;\n var eDocument = this.gridOptionsService.getDocument();\n var activeElement = eDocument.activeElement;\n var target = e.target;\n e.preventDefault();\n if (eHeader.contains(activeElement)) {\n // focus is in header, move into body of popup\n focusService.focusInto(eBody, e.shiftKey);\n return;\n }\n var nextEl = null;\n if (focusService.isTargetUnderManagedComponent(eBody, target)) {\n if (e.shiftKey) {\n nextEl = this.focusService.findFocusableElementBeforeTabGuard(eBody, target);\n }\n if (!nextEl) {\n nextEl = activeItem.eHeaderButton;\n }\n }\n if (!nextEl && eBody.contains(activeElement)) {\n nextEl = focusService.findNextFocusableElement(eBody, false, e.shiftKey);\n if (!nextEl) {\n nextEl = activeItem.eHeaderButton;\n }\n }\n if (nextEl) {\n nextEl.focus();\n }\n };\n TabbedLayout.prototype.setAfterAttachedParams = function (params) {\n this.afterAttachedParams = params;\n };\n TabbedLayout.prototype.showFirstItem = function () {\n if (this.items.length > 0) {\n this.showItemWrapper(this.items[0]);\n }\n };\n TabbedLayout.prototype.addItem = function (item) {\n var eHeaderButton = document.createElement('span');\n setAriaRole(eHeaderButton, 'tab');\n eHeaderButton.setAttribute('tabIndex', '-1');\n eHeaderButton.appendChild(item.title);\n eHeaderButton.classList.add('ag-tab');\n this.eHeader.appendChild(eHeaderButton);\n setAriaLabel(eHeaderButton, item.titleLabel);\n var wrapper = {\n tabbedItem: item,\n eHeaderButton: eHeaderButton\n };\n this.items.push(wrapper);\n eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));\n };\n TabbedLayout.prototype.showItem = function (tabbedItem) {\n var itemWrapper = this.items.find(function (wrapper) { return wrapper.tabbedItem === tabbedItem; });\n if (itemWrapper) {\n this.showItemWrapper(itemWrapper);\n }\n };\n TabbedLayout.prototype.showItemWrapper = function (wrapper) {\n var _this = this;\n var _a, _b;\n var tabbedItem = wrapper.tabbedItem, eHeaderButton = wrapper.eHeaderButton;\n if (this.params.onItemClicked) {\n this.params.onItemClicked({ item: tabbedItem });\n }\n if (this.activeItem === wrapper) {\n callIfPresent(this.params.onActiveItemClicked);\n return;\n }\n if (this.lastScrollListener) {\n this.lastScrollListener = this.lastScrollListener();\n }\n clearElement(this.eBody);\n tabbedItem.bodyPromise.then(function (body) {\n _this.eBody.appendChild(body);\n var onlyUnmanaged = !_this.focusService.isKeyboardMode();\n _this.focusService.focusInto(_this.eBody, false, onlyUnmanaged);\n if (tabbedItem.afterAttachedCallback) {\n tabbedItem.afterAttachedCallback(_this.afterAttachedParams);\n }\n if (_this.params.keepScrollPosition) {\n var scrollableContainer_1 = (tabbedItem.getScrollableContainer && tabbedItem.getScrollableContainer()) || body;\n _this.lastScrollListener = _this.addManagedListener(scrollableContainer_1, 'scroll', function () {\n _this.tabbedItemScrollMap.set(tabbedItem.name, scrollableContainer_1.scrollTop);\n });\n var scrollPosition_1 = _this.tabbedItemScrollMap.get(tabbedItem.name);\n if (scrollPosition_1 !== undefined) {\n // Safari needs a small timeout or it will fire a scroll event to position 0\n setTimeout(function () {\n scrollableContainer_1.scrollTop = scrollPosition_1;\n }, 0);\n }\n }\n });\n if (this.activeItem) {\n this.activeItem.eHeaderButton.classList.remove('ag-tab-selected');\n (_b = (_a = this.activeItem.tabbedItem).afterDetachedCallback) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n eHeaderButton.classList.add('ag-tab-selected');\n this.activeItem = wrapper;\n };\n __decorate$18([\n Autowired('focusService')\n ], TabbedLayout.prototype, \"focusService\", void 0);\n __decorate$18([\n RefSelector('eHeader')\n ], TabbedLayout.prototype, \"eHeader\", void 0);\n __decorate$18([\n RefSelector('eBody')\n ], TabbedLayout.prototype, \"eBody\", void 0);\n __decorate$18([\n PostConstruct\n ], TabbedLayout.prototype, \"postConstruct\", null);\n return TabbedLayout;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * @deprecated Since v29 simpleHttpRequest has been deprecated as it was only meant for use in internal AG Grid documentation examples. Please use the browser fetch api directly.\n */\nfunction simpleHttpRequest(params) {\n doOnce(function () { return console.warn(\"AG Grid: Since v29 simpleHttpRequest has been deprecated as it was only meant for use in internal AG Grid documentation examples. Please use the browser fetch api directly.\"); }, 'simpleHttpRequest');\n return new AgPromise(function (resolve) {\n var httpRequest = new XMLHttpRequest();\n httpRequest.open('GET', params.url);\n httpRequest.send();\n httpRequest.onreadystatechange = function () {\n if (httpRequest.readyState === 4 && httpRequest.status === 200) {\n resolve(JSON.parse(httpRequest.responseText));\n }\n };\n });\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$17 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DEBOUNCE_DELAY = 50;\nvar ResizeObserverService = /** @class */ (function (_super) {\n __extends$1a(ResizeObserverService, _super);\n function ResizeObserverService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.polyfillFunctions = [];\n return _this;\n }\n ResizeObserverService.prototype.observeResize = function (element, callback) {\n var _this = this;\n var eDocument = this.gridOptionsService.getDocument();\n var win = (eDocument.defaultView || window);\n var useBrowserResizeObserver = function () {\n var resizeObserver = new win.ResizeObserver(callback);\n resizeObserver.observe(element);\n return function () { return resizeObserver.disconnect(); };\n };\n var usePolyfill = function () {\n // initialise to the current width and height, so first call will have no changes\n var widthLastTime = offsetWidth(element);\n var heightLastTime = offsetHeight(element);\n // when finished, this gets turned to false.\n var running = true;\n var periodicallyCheckWidthAndHeight = function () {\n if (running) {\n var newWidth = offsetWidth(element);\n var newHeight = offsetHeight(element);\n var changed = newWidth !== widthLastTime || newHeight !== heightLastTime;\n if (changed) {\n widthLastTime = newWidth;\n heightLastTime = newHeight;\n callback();\n }\n _this.doNextPolyfillTurn(periodicallyCheckWidthAndHeight);\n }\n };\n periodicallyCheckWidthAndHeight();\n // the callback function we return sets running to false\n return function () { return running = false; };\n };\n var suppressResize = this.gridOptionsService.is('suppressBrowserResizeObserver');\n var resizeObserverExists = !!win.ResizeObserver;\n if (resizeObserverExists && !suppressResize) {\n return useBrowserResizeObserver();\n }\n return usePolyfill();\n };\n ResizeObserverService.prototype.doNextPolyfillTurn = function (func) {\n this.polyfillFunctions.push(func);\n this.schedulePolyfill();\n };\n ResizeObserverService.prototype.schedulePolyfill = function () {\n var _this = this;\n if (this.polyfillScheduled) {\n return;\n }\n var executeAllFuncs = function () {\n var funcs = _this.polyfillFunctions;\n // make sure set scheduled to false and clear clear array\n // before executing the funcs, as the funcs could add more funcs\n _this.polyfillScheduled = false;\n _this.polyfillFunctions = [];\n funcs.forEach(function (f) { return f(); });\n };\n this.polyfillScheduled = true;\n this.getFrameworkOverrides().setTimeout(executeAllFuncs, DEBOUNCE_DELAY);\n };\n ResizeObserverService = __decorate$17([\n Bean('resizeObserverService')\n ], ResizeObserverService);\n return ResizeObserverService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$19 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$16 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AnimationFrameService = /** @class */ (function (_super) {\n __extends$19(AnimationFrameService, _super);\n function AnimationFrameService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // p1 and p2 are create tasks are to do with row and cell creation.\n // for them we want to execute according to row order, so we use\n // TaskItem so we know what index the item is for.\n _this.createTasksP1 = { list: [], sorted: false }; // eg drawing back-ground of rows\n _this.createTasksP2 = { list: [], sorted: false }; // eg cell renderers, adding hover functionality\n // destroy tasks are to do with row removal. they are done after row creation as the user will need to see new\n // rows first (as blank is scrolled into view), when we remove the old rows (no longer in view) is not as\n // important.\n _this.destroyTasks = [];\n _this.ticking = false;\n // we need to know direction of scroll, to build up rows in the direction of\n // the scroll. eg if user scrolls down, we extend the rows by building down.\n _this.scrollGoingDown = true;\n _this.lastPage = 0;\n _this.lastScrollTop = 0;\n _this.taskCount = 0;\n _this.cancelledTasks = new Set();\n return _this;\n }\n AnimationFrameService.prototype.setScrollTop = function (scrollTop) {\n var isPaginationActive = this.gridOptionsService.is('pagination');\n this.scrollGoingDown = scrollTop >= this.lastScrollTop;\n if (isPaginationActive && scrollTop === 0) {\n var currentPage = this.paginationProxy.getCurrentPage();\n if (currentPage !== this.lastPage) {\n this.lastPage = currentPage;\n this.scrollGoingDown = true;\n }\n }\n this.lastScrollTop = scrollTop;\n };\n AnimationFrameService.prototype.init = function () {\n this.useAnimationFrame = !this.gridOptionsService.is('suppressAnimationFrame');\n };\n AnimationFrameService.prototype.isOn = function () {\n return this.useAnimationFrame;\n };\n // this method is for our AG Grid sanity only - if animation frames are turned off,\n // then no place in the code should be looking to add any work to be done in animation\n // frames. this stops bugs - where some code is asking for a frame to be executed\n // when it should not.\n AnimationFrameService.prototype.verifyAnimationFrameOn = function (methodName) {\n if (this.useAnimationFrame === false) {\n console.warn(\"AG Grid: AnimationFrameService.\" + methodName + \" called but animation frames are off\");\n }\n };\n AnimationFrameService.prototype.createTask = function (task, index, list) {\n this.verifyAnimationFrameOn(list);\n var taskItem = { task: task, index: index, createOrder: ++this.taskCount };\n this.addTaskToList(this[list], taskItem);\n this.schedule();\n };\n AnimationFrameService.prototype.cancelTask = function (task) {\n this.cancelledTasks.add(task);\n };\n AnimationFrameService.prototype.addTaskToList = function (taskList, task) {\n taskList.list.push(task);\n taskList.sorted = false;\n };\n AnimationFrameService.prototype.sortTaskList = function (taskList) {\n if (taskList.sorted) {\n return;\n }\n var sortDirection = this.scrollGoingDown ? 1 : -1;\n // sort first by row index (taking into account scroll direction), then by\n // order of task creation (always ascending, so cells will render left-to-right)\n taskList.list.sort(function (a, b) { return a.index !== b.index ? sortDirection * (b.index - a.index) : b.createOrder - a.createOrder; });\n taskList.sorted = true;\n };\n AnimationFrameService.prototype.addDestroyTask = function (task) {\n this.verifyAnimationFrameOn('createTasksP3');\n this.destroyTasks.push(task);\n this.schedule();\n };\n AnimationFrameService.prototype.executeFrame = function (millis) {\n this.verifyAnimationFrameOn('executeFrame');\n var p1TaskList = this.createTasksP1;\n var p1Tasks = p1TaskList.list;\n var p2TaskList = this.createTasksP2;\n var p2Tasks = p2TaskList.list;\n var destroyTasks = this.destroyTasks;\n var frameStart = new Date().getTime();\n var duration = (new Date().getTime()) - frameStart;\n // 16ms is 60 fps\n var noMaxMillis = millis <= 0;\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n while (noMaxMillis || duration < millis) {\n var gridBodyDidSomething = gridBodyCon.getScrollFeature().scrollGridIfNeeded();\n if (!gridBodyDidSomething) {\n var task = void 0;\n if (p1Tasks.length) {\n this.sortTaskList(p1TaskList);\n task = p1Tasks.pop().task;\n }\n else if (p2Tasks.length) {\n this.sortTaskList(p2TaskList);\n task = p2Tasks.pop().task;\n }\n else if (destroyTasks.length) {\n task = destroyTasks.pop();\n }\n else {\n this.cancelledTasks.clear();\n break;\n }\n if (!this.cancelledTasks.has(task)) {\n task();\n }\n }\n duration = (new Date().getTime()) - frameStart;\n }\n if (p1Tasks.length || p2Tasks.length || destroyTasks.length) {\n this.requestFrame();\n }\n else {\n this.stopTicking();\n }\n };\n AnimationFrameService.prototype.stopTicking = function () {\n this.ticking = false;\n };\n AnimationFrameService.prototype.flushAllFrames = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n this.executeFrame(-1);\n };\n AnimationFrameService.prototype.schedule = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n if (!this.ticking) {\n this.ticking = true;\n this.requestFrame();\n }\n };\n AnimationFrameService.prototype.requestFrame = function () {\n // check for the existence of requestAnimationFrame, and if\n // it's missing, then we polyfill it with setTimeout()\n var callback = this.executeFrame.bind(this, 60);\n var eDocument = this.gridOptionsService.getDocument();\n var win = (eDocument.defaultView || window);\n if (win.requestAnimationFrame) {\n win.requestAnimationFrame(callback);\n }\n else if (win.webkitRequestAnimationFrame) {\n win.webkitRequestAnimationFrame(callback);\n }\n else {\n win.setTimeout(callback, 0);\n }\n };\n AnimationFrameService.prototype.isQueueEmpty = function () {\n return !this.ticking;\n };\n // a debounce utility used for parts of the app involved with rendering.\n // the advantage over normal debounce is the client can call flushAllFrames()\n // to make sure all rendering is complete. we don't wait any milliseconds,\n // as this is intended to batch calls in one VM turn.\n AnimationFrameService.prototype.debounce = function (func) {\n var _this = this;\n var pending = false;\n return function () {\n if (!_this.isOn()) {\n _this.getFrameworkOverrides().setTimeout(func, 0);\n return;\n }\n if (pending) {\n return;\n }\n pending = true;\n _this.addDestroyTask(function () {\n pending = false;\n func();\n });\n };\n };\n __decorate$16([\n Autowired('ctrlsService')\n ], AnimationFrameService.prototype, \"ctrlsService\", void 0);\n __decorate$16([\n Autowired('paginationProxy')\n ], AnimationFrameService.prototype, \"paginationProxy\", void 0);\n __decorate$16([\n PostConstruct\n ], AnimationFrameService.prototype, \"init\", null);\n AnimationFrameService = __decorate$16([\n Bean('animationFrameService')\n ], AnimationFrameService);\n return AnimationFrameService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$18 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$15 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AutoWidthCalculator = /** @class */ (function (_super) {\n __extends$18(AutoWidthCalculator, _super);\n function AutoWidthCalculator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AutoWidthCalculator.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.centerRowContainerCtrl = p.centerRowContainerCtrl;\n });\n };\n // this is the trick: we create a dummy container and clone all the cells\n // into the dummy, then check the dummy's width. then destroy the dummy\n // as we don't need it any more.\n // drawback: only the cells visible on the screen are considered\n AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column, skipHeader) {\n var eHeaderCell = this.getHeaderCellForColumn(column);\n // cell isn't visible\n if (!eHeaderCell) {\n return -1;\n }\n var elements = this.rowRenderer.getAllCellsForColumn(column);\n if (!skipHeader) {\n // we only consider the lowest level cell, not the group cell. in 99% of the time, this\n // will be enough. if we consider groups, then it gets too complicated for what it's worth,\n // as the groups can span columns and this class only considers one column at a time.\n elements.push(eHeaderCell);\n }\n return this.addElementsToContainerAndGetWidth(elements);\n };\n AutoWidthCalculator.prototype.getPreferredWidthForColumnGroup = function (columnGroup) {\n var eHeaderCell = this.getHeaderCellForColumn(columnGroup);\n if (!eHeaderCell) {\n return -1;\n }\n return this.addElementsToContainerAndGetWidth([eHeaderCell]);\n };\n AutoWidthCalculator.prototype.addElementsToContainerAndGetWidth = function (elements) {\n var _this = this;\n // this element has to be a form, otherwise form elements within a cell\n // will be validated while being cloned. This can cause issues such as \n // radio buttons being reset and losing their values.\n var eDummyContainer = document.createElement('form');\n // position fixed, so it isn't restricted to the boundaries of the parent\n eDummyContainer.style.position = 'fixed';\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.centerRowContainerCtrl.getContainerElement();\n eBodyContainer.appendChild(eDummyContainer);\n elements.forEach(function (el) { return _this.cloneItemIntoDummy(el, eDummyContainer); });\n // at this point, all the clones are lined up vertically with natural widths. the dummy\n // container will have a width wide enough just to fit the largest.\n var dummyContainerWidth = eDummyContainer.offsetWidth;\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(eDummyContainer);\n // we add padding as I found sometimes the gui still put '...' after some of the texts. so the\n // user can configure the grid to add a few more pixels after the calculated width\n var autoSizePadding = this.getAutoSizePadding();\n return dummyContainerWidth + autoSizePadding;\n };\n AutoWidthCalculator.prototype.getAutoSizePadding = function () {\n var value = this.gridOptionsService.getNum('autoSizePadding');\n return value != null && value >= 0 ? value : 20;\n };\n AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {\n /* tslint:enable */\n var element = null;\n this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (container) {\n var res = container.getHtmlElementForColumnHeader(column);\n if (res != null) {\n element = res;\n }\n });\n return element;\n };\n AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {\n // make a deep clone of the cell\n var eCellClone = eCell.cloneNode(true);\n // the original has a fixed width, we remove this to allow the natural width based on content\n eCellClone.style.width = '';\n // the original has position = absolute, we need to remove this so it's positioned normally\n eCellClone.style.position = 'static';\n eCellClone.style.left = '';\n // we put the cell into a containing div, as otherwise the cells would just line up\n // on the same line, standard flow layout, by putting them into divs, they are laid\n // out one per line\n var eCloneParent = document.createElement('div');\n var eCloneParentClassList = eCloneParent.classList;\n var isHeader = ['ag-header-cell', 'ag-header-group-cell'].some(function (cls) { return eCellClone.classList.contains(cls); });\n if (isHeader) {\n eCloneParentClassList.add('ag-header', 'ag-header-row');\n eCloneParent.style.position = 'static';\n }\n else {\n eCloneParentClassList.add('ag-row');\n }\n // find parent using classes (headers have ag-header-cell, rows have ag-row), and copy classes from it.\n // if we didn't do this, things like ag-row-level-2 would be missing if present, which sets indents\n // onto group items.\n var pointer = eCell.parentElement;\n while (pointer) {\n var isRow = ['ag-header-row', 'ag-row'].some(function (cls) { return pointer.classList.contains(cls); });\n if (isRow) {\n for (var i = 0; i < pointer.classList.length; i++) {\n var item = pointer.classList[i];\n // we skip ag-row-position-absolute, as this has structural CSS applied that stops the\n // element from fitting into it's parent, and we need the element to stretch the parent\n // as we are measuring the parents width\n if (item != 'ag-row-position-absolute') {\n eCloneParentClassList.add(item);\n }\n }\n break;\n }\n pointer = pointer.parentElement;\n }\n // the twig on the branch, the branch on the tree, the tree in the hole,\n // the hole in the bog, the bog in the clone, the clone in the parent,\n // the parent in the dummy, and the dummy down in the vall-e-ooo, OOOOOOOOO! Oh row the rattling bog....\n eCloneParent.appendChild(eCellClone);\n eDummyContainer.appendChild(eCloneParent);\n };\n __decorate$15([\n Autowired('rowRenderer')\n ], AutoWidthCalculator.prototype, \"rowRenderer\", void 0);\n __decorate$15([\n Autowired('ctrlsService')\n ], AutoWidthCalculator.prototype, \"ctrlsService\", void 0);\n __decorate$15([\n Autowired('rowCssClassCalculator')\n ], AutoWidthCalculator.prototype, \"rowCssClassCalculator\", void 0);\n __decorate$15([\n PostConstruct\n ], AutoWidthCalculator.prototype, \"postConstruct\", null);\n AutoWidthCalculator = __decorate$15([\n Bean('autoWidthCalculator')\n ], AutoWidthCalculator);\n return AutoWidthCalculator;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$17 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$14 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$2 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$e = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$c = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$e(arguments[i]));\n return ar;\n};\nvar StickyRowFeature = /** @class */ (function (_super) {\n __extends$17(StickyRowFeature, _super);\n function StickyRowFeature(createRowCon, destroyRowCtrls) {\n var _this = _super.call(this) || this;\n _this.createRowCon = createRowCon;\n _this.destroyRowCtrls = destroyRowCtrls;\n _this.stickyRowCtrls = [];\n _this.containerHeight = 0;\n return _this;\n }\n StickyRowFeature.prototype.postConstruct = function () {\n var _this = this;\n this.isClientSide = this.rowModel.getType() === 'clientSide';\n this.ctrlsService.whenReady(function (params) {\n _this.gridBodyCtrl = params.gridBodyCtrl;\n });\n };\n StickyRowFeature.prototype.getStickyRowCtrls = function () {\n return this.stickyRowCtrls;\n };\n StickyRowFeature.prototype.checkStickyRows = function () {\n var _this = this;\n var height = 0;\n if (!this.gridOptionsService.is('groupRowsSticky')) {\n this.refreshNodesAndContainerHeight([], height);\n return;\n }\n var stickyRows = [];\n var firstPixel = this.rowRenderer.getFirstVisibleVerticalPixel();\n var addStickyRow = function (stickyRow) {\n var _a, _b, _c;\n stickyRows.push(stickyRow);\n var lastChildBottom;\n if (_this.isClientSide) {\n var lastAncestor = stickyRow;\n while (lastAncestor.expanded) {\n if (lastAncestor.master) {\n lastAncestor = lastAncestor.detailNode;\n }\n else if (lastAncestor.childrenAfterSort) {\n // Tree Data will have `childrenAfterSort` without any nodes, but\n // the current node will still be marked as expansible.\n if (lastAncestor.childrenAfterSort.length === 0) {\n break;\n }\n lastAncestor = last(lastAncestor.childrenAfterSort);\n }\n }\n lastChildBottom = lastAncestor.rowTop + lastAncestor.rowHeight;\n }\n // if the rowModel is `serverSide` as only `clientSide` and `serverSide` create this feature.\n else {\n var storeBounds = (_a = stickyRow.childStore) === null || _a === void 0 ? void 0 : _a.getStoreBounds();\n lastChildBottom = ((_b = storeBounds === null || storeBounds === void 0 ? void 0 : storeBounds.heightPx) !== null && _b !== void 0 ? _b : 0) + ((_c = storeBounds === null || storeBounds === void 0 ? void 0 : storeBounds.topPx) !== null && _c !== void 0 ? _c : 0);\n }\n var stickRowBottom = firstPixel + height + stickyRow.rowHeight;\n if (lastChildBottom < stickRowBottom) {\n stickyRow.stickyRowTop = height + (lastChildBottom - stickRowBottom);\n }\n else {\n stickyRow.stickyRowTop = height;\n }\n height = 0;\n stickyRows.forEach(function (rowNode) {\n var thisRowLastPx = rowNode.stickyRowTop + rowNode.rowHeight;\n if (height < thisRowLastPx) {\n height = thisRowLastPx;\n }\n });\n };\n while (true) {\n var firstPixelAfterStickyRows = firstPixel + height;\n var firstIndex = this.rowModel.getRowIndexAtPixel(firstPixelAfterStickyRows);\n var firstRow = this.rowModel.getRow(firstIndex);\n if (firstRow == null) {\n break;\n }\n // only happens when pivoting, and we are showing root node\n if (firstRow.level < 0) {\n break;\n }\n var parents = [];\n var p = firstRow.parent;\n while (p.level >= 0) {\n parents.push(p);\n p = p.parent;\n }\n var firstMissingParent = parents.reverse().find(function (parent) { return stickyRows.indexOf(parent) < 0 && parent.displayed; });\n if (firstMissingParent) {\n addStickyRow(firstMissingParent);\n continue;\n }\n // if first row is an open group, and practically shown, it needs\n // to be stuck\n if (firstRow.isExpandable() && firstRow.expanded && firstRow.rowTop < firstPixelAfterStickyRows) {\n addStickyRow(firstRow);\n continue;\n }\n break;\n }\n this.refreshNodesAndContainerHeight(stickyRows, height);\n };\n StickyRowFeature.prototype.refreshStickyNode = function (stickRowNode) {\n var allStickyNodes = [];\n for (var i = 0; i < this.stickyRowCtrls.length; i++) {\n var currentNode = this.stickyRowCtrls[i].getRowNode();\n if (currentNode !== stickRowNode) {\n allStickyNodes.push(currentNode);\n }\n }\n this.refreshNodesAndContainerHeight(allStickyNodes, this.containerHeight);\n this.checkStickyRows();\n };\n StickyRowFeature.prototype.refreshNodesAndContainerHeight = function (allStickyNodes, height) {\n var e_1, _a, _b;\n var _this = this;\n var removedCtrls = this.stickyRowCtrls.filter(function (ctrl) { return allStickyNodes.indexOf(ctrl.getRowNode()) === -1; });\n var addedNodes = allStickyNodes.filter(function (rowNode) { return _this.stickyRowCtrls.findIndex(function (ctrl) { return ctrl.getRowNode() === rowNode; }) === -1; });\n var ctrlsToDestroy = {};\n removedCtrls.forEach(function (removedCtrl) {\n ctrlsToDestroy[removedCtrl.getRowNode().id] = removedCtrl;\n _this.stickyRowCtrls = _this.stickyRowCtrls.filter(function (ctrl) { return ctrl !== removedCtrl; });\n });\n try {\n for (var _c = __values$2(Object.values(ctrlsToDestroy)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var ctrl = _d.value;\n ctrl.getRowNode().sticky = false;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.destroyRowCtrls(ctrlsToDestroy, false);\n var newCtrls = addedNodes.map(function (rowNode) {\n rowNode.sticky = true;\n return _this.createRowCon(rowNode, false, false);\n });\n (_b = this.stickyRowCtrls).push.apply(_b, __spread$c(newCtrls));\n this.stickyRowCtrls.forEach(function (ctrl) { return ctrl.setRowTop(ctrl.getRowNode().stickyRowTop); });\n this.stickyRowCtrls.sort(function (a, b) { return b.getRowNode().rowIndex - a.getRowNode().rowIndex; });\n if (this.containerHeight !== height) {\n this.containerHeight = height;\n this.gridBodyCtrl.setStickyTopHeight(height);\n }\n };\n __decorate$14([\n Autowired(\"rowModel\")\n ], StickyRowFeature.prototype, \"rowModel\", void 0);\n __decorate$14([\n Autowired(\"rowRenderer\")\n ], StickyRowFeature.prototype, \"rowRenderer\", void 0);\n __decorate$14([\n Autowired(\"ctrlsService\")\n ], StickyRowFeature.prototype, \"ctrlsService\", void 0);\n __decorate$14([\n PostConstruct\n ], StickyRowFeature.prototype, \"postConstruct\", null);\n return StickyRowFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$16 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$13 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$d = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$b = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$d(arguments[i]));\n return ar;\n};\nvar __values$1 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar DEFAULT_KEEP_DETAIL_ROW_COUNT = 10;\nvar RowRenderer = /** @class */ (function (_super) {\n __extends$16(RowRenderer, _super);\n function RowRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.destroyFuncsForColumnListeners = [];\n // map of row ids to row objects. keeps track of which elements\n // are rendered for which rows in the dom.\n _this.rowCtrlsByRowIndex = {};\n _this.zombieRowCtrls = {};\n _this.allRowCtrls = [];\n _this.topRowCtrls = [];\n _this.bottomRowCtrls = [];\n // we only allow one refresh at a time, otherwise the internal memory structure here\n // will get messed up. this can happen if the user has a cellRenderer, and inside the\n // renderer they call an API method that results in another pass of the refresh,\n // then it will be trying to draw rows in the middle of a refresh.\n _this.refreshInProgress = false;\n _this.dataFirstRenderedFired = false;\n return _this;\n }\n RowRenderer.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n _this.initialise();\n });\n };\n RowRenderer.prototype.initialise = function () {\n this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, this.onBodyScroll.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));\n this.addManagedPropertyListener('domLayout', this.onDomLayoutChanged.bind(this));\n this.addManagedPropertyListener('rowClass', this.redrawRows.bind(this));\n if (this.gridOptionsService.is('groupRowsSticky')) {\n var rowModelType = this.rowModel.getType();\n if (rowModelType != 'clientSide' && rowModelType != 'serverSide') {\n doOnce(function () { return console.warn('AG Grid: The feature Sticky Row Groups only works with the Client Side or Server Side Row Model'); }, 'rowRenderer.stickyWorksWithCsrmOnly');\n }\n else {\n this.stickyRowFeature = this.createManagedBean(new StickyRowFeature(this.createRowCon.bind(this), this.destroyRowCtrls.bind(this)));\n }\n }\n this.registerCellEventListeners();\n this.initialiseCache();\n this.printLayout = this.gridOptionsService.isDomLayout('print');\n this.embedFullWidthRows = this.printLayout || this.gridOptionsService.is('embedFullWidthRows');\n this.redrawAfterModelUpdate();\n };\n RowRenderer.prototype.initialiseCache = function () {\n if (this.gridOptionsService.is('keepDetailRows')) {\n var countProp = this.getKeepDetailRowsCount();\n var count = countProp != null ? countProp : 3;\n this.cachedRowCtrls = new RowCtrlCache(count);\n }\n };\n RowRenderer.prototype.getKeepDetailRowsCount = function () {\n var keepDetailRowsCount = this.gridOptionsService.getNum('keepDetailRowsCount');\n if (exists(keepDetailRowsCount) && keepDetailRowsCount > 0) {\n return keepDetailRowsCount;\n }\n return DEFAULT_KEEP_DETAIL_ROW_COUNT;\n };\n RowRenderer.prototype.getRowCtrls = function () {\n return this.allRowCtrls;\n };\n RowRenderer.prototype.getStickyTopRowCtrls = function () {\n if (!this.stickyRowFeature) {\n return [];\n }\n return this.stickyRowFeature.getStickyRowCtrls();\n };\n RowRenderer.prototype.updateAllRowCtrls = function () {\n var liveList = getAllValuesInObject(this.rowCtrlsByRowIndex);\n var isEnsureDomOrder = this.gridOptionsService.is('ensureDomOrder');\n var isPrintLayout = this.gridOptionsService.isDomLayout('print');\n if (isEnsureDomOrder || isPrintLayout) {\n liveList.sort(function (a, b) { return a.getRowNode().rowIndex - b.getRowNode.rowIndex; });\n }\n var zombieList = getAllValuesInObject(this.zombieRowCtrls);\n var cachedList = this.cachedRowCtrls ? this.cachedRowCtrls.getEntries() : [];\n this.allRowCtrls = __spread$b(liveList, zombieList, cachedList);\n };\n RowRenderer.prototype.onCellFocusChanged = function (event) {\n this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellFocused(event); });\n this.getFullWidthRowCtrls().forEach(function (rowCtrl) { return rowCtrl.onFullWidthRowFocused(event); });\n };\n // in a clean design, each cell would register for each of these events. however when scrolling, all the cells\n // registering and de-registering for events is a performance bottleneck. so we register here once and inform\n // all active cells.\n RowRenderer.prototype.registerCellEventListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_CELL_FOCUSED, function (event) {\n _this.onCellFocusChanged(event);\n });\n this.addManagedListener(this.eventService, Events.EVENT_CELL_FOCUS_CLEARED, function () {\n _this.onCellFocusChanged();\n });\n this.addManagedListener(this.eventService, Events.EVENT_FLASH_CELLS, function (event) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onFlashCells(event); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onColumnHover(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onDisplayedColumnsChanged(); });\n });\n // only for printLayout - because we are rendering all the cells in the same row, regardless of pinned state,\n // then changing the width of the containers will impact left position. eg the center cols all have their\n // left position adjusted by the width of the left pinned column, so if the pinned left column width changes,\n // all the center cols need to be shifted to accommodate this. when in normal layout, the pinned cols are\n // in different containers so doesn't impact.\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () {\n if (_this.printLayout) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onLeftChanged(); });\n }\n });\n var rangeSelectionEnabled = this.gridOptionsService.isEnableRangeSelection();\n if (rangeSelectionEnabled) {\n this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRangeSelectionChanged(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n });\n }\n // add listeners to the grid columns\n this.refreshListenersToColumnsForCellComps();\n // if the grid columns change, then refresh the listeners again\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.refreshListenersToColumnsForCellComps.bind(this));\n this.addDestroyFunc(this.removeGridColumnListeners.bind(this));\n };\n // executes all functions in destroyFuncsForColumnListeners and then clears the list\n RowRenderer.prototype.removeGridColumnListeners = function () {\n this.destroyFuncsForColumnListeners.forEach(function (func) { return func(); });\n this.destroyFuncsForColumnListeners.length = 0;\n };\n // this function adds listeners onto all the grid columns, which are the column that we could have cellComps for.\n // when the grid columns change, we add listeners again. in an ideal design, each CellComp would just register to\n // the column it belongs to on creation, however this was a bottleneck with the number of cells, so do it here\n // once instead.\n RowRenderer.prototype.refreshListenersToColumnsForCellComps = function () {\n var _this = this;\n this.removeGridColumnListeners();\n var cols = this.columnModel.getAllGridColumns();\n if (!cols) {\n return;\n }\n cols.forEach(function (col) {\n var forEachCellWithThisCol = function (callback) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.getColumn() === col) {\n callback(cellCtrl);\n }\n });\n };\n var leftChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLeftChanged(); });\n };\n var widthChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onWidthChanged(); });\n };\n var firstRightPinnedChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onFirstRightPinnedChanged(); });\n };\n var lastLeftPinnedChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLastLeftPinnedChanged(); });\n };\n var colDefChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onColDefChanged(); });\n };\n col.addEventListener('leftChanged', leftChangedListener);\n col.addEventListener('widthChanged', widthChangedListener);\n col.addEventListener('firstRightPinnedChanged', firstRightPinnedChangedListener);\n col.addEventListener('lastLeftPinnedChanged', lastLeftPinnedChangedListener);\n col.addEventListener('colDefChanged', colDefChangedListener);\n _this.destroyFuncsForColumnListeners.push(function () {\n col.removeEventListener('leftChanged', leftChangedListener);\n col.removeEventListener('widthChanged', widthChangedListener);\n col.removeEventListener('firstRightPinnedChanged', firstRightPinnedChangedListener);\n col.removeEventListener('lastLeftPinnedChanged', lastLeftPinnedChangedListener);\n col.removeEventListener('colDefChanged', colDefChangedListener);\n });\n });\n };\n RowRenderer.prototype.onDomLayoutChanged = function () {\n var printLayout = this.gridOptionsService.isDomLayout('print');\n var embedFullWidthRows = printLayout || this.gridOptionsService.is('embedFullWidthRows');\n // if moving towards or away from print layout, means we need to destroy all rows, as rows are not laid\n // out using absolute positioning when doing print layout\n var destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;\n this.printLayout = printLayout;\n this.embedFullWidthRows = embedFullWidthRows;\n if (destroyRows) {\n this.redrawAfterModelUpdate({ domLayoutChanged: true });\n }\n };\n // for row models that have datasources, when we update the datasource, we need to force the rowRenderer\n // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.\n RowRenderer.prototype.datasourceChanged = function () {\n this.firstRenderedRow = 0;\n this.lastRenderedRow = -1;\n var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n this.removeRowCtrls(rowIndexesToRemove);\n };\n RowRenderer.prototype.onPageLoaded = function (event) {\n var params = {\n recycleRows: event.keepRenderedRows,\n animate: event.animate,\n newData: event.newData,\n newPage: event.newPage,\n // because this is a model updated event (not pinned rows), we\n // can skip updating the pinned rows. this is needed so that if user\n // is doing transaction updates, the pinned rows are not getting constantly\n // trashed - or editing cells in pinned rows are not refreshed and put into read mode\n onlyBody: true\n };\n this.redrawAfterModelUpdate(params);\n };\n RowRenderer.prototype.getAllCellsForColumn = function (column) {\n var res = [];\n this.getAllRowCtrls().forEach(function (rowCtrl) {\n var eCell = rowCtrl.getCellElement(column);\n if (eCell) {\n res.push(eCell);\n }\n });\n return res;\n };\n RowRenderer.prototype.refreshFloatingRowComps = function () {\n this.refreshFloatingRows(this.topRowCtrls, this.pinnedRowModel.getPinnedTopRowData());\n this.refreshFloatingRows(this.bottomRowCtrls, this.pinnedRowModel.getPinnedBottomRowData());\n };\n RowRenderer.prototype.getTopRowCtrls = function () {\n return this.topRowCtrls;\n };\n RowRenderer.prototype.getBottomRowCtrls = function () {\n return this.bottomRowCtrls;\n };\n RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes) {\n var _this = this;\n rowComps.forEach(function (row) {\n row.destroyFirstPass();\n row.destroySecondPass();\n });\n rowComps.length = 0;\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var rowCtrl = new RowCtrl(rowNode, _this.beans, false, false, _this.printLayout);\n rowComps.push(rowCtrl);\n });\n };\n RowRenderer.prototype.onPinnedRowDataChanged = function () {\n // recycling rows in order to ensure cell editing is not cancelled\n var params = {\n recycleRows: true\n };\n this.redrawAfterModelUpdate(params);\n };\n // if the row nodes are not rendered, no index is returned\n RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {\n var result = [];\n if (missing(rowNodes)) {\n return result;\n }\n iterateObject(this.rowCtrlsByRowIndex, function (index, renderedRow) {\n var rowNode = renderedRow.getRowNode();\n if (rowNodes.indexOf(rowNode) >= 0) {\n result.push(index);\n }\n });\n return result;\n };\n RowRenderer.prototype.redrawRows = function (rowNodes) {\n // if no row nodes provided, then refresh everything\n var partialRefresh = rowNodes != null && rowNodes.length > 0;\n if (partialRefresh) {\n var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);\n // remove the rows\n this.removeRowCtrls(indexesToRemove);\n }\n // add draw them again\n this.redrawAfterModelUpdate({\n recycleRows: partialRefresh\n });\n };\n RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {\n var focusedCell = (params === null || params === void 0 ? void 0 : params.suppressKeepFocus) ? null : this.focusService.getFocusCellToUseAfterRefresh();\n if (focusedCell == null) {\n return null;\n }\n // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this\n // solves is with editing - if the user is editing, eg focus is on a text field, and not on the\n // cell itself, then the cell can be registered as having focus, however it's the text field that\n // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus\n // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,\n // the focus is lost from the text field. we do not want this.\n var eDocument = this.gridOptionsService.getDocument();\n var activeElement = eDocument.activeElement;\n var cellDomData = this.gridOptionsService.getDomData(activeElement, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n var rowDomData = this.gridOptionsService.getDomData(activeElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n var gridElementFocused = cellDomData || rowDomData;\n return gridElementFocused ? focusedCell : null;\n };\n // gets called from:\n // +) initialisation (in registerGridComp) params = null\n // +) onDomLayoutChanged, params = null\n // +) onPageLoaded, recycleRows, animate, newData, newPage from event, onlyBody=true\n // +) onPinnedRowDataChanged, recycleRows = true\n // +) redrawRows (from Grid API), recycleRows = true/false\n RowRenderer.prototype.redrawAfterModelUpdate = function (params) {\n if (params === void 0) { params = {}; }\n this.getLockOnRefresh();\n var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);\n this.updateContainerHeights();\n this.scrollToTopIfNewData(params);\n // never recycle rows on layout change as rows could change from normal DOM layout\n // back to the grid's row positioning.\n var recycleRows = !params.domLayoutChanged && !!params.recycleRows;\n var animate = params.animate && this.gridOptionsService.isAnimateRows();\n // after modelUpdate, row indexes can change, so we clear out the rowsByIndex map,\n // however we can reuse the rows, so we keep them but index by rowNode.id\n var rowsToRecycle = recycleRows ? this.recycleRows() : null;\n if (!recycleRows) {\n this.removeAllRowComps();\n }\n this.redraw(rowsToRecycle, animate);\n this.gridBodyCtrl.updateRowCount();\n if (!params.onlyBody) {\n this.refreshFloatingRowComps();\n }\n this.dispatchDisplayedRowsChanged();\n // if a cell was focused before, ensure focus now.\n if (focusedCell != null) {\n this.restoreFocusedCell(focusedCell);\n }\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.scrollToTopIfNewData = function (params) {\n var scrollToTop = params.newData || params.newPage;\n var suppressScrollToTop = this.gridOptionsService.is('suppressScrollOnNewData');\n if (scrollToTop && !suppressScrollToTop) {\n this.gridBodyCtrl.getScrollFeature().scrollToTop();\n }\n };\n RowRenderer.prototype.updateContainerHeights = function () {\n // when doing print layout, we don't explicitly set height on the containers\n if (this.printLayout) {\n this.rowContainerHeightService.setModelHeight(null);\n return;\n }\n var containerHeight = this.paginationProxy.getCurrentPageHeight();\n // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,\n // we still want the scroll to be present, otherwise there would be no way to scroll the header\n // which might be needed us user wants to access columns\n // on the RHS - and if that was where the filter was that cause no rows to be presented, there\n // is no way to remove the filter.\n if (containerHeight === 0) {\n containerHeight = 1;\n }\n this.rowContainerHeightService.setModelHeight(containerHeight);\n };\n RowRenderer.prototype.getLockOnRefresh = function () {\n if (this.refreshInProgress) {\n throw new Error(\"AG Grid: cannot get grid to draw rows when it is in the middle of drawing rows. \" +\n \"Your code probably called a grid API method while the grid was in the render stage. To overcome \" +\n \"this, put the API call into a timeout, e.g. instead of api.redrawRows(), \" +\n \"call setTimeout(function() { api.redrawRows(); }, 0). To see what part of your code \" +\n \"that caused the refresh check this stacktrace.\");\n }\n this.refreshInProgress = true;\n };\n RowRenderer.prototype.releaseLockOnRefresh = function () {\n this.refreshInProgress = false;\n };\n RowRenderer.prototype.isRefreshInProgress = function () {\n return this.refreshInProgress;\n };\n // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n // edited cell).\n RowRenderer.prototype.restoreFocusedCell = function (cellPosition) {\n if (cellPosition) {\n // we don't wish to dispatch an event as the rowRenderer is not capable of changing the selected cell,\n // so we mock a change event for the full width rows and cells to ensure they update to the newly selected\n // state\n this.onCellFocusChanged({\n rowIndex: cellPosition.rowIndex,\n column: cellPosition.column,\n rowPinned: cellPosition.rowPinned,\n forceBrowserFocus: true,\n preventScrollOnBrowserFocus: true,\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n context: this.beans.gridOptionsService.context,\n type: 'mock',\n });\n }\n };\n RowRenderer.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.getAllRowCtrls().forEach(function (rowCtrl) {\n rowCtrl.stopEditing(cancel);\n });\n };\n RowRenderer.prototype.getAllCellCtrls = function () {\n var res = [];\n var rowCtrls = this.getAllRowCtrls();\n var rowCtrlsLength = rowCtrls.length;\n for (var i = 0; i < rowCtrlsLength; i++) {\n var cellCtrls = rowCtrls[i].getAllCellCtrls();\n var cellCtrlsLength = cellCtrls.length;\n for (var j = 0; j < cellCtrlsLength; j++) {\n res.push(cellCtrls[j]);\n }\n }\n return res;\n };\n RowRenderer.prototype.getAllRowCtrls = function () {\n var e_1, _a;\n var stickyRowCtrls = (this.stickyRowFeature && this.stickyRowFeature.getStickyRowCtrls()) || [];\n var res = __spread$b(this.topRowCtrls, this.bottomRowCtrls, stickyRowCtrls);\n try {\n for (var _b = __values$1(Object.keys(this.rowCtrlsByRowIndex)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n res.push(this.rowCtrlsByRowIndex[key]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return res;\n };\n RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n var rowComp = this.rowCtrlsByRowIndex[rowIndex];\n if (rowComp) {\n rowComp.addEventListener(eventName, callback);\n }\n };\n RowRenderer.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n var flashDelay = params.flashDelay, fadeDelay = params.fadeDelay;\n this.getCellCtrls(params.rowNodes, params.columns)\n .forEach(function (cellCtrl) { return cellCtrl.flashCell({ flashDelay: flashDelay, fadeDelay: fadeDelay }); });\n };\n RowRenderer.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n var refreshCellParams = {\n forceRefresh: params.force,\n newData: false,\n suppressFlash: params.suppressFlash\n };\n this.getCellCtrls(params.rowNodes, params.columns)\n .forEach(function (cellCtrl) {\n if (cellCtrl.refreshShouldDestroy()) {\n var rowCtrl = cellCtrl.getRowCtrl();\n if (rowCtrl) {\n rowCtrl.refreshCell(cellCtrl);\n }\n }\n else {\n cellCtrl.refreshCell(refreshCellParams);\n }\n });\n this.getFullWidthRowCtrls(params.rowNodes).forEach(function (fullWidthRowCtrl) {\n fullWidthRowCtrl.refreshFullWidth();\n });\n };\n RowRenderer.prototype.getCellRendererInstances = function (params) {\n var _this = this;\n var _a;\n var cellRenderers = this.getCellCtrls(params.rowNodes, params.columns)\n .map(function (cellCtrl) { return cellCtrl.getCellRenderer(); })\n .filter(function (renderer) { return renderer != null; });\n if ((_a = params.columns) === null || _a === void 0 ? void 0 : _a.length) {\n return cellRenderers;\n }\n var fullWidthRenderers = [];\n var rowIdMap = this.mapRowNodes(params.rowNodes);\n this.getAllRowCtrls().forEach(function (rowCtrl) {\n if (rowIdMap && !_this.isRowInMap(rowCtrl.getRowNode(), rowIdMap)) {\n return;\n }\n if (!rowCtrl.isFullWidth()) {\n return;\n }\n var fullWidthRenderer = rowCtrl.getFullWidthCellRenderer();\n if (fullWidthRenderer) {\n fullWidthRenderers.push(fullWidthRenderer);\n }\n });\n return __spread$b(fullWidthRenderers, cellRenderers);\n };\n RowRenderer.prototype.getCellEditorInstances = function (params) {\n var res = [];\n this.getCellCtrls(params.rowNodes, params.columns).forEach(function (cellCtrl) {\n var cellEditor = cellCtrl.getCellEditor();\n if (cellEditor) {\n res.push(cellEditor);\n }\n });\n return res;\n };\n RowRenderer.prototype.getEditingCells = function () {\n var res = [];\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.isEditing()) {\n var cellPosition = cellCtrl.getCellPosition();\n res.push(cellPosition);\n }\n });\n return res;\n };\n RowRenderer.prototype.mapRowNodes = function (rowNodes) {\n if (!rowNodes) {\n return;\n }\n var res = {\n top: {},\n bottom: {},\n normal: {}\n };\n rowNodes.forEach(function (rowNode) {\n var id = rowNode.id;\n if (rowNode.rowPinned === 'top') {\n res.top[id] = rowNode;\n }\n else if (rowNode.rowPinned === 'bottom') {\n res.bottom[id] = rowNode;\n }\n else {\n res.normal[id] = rowNode;\n }\n });\n return res;\n };\n RowRenderer.prototype.isRowInMap = function (rowNode, rowIdsMap) {\n // skip this row if it is missing from the provided list\n var id = rowNode.id;\n var floating = rowNode.rowPinned;\n if (floating === 'bottom') {\n return rowIdsMap.bottom[id] != null;\n }\n if (floating === 'top') {\n return rowIdsMap.top[id] != null;\n }\n return rowIdsMap.normal[id] != null;\n };\n // returns CellCtrl's that match the provided rowNodes and columns. eg if one row node\n // and two columns provided, that identifies 4 cells, so 4 CellCtrl's returned.\n RowRenderer.prototype.getCellCtrls = function (rowNodes, columns) {\n var _this = this;\n var rowIdsMap = this.mapRowNodes(rowNodes);\n var res = [];\n var colIdsMap;\n if (exists(columns)) {\n colIdsMap = {};\n columns.forEach(function (colKey) {\n var column = _this.columnModel.getGridColumn(colKey);\n if (exists(column)) {\n colIdsMap[column.getId()] = true;\n }\n });\n }\n var processRow = function (rowCtrl) {\n var rowNode = rowCtrl.getRowNode();\n // skip this row if it is missing from the provided list\n if (rowIdsMap != null && !_this.isRowInMap(rowNode, rowIdsMap)) {\n return;\n }\n rowCtrl.getAllCellCtrls().forEach(function (cellCtrl) {\n var colId = cellCtrl.getColumn().getId();\n var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n if (excludeColFromRefresh) {\n return;\n }\n res.push(cellCtrl);\n });\n };\n this.getAllRowCtrls().forEach(function (row) { return processRow(row); });\n return res;\n };\n RowRenderer.prototype.destroy = function () {\n this.removeAllRowComps();\n _super.prototype.destroy.call(this);\n };\n RowRenderer.prototype.removeAllRowComps = function () {\n var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n this.removeRowCtrls(rowIndexesToRemove);\n };\n RowRenderer.prototype.recycleRows = function () {\n // remove all stub nodes, they can't be reused, as no rowNode id\n var stubNodeIndexes = [];\n iterateObject(this.rowCtrlsByRowIndex, function (index, rowComp) {\n var stubNode = rowComp.getRowNode().id == null;\n if (stubNode) {\n stubNodeIndexes.push(index);\n }\n });\n this.removeRowCtrls(stubNodeIndexes);\n // then clear out rowCompsByIndex, but before that take a copy, but index by id, not rowIndex\n var ctrlsByIdMap = {};\n iterateObject(this.rowCtrlsByRowIndex, function (index, rowComp) {\n var rowNode = rowComp.getRowNode();\n ctrlsByIdMap[rowNode.id] = rowComp;\n });\n this.rowCtrlsByRowIndex = {};\n return ctrlsByIdMap;\n };\n // takes array of row indexes\n RowRenderer.prototype.removeRowCtrls = function (rowsToRemove) {\n var _this = this;\n // if no fromIndex then set to -1, which will refresh everything\n // let realFromIndex = -1;\n rowsToRemove.forEach(function (indexToRemove) {\n var rowCtrl = _this.rowCtrlsByRowIndex[indexToRemove];\n if (rowCtrl) {\n rowCtrl.destroyFirstPass();\n rowCtrl.destroySecondPass();\n }\n delete _this.rowCtrlsByRowIndex[indexToRemove];\n });\n };\n RowRenderer.prototype.onBodyScroll = function (e) {\n if (e.direction !== 'vertical') {\n return;\n }\n this.redrawAfterScroll();\n };\n // gets called when rows don't change, but viewport does, so after:\n // 1) height of grid body changes, ie number of displayed rows has changed\n // 2) grid scrolled to new position\n // 3) ensure index visible (which is a scroll)\n RowRenderer.prototype.redrawAfterScroll = function () {\n var cellFocused;\n // only try to refocus cells shifting in and out of sticky container\n // if the browser supports focus ({ preventScroll })\n if (this.stickyRowFeature && browserSupportsPreventScroll()) {\n cellFocused = this.getCellToRestoreFocusToAfterRefresh() || undefined;\n }\n this.getLockOnRefresh();\n this.redraw(null, false, true);\n this.releaseLockOnRefresh();\n this.dispatchDisplayedRowsChanged(true);\n if (cellFocused != null) {\n var newFocusedCell = this.getCellToRestoreFocusToAfterRefresh();\n if (cellFocused != null && newFocusedCell == null) {\n this.animationFrameService.flushAllFrames();\n this.restoreFocusedCell(cellFocused);\n }\n }\n };\n RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {\n // for speedy lookup, dump into map\n var indexesToDrawMap = {};\n indexesToDraw.forEach(function (index) { return (indexesToDrawMap[index] = true); });\n var existingIndexes = Object.keys(this.rowCtrlsByRowIndex);\n var indexesNotToDraw = existingIndexes.filter(function (index) { return !indexesToDrawMap[index]; });\n this.removeRowCtrls(indexesNotToDraw);\n };\n RowRenderer.prototype.calculateIndexesToDraw = function (rowsToRecycle) {\n var _this = this;\n // all in all indexes in the viewport\n var indexesToDraw = createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);\n var checkRowToDraw = function (indexStr, rowComp) {\n var index = rowComp.getRowNode().rowIndex;\n if (index == null) {\n return;\n }\n if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {\n if (_this.doNotUnVirtualiseRow(rowComp)) {\n indexesToDraw.push(index);\n }\n }\n };\n // if we are redrawing due to scrolling change, then old rows are in this.rowCompsByIndex\n iterateObject(this.rowCtrlsByRowIndex, checkRowToDraw);\n // if we are redrawing due to model update, then old rows are in rowsToRecycle\n iterateObject(rowsToRecycle, checkRowToDraw);\n indexesToDraw.sort(function (a, b) { return a - b; });\n indexesToDraw = indexesToDraw.filter(function (index) {\n var rowNode = _this.paginationProxy.getRow(index);\n return rowNode && !rowNode.sticky;\n });\n return indexesToDraw;\n };\n RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {\n var _this = this;\n if (animate === void 0) { animate = false; }\n if (afterScroll === void 0) { afterScroll = false; }\n this.rowContainerHeightService.updateOffset();\n this.workOutFirstAndLastRowsToRender();\n if (this.stickyRowFeature) {\n this.stickyRowFeature.checkStickyRows();\n }\n // the row can already exist and be in the following:\n // rowsToRecycle -> if model change, then the index may be different, however row may\n // exist here from previous time (mapped by id).\n // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport\n // this is all the indexes we want, including those that already exist, so this method\n // will end up going through each index and drawing only if the row doesn't already exist\n var indexesToDraw = this.calculateIndexesToDraw(rowsToRecycle);\n this.removeRowCompsNotToDraw(indexesToDraw);\n // never animate when doing print layout - as we want to get things ready to print as quickly as possible,\n // otherwise we risk the printer printing a row that's half faded (half way through fading in)\n if (this.printLayout) {\n animate = false;\n }\n indexesToDraw.forEach(function (rowIndex) {\n var rowCtrl = _this.createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll);\n if (exists(rowCtrl)) ;\n });\n if (rowsToRecycle) {\n var useAnimationFrame = afterScroll && !this.gridOptionsService.is('suppressAnimationFrame') && !this.printLayout;\n if (useAnimationFrame) {\n this.beans.animationFrameService.addDestroyTask(function () {\n _this.destroyRowCtrls(rowsToRecycle, animate);\n _this.updateAllRowCtrls();\n _this.dispatchDisplayedRowsChanged();\n });\n }\n else {\n this.destroyRowCtrls(rowsToRecycle, animate);\n }\n }\n this.updateAllRowCtrls();\n };\n RowRenderer.prototype.dispatchDisplayedRowsChanged = function (afterScroll) {\n if (afterScroll === void 0) { afterScroll = false; }\n var event = { type: Events.EVENT_DISPLAYED_ROWS_CHANGED, afterScroll: afterScroll };\n this.eventService.dispatchEvent(event);\n };\n RowRenderer.prototype.onDisplayedColumnsChanged = function () {\n var pinningLeft = this.columnModel.isPinningLeft();\n var pinningRight = this.columnModel.isPinningRight();\n var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n if (atLeastOneChanged) {\n this.pinningLeft = pinningLeft;\n this.pinningRight = pinningRight;\n if (this.embedFullWidthRows) {\n this.redrawFullWidthEmbeddedRows();\n }\n }\n };\n // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {\n // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when\n // embedded, as what appears in each section depends on whether we are pinned or not\n var rowsToRemove = [];\n this.getFullWidthRowCtrls().forEach(function (fullWidthCtrl) {\n var rowIndex = fullWidthCtrl.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n });\n this.refreshFloatingRowComps();\n this.removeRowCtrls(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.getFullWidthRowCtrls = function (rowNodes) {\n var _this = this;\n var rowNodesMap = this.mapRowNodes(rowNodes);\n return this.getAllRowCtrls().filter(function (rowCtrl) {\n // include just full width\n if (!rowCtrl.isFullWidth()) {\n return false;\n }\n // if Row Nodes provided, we exclude where Row Node is missing\n var rowNode = rowCtrl.getRowNode();\n if (rowNodesMap != null && !_this.isRowInMap(rowNode, rowNodesMap)) {\n return false;\n }\n return true;\n });\n };\n RowRenderer.prototype.refreshFullWidthRow = function (rowNode) {\n var fullWidthCtrl = this.getFullWidthRowCtrls().find(function (rowCtrl) { return rowCtrl.getRowNode() === rowNode; });\n if (!fullWidthCtrl) {\n return;\n }\n var refreshed = fullWidthCtrl.refreshFullWidth();\n if (refreshed) {\n return;\n }\n if (rowNode.sticky) {\n this.stickyRowFeature.refreshStickyNode(rowNode);\n }\n else {\n this.removeRowCtrls([rowNode.rowIndex]);\n }\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.createOrUpdateRowCtrl = function (rowIndex, rowsToRecycle, animate, afterScroll) {\n var rowNode;\n var rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n // if no row comp, see if we can get it from the previous rowComps\n if (!rowCtrl) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n if (exists(rowNode) && exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {\n rowCtrl = rowsToRecycle[rowNode.id];\n rowsToRecycle[rowNode.id] = null;\n }\n }\n var creatingNewRowCtrl = !rowCtrl;\n if (creatingNewRowCtrl) {\n // create a new one\n if (!rowNode) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n }\n if (exists(rowNode)) {\n rowCtrl = this.createRowCon(rowNode, animate, afterScroll);\n }\n else {\n // this should never happen - if somehow we are trying to create\n // a row for a rowNode that does not exist.\n return;\n }\n }\n if (rowNode) {\n // set node as 'alreadyRendered' to ensure we only recycle rowComps that have been rendered, this ensures\n // we don't reuse rowComps that have been removed and then re-added in the same batch transaction.\n rowNode.alreadyRendered = true;\n }\n this.rowCtrlsByRowIndex[rowIndex] = rowCtrl;\n return rowCtrl;\n };\n RowRenderer.prototype.destroyRowCtrls = function (rowCtrlsMap, animate) {\n var _this = this;\n var executeInAWhileFuncs = [];\n iterateObject(rowCtrlsMap, function (nodeId, rowCtrl) {\n // if row was used, then it's null\n if (!rowCtrl) {\n return;\n }\n if (_this.cachedRowCtrls && rowCtrl.isCacheable()) {\n _this.cachedRowCtrls.addRow(rowCtrl);\n return;\n }\n rowCtrl.destroyFirstPass();\n if (animate) {\n _this.zombieRowCtrls[rowCtrl.getInstanceId()] = rowCtrl;\n executeInAWhileFuncs.push(function () {\n rowCtrl.destroySecondPass();\n delete _this.zombieRowCtrls[rowCtrl.getInstanceId()];\n });\n }\n else {\n rowCtrl.destroySecondPass();\n }\n });\n if (animate) {\n // this ensures we fire displayedRowsChanged AFTER all the 'executeInAWhileFuncs' get\n // executed, as we added it to the end of the list.\n executeInAWhileFuncs.push(function () {\n _this.updateAllRowCtrls();\n _this.dispatchDisplayedRowsChanged();\n });\n executeInAWhile(executeInAWhileFuncs);\n }\n };\n RowRenderer.prototype.getRowBuffer = function () {\n var rowBuffer = this.gridOptionsService.getNum('rowBuffer');\n if (typeof rowBuffer === 'number') {\n if (rowBuffer < 0) {\n doOnce(function () { return console.warn(\"AG Grid: rowBuffer should not be negative\"); }, 'warn rowBuffer negative');\n rowBuffer = 0;\n this.gridOptionsService.set('rowBuffer', 0);\n }\n }\n else {\n rowBuffer = 10;\n }\n return rowBuffer;\n };\n RowRenderer.prototype.getRowBufferInPixels = function () {\n var rowsToBuffer = this.getRowBuffer();\n var defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n return rowsToBuffer * defaultRowHeight;\n };\n RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {\n var newFirst;\n var newLast;\n if (!this.paginationProxy.isRowsToRender()) {\n newFirst = 0;\n newLast = -1; // setting to -1 means nothing in range\n }\n else if (this.printLayout) {\n newFirst = this.paginationProxy.getPageFirstRow();\n newLast = this.paginationProxy.getPageLastRow();\n }\n else {\n var bufferPixels = this.getRowBufferInPixels();\n var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n var suppressRowVirtualisation = this.gridOptionsService.is('suppressRowVirtualisation');\n var rowHeightsChanged = false;\n var firstPixel = void 0;\n var lastPixel = void 0;\n do {\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var _a = this.paginationProxy.getCurrentPagePixelRange(), pageFirstPixel = _a.pageFirstPixel, pageLastPixel = _a.pageLastPixel;\n var divStretchOffset = this.rowContainerHeightService.getDivStretchOffset();\n var bodyVRange = gridBodyCtrl.getScrollFeature().getVScrollPosition();\n var bodyTopPixel = bodyVRange.top;\n var bodyBottomPixel = bodyVRange.bottom;\n if (suppressRowVirtualisation) {\n firstPixel = pageFirstPixel + divStretchOffset;\n lastPixel = pageLastPixel + divStretchOffset;\n }\n else {\n firstPixel = Math.max(bodyTopPixel + paginationOffset - bufferPixels, pageFirstPixel) + divStretchOffset;\n lastPixel = Math.min(bodyBottomPixel + paginationOffset + bufferPixels, pageLastPixel) + divStretchOffset;\n }\n this.firstVisibleVPixel = Math.max(bodyTopPixel + paginationOffset, pageFirstPixel) + divStretchOffset;\n // if the rows we are about to display get their heights changed, then that upsets the calcs from above.\n rowHeightsChanged = this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);\n } while (rowHeightsChanged);\n var firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);\n var lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);\n var pageFirstRow = this.paginationProxy.getPageFirstRow();\n var pageLastRow = this.paginationProxy.getPageLastRow();\n // adjust, in case buffer extended actual size\n if (firstRowIndex < pageFirstRow) {\n firstRowIndex = pageFirstRow;\n }\n if (lastRowIndex > pageLastRow) {\n lastRowIndex = pageLastRow;\n }\n newFirst = firstRowIndex;\n newLast = lastRowIndex;\n }\n // sometimes user doesn't set CSS right and ends up with grid with no height and grid ends up\n // trying to render all the rows, eg 10,000+ rows. this will kill the browser. so instead of\n // killing the browser, we limit the number of rows. just in case some use case we didn't think\n // of, we also have a property to not do this operation.\n var rowLayoutNormal = this.gridOptionsService.isDomLayout('normal');\n var suppressRowCountRestriction = this.gridOptionsService.is('suppressMaxRenderedRowRestriction');\n var rowBufferMaxSize = Math.max(this.getRowBuffer(), 500);\n if (rowLayoutNormal && !suppressRowCountRestriction) {\n if (newLast - newFirst > rowBufferMaxSize) {\n newLast = newFirst + rowBufferMaxSize;\n }\n }\n var firstDiffers = newFirst !== this.firstRenderedRow;\n var lastDiffers = newLast !== this.lastRenderedRow;\n if (firstDiffers || lastDiffers) {\n this.firstRenderedRow = newFirst;\n this.lastRenderedRow = newLast;\n var event_1 = {\n type: Events.EVENT_VIEWPORT_CHANGED,\n firstRow: newFirst,\n lastRow: newLast\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n /**\n * This event will only be fired once, and is queued until after the browser next renders.\n * This allows us to fire an event during the start of the render cycle, when we first see data being rendered\n * but not execute the event until all of the data has finished being rendered to the dom.\n */\n RowRenderer.prototype.dispatchFirstDataRenderedEvent = function () {\n var _this = this;\n if (this.dataFirstRenderedFired) {\n return;\n }\n this.dataFirstRenderedFired = true;\n var event = {\n type: Events.EVENT_FIRST_DATA_RENDERED,\n firstRow: this.firstRenderedRow,\n lastRow: this.lastRenderedRow,\n };\n // See AG-7018\n window.requestAnimationFrame(function () {\n _this.beans.eventService.dispatchEvent(event);\n });\n };\n RowRenderer.prototype.ensureAllRowsInRangeHaveHeightsCalculated = function (topPixel, bottomPixel) {\n // ensureRowHeightsVisible only works with CSRM, as it's the only row model that allows lazy row height calcs.\n // all the other row models just hard code so the method just returns back false\n var res = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);\n if (res) {\n this.updateContainerHeights();\n }\n return res;\n };\n RowRenderer.prototype.getFirstVisibleVerticalPixel = function () {\n return this.firstVisibleVPixel;\n };\n RowRenderer.prototype.getFirstVirtualRenderedRow = function () {\n return this.firstRenderedRow;\n };\n RowRenderer.prototype.getLastVirtualRenderedRow = function () {\n return this.lastRenderedRow;\n };\n // check that none of the rows to remove are editing or focused as:\n // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n // eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n // the edit is reset - so we want to keep it rendered.\n // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n // otherwise the user can range select and drag (with focus cell going out of the viewport)\n // and then ctrl+c, nothing will happen if cell is removed from dom.\n // c) if detail record of master detail, as users complained that the context of detail rows\n // was getting lost when detail row out of view. eg user expands to show detail row,\n // then manipulates the detail panel (eg sorts the detail grid), then context is lost\n // after detail panel is scrolled out of / into view.\n RowRenderer.prototype.doNotUnVirtualiseRow = function (rowComp) {\n var REMOVE_ROW = false;\n var KEEP_ROW = true;\n var rowNode = rowComp.getRowNode();\n var rowHasFocus = this.focusService.isRowNodeFocused(rowNode);\n var rowIsEditing = rowComp.isEditing();\n var rowIsDetail = rowNode.detail;\n var mightWantToKeepRow = rowHasFocus || rowIsEditing || rowIsDetail;\n // if we deffo don't want to keep it,\n if (!mightWantToKeepRow) {\n return REMOVE_ROW;\n }\n // editing row, only remove if it is no longer rendered, eg filtered out or new data set.\n // the reason we want to keep is if user is scrolling up and down, we don't want to loose\n // the context of the editing in process.\n var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);\n return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n };\n RowRenderer.prototype.createRowCon = function (rowNode, animate, afterScroll) {\n var rowCtrlFromCache = this.cachedRowCtrls ? this.cachedRowCtrls.getRow(rowNode) : null;\n if (rowCtrlFromCache) {\n return rowCtrlFromCache;\n }\n // we don't use animations frames for printing, so the user can put the grid into print mode\n // and immediately print - otherwise the user would have to wait for the rows to draw in the background\n // (via the animation frames) which is awkward to do from code.\n // we only do the animation frames after scrolling, as this is where we want the smooth user experience.\n // having animation frames for other times makes the grid look 'jumpy'.\n var suppressAnimationFrame = this.gridOptionsService.is('suppressAnimationFrame');\n var useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;\n var res = new RowCtrl(rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout);\n return res;\n };\n RowRenderer.prototype.getRenderedNodes = function () {\n var renderedRows = this.rowCtrlsByRowIndex;\n return Object.keys(renderedRows).map(function (key) { return renderedRows[key].getRowNode(); });\n };\n RowRenderer.prototype.getRowByPosition = function (rowPosition) {\n var rowCtrl;\n var rowIndex = rowPosition.rowIndex;\n switch (rowPosition.rowPinned) {\n case 'top':\n rowCtrl = this.topRowCtrls[rowIndex];\n break;\n case 'bottom':\n rowCtrl = this.bottomRowCtrls[rowIndex];\n break;\n default:\n rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n if (!rowCtrl) {\n rowCtrl = this.getStickyTopRowCtrls().find(function (ctrl) { return ctrl.getRowNode().rowIndex === rowIndex; }) || null;\n }\n break;\n }\n return rowCtrl;\n };\n RowRenderer.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case 'top':\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case 'bottom':\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n // returns true if any row between startIndex and endIndex is rendered. used by\n // SSRM or IRM, as they don't want to purge visible blocks from cache.\n RowRenderer.prototype.isRangeInRenderedViewport = function (startIndex, endIndex) {\n // parent closed means the parent node is not expanded, thus these blocks are not visible\n var parentClosed = startIndex == null || endIndex == null;\n if (parentClosed) {\n return false;\n }\n var blockAfterViewport = startIndex > this.lastRenderedRow;\n var blockBeforeViewport = endIndex < this.firstRenderedRow;\n var blockInsideViewport = !blockBeforeViewport && !blockAfterViewport;\n return blockInsideViewport;\n };\n __decorate$13([\n Autowired(\"animationFrameService\")\n ], RowRenderer.prototype, \"animationFrameService\", void 0);\n __decorate$13([\n Autowired(\"paginationProxy\")\n ], RowRenderer.prototype, \"paginationProxy\", void 0);\n __decorate$13([\n Autowired(\"columnModel\")\n ], RowRenderer.prototype, \"columnModel\", void 0);\n __decorate$13([\n Autowired(\"pinnedRowModel\")\n ], RowRenderer.prototype, \"pinnedRowModel\", void 0);\n __decorate$13([\n Autowired(\"rowModel\")\n ], RowRenderer.prototype, \"rowModel\", void 0);\n __decorate$13([\n Autowired(\"focusService\")\n ], RowRenderer.prototype, \"focusService\", void 0);\n __decorate$13([\n Autowired(\"beans\")\n ], RowRenderer.prototype, \"beans\", void 0);\n __decorate$13([\n Autowired(\"rowContainerHeightService\")\n ], RowRenderer.prototype, \"rowContainerHeightService\", void 0);\n __decorate$13([\n Autowired(\"ctrlsService\")\n ], RowRenderer.prototype, \"ctrlsService\", void 0);\n __decorate$13([\n PostConstruct\n ], RowRenderer.prototype, \"postConstruct\", null);\n RowRenderer = __decorate$13([\n Bean(\"rowRenderer\")\n ], RowRenderer);\n return RowRenderer;\n}(BeanStub));\nvar RowCtrlCache = /** @class */ (function () {\n function RowCtrlCache(maxCount) {\n // map for fast access\n this.entriesMap = {};\n // list for keeping order\n this.entriesList = [];\n this.maxCount = maxCount;\n }\n RowCtrlCache.prototype.addRow = function (rowCtrl) {\n this.entriesMap[rowCtrl.getRowNode().id] = rowCtrl;\n this.entriesList.push(rowCtrl);\n rowCtrl.setCached(true);\n if (this.entriesList.length > this.maxCount) {\n var rowCtrlToDestroy = this.entriesList[0];\n rowCtrlToDestroy.destroyFirstPass();\n rowCtrlToDestroy.destroySecondPass();\n this.removeFromCache(rowCtrlToDestroy);\n }\n };\n RowCtrlCache.prototype.getRow = function (rowNode) {\n if (rowNode == null || rowNode.id == null) {\n return null;\n }\n var res = this.entriesMap[rowNode.id];\n if (!res) {\n return null;\n }\n this.removeFromCache(res);\n res.setCached(false);\n // this can happen if user reloads data, and a new RowNode is reusing\n // the same ID as the old one\n var rowNodeMismatch = res.getRowNode() != rowNode;\n return rowNodeMismatch ? null : res;\n };\n RowCtrlCache.prototype.removeFromCache = function (rowCtrl) {\n var rowNodeId = rowCtrl.getRowNode().id;\n delete this.entriesMap[rowNodeId];\n removeFromArray(this.entriesList, rowCtrl);\n };\n RowCtrlCache.prototype.getEntries = function () {\n return this.entriesList;\n };\n return RowCtrlCache;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$15 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$12 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueFormatterService = /** @class */ (function (_super) {\n __extends$15(ValueFormatterService, _super);\n function ValueFormatterService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ValueFormatterService.prototype.formatValue = function (column, node, value, suppliedFormatter, useFormatterFromColumn) {\n if (useFormatterFromColumn === void 0) { useFormatterFromColumn = true; }\n var result = null;\n var formatter;\n var colDef = column.getColDef();\n if (suppliedFormatter) {\n // use supplied formatter if provided, e.g. set filter items can have their own value formatters\n formatter = suppliedFormatter;\n }\n else if (useFormatterFromColumn) {\n formatter = colDef.valueFormatter;\n }\n if (formatter) {\n var params = {\n value: value,\n node: node,\n data: node ? node.data : null,\n colDef: colDef,\n column: column,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n if (typeof formatter === 'function') {\n result = formatter(params);\n }\n else {\n result = this.expressionService.evaluate(formatter, params);\n }\n }\n else if (colDef.refData) {\n return colDef.refData[value] || '';\n }\n // if we don't do this, then arrays get displayed as 1,2,3, but we want 1, 2, 3 (i.e. with spaces)\n if (result == null && Array.isArray(value)) {\n result = value.join(', ');\n }\n return result;\n };\n __decorate$12([\n Autowired('expressionService')\n ], ValueFormatterService.prototype, \"expressionService\", void 0);\n ValueFormatterService = __decorate$12([\n Bean('valueFormatterService')\n ], ValueFormatterService);\n return ValueFormatterService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$14 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$11 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PinnedRowModel = /** @class */ (function (_super) {\n __extends$14(PinnedRowModel, _super);\n function PinnedRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PinnedRowModel.prototype.init = function () {\n this.setPinnedTopRowData(this.gridOptionsService.get('pinnedTopRowData'));\n this.setPinnedBottomRowData(this.gridOptionsService.get('pinnedBottomRowData'));\n };\n PinnedRowModel.prototype.isEmpty = function (floating) {\n var rows = floating === 'top' ? this.pinnedTopRows : this.pinnedBottomRows;\n return missingOrEmpty(rows);\n };\n PinnedRowModel.prototype.isRowsToRender = function (floating) {\n return !this.isEmpty(floating);\n };\n PinnedRowModel.prototype.getRowAtPixel = function (pixel, floating) {\n var rows = floating === 'top' ? this.pinnedTopRows : this.pinnedBottomRows;\n if (missingOrEmpty(rows)) {\n return 0; // this should never happen, just in case, 0 is graceful failure\n }\n for (var i = 0; i < rows.length; i++) {\n var rowNode = rows[i];\n var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;\n // only need to range check against the top pixel, as we are going through the list\n // in order, first row to hit the pixel wins\n if (rowTopPixel >= pixel) {\n return i;\n }\n }\n return rows.length - 1;\n };\n PinnedRowModel.prototype.setPinnedTopRowData = function (rowData) {\n this.pinnedTopRows = this.createNodesFromData(rowData, true);\n var event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.setPinnedBottomRowData = function (rowData) {\n this.pinnedBottomRows = this.createNodesFromData(rowData, false);\n var event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.createNodesFromData = function (allData, isTop) {\n var _this = this;\n var rowNodes = [];\n if (allData) {\n var nextRowTop_1 = 0;\n allData.forEach(function (dataItem, index) {\n var rowNode = new RowNode(_this.beans);\n rowNode.data = dataItem;\n var idPrefix = isTop ? RowNode.ID_PREFIX_TOP_PINNED : RowNode.ID_PREFIX_BOTTOM_PINNED;\n rowNode.id = idPrefix + index;\n rowNode.rowPinned = isTop ? 'top' : 'bottom';\n rowNode.setRowTop(nextRowTop_1);\n rowNode.setRowHeight(_this.gridOptionsService.getRowHeightForNode(rowNode).height);\n rowNode.setRowIndex(index);\n nextRowTop_1 += rowNode.rowHeight;\n rowNodes.push(rowNode);\n });\n }\n return rowNodes;\n };\n PinnedRowModel.prototype.getPinnedTopRowData = function () {\n return this.pinnedTopRows;\n };\n PinnedRowModel.prototype.getPinnedBottomRowData = function () {\n return this.pinnedBottomRows;\n };\n PinnedRowModel.prototype.getPinnedTopTotalHeight = function () {\n return this.getTotalHeight(this.pinnedTopRows);\n };\n PinnedRowModel.prototype.getPinnedTopRowCount = function () {\n return this.pinnedTopRows ? this.pinnedTopRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedTopRow = function (index) {\n return this.pinnedTopRows[index];\n };\n PinnedRowModel.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedBottomRows[index];\n };\n PinnedRowModel.prototype.forEachPinnedTopRow = function (callback) {\n if (missingOrEmpty(this.pinnedTopRows)) {\n return;\n }\n this.pinnedTopRows.forEach(callback);\n };\n PinnedRowModel.prototype.forEachPinnedBottomRow = function (callback) {\n if (missingOrEmpty(this.pinnedBottomRows)) {\n return;\n }\n this.pinnedBottomRows.forEach(callback);\n };\n PinnedRowModel.prototype.getPinnedBottomTotalHeight = function () {\n return this.getTotalHeight(this.pinnedBottomRows);\n };\n PinnedRowModel.prototype.getTotalHeight = function (rowNodes) {\n if (!rowNodes || rowNodes.length === 0) {\n return 0;\n }\n var lastNode = last(rowNodes);\n return lastNode.rowTop + lastNode.rowHeight;\n };\n __decorate$11([\n Autowired('beans')\n ], PinnedRowModel.prototype, \"beans\", void 0);\n __decorate$11([\n PostConstruct\n ], PinnedRowModel.prototype, \"init\", null);\n PinnedRowModel = __decorate$11([\n Bean('pinnedRowModel')\n ], PinnedRowModel);\n return PinnedRowModel;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ServerSideTransactionResultStatus;\n(function (ServerSideTransactionResultStatus) {\n /** Transaction was successfully applied */\n ServerSideTransactionResultStatus[\"Applied\"] = \"Applied\";\n /**\n * Store was not found, transaction not applied.\n * Either invalid route, or the parent row has not yet been expanded.\n */\n ServerSideTransactionResultStatus[\"StoreNotFound\"] = \"StoreNotFound\";\n /**\n * Store is loading, transaction not applied.\n */\n ServerSideTransactionResultStatus[\"StoreLoading\"] = \"StoreLoading\";\n /**\n * Store is loading (as max loads exceeded), transaction not applied.\n */\n ServerSideTransactionResultStatus[\"StoreWaitingToLoad\"] = \"StoreWaitingToLoad\";\n /**\n * Store load attempt failed, transaction not applied.\n */\n ServerSideTransactionResultStatus[\"StoreLoadingFailed\"] = \"StoreLoadingFailed\";\n /**\n * Store is type Partial, which doesn't accept transactions\n */\n ServerSideTransactionResultStatus[\"StoreWrongType\"] = \"StoreWrongType\";\n /**\n * Transaction was cancelled, due to grid.\n * Callback isApplyServerSideTransaction() returning false\n */\n ServerSideTransactionResultStatus[\"Cancelled\"] = \"Cancelled\";\n})(ServerSideTransactionResultStatus || (ServerSideTransactionResultStatus = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// when doing transactions, or change detection, and grouping is present\n// in the data, there is no need for the ClientSideRowModel to update each\n// group after an update, ony parts that were impacted by the change.\n// this class keeps track of all groups that were impacted by a transaction.\n// the the different CSRM operations (filter, sort etc) use the forEach method\n// to visit each group that was changed.\nvar ChangedPath = /** @class */ (function () {\n function ChangedPath(keepingColumns, rootNode) {\n // whether changed path is active of not. it is active when a) doing\n // a transaction update or b) doing change detection. if we are doing\n // a CSRM refresh for other reasons (after sort or filter, or user calling\n // setRowData() without delta mode) then we are not active. we are also\n // marked as not active if secondary columns change in pivot (as this impacts\n // aggregations)\n this.active = true;\n // for each node in the change path, we also store which columns need\n // to be re-aggregated.\n this.nodeIdsToColumns = {};\n // for quick lookup, all items in the change path are mapped by nodeId\n this.mapToItems = {};\n this.keepingColumns = keepingColumns;\n this.pathRoot = {\n rowNode: rootNode,\n children: null\n };\n this.mapToItems[rootNode.id] = this.pathRoot;\n }\n // can be set inactive by:\n // a) ClientSideRowModel, if no transactions or\n // b) PivotService, if secondary columns changed\n ChangedPath.prototype.setInactive = function () {\n this.active = false;\n };\n ChangedPath.prototype.isActive = function () {\n return this.active;\n };\n ChangedPath.prototype.depthFirstSearchChangedPath = function (pathItem, callback) {\n if (pathItem.children) {\n for (var i = 0; i < pathItem.children.length; i++) {\n this.depthFirstSearchChangedPath(pathItem.children[i], callback);\n }\n }\n callback(pathItem.rowNode);\n };\n ChangedPath.prototype.depthFirstSearchEverything = function (rowNode, callback, traverseEverything) {\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n if (childNode.childrenAfterGroup) {\n this.depthFirstSearchEverything(rowNode.childrenAfterGroup[i], callback, traverseEverything);\n }\n else if (traverseEverything) {\n callback(childNode);\n }\n }\n }\n callback(rowNode);\n };\n // traverseLeafNodes -> used when NOT doing changed path, ie traversing everything. the callback\n // will be called for child nodes in addition to parent nodes.\n ChangedPath.prototype.forEachChangedNodeDepthFirst = function (callback, traverseLeafNodes, includeUnchangedNodes) {\n if (traverseLeafNodes === void 0) { traverseLeafNodes = false; }\n if (includeUnchangedNodes === void 0) { includeUnchangedNodes = false; }\n if (this.active && !includeUnchangedNodes) {\n // if we are active, then use the change path to callback\n // only for updated groups\n this.depthFirstSearchChangedPath(this.pathRoot, callback);\n }\n else {\n // we are not active, so callback for everything, walk the entire path\n this.depthFirstSearchEverything(this.pathRoot.rowNode, callback, traverseLeafNodes);\n }\n };\n ChangedPath.prototype.executeFromRootNode = function (callback) {\n callback(this.pathRoot.rowNode);\n };\n ChangedPath.prototype.createPathItems = function (rowNode) {\n var pointer = rowNode;\n var newEntryCount = 0;\n while (!this.mapToItems[pointer.id]) {\n var newEntry = {\n rowNode: pointer,\n children: null\n };\n this.mapToItems[pointer.id] = newEntry;\n newEntryCount++;\n pointer = pointer.parent;\n }\n return newEntryCount;\n };\n ChangedPath.prototype.populateColumnsMap = function (rowNode, columns) {\n var _this = this;\n if (!this.keepingColumns || !columns) {\n return;\n }\n var pointer = rowNode;\n while (pointer) {\n // if columns, add the columns in all the way to parent, merging\n // in any other columns that might be there already\n if (!this.nodeIdsToColumns[pointer.id]) {\n this.nodeIdsToColumns[pointer.id] = {};\n }\n columns.forEach(function (col) { return _this.nodeIdsToColumns[pointer.id][col.getId()] = true; });\n pointer = pointer.parent;\n }\n };\n ChangedPath.prototype.linkPathItems = function (rowNode, newEntryCount) {\n var pointer = rowNode;\n for (var i = 0; i < newEntryCount; i++) {\n var thisItem = this.mapToItems[pointer.id];\n var parentItem = this.mapToItems[pointer.parent.id];\n if (!parentItem.children) {\n parentItem.children = [];\n }\n parentItem.children.push(thisItem);\n pointer = pointer.parent;\n }\n };\n // called by\n // 1) change detection (provides cols) and\n // 2) groupStage if doing transaction update (doesn't provide cols)\n ChangedPath.prototype.addParentNode = function (rowNode, columns) {\n if (!rowNode || rowNode.isRowPinned()) {\n return;\n }\n // we cannot do both steps below in the same loop as\n // the second loop has a dependency on the first loop.\n // ie the hierarchy cannot be stitched up yet because\n // we don't have it built yet\n // create the new PathItem objects.\n var newEntryCount = this.createPathItems(rowNode);\n // link in the node items\n this.linkPathItems(rowNode, newEntryCount);\n // update columns\n this.populateColumnsMap(rowNode, columns);\n };\n ChangedPath.prototype.canSkip = function (rowNode) {\n return this.active && !this.mapToItems[rowNode.id];\n };\n ChangedPath.prototype.getValueColumnsForNode = function (rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return valueColumns;\n }\n var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n var result = valueColumns.filter(function (col) { return colsForThisNode[col.getId()]; });\n return result;\n };\n ChangedPath.prototype.getNotValueColumnsForNode = function (rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return null;\n }\n var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n var result = valueColumns.filter(function (col) { return !colsForThisNode[col.getId()]; });\n return result;\n };\n return ChangedPath;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$13 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RowNodeBlock = /** @class */ (function (_super) {\n __extends$13(RowNodeBlock, _super);\n function RowNodeBlock(id) {\n var _this = _super.call(this) || this;\n _this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;\n _this.version = 0;\n _this.id = id;\n return _this;\n }\n RowNodeBlock.prototype.getId = function () {\n return this.id;\n };\n RowNodeBlock.prototype.load = function () {\n this.state = RowNodeBlock.STATE_LOADING;\n this.loadFromDatasource();\n };\n RowNodeBlock.prototype.getVersion = function () {\n return this.version;\n };\n RowNodeBlock.prototype.setStateWaitingToLoad = function () {\n // in case any current loads in progress, this will have their results ignored\n this.version++;\n this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;\n };\n RowNodeBlock.prototype.getState = function () {\n return this.state;\n };\n RowNodeBlock.prototype.pageLoadFailed = function (version) {\n var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n if (requestMostRecentAndLive) {\n this.state = RowNodeBlock.STATE_FAILED;\n this.processServerFail();\n }\n this.dispatchLoadCompleted(false);\n };\n RowNodeBlock.prototype.success = function (version, params) {\n this.successCommon(version, params);\n };\n RowNodeBlock.prototype.pageLoaded = function (version, rows, lastRow) {\n this.successCommon(version, { rowData: rows, rowCount: lastRow });\n };\n RowNodeBlock.prototype.isRequestMostRecentAndLive = function (version) {\n // thisIsMostRecentRequest - if block was refreshed, then another request\n // could of been sent after this one.\n var thisIsMostRecentRequest = version === this.version;\n // weAreNotDestroyed - if InfiniteStore is purged, then blocks are destroyed\n // and new blocks created. so data loads of old blocks are discarded.\n var weAreNotDestroyed = this.isAlive();\n return thisIsMostRecentRequest && weAreNotDestroyed;\n };\n RowNodeBlock.prototype.successCommon = function (version, params) {\n // need to dispatch load complete before processing the data, as PaginationComp checks\n // RowNodeBlockLoader to see if it is still loading, so the RowNodeBlockLoader needs to\n // be updated first (via LoadComplete event) before PaginationComp updates (via processServerResult method)\n this.dispatchLoadCompleted();\n var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n if (requestMostRecentAndLive) {\n this.state = RowNodeBlock.STATE_LOADED;\n this.processServerResult(params);\n }\n };\n RowNodeBlock.prototype.dispatchLoadCompleted = function (success) {\n if (success === void 0) { success = true; }\n // we fire event regardless of processing data or now, as we want\n // the concurrentLoadRequests count to be reduced in BlockLoader\n var event = {\n type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n success: success,\n block: this\n };\n this.dispatchEvent(event);\n };\n RowNodeBlock.EVENT_LOAD_COMPLETE = 'loadComplete';\n RowNodeBlock.STATE_WAITING_TO_LOAD = 'needsLoading';\n RowNodeBlock.STATE_LOADING = 'loading';\n RowNodeBlock.STATE_LOADED = 'loaded';\n RowNodeBlock.STATE_FAILED = 'failed';\n return RowNodeBlock;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$12 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$10 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$7 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar RowNodeBlockLoader = /** @class */ (function (_super) {\n __extends$12(RowNodeBlockLoader, _super);\n function RowNodeBlockLoader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeBlockLoadsCount = 0;\n _this.blocks = [];\n _this.active = true;\n return _this;\n }\n RowNodeBlockLoader_1 = RowNodeBlockLoader;\n RowNodeBlockLoader.prototype.postConstruct = function () {\n this.maxConcurrentRequests = this.getMaxConcurrentDatasourceRequests();\n var blockLoadDebounceMillis = this.gridOptionsService.getNum('blockLoadDebounceMillis');\n if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {\n this.checkBlockToLoadDebounce = _.debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);\n }\n };\n RowNodeBlockLoader.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('RowNodeBlockLoader');\n };\n RowNodeBlockLoader.prototype.getMaxConcurrentDatasourceRequests = function () {\n var res = this.gridOptionsService.getNum('maxConcurrentDatasourceRequests');\n if (res == null) {\n return 2;\n } // 2 is the default\n if (res <= 0) {\n return;\n } // negative number, eg -1, means no max restriction\n return res;\n };\n RowNodeBlockLoader.prototype.addBlock = function (block) {\n this.blocks.push(block);\n // note that we do not remove this listener when removing the block. this is because the\n // cache can get destroyed (and containing blocks) when a block is loading. however the loading block\n // is still counted as an active loading block and we must decrement activeBlockLoadsCount when it finishes.\n block.addEventListener(RowNodeBlock.EVENT_LOAD_COMPLETE, this.loadComplete.bind(this));\n this.checkBlockToLoad();\n };\n RowNodeBlockLoader.prototype.removeBlock = function (block) {\n _.removeFromArray(this.blocks, block);\n };\n RowNodeBlockLoader.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.active = false;\n };\n RowNodeBlockLoader.prototype.loadComplete = function () {\n this.activeBlockLoadsCount--;\n this.checkBlockToLoad();\n this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADED_EVENT });\n if (this.activeBlockLoadsCount == 0) {\n this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADER_FINISHED_EVENT });\n }\n };\n RowNodeBlockLoader.prototype.checkBlockToLoad = function () {\n if (this.checkBlockToLoadDebounce) {\n this.checkBlockToLoadDebounce();\n }\n else {\n this.performCheckBlocksToLoad();\n }\n };\n RowNodeBlockLoader.prototype.performCheckBlocksToLoad = function () {\n if (!this.active) {\n return;\n }\n this.printCacheStatus();\n if (this.maxConcurrentRequests != null && this.activeBlockLoadsCount >= this.maxConcurrentRequests) {\n this.logger.log(\"checkBlockToLoad: max loads exceeded\");\n return;\n }\n var loadAvailability = this.getAvailableLoadingCount();\n var blocksToLoad = this.blocks.filter(function (block) { return (block.getState() === RowNodeBlock.STATE_WAITING_TO_LOAD); }).slice(0, loadAvailability);\n this.registerLoads(blocksToLoad.length);\n blocksToLoad.forEach(function (block) { return block.load(); });\n this.printCacheStatus();\n };\n RowNodeBlockLoader.prototype.getBlockState = function () {\n if (this.gridOptionsService.isRowModelType('serverSide')) {\n var ssrm = this.rowModel;\n return ssrm.getBlockStates();\n }\n var result = {};\n this.blocks.forEach(function (block) {\n var _a = block.getBlockStateJson(), id = _a.id, state = _a.state;\n result[id] = state;\n });\n return result;\n };\n RowNodeBlockLoader.prototype.printCacheStatus = function () {\n if (this.logger.isLogging()) {\n this.logger.log(\"printCacheStatus: activePageLoadsCount = \" + this.activeBlockLoadsCount + \",\"\n + (\" blocks = \" + JSON.stringify(this.getBlockState())));\n }\n };\n RowNodeBlockLoader.prototype.isLoading = function () {\n return this.activeBlockLoadsCount > 0;\n };\n RowNodeBlockLoader.prototype.registerLoads = function (count) {\n this.activeBlockLoadsCount += count;\n };\n RowNodeBlockLoader.prototype.getAvailableLoadingCount = function () {\n return this.maxConcurrentRequests !== undefined ? this.maxConcurrentRequests - this.activeBlockLoadsCount : undefined;\n };\n var RowNodeBlockLoader_1;\n RowNodeBlockLoader.BLOCK_LOADED_EVENT = 'blockLoaded';\n RowNodeBlockLoader.BLOCK_LOADER_FINISHED_EVENT = 'blockLoaderFinished';\n __decorate$10([\n Autowired('rowModel')\n ], RowNodeBlockLoader.prototype, \"rowModel\", void 0);\n __decorate$10([\n PostConstruct\n ], RowNodeBlockLoader.prototype, \"postConstruct\", null);\n __decorate$10([\n __param$7(0, Qualifier('loggerFactory'))\n ], RowNodeBlockLoader.prototype, \"setBeans\", null);\n RowNodeBlockLoader = RowNodeBlockLoader_1 = __decorate$10([\n Bean('rowNodeBlockLoader')\n ], RowNodeBlockLoader);\n return RowNodeBlockLoader;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$11 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationProxy = /** @class */ (function (_super) {\n __extends$11(PaginationProxy, _super);\n function PaginationProxy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.currentPage = 0;\n _this.topDisplayedRowIndex = 0;\n _this.bottomDisplayedRowIndex = 0;\n _this.pixelOffset = 0;\n _this.masterRowCount = 0;\n return _this;\n }\n PaginationProxy.prototype.postConstruct = function () {\n this.active = this.gridOptionsService.is('pagination');\n this.paginateChildRows = this.isPaginateChildRows();\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addManagedPropertyListener('pagination', this.onPaginationPageSizeChanged.bind(this));\n this.addManagedPropertyListener('paginationPageSize', this.onPaginationPageSizeChanged.bind(this));\n this.onModelUpdated();\n };\n PaginationProxy.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());\n if (res) {\n this.calculatePages();\n }\n return res;\n };\n PaginationProxy.prototype.isPaginateChildRows = function () {\n var shouldPaginate = this.gridOptionsService.is('groupRemoveSingleChildren') || this.gridOptionsService.is('groupRemoveLowestSingleChildren');\n if (shouldPaginate) {\n return true;\n }\n return this.gridOptionsService.is('paginateChildRows');\n };\n PaginationProxy.prototype.onModelUpdated = function (modelUpdatedEvent) {\n this.calculatePages();\n var paginationChangedEvent = {\n type: Events.EVENT_PAGINATION_CHANGED,\n animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,\n newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,\n newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,\n keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false\n };\n this.eventService.dispatchEvent(paginationChangedEvent);\n };\n PaginationProxy.prototype.onPaginationPageSizeChanged = function () {\n this.active = this.gridOptionsService.is('pagination');\n this.calculatePages();\n var paginationChangedEvent = {\n type: Events.EVENT_PAGINATION_CHANGED,\n animate: false,\n newData: false,\n newPage: false,\n // important to keep rendered rows, otherwise every time grid is resized,\n // we would destroy all the rows.\n keepRenderedRows: true\n };\n this.eventService.dispatchEvent(paginationChangedEvent);\n };\n PaginationProxy.prototype.goToPage = function (page) {\n if (!this.active || this.currentPage === page || typeof this.currentPage !== 'number') {\n return;\n }\n this.currentPage = page;\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: true\n };\n this.onModelUpdated(event);\n };\n PaginationProxy.prototype.getPixelOffset = function () {\n return this.pixelOffset;\n };\n PaginationProxy.prototype.getRow = function (index) {\n return this.rowModel.getRow(index);\n };\n PaginationProxy.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n PaginationProxy.prototype.getRowIndexAtPixel = function (pixel) {\n return this.rowModel.getRowIndexAtPixel(pixel);\n };\n PaginationProxy.prototype.getCurrentPageHeight = function () {\n if (missing(this.topRowBounds) || missing(this.bottomRowBounds)) {\n return 0;\n }\n return Math.max(this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop, 0);\n };\n PaginationProxy.prototype.getCurrentPagePixelRange = function () {\n var pageFirstPixel = this.topRowBounds ? this.topRowBounds.rowTop : 0;\n var pageLastPixel = this.bottomRowBounds ? this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight : 0;\n return { pageFirstPixel: pageFirstPixel, pageLastPixel: pageLastPixel };\n };\n PaginationProxy.prototype.isRowPresent = function (rowNode) {\n if (!this.rowModel.isRowPresent(rowNode)) {\n return false;\n }\n var nodeIsInPage = rowNode.rowIndex >= this.topDisplayedRowIndex && rowNode.rowIndex <= this.bottomDisplayedRowIndex;\n return nodeIsInPage;\n };\n PaginationProxy.prototype.isEmpty = function () {\n return this.rowModel.isEmpty();\n };\n PaginationProxy.prototype.isRowsToRender = function () {\n return this.rowModel.isRowsToRender();\n };\n PaginationProxy.prototype.forEachNode = function (callback) {\n return this.rowModel.forEachNode(callback);\n };\n PaginationProxy.prototype.forEachNodeOnPage = function (callback) {\n var firstRow = this.getPageFirstRow();\n var lastRow = this.getPageLastRow();\n for (var i = firstRow; i <= lastRow; i++) {\n var node = this.getRow(i);\n if (node) {\n callback(node);\n }\n }\n };\n PaginationProxy.prototype.getType = function () {\n return this.rowModel.getType();\n };\n PaginationProxy.prototype.getRowBounds = function (index) {\n var res = this.rowModel.getRowBounds(index);\n res.rowIndex = index;\n return res;\n };\n PaginationProxy.prototype.getPageFirstRow = function () {\n return this.topRowBounds ? this.topRowBounds.rowIndex : -1;\n };\n PaginationProxy.prototype.getPageLastRow = function () {\n return this.bottomRowBounds ? this.bottomRowBounds.rowIndex : -1;\n };\n PaginationProxy.prototype.getRowCount = function () {\n return this.rowModel.getRowCount();\n };\n PaginationProxy.prototype.getPageForIndex = function (index) {\n return Math.floor(index / this.pageSize);\n };\n PaginationProxy.prototype.goToPageWithIndex = function (index) {\n if (!this.active) {\n return;\n }\n var pageNumber = this.getPageForIndex(index);\n this.goToPage(pageNumber);\n };\n PaginationProxy.prototype.isRowInPage = function (row) {\n if (!this.active) {\n return true;\n }\n var rowPage = this.getPageForIndex(row.rowIndex);\n return rowPage === this.currentPage;\n };\n PaginationProxy.prototype.isLastPageFound = function () {\n return this.rowModel.isLastRowIndexKnown();\n };\n PaginationProxy.prototype.getCurrentPage = function () {\n return this.currentPage;\n };\n PaginationProxy.prototype.goToNextPage = function () {\n this.goToPage(this.currentPage + 1);\n };\n PaginationProxy.prototype.goToPreviousPage = function () {\n this.goToPage(this.currentPage - 1);\n };\n PaginationProxy.prototype.goToFirstPage = function () {\n this.goToPage(0);\n };\n PaginationProxy.prototype.goToLastPage = function () {\n var rowCount = this.rowModel.getRowCount();\n var lastPage = Math.floor(rowCount / this.pageSize);\n this.goToPage(lastPage);\n };\n PaginationProxy.prototype.getPageSize = function () {\n return this.pageSize;\n };\n PaginationProxy.prototype.getTotalPages = function () {\n return this.totalPages;\n };\n PaginationProxy.prototype.setPageSize = function () {\n // show put this into super class\n this.pageSize = this.gridOptionsService.getNum('paginationPageSize');\n if (this.pageSize == null || this.pageSize < 1) {\n this.pageSize = 100;\n }\n };\n PaginationProxy.prototype.calculatePages = function () {\n if (this.active) {\n this.setPageSize();\n if (this.paginateChildRows) {\n this.calculatePagesAllRows();\n }\n else {\n this.calculatePagesMasterRowsOnly();\n }\n }\n else {\n this.calculatedPagesNotActive();\n }\n this.topRowBounds = this.rowModel.getRowBounds(this.topDisplayedRowIndex);\n if (this.topRowBounds) {\n this.topRowBounds.rowIndex = this.topDisplayedRowIndex;\n }\n this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomDisplayedRowIndex);\n if (this.bottomRowBounds) {\n this.bottomRowBounds.rowIndex = this.bottomDisplayedRowIndex;\n }\n this.setPixelOffset(exists(this.topRowBounds) ? this.topRowBounds.rowTop : 0);\n };\n PaginationProxy.prototype.setPixelOffset = function (value) {\n if (this.pixelOffset === value) {\n return;\n }\n this.pixelOffset = value;\n this.eventService.dispatchEvent({ type: Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED });\n };\n PaginationProxy.prototype.setZeroRows = function () {\n this.masterRowCount = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = -1;\n this.currentPage = 0;\n this.totalPages = 0;\n };\n PaginationProxy.prototype.adjustCurrentPageIfInvalid = function () {\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!isFinite(this.currentPage) || isNaN(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n };\n PaginationProxy.prototype.calculatePagesMasterRowsOnly = function () {\n // const csrm = <ClientSideRowModel> this.rowModel;\n // const rootNode = csrm.getRootNode();\n // const masterRows = rootNode.childrenAfterSort;\n this.masterRowCount = this.rowModel.getTopLevelRowCount();\n // we say <=0 (rather than =0) as viewport returns -1 when no rows\n if (this.masterRowCount <= 0) {\n this.setZeroRows();\n return;\n }\n var masterLastRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((masterLastRowIndex) / this.pageSize) + 1;\n this.adjustCurrentPageIfInvalid();\n var masterPageStartIndex = this.pageSize * this.currentPage;\n var masterPageEndIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n if (masterPageEndIndex > masterLastRowIndex) {\n masterPageEndIndex = masterLastRowIndex;\n }\n this.topDisplayedRowIndex = this.rowModel.getTopLevelRowDisplayedIndex(masterPageStartIndex);\n // masterRows[masterPageStartIndex].rowIndex;\n if (masterPageEndIndex === masterLastRowIndex) {\n // if showing the last master row, then we want to show the very last row of the model\n this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n }\n else {\n var firstIndexNotToShow = this.rowModel.getTopLevelRowDisplayedIndex(masterPageEndIndex + 1);\n //masterRows[masterPageEndIndex + 1].rowIndex;\n // this gets the index of the last child - eg current row is open, we want to display all children,\n // the index of the last child is one less than the index of the next parent row.\n this.bottomDisplayedRowIndex = firstIndexNotToShow - 1;\n }\n };\n PaginationProxy.prototype.getMasterRowCount = function () {\n return this.masterRowCount;\n };\n PaginationProxy.prototype.calculatePagesAllRows = function () {\n this.masterRowCount = this.rowModel.getRowCount();\n if (this.masterRowCount === 0) {\n this.setZeroRows();\n return;\n }\n var maxRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((maxRowIndex) / this.pageSize) + 1;\n this.adjustCurrentPageIfInvalid();\n this.topDisplayedRowIndex = this.pageSize * this.currentPage;\n this.bottomDisplayedRowIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n if (this.bottomDisplayedRowIndex > maxRowIndex) {\n this.bottomDisplayedRowIndex = maxRowIndex;\n }\n };\n PaginationProxy.prototype.calculatedPagesNotActive = function () {\n this.pageSize = this.rowModel.getRowCount();\n this.totalPages = 1;\n this.currentPage = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n };\n __decorate$$([\n Autowired('rowModel')\n ], PaginationProxy.prototype, \"rowModel\", void 0);\n __decorate$$([\n PostConstruct\n ], PaginationProxy.prototype, \"postConstruct\", null);\n PaginationProxy = __decorate$$([\n Bean('paginationProxy')\n ], PaginationProxy);\n return PaginationProxy;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$10 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StylingService = /** @class */ (function (_super) {\n __extends$10(StylingService, _super);\n function StylingService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StylingService.prototype.processAllCellClasses = function (colDef, params, onApplicableClass, onNotApplicableClass) {\n this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);\n this.processStaticCellClasses(colDef, params, onApplicableClass);\n };\n StylingService.prototype.processClassRules = function (classRules, params, onApplicableClass, onNotApplicableClass) {\n if (classRules == null) {\n return;\n }\n var classNames = Object.keys(classRules);\n var classesToApply = {};\n var classesToRemove = {};\n var _loop_1 = function (i) {\n var className = classNames[i];\n var rule = classRules[className];\n var resultOfRule;\n if (typeof rule === 'string') {\n resultOfRule = this_1.expressionService.evaluate(rule, params);\n }\n else if (typeof rule === 'function') {\n resultOfRule = rule(params);\n }\n // in case className = 'my-class1 my-class2', we need to split into individual class names\n className.split(' ').forEach(function (singleClass) {\n if (singleClass == null || singleClass.trim() == '') {\n return;\n }\n resultOfRule ? classesToApply[singleClass] = true : classesToRemove[singleClass] = true;\n });\n };\n var this_1 = this;\n for (var i = 0; i < classNames.length; i++) {\n _loop_1(i);\n }\n // we remove all classes first, then add all classes second,\n // in case a class appears in more than one rule, this means it will be added\n // if appears in at least one truthy rule\n if (onNotApplicableClass) {\n Object.keys(classesToRemove).forEach(onNotApplicableClass);\n }\n Object.keys(classesToApply).forEach(onApplicableClass);\n };\n StylingService.prototype.getStaticCellClasses = function (colDef, params) {\n var cellClass = colDef.cellClass;\n if (!cellClass) {\n return [];\n }\n var classOrClasses;\n if (typeof cellClass === 'function') {\n var cellClassFunc = cellClass;\n classOrClasses = cellClassFunc(params);\n }\n else {\n classOrClasses = cellClass;\n }\n if (typeof classOrClasses === 'string') {\n classOrClasses = [classOrClasses];\n }\n return classOrClasses || [];\n };\n StylingService.prototype.processStaticCellClasses = function (colDef, params, onApplicableClass) {\n var classOrClasses = this.getStaticCellClasses(colDef, params);\n classOrClasses.forEach(function (cssClassItem) {\n onApplicableClass(cssClassItem);\n });\n };\n __decorate$_([\n Autowired('expressionService')\n ], StylingService.prototype, \"expressionService\", void 0);\n StylingService = __decorate$_([\n Bean('stylingService')\n ], StylingService);\n return StylingService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$$ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgToggleButton = /** @class */ (function (_super) {\n __extends$$(AgToggleButton, _super);\n function AgToggleButton(config) {\n return _super.call(this, config, 'ag-toggle-button') || this;\n }\n AgToggleButton.prototype.setValue = function (value, silent) {\n _super.prototype.setValue.call(this, value, silent);\n this.addOrRemoveCssClass('ag-selected', this.getValue());\n return this;\n };\n return AgToggleButton;\n}(AgCheckbox));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$_ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgInputTextArea = /** @class */ (function (_super) {\n __extends$_(AgInputTextArea, _super);\n function AgInputTextArea(config) {\n return _super.call(this, config, 'ag-text-area', null, 'textarea') || this;\n }\n AgInputTextArea.prototype.setValue = function (value, silent) {\n var ret = _super.prototype.setValue.call(this, value, silent);\n this.eInput.value = value;\n return ret;\n };\n AgInputTextArea.prototype.setCols = function (cols) {\n this.eInput.cols = cols;\n return this;\n };\n AgInputTextArea.prototype.setRows = function (rows) {\n this.eInput.rows = rows;\n return this;\n };\n return AgInputTextArea;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgInputRange = /** @class */ (function (_super) {\n __extends$Z(AgInputRange, _super);\n function AgInputRange(config) {\n return _super.call(this, config, 'ag-range-field', 'range') || this;\n }\n AgInputRange.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n var _a = this.config, min = _a.min, max = _a.max, step = _a.step;\n if (min != null) {\n this.setMinValue(min);\n }\n if (max != null) {\n this.setMaxValue(max);\n }\n this.setStep(step || 1);\n };\n AgInputRange.prototype.addInputListeners = function () {\n var _this = this;\n this.addManagedListener(this.eInput, 'input', function (e) {\n var value = e.target.value;\n _this.setValue(value);\n });\n };\n AgInputRange.prototype.setMinValue = function (value) {\n this.min = value;\n this.eInput.setAttribute('min', value.toString());\n return this;\n };\n AgInputRange.prototype.setMaxValue = function (value) {\n this.max = value;\n this.eInput.setAttribute('max', value.toString());\n return this;\n };\n AgInputRange.prototype.setStep = function (value) {\n this.eInput.setAttribute('step', value.toString());\n return this;\n };\n AgInputRange.prototype.setValue = function (value, silent) {\n if (this.min != null) {\n value = Math.max(parseFloat(value), this.min).toString();\n }\n if (this.max != null) {\n value = Math.min(parseFloat(value), this.max).toString();\n }\n var ret = _super.prototype.setValue.call(this, value, silent);\n this.eInput.value = value;\n return ret;\n };\n return AgInputRange;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgSlider = /** @class */ (function (_super) {\n __extends$Y(AgSlider, _super);\n function AgSlider(config) {\n var _this = _super.call(this, config, AgSlider.TEMPLATE) || this;\n _this.labelAlignment = 'top';\n return _this;\n }\n AgSlider.prototype.init = function () {\n this.eSlider.addCssClass('ag-slider-field');\n };\n AgSlider.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n var eventChanged = AgAbstractField.EVENT_CHANGED;\n this.addManagedListener(this.eText, eventChanged, function () {\n var textValue = parseFloat(_this.eText.getValue());\n _this.eSlider.setValue(textValue.toString(), true);\n callbackFn(textValue || 0);\n });\n this.addManagedListener(this.eSlider, eventChanged, function () {\n var sliderValue = _this.eSlider.getValue();\n _this.eText.setValue(sliderValue, true);\n callbackFn(parseFloat(sliderValue));\n });\n return this;\n };\n AgSlider.prototype.setSliderWidth = function (width) {\n this.eSlider.setWidth(width);\n return this;\n };\n AgSlider.prototype.setTextFieldWidth = function (width) {\n this.eText.setWidth(width);\n return this;\n };\n AgSlider.prototype.setMinValue = function (minValue) {\n this.eSlider.setMinValue(minValue);\n this.eText.setMin(minValue);\n return this;\n };\n AgSlider.prototype.setMaxValue = function (maxValue) {\n this.eSlider.setMaxValue(maxValue);\n this.eText.setMax(maxValue);\n return this;\n };\n AgSlider.prototype.getValue = function () {\n return this.eText.getValue();\n };\n AgSlider.prototype.setValue = function (value) {\n if (this.getValue() === value) {\n return this;\n }\n this.eText.setValue(value, true);\n this.eSlider.setValue(value, true);\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n return this;\n };\n AgSlider.prototype.setStep = function (step) {\n this.eSlider.setStep(step);\n this.eText.setStep(step);\n return this;\n };\n AgSlider.TEMPLATE = \"<div class=\\\"ag-slider\\\">\\n <label ref=\\\"eLabel\\\"></label>\\n <div class=\\\"ag-wrapper ag-slider-wrapper\\\">\\n <ag-input-range ref=\\\"eSlider\\\"></ag-input-range>\\n <ag-input-number-field ref=\\\"eText\\\"></ag-input-number-field>\\n </div>\\n </div>\";\n __decorate$Z([\n RefSelector('eLabel')\n ], AgSlider.prototype, \"eLabel\", void 0);\n __decorate$Z([\n RefSelector('eSlider')\n ], AgSlider.prototype, \"eSlider\", void 0);\n __decorate$Z([\n RefSelector('eText')\n ], AgSlider.prototype, \"eText\", void 0);\n __decorate$Z([\n PostConstruct\n ], AgSlider.prototype, \"init\", null);\n return AgSlider;\n}(AgAbstractLabel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$X = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgGroupComponent = /** @class */ (function (_super) {\n __extends$X(AgGroupComponent, _super);\n function AgGroupComponent(params) {\n if (params === void 0) { params = {}; }\n var _this = _super.call(this, AgGroupComponent.getTemplate(params)) || this;\n _this.suppressEnabledCheckbox = true;\n _this.suppressOpenCloseIcons = false;\n var title = params.title, enabled = params.enabled, items = params.items, suppressEnabledCheckbox = params.suppressEnabledCheckbox, suppressOpenCloseIcons = params.suppressOpenCloseIcons;\n _this.title = title;\n _this.cssIdentifier = params.cssIdentifier || 'default';\n _this.enabled = enabled != null ? enabled : true;\n _this.items = items || [];\n _this.alignItems = params.alignItems || 'center';\n if (suppressEnabledCheckbox != null) {\n _this.suppressEnabledCheckbox = suppressEnabledCheckbox;\n }\n if (suppressOpenCloseIcons != null) {\n _this.suppressOpenCloseIcons = suppressOpenCloseIcons;\n }\n return _this;\n }\n AgGroupComponent.getTemplate = function (params) {\n var cssIdentifier = params.cssIdentifier || 'default';\n var direction = params.direction || 'vertical';\n return /* html */ \"<div class=\\\"ag-group ag-\" + cssIdentifier + \"-group\\\" role=\\\"presentation\\\">\\n <div class=\\\"ag-group-title-bar ag-\" + cssIdentifier + \"-group-title-bar ag-unselectable\\\" ref=\\\"eTitleBar\\\" role=\\\"button\\\">\\n <span class=\\\"ag-group-title-bar-icon ag-\" + cssIdentifier + \"-group-title-bar-icon\\\" ref=\\\"eGroupOpenedIcon\\\" role=\\\"presentation\\\"></span>\\n <span class=\\\"ag-group-title-bar-icon ag-\" + cssIdentifier + \"-group-title-bar-icon\\\" ref=\\\"eGroupClosedIcon\\\" role=\\\"presentation\\\"></span>\\n <span ref=\\\"eTitle\\\" class=\\\"ag-group-title ag-\" + cssIdentifier + \"-group-title\\\"></span>\\n </div>\\n <div ref=\\\"eToolbar\\\" class=\\\"ag-group-toolbar ag-\" + cssIdentifier + \"-group-toolbar\\\">\\n <ag-checkbox ref=\\\"cbGroupEnabled\\\"></ag-checkbox>\\n </div>\\n <div ref=\\\"eContainer\\\" class=\\\"ag-group-container ag-group-container-\" + direction + \" ag-\" + cssIdentifier + \"-group-container\\\"></div>\\n </div>\";\n };\n AgGroupComponent.prototype.postConstruct = function () {\n if (this.items.length) {\n var initialItems = this.items;\n this.items = [];\n this.addItems(initialItems);\n }\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n this.cbGroupEnabled.setLabel(localeTextFunc('enabled', 'Enabled'));\n if (this.title) {\n this.setTitle(this.title);\n }\n if (this.enabled) {\n this.setEnabled(this.enabled);\n }\n this.setAlignItems(this.alignItems);\n this.hideEnabledCheckbox(this.suppressEnabledCheckbox);\n this.hideOpenCloseIcons(this.suppressOpenCloseIcons);\n this.setupExpandContract();\n this.refreshAriaStatus();\n this.refreshChildDisplay();\n };\n AgGroupComponent.prototype.setupExpandContract = function () {\n var _this = this;\n this.eGroupClosedIcon.appendChild(createIcon('columnSelectClosed', this.gridOptionsService, null));\n this.eGroupOpenedIcon.appendChild(createIcon('columnSelectOpen', this.gridOptionsService, null));\n this.addManagedListener(this.eTitleBar, 'click', function () { return _this.toggleGroupExpand(); });\n this.addManagedListener(this.eTitleBar, 'keydown', function (e) {\n switch (e.key) {\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n e.preventDefault();\n _this.toggleGroupExpand();\n break;\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n e.preventDefault();\n _this.toggleGroupExpand(e.key === KeyCode.RIGHT);\n break;\n }\n });\n };\n AgGroupComponent.prototype.refreshAriaStatus = function () {\n if (!this.suppressOpenCloseIcons) {\n setAriaExpanded(this.eTitleBar, this.expanded);\n }\n };\n AgGroupComponent.prototype.refreshChildDisplay = function () {\n var showIcon = !this.suppressOpenCloseIcons;\n setDisplayed(this.eToolbar, this.expanded && !this.suppressEnabledCheckbox);\n setDisplayed(this.eGroupOpenedIcon, showIcon && this.expanded);\n setDisplayed(this.eGroupClosedIcon, showIcon && !this.expanded);\n };\n AgGroupComponent.prototype.isExpanded = function () {\n return this.expanded;\n };\n AgGroupComponent.prototype.setAlignItems = function (alignment) {\n if (this.alignItems !== alignment) {\n this.removeCssClass(\"ag-group-item-alignment-\" + this.alignItems);\n }\n this.alignItems = alignment;\n var newCls = \"ag-group-item-alignment-\" + this.alignItems;\n this.addCssClass(newCls);\n return this;\n };\n AgGroupComponent.prototype.toggleGroupExpand = function (expanded) {\n if (this.suppressOpenCloseIcons) {\n this.expanded = true;\n this.refreshChildDisplay();\n setDisplayed(this.eContainer, true);\n return this;\n }\n expanded = expanded != null ? expanded : !this.expanded;\n if (this.expanded === expanded) {\n return this;\n }\n this.expanded = expanded;\n this.refreshAriaStatus();\n this.refreshChildDisplay();\n setDisplayed(this.eContainer, expanded);\n this.dispatchEvent({ type: this.expanded ? AgGroupComponent.EVENT_EXPANDED : AgGroupComponent.EVENT_COLLAPSED });\n return this;\n };\n AgGroupComponent.prototype.addItems = function (items) {\n var _this = this;\n items.forEach(function (item) { return _this.addItem(item); });\n };\n AgGroupComponent.prototype.addItem = function (item) {\n var container = this.eContainer;\n var el = item instanceof Component ? item.getGui() : item;\n el.classList.add('ag-group-item', \"ag-\" + this.cssIdentifier + \"-group-item\");\n container.appendChild(el);\n this.items.push(el);\n };\n AgGroupComponent.prototype.hideItem = function (hide, index) {\n var itemToHide = this.items[index];\n setDisplayed(itemToHide, !hide);\n };\n AgGroupComponent.prototype.setTitle = function (title) {\n this.eTitle.innerText = title;\n return this;\n };\n AgGroupComponent.prototype.addCssClassToTitleBar = function (cssClass) {\n this.eTitleBar.classList.add(cssClass);\n };\n AgGroupComponent.prototype.setEnabled = function (enabled, skipToggle) {\n this.enabled = enabled;\n this.refreshDisabledStyles();\n this.toggleGroupExpand(enabled);\n if (!skipToggle) {\n this.cbGroupEnabled.setValue(enabled);\n }\n return this;\n };\n AgGroupComponent.prototype.isEnabled = function () {\n return this.enabled;\n };\n AgGroupComponent.prototype.onEnableChange = function (callbackFn) {\n var _this = this;\n this.cbGroupEnabled.onValueChange(function (newSelection) {\n _this.setEnabled(newSelection, true);\n callbackFn(newSelection);\n });\n return this;\n };\n AgGroupComponent.prototype.hideEnabledCheckbox = function (hide) {\n this.suppressEnabledCheckbox = hide;\n this.refreshChildDisplay();\n this.refreshDisabledStyles();\n return this;\n };\n AgGroupComponent.prototype.hideOpenCloseIcons = function (hide) {\n this.suppressOpenCloseIcons = hide;\n if (hide) {\n this.toggleGroupExpand(true);\n }\n return this;\n };\n AgGroupComponent.prototype.refreshDisabledStyles = function () {\n this.addOrRemoveCssClass('ag-disabled', !this.enabled);\n if (this.suppressEnabledCheckbox && !this.enabled) {\n this.eTitleBar.classList.add('ag-disabled-group-title-bar');\n this.eTitleBar.removeAttribute('tabindex');\n }\n else {\n this.eTitleBar.classList.remove('ag-disabled-group-title-bar');\n this.eTitleBar.setAttribute('tabindex', '0');\n }\n this.eContainer.classList.toggle('ag-disabled-group-container', !this.enabled);\n };\n AgGroupComponent.EVENT_EXPANDED = 'expanded';\n AgGroupComponent.EVENT_COLLAPSED = 'collapsed';\n __decorate$Y([\n RefSelector('eTitleBar')\n ], AgGroupComponent.prototype, \"eTitleBar\", void 0);\n __decorate$Y([\n RefSelector('eGroupOpenedIcon')\n ], AgGroupComponent.prototype, \"eGroupOpenedIcon\", void 0);\n __decorate$Y([\n RefSelector('eGroupClosedIcon')\n ], AgGroupComponent.prototype, \"eGroupClosedIcon\", void 0);\n __decorate$Y([\n RefSelector('eToolbar')\n ], AgGroupComponent.prototype, \"eToolbar\", void 0);\n __decorate$Y([\n RefSelector('cbGroupEnabled')\n ], AgGroupComponent.prototype, \"cbGroupEnabled\", void 0);\n __decorate$Y([\n RefSelector('eTitle')\n ], AgGroupComponent.prototype, \"eTitle\", void 0);\n __decorate$Y([\n RefSelector('eContainer')\n ], AgGroupComponent.prototype, \"eContainer\", void 0);\n __decorate$Y([\n PostConstruct\n ], AgGroupComponent.prototype, \"postConstruct\", null);\n return AgGroupComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$W = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TabGuardClassNames;\n(function (TabGuardClassNames) {\n TabGuardClassNames[\"TAB_GUARD\"] = \"ag-tab-guard\";\n TabGuardClassNames[\"TAB_GUARD_TOP\"] = \"ag-tab-guard-top\";\n TabGuardClassNames[\"TAB_GUARD_BOTTOM\"] = \"ag-tab-guard-bottom\";\n})(TabGuardClassNames || (TabGuardClassNames = {}));\nvar TabGuardCtrl = /** @class */ (function (_super) {\n __extends$W(TabGuardCtrl, _super);\n function TabGuardCtrl(params) {\n var _this = _super.call(this) || this;\n _this.skipTabGuardFocus = false;\n var comp = params.comp, eTopGuard = params.eTopGuard, eBottomGuard = params.eBottomGuard, focusInnerElement = params.focusInnerElement, onFocusIn = params.onFocusIn, onFocusOut = params.onFocusOut, shouldStopEventPropagation = params.shouldStopEventPropagation, onTabKeyDown = params.onTabKeyDown, handleKeyDown = params.handleKeyDown, eFocusableElement = params.eFocusableElement;\n _this.comp = comp;\n _this.eTopGuard = eTopGuard;\n _this.eBottomGuard = eBottomGuard;\n _this.providedFocusInnerElement = focusInnerElement;\n _this.eFocusableElement = eFocusableElement;\n _this.providedFocusIn = onFocusIn;\n _this.providedFocusOut = onFocusOut;\n _this.providedShouldStopEventPropagation = shouldStopEventPropagation;\n _this.providedOnTabKeyDown = onTabKeyDown;\n _this.providedHandleKeyDown = handleKeyDown;\n return _this;\n }\n TabGuardCtrl.prototype.postConstruct = function () {\n var _this = this;\n this.createManagedBean(new ManagedFocusFeature(this.eFocusableElement, {\n shouldStopEventPropagation: function () { return _this.shouldStopEventPropagation(); },\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); },\n onFocusIn: function (e) { return _this.onFocusIn(e); },\n onFocusOut: function (e) { return _this.onFocusOut(e); }\n }));\n this.activateTabGuards();\n [this.eTopGuard, this.eBottomGuard].forEach(function (guard) { return _this.addManagedListener(guard, 'focus', _this.onFocus.bind(_this)); });\n };\n TabGuardCtrl.prototype.handleKeyDown = function (e) {\n if (this.providedHandleKeyDown) {\n this.providedHandleKeyDown(e);\n }\n };\n TabGuardCtrl.prototype.tabGuardsAreActive = function () {\n return !!this.eTopGuard && this.eTopGuard.hasAttribute('tabIndex');\n };\n TabGuardCtrl.prototype.shouldStopEventPropagation = function () {\n if (this.providedShouldStopEventPropagation) {\n return this.providedShouldStopEventPropagation();\n }\n return false;\n };\n TabGuardCtrl.prototype.activateTabGuards = function () {\n this.comp.setTabIndex(this.getGridTabIndex());\n };\n TabGuardCtrl.prototype.deactivateTabGuards = function () {\n this.comp.setTabIndex();\n };\n TabGuardCtrl.prototype.onFocus = function (e) {\n if (this.skipTabGuardFocus) {\n this.skipTabGuardFocus = false;\n return;\n }\n var fromBottom = e.target === this.eBottomGuard;\n if (this.providedFocusInnerElement) {\n this.providedFocusInnerElement(fromBottom);\n }\n else {\n this.focusInnerElement(fromBottom);\n }\n };\n TabGuardCtrl.prototype.onFocusIn = function (e) {\n if (this.providedFocusIn && this.providedFocusIn(e)) {\n return;\n }\n this.deactivateTabGuards();\n };\n TabGuardCtrl.prototype.onFocusOut = function (e) {\n if (this.providedFocusOut && this.providedFocusOut(e)) {\n return;\n }\n if (!this.eFocusableElement.contains(e.relatedTarget)) {\n this.activateTabGuards();\n }\n };\n TabGuardCtrl.prototype.onTabKeyDown = function (e) {\n var _this = this;\n if (this.providedOnTabKeyDown) {\n this.providedOnTabKeyDown(e);\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n var tabGuardsAreActive = this.tabGuardsAreActive();\n if (tabGuardsAreActive) {\n this.deactivateTabGuards();\n }\n var nextRoot = this.getNextFocusableElement(e.shiftKey);\n if (tabGuardsAreActive) {\n // ensure the tab guards are only re-instated once the event has finished processing, to avoid the browser\n // tabbing to the tab guard from inside the component\n setTimeout(function () { return _this.activateTabGuards(); }, 0);\n }\n if (!nextRoot) {\n return;\n }\n nextRoot.focus();\n e.preventDefault();\n };\n TabGuardCtrl.prototype.getGridTabIndex = function () {\n return (this.gridOptionsService.getNum('tabIndex') || 0).toString();\n };\n TabGuardCtrl.prototype.focusInnerElement = function (fromBottom) {\n if (fromBottom === void 0) { fromBottom = false; }\n var focusable = this.focusService.findFocusableElements(this.eFocusableElement);\n if (this.tabGuardsAreActive()) {\n // remove tab guards from this component from list of focusable elements\n focusable.splice(0, 1);\n focusable.splice(focusable.length - 1, 1);\n }\n if (!focusable.length) {\n return;\n }\n focusable[fromBottom ? focusable.length - 1 : 0].focus({ preventScroll: true });\n };\n TabGuardCtrl.prototype.getNextFocusableElement = function (backwards) {\n return this.focusService.findNextFocusableElement(this.eFocusableElement, false, backwards);\n };\n TabGuardCtrl.prototype.forceFocusOutOfContainer = function (up) {\n if (up === void 0) { up = false; }\n var tabGuardToFocus = up ? this.eTopGuard : this.eBottomGuard;\n this.activateTabGuards();\n this.skipTabGuardFocus = true;\n tabGuardToFocus.focus();\n };\n __decorate$X([\n Autowired('focusService')\n ], TabGuardCtrl.prototype, \"focusService\", void 0);\n __decorate$X([\n PostConstruct\n ], TabGuardCtrl.prototype, \"postConstruct\", null);\n return TabGuardCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$V = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read$c = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$a = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$c(arguments[i]));\n return ar;\n};\nvar TabGuardComp = /** @class */ (function (_super) {\n __extends$V(TabGuardComp, _super);\n function TabGuardComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TabGuardComp.prototype.initialiseTabGuard = function (params) {\n this.eTopGuard = this.createTabGuard('top');\n this.eBottomGuard = this.createTabGuard('bottom');\n this.eFocusableElement = this.getFocusableElement();\n var tabGuards = [this.eTopGuard, this.eBottomGuard];\n var compProxy = {\n setTabIndex: function (tabIndex) {\n tabGuards.forEach(function (tabGuard) { return tabIndex != null ? tabGuard.setAttribute('tabIndex', tabIndex) : tabGuard.removeAttribute('tabIndex'); });\n }\n };\n this.addTabGuards(this.eTopGuard, this.eBottomGuard);\n this.tabGuardCtrl = this.createManagedBean(new TabGuardCtrl({\n comp: compProxy,\n eTopGuard: this.eTopGuard,\n eBottomGuard: this.eBottomGuard,\n eFocusableElement: this.eFocusableElement,\n onFocusIn: params.onFocusIn,\n onFocusOut: params.onFocusOut,\n focusInnerElement: params.focusInnerElement,\n handleKeyDown: params.handleKeyDown,\n onTabKeyDown: params.onTabKeyDown,\n shouldStopEventPropagation: params.shouldStopEventPropagation\n }));\n };\n TabGuardComp.prototype.createTabGuard = function (side) {\n var tabGuard = document.createElement('div');\n var cls = side === 'top' ? TabGuardClassNames.TAB_GUARD_TOP : TabGuardClassNames.TAB_GUARD_BOTTOM;\n tabGuard.classList.add(TabGuardClassNames.TAB_GUARD, cls);\n setAriaRole(tabGuard, 'presentation');\n return tabGuard;\n };\n TabGuardComp.prototype.addTabGuards = function (topTabGuard, bottomTabGuard) {\n this.eFocusableElement.insertAdjacentElement('afterbegin', topTabGuard);\n this.eFocusableElement.insertAdjacentElement('beforeend', bottomTabGuard);\n };\n TabGuardComp.prototype.removeAllChildrenExceptTabGuards = function () {\n var tabGuards = [this.eTopGuard, this.eBottomGuard];\n clearElement(this.getFocusableElement());\n this.addTabGuards.apply(this, __spread$a(tabGuards));\n };\n TabGuardComp.prototype.forceFocusOutOfContainer = function (up) {\n if (up === void 0) { up = false; }\n this.tabGuardCtrl.forceFocusOutOfContainer(up);\n };\n TabGuardComp.prototype.appendChild = function (newChild, container) {\n if (!isNodeOrElement(newChild)) {\n newChild = newChild.getGui();\n }\n var bottomTabGuard = this.eBottomGuard;\n if (bottomTabGuard) {\n bottomTabGuard.insertAdjacentElement('beforebegin', newChild);\n }\n else {\n _super.prototype.appendChild.call(this, newChild, container);\n }\n };\n return TabGuardComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$U = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$5 = (undefined && undefined.__assign) || function () {\n __assign$5 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$5.apply(this, arguments);\n};\nvar __decorate$W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgMenuList = /** @class */ (function (_super) {\n __extends$U(AgMenuList, _super);\n function AgMenuList(level) {\n if (level === void 0) { level = 1; }\n var _this = _super.call(this, /* html */ \"<div class=\\\"ag-menu-list\\\" role=\\\"tree\\\"></div>\") || this;\n _this.level = level;\n _this.menuItems = [];\n return _this;\n }\n AgMenuList.prototype.postConstruct = function () {\n var _this = this;\n this.initialiseTabGuard({\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n });\n };\n AgMenuList.prototype.onTabKeyDown = function (e) {\n var parent = this.getParentComponent();\n var parentGui = parent && parent.getGui();\n var isManaged = parentGui && parentGui.classList.contains('ag-focus-managed');\n if (!isManaged) {\n e.preventDefault();\n }\n if (e.shiftKey) {\n this.closeIfIsChild(e);\n }\n };\n AgMenuList.prototype.handleKeyDown = function (e) {\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.RIGHT:\n case KeyCode.DOWN:\n case KeyCode.LEFT:\n e.preventDefault();\n this.handleNavKey(e.key);\n break;\n case KeyCode.ESCAPE:\n var topMenu = this.findTopMenu();\n if (topMenu) {\n this.focusService.focusInto(topMenu.getGui());\n }\n break;\n }\n };\n AgMenuList.prototype.clearActiveItem = function () {\n if (this.activeMenuItem) {\n this.activeMenuItem.deactivate();\n this.activeMenuItem = null;\n }\n };\n AgMenuList.prototype.addMenuItems = function (menuItems) {\n var _this = this;\n if (menuItems == null) {\n return;\n }\n menuItems.forEach(function (menuItemOrString) {\n if (menuItemOrString === 'separator') {\n _this.addSeparator();\n }\n else if (typeof menuItemOrString === 'string') {\n console.warn(\"AG Grid: unrecognised menu item \" + menuItemOrString);\n }\n else {\n _this.addItem(menuItemOrString);\n }\n });\n };\n AgMenuList.prototype.addItem = function (menuItemDef) {\n var _this = this;\n var menuItem = this.createManagedBean(new AgMenuItemComponent(__assign$5(__assign$5({}, menuItemDef), { isAnotherSubMenuOpen: function () { return _this.menuItems.some(function (m) { return m.isSubMenuOpen(); }); } })));\n menuItem.setParentComponent(this);\n setAriaLevel(menuItem.getGui(), this.level);\n this.menuItems.push(menuItem);\n this.appendChild(menuItem.getGui());\n this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (event) {\n _this.dispatchEvent(event);\n });\n this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED, function (event) {\n if (_this.activeMenuItem && _this.activeMenuItem !== event.menuItem) {\n _this.activeMenuItem.deactivate();\n }\n _this.activeMenuItem = event.menuItem;\n });\n };\n AgMenuList.prototype.activateFirstItem = function () {\n var item = this.menuItems.filter(function (currentItem) { return !currentItem.isDisabled(); })[0];\n if (!item) {\n return;\n }\n item.activate();\n };\n AgMenuList.prototype.addSeparator = function () {\n var separatorHtml = /* html */ \"\\n <div class=\\\"ag-menu-separator\\\" aria-hidden=\\\"true\\\">\\n <div class=\\\"ag-menu-separator-part\\\"></div>\\n <div class=\\\"ag-menu-separator-part\\\"></div>\\n <div class=\\\"ag-menu-separator-part\\\"></div>\\n <div class=\\\"ag-menu-separator-part\\\"></div>\\n </div>\";\n this.appendChild(loadTemplate(separatorHtml));\n };\n AgMenuList.prototype.findTopMenu = function () {\n var parent = this.getParentComponent();\n if (!parent && this instanceof AgMenuList) {\n return this;\n }\n while (true) {\n var nextParent = parent && parent.getParentComponent && parent.getParentComponent();\n if (!nextParent || (!(nextParent instanceof AgMenuList || nextParent instanceof AgMenuItemComponent))) {\n break;\n }\n parent = nextParent;\n }\n return parent instanceof AgMenuList ? parent : undefined;\n };\n AgMenuList.prototype.handleNavKey = function (key) {\n switch (key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n var nextItem = this.findNextItem(key === KeyCode.UP);\n if (nextItem && nextItem !== this.activeMenuItem) {\n nextItem.activate();\n }\n return;\n }\n var left = this.gridOptionsService.is('enableRtl') ? KeyCode.RIGHT : KeyCode.LEFT;\n if (key === left) {\n this.closeIfIsChild();\n }\n else {\n this.openChild();\n }\n };\n AgMenuList.prototype.closeIfIsChild = function (e) {\n var parentItem = this.getParentComponent();\n if (parentItem && parentItem instanceof AgMenuItemComponent) {\n if (e) {\n e.preventDefault();\n }\n parentItem.closeSubMenu();\n parentItem.getGui().focus();\n }\n };\n AgMenuList.prototype.openChild = function () {\n if (this.activeMenuItem) {\n this.activeMenuItem.openSubMenu(true);\n }\n };\n AgMenuList.prototype.findNextItem = function (up) {\n var items = this.menuItems.filter(function (item) { return !item.isDisabled(); });\n if (!items.length) {\n return;\n }\n if (!this.activeMenuItem) {\n return up ? last(items) : items[0];\n }\n if (up) {\n items.reverse();\n }\n var nextItem;\n var foundCurrent = false;\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n if (!foundCurrent) {\n if (item === this.activeMenuItem) {\n foundCurrent = true;\n }\n continue;\n }\n nextItem = item;\n break;\n }\n return nextItem || this.activeMenuItem;\n };\n AgMenuList.prototype.destroy = function () {\n this.clearActiveItem();\n _super.prototype.destroy.call(this);\n };\n __decorate$W([\n Autowired('focusService')\n ], AgMenuList.prototype, \"focusService\", void 0);\n __decorate$W([\n PostConstruct\n ], AgMenuList.prototype, \"postConstruct\", null);\n return AgMenuList;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$T = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgMenuPanel = /** @class */ (function (_super) {\n __extends$T(AgMenuPanel, _super);\n function AgMenuPanel(wrappedComponent) {\n var _this = _super.call(this) || this;\n _this.wrappedComponent = wrappedComponent;\n _this.setTemplateFromElement(wrappedComponent.getGui());\n return _this;\n }\n AgMenuPanel.prototype.postConstruct = function () {\n var _this = this;\n this.initialiseTabGuard({\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n });\n };\n AgMenuPanel.prototype.handleKeyDown = function (e) {\n if (e.key === KeyCode.ESCAPE) {\n this.closePanel();\n }\n };\n AgMenuPanel.prototype.onTabKeyDown = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n this.closePanel();\n e.preventDefault();\n };\n AgMenuPanel.prototype.closePanel = function () {\n var menuItem = this.parentComponent;\n menuItem.closeSubMenu();\n setTimeout(function () { return menuItem.getGui().focus(); }, 0);\n };\n __decorate$V([\n PostConstruct\n ], AgMenuPanel.prototype, \"postConstruct\", null);\n return AgMenuPanel;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$S = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgMenuItemComponent = /** @class */ (function (_super) {\n __extends$S(AgMenuItemComponent, _super);\n function AgMenuItemComponent(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n _this.isActive = false;\n _this.subMenuIsOpen = false;\n _this.setTemplate(/* html */ \"<div class=\\\"\" + _this.getClassName() + \"\\\" tabindex=\\\"-1\\\" role=\\\"treeitem\\\"></div>\");\n return _this;\n }\n AgMenuItemComponent.prototype.init = function () {\n var _this = this;\n this.addIcon();\n this.addName();\n this.addShortcut();\n this.addSubMenu();\n this.addTooltip();\n var eGui = this.getGui();\n if (this.params.disabled) {\n this.addCssClass(this.getClassName('disabled'));\n setAriaDisabled(eGui, true);\n }\n else {\n this.addGuiEventListener('click', function (e) { return _this.onItemSelected(e); });\n this.addGuiEventListener('keydown', function (e) {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n e.preventDefault();\n _this.onItemSelected(e);\n }\n });\n this.addGuiEventListener('mousedown', function (e) {\n // Prevent event bubbling to other event handlers such as PopupService triggering\n // premature closing of any open sub-menu popup.\n e.stopPropagation();\n e.preventDefault();\n });\n this.addGuiEventListener('mouseenter', function () { return _this.onMouseEnter(); });\n this.addGuiEventListener('mouseleave', function () { return _this.onMouseLeave(); });\n }\n if (this.params.cssClasses) {\n this.params.cssClasses.forEach(function (it) { return _this.addCssClass(it); });\n }\n };\n AgMenuItemComponent.prototype.isDisabled = function () {\n return !!this.params.disabled;\n };\n AgMenuItemComponent.prototype.openSubMenu = function (activateFirstItem) {\n var _this = this;\n if (activateFirstItem === void 0) { activateFirstItem = false; }\n this.closeSubMenu();\n if (!this.params.subMenu) {\n return;\n }\n var ePopup = loadTemplate(/* html */ \"<div class=\\\"ag-menu\\\" role=\\\"presentation\\\"></div>\");\n var destroySubMenu;\n if (this.params.subMenu instanceof Array) {\n var currentLevel = getAriaLevel(this.getGui());\n var nextLevel = isNaN(currentLevel) ? 1 : (currentLevel + 1);\n var childMenu_1 = this.createBean(new AgMenuList(nextLevel));\n childMenu_1.setParentComponent(this);\n childMenu_1.addMenuItems(this.params.subMenu);\n ePopup.appendChild(childMenu_1.getGui());\n // bubble menu item selected events\n this.addManagedListener(childMenu_1, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (e) { return _this.dispatchEvent(e); });\n childMenu_1.addGuiEventListener('mouseenter', function () { return _this.cancelDeactivate(); });\n destroySubMenu = function () { return _this.destroyBean(childMenu_1); };\n if (activateFirstItem) {\n setTimeout(function () { return childMenu_1.activateFirstItem(); }, 0);\n }\n }\n else {\n var subMenu_1 = this.params.subMenu;\n var menuPanel = this.createBean(new AgMenuPanel(subMenu_1));\n menuPanel.setParentComponent(this);\n var subMenuGui_1 = menuPanel.getGui();\n var mouseEvent_1 = 'mouseenter';\n var mouseEnterListener_1 = function () { return _this.cancelDeactivate(); };\n subMenuGui_1.addEventListener(mouseEvent_1, mouseEnterListener_1);\n destroySubMenu = function () { return subMenuGui_1.removeEventListener(mouseEvent_1, mouseEnterListener_1); };\n ePopup.appendChild(subMenuGui_1);\n if (subMenu_1.afterGuiAttached) {\n setTimeout(function () { return subMenu_1.afterGuiAttached(); }, 0);\n }\n }\n var eGui = this.getGui();\n var positionCallback = this.popupService.positionPopupForMenu.bind(this.popupService, { eventSource: eGui, ePopup: ePopup });\n var translate = this.localeService.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: ePopup,\n positionCallback: positionCallback,\n anchorToElement: eGui,\n ariaLabel: translate('ariaLabelSubMenu', 'SubMenu')\n });\n this.subMenuIsOpen = true;\n setAriaExpanded(eGui, true);\n this.hideSubMenu = function () {\n if (addPopupRes) {\n addPopupRes.hideFunc();\n }\n _this.subMenuIsOpen = false;\n setAriaExpanded(eGui, false);\n destroySubMenu();\n };\n };\n AgMenuItemComponent.prototype.closeSubMenu = function () {\n if (!this.hideSubMenu) {\n return;\n }\n this.hideSubMenu();\n this.hideSubMenu = null;\n setAriaExpanded(this.getGui(), false);\n };\n AgMenuItemComponent.prototype.isSubMenuOpen = function () {\n return this.subMenuIsOpen;\n };\n AgMenuItemComponent.prototype.activate = function (openSubMenu) {\n var _this = this;\n this.cancelActivate();\n if (this.params.disabled) {\n return;\n }\n this.isActive = true;\n this.addCssClass(this.getClassName('active'));\n this.getGui().focus();\n if (openSubMenu && this.params.subMenu) {\n window.setTimeout(function () {\n if (_this.isAlive() && _this.isActive) {\n _this.openSubMenu();\n }\n }, 300);\n }\n this.onItemActivated();\n };\n AgMenuItemComponent.prototype.deactivate = function () {\n this.cancelDeactivate();\n this.removeCssClass(this.getClassName('active'));\n this.isActive = false;\n if (this.subMenuIsOpen) {\n this.hideSubMenu();\n }\n };\n AgMenuItemComponent.prototype.addIcon = function () {\n if (!this.params.checked && !this.params.icon && this.params.isCompact) {\n return;\n }\n var icon = loadTemplate(/* html */ \"<span ref=\\\"eIcon\\\" class=\\\"\" + this.getClassName('part') + \" \" + this.getClassName('icon') + \"\\\" role=\\\"presentation\\\"></span>\");\n if (this.params.checked) {\n icon.appendChild(createIconNoSpan('check', this.gridOptionsService));\n }\n else if (this.params.icon) {\n if (isNodeOrElement(this.params.icon)) {\n icon.appendChild(this.params.icon);\n }\n else if (typeof this.params.icon === 'string') {\n icon.innerHTML = this.params.icon;\n }\n else {\n console.warn('AG Grid: menu item icon must be DOM node or string');\n }\n }\n this.getGui().appendChild(icon);\n };\n AgMenuItemComponent.prototype.addName = function () {\n if (!this.params.name && this.params.isCompact) {\n return;\n }\n var name = loadTemplate(/* html */ \"<span ref=\\\"eName\\\" class=\\\"\" + this.getClassName('part') + \" \" + this.getClassName('text') + \"\\\">\" + (this.params.name || '') + \"</span>\");\n this.getGui().appendChild(name);\n };\n AgMenuItemComponent.prototype.addTooltip = function () {\n if (!this.params.tooltip) {\n return;\n }\n this.tooltip = this.params.tooltip;\n if (this.gridOptionsService.is('enableBrowserTooltips')) {\n this.getGui().setAttribute('title', this.tooltip);\n }\n else {\n this.createManagedBean(new CustomTooltipFeature(this));\n }\n };\n AgMenuItemComponent.prototype.getTooltipParams = function () {\n return {\n location: 'menu',\n value: this.tooltip\n };\n };\n AgMenuItemComponent.prototype.addShortcut = function () {\n if (!this.params.shortcut && this.params.isCompact) {\n return;\n }\n var shortcut = loadTemplate(/* html */ \"<span ref=\\\"eShortcut\\\" class=\\\"\" + this.getClassName('part') + \" \" + this.getClassName('shortcut') + \"\\\">\" + (this.params.shortcut || '') + \"</span>\");\n this.getGui().appendChild(shortcut);\n };\n AgMenuItemComponent.prototype.addSubMenu = function () {\n if (!this.params.subMenu && this.params.isCompact) {\n return;\n }\n var pointer = loadTemplate(/* html */ \"<span ref=\\\"ePopupPointer\\\" class=\\\"\" + this.getClassName('part') + \" \" + this.getClassName('popup-pointer') + \"\\\"></span>\");\n var eGui = this.getGui();\n if (this.params.subMenu) {\n var iconName = this.gridOptionsService.is('enableRtl') ? 'smallLeft' : 'smallRight';\n setAriaExpanded(eGui, false);\n pointer.appendChild(createIconNoSpan(iconName, this.gridOptionsService));\n }\n eGui.appendChild(pointer);\n };\n AgMenuItemComponent.prototype.onItemSelected = function (event) {\n if (this.params.action) {\n this.params.action();\n }\n else {\n this.openSubMenu(event && event.type === 'keydown');\n }\n if (this.params.subMenu && !this.params.action) {\n return;\n }\n var e = {\n type: AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED,\n action: this.params.action,\n checked: this.params.checked,\n cssClasses: this.params.cssClasses,\n disabled: this.params.disabled,\n icon: this.params.icon,\n name: this.params.name,\n shortcut: this.params.shortcut,\n subMenu: this.params.subMenu,\n tooltip: this.params.tooltip,\n event: event\n };\n this.dispatchEvent(e);\n };\n AgMenuItemComponent.prototype.onItemActivated = function () {\n var event = {\n type: AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED,\n menuItem: this,\n };\n this.dispatchEvent(event);\n };\n AgMenuItemComponent.prototype.cancelActivate = function () {\n if (this.activateTimeoutId) {\n window.clearTimeout(this.activateTimeoutId);\n this.activateTimeoutId = 0;\n }\n };\n AgMenuItemComponent.prototype.cancelDeactivate = function () {\n if (this.deactivateTimeoutId) {\n window.clearTimeout(this.deactivateTimeoutId);\n this.deactivateTimeoutId = 0;\n }\n };\n AgMenuItemComponent.prototype.onMouseEnter = function () {\n var _this = this;\n this.cancelDeactivate();\n if (this.params.isAnotherSubMenuOpen()) {\n // wait to see if the user enters the open sub-menu\n this.activateTimeoutId = window.setTimeout(function () { return _this.activate(true); }, AgMenuItemComponent.ACTIVATION_DELAY);\n }\n else {\n // activate immediately\n this.activate(true);\n }\n };\n AgMenuItemComponent.prototype.onMouseLeave = function () {\n var _this = this;\n this.cancelActivate();\n if (this.isSubMenuOpen()) {\n // wait to see if the user enters the sub-menu\n this.deactivateTimeoutId = window.setTimeout(function () { return _this.deactivate(); }, AgMenuItemComponent.ACTIVATION_DELAY);\n }\n else {\n // de-activate immediately\n this.deactivate();\n }\n };\n AgMenuItemComponent.prototype.getClassName = function (suffix) {\n var prefix = this.params.isCompact ? 'ag-compact-menu-option' : 'ag-menu-option';\n return suffix ? prefix + \"-\" + suffix : prefix;\n };\n AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED = 'menuItemSelected';\n AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED = 'menuItemActivated';\n AgMenuItemComponent.ACTIVATION_DELAY = 80;\n __decorate$U([\n Autowired('popupService')\n ], AgMenuItemComponent.prototype, \"popupService\", void 0);\n __decorate$U([\n PostConstruct\n ], AgMenuItemComponent.prototype, \"init\", null);\n return AgMenuItemComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$R = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgPanel = /** @class */ (function (_super) {\n __extends$R(AgPanel, _super);\n function AgPanel(config) {\n var _this = _super.call(this, AgPanel.getTemplate(config)) || this;\n _this.closable = true;\n _this.config = config;\n return _this;\n }\n AgPanel.getTemplate = function (config) {\n var cssIdentifier = (config && config.cssIdentifier) || 'default';\n return /* html */ \"<div class=\\\"ag-panel ag-\" + cssIdentifier + \"-panel\\\" tabindex=\\\"-1\\\">\\n <div ref=\\\"eTitleBar\\\" class=\\\"ag-panel-title-bar ag-\" + cssIdentifier + \"-panel-title-bar ag-unselectable\\\">\\n <span ref=\\\"eTitle\\\" class=\\\"ag-panel-title-bar-title ag-\" + cssIdentifier + \"-panel-title-bar-title\\\"></span>\\n <div ref=\\\"eTitleBarButtons\\\" class=\\\"ag-panel-title-bar-buttons ag-\" + cssIdentifier + \"-panel-title-bar-buttons\\\"></div>\\n </div>\\n <div ref=\\\"eContentWrapper\\\" class=\\\"ag-panel-content-wrapper ag-\" + cssIdentifier + \"-panel-content-wrapper\\\"></div>\\n </div>\";\n };\n AgPanel.prototype.postConstruct = function () {\n var _this = this;\n var _a = this.config, component = _a.component, closable = _a.closable, hideTitleBar = _a.hideTitleBar, title = _a.title, _b = _a.minWidth, minWidth = _b === void 0 ? 250 : _b, width = _a.width, _c = _a.minHeight, minHeight = _c === void 0 ? 250 : _c, height = _a.height, centered = _a.centered, popup = _a.popup, x = _a.x, y = _a.y;\n this.positionableFeature = new PositionableFeature(this.getGui(), {\n minWidth: minWidth, width: width, minHeight: minHeight, height: height, centered: centered, x: x, y: y, popup: popup,\n calculateTopBuffer: function () { return _this.positionableFeature.getHeight() - _this.getBodyHeight(); }\n });\n this.createManagedBean(this.positionableFeature);\n var eGui = this.getGui();\n if (component) {\n this.setBodyComponent(component);\n }\n if (!hideTitleBar) {\n if (title) {\n this.setTitle(title);\n }\n this.setClosable(closable != null ? closable : this.closable);\n }\n else {\n setDisplayed(this.eTitleBar, false);\n }\n this.addManagedListener(this.eTitleBar, 'mousedown', function (e) {\n var eDocument = _this.gridOptionsService.getDocument();\n if (eGui.contains(e.relatedTarget) ||\n eGui.contains(eDocument.activeElement) ||\n _this.eTitleBarButtons.contains(e.target)) {\n e.preventDefault();\n return;\n }\n var focusEl = _this.eContentWrapper.querySelector('button, [href], input, select, textarea, [tabindex]');\n if (focusEl) {\n focusEl.focus();\n }\n });\n if (popup && this.positionableFeature.isPositioned()) {\n return;\n }\n if (this.renderComponent) {\n this.renderComponent();\n }\n this.positionableFeature.initialisePosition();\n this.eContentWrapper.style.height = '0';\n };\n AgPanel.prototype.renderComponent = function () {\n var _this = this;\n var eGui = this.getGui();\n eGui.focus();\n this.close = function () {\n eGui.parentElement.removeChild(eGui);\n _this.destroy();\n };\n };\n AgPanel.prototype.getHeight = function () {\n return this.positionableFeature.getHeight();\n };\n AgPanel.prototype.setHeight = function (height) {\n this.positionableFeature.setHeight(height);\n };\n AgPanel.prototype.getWidth = function () {\n return this.positionableFeature.getWidth();\n };\n AgPanel.prototype.setWidth = function (width) {\n this.positionableFeature.setWidth(width);\n };\n AgPanel.prototype.setClosable = function (closable) {\n if (closable !== this.closable) {\n this.closable = closable;\n }\n if (closable) {\n var closeButtonComp = this.closeButtonComp = new Component(AgPanel.CLOSE_BTN_TEMPLATE);\n this.getContext().createBean(closeButtonComp);\n var eGui = closeButtonComp.getGui();\n var child = createIconNoSpan('close', this.gridOptionsService);\n child.classList.add('ag-panel-title-bar-button-icon');\n eGui.appendChild(child);\n this.addTitleBarButton(closeButtonComp);\n closeButtonComp.addManagedListener(eGui, 'click', this.onBtClose.bind(this));\n }\n else if (this.closeButtonComp) {\n var eGui = this.closeButtonComp.getGui();\n eGui.parentElement.removeChild(eGui);\n this.closeButtonComp = this.destroyBean(this.closeButtonComp);\n }\n };\n AgPanel.prototype.setBodyComponent = function (bodyComponent) {\n bodyComponent.setParentComponent(this);\n this.eContentWrapper.appendChild(bodyComponent.getGui());\n };\n AgPanel.prototype.addTitleBarButton = function (button, position) {\n var eTitleBarButtons = this.eTitleBarButtons;\n var buttons = eTitleBarButtons.children;\n var len = buttons.length;\n if (position == null) {\n position = len;\n }\n position = Math.max(0, Math.min(position, len));\n button.addCssClass('ag-panel-title-bar-button');\n var eGui = button.getGui();\n if (position === 0) {\n eTitleBarButtons.insertAdjacentElement('afterbegin', eGui);\n }\n else if (position === len) {\n eTitleBarButtons.insertAdjacentElement('beforeend', eGui);\n }\n else {\n buttons[position - 1].insertAdjacentElement('afterend', eGui);\n }\n button.setParentComponent(this);\n };\n AgPanel.prototype.getBodyHeight = function () {\n return getInnerHeight(this.eContentWrapper);\n };\n AgPanel.prototype.getBodyWidth = function () {\n return getInnerWidth(this.eContentWrapper);\n };\n AgPanel.prototype.setTitle = function (title) {\n this.eTitle.innerText = title;\n };\n // called when user hits the 'x' in the top right\n AgPanel.prototype.onBtClose = function () {\n this.close();\n };\n AgPanel.prototype.destroy = function () {\n if (this.closeButtonComp) {\n this.closeButtonComp = this.destroyBean(this.closeButtonComp);\n }\n var eGui = this.getGui();\n if (eGui && eGui.offsetParent) {\n this.close();\n }\n _super.prototype.destroy.call(this);\n };\n AgPanel.CLOSE_BTN_TEMPLATE = \"<div class=\\\"ag-button\\\"></div>\";\n __decorate$T([\n RefSelector('eContentWrapper')\n ], AgPanel.prototype, \"eContentWrapper\", void 0);\n __decorate$T([\n RefSelector('eTitleBar')\n ], AgPanel.prototype, \"eTitleBar\", void 0);\n __decorate$T([\n RefSelector('eTitleBarButtons')\n ], AgPanel.prototype, \"eTitleBarButtons\", void 0);\n __decorate$T([\n RefSelector('eTitle')\n ], AgPanel.prototype, \"eTitle\", void 0);\n __decorate$T([\n PostConstruct\n ], AgPanel.prototype, \"postConstruct\", null);\n return AgPanel;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$4 = (undefined && undefined.__assign) || function () {\n __assign$4 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$4.apply(this, arguments);\n};\nvar __decorate$S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgDialog = /** @class */ (function (_super) {\n __extends$Q(AgDialog, _super);\n function AgDialog(config) {\n var _this = _super.call(this, __assign$4(__assign$4({}, config), { popup: true })) || this;\n _this.isMaximizable = false;\n _this.isMaximized = false;\n _this.maximizeListeners = [];\n _this.resizeListenerDestroy = null;\n _this.lastPosition = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n return _this;\n }\n AgDialog.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var _a = this.config, movable = _a.movable, resizable = _a.resizable, maximizable = _a.maximizable;\n this.addCssClass('ag-dialog');\n _super.prototype.postConstruct.call(this);\n this.addManagedListener(eGui, 'focusin', function (e) {\n if (eGui.contains(e.relatedTarget)) {\n return;\n }\n _this.popupService.bringPopupToFront(eGui);\n });\n if (movable) {\n this.setMovable(movable);\n }\n if (maximizable) {\n this.setMaximizable(maximizable);\n }\n if (resizable) {\n this.setResizable(resizable);\n }\n };\n AgDialog.prototype.renderComponent = function () {\n var eGui = this.getGui();\n var _a = this.config, alwaysOnTop = _a.alwaysOnTop, modal = _a.modal, title = _a.title;\n var translate = this.localeService.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: modal,\n eChild: eGui,\n closeOnEsc: true,\n closedCallback: this.destroy.bind(this),\n alwaysOnTop: alwaysOnTop,\n ariaLabel: title || translate('ariaLabelDialog', 'Dialog')\n });\n if (addPopupRes) {\n this.close = addPopupRes.hideFunc;\n }\n };\n AgDialog.prototype.toggleMaximize = function () {\n var position = this.positionableFeature.getPosition();\n if (this.isMaximized) {\n var _a = this.lastPosition, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n this.setWidth(width);\n this.setHeight(height);\n this.positionableFeature.offsetElement(x, y);\n }\n else {\n this.lastPosition.width = this.getWidth();\n this.lastPosition.height = this.getHeight();\n this.lastPosition.x = position.x;\n this.lastPosition.y = position.y;\n this.positionableFeature.offsetElement(0, 0);\n this.setHeight('100%');\n this.setWidth('100%');\n }\n this.isMaximized = !this.isMaximized;\n this.refreshMaximizeIcon();\n };\n AgDialog.prototype.refreshMaximizeIcon = function () {\n setDisplayed(this.maximizeIcon, !this.isMaximized);\n setDisplayed(this.minimizeIcon, this.isMaximized);\n };\n AgDialog.prototype.clearMaximizebleListeners = function () {\n if (this.maximizeListeners.length) {\n this.maximizeListeners.forEach(function (destroyListener) { return destroyListener(); });\n this.maximizeListeners.length = 0;\n }\n if (this.resizeListenerDestroy) {\n this.resizeListenerDestroy();\n this.resizeListenerDestroy = null;\n }\n };\n AgDialog.prototype.destroy = function () {\n this.maximizeButtonComp = this.destroyBean(this.maximizeButtonComp);\n this.clearMaximizebleListeners();\n _super.prototype.destroy.call(this);\n };\n AgDialog.prototype.setResizable = function (resizable) {\n this.positionableFeature.setResizable(resizable);\n };\n AgDialog.prototype.setMovable = function (movable) {\n this.positionableFeature.setMovable(movable, this.eTitleBar);\n };\n AgDialog.prototype.setMaximizable = function (maximizable) {\n var _this = this;\n if (!maximizable) {\n this.clearMaximizebleListeners();\n if (this.maximizeButtonComp) {\n this.destroyBean(this.maximizeButtonComp);\n this.maximizeButtonComp = this.maximizeIcon = this.minimizeIcon = undefined;\n }\n return;\n }\n var eTitleBar = this.eTitleBar;\n if (!eTitleBar || maximizable === this.isMaximizable) {\n return;\n }\n var maximizeButtonComp = this.buildMaximizeAndMinimizeElements();\n this.refreshMaximizeIcon();\n maximizeButtonComp.addManagedListener(maximizeButtonComp.getGui(), 'click', this.toggleMaximize.bind(this));\n this.addTitleBarButton(maximizeButtonComp, 0);\n this.maximizeListeners.push(this.addManagedListener(eTitleBar, 'dblclick', this.toggleMaximize.bind(this)));\n this.resizeListenerDestroy = this.addManagedListener(this, 'resize', function () {\n _this.isMaximized = false;\n _this.refreshMaximizeIcon();\n });\n };\n AgDialog.prototype.buildMaximizeAndMinimizeElements = function () {\n var maximizeButtonComp = this.maximizeButtonComp =\n this.createBean(new Component(/* html */ \"<div class=\\\"ag-dialog-button\\\"></span>\"));\n var eGui = maximizeButtonComp.getGui();\n this.maximizeIcon = createIconNoSpan('maximize', this.gridOptionsService);\n eGui.appendChild(this.maximizeIcon);\n this.maximizeIcon.classList.add('ag-panel-title-bar-button-icon');\n this.minimizeIcon = createIconNoSpan('minimize', this.gridOptionsService);\n eGui.appendChild(this.minimizeIcon);\n this.minimizeIcon.classList.add('ag-panel-title-bar-button-icon');\n return maximizeButtonComp;\n };\n __decorate$S([\n Autowired('popupService')\n ], AgDialog.prototype, \"popupService\", void 0);\n return AgDialog;\n}(AgPanel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$P = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$3 = (undefined && undefined.__assign) || function () {\n __assign$3 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$3.apply(this, arguments);\n};\nvar __decorate$R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$b = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$9 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$b(arguments[i]));\n return ar;\n};\nvar FocusService = /** @class */ (function (_super) {\n __extends$P(FocusService, _super);\n function FocusService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FocusService_1 = FocusService;\n /**\n * Adds a gridCore to the list of the gridCores monitoring Keyboard Mode\n * in a specific HTMLDocument.\n *\n * @param doc {Document} - The Document containing the gridCore.\n * @param gridCore {GridComp} - The GridCore to be monitored.\n */\n FocusService.addKeyboardModeEvents = function (doc, controller) {\n var docControllers = FocusService_1.instancesMonitored.get(doc);\n if (docControllers && docControllers.length > 0) {\n if (docControllers.indexOf(controller) === -1) {\n docControllers.push(controller);\n }\n }\n else {\n FocusService_1.instancesMonitored.set(doc, [controller]);\n doc.addEventListener('keydown', FocusService_1.toggleKeyboardMode);\n doc.addEventListener('mousedown', FocusService_1.toggleKeyboardMode);\n }\n };\n /**\n * Removes a gridCore from the list of the gridCores monitoring Keyboard Mode\n * in a specific HTMLDocument.\n *\n * @param doc {Document} - The Document containing the gridCore.\n * @param gridCore {GridComp} - The GridCore to be removed.\n */\n FocusService.removeKeyboardModeEvents = function (doc, controller) {\n var docControllers = FocusService_1.instancesMonitored.get(doc);\n var newControllers = [];\n if (docControllers && docControllers.length) {\n newControllers = __spread$9(docControllers).filter(function (currentGridCore) { return currentGridCore !== controller; });\n FocusService_1.instancesMonitored.set(doc, newControllers);\n }\n if (newControllers.length === 0) {\n doc.removeEventListener('keydown', FocusService_1.toggleKeyboardMode);\n doc.removeEventListener('mousedown', FocusService_1.toggleKeyboardMode);\n }\n };\n /**\n * This method will be called by `keydown` and `mousedown` events on all Documents monitoring\n * KeyboardMode. It will then fire a KEYBOARD_FOCUS, MOUSE_FOCUS on each gridCore present in\n * the Document allowing each gridCore to maintain a state for KeyboardMode.\n *\n * @param event {KeyboardEvent | MouseEvent | TouchEvent} - The event triggered.\n */\n FocusService.toggleKeyboardMode = function (event) {\n var isKeyboardActive = FocusService_1.keyboardModeActive;\n var isKeyboardEvent = event.type === 'keydown';\n if (isKeyboardEvent) {\n // the following keys should not toggle keyboard mode.\n if (event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n }\n if (isKeyboardActive && isKeyboardEvent || !isKeyboardActive && !isKeyboardEvent) {\n return;\n }\n FocusService_1.keyboardModeActive = isKeyboardEvent;\n var doc = event.target.ownerDocument;\n if (!doc) {\n return;\n }\n var controllersForDoc = FocusService_1.instancesMonitored.get(doc);\n if (controllersForDoc) {\n controllersForDoc.forEach(function (controller) {\n controller.dispatchEvent({ type: isKeyboardEvent ? Events.EVENT_KEYBOARD_FOCUS : Events.EVENT_MOUSE_FOCUS });\n });\n }\n };\n FocusService.prototype.init = function () {\n var _this = this;\n var clearFocusedCellListener = this.clearFocusedCell.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, clearFocusedCellListener);\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverythingChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, clearFocusedCellListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, clearFocusedCellListener);\n this.ctrlsService.whenReady(function (p) {\n _this.gridCtrl = p.gridCtrl;\n var doc = _this.gridOptionsService.getDocument();\n FocusService_1.addKeyboardModeEvents(doc, _this.gridCtrl);\n _this.addDestroyFunc(function () { return _this.unregisterGridCompController(_this.gridCtrl); });\n });\n };\n FocusService.prototype.unregisterGridCompController = function (gridCompController) {\n var doc = this.gridOptionsService.getDocument();\n FocusService_1.removeKeyboardModeEvents(doc, gridCompController);\n };\n FocusService.prototype.onColumnEverythingChanged = function () {\n // if the columns change, check and see if this column still exists. if it does, then\n // we can keep the focused cell. if it doesn't, then we need to drop the focused cell.\n if (!this.focusedCellPosition) {\n return;\n }\n var col = this.focusedCellPosition.column;\n var colFromColumnModel = this.columnModel.getGridColumn(col.getId());\n if (col !== colFromColumnModel) {\n this.clearFocusedCell();\n }\n };\n FocusService.prototype.isKeyboardMode = function () {\n return FocusService_1.keyboardModeActive;\n };\n // we check if the browser is focusing something, and if it is, and\n // it's the cell we think is focused, then return the cell. so this\n // methods returns the cell if a) we think it has focus and b) the\n // browser thinks it has focus. this then returns nothing if we\n // first focus a cell, then second click outside the grid, as then the\n // grid cell will still be focused as far as the grid is concerned,\n // however the browser focus will have moved somewhere else.\n FocusService.prototype.getFocusCellToUseAfterRefresh = function () {\n var eDocument = this.gridOptionsService.getDocument();\n if (this.gridOptionsService.is('suppressFocusAfterRefresh') || !this.focusedCellPosition) {\n return null;\n }\n // we check that the browser is actually focusing on the grid, if it is not, then\n // we have nothing to worry about. we check for ROW data, as this covers both focused Rows (for Full Width Rows)\n // and Cells (covers cells as cells live in rows)\n if (this.isDomDataMissingInHierarchy(eDocument.activeElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL)) {\n return null;\n }\n return this.focusedCellPosition;\n };\n FocusService.prototype.getFocusHeaderToUseAfterRefresh = function () {\n var eDocument = this.gridOptionsService.getDocument();\n if (this.gridOptionsService.is('suppressFocusAfterRefresh') || !this.focusedHeaderPosition) {\n return null;\n }\n // we check that the browser is actually focusing on the grid, if it is not, then\n // we have nothing to worry about\n if (this.isDomDataMissingInHierarchy(eDocument.activeElement, AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL)) {\n return null;\n }\n return this.focusedHeaderPosition;\n };\n FocusService.prototype.isDomDataMissingInHierarchy = function (eBrowserCell, key) {\n var ePointer = eBrowserCell;\n while (ePointer) {\n var data = this.gridOptionsService.getDomData(ePointer, key);\n if (data) {\n return false;\n }\n ePointer = ePointer.parentNode;\n }\n return true;\n };\n FocusService.prototype.getFocusedCell = function () {\n return this.focusedCellPosition;\n };\n FocusService.prototype.getFocusEventParams = function () {\n var _a = this.focusedCellPosition, rowIndex = _a.rowIndex, rowPinned = _a.rowPinned, column = _a.column;\n var params = {\n rowIndex: rowIndex,\n rowPinned: rowPinned,\n column: column,\n isFullWidthCell: false\n };\n var rowCtrl = this.rowRenderer.getRowByPosition({ rowIndex: rowIndex, rowPinned: rowPinned });\n if (rowCtrl) {\n params.isFullWidthCell = rowCtrl.isFullWidth();\n }\n return params;\n };\n FocusService.prototype.clearFocusedCell = function () {\n if (this.focusedCellPosition == null) {\n return;\n }\n var event = __assign$3({ type: Events.EVENT_CELL_FOCUS_CLEARED }, this.getFocusEventParams());\n this.focusedCellPosition = null;\n this.eventService.dispatchEvent(event);\n };\n FocusService.prototype.setFocusedCell = function (params) {\n var column = params.column, rowIndex = params.rowIndex, rowPinned = params.rowPinned, _a = params.forceBrowserFocus, forceBrowserFocus = _a === void 0 ? false : _a, _b = params.preventScrollOnBrowserFocus, preventScrollOnBrowserFocus = _b === void 0 ? false : _b;\n var gridColumn = this.columnModel.getGridColumn(column);\n // if column doesn't exist, then blank the focused cell and return. this can happen when user sets new columns,\n // and the focused cell is in a column that no longer exists. after columns change, the grid refreshes and tries\n // to re-focus the focused cell.\n if (!gridColumn) {\n this.focusedCellPosition = null;\n return;\n }\n this.focusedCellPosition = gridColumn ? {\n rowIndex: rowIndex,\n rowPinned: makeNull(rowPinned),\n column: gridColumn\n } : null;\n var event = __assign$3(__assign$3({ type: Events.EVENT_CELL_FOCUSED }, this.getFocusEventParams()), { forceBrowserFocus: forceBrowserFocus,\n preventScrollOnBrowserFocus: preventScrollOnBrowserFocus, floating: null });\n this.eventService.dispatchEvent(event);\n };\n FocusService.prototype.isCellFocused = function (cellPosition) {\n if (this.focusedCellPosition == null) {\n return false;\n }\n return this.focusedCellPosition.column === cellPosition.column &&\n this.isRowFocused(cellPosition.rowIndex, cellPosition.rowPinned);\n };\n FocusService.prototype.isRowNodeFocused = function (rowNode) {\n return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n };\n FocusService.prototype.isHeaderWrapperFocused = function (headerCtrl) {\n if (this.focusedHeaderPosition == null) {\n return false;\n }\n var column = headerCtrl.getColumnGroupChild();\n var headerRowIndex = headerCtrl.getRowIndex();\n var pinned = headerCtrl.getPinned();\n var _a = this.focusedHeaderPosition, focusedColumn = _a.column, focusedHeaderRowIndex = _a.headerRowIndex;\n return column === focusedColumn &&\n headerRowIndex === focusedHeaderRowIndex &&\n pinned == focusedColumn.getPinned();\n };\n FocusService.prototype.clearFocusedHeader = function () {\n this.focusedHeaderPosition = null;\n };\n FocusService.prototype.getFocusedHeader = function () {\n return this.focusedHeaderPosition;\n };\n FocusService.prototype.setFocusedHeader = function (headerRowIndex, column) {\n this.focusedHeaderPosition = { headerRowIndex: headerRowIndex, column: column };\n };\n FocusService.prototype.focusHeaderPosition = function (params) {\n var direction = params.direction, fromTab = params.fromTab, allowUserOverride = params.allowUserOverride, event = params.event;\n var headerPosition = params.headerPosition;\n if (allowUserOverride) {\n var currentPosition = this.getFocusedHeader();\n var headerRowCount = this.headerNavigationService.getHeaderRowCount();\n if (fromTab) {\n var userFunc = this.gridOptionsService.getCallback('tabToNextHeader');\n if (userFunc) {\n var params_1 = {\n backwards: direction === 'Before',\n previousHeaderPosition: currentPosition,\n nextHeaderPosition: headerPosition,\n headerRowCount: headerRowCount,\n };\n headerPosition = userFunc(params_1);\n }\n }\n else {\n var userFunc = this.gridOptionsService.getCallback('navigateToNextHeader');\n if (userFunc && event) {\n var params_2 = {\n key: event.key,\n previousHeaderPosition: currentPosition,\n nextHeaderPosition: headerPosition,\n headerRowCount: headerRowCount,\n event: event,\n };\n headerPosition = userFunc(params_2);\n }\n }\n }\n if (!headerPosition) {\n return false;\n }\n if (headerPosition.headerRowIndex === -1) {\n return this.focusGridView(headerPosition.column);\n }\n this.headerNavigationService.scrollToColumn(headerPosition.column, direction);\n var headerRowContainerCtrl = this.ctrlsService.getHeaderRowContainerCtrl(headerPosition.column.getPinned());\n // this will automatically call the setFocusedHeader method above\n var focusSuccess = headerRowContainerCtrl.focusHeader(headerPosition.headerRowIndex, headerPosition.column, event);\n return focusSuccess;\n };\n FocusService.prototype.focusFirstHeader = function () {\n var firstColumn = this.columnModel.getAllDisplayedColumns()[0];\n if (!firstColumn) {\n return false;\n }\n if (firstColumn.getParent()) {\n firstColumn = this.columnModel.getColumnGroupAtLevel(firstColumn, 0);\n }\n return this.focusHeaderPosition({\n headerPosition: { headerRowIndex: 0, column: firstColumn }\n });\n };\n FocusService.prototype.focusLastHeader = function (event) {\n var headerRowIndex = this.headerNavigationService.getHeaderRowCount() - 1;\n var column = last(this.columnModel.getAllDisplayedColumns());\n return this.focusHeaderPosition({\n headerPosition: { headerRowIndex: headerRowIndex, column: column },\n event: event\n });\n };\n FocusService.prototype.isAnyCellFocused = function () {\n return !!this.focusedCellPosition;\n };\n FocusService.prototype.isRowFocused = function (rowIndex, floating) {\n if (this.focusedCellPosition == null) {\n return false;\n }\n return this.focusedCellPosition.rowIndex === rowIndex && this.focusedCellPosition.rowPinned === makeNull(floating);\n };\n FocusService.prototype.findFocusableElements = function (rootNode, exclude, onlyUnmanaged) {\n if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }\n var focusableString = FOCUSABLE_SELECTOR;\n var excludeString = FOCUSABLE_EXCLUDE;\n if (exclude) {\n excludeString += ', ' + exclude;\n }\n if (onlyUnmanaged) {\n excludeString += ', [tabindex=\"-1\"]';\n }\n var nodes = Array.prototype.slice.apply(rootNode.querySelectorAll(focusableString));\n var excludeNodes = Array.prototype.slice.apply(rootNode.querySelectorAll(excludeString));\n if (!excludeNodes.length) {\n return nodes;\n }\n var diff = function (a, b) { return a.filter(function (element) { return b.indexOf(element) === -1; }); };\n return diff(nodes, excludeNodes);\n };\n FocusService.prototype.focusInto = function (rootNode, up, onlyUnmanaged) {\n if (up === void 0) { up = false; }\n if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }\n var focusableElements = this.findFocusableElements(rootNode, null, onlyUnmanaged);\n var toFocus = up ? last(focusableElements) : focusableElements[0];\n if (toFocus) {\n toFocus.focus({ preventScroll: true });\n return true;\n }\n return false;\n };\n FocusService.prototype.findFocusableElementBeforeTabGuard = function (rootNode, referenceElement) {\n if (!referenceElement) {\n return null;\n }\n var focusableElements = this.findFocusableElements(rootNode);\n var referenceIndex = focusableElements.indexOf(referenceElement);\n if (referenceIndex === -1) {\n return null;\n }\n var lastTabGuardIndex = -1;\n for (var i = referenceIndex - 1; i >= 0; i--) {\n if (focusableElements[i].classList.contains(TabGuardClassNames.TAB_GUARD_TOP)) {\n lastTabGuardIndex = i;\n break;\n }\n }\n if (lastTabGuardIndex <= 0) {\n return null;\n }\n return focusableElements[lastTabGuardIndex - 1];\n };\n FocusService.prototype.findNextFocusableElement = function (rootNode, onlyManaged, backwards) {\n if (rootNode === void 0) { rootNode = this.eGridDiv; }\n var focusable = this.findFocusableElements(rootNode, onlyManaged ? ':not([tabindex=\"-1\"])' : null);\n var eDocument = this.gridOptionsService.getDocument();\n var activeEl = eDocument.activeElement;\n var currentIndex;\n if (onlyManaged) {\n currentIndex = focusable.findIndex(function (el) { return el.contains(activeEl); });\n }\n else {\n currentIndex = focusable.indexOf(activeEl);\n }\n var nextIndex = currentIndex + (backwards ? -1 : 1);\n if (nextIndex < 0 || nextIndex >= focusable.length) {\n return null;\n }\n return focusable[nextIndex];\n };\n FocusService.prototype.isTargetUnderManagedComponent = function (rootNode, target) {\n if (!target) {\n return false;\n }\n var managedContainers = rootNode.querySelectorAll(\".\" + ManagedFocusFeature.FOCUS_MANAGED_CLASS);\n if (!managedContainers.length) {\n return false;\n }\n for (var i = 0; i < managedContainers.length; i++) {\n if (managedContainers[i].contains(target)) {\n return true;\n }\n }\n return false;\n };\n FocusService.prototype.findTabbableParent = function (node, limit) {\n if (limit === void 0) { limit = 5; }\n var counter = 0;\n while (node && getTabIndex(node) === null && ++counter <= limit) {\n node = node.parentElement;\n }\n if (getTabIndex(node) === null) {\n return null;\n }\n return node;\n };\n FocusService.prototype.focusGridView = function (column, backwards) {\n // if suppressCellFocus is `true`, it means the user does not want to\n // navigate between the cells using tab. Instead, we put focus on either\n // the header or after the grid, depending on whether tab or shift-tab was pressed.\n if (this.gridOptionsService.is('suppressCellFocus')) {\n if (backwards) {\n return this.focusLastHeader();\n }\n return this.focusNextGridCoreContainer(false);\n }\n var nextRow = backwards\n ? this.rowPositionUtils.getLastRow()\n : this.rowPositionUtils.getFirstRow();\n if (!nextRow) {\n return false;\n }\n var rowIndex = nextRow.rowIndex, rowPinned = nextRow.rowPinned;\n var focusedHeader = this.getFocusedHeader();\n if (!column && focusedHeader) {\n column = focusedHeader.column;\n }\n if (rowIndex == null || !column) {\n return false;\n }\n this.navigationService.ensureCellVisible({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n this.setFocusedCell({\n rowIndex: rowIndex,\n column: column,\n rowPinned: makeNull(rowPinned),\n forceBrowserFocus: true\n });\n if (this.rangeService) {\n var cellPosition = { rowIndex: rowIndex, rowPinned: rowPinned, column: column };\n this.rangeService.setRangeToCell(cellPosition);\n }\n return true;\n };\n FocusService.prototype.focusNextGridCoreContainer = function (backwards, forceOut) {\n if (forceOut === void 0) { forceOut = false; }\n if (!forceOut && this.gridCtrl.focusNextInnerContainer(backwards)) {\n return true;\n }\n if (forceOut || (!backwards && !this.gridCtrl.isDetailGrid())) {\n this.gridCtrl.forceFocusOutOfContainer(backwards);\n }\n return false;\n };\n var FocusService_1;\n FocusService.AG_KEYBOARD_FOCUS = 'ag-keyboard-focus';\n FocusService.keyboardModeActive = false;\n FocusService.instancesMonitored = new Map();\n __decorate$R([\n Autowired('eGridDiv')\n ], FocusService.prototype, \"eGridDiv\", void 0);\n __decorate$R([\n Autowired('columnModel')\n ], FocusService.prototype, \"columnModel\", void 0);\n __decorate$R([\n Autowired('headerNavigationService')\n ], FocusService.prototype, \"headerNavigationService\", void 0);\n __decorate$R([\n Autowired('rowRenderer')\n ], FocusService.prototype, \"rowRenderer\", void 0);\n __decorate$R([\n Autowired('rowPositionUtils')\n ], FocusService.prototype, \"rowPositionUtils\", void 0);\n __decorate$R([\n Optional('rangeService')\n ], FocusService.prototype, \"rangeService\", void 0);\n __decorate$R([\n Autowired('navigationService')\n ], FocusService.prototype, \"navigationService\", void 0);\n __decorate$R([\n Autowired('ctrlsService')\n ], FocusService.prototype, \"ctrlsService\", void 0);\n __decorate$R([\n PostConstruct\n ], FocusService.prototype, \"init\", null);\n FocusService = FocusService_1 = __decorate$R([\n Bean('focusService')\n ], FocusService);\n return FocusService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$O = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$a = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$8 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$a(arguments[i]));\n return ar;\n};\nvar DIRECTION;\n(function (DIRECTION) {\n DIRECTION[DIRECTION[\"vertical\"] = 0] = \"vertical\";\n DIRECTION[DIRECTION[\"horizontal\"] = 1] = \"horizontal\";\n})(DIRECTION || (DIRECTION = {}));\nvar instanceIdSeq = 0;\nvar PopupService = /** @class */ (function (_super) {\n __extends$O(PopupService, _super);\n function PopupService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.popupList = [];\n return _this;\n }\n PopupService_1 = PopupService;\n PopupService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.gridCtrl = p.gridCtrl;\n _this.addManagedListener(_this.gridCtrl, Events.EVENT_KEYBOARD_FOCUS, function () {\n _this.popupList.forEach(function (popup) { return popup.element.classList.add(FocusService.AG_KEYBOARD_FOCUS); });\n });\n _this.addManagedListener(_this.gridCtrl, Events.EVENT_MOUSE_FOCUS, function () {\n _this.popupList.forEach(function (popup) { return popup.element.classList.remove(FocusService.AG_KEYBOARD_FOCUS); });\n });\n });\n };\n PopupService.prototype.getPopupParent = function () {\n var ePopupParent = this.gridOptionsService.get('popupParent');\n if (ePopupParent) {\n return ePopupParent;\n }\n return this.gridCtrl.getGui();\n };\n PopupService.prototype.positionPopupForMenu = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var parentRect = this.getParentRect();\n var y = this.keepXYWithinBounds(params.ePopup, sourceRect.top - parentRect.top, DIRECTION.vertical);\n var minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;\n params.ePopup.style.minWidth = minWidth + \"px\";\n var widthOfParent = parentRect.right - parentRect.left;\n var maxX = widthOfParent - minWidth;\n // the x position of the popup depends on RTL or LTR. for normal cases, LTR, we put the child popup\n // to the right, unless it doesn't fit and we then put it to the left. for RTL it's the other way around,\n // we try place it first to the left, and then if not to the right.\n var x;\n if (this.gridOptionsService.is('enableRtl')) {\n // for RTL, try left first\n x = xLeftPosition();\n if (x < 0) {\n x = xRightPosition();\n }\n if (x > maxX) {\n x = 0;\n }\n }\n else {\n // for LTR, try right first\n x = xRightPosition();\n if (x > maxX) {\n x = xLeftPosition();\n }\n if (x < 0) {\n x = 0;\n }\n }\n params.ePopup.style.left = x + \"px\";\n params.ePopup.style.top = y + \"px\";\n function xRightPosition() {\n return sourceRect.right - parentRect.left - 2;\n }\n function xLeftPosition() {\n return sourceRect.left - parentRect.left - minWidth;\n }\n };\n PopupService.prototype.positionPopupUnderMouseEvent = function (params) {\n var _this = this;\n var ePopup = params.ePopup, nudgeX = params.nudgeX, nudgeY = params.nudgeY, skipObserver = params.skipObserver;\n this.positionPopup({\n ePopup: ePopup,\n nudgeX: nudgeX,\n nudgeY: nudgeY,\n keepWithinBounds: true,\n skipObserver: skipObserver,\n updatePosition: function () { return _this.calculatePointerAlign(params.mouseEvent); },\n postProcessCallback: function () { return _this.callPostProcessPopup(params.type, params.ePopup, null, params.mouseEvent, params.column, params.rowNode); }\n });\n };\n PopupService.prototype.calculatePointerAlign = function (e) {\n var parentRect = this.getParentRect();\n return {\n x: e.clientX - parentRect.left,\n y: e.clientY - parentRect.top\n };\n };\n PopupService.prototype.positionPopupByComponent = function (params) {\n var _this = this;\n var sourceRect = params.eventSource.getBoundingClientRect();\n var alignSide = params.alignSide || 'left';\n var position = params.position || 'over';\n var parentRect = this.getParentRect();\n var updatePosition = function () {\n var x = sourceRect.left - parentRect.left;\n if (alignSide === 'right') {\n x -= (params.ePopup.offsetWidth - sourceRect.width);\n }\n var y = position === 'over'\n ? (sourceRect.top - parentRect.top)\n : (sourceRect.top - parentRect.top + sourceRect.height);\n return { x: x, y: y };\n };\n this.positionPopup({\n ePopup: params.ePopup,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n keepWithinBounds: params.keepWithinBounds,\n updatePosition: updatePosition,\n postProcessCallback: function () { return _this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode); }\n });\n };\n PopupService.prototype.callPostProcessPopup = function (type, ePopup, eventSource, mouseEvent, column, rowNode) {\n var callback = this.gridOptionsService.getCallback('postProcessPopup');\n if (callback) {\n var params = {\n column: column,\n rowNode: rowNode,\n ePopup: ePopup,\n type: type,\n eventSource: eventSource,\n mouseEvent: mouseEvent\n };\n callback(params);\n }\n };\n PopupService.prototype.positionPopup = function (params) {\n var _this = this;\n var ePopup = params.ePopup, keepWithinBounds = params.keepWithinBounds, nudgeX = params.nudgeX, nudgeY = params.nudgeY, skipObserver = params.skipObserver, updatePosition = params.updatePosition;\n var lastSize = { width: 0, height: 0 };\n var updatePopupPosition = function (fromResizeObserver) {\n if (fromResizeObserver === void 0) { fromResizeObserver = false; }\n var _a = updatePosition(), x = _a.x, y = _a.y;\n if (fromResizeObserver &&\n ePopup.clientWidth === lastSize.width &&\n ePopup.clientHeight === lastSize.height) {\n return;\n }\n lastSize.width = ePopup.clientWidth;\n lastSize.height = ePopup.clientHeight;\n if (nudgeX) {\n x += nudgeX;\n }\n if (nudgeY) {\n y += nudgeY;\n }\n // if popup is overflowing to the bottom, move it up\n if (keepWithinBounds) {\n x = _this.keepXYWithinBounds(ePopup, x, DIRECTION.horizontal);\n y = _this.keepXYWithinBounds(ePopup, y, DIRECTION.vertical);\n }\n ePopup.style.left = x + \"px\";\n ePopup.style.top = y + \"px\";\n if (params.postProcessCallback) {\n params.postProcessCallback();\n }\n };\n updatePopupPosition();\n // Mouse tracking will recalculate positioning when moving, so won't need to recalculate here\n if (!skipObserver) {\n // Since rendering popup contents can be asynchronous, use a resize observer to\n // reposition the popup after initial updates to the size of the contents\n var resizeObserverDestroyFunc_1 = this.resizeObserverService.observeResize(ePopup, function () { return updatePopupPosition(true); });\n // Only need to reposition when first open, so can clean up after a bit of time\n setTimeout(function () { return resizeObserverDestroyFunc_1(); }, PopupService_1.WAIT_FOR_POPUP_CONTENT_RESIZE);\n }\n };\n PopupService.prototype.getActivePopups = function () {\n return this.popupList.map(function (popup) { return popup.element; });\n };\n PopupService.prototype.getPopupList = function () {\n return this.popupList;\n };\n PopupService.prototype.getParentRect = function () {\n // subtract the popup parent borders, because popupParent.getBoundingClientRect\n // returns the rect outside the borders, but the 0,0 coordinate for absolute\n // positioning is inside the border, leading the popup to be off by the width\n // of the border\n var eDocument = this.gridOptionsService.getDocument();\n var popupParent = this.getPopupParent();\n if (popupParent === eDocument.body) {\n popupParent = eDocument.documentElement;\n }\n else if (getComputedStyle(popupParent).position === 'static') {\n popupParent = popupParent.offsetParent;\n }\n var style = getComputedStyle(popupParent);\n var bounds = popupParent.getBoundingClientRect();\n return {\n top: bounds.top + parseFloat(style.borderTopWidth) || 0,\n left: bounds.left + parseFloat(style.borderLeftWidth) || 0,\n right: bounds.right + parseFloat(style.borderRightWidth) || 0,\n bottom: bounds.bottom + parseFloat(style.borderBottomWidth) || 0,\n };\n };\n PopupService.prototype.keepXYWithinBounds = function (ePopup, position, direction) {\n var isVertical = direction === DIRECTION.vertical;\n var sizeProperty = isVertical ? 'clientHeight' : 'clientWidth';\n var anchorProperty = isVertical ? 'top' : 'left';\n var offsetProperty = isVertical ? 'offsetHeight' : 'offsetWidth';\n var scrollPositionProperty = isVertical ? 'scrollTop' : 'scrollLeft';\n var eDocument = this.gridOptionsService.getDocument();\n var docElement = eDocument.documentElement;\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n var isBody = popupParent === eDocument.body;\n var offsetSize = ePopup[offsetProperty];\n var getSize = isVertical ? getAbsoluteHeight : getAbsoluteWidth;\n var sizeOfParent = isBody ? (getSize(docElement) + docElement[scrollPositionProperty]) : popupParent[sizeProperty];\n if (isBody) {\n sizeOfParent -= Math.abs(documentRect[anchorProperty] - parentRect[anchorProperty]);\n }\n var max = sizeOfParent - offsetSize;\n return Math.min(Math.max(position, 0), Math.abs(max));\n };\n PopupService.prototype.keepPopupPositionedRelativeTo = function (params) {\n var _this = this;\n var eParent = this.getPopupParent();\n var parentRect = eParent.getBoundingClientRect();\n var sourceRect = params.element.getBoundingClientRect();\n var initialDiffTop = parentRect.top - sourceRect.top;\n var initialDiffLeft = parentRect.left - sourceRect.left;\n var lastDiffTop = initialDiffTop;\n var lastDiffLeft = initialDiffLeft;\n var topPx = params.ePopup.style.top;\n var top = parseInt(topPx.substring(0, topPx.length - 1), 10);\n var leftPx = params.ePopup.style.left;\n var left = parseInt(leftPx.substring(0, leftPx.length - 1), 10);\n return new AgPromise(function (resolve) {\n _this.getFrameworkOverrides().setInterval(function () {\n var pRect = eParent.getBoundingClientRect();\n var sRect = params.element.getBoundingClientRect();\n var elementNotInDom = sRect.top == 0 && sRect.left == 0 && sRect.height == 0 && sRect.width == 0;\n if (elementNotInDom) {\n params.hidePopup();\n return;\n }\n var currentDiffTop = pRect.top - sRect.top;\n if (currentDiffTop != lastDiffTop) {\n var newTop = _this.keepXYWithinBounds(params.ePopup, top + initialDiffTop - currentDiffTop, DIRECTION.vertical);\n params.ePopup.style.top = newTop + \"px\";\n }\n lastDiffTop = currentDiffTop;\n var currentDiffLeft = pRect.left - sRect.left;\n if (currentDiffLeft != lastDiffLeft) {\n var newLeft = _this.keepXYWithinBounds(params.ePopup, left + initialDiffLeft - currentDiffLeft, DIRECTION.horizontal);\n params.ePopup.style.left = newLeft + \"px\";\n }\n lastDiffLeft = currentDiffLeft;\n }, 200).then(function (intervalId) {\n var result = function () {\n if (intervalId != null) {\n window.clearInterval(intervalId);\n }\n };\n resolve(result);\n });\n });\n };\n PopupService.prototype.addPopup = function (params) {\n var _a;\n var _this = this;\n var modal = params.modal, eChild = params.eChild, closeOnEsc = params.closeOnEsc, closedCallback = params.closedCallback, click = params.click, alwaysOnTop = params.alwaysOnTop, afterGuiAttached = params.afterGuiAttached, positionCallback = params.positionCallback, anchorToElement = params.anchorToElement, ariaLabel = params.ariaLabel;\n var eDocument = this.gridOptionsService.getDocument();\n var destroyPositionTracker = new AgPromise(function (resolve) { return resolve(function () { }); });\n if (!eDocument) {\n console.warn('AG Grid: could not find the document, document is empty');\n return { hideFunc: function () { }, stopAnchoringPromise: destroyPositionTracker };\n }\n var pos = this.popupList.findIndex(function (popup) { return popup.element === eChild; });\n if (pos !== -1) {\n var popup = this.popupList[pos];\n return { hideFunc: popup.hideFunc, stopAnchoringPromise: popup.stopAnchoringPromise };\n }\n var ePopupParent = this.getPopupParent();\n if (eChild.style.top == null) {\n eChild.style.top = '0px';\n }\n if (eChild.style.left == null) {\n eChild.style.left = '0px';\n }\n // add env CSS class to child, in case user provided a popup parent, which means\n // theme class may be missing\n var eWrapper = document.createElement('div');\n var allThemes = this.environment.getTheme().allThemes;\n if (allThemes.length) {\n (_a = eWrapper.classList).add.apply(_a, __spread$8(allThemes));\n }\n eWrapper.classList.add('ag-popup');\n eChild.classList.add(this.gridOptionsService.is('enableRtl') ? 'ag-rtl' : 'ag-ltr', 'ag-popup-child');\n if (!eChild.hasAttribute('role')) {\n setAriaRole(eChild, 'dialog');\n }\n setAriaLabel(eChild, ariaLabel);\n if (this.focusService.isKeyboardMode()) {\n eChild.classList.add(FocusService.AG_KEYBOARD_FOCUS);\n }\n eWrapper.appendChild(eChild);\n ePopupParent.appendChild(eWrapper);\n if (alwaysOnTop) {\n this.setAlwaysOnTop(eWrapper, true);\n }\n else {\n this.bringPopupToFront(eWrapper);\n }\n var popupHidden = false;\n var hidePopupOnKeyboardEvent = function (event) {\n if (!eWrapper.contains(eDocument.activeElement)) {\n return;\n }\n var key = event.key;\n if (key === KeyCode.ESCAPE) {\n hidePopup({ keyboardEvent: event });\n }\n };\n var hidePopupOnMouseEvent = function (event) { return hidePopup({ mouseEvent: event }); };\n var hidePopupOnTouchEvent = function (event) { return hidePopup({ touchEvent: event }); };\n var hidePopup = function (popupParams) {\n if (popupParams === void 0) { popupParams = {}; }\n var mouseEvent = popupParams.mouseEvent, touchEvent = popupParams.touchEvent, keyboardEvent = popupParams.keyboardEvent;\n if (\n // we don't hide popup if the event was on the child, or any\n // children of this child\n _this.isEventFromCurrentPopup({ mouseEvent: mouseEvent, touchEvent: touchEvent }, eChild) ||\n // if the event to close is actually the open event, then ignore it\n _this.isEventSameChainAsOriginalEvent({ originalMouseEvent: click, mouseEvent: mouseEvent, touchEvent: touchEvent }) ||\n // this method should only be called once. the client can have different\n // paths, each one wanting to close, so this method may be called multiple times.\n popupHidden) {\n return;\n }\n popupHidden = true;\n ePopupParent.removeChild(eWrapper);\n eDocument.removeEventListener('keydown', hidePopupOnKeyboardEvent);\n eDocument.removeEventListener('mousedown', hidePopupOnMouseEvent);\n eDocument.removeEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.removeEventListener('contextmenu', hidePopupOnMouseEvent);\n _this.eventService.removeEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n if (closedCallback) {\n closedCallback(mouseEvent || touchEvent || keyboardEvent);\n }\n _this.popupList = _this.popupList.filter(function (popup) { return popup.element !== eChild; });\n if (destroyPositionTracker) {\n destroyPositionTracker.then(function (destroyFunc) { return destroyFunc && destroyFunc(); });\n }\n };\n if (afterGuiAttached) {\n afterGuiAttached({ hidePopup: hidePopup });\n }\n // if we add these listeners now, then the current mouse\n // click will be included, which we don't want\n window.setTimeout(function () {\n if (closeOnEsc) {\n eDocument.addEventListener('keydown', hidePopupOnKeyboardEvent);\n }\n if (modal) {\n eDocument.addEventListener('mousedown', hidePopupOnMouseEvent);\n _this.eventService.addEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n eDocument.addEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.addEventListener('contextmenu', hidePopupOnMouseEvent);\n }\n }, 0);\n if (positionCallback) {\n positionCallback();\n }\n if (anchorToElement) {\n // keeps popup positioned under created, eg if context menu, if user scrolls\n // using touchpad and the cell moves, it moves the popup to keep it with the cell.\n destroyPositionTracker = this.keepPopupPositionedRelativeTo({\n element: anchorToElement,\n ePopup: eChild,\n hidePopup: hidePopup\n });\n }\n this.popupList.push({\n element: eChild,\n wrapper: eWrapper,\n hideFunc: hidePopup,\n stopAnchoringPromise: destroyPositionTracker,\n instanceId: instanceIdSeq++,\n isAnchored: !!anchorToElement\n });\n return {\n hideFunc: hidePopup,\n stopAnchoringPromise: destroyPositionTracker\n };\n };\n PopupService.prototype.hasAnchoredPopup = function () {\n return this.popupList.some(function (popup) { return popup.isAnchored; });\n };\n PopupService.prototype.isEventFromCurrentPopup = function (params, target) {\n var mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;\n var event = mouseEvent ? mouseEvent : touchEvent;\n if (!event) {\n return false;\n }\n var indexOfThisChild = this.popupList.findIndex(function (popup) { return popup.element === target; });\n if (indexOfThisChild === -1) {\n return false;\n }\n for (var i = indexOfThisChild; i < this.popupList.length; i++) {\n var popup = this.popupList[i];\n if (isElementInEventPath(popup.element, event)) {\n return true;\n }\n }\n // if the user did not write their own Custom Element to be rendered as popup\n // and this component has an additional popup element, they should have the\n // `ag-custom-component-popup` class to be detected as part of the Custom Component\n return this.isElementWithinCustomPopup(event.target);\n };\n PopupService.prototype.isElementWithinCustomPopup = function (el) {\n var eDocument = this.gridOptionsService.getDocument();\n while (el && el !== eDocument.body) {\n if (el.classList.contains('ag-custom-component-popup') || el.parentElement === null) {\n return true;\n }\n el = el.parentElement;\n }\n return false;\n };\n // in some browsers, the context menu event can be fired before the click event, which means\n // the context menu event could open the popup, but then the click event closes it straight away.\n PopupService.prototype.isEventSameChainAsOriginalEvent = function (params) {\n var originalMouseEvent = params.originalMouseEvent, mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;\n // we check the coordinates of the event, to see if it's the same event. there is a 1 / 1000 chance that\n // the event is a different event, however that is an edge case that is not very relevant (the user clicking\n // twice on the same location isn't a normal path).\n // event could be mouse event or touch event.\n var mouseEventOrTouch = null;\n if (mouseEvent) {\n // mouse event can be used direction, it has coordinates\n mouseEventOrTouch = mouseEvent;\n }\n else if (touchEvent) {\n // touch event doesn't have coordinates, need it's touch object\n mouseEventOrTouch = touchEvent.touches[0];\n }\n if (mouseEventOrTouch && originalMouseEvent) {\n // for x, allow 4px margin, to cover iPads, where touch (which opens menu) is followed\n // by browser click (when you finger up, touch is interrupted as click in browser)\n var screenX_1 = mouseEvent ? mouseEvent.screenX : 0;\n var screenY_1 = mouseEvent ? mouseEvent.screenY : 0;\n var xMatch = Math.abs(originalMouseEvent.screenX - screenX_1) < 5;\n var yMatch = Math.abs(originalMouseEvent.screenY - screenY_1) < 5;\n if (xMatch && yMatch) {\n return true;\n }\n }\n return false;\n };\n PopupService.prototype.getWrapper = function (ePopup) {\n while (!ePopup.classList.contains('ag-popup') && ePopup.parentElement) {\n ePopup = ePopup.parentElement;\n }\n return ePopup.classList.contains('ag-popup') ? ePopup : null;\n };\n PopupService.prototype.setAlwaysOnTop = function (ePopup, alwaysOnTop) {\n var eWrapper = this.getWrapper(ePopup);\n if (!eWrapper) {\n return;\n }\n eWrapper.classList.toggle('ag-always-on-top', !!alwaysOnTop);\n if (alwaysOnTop) {\n this.bringPopupToFront(eWrapper);\n }\n };\n PopupService.prototype.bringPopupToFront = function (ePopup) {\n var parent = this.getPopupParent();\n var popupList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup'));\n var popupLen = popupList.length;\n var alwaysOnTopList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup.ag-always-on-top'));\n var onTopLength = alwaysOnTopList.length;\n var eWrapper = this.getWrapper(ePopup);\n if (!eWrapper || popupLen <= 1 || !parent.contains(ePopup)) {\n return;\n }\n var pos = popupList.indexOf(eWrapper);\n var innerEls = eWrapper.querySelectorAll('div');\n var innerElsScrollMap = [];\n innerEls.forEach(function (el) {\n if (el.scrollTop !== 0) {\n innerElsScrollMap.push([el, el.scrollTop]);\n }\n });\n if (onTopLength) {\n var isPopupAlwaysOnTop = eWrapper.classList.contains('ag-always-on-top');\n if (isPopupAlwaysOnTop) {\n if (pos !== popupLen - 1) {\n last(alwaysOnTopList).insertAdjacentElement('afterend', eWrapper);\n }\n }\n else if (pos !== popupLen - onTopLength - 1) {\n alwaysOnTopList[0].insertAdjacentElement('beforebegin', eWrapper);\n }\n }\n else if (pos !== popupLen - 1) {\n last(popupList).insertAdjacentElement('afterend', eWrapper);\n }\n while (innerElsScrollMap.length) {\n var currentEl = innerElsScrollMap.pop();\n currentEl[0].scrollTop = currentEl[1];\n }\n var params = {\n type: 'popupToFront',\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n eWrapper: eWrapper\n };\n this.eventService.dispatchEvent(params);\n };\n var PopupService_1;\n PopupService.WAIT_FOR_POPUP_CONTENT_RESIZE = 200;\n __decorate$Q([\n Autowired('focusService')\n ], PopupService.prototype, \"focusService\", void 0);\n __decorate$Q([\n Autowired('ctrlsService')\n ], PopupService.prototype, \"ctrlsService\", void 0);\n __decorate$Q([\n Autowired('resizeObserverService')\n ], PopupService.prototype, \"resizeObserverService\", void 0);\n __decorate$Q([\n PostConstruct\n ], PopupService.prototype, \"postConstruct\", null);\n PopupService = PopupService_1 = __decorate$Q([\n Bean('popupService')\n ], PopupService);\n return PopupService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$N = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar VirtualList = /** @class */ (function (_super) {\n __extends$N(VirtualList, _super);\n function VirtualList(cssIdentifier, ariaRole, listName) {\n if (cssIdentifier === void 0) { cssIdentifier = 'default'; }\n if (ariaRole === void 0) { ariaRole = 'listbox'; }\n var _this = _super.call(this, VirtualList.getTemplate(cssIdentifier)) || this;\n _this.cssIdentifier = cssIdentifier;\n _this.ariaRole = ariaRole;\n _this.listName = listName;\n _this.renderedRows = new Map();\n _this.rowHeight = 20;\n return _this;\n }\n VirtualList.prototype.postConstruct = function () {\n var _this = this;\n this.addScrollListener();\n this.rowHeight = this.getItemHeight();\n this.addResizeObserver();\n this.initialiseTabGuard({\n onFocusIn: function (e) { return _this.onFocusIn(e); },\n onFocusOut: function (e) { return _this.onFocusOut(e); },\n focusInnerElement: function (fromBottom) { return _this.focusInnerElement(fromBottom); },\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n });\n this.setAriaProperties();\n this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, this.onGridStylesChanged.bind(this));\n };\n VirtualList.prototype.onGridStylesChanged = function () {\n this.rowHeight = this.getItemHeight();\n this.refresh();\n };\n VirtualList.prototype.setAriaProperties = function () {\n var translate = this.localeService.getLocaleTextFunc();\n var listName = translate('ariaDefaultListName', this.listName || 'List');\n var ariaEl = this.eContainer;\n setAriaRole(ariaEl, this.ariaRole);\n setAriaLabel(ariaEl, listName);\n };\n VirtualList.prototype.addResizeObserver = function () {\n var _this = this;\n var listener = function () { return _this.drawVirtualRows(); };\n var destroyObserver = this.resizeObserverService.observeResize(this.getGui(), listener);\n this.addDestroyFunc(destroyObserver);\n };\n VirtualList.prototype.focusInnerElement = function (fromBottom) {\n this.focusRow(fromBottom ? this.model.getRowCount() - 1 : 0);\n };\n VirtualList.prototype.onFocusIn = function (e) {\n var target = e.target;\n if (target.classList.contains('ag-virtual-list-item')) {\n this.lastFocusedRowIndex = getAriaPosInSet(target) - 1;\n }\n return false;\n };\n VirtualList.prototype.onFocusOut = function (e) {\n if (!this.getFocusableElement().contains(e.relatedTarget)) {\n this.lastFocusedRowIndex = null;\n }\n return false;\n };\n VirtualList.prototype.handleKeyDown = function (e) {\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n if (this.navigate(e.key === KeyCode.UP)) {\n e.preventDefault();\n }\n break;\n }\n };\n VirtualList.prototype.onTabKeyDown = function (e) {\n if (this.navigate(e.shiftKey)) {\n e.preventDefault();\n }\n else {\n this.forceFocusOutOfContainer(e.shiftKey);\n }\n };\n VirtualList.prototype.navigate = function (up) {\n if (this.lastFocusedRowIndex == null) {\n return false;\n }\n var nextRow = this.lastFocusedRowIndex + (up ? -1 : 1);\n if (nextRow < 0 || nextRow >= this.model.getRowCount()) {\n return false;\n }\n this.focusRow(nextRow);\n return true;\n };\n VirtualList.prototype.getLastFocusedRow = function () {\n return this.lastFocusedRowIndex;\n };\n VirtualList.prototype.focusRow = function (rowNumber) {\n var _this = this;\n this.ensureIndexVisible(rowNumber);\n window.setTimeout(function () {\n if (!_this.isAlive()) {\n return;\n }\n var renderedRow = _this.renderedRows.get(rowNumber);\n if (renderedRow) {\n renderedRow.eDiv.focus();\n }\n }, 10);\n };\n VirtualList.prototype.getComponentAt = function (rowIndex) {\n var comp = this.renderedRows.get(rowIndex);\n return comp && comp.rowComponent;\n };\n VirtualList.prototype.forEachRenderedRow = function (func) {\n this.renderedRows.forEach(function (value, key) { return func(value.rowComponent, key); });\n };\n VirtualList.getTemplate = function (cssIdentifier) {\n return /* html */ \"\\n <div class=\\\"ag-virtual-list-viewport ag-\" + cssIdentifier + \"-virtual-list-viewport\\\" role=\\\"presentation\\\">\\n <div class=\\\"ag-virtual-list-container ag-\" + cssIdentifier + \"-virtual-list-container\\\" ref=\\\"eContainer\\\"></div>\\n </div>\";\n };\n VirtualList.prototype.getItemHeight = function () {\n return this.environment.getListItemHeight();\n };\n VirtualList.prototype.ensureIndexVisible = function (index) {\n var lastRow = this.model.getRowCount();\n if (typeof index !== 'number' || index < 0 || index >= lastRow) {\n console.warn('AG Grid: invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n var rowTopPixel = index * this.rowHeight;\n var rowBottomPixel = rowTopPixel + this.rowHeight;\n var eGui = this.getGui();\n var viewportTopPixel = eGui.scrollTop;\n var viewportHeight = eGui.offsetHeight;\n var viewportBottomPixel = viewportTopPixel + viewportHeight;\n var viewportScrolledPastRow = viewportTopPixel > rowTopPixel;\n var viewportScrolledBeforeRow = viewportBottomPixel < rowBottomPixel;\n if (viewportScrolledPastRow) {\n // if row is before, scroll up with row at top\n eGui.scrollTop = rowTopPixel;\n }\n else if (viewportScrolledBeforeRow) {\n // if row is below, scroll down with row at bottom\n var newScrollPosition = rowBottomPixel - viewportHeight;\n eGui.scrollTop = newScrollPosition;\n }\n };\n VirtualList.prototype.setComponentCreator = function (componentCreator) {\n this.componentCreator = componentCreator;\n };\n VirtualList.prototype.setComponentUpdater = function (componentUpdater) {\n this.componentUpdater = componentUpdater;\n };\n VirtualList.prototype.getRowHeight = function () {\n return this.rowHeight;\n };\n VirtualList.prototype.getScrollTop = function () {\n return this.getGui().scrollTop;\n };\n VirtualList.prototype.setRowHeight = function (rowHeight) {\n this.rowHeight = rowHeight;\n this.refresh();\n };\n VirtualList.prototype.refresh = function (softRefresh) {\n var _this = this;\n if (this.model == null || !this.isAlive()) {\n return;\n }\n var rowCount = this.model.getRowCount();\n this.eContainer.style.height = rowCount * this.rowHeight + \"px\";\n // ensure height is applied before attempting to redraw rows\n waitUntil(function () { return _this.eContainer.clientHeight >= rowCount * _this.rowHeight; }, function () {\n if (!_this.isAlive()) {\n return;\n }\n if (_this.canSoftRefresh(softRefresh)) {\n _this.drawVirtualRows(true);\n }\n else {\n _this.clearVirtualRows();\n _this.drawVirtualRows();\n }\n });\n };\n VirtualList.prototype.canSoftRefresh = function (softRefresh) {\n return !!(softRefresh && this.renderedRows.size && typeof this.model.areRowsEqual === 'function' && this.componentUpdater);\n };\n VirtualList.prototype.clearVirtualRows = function () {\n var _this = this;\n this.renderedRows.forEach(function (_, rowIndex) { return _this.removeRow(rowIndex); });\n };\n VirtualList.prototype.drawVirtualRows = function (softRefresh) {\n if (!this.isAlive()) {\n return;\n }\n var gui = this.getGui();\n var topPixel = gui.scrollTop;\n var bottomPixel = topPixel + gui.offsetHeight;\n var firstRow = Math.floor(topPixel / this.rowHeight);\n var lastRow = Math.floor(bottomPixel / this.rowHeight);\n this.ensureRowsRendered(firstRow, lastRow, softRefresh);\n };\n VirtualList.prototype.ensureRowsRendered = function (start, finish, softRefresh) {\n var _this = this;\n // remove any rows that are no longer required\n this.renderedRows.forEach(function (_, rowIndex) {\n if ((rowIndex < start || rowIndex > finish) && rowIndex !== _this.lastFocusedRowIndex) {\n _this.removeRow(rowIndex);\n }\n });\n if (softRefresh) {\n // refresh any existing rows\n this.refreshRows();\n }\n // insert any required new rows\n for (var rowIndex = start; rowIndex <= finish; rowIndex++) {\n if (this.renderedRows.has(rowIndex)) {\n continue;\n }\n // check this row actually exists (in case overflow buffer window exceeds real data)\n if (rowIndex < this.model.getRowCount()) {\n this.insertRow(rowIndex);\n }\n }\n };\n VirtualList.prototype.insertRow = function (rowIndex) {\n var _this = this;\n var value = this.model.getRow(rowIndex);\n var eDiv = document.createElement('div');\n eDiv.classList.add('ag-virtual-list-item', \"ag-\" + this.cssIdentifier + \"-virtual-list-item\");\n setAriaRole(eDiv, this.ariaRole === 'tree' ? 'treeitem' : 'option');\n setAriaSetSize(eDiv, this.model.getRowCount());\n setAriaPosInSet(eDiv, rowIndex + 1);\n eDiv.setAttribute('tabindex', '-1');\n if (typeof this.model.isRowSelected === 'function') {\n var isSelected = this.model.isRowSelected(rowIndex);\n setAriaSelected(eDiv, !!isSelected);\n setAriaChecked(eDiv, isSelected);\n }\n eDiv.style.height = this.rowHeight + \"px\";\n eDiv.style.top = this.rowHeight * rowIndex + \"px\";\n var rowComponent = this.componentCreator(value, eDiv);\n rowComponent.addGuiEventListener('focusin', function () { return _this.lastFocusedRowIndex = rowIndex; });\n eDiv.appendChild(rowComponent.getGui());\n // keep the DOM order consistent with the order of the rows\n if (this.renderedRows.has(rowIndex - 1)) {\n this.renderedRows.get(rowIndex - 1).eDiv.insertAdjacentElement('afterend', eDiv);\n }\n else if (this.renderedRows.has(rowIndex + 1)) {\n this.renderedRows.get(rowIndex + 1).eDiv.insertAdjacentElement('beforebegin', eDiv);\n }\n else {\n this.eContainer.appendChild(eDiv);\n }\n this.renderedRows.set(rowIndex, { rowComponent: rowComponent, eDiv: eDiv, value: value });\n };\n VirtualList.prototype.removeRow = function (rowIndex) {\n var component = this.renderedRows.get(rowIndex);\n this.eContainer.removeChild(component.eDiv);\n this.destroyBean(component.rowComponent);\n this.renderedRows.delete(rowIndex);\n };\n VirtualList.prototype.refreshRows = function () {\n var _this = this;\n var rowCount = this.model.getRowCount();\n this.renderedRows.forEach(function (row, rowIndex) {\n var _a, _b;\n if (rowIndex >= rowCount) {\n _this.removeRow(rowIndex);\n }\n else {\n var newValue = _this.model.getRow(rowIndex);\n if ((_b = (_a = _this.model).areRowsEqual) === null || _b === void 0 ? void 0 : _b.call(_a, row.value, newValue)) {\n _this.componentUpdater(newValue, row.rowComponent);\n }\n else {\n // to be replaced later\n _this.removeRow(rowIndex);\n }\n }\n });\n };\n VirtualList.prototype.addScrollListener = function () {\n var _this = this;\n this.addGuiEventListener('scroll', function () { return _this.drawVirtualRows(); }, { passive: true });\n };\n VirtualList.prototype.setModel = function (model) {\n this.model = model;\n };\n VirtualList.prototype.destroy = function () {\n if (!this.isAlive()) {\n return;\n }\n this.clearVirtualRows();\n _super.prototype.destroy.call(this);\n };\n __decorate$P([\n Autowired('resizeObserverService')\n ], VirtualList.prototype, \"resizeObserverService\", void 0);\n __decorate$P([\n RefSelector('eContainer')\n ], VirtualList.prototype, \"eContainer\", void 0);\n __decorate$P([\n PostConstruct\n ], VirtualList.prototype, \"postConstruct\", null);\n return VirtualList;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar OUTSIDE_ANGULAR_EVENTS = ['mouseover', 'mouseout', 'mouseenter', 'mouseleave'];\nvar PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\n/** The base frameworks, eg React & Angular, override this bean with implementations specific to their requirement. */\nvar VanillaFrameworkOverrides = /** @class */ (function () {\n function VanillaFrameworkOverrides() {\n this.isOutsideAngular = function (eventType) { return includes(OUTSIDE_ANGULAR_EVENTS, eventType); };\n }\n // for Vanilla JS, we use simple timeout\n VanillaFrameworkOverrides.prototype.setTimeout = function (action, timeout) {\n window.setTimeout(action, timeout);\n };\n VanillaFrameworkOverrides.prototype.setInterval = function (action, timeout) {\n return new AgPromise(function (resolve) {\n resolve(window.setInterval(action, timeout));\n });\n };\n // for Vanilla JS, we just add the event to the element\n VanillaFrameworkOverrides.prototype.addEventListener = function (element, type, listener, useCapture) {\n var isPassive = includes(PASSIVE_EVENTS, type);\n element.addEventListener(type, listener, { capture: !!useCapture, passive: isPassive });\n };\n // for Vanilla JS, we just execute the listener\n VanillaFrameworkOverrides.prototype.dispatchEvent = function (eventType, listener, global) {\n listener();\n };\n VanillaFrameworkOverrides.prototype.frameworkComponent = function (name) {\n return null;\n };\n VanillaFrameworkOverrides.prototype.isFrameworkComponent = function (comp) {\n return false;\n };\n return VanillaFrameworkOverrides;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$M = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$9 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$7 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$9(arguments[i]));\n return ar;\n};\nvar CellNavigationService = /** @class */ (function (_super) {\n __extends$M(CellNavigationService, _super);\n function CellNavigationService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // returns null if no cell to focus on, ie at the end of the grid\n CellNavigationService.prototype.getNextCellToFocus = function (key, focusedCell, ctrlPressed) {\n if (ctrlPressed === void 0) { ctrlPressed = false; }\n if (ctrlPressed) {\n return this.getNextCellToFocusWithCtrlPressed(key, focusedCell);\n }\n return this.getNextCellToFocusWithoutCtrlPressed(key, focusedCell);\n };\n CellNavigationService.prototype.getNextCellToFocusWithCtrlPressed = function (key, focusedCell) {\n var upKey = key === KeyCode.UP;\n var downKey = key === KeyCode.DOWN;\n var leftKey = key === KeyCode.LEFT;\n var column;\n var rowIndex;\n if (upKey || downKey) {\n rowIndex = upKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();\n column = focusedCell.column;\n }\n else {\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var isRtl = this.gridOptionsService.is('enableRtl');\n rowIndex = focusedCell.rowIndex;\n column = leftKey !== isRtl ? allColumns[0] : last(allColumns);\n }\n return {\n rowIndex: rowIndex,\n rowPinned: null,\n column: column\n };\n };\n CellNavigationService.prototype.getNextCellToFocusWithoutCtrlPressed = function (key, focusedCell) {\n // starting with the provided cell, we keep moving until we find a cell we can\n // focus on.\n var pointer = focusedCell;\n var finished = false;\n // finished will be true when either:\n // a) cell found that we can focus on\n // b) run out of cells (ie the method returns null)\n while (!finished) {\n switch (key) {\n case KeyCode.UP:\n pointer = this.getCellAbove(pointer);\n break;\n case KeyCode.DOWN:\n pointer = this.getCellBelow(pointer);\n break;\n case KeyCode.RIGHT:\n if (this.gridOptionsService.is('enableRtl')) {\n pointer = this.getCellToLeft(pointer);\n }\n else {\n pointer = this.getCellToRight(pointer);\n }\n break;\n case KeyCode.LEFT:\n if (this.gridOptionsService.is('enableRtl')) {\n pointer = this.getCellToRight(pointer);\n }\n else {\n pointer = this.getCellToLeft(pointer);\n }\n break;\n default:\n pointer = null;\n console.warn('AG Grid: unknown key for navigation ' + key);\n break;\n }\n if (pointer) {\n finished = this.isCellGoodToFocusOn(pointer);\n }\n else {\n finished = true;\n }\n }\n return pointer;\n };\n CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {\n var column = gridCell.column;\n var rowNode;\n switch (gridCell.rowPinned) {\n case 'top':\n rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);\n break;\n case 'bottom':\n rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);\n break;\n default:\n rowNode = this.rowModel.getRow(gridCell.rowIndex);\n break;\n }\n if (!rowNode) {\n return false;\n }\n var suppressNavigable = column.isSuppressNavigable(rowNode);\n return !suppressNavigable;\n };\n CellNavigationService.prototype.getCellToLeft = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToLeft = this.columnModel.getDisplayedColBefore(lastCell.column);\n if (!colToLeft) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToLeft,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getCellToRight = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToRight = this.columnModel.getDisplayedColAfter(lastCell.column);\n // if already on right, do nothing\n if (!colToRight) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToRight,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getRowBelow = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n if (this.isLastRowInContainer(rowPosition)) {\n switch (pinned) {\n case 'bottom':\n // never any rows after pinned bottom\n return null;\n case 'top':\n // if on last row of pinned top, then next row is main body (if rows exist),\n // otherwise it's the pinned bottom\n if (this.rowModel.isRowsToRender()) {\n return { rowIndex: this.paginationProxy.getPageFirstRow(), rowPinned: null };\n }\n if (this.pinnedRowModel.isRowsToRender('bottom')) {\n return { rowIndex: 0, rowPinned: 'bottom' };\n }\n return null;\n default:\n // if in the main body, then try pinned bottom, otherwise return nothing\n if (this.pinnedRowModel.isRowsToRender('bottom')) {\n return { rowIndex: 0, rowPinned: 'bottom' };\n }\n return null;\n }\n }\n var rowNode = this.rowModel.getRow(rowPosition.rowIndex);\n var nextStickyPosition = this.getNextStickyPosition(rowNode);\n if (nextStickyPosition) {\n return nextStickyPosition;\n }\n return { rowIndex: index + 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getNextStickyPosition = function (rowNode, up) {\n if (!this.gridOptionsService.is('groupRowsSticky') || !rowNode || !rowNode.sticky) {\n return;\n }\n var stickyRowCtrls = __spread$7(this.rowRenderer.getStickyTopRowCtrls()).sort(function (a, b) { return a.getRowNode().rowIndex - b.getRowNode().rowIndex; });\n var diff = up ? -1 : 1;\n var idx = stickyRowCtrls.findIndex(function (ctrl) { return ctrl.getRowNode().rowIndex === rowNode.rowIndex; });\n var nextCtrl = stickyRowCtrls[idx + diff];\n if (nextCtrl) {\n return { rowIndex: nextCtrl.getRowNode().rowIndex, rowPinned: null };\n }\n };\n CellNavigationService.prototype.getCellBelow = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowBelow = this.getRowBelow(lastCell);\n if (rowBelow) {\n return {\n rowIndex: rowBelow.rowIndex,\n column: lastCell.column,\n rowPinned: rowBelow.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.isLastRowInContainer = function (rowPosition) {\n var pinned = rowPosition.rowPinned;\n var index = rowPosition.rowIndex;\n if (pinned === 'top') {\n var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return lastTopIndex <= index;\n }\n if (pinned === 'bottom') {\n var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;\n return lastBottomIndex <= index;\n }\n var lastBodyIndex = this.paginationProxy.getPageLastRow();\n return lastBodyIndex <= index;\n };\n CellNavigationService.prototype.getRowAbove = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n var isFirstRow = pinned ? index === 0 : index === this.paginationProxy.getPageFirstRow();\n // if already on top row, do nothing\n if (isFirstRow) {\n if (pinned === 'top') {\n return null;\n }\n if (!pinned) {\n if (this.pinnedRowModel.isRowsToRender('top')) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n // last floating bottom\n if (this.rowModel.isRowsToRender()) {\n return this.getLastBodyCell();\n }\n if (this.pinnedRowModel.isRowsToRender('top')) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n var rowNode = this.rowModel.getRow(rowPosition.rowIndex);\n var nextStickyPosition = this.getNextStickyPosition(rowNode, true);\n if (nextStickyPosition) {\n return nextStickyPosition;\n }\n return { rowIndex: index - 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getCellAbove = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowAbove = this.getRowAbove({ rowIndex: lastCell.rowIndex, rowPinned: lastCell.rowPinned });\n if (rowAbove) {\n return {\n rowIndex: rowAbove.rowIndex,\n column: lastCell.column,\n rowPinned: rowAbove.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.getLastBodyCell = function () {\n var lastBodyRow = this.paginationProxy.getPageLastRow();\n return { rowIndex: lastBodyRow, rowPinned: null };\n };\n CellNavigationService.prototype.getLastFloatingTopRow = function () {\n var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return { rowIndex: lastFloatingRow, rowPinned: 'top' };\n };\n CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {\n if (backwards) {\n return this.getNextTabbedCellBackwards(gridCell);\n }\n return this.getNextTabbedCellForwards(gridCell);\n };\n CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnModel.getDisplayedColAfter(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = displayedColumns[0];\n var rowBelow = this.getRowBelow(gridCell);\n if (missing(rowBelow)) {\n return null;\n }\n // If we are tabbing and there is a paging panel present, tabbing should go\n // to the paging panel instead of loading the next page.\n if (!rowBelow.rowPinned && !this.paginationProxy.isRowInPage(rowBelow)) {\n return null;\n }\n newRowIndex = rowBelow ? rowBelow.rowIndex : null;\n newFloating = rowBelow ? rowBelow.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnModel.getDisplayedColBefore(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = last(displayedColumns);\n var rowAbove = this.getRowAbove({ rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });\n if (missing(rowAbove)) {\n return null;\n }\n // If we are tabbing and there is a paging panel present, tabbing should go\n // to the paging panel instead of loading the next page.\n if (!rowAbove.rowPinned && !this.paginationProxy.isRowInPage(rowAbove)) {\n return null;\n }\n newRowIndex = rowAbove ? rowAbove.rowIndex : null;\n newFloating = rowAbove ? rowAbove.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n __decorate$O([\n Autowired('columnModel')\n ], CellNavigationService.prototype, \"columnModel\", void 0);\n __decorate$O([\n Autowired('rowModel')\n ], CellNavigationService.prototype, \"rowModel\", void 0);\n __decorate$O([\n Autowired('rowRenderer')\n ], CellNavigationService.prototype, \"rowRenderer\", void 0);\n __decorate$O([\n Autowired('pinnedRowModel')\n ], CellNavigationService.prototype, \"pinnedRowModel\", void 0);\n __decorate$O([\n Autowired('paginationProxy')\n ], CellNavigationService.prototype, \"paginationProxy\", void 0);\n CellNavigationService = __decorate$O([\n Bean('cellNavigationService')\n ], CellNavigationService);\n return CellNavigationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$L = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$6 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar AlignedGridsService = /** @class */ (function (_super) {\n __extends$L(AlignedGridsService, _super);\n function AlignedGridsService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n // while processing a master event) we mark this if consuming an event, and if we are, then\n // we don't fire back any events.\n _this.consuming = false;\n return _this;\n }\n AlignedGridsService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('AlignedGridsService');\n };\n AlignedGridsService.prototype.init = function () {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));\n };\n // common logic across all the fire methods\n AlignedGridsService.prototype.fireEvent = function (callback) {\n // if we are already consuming, then we are acting on an event from a master,\n // so we don't cause a cyclic firing of events\n if (this.consuming) {\n return;\n }\n // iterate through the aligned grids, and pass each aligned grid service to the callback\n var otherGrids = this.gridOptionsService.get('alignedGrids');\n if (otherGrids) {\n otherGrids.forEach(function (otherGridOptions) {\n if (otherGridOptions.api) {\n var alignedGridService = otherGridOptions.api.__getAlignedGridService();\n callback(alignedGridService);\n }\n });\n }\n };\n // common logic across all consume methods. very little common logic, however extracting\n // guarantees consistency across the methods.\n AlignedGridsService.prototype.onEvent = function (callback) {\n this.consuming = true;\n callback();\n this.consuming = false;\n };\n AlignedGridsService.prototype.fireColumnEvent = function (event) {\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onColumnEvent(event);\n });\n };\n AlignedGridsService.prototype.fireScrollEvent = function (event) {\n if (event.direction !== 'horizontal') {\n return;\n }\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onScrollEvent(event);\n });\n };\n AlignedGridsService.prototype.onScrollEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n gridBodyCon.getScrollFeature().setHorizontalScrollPosition(event.left);\n });\n };\n AlignedGridsService.prototype.getMasterColumns = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column);\n });\n }\n else if (event.column) {\n result.push(event.column);\n }\n return result;\n };\n AlignedGridsService.prototype.getColumnIds = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column.getColId());\n });\n }\n else if (event.column) {\n result.push(event.column.getColId());\n }\n return result;\n };\n AlignedGridsService.prototype.onColumnEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n switch (event.type) {\n case Events.EVENT_COLUMN_MOVED:\n case Events.EVENT_COLUMN_VISIBLE:\n case Events.EVENT_COLUMN_PINNED:\n case Events.EVENT_COLUMN_RESIZED:\n var colEvent = event;\n _this.processColumnEvent(colEvent);\n break;\n case Events.EVENT_COLUMN_GROUP_OPENED:\n var groupOpenedEvent = event;\n _this.processGroupOpenedEvent(groupOpenedEvent);\n break;\n case Events.EVENT_COLUMN_PIVOT_CHANGED:\n // we cannot support pivoting with aligned grids as the columns will be out of sync as the\n // grids will have columns created based on the row data of the grid.\n console.warn('AG Grid: pivoting is not supported with aligned grids. ' +\n 'You can only use one of these features at a time in a grid.');\n break;\n }\n });\n };\n AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {\n // likewise for column group\n var masterColumnGroup = groupOpenedEvent.columnGroup;\n var otherColumnGroup = null;\n if (masterColumnGroup) {\n var groupId = masterColumnGroup.getGroupId();\n otherColumnGroup = this.columnModel.getProvidedColumnGroup(groupId);\n }\n if (masterColumnGroup && !otherColumnGroup) {\n return;\n }\n this.logger.log('onColumnEvent-> processing ' + groupOpenedEvent + ' expanded = ' + masterColumnGroup.isExpanded());\n this.columnModel.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), \"alignedGridChanged\");\n };\n AlignedGridsService.prototype.processColumnEvent = function (colEvent) {\n var _this = this;\n var _a;\n // the column in the event is from the master grid. need to\n // look up the equivalent from this (other) grid\n var masterColumn = colEvent.column;\n var otherColumn = null;\n if (masterColumn) {\n otherColumn = this.columnModel.getPrimaryColumn(masterColumn.getColId());\n }\n // if event was with respect to a master column, that is not present in this\n // grid, then we ignore the event\n if (masterColumn && !otherColumn) {\n return;\n }\n // in time, all the methods below should use the column ids, it's a more generic way\n // of handling columns, and also allows for single or multi column events\n var masterColumns = this.getMasterColumns(colEvent);\n switch (colEvent.type) {\n case Events.EVENT_COLUMN_MOVED:\n // when the user moves columns via applyColumnState, we can't depend on moving specific columns\n // to an index, as there maybe be many indexes columns moved to (as wasn't result of a mouse drag).\n // so only way to be sure is match the order of all columns using Column State.\n {\n var movedEvent = colEvent;\n var srcColState = colEvent.columnApi.getColumnState();\n var destColState = srcColState.map(function (s) { return ({ colId: s.colId }); });\n this.columnModel.applyColumnState({ state: destColState, applyOrder: true }, \"alignedGridChanged\");\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" toIndex = \" + movedEvent.toIndex);\n }\n break;\n case Events.EVENT_COLUMN_VISIBLE:\n // when the user changes visibility via applyColumnState, we can't depend on visibility flag in event\n // as there maybe be mix of true/false (as wasn't result of a mouse click to set visiblity).\n // so only way to be sure is match the visibility of all columns using Column State.\n {\n var visibleEvent = colEvent;\n var srcColState = colEvent.columnApi.getColumnState();\n var destColState = srcColState.map(function (s) { return ({ colId: s.colId, hide: s.hide }); });\n this.columnModel.applyColumnState({ state: destColState }, \"alignedGridChanged\");\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" visible = \" + visibleEvent.visible);\n }\n break;\n case Events.EVENT_COLUMN_PINNED:\n {\n var pinnedEvent = colEvent;\n var srcColState = colEvent.columnApi.getColumnState();\n var destColState = srcColState.map(function (s) { return ({ colId: s.colId, pinned: s.pinned }); });\n this.columnModel.applyColumnState({ state: destColState }, \"alignedGridChanged\");\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" pinned = \" + pinnedEvent.pinned);\n }\n break;\n case Events.EVENT_COLUMN_RESIZED:\n var resizedEvent = colEvent;\n var columnWidths_1 = {};\n masterColumns.forEach(function (column) {\n _this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" actualWidth = \" + column.getActualWidth());\n columnWidths_1[column.getId()] = { key: column.getColId(), newWidth: column.getActualWidth() };\n });\n // don't set flex columns width\n (_a = resizedEvent.flexColumns) === null || _a === void 0 ? void 0 : _a.forEach(function (col) {\n if (columnWidths_1[col.getId()]) {\n delete columnWidths_1[col.getId()];\n }\n });\n this.columnModel.setColumnWidths(Object.values(columnWidths_1), false, resizedEvent.finished, \"alignedGridChanged\");\n break;\n }\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var isVerticalScrollShowing = gridBodyCon.isVerticalScrollShowing();\n var alignedGrids = this.gridOptionsService.get('alignedGrids');\n if (alignedGrids) {\n alignedGrids.forEach(function (grid) {\n if (grid.api) {\n grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);\n }\n });\n }\n };\n __decorate$N([\n Autowired('columnModel')\n ], AlignedGridsService.prototype, \"columnModel\", void 0);\n __decorate$N([\n Autowired('ctrlsService')\n ], AlignedGridsService.prototype, \"ctrlsService\", void 0);\n __decorate$N([\n __param$6(0, Qualifier('loggerFactory'))\n ], AlignedGridsService.prototype, \"setBeans\", null);\n __decorate$N([\n PostConstruct\n ], AlignedGridsService.prototype, \"init\", null);\n AlignedGridsService = __decorate$N([\n Bean('alignedGridsService')\n ], AlignedGridsService);\n return AlignedGridsService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$K = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$2 = (undefined && undefined.__assign) || function () {\n __assign$2 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$2.apply(this, arguments);\n};\nvar __decorate$M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$5 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __read$8 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar SelectionService = /** @class */ (function (_super) {\n __extends$K(SelectionService, _super);\n function SelectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectionService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('selectionService');\n this.reset();\n };\n SelectionService.prototype.init = function () {\n var _this = this;\n this.groupSelectsChildren = this.gridOptionsService.is('groupSelectsChildren');\n this.addManagedPropertyListener('groupSelectsChildren', function (propChange) { return _this.groupSelectsChildren = propChange.currentValue; });\n this.rowSelection = this.gridOptionsService.get('rowSelection');\n this.addManagedPropertyListener('rowSelection', function (propChange) { return _this.rowSelection = propChange.currentValue; });\n this.addManagedListener(this.eventService, Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n };\n SelectionService.prototype.isMultiselect = function () {\n return this.rowSelection === 'multiple';\n };\n SelectionService.prototype.setNodeSelected = function (params) {\n var _a;\n var newValue = params.newValue, clearSelection = params.clearSelection, suppressFinishActions = params.suppressFinishActions, rangeSelect = params.rangeSelect; params.event; var node = params.node, _b = params.source, source = _b === void 0 ? 'api' : _b;\n // groupSelectsFiltered only makes sense when group selects children\n var groupSelectsFiltered = this.groupSelectsChildren && (params.groupSelectsFiltered === true);\n if (node.id === undefined) {\n console.warn('AG Grid: cannot select node until id for node is known');\n return 0;\n }\n if (node.rowPinned) {\n console.warn('AG Grid: cannot select pinned rows');\n return 0;\n }\n // if we are a footer, we don't do selection, just pass the info\n // to the sibling (the parent of the group)\n if (node.footer) {\n return this.setNodeSelected(__assign$2(__assign$2({}, params), { node: node.sibling }));\n }\n var lastSelectedNode = this.getLastSelectedNode();\n if (rangeSelect && lastSelectedNode) {\n var newRowClicked = lastSelectedNode !== node;\n if (newRowClicked && this.isMultiselect()) {\n var nodesChanged = this.selectRange(node, lastSelectedNode, params.newValue, source);\n this.setLastSelectedNode(node);\n return nodesChanged;\n }\n }\n // when groupSelectsFiltered, then this node may end up intermediate despite\n // trying to set it to true / false. this group will be calculated further on\n // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it\n // here, otherwise the updatedCount would include it.\n var skipThisNode = groupSelectsFiltered && node.group;\n var updatedCount = 0;\n if (!skipThisNode) {\n var thisNodeWasSelected = node.selectThisNode(newValue, params.event, source);\n if (thisNodeWasSelected) {\n updatedCount++;\n }\n }\n if (this.groupSelectsChildren && ((_a = node.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n updatedCount += this.selectChildren(node, newValue, groupSelectsFiltered, source);\n }\n // clear other nodes if not doing multi select\n if (!suppressFinishActions) {\n var clearOtherNodes = newValue && (clearSelection || !this.isMultiselect());\n if (clearOtherNodes) {\n updatedCount += this.clearOtherNodes(node, source);\n }\n // only if we selected something, then update groups and fire events\n if (updatedCount > 0) {\n this.updateGroupsFromChildrenSelections(source);\n // this is the very end of the 'action node', so we are finished all the updates,\n // include any parent / child changes that this method caused\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: source\n };\n this.eventService.dispatchEvent(event_1);\n }\n // so if user next does shift-select, we know where to start the selection from\n if (newValue) {\n this.setLastSelectedNode(node);\n }\n }\n return updatedCount;\n };\n // selects all rows between this node and the last selected node (or the top if this is the first selection).\n // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n // holding down 'shift'.\n SelectionService.prototype.selectRange = function (fromNode, toNode, value, source) {\n var _this = this;\n if (value === void 0) { value = true; }\n var nodesToSelect = this.rowModel.getNodesInRangeForSelection(fromNode, toNode);\n var updatedCount = 0;\n nodesToSelect.forEach(function (rowNode) {\n if (rowNode.group && _this.groupSelectsChildren || (value === false && fromNode === rowNode)) {\n return;\n }\n var nodeWasSelected = rowNode.selectThisNode(value, undefined, source);\n if (nodeWasSelected) {\n updatedCount++;\n }\n });\n this.updateGroupsFromChildrenSelections(source);\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: source\n };\n this.eventService.dispatchEvent(event);\n return updatedCount;\n };\n SelectionService.prototype.selectChildren = function (node, newValue, groupSelectsFiltered, source) {\n var children = groupSelectsFiltered ? node.childrenAfterAggFilter : node.childrenAfterGroup;\n if (_.missing(children)) {\n return 0;\n }\n var updatedCount = 0;\n for (var i = 0; i < children.length; i++) {\n updatedCount += children[i].setSelectedParams({\n newValue: newValue,\n clearSelection: false,\n suppressFinishActions: true,\n groupSelectsFiltered: groupSelectsFiltered,\n source: source\n });\n }\n return updatedCount;\n };\n SelectionService.prototype.setLastSelectedNode = function (rowNode) {\n this.lastSelectedNode = rowNode;\n };\n SelectionService.prototype.getLastSelectedNode = function () {\n return this.lastSelectedNode;\n };\n SelectionService.prototype.getSelectedNodes = function () {\n var selectedNodes = [];\n iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode) {\n selectedNodes.push(rowNode);\n }\n });\n return selectedNodes;\n };\n SelectionService.prototype.getSelectedRows = function () {\n var selectedRows = [];\n iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.data) {\n selectedRows.push(rowNode.data);\n }\n });\n return selectedRows;\n };\n SelectionService.prototype.getSelectionCount = function () {\n return Object.values(this.selectedNodes).length;\n };\n /**\n * This method is used by the CSRM to remove groups which are being disposed of,\n * events do not need fired in this case\n */\n SelectionService.prototype.filterFromSelection = function (predicate) {\n var newSelectedNodes = {};\n Object.entries(this.selectedNodes).forEach(function (_a) {\n var _b = __read$8(_a, 2), key = _b[0], node = _b[1];\n var passesPredicate = node && predicate(node);\n if (passesPredicate) {\n newSelectedNodes[key] = node;\n }\n });\n this.selectedNodes = newSelectedNodes;\n };\n // should only be called if groupSelectsChildren=true\n SelectionService.prototype.updateGroupsFromChildrenSelections = function (source, changedPath) {\n // we only do this when group selection state depends on selected children\n if (!this.groupSelectsChildren) {\n return false;\n }\n // also only do it if CSRM (code should never allow this anyway)\n if (this.rowModel.getType() !== 'clientSide') {\n return false;\n }\n var clientSideRowModel = this.rowModel;\n var rootNode = clientSideRowModel.getRootNode();\n if (!changedPath) {\n changedPath = new ChangedPath(true, rootNode);\n changedPath.setInactive();\n }\n var selectionChanged = false;\n changedPath.forEachChangedNodeDepthFirst(function (rowNode) {\n if (rowNode !== rootNode) {\n var selected = rowNode.calculateSelectedFromChildren();\n selectionChanged = rowNode.selectThisNode(selected === null ? false : selected, undefined, source) || selectionChanged;\n }\n });\n return selectionChanged;\n };\n SelectionService.prototype.clearOtherNodes = function (rowNodeToKeepSelected, source) {\n var _this = this;\n var groupsToRefresh = {};\n var updatedCount = 0;\n iterateObject(this.selectedNodes, function (key, otherRowNode) {\n if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n var rowNode = _this.selectedNodes[otherRowNode.id];\n updatedCount += rowNode.setSelectedParams({\n newValue: false,\n clearSelection: false,\n suppressFinishActions: true,\n source: source\n });\n if (_this.groupSelectsChildren && otherRowNode.parent) {\n groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;\n }\n }\n });\n iterateObject(groupsToRefresh, function (key, group) {\n var selected = group.calculateSelectedFromChildren();\n group.selectThisNode(selected === null ? false : selected, undefined, source);\n });\n return updatedCount;\n };\n SelectionService.prototype.onRowSelected = function (event) {\n var rowNode = event.node;\n // we do not store the group rows when the groups select children\n if (this.groupSelectsChildren && rowNode.group) {\n return;\n }\n if (rowNode.isSelected()) {\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n delete this.selectedNodes[rowNode.id];\n }\n };\n SelectionService.prototype.syncInRowNode = function (rowNode, oldNode) {\n this.syncInOldRowNode(rowNode, oldNode);\n this.syncInNewRowNode(rowNode);\n };\n // if the id has changed for the node, then this means the rowNode\n // is getting used for a different data item, which breaks\n // our selectedNodes, as the node now is mapped by the old id\n // which is inconsistent. so to keep the old node as selected,\n // we swap in the clone (with the old id and old data). this means\n // the oldNode is effectively a daemon we keep a reference to,\n // so if client calls api.getSelectedNodes(), it gets the daemon\n // in the result. when the client un-selects, the reference to the\n // daemon is removed. the daemon, because it's an oldNode, is not\n // used by the grid for rendering, it's a copy of what the node used\n // to be like before the id was changed.\n SelectionService.prototype.syncInOldRowNode = function (rowNode, oldNode) {\n var oldNodeHasDifferentId = exists(oldNode) && (rowNode.id !== oldNode.id);\n if (oldNodeHasDifferentId && oldNode) {\n var id = oldNode.id;\n var oldNodeSelected = this.selectedNodes[id] == rowNode;\n if (oldNodeSelected) {\n this.selectedNodes[oldNode.id] = oldNode;\n }\n }\n };\n SelectionService.prototype.syncInNewRowNode = function (rowNode) {\n if (exists(this.selectedNodes[rowNode.id])) {\n rowNode.setSelectedInitialValue(true);\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n rowNode.setSelectedInitialValue(false);\n }\n };\n SelectionService.prototype.reset = function () {\n this.logger.log('reset');\n this.selectedNodes = {};\n this.lastSelectedNode = null;\n };\n // returns a list of all nodes at 'best cost' - a feature to be used\n // with groups / trees. if a group has all it's children selected,\n // then the group appears in the result, but not the children.\n // Designed for use with 'children' as the group selection type,\n // where groups don't actually appear in the selection normally.\n SelectionService.prototype.getBestCostNodeSelection = function () {\n if (this.rowModel.getType() !== 'clientSide') {\n // Error logged as part of gridApi as that is only call point for this method.\n return;\n }\n var clientSideRowModel = this.rowModel;\n var topLevelNodes = clientSideRowModel.getTopLevelNodes();\n if (topLevelNodes === null) {\n return;\n }\n var result = [];\n // recursive function, to find the selected nodes\n function traverse(nodes) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n var node = nodes[i];\n if (node.isSelected()) {\n result.push(node);\n }\n else {\n // if not selected, then if it's a group, and the group\n // has children, continue to search for selections\n var maybeGroup = node;\n if (maybeGroup.group && maybeGroup.children) {\n traverse(maybeGroup.children);\n }\n }\n }\n }\n traverse(topLevelNodes);\n return result;\n };\n SelectionService.prototype.isEmpty = function () {\n var count = 0;\n iterateObject(this.selectedNodes, function (nodeId, rowNode) {\n if (rowNode) {\n count++;\n }\n });\n return count === 0;\n };\n SelectionService.prototype.deselectAllRowNodes = function (params) {\n var callback = function (rowNode) { return rowNode.selectThisNode(false, undefined, source); };\n var rowModelClientSide = this.rowModel.getType() === 'clientSide';\n var source = params.source, justFiltered = params.justFiltered, justCurrentPage = params.justCurrentPage;\n if (justCurrentPage || justFiltered) {\n if (!rowModelClientSide) {\n console.error(\"AG Grid: selecting just filtered only works when gridOptions.rowModelType='clientSide'\");\n return;\n }\n this.getNodesToSelect(justFiltered, justCurrentPage).forEach(callback);\n }\n else {\n iterateObject(this.selectedNodes, function (id, rowNode) {\n // remember the reference can be to null, as we never 'delete' from the map\n if (rowNode) {\n callback(rowNode);\n }\n });\n // this clears down the map (whereas above only sets the items in map to 'undefined')\n this.reset();\n }\n // the above does not clean up the parent rows if they are selected\n if (rowModelClientSide && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections(source);\n }\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n SelectionService.prototype.getSelectAllState = function (justFiltered, justCurrentPage) {\n var _this = this;\n var selectedCount = 0;\n var notSelectedCount = 0;\n var callback = function (node) {\n if (_this.groupSelectsChildren && node.group) {\n return;\n }\n if (node.isSelected()) {\n selectedCount++;\n }\n else if (!node.selectable) ;\n else {\n notSelectedCount++;\n }\n };\n this.getNodesToSelect(justFiltered, justCurrentPage).forEach(callback);\n // if no rows, always have it unselected\n if (selectedCount === 0 && notSelectedCount === 0) {\n return false;\n }\n // if mix of selected and unselected, this is indeterminate\n if (selectedCount > 0 && notSelectedCount > 0) {\n return null;\n }\n // only selected\n return selectedCount > 0;\n };\n /**\n * @param justFiltered whether to just include nodes which have passed the filter\n * @param justCurrentPage whether to just include nodes on the current page\n * @returns all nodes including unselectable nodes which are the target of this selection attempt\n */\n SelectionService.prototype.getNodesToSelect = function (justFiltered, justCurrentPage) {\n var _this = this;\n if (justFiltered === void 0) { justFiltered = false; }\n if (justCurrentPage === void 0) { justCurrentPage = false; }\n if (this.rowModel.getType() !== 'clientSide') {\n throw new Error(\"selectAll only available when rowModelType='clientSide', ie not \" + this.rowModel.getType());\n }\n var nodes = [];\n if (justCurrentPage) {\n this.paginationProxy.forEachNodeOnPage(function (node) {\n if (!node.group) {\n nodes.push(node);\n return;\n }\n if (!node.expanded) {\n // even with groupSelectsChildren, do this recursively as only the filtered children\n // are considered as the current page\n var recursivelyAddChildren_1 = function (child) {\n var _a;\n nodes.push(child);\n if ((_a = child.childrenAfterFilter) === null || _a === void 0 ? void 0 : _a.length) {\n child.childrenAfterFilter.forEach(recursivelyAddChildren_1);\n }\n };\n recursivelyAddChildren_1(node);\n return;\n }\n // if the group node is expanded, the pagination proxy will include the visible nodes to select\n if (!_this.groupSelectsChildren) {\n nodes.push(node);\n }\n });\n return nodes;\n }\n var clientSideRowModel = this.rowModel;\n if (justFiltered) {\n clientSideRowModel.forEachNodeAfterFilter(function (node) {\n nodes.push(node);\n });\n return nodes;\n }\n clientSideRowModel.forEachNode(function (node) {\n nodes.push(node);\n });\n return nodes;\n };\n SelectionService.prototype.selectAllRowNodes = function (params) {\n if (this.rowModel.getType() !== 'clientSide') {\n throw new Error(\"selectAll only available when rowModelType='clientSide', ie not \" + this.rowModel.getType());\n }\n var source = params.source, justFiltered = params.justFiltered, justCurrentPage = params.justCurrentPage;\n var callback = function (rowNode) { return rowNode.selectThisNode(true, undefined, source); };\n this.getNodesToSelect(justFiltered, justCurrentPage).forEach(callback);\n // the above does not clean up the parent rows if they are selected\n if (this.rowModel.getType() === 'clientSide' && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections(source);\n }\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n // Used by SSRM\n SelectionService.prototype.getServerSideSelectionState = function () {\n return null;\n };\n SelectionService.prototype.setServerSideSelectionState = function (state) { };\n __decorate$M([\n Autowired('rowModel')\n ], SelectionService.prototype, \"rowModel\", void 0);\n __decorate$M([\n Autowired('paginationProxy')\n ], SelectionService.prototype, \"paginationProxy\", void 0);\n __decorate$M([\n __param$5(0, Qualifier('loggerFactory'))\n ], SelectionService.prototype, \"setBeans\", null);\n __decorate$M([\n PostConstruct\n ], SelectionService.prototype, \"init\", null);\n SelectionService = __decorate$M([\n Bean('selectionService')\n ], SelectionService);\n return SelectionService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnApi = /** @class */ (function () {\n function ColumnApi() {\n }\n /** Gets the grid to size the columns to the specified width in pixels, e.g. `sizeColumnsToFit(900)`. To have the grid fit the columns to the grid's width, use the Grid API `gridApi.sizeColumnsToFit()` instead. */\n ColumnApi.prototype.sizeColumnsToFit = function (gridWidth) {\n // AG-3403 validate that gridWidth is provided because this method has the same name as\n // a method on the grid API that takes no arguments, and it's easy to confuse the two\n if (typeof gridWidth === \"undefined\") {\n console.error('AG Grid: missing parameter to columnApi.sizeColumnsToFit(gridWidth)');\n }\n this.columnModel.sizeColumnsToFit(gridWidth, 'api');\n };\n /** Call this if you want to open or close a column group. */\n ColumnApi.prototype.setColumnGroupOpened = function (group, newValue) { this.columnModel.setColumnGroupOpened(group, newValue, 'api'); };\n /** Returns the column group with the given name. */\n ColumnApi.prototype.getColumnGroup = function (name, instanceId) { return this.columnModel.getColumnGroup(name, instanceId); };\n /** Returns the provided column group with the given name. */\n ColumnApi.prototype.getProvidedColumnGroup = function (name) { return this.columnModel.getProvidedColumnGroup(name); };\n /** Returns the display name for a column. Useful if you are doing your own header rendering and want the grid to work out if `headerValueGetter` is used, or if you are doing your own column management GUI, to know what to show as the column name. */\n ColumnApi.prototype.getDisplayNameForColumn = function (column, location) { return this.columnModel.getDisplayNameForColumn(column, location) || ''; };\n /** Returns the display name for a column group (when grouping columns). */\n ColumnApi.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) { return this.columnModel.getDisplayNameForColumnGroup(columnGroup, location) || ''; };\n /** Returns the column with the given `colKey`, which can either be the `colId` (a string) or the `colDef` (an object). */\n ColumnApi.prototype.getColumn = function (key) { return this.columnModel.getPrimaryColumn(key); };\n /** Returns all the columns, regardless of visible or not. */\n ColumnApi.prototype.getColumns = function () { return this.columnModel.getAllPrimaryColumns(); };\n /** Applies the state of the columns from a previous state. Returns `false` if one or more columns could not be found. */\n ColumnApi.prototype.applyColumnState = function (params) { return this.columnModel.applyColumnState(params, 'api'); };\n /** Gets the state of the columns. Typically used when saving column state. */\n ColumnApi.prototype.getColumnState = function () { return this.columnModel.getColumnState(); };\n /** Sets the state back to match the originally provided column definitions. */\n ColumnApi.prototype.resetColumnState = function () { this.columnModel.resetColumnState('api'); };\n /** Gets the state of the column groups. Typically used when saving column group state. */\n ColumnApi.prototype.getColumnGroupState = function () { return this.columnModel.getColumnGroupState(); };\n /** Sets the state of the column group state from a previous state. */\n ColumnApi.prototype.setColumnGroupState = function (stateItems) { this.columnModel.setColumnGroupState(stateItems, 'api'); };\n /** Sets the state back to match the originally provided column definitions. */\n ColumnApi.prototype.resetColumnGroupState = function () { this.columnModel.resetColumnGroupState('api'); };\n /** Returns `true` if pinning left or right, otherwise `false`. */\n ColumnApi.prototype.isPinning = function () { return this.columnModel.isPinningLeft() || this.columnModel.isPinningRight(); };\n /** Returns `true` if pinning left, otherwise `false`. */\n ColumnApi.prototype.isPinningLeft = function () { return this.columnModel.isPinningLeft(); };\n /** Returns `true` if pinning right, otherwise `false`. */\n ColumnApi.prototype.isPinningRight = function () { return this.columnModel.isPinningRight(); };\n /** Returns the column to the right of the provided column, taking into consideration open / closed column groups and visible columns. This is useful if you need to know what column is beside yours e.g. if implementing your own cell navigation. */\n ColumnApi.prototype.getDisplayedColAfter = function (col) { return this.columnModel.getDisplayedColAfter(col); };\n /** Same as `getVisibleColAfter` except gives column to the left. */\n ColumnApi.prototype.getDisplayedColBefore = function (col) { return this.columnModel.getDisplayedColBefore(col); };\n /** Sets the visibility of a column. Key can be the column ID or `Column` object. */\n ColumnApi.prototype.setColumnVisible = function (key, visible) { this.columnModel.setColumnVisible(key, visible, 'api'); };\n /** Same as `setColumnVisible`, but provide a list of column keys. */\n ColumnApi.prototype.setColumnsVisible = function (keys, visible) { this.columnModel.setColumnsVisible(keys, visible, 'api'); };\n /** Sets the column pinned / unpinned. Key can be the column ID, field, `ColDef` object or `Column` object. */\n ColumnApi.prototype.setColumnPinned = function (key, pinned) { this.columnModel.setColumnPinned(key, pinned, 'api'); };\n /** Same as `setColumnPinned`, but provide a list of column keys. */\n ColumnApi.prototype.setColumnsPinned = function (keys, pinned) { this.columnModel.setColumnsPinned(keys, pinned, 'api'); };\n /**\n * Returns all the grid columns, same as `getColumns()`, except\n *\n * a) it has the order of the columns that are presented in the grid\n *\n * b) it's after the 'pivot' step, so if pivoting, has the value columns for the pivot.\n */\n ColumnApi.prototype.getAllGridColumns = function () { return this.columnModel.getAllGridColumns(); };\n /** Same as `getAllDisplayedColumns` but just for the pinned left portion of the grid. */\n ColumnApi.prototype.getDisplayedLeftColumns = function () { return this.columnModel.getDisplayedLeftColumns(); };\n /** Same as `getAllDisplayedColumns` but just for the center portion of the grid. */\n ColumnApi.prototype.getDisplayedCenterColumns = function () { return this.columnModel.getDisplayedCenterColumns(); };\n /** Same as `getAllDisplayedColumns` but just for the pinned right portion of the grid. */\n ColumnApi.prototype.getDisplayedRightColumns = function () { return this.columnModel.getDisplayedRightColumns(); };\n /** Returns all columns currently displayed (e.g. are visible and if in a group, the group is showing the columns) for the pinned left, centre and pinned right portions of the grid. */\n ColumnApi.prototype.getAllDisplayedColumns = function () { return this.columnModel.getAllDisplayedColumns(); };\n /** Same as `getAllGridColumns()`, except only returns rendered columns, i.e. columns that are not within the viewport and therefore not rendered, due to column virtualisation, are not displayed. */\n ColumnApi.prototype.getAllDisplayedVirtualColumns = function () { return this.columnModel.getViewportColumns(); };\n /** Moves a column to `toIndex`. The column is first removed, then added at the `toIndex` location, thus index locations will change to the right of the column after the removal. */\n ColumnApi.prototype.moveColumn = function (key, toIndex) {\n this.columnModel.moveColumn(key, toIndex, 'api');\n };\n /** Same as `moveColumn` but works on index locations. */\n ColumnApi.prototype.moveColumnByIndex = function (fromIndex, toIndex) { this.columnModel.moveColumnByIndex(fromIndex, toIndex, 'api'); };\n /** Same as `moveColumn` but works on list. */\n ColumnApi.prototype.moveColumns = function (columnsToMoveKeys, toIndex) { this.columnModel.moveColumns(columnsToMoveKeys, toIndex, 'api'); };\n /** Move the column to a new position in the row grouping order. */\n ColumnApi.prototype.moveRowGroupColumn = function (fromIndex, toIndex) { this.columnModel.moveRowGroupColumn(fromIndex, toIndex); };\n /** Sets the agg function for a column. `aggFunc` can be one of the built-in aggregations or a custom aggregation by name or direct function. */\n ColumnApi.prototype.setColumnAggFunc = function (key, aggFunc) { this.columnModel.setColumnAggFunc(key, aggFunc); };\n /** Sets the column width on a single column. The finished flag gets included in the resulting event and not used internally by the grid. The finished flag is intended for dragging, where a dragging action will produce many `columnWidth` events, so the consumer of events knows when it receives the last event in a stream. The finished parameter is optional, and defaults to `true`. */\n ColumnApi.prototype.setColumnWidth = function (key, newWidth, finished, source) {\n if (finished === void 0) { finished = true; }\n this.columnModel.setColumnWidths([{ key: key, newWidth: newWidth }], false, finished, source);\n };\n /** Sets the column widths on multiple columns. This method offers better performance than calling `setColumnWidth` multiple times. The finished flag gets included in the resulting event and not used internally by the grid. The finished flag is intended for dragging, where a dragging action will produce many `columnWidth` events, so the consumer of events knows when it receives the last event in a stream. The finished parameter is optional, and defaults to `true`. */\n ColumnApi.prototype.setColumnWidths = function (columnWidths, finished, source) {\n if (finished === void 0) { finished = true; }\n this.columnModel.setColumnWidths(columnWidths, false, finished, source);\n };\n /** Set the pivot mode. */\n ColumnApi.prototype.setPivotMode = function (pivotMode) { this.columnModel.setPivotMode(pivotMode); };\n /** Get the pivot mode. */\n ColumnApi.prototype.isPivotMode = function () { return this.columnModel.isPivotMode(); };\n /** Returns the pivot result column for the given `pivotKeys` and `valueColId`. Useful to then call operations on the pivot column. */\n ColumnApi.prototype.getPivotResultColumn = function (pivotKeys, valueColKey) { return this.columnModel.getSecondaryPivotColumn(pivotKeys, valueColKey); };\n /** Set the value columns to the provided list of columns. */\n ColumnApi.prototype.setValueColumns = function (colKeys) { this.columnModel.setValueColumns(colKeys, 'api'); };\n /** Get a list of the existing value columns. */\n ColumnApi.prototype.getValueColumns = function () { return this.columnModel.getValueColumns(); };\n /** Remove the given column from the existing set of value columns. */\n ColumnApi.prototype.removeValueColumn = function (colKey) { this.columnModel.removeValueColumn(colKey, 'api'); };\n /** Like `removeValueColumn` but remove the given list of columns from the existing set of value columns. */\n ColumnApi.prototype.removeValueColumns = function (colKeys) { this.columnModel.removeValueColumns(colKeys, 'api'); };\n /** Add the given column to the set of existing value columns. */\n ColumnApi.prototype.addValueColumn = function (colKey) { this.columnModel.addValueColumn(colKey, 'api'); };\n /** Like `addValueColumn` but add the given list of columns to the existing set of value columns. */\n ColumnApi.prototype.addValueColumns = function (colKeys) { this.columnModel.addValueColumns(colKeys, 'api'); };\n /** Set the row group columns. */\n ColumnApi.prototype.setRowGroupColumns = function (colKeys) { this.columnModel.setRowGroupColumns(colKeys, 'api'); };\n /** Remove a column from the row groups. */\n ColumnApi.prototype.removeRowGroupColumn = function (colKey) { this.columnModel.removeRowGroupColumn(colKey, 'api'); };\n /** Same as `removeRowGroupColumn` but provide a list of columns. */\n ColumnApi.prototype.removeRowGroupColumns = function (colKeys) { this.columnModel.removeRowGroupColumns(colKeys, 'api'); };\n /** Add a column to the row groups. */\n ColumnApi.prototype.addRowGroupColumn = function (colKey) { this.columnModel.addRowGroupColumn(colKey, 'api'); };\n /** Same as `addRowGroupColumn` but provide a list of columns. */\n ColumnApi.prototype.addRowGroupColumns = function (colKeys) { this.columnModel.addRowGroupColumns(colKeys, 'api'); };\n /** Get row group columns. */\n ColumnApi.prototype.getRowGroupColumns = function () { return this.columnModel.getRowGroupColumns(); };\n /** Set the pivot columns. */\n ColumnApi.prototype.setPivotColumns = function (colKeys) { this.columnModel.setPivotColumns(colKeys, 'api'); };\n /** Remove a pivot column. */\n ColumnApi.prototype.removePivotColumn = function (colKey) { this.columnModel.removePivotColumn(colKey, 'api'); };\n /** Same as `removePivotColumn` but provide a list of columns. */\n ColumnApi.prototype.removePivotColumns = function (colKeys) { this.columnModel.removePivotColumns(colKeys, 'api'); };\n /** Add a pivot column. */\n ColumnApi.prototype.addPivotColumn = function (colKey) { this.columnModel.addPivotColumn(colKey, 'api'); };\n /** Same as `addPivotColumn` but provide a list of columns. */\n ColumnApi.prototype.addPivotColumns = function (colKeys) { this.columnModel.addPivotColumns(colKeys, 'api'); };\n /** Get the pivot columns. */\n ColumnApi.prototype.getPivotColumns = function () { return this.columnModel.getPivotColumns(); };\n /** Same as `getAllDisplayedColumnGroups` but just for the pinned left portion of the grid. */\n ColumnApi.prototype.getLeftDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeLeft(); };\n /** Same as `getAllDisplayedColumnGroups` but just for the center portion of the grid. */\n ColumnApi.prototype.getCenterDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeCentre(); };\n /** Same as `getAllDisplayedColumnGroups` but just for the pinned right portion of the grid. */\n ColumnApi.prototype.getRightDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeRight(); };\n /** Returns all 'root' column headers. If you are not grouping columns, these return the columns. If you are grouping, these return the top level groups - you can navigate down through each one to get the other lower level headers and finally the columns at the bottom. */\n ColumnApi.prototype.getAllDisplayedColumnGroups = function () { return this.columnModel.getAllDisplayedTrees(); };\n /** Auto-sizes a column based on its contents. */\n ColumnApi.prototype.autoSizeColumn = function (key, skipHeader) { return this.columnModel.autoSizeColumn(key, skipHeader, 'api'); };\n /** Same as `autoSizeColumn`, but provide a list of column keys. */\n ColumnApi.prototype.autoSizeColumns = function (keys, skipHeader) {\n this.columnModel.autoSizeColumns({ columns: keys, skipHeader: skipHeader });\n };\n /** Calls `autoSizeColumns` on all displayed columns. */\n ColumnApi.prototype.autoSizeAllColumns = function (skipHeader) { this.columnModel.autoSizeAllColumns(skipHeader, 'api'); };\n /** Set the pivot result columns. */\n ColumnApi.prototype.setPivotResultColumns = function (colDefs) { this.columnModel.setSecondaryColumns(colDefs, 'api'); };\n /** Returns the grid's pivot result columns. */\n ColumnApi.prototype.getPivotResultColumns = function () { return this.columnModel.getSecondaryColumns(); };\n ColumnApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {\n // some users were raising support issues with regards memory leaks. the problem was the customers applications\n // were keeping references to the API. trying to educate them all would be difficult, easier to just remove\n // all references in the API so at least the core grid can be garbage collected.\n //\n // wait about 100ms before clearing down the references, in case user has some cleanup to do,\n // and needs to deference the API first\n setTimeout(_.removeAllReferences.bind(window, this, 'Column API'), 100);\n };\n /** @deprecated v28 Use `getColumns` instead */\n ColumnApi.prototype.getAllColumns = function () {\n logDeprecation('28.0', 'getAllColumns', 'getColumns');\n return this.getColumns();\n };\n /** @deprecated v27 getOriginalColumnGroup is deprecated, use getProvidedColumnGroup. */\n ColumnApi.prototype.getOriginalColumnGroup = function (name) {\n logDeprecation('27.0', 'getOriginalColumnGroup', 'getProvidedColumnGroup');\n return this.columnModel.getProvidedColumnGroup(name);\n };\n /** @deprecated v28 Use `getColumns` instead. */\n ColumnApi.prototype.getPrimaryColumns = function () {\n logDeprecation('28.0', 'getPrimaryColumns', 'getColumns');\n return this.getColumns();\n };\n /** @deprecated v28 Use `getPivotResultColumns` instead. */\n ColumnApi.prototype.getSecondaryColumns = function () {\n logDeprecation('28.0', 'getSecondaryColumns', 'getPivotResultColumns');\n return this.getPivotResultColumns();\n };\n /** @deprecated v28 Use `setPivotResultColumns` instead. */\n ColumnApi.prototype.setSecondaryColumns = function (colDefs) {\n logDeprecation('28.0', 'setSecondaryColumns', 'setPivotResultColumns');\n this.setPivotResultColumns(colDefs);\n };\n /** @deprecated v28 Use `getPivotResultColumn` instead */\n ColumnApi.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {\n logDeprecation('28.0', 'getSecondaryPivotColumn', 'getPivotResultColumn');\n return this.getPivotResultColumn(pivotKeys, valueColKey);\n };\n __decorate$L([\n Autowired('columnModel')\n ], ColumnApi.prototype, \"columnModel\", void 0);\n __decorate$L([\n PreDestroy\n ], ColumnApi.prototype, \"cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid\", null);\n ColumnApi = __decorate$L([\n Bean('columnApi')\n ], ColumnApi);\n return ColumnApi;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$J = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueService = /** @class */ (function (_super) {\n __extends$J(ValueService, _super);\n function ValueService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.initialised = false;\n return _this;\n }\n ValueService.prototype.init = function () {\n var _this = this;\n this.cellExpressions = this.gridOptionsService.is('enableCellExpressions');\n this.isTreeData = this.gridOptionsService.is('treeData');\n this.initialised = true;\n // We listen to our own event and use it to call the columnSpecific callback,\n // this way the handler calls are correctly interleaved with other global events\n this.eventService.addEventListener(Events.EVENT_CELL_VALUE_CHANGED, function (event) { return _this.callColumnCellValueChangedHandler(event); }, this.gridOptionsService.useAsyncEvents());\n this.addManagedPropertyListener('treeData', function (propChange) { return _this.isTreeData = propChange.currentValue; });\n };\n ValueService.prototype.getValue = function (column, rowNode, forFilter, ignoreAggData) {\n if (forFilter === void 0) { forFilter = false; }\n if (ignoreAggData === void 0) { ignoreAggData = false; }\n // hack - the grid is getting refreshed before this bean gets initialised, race condition.\n // really should have a way so they get initialised in the right order???\n if (!this.initialised) {\n this.init();\n }\n if (!rowNode) {\n return;\n }\n // pull these out to make code below easier to read\n var colDef = column.getColDef();\n var field = colDef.field;\n var colId = column.getColId();\n var data = rowNode.data;\n var result;\n // if there is a value getter, this gets precedence over a field\n var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;\n var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;\n if (forFilter && colDef.filterValueGetter) {\n result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);\n }\n else if (this.isTreeData && aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (this.isTreeData && colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (this.isTreeData && (field && data)) {\n result = getValueUsingField(data, field, column.isFieldContainsDots());\n }\n else if (groupDataExists) {\n result = rowNode.groupData[colId];\n }\n else if (aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (field && data) {\n result = getValueUsingField(data, field, column.isFieldContainsDots());\n }\n // the result could be an expression itself, if we are allowing cell values to be expressions\n if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {\n var cellValueGetter = result.substring(1);\n result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n }\n if (result == null) {\n var openedGroup = this.getOpenedGroup(rowNode, column);\n if (openedGroup != null) {\n return openedGroup;\n }\n }\n return result;\n };\n ValueService.prototype.getOpenedGroup = function (rowNode, column) {\n if (!this.gridOptionsService.is('showOpenedGroup')) {\n return;\n }\n var colDef = column.getColDef();\n if (!colDef.showRowGroup) {\n return;\n }\n var showRowGroup = column.getColDef().showRowGroup;\n var pointer = rowNode.parent;\n while (pointer != null) {\n if (pointer.rowGroupColumn && (showRowGroup === true || showRowGroup === pointer.rowGroupColumn.getColId())) {\n return pointer.key;\n }\n pointer = pointer.parent;\n }\n return undefined;\n };\n /**\n * Sets the value of a GridCell\n * @param rowNode The `RowNode` to be updated\n * @param colKey The `Column` to be updated\n * @param newValue The new value to be set\n * @param eventSource The event source\n * @returns `True` if the value has been updated, otherwise`False`.\n */\n ValueService.prototype.setValue = function (rowNode, colKey, newValue, eventSource) {\n var column = this.columnModel.getPrimaryColumn(colKey);\n if (!rowNode || !column) {\n return false;\n }\n // this will only happen if user is trying to paste into a group row, which doesn't make sense\n // the user should not be trying to paste into group rows\n if (missing(rowNode.data)) {\n rowNode.data = {};\n }\n var _a = column.getColDef(), field = _a.field, valueSetter = _a.valueSetter;\n if (missing(field) && missing(valueSetter)) {\n console.warn(\"AG Grid: you need either field or valueSetter set on colDef for editing to work\");\n return false;\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n oldValue: this.getValue(column, rowNode),\n newValue: newValue,\n colDef: column.getColDef(),\n column: column,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n params.newValue = newValue;\n var valueWasDifferent;\n if (exists(valueSetter)) {\n if (typeof valueSetter === 'function') {\n valueWasDifferent = valueSetter(params);\n }\n else {\n valueWasDifferent = this.expressionService.evaluate(valueSetter, params);\n }\n }\n else {\n valueWasDifferent = this.setValueUsingField(rowNode.data, field, newValue, column.isFieldContainsDots());\n }\n // in case user forgot to return something (possible if they are not using TypeScript\n // and just forgot we default the return value to true, so we always refresh.\n if (valueWasDifferent === undefined) {\n valueWasDifferent = true;\n }\n // if no change to the value, then no need to do the updating, or notifying via events.\n // otherwise the user could be tabbing around the grid, and cellValueChange would get called\n // all the time.\n if (!valueWasDifferent) {\n return false;\n }\n // reset quick filter on this row\n rowNode.resetQuickFilterAggregateText();\n this.valueCache.onDataChanged();\n params.newValue = this.getValue(column, rowNode);\n var event = {\n type: Events.EVENT_CELL_VALUE_CHANGED,\n event: null,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n column: params.column,\n api: params.api,\n columnApi: params.columnApi,\n colDef: params.colDef,\n context: params.context,\n data: rowNode.data,\n node: rowNode,\n oldValue: params.oldValue,\n newValue: params.newValue,\n value: params.newValue,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n return true;\n };\n ValueService.prototype.callColumnCellValueChangedHandler = function (event) {\n var onCellValueChanged = event.colDef.onCellValueChanged;\n if (typeof onCellValueChanged === 'function') {\n onCellValueChanged({\n node: event.node,\n data: event.data,\n oldValue: event.oldValue,\n newValue: event.newValue,\n colDef: event.colDef,\n column: event.column,\n api: event.api,\n columnApi: event.columnApi,\n context: event.context\n });\n }\n };\n ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {\n if (!field) {\n return false;\n }\n // if no '.', then it's not a deep value\n var valuesAreSame = false;\n if (!isFieldContainsDots) {\n // soft comparison to match strings and numbers\n valuesAreSame = data[field] == newValue;\n if (!valuesAreSame) {\n data[field] = newValue;\n }\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n var fieldPieces = field.split('.');\n var currentObject = data;\n while (fieldPieces.length > 0 && currentObject) {\n var fieldPiece = fieldPieces.shift();\n if (fieldPieces.length === 0) {\n // soft comparison to match strings and numbers\n valuesAreSame = currentObject[fieldPiece] == newValue;\n if (!valuesAreSame) {\n currentObject[fieldPiece] = newValue;\n }\n }\n else {\n currentObject = currentObject[fieldPiece];\n }\n }\n }\n return !valuesAreSame;\n };\n ValueService.prototype.executeFilterValueGetter = function (valueGetter, data, column, rowNode) {\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n if (typeof valueGetter === 'function') {\n return valueGetter(params);\n }\n return this.expressionService.evaluate(valueGetter, params);\n };\n ValueService.prototype.executeValueGetter = function (valueGetter, data, column, rowNode) {\n var colId = column.getColId();\n // if inside the same turn, just return back the value we got last time\n var valueFromCache = this.valueCache.getValue(rowNode, colId);\n if (valueFromCache !== undefined) {\n return valueFromCache;\n }\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n var result;\n if (typeof valueGetter === 'function') {\n result = valueGetter(params);\n }\n else {\n result = this.expressionService.evaluate(valueGetter, params);\n }\n // if a turn is active, store the value in case the grid asks for it again\n this.valueCache.setValue(rowNode, colId, result);\n return result;\n };\n ValueService.prototype.getValueCallback = function (node, field) {\n var otherColumn = this.columnModel.getPrimaryColumn(field);\n if (otherColumn) {\n return this.getValue(otherColumn, node);\n }\n return null;\n };\n // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n ValueService.prototype.getKeyForNode = function (col, rowNode) {\n var value = this.getValue(col, rowNode);\n var keyCreator = col.getColDef().keyCreator;\n var result = value;\n if (keyCreator) {\n var keyParams = {\n value: value,\n colDef: col.getColDef(),\n column: col,\n node: rowNode,\n data: rowNode.data,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n result = keyCreator(keyParams);\n }\n // if already a string, or missing, just return it\n if (typeof result === 'string' || result == null) {\n return result;\n }\n result = String(result);\n if (result === '[object Object]') {\n doOnce(function () {\n console.warn('AG Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se AG Grid docs) or b) to toString() on the object to return a key');\n }, 'getKeyForNode - warn about [object,object]');\n }\n return result;\n };\n __decorate$K([\n Autowired('expressionService')\n ], ValueService.prototype, \"expressionService\", void 0);\n __decorate$K([\n Autowired('columnModel')\n ], ValueService.prototype, \"columnModel\", void 0);\n __decorate$K([\n Autowired('valueCache')\n ], ValueService.prototype, \"valueCache\", void 0);\n __decorate$K([\n PostConstruct\n ], ValueService.prototype, \"init\", null);\n ValueService = __decorate$K([\n Bean('valueService')\n ], ValueService);\n return ValueService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$I = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$4 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar ExpressionService = /** @class */ (function (_super) {\n __extends$I(ExpressionService, _super);\n function ExpressionService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.expressionToFunctionCache = {};\n return _this;\n }\n ExpressionService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ExpressionService');\n };\n ExpressionService.prototype.evaluate = function (expression, params) {\n if (typeof expression === 'string') {\n // valueGetter is an expression, so execute the expression\n return this.evaluateExpression(expression, params);\n }\n else {\n console.error('AG Grid: value should be either a string or a function', expression);\n }\n };\n ExpressionService.prototype.evaluateExpression = function (expression, params) {\n try {\n var javaScriptFunction = this.createExpressionFunction(expression);\n // the params don't have all these values, rather we add every possible\n // value a params can have, which makes whatever is in the params available.\n var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);\n return result;\n }\n catch (e) {\n // the expression failed, which can happen, as it's the client that\n // provides the expression. so print a nice message\n // tslint:disable-next-line\n console.log('Processing of the expression failed');\n // tslint:disable-next-line\n console.log('Expression = ' + expression);\n // tslint:disable-next-line\n console.log('Params =', params);\n // tslint:disable-next-line\n console.log('Exception = ' + e);\n return null;\n }\n };\n ExpressionService.prototype.createExpressionFunction = function (expression) {\n // check cache first\n if (this.expressionToFunctionCache[expression]) {\n return this.expressionToFunctionCache[expression];\n }\n // if not found in cache, return the function\n var functionBody = this.createFunctionBody(expression);\n var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);\n // store in cache\n this.expressionToFunctionCache[expression] = theFunction;\n return theFunction;\n };\n ExpressionService.prototype.createFunctionBody = function (expression) {\n // if the expression has the 'return' word in it, then use as is,\n // if not, then wrap it with return and ';' to make a function\n if (expression.indexOf('return') >= 0) {\n return expression;\n }\n else {\n return 'return ' + expression + ';';\n }\n };\n __decorate$J([\n __param$4(0, Qualifier('loggerFactory'))\n ], ExpressionService.prototype, \"setBeans\", null);\n ExpressionService = __decorate$J([\n Bean('expressionService')\n ], ExpressionService);\n return ExpressionService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$H = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TemplateService = /** @class */ (function (_super) {\n __extends$H(TemplateService, _super);\n function TemplateService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateCache = {};\n _this.waitingCallbacks = {};\n return _this;\n }\n // returns the template if it is loaded, or null if it is not loaded\n // but will call the callback when it is loaded\n TemplateService.prototype.getTemplate = function (url, callback) {\n var templateFromCache = this.templateCache[url];\n if (templateFromCache) {\n return templateFromCache;\n }\n var callbackList = this.waitingCallbacks[url];\n var that = this;\n if (!callbackList) {\n // first time this was called, so need a new list for callbacks\n callbackList = [];\n this.waitingCallbacks[url] = callbackList;\n // and also need to do the http request\n var client = new XMLHttpRequest();\n client.onload = function () {\n that.handleHttpResult(this, url);\n };\n client.open(\"GET\", url);\n client.send();\n }\n // add this callback\n if (callback) {\n callbackList.push(callback);\n }\n // caller needs to wait for template to load, so return null\n return null;\n };\n TemplateService.prototype.handleHttpResult = function (httpResult, url) {\n if (httpResult.status !== 200 || httpResult.response === null) {\n console.warn(\"AG Grid: Unable to get template error \" + httpResult.status + \" - \" + url);\n return;\n }\n // response success, so process it\n // in IE9 the response is in - responseText\n this.templateCache[url] = httpResult.response || httpResult.responseText;\n // inform all listeners that this is now in the cache\n var callbacks = this.waitingCallbacks[url];\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n // we could pass the callback the response, however we know the client of this code\n // is the cell renderer, and it passes the 'cellRefresh' method in as the callback\n // which doesn't take any parameters.\n callback();\n }\n };\n TemplateService = __decorate$I([\n Bean('templateService')\n ], TemplateService);\n return TemplateService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$G = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$3 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar LoggerFactory = /** @class */ (function (_super) {\n __extends$G(LoggerFactory, _super);\n function LoggerFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LoggerFactory.prototype.setBeans = function (gridOptionsService) {\n this.logging = gridOptionsService.is('debug');\n };\n LoggerFactory.prototype.create = function (name) {\n return new Logger(name, this.isLogging.bind(this));\n };\n LoggerFactory.prototype.isLogging = function () {\n return this.logging;\n };\n __decorate$H([\n __param$3(0, Qualifier('gridOptionsService'))\n ], LoggerFactory.prototype, \"setBeans\", null);\n LoggerFactory = __decorate$H([\n Bean('loggerFactory')\n ], LoggerFactory);\n return LoggerFactory;\n}(BeanStub));\nvar Logger = /** @class */ (function () {\n function Logger(name, isLoggingFunc) {\n this.name = name;\n this.isLoggingFunc = isLoggingFunc;\n }\n Logger.prototype.isLogging = function () {\n return this.isLoggingFunc();\n };\n Logger.prototype.log = function (message) {\n if (this.isLoggingFunc()) {\n // tslint:disable-next-line\n console.log('AG Grid.' + this.name + ': ' + message);\n }\n };\n return Logger;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$F = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridCtrl = /** @class */ (function (_super) {\n __extends$F(GridCtrl, _super);\n function GridCtrl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridCtrl.prototype.setComp = function (view, eGridDiv, eGui) {\n var _this = this;\n this.view = view;\n this.eGridHostDiv = eGridDiv;\n this.eGui = eGui;\n // this drop target is just used to see if the drop event is inside the grid\n this.dragAndDropService.addDropTarget({\n getContainer: function () { return _this.eGui; },\n isInterestedIn: function (type) { return type === DragSourceType.HeaderCell || type === DragSourceType.ToolPanel; },\n getIconName: function () { return DragAndDropService.ICON_NOT_ALLOWED; },\n });\n this.mouseEventService.stampTopLevelGridCompWithGridInstance(eGridDiv);\n this.createManagedBean(new LayoutFeature(this.view));\n this.addRtlSupport();\n this.addManagedListener(this, Events.EVENT_KEYBOARD_FOCUS, function () {\n _this.view.addOrRemoveKeyboardFocusClass(true);\n });\n this.addManagedListener(this, Events.EVENT_MOUSE_FOCUS, function () {\n _this.view.addOrRemoveKeyboardFocusClass(false);\n });\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridHostDiv, this.onGridSizeChanged.bind(this));\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n this.ctrlsService.registerGridCtrl(this);\n };\n GridCtrl.prototype.isDetailGrid = function () {\n var _a;\n var el = this.focusService.findTabbableParent(this.getGui());\n return ((_a = el === null || el === void 0 ? void 0 : el.getAttribute('row-id')) === null || _a === void 0 ? void 0 : _a.startsWith('detail')) || false;\n };\n GridCtrl.prototype.showDropZones = function () {\n return ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule);\n };\n GridCtrl.prototype.showSideBar = function () {\n return ModuleRegistry.isRegistered(ModuleNames.SideBarModule);\n };\n GridCtrl.prototype.showStatusBar = function () {\n return ModuleRegistry.isRegistered(ModuleNames.StatusBarModule);\n };\n GridCtrl.prototype.showWatermark = function () {\n return ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n };\n GridCtrl.prototype.onGridSizeChanged = function () {\n var event = {\n type: Events.EVENT_GRID_SIZE_CHANGED,\n clientWidth: this.eGridHostDiv.clientWidth,\n clientHeight: this.eGridHostDiv.clientHeight\n };\n this.eventService.dispatchEvent(event);\n };\n GridCtrl.prototype.addRtlSupport = function () {\n var cssClass = this.gridOptionsService.is('enableRtl') ? 'ag-rtl' : 'ag-ltr';\n this.view.setRtlClass(cssClass);\n };\n GridCtrl.prototype.destroyGridUi = function () {\n this.view.destroyGridUi();\n };\n GridCtrl.prototype.getGui = function () {\n return this.eGui;\n };\n GridCtrl.prototype.setResizeCursor = function (on) {\n this.view.setCursor(on ? 'ew-resize' : null);\n };\n GridCtrl.prototype.disableUserSelect = function (on) {\n this.view.setUserSelect(on ? 'none' : null);\n };\n GridCtrl.prototype.focusNextInnerContainer = function (backwards) {\n var eDocument = this.gridOptionsService.getDocument();\n var focusableContainers = this.view.getFocusableContainers();\n var idxWithFocus = focusableContainers.findIndex(function (container) { return container.contains(eDocument.activeElement); });\n var nextIdx = idxWithFocus + (backwards ? -1 : 1);\n if (nextIdx <= 0 || nextIdx >= focusableContainers.length) {\n return false;\n }\n return this.focusService.focusInto(focusableContainers[nextIdx]);\n };\n GridCtrl.prototype.focusInnerElement = function (fromBottom) {\n var focusableContainers = this.view.getFocusableContainers();\n var allColumns = this.columnModel.getAllDisplayedColumns();\n if (fromBottom) {\n if (focusableContainers.length > 1) {\n return this.focusService.focusInto(last(focusableContainers), true);\n }\n var lastColumn = last(allColumns);\n if (this.focusService.focusGridView(lastColumn, true)) {\n return true;\n }\n }\n if (this.gridOptionsService.getNum('headerHeight') === 0) {\n return this.focusService.focusGridView(allColumns[0]);\n }\n return this.focusService.focusFirstHeader();\n };\n GridCtrl.prototype.forceFocusOutOfContainer = function (up) {\n if (up === void 0) { up = false; }\n this.view.forceFocusOutOfContainer(up);\n };\n __decorate$G([\n Autowired('focusService')\n ], GridCtrl.prototype, \"focusService\", void 0);\n __decorate$G([\n Autowired('resizeObserverService')\n ], GridCtrl.prototype, \"resizeObserverService\", void 0);\n __decorate$G([\n Autowired('columnModel')\n ], GridCtrl.prototype, \"columnModel\", void 0);\n __decorate$G([\n Autowired('ctrlsService')\n ], GridCtrl.prototype, \"ctrlsService\", void 0);\n __decorate$G([\n Autowired('mouseEventService')\n ], GridCtrl.prototype, \"mouseEventService\", void 0);\n __decorate$G([\n Autowired('dragAndDropService')\n ], GridCtrl.prototype, \"dragAndDropService\", void 0);\n return GridCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$E = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridComp = /** @class */ (function (_super) {\n __extends$E(GridComp, _super);\n function GridComp(eGridDiv) {\n var _this = _super.call(this) || this;\n _this.eGridDiv = eGridDiv;\n return _this;\n }\n GridComp.prototype.postConstruct = function () {\n var _this = this;\n this.logger = this.loggerFactory.create('GridComp');\n var compProxy = {\n destroyGridUi: function () { return _this.destroyBean(_this); },\n setRtlClass: function (cssClass) { return _this.addCssClass(cssClass); },\n addOrRemoveKeyboardFocusClass: function (addOrRemove) { return _this.addOrRemoveCssClass(FocusService.AG_KEYBOARD_FOCUS, addOrRemove); },\n forceFocusOutOfContainer: this.forceFocusOutOfContainer.bind(this),\n updateLayoutClasses: this.updateLayoutClasses.bind(this),\n getFocusableContainers: this.getFocusableContainers.bind(this),\n setUserSelect: function (value) {\n _this.getGui().style.userSelect = value != null ? value : '';\n _this.getGui().style.webkitUserSelect = value != null ? value : '';\n },\n setCursor: function (value) {\n _this.getGui().style.cursor = value != null ? value : '';\n }\n };\n this.ctrl = this.createManagedBean(new GridCtrl());\n var template = this.createTemplate();\n this.setTemplate(template);\n this.ctrl.setComp(compProxy, this.eGridDiv, this.getGui());\n this.insertGridIntoDom();\n this.initialiseTabGuard({\n // we want to override the default behaviour to do nothing for onTabKeyDown\n onTabKeyDown: function () { return undefined; },\n focusInnerElement: function (fromBottom) { return _this.ctrl.focusInnerElement(fromBottom); }\n });\n };\n GridComp.prototype.insertGridIntoDom = function () {\n var _this = this;\n var eGui = this.getGui();\n this.eGridDiv.appendChild(eGui);\n this.addDestroyFunc(function () {\n _this.eGridDiv.removeChild(eGui);\n _this.logger.log('Grid removed from DOM');\n });\n };\n GridComp.prototype.updateLayoutClasses = function (cssClass, params) {\n var eRootWrapperBodyClassList = this.eRootWrapperBody.classList;\n eRootWrapperBodyClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n eRootWrapperBodyClassList.toggle(LayoutCssClasses.NORMAL, params.normal);\n eRootWrapperBodyClassList.toggle(LayoutCssClasses.PRINT, params.print);\n this.addOrRemoveCssClass(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n this.addOrRemoveCssClass(LayoutCssClasses.NORMAL, params.normal);\n this.addOrRemoveCssClass(LayoutCssClasses.PRINT, params.print);\n };\n GridComp.prototype.createTemplate = function () {\n var dropZones = this.ctrl.showDropZones() ? '<ag-grid-header-drop-zones></ag-grid-header-drop-zones>' : '';\n var sideBar = this.ctrl.showSideBar() ? '<ag-side-bar ref=\"sideBar\"></ag-side-bar>' : '';\n var statusBar = this.ctrl.showStatusBar() ? '<ag-status-bar ref=\"statusBar\"></ag-status-bar>' : '';\n var watermark = this.ctrl.showWatermark() ? '<ag-watermark></ag-watermark>' : '';\n var template = /* html */ \"<div class=\\\"ag-root-wrapper\\\" role=\\\"presentation\\\">\\n \" + dropZones + \"\\n <div class=\\\"ag-root-wrapper-body\\\" ref=\\\"rootWrapperBody\\\" role=\\\"presentation\\\">\\n <ag-grid-body ref=\\\"gridBody\\\"></ag-grid-body>\\n \" + sideBar + \"\\n </div>\\n \" + statusBar + \"\\n <ag-pagination></ag-pagination>\\n \" + watermark + \"\\n </div>\";\n return template;\n };\n GridComp.prototype.getFocusableElement = function () {\n return this.eRootWrapperBody;\n };\n GridComp.prototype.getFocusableContainers = function () {\n var focusableContainers = [\n this.gridBodyComp.getGui()\n ];\n if (this.sideBarComp) {\n focusableContainers.push(this.sideBarComp.getGui());\n }\n return focusableContainers.filter(function (el) { return isVisible(el); });\n };\n __decorate$F([\n Autowired('loggerFactory')\n ], GridComp.prototype, \"loggerFactory\", void 0);\n __decorate$F([\n RefSelector('gridBody')\n ], GridComp.prototype, \"gridBodyComp\", void 0);\n __decorate$F([\n RefSelector('sideBar')\n ], GridComp.prototype, \"sideBarComp\", void 0);\n __decorate$F([\n RefSelector('rootWrapperBody')\n ], GridComp.prototype, \"eRootWrapperBody\", void 0);\n __decorate$F([\n PostConstruct\n ], GridComp.prototype, \"postConstruct\", null);\n return GridComp;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$D = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$7 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$6 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$7(arguments[i]));\n return ar;\n};\nvar SortController = /** @class */ (function (_super) {\n __extends$D(SortController, _super);\n function SortController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortController_1 = SortController;\n SortController.prototype.progressSort = function (column, multiSort, source) {\n var nextDirection = this.getNextSortDirection(column);\n this.setSortForColumn(column, nextDirection, multiSort, source);\n };\n SortController.prototype.setSortForColumn = function (column, sort, multiSort, source) {\n // auto correct - if sort not legal value, then set it to 'no sort' (which is null)\n if (sort !== 'asc' && sort !== 'desc') {\n sort = null;\n }\n var isColumnsSortingCoupledToGroup = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n var columnsToUpdate = [column];\n if (isColumnsSortingCoupledToGroup && column.getColDef().showRowGroup) {\n if (!column.getColDef().field) {\n // if no field is present, this column shouldn't have it's own sort direction\n columnsToUpdate = [];\n }\n var rowGroupColumns = this.columnModel.getSourceColumnsForGroupColumn(column);\n var sortableRowGroupColumns = rowGroupColumns === null || rowGroupColumns === void 0 ? void 0 : rowGroupColumns.filter(function (col) { return col.getColDef().sortable; });\n if (sortableRowGroupColumns) {\n columnsToUpdate = __spread$6(columnsToUpdate, sortableRowGroupColumns);\n }\n }\n columnsToUpdate.forEach(function (col) { return col.setSort(sort, source); });\n var doingMultiSort = (multiSort || this.gridOptionsService.is('alwaysMultiSort')) && !this.gridOptionsService.is('suppressMultiSort');\n // clear sort on all columns except those changed, and update the icons\n if (!doingMultiSort) {\n this.clearSortBarTheseColumns(columnsToUpdate, source);\n }\n // sortIndex used for knowing order of cols when multi-col sort\n this.updateSortIndex(column);\n this.dispatchSortChangedEvents(source);\n };\n SortController.prototype.updateSortIndex = function (lastColToChange) {\n var isCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n var groupParent = this.columnModel.getGroupDisplayColumnForGroup(lastColToChange.getId());\n var lastSortIndexCol = isCoupled ? groupParent || lastColToChange : lastColToChange;\n var allSortedCols = this.getColumnsWithSortingOrdered(true);\n // reset sort index on everything\n this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(function (col) { return col.setSortIndex(null); });\n var allSortedColsWithoutChanges = allSortedCols.filter(function (col) { return col !== lastSortIndexCol; });\n var sortedColsWithIndices = !!lastSortIndexCol.getSort() ? __spread$6(allSortedColsWithoutChanges, [lastSortIndexCol]) : allSortedColsWithoutChanges;\n sortedColsWithIndices.forEach(function (col, idx) { return (col.setSortIndex(idx)); });\n };\n // gets called by API, so if data changes, use can call this, which will end up\n // working out the sort order again of the rows.\n SortController.prototype.onSortChanged = function (source) {\n this.dispatchSortChangedEvents(source);\n };\n SortController.prototype.isSortActive = function () {\n // pull out all the columns that have sorting set\n var allCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();\n var sortedCols = allCols.filter(function (column) { return !!column.getSort(); });\n return sortedCols && sortedCols.length > 0;\n };\n SortController.prototype.dispatchSortChangedEvents = function (source) {\n var event = {\n type: Events.EVENT_SORT_CHANGED,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n SortController.prototype.clearSortBarTheseColumns = function (columnsToSkip, source) {\n this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(function (columnToClear) {\n // Do not clear if either holding shift, or if column in question was clicked\n if (!columnsToSkip.includes(columnToClear)) {\n // setting to 'undefined' as null means 'none' rather than cleared, otherwise issue will arise\n // if sort order is: ['desc', null , 'asc'], as it will start at null rather than 'desc'.\n columnToClear.setSort(undefined, source);\n }\n });\n };\n SortController.prototype.getNextSortDirection = function (column) {\n var sortingOrder;\n if (column.getColDef().sortingOrder) {\n sortingOrder = column.getColDef().sortingOrder;\n }\n else if (this.gridOptionsService.get('sortingOrder')) {\n sortingOrder = this.gridOptionsService.get('sortingOrder');\n }\n else {\n sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;\n }\n if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n console.warn(\"AG Grid: sortingOrder must be an array with at least one element, currently it's \" + sortingOrder);\n return null;\n }\n // if a field is present, this column could have it's own sort, otherwise it's calculated from other columns\n var currentSort = !!column.getColDef().field ? column.getSort() : this.getDisplaySortForColumn(column);\n var result = sortingOrder[0];\n if (currentSort !== 'mixed') {\n var currentIndex = sortingOrder.indexOf(currentSort);\n var notInArray = currentIndex < 0;\n var lastItemInArray = currentIndex == sortingOrder.length - 1;\n if (notInArray || lastItemInArray) {\n result = sortingOrder[0];\n }\n else {\n result = sortingOrder[currentIndex + 1];\n }\n }\n // verify the sort type exists, as the user could provide the sortingOrder, need to make sure it's valid\n if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {\n console.warn('AG Grid: invalid sort type ' + result);\n return null;\n }\n return result;\n };\n /**\n * @param includeRedundantColumns whether to include non-grouped, non-secondary, non-aggregated columns when pivot active\n * @returns a map of sort indexes for every sorted column, if groups sort primaries then they will have equivalent indices\n */\n SortController.prototype.getIndexedSortMap = function (includeRedundantColumns) {\n var _this = this;\n if (includeRedundantColumns === void 0) { includeRedundantColumns = false; }\n // pull out all the columns that have sorting set\n var allSortedCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns()\n .filter(function (col) { return !!col.getSort(); });\n if (!includeRedundantColumns && this.columnModel.isPivotMode()) {\n allSortedCols = allSortedCols.filter(function (col) { return (!!col.getAggFunc() || !col.isPrimary() || _this.columnModel.getGroupDisplayColumnForGroup(col.getId())); });\n }\n var sortedRowGroupCols = this.columnModel.getRowGroupColumns()\n .filter(function (col) { return !!col.getSort(); });\n var isSortLinked = this.gridOptionsService.isColumnsSortingCoupledToGroup() && !!sortedRowGroupCols.length;\n if (isSortLinked) {\n allSortedCols = __spread$6(new Set(\n // if linked sorting, replace all columns with the display group column for index purposes, and ensure uniqueness\n allSortedCols.map(function (col) { var _a; return (_a = _this.columnModel.getGroupDisplayColumnForGroup(col.getId())) !== null && _a !== void 0 ? _a : col; })));\n }\n // when both cols are missing sortIndex, we use the position of the col in all cols list.\n // this means if colDefs only have sort, but no sortIndex, we deterministically pick which\n // cols is sorted by first.\n var allColsIndexes = {};\n allSortedCols.forEach(function (col, index) { return allColsIndexes[col.getId()] = index; });\n // put the columns in order of which one got sorted first\n allSortedCols.sort(function (a, b) {\n var iA = a.getSortIndex();\n var iB = b.getSortIndex();\n if (iA != null && iB != null) {\n return iA - iB; // both present, normal comparison\n }\n else if (iA == null && iB == null) {\n // both missing, compare using column positions\n var posA = allColsIndexes[a.getId()];\n var posB = allColsIndexes[b.getId()];\n return posA > posB ? 1 : -1;\n }\n else if (iB == null) {\n return -1; // iB missing\n }\n else {\n return 1; // iA missing\n }\n });\n var indexMap = new Map();\n allSortedCols.forEach(function (col, idx) { return indexMap.set(col, idx); });\n // add the row group cols back\n if (isSortLinked) {\n sortedRowGroupCols.forEach(function (col) {\n var groupDisplayCol = _this.columnModel.getGroupDisplayColumnForGroup(col.getId());\n indexMap.set(col, indexMap.get(groupDisplayCol));\n });\n }\n return indexMap;\n };\n SortController.prototype.getColumnsWithSortingOrdered = function (includeRedundantColumns) {\n if (includeRedundantColumns === void 0) { includeRedundantColumns = false; }\n // pull out all the columns that have sorting set\n return __spread$6(this.getIndexedSortMap(includeRedundantColumns).entries()).sort(function (_a, _b) {\n var _c = __read$7(_a, 2); _c[0]; var idx1 = _c[1];\n var _d = __read$7(_b, 2); _d[0]; var idx2 = _d[1];\n return idx1 - idx2;\n })\n .map(function (_a) {\n var _b = __read$7(_a, 1), col = _b[0];\n return col;\n });\n };\n // used by server side row models, to sent sort to server\n SortController.prototype.getSortModel = function () {\n // because this is used by the SSRM, we include redundant options and let the server decide\n return this.getColumnsWithSortingOrdered(true).map(function (column) { return ({\n sort: column.getSort(),\n colId: column.getId()\n }); });\n };\n SortController.prototype.getSortOptions = function () {\n // this is used for client side sorting, as such we can ignore redundant column sorts\n return this.getColumnsWithSortingOrdered().map(function (column) { return ({\n sort: column.getSort(),\n column: column\n }); });\n };\n SortController.prototype.canColumnDisplayMixedSort = function (column) {\n var isColumnSortCouplingActive = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n var isGroupDisplayColumn = !!column.getColDef().showRowGroup;\n return isColumnSortCouplingActive && isGroupDisplayColumn;\n };\n SortController.prototype.getDisplaySortForColumn = function (column) {\n var linkedColumns = this.columnModel.getSourceColumnsForGroupColumn(column);\n if (!this.canColumnDisplayMixedSort(column) || !(linkedColumns === null || linkedColumns === void 0 ? void 0 : linkedColumns.length)) {\n return column.getSort();\n }\n // if column has unique data, its sorting is independent - but can still be mixed\n var columnHasUniqueData = !!column.getColDef().field;\n var sortableColumns = columnHasUniqueData ? __spread$6([column], linkedColumns) : linkedColumns;\n var firstSort = sortableColumns[0].getSort();\n // the == is intentional, as null and undefined both represent no sort, which means they are equivalent\n var allMatch = sortableColumns.every(function (col) { return col.getSort() == firstSort; });\n if (!allMatch) {\n return 'mixed';\n }\n return firstSort;\n };\n SortController.prototype.getDisplaySortIndexForColumn = function (column) {\n return this.getIndexedSortMap().get(column);\n };\n var SortController_1;\n SortController.DEFAULT_SORTING_ORDER = ['asc', 'desc', null];\n __decorate$E([\n Autowired('columnModel')\n ], SortController.prototype, \"columnModel\", void 0);\n SortController = SortController_1 = __decorate$E([\n Bean('sortController')\n ], SortController);\n return SortController;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$C = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnHoverService = /** @class */ (function (_super) {\n __extends$C(ColumnHoverService, _super);\n function ColumnHoverService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnHoverService.prototype.setMouseOver = function (columns) {\n this.selectedColumns = columns;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.clearMouseOver = function () {\n this.selectedColumns = null;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.isHovered = function (column) {\n return !!this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;\n };\n ColumnHoverService = __decorate$D([\n Bean('columnHoverService')\n ], ColumnHoverService);\n return ColumnHoverService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$B = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnAnimationService = /** @class */ (function (_super) {\n __extends$B(ColumnAnimationService, _super);\n function ColumnAnimationService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.executeNextFuncs = [];\n _this.executeLaterFuncs = [];\n _this.active = false;\n _this.animationThreadCount = 0;\n return _this;\n }\n ColumnAnimationService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) { return _this.gridBodyCtrl = p.gridBodyCtrl; });\n };\n ColumnAnimationService.prototype.isActive = function () {\n return this.active;\n };\n ColumnAnimationService.prototype.start = function () {\n if (this.active) {\n return;\n }\n if (this.gridOptionsService.is('suppressColumnMoveAnimation')) {\n return;\n }\n // if doing RTL, we don't animate open / close as due to how the pixels are inverted,\n // the animation moves all the row the the right rather than to the left (ie it's the static\n // columns that actually get their coordinates updated)\n if (this.gridOptionsService.is('enableRtl')) {\n return;\n }\n this.ensureAnimationCssClassPresent();\n this.active = true;\n };\n ColumnAnimationService.prototype.finish = function () {\n if (!this.active) {\n return;\n }\n this.flush();\n this.active = false;\n };\n ColumnAnimationService.prototype.executeNextVMTurn = function (func) {\n if (this.active) {\n this.executeNextFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {\n if (this.active) {\n this.executeLaterFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {\n var _this = this;\n // up the count, so we can tell if someone else has updated the count\n // by the time the 'wait' func executes\n this.animationThreadCount++;\n var animationThreadCountCopy = this.animationThreadCount;\n this.gridBodyCtrl.setColumnMovingCss(true);\n this.executeLaterFuncs.push(function () {\n // only remove the class if this thread was the last one to update it\n if (_this.animationThreadCount === animationThreadCountCopy) {\n _this.gridBodyCtrl.setColumnMovingCss(false);\n }\n });\n };\n ColumnAnimationService.prototype.flush = function () {\n var nowFuncs = this.executeNextFuncs;\n this.executeNextFuncs = [];\n var waitFuncs = this.executeLaterFuncs;\n this.executeLaterFuncs = [];\n if (nowFuncs.length === 0 && waitFuncs.length === 0) {\n return;\n }\n window.setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);\n window.setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);\n };\n __decorate$C([\n Autowired('ctrlsService')\n ], ColumnAnimationService.prototype, \"ctrlsService\", void 0);\n __decorate$C([\n PostConstruct\n ], ColumnAnimationService.prototype, \"postConstruct\", null);\n ColumnAnimationService = __decorate$C([\n Bean('columnAnimationService')\n ], ColumnAnimationService);\n return ColumnAnimationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$A = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationAutoPageSizeService = /** @class */ (function (_super) {\n __extends$A(PaginationAutoPageSizeService, _super);\n function PaginationAutoPageSizeService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PaginationAutoPageSizeService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.centerRowContainerCon = p.centerRowContainerCtrl;\n _this.addManagedListener(_this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, _this.checkPageSize.bind(_this));\n _this.addManagedListener(_this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, _this.checkPageSize.bind(_this));\n _this.checkPageSize();\n });\n };\n PaginationAutoPageSizeService.prototype.notActive = function () {\n return !this.gridOptionsService.is('paginationAutoPageSize') || this.centerRowContainerCon == null;\n };\n PaginationAutoPageSizeService.prototype.checkPageSize = function () {\n var _this = this;\n if (this.notActive()) {\n return;\n }\n var bodyHeight = this.centerRowContainerCon.getViewportSizeFeature().getBodyHeight();\n if (bodyHeight > 0) {\n var update_1 = function () {\n var rowHeight = _this.gridOptionsService.getRowHeightAsNumber();\n var newPageSize = Math.floor(bodyHeight / rowHeight);\n _this.gridOptionsService.set('paginationPageSize', newPageSize);\n };\n if (!this.isBodyRendered) {\n update_1();\n this.isBodyRendered = true;\n }\n else {\n debounce(function () { return update_1(); }, 50)();\n }\n }\n else {\n this.isBodyRendered = false;\n }\n };\n __decorate$B([\n Autowired('ctrlsService')\n ], PaginationAutoPageSizeService.prototype, \"ctrlsService\", void 0);\n __decorate$B([\n PostConstruct\n ], PaginationAutoPageSizeService.prototype, \"postConstruct\", null);\n PaginationAutoPageSizeService = __decorate$B([\n Bean('paginationAutoPageSizeService')\n ], PaginationAutoPageSizeService);\n return PaginationAutoPageSizeService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueCache = /** @class */ (function (_super) {\n __extends$z(ValueCache, _super);\n function ValueCache() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cacheVersion = 0;\n return _this;\n }\n ValueCache.prototype.init = function () {\n this.active = this.gridOptionsService.is('valueCache');\n this.neverExpires = this.gridOptionsService.is('valueCacheNeverExpires');\n };\n ValueCache.prototype.onDataChanged = function () {\n if (this.neverExpires) {\n return;\n }\n this.expire();\n };\n ValueCache.prototype.expire = function () {\n this.cacheVersion++;\n };\n ValueCache.prototype.setValue = function (rowNode, colId, value) {\n if (this.active) {\n if (rowNode.__cacheVersion !== this.cacheVersion) {\n rowNode.__cacheVersion = this.cacheVersion;\n rowNode.__cacheData = {};\n }\n rowNode.__cacheData[colId] = value;\n }\n };\n ValueCache.prototype.getValue = function (rowNode, colId) {\n if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {\n return undefined;\n }\n return rowNode.__cacheData[colId];\n };\n __decorate$A([\n PostConstruct\n ], ValueCache.prototype, \"init\", null);\n ValueCache = __decorate$A([\n Bean('valueCache')\n ], ValueCache);\n return ValueCache;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// Matches value in clipboard module\nvar SOURCE_PASTE = 'paste';\nvar ChangeDetectionService = /** @class */ (function (_super) {\n __extends$y(ChangeDetectionService, _super);\n function ChangeDetectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChangeDetectionService.prototype.init = function () {\n if (this.rowModel.getType() === 'clientSide') {\n this.clientSideRowModel = this.rowModel;\n }\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));\n };\n ChangeDetectionService.prototype.onCellValueChanged = function (event) {\n // Clipboard service manages its own change detection, so no need to do it here.\n // The clipboard manages its own as otherwise this would happen once for every cell\n // that got updated as part of a paste operation, so e.g. if 100 cells in a paste operation,\n // this doChangeDetection would get called 100 times (once for each cell), instead clipboard\n // service executes the logic we have here once (in essence batching up all cell changes\n // into one change detection).\n if (event.source === SOURCE_PASTE) {\n return;\n }\n this.doChangeDetection(event.node, event.column);\n };\n ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {\n if (this.gridOptionsService.is('suppressChangeDetection')) {\n return;\n }\n // step 1 of change detection is to update the aggregated values\n if (this.clientSideRowModel && !rowNode.isRowPinned()) {\n var onlyChangedColumns = this.gridOptionsService.is('aggregateOnlyChangedColumns');\n var changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n changedPath.addParentNode(rowNode.parent, [column]);\n this.clientSideRowModel.doAggregate(changedPath);\n }\n // step 2 of change detection is to refresh the cells\n this.rowRenderer.refreshCells();\n };\n __decorate$z([\n Autowired('rowModel')\n ], ChangeDetectionService.prototype, \"rowModel\", void 0);\n __decorate$z([\n Autowired('rowRenderer')\n ], ChangeDetectionService.prototype, \"rowRenderer\", void 0);\n __decorate$z([\n PostConstruct\n ], ChangeDetectionService.prototype, \"init\", null);\n ChangeDetectionService = __decorate$z([\n Bean('changeDetectionService')\n ], ChangeDetectionService);\n return ChangeDetectionService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$x = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgComponentUtils = /** @class */ (function (_super) {\n __extends$x(AgComponentUtils, _super);\n function AgComponentUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AgComponentUtils.prototype.adaptFunction = function (propertyName, jsCompFunc) {\n var metadata = this.componentMetadataProvider.retrieve(propertyName);\n if (metadata && metadata.functionAdapter) {\n return metadata.functionAdapter(jsCompFunc);\n }\n return null;\n };\n AgComponentUtils.prototype.adaptCellRendererFunction = function (callback) {\n var Adapter = /** @class */ (function () {\n function Adapter() {\n }\n Adapter.prototype.refresh = function (params) {\n return false;\n };\n Adapter.prototype.getGui = function () {\n return this.eGui;\n };\n Adapter.prototype.init = function (params) {\n var callbackResult = callback(params);\n var type = typeof callbackResult;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n this.eGui = loadTemplate('<span>' + callbackResult + '</span>');\n return;\n }\n if (callbackResult == null) {\n this.eGui = loadTemplate('<span></span>');\n return;\n }\n this.eGui = callbackResult;\n };\n return Adapter;\n }());\n return Adapter;\n };\n AgComponentUtils.prototype.doesImplementIComponent = function (candidate) {\n if (!candidate) {\n return false;\n }\n return candidate.prototype && 'getGui' in candidate.prototype;\n };\n __decorate$y([\n Autowired(\"componentMetadataProvider\")\n ], AgComponentUtils.prototype, \"componentMetadataProvider\", void 0);\n AgComponentUtils = __decorate$y([\n Bean(\"agComponentUtils\")\n ], AgComponentUtils);\n return AgComponentUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$w = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ComponentMetadataProvider = /** @class */ (function (_super) {\n __extends$w(ComponentMetadataProvider, _super);\n function ComponentMetadataProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComponentMetadataProvider.prototype.postConstruct = function () {\n this.componentMetaData = {\n dateComponent: {\n mandatoryMethodList: ['getDate', 'setDate'],\n optionalMethodList: ['afterGuiAttached', 'setInputPlaceholder', 'setInputAriaLabel']\n },\n detailCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n headerComponent: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh']\n },\n headerGroupComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n noRowsOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n floatingFilterComponent: {\n mandatoryMethodList: ['onParentModelChanged'],\n optionalMethodList: ['afterGuiAttached']\n },\n floatingFilterWrapperComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n cellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n cellEditor: {\n mandatoryMethodList: ['getValue'],\n optionalMethodList: ['isPopup', 'isCancelBeforeStart', 'isCancelAfterEnd', 'getPopupPosition', 'focusIn', 'focusOut', 'afterGuiAttached']\n },\n innerRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n fullWidthCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n groupRowRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n filter: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'afterGuiDetached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged', 'onAnyFilterChanged']\n },\n filterComponent: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'afterGuiDetached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged', 'onAnyFilterChanged']\n },\n statusPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n },\n toolPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached']\n },\n tooltipComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n }\n };\n };\n ComponentMetadataProvider.prototype.retrieve = function (name) {\n return this.componentMetaData[name];\n };\n __decorate$x([\n Autowired(\"agComponentUtils\")\n ], ComponentMetadataProvider.prototype, \"agComponentUtils\", void 0);\n __decorate$x([\n PostConstruct\n ], ComponentMetadataProvider.prototype, \"postConstruct\", null);\n ComponentMetadataProvider = __decorate$x([\n Bean(\"componentMetadataProvider\")\n ], ComponentMetadataProvider);\n return ComponentMetadataProvider;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$v = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$6 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$5 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$6(arguments[i]));\n return ar;\n};\nvar DEFAULT_ROW_HEIGHT = 25;\nvar MIN_COL_WIDTH = 10;\nvar MAT_GRID_SIZE = 8;\nvar BASE_GRID_SIZE = 4;\nvar BALHAM_GRID_SIZE = 4;\nvar ALPINE_GRID_SIZE = 6;\nvar HARD_CODED_SIZES = {\n // this item is required for custom themes\n 'ag-theme-custom': {\n headerHeight: 25,\n headerCellMinWidth: 24,\n listItemHeight: BASE_GRID_SIZE * 5,\n rowHeight: 25,\n chartMenuPanelWidth: 220\n },\n 'ag-theme-material': {\n headerHeight: MAT_GRID_SIZE * 7,\n headerCellMinWidth: 48,\n listItemHeight: MAT_GRID_SIZE * 4,\n rowHeight: MAT_GRID_SIZE * 6,\n chartMenuPanelWidth: 240\n },\n 'ag-theme-balham': {\n headerHeight: BALHAM_GRID_SIZE * 8,\n headerCellMinWidth: 24,\n listItemHeight: BALHAM_GRID_SIZE * 6,\n rowHeight: BALHAM_GRID_SIZE * 7,\n chartMenuPanelWidth: 220\n },\n 'ag-theme-alpine': {\n headerHeight: ALPINE_GRID_SIZE * 8,\n headerCellMinWidth: 36,\n listItemHeight: ALPINE_GRID_SIZE * 4,\n rowHeight: ALPINE_GRID_SIZE * 7,\n chartMenuPanelWidth: 240\n }\n};\n/**\n * this object contains a list of Sass variables and an array\n * of CSS styles required to get the correct value.\n * eg. $virtual-item-height requires a structure, so we can get its height.\n * <div class=\"ag-theme-balham\">\n * <div class=\"ag-virtual-list-container\">\n * <div class=\"ag-virtual-list-item\"></div>\n * </div>\n * </div>\n */\nvar SASS_PROPERTY_BUILDER = {\n headerHeight: ['ag-header-row'],\n headerCellMinWidth: ['ag-header-cell'],\n listItemHeight: ['ag-virtual-list-item'],\n rowHeight: ['ag-row'],\n chartMenuPanelWidth: ['ag-chart-docked-container']\n};\nvar Environment = /** @class */ (function (_super) {\n __extends$v(Environment, _super);\n function Environment() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.calculatedSizes = {};\n return _this;\n }\n Environment.prototype.postConstruct = function () {\n var _this = this;\n var _a;\n var el = (_a = this.getTheme().el) !== null && _a !== void 0 ? _a : this.eGridDiv;\n this.mutationObserver = new MutationObserver(function () {\n _this.calculatedSizes = {};\n _this.fireGridStylesChangedEvent();\n });\n this.mutationObserver.observe(el || this.eGridDiv, {\n attributes: true,\n attributeFilter: ['class']\n });\n };\n Environment.prototype.fireGridStylesChangedEvent = function () {\n var event = {\n type: Events.EVENT_GRID_STYLES_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n Environment.prototype.getSassVariable = function (key) {\n var _a = this.getTheme(), themeFamily = _a.themeFamily, el = _a.el;\n if (!themeFamily || themeFamily.indexOf('ag-theme') !== 0) {\n return;\n }\n if (!this.calculatedSizes) {\n this.calculatedSizes = {};\n }\n if (!this.calculatedSizes[themeFamily]) {\n this.calculatedSizes[themeFamily] = {};\n }\n var size = this.calculatedSizes[themeFamily][key];\n if (size != null) {\n return size;\n }\n this.calculatedSizes[themeFamily][key] = this.calculateValueForSassProperty(key, themeFamily, el);\n return this.calculatedSizes[themeFamily][key];\n };\n Environment.prototype.calculateValueForSassProperty = function (property, theme, themeElement) {\n var _a;\n var useTheme = 'ag-theme-' + (theme.match('material') ? 'material' : theme.match('balham') ? 'balham' : theme.match('alpine') ? 'alpine' : 'custom');\n var defaultValue = HARD_CODED_SIZES[useTheme][property];\n var eDocument = this.gridOptionsService.getDocument();\n if (!themeElement) {\n themeElement = this.eGridDiv;\n }\n if (!SASS_PROPERTY_BUILDER[property]) {\n return defaultValue;\n }\n var classList = SASS_PROPERTY_BUILDER[property];\n var div = eDocument.createElement('div');\n // this will apply SASS variables that were manually added to the current theme\n var classesFromThemeElement = Array.from(themeElement.classList);\n (_a = div.classList).add.apply(_a, __spread$5([theme], classesFromThemeElement));\n div.style.position = 'absolute';\n var el = classList.reduce(function (prevEl, currentClass) {\n var currentDiv = eDocument.createElement('div');\n currentDiv.style.position = 'static';\n currentDiv.classList.add(currentClass);\n prevEl.appendChild(currentDiv);\n return currentDiv;\n }, div);\n var calculatedValue = 0;\n if (eDocument.body) {\n eDocument.body.appendChild(div);\n var sizeName = property.toLowerCase().indexOf('height') !== -1 ? 'height' : 'width';\n calculatedValue = parseInt(window.getComputedStyle(el)[sizeName], 10);\n eDocument.body.removeChild(div);\n }\n return calculatedValue || defaultValue;\n };\n Environment.prototype.isThemeDark = function () {\n var theme = this.getTheme().theme;\n return !!theme && theme.indexOf('dark') >= 0;\n };\n Environment.prototype.chartMenuPanelWidth = function () {\n return this.getSassVariable('chartMenuPanelWidth');\n };\n Environment.prototype.getTheme = function () {\n var reg = /\\bag-(material|(?:theme-([\\w\\-]*)))\\b/g;\n var el = this.eGridDiv;\n var themeMatch = null;\n var allThemes = [];\n while (el) {\n themeMatch = reg.exec(el.className);\n if (!themeMatch) {\n el = el.parentElement || undefined;\n }\n else {\n var matched = el.className.match(reg);\n if (matched) {\n allThemes = matched;\n }\n break;\n }\n }\n if (!themeMatch) {\n return { allThemes: allThemes };\n }\n var theme = themeMatch[0];\n return { theme: theme, el: el, themeFamily: theme.replace(/-dark$/, ''), allThemes: allThemes };\n };\n Environment.prototype.getFromTheme = function (defaultValue, sassVariableName) {\n var _a;\n return (_a = this.getSassVariable(sassVariableName)) !== null && _a !== void 0 ? _a : defaultValue;\n };\n Environment.prototype.getDefaultRowHeight = function () {\n return this.getFromTheme(DEFAULT_ROW_HEIGHT, 'rowHeight');\n };\n Environment.prototype.getListItemHeight = function () {\n return this.getFromTheme(20, 'listItemHeight');\n };\n Environment.prototype.setRowHeightVariable = function (height) {\n var oldRowHeight = this.eGridDiv.style.getPropertyValue('--ag-line-height').trim();\n var newRowHeight = height + \"px\";\n if (oldRowHeight != newRowHeight) {\n this.eGridDiv.style.setProperty('--ag-line-height', newRowHeight);\n }\n };\n Environment.prototype.getMinColWidth = function () {\n var measuredMin = this.getFromTheme(null, 'headerCellMinWidth');\n return exists(measuredMin) ? Math.max(measuredMin, MIN_COL_WIDTH) : MIN_COL_WIDTH;\n };\n Environment.prototype.destroy = function () {\n this.calculatedSizes = null;\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n _super.prototype.destroy.call(this);\n };\n __decorate$w([\n Autowired('eGridDiv')\n ], Environment.prototype, \"eGridDiv\", void 0);\n __decorate$w([\n PostConstruct\n ], Environment.prototype, \"postConstruct\", null);\n Environment = __decorate$w([\n Bean('environment')\n ], Environment);\n return Environment;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$u = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$2 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\n/**\n * This class solves the 'max height' problem, where the user might want to show more data than\n * the max div height actually allows.\n */\nvar RowContainerHeightService = /** @class */ (function (_super) {\n __extends$u(RowContainerHeightService, _super);\n function RowContainerHeightService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // the scrollY position\n _this.scrollY = 0;\n // how tall the body is\n _this.uiBodyHeight = 0;\n return _this;\n }\n RowContainerHeightService.prototype.agWire = function (loggerFactory) {\n this.logger = loggerFactory.create(\"RowContainerHeightService\");\n };\n RowContainerHeightService.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));\n this.maxDivHeight = getMaxDivHeight();\n this.logger.log('maxDivHeight = ' + this.maxDivHeight);\n };\n RowContainerHeightService.prototype.isStretching = function () {\n return this.stretching;\n };\n RowContainerHeightService.prototype.getDivStretchOffset = function () {\n return this.divStretchOffset;\n };\n RowContainerHeightService.prototype.updateOffset = function () {\n if (!this.stretching) {\n return;\n }\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var newScrollY = gridBodyCon.getScrollFeature().getVScrollPosition().top;\n var newBodyHeight = this.getUiBodyHeight();\n var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n if (atLeastOneChanged) {\n this.scrollY = newScrollY;\n this.uiBodyHeight = newBodyHeight;\n this.calculateOffset();\n }\n };\n RowContainerHeightService.prototype.calculateOffset = function () {\n this.setUiContainerHeight(this.maxDivHeight);\n this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n var scrollPercent = this.scrollY / this.maxScrollY;\n var divStretchOffset = scrollPercent * this.pixelsToShave;\n this.logger.log(\"Div Stretch Offset = \" + divStretchOffset + \" (\" + this.pixelsToShave + \" * \" + scrollPercent + \")\");\n this.setDivStretchOffset(divStretchOffset);\n };\n RowContainerHeightService.prototype.setUiContainerHeight = function (height) {\n if (height !== this.uiContainerHeight) {\n this.uiContainerHeight = height;\n this.eventService.dispatchEvent({ type: Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED });\n }\n };\n RowContainerHeightService.prototype.clearOffset = function () {\n this.setUiContainerHeight(this.modelHeight);\n this.pixelsToShave = 0;\n this.setDivStretchOffset(0);\n };\n RowContainerHeightService.prototype.setDivStretchOffset = function (newOffset) {\n // because we are talking pixels, no point in confusing things with half numbers\n var newOffsetFloor = typeof newOffset === 'number' ? Math.floor(newOffset) : null;\n if (this.divStretchOffset === newOffsetFloor) {\n return;\n }\n this.divStretchOffset = newOffsetFloor;\n this.eventService.dispatchEvent({ type: Events.EVENT_HEIGHT_SCALE_CHANGED });\n };\n RowContainerHeightService.prototype.setModelHeight = function (modelHeight) {\n this.modelHeight = modelHeight;\n this.stretching = modelHeight != null // null happens when in print layout\n && this.maxDivHeight > 0\n && modelHeight > this.maxDivHeight;\n if (this.stretching) {\n this.calculateOffset();\n }\n else {\n this.clearOffset();\n }\n };\n RowContainerHeightService.prototype.getUiContainerHeight = function () {\n return this.uiContainerHeight;\n };\n RowContainerHeightService.prototype.getRealPixelPosition = function (modelPixel) {\n return modelPixel - this.divStretchOffset;\n };\n RowContainerHeightService.prototype.getUiBodyHeight = function () {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var pos = gridBodyCon.getScrollFeature().getVScrollPosition();\n return pos.bottom - pos.top;\n };\n RowContainerHeightService.prototype.getScrollPositionForPixel = function (rowTop) {\n if (this.pixelsToShave <= 0) {\n return rowTop;\n }\n var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n var scrollPercent = rowTop / modelMaxScroll;\n var scrollPixel = this.maxScrollY * scrollPercent;\n return scrollPixel;\n };\n __decorate$v([\n Autowired('ctrlsService')\n ], RowContainerHeightService.prototype, \"ctrlsService\", void 0);\n __decorate$v([\n __param$2(0, Qualifier(\"loggerFactory\"))\n ], RowContainerHeightService.prototype, \"agWire\", null);\n __decorate$v([\n PostConstruct\n ], RowContainerHeightService.prototype, \"postConstruct\", null);\n RowContainerHeightService = __decorate$v([\n Bean('rowContainerHeightService')\n ], RowContainerHeightService);\n return RowContainerHeightService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$t = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectableService = /** @class */ (function (_super) {\n __extends$t(SelectableService, _super);\n function SelectableService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectableService.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsService.is('groupSelectsChildren');\n this.isRowSelectableFunc = this.gridOptionsService.get('isRowSelectable');\n };\n SelectableService.prototype.updateSelectableAfterGrouping = function (rowNode) {\n if (this.isRowSelectableFunc) {\n var nextChildrenFunc = function (node) { return node.childrenAfterGroup; };\n this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);\n }\n };\n SelectableService.prototype.recurseDown = function (children, nextChildrenFunc) {\n var _this = this;\n if (!children) {\n return;\n }\n children.forEach(function (child) {\n if (!child.group) {\n return;\n } // only interested in groups\n if (child.hasChildren()) {\n _this.recurseDown(nextChildrenFunc(child), nextChildrenFunc);\n }\n var rowSelectable;\n if (_this.groupSelectsChildren) {\n // have this group selectable if at least one direct child is selectable\n var firstSelectable = (nextChildrenFunc(child) || []).find(function (rowNode) { return rowNode.selectable === true; });\n rowSelectable = exists(firstSelectable);\n }\n else {\n // directly retrieve selectable value from user callback\n rowSelectable = _this.isRowSelectableFunc ? _this.isRowSelectableFunc(child) : false;\n }\n child.setRowSelectable(rowSelectable);\n });\n };\n __decorate$u([\n PostConstruct\n ], SelectableService.prototype, \"init\", null);\n SelectableService = __decorate$u([\n Bean('selectableService')\n ], SelectableService);\n return SelectableService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$s = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationComp = /** @class */ (function (_super) {\n __extends$s(PaginationComp, _super);\n function PaginationComp() {\n var _this = _super.call(this) || this;\n _this.previousAndFirstButtonsDisabled = false;\n _this.nextButtonDisabled = false;\n _this.lastButtonDisabled = false;\n _this.areListenersSetup = false;\n return _this;\n }\n PaginationComp.prototype.postConstruct = function () {\n var isRtl = this.gridOptionsService.is('enableRtl');\n this.setTemplate(this.getTemplate());\n this.btFirst.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'last' : 'first', this.gridOptionsService));\n this.btPrevious.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'next' : 'previous', this.gridOptionsService));\n this.btNext.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'previous' : 'next', this.gridOptionsService));\n this.btLast.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'first' : 'last', this.gridOptionsService));\n this.addManagedPropertyListener('pagination', this.onPaginationChanged.bind(this));\n this.addManagedPropertyListener('suppressPaginationPanel', this.onPaginationChanged.bind(this));\n this.onPaginationChanged();\n };\n PaginationComp.prototype.onPaginationChanged = function () {\n var isPaging = this.gridOptionsService.is('pagination');\n var paginationPanelEnabled = isPaging && !this.gridOptionsService.is('suppressPaginationPanel');\n this.setDisplayed(paginationPanelEnabled);\n if (!paginationPanelEnabled) {\n return;\n }\n this.setupListeners();\n this.enableOrDisableButtons();\n this.updateRowLabels();\n this.setCurrentPageLabel();\n this.setTotalLabels();\n };\n PaginationComp.prototype.setupListeners = function () {\n var _this = this;\n if (!this.areListenersSetup) {\n this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n [\n { el: this.btFirst, fn: this.onBtFirst.bind(this) },\n { el: this.btPrevious, fn: this.onBtPrevious.bind(this) },\n { el: this.btNext, fn: this.onBtNext.bind(this) },\n { el: this.btLast, fn: this.onBtLast.bind(this) }\n ].forEach(function (item) {\n var el = item.el, fn = item.fn;\n _this.addManagedListener(el, 'click', fn);\n _this.addManagedListener(el, 'keydown', function (e) {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n e.preventDefault();\n fn();\n }\n });\n });\n this.areListenersSetup = true;\n }\n };\n PaginationComp.prototype.onBtFirst = function () {\n if (!this.previousAndFirstButtonsDisabled) {\n this.paginationProxy.goToFirstPage();\n }\n };\n PaginationComp.prototype.setCurrentPageLabel = function () {\n var pagesExist = this.paginationProxy.getTotalPages() > 0;\n var currentPage = this.paginationProxy.getCurrentPage();\n var toDisplay = pagesExist ? currentPage + 1 : 0;\n this.lbCurrent.innerHTML = this.formatNumber(toDisplay);\n };\n PaginationComp.prototype.formatNumber = function (value) {\n var userFunc = this.gridOptionsService.getCallback('paginationNumberFormatter');\n if (userFunc) {\n var params = { value: value };\n return userFunc(params);\n }\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n return formatNumberCommas(value, thousandSeparator, decimalSeparator);\n };\n PaginationComp.prototype.getTemplate = function () {\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var strPage = localeTextFunc('page', 'Page');\n var strTo = localeTextFunc('to', 'to');\n var strOf = localeTextFunc('of', 'of');\n var strFirst = localeTextFunc('firstPage', 'First Page');\n var strPrevious = localeTextFunc('previousPage', 'Previous Page');\n var strNext = localeTextFunc('nextPage', 'Next Page');\n var strLast = localeTextFunc('lastPage', 'Last Page');\n var compId = this.getCompId();\n return /* html */ \"<div class=\\\"ag-paging-panel ag-unselectable\\\" id=\\\"ag-\" + compId + \"\\\">\\n <span class=\\\"ag-paging-row-summary-panel\\\" role=\\\"status\\\">\\n <span id=\\\"ag-\" + compId + \"-first-row\\\" ref=\\\"lbFirstRowOnPage\\\" class=\\\"ag-paging-row-summary-panel-number\\\"></span>\\n <span id=\\\"ag-\" + compId + \"-to\\\">\" + strTo + \"</span>\\n <span id=\\\"ag-\" + compId + \"-last-row\\\" ref=\\\"lbLastRowOnPage\\\" class=\\\"ag-paging-row-summary-panel-number\\\"></span>\\n <span id=\\\"ag-\" + compId + \"-of\\\">\" + strOf + \"</span>\\n <span id=\\\"ag-\" + compId + \"-row-count\\\" ref=\\\"lbRecordCount\\\" class=\\\"ag-paging-row-summary-panel-number\\\"></span>\\n </span>\\n <span class=\\\"ag-paging-page-summary-panel\\\" role=\\\"presentation\\\">\\n <div ref=\\\"btFirst\\\" class=\\\"ag-paging-button\\\" role=\\\"button\\\" aria-label=\\\"\" + strFirst + \"\\\"></div>\\n <div ref=\\\"btPrevious\\\" class=\\\"ag-paging-button\\\" role=\\\"button\\\" aria-label=\\\"\" + strPrevious + \"\\\"></div>\\n <span class=\\\"ag-paging-description\\\" role=\\\"status\\\">\\n <span id=\\\"ag-\" + compId + \"-start-page\\\">\" + strPage + \"</span>\\n <span id=\\\"ag-\" + compId + \"-start-page-number\\\" ref=\\\"lbCurrent\\\" class=\\\"ag-paging-number\\\"></span>\\n <span id=\\\"ag-\" + compId + \"-of-page\\\">\" + strOf + \"</span>\\n <span id=\\\"ag-\" + compId + \"-of-page-number\\\" ref=\\\"lbTotal\\\" class=\\\"ag-paging-number\\\"></span>\\n </span>\\n <div ref=\\\"btNext\\\" class=\\\"ag-paging-button\\\" role=\\\"button\\\" aria-label=\\\"\" + strNext + \"\\\"></div>\\n <div ref=\\\"btLast\\\" class=\\\"ag-paging-button\\\" role=\\\"button\\\" aria-label=\\\"\" + strLast + \"\\\"></div>\\n </span>\\n </div>\";\n };\n PaginationComp.prototype.onBtNext = function () {\n if (!this.nextButtonDisabled) {\n this.paginationProxy.goToNextPage();\n }\n };\n PaginationComp.prototype.onBtPrevious = function () {\n if (!this.previousAndFirstButtonsDisabled) {\n this.paginationProxy.goToPreviousPage();\n }\n };\n PaginationComp.prototype.onBtLast = function () {\n if (!this.lastButtonDisabled) {\n this.paginationProxy.goToLastPage();\n }\n };\n PaginationComp.prototype.enableOrDisableButtons = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n this.previousAndFirstButtonsDisabled = currentPage === 0;\n this.toggleButtonDisabled(this.btFirst, this.previousAndFirstButtonsDisabled);\n this.toggleButtonDisabled(this.btPrevious, this.previousAndFirstButtonsDisabled);\n var zeroPagesToDisplay = this.isZeroPagesToDisplay();\n var onLastPage = maxRowFound && currentPage === (totalPages - 1);\n this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n this.lastButtonDisabled = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);\n this.toggleButtonDisabled(this.btNext, this.nextButtonDisabled);\n this.toggleButtonDisabled(this.btLast, this.lastButtonDisabled);\n };\n PaginationComp.prototype.toggleButtonDisabled = function (button, disabled) {\n setAriaDisabled(button, disabled);\n button.classList.toggle('ag-disabled', disabled);\n if (disabled) {\n button.removeAttribute('tabindex');\n }\n else {\n button.setAttribute('tabindex', '0');\n }\n };\n PaginationComp.prototype.updateRowLabels = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var pageSize = this.paginationProxy.getPageSize();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getMasterRowCount() : null;\n var startRow;\n var endRow;\n if (this.isZeroPagesToDisplay()) {\n startRow = endRow = 0;\n }\n else {\n startRow = (pageSize * currentPage) + 1;\n endRow = startRow + pageSize - 1;\n if (maxRowFound && endRow > rowCount) {\n endRow = rowCount;\n }\n }\n this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);\n if (this.rowNodeBlockLoader.isLoading()) {\n var translate = this.localeService.getLocaleTextFunc();\n this.lbLastRowOnPage.innerHTML = translate('pageLastRowUnknown', '?');\n }\n else {\n this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);\n }\n };\n PaginationComp.prototype.isZeroPagesToDisplay = function () {\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n return maxRowFound && totalPages === 0;\n };\n PaginationComp.prototype.setTotalLabels = function () {\n var lastPageFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var rowCount = lastPageFound ? this.paginationProxy.getMasterRowCount() : null;\n // When `pivotMode=true` and no grouping or value columns exist, a single 'hidden' group row (root node) is in\n // the grid and the pagination totals will correctly display total = 1. However this is confusing to users as\n // they can't see it. To address this UX issue we simply set the totals to zero in the pagination panel.\n if (rowCount === 1) {\n var firstRow = this.paginationProxy.getRow(0);\n // a group node with no group or agg data will not be visible to users\n var hiddenGroupRow = firstRow && firstRow.group && !(firstRow.groupData || firstRow.aggData);\n if (hiddenGroupRow) {\n this.setTotalLabelsToZero();\n return;\n }\n }\n if (lastPageFound) {\n this.lbTotal.innerHTML = this.formatNumber(totalPages);\n this.lbRecordCount.innerHTML = this.formatNumber(rowCount);\n }\n else {\n var moreText = this.localeService.getLocaleTextFunc()('more', 'more');\n this.lbTotal.innerHTML = moreText;\n this.lbRecordCount.innerHTML = moreText;\n }\n };\n PaginationComp.prototype.setTotalLabelsToZero = function () {\n this.lbFirstRowOnPage.innerHTML = this.formatNumber(0);\n this.lbCurrent.innerHTML = this.formatNumber(0);\n this.lbLastRowOnPage.innerHTML = this.formatNumber(0);\n this.lbTotal.innerHTML = this.formatNumber(0);\n this.lbRecordCount.innerHTML = this.formatNumber(0);\n };\n __decorate$t([\n Autowired('paginationProxy')\n ], PaginationComp.prototype, \"paginationProxy\", void 0);\n __decorate$t([\n Autowired('rowNodeBlockLoader')\n ], PaginationComp.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$t([\n RefSelector('btFirst')\n ], PaginationComp.prototype, \"btFirst\", void 0);\n __decorate$t([\n RefSelector('btPrevious')\n ], PaginationComp.prototype, \"btPrevious\", void 0);\n __decorate$t([\n RefSelector('btNext')\n ], PaginationComp.prototype, \"btNext\", void 0);\n __decorate$t([\n RefSelector('btLast')\n ], PaginationComp.prototype, \"btLast\", void 0);\n __decorate$t([\n RefSelector('lbRecordCount')\n ], PaginationComp.prototype, \"lbRecordCount\", void 0);\n __decorate$t([\n RefSelector('lbFirstRowOnPage')\n ], PaginationComp.prototype, \"lbFirstRowOnPage\", void 0);\n __decorate$t([\n RefSelector('lbLastRowOnPage')\n ], PaginationComp.prototype, \"lbLastRowOnPage\", void 0);\n __decorate$t([\n RefSelector('lbCurrent')\n ], PaginationComp.prototype, \"lbCurrent\", void 0);\n __decorate$t([\n RefSelector('lbTotal')\n ], PaginationComp.prototype, \"lbTotal\", void 0);\n __decorate$t([\n PostConstruct\n ], PaginationComp.prototype, \"postConstruct\", null);\n return PaginationComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$r = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LoadingType;\n(function (LoadingType) {\n LoadingType[LoadingType[\"Loading\"] = 0] = \"Loading\";\n LoadingType[LoadingType[\"NoRows\"] = 1] = \"NoRows\";\n})(LoadingType || (LoadingType = {}));\nvar OverlayWrapperComponent = /** @class */ (function (_super) {\n __extends$r(OverlayWrapperComponent, _super);\n function OverlayWrapperComponent() {\n var _this = _super.call(this, OverlayWrapperComponent.TEMPLATE) || this;\n _this.inProgress = false;\n _this.destroyRequested = false;\n _this.manuallyDisplayed = false;\n return _this;\n }\n OverlayWrapperComponent.prototype.updateLayoutClasses = function (cssClass, params) {\n var overlayWrapperClassList = this.eOverlayWrapper.classList;\n overlayWrapperClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n overlayWrapperClassList.toggle(LayoutCssClasses.NORMAL, params.normal);\n overlayWrapperClassList.toggle(LayoutCssClasses.PRINT, params.print);\n };\n OverlayWrapperComponent.prototype.postConstruct = function () {\n this.createManagedBean(new LayoutFeature(this));\n this.setDisplayed(false, { skipAriaHidden: true });\n this.addManagedListener(this.eventService, Events.EVENT_ROW_DATA_UPDATED, this.onRowDataUpdated.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n if (this.gridOptionsService.isRowModelType('clientSide') && !this.gridOptionsService.get('rowData')) {\n this.showLoadingOverlay();\n }\n this.gridApi.registerOverlayWrapperComp(this);\n };\n OverlayWrapperComponent.prototype.setWrapperTypeClass = function (loadingType) {\n var overlayWrapperClassList = this.eOverlayWrapper.classList;\n overlayWrapperClassList.toggle('ag-overlay-loading-wrapper', loadingType === LoadingType.Loading);\n overlayWrapperClassList.toggle('ag-overlay-no-rows-wrapper', loadingType === LoadingType.NoRows);\n };\n OverlayWrapperComponent.prototype.showLoadingOverlay = function () {\n if (this.gridOptionsService.is('suppressLoadingOverlay')) {\n return;\n }\n var params = {};\n var compDetails = this.userComponentFactory.getLoadingOverlayCompDetails(params);\n var promise = compDetails.newAgStackInstance();\n this.showOverlay(promise, LoadingType.Loading);\n };\n OverlayWrapperComponent.prototype.showNoRowsOverlay = function () {\n if (this.gridOptionsService.is('suppressNoRowsOverlay')) {\n return;\n }\n var params = {};\n var compDetails = this.userComponentFactory.getNoRowsOverlayCompDetails(params);\n var promise = compDetails.newAgStackInstance();\n this.showOverlay(promise, LoadingType.NoRows);\n };\n OverlayWrapperComponent.prototype.showOverlay = function (workItem, type) {\n var _this = this;\n if (this.inProgress) {\n return;\n }\n this.setWrapperTypeClass(type);\n this.destroyActiveOverlay();\n this.inProgress = true;\n if (workItem) {\n workItem.then(function (comp) {\n _this.inProgress = false;\n _this.eOverlayWrapper.appendChild(comp.getGui());\n _this.activeOverlay = comp;\n if (_this.destroyRequested) {\n _this.destroyRequested = false;\n _this.destroyActiveOverlay();\n }\n });\n }\n this.manuallyDisplayed = this.columnModel.isReady() && !this.paginationProxy.isEmpty();\n this.setDisplayed(true, { skipAriaHidden: true });\n };\n OverlayWrapperComponent.prototype.destroyActiveOverlay = function () {\n if (this.inProgress) {\n this.destroyRequested = true;\n return;\n }\n if (!this.activeOverlay) {\n return;\n }\n this.activeOverlay = this.getContext().destroyBean(this.activeOverlay);\n clearElement(this.eOverlayWrapper);\n };\n OverlayWrapperComponent.prototype.hideOverlay = function () {\n this.manuallyDisplayed = false;\n this.destroyActiveOverlay();\n this.setDisplayed(false, { skipAriaHidden: true });\n };\n OverlayWrapperComponent.prototype.destroy = function () {\n this.destroyActiveOverlay();\n _super.prototype.destroy.call(this);\n };\n OverlayWrapperComponent.prototype.showOrHideOverlay = function () {\n var isEmpty = this.paginationProxy.isEmpty();\n var isSuppressNoRowsOverlay = this.gridOptionsService.is('suppressNoRowsOverlay');\n if (isEmpty && !isSuppressNoRowsOverlay) {\n this.showNoRowsOverlay();\n }\n else {\n this.hideOverlay();\n }\n };\n OverlayWrapperComponent.prototype.onRowDataUpdated = function () {\n this.showOrHideOverlay();\n };\n OverlayWrapperComponent.prototype.onNewColumnsLoaded = function () {\n // hide overlay if columns and rows exist, this can happen if columns are loaded after data.\n // this problem exists before of the race condition between the services (column controller in this case)\n // and the view (grid panel). if the model beans were all initialised first, and then the view beans second,\n // this race condition would not happen.\n if (this.columnModel.isReady() && !this.paginationProxy.isEmpty() && !this.manuallyDisplayed) {\n this.hideOverlay();\n }\n };\n // wrapping in outer div, and wrapper, is needed to center the loading icon\n OverlayWrapperComponent.TEMPLATE = \"\\n <div class=\\\"ag-overlay\\\" aria-hidden=\\\"true\\\">\\n <div class=\\\"ag-overlay-panel\\\">\\n <div class=\\\"ag-overlay-wrapper\\\" ref=\\\"eOverlayWrapper\\\"></div>\\n </div>\\n </div>\";\n __decorate$s([\n Autowired('userComponentFactory')\n ], OverlayWrapperComponent.prototype, \"userComponentFactory\", void 0);\n __decorate$s([\n Autowired('paginationProxy')\n ], OverlayWrapperComponent.prototype, \"paginationProxy\", void 0);\n __decorate$s([\n Autowired('gridApi')\n ], OverlayWrapperComponent.prototype, \"gridApi\", void 0);\n __decorate$s([\n Autowired('columnModel')\n ], OverlayWrapperComponent.prototype, \"columnModel\", void 0);\n __decorate$s([\n RefSelector('eOverlayWrapper')\n ], OverlayWrapperComponent.prototype, \"eOverlayWrapper\", void 0);\n __decorate$s([\n PostConstruct\n ], OverlayWrapperComponent.prototype, \"postConstruct\", null);\n return OverlayWrapperComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowPositionUtils = /** @class */ (function (_super) {\n __extends$q(RowPositionUtils, _super);\n function RowPositionUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RowPositionUtils.prototype.getFirstRow = function () {\n var rowIndex = 0;\n var rowPinned;\n if (this.pinnedRowModel.getPinnedTopRowCount()) {\n rowPinned = 'top';\n }\n else if (this.rowModel.getRowCount()) {\n rowPinned = null;\n rowIndex = this.paginationProxy.getPageFirstRow();\n }\n else if (this.pinnedRowModel.getPinnedBottomRowCount()) {\n rowPinned = 'bottom';\n }\n return rowPinned === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };\n };\n RowPositionUtils.prototype.getLastRow = function () {\n var rowIndex;\n var rowPinned = null;\n var pinnedBottomCount = this.pinnedRowModel.getPinnedBottomRowCount();\n var pinnedTopCount = this.pinnedRowModel.getPinnedTopRowCount();\n if (pinnedBottomCount) {\n rowPinned = 'bottom';\n rowIndex = pinnedBottomCount - 1;\n }\n else if (this.rowModel.getRowCount()) {\n rowPinned = null;\n rowIndex = this.paginationProxy.getPageLastRow();\n }\n else if (pinnedTopCount) {\n rowPinned = 'top';\n rowIndex = pinnedTopCount - 1;\n }\n return rowIndex === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };\n };\n RowPositionUtils.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case 'top':\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case 'bottom':\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n RowPositionUtils.prototype.sameRow = function (rowA, rowB) {\n // if both missing\n if (!rowA && !rowB) {\n return true;\n }\n // if only one missing\n if ((rowA && !rowB) || (!rowA && rowB)) {\n return false;\n }\n // otherwise compare (use == to compare rowPinned because it can be null or undefined)\n return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;\n };\n // tests if this row selection is before the other row selection\n RowPositionUtils.prototype.before = function (rowA, rowB) {\n switch (rowA.rowPinned) {\n case 'top':\n // we we are floating top, and other isn't, then we are always before\n if (rowB.rowPinned !== 'top') {\n return true;\n }\n break;\n case 'bottom':\n // if we are floating bottom, and the other isn't, then we are never before\n if (rowB.rowPinned !== 'bottom') {\n return false;\n }\n break;\n default:\n // if we are not floating, but the other one is floating...\n if (exists(rowB.rowPinned)) {\n return rowB.rowPinned !== 'top';\n }\n break;\n }\n return rowA.rowIndex < rowB.rowIndex;\n };\n RowPositionUtils.prototype.rowMax = function (rows) {\n var _this = this;\n var max;\n rows.forEach(function (row) {\n if (max === undefined || _this.before(max, row)) {\n max = row;\n }\n });\n return max;\n };\n RowPositionUtils.prototype.rowMin = function (rows) {\n var _this = this;\n var min;\n rows.forEach(function (row) {\n if (min === undefined || _this.before(row, min)) {\n min = row;\n }\n });\n return min;\n };\n __decorate$r([\n Autowired('rowModel')\n ], RowPositionUtils.prototype, \"rowModel\", void 0);\n __decorate$r([\n Autowired('pinnedRowModel')\n ], RowPositionUtils.prototype, \"pinnedRowModel\", void 0);\n __decorate$r([\n Autowired('paginationProxy')\n ], RowPositionUtils.prototype, \"paginationProxy\", void 0);\n RowPositionUtils = __decorate$r([\n Bean('rowPositionUtils')\n ], RowPositionUtils);\n return RowPositionUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$p = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CellPositionUtils = /** @class */ (function (_super) {\n __extends$p(CellPositionUtils, _super);\n function CellPositionUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CellPositionUtils.prototype.createId = function (cellPosition) {\n var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;\n return this.createIdFromValues({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n };\n CellPositionUtils.prototype.createIdFromValues = function (cellPosition) {\n var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;\n return rowIndex + \".\" + (rowPinned == null ? 'null' : rowPinned) + \".\" + column.getId();\n };\n CellPositionUtils.prototype.equals = function (cellA, cellB) {\n var colsMatch = cellA.column === cellB.column;\n var floatingMatch = cellA.rowPinned === cellB.rowPinned;\n var indexMatch = cellA.rowIndex === cellB.rowIndex;\n return colsMatch && floatingMatch && indexMatch;\n };\n CellPositionUtils = __decorate$q([\n Bean('cellPositionUtils')\n ], CellPositionUtils);\n return CellPositionUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$o = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar UndoRedoAction = /** @class */ (function () {\n function UndoRedoAction(cellValueChanges) {\n this.cellValueChanges = cellValueChanges;\n }\n return UndoRedoAction;\n}());\nvar RangeUndoRedoAction = /** @class */ (function (_super) {\n __extends$o(RangeUndoRedoAction, _super);\n function RangeUndoRedoAction(cellValueChanges, initialRange, finalRange, ranges) {\n var _this = _super.call(this, cellValueChanges) || this;\n _this.initialRange = initialRange;\n _this.finalRange = finalRange;\n _this.ranges = ranges;\n return _this;\n }\n return RangeUndoRedoAction;\n}(UndoRedoAction));\nvar UndoRedoStack = /** @class */ (function () {\n function UndoRedoStack(maxStackSize) {\n this.actionStack = [];\n this.maxStackSize = maxStackSize ? maxStackSize : UndoRedoStack.DEFAULT_STACK_SIZE;\n this.actionStack = new Array(this.maxStackSize);\n }\n UndoRedoStack.prototype.pop = function () {\n return this.actionStack.pop();\n };\n UndoRedoStack.prototype.push = function (item) {\n var shouldAddActions = item.cellValueChanges && item.cellValueChanges.length > 0;\n if (!shouldAddActions) {\n return;\n }\n if (this.actionStack.length === this.maxStackSize) {\n this.actionStack.shift();\n }\n this.actionStack.push(item);\n };\n UndoRedoStack.prototype.clear = function () {\n this.actionStack = [];\n };\n UndoRedoStack.prototype.getCurrentStackSize = function () {\n return this.actionStack.length;\n };\n UndoRedoStack.DEFAULT_STACK_SIZE = 10;\n return UndoRedoStack;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$n = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$1 = (undefined && undefined.__assign) || function () {\n __assign$1 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$1.apply(this, arguments);\n};\nvar __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$5 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$4 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$5(arguments[i]));\n return ar;\n};\nvar UndoRedoService = /** @class */ (function (_super) {\n __extends$n(UndoRedoService, _super);\n function UndoRedoService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellValueChanges = [];\n _this.activeCellEdit = null;\n _this.activeRowEdit = null;\n _this.isPasting = false;\n _this.isRangeInAction = false;\n _this.onCellValueChanged = function (event) {\n var eventCell = { column: event.column, rowIndex: event.rowIndex, rowPinned: event.rowPinned };\n var isCellEditing = _this.activeCellEdit !== null && _this.cellPositionUtils.equals(_this.activeCellEdit, eventCell);\n var isRowEditing = _this.activeRowEdit !== null && _this.rowPositionUtils.sameRow(_this.activeRowEdit, eventCell);\n var shouldCaptureAction = isCellEditing || isRowEditing || _this.isPasting || _this.isRangeInAction;\n if (!shouldCaptureAction) {\n return;\n }\n var rowPinned = event.rowPinned, rowIndex = event.rowIndex, column = event.column, oldValue = event.oldValue, value = event.value;\n var cellValueChange = {\n rowPinned: rowPinned,\n rowIndex: rowIndex,\n columnId: column.getColId(),\n newValue: value,\n oldValue: oldValue\n };\n _this.cellValueChanges.push(cellValueChange);\n };\n _this.clearStacks = function () {\n _this.undoStack.clear();\n _this.redoStack.clear();\n };\n return _this;\n }\n UndoRedoService.prototype.init = function () {\n var _this = this;\n if (!this.gridOptionsService.is('undoRedoCellEditing')) {\n return;\n }\n var undoRedoLimit = this.gridOptionsService.getNum('undoRedoCellEditingLimit');\n if (undoRedoLimit <= 0) {\n return;\n }\n this.undoStack = new UndoRedoStack(undoRedoLimit);\n this.redoStack = new UndoRedoStack(undoRedoLimit);\n this.addRowEditingListeners();\n this.addCellEditingListeners();\n this.addPasteListeners();\n this.addFillListeners();\n this.addCellKeyListeners();\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged);\n // undo / redo is restricted to actual editing so we clear the stacks when other operations are\n // performed that change the order of the row / cols.\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, function (e) {\n if (!e.keepUndoRedoStack) {\n _this.clearStacks();\n }\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_ROW_DRAG_END, this.clearStacks);\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n });\n };\n UndoRedoService.prototype.getCurrentUndoStackSize = function () {\n return this.undoStack ? this.undoStack.getCurrentStackSize() : 0;\n };\n UndoRedoService.prototype.getCurrentRedoStackSize = function () {\n return this.redoStack ? this.redoStack.getCurrentStackSize() : 0;\n };\n UndoRedoService.prototype.undo = function (source) {\n var startEvent = {\n type: Events.EVENT_UNDO_STARTED,\n source: source\n };\n this.eventService.dispatchEvent(startEvent);\n var operationPerformed = this.undoRedo(this.undoStack, this.redoStack, 'initialRange', 'oldValue', 'undo');\n var endEvent = {\n type: Events.EVENT_UNDO_ENDED,\n source: source,\n operationPerformed: operationPerformed\n };\n this.eventService.dispatchEvent(endEvent);\n };\n UndoRedoService.prototype.redo = function (source) {\n var startEvent = {\n type: Events.EVENT_REDO_STARTED,\n source: source\n };\n this.eventService.dispatchEvent(startEvent);\n var operationPerformed = this.undoRedo(this.redoStack, this.undoStack, 'finalRange', 'newValue', 'redo');\n var endEvent = {\n type: Events.EVENT_REDO_ENDED,\n source: source,\n operationPerformed: operationPerformed\n };\n this.eventService.dispatchEvent(endEvent);\n };\n UndoRedoService.prototype.undoRedo = function (undoRedoStack, opposingUndoRedoStack, rangeProperty, cellValueChangeProperty, source) {\n if (!undoRedoStack) {\n return false;\n }\n var undoRedoAction = undoRedoStack.pop();\n if (!undoRedoAction || !undoRedoAction.cellValueChanges) {\n return false;\n }\n this.processAction(undoRedoAction, function (cellValueChange) { return cellValueChange[cellValueChangeProperty]; }, source);\n if (undoRedoAction instanceof RangeUndoRedoAction) {\n this.processRange(undoRedoAction.ranges || [undoRedoAction[rangeProperty]]);\n }\n else {\n this.processCell(undoRedoAction.cellValueChanges);\n }\n opposingUndoRedoStack.push(undoRedoAction);\n return true;\n };\n UndoRedoService.prototype.processAction = function (action, valueExtractor, source) {\n var _this = this;\n action.cellValueChanges.forEach(function (cellValueChange) {\n var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned, columnId = cellValueChange.columnId;\n var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n var currentRow = _this.getRowNode(rowPosition);\n // checks if the row has been filtered out\n if (!currentRow.displayed) {\n return;\n }\n currentRow.setDataValue(columnId, valueExtractor(cellValueChange), source);\n });\n };\n UndoRedoService.prototype.processRange = function (ranges) {\n var _this = this;\n var lastFocusedCell;\n this.rangeService.removeAllCellRanges(true);\n ranges.forEach(function (range, idx) {\n if (!range) {\n return;\n }\n var startRow = range.startRow;\n var endRow = range.endRow;\n if (idx === ranges.length - 1) {\n lastFocusedCell = {\n rowPinned: startRow.rowPinned,\n rowIndex: startRow.rowIndex,\n columnId: range.startColumn.getColId()\n };\n _this.setLastFocusedCell(lastFocusedCell);\n }\n var cellRangeParams = {\n rowStartIndex: startRow.rowIndex,\n rowStartPinned: startRow.rowPinned,\n rowEndIndex: endRow.rowIndex,\n rowEndPinned: endRow.rowPinned,\n columnStart: range.startColumn,\n columns: range.columns\n };\n _this.rangeService.addCellRange(cellRangeParams);\n });\n };\n UndoRedoService.prototype.processCell = function (cellValueChanges) {\n var cellValueChange = cellValueChanges[0];\n var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned;\n var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n var row = this.getRowNode(rowPosition);\n var lastFocusedCell = {\n rowPinned: cellValueChange.rowPinned,\n rowIndex: row.rowIndex,\n columnId: cellValueChange.columnId\n };\n // when single cells are being processed, they should be considered\n // as ranges when the rangeService is present (singleCellRanges).\n // otherwise focus will be restore but the range will not.\n this.setLastFocusedCell(lastFocusedCell, !!this.rangeService);\n };\n UndoRedoService.prototype.setLastFocusedCell = function (lastFocusedCell, setRangeToCell) {\n var rowIndex = lastFocusedCell.rowIndex, columnId = lastFocusedCell.columnId, rowPinned = lastFocusedCell.rowPinned;\n var scrollFeature = this.gridBodyCtrl.getScrollFeature();\n var column = this.columnModel.getGridColumn(columnId);\n if (!column) {\n return;\n }\n scrollFeature.ensureIndexVisible(rowIndex);\n scrollFeature.ensureColumnVisible(column);\n var cellPosition = { rowIndex: rowIndex, column: column, rowPinned: rowPinned };\n this.focusService.setFocusedCell(__assign$1(__assign$1({}, cellPosition), { forceBrowserFocus: true }));\n if (setRangeToCell) {\n this.rangeService.setRangeToCell(cellPosition);\n }\n };\n UndoRedoService.prototype.addRowEditingListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STARTED, function (e) {\n _this.activeRowEdit = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n });\n this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STOPPED, function () {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n _this.activeRowEdit = null;\n });\n };\n UndoRedoService.prototype.addCellEditingListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STARTED, function (e) {\n _this.activeCellEdit = { column: e.column, rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n });\n this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STOPPED, function (e) {\n _this.activeCellEdit = null;\n var shouldPushAction = e.valueChanged && !_this.activeRowEdit && !_this.isPasting && !_this.isRangeInAction;\n if (shouldPushAction) {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n }\n });\n };\n UndoRedoService.prototype.addPasteListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_PASTE_START, function () {\n _this.isPasting = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_PASTE_END, function () {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n _this.isPasting = false;\n });\n };\n UndoRedoService.prototype.addFillListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_FILL_START, function () {\n _this.isRangeInAction = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_FILL_END, function (event) {\n var action = new RangeUndoRedoAction(_this.cellValueChanges, event.initialRange, event.finalRange);\n _this.pushActionsToUndoStack(action);\n _this.isRangeInAction = false;\n });\n };\n UndoRedoService.prototype.addCellKeyListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START, function () {\n _this.isRangeInAction = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END, function () {\n var action;\n if (_this.rangeService && _this.gridOptionsService.isEnableRangeSelection()) {\n action = new RangeUndoRedoAction(_this.cellValueChanges, undefined, undefined, __spread$4(_this.rangeService.getCellRanges()));\n }\n else {\n action = new UndoRedoAction(_this.cellValueChanges);\n }\n _this.pushActionsToUndoStack(action);\n _this.isRangeInAction = false;\n });\n };\n UndoRedoService.prototype.pushActionsToUndoStack = function (action) {\n this.undoStack.push(action);\n this.cellValueChanges = [];\n this.redoStack.clear();\n };\n UndoRedoService.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case 'top':\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case 'bottom':\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n __decorate$p([\n Autowired('focusService')\n ], UndoRedoService.prototype, \"focusService\", void 0);\n __decorate$p([\n Autowired('ctrlsService')\n ], UndoRedoService.prototype, \"ctrlsService\", void 0);\n __decorate$p([\n Autowired('rowModel')\n ], UndoRedoService.prototype, \"rowModel\", void 0);\n __decorate$p([\n Autowired('pinnedRowModel')\n ], UndoRedoService.prototype, \"pinnedRowModel\", void 0);\n __decorate$p([\n Autowired('cellPositionUtils')\n ], UndoRedoService.prototype, \"cellPositionUtils\", void 0);\n __decorate$p([\n Autowired('rowPositionUtils')\n ], UndoRedoService.prototype, \"rowPositionUtils\", void 0);\n __decorate$p([\n Autowired('columnModel')\n ], UndoRedoService.prototype, \"columnModel\", void 0);\n __decorate$p([\n Optional('rangeService')\n ], UndoRedoService.prototype, \"rangeService\", void 0);\n __decorate$p([\n PostConstruct\n ], UndoRedoService.prototype, \"init\", null);\n UndoRedoService = __decorate$p([\n Bean('undoRedoService')\n ], UndoRedoService);\n return UndoRedoService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$m = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderPositionUtils = /** @class */ (function (_super) {\n __extends$m(HeaderPositionUtils, _super);\n function HeaderPositionUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HeaderPositionUtils.prototype.findHeader = function (focusedHeader, direction) {\n var nextColumn;\n var getGroupMethod;\n var getColMethod;\n if (focusedHeader.column instanceof ColumnGroup) {\n getGroupMethod = \"getDisplayedGroup\" + direction;\n nextColumn = this.columnModel[getGroupMethod](focusedHeader.column);\n }\n else {\n getColMethod = \"getDisplayedCol\" + direction;\n nextColumn = this.columnModel[getColMethod](focusedHeader.column);\n }\n if (!nextColumn) {\n return;\n }\n var headerRowIndex = focusedHeader.headerRowIndex;\n var currentRowType = this.getHeaderRowType(headerRowIndex);\n if (currentRowType === HeaderRowType.COLUMN_GROUP) {\n var columnGroup = nextColumn;\n if (columnGroup.isPadding() && this.isAnyChildSpanningHeaderHeight(columnGroup)) {\n var _a = this.getColumnVisibleChild(columnGroup, headerRowIndex, direction), nextFocusColumn = _a.nextFocusColumn, nextRow = _a.nextRow;\n if (nextFocusColumn) {\n nextColumn = nextFocusColumn;\n headerRowIndex = nextRow;\n }\n }\n }\n return {\n column: nextColumn,\n headerRowIndex: headerRowIndex\n };\n };\n HeaderPositionUtils.prototype.isAnyChildSpanningHeaderHeight = function (columnGroup) {\n if (!columnGroup) {\n return false;\n }\n return columnGroup.getLeafColumns().some(function (col) { return col.isSpanHeaderHeight(); });\n };\n HeaderPositionUtils.prototype.getColumnVisibleParent = function (currentColumn, currentIndex) {\n var currentRowType = this.getHeaderRowType(currentIndex);\n var isFloatingFilter = currentRowType === HeaderRowType.FLOATING_FILTER;\n var isColumn = currentRowType === HeaderRowType.COLUMN;\n var nextFocusColumn = isFloatingFilter ? currentColumn : currentColumn.getParent();\n var nextRow = currentIndex - 1;\n if (isColumn && this.isAnyChildSpanningHeaderHeight(currentColumn.getParent())) {\n while (nextFocusColumn && nextFocusColumn.isPadding()) {\n nextFocusColumn = nextFocusColumn.getParent();\n nextRow--;\n }\n if (nextRow < 0) {\n nextFocusColumn = currentColumn;\n nextRow = currentIndex;\n }\n }\n return { nextFocusColumn: nextFocusColumn, nextRow: nextRow };\n };\n HeaderPositionUtils.prototype.getColumnVisibleChild = function (column, currentIndex, direction) {\n if (direction === void 0) { direction = 'After'; }\n var currentRowType = this.getHeaderRowType(currentIndex);\n var nextFocusColumn = column;\n var nextRow = currentIndex + 1;\n if (currentRowType === HeaderRowType.COLUMN_GROUP) {\n var leafColumns = column.getLeafColumns();\n var leafChild = direction === 'After' ? leafColumns[0] : last(leafColumns);\n if (this.isAnyChildSpanningHeaderHeight(leafChild.getParent())) {\n nextFocusColumn = leafChild;\n var currentColumn = leafChild.getParent();\n while (currentColumn && currentColumn !== column) {\n currentColumn = currentColumn.getParent();\n nextRow++;\n }\n }\n else {\n nextFocusColumn = column.getDisplayedChildren()[0];\n }\n }\n return { nextFocusColumn: nextFocusColumn, nextRow: nextRow };\n };\n HeaderPositionUtils.prototype.getHeaderRowType = function (rowIndex) {\n var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n if (centerHeaderContainer) {\n return centerHeaderContainer.getRowType(rowIndex);\n }\n };\n HeaderPositionUtils.prototype.findColAtEdgeForHeaderRow = function (level, position) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var column = displayedColumns[position === 'start' ? 0 : displayedColumns.length - 1];\n if (!column) {\n return;\n }\n var childContainer = this.ctrlsService.getHeaderRowContainerCtrl(column.getPinned());\n var type = childContainer.getRowType(level);\n if (type == HeaderRowType.COLUMN_GROUP) {\n var columnGroup = this.columnModel.getColumnGroupAtLevel(column, level);\n return {\n headerRowIndex: level,\n column: columnGroup\n };\n }\n return {\n // if type==null, means the header level didn't exist\n headerRowIndex: type == null ? -1 : level,\n column: column\n };\n };\n __decorate$o([\n Autowired('columnModel')\n ], HeaderPositionUtils.prototype, \"columnModel\", void 0);\n __decorate$o([\n Autowired('ctrlsService')\n ], HeaderPositionUtils.prototype, \"ctrlsService\", void 0);\n HeaderPositionUtils = __decorate$o([\n Bean('headerPositionUtils')\n ], HeaderPositionUtils);\n return HeaderPositionUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnDefFactory = /** @class */ (function () {\n function ColumnDefFactory() {\n }\n ColumnDefFactory.prototype.buildColumnDefs = function (cols, rowGroupColumns, pivotColumns) {\n var _this = this;\n var res = [];\n var colGroupDefs = {};\n cols.forEach(function (col) {\n var colDef = _this.createDefFromColumn(col, rowGroupColumns, pivotColumns);\n var addToResult = true;\n var childDef = colDef;\n var pointer = col.getOriginalParent();\n while (pointer) {\n var parentDef = null;\n // we don't include padding groups, as the column groups provided\n // by application didn't have these. the whole point of padding groups\n // is to balance the column tree that the user provided.\n if (pointer.isPadding()) {\n pointer = pointer.getOriginalParent();\n continue;\n }\n // if colDef for this group already exists, use it\n var existingParentDef = colGroupDefs[pointer.getGroupId()];\n if (existingParentDef) {\n existingParentDef.children.push(childDef);\n // if we added to result, it would be the second time we did it\n addToResult = false;\n // we don't want to continue up the tree, as it has already been\n // done for this group\n break;\n }\n parentDef = _this.createDefFromGroup(pointer);\n if (parentDef) {\n parentDef.children = [childDef];\n colGroupDefs[parentDef.groupId] = parentDef;\n childDef = parentDef;\n pointer = pointer.getOriginalParent();\n }\n }\n if (addToResult) {\n res.push(childDef);\n }\n });\n return res;\n };\n ColumnDefFactory.prototype.createDefFromGroup = function (group) {\n var defCloned = deepCloneDefinition(group.getColGroupDef(), ['children']);\n if (defCloned) {\n defCloned.groupId = group.getGroupId();\n }\n return defCloned;\n };\n ColumnDefFactory.prototype.createDefFromColumn = function (col, rowGroupColumns, pivotColumns) {\n var colDefCloned = deepCloneDefinition(col.getColDef());\n colDefCloned.colId = col.getColId();\n colDefCloned.width = col.getActualWidth();\n colDefCloned.rowGroup = col.isRowGroupActive();\n colDefCloned.rowGroupIndex = col.isRowGroupActive() ? rowGroupColumns.indexOf(col) : null;\n colDefCloned.pivot = col.isPivotActive();\n colDefCloned.pivotIndex = col.isPivotActive() ? pivotColumns.indexOf(col) : null;\n colDefCloned.aggFunc = col.isValueActive() ? col.getAggFunc() : null;\n colDefCloned.hide = col.isVisible() ? undefined : true;\n colDefCloned.pinned = col.isPinned() ? col.getPinned() : null;\n colDefCloned.sort = col.getSort() ? col.getSort() : null;\n colDefCloned.sortIndex = col.getSortIndex() != null ? col.getSortIndex() : null;\n return colDefCloned;\n };\n ColumnDefFactory = __decorate$n([\n Bean('columnDefFactory')\n ], ColumnDefFactory);\n return ColumnDefFactory;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowCssClassCalculator = /** @class */ (function () {\n function RowCssClassCalculator() {\n }\n RowCssClassCalculator.prototype.getInitialRowClasses = function (params) {\n var classes = [];\n if (exists(params.extraCssClass)) {\n classes.push(params.extraCssClass);\n }\n classes.push('ag-row');\n classes.push(params.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');\n if (params.fadeRowIn) {\n classes.push('ag-opacity-zero');\n }\n classes.push(params.rowIsEven ? 'ag-row-even' : 'ag-row-odd');\n if (params.rowNode.isRowPinned()) {\n classes.push('ag-row-pinned');\n }\n if (params.rowNode.isSelected()) {\n classes.push('ag-row-selected');\n }\n if (params.rowNode.footer) {\n classes.push('ag-row-footer');\n }\n classes.push('ag-row-level-' + params.rowLevel);\n if (params.rowNode.stub) {\n classes.push('ag-row-loading');\n }\n if (params.fullWidthRow) {\n classes.push('ag-full-width-row');\n }\n if (params.expandable) {\n classes.push('ag-row-group');\n classes.push(params.rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');\n }\n if (params.rowNode.dragging) {\n classes.push('ag-row-dragging');\n }\n pushAll(classes, this.processClassesFromGridOptions(params.rowNode));\n pushAll(classes, this.preProcessRowClassRules(params.rowNode));\n // we use absolute position unless we are doing print layout\n classes.push(params.printLayout ? 'ag-row-position-relative' : 'ag-row-position-absolute');\n if (params.firstRowOnPage) {\n classes.push('ag-row-first');\n }\n if (params.lastRowOnPage) {\n classes.push('ag-row-last');\n }\n if (params.fullWidthRow) {\n if (params.pinned === 'left') {\n classes.push('ag-cell-last-left-pinned');\n }\n if (params.pinned === 'right') {\n classes.push('ag-cell-first-right-pinned');\n }\n }\n return classes;\n };\n RowCssClassCalculator.prototype.processClassesFromGridOptions = function (rowNode) {\n var res = [];\n var process = function (rowCls) {\n if (typeof rowCls === 'string') {\n res.push(rowCls);\n }\n else if (Array.isArray(rowCls)) {\n rowCls.forEach(function (e) { return res.push(e); });\n }\n };\n // part 1 - rowClass\n var rowClass = this.gridOptionsService.get('rowClass');\n if (rowClass) {\n if (typeof rowClass === 'function') {\n console.warn('AG Grid: rowClass should not be a function, please use getRowClass instead');\n return [];\n }\n process(rowClass);\n }\n // part 2 - rowClassFunc\n var rowClassFunc = this.gridOptionsService.getCallback('getRowClass');\n if (rowClassFunc) {\n var params = {\n data: rowNode.data,\n node: rowNode,\n rowIndex: rowNode.rowIndex\n };\n var rowClassFuncResult = rowClassFunc(params);\n process(rowClassFuncResult);\n }\n return res;\n };\n RowCssClassCalculator.prototype.preProcessRowClassRules = function (rowNode) {\n var res = [];\n this.processRowClassRules(rowNode, function (className) {\n res.push(className);\n }, function (className) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n RowCssClassCalculator.prototype.processRowClassRules = function (rowNode, onApplicableClass, onNotApplicableClass) {\n var rowClassParams = {\n data: rowNode.data,\n node: rowNode,\n rowIndex: rowNode.rowIndex,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n this.stylingService.processClassRules(this.gridOptionsService.get('rowClassRules'), rowClassParams, onApplicableClass, onNotApplicableClass);\n };\n RowCssClassCalculator.prototype.calculateRowLevel = function (rowNode) {\n if (rowNode.group) {\n return rowNode.level;\n }\n // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item\n return rowNode.parent ? (rowNode.parent.level + 1) : 0;\n };\n __decorate$m([\n Autowired('stylingService')\n ], RowCssClassCalculator.prototype, \"stylingService\", void 0);\n __decorate$m([\n Autowired('gridOptionsService')\n ], RowCssClassCalculator.prototype, \"gridOptionsService\", void 0);\n RowCssClassCalculator = __decorate$m([\n Bean('rowCssClassCalculator')\n ], RowCssClassCalculator);\n return RowCssClassCalculator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// this logic is used by both SSRM and CSRM\nvar RowNodeSorter = /** @class */ (function (_super) {\n __extends$l(RowNodeSorter, _super);\n function RowNodeSorter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RowNodeSorter.prototype.init = function () {\n var _this = this;\n this.isAccentedSort = this.gridOptionsService.is('accentedSort');\n this.primaryColumnsSortGroups = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n this.addManagedPropertyListener('accentedSort', function (propChange) { return _this.isAccentedSort = propChange.currentValue; });\n this.addManagedPropertyListener('autoGroupColumnDef', function () { return _this.primaryColumnsSortGroups = _this.gridOptionsService.isColumnsSortingCoupledToGroup(); });\n };\n RowNodeSorter.prototype.doFullSort = function (rowNodes, sortOptions) {\n var mapper = function (rowNode, pos) { return ({ currentPos: pos, rowNode: rowNode }); };\n var sortedRowNodes = rowNodes.map(mapper);\n sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n return sortedRowNodes.map(function (item) { return item.rowNode; });\n };\n RowNodeSorter.prototype.compareRowNodes = function (sortOptions, sortedNodeA, sortedNodeB) {\n var nodeA = sortedNodeA.rowNode;\n var nodeB = sortedNodeB.rowNode;\n // Iterate columns, return the first that doesn't match\n for (var i = 0, len = sortOptions.length; i < len; i++) {\n var sortOption = sortOptions[i];\n var isDescending = sortOption.sort === 'desc';\n var valueA = this.getValue(nodeA, sortOption.column);\n var valueB = this.getValue(nodeB, sortOption.column);\n var comparatorResult = void 0;\n var providedComparator = this.getComparator(sortOption, nodeA);\n if (providedComparator) {\n //if comparator provided, use it\n comparatorResult = providedComparator(valueA, valueB, nodeA, nodeB, isDescending);\n }\n else {\n //otherwise do our own comparison\n comparatorResult = _.defaultComparator(valueA, valueB, this.isAccentedSort);\n }\n // user provided comparators can return 'NaN' if they don't correctly handle 'undefined' values, this\n // typically occurs when the comparator is used on a group row\n var validResult = !isNaN(comparatorResult);\n if (validResult && comparatorResult !== 0) {\n return sortOption.sort === 'asc' ? comparatorResult : comparatorResult * -1;\n }\n }\n // All matched, we make is so that the original sort order is kept:\n return sortedNodeA.currentPos - sortedNodeB.currentPos;\n };\n RowNodeSorter.prototype.getComparator = function (sortOption, rowNode) {\n var column = sortOption.column;\n // comparator on col get preference over everything else\n var comparatorOnCol = column.getColDef().comparator;\n if (comparatorOnCol != null) {\n return comparatorOnCol;\n }\n if (!column.getColDef().showRowGroup) {\n return;\n }\n // if a 'field' is supplied on the autoGroupColumnDef we need to use the associated column comparator\n var groupLeafField = !rowNode.group && column.getColDef().field;\n if (!groupLeafField) {\n return;\n }\n var primaryColumn = this.columnModel.getPrimaryColumn(groupLeafField);\n if (!primaryColumn) {\n return;\n }\n return primaryColumn.getColDef().comparator;\n };\n RowNodeSorter.prototype.getValue = function (node, column) {\n var _a, _b;\n if (!this.primaryColumnsSortGroups) {\n return this.valueService.getValue(column, node, false, false);\n }\n var isNodeGroupedAtLevel = node.rowGroupColumn === column;\n if (isNodeGroupedAtLevel) {\n var isGroupRows = this.gridOptionsService.isGroupUseEntireRow(this.columnModel.isPivotActive());\n if (isGroupRows) {\n // if the column has a provided a keyCreator, we have to use the key, as the group could be\n // irrelevant to the column value\n var keyCreator = column.getColDef().keyCreator;\n if (keyCreator) {\n return node.key;\n }\n // if the group was generated from the column data, all the leaf children should return the same\n // value\n var leafChild = (_a = node.allLeafChildren) === null || _a === void 0 ? void 0 : _a[0];\n if (leafChild) {\n return this.valueService.getValue(column, leafChild, false, false);\n }\n return undefined;\n }\n var displayCol = this.columnModel.getGroupDisplayColumnForGroup(column.getId());\n if (!displayCol) {\n return undefined;\n }\n return (_b = node.groupData) === null || _b === void 0 ? void 0 : _b[displayCol.getId()];\n }\n if (node.group && column.getColDef().showRowGroup) {\n return undefined;\n }\n return this.valueService.getValue(column, node, false, false);\n };\n __decorate$l([\n Autowired('valueService')\n ], RowNodeSorter.prototype, \"valueService\", void 0);\n __decorate$l([\n Autowired('columnModel')\n ], RowNodeSorter.prototype, \"columnModel\", void 0);\n __decorate$l([\n PostConstruct\n ], RowNodeSorter.prototype, \"init\", null);\n RowNodeSorter = __decorate$l([\n Bean('rowNodeSorter')\n ], RowNodeSorter);\n return RowNodeSorter;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CtrlsService = /** @class */ (function (_super) {\n __extends$k(CtrlsService, _super);\n function CtrlsService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ready = false;\n _this.readyCallbacks = [];\n return _this;\n }\n CtrlsService_1 = CtrlsService;\n CtrlsService.prototype.checkReady = function () {\n this.ready =\n this.gridCtrl != null\n && this.gridBodyCtrl != null\n && this.centerRowContainerCtrl != null\n && this.leftRowContainerCtrl != null\n && this.rightRowContainerCtrl != null\n && this.bottomCenterRowContainerCtrl != null\n && this.bottomLeftRowContainerCtrl != null\n && this.bottomRightRowContainerCtrl != null\n && this.topCenterRowContainerCtrl != null\n && this.topLeftRowContainerCtrl != null\n && this.topRightRowContainerCtrl != null\n && this.stickyTopCenterRowContainerCtrl != null\n && this.stickyTopLeftRowContainerCtrl != null\n && this.stickyTopRightRowContainerCtrl != null\n && this.centerHeaderRowContainerCtrl != null\n && this.leftHeaderRowContainerCtrl != null\n && this.rightHeaderRowContainerCtrl != null\n && this.fakeHScrollComp != null\n && this.fakeVScrollComp != null\n && this.gridHeaderCtrl != null;\n if (this.ready) {\n var p_1 = this.createReadyParams();\n this.readyCallbacks.forEach(function (c) { return c(p_1); });\n this.readyCallbacks.length = 0;\n }\n };\n CtrlsService.prototype.whenReady = function (callback) {\n if (this.ready) {\n callback(this.createReadyParams());\n }\n else {\n this.readyCallbacks.push(callback);\n }\n };\n CtrlsService.prototype.createReadyParams = function () {\n return {\n centerRowContainerCtrl: this.centerRowContainerCtrl,\n leftRowContainerCtrl: this.leftRowContainerCtrl,\n rightRowContainerCtrl: this.rightRowContainerCtrl,\n bottomCenterRowContainerCtrl: this.bottomCenterRowContainerCtrl,\n bottomLeftRowContainerCtrl: this.bottomLeftRowContainerCtrl,\n bottomRightRowContainerCtrl: this.bottomRightRowContainerCtrl,\n topCenterRowContainerCtrl: this.topCenterRowContainerCtrl,\n topLeftRowContainerCtrl: this.topLeftRowContainerCtrl,\n topRightRowContainerCtrl: this.topRightRowContainerCtrl,\n stickyTopCenterRowContainerCtrl: this.stickyTopCenterRowContainerCtrl,\n stickyTopLeftRowContainerCtrl: this.stickyTopLeftRowContainerCtrl,\n stickyTopRightRowContainerCtrl: this.stickyTopRightRowContainerCtrl,\n centerHeaderRowContainerCtrl: this.centerHeaderRowContainerCtrl,\n leftHeaderRowContainerCtrl: this.leftHeaderRowContainerCtrl,\n rightHeaderRowContainerCtrl: this.rightHeaderRowContainerCtrl,\n fakeHScrollComp: this.fakeHScrollComp,\n fakeVScrollComp: this.fakeVScrollComp,\n gridBodyCtrl: this.gridBodyCtrl,\n gridCtrl: this.gridCtrl,\n gridHeaderCtrl: this.gridHeaderCtrl,\n };\n };\n CtrlsService.prototype.registerFakeHScrollComp = function (comp) {\n this.fakeHScrollComp = comp;\n this.checkReady();\n };\n CtrlsService.prototype.registerFakeVScrollComp = function (comp) {\n this.fakeVScrollComp = comp;\n this.checkReady();\n };\n CtrlsService.prototype.registerGridHeaderCtrl = function (gridHeaderCtrl) {\n this.gridHeaderCtrl = gridHeaderCtrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerCenterRowContainerCtrl = function (ctrl) {\n this.centerRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerLeftRowContainerCtrl = function (ctrl) {\n this.leftRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerRightRowContainerCtrl = function (ctrl) {\n this.rightRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerTopCenterRowContainerCtrl = function (ctrl) {\n this.topCenterRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerTopLeftRowContainerCon = function (ctrl) {\n this.topLeftRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerTopRightRowContainerCtrl = function (ctrl) {\n this.topRightRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerStickyTopCenterRowContainerCtrl = function (ctrl) {\n this.stickyTopCenterRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerStickyTopLeftRowContainerCon = function (ctrl) {\n this.stickyTopLeftRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerStickyTopRightRowContainerCtrl = function (ctrl) {\n this.stickyTopRightRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerBottomCenterRowContainerCtrl = function (ctrl) {\n this.bottomCenterRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerBottomLeftRowContainerCtrl = function (ctrl) {\n this.bottomLeftRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerBottomRightRowContainerCtrl = function (ctrl) {\n this.bottomRightRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerHeaderContainer = function (ctrl, pinned) {\n switch (pinned) {\n case 'left':\n this.leftHeaderRowContainerCtrl = ctrl;\n break;\n case 'right':\n this.rightHeaderRowContainerCtrl = ctrl;\n break;\n default:\n this.centerHeaderRowContainerCtrl = ctrl;\n break;\n }\n this.checkReady();\n };\n CtrlsService.prototype.registerGridBodyCtrl = function (ctrl) {\n this.gridBodyCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerGridCtrl = function (ctrl) {\n this.gridCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.getFakeHScrollComp = function () {\n return this.fakeHScrollComp;\n };\n CtrlsService.prototype.getFakeVScrollComp = function () {\n return this.fakeVScrollComp;\n };\n CtrlsService.prototype.getGridHeaderCtrl = function () {\n return this.gridHeaderCtrl;\n };\n CtrlsService.prototype.getGridCtrl = function () {\n return this.gridCtrl;\n };\n CtrlsService.prototype.getCenterRowContainerCtrl = function () {\n return this.centerRowContainerCtrl;\n };\n CtrlsService.prototype.getTopCenterRowContainerCtrl = function () {\n return this.topCenterRowContainerCtrl;\n };\n CtrlsService.prototype.getBottomCenterRowContainerCtrl = function () {\n return this.bottomCenterRowContainerCtrl;\n };\n CtrlsService.prototype.getStickyTopCenterRowContainerCtrl = function () {\n return this.stickyTopCenterRowContainerCtrl;\n };\n CtrlsService.prototype.getGridBodyCtrl = function () {\n return this.gridBodyCtrl;\n };\n CtrlsService.prototype.getHeaderRowContainerCtrls = function () {\n return [this.leftHeaderRowContainerCtrl, this.rightHeaderRowContainerCtrl, this.centerHeaderRowContainerCtrl];\n };\n CtrlsService.prototype.getHeaderRowContainerCtrl = function (pinned) {\n switch (pinned) {\n case 'left': return this.leftHeaderRowContainerCtrl;\n case 'right': return this.rightHeaderRowContainerCtrl;\n default: return this.centerHeaderRowContainerCtrl;\n }\n };\n var CtrlsService_1;\n CtrlsService.NAME = 'ctrlsService';\n CtrlsService = CtrlsService_1 = __decorate$k([\n Bean(CtrlsService_1.NAME)\n ], CtrlsService);\n return CtrlsService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CtrlsFactory = /** @class */ (function (_super) {\n __extends$j(CtrlsFactory, _super);\n function CtrlsFactory() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registry = {};\n return _this;\n }\n CtrlsFactory.prototype.register = function (meta) {\n this.registry[meta.controllerName] = meta.controllerClass;\n };\n CtrlsFactory.prototype.getInstance = function (name) {\n var ControllerClass = this.registry[name];\n if (ControllerClass == null) {\n return undefined;\n }\n return new ControllerClass();\n };\n CtrlsFactory = __decorate$j([\n Bean('ctrlsFactory')\n ], CtrlsFactory);\n return CtrlsFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AbstractFakeScrollComp = /** @class */ (function (_super) {\n __extends$i(AbstractFakeScrollComp, _super);\n function AbstractFakeScrollComp(template, direction) {\n var _this = _super.call(this, template) || this;\n _this.direction = direction;\n _this.hideTimeout = null;\n return _this;\n }\n AbstractFakeScrollComp.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.onScrollVisibilityChanged();\n this.addOrRemoveCssClass('ag-apple-scrollbar', isMacOsUserAgent() || isIOSUserAgent());\n };\n AbstractFakeScrollComp.prototype.initialiseInvisibleScrollbar = function () {\n if (this.invisibleScrollbar !== undefined) {\n return;\n }\n this.invisibleScrollbar = isInvisibleScrollbar();\n if (this.invisibleScrollbar) {\n this.hideAndShowInvisibleScrollAsNeeded();\n this.addActiveListenerToggles();\n }\n };\n AbstractFakeScrollComp.prototype.addActiveListenerToggles = function () {\n var _this = this;\n var activateEvents = ['mouseenter', 'mousedown', 'touchstart'];\n var deactivateEvents = ['mouseleave', 'touchend'];\n var eGui = this.getGui();\n activateEvents.forEach(function (eventName) { return _this.addManagedListener(eGui, eventName, function () { return _this.addOrRemoveCssClass('ag-scrollbar-active', true); }); });\n deactivateEvents.forEach(function (eventName) { return _this.addManagedListener(eGui, eventName, function () { return _this.addOrRemoveCssClass('ag-scrollbar-active', false); }); });\n };\n AbstractFakeScrollComp.prototype.onScrollVisibilityChanged = function () {\n // initialiseInvisibleScrollbar should only be called once, but the reason\n // this can't be inside `setComp` or `PostConstruct` is the DOM might not\n // be ready, so we call it until eventually, it gets calculated.\n if (this.invisibleScrollbar === undefined) {\n this.initialiseInvisibleScrollbar();\n }\n this.setScrollVisible();\n };\n AbstractFakeScrollComp.prototype.hideAndShowInvisibleScrollAsNeeded = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, function (params) {\n if (params.direction === _this.direction) {\n if (_this.hideTimeout !== null) {\n window.clearTimeout(_this.hideTimeout);\n _this.hideTimeout = null;\n }\n _this.addOrRemoveCssClass('ag-scrollbar-scrolling', true);\n }\n });\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL_END, function () {\n _this.hideTimeout = window.setTimeout(function () {\n _this.addOrRemoveCssClass('ag-scrollbar-scrolling', false);\n _this.hideTimeout = null;\n }, 400);\n });\n };\n AbstractFakeScrollComp.prototype.getViewport = function () {\n return this.eViewport;\n };\n AbstractFakeScrollComp.prototype.getContainer = function () {\n return this.eContainer;\n };\n __decorate$i([\n RefSelector('eViewport')\n ], AbstractFakeScrollComp.prototype, \"eViewport\", void 0);\n __decorate$i([\n RefSelector('eContainer')\n ], AbstractFakeScrollComp.prototype, \"eContainer\", void 0);\n __decorate$i([\n Autowired('scrollVisibleService')\n ], AbstractFakeScrollComp.prototype, \"scrollVisibleService\", void 0);\n __decorate$i([\n Autowired('ctrlsService')\n ], AbstractFakeScrollComp.prototype, \"ctrlsService\", void 0);\n return AbstractFakeScrollComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FakeHScrollComp = /** @class */ (function (_super) {\n __extends$h(FakeHScrollComp, _super);\n function FakeHScrollComp() {\n return _super.call(this, FakeHScrollComp.TEMPLATE, 'horizontal') || this;\n }\n FakeHScrollComp.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n // When doing printing, this changes whether cols are pinned or not\n var spacerWidthsListener = this.setFakeHScrollSpacerWidths.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, spacerWidthsListener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, spacerWidthsListener);\n this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addManagedPropertyListener('domLayout', spacerWidthsListener);\n this.ctrlsService.registerFakeHScrollComp(this);\n this.createManagedBean(new CenterWidthFeature(function (width) { return _this.eContainer.style.width = width + \"px\"; }));\n };\n FakeHScrollComp.prototype.initialiseInvisibleScrollbar = function () {\n if (this.invisibleScrollbar !== undefined) {\n return;\n }\n this.enableRtl = this.gridOptionsService.is('enableRtl');\n _super.prototype.initialiseInvisibleScrollbar.call(this);\n if (this.invisibleScrollbar) {\n this.refreshCompBottom();\n }\n };\n FakeHScrollComp.prototype.onPinnedRowDataChanged = function () {\n this.refreshCompBottom();\n };\n FakeHScrollComp.prototype.refreshCompBottom = function () {\n if (!this.invisibleScrollbar) {\n return;\n }\n var bottomPinnedHeight = this.pinnedRowModel.getPinnedBottomTotalHeight();\n this.getGui().style.bottom = bottomPinnedHeight + \"px\";\n };\n FakeHScrollComp.prototype.onScrollVisibilityChanged = function () {\n _super.prototype.onScrollVisibilityChanged.call(this);\n this.setFakeHScrollSpacerWidths();\n };\n FakeHScrollComp.prototype.setFakeHScrollSpacerWidths = function () {\n var vScrollShowing = this.scrollVisibleService.isVerticalScrollShowing();\n // we pad the right based on a) if cols are pinned to the right and\n // b) if v scroll is showing on the right (normal position of scroll)\n var rightSpacing = this.columnModel.getDisplayedColumnsRightWidth();\n var scrollOnRight = !this.enableRtl && vScrollShowing;\n var scrollbarWidth = this.gridOptionsService.getScrollbarWidth();\n if (scrollOnRight) {\n rightSpacing += scrollbarWidth;\n }\n setFixedWidth(this.eRightSpacer, rightSpacing);\n this.eRightSpacer.classList.toggle('ag-scroller-corner', rightSpacing <= scrollbarWidth);\n // we pad the left based on a) if cols are pinned to the left and\n // b) if v scroll is showing on the left (happens in LTR layout only)\n var leftSpacing = this.columnModel.getDisplayedColumnsLeftWidth();\n var scrollOnLeft = this.enableRtl && vScrollShowing;\n if (scrollOnLeft) {\n leftSpacing += scrollbarWidth;\n }\n setFixedWidth(this.eLeftSpacer, leftSpacing);\n this.eLeftSpacer.classList.toggle('ag-scroller-corner', leftSpacing <= scrollbarWidth);\n };\n FakeHScrollComp.prototype.setScrollVisible = function () {\n var hScrollShowing = this.scrollVisibleService.isHorizontalScrollShowing();\n var invisibleScrollbar = this.invisibleScrollbar;\n var isSuppressHorizontalScroll = this.gridOptionsService.is('suppressHorizontalScroll');\n var scrollbarWidth = hScrollShowing ? (this.gridOptionsService.getScrollbarWidth() || 0) : 0;\n var adjustedScrollbarWidth = (scrollbarWidth === 0 && invisibleScrollbar) ? 16 : scrollbarWidth;\n var scrollContainerSize = !isSuppressHorizontalScroll ? adjustedScrollbarWidth : 0;\n this.addOrRemoveCssClass('ag-scrollbar-invisible', invisibleScrollbar);\n setFixedHeight(this.getGui(), scrollContainerSize);\n setFixedHeight(this.eViewport, scrollContainerSize);\n setFixedHeight(this.eContainer, scrollContainerSize);\n this.setDisplayed(hScrollShowing, { skipAriaHidden: true });\n };\n FakeHScrollComp.TEMPLATE = \"<div class=\\\"ag-body-horizontal-scroll\\\" aria-hidden=\\\"true\\\">\\n <div class=\\\"ag-horizontal-left-spacer\\\" ref=\\\"eLeftSpacer\\\"></div>\\n <div class=\\\"ag-body-horizontal-scroll-viewport\\\" ref=\\\"eViewport\\\">\\n <div class=\\\"ag-body-horizontal-scroll-container\\\" ref=\\\"eContainer\\\"></div>\\n </div>\\n <div class=\\\"ag-horizontal-right-spacer\\\" ref=\\\"eRightSpacer\\\"></div>\\n </div>\";\n __decorate$h([\n RefSelector('eLeftSpacer')\n ], FakeHScrollComp.prototype, \"eLeftSpacer\", void 0);\n __decorate$h([\n RefSelector('eRightSpacer')\n ], FakeHScrollComp.prototype, \"eRightSpacer\", void 0);\n __decorate$h([\n Autowired('columnModel')\n ], FakeHScrollComp.prototype, \"columnModel\", void 0);\n __decorate$h([\n Autowired('pinnedRowModel')\n ], FakeHScrollComp.prototype, \"pinnedRowModel\", void 0);\n __decorate$h([\n PostConstruct\n ], FakeHScrollComp.prototype, \"postConstruct\", null);\n return FakeHScrollComp;\n}(AbstractFakeScrollComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PinnedWidthService = /** @class */ (function (_super) {\n __extends$g(PinnedWidthService, _super);\n function PinnedWidthService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PinnedWidthService.prototype.postConstruct = function () {\n var listener = this.checkContainerWidths.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);\n this.addManagedPropertyListener('domLayout', listener);\n };\n PinnedWidthService.prototype.checkContainerWidths = function () {\n var printLayout = this.gridOptionsService.isDomLayout('print');\n var newLeftWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsLeftWidth();\n var newRightWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsRightWidth();\n if (newLeftWidth != this.leftWidth) {\n this.leftWidth = newLeftWidth;\n this.eventService.dispatchEvent({ type: Events.EVENT_LEFT_PINNED_WIDTH_CHANGED });\n }\n if (newRightWidth != this.rightWidth) {\n this.rightWidth = newRightWidth;\n this.eventService.dispatchEvent({ type: Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED });\n }\n };\n PinnedWidthService.prototype.getPinnedRightWidth = function () {\n return this.rightWidth;\n };\n PinnedWidthService.prototype.getPinnedLeftWidth = function () {\n return this.leftWidth;\n };\n __decorate$g([\n Autowired('columnModel')\n ], PinnedWidthService.prototype, \"columnModel\", void 0);\n __decorate$g([\n PostConstruct\n ], PinnedWidthService.prototype, \"postConstruct\", null);\n PinnedWidthService = __decorate$g([\n Bean('pinnedWidthService')\n ], PinnedWidthService);\n return PinnedWidthService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowNodeEventThrottle = /** @class */ (function (_super) {\n __extends$f(RowNodeEventThrottle, _super);\n function RowNodeEventThrottle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.events = [];\n return _this;\n }\n RowNodeEventThrottle.prototype.postConstruct = function () {\n if (this.rowModel.getType() == 'clientSide') {\n this.clientSideRowModel = this.rowModel;\n }\n };\n // because the user can call rowNode.setExpanded() many times in one VM turn,\n // we throttle the calls to ClientSideRowModel using animationFrameService. this means for 100\n // row nodes getting expanded, we only update the CSRM once, and then we fire all events after\n // CSRM has updated.\n //\n // if we did not do this, then the user could call setExpanded on 100+ rows, causing the grid\n // to re-render 100+ times, which would be a performance lag.\n //\n // we use animationFrameService\n // rather than _.debounce() so this will get done if anyone flushes the animationFrameService\n // (eg user calls api.ensureRowVisible(), which in turn flushes ).\n RowNodeEventThrottle.prototype.dispatchExpanded = function (event) {\n var _this = this;\n // if not using CSRM, we don't debounce. otherwise this breaks the SSRM.\n if (this.clientSideRowModel == null) {\n this.eventService.dispatchEvent(event);\n return;\n }\n this.events.push(event);\n var func = function () {\n if (_this.clientSideRowModel) {\n _this.clientSideRowModel.onRowGroupOpened();\n }\n _this.events.forEach(function (e) { return _this.eventService.dispatchEvent(e); });\n _this.events = [];\n };\n if (this.dispatchExpandedDebounced == null) {\n this.dispatchExpandedDebounced = this.animationFrameService.debounce(func);\n }\n this.dispatchExpandedDebounced();\n };\n __decorate$f([\n Autowired('animationFrameService')\n ], RowNodeEventThrottle.prototype, \"animationFrameService\", void 0);\n __decorate$f([\n Autowired('rowModel')\n ], RowNodeEventThrottle.prototype, \"rowModel\", void 0);\n __decorate$f([\n PostConstruct\n ], RowNodeEventThrottle.prototype, \"postConstruct\", null);\n RowNodeEventThrottle = __decorate$f([\n Bean('rowNodeEventThrottle')\n ], RowNodeEventThrottle);\n return RowNodeEventThrottle;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$1 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __read$4 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$3 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$4(arguments[i]));\n return ar;\n};\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (typeof value == 'string') {\n return parseInt(value, 10);\n }\n}\nfunction isTrue(value) {\n return value === true || value === 'true';\n}\nvar GridOptionsService = /** @class */ (function () {\n function GridOptionsService() {\n this.destroyed = false;\n this.domDataKey = '__AG_' + Math.random().toString();\n this.propertyEventService = new EventService();\n }\n Object.defineProperty(GridOptionsService.prototype, \"context\", {\n // This is quicker then having code call gridOptionsService.get('context')\n get: function () {\n return this.gridOptions['context'];\n },\n enumerable: false,\n configurable: true\n });\n GridOptionsService.prototype.agWire = function (gridApi, columnApi) {\n this.gridOptions.api = gridApi;\n this.gridOptions.columnApi = columnApi;\n this.api = gridApi;\n this.columnApi = columnApi;\n };\n GridOptionsService.prototype.init = function () {\n this.gridOptionLookup = new Set(__spread$3(ComponentUtil.ALL_PROPERTIES, ComponentUtil.EVENT_CALLBACKS));\n var async = !this.is('suppressAsyncEvents');\n this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);\n // sets an initial calculation for the scrollbar width\n this.getScrollbarWidth();\n };\n GridOptionsService.prototype.destroy = function () {\n // need to remove these, as we don't own the lifecycle of the gridOptions, we need to\n // remove the references in case the user keeps the grid options, we want the rest\n // of the grid to be picked up by the garbage collector\n this.gridOptions.api = null;\n this.gridOptions.columnApi = null;\n this.destroyed = true;\n };\n /**\n * Is the given GridOption property set to true.\n * @param property GridOption property that has the type `boolean | undefined`\n */\n GridOptionsService.prototype.is = function (property) {\n return isTrue(this.gridOptions[property]);\n };\n /**\n * Get the raw value of the GridOptions property provided.\n * @param property\n */\n GridOptionsService.prototype.get = function (property) {\n return this.gridOptions[property];\n };\n /**\n * Get the GridOption property as a number, raw value is returned via a toNumber coercion function.\n * @param property GridOption property that has the type `number | undefined`\n */\n GridOptionsService.prototype.getNum = function (property) {\n return toNumber(this.gridOptions[property]);\n };\n /**\n * Get the GridOption callback but wrapped so that the common params of api,columnApi and context are automatically applied to the params.\n * @param property GridOption callback properties based on the fact that this property has a callback with params extending AgGridCommon\n */\n GridOptionsService.prototype.getCallback = function (property) {\n return this.mergeGridCommonParams(this.gridOptions[property]);\n };\n /**\n * Returns `true` if a value has been specified for this GridOption.\n * @param property GridOption property\n */\n GridOptionsService.prototype.exists = function (property) {\n return exists(this.gridOptions[property]);\n };\n /**\n * Wrap the user callback and attach the api, columnApi and context to the params object on the way through.\n * @param callback User provided callback\n * @returns Wrapped callback where the params object not require api, columnApi and context\n */\n GridOptionsService.prototype.mergeGridCommonParams = function (callback) {\n var _this = this;\n if (callback) {\n var wrapped = function (callbackParams) {\n var mergedParams = callbackParams;\n mergedParams.api = _this.api;\n mergedParams.columnApi = _this.columnApi;\n mergedParams.context = _this.context;\n return callback(mergedParams);\n };\n return wrapped;\n }\n return callback;\n };\n /**\n *\n * @param key - key of the GridOption property to update\n * @param newValue - new value for this property\n * @param force - force the property change Event to be fired even if the value has not changed\n * @param eventParams - additional params to merge into the property changed event\n */\n GridOptionsService.prototype.set = function (key, newValue, force, eventParams) {\n if (force === void 0) { force = false; }\n if (eventParams === void 0) { eventParams = {}; }\n if (this.gridOptionLookup.has(key)) {\n var previousValue = this.gridOptions[key];\n if (force || previousValue !== newValue) {\n this.gridOptions[key] = newValue;\n var event_1 = __assign({ type: key, currentValue: newValue, previousValue: previousValue }, eventParams);\n this.propertyEventService.dispatchEvent(event_1);\n }\n }\n };\n GridOptionsService.prototype.addEventListener = function (key, listener) {\n this.propertyEventService.addEventListener(key, listener);\n };\n GridOptionsService.prototype.removeEventListener = function (key, listener) {\n this.propertyEventService.removeEventListener(key, listener);\n };\n // responsible for calling the onXXX functions on gridOptions\n GridOptionsService.prototype.globalEventHandler = function (eventName, event) {\n // prevent events from being fired _after_ the grid has been destroyed\n if (this.destroyed) {\n return;\n }\n var callbackMethodName = ComponentUtil.getCallbackForEvent(eventName);\n if (typeof this.gridOptions[callbackMethodName] === 'function') {\n this.gridOptions[callbackMethodName](event);\n }\n };\n // *************** Helper methods ************************** //\n // Methods to share common GridOptions related logic that goes above accessing a single property\n // the user might be using some non-standard scrollbar, eg a scrollbar that has zero\n // width and overlays (like the Safari scrollbar, but presented in Chrome). so we\n // allow the user to provide the scroll width before we work it out.\n GridOptionsService.prototype.getScrollbarWidth = function () {\n if (this.scrollbarWidth == null) {\n var useGridOptions = typeof this.gridOptions.scrollbarWidth === 'number' && this.gridOptions.scrollbarWidth >= 0;\n var scrollbarWidth = useGridOptions ? this.gridOptions.scrollbarWidth : getScrollbarWidth();\n if (scrollbarWidth != null) {\n this.scrollbarWidth = scrollbarWidth;\n this.eventService.dispatchEvent({\n type: Events.EVENT_SCROLLBAR_WIDTH_CHANGED\n });\n }\n }\n return this.scrollbarWidth;\n };\n GridOptionsService.prototype.isRowModelType = function (rowModelType) {\n return this.gridOptions.rowModelType === rowModelType ||\n (rowModelType === 'clientSide' && missing(this.gridOptions.rowModelType));\n };\n GridOptionsService.prototype.isDomLayout = function (domLayout) {\n var _a;\n var gridLayout = (_a = this.gridOptions.domLayout) !== null && _a !== void 0 ? _a : 'normal';\n return gridLayout === domLayout;\n };\n GridOptionsService.prototype.isRowSelection = function () {\n return this.gridOptions.rowSelection === 'single' || this.gridOptions.rowSelection === 'multiple';\n };\n GridOptionsService.prototype.useAsyncEvents = function () {\n return !this.is('suppressAsyncEvents');\n };\n GridOptionsService.prototype.isGetRowHeightFunction = function () {\n return typeof this.gridOptions.getRowHeight === 'function';\n };\n GridOptionsService.prototype.getRowHeightForNode = function (rowNode, allowEstimate, defaultRowHeight) {\n if (allowEstimate === void 0) { allowEstimate = false; }\n if (defaultRowHeight == null) {\n defaultRowHeight = this.environment.getDefaultRowHeight();\n }\n // check the function first, in case use set both function and\n // number, when using virtual pagination then function can be\n // used for pinned rows and the number for the body rows.\n if (this.isGetRowHeightFunction()) {\n if (allowEstimate) {\n return { height: defaultRowHeight, estimated: true };\n }\n var params = {\n node: rowNode,\n data: rowNode.data\n };\n var height = this.getCallback('getRowHeight')(params);\n if (this.isNumeric(height)) {\n if (height === 0) {\n doOnce(function () { return console.warn('AG Grid: The return of `getRowHeight` cannot be zero. If the intention is to hide rows, use a filter instead.'); }, 'invalidRowHeight');\n }\n return { height: Math.max(1, height), estimated: false };\n }\n }\n if (rowNode.detail && this.is('masterDetail')) {\n return this.getMasterDetailRowHeight();\n }\n var rowHeight = this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight) ? this.gridOptions.rowHeight : defaultRowHeight;\n return { height: rowHeight, estimated: false };\n };\n GridOptionsService.prototype.getMasterDetailRowHeight = function () {\n // if autoHeight, we want the height to grow to the new height starting at 1, as otherwise a flicker would happen,\n // as the detail goes to the default (eg 200px) and then immediately shrink up/down to the new measured height\n // (due to auto height) which looks bad, especially if doing row animation.\n if (this.is('detailRowAutoHeight')) {\n return { height: 1, estimated: false };\n }\n if (this.isNumeric(this.gridOptions.detailRowHeight)) {\n return { height: this.gridOptions.detailRowHeight, estimated: false };\n }\n return { height: 300, estimated: false };\n };\n // we don't allow dynamic row height for virtual paging\n GridOptionsService.prototype.getRowHeightAsNumber = function () {\n if (!this.gridOptions.rowHeight || missing(this.gridOptions.rowHeight)) {\n return this.environment.getDefaultRowHeight();\n }\n var rowHeight = this.gridOptions.rowHeight;\n if (rowHeight && this.isNumeric(rowHeight)) {\n this.environment.setRowHeightVariable(rowHeight);\n return rowHeight;\n }\n console.warn('AG Grid row height must be a number if not using standard row model');\n return this.environment.getDefaultRowHeight();\n };\n GridOptionsService.prototype.isNumeric = function (value) {\n return !isNaN(value) && typeof value === 'number' && isFinite(value);\n };\n GridOptionsService.prototype.getDomDataKey = function () {\n return this.domDataKey;\n };\n // returns the dom data, or undefined if not found\n GridOptionsService.prototype.getDomData = function (element, key) {\n var domData = element[this.getDomDataKey()];\n return domData ? domData[key] : undefined;\n };\n GridOptionsService.prototype.setDomData = function (element, key, value) {\n var domDataKey = this.getDomDataKey();\n var domData = element[domDataKey];\n if (missing(domData)) {\n domData = {};\n element[domDataKey] = domData;\n }\n domData[key] = value;\n };\n GridOptionsService.prototype.getDocument = function () {\n // if user is providing document, we use the users one,\n // otherwise we use the document on the global namespace.\n var result = null;\n if (this.gridOptions.getDocument && exists(this.gridOptions.getDocument)) {\n result = this.gridOptions.getDocument();\n }\n else if (this.eGridDiv) {\n result = this.eGridDiv.ownerDocument;\n }\n if (result && exists(result)) {\n return result;\n }\n return document;\n };\n GridOptionsService.prototype.getRootNode = function () {\n return this.eGridDiv.getRootNode();\n };\n GridOptionsService.prototype.getRowIdFunc = function () {\n var getRowId = this.getCallback('getRowId');\n if (getRowId) {\n return getRowId;\n }\n // this is the deprecated way, so provide a proxy to make it compatible\n var getRowNodeId = this.gridOptions.getRowNodeId;\n if (getRowNodeId) {\n return function (params) { return getRowNodeId(params.data); };\n }\n };\n GridOptionsService.prototype.getAsyncTransactionWaitMillis = function () {\n return exists(this.gridOptions.asyncTransactionWaitMillis) ? this.gridOptions.asyncTransactionWaitMillis : 50;\n };\n GridOptionsService.prototype.isAnimateRows = function () {\n // never allow animating if enforcing the row order\n if (this.is('ensureDomOrder')) {\n return false;\n }\n return this.is('animateRows');\n };\n GridOptionsService.prototype.isTreeData = function () {\n return this.is('treeData') && ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Tree Data');\n };\n GridOptionsService.prototype.isMasterDetail = function () {\n return this.is('masterDetail') && ModuleRegistry.assertRegistered(ModuleNames.MasterDetailModule, 'masterDetail');\n };\n GridOptionsService.prototype.isEnableRangeSelection = function () {\n return this.is('enableRangeSelection') && ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule);\n };\n GridOptionsService.prototype.isColumnsSortingCoupledToGroup = function () {\n var autoGroupColumnDef = this.gridOptions.autoGroupColumnDef;\n var isClientSideRowModel = this.isRowModelType('clientSide');\n return isClientSideRowModel && !(autoGroupColumnDef === null || autoGroupColumnDef === void 0 ? void 0 : autoGroupColumnDef.comparator) && !this.isTreeData();\n };\n GridOptionsService.prototype.getGroupAggFiltering = function () {\n var userValue = this.gridOptions.groupAggFiltering;\n if (typeof userValue === 'function') {\n return this.getCallback('groupAggFiltering');\n }\n if (isTrue(userValue)) {\n return function () { return true; };\n }\n return undefined;\n };\n GridOptionsService.prototype.isGroupMultiAutoColumn = function () {\n if (this.gridOptions.groupDisplayType) {\n return matchesGroupDisplayType('multipleColumns', this.gridOptions.groupDisplayType);\n }\n // if we are doing hideOpenParents we also show multiple columns, otherwise hideOpenParents would not work\n return this.is('groupHideOpenParents');\n };\n GridOptionsService.prototype.isGroupUseEntireRow = function (pivotMode) {\n // we never allow groupDisplayType = 'groupRows' if in pivot mode, otherwise we won't see the pivot values.\n if (pivotMode) {\n return false;\n }\n return this.gridOptions.groupDisplayType ? matchesGroupDisplayType('groupRows', this.gridOptions.groupDisplayType) : false;\n };\n __decorate$e([\n Autowired('gridOptions')\n ], GridOptionsService.prototype, \"gridOptions\", void 0);\n __decorate$e([\n Autowired('eventService')\n ], GridOptionsService.prototype, \"eventService\", void 0);\n __decorate$e([\n Autowired('environment')\n ], GridOptionsService.prototype, \"environment\", void 0);\n __decorate$e([\n Autowired('eGridDiv')\n ], GridOptionsService.prototype, \"eGridDiv\", void 0);\n __decorate$e([\n __param$1(0, Qualifier('gridApi')), __param$1(1, Qualifier('columnApi'))\n ], GridOptionsService.prototype, \"agWire\", null);\n __decorate$e([\n PostConstruct\n ], GridOptionsService.prototype, \"init\", null);\n __decorate$e([\n PreDestroy\n ], GridOptionsService.prototype, \"destroy\", null);\n GridOptionsService = __decorate$e([\n Bean('gridOptionsService')\n ], GridOptionsService);\n return GridOptionsService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LocaleService = /** @class */ (function (_super) {\n __extends$e(LocaleService, _super);\n function LocaleService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LocaleService.prototype.getLocaleTextFunc = function () {\n var getLocaleText = this.gridOptionsService.getCallback('getLocaleText');\n if (getLocaleText) {\n //key: string, defaultValue: string, variableValues?: string[]\n return function (key, defaultValue, variableValues) {\n var params = {\n key: key,\n defaultValue: defaultValue,\n variableValues: variableValues\n };\n return getLocaleText(params);\n };\n }\n var localeTextFunc = this.gridOptionsService.get('localeTextFunc');\n if (localeTextFunc) {\n return localeTextFunc;\n }\n var localeText = this.gridOptionsService.get('localeText');\n return function (key, defaultValue, variableValues) {\n var localisedText = localeText && localeText[key];\n if (localisedText && variableValues && variableValues.length) {\n var found = 0;\n while (true) {\n if (found >= variableValues.length) {\n break;\n }\n var idx = localisedText.indexOf('${variable}');\n if (idx === -1) {\n break;\n }\n localisedText = localisedText.replace('${variable}', variableValues[found++]);\n }\n }\n return localisedText !== null && localisedText !== void 0 ? localisedText : defaultValue;\n };\n };\n LocaleService = __decorate$d([\n Bean('localeService')\n ], LocaleService);\n return LocaleService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FakeVScrollComp = /** @class */ (function (_super) {\n __extends$d(FakeVScrollComp, _super);\n function FakeVScrollComp() {\n return _super.call(this, FakeVScrollComp.TEMPLATE, 'vertical') || this;\n }\n FakeVScrollComp.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n this.createManagedBean(new SetHeightFeature(this.eContainer));\n this.ctrlsService.registerFakeVScrollComp(this);\n };\n FakeVScrollComp.prototype.setScrollVisible = function () {\n var vScrollShowing = this.scrollVisibleService.isVerticalScrollShowing();\n var invisibleScrollbar = this.invisibleScrollbar;\n var scrollbarWidth = vScrollShowing ? (this.gridOptionsService.getScrollbarWidth() || 0) : 0;\n var adjustedScrollbarWidth = (scrollbarWidth === 0 && invisibleScrollbar) ? 16 : scrollbarWidth;\n this.addOrRemoveCssClass('ag-scrollbar-invisible', invisibleScrollbar);\n setFixedWidth(this.getGui(), adjustedScrollbarWidth);\n setFixedWidth(this.eViewport, adjustedScrollbarWidth);\n setFixedWidth(this.eContainer, adjustedScrollbarWidth);\n this.setDisplayed(vScrollShowing, { skipAriaHidden: true });\n };\n FakeVScrollComp.TEMPLATE = \"<div class=\\\"ag-body-vertical-scroll\\\" aria-hidden=\\\"true\\\">\\n <div class=\\\"ag-body-vertical-scroll-viewport\\\" ref=\\\"eViewport\\\">\\n <div class=\\\"ag-body-vertical-scroll-container\\\" ref=\\\"eContainer\\\"></div>\\n </div>\\n </div>\";\n __decorate$c([\n PostConstruct\n ], FakeVScrollComp.prototype, \"postConstruct\", null);\n return FakeVScrollComp;\n}(AbstractFakeScrollComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$3 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$2 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$3(arguments[i]));\n return ar;\n};\n// creates JavaScript vanilla Grid, including JavaScript (ag-stack) components, which can\n// be wrapped by the framework wrappers\nvar Grid = /** @class */ (function () {\n function Grid(eGridDiv, gridOptions, params) {\n if (!gridOptions) {\n console.error('AG Grid: no gridOptions provided to the grid');\n return;\n }\n this.gridOptions = gridOptions;\n new GridCoreCreator().create(eGridDiv, gridOptions, function (context) {\n var gridComp = new GridComp(eGridDiv);\n context.createBean(gridComp);\n }, undefined, params);\n }\n Grid.prototype.destroy = function () {\n if (this.gridOptions && this.gridOptions.api) {\n this.gridOptions.api.destroy();\n }\n };\n return Grid;\n}());\n// created services of grid only, no UI, so frameworks can use this if providing\n// their own UI\nvar GridCoreCreator = /** @class */ (function () {\n function GridCoreCreator() {\n }\n GridCoreCreator.prototype.create = function (eGridDiv, gridOptions, createUi, acceptChanges, params) {\n var _this = this;\n var debug = !!gridOptions.debug;\n var registeredModules = this.getRegisteredModules(params);\n var beanClasses = this.createBeansList(gridOptions.rowModelType, registeredModules);\n var providedBeanInstances = this.createProvidedBeans(eGridDiv, gridOptions, params);\n if (!beanClasses) {\n return;\n } // happens when no row model found\n var contextParams = {\n providedBeanInstances: providedBeanInstances,\n beanClasses: beanClasses,\n debug: debug\n };\n var logger = new Logger('AG Grid', function () { return gridOptions.debug; });\n var contextLogger = new Logger('Context', function () { return contextParams.debug; });\n var context = new Context(contextParams, contextLogger);\n var beans = context.getBean('beans');\n this.registerModuleUserComponents(beans, registeredModules);\n this.registerStackComponents(beans, registeredModules);\n this.registerControllers(beans, registeredModules);\n createUi(context);\n // we wait until the UI has finished initialising before setting in columns and rows\n beans.ctrlsService.whenReady(function () {\n _this.setColumnsAndData(beans);\n _this.dispatchGridReadyEvent(beans);\n var isEnterprise = ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n logger.log(\"initialised successfully, enterprise = \" + isEnterprise);\n });\n if (acceptChanges) {\n acceptChanges(context);\n }\n };\n GridCoreCreator.prototype.registerControllers = function (beans, registeredModules) {\n registeredModules.forEach(function (module) {\n if (module.controllers) {\n module.controllers.forEach(function (meta) { return beans.ctrlsFactory.register(meta); });\n }\n });\n };\n GridCoreCreator.prototype.registerStackComponents = function (beans, registeredModules) {\n var agStackComponents = this.createAgStackComponentsList(registeredModules);\n beans.agStackComponentsRegistry.setupComponents(agStackComponents);\n };\n GridCoreCreator.prototype.getRegisteredModules = function (params) {\n var passedViaConstructor = params ? params.modules : null;\n var registered = ModuleRegistry.getRegisteredModules();\n var allModules = [];\n var mapNames = {};\n // adds to list and removes duplicates\n function addModule(moduleBased, mod) {\n function addIndividualModule(currentModule) {\n if (!mapNames[currentModule.moduleName]) {\n mapNames[currentModule.moduleName] = true;\n allModules.push(currentModule);\n ModuleRegistry.register(currentModule, moduleBased);\n }\n }\n addIndividualModule(mod);\n if (mod.dependantModules) {\n mod.dependantModules.forEach(addModule.bind(null, moduleBased));\n }\n }\n if (passedViaConstructor) {\n passedViaConstructor.forEach(addModule.bind(null, true));\n }\n if (registered) {\n registered.forEach(addModule.bind(null, !ModuleRegistry.isPackageBased()));\n }\n return allModules;\n };\n GridCoreCreator.prototype.registerModuleUserComponents = function (beans, registeredModules) {\n var moduleUserComps = this.extractModuleEntity(registeredModules, function (module) { return module.userComponents ? module.userComponents : []; });\n moduleUserComps.forEach(function (compMeta) {\n beans.userComponentRegistry.registerDefaultComponent(compMeta.componentName, compMeta.componentClass);\n });\n };\n GridCoreCreator.prototype.createProvidedBeans = function (eGridDiv, gridOptions, params) {\n var frameworkOverrides = params ? params.frameworkOverrides : null;\n if (missing(frameworkOverrides)) {\n frameworkOverrides = new VanillaFrameworkOverrides();\n }\n var seed = {\n gridOptions: gridOptions,\n eGridDiv: eGridDiv,\n globalEventListener: params ? params.globalEventListener : null,\n frameworkOverrides: frameworkOverrides\n };\n if (params && params.providedBeanInstances) {\n Object.assign(seed, params.providedBeanInstances);\n }\n return seed;\n };\n GridCoreCreator.prototype.createAgStackComponentsList = function (registeredModules) {\n var components = [\n { componentName: 'AgCheckbox', componentClass: AgCheckbox },\n { componentName: 'AgRadioButton', componentClass: AgRadioButton },\n { componentName: 'AgToggleButton', componentClass: AgToggleButton },\n { componentName: 'AgInputTextField', componentClass: AgInputTextField },\n { componentName: 'AgInputTextArea', componentClass: AgInputTextArea },\n { componentName: 'AgInputNumberField', componentClass: AgInputNumberField },\n { componentName: 'AgInputRange', componentClass: AgInputRange },\n { componentName: 'AgSelect', componentClass: AgSelect },\n { componentName: 'AgSlider', componentClass: AgSlider },\n { componentName: 'AgGridBody', componentClass: GridBodyComp },\n { componentName: 'AgHeaderRoot', componentClass: GridHeaderComp },\n { componentName: 'AgSortIndicator', componentClass: SortIndicatorComp },\n { componentName: 'AgPagination', componentClass: PaginationComp },\n { componentName: 'AgOverlayWrapper', componentClass: OverlayWrapperComponent },\n { componentName: 'AgGroupComponent', componentClass: AgGroupComponent },\n { componentName: 'AgPanel', componentClass: AgPanel },\n { componentName: 'AgDialog', componentClass: AgDialog },\n { componentName: 'AgRowContainer', componentClass: RowContainerComp },\n { componentName: 'AgFakeHorizontalScroll', componentClass: FakeHScrollComp },\n { componentName: 'AgFakeVerticalScroll', componentClass: FakeVScrollComp }\n ];\n var moduleAgStackComps = this.extractModuleEntity(registeredModules, function (module) { return module.agStackComponents ? module.agStackComponents : []; });\n components = components.concat(moduleAgStackComps);\n return components;\n };\n GridCoreCreator.prototype.createBeansList = function (rowModelType, registeredModules) {\n if (rowModelType === void 0) { rowModelType = 'clientSide'; }\n // only load beans matching the required row model\n var rowModelModules = registeredModules.filter(function (module) { return !module.rowModel || module.rowModel === rowModelType; });\n // assert that the relevant module has been loaded\n var rowModelModuleNames = {\n clientSide: ModuleNames.ClientSideRowModelModule,\n infinite: ModuleNames.InfiniteRowModelModule,\n serverSide: ModuleNames.ServerSideRowModelModule,\n viewport: ModuleNames.ViewportRowModelModule\n };\n if (!rowModelModuleNames[rowModelType]) {\n console.error('AG Grid: could not find row model for rowModelType = ' + rowModelType);\n return;\n }\n if (!ModuleRegistry.assertRegistered(rowModelModuleNames[rowModelType], \"rowModelType = '\" + rowModelType + \"'\")) {\n return;\n }\n // beans should only contain SERVICES, it should NEVER contain COMPONENTS\n var beans = [\n Beans, RowPositionUtils, CellPositionUtils, HeaderPositionUtils,\n PaginationAutoPageSizeService, GridApi, UserComponentRegistry, AgComponentUtils,\n ComponentMetadataProvider, ResizeObserverService, UserComponentFactory,\n RowContainerHeightService, HorizontalResizeService, LocaleService, GridOptionsValidator,\n PinnedRowModel, DragService, DisplayedGroupCreator, EventService, GridOptionsService,\n PopupService, SelectionService, FilterManager, ColumnModel, HeaderNavigationService,\n PaginationProxy, RowRenderer, ExpressionService, ColumnFactory, TemplateService,\n AlignedGridsService, NavigationService, ValueCache, ValueService, LoggerFactory,\n ColumnUtils, AutoWidthCalculator, StandardMenuFactory, DragAndDropService, ColumnApi,\n FocusService, MouseEventService, Environment, CellNavigationService, ValueFormatterService,\n StylingService, ScrollVisibleService, SortController, ColumnHoverService, ColumnAnimationService,\n SelectableService, AutoGroupColService, ChangeDetectionService, AnimationFrameService,\n UndoRedoService, AgStackComponentsRegistry, ColumnDefFactory,\n RowCssClassCalculator, RowNodeBlockLoader, RowNodeSorter, CtrlsService,\n PinnedWidthService, RowNodeEventThrottle, CtrlsFactory\n ];\n var moduleBeans = this.extractModuleEntity(rowModelModules, function (module) { return module.beans ? module.beans : []; });\n beans.push.apply(beans, __spread$2(moduleBeans));\n // check for duplicates, as different modules could include the same beans that\n // they depend on, eg ClientSideRowModel in enterprise, and ClientSideRowModel in community\n var beansNoDuplicates = [];\n beans.forEach(function (bean) {\n if (beansNoDuplicates.indexOf(bean) < 0) {\n beansNoDuplicates.push(bean);\n }\n });\n return beansNoDuplicates;\n };\n GridCoreCreator.prototype.extractModuleEntity = function (moduleEntities, extractor) {\n return [].concat.apply([], __spread$2(moduleEntities.map(extractor)));\n };\n GridCoreCreator.prototype.setColumnsAndData = function (beans) {\n var columnDefs = beans.gridOptionsService.get('columnDefs');\n beans.columnModel.setColumnDefs(columnDefs || [], \"gridInitializing\");\n beans.rowModel.start();\n };\n GridCoreCreator.prototype.dispatchGridReadyEvent = function (beans) {\n var readyEvent = {\n type: Events.EVENT_GRID_READY,\n };\n beans.eventService.dispatchEvent(readyEvent);\n };\n return GridCoreCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar BaseComponentWrapper = /** @class */ (function () {\n function BaseComponentWrapper() {\n }\n BaseComponentWrapper.prototype.wrap = function (OriginalConstructor, mandatoryMethodList, optionalMethodList, componentType) {\n var _this = this;\n if (optionalMethodList === void 0) { optionalMethodList = []; }\n var wrapper = this.createWrapper(OriginalConstructor, componentType);\n mandatoryMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, true);\n }));\n optionalMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, false);\n }));\n return wrapper;\n };\n BaseComponentWrapper.prototype.unwrap = function (comp) {\n return comp;\n };\n BaseComponentWrapper.prototype.createMethod = function (wrapper, methodName, mandatory) {\n wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));\n };\n BaseComponentWrapper.prototype.createMethodProxy = function (wrapper, methodName, mandatory) {\n return function () {\n if (wrapper.hasMethod(methodName)) {\n return wrapper.callMethod(methodName, arguments);\n }\n if (mandatory) {\n console.warn('AG Grid: Framework component is missing the method ' + methodName + '()');\n }\n return null;\n };\n };\n return BaseComponentWrapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DEFAULT_CHART_GROUPS = {\n columnGroup: [\n 'column',\n 'stackedColumn',\n 'normalizedColumn'\n ],\n barGroup: [\n 'bar',\n 'stackedBar',\n 'normalizedBar'\n ],\n pieGroup: [\n 'pie',\n 'doughnut'\n ],\n lineGroup: [\n 'line'\n ],\n scatterGroup: [\n 'scatter',\n 'bubble'\n ],\n areaGroup: [\n 'area',\n 'stackedArea',\n 'normalizedArea'\n ],\n histogramGroup: [\n 'histogram'\n ],\n combinationGroup: [\n 'columnLineCombo',\n 'areaColumnCombo',\n 'customCombo'\n ]\n};\nvar CHART_TOOL_PANEL_ALLOW_LIST = [\n 'chartSettings',\n 'chartData',\n 'chartFormat'\n];\nvar CHART_TOOLBAR_ALLOW_LIST = [\n 'chartUnlink',\n 'chartLink',\n 'chartDownload'\n];\nvar CHART_TOOL_PANEL_MENU_OPTIONS = {\n settings: \"chartSettings\",\n data: \"chartData\",\n format: \"chartFormat\"\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * Internal Use Only: Used to ensure this file is treated as a module until we can use moduleDetection flag in Ts v4.7\n */\nvar __FORCE_MODULE_DETECTION = 0;\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar BarColumnLabelPlacement;\n(function (BarColumnLabelPlacement) {\n BarColumnLabelPlacement[\"InsideBase\"] = \"insideBase\";\n BarColumnLabelPlacement[\"InsideEnd\"] = \"insideEnd\";\n BarColumnLabelPlacement[\"Center\"] = \"center\";\n BarColumnLabelPlacement[\"OutsideEnd\"] = \"outsideEnd\";\n})(BarColumnLabelPlacement || (BarColumnLabelPlacement = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar globalObj = typeof global === 'undefined' ? {} : global;\nglobalObj.HTMLElement = typeof HTMLElement === 'undefined' ? {} : HTMLElement;\nglobalObj.HTMLButtonElement = typeof HTMLButtonElement === 'undefined' ? {} : HTMLButtonElement;\nglobalObj.HTMLSelectElement = typeof HTMLSelectElement === 'undefined' ? {} : HTMLSelectElement;\nglobalObj.HTMLInputElement = typeof HTMLInputElement === 'undefined' ? {} : HTMLInputElement;\nglobalObj.Node = typeof Node === 'undefined' ? {} : Node;\nglobalObj.MouseEvent = typeof MouseEvent === 'undefined' ? {} : MouseEvent;\n\nvar __read$2 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$1 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$2(arguments[i]));\n return ar;\n};\nvar ClientSideNodeManager = /** @class */ (function () {\n function ClientSideNodeManager(rootNode, gridOptionsService, eventService, columnModel, selectionService, beans) {\n this.nextId = 0;\n // when user is provide the id's, we also keep a map of ids to row nodes for convenience\n this.allNodesMap = {};\n this.rootNode = rootNode;\n this.gridOptionsService = gridOptionsService;\n this.eventService = eventService;\n this.columnModel = columnModel;\n this.beans = beans;\n this.selectionService = selectionService;\n this.rootNode.group = true;\n this.rootNode.level = -1;\n this.rootNode.id = ClientSideNodeManager.ROOT_NODE_ID;\n this.rootNode.allLeafChildren = [];\n this.rootNode.childrenAfterGroup = [];\n this.rootNode.childrenAfterSort = [];\n this.rootNode.childrenAfterAggFilter = [];\n this.rootNode.childrenAfterFilter = [];\n // if we make this class a bean, then can annotate postConstruct\n this.postConstruct();\n }\n // @PostConstruct - this is not a bean, so postConstruct called by constructor\n ClientSideNodeManager.prototype.postConstruct = function () {\n // func below doesn't have 'this' pointer, so need to pull out these bits\n this.suppressParentsInRowNodes = this.gridOptionsService.is('suppressParentsInRowNodes');\n this.isRowMasterFunc = this.gridOptionsService.get('isRowMaster');\n this.doingTreeData = this.gridOptionsService.isTreeData();\n this.doingMasterDetail = this.gridOptionsService.isMasterDetail();\n };\n ClientSideNodeManager.prototype.getCopyOfNodesMap = function () {\n return _.cloneObject(this.allNodesMap);\n };\n ClientSideNodeManager.prototype.getRowNode = function (id) {\n return this.allNodesMap[id];\n };\n ClientSideNodeManager.prototype.setRowData = function (rowData) {\n var _this = this;\n if (typeof rowData === 'string') {\n console.warn('AG Grid: rowData must be an array, however you passed in a string. If you are loading JSON, make sure you convert the JSON string to JavaScript objects first');\n return;\n }\n var rootNode = this.rootNode;\n var sibling = this.rootNode.sibling;\n rootNode.childrenAfterFilter = null;\n rootNode.childrenAfterGroup = null;\n rootNode.childrenAfterAggFilter = null;\n rootNode.childrenAfterSort = null;\n rootNode.childrenMapped = null;\n rootNode.updateHasChildren();\n this.nextId = 0;\n this.allNodesMap = {};\n if (rowData) {\n // we use rootNode as the parent, however if using ag-grid-enterprise, the grouping stage\n // sets the parent node on each row (even if we are not grouping). so setting parent node\n // here is for benefit of ag-grid-community users\n rootNode.allLeafChildren = rowData.map(function (dataItem) { return _this.createNode(dataItem, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });\n }\n else {\n rootNode.allLeafChildren = [];\n rootNode.childrenAfterGroup = [];\n }\n if (sibling) {\n sibling.childrenAfterFilter = rootNode.childrenAfterFilter;\n sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n sibling.childrenAfterAggFilter = rootNode.childrenAfterAggFilter;\n sibling.childrenAfterSort = rootNode.childrenAfterSort;\n sibling.childrenMapped = rootNode.childrenMapped;\n sibling.allLeafChildren = rootNode.allLeafChildren;\n }\n };\n ClientSideNodeManager.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n var rowNodeTransaction = {\n remove: [],\n update: [],\n add: []\n };\n var nodesToUnselect = [];\n this.executeRemove(rowDataTran, rowNodeTransaction, nodesToUnselect);\n this.executeUpdate(rowDataTran, rowNodeTransaction, nodesToUnselect);\n this.executeAdd(rowDataTran, rowNodeTransaction);\n this.updateSelection(nodesToUnselect, 'rowDataChanged');\n if (rowNodeOrder) {\n _.sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);\n }\n return rowNodeTransaction;\n };\n ClientSideNodeManager.prototype.updateSelection = function (nodesToUnselect, source) {\n var selectionChanged = nodesToUnselect.length > 0;\n if (selectionChanged) {\n nodesToUnselect.forEach(function (rowNode) {\n rowNode.setSelected(false, false, true, source);\n });\n }\n // we do this regardless of nodes to unselect or not, as it's possible\n // a new node was inserted, so a parent that was previously selected (as all\n // children were selected) should not be tri-state (as new one unselected against\n // all other selected children).\n this.selectionService.updateGroupsFromChildrenSelections(source);\n if (selectionChanged) {\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: source\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ClientSideNodeManager.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var _a;\n var add = rowDataTran.add, addIndex = rowDataTran.addIndex;\n if (_.missingOrEmpty(add)) {\n return;\n }\n // create new row nodes for each data item\n var newNodes = add.map(function (item) { return _this.createNode(item, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });\n if (typeof addIndex === 'number' && addIndex >= 0) {\n // new rows are inserted in one go by concatenating them in between the existing rows at the desired index.\n // this is much faster than splicing them individually into 'allLeafChildren' when there are large inserts.\n var allLeafChildren = this.rootNode.allLeafChildren;\n var len = allLeafChildren.length;\n var normalisedAddIndex = addIndex;\n if (this.doingTreeData && addIndex > 0 && len > 0) {\n for (var i = 0; i < len; i++) {\n if (((_a = allLeafChildren[i]) === null || _a === void 0 ? void 0 : _a.rowIndex) == addIndex - 1) {\n normalisedAddIndex = i + 1;\n break;\n }\n }\n }\n var nodesBeforeIndex = allLeafChildren.slice(0, normalisedAddIndex);\n var nodesAfterIndex = allLeafChildren.slice(normalisedAddIndex, allLeafChildren.length);\n this.rootNode.allLeafChildren = __spread$1(nodesBeforeIndex, newNodes, nodesAfterIndex);\n }\n else {\n this.rootNode.allLeafChildren = __spread$1(this.rootNode.allLeafChildren, newNodes);\n }\n if (this.rootNode.sibling) {\n this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;\n }\n // add new row nodes to the transaction add items\n rowNodeTransaction.add = newNodes;\n };\n ClientSideNodeManager.prototype.executeRemove = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var remove = rowDataTran.remove;\n if (_.missingOrEmpty(remove)) {\n return;\n }\n var rowIdsRemoved = {};\n remove.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n // do delete - setting 'suppressFinishActions = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n if (rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n // so row renderer knows to fade row out (and not reposition it)\n rowNode.clearRowTopAndRowIndex();\n // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially\n // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list\n rowIdsRemoved[rowNode.id] = true;\n // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n delete _this.allNodesMap[rowNode.id];\n rowNodeTransaction.remove.push(rowNode);\n });\n this.rootNode.allLeafChildren = this.rootNode.allLeafChildren.filter(function (rowNode) { return !rowIdsRemoved[rowNode.id]; });\n if (this.rootNode.sibling) {\n this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;\n }\n };\n ClientSideNodeManager.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var update = rowDataTran.update;\n if (_.missingOrEmpty(update)) {\n return;\n }\n update.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n rowNode.updateData(item);\n if (!rowNode.selectable && rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n _this.setMasterForRow(rowNode, item, ClientSideNodeManager.TOP_LEVEL, false);\n rowNodeTransaction.update.push(rowNode);\n });\n };\n ClientSideNodeManager.prototype.lookupRowNode = function (data) {\n var getRowIdFunc = this.gridOptionsService.getRowIdFunc();\n var rowNode;\n if (getRowIdFunc) {\n // find rowNode using id\n var id = getRowIdFunc({ data: data, level: 0 });\n rowNode = this.allNodesMap[id];\n if (!rowNode) {\n console.error(\"AG Grid: could not find row id=\" + id + \", data item was not found for this id\");\n return null;\n }\n }\n else {\n // find rowNode using object references\n rowNode = this.rootNode.allLeafChildren.find(function (node) { return node.data === data; });\n if (!rowNode) {\n console.error(\"AG Grid: could not find data item as object was not found\", data);\n console.error(\"Consider using getRowId to help the Grid find matching row data\");\n return null;\n }\n }\n return rowNode || null;\n };\n ClientSideNodeManager.prototype.createNode = function (dataItem, parent, level) {\n var node = new RowNode(this.beans);\n node.group = false;\n this.setMasterForRow(node, dataItem, level, true);\n if (parent && !this.suppressParentsInRowNodes) {\n node.parent = parent;\n }\n node.level = level;\n node.setDataAndId(dataItem, this.nextId.toString());\n if (this.allNodesMap[node.id]) {\n console.warn(\"AG Grid: duplicate node id '\" + node.id + \"' detected from getRowId callback, this could cause issues in your grid.\");\n }\n this.allNodesMap[node.id] = node;\n this.nextId++;\n return node;\n };\n ClientSideNodeManager.prototype.setMasterForRow = function (rowNode, data, level, setExpanded) {\n if (this.doingTreeData) {\n rowNode.setMaster(false);\n if (setExpanded) {\n rowNode.expanded = false;\n }\n }\n else {\n // this is the default, for when doing grid data\n if (this.doingMasterDetail) {\n // if we are doing master detail, then the\n // default is that everything can be a Master Row.\n if (this.isRowMasterFunc) {\n rowNode.setMaster(this.isRowMasterFunc(data));\n }\n else {\n rowNode.setMaster(true);\n }\n }\n else {\n rowNode.setMaster(false);\n }\n if (setExpanded) {\n var rowGroupColumns = this.columnModel.getRowGroupColumns();\n var numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;\n // need to take row group into account when determining level\n var masterRowLevel = level + numRowGroupColumns;\n rowNode.expanded = rowNode.master ? this.isExpanded(masterRowLevel) : false;\n }\n }\n };\n ClientSideNodeManager.prototype.isExpanded = function (level) {\n var expandByDefault = this.gridOptionsService.getNum('groupDefaultExpanded');\n if (expandByDefault === -1) {\n return true;\n }\n return level < expandByDefault;\n };\n ClientSideNodeManager.TOP_LEVEL = 0;\n ClientSideNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';\n return ClientSideNodeManager;\n}());\n\nvar __extends$c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$1 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$1(arguments[i]));\n return ar;\n};\nvar RecursionType;\n(function (RecursionType) {\n RecursionType[RecursionType[\"Normal\"] = 0] = \"Normal\";\n RecursionType[RecursionType[\"AfterFilter\"] = 1] = \"AfterFilter\";\n RecursionType[RecursionType[\"AfterFilterAndSort\"] = 2] = \"AfterFilterAndSort\";\n RecursionType[RecursionType[\"PivotNodes\"] = 3] = \"PivotNodes\";\n})(RecursionType || (RecursionType = {}));\nvar ClientSideRowModel = /** @class */ (function (_super) {\n __extends$c(ClientSideRowModel, _super);\n function ClientSideRowModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onRowHeightChanged_debounced = _.debounce(_this.onRowHeightChanged.bind(_this), 100);\n _this.rowsToDisplay = []; // the rows mapped to rows to display\n return _this;\n }\n ClientSideRowModel.prototype.init = function () {\n var refreshEverythingFunc = this.refreshModel.bind(this, { step: ClientSideRowModelSteps.EVERYTHING });\n var animate = !this.gridOptionsService.is('suppressAnimationFrame');\n var refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, {\n step: ClientSideRowModelSteps.EVERYTHING,\n afterColumnsChanged: true,\n keepRenderedRows: true,\n animate: animate\n });\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refreshEverythingAfterColsChangedFunc);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refreshModel.bind(this, { step: ClientSideRowModelSteps.PIVOT }));\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc);\n this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, this.onGridStylesChanges.bind(this));\n var refreshMapListener = this.refreshModel.bind(this, {\n step: ClientSideRowModelSteps.MAP,\n keepRenderedRows: true,\n animate: animate\n });\n this.addManagedPropertyListener('groupRemoveSingleChildren', refreshMapListener);\n this.addManagedPropertyListener('groupRemoveLowestSingleChildren', refreshMapListener);\n this.rootNode = new RowNode(this.beans);\n this.nodeManager = new ClientSideNodeManager(this.rootNode, this.gridOptionsService, this.eventService, this.columnModel, this.selectionService, this.beans);\n };\n ClientSideRowModel.prototype.start = function () {\n var rowData = this.gridOptionsService.get('rowData');\n if (rowData) {\n this.setRowData(rowData);\n }\n };\n ClientSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var atLeastOneChange;\n var res = false;\n // we do this multiple times as changing the row heights can also change the first and last rows,\n // so the first pass can make lots of rows smaller, which means the second pass we end up changing\n // more rows.\n do {\n atLeastOneChange = false;\n var rowAtStartPixel = this.getRowIndexAtPixel(startPixel);\n var rowAtEndPixel = this.getRowIndexAtPixel(endPixel);\n // keep check to current page if doing pagination\n var firstRow = Math.max(rowAtStartPixel, startLimitIndex);\n var lastRow = Math.min(rowAtEndPixel, endLimitIndex);\n for (var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\n var rowNode = this.getRow(rowIndex);\n if (rowNode.rowHeightEstimated) {\n var rowHeight = this.gridOptionsService.getRowHeightForNode(rowNode);\n rowNode.setRowHeight(rowHeight.height);\n atLeastOneChange = true;\n res = true;\n }\n }\n if (atLeastOneChange) {\n this.setRowTopAndRowIndex();\n }\n } while (atLeastOneChange);\n return res;\n };\n ClientSideRowModel.prototype.setRowTopAndRowIndex = function () {\n var defaultRowHeight = this.environment.getDefaultRowHeight();\n var nextRowTop = 0;\n // mapping displayed rows is not needed for this method, however it's used in\n // clearRowTopAndRowIndex(), and given we are looping through this.rowsToDisplay here,\n // we create the map here for performance reasons, so we don't loop a second time\n // in clearRowTopAndRowIndex()\n var displayedRowsMapped = new Set();\n // we don't estimate if doing fullHeight or autoHeight, as all rows get rendered all the time\n // with these two layouts.\n var allowEstimate = this.gridOptionsService.isDomLayout('normal');\n for (var i = 0; i < this.rowsToDisplay.length; i++) {\n var rowNode = this.rowsToDisplay[i];\n if (rowNode.id != null) {\n displayedRowsMapped.add(rowNode.id);\n }\n if (rowNode.rowHeight == null) {\n var rowHeight = this.gridOptionsService.getRowHeightForNode(rowNode, allowEstimate, defaultRowHeight);\n rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);\n }\n rowNode.setRowTop(nextRowTop);\n rowNode.setRowIndex(i);\n nextRowTop += rowNode.rowHeight;\n }\n return displayedRowsMapped;\n };\n ClientSideRowModel.prototype.clearRowTopAndRowIndex = function (changedPath, displayedRowsMapped) {\n var changedPathActive = changedPath.isActive();\n var clearIfNotDisplayed = function (rowNode) {\n if (rowNode && rowNode.id != null && !displayedRowsMapped.has(rowNode.id)) {\n rowNode.clearRowTopAndRowIndex();\n }\n };\n var recurse = function (rowNode) {\n clearIfNotDisplayed(rowNode);\n clearIfNotDisplayed(rowNode.detailNode);\n clearIfNotDisplayed(rowNode.sibling);\n if (rowNode.hasChildren()) {\n if (rowNode.childrenAfterGroup) {\n // if a changedPath is active, it means we are here because of a transaction update or\n // a change detection. neither of these impacts the open/closed state of groups. so if\n // a group is not open this time, it was not open last time. so we know all closed groups\n // already have their top positions cleared. so there is no need to traverse all the way\n // when changedPath is active and the rowNode is not expanded.\n var isRootNode = rowNode.level == -1; // we need to give special consideration for root node,\n // as expanded=undefined for root node\n var skipChildren = changedPathActive && !isRootNode && !rowNode.expanded;\n if (!skipChildren) {\n rowNode.childrenAfterGroup.forEach(recurse);\n }\n }\n }\n };\n recurse(this.rootNode);\n };\n // returns false if row was moved, otherwise true\n ClientSideRowModel.prototype.ensureRowsAtPixel = function (rowNodes, pixel, increment) {\n var _this = this;\n if (increment === void 0) { increment = 0; }\n var indexAtPixelNow = this.getRowIndexAtPixel(pixel);\n var rowNodeAtPixelNow = this.getRow(indexAtPixelNow);\n var animate = !this.gridOptionsService.is('suppressAnimationFrame');\n if (rowNodeAtPixelNow === rowNodes[0]) {\n return false;\n }\n rowNodes.forEach(function (rowNode) {\n _.removeFromArray(_this.rootNode.allLeafChildren, rowNode);\n });\n rowNodes.forEach(function (rowNode, idx) {\n _.insertIntoArray(_this.rootNode.allLeafChildren, rowNode, Math.max(indexAtPixelNow + increment, 0) + idx);\n });\n this.refreshModel({\n step: ClientSideRowModelSteps.EVERYTHING,\n keepRenderedRows: true,\n keepEditingRows: true,\n animate: animate\n });\n return true;\n };\n ClientSideRowModel.prototype.highlightRowAtPixel = function (rowNode, pixel) {\n var indexAtPixelNow = pixel != null ? this.getRowIndexAtPixel(pixel) : null;\n var rowNodeAtPixelNow = indexAtPixelNow != null ? this.getRow(indexAtPixelNow) : null;\n if (!rowNodeAtPixelNow || !rowNode || rowNodeAtPixelNow === rowNode || pixel == null) {\n if (this.lastHighlightedRow) {\n this.lastHighlightedRow.setHighlighted(null);\n this.lastHighlightedRow = null;\n }\n return;\n }\n var highlight = this.getHighlightPosition(pixel, rowNodeAtPixelNow);\n if (this.lastHighlightedRow && this.lastHighlightedRow !== rowNodeAtPixelNow) {\n this.lastHighlightedRow.setHighlighted(null);\n this.lastHighlightedRow = null;\n }\n rowNodeAtPixelNow.setHighlighted(highlight);\n this.lastHighlightedRow = rowNodeAtPixelNow;\n };\n ClientSideRowModel.prototype.getHighlightPosition = function (pixel, rowNode) {\n if (!rowNode) {\n var index = this.getRowIndexAtPixel(pixel);\n rowNode = this.getRow(index || 0);\n if (!rowNode) {\n return RowHighlightPosition.Below;\n }\n }\n var rowTop = rowNode.rowTop, rowHeight = rowNode.rowHeight;\n return pixel - rowTop < rowHeight / 2 ? RowHighlightPosition.Above : RowHighlightPosition.Below;\n };\n ClientSideRowModel.prototype.getLastHighlightedRowNode = function () {\n return this.lastHighlightedRow;\n };\n ClientSideRowModel.prototype.isLastRowIndexKnown = function () {\n return true;\n };\n ClientSideRowModel.prototype.getRowCount = function () {\n if (this.rowsToDisplay) {\n return this.rowsToDisplay.length;\n }\n return 0;\n };\n ClientSideRowModel.prototype.getTopLevelRowCount = function () {\n var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return 1;\n }\n var filteredChildren = this.rootNode.childrenAfterAggFilter;\n return filteredChildren ? filteredChildren.length : 0;\n };\n ClientSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return topLevelIndex;\n }\n var rowNode = this.rootNode.childrenAfterSort[topLevelIndex];\n if (this.gridOptionsService.is('groupHideOpenParents')) {\n // if hideOpenParents, and this row open, then this row is now displayed at this index, first child is\n while (rowNode.expanded && rowNode.childrenAfterSort && rowNode.childrenAfterSort.length > 0) {\n rowNode = rowNode.childrenAfterSort[0];\n }\n }\n return rowNode.rowIndex;\n };\n ClientSideRowModel.prototype.getRowBounds = function (index) {\n if (_.missing(this.rowsToDisplay)) {\n return null;\n }\n var rowNode = this.rowsToDisplay[index];\n if (rowNode) {\n return {\n rowTop: rowNode.rowTop,\n rowHeight: rowNode.rowHeight\n };\n }\n return null;\n };\n ClientSideRowModel.prototype.onRowGroupOpened = function () {\n var animate = this.gridOptionsService.isAnimateRows();\n this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onFilterChanged = function (event) {\n if (event.afterDataChange) {\n return;\n }\n var animate = this.gridOptionsService.isAnimateRows();\n var primaryOrQuickFilterChanged = event.columns.length === 0 || event.columns.some(function (col) { return col.isPrimary(); });\n var step = primaryOrQuickFilterChanged ? ClientSideRowModelSteps.FILTER : ClientSideRowModelSteps.FILTER_AGGREGATES;\n this.refreshModel({ step: step, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onSortChanged = function () {\n var animate = this.gridOptionsService.isAnimateRows();\n this.refreshModel({ step: ClientSideRowModelSteps.SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.getType = function () {\n return 'clientSide';\n };\n ClientSideRowModel.prototype.onValueChanged = function () {\n if (this.columnModel.isPivotActive()) {\n this.refreshModel({ step: ClientSideRowModelSteps.PIVOT });\n }\n else {\n this.refreshModel({ step: ClientSideRowModelSteps.AGGREGATE });\n }\n };\n ClientSideRowModel.prototype.createChangePath = function (rowNodeTransactions) {\n // for updates, if the row is updated at all, then we re-calc all the values\n // in that row. we could compare each value to each old value, however if we\n // did this, we would be calling the valueService twice, once on the old value\n // and once on the new value. so it's less valueGetter calls if we just assume\n // each column is different. that way the changedPath is used so that only\n // the impacted parent rows are recalculated, parents who's children have\n // not changed are not impacted.\n var noTransactions = _.missingOrEmpty(rowNodeTransactions);\n var changedPath = new ChangedPath(false, this.rootNode);\n if (noTransactions || this.gridOptionsService.isTreeData()) {\n changedPath.setInactive();\n }\n return changedPath;\n };\n ClientSideRowModel.prototype.isSuppressModelUpdateAfterUpdateTransaction = function (params) {\n if (!this.gridOptionsService.is('suppressModelUpdateAfterUpdateTransaction')) {\n return false;\n }\n // return true if we are only doing update transactions\n if (params.rowNodeTransactions == null) {\n return false;\n }\n var transWithAddsOrDeletes = params.rowNodeTransactions.filter(function (tx) {\n return (tx.add != null && tx.add.length > 0) || (tx.remove != null && tx.remove.length > 0);\n });\n var transactionsContainUpdatesOnly = transWithAddsOrDeletes == null || transWithAddsOrDeletes.length == 0;\n return transactionsContainUpdatesOnly;\n };\n ClientSideRowModel.prototype.buildRefreshModelParams = function (step) {\n var paramsStep = ClientSideRowModelSteps.EVERYTHING;\n var stepsMapped = {\n everything: ClientSideRowModelSteps.EVERYTHING,\n group: ClientSideRowModelSteps.EVERYTHING,\n filter: ClientSideRowModelSteps.FILTER,\n map: ClientSideRowModelSteps.MAP,\n aggregate: ClientSideRowModelSteps.AGGREGATE,\n sort: ClientSideRowModelSteps.SORT,\n pivot: ClientSideRowModelSteps.PIVOT\n };\n if (_.exists(step)) {\n paramsStep = stepsMapped[step];\n }\n if (_.missing(paramsStep)) {\n console.error(\"AG Grid: invalid step \" + step + \", available steps are \" + Object.keys(stepsMapped).join(', '));\n return undefined;\n }\n var animate = !this.gridOptionsService.is('suppressAnimationFrame');\n var modelParams = {\n step: paramsStep,\n keepRenderedRows: true,\n keepEditingRows: true,\n animate: animate\n };\n return modelParams;\n };\n ClientSideRowModel.prototype.refreshModel = function (paramsOrStep) {\n var params = typeof paramsOrStep === 'object' && \"step\" in paramsOrStep ? paramsOrStep : this.buildRefreshModelParams(paramsOrStep);\n if (!params) {\n return;\n }\n if (this.isSuppressModelUpdateAfterUpdateTransaction(params)) {\n return;\n }\n // this goes through the pipeline of stages. what's in my head is similar\n // to the diagram on this page:\n // http://commons.apache.org/sandbox/commons-pipeline/pipeline_basics.html\n // however we want to keep the results of each stage, hence we manually call\n // each step rather than have them chain each other.\n // fallthrough in below switch is on purpose,\n // eg if STEP_FILTER, then all steps below this\n // step get done\n // let start: number;\n // console.log('======= start =======');\n var changedPath = this.createChangePath(params.rowNodeTransactions);\n switch (params.step) {\n case ClientSideRowModelSteps.EVERYTHING:\n this.doRowGrouping(params.groupState, params.rowNodeTransactions, params.rowNodeOrder, changedPath, !!params.afterColumnsChanged);\n case ClientSideRowModelSteps.FILTER:\n this.doFilter(changedPath);\n case ClientSideRowModelSteps.PIVOT:\n this.doPivot(changedPath);\n case ClientSideRowModelSteps.AGGREGATE: // depends on agg fields\n this.doAggregate(changedPath);\n case ClientSideRowModelSteps.FILTER_AGGREGATES:\n this.doFilterAggregates(changedPath);\n case ClientSideRowModelSteps.SORT:\n this.doSort(params.rowNodeTransactions, changedPath);\n case ClientSideRowModelSteps.MAP:\n this.doRowsToDisplay();\n }\n // set all row tops to null, then set row tops on all visible rows. if we don't\n // do this, then the algorithm below only sets row tops, old row tops from old rows\n // will still lie around\n var displayedNodesMapped = this.setRowTopAndRowIndex();\n this.clearRowTopAndRowIndex(changedPath, displayedNodesMapped);\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: params.animate,\n keepRenderedRows: params.keepRenderedRows,\n newData: params.newData,\n newPage: false,\n keepUndoRedoStack: params.keepUndoRedoStack\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.isEmpty = function () {\n var rowsMissing = _.missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;\n return _.missing(this.rootNode) || rowsMissing || !this.columnModel.isReady();\n };\n ClientSideRowModel.prototype.isRowsToRender = function () {\n return _.exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;\n };\n ClientSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n // if lastSelectedNode is missing, we start at the first row\n var firstRowHit = !lastInRange;\n var lastRowHit = false;\n var lastRow;\n var result = [];\n var groupsSelectChildren = this.gridOptionsService.is('groupSelectsChildren');\n this.forEachNodeAfterFilterAndSort(function (rowNode) {\n var lookingForLastRow = firstRowHit && !lastRowHit;\n // check if we need to flip the select switch\n if (!firstRowHit) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n firstRowHit = true;\n }\n }\n var skipThisGroupNode = rowNode.group && groupsSelectChildren;\n if (!skipThisGroupNode) {\n var inRange = firstRowHit && !lastRowHit;\n var childOfLastRow = rowNode.isParentOfNode(lastRow);\n if (inRange || childOfLastRow) {\n result.push(rowNode);\n }\n }\n if (lookingForLastRow) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n lastRowHit = true;\n if (rowNode === lastInRange) {\n lastRow = lastInRange;\n }\n else {\n lastRow = firstInRange;\n }\n }\n }\n });\n return result;\n };\n ClientSideRowModel.prototype.setDatasource = function (datasource) {\n console.error('AG Grid: should never call setDatasource on clientSideRowController');\n };\n ClientSideRowModel.prototype.getTopLevelNodes = function () {\n return this.rootNode ? this.rootNode.childrenAfterGroup : null;\n };\n ClientSideRowModel.prototype.getRootNode = function () {\n return this.rootNode;\n };\n ClientSideRowModel.prototype.getRow = function (index) {\n return this.rowsToDisplay[index];\n };\n ClientSideRowModel.prototype.isRowPresent = function (rowNode) {\n return this.rowsToDisplay.indexOf(rowNode) >= 0;\n };\n ClientSideRowModel.prototype.getRowIndexAtPixel = function (pixelToMatch) {\n if (this.isEmpty() || this.rowsToDisplay.length === 0) {\n return -1;\n }\n // do binary search of tree\n // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/\n var bottomPointer = 0;\n var topPointer = this.rowsToDisplay.length - 1;\n // quick check, if the pixel is out of bounds, then return last row\n if (pixelToMatch <= 0) {\n // if pixel is less than or equal zero, it's always the first row\n return 0;\n }\n var lastNode = _.last(this.rowsToDisplay);\n if (lastNode.rowTop <= pixelToMatch) {\n return this.rowsToDisplay.length - 1;\n }\n var oldBottomPointer = -1;\n var oldTopPointer = -1;\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = this.rowsToDisplay[midPointer];\n if (this.isRowInPixel(currentRowNode, pixelToMatch)) {\n return midPointer;\n }\n if (currentRowNode.rowTop < pixelToMatch) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowTop > pixelToMatch) {\n topPointer = midPointer - 1;\n }\n // infinite loops happen when there is space between rows. this can happen\n // when Auto Height is active, cos we re-calculate row tops asyncronously\n // when row heights change, which can temporarly result in gaps between rows.\n var caughtInInfiniteLoop = oldBottomPointer === bottomPointer\n && oldTopPointer === topPointer;\n if (caughtInInfiniteLoop) {\n return midPointer;\n }\n oldBottomPointer = bottomPointer;\n oldTopPointer = topPointer;\n }\n };\n ClientSideRowModel.prototype.isRowInPixel = function (rowNode, pixelToMatch) {\n var topPixel = rowNode.rowTop;\n var bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n return pixelInRow;\n };\n ClientSideRowModel.prototype.forEachLeafNode = function (callback) {\n if (this.rootNode.allLeafChildren) {\n this.rootNode.allLeafChildren.forEach(function (rowNode, index) { return callback(rowNode, index); });\n }\n };\n ClientSideRowModel.prototype.forEachNode = function (callback, includeFooterNodes) {\n if (includeFooterNodes === void 0) { includeFooterNodes = false; }\n this.recursivelyWalkNodesAndCallback({\n nodes: __spread((this.rootNode.childrenAfterGroup || [])),\n callback: callback,\n recursionType: RecursionType.Normal,\n index: 0,\n includeFooterNodes: includeFooterNodes\n });\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilter = function (callback, includeFooterNodes) {\n if (includeFooterNodes === void 0) { includeFooterNodes = false; }\n this.recursivelyWalkNodesAndCallback({\n nodes: __spread((this.rootNode.childrenAfterAggFilter || [])),\n callback: callback,\n recursionType: RecursionType.AfterFilter,\n index: 0,\n includeFooterNodes: includeFooterNodes\n });\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback, includeFooterNodes) {\n if (includeFooterNodes === void 0) { includeFooterNodes = false; }\n this.recursivelyWalkNodesAndCallback({\n nodes: __spread((this.rootNode.childrenAfterSort || [])),\n callback: callback,\n recursionType: RecursionType.AfterFilterAndSort,\n index: 0,\n includeFooterNodes: includeFooterNodes\n });\n };\n ClientSideRowModel.prototype.forEachPivotNode = function (callback, includeFooterNodes) {\n if (includeFooterNodes === void 0) { includeFooterNodes = false; }\n this.recursivelyWalkNodesAndCallback({\n nodes: [this.rootNode],\n callback: callback,\n recursionType: RecursionType.PivotNodes,\n index: 0,\n includeFooterNodes: includeFooterNodes\n });\n };\n // iterates through each item in memory, and calls the callback function\n // nodes - the rowNodes to traverse\n // callback - the user provided callback\n // recursion type - need this to know what child nodes to recurse, eg if looking at all nodes, or filtered notes etc\n // index - works similar to the index in forEach in javascript's array function\n ClientSideRowModel.prototype.recursivelyWalkNodesAndCallback = function (params) {\n var _a;\n var nodes = params.nodes, callback = params.callback, recursionType = params.recursionType, includeFooterNodes = params.includeFooterNodes;\n var index = params.index;\n var firstNode = nodes[0];\n if (includeFooterNodes && ((_a = firstNode === null || firstNode === void 0 ? void 0 : firstNode.parent) === null || _a === void 0 ? void 0 : _a.sibling)) {\n nodes.push(firstNode.parent.sibling);\n }\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n callback(node, index++);\n // go to the next level if it is a group\n if (node.hasChildren() && !node.footer) {\n // depending on the recursion type, we pick a difference set of children\n var nodeChildren = null;\n switch (recursionType) {\n case RecursionType.Normal:\n nodeChildren = node.childrenAfterGroup;\n break;\n case RecursionType.AfterFilter:\n nodeChildren = node.childrenAfterAggFilter;\n break;\n case RecursionType.AfterFilterAndSort:\n nodeChildren = node.childrenAfterSort;\n break;\n case RecursionType.PivotNodes:\n // for pivot, we don't go below leafGroup levels\n nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;\n break;\n }\n if (nodeChildren) {\n index = this.recursivelyWalkNodesAndCallback({\n nodes: __spread(nodeChildren),\n callback: callback,\n recursionType: recursionType,\n index: index,\n includeFooterNodes: includeFooterNodes\n });\n }\n }\n }\n return index;\n };\n // it's possible to recompute the aggregate without doing the other parts\n // + api.refreshClientSideRowModel('aggregate')\n ClientSideRowModel.prototype.doAggregate = function (changedPath) {\n if (this.aggregationStage) {\n this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n ClientSideRowModel.prototype.doFilterAggregates = function (changedPath) {\n if (this.filterAggregatesStage) {\n this.filterAggregatesStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n else {\n // If filterAggregatesStage is undefined, then so is the grouping stage, so all children should be on the rootNode.\n this.rootNode.childrenAfterAggFilter = this.rootNode.childrenAfterFilter;\n }\n };\n // + gridApi.expandAll()\n // + gridApi.collapseAll()\n ClientSideRowModel.prototype.expandOrCollapseAll = function (expand) {\n var usingTreeData = this.gridOptionsService.isTreeData();\n var usingPivotMode = this.columnModel.isPivotActive();\n var recursiveExpandOrCollapse = function (rowNodes) {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var actionRow = function () {\n rowNode.expanded = expand;\n recursiveExpandOrCollapse(rowNode.childrenAfterGroup);\n };\n if (usingTreeData) {\n var hasChildren = _.exists(rowNode.childrenAfterGroup);\n if (hasChildren) {\n actionRow();\n }\n return;\n }\n if (usingPivotMode) {\n var notLeafGroup = !rowNode.leafGroup;\n if (notLeafGroup) {\n actionRow();\n }\n return;\n }\n var isRowGroup = rowNode.group;\n if (isRowGroup) {\n actionRow();\n }\n });\n };\n if (this.rootNode) {\n recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);\n }\n this.refreshModel({ step: ClientSideRowModelSteps.MAP });\n var eventSource = expand ? 'expandAll' : 'collapseAll';\n var event = {\n type: Events.EVENT_EXPAND_COLLAPSE_ALL,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doSort = function (rowNodeTransactions, changedPath) {\n this.sortStage.execute({\n rowNode: this.rootNode,\n rowNodeTransactions: rowNodeTransactions,\n changedPath: changedPath\n });\n };\n ClientSideRowModel.prototype.doRowGrouping = function (groupState, rowNodeTransactions, rowNodeOrder, changedPath, afterColumnsChanged) {\n if (this.groupStage) {\n if (rowNodeTransactions) {\n this.groupStage.execute({\n rowNode: this.rootNode,\n rowNodeTransactions: rowNodeTransactions,\n rowNodeOrder: rowNodeOrder,\n changedPath: changedPath\n });\n }\n else {\n this.groupStage.execute({\n rowNode: this.rootNode,\n changedPath: changedPath,\n afterColumnsChanged: afterColumnsChanged\n });\n // set open/closed state on groups\n this.restoreGroupState(groupState);\n }\n if (this.gridOptionsService.is('groupSelectsChildren')) {\n var selectionChanged = this.selectionService.updateGroupsFromChildrenSelections('rowGroupChanged', changedPath);\n if (selectionChanged) {\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: 'rowGroupChanged'\n };\n this.eventService.dispatchEvent(event_1);\n }\n }\n }\n else {\n this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;\n if (this.rootNode.sibling) {\n this.rootNode.sibling.childrenAfterGroup = this.rootNode.childrenAfterGroup;\n }\n this.rootNode.updateHasChildren();\n }\n };\n ClientSideRowModel.prototype.restoreGroupState = function (groupState) {\n if (!groupState) {\n return;\n }\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) {\n // if the group was open last time, then open it this time. however\n // if was not open last time, then don't touch the group, so the 'groupDefaultExpanded'\n // setting will take effect.\n if (typeof groupState[key] === 'boolean') {\n node.expanded = groupState[key];\n }\n });\n };\n ClientSideRowModel.prototype.doFilter = function (changedPath) {\n this.filterStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n };\n ClientSideRowModel.prototype.doPivot = function (changedPath) {\n if (this.pivotStage) {\n this.pivotStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n ClientSideRowModel.prototype.getGroupState = function () {\n if (!this.rootNode.childrenAfterGroup || !this.gridOptionsService.is('rememberGroupStateWhenNewData')) {\n return null;\n }\n var result = {};\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) { return result[key] = node.expanded; });\n return result;\n };\n ClientSideRowModel.prototype.getCopyOfNodesMap = function () {\n return this.nodeManager.getCopyOfNodesMap();\n };\n ClientSideRowModel.prototype.getRowNode = function (id) {\n // although id is typed a string, this could be called by the user, and they could have passed a number\n var idIsGroup = typeof id == 'string' && id.indexOf(RowNode.ID_PREFIX_ROW_GROUP) == 0;\n if (idIsGroup) {\n // only one users complained about getRowNode not working for groups, after years of\n // this working for normal rows. so have done quick implementation. if users complain\n // about performance, then GroupStage should store / manage created groups in a map,\n // which is a chunk of work.\n var res_1 = undefined;\n this.forEachNode(function (node) {\n if (node.id === id) {\n res_1 = node;\n }\n });\n return res_1;\n }\n return this.nodeManager.getRowNode(id);\n };\n // rows: the rows to put into the model\n ClientSideRowModel.prototype.setRowData = function (rowData) {\n // no need to invalidate cache, as the cache is stored on the rowNode,\n // so new rowNodes means the cache is wiped anyway.\n // remember group state, so we can expand groups that should be expanded\n var groupState = this.getGroupState();\n this.nodeManager.setRowData(rowData);\n // - clears selection\n this.selectionService.reset();\n // - updates filters\n this.filterManager.onNewRowsLoaded('rowDataUpdated');\n // this event kicks off:\n // - shows 'no rows' overlay if needed\n var rowDataUpdatedEvent = {\n type: Events.EVENT_ROW_DATA_UPDATED\n };\n this.eventService.dispatchEvent(rowDataUpdatedEvent);\n this.refreshModel({\n step: ClientSideRowModelSteps.EVERYTHING,\n groupState: groupState,\n newData: true\n });\n };\n ClientSideRowModel.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n var _this = this;\n if (this.applyAsyncTransactionsTimeout == null) {\n this.rowDataTransactionBatch = [];\n var waitMillis = this.gridOptionsService.getAsyncTransactionWaitMillis();\n this.applyAsyncTransactionsTimeout = window.setTimeout(function () {\n _this.executeBatchUpdateRowData();\n }, waitMillis);\n }\n this.rowDataTransactionBatch.push({ rowDataTransaction: rowDataTransaction, callback: callback });\n };\n ClientSideRowModel.prototype.flushAsyncTransactions = function () {\n if (this.applyAsyncTransactionsTimeout != null) {\n clearTimeout(this.applyAsyncTransactionsTimeout);\n this.executeBatchUpdateRowData();\n }\n };\n ClientSideRowModel.prototype.executeBatchUpdateRowData = function () {\n var _this = this;\n this.valueCache.onDataChanged();\n var callbackFuncsBound = [];\n var rowNodeTrans = [];\n // The rowGroup stage uses rowNodeOrder if order was provided. if we didn't pass 'true' to\n // commonUpdateRowData, using addIndex would have no effect when grouping.\n var forceRowNodeOrder = false;\n if (this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch.forEach(function (tranItem) {\n var rowNodeTran = _this.nodeManager.updateRowData(tranItem.rowDataTransaction, undefined);\n rowNodeTrans.push(rowNodeTran);\n if (tranItem.callback) {\n callbackFuncsBound.push(tranItem.callback.bind(null, rowNodeTran));\n }\n if (typeof tranItem.rowDataTransaction.addIndex === 'number') {\n forceRowNodeOrder = true;\n }\n });\n }\n this.commonUpdateRowData(rowNodeTrans, undefined, forceRowNodeOrder);\n // do callbacks in next VM turn so it's async\n if (callbackFuncsBound.length > 0) {\n window.setTimeout(function () {\n callbackFuncsBound.forEach(function (func) { return func(); });\n }, 0);\n }\n if (rowNodeTrans.length > 0) {\n var event_2 = {\n type: Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED,\n results: rowNodeTrans\n };\n this.eventService.dispatchEvent(event_2);\n }\n this.rowDataTransactionBatch = null;\n this.applyAsyncTransactionsTimeout = undefined;\n };\n ClientSideRowModel.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n this.valueCache.onDataChanged();\n var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);\n // if doing immutableData, addIndex is never present. however if doing standard transaction, and user\n // provided addIndex, then this is used in updateRowData. However if doing Enterprise, then the rowGroup\n // stage also uses the\n var forceRowNodeOrder = typeof rowDataTran.addIndex === 'number';\n this.commonUpdateRowData([rowNodeTran], rowNodeOrder, forceRowNodeOrder);\n return rowNodeTran;\n };\n ClientSideRowModel.prototype.createRowNodeOrder = function () {\n var suppressSortOrder = this.gridOptionsService.is('suppressMaintainUnsortedOrder');\n if (suppressSortOrder) {\n return;\n }\n var orderMap = {};\n if (this.rootNode && this.rootNode.allLeafChildren) {\n for (var index = 0; index < this.rootNode.allLeafChildren.length; index++) {\n var node = this.rootNode.allLeafChildren[index];\n orderMap[node.id] = index;\n }\n }\n return orderMap;\n };\n // common to updateRowData and batchUpdateRowData\n ClientSideRowModel.prototype.commonUpdateRowData = function (rowNodeTrans, rowNodeOrder, forceRowNodeOrder) {\n var animate = !this.gridOptionsService.is('suppressAnimationFrame');\n if (forceRowNodeOrder) {\n rowNodeOrder = this.createRowNodeOrder();\n }\n this.refreshModel({\n step: ClientSideRowModelSteps.EVERYTHING,\n rowNodeTransactions: rowNodeTrans,\n rowNodeOrder: rowNodeOrder,\n keepRenderedRows: true,\n keepEditingRows: true,\n animate: animate\n });\n // - updates filters\n this.filterManager.onNewRowsLoaded('rowDataUpdated');\n var event = {\n type: Events.EVENT_ROW_DATA_UPDATED\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doRowsToDisplay = function () {\n this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });\n };\n ClientSideRowModel.prototype.onRowHeightChanged = function () {\n this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, keepEditingRows: true, keepUndoRedoStack: true });\n };\n /** This method is debounced. It is used for row auto-height. If we don't debounce,\n * then the Row Models will end up recalculating each row position\n * for each row height change and result in the Row Renderer laying out rows.\n * This is particularly bad if using print layout, and showing eg 1,000 rows,\n * each row will change it's height, causing Row Model to update 1,000 times.\n */\n ClientSideRowModel.prototype.onRowHeightChangedDebounced = function () {\n this.onRowHeightChanged_debounced();\n };\n ClientSideRowModel.prototype.resetRowHeights = function () {\n var atLeastOne = this.resetRowHeightsForAllRowNodes();\n this.rootNode.setRowHeight(this.rootNode.rowHeight, true);\n // when pivotMode but pivot not active, root node is displayed on its own\n // because it's only ever displayed alone, refreshing the model (onRowHeightChanged) is not required\n if (atLeastOne) {\n this.onRowHeightChanged();\n }\n };\n ClientSideRowModel.prototype.resetRowHeightsForAllRowNodes = function () {\n var atLeastOne = false;\n this.forEachNode(function (rowNode) {\n rowNode.setRowHeight(rowNode.rowHeight, true);\n // we keep the height each row is at, however we set estimated=true rather than clear the height.\n // this means the grid will not reset the row heights back to defaults, rather it will re-calc\n // the height for each row as the row is displayed. otherwise the scroll will jump when heights are reset.\n var detailNode = rowNode.detailNode;\n if (detailNode) {\n detailNode.setRowHeight(detailNode.rowHeight, true);\n }\n atLeastOne = true;\n });\n return atLeastOne;\n };\n ClientSideRowModel.prototype.onGridStylesChanges = function () {\n if (this.columnModel.isAutoRowHeightActive()) {\n return;\n }\n this.resetRowHeights();\n };\n __decorate$b([\n Autowired('columnModel')\n ], ClientSideRowModel.prototype, \"columnModel\", void 0);\n __decorate$b([\n Autowired('selectionService')\n ], ClientSideRowModel.prototype, \"selectionService\", void 0);\n __decorate$b([\n Autowired('filterManager')\n ], ClientSideRowModel.prototype, \"filterManager\", void 0);\n __decorate$b([\n Autowired('valueCache')\n ], ClientSideRowModel.prototype, \"valueCache\", void 0);\n __decorate$b([\n Autowired('beans')\n ], ClientSideRowModel.prototype, \"beans\", void 0);\n __decorate$b([\n Autowired('filterStage')\n ], ClientSideRowModel.prototype, \"filterStage\", void 0);\n __decorate$b([\n Autowired('sortStage')\n ], ClientSideRowModel.prototype, \"sortStage\", void 0);\n __decorate$b([\n Autowired('flattenStage')\n ], ClientSideRowModel.prototype, \"flattenStage\", void 0);\n __decorate$b([\n Optional('groupStage')\n ], ClientSideRowModel.prototype, \"groupStage\", void 0);\n __decorate$b([\n Optional('aggregationStage')\n ], ClientSideRowModel.prototype, \"aggregationStage\", void 0);\n __decorate$b([\n Optional('pivotStage')\n ], ClientSideRowModel.prototype, \"pivotStage\", void 0);\n __decorate$b([\n Optional('filterAggregatesStage')\n ], ClientSideRowModel.prototype, \"filterAggregatesStage\", void 0);\n __decorate$b([\n PostConstruct\n ], ClientSideRowModel.prototype, \"init\", null);\n ClientSideRowModel = __decorate$b([\n Bean('rowModel')\n ], ClientSideRowModel);\n return ClientSideRowModel;\n}(BeanStub));\n\nvar __extends$b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterStage = /** @class */ (function (_super) {\n __extends$b(FilterStage, _super);\n function FilterStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterStage.prototype.execute = function (params) {\n var changedPath = params.changedPath;\n this.filterService.filter(changedPath);\n };\n __decorate$a([\n Autowired('filterService')\n ], FilterStage.prototype, \"filterService\", void 0);\n FilterStage = __decorate$a([\n Bean('filterStage')\n ], FilterStage);\n return FilterStage;\n}(BeanStub));\n\nvar __extends$a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortStage = /** @class */ (function (_super) {\n __extends$a(SortStage, _super);\n function SortStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortStage.prototype.execute = function (params) {\n var _this = this;\n var sortOptions = this.sortController.getSortOptions();\n var sortActive = _.exists(sortOptions) && sortOptions.length > 0;\n var deltaSort = sortActive\n && _.exists(params.rowNodeTransactions)\n // in time we can remove this check, so that delta sort is always\n // on if transactions are present. it's off for now so that we can\n // selectively turn it on and test it with some select users before\n // rolling out to everyone.\n && this.gridOptionsService.is('deltaSort');\n var sortContainsGroupColumns = sortOptions.some(function (opt) { return !!_this.columnModel.getGroupDisplayColumnForGroup(opt.column.getId()); });\n this.sortService.sort(sortOptions, sortActive, deltaSort, params.rowNodeTransactions, params.changedPath, sortContainsGroupColumns);\n };\n __decorate$9([\n Autowired('sortService')\n ], SortStage.prototype, \"sortService\", void 0);\n __decorate$9([\n Autowired('sortController')\n ], SortStage.prototype, \"sortController\", void 0);\n __decorate$9([\n Autowired('columnModel')\n ], SortStage.prototype, \"columnModel\", void 0);\n SortStage = __decorate$9([\n Bean('sortStage')\n ], SortStage);\n return SortStage;\n}(BeanStub));\n\nvar __extends$9 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FlattenStage = /** @class */ (function (_super) {\n __extends$9(FlattenStage, _super);\n function FlattenStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FlattenStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n // even if not doing grouping, we do the mapping, as the client might\n // of passed in data that already has a grouping in it somewhere\n var result = [];\n // putting value into a wrapper so it's passed by reference\n var nextRowTop = { value: 0 };\n var skipLeafNodes = this.columnModel.isPivotMode();\n // if we are reducing, and not grouping, then we want to show the root node, as that\n // is where the pivot values are\n var showRootNode = skipLeafNodes && rootNode.leafGroup;\n var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;\n this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);\n // we do not want the footer total if the gris is empty\n var atLeastOneRowPresent = result.length > 0;\n var includeGroupTotalFooter = !showRootNode\n // don't show total footer when showRootNode is true (i.e. in pivot mode and no groups)\n && atLeastOneRowPresent\n && this.gridOptionsService.is('groupIncludeTotalFooter');\n if (includeGroupTotalFooter) {\n rootNode.createFooter();\n this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);\n }\n return result;\n };\n FlattenStage.prototype.recursivelyAddToRowsToDisplay = function (rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {\n if (_.missingOrEmpty(rowsToFlatten)) {\n return;\n }\n var hideOpenParents = this.gridOptionsService.is('groupHideOpenParents');\n // these two are mutually exclusive, so if first set, we don't set the second\n var groupRemoveSingleChildren = this.gridOptionsService.is('groupRemoveSingleChildren');\n var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsService.is('groupRemoveLowestSingleChildren');\n for (var i = 0; i < rowsToFlatten.length; i++) {\n var rowNode = rowsToFlatten[i];\n // check all these cases, for working out if this row should be included in the final mapped list\n var isParent = rowNode.hasChildren();\n var isSkippedLeafNode = skipLeafNodes && !isParent;\n var isRemovedSingleChildrenGroup = groupRemoveSingleChildren &&\n isParent &&\n rowNode.childrenAfterGroup.length === 1;\n var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren &&\n isParent &&\n rowNode.leafGroup &&\n rowNode.childrenAfterGroup.length === 1;\n // hide open parents means when group is open, we don't show it. we also need to make sure the\n // group is expandable in the first place (as leaf groups are not expandable if pivot mode is on).\n // the UI will never allow expanding leaf groups, however the user might via the API (or menu option 'expand all')\n var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;\n var isHiddenOpenParent = hideOpenParents && rowNode.expanded && !rowNode.master && (!neverAllowToExpand);\n var thisRowShouldBeRendered = !isSkippedLeafNode && !isHiddenOpenParent &&\n !isRemovedSingleChildrenGroup && !isRemovedLowestSingleChildrenGroup;\n if (thisRowShouldBeRendered) {\n this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);\n }\n // if we are pivoting, we never map below the leaf group\n if (skipLeafNodes && rowNode.leafGroup) {\n continue;\n }\n if (isParent) {\n var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;\n // we traverse the group if it is expended, however we always traverse if the parent node\n // was removed (as the group will never be opened if it is not displayed, we show the children instead)\n if (rowNode.expanded || excludedParent) {\n // if the parent was excluded, then ui level is that of the parent\n var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;\n this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);\n // put a footer in if user is looking for it\n if (this.gridOptionsService.is('groupIncludeFooter')) {\n this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);\n }\n }\n }\n else if (rowNode.master && rowNode.expanded) {\n var detailNode = this.createDetailNode(rowNode);\n this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);\n }\n }\n };\n // duplicated method, it's also in floatingRowModel\n FlattenStage.prototype.addRowNodeToRowsToDisplay = function (rowNode, result, nextRowTop, uiLevel) {\n var isGroupMultiAutoColumn = this.gridOptionsService.isGroupMultiAutoColumn();\n result.push(rowNode);\n rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);\n };\n FlattenStage.prototype.createDetailNode = function (masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n var detailNode = new RowNode(this.beans);\n detailNode.detail = true;\n detailNode.selectable = false;\n detailNode.parent = masterNode;\n if (_.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n masterNode.detailNode = detailNode;\n return detailNode;\n };\n __decorate$8([\n Autowired('columnModel')\n ], FlattenStage.prototype, \"columnModel\", void 0);\n __decorate$8([\n Autowired('beans')\n ], FlattenStage.prototype, \"beans\", void 0);\n FlattenStage = __decorate$8([\n Bean('flattenStage')\n ], FlattenStage);\n return FlattenStage;\n}(BeanStub));\n\nvar __extends$8 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortService = /** @class */ (function (_super) {\n __extends$8(SortService, _super);\n function SortService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortService.prototype.init = function () {\n this.postSortFunc = this.getPostSortFunc();\n };\n SortService.prototype.sort = function (sortOptions, sortActive, useDeltaSort, rowNodeTransactions, changedPath, sortContainsGroupColumns) {\n var _this = this;\n var groupMaintainOrder = this.gridOptionsService.is('groupMaintainOrder');\n var groupColumnsPresent = this.columnModel.getAllGridColumns().some(function (c) { return c.isRowGroupActive(); });\n var allDirtyNodes = {};\n if (useDeltaSort && rowNodeTransactions) {\n allDirtyNodes = this.calculateDirtyNodes(rowNodeTransactions);\n }\n var isPivotMode = this.columnModel.isPivotMode();\n var callback = function (rowNode) {\n // we clear out the 'pull down open parents' first, as the values mix up the sorting\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterAggFilter, true);\n // It's pointless to sort rows which aren't being displayed. in pivot mode we don't need to sort the leaf group children.\n var skipSortingPivotLeafs = isPivotMode && rowNode.leafGroup;\n // Javascript sort is non deterministic when all the array items are equals, ie Comparator always returns 0,\n // so to ensure the array keeps its order, add an additional sorting condition manually, in this case we\n // are going to inspect the original array position. This is what sortedRowNodes is for.\n var skipSortingGroups = groupMaintainOrder && groupColumnsPresent && !rowNode.leafGroup && !sortContainsGroupColumns;\n if (skipSortingGroups) {\n var childrenToBeSorted = rowNode.childrenAfterAggFilter.slice(0);\n if (rowNode.childrenAfterSort) {\n var indexedOrders_1 = {};\n rowNode.childrenAfterSort.forEach(function (node, idx) {\n indexedOrders_1[node.id] = idx;\n });\n childrenToBeSorted.sort(function (row1, row2) { var _a, _b; return ((_a = indexedOrders_1[row1.id]) !== null && _a !== void 0 ? _a : 0) - ((_b = indexedOrders_1[row2.id]) !== null && _b !== void 0 ? _b : 0); });\n }\n rowNode.childrenAfterSort = childrenToBeSorted;\n }\n else if (!sortActive || skipSortingPivotLeafs) {\n // if there's no sort to make, skip this step\n rowNode.childrenAfterSort = rowNode.childrenAfterAggFilter.slice(0);\n }\n else if (useDeltaSort) {\n rowNode.childrenAfterSort = _this.doDeltaSort(rowNode, allDirtyNodes, changedPath, sortOptions);\n }\n else {\n rowNode.childrenAfterSort = _this.rowNodeSorter.doFullSort(rowNode.childrenAfterAggFilter, sortOptions);\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenAfterSort = rowNode.childrenAfterSort;\n }\n _this.updateChildIndexes(rowNode);\n if (_this.postSortFunc) {\n var params = { nodes: rowNode.childrenAfterSort };\n _this.postSortFunc(params);\n }\n };\n if (changedPath) {\n changedPath.forEachChangedNodeDepthFirst(callback);\n }\n this.updateGroupDataForHideOpenParents(changedPath);\n };\n SortService.prototype.getPostSortFunc = function () {\n var postSortRows = this.gridOptionsService.getCallback('postSortRows');\n if (postSortRows) {\n return postSortRows;\n }\n // this is the deprecated way, so provide a proxy to make it compatible\n var postSort = this.gridOptionsService.get('postSort');\n if (postSort) {\n return function (params) { return postSort(params.nodes); };\n }\n };\n SortService.prototype.calculateDirtyNodes = function (rowNodeTransactions) {\n var dirtyNodes = {};\n var addNodesFunc = function (rowNodes) {\n if (rowNodes) {\n rowNodes.forEach(function (rowNode) { return dirtyNodes[rowNode.id] = true; });\n }\n };\n // all leaf level nodes in the transaction were impacted\n if (rowNodeTransactions) {\n rowNodeTransactions.forEach(function (tran) {\n addNodesFunc(tran.add);\n addNodesFunc(tran.update);\n addNodesFunc(tran.remove);\n });\n }\n return dirtyNodes;\n };\n SortService.prototype.doDeltaSort = function (rowNode, allTouchedNodes, changedPath, sortOptions) {\n var _this = this;\n var unsortedRows = rowNode.childrenAfterAggFilter;\n var oldSortedRows = rowNode.childrenAfterSort;\n if (!oldSortedRows) {\n return this.rowNodeSorter.doFullSort(unsortedRows, sortOptions);\n }\n var untouchedRowsMap = {};\n var touchedRows = [];\n unsortedRows.forEach(function (row) {\n if (allTouchedNodes[row.id] || !changedPath.canSkip(row)) {\n touchedRows.push(row);\n }\n else {\n untouchedRowsMap[row.id] = true;\n }\n });\n var sortedUntouchedRows = oldSortedRows.filter(function (child) { return untouchedRowsMap[child.id]; });\n var mapNodeToSortedNode = function (rowNode, pos) { return ({ currentPos: pos, rowNode: rowNode }); };\n var sortedChangedRows = touchedRows\n .map(mapNodeToSortedNode)\n .sort(function (a, b) { return _this.rowNodeSorter.compareRowNodes(sortOptions, a, b); });\n return this.mergeSortedArrays(sortOptions, sortedChangedRows, sortedUntouchedRows.map(mapNodeToSortedNode)).map(function (_a) {\n var rowNode = _a.rowNode;\n return rowNode;\n });\n };\n // Merge two sorted arrays into each other\n SortService.prototype.mergeSortedArrays = function (sortOptions, arr1, arr2) {\n var res = [];\n var i = 0;\n var j = 0;\n // Traverse both array, adding them in order\n while (i < arr1.length && j < arr2.length) {\n // Check if current element of first\n // array is smaller than current element\n // of second array. If yes, store first\n // array element and increment first array\n // index. Otherwise do same with second array\n var compareResult = this.rowNodeSorter.compareRowNodes(sortOptions, arr1[i], arr2[j]);\n if (compareResult < 0) {\n res.push(arr1[i++]);\n }\n else {\n res.push(arr2[j++]);\n }\n }\n // add remaining from arr1\n while (i < arr1.length) {\n res.push(arr1[i++]);\n }\n // add remaining from arr2\n while (j < arr2.length) {\n res.push(arr2[j++]);\n }\n return res;\n };\n SortService.prototype.updateChildIndexes = function (rowNode) {\n if (_.missing(rowNode.childrenAfterSort)) {\n return;\n }\n var listToSort = rowNode.childrenAfterSort;\n for (var i = 0; i < listToSort.length; i++) {\n var child = listToSort[i];\n var firstChild = i === 0;\n var lastChild = i === rowNode.childrenAfterSort.length - 1;\n child.setFirstChild(firstChild);\n child.setLastChild(lastChild);\n child.setChildIndex(i);\n }\n };\n SortService.prototype.updateGroupDataForHideOpenParents = function (changedPath) {\n var _this = this;\n if (!this.gridOptionsService.is('groupHideOpenParents')) {\n return;\n }\n if (this.gridOptionsService.isTreeData()) {\n var msg_1 = \"AG Grid: The property hideOpenParents dose not work with Tree Data. This is because Tree Data has values at the group level, it doesn't make sense to hide them (as opposed to Row Grouping, which only has Aggregated Values at the group level).\";\n _.doOnce(function () { return console.warn(msg_1); }, 'sortService.hideOpenParentsWithTreeData');\n return false;\n }\n // recurse breadth first over group nodes after sort to 'pull down' group data to child groups\n var callback = function (rowNode) {\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);\n rowNode.childrenAfterSort.forEach(function (child) {\n if (child.hasChildren()) {\n callback(child);\n }\n });\n };\n if (changedPath) {\n changedPath.executeFromRootNode(function (rowNode) { return callback(rowNode); });\n }\n };\n SortService.prototype.pullDownGroupDataForHideOpenParents = function (rowNodes, clearOperation) {\n var _this = this;\n if (!this.gridOptionsService.is('groupHideOpenParents') || _.missing(rowNodes)) {\n return;\n }\n rowNodes.forEach(function (childRowNode) {\n var groupDisplayCols = _this.columnModel.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (groupDisplayCol) {\n var showRowGroup = groupDisplayCol.getColDef().showRowGroup;\n if (typeof showRowGroup !== 'string') {\n console.error('AG Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup');\n return;\n }\n var displayingGroupKey = showRowGroup;\n var rowGroupColumn = _this.columnModel.getPrimaryColumn(displayingGroupKey);\n var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;\n if (thisRowNodeMatches) {\n return;\n }\n if (clearOperation) {\n // if doing a clear operation, we clear down the value for every possible group column\n childRowNode.setGroupValue(groupDisplayCol.getId(), undefined);\n }\n else {\n // if doing a set operation, we set only where the pull down is to occur\n var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);\n if (parentToStealFrom) {\n childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);\n }\n }\n });\n });\n };\n __decorate$7([\n Autowired('columnModel')\n ], SortService.prototype, \"columnModel\", void 0);\n __decorate$7([\n Autowired('rowNodeSorter')\n ], SortService.prototype, \"rowNodeSorter\", void 0);\n __decorate$7([\n PostConstruct\n ], SortService.prototype, \"init\", null);\n SortService = __decorate$7([\n Bean('sortService')\n ], SortService);\n return SortService;\n}(BeanStub));\n\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterService = /** @class */ (function (_super) {\n __extends$7(FilterService, _super);\n function FilterService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterService.prototype.filter = function (changedPath) {\n var filterActive = this.filterManager.isColumnFilterPresent()\n || this.filterManager.isQuickFilterPresent()\n || this.filterManager.isExternalFilterPresent();\n this.filterNodes(filterActive, changedPath);\n };\n FilterService.prototype.filterNodes = function (filterActive, changedPath) {\n var _this = this;\n var filterCallback = function (rowNode, includeChildNodes) {\n // recursively get all children that are groups to also filter\n if (rowNode.hasChildren()) {\n // result of filter for this node. when filtering tree data, includeChildNodes = true when parent passes\n if (filterActive && !includeChildNodes) {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function (childNode) {\n // a group is included in the result if it has any children of it's own.\n // by this stage, the child groups are already filtered\n var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;\n // both leaf level nodes and tree data nodes have data. these get added if\n // the data passes the filter\n var passBecauseDataPasses = childNode.data\n && _this.filterManager.doesRowPassFilter({ rowNode: childNode });\n // note - tree data nodes pass either if a) they pass themselves or b) any children of that node pass\n return passBecauseChildren || passBecauseDataPasses;\n });\n }\n else {\n // if not filtering, the result is the original list\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n }\n else {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenAfterFilter = rowNode.childrenAfterFilter;\n }\n };\n if (this.doingTreeDataFiltering()) {\n var treeDataDepthFirstFilter_1 = function (rowNode, alreadyFoundInParent) {\n // tree data filter traverses the hierarchy depth first and includes child nodes if parent passes\n // filter, and parent nodes will be include if any children exist.\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n // first check if current node passes filter before invoking child nodes\n var foundInParent = alreadyFoundInParent\n || _this.filterManager.doesRowPassFilter({ rowNode: childNode });\n if (childNode.childrenAfterGroup) {\n treeDataDepthFirstFilter_1(rowNode.childrenAfterGroup[i], foundInParent);\n }\n else {\n filterCallback(childNode, foundInParent);\n }\n }\n }\n filterCallback(rowNode, alreadyFoundInParent);\n };\n var treeDataFilterCallback = function (rowNode) { return treeDataDepthFirstFilter_1(rowNode, false); };\n changedPath.executeFromRootNode(treeDataFilterCallback);\n }\n else {\n var defaultFilterCallback = function (rowNode) { return filterCallback(rowNode, false); };\n changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);\n }\n };\n FilterService.prototype.doingTreeDataFiltering = function () {\n return this.gridOptionsService.isTreeData() && !this.gridOptionsService.is('excludeChildrenWhenTreeDataFiltering');\n };\n __decorate$6([\n Autowired('filterManager')\n ], FilterService.prototype, \"filterManager\", void 0);\n FilterService = __decorate$6([\n Bean(\"filterService\")\n ], FilterService);\n return FilterService;\n}(BeanStub));\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar ImmutableService = /** @class */ (function (_super) {\n __extends$6(ImmutableService, _super);\n function ImmutableService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ImmutableService.prototype.postConstruct = function () {\n if (this.rowModel.getType() === 'clientSide') {\n this.clientSideRowModel = this.rowModel;\n }\n };\n ImmutableService.prototype.isActive = function () {\n // we used to have a property immutableData for this. however this was deprecated\n // in favour of having Immutable Data on by default when getRowId is provided\n var getRowIdProvided = this.gridOptionsService.exists('getRowId');\n var immutableData = this.gridOptionsService.is('immutableData');\n // this property is a backwards compatibility property, for those who want\n // the old behaviour of Row ID's but NOT Immutable Data.\n var resetRowDataOnUpdate = this.gridOptionsService.is('resetRowDataOnUpdate');\n if (resetRowDataOnUpdate) {\n return false;\n }\n return getRowIdProvided || immutableData;\n };\n ImmutableService.prototype.setRowData = function (rowData) {\n var transactionAndMap = this.createTransactionForRowData(rowData);\n if (!transactionAndMap) {\n return;\n }\n var _a = __read(transactionAndMap, 2), transaction = _a[0], orderIdMap = _a[1];\n this.clientSideRowModel.updateRowData(transaction, orderIdMap);\n };\n // converts the setRowData() command to a transaction\n ImmutableService.prototype.createTransactionForRowData = function (rowData) {\n if (_.missing(this.clientSideRowModel)) {\n console.error('AG Grid: ImmutableService only works with ClientSideRowModel');\n return;\n }\n var getRowIdFunc = this.gridOptionsService.getRowIdFunc();\n if (getRowIdFunc == null) {\n console.error('AG Grid: ImmutableService requires getRowId() callback to be implemented, your row data needs IDs!');\n return;\n }\n // convert the data into a transaction object by working out adds, removes and updates\n var transaction = {\n remove: [],\n update: [],\n add: []\n };\n var existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();\n var suppressSortOrder = this.gridOptionsService.is('suppressMaintainUnsortedOrder');\n var orderMap = suppressSortOrder ? undefined : {};\n if (_.exists(rowData)) {\n // split all the new data in the following:\n // if new, push to 'add'\n // if update, push to 'update'\n // if not changed, do not include in the transaction\n rowData.forEach(function (data, index) {\n var id = getRowIdFunc({ data: data, level: 0 });\n var existingNode = existingNodesMap[id];\n if (orderMap) {\n orderMap[id] = index;\n }\n if (existingNode) {\n var dataHasChanged = existingNode.data !== data;\n if (dataHasChanged) {\n transaction.update.push(data);\n }\n // otherwise, if data not changed, we just don't include it anywhere, as it's not a delta\n // remove from list, so we know the item is not to be removed\n existingNodesMap[id] = undefined;\n }\n else {\n transaction.add.push(data);\n }\n });\n }\n // at this point, all rows that are left, should be removed\n _.iterateObject(existingNodesMap, function (id, rowNode) {\n if (rowNode) {\n transaction.remove.push(rowNode.data);\n }\n });\n return [transaction, orderMap];\n };\n __decorate$5([\n Autowired('rowModel')\n ], ImmutableService.prototype, \"rowModel\", void 0);\n __decorate$5([\n Autowired('rowRenderer')\n ], ImmutableService.prototype, \"rowRenderer\", void 0);\n __decorate$5([\n PostConstruct\n ], ImmutableService.prototype, \"postConstruct\", null);\n ImmutableService = __decorate$5([\n Bean('immutableService')\n ], ImmutableService);\n return ImmutableService;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$2 = '29.3.5';\n\nvar ClientSideRowModelModule = {\n version: VERSION$2,\n moduleName: ModuleNames.ClientSideRowModelModule,\n rowModel: 'clientSide',\n beans: [ClientSideRowModel, FilterStage, SortStage, FlattenStage, SortService, FilterService, ImmutableService],\n};\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar InfiniteBlock = /** @class */ (function (_super) {\n __extends$5(InfiniteBlock, _super);\n function InfiniteBlock(id, parentCache, params) {\n var _this = _super.call(this, id) || this;\n _this.parentCache = parentCache;\n _this.params = params;\n // we don't need to calculate these now, as the inputs don't change,\n // however it makes the code easier to read if we work them out up front\n _this.startRow = id * params.blockSize;\n _this.endRow = _this.startRow + params.blockSize;\n return _this;\n }\n InfiniteBlock.prototype.postConstruct = function () {\n this.createRowNodes();\n };\n InfiniteBlock.prototype.getBlockStateJson = function () {\n return {\n id: '' + this.getId(),\n state: {\n blockNumber: this.getId(),\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n pageStatus: this.getState()\n }\n };\n };\n InfiniteBlock.prototype.setDataAndId = function (rowNode, data, index) {\n // if there's no id and the rowNode was rendered before, it means this\n // was a placeholder rowNode and should not be recycled. Setting\n // `alreadyRendered` to `false` forces the rowRenderer to flush it.\n if (!rowNode.id && rowNode.alreadyRendered) {\n rowNode.alreadyRendered = false;\n }\n if (_.exists(data)) {\n // this means if the user is not providing id's we just use the\n // index for the row. this will allow selection to work (that is based\n // on index) as long user is not inserting or deleting rows,\n // or wanting to keep selection between server side sorting or filtering\n rowNode.setDataAndId(data, index.toString());\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n }\n };\n InfiniteBlock.prototype.loadFromDatasource = function () {\n var _this = this;\n var params = this.createLoadParams();\n if (_.missing(this.params.datasource.getRows)) {\n console.warn(\"AG Grid: datasource is missing getRows method\");\n return;\n }\n // put in timeout, to force result to be async\n window.setTimeout(function () {\n _this.params.datasource.getRows(params);\n }, 0);\n };\n InfiniteBlock.prototype.processServerFail = function () {\n // todo - this method has better handling in SSRM\n };\n InfiniteBlock.prototype.createLoadParams = function () {\n // PROBLEM . . . . when the user sets sort via colDef.sort, then this code\n // is executing before the sort is set up, so server is not getting the sort\n // model. need to change with regards order - so the server side request is\n // AFTER thus it gets the right sort model.\n var params = {\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this, this.getVersion()),\n sortModel: this.params.sortModel,\n filterModel: this.params.filterModel,\n context: this.gridOptionsService.context\n };\n return params;\n };\n InfiniteBlock.prototype.forEachNode = function (callback, sequence, rowCount) {\n var _this = this;\n this.rowNodes.forEach(function (rowNode, index) {\n var rowIndex = _this.startRow + index;\n if (rowIndex < rowCount) {\n callback(rowNode, sequence.next());\n }\n });\n };\n InfiniteBlock.prototype.getLastAccessed = function () {\n return this.lastAccessed;\n };\n InfiniteBlock.prototype.getRow = function (rowIndex, dontTouchLastAccessed) {\n if (dontTouchLastAccessed === void 0) { dontTouchLastAccessed = false; }\n if (!dontTouchLastAccessed) {\n this.lastAccessed = this.params.lastAccessedSequence.next();\n }\n var localIndex = rowIndex - this.startRow;\n return this.rowNodes[localIndex];\n };\n InfiniteBlock.prototype.getStartRow = function () {\n return this.startRow;\n };\n InfiniteBlock.prototype.getEndRow = function () {\n return this.endRow;\n };\n // creates empty row nodes, data is missing as not loaded yet\n InfiniteBlock.prototype.createRowNodes = function () {\n this.rowNodes = [];\n for (var i = 0; i < this.params.blockSize; i++) {\n var rowIndex = this.startRow + i;\n var rowNode = new RowNode(this.beans);\n rowNode.setRowHeight(this.params.rowHeight);\n rowNode.uiLevel = 0;\n rowNode.setRowIndex(rowIndex);\n rowNode.setRowTop(this.params.rowHeight * rowIndex);\n this.rowNodes.push(rowNode);\n }\n };\n InfiniteBlock.prototype.processServerResult = function (params) {\n var _this = this;\n this.rowNodes.forEach(function (rowNode, index) {\n var data = params.rowData ? params.rowData[index] : undefined;\n _this.setDataAndId(rowNode, data, _this.startRow + index);\n });\n var finalRowCount = params.rowCount != null && params.rowCount >= 0 ? params.rowCount : undefined;\n this.parentCache.pageLoaded(this, finalRowCount);\n };\n InfiniteBlock.prototype.destroyRowNodes = function () {\n this.rowNodes.forEach(function (rowNode) {\n // this is needed, so row render knows to fade out the row, otherwise it\n // sees row top is present, and thinks the row should be shown.\n rowNode.clearRowTopAndRowIndex();\n });\n };\n __decorate$4([\n Autowired('beans')\n ], InfiniteBlock.prototype, \"beans\", void 0);\n __decorate$4([\n PostConstruct\n ], InfiniteBlock.prototype, \"postConstruct\", null);\n __decorate$4([\n PreDestroy\n ], InfiniteBlock.prototype, \"destroyRowNodes\", null);\n return InfiniteBlock;\n}(RowNodeBlock));\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar InfiniteCache = /** @class */ (function (_super) {\n __extends$4(InfiniteCache, _super);\n function InfiniteCache(params) {\n var _this = _super.call(this) || this;\n _this.lastRowIndexKnown = false;\n _this.blocks = {};\n _this.blockCount = 0;\n _this.rowCount = params.initialRowCount;\n _this.params = params;\n return _this;\n }\n InfiniteCache.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('InfiniteCache');\n };\n // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,\n // it will want new pages in the cache as it asks for rows. only when we are inserting /\n // removing rows via the api is dontCreatePage set, where we move rows between the pages.\n InfiniteCache.prototype.getRow = function (rowIndex, dontCreatePage) {\n if (dontCreatePage === void 0) { dontCreatePage = false; }\n var blockId = Math.floor(rowIndex / this.params.blockSize);\n var block = this.blocks[blockId];\n if (!block) {\n if (dontCreatePage) {\n return undefined;\n }\n block = this.createBlock(blockId);\n }\n return block.getRow(rowIndex);\n };\n InfiniteCache.prototype.createBlock = function (blockNumber) {\n var newBlock = this.createBean(new InfiniteBlock(blockNumber, this, this.params));\n this.blocks[newBlock.getId()] = newBlock;\n this.blockCount++;\n this.purgeBlocksIfNeeded(newBlock);\n this.params.rowNodeBlockLoader.addBlock(newBlock);\n return newBlock;\n };\n // we have this on infinite row model only, not server side row model,\n // because for server side, it would leave the children in inconsistent\n // state - eg if a node had children, but after the refresh it had data\n // for a different row, then the children would be with the wrong row node.\n InfiniteCache.prototype.refreshCache = function () {\n var nothingToRefresh = this.blockCount == 0;\n if (nothingToRefresh) {\n this.purgeCache();\n return;\n }\n this.getBlocksInOrder().forEach(function (block) { return block.setStateWaitingToLoad(); });\n this.params.rowNodeBlockLoader.checkBlockToLoad();\n };\n InfiniteCache.prototype.destroyAllBlocks = function () {\n var _this = this;\n this.getBlocksInOrder().forEach(function (block) { return _this.destroyBlock(block); });\n };\n InfiniteCache.prototype.getRowCount = function () {\n return this.rowCount;\n };\n InfiniteCache.prototype.isLastRowIndexKnown = function () {\n return this.lastRowIndexKnown;\n };\n // block calls this, when page loaded\n InfiniteCache.prototype.pageLoaded = function (block, lastRow) {\n // if we are not active, then we ignore all events, otherwise we could end up getting the\n // grid to refresh even though we are no longer the active cache\n if (!this.isAlive()) {\n return;\n }\n this.logger.log(\"onPageLoaded: page = \" + block.getId() + \", lastRow = \" + lastRow);\n this.checkRowCount(block, lastRow);\n // we fire cacheUpdated even if the row count has not changed, as some items need updating even\n // if no new rows to render. for example the pagination panel has '?' as the total rows when loading\n // is underway, which would need to get updated when loading finishes.\n this.onCacheUpdated();\n };\n InfiniteCache.prototype.purgeBlocksIfNeeded = function (blockToExclude) {\n var _this = this;\n // we exclude checking for the page just created, as this has yet to be accessed and hence\n // the lastAccessed stamp will not be updated for the first time yet\n var blocksForPurging = this.getBlocksInOrder().filter(function (b) { return b != blockToExclude; });\n var lastAccessedComparator = function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); };\n blocksForPurging.sort(lastAccessedComparator);\n // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.\n // in other words, after the splice operation below, we have taken out the blocks\n // we want to keep, which means we are left with blocks that we can potentially purge\n var maxBlocksProvided = this.params.maxBlocksInCache > 0;\n var blocksToKeep = maxBlocksProvided ? this.params.maxBlocksInCache - 1 : null;\n var emptyBlocksToKeep = InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n blocksForPurging.forEach(function (block, index) {\n var purgeBecauseBlockEmpty = block.getState() === InfiniteBlock.STATE_WAITING_TO_LOAD && index >= emptyBlocksToKeep;\n var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n // if the block currently has rows been displayed, then don't remove it either.\n // this can happen if user has maxBlocks=2, and blockSize=5 (thus 10 max rows in cache)\n // but the screen is showing 20 rows, so at least 4 blocks are needed.\n if (_this.isBlockCurrentlyDisplayed(block)) {\n return;\n }\n // don't want to loose keyboard focus, so keyboard navigation can continue. so keep focused blocks.\n if (_this.isBlockFocused(block)) {\n return;\n }\n // at this point, block is not needed, so burn baby burn\n _this.removeBlockFromCache(block);\n }\n });\n };\n InfiniteCache.prototype.isBlockFocused = function (block) {\n var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n var blockIndexStart = block.getStartRow();\n var blockIndexEnd = block.getEndRow();\n var hasFocus = focusedCell.rowIndex >= blockIndexStart && focusedCell.rowIndex < blockIndexEnd;\n return hasFocus;\n };\n InfiniteCache.prototype.isBlockCurrentlyDisplayed = function (block) {\n var startIndex = block.getStartRow();\n var endIndex = block.getEndRow() - 1;\n return this.rowRenderer.isRangeInRenderedViewport(startIndex, endIndex);\n };\n InfiniteCache.prototype.removeBlockFromCache = function (blockToRemove) {\n if (!blockToRemove) {\n return;\n }\n this.destroyBlock(blockToRemove);\n // we do not want to remove the 'loaded' event listener, as the\n // concurrent loads count needs to be updated when the load is complete\n // if the purged page is in loading state\n };\n InfiniteCache.prototype.checkRowCount = function (block, lastRow) {\n // if client provided a last row, we always use it, as it could change between server calls\n // if user deleted data and then called refresh on the grid.\n if (typeof lastRow === 'number' && lastRow >= 0) {\n this.rowCount = lastRow;\n this.lastRowIndexKnown = true;\n }\n else if (!this.lastRowIndexKnown) {\n // otherwise, see if we need to add some virtual rows\n var lastRowIndex = (block.getId() + 1) * this.params.blockSize;\n var lastRowIndexPlusOverflow = lastRowIndex + this.params.overflowSize;\n if (this.rowCount < lastRowIndexPlusOverflow) {\n this.rowCount = lastRowIndexPlusOverflow;\n }\n }\n };\n InfiniteCache.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {\n this.rowCount = rowCount;\n // if undefined is passed, we do not set this value, if one of {true,false}\n // is passed, we do set the value.\n if (_.exists(lastRowIndexKnown)) {\n this.lastRowIndexKnown = lastRowIndexKnown;\n }\n // if we are still searching, then the row count must not end at the end\n // of a particular page, otherwise the searching will not pop into the\n // next page\n if (!this.lastRowIndexKnown) {\n if (this.rowCount % this.params.blockSize === 0) {\n this.rowCount++;\n }\n }\n this.onCacheUpdated();\n };\n InfiniteCache.prototype.forEachNodeDeep = function (callback) {\n var _this = this;\n var sequence = new NumberSequence();\n this.getBlocksInOrder().forEach(function (block) { return block.forEachNode(callback, sequence, _this.rowCount); });\n };\n InfiniteCache.prototype.getBlocksInOrder = function () {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var blockComparator = function (a, b) { return a.getId() - b.getId(); };\n var blocks = _.getAllValuesInObject(this.blocks).sort(blockComparator);\n return blocks;\n };\n InfiniteCache.prototype.destroyBlock = function (block) {\n delete this.blocks[block.getId()];\n this.destroyBean(block);\n this.blockCount--;\n this.params.rowNodeBlockLoader.removeBlock(block);\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n InfiniteCache.prototype.onCacheUpdated = function () {\n if (this.isAlive()) {\n // if the virtualRowCount is shortened, then it's possible blocks exist that are no longer\n // in the valid range. so we must remove these. this can happen if user explicitly sets\n // the virtual row count, or the datasource returns a result and sets lastRow to something\n // less than virtualRowCount (can happen if user scrolls down, server reduces dataset size).\n this.destroyAllBlocksPastVirtualRowCount();\n // this results in both row models (infinite and server side) firing ModelUpdated,\n // however server side row model also updates the row indexes first\n var event_1 = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n InfiniteCache.prototype.destroyAllBlocksPastVirtualRowCount = function () {\n var _this = this;\n var blocksToDestroy = [];\n this.getBlocksInOrder().forEach(function (block) {\n var startRow = block.getId() * _this.params.blockSize;\n if (startRow >= _this.rowCount) {\n blocksToDestroy.push(block);\n }\n });\n if (blocksToDestroy.length > 0) {\n blocksToDestroy.forEach(function (block) { return _this.destroyBlock(block); });\n }\n };\n InfiniteCache.prototype.purgeCache = function () {\n var _this = this;\n this.getBlocksInOrder().forEach(function (block) { return _this.removeBlockFromCache(block); });\n this.lastRowIndexKnown = false;\n // if zero rows in the cache, we need to get the SSRM to start asking for rows again.\n // otherwise if set to zero rows last time, and we don't update the row count, then after\n // the purge there will still be zero rows, meaning the SSRM won't request any rows.\n // to kick things off, at least one row needs to be asked for.\n if (this.rowCount === 0) {\n this.rowCount = this.params.initialRowCount;\n }\n this.onCacheUpdated();\n };\n InfiniteCache.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var _this = this;\n var result = [];\n var lastBlockId = -1;\n var inActiveRange = false;\n var numberSequence = new NumberSequence();\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) {\n inActiveRange = true;\n }\n var foundGapInSelection = false;\n this.getBlocksInOrder().forEach(function (block) {\n if (foundGapInSelection) {\n return;\n }\n if (inActiveRange && (lastBlockId + 1 !== block.getId())) {\n foundGapInSelection = true;\n return;\n }\n lastBlockId = block.getId();\n block.forEachNode(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n }, numberSequence, _this.rowCount);\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = foundGapInSelection || inActiveRange;\n return invalidRange ? [] : result;\n };\n // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10\n // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly\n // scrolled over are not needed to be loaded.\n InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP = 2;\n __decorate$3([\n Autowired('rowRenderer')\n ], InfiniteCache.prototype, \"rowRenderer\", void 0);\n __decorate$3([\n Autowired(\"focusService\")\n ], InfiniteCache.prototype, \"focusService\", void 0);\n __decorate$3([\n __param(0, Qualifier('loggerFactory'))\n ], InfiniteCache.prototype, \"setBeans\", null);\n __decorate$3([\n PreDestroy\n ], InfiniteCache.prototype, \"destroyAllBlocks\", null);\n return InfiniteCache;\n}(BeanStub));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar InfiniteRowModel = /** @class */ (function (_super) {\n __extends$3(InfiniteRowModel, _super);\n function InfiniteRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InfiniteRowModel.prototype.getRowBounds = function (index) {\n return {\n rowHeight: this.rowHeight,\n rowTop: this.rowHeight * index\n };\n };\n // we don't implement as lazy row heights is not supported in this row model\n InfiniteRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n return false;\n };\n InfiniteRowModel.prototype.init = function () {\n var _this = this;\n if (!this.gridOptionsService.isRowModelType('infinite')) {\n return;\n }\n this.rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n this.addEventListeners();\n this.addDestroyFunc(function () { return _this.destroyCache(); });\n this.verifyProps();\n };\n InfiniteRowModel.prototype.verifyProps = function () {\n if (this.gridOptionsService.exists('initialGroupOrderComparator') || this.gridOptionsService.exists('defaultGroupOrderComparator')) {\n var message_1 = \"AG Grid: initialGroupOrderComparator cannot be used with Infinite Row Model. If using Infinite Row Model, then sorting is done on the server side, nothing to do with the client.\";\n _.doOnce(function () { return console.warn(message_1); }, 'IRM.InitialGroupOrderComparator');\n }\n };\n InfiniteRowModel.prototype.start = function () {\n this.setDatasource(this.gridOptionsService.get('datasource'));\n };\n InfiniteRowModel.prototype.destroyDatasource = function () {\n if (this.datasource) {\n this.getContext().destroyBean(this.datasource);\n this.rowRenderer.datasourceChanged();\n this.datasource = null;\n }\n };\n InfiniteRowModel.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverything.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_STORE_UPDATED, this.onCacheUpdated.bind(this));\n };\n InfiniteRowModel.prototype.onFilterChanged = function () {\n this.reset();\n };\n InfiniteRowModel.prototype.onSortChanged = function () {\n this.reset();\n };\n InfiniteRowModel.prototype.onColumnEverything = function () {\n var resetRequired;\n // if cache params, we require reset only if sort model has changed. we don't need to check\n // for filter model, as the filter manager will fire an event when columns change that result\n // in the filter changing.\n if (this.cacheParams) {\n resetRequired = this.isSortModelDifferent();\n }\n else {\n // if no cacheParams, means first time creating the cache, so always create one\n resetRequired = true;\n }\n if (resetRequired) {\n this.reset();\n }\n };\n InfiniteRowModel.prototype.isSortModelDifferent = function () {\n return !_.jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());\n };\n InfiniteRowModel.prototype.getType = function () {\n return 'infinite';\n };\n InfiniteRowModel.prototype.setDatasource = function (datasource) {\n this.destroyDatasource();\n this.datasource = datasource;\n // only reset if we have a valid datasource to working with\n if (datasource) {\n this.reset();\n }\n };\n InfiniteRowModel.prototype.isEmpty = function () {\n return !this.infiniteCache;\n };\n InfiniteRowModel.prototype.isRowsToRender = function () {\n return !!this.infiniteCache;\n };\n InfiniteRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n return this.infiniteCache ? this.infiniteCache.getRowNodesInRange(firstInRange, lastInRange) : [];\n };\n InfiniteRowModel.prototype.reset = function () {\n // important to return here, as the user could be setting filter or sort before\n // data-source is set\n if (!this.datasource) {\n return;\n }\n // if user is providing id's, then this means we can keep the selection between datasource hits,\n // as the rows will keep their unique id's even if, for example, server side sorting or filtering\n // is done.\n var getRowIdFunc = this.gridOptionsService.getRowIdFunc();\n var userGeneratingIds = getRowIdFunc != null;\n if (!userGeneratingIds) {\n this.selectionService.reset();\n }\n this.resetCache();\n var event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n };\n InfiniteRowModel.prototype.createModelUpdatedEvent = function () {\n return {\n type: Events.EVENT_MODEL_UPDATED,\n // not sure if these should all be false - noticed if after implementing,\n // maybe they should be true?\n newPage: false,\n newData: false,\n keepRenderedRows: true,\n animate: false\n };\n };\n InfiniteRowModel.prototype.resetCache = function () {\n // if not first time creating a cache, need to destroy the old one\n this.destroyCache();\n this.cacheParams = {\n // the user provided datasource\n datasource: this.datasource,\n // sort and filter model\n filterModel: this.filterManager.getFilterModel(),\n sortModel: this.sortController.getSortModel(),\n rowNodeBlockLoader: this.rowNodeBlockLoader,\n // properties - this way we take a snapshot of them, so if user changes any, they will be\n // used next time we create a new cache, which is generally after a filter or sort change,\n // or a new datasource is set\n initialRowCount: this.defaultIfInvalid(this.gridOptionsService.getNum('infiniteInitialRowCount'), 1),\n maxBlocksInCache: this.gridOptionsService.getNum('maxBlocksInCache'),\n rowHeight: this.gridOptionsService.getRowHeightAsNumber(),\n // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past\n // the current page and request first row of next page\n overflowSize: this.defaultIfInvalid(this.gridOptionsService.getNum('cacheOverflowSize'), 1),\n // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the\n // server for one page at a time. so the default if not specified is 100.\n blockSize: this.defaultIfInvalid(this.gridOptionsService.getNum('cacheBlockSize'), 100),\n // the cache could create this, however it is also used by the pages, so handy to create it\n // here as the settings are also passed to the pages\n lastAccessedSequence: new NumberSequence()\n };\n this.infiniteCache = this.createBean(new InfiniteCache(this.cacheParams));\n };\n InfiniteRowModel.prototype.defaultIfInvalid = function (value, defaultValue) {\n return value > 0 ? value : defaultValue;\n };\n InfiniteRowModel.prototype.destroyCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache = this.destroyBean(this.infiniteCache);\n }\n };\n InfiniteRowModel.prototype.onCacheUpdated = function () {\n var event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n };\n InfiniteRowModel.prototype.getRow = function (rowIndex) {\n if (!this.infiniteCache) {\n return undefined;\n }\n if (rowIndex >= this.infiniteCache.getRowCount()) {\n return undefined;\n }\n return this.infiniteCache.getRow(rowIndex);\n };\n InfiniteRowModel.prototype.getRowNode = function (id) {\n var result;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n };\n InfiniteRowModel.prototype.forEachNode = function (callback) {\n if (this.infiniteCache) {\n this.infiniteCache.forEachNodeDeep(callback);\n }\n };\n InfiniteRowModel.prototype.getTopLevelRowCount = function () {\n return this.getRowCount();\n };\n InfiniteRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n return topLevelIndex;\n };\n InfiniteRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (this.rowHeight !== 0) { // avoid divide by zero error\n var rowIndexForPixel = Math.floor(pixel / this.rowHeight);\n var lastRowIndex = this.getRowCount() - 1;\n if (rowIndexForPixel > lastRowIndex) {\n return lastRowIndex;\n }\n return rowIndexForPixel;\n }\n return 0;\n };\n InfiniteRowModel.prototype.getRowCount = function () {\n return this.infiniteCache ? this.infiniteCache.getRowCount() : 0;\n };\n InfiniteRowModel.prototype.isRowPresent = function (rowNode) {\n var foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n };\n InfiniteRowModel.prototype.refreshCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.refreshCache();\n }\n };\n InfiniteRowModel.prototype.purgeCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.purgeCache();\n }\n };\n // for iRowModel\n InfiniteRowModel.prototype.isLastRowIndexKnown = function () {\n if (this.infiniteCache) {\n return this.infiniteCache.isLastRowIndexKnown();\n }\n return false;\n };\n InfiniteRowModel.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {\n if (this.infiniteCache) {\n this.infiniteCache.setRowCount(rowCount, lastRowIndexKnown);\n }\n };\n __decorate$2([\n Autowired('filterManager')\n ], InfiniteRowModel.prototype, \"filterManager\", void 0);\n __decorate$2([\n Autowired('sortController')\n ], InfiniteRowModel.prototype, \"sortController\", void 0);\n __decorate$2([\n Autowired('selectionService')\n ], InfiniteRowModel.prototype, \"selectionService\", void 0);\n __decorate$2([\n Autowired('rowRenderer')\n ], InfiniteRowModel.prototype, \"rowRenderer\", void 0);\n __decorate$2([\n Autowired('rowNodeBlockLoader')\n ], InfiniteRowModel.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$2([\n PostConstruct\n ], InfiniteRowModel.prototype, \"init\", null);\n __decorate$2([\n PreDestroy\n ], InfiniteRowModel.prototype, \"destroyDatasource\", null);\n InfiniteRowModel = __decorate$2([\n Bean('rowModel')\n ], InfiniteRowModel);\n return InfiniteRowModel;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$1 = '29.3.5';\n\nvar InfiniteRowModelModule = {\n version: VERSION$1,\n moduleName: ModuleNames.InfiniteRowModelModule,\n rowModel: 'infinite',\n beans: [InfiniteRowModel],\n};\n\nvar BaseCreator = /** @class */ (function () {\n function BaseCreator() {\n }\n BaseCreator.prototype.setBeans = function (beans) {\n this.beans = beans;\n };\n BaseCreator.prototype.getFileName = function (fileName) {\n var extension = this.getDefaultFileExtension();\n if (fileName == null || !fileName.length) {\n fileName = this.getDefaultFileName();\n }\n return fileName.indexOf('.') === -1 ? fileName + \".\" + extension : fileName;\n };\n BaseCreator.prototype.getData = function (params) {\n var serializingSession = this.createSerializingSession(params);\n var data = this.beans.gridSerializer.serialize(serializingSession, params);\n return data;\n };\n return BaseCreator;\n}());\n\nvar BaseGridSerializingSession = /** @class */ (function () {\n function BaseGridSerializingSession(config) {\n this.groupColumns = [];\n var columnModel = config.columnModel, valueService = config.valueService, gridOptionsService = config.gridOptionsService, processCellCallback = config.processCellCallback, processHeaderCallback = config.processHeaderCallback, processGroupHeaderCallback = config.processGroupHeaderCallback, processRowGroupCallback = config.processRowGroupCallback;\n this.columnModel = columnModel;\n this.valueService = valueService;\n this.gridOptionsService = gridOptionsService;\n this.processCellCallback = processCellCallback;\n this.processHeaderCallback = processHeaderCallback;\n this.processGroupHeaderCallback = processGroupHeaderCallback;\n this.processRowGroupCallback = processRowGroupCallback;\n }\n BaseGridSerializingSession.prototype.prepare = function (columnsToExport) {\n this.groupColumns = columnsToExport.filter(function (col) { return !!col.getColDef().showRowGroup; });\n };\n BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {\n var value = this.getHeaderName(this.processHeaderCallback, column);\n return value != null ? value : '';\n };\n BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, accumulatedRowIndex, type, node) {\n // we render the group summary text e.g. \"-> Parent -> Child\"...\n var hideOpenParents = this.gridOptionsService.is('groupHideOpenParents');\n var value = ((!hideOpenParents || node.footer) && this.shouldRenderGroupSummaryCell(node, column, index))\n ? this.createValueForGroupNode(node)\n : this.valueService.getValue(column, node);\n var processedValue = this.processCell({\n accumulatedRowIndex: accumulatedRowIndex,\n rowNode: node,\n column: column,\n value: value,\n processCellCallback: this.processCellCallback,\n type: type\n });\n return processedValue != null ? processedValue : '';\n };\n BaseGridSerializingSession.prototype.shouldRenderGroupSummaryCell = function (node, column, currentColumnIndex) {\n var _a;\n var isGroupNode = node && node.group;\n // only on group rows\n if (!isGroupNode) {\n return false;\n }\n var currentColumnGroupIndex = this.groupColumns.indexOf(column);\n if (currentColumnGroupIndex !== -1) {\n if ((_a = node.groupData) === null || _a === void 0 ? void 0 : _a[column.getId()]) {\n return true;\n }\n // if this is a top level footer, always render`Total` in the left-most cell\n if (node.footer && node.level === -1) {\n var colDef = column.getColDef();\n var isFullWidth = colDef == null || colDef.showRowGroup === true;\n return isFullWidth || colDef.showRowGroup === this.columnModel.getRowGroupColumns()[0].getId();\n }\n }\n var isGroupUseEntireRow = this.gridOptionsService.isGroupUseEntireRow(this.columnModel.isPivotMode());\n return currentColumnIndex === 0 && isGroupUseEntireRow;\n };\n BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {\n if (callback) {\n return callback({\n column: column,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n });\n }\n return this.columnModel.getDisplayNameForColumn(column, 'csv', true);\n };\n BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {\n if (this.processRowGroupCallback) {\n return this.processRowGroupCallback({\n node: node,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n });\n }\n var isFooter = node.footer;\n var keys = [node.key];\n if (!this.gridOptionsService.isGroupMultiAutoColumn()) {\n while (node.parent) {\n node = node.parent;\n keys.push(node.key);\n }\n }\n var groupValue = keys.reverse().join(' -> ');\n return isFooter ? \"Total \" + groupValue : groupValue;\n };\n BaseGridSerializingSession.prototype.processCell = function (params) {\n var accumulatedRowIndex = params.accumulatedRowIndex, rowNode = params.rowNode, column = params.column, value = params.value, processCellCallback = params.processCellCallback, type = params.type;\n if (processCellCallback) {\n return processCellCallback({\n accumulatedRowIndex: accumulatedRowIndex,\n column: column,\n node: rowNode,\n value: value,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n type: type\n });\n }\n return value != null ? value : '';\n };\n return BaseGridSerializingSession;\n}());\n\nvar Downloader = /** @class */ (function () {\n function Downloader() {\n }\n Downloader.download = function (fileName, content) {\n var win = document.defaultView || window;\n if (!win) {\n console.warn('AG Grid: There is no `window` associated with the current `document`');\n return;\n }\n var element = document.createElement('a');\n // @ts-ignore\n var url = win.URL.createObjectURL(content);\n element.setAttribute('href', url);\n element.setAttribute('download', fileName);\n element.style.display = 'none';\n document.body.appendChild(element);\n element.dispatchEvent(new MouseEvent('click', {\n bubbles: false,\n cancelable: true,\n view: win\n }));\n document.body.removeChild(element);\n win.setTimeout(function () {\n // @ts-ignore\n win.URL.revokeObjectURL(url);\n }, 0);\n };\n return Downloader;\n}());\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LINE_SEPARATOR$1 = '\\r\\n';\nvar CsvSerializingSession = /** @class */ (function (_super) {\n __extends$2(CsvSerializingSession, _super);\n function CsvSerializingSession(config) {\n var _this = _super.call(this, config) || this;\n _this.isFirstLine = true;\n _this.result = '';\n var suppressQuotes = config.suppressQuotes, columnSeparator = config.columnSeparator;\n _this.suppressQuotes = suppressQuotes;\n _this.columnSeparator = columnSeparator;\n return _this;\n }\n CsvSerializingSession.prototype.addCustomContent = function (content) {\n var _this = this;\n if (!content) {\n return;\n }\n if (typeof content === 'string') {\n if (!/^\\s*\\n/.test(content)) {\n this.beginNewLine();\n }\n // replace whatever newlines are supplied with the style we're using\n content = content.replace(/\\r?\\n/g, LINE_SEPARATOR$1);\n this.result += content;\n }\n else {\n content.forEach(function (row) {\n _this.beginNewLine();\n row.forEach(function (cell, index) {\n if (index !== 0) {\n _this.result += _this.columnSeparator;\n }\n _this.result += _this.putInQuotes(cell.data.value || '');\n if (cell.mergeAcross) {\n _this.appendEmptyCells(cell.mergeAcross);\n }\n });\n });\n }\n };\n CsvSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderGroupingRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewHeaderGroupingRowColumn = function (columnGroup, header, index, span) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(header);\n this.appendEmptyCells(span);\n };\n CsvSerializingSession.prototype.appendEmptyCells = function (count) {\n for (var i = 1; i <= count; i++) {\n this.result += this.columnSeparator + this.putInQuotes(\"\");\n }\n };\n CsvSerializingSession.prototype.onNewHeaderRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewHeaderRowColumn = function (column, index) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractHeaderValue(column));\n };\n CsvSerializingSession.prototype.onNewBodyRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewBodyRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewBodyRowColumn = function (column, index, node) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractRowCellValue(column, index, index, 'csv', node));\n };\n CsvSerializingSession.prototype.putInQuotes = function (value) {\n if (this.suppressQuotes) {\n return value;\n }\n if (value === null || value === undefined) {\n return '\"\"';\n }\n var stringValue;\n if (typeof value === 'string') {\n stringValue = value;\n }\n else if (typeof value.toString === 'function') {\n stringValue = value.toString();\n }\n else {\n console.warn('AG Grid: unknown value type during csv conversion');\n stringValue = '';\n }\n // replace each \" with \"\" (ie two sets of double quotes is how to do double quotes in csv)\n var valueEscaped = stringValue.replace(/\"/g, \"\\\"\\\"\");\n return '\"' + valueEscaped + '\"';\n };\n CsvSerializingSession.prototype.parse = function () {\n return this.result;\n };\n CsvSerializingSession.prototype.beginNewLine = function () {\n if (!this.isFirstLine) {\n this.result += LINE_SEPARATOR$1;\n }\n this.isFirstLine = false;\n };\n return CsvSerializingSession;\n}(BaseGridSerializingSession));\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CsvCreator = /** @class */ (function (_super) {\n __extends$1(CsvCreator, _super);\n function CsvCreator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CsvCreator.prototype.postConstruct = function () {\n this.setBeans({\n gridSerializer: this.gridSerializer,\n gridOptionsService: this.gridOptionsService\n });\n };\n CsvCreator.prototype.getMergedParams = function (params) {\n var baseParams = this.gridOptionsService.get('defaultCsvExportParams');\n return Object.assign({}, baseParams, params);\n };\n CsvCreator.prototype.export = function (userParams) {\n if (this.isExportSuppressed()) {\n console.warn(\"AG Grid: Export cancelled. Export is not allowed as per your configuration.\");\n return '';\n }\n var mergedParams = this.getMergedParams(userParams);\n var data = this.getData(mergedParams);\n var packagedFile = new Blob([\"\\ufeff\", data], { type: 'text/plain' });\n Downloader.download(this.getFileName(mergedParams.fileName), packagedFile);\n return data;\n };\n CsvCreator.prototype.exportDataAsCsv = function (params) {\n return this.export(params);\n };\n CsvCreator.prototype.getDataAsCsv = function (params, skipDefaultParams) {\n if (skipDefaultParams === void 0) { skipDefaultParams = false; }\n var mergedParams = skipDefaultParams\n ? Object.assign({}, params)\n : this.getMergedParams(params);\n return this.getData(mergedParams);\n };\n CsvCreator.prototype.getDefaultFileName = function () {\n return 'export.csv';\n };\n CsvCreator.prototype.getDefaultFileExtension = function () {\n return 'csv';\n };\n CsvCreator.prototype.createSerializingSession = function (params) {\n var _a = this, columnModel = _a.columnModel, valueService = _a.valueService, gridOptionsService = _a.gridOptionsService;\n var _b = params, processCellCallback = _b.processCellCallback, processHeaderCallback = _b.processHeaderCallback, processGroupHeaderCallback = _b.processGroupHeaderCallback, processRowGroupCallback = _b.processRowGroupCallback, suppressQuotes = _b.suppressQuotes, columnSeparator = _b.columnSeparator;\n return new CsvSerializingSession({\n columnModel: columnModel,\n valueService: valueService,\n gridOptionsService: gridOptionsService,\n processCellCallback: processCellCallback || undefined,\n processHeaderCallback: processHeaderCallback || undefined,\n processGroupHeaderCallback: processGroupHeaderCallback || undefined,\n processRowGroupCallback: processRowGroupCallback || undefined,\n suppressQuotes: suppressQuotes || false,\n columnSeparator: columnSeparator || ','\n });\n };\n CsvCreator.prototype.isExportSuppressed = function () {\n return this.gridOptionsService.is('suppressCsvExport');\n };\n __decorate$1([\n Autowired('columnModel')\n ], CsvCreator.prototype, \"columnModel\", void 0);\n __decorate$1([\n Autowired('valueService')\n ], CsvCreator.prototype, \"valueService\", void 0);\n __decorate$1([\n Autowired('gridSerializer')\n ], CsvCreator.prototype, \"gridSerializer\", void 0);\n __decorate$1([\n Autowired('gridOptionsService')\n ], CsvCreator.prototype, \"gridOptionsService\", void 0);\n __decorate$1([\n PostConstruct\n ], CsvCreator.prototype, \"postConstruct\", null);\n CsvCreator = __decorate$1([\n Bean('csvCreator')\n ], CsvCreator);\n return CsvCreator;\n}(BaseCreator));\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowType;\n(function (RowType) {\n RowType[RowType[\"HEADER_GROUPING\"] = 0] = \"HEADER_GROUPING\";\n RowType[RowType[\"HEADER\"] = 1] = \"HEADER\";\n RowType[RowType[\"BODY\"] = 2] = \"BODY\";\n})(RowType || (RowType = {}));\nvar GridSerializer = /** @class */ (function (_super) {\n __extends(GridSerializer, _super);\n function GridSerializer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridSerializer.prototype.serialize = function (gridSerializingSession, params) {\n if (params === void 0) { params = {}; }\n var columnsToExport = this.getColumnsToExport(params.allColumns, params.columnKeys);\n var serializeChain = _.compose(\n // first pass, put in the header names of the cols\n this.prepareSession(columnsToExport), this.prependContent(params), this.exportColumnGroups(params, columnsToExport), this.exportHeaders(params, columnsToExport), this.processPinnedTopRows(params, columnsToExport), this.processRows(params, columnsToExport), this.processPinnedBottomRows(params, columnsToExport), this.appendContent(params));\n return serializeChain(gridSerializingSession).parse();\n };\n GridSerializer.prototype.processRow = function (gridSerializingSession, params, columnsToExport, node) {\n var rowSkipper = params.shouldRowBeSkipped || (function () { return false; });\n var context = this.gridOptionsService.context;\n var api = this.gridOptionsService.api;\n var columnApi = this.gridOptionsService.columnApi;\n var skipSingleChildrenGroup = this.gridOptionsService.is('groupRemoveSingleChildren');\n var skipLowestSingleChildrenGroup = this.gridOptionsService.is('groupRemoveLowestSingleChildren');\n // if onlySelected, we ignore groupHideOpenParents as the user has explicitly selected the rows they wish to export.\n // similarly, if specific rowNodes are provided we do the same. (the clipboard service uses rowNodes to define which rows to export)\n var isClipboardExport = params.rowPositions != null;\n var isExplicitExportSelection = isClipboardExport || !!params.onlySelected;\n var hideOpenParents = this.gridOptionsService.is('groupHideOpenParents') && !isExplicitExportSelection;\n var isLeafNode = this.columnModel.isPivotMode() ? node.leafGroup : !node.group;\n var isFooter = !!node.footer;\n var skipRowGroups = params.skipGroups || params.skipRowGroups;\n var shouldSkipLowestGroup = skipLowestSingleChildrenGroup && node.leafGroup;\n var shouldSkipCurrentGroup = node.allChildrenCount === 1 && (skipSingleChildrenGroup || shouldSkipLowestGroup);\n if (skipRowGroups && params.skipGroups) {\n _.doOnce(function () { return console.warn('AG Grid: Since v25.2 `skipGroups` has been renamed to `skipRowGroups`.'); }, 'gridSerializer-skipGroups');\n }\n if ((!isLeafNode && !isFooter && (params.skipRowGroups || shouldSkipCurrentGroup || hideOpenParents)) ||\n (params.onlySelected && !node.isSelected()) ||\n (params.skipPinnedTop && node.rowPinned === 'top') ||\n (params.skipPinnedBottom && node.rowPinned === 'bottom')) {\n return;\n }\n // if we are in pivotMode, then the grid will show the root node only\n // if it's not a leaf group\n var nodeIsRootNode = node.level === -1;\n if (nodeIsRootNode && !isLeafNode && !isFooter) {\n return;\n }\n var shouldRowBeSkipped = rowSkipper({ node: node, api: api, columnApi: columnApi, context: context });\n if (shouldRowBeSkipped) {\n return;\n }\n var rowAccumulator = gridSerializingSession.onNewBodyRow();\n columnsToExport.forEach(function (column, index) {\n rowAccumulator.onColumn(column, index, node);\n });\n if (params.getCustomContentBelowRow) {\n var content = params.getCustomContentBelowRow({ node: node, api: api, columnApi: columnApi, context: context });\n if (content) {\n gridSerializingSession.addCustomContent(content);\n }\n }\n };\n GridSerializer.prototype.appendContent = function (params) {\n return function (gridSerializingSession) {\n var appendContent = params.customFooter || params.appendContent;\n if (appendContent) {\n if (params.customFooter) {\n _.doOnce(function () { return console.warn('AG Grid: Since version 25.2.0 the `customFooter` param has been deprecated. Use `appendContent` instead.'); }, 'gridSerializer-customFooter');\n }\n gridSerializingSession.addCustomContent(appendContent);\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.prependContent = function (params) {\n return function (gridSerializingSession) {\n var prependContent = params.customHeader || params.prependContent;\n if (prependContent) {\n if (params.customHeader) {\n _.doOnce(function () { return console.warn('AG Grid: Since version 25.2.0 the `customHeader` param has been deprecated. Use `prependContent` instead.'); }, 'gridSerializer-customHeader');\n }\n gridSerializingSession.addCustomContent(prependContent);\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.prepareSession = function (columnsToExport) {\n return function (gridSerializingSession) {\n gridSerializingSession.prepare(columnsToExport);\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.exportColumnGroups = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n if (!params.skipColumnGroupHeaders) {\n var groupInstanceIdCreator = new GroupInstanceIdCreator();\n var displayedGroups = _this.displayedGroupCreator.createDisplayedGroups(columnsToExport, _this.columnModel.getGridBalancedTree(), groupInstanceIdCreator, null);\n _this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession, params.processGroupHeaderCallback);\n }\n else if (params.columnGroups) {\n _.doOnce(function () { return console.warn('AG Grid: Since v25.2 the `columnGroups` param has deprecated, and groups are exported by default.'); }, 'gridSerializer-columnGroups');\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.exportHeaders = function (params, columnsToExport) {\n return function (gridSerializingSession) {\n if (!params.skipHeader && !params.skipColumnHeaders) {\n var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();\n columnsToExport.forEach(function (column, index) {\n gridRowIterator_1.onColumn(column, index, undefined);\n });\n }\n else if (params.skipHeader) {\n _.doOnce(function () { return console.warn('AG Grid: Since v25.2 the `skipHeader` param has been renamed to `skipColumnHeaders`.'); }, 'gridSerializer-skipHeader');\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.processPinnedTopRows = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n if (params.rowPositions) {\n params.rowPositions\n // only pinnedTop rows, other models are processed by `processRows` and `processPinnedBottomsRows`\n .filter(function (position) { return position.rowPinned === 'top'; })\n .sort(function (a, b) { return a.rowIndex - b.rowIndex; })\n .map(function (position) { return _this.pinnedRowModel.getPinnedTopRow(position.rowIndex); })\n .forEach(processRow);\n }\n else {\n _this.pinnedRowModel.forEachPinnedTopRow(processRow);\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.processRows = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n // when in pivot mode, we always render cols on screen, never 'all columns'\n var rowModel = _this.rowModel;\n var rowModelType = rowModel.getType();\n var usingCsrm = rowModelType === 'clientSide';\n var usingSsrm = rowModelType === 'serverSide';\n var onlySelectedNonStandardModel = !usingCsrm && params.onlySelected;\n var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n var _a = params.exportedRows, exportedRows = _a === void 0 ? 'filteredAndSorted' : _a;\n if (params.rowPositions) {\n params.rowPositions\n // pinnedRows are processed by `processPinnedTopRows` and `processPinnedBottomsRows`\n .filter(function (position) { return position.rowPinned == null; })\n .sort(function (a, b) { return a.rowIndex - b.rowIndex; })\n .map(function (position) { return rowModel.getRow(position.rowIndex); })\n .forEach(processRow);\n }\n else if (_this.columnModel.isPivotMode()) {\n if (usingCsrm) {\n rowModel.forEachPivotNode(processRow, true);\n }\n else {\n // must be enterprise, so we can just loop through all the nodes\n rowModel.forEachNode(processRow);\n }\n }\n else {\n // onlySelectedAllPages: user doing pagination and wants selected items from\n // other pages, so cannot use the standard row model as it won't have rows from\n // other pages.\n // onlySelectedNonStandardModel: if user wants selected in non standard row model\n // (eg viewport) then again RowModel cannot be used, so need to use selected instead.\n if (params.onlySelectedAllPages || onlySelectedNonStandardModel) {\n var selectedNodes = _this.selectionService.getSelectedNodes();\n _this.replicateSortedOrder(selectedNodes);\n // serialize each node\n selectedNodes.forEach(processRow);\n }\n else {\n // here is everything else - including standard row model and selected. we don't use\n // the selection model even when just using selected, so that the result is the order\n // of the rows appearing on the screen.\n if (exportedRows === 'all') {\n rowModel.forEachNode(processRow);\n }\n else if (usingCsrm) {\n rowModel.forEachNodeAfterFilterAndSort(processRow, true);\n }\n else if (usingSsrm) {\n rowModel.forEachNodeAfterFilterAndSort(processRow);\n }\n else {\n rowModel.forEachNode(processRow);\n }\n }\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.replicateSortedOrder = function (rows) {\n var _this = this;\n var sortOptions = this.sortController.getSortOptions();\n var compareNodes = function (rowA, rowB) {\n var _a, _b, _c, _d;\n if (rowA.rowIndex != null && rowB.rowIndex != null) {\n // if the rows have rowIndexes, this is the easiest way to compare,\n // as they're already ordered\n return rowA.rowIndex - rowB.rowIndex;\n }\n // if the level is the same, compare these nodes, or their parents\n if (rowA.level === rowB.level) {\n if (((_a = rowA.parent) === null || _a === void 0 ? void 0 : _a.id) === ((_b = rowB.parent) === null || _b === void 0 ? void 0 : _b.id)) {\n return _this.rowNodeSorter.compareRowNodes(sortOptions, {\n rowNode: rowA,\n currentPos: (_c = rowA.rowIndex) !== null && _c !== void 0 ? _c : -1,\n }, {\n rowNode: rowB,\n currentPos: (_d = rowB.rowIndex) !== null && _d !== void 0 ? _d : -1,\n });\n }\n // level is same, but parent isn't, compare parents\n return compareNodes(rowA.parent, rowB.parent);\n }\n // if level is different, match levels\n if (rowA.level > rowB.level) {\n return compareNodes(rowA.parent, rowB);\n }\n return compareNodes(rowA, rowB.parent);\n };\n // sort the nodes either by existing row index or compare them\n rows.sort(compareNodes);\n };\n GridSerializer.prototype.processPinnedBottomRows = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n if (params.rowPositions) {\n params.rowPositions\n // only pinnedBottom rows, other models are processed by `processRows` and `processPinnedTopRows`\n .filter(function (position) { return position.rowPinned === 'bottom'; })\n .sort(function (a, b) { return a.rowIndex - b.rowIndex; })\n .map(function (position) { return _this.pinnedRowModel.getPinnedBottomRow(position.rowIndex); })\n .forEach(processRow);\n }\n else {\n _this.pinnedRowModel.forEachPinnedBottomRow(processRow);\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.getColumnsToExport = function (allColumns, columnKeys) {\n if (allColumns === void 0) { allColumns = false; }\n var isPivotMode = this.columnModel.isPivotMode();\n if (columnKeys && columnKeys.length) {\n return this.columnModel.getGridColumns(columnKeys);\n }\n if (allColumns && !isPivotMode) {\n // add auto group column for tree data\n var columns = this.gridOptionsService.isTreeData()\n ? this.columnModel.getGridColumns([GROUP_AUTO_COLUMN_ID])\n : [];\n return columns.concat(this.columnModel.getAllPrimaryColumns() || []);\n }\n return this.columnModel.getAllDisplayedColumns();\n };\n GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession, processGroupHeaderCallback) {\n var directChildrenHeaderGroups = [];\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n if (!columnGroup.getChildren) {\n return;\n }\n columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });\n });\n if (displayedGroups.length > 0 && displayedGroups[0] instanceof ColumnGroup) {\n this.doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback);\n }\n if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {\n this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession, processGroupHeaderCallback);\n }\n };\n GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups, processGroupHeaderCallback) {\n var _this = this;\n var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n var columnIndex = 0;\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n var name;\n if (processGroupHeaderCallback) {\n name = processGroupHeaderCallback({\n columnGroup: columnGroup,\n api: _this.gridOptionsService.api,\n columnApi: _this.gridOptionsService.columnApi,\n context: _this.gridOptionsService.context\n });\n }\n else {\n name = _this.columnModel.getDisplayNameForColumnGroup(columnGroup, 'header');\n }\n var collapsibleGroupRanges = columnGroup.getLeafColumns().reduce(function (collapsibleGroups, currentColumn, currentIdx, arr) {\n var lastGroup = _.last(collapsibleGroups);\n var groupShow = currentColumn.getColumnGroupShow() === 'open';\n if (!groupShow) {\n if (lastGroup && lastGroup[1] == null) {\n lastGroup[1] = currentIdx - 1;\n }\n }\n else if (!lastGroup || lastGroup[1] != null) {\n lastGroup = [currentIdx];\n collapsibleGroups.push(lastGroup);\n }\n if (currentIdx === arr.length - 1 && lastGroup && lastGroup[1] == null) {\n lastGroup[1] = currentIdx;\n }\n return collapsibleGroups;\n }, []);\n gridRowIterator.onColumn(columnGroup, name || '', columnIndex++, columnGroup.getLeafColumns().length - 1, collapsibleGroupRanges);\n });\n };\n __decorate([\n Autowired('displayedGroupCreator')\n ], GridSerializer.prototype, \"displayedGroupCreator\", void 0);\n __decorate([\n Autowired('columnModel')\n ], GridSerializer.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('rowModel')\n ], GridSerializer.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], GridSerializer.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('selectionService')\n ], GridSerializer.prototype, \"selectionService\", void 0);\n __decorate([\n Autowired('rowNodeSorter')\n ], GridSerializer.prototype, \"rowNodeSorter\", void 0);\n __decorate([\n Autowired('sortController')\n ], GridSerializer.prototype, \"sortController\", void 0);\n GridSerializer = __decorate([\n Bean(\"gridSerializer\")\n ], GridSerializer);\n return GridSerializer;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION = '29.3.5';\n\nvar CsvExportModule = {\n version: VERSION,\n moduleName: ModuleNames.CsvExportModule,\n beans: [CsvCreator, GridSerializer]\n};\n\nvar LINE_SEPARATOR = '\\r\\n';\nvar XmlFactory = /** @class */ (function () {\n function XmlFactory() {\n }\n XmlFactory.createHeader = function (headerElement) {\n if (headerElement === void 0) { headerElement = {}; }\n var headerStart = '<?';\n var headerEnd = '?>';\n var keys = ['version'];\n if (!headerElement.version) {\n headerElement.version = \"1.0\";\n }\n if (headerElement.encoding) {\n keys.push('encoding');\n }\n if (headerElement.standalone) {\n keys.push('standalone');\n }\n var att = keys.map(function (key) { return key + \"=\\\"\" + headerElement[key] + \"\\\"\"; }).join(' ');\n return headerStart + \"xml \" + att + \" \" + headerEnd;\n };\n XmlFactory.createXml = function (xmlElement, booleanTransformer) {\n var _this = this;\n var props = '';\n if (xmlElement.properties) {\n if (xmlElement.properties.prefixedAttributes) {\n xmlElement.properties.prefixedAttributes.forEach(function (prefixedSet) {\n Object.keys(prefixedSet.map).forEach(function (key) {\n props += _this.returnAttributeIfPopulated(prefixedSet.prefix + key, prefixedSet.map[key], booleanTransformer);\n });\n });\n }\n if (xmlElement.properties.rawMap) {\n Object.keys(xmlElement.properties.rawMap).forEach(function (key) {\n props += _this.returnAttributeIfPopulated(key, xmlElement.properties.rawMap[key], booleanTransformer);\n });\n }\n }\n var result = '<' + xmlElement.name + props;\n if (!xmlElement.children && xmlElement.textNode == null) {\n return result + '/>' + LINE_SEPARATOR;\n }\n if (xmlElement.textNode != null) {\n return result + '>' + xmlElement.textNode + '</' + xmlElement.name + '>' + LINE_SEPARATOR;\n }\n result += '>' + LINE_SEPARATOR;\n if (xmlElement.children) {\n xmlElement.children.forEach(function (it) {\n result += _this.createXml(it, booleanTransformer);\n });\n }\n return result + '</' + xmlElement.name + '>' + LINE_SEPARATOR;\n };\n XmlFactory.returnAttributeIfPopulated = function (key, value, booleanTransformer) {\n if (!value && value !== '' && value !== 0) {\n return '';\n }\n var xmlValue = value;\n if ((typeof (value) === 'boolean')) {\n if (booleanTransformer) {\n xmlValue = booleanTransformer(value);\n }\n }\n return \" \" + key + \"=\\\"\" + xmlValue + \"\\\"\";\n };\n return XmlFactory;\n}());\n\nvar __values = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n// table for crc calculation\n// from: https://referencesource.microsoft.com/#System/sys/System/IO/compression/Crc32Helper.cs,3b31978c7d7f7246,references\nvar crcTable = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,\n 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,\n 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,\n 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,\n 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,\n 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,\n 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,\n 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,\n 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,\n 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,\n 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,\n 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,\n 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,\n 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,\n 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,\n 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,\n 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,\n 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,\n 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,\n 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,\n 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,\n 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,\n 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,\n 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,\n 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,\n 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,\n 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,\n 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,\n 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,\n 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,\n 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,\n 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,\n 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d\n]);\nvar ZipContainer = /** @class */ (function () {\n function ZipContainer() {\n }\n ZipContainer.addFolders = function (paths) {\n paths.forEach(this.addFolder.bind(this));\n };\n ZipContainer.addFolder = function (path) {\n this.folders.push({\n path: path,\n created: new Date(),\n isBase64: false\n });\n };\n ZipContainer.addFile = function (path, content, isBase64) {\n if (isBase64 === void 0) { isBase64 = false; }\n this.files.push({\n path: path,\n created: new Date(),\n content: content,\n isBase64: isBase64\n });\n };\n ZipContainer.getContent = function (mimeType) {\n if (mimeType === void 0) { mimeType = 'application/zip'; }\n var textOutput = this.buildFileStream();\n var uInt8Output = this.buildUint8Array(textOutput);\n this.clearStream();\n return new Blob([uInt8Output], { type: mimeType });\n };\n ZipContainer.clearStream = function () {\n this.folders = [];\n this.files = [];\n };\n ZipContainer.buildFileStream = function (fData) {\n var e_1, _a;\n if (fData === void 0) { fData = ''; }\n var totalFiles = this.folders.concat(this.files);\n var len = totalFiles.length;\n var foData = '';\n var lL = 0;\n var cL = 0;\n try {\n for (var totalFiles_1 = __values(totalFiles), totalFiles_1_1 = totalFiles_1.next(); !totalFiles_1_1.done; totalFiles_1_1 = totalFiles_1.next()) {\n var currentFile = totalFiles_1_1.value;\n var _b = this.getHeader(currentFile, lL), fileHeader = _b.fileHeader, folderHeader = _b.folderHeader, content = _b.content;\n lL += fileHeader.length + content.length;\n cL += folderHeader.length;\n fData += fileHeader + content;\n foData += folderHeader;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (totalFiles_1_1 && !totalFiles_1_1.done && (_a = totalFiles_1.return)) _a.call(totalFiles_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var foEnd = this.buildFolderEnd(len, cL, lL);\n return fData + foData + foEnd;\n };\n ZipContainer.getHeader = function (currentFile, offset) {\n var content = currentFile.content, path = currentFile.path, created = currentFile.created, isBase64 = currentFile.isBase64;\n var utf8_encode = _.utf8_encode, decToHex = _.decToHex;\n var utfPath = utf8_encode(path);\n var isUTF8 = utfPath !== path;\n var time = this.convertTime(created);\n var dt = this.convertDate(created);\n var extraFields = '';\n if (isUTF8) {\n var uExtraFieldPath = decToHex(1, 1) + decToHex(this.getFromCrc32Table(utfPath), 4) + utfPath;\n extraFields = \"\\x75\\x70\" + decToHex(uExtraFieldPath.length, 2) + uExtraFieldPath;\n }\n var _a = !content ? { size: 0, content: '' } : this.getConvertedContent(content, isBase64), size = _a.size, convertedContent = _a.content;\n var header = '\\x0A\\x00' +\n (isUTF8 ? '\\x00\\x08' : '\\x00\\x00') +\n '\\x00\\x00' +\n decToHex(time, 2) + // last modified time\n decToHex(dt, 2) + // last modified date\n decToHex(size ? this.getFromCrc32Table(convertedContent) : 0, 4) +\n decToHex(size, 4) + // compressed size\n decToHex(size, 4) + // uncompressed size\n decToHex(utfPath.length, 2) + // file name length\n decToHex(extraFields.length, 2); // extra field length\n var fileHeader = 'PK\\x03\\x04' + header + utfPath + extraFields;\n var folderHeader = 'PK\\x01\\x02' + // central header\n '\\x14\\x00' +\n header + // file header\n '\\x00\\x00' +\n '\\x00\\x00' +\n '\\x00\\x00' +\n (content ? '\\x00\\x00\\x00\\x00' : '\\x10\\x00\\x00\\x00') + // external file attributes\n decToHex(offset, 4) + // relative offset of local header\n utfPath + // file name\n extraFields; // extra field\n return { fileHeader: fileHeader, folderHeader: folderHeader, content: convertedContent || '' };\n };\n ZipContainer.getConvertedContent = function (content, isBase64) {\n if (isBase64 === void 0) { isBase64 = false; }\n if (isBase64) {\n content = content.split(';base64,')[1];\n }\n content = isBase64 ? atob(content) : content;\n return {\n size: content.length,\n content: content\n };\n };\n ZipContainer.buildFolderEnd = function (tLen, cLen, lLen) {\n var decToHex = _.decToHex;\n return 'PK\\x05\\x06' + // central folder end\n '\\x00\\x00' +\n '\\x00\\x00' +\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(cLen, 4) + // size of the central folder\n decToHex(lLen, 4) + // central folder start offset\n '\\x00\\x00';\n };\n ZipContainer.buildUint8Array = function (content) {\n var uint8 = new Uint8Array(content.length);\n for (var i = 0; i < uint8.length; i++) {\n uint8[i] = content.charCodeAt(i);\n }\n return uint8;\n };\n ZipContainer.getFromCrc32Table = function (content) {\n if (!content.length) {\n return 0;\n }\n var size = content.length;\n var iterable = new Uint8Array(size);\n for (var i = 0; i < size; i++) {\n iterable[i] = content.charCodeAt(i);\n }\n var crc = 0 ^ (-1);\n var j = 0;\n var k = 0;\n var l = 0;\n for (var i = 0; i < size; i++) {\n j = iterable[i];\n k = (crc ^ j) & 0xFF;\n l = crcTable[k];\n crc = (crc >>> 8) ^ l;\n }\n return crc ^ (-1);\n };\n ZipContainer.convertTime = function (date) {\n var time = date.getHours();\n time <<= 6;\n time = time | date.getMinutes();\n time <<= 5;\n time = time | date.getSeconds() / 2;\n return time;\n };\n ZipContainer.convertDate = function (date) {\n var dt = date.getFullYear() - 1980;\n dt <<= 4;\n dt = dt | (date.getMonth() + 1);\n dt <<= 5;\n dt = dt | date.getDate();\n return dt;\n };\n ZipContainer.folders = [];\n ZipContainer.files = [];\n return ZipContainer;\n}());\n\nvar AllCommunityModules = [ClientSideRowModelModule, InfiniteRowModelModule, CsvExportModule];\n\nModuleRegistry.registerModules(AllCommunityModules);\n\nexport { AbstractHeaderCellCtrl, AgAbstractField, AgAbstractLabel, AgCheckbox, AgDialog, AgGroupComponent, AgInputNumberField, AgInputRange, AgInputTextArea, AgInputTextField, AgMenuItemComponent, AgMenuList, AgMenuPanel, AgPanel, AgPickerField, AgPromise, AgPromiseStatus, AgRadioButton, AgSelect, AgSlider, AgStackComponentsRegistry, AgToggleButton, AlignedGridsService, AllCommunityModules, AnimateShowChangeCellRenderer, AnimateSlideCellRenderer, AnimationFrameService, AutoScrollService, AutoWidthCalculator, Autowired, BarColumnLabelPlacement, BaseComponentWrapper, BaseCreator, BaseGridSerializingSession, Bean, BeanStub, Beans, BodyDropPivotTarget, BodyDropTarget, CHART_TOOLBAR_ALLOW_LIST, CHART_TOOL_PANEL_ALLOW_LIST, CHART_TOOL_PANEL_MENU_OPTIONS, CellComp, CellCtrl, CellNavigationService, CellPositionUtils, CellRangeType, ChangedPath, CheckboxSelectionComponent, ClientSideRowModelModule, ClientSideRowModelSteps, ColDefUtil, Column, ColumnApi, ColumnFactory, ColumnGroup, ColumnKeyCreator, ColumnModel, ColumnUtils, Component, ComponentUtil, Context, CssClassApplier, CssClassManager, CsvCreator, CsvExportModule, CtrlsService, CustomTooltipFeature, DEFAULT_CHART_GROUPS, DateFilter, DisplayedGroupCreator, Downloader, DragAndDropService, DragService, DragSourceType, Environment, EventService, Events, ExcelFactoryMode, ExpressionService, FilterManager, FloatingFilterMapper, FocusService, GROUP_AUTO_COLUMN_ID, Grid, GridApi, GridBodyComp, GridBodyCtrl, GridComp, GridCoreCreator, GridCtrl, GridHeaderComp, GridHeaderCtrl, GridOptionsService, GridSerializer, GroupCellRenderer, GroupCellRendererCtrl, GroupInstanceIdCreator, HeaderCellCtrl, HeaderFilterCellComp, HeaderFilterCellCtrl, HeaderGroupCellCtrl, HeaderNavigationDirection, HeaderNavigationService, HeaderPositionUtils, HeaderRowComp, HeaderRowContainerComp, HeaderRowContainerCtrl, HeaderRowCtrl, HeaderRowType, HorizontalDirection, HorizontalResizeService, InfiniteRowModelModule, KeyCode, LargeTextCellEditor, LayoutCssClasses, LocaleService, Logger, LoggerFactory, ManagedFocusFeature, ModuleNames, ModuleRegistry, MouseEventService, MoveColumnFeature, NavigationService, NumberFilter, NumberSequence, Optional, PaginationProxy, PinnedRowModel, PopupComponent, PopupEditorWrapper, PopupService, PositionableFeature, PostConstruct, PreConstruct, PreDestroy, PropertyKeys, ProvidedColumnGroup, ProvidedFilter, Qualifier, QuerySelector, RefSelector, ResizeObserverService, RowAnimationCssClasses, RowContainerComp, RowContainerCtrl, RowContainerName, RowContainerType, RowCtrl, RowHighlightPosition, RowNode, RowNodeBlock, RowNodeBlockLoader, RowNodeSorter, RowPositionUtils, RowRenderer, RowType, ScalarFilter, ScrollVisibleService, SelectCellEditor, SelectableService, SelectionHandleType, ServerSideTransactionResultStatus, SetLeftFeature, SimpleFilter, SortController, SortIndicatorComp, StandardMenuFactory, StylingService, TabGuardClassNames, TabGuardComp, TabGuardCtrl, TabbedLayout, TemplateService, TextCellEditor, TextFilter, TextFloatingFilter, Timer, TouchListener, UserComponentFactory, UserComponentRegistry, ValueCache, ValueFormatterService, ValueService, VanillaFrameworkOverrides, VerticalDirection, VirtualList, XmlFactory, ZipContainer, _, __FORCE_MODULE_DETECTION, getRowContainerTypeForName, simpleHttpRequest };\n","/**\n * @ag-grid-enterprise/all-modules - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license Commercial\n */\nimport { PreConstruct, Bean, BeanStub, Autowired, RefSelector, PostConstruct, Component, ModuleNames, _, Events, ChangedPath, Optional, CsvExportModule, KeyCode, EventService, Column, ProvidedColumnGroup, AgMenuList, AgMenuItemComponent, AgCheckbox, CssClassApplier, DragSourceType, DragAndDropService, TouchListener, AutoScrollService, VirtualList, PreDestroy, NumberSequence, RowNode, ManagedFocusFeature, PositionableFeature, AgSelect, AgPromise, TabGuardComp, AgInputTextField, ModuleRegistry, ExcelFactoryMode, XmlFactory, RowType, BaseGridSerializingSession, Downloader, BaseCreator, ZipContainer, GridSerializer, CsvCreator, AgGroupComponent, CellRangeType, AgAbstractField, AgRadioButton, AgToggleButton, AgAbstractLabel, AgSlider, DEFAULT_CHART_GROUPS, TabbedLayout, CHART_TOOLBAR_ALLOW_LIST, CHART_TOOL_PANEL_ALLOW_LIST, CHART_TOOL_PANEL_MENU_OPTIONS, AgPanel, AgDialog, CellCtrl, SelectionHandleType, AgPickerField, Grid, ProvidedFilter, PopupComponent, RowNodeBlock, ServerSideTransactionResultStatus, RowNodeBlockLoader, GROUP_AUTO_COLUMN_ID, TextFilter, AllCommunityModules } from 'ag-grid-community';\nexport * from 'ag-grid-community';\n\nvar MD5 = /** @class */ (function () {\n function MD5() {\n this.ieCompatibility = false;\n }\n MD5.prototype.init = function () {\n this.ieCompatibility = (this.md5('hello') != '5d41402abc4b2a76b9719d911017c592');\n };\n MD5.prototype.md5cycle = function (x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a = this.ff(a, b, c, d, k[0], 7, -680876936);\n d = this.ff(d, a, b, c, k[1], 12, -389564586);\n c = this.ff(c, d, a, b, k[2], 17, 606105819);\n b = this.ff(b, c, d, a, k[3], 22, -1044525330);\n a = this.ff(a, b, c, d, k[4], 7, -176418897);\n d = this.ff(d, a, b, c, k[5], 12, 1200080426);\n c = this.ff(c, d, a, b, k[6], 17, -1473231341);\n b = this.ff(b, c, d, a, k[7], 22, -45705983);\n a = this.ff(a, b, c, d, k[8], 7, 1770035416);\n d = this.ff(d, a, b, c, k[9], 12, -1958414417);\n c = this.ff(c, d, a, b, k[10], 17, -42063);\n b = this.ff(b, c, d, a, k[11], 22, -1990404162);\n a = this.ff(a, b, c, d, k[12], 7, 1804603682);\n d = this.ff(d, a, b, c, k[13], 12, -40341101);\n c = this.ff(c, d, a, b, k[14], 17, -1502002290);\n b = this.ff(b, c, d, a, k[15], 22, 1236535329);\n a = this.gg(a, b, c, d, k[1], 5, -165796510);\n d = this.gg(d, a, b, c, k[6], 9, -1069501632);\n c = this.gg(c, d, a, b, k[11], 14, 643717713);\n b = this.gg(b, c, d, a, k[0], 20, -373897302);\n a = this.gg(a, b, c, d, k[5], 5, -701558691);\n d = this.gg(d, a, b, c, k[10], 9, 38016083);\n c = this.gg(c, d, a, b, k[15], 14, -660478335);\n b = this.gg(b, c, d, a, k[4], 20, -405537848);\n a = this.gg(a, b, c, d, k[9], 5, 568446438);\n d = this.gg(d, a, b, c, k[14], 9, -1019803690);\n c = this.gg(c, d, a, b, k[3], 14, -187363961);\n b = this.gg(b, c, d, a, k[8], 20, 1163531501);\n a = this.gg(a, b, c, d, k[13], 5, -1444681467);\n d = this.gg(d, a, b, c, k[2], 9, -51403784);\n c = this.gg(c, d, a, b, k[7], 14, 1735328473);\n b = this.gg(b, c, d, a, k[12], 20, -1926607734);\n a = this.hh(a, b, c, d, k[5], 4, -378558);\n d = this.hh(d, a, b, c, k[8], 11, -2022574463);\n c = this.hh(c, d, a, b, k[11], 16, 1839030562);\n b = this.hh(b, c, d, a, k[14], 23, -35309556);\n a = this.hh(a, b, c, d, k[1], 4, -1530992060);\n d = this.hh(d, a, b, c, k[4], 11, 1272893353);\n c = this.hh(c, d, a, b, k[7], 16, -155497632);\n b = this.hh(b, c, d, a, k[10], 23, -1094730640);\n a = this.hh(a, b, c, d, k[13], 4, 681279174);\n d = this.hh(d, a, b, c, k[0], 11, -358537222);\n c = this.hh(c, d, a, b, k[3], 16, -722521979);\n b = this.hh(b, c, d, a, k[6], 23, 76029189);\n a = this.hh(a, b, c, d, k[9], 4, -640364487);\n d = this.hh(d, a, b, c, k[12], 11, -421815835);\n c = this.hh(c, d, a, b, k[15], 16, 530742520);\n b = this.hh(b, c, d, a, k[2], 23, -995338651);\n a = this.ii(a, b, c, d, k[0], 6, -198630844);\n d = this.ii(d, a, b, c, k[7], 10, 1126891415);\n c = this.ii(c, d, a, b, k[14], 15, -1416354905);\n b = this.ii(b, c, d, a, k[5], 21, -57434055);\n a = this.ii(a, b, c, d, k[12], 6, 1700485571);\n d = this.ii(d, a, b, c, k[3], 10, -1894986606);\n c = this.ii(c, d, a, b, k[10], 15, -1051523);\n b = this.ii(b, c, d, a, k[1], 21, -2054922799);\n a = this.ii(a, b, c, d, k[8], 6, 1873313359);\n d = this.ii(d, a, b, c, k[15], 10, -30611744);\n c = this.ii(c, d, a, b, k[6], 15, -1560198380);\n b = this.ii(b, c, d, a, k[13], 21, 1309151649);\n a = this.ii(a, b, c, d, k[4], 6, -145523070);\n d = this.ii(d, a, b, c, k[11], 10, -1120210379);\n c = this.ii(c, d, a, b, k[2], 15, 718787259);\n b = this.ii(b, c, d, a, k[9], 21, -343485551);\n x[0] = this.add32(a, x[0]);\n x[1] = this.add32(b, x[1]);\n x[2] = this.add32(c, x[2]);\n x[3] = this.add32(d, x[3]);\n };\n MD5.prototype.cmn = function (q, a, b, x, s, t) {\n a = this.add32(this.add32(a, q), this.add32(x, t));\n return this.add32((a << s) | (a >>> (32 - s)), b);\n };\n MD5.prototype.ff = function (a, b, c, d, x, s, t) {\n return this.cmn((b & c) | ((~b) & d), a, b, x, s, t);\n };\n MD5.prototype.gg = function (a, b, c, d, x, s, t) {\n return this.cmn((b & d) | (c & (~d)), a, b, x, s, t);\n };\n MD5.prototype.hh = function (a, b, c, d, x, s, t) {\n return this.cmn(b ^ c ^ d, a, b, x, s, t);\n };\n MD5.prototype.ii = function (a, b, c, d, x, s, t) {\n return this.cmn(c ^ (b | (~d)), a, b, x, s, t);\n };\n MD5.prototype.md51 = function (s) {\n var n = s.length;\n var state = [1732584193, -271733879, -1732584194, 271733878];\n var i;\n for (i = 64; i <= s.length; i += 64) {\n this.md5cycle(state, this.md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < s.length; i++) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n this.md5cycle(state, tail);\n for (i = 0; i < 16; i++) {\n tail[i] = 0;\n }\n }\n tail[14] = n * 8;\n this.md5cycle(state, tail);\n return state;\n };\n /* there needs to be support for Unicode here, * unless we pretend that we can redefine the MD-5\n * algorithm for multi-byte characters (perhaps by adding every four 16-bit characters and\n * shortening the sum to 32 bits). Otherwise I suthis.ggest performing MD-5 as if every character\n * was two bytes--e.g., 0040 0025 = @%--but then how will an ordinary MD-5 sum be matched?\n * There is no way to standardize text to something like UTF-8 before transformation; speed cost is\n * utterly prohibitive. The JavaScript standard itself needs to look at this: it should start\n * providing access to strings as preformed UTF-8 8-bit unsigned value arrays.\n */\n MD5.prototype.md5blk = function (s) {\n var md5blks = [];\n /* Andy King said do it this way. */\n for (var i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i)\n + (s.charCodeAt(i + 1) << 8)\n + (s.charCodeAt(i + 2) << 16)\n + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n };\n MD5.prototype.rhex = function (n) {\n var hex_chr = '0123456789abcdef'.split('');\n var s = '', j = 0;\n for (; j < 4; j++) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F]\n + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n };\n MD5.prototype.hex = function (x) {\n for (var i = 0; i < x.length; i++) {\n x[i] = this.rhex(x[i]);\n }\n return x.join('');\n };\n MD5.prototype.md5 = function (s) {\n return this.hex(this.md51(s));\n };\n MD5.prototype.add32 = function (a, b) {\n return this.ieCompatibility ? this.add32Compat(a, b) : this.add32Std(a, b);\n };\n /* this function is much faster, so if possible we use it. Some IEs are the only ones I know of that\n need the idiotic second function, generated by an if clause. */\n MD5.prototype.add32Std = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n };\n MD5.prototype.add32Compat = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF), msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n return MD5;\n}());\n\nvar __read$1c = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n// move to general utils\nfunction missingOrEmpty(value) {\n return value == null || value.length === 0;\n}\nfunction exists(value, allowEmptyString) {\n if (allowEmptyString === void 0) { allowEmptyString = false; }\n return value != null && (value !== '' || allowEmptyString);\n}\nvar LicenseManager = /** @class */ (function () {\n function LicenseManager(document) {\n this.watermarkMessage = undefined;\n this.document = document;\n this.md5 = new MD5();\n this.md5.init();\n }\n LicenseManager.prototype.validateLicense = function () {\n if (missingOrEmpty(LicenseManager.licenseKey)) {\n if (!this.isWebsiteUrl()) {\n this.outputMissingLicenseKey();\n }\n }\n else if (LicenseManager.licenseKey.length > 32) {\n if (LicenseManager.licenseKey.indexOf(\"For_Trialing_ag-Grid_Only\") !== -1) {\n this.outputInvalidLicenseKey();\n }\n else {\n var _a = LicenseManager.extractLicenseComponents(LicenseManager.licenseKey), md5 = _a.md5, license = _a.license, version = _a.version, isTrial = _a.isTrial;\n if (md5 === this.md5.md5(license)) {\n if (exists(version) && version) {\n this.validateLicenseKeyForVersion(version, !!isTrial, license);\n }\n else {\n this.validateLegacyKey(license);\n }\n }\n else {\n this.outputInvalidLicenseKey();\n }\n }\n }\n else {\n this.outputInvalidLicenseKey();\n }\n };\n LicenseManager.extractExpiry = function (license) {\n var restrictionHashed = license.substring(license.lastIndexOf('_') + 1, license.length);\n return new Date(parseInt(LicenseManager.decode(restrictionHashed), 10));\n };\n LicenseManager.extractLicenseComponents = function (licenseKey) {\n // when users copy the license key from a PDF extra zero width characters are sometimes copied too\n // carriage returns and line feeds are problematic too\n // all of which causes license key validation to fail - strip these out\n var cleanedLicenseKey = licenseKey.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n cleanedLicenseKey = cleanedLicenseKey.replace(/\\r?\\n|\\r/g, '');\n var hashStart = cleanedLicenseKey.length - 32;\n var md5 = cleanedLicenseKey.substring(hashStart);\n var license = cleanedLicenseKey.substring(0, hashStart);\n var _a = __read$1c(LicenseManager.extractBracketedInformation(cleanedLicenseKey), 2), version = _a[0], isTrial = _a[1];\n return { md5: md5, license: license, version: version, isTrial: isTrial };\n };\n LicenseManager.prototype.getLicenseDetails = function (licenseKey) {\n var _a = LicenseManager.extractLicenseComponents(licenseKey), md5 = _a.md5, license = _a.license, version = _a.version, isTrial = _a.isTrial;\n var valid = (md5 === this.md5.md5(license)) && licenseKey.indexOf(\"For_Trialing_ag-Grid_Only\") === -1;\n var trialExpired = null;\n var expiry = null;\n if (valid) {\n expiry = LicenseManager.extractExpiry(license);\n valid = !isNaN(expiry.getTime());\n if (isTrial) {\n var now = new Date();\n trialExpired = (expiry < now);\n }\n }\n return {\n licenseKey: licenseKey,\n valid: valid,\n expiry: valid ? LicenseManager.formatDate(expiry) : null,\n version: version ? version : 'legacy',\n isTrial: isTrial,\n trialExpired: trialExpired\n };\n };\n LicenseManager.prototype.isDisplayWatermark = function () {\n return !this.isLocalhost() && !this.isWebsiteUrl() && !missingOrEmpty(this.watermarkMessage);\n };\n LicenseManager.prototype.getWatermarkMessage = function () {\n return this.watermarkMessage || '';\n };\n LicenseManager.prototype.getHostname = function () {\n var win = (this.document.defaultView || window);\n var loc = win.location;\n var _a = loc.hostname, hostname = _a === void 0 ? '' : _a;\n return hostname;\n };\n LicenseManager.prototype.isWebsiteUrl = function () {\n var hostname = this.getHostname();\n return hostname.match(/^((?:\\w+\\.)?ag-grid\\.com)$/) !== null;\n };\n LicenseManager.prototype.isLocalhost = function () {\n var hostname = this.getHostname();\n return hostname.match(/^(?:127\\.0\\.0\\.1|localhost)$/) !== null;\n };\n LicenseManager.formatDate = function (date) {\n var monthNames = [\n 'January', 'February', 'March',\n 'April', 'May', 'June', 'July',\n 'August', 'September', 'October',\n 'November', 'December'\n ];\n var day = date.getDate();\n var monthIndex = date.getMonth();\n var year = date.getFullYear();\n return day + ' ' + monthNames[monthIndex] + ' ' + year;\n };\n LicenseManager.getGridReleaseDate = function () {\n return new Date(parseInt(LicenseManager.decode(LicenseManager.RELEASE_INFORMATION), 10));\n };\n LicenseManager.decode = function (input) {\n var keystr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var t = '';\n var n, r, i;\n var s, o, u, a;\n var f = 0;\n var e = input.replace(/[^A-Za-z0-9+/=]/g, '');\n while (f < e.length) {\n s = keystr.indexOf(e.charAt(f++));\n o = keystr.indexOf(e.charAt(f++));\n u = keystr.indexOf(e.charAt(f++));\n a = keystr.indexOf(e.charAt(f++));\n n = s << 2 | o >> 4;\n r = (o & 15) << 4 | u >> 2;\n i = (u & 3) << 6 | a;\n t = t + String.fromCharCode(n);\n if (u != 64) {\n t = t + String.fromCharCode(r);\n }\n if (a != 64) {\n t = t + String.fromCharCode(i);\n }\n }\n t = LicenseManager.utf8_decode(t);\n return t;\n };\n LicenseManager.utf8_decode = function (input) {\n input = input.replace(/rn/g, 'n');\n var t = '';\n for (var n = 0; n < input.length; n++) {\n var r = input.charCodeAt(n);\n if (r < 128) {\n t += String.fromCharCode(r);\n }\n else if (r > 127 && r < 2048) {\n t += String.fromCharCode(r >> 6 | 192);\n t += String.fromCharCode(r & 63 | 128);\n }\n else {\n t += String.fromCharCode(r >> 12 | 224);\n t += String.fromCharCode(r >> 6 & 63 | 128);\n t += String.fromCharCode(r & 63 | 128);\n }\n }\n return t;\n };\n LicenseManager.setLicenseKey = function (licenseKey) {\n this.licenseKey = licenseKey;\n };\n LicenseManager.extractBracketedInformation = function (licenseKey) {\n var matches = licenseKey.split('[')\n .filter(function (v) {\n return v.indexOf(']') > -1;\n })\n .map(function (value) {\n return value.split(']')[0];\n });\n if (!matches || matches.length === 0) {\n return [null, null];\n }\n var isTrial = matches.filter(function (match) { return match === 'TRIAL'; }).length === 1;\n var version = matches.filter(function (match) { return match.indexOf(\"v\") === 0; }).map(function (match) { return match.replace(/^v/, \"\"); })[0];\n return [version, isTrial];\n };\n LicenseManager.prototype.validateLicenseKeyForVersion = function (version, isTrial, license) {\n if (version !== '2') {\n return;\n }\n if (isTrial) {\n this.validateForTrial(license);\n }\n else {\n this.validateLegacyKey(license);\n }\n };\n LicenseManager.prototype.validateLegacyKey = function (license) {\n var gridReleaseDate = LicenseManager.getGridReleaseDate();\n var expiry = LicenseManager.extractExpiry(license);\n var valid = false;\n var current = false;\n if (!isNaN(expiry.getTime())) {\n valid = true;\n current = (gridReleaseDate < expiry);\n }\n if (!valid) {\n this.outputInvalidLicenseKey();\n }\n else if (!current) {\n var formattedExpiryDate = LicenseManager.formatDate(expiry);\n var formattedReleaseDate = LicenseManager.formatDate(gridReleaseDate);\n this.outputIncompatibleVersion(formattedExpiryDate, formattedReleaseDate);\n }\n };\n LicenseManager.prototype.validateForTrial = function (license) {\n var expiry = LicenseManager.extractExpiry(license);\n var now = new Date();\n var valid = false;\n var current = false;\n if (!isNaN(expiry.getTime())) {\n valid = true;\n current = (expiry > now);\n }\n if (!valid) {\n this.outputInvalidLicenseKey();\n }\n else if (!current) {\n var formattedExpiryDate = LicenseManager.formatDate(expiry);\n this.outputExpiredTrialKey(formattedExpiryDate);\n }\n };\n LicenseManager.prototype.outputInvalidLicenseKey = function () {\n console.error('*****************************************************************************************************************');\n console.error('***************************************** AG Grid Enterprise License ********************************************');\n console.error('********************************************* Invalid License ***************************************************');\n console.error('* Your license for AG Grid Enterprise is not valid - please contact info@ag-grid.com to obtain a valid license. *');\n console.error('*****************************************************************************************************************');\n console.error('*****************************************************************************************************************');\n this.watermarkMessage = \"Invalid License\";\n };\n LicenseManager.prototype.outputExpiredTrialKey = function (formattedExpiryDate) {\n console.error('****************************************************************************************************************');\n console.error('***************************************** AG Grid Enterprise License *******************************************');\n console.error('***************************************** Trial Period Expired. *******************************************');\n console.error(\"* Your license for AG Grid Enterprise expired on \" + formattedExpiryDate + \". *\");\n console.error('* Please email info@ag-grid.com to purchase a license. *');\n console.error('****************************************************************************************************************');\n console.error('****************************************************************************************************************');\n this.watermarkMessage = \"Trial Period Expired\";\n };\n LicenseManager.prototype.outputMissingLicenseKey = function () {\n console.error('****************************************************************************************************************');\n console.error('***************************************** AG Grid Enterprise License *******************************************');\n console.error('****************************************** License Key Not Found ***********************************************');\n console.error('* All AG Grid Enterprise features are unlocked. *');\n console.error('* This is an evaluation only version, it is not licensed for development projects intended for production. *');\n console.error('* If you want to hide the watermark, please email info@ag-grid.com for a trial license. *');\n console.error('****************************************************************************************************************');\n console.error('****************************************************************************************************************');\n this.watermarkMessage = \"For Trial Use Only\";\n };\n LicenseManager.prototype.outputIncompatibleVersion = function (formattedExpiryDate, formattedReleaseDate) {\n console.error('****************************************************************************************************************************');\n console.error('****************************************************************************************************************************');\n console.error('* AG Grid Enterprise License *');\n console.error('* License not compatible with installed version of AG Grid Enterprise. *');\n console.error('* *');\n console.error(\"* Your AG Grid License entitles you to all versions of AG Grid that we release within the time covered by your license *\");\n console.error(\"* - typically we provide one year licenses which entitles you to all releases / updates of AG Grid within that year. *\");\n console.error(\"* Your license has an end (expiry) date which stops the license key working with versions of AG Grid released after the *\");\n console.error(\"* license end date. The license key that you have expires on \" + formattedExpiryDate + \", however the version of AG Grid you *\");\n console.error(\"* are trying to use was released on \" + formattedReleaseDate + \". *\");\n console.error('* *');\n console.error('* Please contact info@ag-grid.com to renew your subscription to new versions and get a new license key to work with this *');\n console.error('* version of AG Grid. *');\n console.error('****************************************************************************************************************************');\n console.error('****************************************************************************************************************************');\n this.watermarkMessage = \"License Expired\";\n };\n LicenseManager.RELEASE_INFORMATION = 'MTY4Mzg5NTUzNDI5OA==';\n return LicenseManager;\n}());\n\nvar __extends$3l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridLicenseManager = /** @class */ (function (_super) {\n __extends$3l(GridLicenseManager, _super);\n function GridLicenseManager() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridLicenseManager.prototype.validateLicense = function () {\n this.licenseManager = new LicenseManager(this.gridOptionsService.getDocument());\n this.licenseManager.validateLicense();\n };\n GridLicenseManager.getLicenseDetails = function (licenseKey) {\n return new LicenseManager(null).getLicenseDetails(licenseKey);\n };\n GridLicenseManager.prototype.isDisplayWatermark = function () {\n return this.licenseManager.isDisplayWatermark();\n };\n GridLicenseManager.prototype.getWatermarkMessage = function () {\n return this.licenseManager.getWatermarkMessage();\n };\n GridLicenseManager.setLicenseKey = function (licenseKey) {\n LicenseManager.setLicenseKey(licenseKey);\n };\n __decorate$2w([\n PreConstruct\n ], GridLicenseManager.prototype, \"validateLicense\", null);\n GridLicenseManager = __decorate$2w([\n Bean('licenseManager')\n ], GridLicenseManager);\n return GridLicenseManager;\n}(BeanStub));\n\nvar __extends$3k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar WatermarkComp = /** @class */ (function (_super) {\n __extends$3k(WatermarkComp, _super);\n function WatermarkComp() {\n return _super.call(this, \"<div class=\\\"ag-watermark\\\">\\n <div ref=\\\"eLicenseTextRef\\\" class=\\\"ag-watermark-text\\\"></div>\\n </div>\") || this;\n }\n WatermarkComp.prototype.postConstruct = function () {\n var _this = this;\n var show = this.shouldDisplayWatermark();\n this.setDisplayed(show);\n if (show) {\n this.eLicenseTextRef.innerText = this.licenseManager.getWatermarkMessage();\n window.setTimeout(function () { return _this.addCssClass('ag-opacity-zero'); }, 0);\n window.setTimeout(function () { return _this.setDisplayed(false); }, 5000);\n }\n };\n WatermarkComp.prototype.shouldDisplayWatermark = function () {\n var eDocument = this.gridOptionsService.getDocument();\n var win = (eDocument.defaultView || window);\n var loc = win.location;\n var pathname = loc.pathname;\n var isDisplayWatermark = this.licenseManager.isDisplayWatermark();\n var isForceWatermark = pathname ? pathname.indexOf('forceWatermark') !== -1 : false;\n return isForceWatermark || isDisplayWatermark;\n };\n __decorate$2v([\n Autowired('licenseManager')\n ], WatermarkComp.prototype, \"licenseManager\", void 0);\n __decorate$2v([\n RefSelector('eLicenseTextRef')\n ], WatermarkComp.prototype, \"eLicenseTextRef\", void 0);\n __decorate$2v([\n PostConstruct\n ], WatermarkComp.prototype, \"postConstruct\", null);\n return WatermarkComp;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$i = '29.3.5';\n\nvar EnterpriseCoreModule = {\n version: VERSION$i,\n moduleName: ModuleNames.EnterpriseCoreModule,\n beans: [GridLicenseManager],\n agStackComponents: [\n { componentName: 'AgWatermark', componentClass: WatermarkComp }\n ]\n};\n\nvar __extends$3j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$D = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n// Matches value in changeDetectionService\nvar SOURCE_PASTE = 'paste';\nvar EXPORT_TYPE_DRAG_COPY = 'dragCopy';\nvar EXPORT_TYPE_CLIPBOARD = 'clipboard';\nvar CellClearType;\n(function (CellClearType) {\n CellClearType[CellClearType[\"CellRange\"] = 0] = \"CellRange\";\n CellClearType[CellClearType[\"SelectedRows\"] = 1] = \"SelectedRows\";\n CellClearType[CellClearType[\"FocusedCell\"] = 2] = \"FocusedCell\";\n})(CellClearType || (CellClearType = {}));\nvar ClipboardService = /** @class */ (function (_super) {\n __extends$3j(ClipboardService, _super);\n function ClipboardService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastPasteOperationTime = 0;\n _this.navigatorApiFailed = false;\n return _this;\n }\n ClipboardService_1 = ClipboardService;\n ClipboardService.prototype.init = function () {\n var _this = this;\n this.logger = this.loggerFactory.create('ClipboardService');\n if (this.rowModel.getType() === 'clientSide') {\n this.clientSideRowModel = this.rowModel;\n }\n this.ctrlsService.whenReady(function (p) {\n _this.gridCtrl = p.gridCtrl;\n });\n };\n ClipboardService.prototype.pasteFromClipboard = function () {\n var _this = this;\n this.logger.log('pasteFromClipboard');\n // Method 1 - native clipboard API, available in modern chrome browsers\n var allowNavigator = !this.gridOptionsService.is('suppressClipboardApi');\n // Some browsers (Firefox) do not allow Web Applications to read from\n // the clipboard so verify if not only the ClipboardAPI is available,\n // but also if the `readText` method is public.\n if (allowNavigator && !this.navigatorApiFailed && navigator.clipboard && navigator.clipboard.readText) {\n navigator.clipboard.readText()\n .then(this.processClipboardData.bind(this))\n .catch(function (e) {\n _.doOnce(function () {\n console.warn(e);\n console.warn('AG Grid: Unable to use the Clipboard API (navigator.clipboard.readText()). ' +\n 'The reason why it could not be used has been logged in the previous line. ' +\n 'For this reason the grid has defaulted to using a workaround which doesn\\'t perform as well. ' +\n 'Either fix why Clipboard API is blocked, OR stop this message from appearing by setting grid ' +\n 'property suppressClipboardApi=true (which will default the grid to using the workaround rather than the API');\n }, 'clipboardApiError');\n _this.navigatorApiFailed = true;\n _this.pasteFromClipboardLegacy();\n });\n }\n else {\n this.pasteFromClipboardLegacy();\n }\n };\n ClipboardService.prototype.pasteFromClipboardLegacy = function () {\n var _this = this;\n // Method 2 - if modern API fails, the old school hack\n var defaultPrevented = false;\n var handlePasteEvent = function (e) {\n var currentPastOperationTime = (new Date()).getTime();\n if (currentPastOperationTime - _this.lastPasteOperationTime < 50) {\n defaultPrevented = true;\n e.preventDefault();\n }\n _this.lastPasteOperationTime = currentPastOperationTime;\n };\n this.executeOnTempElement(function (textArea) {\n textArea.addEventListener('paste', handlePasteEvent);\n textArea.focus({ preventScroll: true });\n }, function (element) {\n var data = element.value;\n if (!defaultPrevented) {\n _this.processClipboardData(data);\n }\n else {\n _this.refocusLastFocusedCell();\n }\n element.removeEventListener('paste', handlePasteEvent);\n });\n };\n ClipboardService.prototype.refocusLastFocusedCell = function () {\n var focusedCell = this.focusService.getFocusedCell();\n if (focusedCell) {\n this.focusService.setFocusedCell({\n rowIndex: focusedCell.rowIndex,\n column: focusedCell.column,\n rowPinned: focusedCell.rowPinned,\n forceBrowserFocus: true\n });\n }\n };\n ClipboardService.prototype.getClipboardDelimiter = function () {\n var delimiter = this.gridOptionsService.get('clipboardDelimiter');\n return _.exists(delimiter) ? delimiter : '\\t';\n };\n ClipboardService.prototype.processClipboardData = function (data) {\n var _this = this;\n if (data == null) {\n return;\n }\n var parsedData = ClipboardService_1.stringToArray(data, this.getClipboardDelimiter());\n var userFunc = this.gridOptionsService.getCallback('processDataFromClipboard');\n if (userFunc) {\n parsedData = userFunc({ data: parsedData });\n }\n if (parsedData == null) {\n return;\n }\n if (this.gridOptionsService.is('suppressLastEmptyLineOnPaste')) {\n this.removeLastLineIfBlank(parsedData);\n }\n var pasteOperation = function (cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n var rangeActive = _this.rangeService && _this.rangeService.isMoreThanOneCell();\n var pasteIntoRange = rangeActive && !_this.hasOnlyOneValueToPaste(parsedData);\n if (pasteIntoRange) {\n _this.pasteIntoActiveRange(parsedData, cellsToFlash, updatedRowNodes, changedPath);\n }\n else {\n _this.pasteStartingFromFocusedCell(parsedData, cellsToFlash, updatedRowNodes, focusedCell, changedPath);\n }\n };\n this.doPasteOperation(pasteOperation);\n };\n // This will parse a delimited string into an array of arrays.\n ClipboardService.stringToArray = function (strData, delimiter) {\n if (delimiter === void 0) { delimiter = ','; }\n var data = [];\n var isNewline = function (char) { return char === '\\r' || char === '\\n'; };\n var insideQuotedField = false;\n if (strData === '') {\n return [['']];\n }\n var _loop_1 = function (row, column, position) {\n var previousChar = strData[position - 1];\n var currentChar = strData[position];\n var nextChar = strData[position + 1];\n var ensureDataExists = function () {\n if (!data[row]) {\n // create row if it doesn't exist\n data[row] = [];\n }\n if (!data[row][column]) {\n // create column if it doesn't exist\n data[row][column] = '';\n }\n };\n ensureDataExists();\n if (currentChar === '\"') {\n if (insideQuotedField) {\n if (nextChar === '\"') {\n // unescape double quote\n data[row][column] += '\"';\n position++;\n }\n else {\n // exit quoted field\n insideQuotedField = false;\n }\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n else if (previousChar === undefined || previousChar === delimiter || isNewline(previousChar)) {\n // enter quoted field\n insideQuotedField = true;\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n }\n if (!insideQuotedField) {\n if (currentChar === delimiter) {\n // move to next column\n column++;\n ensureDataExists();\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n else if (isNewline(currentChar)) {\n // move to next row\n column = 0;\n row++;\n ensureDataExists();\n if (currentChar === '\\r' && nextChar === '\\n') {\n // skip over second newline character if it exists\n position++;\n }\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n }\n // add current character to current column\n data[row][column] += currentChar;\n out_row_1 = row;\n out_column_1 = column;\n out_position_1 = position;\n };\n var out_row_1, out_column_1, out_position_1;\n // iterate over each character, keep track of current row and column (of the returned array)\n for (var row = 0, column = 0, position = 0; position < strData.length; position++) {\n _loop_1(row, column, position);\n row = out_row_1;\n column = out_column_1;\n position = out_position_1;\n }\n return data;\n };\n // common code to paste operations, e.g. paste to cell, paste to range, and copy range down\n ClipboardService.prototype.doPasteOperation = function (pasteOperationFunc) {\n var api = this.gridOptionsService.api;\n var columnApi = this.gridOptionsService.columnApi;\n var source = 'clipboard';\n this.eventService.dispatchEvent({\n type: Events.EVENT_PASTE_START,\n api: api,\n columnApi: columnApi,\n source: source\n });\n var changedPath;\n if (this.clientSideRowModel) {\n var onlyChangedColumns = this.gridOptionsService.is('aggregateOnlyChangedColumns');\n changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n }\n var cellsToFlash = {};\n var updatedRowNodes = [];\n var focusedCell = this.focusService.getFocusedCell();\n pasteOperationFunc(cellsToFlash, updatedRowNodes, focusedCell, changedPath);\n if (changedPath) {\n this.clientSideRowModel.doAggregate(changedPath);\n }\n this.rowRenderer.refreshCells();\n this.dispatchFlashCells(cellsToFlash);\n this.fireRowChanged(updatedRowNodes);\n // if using the clipboard hack with a temp element, then the focus has been lost,\n // so need to put it back. otherwise paste operation loosed focus on cell and keyboard\n // navigation stops.\n this.refocusLastFocusedCell();\n var event = {\n type: Events.EVENT_PASTE_END,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ClipboardService.prototype.pasteIntoActiveRange = function (clipboardData, cellsToFlash, updatedRowNodes, changedPath) {\n var _this = this;\n // true if clipboard data can be evenly pasted into range, otherwise false\n var abortRepeatingPasteIntoRows = this.getRangeSize() % clipboardData.length != 0;\n var indexOffset = 0;\n var dataRowIndex = 0;\n var rowCallback = function (currentRow, rowNode, columns, index) {\n var atEndOfClipboardData = index - indexOffset >= clipboardData.length;\n if (atEndOfClipboardData) {\n if (abortRepeatingPasteIntoRows) {\n return;\n }\n // increment offset and reset data index to repeat paste of data\n indexOffset += dataRowIndex;\n dataRowIndex = 0;\n }\n var currentRowData = clipboardData[index - indexOffset];\n // otherwise we are not the first row, so copy\n updatedRowNodes.push(rowNode);\n var processCellFromClipboardFunc = _this.gridOptionsService.getCallback('processCellFromClipboard');\n columns.forEach(function (column, idx) {\n if (!column.isCellEditable(rowNode) || column.isSuppressPaste(rowNode)) {\n return;\n }\n // repeat data for columns we don't have data for - happens when to range is bigger than copied data range\n if (idx >= currentRowData.length) {\n idx = idx % currentRowData.length;\n }\n var newValue = _this.processCell(rowNode, column, currentRowData[idx], EXPORT_TYPE_DRAG_COPY, processCellFromClipboardFunc);\n rowNode.setDataValue(column, newValue, SOURCE_PASTE);\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n var rowIndex = currentRow.rowIndex, rowPinned = currentRow.rowPinned;\n var cellId = _this.cellPositionUtils.createIdFromValues({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n cellsToFlash[cellId] = true;\n });\n dataRowIndex++;\n };\n this.iterateActiveRanges(false, rowCallback);\n };\n ClipboardService.prototype.pasteStartingFromFocusedCell = function (parsedData, cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n if (!focusedCell) {\n return;\n }\n var currentRow = { rowIndex: focusedCell.rowIndex, rowPinned: focusedCell.rowPinned };\n var columnsToPasteInto = this.columnModel.getDisplayedColumnsStartingAt(focusedCell.column);\n if (this.isPasteSingleValueIntoRange(parsedData)) {\n this.pasteSingleValueIntoRange(parsedData, updatedRowNodes, cellsToFlash, changedPath);\n }\n else {\n this.pasteMultipleValues(parsedData, currentRow, updatedRowNodes, columnsToPasteInto, cellsToFlash, EXPORT_TYPE_CLIPBOARD, changedPath);\n }\n };\n // if range is active, and only one cell, then we paste this cell into all cells in the active range.\n ClipboardService.prototype.isPasteSingleValueIntoRange = function (parsedData) {\n return this.hasOnlyOneValueToPaste(parsedData)\n && this.rangeService != null\n && !this.rangeService.isEmpty();\n };\n ClipboardService.prototype.pasteSingleValueIntoRange = function (parsedData, updatedRowNodes, cellsToFlash, changedPath) {\n var _this = this;\n var value = parsedData[0][0];\n var rowCallback = function (currentRow, rowNode, columns) {\n updatedRowNodes.push(rowNode);\n columns.forEach(function (column) {\n return _this.updateCellValue(rowNode, column, value, cellsToFlash, EXPORT_TYPE_CLIPBOARD, changedPath);\n });\n };\n this.iterateActiveRanges(false, rowCallback);\n };\n ClipboardService.prototype.hasOnlyOneValueToPaste = function (parsedData) {\n return parsedData.length === 1 && parsedData[0].length === 1;\n };\n ClipboardService.prototype.copyRangeDown = function () {\n var _this = this;\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n var firstRowValues = [];\n var pasteOperation = function (cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n var processCellForClipboardFunc = _this.gridOptionsService.getCallback('processCellForClipboard');\n var processCellFromClipboardFunc = _this.gridOptionsService.getCallback('processCellFromClipboard');\n var rowCallback = function (currentRow, rowNode, columns) {\n // take reference of first row, this is the one we will be using to copy from\n if (!firstRowValues.length) {\n // two reasons for looping through columns\n columns.forEach(function (column) {\n // get the initial values to copy down\n var value = _this.processCell(rowNode, column, _this.valueService.getValue(column, rowNode), EXPORT_TYPE_DRAG_COPY, processCellForClipboardFunc);\n firstRowValues.push(value);\n });\n }\n else {\n // otherwise we are not the first row, so copy\n updatedRowNodes.push(rowNode);\n columns.forEach(function (column, index) {\n if (!column.isCellEditable(rowNode) || column.isSuppressPaste(rowNode)) {\n return;\n }\n var firstRowValue = _this.processCell(rowNode, column, firstRowValues[index], EXPORT_TYPE_DRAG_COPY, processCellFromClipboardFunc);\n rowNode.setDataValue(column, firstRowValue, SOURCE_PASTE);\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n var rowIndex = currentRow.rowIndex, rowPinned = currentRow.rowPinned;\n var cellId = _this.cellPositionUtils.createIdFromValues({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n cellsToFlash[cellId] = true;\n });\n }\n };\n _this.iterateActiveRanges(true, rowCallback);\n };\n this.doPasteOperation(pasteOperation);\n };\n ClipboardService.prototype.removeLastLineIfBlank = function (parsedData) {\n // remove last row if empty, excel puts empty last row in\n var lastLine = _.last(parsedData);\n var lastLineIsBlank = lastLine && lastLine.length === 1 && lastLine[0] === '';\n if (lastLineIsBlank) {\n // do not remove the last empty line when that is the only line pasted\n if (parsedData.length === 1) {\n return;\n }\n _.removeFromArray(parsedData, lastLine);\n }\n };\n ClipboardService.prototype.fireRowChanged = function (rowNodes) {\n var _this = this;\n if (this.gridOptionsService.get('editType') !== 'fullRow') {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var event = {\n type: Events.EVENT_ROW_VALUE_CHANGED,\n node: rowNode,\n data: rowNode.data,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned\n };\n _this.eventService.dispatchEvent(event);\n });\n };\n ClipboardService.prototype.pasteMultipleValues = function (clipboardGridData, currentRow, updatedRowNodes, columnsToPasteInto, cellsToFlash, type, changedPath) {\n var _this = this;\n var rowPointer = currentRow;\n // if doing CSRM and NOT tree data, then it means groups are aggregates, which are read only,\n // so we should skip them when doing paste operations.\n var skipGroupRows = this.clientSideRowModel != null && !this.gridOptionsService.isTreeData();\n var getNextGoodRowNode = function () {\n while (true) {\n if (!rowPointer) {\n return null;\n }\n var res = _this.rowPositionUtils.getRowNode(rowPointer);\n // move to next row down for next set of values\n rowPointer = _this.cellNavigationService.getRowBelow({ rowPinned: rowPointer.rowPinned, rowIndex: rowPointer.rowIndex });\n // if no more rows, return null\n if (res == null) {\n return null;\n }\n // skip details rows and footer rows, never paste into them as they don't hold data\n var skipRow = res.detail || res.footer || (skipGroupRows && res.group);\n // skipping row means we go into the next iteration of the while loop\n if (!skipRow) {\n return res;\n }\n }\n };\n clipboardGridData.forEach(function (clipboardRowData) {\n var rowNode = getNextGoodRowNode();\n // if we have come to end of rows in grid, then skip\n if (!rowNode) {\n return;\n }\n clipboardRowData.forEach(function (value, index) {\n return _this.updateCellValue(rowNode, columnsToPasteInto[index], value, cellsToFlash, type, changedPath);\n });\n updatedRowNodes.push(rowNode);\n });\n };\n ClipboardService.prototype.updateCellValue = function (rowNode, column, value, cellsToFlash, type, changedPath) {\n if (!rowNode ||\n !column ||\n !column.isCellEditable(rowNode) ||\n column.isSuppressPaste(rowNode)) {\n return;\n }\n var processedValue = this.processCell(rowNode, column, value, type, this.gridOptionsService.getCallback('processCellFromClipboard'));\n rowNode.setDataValue(column, processedValue, SOURCE_PASTE);\n var rowIndex = rowNode.rowIndex, rowPinned = rowNode.rowPinned;\n var cellId = this.cellPositionUtils.createIdFromValues({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n cellsToFlash[cellId] = true;\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n };\n ClipboardService.prototype.copyToClipboard = function (params) {\n if (params === void 0) { params = {}; }\n this.copyOrCutToClipboard(params);\n };\n ClipboardService.prototype.cutToClipboard = function (params) {\n if (params === void 0) { params = {}; }\n if (this.gridOptionsService.is('suppressCutToClipboard')) {\n return;\n }\n this.copyOrCutToClipboard(params, true);\n };\n ClipboardService.prototype.copyOrCutToClipboard = function (params, cut) {\n var includeHeaders = params.includeHeaders, includeGroupHeaders = params.includeGroupHeaders;\n this.logger.log(\"copyToClipboard: includeHeaders = \" + includeHeaders);\n // don't override 'includeHeaders' if it has been explicitly set to 'false'\n if (includeHeaders == null) {\n includeHeaders = this.gridOptionsService.is('copyHeadersToClipboard');\n }\n if (includeGroupHeaders == null) {\n includeGroupHeaders = this.gridOptionsService.is('copyGroupHeadersToClipboard');\n }\n var copyParams = { includeHeaders: includeHeaders, includeGroupHeaders: includeGroupHeaders };\n var shouldCopyRows = !this.gridOptionsService.is('suppressCopyRowsToClipboard');\n var cellClearType = null;\n // Copy priority is Range > Row > Focus\n if (this.rangeService && !this.rangeService.isEmpty() && !this.shouldSkipSingleCellRange()) {\n this.copySelectedRangeToClipboard(copyParams);\n cellClearType = CellClearType.CellRange;\n }\n else if (shouldCopyRows && !this.selectionService.isEmpty()) {\n this.copySelectedRowsToClipboard(copyParams);\n cellClearType = CellClearType.SelectedRows;\n }\n else if (this.focusService.isAnyCellFocused()) {\n this.copyFocusedCellToClipboard(copyParams);\n cellClearType = CellClearType.FocusedCell;\n }\n if (cut && cellClearType !== null) {\n this.clearCellsAfterCopy(cellClearType);\n }\n };\n ClipboardService.prototype.clearCellsAfterCopy = function (type) {\n this.eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START });\n if (type === CellClearType.CellRange) {\n this.rangeService.clearCellRangeCellValues(undefined, 'clipboardService');\n }\n else if (type === CellClearType.SelectedRows) {\n this.clearSelectedRows();\n }\n else {\n var focusedCell = this.focusService.getFocusedCell();\n if (focusedCell == null) {\n return;\n }\n var rowNode = this.rowPositionUtils.getRowNode(focusedCell);\n if (rowNode) {\n this.clearCellValue(rowNode, focusedCell.column);\n }\n }\n this.eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END });\n };\n ClipboardService.prototype.clearSelectedRows = function () {\n var e_1, _a, e_2, _b;\n var selected = this.selectionService.getSelectedNodes();\n var columns = this.columnModel.getAllDisplayedColumns();\n try {\n for (var selected_1 = __values$D(selected), selected_1_1 = selected_1.next(); !selected_1_1.done; selected_1_1 = selected_1.next()) {\n var row = selected_1_1.value;\n try {\n for (var columns_1 = (e_2 = void 0, __values$D(columns)), columns_1_1 = columns_1.next(); !columns_1_1.done; columns_1_1 = columns_1.next()) {\n var col = columns_1_1.value;\n this.clearCellValue(row, col);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (columns_1_1 && !columns_1_1.done && (_b = columns_1.return)) _b.call(columns_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (selected_1_1 && !selected_1_1.done && (_a = selected_1.return)) _a.call(selected_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n ClipboardService.prototype.clearCellValue = function (rowNode, column) {\n if (!column.isCellEditable(rowNode)) {\n return;\n }\n rowNode.setDataValue(column, null, 'clipboardService');\n };\n ClipboardService.prototype.shouldSkipSingleCellRange = function () {\n return this.gridOptionsService.is('suppressCopySingleCellRanges') && !this.rangeService.isMoreThanOneCell();\n };\n ClipboardService.prototype.iterateActiveRanges = function (onlyFirst, rowCallback, columnCallback) {\n var _this = this;\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n var cellRanges = this.rangeService.getCellRanges();\n if (onlyFirst) {\n this.iterateActiveRange(cellRanges[0], rowCallback, columnCallback, true);\n }\n else {\n cellRanges.forEach(function (range, idx) { return _this.iterateActiveRange(range, rowCallback, columnCallback, idx === cellRanges.length - 1); });\n }\n };\n ClipboardService.prototype.iterateActiveRange = function (range, rowCallback, columnCallback, isLastRange) {\n if (!this.rangeService) {\n return;\n }\n var currentRow = this.rangeService.getRangeStartRow(range);\n var lastRow = this.rangeService.getRangeEndRow(range);\n if (columnCallback && range.columns) {\n columnCallback(range.columns);\n }\n var rangeIndex = 0;\n var isLastRow = false;\n // the currentRow could be missing if the user sets the active range manually, and sets a range\n // that is outside of the grid (eg. sets range rows 0 to 100, but grid has only 20 rows).\n while (!isLastRow && currentRow != null) {\n var rowNode = this.rowPositionUtils.getRowNode(currentRow);\n isLastRow = this.rowPositionUtils.sameRow(currentRow, lastRow);\n rowCallback(currentRow, rowNode, range.columns, rangeIndex++, isLastRow && isLastRange);\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\n }\n };\n ClipboardService.prototype.copySelectedRangeToClipboard = function (params) {\n if (params === void 0) { params = {}; }\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n var allRangesMerge = this.rangeService.areAllRangesAbleToMerge();\n var _a = allRangesMerge ? this.buildDataFromMergedRanges(params) : this.buildDataFromRanges(params), data = _a.data, cellsToFlash = _a.cellsToFlash;\n this.copyDataToClipboard(data);\n this.dispatchFlashCells(cellsToFlash);\n };\n ClipboardService.prototype.buildDataFromMergedRanges = function (params) {\n var _this = this;\n var columnsSet = new Set();\n var ranges = this.rangeService.getCellRanges();\n var rowPositionsMap = new Map();\n var allRowPositions = [];\n var allCellsToFlash = {};\n ranges.forEach(function (range) {\n range.columns.forEach(function (col) { return columnsSet.add(col); });\n var _a = _this.getRangeRowPositionsAndCellsToFlash(range), rowPositions = _a.rowPositions, cellsToFlash = _a.cellsToFlash;\n rowPositions.forEach(function (rowPosition) {\n var rowPositionAsString = rowPosition.rowIndex + \"-\" + (rowPosition.rowPinned || 'null');\n if (!rowPositionsMap.get(rowPositionAsString)) {\n rowPositionsMap.set(rowPositionAsString, true);\n allRowPositions.push(rowPosition);\n }\n });\n Object.assign(allCellsToFlash, cellsToFlash);\n });\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var exportedColumns = Array.from(columnsSet);\n exportedColumns.sort(function (a, b) {\n var posA = allColumns.indexOf(a);\n var posB = allColumns.indexOf(b);\n return posA - posB;\n });\n var data = this.buildExportParams({\n columns: exportedColumns,\n rowPositions: allRowPositions,\n includeHeaders: params.includeHeaders,\n includeGroupHeaders: params.includeGroupHeaders,\n });\n return { data: data, cellsToFlash: allCellsToFlash };\n };\n ClipboardService.prototype.buildDataFromRanges = function (params) {\n var _this = this;\n var ranges = this.rangeService.getCellRanges();\n var data = [];\n var allCellsToFlash = {};\n ranges.forEach(function (range) {\n var _a = _this.getRangeRowPositionsAndCellsToFlash(range), rowPositions = _a.rowPositions, cellsToFlash = _a.cellsToFlash;\n Object.assign(allCellsToFlash, cellsToFlash);\n data.push(_this.buildExportParams({\n columns: range.columns,\n rowPositions: rowPositions,\n includeHeaders: params.includeHeaders,\n includeGroupHeaders: params.includeGroupHeaders,\n }));\n });\n return { data: data.join('\\n'), cellsToFlash: allCellsToFlash };\n };\n ClipboardService.prototype.getRangeRowPositionsAndCellsToFlash = function (range) {\n var _this = this;\n var rowPositions = [];\n var cellsToFlash = {};\n var startRow = this.rangeService.getRangeStartRow(range);\n var lastRow = this.rangeService.getRangeEndRow(range);\n var node = startRow;\n while (node) {\n rowPositions.push(node);\n range.columns.forEach(function (column) {\n var _a = node, rowIndex = _a.rowIndex, rowPinned = _a.rowPinned;\n var cellId = _this.cellPositionUtils.createIdFromValues({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n cellsToFlash[cellId] = true;\n });\n if (this.rowPositionUtils.sameRow(node, lastRow)) {\n break;\n }\n node = this.cellNavigationService.getRowBelow(node);\n }\n return { rowPositions: rowPositions, cellsToFlash: cellsToFlash };\n };\n ClipboardService.prototype.copyFocusedCellToClipboard = function (params) {\n var _a;\n if (params === void 0) { params = {}; }\n var focusedCell = this.focusService.getFocusedCell();\n if (focusedCell == null) {\n return;\n }\n var cellId = this.cellPositionUtils.createId(focusedCell);\n var currentRow = { rowPinned: focusedCell.rowPinned, rowIndex: focusedCell.rowIndex };\n var column = focusedCell.column;\n var data = this.buildExportParams({\n columns: [column],\n rowPositions: [currentRow],\n includeHeaders: params.includeHeaders,\n includeGroupHeaders: params.includeGroupHeaders\n });\n this.copyDataToClipboard(data);\n this.dispatchFlashCells((_a = {}, _a[cellId] = true, _a));\n };\n ClipboardService.prototype.copySelectedRowsToClipboard = function (params) {\n if (params === void 0) { params = {}; }\n var columnKeys = params.columnKeys, includeHeaders = params.includeHeaders, includeGroupHeaders = params.includeGroupHeaders;\n var data = this.buildExportParams({\n columns: columnKeys,\n includeHeaders: includeHeaders,\n includeGroupHeaders: includeGroupHeaders\n });\n this.copyDataToClipboard(data);\n };\n ClipboardService.prototype.buildExportParams = function (params) {\n var _this = this;\n var columns = params.columns, rowPositions = params.rowPositions, _a = params.includeHeaders, includeHeaders = _a === void 0 ? false : _a, _b = params.includeGroupHeaders, includeGroupHeaders = _b === void 0 ? false : _b;\n var exportParams = {\n columnKeys: columns,\n rowPositions: rowPositions,\n skipColumnHeaders: !includeHeaders,\n skipColumnGroupHeaders: !includeGroupHeaders,\n suppressQuotes: true,\n columnSeparator: this.getClipboardDelimiter(),\n onlySelected: !rowPositions,\n processCellCallback: this.gridOptionsService.getCallback('processCellForClipboard'),\n processRowGroupCallback: function (params) { return _this.processRowGroupCallback(params); },\n processHeaderCallback: this.gridOptionsService.getCallback('processHeaderForClipboard'),\n processGroupHeaderCallback: this.gridOptionsService.getCallback('processGroupHeaderForClipboard')\n };\n return this.csvCreator.getDataAsCsv(exportParams, true);\n };\n ClipboardService.prototype.processRowGroupCallback = function (params) {\n var node = params.node;\n var key = node.key;\n var value = key != null ? key : '';\n if (params.node.footer) {\n var suffix = '';\n if (key && key.length) {\n suffix = \" \" + key;\n }\n value = \"Total\" + suffix;\n }\n var processCellForClipboard = this.gridOptionsService.getCallback('processCellForClipboard');\n if (processCellForClipboard) {\n var column = node.rowGroupColumn;\n if (!column && node.footer && node.level === -1) {\n column = this.columnModel.getRowGroupColumns()[0];\n }\n return processCellForClipboard({\n value: value,\n node: node,\n column: column,\n type: 'clipboard'\n });\n }\n return value;\n };\n ClipboardService.prototype.dispatchFlashCells = function (cellsToFlash) {\n var _this = this;\n window.setTimeout(function () {\n var event = {\n type: Events.EVENT_FLASH_CELLS,\n cells: cellsToFlash\n };\n _this.eventService.dispatchEvent(event);\n }, 0);\n };\n ClipboardService.prototype.processCell = function (rowNode, column, value, type, func) {\n if (func) {\n var params = {\n column: column,\n node: rowNode,\n value: value,\n type: type,\n };\n return func(params);\n }\n return value;\n };\n ClipboardService.prototype.copyDataToClipboard = function (data) {\n var _this = this;\n var userProvidedFunc = this.gridOptionsService.getCallback('sendToClipboard');\n // method 1 - user provided func\n if (userProvidedFunc) {\n userProvidedFunc({ data: data });\n return;\n }\n // method 2 - native clipboard API, available in modern chrome browsers\n var allowNavigator = !this.gridOptionsService.is('suppressClipboardApi');\n if (allowNavigator && navigator.clipboard) {\n navigator.clipboard.writeText(data).catch(function (e) {\n _.doOnce(function () {\n console.warn(e);\n console.warn('AG Grid: Unable to use the Clipboard API (navigator.clipboard.writeText()). ' +\n 'The reason why it could not be used has been logged in the previous line. ' +\n 'For this reason the grid has defaulted to using a workaround which doesn\\'t perform as well. ' +\n 'Either fix why Clipboard API is blocked, OR stop this message from appearing by setting grid ' +\n 'property suppressClipboardApi=true (which will default the grid to using the workaround rather than the API.');\n }, 'clipboardApiError');\n _this.copyDataToClipboardLegacy(data);\n });\n return;\n }\n this.copyDataToClipboardLegacy(data);\n };\n ClipboardService.prototype.copyDataToClipboardLegacy = function (data) {\n var _this = this;\n // method 3 - if all else fails, the old school hack\n this.executeOnTempElement(function (element) {\n var eDocument = _this.gridOptionsService.getDocument();\n var focusedElementBefore = eDocument.activeElement;\n element.value = data || ' '; // has to be non-empty value or execCommand will not do anything\n element.select();\n element.focus({ preventScroll: true });\n var result = eDocument.execCommand('copy');\n if (!result) {\n console.warn('AG Grid: Browser did not allow document.execCommand(\\'copy\\'). Ensure ' +\n 'api.copySelectedRowsToClipboard() is invoked via a user event, i.e. button click, otherwise ' +\n 'the browser will prevent it for security reasons.');\n }\n if (focusedElementBefore != null && focusedElementBefore.focus != null) {\n focusedElementBefore.focus({ preventScroll: true });\n }\n });\n };\n ClipboardService.prototype.executeOnTempElement = function (callbackNow, callbackAfter) {\n var eDoc = this.gridOptionsService.getDocument();\n var eTempInput = eDoc.createElement('textarea');\n eTempInput.style.width = '1px';\n eTempInput.style.height = '1px';\n // removing items from the DOM causes the document element to scroll to the\n // position where the element was positioned. Here we set scrollTop / scrollLeft\n // to prevent the document element from scrolling when we remove it from the DOM.\n eTempInput.style.top = eDoc.documentElement.scrollTop + 'px';\n eTempInput.style.left = eDoc.documentElement.scrollLeft + 'px';\n eTempInput.style.position = 'absolute';\n eTempInput.style.opacity = '0';\n var guiRoot = this.gridCtrl.getGui();\n guiRoot.appendChild(eTempInput);\n try {\n callbackNow(eTempInput);\n }\n catch (err) {\n console.warn('AG Grid: Browser does not support document.execCommand(\\'copy\\') for clipboard operations');\n }\n //It needs 100 otherwise OS X seemed to not always be able to paste... Go figure...\n if (callbackAfter) {\n window.setTimeout(function () {\n callbackAfter(eTempInput);\n guiRoot.removeChild(eTempInput);\n }, 100);\n }\n else {\n guiRoot.removeChild(eTempInput);\n }\n };\n ClipboardService.prototype.getRangeSize = function () {\n var ranges = this.rangeService.getCellRanges();\n var startRangeIndex = 0;\n var endRangeIndex = 0;\n if (ranges.length > 0) {\n startRangeIndex = this.rangeService.getRangeStartRow(ranges[0]).rowIndex;\n endRangeIndex = this.rangeService.getRangeEndRow(ranges[0]).rowIndex;\n }\n return startRangeIndex - endRangeIndex + 1;\n };\n var ClipboardService_1;\n __decorate$2u([\n Autowired('csvCreator')\n ], ClipboardService.prototype, \"csvCreator\", void 0);\n __decorate$2u([\n Autowired('loggerFactory')\n ], ClipboardService.prototype, \"loggerFactory\", void 0);\n __decorate$2u([\n Autowired('selectionService')\n ], ClipboardService.prototype, \"selectionService\", void 0);\n __decorate$2u([\n Optional('rangeService')\n ], ClipboardService.prototype, \"rangeService\", void 0);\n __decorate$2u([\n Autowired('rowModel')\n ], ClipboardService.prototype, \"rowModel\", void 0);\n __decorate$2u([\n Autowired('ctrlsService')\n ], ClipboardService.prototype, \"ctrlsService\", void 0);\n __decorate$2u([\n Autowired('valueService')\n ], ClipboardService.prototype, \"valueService\", void 0);\n __decorate$2u([\n Autowired('focusService')\n ], ClipboardService.prototype, \"focusService\", void 0);\n __decorate$2u([\n Autowired('rowRenderer')\n ], ClipboardService.prototype, \"rowRenderer\", void 0);\n __decorate$2u([\n Autowired('columnModel')\n ], ClipboardService.prototype, \"columnModel\", void 0);\n __decorate$2u([\n Autowired('cellNavigationService')\n ], ClipboardService.prototype, \"cellNavigationService\", void 0);\n __decorate$2u([\n Autowired('cellPositionUtils')\n ], ClipboardService.prototype, \"cellPositionUtils\", void 0);\n __decorate$2u([\n Autowired('rowPositionUtils')\n ], ClipboardService.prototype, \"rowPositionUtils\", void 0);\n __decorate$2u([\n PostConstruct\n ], ClipboardService.prototype, \"init\", null);\n ClipboardService = ClipboardService_1 = __decorate$2u([\n Bean('clipboardService')\n ], ClipboardService);\n return ClipboardService;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$h = '29.3.5';\n\nvar ClipboardModule = {\n version: VERSION$h,\n moduleName: ModuleNames.ClipboardModule,\n beans: [ClipboardService],\n dependantModules: [\n EnterpriseCoreModule,\n CsvExportModule\n ]\n};\n\nvar __extends$3i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ExpandState;\n(function (ExpandState) {\n ExpandState[ExpandState[\"EXPANDED\"] = 0] = \"EXPANDED\";\n ExpandState[ExpandState[\"COLLAPSED\"] = 1] = \"COLLAPSED\";\n ExpandState[ExpandState[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n})(ExpandState || (ExpandState = {}));\nvar PrimaryColsHeaderPanel = /** @class */ (function (_super) {\n __extends$3i(PrimaryColsHeaderPanel, _super);\n function PrimaryColsHeaderPanel() {\n return _super.call(this, PrimaryColsHeaderPanel.TEMPLATE) || this;\n }\n PrimaryColsHeaderPanel.prototype.postConstruct = function () {\n var _this = this;\n this.createExpandIcons();\n this.addManagedListener(this.eExpand, 'click', this.onExpandClicked.bind(this));\n this.addManagedListener(this.eExpand, 'keydown', function (e) {\n if (e.key === KeyCode.SPACE) {\n e.preventDefault();\n _this.onExpandClicked();\n }\n });\n this.addManagedListener(this.eSelect.getInputElement(), 'click', this.onSelectClicked.bind(this));\n this.eFilterTextField.onValueChange(function () { return _this.onFilterTextChanged(); });\n this.addManagedListener(this.eFilterTextField.getInputElement(), 'keypress', this.onMiniFilterKeyPress.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n var translate = this.localeService.getLocaleTextFunc();\n this.eSelect.setInputAriaLabel(translate('ariaColumnSelectAll', 'Toggle Select All Columns'));\n this.eFilterTextField.setInputAriaLabel(translate('ariaFilterColumnsInput', 'Filter Columns Input'));\n };\n PrimaryColsHeaderPanel.prototype.init = function (params) {\n this.params = params;\n if (this.columnModel.isReady()) {\n this.showOrHideOptions();\n }\n };\n PrimaryColsHeaderPanel.prototype.createExpandIcons = function () {\n this.eExpand.appendChild((this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsService)));\n this.eExpand.appendChild((this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsService)));\n this.eExpand.appendChild((this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsService)));\n this.setExpandState(ExpandState.EXPANDED);\n };\n // we only show expand / collapse if we are showing columns\n PrimaryColsHeaderPanel.prototype.showOrHideOptions = function () {\n var showFilter = !this.params.suppressColumnFilter;\n var showSelect = !this.params.suppressColumnSelectAll;\n var showExpand = !this.params.suppressColumnExpandAll;\n var groupsPresent = this.columnModel.isPrimaryColumnGroupsPresent();\n var translate = this.localeService.getLocaleTextFunc();\n this.eFilterTextField.setInputPlaceholder(translate('searchOoo', 'Search...'));\n _.setDisplayed(this.eFilterTextField.getGui(), showFilter);\n _.setDisplayed(this.eSelect.getGui(), showSelect);\n _.setDisplayed(this.eExpand, showExpand && groupsPresent);\n };\n PrimaryColsHeaderPanel.prototype.onFilterTextChanged = function () {\n var _this = this;\n if (!this.onFilterTextChangedDebounced) {\n this.onFilterTextChangedDebounced = _.debounce(function () {\n var filterText = _this.eFilterTextField.getValue();\n _this.dispatchEvent({ type: \"filterChanged\", filterText: filterText });\n }, PrimaryColsHeaderPanel.DEBOUNCE_DELAY);\n }\n this.onFilterTextChangedDebounced();\n };\n PrimaryColsHeaderPanel.prototype.onMiniFilterKeyPress = function (e) {\n var _this = this;\n if (e.key === KeyCode.ENTER) {\n // we need to add a delay that corresponds to the filter text debounce delay to ensure\n // the text filtering has happened, otherwise all columns will be deselected\n setTimeout(function () { return _this.onSelectClicked(); }, PrimaryColsHeaderPanel.DEBOUNCE_DELAY);\n }\n };\n PrimaryColsHeaderPanel.prototype.onSelectClicked = function () {\n this.dispatchEvent({ type: this.selectState ? 'unselectAll' : 'selectAll' });\n };\n PrimaryColsHeaderPanel.prototype.onExpandClicked = function () {\n this.dispatchEvent({ type: this.expandState === ExpandState.EXPANDED ? 'collapseAll' : 'expandAll' });\n };\n PrimaryColsHeaderPanel.prototype.setExpandState = function (state) {\n this.expandState = state;\n _.setDisplayed(this.eExpandChecked, this.expandState === ExpandState.EXPANDED);\n _.setDisplayed(this.eExpandUnchecked, this.expandState === ExpandState.COLLAPSED);\n _.setDisplayed(this.eExpandIndeterminate, this.expandState === ExpandState.INDETERMINATE);\n };\n PrimaryColsHeaderPanel.prototype.setSelectionState = function (state) {\n this.selectState = state;\n this.eSelect.setValue(this.selectState);\n };\n PrimaryColsHeaderPanel.DEBOUNCE_DELAY = 300;\n PrimaryColsHeaderPanel.TEMPLATE = \"<div class=\\\"ag-column-select-header\\\" role=\\\"presentation\\\">\\n <div ref=\\\"eExpand\\\" class=\\\"ag-column-select-header-icon\\\" tabindex=\\\"0\\\"></div>\\n <ag-checkbox ref=\\\"eSelect\\\" class=\\\"ag-column-select-header-checkbox\\\"></ag-checkbox>\\n <ag-input-text-field class=\\\"ag-column-select-header-filter-wrapper\\\" ref=\\\"eFilterTextField\\\"></ag-input-text-field>\\n </div>\";\n __decorate$2t([\n Autowired('columnModel')\n ], PrimaryColsHeaderPanel.prototype, \"columnModel\", void 0);\n __decorate$2t([\n RefSelector('eExpand')\n ], PrimaryColsHeaderPanel.prototype, \"eExpand\", void 0);\n __decorate$2t([\n RefSelector('eSelect')\n ], PrimaryColsHeaderPanel.prototype, \"eSelect\", void 0);\n __decorate$2t([\n RefSelector('eFilterTextField')\n ], PrimaryColsHeaderPanel.prototype, \"eFilterTextField\", void 0);\n __decorate$2t([\n PostConstruct\n ], PrimaryColsHeaderPanel.prototype, \"postConstruct\", null);\n return PrimaryColsHeaderPanel;\n}(Component));\n\nvar ColumnModelItem = /** @class */ (function () {\n function ColumnModelItem(displayName, columnOrGroup, dept, group, expanded) {\n if (group === void 0) { group = false; }\n this.eventService = new EventService();\n this.displayName = displayName;\n this.dept = dept;\n this.group = group;\n if (group) {\n this.columnGroup = columnOrGroup;\n this.expanded = expanded;\n this.children = [];\n }\n else {\n this.column = columnOrGroup;\n }\n }\n ColumnModelItem.prototype.isGroup = function () { return this.group; };\n ColumnModelItem.prototype.getDisplayName = function () { return this.displayName; };\n ColumnModelItem.prototype.getColumnGroup = function () { return this.columnGroup; };\n ColumnModelItem.prototype.getColumn = function () { return this.column; };\n ColumnModelItem.prototype.getDept = function () { return this.dept; };\n ColumnModelItem.prototype.isExpanded = function () { return !!this.expanded; };\n ColumnModelItem.prototype.getChildren = function () { return this.children; };\n ColumnModelItem.prototype.isPassesFilter = function () { return this.passesFilter; };\n ColumnModelItem.prototype.setExpanded = function (expanded) {\n if (expanded === this.expanded) {\n return;\n }\n this.expanded = expanded;\n this.eventService.dispatchEvent({ type: ColumnModelItem.EVENT_EXPANDED_CHANGED });\n };\n ColumnModelItem.prototype.setPassesFilter = function (passesFilter) {\n this.passesFilter = passesFilter;\n };\n ColumnModelItem.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n ColumnModelItem.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n ColumnModelItem.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n return ColumnModelItem;\n}());\n\nvar __extends$3h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$1b = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$J = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$1b(arguments[i]));\n return ar;\n};\nvar __values$C = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar ToolPanelContextMenu = /** @class */ (function (_super) {\n __extends$3h(ToolPanelContextMenu, _super);\n function ToolPanelContextMenu(column, mouseEvent, parentEl) {\n var _this = _super.call(this, /* html */ \"<div class=\\\"ag-menu\\\"></div>\") || this;\n _this.column = column;\n _this.mouseEvent = mouseEvent;\n _this.parentEl = parentEl;\n _this.displayName = null;\n return _this;\n }\n ToolPanelContextMenu.prototype.postConstruct = function () {\n this.initializeProperties(this.column);\n this.buildMenuItemMap();\n if (this.column instanceof Column) {\n this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnToolPanel');\n }\n else {\n this.displayName = this.columnModel.getDisplayNameForProvidedColumnGroup(null, this.column, 'columnToolPanel');\n }\n if (this.isActive()) {\n this.mouseEvent.preventDefault();\n this.displayContextMenu();\n }\n };\n ToolPanelContextMenu.prototype.initializeProperties = function (column) {\n if (column instanceof ProvidedColumnGroup) {\n this.columns = column.getLeafColumns();\n }\n else {\n this.columns = [column];\n }\n this.allowGrouping = this.columns.some(function (col) { return col.isPrimary() && col.isAllowRowGroup(); });\n this.allowValues = this.columns.some(function (col) { return col.isPrimary() && col.isAllowValue(); });\n this.allowPivoting = this.columnModel.isPivotMode() && this.columns.some(function (col) { return col.isPrimary() && col.isAllowPivot(); });\n };\n ToolPanelContextMenu.prototype.buildMenuItemMap = function () {\n var _this = this;\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n this.menuItemMap = new Map();\n this.menuItemMap.set('rowGroup', {\n allowedFunction: function (col) { return col.isPrimary() && col.isAllowRowGroup(); },\n activeFunction: function (col) { return col.isRowGroupActive(); },\n activateLabel: function () { return localeTextFunc('groupBy', 'Group by') + \" \" + _this.displayName; },\n deactivateLabel: function () { return localeTextFunc('ungroupBy', 'Un-Group by') + \" \" + _this.displayName; },\n activateFunction: function () {\n var groupedColumns = _this.columnModel.getRowGroupColumns();\n _this.columnModel.setRowGroupColumns(_this.addColumnsToList(groupedColumns), \"toolPanelUi\");\n },\n deActivateFunction: function () {\n var groupedColumns = _this.columnModel.getRowGroupColumns();\n _this.columnModel.setRowGroupColumns(_this.removeColumnsFromList(groupedColumns), \"toolPanelUi\");\n },\n addIcon: 'menuAddRowGroup',\n removeIcon: 'menuRemoveRowGroup'\n });\n this.menuItemMap.set('value', {\n allowedFunction: function (col) { return col.isPrimary() && col.isAllowValue(); },\n activeFunction: function (col) { return col.isValueActive(); },\n activateLabel: function () { return localeTextFunc('addToValues', \"Add \" + _this.displayName + \" to values\", [_this.displayName]); },\n deactivateLabel: function () { return localeTextFunc('removeFromValues', \"Remove \" + _this.displayName + \" from values\", [_this.displayName]); },\n activateFunction: function () {\n var valueColumns = _this.columnModel.getValueColumns();\n _this.columnModel.setValueColumns(_this.addColumnsToList(valueColumns), \"toolPanelUi\");\n },\n deActivateFunction: function () {\n var valueColumns = _this.columnModel.getValueColumns();\n _this.columnModel.setValueColumns(_this.removeColumnsFromList(valueColumns), \"toolPanelUi\");\n },\n addIcon: 'valuePanel',\n removeIcon: 'valuePanel'\n });\n this.menuItemMap.set('pivot', {\n allowedFunction: function (col) { return _this.columnModel.isPivotMode() && col.isPrimary() && col.isAllowPivot(); },\n activeFunction: function (col) { return col.isPivotActive(); },\n activateLabel: function () { return localeTextFunc('addToLabels', \"Add \" + _this.displayName + \" to labels\", [_this.displayName]); },\n deactivateLabel: function () { return localeTextFunc('removeFromLabels', \"Remove \" + _this.displayName + \" from labels\", [_this.displayName]); },\n activateFunction: function () {\n var pivotColumns = _this.columnModel.getPivotColumns();\n _this.columnModel.setPivotColumns(_this.addColumnsToList(pivotColumns), \"toolPanelUi\");\n },\n deActivateFunction: function () {\n var pivotColumns = _this.columnModel.getPivotColumns();\n _this.columnModel.setPivotColumns(_this.removeColumnsFromList(pivotColumns), \"toolPanelUi\");\n },\n addIcon: 'pivotPanel',\n removeIcon: 'pivotPanel'\n });\n };\n ToolPanelContextMenu.prototype.addColumnsToList = function (columnList) {\n return __spread$J(columnList).concat(this.columns.filter(function (col) { return columnList.indexOf(col) === -1; }));\n };\n ToolPanelContextMenu.prototype.removeColumnsFromList = function (columnList) {\n var _this = this;\n return columnList.filter(function (col) { return _this.columns.indexOf(col) === -1; });\n };\n ToolPanelContextMenu.prototype.displayContextMenu = function () {\n var _this = this;\n var eGui = this.getGui();\n var menuList = this.createBean(new AgMenuList());\n var menuItemsMapped = this.getMappedMenuItems();\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var hideFunc = function () { };\n eGui.appendChild(menuList.getGui());\n menuList.addMenuItems(menuItemsMapped);\n menuList.addManagedListener(menuList, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function () {\n _this.parentEl.focus();\n hideFunc();\n });\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eGui,\n closeOnEsc: true,\n afterGuiAttached: function () { return _this.focusService.focusInto(menuList.getGui()); },\n ariaLabel: localeTextFunc('ariaLabelContextMenu', 'Context Menu'),\n closedCallback: function (e) {\n if (e instanceof KeyboardEvent) {\n _this.parentEl.focus();\n }\n _this.destroyBean(menuList);\n }\n });\n if (addPopupRes) {\n hideFunc = addPopupRes.hideFunc;\n }\n this.popupService.positionPopupUnderMouseEvent({\n type: 'columnContextMenu',\n mouseEvent: this.mouseEvent,\n ePopup: eGui\n });\n };\n ToolPanelContextMenu.prototype.isActive = function () {\n return this.allowGrouping || this.allowValues || this.allowPivoting;\n };\n ToolPanelContextMenu.prototype.getMappedMenuItems = function () {\n var e_1, _a;\n var ret = [];\n var _loop_1 = function (val) {\n var isInactive = this_1.columns.some(function (col) { return val.allowedFunction(col) && !val.activeFunction(col); });\n var isActive = this_1.columns.some(function (col) { return val.allowedFunction(col) && val.activeFunction(col); });\n if (isInactive) {\n ret.push({\n name: val.activateLabel(this_1.displayName),\n icon: _.createIconNoSpan(val.addIcon, this_1.gridOptionsService, null),\n action: function () { return val.activateFunction(); }\n });\n }\n if (isActive) {\n ret.push({\n name: val.deactivateLabel(this_1.displayName),\n icon: _.createIconNoSpan(val.removeIcon, this_1.gridOptionsService, null),\n action: function () { return val.deActivateFunction(); }\n });\n }\n };\n var this_1 = this;\n try {\n for (var _b = __values$C(this.menuItemMap.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var val = _c.value;\n _loop_1(val);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return ret;\n };\n __decorate$2s([\n Autowired('columnModel')\n ], ToolPanelContextMenu.prototype, \"columnModel\", void 0);\n __decorate$2s([\n Autowired('popupService')\n ], ToolPanelContextMenu.prototype, \"popupService\", void 0);\n __decorate$2s([\n Autowired('focusService')\n ], ToolPanelContextMenu.prototype, \"focusService\", void 0);\n __decorate$2s([\n PostConstruct\n ], ToolPanelContextMenu.prototype, \"postConstruct\", null);\n return ToolPanelContextMenu;\n}(Component));\n\nvar __extends$3g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelColumnGroupComp = /** @class */ (function (_super) {\n __extends$3g(ToolPanelColumnGroupComp, _super);\n function ToolPanelColumnGroupComp(modelItem, allowDragging, eventType, focusWrapper) {\n var _this = _super.call(this) || this;\n _this.modelItem = modelItem;\n _this.allowDragging = allowDragging;\n _this.eventType = eventType;\n _this.focusWrapper = focusWrapper;\n _this.processingColumnStateChange = false;\n _this.modelItem = modelItem;\n _this.columnGroup = modelItem.getColumnGroup();\n _this.columnDept = modelItem.getDept();\n _this.allowDragging = allowDragging;\n return _this;\n }\n ToolPanelColumnGroupComp.prototype.init = function () {\n var _this = this;\n this.setTemplate(ToolPanelColumnGroupComp.TEMPLATE);\n this.eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsService);\n this.eDragHandle.classList.add('ag-drag-handle', 'ag-column-select-column-group-drag-handle');\n var checkboxGui = this.cbSelect.getGui();\n var checkboxInput = this.cbSelect.getInputElement();\n checkboxGui.insertAdjacentElement('afterend', this.eDragHandle);\n checkboxInput.setAttribute('tabindex', '-1');\n this.displayName = this.columnModel.getDisplayNameForProvidedColumnGroup(null, this.columnGroup, this.eventType);\n if (_.missing(this.displayName)) {\n this.displayName = '>>';\n }\n this.eLabel.innerHTML = this.displayName ? this.displayName : '';\n this.setupExpandContract();\n this.addCssClass('ag-column-select-indent-' + this.columnDept);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.eLabel, 'click', this.onLabelClicked.bind(this));\n this.addManagedListener(this.cbSelect, AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n this.addManagedListener(this.modelItem, ColumnModelItem.EVENT_EXPANDED_CHANGED, this.onExpandChanged.bind(this));\n this.addManagedListener(this.focusWrapper, 'keydown', this.handleKeyDown.bind(this));\n this.addManagedListener(this.focusWrapper, 'contextmenu', this.onContextMenu.bind(this));\n this.setOpenClosedIcons();\n this.setupDragging();\n this.onColumnStateChanged();\n this.addVisibilityListenersToAllChildren();\n this.refreshAriaExpanded();\n this.refreshAriaLabel();\n this.setupTooltip();\n var classes = CssClassApplier.getToolPanelClassesFromColDef(this.columnGroup.getColGroupDef(), this.gridOptionsService, null, this.columnGroup);\n classes.forEach(function (c) { return _this.addOrRemoveCssClass(c, true); });\n };\n ToolPanelColumnGroupComp.prototype.getColumns = function () {\n return this.columnGroup.getLeafColumns();\n };\n ToolPanelColumnGroupComp.prototype.setupTooltip = function () {\n var _this = this;\n var colGroupDef = this.columnGroup.getColGroupDef();\n if (!colGroupDef) {\n return;\n }\n var refresh = function () {\n var newTooltipText = colGroupDef.headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n ToolPanelColumnGroupComp.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'columnToolPanelColumnGroup';\n return res;\n };\n ToolPanelColumnGroupComp.prototype.handleKeyDown = function (e) {\n switch (e.key) {\n case KeyCode.LEFT:\n e.preventDefault();\n this.modelItem.setExpanded(false);\n break;\n case KeyCode.RIGHT:\n e.preventDefault();\n this.modelItem.setExpanded(true);\n break;\n case KeyCode.SPACE:\n e.preventDefault();\n if (this.isSelectable()) {\n this.onSelectAllChanged(!this.isSelected());\n }\n break;\n }\n };\n ToolPanelColumnGroupComp.prototype.onContextMenu = function (e) {\n var _this = this;\n var _a = this, columnGroup = _a.columnGroup, gridOptionsService = _a.gridOptionsService;\n if (gridOptionsService.is('functionsReadOnly')) {\n return;\n }\n var contextMenu = this.createBean(new ToolPanelContextMenu(columnGroup, e, this.focusWrapper));\n this.addDestroyFunc(function () {\n if (contextMenu.isAlive()) {\n _this.destroyBean(contextMenu);\n }\n });\n };\n ToolPanelColumnGroupComp.prototype.addVisibilityListenersToAllChildren = function () {\n var _this = this;\n this.columnGroup.getLeafColumns().forEach(function (column) {\n _this.addManagedListener(column, Column.EVENT_VISIBLE_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addManagedListener(column, Column.EVENT_VALUE_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addManagedListener(column, Column.EVENT_PIVOT_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addManagedListener(column, Column.EVENT_ROW_GROUP_CHANGED, _this.onColumnStateChanged.bind(_this));\n });\n };\n ToolPanelColumnGroupComp.prototype.setupDragging = function () {\n var _this = this;\n if (!this.allowDragging) {\n _.setDisplayed(this.eDragHandle, false);\n return;\n }\n var hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n getDragItem: function () { return _this.createDragItem(); },\n onDragStarted: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n column: _this.columnGroup\n };\n _this.eventService.dispatchEvent(event);\n },\n onDragStopped: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END\n };\n _this.eventService.dispatchEvent(event);\n },\n onGridEnter: function () {\n if (hideColumnOnExit) {\n // when dragged into the grid, mimic what happens when checkbox is enabled\n // this handles the behaviour for pivot which is different to just hiding a column.\n _this.onChangeCommon(true);\n }\n },\n onGridExit: function () {\n if (hideColumnOnExit) {\n // when dragged outside of the grid, mimic what happens when checkbox is disabled\n // this handles the behaviour for pivot which is different to just hiding a column.\n _this.onChangeCommon(false);\n }\n }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n ToolPanelColumnGroupComp.prototype.createDragItem = function () {\n var visibleState = {};\n this.columnGroup.getLeafColumns().forEach(function (col) {\n visibleState[col.getId()] = col.isVisible();\n });\n return {\n columns: this.columnGroup.getLeafColumns(),\n visibleState: visibleState\n };\n };\n ToolPanelColumnGroupComp.prototype.setupExpandContract = function () {\n this.eGroupClosedIcon.appendChild(_.createIcon('columnSelectClosed', this.gridOptionsService, null));\n this.eGroupOpenedIcon.appendChild(_.createIcon('columnSelectOpen', this.gridOptionsService, null));\n this.addManagedListener(this.eGroupClosedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n this.addManagedListener(this.eGroupOpenedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n var touchListener = new TouchListener(this.eColumnGroupIcons, true);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, this.onExpandOrContractClicked.bind(this));\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n };\n ToolPanelColumnGroupComp.prototype.onLabelClicked = function () {\n var nextState = !this.cbSelect.getValue();\n this.onChangeCommon(nextState);\n };\n ToolPanelColumnGroupComp.prototype.onCheckboxChanged = function (event) {\n this.onChangeCommon(event.selected);\n };\n ToolPanelColumnGroupComp.prototype.getVisibleLeafColumns = function () {\n var childColumns = [];\n var extractCols = function (children) {\n children.forEach(function (child) {\n if (!child.isPassesFilter()) {\n return;\n }\n if (child.isGroup()) {\n extractCols(child.getChildren());\n }\n else {\n childColumns.push(child.getColumn());\n }\n });\n };\n extractCols(this.modelItem.getChildren());\n return childColumns;\n };\n ToolPanelColumnGroupComp.prototype.onChangeCommon = function (nextState) {\n this.refreshAriaLabel();\n if (this.processingColumnStateChange) {\n return;\n }\n this.modelItemUtils.selectAllChildren(this.modelItem.getChildren(), nextState, this.eventType);\n };\n ToolPanelColumnGroupComp.prototype.refreshAriaLabel = function () {\n var translate = this.localeService.getLocaleTextFunc();\n var columnLabel = translate('ariaColumnGroup', 'Column Group');\n var checkboxValue = this.cbSelect.getValue();\n var state = checkboxValue === undefined ?\n translate('ariaIndeterminate', 'indeterminate') :\n (checkboxValue ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden'));\n var visibilityLabel = translate('ariaToggleVisibility', 'Press SPACE to toggle visibility');\n _.setAriaLabel(this.focusWrapper, this.displayName + \" \" + columnLabel);\n this.cbSelect.setInputAriaLabel(visibilityLabel + \" (\" + state + \")\");\n _.setAriaDescribedBy(this.focusWrapper, this.cbSelect.getInputElement().id);\n };\n ToolPanelColumnGroupComp.prototype.onColumnStateChanged = function () {\n var selectedValue = this.workOutSelectedValue();\n var readOnlyValue = this.workOutReadOnlyValue();\n this.processingColumnStateChange = true;\n this.cbSelect.setValue(selectedValue);\n this.cbSelect.setReadOnly(readOnlyValue);\n this.addOrRemoveCssClass('ag-column-select-column-group-readonly', readOnlyValue);\n this.processingColumnStateChange = false;\n };\n ToolPanelColumnGroupComp.prototype.workOutSelectedValue = function () {\n var _this = this;\n var pivotMode = this.columnModel.isPivotMode();\n var visibleLeafColumns = this.getVisibleLeafColumns();\n var checkedCount = 0;\n var uncheckedCount = 0;\n visibleLeafColumns.forEach(function (column) {\n if (!pivotMode && column.getColDef().lockVisible) {\n return;\n }\n if (_this.isColumnChecked(column, pivotMode)) {\n checkedCount++;\n }\n else {\n uncheckedCount++;\n }\n });\n if (checkedCount > 0 && uncheckedCount > 0) {\n return undefined;\n }\n return checkedCount > 0;\n };\n ToolPanelColumnGroupComp.prototype.workOutReadOnlyValue = function () {\n var pivotMode = this.columnModel.isPivotMode();\n var colsThatCanAction = 0;\n this.columnGroup.getLeafColumns().forEach(function (col) {\n if (pivotMode) {\n if (col.isAnyFunctionAllowed()) {\n colsThatCanAction++;\n }\n }\n else {\n if (!col.getColDef().lockVisible) {\n colsThatCanAction++;\n }\n }\n });\n return colsThatCanAction === 0;\n };\n ToolPanelColumnGroupComp.prototype.isColumnChecked = function (column, pivotMode) {\n if (pivotMode) {\n var pivoted = column.isPivotActive();\n var grouped = column.isRowGroupActive();\n var aggregated = column.isValueActive();\n return pivoted || grouped || aggregated;\n }\n return column.isVisible();\n };\n ToolPanelColumnGroupComp.prototype.onExpandOrContractClicked = function () {\n var oldState = this.modelItem.isExpanded();\n this.modelItem.setExpanded(!oldState);\n };\n ToolPanelColumnGroupComp.prototype.onExpandChanged = function () {\n this.setOpenClosedIcons();\n this.refreshAriaExpanded();\n };\n ToolPanelColumnGroupComp.prototype.setOpenClosedIcons = function () {\n var folderOpen = this.modelItem.isExpanded();\n _.setDisplayed(this.eGroupClosedIcon, !folderOpen);\n _.setDisplayed(this.eGroupOpenedIcon, folderOpen);\n };\n ToolPanelColumnGroupComp.prototype.refreshAriaExpanded = function () {\n _.setAriaExpanded(this.focusWrapper, this.modelItem.isExpanded());\n };\n ToolPanelColumnGroupComp.prototype.getDisplayName = function () {\n return this.displayName;\n };\n ToolPanelColumnGroupComp.prototype.onSelectAllChanged = function (value) {\n var cbValue = this.cbSelect.getValue();\n var readOnly = this.cbSelect.isReadOnly();\n if (!readOnly && ((value && !cbValue) || (!value && cbValue))) {\n this.cbSelect.toggle();\n }\n };\n ToolPanelColumnGroupComp.prototype.isSelected = function () {\n return this.cbSelect.getValue();\n };\n ToolPanelColumnGroupComp.prototype.isSelectable = function () {\n return !this.cbSelect.isReadOnly();\n };\n ToolPanelColumnGroupComp.prototype.setSelected = function (selected) {\n this.cbSelect.setValue(selected, true);\n };\n ToolPanelColumnGroupComp.TEMPLATE = \"<div class=\\\"ag-column-select-column-group\\\" aria-hidden=\\\"true\\\">\\n <span class=\\\"ag-column-group-icons\\\" ref=\\\"eColumnGroupIcons\\\" >\\n <span class=\\\"ag-column-group-closed-icon\\\" ref=\\\"eGroupClosedIcon\\\"></span>\\n <span class=\\\"ag-column-group-opened-icon\\\" ref=\\\"eGroupOpenedIcon\\\"></span>\\n </span>\\n <ag-checkbox ref=\\\"cbSelect\\\" class=\\\"ag-column-select-checkbox\\\"></ag-checkbox>\\n <span class=\\\"ag-column-select-column-label\\\" ref=\\\"eLabel\\\"></span>\\n </div>\";\n __decorate$2r([\n Autowired('columnModel')\n ], ToolPanelColumnGroupComp.prototype, \"columnModel\", void 0);\n __decorate$2r([\n Autowired('dragAndDropService')\n ], ToolPanelColumnGroupComp.prototype, \"dragAndDropService\", void 0);\n __decorate$2r([\n Autowired('modelItemUtils')\n ], ToolPanelColumnGroupComp.prototype, \"modelItemUtils\", void 0);\n __decorate$2r([\n RefSelector('cbSelect')\n ], ToolPanelColumnGroupComp.prototype, \"cbSelect\", void 0);\n __decorate$2r([\n RefSelector('eLabel')\n ], ToolPanelColumnGroupComp.prototype, \"eLabel\", void 0);\n __decorate$2r([\n RefSelector('eGroupOpenedIcon')\n ], ToolPanelColumnGroupComp.prototype, \"eGroupOpenedIcon\", void 0);\n __decorate$2r([\n RefSelector('eGroupClosedIcon')\n ], ToolPanelColumnGroupComp.prototype, \"eGroupClosedIcon\", void 0);\n __decorate$2r([\n RefSelector('eColumnGroupIcons')\n ], ToolPanelColumnGroupComp.prototype, \"eColumnGroupIcons\", void 0);\n __decorate$2r([\n PostConstruct\n ], ToolPanelColumnGroupComp.prototype, \"init\", null);\n return ToolPanelColumnGroupComp;\n}(Component));\n\nvar __extends$3f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PRIMARY_COLS_LIST_ITEM_HOVERED = 'ag-list-item-hovered';\nvar PrimaryColsListPanelItemDragFeature = /** @class */ (function (_super) {\n __extends$3f(PrimaryColsListPanelItemDragFeature, _super);\n function PrimaryColsListPanelItemDragFeature(comp, virtualList) {\n var _this = _super.call(this) || this;\n _this.comp = comp;\n _this.virtualList = virtualList;\n _this.currentDragColumn = null;\n _this.lastHoveredColumnItem = null;\n return _this;\n }\n PrimaryColsListPanelItemDragFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START, this.columnPanelItemDragStart.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END, this.columnPanelItemDragEnd.bind(this));\n this.createDropTarget();\n this.createAutoScrollService();\n };\n PrimaryColsListPanelItemDragFeature.prototype.columnPanelItemDragStart = function (_a) {\n var column = _a.column;\n this.currentDragColumn = column;\n var currentColumns = this.getCurrentColumns();\n var hasNotMovable = currentColumns.find(function (col) {\n var colDef = col.getColDef();\n return !!colDef.suppressMovable || !!colDef.lockPosition;\n });\n if (hasNotMovable) {\n this.moveBlocked = true;\n }\n };\n PrimaryColsListPanelItemDragFeature.prototype.columnPanelItemDragEnd = function () {\n var _this = this;\n window.setTimeout(function () {\n _this.currentDragColumn = null;\n _this.moveBlocked = false;\n }, 10);\n };\n PrimaryColsListPanelItemDragFeature.prototype.createDropTarget = function () {\n var _this = this;\n var dropTarget = {\n isInterestedIn: function (type) { return type === DragSourceType.ToolPanel; },\n getIconName: function () { return DragAndDropService[_this.moveBlocked ? 'ICON_NOT_ALLOWED' : 'ICON_MOVE']; },\n getContainer: function () { return _this.comp.getGui(); },\n onDragging: function (e) { return _this.onDragging(e); },\n onDragStop: function () { return _this.onDragStop(); },\n onDragLeave: function () { return _this.onDragLeave(); }\n };\n this.dragAndDropService.addDropTarget(dropTarget);\n };\n PrimaryColsListPanelItemDragFeature.prototype.createAutoScrollService = function () {\n var virtualListGui = this.virtualList.getGui();\n this.autoScrollService = new AutoScrollService({\n scrollContainer: virtualListGui,\n scrollAxis: 'y',\n getVerticalPosition: function () { return virtualListGui.scrollTop; },\n setVerticalPosition: function (position) { return virtualListGui.scrollTop = position; }\n });\n };\n PrimaryColsListPanelItemDragFeature.prototype.onDragging = function (e) {\n if (!this.currentDragColumn || this.moveBlocked) {\n return;\n }\n var hoveredColumnItem = this.getDragColumnItem(e);\n var comp = this.virtualList.getComponentAt(hoveredColumnItem.rowIndex);\n if (!comp) {\n return;\n }\n var el = comp.getGui().parentElement;\n if (this.lastHoveredColumnItem &&\n this.lastHoveredColumnItem.rowIndex === hoveredColumnItem.rowIndex &&\n this.lastHoveredColumnItem.position === hoveredColumnItem.position) {\n return;\n }\n this.autoScrollService.check(e.event);\n this.clearHoveredItems();\n this.lastHoveredColumnItem = hoveredColumnItem;\n _.radioCssClass(el, \"\" + PRIMARY_COLS_LIST_ITEM_HOVERED);\n _.radioCssClass(el, \"ag-item-highlight-\" + hoveredColumnItem.position);\n };\n PrimaryColsListPanelItemDragFeature.prototype.getDragColumnItem = function (e) {\n var virtualListGui = this.virtualList.getGui();\n var paddingTop = parseFloat(window.getComputedStyle(virtualListGui).paddingTop);\n var rowHeight = this.virtualList.getRowHeight();\n var scrollTop = this.virtualList.getScrollTop();\n var rowIndex = Math.max(0, (e.y - paddingTop + scrollTop) / rowHeight);\n var maxLen = this.comp.getDisplayedColsList().length - 1;\n var normalizedRowIndex = Math.min(maxLen, rowIndex) | 0;\n return {\n rowIndex: normalizedRowIndex,\n position: (Math.round(rowIndex) > rowIndex || rowIndex > maxLen) ? 'bottom' : 'top',\n component: this.virtualList.getComponentAt(normalizedRowIndex)\n };\n };\n PrimaryColsListPanelItemDragFeature.prototype.onDragStop = function () {\n if (this.moveBlocked) {\n return;\n }\n var targetIndex = this.getTargetIndex();\n var columnsToMove = this.getCurrentColumns();\n if (targetIndex != null) {\n this.columnModel.moveColumns(columnsToMove, targetIndex, 'toolPanelUi');\n }\n this.clearHoveredItems();\n this.autoScrollService.ensureCleared();\n };\n PrimaryColsListPanelItemDragFeature.prototype.getMoveDiff = function (end) {\n var allColumns = this.columnModel.getAllGridColumns();\n var currentColumns = this.getCurrentColumns();\n var currentColumn = currentColumns[0];\n var span = currentColumns.length;\n var currentIndex = allColumns.indexOf(currentColumn);\n if (currentIndex < end) {\n return span;\n }\n return 0;\n };\n PrimaryColsListPanelItemDragFeature.prototype.getCurrentColumns = function () {\n if (this.currentDragColumn instanceof ProvidedColumnGroup) {\n return this.currentDragColumn.getLeafColumns();\n }\n return [this.currentDragColumn];\n };\n PrimaryColsListPanelItemDragFeature.prototype.getTargetIndex = function () {\n if (!this.lastHoveredColumnItem) {\n return null;\n }\n var columnItemComponent = this.lastHoveredColumnItem.component;\n var isBefore = this.lastHoveredColumnItem.position === 'top';\n var targetColumn;\n if (columnItemComponent instanceof ToolPanelColumnGroupComp) {\n var columns = columnItemComponent.getColumns();\n targetColumn = columns[0];\n isBefore = true;\n }\n else {\n targetColumn = columnItemComponent.getColumn();\n }\n var targetColumnIndex = this.columnModel.getAllGridColumns().indexOf(targetColumn);\n var adjustedTarget = isBefore ? targetColumnIndex : targetColumnIndex + 1;\n var diff = this.getMoveDiff(adjustedTarget);\n return adjustedTarget - diff;\n };\n PrimaryColsListPanelItemDragFeature.prototype.onDragLeave = function () {\n this.clearHoveredItems();\n this.autoScrollService.ensureCleared();\n };\n PrimaryColsListPanelItemDragFeature.prototype.clearHoveredItems = function () {\n var virtualListGui = this.virtualList.getGui();\n virtualListGui.querySelectorAll(\".\" + PRIMARY_COLS_LIST_ITEM_HOVERED).forEach(function (el) {\n [\n PRIMARY_COLS_LIST_ITEM_HOVERED,\n 'ag-item-highlight-top',\n 'ag-item-highlight-bottom'\n ].forEach(function (cls) {\n el.classList.remove(cls);\n });\n });\n this.lastHoveredColumnItem = null;\n };\n __decorate$2q([\n Autowired('columnModel')\n ], PrimaryColsListPanelItemDragFeature.prototype, \"columnModel\", void 0);\n __decorate$2q([\n Autowired('dragAndDropService')\n ], PrimaryColsListPanelItemDragFeature.prototype, \"dragAndDropService\", void 0);\n __decorate$2q([\n PostConstruct\n ], PrimaryColsListPanelItemDragFeature.prototype, \"postConstruct\", null);\n return PrimaryColsListPanelItemDragFeature;\n}(BeanStub));\n\nvar __extends$3e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelColumnComp = /** @class */ (function (_super) {\n __extends$3e(ToolPanelColumnComp, _super);\n function ToolPanelColumnComp(column, columnDept, allowDragging, groupsExist, focusWrapper) {\n var _this = _super.call(this) || this;\n _this.column = column;\n _this.columnDept = columnDept;\n _this.allowDragging = allowDragging;\n _this.groupsExist = groupsExist;\n _this.focusWrapper = focusWrapper;\n _this.processingColumnStateChange = false;\n return _this;\n }\n ToolPanelColumnComp.prototype.init = function () {\n var _this = this;\n this.setTemplate(ToolPanelColumnComp.TEMPLATE);\n this.eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsService);\n this.eDragHandle.classList.add('ag-drag-handle', 'ag-column-select-column-drag-handle');\n var checkboxGui = this.cbSelect.getGui();\n var checkboxInput = this.cbSelect.getInputElement();\n checkboxGui.insertAdjacentElement('afterend', this.eDragHandle);\n checkboxInput.setAttribute('tabindex', '-1');\n this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnToolPanel');\n var displayNameSanitised = _.escapeString(this.displayName);\n this.eLabel.innerHTML = displayNameSanitised;\n // if grouping, we add an extra level of indent, to cater for expand/contract icons we need to indent for\n var indent = this.columnDept;\n if (this.groupsExist) {\n this.addCssClass('ag-column-select-add-group-indent');\n }\n this.addCssClass(\"ag-column-select-indent-\" + indent);\n this.setupDragging();\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_VALUE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_PIVOT_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_ROW_GROUP_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_VISIBLE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.focusWrapper, 'keydown', this.handleKeyDown.bind(this));\n this.addManagedListener(this.focusWrapper, 'contextmenu', this.onContextMenu.bind(this));\n this.addManagedPropertyListener('functionsReadOnly', this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.cbSelect, AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n this.addManagedListener(this.eLabel, 'click', this.onLabelClicked.bind(this));\n this.onColumnStateChanged();\n this.refreshAriaLabel();\n this.setupTooltip();\n var classes = CssClassApplier.getToolPanelClassesFromColDef(this.column.getColDef(), this.gridOptionsService, this.column, null);\n classes.forEach(function (c) { return _this.addOrRemoveCssClass(c, true); });\n };\n ToolPanelColumnComp.prototype.getColumn = function () {\n return this.column;\n };\n ToolPanelColumnComp.prototype.setupTooltip = function () {\n var _this = this;\n var refresh = function () {\n var newTooltipText = _this.column.getColDef().headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n ToolPanelColumnComp.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'columnToolPanelColumn';\n res.colDef = this.column.getColDef();\n return res;\n };\n ToolPanelColumnComp.prototype.onContextMenu = function (e) {\n var _this = this;\n var _a = this, column = _a.column, gridOptionsService = _a.gridOptionsService;\n if (gridOptionsService.is('functionsReadOnly')) {\n return;\n }\n var contextMenu = this.createBean(new ToolPanelContextMenu(column, e, this.focusWrapper));\n this.addDestroyFunc(function () {\n if (contextMenu.isAlive()) {\n _this.destroyBean(contextMenu);\n }\n });\n };\n ToolPanelColumnComp.prototype.handleKeyDown = function (e) {\n if (e.key === KeyCode.SPACE) {\n e.preventDefault();\n if (this.isSelectable()) {\n this.onSelectAllChanged(!this.isSelected());\n }\n }\n };\n ToolPanelColumnComp.prototype.onLabelClicked = function () {\n if (this.gridOptionsService.is('functionsReadOnly')) {\n return;\n }\n var nextState = !this.cbSelect.getValue();\n this.onChangeCommon(nextState);\n };\n ToolPanelColumnComp.prototype.onCheckboxChanged = function (event) {\n this.onChangeCommon(event.selected);\n };\n ToolPanelColumnComp.prototype.onChangeCommon = function (nextState) {\n // ignore lock visible columns\n if (this.cbSelect.isReadOnly()) {\n return;\n }\n this.refreshAriaLabel();\n // only want to action if the user clicked the checkbox, not if we are setting the checkbox because\n // of a change in the model\n if (this.processingColumnStateChange) {\n return;\n }\n this.modelItemUtils.setColumn(this.column, nextState, 'toolPanelUi');\n };\n ToolPanelColumnComp.prototype.refreshAriaLabel = function () {\n var translate = this.localeService.getLocaleTextFunc();\n var columnLabel = translate('ariaColumn', 'Column');\n var state = this.cbSelect.getValue() ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden');\n var visibilityLabel = translate('ariaToggleVisibility', 'Press SPACE to toggle visibility');\n _.setAriaLabel(this.focusWrapper, this.displayName + \" \" + columnLabel);\n this.cbSelect.setInputAriaLabel(visibilityLabel + \" (\" + state + \")\");\n _.setAriaDescribedBy(this.focusWrapper, this.cbSelect.getInputElement().id);\n };\n ToolPanelColumnComp.prototype.setupDragging = function () {\n var _this = this;\n if (!this.allowDragging) {\n _.setDisplayed(this.eDragHandle, false);\n return;\n }\n var hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n getDragItem: function () { return _this.createDragItem(); },\n onDragStarted: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n column: _this.column\n };\n _this.eventService.dispatchEvent(event);\n },\n onDragStopped: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END\n };\n _this.eventService.dispatchEvent(event);\n },\n onGridEnter: function () {\n if (hideColumnOnExit) {\n // when dragged into the grid, mimic what happens when checkbox is enabled\n // this handles the behaviour for pivot which is different to just hiding a column.\n _this.onChangeCommon(true);\n }\n },\n onGridExit: function () {\n if (hideColumnOnExit) {\n // when dragged outside of the grid, mimic what happens when checkbox is disabled\n // this handles the behaviour for pivot which is different to just hiding a column.\n _this.onChangeCommon(false);\n }\n }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n ToolPanelColumnComp.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n ToolPanelColumnComp.prototype.onColumnStateChanged = function () {\n this.processingColumnStateChange = true;\n var isPivotMode = this.columnModel.isPivotMode();\n if (isPivotMode) {\n // if reducing, checkbox means column is one of pivot, value or group\n var anyFunctionActive = this.column.isAnyFunctionActive();\n this.cbSelect.setValue(anyFunctionActive);\n }\n else {\n // if not reducing, the checkbox tells us if column is visible or not\n this.cbSelect.setValue(this.column.isVisible());\n }\n var canBeToggled = true;\n var canBeDragged = true;\n if (isPivotMode) {\n // when in pivot mode, the item should be read only if:\n // a) gui is not allowed make any changes\n var functionsReadOnly = this.gridOptionsService.is('functionsReadOnly');\n // b) column is not allow any functions on it\n var noFunctionsAllowed = !this.column.isAnyFunctionAllowed();\n canBeToggled = !functionsReadOnly && !noFunctionsAllowed;\n canBeDragged = canBeToggled;\n }\n else {\n var _a = this.column.getColDef(), enableRowGroup = _a.enableRowGroup, enableValue = _a.enableValue, lockPosition = _a.lockPosition, suppressMovable = _a.suppressMovable, lockVisible = _a.lockVisible;\n var forceDraggable = !!enableRowGroup || !!enableValue;\n var disableDraggable = !!lockPosition || !!suppressMovable;\n canBeToggled = !lockVisible;\n canBeDragged = forceDraggable || !disableDraggable;\n }\n this.cbSelect.setReadOnly(!canBeToggled);\n this.eDragHandle.classList.toggle('ag-column-select-column-readonly', !canBeDragged);\n this.addOrRemoveCssClass('ag-column-select-column-readonly', !canBeDragged && !canBeToggled);\n var checkboxPassive = isPivotMode && this.gridOptionsService.is('functionsPassive');\n this.cbSelect.setPassive(checkboxPassive);\n this.processingColumnStateChange = false;\n };\n ToolPanelColumnComp.prototype.getDisplayName = function () {\n return this.displayName;\n };\n ToolPanelColumnComp.prototype.onSelectAllChanged = function (value) {\n if (value !== this.cbSelect.getValue()) {\n if (!this.cbSelect.isReadOnly()) {\n this.cbSelect.toggle();\n }\n }\n };\n ToolPanelColumnComp.prototype.isSelected = function () {\n return this.cbSelect.getValue();\n };\n ToolPanelColumnComp.prototype.isSelectable = function () {\n return !this.cbSelect.isReadOnly();\n };\n ToolPanelColumnComp.prototype.isExpandable = function () {\n return false;\n };\n ToolPanelColumnComp.prototype.setExpanded = function (value) {\n console.warn('AG Grid: can not expand a column item that does not represent a column group header');\n };\n ToolPanelColumnComp.TEMPLATE = \"<div class=\\\"ag-column-select-column\\\" aria-hidden=\\\"true\\\">\\n <ag-checkbox ref=\\\"cbSelect\\\" class=\\\"ag-column-select-checkbox\\\"></ag-checkbox>\\n <span class=\\\"ag-column-select-column-label\\\" ref=\\\"eLabel\\\"></span>\\n </div>\";\n __decorate$2p([\n Autowired('columnModel')\n ], ToolPanelColumnComp.prototype, \"columnModel\", void 0);\n __decorate$2p([\n Autowired('dragAndDropService')\n ], ToolPanelColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate$2p([\n Autowired('modelItemUtils')\n ], ToolPanelColumnComp.prototype, \"modelItemUtils\", void 0);\n __decorate$2p([\n RefSelector('eLabel')\n ], ToolPanelColumnComp.prototype, \"eLabel\", void 0);\n __decorate$2p([\n RefSelector('cbSelect')\n ], ToolPanelColumnComp.prototype, \"cbSelect\", void 0);\n __decorate$2p([\n PostConstruct\n ], ToolPanelColumnComp.prototype, \"init\", null);\n return ToolPanelColumnComp;\n}(Component));\n\nvar __extends$3d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UIColumnModel = /** @class */ (function () {\n function UIColumnModel(items) {\n this.items = items;\n }\n UIColumnModel.prototype.getRowCount = function () {\n return this.items.length;\n };\n UIColumnModel.prototype.getRow = function (index) {\n return this.items[index];\n };\n return UIColumnModel;\n}());\nvar PRIMARY_COLS_LIST_PANEL_CLASS = 'ag-column-select-list';\nvar PrimaryColsListPanel = /** @class */ (function (_super) {\n __extends$3d(PrimaryColsListPanel, _super);\n function PrimaryColsListPanel() {\n var _this = _super.call(this, PrimaryColsListPanel.TEMPLATE) || this;\n _this.destroyColumnItemFuncs = [];\n return _this;\n }\n PrimaryColsListPanel.prototype.destroyColumnTree = function () {\n this.allColsTree = [];\n this.destroyColumnItemFuncs.forEach(function (f) { return f(); });\n this.destroyColumnItemFuncs = [];\n };\n PrimaryColsListPanel.prototype.init = function (params, allowDragging, eventType) {\n var _this = this;\n this.params = params;\n this.allowDragging = allowDragging;\n this.eventType = eventType;\n if (!this.params.suppressSyncLayoutWithGrid) {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.onColumnsChanged.bind(this));\n }\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnsChanged.bind(this));\n var eventsImpactingCheckedState = [\n Events.EVENT_COLUMN_PIVOT_CHANGED,\n Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,\n Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n Events.EVENT_COLUMN_VALUE_CHANGED,\n Events.EVENT_COLUMN_VISIBLE,\n Events.EVENT_NEW_COLUMNS_LOADED\n ];\n eventsImpactingCheckedState.forEach(function (event) {\n // update header select all checkbox with current selection state\n _this.addManagedListener(_this.eventService, event, _this.fireSelectionChangedEvent.bind(_this));\n });\n this.expandGroupsByDefault = !this.params.contractColumnSelection;\n var translate = this.localeService.getLocaleTextFunc();\n var columnListName = translate('ariaColumnList', 'Column List');\n this.virtualList = this.createManagedBean(new VirtualList('column-select', 'tree', columnListName));\n this.appendChild(this.virtualList.getGui());\n this.virtualList.setComponentCreator(function (item, listItemElement) {\n _.setAriaLevel(listItemElement, (item.getDept() + 1));\n return _this.createComponentFromItem(item, listItemElement);\n });\n if (this.columnModel.isReady()) {\n this.onColumnsChanged();\n }\n if (!params.suppressColumnMove && !this.gridOptionsService.is('suppressMovableColumns')) {\n this.createManagedBean(new PrimaryColsListPanelItemDragFeature(this, this.virtualList));\n }\n };\n PrimaryColsListPanel.prototype.createComponentFromItem = function (item, listItemElement) {\n if (item.isGroup()) {\n var renderedGroup = new ToolPanelColumnGroupComp(item, this.allowDragging, this.eventType, listItemElement);\n this.getContext().createBean(renderedGroup);\n return renderedGroup;\n }\n var columnComp = new ToolPanelColumnComp(item.getColumn(), item.getDept(), this.allowDragging, this.groupsExist, listItemElement);\n this.getContext().createBean(columnComp);\n return columnComp;\n };\n PrimaryColsListPanel.prototype.onColumnsChanged = function () {\n var expandedStates = this.getExpandedStates();\n var pivotModeActive = this.columnModel.isPivotMode();\n var shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n if (shouldSyncColumnLayoutWithGrid) {\n this.buildTreeFromWhatGridIsDisplaying();\n }\n else {\n this.buildTreeFromProvidedColumnDefs();\n }\n this.setExpandedStates(expandedStates);\n this.markFilteredColumns();\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.getDisplayedColsList = function () {\n return this.displayedColsList;\n };\n PrimaryColsListPanel.prototype.getExpandedStates = function () {\n if (!this.allColsTree) {\n return {};\n }\n var res = {};\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n var colGroup = item.getColumnGroup();\n if (colGroup) { // group should always exist, this is defensive\n res[colGroup.getId()] = item.isExpanded();\n }\n });\n return res;\n };\n PrimaryColsListPanel.prototype.setExpandedStates = function (states) {\n if (!this.allColsTree) {\n return;\n }\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n var colGroup = item.getColumnGroup();\n if (colGroup) { // group should always exist, this is defensive\n var expanded = states[colGroup.getId()];\n var groupExistedLastTime = expanded != null;\n if (groupExistedLastTime) {\n item.setExpanded(expanded);\n }\n }\n });\n };\n PrimaryColsListPanel.prototype.buildTreeFromWhatGridIsDisplaying = function () {\n this.colDefService.syncLayoutWithGrid(this.setColumnLayout.bind(this));\n };\n PrimaryColsListPanel.prototype.setColumnLayout = function (colDefs) {\n var columnTree = this.colDefService.createColumnTree(colDefs);\n this.buildListModel(columnTree);\n // using col defs to check if groups exist as it could be a custom layout\n this.groupsExist = colDefs.some(function (colDef) {\n return colDef && typeof colDef.children !== 'undefined';\n });\n this.markFilteredColumns();\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.buildTreeFromProvidedColumnDefs = function () {\n // add column / group comps to tool panel\n this.buildListModel(this.columnModel.getPrimaryColumnTree());\n this.groupsExist = this.columnModel.isPrimaryColumnGroupsPresent();\n };\n PrimaryColsListPanel.prototype.buildListModel = function (columnTree) {\n var _this = this;\n var columnExpandedListener = this.onColumnExpanded.bind(this);\n var addListeners = function (item) {\n item.addEventListener(ColumnModelItem.EVENT_EXPANDED_CHANGED, columnExpandedListener);\n var removeFunc = item.removeEventListener.bind(item, ColumnModelItem.EVENT_EXPANDED_CHANGED, columnExpandedListener);\n _this.destroyColumnItemFuncs.push(removeFunc);\n };\n var recursivelyBuild = function (tree, dept, parentList) {\n tree.forEach(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n createGroupItem(child, dept, parentList);\n }\n else {\n createColumnItem(child, dept, parentList);\n }\n });\n };\n var createGroupItem = function (columnGroup, dept, parentList) {\n var columnGroupDef = columnGroup.getColGroupDef();\n var skipThisGroup = columnGroupDef && columnGroupDef.suppressColumnsToolPanel;\n if (skipThisGroup) {\n return;\n }\n if (columnGroup.isPadding()) {\n recursivelyBuild(columnGroup.getChildren(), dept, parentList);\n return;\n }\n var displayName = _this.columnModel.getDisplayNameForProvidedColumnGroup(null, columnGroup, _this.eventType);\n var item = new ColumnModelItem(displayName, columnGroup, dept, true, _this.expandGroupsByDefault);\n parentList.push(item);\n addListeners(item);\n recursivelyBuild(columnGroup.getChildren(), dept + 1, item.getChildren());\n };\n var createColumnItem = function (column, dept, parentList) {\n var skipThisColumn = column.getColDef() && column.getColDef().suppressColumnsToolPanel;\n if (skipThisColumn) {\n return;\n }\n var displayName = _this.columnModel.getDisplayNameForColumn(column, 'columnToolPanel');\n parentList.push(new ColumnModelItem(displayName, column, dept));\n };\n this.destroyColumnTree();\n recursivelyBuild(columnTree, 0, this.allColsTree);\n };\n PrimaryColsListPanel.prototype.onColumnExpanded = function () {\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.flattenAndFilterModel = function () {\n var _this = this;\n this.displayedColsList = [];\n var recursiveFunc = function (item) {\n if (!item.isPassesFilter()) {\n return;\n }\n _this.displayedColsList.push(item);\n if (item.isGroup() && item.isExpanded()) {\n item.getChildren().forEach(recursiveFunc);\n }\n };\n this.allColsTree.forEach(recursiveFunc);\n this.virtualList.setModel(new UIColumnModel(this.displayedColsList));\n var focusedRow = this.virtualList.getLastFocusedRow();\n this.virtualList.refresh();\n if (focusedRow != null) {\n this.focusRowIfAlive(focusedRow);\n }\n this.notifyListeners();\n };\n PrimaryColsListPanel.prototype.focusRowIfAlive = function (rowIndex) {\n var _this = this;\n window.setTimeout(function () {\n if (_this.isAlive()) {\n _this.virtualList.focusRow(rowIndex);\n }\n }, 0);\n };\n PrimaryColsListPanel.prototype.forEachItem = function (callback) {\n var recursiveFunc = function (items) {\n items.forEach(function (item) {\n callback(item);\n if (item.isGroup()) {\n recursiveFunc(item.getChildren());\n }\n });\n };\n recursiveFunc(this.allColsTree);\n };\n PrimaryColsListPanel.prototype.doSetExpandedAll = function (value) {\n this.forEachItem(function (item) {\n if (item.isGroup()) {\n item.setExpanded(value);\n }\n });\n };\n PrimaryColsListPanel.prototype.setGroupsExpanded = function (expand, groupIds) {\n if (!groupIds) {\n this.doSetExpandedAll(expand);\n return;\n }\n var expandedGroupIds = [];\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n var groupId = item.getColumnGroup().getId();\n if (groupIds.indexOf(groupId) >= 0) {\n item.setExpanded(expand);\n expandedGroupIds.push(groupId);\n }\n });\n var unrecognisedGroupIds = groupIds.filter(function (groupId) { return !_.includes(expandedGroupIds, groupId); });\n if (unrecognisedGroupIds.length > 0) {\n console.warn('AG Grid: unable to find group(s) for supplied groupIds:', unrecognisedGroupIds);\n }\n };\n PrimaryColsListPanel.prototype.getExpandState = function () {\n var expandedCount = 0;\n var notExpandedCount = 0;\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n if (item.isExpanded()) {\n expandedCount++;\n }\n else {\n notExpandedCount++;\n }\n });\n if (expandedCount > 0 && notExpandedCount > 0) {\n return ExpandState.INDETERMINATE;\n }\n if (notExpandedCount > 0) {\n return ExpandState.COLLAPSED;\n }\n return ExpandState.EXPANDED;\n };\n PrimaryColsListPanel.prototype.doSetSelectedAll = function (selectAllChecked) {\n this.modelItemUtils.selectAllChildren(this.allColsTree, selectAllChecked, this.eventType);\n };\n PrimaryColsListPanel.prototype.getSelectionState = function () {\n var checkedCount = 0;\n var uncheckedCount = 0;\n var pivotMode = this.columnModel.isPivotMode();\n this.forEachItem(function (item) {\n if (item.isGroup()) {\n return;\n }\n if (!item.isPassesFilter()) {\n return;\n }\n var column = item.getColumn();\n var colDef = column.getColDef();\n var checked;\n if (pivotMode) {\n var noPivotModeOptionsAllowed = !column.isAllowPivot() && !column.isAllowRowGroup() && !column.isAllowValue();\n if (noPivotModeOptionsAllowed) {\n return;\n }\n checked = column.isValueActive() || column.isPivotActive() || column.isRowGroupActive();\n }\n else {\n if (colDef.lockVisible) {\n return;\n }\n checked = column.isVisible();\n }\n checked ? checkedCount++ : uncheckedCount++;\n });\n if (checkedCount > 0 && uncheckedCount > 0) {\n return undefined;\n }\n return !(checkedCount === 0 || uncheckedCount > 0);\n };\n PrimaryColsListPanel.prototype.setFilterText = function (filterText) {\n this.filterText = _.exists(filterText) ? filterText.toLowerCase() : null;\n this.markFilteredColumns();\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.markFilteredColumns = function () {\n var _this = this;\n var passesFilter = function (item) {\n if (!_.exists(_this.filterText)) {\n return true;\n }\n var displayName = item.getDisplayName();\n return displayName == null || displayName.toLowerCase().indexOf(_this.filterText) !== -1;\n };\n var recursivelyCheckFilter = function (item, parentPasses) {\n var atLeastOneChildPassed = false;\n if (item.isGroup()) {\n var groupPasses_1 = passesFilter(item);\n item.getChildren().forEach(function (child) {\n var childPasses = recursivelyCheckFilter(child, groupPasses_1 || parentPasses);\n if (childPasses) {\n atLeastOneChildPassed = childPasses;\n }\n });\n }\n var filterPasses = (parentPasses || atLeastOneChildPassed) ? true : passesFilter(item);\n item.setPassesFilter(filterPasses);\n return filterPasses;\n };\n this.allColsTree.forEach(function (item) { return recursivelyCheckFilter(item, false); });\n };\n PrimaryColsListPanel.prototype.notifyListeners = function () {\n this.fireGroupExpandedEvent();\n this.fireSelectionChangedEvent();\n };\n PrimaryColsListPanel.prototype.fireGroupExpandedEvent = function () {\n var expandState = this.getExpandState();\n this.dispatchEvent({ type: 'groupExpanded', state: expandState });\n };\n PrimaryColsListPanel.prototype.fireSelectionChangedEvent = function () {\n var selectionState = this.getSelectionState();\n this.dispatchEvent({ type: 'selectionChanged', state: selectionState });\n };\n PrimaryColsListPanel.TEMPLATE = \"<div class=\\\"\" + PRIMARY_COLS_LIST_PANEL_CLASS + \"\\\" role=\\\"presentation\\\"></div>\";\n __decorate$2o([\n Autowired('columnModel')\n ], PrimaryColsListPanel.prototype, \"columnModel\", void 0);\n __decorate$2o([\n Autowired('toolPanelColDefService')\n ], PrimaryColsListPanel.prototype, \"colDefService\", void 0);\n __decorate$2o([\n Autowired('modelItemUtils')\n ], PrimaryColsListPanel.prototype, \"modelItemUtils\", void 0);\n __decorate$2o([\n PreDestroy\n ], PrimaryColsListPanel.prototype, \"destroyColumnTree\", null);\n return PrimaryColsListPanel;\n}(Component));\n\nvar __extends$3c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PivotModePanel = /** @class */ (function (_super) {\n __extends$3c(PivotModePanel, _super);\n function PivotModePanel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PivotModePanel.prototype.createTemplate = function () {\n return /* html */ \"<div class=\\\"ag-pivot-mode-panel\\\">\\n <ag-toggle-button ref=\\\"cbPivotMode\\\" class=\\\"ag-pivot-mode-select\\\"></ag-toggle-button>\\n </div>\";\n };\n PivotModePanel.prototype.init = function () {\n this.setTemplate(this.createTemplate());\n this.cbPivotMode.setValue(this.columnModel.isPivotMode());\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n this.cbPivotMode.setLabel(localeTextFunc('pivotMode', 'Pivot Mode'));\n this.addManagedListener(this.cbPivotMode, AgCheckbox.EVENT_CHANGED, this.onBtPivotMode.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onPivotModeChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n };\n PivotModePanel.prototype.onBtPivotMode = function () {\n var newValue = !!this.cbPivotMode.getValue();\n if (newValue !== this.columnModel.isPivotMode()) {\n this.columnModel.setPivotMode(newValue, \"toolPanelUi\");\n var api = this.gridOptionsService.api;\n if (api) {\n api.refreshHeader();\n }\n }\n };\n PivotModePanel.prototype.onPivotModeChanged = function () {\n var pivotModeActive = this.columnModel.isPivotMode();\n this.cbPivotMode.setValue(pivotModeActive);\n };\n __decorate$2n([\n Autowired('columnModel')\n ], PivotModePanel.prototype, \"columnModel\", void 0);\n __decorate$2n([\n RefSelector('cbPivotMode')\n ], PivotModePanel.prototype, \"cbPivotMode\", void 0);\n __decorate$2n([\n PreConstruct\n ], PivotModePanel.prototype, \"init\", null);\n return PivotModePanel;\n}(Component));\n\nvar __extends$3b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AggregationStage = /** @class */ (function (_super) {\n __extends$3b(AggregationStage, _super);\n function AggregationStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // it's possible to recompute the aggregate without doing the other parts\n // + api.refreshClientSideRowModel('aggregate')\n AggregationStage.prototype.execute = function (params) {\n // if changed path is active, it means we came from a) change detection or b) transaction update.\n // for both of these, if no value columns are present, it means there is nothing to aggregate now\n // and there is no cleanup to be done (as value columns don't change between transactions or change\n // detections). if no value columns and no changed path, means we have to go through all nodes in\n // case we need to clean up agg data from before.\n var noValueColumns = _.missingOrEmpty(this.columnModel.getValueColumns());\n var noUserAgg = !this.getGroupRowAggFunc();\n var changedPathActive = params.changedPath && params.changedPath.isActive();\n if (noValueColumns && noUserAgg && changedPathActive) {\n return;\n }\n var aggDetails = this.createAggDetails(params);\n this.recursivelyCreateAggData(aggDetails);\n };\n AggregationStage.prototype.getGroupRowAggFunc = function () {\n var getGroupRowAgg = this.gridOptionsService.getCallback('getGroupRowAgg');\n if (getGroupRowAgg) {\n return getGroupRowAgg;\n }\n // this is the deprecated way, so provide a proxy to make it compatible\n var groupRowAggNodes = this.gridOptionsService.get('groupRowAggNodes');\n if (groupRowAggNodes) {\n return function (params) { return groupRowAggNodes(params.nodes); };\n }\n };\n AggregationStage.prototype.createAggDetails = function (params) {\n var pivotActive = this.columnModel.isPivotActive();\n var measureColumns = this.columnModel.getValueColumns();\n var pivotColumns = pivotActive ? this.columnModel.getPivotColumns() : [];\n var aggDetails = {\n changedPath: params.changedPath,\n valueColumns: measureColumns,\n pivotColumns: pivotColumns\n };\n return aggDetails;\n };\n AggregationStage.prototype.isSuppressAggFilteredOnly = function () {\n var isGroupAggFiltering = this.gridOptionsService.getGroupAggFiltering() !== undefined;\n return isGroupAggFiltering || this.gridOptionsService.is('suppressAggFilteredOnly');\n };\n AggregationStage.prototype.recursivelyCreateAggData = function (aggDetails) {\n var _this = this;\n // update prop, in case changed since last time\n this.filteredOnly = !this.isSuppressAggFilteredOnly();\n var callback = function (rowNode) {\n var hasNoChildren = !rowNode.hasChildren();\n if (hasNoChildren) {\n // this check is needed for TreeData, in case the node is no longer a child,\n // but it was a child previously.\n if (rowNode.aggData) {\n rowNode.setAggData(null);\n }\n // never agg data for leaf nodes\n return;\n }\n //Optionally prevent the aggregation at the root Node\n //https://ag-grid.atlassian.net/browse/AG-388\n var isRootNode = rowNode.level === -1;\n if (isRootNode) {\n var notPivoting = !_this.columnModel.isPivotMode();\n var suppressAggAtRootLevel = _this.gridOptionsService.is('suppressAggAtRootLevel');\n if (suppressAggAtRootLevel && notPivoting) {\n return;\n }\n }\n _this.aggregateRowNode(rowNode, aggDetails);\n };\n aggDetails.changedPath.forEachChangedNodeDepthFirst(callback, true);\n };\n AggregationStage.prototype.aggregateRowNode = function (rowNode, aggDetails) {\n var measureColumnsMissing = aggDetails.valueColumns.length === 0;\n var pivotColumnsMissing = aggDetails.pivotColumns.length === 0;\n var userFunc = this.getGroupRowAggFunc();\n var aggResult;\n if (userFunc) {\n var params = { nodes: rowNode.childrenAfterFilter };\n aggResult = userFunc(params);\n }\n else if (measureColumnsMissing) {\n aggResult = null;\n }\n else if (pivotColumnsMissing) {\n aggResult = this.aggregateRowNodeUsingValuesOnly(rowNode, aggDetails);\n }\n else {\n aggResult = this.aggregateRowNodeUsingValuesAndPivot(rowNode);\n }\n rowNode.setAggData(aggResult);\n // if we are grouping, then it's possible there is a sibling footer\n // to the group, so update the data here also if there is one\n if (rowNode.sibling) {\n rowNode.sibling.setAggData(aggResult);\n }\n };\n AggregationStage.prototype.aggregateRowNodeUsingValuesAndPivot = function (rowNode) {\n var _this = this;\n var _a;\n var result = {};\n var secondaryColumns = (_a = this.columnModel.getSecondaryColumns()) !== null && _a !== void 0 ? _a : [];\n secondaryColumns.forEach(function (secondaryCol) {\n var _a = secondaryCol.getColDef(), pivotValueColumn = _a.pivotValueColumn, pivotTotalColumnIds = _a.pivotTotalColumnIds, colId = _a.colId, pivotKeys = _a.pivotKeys;\n if (_.exists(pivotTotalColumnIds)) {\n return;\n }\n var keys = pivotKeys !== null && pivotKeys !== void 0 ? pivotKeys : [];\n var values;\n if (rowNode.leafGroup) {\n // lowest level group, get the values from the mapped set\n values = _this.getValuesFromMappedSet(rowNode.childrenMapped, keys, pivotValueColumn);\n }\n else {\n // value columns and pivot columns, non-leaf group\n values = _this.getValuesPivotNonLeaf(rowNode, colId);\n }\n result[colId] = _this.aggregateValues(values, pivotValueColumn.getAggFunc(), pivotValueColumn, rowNode, secondaryCol);\n });\n secondaryColumns.forEach(function (secondaryCol) {\n var _a = secondaryCol.getColDef(), pivotValueColumn = _a.pivotValueColumn, pivotTotalColumnIds = _a.pivotTotalColumnIds, colId = _a.colId;\n if (!_.exists(pivotTotalColumnIds)) {\n return;\n }\n var aggResults = [];\n //retrieve results for colIds associated with this pivot total column\n if (!pivotTotalColumnIds || !pivotTotalColumnIds.length) {\n return;\n }\n pivotTotalColumnIds.forEach(function (currentColId) {\n aggResults.push(result[currentColId]);\n });\n result[colId] = _this.aggregateValues(aggResults, pivotValueColumn.getAggFunc(), pivotValueColumn, rowNode, secondaryCol);\n });\n return result;\n };\n AggregationStage.prototype.aggregateRowNodeUsingValuesOnly = function (rowNode, aggDetails) {\n var _this = this;\n var result = {};\n var changedValueColumns = aggDetails.changedPath.isActive() ?\n aggDetails.changedPath.getValueColumnsForNode(rowNode, aggDetails.valueColumns)\n : aggDetails.valueColumns;\n var notChangedValueColumns = aggDetails.changedPath.isActive() ?\n aggDetails.changedPath.getNotValueColumnsForNode(rowNode, aggDetails.valueColumns)\n : null;\n var values2d = this.getValuesNormal(rowNode, changedValueColumns);\n var oldValues = rowNode.aggData;\n changedValueColumns.forEach(function (valueColumn, index) {\n result[valueColumn.getId()] = _this.aggregateValues(values2d[index], valueColumn.getAggFunc(), valueColumn, rowNode);\n });\n if (notChangedValueColumns && oldValues) {\n notChangedValueColumns.forEach(function (valueColumn) {\n result[valueColumn.getId()] = oldValues[valueColumn.getId()];\n });\n }\n return result;\n };\n AggregationStage.prototype.getValuesPivotNonLeaf = function (rowNode, colId) {\n var values = [];\n rowNode.childrenAfterFilter.forEach(function (node) {\n var value = node.aggData[colId];\n values.push(value);\n });\n return values;\n };\n AggregationStage.prototype.getValuesFromMappedSet = function (mappedSet, keys, valueColumn) {\n var _this = this;\n var mapPointer = mappedSet;\n keys.forEach(function (key) { return (mapPointer = mapPointer ? mapPointer[key] : null); });\n if (!mapPointer) {\n return [];\n }\n var values = [];\n mapPointer.forEach(function (rowNode) {\n var value = _this.valueService.getValue(valueColumn, rowNode);\n values.push(value);\n });\n return values;\n };\n AggregationStage.prototype.getValuesNormal = function (rowNode, valueColumns) {\n // create 2d array, of all values for all valueColumns\n var values = [];\n valueColumns.forEach(function () { return values.push([]); });\n var valueColumnCount = valueColumns.length;\n var nodeList = this.filteredOnly ? rowNode.childrenAfterFilter : rowNode.childrenAfterGroup;\n var rowCount = nodeList.length;\n for (var i = 0; i < rowCount; i++) {\n var childNode = nodeList[i];\n for (var j = 0; j < valueColumnCount; j++) {\n var valueColumn = valueColumns[j];\n // if the row is a group, then it will only have an agg result value,\n // which means valueGetter is never used.\n var value = this.valueService.getValue(valueColumn, childNode);\n values[j].push(value);\n }\n }\n return values;\n };\n AggregationStage.prototype.aggregateValues = function (values, aggFuncOrString, column, rowNode, pivotResultColumn) {\n var aggFunc = typeof aggFuncOrString === 'string' ?\n this.aggFuncService.getAggFunc(aggFuncOrString) :\n aggFuncOrString;\n if (typeof aggFunc !== 'function') {\n console.error(\"AG Grid: unrecognised aggregation function \" + aggFuncOrString);\n return null;\n }\n var aggFuncAny = aggFunc;\n var params = {\n values: values,\n column: column,\n colDef: column ? column.getColDef() : undefined,\n pivotResultColumn: pivotResultColumn,\n rowNode: rowNode,\n data: rowNode ? rowNode.data : undefined,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context,\n }; // the \"as any\" is needed to allow the deprecation warning messages\n return aggFuncAny(params);\n };\n __decorate$2m([\n Autowired('columnModel')\n ], AggregationStage.prototype, \"columnModel\", void 0);\n __decorate$2m([\n Autowired('valueService')\n ], AggregationStage.prototype, \"valueService\", void 0);\n __decorate$2m([\n Autowired('aggFuncService')\n ], AggregationStage.prototype, \"aggFuncService\", void 0);\n __decorate$2m([\n Autowired('gridApi')\n ], AggregationStage.prototype, \"gridApi\", void 0);\n __decorate$2m([\n Autowired('columnApi')\n ], AggregationStage.prototype, \"columnApi\", void 0);\n AggregationStage = __decorate$2m([\n Bean('aggregationStage')\n ], AggregationStage);\n return AggregationStage;\n}(BeanStub));\n\nvar BatchRemover = /** @class */ (function () {\n function BatchRemover() {\n this.allSets = {};\n this.allParents = [];\n }\n BatchRemover.prototype.removeFromChildrenAfterGroup = function (parent, child) {\n var set = this.getSet(parent);\n set.removeFromChildrenAfterGroup[child.id] = true;\n };\n BatchRemover.prototype.isRemoveFromAllLeafChildren = function (parent, child) {\n var set = this.getSet(parent);\n return !!set.removeFromAllLeafChildren[child.id];\n };\n BatchRemover.prototype.preventRemoveFromAllLeafChildren = function (parent, child) {\n var set = this.getSet(parent);\n delete set.removeFromAllLeafChildren[child.id];\n };\n BatchRemover.prototype.removeFromAllLeafChildren = function (parent, child) {\n var set = this.getSet(parent);\n set.removeFromAllLeafChildren[child.id] = true;\n };\n BatchRemover.prototype.getSet = function (parent) {\n if (!this.allSets[parent.id]) {\n this.allSets[parent.id] = {\n removeFromAllLeafChildren: {},\n removeFromChildrenAfterGroup: {}\n };\n this.allParents.push(parent);\n }\n return this.allSets[parent.id];\n };\n BatchRemover.prototype.getAllParents = function () {\n return this.allParents;\n };\n BatchRemover.prototype.flush = function () {\n var _this = this;\n this.allParents.forEach(function (parent) {\n var nodeDetails = _this.allSets[parent.id];\n parent.childrenAfterGroup = parent.childrenAfterGroup.filter(function (child) { return !nodeDetails.removeFromChildrenAfterGroup[child.id]; });\n parent.allLeafChildren = parent.allLeafChildren.filter(function (child) { return !nodeDetails.removeFromAllLeafChildren[child.id]; });\n parent.updateHasChildren();\n if (parent.sibling) {\n parent.sibling.childrenAfterGroup = parent.childrenAfterGroup;\n parent.sibling.allLeafChildren = parent.allLeafChildren;\n }\n });\n this.allSets = {};\n this.allParents.length = 0;\n };\n return BatchRemover;\n}());\n\nvar __extends$3a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$1a = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$I = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$1a(arguments[i]));\n return ar;\n};\nvar GroupStage = /** @class */ (function (_super) {\n __extends$3a(GroupStage, _super);\n function GroupStage() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // we use a sequence variable so that each time we do a grouping, we don't\n // reuse the ids - otherwise the rowRenderer will confuse rowNodes between redraws\n // when it tries to animate between rows.\n _this.groupIdSequence = new NumberSequence();\n return _this;\n }\n GroupStage.prototype.postConstruct = function () {\n this.usingTreeData = this.gridOptionsService.isTreeData();\n if (this.usingTreeData) {\n this.getDataPath = this.gridOptionsService.get('getDataPath');\n }\n };\n GroupStage.prototype.execute = function (params) {\n var details = this.createGroupingDetails(params);\n if (details.transactions) {\n this.handleTransaction(details);\n }\n else {\n var afterColsChanged = params.afterColumnsChanged === true;\n this.shotgunResetEverything(details, afterColsChanged);\n }\n this.positionLeafsAndGroups(params.changedPath);\n this.orderGroups(details.rootNode);\n this.selectableService.updateSelectableAfterGrouping(details.rootNode);\n };\n GroupStage.prototype.positionLeafsAndGroups = function (changedPath) {\n // we don't do group sorting for tree data\n if (this.usingTreeData) {\n return;\n }\n changedPath.forEachChangedNodeDepthFirst(function (group) {\n if (group.childrenAfterGroup) {\n var leafNodes_1 = [];\n var groupNodes_1 = [];\n var unbalancedNode_1;\n group.childrenAfterGroup.forEach(function (row) {\n var _a;\n if (!((_a = row.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n leafNodes_1.push(row);\n }\n else {\n if (row.key === '' && !unbalancedNode_1) {\n unbalancedNode_1 = row;\n }\n else {\n groupNodes_1.push(row);\n }\n }\n });\n if (unbalancedNode_1) {\n groupNodes_1.push(unbalancedNode_1);\n }\n group.childrenAfterGroup = __spread$I(leafNodes_1, groupNodes_1);\n }\n }, false);\n };\n GroupStage.prototype.createGroupingDetails = function (params) {\n var rowNode = params.rowNode, changedPath = params.changedPath, rowNodeTransactions = params.rowNodeTransactions, rowNodeOrder = params.rowNodeOrder;\n var groupedCols = this.usingTreeData ? null : this.columnModel.getRowGroupColumns();\n var details = {\n // someone complained that the parent attribute was causing some change detection\n // to break is some angular add-on - which i never used. taking the parent out breaks\n // a cyclic dependency, hence this flag got introduced.\n includeParents: !this.gridOptionsService.is('suppressParentsInRowNodes'),\n expandByDefault: this.gridOptionsService.getNum('groupDefaultExpanded'),\n groupedCols: groupedCols,\n rootNode: rowNode,\n pivotMode: this.columnModel.isPivotMode(),\n groupedColCount: this.usingTreeData || !groupedCols ? 0 : groupedCols.length,\n rowNodeOrder: rowNodeOrder,\n transactions: rowNodeTransactions,\n // if no transaction, then it's shotgun, changed path would be 'not active' at this point anyway\n changedPath: changedPath\n };\n return details;\n };\n GroupStage.prototype.handleTransaction = function (details) {\n var _this = this;\n details.transactions.forEach(function (tran) {\n // we don't allow batch remover for tree data as tree data uses Filler Nodes,\n // and creating/deleting filler nodes needs to be done alongside the node deleting\n // and moving. if we want to Batch Remover working with tree data then would need\n // to consider how Filler Nodes would be impacted (it's possible that it can be easily\n // modified to work, however for now I don't have the brain energy to work it all out).\n var batchRemover = !_this.usingTreeData ? new BatchRemover() : undefined;\n // the order here of [add, remove, update] needs to be the same as in ClientSideNodeManager,\n // as the order is important when a record with the same id is added and removed in the same\n // transaction.\n if (_.existsAndNotEmpty(tran.remove)) {\n _this.removeNodes(tran.remove, details, batchRemover);\n }\n if (_.existsAndNotEmpty(tran.update)) {\n _this.moveNodesInWrongPath(tran.update, details, batchRemover);\n }\n if (_.existsAndNotEmpty(tran.add)) {\n _this.insertNodes(tran.add, details, false);\n }\n // must flush here, and not allow another transaction to be applied,\n // as each transaction must finish leaving the data in a consistent state.\n if (batchRemover) {\n var parentsWithChildrenRemoved = batchRemover.getAllParents().slice();\n batchRemover.flush();\n _this.removeEmptyGroups(parentsWithChildrenRemoved, details);\n }\n });\n if (details.rowNodeOrder) {\n this.sortChildren(details);\n }\n };\n // this is used when doing delta updates, eg Redux, keeps nodes in right order\n GroupStage.prototype.sortChildren = function (details) {\n details.changedPath.forEachChangedNodeDepthFirst(function (node) {\n if (!node.childrenAfterGroup) {\n return;\n }\n var didSort = _.sortRowNodesByOrder(node.childrenAfterGroup, details.rowNodeOrder);\n if (didSort) {\n details.changedPath.addParentNode(node);\n }\n }, false, true);\n };\n GroupStage.prototype.orderGroups = function (rootNode) {\n // we don't do group sorting for tree data\n if (this.usingTreeData) {\n return;\n }\n var comparator = this.getInitialGroupOrderComparator();\n if (_.exists(comparator)) {\n recursiveSort(rootNode);\n }\n function recursiveSort(rowNode) {\n var doSort = _.exists(rowNode.childrenAfterGroup) &&\n // we only want to sort groups, so we do not sort leafs (a leaf group has leafs as children)\n !rowNode.leafGroup;\n if (doSort) {\n rowNode.childrenAfterGroup.sort(function (nodeA, nodeB) { return comparator({ nodeA: nodeA, nodeB: nodeB }); });\n rowNode.childrenAfterGroup.forEach(function (childNode) { return recursiveSort(childNode); });\n }\n }\n };\n GroupStage.prototype.getInitialGroupOrderComparator = function () {\n var initialGroupOrderComparator = this.gridOptionsService.getCallback('initialGroupOrderComparator');\n if (initialGroupOrderComparator) {\n return initialGroupOrderComparator;\n }\n // this is the deprecated way, so provide a proxy to make it compatible\n var defaultGroupOrderComparator = this.gridOptionsService.get('defaultGroupOrderComparator');\n if (defaultGroupOrderComparator) {\n return function (params) { return defaultGroupOrderComparator(params.nodeA, params.nodeB); };\n }\n };\n GroupStage.prototype.getExistingPathForNode = function (node, details) {\n var res = [];\n // when doing tree data, the node is part of the path,\n // but when doing grid grouping, the node is not part of the path so we start with the parent.\n var pointer = this.usingTreeData ? node : node.parent;\n while (pointer && pointer !== details.rootNode) {\n res.push({\n key: pointer.key,\n rowGroupColumn: pointer.rowGroupColumn,\n field: pointer.field\n });\n pointer = pointer.parent;\n }\n res.reverse();\n return res;\n };\n GroupStage.prototype.moveNodesInWrongPath = function (childNodes, details, batchRemover) {\n var _this = this;\n childNodes.forEach(function (childNode) {\n // we add node, even if parent has not changed, as the data could have\n // changed, hence aggregations will be wrong\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(childNode.parent);\n }\n var infoToKeyMapper = function (item) { return item.key; };\n var oldPath = _this.getExistingPathForNode(childNode, details).map(infoToKeyMapper);\n var newPath = _this.getGroupInfo(childNode, details).map(infoToKeyMapper);\n var nodeInCorrectPath = _.areEqual(oldPath, newPath);\n if (!nodeInCorrectPath) {\n _this.moveNode(childNode, details, batchRemover);\n }\n });\n };\n GroupStage.prototype.moveNode = function (childNode, details, batchRemover) {\n this.removeNodesInStages([childNode], details, batchRemover);\n this.insertOneNode(childNode, details, true, batchRemover);\n // hack - if we didn't do this, then renaming a tree item (ie changing rowNode.key) wouldn't get\n // refreshed into the gui.\n // this is needed to kick off the event that rowComp listens to for refresh. this in turn\n // then will get each cell in the row to refresh - which is what we need as we don't know which\n // columns will be displaying the rowNode.key info.\n childNode.setData(childNode.data);\n // we add both old and new parents to changed path, as both will need to be refreshed.\n // we already added the old parent (in calling method), so just add the new parent here\n if (details.changedPath.isActive()) {\n var newParent = childNode.parent;\n details.changedPath.addParentNode(newParent);\n }\n };\n GroupStage.prototype.removeNodes = function (leafRowNodes, details, batchRemover) {\n this.removeNodesInStages(leafRowNodes, details, batchRemover);\n if (details.changedPath.isActive()) {\n leafRowNodes.forEach(function (rowNode) { return details.changedPath.addParentNode(rowNode.parent); });\n }\n };\n GroupStage.prototype.removeNodesInStages = function (leafRowNodes, details, batchRemover) {\n this.removeNodesFromParents(leafRowNodes, details, batchRemover);\n if (this.usingTreeData) {\n this.postRemoveCreateFillerNodes(leafRowNodes, details);\n // When not TreeData, then removeEmptyGroups is called just before the BatchRemover is flushed.\n // However for TreeData, there is no BatchRemover, so we have to call removeEmptyGroups here.\n var nodeParents = leafRowNodes.map(function (n) { return n.parent; });\n this.removeEmptyGroups(nodeParents, details);\n }\n };\n GroupStage.prototype.forEachParentGroup = function (details, group, callback) {\n var pointer = group;\n while (pointer && pointer !== details.rootNode) {\n callback(pointer);\n pointer = pointer.parent;\n }\n };\n GroupStage.prototype.removeNodesFromParents = function (nodesToRemove, details, provided) {\n var _this = this;\n // this method can be called with BatchRemover as optional. if it is missed, we created a local version\n // and flush it at the end. if one is provided, we add to the provided one and it gets flushed elsewhere.\n var batchRemoverIsLocal = provided == null;\n var batchRemoverToUse = provided ? provided : new BatchRemover();\n nodesToRemove.forEach(function (nodeToRemove) {\n _this.removeFromParent(nodeToRemove, batchRemoverToUse);\n // remove from allLeafChildren. we clear down all parents EXCEPT the Root Node, as\n // the ClientSideNodeManager is responsible for the Root Node.\n _this.forEachParentGroup(details, nodeToRemove.parent, function (parentNode) {\n batchRemoverToUse.removeFromAllLeafChildren(parentNode, nodeToRemove);\n });\n });\n if (batchRemoverIsLocal) {\n batchRemoverToUse.flush();\n }\n };\n GroupStage.prototype.postRemoveCreateFillerNodes = function (nodesToRemove, details) {\n var _this = this;\n nodesToRemove.forEach(function (nodeToRemove) {\n // if not group, and children are present, need to move children to a group.\n // otherwise if no children, we can just remove without replacing.\n var replaceWithGroup = nodeToRemove.hasChildren();\n if (replaceWithGroup) {\n var oldPath = _this.getExistingPathForNode(nodeToRemove, details);\n // because we just removed the userGroup, this will always return new support group\n var newGroupNode_1 = _this.findParentForNode(nodeToRemove, oldPath, details);\n // these properties are the ones that will be incorrect in the newly created group,\n // so copy them from the old childNode\n newGroupNode_1.expanded = nodeToRemove.expanded;\n newGroupNode_1.allLeafChildren = nodeToRemove.allLeafChildren;\n newGroupNode_1.childrenAfterGroup = nodeToRemove.childrenAfterGroup;\n newGroupNode_1.childrenMapped = nodeToRemove.childrenMapped;\n newGroupNode_1.updateHasChildren();\n newGroupNode_1.childrenAfterGroup.forEach(function (rowNode) { return rowNode.parent = newGroupNode_1; });\n }\n });\n };\n GroupStage.prototype.removeEmptyGroups = function (possibleEmptyGroups, details) {\n var _this = this;\n // we do this multiple times, as when we remove groups, that means the parent of just removed\n // group can then be empty. to get around this, if we remove, then we check everything again for\n // newly emptied groups. the max number of times this will execute is the depth of the group tree.\n var checkAgain = true;\n var groupShouldBeRemoved = function (rowNode) {\n // because of the while loop below, it's possible we already moved the node,\n // so double check before trying to remove again.\n var mapKey = _this.getChildrenMappedKey(rowNode.key, rowNode.rowGroupColumn);\n var parentRowNode = rowNode.parent;\n var groupAlreadyRemoved = (parentRowNode && parentRowNode.childrenMapped) ?\n !parentRowNode.childrenMapped[mapKey] : true;\n if (groupAlreadyRemoved) {\n // if not linked, then group was already removed\n return false;\n }\n // if still not removed, then we remove if this group is empty\n return !!rowNode.isEmptyRowGroupNode();\n };\n var _loop_1 = function () {\n checkAgain = false;\n var batchRemover = new BatchRemover();\n possibleEmptyGroups.forEach(function (possibleEmptyGroup) {\n // remove empty groups\n _this.forEachParentGroup(details, possibleEmptyGroup, function (rowNode) {\n if (groupShouldBeRemoved(rowNode)) {\n checkAgain = true;\n _this.removeFromParent(rowNode, batchRemover);\n // we remove selection on filler nodes here, as the selection would not be removed\n // from the RowNodeManager, as filler nodes don't exist on the RowNodeManager\n rowNode.setSelectedParams({ newValue: false, source: 'rowGroupChanged' });\n }\n });\n });\n batchRemover.flush();\n };\n while (checkAgain) {\n _loop_1();\n }\n };\n // removes the node from the parent by:\n // a) removing from childrenAfterGroup (using batchRemover if present, otherwise immediately)\n // b) removing from childrenMapped (immediately)\n // c) setRowTop(null) - as the rowRenderer uses this to know the RowNode is no longer needed\n // d) setRowIndex(null) - as the rowNode will no longer be displayed.\n GroupStage.prototype.removeFromParent = function (child, batchRemover) {\n if (child.parent) {\n if (batchRemover) {\n batchRemover.removeFromChildrenAfterGroup(child.parent, child);\n }\n else {\n _.removeFromArray(child.parent.childrenAfterGroup, child);\n child.parent.updateHasChildren();\n }\n }\n var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (child.parent && child.parent.childrenMapped) {\n child.parent.childrenMapped[mapKey] = undefined;\n }\n // this is important for transition, see rowComp removeFirstPassFuncs. when doing animation and\n // remove, if rowTop is still present, the rowComp thinks it's just moved position.\n child.setRowTop(null);\n child.setRowIndex(null);\n };\n GroupStage.prototype.addToParent = function (child, parent) {\n var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (parent) {\n var children = parent.childrenMapped != null;\n if (children) {\n parent.childrenMapped[mapKey] = child;\n }\n parent.childrenAfterGroup.push(child);\n parent.updateHasChildren();\n }\n };\n GroupStage.prototype.areGroupColsEqual = function (d1, d2) {\n if (d1 == null || d2 == null || d1.pivotMode !== d2.pivotMode) {\n return false;\n }\n return _.areEqual(d1.groupedCols, d2.groupedCols);\n };\n GroupStage.prototype.checkAllGroupDataAfterColsChanged = function (details) {\n var _this = this;\n var recurse = function (rowNodes) {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var isLeafNode = !_this.usingTreeData && !rowNode.group;\n if (isLeafNode) {\n return;\n }\n var groupInfo = {\n field: rowNode.field,\n key: rowNode.key,\n rowGroupColumn: rowNode.rowGroupColumn\n };\n _this.setGroupData(rowNode, groupInfo);\n recurse(rowNode.childrenAfterGroup);\n });\n };\n recurse(details.rootNode.childrenAfterGroup);\n };\n GroupStage.prototype.shotgunResetEverything = function (details, afterColumnsChanged) {\n if (this.noChangeInGroupingColumns(details, afterColumnsChanged)) {\n return;\n }\n // groups are about to get disposed, so need to deselect any that are selected\n this.selectionService.filterFromSelection(function (node) { return node && !node.group; });\n var rootNode = details.rootNode, groupedCols = details.groupedCols;\n // because we are not creating the root node each time, we have the logic\n // here to change leafGroup once.\n // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n rootNode.leafGroup = this.usingTreeData ? false : groupedCols.length === 0;\n // we are doing everything from scratch, so reset childrenAfterGroup and childrenMapped from the rootNode\n rootNode.childrenAfterGroup = [];\n rootNode.childrenMapped = {};\n rootNode.updateHasChildren();\n var sibling = rootNode.sibling;\n if (sibling) {\n sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n sibling.childrenMapped = rootNode.childrenMapped;\n }\n this.insertNodes(rootNode.allLeafChildren, details, false);\n };\n GroupStage.prototype.noChangeInGroupingColumns = function (details, afterColumnsChanged) {\n var noFurtherProcessingNeeded = false;\n var groupDisplayColumns = this.columnModel.getGroupDisplayColumns();\n var newGroupDisplayColIds = groupDisplayColumns ?\n groupDisplayColumns.map(function (c) { return c.getId(); }).join('-') : '';\n if (afterColumnsChanged) {\n // we only need to redo grouping if doing normal grouping (ie not tree data)\n // and the group cols have changed.\n noFurtherProcessingNeeded = this.usingTreeData || this.areGroupColsEqual(details, this.oldGroupingDetails);\n // if the group display cols have changed, then we need to update rowNode.groupData\n // (regardless of tree data or row grouping)\n if (this.oldGroupDisplayColIds !== newGroupDisplayColIds) {\n this.checkAllGroupDataAfterColsChanged(details);\n }\n }\n this.oldGroupingDetails = details;\n this.oldGroupDisplayColIds = newGroupDisplayColIds;\n return noFurtherProcessingNeeded;\n };\n GroupStage.prototype.insertNodes = function (newRowNodes, details, isMove) {\n var _this = this;\n newRowNodes.forEach(function (rowNode) {\n _this.insertOneNode(rowNode, details, isMove);\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(rowNode.parent);\n }\n });\n };\n GroupStage.prototype.insertOneNode = function (childNode, details, isMove, batchRemover) {\n var path = this.getGroupInfo(childNode, details);\n var parentGroup = this.findParentForNode(childNode, path, details, batchRemover);\n if (!parentGroup.group) {\n console.warn(\"AG Grid: duplicate group keys for row data, keys should be unique\", [parentGroup.data, childNode.data]);\n }\n if (this.usingTreeData) {\n this.swapGroupWithUserNode(parentGroup, childNode, isMove);\n }\n else {\n childNode.parent = parentGroup;\n childNode.level = path.length;\n parentGroup.childrenAfterGroup.push(childNode);\n parentGroup.updateHasChildren();\n }\n };\n GroupStage.prototype.findParentForNode = function (childNode, path, details, batchRemover) {\n var _this = this;\n var nextNode = details.rootNode;\n path.forEach(function (groupInfo, level) {\n nextNode = _this.getOrCreateNextNode(nextNode, groupInfo, level, details);\n // node gets added to all group nodes.\n // note: we do not add to rootNode here, as the rootNode is the master list of rowNodes\n if (!(batchRemover === null || batchRemover === void 0 ? void 0 : batchRemover.isRemoveFromAllLeafChildren(nextNode, childNode))) {\n nextNode.allLeafChildren.push(childNode);\n }\n else {\n // if this node is about to be removed, prevent that\n batchRemover === null || batchRemover === void 0 ? void 0 : batchRemover.preventRemoveFromAllLeafChildren(nextNode, childNode);\n }\n });\n return nextNode;\n };\n GroupStage.prototype.swapGroupWithUserNode = function (fillerGroup, userGroup, isMove) {\n userGroup.parent = fillerGroup.parent;\n userGroup.key = fillerGroup.key;\n userGroup.field = fillerGroup.field;\n userGroup.groupData = fillerGroup.groupData;\n userGroup.level = fillerGroup.level;\n // AG-3441 - preserve the existing expanded status of the node if we're moving it, so that\n // you can drag a sub tree from one parent to another without changing its expansion\n if (!isMove) {\n userGroup.expanded = fillerGroup.expanded;\n }\n // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n userGroup.leafGroup = fillerGroup.leafGroup;\n // always null for userGroups, as row grouping is not allowed when doing tree data\n userGroup.rowGroupIndex = fillerGroup.rowGroupIndex;\n userGroup.allLeafChildren = fillerGroup.allLeafChildren;\n userGroup.childrenAfterGroup = fillerGroup.childrenAfterGroup;\n userGroup.childrenMapped = fillerGroup.childrenMapped;\n userGroup.sibling = fillerGroup.sibling;\n userGroup.updateHasChildren();\n this.removeFromParent(fillerGroup);\n userGroup.childrenAfterGroup.forEach(function (rowNode) { return rowNode.parent = userGroup; });\n this.addToParent(userGroup, fillerGroup.parent);\n };\n GroupStage.prototype.getOrCreateNextNode = function (parentGroup, groupInfo, level, details) {\n var key = this.getChildrenMappedKey(groupInfo.key, groupInfo.rowGroupColumn);\n var nextNode = parentGroup.childrenMapped ? parentGroup.childrenMapped[key] : undefined;\n if (!nextNode) {\n nextNode = this.createGroup(groupInfo, parentGroup, level, details);\n // attach the new group to the parent\n this.addToParent(nextNode, parentGroup);\n }\n return nextNode;\n };\n GroupStage.prototype.createGroup = function (groupInfo, parent, level, details) {\n var groupNode = new RowNode(this.beans);\n groupNode.group = true;\n groupNode.field = groupInfo.field;\n groupNode.rowGroupColumn = groupInfo.rowGroupColumn;\n this.setGroupData(groupNode, groupInfo);\n // we put 'row-group-' before the group id, so it doesn't clash with standard row id's. we also use 't-' and 'b-'\n // for top pinned and bottom pinned rows.\n groupNode.id = RowNode.ID_PREFIX_ROW_GROUP + this.groupIdSequence.next();\n groupNode.key = groupInfo.key;\n groupNode.level = level;\n groupNode.leafGroup = this.usingTreeData ? false : level === (details.groupedColCount - 1);\n groupNode.allLeafChildren = [];\n // why is this done here? we are not updating the children count as we go,\n // i suspect this is updated in the filter stage\n groupNode.setAllChildrenCount(0);\n groupNode.rowGroupIndex = this.usingTreeData ? null : level;\n groupNode.childrenAfterGroup = [];\n groupNode.childrenMapped = {};\n groupNode.updateHasChildren();\n groupNode.parent = details.includeParents ? parent : null;\n this.setExpandedInitialValue(details, groupNode);\n if (this.gridOptionsService.is('groupIncludeFooter')) {\n groupNode.createFooter();\n }\n return groupNode;\n };\n GroupStage.prototype.setGroupData = function (groupNode, groupInfo) {\n var _this = this;\n groupNode.groupData = {};\n var groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (col) {\n // newGroup.rowGroupColumn=null when working off GroupInfo, and we always display the group in the group column\n // if rowGroupColumn is present, then it's grid row grouping and we only include if configuration says so\n var displayGroupForCol = _this.usingTreeData || (groupNode.rowGroupColumn ? col.isRowGroupDisplayed(groupNode.rowGroupColumn.getId()) : false);\n if (displayGroupForCol) {\n groupNode.groupData[col.getColId()] = groupInfo.key;\n }\n });\n };\n GroupStage.prototype.getChildrenMappedKey = function (key, rowGroupColumn) {\n if (rowGroupColumn) {\n // grouping by columns\n return rowGroupColumn.getId() + '-' + key;\n }\n // tree data - we don't have rowGroupColumns\n return key;\n };\n GroupStage.prototype.setExpandedInitialValue = function (details, groupNode) {\n // if pivoting the leaf group is never expanded as we do not show leaf rows\n if (details.pivotMode && groupNode.leafGroup) {\n groupNode.expanded = false;\n return;\n }\n // use callback if exists\n var userCallback = this.gridOptionsService.getCallback('isGroupOpenByDefault');\n if (userCallback) {\n var params = {\n rowNode: groupNode,\n field: groupNode.field,\n key: groupNode.key,\n level: groupNode.level,\n rowGroupColumn: groupNode.rowGroupColumn\n };\n groupNode.expanded = userCallback(params) == true;\n return;\n }\n // use expandByDefault if exists\n var expandByDefault = details.expandByDefault;\n if (details.expandByDefault === -1) {\n groupNode.expanded = true;\n return;\n }\n // otherwise\n groupNode.expanded = groupNode.level < expandByDefault;\n };\n GroupStage.prototype.getGroupInfo = function (rowNode, details) {\n if (this.usingTreeData) {\n return this.getGroupInfoFromCallback(rowNode);\n }\n return this.getGroupInfoFromGroupColumns(rowNode, details);\n };\n GroupStage.prototype.getGroupInfoFromCallback = function (rowNode) {\n var keys = this.getDataPath ? this.getDataPath(rowNode.data) : null;\n if (keys === null || keys === undefined || keys.length === 0) {\n _.doOnce(function () { return console.warn(\"AG Grid: getDataPath() should not return an empty path for data\", rowNode.data); }, 'groupStage.getGroupInfoFromCallback');\n }\n var groupInfoMapper = function (key) { return ({ key: key, field: null, rowGroupColumn: null }); };\n return keys ? keys.map(groupInfoMapper) : [];\n };\n GroupStage.prototype.getGroupInfoFromGroupColumns = function (rowNode, details) {\n var _this = this;\n var res = [];\n details.groupedCols.forEach(function (groupCol) {\n var key = _this.valueService.getKeyForNode(groupCol, rowNode);\n var keyExists = key !== null && key !== undefined && key !== '';\n // unbalanced tree and pivot mode don't work together - not because of the grid, it doesn't make\n // mathematical sense as you are building up a cube. so if pivot mode, we put in a blank key where missing.\n // this keeps the tree balanced and hence can be represented as a group.\n var createGroupForEmpty = details.pivotMode || !_this.gridOptionsService.is('groupAllowUnbalanced');\n if (createGroupForEmpty && !keyExists) {\n key = '';\n keyExists = true;\n }\n if (keyExists) {\n var item = {\n key: key,\n field: groupCol.getColDef().field,\n rowGroupColumn: groupCol\n };\n res.push(item);\n }\n });\n return res;\n };\n __decorate$2l([\n Autowired('columnModel')\n ], GroupStage.prototype, \"columnModel\", void 0);\n __decorate$2l([\n Autowired('selectableService')\n ], GroupStage.prototype, \"selectableService\", void 0);\n __decorate$2l([\n Autowired('valueService')\n ], GroupStage.prototype, \"valueService\", void 0);\n __decorate$2l([\n Autowired('beans')\n ], GroupStage.prototype, \"beans\", void 0);\n __decorate$2l([\n Autowired('selectionService')\n ], GroupStage.prototype, \"selectionService\", void 0);\n __decorate$2l([\n PostConstruct\n ], GroupStage.prototype, \"postConstruct\", null);\n GroupStage = __decorate$2l([\n Bean('groupStage')\n ], GroupStage);\n return GroupStage;\n}(BeanStub));\n\nvar __extends$39 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$O = (undefined && undefined.__assign) || function () {\n __assign$O = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$O.apply(this, arguments);\n};\nvar __decorate$2k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$19 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$H = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$19(arguments[i]));\n return ar;\n};\nvar PivotColDefService = /** @class */ (function (_super) {\n __extends$39(PivotColDefService, _super);\n function PivotColDefService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PivotColDefService_1 = PivotColDefService;\n PivotColDefService.prototype.createPivotColumnDefs = function (uniqueValues) {\n // this is passed to the columnModel, to configure the columns and groups we show\n var pivotColumns = this.columnModel.getPivotColumns();\n var valueColumns = this.columnModel.getValueColumns();\n var levelsDeep = pivotColumns.length;\n var pivotColumnGroupDefs = this.recursiveBuildGroup(0, uniqueValues, [], levelsDeep, pivotColumns);\n function extractColDefs(input, arr) {\n if (arr === void 0) { arr = []; }\n input.forEach(function (def) {\n if (def.children !== undefined) {\n extractColDefs(def.children, arr);\n }\n else {\n arr.push(def);\n }\n });\n return arr;\n }\n var pivotColumnDefs = extractColDefs(pivotColumnGroupDefs);\n // additional columns that contain the aggregated total for each value column per row\n this.addRowGroupTotals(pivotColumnGroupDefs, pivotColumnDefs, valueColumns);\n // additional group columns that contain child totals for each collapsed child column / group\n this.addExpandablePivotGroups(pivotColumnGroupDefs, pivotColumnDefs);\n // additional group columns that contain an aggregated total across all child columns\n this.addPivotTotalsToGroups(pivotColumnGroupDefs, pivotColumnDefs);\n // we clone, so the colDefs in pivotColumnsGroupDefs and pivotColumnDefs are not shared. this is so that\n // any changes the user makes (via processSecondaryColumnDefinitions) don't impact the internal aggregations,\n // as these use the col defs also\n var pivotColumnDefsClone = pivotColumnDefs.map(function (colDef) { return _.cloneObject(colDef); });\n return {\n pivotColumnGroupDefs: pivotColumnGroupDefs,\n pivotColumnDefs: pivotColumnDefsClone\n };\n };\n PivotColDefService.prototype.recursiveBuildGroup = function (index, uniqueValue, pivotKeys, maxDepth, primaryPivotColumns) {\n var _this = this;\n var measureColumns = this.columnModel.getValueColumns();\n if (index >= maxDepth) { // Base case - build the measure columns\n return this.buildMeasureCols(pivotKeys);\n }\n // sort by either user provided comparator, or our own one\n var primaryPivotColumnDefs = primaryPivotColumns[index].getColDef();\n var comparator = this.headerNameComparator.bind(this, primaryPivotColumnDefs.pivotComparator);\n // Base case for the compact layout, instead of recursing build the last layer of groups as measure columns instead\n if (measureColumns.length === 1 && this.gridOptionsService.is('removePivotHeaderRowWhenSingleValueColumn') && index === maxDepth - 1) {\n var leafCols_1 = [];\n _.iterateObject(uniqueValue, function (key) {\n var newPivotKeys = __spread$H(pivotKeys, [key]);\n leafCols_1.push(__assign$O(__assign$O({}, _this.createColDef(measureColumns[0], key, newPivotKeys)), { columnGroupShow: 'open' }));\n });\n leafCols_1.sort(comparator);\n return leafCols_1;\n }\n // Recursive case\n var groups = [];\n _.iterateObject(uniqueValue, function (key, value) {\n var newPivotKeys = __spread$H(pivotKeys, [key]);\n groups.push({\n children: _this.recursiveBuildGroup(index + 1, value, newPivotKeys, maxDepth, primaryPivotColumns),\n headerName: key,\n pivotKeys: newPivotKeys,\n columnGroupShow: 'open',\n groupId: _this.generateColumnGroupId(newPivotKeys),\n });\n });\n groups.sort(comparator);\n return groups;\n };\n PivotColDefService.prototype.buildMeasureCols = function (pivotKeys) {\n var _this = this;\n var measureColumns = this.columnModel.getValueColumns();\n if (measureColumns.length === 0) {\n // if no value columns selected, then we insert one blank column, so the user at least sees columns\n // rendered. otherwise the grid would render with no columns (just empty groups) which would give the\n // impression that the grid is broken\n return [this.createColDef(null, '-', pivotKeys)];\n }\n return measureColumns.map(function (measureCol) {\n var columnName = _this.columnModel.getDisplayNameForColumn(measureCol, 'header');\n return __assign$O(__assign$O({}, _this.createColDef(measureCol, columnName, pivotKeys)), { columnGroupShow: 'open' });\n });\n };\n PivotColDefService.prototype.addExpandablePivotGroups = function (pivotColumnGroupDefs, pivotColumnDefs) {\n var _this = this;\n if (this.gridOptionsService.is('suppressExpandablePivotGroups') ||\n this.gridOptionsService.get('pivotColumnGroupTotals')) {\n return;\n }\n var recursivelyAddSubTotals = function (groupDef, currentPivotColumnDefs, acc) {\n var group = groupDef;\n if (group.children) {\n var childAcc_1 = new Map();\n group.children.forEach(function (grp) {\n recursivelyAddSubTotals(grp, currentPivotColumnDefs, childAcc_1);\n });\n var firstGroup_1 = !group.children.some(function (child) { return child.children; });\n _this.columnModel.getValueColumns().forEach(function (valueColumn) {\n var columnName = _this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n var totalColDef = _this.createColDef(valueColumn, columnName, groupDef.pivotKeys);\n totalColDef.pivotTotalColumnIds = childAcc_1.get(valueColumn.getColId());\n totalColDef.columnGroupShow = 'closed';\n totalColDef.aggFunc = valueColumn.getAggFunc();\n if (!firstGroup_1) {\n // add total colDef to group and pivot colDefs array\n var children = groupDef.children;\n children.push(totalColDef);\n currentPivotColumnDefs.push(totalColDef);\n }\n });\n _this.merge(acc, childAcc_1);\n }\n else {\n var def = groupDef;\n // check that value column exists, i.e. aggFunc is supplied\n if (!def.pivotValueColumn) {\n return;\n }\n var pivotValueColId = def.pivotValueColumn.getColId();\n var arr = acc.has(pivotValueColId) ? acc.get(pivotValueColId) : [];\n arr.push(def.colId);\n acc.set(pivotValueColId, arr);\n }\n };\n pivotColumnGroupDefs.forEach(function (groupDef) {\n recursivelyAddSubTotals(groupDef, pivotColumnDefs, new Map());\n });\n };\n PivotColDefService.prototype.addPivotTotalsToGroups = function (pivotColumnGroupDefs, pivotColumnDefs) {\n var _this = this;\n if (!this.gridOptionsService.get('pivotColumnGroupTotals')) {\n return;\n }\n var insertAfter = this.gridOptionsService.get('pivotColumnGroupTotals') === 'after';\n var valueCols = this.columnModel.getValueColumns();\n var aggFuncs = valueCols.map(function (valueCol) { return valueCol.getAggFunc(); });\n // don't add pivot totals if there is less than 1 aggFunc or they are not all the same\n if (!aggFuncs || aggFuncs.length < 1 || !this.sameAggFuncs(aggFuncs)) {\n // console.warn('AG Grid: aborting adding pivot total columns - value columns require same aggFunc');\n return;\n }\n // arbitrarily select a value column to use as a template for pivot columns\n var valueColumn = valueCols[0];\n pivotColumnGroupDefs.forEach(function (groupDef) {\n _this.recursivelyAddPivotTotal(groupDef, pivotColumnDefs, valueColumn, insertAfter);\n });\n };\n PivotColDefService.prototype.recursivelyAddPivotTotal = function (groupDef, pivotColumnDefs, valueColumn, insertAfter) {\n var _this = this;\n var group = groupDef;\n if (!group.children) {\n var def = groupDef;\n return def.colId ? [def.colId] : null;\n }\n var colIds = [];\n // need to recurse children first to obtain colIds used in the aggregation stage\n group.children\n .forEach(function (grp) {\n var childColIds = _this.recursivelyAddPivotTotal(grp, pivotColumnDefs, valueColumn, insertAfter);\n if (childColIds) {\n colIds = colIds.concat(childColIds);\n }\n });\n // only add total colDef if there is more than 1 child node\n if (group.children.length > 1) {\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var headerName = localeTextFunc('pivotColumnGroupTotals', 'Total');\n //create total colDef using an arbitrary value column as a template\n var totalColDef = this.createColDef(valueColumn, headerName, groupDef.pivotKeys, true);\n totalColDef.pivotTotalColumnIds = colIds;\n totalColDef.aggFunc = valueColumn.getAggFunc();\n // add total colDef to group and pivot colDefs array\n var children = groupDef.children;\n insertAfter ? children.push(totalColDef) : children.unshift(totalColDef);\n pivotColumnDefs.push(totalColDef);\n }\n return colIds;\n };\n PivotColDefService.prototype.addRowGroupTotals = function (pivotColumnGroupDefs, pivotColumnDefs, valueColumns) {\n var _this = this;\n if (!this.gridOptionsService.get('pivotRowTotals')) {\n return;\n }\n var insertAfter = this.gridOptionsService.get('pivotRowTotals') === 'after';\n // order of row group totals depends on position\n var valueCols = insertAfter ? valueColumns.slice() : valueColumns.slice().reverse();\n var _loop_1 = function (i) {\n var valueCol = valueCols[i];\n var colIds = [];\n pivotColumnGroupDefs.forEach(function (groupDef) {\n colIds = colIds.concat(_this.extractColIdsForValueColumn(groupDef, valueCol));\n });\n var withGroup = valueCols.length > 1 || !this_1.gridOptionsService.is('removePivotHeaderRowWhenSingleValueColumn');\n this_1.createRowGroupTotal(pivotColumnGroupDefs, pivotColumnDefs, valueCol, colIds, insertAfter, withGroup);\n };\n var this_1 = this;\n for (var i = 0; i < valueCols.length; i++) {\n _loop_1(i);\n }\n };\n PivotColDefService.prototype.extractColIdsForValueColumn = function (groupDef, valueColumn) {\n var _this = this;\n var group = groupDef;\n if (!group.children) {\n var colDef = group;\n return colDef.pivotValueColumn === valueColumn && colDef.colId ? [colDef.colId] : [];\n }\n var colIds = [];\n group.children\n .forEach(function (grp) {\n _this.extractColIdsForValueColumn(grp, valueColumn);\n var childColIds = _this.extractColIdsForValueColumn(grp, valueColumn);\n colIds = colIds.concat(childColIds);\n });\n return colIds;\n };\n PivotColDefService.prototype.createRowGroupTotal = function (parentChildren, pivotColumnDefs, valueColumn, colIds, insertAfter, addGroup) {\n var measureColumns = this.columnModel.getValueColumns();\n var colDef;\n if (measureColumns.length === 0) {\n colDef = this.createColDef(null, '-', []);\n }\n else {\n var columnName = this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n colDef = this.createColDef(valueColumn, columnName, []);\n colDef.pivotTotalColumnIds = colIds;\n }\n colDef.colId = PivotColDefService_1.PIVOT_ROW_TOTAL_PREFIX + colDef.colId;\n pivotColumnDefs.push(colDef);\n var valueGroup = addGroup ? {\n children: [colDef],\n pivotKeys: [],\n groupId: PivotColDefService_1.PIVOT_ROW_TOTAL_PREFIX + \"_pivotGroup_\" + valueColumn.getColId(),\n } : colDef;\n insertAfter ? parentChildren.push(valueGroup) : parentChildren.unshift(valueGroup);\n };\n PivotColDefService.prototype.createColDef = function (valueColumn, headerName, pivotKeys, totalColumn) {\n if (totalColumn === void 0) { totalColumn = false; }\n var colDef = {};\n // This is null when there are no measure columns and we're creating placeholder columns\n if (valueColumn) {\n var colDefToCopy = valueColumn.getColDef();\n Object.assign(colDef, colDefToCopy);\n // even if original column was hidden, we always show the pivot value column, otherwise it would be\n // very confusing for people thinking the pivot is broken\n colDef.hide = false;\n }\n colDef.headerName = headerName;\n colDef.colId = this.generateColumnId(pivotKeys || [], valueColumn && !totalColumn ? valueColumn.getColId() : '');\n // pivot columns repeat over field, so it makes sense to use the unique id instead. For example if you want to\n // assign values to pinned bottom rows using setPinnedBottomRowData the value service will use this colId.\n colDef.field = colDef.colId;\n // this is to support using pinned rows, normally the data will be extracted from the aggData object using the colId\n // however pinned rows still access the data object by field, this prevents values with dots from being treated as complex objects\n colDef.valueGetter = function (params) { var _a; return (_a = params.data) === null || _a === void 0 ? void 0 : _a[params.colDef.field]; };\n colDef.pivotKeys = pivotKeys;\n colDef.pivotValueColumn = valueColumn;\n if (colDef.filter === true) {\n colDef.filter = 'agNumberColumnFilter';\n }\n return colDef;\n };\n PivotColDefService.prototype.sameAggFuncs = function (aggFuncs) {\n if (aggFuncs.length == 1) {\n return true;\n }\n //check if all aggFunc's match\n for (var i = 1; i < aggFuncs.length; i++) {\n if (aggFuncs[i] !== aggFuncs[0]) {\n return false;\n }\n }\n return true;\n };\n PivotColDefService.prototype.headerNameComparator = function (userComparator, a, b) {\n if (userComparator) {\n return userComparator(a.headerName, b.headerName);\n }\n else {\n if (a.headerName && !b.headerName) {\n return 1;\n }\n else if (!a.headerName && b.headerName) {\n return -1;\n }\n // slightly naff here - just to satify typescript\n // really should be &&, but if so ts complains\n // the above if/else checks would deal with either being falsy, so at this stage if either are falsy, both are\n // ..still naff though\n if (!a.headerName || !b.headerName) {\n return 0;\n }\n if (a.headerName < b.headerName) {\n return -1;\n }\n if (a.headerName > b.headerName) {\n return 1;\n }\n return 0;\n }\n };\n PivotColDefService.prototype.merge = function (m1, m2) {\n m2.forEach(function (value, key, map) {\n var existingList = m1.has(key) ? m1.get(key) : [];\n var updatedList = __spread$H(existingList, value);\n m1.set(key, updatedList);\n });\n };\n PivotColDefService.prototype.generateColumnGroupId = function (pivotKeys) {\n var pivotCols = this.columnModel.getPivotColumns().map(function (col) { return col.getColId(); });\n return \"pivotGroup_\" + pivotCols.join('-') + \"_\" + pivotKeys.join('-');\n };\n PivotColDefService.prototype.generateColumnId = function (pivotKeys, measureColumnId) {\n var pivotCols = this.columnModel.getPivotColumns().map(function (col) { return col.getColId(); });\n return \"pivot_\" + pivotCols.join('-') + \"_\" + pivotKeys.join('-') + \"_\" + measureColumnId;\n };\n var PivotColDefService_1;\n PivotColDefService.PIVOT_ROW_TOTAL_PREFIX = 'PivotRowTotal_';\n __decorate$2k([\n Autowired('columnModel')\n ], PivotColDefService.prototype, \"columnModel\", void 0);\n PivotColDefService = PivotColDefService_1 = __decorate$2k([\n Bean('pivotColDefService')\n ], PivotColDefService);\n return PivotColDefService;\n}(BeanStub));\n\nvar __extends$38 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PivotStage = /** @class */ (function (_super) {\n __extends$38(PivotStage, _super);\n function PivotStage() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.uniqueValues = {};\n return _this;\n }\n PivotStage.prototype.execute = function (params) {\n var changedPath = params.changedPath;\n if (this.columnModel.isPivotActive()) {\n this.executePivotOn(changedPath);\n }\n else {\n this.executePivotOff(changedPath);\n }\n };\n PivotStage.prototype.executePivotOff = function (changedPath) {\n this.aggregationColumnsHashLastTime = null;\n this.uniqueValues = {};\n if (this.columnModel.isSecondaryColumnsPresent()) {\n this.columnModel.setSecondaryColumns(null, \"rowModelUpdated\");\n if (changedPath) {\n changedPath.setInactive();\n }\n }\n };\n PivotStage.prototype.executePivotOn = function (changedPath) {\n var uniqueValues = this.bucketUpRowNodes(changedPath);\n var uniqueValuesChanged = this.setUniqueValues(uniqueValues);\n var aggregationColumns = this.columnModel.getValueColumns();\n var aggregationColumnsHash = aggregationColumns.map(function (column) { return column.getId() + \"-\" + column.getColDef().headerName; }).join('#');\n var aggregationFuncsHash = aggregationColumns.map(function (column) { return column.getAggFunc().toString(); }).join('#');\n var aggregationColumnsChanged = this.aggregationColumnsHashLastTime !== aggregationColumnsHash;\n var aggregationFuncsChanged = this.aggregationFuncsHashLastTime !== aggregationFuncsHash;\n this.aggregationColumnsHashLastTime = aggregationColumnsHash;\n this.aggregationFuncsHashLastTime = aggregationFuncsHash;\n var groupColumnsHash = this.columnModel.getRowGroupColumns().map(function (column) { return column.getId(); }).join('#');\n var groupColumnsChanged = groupColumnsHash !== this.groupColumnsHashLastTime;\n this.groupColumnsHashLastTime = groupColumnsHash;\n if (uniqueValuesChanged || aggregationColumnsChanged || groupColumnsChanged || aggregationFuncsChanged) {\n var _a = this.pivotColDefService.createPivotColumnDefs(this.uniqueValues), pivotColumnGroupDefs = _a.pivotColumnGroupDefs, pivotColumnDefs = _a.pivotColumnDefs;\n this.pivotColumnDefs = pivotColumnDefs;\n this.columnModel.setSecondaryColumns(pivotColumnGroupDefs, \"rowModelUpdated\");\n // because the secondary columns have changed, then the aggregation needs to visit the whole\n // tree again, so we make the changedPath not active, to force aggregation to visit all paths.\n if (changedPath) {\n changedPath.setInactive();\n }\n }\n };\n PivotStage.prototype.setUniqueValues = function (newValues) {\n var json1 = JSON.stringify(newValues);\n var json2 = JSON.stringify(this.uniqueValues);\n var uniqueValuesChanged = json1 !== json2;\n // we only continue the below if the unique values are different, as otherwise\n // the result will be the same as the last time we did it\n if (uniqueValuesChanged) {\n this.uniqueValues = newValues;\n return true;\n }\n else {\n return false;\n }\n };\n PivotStage.prototype.bucketUpRowNodes = function (changedPath) {\n var _this = this;\n // accessed from inside inner function\n var uniqueValues = {};\n // ensure childrenMapped is cleared, as if a node has been filtered out it should not have mapped children.\n changedPath.forEachChangedNodeDepthFirst(function (node) {\n if (node.leafGroup) {\n node.childrenMapped = null;\n }\n });\n var recursivelyBucketFilteredChildren = function (node) {\n var _a;\n if (node.leafGroup) {\n _this.bucketRowNode(node, uniqueValues);\n }\n else {\n (_a = node.childrenAfterFilter) === null || _a === void 0 ? void 0 : _a.forEach(recursivelyBucketFilteredChildren);\n }\n };\n changedPath.executeFromRootNode(recursivelyBucketFilteredChildren);\n return uniqueValues;\n };\n PivotStage.prototype.bucketRowNode = function (rowNode, uniqueValues) {\n var pivotColumns = this.columnModel.getPivotColumns();\n if (pivotColumns.length === 0) {\n rowNode.childrenMapped = null;\n }\n else {\n rowNode.childrenMapped = this.bucketChildren(rowNode.childrenAfterFilter, pivotColumns, 0, uniqueValues);\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenMapped = rowNode.childrenMapped;\n }\n };\n PivotStage.prototype.bucketChildren = function (children, pivotColumns, pivotIndex, uniqueValues) {\n var _this = this;\n var mappedChildren = {};\n var pivotColumn = pivotColumns[pivotIndex];\n // map the children out based on the pivot column\n children.forEach(function (child) {\n var key = _this.valueService.getKeyForNode(pivotColumn, child);\n if (_.missing(key)) {\n key = '';\n }\n if (!uniqueValues[key]) {\n uniqueValues[key] = {};\n }\n if (!mappedChildren[key]) {\n mappedChildren[key] = [];\n }\n mappedChildren[key].push(child);\n });\n // if it's the last pivot column, return as is, otherwise go one level further in the map\n if (pivotIndex === pivotColumns.length - 1) {\n return mappedChildren;\n }\n else {\n var result_1 = {};\n _.iterateObject(mappedChildren, function (key, value) {\n result_1[key] = _this.bucketChildren(value, pivotColumns, pivotIndex + 1, uniqueValues[key]);\n });\n return result_1;\n }\n };\n PivotStage.prototype.getPivotColumnDefs = function () {\n return this.pivotColumnDefs;\n };\n __decorate$2j([\n Autowired('valueService')\n ], PivotStage.prototype, \"valueService\", void 0);\n __decorate$2j([\n Autowired('columnModel')\n ], PivotStage.prototype, \"columnModel\", void 0);\n __decorate$2j([\n Autowired('pivotColDefService')\n ], PivotStage.prototype, \"pivotColDefService\", void 0);\n PivotStage = __decorate$2j([\n Bean('pivotStage')\n ], PivotStage);\n return PivotStage;\n}(BeanStub));\n\nvar __extends$37 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// @ts-ignore\nvar AGBigInt = typeof BigInt === 'undefined' ? null : BigInt;\nvar AggFuncService = /** @class */ (function (_super) {\n __extends$37(AggFuncService, _super);\n function AggFuncService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.aggFuncsMap = {};\n _this.initialised = false;\n return _this;\n }\n AggFuncService_1 = AggFuncService;\n AggFuncService.prototype.init = function () {\n if (this.initialised) {\n return;\n }\n this.initialiseWithDefaultAggregations();\n this.addAggFuncs(this.gridOptionsService.get('aggFuncs'));\n };\n AggFuncService.prototype.initialiseWithDefaultAggregations = function () {\n this.aggFuncsMap[AggFuncService_1.AGG_SUM] = aggSum;\n this.aggFuncsMap[AggFuncService_1.AGG_FIRST] = aggFirst;\n this.aggFuncsMap[AggFuncService_1.AGG_LAST] = aggLast;\n this.aggFuncsMap[AggFuncService_1.AGG_MIN] = aggMin;\n this.aggFuncsMap[AggFuncService_1.AGG_MAX] = aggMax;\n this.aggFuncsMap[AggFuncService_1.AGG_COUNT] = aggCount;\n this.aggFuncsMap[AggFuncService_1.AGG_AVG] = aggAvg;\n this.initialised = true;\n };\n AggFuncService.prototype.isAggFuncPossible = function (column, func) {\n var allKeys = this.getFuncNames(column);\n var allowed = _.includes(allKeys, func);\n var funcExists = _.exists(this.aggFuncsMap[func]);\n return allowed && funcExists;\n };\n AggFuncService.prototype.getDefaultAggFunc = function (column) {\n var defaultAgg = column.getColDef().defaultAggFunc;\n if (_.exists(defaultAgg) && this.isAggFuncPossible(column, defaultAgg)) {\n return defaultAgg;\n }\n if (this.isAggFuncPossible(column, AggFuncService_1.AGG_SUM)) {\n return AggFuncService_1.AGG_SUM;\n }\n var allKeys = this.getFuncNames(column);\n return _.existsAndNotEmpty(allKeys) ? allKeys[0] : null;\n };\n AggFuncService.prototype.addAggFuncs = function (aggFuncs) {\n _.iterateObject(aggFuncs, this.addAggFunc.bind(this));\n };\n AggFuncService.prototype.addAggFunc = function (key, aggFunc) {\n this.init();\n this.aggFuncsMap[key] = aggFunc;\n };\n AggFuncService.prototype.getAggFunc = function (name) {\n this.init();\n return this.aggFuncsMap[name];\n };\n AggFuncService.prototype.getFuncNames = function (column) {\n var userAllowedFuncs = column.getColDef().allowedAggFuncs;\n return userAllowedFuncs == null ? Object.keys(this.aggFuncsMap).sort() : userAllowedFuncs;\n };\n AggFuncService.prototype.clear = function () {\n this.aggFuncsMap = {};\n };\n var AggFuncService_1;\n AggFuncService.AGG_SUM = 'sum';\n AggFuncService.AGG_FIRST = 'first';\n AggFuncService.AGG_LAST = 'last';\n AggFuncService.AGG_MIN = 'min';\n AggFuncService.AGG_MAX = 'max';\n AggFuncService.AGG_COUNT = 'count';\n AggFuncService.AGG_AVG = 'avg';\n __decorate$2i([\n PostConstruct\n ], AggFuncService.prototype, \"init\", null);\n AggFuncService = AggFuncService_1 = __decorate$2i([\n Bean('aggFuncService')\n ], AggFuncService);\n return AggFuncService;\n}(BeanStub));\nfunction aggSum(params) {\n var values = params.values;\n var result = null; // the logic ensures that we never combine bigint arithmetic with numbers, but TS is hard to please\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (typeof value === 'number') {\n if (result === null) {\n result = value;\n }\n else {\n if (AGBigInt) {\n result += typeof result === 'number' ? value : AGBigInt(value);\n }\n else {\n result += value;\n }\n }\n }\n else if (typeof value === 'bigint') {\n if (result === null) {\n result = value;\n }\n else {\n result = (typeof result === 'bigint' ? result : AGBigInt(result)) + value;\n }\n }\n }\n return result;\n}\nfunction aggFirst(params) {\n return params.values.length > 0 ? params.values[0] : null;\n}\nfunction aggLast(params) {\n return params.values.length > 0 ? _.last(params.values) : null;\n}\nfunction aggMin(params) {\n var values = params.values;\n var result = null;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if ((typeof value === 'number' || typeof value === 'bigint') && (result === null || result > value)) {\n result = value;\n }\n }\n return result;\n}\nfunction aggMax(params) {\n var values = params.values;\n var result = null;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if ((typeof value === 'number' || typeof value === 'bigint') && (result === null || result < value)) {\n result = value;\n }\n }\n return result;\n}\nfunction aggCount(params) {\n var values = params.values;\n var result = 0;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n // check if the value is from a group, in which case use the group's count\n result += value != null && typeof value.value === 'number' ? value.value : 1;\n }\n return result;\n}\n// the average function is tricky as the multiple levels require weighted averages\n// for the non-leaf node aggregations.\nfunction aggAvg(params) {\n var _a, _b, _c;\n var values = params.values;\n var sum = 0; // the logic ensures that we never combine bigint arithmetic with numbers, but TS is hard to please\n var count = 0;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var currentValue = values[i];\n var valueToAdd = null;\n if (typeof currentValue === 'number' || typeof currentValue === 'bigint') {\n valueToAdd = currentValue;\n count++;\n }\n else if (currentValue != null && (typeof currentValue.value === 'number' || typeof currentValue.value === 'bigint') && typeof currentValue.count === 'number') {\n // we are aggregating groups, so we take the aggregated values to calculated a weighted average\n if (AGBigInt) {\n valueToAdd = currentValue.value * (typeof currentValue.value === 'number' ? currentValue.count : AGBigInt(currentValue.count));\n }\n else {\n valueToAdd = currentValue.value * currentValue.count;\n }\n count += currentValue.count;\n }\n if (typeof valueToAdd === 'number') {\n if (AGBigInt) {\n sum += typeof sum === 'number' ? valueToAdd : AGBigInt(valueToAdd);\n }\n else {\n sum += valueToAdd;\n }\n }\n else if (typeof valueToAdd === 'bigint') {\n sum = (typeof sum === 'bigint' ? sum : AGBigInt(sum)) + valueToAdd;\n }\n }\n var value = null;\n // avoid divide by zero error\n if (count > 0) {\n if (AGBigInt) {\n value = sum / (typeof sum === 'number' ? count : AGBigInt(count));\n }\n else {\n value = sum / count;\n }\n }\n // the previous aggregation data\n var existingAggData = (_b = (_a = params.rowNode) === null || _a === void 0 ? void 0 : _a.aggData) === null || _b === void 0 ? void 0 : _b[(_c = params.column) === null || _c === void 0 ? void 0 : _c.getColId()];\n if (existingAggData && existingAggData.count === count && existingAggData.value === value) {\n // the underlying values haven't changed, return the old object to avoid triggering change detection\n return existingAggData;\n }\n // the result will be an object. when this cell is rendered, only the avg is shown.\n // however when this cell is part of another aggregation, the count is also needed\n // to create a weighted average for the next level.\n return {\n count: count,\n value: value,\n // the grid by default uses toString to render values for an object, so this\n // is a trick to get the default cellRenderer to display the avg value\n toString: function () {\n return typeof this.value === 'number' || typeof this.value === 'bigint' ? this.value.toString() : '';\n },\n // used for sorting\n toNumber: function () {\n return this.value;\n }\n };\n}\n\nvar __extends$36 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DropZoneColumnComp = /** @class */ (function (_super) {\n __extends$36(DropZoneColumnComp, _super);\n function DropZoneColumnComp(column, dragSourceDropTarget, ghost, dropZonePurpose, horizontal) {\n var _this = _super.call(this) || this;\n _this.column = column;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.ghost = ghost;\n _this.dropZonePurpose = dropZonePurpose;\n _this.horizontal = horizontal;\n _this.popupShowing = false;\n return _this;\n }\n DropZoneColumnComp.prototype.init = function () {\n var _this = this;\n this.setTemplate(DropZoneColumnComp.TEMPLATE);\n var eGui = this.getGui();\n var isFunctionsReadOnly = this.gridOptionsService.is('functionsReadOnly');\n this.addElementClasses(eGui);\n this.addElementClasses(this.eDragHandle, 'drag-handle');\n this.addElementClasses(this.eText, 'text');\n this.addElementClasses(this.eButton, 'button');\n this.eDragHandle.appendChild(_.createIconNoSpan('columnDrag', this.gridOptionsService));\n this.eButton.appendChild(_.createIconNoSpan('cancel', this.gridOptionsService));\n this.setupSort();\n this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnDrop');\n this.setupComponents();\n if (!this.ghost && !isFunctionsReadOnly) {\n this.addDragSource();\n }\n this.setupAria();\n this.addManagedListener(this.eventService, Column.EVENT_SORT_CHANGED, function () {\n _this.setupAria();\n });\n this.setupTooltip();\n };\n DropZoneColumnComp.prototype.setupAria = function () {\n var translate = this.localeService.getLocaleTextFunc();\n var _a = this.getColumnAndAggFuncName(), name = _a.name, aggFuncName = _a.aggFuncName;\n var aggSeparator = translate('ariaDropZoneColumnComponentAggFuncSeperator', ' of ');\n var sortDirection = {\n asc: translate('ariaDropZoneColumnComponentSortAscending', 'ascending'),\n desc: translate('ariaDropZoneColumnComponentSortDescending', 'descending'),\n };\n var columnSort = this.column.getSort();\n var isSortSuppressed = this.gridOptionsService.is('rowGroupPanelSuppressSort');\n var ariaInstructions = [\n [\n aggFuncName && \"\" + aggFuncName + aggSeparator,\n name,\n this.isGroupingZone() && !isSortSuppressed && columnSort && \", \" + sortDirection[columnSort]\n ].filter(function (part) { return !!part; }).join(''),\n ];\n var isFunctionsReadOnly = this.gridOptionsService.is('functionsReadOnly');\n if (this.isAggregationZone() && !isFunctionsReadOnly) {\n var aggregationMenuAria = translate('ariaDropZoneColumnValueItemDescription', 'Press ENTER to change the aggregation type');\n ariaInstructions.push(aggregationMenuAria);\n }\n if (this.isGroupingZone() && this.column.getColDef().sortable && !isSortSuppressed) {\n var sortProgressAria = translate('ariaDropZoneColumnGroupItemDescription', 'Press ENTER to sort');\n ariaInstructions.push(sortProgressAria);\n }\n var deleteAria = translate('ariaDropZoneColumnComponentDescription', 'Press DELETE to remove');\n ariaInstructions.push(deleteAria);\n _.setAriaLabel(this.getGui(), ariaInstructions.join('. '));\n };\n DropZoneColumnComp.prototype.setupTooltip = function () {\n var _this = this;\n var refresh = function () {\n var newTooltipText = _this.column.getColDef().headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n DropZoneColumnComp.prototype.setupSort = function () {\n var _this = this;\n var canSort = this.column.getColDef().sortable;\n var isGroupingZone = this.isGroupingZone();\n if (!canSort || !isGroupingZone) {\n return;\n }\n if (!this.gridOptionsService.is('rowGroupPanelSuppressSort')) {\n this.eSortIndicator.setupSort(this.column, true);\n var performSort_1 = function (event) {\n event.preventDefault();\n var sortUsingCtrl = _this.gridOptionsService.get('multiSortKey') === 'ctrl';\n var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n _this.sortController.progressSort(_this.column, multiSort, 'uiColumnSorted');\n };\n this.addGuiEventListener('click', performSort_1);\n this.addGuiEventListener('keydown', function (e) {\n var isEnter = e.key === KeyCode.ENTER;\n if (isEnter && _this.isGroupingZone()) {\n performSort_1(e);\n }\n });\n }\n };\n DropZoneColumnComp.prototype.addDragSource = function () {\n var _this = this;\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n defaultIconName: DragAndDropService.ICON_HIDE,\n getDragItem: function () { return _this.createDragItem(); },\n dragItemName: this.displayName,\n dragSourceDropTarget: this.dragSourceDropTarget\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n DropZoneColumnComp.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n DropZoneColumnComp.prototype.setupComponents = function () {\n this.setTextValue();\n this.setupRemove();\n if (this.ghost) {\n this.addCssClass('ag-column-drop-cell-ghost');\n }\n if (this.isAggregationZone() && !this.gridOptionsService.is('functionsReadOnly')) {\n this.addGuiEventListener('click', this.onShowAggFuncSelection.bind(this));\n }\n };\n DropZoneColumnComp.prototype.setupRemove = function () {\n var _this = this;\n _.setDisplayed(this.eButton, !this.gridOptionsService.is('functionsReadOnly'));\n var agEvent = { type: DropZoneColumnComp.EVENT_COLUMN_REMOVE };\n this.addGuiEventListener('keydown', function (e) {\n var isEnter = e.key === KeyCode.ENTER;\n var isDelete = e.key === KeyCode.DELETE;\n if (isDelete) {\n e.preventDefault();\n _this.dispatchEvent(agEvent);\n }\n if (isEnter && _this.isAggregationZone() && !_this.gridOptionsService.is('functionsReadOnly')) {\n e.preventDefault();\n _this.onShowAggFuncSelection();\n }\n });\n this.addManagedListener(this.eButton, 'click', function (mouseEvent) {\n _this.dispatchEvent(agEvent);\n mouseEvent.stopPropagation();\n });\n var touchListener = new TouchListener(this.eButton);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, function () {\n _this.dispatchEvent(agEvent);\n });\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n };\n DropZoneColumnComp.prototype.getColumnAndAggFuncName = function () {\n var name = this.displayName;\n var aggFuncName = '';\n if (this.isAggregationZone()) {\n var aggFunc = this.column.getAggFunc();\n // if aggFunc is a string, we can use it, but if it's a function, then we swap with 'func'\n var aggFuncString = typeof aggFunc === 'string' ? aggFunc : 'agg';\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n aggFuncName = localeTextFunc(aggFuncString, aggFuncString);\n }\n return { name: name, aggFuncName: aggFuncName };\n };\n DropZoneColumnComp.prototype.setTextValue = function () {\n var _a = this.getColumnAndAggFuncName(), name = _a.name, aggFuncName = _a.aggFuncName;\n var displayValue = this.isAggregationZone() ? aggFuncName + \"(\" + name + \")\" : name;\n var displayValueSanitised = _.escapeString(displayValue);\n this.eText.innerHTML = displayValueSanitised;\n };\n DropZoneColumnComp.prototype.onShowAggFuncSelection = function () {\n var _this = this;\n if (this.popupShowing) {\n return;\n }\n this.popupShowing = true;\n var virtualList = new VirtualList('select-agg-func');\n var rows = this.aggFuncService.getFuncNames(this.column);\n var eGui = this.getGui();\n var virtualListGui = virtualList.getGui();\n virtualList.setModel({\n getRow: function (index) { return rows[index]; },\n getRowCount: function () { return rows.length; }\n });\n this.getContext().createBean(virtualList);\n var ePopup = _.loadTemplate(/* html*/ \"<div class=\\\"ag-select-agg-func-popup\\\"></div>\");\n ePopup.style.top = '0px';\n ePopup.style.left = '0px';\n ePopup.appendChild(virtualListGui);\n // ePopup.style.height = this.gridOptionsService.getAggFuncPopupHeight() + 'px';\n ePopup.style.width = eGui.clientWidth + \"px\";\n var popupHiddenFunc = function () {\n _this.destroyBean(virtualList);\n _this.popupShowing = false;\n eGui.focus();\n };\n var translate = this.localeService.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: ePopup,\n closeOnEsc: true,\n closedCallback: popupHiddenFunc,\n ariaLabel: translate('ariaLabelAggregationFunction', 'Aggregation Function')\n });\n if (addPopupRes) {\n virtualList.setComponentCreator(this.createAggSelect.bind(this, addPopupRes.hideFunc));\n }\n virtualList.addGuiEventListener('keydown', function (e) {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n var row = virtualList.getLastFocusedRow();\n if (row == null) {\n return;\n }\n var comp = virtualList.getComponentAt(row);\n if (comp) {\n comp.selectItem();\n }\n }\n });\n this.popupService.positionPopupByComponent({\n type: 'aggFuncSelect',\n eventSource: eGui,\n ePopup: ePopup,\n keepWithinBounds: true,\n column: this.column,\n position: 'under'\n });\n virtualList.refresh();\n var rowToFocus = rows.findIndex(function (r) { return r === _this.column.getAggFunc(); });\n if (rowToFocus === -1) {\n rowToFocus = 0;\n }\n virtualList.focusRow(rowToFocus);\n };\n DropZoneColumnComp.prototype.createAggSelect = function (hidePopup, value) {\n var _this = this;\n var itemSelected = function () {\n hidePopup();\n if (_this.gridOptionsService.is('functionsPassive')) {\n var event_1 = {\n type: Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST,\n columns: [_this.column],\n aggFunc: value\n };\n _this.eventService.dispatchEvent(event_1);\n }\n else {\n _this.columnModel.setColumnAggFunc(_this.column, value, \"toolPanelDragAndDrop\");\n }\n };\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var aggFuncString = value.toString();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n var comp = new AggItemComp(itemSelected, aggFuncStringTranslated);\n return comp;\n };\n DropZoneColumnComp.prototype.addElementClasses = function (el, suffix) {\n suffix = suffix ? \"-\" + suffix : '';\n var direction = this.horizontal ? 'horizontal' : 'vertical';\n el.classList.add(\"ag-column-drop-cell\" + suffix, \"ag-column-drop-\" + direction + \"-cell\" + suffix);\n };\n DropZoneColumnComp.prototype.isAggregationZone = function () {\n return this.dropZonePurpose === 'aggregation';\n };\n DropZoneColumnComp.prototype.isGroupingZone = function () {\n return this.dropZonePurpose === 'rowGroup';\n };\n DropZoneColumnComp.EVENT_COLUMN_REMOVE = 'columnRemove';\n DropZoneColumnComp.TEMPLATE = \"<span role=\\\"option\\\" tabindex=\\\"0\\\">\\n <span ref=\\\"eDragHandle\\\" class=\\\"ag-drag-handle ag-column-drop-cell-drag-handle\\\" role=\\\"presentation\\\"></span>\\n <span ref=\\\"eText\\\" class=\\\"ag-column-drop-cell-text\\\" aria-hidden=\\\"true\\\"></span>\\n <ag-sort-indicator ref=\\\"eSortIndicator\\\"></ag-sort-indicator>\\n <span ref=\\\"eButton\\\" class=\\\"ag-column-drop-cell-button\\\" role=\\\"presentation\\\"></span>\\n </span>\";\n __decorate$2h([\n Autowired('dragAndDropService')\n ], DropZoneColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate$2h([\n Autowired('columnModel')\n ], DropZoneColumnComp.prototype, \"columnModel\", void 0);\n __decorate$2h([\n Autowired('popupService')\n ], DropZoneColumnComp.prototype, \"popupService\", void 0);\n __decorate$2h([\n Optional('aggFuncService')\n ], DropZoneColumnComp.prototype, \"aggFuncService\", void 0);\n __decorate$2h([\n Autowired('sortController')\n ], DropZoneColumnComp.prototype, \"sortController\", void 0);\n __decorate$2h([\n RefSelector('eText')\n ], DropZoneColumnComp.prototype, \"eText\", void 0);\n __decorate$2h([\n RefSelector('eDragHandle')\n ], DropZoneColumnComp.prototype, \"eDragHandle\", void 0);\n __decorate$2h([\n RefSelector('eButton')\n ], DropZoneColumnComp.prototype, \"eButton\", void 0);\n __decorate$2h([\n RefSelector('eSortIndicator')\n ], DropZoneColumnComp.prototype, \"eSortIndicator\", void 0);\n __decorate$2h([\n PostConstruct\n ], DropZoneColumnComp.prototype, \"init\", null);\n return DropZoneColumnComp;\n}(Component));\nvar AggItemComp = /** @class */ (function (_super) {\n __extends$36(AggItemComp, _super);\n function AggItemComp(itemSelected, value) {\n var _this = _super.call(this, /* html */ \"<div class=\\\"ag-select-agg-func-item\\\"/>\") || this;\n _this.selectItem = itemSelected;\n _this.getGui().innerText = value;\n _this.addGuiEventListener('click', _this.selectItem);\n return _this;\n }\n return AggItemComp;\n}(Component));\n\nvar __extends$35 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$18 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$G = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$18(arguments[i]));\n return ar;\n};\nvar BaseDropZonePanel = /** @class */ (function (_super) {\n __extends$35(BaseDropZonePanel, _super);\n function BaseDropZonePanel(horizontal, dropZonePurpose) {\n var _this = _super.call(this, /* html */ \"<div class=\\\"ag-unselectable\\\" role=\\\"presentation\\\"></div>\") || this;\n _this.horizontal = horizontal;\n _this.dropZonePurpose = dropZonePurpose;\n _this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n _this.guiDestroyFunctions = [];\n _this.childColumnComponents = [];\n _this.resizeEnabled = false;\n _this.addElementClasses(_this.getGui());\n _this.eColumnDropList = document.createElement('div');\n _this.addElementClasses(_this.eColumnDropList, 'list');\n _.setAriaRole(_this.eColumnDropList, 'listbox');\n return _this;\n }\n BaseDropZonePanel.prototype.isHorizontal = function () {\n return this.horizontal;\n };\n BaseDropZonePanel.prototype.toggleResizable = function (resizable) {\n this.positionableFeature.setResizable(resizable ? { bottom: true } : false);\n this.resizeEnabled = resizable;\n };\n BaseDropZonePanel.prototype.setBeans = function (beans) {\n this.beans = beans;\n };\n BaseDropZonePanel.prototype.destroy = function () {\n this.destroyGui();\n _super.prototype.destroy.call(this);\n };\n BaseDropZonePanel.prototype.destroyGui = function () {\n this.guiDestroyFunctions.forEach(function (func) { return func(); });\n this.guiDestroyFunctions.length = 0;\n this.childColumnComponents.length = 0;\n _.clearElement(this.getGui());\n _.clearElement(this.eColumnDropList);\n };\n BaseDropZonePanel.prototype.init = function (params) {\n this.params = params;\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.refreshGui.bind(this));\n this.addManagedPropertyListener('functionsReadOnly', this.refreshGui.bind(this));\n this.setupDropTarget();\n this.positionableFeature = new PositionableFeature(this.getGui(), { minHeight: 100 });\n this.createManagedBean(this.positionableFeature);\n // we don't know if this bean will be initialised before columnModel.\n // if columnModel first, then below will work\n // if columnModel second, then below will put blank in, and then above event gets first when columnModel is set up\n this.refreshGui();\n _.setAriaLabel(this.eColumnDropList, this.getAriaLabel());\n };\n BaseDropZonePanel.prototype.handleKeyDown = function (e) {\n var isVertical = !this.horizontal;\n var isNext = e.key === KeyCode.DOWN;\n var isPrevious = e.key === KeyCode.UP;\n if (!isVertical) {\n var isRtl = this.gridOptionsService.is('enableRtl');\n isNext = (!isRtl && e.key === KeyCode.RIGHT) || (isRtl && e.key === KeyCode.LEFT);\n isPrevious = (!isRtl && e.key === KeyCode.LEFT) || (isRtl && e.key === KeyCode.RIGHT);\n }\n if (!isNext && !isPrevious) {\n return;\n }\n var el = this.focusService.findNextFocusableElement(this.getFocusableElement(), false, isPrevious);\n if (el) {\n e.preventDefault();\n el.focus();\n }\n };\n BaseDropZonePanel.prototype.addElementClasses = function (el, suffix) {\n suffix = suffix ? \"-\" + suffix : '';\n var direction = this.horizontal ? 'horizontal' : 'vertical';\n el.classList.add(\"ag-column-drop\" + suffix, \"ag-column-drop-\" + direction + suffix);\n };\n BaseDropZonePanel.prototype.setupDropTarget = function () {\n this.dropTarget = {\n getContainer: this.getGui.bind(this),\n getIconName: this.getIconName.bind(this),\n onDragging: this.onDragging.bind(this),\n onDragEnter: this.onDragEnter.bind(this),\n onDragLeave: this.onDragLeave.bind(this),\n onDragStop: this.onDragStop.bind(this),\n isInterestedIn: this.isInterestedIn.bind(this)\n };\n this.beans.dragAndDropService.addDropTarget(this.dropTarget);\n };\n BaseDropZonePanel.prototype.isInterestedIn = function (type) {\n // not interested in row drags\n return type === DragSourceType.HeaderCell || type === DragSourceType.ToolPanel;\n };\n BaseDropZonePanel.prototype.checkInsertIndex = function (draggingEvent) {\n var newIndex = this.getNewInsertIndex(draggingEvent);\n // <0 happens when drag is no a direction we are interested in, eg drag is up/down but in horizontal panel\n if (newIndex < 0) {\n return false;\n }\n var changed = newIndex !== this.insertIndex;\n if (changed) {\n this.insertIndex = newIndex;\n }\n return changed;\n };\n BaseDropZonePanel.prototype.getNewInsertIndex = function (draggingEvent) {\n var _this = this;\n var mouseEvent = draggingEvent.event;\n var mouseLocation = this.horizontal ? mouseEvent.clientX : mouseEvent.clientY;\n var boundsList = this.childColumnComponents.map(function (col) { return (col.getGui().getBoundingClientRect()); });\n // find the non-ghost component we're hovering\n var hoveredIndex = boundsList.findIndex(function (rect) { return (_this.horizontal ? (rect.right > mouseLocation && rect.left < mouseLocation) : (rect.top < mouseLocation && rect.bottom > mouseLocation)); });\n // not hovering a non-ghost component\n if (hoveredIndex === -1) {\n var enableRtl = this.beans.gridOptionsService.is('enableRtl');\n // if mouse is below or right of all components then new index should be placed last\n var isLast = boundsList.every(function (rect) { return (mouseLocation > (_this.horizontal ? rect.right : rect.bottom)); });\n if (isLast) {\n return enableRtl && this.horizontal ? 0 : this.childColumnComponents.length;\n }\n // if mouse is above or left of all components, new index is first\n var isFirst = boundsList.every(function (rect) { return (mouseLocation < (_this.horizontal ? rect.left : rect.top)); });\n if (isFirst) {\n return enableRtl && this.horizontal ? this.childColumnComponents.length : 0;\n }\n // must be hovering a ghost, don't change the index\n return this.insertIndex;\n }\n // if the old index is equal to or less than the index of our new target\n // we need to shift right, to insert after rather than before\n if (this.insertIndex <= hoveredIndex) {\n return hoveredIndex + 1;\n }\n return hoveredIndex;\n };\n BaseDropZonePanel.prototype.checkDragStartedBySelf = function (draggingEvent) {\n if (this.state !== BaseDropZonePanel.STATE_NOT_DRAGGING) {\n return;\n }\n this.state = BaseDropZonePanel.STATE_REARRANGE_COLUMNS;\n this.potentialDndColumns = draggingEvent.dragSource.getDragItem().columns || [];\n this.refreshGui();\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n };\n BaseDropZonePanel.prototype.onDragging = function (draggingEvent) {\n this.checkDragStartedBySelf(draggingEvent);\n if (this.checkInsertIndex(draggingEvent)) {\n this.refreshGui();\n }\n };\n BaseDropZonePanel.prototype.onDragEnter = function (draggingEvent) {\n // this will contain all columns that are potential drops\n var dragColumns = draggingEvent.dragSource.getDragItem().columns || [];\n this.state = BaseDropZonePanel.STATE_NEW_COLUMNS_IN;\n // take out columns that are not droppable\n var goodDragColumns = dragColumns.filter(this.isColumnDroppable.bind(this));\n if (goodDragColumns.length > 0) {\n var hideColumnOnExit = this.isRowGroupPanel() && !this.gridOptionsService.is('suppressRowGroupHidesColumns') && !draggingEvent.fromNudge;\n if (hideColumnOnExit) {\n var dragItem = draggingEvent.dragSource.getDragItem();\n var columns = dragItem.columns;\n this.setColumnsVisible(columns, false, \"uiColumnDragged\");\n }\n this.potentialDndColumns = goodDragColumns;\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n }\n };\n BaseDropZonePanel.prototype.setColumnsVisible = function (columns, visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockVisible; });\n this.colModel.setColumnsVisible(allowedCols, visible, source);\n }\n };\n BaseDropZonePanel.prototype.isPotentialDndColumns = function () {\n return _.existsAndNotEmpty(this.potentialDndColumns);\n };\n BaseDropZonePanel.prototype.isRowGroupPanel = function () {\n return this.dropZonePurpose === 'rowGroup';\n };\n BaseDropZonePanel.prototype.onDragLeave = function (draggingEvent) {\n // if the dragging started from us, we remove the group, however if it started\n // some place else, then we don't, as it was only 'asking'\n if (this.state === BaseDropZonePanel.STATE_REARRANGE_COLUMNS) {\n var columns = draggingEvent.dragSource.getDragItem().columns || [];\n this.removeColumns(columns);\n }\n if (this.isPotentialDndColumns()) {\n var showColumnOnExit = this.isRowGroupPanel() && !this.gridOptionsService.is('suppressMakeColumnVisibleAfterUnGroup') && !draggingEvent.fromNudge;\n if (showColumnOnExit) {\n var dragItem = draggingEvent.dragSource.getDragItem();\n this.setColumnsVisible(dragItem.columns, true, \"uiColumnDragged\");\n }\n this.potentialDndColumns = [];\n this.refreshGui();\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n };\n BaseDropZonePanel.prototype.onDragStop = function () {\n if (this.isPotentialDndColumns()) {\n var success = false;\n if (this.state === BaseDropZonePanel.STATE_NEW_COLUMNS_IN) {\n this.addColumns(this.potentialDndColumns);\n success = true;\n }\n else {\n success = this.rearrangeColumns(this.potentialDndColumns);\n }\n this.potentialDndColumns = [];\n // If the function is passive, then we don't refresh, as we assume the client application\n // is going to call setRowGroups / setPivots / setValues at a later point which will then\n // cause a refresh. This gives a nice GUI where the ghost stays until the app has caught\n // up with the changes. However, if there was no change in the order, then we do need to\n // refresh to reset the columns\n if (!this.beans.gridOptionsService.is('functionsPassive') || !success) {\n this.refreshGui();\n }\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n };\n BaseDropZonePanel.prototype.removeColumns = function (columnsToRemove) {\n var newColumnList = this.getExistingColumns().filter(function (col) { return !_.includes(columnsToRemove, col); });\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.addColumns = function (columnsToAdd) {\n if (!columnsToAdd) {\n return;\n }\n var newColumnList = this.getExistingColumns().slice();\n var colsToAddNoDuplicates = columnsToAdd.filter(function (col) { return newColumnList.indexOf(col) < 0; });\n _.insertArrayIntoArray(newColumnList, colsToAddNoDuplicates, this.insertIndex);\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.rearrangeColumns = function (columnsToAdd) {\n var newColumnList = this.getNonGhostColumns().slice();\n _.insertArrayIntoArray(newColumnList, columnsToAdd, this.insertIndex);\n if (_.areEqual(newColumnList, this.getExistingColumns())) {\n return false;\n }\n this.updateColumns(newColumnList);\n return true;\n };\n BaseDropZonePanel.prototype.refreshGui = function () {\n // we reset the scroll position after the refresh.\n // if we don't do this, then the list will always scroll to the top\n // each time we refresh it. this is because part of the refresh empties\n // out the list which sets scroll to zero. so the user could be just\n // reordering the list - we want to prevent the resetting of the scroll.\n // this is relevant for vertical display only (as horizontal has no scroll)\n var scrollTop = this.eColumnDropList.scrollTop;\n var resizeEnabled = this.resizeEnabled;\n var focusedIndex = this.getFocusedItem();\n var alternateElement = this.focusService.findNextFocusableElement();\n if (!alternateElement) {\n alternateElement = this.focusService.findNextFocusableElement(undefined, false, true);\n }\n this.toggleResizable(false);\n this.destroyGui();\n this.addIconAndTitleToGui();\n this.addEmptyMessageToGui();\n this.addColumnsToGui();\n if (!this.isHorizontal()) {\n this.eColumnDropList.scrollTop = scrollTop;\n }\n if (resizeEnabled) {\n this.toggleResizable(resizeEnabled);\n }\n // focus should only be restored when keyboard mode\n // otherwise mouse clicks will cause containers to scroll\n // without no apparent reason.\n if (this.focusService.isKeyboardMode()) {\n this.restoreFocus(focusedIndex, alternateElement);\n }\n };\n BaseDropZonePanel.prototype.getFocusedItem = function () {\n var eGui = this.getGui();\n var activeElement = this.gridOptionsService.getDocument().activeElement;\n if (!eGui.contains(activeElement)) {\n return -1;\n }\n var items = Array.from(eGui.querySelectorAll('.ag-column-drop-cell'));\n return items.indexOf(activeElement);\n };\n BaseDropZonePanel.prototype.restoreFocus = function (index, alternateElement) {\n var eGui = this.getGui();\n var items = Array.from(eGui.querySelectorAll('.ag-column-drop-cell'));\n if (index === -1) {\n return;\n }\n if (items.length === 0) {\n alternateElement.focus();\n }\n var indexToFocus = Math.min(items.length - 1, index);\n var el = items[indexToFocus];\n if (el) {\n el.focus();\n }\n };\n BaseDropZonePanel.prototype.getNonGhostColumns = function () {\n var _this = this;\n var existingColumns = this.getExistingColumns();\n if (this.isPotentialDndColumns()) {\n return existingColumns.filter(function (column) { return !_.includes(_this.potentialDndColumns, column); });\n }\n return existingColumns;\n };\n BaseDropZonePanel.prototype.addColumnsToGui = function () {\n var _this = this;\n var nonGhostColumns = this.getNonGhostColumns();\n var itemsToAddToGui = nonGhostColumns.map(function (column) { return (_this.createColumnComponent(column, false)); });\n if (this.isPotentialDndColumns()) {\n var dndColumns = this.potentialDndColumns.map(function (column) { return (_this.createColumnComponent(column, true)); });\n if (this.insertIndex >= itemsToAddToGui.length) {\n itemsToAddToGui.push.apply(itemsToAddToGui, __spread$G(dndColumns));\n }\n else {\n itemsToAddToGui.splice.apply(itemsToAddToGui, __spread$G([this.insertIndex, 0], dndColumns));\n }\n }\n this.appendChild(this.eColumnDropList);\n itemsToAddToGui.forEach(function (columnComponent, index) {\n if (index > 0) {\n _this.addArrow(_this.eColumnDropList);\n }\n _this.eColumnDropList.appendChild(columnComponent.getGui());\n });\n this.addAriaLabelsToComponents();\n };\n BaseDropZonePanel.prototype.addAriaLabelsToComponents = function () {\n var _this = this;\n this.childColumnComponents.forEach(function (comp, idx) {\n var eGui = comp.getGui();\n _.setAriaPosInSet(eGui, idx + 1);\n _.setAriaSetSize(eGui, _this.childColumnComponents.length);\n });\n };\n BaseDropZonePanel.prototype.createColumnComponent = function (column, ghost) {\n var _this = this;\n var columnComponent = new DropZoneColumnComp(column, this.dropTarget, ghost, this.dropZonePurpose, this.horizontal);\n columnComponent.addEventListener(DropZoneColumnComp.EVENT_COLUMN_REMOVE, this.removeColumns.bind(this, [column]));\n this.beans.context.createBean(columnComponent);\n this.guiDestroyFunctions.push(function () { return _this.destroyBean(columnComponent); });\n if (!ghost) {\n this.childColumnComponents.push(columnComponent);\n }\n return columnComponent;\n };\n BaseDropZonePanel.prototype.addIconAndTitleToGui = function () {\n var eGroupIcon = this.params.icon;\n var eTitleBar = document.createElement('div');\n _.setAriaHidden(eTitleBar, true);\n this.addElementClasses(eTitleBar, 'title-bar');\n this.addElementClasses(eGroupIcon, 'icon');\n this.addOrRemoveCssClass('ag-column-drop-empty', this.isExistingColumnsEmpty());\n eTitleBar.appendChild(eGroupIcon);\n if (!this.horizontal) {\n var eTitle = document.createElement('span');\n this.addElementClasses(eTitle, 'title');\n eTitle.innerHTML = this.params.title;\n eTitleBar.appendChild(eTitle);\n }\n this.appendChild(eTitleBar);\n };\n BaseDropZonePanel.prototype.isExistingColumnsEmpty = function () {\n return this.getExistingColumns().length === 0;\n };\n BaseDropZonePanel.prototype.addEmptyMessageToGui = function () {\n if (!this.isExistingColumnsEmpty() || this.isPotentialDndColumns()) {\n return;\n }\n var eMessage = document.createElement('span');\n eMessage.innerHTML = this.params.emptyMessage;\n this.addElementClasses(eMessage, 'empty-message');\n this.eColumnDropList.appendChild(eMessage);\n };\n BaseDropZonePanel.prototype.addArrow = function (eParent) {\n // only add the arrows if the layout is horizontal\n if (this.horizontal) {\n // for RTL it's a left arrow, otherwise it's a right arrow\n var enableRtl = this.beans.gridOptionsService.is('enableRtl');\n var icon = _.createIconNoSpan(enableRtl ? 'smallLeft' : 'smallRight', this.beans.gridOptionsService);\n this.addElementClasses(icon, 'cell-separator');\n eParent.appendChild(icon);\n }\n };\n BaseDropZonePanel.STATE_NOT_DRAGGING = 'notDragging';\n BaseDropZonePanel.STATE_NEW_COLUMNS_IN = 'newColumnsIn';\n BaseDropZonePanel.STATE_REARRANGE_COLUMNS = 'rearrangeColumns';\n __decorate$2g([\n Autowired('columnModel')\n ], BaseDropZonePanel.prototype, \"colModel\", void 0);\n __decorate$2g([\n Autowired('focusService')\n ], BaseDropZonePanel.prototype, \"focusService\", void 0);\n return BaseDropZonePanel;\n}(Component));\n\nvar __extends$34 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowGroupDropZonePanel = /** @class */ (function (_super) {\n __extends$34(RowGroupDropZonePanel, _super);\n function RowGroupDropZonePanel(horizontal) {\n return _super.call(this, horizontal, 'rowGroup') || this;\n }\n RowGroupDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsService: this.gridOptionsService,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('rowGroupColumnsEmptyMessage', 'Drag here to set row groups');\n var title = localeTextFunc('groups', 'Row Groups');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('rowGroupPanel', this.gridOptionsService, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.refreshGui.bind(this));\n };\n RowGroupDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.localeService.getLocaleTextFunc();\n var label = translate('ariaRowGroupDropZonePanelLabel', 'Row Groups');\n return label;\n };\n RowGroupDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'rowGroupColumnsList';\n return res;\n };\n RowGroupDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsService.is('functionsReadOnly') || !column.isPrimary()) {\n return false;\n }\n return column.isAllowRowGroup() && !column.isRowGroupActive();\n };\n RowGroupDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsService.is('functionsPassive')) {\n var event_1 = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnModel.setRowGroupColumns(columns, \"toolPanelUi\");\n }\n };\n RowGroupDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_GROUP : DragAndDropService.ICON_NOT_ALLOWED;\n };\n RowGroupDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getRowGroupColumns();\n };\n __decorate$2f([\n Autowired('columnModel')\n ], RowGroupDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate$2f([\n Autowired('loggerFactory')\n ], RowGroupDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate$2f([\n Autowired('dragAndDropService')\n ], RowGroupDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate$2f([\n PostConstruct\n ], RowGroupDropZonePanel.prototype, \"passBeansUp\", null);\n return RowGroupDropZonePanel;\n}(BaseDropZonePanel));\n\nvar __extends$33 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PivotDropZonePanel = /** @class */ (function (_super) {\n __extends$33(PivotDropZonePanel, _super);\n function PivotDropZonePanel(horizontal) {\n return _super.call(this, horizontal, 'pivot') || this;\n }\n PivotDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsService: this.gridOptionsService,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('pivotColumnsEmptyMessage', 'Drag here to set column labels');\n var title = localeTextFunc('pivots', 'Column Labels');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('pivotPanel', this.gridOptionsService, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.refresh.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refresh.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.checkVisibility.bind(this));\n this.refresh();\n };\n PivotDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.localeService.getLocaleTextFunc();\n var label = translate('ariaPivotDropZonePanelLabel', 'Column Labels');\n return label;\n };\n PivotDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'pivotColumnsList';\n return res;\n };\n PivotDropZonePanel.prototype.refresh = function () {\n this.checkVisibility();\n this.refreshGui();\n };\n PivotDropZonePanel.prototype.checkVisibility = function () {\n var pivotMode = this.columnModel.isPivotMode();\n if (this.isHorizontal()) {\n // what we do for horizontal (ie the pivot panel at the top) depends\n // on the user property as well as pivotMode.\n switch (this.gridOptionsService.get('pivotPanelShow')) {\n case 'always':\n this.setDisplayed(pivotMode);\n break;\n case 'onlyWhenPivoting':\n var pivotActive = this.columnModel.isPivotActive();\n this.setDisplayed(pivotMode && pivotActive);\n break;\n default:\n // never show it\n this.setDisplayed(false);\n break;\n }\n }\n else {\n // in toolPanel, the pivot panel is always shown when pivot mode is on\n this.setDisplayed(pivotMode);\n }\n };\n PivotDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsService.is('functionsReadOnly') || !column.isPrimary()) {\n return false;\n }\n return column.isAllowPivot() && !column.isPivotActive();\n };\n PivotDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsService.is('functionsPassive')) {\n var event_1 = {\n type: Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnModel.setPivotColumns(columns, \"toolPanelUi\");\n }\n };\n PivotDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_PIVOT : DragAndDropService.ICON_NOT_ALLOWED;\n };\n PivotDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getPivotColumns();\n };\n __decorate$2e([\n Autowired('columnModel')\n ], PivotDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate$2e([\n Autowired('loggerFactory')\n ], PivotDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate$2e([\n Autowired('dragAndDropService')\n ], PivotDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate$2e([\n PostConstruct\n ], PivotDropZonePanel.prototype, \"passBeansUp\", null);\n return PivotDropZonePanel;\n}(BaseDropZonePanel));\n\nvar __extends$32 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridHeaderDropZones = /** @class */ (function (_super) {\n __extends$32(GridHeaderDropZones, _super);\n function GridHeaderDropZones() {\n return _super.call(this) || this;\n }\n GridHeaderDropZones.prototype.postConstruct = function () {\n this.setGui(this.createNorthPanel());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onRowGroupChanged.bind(this));\n this.addManagedPropertyListener('rowGroupPanelShow', this.onRowGroupChanged.bind(this));\n this.onRowGroupChanged();\n };\n GridHeaderDropZones.prototype.createNorthPanel = function () {\n var topPanelGui = document.createElement('div');\n var dropPanelVisibleListener = this.onDropPanelVisible.bind(this);\n topPanelGui.classList.add('ag-column-drop-wrapper');\n _.setAriaRole(topPanelGui, 'presentation');\n this.rowGroupComp = new RowGroupDropZonePanel(true);\n this.createManagedBean(this.rowGroupComp);\n this.pivotComp = new PivotDropZonePanel(true);\n this.createManagedBean(this.pivotComp);\n topPanelGui.appendChild(this.rowGroupComp.getGui());\n topPanelGui.appendChild(this.pivotComp.getGui());\n this.addManagedListener(this.rowGroupComp, Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.addManagedListener(this.pivotComp, Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.onDropPanelVisible();\n return topPanelGui;\n };\n GridHeaderDropZones.prototype.onDropPanelVisible = function () {\n var bothDisplayed = this.rowGroupComp.isDisplayed() && this.pivotComp.isDisplayed();\n this.rowGroupComp.addOrRemoveCssClass('ag-column-drop-horizontal-half-width', bothDisplayed);\n this.pivotComp.addOrRemoveCssClass('ag-column-drop-horizontal-half-width', bothDisplayed);\n };\n GridHeaderDropZones.prototype.onRowGroupChanged = function () {\n if (!this.rowGroupComp) {\n return;\n }\n var rowGroupPanelShow = this.gridOptionsService.get('rowGroupPanelShow');\n if (rowGroupPanelShow === 'always') {\n this.rowGroupComp.setDisplayed(true);\n }\n else if (rowGroupPanelShow === 'onlyWhenGrouping') {\n var grouping = !this.columnModel.isRowGroupEmpty();\n this.rowGroupComp.setDisplayed(grouping);\n }\n else {\n this.rowGroupComp.setDisplayed(false);\n }\n };\n __decorate$2d([\n Autowired('columnModel')\n ], GridHeaderDropZones.prototype, \"columnModel\", void 0);\n __decorate$2d([\n PostConstruct\n ], GridHeaderDropZones.prototype, \"postConstruct\", null);\n return GridHeaderDropZones;\n}(Component));\n\nvar __extends$31 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterAggregatesStage = /** @class */ (function (_super) {\n __extends$31(FilterAggregatesStage, _super);\n function FilterAggregatesStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterAggregatesStage.prototype.execute = function (params) {\n var _this = this;\n var isPivotMode = this.columnModel.isPivotMode();\n var isAggFilterActive = this.filterManager.isAggregateFilterPresent();\n // This is the default filter for applying only to leaf nodes, realistically this should not apply as primary agg columns,\n // should not be applied by the filterManager if getGroupAggFiltering is missing. Predicate will apply filters to leaf level.\n var defaultPrimaryColumnPredicate = function (params) { return !params.node.group; };\n // Default secondary column predicate, selecting only leaf level groups.\n var defaultSecondaryColumnPredicate = (function (params) { return params.node.leafGroup; });\n // The predicate to determine whether filters should apply to this row. Either defined by the user in groupAggFiltering or a default depending\n // on current pivot mode status.\n var applyFilterToNode = this.gridOptionsService.getGroupAggFiltering()\n || (isPivotMode ? defaultSecondaryColumnPredicate : defaultPrimaryColumnPredicate);\n var changedPath = params.changedPath;\n var preserveChildren = function (node, recursive) {\n if (recursive === void 0) { recursive = false; }\n if (node.childrenAfterFilter) {\n node.childrenAfterAggFilter = node.childrenAfterFilter;\n if (recursive) {\n node.childrenAfterAggFilter.forEach(function (child) { return preserveChildren(child, recursive); });\n }\n _this.setAllChildrenCount(node);\n }\n if (node.sibling) {\n node.sibling.childrenAfterAggFilter = node.childrenAfterAggFilter;\n }\n };\n var filterChildren = function (node) {\n var _a;\n node.childrenAfterAggFilter = ((_a = node.childrenAfterFilter) === null || _a === void 0 ? void 0 : _a.filter(function (child) {\n var _a;\n var shouldFilterRow = applyFilterToNode({ node: child });\n if (shouldFilterRow) {\n var doesNodePassFilter = _this.filterManager.doesRowPassAggregateFilters({ rowNode: child });\n if (doesNodePassFilter) {\n // Node has passed, so preserve children\n preserveChildren(child, true);\n return true;\n }\n }\n var hasChildPassed = (_a = child.childrenAfterAggFilter) === null || _a === void 0 ? void 0 : _a.length;\n return hasChildPassed;\n })) || null;\n _this.setAllChildrenCount(node);\n if (node.sibling) {\n node.sibling.childrenAfterAggFilter = node.childrenAfterAggFilter;\n }\n };\n changedPath.forEachChangedNodeDepthFirst(isAggFilterActive ? filterChildren : preserveChildren, true);\n };\n FilterAggregatesStage.prototype.setAllChildrenCountTreeData = function (rowNode) {\n // for tree data, we include all children, groups and leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterAggFilter.forEach(function (child) {\n // include child itself\n allChildrenCount++;\n // include children of children\n allChildrenCount += child.allChildrenCount;\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterAggregatesStage.prototype.setAllChildrenCountGridGrouping = function (rowNode) {\n // for grid data, we only count the leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterAggFilter.forEach(function (child) {\n if (child.group) {\n allChildrenCount += child.allChildrenCount;\n }\n else {\n allChildrenCount++;\n }\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterAggregatesStage.prototype.setAllChildrenCount = function (rowNode) {\n if (!rowNode.hasChildren()) {\n rowNode.setAllChildrenCount(null);\n return;\n }\n if (this.gridOptionsService.isTreeData()) {\n this.setAllChildrenCountTreeData(rowNode);\n }\n else {\n this.setAllChildrenCountGridGrouping(rowNode);\n }\n };\n __decorate$2c([\n Autowired('filterManager')\n ], FilterAggregatesStage.prototype, \"filterManager\", void 0);\n __decorate$2c([\n Autowired('columnModel')\n ], FilterAggregatesStage.prototype, \"columnModel\", void 0);\n FilterAggregatesStage = __decorate$2c([\n Bean('filterAggregatesStage')\n ], FilterAggregatesStage);\n return FilterAggregatesStage;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$g = '29.3.5';\n\nvar __extends$30 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupFilter = /** @class */ (function (_super) {\n __extends$30(GroupFilter, _super);\n function GroupFilter() {\n return _super.call(this, /* html */ \"\\n <div class=\\\"ag-group-filter\\\">\\n <div ref=\\\"eGroupField\\\"></div>\\n <div ref=\\\"eUnderlyingFilter\\\"></div>\\n </div>\\n \") || this;\n }\n GroupFilter.prototype.postConstruct = function () {\n this.initialiseTabGuard({});\n };\n GroupFilter.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n this.validateParams();\n return this.updateGroups().then(function () {\n _this.addManagedListener(_this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.onColumnRowGroupChanged(); });\n });\n };\n GroupFilter.prototype.validateParams = function () {\n var colDef = this.params.colDef;\n if (colDef.field) {\n _.doOnce(function () { return console.warn('AG Grid: Group Column Filter does not work with the colDef property \"field\". This property will be ignored.'); }, 'groupFilterFieldParam');\n }\n if (colDef.filterValueGetter) {\n _.doOnce(function () { return console.warn('AG Grid: Group Column Filter does not work with the colDef property \"filterValueGetter\". This property will be ignored.'); }, 'groupFilterFilterValueGetterParam');\n }\n if (colDef.filterParams) {\n _.doOnce(function () { return console.warn('AG Grid: Group Column Filter does not work with the colDef property \"filterParams\". This property will be ignored.'); }, 'groupFilterFilterParams');\n }\n };\n GroupFilter.prototype.updateGroups = function () {\n var sourceColumns = this.updateGroupField();\n return this.getUnderlyingFilters(sourceColumns);\n };\n GroupFilter.prototype.getSourceColumns = function () {\n this.groupColumn = this.params.column;\n if (this.gridOptionsService.is('treeData')) {\n _.doOnce(function () { return console.warn('AG Grid: Group Column Filter does not work with Tree Data enabled. Please disable Tree Data, or use a different filter.'); }, 'groupFilterTreeData');\n return [];\n }\n var sourceColumns = this.columnModel.getSourceColumnsForGroupColumn(this.groupColumn);\n if (!sourceColumns) {\n _.doOnce(function () { return console.warn('AG Grid: Group Column Filter only works on group columns. Please use a different filter.'); }, 'groupFilterNotGroupColumn');\n return [];\n }\n return sourceColumns;\n };\n GroupFilter.prototype.updateGroupField = function () {\n var _this = this;\n _.clearElement(this.eGroupField);\n if (this.eGroupFieldSelect) {\n this.destroyBean(this.eGroupFieldSelect);\n }\n var allSourceColumns = this.getSourceColumns();\n var sourceColumns = allSourceColumns.filter(function (sourceColumn) { return sourceColumn.isFilterAllowed(); });\n if (!sourceColumns.length) {\n this.selectedColumn = undefined;\n _.setDisplayed(this.eGroupField, false);\n return null;\n }\n if (allSourceColumns.length === 1) {\n // we only want to hide the group field element if there's only one group column.\n // If there's one group column that has a filter, but multiple columns in total,\n // we should still show the select so the user knows which column it's for.\n this.selectedColumn = sourceColumns[0];\n _.setDisplayed(this.eGroupField, false);\n }\n else {\n // keep the old selected column if it's still valid\n if (!this.selectedColumn || !sourceColumns.some(function (column) { return column.getId() === _this.selectedColumn.getId(); })) {\n this.selectedColumn = sourceColumns[0];\n }\n this.createGroupFieldSelectElement(sourceColumns);\n this.eGroupField.appendChild(this.eGroupFieldSelect.getGui());\n this.eGroupField.appendChild(_.loadTemplate(/* html */ \"<div class=\\\"ag-filter-separator\\\"></div>\"));\n _.setDisplayed(this.eGroupField, true);\n }\n return sourceColumns;\n };\n GroupFilter.prototype.createGroupFieldSelectElement = function (sourceColumns) {\n var _this = this;\n this.eGroupFieldSelect = this.createManagedBean(new AgSelect());\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n this.eGroupFieldSelect.setLabel(localeTextFunc('groupFilterSelect', 'Select field:'));\n this.eGroupFieldSelect.setLabelAlignment('top');\n this.eGroupFieldSelect.addOptions(sourceColumns.map(function (sourceColumn) {\n var _a;\n return ({\n value: sourceColumn.getId(),\n text: (_a = _this.columnModel.getDisplayNameForColumn(sourceColumn, 'groupFilter', false)) !== null && _a !== void 0 ? _a : undefined\n });\n }));\n this.eGroupFieldSelect.setValue(this.selectedColumn.getId());\n this.eGroupFieldSelect.onValueChange(function (newValue) { return _this.updateSelectedColumn(newValue); });\n this.eGroupFieldSelect.addCssClass('ag-group-filter-field-select-wrapper');\n if (sourceColumns.length === 1) {\n this.eGroupFieldSelect.setDisabled(true);\n }\n };\n GroupFilter.prototype.getUnderlyingFilters = function (sourceColumns) {\n var _this = this;\n if (!sourceColumns) {\n this.filterColumnPairs = undefined;\n this.selectedFilter = undefined;\n this.groupColumn.setFilterActive(false, 'columnRowGroupChanged');\n return AgPromise.resolve();\n }\n var filterPromises = [];\n var filterColumnPairs = [];\n sourceColumns.forEach(function (column) {\n var filterWrapper = _this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');\n if (filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.filterPromise) {\n filterPromises.push(filterWrapper.filterPromise.then(function (filter) {\n if (filter) {\n filterColumnPairs.push({\n filter: filter,\n column: column\n });\n }\n if (column.getId() === _this.selectedColumn.getId()) {\n _this.selectedFilter = filter !== null && filter !== void 0 ? filter : undefined;\n }\n return filter;\n }));\n }\n });\n return AgPromise.all(filterPromises).then(function () {\n _this.filterColumnPairs = filterColumnPairs;\n _this.groupColumn.setFilterActive(_this.isFilterActive(), 'columnRowGroupChanged');\n });\n };\n GroupFilter.prototype.addUnderlyingFilterElement = function () {\n var _this = this;\n _.clearElement(this.eUnderlyingFilter);\n if (!this.selectedColumn) {\n return AgPromise.resolve();\n }\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.selectedColumn, 'COLUMN_MENU');\n if (!filterWrapper) {\n return AgPromise.resolve();\n }\n return filterWrapper.guiPromise.then(function (gui) {\n var _a;\n _this.eUnderlyingFilter.appendChild(gui);\n (_a = filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.then(function (filter) {\n var _a, _b;\n (_a = filter === null || filter === void 0 ? void 0 : filter.afterGuiAttached) === null || _a === void 0 ? void 0 : _a.call(filter, _this.afterGuiAttachedParams);\n if (!((_b = _this.afterGuiAttachedParams) === null || _b === void 0 ? void 0 : _b.suppressFocus) && _this.eGroupFieldSelect && !_this.eGroupFieldSelect.isDisabled()) {\n _this.eGroupFieldSelect.getFocusableElement().focus();\n }\n });\n });\n };\n GroupFilter.prototype.updateSelectedColumn = function (columnId) {\n var _a, _b;\n if (!columnId) {\n return;\n }\n (_b = (_a = this.selectedFilter) === null || _a === void 0 ? void 0 : _a.afterGuiDetached) === null || _b === void 0 ? void 0 : _b.call(_a);\n var selectedFilterColumnPair = this.getFilterColumnPair(columnId);\n this.selectedColumn = selectedFilterColumnPair === null || selectedFilterColumnPair === void 0 ? void 0 : selectedFilterColumnPair.column;\n this.selectedFilter = selectedFilterColumnPair === null || selectedFilterColumnPair === void 0 ? void 0 : selectedFilterColumnPair.filter;\n this.dispatchEvent({\n type: GroupFilter.EVENT_SELECTED_COLUMN_CHANGED\n });\n this.addUnderlyingFilterElement();\n };\n GroupFilter.prototype.isFilterActive = function () {\n var _a;\n return !!((_a = this.filterColumnPairs) === null || _a === void 0 ? void 0 : _a.some(function (_a) {\n var filter = _a.filter;\n return filter.isFilterActive();\n }));\n };\n GroupFilter.prototype.doesFilterPass = function () {\n return true;\n };\n GroupFilter.prototype.getModel = function () {\n return null;\n };\n GroupFilter.prototype.setModel = function () {\n return AgPromise.resolve();\n };\n GroupFilter.prototype.afterGuiAttached = function (params) {\n this.afterGuiAttachedParams = params;\n this.addUnderlyingFilterElement();\n };\n GroupFilter.prototype.afterGuiDetached = function () {\n var _a, _b;\n _.clearElement(this.eUnderlyingFilter);\n (_b = (_a = this.selectedFilter) === null || _a === void 0 ? void 0 : _a.afterGuiDetached) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n GroupFilter.prototype.onColumnRowGroupChanged = function () {\n var _this = this;\n this.updateGroups().then(function () {\n _this.dispatchEvent({\n type: GroupFilter.EVENT_COLUMN_ROW_GROUP_CHANGED\n });\n _this.eventService.dispatchEvent({\n type: 'filterAllowedUpdated'\n });\n });\n };\n GroupFilter.prototype.getFilterColumnPair = function (columnId) {\n var _a;\n if (!columnId) {\n return undefined;\n }\n return (_a = this.filterColumnPairs) === null || _a === void 0 ? void 0 : _a.find(function (_a) {\n var column = _a.column;\n return column.getId() === columnId;\n });\n };\n GroupFilter.prototype.getSelectedFilter = function () {\n return this.selectedFilter;\n };\n GroupFilter.prototype.getSelectedColumn = function () {\n return this.selectedColumn;\n };\n GroupFilter.prototype.isFilterAllowed = function () {\n return !!this.selectedColumn;\n };\n GroupFilter.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n GroupFilter.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n GroupFilter.EVENT_SELECTED_COLUMN_CHANGED = 'selectedColumnChanged';\n __decorate$2b([\n Autowired('filterManager')\n ], GroupFilter.prototype, \"filterManager\", void 0);\n __decorate$2b([\n Autowired('columnModel')\n ], GroupFilter.prototype, \"columnModel\", void 0);\n __decorate$2b([\n RefSelector('eGroupField')\n ], GroupFilter.prototype, \"eGroupField\", void 0);\n __decorate$2b([\n RefSelector('eUnderlyingFilter')\n ], GroupFilter.prototype, \"eUnderlyingFilter\", void 0);\n __decorate$2b([\n PostConstruct\n ], GroupFilter.prototype, \"postConstruct\", null);\n return GroupFilter;\n}(TabGuardComp));\n\nvar __extends$2$ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupFloatingFilterComp = /** @class */ (function (_super) {\n __extends$2$(GroupFloatingFilterComp, _super);\n function GroupFloatingFilterComp() {\n return _super.call(this, /* html */ \"\\n <div ref=\\\"eFloatingFilter\\\" class=\\\"ag-group-floating-filter ag-floating-filter-input\\\" role=\\\"presentation\\\"></div>\\n \") || this;\n }\n GroupFloatingFilterComp.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n // we only support showing the underlying floating filter for multiple group columns\n var canShowUnderlyingFloatingFilter = this.gridOptionsService.get('groupDisplayType') === 'multipleColumns';\n return new AgPromise(function (resolve) {\n _this.params.parentFilterInstance(function (parentFilterInstance) {\n _this.parentFilterInstance = parentFilterInstance;\n if (canShowUnderlyingFloatingFilter) {\n _this.setupUnderlyingFloatingFilterElement().then(function () { return resolve(); });\n }\n else {\n _this.setupReadOnlyFloatingFilterElement();\n resolve();\n }\n });\n }).then(function () {\n _this.addManagedListener(_this.parentFilterInstance, GroupFilter.EVENT_SELECTED_COLUMN_CHANGED, function () { return _this.onSelectedColumnChanged(); });\n _this.addManagedListener(_this.parentFilterInstance, GroupFilter.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.onColumnRowGroupChanged(); });\n });\n };\n GroupFloatingFilterComp.prototype.setupReadOnlyFloatingFilterElement = function () {\n var _this = this;\n if (!this.eFloatingFilterText) {\n this.eFloatingFilterText = this.createManagedBean(new AgInputTextField());\n var displayName = this.columnModel.getDisplayNameForColumn(this.params.column, 'header', true);\n var translate = this.localeService.getLocaleTextFunc();\n this.eFloatingFilterText\n .setDisabled(true)\n .setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input'))\n .addGuiEventListener('click', function () { return _this.params.showParentFilter(); });\n }\n this.updateDisplayedValue();\n this.eFloatingFilter.appendChild(this.eFloatingFilterText.getGui());\n };\n GroupFloatingFilterComp.prototype.setupUnderlyingFloatingFilterElement = function () {\n var _this = this;\n this.showingUnderlyingFloatingFilter = false;\n this.underlyingFloatingFilter = undefined;\n _.clearElement(this.eFloatingFilter);\n var column = this.parentFilterInstance.getSelectedColumn();\n // we can only show the underlying filter if there is one instance (e.g. the underlying column is not visible)\n if (column && !column.isVisible()) {\n var compDetails = this.filterManager.getFloatingFilterCompDetails(column, this.params.showParentFilter);\n if (compDetails) {\n if (!this.columnVisibleChangedListener) {\n this.columnVisibleChangedListener = this.addManagedListener(column, Column.EVENT_VISIBLE_CHANGED, this.onColumnVisibleChanged.bind(this));\n }\n return compDetails.newAgStackInstance().then(function (floatingFilter) {\n var _a, _b;\n _this.underlyingFloatingFilter = floatingFilter;\n (_a = _this.underlyingFloatingFilter) === null || _a === void 0 ? void 0 : _a.onParentModelChanged((_b = _this.parentFilterInstance.getSelectedFilter()) === null || _b === void 0 ? void 0 : _b.getModel());\n _this.appendChild(floatingFilter.getGui());\n _this.showingUnderlyingFloatingFilter = true;\n });\n }\n }\n // fallback to the read-only version\n this.setupReadOnlyFloatingFilterElement();\n return AgPromise.resolve();\n };\n GroupFloatingFilterComp.prototype.onColumnVisibleChanged = function () {\n this.setupUnderlyingFloatingFilterElement();\n };\n GroupFloatingFilterComp.prototype.onParentModelChanged = function (_model, event) {\n var _a, _b;\n if (this.showingUnderlyingFloatingFilter) {\n (_a = this.underlyingFloatingFilter) === null || _a === void 0 ? void 0 : _a.onParentModelChanged((_b = this.parentFilterInstance.getSelectedFilter()) === null || _b === void 0 ? void 0 : _b.getModel(), event);\n }\n else {\n this.updateDisplayedValue();\n }\n };\n GroupFloatingFilterComp.prototype.updateDisplayedValue = function () {\n if (!this.parentFilterInstance || !this.eFloatingFilterText) {\n return;\n }\n var selectedFilter = this.parentFilterInstance.getSelectedFilter();\n if (!selectedFilter) {\n this.eFloatingFilterText.setValue('');\n this.eFloatingFilterText.setDisplayed(false);\n return;\n }\n this.eFloatingFilterText.setDisplayed(true);\n if (selectedFilter.getModelAsString) {\n var filterModel = selectedFilter.getModel();\n this.eFloatingFilterText.setValue(filterModel == null ? '' : selectedFilter.getModelAsString(filterModel));\n }\n else {\n this.eFloatingFilterText.setValue('');\n }\n };\n GroupFloatingFilterComp.prototype.onSelectedColumnChanged = function () {\n if (!this.showingUnderlyingFloatingFilter) {\n this.updateDisplayedValue();\n }\n };\n GroupFloatingFilterComp.prototype.onColumnRowGroupChanged = function () {\n if (!this.showingUnderlyingFloatingFilter) {\n this.updateDisplayedValue();\n }\n };\n GroupFloatingFilterComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate$2a([\n Autowired('columnModel')\n ], GroupFloatingFilterComp.prototype, \"columnModel\", void 0);\n __decorate$2a([\n Autowired('filterManager')\n ], GroupFloatingFilterComp.prototype, \"filterManager\", void 0);\n __decorate$2a([\n RefSelector('eFloatingFilter')\n ], GroupFloatingFilterComp.prototype, \"eFloatingFilter\", void 0);\n return GroupFloatingFilterComp;\n}(Component));\n\nvar RowGroupingModule = {\n version: VERSION$g,\n moduleName: ModuleNames.RowGroupingModule,\n beans: [AggregationStage, FilterAggregatesStage, GroupStage, PivotColDefService, PivotStage, AggFuncService],\n agStackComponents: [\n { componentName: 'AgGridHeaderDropZones', componentClass: GridHeaderDropZones }\n ],\n userComponents: [\n { componentName: 'agGroupColumnFilter', componentClass: GroupFilter },\n { componentName: 'agGroupColumnFloatingFilter', componentClass: GroupFloatingFilterComp },\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\nvar __extends$2_ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$29 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValuesDropZonePanel = /** @class */ (function (_super) {\n __extends$2_(ValuesDropZonePanel, _super);\n function ValuesDropZonePanel(horizontal) {\n return _super.call(this, horizontal, 'aggregation') || this;\n }\n ValuesDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsService: this.gridOptionsService,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('valueColumnsEmptyMessage', 'Drag here to aggregate');\n var title = localeTextFunc('values', 'Values');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_AGGREGATE,\n icon: _.createIconNoSpan('valuePanel', this.gridOptionsService, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshGui.bind(this));\n };\n ValuesDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.localeService.getLocaleTextFunc();\n var label = translate('ariaValuesDropZonePanelLabel', 'Values');\n return label;\n };\n ValuesDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'valueColumnsList';\n return res;\n };\n ValuesDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_AGGREGATE : DragAndDropService.ICON_NOT_ALLOWED;\n };\n ValuesDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsService.is('functionsReadOnly') || !column.isPrimary()) {\n return false;\n }\n return column.isAllowValue() && !column.isValueActive();\n };\n ValuesDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsService.is('functionsPassive')) {\n var event_1 = {\n type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnModel.setValueColumns(columns, \"toolPanelUi\");\n }\n };\n ValuesDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getValueColumns();\n };\n __decorate$29([\n Autowired('columnModel')\n ], ValuesDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate$29([\n Autowired('loggerFactory')\n ], ValuesDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate$29([\n Autowired('dragAndDropService')\n ], ValuesDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate$29([\n PostConstruct\n ], ValuesDropZonePanel.prototype, \"passBeansUp\", null);\n return ValuesDropZonePanel;\n}(BaseDropZonePanel));\n\nvar __extends$2Z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$28 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PrimaryColsPanel = /** @class */ (function (_super) {\n __extends$2Z(PrimaryColsPanel, _super);\n function PrimaryColsPanel() {\n return _super.call(this, PrimaryColsPanel.TEMPLATE) || this;\n }\n // we allow dragging in the toolPanel, but not when this component appears in the column menu\n PrimaryColsPanel.prototype.init = function (allowDragging, params, eventType) {\n this.allowDragging = allowDragging;\n this.params = params;\n this.eventType = eventType;\n this.primaryColsHeaderPanel.init(this.params);\n var hideFilter = this.params.suppressColumnFilter;\n var hideSelect = this.params.suppressColumnSelectAll;\n var hideExpand = this.params.suppressColumnExpandAll;\n if (hideExpand && hideFilter && hideSelect) {\n this.primaryColsHeaderPanel.setDisplayed(false);\n }\n this.addManagedListener(this.primaryColsListPanel, 'groupExpanded', this.onGroupExpanded.bind(this));\n this.addManagedListener(this.primaryColsListPanel, 'selectionChanged', this.onSelectionChange.bind(this));\n this.primaryColsListPanel.init(this.params, this.allowDragging, this.eventType);\n this.addManagedListener(this.primaryColsHeaderPanel, 'expandAll', this.onExpandAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'collapseAll', this.onCollapseAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'selectAll', this.onSelectAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'unselectAll', this.onUnselectAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'filterChanged', this.onFilterChanged.bind(this));\n this.positionableFeature = new PositionableFeature(this.getGui(), { minHeight: 100 });\n this.createManagedBean(this.positionableFeature);\n };\n PrimaryColsPanel.prototype.toggleResizable = function (resizable) {\n this.positionableFeature.setResizable(resizable ? { bottom: true } : false);\n };\n PrimaryColsPanel.prototype.onExpandAll = function () {\n this.primaryColsListPanel.doSetExpandedAll(true);\n };\n PrimaryColsPanel.prototype.onCollapseAll = function () {\n this.primaryColsListPanel.doSetExpandedAll(false);\n };\n PrimaryColsPanel.prototype.expandGroups = function (groupIds) {\n this.primaryColsListPanel.setGroupsExpanded(true, groupIds);\n };\n PrimaryColsPanel.prototype.collapseGroups = function (groupIds) {\n this.primaryColsListPanel.setGroupsExpanded(false, groupIds);\n };\n PrimaryColsPanel.prototype.setColumnLayout = function (colDefs) {\n this.primaryColsListPanel.setColumnLayout(colDefs);\n };\n PrimaryColsPanel.prototype.onFilterChanged = function (event) {\n this.primaryColsListPanel.setFilterText(event.filterText);\n };\n PrimaryColsPanel.prototype.syncLayoutWithGrid = function () {\n this.primaryColsListPanel.onColumnsChanged();\n };\n PrimaryColsPanel.prototype.onSelectAll = function () {\n this.primaryColsListPanel.doSetSelectedAll(true);\n };\n PrimaryColsPanel.prototype.onUnselectAll = function () {\n this.primaryColsListPanel.doSetSelectedAll(false);\n };\n PrimaryColsPanel.prototype.onGroupExpanded = function (event) {\n this.primaryColsHeaderPanel.setExpandState(event.state);\n };\n PrimaryColsPanel.prototype.onSelectionChange = function (event) {\n this.primaryColsHeaderPanel.setSelectionState(event.state);\n };\n PrimaryColsPanel.TEMPLATE = \"<div class=\\\"ag-column-select\\\">\\n <ag-primary-cols-header ref=\\\"primaryColsHeaderPanel\\\"></ag-primary-cols-header>\\n <ag-primary-cols-list ref=\\\"primaryColsListPanel\\\"></ag-primary-cols-list>\\n </div>\";\n __decorate$28([\n RefSelector('primaryColsHeaderPanel')\n ], PrimaryColsPanel.prototype, \"primaryColsHeaderPanel\", void 0);\n __decorate$28([\n RefSelector('primaryColsListPanel')\n ], PrimaryColsPanel.prototype, \"primaryColsListPanel\", void 0);\n return PrimaryColsPanel;\n}(Component));\n\nvar __extends$2Y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$N = (undefined && undefined.__assign) || function () {\n __assign$N = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$N.apply(this, arguments);\n};\nvar __decorate$27 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnToolPanel = /** @class */ (function (_super) {\n __extends$2Y(ColumnToolPanel, _super);\n function ColumnToolPanel() {\n var _this = _super.call(this, ColumnToolPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.childDestroyFuncs = [];\n return _this;\n }\n // lazy initialise the panel\n ColumnToolPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n ColumnToolPanel.prototype.init = function (params) {\n var _this = this;\n var defaultParams = {\n suppressColumnMove: false,\n suppressColumnSelectAll: false,\n suppressColumnFilter: false,\n suppressColumnExpandAll: false,\n contractColumnSelection: false,\n suppressPivotMode: false,\n suppressRowGroups: false,\n suppressValues: false,\n suppressPivots: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi,\n columnApi: this.columnApi,\n };\n this.params = __assign$N(__assign$N(__assign$N({}, defaultParams), params), { context: this.gridOptionsService.context });\n if (this.isRowGroupingModuleLoaded() && !this.params.suppressPivotMode) {\n // DO NOT CHANGE TO createManagedBean\n this.pivotModePanel = this.createBean(new PivotModePanel());\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.pivotModePanel); });\n this.appendChild(this.pivotModePanel);\n }\n // DO NOT CHANGE TO createManagedBean\n this.primaryColsPanel = this.createBean(new PrimaryColsPanel());\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.primaryColsPanel); });\n this.primaryColsPanel.init(true, this.params, \"toolPanelUi\");\n this.primaryColsPanel.addCssClass('ag-column-panel-column-select');\n this.appendChild(this.primaryColsPanel);\n if (this.isRowGroupingModuleLoaded()) {\n if (!this.params.suppressRowGroups) {\n // DO NOT CHANGE TO createManagedBean\n this.rowGroupDropZonePanel = this.createBean(new RowGroupDropZonePanel(false));\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.rowGroupDropZonePanel); });\n this.appendChild(this.rowGroupDropZonePanel);\n }\n if (!this.params.suppressValues) {\n // DO NOT CHANGE TO createManagedBean\n this.valuesDropZonePanel = this.createBean(new ValuesDropZonePanel(false));\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.valuesDropZonePanel); });\n this.appendChild(this.valuesDropZonePanel);\n }\n if (!this.params.suppressPivots) {\n // DO NOT CHANGE TO createManagedBean\n this.pivotDropZonePanel = this.createBean(new PivotDropZonePanel(false));\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.pivotDropZonePanel); });\n this.appendChild(this.pivotDropZonePanel);\n }\n this.setLastVisible();\n var pivotModeListener_1 = this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function () {\n _this.resetChildrenHeight();\n _this.setLastVisible();\n });\n this.childDestroyFuncs.push(function () { return pivotModeListener_1(); });\n }\n this.initialised = true;\n };\n ColumnToolPanel.prototype.setPivotModeSectionVisible = function (visible) {\n var _this = this;\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.pivotModePanel) {\n this.pivotModePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.pivotModePanel = this.createBean(new PivotModePanel());\n // ensure pivot mode panel is positioned at the top of the columns tool panel\n this.getGui().insertBefore(this.pivotModePanel.getGui(), this.getGui().firstChild);\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.pivotModePanel); });\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setRowGroupsSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.rowGroupDropZonePanel) {\n this.rowGroupDropZonePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.rowGroupDropZonePanel = this.createManagedBean(new RowGroupDropZonePanel(false));\n this.appendChild(this.rowGroupDropZonePanel);\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setValuesSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.valuesDropZonePanel) {\n this.valuesDropZonePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.valuesDropZonePanel = this.createManagedBean(new ValuesDropZonePanel(false));\n this.appendChild(this.valuesDropZonePanel);\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setPivotSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.pivotDropZonePanel) {\n this.pivotDropZonePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.pivotDropZonePanel = this.createManagedBean(new PivotDropZonePanel(false));\n this.appendChild(this.pivotDropZonePanel);\n this.pivotDropZonePanel.setDisplayed(visible);\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setResizers = function () {\n [\n this.primaryColsPanel,\n this.rowGroupDropZonePanel,\n this.valuesDropZonePanel,\n this.pivotDropZonePanel\n ].forEach(function (panel) {\n if (!panel) {\n return;\n }\n var eGui = panel.getGui();\n panel.toggleResizable(!eGui.classList.contains('ag-last-column-drop') && !eGui.classList.contains('ag-hidden'));\n });\n };\n ColumnToolPanel.prototype.setLastVisible = function () {\n var eGui = this.getGui();\n var columnDrops = Array.prototype.slice.call(eGui.querySelectorAll('.ag-column-drop'));\n columnDrops.forEach(function (columnDrop) { return columnDrop.classList.remove('ag-last-column-drop'); });\n var columnDropEls = eGui.querySelectorAll('.ag-column-drop:not(.ag-hidden)');\n var lastVisible = _.last(columnDropEls);\n if (lastVisible) {\n lastVisible.classList.add('ag-last-column-drop');\n }\n this.setResizers();\n };\n ColumnToolPanel.prototype.resetChildrenHeight = function () {\n var eGui = this.getGui();\n var children = eGui.children;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n child.style.removeProperty('height');\n child.style.removeProperty('flex');\n }\n };\n ColumnToolPanel.prototype.isRowGroupingModuleLoaded = function () {\n return ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Row Grouping');\n };\n ColumnToolPanel.prototype.expandColumnGroups = function (groupIds) {\n this.primaryColsPanel.expandGroups(groupIds);\n };\n ColumnToolPanel.prototype.collapseColumnGroups = function (groupIds) {\n this.primaryColsPanel.collapseGroups(groupIds);\n };\n ColumnToolPanel.prototype.setColumnLayout = function (colDefs) {\n this.primaryColsPanel.setColumnLayout(colDefs);\n };\n ColumnToolPanel.prototype.syncLayoutWithGrid = function () {\n this.primaryColsPanel.syncLayoutWithGrid();\n };\n ColumnToolPanel.prototype.destroyChildren = function () {\n this.childDestroyFuncs.forEach(function (func) { return func(); });\n this.childDestroyFuncs.length = 0;\n _.clearElement(this.getGui());\n };\n ColumnToolPanel.prototype.refresh = function () {\n this.destroyChildren();\n this.init(this.params);\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so this must be public.\n ColumnToolPanel.prototype.destroy = function () {\n this.destroyChildren();\n _super.prototype.destroy.call(this);\n };\n ColumnToolPanel.TEMPLATE = \"<div class=\\\"ag-column-panel\\\"></div>\";\n __decorate$27([\n Autowired(\"gridApi\")\n ], ColumnToolPanel.prototype, \"gridApi\", void 0);\n __decorate$27([\n Autowired(\"columnApi\")\n ], ColumnToolPanel.prototype, \"columnApi\", void 0);\n return ColumnToolPanel;\n}(Component));\n\nvar __extends$2X = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$26 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HorizontalResizeComp = /** @class */ (function (_super) {\n __extends$2X(HorizontalResizeComp, _super);\n function HorizontalResizeComp() {\n var _this = _super.call(this, /* html */ \"<div class=\\\"ag-tool-panel-horizontal-resize\\\"></div>\") || this;\n _this.minWidth = 100;\n _this.maxWidth = null;\n return _this;\n }\n HorizontalResizeComp.prototype.setElementToResize = function (elementToResize) {\n this.elementToResize = elementToResize;\n };\n HorizontalResizeComp.prototype.postConstruct = function () {\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.getGui(),\n dragStartPixels: 1,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this),\n onResizeEnd: this.onResizeEnd.bind(this)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n this.setInverted(this.gridOptionsService.is('enableRtl'));\n };\n HorizontalResizeComp.prototype.dispatchResizeEvent = function (start, end, width) {\n var event = {\n type: Events.EVENT_TOOL_PANEL_SIZE_CHANGED,\n width: width,\n started: start,\n ended: end,\n };\n this.eventService.dispatchEvent(event);\n };\n HorizontalResizeComp.prototype.onResizeStart = function () {\n this.startingWidth = this.elementToResize.offsetWidth;\n this.dispatchResizeEvent(true, false, this.startingWidth);\n };\n HorizontalResizeComp.prototype.onResizeEnd = function (delta) {\n return this.onResizing(delta, true);\n };\n HorizontalResizeComp.prototype.onResizing = function (delta, isEnd) {\n if (isEnd === void 0) { isEnd = false; }\n var direction = this.inverted ? -1 : 1;\n var newWidth = Math.max(this.minWidth, Math.floor(this.startingWidth - (delta * direction)));\n if (this.maxWidth != null) {\n newWidth = Math.min(this.maxWidth, newWidth);\n }\n this.elementToResize.style.width = newWidth + \"px\";\n this.dispatchResizeEvent(false, isEnd, newWidth);\n };\n HorizontalResizeComp.prototype.setInverted = function (inverted) {\n this.inverted = inverted;\n };\n HorizontalResizeComp.prototype.setMaxWidth = function (value) {\n this.maxWidth = value;\n };\n HorizontalResizeComp.prototype.setMinWidth = function (value) {\n if (value != null) {\n this.minWidth = value;\n }\n else {\n this.minWidth = 100;\n }\n };\n __decorate$26([\n Autowired('horizontalResizeService')\n ], HorizontalResizeComp.prototype, \"horizontalResizeService\", void 0);\n __decorate$26([\n PostConstruct\n ], HorizontalResizeComp.prototype, \"postConstruct\", null);\n return HorizontalResizeComp;\n}(Component));\n\nvar __extends$2W = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$25 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SideBarButtonComp = /** @class */ (function (_super) {\n __extends$2W(SideBarButtonComp, _super);\n function SideBarButtonComp(toolPanelDef) {\n var _this = _super.call(this) || this;\n _this.toolPanelDef = toolPanelDef;\n return _this;\n }\n SideBarButtonComp.prototype.getToolPanelId = function () {\n return this.toolPanelDef.id;\n };\n SideBarButtonComp.prototype.postConstruct = function () {\n var template = this.createTemplate();\n this.setTemplate(template);\n this.setLabel();\n this.setIcon();\n this.addManagedListener(this.eToggleButton, 'click', this.onButtonPressed.bind(this));\n };\n SideBarButtonComp.prototype.createTemplate = function () {\n var res = /* html */ \"<div class=\\\"ag-side-button\\\" role=\\\"presentation\\\">\\n <button type=\\\"button\\\" ref=\\\"eToggleButton\\\" tabindex=\\\"-1\\\" role=\\\"tab\\\" class=\\\"ag-side-button-button\\\">\\n <div ref=\\\"eIconWrapper\\\" class=\\\"ag-side-button-icon-wrapper\\\" aria-hidden=\\\"true\\\"></div>\\n <span ref =\\\"eLabel\\\" class=\\\"ag-side-button-label\\\"></span>\\n </button>\\n </div>\";\n return res;\n };\n SideBarButtonComp.prototype.setLabel = function () {\n var translate = this.localeService.getLocaleTextFunc();\n var def = this.toolPanelDef;\n var label = translate(def.labelKey, def.labelDefault);\n this.eLabel.innerText = label;\n };\n SideBarButtonComp.prototype.setIcon = function () {\n this.eIconWrapper.insertAdjacentElement('afterbegin', _.createIconNoSpan(this.toolPanelDef.iconKey, this.gridOptionsService));\n };\n SideBarButtonComp.prototype.onButtonPressed = function () {\n this.dispatchEvent({ type: SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED });\n };\n SideBarButtonComp.prototype.setSelected = function (selected) {\n this.addOrRemoveCssClass('ag-selected', selected);\n };\n SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED = 'toggleButtonClicked';\n __decorate$25([\n RefSelector('eToggleButton')\n ], SideBarButtonComp.prototype, \"eToggleButton\", void 0);\n __decorate$25([\n RefSelector('eIconWrapper')\n ], SideBarButtonComp.prototype, \"eIconWrapper\", void 0);\n __decorate$25([\n RefSelector('eLabel')\n ], SideBarButtonComp.prototype, \"eLabel\", void 0);\n __decorate$25([\n PostConstruct\n ], SideBarButtonComp.prototype, \"postConstruct\", null);\n return SideBarButtonComp;\n}(Component));\n\nvar __extends$2V = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$24 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SideBarButtonsComp = /** @class */ (function (_super) {\n __extends$2V(SideBarButtonsComp, _super);\n function SideBarButtonsComp() {\n var _this = _super.call(this, SideBarButtonsComp.TEMPLATE) || this;\n _this.buttonComps = [];\n return _this;\n }\n SideBarButtonsComp.prototype.postConstruct = function () {\n this.addManagedListener(this.getFocusableElement(), 'keydown', this.handleKeyDown.bind(this));\n };\n SideBarButtonsComp.prototype.handleKeyDown = function (e) {\n if (e.key !== KeyCode.TAB || !e.shiftKey) {\n return;\n }\n var lastColumn = _.last(this.columnModel.getAllDisplayedColumns());\n if (this.focusService.focusGridView(lastColumn, true)) {\n e.preventDefault();\n }\n };\n SideBarButtonsComp.prototype.setToolPanelDefs = function (toolPanelDefs) {\n toolPanelDefs.forEach(this.addButtonComp.bind(this));\n };\n SideBarButtonsComp.prototype.setActiveButton = function (id) {\n this.buttonComps.forEach(function (comp) {\n comp.setSelected(id === comp.getToolPanelId());\n });\n };\n SideBarButtonsComp.prototype.addButtonComp = function (def) {\n var _this = this;\n var buttonComp = this.createBean(new SideBarButtonComp(def));\n this.buttonComps.push(buttonComp);\n this.appendChild(buttonComp);\n buttonComp.addEventListener(SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED, function () {\n _this.dispatchEvent({\n type: SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED,\n toolPanelId: def.id\n });\n });\n };\n SideBarButtonsComp.prototype.clearButtons = function () {\n this.buttonComps = this.destroyBeans(this.buttonComps);\n _.clearElement(this.getGui());\n };\n SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED = 'sideBarButtonClicked';\n SideBarButtonsComp.TEMPLATE = \"<div class=\\\"ag-side-buttons\\\" role=\\\"tablist\\\"></div>\";\n __decorate$24([\n Autowired('focusService')\n ], SideBarButtonsComp.prototype, \"focusService\", void 0);\n __decorate$24([\n Autowired('columnModel')\n ], SideBarButtonsComp.prototype, \"columnModel\", void 0);\n __decorate$24([\n PostConstruct\n ], SideBarButtonsComp.prototype, \"postConstruct\", null);\n __decorate$24([\n PreDestroy\n ], SideBarButtonsComp.prototype, \"clearButtons\", null);\n return SideBarButtonsComp;\n}(Component));\n\nvar SideBarDefParser = /** @class */ (function () {\n function SideBarDefParser() {\n }\n SideBarDefParser.parse = function (toParse) {\n if (!toParse) {\n return undefined;\n }\n if (toParse === true) {\n return {\n toolPanels: [\n SideBarDefParser.DEFAULT_COLUMN_COMP,\n SideBarDefParser.DEFAULT_FILTER_COMP,\n ],\n defaultToolPanel: 'columns'\n };\n }\n if (typeof toParse === 'string') {\n return SideBarDefParser.parse([toParse]);\n }\n if (Array.isArray(toParse)) {\n var comps_1 = [];\n toParse.forEach(function (key) {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[key];\n if (!lookupResult) {\n console.warn(\"AG Grid: the key \" + key + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n comps_1.push(lookupResult);\n });\n if (comps_1.length === 0) {\n return undefined;\n }\n return {\n toolPanels: comps_1,\n defaultToolPanel: comps_1[0].id\n };\n }\n var result = {\n toolPanels: SideBarDefParser.parseComponents(toParse.toolPanels),\n defaultToolPanel: toParse.defaultToolPanel,\n hiddenByDefault: toParse.hiddenByDefault,\n position: toParse.position\n };\n return result;\n };\n SideBarDefParser.parseComponents = function (from) {\n var result = [];\n if (!from) {\n return result;\n }\n from.forEach(function (it) {\n var toAdd = null;\n if (typeof it === 'string') {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[it];\n if (!lookupResult) {\n console.warn(\"AG Grid: the key \" + it + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n toAdd = lookupResult;\n }\n else {\n toAdd = it;\n }\n result.push(toAdd);\n });\n return result;\n };\n SideBarDefParser.DEFAULT_COLUMN_COMP = {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n };\n SideBarDefParser.DEFAULT_FILTER_COMP = {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n };\n SideBarDefParser.DEFAULT_BY_KEY = {\n columns: SideBarDefParser.DEFAULT_COLUMN_COMP,\n filters: SideBarDefParser.DEFAULT_FILTER_COMP\n };\n return SideBarDefParser;\n}());\n\nvar __extends$2U = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$23 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelWrapper = /** @class */ (function (_super) {\n __extends$2U(ToolPanelWrapper, _super);\n function ToolPanelWrapper() {\n return _super.call(this, ToolPanelWrapper.TEMPLATE) || this;\n }\n ToolPanelWrapper.prototype.setupResize = function () {\n var eGui = this.getGui();\n var resizeBar = this.resizeBar = this.createManagedBean(new HorizontalResizeComp());\n resizeBar.setElementToResize(eGui);\n this.appendChild(resizeBar);\n };\n ToolPanelWrapper.prototype.getToolPanelId = function () {\n return this.toolPanelId;\n };\n ToolPanelWrapper.prototype.setToolPanelDef = function (toolPanelDef) {\n var id = toolPanelDef.id, minWidth = toolPanelDef.minWidth, maxWidth = toolPanelDef.maxWidth, width = toolPanelDef.width;\n this.toolPanelId = id;\n this.width = width;\n var params = {};\n var compDetails = this.userComponentFactory.getToolPanelCompDetails(toolPanelDef, params);\n var componentPromise = compDetails.newAgStackInstance();\n if (componentPromise == null) {\n console.warn(\"AG Grid: error processing tool panel component \" + id + \". You need to specify either 'toolPanel' or 'toolPanelFramework'\");\n return;\n }\n componentPromise.then(this.setToolPanelComponent.bind(this));\n if (minWidth != null) {\n this.resizeBar.setMinWidth(minWidth);\n }\n if (maxWidth != null) {\n this.resizeBar.setMaxWidth(maxWidth);\n }\n };\n ToolPanelWrapper.prototype.setToolPanelComponent = function (compInstance) {\n var _this = this;\n this.toolPanelCompInstance = compInstance;\n this.appendChild(compInstance.getGui());\n this.addDestroyFunc(function () {\n _this.destroyBean(compInstance);\n });\n if (this.width) {\n this.getGui().style.width = this.width + \"px\";\n }\n };\n ToolPanelWrapper.prototype.getToolPanelInstance = function () {\n return this.toolPanelCompInstance;\n };\n ToolPanelWrapper.prototype.setResizerSizerSide = function (side) {\n var isRtl = this.gridOptionsService.is('enableRtl');\n var isLeft = side === 'left';\n var inverted = isRtl ? isLeft : !isLeft;\n this.resizeBar.setInverted(inverted);\n };\n ToolPanelWrapper.prototype.refresh = function () {\n this.toolPanelCompInstance.refresh();\n };\n ToolPanelWrapper.TEMPLATE = \"<div class=\\\"ag-tool-panel-wrapper\\\"/>\";\n __decorate$23([\n Autowired(\"userComponentFactory\")\n ], ToolPanelWrapper.prototype, \"userComponentFactory\", void 0);\n __decorate$23([\n PostConstruct\n ], ToolPanelWrapper.prototype, \"setupResize\", null);\n return ToolPanelWrapper;\n}(Component));\n\nvar __extends$2T = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$22 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SideBarComp = /** @class */ (function (_super) {\n __extends$2T(SideBarComp, _super);\n function SideBarComp() {\n var _this = _super.call(this, SideBarComp.TEMPLATE) || this;\n _this.toolPanelWrappers = [];\n return _this;\n }\n SideBarComp.prototype.postConstruct = function () {\n var _this = this;\n this.sideBarButtonsComp.addEventListener(SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED, this.onToolPanelButtonClicked.bind(this));\n this.setSideBarDef();\n this.addManagedPropertyListener('sideBar', function () {\n _this.clearDownUi();\n _this.setSideBarDef();\n });\n this.gridApi.registerSideBarComp(this);\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n };\n SideBarComp.prototype.onTabKeyDown = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n var _a = this, focusService = _a.focusService, sideBarButtonsComp = _a.sideBarButtonsComp;\n var eGui = this.getGui();\n var sideBarGui = sideBarButtonsComp.getGui();\n var eDocument = this.gridOptionsService.getDocument();\n var activeElement = eDocument.activeElement;\n var openPanel = eGui.querySelector('.ag-tool-panel-wrapper:not(.ag-hidden)');\n var target = e.target;\n if (!openPanel) {\n return;\n }\n if (sideBarGui.contains(activeElement)) {\n if (focusService.focusInto(openPanel, e.shiftKey)) {\n e.preventDefault();\n }\n return;\n }\n // only handle backwards focus to target the sideBar buttons\n if (!e.shiftKey) {\n return;\n }\n var nextEl = null;\n if (openPanel.contains(activeElement)) {\n nextEl = this.focusService.findNextFocusableElement(openPanel, undefined, true);\n }\n else if (focusService.isTargetUnderManagedComponent(openPanel, target) && e.shiftKey) {\n nextEl = this.focusService.findFocusableElementBeforeTabGuard(openPanel, target);\n }\n if (!nextEl) {\n nextEl = sideBarGui.querySelector('.ag-selected button');\n }\n if (nextEl) {\n e.preventDefault();\n nextEl.focus();\n }\n };\n SideBarComp.prototype.handleKeyDown = function (e) {\n var eDocument = this.gridOptionsService.getDocument();\n if (!this.sideBarButtonsComp.getGui().contains(eDocument.activeElement)) {\n return;\n }\n var sideBarGui = this.sideBarButtonsComp.getGui();\n var buttons = Array.prototype.slice.call(sideBarGui.querySelectorAll('.ag-side-button'));\n var currentButton = eDocument.activeElement;\n var currentPos = buttons.findIndex(function (button) { return button.contains(currentButton); });\n var nextPos = null;\n switch (e.key) {\n case KeyCode.LEFT:\n case KeyCode.UP:\n nextPos = Math.max(0, currentPos - 1);\n break;\n case KeyCode.RIGHT:\n case KeyCode.DOWN:\n nextPos = Math.min(currentPos + 1, buttons.length - 1);\n break;\n }\n if (nextPos === null) {\n return;\n }\n var innerButton = buttons[nextPos].querySelector('button');\n if (innerButton) {\n innerButton.focus();\n e.preventDefault();\n }\n };\n SideBarComp.prototype.onToolPanelButtonClicked = function (event) {\n var id = event.toolPanelId;\n var openedItem = this.openedItem();\n // if item was already open, we close it\n if (openedItem === id) {\n this.openToolPanel(undefined, 'sideBarButtonClicked'); // passing undefined closes\n }\n else {\n this.openToolPanel(id, 'sideBarButtonClicked');\n }\n };\n SideBarComp.prototype.clearDownUi = function () {\n this.sideBarButtonsComp.clearButtons();\n this.destroyToolPanelWrappers();\n };\n SideBarComp.prototype.setSideBarDef = function () {\n // initially hide side bar\n this.setDisplayed(false);\n var sideBarRaw = this.gridOptionsService.get('sideBar');\n this.sideBar = SideBarDefParser.parse(sideBarRaw);\n if (!!this.sideBar && !!this.sideBar.toolPanels) {\n var shouldDisplaySideBar = !this.sideBar.hiddenByDefault;\n this.setDisplayed(shouldDisplaySideBar);\n var toolPanelDefs = this.sideBar.toolPanels;\n this.sideBarButtonsComp.setToolPanelDefs(toolPanelDefs);\n this.setupToolPanels(toolPanelDefs);\n this.setSideBarPosition(this.sideBar.position);\n if (!this.sideBar.hiddenByDefault) {\n this.openToolPanel(this.sideBar.defaultToolPanel, 'sideBarInitializing');\n }\n }\n };\n SideBarComp.prototype.getDef = function () {\n return this.sideBar;\n };\n SideBarComp.prototype.setSideBarPosition = function (position) {\n if (!position) {\n position = 'right';\n }\n var isLeft = position === 'left';\n var resizerSide = isLeft ? 'right' : 'left';\n this.addOrRemoveCssClass('ag-side-bar-left', isLeft);\n this.addOrRemoveCssClass('ag-side-bar-right', !isLeft);\n this.toolPanelWrappers.forEach(function (wrapper) {\n wrapper.setResizerSizerSide(resizerSide);\n });\n return this;\n };\n SideBarComp.prototype.setupToolPanels = function (defs) {\n var _this = this;\n defs.forEach(function (def) {\n if (def.id == null) {\n console.warn(\"AG Grid: please review all your toolPanel components, it seems like at least one of them doesn't have an id\");\n return;\n }\n // helpers, in case user doesn't have the right module loaded\n if (def.toolPanel === 'agColumnsToolPanel') {\n var moduleMissing = !ModuleRegistry.assertRegistered(ModuleNames.ColumnsToolPanelModule, 'Column Tool Panel');\n if (moduleMissing) {\n return;\n }\n }\n if (def.toolPanel === 'agFiltersToolPanel') {\n var moduleMissing = !ModuleRegistry.assertRegistered(ModuleNames.FiltersToolPanelModule, 'Filters Tool Panel');\n if (moduleMissing) {\n return;\n }\n }\n var wrapper = new ToolPanelWrapper();\n _this.getContext().createBean(wrapper);\n wrapper.setToolPanelDef(def);\n wrapper.setDisplayed(false);\n _this.getGui().appendChild(wrapper.getGui());\n _this.toolPanelWrappers.push(wrapper);\n });\n };\n SideBarComp.prototype.refresh = function () {\n this.toolPanelWrappers.forEach(function (wrapper) { return wrapper.refresh(); });\n };\n SideBarComp.prototype.openToolPanel = function (key, source) {\n if (source === void 0) { source = 'api'; }\n var currentlyOpenedKey = this.openedItem();\n if (currentlyOpenedKey === key) {\n return;\n }\n this.toolPanelWrappers.forEach(function (wrapper) {\n var show = key === wrapper.getToolPanelId();\n wrapper.setDisplayed(show);\n });\n var newlyOpenedKey = this.openedItem();\n var openToolPanelChanged = currentlyOpenedKey !== newlyOpenedKey;\n if (openToolPanelChanged) {\n this.sideBarButtonsComp.setActiveButton(key);\n this.raiseToolPanelVisibleEvent(key, currentlyOpenedKey !== null && currentlyOpenedKey !== void 0 ? currentlyOpenedKey : undefined, source);\n }\n };\n SideBarComp.prototype.getToolPanelInstance = function (key) {\n var toolPanelWrapper = this.toolPanelWrappers.filter(function (toolPanel) { return toolPanel.getToolPanelId() === key; })[0];\n if (!toolPanelWrapper) {\n console.warn(\"AG Grid: unable to lookup Tool Panel as invalid key supplied: \" + key);\n return;\n }\n return toolPanelWrapper.getToolPanelInstance();\n };\n SideBarComp.prototype.raiseToolPanelVisibleEvent = function (key, previousKey, source) {\n // To be removed in v30\n var oldEvent = {\n type: Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED,\n source: key,\n };\n this.eventService.dispatchEvent(oldEvent);\n if (previousKey) {\n var event_1 = {\n type: Events.EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED,\n source: source,\n key: previousKey,\n visible: false,\n };\n this.eventService.dispatchEvent(event_1);\n }\n if (key) {\n var event_2 = {\n type: Events.EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED,\n source: source,\n key: key,\n visible: true,\n };\n this.eventService.dispatchEvent(event_2);\n }\n };\n SideBarComp.prototype.close = function (source) {\n if (source === void 0) { source = 'api'; }\n this.openToolPanel(undefined, source);\n };\n SideBarComp.prototype.isToolPanelShowing = function () {\n return !!this.openedItem();\n };\n SideBarComp.prototype.openedItem = function () {\n var activeToolPanel = null;\n this.toolPanelWrappers.forEach(function (wrapper) {\n if (wrapper.isDisplayed()) {\n activeToolPanel = wrapper.getToolPanelId();\n }\n });\n return activeToolPanel;\n };\n SideBarComp.prototype.destroyToolPanelWrappers = function () {\n var _this = this;\n this.toolPanelWrappers.forEach(function (wrapper) {\n _.removeFromParent(wrapper.getGui());\n _this.destroyBean(wrapper);\n });\n this.toolPanelWrappers.length = 0;\n };\n SideBarComp.prototype.destroy = function () {\n this.destroyToolPanelWrappers();\n _super.prototype.destroy.call(this);\n };\n SideBarComp.TEMPLATE = \"<div class=\\\"ag-side-bar ag-unselectable\\\">\\n <ag-side-bar-buttons ref=\\\"sideBarButtons\\\"></ag-side-bar-buttons>\\n </div>\";\n __decorate$22([\n Autowired('gridApi')\n ], SideBarComp.prototype, \"gridApi\", void 0);\n __decorate$22([\n Autowired('focusService')\n ], SideBarComp.prototype, \"focusService\", void 0);\n __decorate$22([\n RefSelector('sideBarButtons')\n ], SideBarComp.prototype, \"sideBarButtonsComp\", void 0);\n __decorate$22([\n PostConstruct\n ], SideBarComp.prototype, \"postConstruct\", null);\n return SideBarComp;\n}(Component));\n\nvar __extends$2S = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$21 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelColDefService = /** @class */ (function (_super) {\n __extends$2S(ToolPanelColDefService, _super);\n function ToolPanelColDefService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isColGroupDef = function (colDef) { return colDef && typeof colDef.children !== 'undefined'; };\n _this.getId = function (colDef) {\n return _this.isColGroupDef(colDef) ? colDef.groupId : colDef.colId;\n };\n return _this;\n }\n ToolPanelColDefService.prototype.createColumnTree = function (colDefs) {\n var _this = this;\n var invalidColIds = [];\n var createDummyColGroup = function (abstractColDef, depth) {\n if (_this.isColGroupDef(abstractColDef)) {\n // creating 'dummy' group which is not associated with grid column group\n var groupDef = abstractColDef;\n var groupId = (typeof groupDef.groupId !== 'undefined') ? groupDef.groupId : groupDef.headerName;\n var group = new ProvidedColumnGroup(groupDef, groupId, false, depth);\n var children_1 = [];\n groupDef.children.forEach(function (def) {\n var child = createDummyColGroup(def, depth + 1);\n // check column exists in case invalid colDef is supplied for primary column\n if (child) {\n children_1.push(child);\n }\n });\n group.setChildren(children_1);\n return group;\n }\n else {\n var colDef = abstractColDef;\n var key = colDef.colId ? colDef.colId : colDef.field;\n var column = _this.columnModel.getPrimaryColumn(key);\n if (!column) {\n invalidColIds.push(colDef);\n }\n return column;\n }\n };\n var mappedResults = [];\n colDefs.forEach(function (colDef) {\n var result = createDummyColGroup(colDef, 0);\n if (result) {\n // only return correctly mapped colDef results\n mappedResults.push(result);\n }\n });\n if (invalidColIds.length > 0) {\n console.warn('AG Grid: unable to find grid columns for the supplied colDef(s):', invalidColIds);\n }\n return mappedResults;\n };\n ToolPanelColDefService.prototype.syncLayoutWithGrid = function (syncLayoutCallback) {\n // extract ordered list of leaf path trees (column group hierarchy for each individual leaf column)\n var leafPathTrees = this.getLeafPathTrees();\n // merge leaf path tree taking split column groups into account\n var mergedColumnTrees = this.mergeLeafPathTrees(leafPathTrees);\n // sync layout with merged column trees\n syncLayoutCallback(mergedColumnTrees);\n };\n ToolPanelColDefService.prototype.getLeafPathTrees = function () {\n // leaf tree paths are obtained by walking up the tree starting at a column until we reach the top level group.\n var getLeafPathTree = function (node, childDef) {\n var leafPathTree;\n // build up tree in reverse order\n if (node instanceof ProvidedColumnGroup) {\n if (node.isPadding()) {\n // skip over padding groups\n leafPathTree = childDef;\n }\n else {\n var groupDef = Object.assign({}, node.getColGroupDef());\n // ensure group contains groupId\n groupDef.groupId = node.getGroupId();\n groupDef.children = [childDef];\n leafPathTree = groupDef;\n }\n }\n else {\n var colDef = Object.assign({}, node.getColDef());\n // ensure col contains colId\n colDef.colId = node.getColId();\n leafPathTree = colDef;\n }\n // walk tree\n var parent = node.getOriginalParent();\n if (parent) {\n // keep walking up the tree until we reach the root\n return getLeafPathTree(parent, leafPathTree);\n }\n else {\n // we have reached the root - exit with resulting leaf path tree\n return leafPathTree;\n }\n };\n // obtain a sorted list of all grid columns\n var allGridColumns = this.columnModel.getAllGridColumns();\n // only primary columns and non row group columns should appear in the tool panel\n var allPrimaryGridColumns = allGridColumns.filter(function (column) {\n var colDef = column.getColDef();\n return column.isPrimary() && !colDef.showRowGroup;\n });\n // construct a leaf path tree for each column\n return allPrimaryGridColumns.map(function (col) { return getLeafPathTree(col, col.getColDef()); });\n };\n ToolPanelColDefService.prototype.mergeLeafPathTrees = function (leafPathTrees) {\n var _this = this;\n var matchingRootGroupIds = function (pathA, pathB) {\n var bothPathsAreGroups = _this.isColGroupDef(pathA) && _this.isColGroupDef(pathB);\n return bothPathsAreGroups && _this.getId(pathA) === _this.getId(pathB);\n };\n var mergeTrees = function (treeA, treeB) {\n if (!_this.isColGroupDef(treeB)) {\n return treeA;\n }\n var mergeResult = treeA;\n var groupToMerge = treeB;\n if (groupToMerge.children && groupToMerge.groupId) {\n var added = _this.addChildrenToGroup(mergeResult, groupToMerge.groupId, groupToMerge.children[0]);\n if (added) {\n return mergeResult;\n }\n }\n groupToMerge.children.forEach(function (child) { return mergeTrees(mergeResult, child); });\n return mergeResult;\n };\n // we can't just merge the leaf path trees as groups can be split apart - instead only merge if leaf\n // path groups with the same root group id are contiguous.\n var mergeColDefs = [];\n for (var i = 1; i <= leafPathTrees.length; i++) {\n var first = leafPathTrees[i - 1];\n var second = leafPathTrees[i];\n if (matchingRootGroupIds(first, second)) {\n leafPathTrees[i] = mergeTrees(first, second);\n }\n else {\n mergeColDefs.push(first);\n }\n }\n return mergeColDefs;\n };\n ToolPanelColDefService.prototype.addChildrenToGroup = function (tree, groupId, colDef) {\n var _this = this;\n var subGroupIsSplit = function (currentSubGroup, currentSubGroupToAdd) {\n var existingChildIds = currentSubGroup.children.map(_this.getId);\n var childGroupAlreadyExists = _.includes(existingChildIds, _this.getId(currentSubGroupToAdd));\n var lastChild = _.last(currentSubGroup.children);\n var lastChildIsDifferent = lastChild && _this.getId(lastChild) !== _this.getId(currentSubGroupToAdd);\n return childGroupAlreadyExists && lastChildIsDifferent;\n };\n if (!this.isColGroupDef(tree)) {\n return true;\n }\n var currentGroup = tree;\n var groupToAdd = colDef;\n if (subGroupIsSplit(currentGroup, groupToAdd)) {\n currentGroup.children.push(groupToAdd);\n return true;\n }\n if (currentGroup.groupId === groupId) {\n // add children that don't already exist to group\n var existingChildIds = currentGroup.children.map(this.getId);\n var colDefAlreadyPresent = _.includes(existingChildIds, this.getId(groupToAdd));\n if (!colDefAlreadyPresent) {\n currentGroup.children.push(groupToAdd);\n return true;\n }\n }\n // recurse until correct group is found to add children\n currentGroup.children.forEach(function (subGroup) { return _this.addChildrenToGroup(subGroup, groupId, colDef); });\n return false;\n };\n __decorate$21([\n Autowired('columnModel')\n ], ToolPanelColDefService.prototype, \"columnModel\", void 0);\n ToolPanelColDefService = __decorate$21([\n Bean('toolPanelColDefService')\n ], ToolPanelColDefService);\n return ToolPanelColDefService;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$f = '29.3.5';\n\nvar SideBarModule = {\n version: VERSION$f,\n moduleName: ModuleNames.SideBarModule,\n beans: [ToolPanelColDefService],\n agStackComponents: [\n { componentName: 'AgHorizontalResize', componentClass: HorizontalResizeComp },\n { componentName: 'AgSideBar', componentClass: SideBarComp },\n { componentName: 'AgSideBarButtons', componentClass: SideBarButtonsComp },\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\nvar __decorate$20 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ModelItemUtils = /** @class */ (function () {\n function ModelItemUtils() {\n }\n ModelItemUtils.prototype.selectAllChildren = function (colTree, selectAllChecked, eventType) {\n var cols = this.extractAllLeafColumns(colTree);\n this.setAllColumns(cols, selectAllChecked, eventType);\n };\n ModelItemUtils.prototype.setColumn = function (col, selectAllChecked, eventType) {\n this.setAllColumns([col], selectAllChecked, eventType);\n };\n ModelItemUtils.prototype.setAllColumns = function (cols, selectAllChecked, eventType) {\n if (this.columnModel.isPivotMode()) {\n this.setAllPivot(cols, selectAllChecked, eventType);\n }\n else {\n this.setAllVisible(cols, selectAllChecked, eventType);\n }\n };\n ModelItemUtils.prototype.extractAllLeafColumns = function (allItems) {\n var res = [];\n var recursiveFunc = function (items) {\n items.forEach(function (item) {\n if (!item.isPassesFilter()) {\n return;\n }\n if (item.isGroup()) {\n recursiveFunc(item.getChildren());\n }\n else {\n res.push(item.getColumn());\n }\n });\n };\n recursiveFunc(allItems);\n return res;\n };\n ModelItemUtils.prototype.setAllVisible = function (columns, visible, eventType) {\n var colStateItems = [];\n columns.forEach(function (col) {\n if (col.getColDef().lockVisible) {\n return;\n }\n if (col.isVisible() != visible) {\n colStateItems.push({\n colId: col.getId(),\n hide: !visible\n });\n }\n });\n if (colStateItems.length > 0) {\n this.columnModel.applyColumnState({ state: colStateItems }, eventType);\n }\n };\n ModelItemUtils.prototype.setAllPivot = function (columns, value, eventType) {\n if (this.gridOptionsService.is('functionsPassive')) {\n this.setAllPivotPassive(columns, value);\n }\n else {\n this.setAllPivotActive(columns, value, eventType);\n }\n };\n ModelItemUtils.prototype.setAllPivotPassive = function (columns, value) {\n var copyOfPivotColumns = this.columnModel.getPivotColumns().slice();\n var copyOfValueColumns = this.columnModel.getValueColumns().slice();\n var copyOfRowGroupColumns = this.columnModel.getRowGroupColumns().slice();\n var pivotChanged = false;\n var valueChanged = false;\n var rowGroupChanged = false;\n var turnOnAction = function (col) {\n // don't change any column that's already got a function active\n if (col.isAnyFunctionActive()) {\n return;\n }\n if (col.isAllowValue()) {\n copyOfValueColumns.push(col);\n valueChanged = true;\n }\n else if (col.isAllowRowGroup()) {\n copyOfRowGroupColumns.push(col);\n pivotChanged = true;\n }\n else if (col.isAllowPivot()) {\n copyOfPivotColumns.push(col);\n rowGroupChanged = true;\n }\n };\n var turnOffAction = function (col) {\n if (!col.isAnyFunctionActive()) {\n return;\n }\n if (copyOfPivotColumns.indexOf(col) >= 0) {\n _.removeFromArray(copyOfPivotColumns, col);\n pivotChanged = true;\n }\n if (copyOfValueColumns.indexOf(col) >= 0) {\n _.removeFromArray(copyOfValueColumns, col);\n valueChanged = true;\n }\n if (copyOfRowGroupColumns.indexOf(col) >= 0) {\n _.removeFromArray(copyOfRowGroupColumns, col);\n rowGroupChanged = true;\n }\n };\n var action = value ? turnOnAction : turnOffAction;\n columns.forEach(action);\n if (pivotChanged) {\n var event_1 = {\n type: Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n columns: copyOfPivotColumns\n };\n this.eventService.dispatchEvent(event_1);\n }\n if (rowGroupChanged) {\n var event_2 = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n columns: copyOfRowGroupColumns\n };\n this.eventService.dispatchEvent(event_2);\n }\n if (valueChanged) {\n var event_3 = {\n type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n columns: copyOfRowGroupColumns\n };\n this.eventService.dispatchEvent(event_3);\n }\n };\n ModelItemUtils.prototype.setAllPivotActive = function (columns, value, eventType) {\n var _this = this;\n var colStateItems = [];\n var turnOnAction = function (col) {\n // don't change any column that's already got a function active\n if (col.isAnyFunctionActive()) {\n return;\n }\n if (col.isAllowValue()) {\n var aggFunc = typeof col.getAggFunc() === 'string'\n ? col.getAggFunc()\n : _this.aggFuncService.getDefaultAggFunc(col);\n colStateItems.push({\n colId: col.getId(),\n aggFunc: aggFunc\n });\n }\n else if (col.isAllowRowGroup()) {\n colStateItems.push({\n colId: col.getId(),\n rowGroup: true\n });\n }\n else if (col.isAllowPivot()) {\n colStateItems.push({\n colId: col.getId(),\n pivot: true\n });\n }\n };\n var turnOffAction = function (col) {\n var isActive = col.isPivotActive() || col.isRowGroupActive() || col.isValueActive();\n if (isActive) {\n colStateItems.push({\n colId: col.getId(),\n pivot: false,\n rowGroup: false,\n aggFunc: null\n });\n }\n };\n var action = value ? turnOnAction : turnOffAction;\n columns.forEach(action);\n if (colStateItems.length > 0) {\n this.columnModel.applyColumnState({ state: colStateItems }, eventType);\n }\n };\n __decorate$20([\n Autowired('aggFuncService')\n ], ModelItemUtils.prototype, \"aggFuncService\", void 0);\n __decorate$20([\n Autowired('columnModel')\n ], ModelItemUtils.prototype, \"columnModel\", void 0);\n __decorate$20([\n Autowired('gridOptionsService')\n ], ModelItemUtils.prototype, \"gridOptionsService\", void 0);\n __decorate$20([\n Autowired('eventService')\n ], ModelItemUtils.prototype, \"eventService\", void 0);\n ModelItemUtils = __decorate$20([\n Bean('modelItemUtils')\n ], ModelItemUtils);\n return ModelItemUtils;\n}());\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$e = '29.3.5';\n\nvar ColumnsToolPanelModule = {\n version: VERSION$e,\n moduleName: ModuleNames.ColumnsToolPanelModule,\n beans: [ModelItemUtils],\n agStackComponents: [\n { componentName: 'AgPrimaryColsHeader', componentClass: PrimaryColsHeaderPanel },\n { componentName: 'AgPrimaryColsList', componentClass: PrimaryColsListPanel },\n { componentName: 'AgPrimaryCols', componentClass: PrimaryColsPanel }\n ],\n userComponents: [\n { componentName: 'agColumnsToolPanel', componentClass: ColumnToolPanel },\n ],\n dependantModules: [\n EnterpriseCoreModule,\n RowGroupingModule,\n SideBarModule\n ]\n};\n\nvar workbook = {\n getTemplate: function () {\n return {\n name: \"Workbook\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n o: \"urn:schemas-microsoft-com:office:office\",\n x: \"urn:schemas-microsoft-com:office:excel\",\n ss: \"urn:schemas-microsoft-com:office:spreadsheet\",\n html: \"http://www.w3.org/TR/REC-html40\"\n },\n }],\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:spreadsheet\"\n }\n }\n };\n }\n};\n\nvar excelWorkbook = {\n getTemplate: function () {\n return {\n name: \"ExcelWorkbook\",\n properties: {\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:excel\"\n }\n },\n children: [{\n name: \"WindowHeight\",\n textNode: \"8130\"\n }, {\n name: \"WindowWidth\",\n textNode: \"15135\"\n }, {\n name: \"WindowHeight\",\n textNode: \"8130\"\n }, {\n name: \"WindowTopX\",\n textNode: \"120\"\n }, {\n name: \"WindowTopY\",\n textNode: \"45\"\n }, {\n name: \"ProtectStructure\",\n textNode: \"False\"\n }, {\n name: \"ProtectWindow\",\n textNode: \"False\"\n }]\n };\n }\n};\n\nvar column = {\n getTemplate: function (c) {\n var width = c.width;\n return {\n name: \"Column\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Width: width\n }\n }]\n }\n };\n }\n};\n\nvar cell = {\n getTemplate: function (c) {\n var mergeAcross = c.mergeAcross, styleId = c.styleId, data = c.data;\n var properties = {};\n if (mergeAcross) {\n properties.MergeAcross = mergeAcross;\n }\n if (styleId) {\n properties.StyleID = styleId;\n }\n return {\n name: \"Cell\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: properties\n }]\n },\n children: [{\n name: \"Data\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Type: data === null || data === void 0 ? void 0 : data.type\n }\n }]\n },\n textNode: data === null || data === void 0 ? void 0 : data.value\n }]\n };\n }\n};\n\nvar row = {\n getTemplate: function (r) {\n var cells = r.cells;\n return {\n name: \"Row\",\n children: cells.map(function (it) { return cell.getTemplate(it); })\n };\n }\n};\n\nvar worksheet = {\n getTemplate: function (ws) {\n var table = ws.table, name = ws.name;\n var columns = table.columns, rows = table.rows;\n var c = columns.map(function (it) { return column.getTemplate(it); });\n var r = rows.map(function (it) { return row.getTemplate(it); });\n return {\n name: \"Worksheet\",\n children: [{\n name: \"Table\",\n children: c.concat(r)\n }],\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Name: name\n }\n }]\n }\n };\n }\n};\n\nvar documentProperties = {\n getTemplate: function () {\n return {\n name: \"DocumentProperties\",\n properties: {\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:office\"\n }\n },\n children: [{\n name: \"Version\",\n textNode: \"12.00\"\n }]\n };\n }\n};\n\nvar alignment = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.alignment, vertical = _a.vertical, horizontal = _a.horizontal, indent = _a.indent, readingOrder = _a.readingOrder, rotate = _a.rotate, shrinkToFit = _a.shrinkToFit, verticalText = _a.verticalText, wrapText = _a.wrapText;\n return {\n name: 'Alignment',\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Vertical: vertical,\n Horizontal: horizontal,\n Indent: indent,\n ReadingOrder: readingOrder,\n Rotate: rotate,\n ShrinkToFit: shrinkToFit,\n VerticalText: verticalText,\n WrapText: wrapText\n }\n }]\n }\n };\n }\n};\n\nvar borders = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.borders, borderBottom = _a.borderBottom, borderLeft = _a.borderLeft, borderRight = _a.borderRight, borderTop = _a.borderTop;\n return {\n name: 'Borders',\n children: [borderBottom, borderLeft, borderRight, borderTop].map(function (it, index) {\n var current = index == 0 ? \"Bottom\" : index == 1 ? \"Left\" : index == 2 ? \"Right\" : \"Top\";\n return {\n name: 'Border',\n properties: {\n prefixedAttributes: [{\n prefix: 'ss:',\n map: {\n Position: current,\n LineStyle: it.lineStyle,\n Weight: it.weight,\n Color: it.color\n }\n }]\n }\n };\n })\n };\n }\n};\n\nvar font = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.font, bold = _a.bold, fontName = _a.fontName, italic = _a.italic, color = _a.color, outline = _a.outline, shadow = _a.shadow, size = _a.size, strikeThrough = _a.strikeThrough, underline = _a.underline, verticalAlign = _a.verticalAlign, charSet = _a.charSet, family = _a.family;\n return {\n name: \"Font\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Bold: bold,\n FontName: fontName,\n Italic: italic,\n Color: color,\n Outline: outline,\n Shadow: shadow,\n Size: size,\n StrikeThrough: strikeThrough,\n Underline: underline,\n VerticalAlign: verticalAlign\n }\n }, {\n prefix: \"x:\",\n map: {\n CharSet: charSet,\n Family: family\n }\n }]\n }\n };\n }\n};\n\nvar interior = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.interior, color = _a.color, pattern = _a.pattern, patternColor = _a.patternColor;\n return {\n name: \"Interior\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Color: color,\n Pattern: pattern,\n PatternColor: patternColor\n }\n }]\n }\n };\n }\n};\n\nvar protection = {\n getTemplate: function (styleProperties) {\n return {\n name: \"Protection\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Protected: styleProperties.protection.protected,\n HideFormula: styleProperties.protection.hideFormula\n }\n }]\n }\n };\n }\n};\n\nvar numberFormat = {\n getTemplate: function (styleProperties) {\n var format = styleProperties.numberFormat.format;\n return {\n name: \"NumberFormat\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Format: format\n }\n }]\n }\n };\n }\n};\n\nvar style = {\n getTemplate: function (styleProperties) {\n var id = styleProperties.id, name = styleProperties.name;\n return {\n name: 'Style',\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n ID: id,\n Name: name ? name : id\n }\n }]\n }\n };\n }\n};\n\n/**\n * See https://msdn.microsoft.com/en-us/library/aa140066(v=office.10).aspx\n */\nvar ExcelXmlFactory = /** @class */ (function () {\n function ExcelXmlFactory() {\n }\n ExcelXmlFactory.createExcel = function (styles, currentWorksheet) {\n var header = this.excelXmlHeader();\n var docProps = documentProperties.getTemplate();\n var eWorkbook = excelWorkbook.getTemplate();\n var wb = this.workbook(docProps, eWorkbook, styles, currentWorksheet);\n return \"\" + header + XmlFactory.createXml(wb, function (boolean) { return boolean ? '1' : '0'; });\n };\n ExcelXmlFactory.workbook = function (docProperties, eWorkbook, styles, currentWorksheet) {\n var children = [\n docProperties,\n eWorkbook,\n this.stylesXmlElement(styles)\n ].concat(worksheet.getTemplate(currentWorksheet));\n return Object.assign({}, workbook.getTemplate(), { children: children });\n };\n ExcelXmlFactory.excelXmlHeader = function () {\n return \"<?xml version=\\\"1.0\\\" ?>\\n <?mso-application progid=\\\"Excel.Sheet\\\" ?>\\n \";\n };\n ExcelXmlFactory.stylesXmlElement = function (styles) {\n var _this = this;\n return {\n name: 'Styles',\n children: styles ? styles.map(function (it) { return _this.styleXmlElement(it); }) : []\n };\n };\n ExcelXmlFactory.styleXmlElement = function (styleProperties) {\n var children = _.compose(this.addProperty('alignment', styleProperties), this.addProperty('borders', styleProperties), this.addProperty('font', styleProperties), this.addProperty('interior', styleProperties), this.addProperty('protection', styleProperties), this.addProperty('numberFormat', styleProperties))([]);\n return Object.assign({}, style.getTemplate(styleProperties), { children: children });\n };\n ExcelXmlFactory.addProperty = function (property, styleProperties) {\n return function (children) {\n if (!styleProperties[property]) {\n return children;\n }\n var options = {\n alignment: alignment,\n borders: borders,\n font: font,\n interior: interior,\n numberFormat: numberFormat,\n protection: protection\n };\n return children.concat(options[property].getTemplate(styleProperties));\n };\n };\n ExcelXmlFactory.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n return ExcelXmlFactory;\n}());\n\nvar INCH_TO_EMU = 9525;\nvar numberFormatMap = {\n '0': 1,\n '0.00': 2,\n '#,##0': 3,\n '#,##0.00': 4,\n '0%': 9,\n '0.00%': 10,\n '0.00E+00': 11,\n '# ?/?': 12,\n '# ??/??': 13,\n 'mm-dd-yy': 14,\n 'd-mmm-yy': 15,\n 'd-mmm': 16,\n 'mmm-yy': 17,\n 'h:mm AM/PM': 18,\n 'h:mm:ss AM/PM': 19,\n 'h:mm': 20,\n 'h:mm:ss': 21,\n 'm/d/yy h:mm': 22,\n '#,##0 ;(#,##0)': 37,\n '#,##0 ;[Red](#,##0)': 38,\n '#,##0.00;(#,##0.00)': 39,\n '#,##0.00;[Red](#,##0.00)': 40,\n 'mm:ss': 45,\n '[h]:mm:ss': 46,\n 'mmss.0': 47,\n '##0.0E+0': 48,\n '@': 49\n};\n\nvar pixelsToPoint = function (pixels) {\n return Math.round(pixels * 72 / 96);\n};\nvar pointsToPixel = function (points) {\n return Math.round(points * 96 / 72);\n};\nvar pixelsToEMU = function (value) {\n return Math.ceil(value * INCH_TO_EMU);\n};\nvar getFontFamilyId = function (name) {\n if (name === undefined) {\n return;\n }\n var families = ['Automatic', 'Roman', 'Swiss', 'Modern', 'Script', 'Decorative'];\n var pos = families.indexOf(name || 'Automatic');\n return Math.max(pos, 0);\n};\nvar getHeightFromProperty = function (rowIndex, height) {\n if (!height) {\n return;\n }\n var finalHeight;\n if (typeof height === 'number') {\n finalHeight = height;\n }\n else {\n var heightFunc = height;\n finalHeight = heightFunc({ rowIndex: rowIndex });\n }\n return pixelsToPoint(finalHeight);\n};\nvar setExcelImageTotalWidth = function (image, columnsToExport) {\n var _a = image.position, colSpan = _a.colSpan, column = _a.column;\n if (image.width) {\n if (colSpan) {\n var columnsInSpan = columnsToExport.slice(column - 1, column + colSpan - 1);\n var totalWidth = 0;\n for (var i = 0; i < columnsInSpan.length; i++) {\n var colWidth = columnsInSpan[i].getActualWidth();\n if (image.width < totalWidth + colWidth) {\n image.position.colSpan = i + 1;\n image.totalWidth = image.width;\n image.width = image.totalWidth - totalWidth;\n break;\n }\n totalWidth += colWidth;\n }\n }\n else {\n image.totalWidth = image.width;\n }\n }\n};\nvar setExcelImageTotalHeight = function (image, rowHeight) {\n var _a = image.position, rowSpan = _a.rowSpan, row = _a.row;\n if (image.height) {\n if (rowSpan) {\n var totalHeight = 0;\n var counter = 0;\n for (var i = row; i < row + rowSpan; i++) {\n var nextRowHeight = pointsToPixel(getHeightFromProperty(i, rowHeight) || 20);\n if (image.height < totalHeight + nextRowHeight) {\n image.position.rowSpan = counter + 1;\n image.totalHeight = image.height;\n image.height = image.totalHeight - totalHeight;\n break;\n }\n totalHeight += nextRowHeight;\n counter++;\n }\n }\n else {\n image.totalHeight = image.height;\n }\n }\n};\nvar createXmlPart = function (body) {\n var header = XmlFactory.createHeader({\n encoding: 'UTF-8',\n standalone: 'yes'\n });\n var xmlBody = XmlFactory.createXml(body);\n return \"\" + header + xmlBody;\n};\nvar getExcelColumnName = function (colIdx) {\n var startCode = 65;\n var tableWidth = 26;\n var fromCharCode = String.fromCharCode;\n var pos = Math.floor(colIdx / tableWidth);\n var tableIdx = colIdx % tableWidth;\n if (!pos || colIdx === tableWidth) {\n return fromCharCode(startCode + colIdx - 1);\n }\n if (!tableIdx) {\n return getExcelColumnName(pos - 1) + 'Z';\n }\n if (pos < tableWidth) {\n return fromCharCode(startCode + pos - 1) + fromCharCode(startCode + tableIdx - 1);\n }\n return getExcelColumnName(pos) + fromCharCode(startCode + tableIdx - 1);\n};\n\nvar __extends$2R = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$M = (undefined && undefined.__assign) || function () {\n __assign$M = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$M.apply(this, arguments);\n};\nvar __read$17 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$F = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$17(arguments[i]));\n return ar;\n};\nvar BaseExcelSerializingSession = /** @class */ (function (_super) {\n __extends$2R(BaseExcelSerializingSession, _super);\n function BaseExcelSerializingSession(config) {\n var _this = _super.call(this, config) || this;\n _this.mixedStyles = {};\n _this.mixedStyleCounter = 0;\n _this.rows = [];\n _this.config = Object.assign({}, config);\n _this.stylesByIds = {};\n _this.config.baseExcelStyles.forEach(function (style) {\n _this.stylesByIds[style.id] = style;\n });\n _this.excelStyles = __spread$F(_this.config.baseExcelStyles);\n return _this;\n }\n BaseExcelSerializingSession.prototype.addCustomContent = function (customContent) {\n var _this = this;\n customContent.forEach(function (row) {\n var rowLen = _this.rows.length + 1;\n var rowObj = {\n height: getHeightFromProperty(rowLen, row.height || _this.config.rowHeight),\n cells: (row.cells || []).map(function (cell, idx) {\n var _a, _b, _c;\n var image = _this.addImage(rowLen, _this.columnsToExport[idx], (_a = cell.data) === null || _a === void 0 ? void 0 : _a.value);\n var excelStyles = null;\n if (cell.styleId) {\n excelStyles = typeof cell.styleId === 'string' ? [cell.styleId] : cell.styleId;\n }\n var excelStyleId = _this.getStyleId(excelStyles);\n if (image) {\n return _this.createCell(excelStyleId, _this.getDataTypeForValue(image.value), image.value == null ? '' : image.value);\n }\n var value = (_c = (_b = cell.data) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : '';\n var type = _this.getDataTypeForValue(value);\n if (cell.mergeAcross) {\n return _this.createMergedCell(excelStyleId, type, value, cell.mergeAcross);\n }\n return _this.createCell(excelStyleId, type, value);\n }),\n outlineLevel: row.outlineLevel || undefined\n };\n if (row.collapsed != null) {\n rowObj.collapsed = row.collapsed;\n }\n if (row.hidden != null) {\n rowObj.hidden = row.hidden;\n }\n _this.rows.push(rowObj);\n });\n };\n BaseExcelSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n var _this = this;\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: getHeightFromProperty(this.rows.length + 1, this.config.headerRowHeight)\n });\n return {\n onColumn: function (columnGroup, header, index, span, collapsibleRanges) {\n var styleIds = _this.config.styleLinker({ rowType: RowType.HEADER_GROUPING, rowIndex: 1, value: \"grouping-\" + header, columnGroup: columnGroup });\n currentCells.push(__assign$M(__assign$M({}, _this.createMergedCell(_this.getStyleId(styleIds), _this.getDataTypeForValue('string'), header, span)), { collapsibleRanges: collapsibleRanges }));\n }\n };\n };\n BaseExcelSerializingSession.prototype.onNewHeaderRow = function () {\n return this.onNewRow(this.onNewHeaderColumn, this.config.headerRowHeight);\n };\n BaseExcelSerializingSession.prototype.onNewBodyRow = function () {\n return this.onNewRow(this.onNewBodyColumn, this.config.rowHeight);\n };\n BaseExcelSerializingSession.prototype.prepare = function (columnsToExport) {\n var _this = this;\n _super.prototype.prepare.call(this, columnsToExport);\n this.columnsToExport = __spread$F(columnsToExport);\n this.cols = columnsToExport.map(function (col, i) { return _this.convertColumnToExcel(col, i); });\n };\n BaseExcelSerializingSession.prototype.parse = function () {\n // adding custom content might have made some rows wider than the grid, so add new columns\n var longestRow = this.rows.reduce(function (a, b) { return Math.max(a, b.cells.length); }, 0);\n while (this.cols.length < longestRow) {\n this.cols.push(this.convertColumnToExcel(null, this.cols.length + 1));\n }\n var data = {\n name: this.config.sheetName,\n table: {\n columns: this.cols,\n rows: this.rows\n }\n };\n return this.createExcel(data);\n };\n BaseExcelSerializingSession.prototype.isFormula = function (value) {\n if (value == null) {\n return false;\n }\n return this.config.autoConvertFormulas && value.toString().startsWith('=');\n };\n BaseExcelSerializingSession.prototype.isNumerical = function (value) {\n return isFinite(value) && value !== '' && !isNaN(parseFloat(value));\n };\n BaseExcelSerializingSession.prototype.getStyleById = function (styleId) {\n if (styleId == null) {\n return null;\n }\n return this.stylesByIds[styleId] || null;\n };\n BaseExcelSerializingSession.prototype.convertColumnToExcel = function (column, index) {\n var columnWidth = this.config.columnWidth;\n if (columnWidth) {\n if (typeof columnWidth === 'number') {\n return { width: columnWidth };\n }\n return { width: columnWidth({ column: column, index: index }) };\n }\n if (column) {\n var smallestUsefulWidth = 75;\n return { width: Math.max(column.getActualWidth(), smallestUsefulWidth) };\n }\n return {};\n };\n BaseExcelSerializingSession.prototype.onNewHeaderColumn = function (rowIndex, currentCells) {\n var _this = this;\n return function (column, index) {\n var nameForCol = _this.extractHeaderValue(column);\n var styleIds = _this.config.styleLinker({ rowType: RowType.HEADER, rowIndex: rowIndex, value: nameForCol, column: column });\n currentCells.push(_this.createCell(_this.getStyleId(styleIds), _this.getDataTypeForValue('string'), nameForCol));\n };\n };\n BaseExcelSerializingSession.prototype.onNewRow = function (onNewColumnAccumulator, height) {\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: getHeightFromProperty(this.rows.length + 1, height)\n });\n return {\n onColumn: onNewColumnAccumulator.bind(this, this.rows.length, currentCells)()\n };\n };\n BaseExcelSerializingSession.prototype.onNewBodyColumn = function (rowIndex, currentCells) {\n var _this = this;\n var skipCols = 0;\n return function (column, index, node) {\n if (skipCols > 0) {\n skipCols -= 1;\n return;\n }\n if (!_this.config.gridOptionsService.is('groupHideOpenParents') && node.level != null) {\n var padding = node.footer ? 1 : 0;\n _.last(_this.rows).outlineLevel = node.level + padding;\n }\n var valueForCell = _this.extractRowCellValue(column, index, rowIndex, 'excel', node);\n var styleIds = _this.config.styleLinker({ rowType: RowType.BODY, rowIndex: rowIndex, value: valueForCell, column: column, node: node });\n var excelStyleId = _this.getStyleId(styleIds);\n var colSpan = column.getColSpan(node);\n var addedImage = _this.addImage(rowIndex, column, valueForCell);\n if (addedImage) {\n currentCells.push(_this.createCell(excelStyleId, _this.getDataTypeForValue(addedImage.value), addedImage.value == null ? '' : addedImage.value));\n }\n else if (colSpan > 1) {\n skipCols = colSpan - 1;\n currentCells.push(_this.createMergedCell(excelStyleId, _this.getDataTypeForValue(valueForCell), valueForCell, colSpan - 1));\n }\n else {\n currentCells.push(_this.createCell(excelStyleId, _this.getDataTypeForValue(valueForCell), valueForCell));\n }\n };\n };\n BaseExcelSerializingSession.prototype.getStyleId = function (styleIds) {\n if (!styleIds || !styleIds.length) {\n return null;\n }\n if (styleIds.length === 1) {\n return styleIds[0];\n }\n var key = styleIds.join(\"-\");\n if (!this.mixedStyles[key]) {\n this.addNewMixedStyle(styleIds);\n }\n return this.mixedStyles[key].excelID;\n };\n BaseExcelSerializingSession.prototype.addNewMixedStyle = function (styleIds) {\n var _this = this;\n this.mixedStyleCounter += 1;\n var excelId = \"mixedStyle\" + this.mixedStyleCounter;\n var resultantStyle = {};\n styleIds.forEach(function (styleId) {\n _this.excelStyles.forEach(function (excelStyle) {\n if (excelStyle.id === styleId) {\n _.mergeDeep(resultantStyle, _.deepCloneObject(excelStyle));\n }\n });\n });\n resultantStyle.id = excelId;\n resultantStyle.name = excelId;\n var key = styleIds.join(\"-\");\n this.mixedStyles[key] = {\n excelID: excelId,\n key: key,\n result: resultantStyle\n };\n this.excelStyles.push(resultantStyle);\n this.stylesByIds[excelId] = resultantStyle;\n };\n return BaseExcelSerializingSession;\n}(BaseGridSerializingSession));\n\nvar __extends$2Q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar ExcelXmlSerializingSession = /** @class */ (function (_super) {\n __extends$2Q(ExcelXmlSerializingSession, _super);\n function ExcelXmlSerializingSession() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExcelXmlSerializingSession.prototype.createExcel = function (data) {\n return ExcelXmlFactory.createExcel(this.excelStyles, data);\n };\n ExcelXmlSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n return this.isNumerical(valueForCell) ? 'Number' : 'String';\n };\n ExcelXmlSerializingSession.prototype.getType = function (type, style, value) {\n if (this.isFormula(value)) {\n return 'Formula';\n }\n if (style && style.dataType) {\n switch (style.dataType.toLocaleLowerCase()) {\n case 'string':\n return 'Formula';\n case 'number':\n return 'Number';\n case 'datetime':\n return 'DateTime';\n case 'error':\n return 'Error';\n case 'boolean':\n return 'Boolean';\n default:\n console.warn(\"AG Grid: Unrecognized data type for excel export [\" + style.id + \".dataType=\" + style.dataType + \"]\");\n }\n }\n return type;\n };\n ExcelXmlSerializingSession.prototype.addImage = function () {\n return;\n };\n ExcelXmlSerializingSession.prototype.createCell = function (styleId, type, value) {\n var actualStyle = this.getStyleById(styleId);\n var typeTransformed = (this.getType(type, actualStyle, value) || type);\n return {\n styleId: !!actualStyle ? styleId : undefined,\n data: {\n type: typeTransformed,\n value: this.getValueTransformed(typeTransformed, value)\n }\n };\n };\n ExcelXmlSerializingSession.prototype.getValueTransformed = function (typeTransformed, value) {\n var _this = this;\n var wrapText = function (val) {\n if (_this.config.suppressTextAsCDATA) {\n return _.escapeString(val);\n }\n var cdataStart = '<![CDATA[';\n var cdataEnd = ']]>';\n var cdataEndRegex = new RegExp(cdataEnd, \"g\");\n return cdataStart\n // CDATA sections are closed by the character sequence ']]>' and there is no\n // way of escaping this, so if the text contains the offending sequence, emit\n // multiple CDATA sections and split the characters between them.\n + String(val).replace(cdataEndRegex, ']]' + cdataEnd + cdataStart + '>')\n + cdataEnd;\n };\n var convertBoolean = function (val) {\n if (!val || val === '0' || val === 'false') {\n return '0';\n }\n return '1';\n };\n switch (typeTransformed) {\n case 'String':\n return wrapText(value);\n case 'Number':\n return Number(value).valueOf() + '';\n case 'Boolean':\n return convertBoolean(value);\n default:\n return value;\n }\n };\n ExcelXmlSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n return {\n styleId: !!this.getStyleById(styleId) ? styleId : undefined,\n data: {\n type: type,\n value: value\n },\n mergeAcross: numOfCells\n };\n };\n return ExcelXmlSerializingSession;\n}(BaseExcelSerializingSession));\n\nvar coreFactory = {\n getTemplate: function (author) {\n var dt = new Date();\n var jsonDate = dt.toJSON();\n return {\n name: 'cp:coreProperties',\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n cp: \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\",\n dc: 'http://purl.org/dc/elements/1.1/',\n dcterms: 'http://purl.org/dc/terms/',\n dcmitype: 'http://purl.org/dc/dcmitype/',\n xsi: 'http://www.w3.org/2001/XMLSchema-instance'\n }\n }]\n },\n children: [{\n name: 'dc:creator',\n textNode: author\n }, {\n name: 'dc:title',\n textNode: 'Workbook'\n }, {\n name: 'dcterms:created',\n properties: {\n rawMap: {\n 'xsi:type': 'dcterms:W3CDTF'\n }\n },\n textNode: jsonDate\n }, {\n name: 'dcterms:modified',\n properties: {\n rawMap: {\n 'xsi:type': 'dcterms:W3CDTF'\n }\n },\n textNode: jsonDate\n }]\n };\n }\n};\n\nvar contentTypeFactory = {\n getTemplate: function (config) {\n var name = config.name, ContentType = config.ContentType, Extension = config.Extension, PartName = config.PartName;\n return {\n name: name,\n properties: {\n rawMap: {\n Extension: Extension,\n PartName: PartName,\n ContentType: ContentType\n }\n }\n };\n }\n};\n\nvar __read$16 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$E = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$16(arguments[i]));\n return ar;\n};\nvar contentTypesFactory = {\n getTemplate: function (sheetLen) {\n var worksheets = new Array(sheetLen).fill(undefined).map(function (v, i) { return ({\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml',\n PartName: \"/xl/worksheets/sheet\" + (i + 1) + \".xml\"\n }); });\n var sheetsWithImages = ExcelXlsxFactory.worksheetImages.size;\n var imageTypesObject = {};\n ExcelXlsxFactory.workbookImageIds.forEach(function (v) {\n imageTypesObject[v.type] = true;\n });\n var imageDocs = new Array(sheetsWithImages).fill(undefined).map(function (v, i) { return ({\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.drawing+xml',\n PartName: \"/xl/drawings/drawing\" + (i + 1) + \".xml\"\n }); });\n var imageTypes = Object.keys(imageTypesObject).map(function (ext) { return ({\n name: 'Default',\n ContentType: \"image/\" + ext,\n Extension: ext\n }); });\n var children = __spread$E(imageTypes, [\n {\n name: 'Default',\n Extension: 'rels',\n ContentType: 'application/vnd.openxmlformats-package.relationships+xml'\n }, {\n name: 'Default',\n ContentType: 'application/xml',\n Extension: 'xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml',\n PartName: \"/xl/workbook.xml\"\n }\n ], worksheets, [\n {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.theme+xml',\n PartName: '/xl/theme/theme1.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml',\n PartName: '/xl/styles.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml',\n PartName: '/xl/sharedStrings.xml'\n }\n ], imageDocs, [\n {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-package.core-properties+xml',\n PartName: '/docProps/core.xml'\n }\n ]).map(function (contentType) { return contentTypeFactory.getTemplate(contentType); });\n return {\n name: \"Types\",\n properties: {\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/content-types\"\n }\n },\n children: children\n };\n }\n};\n\nvar getAnchor = function (name, imageAnchor) { return ({\n name: \"xdr:\" + name,\n children: [{\n name: 'xdr:col',\n textNode: (imageAnchor.col).toString()\n }, {\n name: 'xdr:colOff',\n textNode: imageAnchor.offsetX.toString()\n }, {\n name: 'xdr:row',\n textNode: imageAnchor.row.toString()\n }, {\n name: 'xdr:rowOff',\n textNode: imageAnchor.offsetY.toString()\n }]\n}); };\nvar getExt = function (image) {\n var children = [{\n name: 'a:ext',\n properties: {\n rawMap: {\n uri: '{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}'\n }\n },\n children: [{\n name: 'a16:creationId',\n properties: {\n rawMap: {\n 'id': '{822E6D20-D7BC-2841-A643-D49A6EF008A2}',\n 'xmlns:a16': 'http://schemas.microsoft.com/office/drawing/2014/main'\n }\n }\n }]\n }];\n var recolor = image.recolor && image.recolor.toLowerCase();\n switch (recolor) {\n case 'grayscale':\n case 'sepia':\n case 'washout':\n children.push({\n name: 'a:ext',\n properties: {\n rawMap: {\n uri: '{C183D7F6-B498-43B3-948B-1728B52AA6E4}'\n }\n },\n children: [{\n name: 'adec:decorative',\n properties: {\n rawMap: {\n 'val': '0',\n 'xmlns:adec': 'http://schemas.microsoft.com/office/drawing/2017/decorative'\n }\n }\n }]\n });\n }\n return {\n name: 'a:extLst',\n children: children\n };\n};\nvar getNvPicPr = function (image, index) { return ({\n name: 'xdr:nvPicPr',\n children: [{\n name: 'xdr:cNvPr',\n properties: {\n rawMap: {\n id: index,\n name: image.id,\n descr: image.altText != null ? image.altText : undefined\n }\n },\n children: [getExt(image)]\n }, {\n name: 'xdr:cNvPicPr',\n properties: {\n rawMap: {\n preferRelativeResize: '0'\n }\n },\n children: [{\n name: 'a:picLocks'\n }]\n }]\n}); };\nvar getColorDetails = function (color) {\n if (!color.saturation && !color.tint) {\n return;\n }\n var ret = [];\n if (color.saturation) {\n ret.push({\n name: 'a:satMod',\n properties: {\n rawMap: {\n val: color.saturation * 1000\n }\n }\n });\n }\n if (color.tint) {\n ret.push({\n name: 'a:tint',\n properties: {\n rawMap: {\n val: color.tint * 1000\n }\n }\n });\n }\n return ret;\n};\nvar getDuoTone = function (primaryColor, secondaryColor) {\n return ({\n name: 'a:duotone',\n children: [{\n name: 'a:prstClr',\n properties: {\n rawMap: {\n val: primaryColor.color\n }\n },\n children: getColorDetails(primaryColor)\n }, {\n name: 'a:srgbClr',\n properties: {\n rawMap: {\n val: secondaryColor.color\n }\n },\n children: getColorDetails(secondaryColor)\n }]\n });\n};\nvar getBlipFill = function (image, index) {\n var blipChildren;\n if (image.transparency) {\n var transparency = Math.min(Math.max(image.transparency, 0), 100);\n blipChildren = [{\n name: 'a:alphaModFix',\n properties: {\n rawMap: {\n amt: 100000 - Math.round(transparency * 1000),\n }\n }\n }];\n }\n if (image.recolor) {\n if (!blipChildren) {\n blipChildren = [];\n }\n switch (image.recolor.toLocaleLowerCase()) {\n case 'grayscale':\n blipChildren.push({ name: 'a:grayscl' });\n break;\n case 'sepia':\n blipChildren.push(getDuoTone({ color: 'black' }, { color: 'D9C3A5', tint: 50, saturation: 180 }));\n break;\n case 'washout':\n blipChildren.push({\n name: 'a:lum',\n properties: {\n rawMap: {\n bright: '70000',\n contrast: '-70000'\n }\n }\n });\n break;\n }\n }\n return ({\n name: 'xdr:blipFill',\n children: [{\n name: 'a:blip',\n properties: {\n rawMap: {\n 'cstate': 'print',\n 'r:embed': \"rId\" + index,\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'\n }\n },\n children: blipChildren\n }, {\n name: 'a:stretch',\n children: [{\n name: 'a:fillRect'\n }]\n }]\n });\n};\nvar getSpPr = function (image, imageBoxSize) {\n var xfrm = {\n name: 'a:xfrm',\n children: [{\n name: 'a:off',\n properties: {\n rawMap: {\n x: 0,\n y: 0\n }\n }\n }, {\n name: 'a:ext',\n properties: {\n rawMap: {\n cx: imageBoxSize.width,\n cy: imageBoxSize.height\n }\n }\n }]\n };\n if (image.rotation) {\n var rotation = image.rotation;\n xfrm.properties = {\n rawMap: {\n rot: Math.min(Math.max(rotation, 0), 360) * 60000\n }\n };\n }\n var prstGeom = {\n name: 'a:prstGeom',\n properties: {\n rawMap: {\n prst: 'rect'\n }\n },\n children: [{ name: 'a:avLst' }]\n };\n var ret = {\n name: 'xdr:spPr',\n children: [xfrm, prstGeom]\n };\n return ret;\n};\nvar getImageBoxSize = function (image) {\n image.fitCell = !!image.fitCell || (!image.width || !image.height);\n var _a = image.position, position = _a === void 0 ? {} : _a, fitCell = image.fitCell, _b = image.width, width = _b === void 0 ? 0 : _b, _c = image.height, height = _c === void 0 ? 0 : _c, totalHeight = image.totalHeight, totalWidth = image.totalWidth;\n var _d = position.offsetX, offsetX = _d === void 0 ? 0 : _d, _e = position.offsetY, offsetY = _e === void 0 ? 0 : _e, _f = position.row, row = _f === void 0 ? 1 : _f, _g = position.rowSpan, rowSpan = _g === void 0 ? 1 : _g, _h = position.column, column = _h === void 0 ? 1 : _h, _j = position.colSpan, colSpan = _j === void 0 ? 1 : _j;\n return {\n from: {\n row: row - 1,\n col: column - 1,\n offsetX: pixelsToEMU(offsetX),\n offsetY: pixelsToEMU(offsetY)\n },\n to: {\n row: (row - 1) + (fitCell ? 1 : rowSpan - 1),\n col: (column - 1) + (fitCell ? 1 : colSpan - 1),\n offsetX: pixelsToEMU(width + offsetX),\n offsetY: pixelsToEMU(height + offsetY)\n },\n height: pixelsToEMU(totalHeight || height),\n width: pixelsToEMU(totalWidth || width)\n };\n};\nvar getPicture = function (image, currentIndex, worksheetImageIndex, imageBoxSize) {\n return {\n name: 'xdr:pic',\n children: [\n getNvPicPr(image, currentIndex + 1),\n getBlipFill(image, worksheetImageIndex + 1),\n getSpPr(image, imageBoxSize)\n ]\n };\n};\nvar drawingFactory = {\n getTemplate: function (config) {\n var sheetIndex = config.sheetIndex;\n var sheetImages = ExcelXlsxFactory.worksheetImages.get(sheetIndex);\n var sheetImageIds = ExcelXlsxFactory.worksheetImageIds.get(sheetIndex);\n var children = sheetImages.map(function (image, idx) {\n var boxSize = getImageBoxSize(image);\n return ({\n name: 'xdr:twoCellAnchor',\n properties: {\n rawMap: {\n editAs: 'absolute'\n }\n },\n children: [\n getAnchor('from', boxSize.from),\n getAnchor('to', boxSize.to),\n getPicture(image, idx, sheetImageIds.get(image.id).index, boxSize),\n { name: 'xdr:clientData' }\n ]\n });\n });\n return {\n name: 'xdr:wsDr',\n properties: {\n rawMap: {\n 'xmlns:a': 'http://schemas.openxmlformats.org/drawingml/2006/main',\n 'xmlns:xdr': 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing'\n }\n },\n children: children\n };\n }\n};\n\nvar __read$15 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar getColorChildren = function (props) {\n var _a = __read$15(props, 4), type = _a[0], innerType = _a[1], val = _a[2], lastClr = _a[3];\n return {\n name: \"a:\" + type,\n children: [{\n name: \"a:\" + innerType,\n properties: {\n rawMap: {\n val: val,\n lastClr: lastClr\n }\n }\n }]\n };\n};\nvar colorScheme = {\n getTemplate: function () {\n return {\n name: \"a:clrScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [\n getColorChildren(['dk1', 'sysClr', 'windowText', '000000']),\n getColorChildren(['lt1', 'sysClr', 'window', 'FFFFFF']),\n getColorChildren(['dk2', 'srgbClr', '44546A']),\n getColorChildren(['lt2', 'srgbClr', 'E7E6E6']),\n getColorChildren(['accent1', 'srgbClr', '4472C4']),\n getColorChildren(['accent2', 'srgbClr', 'ED7D31']),\n getColorChildren(['accent3', 'srgbClr', 'A5A5A5']),\n getColorChildren(['accent4', 'srgbClr', 'FFC000']),\n getColorChildren(['accent5', 'srgbClr', '5B9BD5']),\n getColorChildren(['accent6', 'srgbClr', '70AD47']),\n getColorChildren(['hlink', 'srgbClr', '0563C1']),\n getColorChildren(['folHlink', 'srgbClr', '954F72'])\n ]\n };\n }\n};\n\nvar __read$14 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar getFont$1 = function (props) {\n var _a = __read$14(props, 4), type = _a[0], typeface = _a[1], script = _a[2], panose = _a[3];\n return {\n name: \"a:\" + type,\n properties: {\n rawMap: {\n script: script,\n typeface: typeface,\n panose: panose\n }\n }\n };\n};\nvar fontScheme = {\n getTemplate: function () {\n var utf8_encode = _.utf8_encode;\n return {\n name: \"a:fontScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [{\n name: 'a:majorFont',\n children: [\n getFont$1(['latin', 'Calibri Light', undefined, '020F0302020204030204']),\n getFont$1(['ea', '']),\n getFont$1(['cs', '']),\n getFont$1(['font', utf8_encode('游ゴシック Light'), 'Jpan']),\n getFont$1(['font', utf8_encode('맑은 고딕'), 'Hang']),\n getFont$1(['font', utf8_encode('等线 Light'), 'Hans']),\n getFont$1(['font', utf8_encode('新細明體'), 'Hant']),\n getFont$1(['font', 'Times New Roman', 'Arab']),\n getFont$1(['font', 'Times New Roman', 'Hebr']),\n getFont$1(['font', 'Tahoma', 'Thai']),\n getFont$1(['font', 'Nyala', 'Ethi']),\n getFont$1(['font', 'Vrinda', 'Beng']),\n getFont$1(['font', 'Shruti', 'Gujr']),\n getFont$1(['font', 'MoolBoran', 'Khmr']),\n getFont$1(['font', 'Tunga', 'Knda']),\n getFont$1(['font', 'Raavi', 'Guru']),\n getFont$1(['font', 'Euphemia', 'Cans']),\n getFont$1(['font', 'Plantagenet Cherokee', 'Cher']),\n getFont$1(['font', 'Microsoft Yi Baiti', 'Yiii']),\n getFont$1(['font', 'Microsoft Himalaya', 'Tibt']),\n getFont$1(['font', 'MV Boli', 'Thaa']),\n getFont$1(['font', 'Mangal', 'Deva']),\n getFont$1(['font', 'Gautami', 'Telu']),\n getFont$1(['font', 'Latha', 'Taml']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrc']),\n getFont$1(['font', 'Kalinga', 'Orya']),\n getFont$1(['font', 'Kartika', 'Mlym']),\n getFont$1(['font', 'DokChampa', 'Laoo']),\n getFont$1(['font', 'Iskoola Pota', 'Sinh']),\n getFont$1(['font', 'Mongolian Baiti', 'Mong']),\n getFont$1(['font', 'Times New Roman', 'Viet']),\n getFont$1(['font', 'Microsoft Uighur', 'Uigh']),\n getFont$1(['font', 'Sylfaen', 'Geor']),\n getFont$1(['font', 'Arial', 'Armn']),\n getFont$1(['font', 'Leelawadee UI', 'Bugi']),\n getFont$1(['font', 'Microsoft JhengHei', 'Bopo']),\n getFont$1(['font', 'Javanese Text', 'Java']),\n getFont$1(['font', 'Segoe UI', 'Lisu']),\n getFont$1(['font', 'Myanmar Text', 'Mymr']),\n getFont$1(['font', 'Ebrima', 'Nkoo']),\n getFont$1(['font', 'Nirmala UI', 'Olck']),\n getFont$1(['font', 'Ebrima', 'Osma']),\n getFont$1(['font', 'Phagspa', 'Phag']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrn']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrj']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syre']),\n getFont$1(['font', 'Nirmala UI', 'Sora']),\n getFont$1(['font', 'Microsoft Tai Le', 'Tale']),\n getFont$1(['font', 'Microsoft New Tai Lue', 'Talu']),\n getFont$1(['font', 'Ebrima', 'Tfng'])\n ]\n }, {\n name: 'a:minorFont',\n children: [\n getFont$1(['latin', 'Calibri', undefined, '020F0502020204030204']),\n getFont$1(['ea', '']),\n getFont$1(['cs', '']),\n getFont$1(['font', utf8_encode('游ゴシック'), 'Jpan']),\n getFont$1(['font', utf8_encode('맑은 고딕'), 'Hang']),\n getFont$1(['font', utf8_encode('等线'), 'Hans']),\n getFont$1(['font', utf8_encode('新細明體'), 'Hant']),\n getFont$1(['font', 'Arial', 'Arab']),\n getFont$1(['font', 'Arial', 'Hebr']),\n getFont$1(['font', 'Tahoma', 'Thai']),\n getFont$1(['font', 'Nyala', 'Ethi']),\n getFont$1(['font', 'Vrinda', 'Beng']),\n getFont$1(['font', 'Shruti', 'Gujr']),\n getFont$1(['font', 'DaunPenh', 'Khmr']),\n getFont$1(['font', 'Tunga', 'Knda']),\n getFont$1(['font', 'Raavi', 'Guru']),\n getFont$1(['font', 'Euphemia', 'Cans']),\n getFont$1(['font', 'Plantagenet Cherokee', 'Cher']),\n getFont$1(['font', 'Microsoft Yi Baiti', 'Yiii']),\n getFont$1(['font', 'Microsoft Himalaya', 'Tibt']),\n getFont$1(['font', 'MV Boli', 'Thaa']),\n getFont$1(['font', 'Mangal', 'Deva']),\n getFont$1(['font', 'Gautami', 'Telu']),\n getFont$1(['font', 'Latha', 'Taml']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrc']),\n getFont$1(['font', 'Kalinga', 'Orya']),\n getFont$1(['font', 'Kartika', 'Mlym']),\n getFont$1(['font', 'DokChampa', 'Laoo']),\n getFont$1(['font', 'Iskoola Pota', 'Sinh']),\n getFont$1(['font', 'Mongolian Baiti', 'Mong']),\n getFont$1(['font', 'Arial', 'Viet']),\n getFont$1(['font', 'Microsoft Uighur', 'Uigh']),\n getFont$1(['font', 'Sylfaen', 'Geor']),\n getFont$1(['font', 'Arial', 'Armn']),\n getFont$1(['font', 'Leelawadee UI', 'Bugi']),\n getFont$1(['font', 'Microsoft JhengHei', 'Bopo']),\n getFont$1(['font', 'Javanese Text', 'Java']),\n getFont$1(['font', 'Segoe UI', 'Lisu']),\n getFont$1(['font', 'Myanmar Text', 'Mymr']),\n getFont$1(['font', 'Ebrima', 'Nkoo']),\n getFont$1(['font', 'Nirmala UI', 'Olck']),\n getFont$1(['font', 'Ebrima', 'Osma']),\n getFont$1(['font', 'Phagspa', 'Phag']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrn']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrj']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syre']),\n getFont$1(['font', 'Nirmala UI', 'Sora']),\n getFont$1(['font', 'Microsoft Tai Le', 'Tale']),\n getFont$1(['font', 'Microsoft New Tai Lue', 'Talu']),\n getFont$1(['font', 'Ebrima', 'Tfng'])\n ]\n }]\n };\n }\n};\n\nvar __read$13 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar getPropertyVal = function (name, val, children) { return ({\n name: \"a:\" + name,\n properties: {\n rawMap: {\n val: val\n }\n },\n children: children\n}); };\nvar getGs = function (props) {\n var _a = __read$13(props, 6), pos = _a[0], schemeColor = _a[1], satMod = _a[2], lumMod = _a[3], tint = _a[4], shade = _a[5];\n var children = [];\n children.push(getPropertyVal('satMod', satMod));\n if (lumMod) {\n children.push(getPropertyVal('lumMod', lumMod));\n }\n if (tint) {\n children.push(getPropertyVal('tint', tint));\n }\n if (shade) {\n children.push(getPropertyVal('shade', shade));\n }\n return {\n name: 'a:gs',\n properties: {\n rawMap: {\n pos: pos\n }\n },\n children: [{\n name: 'a:schemeClr',\n properties: {\n rawMap: {\n val: schemeColor\n }\n },\n children: children\n }]\n };\n};\nvar getSolidFill = function (val, children) { return ({\n name: 'a:solidFill',\n children: [getPropertyVal('schemeClr', val, children)]\n}); };\nvar getGradFill = function (props) {\n var _a = __read$13(props, 5), rotWithShape = _a[0], gs1 = _a[1], gs2 = _a[2], gs3 = _a[3], lin = _a[4];\n var _b = __read$13(lin, 2), ang = _b[0], scaled = _b[1];\n return {\n name: 'a:gradFill',\n properties: {\n rawMap: {\n rotWithShape: rotWithShape\n }\n },\n children: [{\n name: 'a:gsLst',\n children: [\n getGs(gs1),\n getGs(gs2),\n getGs(gs3)\n ]\n }, {\n name: 'a:lin',\n properties: {\n rawMap: {\n ang: ang,\n scaled: scaled\n }\n }\n }]\n };\n};\nvar getLine = function (props) {\n var _a = __read$13(props, 4), w = _a[0], cap = _a[1], cmpd = _a[2], algn = _a[3];\n return {\n name: 'a:ln',\n properties: {\n rawMap: { w: w, cap: cap, cmpd: cmpd, algn: algn }\n },\n children: [\n getSolidFill('phClr'),\n getPropertyVal('prstDash', 'solid'),\n {\n name: 'a:miter',\n properties: {\n rawMap: {\n lim: '800000'\n }\n }\n }\n ]\n };\n};\nvar getEffectStyle = function (shadow) {\n var children = [];\n if (shadow) {\n var _a = __read$13(shadow, 5), blurRad = _a[0], dist = _a[1], dir = _a[2], algn = _a[3], rotWithShape = _a[4];\n children.push({\n name: 'a:outerShdw',\n properties: {\n rawMap: { blurRad: blurRad, dist: dist, dir: dir, algn: algn, rotWithShape: rotWithShape }\n },\n children: [\n getPropertyVal('srgbClr', '000000', [getPropertyVal('alpha', '63000')])\n ]\n });\n }\n return {\n name: 'a:effectStyle',\n children: [Object.assign({}, {\n name: 'a:effectLst'\n }, children.length ? { children: children } : {})]\n };\n};\nvar getFillStyleList = function () { return ({\n name: 'a:fillStyleLst',\n children: [\n getSolidFill('phClr'),\n getGradFill([\n '1',\n ['0', 'phClr', '105000', '110000', '67000'],\n ['50000', 'phClr', '103000', '105000', '73000'],\n ['100000', 'phClr', '109000', '105000', '81000'],\n ['5400000', '0']\n ]),\n getGradFill([\n '1',\n ['0', 'phClr', '103000', '102000', '94000'],\n ['50000', 'phClr', '110000', '100000', undefined, '100000'],\n ['100000', 'phClr', '120000', '99000', undefined, '78000'],\n ['5400000', '0']\n ])\n ]\n}); };\nvar getLineStyleList = function () { return ({\n name: 'a:lnStyleLst',\n children: [\n getLine(['6350', 'flat', 'sng', 'ctr']),\n getLine(['12700', 'flat', 'sng', 'ctr']),\n getLine(['19050', 'flat', 'sng', 'ctr'])\n ]\n}); };\nvar getEffectStyleList = function () { return ({\n name: 'a:effectStyleLst',\n children: [\n getEffectStyle(),\n getEffectStyle(),\n getEffectStyle(['57150', '19050', '5400000', 'ctr', '0'])\n ]\n}); };\nvar getBgFillStyleList = function () { return ({\n name: 'a:bgFillStyleLst',\n children: [\n getSolidFill('phClr'),\n getSolidFill('phClr', [\n getPropertyVal('tint', '95000'),\n getPropertyVal('satMod', '170000'),\n ]),\n getGradFill([\n '1',\n ['0', 'phClr', '150000', '102000', '93000', '98000'],\n ['50000', 'phClr', '130000', '103000', '98000', '90000'],\n ['100000', 'phClr', '120000', undefined, undefined, '63000'],\n ['5400000', '0']\n ])\n ]\n}); };\nvar formatScheme = {\n getTemplate: function () {\n return {\n name: \"a:fmtScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [\n getFillStyleList(),\n getLineStyleList(),\n getEffectStyleList(),\n getBgFillStyleList()\n ]\n };\n }\n};\n\nvar themeElements = {\n getTemplate: function () {\n return {\n name: \"a:themeElements\",\n children: [\n colorScheme.getTemplate(),\n fontScheme.getTemplate(),\n formatScheme.getTemplate()\n ]\n };\n }\n};\n\nvar officeTheme = {\n getTemplate: function () {\n return {\n name: \"a:theme\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n a: \"http://schemas.openxmlformats.org/drawingml/2006/main\"\n },\n }],\n rawMap: {\n name: \"Office Theme\"\n }\n },\n children: [\n themeElements.getTemplate(),\n {\n name: 'a:objectDefaults'\n },\n {\n name: 'a:extraClrSchemeLst'\n }\n ]\n };\n }\n};\n\nvar buildSharedString = function (strMap) {\n var ret = [];\n strMap.forEach(function (val, key) {\n var textNode = key.toString();\n var child = {\n name: 't',\n textNode: _.utf8_encode(_.escapeString(textNode))\n };\n // if we have leading or trailing spaces, instruct Excel not to trim them\n var preserveSpaces = textNode.trim().length !== textNode.length;\n if (preserveSpaces) {\n child.properties = {\n rawMap: {\n \"xml:space\": \"preserve\"\n }\n };\n }\n ret.push({\n name: 'si',\n children: [child]\n });\n });\n return ret;\n};\nvar sharedStrings = {\n getTemplate: function (strings) {\n return {\n name: \"sst\",\n properties: {\n rawMap: {\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n count: strings.size,\n uniqueCount: strings.size\n }\n },\n children: buildSharedString(strings)\n };\n }\n};\n\nvar numberFormatFactory = {\n getTemplate: function (numberFormat) {\n var formatCode = numberFormat.formatCode, numFmtId = numberFormat.numFmtId;\n return {\n name: \"numFmt\",\n properties: {\n rawMap: {\n formatCode: formatCode,\n numFmtId: numFmtId\n }\n }\n };\n }\n};\n\nvar numberFormatsFactory = {\n getTemplate: function (numberFormats) {\n return {\n name: \"numFmts\",\n properties: {\n rawMap: {\n count: numberFormats.length\n }\n },\n children: numberFormats.map(function (numberFormat) { return numberFormatFactory.getTemplate(numberFormat); })\n };\n }\n};\n\nvar fontFactory = {\n getTemplate: function (font) {\n var size = font.size, colorTheme = font.colorTheme, _a = font.color, color = _a === void 0 ? 'FF000000' : _a, _b = font.fontName, fontName = _b === void 0 ? 'Calibri' : _b, family = font.family, scheme = font.scheme, italic = font.italic, bold = font.bold, strikeThrough = font.strikeThrough, outline = font.outline, shadow = font.shadow, underline = font.underline, verticalAlign = font.verticalAlign;\n var children = [\n { name: 'sz', properties: { rawMap: { val: size } } },\n { name: 'color', properties: { rawMap: { theme: colorTheme, rgb: color } } },\n { name: 'name', properties: { rawMap: { val: fontName } } }\n ];\n if (family) {\n children.push({ name: 'family', properties: { rawMap: { val: family } } });\n }\n if (scheme) {\n children.push({ name: 'scheme', properties: { rawMap: { val: scheme } } });\n }\n if (italic) {\n children.push({ name: 'i' });\n }\n if (bold) {\n children.push({ name: 'b' });\n }\n if (strikeThrough) {\n children.push({ name: 'strike' });\n }\n if (outline) {\n children.push({ name: 'outline' });\n }\n if (shadow) {\n children.push({ name: 'shadow' });\n }\n if (underline) {\n children.push({ name: 'u', properties: { rawMap: { val: underline } } });\n }\n if (verticalAlign) {\n children.push({ name: 'vertAlign', properties: { rawMap: { val: verticalAlign } } });\n }\n return { name: \"font\", children: children };\n }\n};\n\nvar fontsFactory = {\n getTemplate: function (fonts) {\n return {\n name: \"fonts\",\n properties: {\n rawMap: {\n count: fonts.length\n }\n },\n children: fonts.map(function (font) { return fontFactory.getTemplate(font); })\n };\n }\n};\n\nvar fillFactory = {\n getTemplate: function (fill) {\n var patternType = fill.patternType, fgTheme = fill.fgTheme, fgTint = fill.fgTint, fgRgb = fill.fgRgb, bgRgb = fill.bgRgb, bgIndexed = fill.bgIndexed;\n var pf = {\n name: 'patternFill',\n properties: {\n rawMap: {\n patternType: patternType\n }\n }\n };\n if (fgTheme || fgTint || fgRgb) {\n pf.children = [{\n name: 'fgColor',\n properties: {\n rawMap: {\n theme: fgTheme,\n tint: fgTint,\n rgb: fgRgb\n }\n }\n }];\n }\n if (bgIndexed || bgRgb) {\n if (!pf.children) {\n pf.children = [];\n }\n pf.children.push({\n name: 'bgColor',\n properties: {\n rawMap: {\n indexed: bgIndexed,\n rgb: bgRgb\n }\n }\n });\n }\n return {\n name: \"fill\",\n children: [pf]\n };\n }\n};\n\nvar fillsFactory = {\n getTemplate: function (fills) {\n return {\n name: \"fills\",\n properties: {\n rawMap: {\n count: fills.length\n }\n },\n children: fills.map(function (fill) { return fillFactory.getTemplate(fill); })\n };\n }\n};\n\nvar getWeightName = function (value) {\n switch (value) {\n case 1: return 'thin';\n case 2: return 'medium';\n case 3: return 'thick';\n default: return 'hair';\n }\n};\nvar mappedBorderNames = {\n None: 'None',\n Dot: 'Dotted',\n Dash: 'Dashed',\n Double: 'Double',\n DashDot: 'DashDot',\n DashDotDot: 'DashDotDot',\n SlantDashDot: 'SlantDashDot'\n};\nvar mediumBorders = ['Dashed', 'DashDot', 'DashDotDot'];\nvar colorMap = {\n None: 'none',\n Solid: 'solid',\n Gray50: 'mediumGray',\n Gray75: 'darkGray',\n Gray25: 'lightGray',\n HorzStripe: 'darkHorizontal',\n VertStripe: 'darkVertical',\n ReverseDiagStripe: 'darkDown',\n DiagStripe: 'darkUp',\n DiagCross: 'darkGrid',\n ThickDiagCross: 'darkTrellis',\n ThinHorzStripe: 'lightHorizontal',\n ThinVertStripe: 'lightVertical',\n ThinReverseDiagStripe: 'lightDown',\n ThinDiagStripe: 'lightUp',\n ThinHorzCross: 'lightGrid',\n ThinDiagCross: 'lightTrellis',\n Gray125: 'gray125',\n Gray0625: 'gray0625'\n};\nvar horizontalAlignmentMap = {\n Automatic: 'general',\n Left: 'left',\n Center: 'center',\n Right: 'right',\n Fill: 'fill',\n Justify: 'justify',\n CenterAcrossSelection: 'centerContinuous',\n Distributed: 'distributed',\n JustifyDistributed: 'justify'\n};\nvar verticalAlignmentMap = {\n Automatic: undefined,\n Top: 'top',\n Bottom: 'bottom',\n Center: 'center',\n Justify: 'justify',\n Distributed: 'distributed',\n JustifyDistributed: 'justify'\n};\nvar convertLegacyPattern = function (name) {\n if (!name) {\n return 'none';\n }\n return colorMap[name] || name;\n};\nvar convertLegacyColor = function (color) {\n if (color == undefined) {\n return color;\n }\n if (color.charAt(0) === '#') {\n color = color.substr(1);\n }\n return color.length === 6 ? 'FF' + color : color;\n};\nvar convertLegacyBorder = function (type, weight) {\n if (!type) {\n return 'thin';\n }\n // Legacy Types are: None, Continuous, Dash, Dot, DashDot, DashDotDot, SlantDashDot, and Double\n // Weight represents: 0—Hairline, 1—Thin , 2—Medium, 3—Thick\n // New types: none, thin, medium, dashed, dotted, thick, double, hair, mediumDashed, dashDot, mediumDashDot,\n // dashDotDot, mediumDashDotDot, slantDashDot\n var namedWeight = getWeightName(weight);\n var mappedName = mappedBorderNames[type];\n if (type === 'Continuous') {\n return namedWeight;\n }\n if (namedWeight === 'medium' && mediumBorders.indexOf(mappedName) !== -1) {\n return \"medium\" + mappedName;\n }\n return mappedName.charAt(0).toLowerCase() + mappedName.substr(1);\n};\nvar convertLegacyHorizontalAlignment = function (alignment) {\n return horizontalAlignmentMap[alignment] || 'general';\n};\nvar convertLegacyVerticalAlignment = function (alignment) {\n return verticalAlignmentMap[alignment] || undefined;\n};\n\nvar getBorderColor = function (color) {\n return {\n name: 'color',\n properties: {\n rawMap: {\n rgb: convertLegacyColor(color || '#000000')\n }\n }\n };\n};\nvar borderFactory$1 = {\n getTemplate: function (border) {\n var left = border.left, right = border.right, top = border.top, bottom = border.bottom, diagonal = border.diagonal;\n var leftChildren = left ? [getBorderColor(left.color)] : undefined;\n var rightChildren = right ? [getBorderColor(right.color)] : undefined;\n var topChildren = top ? [getBorderColor(top.color)] : undefined;\n var bottomChildren = bottom ? [getBorderColor(bottom.color)] : undefined;\n var diagonalChildren = diagonal ? [getBorderColor(diagonal.color)] : undefined;\n return {\n name: 'border',\n children: [{\n name: 'left',\n properties: { rawMap: { style: left && left.style } },\n children: leftChildren\n }, {\n name: 'right',\n properties: { rawMap: { style: right && right.style } },\n children: rightChildren\n }, {\n name: 'top',\n properties: { rawMap: { style: top && top.style } },\n children: topChildren\n }, {\n name: 'bottom',\n properties: { rawMap: { style: bottom && bottom.style } },\n children: bottomChildren\n }, {\n name: 'diagonal',\n properties: { rawMap: { style: diagonal && diagonal.style } },\n children: diagonalChildren\n }]\n };\n }\n};\n\nvar bordersFactory = {\n getTemplate: function (borders) {\n return {\n name: \"borders\",\n properties: {\n rawMap: {\n count: borders.length\n }\n },\n children: borders.map(function (border) { return borderFactory$1.getTemplate(border); })\n };\n }\n};\n\nvar getReadingOrderId = function (readingOrder) {\n var order = ['Context', 'LeftToRight', 'RightToLeft'];\n var pos = order.indexOf(readingOrder);\n return Math.max(pos, 0);\n};\nvar alignmentFactory = {\n getTemplate: function (alignment) {\n var horizontal = alignment.horizontal, indent = alignment.indent, readingOrder = alignment.readingOrder, rotate = alignment.rotate, shrinkToFit = alignment.shrinkToFit, vertical = alignment.vertical, wrapText = alignment.wrapText;\n return {\n name: 'alignment',\n properties: {\n rawMap: {\n horizontal: horizontal && convertLegacyHorizontalAlignment(horizontal),\n indent: indent,\n readingOrder: readingOrder && getReadingOrderId(readingOrder),\n textRotation: rotate,\n shrinkToFit: shrinkToFit,\n vertical: vertical && convertLegacyVerticalAlignment(vertical),\n wrapText: wrapText\n }\n }\n };\n }\n};\n\nvar protectionFactory = {\n getTemplate: function (protection) {\n var locked = protection.protected === false ? 0 : 1;\n var hidden = protection.hideFormula === true ? 1 : 0;\n return {\n name: 'protection',\n properties: {\n rawMap: {\n hidden: hidden,\n locked: locked\n }\n }\n };\n }\n};\n\nvar xfFactory = {\n getTemplate: function (xf) {\n var alignment = xf.alignment, borderId = xf.borderId, fillId = xf.fillId, fontId = xf.fontId, numFmtId = xf.numFmtId, protection = xf.protection, xfId = xf.xfId;\n var children = [];\n if (alignment) {\n children.push(alignmentFactory.getTemplate(alignment));\n }\n if (protection) {\n children.push(protectionFactory.getTemplate(protection));\n }\n return {\n name: \"xf\",\n properties: {\n rawMap: {\n applyAlignment: alignment ? 1 : undefined,\n applyProtection: protection ? 1 : undefined,\n applyBorder: borderId ? 1 : undefined,\n applyFill: fillId ? 1 : undefined,\n borderId: borderId,\n fillId: fillId,\n applyFont: fontId ? 1 : undefined,\n fontId: fontId,\n applyNumberFormat: numFmtId ? 1 : undefined,\n numFmtId: numFmtId,\n xfId: xfId\n }\n },\n children: children.length ? children : undefined\n };\n }\n};\n\nvar cellStylesXfsFactory = {\n getTemplate: function (xfs) {\n return {\n name: \"cellStyleXfs\",\n properties: {\n rawMap: {\n count: xfs.length\n }\n },\n children: xfs.map(function (xf) { return xfFactory.getTemplate(xf); })\n };\n }\n};\n\nvar cellXfsFactory = {\n getTemplate: function (xfs) {\n return {\n name: \"cellXfs\",\n properties: {\n rawMap: {\n count: xfs.length\n }\n },\n children: xfs.map(function (xf) { return xfFactory.getTemplate(xf); })\n };\n }\n};\n\nvar borderFactory = {\n getTemplate: function (cellStyle) {\n var builtinId = cellStyle.builtinId, name = cellStyle.name, xfId = cellStyle.xfId;\n return {\n name: \"cellStyle\",\n properties: {\n rawMap: {\n builtinId: builtinId,\n name: name,\n xfId: xfId\n }\n }\n };\n }\n};\n\nvar cellStylesFactory = {\n getTemplate: function (cellStyles) {\n return {\n name: \"cellStyles\",\n properties: {\n rawMap: {\n count: cellStyles.length\n }\n },\n children: cellStyles.map(function (cellStyle) { return borderFactory.getTemplate(cellStyle); })\n };\n }\n};\n\nvar __assign$L = (undefined && undefined.__assign) || function () {\n __assign$L = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$L.apply(this, arguments);\n};\nvar stylesMap;\nvar registeredNumberFmts;\nvar registeredFonts;\nvar registeredFills;\nvar registeredBorders;\nvar registeredCellStyleXfs;\nvar registeredCellXfs;\nvar registeredCellStyles;\nvar currentSheet;\nvar getStyleName = function (name, currentSheet) {\n if (name.indexOf('mixedStyle') !== -1 && currentSheet > 1) {\n name += \"_\" + currentSheet;\n }\n return name;\n};\nvar resetStylesheetValues = function () {\n stylesMap = { base: 0 };\n registeredNumberFmts = [];\n registeredFonts = [{ fontName: 'Calibri', colorTheme: '1', family: '2', scheme: 'minor' }];\n registeredFills = [{ patternType: 'none', }, { patternType: 'gray125' }];\n registeredBorders = [{ left: undefined, right: undefined, top: undefined, bottom: undefined, diagonal: undefined }];\n registeredCellStyleXfs = [{ borderId: 0, fillId: 0, fontId: 0, numFmtId: 0 }];\n registeredCellXfs = [{ borderId: 0, fillId: 0, fontId: 0, numFmtId: 0, xfId: 0 }];\n registeredCellStyles = [{ builtinId: 0, name: 'Normal', xfId: 0 }];\n};\nvar registerFill = function (fill) {\n var convertedPattern = convertLegacyPattern(fill.pattern);\n var convertedFillColor = convertLegacyColor(fill.color);\n var convertedPatternColor = convertLegacyColor(fill.patternColor);\n var pos = registeredFills.findIndex(function (currentFill) {\n var patternType = currentFill.patternType, fgRgb = currentFill.fgRgb, bgRgb = currentFill.bgRgb;\n if (patternType != convertedPattern ||\n fgRgb != convertedFillColor ||\n bgRgb != convertedPatternColor) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredFills.length;\n registeredFills.push({ patternType: convertedPattern, fgRgb: convertedFillColor, bgRgb: convertedPatternColor });\n }\n return pos;\n};\nvar registerNumberFmt = function (format) {\n format = _.utf8_encode(format);\n if (numberFormatMap[format]) {\n return numberFormatMap[format];\n }\n var pos = registeredNumberFmts.findIndex(function (currentFormat) { return currentFormat.formatCode === format; });\n if (pos === -1) {\n pos = registeredNumberFmts.length + 164;\n registeredNumberFmts.push({ formatCode: format, numFmtId: pos });\n }\n else {\n pos = registeredNumberFmts[pos].numFmtId;\n }\n return pos;\n};\nvar registerBorders = function (borders) {\n var borderBottom = borders.borderBottom, borderTop = borders.borderTop, borderLeft = borders.borderLeft, borderRight = borders.borderRight;\n var bottomStyle;\n var topStyle;\n var leftStyle;\n var rightStyle;\n var bottomColor;\n var topColor;\n var leftColor;\n var rightColor;\n if (borderLeft) {\n leftStyle = convertLegacyBorder(borderLeft.lineStyle, borderLeft.weight);\n leftColor = convertLegacyColor(borderLeft.color);\n }\n if (borderRight) {\n rightStyle = convertLegacyBorder(borderRight.lineStyle, borderRight.weight);\n rightColor = convertLegacyColor(borderRight.color);\n }\n if (borderBottom) {\n bottomStyle = convertLegacyBorder(borderBottom.lineStyle, borderBottom.weight);\n bottomColor = convertLegacyColor(borderBottom.color);\n }\n if (borderTop) {\n topStyle = convertLegacyBorder(borderTop.lineStyle, borderTop.weight);\n topColor = convertLegacyColor(borderTop.color);\n }\n var pos = registeredBorders.findIndex(function (currentBorder) {\n var left = currentBorder.left, right = currentBorder.right, top = currentBorder.top, bottom = currentBorder.bottom;\n if (!left && (leftStyle || leftColor)) {\n return false;\n }\n if (!right && (rightStyle || rightColor)) {\n return false;\n }\n if (!top && (topStyle || topColor)) {\n return false;\n }\n if (!bottom && (bottomStyle || bottomColor)) {\n return false;\n }\n var _a = left || {}, clS = _a.style, clC = _a.color;\n var _b = right || {}, crS = _b.style, crC = _b.color;\n var _c = top || {}, ctS = _c.style, ctC = _c.color;\n var _d = bottom || {}, cbS = _d.style, cbC = _d.color;\n if (clS != leftStyle || clC != leftColor) {\n return false;\n }\n if (crS != rightStyle || crC != rightColor) {\n return false;\n }\n if (ctS != topStyle || ctC != topColor) {\n return false;\n }\n if (cbS != bottomStyle || cbC != bottomColor) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredBorders.length;\n registeredBorders.push({\n left: {\n style: leftStyle, color: leftColor\n },\n right: {\n style: rightStyle, color: rightColor\n },\n top: {\n style: topStyle, color: topColor\n },\n bottom: {\n style: bottomStyle, color: bottomColor\n },\n diagonal: {\n style: undefined,\n color: undefined\n }\n });\n }\n return pos;\n};\nvar registerFont = function (font) {\n var _a = font.fontName, name = _a === void 0 ? 'Calibri' : _a, color = font.color, size = font.size, bold = font.bold, italic = font.italic, outline = font.outline, shadow = font.shadow, strikeThrough = font.strikeThrough, underline = font.underline, family = font.family, verticalAlign = font.verticalAlign;\n var utf8Name = name ? _.utf8_encode(name) : name;\n var convertedColor = convertLegacyColor(color);\n var familyId = getFontFamilyId(family);\n var convertedUnderline = underline ? underline.toLocaleLowerCase() : undefined;\n var convertedVerticalAlign = verticalAlign ? verticalAlign.toLocaleLowerCase() : undefined;\n var pos = registeredFonts.findIndex(function (currentFont) {\n if (currentFont.fontName != utf8Name ||\n currentFont.color != convertedColor ||\n currentFont.size != size ||\n currentFont.bold != bold ||\n currentFont.italic != italic ||\n currentFont.outline != outline ||\n currentFont.shadow != shadow ||\n currentFont.strikeThrough != strikeThrough ||\n currentFont.underline != convertedUnderline ||\n currentFont.verticalAlign != convertedVerticalAlign ||\n // @ts-ignore\n currentFont.family != familyId) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredFonts.length;\n registeredFonts.push({\n fontName: utf8Name,\n color: convertedColor,\n size: size,\n bold: bold,\n italic: italic,\n outline: outline,\n shadow: shadow,\n strikeThrough: strikeThrough,\n underline: convertedUnderline,\n verticalAlign: convertedVerticalAlign,\n family: familyId != null ? familyId.toString() : undefined\n });\n }\n return pos;\n};\nvar registerStyle = function (config) {\n var alignment = config.alignment, borders = config.borders, font = config.font, interior = config.interior, numberFormat = config.numberFormat, protection = config.protection;\n var id = config.id;\n var currentFill = 0;\n var currentBorder = 0;\n var currentFont = 0;\n var currentNumberFmt = 0;\n if (!id) {\n return;\n }\n id = getStyleName(id, currentSheet);\n if (stylesMap[id] != undefined) {\n return;\n }\n if (interior) {\n currentFill = registerFill(interior);\n }\n if (borders) {\n currentBorder = registerBorders(borders);\n }\n if (font) {\n currentFont = registerFont(font);\n }\n if (numberFormat) {\n currentNumberFmt = registerNumberFmt(numberFormat.format);\n }\n stylesMap[id] = registeredCellXfs.length;\n registeredCellXfs.push({\n alignment: alignment,\n borderId: currentBorder || 0,\n fillId: currentFill || 0,\n fontId: currentFont || 0,\n numFmtId: currentNumberFmt || 0,\n protection: protection,\n xfId: 0\n });\n};\nvar stylesheetFactory = {\n getTemplate: function (defaultFontSize) {\n var numberFormats = numberFormatsFactory.getTemplate(registeredNumberFmts);\n var fonts = fontsFactory.getTemplate(registeredFonts.map(function (font) { return (__assign$L(__assign$L({}, font), { size: font.size != null ? font.size : defaultFontSize })); }));\n var fills = fillsFactory.getTemplate(registeredFills);\n var borders = bordersFactory.getTemplate(registeredBorders);\n var cellStylesXfs = cellStylesXfsFactory.getTemplate(registeredCellStyleXfs);\n var cellXfs = cellXfsFactory.getTemplate(registeredCellXfs);\n var cellStyles = cellStylesFactory.getTemplate(registeredCellStyles);\n resetStylesheetValues();\n return {\n name: 'styleSheet',\n properties: {\n rawMap: {\n 'mc:Ignorable': 'x14ac x16r2 xr',\n 'xmlns': 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',\n 'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac',\n 'xmlns:x16r2': 'http://schemas.microsoft.com/office/spreadsheetml/2015/02/main',\n 'xmlns:xr': 'http://schemas.microsoft.com/office/spreadsheetml/2014/revision'\n }\n },\n children: [\n numberFormats,\n fonts,\n fills,\n borders,\n cellStylesXfs,\n cellXfs,\n cellStyles,\n {\n name: 'tableStyles',\n properties: {\n rawMap: {\n count: 0,\n defaultPivotStyle: 'PivotStyleLight16',\n defaultTableStyle: 'TableStyleMedium2'\n }\n }\n }\n ]\n };\n }\n};\nvar getStyleId = function (name, currentSheet) {\n return stylesMap[getStyleName(name, currentSheet)] || 0;\n};\nvar registerStyles = function (styles, _currentSheet) {\n currentSheet = _currentSheet;\n if (currentSheet === 1) {\n resetStylesheetValues();\n }\n styles.forEach(registerStyle);\n};\n\nvar sheetFactory = {\n getTemplate: function (name, idx) {\n var sheetId = (idx + 1).toString();\n return {\n name: \"sheet\",\n properties: {\n rawMap: {\n \"name\": name,\n \"sheetId\": sheetId,\n \"r:id\": \"rId\" + sheetId\n }\n }\n };\n }\n};\n\nvar sheetsFactory = {\n getTemplate: function (names) {\n return {\n name: \"sheets\",\n children: names.map(function (sheet, idx) { return sheetFactory.getTemplate(sheet, idx); })\n };\n }\n};\n\nvar workbookFactory = {\n getTemplate: function (names) {\n return {\n name: \"workbook\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n },\n }],\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n }\n },\n children: [sheetsFactory.getTemplate(names)]\n };\n }\n};\n\n// https://docs.microsoft.com/en-us/office/troubleshoot/excel/determine-column-widths\nvar getExcelCellWidth = function (width) { return Math.ceil((width - 12) / 7 + 1); };\nvar columnFactory = {\n getTemplate: function (config) {\n var min = config.min, max = config.max, outlineLevel = config.outlineLevel, s = config.s, width = config.width, hidden = config.hidden, bestFit = config.bestFit;\n var excelWidth = 1;\n var customWidth = '0';\n if (width > 1) {\n excelWidth = getExcelCellWidth(width);\n customWidth = '1';\n }\n return {\n name: 'col',\n properties: {\n rawMap: {\n min: min,\n max: max,\n outlineLevel: outlineLevel != null ? outlineLevel : undefined,\n width: excelWidth,\n style: s,\n hidden: hidden ? '1' : '0',\n bestFit: bestFit ? '1' : '0',\n customWidth: customWidth\n }\n }\n };\n }\n};\n\nvar convertLegacyType = function (type) {\n var t = type.charAt(0).toLowerCase();\n return t === 's' ? 'inlineStr' : t;\n};\nvar cellFactory = {\n getTemplate: function (config, idx, currentSheet) {\n var ref = config.ref, data = config.data, styleId = config.styleId;\n var _a = data || { type: 'empty', value: null }, type = _a.type, value = _a.value;\n var convertedType = type;\n if (type === 'f') {\n convertedType = 'str';\n }\n else if (type.charAt(0) === type.charAt(0).toUpperCase()) {\n convertedType = convertLegacyType(type);\n }\n var obj = {\n name: 'c',\n properties: {\n rawMap: {\n r: ref,\n t: convertedType === 'empty' ? undefined : convertedType,\n s: styleId ? getStyleId(styleId, currentSheet) : undefined\n }\n }\n };\n if (convertedType === 'empty') {\n return obj;\n }\n var children;\n if (convertedType === 'str' && type === 'f') {\n children = [{\n name: 'f',\n textNode: _.escapeString(_.utf8_encode(value))\n }];\n }\n else if (convertedType === 'inlineStr') {\n children = [{\n name: 'is',\n children: [{\n name: 't',\n textNode: _.escapeString(_.utf8_encode(value))\n }]\n }];\n }\n else {\n children = [{\n name: 'v',\n textNode: value\n }];\n }\n return Object.assign({}, obj, { children: children });\n }\n};\n\nvar __read$12 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$D = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$12(arguments[i]));\n return ar;\n};\nvar addEmptyCells = function (cells, rowIdx) {\n var mergeMap = [];\n var posCounter = 0;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.mergeAcross) {\n mergeMap.push({\n pos: i,\n excelPos: posCounter\n });\n posCounter += cell.mergeAcross;\n }\n posCounter++;\n }\n if (mergeMap.length) {\n for (var i = mergeMap.length - 1; i >= 0; i--) {\n var mergedCells = [];\n var cell = cells[mergeMap[i].pos];\n for (var j = 1; j <= cell.mergeAcross; j++) {\n mergedCells.push({\n ref: \"\" + getExcelColumnName(mergeMap[i].excelPos + 1 + j) + (rowIdx + 1),\n styleId: cell.styleId,\n data: { type: 'empty', value: null }\n });\n }\n if (mergedCells.length) {\n cells.splice.apply(cells, __spread$D([mergeMap[i].pos + 1, 0], mergedCells));\n }\n }\n }\n};\nvar shouldDisplayCell = function (cell) { var _a; return ((_a = cell.data) === null || _a === void 0 ? void 0 : _a.value) !== '' || cell.styleId !== undefined; };\nvar rowFactory = {\n getTemplate: function (config, idx, currentSheet) {\n var collapsed = config.collapsed, hidden = config.hidden, height = config.height, outlineLevel = config.outlineLevel, _a = config.cells, cells = _a === void 0 ? [] : _a;\n addEmptyCells(cells, idx);\n var children = cells.filter(shouldDisplayCell).map(function (cell, idx) { return cellFactory.getTemplate(cell, idx, currentSheet); });\n return {\n name: \"row\",\n properties: {\n rawMap: {\n r: idx + 1,\n collapsed: collapsed,\n hidden: hidden ? '1' : '0',\n ht: height,\n customHeight: height != null ? '1' : '0',\n spans: '1:1',\n outlineLevel: outlineLevel || undefined\n }\n },\n children: children\n };\n }\n};\n\nvar mergeCellFactory = {\n getTemplate: function (ref) {\n return {\n name: 'mergeCell',\n properties: {\n rawMap: {\n ref: ref\n }\n }\n };\n }\n};\n\nvar getMergedCellsAndAddColumnGroups = function (rows, cols) {\n var mergedCells = [];\n var cellsWithCollapsibleGroups = [];\n rows.forEach(function (currentRow, rowIdx) {\n var cells = currentRow.cells;\n var merges = 0;\n var lastCol;\n cells.forEach(function (currentCell, cellIdx) {\n var min = cellIdx + merges + 1;\n var start = getExcelColumnName(min);\n var outputRow = rowIdx + 1;\n if (currentCell.mergeAcross) {\n merges += currentCell.mergeAcross;\n var end = getExcelColumnName(cellIdx + merges + 1);\n mergedCells.push(\"\" + start + outputRow + \":\" + end + outputRow);\n }\n if (!cols[min - 1]) {\n cols[min - 1] = {};\n }\n var collapsibleRanges = currentCell.collapsibleRanges;\n if (collapsibleRanges) {\n collapsibleRanges.forEach(function (range) {\n cellsWithCollapsibleGroups.push([min + range[0], min + range[1]]);\n });\n }\n lastCol = cols[min - 1];\n lastCol.min = min;\n lastCol.max = min;\n currentCell.ref = \"\" + start + outputRow;\n });\n });\n cellsWithCollapsibleGroups.sort(function (a, b) {\n if (a[0] !== b[0]) {\n return a[0] - b[0];\n }\n return b[1] - a[1];\n });\n var rangeMap = new Map();\n var outlineLevel = new Map();\n cellsWithCollapsibleGroups.filter(function (currentRange) {\n var rangeString = currentRange.toString();\n var inMap = rangeMap.get(rangeString);\n if (inMap) {\n return false;\n }\n rangeMap.set(rangeString, true);\n return true;\n }).forEach(function (range) {\n var refCol = cols.find(function (col) { return col.min == range[0] && col.max == range[1]; });\n var currentOutlineLevel = outlineLevel.get(range[0]);\n cols.push({\n min: range[0],\n max: range[1],\n outlineLevel: currentOutlineLevel || 1,\n width: (refCol || { width: 100 }).width\n });\n outlineLevel.set(range[0], (currentOutlineLevel || 0) + 1);\n });\n return mergedCells;\n};\nvar getPageOrientation = function (orientation) {\n if (!orientation || (orientation !== 'Portrait' && orientation !== 'Landscape')) {\n return 'portrait';\n }\n return orientation.toLocaleLowerCase();\n};\nvar getPageSize = function (pageSize) {\n if (pageSize == null) {\n return 1;\n }\n var positions = ['Letter', 'Letter Small', 'Tabloid', 'Ledger', 'Legal', 'Statement', 'Executive', 'A3', 'A4', 'A4 Small', 'A5', 'A6', 'B4', 'B5', 'Folio', 'Envelope', 'Envelope DL', 'Envelope C5', 'Envelope B5', 'Envelope C3', 'Envelope C4', 'Envelope C6', 'Envelope Monarch', 'Japanese Postcard', 'Japanese Double Postcard'];\n var pos = positions.indexOf(pageSize);\n return pos === -1 ? 1 : (pos + 1);\n};\nvar addColumns = function (columns) {\n return function (children) {\n if (columns.length) {\n children.push({\n name: 'cols',\n children: columns.map(function (column) { return columnFactory.getTemplate(column); })\n });\n }\n return children;\n };\n};\nvar addSheetData = function (rows, sheetNumber) {\n return function (children) {\n if (rows.length) {\n children.push({\n name: 'sheetData',\n children: rows.map(function (row, idx) { return rowFactory.getTemplate(row, idx, sheetNumber); })\n });\n }\n return children;\n };\n};\nvar addMergeCells = function (mergeCells) {\n return function (children) {\n if (mergeCells.length) {\n children.push({\n name: 'mergeCells',\n properties: {\n rawMap: {\n count: mergeCells.length\n }\n },\n children: mergeCells.map(function (mergedCell) { return mergeCellFactory.getTemplate(mergedCell); })\n });\n }\n return children;\n };\n};\nvar addPageMargins = function (margins) {\n return function (children) {\n var _a = margins.top, top = _a === void 0 ? 0.75 : _a, _b = margins.right, right = _b === void 0 ? 0.7 : _b, _c = margins.bottom, bottom = _c === void 0 ? 0.75 : _c, _d = margins.left, left = _d === void 0 ? 0.7 : _d, _e = margins.header, header = _e === void 0 ? 0.3 : _e, _f = margins.footer, footer = _f === void 0 ? 0.3 : _f;\n children.push({\n name: 'pageMargins',\n properties: {\n rawMap: { bottom: bottom, footer: footer, header: header, left: left, right: right, top: top }\n }\n });\n return children;\n };\n};\nvar addPageSetup = function (pageSetup) {\n return function (children) {\n if (pageSetup) {\n children.push({\n name: 'pageSetup',\n properties: {\n rawMap: {\n horizontalDpi: 0,\n verticalDpi: 0,\n orientation: getPageOrientation(pageSetup.orientation),\n paperSize: getPageSize(pageSetup.pageSize)\n }\n }\n });\n }\n return children;\n };\n};\nvar replaceHeaderFooterTokens = function (value) {\n var map = {\n '&[Page]': '&P',\n '&[Pages]': '&N',\n '&[Date]': '&D',\n '&[Time]': '&T',\n '&[Tab]': '&A',\n '&[Path]': '&Z',\n '&[File]': '&F'\n };\n _.iterateObject(map, function (key, val) {\n value = value.replace(key, val);\n });\n return value;\n};\nvar getHeaderPosition = function (position) {\n if (position === 'Center') {\n return 'C';\n }\n if (position === 'Right') {\n return 'R';\n }\n return 'L';\n};\nvar applyHeaderFontStyle = function (headerString, font) {\n if (!font) {\n return headerString;\n }\n headerString += '&"';\n headerString += font.fontName || 'Calibri';\n if (font.bold !== font.italic) {\n headerString += font.bold ? ',Bold' : ',Italic';\n }\n else if (font.bold) {\n headerString += ',Bold Italic';\n }\n else {\n headerString += ',Regular';\n }\n headerString += '"';\n if (font.size) {\n headerString += \"&\" + font.size;\n }\n if (font.strikeThrough) {\n headerString += '&S';\n }\n if (font.underline) {\n headerString += \"&\" + (font.underline === 'Double' ? 'E' : 'U');\n }\n if (font.color) {\n headerString += \"&K\" + font.color.replace('#', '').toUpperCase();\n }\n return headerString;\n};\nvar processHeaderFooterContent = function (content) {\n return content.reduce(function (prev, curr) {\n var pos = getHeaderPosition(curr.position);\n var output = applyHeaderFontStyle(prev + \"&\" + pos, curr.font);\n return \"\" + output + _.escapeString(replaceHeaderFooterTokens(curr.value));\n }, '');\n};\nvar buildHeaderFooter = function (headerFooterConfig) {\n var rules = ['all', 'first', 'even'];\n var headersAndFooters = [];\n rules.forEach(function (rule) {\n var headerFooter = headerFooterConfig[rule];\n var namePrefix = rule === 'all' ? 'odd' : rule;\n if (!headerFooter || (!headerFooter.header && !headerFooter.footer)) {\n return;\n }\n _.iterateObject(headerFooter, function (key, value) {\n var nameSuffix = \"\" + key.charAt(0).toUpperCase() + key.slice(1);\n if (value) {\n headersAndFooters.push({\n name: \"\" + namePrefix + nameSuffix,\n properties: {\n rawMap: {\n 'xml:space': 'preserve'\n }\n },\n textNode: processHeaderFooterContent(value)\n });\n }\n });\n });\n return headersAndFooters;\n};\nvar addHeaderFooter = function (headerFooterConfig) {\n return function (children) {\n if (!headerFooterConfig) {\n return children;\n }\n var differentFirst = headerFooterConfig.first != null ? 1 : 0;\n var differentOddEven = headerFooterConfig.even != null ? 1 : 0;\n children.push({\n name: 'headerFooter',\n properties: {\n rawMap: {\n differentFirst: differentFirst,\n differentOddEven: differentOddEven\n }\n },\n children: buildHeaderFooter(headerFooterConfig)\n });\n return children;\n };\n};\nvar addDrawingRel = function (currentSheet) {\n return function (children) {\n if (ExcelXlsxFactory.worksheetImages.get(currentSheet)) {\n children.push({\n name: 'drawing',\n properties: {\n rawMap: {\n 'r:id': 'rId1'\n }\n }\n });\n }\n return children;\n };\n};\nvar addSheetPr = function () {\n return function (children) {\n children.push({\n name: 'sheetPr',\n children: [{\n name: 'outlinePr',\n properties: {\n rawMap: {\n summaryBelow: 0\n }\n }\n }]\n });\n return children;\n };\n};\nvar addSheetFormatPr = function (rows) {\n return function (children) {\n var maxOutline = rows.reduce(function (prev, row) {\n if (row.outlineLevel && row.outlineLevel > prev) {\n return row.outlineLevel;\n }\n return prev;\n }, 0);\n children.push({\n name: 'sheetFormatPr',\n properties: {\n rawMap: {\n baseColWidth: 10,\n defaultRowHeight: 16,\n outlineLevelRow: maxOutline ? maxOutline : undefined\n }\n }\n });\n return children;\n };\n};\nvar worksheetFactory = {\n getTemplate: function (params) {\n var worksheet = params.worksheet, currentSheet = params.currentSheet, _a = params.margins, margins = _a === void 0 ? {} : _a, pageSetup = params.pageSetup, headerFooterConfig = params.headerFooterConfig;\n var table = worksheet.table;\n var rows = table.rows, columns = table.columns;\n var mergedCells = (columns && columns.length) ? getMergedCellsAndAddColumnGroups(rows, columns) : [];\n var createWorksheetChildren = _.compose(addSheetPr(), addSheetFormatPr(rows), addColumns(columns), addSheetData(rows, currentSheet + 1), addMergeCells(mergedCells), addPageMargins(margins), addPageSetup(pageSetup), addHeaderFooter(headerFooterConfig), addDrawingRel(currentSheet));\n var children = createWorksheetChildren([]);\n return {\n name: \"worksheet\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n }\n }],\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n }\n },\n children: children\n };\n }\n};\n\nvar relationshipFactory = {\n getTemplate: function (config) {\n var Id = config.Id, Type = config.Type, Target = config.Target;\n return {\n name: \"Relationship\",\n properties: {\n rawMap: {\n Id: Id,\n Type: Type,\n Target: Target\n }\n }\n };\n }\n};\n\nvar relationshipsFactory = {\n getTemplate: function (c) {\n var children = c.map(function (relationship) { return relationshipFactory.getTemplate(relationship); });\n return {\n name: \"Relationships\",\n properties: {\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/relationships\"\n }\n },\n children: children\n };\n }\n};\n\nvar __read$11 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$C = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$11(arguments[i]));\n return ar;\n};\n/**\n * See https://www.ecma-international.org/news/TC45_current_work/OpenXML%20White%20Paper.pdf\n */\nvar ExcelXlsxFactory = /** @class */ (function () {\n function ExcelXlsxFactory() {\n }\n ExcelXlsxFactory.createExcel = function (styles, worksheet, margins, pageSetup, headerFooterConfig) {\n this.addSheetName(worksheet);\n registerStyles(styles, this.sheetNames.length);\n return this.createWorksheet(worksheet, margins, pageSetup, headerFooterConfig);\n };\n ExcelXlsxFactory.buildImageMap = function (image, rowIndex, col, columnsToExport, rowHeight) {\n var currentSheetIndex = this.sheetNames.length;\n var registeredImage = this.images.get(image.id);\n if (!image.position || !image.position.row || !image.position.column) {\n if (!image.position) {\n image.position = {};\n }\n image.position = Object.assign({}, image.position, {\n row: rowIndex,\n column: columnsToExport.indexOf(col) + 1\n });\n }\n var calculatedImage = image;\n setExcelImageTotalWidth(calculatedImage, columnsToExport);\n setExcelImageTotalHeight(calculatedImage, rowHeight);\n if (registeredImage) {\n var currentSheetImages = registeredImage.find(function (currentImage) { return currentImage.sheetId === currentSheetIndex; });\n if (currentSheetImages) {\n currentSheetImages.image.push(calculatedImage);\n }\n else {\n registeredImage.push({\n sheetId: currentSheetIndex,\n image: [calculatedImage]\n });\n }\n }\n else {\n this.images.set(calculatedImage.id, [{ sheetId: currentSheetIndex, image: [calculatedImage] }]);\n this.workbookImageIds.set(calculatedImage.id, { type: calculatedImage.imageType, index: this.workbookImageIds.size });\n }\n this.buildSheetImageMap(currentSheetIndex, calculatedImage);\n };\n ExcelXlsxFactory.buildSheetImageMap = function (sheetIndex, image) {\n var worksheetImageIdMap = this.worksheetImageIds.get(sheetIndex);\n if (!worksheetImageIdMap) {\n worksheetImageIdMap = new Map();\n this.worksheetImageIds.set(sheetIndex, worksheetImageIdMap);\n }\n var sheetImages = this.worksheetImages.get(sheetIndex);\n if (!sheetImages) {\n this.worksheetImages.set(sheetIndex, [image]);\n worksheetImageIdMap.set(image.id, { index: 0, type: image.imageType });\n }\n else {\n sheetImages.push(image);\n if (!worksheetImageIdMap.get(image.id)) {\n worksheetImageIdMap.set(image.id, { index: worksheetImageIdMap.size, type: image.imageType });\n }\n }\n };\n ExcelXlsxFactory.addSheetName = function (worksheet) {\n var name = _.escapeString(worksheet.name) || '';\n var append = '';\n while (this.sheetNames.indexOf(\"\" + name + append) !== -1) {\n if (append === '') {\n append = '_1';\n }\n else {\n var curr = parseInt(append.slice(1), 10);\n append = \"_\" + (curr + 1);\n }\n }\n worksheet.name = \"\" + name + append;\n this.sheetNames.push(worksheet.name);\n };\n ExcelXlsxFactory.getStringPosition = function (str) {\n if (this.sharedStrings.has(str)) {\n return this.sharedStrings.get(str);\n }\n this.sharedStrings.set(str, this.sharedStrings.size);\n return this.sharedStrings.size - 1;\n };\n ExcelXlsxFactory.resetFactory = function () {\n this.sharedStrings = new Map();\n this.images = new Map();\n this.worksheetImages = new Map();\n this.workbookImageIds = new Map();\n this.worksheetImageIds = new Map();\n this.sheetNames = [];\n this.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n };\n ExcelXlsxFactory.createWorkbook = function () {\n return createXmlPart(workbookFactory.getTemplate(this.sheetNames));\n };\n ExcelXlsxFactory.createStylesheet = function (defaultFontSize) {\n return createXmlPart(stylesheetFactory.getTemplate(defaultFontSize));\n };\n ExcelXlsxFactory.createSharedStrings = function () {\n return createXmlPart(sharedStrings.getTemplate(this.sharedStrings));\n };\n ExcelXlsxFactory.createCore = function (author) {\n return createXmlPart(coreFactory.getTemplate(author));\n };\n ExcelXlsxFactory.createContentTypes = function (sheetLen) {\n return createXmlPart(contentTypesFactory.getTemplate(sheetLen));\n };\n ExcelXlsxFactory.createRels = function () {\n var rs = relationshipsFactory.getTemplate([{\n Id: 'rId1',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',\n Target: 'xl/workbook.xml'\n }, {\n Id: 'rId2',\n Type: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',\n Target: 'docProps/core.xml'\n }]);\n return createXmlPart(rs);\n };\n ExcelXlsxFactory.createTheme = function () {\n return createXmlPart(officeTheme.getTemplate());\n };\n ExcelXlsxFactory.createWorkbookRels = function (sheetLen) {\n var worksheets = new Array(sheetLen).fill(undefined).map(function (v, i) { return ({\n Id: \"rId\" + (i + 1),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',\n Target: \"worksheets/sheet\" + (i + 1) + \".xml\"\n }); });\n var rs = relationshipsFactory.getTemplate(__spread$C(worksheets, [\n {\n Id: \"rId\" + (sheetLen + 1),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',\n Target: 'theme/theme1.xml'\n }, {\n Id: \"rId\" + (sheetLen + 2),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',\n Target: 'styles.xml'\n }, {\n Id: \"rId\" + (sheetLen + 3),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',\n Target: 'sharedStrings.xml'\n }\n ]));\n return createXmlPart(rs);\n };\n ExcelXlsxFactory.createDrawing = function (sheetIndex) {\n return createXmlPart(drawingFactory.getTemplate({ sheetIndex: sheetIndex }));\n };\n ExcelXlsxFactory.createDrawingRel = function (sheetIndex) {\n var _this = this;\n var worksheetImageIds = this.worksheetImageIds.get(sheetIndex);\n var XMLArr = [];\n worksheetImageIds.forEach(function (value, key) {\n XMLArr.push({\n Id: \"rId\" + (value.index + 1),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\n Target: \"../media/image\" + (_this.workbookImageIds.get(key).index + 1) + \".\" + value.type\n });\n });\n return createXmlPart(relationshipsFactory.getTemplate(XMLArr));\n };\n ExcelXlsxFactory.createWorksheetDrawingRel = function (currentRelationIndex) {\n var rs = relationshipsFactory.getTemplate([{\n Id: 'rId1',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',\n Target: \"../drawings/drawing\" + (currentRelationIndex + 1) + \".xml\"\n }]);\n return createXmlPart(rs);\n };\n ExcelXlsxFactory.createWorksheet = function (worksheet, margins, pageSetup, headerFooterConfig) {\n return createXmlPart(worksheetFactory.getTemplate({\n worksheet: worksheet,\n currentSheet: this.sheetNames.length - 1,\n margins: margins,\n pageSetup: pageSetup,\n headerFooterConfig: headerFooterConfig\n }));\n };\n ExcelXlsxFactory.sharedStrings = new Map();\n ExcelXlsxFactory.sheetNames = [];\n /** Maps images to sheet */\n ExcelXlsxFactory.images = new Map();\n /** Maps sheets to images */\n ExcelXlsxFactory.worksheetImages = new Map();\n /** Maps all workbook images to a global Id */\n ExcelXlsxFactory.workbookImageIds = new Map();\n /** Maps all sheet images to unique Ids */\n ExcelXlsxFactory.worksheetImageIds = new Map();\n ExcelXlsxFactory.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n return ExcelXlsxFactory;\n}());\n\nvar __extends$2P = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar ExcelXlsxSerializingSession = /** @class */ (function (_super) {\n __extends$2P(ExcelXlsxSerializingSession, _super);\n function ExcelXlsxSerializingSession() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExcelXlsxSerializingSession.prototype.createExcel = function (data) {\n var _a = this, excelStyles = _a.excelStyles, config = _a.config;\n var margins = config.margins, pageSetup = config.pageSetup, headerFooterConfig = config.headerFooterConfig;\n return ExcelXlsxFactory.createExcel(excelStyles, data, margins, pageSetup, headerFooterConfig);\n };\n ExcelXlsxSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n if (valueForCell === undefined) {\n return 'empty';\n }\n return this.isNumerical(valueForCell) ? 'n' : 's';\n };\n ExcelXlsxSerializingSession.prototype.getType = function (type, style, value) {\n if (this.isFormula(value)) {\n return 'f';\n }\n if (style && style.dataType) {\n switch (style.dataType.toLocaleLowerCase()) {\n case 'formula':\n return 'f';\n case 'string':\n return 's';\n case 'number':\n return 'n';\n case 'datetime':\n return 'd';\n case 'error':\n return 'e';\n case 'boolean':\n return 'b';\n default:\n console.warn(\"AG Grid: Unrecognized data type for excel export [\" + style.id + \".dataType=\" + style.dataType + \"]\");\n }\n }\n return type;\n };\n ExcelXlsxSerializingSession.prototype.addImage = function (rowIndex, column, value) {\n if (!this.config.addImageToCell) {\n return;\n }\n var addedImage = this.config.addImageToCell(rowIndex, column, value);\n if (!addedImage) {\n return;\n }\n ExcelXlsxFactory.buildImageMap(addedImage.image, rowIndex, column, this.columnsToExport, this.config.rowHeight);\n return addedImage;\n };\n ExcelXlsxSerializingSession.prototype.createCell = function (styleId, type, value) {\n var actualStyle = this.getStyleById(styleId);\n var typeTransformed = this.getType(type, actualStyle, value) || type;\n return {\n styleId: actualStyle ? styleId : undefined,\n data: {\n type: typeTransformed,\n value: this.getCellValue(typeTransformed, value)\n }\n };\n };\n ExcelXlsxSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n var valueToUse = value == null ? '' : value;\n return {\n styleId: !!this.getStyleById(styleId) ? styleId : undefined,\n data: {\n type: type,\n value: type === 's' ? ExcelXlsxFactory.getStringPosition(valueToUse).toString() : value\n },\n mergeAcross: numOfCells\n };\n };\n ExcelXlsxSerializingSession.prototype.getCellValue = function (type, value) {\n if (value == null) {\n return ExcelXlsxFactory.getStringPosition('').toString();\n }\n switch (type) {\n case 's':\n return value === '' ? '' : ExcelXlsxFactory.getStringPosition(value).toString();\n case 'f':\n return value.slice(1);\n case 'n':\n return Number(value).toString();\n default:\n return value;\n }\n };\n return ExcelXlsxSerializingSession;\n}(BaseExcelSerializingSession));\n\nvar __extends$2O = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$K = (undefined && undefined.__assign) || function () {\n __assign$K = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$K.apply(this, arguments);\n};\nvar __decorate$1$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar getMultipleSheetsAsExcel = function (params) {\n var data = params.data, _a = params.fontSize, fontSize = _a === void 0 ? 11 : _a, _b = params.author, author = _b === void 0 ? 'AG Grid' : _b;\n var hasImages = ExcelXlsxFactory.images.size > 0;\n ZipContainer.addFolders([\n '_rels/',\n 'docProps/',\n 'xl/',\n 'xl/theme/',\n 'xl/_rels/',\n 'xl/worksheets/'\n ]);\n if (hasImages) {\n ZipContainer.addFolders([\n 'xl/worksheets/_rels',\n 'xl/drawings/',\n 'xl/drawings/_rels',\n 'xl/media/',\n ]);\n var imgCounter_1 = 0;\n ExcelXlsxFactory.images.forEach(function (value) {\n var firstImage = value[0].image[0];\n var ext = firstImage.imageType;\n ZipContainer.addFile(\"xl/media/image\" + ++imgCounter_1 + \".\" + ext, firstImage.base64, true);\n });\n }\n if (!data || data.length === 0) {\n console.warn(\"AG Grid: Invalid params supplied to getMultipleSheetsAsExcel() - `ExcelExportParams.data` is empty.\");\n ExcelXlsxFactory.resetFactory();\n return;\n }\n var sheetLen = data.length;\n var imageRelationCounter = 0;\n data.forEach(function (value, idx) {\n ZipContainer.addFile(\"xl/worksheets/sheet\" + (idx + 1) + \".xml\", value);\n if (hasImages && ExcelXlsxFactory.worksheetImages.get(idx)) {\n createImageRelationsForSheet(idx, imageRelationCounter++);\n }\n });\n ZipContainer.addFile('xl/workbook.xml', ExcelXlsxFactory.createWorkbook());\n ZipContainer.addFile('xl/styles.xml', ExcelXlsxFactory.createStylesheet(fontSize));\n ZipContainer.addFile('xl/sharedStrings.xml', ExcelXlsxFactory.createSharedStrings());\n ZipContainer.addFile('xl/theme/theme1.xml', ExcelXlsxFactory.createTheme());\n ZipContainer.addFile('xl/_rels/workbook.xml.rels', ExcelXlsxFactory.createWorkbookRels(sheetLen));\n ZipContainer.addFile('docProps/core.xml', ExcelXlsxFactory.createCore(author));\n ZipContainer.addFile('[Content_Types].xml', ExcelXlsxFactory.createContentTypes(sheetLen));\n ZipContainer.addFile('_rels/.rels', ExcelXlsxFactory.createRels());\n ExcelXlsxFactory.resetFactory();\n var mimeType = params.mimeType || 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n return ZipContainer.getContent(mimeType);\n};\nvar exportMultipleSheetsAsExcel = function (params) {\n var _a = params.fileName, fileName = _a === void 0 ? 'export.xlsx' : _a;\n var contents = getMultipleSheetsAsExcel(params);\n if (contents) {\n Downloader.download(fileName, contents);\n }\n};\nvar createImageRelationsForSheet = function (sheetIndex, currentRelationIndex) {\n var drawingFolder = 'xl/drawings';\n var drawingFileName = drawingFolder + \"/drawing\" + (currentRelationIndex + 1) + \".xml\";\n var relFileName = drawingFolder + \"/_rels/drawing\" + (currentRelationIndex + 1) + \".xml.rels\";\n var worksheetRelFile = \"xl/worksheets/_rels/sheet\" + (sheetIndex + 1) + \".xml.rels\";\n ZipContainer.addFile(relFileName, ExcelXlsxFactory.createDrawingRel(sheetIndex));\n ZipContainer.addFile(drawingFileName, ExcelXlsxFactory.createDrawing(sheetIndex));\n ZipContainer.addFile(worksheetRelFile, ExcelXlsxFactory.createWorksheetDrawingRel(currentRelationIndex));\n};\nvar ExcelCreator = /** @class */ (function (_super) {\n __extends$2O(ExcelCreator, _super);\n function ExcelCreator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.exportMode = 'xlsx';\n return _this;\n }\n ExcelCreator.prototype.postConstruct = function () {\n this.setBeans({\n gridSerializer: this.gridSerializer,\n gridOptionsService: this.gridOptionsService\n });\n };\n ExcelCreator.prototype.getMergedParams = function (params) {\n var baseParams = this.gridOptionsService.get('defaultExcelExportParams');\n return Object.assign({}, baseParams, params);\n };\n ExcelCreator.prototype.getData = function (params) {\n this.setExportMode(params.exportMode || 'xlsx');\n return _super.prototype.getData.call(this, params);\n };\n ExcelCreator.prototype.export = function (userParams) {\n if (this.isExportSuppressed()) {\n console.warn(\"AG Grid: Export cancelled. Export is not allowed as per your configuration.\");\n return '';\n }\n var mergedParams = this.getMergedParams(userParams);\n var data = this.getData(mergedParams);\n var exportParams = {\n data: [data],\n fontSize: mergedParams.fontSize,\n author: mergedParams.author,\n mimeType: mergedParams.mimeType\n };\n var packageFile = this.packageFile(exportParams);\n if (packageFile) {\n Downloader.download(this.getFileName(mergedParams.fileName), packageFile);\n }\n return data;\n };\n ExcelCreator.prototype.exportDataAsExcel = function (params) {\n return this.export(params);\n };\n ExcelCreator.prototype.getDataAsExcel = function (params) {\n var mergedParams = this.getMergedParams(params);\n var data = this.getData(mergedParams);\n if (params && params.exportMode === 'xml') {\n return data;\n }\n var exportParams = {\n data: [data],\n fontSize: mergedParams.fontSize,\n author: mergedParams.author,\n mimeType: mergedParams.mimeType\n };\n return this.packageFile(exportParams);\n };\n ExcelCreator.prototype.setFactoryMode = function (factoryMode, exportMode) {\n if (exportMode === void 0) { exportMode = 'xlsx'; }\n var factory = exportMode === 'xlsx' ? ExcelXlsxFactory : ExcelXmlFactory;\n factory.factoryMode = factoryMode;\n };\n ExcelCreator.prototype.getFactoryMode = function (exportMode) {\n var factory = exportMode === 'xlsx' ? ExcelXlsxFactory : ExcelXmlFactory;\n return factory.factoryMode;\n };\n ExcelCreator.prototype.getSheetDataForExcel = function (params) {\n var mergedParams = this.getMergedParams(params);\n var data = this.getData(mergedParams);\n return data;\n };\n ExcelCreator.prototype.getMultipleSheetsAsExcel = function (params) {\n return getMultipleSheetsAsExcel(params);\n };\n ExcelCreator.prototype.exportMultipleSheetsAsExcel = function (params) {\n return exportMultipleSheetsAsExcel(params);\n };\n ExcelCreator.prototype.getDefaultFileName = function () {\n return \"export.\" + this.getExportMode();\n };\n ExcelCreator.prototype.getDefaultFileExtension = function () {\n return this.getExportMode();\n };\n ExcelCreator.prototype.createSerializingSession = function (params) {\n var _a = this, columnModel = _a.columnModel, valueService = _a.valueService, gridOptionsService = _a.gridOptionsService;\n var isXlsx = this.getExportMode() === 'xlsx';\n var sheetName = 'ag-grid';\n if (params.sheetName != null) {\n sheetName = _.utf8_encode(params.sheetName.toString().substr(0, 31));\n }\n var config = __assign$K(__assign$K({}, params), { sheetName: sheetName,\n columnModel: columnModel,\n valueService: valueService,\n gridOptionsService: gridOptionsService, headerRowHeight: params.headerRowHeight || params.rowHeight, baseExcelStyles: this.gridOptionsService.get('excelStyles') || [], styleLinker: this.styleLinker.bind(this) });\n return new (isXlsx ? ExcelXlsxSerializingSession : ExcelXmlSerializingSession)(config);\n };\n ExcelCreator.prototype.styleLinker = function (params) {\n var rowType = params.rowType, rowIndex = params.rowIndex, value = params.value, column = params.column, columnGroup = params.columnGroup, node = params.node;\n var isHeader = rowType === RowType.HEADER;\n var isGroupHeader = rowType === RowType.HEADER_GROUPING;\n var col = (isHeader ? column : columnGroup);\n var headerClasses = [];\n if (isHeader || isGroupHeader) {\n headerClasses.push('header');\n if (isGroupHeader) {\n headerClasses.push('headerGroup');\n }\n if (col) {\n headerClasses = headerClasses.concat(CssClassApplier.getHeaderClassesFromColDef(col.getDefinition(), this.gridOptionsService, column || null, columnGroup || null));\n }\n return headerClasses;\n }\n var styles = this.gridOptionsService.get('excelStyles');\n var applicableStyles = [\"cell\"];\n if (!styles || !styles.length) {\n return applicableStyles;\n }\n var styleIds = styles.map(function (it) {\n return it.id;\n });\n this.stylingService.processAllCellClasses(column.getDefinition(), {\n value: value,\n data: node.data,\n node: node,\n colDef: column.getDefinition(),\n column: column,\n rowIndex: rowIndex,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n }, function (className) {\n if (styleIds.indexOf(className) > -1) {\n applicableStyles.push(className);\n }\n });\n return applicableStyles.sort(function (left, right) {\n return (styleIds.indexOf(left) < styleIds.indexOf(right)) ? -1 : 1;\n });\n };\n ExcelCreator.prototype.isExportSuppressed = function () {\n return this.gridOptionsService.is('suppressExcelExport');\n };\n ExcelCreator.prototype.setExportMode = function (exportMode) {\n this.exportMode = exportMode;\n };\n ExcelCreator.prototype.getExportMode = function () {\n return this.exportMode;\n };\n ExcelCreator.prototype.packageFile = function (params) {\n if (this.getExportMode() === 'xml') {\n var mimeType = params.mimeType || 'application/vnd.ms-excel';\n return new Blob([\"\\ufeff\", params.data[0]], { type: mimeType });\n }\n return getMultipleSheetsAsExcel(params);\n };\n __decorate$1$([\n Autowired('columnModel')\n ], ExcelCreator.prototype, \"columnModel\", void 0);\n __decorate$1$([\n Autowired('valueService')\n ], ExcelCreator.prototype, \"valueService\", void 0);\n __decorate$1$([\n Autowired('stylingService')\n ], ExcelCreator.prototype, \"stylingService\", void 0);\n __decorate$1$([\n Autowired('gridSerializer')\n ], ExcelCreator.prototype, \"gridSerializer\", void 0);\n __decorate$1$([\n Autowired('gridOptionsService')\n ], ExcelCreator.prototype, \"gridOptionsService\", void 0);\n __decorate$1$([\n PostConstruct\n ], ExcelCreator.prototype, \"postConstruct\", null);\n ExcelCreator = __decorate$1$([\n Bean('excelCreator')\n ], ExcelCreator);\n return ExcelCreator;\n}(BaseCreator));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$d = '29.3.5';\n\nvar ExcelExportModule = {\n version: VERSION$d,\n moduleName: ModuleNames.ExcelExportModule,\n beans: [\n // beans in this module\n ExcelCreator,\n // these beans are part of CSV Export module\n GridSerializer, CsvCreator\n ],\n dependantModules: [\n CsvExportModule,\n EnterpriseCoreModule\n ]\n};\n\nvar __extends$2N = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar EXPAND_STATE;\n(function (EXPAND_STATE) {\n EXPAND_STATE[EXPAND_STATE[\"EXPANDED\"] = 0] = \"EXPANDED\";\n EXPAND_STATE[EXPAND_STATE[\"COLLAPSED\"] = 1] = \"COLLAPSED\";\n EXPAND_STATE[EXPAND_STATE[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n})(EXPAND_STATE || (EXPAND_STATE = {}));\nvar FiltersToolPanelHeaderPanel = /** @class */ (function (_super) {\n __extends$2N(FiltersToolPanelHeaderPanel, _super);\n function FiltersToolPanelHeaderPanel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FiltersToolPanelHeaderPanel.prototype.preConstruct = function () {\n this.setTemplate(/* html */ \"<div class=\\\"ag-filter-toolpanel-search\\\" role=\\\"presentation\\\">\\n <div ref=\\\"eExpand\\\" class=\\\"ag-filter-toolpanel-expand\\\"></div>\\n <ag-input-text-field ref=\\\"eFilterTextField\\\" class=\\\"ag-filter-toolpanel-search-input\\\"></ag-input-text-field>\\n </div>\");\n };\n FiltersToolPanelHeaderPanel.prototype.postConstruct = function () {\n var translate = this.localeService.getLocaleTextFunc();\n this.eFilterTextField.onValueChange(this.onSearchTextChanged.bind(this));\n this.eFilterTextField.setInputAriaLabel(translate('ariaFilterColumnsInput', 'Filter Columns Input'));\n this.createExpandIcons();\n this.setExpandState(EXPAND_STATE.EXPANDED);\n this.addManagedListener(this.eExpand, 'click', this.onExpandClicked.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n };\n FiltersToolPanelHeaderPanel.prototype.init = function (params) {\n this.params = params;\n if (this.columnModel.isReady()) {\n this.showOrHideOptions();\n }\n };\n FiltersToolPanelHeaderPanel.prototype.createExpandIcons = function () {\n this.eExpand.appendChild(this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsService));\n this.eExpand.appendChild(this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsService));\n this.eExpand.appendChild(this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsService));\n };\n // we only show expand / collapse if we are showing filters\n FiltersToolPanelHeaderPanel.prototype.showOrHideOptions = function () {\n var showFilterSearch = !this.params.suppressFilterSearch;\n var showExpand = !this.params.suppressExpandAll;\n var translate = this.localeService.getLocaleTextFunc();\n this.eFilterTextField.setInputPlaceholder(translate('searchOoo', 'Search...'));\n var isFilterGroupPresent = function (col) { return col.getOriginalParent() && col.isFilterAllowed(); };\n var filterGroupsPresent = this.columnModel.getAllGridColumns().some(isFilterGroupPresent);\n _.setDisplayed(this.eFilterTextField.getGui(), showFilterSearch);\n _.setDisplayed(this.eExpand, showExpand && filterGroupsPresent);\n };\n FiltersToolPanelHeaderPanel.prototype.onSearchTextChanged = function () {\n var _this = this;\n if (!this.onSearchTextChangedDebounced) {\n this.onSearchTextChangedDebounced = _.debounce(function () {\n _this.dispatchEvent({ type: 'searchChanged', searchText: _this.eFilterTextField.getValue() });\n }, 300);\n }\n this.onSearchTextChangedDebounced();\n };\n FiltersToolPanelHeaderPanel.prototype.onExpandClicked = function () {\n var event = this.currentExpandState === EXPAND_STATE.EXPANDED ? { type: 'collapseAll' } : { type: 'expandAll' };\n this.dispatchEvent(event);\n };\n FiltersToolPanelHeaderPanel.prototype.setExpandState = function (state) {\n this.currentExpandState = state;\n _.setDisplayed(this.eExpandChecked, this.currentExpandState === EXPAND_STATE.EXPANDED);\n _.setDisplayed(this.eExpandUnchecked, this.currentExpandState === EXPAND_STATE.COLLAPSED);\n _.setDisplayed(this.eExpandIndeterminate, this.currentExpandState === EXPAND_STATE.INDETERMINATE);\n };\n __decorate$1_([\n Autowired('columnModel')\n ], FiltersToolPanelHeaderPanel.prototype, \"columnModel\", void 0);\n __decorate$1_([\n RefSelector('eExpand')\n ], FiltersToolPanelHeaderPanel.prototype, \"eExpand\", void 0);\n __decorate$1_([\n RefSelector('eFilterTextField')\n ], FiltersToolPanelHeaderPanel.prototype, \"eFilterTextField\", void 0);\n __decorate$1_([\n PreConstruct\n ], FiltersToolPanelHeaderPanel.prototype, \"preConstruct\", null);\n __decorate$1_([\n PostConstruct\n ], FiltersToolPanelHeaderPanel.prototype, \"postConstruct\", null);\n return FiltersToolPanelHeaderPanel;\n}(Component));\n\nvar __extends$2M = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelFilterComp = /** @class */ (function (_super) {\n __extends$2M(ToolPanelFilterComp, _super);\n function ToolPanelFilterComp(hideHeader) {\n if (hideHeader === void 0) { hideHeader = false; }\n var _this = _super.call(this, ToolPanelFilterComp.TEMPLATE) || this;\n _this.expanded = false;\n _this.hideHeader = hideHeader;\n return _this;\n }\n ToolPanelFilterComp.prototype.postConstruct = function () {\n this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsService);\n this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsService);\n this.eExpand.appendChild(this.eExpandChecked);\n this.eExpand.appendChild(this.eExpandUnchecked);\n };\n ToolPanelFilterComp.prototype.setColumn = function (column) {\n var _this = this;\n this.column = column;\n this.eFilterName.innerText = this.columnModel.getDisplayNameForColumn(this.column, 'filterToolPanel', false) || '';\n this.addManagedListener(this.eFilterToolPanelHeader, 'click', this.toggleExpanded.bind(this));\n this.addManagedListener(this.eFilterToolPanelHeader, 'keydown', function (e) {\n if (e.key === KeyCode.ENTER) {\n _this.toggleExpanded();\n }\n });\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n this.addInIcon('filter', this.eFilterIcon, this.column);\n _.setDisplayed(this.eFilterIcon, this.isFilterActive(), { skipAriaHidden: true });\n _.setDisplayed(this.eExpandChecked, false);\n if (this.hideHeader) {\n _.setDisplayed(this.eFilterToolPanelHeader, false);\n this.eFilterToolPanelHeader.removeAttribute('tabindex');\n }\n else {\n this.eFilterToolPanelHeader.setAttribute('tabindex', '0');\n }\n this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_DESTROYED, this.onFilterDestroyed.bind(this));\n };\n ToolPanelFilterComp.prototype.getColumn = function () {\n return this.column;\n };\n ToolPanelFilterComp.prototype.getColumnFilterName = function () {\n return this.columnModel.getDisplayNameForColumn(this.column, 'filterToolPanel', false);\n };\n ToolPanelFilterComp.prototype.addCssClassToTitleBar = function (cssClass) {\n this.eFilterToolPanelHeader.classList.add(cssClass);\n };\n ToolPanelFilterComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = _.createIconNoSpan(iconName, this.gridOptionsService, column);\n eParent.appendChild(eIcon);\n };\n ToolPanelFilterComp.prototype.isFilterActive = function () {\n return this.filterManager.isFilterActive(this.column);\n };\n ToolPanelFilterComp.prototype.onFilterChanged = function () {\n _.setDisplayed(this.eFilterIcon, this.isFilterActive(), { skipAriaHidden: true });\n this.dispatchEvent({ type: Column.EVENT_FILTER_CHANGED });\n };\n ToolPanelFilterComp.prototype.onFilterDestroyed = function (event) {\n if (this.expanded &&\n event.source === 'api' &&\n event.column.getId() === this.column.getId() &&\n this.columnModel.getPrimaryColumn(this.column)) {\n // filter was visible and has been destroyed by the API. If the column still exists, need to recreate UI component\n this.removeFilterElement();\n this.addFilterElement();\n }\n };\n ToolPanelFilterComp.prototype.toggleExpanded = function () {\n this.expanded ? this.collapse() : this.expand();\n };\n ToolPanelFilterComp.prototype.expand = function () {\n if (this.expanded) {\n return;\n }\n this.expanded = true;\n _.setAriaExpanded(this.eFilterToolPanelHeader, true);\n _.setDisplayed(this.eExpandChecked, true);\n _.setDisplayed(this.eExpandUnchecked, false);\n this.addFilterElement();\n };\n ToolPanelFilterComp.prototype.addFilterElement = function () {\n var _this = this;\n var filterPanelWrapper = _.loadTemplate(/* html */ \"<div class=\\\"ag-filter-toolpanel-instance-filter\\\"></div>\");\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.column, 'TOOLBAR');\n if (!filterWrapper) {\n return;\n }\n var filterPromise = filterWrapper.filterPromise, guiPromise = filterWrapper.guiPromise;\n filterPromise === null || filterPromise === void 0 ? void 0 : filterPromise.then(function (filter) {\n _this.underlyingFilter = filter;\n if (!filter) {\n return;\n }\n guiPromise.then(function (filterContainerEl) {\n if (filterContainerEl) {\n filterPanelWrapper.appendChild(filterContainerEl);\n }\n _this.agFilterToolPanelBody.appendChild(filterPanelWrapper);\n if (filter.afterGuiAttached) {\n filter.afterGuiAttached({ container: 'toolPanel' });\n }\n });\n });\n };\n ToolPanelFilterComp.prototype.collapse = function () {\n var _a, _b;\n if (!this.expanded) {\n return;\n }\n this.expanded = false;\n _.setAriaExpanded(this.eFilterToolPanelHeader, false);\n this.removeFilterElement();\n _.setDisplayed(this.eExpandChecked, false);\n _.setDisplayed(this.eExpandUnchecked, true);\n (_b = (_a = this.underlyingFilter) === null || _a === void 0 ? void 0 : _a.afterGuiDetached) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n ToolPanelFilterComp.prototype.removeFilterElement = function () {\n _.clearElement(this.agFilterToolPanelBody);\n };\n ToolPanelFilterComp.prototype.isExpanded = function () {\n return this.expanded;\n };\n ToolPanelFilterComp.prototype.refreshFilter = function (isDisplayed) {\n var _a;\n if (!this.expanded) {\n return;\n }\n var filter = this.underlyingFilter;\n if (!filter) {\n return;\n }\n if (isDisplayed) {\n // set filters should be updated when the filter has been changed elsewhere, i.e. via api. Note that we can't\n // use 'afterGuiAttached' to refresh the virtual list as it also focuses on the mini filter which changes the\n // scroll position in the filter list panel\n if (typeof filter.refreshVirtualList === 'function') {\n filter.refreshVirtualList();\n }\n }\n else {\n (_a = filter.afterGuiDetached) === null || _a === void 0 ? void 0 : _a.call(filter);\n }\n };\n ToolPanelFilterComp.prototype.onFilterOpened = function (event) {\n if (event.source !== 'COLUMN_MENU') {\n return;\n }\n if (event.column !== this.column) {\n return;\n }\n if (!this.expanded) {\n return;\n }\n this.collapse();\n };\n ToolPanelFilterComp.TEMPLATE = \"\\n <div class=\\\"ag-filter-toolpanel-instance\\\">\\n <div class=\\\"ag-filter-toolpanel-header ag-filter-toolpanel-instance-header\\\" ref=\\\"eFilterToolPanelHeader\\\" role=\\\"button\\\" aria-expanded=\\\"false\\\">\\n <div ref=\\\"eExpand\\\" class=\\\"ag-filter-toolpanel-expand\\\"></div>\\n <span ref=\\\"eFilterName\\\" class=\\\"ag-header-cell-text\\\"></span>\\n <span ref=\\\"eFilterIcon\\\" class=\\\"ag-header-icon ag-filter-icon ag-filter-toolpanel-instance-header-icon\\\" aria-hidden=\\\"true\\\"></span>\\n </div>\\n <div class=\\\"ag-filter-toolpanel-instance-body ag-filter\\\" ref=\\\"agFilterToolPanelBody\\\"></div>\\n </div>\";\n __decorate$1Z([\n RefSelector('eFilterToolPanelHeader')\n ], ToolPanelFilterComp.prototype, \"eFilterToolPanelHeader\", void 0);\n __decorate$1Z([\n RefSelector('eFilterName')\n ], ToolPanelFilterComp.prototype, \"eFilterName\", void 0);\n __decorate$1Z([\n RefSelector('agFilterToolPanelBody')\n ], ToolPanelFilterComp.prototype, \"agFilterToolPanelBody\", void 0);\n __decorate$1Z([\n RefSelector('eFilterIcon')\n ], ToolPanelFilterComp.prototype, \"eFilterIcon\", void 0);\n __decorate$1Z([\n RefSelector('eExpand')\n ], ToolPanelFilterComp.prototype, \"eExpand\", void 0);\n __decorate$1Z([\n Autowired('filterManager')\n ], ToolPanelFilterComp.prototype, \"filterManager\", void 0);\n __decorate$1Z([\n Autowired('columnModel')\n ], ToolPanelFilterComp.prototype, \"columnModel\", void 0);\n __decorate$1Z([\n PostConstruct\n ], ToolPanelFilterComp.prototype, \"postConstruct\", null);\n return ToolPanelFilterComp;\n}(Component));\n\nvar __extends$2L = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelFilterGroupComp = /** @class */ (function (_super) {\n __extends$2L(ToolPanelFilterGroupComp, _super);\n function ToolPanelFilterGroupComp(columnGroup, childFilterComps, expandedCallback, depth, showingColumn) {\n var _this = _super.call(this) || this;\n _this.columnGroup = columnGroup;\n _this.childFilterComps = childFilterComps;\n _this.depth = depth;\n _this.expandedCallback = expandedCallback;\n _this.showingColumn = showingColumn;\n return _this;\n }\n ToolPanelFilterGroupComp.prototype.preConstruct = function () {\n var groupParams = {\n cssIdentifier: 'filter-toolpanel',\n direction: 'vertical'\n };\n this.setTemplate(ToolPanelFilterGroupComp.TEMPLATE, { filterGroupComp: groupParams });\n };\n ToolPanelFilterGroupComp.prototype.init = function () {\n var _this = this;\n this.setGroupTitle();\n this.filterGroupComp.setAlignItems('stretch');\n this.filterGroupComp.addCssClass(\"ag-filter-toolpanel-group-level-\" + this.depth);\n this.filterGroupComp.addCssClassToTitleBar(\"ag-filter-toolpanel-group-level-\" + this.depth + \"-header\");\n this.childFilterComps.forEach(function (filterComp) {\n _this.filterGroupComp.addItem(filterComp);\n filterComp.addCssClassToTitleBar(\"ag-filter-toolpanel-group-level-\" + (_this.depth + 1) + \"-header\");\n });\n this.refreshFilterClass();\n this.addExpandCollapseListeners();\n this.addFilterChangedListeners();\n this.setupTooltip();\n };\n ToolPanelFilterGroupComp.prototype.setupTooltip = function () {\n var _this = this;\n // we don't show tooltips for groups, as when the group expands, it's div contains the columns which also\n // have tooltips, so the tooltips would clash. Eg mouse over group, tooltip shows, mouse over column, another\n // tooltip shows but cos we didn't leave the group the group tooltip remains. this should be fixed in the future,\n // maybe the group shouldn't contain the children form a DOM perspective.\n if (!this.showingColumn) {\n return;\n }\n var refresh = function () {\n var newTooltipText = _this.columnGroup.getColDef().headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n ToolPanelFilterGroupComp.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'filterToolPanelColumnGroup';\n return res;\n };\n ToolPanelFilterGroupComp.prototype.addCssClassToTitleBar = function (cssClass) {\n this.filterGroupComp.addCssClassToTitleBar(cssClass);\n };\n ToolPanelFilterGroupComp.prototype.refreshFilters = function (isDisplayed) {\n this.childFilterComps.forEach(function (filterComp) {\n if (filterComp instanceof ToolPanelFilterGroupComp) {\n filterComp.refreshFilters(isDisplayed);\n }\n else {\n filterComp.refreshFilter(isDisplayed);\n }\n });\n };\n ToolPanelFilterGroupComp.prototype.isColumnGroup = function () {\n return this.columnGroup instanceof ProvidedColumnGroup;\n };\n ToolPanelFilterGroupComp.prototype.isExpanded = function () {\n return this.filterGroupComp.isExpanded();\n };\n ToolPanelFilterGroupComp.prototype.getChildren = function () {\n return this.childFilterComps;\n };\n ToolPanelFilterGroupComp.prototype.getFilterGroupName = function () {\n return this.filterGroupName ? this.filterGroupName : '';\n };\n ToolPanelFilterGroupComp.prototype.getFilterGroupId = function () {\n return this.columnGroup.getId();\n };\n ToolPanelFilterGroupComp.prototype.hideGroupItem = function (hide, index) {\n this.filterGroupComp.hideItem(hide, index);\n };\n ToolPanelFilterGroupComp.prototype.hideGroup = function (hide) {\n this.setDisplayed(!hide);\n };\n ToolPanelFilterGroupComp.prototype.forEachToolPanelFilterChild = function (action) {\n this.childFilterComps.forEach(function (filterComp) {\n if (filterComp instanceof ToolPanelFilterComp) {\n action(filterComp);\n }\n });\n };\n ToolPanelFilterGroupComp.prototype.addExpandCollapseListeners = function () {\n var _this = this;\n var expandListener = this.isColumnGroup() ?\n function () { return _this.expandedCallback(); } :\n function () { return _this.forEachToolPanelFilterChild(function (filterComp) { return filterComp.expand(); }); };\n var collapseListener = this.isColumnGroup() ?\n function () { return _this.expandedCallback(); } :\n function () { return _this.forEachToolPanelFilterChild(function (filterComp) { return filterComp.collapse(); }); };\n this.addManagedListener(this.filterGroupComp, AgGroupComponent.EVENT_EXPANDED, expandListener);\n this.addManagedListener(this.filterGroupComp, AgGroupComponent.EVENT_COLLAPSED, collapseListener);\n };\n ToolPanelFilterGroupComp.prototype.getColumns = function () {\n if (this.columnGroup instanceof ProvidedColumnGroup) {\n return this.columnGroup.getLeafColumns();\n }\n return [this.columnGroup];\n };\n ToolPanelFilterGroupComp.prototype.addFilterChangedListeners = function () {\n var _this = this;\n this.getColumns().forEach(function (column) {\n _this.addManagedListener(column, Column.EVENT_FILTER_CHANGED, function () { return _this.refreshFilterClass(); });\n });\n if (!(this.columnGroup instanceof ProvidedColumnGroup)) {\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n }\n };\n ToolPanelFilterGroupComp.prototype.refreshFilterClass = function () {\n var columns = this.getColumns();\n var anyChildFiltersActive = function () { return columns.some(function (col) { return col.isFilterActive(); }); };\n this.filterGroupComp.addOrRemoveCssClass('ag-has-filter', anyChildFiltersActive());\n };\n ToolPanelFilterGroupComp.prototype.onFilterOpened = function (event) {\n // when a filter is opened elsewhere, i.e. column menu we close the filter comp so we also need to collapse\n // the column group. This approach means we don't need to try and sync filter models on the same column.\n if (event.source !== 'COLUMN_MENU') {\n return;\n }\n if (event.column !== this.columnGroup) {\n return;\n }\n if (!this.isExpanded()) {\n return;\n }\n this.collapse();\n };\n ToolPanelFilterGroupComp.prototype.expand = function () {\n this.filterGroupComp.toggleGroupExpand(true);\n };\n ToolPanelFilterGroupComp.prototype.collapse = function () {\n this.filterGroupComp.toggleGroupExpand(false);\n };\n ToolPanelFilterGroupComp.prototype.setGroupTitle = function () {\n this.filterGroupName = (this.columnGroup instanceof ProvidedColumnGroup) ?\n this.getColumnGroupName(this.columnGroup) : this.getColumnName(this.columnGroup);\n this.filterGroupComp.setTitle(this.filterGroupName || '');\n };\n ToolPanelFilterGroupComp.prototype.getColumnGroupName = function (columnGroup) {\n return this.columnModel.getDisplayNameForProvidedColumnGroup(null, columnGroup, 'filterToolPanel');\n };\n ToolPanelFilterGroupComp.prototype.getColumnName = function (column) {\n return this.columnModel.getDisplayNameForColumn(column, 'filterToolPanel', false);\n };\n ToolPanelFilterGroupComp.prototype.destroyFilters = function () {\n this.childFilterComps = this.destroyBeans(this.childFilterComps);\n _.clearElement(this.getGui());\n };\n ToolPanelFilterGroupComp.prototype.destroy = function () {\n this.destroyFilters();\n _super.prototype.destroy.call(this);\n };\n ToolPanelFilterGroupComp.TEMPLATE = \"<div class=\\\"ag-filter-toolpanel-group-wrapper\\\">\\n <ag-group-component ref=\\\"filterGroupComp\\\"></ag-group-component>\\n </div>\";\n __decorate$1Y([\n RefSelector('filterGroupComp')\n ], ToolPanelFilterGroupComp.prototype, \"filterGroupComp\", void 0);\n __decorate$1Y([\n Autowired('columnModel')\n ], ToolPanelFilterGroupComp.prototype, \"columnModel\", void 0);\n __decorate$1Y([\n PreConstruct\n ], ToolPanelFilterGroupComp.prototype, \"preConstruct\", null);\n __decorate$1Y([\n PostConstruct\n ], ToolPanelFilterGroupComp.prototype, \"init\", null);\n return ToolPanelFilterGroupComp;\n}(Component));\n\nvar __extends$2K = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FiltersToolPanelListPanel = /** @class */ (function (_super) {\n __extends$2K(FiltersToolPanelListPanel, _super);\n function FiltersToolPanelListPanel() {\n var _this = _super.call(this, FiltersToolPanelListPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.filterGroupComps = [];\n return _this;\n }\n FiltersToolPanelListPanel.prototype.init = function (params) {\n var _this = this;\n this.initialised = true;\n var defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context\n };\n _.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n if (!this.params.suppressSyncLayoutWithGrid) {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () { return _this.onColumnsChanged(); });\n }\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () { return _this.onColumnsChanged(); });\n this.addManagedListener(this.eventService, Events.EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED, function (event) {\n // when re-entering the filters tool panel we need to refresh the virtual lists in the set filters in case\n // filters have been changed elsewhere, i.e. via an api call.\n if (event.key === 'filters') {\n _this.refreshFilters(event.visible);\n }\n });\n if (this.columnModel.isReady()) {\n this.onColumnsChanged();\n }\n };\n FiltersToolPanelListPanel.prototype.onColumnsChanged = function () {\n var pivotModeActive = this.columnModel.isPivotMode();\n var shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n shouldSyncColumnLayoutWithGrid ? this.syncFilterLayout() : this.buildTreeFromProvidedColumnDefs();\n };\n FiltersToolPanelListPanel.prototype.syncFilterLayout = function () {\n this.toolPanelColDefService.syncLayoutWithGrid(this.setFiltersLayout.bind(this));\n };\n FiltersToolPanelListPanel.prototype.buildTreeFromProvidedColumnDefs = function () {\n var columnTree = this.columnModel.getPrimaryColumnTree();\n this.recreateFilters(columnTree);\n };\n FiltersToolPanelListPanel.prototype.setFiltersLayout = function (colDefs) {\n var columnTree = this.toolPanelColDefService.createColumnTree(colDefs);\n this.recreateFilters(columnTree);\n };\n FiltersToolPanelListPanel.prototype.recreateFilters = function (columnTree) {\n var _this = this;\n // Underlying filter comp/element won't get recreated if the column still exists (the element just gets detached/re-attached).\n // We can therefore restore focus if an element in the filter tool panel was focused.\n var activeElement = this.gridOptionsService.getDocument().activeElement;\n // Want to restore the expansion state where possible.\n var expansionState = this.getExpansionState();\n this.destroyFilters();\n this.filterGroupComps = this.recursivelyAddComps(columnTree, 0, expansionState);\n var len = this.filterGroupComps.length;\n if (len) {\n // skip the destroy function because this will be managed\n // by the `destroyFilters` function\n this.filterGroupComps.forEach(function (comp) { return _this.appendChild(comp); });\n this.setFirstAndLastVisible(0, len - 1);\n }\n // perform search if searchFilterText exists\n if (_.exists(this.searchFilterText)) {\n this.searchFilters(this.searchFilterText);\n }\n // notify header of expand\n this.fireExpandedEvent();\n // We only care about restoring focus if the originally focused element was in the filter tool panel.\n if (this.getGui().contains(activeElement)) {\n activeElement.focus();\n }\n };\n FiltersToolPanelListPanel.prototype.recursivelyAddComps = function (tree, depth, expansionState) {\n var _this = this;\n return _.flatten(tree.map(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n return _.flatten(_this.recursivelyAddFilterGroupComps(child, depth, expansionState));\n }\n var column = child;\n if (!_this.shouldDisplayFilter(column)) {\n return [];\n }\n var hideFilterCompHeader = depth === 0;\n var filterComp = new ToolPanelFilterComp(hideFilterCompHeader);\n _this.createBean(filterComp);\n filterComp.setColumn(column);\n if (expansionState.get(column.getId())) {\n // Default state on creation and desired state are both collapsed. Expand if expanded before.\n filterComp.expand();\n }\n if (depth > 0) {\n return filterComp;\n }\n var filterGroupComp = _this.createBean(new ToolPanelFilterGroupComp(column, [filterComp], _this.onGroupExpanded.bind(_this), depth, true));\n filterGroupComp.addCssClassToTitleBar('ag-filter-toolpanel-header');\n if (!expansionState.get(filterGroupComp.getFilterGroupId())) {\n // Default state on creation is expanded. Desired initial state is collapsed. Always collapse unless expanded before.\n filterGroupComp.collapse();\n }\n return filterGroupComp;\n }));\n };\n FiltersToolPanelListPanel.prototype.recursivelyAddFilterGroupComps = function (columnGroup, depth, expansionState) {\n if (!this.filtersExistInChildren(columnGroup.getChildren())) {\n return;\n }\n var colGroupDef = columnGroup.getColGroupDef();\n if (colGroupDef && colGroupDef.suppressFiltersToolPanel) {\n return [];\n }\n var newDepth = columnGroup.isPadding() ? depth : depth + 1;\n var childFilterComps = _.flatten(this.recursivelyAddComps(columnGroup.getChildren(), newDepth, expansionState));\n if (columnGroup.isPadding()) {\n return childFilterComps;\n }\n var filterGroupComp = new ToolPanelFilterGroupComp(columnGroup, childFilterComps, this.onGroupExpanded.bind(this), depth, false);\n this.createBean(filterGroupComp);\n filterGroupComp.addCssClassToTitleBar('ag-filter-toolpanel-header');\n if (expansionState.get(filterGroupComp.getFilterGroupId()) === false) {\n // Default state on creation is expanded. Desired initial state is expanded. Only collapse if collapsed before.\n filterGroupComp.collapse();\n }\n return [filterGroupComp];\n };\n FiltersToolPanelListPanel.prototype.filtersExistInChildren = function (tree) {\n var _this = this;\n return tree.some(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n return _this.filtersExistInChildren(child.getChildren());\n }\n return _this.shouldDisplayFilter(child);\n });\n };\n FiltersToolPanelListPanel.prototype.shouldDisplayFilter = function (column) {\n var suppressFiltersToolPanel = column.getColDef() && column.getColDef().suppressFiltersToolPanel;\n return column.isFilterAllowed() && !suppressFiltersToolPanel;\n };\n FiltersToolPanelListPanel.prototype.getExpansionState = function () {\n var expansionState = new Map();\n var recursiveGetExpansionState = function (filterGroupComp) {\n expansionState.set(filterGroupComp.getFilterGroupId(), filterGroupComp.isExpanded());\n filterGroupComp.getChildren().forEach(function (child) {\n if (child instanceof ToolPanelFilterGroupComp) {\n recursiveGetExpansionState(child);\n }\n else {\n expansionState.set(child.getColumn().getId(), child.isExpanded());\n }\n });\n };\n this.filterGroupComps.forEach(recursiveGetExpansionState);\n return expansionState;\n };\n // we don't support refreshing, but must implement because it's on the tool panel interface\n FiltersToolPanelListPanel.prototype.refresh = function () { };\n // lazy initialise the panel\n FiltersToolPanelListPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n FiltersToolPanelListPanel.prototype.expandFilterGroups = function (expand, groupIds) {\n var updatedGroupIds = [];\n var updateGroupExpandState = function (filterGroup) {\n var groupId = filterGroup.getFilterGroupId();\n var shouldExpandOrCollapse = !groupIds || _.includes(groupIds, groupId);\n if (shouldExpandOrCollapse) {\n // don't expand 'column groups', i.e. top level columns wrapped in a group\n if (expand && filterGroup.isColumnGroup()) {\n filterGroup.expand();\n }\n else {\n filterGroup.collapse();\n }\n updatedGroupIds.push(groupId);\n }\n // recursively look for more groups to expand / collapse\n filterGroup.getChildren().forEach(function (child) {\n if (child instanceof ToolPanelFilterGroupComp) {\n updateGroupExpandState(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateGroupExpandState);\n // update header expand / collapse icon\n this.onGroupExpanded();\n if (groupIds) {\n var unrecognisedGroupIds = groupIds.filter(function (groupId) { return updatedGroupIds.indexOf(groupId) < 0; });\n if (unrecognisedGroupIds.length > 0) {\n console.warn('AG Grid: unable to find groups for these supplied groupIds:', unrecognisedGroupIds);\n }\n }\n };\n FiltersToolPanelListPanel.prototype.expandFilters = function (expand, colIds) {\n var updatedColIds = [];\n var updateGroupExpandState = function (filterComp) {\n if (filterComp instanceof ToolPanelFilterGroupComp) {\n var anyChildrenChanged_1 = false;\n filterComp.getChildren().forEach(function (child) {\n var childUpdated = updateGroupExpandState(child);\n if (childUpdated) {\n if (expand) {\n filterComp.expand();\n anyChildrenChanged_1 = true;\n }\n else if (!filterComp.isColumnGroup()) {\n // we only collapse columns wrapped in groups\n filterComp.collapse();\n }\n }\n });\n return anyChildrenChanged_1;\n }\n var colId = filterComp.getColumn().getColId();\n var updateFilterExpandState = !colIds || _.includes(colIds, colId);\n if (updateFilterExpandState) {\n expand ? filterComp.expand() : filterComp.collapse();\n updatedColIds.push(colId);\n }\n return updateFilterExpandState;\n };\n this.filterGroupComps.forEach(updateGroupExpandState);\n // update header expand / collapse icon\n this.onGroupExpanded();\n if (colIds) {\n var unrecognisedColIds = colIds.filter(function (colId) { return updatedColIds.indexOf(colId) < 0; });\n if (unrecognisedColIds.length > 0) {\n console.warn('AG Grid: unable to find columns for these supplied colIds:', unrecognisedColIds);\n }\n }\n };\n FiltersToolPanelListPanel.prototype.onGroupExpanded = function () {\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.fireExpandedEvent = function () {\n var expandedCount = 0;\n var notExpandedCount = 0;\n var updateExpandCounts = function (filterGroup) {\n if (!filterGroup.isColumnGroup()) {\n return;\n }\n filterGroup.isExpanded() ? expandedCount++ : notExpandedCount++;\n filterGroup.getChildren().forEach(function (child) {\n if (child instanceof ToolPanelFilterGroupComp) {\n updateExpandCounts(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateExpandCounts);\n var state;\n if (expandedCount > 0 && notExpandedCount > 0) {\n state = EXPAND_STATE.INDETERMINATE;\n }\n else if (notExpandedCount > 0) {\n state = EXPAND_STATE.COLLAPSED;\n }\n else {\n state = EXPAND_STATE.EXPANDED;\n }\n this.dispatchEvent({ type: 'groupExpanded', state: state });\n };\n FiltersToolPanelListPanel.prototype.performFilterSearch = function (searchText) {\n this.searchFilterText = _.exists(searchText) ? searchText.toLowerCase() : null;\n this.searchFilters(this.searchFilterText);\n };\n FiltersToolPanelListPanel.prototype.searchFilters = function (searchFilter) {\n var passesFilter = function (groupName) {\n return !_.exists(searchFilter) || groupName.toLowerCase().indexOf(searchFilter) !== -1;\n };\n var recursivelySearch = function (filterItem, parentPasses) {\n if (!(filterItem instanceof ToolPanelFilterGroupComp)) {\n return passesFilter(filterItem.getColumnFilterName() || '');\n }\n var children = filterItem.getChildren();\n var groupNamePasses = passesFilter(filterItem.getFilterGroupName());\n // if group or parent already passed - ensure this group and all children are visible\n var alreadyPassed = parentPasses || groupNamePasses;\n if (alreadyPassed) {\n // ensure group visible\n filterItem.hideGroup(false);\n // ensure all children are visible\n for (var i = 0; i < children.length; i++) {\n recursivelySearch(children[i], alreadyPassed);\n filterItem.hideGroupItem(false, i);\n }\n return true;\n }\n // hide group item filters\n var anyChildPasses = false;\n children.forEach(function (child, index) {\n var childPasses = recursivelySearch(child, parentPasses);\n filterItem.hideGroupItem(!childPasses, index);\n if (childPasses) {\n anyChildPasses = true;\n }\n });\n // hide group if no children pass\n filterItem.hideGroup(!anyChildPasses);\n return anyChildPasses;\n };\n var firstVisible;\n var lastVisible;\n this.filterGroupComps.forEach(function (filterGroup, idx) {\n recursivelySearch(filterGroup, false);\n if (firstVisible === undefined) {\n if (!filterGroup.containsCssClass('ag-hidden')) {\n firstVisible = idx;\n lastVisible = idx;\n }\n }\n else if (!filterGroup.containsCssClass('ag-hidden') && lastVisible !== idx) {\n lastVisible = idx;\n }\n });\n this.setFirstAndLastVisible(firstVisible, lastVisible);\n };\n FiltersToolPanelListPanel.prototype.setFirstAndLastVisible = function (firstIdx, lastIdx) {\n this.filterGroupComps.forEach(function (filterGroup, idx) {\n filterGroup.removeCssClass('ag-first-group-visible');\n filterGroup.removeCssClass('ag-last-group-visible');\n if (idx === firstIdx) {\n filterGroup.addCssClass('ag-first-group-visible');\n }\n if (idx === lastIdx) {\n filterGroup.addCssClass('ag-last-group-visible');\n }\n });\n };\n FiltersToolPanelListPanel.prototype.refreshFilters = function (isDisplayed) {\n this.filterGroupComps.forEach(function (filterGroupComp) { return filterGroupComp.refreshFilters(isDisplayed); });\n };\n FiltersToolPanelListPanel.prototype.destroyFilters = function () {\n this.filterGroupComps = this.destroyBeans(this.filterGroupComps);\n _.clearElement(this.getGui());\n };\n FiltersToolPanelListPanel.prototype.destroy = function () {\n this.destroyFilters();\n _super.prototype.destroy.call(this);\n };\n FiltersToolPanelListPanel.TEMPLATE = \"<div class=\\\"ag-filter-list-panel\\\"></div>\";\n __decorate$1X([\n Autowired(\"gridApi\")\n ], FiltersToolPanelListPanel.prototype, \"gridApi\", void 0);\n __decorate$1X([\n Autowired(\"columnApi\")\n ], FiltersToolPanelListPanel.prototype, \"columnApi\", void 0);\n __decorate$1X([\n Autowired('toolPanelColDefService')\n ], FiltersToolPanelListPanel.prototype, \"toolPanelColDefService\", void 0);\n __decorate$1X([\n Autowired('columnModel')\n ], FiltersToolPanelListPanel.prototype, \"columnModel\", void 0);\n return FiltersToolPanelListPanel;\n}(Component));\n\nvar __extends$2J = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$J = (undefined && undefined.__assign) || function () {\n __assign$J = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$J.apply(this, arguments);\n};\nvar __decorate$1W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FiltersToolPanel = /** @class */ (function (_super) {\n __extends$2J(FiltersToolPanel, _super);\n function FiltersToolPanel() {\n var _this = _super.call(this, FiltersToolPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.listenerDestroyFuncs = [];\n return _this;\n }\n FiltersToolPanel.prototype.init = function (params) {\n // if initialised is true, means this is a refresh\n if (this.initialised) {\n this.listenerDestroyFuncs.forEach(function (func) { return func(); });\n this.listenerDestroyFuncs = [];\n }\n this.initialised = true;\n var defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi,\n columnApi: this.columnApi,\n };\n this.params = __assign$J(__assign$J(__assign$J({}, defaultParams), params), { context: this.gridOptionsService.context });\n this.filtersToolPanelHeaderPanel.init(this.params);\n this.filtersToolPanelListPanel.init(this.params);\n var hideExpand = this.params.suppressExpandAll;\n var hideSearch = this.params.suppressFilterSearch;\n if (hideExpand && hideSearch) {\n this.filtersToolPanelHeaderPanel.setDisplayed(false);\n }\n // this is necessary to prevent a memory leak while refreshing the tool panel\n this.listenerDestroyFuncs.push(this.addManagedListener(this.filtersToolPanelHeaderPanel, 'expandAll', this.onExpandAll.bind(this)), this.addManagedListener(this.filtersToolPanelHeaderPanel, 'collapseAll', this.onCollapseAll.bind(this)), this.addManagedListener(this.filtersToolPanelHeaderPanel, 'searchChanged', this.onSearchChanged.bind(this)), this.addManagedListener(this.filtersToolPanelListPanel, 'groupExpanded', this.onGroupExpanded.bind(this)));\n };\n // lazy initialise the panel\n FiltersToolPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n FiltersToolPanel.prototype.onExpandAll = function () {\n this.filtersToolPanelListPanel.expandFilterGroups(true);\n };\n FiltersToolPanel.prototype.onCollapseAll = function () {\n this.filtersToolPanelListPanel.expandFilterGroups(false);\n };\n FiltersToolPanel.prototype.onSearchChanged = function (event) {\n this.filtersToolPanelListPanel.performFilterSearch(event.searchText);\n };\n FiltersToolPanel.prototype.setFilterLayout = function (colDefs) {\n this.filtersToolPanelListPanel.setFiltersLayout(colDefs);\n };\n FiltersToolPanel.prototype.onGroupExpanded = function (event) {\n this.filtersToolPanelHeaderPanel.setExpandState(event.state);\n };\n FiltersToolPanel.prototype.expandFilterGroups = function (groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(true, groupIds);\n };\n FiltersToolPanel.prototype.collapseFilterGroups = function (groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(false, groupIds);\n };\n FiltersToolPanel.prototype.expandFilters = function (colIds) {\n this.filtersToolPanelListPanel.expandFilters(true, colIds);\n };\n FiltersToolPanel.prototype.collapseFilters = function (colIds) {\n this.filtersToolPanelListPanel.expandFilters(false, colIds);\n };\n FiltersToolPanel.prototype.syncLayoutWithGrid = function () {\n this.filtersToolPanelListPanel.syncFilterLayout();\n };\n FiltersToolPanel.prototype.refresh = function () {\n this.init(this.params);\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n FiltersToolPanel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n FiltersToolPanel.TEMPLATE = \"<div class=\\\"ag-filter-toolpanel\\\">\\n <ag-filters-tool-panel-header ref=\\\"filtersToolPanelHeaderPanel\\\"></ag-filters-tool-panel-header>\\n <ag-filters-tool-panel-list ref=\\\"filtersToolPanelListPanel\\\"></ag-filters-tool-panel-list>\\n </div>\";\n __decorate$1W([\n RefSelector('filtersToolPanelHeaderPanel')\n ], FiltersToolPanel.prototype, \"filtersToolPanelHeaderPanel\", void 0);\n __decorate$1W([\n RefSelector('filtersToolPanelListPanel')\n ], FiltersToolPanel.prototype, \"filtersToolPanelListPanel\", void 0);\n __decorate$1W([\n Autowired('gridApi')\n ], FiltersToolPanel.prototype, \"gridApi\", void 0);\n __decorate$1W([\n Autowired('columnApi')\n ], FiltersToolPanel.prototype, \"columnApi\", void 0);\n return FiltersToolPanel;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$c = '29.3.5';\n\nvar FiltersToolPanelModule = {\n version: VERSION$c,\n moduleName: ModuleNames.FiltersToolPanelModule,\n beans: [],\n agStackComponents: [\n { componentName: 'AgFiltersToolPanelHeader', componentClass: FiltersToolPanelHeaderPanel },\n { componentName: 'AgFiltersToolPanelList', componentClass: FiltersToolPanelListPanel }\n ],\n userComponents: [\n { componentName: 'agFiltersToolPanel', componentClass: FiltersToolPanel },\n ],\n dependantModules: [\n SideBarModule,\n EnterpriseCoreModule\n ]\n};\n\nvar __extends$2I = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * The interval methods don't mutate Date parameters.\n */\nvar TimeInterval = /** @class */ (function () {\n function TimeInterval(encode, decode, rangeCallback) {\n this._encode = encode;\n this._decode = decode;\n this._rangeCallback = rangeCallback;\n }\n /**\n * Returns a new date representing the latest interval boundary date before or equal to date.\n * For example, `day.floor(date)` typically returns 12:00 AM local time on the given date.\n * @param date\n */\n TimeInterval.prototype.floor = function (date) {\n var d = new Date(date);\n var e = this._encode(d);\n return this._decode(e);\n };\n /**\n * Returns a new date representing the earliest interval boundary date after or equal to date.\n * @param date\n */\n TimeInterval.prototype.ceil = function (date) {\n var d = new Date(Number(date) - 1);\n var e = this._encode(d);\n return this._decode(e + 1);\n };\n /**\n * Returns an array of dates representing every interval boundary after or equal to start (inclusive) and before stop (exclusive).\n * @param start Range start.\n * @param stop Range end.\n * @param extend If specified, the requested range will be extended to the closest \"nice\" values.\n */\n TimeInterval.prototype.range = function (start, stop, extend) {\n var _a;\n var rangeCallback = (_a = this._rangeCallback) === null || _a === void 0 ? void 0 : _a.call(this, start, stop);\n var e0 = this._encode(extend ? this.floor(start) : this.ceil(start));\n var e1 = this._encode(extend ? this.ceil(stop) : this.floor(stop));\n if (e1 < e0) {\n return [];\n }\n var range = [];\n for (var e = e0; e <= e1; e++) {\n var d = this._decode(e);\n range.push(d);\n }\n rangeCallback === null || rangeCallback === void 0 ? void 0 : rangeCallback();\n return range;\n };\n return TimeInterval;\n}());\nvar CountableTimeInterval = /** @class */ (function (_super) {\n __extends$2I(CountableTimeInterval, _super);\n function CountableTimeInterval() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CountableTimeInterval.prototype.getOffset = function (snapTo, step) {\n var s = typeof snapTo === 'number' || snapTo instanceof Date ? this._encode(new Date(snapTo)) : 0;\n return Math.floor(s) % step;\n };\n /**\n * Returns a filtered view of this interval representing every step'th date.\n * It can be a number of minutes, hours, days etc.\n * Must be a positive integer.\n * @param step\n */\n CountableTimeInterval.prototype.every = function (step, options) {\n var _this = this;\n var offset = 0;\n var rangeCallback;\n var _a = (options !== null && options !== void 0 ? options : {}).snapTo, snapTo = _a === void 0 ? 'start' : _a;\n if (typeof snapTo === 'string') {\n var initialOffset_1 = offset;\n rangeCallback = function (start, stop) {\n var s = snapTo === 'start' ? start : stop;\n offset = _this.getOffset(s, step);\n return function () { return (offset = initialOffset_1); };\n };\n }\n else if (typeof snapTo === 'number') {\n offset = this.getOffset(new Date(snapTo), step);\n }\n else if (snapTo instanceof Date) {\n offset = this.getOffset(snapTo, step);\n }\n var encode = function (date) {\n var e = _this._encode(date);\n return Math.floor((e - offset) / step);\n };\n var decode = function (encoded) {\n return _this._decode(encoded * step + offset);\n };\n var interval = new TimeInterval(encode, decode, rangeCallback);\n return interval;\n };\n return CountableTimeInterval;\n}(TimeInterval));\n\nfunction encode$b(date) {\n return date.getTime();\n}\nfunction decode$b(encoded) {\n return new Date(encoded);\n}\nvar millisecond = new CountableTimeInterval(encode$b, decode$b);\n\n// Common time unit sizes in milliseconds.\nnew Date(0).getFullYear();\nvar durationSecond = 1000;\nvar durationMinute = durationSecond * 60;\nvar durationHour = durationMinute * 60;\nvar durationDay = durationHour * 24;\nvar durationWeek = durationDay * 7;\nvar durationMonth = durationDay * 30;\nvar durationYear = durationDay * 365;\n\nvar offset$2 = new Date().getTimezoneOffset() * durationMinute;\nfunction encode$a(date) {\n return Math.floor((date.getTime() - offset$2) / durationSecond);\n}\nfunction decode$a(encoded) {\n return new Date(offset$2 + encoded * durationSecond);\n}\nvar second = new CountableTimeInterval(encode$a, decode$a);\n\nvar offset$1 = new Date().getTimezoneOffset() * durationMinute;\nfunction encode$9(date) {\n return Math.floor((date.getTime() - offset$1) / durationMinute);\n}\nfunction decode$9(encoded) {\n return new Date(offset$1 + encoded * durationMinute);\n}\nvar minute = new CountableTimeInterval(encode$9, decode$9);\n\nvar offset = new Date().getTimezoneOffset() * durationMinute;\nfunction encode$8(date) {\n return Math.floor((date.getTime() - offset) / durationHour);\n}\nfunction decode$8(encoded) {\n return new Date(offset + encoded * durationHour);\n}\nvar hour = new CountableTimeInterval(encode$8, decode$8);\n\nfunction encode$7(date) {\n var utc = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());\n return Math.floor(utc / durationDay);\n}\nfunction decode$7(encoded) {\n var d = new Date(0);\n d.setDate(d.getDate() + encoded);\n d.setHours(0, 0, 0, 0);\n return d;\n}\nvar day = new CountableTimeInterval(encode$7, decode$7);\n\nvar baseSunday = new Date(2023, 0, 1);\n// Set date to n-th day of the week.\nfunction weekday(n) {\n // Use UTC for weeks calculation to get into account time zone shifts\n var base = Date.UTC(baseSunday.getFullYear(), baseSunday.getMonth(), baseSunday.getDate()) + n * durationDay;\n function encode(date) {\n var utc = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());\n return Math.floor((utc - base) / durationWeek);\n }\n function decode(encoded) {\n var d = new Date(base);\n d.setDate(d.getDate() + encoded * 7);\n return d;\n }\n return new CountableTimeInterval(encode, decode);\n}\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nfunction encode$6(date) {\n return date.getFullYear() * 12 + date.getMonth();\n}\nfunction decode$6(encoded) {\n var year = Math.floor(encoded / 12);\n var month = encoded - year * 12;\n return new Date(year, month, 1);\n}\nvar month = new CountableTimeInterval(encode$6, decode$6);\n\nfunction encode$5(date) {\n return date.getFullYear();\n}\nfunction decode$5(encoded) {\n // Note: assigning years through the constructor\n // will break for years 0 - 99 AD (will turn 1900's).\n var d = new Date();\n d.setFullYear(encoded);\n d.setMonth(0, 1);\n d.setHours(0, 0, 0, 0);\n return d;\n}\nvar year = new CountableTimeInterval(encode$5, decode$5);\n\nfunction encode$4(date) {\n return Math.floor(date.getTime() / durationMinute);\n}\nfunction decode$4(encoded) {\n return new Date(encoded * durationMinute);\n}\nvar utcMinute = new CountableTimeInterval(encode$4, decode$4);\n\nfunction encode$3(date) {\n return Math.floor(date.getTime() / durationHour);\n}\nfunction decode$3(encoded) {\n return new Date(encoded * durationHour);\n}\nvar utcHour = new CountableTimeInterval(encode$3, decode$3);\n\nfunction encode$2(date) {\n return Math.floor(date.getTime() / durationDay);\n}\nfunction decode$2(encoded) {\n var d = new Date(0);\n d.setUTCDate(d.getUTCDate() + encoded);\n d.setUTCHours(0, 0, 0, 0);\n return d;\n}\nvar utcDay = new CountableTimeInterval(encode$2, decode$2);\n\nfunction encode$1(date) {\n return date.getUTCFullYear() * 12 + date.getUTCMonth();\n}\nfunction decode$1(encoded) {\n var year = Math.floor(encoded / 12);\n var month = encoded - year * 12;\n return new Date(Date.UTC(year, month, 1));\n}\nvar utcMonth = new CountableTimeInterval(encode$1, decode$1);\n\nfunction encode(date) {\n return date.getUTCFullYear();\n}\nfunction decode(encoded) {\n // Note: assigning years through the constructor\n // will break for years 0 - 99 AD (will turn 1900's).\n var d = new Date();\n d.setUTCFullYear(encoded);\n d.setUTCMonth(0, 1);\n d.setUTCHours(0, 0, 0, 0);\n return d;\n}\nvar utcYear = new CountableTimeInterval(encode, decode);\n\nvar time = /*#__PURE__*/Object.freeze({\n __proto__: null,\n millisecond: millisecond,\n second: second,\n minute: minute,\n hour: hour,\n day: day,\n sunday: sunday,\n monday: monday,\n tuesday: tuesday,\n wednesday: wednesday,\n thursday: thursday,\n friday: friday,\n saturday: saturday,\n month: month,\n year: year,\n utcMinute: utcMinute,\n utcHour: utcHour,\n utcDay: utcDay,\n utcMonth: utcMonth,\n utcYear: utcYear\n});\n\nvar MOBILE = [/Android/i, /webOS/i, /iPhone/i, /iPad/i, /iPod/i, /BlackBerry/i, /Windows Phone/i];\nfunction isDesktop() {\n var userAgent = navigator.userAgent;\n if (MOBILE.some(function (r) { return r.test(userAgent); })) {\n return false;\n }\n return true;\n}\n\n/**\n * Wraps the native Canvas element and overrides its CanvasRenderingContext2D to\n * provide resolution independent rendering based on `window.devicePixelRatio`.\n */\nvar HdpiCanvas = /** @class */ (function () {\n // The width/height attributes of the Canvas element default to\n // 300/150 according to w3.org.\n function HdpiCanvas(_a) {\n var _b = _a.document, document = _b === void 0 ? window.document : _b, _c = _a.width, width = _c === void 0 ? 600 : _c, _d = _a.height, height = _d === void 0 ? 300 : _d, _e = _a.domLayer, domLayer = _e === void 0 ? false : _e, _f = _a.zIndex, zIndex = _f === void 0 ? 0 : _f, _g = _a.name, name = _g === void 0 ? undefined : _g, _h = _a.overrideDevicePixelRatio, overrideDevicePixelRatio = _h === void 0 ? undefined : _h;\n this._container = undefined;\n this._enabled = true;\n // `NaN` is deliberate here, so that overrides are always applied\n // and the `resetTransform` inside the `resize` method works in IE11.\n this._pixelRatio = NaN;\n this._width = 0;\n this._height = 0;\n this.document = document;\n // Create canvas and immediately apply width + height to avoid out-of-memory\n // errors on iOS/iPadOS Safari.\n this.element = document.createElement('canvas');\n this.element.width = width;\n this.element.height = height;\n this.context = this.element.getContext('2d');\n this.imageSource = this.context.canvas;\n var style = this.element.style;\n style.userSelect = 'none';\n style.display = 'block';\n if (domLayer) {\n style.position = 'absolute';\n style.zIndex = String(zIndex);\n style.top = '0';\n style.left = '0';\n style.pointerEvents = 'none';\n style.opacity = \"1\";\n if (name) {\n this.element.id = name;\n }\n }\n this.setPixelRatio(overrideDevicePixelRatio);\n this.resize(width, height);\n }\n Object.defineProperty(HdpiCanvas.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n set: function (value) {\n if (this._container !== value) {\n this.remove();\n if (value) {\n value.appendChild(this.element);\n }\n this._container = value;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n this.element.style.display = value ? 'block' : 'none';\n this._enabled = !!value;\n },\n enumerable: false,\n configurable: true\n });\n HdpiCanvas.prototype.remove = function () {\n var parentNode = this.element.parentNode;\n if (parentNode != null) {\n parentNode.removeChild(this.element);\n }\n };\n HdpiCanvas.prototype.destroy = function () {\n this.element.remove();\n // Workaround memory allocation quirks in iOS Safari by resizing to 0x0 and clearing.\n // See https://bugs.webkit.org/show_bug.cgi?id=195325.\n this.element.width = 0;\n this.element.height = 0;\n this.context.clearRect(0, 0, 0, 0);\n Object.freeze(this);\n };\n HdpiCanvas.prototype.snapshot = function () {\n // No-op for compatibility with HdpiOffscreenCanvas.\n };\n HdpiCanvas.prototype.clear = function () {\n this.context.save();\n this.context.resetTransform();\n this.context.clearRect(0, 0, this.width, this.height);\n this.context.restore();\n };\n HdpiCanvas.prototype.toImage = function () {\n var img = this.document.createElement('img');\n img.src = this.getDataURL();\n return img;\n };\n HdpiCanvas.prototype.getDataURL = function (type) {\n return this.element.toDataURL(type);\n };\n /**\n * @param fileName The name of the downloaded file.\n * @param fileFormat The file format, the default is `image/png`\n */\n HdpiCanvas.prototype.download = function (fileName, fileFormat) {\n if (fileFormat === void 0) { fileFormat = 'image/png'; }\n fileName = (fileName || '').trim() || 'image';\n var dataUrl = this.getDataURL(fileFormat);\n var document = this.document;\n var a = document.createElement('a');\n a.href = dataUrl;\n a.download = fileName;\n a.style.display = 'none';\n document.body.appendChild(a); // required for the `click` to work in Firefox\n a.click();\n document.body.removeChild(a);\n };\n Object.defineProperty(HdpiCanvas.prototype, \"pixelRatio\", {\n get: function () {\n return this._pixelRatio;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Changes the pixel ratio of the Canvas element to the given value,\n * or uses the window.devicePixelRatio (default), then resizes the Canvas\n * element accordingly (default).\n */\n HdpiCanvas.prototype.setPixelRatio = function (ratio) {\n var pixelRatio = ratio !== null && ratio !== void 0 ? ratio : window.devicePixelRatio;\n if (!isDesktop()) {\n // Mobile browsers have stricter memory limits, we reduce rendering resolution to\n // improve stability on mobile browsers. iOS Safari 12->16 are pain-points since they\n // have memory allocation quirks - see https://bugs.webkit.org/show_bug.cgi?id=195325.\n pixelRatio = 1;\n }\n HdpiCanvas.overrideScale(this.context, pixelRatio);\n this._pixelRatio = pixelRatio;\n };\n Object.defineProperty(HdpiCanvas.prototype, \"pixelated\", {\n get: function () {\n return this.element.style.imageRendering === 'pixelated';\n },\n set: function (value) {\n this.element.style.imageRendering = value ? 'pixelated' : 'auto';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: false,\n configurable: true\n });\n HdpiCanvas.prototype.resize = function (width, height) {\n if (!(width > 0 && height > 0)) {\n return;\n }\n var _a = this, element = _a.element, context = _a.context, pixelRatio = _a.pixelRatio;\n element.width = Math.round(width * pixelRatio);\n element.height = Math.round(height * pixelRatio);\n element.style.width = width + 'px';\n element.style.height = height + 'px';\n context.resetTransform();\n this._width = width;\n this._height = height;\n };\n Object.defineProperty(HdpiCanvas, \"textMeasuringContext\", {\n get: function () {\n if (this._textMeasuringContext) {\n return this._textMeasuringContext;\n }\n var canvas = document.createElement('canvas');\n this._textMeasuringContext = canvas.getContext('2d');\n return this._textMeasuringContext;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas, \"svgText\", {\n get: function () {\n if (this._svgText) {\n return this._svgText;\n }\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n svg.setAttribute('width', '100');\n svg.setAttribute('height', '100');\n // Add a descriptive class name in case someone sees this SVG element\n // in devtools and wonders about its purpose:\n if (svg.classList) {\n svg.classList.add('text-measuring-svg');\n }\n else {\n svg.setAttribute('class', 'text-measuring-svg');\n }\n svg.style.position = 'absolute';\n svg.style.top = '-1000px';\n svg.style.visibility = 'hidden';\n var svgText = document.createElementNS(xmlns, 'text');\n svgText.setAttribute('x', '0');\n svgText.setAttribute('y', '30');\n svgText.setAttribute('text', 'black');\n svg.appendChild(svgText);\n document.body.appendChild(svg);\n this._svgText = svgText;\n return svgText;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas, \"has\", {\n get: function () {\n if (this._has) {\n return this._has;\n }\n var isChrome = navigator.userAgent.indexOf('Chrome') > -1;\n var isFirefox = navigator.userAgent.indexOf('Firefox') > -1;\n var isSafari = !isChrome && navigator.userAgent.indexOf('Safari') > -1;\n this._has = Object.freeze({\n textMetrics: this.textMeasuringContext.measureText('test').actualBoundingBoxDescent !== undefined &&\n // Firefox implemented advanced TextMetrics object in v74:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1102584\n // but it's buggy, so we'll keep using the SVG for text measurement in Firefox for now.\n !isFirefox &&\n !isSafari,\n getTransform: this.textMeasuringContext.getTransform !== undefined,\n });\n return this._has;\n },\n enumerable: false,\n configurable: true\n });\n HdpiCanvas.measureText = function (text, font, textBaseline, textAlign) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n ctx.textBaseline = textBaseline;\n ctx.textAlign = textAlign;\n return ctx.measureText(text);\n };\n /**\n * Returns the width and height of the measured text.\n * @param text The single-line text to measure.\n * @param font The font shorthand string.\n */\n HdpiCanvas.getTextSize = function (text, font) {\n if (this.has.textMetrics) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n var metrics = ctx.measureText(text);\n return {\n width: metrics.width,\n height: metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent,\n };\n }\n else {\n return this.measureSvgText(text, font);\n }\n };\n HdpiCanvas.measureSvgText = function (text, font) {\n var cache = this.textSizeCache;\n var fontCache = cache[font];\n // Note: consider not caching the size of numeric strings.\n // For example: if (isNaN(+text)) { // skip\n if (fontCache) {\n var size_1 = fontCache[text];\n if (size_1) {\n return size_1;\n }\n }\n else {\n cache[font] = {};\n }\n var svgText = this.svgText;\n svgText.style.font = font;\n svgText.textContent = text;\n // `getBBox` returns an instance of `SVGRect` with the same `width` and `height`\n // measurements as `DOMRect` instance returned by the `getBoundingClientRect`.\n // But the `SVGRect` instance has half the properties of the `DOMRect`,\n // so we use the `getBBox` method.\n var bbox = svgText.getBBox();\n var size = {\n width: bbox.width,\n height: bbox.height,\n };\n cache[font][text] = size;\n return size;\n };\n HdpiCanvas.overrideScale = function (ctx, scale) {\n var depth = 0;\n var overrides = {\n save: function () {\n this.$save();\n depth++;\n },\n restore: function () {\n if (depth > 0) {\n this.$restore();\n depth--;\n }\n else {\n throw new Error('AG Charts - Unable to restore() past depth 0');\n }\n },\n setTransform: function (a, b, c, d, e, f) {\n if (typeof a === 'object') {\n this.$setTransform(a);\n }\n else {\n this.$setTransform(a * scale, b * scale, c * scale, d * scale, e * scale, f * scale);\n }\n },\n resetTransform: function () {\n // As of Jan 8, 2019, `resetTransform` is still an \"experimental technology\",\n // and doesn't work in IE11 and Edge 44.\n this.$setTransform(scale, 0, 0, scale, 0, 0);\n },\n verifyDepthZero: function () {\n if (depth !== 0) {\n throw new Error('AG Charts - Save/restore depth is non-zero: ' + depth);\n }\n },\n };\n for (var name_1 in overrides) {\n if (Object.prototype.hasOwnProperty.call(overrides, name_1)) {\n // Save native methods under prefixed names,\n // if this hasn't been done by the previous overrides already.\n if (!ctx['$' + name_1]) {\n ctx['$' + name_1] = ctx[name_1];\n }\n // Replace native methods with overrides,\n // or previous overrides with the new ones.\n ctx[name_1] = overrides[name_1];\n }\n }\n };\n HdpiCanvas.textSizeCache = {};\n return HdpiCanvas;\n}());\n\n// For small data structs like a bounding box, objects are superior to arrays\n// in terms of performance (by 3-4% in Chrome 71, Safari 12 and by 20% in Firefox 64).\n// They are also self descriptive and harder to abuse.\n// For example, one has to do:\n// `ctx.strokeRect(bbox.x, bbox.y, bbox.width, bbox.height);`\n// rather than become enticed by the much slower:\n// `ctx.strokeRect(...bbox);`\n// https://jsperf.com/array-vs-object-create-access\nvar __assign$I = (undefined && undefined.__assign) || function () {\n __assign$I = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$I.apply(this, arguments);\n};\nvar __read$10 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar BBox = /** @class */ (function () {\n function BBox(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n BBox.prototype.clone = function () {\n var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n return new BBox(x, y, width, height);\n };\n BBox.prototype.equals = function (other) {\n return this.x === other.x && this.y === other.y && this.width === other.width && this.height === other.height;\n };\n BBox.prototype.containsPoint = function (x, y) {\n return x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height;\n };\n BBox.prototype.collidesBBox = function (other) {\n return (this.x < other.x + other.width &&\n this.x + this.width > other.x &&\n this.y < other.y + other.height &&\n this.y + this.height > other.y);\n };\n BBox.prototype.isInfinite = function () {\n return (Math.abs(this.x) === Infinity ||\n Math.abs(this.y) === Infinity ||\n Math.abs(this.width) === Infinity ||\n Math.abs(this.height) === Infinity);\n };\n BBox.prototype.shrink = function (amount, position) {\n var _this = this;\n var apply = function (pos, amt) {\n switch (pos) {\n case 'top':\n _this.y += amt;\n // eslint-disable-next-line no-fallthrough\n case 'bottom':\n _this.height -= amt;\n break;\n case 'left':\n _this.x += amt;\n // eslint-disable-next-line no-fallthrough\n case 'right':\n _this.width -= amt;\n break;\n case 'vertical':\n _this.y += amt;\n _this.height -= amt * 2;\n break;\n case 'horizontal':\n _this.x += amt;\n _this.width -= amt * 2;\n break;\n default:\n _this.x += amt;\n _this.width -= amt * 2;\n _this.y += amt;\n _this.height -= amt * 2;\n }\n };\n if (typeof amount === 'number') {\n apply(position, amount);\n }\n else {\n Object.entries(amount).forEach(function (_a) {\n var _b = __read$10(_a, 2), pos = _b[0], amt = _b[1];\n return apply(pos, amt);\n });\n }\n return this;\n };\n BBox.prototype.grow = function (amount, position) {\n if (typeof amount === 'number') {\n this.shrink(-amount, position);\n }\n else {\n var paddingCopy = __assign$I({}, amount);\n for (var key in paddingCopy) {\n paddingCopy[key] *= -1;\n }\n this.shrink(paddingCopy);\n }\n return this;\n };\n BBox.merge = function (boxes) {\n var left = Infinity;\n var top = Infinity;\n var right = -Infinity;\n var bottom = -Infinity;\n boxes.forEach(function (box) {\n if (box.x < left) {\n left = box.x;\n }\n if (box.y < top) {\n top = box.y;\n }\n if (box.x + box.width > right) {\n right = box.x + box.width;\n }\n if (box.y + box.height > bottom) {\n bottom = box.y + box.height;\n }\n });\n return new BBox(left, top, right - left, bottom - top);\n };\n return BBox;\n}());\n\nvar __read$$ = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/**\n * As of Jan 8, 2019, Firefox still doesn't implement\n * `getTransform(): DOMMatrix;`\n * `setTransform(transform?: DOMMatrix2DInit)`\n * in the `CanvasRenderingContext2D`.\n * Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=928150\n * IE11 and Edge 44 also don't have the support.\n * Thus this class, to keep track of the current transform and\n * combine transformations.\n * Standards:\n * https://html.spec.whatwg.org/dev/canvas.html\n * https://www.w3.org/TR/geometry-1/\n */\nvar Matrix = /** @class */ (function () {\n function Matrix(elements) {\n if (elements === void 0) { elements = [1, 0, 0, 1, 0, 0]; }\n this.elements = elements;\n }\n Matrix.prototype.setElements = function (elements) {\n var e = this.elements;\n // `this.elements = elements.slice()` is 4-5 times slower\n // (in Chrome 71 and FF 64) than manually copying elements,\n // since slicing allocates new memory.\n // The performance of passing parameters individually\n // vs as an array is about the same in both browsers, so we\n // go with a single (array of elements) parameter, because\n // `setElements(elements)` and `setElements([a, b, c, d, e, f])`\n // calls give us roughly the same performance, versus\n // `setElements(...elements)` and `setElements(a, b, c, d, e, f)`,\n // where the spread operator causes a 20-30x performance drop\n // (30x when compiled to ES5's `.apply(this, elements)`\n // 20x when used natively).\n e[0] = elements[0];\n e[1] = elements[1];\n e[2] = elements[2];\n e[3] = elements[3];\n e[4] = elements[4];\n e[5] = elements[5];\n return this;\n };\n Object.defineProperty(Matrix.prototype, \"identity\", {\n get: function () {\n var e = this.elements;\n return e[0] === 1 && e[1] === 0 && e[2] === 0 && e[3] === 1 && e[4] === 0 && e[5] === 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"a\", {\n get: function () {\n return this.elements[0];\n },\n set: function (value) {\n this.elements[0] = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"b\", {\n get: function () {\n return this.elements[1];\n },\n set: function (value) {\n this.elements[1] = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"c\", {\n get: function () {\n return this.elements[2];\n },\n set: function (value) {\n this.elements[2] = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"d\", {\n get: function () {\n return this.elements[3];\n },\n set: function (value) {\n this.elements[3] = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"e\", {\n get: function () {\n return this.elements[4];\n },\n set: function (value) {\n this.elements[4] = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"f\", {\n get: function () {\n return this.elements[5];\n },\n set: function (value) {\n this.elements[5] = value;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Performs the AxB matrix multiplication and saves the result\n * to `C`, if given, or to `A` otherwise.\n */\n Matrix.prototype.AxB = function (A, B, C) {\n var a = A[0] * B[0] + A[2] * B[1], b = A[1] * B[0] + A[3] * B[1], c = A[0] * B[2] + A[2] * B[3], d = A[1] * B[2] + A[3] * B[3], e = A[0] * B[4] + A[2] * B[5] + A[4], f = A[1] * B[4] + A[3] * B[5] + A[5];\n C = C || A;\n C[0] = a;\n C[1] = b;\n C[2] = c;\n C[3] = d;\n C[4] = e;\n C[5] = f;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns the current matrix.\n * @param other\n */\n Matrix.prototype.multiplySelf = function (other) {\n this.AxB(this.elements, other.elements);\n return this;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns a new matrix.\n * @param other\n */\n Matrix.prototype.multiply = function (other) {\n var elements = new Array(6);\n this.AxB(this.elements, other.elements, elements);\n return new Matrix(elements);\n };\n Matrix.prototype.preMultiplySelf = function (other) {\n this.AxB(other.elements, this.elements, this.elements);\n return this;\n };\n /**\n * Returns the inverse of this matrix as a new matrix.\n */\n Matrix.prototype.inverse = function () {\n var el = this.elements;\n var a = el[0], b = el[1], c = el[2], d = el[3];\n var e = el[4], f = el[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n return new Matrix([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n };\n /**\n * Save the inverse of this matrix to the given matrix.\n */\n Matrix.prototype.inverseTo = function (other) {\n var el = this.elements;\n var a = el[0], b = el[1], c = el[2], d = el[3];\n var e = el[4], f = el[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n other.setElements([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n return this;\n };\n Matrix.prototype.invertSelf = function () {\n var el = this.elements;\n var a = el[0], b = el[1], c = el[2], d = el[3];\n var e = el[4], f = el[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n el[0] = d;\n el[1] = -b;\n el[2] = -c;\n el[3] = a;\n el[4] = c * f - d * e;\n el[5] = b * e - a * f;\n return this;\n };\n Matrix.prototype.transformPoint = function (x, y) {\n var e = this.elements;\n return {\n x: x * e[0] + y * e[2] + e[4],\n y: x * e[1] + y * e[3] + e[5],\n };\n };\n Matrix.prototype.transformBBox = function (bbox, target) {\n var elements = this.elements;\n var xx = elements[0];\n var xy = elements[1];\n var yx = elements[2];\n var yy = elements[3];\n var h_w = bbox.width * 0.5;\n var h_h = bbox.height * 0.5;\n var cx = bbox.x + h_w;\n var cy = bbox.y + h_h;\n var w = Math.abs(h_w * xx) + Math.abs(h_h * yx);\n var h = Math.abs(h_w * xy) + Math.abs(h_h * yy);\n if (!target) {\n target = new BBox(0, 0, 0, 0);\n }\n target.x = cx * xx + cy * yx + elements[4] - w;\n target.y = cx * xy + cy * yy + elements[5] - h;\n target.width = w + w;\n target.height = h + h;\n return target;\n };\n Matrix.prototype.toContext = function (ctx) {\n // It's fair to say that matrix multiplications are not cheap.\n // However, updating path definitions on every frame isn't either, so\n // it may be cheaper to just translate paths. It's also fair to\n // say, that most paths will have to be re-rendered anyway, say\n // rectangle paths in a bar chart, where an animation would happen when\n // the data set changes and existing bars are morphed into new ones.\n // Or a pie chart, where old sectors are also morphed into new ones.\n // Same for the line chart. The only plausible case where translating\n // existing paths would be enough, is the scatter chart, where marker\n // icons, typically circles, stay the same size. But if circle radii\n // are bound to some data points, even circle paths would have to be\n // updated. And thus it makes sense to optimize for fewer matrix\n // transforms, where transform matrices of paths are mostly identity\n // matrices and `x`/`y`, `centerX`/`centerY` and similar properties\n // are used to define a path at specific coordinates. And only groups\n // are used to collectively apply a transform to a set of nodes.\n // If the matrix is mostly identity (95% of the time),\n // the `if (this.isIdentity)` check can make this call 3-4 times\n // faster on average: https://jsperf.com/matrix-check-first-vs-always-set\n if (this.identity) {\n return;\n }\n var e = this.elements;\n ctx.transform(e[0], e[1], e[2], e[3], e[4], e[5]);\n };\n Matrix.flyweight = function (sourceMatrix) {\n return Matrix.instance.setElements(sourceMatrix.elements);\n };\n Matrix.updateTransformMatrix = function (matrix, scalingX, scalingY, rotation, translationX, translationY, opts) {\n // Assume that centers of scaling and rotation are at the origin.\n var _a = __read$$([0, 0], 2), bbcx = _a[0], bbcy = _a[1];\n var sx = scalingX;\n var sy = scalingY;\n var scx;\n var scy;\n if (sx === 1 && sy === 1) {\n scx = 0;\n scy = 0;\n }\n else {\n scx = (opts === null || opts === void 0 ? void 0 : opts.scalingCenterX) == null ? bbcx : opts === null || opts === void 0 ? void 0 : opts.scalingCenterX;\n scy = (opts === null || opts === void 0 ? void 0 : opts.scalingCenterY) == null ? bbcy : opts === null || opts === void 0 ? void 0 : opts.scalingCenterY;\n }\n var r = rotation;\n var cos = Math.cos(r);\n var sin = Math.sin(r);\n var rcx;\n var rcy;\n if (r === 0) {\n rcx = 0;\n rcy = 0;\n }\n else {\n rcx = (opts === null || opts === void 0 ? void 0 : opts.rotationCenterX) == null ? bbcx : opts === null || opts === void 0 ? void 0 : opts.rotationCenterX;\n rcy = (opts === null || opts === void 0 ? void 0 : opts.rotationCenterY) == null ? bbcy : opts === null || opts === void 0 ? void 0 : opts.rotationCenterY;\n }\n var tx = translationX;\n var ty = translationY;\n // The transform matrix `M` is a result of the following transformations:\n // 1) translate the center of scaling to the origin\n // 2) scale\n // 3) translate back\n // 4) translate the center of rotation to the origin\n // 5) rotate\n // 6) translate back\n // 7) translate\n // (7) (6) (5) (4) (3) (2) (1)\n // | 1 0 tx | | 1 0 rcx | | cos -sin 0 | | 1 0 -rcx | | 1 0 scx | | sx 0 0 | | 1 0 -scx |\n // M = | 0 1 ty | * | 0 1 rcy | * | sin cos 0 | * | 0 1 -rcy | * | 0 1 scy | * | 0 sy 0 | * | 0 1 -scy |\n // | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 0 | | 0 0 1 |\n // Translation after steps 1-4 above:\n var tx4 = scx * (1 - sx) - rcx;\n var ty4 = scy * (1 - sy) - rcy;\n matrix.setElements([\n cos * sx,\n sin * sx,\n -sin * sy,\n cos * sy,\n cos * tx4 - sin * ty4 + rcx + tx,\n sin * tx4 + cos * ty4 + rcy + ty,\n ]);\n return matrix;\n };\n Matrix.fromContext = function (ctx) {\n var domMatrix = ctx.getTransform();\n return new Matrix([domMatrix.a, domMatrix.b, domMatrix.c, domMatrix.d, domMatrix.e, domMatrix.f]);\n };\n Matrix.instance = new Matrix();\n return Matrix;\n}());\n\nvar ID_MAP = {};\nfunction createId$1(instance) {\n var _a;\n var constructor = instance.constructor;\n var className = Object.prototype.hasOwnProperty.call(constructor, 'className')\n ? constructor.className\n : constructor.name;\n if (!className) {\n throw new Error(\"The \" + constructor + \" is missing the 'className' property.\");\n }\n var nextId = ((_a = ID_MAP[className]) !== null && _a !== void 0 ? _a : 0) + 1;\n ID_MAP[className] = nextId;\n return className + '-' + nextId;\n}\n\nfunction windowValue(name) {\n /**\n * Redeclaration of window that is safe for use with Gatsby server-side (webpack) compilation.\n */\n var WINDOW = typeof window !== 'undefined'\n ? window\n : // typeof global !== 'undefined' ? (global as any) :\n undefined;\n return WINDOW === null || WINDOW === void 0 ? void 0 : WINDOW[name];\n}\n\nvar RedrawType;\n(function (RedrawType) {\n RedrawType[RedrawType[\"NONE\"] = 0] = \"NONE\";\n // Canvas doesn't need clearing, an incremental re-rerender is sufficient.\n RedrawType[RedrawType[\"TRIVIAL\"] = 1] = \"TRIVIAL\";\n // Group needs clearing, a semi-incremental re-render is sufficient.\n RedrawType[RedrawType[\"MINOR\"] = 2] = \"MINOR\";\n // Canvas needs to be cleared for these redraw types.\n RedrawType[RedrawType[\"MAJOR\"] = 3] = \"MAJOR\";\n})(RedrawType || (RedrawType = {}));\n/** @returns true if eval() is disabled in the current execution context. */\nfunction evalAvailable() {\n try {\n eval('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\nvar EVAL_USEABLE = evalAvailable();\nfunction SceneChangeDetection(opts) {\n var _a = opts || {}, _b = _a.redraw, redraw = _b === void 0 ? RedrawType.TRIVIAL : _b, _c = _a.type, type = _c === void 0 ? 'normal' : _c, changeCb = _a.changeCb, convertor = _a.convertor, _d = _a.checkDirtyOnAssignment, checkDirtyOnAssignment = _d === void 0 ? false : _d;\n var debug = windowValue('agChartsSceneChangeDetectionDebug') != null;\n return function (target, key) {\n // `target` is either a constructor (static member) or prototype (instance member)\n var privateKey = \"__\" + key;\n if (target[key]) {\n return;\n }\n if (EVAL_USEABLE) {\n // Optimised code-path.\n // Remove all conditional logic from runtime - generate a setter with the exact necessary\n // steps, as these setters are called a LOT during update cycles.\n var setterJs = \"\\n \" + (debug ? 'var setCount = 0;' : '') + \"\\n function set_\" + key + \"(value) {\\n const oldValue = this.\" + privateKey + \";\\n \" + (convertor ? 'value = convertor(value);' : '') + \"\\n if (value !== oldValue) {\\n this.\" + privateKey + \" = value;\\n \" + (debug\n ? \"console.log({ t: this, property: '\" + key + \"', oldValue, value, stack: new Error().stack });\"\n : '') + \"\\n \" + (type === 'normal' ? \"this.markDirty(this, \" + redraw + \");\" : '') + \"\\n \" + (type === 'transform' ? \"this.markDirtyTransform(\" + redraw + \");\" : '') + \"\\n \" + (type === 'path'\n ? \"if (!this._dirtyPath) { this._dirtyPath = true; this.markDirty(this, \" + redraw + \"); }\"\n : '') + \"\\n \" + (type === 'font'\n ? \"if (!this._dirtyFont) { this._dirtyFont = true; this.markDirty(this, \" + redraw + \"); }\"\n : '') + \"\\n \" + (changeCb ? 'changeCb(this);' : '') + \"\\n }\\n \" + (checkDirtyOnAssignment\n ? \"if (value != null && value._dirty > \" + RedrawType.NONE + \") { this.markDirty(value, value._dirty); }\"\n : '') + \"\\n };\\n set_\" + key + \";\\n \";\n var getterJs = \"\\n function get_\" + key + \"() {\\n return this.\" + privateKey + \";\\n };\\n get_\" + key + \";\\n \";\n Object.defineProperty(target, key, {\n set: eval(setterJs),\n get: eval(getterJs),\n enumerable: true,\n configurable: true,\n });\n }\n else {\n // Unoptimised but 'safe' code-path, for environments with CSP headers and no 'unsafe-eval'.\n // We deliberately do not support debug branches found in the optimised path above, since\n // for large data-set series performance deteriorates with every extra branch here.\n var setter = function (value) {\n var oldValue = this[privateKey];\n value = convertor ? convertor(value) : value;\n if (value !== oldValue) {\n this[privateKey] = value;\n if (type === 'normal')\n this.markDirty(this, redraw);\n if (type === 'transform')\n this.markDirtyTransform(redraw);\n if (type === 'path' && !this._dirtyPath) {\n this._dirtyPath = true;\n this.markDirty(this, redraw);\n }\n if (type === 'font' && !this._dirtyFont) {\n this._dirtyFont = true;\n this.markDirty(this, redraw);\n }\n if (changeCb)\n changeCb(this);\n }\n if (checkDirtyOnAssignment && value != null && value._dirty > RedrawType.NONE)\n this.markDirty(value, value._dirty);\n };\n var getter = function () {\n return this[privateKey];\n };\n Object.defineProperty(target, key, {\n set: setter,\n get: getter,\n enumerable: true,\n configurable: true,\n });\n }\n };\n}\nvar ChangeDetectable = /** @class */ (function () {\n function ChangeDetectable() {\n this._dirty = RedrawType.MAJOR;\n }\n ChangeDetectable.prototype.markDirty = function (_source, type) {\n if (type === void 0) { type = RedrawType.TRIVIAL; }\n if (this._dirty > type) {\n return;\n }\n this._dirty = type;\n };\n ChangeDetectable.prototype.markClean = function (_opts) {\n this._dirty = RedrawType.NONE;\n };\n ChangeDetectable.prototype.isDirty = function () {\n return this._dirty > RedrawType.NONE;\n };\n return ChangeDetectable;\n}());\n\nvar __extends$2H = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$B = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$_ = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$B = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$_(arguments[i]));\n return ar;\n};\nvar PointerEvents;\n(function (PointerEvents) {\n PointerEvents[PointerEvents[\"All\"] = 0] = \"All\";\n PointerEvents[PointerEvents[\"None\"] = 1] = \"None\";\n})(PointerEvents || (PointerEvents = {}));\nvar zIndexChangedCallback = function (o) {\n if (o.parent) {\n o.parent.dirtyZIndex = true;\n }\n o.zIndexChanged();\n};\n/**\n * Abstract scene graph node.\n * Each node can have zero or one parent and belong to zero or one scene.\n */\nvar Node = /** @class */ (function (_super) {\n __extends$2H(Node, _super);\n function Node() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** Unique number to allow creation order to be easily determined. */\n _this.serialNumber = Node._nextSerialNumber++;\n /**\n * Unique node ID in the form `ClassName-NaturalNumber`.\n */\n _this.id = createId$1(_this);\n /**\n * Some number to identify this node, typically within a `Group` node.\n * Usually this will be some enum value used as a selector.\n */\n _this.tag = NaN;\n /**\n * To simplify the type system (especially in Selections) we don't have the `Parent` node\n * (one that has children). Instead, we mimic HTML DOM, where any node can have children.\n * But we still need to distinguish regular leaf nodes from container leafs somehow.\n */\n _this.isContainerNode = false;\n _this._children = [];\n // Used to check for duplicate nodes.\n _this.childSet = {}; // new Set<Node>()\n // These matrices may need to have package level visibility\n // for performance optimization purposes.\n _this.matrix = new Matrix();\n _this.inverseMatrix = new Matrix();\n _this._dirtyTransform = false;\n _this.scalingX = 1;\n _this.scalingY = 1;\n /**\n * The center of scaling.\n * The default value of `null` means the scaling center will be\n * determined automatically, as the center of the bounding box\n * of a node.\n */\n _this.scalingCenterX = null;\n _this.scalingCenterY = null;\n _this.rotationCenterX = null;\n _this.rotationCenterY = null;\n /**\n * Rotation angle in radians.\n * The value is set as is. No normalization to the [-180, 180) or [0, 360)\n * interval is performed.\n */\n _this.rotation = 0;\n _this.translationX = 0;\n _this.translationY = 0;\n _this.visible = true;\n _this.dirtyZIndex = false;\n _this.zIndex = 0;\n /** Discriminators for render order within a zIndex. */\n _this.zIndexSubOrder = undefined;\n _this.pointerEvents = PointerEvents.All;\n return _this;\n }\n Object.defineProperty(Node.prototype, \"datum\", {\n /**\n * Some arbitrary data bound to the node.\n */\n get: function () {\n var _a;\n if (this._datum !== undefined) {\n return this._datum;\n }\n return (_a = this._parent) === null || _a === void 0 ? void 0 : _a.datum;\n },\n set: function (datum) {\n this._datum = datum;\n },\n enumerable: false,\n configurable: true\n });\n Node.prototype._setLayerManager = function (value) {\n var e_1, _a;\n this._layerManager = value;\n this._debug = value === null || value === void 0 ? void 0 : value.debug;\n try {\n for (var _b = __values$B(this.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n child._setLayerManager(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n Object.defineProperty(Node.prototype, \"layerManager\", {\n get: function () {\n return this._layerManager;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"children\", {\n get: function () {\n return this._children;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Appends one or more new node instances to this parent.\n * If one needs to:\n * - move a child to the end of the list of children\n * - move a child from one parent to another (including parents in other scenes)\n * one should use the {@link insertBefore} method instead.\n * @param nodes A node or nodes to append.\n */\n Node.prototype.append = function (nodes) {\n var e_2, _a;\n // Passing a single parameter to an open-ended version of `append`\n // would be 30-35% slower than this.\n if (!Array.isArray(nodes)) {\n nodes = [nodes];\n }\n try {\n for (var nodes_1 = __values$B(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {\n var node = nodes_1_1.value;\n if (node.parent) {\n throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n }\n if (node.layerManager) {\n throw new Error(node + \" already belongs to a scene: \" + node.layerManager + \".\");\n }\n if (this.childSet[node.id]) {\n // Cast to `any` to avoid `Property 'name' does not exist on type 'Function'`.\n throw new Error(\"Duplicate \" + node.constructor.name + \" node: \" + node);\n }\n this._children.push(node);\n this.childSet[node.id] = true;\n node._parent = this;\n node._setLayerManager(this.layerManager);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n this.dirtyZIndex = true;\n this.markDirty(this, RedrawType.MAJOR);\n };\n Node.prototype.appendChild = function (node) {\n this.append(node);\n return node;\n };\n Node.prototype.removeChild = function (node) {\n if (node.parent === this) {\n var i = this.children.indexOf(node);\n if (i >= 0) {\n this._children.splice(i, 1);\n delete this.childSet[node.id];\n node._parent = undefined;\n node._setLayerManager();\n this.dirtyZIndex = true;\n this.markDirty(node, RedrawType.MAJOR);\n return node;\n }\n }\n throw new Error(\"The node to be removed is not a child of this node.\");\n };\n /**\n * Inserts the node `node` before the existing child node `nextNode`.\n * If `nextNode` is null, insert `node` at the end of the list of children.\n * If the `node` belongs to another parent, it is first removed.\n * Returns the `node`.\n * @param node\n * @param nextNode\n */\n Node.prototype.insertBefore = function (node, nextNode) {\n var parent = node.parent;\n if (node.parent) {\n node.parent.removeChild(node);\n }\n if (nextNode && nextNode.parent === this) {\n var i = this.children.indexOf(nextNode);\n if (i >= 0) {\n this._children.splice(i, 0, node);\n this.childSet[node.id] = true;\n node._parent = this;\n node._setLayerManager(this.layerManager);\n }\n else {\n throw new Error(nextNode + \" has \" + parent + \" as the parent, \" + \"but is not in its list of children.\");\n }\n this.dirtyZIndex = true;\n this.markDirty(node, RedrawType.MAJOR);\n }\n else {\n this.append(node);\n }\n return node;\n };\n Node.prototype.calculateCumulativeMatrix = function () {\n this.computeTransformMatrix();\n var matrix = Matrix.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n parent.computeTransformMatrix();\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n return matrix;\n };\n Node.prototype.transformPoint = function (x, y) {\n var matrix = this.calculateCumulativeMatrix();\n return matrix.invertSelf().transformPoint(x, y);\n };\n Node.prototype.inverseTransformPoint = function (x, y) {\n var matrix = this.calculateCumulativeMatrix();\n return matrix.transformPoint(x, y);\n };\n Node.prototype.transformBBox = function (bbox) {\n var matrix = this.calculateCumulativeMatrix();\n return matrix.invertSelf().transformBBox(bbox);\n };\n Node.prototype.inverseTransformBBox = function (bbox) {\n var matrix = this.calculateCumulativeMatrix();\n return matrix.transformBBox(bbox);\n };\n Node.prototype.markDirtyTransform = function () {\n this._dirtyTransform = true;\n this.markDirty(this, RedrawType.MAJOR);\n };\n Node.prototype.containsPoint = function (_x, _y) {\n return false;\n };\n /**\n * Hit testing method.\n * Recursively checks if the given point is inside this node or any of its children.\n * Returns the first matching node or `undefined`.\n * Nodes that render later (show on top) are hit tested first.\n */\n Node.prototype.pickNode = function (x, y) {\n var _a;\n if (!this.visible || this.pointerEvents === PointerEvents.None || !this.containsPoint(x, y)) {\n return;\n }\n var children = this.children;\n if (children.length > 1000) {\n // Try to optimise which children to interrogate; BBox calculation is an approximation\n // for more complex shapes, so discarding items based on this will save a lot of\n // processing when the point is nowhere near the child.\n for (var i = children.length - 1; i >= 0; i--) {\n var hit = ((_a = children[i].computeBBox()) === null || _a === void 0 ? void 0 : _a.containsPoint(x, y)) ? children[i].pickNode(x, y) : undefined;\n if (hit) {\n return hit;\n }\n }\n }\n else if (children.length) {\n // Nodes added later should be hit-tested first,\n // as they are rendered on top of the previously added nodes.\n for (var i = children.length - 1; i >= 0; i--) {\n var hit = children[i].pickNode(x, y);\n if (hit) {\n return hit;\n }\n }\n }\n else if (!this.isContainerNode) {\n // a leaf node, but not a container leaf\n return this;\n }\n };\n Node.prototype.findNodes = function (predicate) {\n var e_3, _a;\n var result = predicate(this) ? [this] : [];\n try {\n for (var _b = __values$B(this.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n var childResult = child.findNodes(predicate);\n if (childResult) {\n result.push.apply(result, __spread$B(childResult));\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return result;\n };\n Node.prototype.computeBBox = function () {\n return;\n };\n Node.prototype.computeTransformedBBox = function () {\n var bbox = this.computeBBox();\n if (!bbox) {\n return undefined;\n }\n this.computeTransformMatrix();\n var matrix = Matrix.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n parent.computeTransformMatrix();\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n matrix.transformBBox(bbox, bbox);\n return bbox;\n };\n Node.prototype.computeTransformMatrix = function () {\n if (!this._dirtyTransform) {\n return;\n }\n var _a = this, matrix = _a.matrix, scalingX = _a.scalingX, scalingY = _a.scalingY, rotation = _a.rotation, translationX = _a.translationX, translationY = _a.translationY, scalingCenterX = _a.scalingCenterX, scalingCenterY = _a.scalingCenterY, rotationCenterX = _a.rotationCenterX, rotationCenterY = _a.rotationCenterY;\n Matrix.updateTransformMatrix(matrix, scalingX, scalingY, rotation, translationX, translationY, {\n scalingCenterX: scalingCenterX,\n scalingCenterY: scalingCenterY,\n rotationCenterX: rotationCenterX,\n rotationCenterY: rotationCenterY,\n });\n matrix.inverseTo(this.inverseMatrix);\n this._dirtyTransform = false;\n };\n Node.prototype.render = function (renderCtx) {\n var stats = renderCtx.stats;\n this._dirty = RedrawType.NONE;\n if (stats)\n stats.nodesRendered++;\n };\n Node.prototype.clearBBox = function (ctx) {\n var bbox = this.computeBBox();\n if (bbox == null) {\n return;\n }\n var x = bbox.x, y = bbox.y, width = bbox.width, height = bbox.height;\n var topLeft = this.transformPoint(x, y);\n var bottomRight = this.transformPoint(x + width, y + height);\n ctx.clearRect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);\n };\n Node.prototype.markDirty = function (_source, type, parentType) {\n if (type === void 0) { type = RedrawType.TRIVIAL; }\n if (parentType === void 0) { parentType = type; }\n if (this._dirty > type) {\n return;\n }\n if (this._dirty === type && type === parentType) {\n return;\n }\n this._dirty = type;\n if (this.parent) {\n this.parent.markDirty(this, parentType);\n }\n else if (this.layerManager) {\n this.layerManager.markDirty();\n }\n };\n Object.defineProperty(Node.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n enumerable: false,\n configurable: true\n });\n Node.prototype.markClean = function (opts) {\n var e_4, _a;\n var _b = opts || {}, _c = _b.force, force = _c === void 0 ? false : _c, _d = _b.recursive, recursive = _d === void 0 ? true : _d;\n if (this._dirty === RedrawType.NONE && !force) {\n return;\n }\n this._dirty = RedrawType.NONE;\n if (recursive) {\n try {\n for (var _e = __values$B(this.children), _f = _e.next(); !_f.done; _f = _e.next()) {\n var child = _f.value;\n child.markClean();\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_a = _e.return)) _a.call(_e);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n };\n Node.prototype.visibilityChanged = function () {\n // Override point for sub-classes to react to visibility changes.\n };\n Object.defineProperty(Node.prototype, \"nodeCount\", {\n get: function () {\n var e_5, _a;\n var count = 1;\n var dirtyCount = this._dirty >= RedrawType.NONE || this._dirtyTransform ? 1 : 0;\n var visibleCount = this.visible ? 1 : 0;\n try {\n for (var _b = __values$B(this._children), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n var _d = child.nodeCount, childCount = _d.count, childVisibleCount = _d.visibleCount, childDirtyCount = _d.dirtyCount;\n count += childCount;\n visibleCount += childVisibleCount;\n dirtyCount += childDirtyCount;\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_5) throw e_5.error; }\n }\n return { count: count, visibleCount: visibleCount, dirtyCount: dirtyCount };\n },\n enumerable: false,\n configurable: true\n });\n Node.prototype.zIndexChanged = function () {\n // Override point for sub-classes.\n };\n Node._nextSerialNumber = 0;\n __decorate$1V([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"scalingX\", void 0);\n __decorate$1V([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"scalingY\", void 0);\n __decorate$1V([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"scalingCenterX\", void 0);\n __decorate$1V([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"scalingCenterY\", void 0);\n __decorate$1V([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"rotationCenterX\", void 0);\n __decorate$1V([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"rotationCenterY\", void 0);\n __decorate$1V([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"rotation\", void 0);\n __decorate$1V([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"translationX\", void 0);\n __decorate$1V([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"translationY\", void 0);\n __decorate$1V([\n SceneChangeDetection({ redraw: RedrawType.MAJOR, changeCb: function (o) { return o.visibilityChanged(); } })\n ], Node.prototype, \"visible\", void 0);\n __decorate$1V([\n SceneChangeDetection({\n redraw: RedrawType.TRIVIAL,\n changeCb: zIndexChangedCallback,\n })\n ], Node.prototype, \"zIndex\", void 0);\n __decorate$1V([\n SceneChangeDetection({\n redraw: RedrawType.TRIVIAL,\n changeCb: zIndexChangedCallback,\n })\n ], Node.prototype, \"zIndexSubOrder\", void 0);\n return Node;\n}(ChangeDetectable));\n\nfunction ascendingStringNumberUndefined(a, b) {\n var diff = 0;\n if (typeof a === 'number' && typeof b === 'number') {\n diff = a - b;\n }\n else if (typeof a === 'string' && typeof b === 'string') {\n diff = a.localeCompare(b);\n }\n else if (a == null && b == null) ;\n else if (a == null) {\n diff = -1;\n }\n else if (b == null) {\n diff = 1;\n }\n else {\n diff = String(a).localeCompare(String(b));\n }\n return diff;\n}\nfunction compoundAscending(a, b, comparator) {\n var toLiteral = function (v) {\n if (typeof v === 'function') {\n return v();\n }\n return v;\n };\n for (var idx in a) {\n var diff = comparator(toLiteral(a[idx]), toLiteral(b[idx]));\n if (diff !== 0) {\n return diff;\n }\n }\n return 0;\n}\n\nvar doOnceFlags$1 = {};\n/**\n * If the key was passed before, then doesn't execute the func\n */\nfunction doOnce$1(func, key) {\n if (doOnceFlags$1[key]) {\n return;\n }\n func();\n doOnceFlags$1[key] = true;\n}\n\nvar __read$Z = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$A = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$Z(arguments[i]));\n return ar;\n};\nvar Logger = {\n debug: function () {\n var logContent = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n logContent[_i] = arguments[_i];\n }\n console.log.apply(console, __spread$A(logContent));\n },\n warn: function (message) {\n var logContent = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n logContent[_i - 1] = arguments[_i];\n }\n console.warn.apply(console, __spread$A([\"AG Charts - \" + message], logContent));\n },\n error: function (message) {\n var logContent = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n logContent[_i - 1] = arguments[_i];\n }\n console.error.apply(console, __spread$A([\"AG Charts - \" + message], logContent));\n },\n warnOnce: function (message) {\n var logContent = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n logContent[_i - 1] = arguments[_i];\n }\n doOnce$1(function () { return Logger.warn.apply(Logger, __spread$A([message], logContent)); }, \"Logger.warn: \" + message);\n },\n errorOnce: function (message) {\n var logContent = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n logContent[_i - 1] = arguments[_i];\n }\n doOnce$1(function () { return Logger.error.apply(Logger, __spread$A([message], logContent)); }, \"Logger.warn: \" + message);\n },\n};\n\nvar __extends$2G = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$H = (undefined && undefined.__assign) || function () {\n __assign$H = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$H.apply(this, arguments);\n};\nvar __decorate$1U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$A = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$Y = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$z = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$Y(arguments[i]));\n return ar;\n};\nvar Group = /** @class */ (function (_super) {\n __extends$2G(Group, _super);\n function Group(opts) {\n var _a;\n var _this = _super.call(this) || this;\n _this.opts = opts;\n _this.opacity = 1;\n _this.lastBBox = undefined;\n var _b = opts || {}, zIndex = _b.zIndex, zIndexSubOrder = _b.zIndexSubOrder;\n _this.isContainerNode = true;\n if (zIndex !== undefined) {\n _this.zIndex = zIndex;\n }\n if (zIndexSubOrder !== undefined) {\n _this.zIndexSubOrder = zIndexSubOrder;\n }\n _this.name = (_a = _this.opts) === null || _a === void 0 ? void 0 : _a.name;\n return _this;\n }\n Group.prototype.zIndexChanged = function () {\n var _a;\n if (this.layer) {\n (_a = this._layerManager) === null || _a === void 0 ? void 0 : _a.moveLayer(this.layer, this.zIndex, this.zIndexSubOrder);\n }\n };\n Group.prototype.isLayer = function () {\n return this.layer != null;\n };\n Group.prototype._setLayerManager = function (scene) {\n var _this = this;\n var _a;\n if (this._layerManager && this.layer) {\n this._layerManager.removeLayer(this.layer);\n this.layer = undefined;\n }\n if (this.layer) {\n throw new Error('AG Charts - unable to deregister scene rendering layer!');\n }\n _super.prototype._setLayerManager.call(this, scene);\n if (scene && ((_a = this.opts) === null || _a === void 0 ? void 0 : _a.layer)) {\n var _b = this.opts || {}, zIndex = _b.zIndex, zIndexSubOrder = _b.zIndexSubOrder, name_1 = _b.name;\n var getComputedOpacity = function () { return _this.getComputedOpacity(); };\n var getVisibility = function () { return _this.getVisibility(); };\n this.layer = scene.addLayer({ zIndex: zIndex, zIndexSubOrder: zIndexSubOrder, name: name_1, getComputedOpacity: getComputedOpacity, getVisibility: getVisibility });\n }\n };\n Group.prototype.getComputedOpacity = function () {\n var opacity = 1;\n var node = this;\n do {\n if (node instanceof Group) {\n opacity *= node.opacity;\n }\n } while ((node = node.parent));\n return opacity;\n };\n Group.prototype.getVisibility = function () {\n var node = this;\n var visible = this.visible;\n while ((node = node.parent)) {\n if (node.visible) {\n continue;\n }\n visible = node.visible;\n }\n return visible;\n };\n Group.prototype.visibilityChanged = function () {\n if (this.layer) {\n this.layer.enabled = this.visible;\n }\n };\n Group.prototype.markDirty = function (source, type) {\n if (type === void 0) { type = RedrawType.TRIVIAL; }\n var parentType = type <= RedrawType.MINOR ? RedrawType.TRIVIAL : type;\n _super.prototype.markDirty.call(this, source, type, parentType);\n };\n // We consider a group to be boundless, thus any point belongs to it.\n Group.prototype.containsPoint = function (_x, _y) {\n return true;\n };\n Group.prototype.computeBBox = function () {\n this.computeTransformMatrix();\n return Group.computeBBox(this.children);\n };\n Group.prototype.computeTransformedBBox = function () {\n return this.computeBBox();\n };\n Group.prototype.render = function (renderCtx) {\n var e_1, _a;\n var _b, _c;\n var _d = this.opts, _e = (_d === void 0 ? {} : _d).name, name = _e === void 0 ? undefined : _e;\n var _f = this._debug, _g = (_f === void 0 ? {} : _f).consoleLog, consoleLog = _g === void 0 ? false : _g;\n var _h = this, dirty = _h.dirty, dirtyZIndex = _h.dirtyZIndex, layer = _h.layer, children = _h.children, clipRect = _h.clipRect;\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, clipBBox = renderCtx.clipBBox;\n var resized = renderCtx.resized, stats = renderCtx.stats;\n var canvasCtxTransform = ctx.getTransform();\n var isDirty = dirty >= RedrawType.MINOR || dirtyZIndex || resized;\n var isChildDirty = isDirty || children.some(function (n) { return n.dirty >= RedrawType.TRIVIAL; });\n if (name && consoleLog) {\n Logger.debug({ name: name, group: this, isDirty: isDirty, isChildDirty: isChildDirty, renderCtx: renderCtx, forceRender: forceRender });\n }\n if (layer) {\n // If bounding-box of a layer changes, force re-render.\n var currentBBox = this.computeBBox();\n if (this.lastBBox === undefined || !this.lastBBox.equals(currentBBox)) {\n forceRender = true;\n this.lastBBox = currentBBox;\n }\n else if (!currentBBox.isInfinite()) {\n // bbox for path2D is currently (Infinity) not calculated\n // If it's not a path2D, turn off forceRender\n // By default there is no need to force redraw a group which has it's own canvas layer\n // as the layer is independent of any other layer\n forceRender = false;\n }\n }\n if (!isDirty && !isChildDirty && !forceRender) {\n if (name && consoleLog && stats) {\n var counts = this.nodeCount;\n Logger.debug({ name: name, result: 'skipping', renderCtx: renderCtx, counts: counts, group: this });\n }\n if (layer && stats) {\n stats.layersSkipped++;\n stats.nodesSkipped += this.nodeCount.count;\n }\n this.markClean({ recursive: false });\n // Nothing to do.\n return;\n }\n var groupVisible = this.visible;\n if (layer) {\n // Switch context to the canvas layer we use for this group.\n ctx = layer.context;\n ctx.save();\n ctx.resetTransform();\n forceRender = true;\n layer.clear();\n if (clipBBox) {\n // clipBBox is in the canvas coordinate space, when we hit a layer we apply the new clipping at which point there are no transforms in play\n var width = clipBBox.width, height = clipBBox.height, x = clipBBox.x, y = clipBBox.y;\n if (consoleLog) {\n Logger.debug({ name: name, clipBBox: clipBBox, ctxTransform: ctx.getTransform(), renderCtx: renderCtx, group: this });\n }\n this.clipCtx(ctx, x, y, width, height);\n }\n ctx.setTransform(canvasCtxTransform);\n }\n else {\n // Only apply opacity if this isn't a distinct layer - opacity will be applied\n // at composition time.\n ctx.globalAlpha *= this.opacity;\n }\n // A group can have `scaling`, `rotation`, `translation` properties\n // that are applied to the canvas context before children are rendered,\n // so all children can be transformed at once.\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n if (clipRect) {\n // clipRect is in the group's coordinate space\n var x = clipRect.x, y = clipRect.y, width = clipRect.width, height = clipRect.height;\n ctx.save();\n if (consoleLog) {\n Logger.debug({ name: name, clipRect: clipRect, ctxTransform: ctx.getTransform(), renderCtx: renderCtx, group: this });\n }\n this.clipCtx(ctx, x, y, width, height);\n // clipBBox is in the canvas coordinate space, when we hit a layer we apply the new clipping at which point there are no transforms in play\n clipBBox = this.matrix.inverse().transformBBox(clipRect);\n }\n if (dirtyZIndex) {\n this.sortChildren();\n forceRender = true;\n }\n // Reduce churn if renderCtx is identical.\n var renderContextChanged = forceRender !== renderCtx.forceRender || clipBBox !== renderCtx.clipBBox || ctx !== renderCtx.ctx;\n var childRenderContext = renderContextChanged ? __assign$H(__assign$H({}, renderCtx), { ctx: ctx, forceRender: forceRender, clipBBox: clipBBox }) : renderCtx;\n // Render visible children.\n var skipped = 0;\n try {\n for (var children_1 = __values$A(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {\n var child = children_1_1.value;\n if (!child.visible || !groupVisible) {\n // Skip invisible children, but make sure their dirty flag is reset.\n child.markClean();\n if (stats)\n skipped += child.nodeCount.count;\n continue;\n }\n if (!forceRender && child.dirty === RedrawType.NONE) {\n // Skip children that don't need to be redrawn.\n if (stats)\n skipped += child.nodeCount.count;\n continue;\n }\n // Render marks this node (and children) as clean - no need to explicitly markClean().\n ctx.save();\n child.render(childRenderContext);\n ctx.restore();\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (stats)\n stats.nodesSkipped += skipped;\n // Render marks this node as clean - no need to explicitly markClean().\n _super.prototype.render.call(this, renderCtx);\n if (clipRect) {\n ctx.restore();\n }\n if (layer) {\n if (stats)\n stats.layersRendered++;\n ctx.restore();\n layer.snapshot();\n // Check for save/restore depth of zero!\n (_c = (_b = layer.context).verifyDepthZero) === null || _c === void 0 ? void 0 : _c.call(_b);\n }\n if (name && consoleLog && stats) {\n var counts = this.nodeCount;\n Logger.debug({ name: name, result: 'rendered', skipped: skipped, renderCtx: renderCtx, counts: counts, group: this });\n }\n };\n Group.prototype.sortChildren = function () {\n this.dirtyZIndex = false;\n this.children.sort(function (a, b) {\n var _a, _b;\n return compoundAscending(__spread$z([a.zIndex], ((_a = a.zIndexSubOrder) !== null && _a !== void 0 ? _a : [undefined, undefined]), [a.serialNumber]), __spread$z([b.zIndex], ((_b = b.zIndexSubOrder) !== null && _b !== void 0 ? _b : [undefined, undefined]), [b.serialNumber]), ascendingStringNumberUndefined);\n });\n };\n Group.prototype.clipCtx = function (ctx, x, y, width, height) {\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n ctx.lineTo(x + width, y + height);\n ctx.lineTo(x, y + height);\n ctx.closePath();\n ctx.clip();\n };\n Group.computeBBox = function (nodes) {\n var left = Infinity;\n var right = -Infinity;\n var top = Infinity;\n var bottom = -Infinity;\n nodes.forEach(function (n) {\n if (!n.visible) {\n return;\n }\n var bbox = n.computeTransformedBBox();\n if (!bbox) {\n return;\n }\n var x = bbox.x;\n var y = bbox.y;\n if (x < left) {\n left = x;\n }\n if (y < top) {\n top = y;\n }\n if (x + bbox.width > right) {\n right = x + bbox.width;\n }\n if (y + bbox.height > bottom) {\n bottom = y + bbox.height;\n }\n });\n return new BBox(left, top, right - left, bottom - top);\n };\n /**\n * Transforms bbox given in the canvas coordinate space to bbox in this group's coordinate space and\n * sets this group's clipRect to the transformed bbox.\n * @param bbox clipRect bbox in the canvas coordinate space.\n */\n Group.prototype.setClipRectInGroupCoordinateSpace = function (bbox) {\n this.clipRect = bbox ? this.transformBBox(bbox) : undefined;\n };\n Group.className = 'Group';\n __decorate$1U([\n SceneChangeDetection({\n convertor: function (v) { return Math.min(1, Math.max(0, v)); },\n })\n ], Group.prototype, \"opacity\", void 0);\n return Group;\n}(Node));\n\n/**\n * Wraps a native OffscreenCanvas and overrides its OffscreenCanvasRenderingContext2D to\n * provide resolution independent rendering based on `window.devicePixelRatio`.\n */\nvar HdpiOffscreenCanvas = /** @class */ (function () {\n // The width/height attributes of the Canvas element default to\n // 300/150 according to w3.org.\n function HdpiOffscreenCanvas(_a) {\n var _b = _a.width, width = _b === void 0 ? 600 : _b, _c = _a.height, height = _c === void 0 ? 300 : _c, _d = _a.overrideDevicePixelRatio, overrideDevicePixelRatio = _d === void 0 ? undefined : _d;\n this.enabled = true;\n // `NaN` is deliberate here, so that overrides are always applied\n // and the `resetTransform` inside the `resize` method works in IE11.\n this._pixelRatio = NaN;\n this._width = 0;\n this._height = 0;\n this.canvas = new OffscreenCanvas(width, height);\n this.context = this.canvas.getContext('2d');\n this.imageSource = this.canvas.transferToImageBitmap();\n this.setPixelRatio(overrideDevicePixelRatio);\n this.resize(width, height);\n }\n HdpiOffscreenCanvas.isSupported = function () {\n return window['OffscreenCanvas'] != null;\n };\n HdpiOffscreenCanvas.prototype.snapshot = function () {\n this.imageSource.close();\n this.imageSource = this.canvas.transferToImageBitmap();\n };\n HdpiOffscreenCanvas.prototype.destroy = function () {\n this.imageSource.close();\n // Workaround memory allocation quirks in iOS Safari by resizing to 0x0 and clearing.\n // See https://bugs.webkit.org/show_bug.cgi?id=195325.\n this.canvas.width = 0;\n this.canvas.height = 0;\n this.context.clearRect(0, 0, 0, 0);\n };\n HdpiOffscreenCanvas.prototype.clear = function () {\n this.context.save();\n this.context.resetTransform();\n this.context.clearRect(0, 0, this.width, this.height);\n this.context.restore();\n };\n Object.defineProperty(HdpiOffscreenCanvas.prototype, \"pixelRatio\", {\n get: function () {\n return this._pixelRatio;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Changes the pixel ratio of the Canvas element to the given value,\n * or uses the window.devicePixelRatio (default), then resizes the Canvas\n * element accordingly (default).\n */\n HdpiOffscreenCanvas.prototype.setPixelRatio = function (ratio) {\n var pixelRatio = ratio !== null && ratio !== void 0 ? ratio : window.devicePixelRatio;\n if (!isDesktop()) {\n // Mobile browsers have stricter memory limits, we reduce rendering resolution to\n // improve stability on mobile browsers. iOS Safari 12->16 are pain-points since they\n // have memory allocation quirks - see https://bugs.webkit.org/show_bug.cgi?id=195325.\n pixelRatio = 1;\n }\n HdpiCanvas.overrideScale(this.context, pixelRatio);\n this._pixelRatio = pixelRatio;\n };\n Object.defineProperty(HdpiOffscreenCanvas.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HdpiOffscreenCanvas.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: false,\n configurable: true\n });\n HdpiOffscreenCanvas.prototype.resize = function (width, height) {\n if (!(width > 0 && height > 0)) {\n return;\n }\n var _a = this, canvas = _a.canvas, context = _a.context, pixelRatio = _a.pixelRatio;\n canvas.width = Math.round(width * pixelRatio);\n canvas.height = Math.round(height * pixelRatio);\n context.resetTransform();\n this._width = width;\n this._height = height;\n };\n return HdpiOffscreenCanvas;\n}());\n\nvar __assign$G = (undefined && undefined.__assign) || function () {\n __assign$G = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$G.apply(this, arguments);\n};\nvar __awaiter$f = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$f = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$X = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$y = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$X(arguments[i]));\n return ar;\n};\nvar __values$z = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction buildSceneNodeHighlight() {\n var _a;\n var config = (_a = windowValue('agChartsSceneDebug')) !== null && _a !== void 0 ? _a : [];\n if (typeof config === 'string') {\n config = [config];\n }\n var result = [];\n config.forEach(function (name) {\n if (name === 'layout') {\n result.push('seriesRoot', 'legend', 'root', /.*Axis-\\d+-axis.*/);\n }\n else {\n result.push(name);\n }\n });\n return result;\n}\nvar Scene = /** @class */ (function () {\n function Scene(opts) {\n var _a, _b;\n this.id = createId$1(this);\n this.layers = [];\n this._nextZIndex = 0;\n this._nextLayerId = 0;\n this._dirty = false;\n this._root = null;\n this.debug = {\n dirtyTree: false,\n stats: false,\n renderBoundingBoxes: false,\n consoleLog: false,\n sceneNodeHighlight: [],\n };\n var _c = opts.document, document = _c === void 0 ? window.document : _c, _d = opts.mode, mode = _d === void 0 ? windowValue('agChartsSceneRenderModel') || 'adv-composite' : _d, width = opts.width, height = opts.height, _e = opts.overrideDevicePixelRatio, overrideDevicePixelRatio = _e === void 0 ? undefined : _e;\n this.overrideDevicePixelRatio = overrideDevicePixelRatio;\n this.opts = { document: document, mode: mode };\n this.debug.consoleLog = windowValue('agChartsDebug') === true;\n this.debug.stats = (_a = windowValue('agChartsSceneStats')) !== null && _a !== void 0 ? _a : false;\n this.debug.dirtyTree = (_b = windowValue('agChartsSceneDirtyTree')) !== null && _b !== void 0 ? _b : false;\n this.debug.sceneNodeHighlight = buildSceneNodeHighlight();\n this.canvas = new HdpiCanvas({ document: document, width: width, height: height, overrideDevicePixelRatio: overrideDevicePixelRatio });\n }\n Object.defineProperty(Scene.prototype, \"container\", {\n get: function () {\n return this.canvas.container;\n },\n set: function (value) {\n this.canvas.container = value;\n },\n enumerable: false,\n configurable: true\n });\n Scene.prototype.download = function (fileName, fileFormat) {\n this.canvas.download(fileName, fileFormat);\n };\n Scene.prototype.getDataURL = function (type) {\n return this.canvas.getDataURL(type);\n };\n Object.defineProperty(Scene.prototype, \"width\", {\n get: function () {\n return this.pendingSize ? this.pendingSize[0] : this.canvas.width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"height\", {\n get: function () {\n return this.pendingSize ? this.pendingSize[1] : this.canvas.height;\n },\n enumerable: false,\n configurable: true\n });\n Scene.prototype.resize = function (width, height) {\n width = Math.round(width);\n height = Math.round(height);\n // HdpiCanvas doesn't allow width/height <= 0.\n var lessThanZero = width <= 0 || height <= 0;\n var nan = isNaN(width) || isNaN(height);\n var unchanged = width === this.width && height === this.height;\n if (unchanged || nan || lessThanZero) {\n return false;\n }\n this.pendingSize = [width, height];\n this.markDirty();\n return true;\n };\n Scene.prototype.addLayer = function (opts) {\n var _a;\n var mode = this.opts.mode;\n var layeredModes = ['composite', 'dom-composite', 'adv-composite'];\n if (!layeredModes.includes(mode)) {\n return undefined;\n }\n var _b = opts.zIndex, zIndex = _b === void 0 ? this._nextZIndex++ : _b, name = opts.name, zIndexSubOrder = opts.zIndexSubOrder, getComputedOpacity = opts.getComputedOpacity, getVisibility = opts.getVisibility;\n var _c = this, width = _c.width, height = _c.height, overrideDevicePixelRatio = _c.overrideDevicePixelRatio;\n var domLayer = mode === 'dom-composite';\n var advLayer = mode === 'adv-composite';\n var canvas = !advLayer || !HdpiOffscreenCanvas.isSupported()\n ? new HdpiCanvas({\n document: this.opts.document,\n width: width,\n height: height,\n domLayer: domLayer,\n zIndex: zIndex,\n name: name,\n overrideDevicePixelRatio: overrideDevicePixelRatio,\n })\n : new HdpiOffscreenCanvas({\n width: width,\n height: height,\n overrideDevicePixelRatio: overrideDevicePixelRatio,\n });\n var newLayer = {\n id: this._nextLayerId++,\n name: name,\n zIndex: zIndex,\n zIndexSubOrder: zIndexSubOrder,\n canvas: canvas,\n getComputedOpacity: getComputedOpacity,\n getVisibility: getVisibility,\n };\n if (zIndex >= this._nextZIndex) {\n this._nextZIndex = zIndex + 1;\n }\n this.layers.push(newLayer);\n this.sortLayers();\n if (domLayer) {\n var domCanvases = this.layers\n .map(function (v) { return v.canvas; })\n .filter(function (v) { return v instanceof HdpiCanvas; });\n var newLayerIndex = domCanvases.findIndex(function (v) { return v === canvas; });\n var lastLayer = (_a = domCanvases[newLayerIndex - 1]) !== null && _a !== void 0 ? _a : this.canvas;\n lastLayer.element.insertAdjacentElement('afterend', canvas.element);\n }\n if (this.debug.consoleLog) {\n Logger.debug({ layers: this.layers });\n }\n return newLayer.canvas;\n };\n Scene.prototype.removeLayer = function (canvas) {\n var index = this.layers.findIndex(function (l) { return l.canvas === canvas; });\n if (index >= 0) {\n this.layers.splice(index, 1);\n canvas.destroy();\n this.markDirty();\n if (this.debug.consoleLog) {\n Logger.debug({ layers: this.layers });\n }\n }\n };\n Scene.prototype.moveLayer = function (canvas, newZIndex, newZIndexSubOrder) {\n var layer = this.layers.find(function (l) { return l.canvas === canvas; });\n if (layer) {\n layer.zIndex = newZIndex;\n layer.zIndexSubOrder = newZIndexSubOrder;\n this.sortLayers();\n this.markDirty();\n if (this.debug.consoleLog) {\n Logger.debug({ layers: this.layers });\n }\n }\n };\n Scene.prototype.sortLayers = function () {\n this.layers.sort(function (a, b) {\n var _a, _b;\n return compoundAscending(__spread$y([a.zIndex], ((_a = a.zIndexSubOrder) !== null && _a !== void 0 ? _a : [undefined, undefined]), [a.id]), __spread$y([b.zIndex], ((_b = b.zIndexSubOrder) !== null && _b !== void 0 ? _b : [undefined, undefined]), [b.id]), ascendingStringNumberUndefined);\n });\n };\n Scene.prototype.markDirty = function () {\n this._dirty = true;\n };\n Object.defineProperty(Scene.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"root\", {\n get: function () {\n return this._root;\n },\n set: function (node) {\n if (node === this._root) {\n return;\n }\n if (this._root) {\n this._root._setLayerManager();\n }\n this._root = node;\n if (node) {\n // If `node` is the root node of another scene ...\n if (node.parent === null && node.layerManager && node.layerManager !== this) {\n node.layerManager.root = null;\n }\n node._setLayerManager(this);\n }\n this.markDirty();\n },\n enumerable: false,\n configurable: true\n });\n /** Alternative to destroy() that preserves re-usable resources. */\n Scene.prototype.strip = function () {\n var e_1, _a;\n var layers = this.layers;\n try {\n for (var layers_1 = __values$z(layers), layers_1_1 = layers_1.next(); !layers_1_1.done; layers_1_1 = layers_1.next()) {\n var layer = layers_1_1.value;\n layer.canvas.destroy();\n delete layer['canvas'];\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (layers_1_1 && !layers_1_1.done && (_a = layers_1.return)) _a.call(layers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n layers.splice(0, layers.length);\n this.root = null;\n this._dirty = false;\n this.canvas.context.resetTransform();\n };\n Scene.prototype.destroy = function () {\n this.container = undefined;\n this.strip();\n this.canvas.destroy();\n Object.assign(this, { canvas: undefined, ctx: undefined });\n };\n Scene.prototype.render = function (opts) {\n var _a;\n return __awaiter$f(this, void 0, void 0, function () {\n var _b, _c, debugSplitTimes, _d, extraDebugStats, _e, canvas, ctx, root, layers, pendingSize, mode, renderCtx, canvasCleared, _f, dirtyTree, paths;\n var _g;\n return __generator$f(this, function (_h) {\n _b = opts || {}, _c = _b.debugSplitTimes, debugSplitTimes = _c === void 0 ? [performance.now()] : _c, _d = _b.extraDebugStats, extraDebugStats = _d === void 0 ? {} : _d;\n _e = this, canvas = _e.canvas, ctx = _e.canvas.context, root = _e.root, layers = _e.layers, pendingSize = _e.pendingSize, mode = _e.opts.mode;\n if (pendingSize) {\n (_g = this.canvas).resize.apply(_g, __spread$y(pendingSize));\n this.layers.forEach(function (layer) {\n var _a;\n return (_a = layer.canvas).resize.apply(_a, __spread$y(pendingSize));\n });\n this.pendingSize = undefined;\n }\n if (root && !root.visible) {\n this._dirty = false;\n return [2 /*return*/];\n }\n if (root && !this.dirty) {\n if (this.debug.consoleLog) {\n Logger.debug('no-op', {\n redrawType: RedrawType[root.dirty],\n tree: this.buildTree(root),\n });\n }\n this.debugStats(debugSplitTimes, ctx, undefined, extraDebugStats);\n return [2 /*return*/];\n }\n renderCtx = {\n ctx: ctx,\n forceRender: true,\n resized: !!pendingSize,\n debugNodes: {},\n };\n if (this.debug.stats === 'detailed') {\n renderCtx.stats = { layersRendered: 0, layersSkipped: 0, nodesRendered: 0, nodesSkipped: 0 };\n }\n canvasCleared = false;\n if (!root || root.dirty >= RedrawType.TRIVIAL) {\n // start with a blank canvas, clear previous drawing\n canvasCleared = true;\n canvas.clear();\n }\n if (root && this.debug.dirtyTree) {\n _f = this.buildDirtyTree(root), dirtyTree = _f.dirtyTree, paths = _f.paths;\n Logger.debug({ dirtyTree: dirtyTree, paths: paths });\n }\n if (root && canvasCleared) {\n if (this.debug.consoleLog) {\n Logger.debug('before', {\n redrawType: RedrawType[root.dirty],\n canvasCleared: canvasCleared,\n tree: this.buildTree(root),\n });\n }\n if (root.visible) {\n ctx.save();\n root.render(renderCtx);\n ctx.restore();\n }\n }\n if (mode !== 'dom-composite' && layers.length > 0 && canvasCleared) {\n this.sortLayers();\n ctx.save();\n ctx.setTransform(1 / canvas.pixelRatio, 0, 0, 1 / canvas.pixelRatio, 0, 0);\n layers.forEach(function (_a) {\n var _b = _a.canvas, imageSource = _b.imageSource, enabled = _b.enabled, getComputedOpacity = _a.getComputedOpacity, getVisibility = _a.getVisibility;\n if (!enabled || !getVisibility()) {\n return;\n }\n ctx.globalAlpha = getComputedOpacity();\n ctx.drawImage(imageSource, 0, 0);\n });\n ctx.restore();\n }\n // Check for save/restore depth of zero!\n (_a = ctx.verifyDepthZero) === null || _a === void 0 ? void 0 : _a.call(ctx);\n this._dirty = false;\n this.debugStats(debugSplitTimes, ctx, renderCtx.stats, extraDebugStats);\n this.debugSceneNodeHighlight(ctx, this.debug.sceneNodeHighlight, renderCtx.debugNodes);\n if (root && this.debug.consoleLog) {\n Logger.debug('after', { redrawType: RedrawType[root.dirty], canvasCleared: canvasCleared, tree: this.buildTree(root) });\n }\n return [2 /*return*/];\n });\n });\n };\n Scene.prototype.debugStats = function (debugSplitTimes, ctx, renderCtxStats, extraDebugStats) {\n var e_2, _a;\n if (extraDebugStats === void 0) { extraDebugStats = {}; }\n var end = performance.now();\n if (this.debug.stats) {\n var start = debugSplitTimes[0];\n debugSplitTimes.push(end);\n var pct = function (rendered, skipped) {\n var total = rendered + skipped;\n return rendered + \" / \" + total + \" (\" + Math.round((100 * rendered) / total) + \"%)\";\n };\n var time_1 = function (start, end) {\n return Math.round((end - start) * 100) / 100 + \"ms\";\n };\n var _b = renderCtxStats !== null && renderCtxStats !== void 0 ? renderCtxStats : {}, _c = _b.layersRendered, layersRendered = _c === void 0 ? 0 : _c, _d = _b.layersSkipped, layersSkipped = _d === void 0 ? 0 : _d, _e = _b.nodesRendered, nodesRendered = _e === void 0 ? 0 : _e, _f = _b.nodesSkipped, nodesSkipped = _f === void 0 ? 0 : _f;\n var splits = debugSplitTimes\n .map(function (t, i) { return (i > 0 ? time_1(debugSplitTimes[i - 1], t) : null); })\n .filter(function (v) { return v != null; })\n .join(' + ');\n var extras = Object.entries(extraDebugStats)\n .map(function (_a) {\n var _b = __read$X(_a, 2), k = _b[0], v = _b[1];\n return k + \": \" + v;\n })\n .join(' ; ');\n var stats = [\n time_1(start, end) + \" (\" + splits + \")\",\n \"\" + extras,\n this.debug.stats === 'detailed' ? \"Layers: \" + pct(layersRendered, layersSkipped) : null,\n this.debug.stats === 'detailed' ? \"Nodes: \" + pct(nodesRendered, nodesSkipped) : null,\n ].filter(function (v) { return v != null; });\n var lineHeight = 15;\n ctx.save();\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, 200, 10 + lineHeight * stats.length);\n ctx.fillStyle = 'black';\n var index = 0;\n try {\n for (var stats_1 = __values$z(stats), stats_1_1 = stats_1.next(); !stats_1_1.done; stats_1_1 = stats_1.next()) {\n var stat = stats_1_1.value;\n ctx.fillText(stat, 2, 10 + index++ * lineHeight);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (stats_1_1 && !stats_1_1.done && (_a = stats_1.return)) _a.call(stats_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n ctx.restore();\n }\n };\n Scene.prototype.debugSceneNodeHighlight = function (ctx, sceneNodeHighlight, debugNodes) {\n var e_3, _a, e_4, _b, e_5, _c;\n var _d;\n var regexpPredicate = function (matcher) { return function (n) {\n if (matcher.test(n.id)) {\n return true;\n }\n return n instanceof Group && n.name != null && matcher.test(n.name);\n }; };\n var stringPredicate = function (match) { return function (n) {\n if (match === n.id) {\n return true;\n }\n return n instanceof Group && n.name != null && match === n.name;\n }; };\n try {\n for (var sceneNodeHighlight_1 = __values$z(sceneNodeHighlight), sceneNodeHighlight_1_1 = sceneNodeHighlight_1.next(); !sceneNodeHighlight_1_1.done; sceneNodeHighlight_1_1 = sceneNodeHighlight_1.next()) {\n var next = sceneNodeHighlight_1_1.value;\n if (typeof next === 'string' && debugNodes[next] != null)\n continue;\n var predicate = typeof next === 'string' ? stringPredicate(next) : regexpPredicate(next);\n var nodes = (_d = this.root) === null || _d === void 0 ? void 0 : _d.findNodes(predicate);\n if (!nodes || nodes.length === 0) {\n Logger.debug(\"no debugging node with id [\" + next + \"] in scene graph.\");\n continue;\n }\n try {\n for (var nodes_1 = (e_4 = void 0, __values$z(nodes)), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {\n var node = nodes_1_1.value;\n if (node instanceof Group && node.name) {\n debugNodes[node.name] = node;\n }\n else {\n debugNodes[node.id] = node;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (nodes_1_1 && !nodes_1_1.done && (_b = nodes_1.return)) _b.call(nodes_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (sceneNodeHighlight_1_1 && !sceneNodeHighlight_1_1.done && (_a = sceneNodeHighlight_1.return)) _a.call(sceneNodeHighlight_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n ctx.save();\n try {\n for (var _e = __values$z(Object.entries(debugNodes)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var _g = __read$X(_f.value, 2), name_1 = _g[0], node = _g[1];\n var bbox = node.computeTransformedBBox();\n if (!bbox) {\n Logger.debug(\"no bbox for debugged node [\" + name_1 + \"].\");\n continue;\n }\n ctx.globalAlpha = 0.8;\n ctx.strokeStyle = 'red';\n ctx.lineWidth = 1;\n ctx.strokeRect(bbox.x, bbox.y, bbox.width, bbox.height);\n ctx.fillStyle = 'red';\n ctx.strokeStyle = 'white';\n ctx.font = '16px sans-serif';\n ctx.textBaseline = 'top';\n ctx.textAlign = 'left';\n ctx.lineWidth = 2;\n ctx.strokeText(name_1, bbox.x, bbox.y, bbox.width);\n ctx.fillText(name_1, bbox.x, bbox.y, bbox.width);\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_c = _e.return)) _c.call(_e);\n }\n finally { if (e_5) throw e_5.error; }\n }\n ctx.restore();\n };\n Scene.prototype.buildTree = function (node) {\n var _this = this;\n var _a;\n var name = (_a = (node instanceof Group ? node.name : null)) !== null && _a !== void 0 ? _a : node.id;\n return __assign$G({ name: name,\n node: node, dirty: RedrawType[node.dirty] }, node.children\n .map(function (c) { return _this.buildTree(c); })\n .reduce(function (result, childTree) {\n var treeNodeName = childTree.name;\n var _a = childTree.node, visible = _a.visible, opacity = _a.opacity, zIndex = _a.zIndex, zIndexSubOrder = _a.zIndexSubOrder, childNode = childTree.node;\n if (!visible || opacity <= 0) {\n treeNodeName = \"(\" + treeNodeName + \")\";\n }\n if (childNode instanceof Group && childNode.isLayer()) {\n treeNodeName = \"*\" + treeNodeName + \"*\";\n }\n var key = [\n \"\" + (treeNodeName !== null && treeNodeName !== void 0 ? treeNodeName : '<unknown>'),\n \"z: \" + zIndex,\n zIndexSubOrder && \"zo: \" + zIndexSubOrder.join(' / '),\n ]\n .filter(function (v) { return !!v; })\n .join(' ');\n result[key] = childTree;\n return result;\n }, {}));\n };\n Scene.prototype.buildDirtyTree = function (node) {\n var _this = this;\n var _a;\n if (node.dirty === RedrawType.NONE) {\n return { dirtyTree: {}, paths: [] };\n }\n var childrenDirtyTree = node.children.map(function (c) { return _this.buildDirtyTree(c); }).filter(function (c) { return c.paths.length > 0; });\n var name = (_a = (node instanceof Group ? node.name : null)) !== null && _a !== void 0 ? _a : node.id;\n var paths = childrenDirtyTree.length === 0\n ? [name]\n : childrenDirtyTree\n .map(function (c) { return c.paths; })\n .reduce(function (r, p) { return r.concat(p); }, [])\n .map(function (p) { return name + \".\" + p; });\n return {\n dirtyTree: __assign$G({ name: name,\n node: node, dirty: RedrawType[node.dirty] }, childrenDirtyTree\n .map(function (c) { return c.dirtyTree; })\n .filter(function (t) { return t.dirty !== undefined; })\n .reduce(function (result, childTree) {\n result[childTree.name || '<unknown>'] = childTree;\n return result;\n }, {})),\n paths: paths,\n };\n };\n Scene.className = 'Scene';\n return Scene;\n}());\n\nvar Observable = /** @class */ (function () {\n function Observable() {\n this.allEventListeners = new Map();\n }\n Observable.prototype.addEventListener = function (type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('AG Charts - listener must be a Function');\n }\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (!eventListeners) {\n eventListeners = new Set();\n allEventListeners.set(type, eventListeners);\n }\n if (!eventListeners.has(listener)) {\n eventListeners.add(listener);\n }\n };\n Observable.prototype.removeEventListener = function (type, listener) {\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (!eventListeners) {\n return;\n }\n eventListeners.delete(listener);\n if (eventListeners.size === 0) {\n allEventListeners.delete(type);\n }\n };\n Observable.prototype.hasEventListener = function (type) {\n return this.allEventListeners.has(type);\n };\n Observable.prototype.clearEventListeners = function () {\n this.allEventListeners.clear();\n };\n Observable.prototype.fireEvent = function (event) {\n var listeners = this.allEventListeners.get(event.type);\n listeners === null || listeners === void 0 ? void 0 : listeners.forEach(function (listener) { return listener(event); });\n };\n return Observable;\n}());\n\nvar isString$1 = function (v) { return typeof v === 'string'; };\nvar isStringObject$1 = function (v) {\n return !!v && Object.prototype.hasOwnProperty.call(v, 'toString') && isString$1(v.toString());\n};\nvar isDate$1 = function (v) { return v instanceof Date && !isNaN(+v); };\nfunction isDiscrete(value) {\n return isString$1(value) || isStringObject$1(value);\n}\nfunction isContinuous(value) {\n var isNumberObject = function (v) {\n return !!v && Object.prototype.hasOwnProperty.call(v, 'valueOf') && isNumber$4(v.valueOf());\n };\n var isDate = function (v) { return v instanceof Date && !isNaN(+v); };\n return isNumber$4(value) || isNumberObject(value) || isDate(value);\n}\nfunction checkDatum(value, isContinuousScale) {\n if (isContinuousScale && isContinuous(value)) {\n return value;\n }\n else if (!isContinuousScale) {\n if (!isDiscrete(value)) {\n return String(value);\n }\n return value;\n }\n return undefined;\n}\nvar isNumber$4 = function (v) { return typeof v === 'number' && Number.isFinite(v); };\n\nvar __values$y = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar BREAK_TRANSFORM_CHAIN = Symbol('BREAK');\nvar CONFIG_KEY = '__decorator_config';\nfunction initialiseConfig(target, propertyKeyOrSymbol, propertyKey, valueStoreKey) {\n if (Object.getOwnPropertyDescriptor(target, CONFIG_KEY) == null) {\n Object.defineProperty(target, CONFIG_KEY, { value: {} });\n }\n var config = target[CONFIG_KEY];\n if (config[propertyKey] != null) {\n return config[propertyKey];\n }\n config[propertyKey] = { setters: [], getters: [] };\n var descriptor = Object.getOwnPropertyDescriptor(target, propertyKeyOrSymbol);\n var prevSet = descriptor === null || descriptor === void 0 ? void 0 : descriptor.set;\n var prevGet = descriptor === null || descriptor === void 0 ? void 0 : descriptor.get;\n var getter = function () {\n var e_1, _a;\n var _b, _c;\n var value = prevGet ? prevGet.call(this) : this[valueStoreKey];\n try {\n for (var _d = __values$y((_c = (_b = config[propertyKey]) === null || _b === void 0 ? void 0 : _b.getters) !== null && _c !== void 0 ? _c : []), _e = _d.next(); !_e.done; _e = _d.next()) {\n var transformFn = _e.value;\n value = transformFn(this, propertyKeyOrSymbol, value);\n if (value === BREAK_TRANSFORM_CHAIN) {\n return undefined;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return value;\n };\n var setter = function (value) {\n var e_2, _a;\n var _b, _c;\n var setters = (_c = (_b = config[propertyKey]) === null || _b === void 0 ? void 0 : _b.setters) !== null && _c !== void 0 ? _c : [];\n var oldValue;\n if (setters.some(function (f) { return f.length > 2; })) {\n // Lazily retrieve old value.\n oldValue = prevGet ? prevGet.call(this) : this[valueStoreKey];\n }\n try {\n for (var setters_1 = __values$y(setters), setters_1_1 = setters_1.next(); !setters_1_1.done; setters_1_1 = setters_1.next()) {\n var transformFn = setters_1_1.value;\n value = transformFn(this, propertyKeyOrSymbol, value, oldValue);\n if (value === BREAK_TRANSFORM_CHAIN) {\n return;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (setters_1_1 && !setters_1_1.done && (_a = setters_1.return)) _a.call(setters_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (prevSet) {\n prevSet.call(this, value);\n }\n else {\n this[valueStoreKey] = value;\n }\n };\n Object.defineProperty(target, propertyKeyOrSymbol, {\n set: setter,\n get: getter,\n enumerable: true,\n configurable: false,\n });\n return config[propertyKey];\n}\nfunction addTransformToInstanceProperty(setTransform, getTransform) {\n return function (target, propertyKeyOrSymbol) {\n var propertyKey = propertyKeyOrSymbol.toString();\n var valueStoreKey = \"__\" + propertyKey;\n var _a = initialiseConfig(target, propertyKeyOrSymbol, propertyKey, valueStoreKey), getters = _a.getters, setters = _a.setters;\n setters.push(setTransform);\n if (getTransform) {\n getters.splice(0, 0, getTransform);\n }\n };\n}\n\nfunction createDeprecationWarning() {\n return function (key, message) {\n var msg = [\"Property [\" + key + \"] is deprecated.\", message].filter(function (v) { return v != null; }).join(' ');\n Logger.warnOnce(msg);\n };\n}\nfunction Deprecated(message, opts) {\n var def = opts === null || opts === void 0 ? void 0 : opts.default;\n var warn = createDeprecationWarning();\n return addTransformToInstanceProperty(function (_, key, value) {\n if (value !== def) {\n warn(key.toString(), message);\n }\n return value;\n });\n}\nfunction DeprecatedAndRenamedTo(newPropName, mapValue) {\n var warnDeprecated = createDeprecationWarning();\n return addTransformToInstanceProperty(function (target, key, value) {\n if (value !== target[newPropName]) {\n warnDeprecated(key.toString(), \"Use [\" + newPropName + \"] instead.\");\n target[newPropName] = mapValue ? mapValue(value) : value;\n }\n return BREAK_TRANSFORM_CHAIN;\n }, function (target, key) {\n warnDeprecated(key.toString(), \"Use [\" + newPropName + \"] instead.\");\n return target[newPropName];\n });\n}\n\nvar __read$W = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar Color = /** @class */ (function () {\n /**\n * Every color component should be in the [0, 1] range.\n * Some easing functions (such as elastic easing) can overshoot the target value by some amount.\n * So, when animating colors, if the source or target color components are already near\n * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color\n * component value to end up outside of that range mid-animation. For this reason the constructor\n * performs range checking/constraining.\n * @param r Red component.\n * @param g Green component.\n * @param b Blue component.\n * @param a Alpha (opacity) component.\n */\n function Color(r, g, b, a) {\n if (a === void 0) { a = 1; }\n // NaN is treated as 0.\n this.r = Math.min(1, Math.max(0, r || 0));\n this.g = Math.min(1, Math.max(0, g || 0));\n this.b = Math.min(1, Math.max(0, b || 0));\n this.a = Math.min(1, Math.max(0, a || 0));\n }\n /**\n * A color string can be in one of the following formats to be valid:\n * - #rgb\n * - #rrggbb\n * - rgb(r, g, b)\n * - rgba(r, g, b, a)\n * - CSS color name such as 'white', 'orange', 'cyan', etc.\n */\n Color.validColorString = function (str) {\n if (str.indexOf('#') >= 0) {\n return !!Color.parseHex(str);\n }\n if (str.indexOf('rgb') >= 0) {\n return !!Color.stringToRgba(str);\n }\n return !!Color.nameToHex[str.toLowerCase()];\n };\n /**\n * The given string can be in one of the following formats:\n * - #rgb\n * - #rrggbb\n * - rgb(r, g, b)\n * - rgba(r, g, b, a)\n * - CSS color name such as 'white', 'orange', 'cyan', etc.\n * @param str\n */\n Color.fromString = function (str) {\n // hexadecimal notation\n if (str.indexOf('#') >= 0) {\n // there can be some leading whitespace\n return Color.fromHexString(str);\n }\n // color name\n var hex = Color.nameToHex[str.toLowerCase()];\n if (hex) {\n return Color.fromHexString(hex);\n }\n // rgb(a) notation\n if (str.indexOf('rgb') >= 0) {\n return Color.fromRgbaString(str);\n }\n throw new Error(\"Invalid color string: '\" + str + \"'\");\n };\n Color.tryParseFromString = function (str) {\n try {\n return Color.fromString(str);\n }\n catch (e) {\n Logger.warnOnce(\"invalid color string: '\" + str + \"'.\");\n return Color.fromArray([0, 0, 0]);\n }\n };\n // See https://drafts.csswg.org/css-color/#hex-notation\n Color.parseHex = function (input) {\n input = input.replace(/ /g, '').slice(1);\n var parts;\n switch (input.length) {\n case 6:\n case 8:\n parts = [];\n for (var i = 0; i < input.length; i += 2) {\n parts.push(parseInt(\"\" + input[i] + input[i + 1], 16));\n }\n break;\n case 3:\n case 4:\n parts = input\n .split('')\n .map(function (p) { return parseInt(p, 16); })\n .map(function (p) { return p + p * 16; });\n break;\n }\n if ((parts === null || parts === void 0 ? void 0 : parts.length) >= 3) {\n if (parts.every(function (p) { return p >= 0; })) {\n if (parts.length === 3) {\n parts.push(255);\n }\n return parts;\n }\n }\n };\n Color.fromHexString = function (str) {\n var values = Color.parseHex(str);\n if (values) {\n var _a = __read$W(values, 4), r = _a[0], g = _a[1], b = _a[2], a = _a[3];\n return new Color(r / 255, g / 255, b / 255, a / 255);\n }\n throw new Error(\"Malformed hexadecimal color string: '\" + str + \"'\");\n };\n Color.stringToRgba = function (str) {\n // Find positions of opening and closing parentheses.\n var _a = __read$W([NaN, NaN], 2), po = _a[0], pc = _a[1];\n for (var i = 0; i < str.length; i++) {\n var c = str[i];\n if (!po && c === '(') {\n po = i;\n }\n else if (c === ')') {\n pc = i;\n break;\n }\n }\n var contents = po && pc && str.substring(po + 1, pc);\n if (!contents) {\n return;\n }\n var parts = contents.split(',');\n var rgba = [];\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n var value = parseFloat(part);\n if (isNaN(value)) {\n return;\n }\n if (part.indexOf('%') >= 0) {\n // percentage r, g, or b value\n value = Math.max(0, Math.min(100, value));\n value /= 100;\n }\n else {\n if (i === 3) {\n // alpha component\n value = Math.max(0, Math.min(1, value));\n }\n else {\n // absolute r, g, or b value\n value = Math.max(0, Math.min(255, value));\n value /= 255;\n }\n }\n rgba.push(value);\n }\n return rgba;\n };\n Color.fromRgbaString = function (str) {\n var rgba = Color.stringToRgba(str);\n if (rgba) {\n if (rgba.length === 3) {\n return new Color(rgba[0], rgba[1], rgba[2]);\n }\n else if (rgba.length === 4) {\n return new Color(rgba[0], rgba[1], rgba[2], rgba[3]);\n }\n }\n throw new Error(\"Malformed rgb/rgba color string: '\" + str + \"'\");\n };\n Color.fromArray = function (arr) {\n if (arr.length === 4) {\n return new Color(arr[0], arr[1], arr[2], arr[3]);\n }\n if (arr.length === 3) {\n return new Color(arr[0], arr[1], arr[2]);\n }\n throw new Error('The given array should contain 3 or 4 color components (numbers).');\n };\n Color.fromHSB = function (h, s, b, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var rgb = Color.HSBtoRGB(h, s, b);\n return new Color(rgb[0], rgb[1], rgb[2], alpha);\n };\n Color.padHex = function (str) {\n // Can't use `padStart(2, '0')` here because of IE.\n return str.length === 1 ? '0' + str : str;\n };\n Color.prototype.toHexString = function () {\n var hex = '#' +\n Color.padHex(Math.round(this.r * 255).toString(16)) +\n Color.padHex(Math.round(this.g * 255).toString(16)) +\n Color.padHex(Math.round(this.b * 255).toString(16));\n if (this.a < 1) {\n hex += Color.padHex(Math.round(this.a * 255).toString(16));\n }\n return hex;\n };\n Color.prototype.toRgbaString = function (fractionDigits) {\n if (fractionDigits === void 0) { fractionDigits = 3; }\n var components = [Math.round(this.r * 255), Math.round(this.g * 255), Math.round(this.b * 255)];\n var k = Math.pow(10, fractionDigits);\n if (this.a !== 1) {\n components.push(Math.round(this.a * k) / k);\n return \"rgba(\" + components.join(', ') + \")\";\n }\n return \"rgb(\" + components.join(', ') + \")\";\n };\n Color.prototype.toString = function () {\n if (this.a === 1) {\n return this.toHexString();\n }\n return this.toRgbaString();\n };\n Color.prototype.toHSB = function () {\n return Color.RGBtoHSB(this.r, this.g, this.b);\n };\n /**\n * Converts the given RGB triple to an array of HSB (HSV) components.\n * The hue component will be `NaN` for achromatic colors.\n */\n Color.RGBtoHSB = function (r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var S = max !== 0 ? (max - min) / max : 0;\n var H = NaN;\n // min == max, means all components are the same\n // and the color is a shade of gray with no hue (H is NaN)\n if (min !== max) {\n var delta = max - min;\n var rc = (max - r) / delta;\n var gc_1 = (max - g) / delta;\n var bc = (max - b) / delta;\n if (r === max) {\n H = bc - gc_1;\n }\n else if (g === max) {\n H = 2.0 + rc - bc;\n }\n else {\n H = 4.0 + gc_1 - rc;\n }\n H /= 6.0;\n if (H < 0) {\n H = H + 1.0;\n }\n }\n return [H * 360, S, max];\n };\n /**\n * Converts the given HSB (HSV) triple to an array of RGB components.\n */\n Color.HSBtoRGB = function (H, S, B) {\n if (isNaN(H)) {\n H = 0;\n }\n H = (((H % 360) + 360) % 360) / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]\n var r = 0;\n var g = 0;\n var b = 0;\n if (S === 0) {\n r = g = b = B;\n }\n else {\n var h = (H - Math.floor(H)) * 6;\n var f = h - Math.floor(h);\n var p = B * (1 - S);\n var q = B * (1 - S * f);\n var t = B * (1 - S * (1 - f));\n switch (h >> 0 // discard the floating point part of the number\n ) {\n case 0:\n r = B;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = B;\n b = p;\n break;\n case 2:\n r = p;\n g = B;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = B;\n break;\n case 4:\n r = t;\n g = p;\n b = B;\n break;\n case 5:\n r = B;\n g = p;\n b = q;\n break;\n }\n }\n return [r, g, b];\n };\n Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {\n var hsb = Color.RGBtoHSB(this.r, this.g, this.b);\n var b = hsb[2];\n if (b == 0 && brightnessFactor > 1.0) {\n b = 0.05;\n }\n var h = (((hsb[0] + hueShift) % 360) + 360) % 360;\n var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);\n b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);\n var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);\n var rgba = Color.HSBtoRGB(h, s, b);\n rgba.push(a);\n return Color.fromArray(rgba);\n };\n Color.prototype.brighter = function () {\n return this.derive(0, 1.0, 1.0 / 0.7, 1.0);\n };\n Color.prototype.darker = function () {\n return this.derive(0, 1.0, 0.7, 1.0);\n };\n /**\n * CSS Color Module Level 4:\n * https://drafts.csswg.org/css-color/#named-colors\n */\n Color.nameToHex = Object.freeze({\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgreen: '#006400',\n darkgrey: '#A9A9A9',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n grey: '#808080',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgreen: '#90EE90',\n lightgrey: '#D3D3D3',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n transparent: '#00000000',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32',\n });\n return Color;\n}());\n\nfunction Validate(predicate) {\n return addTransformToInstanceProperty(function (target, prop, v) {\n var _a, _b, _c;\n if (predicate(v, { target: target })) {\n return v;\n }\n var cleanKey = prop.toString().replace(/^_*/, '');\n var targetClass = (_b = (_a = target.constructor) === null || _a === void 0 ? void 0 : _a.className) !== null && _b !== void 0 ? _b : (_c = target.constructor) === null || _c === void 0 ? void 0 : _c.name;\n if ((targetClass === null || targetClass === void 0 ? void 0 : targetClass.length) < 3) {\n targetClass = null;\n }\n var targetClassName = targetClass ? \"of [\" + targetClass + \"] \" : '';\n if (predicate.message) {\n Logger.warn(\"Property [\" + cleanKey + \"] \" + targetClassName + \"cannot be set to [\" + JSON.stringify(v) + \"]; \" + predicate.message + \", ignoring.\");\n }\n else {\n Logger.warn(\"Property [\" + cleanKey + \"] \" + targetClassName + \"cannot be set to [\" + JSON.stringify(v) + \"], ignoring.\");\n }\n return BREAK_TRANSFORM_CHAIN;\n });\n}\nfunction predicateWithMessage(predicate, message) {\n predicate.message = message;\n return predicate;\n}\nvar OPTIONAL = function (v, ctx, predicate) {\n return v === undefined || predicate(v, ctx);\n};\nvar ARRAY = function (length, predicate) {\n return predicateWithMessage(function (v, ctx) {\n return Array.isArray(v) &&\n (length ? v.length === length : true) &&\n (predicate ? v.every(function (e) { return predicate(e, ctx); }) : true);\n }, \"expecting an Array\");\n};\nvar OPT_ARRAY = function (length) {\n return predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, ARRAY(length)); }, 'expecting an optional Array');\n};\nvar AND = function () {\n var predicates = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n predicates[_i] = arguments[_i];\n }\n return predicateWithMessage(function (v, ctx) { return predicates.every(function (p) { return p(v, ctx); }); }, predicates\n .map(function (p) { return p.message; })\n .filter(function (m) { return m != null; })\n .join(' AND '));\n};\nvar OR = function () {\n var predicates = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n predicates[_i] = arguments[_i];\n }\n return predicateWithMessage(function (v, ctx) { return predicates.some(function (p) { return p(v, ctx); }); }, predicates\n .map(function (p) { return p.message; })\n .filter(function (m) { return m != null; })\n .join(' OR '));\n};\nvar isComparable = function (v) {\n return v != null && !isNaN(v);\n};\nvar LESS_THAN = function (otherField) {\n return predicateWithMessage(function (v, ctx) {\n return !isComparable(v) || !isComparable(ctx.target[otherField]) || v < ctx.target[otherField];\n }, \"expected to be less than \" + otherField);\n};\nvar GREATER_THAN = function (otherField) {\n return predicateWithMessage(function (v, ctx) {\n return !isComparable(v) || !isComparable(ctx.target[otherField]) || v > ctx.target[otherField];\n }, \"expected to be greater than \" + otherField);\n};\nvar FUNCTION = predicateWithMessage(function (v) { return typeof v === 'function'; }, 'expecting a Function');\nvar OPT_FUNCTION = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, FUNCTION); }, \"expecting an optional Function\");\nvar BOOLEAN = predicateWithMessage(function (v) { return v === true || v === false; }, 'expecting a Boolean');\nvar OPT_BOOLEAN = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, BOOLEAN); }, 'expecting an optional Boolean');\nvar STRING = predicateWithMessage(function (v) { return typeof v === 'string'; }, 'expecting a String');\nvar OPT_STRING = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, STRING); }, 'expecting an optional String');\nvar DATE = predicateWithMessage(function (v) { return v instanceof Date && !isNaN(+v); }, 'expecting a Date object');\nvar OPT_DATE = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, DATE); }, 'expecting an optional Date');\npredicateWithMessage(ARRAY(undefined, DATE), 'expecting an Array of Date objects');\nvar DATETIME_MS = NUMBER(0);\nvar OPT_DATETIME_MS = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, DATETIME_MS); }, 'expecting an optional number');\nvar OPT_DATE_OR_DATETIME_MS = OR(OPT_DATE, OPT_DATETIME_MS);\nvar colorMessage = \"A color string can be in one of the following formats to be valid: #rgb, #rrggbb, rgb(r, g, b), rgba(r, g, b, a) or a CSS color name such as 'white', 'orange', 'cyan', etc\";\nvar COLOR_STRING = predicateWithMessage(function (v) {\n if (typeof v !== 'string') {\n return false;\n }\n return Color.validColorString(v);\n}, \"expecting a color String. \" + colorMessage);\nvar OPT_COLOR_STRING = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, COLOR_STRING); }, \"expecting an optional color String. \" + colorMessage);\nvar COLOR_STRING_ARRAY = predicateWithMessage(ARRAY(undefined, COLOR_STRING), \"expecting an Array of color strings. \" + colorMessage);\nvar OPT_COLOR_STRING_ARRAY = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, COLOR_STRING_ARRAY); }, \"expecting an optional Array of color strings. \" + colorMessage);\nfunction NUMBER(min, max) {\n var message = \"expecting a finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') +\n (max !== undefined ? ', less than or equal to ' + max : ''));\n return predicateWithMessage(function (v) {\n return typeof v === 'number' &&\n Number.isFinite(v) &&\n (min !== undefined ? v >= min : true) &&\n (max !== undefined ? v <= max : true);\n }, message);\n}\nfunction OPT_NUMBER(min, max) {\n var message = \"expecting an optional finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') +\n (max !== undefined ? ', less than or equal to ' + max : ''));\n return predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, NUMBER(min, max)); }, message);\n}\nfunction NUMBER_OR_NAN(min, max) {\n // Can be NaN or finite number\n var message = \"expecting a finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') +\n (max !== undefined ? ', less than or equal to ' + max : ''));\n return predicateWithMessage(function (v) {\n return typeof v === 'number' &&\n (isNaN(v) ||\n (Number.isFinite(v) && (min !== undefined ? v >= min : true) && (max !== undefined ? v <= max : true)));\n }, message);\n}\nvar NUMBER_ARRAY = predicateWithMessage(ARRAY(undefined, NUMBER()), 'expecting an Array of numbers');\nvar OPT_NUMBER_ARRAY = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, NUMBER_ARRAY); }, 'expecting an optional Array of numbers');\nvar STRING_ARRAY = predicateWithMessage(ARRAY(undefined, STRING), 'expecting an Array of strings');\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, STRING_ARRAY); }, 'expecting an optional Array of strings');\nfunction STRING_UNION() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var message = \"expecting one of: \" + values.join(', ');\n return predicateWithMessage(function (v) { return typeof v === 'string' && values.indexOf(v) >= 0; }, message);\n}\nvar BOOLEAN_ARRAY = predicateWithMessage(ARRAY(undefined, BOOLEAN), 'expecting an Array of boolean values');\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, BOOLEAN_ARRAY); }, 'expecting an optional Array of boolean values');\nvar FONT_WEIGHTS = [\n 'normal',\n 'bold',\n 'bolder',\n 'lighter',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n];\nvar FONT_STYLE = predicateWithMessage(function (v) { return v === 'normal' || v === 'italic' || v === 'oblique'; }, \"expecting a font style keyword such as 'normal', 'italic' or 'oblique'\");\nvar OPT_FONT_STYLE = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, FONT_STYLE); }, \"expecting an optional font style keyword such as 'normal', 'italic' or 'oblique'\");\nvar FONT_WEIGHT = predicateWithMessage(function (v) { return FONT_WEIGHTS.includes(v); }, \"expecting a font weight keyword such as 'normal', 'bold' or 'bolder' or a numeric value such as 100, 300 or 600\");\nvar OPT_FONT_WEIGHT = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, FONT_WEIGHT); }, \"expecting an optional font weight keyword such as 'normal', 'bold' or 'bolder' or a numeric value such as 100, 300 or 600\");\nvar LINE_DASH = predicateWithMessage(ARRAY(undefined, NUMBER(0)), 'expecting an Array of numbers specifying the length in pixels of alternating dashes and gaps, for example, [6, 3] means dashes with a length of 6 pixels with gaps between of 3 pixels.');\nvar OPT_LINE_DASH = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, LINE_DASH); }, 'expecting an optional Array of numbers specifying the length in pixels of alternating dashes and gaps, for example, [6, 3] means dashes with a length of 6 pixels with gaps between of 3 pixels.');\nvar LINE_CAPS = ['butt', 'round', 'square'];\nvar LINE_CAP = predicateWithMessage(function (v) { return LINE_CAPS.includes(v); }, \"expecting a line cap keyword such as 'butt', 'round' or 'square'\");\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, LINE_CAP); }, \"expecting an optional line cap keyword such as 'butt', 'round' or 'square'\");\nvar LINE_JOINS = ['round', 'bevel', 'miter'];\nvar LINE_JOIN = predicateWithMessage(function (v) { return LINE_JOINS.includes(v); }, \"expecting a line join keyword such as 'round', 'bevel' or 'miter'\");\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, LINE_JOIN); }, \"expecting an optional line join keyword such as 'round', 'bevel' or 'miter'\");\nvar POSITIONS = ['top', 'right', 'bottom', 'left'];\nvar POSITION = predicateWithMessage(function (v) { return POSITIONS.includes(v); }, \"expecting a position keyword such as 'top', 'right', 'bottom' or 'left\");\nvar INTERACTION_RANGES = ['exact', 'nearest'];\nvar INTERACTION_RANGE = predicateWithMessage(function (v) { return (typeof v === 'number' && Number.isFinite(v)) || INTERACTION_RANGES.includes(v); }, \"expecting an interaction range of 'exact', 'nearest' or a number\");\n\n/**\n * Constants to declare the expected nominal zIndex for all types of layer in chart rendering.\n */\nvar Layers;\n(function (Layers) {\n Layers[Layers[\"SERIES_BACKGROUND_ZINDEX\"] = -10] = \"SERIES_BACKGROUND_ZINDEX\";\n Layers[Layers[\"AXIS_GRID_ZINDEX\"] = 0] = \"AXIS_GRID_ZINDEX\";\n Layers[Layers[\"AXIS_ZINDEX\"] = 20] = \"AXIS_ZINDEX\";\n Layers[Layers[\"SERIES_CROSSLINE_RANGE_ZINDEX\"] = 30] = \"SERIES_CROSSLINE_RANGE_ZINDEX\";\n Layers[Layers[\"SERIES_LAYER_ZINDEX\"] = 500] = \"SERIES_LAYER_ZINDEX\";\n Layers[Layers[\"SERIES_CROSSHAIR_ZINDEX\"] = 1000] = \"SERIES_CROSSHAIR_ZINDEX\";\n Layers[Layers[\"SERIES_LABEL_ZINDEX\"] = 1500] = \"SERIES_LABEL_ZINDEX\";\n Layers[Layers[\"SERIES_CROSSLINE_LINE_ZINDEX\"] = 2500] = \"SERIES_CROSSLINE_LINE_ZINDEX\";\n Layers[Layers[\"LEGEND_ZINDEX\"] = 3000] = \"LEGEND_ZINDEX\";\n})(Layers || (Layers = {}));\n\nvar ChartAxisDirection;\n(function (ChartAxisDirection) {\n ChartAxisDirection[\"X\"] = \"x\";\n ChartAxisDirection[\"Y\"] = \"y\";\n})(ChartAxisDirection || (ChartAxisDirection = {}));\n\nvar __decorate$1T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$x = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar DEFAULT_TOOLTIP_CLASS = 'ag-chart-tooltip';\nvar defaultTooltipCss$1 = \"\\n.\" + DEFAULT_TOOLTIP_CLASS + \" {\\n transition: transform 0.1s ease;\\n display: table;\\n position: fixed;\\n left: 0px;\\n top: 0px;\\n white-space: nowrap;\\n z-index: 99999;\\n font: 12px Verdana, sans-serif;\\n color: black;\\n background: rgb(244, 244, 244);\\n border-radius: 5px;\\n box-shadow: 0 0 1px rgba(3, 3, 3, 0.7), 0.5vh 0.5vh 1vh rgba(3, 3, 3, 0.25);\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-no-interaction {\\n pointer-events: none;\\n user-select: none;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-no-animation {\\n transition: none !important;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-hidden {\\n visibility: hidden;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-title {\\n font-weight: bold;\\n padding: 7px;\\n border-top-left-radius: 5px;\\n border-top-right-radius: 5px;\\n color: white;\\n background-color: #888888;\\n border-top-left-radius: 5px;\\n border-top-right-radius: 5px;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-content {\\n padding: 7px;\\n line-height: 1.7em;\\n border-bottom-left-radius: 5px;\\n border-bottom-right-radius: 5px;\\n overflow: hidden;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-content:empty {\\n padding: 0;\\n height: 7px;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-arrow::before {\\n content: \\\"\\\";\\n\\n position: absolute;\\n top: 100%;\\n left: 50%;\\n transform: translateX(-50%);\\n\\n border: 6px solid #989898;\\n\\n border-left-color: transparent;\\n border-right-color: transparent;\\n border-top-color: #989898;\\n border-bottom-color: transparent;\\n\\n width: 0;\\n height: 0;\\n\\n margin: 0 auto;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-arrow::after {\\n content: \\\"\\\";\\n\\n position: absolute;\\n top: 100%;\\n left: 50%;\\n transform: translateX(-50%);\\n\\n border: 5px solid black;\\n\\n border-left-color: transparent;\\n border-right-color: transparent;\\n border-top-color: rgb(244, 244, 244);\\n border-bottom-color: transparent;\\n\\n width: 0;\\n height: 0;\\n\\n margin: 0 auto;\\n}\\n\\n.ag-chart-wrapper {\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n\";\nfunction toTooltipHtml$1(input, defaults) {\n if (typeof input === 'string') {\n return input;\n }\n defaults = defaults || {};\n var _a = input.content, content = _a === void 0 ? defaults.content || '' : _a, _b = input.title, title = _b === void 0 ? defaults.title || undefined : _b, _c = input.color, color = _c === void 0 ? defaults.color || 'white' : _c, _d = input.backgroundColor, backgroundColor = _d === void 0 ? defaults.backgroundColor || '#888' : _d;\n var titleHtml = title\n ? \"<div class=\\\"\" + DEFAULT_TOOLTIP_CLASS + \"-title\\\"\\n style=\\\"color: \" + color + \"; background-color: \" + backgroundColor + \"\\\">\" + title + \"</div>\"\n : '';\n return titleHtml + \"<div class=\\\"\" + DEFAULT_TOOLTIP_CLASS + \"-content\\\">\" + content + \"</div>\";\n}\nvar POSITION_TYPES = ['pointer', 'node'];\nvar POSITION_TYPE = predicateWithMessage(function (v) { return POSITION_TYPES.includes(v); }, \"expecting a position type keyword such as 'pointer' or 'node'\");\nvar TooltipPosition = /** @class */ (function () {\n function TooltipPosition() {\n /** The type of positioning for the tooltip. By default, the tooltip follows the pointer. */\n this.type = 'pointer';\n /** The horizontal offset in pixels for the position of the tooltip. */\n this.xOffset = 0;\n /** The vertical offset in pixels for the position of the tooltip. */\n this.yOffset = 0;\n }\n __decorate$1T([\n Validate(POSITION_TYPE)\n ], TooltipPosition.prototype, \"type\", void 0);\n __decorate$1T([\n Validate(NUMBER())\n ], TooltipPosition.prototype, \"xOffset\", void 0);\n __decorate$1T([\n Validate(NUMBER())\n ], TooltipPosition.prototype, \"yOffset\", void 0);\n return TooltipPosition;\n}());\nvar Tooltip = /** @class */ (function () {\n function Tooltip(canvasElement, document, container) {\n var _this = this;\n this.enableInteraction = false;\n this.enabled = true;\n this.class = undefined;\n this.lastClass = undefined;\n this.delay = 0;\n this.range = 'nearest';\n this.position = new TooltipPosition();\n this.showTimeout = 0;\n this.showArrow = true;\n this.tooltipRoot = container;\n var element = document.createElement('div');\n this.element = this.tooltipRoot.appendChild(element);\n this.element.classList.add(DEFAULT_TOOLTIP_CLASS);\n this.canvasElement = canvasElement;\n // Detect when the chart becomes invisible and hide the tooltip as well.\n if (window.IntersectionObserver) {\n var observer = new IntersectionObserver(function (entries) {\n var e_1, _a;\n try {\n for (var entries_1 = __values$x(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {\n var entry = entries_1_1.value;\n if (entry.target === _this.canvasElement && entry.intersectionRatio === 0) {\n _this.toggle(false);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, { root: this.tooltipRoot });\n observer.observe(this.canvasElement);\n this.observer = observer;\n }\n if (Tooltip.tooltipDocuments.indexOf(document) < 0) {\n var styleElement = document.createElement('style');\n styleElement.innerHTML = defaultTooltipCss$1;\n // Make sure the default tooltip style goes before other styles so it can be overridden.\n document.head.insertBefore(styleElement, document.head.querySelector('style'));\n Tooltip.tooltipDocuments.push(document);\n }\n }\n Tooltip.prototype.destroy = function () {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n if (this.observer) {\n this.observer.unobserve(this.canvasElement);\n }\n };\n Tooltip.prototype.isVisible = function () {\n var element = this.element;\n return !element.classList.contains(DEFAULT_TOOLTIP_CLASS + '-hidden');\n };\n Tooltip.prototype.updateClass = function (visible, showArrow) {\n var _a = this, element = _a.element, newClass = _a.class, lastClass = _a.lastClass, enableInteraction = _a.enableInteraction;\n var wasVisible = this.isVisible();\n var toggleClass = function (name, include) {\n var className = DEFAULT_TOOLTIP_CLASS + \"-\" + name;\n if (include) {\n element.classList.add(className);\n }\n else {\n element.classList.remove(className);\n }\n };\n toggleClass('no-animation', !wasVisible && !!visible); // No animation on first show.\n toggleClass('no-interaction', !enableInteraction); // Prevent interaction.\n toggleClass('hidden', !visible); // Hide if not visible.\n toggleClass('arrow', !!showArrow); // Add arrow if tooltip is constrained.\n if (newClass !== lastClass) {\n if (lastClass) {\n element.classList.remove(lastClass);\n }\n if (newClass) {\n element.classList.add(newClass);\n }\n this.lastClass = newClass;\n }\n };\n /**\n * Shows tooltip at the given event's coordinates.\n * If the `html` parameter is missing, moves the existing tooltip to the new position.\n */\n Tooltip.prototype.show = function (meta, html, instantly) {\n var _this = this;\n var _a, _b, _c, _d, _e;\n if (instantly === void 0) { instantly = false; }\n var _f = this, element = _f.element, canvasElement = _f.canvasElement;\n if (html !== undefined) {\n element.innerHTML = html;\n }\n else if (!element.innerHTML) {\n return;\n }\n var limit = function (low, actual, high) {\n return Math.max(Math.min(actual, high), low);\n };\n var xOffset = (_b = (_a = meta.position) === null || _a === void 0 ? void 0 : _a.xOffset) !== null && _b !== void 0 ? _b : 0;\n var yOffset = (_d = (_c = meta.position) === null || _c === void 0 ? void 0 : _c.yOffset) !== null && _d !== void 0 ? _d : 0;\n var canvasRect = canvasElement.getBoundingClientRect();\n var naiveLeft = canvasRect.left + meta.offsetX - element.clientWidth / 2 + xOffset;\n var naiveTop = canvasRect.top + meta.offsetY - element.clientHeight - 8 + yOffset;\n var windowBounds = this.getWindowBoundingBox();\n var maxLeft = windowBounds.x + windowBounds.width - element.clientWidth - 1;\n var maxTop = windowBounds.y + windowBounds.height - element.clientHeight;\n var left = limit(windowBounds.x, naiveLeft, maxLeft);\n var top = limit(windowBounds.y, naiveTop, maxTop);\n var offsetApplied = xOffset !== 0 || yOffset !== 0;\n var constrained = left !== naiveLeft || top !== naiveTop;\n this.showArrow = !constrained && !offsetApplied;\n element.style.transform = \"translate(\" + Math.round(left) + \"px, \" + Math.round(top) + \"px)\";\n this.enableInteraction = (_e = meta.enableInteraction) !== null && _e !== void 0 ? _e : false;\n if (this.delay > 0 && !instantly) {\n this.toggle(false);\n this.showTimeout = window.setTimeout(function () {\n _this.toggle(true);\n }, this.delay);\n return;\n }\n this.toggle(true);\n };\n Tooltip.prototype.getWindowBoundingBox = function () {\n return new BBox(0, 0, window.innerWidth, window.innerHeight);\n };\n Tooltip.prototype.toggle = function (visible) {\n if (!visible) {\n window.clearTimeout(this.showTimeout);\n }\n this.updateClass(visible, this.showArrow);\n };\n Tooltip.prototype.pointerLeftOntoTooltip = function (event) {\n var _a;\n if (!this.enableInteraction)\n return false;\n var classList = (_a = event.sourceEvent.relatedTarget) === null || _a === void 0 ? void 0 : _a.classList;\n var classes = ['', '-title', '-content'];\n var classListContains = Boolean(classes.filter(function (c) { return classList === null || classList === void 0 ? void 0 : classList.contains(\"\" + DEFAULT_TOOLTIP_CLASS + c); }));\n return classList !== undefined && classListContains;\n };\n Tooltip.tooltipDocuments = [];\n __decorate$1T([\n Validate(BOOLEAN)\n ], Tooltip.prototype, \"enabled\", void 0);\n __decorate$1T([\n Validate(OPT_STRING)\n ], Tooltip.prototype, \"class\", void 0);\n __decorate$1T([\n Validate(NUMBER(0))\n ], Tooltip.prototype, \"delay\", void 0);\n __decorate$1T([\n DeprecatedAndRenamedTo('range', function (value) { return (value ? 'nearest' : 'exact'); })\n ], Tooltip.prototype, \"tracking\", void 0);\n __decorate$1T([\n Validate(INTERACTION_RANGE)\n ], Tooltip.prototype, \"range\", void 0);\n return Tooltip;\n}());\n\nvar __extends$2F = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$F = (undefined && undefined.__assign) || function () {\n __assign$F = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$F.apply(this, arguments);\n};\nvar __decorate$1S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$w = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$V = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$x = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$V(arguments[i]));\n return ar;\n};\n/** Modes of matching user interactions to rendered nodes (e.g. hover or click) */\nvar SeriesNodePickMode;\n(function (SeriesNodePickMode) {\n /** Pick matches based upon pick coordinates being inside a matching shape/marker. */\n SeriesNodePickMode[SeriesNodePickMode[\"EXACT_SHAPE_MATCH\"] = 0] = \"EXACT_SHAPE_MATCH\";\n /** Pick matches by nearest category/X-axis value, then distance within that category/X-value. */\n SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_BY_MAIN_AXIS_FIRST\"] = 1] = \"NEAREST_BY_MAIN_AXIS_FIRST\";\n /** Pick matches by nearest category value, then distance within that category. */\n SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST\"] = 2] = \"NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST\";\n /** Pick matches based upon distance to ideal position */\n SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_NODE\"] = 3] = \"NEAREST_NODE\";\n})(SeriesNodePickMode || (SeriesNodePickMode = {}));\nvar warnDeprecated = createDeprecationWarning();\nvar warnSeriesDeprecated = function () { return warnDeprecated('series', 'Use seriesId to get the series ID'); };\nfunction keyProperty(propName, continuous, opts) {\n if (opts === void 0) { opts = {}; }\n var result = __assign$F(__assign$F({}, opts), { property: propName, type: 'key', valueType: continuous ? 'range' : 'category', validation: function (v) { return checkDatum(v, continuous) != null; } });\n return result;\n}\nfunction valueProperty(propName, continuous, opts) {\n if (opts === void 0) { opts = {}; }\n var result = __assign$F(__assign$F({}, opts), { property: propName, type: 'value', valueType: continuous ? 'range' : 'category', validation: function (v) { return checkDatum(v, continuous) != null; } });\n return result;\n}\nfunction sumProperties(props) {\n var result = {\n properties: props,\n type: 'sum',\n };\n return result;\n}\nvar SeriesNodeBaseClickEvent = /** @class */ (function () {\n function SeriesNodeBaseClickEvent(nativeEvent, datum, series) {\n this.type = 'nodeClick';\n this.event = nativeEvent;\n this.datum = datum.datum;\n this.seriesId = series.id;\n this._series = series;\n }\n Object.defineProperty(SeriesNodeBaseClickEvent.prototype, \"series\", {\n /** @deprecated */\n get: function () {\n warnSeriesDeprecated();\n return this._series;\n },\n enumerable: false,\n configurable: true\n });\n return SeriesNodeBaseClickEvent;\n}());\nvar SeriesNodeClickEvent = /** @class */ (function (_super) {\n __extends$2F(SeriesNodeClickEvent, _super);\n function SeriesNodeClickEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return SeriesNodeClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar SeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n __extends$2F(SeriesNodeDoubleClickEvent, _super);\n function SeriesNodeDoubleClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeDoubleClick';\n return _this;\n }\n return SeriesNodeDoubleClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar SeriesItemHighlightStyle = /** @class */ (function () {\n function SeriesItemHighlightStyle() {\n this.fill = 'yellow';\n this.fillOpacity = undefined;\n this.stroke = undefined;\n this.strokeWidth = undefined;\n }\n __decorate$1S([\n Validate(OPT_COLOR_STRING)\n ], SeriesItemHighlightStyle.prototype, \"fill\", void 0);\n __decorate$1S([\n Validate(OPT_NUMBER(0, 1))\n ], SeriesItemHighlightStyle.prototype, \"fillOpacity\", void 0);\n __decorate$1S([\n Validate(OPT_COLOR_STRING)\n ], SeriesItemHighlightStyle.prototype, \"stroke\", void 0);\n __decorate$1S([\n Validate(OPT_NUMBER(0))\n ], SeriesItemHighlightStyle.prototype, \"strokeWidth\", void 0);\n return SeriesItemHighlightStyle;\n}());\nvar SeriesHighlightStyle = /** @class */ (function () {\n function SeriesHighlightStyle() {\n this.strokeWidth = undefined;\n this.dimOpacity = undefined;\n this.enabled = undefined;\n }\n __decorate$1S([\n Validate(OPT_NUMBER(0))\n ], SeriesHighlightStyle.prototype, \"strokeWidth\", void 0);\n __decorate$1S([\n Validate(OPT_NUMBER(0, 1))\n ], SeriesHighlightStyle.prototype, \"dimOpacity\", void 0);\n __decorate$1S([\n Validate(OPT_BOOLEAN)\n ], SeriesHighlightStyle.prototype, \"enabled\", void 0);\n return SeriesHighlightStyle;\n}());\nvar TextHighlightStyle = /** @class */ (function () {\n function TextHighlightStyle() {\n this.color = 'black';\n }\n __decorate$1S([\n Validate(OPT_COLOR_STRING)\n ], TextHighlightStyle.prototype, \"color\", void 0);\n return TextHighlightStyle;\n}());\nvar HighlightStyle = /** @class */ (function () {\n function HighlightStyle() {\n this.item = new SeriesItemHighlightStyle();\n this.series = new SeriesHighlightStyle();\n this.text = new TextHighlightStyle();\n }\n return HighlightStyle;\n}());\nvar SeriesTooltip = /** @class */ (function () {\n function SeriesTooltip() {\n this.enabled = true;\n this.interaction = new SeriesTooltipInteraction();\n this.position = new TooltipPosition();\n }\n __decorate$1S([\n Validate(BOOLEAN)\n ], SeriesTooltip.prototype, \"enabled\", void 0);\n return SeriesTooltip;\n}());\nvar SeriesTooltipInteraction = /** @class */ (function () {\n function SeriesTooltipInteraction() {\n this.enabled = false;\n }\n __decorate$1S([\n Validate(BOOLEAN)\n ], SeriesTooltipInteraction.prototype, \"enabled\", void 0);\n return SeriesTooltipInteraction;\n}());\nvar Series = /** @class */ (function (_super) {\n __extends$2F(Series, _super);\n function Series(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.useSeriesGroupLayer, useSeriesGroupLayer = _c === void 0 ? true : _c, _d = _b.useLabelLayer, useLabelLayer = _d === void 0 ? false : _d, _e = _b.pickModes, pickModes = _e === void 0 ? [SeriesNodePickMode.NEAREST_BY_MAIN_AXIS_FIRST] : _e, _f = _b.directionKeys, directionKeys = _f === void 0 ? {} : _f;\n var _this = _super.call(this) || this;\n _this.id = createId$1(_this);\n // The group node that contains all the nodes used to render this series.\n _this.rootGroup = new Group({ name: 'seriesRoot' });\n _this.directions = [ChartAxisDirection.X, ChartAxisDirection.Y];\n // Flag to determine if we should recalculate node data.\n _this.nodeDataRefresh = true;\n _this._data = undefined;\n _this._visible = true;\n _this.showInLegend = true;\n _this.cursor = 'default';\n _this.nodeClickRange = 'exact';\n _this._declarationOrder = -1;\n _this.highlightStyle = new HighlightStyle();\n var rootGroup = _this.rootGroup;\n _this.directionKeys = directionKeys;\n _this.contentGroup = rootGroup.appendChild(new Group({\n name: _this.id + \"-content\",\n layer: useSeriesGroupLayer,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: [function () { return _this._declarationOrder; }, 0],\n }));\n _this.highlightGroup = rootGroup.appendChild(new Group({\n name: _this.id + \"-highlight\",\n layer: true,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: [function () { return _this._declarationOrder; }, 15000],\n }));\n _this.highlightNode = _this.highlightGroup.appendChild(new Group({ name: 'highlightNode' }));\n _this.highlightLabel = _this.highlightGroup.appendChild(new Group({ name: 'highlightLabel' }));\n _this.highlightNode.zIndex = 0;\n _this.highlightLabel.zIndex = 10;\n _this.pickModes = pickModes;\n if (useLabelLayer) {\n _this.labelGroup = rootGroup.appendChild(new Group({\n name: _this.id + \"-series-labels\",\n layer: true,\n zIndex: Layers.SERIES_LABEL_ZINDEX,\n }));\n }\n return _this;\n }\n Object.defineProperty(Series.prototype, \"type\", {\n get: function () {\n return this.constructor.type || '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Series.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (input) {\n this._data = input;\n this.nodeDataRefresh = true;\n },\n enumerable: false,\n configurable: true\n });\n Series.prototype.hasData = function () {\n var data = this.data;\n return data && (!Array.isArray(data) || data.length > 0);\n };\n Object.defineProperty(Series.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n this._visible = value;\n this.visibleChanged();\n },\n enumerable: false,\n configurable: true\n });\n Series.prototype.getBandScalePadding = function () {\n return { inner: 1, outer: 0 };\n };\n Series.prototype.destroy = function () {\n // Override point for sub-classes.\n };\n Object.defineProperty(Series.prototype, \"grouped\", {\n set: function (g) {\n if (g === true) {\n throw new Error(\"AG Charts - grouped: true is unsupported for series of type: \" + this.type);\n }\n },\n enumerable: false,\n configurable: true\n });\n // Returns the actual keys used (to fetch the values from `data` items) for the given direction.\n Series.prototype.getKeys = function (direction) {\n var _this = this;\n var directionKeys = this.directionKeys;\n var resolvedDirection = this.resolveKeyDirection(direction);\n var keys = directionKeys && directionKeys[resolvedDirection];\n var values = [];\n var flatten = function () {\n var e_1, _a;\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i] = arguments[_i];\n }\n try {\n for (var array_1 = __values$w(array), array_1_1 = array_1.next(); !array_1_1.done; array_1_1 = array_1.next()) {\n var value = array_1_1.value;\n addValue(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (array_1_1 && !array_1_1.done && (_a = array_1.return)) _a.call(array_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n var addValue = function (value) {\n if (Array.isArray(value)) {\n flatten.apply(void 0, __spread$x(value));\n }\n else {\n values.push(value);\n }\n };\n if (!keys)\n return values;\n keys.forEach(function (key) {\n var value = _this[key];\n if (!value)\n return;\n addValue(value);\n });\n return values;\n };\n Series.prototype.resolveKeyDirection = function (direction) {\n return direction;\n };\n // Indicate that something external changed and we should recalculate nodeData.\n Series.prototype.markNodeDataDirty = function () {\n this.nodeDataRefresh = true;\n };\n Series.prototype.visibleChanged = function () {\n // Override point for this.visible change post-processing.\n };\n Series.prototype.getOpacity = function (datum) {\n var _a = this.highlightStyle.series, _b = _a.dimOpacity, dimOpacity = _b === void 0 ? 1 : _b, _c = _a.enabled, enabled = _c === void 0 ? true : _c;\n var defaultOpacity = 1;\n if (enabled === false || dimOpacity === defaultOpacity) {\n return defaultOpacity;\n }\n switch (this.isItemIdHighlighted(datum)) {\n case 'no-highlight':\n case 'highlighted':\n return defaultOpacity;\n case 'peer-highlighted':\n case 'other-highlighted':\n return dimOpacity;\n }\n };\n Series.prototype.getStrokeWidth = function (defaultStrokeWidth, datum) {\n var _a = this.highlightStyle.series, strokeWidth = _a.strokeWidth, _b = _a.enabled, enabled = _b === void 0 ? true : _b;\n if (enabled === false || strokeWidth === undefined) {\n // No change in styling for highlight cases.\n return defaultStrokeWidth;\n }\n switch (this.isItemIdHighlighted(datum)) {\n case 'highlighted':\n return strokeWidth;\n case 'no-highlight':\n case 'other-highlighted':\n case 'peer-highlighted':\n return defaultStrokeWidth;\n }\n };\n Series.prototype.isItemIdHighlighted = function (datum) {\n var _a;\n var highlightedDatum = (_a = this.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n var _b = highlightedDatum !== null && highlightedDatum !== void 0 ? highlightedDatum : {}, series = _b.series, itemId = _b.itemId;\n var highlighting = series != null;\n if (!highlighting) {\n // Highlighting not active.\n return 'no-highlight';\n }\n if (series !== this) {\n // Highlighting active, this series not highlighted.\n return 'other-highlighted';\n }\n if (itemId === undefined) {\n // Series doesn't use itemIds - so no further refinement needed, series is highlighted.\n return 'highlighted';\n }\n if (datum && highlightedDatum !== datum && itemId !== datum.itemId) {\n // A peer (in same Series instance) sub-series has highlight active, but this sub-series\n // does not.\n return 'peer-highlighted';\n }\n return 'highlighted';\n };\n Series.prototype.pickNode = function (point, limitPickModes) {\n var e_2, _a;\n var _b = this, pickModes = _b.pickModes, visible = _b.visible, rootGroup = _b.rootGroup;\n if (!visible || !rootGroup.visible) {\n return;\n }\n try {\n for (var pickModes_1 = __values$w(pickModes), pickModes_1_1 = pickModes_1.next(); !pickModes_1_1.done; pickModes_1_1 = pickModes_1.next()) {\n var pickMode = pickModes_1_1.value;\n if (limitPickModes && !limitPickModes.includes(pickMode)) {\n continue;\n }\n var match = undefined;\n switch (pickMode) {\n case SeriesNodePickMode.EXACT_SHAPE_MATCH:\n match = this.pickNodeExactShape(point);\n break;\n case SeriesNodePickMode.NEAREST_BY_MAIN_AXIS_FIRST:\n case SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST:\n match = this.pickNodeMainAxisFirst(point, pickMode === SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST);\n break;\n case SeriesNodePickMode.NEAREST_NODE:\n match = this.pickNodeClosestDatum(point);\n break;\n }\n if (match) {\n return { pickMode: pickMode, match: match.datum, distance: match.distance };\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (pickModes_1_1 && !pickModes_1_1.done && (_a = pickModes_1.return)) _a.call(pickModes_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n };\n Series.prototype.pickNodeExactShape = function (point) {\n var match = this.contentGroup.pickNode(point.x, point.y);\n if (match) {\n return {\n datum: match.datum,\n distance: 0,\n };\n }\n };\n Series.prototype.pickNodeClosestDatum = function (_point) {\n // Override point for sub-classes - but if this is invoked, the sub-class specified it wants\n // to use this feature.\n throw new Error('AG Charts - Series.pickNodeClosestDatum() not implemented');\n };\n Series.prototype.pickNodeMainAxisFirst = function (_point, _requireCategoryAxis) {\n // Override point for sub-classes - but if this is invoked, the sub-class specified it wants\n // to use this feature.\n throw new Error('AG Charts - Series.pickNodeMainAxisFirst() not implemented');\n };\n Series.prototype.fireNodeClickEvent = function (event, _datum) {\n var eventObject = this.getNodeClickEvent(event, _datum);\n this.fireEvent(eventObject);\n };\n Series.prototype.fireNodeDoubleClickEvent = function (event, _datum) {\n var eventObject = this.getNodeDoubleClickEvent(event, _datum);\n this.fireEvent(eventObject);\n };\n Series.prototype.getNodeClickEvent = function (event, datum) {\n return new SeriesNodeClickEvent(event, datum, this);\n };\n Series.prototype.getNodeDoubleClickEvent = function (event, datum) {\n return new SeriesNodeDoubleClickEvent(event, datum, this);\n };\n Series.prototype.toggleSeriesItem = function (_itemId, enabled) {\n this.visible = enabled;\n this.nodeDataRefresh = true;\n };\n Series.prototype.toggleOtherSeriesItems = function (_seriesToggled, _datumToggled, _enabled, _suggestedEnabled) {\n return;\n };\n Series.prototype.isEnabled = function () {\n return this.visible;\n };\n Series.prototype.fixNumericExtent = function (extent, axis) {\n var _a;\n if (extent === undefined) {\n // Don't return a range, there is no range.\n return [];\n }\n var _b = __read$V(extent, 2), min = _b[0], max = _b[1];\n min = +min;\n max = +max;\n if (min === 0 && max === 0) {\n // domain has zero length and the single valid value is 0. Use the default of [0, 1].\n return [0, 1];\n }\n if (min === Infinity && max === -Infinity) {\n // There's no data in the domain.\n return [];\n }\n if (min === Infinity) {\n min = 0;\n }\n if (max === -Infinity) {\n max = 0;\n }\n if (min === max) {\n // domain has zero length, there is only a single valid value in data\n var padding = (_a = axis === null || axis === void 0 ? void 0 : axis.calculatePadding(min, max)) !== null && _a !== void 0 ? _a : 1;\n min -= padding;\n max += padding;\n }\n if (!(isNumber$4(min) && isNumber$4(max))) {\n return [];\n }\n return [min, max];\n };\n Series.highlightedZIndex = 1000000000000;\n __decorate$1S([\n Validate(STRING)\n ], Series.prototype, \"id\", void 0);\n __decorate$1S([\n Validate(BOOLEAN)\n ], Series.prototype, \"_visible\", void 0);\n __decorate$1S([\n Validate(BOOLEAN)\n ], Series.prototype, \"showInLegend\", void 0);\n __decorate$1S([\n Validate(STRING)\n ], Series.prototype, \"cursor\", void 0);\n __decorate$1S([\n Validate(INTERACTION_RANGE)\n ], Series.prototype, \"nodeClickRange\", void 0);\n return Series;\n}(Observable));\n\nvar __decorate$1R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Padding$1 = /** @class */ (function () {\n function Padding(top, right, bottom, left) {\n if (top === void 0) { top = 0; }\n if (right === void 0) { right = top; }\n if (bottom === void 0) { bottom = top; }\n if (left === void 0) { left = right; }\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.left = left;\n }\n Padding.prototype.clear = function () {\n this.top = this.right = this.bottom = this.left = 0;\n };\n __decorate$1R([\n Validate(NUMBER(0))\n ], Padding.prototype, \"top\", void 0);\n __decorate$1R([\n Validate(NUMBER(0))\n ], Padding.prototype, \"right\", void 0);\n __decorate$1R([\n Validate(NUMBER(0))\n ], Padding.prototype, \"bottom\", void 0);\n __decorate$1R([\n Validate(NUMBER(0))\n ], Padding.prototype, \"left\", void 0);\n return Padding;\n}());\n\nvar Selection = /** @class */ (function () {\n function Selection(parent, classOrFactory) {\n this._nodes = [];\n this._data = [];\n this._parent = parent;\n this._factory = Object.prototype.isPrototypeOf.call(Node, classOrFactory)\n ? function () { return new classOrFactory(); }\n : classOrFactory;\n }\n Selection.select = function (parent, classOrFactory) {\n return new Selection(parent, classOrFactory);\n };\n Selection.prototype.each = function (iterate) {\n this._nodes.forEach(function (node, i) { return iterate(node, node.datum, i); });\n return this;\n };\n Selection.prototype.update = function (data, init) {\n var _this = this;\n var old = this._data;\n var parent = this._parent;\n var factory = this._factory;\n if (data.length > old.length) {\n data.slice(old.length).forEach(function (datum) {\n var node = factory(datum);\n node.datum = datum;\n init && init(node);\n parent.appendChild(node);\n _this._nodes.push(node);\n });\n }\n else if (data.length < old.length) {\n this._nodes.splice(data.length).forEach(function (node) {\n parent.removeChild(node);\n });\n }\n this._data = data.slice(0);\n for (var i = 0; i < data.length; i++) {\n this._nodes[i].datum = this._data[i];\n }\n return this;\n };\n Selection.prototype.clear = function () {\n this.update([]);\n return this;\n };\n Selection.prototype.select = function (predicate) {\n var results = [];\n var traverse = function (node) {\n if (predicate(node)) {\n results.push(node);\n }\n node.children.forEach(traverse);\n };\n traverse(this._parent);\n return results;\n };\n Selection.prototype.selectByClass = function (Class) {\n return this.select(function (node) { return node instanceof Class; });\n };\n Selection.prototype.selectByTag = function (tag) {\n return this.select(function (node) { return node.tag === tag; });\n };\n Selection.prototype.nodes = function () {\n return this._nodes;\n };\n return Selection;\n}());\n\nvar Gradient = /** @class */ (function () {\n function Gradient() {\n this.stops = [];\n }\n return Gradient;\n}());\n\nvar twoPi = Math.PI * 2;\n/**\n * Normalize the given angle to be in the [0, 2π) interval.\n * @param radians Angle in radians.\n */\nfunction normalizeAngle360(radians) {\n radians %= twoPi;\n radians += twoPi;\n radians %= twoPi;\n return radians;\n}\nfunction normalizeAngle360Inclusive(radians) {\n radians %= twoPi;\n radians += twoPi;\n if (radians !== twoPi) {\n radians %= twoPi;\n }\n return radians;\n}\n/**\n * Normalize the given angle to be in the [-π, π) interval.\n * @param radians Angle in radians.\n */\nfunction normalizeAngle180(radians) {\n radians %= twoPi;\n if (radians < -Math.PI) {\n radians += twoPi;\n }\n else if (radians >= Math.PI) {\n radians -= twoPi;\n }\n return radians;\n}\nfunction toRadians$1(degrees) {\n return (degrees / 180) * Math.PI;\n}\n\nvar __extends$2E = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LinearGradient = /** @class */ (function (_super) {\n __extends$2E(LinearGradient, _super);\n function LinearGradient() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.angle = 0;\n return _this;\n }\n LinearGradient.prototype.createGradient = function (ctx, bbox) {\n // Gradient 0° angle starts at top according to CSS spec\n var angleOffset = 90;\n var _a = this, stops = _a.stops, angle = _a.angle;\n var radians = normalizeAngle360(toRadians$1(angle + angleOffset));\n var cos = Math.cos(radians);\n var sin = Math.sin(radians);\n var w = bbox.width;\n var h = bbox.height;\n var cx = bbox.x + w * 0.5;\n var cy = bbox.y + h * 0.5;\n if (w > 0 && h > 0) {\n var diagonal = Math.sqrt(h * h + w * w) / 2;\n var diagonalAngle = Math.atan2(h, w);\n var quarteredAngle = void 0;\n if (radians < Math.PI / 2) {\n quarteredAngle = radians;\n }\n else if (radians < Math.PI) {\n quarteredAngle = Math.PI - radians;\n }\n else if (radians < (3 * Math.PI) / 2) {\n quarteredAngle = radians - Math.PI;\n }\n else {\n quarteredAngle = 2 * Math.PI - radians;\n }\n var l = diagonal * Math.abs(Math.cos(quarteredAngle - diagonalAngle));\n var gradient_1 = ctx.createLinearGradient(cx + cos * l, cy + sin * l, cx - cos * l, cy - sin * l);\n stops.forEach(function (stop) {\n gradient_1.addColorStop(stop.offset, stop.color);\n });\n return gradient_1;\n }\n return 'black';\n };\n return LinearGradient;\n}(Gradient));\n\nvar __extends$2D = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LINEAR_GRADIENT_REGEXP = /^linear-gradient\\((.*?)deg,\\s*(.*?)\\s*\\)$/i;\nvar Shape = /** @class */ (function (_super) {\n __extends$2D(Shape, _super);\n function Shape() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastInstanceId = 0;\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.fill = Shape.defaultStyles.fill;\n /**\n * Note that `strokeStyle = null` means invisible stroke,\n * while `lineWidth = 0` means no stroke, and sometimes this can mean different things.\n * For example, a rect shape with an invisible stroke may not align to the pixel grid\n * properly because the stroke affects the rules of alignment, and arc shapes forming\n * a pie chart will have a gap between them if they have an invisible stroke, whereas\n * there would be not gap if there was no stroke at all.\n * The preferred way of making the stroke invisible is setting the `lineWidth` to zero,\n * unless specific looks that is achieved by having an invisible stroke is desired.\n */\n _this.stroke = Shape.defaultStyles.stroke;\n _this.strokeWidth = Shape.defaultStyles.strokeWidth;\n _this.lineDash = Shape.defaultStyles.lineDash;\n _this.lineDashOffset = Shape.defaultStyles.lineDashOffset;\n _this.lineCap = Shape.defaultStyles.lineCap;\n _this.lineJoin = Shape.defaultStyles.lineJoin;\n _this.opacity = Shape.defaultStyles.opacity;\n _this.fillShadow = Shape.defaultStyles.fillShadow;\n return _this;\n }\n /**\n * Creates a light-weight instance of the given shape (that serves as a template).\n * The created instance only stores the properites set on the instance itself\n * and the rest of the properties come via the prototype chain from the template.\n * This can greatly reduce memory usage in cases where one has many similar shapes,\n * for example, circles of different size, position and color. The exact memory usage\n * reduction will depend on the size of the template and the number of own properties\n * set on its lightweight instances, but will typically be around an order of magnitude\n * or more.\n *\n * Note: template shapes are not supposed to be part of the scene graph (they should not\n * have a parent).\n *\n * @param template\n */\n Shape.createInstance = function (template) {\n var shape = Object.create(template);\n shape._setParent(undefined);\n shape.id = template.id + '-Instance-' + String(++template.lastInstanceId);\n return shape;\n };\n /**\n * Restores the default styles introduced by this subclass.\n */\n Shape.prototype.restoreOwnStyles = function () {\n var styles = this.constructor.defaultStyles;\n var keys = Object.getOwnPropertyNames(styles);\n // getOwnPropertyNames is about 2.5 times faster than\n // for..in with the hasOwnProperty check and in this\n // case, where most properties are inherited, can be\n // more then an order of magnitude faster.\n for (var i = 0, n = keys.length; i < n; i++) {\n var key = keys[i];\n this[key] = styles[key];\n }\n };\n Shape.prototype.restoreAllStyles = function () {\n var styles = this.constructor.defaultStyles;\n for (var property in styles) {\n this[property] = styles[property];\n }\n };\n /**\n * Restores the base class default styles that have been overridden by this subclass.\n */\n Shape.prototype.restoreOverriddenStyles = function () {\n var styles = this.constructor.defaultStyles;\n var protoStyles = Object.getPrototypeOf(styles);\n for (var property in styles) {\n if (Object.prototype.hasOwnProperty.call(styles, property) &&\n Object.prototype.hasOwnProperty.call(protoStyles, property)) {\n this[property] = styles[property];\n }\n }\n };\n Shape.prototype.updateGradient = function () {\n var fill = this.fill;\n var linearGradientMatch;\n if ((fill === null || fill === void 0 ? void 0 : fill.startsWith('linear-gradient')) && (linearGradientMatch = fill.match(LINEAR_GRADIENT_REGEXP))) {\n var angle = parseFloat(linearGradientMatch[1]);\n var colors_1 = [];\n var colorsPart = linearGradientMatch[2];\n var colorRegex = /(#[0-9a-f]+)|(rgba?\\(.+?\\))|([a-z]+)/gi;\n var c = void 0;\n while ((c = colorRegex.exec(colorsPart))) {\n colors_1.push(c[0]);\n }\n this.gradient = new LinearGradient();\n this.gradient.angle = angle;\n this.gradient.stops = colors_1.map(function (color, index) {\n var offset = index / (colors_1.length - 1);\n return { offset: offset, color: color };\n });\n }\n else {\n this.gradient = undefined;\n }\n };\n /**\n * Returns a device-pixel aligned coordinate (or length if length is supplied).\n *\n * NOTE: Not suitable for strokes, since the stroke needs to be offset to the middle\n * of a device pixel.\n */\n Shape.prototype.align = function (start, length) {\n var _a, _b, _c;\n var pixelRatio = (_c = (_b = (_a = this.layerManager) === null || _a === void 0 ? void 0 : _a.canvas) === null || _b === void 0 ? void 0 : _b.pixelRatio) !== null && _c !== void 0 ? _c : 1;\n var alignedStart = Math.round(start * pixelRatio) / pixelRatio;\n if (length == undefined) {\n return alignedStart;\n }\n if (length === 0) {\n return 0;\n }\n if (length < 1) {\n // Avoid hiding crisp shapes\n return Math.ceil(length * pixelRatio) / pixelRatio;\n }\n // Account for the rounding of alignedStart by increasing length to compensate before\n // alignment.\n return Math.round((length + start) * pixelRatio) / pixelRatio - alignedStart;\n };\n Shape.prototype.fillStroke = function (ctx) {\n this.renderFill(ctx);\n this.renderStroke(ctx);\n };\n Shape.prototype.renderFill = function (ctx) {\n if (this.fill) {\n var globalAlpha = ctx.globalAlpha;\n this.applyFill(ctx);\n this.applyFillAlpha(ctx);\n this.applyShadow(ctx);\n ctx.fill();\n ctx.globalAlpha = globalAlpha;\n }\n ctx.shadowColor = 'rgba(0, 0, 0, 0)';\n };\n Shape.prototype.applyFill = function (ctx) {\n if (this.gradient) {\n ctx.fillStyle = this.gradient.createGradient(ctx, this.computeBBox());\n }\n else {\n ctx.fillStyle = this.fill;\n }\n };\n Shape.prototype.applyFillAlpha = function (ctx) {\n var globalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n };\n Shape.prototype.applyShadow = function (ctx) {\n var _a, _b;\n // The canvas context scaling (depends on the device's pixel ratio)\n // has no effect on shadows, so we have to account for the pixel ratio\n // manually here.\n var pixelRatio = (_b = (_a = this.layerManager) === null || _a === void 0 ? void 0 : _a.canvas.pixelRatio) !== null && _b !== void 0 ? _b : 1;\n var fillShadow = this.fillShadow;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n };\n Shape.prototype.renderStroke = function (ctx) {\n if (this.stroke && this.strokeWidth) {\n var globalAlpha = ctx.globalAlpha;\n ctx.strokeStyle = this.stroke;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n ctx.lineWidth = this.strokeWidth;\n if (this.lineDash) {\n ctx.setLineDash(this.lineDash);\n }\n if (this.lineDashOffset) {\n ctx.lineDashOffset = this.lineDashOffset;\n }\n if (this.lineCap) {\n ctx.lineCap = this.lineCap;\n }\n if (this.lineJoin) {\n ctx.lineJoin = this.lineJoin;\n }\n ctx.stroke();\n ctx.globalAlpha = globalAlpha;\n }\n };\n Shape.prototype.containsPoint = function (x, y) {\n return this.isPointInPath(x, y);\n };\n /**\n * Defaults for style properties. Note that properties that affect the position\n * and shape of the node are not considered style properties, for example:\n * `x`, `y`, `width`, `height`, `radius`, `rotation`, etc.\n * Can be used to reset to the original styling after some custom styling\n * has been applied (using the `restoreOwnStyles` and `restoreAllStyles` methods).\n * These static defaults are meant to be inherited by subclasses.\n */\n Shape.defaultStyles = Object.assign({}, {\n fill: 'black',\n stroke: undefined,\n strokeWidth: 0,\n lineDash: undefined,\n lineDashOffset: 0,\n lineCap: undefined,\n lineJoin: undefined,\n opacity: 1,\n fillShadow: undefined,\n });\n __decorate$1Q([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"fillOpacity\", void 0);\n __decorate$1Q([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"strokeOpacity\", void 0);\n __decorate$1Q([\n SceneChangeDetection({ redraw: RedrawType.MINOR, changeCb: function (s) { return s.updateGradient(); } })\n ], Shape.prototype, \"fill\", void 0);\n __decorate$1Q([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"stroke\", void 0);\n __decorate$1Q([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"strokeWidth\", void 0);\n __decorate$1Q([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"lineDash\", void 0);\n __decorate$1Q([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"lineDashOffset\", void 0);\n __decorate$1Q([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"lineCap\", void 0);\n __decorate$1Q([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"lineJoin\", void 0);\n __decorate$1Q([\n SceneChangeDetection({\n redraw: RedrawType.MINOR,\n convertor: function (v) { return Math.min(1, Math.max(0, v)); },\n })\n ], Shape.prototype, \"opacity\", void 0);\n __decorate$1Q([\n SceneChangeDetection({ redraw: RedrawType.MINOR, checkDirtyOnAssignment: true })\n ], Shape.prototype, \"fillShadow\", void 0);\n return Shape;\n}(Node));\n\nvar __extends$2C = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction SceneFontChangeDetection(opts) {\n var _a = opts || {}, _b = _a.redraw, redraw = _b === void 0 ? RedrawType.MAJOR : _b, changeCb = _a.changeCb;\n return SceneChangeDetection({ redraw: redraw, type: 'font', changeCb: changeCb });\n}\nvar Text = /** @class */ (function (_super) {\n __extends$2C(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.x = 0;\n _this.y = 0;\n _this.lines = [];\n _this.text = '';\n _this._dirtyFont = true;\n _this.fontSize = 10;\n _this.fontFamily = 'sans-serif';\n _this.textAlign = Text.defaultStyles.textAlign;\n _this.textBaseline = Text.defaultStyles.textBaseline;\n // TextMetrics are used if lineHeight is not defined.\n _this.lineHeight = undefined;\n return _this;\n }\n Text.prototype._splitText = function () {\n this.lines = typeof this.text === 'string' ? this.text.split(/\\r?\\n/g) : [];\n };\n Object.defineProperty(Text.prototype, \"font\", {\n get: function () {\n if (this._dirtyFont) {\n this._dirtyFont = false;\n this._font = getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n }\n return this._font;\n },\n enumerable: false,\n configurable: true\n });\n Text.prototype.computeBBox = function () {\n return HdpiCanvas.has.textMetrics ? this.getPreciseBBox() : this.getApproximateBBox();\n };\n Text.prototype.getPreciseBBox = function () {\n var _a, _b;\n var left = 0;\n var top = 0;\n var width = 0;\n var height = 0;\n // Distance between first and last base lines.\n var baselineDistance = 0;\n for (var i = 0; i < this.lines.length; i++) {\n var metrics = HdpiCanvas.measureText(this.lines[i], this.font, this.textBaseline, this.textAlign);\n left = Math.max(left, metrics.actualBoundingBoxLeft);\n width = Math.max(width, metrics.width);\n if (i == 0) {\n top += metrics.actualBoundingBoxAscent;\n height += metrics.actualBoundingBoxAscent;\n }\n else {\n baselineDistance += (_a = metrics.fontBoundingBoxAscent) !== null && _a !== void 0 ? _a : metrics.emHeightAscent;\n }\n if (i == this.lines.length - 1) {\n height += metrics.actualBoundingBoxDescent;\n }\n else {\n baselineDistance += (_b = metrics.fontBoundingBoxDescent) !== null && _b !== void 0 ? _b : metrics.emHeightDescent;\n }\n }\n if (this.lineHeight !== undefined) {\n baselineDistance = (this.lines.length - 1) * this.lineHeight;\n }\n height += baselineDistance;\n top += baselineDistance * this.getVerticalOffset();\n return new BBox(this.x - left, this.y - top, width, height);\n };\n Text.prototype.getVerticalOffset = function () {\n switch (this.textBaseline) {\n case 'top':\n case 'hanging':\n return 0;\n case 'bottom':\n case 'alphabetic':\n case 'ideographic':\n return 1;\n case 'middle':\n return 0.5;\n }\n };\n Text.prototype.getApproximateBBox = function () {\n var _a;\n var width = 0;\n var firstLineHeight = 0;\n // Distance between first and last base lines.\n var baselineDistance = 0;\n if (this.lines.length > 0) {\n var lineSize = HdpiCanvas.getTextSize(this.lines[0], this.font);\n width = lineSize.width;\n firstLineHeight = lineSize.height;\n }\n for (var i = 1; i < this.lines.length; i++) {\n var lineSize = HdpiCanvas.getTextSize(this.lines[i], this.font);\n width = Math.max(width, lineSize.width);\n baselineDistance += (_a = this.lineHeight) !== null && _a !== void 0 ? _a : lineSize.height;\n }\n var _b = this, x = _b.x, y = _b.y;\n switch (this.textAlign) {\n case 'end':\n case 'right':\n x -= width;\n break;\n case 'center':\n x -= width / 2;\n }\n switch (this.textBaseline) {\n case 'alphabetic':\n y -= firstLineHeight * 0.7 + baselineDistance * 0.5;\n break;\n case 'middle':\n y -= firstLineHeight * 0.45 + baselineDistance * 0.5;\n break;\n case 'ideographic':\n y -= firstLineHeight + baselineDistance;\n break;\n case 'hanging':\n y -= firstLineHeight * 0.2 + baselineDistance * 0.5;\n break;\n case 'bottom':\n y -= firstLineHeight + baselineDistance;\n break;\n }\n return new BBox(x, y, width, firstLineHeight + baselineDistance);\n };\n Text.prototype.getLineHeight = function (line) {\n var _a, _b;\n if (this.lineHeight)\n return this.lineHeight;\n if (HdpiCanvas.has.textMetrics) {\n var metrics = HdpiCanvas.measureText(line, this.font, this.textBaseline, this.textAlign);\n return (((_a = metrics.fontBoundingBoxAscent) !== null && _a !== void 0 ? _a : metrics.emHeightAscent) +\n ((_b = metrics.fontBoundingBoxDescent) !== null && _b !== void 0 ? _b : metrics.emHeightDescent));\n }\n return HdpiCanvas.getTextSize(line, this.font).height;\n };\n Text.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox ? bbox.containsPoint(point.x, point.y) : false;\n };\n Text.prototype.render = function (renderCtx) {\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n if (!this.lines.length || !this.layerManager) {\n if (stats)\n stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n var _a = this, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth;\n ctx.font = this.font;\n ctx.textAlign = this.textAlign;\n ctx.textBaseline = this.textBaseline;\n var pixelRatio = this.layerManager.canvas.pixelRatio || 1;\n var globalAlpha = ctx.globalAlpha;\n if (fill) {\n ctx.fillStyle = fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n var fillShadow = this.fillShadow;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n this.renderLines(function (line, x, y) { return ctx.fillText(line, x, y); });\n }\n if (stroke && strokeWidth) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n var _b = this, lineDash = _b.lineDash, lineDashOffset = _b.lineDashOffset, lineCap = _b.lineCap, lineJoin = _b.lineJoin;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n this.renderLines(function (line, x, y) { return ctx.strokeText(line, x, y); });\n }\n _super.prototype.render.call(this, renderCtx);\n };\n Text.prototype.renderLines = function (renderCallback) {\n var _this = this;\n var _a = this, lines = _a.lines, x = _a.x, y = _a.y;\n var lineHeights = this.lines.map(function (line) { return _this.getLineHeight(line); });\n var totalHeight = lineHeights.reduce(function (a, b) { return a + b; }, 0);\n var offsetY = -(totalHeight - lineHeights[0]) * this.getVerticalOffset();\n for (var i = 0; i < lines.length; i++) {\n renderCallback(lines[i], x, y + offsetY);\n offsetY += lineHeights[i];\n }\n };\n Text.className = 'Text';\n Text.defaultStyles = Object.assign({}, Shape.defaultStyles, {\n textAlign: 'start',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 10,\n fontFamily: 'sans-serif',\n textBaseline: 'alphabetic',\n });\n __decorate$1P([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Text.prototype, \"x\", void 0);\n __decorate$1P([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Text.prototype, \"y\", void 0);\n __decorate$1P([\n SceneChangeDetection({ redraw: RedrawType.MAJOR, changeCb: function (o) { return o._splitText(); } })\n ], Text.prototype, \"text\", void 0);\n __decorate$1P([\n SceneFontChangeDetection()\n ], Text.prototype, \"fontStyle\", void 0);\n __decorate$1P([\n SceneFontChangeDetection()\n ], Text.prototype, \"fontWeight\", void 0);\n __decorate$1P([\n SceneFontChangeDetection()\n ], Text.prototype, \"fontSize\", void 0);\n __decorate$1P([\n SceneFontChangeDetection()\n ], Text.prototype, \"fontFamily\", void 0);\n __decorate$1P([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Text.prototype, \"textAlign\", void 0);\n __decorate$1P([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Text.prototype, \"textBaseline\", void 0);\n __decorate$1P([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Text.prototype, \"lineHeight\", void 0);\n return Text;\n}(Shape));\nfunction getFont(fontSize, fontFamily, fontStyle, fontWeight) {\n return [fontStyle || '', fontWeight || '', fontSize + 'px', fontFamily].join(' ').trim();\n}\n\n/**\n * Finds the roots of a parametric linear equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nfunction linearRoot(a, b) {\n var t = -b / a;\n return a !== 0 && t >= 0 && t <= 1 ? [t] : [];\n}\n/**\n * Finds the roots of a parametric quadratic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nfunction quadraticRoots(a, b, c) {\n if (a === 0) {\n return linearRoot(b, c);\n }\n var D = b * b - 4 * a * c; // The polynomial's discriminant.\n var roots = [];\n if (D === 0) {\n // A single real root.\n var t = -b / (2 * a);\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n }\n else if (D > 0) {\n // A pair of distinct real roots.\n var rD = Math.sqrt(D);\n var t1 = (-b - rD) / (2 * a);\n var t2 = (-b + rD) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n }\n // else -> Complex roots.\n return roots;\n}\n/**\n * Finds the roots of a parametric cubic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n * Returns an array of parametric intersection locations along the cubic,\n * excluding out-of-bounds intersections (before or after the end point\n * or in the imaginary plane).\n * An adaptation of http://www.particleincell.com/blog/2013/cubic-line-intersection/\n */\nfunction cubicRoots(a, b, c, d) {\n if (a === 0) {\n return quadraticRoots(b, c, d);\n }\n var A = b / a;\n var B = c / a;\n var C = d / a;\n var Q = (3 * B - A * A) / 9;\n var R = (9 * A * B - 27 * C - 2 * A * A * A) / 54;\n var D = Q * Q * Q + R * R; // The polynomial's discriminant.\n var third = 1 / 3;\n var roots = [];\n if (D >= 0) {\n // Complex or duplicate roots.\n var rD = Math.sqrt(D);\n var S = Math.sign(R + rD) * Math.pow(Math.abs(R + rD), third);\n var T = Math.sign(R - rD) * Math.pow(Math.abs(R - rD), third);\n var Im = Math.abs((Math.sqrt(3) * (S - T)) / 2); // Complex part of the root pair.\n var t = -third * A + (S + T); // A real root.\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n if (Im === 0) {\n var t_1 = -third * A - (S + T) / 2; // The real part of a complex root.\n if (t_1 >= 0 && t_1 <= 1) {\n roots.push(t_1);\n }\n }\n }\n else {\n // Distinct real roots.\n var theta = Math.acos(R / Math.sqrt(-Q * Q * Q));\n var thirdA = third * A;\n var twoSqrtQ = 2 * Math.sqrt(-Q);\n var t1 = twoSqrtQ * Math.cos(third * theta) - thirdA;\n var t2 = twoSqrtQ * Math.cos(third * (theta + 2 * Math.PI)) - thirdA;\n var t3 = twoSqrtQ * Math.cos(third * (theta + 4 * Math.PI)) - thirdA;\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n if (t3 >= 0 && t3 <= 1) {\n roots.push(t3);\n }\n }\n return roots;\n}\n\nvar __values$v = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n/**\n * Returns the intersection point for the given pair of line segments, or null,\n * if the segments are parallel or don't intersect.\n * Based on http://paulbourke.net/geometry/pointlineplane/\n */\nfunction segmentIntersection(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {\n var d = (ax2 - ax1) * (by2 - by1) - (ay2 - ay1) * (bx2 - bx1);\n if (d === 0) {\n // The lines are parallel.\n return null;\n }\n var ua = ((bx2 - bx1) * (ay1 - by1) - (ax1 - bx1) * (by2 - by1)) / d;\n var ub = ((ax2 - ax1) * (ay1 - by1) - (ay2 - ay1) * (ax1 - bx1)) / d;\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return {\n x: ax1 + ua * (ax2 - ax1),\n y: ay1 + ua * (ay2 - ay1),\n };\n }\n return null; // The intersection point is outside either or both segments.\n}\n/**\n * Returns intersection points of the given cubic curve and the line segment.\n * Takes in x/y components of cubic control points and line segment start/end points\n * as parameters.\n */\nfunction cubicSegmentIntersections(px1, py1, px2, py2, px3, py3, px4, py4, x1, y1, x2, y2) {\n var e_1, _a;\n var intersections = [];\n // Find line equation coefficients.\n var A = y1 - y2;\n var B = x2 - x1;\n var C = x1 * (y2 - y1) - y1 * (x2 - x1);\n // Find cubic Bezier curve equation coefficients from control points.\n var bx = bezierCoefficients(px1, px2, px3, px4);\n var by = bezierCoefficients(py1, py2, py3, py4);\n var a = A * bx[0] + B * by[0]; // t^3\n var b = A * bx[1] + B * by[1]; // t^2\n var c = A * bx[2] + B * by[2]; // t\n var d = A * bx[3] + B * by[3] + C; // 1\n var roots = cubicRoots(a, b, c, d);\n try {\n // Verify that the roots are within bounds of the linear segment.\n for (var roots_1 = __values$v(roots), roots_1_1 = roots_1.next(); !roots_1_1.done; roots_1_1 = roots_1.next()) {\n var t = roots_1_1.value;\n var tt = t * t;\n var ttt = t * tt;\n // Find the cartesian plane coordinates for the parametric root `t`.\n var x = bx[0] * ttt + bx[1] * tt + bx[2] * t + bx[3];\n var y = by[0] * ttt + by[1] * tt + by[2] * t + by[3];\n // The parametric cubic roots we found are intersection points\n // with an infinite line, and so the x/y coordinates above are as well.\n // Make sure the x/y is also within the bounds of the given segment.\n var s = void 0;\n if (x1 !== x2) {\n s = (x - x1) / (x2 - x1);\n }\n else {\n // the line is vertical\n s = (y - y1) / (y2 - y1);\n }\n if (s >= 0 && s <= 1) {\n intersections.push({ x: x, y: y });\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (roots_1_1 && !roots_1_1.done && (_a = roots_1.return)) _a.call(roots_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return intersections;\n}\n/**\n * Returns the given coordinates vector multiplied by the coefficient matrix\n * of the parametric cubic Bézier equation.\n */\nfunction bezierCoefficients(P1, P2, P3, P4) {\n return [\n // Bézier expressed as matrix operations:\n -P1 + 3 * P2 - 3 * P3 + P4,\n 3 * P1 - 6 * P2 + 3 * P3,\n -3 * P1 + 3 * P2,\n P1,\n ];\n}\n/**\n * Returns intersection points of the arc and the line segment.\n * Takes in arc parameters and line segment start/end points.\n */\nfunction arcIntersections(cx, cy, r, startAngle, endAngle, counterClockwise, x1, y1, x2, y2) {\n // Solving the quadratic equation:\n // 1. y = k * x + y0\n // 2. (x - cx)^2 + (y - cy)^2 = r^2\n var k = (y2 - y1) / (x2 - x1);\n var y0 = y1 - k * x1;\n var a = Math.pow(k, 2) + 1;\n var b = 2 * (k * (y0 - cy) - cx);\n var c = Math.pow(cx, 2) + Math.pow(y0 - cy, 2) - Math.pow(r, 2);\n var d = Math.pow(b, 2) - 4 * a * c;\n if (d < 0) {\n return [];\n }\n var i1x = (-b + Math.sqrt(d)) / 2 / a;\n var i2x = (-b - Math.sqrt(d)) / 2 / a;\n var intersections = [];\n [i1x, i2x].forEach(function (x) {\n var isXInsideLine = x >= Math.min(x1, x2) && x <= Math.max(x1, x2);\n if (!isXInsideLine) {\n return;\n }\n var y = k * x;\n var a1 = normalizeAngle360(counterClockwise ? endAngle : startAngle);\n var a2 = normalizeAngle360(counterClockwise ? startAngle : endAngle);\n var intersectionAngle = normalizeAngle360(Math.atan2(y, x));\n // Order angles clockwise after the start angle\n // (end angle if counter-clockwise)\n if (a2 <= a1) {\n a2 += 2 * Math.PI;\n }\n if (intersectionAngle < a1) {\n intersectionAngle += 2 * Math.PI;\n }\n if (intersectionAngle >= a1 && intersectionAngle <= a2) {\n intersections.push({ x: x, y: y });\n }\n });\n return intersections;\n}\n\nvar __values$u = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar Command;\n(function (Command) {\n Command[Command[\"Move\"] = 0] = \"Move\";\n Command[Command[\"Line\"] = 1] = \"Line\";\n Command[Command[\"Arc\"] = 2] = \"Arc\";\n Command[Command[\"Curve\"] = 3] = \"Curve\";\n Command[Command[\"ClosePath\"] = 4] = \"ClosePath\";\n})(Command || (Command = {}));\nvar Path2D = /** @class */ (function () {\n function Path2D() {\n // The methods of this class will likely be called many times per animation frame,\n // and any allocation can trigger a GC cycle during animation, so we attempt\n // to minimize the number of allocations.\n this.previousCommands = [];\n this.previousParams = [];\n this.previousClosedPath = false;\n this.commands = [];\n this.params = [];\n this._closedPath = false;\n }\n Path2D.prototype.isDirty = function () {\n if (this._closedPath !== this.previousClosedPath) {\n return true;\n }\n if (this.previousCommands.length !== this.commands.length) {\n return true;\n }\n if (this.previousParams.length !== this.params.length) {\n return true;\n }\n for (var i = 0; i < this.commands.length; i++) {\n if (this.commands[i] !== this.previousCommands[i]) {\n return true;\n }\n }\n for (var i = 0; i < this.params.length; i++) {\n if (this.params[i] !== this.previousParams[i]) {\n return true;\n }\n }\n return false;\n };\n Path2D.prototype.draw = function (ctx) {\n var e_1, _a;\n var commands = this.commands;\n var params = this.params;\n var j = 0;\n ctx.beginPath();\n try {\n for (var commands_1 = __values$u(commands), commands_1_1 = commands_1.next(); !commands_1_1.done; commands_1_1 = commands_1.next()) {\n var command = commands_1_1.value;\n switch (command) {\n case Command.Move:\n ctx.moveTo(params[j++], params[j++]);\n break;\n case Command.Line:\n ctx.lineTo(params[j++], params[j++]);\n break;\n case Command.Curve:\n ctx.bezierCurveTo(params[j++], params[j++], params[j++], params[j++], params[j++], params[j++]);\n break;\n case Command.Arc:\n ctx.arc(params[j++], params[j++], params[j++], params[j++], params[j++], params[j++] === 1);\n break;\n case Command.ClosePath:\n ctx.closePath();\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (commands_1_1 && !commands_1_1.done && (_a = commands_1.return)) _a.call(commands_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (commands.length === 0) {\n ctx.closePath();\n }\n };\n Path2D.prototype.moveTo = function (x, y) {\n if (this.xy) {\n this.xy[0] = x;\n this.xy[1] = y;\n }\n else {\n this.xy = [x, y];\n }\n this.commands.push(Command.Move);\n this.params.push(x, y);\n };\n Path2D.prototype.lineTo = function (x, y) {\n if (this.xy) {\n this.commands.push(Command.Line);\n this.params.push(x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n }\n else {\n this.moveTo(x, y);\n }\n };\n Path2D.prototype.rect = function (x, y, width, height) {\n this.moveTo(x, y);\n this.lineTo(x + width, y);\n this.lineTo(x + width, y + height);\n this.lineTo(x, y + height);\n this.closePath();\n };\n Path2D.prototype.arc = function (x, y, r, sAngle, eAngle, antiClockwise) {\n if (antiClockwise === void 0) { antiClockwise = false; }\n var endX = x + r * Math.cos(eAngle);\n var endY = y + r * Math.sin(eAngle);\n if (this.xy) {\n this.xy[0] = endX;\n this.xy[1] = endY;\n }\n else {\n this.xy = [endX, endY];\n }\n this.commands.push(Command.Arc);\n this.params.push(x, y, r, sAngle, eAngle, antiClockwise ? 1 : 0);\n };\n Path2D.prototype.cubicCurveTo = function (cx1, cy1, cx2, cy2, x, y) {\n if (!this.xy) {\n this.moveTo(cx1, cy1);\n }\n this.commands.push(Command.Curve);\n this.params.push(cx1, cy1, cx2, cy2, x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n };\n Object.defineProperty(Path2D.prototype, \"closedPath\", {\n get: function () {\n return this._closedPath;\n },\n enumerable: false,\n configurable: true\n });\n Path2D.prototype.closePath = function () {\n if (this.xy) {\n this.xy = undefined;\n this.commands.push(Command.ClosePath);\n this._closedPath = true;\n }\n };\n Path2D.prototype.clear = function (_a) {\n var trackChanges = (_a === void 0 ? { trackChanges: false } : _a).trackChanges;\n if (trackChanges) {\n this.previousCommands = this.commands;\n this.previousParams = this.params;\n this.previousClosedPath = this._closedPath;\n this.commands = [];\n this.params = [];\n }\n else {\n this.commands.length = 0;\n this.params.length = 0;\n }\n this.xy = undefined;\n this._closedPath = false;\n };\n Path2D.prototype.isPointInPath = function (x, y) {\n var commands = this.commands;\n var params = this.params;\n var cn = commands.length;\n // Hit testing using ray casting method, where the ray's origin is some point\n // outside the path. In this case, an offscreen point that is remote enough, so that\n // even if the path itself is large and is partially offscreen, the ray's origin\n // will likely be outside the path anyway. To test if the given point is inside the\n // path or not, we cast a ray from the origin to the given point and check the number\n // of intersections of this segment with the path. If the number of intersections is\n // even, then the ray both entered and exited the path an equal number of times,\n // therefore the point is outside the path, and inside the path, if the number of\n // intersections is odd. Since the path is compound, we check if the ray segment\n // intersects with each of the path's segments, which can be either a line segment\n // (one or no intersection points) or a Bézier curve segment (up to 3 intersection\n // points).\n var ox = -10000;\n var oy = -10000;\n // the starting point of the current path\n var sx = NaN;\n var sy = NaN;\n // the previous point of the current path\n var px = 0;\n var py = 0;\n var intersectionCount = 0;\n for (var ci = 0, pi = 0; ci < cn; ci++) {\n switch (commands[ci]) {\n case Command.Move:\n if (!isNaN(sx)) {\n if (segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n px = params[pi++];\n sx = px;\n py = params[pi++];\n sy = py;\n break;\n case Command.Line:\n if (segmentIntersection(px, py, params[pi++], params[pi++], ox, oy, x, y)) {\n intersectionCount++;\n }\n px = params[pi - 2];\n py = params[pi - 1];\n break;\n case Command.Curve:\n intersectionCount += cubicSegmentIntersections(px, py, params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], ox, oy, x, y).length;\n px = params[pi - 2];\n py = params[pi - 1];\n break;\n case Command.Arc:\n intersectionCount += arcIntersections(params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], Boolean(params[pi++]), ox, oy, x, y).length;\n px = params[pi - 2];\n py = params[pi - 1];\n break;\n case Command.ClosePath:\n if (!isNaN(sx)) {\n if (segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n break;\n }\n }\n return intersectionCount % 2 === 1;\n };\n return Path2D;\n}());\n\nvar __extends$2B = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction ScenePathChangeDetection(opts) {\n var _a = opts || {}, _b = _a.redraw, redraw = _b === void 0 ? RedrawType.MAJOR : _b, changeCb = _a.changeCb, convertor = _a.convertor;\n return SceneChangeDetection({ redraw: redraw, type: 'path', convertor: convertor, changeCb: changeCb });\n}\nvar Path = /** @class */ (function (_super) {\n __extends$2B(Path, _super);\n function Path() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Declare a path to retain for later rendering and hit testing\n * using custom Path2D class. Think of it as a TypeScript version\n * of the native Path2D (with some differences) that works in all browsers.\n */\n _this.path = new Path2D();\n /**\n * The path only has to be updated when certain attributes change.\n * For example, if transform attributes (such as `translationX`)\n * are changed, we don't have to update the path. The `dirtyPath` flag\n * is how we keep track if the path has to be updated or not.\n */\n _this._dirtyPath = true;\n return _this;\n }\n Object.defineProperty(Path.prototype, \"dirtyPath\", {\n get: function () {\n return this._dirtyPath;\n },\n set: function (value) {\n if (this._dirtyPath !== value) {\n this._dirtyPath = value;\n if (value) {\n this.markDirty(this, RedrawType.MAJOR);\n }\n }\n },\n enumerable: false,\n configurable: true\n });\n Path.prototype.checkPathDirty = function () {\n var _a, _b;\n if (this._dirtyPath) {\n return;\n }\n this.dirtyPath = this.path.isDirty() || ((_b = (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.isDirty()) !== null && _b !== void 0 ? _b : false);\n };\n Path.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n return this.path.closedPath && this.path.isPointInPath(point.x, point.y);\n };\n Path.prototype.isDirtyPath = function () {\n // Override point for more expensive dirty checks.\n return false;\n };\n Path.prototype.updatePath = function () {\n // Override point for subclasses.\n };\n Path.prototype.render = function (renderCtx) {\n var _a, _b;\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n if (this.dirtyPath || this.isDirtyPath()) {\n this.updatePath();\n this.dirtyPath = false;\n }\n if (this.clipPath) {\n ctx.save();\n if (this.clipMode === 'normal') {\n // Bound the shape rendered to the clipping path.\n this.clipPath.draw(ctx);\n ctx.clip();\n }\n this.path.draw(ctx);\n this.fillStroke(ctx);\n if (this.clipMode === 'punch-out') {\n // Bound the shape rendered to outside the clipping path.\n this.clipPath.draw(ctx);\n ctx.clip();\n // Fallback values, but practically these should never be used.\n var _c = (_a = this.computeBBox()) !== null && _a !== void 0 ? _a : {}, _d = _c.x, x = _d === void 0 ? -10000 : _d, _e = _c.y, y = _e === void 0 ? -10000 : _e, _f = _c.width, width = _f === void 0 ? 20000 : _f, _g = _c.height, height = _g === void 0 ? 20000 : _g;\n ctx.clearRect(x, y, width, height);\n }\n ctx.restore();\n }\n else {\n this.path.draw(ctx);\n this.fillStroke(ctx);\n }\n (_b = this.fillShadow) === null || _b === void 0 ? void 0 : _b.markClean();\n _super.prototype.render.call(this, renderCtx);\n };\n Path.className = 'Path';\n __decorate$1O([\n ScenePathChangeDetection()\n ], Path.prototype, \"clipPath\", void 0);\n __decorate$1O([\n ScenePathChangeDetection()\n ], Path.prototype, \"clipMode\", void 0);\n return Path;\n}(Shape));\n\nvar __extends$2A = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$t = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar Marker = /** @class */ (function (_super) {\n __extends$2A(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.x = 0;\n _this.y = 0;\n _this.size = 12;\n return _this;\n }\n Marker.prototype.computeBBox = function () {\n var _a = this, x = _a.x, y = _a.y, size = _a.size;\n var half = size / 2;\n return new BBox(x - half, y - half, size, size);\n };\n Marker.prototype.applyPath = function (s, moves) {\n var e_1, _a;\n var path = this.path;\n var _b = this, x = _b.x, y = _b.y;\n path.clear();\n try {\n for (var moves_1 = __values$t(moves), moves_1_1 = moves_1.next(); !moves_1_1.done; moves_1_1 = moves_1.next()) {\n var _c = moves_1_1.value, mx = _c.x, my = _c.y, t = _c.t;\n x += mx * s;\n y += my * s;\n if (t === 'move') {\n path.moveTo(x, y);\n }\n else {\n path.lineTo(x, y);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (moves_1_1 && !moves_1_1.done && (_a = moves_1.return)) _a.call(moves_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n path.closePath();\n };\n __decorate$1N([\n ScenePathChangeDetection()\n ], Marker.prototype, \"x\", void 0);\n __decorate$1N([\n ScenePathChangeDetection()\n ], Marker.prototype, \"y\", void 0);\n __decorate$1N([\n ScenePathChangeDetection({ convertor: Math.abs })\n ], Marker.prototype, \"size\", void 0);\n return Marker;\n}(Path));\n\nvar __extends$2z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Square = /** @class */ (function (_super) {\n __extends$2z(Square, _super);\n function Square() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Square.prototype.updatePath = function () {\n var _a = this, path = _a.path, x = _a.x, y = _a.y;\n var hs = this.size / 2;\n path.clear();\n path.moveTo(this.align(x - hs), this.align(y - hs));\n path.lineTo(this.align(x + hs), this.align(y - hs));\n path.lineTo(this.align(x + hs), this.align(y + hs));\n path.lineTo(this.align(x - hs), this.align(y + hs));\n path.closePath();\n };\n Square.className = 'Square';\n return Square;\n}(Marker));\n\nfunction ProxyPropertyOnWrite(childName, childProperty) {\n return addTransformToInstanceProperty(function (target, key, value) {\n target[childName][childProperty !== null && childProperty !== void 0 ? childProperty : key] = value;\n return value;\n });\n}\n/**\n * Allows side-effects to be triggered on property write.\n *\n * @param opts.newValue called when a new value is set - never called for undefined values.\n * @param opts.oldValue called with the old value before a new value is set - never called for\n * undefined values.\n * @param opts.changeValue called on any change to the value - always called.\n */\nfunction ActionOnSet(opts) {\n var newValueFn = opts.newValue, oldValueFn = opts.oldValue, changeValueFn = opts.changeValue;\n return addTransformToInstanceProperty(function (target, _, newValue, oldValue) {\n if (newValue !== oldValue) {\n if (oldValue !== undefined) {\n oldValueFn === null || oldValueFn === void 0 ? void 0 : oldValueFn.call(target, oldValue);\n }\n if (newValue !== undefined) {\n newValueFn === null || newValueFn === void 0 ? void 0 : newValueFn.call(target, newValue);\n }\n changeValueFn === null || changeValueFn === void 0 ? void 0 : changeValueFn.call(target, newValue, oldValue);\n }\n return newValue;\n });\n}\n\nvar __extends$2y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MarkerLabel = /** @class */ (function (_super) {\n __extends$2y(MarkerLabel, _super);\n function MarkerLabel() {\n var _this = _super.call(this, { name: 'markerLabelGroup' }) || this;\n _this.label = new Text();\n _this._marker = new Square();\n _this._markerSize = 15;\n _this._spacing = 8;\n var label = _this.label;\n label.textBaseline = 'middle';\n label.fontSize = 12;\n label.fontFamily = 'Verdana, sans-serif';\n label.fill = 'black';\n // For better looking vertical alignment of labels to markers.\n label.y = HdpiCanvas.has.textMetrics ? 1 : 0;\n _this.append([_this.marker, label]);\n _this.update();\n return _this;\n }\n Object.defineProperty(MarkerLabel.prototype, \"marker\", {\n get: function () {\n return this._marker;\n },\n set: function (value) {\n if (this._marker !== value) {\n this.removeChild(this._marker);\n this._marker = value;\n this.appendChild(value);\n this.update();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerSize\", {\n get: function () {\n return this._markerSize;\n },\n set: function (value) {\n if (this._markerSize !== value) {\n this._markerSize = value;\n this.update();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"spacing\", {\n get: function () {\n return this._spacing;\n },\n set: function (value) {\n if (this._spacing !== value) {\n this._spacing = value;\n this.update();\n }\n },\n enumerable: false,\n configurable: true\n });\n MarkerLabel.prototype.update = function () {\n var marker = this.marker;\n var markerSize = this.markerSize;\n marker.size = markerSize;\n this.label.x = markerSize / 2 + this.spacing;\n };\n MarkerLabel.prototype.render = function (renderCtx) {\n // Cannot override field Group.opacity with get/set pair, so\n // propagate opacity changes here.\n this.marker.opacity = this.opacity;\n this.label.opacity = this.opacity;\n _super.prototype.render.call(this, renderCtx);\n };\n MarkerLabel.className = 'MarkerLabel';\n __decorate$1M([\n ProxyPropertyOnWrite('label')\n ], MarkerLabel.prototype, \"text\", void 0);\n __decorate$1M([\n ProxyPropertyOnWrite('label')\n ], MarkerLabel.prototype, \"fontStyle\", void 0);\n __decorate$1M([\n ProxyPropertyOnWrite('label')\n ], MarkerLabel.prototype, \"fontWeight\", void 0);\n __decorate$1M([\n ProxyPropertyOnWrite('label')\n ], MarkerLabel.prototype, \"fontSize\", void 0);\n __decorate$1M([\n ProxyPropertyOnWrite('label')\n ], MarkerLabel.prototype, \"fontFamily\", void 0);\n __decorate$1M([\n ProxyPropertyOnWrite('label', 'fill')\n ], MarkerLabel.prototype, \"color\", void 0);\n __decorate$1M([\n ProxyPropertyOnWrite('marker', 'fill')\n ], MarkerLabel.prototype, \"markerFill\", void 0);\n __decorate$1M([\n ProxyPropertyOnWrite('marker', 'stroke')\n ], MarkerLabel.prototype, \"markerStroke\", void 0);\n __decorate$1M([\n ProxyPropertyOnWrite('marker', 'strokeWidth')\n ], MarkerLabel.prototype, \"markerStrokeWidth\", void 0);\n __decorate$1M([\n ProxyPropertyOnWrite('marker', 'fillOpacity')\n ], MarkerLabel.prototype, \"markerFillOpacity\", void 0);\n __decorate$1M([\n ProxyPropertyOnWrite('marker', 'strokeOpacity')\n ], MarkerLabel.prototype, \"markerStrokeOpacity\", void 0);\n return MarkerLabel;\n}(Group));\n\nvar __extends$2x = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Circle = /** @class */ (function (_super) {\n __extends$2x(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.updatePath = function () {\n var _a = this, x = _a.x, y = _a.y, path = _a.path, size = _a.size;\n var r = size / 2;\n path.clear();\n path.arc(x, y, r, 0, Math.PI * 2);\n path.closePath();\n };\n Circle.className = 'Circle';\n return Circle;\n}(Marker));\n\nvar __extends$2w = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Cross = /** @class */ (function (_super) {\n __extends$2w(Cross, _super);\n function Cross() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Cross.prototype.updatePath = function () {\n var s = this.size / 4.2;\n _super.prototype.applyPath.call(this, s, Cross.moves);\n };\n Cross.className = 'Cross';\n Cross.moves = [\n { x: -1, y: 0, t: 'move' },\n { x: -1, y: -1 },\n { x: +1, y: -1 },\n { x: +1, y: +1 },\n { x: +1, y: -1 },\n { x: +1, y: +1 },\n { x: -1, y: +1 },\n { x: +1, y: +1 },\n { x: -1, y: +1 },\n { x: -1, y: -1 },\n { x: -1, y: +1 },\n { x: -1, y: -1 },\n ];\n return Cross;\n}(Marker));\n\nvar __extends$2v = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Diamond = /** @class */ (function (_super) {\n __extends$2v(Diamond, _super);\n function Diamond() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Diamond.prototype.updatePath = function () {\n var s = this.size / 2;\n _super.prototype.applyPath.call(this, s, Diamond.moves);\n };\n Diamond.className = 'Diamond';\n Diamond.moves = [\n { x: 0, y: -1, t: 'move' },\n { x: +1, y: +1 },\n { x: -1, y: +1 },\n { x: -1, y: -1 },\n { x: +1, y: -1 },\n ];\n return Diamond;\n}(Marker));\n\nvar __extends$2u = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Heart = /** @class */ (function (_super) {\n __extends$2u(Heart, _super);\n function Heart() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Heart.prototype.rad = function (degree) {\n return (degree / 180) * Math.PI;\n };\n Heart.prototype.updatePath = function () {\n var _a = this, x = _a.x, path = _a.path, size = _a.size, rad = _a.rad;\n var r = size / 4;\n var y = this.y + r / 2;\n path.clear();\n path.arc(x - r, y - r, r, rad(130), rad(330));\n path.arc(x + r, y - r, r, rad(220), rad(50));\n path.lineTo(x, y + r);\n path.closePath();\n };\n Heart.className = 'Heart';\n return Heart;\n}(Marker));\n\nvar __extends$2t = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Plus = /** @class */ (function (_super) {\n __extends$2t(Plus, _super);\n function Plus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Plus.prototype.updatePath = function () {\n var s = this.size / 3;\n _super.prototype.applyPath.call(this, s, Plus.moves);\n };\n Plus.className = 'Plus';\n Plus.moves = [\n { x: -0.5, y: -0.5, t: 'move' },\n { x: 0, y: -1 },\n { x: +1, y: 0 },\n { x: 0, y: +1 },\n { x: +1, y: 0 },\n { x: 0, y: +1 },\n { x: -1, y: 0 },\n { x: 0, y: +1 },\n { x: -1, y: 0 },\n { x: 0, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: -1 },\n ];\n return Plus;\n}(Marker));\n\nvar __extends$2s = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Triangle = /** @class */ (function (_super) {\n __extends$2s(Triangle, _super);\n function Triangle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Triangle.prototype.updatePath = function () {\n var s = this.size * 1.1;\n _super.prototype.applyPath.call(this, s, Triangle.moves);\n };\n Triangle.className = 'Triangle';\n Triangle.moves = [\n { x: 0, y: -0.48, t: 'move' },\n { x: 0.5, y: 0.87 },\n { x: -1, y: 0 },\n ];\n return Triangle;\n}(Marker));\n\n// This function is in its own file because putting it into SeriesMarker makes the Legend\n// suddenly aware of the series (it's an agnostic component), and putting it into Marker\n// introduces circular dependencies.\nfunction getMarker$1(shape) {\n if (shape === void 0) { shape = Square; }\n if (typeof shape === 'string') {\n switch (shape) {\n case 'circle':\n return Circle;\n case 'cross':\n return Cross;\n case 'diamond':\n return Diamond;\n case 'heart':\n return Heart;\n case 'plus':\n return Plus;\n case 'triangle':\n return Triangle;\n default:\n return Square;\n }\n }\n if (typeof shape === 'function') {\n return shape;\n }\n return Square;\n}\n\n/** Types of chart-update, in pipeline execution order. */\nvar ChartUpdateType;\n(function (ChartUpdateType) {\n ChartUpdateType[ChartUpdateType[\"FULL\"] = 0] = \"FULL\";\n ChartUpdateType[ChartUpdateType[\"PROCESS_DATA\"] = 1] = \"PROCESS_DATA\";\n ChartUpdateType[ChartUpdateType[\"PERFORM_LAYOUT\"] = 2] = \"PERFORM_LAYOUT\";\n ChartUpdateType[ChartUpdateType[\"SERIES_UPDATE\"] = 3] = \"SERIES_UPDATE\";\n ChartUpdateType[ChartUpdateType[\"TOOLTIP_RECALCULATION\"] = 4] = \"TOOLTIP_RECALCULATION\";\n ChartUpdateType[ChartUpdateType[\"SCENE_RENDER\"] = 5] = \"SCENE_RENDER\";\n ChartUpdateType[ChartUpdateType[\"NONE\"] = 6] = \"NONE\";\n})(ChartUpdateType || (ChartUpdateType = {}));\n\nvar __values$s = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction gridLayout(_a) {\n var orientation = _a.orientation, bboxes = _a.bboxes, maxHeight = _a.maxHeight, maxWidth = _a.maxWidth, _b = _a.itemPaddingY, itemPaddingY = _b === void 0 ? 0 : _b, _c = _a.itemPaddingX, itemPaddingX = _c === void 0 ? 0 : _c, _d = _a.forceResult, forceResult = _d === void 0 ? false : _d;\n var horizontal = orientation === 'horizontal';\n var primary = {\n max: horizontal ? maxWidth : maxHeight,\n fn: horizontal ? function (b) { return b.width; } : function (b) { return b.height; },\n padding: horizontal ? itemPaddingX : itemPaddingY,\n };\n var secondary = {\n max: !horizontal ? maxWidth : maxHeight,\n fn: !horizontal ? function (b) { return b.width; } : function (b) { return b.height; },\n padding: !horizontal ? itemPaddingX : itemPaddingY,\n };\n var processedBBoxCount = 0;\n var rawPages = [];\n while (processedBBoxCount < bboxes.length) {\n var unprocessedBBoxes = bboxes.slice(processedBBoxCount);\n var result = processBBoxes(unprocessedBBoxes, processedBBoxCount, primary, secondary, forceResult);\n if (!result) {\n return;\n }\n processedBBoxCount += result.processedBBoxCount;\n rawPages.push(result.pageIndices);\n }\n return buildPages(rawPages, orientation, bboxes, itemPaddingY, itemPaddingX);\n}\nfunction processBBoxes(bboxes, indexOffset, primary, secondary, forceResult) {\n // If calculatePage() fails on the first guess, we could use the number of items that fit\n // as a good guess for the next iteration.\n var minGuess = 1;\n var startingGuess = estimateStartingGuess(bboxes, primary);\n if (startingGuess < minGuess) {\n if (!forceResult) {\n return undefined;\n }\n // Legend constraints too small! Display at least one row/column if forceResult is true\n startingGuess = minGuess;\n }\n for (var guess = startingGuess; guess >= minGuess; guess--) {\n var pageIndices = calculatePage(bboxes, indexOffset, guess, primary, secondary, forceResult);\n if (pageIndices == null && guess <= minGuess) {\n // Can't layout!\n return undefined;\n }\n if (pageIndices == null) {\n // Guess again!\n continue;\n }\n if (typeof pageIndices === 'number') {\n // calculatePage() suggested a better guess, use that if it's more than minGuess.\n if (pageIndices <= minGuess) {\n // Can't layout!\n return undefined;\n }\n guess = pageIndices < guess && pageIndices > minGuess ? pageIndices : guess;\n continue;\n }\n var processedBBoxCount = pageIndices.length * pageIndices[0].length; // this is an estimate, not all rows/columns will have the same length\n return { processedBBoxCount: processedBBoxCount, pageIndices: pageIndices };\n }\n}\nfunction calculatePage(bboxes, indexOffset, primaryCount, primary, secondary, forceResult) {\n var _a;\n var result = [];\n var sumSecondary = 0;\n var currentMaxSecondary = 0;\n var currentPrimaryIndices = [];\n var maxPrimaryValues = [];\n for (var bboxIndex = 0; bboxIndex < bboxes.length; bboxIndex++) {\n var primaryValueIdx = (bboxIndex + primaryCount) % primaryCount;\n if (primaryValueIdx === 0) {\n sumSecondary += currentMaxSecondary;\n currentMaxSecondary = 0;\n if (currentPrimaryIndices.length > 0) {\n result.push(currentPrimaryIndices);\n }\n currentPrimaryIndices = [];\n }\n var primaryValue = primary.fn(bboxes[bboxIndex]) + primary.padding;\n maxPrimaryValues[primaryValueIdx] = Math.max((_a = maxPrimaryValues[primaryValueIdx]) !== null && _a !== void 0 ? _a : 0, primaryValue);\n currentMaxSecondary = Math.max(currentMaxSecondary, secondary.fn(bboxes[bboxIndex]) + secondary.padding);\n var currentSecondaryDimension = sumSecondary + currentMaxSecondary;\n var returnResult = !forceResult || result.length > 0;\n if (currentSecondaryDimension > secondary.max && returnResult) {\n // Breached max secondary dimension size, return indices accumlated so far (but not in-progress row/column).\n currentPrimaryIndices = [];\n break;\n }\n var sumPrimary = maxPrimaryValues.reduce(function (sum, next) { return sum + next; }, 0);\n if (sumPrimary > primary.max && !forceResult) {\n // Breached max main dimension size.\n if (maxPrimaryValues.length < primaryCount) {\n // Feedback as guess for next iteration if we're on the first round still.\n return maxPrimaryValues.length;\n }\n return undefined;\n }\n currentPrimaryIndices.push(bboxIndex + indexOffset);\n }\n if (currentPrimaryIndices.length > 0) {\n result.push(currentPrimaryIndices);\n }\n return result.length > 0 ? result : undefined;\n}\nfunction buildPages(rawPages, orientation, bboxes, itemPaddingY, itemPaddingX) {\n var maxPageWidth = 0;\n var maxPageHeight = 0;\n var pages = rawPages.map(function (indices) {\n if (orientation === 'horizontal') {\n indices = transpose(indices);\n }\n var endIndex = 0;\n var columns = indices.map(function (colIndices) {\n var colBBoxes = colIndices.map(function (bboxIndex) {\n endIndex = Math.max(bboxIndex, endIndex);\n return bboxes[bboxIndex];\n });\n var columnHeight = 0;\n var columnWidth = 0;\n colBBoxes.forEach(function (bbox) {\n columnHeight += bbox.height + itemPaddingY;\n columnWidth = Math.max(columnWidth, bbox.width + itemPaddingX);\n });\n return {\n indices: colIndices,\n bboxes: colBBoxes,\n columnHeight: columnHeight,\n columnWidth: columnWidth,\n };\n });\n var pageWidth = 0;\n var pageHeight = 0;\n columns.forEach(function (column) {\n pageWidth += column.columnWidth;\n pageHeight = Math.max(pageHeight, column.columnHeight);\n });\n maxPageWidth = Math.max(pageWidth, maxPageWidth);\n maxPageHeight = Math.max(pageHeight, maxPageHeight);\n return {\n columns: columns,\n startIndex: indices[0][0],\n endIndex: endIndex,\n pageWidth: pageWidth,\n pageHeight: pageHeight,\n };\n });\n return { pages: pages, maxPageWidth: maxPageWidth, maxPageHeight: maxPageHeight };\n}\nfunction transpose(data) {\n var e_1, _a;\n var result = [];\n try {\n for (var _b = __values$s(data[0]), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _ = _c.value;\n result.push([]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n data.forEach(function (innerData, dataIdx) {\n innerData.forEach(function (item, itemIdx) {\n result[itemIdx][dataIdx] = item;\n });\n });\n return result;\n}\nfunction estimateStartingGuess(bboxes, primary) {\n var n = bboxes.length;\n var primarySum = 0;\n for (var bboxIndex = 0; bboxIndex < n; bboxIndex++) {\n primarySum += primary.fn(bboxes[bboxIndex]) + primary.padding;\n if (primarySum > primary.max) {\n var ratio = n / bboxIndex;\n if (ratio < 2) {\n return Math.ceil(n / 2);\n }\n return bboxIndex;\n }\n }\n return n;\n}\n\nvar __decorate$1L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationLabel = /** @class */ (function () {\n function PaginationLabel() {\n this.color = 'black';\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n }\n __decorate$1L([\n Validate(COLOR_STRING)\n ], PaginationLabel.prototype, \"color\", void 0);\n __decorate$1L([\n Validate(OPT_FONT_STYLE)\n ], PaginationLabel.prototype, \"fontStyle\", void 0);\n __decorate$1L([\n Validate(OPT_FONT_WEIGHT)\n ], PaginationLabel.prototype, \"fontWeight\", void 0);\n __decorate$1L([\n Validate(NUMBER(0))\n ], PaginationLabel.prototype, \"fontSize\", void 0);\n __decorate$1L([\n Validate(STRING)\n ], PaginationLabel.prototype, \"fontFamily\", void 0);\n return PaginationLabel;\n}());\nvar PaginationMarkerStyle = /** @class */ (function () {\n function PaginationMarkerStyle() {\n this.size = 15;\n this.fill = undefined;\n this.fillOpacity = undefined;\n this.stroke = undefined;\n this.strokeWidth = 1;\n this.strokeOpacity = 1;\n }\n __decorate$1L([\n Validate(NUMBER(0))\n ], PaginationMarkerStyle.prototype, \"size\", void 0);\n __decorate$1L([\n Validate(OPT_COLOR_STRING)\n ], PaginationMarkerStyle.prototype, \"fill\", void 0);\n __decorate$1L([\n Validate(OPT_NUMBER(0, 1))\n ], PaginationMarkerStyle.prototype, \"fillOpacity\", void 0);\n __decorate$1L([\n Validate(OPT_COLOR_STRING)\n ], PaginationMarkerStyle.prototype, \"stroke\", void 0);\n __decorate$1L([\n Validate(NUMBER(0))\n ], PaginationMarkerStyle.prototype, \"strokeWidth\", void 0);\n __decorate$1L([\n Validate(NUMBER(0, 1))\n ], PaginationMarkerStyle.prototype, \"strokeOpacity\", void 0);\n return PaginationMarkerStyle;\n}());\nvar PaginationMarker = /** @class */ (function () {\n function PaginationMarker() {\n this.size = 15;\n this._shape = Triangle;\n /**\n * Inner padding between a pagination button and the label.\n */\n this.padding = 8;\n }\n Object.defineProperty(PaginationMarker.prototype, \"shape\", {\n get: function () {\n return this._shape;\n },\n set: function (value) {\n var _a;\n this._shape = value;\n (_a = this.parent) === null || _a === void 0 ? void 0 : _a.onMarkerShapeChange();\n },\n enumerable: false,\n configurable: true\n });\n __decorate$1L([\n Validate(NUMBER(0))\n ], PaginationMarker.prototype, \"size\", void 0);\n __decorate$1L([\n Validate(NUMBER(0))\n ], PaginationMarker.prototype, \"padding\", void 0);\n return PaginationMarker;\n}());\nvar Pagination = /** @class */ (function () {\n function Pagination(chartUpdateCallback, pageUpdateCallback, interactionManager, cursorManager) {\n var _this = this;\n this.chartUpdateCallback = chartUpdateCallback;\n this.pageUpdateCallback = pageUpdateCallback;\n this.interactionManager = interactionManager;\n this.cursorManager = cursorManager;\n this.id = createId$1(this);\n this.group = new Group({ name: 'pagination' });\n this.labelNode = new Text();\n this.marker = new PaginationMarker();\n this.activeStyle = new PaginationMarkerStyle();\n this.inactiveStyle = new PaginationMarkerStyle();\n this.highlightStyle = new PaginationMarkerStyle();\n this.label = new PaginationLabel();\n this.totalPages = 0;\n this.currentPage = 0;\n this.nextButtonDisabled = false;\n this.previousButtonDisabled = false;\n this._visible = true;\n this._enabled = true;\n this._orientation = 'vertical';\n this._nextButton = new Triangle();\n this._previousButton = new Triangle();\n var labelNode = this.labelNode;\n labelNode.textBaseline = 'middle';\n labelNode.fontSize = 12;\n labelNode.fontFamily = 'Verdana, sans-serif';\n labelNode.fill = 'black';\n labelNode.y = HdpiCanvas.has.textMetrics ? 1 : 0;\n this.group.append([this.nextButton, this.previousButton, labelNode]);\n this.interactionManager.addListener('click', function (event) { return _this.onPaginationClick(event); });\n this.interactionManager.addListener('hover', function (event) { return _this.onPaginationMouseMove(event); });\n this.marker.parent = this;\n this.update();\n this.updateMarkers();\n }\n Object.defineProperty(Pagination.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n this._visible = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Pagination.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n this._enabled = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Pagination.prototype.updateGroupVisibility = function () {\n this.group.visible = this.enabled && this.visible;\n };\n Object.defineProperty(Pagination.prototype, \"orientation\", {\n get: function () {\n return this._orientation;\n },\n set: function (value) {\n this._orientation = value;\n switch (value) {\n case 'horizontal': {\n this.previousButton.rotation = -Math.PI / 2;\n this.nextButton.rotation = Math.PI / 2;\n break;\n }\n case 'vertical':\n default: {\n this.previousButton.rotation = 0;\n this.nextButton.rotation = Math.PI;\n }\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Pagination.prototype, \"translationX\", {\n get: function () {\n return this.group.translationX;\n },\n set: function (value) {\n this.group.translationX = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Pagination.prototype, \"translationY\", {\n get: function () {\n return this.group.translationY;\n },\n set: function (value) {\n this.group.translationY = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Pagination.prototype, \"nextButton\", {\n get: function () {\n return this._nextButton;\n },\n set: function (value) {\n if (this._nextButton !== value) {\n this.group.removeChild(this._nextButton);\n this._nextButton = value;\n this.group.appendChild(value);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Pagination.prototype, \"previousButton\", {\n get: function () {\n return this._previousButton;\n },\n set: function (value) {\n if (this._previousButton !== value) {\n this.group.removeChild(this._previousButton);\n this._previousButton = value;\n this.group.appendChild(value);\n }\n },\n enumerable: false,\n configurable: true\n });\n Pagination.prototype.update = function () {\n this.updateLabel();\n this.updatePositions();\n this.enableOrDisableButtons();\n };\n Pagination.prototype.updatePositions = function () {\n this.updateLabelPosition();\n this.updateNextButtonPosition();\n };\n Pagination.prototype.updateLabelPosition = function () {\n var _a = this.marker, markerSize = _a.size, markerPadding = _a.padding;\n this.nextButton.size = markerSize;\n this.previousButton.size = markerSize;\n this.labelNode.x = markerSize / 2 + markerPadding;\n };\n Pagination.prototype.updateNextButtonPosition = function () {\n var labelBBox = this.labelNode.computeBBox();\n this.nextButton.translationX = labelBBox.x + labelBBox.width + this.marker.size / 2 + this.marker.padding;\n };\n Pagination.prototype.updateLabel = function () {\n var _a = this, currentPage = _a.currentPage, pages = _a.totalPages, labelNode = _a.labelNode, _b = _a.label, color = _b.color, fontStyle = _b.fontStyle, fontWeight = _b.fontWeight, fontSize = _b.fontSize, fontFamily = _b.fontFamily;\n labelNode.text = currentPage + 1 + \" / \" + pages;\n labelNode.fill = color;\n labelNode.fontStyle = fontStyle;\n labelNode.fontWeight = fontWeight;\n labelNode.fontSize = fontSize;\n labelNode.fontFamily = fontFamily;\n };\n Pagination.prototype.updateMarkers = function () {\n var _a = this, nextButton = _a.nextButton, previousButton = _a.previousButton, nextButtonDisabled = _a.nextButtonDisabled, previousButtonDisabled = _a.previousButtonDisabled, activeStyle = _a.activeStyle, inactiveStyle = _a.inactiveStyle, highlightStyle = _a.highlightStyle, highlightActive = _a.highlightActive;\n var buttonStyle = function (button, disabled) {\n if (disabled) {\n return inactiveStyle;\n }\n else if (button === highlightActive) {\n return highlightStyle;\n }\n return activeStyle;\n };\n this.updateMarker(nextButton, buttonStyle('next', nextButtonDisabled));\n this.updateMarker(previousButton, buttonStyle('previous', previousButtonDisabled));\n };\n Pagination.prototype.updateMarker = function (marker, style) {\n var _a;\n var size = this.marker.size;\n marker.size = size;\n marker.fill = style.fill;\n marker.fillOpacity = (_a = style.fillOpacity) !== null && _a !== void 0 ? _a : 1;\n marker.stroke = style.stroke;\n marker.strokeWidth = style.strokeWidth;\n marker.strokeOpacity = style.strokeOpacity;\n };\n Pagination.prototype.enableOrDisableButtons = function () {\n var _a = this, currentPage = _a.currentPage, totalPages = _a.totalPages;\n var zeroPagesToDisplay = totalPages === 0;\n var onLastPage = currentPage === totalPages - 1;\n var onFirstPage = currentPage === 0;\n this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n this.previousButtonDisabled = onFirstPage || zeroPagesToDisplay;\n };\n Pagination.prototype.nextButtonContainsPoint = function (offsetX, offsetY) {\n return !this.nextButtonDisabled && this.nextButton.containsPoint(offsetX, offsetY);\n };\n Pagination.prototype.previousButtonContainsPoint = function (offsetX, offsetY) {\n return !this.previousButtonDisabled && this.previousButton.containsPoint(offsetX, offsetY);\n };\n Pagination.prototype.onPaginationClick = function (event) {\n var offsetX = event.offsetX, offsetY = event.offsetY;\n if (this.nextButtonContainsPoint(offsetX, offsetY)) {\n this.incrementPage();\n this.onPaginationChanged();\n event.consume();\n }\n else if (this.previousButtonContainsPoint(offsetX, offsetY)) {\n this.decrementPage();\n this.onPaginationChanged();\n event.consume();\n }\n };\n Pagination.prototype.onPaginationMouseMove = function (event) {\n var offsetX = event.offsetX, offsetY = event.offsetY;\n if (this.nextButtonContainsPoint(offsetX, offsetY)) {\n this.cursorManager.updateCursor(this.id, 'pointer');\n this.highlightActive = 'next';\n }\n else if (this.previousButtonContainsPoint(offsetX, offsetY)) {\n this.cursorManager.updateCursor(this.id, 'pointer');\n this.highlightActive = 'previous';\n }\n else {\n this.cursorManager.updateCursor(this.id);\n this.highlightActive = undefined;\n }\n this.updateMarkers();\n this.chartUpdateCallback(ChartUpdateType.SCENE_RENDER);\n };\n Pagination.prototype.onPaginationChanged = function () {\n this.pageUpdateCallback(this.currentPage);\n };\n Pagination.prototype.incrementPage = function () {\n this.currentPage = Math.min(this.currentPage + 1, this.totalPages - 1);\n };\n Pagination.prototype.decrementPage = function () {\n this.currentPage = Math.max(this.currentPage - 1, 0);\n };\n Pagination.prototype.onMarkerShapeChange = function () {\n var Marker = getMarker$1(this.marker.shape || Triangle);\n this.previousButton = new Marker();\n this.nextButton = new Marker();\n this.updatePositions();\n this.updateMarkers();\n this.chartUpdateCallback(ChartUpdateType.SCENE_RENDER);\n };\n Pagination.prototype.attachPagination = function (node) {\n node.append(this.group);\n };\n Pagination.prototype.computeBBox = function () {\n return this.group.computeBBox();\n };\n Pagination.className = 'Pagination';\n return Pagination;\n}());\n\nvar __decorate$1K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$U = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$w = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$U(arguments[i]));\n return ar;\n};\nvar __values$r = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar ORIENTATIONS = ['horizontal', 'vertical'];\nvar OPT_ORIENTATION = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v) { return ORIENTATIONS.includes(v); }); }, \"expecting an orientation keyword such as 'horizontal' or 'vertical'\");\nvar LegendLabel = /** @class */ (function () {\n function LegendLabel() {\n this.maxLength = undefined;\n this.color = 'black';\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n this.formatter = undefined;\n }\n LegendLabel.prototype.getFont = function () {\n return getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n };\n __decorate$1K([\n Validate(OPT_NUMBER(0))\n ], LegendLabel.prototype, \"maxLength\", void 0);\n __decorate$1K([\n Validate(COLOR_STRING)\n ], LegendLabel.prototype, \"color\", void 0);\n __decorate$1K([\n Validate(OPT_FONT_STYLE)\n ], LegendLabel.prototype, \"fontStyle\", void 0);\n __decorate$1K([\n Validate(OPT_FONT_WEIGHT)\n ], LegendLabel.prototype, \"fontWeight\", void 0);\n __decorate$1K([\n Validate(NUMBER(0))\n ], LegendLabel.prototype, \"fontSize\", void 0);\n __decorate$1K([\n Validate(STRING)\n ], LegendLabel.prototype, \"fontFamily\", void 0);\n __decorate$1K([\n Validate(OPT_FUNCTION)\n ], LegendLabel.prototype, \"formatter\", void 0);\n return LegendLabel;\n}());\nvar LegendMarker = /** @class */ (function () {\n function LegendMarker() {\n this.size = 15;\n /**\n * If the marker type is set, the legend will always use that marker type for all its items,\n * regardless of the type that comes from the `data`.\n */\n this._shape = undefined;\n /**\n * Padding between the marker and the label within each legend item.\n */\n this.padding = 8;\n this.strokeWidth = 1;\n }\n Object.defineProperty(LegendMarker.prototype, \"shape\", {\n get: function () {\n return this._shape;\n },\n set: function (value) {\n var _a;\n this._shape = value;\n (_a = this.parent) === null || _a === void 0 ? void 0 : _a.onMarkerShapeChange();\n },\n enumerable: false,\n configurable: true\n });\n __decorate$1K([\n Validate(NUMBER(0))\n ], LegendMarker.prototype, \"size\", void 0);\n __decorate$1K([\n Validate(NUMBER(0))\n ], LegendMarker.prototype, \"padding\", void 0);\n __decorate$1K([\n Validate(NUMBER(0))\n ], LegendMarker.prototype, \"strokeWidth\", void 0);\n return LegendMarker;\n}());\nvar LegendItem = /** @class */ (function () {\n function LegendItem() {\n this.marker = new LegendMarker();\n this.label = new LegendLabel();\n /** Used to constrain the width of legend items. */\n this.maxWidth = undefined;\n /**\n * The legend uses grid layout for its items, occupying as few columns as possible when positioned to left or right,\n * and as few rows as possible when positioned to top or bottom. This config specifies the amount of horizontal\n * padding between legend items.\n */\n this.paddingX = 16;\n /**\n * The legend uses grid layout for its items, occupying as few columns as possible when positioned to left or right,\n * and as few rows as possible when positioned to top or bottom. This config specifies the amount of vertical\n * padding between legend items.\n */\n this.paddingY = 8;\n this.toggleSeriesVisible = true;\n }\n __decorate$1K([\n Validate(OPT_NUMBER(0))\n ], LegendItem.prototype, \"maxWidth\", void 0);\n __decorate$1K([\n Validate(NUMBER(0))\n ], LegendItem.prototype, \"paddingX\", void 0);\n __decorate$1K([\n Validate(NUMBER(0))\n ], LegendItem.prototype, \"paddingY\", void 0);\n __decorate$1K([\n Validate(BOOLEAN)\n ], LegendItem.prototype, \"toggleSeriesVisible\", void 0);\n return LegendItem;\n}());\nvar LegendListeners = /** @class */ (function () {\n function LegendListeners() {\n this.legendItemClick = undefined;\n this.legendItemDoubleClick = undefined;\n }\n __decorate$1K([\n Validate(OPT_FUNCTION)\n ], LegendListeners.prototype, \"legendItemClick\", void 0);\n return LegendListeners;\n}());\nvar Legend = /** @class */ (function () {\n function Legend(chart, interactionManager, cursorManager, highlightManager, tooltipManager, layoutService) {\n var _a;\n var _this = this;\n this.chart = chart;\n this.interactionManager = interactionManager;\n this.cursorManager = cursorManager;\n this.highlightManager = highlightManager;\n this.tooltipManager = tooltipManager;\n this.layoutService = layoutService;\n this.id = createId$1(this);\n this.group = new Group({ name: 'legend', layer: true, zIndex: Layers.LEGEND_ZINDEX });\n this.itemSelection = Selection.select(this.group, MarkerLabel);\n this.oldSize = [0, 0];\n this.pages = [];\n this.maxPageSize = [0, 0];\n /** Item index to track on re-pagination, so current page updates appropriately. */\n this.paginationTrackingIndex = 0;\n this.item = new LegendItem();\n this.listeners = new LegendListeners();\n this.truncatedItems = new Set();\n this._data = [];\n this._enabled = true;\n this.position = 'right';\n /** Used to constrain the width of the legend. */\n this.maxWidth = undefined;\n /** Used to constrain the height of the legend. */\n this.maxHeight = undefined;\n /** Reverse the display order of legend items if `true`. */\n this.reverseOrder = undefined;\n this.destroyFns = [];\n /**\n * Spacing between the legend and the edge of the chart's element.\n */\n this.spacing = 20;\n this.characterWidths = new Map();\n this.size = [0, 0];\n this._visible = true;\n this.item.marker.parent = this;\n this.pagination = new Pagination(function (type) { return _this.chart.update(type); }, function (page) { return _this.updatePageNumber(page); }, this.interactionManager, this.cursorManager);\n this.pagination.attachPagination(this.group);\n this.item.marker.parent = this;\n var interactionListeners = [\n this.interactionManager.addListener('click', function (e) { return _this.checkLegendClick(e); }),\n this.interactionManager.addListener('dblclick', function (e) { return _this.checkLegendDoubleClick(e); }),\n this.interactionManager.addListener('hover', function (e) { return _this.handleLegendMouseMove(e); }),\n ];\n var layoutListeners = [\n this.layoutService.addListener('start-layout', function (e) { return _this.positionLegend(e.shrinkRect); }),\n ];\n (_a = this.destroyFns).push.apply(_a, __spread$w(interactionListeners.map(function (s) { return function () { return _this.interactionManager.removeListener(s); }; }), layoutListeners.map(function (s) { return function () { return _this.layoutService.removeListener(s); }; })));\n }\n Object.defineProperty(Legend.prototype, \"translationX\", {\n get: function () {\n return this.group.translationX;\n },\n set: function (value) {\n this.group.translationX = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"translationY\", {\n get: function () {\n return this.group.translationY;\n },\n set: function (value) {\n this.group.translationY = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (value) {\n this._data = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n this._enabled = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Legend.prototype.getOrientation = function () {\n if (this.orientation !== undefined) {\n return this.orientation;\n }\n switch (this.position) {\n case 'right':\n case 'left':\n return 'vertical';\n case 'bottom':\n case 'top':\n return 'horizontal';\n }\n };\n Legend.prototype.destroy = function () {\n this.destroyFns.forEach(function (f) { return f(); });\n };\n Legend.prototype.onMarkerShapeChange = function () {\n this.itemSelection.clear();\n this.group.markDirty(this.group, RedrawType.MINOR);\n };\n Legend.prototype.getCharacterWidths = function (font) {\n var characterWidths = this.characterWidths;\n if (characterWidths.has(font)) {\n return characterWidths.get(font);\n }\n var cw = {\n '...': HdpiCanvas.getTextSize('...', font).width,\n };\n characterWidths.set(font, cw);\n return cw;\n };\n Object.defineProperty(Legend.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n this._visible = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Legend.prototype.updateGroupVisibility = function () {\n this.group.visible = this.enabled && this.visible && this.data.length > 0;\n };\n Legend.prototype.attachLegend = function (node) {\n node.append(this.group);\n };\n /**\n * The method is given the desired size of the legend, which only serves as a hint.\n * The vertically oriented legend will take as much horizontal space as needed, but will\n * respect the height constraints, and the horizontal legend will take as much vertical\n * space as needed in an attempt not to exceed the given width.\n * After the layout is done, the {@link size} will contain the actual size of the legend.\n * If the actual size is not the same as the previous actual size, the legend will fire\n * the 'layoutChange' event to communicate that another layout is needed, and the above\n * process should be repeated.\n * @param width\n * @param height\n */\n Legend.prototype.performLayout = function (width, height) {\n var _this = this;\n var _a = this.item, paddingX = _a.paddingX, paddingY = _a.paddingY, label = _a.label, maxWidth = _a.maxWidth, _b = _a.marker, markerSize = _b.size, markerPadding = _b.padding, markerShape = _b.shape, _c = _a.label, _d = _c.maxLength, maxLength = _d === void 0 ? Infinity : _d, fontStyle = _c.fontStyle, fontWeight = _c.fontWeight, fontSize = _c.fontSize, fontFamily = _c.fontFamily;\n var data = __spread$w(this.data);\n if (this.reverseOrder) {\n data.reverse();\n }\n this.itemSelection.update(data);\n // Update properties that affect the size of the legend items and measure them.\n var bboxes = [];\n var font = label.getFont();\n var itemMaxWidthPercentage = 0.8;\n var maxItemWidth = maxWidth !== null && maxWidth !== void 0 ? maxWidth : width * itemMaxWidthPercentage;\n var paddedMarkerWidth = markerSize + markerPadding + paddingX;\n this.itemSelection.each(function (markerLabel, datum) {\n var _a;\n var Marker = getMarker$1(markerShape || datum.marker.shape);\n if (!(markerLabel.marker && markerLabel.marker instanceof Marker)) {\n markerLabel.marker = new Marker();\n }\n markerLabel.markerSize = markerSize;\n markerLabel.spacing = markerPadding;\n markerLabel.fontStyle = fontStyle;\n markerLabel.fontWeight = fontWeight;\n markerLabel.fontSize = fontSize;\n markerLabel.fontFamily = fontFamily;\n var id = datum.itemId || datum.id;\n var text = ((_a = datum.label.text) !== null && _a !== void 0 ? _a : '<unknown>').replace(/\\r?\\n/g, ' ');\n markerLabel.text = _this.truncate(text, maxLength, maxItemWidth, paddedMarkerWidth, font, id);\n bboxes.push(markerLabel.computeBBox());\n });\n width = Math.max(1, width);\n height = Math.max(1, height);\n if (!isFinite(width)) {\n return false;\n }\n var size = this.size;\n var oldSize = this.oldSize;\n size[0] = width;\n size[1] = height;\n if (size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n oldSize[0] = size[0];\n oldSize[1] = size[1];\n }\n var _e = this.updatePagination(bboxes, width, height), pages = _e.pages, maxPageHeight = _e.maxPageHeight, maxPageWidth = _e.maxPageWidth;\n this.pages = pages;\n this.maxPageSize = [maxPageWidth - paddingX, maxPageHeight - paddingY];\n var pageNumber = this.pagination.currentPage;\n var page = this.pages[pageNumber];\n if (this.pages.length < 1 || !page) {\n this.visible = false;\n return;\n }\n this.visible = true;\n // Position legend items\n this.updatePositions(pageNumber);\n // Update legend item properties that don't affect the layout.\n this.update();\n };\n Legend.prototype.truncate = function (text, maxCharLength, maxItemWidth, paddedMarkerWidth, font, id) {\n var e_1, _a;\n var ellipsis = \"...\";\n var textChars = text.split('');\n var addEllipsis = false;\n if (text.length > maxCharLength) {\n text = \"\" + text.substring(0, maxCharLength);\n addEllipsis = true;\n }\n var labelWidth = Math.floor(paddedMarkerWidth + HdpiCanvas.getTextSize(text, font).width);\n if (labelWidth > maxItemWidth) {\n var truncatedText = '';\n var characterWidths = this.getCharacterWidths(font);\n var cumulativeWidth = paddedMarkerWidth + characterWidths[ellipsis];\n try {\n for (var textChars_1 = __values$r(textChars), textChars_1_1 = textChars_1.next(); !textChars_1_1.done; textChars_1_1 = textChars_1.next()) {\n var char = textChars_1_1.value;\n if (!characterWidths[char]) {\n characterWidths[char] = HdpiCanvas.getTextSize(char, font).width;\n }\n cumulativeWidth += characterWidths[char];\n if (cumulativeWidth > maxItemWidth) {\n break;\n }\n truncatedText += char;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (textChars_1_1 && !textChars_1_1.done && (_a = textChars_1.return)) _a.call(textChars_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n text = truncatedText;\n addEllipsis = true;\n }\n if (addEllipsis) {\n text += ellipsis;\n this.truncatedItems.add(id);\n }\n else {\n this.truncatedItems.delete(id);\n }\n return text;\n };\n Legend.prototype.updatePagination = function (bboxes, width, height) {\n var orientation = this.getOrientation();\n var trackingIndex = Math.min(this.paginationTrackingIndex, bboxes.length);\n this.pagination.orientation = orientation;\n this.pagination.translationX = 0;\n this.pagination.translationY = 0;\n var _a = this.calculatePagination(bboxes, width, height), pages = _a.pages, maxPageHeight = _a.maxPageHeight, maxPageWidth = _a.maxPageWidth, paginationBBox = _a.paginationBBox, paginationVertical = _a.paginationVertical;\n var newCurrentPage = pages.findIndex(function (p) { return p.endIndex >= trackingIndex; });\n this.pagination.currentPage = Math.min(Math.max(newCurrentPage, 0), pages.length - 1);\n var _b = this.item, itemPaddingX = _b.paddingX, itemPaddingY = _b.paddingY;\n var paginationComponentPadding = 8;\n var legendItemsWidth = maxPageWidth - itemPaddingX;\n var legendItemsHeight = maxPageHeight - itemPaddingY;\n var paginationX = 0;\n var paginationY = -paginationBBox.y - this.item.marker.size / 2;\n if (paginationVertical) {\n paginationY += legendItemsHeight + paginationComponentPadding;\n }\n else {\n paginationX += -paginationBBox.x + legendItemsWidth + paginationComponentPadding;\n paginationY += (legendItemsHeight - paginationBBox.height) / 2;\n }\n this.pagination.translationX = paginationX;\n this.pagination.translationY = paginationY;\n this.pagination.update();\n this.pagination.updateMarkers();\n return {\n maxPageHeight: maxPageHeight,\n maxPageWidth: maxPageWidth,\n pages: pages,\n };\n };\n Legend.prototype.calculatePagination = function (bboxes, width, height) {\n var _a, _b, _c;\n var _d = this.item, itemPaddingX = _d.paddingX, itemPaddingY = _d.paddingY;\n var orientation = this.getOrientation();\n var paginationVertical = ['left', 'right'].includes(this.position);\n var paginationBBox = this.pagination.computeBBox();\n var lastPassPaginationBBox = new BBox(0, 0, 0, 0);\n var pages = [];\n var maxPageWidth = 0;\n var maxPageHeight = 0;\n var count = 0;\n var stableOutput = function (lastPassPaginationBBox) {\n var width = lastPassPaginationBBox.width, height = lastPassPaginationBBox.height;\n return width === paginationBBox.width && height === paginationBBox.height;\n };\n var forceResult = this.maxWidth !== undefined || this.maxHeight !== undefined;\n do {\n if (count++ > 10) {\n Logger.warn('unable to find stable legend layout.');\n break;\n }\n paginationBBox = lastPassPaginationBBox;\n var maxWidth = width - (paginationVertical ? 0 : paginationBBox.width);\n var maxHeight = height - (paginationVertical ? paginationBBox.height : 0);\n var layout = gridLayout({\n orientation: orientation,\n bboxes: bboxes,\n maxHeight: maxHeight,\n maxWidth: maxWidth,\n itemPaddingY: itemPaddingY,\n itemPaddingX: itemPaddingX,\n forceResult: forceResult,\n });\n pages = (_a = layout === null || layout === void 0 ? void 0 : layout.pages) !== null && _a !== void 0 ? _a : [];\n maxPageWidth = (_b = layout === null || layout === void 0 ? void 0 : layout.maxPageWidth) !== null && _b !== void 0 ? _b : 0;\n maxPageHeight = (_c = layout === null || layout === void 0 ? void 0 : layout.maxPageHeight) !== null && _c !== void 0 ? _c : 0;\n var totalPages = pages.length;\n this.pagination.visible = totalPages > 1;\n this.pagination.totalPages = totalPages;\n this.pagination.update();\n lastPassPaginationBBox = this.pagination.computeBBox();\n if (!this.pagination.visible) {\n break;\n }\n } while (!stableOutput(lastPassPaginationBBox));\n return { maxPageWidth: maxPageWidth, maxPageHeight: maxPageHeight, pages: pages, paginationBBox: paginationBBox, paginationVertical: paginationVertical };\n };\n Legend.prototype.updatePositions = function (pageNumber) {\n if (pageNumber === void 0) { pageNumber = 0; }\n var _a = this, paddingY = _a.item.paddingY, itemSelection = _a.itemSelection, pages = _a.pages;\n if (pages.length < 1 || !pages[pageNumber]) {\n return;\n }\n var _b = pages[pageNumber], columns = _b.columns, visibleStart = _b.startIndex, visibleEnd = _b.endIndex;\n // Position legend items using the layout computed above.\n var x = 0;\n var y = 0;\n var columnCount = columns.length;\n var rowCount = columns[0].indices.length;\n var horizontal = this.getOrientation() === 'horizontal';\n var itemHeight = columns[0].bboxes[0].height + paddingY;\n var rowSumColumnWidths = [];\n itemSelection.each(function (markerLabel, _, i) {\n var _a, _b;\n if (i < visibleStart || i > visibleEnd) {\n markerLabel.visible = false;\n return;\n }\n var pageIndex = i - visibleStart;\n var columnIndex = 0;\n var rowIndex = 0;\n if (horizontal) {\n columnIndex = pageIndex % columnCount;\n rowIndex = Math.floor(pageIndex / columnCount);\n }\n else {\n columnIndex = Math.floor(pageIndex / rowCount);\n rowIndex = pageIndex % rowCount;\n }\n markerLabel.visible = true;\n var column = columns[columnIndex];\n if (!column) {\n return;\n }\n y = itemHeight * rowIndex;\n x = (_a = rowSumColumnWidths[rowIndex]) !== null && _a !== void 0 ? _a : 0;\n rowSumColumnWidths[rowIndex] = ((_b = rowSumColumnWidths[rowIndex]) !== null && _b !== void 0 ? _b : 0) + column.columnWidth;\n // Round off for pixel grid alignment to work properly.\n markerLabel.translationX = Math.floor(x);\n markerLabel.translationY = Math.floor(y);\n });\n };\n Legend.prototype.updatePageNumber = function (pageNumber) {\n var pages = this.pages;\n // Track an item on the page in re-pagination cases (e.g. resize).\n var _a = pages[pageNumber], startIndex = _a.startIndex, endIndex = _a.endIndex;\n if (startIndex === 0) {\n // Stay on first page on pagination update.\n this.paginationTrackingIndex = 0;\n }\n else if (pageNumber === pages.length - 1) {\n // Stay on last page on pagination update.\n this.paginationTrackingIndex = endIndex;\n }\n else {\n // Track the middle item on the page).\n this.paginationTrackingIndex = Math.floor((startIndex + endIndex) / 2);\n }\n this.pagination.update();\n this.pagination.updateMarkers();\n this.updatePositions(pageNumber);\n this.chart.update(ChartUpdateType.SCENE_RENDER);\n };\n Legend.prototype.update = function () {\n var _a = this.item, strokeWidth = _a.marker.strokeWidth, color = _a.label.color;\n this.itemSelection.each(function (markerLabel, datum) {\n var marker = datum.marker;\n markerLabel.markerFill = marker.fill;\n markerLabel.markerStroke = marker.stroke;\n markerLabel.markerStrokeWidth = strokeWidth;\n markerLabel.markerFillOpacity = marker.fillOpacity;\n markerLabel.markerStrokeOpacity = marker.strokeOpacity;\n markerLabel.opacity = datum.enabled ? 1 : 0.5;\n markerLabel.color = color;\n });\n };\n Legend.prototype.getDatumForPoint = function (x, y) {\n var e_2, _a;\n var visibleChildBBoxes = [];\n var closestLeftTop = { dist: Infinity, datum: undefined };\n try {\n for (var _b = __values$r(this.group.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n if (!child.visible)\n continue;\n if (!(child instanceof MarkerLabel))\n continue;\n var childBBox = child.computeBBox();\n childBBox.grow(this.item.paddingX / 2, 'horizontal');\n childBBox.grow(this.item.paddingY / 2, 'vertical');\n if (childBBox.containsPoint(x, y)) {\n return child.datum;\n }\n var distX = x - childBBox.x - this.item.paddingX / 2;\n var distY = y - childBBox.y - this.item.paddingY / 2;\n var dist = Math.pow(distX, 2) + Math.pow(distY, 2);\n var toTheLeftTop = distX >= 0 && distY >= 0;\n if (toTheLeftTop && dist < closestLeftTop.dist) {\n closestLeftTop.dist = dist;\n closestLeftTop.datum = child.datum;\n }\n visibleChildBBoxes.push(childBBox);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var pageBBox = BBox.merge(visibleChildBBoxes);\n if (!pageBBox.containsPoint(x, y)) {\n // We're not in-between legend items.\n return undefined;\n }\n // Fallback to returning closest match to the left/up.\n return closestLeftTop.datum;\n };\n Legend.prototype.computeBBox = function () {\n return this.group.computeBBox();\n };\n Legend.prototype.computePagedBBox = function () {\n var actualBBox = this.group.computeBBox();\n if (this.pages.length <= 1) {\n return actualBBox;\n }\n var _a = __read$U(this.maxPageSize, 2), maxPageWidth = _a[0], maxPageHeight = _a[1];\n actualBBox.height = Math.max(maxPageHeight, actualBBox.height);\n actualBBox.width = Math.max(maxPageWidth, actualBBox.width);\n return actualBBox;\n };\n Legend.prototype.checkLegendClick = function (event) {\n var _a = this, legendItemClick = _a.listeners.legendItemClick, chart = _a.chart, highlightManager = _a.highlightManager, toggleSeriesVisible = _a.item.toggleSeriesVisible;\n var datum = this.getDatumForPoint(event.offsetX, event.offsetY);\n if (!datum) {\n return;\n }\n var id = datum.id, itemId = datum.itemId, enabled = datum.enabled;\n var series = chart.series.find(function (s) { return s.id === id; });\n if (!series) {\n return;\n }\n event.consume();\n var newEnabled = enabled;\n if (toggleSeriesVisible) {\n newEnabled = !enabled;\n chart.series.forEach(function (s) {\n if (s.id === series.id) {\n s.toggleSeriesItem(itemId, newEnabled);\n }\n else {\n s.toggleOtherSeriesItems(series, datum, newEnabled);\n }\n });\n }\n if (!newEnabled) {\n highlightManager.updateHighlight(this.id);\n }\n else {\n highlightManager.updateHighlight(this.id, {\n series: series,\n itemId: itemId,\n datum: undefined,\n });\n }\n this.chart.update(ChartUpdateType.PROCESS_DATA, { forceNodeDataRefresh: true });\n legendItemClick === null || legendItemClick === void 0 ? void 0 : legendItemClick({ type: 'click', enabled: newEnabled, itemId: itemId, seriesId: series.id });\n };\n Legend.prototype.checkLegendDoubleClick = function (event) {\n var _a, _b;\n var _c = this, legendItemDoubleClick = _c.listeners.legendItemDoubleClick, chart = _c.chart, toggleSeriesVisible = _c.item.toggleSeriesVisible;\n // Integrated charts do not handle double click behaviour correctly due to multiple instances of the\n // chart being created. See https://ag-grid.atlassian.net/browse/RTI-1381\n if (chart.mode === 'integrated') {\n return;\n }\n var datum = this.getDatumForPoint(event.offsetX, event.offsetY);\n if (!datum) {\n return;\n }\n var id = datum.id, itemId = datum.itemId, seriesId = datum.seriesId;\n var series = chart.series.find(function (s) { return s.id === id; });\n if (!series) {\n return;\n }\n event.consume();\n if (toggleSeriesVisible) {\n var legendData = chart.series.reduce(function (ls, s) { return __spread$w(ls, s.getLegendData()); }, []);\n var visibleItemsCount = legendData.filter(function (d) { return d.enabled; }).length;\n var clickedItem = legendData.find(function (d) { return d.itemId === itemId && d.seriesId === seriesId; });\n var seriesItemCounts = legendData.reduce(function (acc, d) {\n var _a;\n var _b;\n (_a = acc[_b = d.seriesId]) !== null && _a !== void 0 ? _a : (acc[_b] = 0);\n acc[d.seriesId]++;\n return acc;\n }, {});\n var seriesItemEnabledCounts = legendData.reduce(function (acc, d) {\n var _a;\n var _b;\n if (!d.enabled)\n return acc;\n (_a = acc[_b = d.seriesId]) !== null && _a !== void 0 ? _a : (acc[_b] = 0);\n acc[d.seriesId]++;\n return acc;\n }, {});\n var eachSeriesHasSingleItem_1 = Object.values(seriesItemCounts).filter(function (c) { return c > 1; }).length === 0;\n var singleEnabledInEachSeries = Object.values(seriesItemEnabledCounts).filter(function (count) { return count > 1; }).length === 0;\n var singleSelectedWasNotClicked_1 = visibleItemsCount === 1 && ((_a = clickedItem === null || clickedItem === void 0 ? void 0 : clickedItem.enabled) !== null && _a !== void 0 ? _a : false);\n var singleEnabledInEachSeriesWasNotClicked_1 = singleEnabledInEachSeries && ((_b = clickedItem === null || clickedItem === void 0 ? void 0 : clickedItem.enabled) !== null && _b !== void 0 ? _b : false);\n chart.series.forEach(function (s) {\n var legendData = s.getLegendData();\n legendData.forEach(function (d) {\n var wasClicked = d.itemId === itemId && d.seriesId === seriesId;\n var newEnabled = wasClicked ||\n (eachSeriesHasSingleItem_1 && singleSelectedWasNotClicked_1) ||\n (!eachSeriesHasSingleItem_1 && singleEnabledInEachSeriesWasNotClicked_1);\n s.toggleSeriesItem(d.itemId, newEnabled);\n });\n if (s.id !== series.id) {\n s.toggleOtherSeriesItems(series, datum, undefined, singleEnabledInEachSeriesWasNotClicked_1);\n }\n });\n }\n this.chart.update(ChartUpdateType.PROCESS_DATA, { forceNodeDataRefresh: true });\n legendItemDoubleClick === null || legendItemDoubleClick === void 0 ? void 0 : legendItemDoubleClick({ type: 'dblclick', enabled: true, itemId: itemId, seriesId: series.id });\n };\n Legend.prototype.handleLegendMouseMove = function (event) {\n var _a = this, enabled = _a.enabled, toggleSeriesVisible = _a.item.toggleSeriesVisible, listeners = _a.listeners;\n if (!enabled) {\n return;\n }\n var legendBBox = this.computeBBox();\n var pageX = event.pageX, pageY = event.pageY, offsetX = event.offsetX, offsetY = event.offsetY;\n var pointerInsideLegend = this.group.visible && legendBBox.containsPoint(offsetX, offsetY);\n if (!pointerInsideLegend) {\n this.cursorManager.updateCursor(this.id);\n this.highlightManager.updateHighlight(this.id);\n this.tooltipManager.removeTooltip(this.id);\n return;\n }\n // Prevent other handlers from consuming this event if it's generated inside the legend\n // boundaries.\n event.consume();\n var datum = this.getDatumForPoint(offsetX, offsetY);\n var pointerOverLegendDatum = pointerInsideLegend && datum !== undefined;\n if (!pointerOverLegendDatum) {\n this.cursorManager.updateCursor(this.id);\n this.highlightManager.updateHighlight(this.id);\n return;\n }\n var series = datum ? this.chart.series.find(function (series) { return series.id === (datum === null || datum === void 0 ? void 0 : datum.id); }) : undefined;\n if (datum && this.truncatedItems.has(datum.itemId || datum.id)) {\n this.tooltipManager.updateTooltip(this.id, { pageX: pageX, pageY: pageY, offsetX: offsetX, offsetY: offsetY, event: event }, toTooltipHtml$1({ content: datum.label.text }));\n }\n else {\n this.tooltipManager.removeTooltip(this.id);\n }\n if (toggleSeriesVisible || listeners.legendItemClick != null) {\n this.cursorManager.updateCursor(this.id, 'pointer');\n }\n if ((datum === null || datum === void 0 ? void 0 : datum.enabled) && series) {\n this.highlightManager.updateHighlight(this.id, {\n series: series,\n itemId: datum === null || datum === void 0 ? void 0 : datum.itemId,\n datum: undefined,\n });\n }\n else {\n this.highlightManager.updateHighlight(this.id);\n }\n };\n Legend.prototype.positionLegend = function (shrinkRect) {\n var _this = this;\n var newShrinkRect = shrinkRect.clone();\n if (!this.enabled || !this.data.length) {\n return { shrinkRect: newShrinkRect };\n }\n var _a = __read$U(this.calculateLegendDimensions(shrinkRect), 2), legendWidth = _a[0], legendHeight = _a[1];\n var translationX = 0;\n var translationY = 0;\n this.translationX = 0;\n this.translationY = 0;\n this.performLayout(legendWidth, legendHeight);\n var legendBBox = this.computePagedBBox();\n var calculateTranslationPerpendicularDimension = function () {\n switch (_this.position) {\n case 'top':\n return 0;\n case 'bottom':\n return shrinkRect.height - legendBBox.height;\n case 'left':\n return 0;\n case 'right':\n default:\n return shrinkRect.width - legendBBox.width;\n }\n };\n if (this.visible) {\n switch (this.position) {\n case 'top':\n case 'bottom':\n translationX = (shrinkRect.width - legendBBox.width) / 2;\n translationY = calculateTranslationPerpendicularDimension();\n newShrinkRect.shrink(legendBBox.height, this.position);\n break;\n case 'left':\n case 'right':\n default:\n translationX = calculateTranslationPerpendicularDimension();\n translationY = (shrinkRect.height - legendBBox.height) / 2;\n newShrinkRect.shrink(legendBBox.width, this.position);\n }\n // Round off for pixel grid alignment to work properly.\n this.translationX = Math.floor(-legendBBox.x + shrinkRect.x + translationX);\n this.translationY = Math.floor(-legendBBox.y + shrinkRect.y + translationY);\n }\n if (this.visible && this.enabled && this.data.length) {\n var legendPadding = this.spacing;\n newShrinkRect.shrink(legendPadding, this.position);\n var legendPositionedBBox = legendBBox.clone();\n legendPositionedBBox.x += this.translationX;\n legendPositionedBBox.y += this.translationY;\n this.tooltipManager.updateExclusiveRect(this.id, legendPositionedBBox);\n }\n else {\n this.tooltipManager.updateExclusiveRect(this.id);\n }\n return { shrinkRect: newShrinkRect };\n };\n Legend.prototype.calculateLegendDimensions = function (shrinkRect) {\n var width = shrinkRect.width, height = shrinkRect.height;\n var aspectRatio = width / height;\n var maxCoefficient = 0.5;\n var minHeightCoefficient = 0.2;\n var minWidthCoefficient = 0.25;\n var legendWidth = 0;\n var legendHeight = 0;\n switch (this.position) {\n case 'top':\n case 'bottom':\n // A horizontal legend should take maximum between 20 to 50 percent of the chart height if height is larger than width\n // and maximum 20 percent of the chart height if height is smaller than width.\n var heightCoefficient = aspectRatio < 1\n ? Math.min(maxCoefficient, minHeightCoefficient * (1 / aspectRatio))\n : minHeightCoefficient;\n legendWidth = this.maxWidth ? Math.min(this.maxWidth, width) : width;\n legendHeight = this.maxHeight\n ? Math.min(this.maxHeight, height)\n : Math.round(height * heightCoefficient);\n break;\n case 'left':\n case 'right':\n default:\n // A vertical legend should take maximum between 25 to 50 percent of the chart width if width is larger than height\n // and maximum 25 percent of the chart width if width is smaller than height.\n var widthCoefficient = aspectRatio > 1 ? Math.min(maxCoefficient, minWidthCoefficient * aspectRatio) : minWidthCoefficient;\n legendWidth = this.maxWidth ? Math.min(this.maxWidth, width) : Math.round(width * widthCoefficient);\n legendHeight = this.maxHeight ? Math.min(this.maxHeight, height) : height;\n }\n return [legendWidth, legendHeight];\n };\n Legend.className = 'Legend';\n __decorate$1K([\n Validate(BOOLEAN)\n ], Legend.prototype, \"_enabled\", void 0);\n __decorate$1K([\n Validate(POSITION)\n ], Legend.prototype, \"position\", void 0);\n __decorate$1K([\n Validate(OPT_NUMBER(0))\n ], Legend.prototype, \"maxWidth\", void 0);\n __decorate$1K([\n Validate(OPT_NUMBER(0))\n ], Legend.prototype, \"maxHeight\", void 0);\n __decorate$1K([\n Validate(OPT_BOOLEAN)\n ], Legend.prototype, \"reverseOrder\", void 0);\n __decorate$1K([\n Validate(OPT_ORIENTATION)\n ], Legend.prototype, \"orientation\", void 0);\n __decorate$1K([\n Validate(NUMBER(0))\n ], Legend.prototype, \"spacing\", void 0);\n return Legend;\n}());\n\nvar __values$q = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar SizeMonitor = /** @class */ (function () {\n function SizeMonitor() {\n }\n SizeMonitor.init = function () {\n var _this = this;\n var NativeResizeObserver = window.ResizeObserver;\n if (NativeResizeObserver) {\n this.resizeObserver = new NativeResizeObserver(function (entries) {\n var e_1, _a;\n try {\n for (var entries_1 = __values$q(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {\n var entry = entries_1_1.value;\n var _b = entry.contentRect, width = _b.width, height = _b.height;\n _this.checkSize(_this.elements.get(entry.target), entry.target, width, height);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n else {\n // polyfill (more reliable even in browsers that support ResizeObserver)\n var step = function () {\n _this.elements.forEach(function (entry, element) {\n _this.checkClientSize(element, entry);\n });\n };\n window.setInterval(step, 100);\n }\n this.ready = true;\n };\n SizeMonitor.checkSize = function (entry, element, width, height) {\n if (entry) {\n if (!entry.size || width !== entry.size.width || height !== entry.size.height) {\n entry.size = { width: width, height: height };\n entry.cb(entry.size, element);\n }\n }\n };\n // Only a single callback is supported.\n SizeMonitor.observe = function (element, cb) {\n if (!this.ready) {\n this.init();\n }\n this.unobserve(element);\n if (this.resizeObserver) {\n this.resizeObserver.observe(element);\n }\n this.elements.set(element, { cb: cb });\n // Ensure first size callback happens synchronously.\n this.checkClientSize(element, { cb: cb });\n };\n SizeMonitor.unobserve = function (element) {\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(element);\n }\n this.elements.delete(element);\n };\n SizeMonitor.checkClientSize = function (element, entry) {\n var width = element.clientWidth ? element.clientWidth : 0;\n var height = element.clientHeight ? element.clientHeight : 0;\n this.checkSize(entry, element, width, height);\n };\n SizeMonitor.elements = new Map();\n SizeMonitor.ready = false;\n return SizeMonitor;\n}());\n\nfunction circleRectOverlap(c, x, y, w, h) {\n // Find closest horizontal and vertical edges.\n var edgeX = c.x < x ? x : c.x > x + w ? x + w : c.x;\n var edgeY = c.y < y ? y : c.y > y + h ? y + h : c.y;\n // Find distance to closest edges.\n var dx = c.x - edgeX;\n var dy = c.y - edgeY;\n var d = Math.sqrt(dx * dx + dy * dy);\n return d <= c.size * 0.5;\n}\nfunction rectRectOverlap(r1, x2, y2, w2, h2) {\n var xOverlap = r1.x + r1.width > x2 && r1.x < x2 + w2;\n var yOverlap = r1.y + r1.height > y2 && r1.y < y2 + h2;\n return xOverlap && yOverlap;\n}\nfunction rectContainsRect(r1, r2x, r2y, r2w, r2h) {\n return r2x + r2w < r1.x + r1.width && r2x > r1.x && r2y > r1.y && r2y + r2h < r1.y + r1.height;\n}\nfunction isPointLabelDatum(x) {\n return x != null && typeof x.point === 'object' && typeof x.label === 'object';\n}\n/**\n * @param data Points and labels for one or more series. The order of series determines label placement precedence.\n * @param bounds Bounds to fit the labels into. If a label can't be fully contained, it doesn't fit.\n * @returns Placed labels for the given series (in the given order).\n */\nfunction placeLabels(data, bounds, padding) {\n if (padding === void 0) { padding = 5; }\n var result = [];\n data = data.map(function (d) { return d.slice().sort(function (a, b) { return b.point.size - a.point.size; }); });\n for (var j = 0; j < data.length; j++) {\n var labels = (result[j] = []);\n var datum = data[j];\n if (!(datum && datum.length && datum[0].label)) {\n continue;\n }\n var _loop_1 = function (i, ln) {\n var d = datum[i];\n var l = d.label;\n var r = d.point.size * 0.5;\n var x = d.point.x - l.width * 0.5;\n var y = d.point.y - r - l.height - padding;\n var width = l.width, height = l.height;\n var withinBounds = !bounds || rectContainsRect(bounds, x, y, width, height);\n if (!withinBounds) {\n return \"continue\";\n }\n var overlapPoints = data.some(function (datum) {\n return datum.some(function (d) { return circleRectOverlap(d.point, x, y, width, height); });\n });\n if (overlapPoints) {\n return \"continue\";\n }\n var overlapLabels = result.some(function (labels) { return labels.some(function (l) { return rectRectOverlap(l, x, y, width, height); }); });\n if (overlapLabels) {\n return \"continue\";\n }\n labels.push({\n index: i,\n text: l.text,\n x: x,\n y: y,\n width: width,\n height: height,\n datum: d,\n });\n };\n for (var i = 0, ln = datum.length; i < ln; i++) {\n _loop_1(i, ln);\n }\n }\n return result;\n}\nfunction axisLabelsOverlap(data, padding) {\n var result = [];\n var _loop_2 = function (i) {\n var datum = data[i];\n var _a = datum.point, x = _a.x, y = _a.y, text = datum.label.text;\n var _b = datum.label, width = _b.width, height = _b.height;\n width += padding !== null && padding !== void 0 ? padding : 0;\n height += padding !== null && padding !== void 0 ? padding : 0;\n var overlapLabels = result.some(function (l) {\n var overlap = rectRectOverlap(l, x, y, width, height);\n return overlap;\n });\n if (overlapLabels) {\n return { value: true };\n }\n result.push({\n index: i,\n text: text,\n x: x,\n y: y,\n width: width,\n height: height,\n datum: datum,\n });\n };\n for (var i = 0; i < data.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return false;\n}\n\nvar __awaiter$e = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$e = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/**\n * Wrap a function in debouncing trigger function. A requestAnimationFrame() is scheduled\n * after the first schedule() call, and subsequent schedule() calls will be ignored until the\n * animation callback executes.\n */\nfunction debouncedAnimationFrame(cb) {\n return buildScheduler(function (cb) { return requestAnimationFrame(cb); }, cb);\n}\nfunction debouncedCallback(cb) {\n return buildScheduler(function (cb) { return setTimeout(cb, 0); }, cb);\n}\nfunction buildScheduler(scheduleFn, cb) {\n var scheduleCount = 0;\n var promiseRunning = false;\n var awaitingPromise;\n var awaitingDone;\n var busy = function () {\n return promiseRunning;\n };\n var done = function () {\n promiseRunning = false;\n awaitingDone === null || awaitingDone === void 0 ? void 0 : awaitingDone();\n awaitingDone = undefined;\n awaitingPromise = undefined;\n if (scheduleCount > 0) {\n scheduleFn(scheduleCb);\n }\n };\n var scheduleCb = function () {\n var count = scheduleCount;\n scheduleCount = 0;\n promiseRunning = true;\n var maybePromise = cb({ count: count });\n if (!maybePromise) {\n done();\n return;\n }\n maybePromise.then(done).catch(done);\n };\n return {\n schedule: function () {\n if (scheduleCount === 0 && !busy()) {\n scheduleFn(scheduleCb);\n }\n scheduleCount++;\n },\n await: function () {\n return __awaiter$e(this, void 0, void 0, function () {\n return __generator$e(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!busy()) {\n return [2 /*return*/];\n }\n if (!awaitingPromise) {\n awaitingPromise = new Promise(function (resolve) {\n awaitingDone = resolve;\n });\n }\n _a.label = 1;\n case 1:\n if (!busy()) return [3 /*break*/, 3];\n return [4 /*yield*/, awaitingPromise];\n case 2:\n _a.sent();\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/];\n }\n });\n });\n },\n };\n}\n\nvar __extends$2r = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MARKER_SHAPES = ['circle', 'cross', 'diamond', 'heart', 'plus', 'square', 'triangle'];\nvar MARKER_SHAPE = predicateWithMessage(function (v) { return MARKER_SHAPES.includes(v) || Object.getPrototypeOf(v) === Marker; }, \"expecting a marker shape keyword such as 'circle', 'diamond' or 'square' or an object extending the Marker class\");\nvar SeriesMarker = /** @class */ (function (_super) {\n __extends$2r(SeriesMarker, _super);\n function SeriesMarker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.enabled = true;\n /**\n * One of the predefined marker names, or a marker constructor function (for user-defined markers).\n * A series will create one marker instance per data point.\n */\n _this.shape = Circle;\n _this.size = 6;\n /**\n * In case a series has the `sizeKey` set, the `sizeKey` values along with the `size` and `maxSize` configs\n * will be used to determine the size of the marker. All values will be mapped to a marker size\n * within the `[size, maxSize]` range, where the largest values will correspond to the `maxSize`\n * and the lowest to the `size`.\n */\n _this.maxSize = 30;\n _this.domain = undefined;\n _this.fill = undefined;\n _this.stroke = undefined;\n _this.strokeWidth = 1;\n _this.fillOpacity = undefined;\n _this.strokeOpacity = undefined;\n return _this;\n }\n __decorate$1J([\n Validate(BOOLEAN),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"enabled\", void 0);\n __decorate$1J([\n Validate(MARKER_SHAPE),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"shape\", void 0);\n __decorate$1J([\n Validate(NUMBER(0)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"size\", void 0);\n __decorate$1J([\n Validate(NUMBER(0)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"maxSize\", void 0);\n __decorate$1J([\n Validate(OPT_NUMBER_ARRAY),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"domain\", void 0);\n __decorate$1J([\n Validate(OPT_COLOR_STRING),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"fill\", void 0);\n __decorate$1J([\n Validate(OPT_COLOR_STRING),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"stroke\", void 0);\n __decorate$1J([\n Validate(OPT_NUMBER(0)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"strokeWidth\", void 0);\n __decorate$1J([\n Validate(OPT_NUMBER(0, 1)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"fillOpacity\", void 0);\n __decorate$1J([\n Validate(OPT_NUMBER(0, 1)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"strokeOpacity\", void 0);\n return SeriesMarker;\n}(ChangeDetectable));\n\nvar __read$T = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar ContinuousScale = /** @class */ (function () {\n function ContinuousScale(domain, range) {\n this.domain = domain;\n this.range = range;\n this.nice = false;\n this.tickCount = ContinuousScale.defaultTickCount;\n this.minTickCount = 0;\n this.maxTickCount = Infinity;\n this.niceDomain = null;\n this.strictClampByDefault = false;\n this.cache = null;\n this.cacheProps = ['domain', 'range', 'nice', 'tickCount', 'minTickCount', 'maxTickCount'];\n }\n ContinuousScale.prototype.transform = function (x) {\n return x;\n };\n ContinuousScale.prototype.transformInvert = function (x) {\n return x;\n };\n ContinuousScale.prototype.fromDomain = function (d) {\n if (typeof d === 'number') {\n return d;\n }\n else if (d instanceof Date) {\n return d.getTime();\n }\n return NaN;\n };\n ContinuousScale.prototype.getDomain = function () {\n if (this.nice) {\n this.refresh();\n if (this.niceDomain) {\n return this.niceDomain;\n }\n }\n return this.domain;\n };\n ContinuousScale.prototype.convert = function (x, params) {\n var _this = this;\n var _a;\n if (!this.domain || this.domain.length < 2) {\n return NaN;\n }\n this.refresh();\n var strict = (_a = params === null || params === void 0 ? void 0 : params.strict) !== null && _a !== void 0 ? _a : this.strictClampByDefault;\n var domain = this.getDomain().map(function (d) { return _this.transform(d); });\n var _b = __read$T(domain, 2), d0 = _b[0], d1 = _b[1];\n var range = this.range;\n var _c = __read$T(range, 2), r0 = _c[0], r1 = _c[1];\n x = this.transform(x);\n if (x < d0) {\n return strict ? NaN : r0;\n }\n else if (x > d1) {\n return strict ? NaN : r1;\n }\n if (d0 === d1) {\n return (r0 + r1) / 2;\n }\n else if (x === d0) {\n return r0;\n }\n else if (x === d1) {\n return r1;\n }\n return (r0 + ((this.fromDomain(x) - this.fromDomain(d0)) / (this.fromDomain(d1) - this.fromDomain(d0))) * (r1 - r0));\n };\n ContinuousScale.prototype.invert = function (x) {\n var _this = this;\n this.refresh();\n var domain = this.getDomain().map(function (d) { return _this.transform(d); });\n var _a = __read$T(domain, 2), d0 = _a[0], d1 = _a[1];\n var range = this.range;\n var _b = __read$T(range, 2), r0 = _b[0], r1 = _b[1];\n var isReversed = r0 > r1;\n var rMin = isReversed ? r1 : r0;\n var rMax = isReversed ? r0 : r1;\n var d;\n if (x < rMin) {\n return isReversed ? d1 : d0;\n }\n else if (x > rMax) {\n return isReversed ? d0 : d1;\n }\n else if (r0 === r1) {\n d = this.toDomain((this.fromDomain(d0) + this.fromDomain(d1)) / 2);\n }\n else {\n d = this.toDomain(this.fromDomain(d0) + ((x - r0) / (r1 - r0)) * (this.fromDomain(d1) - this.fromDomain(d0)));\n }\n return this.transformInvert(d);\n };\n ContinuousScale.prototype.didChange = function () {\n var _this = this;\n var cache = this.cache;\n var didChange = !cache || this.cacheProps.some(function (p) { return _this[p] !== cache[p]; });\n if (didChange) {\n this.cache = {};\n this.cacheProps.forEach(function (p) { return (_this.cache[p] = _this[p]); });\n return true;\n }\n return false;\n };\n ContinuousScale.prototype.refresh = function () {\n if (this.didChange()) {\n this.update();\n }\n };\n ContinuousScale.prototype.isDenseInterval = function (_a) {\n var start = _a.start, stop = _a.stop, interval = _a.interval, count = _a.count;\n var range = this.range;\n var domain = stop - start;\n var min = Math.min(range[0], range[1]);\n var max = Math.max(range[0], range[1]);\n var availableRange = max - min;\n var step = typeof interval === 'number' ? interval : 1;\n count !== null && count !== void 0 ? count : (count = domain / step);\n if (count >= availableRange) {\n Logger.warn(\"the configured tick interval, \" + JSON.stringify(interval) + \", results in more than 1 tick per pixel, ignoring. Supply a larger tick interval or omit this configuration.\");\n return true;\n }\n return false;\n };\n ContinuousScale.defaultTickCount = 5;\n ContinuousScale.defaultMaxTickCount = 6;\n return ContinuousScale;\n}());\n\nvar __read$S = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nfunction clamp(x, min, max) {\n return Math.max(min, Math.min(max, x));\n}\n/**\n * Maps a discrete domain to a continuous numeric range.\n */\nvar BandScale$5 = /** @class */ (function () {\n function BandScale() {\n this.type = 'band';\n this.cache = null;\n this.cacheProps = ['_domain', 'range', '_paddingInner', '_paddingOuter', 'round', 'interval'];\n /**\n * Maps datum to its index in the {@link domain} array.\n * Used to check for duplicate datums (not allowed).\n */\n this.index = new Map();\n /**\n * The output range values for datum at each index.\n */\n this.ordinalRange = [];\n /**\n * Contains unique datums only. Since `{}` is used in place of `Map`\n * for IE11 compatibility, the datums are converted `toString` before\n * the uniqueness check.\n */\n this._domain = [];\n this.range = [0, 1];\n this._bandwidth = 1;\n this._rawBandwidth = 1;\n /**\n * The ratio of the range that is reserved for space between bands.\n */\n this._paddingInner = 0;\n /**\n * The ratio of the range that is reserved for space before the first\n * and after the last band.\n */\n this._paddingOuter = 0;\n this.round = false;\n }\n BandScale.prototype.didChange = function () {\n var _this = this;\n var cache = this.cache;\n var didChange = !cache || this.cacheProps.some(function (p) { return _this[p] !== cache[p]; });\n if (didChange) {\n this.cache = {};\n this.cacheProps.forEach(function (p) { return (_this.cache[p] = _this[p]); });\n return true;\n }\n return false;\n };\n BandScale.prototype.refresh = function () {\n if (this.didChange()) {\n this.update();\n }\n };\n Object.defineProperty(BandScale.prototype, \"domain\", {\n get: function () {\n return this._domain;\n },\n set: function (values) {\n var domain = [];\n this.index = new Map();\n var index = this.index;\n // In case one wants to have duplicate domain values, for example, two 'Italy' categories,\n // one should use objects rather than strings for domain values like so:\n // { toString: () => 'Italy' }\n // { toString: () => 'Italy' }\n values.forEach(function (value) {\n if (index.get(value) === undefined) {\n index.set(value, domain.push(value) - 1);\n }\n });\n this._domain = domain;\n },\n enumerable: false,\n configurable: true\n });\n BandScale.prototype.ticks = function () {\n this.refresh();\n var _a = this.interval, interval = _a === void 0 ? 1 : _a;\n var step = Math.abs(Math.round(interval));\n return this._domain.filter(function (_, i) { return i % step === 0; });\n };\n BandScale.prototype.convert = function (d) {\n this.refresh();\n var i = this.index.get(d);\n if (i === undefined) {\n return NaN;\n }\n var r = this.ordinalRange[i];\n if (r === undefined) {\n return NaN;\n }\n return r;\n };\n BandScale.prototype.invert = function (position) {\n this.refresh();\n var index = this.ordinalRange.findIndex(function (p) { return p === position; });\n return this.domain[index];\n };\n Object.defineProperty(BandScale.prototype, \"bandwidth\", {\n get: function () {\n this.refresh();\n return this._bandwidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"rawBandwidth\", {\n get: function () {\n this.refresh();\n return this._rawBandwidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"padding\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n value = clamp(value, 0, 1);\n this._paddingInner = value;\n this._paddingOuter = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingInner\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n this._paddingInner = clamp(value, 0, 1);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingOuter\", {\n get: function () {\n return this._paddingOuter;\n },\n set: function (value) {\n this._paddingOuter = clamp(value, 0, 1);\n },\n enumerable: false,\n configurable: true\n });\n BandScale.prototype.update = function () {\n var count = this._domain.length;\n if (count === 0) {\n return;\n }\n var round = this.round;\n var paddingInner = this._paddingInner;\n var paddingOuter = this._paddingOuter;\n var _a = __read$S(this.range, 2), r0 = _a[0], r1 = _a[1];\n var width = r1 - r0;\n var rawStep = width / Math.max(1, count + 2 * paddingOuter - paddingInner);\n var step = round ? Math.floor(rawStep) : rawStep;\n var fullBandWidth = step * (count - paddingInner);\n var x0 = r0 + (width - fullBandWidth) / 2;\n var start = round ? Math.round(x0) : x0;\n var bw = step * (1 - paddingInner);\n var bandwidth = round ? Math.round(bw) : bw;\n var rawBandwidth = rawStep * (1 - paddingInner);\n var values = [];\n for (var i = 0; i < count; i++) {\n values.push(start + step * i);\n }\n this._bandwidth = bandwidth;\n this._rawBandwidth = rawBandwidth;\n this.ordinalRange = values;\n };\n return BandScale;\n}());\n\nvar __extends$2q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Line = /** @class */ (function (_super) {\n __extends$2q(Line, _super);\n function Line() {\n var _this = _super.call(this) || this;\n _this.x1 = 0;\n _this.y1 = 0;\n _this.x2 = 0;\n _this.y2 = 0;\n _this.restoreOwnStyles();\n return _this;\n }\n Line.prototype.computeBBox = function () {\n return new BBox(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n };\n Line.prototype.isPointInPath = function (_x, _y) {\n return false;\n };\n Line.prototype.render = function (renderCtx) {\n var _a;\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n var x1 = this.x1;\n var y1 = this.y1;\n var x2 = this.x2;\n var y2 = this.y2;\n // Align to the pixel grid if the line is strictly vertical\n // or horizontal (but not both, i.e. a dot).\n if (x1 === x2) {\n var x = Math.round(x1) + (Math.floor(this.strokeWidth) % 2) / 2;\n x1 = x;\n x2 = x;\n }\n else if (y1 === y2) {\n var y = Math.round(y1) + (Math.floor(this.strokeWidth) % 2) / 2;\n y1 = y;\n y2 = y;\n }\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n this.fillStroke(ctx);\n (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.markClean();\n _super.prototype.render.call(this, renderCtx);\n };\n Line.className = 'Line';\n Line.defaultStyles = Object.assign({}, Shape.defaultStyles, {\n fill: undefined,\n strokeWidth: 1,\n });\n __decorate$1I([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Line.prototype, \"x1\", void 0);\n __decorate$1I([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Line.prototype, \"y1\", void 0);\n __decorate$1I([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Line.prototype, \"x2\", void 0);\n __decorate$1I([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Line.prototype, \"y2\", void 0);\n return Line;\n}(Shape));\n\nfunction isEqual$2(a, b, epsilon) {\n if (epsilon === void 0) { epsilon = 1e-10; }\n return Math.abs(a - b) < epsilon;\n}\n/**\n * `Number.toFixed(n)` always formats a number so that it has `n` digits after the decimal point.\n * For example, `Number(0.00003427).toFixed(2)` returns `0.00`.\n * That's not very helpful, because all the meaningful information is lost.\n * In this case we would want the formatted value to have at least two significant digits: `0.000034`,\n * not two fraction digits.\n * @param value\n * @param fractionOrSignificantDigits\n */\nfunction toFixed(value, fractionOrSignificantDigits) {\n if (fractionOrSignificantDigits === void 0) { fractionOrSignificantDigits = 2; }\n var power = Math.floor(Math.log(Math.abs(value)) / Math.LN10);\n if (power >= 0 || !isFinite(power)) {\n return value.toFixed(fractionOrSignificantDigits); // fraction digits\n }\n return value.toFixed(Math.abs(power) - 1 + fractionOrSignificantDigits); // significant digits\n}\n/**\n * Returns the mathematically correct n modulus of m. For context, the JS % operator is remainder\n * NOT modulus, which is why this is needed.\n */\nfunction mod(n, m) {\n if (n >= 0) {\n return Math.floor(n % m);\n }\n return Math.floor((n % m) + m);\n}\n\nvar __extends$2p = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ArcType;\n(function (ArcType) {\n ArcType[ArcType[\"Open\"] = 0] = \"Open\";\n ArcType[ArcType[\"Chord\"] = 1] = \"Chord\";\n ArcType[ArcType[\"Round\"] = 2] = \"Round\";\n})(ArcType || (ArcType = {}));\n/**\n * Elliptical arc node.\n */\nvar Arc = /** @class */ (function (_super) {\n __extends$2p(Arc, _super);\n function Arc() {\n var _this = _super.call(this) || this;\n _this.centerX = 0;\n _this.centerY = 0;\n _this.radius = 10;\n _this.startAngle = 0;\n _this.endAngle = Math.PI * 2;\n _this.counterClockwise = false;\n /**\n * The type of arc to render:\n * - {@link ArcType.Open} - end points of the arc segment are not connected (default)\n * - {@link ArcType.Chord} - end points of the arc segment are connected by a line segment\n * - {@link ArcType.Round} - each of the end points of the arc segment are connected\n * to the center of the arc\n * Arcs with {@link ArcType.Open} do not support hit testing, even if they have their\n * {@link Shape.fillStyle} set, because they are not closed paths. Hit testing support\n * would require using two paths - one for rendering, another for hit testing - and there\n * doesn't seem to be a compelling reason to do that, when one can just use {@link ArcType.Chord}\n * to create a closed path.\n */\n _this.type = ArcType.Open;\n _this.restoreOwnStyles();\n return _this;\n }\n Object.defineProperty(Arc.prototype, \"fullPie\", {\n get: function () {\n return isEqual$2(normalizeAngle360(this.startAngle), normalizeAngle360(this.endAngle));\n },\n enumerable: false,\n configurable: true\n });\n Arc.prototype.updatePath = function () {\n var path = this.path;\n path.clear(); // No need to recreate the Path, can simply clear the existing one.\n path.arc(this.centerX, this.centerY, this.radius, this.startAngle, this.endAngle, this.counterClockwise);\n if (this.type === ArcType.Chord) {\n path.closePath();\n }\n else if (this.type === ArcType.Round && !this.fullPie) {\n path.lineTo(this.centerX, this.centerY);\n path.closePath();\n }\n };\n Arc.prototype.computeBBox = function () {\n // Only works with full arcs (circles) and untransformed ellipses.\n return new BBox(this.centerX - this.radius, this.centerY - this.radius, this.radius * 2, this.radius * 2);\n };\n Arc.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return (this.type !== ArcType.Open &&\n bbox.containsPoint(point.x, point.y) &&\n this.path.isPointInPath(point.x, point.y));\n };\n Arc.className = 'Arc';\n Arc.defaultStyles = Object.assign({}, Shape.defaultStyles, {\n lineWidth: 1,\n fillStyle: null,\n });\n __decorate$1H([\n ScenePathChangeDetection()\n ], Arc.prototype, \"centerX\", void 0);\n __decorate$1H([\n ScenePathChangeDetection()\n ], Arc.prototype, \"centerY\", void 0);\n __decorate$1H([\n ScenePathChangeDetection()\n ], Arc.prototype, \"radius\", void 0);\n __decorate$1H([\n ScenePathChangeDetection()\n ], Arc.prototype, \"startAngle\", void 0);\n __decorate$1H([\n ScenePathChangeDetection()\n ], Arc.prototype, \"endAngle\", void 0);\n __decorate$1H([\n ScenePathChangeDetection()\n ], Arc.prototype, \"counterClockwise\", void 0);\n __decorate$1H([\n ScenePathChangeDetection()\n ], Arc.prototype, \"type\", void 0);\n return Arc;\n}(Path));\n\nvar __decorate$1G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Caption = /** @class */ (function () {\n function Caption() {\n this.node = new Text();\n this.enabled = false;\n this.text = '';\n this.fontSize = 10;\n this.fontFamily = 'sans-serif';\n this.spacing = Caption.PADDING;\n this._lineHeight = undefined;\n var node = this.node;\n node.textAlign = 'center';\n node.pointerEvents = PointerEvents.None;\n }\n Object.defineProperty(Caption.prototype, \"lineHeight\", {\n get: function () {\n return this._lineHeight;\n },\n set: function (value) {\n this._lineHeight = value;\n this.node.lineHeight = value;\n },\n enumerable: false,\n configurable: true\n });\n Caption.PADDING = 10;\n __decorate$1G([\n Validate(BOOLEAN)\n ], Caption.prototype, \"enabled\", void 0);\n __decorate$1G([\n Validate(STRING),\n ProxyPropertyOnWrite('node')\n ], Caption.prototype, \"text\", void 0);\n __decorate$1G([\n Validate(OPT_FONT_STYLE),\n ProxyPropertyOnWrite('node')\n ], Caption.prototype, \"fontStyle\", void 0);\n __decorate$1G([\n Validate(OPT_FONT_WEIGHT),\n ProxyPropertyOnWrite('node')\n ], Caption.prototype, \"fontWeight\", void 0);\n __decorate$1G([\n Validate(NUMBER(0)),\n ProxyPropertyOnWrite('node')\n ], Caption.prototype, \"fontSize\", void 0);\n __decorate$1G([\n Validate(STRING),\n ProxyPropertyOnWrite('node')\n ], Caption.prototype, \"fontFamily\", void 0);\n __decorate$1G([\n Validate(OPT_COLOR_STRING),\n ProxyPropertyOnWrite('node', 'fill')\n ], Caption.prototype, \"color\", void 0);\n __decorate$1G([\n Validate(OPT_NUMBER(0))\n ], Caption.prototype, \"spacing\", void 0);\n __decorate$1G([\n Validate(OPT_NUMBER(0))\n ], Caption.prototype, \"_lineHeight\", void 0);\n return Caption;\n}());\n\nfunction areArrayItemsStrictlyEqual(arrA, arrB) {\n return (arrA.length === arrB.length &&\n arrA.every(function (a, i) {\n var b = arrB[i];\n if (Array.isArray(a) && Array.isArray(b)) {\n return areArrayItemsStrictlyEqual(a, b);\n }\n return a === b;\n }));\n}\nfunction areArrayNumbersEqual(arrA, arrB) {\n return arrA.length === arrB.length && arrA.every(function (item, i) { return Number(item) === Number(arrB[i]); });\n}\n\nvar __extends$2o = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nfunction ticks (start, stop, count, minCount, maxCount) {\n if (count < 2) {\n return range(start, stop, stop - start);\n }\n var step = tickStep(start, stop, count, minCount, maxCount);\n if (isNaN(step)) {\n return new NumericTicks(0);\n }\n start = Math.ceil(start / step) * step;\n stop = Math.floor(stop / step) * step;\n return range(start, stop, step);\n}\nvar tickMultipliers = [1, 2, 5, 10];\nfunction tickStep(a, b, count, minCount, maxCount) {\n if (minCount === void 0) { minCount = 0; }\n if (maxCount === void 0) { maxCount = Infinity; }\n var rawStep = (b - a) / count;\n var power = Math.floor(Math.log10(rawStep));\n var step = Math.pow(10, power);\n var m = tickMultipliers\n .map(function (multiplier) {\n var s = multiplier * step;\n var c = Math.ceil((b - a) / s);\n var isWithinBounds = c >= minCount && c <= maxCount;\n var diffCount = Math.abs(c - count);\n return { multiplier: multiplier, isWithinBounds: isWithinBounds, diffCount: diffCount };\n })\n .sort(function (a, b) {\n if (a.isWithinBounds !== b.isWithinBounds) {\n return a.isWithinBounds ? -1 : 1;\n }\n return a.diffCount - b.diffCount;\n })[0].multiplier;\n if (!m || isNaN(m)) {\n return NaN;\n }\n return m * step;\n}\nfunction singleTickDomain(a, b) {\n var power = Math.floor(Math.log10(b - a));\n var step = Math.pow(10, power);\n return tickMultipliers\n .map(function (multiplier) {\n var s = multiplier * step;\n var start = Math.floor(a / s) * s;\n var end = Math.ceil(b / s) * s;\n var error = 1 - (b - a) / (end - start);\n var domain = [start, end];\n return { error: error, domain: domain };\n })\n .sort(function (a, b) { return a.error - b.error; })[0].domain;\n}\nvar NumericTicks = /** @class */ (function (_super) {\n __extends$2o(NumericTicks, _super);\n function NumericTicks(fractionDigits, elements) {\n var _this = _super.call(this) || this;\n if (elements) {\n for (var i = 0, n = elements.length; i < n; i++) {\n _this[i] = elements[i];\n }\n }\n _this.fractionDigits = fractionDigits;\n return _this;\n }\n return NumericTicks;\n}(Array));\nfunction range(start, stop, step) {\n var countDigits = function (expNo) {\n var _a, _b;\n var parts = expNo.split('e');\n return Math.max(((_b = (_a = parts[0].split('.')[1]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) - Number(parts[1]), 0);\n };\n var fractionalDigits = countDigits((step % 1).toExponential());\n var f = Math.pow(10, fractionalDigits);\n var n = Math.ceil((stop - start) / step);\n var values = new NumericTicks(fractionalDigits);\n for (var i = 0; i <= n; i++) {\n var value = start + step * i;\n values.push(Math.round(value * f) / f);\n }\n return values;\n}\n\nvar CONSTANTS = {\n periods: ['AM', 'PM'],\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n};\nfunction dayOfYear(date, startOfYear) {\n if (startOfYear === void 0) { startOfYear = new Date(date.getFullYear(), 0, 1); }\n var startOffset = date.getTimezoneOffset() - startOfYear.getTimezoneOffset();\n var timeDiff = date.getTime() - startOfYear.getTime() + startOffset * 60000;\n var timeOneDay = 3600000 * 24;\n return Math.floor(timeDiff / timeOneDay);\n}\nfunction weekOfYear(date, startDay) {\n var startOfYear = new Date(date.getFullYear(), 0, 1);\n var startOfYearDay = startOfYear.getDay();\n var firstWeekStartOffset = (startDay - startOfYearDay + 7) % 7;\n var startOffset = new Date(date.getFullYear(), 0, firstWeekStartOffset + 1);\n if (startOffset <= date) {\n return Math.floor(dayOfYear(date, startOffset) / 7) + 1;\n }\n // Days before week 1 are in week 0.\n return 0;\n}\nvar SUNDAY = 0;\nvar MONDAY = 1;\nvar THURSDAY = 4;\nfunction isoWeekOfYear(date, year) {\n if (year === void 0) { year = date.getFullYear(); }\n var firstOfYear = new Date(year, 0, 1);\n var firstOfYearDay = firstOfYear.getDay();\n var firstThursdayOffset = (THURSDAY - firstOfYearDay + 7) % 7;\n var startOffset = new Date(year, 0, firstThursdayOffset - (THURSDAY - MONDAY) + 1);\n if (startOffset <= date) {\n return Math.floor(dayOfYear(date, startOffset) / 7) + 1;\n }\n // Days before week 1 are in week 52/53 of previous year.\n return isoWeekOfYear(date, year - 1);\n}\nfunction timezone(date) {\n var offset = date.getTimezoneOffset();\n var unsignedOffset = Math.abs(offset);\n var sign = offset > 0 ? '-' : '+';\n return \"\" + sign + pad(Math.floor(unsignedOffset / 60), 2, '0') + pad(Math.floor(unsignedOffset % 60), 2, '0');\n}\nvar FORMATTERS = {\n a: function (d) { return CONSTANTS.shortDays[d.getDay()]; },\n A: function (d) { return CONSTANTS.days[d.getDay()]; },\n b: function (d) { return CONSTANTS.shortMonths[d.getMonth()]; },\n B: function (d) { return CONSTANTS.months[d.getMonth()]; },\n c: '%x, %X',\n d: function (d, p) { return pad(d.getDate(), 2, p !== null && p !== void 0 ? p : '0'); },\n e: '%_d',\n f: function (d, p) { return pad(d.getMilliseconds() * 1000, 6, p !== null && p !== void 0 ? p : '0'); },\n H: function (d, p) { return pad(d.getHours(), 2, p !== null && p !== void 0 ? p : '0'); },\n I: function (d, p) {\n var hours = d.getHours() % 12;\n return hours === 0 ? '12' : pad(hours, 2, p !== null && p !== void 0 ? p : '0');\n },\n j: function (d, p) { return pad(dayOfYear(d) + 1, 3, p !== null && p !== void 0 ? p : '0'); },\n m: function (d, p) { return pad(d.getMonth() + 1, 2, p !== null && p !== void 0 ? p : '0'); },\n M: function (d, p) { return pad(d.getMinutes(), 2, p !== null && p !== void 0 ? p : '0'); },\n L: function (d, p) { return pad(d.getMilliseconds(), 3, p !== null && p !== void 0 ? p : '0'); },\n p: function (d) { return (d.getHours() < 12 ? 'AM' : 'PM'); },\n Q: function (d) { return String(d.getTime()); },\n s: function (d) { return String(Math.floor(d.getTime() / 1000)); },\n S: function (d, p) { return pad(d.getSeconds(), 2, p !== null && p !== void 0 ? p : '0'); },\n u: function (d) {\n var day = d.getDay();\n if (day < 1)\n day += 7;\n return String(day % 7);\n },\n U: function (d, p) { return pad(weekOfYear(d, SUNDAY), 2, p !== null && p !== void 0 ? p : '0'); },\n V: function (d, p) { return pad(isoWeekOfYear(d), 2, p !== null && p !== void 0 ? p : '0'); },\n w: function (d, p) { return pad(d.getDay(), 2, p !== null && p !== void 0 ? p : '0'); },\n W: function (d, p) { return pad(weekOfYear(d, MONDAY), 2, p !== null && p !== void 0 ? p : '0'); },\n x: '%-m/%-d/%Y',\n X: '%-I:%M:%S %p',\n y: function (d, p) { return pad(d.getFullYear() % 100, 2, p !== null && p !== void 0 ? p : '0'); },\n Y: function (d, p) { return pad(d.getFullYear(), 4, p !== null && p !== void 0 ? p : '0'); },\n Z: function (d) { return timezone(d); },\n '%': function () { return '%'; },\n};\nvar PADS = {\n _: ' ',\n '0': '0',\n '-': '',\n};\nfunction pad(value, size, padChar) {\n var output = String(Math.floor(value));\n if (output.length >= size) {\n return output;\n }\n return \"\" + padChar.repeat(size - output.length) + output;\n}\nfunction buildFormatter(formatString) {\n var formatParts = [];\n while (formatString.length > 0) {\n var nextEscapeIdx = formatString.indexOf('%');\n if (nextEscapeIdx !== 0) {\n var literalPart = nextEscapeIdx > 0 ? formatString.substring(0, nextEscapeIdx) : formatString;\n formatParts.push(literalPart);\n }\n if (nextEscapeIdx < 0)\n break;\n var maybePadSpecifier = formatString[nextEscapeIdx + 1];\n var maybePad = PADS[maybePadSpecifier];\n if (maybePad != null) {\n nextEscapeIdx++;\n }\n var maybeFormatterSpecifier = formatString[nextEscapeIdx + 1];\n var maybeFormatter = FORMATTERS[maybeFormatterSpecifier];\n if (typeof maybeFormatter === 'function') {\n formatParts.push([maybeFormatter, maybePad]);\n }\n else if (typeof maybeFormatter === 'string') {\n var formatter = buildFormatter(maybeFormatter);\n formatParts.push([formatter, maybePad]);\n }\n else {\n formatParts.push(\"\" + (maybePad !== null && maybePad !== void 0 ? maybePad : '') + maybeFormatterSpecifier);\n }\n formatString = formatString.substring(nextEscapeIdx + 2);\n }\n return function (dateTime) {\n var dateTimeAsDate = typeof dateTime === 'number' ? new Date(dateTime) : dateTime;\n return formatParts.map(function (c) { return (typeof c === 'string' ? c : c[0](dateTimeAsDate, c[1])); }).join('');\n };\n}\n\nvar __extends$2n = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values$p = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$R = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$v = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$R(arguments[i]));\n return ar;\n};\nvar _a$2;\nvar DefaultTimeFormats;\n(function (DefaultTimeFormats) {\n DefaultTimeFormats[DefaultTimeFormats[\"MILLISECOND\"] = 0] = \"MILLISECOND\";\n DefaultTimeFormats[DefaultTimeFormats[\"SECOND\"] = 1] = \"SECOND\";\n DefaultTimeFormats[DefaultTimeFormats[\"MINUTE\"] = 2] = \"MINUTE\";\n DefaultTimeFormats[DefaultTimeFormats[\"HOUR\"] = 3] = \"HOUR\";\n DefaultTimeFormats[DefaultTimeFormats[\"WEEK_DAY\"] = 4] = \"WEEK_DAY\";\n DefaultTimeFormats[DefaultTimeFormats[\"SHORT_MONTH\"] = 5] = \"SHORT_MONTH\";\n DefaultTimeFormats[DefaultTimeFormats[\"MONTH\"] = 6] = \"MONTH\";\n DefaultTimeFormats[DefaultTimeFormats[\"SHORT_YEAR\"] = 7] = \"SHORT_YEAR\";\n DefaultTimeFormats[DefaultTimeFormats[\"YEAR\"] = 8] = \"YEAR\";\n})(DefaultTimeFormats || (DefaultTimeFormats = {}));\nvar formatStrings = (_a$2 = {},\n _a$2[DefaultTimeFormats.MILLISECOND] = '.%L',\n _a$2[DefaultTimeFormats.SECOND] = ':%S',\n _a$2[DefaultTimeFormats.MINUTE] = '%I:%M',\n _a$2[DefaultTimeFormats.HOUR] = '%I %p',\n _a$2[DefaultTimeFormats.WEEK_DAY] = '%a',\n _a$2[DefaultTimeFormats.SHORT_MONTH] = '%b %d',\n _a$2[DefaultTimeFormats.MONTH] = '%B',\n _a$2[DefaultTimeFormats.SHORT_YEAR] = '%y',\n _a$2[DefaultTimeFormats.YEAR] = '%Y',\n _a$2);\nfunction toNumber(x) {\n return x instanceof Date ? x.getTime() : x;\n}\nvar TimeScale$1 = /** @class */ (function (_super) {\n __extends$2n(TimeScale, _super);\n function TimeScale() {\n var _this = _super.call(this, [new Date(2022, 11, 7), new Date(2022, 11, 8)], [0, 1]) || this;\n _this.type = 'time';\n _this.cacheProps = [\n 'domain',\n 'range',\n 'nice',\n 'tickCount',\n 'interval',\n 'minTickCount',\n 'maxTickCount',\n ];\n _this.year = year;\n _this.month = month;\n _this.week = sunday;\n _this.day = day;\n _this.hour = hour;\n _this.minute = minute;\n _this.second = second;\n _this.millisecond = millisecond;\n /**\n * Array of default tick intervals in the following format:\n *\n * [\n * interval (unit of time),\n * number of units (step),\n * the length of that number of units in milliseconds\n * ]\n */\n _this.tickIntervals = [\n [_this.second, 1, durationSecond],\n [_this.second, 5, 5 * durationSecond],\n [_this.second, 15, 15 * durationSecond],\n [_this.second, 30, 30 * durationSecond],\n [_this.minute, 1, durationMinute],\n [_this.minute, 5, 5 * durationMinute],\n [_this.minute, 15, 15 * durationMinute],\n [_this.minute, 30, 30 * durationMinute],\n [_this.hour, 1, durationHour],\n [_this.hour, 3, 3 * durationHour],\n [_this.hour, 6, 6 * durationHour],\n [_this.hour, 12, 12 * durationHour],\n [_this.day, 1, durationDay],\n [_this.day, 2, 2 * durationDay],\n [_this.week, 1, durationWeek],\n [_this.week, 2, 2 * durationWeek],\n [_this.week, 3, 3 * durationWeek],\n [_this.month, 1, durationMonth],\n [_this.month, 2, 2 * durationMonth],\n [_this.month, 3, 3 * durationMonth],\n [_this.month, 4, 4 * durationMonth],\n [_this.month, 6, 6 * durationMonth],\n [_this.year, 1, durationYear],\n ];\n return _this;\n }\n TimeScale.prototype.toDomain = function (d) {\n return new Date(d);\n };\n TimeScale.prototype.calculateDefaultTickFormat = function (ticks) {\n var e_1, _a;\n if (ticks === void 0) { ticks = []; }\n var defaultTimeFormat = DefaultTimeFormats.YEAR;\n var updateFormat = function (format) {\n if (format < defaultTimeFormat) {\n defaultTimeFormat = format;\n }\n };\n try {\n for (var ticks_1 = __values$p(ticks), ticks_1_1 = ticks_1.next(); !ticks_1_1.done; ticks_1_1 = ticks_1.next()) {\n var value = ticks_1_1.value;\n var format = this.getLowestGranularityFormat(value);\n updateFormat(format);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (ticks_1_1 && !ticks_1_1.done && (_a = ticks_1.return)) _a.call(ticks_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var firstTick = toNumber(ticks[0]);\n var lastTick = toNumber(ticks[ticks.length - 1]);\n var startYear = new Date(firstTick).getFullYear();\n var stopYear = new Date(lastTick).getFullYear();\n var yearChange = stopYear - startYear > 0;\n return this.buildFormatString(defaultTimeFormat, yearChange);\n };\n TimeScale.prototype.buildFormatString = function (defaultTimeFormat, yearChange) {\n var formatStringArray = [formatStrings[defaultTimeFormat]];\n var timeEndIndex = 0;\n var domain = this.getDomain();\n var start = Math.min.apply(Math, __spread$v(domain.map(toNumber)));\n var stop = Math.max.apply(Math, __spread$v(domain.map(toNumber)));\n var extent = stop - start;\n switch (defaultTimeFormat) {\n case DefaultTimeFormats.SECOND:\n if (extent / durationMinute > 1) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.MINUTE]);\n }\n // fall through deliberately\n case DefaultTimeFormats.MINUTE:\n if (extent / durationHour > 1) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.HOUR]);\n }\n // fall through deliberately\n case DefaultTimeFormats.HOUR:\n timeEndIndex = formatStringArray.length;\n if (extent / durationDay > 1) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.WEEK_DAY]);\n }\n // fall through deliberately\n case DefaultTimeFormats.WEEK_DAY:\n if (extent / durationWeek > 1 || yearChange) {\n // if it's more than a week or there is a year change, don't show week day\n var weekDayIndex = formatStringArray.indexOf(formatStrings[DefaultTimeFormats.WEEK_DAY]);\n if (weekDayIndex > -1) {\n formatStringArray.splice(weekDayIndex, 1, formatStrings[DefaultTimeFormats.SHORT_MONTH]);\n }\n }\n // fall through deliberately\n case DefaultTimeFormats.SHORT_MONTH:\n case DefaultTimeFormats.MONTH:\n if (extent / durationYear > 1 || yearChange) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.YEAR]);\n }\n }\n if (timeEndIndex < formatStringArray.length) {\n // Insert a gap between all date components.\n formatStringArray = __spread$v(formatStringArray.slice(0, timeEndIndex), [\n formatStringArray.slice(timeEndIndex).join(' '),\n ]);\n }\n if (timeEndIndex > 0) {\n // Reverse order of time components, since they should be displayed in descending\n // granularity.\n formatStringArray = __spread$v(formatStringArray.slice(0, timeEndIndex).reverse(), formatStringArray.slice(timeEndIndex));\n if (timeEndIndex < formatStringArray.length) {\n // Insert a gap between time and date components.\n formatStringArray.splice(timeEndIndex, 0, ' ');\n }\n }\n return formatStringArray.join('');\n };\n TimeScale.prototype.getLowestGranularityFormat = function (value) {\n if (this.second.floor(value) < value) {\n return DefaultTimeFormats.MILLISECOND;\n }\n else if (this.minute.floor(value) < value) {\n return DefaultTimeFormats.SECOND;\n }\n else if (this.hour.floor(value) < value) {\n return DefaultTimeFormats.MINUTE;\n }\n else if (this.day.floor(value) < value) {\n return DefaultTimeFormats.HOUR;\n }\n else if (this.month.floor(value) < value) {\n if (this.week.floor(value) < value) {\n return DefaultTimeFormats.WEEK_DAY;\n }\n return DefaultTimeFormats.SHORT_MONTH;\n }\n else if (this.year.floor(value) < value) {\n return DefaultTimeFormats.MONTH;\n }\n return DefaultTimeFormats.YEAR;\n };\n TimeScale.prototype.defaultTickFormat = function (ticks) {\n var formatString = this.calculateDefaultTickFormat(ticks);\n return function (date) { return buildFormatter(formatString)(date); };\n };\n /**\n * @param options Tick interval options.\n * @param options.start The start time (timestamp).\n * @param options.stop The end time (timestamp).\n * @param options.count Number of intervals between ticks.\n */\n TimeScale.prototype.getTickInterval = function (_a) {\n var _b;\n var start = _a.start, stop = _a.stop, count = _a.count, minCount = _a.minCount, maxCount = _a.maxCount;\n var tickIntervals = this.tickIntervals;\n var countableTimeInterval;\n var step;\n var tickCount = count !== null && count !== void 0 ? count : ContinuousScale.defaultTickCount;\n var target = Math.abs(stop - start) / Math.max(tickCount, 1);\n var i = 0;\n while (i < tickIntervals.length && target > tickIntervals[i][2]) {\n i++;\n }\n if (i === 0) {\n step = Math.max(tickStep(start, stop, tickCount, minCount, maxCount), 1);\n countableTimeInterval = this.millisecond;\n }\n else if (i === tickIntervals.length) {\n var y0 = start / durationYear;\n var y1 = stop / durationYear;\n step = tickStep(y0, y1, tickCount, minCount, maxCount);\n countableTimeInterval = this.year;\n }\n else {\n var diff0 = target - tickIntervals[i - 1][2];\n var diff1 = tickIntervals[i][2] - target;\n var index = diff0 < diff1 ? i - 1 : i;\n _b = __read$R(tickIntervals[index], 2), countableTimeInterval = _b[0], step = _b[1];\n }\n return countableTimeInterval.every(step);\n };\n TimeScale.prototype.invert = function (y) {\n return new Date(_super.prototype.invert.call(this, y));\n };\n /**\n * Returns uniformly-spaced dates that represent the scale's domain.\n */\n TimeScale.prototype.ticks = function () {\n if (!this.domain || this.domain.length < 2) {\n return [];\n }\n this.refresh();\n var _a = __read$R(this.getDomain().map(toNumber), 2), t0 = _a[0], t1 = _a[1];\n if (this.interval !== undefined) {\n return this.getTicksForInterval({ start: t0, stop: t1 });\n }\n if (this.nice) {\n var tickCount = this.tickCount;\n if (tickCount === 2) {\n return this.niceDomain;\n }\n if (tickCount === 1) {\n return this.niceDomain.slice(0, 1);\n }\n }\n return this.getDefaultTicks({ start: t0, stop: t1 });\n };\n TimeScale.prototype.getDefaultTicks = function (_a) {\n var start = _a.start, stop = _a.stop;\n var t = this.getTickInterval({\n start: start,\n stop: stop,\n count: this.tickCount,\n minCount: this.minTickCount,\n maxCount: this.maxTickCount,\n });\n return t ? t.range(new Date(start), new Date(stop)) : []; // inclusive stop\n };\n TimeScale.prototype.getTicksForInterval = function (_a) {\n var start = _a.start, stop = _a.stop;\n var _b = this, interval = _b.interval, tickIntervals = _b.tickIntervals;\n if (!interval) {\n return [];\n }\n if (interval instanceof TimeInterval) {\n var ticks_2 = interval.range(new Date(start), new Date(stop));\n if (this.isDenseInterval({ start: start, stop: stop, interval: interval, count: ticks_2.length })) {\n return this.getDefaultTicks({ start: start, stop: stop });\n }\n return ticks_2;\n }\n var absInterval = Math.abs(interval);\n if (this.isDenseInterval({ start: start, stop: stop, interval: absInterval })) {\n return this.getDefaultTicks({ start: start, stop: stop });\n }\n var reversedInterval = __spread$v(tickIntervals);\n reversedInterval.reverse();\n var timeInterval = reversedInterval.find(function (tickInterval) { return absInterval % tickInterval[2] === 0; });\n if (timeInterval) {\n var i = timeInterval[0].every(absInterval / (timeInterval[2] / timeInterval[1]));\n return i.range(new Date(start), new Date(stop));\n }\n var date = new Date(start);\n var stopDate = new Date(stop);\n var ticks = [];\n while (date <= stopDate) {\n ticks.push(date);\n date = new Date(date);\n date.setMilliseconds(date.getMilliseconds() + absInterval);\n }\n return ticks;\n };\n /**\n * Returns a time format function suitable for displaying tick values.\n * @param specifier If the specifier string is provided, this method is equivalent to\n * the {@link TimeLocaleObject.format} method.\n * If no specifier is provided, this method returns the default time format function.\n */\n TimeScale.prototype.tickFormat = function (_a) {\n var ticks = _a.ticks, specifier = _a.specifier;\n return specifier == undefined ? this.defaultTickFormat(ticks) : buildFormatter(specifier);\n };\n TimeScale.prototype.update = function () {\n if (!this.domain || this.domain.length < 2) {\n return;\n }\n if (this.nice) {\n this.updateNiceDomain();\n }\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * This method typically modifies the scale’s domain, and may only extend the bounds to the nearest round value.\n */\n TimeScale.prototype.updateNiceDomain = function () {\n var maxAttempts = 4;\n var _a = __read$R(this.domain, 2), d0 = _a[0], d1 = _a[1];\n for (var i = 0; i < maxAttempts; i++) {\n this.updateNiceDomainIteration(d0, d1);\n var _b = __read$R(this.niceDomain, 2), n0 = _b[0], n1 = _b[1];\n if (toNumber(d0) === toNumber(n0) && toNumber(d1) === toNumber(n1)) {\n break;\n }\n d0 = n0;\n d1 = n1;\n }\n };\n TimeScale.prototype.updateNiceDomainIteration = function (d0, d1) {\n var start = toNumber(d0);\n var stop = toNumber(d1);\n var interval = this.interval;\n var i;\n if (interval instanceof TimeInterval) {\n i = interval;\n }\n else {\n var tickCount = typeof interval === 'number' ? (stop - start) / Math.max(interval, 1) : this.tickCount;\n i = this.getTickInterval({\n start: start,\n stop: stop,\n count: tickCount,\n minCount: this.minTickCount,\n maxCount: this.maxTickCount,\n });\n }\n if (i) {\n var intervalRange = i.range(d0, d1, true);\n var n0 = intervalRange[0];\n var n1 = intervalRange[intervalRange.length - 1];\n this.niceDomain = [n0, n1];\n }\n };\n return TimeScale;\n}(ContinuousScale));\n\nvar __read$Q = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$u = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$Q(arguments[i]));\n return ar;\n};\nvar _a$1;\nvar group = function (content) { return \"(\" + content + \")\"; };\nvar optionalGroup = function (content) { return group(content) + \"?\"; };\nvar nonCapturingGroup = function (content) { return optionalGroup(\"?:\" + content); };\nvar formatRegEx = (function () {\n var fill = '.';\n var align = '[<>=^]';\n var sign = '[+\\\\-( ]';\n var symbol = '[$€£¥₣₹#]';\n var zero = '0';\n var width = '\\\\d+';\n var comma = ',';\n var precision = '\\\\d+';\n var tilde = '~';\n var type = '[%a-z]';\n return new RegExp([\n '^',\n nonCapturingGroup(\"\" + optionalGroup(fill) + group(align)),\n optionalGroup(sign),\n optionalGroup(symbol),\n optionalGroup(zero),\n optionalGroup(width),\n optionalGroup(comma),\n nonCapturingGroup(\"\\\\.\" + group(precision)),\n optionalGroup(tilde),\n optionalGroup(type),\n '$',\n ].join(''), 'i');\n})();\nvar surroundedRegEx = (function () {\n var prefix = '.*?';\n var content = '.+?';\n var suffix = '.*?';\n return new RegExp(['^', group(prefix), \"#\\\\{\" + group(content) + \"\\\\}\", group(suffix), '$'].join(''));\n})();\nfunction parseFormatter(formatter) {\n var _a;\n var prefix;\n var suffix;\n var surrounded = formatter.match(surroundedRegEx);\n if (surrounded) {\n _a = __read$Q(surrounded, 4), prefix = _a[1], formatter = _a[2], suffix = _a[3];\n }\n var match = formatter.match(formatRegEx);\n if (!match) {\n throw new Error(\"The number formatter is invalid: \" + formatter);\n }\n var _b = __read$Q(match, 11), fill = _b[1], align = _b[2], sign = _b[3], symbol = _b[4], zero = _b[5], width = _b[6], comma = _b[7], precision = _b[8], trim = _b[9], type = _b[10];\n return {\n fill: fill,\n align: align,\n sign: sign,\n symbol: symbol,\n zero: zero,\n width: parseInt(width),\n comma: comma,\n precision: parseInt(precision),\n trim: Boolean(trim),\n type: type,\n prefix: prefix,\n suffix: suffix,\n };\n}\nfunction format(formatter) {\n var options = typeof formatter === 'string' ? parseFormatter(formatter) : formatter;\n var fill = options.fill, align = options.align, _a = options.sign, sign = _a === void 0 ? '-' : _a, symbol = options.symbol, zero = options.zero, width = options.width, comma = options.comma, type = options.type, _b = options.prefix, prefix = _b === void 0 ? '' : _b, _c = options.suffix, suffix = _c === void 0 ? '' : _c;\n var precision = options.precision, trim = options.trim;\n var formatBody;\n if (!type) {\n formatBody = decimalTypes['g'];\n trim = true;\n }\n else if (type in decimalTypes && type in integerTypes) {\n formatBody = isNaN(precision) ? integerTypes[type] : decimalTypes[type];\n }\n else if (type in decimalTypes) {\n formatBody = decimalTypes[type];\n }\n else if (type in integerTypes) {\n formatBody = integerTypes[type];\n }\n else {\n throw new Error(\"The number formatter type is invalid: \" + type);\n }\n if (isNaN(precision)) {\n precision = type ? 6 : 12;\n }\n return function (n) {\n var result = formatBody(n, precision);\n if (trim) {\n result = removeTrailingZeros(result);\n }\n if (comma) {\n result = insertSeparator(result, comma);\n }\n result = addSign(n, result, sign);\n if (symbol && symbol !== '#') {\n result = \"\" + symbol + result;\n }\n if (symbol === '#' && type === 'x') {\n result = \"0x\" + result;\n }\n if (type === 's') {\n result = \"\" + result + getSIPrefix(n);\n }\n if (type === '%' || type === 'p') {\n result = result + \"%\";\n }\n if (!isNaN(width)) {\n result = addPadding(result, width, fill || zero, align);\n }\n result = \"\" + prefix + result + suffix;\n return result;\n };\n}\nvar absFloor = function (n) { return Math.floor(Math.abs(n)); };\nvar integerTypes = {\n b: function (n) { return absFloor(n).toString(2); },\n c: function (n) { return String.fromCharCode(n); },\n d: function (n) { return Math.round(Math.abs(n)).toFixed(0); },\n o: function (n) { return absFloor(n).toString(8); },\n x: function (n) { return absFloor(n).toString(16); },\n X: function (n) { return integerTypes.x(n).toUpperCase(); },\n n: function (n) { return integerTypes.d(n); },\n '%': function (n) { return \"\" + absFloor(n * 100).toFixed(0); },\n};\nvar decimalTypes = {\n e: function (n, f) { return Math.abs(n).toExponential(f); },\n E: function (n, f) { return decimalTypes.e(n, f).toUpperCase(); },\n f: function (n, f) { return Math.abs(n).toFixed(f); },\n F: function (n, f) { return decimalTypes.f(n, f).toUpperCase(); },\n g: function (n, f) {\n if (n === 0) {\n return '0';\n }\n var a = Math.abs(n);\n var p = Math.floor(Math.log10(a));\n if (p >= -4 && p < f) {\n return a.toFixed(f - 1 - p);\n }\n return a.toExponential(f - 1);\n },\n G: function (n, f) { return decimalTypes.g(n, f).toUpperCase(); },\n n: function (n, f) { return decimalTypes.g(n, f); },\n p: function (n, f) { return decimalTypes.r(n * 100, f); },\n r: function (n, f) {\n if (n === 0) {\n return '0';\n }\n var a = Math.abs(n);\n var p = Math.floor(Math.log10(a));\n var q = p - (f - 1);\n if (q <= 0) {\n return a.toFixed(-q);\n }\n var x = Math.pow(10, q);\n return (Math.round(a / x) * x).toFixed();\n },\n s: function (n, f) {\n var p = getSIPrefixPower(n);\n return decimalTypes.r(n / Math.pow(10, p), f);\n },\n '%': function (n, f) { return decimalTypes.f(n * 100, f); },\n};\nfunction removeTrailingZeros(numString) {\n return numString.replace(/\\.0+$/, '').replace(/(\\.[1-9])0+$/, '$1');\n}\nfunction insertSeparator(numString, separator) {\n var dotIndex = numString.indexOf('.');\n if (dotIndex < 0) {\n dotIndex = numString.length;\n }\n var integerChars = numString.substring(0, dotIndex).split('');\n var fractionalPart = numString.substring(dotIndex);\n for (var i = integerChars.length - 3; i > 0; i -= 3) {\n integerChars.splice(i, 0, separator);\n }\n return \"\" + integerChars.join('') + fractionalPart;\n}\nfunction getSIPrefix(n) {\n return siPrefixes[getSIPrefixPower(n)];\n}\nfunction getSIPrefixPower(n) {\n var power = Math.log10(Math.abs(n));\n var p = Math.floor(power / 3) * 3;\n return Math.max(minSIPrefix, Math.min(maxSIPrefix, p));\n}\nvar minSIPrefix = -24;\nvar maxSIPrefix = 24;\nvar siPrefixes = (_a$1 = {},\n _a$1[minSIPrefix] = 'y',\n _a$1[-21] = 'z',\n _a$1[-18] = 'a',\n _a$1[-15] = 'f',\n _a$1[-12] = 'p',\n _a$1[-9] = 'n',\n _a$1[-6] = 'µ',\n _a$1[-3] = 'm',\n _a$1[0] = '',\n _a$1[3] = 'k',\n _a$1[6] = 'M',\n _a$1[9] = 'G',\n _a$1[12] = 'T',\n _a$1[15] = 'P',\n _a$1[18] = 'E',\n _a$1[21] = 'Z',\n _a$1[maxSIPrefix] = 'Y',\n _a$1);\nvar minusSign = '\\u2212';\nfunction addSign(num, numString, signType) {\n if (signType === void 0) { signType = ''; }\n if (signType === '(') {\n return num >= 0 ? numString : \"(\" + numString + \")\";\n }\n var plusSign = signType === '+' ? '+' : '';\n return \"\" + (num >= 0 ? plusSign : minusSign) + numString;\n}\nfunction addPadding(numString, width, fill, align) {\n if (fill === void 0) { fill = ' '; }\n if (align === void 0) { align = '>'; }\n var result = numString;\n if (align === '>' || !align) {\n result = result.padStart(width, fill);\n }\n else if (align === '<') {\n result = result.padEnd(width, fill);\n }\n else if (align === '^') {\n var padWidth = Math.max(0, width - result.length);\n var padLeft = Math.ceil(padWidth / 2);\n var padRight = Math.floor(padWidth / 2);\n result = result.padStart(padLeft + result.length, fill);\n result = result.padEnd(padRight + result.length, fill);\n }\n return result;\n}\nfunction tickFormat(ticks, formatter) {\n var options = parseFormatter(formatter || ',f');\n if (isNaN(options.precision)) {\n if (options.type === 'f' || options.type === '%') {\n options.precision = Math.max.apply(Math, __spread$u(ticks.map(function (x) {\n if (typeof x !== 'number' || x === 0) {\n return 0;\n }\n var l = Math.floor(Math.log10(Math.abs(x)));\n var digits = options.type ? 6 : 12;\n var exp = x.toExponential(digits - 1).replace(/\\.?0+e/, 'e');\n var dotIndex = exp.indexOf('.');\n if (dotIndex < 0) {\n return l >= 0 ? 0 : -l;\n }\n var s = exp.indexOf('e') - dotIndex;\n return Math.max(0, s - l - 1);\n })));\n }\n else if (!options.type || options.type in decimalTypes) {\n options.precision = Math.max.apply(Math, __spread$u(ticks.map(function (x) {\n if (typeof x !== 'number') {\n return 0;\n }\n var exp = x.toExponential((options.type ? 6 : 12) - 1).replace(/\\.?0+e/, 'e');\n return exp.substring(0, exp.indexOf('e')).replace('.', '').length;\n })));\n }\n }\n var f = format(options);\n return function (n) { return f(Number(n)); };\n}\n\nvar __extends$2m = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$P = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$t = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$P(arguments[i]));\n return ar;\n};\nvar identity = function (x) { return x; };\nvar LogScale = /** @class */ (function (_super) {\n __extends$2m(LogScale, _super);\n function LogScale() {\n var _this = _super.call(this, [1, 10], [0, 1]) || this;\n _this.type = 'log';\n _this.base = 10;\n _this.cacheProps = ['domain', 'range', 'nice', 'tickCount', 'base'];\n _this.baseLog = identity;\n _this.basePow = identity;\n _this.log = function (x) {\n return _this.domain[0] >= 0 ? _this.baseLog(x) : -_this.baseLog(-x);\n };\n _this.pow = function (x) {\n return _this.domain[0] >= 0 ? _this.basePow(x) : -_this.basePow(-x);\n };\n return _this;\n }\n LogScale.prototype.toDomain = function (d) {\n return d;\n };\n LogScale.prototype.transform = function (x) {\n return this.domain[0] >= 0 ? Math.log(x) : -Math.log(-x);\n };\n LogScale.prototype.transformInvert = function (x) {\n return this.domain[0] >= 0 ? Math.exp(x) : -Math.exp(-x);\n };\n LogScale.prototype.update = function () {\n if (!this.domain || this.domain.length < 2) {\n return;\n }\n this.updateLogFn();\n this.updatePowFn();\n if (this.nice) {\n this.updateNiceDomain();\n }\n };\n LogScale.prototype.updateLogFn = function () {\n var base = this.base;\n var log;\n if (base === 10) {\n log = Math.log10;\n }\n else if (base === Math.E) {\n log = Math.log;\n }\n else if (base === 2) {\n log = Math.log2;\n }\n else {\n var logBase_1 = Math.log(base);\n log = function (x) { return Math.log(x) / logBase_1; };\n }\n this.baseLog = log;\n };\n LogScale.prototype.updatePowFn = function () {\n var base = this.base;\n var pow;\n if (base === 10) {\n pow = LogScale.pow10;\n }\n else if (base === Math.E) {\n pow = Math.exp;\n }\n else {\n pow = function (x) { return Math.pow(base, x); };\n }\n this.basePow = pow;\n };\n LogScale.prototype.updateNiceDomain = function () {\n var _a = __read$P(this.domain, 2), d0 = _a[0], d1 = _a[1];\n var n0 = this.pow(Math.floor(this.log(d0)));\n var n1 = this.pow(Math.ceil(this.log(d1)));\n this.niceDomain = [n0, n1];\n };\n LogScale.pow10 = function (x) {\n return x >= 0 ? Math.pow(10, x) : 1 / Math.pow(10, -x);\n };\n LogScale.prototype.ticks = function () {\n var _this = this;\n var _a;\n var count = (_a = this.tickCount) !== null && _a !== void 0 ? _a : 10;\n if (!this.domain || this.domain.length < 2 || count < 1) {\n return [];\n }\n this.refresh();\n var base = this.base;\n var _b = __read$P(this.getDomain(), 2), d0 = _b[0], d1 = _b[1];\n var p0 = this.log(d0);\n var p1 = this.log(d1);\n if (this.interval) {\n var step = Math.abs(this.interval);\n var absDiff = Math.abs(p1 - p0);\n var ticks_1 = range(p0, p1, Math.min(absDiff, step))\n .map(function (x) { return _this.pow(x); })\n .filter(function (t) { return t >= d0 && t <= d1; });\n if (!this.isDenseInterval({ start: d0, stop: d1, interval: step, count: ticks_1.length })) {\n return ticks_1;\n }\n }\n var isBaseInteger = base % 1 === 0;\n var isDiffLarge = p1 - p0 >= count;\n if (!isBaseInteger || isDiffLarge) {\n // Returns [10^1, 10^2, 10^3, 10^4, ...]\n return ticks(p0, p1, Math.min(p1 - p0, count)).map(function (x) { return _this.pow(x); });\n }\n var ticks$1 = [];\n var isPositive = d0 > 0;\n p0 = Math.floor(p0) - 1;\n p1 = Math.round(p1) + 1;\n var min = Math.min.apply(Math, __spread$t(this.range));\n var max = Math.max.apply(Math, __spread$t(this.range));\n var availableSpacing = (max - min) / count;\n var lastTickPosition = Infinity;\n for (var p = p0; p <= p1; p++) {\n var nextMagnitudeTickPosition = this.convert(this.pow(p + 1));\n for (var k = 1; k < base; k++) {\n var q = isPositive ? k : base - k + 1;\n var t = this.pow(p) * q;\n var tickPosition = this.convert(t);\n var prevSpacing = Math.abs(lastTickPosition - tickPosition);\n var nextSpacing = Math.abs(tickPosition - nextMagnitudeTickPosition);\n var fits = prevSpacing >= availableSpacing && nextSpacing >= availableSpacing;\n if (t >= d0 && t <= d1 && (k === 1 || fits)) {\n ticks$1.push(t);\n lastTickPosition = tickPosition;\n }\n }\n }\n return ticks$1;\n };\n LogScale.prototype.tickFormat = function (_a) {\n var count = _a.count, ticks = _a.ticks, specifier = _a.specifier;\n var base = this.base;\n if (specifier == null) {\n specifier = (base === 10 ? '.0e' : ',');\n }\n if (typeof specifier !== 'function') {\n specifier = format(specifier);\n }\n if (count === Infinity) {\n return specifier;\n }\n if (count == null) {\n count = 10;\n }\n ticks = ticks !== null && ticks !== void 0 ? ticks : this.ticks();\n return function (d) {\n return specifier(d);\n };\n };\n __decorate$1F([\n Validate(NUMBER(0))\n ], LogScale.prototype, \"base\", void 0);\n return LogScale;\n}(ContinuousScale));\n\nfunction Default(defaultValue, replaces) {\n if (replaces === void 0) { replaces = [undefined]; }\n return addTransformToInstanceProperty(function (_, __, v) {\n if (replaces.includes(v)) {\n return defaultValue;\n }\n return v;\n });\n}\n\n(undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction extent$4(values) {\n var length = values.length;\n if (length === 0) {\n return undefined;\n }\n var min = Infinity;\n var max = -Infinity;\n for (var i = 0; i < length; i++) {\n var v = values[i];\n if (v instanceof Date) {\n v = v.getTime();\n }\n if (typeof v !== 'number') {\n continue;\n }\n if (v < min) {\n min = v;\n }\n if (v > max) {\n max = v;\n }\n }\n var extent = [min, max];\n if (extent.some(function (v) { return !isFinite(v); })) {\n return undefined;\n }\n return extent;\n}\n\nvar __decorate$1E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Label$1 = /** @class */ (function () {\n function Label() {\n this.enabled = true;\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.color = 'rgba(70, 70, 70, 1)';\n }\n Label.prototype.getFont = function () {\n return getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n };\n __decorate$1E([\n Validate(BOOLEAN)\n ], Label.prototype, \"enabled\", void 0);\n __decorate$1E([\n Validate(NUMBER(0))\n ], Label.prototype, \"fontSize\", void 0);\n __decorate$1E([\n Validate(STRING)\n ], Label.prototype, \"fontFamily\", void 0);\n __decorate$1E([\n Validate(OPT_FONT_STYLE)\n ], Label.prototype, \"fontStyle\", void 0);\n __decorate$1E([\n Validate(OPT_FONT_WEIGHT)\n ], Label.prototype, \"fontWeight\", void 0);\n __decorate$1E([\n Validate(COLOR_STRING)\n ], Label.prototype, \"color\", void 0);\n return Label;\n}());\nfunction calculateLabelRotation(opts) {\n var _a = opts.parallelFlipRotation, parallelFlipRotation = _a === void 0 ? 0 : _a, _b = opts.regularFlipRotation, regularFlipRotation = _b === void 0 ? 0 : _b;\n var labelRotation = opts.rotation ? normalizeAngle360(toRadians$1(opts.rotation)) : 0;\n var parallelFlipFlag = !labelRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI ? -1 : 1;\n // Flip if the axis rotation angle is in the top hemisphere.\n var regularFlipFlag = !labelRotation && regularFlipRotation >= 0 && regularFlipRotation <= Math.PI ? -1 : 1;\n var autoRotation = 0;\n if (opts.parallel) {\n autoRotation = (parallelFlipFlag * Math.PI) / 2;\n }\n else if (regularFlipFlag === -1) {\n autoRotation = Math.PI;\n }\n return { labelRotation: labelRotation, autoRotation: autoRotation, parallelFlipFlag: parallelFlipFlag, regularFlipFlag: regularFlipFlag };\n}\n\nvar __decorate$1D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$O = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$s = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$O(arguments[i]));\n return ar;\n};\nvar TICK_COUNT = predicateWithMessage(function (v, ctx) { return NUMBER(0)(v, ctx) || v instanceof TimeInterval; }, \"expecting a tick count Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'\");\nvar OPT_TICK_COUNT = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, TICK_COUNT); }, \"expecting an optional tick count Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'\");\nvar OPT_TICK_INTERVAL = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v, ctx) { return (v !== 0 && NUMBER(0)(v, ctx)) || v instanceof TimeInterval; }); }, \"expecting an optional non-zero positive Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'\");\nvar GRID_STYLE_KEYS = ['stroke', 'lineDash'];\nvar GRID_STYLE = predicateWithMessage(ARRAY(undefined, function (o) {\n for (var key in o) {\n if (!GRID_STYLE_KEYS.includes(key)) {\n return false;\n }\n }\n return true;\n}), \"expecting an Array of objects with gridline style properties such as 'stroke' and 'lineDash'\");\nvar Tags;\n(function (Tags) {\n Tags[Tags[\"TickLine\"] = 0] = \"TickLine\";\n Tags[Tags[\"TickLabel\"] = 1] = \"TickLabel\";\n Tags[Tags[\"GridLine\"] = 2] = \"GridLine\";\n Tags[Tags[\"GridArc\"] = 3] = \"GridArc\";\n Tags[Tags[\"AxisLine\"] = 4] = \"AxisLine\";\n})(Tags || (Tags = {}));\nvar AxisLine = /** @class */ (function () {\n function AxisLine() {\n this.width = 1;\n this.color = 'rgba(195, 195, 195, 1)';\n }\n __decorate$1D([\n Validate(NUMBER(0))\n ], AxisLine.prototype, \"width\", void 0);\n __decorate$1D([\n Validate(OPT_COLOR_STRING)\n ], AxisLine.prototype, \"color\", void 0);\n return AxisLine;\n}());\nvar AxisTick = /** @class */ (function () {\n function AxisTick() {\n /**\n * The line width to be used by axis ticks.\n */\n this.width = 1;\n /**\n * The line length to be used by axis ticks.\n */\n this.size = 6;\n /**\n * The color of the axis ticks.\n * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make the ticks invisible.\n */\n this.color = 'rgba(195, 195, 195, 1)';\n /**\n * A hint of how many ticks to use (the exact number of ticks might differ),\n * a `TimeInterval` or a `CountableTimeInterval`.\n * For example:\n *\n * axis.tick.count = 5;\n * axis.tick.count = year;\n * axis.tick.count = month.every(6);\n */\n this.count = undefined;\n this.interval = undefined;\n this.values = undefined;\n this.minSpacing = NaN;\n this.maxSpacing = NaN;\n }\n __decorate$1D([\n Validate(NUMBER(0))\n ], AxisTick.prototype, \"width\", void 0);\n __decorate$1D([\n Validate(NUMBER(0))\n ], AxisTick.prototype, \"size\", void 0);\n __decorate$1D([\n Validate(OPT_COLOR_STRING)\n ], AxisTick.prototype, \"color\", void 0);\n __decorate$1D([\n Validate(OPT_TICK_COUNT),\n Deprecated('Use tick.interval or tick.minSpacing and tick.maxSpacing instead')\n ], AxisTick.prototype, \"count\", void 0);\n __decorate$1D([\n Validate(OPT_TICK_INTERVAL)\n ], AxisTick.prototype, \"interval\", void 0);\n __decorate$1D([\n Validate(OPT_ARRAY())\n ], AxisTick.prototype, \"values\", void 0);\n __decorate$1D([\n Validate(AND(NUMBER_OR_NAN(1), LESS_THAN('maxSpacing'))),\n Default(NaN)\n ], AxisTick.prototype, \"minSpacing\", void 0);\n __decorate$1D([\n Validate(AND(NUMBER_OR_NAN(1), GREATER_THAN('minSpacing'))),\n Default(NaN)\n ], AxisTick.prototype, \"maxSpacing\", void 0);\n return AxisTick;\n}());\nvar AxisLabel = /** @class */ (function () {\n function AxisLabel() {\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n /**\n * The padding between the labels and the ticks.\n */\n this.padding = 5;\n /**\n * Minimum gap in pixels between the axis labels before being removed to avoid collisions.\n */\n this.minSpacing = NaN;\n /**\n * The color of the labels.\n * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make labels invisible.\n */\n this.color = 'rgba(87, 87, 87, 1)';\n /**\n * Custom label rotation in degrees.\n * Labels are rendered perpendicular to the axis line by default.\n * Or parallel to the axis line, if the {@link parallel} is set to `true`.\n * The value of this config is used as the angular offset/deflection\n * from the default rotation.\n */\n this.rotation = undefined;\n /**\n * If specified and axis labels may collide, they are rotated to reduce collisions. If the\n * `rotation` property is specified, it takes precedence.\n */\n this.autoRotate = undefined;\n /**\n * Rotation angle to use when autoRotate is applied.\n */\n this.autoRotateAngle = 335;\n /**\n * Avoid axis label collision by automatically reducing the number of ticks displayed. If set to `false`, axis labels may collide.\n */\n this.avoidCollisions = true;\n /**\n * By default labels and ticks are positioned to the left of the axis line.\n * `true` positions the labels to the right of the axis line.\n * However, if the axis is rotated, it's easier to think in terms\n * of this side or the opposite side, rather than left and right.\n * We use the term `mirror` for conciseness, although it's not\n * true mirroring - for example, when a label is rotated, so that\n * it is inclined at the 45 degree angle, text flowing from north-west\n * to south-east, ending at the tick to the left of the axis line,\n * and then we set this config to `true`, the text will still be flowing\n * from north-west to south-east, _starting_ at the tick to the right\n * of the axis line.\n */\n this.mirrored = false;\n /**\n * Labels are rendered perpendicular to the axis line by default.\n * Setting this config to `true` makes labels render parallel to the axis line\n * and center aligns labels' text at the ticks.\n */\n this.parallel = false;\n /**\n * In case {@param value} is a number, the {@param fractionDigits} parameter will\n * be provided as well. The `fractionDigits` corresponds to the number of fraction\n * digits used by the tick step. For example, if the tick step is `0.0005`,\n * the `fractionDigits` is 4.\n */\n this.formatter = undefined;\n this.format = undefined;\n }\n __decorate$1D([\n Validate(OPT_FONT_STYLE)\n ], AxisLabel.prototype, \"fontStyle\", void 0);\n __decorate$1D([\n Validate(OPT_FONT_WEIGHT)\n ], AxisLabel.prototype, \"fontWeight\", void 0);\n __decorate$1D([\n Validate(NUMBER(1))\n ], AxisLabel.prototype, \"fontSize\", void 0);\n __decorate$1D([\n Validate(STRING)\n ], AxisLabel.prototype, \"fontFamily\", void 0);\n __decorate$1D([\n Validate(NUMBER(0))\n ], AxisLabel.prototype, \"padding\", void 0);\n __decorate$1D([\n Validate(NUMBER_OR_NAN()),\n Default(NaN)\n ], AxisLabel.prototype, \"minSpacing\", void 0);\n __decorate$1D([\n Validate(OPT_COLOR_STRING)\n ], AxisLabel.prototype, \"color\", void 0);\n __decorate$1D([\n Validate(OPT_NUMBER(-360, 360))\n ], AxisLabel.prototype, \"rotation\", void 0);\n __decorate$1D([\n Validate(OPT_BOOLEAN)\n ], AxisLabel.prototype, \"autoRotate\", void 0);\n __decorate$1D([\n Validate(NUMBER(-360, 360))\n ], AxisLabel.prototype, \"autoRotateAngle\", void 0);\n __decorate$1D([\n Validate(BOOLEAN)\n ], AxisLabel.prototype, \"avoidCollisions\", void 0);\n __decorate$1D([\n Validate(BOOLEAN)\n ], AxisLabel.prototype, \"mirrored\", void 0);\n __decorate$1D([\n Validate(BOOLEAN)\n ], AxisLabel.prototype, \"parallel\", void 0);\n __decorate$1D([\n Validate(OPT_STRING)\n ], AxisLabel.prototype, \"format\", void 0);\n return AxisLabel;\n}());\n/**\n * A general purpose linear axis with no notion of orientation.\n * The axis is always rendered vertically, with horizontal labels positioned to the left\n * of the axis line by default. The axis can be {@link rotation | rotated} by an arbitrary angle,\n * so that it can be used as a top, right, bottom, left, radial or any other kind\n * of linear axis.\n * The generic `D` parameter is the type of the domain of the axis' scale.\n * The output range of the axis' scale is always numeric (screen coordinates).\n */\nvar Axis = /** @class */ (function () {\n function Axis(scale) {\n this.id = createId$1(this);\n this.nice = true;\n this.dataDomain = [];\n this.axisGroup = new Group({ name: this.id + \"-axis\", zIndex: Layers.AXIS_ZINDEX });\n this.lineNode = this.axisGroup.appendChild(new Line());\n this.tickLineGroup = this.axisGroup.appendChild(new Group({ name: this.id + \"-Axis-tick-lines\", zIndex: Layers.AXIS_ZINDEX }));\n this.tickLabelGroup = this.axisGroup.appendChild(new Group({ name: this.id + \"-Axis-tick-labels\", zIndex: Layers.AXIS_ZINDEX }));\n this.crossLineGroup = new Group({ name: this.id + \"-CrossLines\" });\n this.gridGroup = new Group({ name: this.id + \"-Axis-grid\" });\n this.gridLineGroup = this.gridGroup.appendChild(new Group({\n name: this.id + \"-gridLines\",\n zIndex: Layers.AXIS_GRID_ZINDEX,\n }));\n this.gridArcGroup = this.gridGroup.appendChild(new Group({\n name: this.id + \"-gridArcs\",\n zIndex: Layers.AXIS_GRID_ZINDEX,\n }));\n this.tickLineGroupSelection = Selection.select(this.tickLineGroup, Line);\n this.tickLabelGroupSelection = Selection.select(this.tickLabelGroup, Text);\n this.gridLineGroupSelection = Selection.select(this.gridLineGroup, Line);\n this.gridArcGroupSelection = Selection.select(this.gridArcGroup, Arc);\n this._crossLines = [];\n this.line = new AxisLine();\n this.tick = new AxisTick();\n this.label = new AxisLabel();\n this.translation = { x: 0, y: 0 };\n this.rotation = 0; // axis rotation angle in degrees\n this.layout = {\n label: {\n align: 'center',\n baseline: 'middle',\n rotation: 0,\n fractionDigits: 0,\n padding: this.label.padding,\n format: this.label.format,\n },\n };\n this.requestedRange = [0, 1];\n this._visibleRange = [0, 1];\n this._title = undefined;\n /**\n * The length of the grid. The grid is only visible in case of a non-zero value.\n * In case {@link radialGrid} is `true`, the value is interpreted as an angle\n * (in degrees).\n */\n this._gridLength = 0;\n /**\n * The array of styles to cycle through when rendering grid lines.\n * For example, use two {@link GridStyle} objects for alternating styles.\n * Contains only one {@link GridStyle} object by default, meaning all grid lines\n * have the same style.\n */\n this.gridStyle = [\n {\n stroke: 'rgba(219, 219, 219, 1)',\n lineDash: [4, 2],\n },\n ];\n /**\n * `false` - render grid as lines of {@link gridLength} that extend the ticks\n * on the opposite side of the axis\n * `true` - render grid as concentric circles that go through the ticks\n */\n this._radialGrid = false;\n this.fractionDigits = 0;\n /**\n * The distance between the grid ticks and the axis ticks.\n */\n this.gridPadding = 0;\n /**\n * Is used to avoid collisions between axis labels and series.\n */\n this.seriesAreaPadding = 0;\n this.thickness = 0;\n this._scale = scale;\n this.refreshScale();\n }\n Object.defineProperty(Axis.prototype, \"scale\", {\n get: function () {\n return this._scale;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"crossLines\", {\n get: function () {\n return this._crossLines;\n },\n set: function (value) {\n var _this = this;\n var _a, _b;\n (_a = this._crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) { return _this.detachCrossLine(crossLine); });\n this._crossLines = value;\n (_b = this._crossLines) === null || _b === void 0 ? void 0 : _b.forEach(function (crossLine) {\n _this.attachCrossLine(crossLine);\n _this.initCrossLine(crossLine);\n });\n },\n enumerable: false,\n configurable: true\n });\n Axis.prototype.attachCrossLine = function (crossLine) {\n this.crossLineGroup.appendChild(crossLine.group);\n };\n Axis.prototype.detachCrossLine = function (crossLine) {\n this.crossLineGroup.removeChild(crossLine.group);\n };\n Axis.prototype.destroy = function () {\n // For override by sub-classes.\n };\n Axis.prototype.refreshScale = function () {\n var _this = this;\n var _a;\n this.requestedRange = this.scale.range.slice();\n (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n _this.initCrossLine(crossLine);\n });\n };\n Axis.prototype.updateRange = function () {\n var _a;\n var _b = this, rr = _b.requestedRange, vr = _b.visibleRange, scale = _b.scale;\n var span = (rr[1] - rr[0]) / (vr[1] - vr[0]);\n var shift = span * vr[0];\n var start = rr[0] - shift;\n scale.range = [start, start + span];\n (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n crossLine.clippedRange = [rr[0], rr[1]];\n });\n };\n Axis.prototype.setCrossLinesVisible = function (visible) {\n this.crossLineGroup.visible = visible;\n };\n Axis.prototype.attachAxis = function (node, nextNode) {\n node.insertBefore(this.gridGroup, nextNode);\n node.insertBefore(this.axisGroup, nextNode);\n node.insertBefore(this.crossLineGroup, nextNode);\n };\n Axis.prototype.detachAxis = function (node) {\n node.removeChild(this.gridGroup);\n node.removeChild(this.axisGroup);\n node.removeChild(this.crossLineGroup);\n };\n /**\n * Checks if a point or an object is in range.\n * @param x A point (or object's starting point).\n * @param width Object's width.\n * @param tolerance Expands the range on both ends by this amount.\n */\n Axis.prototype.inRange = function (x, width, tolerance) {\n if (width === void 0) { width = 0; }\n if (tolerance === void 0) { tolerance = 0; }\n return this.inRangeEx(x, width, tolerance) === 0;\n };\n Axis.prototype.inRangeEx = function (x, width, tolerance) {\n if (width === void 0) { width = 0; }\n if (tolerance === void 0) { tolerance = 0; }\n var range = this.range;\n // Account for inverted ranges, for example [500, 100] as well as [100, 500]\n var min = Math.min(range[0], range[1]);\n var max = Math.max(range[0], range[1]);\n if (x + width < min - tolerance) {\n return -1; // left of range\n }\n if (x > max + tolerance) {\n return 1; // right of range\n }\n return 0; // in range\n };\n Object.defineProperty(Axis.prototype, \"range\", {\n get: function () {\n return this.requestedRange;\n },\n set: function (value) {\n this.requestedRange = value.slice();\n this.updateRange();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"visibleRange\", {\n get: function () {\n return this._visibleRange.slice();\n },\n set: function (value) {\n if (value && value.length === 2) {\n var _a = __read$O(value, 2), min = _a[0], max = _a[1];\n min = Math.max(0, min);\n max = Math.min(1, max);\n min = Math.min(min, max);\n max = Math.max(min, max);\n this._visibleRange = [min, max];\n this.updateRange();\n }\n },\n enumerable: false,\n configurable: true\n });\n Axis.prototype.onLabelFormatChange = function (ticks, format) {\n var _a = this, scale = _a.scale, fractionDigits = _a.fractionDigits;\n var logScale = scale instanceof LogScale;\n var defaultLabelFormatter = !logScale && fractionDigits > 0\n ? function (x) { return (typeof x === 'number' ? x.toFixed(fractionDigits) : String(x)); }\n : function (x) { return String(x); };\n if (format && scale && scale.tickFormat) {\n try {\n this.labelFormatter = scale.tickFormat({\n ticks: ticks,\n specifier: format,\n });\n }\n catch (e) {\n this.labelFormatter = defaultLabelFormatter;\n Logger.warnOnce(\"the axis label format string \" + format + \" is invalid. No formatting will be applied\");\n }\n }\n else {\n this.labelFormatter = defaultLabelFormatter;\n }\n };\n Object.defineProperty(Axis.prototype, \"title\", {\n get: function () {\n return this._title;\n },\n set: function (value) {\n var oldTitle = this._title;\n if (oldTitle !== value) {\n if (oldTitle) {\n this.axisGroup.removeChild(oldTitle.node);\n }\n if (value) {\n value.node.rotation = -Math.PI / 2;\n this.axisGroup.appendChild(value.node);\n }\n this._title = value;\n // position title so that it doesn't briefly get rendered in the top left hand corner of the canvas before update is called.\n this.setTickCount(this.tick.count);\n this.setTickInterval(this.tick.interval);\n this.updateTitle({ ticks: this.scale.ticks() });\n }\n },\n enumerable: false,\n configurable: true\n });\n Axis.prototype.setDomain = function () {\n var _a;\n var _b = this, scale = _b.scale, dataDomain = _b.dataDomain, tickValues = _b.tick.values;\n if (tickValues && scale instanceof ContinuousScale) {\n var _c = __read$O((_a = extent$4(tickValues)) !== null && _a !== void 0 ? _a : [Infinity, -Infinity], 2), tickMin = _c[0], tickMax = _c[1];\n var min = Math.min(scale.fromDomain(dataDomain[0]), tickMin);\n var max = Math.max(scale.fromDomain(dataDomain[1]), tickMax);\n scale.domain = [scale.toDomain(min), scale.toDomain(max)];\n }\n else {\n scale.domain = dataDomain;\n }\n };\n Axis.prototype.setTickInterval = function (interval) {\n var _a;\n this.scale.interval = (_a = this.tick.interval) !== null && _a !== void 0 ? _a : interval;\n };\n Axis.prototype.setTickCount = function (count, minTickCount, maxTickCount) {\n var scale = this.scale;\n if (!(count && scale instanceof ContinuousScale)) {\n return;\n }\n if (typeof count === 'number') {\n scale.tickCount = count;\n scale.minTickCount = minTickCount !== null && minTickCount !== void 0 ? minTickCount : 0;\n scale.maxTickCount = maxTickCount !== null && maxTickCount !== void 0 ? maxTickCount : Infinity;\n return;\n }\n if (scale instanceof TimeScale$1) {\n this.setTickInterval(count);\n }\n };\n Object.defineProperty(Axis.prototype, \"gridLength\", {\n get: function () {\n return this._gridLength;\n },\n set: function (value) {\n var _this = this;\n var _a;\n // Was visible and now invisible, or was invisible and now visible.\n if ((this._gridLength && !value) || (!this._gridLength && value)) {\n this.gridLineGroupSelection = this.gridLineGroupSelection.clear();\n this.gridArcGroupSelection = this.gridArcGroupSelection.clear();\n }\n this._gridLength = value;\n (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n _this.initCrossLine(crossLine);\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"radialGrid\", {\n get: function () {\n return this._radialGrid;\n },\n set: function (value) {\n if (this._radialGrid !== value) {\n this._radialGrid = value;\n this.gridLineGroupSelection = this.gridLineGroupSelection.clear();\n this.gridArcGroupSelection = this.gridArcGroupSelection.clear();\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Creates/removes/updates the scene graph nodes that constitute the axis.\n */\n Axis.prototype.update = function (primaryTickCount) {\n var _a, _b;\n this.calculateDomain();\n var _c = this, scale = _c.scale, gridLength = _c.gridLength, tick = _c.tick, _d = _c.label, parallelLabels = _d.parallel, mirrored = _d.mirrored, avoidCollisions = _d.avoidCollisions, requestedRange = _c.requestedRange;\n var requestedRangeMin = Math.min.apply(Math, __spread$s(requestedRange));\n var requestedRangeMax = Math.max.apply(Math, __spread$s(requestedRange));\n var rotation = toRadians$1(this.rotation);\n var anySeriesActive = this.isAnySeriesActive();\n // The side of the axis line to position the labels on.\n // -1 = left (default)\n // 1 = right\n var sideFlag = mirrored ? 1 : -1;\n // When labels are parallel to the axis line, the `parallelFlipFlag` is used to\n // flip the labels to avoid upside-down text, when the axis is rotated\n // such that it is in the right hemisphere, i.e. the angle of rotation\n // is in the [0, π] interval.\n // The rotation angle is normalized, so that we have an easier time checking\n // if it's in the said interval. Since the axis is always rendered vertically\n // and then rotated, zero rotation means 12 (not 3) o-clock.\n // -1 = flip\n // 1 = don't flip (default)\n var parallelFlipRotation = normalizeAngle360(rotation);\n var regularFlipRotation = normalizeAngle360(rotation - Math.PI / 2);\n var nice = this.nice;\n this.setDomain();\n this.setTickInterval(this.tick.interval);\n if (scale instanceof ContinuousScale) {\n scale.nice = nice;\n this.setTickCount(this.tick.count);\n scale.update();\n }\n var halfBandwidth = (scale.bandwidth || 0) / 2;\n this.updatePosition();\n this.updateLine();\n var i = 0;\n var labelOverlap = true;\n var ticks = [];\n var _e = this.estimateTickCount({\n minSpacing: this.tick.minSpacing,\n maxSpacing: this.tick.maxSpacing,\n }), maxTickCount = _e.maxTickCount, minTickCount = _e.minTickCount, defaultTickCount = _e.defaultTickCount;\n var continuous = scale instanceof ContinuousScale;\n var secondaryAxis = primaryTickCount !== undefined;\n var checkForOverlap = avoidCollisions && this.tick.interval === undefined && this.tick.values === undefined;\n var tickSpacing = !isNaN(this.tick.minSpacing) || !isNaN(this.tick.maxSpacing);\n var maxIterations = this.tick.count || !continuous || isNaN(maxTickCount) ? 10 : maxTickCount;\n while (labelOverlap) {\n var unchanged = true;\n var _loop_1 = function () {\n if (i > maxIterations) {\n return \"break\";\n }\n var prevTicks = ticks;\n var tickCount = Math.max(defaultTickCount - i, minTickCount);\n var filterTicks = checkForOverlap && !(continuous && this_1.tick.count === undefined) && (tickSpacing || i !== 0);\n if (this_1.tick.values) {\n ticks = this_1.tick.values;\n }\n else if (maxTickCount === 0) {\n ticks = [];\n }\n else if (i === 0 || !filterTicks) {\n this_1.setTickCount((_a = this_1.tick.count) !== null && _a !== void 0 ? _a : tickCount, minTickCount, maxTickCount);\n ticks = scale.ticks();\n }\n if (filterTicks) {\n var keepEvery_1 = tickSpacing ? Math.ceil(ticks.length / tickCount) : 2;\n ticks = ticks.filter(function (_, i) { return i % keepEvery_1 === 0; });\n }\n var secondaryAxisTicks = void 0;\n if (secondaryAxis) {\n // `updateSecondaryAxisTicks` mutates `scale.domain` based on `primaryTickCount`\n secondaryAxisTicks = this_1.updateSecondaryAxisTicks(primaryTickCount);\n ticks = secondaryAxisTicks;\n }\n this_1.updateSelections({\n halfBandwidth: halfBandwidth,\n gridLength: gridLength,\n ticks: ticks,\n });\n if (!secondaryAxis && ticks.length > 0) {\n primaryTickCount = ticks.length;\n }\n unchanged = checkForOverlap ? areArrayNumbersEqual(ticks, prevTicks) : false;\n i++;\n };\n var this_1 = this;\n while (unchanged) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n if (unchanged) {\n break;\n }\n // When the scale domain or the ticks change, the label format may change\n this.onLabelFormatChange(ticks, this.label.format);\n var _f = this.updateLabels({\n parallelFlipRotation: parallelFlipRotation,\n regularFlipRotation: regularFlipRotation,\n sideFlag: sideFlag,\n tickLabelGroupSelection: this.tickLabelGroupSelection,\n ticks: ticks,\n }), labelData = _f.labelData, rotated = _f.rotated;\n var labelSpacing = this.getLabelSpacing(rotated);\n // no need for further iterations if `avoidCollisions` is false\n labelOverlap = checkForOverlap ? axisLabelsOverlap(labelData, labelSpacing) : false;\n }\n this.updateGridLines({\n gridLength: gridLength,\n halfBandwidth: halfBandwidth,\n sideFlag: sideFlag,\n });\n var anyTickVisible = false;\n var visibleFn = function (node) {\n var min = Math.floor(requestedRangeMin);\n var max = Math.ceil(requestedRangeMax);\n if (min === max) {\n node.visible = false;\n return;\n }\n // Fix an effect of rounding error\n if (node.translationY >= min - 1 && node.translationY < min) {\n node.translationY = min;\n }\n if (node.translationY > max && node.translationY <= max + 1) {\n node.translationY = max;\n }\n var visible = node.translationY >= min && node.translationY <= max;\n if (visible) {\n anyTickVisible = true;\n }\n node.visible = visible;\n };\n var _g = this, gridLineGroupSelection = _g.gridLineGroupSelection, gridArcGroupSelection = _g.gridArcGroupSelection, tickLineGroupSelection = _g.tickLineGroupSelection, tickLabelGroupSelection = _g.tickLabelGroupSelection;\n gridLineGroupSelection.each(visibleFn);\n gridArcGroupSelection.each(visibleFn);\n tickLineGroupSelection.each(visibleFn);\n tickLabelGroupSelection.each(visibleFn);\n this.tickLineGroup.visible = anyTickVisible;\n this.tickLabelGroup.visible = anyTickVisible;\n this.gridLineGroup.visible = anyTickVisible;\n this.gridArcGroup.visible = anyTickVisible;\n (_b = this.crossLines) === null || _b === void 0 ? void 0 : _b.forEach(function (crossLine) {\n crossLine.sideFlag = -sideFlag;\n crossLine.direction = rotation === -Math.PI / 2 ? ChartAxisDirection.X : ChartAxisDirection.Y;\n crossLine.label.parallel =\n crossLine.label.parallel !== undefined ? crossLine.label.parallel : parallelLabels;\n crossLine.parallelFlipRotation = parallelFlipRotation;\n crossLine.regularFlipRotation = regularFlipRotation;\n crossLine.update(anySeriesActive);\n });\n this.updateTitle({ ticks: ticks });\n tickLineGroupSelection.each(function (line) {\n line.strokeWidth = tick.width;\n line.stroke = tick.color;\n line.visible = anyTickVisible;\n line.x1 = sideFlag * tick.size;\n line.x2 = 0;\n line.y1 = 0;\n line.y2 = 0;\n });\n return primaryTickCount;\n };\n Axis.prototype.estimateTickCount = function (_a) {\n var minSpacing = _a.minSpacing, maxSpacing = _a.maxSpacing;\n var requestedRange = this.requestedRange;\n var min = Math.min.apply(Math, __spread$s(requestedRange));\n var max = Math.max.apply(Math, __spread$s(requestedRange));\n var availableRange = max - min;\n var defaultMinSpacing = Math.max(Axis.defaultTickMinSpacing, availableRange / ContinuousScale.defaultMaxTickCount);\n if (isNaN(minSpacing) && isNaN(maxSpacing)) {\n minSpacing = defaultMinSpacing;\n maxSpacing = availableRange;\n if (minSpacing > maxSpacing) {\n // Take automatic minSpacing if there is a conflict.\n maxSpacing = minSpacing;\n }\n }\n else if (isNaN(minSpacing)) {\n minSpacing = defaultMinSpacing;\n if (minSpacing > maxSpacing) {\n // Take user-suplied maxSpacing if there is a conflict.\n minSpacing = maxSpacing;\n }\n }\n else if (isNaN(maxSpacing)) {\n maxSpacing = availableRange;\n if (minSpacing > maxSpacing) {\n // Take user-suplied minSpacing if there is a conflict.\n maxSpacing = minSpacing;\n }\n }\n var maxTickCount = Math.max(1, Math.floor(availableRange / minSpacing));\n var minTickCount = Math.min(maxTickCount, Math.ceil(availableRange / maxSpacing));\n var defaultTickCount = ContinuousScale.defaultTickCount;\n if (defaultTickCount > maxTickCount) {\n defaultTickCount = maxTickCount;\n }\n else if (defaultTickCount < minTickCount) {\n defaultTickCount = minTickCount;\n }\n return { minTickCount: minTickCount, maxTickCount: maxTickCount, defaultTickCount: defaultTickCount };\n };\n Axis.prototype.getLabelSpacing = function (rotated) {\n var label = this.label;\n if (!isNaN(label.minSpacing)) {\n return label.minSpacing;\n }\n return rotated ? 0 : 10;\n };\n Axis.prototype.calculateDomain = function () {\n // Placeholder for subclasses to override.\n };\n Axis.prototype.updatePosition = function () {\n var _a = this, label = _a.label, crossLineGroup = _a.crossLineGroup, axisGroup = _a.axisGroup, gridGroup = _a.gridGroup, translation = _a.translation, gridLineGroupSelection = _a.gridLineGroupSelection, gridPadding = _a.gridPadding, gridLength = _a.gridLength;\n var rotation = toRadians$1(this.rotation);\n var sideFlag = label.mirrored ? 1 : -1;\n var translationX = Math.floor(translation.x);\n var translationY = Math.floor(translation.y);\n crossLineGroup.translationX = translationX;\n crossLineGroup.translationY = translationY;\n crossLineGroup.rotation = rotation;\n axisGroup.translationX = translationX;\n axisGroup.translationY = translationY;\n axisGroup.rotation = rotation;\n gridGroup.translationX = translationX;\n gridGroup.translationY = translationY;\n gridGroup.rotation = rotation;\n gridLineGroupSelection.each(function (line) {\n line.x1 = gridPadding;\n line.x2 = -sideFlag * gridLength + gridPadding;\n line.y1 = 0;\n line.y2 = 0;\n });\n };\n Axis.prototype.updateSecondaryAxisTicks = function (_primaryTickCount) {\n throw new Error('AG Charts - unexpected call to updateSecondaryAxisTicks() - check axes configuration.');\n };\n Axis.prototype.updateSelections = function (_a) {\n var ticks = _a.ticks, halfBandwidth = _a.halfBandwidth, gridLength = _a.gridLength;\n var scale = this.scale;\n var data = ticks.map(function (t) { return ({ tick: t, translationY: scale.convert(t) + halfBandwidth }); });\n var gridLineGroupSelection = this.radialGrid\n ? this.gridLineGroupSelection\n : this.gridLineGroupSelection.update(gridLength ? data : [], function (group) {\n var node = new Line();\n node.tag = Tags.GridLine;\n group.append(node);\n });\n var gridArcGroupSelection = this.radialGrid\n ? this.gridArcGroupSelection.update(gridLength ? data : [], function (group) {\n var node = new Arc();\n node.tag = Tags.GridArc;\n group.append(node);\n })\n : this.gridArcGroupSelection;\n var tickLineGroupSelection = this.tickLineGroupSelection.update(data, function (group) {\n var line = new Line();\n line.tag = Tags.TickLine;\n group.appendChild(line);\n });\n var tickLabelGroupSelection = this.tickLabelGroupSelection.update(data, function (group) {\n var text = new Text();\n text.tag = Tags.TickLabel;\n group.appendChild(text);\n });\n // We need raw `translationY` values on `datum` for accurate label collision detection in axes.update()\n // But node `translationY` values must be rounded to get pixel grid alignment\n var translationFn = function (node) { return (node.translationY = Math.round(node.datum.translationY)); };\n gridLineGroupSelection.each(translationFn);\n gridArcGroupSelection.each(translationFn);\n tickLineGroupSelection.each(translationFn);\n tickLabelGroupSelection.each(translationFn);\n this.tickLineGroupSelection = tickLineGroupSelection;\n this.tickLabelGroupSelection = tickLabelGroupSelection;\n this.gridLineGroupSelection = gridLineGroupSelection;\n this.gridArcGroupSelection = gridArcGroupSelection;\n };\n Axis.prototype.updateGridLines = function (_a) {\n var gridLength = _a.gridLength, halfBandwidth = _a.halfBandwidth, sideFlag = _a.sideFlag;\n var _b = this, gridStyle = _b.gridStyle, scale = _b.scale, tick = _b.tick, gridPadding = _b.gridPadding;\n if (gridLength && gridStyle.length) {\n var styleCount_1 = gridStyle.length;\n var grid = void 0;\n if (this.radialGrid) {\n var angularGridLength_1 = normalizeAngle360Inclusive(toRadians$1(gridLength));\n grid = this.gridArcGroupSelection.each(function (arc, datum) {\n var radius = Math.round(scale.convert(datum) + halfBandwidth);\n arc.centerX = 0;\n arc.centerY = scale.range[0] - radius;\n arc.endAngle = angularGridLength_1;\n arc.radius = radius;\n });\n }\n else {\n grid = this.gridLineGroupSelection.each(function (line) {\n line.x1 = gridPadding;\n line.x2 = -sideFlag * gridLength + gridPadding;\n line.y1 = 0;\n line.y2 = 0;\n });\n }\n grid.each(function (node, _, index) {\n var style = gridStyle[index % styleCount_1];\n node.stroke = style.stroke;\n node.strokeWidth = tick.width;\n node.lineDash = style.lineDash;\n node.fill = undefined;\n });\n }\n };\n Axis.prototype.updateLabels = function (_a) {\n var _this = this;\n var ticks = _a.ticks, tickLabelGroupSelection = _a.tickLabelGroupSelection, sideFlag = _a.sideFlag, parallelFlipRotation = _a.parallelFlipRotation, regularFlipRotation = _a.regularFlipRotation;\n var _b = this, label = _b.label, _c = _b.label, parallel = _c.parallel, rotation = _c.rotation, tick = _b.tick;\n var labelAutoRotation = 0;\n var _d = calculateLabelRotation({\n rotation: rotation,\n parallel: parallel,\n regularFlipRotation: regularFlipRotation,\n parallelFlipRotation: parallelFlipRotation,\n }), autoRotation = _d.autoRotation, labelRotation = _d.labelRotation, parallelFlipFlag = _d.parallelFlipFlag, regularFlipFlag = _d.regularFlipFlag;\n // `ticks instanceof NumericTicks` doesn't work here, so we feature detect.\n this.fractionDigits = ticks.fractionDigits >= 0 ? ticks.fractionDigits : 0;\n // Update properties that affect the size of the axis labels and measure the labels\n var labelBboxes = new Map();\n var labelX = sideFlag * (tick.size + label.padding + this.seriesAreaPadding);\n var labelMatrix = new Matrix();\n Matrix.updateTransformMatrix(labelMatrix, 1, 1, autoRotation, 0, 0);\n var labelData = [];\n var labelSelection = tickLabelGroupSelection.each(function (node, datum, index) {\n var tick = datum.tick, translationY = datum.translationY;\n node.fontStyle = label.fontStyle;\n node.fontWeight = label.fontWeight;\n node.fontSize = label.fontSize;\n node.fontFamily = label.fontFamily;\n node.fill = label.color;\n node.text = _this.formatTickDatum(tick, index);\n var userHidden = node.text === '' || node.text == undefined;\n var bbox = node.computeBBox();\n var width = bbox.width, height = bbox.height;\n var translatedBBox = new BBox(labelX, translationY, 0, 0);\n labelMatrix.transformBBox(translatedBBox, bbox);\n var _a = bbox.x, x = _a === void 0 ? 0 : _a, _b = bbox.y, y = _b === void 0 ? 0 : _b;\n bbox.width = width;\n bbox.height = height;\n labelBboxes.set(index, userHidden ? null : bbox);\n if (userHidden) {\n return;\n }\n labelData.push({\n point: {\n x: x,\n y: y,\n size: 0,\n },\n label: {\n width: width,\n height: height,\n text: '',\n },\n });\n });\n var labelSpacing = this.getLabelSpacing();\n var rotate = axisLabelsOverlap(labelData, labelSpacing);\n if (label.rotation === undefined && label.autoRotate === true && rotate) {\n // When no user label rotation angle has been specified and the width of any label exceeds the average tick gap (`rotate` is `true`),\n // automatically rotate the labels\n labelAutoRotation = normalizeAngle360(toRadians$1(label.autoRotateAngle));\n }\n var labelTextBaseline = 'middle';\n if (parallel && !labelRotation) {\n if (sideFlag * parallelFlipFlag === -1) {\n labelTextBaseline = 'hanging';\n }\n else {\n labelTextBaseline = 'bottom';\n }\n }\n var labelRotated = labelRotation > 0 && labelRotation <= Math.PI;\n var labelAutoRotated = labelAutoRotation > 0 && labelAutoRotation <= Math.PI;\n var alignFlag = labelRotated || labelAutoRotated ? -1 : 1;\n var labelTextAlign = 'start';\n if (parallel) {\n if (labelRotation || labelAutoRotation) {\n if (sideFlag * alignFlag === -1) {\n labelTextAlign = 'end';\n }\n }\n else {\n labelTextAlign = 'center';\n }\n }\n else if (sideFlag * regularFlipFlag === -1) {\n labelTextAlign = 'end';\n }\n var combinedRotation = autoRotation + labelRotation + labelAutoRotation;\n if (combinedRotation) {\n Matrix.updateTransformMatrix(labelMatrix, 1, 1, combinedRotation, 0, 0);\n }\n labelData = [];\n labelSelection.each(function (label, datum, index) {\n if (label.text === '' || label.text == undefined) {\n label.visible = false; // hide empty labels\n return;\n }\n label.textBaseline = labelTextBaseline;\n label.textAlign = labelTextAlign;\n label.x = labelX;\n label.rotationCenterX = labelX;\n label.rotation = combinedRotation;\n // Text.computeBBox() does not take into account any of the transformations that have been applied to the label nodes, only the width and height are useful.\n // Rather than taking into account all transformations including those of parent nodes which would be the result of `computeTransformedBBox()`, giving the x and y in the entire axis coordinate space,\n // take into account only the rotation and translation applied to individual label nodes to get the x y coordinates of the labels relative to each other\n // this makes label collision detection a lot simpler\n var bbox = labelBboxes.get(index);\n if (!bbox) {\n return;\n }\n label.visible = true;\n var _a = bbox.width, width = _a === void 0 ? 0 : _a, _b = bbox.height, height = _b === void 0 ? 0 : _b;\n var translationY = datum.translationY;\n var translatedBBox = new BBox(labelX, translationY, 0, 0);\n labelMatrix.transformBBox(translatedBBox, bbox);\n var _c = bbox.x, x = _c === void 0 ? 0 : _c, _d = bbox.y, y = _d === void 0 ? 0 : _d;\n labelData.push({\n point: {\n x: x,\n y: y,\n size: 0,\n },\n label: {\n width: width,\n height: height,\n text: label.text,\n },\n });\n });\n this.layout.label = {\n align: labelTextAlign,\n baseline: labelTextBaseline,\n rotation: combinedRotation,\n fractionDigits: this.fractionDigits,\n padding: this.label.padding,\n format: this.label.format,\n };\n return { labelData: labelData, rotated: !!(labelRotation || labelAutoRotation) };\n };\n Axis.prototype.updateLine = function () {\n // Render axis line.\n var _a = this, lineNode = _a.lineNode, requestedRange = _a.requestedRange;\n lineNode.x1 = 0;\n lineNode.x2 = 0;\n lineNode.y1 = requestedRange[0];\n lineNode.y2 = requestedRange[1];\n lineNode.strokeWidth = this.line.width;\n lineNode.stroke = this.line.color;\n lineNode.visible = true;\n };\n Axis.prototype.updateTitle = function (_a) {\n var ticks = _a.ticks;\n var _b = this, label = _b.label, rotation = _b.rotation, title = _b.title, lineNode = _b.lineNode, requestedRange = _b.requestedRange, tickLineGroup = _b.tickLineGroup, tickLabelGroup = _b.tickLabelGroup;\n if (!title) {\n return;\n }\n var titleVisible = false;\n if (title.enabled && lineNode.visible) {\n titleVisible = true;\n var sideFlag = label.mirrored ? 1 : -1;\n var parallelFlipRotation = normalizeAngle360(rotation);\n var padding = Caption.PADDING;\n var titleNode = title.node;\n var titleRotationFlag = sideFlag === -1 && parallelFlipRotation > Math.PI && parallelFlipRotation < Math.PI * 2 ? -1 : 1;\n titleNode.rotation = (titleRotationFlag * sideFlag * Math.PI) / 2;\n titleNode.x = Math.floor((titleRotationFlag * sideFlag * (requestedRange[0] + requestedRange[1])) / 2);\n var bboxYDimension = 0;\n if ((ticks === null || ticks === void 0 ? void 0 : ticks.length) > 0) {\n var tickBBox = Group.computeBBox([tickLineGroup, tickLabelGroup]);\n var tickWidth = rotation === 0 ? tickBBox.width : tickBBox.height;\n if (Math.abs(tickWidth) < Infinity) {\n bboxYDimension += tickWidth;\n }\n }\n if (sideFlag === -1) {\n titleNode.y = Math.floor(titleRotationFlag * (-padding - bboxYDimension));\n }\n else {\n titleNode.y = Math.floor(-padding - bboxYDimension);\n }\n titleNode.textBaseline = titleRotationFlag === 1 ? 'bottom' : 'top';\n }\n title.node.visible = titleVisible;\n };\n // For formatting (nice rounded) tick values.\n Axis.prototype.formatTickDatum = function (datum, index) {\n var _a = this, label = _a.label, labelFormatter = _a.labelFormatter, fractionDigits = _a.fractionDigits;\n if (label.formatter) {\n return label.formatter({\n value: fractionDigits > 0 ? datum : String(datum),\n index: index,\n fractionDigits: fractionDigits,\n formatter: labelFormatter,\n });\n }\n else if (labelFormatter) {\n return labelFormatter(datum);\n }\n // The axis is using a logScale or the`datum` is an integer, a string or an object\n return String(datum);\n };\n // For formatting arbitrary values between the ticks.\n Axis.prototype.formatDatum = function (datum) {\n return String(datum);\n };\n Axis.prototype.computeBBox = function () {\n return this.axisGroup.computeBBox();\n };\n Axis.prototype.initCrossLine = function (crossLine) {\n crossLine.scale = this.scale;\n crossLine.gridLength = this.gridLength;\n };\n Axis.prototype.isAnySeriesActive = function () {\n return false;\n };\n Axis.prototype.clipTickLines = function (x, y, width, height) {\n this.tickLineGroup.setClipRectInGroupCoordinateSpace(new BBox(x, y, width, height));\n };\n Axis.prototype.clipGrid = function (x, y, width, height) {\n this.gridGroup.setClipRectInGroupCoordinateSpace(new BBox(x, y, width, height));\n };\n Axis.prototype.calculatePadding = function (min, _max) {\n return Math.abs(min * 0.01);\n };\n Axis.defaultTickMinSpacing = 50;\n __decorate$1D([\n Validate(BOOLEAN)\n ], Axis.prototype, \"nice\", void 0);\n __decorate$1D([\n Validate(GRID_STYLE)\n ], Axis.prototype, \"gridStyle\", void 0);\n __decorate$1D([\n Validate(NUMBER(0))\n ], Axis.prototype, \"thickness\", void 0);\n return Axis;\n}());\n\nvar __extends$2l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read$N = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/**\n * Maps continuous domain to a continuous range.\n */\nvar LinearScale$1 = /** @class */ (function (_super) {\n __extends$2l(LinearScale, _super);\n function LinearScale() {\n var _this = _super.call(this, [0, 1], [0, 1]) || this;\n _this.type = 'linear';\n return _this;\n }\n LinearScale.prototype.toDomain = function (d) {\n return d;\n };\n LinearScale.prototype.ticks = function () {\n var _a;\n var count = (_a = this.tickCount) !== null && _a !== void 0 ? _a : ContinuousScale.defaultTickCount;\n if (!this.domain || this.domain.length < 2 || count < 1 || this.domain.some(function (d) { return !isFinite(d); })) {\n return [];\n }\n this.refresh();\n var _b = __read$N(this.getDomain(), 2), d0 = _b[0], d1 = _b[1];\n var interval = this.interval;\n if (interval) {\n var step = Math.abs(interval);\n if (!this.isDenseInterval({ start: d0, stop: d1, interval: step })) {\n return range(d0, d1, step);\n }\n }\n return ticks(d0, d1, count, this.minTickCount, this.maxTickCount);\n };\n LinearScale.prototype.update = function () {\n if (!this.domain || this.domain.length < 2) {\n return;\n }\n if (this.nice) {\n this.updateNiceDomain();\n }\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * @param count Tick count.\n */\n LinearScale.prototype.updateNiceDomain = function () {\n var _a, _b;\n var count = (_a = this.tickCount) !== null && _a !== void 0 ? _a : ContinuousScale.defaultTickCount;\n var _c = __read$N(this.domain, 2), start = _c[0], stop = _c[1];\n if (count < 1) {\n this.niceDomain = [start, stop];\n return;\n }\n if (count === 1) {\n this.niceDomain = singleTickDomain(start, stop);\n return;\n }\n var maxAttempts = 4;\n var prev0 = start;\n var prev1 = stop;\n for (var i = 0; i < maxAttempts; i++) {\n var step = (_b = this.interval) !== null && _b !== void 0 ? _b : tickStep(start, stop, count, this.minTickCount, this.maxTickCount);\n var _d = __read$N(this.domain, 2), d0 = _d[0], d1 = _d[1];\n if (step >= 1) {\n start = Math.floor(d0 / step) * step;\n stop = Math.ceil(d1 / step) * step;\n }\n else {\n // Prevent floating point error\n var s = 1 / step;\n start = Math.floor(d0 * s) / s;\n stop = Math.ceil(d1 * s) / s;\n }\n if (start === prev0 && stop === prev1) {\n break;\n }\n prev0 = start;\n prev1 = stop;\n }\n this.niceDomain = [start, stop];\n };\n LinearScale.prototype.tickFormat = function (_a) {\n var ticks = _a.ticks, specifier = _a.specifier;\n return tickFormat(ticks || this.ticks(), specifier);\n };\n return LinearScale;\n}(ContinuousScale));\n\nvar __extends$2k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$E = (undefined && undefined.__assign) || function () {\n __assign$E = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$E.apply(this, arguments);\n};\nvar __decorate$1C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$M = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$r = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$M(arguments[i]));\n return ar;\n};\nvar __values$o = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction flipChartAxisDirection(direction) {\n if (direction === ChartAxisDirection.X) {\n return ChartAxisDirection.Y;\n }\n else {\n return ChartAxisDirection.X;\n }\n}\nvar ChartAxis = /** @class */ (function (_super) {\n __extends$2k(ChartAxis, _super);\n function ChartAxis(moduleCtx, scale) {\n var _this = _super.call(this, scale) || this;\n _this.moduleCtx = moduleCtx;\n _this.keys = [];\n _this.direction = ChartAxisDirection.Y;\n _this.boundSeries = [];\n _this.includeInvisibleDomains = false;\n _this.modules = {};\n _this._position = 'left';\n return _this;\n }\n Object.defineProperty(ChartAxis.prototype, \"type\", {\n get: function () {\n return this.constructor.type || '';\n },\n enumerable: false,\n configurable: true\n });\n ChartAxis.prototype.useCalculatedTickCount = function () {\n // We only want to use the new algorithm for number axes. Category axes don't use a\n // calculated or user-supplied tick-count, and time axes need special handling depending on\n // the time-range involved.\n return this.scale instanceof LinearScale$1;\n };\n Object.defineProperty(ChartAxis.prototype, \"position\", {\n get: function () {\n return this._position;\n },\n set: function (value) {\n if (this._position !== value) {\n this._position = value;\n switch (value) {\n case 'top':\n this.direction = ChartAxisDirection.X;\n this.rotation = -90;\n this.label.mirrored = true;\n this.label.parallel = true;\n break;\n case 'right':\n this.direction = ChartAxisDirection.Y;\n this.rotation = 0;\n this.label.mirrored = true;\n this.label.parallel = false;\n break;\n case 'bottom':\n this.direction = ChartAxisDirection.X;\n this.rotation = -90;\n this.label.mirrored = false;\n this.label.parallel = true;\n break;\n case 'left':\n this.direction = ChartAxisDirection.Y;\n this.rotation = 0;\n this.label.mirrored = false;\n this.label.parallel = false;\n break;\n }\n if (this.axisContext) {\n this.axisContext.position = value;\n this.axisContext.direction = this.direction;\n }\n }\n },\n enumerable: false,\n configurable: true\n });\n ChartAxis.prototype.calculateDomain = function () {\n var _a;\n var _b = this, direction = _b.direction, boundSeries = _b.boundSeries, includeInvisibleDomains = _b.includeInvisibleDomains;\n if (this.linkedTo) {\n this.dataDomain = this.linkedTo.dataDomain;\n }\n else {\n var domains_1 = [];\n boundSeries\n .filter(function (s) { return includeInvisibleDomains || s.isEnabled(); })\n .forEach(function (series) {\n domains_1.push(series.getDomain(direction));\n });\n var domain = (_a = new Array()).concat.apply(_a, __spread$r(domains_1));\n this.dataDomain = this.normaliseDataDomain(domain);\n }\n };\n ChartAxis.prototype.normaliseDataDomain = function (d) {\n return d;\n };\n ChartAxis.prototype.isAnySeriesActive = function () {\n var _this = this;\n return this.boundSeries.some(function (s) { return _this.includeInvisibleDomains || s.isEnabled(); });\n };\n ChartAxis.prototype.getLayoutState = function () {\n return __assign$E({ rect: this.computeBBox(), gridPadding: this.gridPadding, seriesAreaPadding: this.seriesAreaPadding, tickSize: this.tick.size }, this.layout);\n };\n ChartAxis.prototype.addModule = function (module) {\n var _this = this;\n if (this.modules[module.optionsKey] != null) {\n throw new Error('AG Charts - module already initialised: ' + module.optionsKey);\n }\n if (this.axisContext == null) {\n var keys = function () {\n return _this.boundSeries\n .map(function (s) { return s.getKeys(_this.direction); })\n .reduce(function (keys, seriesKeys) {\n keys.push.apply(keys, __spread$r(seriesKeys));\n return keys;\n }, []);\n };\n this.axisContext = {\n axisId: this.id,\n position: this.position,\n direction: this.direction,\n continuous: this.scale instanceof ContinuousScale,\n keys: keys,\n scaleValueFormatter: function (specifier) { var _a, _b, _c; return (_c = (_b = (_a = _this.scale).tickFormat) === null || _b === void 0 ? void 0 : _b.call(_a, { specifier: specifier })) !== null && _c !== void 0 ? _c : undefined; },\n scaleBandwidth: function () { var _a; return (_a = _this.scale.bandwidth) !== null && _a !== void 0 ? _a : 0; },\n scaleConvert: function (val) { return _this.scale.convert(val); },\n scaleInvert: function (val) { var _a, _b, _c; return (_c = (_b = (_a = _this.scale).invert) === null || _b === void 0 ? void 0 : _b.call(_a, val)) !== null && _c !== void 0 ? _c : undefined; },\n };\n }\n var moduleMeta = module.initialiseModule(__assign$E(__assign$E({}, this.moduleCtx), { parent: this.axisContext }));\n this.modules[module.optionsKey] = moduleMeta;\n this[module.optionsKey] = moduleMeta.instance;\n };\n ChartAxis.prototype.removeModule = function (module) {\n var _a, _b;\n (_b = (_a = this.modules[module.optionsKey]) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.destroy();\n delete this.modules[module.optionsKey];\n delete this[module.optionsKey];\n };\n ChartAxis.prototype.isModuleEnabled = function (module) {\n return this.modules[module.optionsKey] != null;\n };\n ChartAxis.prototype.destroy = function () {\n var e_1, _a;\n _super.prototype.destroy.call(this);\n try {\n for (var _b = __values$o(Object.entries(this.modules)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$M(_c.value, 2), key = _d[0], module_1 = _d[1];\n module_1.instance.destroy();\n delete this.modules[key];\n delete this[key];\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n __decorate$1C([\n Validate(STRING_ARRAY)\n ], ChartAxis.prototype, \"keys\", void 0);\n __decorate$1C([\n Validate(POSITION)\n ], ChartAxis.prototype, \"_position\", void 0);\n return ChartAxis;\n}(Axis));\n\nvar __extends$2j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$L = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$q = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$L(arguments[i]));\n return ar;\n};\nvar CategoryAxis = /** @class */ (function (_super) {\n __extends$2j(CategoryAxis, _super);\n function CategoryAxis(moduleCtx) {\n var _this = _super.call(this, moduleCtx, new BandScale$5()) || this;\n _this._paddingOverrideEnabled = false;\n _this.groupPaddingInner = 0.1;\n _this.includeInvisibleDomains = true;\n return _this;\n }\n Object.defineProperty(CategoryAxis.prototype, \"paddingInner\", {\n get: function () {\n this._paddingOverrideEnabled = true;\n return this.scale.paddingInner;\n },\n set: function (value) {\n this._paddingOverrideEnabled = true;\n this.scale.paddingInner = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CategoryAxis.prototype, \"paddingOuter\", {\n get: function () {\n return this.scale.paddingOuter;\n },\n set: function (value) {\n this.scale.paddingOuter = value;\n },\n enumerable: false,\n configurable: true\n });\n CategoryAxis.prototype.normaliseDataDomain = function (d) {\n // Prevent duplicate categories.\n var valuesSet = new Set(d);\n return new (Array.bind.apply(Array, __spread$q([void 0], valuesSet.values())))();\n };\n CategoryAxis.prototype.calculateDomain = function () {\n if (!this._paddingOverrideEnabled) {\n var boundSeries = this.boundSeries;\n var paddings = boundSeries.map(function (s) { var _a; return (_a = s.getBandScalePadding) === null || _a === void 0 ? void 0 : _a.call(s); }).filter(function (p) { return p != null; });\n if (paddings.length > 0) {\n this.scale.paddingInner = Math.min.apply(Math, __spread$q(paddings.map(function (p) { return p.inner; })));\n this.scale.paddingOuter = Math.max.apply(Math, __spread$q(paddings.map(function (p) { return p.outer; })));\n }\n }\n return _super.prototype.calculateDomain.call(this);\n };\n CategoryAxis.className = 'CategoryAxis';\n CategoryAxis.type = 'category';\n __decorate$1B([\n Validate(NUMBER(0, 1))\n ], CategoryAxis.prototype, \"groupPaddingInner\", void 0);\n return CategoryAxis;\n}(ChartAxis));\n\nvar __assign$D = (undefined && undefined.__assign) || function () {\n __assign$D = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$D.apply(this, arguments);\n};\nvar __read$K = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$p = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$K(arguments[i]));\n return ar;\n};\nvar __values$n = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n/**\n * Performs a JSON-diff between a source and target JSON structure.\n *\n * On a per property basis, takes the target property value where:\n * - types are different.\n * - type is primitive.\n * - type is array and length or content have changed.\n *\n * Recurses for object types.\n *\n * @param source starting point for diff\n * @param target target for diff vs. source\n *\n * @returns `null` if no differences, or an object with the subset of properties that have changed.\n */\nfunction jsonDiff(source, target) {\n var e_1, _a;\n var sourceType = classify(source);\n var targetType = classify(target);\n if (targetType === 'array') {\n var targetArray = target;\n if (sourceType !== 'array' || source.length !== targetArray.length) {\n return __spread$p(targetArray);\n }\n if (targetArray.some(function (targetElement, i) { var _a; return jsonDiff((_a = source) === null || _a === void 0 ? void 0 : _a[i], targetElement) != null; })) {\n return __spread$p(targetArray);\n }\n return null;\n }\n if (targetType === 'primitive') {\n if (sourceType !== 'primitive') {\n return __assign$D({}, target);\n }\n if (source !== target) {\n return target;\n }\n return null;\n }\n var lhs = source || {};\n var rhs = target || {};\n var allProps = new Set(__spread$p(Object.keys(lhs), Object.keys(rhs)));\n var propsChangedCount = 0;\n var result = {};\n var _loop_1 = function (prop) {\n // Cheap-and-easy equality check.\n if (lhs[prop] === rhs[prop]) {\n return \"continue\";\n }\n var take = function (v) {\n result[prop] = v;\n propsChangedCount++;\n };\n var lhsType = classify(lhs[prop]);\n var rhsType = classify(rhs[prop]);\n if (lhsType !== rhsType) {\n // Types changed, just take RHS.\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'primitive' || rhsType === null) {\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'array' && lhs[prop].length !== rhs[prop].length) {\n // Arrays are different sizes, so just take target array.\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'class-instance') {\n // Don't try to do anything tricky with array diffs!\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'function' && lhs[prop] !== rhs[prop]) {\n take(rhs[prop]);\n return \"continue\";\n }\n var diff = jsonDiff(lhs[prop], rhs[prop]);\n if (diff !== null) {\n take(diff);\n }\n };\n try {\n for (var allProps_1 = __values$n(allProps), allProps_1_1 = allProps_1.next(); !allProps_1_1.done; allProps_1_1 = allProps_1.next()) {\n var prop = allProps_1_1.value;\n _loop_1(prop);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (allProps_1_1 && !allProps_1_1.done && (_a = allProps_1.return)) _a.call(allProps_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return propsChangedCount === 0 ? null : result;\n}\n/**\n * Special value used by `jsonMerge` to signal that a property should be removed from the merged\n * output.\n */\nvar DELETE = Symbol('<delete-property>');\nvar NOT_SPECIFIED = Symbol('<unspecified-property>');\n/**\n * Merge together the provide JSON object structures, with the precedence of application running\n * from higher indexes to lower indexes.\n *\n * Deep-clones all objects to avoid mutation of the inputs changing the output object. For arrays,\n * just performs a deep-clone of the entire array, no merging of elements attempted.\n *\n * @param json all json objects to merge\n * @param opts merge options\n * @param opts.avoidDeepClone contains a list of properties where deep clones should be avoided\n *\n * @returns the combination of all of the json inputs\n */\nfunction jsonMerge(json, opts) {\n var e_2, _a;\n var avoidDeepClone = (opts === null || opts === void 0 ? void 0 : opts.avoidDeepClone) || [];\n var jsonTypes = json.map(function (v) { return classify(v); });\n if (jsonTypes.some(function (v) { return v === 'array'; })) {\n // Clone final array.\n var finalValue = json[json.length - 1];\n if (finalValue instanceof Array) {\n return finalValue.map(function (v) {\n var type = classify(v);\n if (type === 'array')\n return jsonMerge([[], v], opts);\n if (type === 'object')\n return jsonMerge([{}, v], opts);\n return v;\n });\n }\n return finalValue;\n }\n var result = {};\n var props = new Set(json.map(function (v) { return (v != null ? Object.keys(v) : []); }).reduce(function (r, n) { return r.concat(n); }, []));\n var _loop_2 = function (nextProp) {\n var values = json\n .map(function (j) { return (j != null && nextProp in j ? j[nextProp] : NOT_SPECIFIED); })\n .filter(function (v) { return v !== NOT_SPECIFIED; });\n if (values.length === 0) {\n return \"continue\";\n }\n var lastValue = values[values.length - 1];\n if (lastValue === DELETE) {\n return \"continue\";\n }\n var types = values.map(function (v) { return classify(v); });\n var type = types[0];\n if (types.some(function (t) { return t !== type; })) {\n // Short-circuit if mismatching types.\n result[nextProp] = lastValue;\n return \"continue\";\n }\n if ((type === 'array' || type === 'object') && !avoidDeepClone.includes(nextProp)) {\n result[nextProp] = jsonMerge(values, opts);\n }\n else if (type === 'array') {\n // Arrays need to be shallow copied to avoid external mutation and allow jsonDiff to\n // detect changes.\n result[nextProp] = __spread$p(lastValue);\n }\n else {\n // Just directly assign/overwrite.\n result[nextProp] = lastValue;\n }\n };\n try {\n for (var props_1 = __values$n(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var nextProp = props_1_1.value;\n _loop_2(nextProp);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return result;\n}\n/**\n * Recursively apply a JSON object into a class-hierarchy, optionally instantiating certain classes\n * by property name.\n *\n * @param target to apply source JSON properties into\n * @param source to be applied\n * @param params.path path for logging/error purposes, to aid with pinpointing problems\n * @param params.matcherPath path for pattern matching, to lookup allowedTypes override.\n * @param params.skip property names to skip from the source\n * @param params.constructors dictionary of property name to class constructors for properties that\n * require object construction\n * @param params.allowedTypes overrides by path for allowed property types\n */\nfunction jsonApply(target, source, params) {\n var _a;\n if (params === void 0) { params = {}; }\n var _b = params.path, path = _b === void 0 ? undefined : _b, _c = params.matcherPath, matcherPath = _c === void 0 ? path ? path.replace(/(\\[[0-9+]+\\])/i, '[]') : undefined : _c, _d = params.skip, skip = _d === void 0 ? [] : _d, _e = params.constructors, constructors = _e === void 0 ? {} : _e, _f = params.allowedTypes, allowedTypes = _f === void 0 ? {} : _f, idx = params.idx;\n if (target == null) {\n throw new Error(\"AG Charts - target is uninitialised: \" + (path || '<root>'));\n }\n if (source == null) {\n return target;\n }\n var targetAny = target;\n if (idx != null && '_declarationOrder' in targetAny) {\n targetAny['_declarationOrder'] = idx;\n }\n var targetType = classify(target);\n var _loop_3 = function (property) {\n var propertyMatcherPath = \"\" + (matcherPath ? matcherPath + '.' : '') + property;\n if (skip.indexOf(propertyMatcherPath) >= 0) {\n return \"continue\";\n }\n var newValue = source[property];\n var propertyPath = \"\" + (path ? path + '.' : '') + property;\n var targetClass = targetAny.constructor;\n var currentValue = targetAny[property];\n var ctr = (_a = constructors[property]) !== null && _a !== void 0 ? _a : constructors[propertyMatcherPath];\n try {\n var currentValueType = classify(currentValue);\n var newValueType = classify(newValue);\n if (targetType === 'class-instance' &&\n !(property in target || Object.prototype.hasOwnProperty.call(targetAny, property))) {\n Logger.warn(\"unable to set [\" + propertyPath + \"] in \" + (targetClass === null || targetClass === void 0 ? void 0 : targetClass.name) + \" - property is unknown\");\n return \"continue\";\n }\n var allowableTypes = allowedTypes[propertyMatcherPath] || [currentValueType];\n if (currentValueType === 'class-instance' && newValueType === 'object') {\n // Allowed, this is the common case! - do not error.\n }\n else if (currentValueType != null && newValueType != null && !allowableTypes.includes(newValueType)) {\n Logger.warn(\"unable to set [\" + propertyPath + \"] in \" + (targetClass === null || targetClass === void 0 ? void 0 : targetClass.name) + \" - can't apply type of [\" + newValueType + \"], allowed types are: [\" + allowableTypes + \"]\");\n return \"continue\";\n }\n if (newValueType === 'array') {\n ctr = ctr !== null && ctr !== void 0 ? ctr : constructors[propertyMatcherPath + \"[]\"];\n if (ctr != null) {\n var newValueArray = newValue;\n targetAny[property] = newValueArray.map(function (v, idx) {\n return jsonApply(new ctr(), v, __assign$D(__assign$D({}, params), { path: propertyPath, matcherPath: propertyMatcherPath + '[]', idx: idx }));\n });\n }\n else {\n targetAny[property] = newValue;\n }\n }\n else if (newValueType === 'class-instance') {\n targetAny[property] = newValue;\n }\n else if (newValueType === 'object') {\n if (currentValue != null) {\n jsonApply(currentValue, newValue, __assign$D(__assign$D({}, params), { path: propertyPath, matcherPath: propertyMatcherPath, idx: undefined }));\n }\n else if (ctr != null) {\n targetAny[property] = jsonApply(new ctr(), newValue, __assign$D(__assign$D({}, params), { path: propertyPath, matcherPath: propertyMatcherPath, idx: undefined }));\n }\n else {\n targetAny[property] = newValue;\n }\n }\n else {\n targetAny[property] = newValue;\n }\n }\n catch (error) {\n var err = error;\n Logger.warn(\"unable to set [\" + propertyPath + \"] in [\" + (targetClass === null || targetClass === void 0 ? void 0 : targetClass.name) + \"]; nested error is: \" + err.message);\n return \"continue\";\n }\n };\n for (var property in source) {\n _loop_3(property);\n }\n return target;\n}\n/**\n * Walk the given JSON object graphs, invoking the visit() callback for every object encountered.\n * Arrays are descended into without a callback, however their elements will have the visit()\n * callback invoked if they are objects.\n *\n * @param json to traverse\n * @param visit callback for each non-primitive and non-array object found\n * @param opts.skip property names to skip when walking\n * @param jsons to traverse in parallel\n */\nfunction jsonWalk(json, visit, opts) {\n var jsons = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n jsons[_i - 3] = arguments[_i];\n }\n var jsonType = classify(json);\n var skip = opts.skip || [];\n if (jsonType === 'array') {\n json.forEach(function (element, index) {\n jsonWalk.apply(void 0, __spread$p([element, visit, opts], (jsons !== null && jsons !== void 0 ? jsons : []).map(function (o) { return o === null || o === void 0 ? void 0 : o[index]; })));\n });\n return;\n }\n else if (jsonType !== 'object') {\n return;\n }\n visit.apply(void 0, __spread$p([jsonType, json], jsons));\n var _loop_4 = function (property) {\n if (skip.indexOf(property) >= 0) {\n return \"continue\";\n }\n var value = json[property];\n var otherValues = jsons === null || jsons === void 0 ? void 0 : jsons.map(function (o) { return o === null || o === void 0 ? void 0 : o[property]; });\n var valueType = classify(value);\n if (valueType === 'object' || valueType === 'array') {\n jsonWalk.apply(void 0, __spread$p([value, visit, opts], otherValues));\n }\n };\n for (var property in json) {\n _loop_4(property);\n }\n}\n/**\n * Classify the type of a value to assist with handling for merge purposes.\n */\nfunction classify(value) {\n if (value == null) {\n return null;\n }\n else if (value instanceof HTMLElement) {\n return 'primitive';\n }\n else if (value instanceof Array) {\n return 'array';\n }\n else if (value instanceof Date) {\n return 'primitive';\n }\n else if (typeof value === 'object' && value.constructor === Object) {\n return 'object';\n }\n else if (typeof value === 'function') {\n return 'function';\n }\n else if (typeof value === 'object' && value.constructor != null) {\n return 'class-instance';\n }\n return 'primitive';\n}\n\nvar __extends$2i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$d = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$d = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$J = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$o = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$J(arguments[i]));\n return ar;\n};\nvar __values$m = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar _a;\nvar DEFAULT_DIRECTION_KEYS = (_a = {},\n _a[ChartAxisDirection.X] = ['xKey'],\n _a[ChartAxisDirection.Y] = ['yKey'],\n _a);\nvar CartesianSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n __extends$2i(CartesianSeriesNodeBaseClickEvent, _super);\n function CartesianSeriesNodeBaseClickEvent(xKey, yKey, nativeEvent, datum, series) {\n var _this = _super.call(this, nativeEvent, datum, series) || this;\n _this.xKey = xKey;\n _this.yKey = yKey;\n return _this;\n }\n return CartesianSeriesNodeBaseClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar CartesianSeriesNodeClickEvent = /** @class */ (function (_super) {\n __extends$2i(CartesianSeriesNodeClickEvent, _super);\n function CartesianSeriesNodeClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeClick';\n return _this;\n }\n return CartesianSeriesNodeClickEvent;\n}(CartesianSeriesNodeBaseClickEvent));\nvar CartesianSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n __extends$2i(CartesianSeriesNodeDoubleClickEvent, _super);\n function CartesianSeriesNodeDoubleClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeDoubleClick';\n return _this;\n }\n return CartesianSeriesNodeDoubleClickEvent;\n}(CartesianSeriesNodeBaseClickEvent));\nvar CartesianSeries = /** @class */ (function (_super) {\n __extends$2i(CartesianSeries, _super);\n function CartesianSeries(opts) {\n if (opts === void 0) { opts = {}; }\n var _a;\n var _this = _super.call(this, {\n useSeriesGroupLayer: true,\n pickModes: opts.pickModes,\n directionKeys: (_a = opts.directionKeys) !== null && _a !== void 0 ? _a : DEFAULT_DIRECTION_KEYS,\n }) || this;\n _this._contextNodeData = [];\n _this.nodeDataDependencies = {};\n _this.highlightSelection = Selection.select(_this.highlightNode, function () {\n return _this.opts.hasMarkers ? _this.markerFactory() : _this.nodeFactory();\n });\n _this.highlightLabelSelection = Selection.select(_this.highlightLabel, Text);\n _this.subGroups = [];\n _this.subGroupId = 0;\n /**\n * The assumption is that the values will be reset (to `true`)\n * in the {@link yKeys} setter.\n */\n _this.seriesItemEnabled = new Map();\n var _b = opts.pathsPerSeries, pathsPerSeries = _b === void 0 ? 1 : _b, _c = opts.hasMarkers, hasMarkers = _c === void 0 ? false : _c, _d = opts.pathsZIndexSubOrderOffset, pathsZIndexSubOrderOffset = _d === void 0 ? [] : _d, _e = opts.renderLayerPerSubSeries, renderLayerPerSubSeries = _e === void 0 ? true : _e;\n _this.opts = { pathsPerSeries: pathsPerSeries, hasMarkers: hasMarkers, pathsZIndexSubOrderOffset: pathsZIndexSubOrderOffset, renderLayerPerSubSeries: renderLayerPerSubSeries };\n return _this;\n }\n Object.defineProperty(CartesianSeries.prototype, \"contextNodeData\", {\n get: function () {\n var _a;\n return (_a = this._contextNodeData) === null || _a === void 0 ? void 0 : _a.slice();\n },\n enumerable: false,\n configurable: true\n });\n CartesianSeries.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this._contextNodeData.splice(0, this._contextNodeData.length);\n this.subGroups.splice(0, this.subGroups.length);\n };\n /**\n * Note: we are passing `isContinuousX` and `isContinuousY` into this method because it will\n * typically be called inside a loop and this check only needs to happen once.\n * @param x A domain value to be plotted along the x-axis.\n * @param y A domain value to be plotted along the y-axis.\n * @param isContinuousX Typically this will be the value of `xAxis.scale instanceof ContinuousScale`.\n * @param isContinuousY Typically this will be the value of `yAxis.scale instanceof ContinuousScale`.\n * @returns `[x, y]`, if both x and y are valid domain values for their respective axes/scales, or `undefined`.\n */\n CartesianSeries.prototype.checkDomainXY = function (x, y, isContinuousX, isContinuousY) {\n var isValidDatum = ((isContinuousX && isContinuous(x)) || (!isContinuousX && isDiscrete(x))) &&\n ((isContinuousY && isContinuous(y)) || (!isContinuousY && isDiscrete(y)));\n return isValidDatum ? [x, y] : undefined;\n };\n /**\n * Note: we are passing the xAxis and yAxis because the calling code is supposed to make sure\n * that series has both of them defined, and also to avoid one level of indirection,\n * e.g. `this.xAxis!.inRange(x)`, both of which are suboptimal in tight loops where this method is used.\n * @param x A range value to be plotted along the x-axis.\n * @param y A range value to be plotted along the y-axis.\n * @param xAxis The series' x-axis.\n * @param yAxis The series' y-axis.\n * @returns\n */\n CartesianSeries.prototype.checkRangeXY = function (x, y, xAxis, yAxis) {\n return !isNaN(x) && !isNaN(y) && xAxis.inRange(x) && yAxis.inRange(y);\n };\n CartesianSeries.prototype.update = function (_a) {\n var _b, _c;\n var seriesRect = _a.seriesRect;\n return __awaiter$d(this, void 0, void 0, function () {\n var _d, seriesItemEnabled, visible, series, seriesHighlighted, anySeriesItemEnabled, newNodeDataDependencies;\n return __generator$d(this, function (_e) {\n switch (_e.label) {\n case 0:\n _d = this, seriesItemEnabled = _d.seriesItemEnabled, visible = _d.visible;\n series = ((_c = (_b = this.highlightManager) === null || _b === void 0 ? void 0 : _b.getActiveHighlight()) !== null && _c !== void 0 ? _c : {}).series;\n seriesHighlighted = series ? series === this : undefined;\n anySeriesItemEnabled = (visible && seriesItemEnabled.size === 0) || __spread$o(seriesItemEnabled.values()).some(function (v) { return v === true; });\n newNodeDataDependencies = {\n seriesRectWidth: seriesRect === null || seriesRect === void 0 ? void 0 : seriesRect.width,\n seriesRectHeight: seriesRect === null || seriesRect === void 0 ? void 0 : seriesRect.height,\n };\n if (jsonDiff(this.nodeDataDependencies, newNodeDataDependencies) != null) {\n this.nodeDataDependencies = newNodeDataDependencies;\n this.markNodeDataDirty();\n }\n return [4 /*yield*/, this.updateSelections(seriesHighlighted, anySeriesItemEnabled)];\n case 1:\n _e.sent();\n return [4 /*yield*/, this.updateNodes(seriesHighlighted, anySeriesItemEnabled)];\n case 2:\n _e.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.updateSelections = function (seriesHighlighted, anySeriesItemEnabled) {\n return __awaiter$d(this, void 0, void 0, function () {\n var _a;\n var _this = this;\n return __generator$d(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.updateHighlightSelection(seriesHighlighted)];\n case 1:\n _b.sent();\n if (!anySeriesItemEnabled) {\n return [2 /*return*/];\n }\n if (!this.nodeDataRefresh && !this.isPathOrSelectionDirty()) {\n return [2 /*return*/];\n }\n if (!this.nodeDataRefresh) return [3 /*break*/, 4];\n this.nodeDataRefresh = false;\n _a = this;\n return [4 /*yield*/, this.createNodeData()];\n case 2:\n _a._contextNodeData = _b.sent();\n return [4 /*yield*/, this.updateSeriesGroups()];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4: return [4 /*yield*/, Promise.all(this.subGroups.map(function (g, i) { return _this.updateSeriesGroupSelections(g, i, seriesHighlighted); }))];\n case 5:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.updateSeriesGroupSelections = function (subGroup, seriesIdx, seriesHighlighted) {\n return __awaiter$d(this, void 0, void 0, function () {\n var datumSelection, labelSelection, markerSelection, paths, contextData, nodeData, labelData, itemId, _a, _b, _c;\n return __generator$d(this, function (_d) {\n switch (_d.label) {\n case 0:\n datumSelection = subGroup.datumSelection, labelSelection = subGroup.labelSelection, markerSelection = subGroup.markerSelection, paths = subGroup.paths;\n contextData = this._contextNodeData[seriesIdx];\n nodeData = contextData.nodeData, labelData = contextData.labelData, itemId = contextData.itemId;\n return [4 /*yield*/, this.updatePaths({ seriesHighlighted: seriesHighlighted, itemId: itemId, contextData: contextData, paths: paths, seriesIdx: seriesIdx })];\n case 1:\n _d.sent();\n _a = subGroup;\n return [4 /*yield*/, this.updateDatumSelection({ nodeData: nodeData, datumSelection: datumSelection, seriesIdx: seriesIdx })];\n case 2:\n _a.datumSelection = _d.sent();\n _b = subGroup;\n return [4 /*yield*/, this.updateLabelSelection({ labelData: labelData, labelSelection: labelSelection, seriesIdx: seriesIdx })];\n case 3:\n _b.labelSelection = _d.sent();\n if (!markerSelection) return [3 /*break*/, 5];\n _c = subGroup;\n return [4 /*yield*/, this.updateMarkerSelection({\n nodeData: nodeData,\n markerSelection: markerSelection,\n seriesIdx: seriesIdx,\n })];\n case 4:\n _c.markerSelection = _d.sent();\n _d.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.nodeFactory = function () {\n return new Group();\n };\n CartesianSeries.prototype.markerFactory = function () {\n var MarkerShape = getMarker$1();\n return new MarkerShape();\n };\n CartesianSeries.prototype.updateSeriesGroups = function () {\n var _a;\n return __awaiter$d(this, void 0, void 0, function () {\n var _b, contextNodeData, contentGroup, subGroups, _c, pathsPerSeries, hasMarkers, pathsZIndexSubOrderOffset, renderLayerPerSubSeries, totalGroups, layer, subGroupId, subGroupZOffset, dataNodeGroup, markerGroup, labelGroup, pathParentGroup, paths, index;\n var _this = this;\n return __generator$d(this, function (_d) {\n _b = this, contextNodeData = _b._contextNodeData, contentGroup = _b.contentGroup, subGroups = _b.subGroups, _c = _b.opts, pathsPerSeries = _c.pathsPerSeries, hasMarkers = _c.hasMarkers, pathsZIndexSubOrderOffset = _c.pathsZIndexSubOrderOffset, renderLayerPerSubSeries = _c.renderLayerPerSubSeries;\n if (contextNodeData.length === subGroups.length) {\n return [2 /*return*/];\n }\n if (contextNodeData.length < subGroups.length) {\n subGroups.splice(contextNodeData.length).forEach(function (_a) {\n var e_1, _b;\n var dataNodeGroup = _a.dataNodeGroup, markerGroup = _a.markerGroup, labelGroup = _a.labelGroup, paths = _a.paths;\n contentGroup.removeChild(dataNodeGroup);\n if (markerGroup) {\n contentGroup.removeChild(markerGroup);\n }\n if (labelGroup) {\n contentGroup.removeChild(labelGroup);\n }\n try {\n for (var paths_1 = __values$m(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n var path = paths_1_1.value;\n contentGroup.removeChild(path);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (paths_1_1 && !paths_1_1.done && (_b = paths_1.return)) _b.call(paths_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n totalGroups = contextNodeData.length;\n while (totalGroups > subGroups.length) {\n layer = renderLayerPerSubSeries;\n subGroupId = this.subGroupId++;\n subGroupZOffset = subGroupId;\n dataNodeGroup = new Group({\n name: this.id + \"-series-sub\" + subGroupId + \"-dataNodes\",\n layer: layer,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: [function () { return _this._declarationOrder; }, subGroupZOffset],\n });\n markerGroup = hasMarkers\n ? new Group({\n name: this.id + \"-series-sub\" + this.subGroupId++ + \"-markers\",\n layer: layer,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: [function () { return _this._declarationOrder; }, 10000 + subGroupId],\n })\n : undefined;\n labelGroup = new Group({\n name: this.id + \"-series-sub\" + this.subGroupId++ + \"-labels\",\n layer: layer,\n zIndex: Layers.SERIES_LABEL_ZINDEX,\n zIndexSubOrder: [function () { return _this._declarationOrder; }, subGroupId],\n });\n contentGroup.appendChild(dataNodeGroup);\n contentGroup.appendChild(labelGroup);\n if (markerGroup) {\n contentGroup.appendChild(markerGroup);\n }\n pathParentGroup = renderLayerPerSubSeries ? dataNodeGroup : contentGroup;\n paths = [];\n for (index = 0; index < pathsPerSeries; index++) {\n paths[index] = new Path();\n paths[index].zIndex = Layers.SERIES_LAYER_ZINDEX;\n paths[index].zIndexSubOrder = [\n function () { return _this._declarationOrder; },\n ((_a = pathsZIndexSubOrderOffset[index]) !== null && _a !== void 0 ? _a : 0) + subGroupZOffset,\n ];\n pathParentGroup.appendChild(paths[index]);\n }\n subGroups.push({\n paths: paths,\n dataNodeGroup: dataNodeGroup,\n markerGroup: markerGroup,\n labelGroup: labelGroup,\n labelSelection: Selection.select(labelGroup, Text),\n datumSelection: Selection.select(dataNodeGroup, function () { return _this.nodeFactory(); }),\n markerSelection: markerGroup ? Selection.select(markerGroup, function () { return _this.markerFactory(); }) : undefined,\n });\n }\n return [2 /*return*/];\n });\n });\n };\n CartesianSeries.prototype.updateNodes = function (seriesHighlighted, anySeriesItemEnabled) {\n var _a;\n return __awaiter$d(this, void 0, void 0, function () {\n var _b, highlightSelection, highlightLabelSelection, contextNodeData, seriesItemEnabled, _c, hasMarkers, renderLayerPerSubSeries, visible, seriesOpacity, subGroupOpacities, isSubGroupOpacityDifferent;\n var _this = this;\n return __generator$d(this, function (_d) {\n switch (_d.label) {\n case 0:\n _b = this, highlightSelection = _b.highlightSelection, highlightLabelSelection = _b.highlightLabelSelection, contextNodeData = _b._contextNodeData, seriesItemEnabled = _b.seriesItemEnabled, _c = _b.opts, hasMarkers = _c.hasMarkers, renderLayerPerSubSeries = _c.renderLayerPerSubSeries;\n visible = this.visible && ((_a = this._contextNodeData) === null || _a === void 0 ? void 0 : _a.length) > 0 && anySeriesItemEnabled;\n this.rootGroup.visible = visible;\n this.contentGroup.visible = visible;\n this.highlightGroup.visible = visible && !!seriesHighlighted;\n seriesOpacity = this.getOpacity();\n subGroupOpacities = this.subGroups.map(function (_, index) {\n var itemId = contextNodeData[index].itemId;\n return _this.getOpacity({ itemId: itemId });\n });\n isSubGroupOpacityDifferent = subGroupOpacities.some(function (subOp) { return subOp !== seriesOpacity; });\n this.contentGroup.opacity = isSubGroupOpacityDifferent ? 1 : seriesOpacity;\n if (!hasMarkers) return [3 /*break*/, 2];\n return [4 /*yield*/, this.updateMarkerNodes({\n markerSelection: highlightSelection,\n isHighlight: true,\n seriesIdx: -1,\n })];\n case 1:\n _d.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.updateDatumNodes({ datumSelection: highlightSelection, isHighlight: true, seriesIdx: -1 })];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4: return [4 /*yield*/, this.updateLabelNodes({ labelSelection: highlightLabelSelection, seriesIdx: -1 })];\n case 5:\n _d.sent();\n return [4 /*yield*/, Promise.all(this.subGroups.map(function (subGroup, seriesIdx) { return __awaiter$d(_this, void 0, void 0, function () {\n var dataNodeGroup, markerGroup, datumSelection, labelSelection, markerSelection, paths, labelGroup, itemId, subGroupVisible, subGroupOpacity, paths_2, paths_2_1, path;\n var e_2, _a;\n var _b;\n return __generator$d(this, function (_c) {\n switch (_c.label) {\n case 0:\n dataNodeGroup = subGroup.dataNodeGroup, markerGroup = subGroup.markerGroup, datumSelection = subGroup.datumSelection, labelSelection = subGroup.labelSelection, markerSelection = subGroup.markerSelection, paths = subGroup.paths, labelGroup = subGroup.labelGroup;\n itemId = contextNodeData[seriesIdx].itemId;\n subGroupVisible = visible && ((_b = seriesItemEnabled.get(itemId)) !== null && _b !== void 0 ? _b : true);\n subGroupOpacity = isSubGroupOpacityDifferent ? subGroupOpacities[seriesIdx] : 1;\n dataNodeGroup.opacity = subGroupOpacity;\n dataNodeGroup.visible = subGroupVisible;\n labelGroup.visible = subGroupVisible;\n if (markerGroup) {\n markerGroup.opacity = subGroupOpacity;\n markerGroup.zIndex =\n dataNodeGroup.zIndex >= Layers.SERIES_LAYER_ZINDEX\n ? dataNodeGroup.zIndex\n : dataNodeGroup.zIndex + 1;\n markerGroup.visible = subGroupVisible;\n }\n if (labelGroup) {\n labelGroup.opacity = subGroupOpacity;\n }\n try {\n for (paths_2 = __values$m(paths), paths_2_1 = paths_2.next(); !paths_2_1.done; paths_2_1 = paths_2.next()) {\n path = paths_2_1.value;\n if (!renderLayerPerSubSeries) {\n path.opacity = subGroupOpacity;\n path.visible = subGroupVisible;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (paths_2_1 && !paths_2_1.done && (_a = paths_2.return)) _a.call(paths_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (!dataNodeGroup.visible) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.updatePathNodes({ seriesHighlighted: seriesHighlighted, itemId: itemId, paths: paths, seriesIdx: seriesIdx })];\n case 1:\n _c.sent();\n return [4 /*yield*/, this.updateDatumNodes({ datumSelection: datumSelection, isHighlight: false, seriesIdx: seriesIdx })];\n case 2:\n _c.sent();\n return [4 /*yield*/, this.updateLabelNodes({ labelSelection: labelSelection, seriesIdx: seriesIdx })];\n case 3:\n _c.sent();\n if (!(hasMarkers && markerSelection)) return [3 /*break*/, 5];\n return [4 /*yield*/, this.updateMarkerNodes({ markerSelection: markerSelection, isHighlight: false, seriesIdx: seriesIdx })];\n case 4:\n _c.sent();\n _c.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n }); }))];\n case 6:\n _d.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.updateHighlightSelection = function (seriesHighlighted) {\n var _a;\n return __awaiter$d(this, void 0, void 0, function () {\n var _b, highlightSelection, highlightLabelSelection, contextNodeData, highlightedDatum, item, _c, labelItem, _d, itemId_1, contextNodeData_1, contextNodeData_1_1, labelData, _e;\n var e_3, _f;\n return __generator$d(this, function (_g) {\n switch (_g.label) {\n case 0:\n _b = this, highlightSelection = _b.highlightSelection, highlightLabelSelection = _b.highlightLabelSelection, contextNodeData = _b._contextNodeData;\n highlightedDatum = (_a = this.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n item = seriesHighlighted && (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.datum) ? highlightedDatum : undefined;\n _c = this;\n return [4 /*yield*/, this.updateHighlightSelectionItem({ item: item, highlightSelection: highlightSelection })];\n case 1:\n _c.highlightSelection = _g.sent();\n if (this.isLabelEnabled() && item != null) {\n _d = item.itemId, itemId_1 = _d === void 0 ? undefined : _d;\n try {\n for (contextNodeData_1 = __values$m(contextNodeData), contextNodeData_1_1 = contextNodeData_1.next(); !contextNodeData_1_1.done; contextNodeData_1_1 = contextNodeData_1.next()) {\n labelData = contextNodeData_1_1.value.labelData;\n labelItem = labelData.find(function (ld) { return ld.datum === item.datum && ld.itemId === itemId_1; });\n if (labelItem != null) {\n break;\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (contextNodeData_1_1 && !contextNodeData_1_1.done && (_f = contextNodeData_1.return)) _f.call(contextNodeData_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n }\n _e = this;\n return [4 /*yield*/, this.updateHighlightSelectionLabel({\n item: labelItem,\n highlightLabelSelection: highlightLabelSelection,\n })];\n case 2:\n _e.highlightLabelSelection = _g.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.pickNodeExactShape = function (point) {\n var e_4, _a;\n var result = _super.prototype.pickNodeExactShape.call(this, point);\n if (result) {\n return result;\n }\n var x = point.x, y = point.y;\n var hasMarkers = this.opts.hasMarkers;\n try {\n for (var _b = __values$m(this.subGroups), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = _c.value, dataNodeGroup = _d.dataNodeGroup, markerGroup = _d.markerGroup;\n var match = dataNodeGroup.pickNode(x, y);\n if (!match && hasMarkers) {\n match = markerGroup === null || markerGroup === void 0 ? void 0 : markerGroup.pickNode(x, y);\n }\n if (match) {\n return { datum: match.datum, distance: 0 };\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_4) throw e_4.error; }\n }\n };\n CartesianSeries.prototype.pickNodeClosestDatum = function (point) {\n var e_5, _a, e_6, _b;\n var _c, _d;\n var x = point.x, y = point.y;\n var _e = this, xAxis = _e.xAxis, yAxis = _e.yAxis, rootGroup = _e.rootGroup, contextNodeData = _e._contextNodeData;\n var hitPoint = rootGroup.transformPoint(x, y);\n var minDistance = Infinity;\n var closestDatum;\n try {\n for (var contextNodeData_2 = __values$m(contextNodeData), contextNodeData_2_1 = contextNodeData_2.next(); !contextNodeData_2_1.done; contextNodeData_2_1 = contextNodeData_2.next()) {\n var context = contextNodeData_2_1.value;\n try {\n for (var _f = (e_6 = void 0, __values$m(context.nodeData)), _g = _f.next(); !_g.done; _g = _f.next()) {\n var datum = _g.value;\n var _h = datum.point, _j = _h === void 0 ? {} : _h, _k = _j.x, datumX = _k === void 0 ? NaN : _k, _l = _j.y, datumY = _l === void 0 ? NaN : _l;\n if (isNaN(datumX) || isNaN(datumY)) {\n continue;\n }\n var isInRange = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.inRange(datumX)) && (yAxis === null || yAxis === void 0 ? void 0 : yAxis.inRange(datumY));\n if (!isInRange) {\n continue;\n }\n // No need to use Math.sqrt() since x < y implies Math.sqrt(x) < Math.sqrt(y) for\n // values > 1\n var distance = Math.max(Math.pow((hitPoint.x - datumX), 2) + Math.pow((hitPoint.y - datumY), 2), 0);\n if (distance < minDistance) {\n minDistance = distance;\n closestDatum = datum;\n }\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n }\n finally { if (e_6) throw e_6.error; }\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (contextNodeData_2_1 && !contextNodeData_2_1.done && (_a = contextNodeData_2.return)) _a.call(contextNodeData_2);\n }\n finally { if (e_5) throw e_5.error; }\n }\n if (closestDatum) {\n var distance = Math.max(Math.sqrt(minDistance) - ((_d = (_c = closestDatum.point) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : 0), 0);\n return { datum: closestDatum, distance: distance };\n }\n };\n CartesianSeries.prototype.pickNodeMainAxisFirst = function (point, requireCategoryAxis) {\n var e_7, _a, e_8, _b;\n var _c, _d;\n var x = point.x, y = point.y;\n var _e = this, xAxis = _e.xAxis, yAxis = _e.yAxis, rootGroup = _e.rootGroup, contextNodeData = _e._contextNodeData;\n // Prefer to start search with any available category axis.\n var directions = [xAxis, yAxis]\n .filter(function (a) { return a instanceof CategoryAxis; })\n .map(function (a) { return a.direction; });\n if (requireCategoryAxis && directions.length === 0) {\n return;\n }\n // Default to X-axis unless we found a suitable category axis.\n var _f = __read$J(directions, 1), _g = _f[0], primaryDirection = _g === void 0 ? ChartAxisDirection.X : _g;\n var hitPoint = rootGroup.transformPoint(x, y);\n var hitPointCoords = primaryDirection === ChartAxisDirection.X ? [hitPoint.x, hitPoint.y] : [hitPoint.y, hitPoint.x];\n var minDistance = [Infinity, Infinity];\n var closestDatum = undefined;\n try {\n for (var contextNodeData_3 = __values$m(contextNodeData), contextNodeData_3_1 = contextNodeData_3.next(); !contextNodeData_3_1.done; contextNodeData_3_1 = contextNodeData_3.next()) {\n var context = contextNodeData_3_1.value;\n try {\n for (var _h = (e_8 = void 0, __values$m(context.nodeData)), _j = _h.next(); !_j.done; _j = _h.next()) {\n var datum = _j.value;\n var _k = datum.point, _l = _k === void 0 ? {} : _k, _m = _l.x, datumX = _m === void 0 ? NaN : _m, _o = _l.y, datumY = _o === void 0 ? NaN : _o;\n if (isNaN(datumX) || isNaN(datumY)) {\n continue;\n }\n var isInRange = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.inRange(datumX)) && (yAxis === null || yAxis === void 0 ? void 0 : yAxis.inRange(datumY));\n if (!isInRange) {\n continue;\n }\n var point_1 = primaryDirection === ChartAxisDirection.X ? [datumX, datumY] : [datumY, datumX];\n // Compare distances from most significant dimension to least.\n var newMinDistance = true;\n for (var i = 0; i < point_1.length; i++) {\n var dist = Math.abs(point_1[i] - hitPointCoords[i]);\n if (dist > minDistance[i]) {\n newMinDistance = false;\n break;\n }\n if (dist < minDistance[i]) {\n minDistance[i] = dist;\n minDistance.fill(Infinity, i + 1, minDistance.length);\n }\n }\n if (newMinDistance) {\n closestDatum = datum;\n }\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (_j && !_j.done && (_b = _h.return)) _b.call(_h);\n }\n finally { if (e_8) throw e_8.error; }\n }\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (contextNodeData_3_1 && !contextNodeData_3_1.done && (_a = contextNodeData_3.return)) _a.call(contextNodeData_3);\n }\n finally { if (e_7) throw e_7.error; }\n }\n if (closestDatum) {\n var distance = Math.max(Math.sqrt(Math.pow(minDistance[0], 2) + Math.pow(minDistance[1], 2)) - ((_d = (_c = closestDatum.point) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : 0), 0);\n return { datum: closestDatum, distance: distance };\n }\n };\n CartesianSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n if (this.seriesItemEnabled.size > 0) {\n this.seriesItemEnabled.set(itemId, enabled);\n this.nodeDataRefresh = true;\n }\n else {\n _super.prototype.toggleSeriesItem.call(this, itemId, enabled);\n }\n };\n CartesianSeries.prototype.isEnabled = function () {\n var e_9, _a;\n if (this.seriesItemEnabled.size > 0) {\n try {\n for (var _b = __values$m(this.seriesItemEnabled), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$J(_c.value, 2), enabled = _d[1];\n if (enabled) {\n return true;\n }\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_9) throw e_9.error; }\n }\n return false;\n }\n return _super.prototype.isEnabled.call(this);\n };\n CartesianSeries.prototype.isPathOrSelectionDirty = function () {\n // Override point to allow more sophisticated dirty selection detection.\n return false;\n };\n CartesianSeries.prototype.getLabelData = function () {\n return [];\n };\n CartesianSeries.prototype.isAnySeriesVisible = function () {\n var e_10, _a;\n try {\n for (var _b = __values$m(this.seriesItemEnabled.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var visible = _c.value;\n if (visible) {\n return true;\n }\n }\n }\n catch (e_10_1) { e_10 = { error: e_10_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_10) throw e_10.error; }\n }\n return false;\n };\n CartesianSeries.prototype.validateXYData = function (xKey, yKey, data, xAxis, yAxis, xData, yData, yDepth) {\n var _a;\n if (yDepth === void 0) { yDepth = 1; }\n if (((_a = this.chart) === null || _a === void 0 ? void 0 : _a.mode) === 'integrated') {\n // Integrated Charts use-cases do not require this validation.\n return true;\n }\n if (!xAxis || !yAxis || data.length === 0 || (this.seriesItemEnabled.size > 0 && !this.isAnySeriesVisible())) {\n return true;\n }\n var hasNumber = function (items, depth, maxDepth) {\n if (depth === void 0) { depth = 0; }\n if (maxDepth === void 0) { maxDepth = 0; }\n return items.some(depth === maxDepth ? function (y) { return isContinuous(y); } : function (arr) { return hasNumber(arr, depth + 1, maxDepth); });\n };\n var isContinuousX = xAxis.scale instanceof ContinuousScale;\n var isContinuousY = yAxis.scale instanceof ContinuousScale;\n var validationResult = true;\n if (isContinuousX && !hasNumber(xData)) {\n Logger.warnOnce(\"the number axis has no numeric data supplied for xKey: [\" + xKey + \"].\");\n validationResult = false;\n }\n if (isContinuousY && !hasNumber(yData, 0, yDepth - 1)) {\n Logger.warnOnce(\"the number axis has no numeric data supplied for yKey: [\" + yKey + \"].\");\n validationResult = false;\n }\n return validationResult;\n };\n CartesianSeries.prototype.updatePaths = function (opts) {\n return __awaiter$d(this, void 0, void 0, function () {\n return __generator$d(this, function (_a) {\n // Override point for sub-classes.\n opts.paths.forEach(function (p) { return (p.visible = false); });\n return [2 /*return*/];\n });\n });\n };\n CartesianSeries.prototype.updatePathNodes = function (_opts) {\n return __awaiter$d(this, void 0, void 0, function () {\n return __generator$d(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n CartesianSeries.prototype.updateHighlightSelectionItem = function (opts) {\n return __awaiter$d(this, void 0, void 0, function () {\n var hasMarkers, item, highlightSelection, nodeData, markerSelection;\n return __generator$d(this, function (_a) {\n hasMarkers = this.opts.hasMarkers;\n item = opts.item, highlightSelection = opts.highlightSelection;\n nodeData = item ? [item] : [];\n if (hasMarkers) {\n markerSelection = highlightSelection;\n return [2 /*return*/, this.updateMarkerSelection({ nodeData: nodeData, markerSelection: markerSelection, seriesIdx: -1 })];\n }\n else {\n return [2 /*return*/, this.updateDatumSelection({ nodeData: nodeData, datumSelection: highlightSelection, seriesIdx: -1 })];\n }\n });\n });\n };\n CartesianSeries.prototype.updateHighlightSelectionLabel = function (opts) {\n return __awaiter$d(this, void 0, void 0, function () {\n var item, highlightLabelSelection, labelData;\n return __generator$d(this, function (_a) {\n item = opts.item, highlightLabelSelection = opts.highlightLabelSelection;\n labelData = item ? [item] : [];\n return [2 /*return*/, this.updateLabelSelection({ labelData: labelData, labelSelection: highlightLabelSelection, seriesIdx: -1 })];\n });\n });\n };\n CartesianSeries.prototype.updateDatumSelection = function (opts) {\n return __awaiter$d(this, void 0, void 0, function () {\n return __generator$d(this, function (_a) {\n // Override point for sub-classes.\n return [2 /*return*/, opts.datumSelection];\n });\n });\n };\n CartesianSeries.prototype.updateDatumNodes = function (_opts) {\n return __awaiter$d(this, void 0, void 0, function () {\n return __generator$d(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n CartesianSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$d(this, void 0, void 0, function () {\n return __generator$d(this, function (_a) {\n // Override point for sub-classes.\n return [2 /*return*/, opts.markerSelection];\n });\n });\n };\n CartesianSeries.prototype.updateMarkerNodes = function (_opts) {\n return __awaiter$d(this, void 0, void 0, function () {\n return __generator$d(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n return CartesianSeries;\n}(Series));\nvar CartesianSeriesMarker = /** @class */ (function (_super) {\n __extends$2i(CartesianSeriesMarker, _super);\n function CartesianSeriesMarker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1A([\n Validate(OPT_FUNCTION),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], CartesianSeriesMarker.prototype, \"formatter\", void 0);\n return CartesianSeriesMarker;\n}(SeriesMarker));\n\nfunction sleep(sleepTimeoutMs) {\n return new Promise(function (resolve) {\n setTimeout(function () { return resolve(undefined); }, sleepTimeoutMs);\n });\n}\n\nvar __decorate$1z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Overlay = /** @class */ (function () {\n function Overlay(className, parent) {\n this.renderer = undefined;\n this.text = undefined;\n this.className = className;\n this.parentElement = parent;\n }\n Overlay.prototype.show = function (rect) {\n var _a, _b;\n var element = this.element;\n if (!this.element) {\n element = document.createElement('div');\n element.className = this.className;\n this.element = element;\n }\n element.style.position = 'absolute';\n element.style.left = rect.x + \"px\";\n element.style.top = rect.y + \"px\";\n element.style.width = rect.width + \"px\";\n element.style.height = rect.height + \"px\";\n if (this.renderer) {\n this.element.innerHTML = this.renderer();\n }\n else {\n var content = document.createElement('div');\n content.style.alignItems = 'center';\n content.style.boxSizing = 'border-box';\n content.style.display = 'flex';\n content.style.justifyContent = 'center';\n content.style.margin = '8px';\n content.style.height = '100%';\n content.style.font = '12px Verdana, sans-serif';\n content.innerText = (_a = this.text) !== null && _a !== void 0 ? _a : 'No data to display';\n element.append(content);\n }\n (_b = this.parentElement) === null || _b === void 0 ? void 0 : _b.append(element);\n };\n Overlay.prototype.hide = function () {\n var _a;\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.remove();\n this.element = undefined;\n };\n __decorate$1z([\n Validate(OPT_FUNCTION)\n ], Overlay.prototype, \"renderer\", void 0);\n __decorate$1z([\n Validate(OPT_STRING)\n ], Overlay.prototype, \"text\", void 0);\n return Overlay;\n}());\n\nvar ChartOverlays = /** @class */ (function () {\n function ChartOverlays(parent) {\n this.noData = new Overlay('ag-chart-no-data-overlay', parent);\n }\n return ChartOverlays;\n}());\n\nvar __read$I = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$n = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$I(arguments[i]));\n return ar;\n};\nvar __values$l = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar Listeners = /** @class */ (function () {\n function Listeners() {\n this.registeredListeners = {};\n }\n Listeners.prototype.addListener = function (type, cb) {\n var _a;\n var symbol = Symbol(type);\n if (!this.registeredListeners[type]) {\n this.registeredListeners[type] = [];\n }\n (_a = this.registeredListeners[type]) === null || _a === void 0 ? void 0 : _a.push({ symbol: symbol, handler: cb });\n return symbol;\n };\n Listeners.prototype.dispatch = function (type) {\n var _a;\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n var listeners = (_a = this.registeredListeners[type]) !== null && _a !== void 0 ? _a : [];\n return listeners.map(function (l) { return l.handler.apply(l, __spread$n(params)); });\n };\n Listeners.prototype.cancellableDispatch = function (type, cancelled) {\n var e_1, _a;\n var _b;\n var params = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n params[_i - 2] = arguments[_i];\n }\n var listeners = (_b = this.registeredListeners[type]) !== null && _b !== void 0 ? _b : [];\n var results = [];\n try {\n for (var listeners_1 = __values$l(listeners), listeners_1_1 = listeners_1.next(); !listeners_1_1.done; listeners_1_1 = listeners_1.next()) {\n var listener = listeners_1_1.value;\n if (cancelled())\n break;\n results.push(listener.handler.apply(listener, __spread$n(params)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (listeners_1_1 && !listeners_1_1.done && (_a = listeners_1.return)) _a.call(listeners_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return results;\n };\n Listeners.prototype.reduceDispatch = function (type, reduceFn) {\n var e_2, _a;\n var _b;\n var params = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n params[_i - 2] = arguments[_i];\n }\n var listeners = (_b = this.registeredListeners[type]) !== null && _b !== void 0 ? _b : [];\n var listenerResult = undefined;\n try {\n for (var listeners_2 = __values$l(listeners), listeners_2_1 = listeners_2.next(); !listeners_2_1.done; listeners_2_1 = listeners_2.next()) {\n var listener = listeners_2_1.value;\n listenerResult = listener.handler.apply(listener, __spread$n(params));\n params = reduceFn.apply(void 0, __spread$n([listenerResult], params));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (listeners_2_1 && !listeners_2_1.done && (_a = listeners_2.return)) _a.call(listeners_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return listenerResult;\n };\n Listeners.prototype.removeListener = function (listenerSymbol) {\n for (var type in this.registeredListeners) {\n var listeners = this.registeredListeners[type];\n var match = listeners === null || listeners === void 0 ? void 0 : listeners.findIndex(function (entry) { return entry.symbol === listenerSymbol; });\n if (match != null && match >= 0) {\n listeners === null || listeners === void 0 ? void 0 : listeners.splice(match, 1);\n }\n if (match != null && (listeners === null || listeners === void 0 ? void 0 : listeners.length) === 0) {\n delete this.registeredListeners[type];\n }\n }\n };\n return Listeners;\n}());\n\nvar BaseManager = /** @class */ (function () {\n function BaseManager() {\n this.listeners = new Listeners();\n }\n BaseManager.prototype.addListener = function (type, cb) {\n return this.listeners.addListener(type, cb);\n };\n BaseManager.prototype.removeListener = function (listenerSymbol) {\n this.listeners.removeListener(listenerSymbol);\n };\n return BaseManager;\n}());\n\nvar __extends$2h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$C = (undefined && undefined.__assign) || function () {\n __assign$C = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$C.apply(this, arguments);\n};\nvar __awaiter$c = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$c = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values$k = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar WINDOW_EVENT_HANDLERS = ['pagehide', 'mousemove', 'mouseup', 'wheel'];\nvar EVENT_HANDLERS = [\n 'click',\n 'dblclick',\n 'contextmenu',\n 'mousedown',\n 'mouseout',\n 'mouseenter',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n];\nvar CSS = \"\\n.ag-chart-wrapper {\\n touch-action: none;\\n}\\n\";\n/**\n * Manages user interactions with a specific HTMLElement (or interactions that bubble from it's\n * children)\n */\nvar InteractionManager = /** @class */ (function (_super) {\n __extends$2h(InteractionManager, _super);\n function InteractionManager(element, doc) {\n var e_1, _a, e_2, _b;\n if (doc === void 0) { doc = document; }\n var _this = _super.call(this) || this;\n _this.eventHandler = function (event) { return _this.processEvent(event); };\n _this.mouseDown = false;\n _this.touchDown = false;\n _this.rootElement = doc.body;\n _this.element = element;\n try {\n for (var EVENT_HANDLERS_1 = __values$k(EVENT_HANDLERS), EVENT_HANDLERS_1_1 = EVENT_HANDLERS_1.next(); !EVENT_HANDLERS_1_1.done; EVENT_HANDLERS_1_1 = EVENT_HANDLERS_1.next()) {\n var type = EVENT_HANDLERS_1_1.value;\n if (type.startsWith('touch')) {\n element.addEventListener(type, _this.eventHandler, { passive: true });\n }\n else {\n element.addEventListener(type, _this.eventHandler);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (EVENT_HANDLERS_1_1 && !EVENT_HANDLERS_1_1.done && (_a = EVENT_HANDLERS_1.return)) _a.call(EVENT_HANDLERS_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var WINDOW_EVENT_HANDLERS_1 = __values$k(WINDOW_EVENT_HANDLERS), WINDOW_EVENT_HANDLERS_1_1 = WINDOW_EVENT_HANDLERS_1.next(); !WINDOW_EVENT_HANDLERS_1_1.done; WINDOW_EVENT_HANDLERS_1_1 = WINDOW_EVENT_HANDLERS_1.next()) {\n var type = WINDOW_EVENT_HANDLERS_1_1.value;\n window.addEventListener(type, _this.eventHandler);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (WINDOW_EVENT_HANDLERS_1_1 && !WINDOW_EVENT_HANDLERS_1_1.done && (_b = WINDOW_EVENT_HANDLERS_1.return)) _b.call(WINDOW_EVENT_HANDLERS_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (InteractionManager.interactionDocuments.indexOf(doc) < 0) {\n var styleElement = document.createElement('style');\n styleElement.innerHTML = CSS;\n document.head.insertBefore(styleElement, document.head.querySelector('style'));\n InteractionManager.interactionDocuments.push(doc);\n }\n return _this;\n }\n InteractionManager.prototype.destroy = function () {\n var e_3, _a, e_4, _b;\n try {\n for (var WINDOW_EVENT_HANDLERS_2 = __values$k(WINDOW_EVENT_HANDLERS), WINDOW_EVENT_HANDLERS_2_1 = WINDOW_EVENT_HANDLERS_2.next(); !WINDOW_EVENT_HANDLERS_2_1.done; WINDOW_EVENT_HANDLERS_2_1 = WINDOW_EVENT_HANDLERS_2.next()) {\n var type = WINDOW_EVENT_HANDLERS_2_1.value;\n window.removeEventListener(type, this.eventHandler);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (WINDOW_EVENT_HANDLERS_2_1 && !WINDOW_EVENT_HANDLERS_2_1.done && (_a = WINDOW_EVENT_HANDLERS_2.return)) _a.call(WINDOW_EVENT_HANDLERS_2);\n }\n finally { if (e_3) throw e_3.error; }\n }\n try {\n for (var EVENT_HANDLERS_2 = __values$k(EVENT_HANDLERS), EVENT_HANDLERS_2_1 = EVENT_HANDLERS_2.next(); !EVENT_HANDLERS_2_1.done; EVENT_HANDLERS_2_1 = EVENT_HANDLERS_2.next()) {\n var type = EVENT_HANDLERS_2_1.value;\n this.element.removeEventListener(type, this.eventHandler);\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (EVENT_HANDLERS_2_1 && !EVENT_HANDLERS_2_1.done && (_b = EVENT_HANDLERS_2.return)) _b.call(EVENT_HANDLERS_2);\n }\n finally { if (e_4) throw e_4.error; }\n }\n };\n InteractionManager.prototype.processEvent = function (event) {\n var types = this.decideInteractionEventTypes(event);\n if (types.length > 0) {\n // Async dispatch to avoid blocking the event-processing thread.\n this.dispatchEvent(event, types);\n }\n };\n InteractionManager.prototype.dispatchEvent = function (event, types) {\n return __awaiter$c(this, void 0, void 0, function () {\n var coords, _loop_1, this_1, types_1, types_1_1, type;\n var e_5, _a;\n return __generator$c(this, function (_b) {\n coords = this.calculateCoordinates(event);\n if (coords == null) {\n return [2 /*return*/];\n }\n _loop_1 = function (type) {\n var interactionEvent = this_1.buildEvent(__assign$C(__assign$C({ event: event }, coords), { type: type }));\n this_1.listeners.cancellableDispatch(type, function () { return interactionEvent.consumed; }, interactionEvent);\n };\n this_1 = this;\n try {\n for (types_1 = __values$k(types), types_1_1 = types_1.next(); !types_1_1.done; types_1_1 = types_1.next()) {\n type = types_1_1.value;\n _loop_1(type);\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (types_1_1 && !types_1_1.done && (_a = types_1.return)) _a.call(types_1);\n }\n finally { if (e_5) throw e_5.error; }\n }\n return [2 /*return*/];\n });\n });\n };\n InteractionManager.prototype.decideInteractionEventTypes = function (event) {\n switch (event.type) {\n case 'click':\n return ['click'];\n case 'dblclick':\n return ['dblclick'];\n case 'contextmenu':\n return ['contextmenu'];\n case 'mousedown':\n this.mouseDown = true;\n this.dragStartElement = event.target;\n return ['drag-start'];\n case 'touchstart':\n this.touchDown = true;\n this.dragStartElement = event.target;\n return ['drag-start'];\n case 'touchmove':\n case 'mousemove':\n if (!this.mouseDown && !this.touchDown && !this.isEventOverElement(event)) {\n // We only care about these events if the target is the canvas, unless\n // we're in the middle of a drag/slide.\n return [];\n }\n return this.mouseDown || this.touchDown ? ['drag'] : ['hover'];\n case 'mouseup':\n if (!this.mouseDown && !this.isEventOverElement(event)) {\n // We only care about these events if the target is the canvas, unless\n // we're in the middle of a drag.\n return [];\n }\n this.mouseDown = false;\n this.dragStartElement = undefined;\n return ['drag-end'];\n case 'touchend':\n if (!this.touchDown && !this.isEventOverElement(event)) {\n // We only care about these events if the target is the canvas, unless\n // we're in the middle of a slide.\n return [];\n }\n this.touchDown = false;\n this.dragStartElement = undefined;\n return ['drag-end'];\n case 'mouseout':\n case 'touchcancel':\n return ['leave'];\n case 'mouseenter':\n var mouseButtonDown = event instanceof MouseEvent && (event.buttons & 1) === 1;\n if (this.mouseDown !== mouseButtonDown) {\n this.mouseDown = mouseButtonDown;\n return [mouseButtonDown ? 'drag-start' : 'drag-end'];\n }\n return [];\n case 'pagehide':\n return ['page-left'];\n case 'wheel':\n return ['wheel'];\n }\n return [];\n };\n InteractionManager.prototype.isEventOverElement = function (event) {\n var _a;\n return event.target === this.element || ((_a = event.target) === null || _a === void 0 ? void 0 : _a.parentElement) === this.element;\n };\n InteractionManager.prototype.calculateCoordinates = function (event) {\n var _a;\n if (event instanceof MouseEvent) {\n var clientX = event.clientX, clientY = event.clientY, pageX = event.pageX, pageY = event.pageY, offsetX = event.offsetX, offsetY = event.offsetY;\n return this.fixOffsets(event, { clientX: clientX, clientY: clientY, pageX: pageX, pageY: pageY, offsetX: offsetX, offsetY: offsetY });\n }\n else if (typeof TouchEvent !== 'undefined' && event instanceof TouchEvent) {\n var lastTouch = (_a = event.touches[0]) !== null && _a !== void 0 ? _a : event.changedTouches[0];\n var clientX = lastTouch.clientX, clientY = lastTouch.clientY, pageX = lastTouch.pageX, pageY = lastTouch.pageY;\n return __assign$C(__assign$C({}, InteractionManager.NULL_COORDS), { clientX: clientX, clientY: clientY, pageX: pageX, pageY: pageY });\n }\n else if (event instanceof PageTransitionEvent) {\n if (event.persisted) {\n // Don't fire the page-left event since the page maybe revisited.\n return;\n }\n return InteractionManager.NULL_COORDS;\n }\n // Unsupported event - abort.\n };\n InteractionManager.prototype.fixOffsets = function (event, coords) {\n var offsets = function (el) {\n var x = 0;\n var y = 0;\n while (el) {\n x += el.offsetLeft;\n y += el.offsetTop;\n el = el.offsetParent;\n }\n return { x: x, y: y };\n };\n if (this.dragStartElement != null && event.target !== this.dragStartElement) {\n // Offsets need to be relative to the drag-start element to avoid jumps when\n // the pointer moves between element boundaries.\n var offsetDragStart = offsets(this.dragStartElement);\n var offsetEvent = offsets(event.target);\n coords.offsetX -= offsetDragStart.x - offsetEvent.x;\n coords.offsetY -= offsetDragStart.y - offsetEvent.y;\n }\n return coords;\n };\n InteractionManager.prototype.buildEvent = function (opts) {\n var type = opts.type, event = opts.event, clientX = opts.clientX, clientY = opts.clientY;\n var offsetX = opts.offsetX, offsetY = opts.offsetY, pageX = opts.pageX, pageY = opts.pageY;\n if (!isNumber$4(offsetX) || !isNumber$4(offsetY)) {\n var rect = this.element.getBoundingClientRect();\n offsetX = clientX - rect.left;\n offsetY = clientY - rect.top;\n }\n if (!isNumber$4(pageX) || !isNumber$4(pageY)) {\n var pageRect = this.rootElement.getBoundingClientRect();\n pageX = clientX - pageRect.left;\n pageY = clientY - pageRect.top;\n }\n var builtEvent = {\n type: type,\n offsetX: offsetX,\n offsetY: offsetY,\n pageX: pageX,\n pageY: pageY,\n sourceEvent: event,\n consumed: false,\n consume: function () { return (builtEvent.consumed = true); },\n };\n return builtEvent;\n };\n InteractionManager.interactionDocuments = [];\n InteractionManager.NULL_COORDS = {\n clientX: -Infinity,\n clientY: -Infinity,\n pageX: -Infinity,\n pageY: -Infinity,\n offsetX: -Infinity,\n offsetY: -Infinity,\n };\n return InteractionManager;\n}(BaseManager));\n\nvar __read$H = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/**\n * Manages the cursor styling for an element. Tracks the requested styling from distinct\n * dependents and handles conflicting styling requests.\n */\nvar CursorManager = /** @class */ (function () {\n function CursorManager(element) {\n this.states = {};\n this.element = element;\n }\n CursorManager.prototype.updateCursor = function (callerId, style) {\n delete this.states[callerId];\n if (style != null) {\n this.states[callerId] = { style: style };\n }\n this.applyStates();\n };\n CursorManager.prototype.applyStates = function () {\n var styleToApply = 'default';\n // Last added entry wins.\n Object.entries(this.states)\n .reverse()\n .slice(0, 1)\n .forEach(function (_a) {\n var _b = __read$H(_a, 2); _b[0]; var style = _b[1].style;\n return (styleToApply = style);\n });\n this.element.style.cursor = styleToApply;\n };\n return CursorManager;\n}());\n\nvar __extends$2g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read$G = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nfunction isEqual$1(a, b) {\n if (a === b)\n return true;\n if ((a === null || a === void 0 ? void 0 : a.series) !== (b === null || b === void 0 ? void 0 : b.series))\n return false;\n if ((a === null || a === void 0 ? void 0 : a.itemId) !== (b === null || b === void 0 ? void 0 : b.itemId))\n return false;\n if ((a === null || a === void 0 ? void 0 : a.datum) !== (b === null || b === void 0 ? void 0 : b.datum))\n return false;\n return true;\n}\n/**\n * Manages the actively highlighted series/datum for a chart. Tracks the requested highlights from\n * distinct dependents and handles conflicting highlight requests.\n */\nvar HighlightManager = /** @class */ (function (_super) {\n __extends$2g(HighlightManager, _super);\n function HighlightManager() {\n var _this = _super.call(this) || this;\n _this.states = {};\n _this.activeHighlight = undefined;\n return _this;\n }\n HighlightManager.prototype.updateHighlight = function (callerId, highlightedDatum) {\n delete this.states[callerId];\n if (highlightedDatum != null) {\n this.states[callerId] = { highlightedDatum: highlightedDatum };\n }\n this.applyStates();\n };\n HighlightManager.prototype.getActiveHighlight = function () {\n return this.activeHighlight;\n };\n HighlightManager.prototype.applyStates = function () {\n var previousHighlight = this.activeHighlight;\n var highlightToApply = undefined;\n // Last added entry wins.\n Object.entries(this.states)\n .reverse()\n .slice(0, 1)\n .forEach(function (_a) {\n var _b = __read$G(_a, 2); _b[0]; var highlightedDatum = _b[1].highlightedDatum;\n return (highlightToApply = highlightedDatum);\n });\n this.activeHighlight = highlightToApply;\n var changed = !isEqual$1(previousHighlight, this.activeHighlight);\n if (changed) {\n var event_1 = {\n type: 'highlight-change',\n previousHighlight: previousHighlight,\n currentHighlight: this.activeHighlight,\n };\n this.listeners.dispatch('highlight-change', event_1);\n }\n };\n return HighlightManager;\n}(BaseManager));\n\nvar __values$j = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$F = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/**\n * Manages the tooltip HTML an element. Tracks the requested HTML from distinct dependents and\n * handles conflicting tooltip requests.\n */\nvar TooltipManager = /** @class */ (function () {\n function TooltipManager(tooltip, interactionManager) {\n var _this = this;\n this.states = {};\n this.exclusiveAreas = {};\n this.destroyFns = [];\n this.tooltip = tooltip;\n var hoverRef = interactionManager.addListener('hover', function (e) { return _this.checkExclusiveRects(e); });\n this.destroyFns.push(function () { return interactionManager.removeListener(hoverRef); });\n }\n TooltipManager.prototype.updateTooltip = function (callerId, meta, content) {\n var _a;\n if (content == null) {\n content = (_a = this.states[callerId]) === null || _a === void 0 ? void 0 : _a.content;\n }\n this.states[callerId] = { content: content, meta: meta };\n this.applyStates();\n };\n TooltipManager.prototype.updateExclusiveRect = function (callerId, area) {\n if (area) {\n this.exclusiveAreas[callerId] = area;\n }\n else {\n delete this.exclusiveAreas[callerId];\n }\n };\n TooltipManager.prototype.removeTooltip = function (callerId) {\n delete this.states[callerId];\n this.applyStates();\n };\n TooltipManager.prototype.getTooltipMeta = function (callerId) {\n var _a;\n return (_a = this.states[callerId]) === null || _a === void 0 ? void 0 : _a.meta;\n };\n TooltipManager.prototype.destroy = function () {\n var e_1, _a;\n try {\n for (var _b = __values$j(this.destroyFns), _c = _b.next(); !_c.done; _c = _b.next()) {\n var destroyFn = _c.value;\n destroyFn();\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n TooltipManager.prototype.checkExclusiveRects = function (e) {\n var e_2, _a;\n var newAppliedExclusiveArea;\n try {\n for (var _b = __values$j(Object.entries(this.exclusiveAreas)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$F(_c.value, 2), entryId = _d[0], area = _d[1];\n if (!area.containsPoint(e.offsetX, e.offsetY)) {\n continue;\n }\n newAppliedExclusiveArea = entryId;\n break;\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (newAppliedExclusiveArea === this.appliedExclusiveArea) {\n return;\n }\n this.appliedExclusiveArea = newAppliedExclusiveArea;\n this.applyStates();\n };\n TooltipManager.prototype.applyStates = function () {\n var _this = this;\n var _a;\n var ids = this.appliedExclusiveArea ? [this.appliedExclusiveArea] : Object.keys(this.states);\n var contentToApply = undefined;\n var metaToApply = undefined;\n // Last added entry wins.\n ids.reverse()\n .slice(0, 1)\n .forEach(function (id) {\n var _a;\n var _b = (_a = _this.states[id]) !== null && _a !== void 0 ? _a : {}, content = _b.content, meta = _b.meta;\n contentToApply = content;\n metaToApply = meta;\n });\n if (metaToApply === undefined || contentToApply === undefined) {\n this.appliedState = undefined;\n this.tooltip.toggle(false);\n return;\n }\n if (((_a = this.appliedState) === null || _a === void 0 ? void 0 : _a.content) === contentToApply) {\n var renderInstantly = this.tooltip.isVisible();\n this.tooltip.show(metaToApply, undefined, renderInstantly);\n }\n else {\n this.tooltip.show(metaToApply, contentToApply);\n }\n this.appliedState = { content: contentToApply, meta: metaToApply };\n };\n return TooltipManager;\n}());\n\nvar __extends$2f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$B = (undefined && undefined.__assign) || function () {\n __assign$B = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$B.apply(this, arguments);\n};\nvar __values$i = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$E = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nfunction isEqual(a, b) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n if (a === b)\n return true;\n if (((_a = a === null || a === void 0 ? void 0 : a.x) === null || _a === void 0 ? void 0 : _a.min) !== ((_b = b === null || b === void 0 ? void 0 : b.x) === null || _b === void 0 ? void 0 : _b.min))\n return false;\n if (((_c = a === null || a === void 0 ? void 0 : a.x) === null || _c === void 0 ? void 0 : _c.max) !== ((_d = b === null || b === void 0 ? void 0 : b.x) === null || _d === void 0 ? void 0 : _d.max))\n return false;\n if (((_e = a === null || a === void 0 ? void 0 : a.y) === null || _e === void 0 ? void 0 : _e.max) !== ((_f = b === null || b === void 0 ? void 0 : b.y) === null || _f === void 0 ? void 0 : _f.max))\n return false;\n if (((_g = a === null || a === void 0 ? void 0 : a.y) === null || _g === void 0 ? void 0 : _g.min) !== ((_h = b === null || b === void 0 ? void 0 : b.y) === null || _h === void 0 ? void 0 : _h.min))\n return false;\n return true;\n}\n/**\n * Manages the current zoom state for a chart. Tracks the requested zoom from distinct dependents\n * and handles conflicting zoom requests.\n */\nvar ZoomManager = /** @class */ (function (_super) {\n __extends$2f(ZoomManager, _super);\n function ZoomManager() {\n var _this = _super.call(this) || this;\n _this.states = {};\n _this.currentZoom = undefined;\n return _this;\n }\n ZoomManager.prototype.updateZoom = function (callerId, newZoom) {\n delete this.states[callerId];\n if (newZoom != null) {\n this.states[callerId] = __assign$B({}, newZoom);\n }\n this.applyStates();\n };\n ZoomManager.prototype.getZoom = function () {\n return this.currentZoom;\n };\n ZoomManager.prototype.applyStates = function () {\n var e_1, _a;\n var currentZoom = this.currentZoom;\n var zoomToApply = {};\n try {\n // Last added entry wins.\n for (var _b = __values$i(Object.entries(this.states)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$E(_c.value, 2), _ = _d[0], _e = _d[1], x = _e.x, y = _e.y;\n zoomToApply.x = x !== null && x !== void 0 ? x : zoomToApply.x;\n zoomToApply.y = y !== null && y !== void 0 ? y : zoomToApply.y;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.currentZoom = zoomToApply.x != null || zoomToApply.y != null ? zoomToApply : undefined;\n var changed = !isEqual(currentZoom, this.currentZoom);\n if (!changed) {\n return;\n }\n var event = __assign$B({ type: 'zoom-change' }, (currentZoom !== null && currentZoom !== void 0 ? currentZoom : {}));\n this.listeners.dispatch('zoom-change', event);\n };\n return ZoomManager;\n}(BaseManager));\n\nvar __assign$A = (undefined && undefined.__assign) || function () {\n __assign$A = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$A.apply(this, arguments);\n};\nfunction isLayoutStage(t) {\n return t !== 'layout-complete';\n}\nfunction isLayoutComplete(t) {\n return t === 'layout-complete';\n}\nvar LayoutService = /** @class */ (function () {\n function LayoutService() {\n this.layoutProcessors = new Listeners();\n this.listeners = new Listeners();\n }\n LayoutService.prototype.addListener = function (type, cb) {\n if (isLayoutStage(type)) {\n return this.layoutProcessors.addListener(type, cb);\n }\n else if (isLayoutComplete(type)) {\n return this.listeners.addListener(type, cb);\n }\n throw new Error('AG Charts - unsupported listener type: ' + type);\n };\n LayoutService.prototype.removeListener = function (listenerSymbol) {\n this.listeners.removeListener(listenerSymbol);\n this.layoutProcessors.removeListener(listenerSymbol);\n };\n LayoutService.prototype.dispatchPerformLayout = function (stage, ctx) {\n var result = this.layoutProcessors.reduceDispatch(stage, function (_a, ctx) {\n var shrinkRect = _a.shrinkRect;\n return [__assign$A(__assign$A({}, ctx), { shrinkRect: shrinkRect })];\n }, ctx);\n return result !== null && result !== void 0 ? result : ctx;\n };\n LayoutService.prototype.dispatchLayoutComplete = function (event) {\n this.listeners.dispatch('layout-complete', event);\n };\n return LayoutService;\n}());\n\nvar UpdateService = /** @class */ (function () {\n function UpdateService(updateCallback) {\n this.updateCallback = updateCallback;\n }\n UpdateService.prototype.update = function (type) {\n if (type === void 0) { type = ChartUpdateType.FULL; }\n this.updateCallback(type);\n };\n return UpdateService;\n}());\n\nvar __decorate$1y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartHighlight = /** @class */ (function () {\n function ChartHighlight() {\n this.range = 'tooltip';\n }\n __decorate$1y([\n Validate(STRING_UNION('tooltip', 'node'))\n ], ChartHighlight.prototype, \"range\", void 0);\n return ChartHighlight;\n}());\n\nvar __extends$2e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$z = (undefined && undefined.__assign) || function () {\n __assign$z = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$z.apply(this, arguments);\n};\nvar __decorate$1x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$b = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$b = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values$h = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$D = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$m = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$D(arguments[i]));\n return ar;\n};\nvar Chart = /** @class */ (function (_super) {\n __extends$2e(Chart, _super);\n function Chart(document, overrideDevicePixelRatio, resources) {\n if (document === void 0) { document = window.document; }\n var _a;\n var _this = _super.call(this) || this;\n _this.id = createId$1(_this);\n _this.processedOptions = {};\n _this.userOptions = {};\n _this.queuedUserOptions = [];\n _this.seriesRoot = new Group({ name: _this.id + \"-Series-root\" });\n _this.extraDebugStats = {};\n _this._container = undefined;\n _this.data = [];\n _this.padding = new Padding$1(20);\n _this.seriesAreaPadding = new Padding$1(0);\n _this.title = undefined;\n _this.subtitle = undefined;\n _this.footnote = undefined;\n _this.mode = 'standalone';\n _this._destroyed = false;\n _this.modules = {};\n _this._pendingFactoryUpdates = [];\n _this._performUpdateNoRenderCount = 0;\n _this._performUpdateType = ChartUpdateType.NONE;\n _this.seriesToUpdate = new Set();\n _this.performUpdateTrigger = debouncedCallback(function (_a) {\n var count = _a.count;\n return __awaiter$b(_this, void 0, void 0, function () {\n var error_1;\n return __generator$b(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (this._destroyed)\n return [2 /*return*/];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.performUpdate(count)];\n case 2:\n _b.sent();\n return [3 /*break*/, 4];\n case 3:\n error_1 = _b.sent();\n this._lastPerformUpdateError = error_1;\n Logger.error('update error', error_1);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n });\n _this._axes = [];\n _this._series = [];\n _this.lastInteractionEvent = undefined;\n _this.pointerScheduler = debouncedAnimationFrame(function () {\n if (_this.lastInteractionEvent) {\n _this.handlePointer(_this.lastInteractionEvent);\n }\n _this.lastInteractionEvent = undefined;\n });\n _this.onSeriesNodeClick = function (event) {\n var seriesNodeClickEvent = __assign$z(__assign$z({}, event), { type: 'seriesNodeClick' });\n Object.defineProperty(seriesNodeClickEvent, 'series', {\n enumerable: false,\n // Should display the deprecation warning\n get: function () { return event.series; },\n });\n _this.fireEvent(seriesNodeClickEvent);\n };\n _this.onSeriesNodeDoubleClick = function (event) {\n var seriesNodeDoubleClick = __assign$z(__assign$z({}, event), { type: 'seriesNodeDoubleClick' });\n _this.fireEvent(seriesNodeDoubleClick);\n };\n var scene = resources === null || resources === void 0 ? void 0 : resources.scene;\n var element = (_a = resources === null || resources === void 0 ? void 0 : resources.element) !== null && _a !== void 0 ? _a : document.createElement('div');\n var container = resources === null || resources === void 0 ? void 0 : resources.container;\n var root = new Group({ name: 'root' });\n // Prevent the scene from rendering chart components in an invalid state\n // (before first layout is performed).\n root.visible = false;\n root.append(_this.seriesRoot);\n _this.axisGroup = new Group({ name: 'Axes', layer: true, zIndex: Layers.AXIS_ZINDEX });\n root.appendChild(_this.axisGroup);\n _this.element = element;\n element.classList.add('ag-chart-wrapper');\n element.style.position = 'relative';\n _this.scene = scene !== null && scene !== void 0 ? scene : new Scene({ document: document, overrideDevicePixelRatio: overrideDevicePixelRatio });\n _this.debug = false;\n _this.scene.debug.consoleLog = false;\n _this.scene.root = root;\n _this.scene.container = element;\n _this.autoSize = true;\n _this.interactionManager = new InteractionManager(element);\n _this.cursorManager = new CursorManager(element);\n _this.highlightManager = new HighlightManager();\n _this.zoomManager = new ZoomManager();\n _this.layoutService = new LayoutService();\n _this.updateService = new UpdateService(function (type) {\n if (type === void 0) { type = ChartUpdateType.FULL; }\n return _this.update(type);\n });\n SizeMonitor.observe(_this.element, function (size) {\n var width = size.width, height = size.height;\n if (!_this.autoSize) {\n return;\n }\n if (width === 0 && height === 0) {\n return;\n }\n if (width === _this.width && height === _this.height) {\n return;\n }\n _this._lastAutoSize = [width, height];\n _this.resize(width, height);\n });\n _this.layoutService.addListener('start-layout', function (e) { return _this.positionPadding(e.shrinkRect); });\n _this.layoutService.addListener('start-layout', function (e) { return _this.positionCaptions(e.shrinkRect); });\n _this.tooltip = new Tooltip(_this.scene.canvas.element, document, document.body);\n _this.tooltipManager = new TooltipManager(_this.tooltip, _this.interactionManager);\n _this.legend = new Legend(_this, _this.interactionManager, _this.cursorManager, _this.highlightManager, _this.tooltipManager, _this.layoutService);\n _this.overlays = new ChartOverlays(_this.element);\n _this.highlight = new ChartHighlight();\n _this.container = container;\n // Add interaction listeners last so child components are registered first.\n _this.interactionManager.addListener('click', function (event) { return _this.onClick(event); });\n _this.interactionManager.addListener('dblclick', function (event) { return _this.onDoubleClick(event); });\n _this.interactionManager.addListener('hover', function (event) { return _this.onMouseMove(event); });\n _this.interactionManager.addListener('leave', function (event) { return _this.onLeave(event); });\n _this.interactionManager.addListener('page-left', function () { return _this.destroy(); });\n _this.interactionManager.addListener('wheel', function () { return _this.disablePointer(); });\n _this.zoomManager.addListener('zoom-change', function (_) {\n return _this.update(ChartUpdateType.PROCESS_DATA, { forceNodeDataRefresh: true });\n });\n _this.highlightManager.addListener('highlight-change', function (event) { return _this.changeHighlightDatum(event); });\n return _this;\n }\n Chart.prototype.getOptions = function () {\n var _a;\n var queuedUserOptions = this.queuedUserOptions;\n var lastUpdateOptions = (_a = queuedUserOptions[queuedUserOptions.length - 1]) !== null && _a !== void 0 ? _a : this.userOptions;\n return jsonMerge([lastUpdateOptions]);\n };\n Object.defineProperty(Chart.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n set: function (value) {\n if (this._container !== value) {\n var parentNode = this.element.parentNode;\n if (parentNode != null) {\n parentNode.removeChild(this.element);\n }\n if (value && !this.destroyed) {\n value.appendChild(this.element);\n }\n this._container = value;\n }\n },\n enumerable: false,\n configurable: true\n });\n Chart.prototype.autoSizeChanged = function (value) {\n var style = this.element.style;\n if (value) {\n style.display = 'block';\n style.width = '100%';\n style.height = '100%';\n if (!this._lastAutoSize) {\n return;\n }\n this.resize(this._lastAutoSize[0], this._lastAutoSize[1]);\n }\n else {\n style.display = 'inline-block';\n style.width = 'auto';\n style.height = 'auto';\n }\n };\n Chart.prototype.download = function (fileName, fileFormat) {\n this.scene.download(fileName, fileFormat);\n };\n Object.defineProperty(Chart.prototype, \"destroyed\", {\n get: function () {\n return this._destroyed;\n },\n enumerable: false,\n configurable: true\n });\n Chart.prototype.addModule = function (module) {\n if (this.modules[module.optionsKey] != null) {\n throw new Error('AG Charts - module already initialised: ' + module.optionsKey);\n }\n var moduleMeta = module.initialiseModule(this.getModuleContext());\n this.modules[module.optionsKey] = moduleMeta;\n this[module.optionsKey] = moduleMeta.instance;\n };\n Chart.prototype.removeModule = function (module) {\n var _a, _b;\n (_b = (_a = this.modules[module.optionsKey]) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.destroy();\n delete this.modules[module.optionsKey];\n delete this[module.optionsKey];\n };\n Chart.prototype.isModuleEnabled = function (module) {\n return this.modules[module.optionsKey] != null;\n };\n Chart.prototype.getModuleContext = function () {\n var _a = this, scene = _a.scene, interactionManager = _a.interactionManager, zoomManager = _a.zoomManager, cursorManager = _a.cursorManager, highlightManager = _a.highlightManager, tooltipManager = _a.tooltipManager, layoutService = _a.layoutService, updateService = _a.updateService;\n return {\n scene: scene,\n interactionManager: interactionManager,\n zoomManager: zoomManager,\n cursorManager: cursorManager,\n highlightManager: highlightManager,\n tooltipManager: tooltipManager,\n layoutService: layoutService,\n updateService: updateService,\n };\n };\n Chart.prototype.destroy = function (opts) {\n var e_1, _a;\n if (this._destroyed) {\n return;\n }\n var keepTransferableResources = opts === null || opts === void 0 ? void 0 : opts.keepTransferableResources;\n var result = undefined;\n this._performUpdateType = ChartUpdateType.NONE;\n this._pendingFactoryUpdates.splice(0);\n this.tooltipManager.destroy();\n this.tooltip.destroy();\n this.legend.destroy();\n SizeMonitor.unobserve(this.element);\n try {\n for (var _b = __values$h(Object.entries(this.modules)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$D(_c.value, 2), key = _d[0], module_1 = _d[1];\n module_1.instance.destroy();\n delete this.modules[key];\n delete this[key];\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.interactionManager.destroy();\n if (keepTransferableResources) {\n this.scene.strip();\n result = { container: this.container, scene: this.scene, element: this.element };\n }\n else {\n this.scene.destroy();\n this.container = undefined;\n }\n this.series.forEach(function (s) { return s.destroy(); });\n this.series = [];\n this.axes.forEach(function (a) { return a.destroy(); });\n this.axes = [];\n this._destroyed = true;\n return result;\n };\n Chart.prototype.log = function (opts) {\n if (this.debug) {\n Logger.debug(opts);\n }\n };\n Chart.prototype.disablePointer = function (highlightOnly) {\n if (highlightOnly === void 0) { highlightOnly = false; }\n if (!highlightOnly) {\n this.tooltipManager.removeTooltip(this.id);\n }\n this.highlightManager.updateHighlight(this.id);\n if (this.lastInteractionEvent) {\n this.lastInteractionEvent = undefined;\n }\n };\n Chart.prototype.requestFactoryUpdate = function (cb) {\n var callbacks = this._pendingFactoryUpdates;\n var count = callbacks.length;\n if (count === 0) {\n callbacks.push(cb);\n this._processCallbacks();\n }\n else {\n // Factory callback process already running, the callback will be invoked asynchronously.\n // Clear the queue after the first callback to prevent unnecessary re-renderings.\n callbacks.splice(1, count - 1, cb);\n }\n };\n Chart.prototype._processCallbacks = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n var callbacks, e_2;\n return __generator$b(this, function (_a) {\n switch (_a.label) {\n case 0:\n callbacks = this._pendingFactoryUpdates;\n _a.label = 1;\n case 1:\n if (!(callbacks.length > 0)) return [3 /*break*/, 7];\n if (!this.updatePending) return [3 /*break*/, 3];\n return [4 /*yield*/, sleep(1)];\n case 2:\n _a.sent();\n return [3 /*break*/, 1]; // Make sure to check queue has an item before continuing.\n case 3:\n _a.trys.push([3, 5, , 6]);\n return [4 /*yield*/, callbacks[0]()];\n case 4:\n _a.sent();\n return [3 /*break*/, 6];\n case 5:\n e_2 = _a.sent();\n Logger.error('update error', e_2);\n return [3 /*break*/, 6];\n case 6:\n callbacks.shift();\n return [3 /*break*/, 1];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(Chart.prototype, \"performUpdateType\", {\n get: function () {\n return this._performUpdateType;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"updatePending\", {\n get: function () {\n return this._performUpdateType !== ChartUpdateType.NONE || this.lastInteractionEvent != null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"lastPerformUpdateError\", {\n get: function () {\n return this._lastPerformUpdateError;\n },\n enumerable: false,\n configurable: true\n });\n Chart.prototype.awaitUpdateCompletion = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n return __generator$b(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.performUpdateTrigger.await()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Chart.prototype.update = function (type, opts) {\n var e_3, _a;\n if (type === void 0) { type = ChartUpdateType.FULL; }\n var _b = opts || {}, _c = _b.forceNodeDataRefresh, forceNodeDataRefresh = _c === void 0 ? false : _c, _d = _b.seriesToUpdate, seriesToUpdate = _d === void 0 ? this.series : _d;\n if (forceNodeDataRefresh) {\n this.series.forEach(function (series) { return series.markNodeDataDirty(); });\n }\n try {\n for (var seriesToUpdate_1 = __values$h(seriesToUpdate), seriesToUpdate_1_1 = seriesToUpdate_1.next(); !seriesToUpdate_1_1.done; seriesToUpdate_1_1 = seriesToUpdate_1.next()) {\n var series = seriesToUpdate_1_1.value;\n this.seriesToUpdate.add(series);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (seriesToUpdate_1_1 && !seriesToUpdate_1_1.done && (_a = seriesToUpdate_1.return)) _a.call(seriesToUpdate_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n if (type < this._performUpdateType) {\n this._performUpdateType = type;\n this.performUpdateTrigger.schedule();\n }\n };\n Chart.prototype.performUpdate = function (count) {\n var _a;\n return __awaiter$b(this, void 0, void 0, function () {\n var _b, performUpdateType, extraDebugStats, splits, _c, count_1, seriesRect_1, seriesUpdates, tooltipMeta, end;\n return __generator$b(this, function (_d) {\n switch (_d.label) {\n case 0:\n _b = this, performUpdateType = _b._performUpdateType, extraDebugStats = _b.extraDebugStats;\n splits = [performance.now()];\n _c = performUpdateType;\n switch (_c) {\n case ChartUpdateType.FULL: return [3 /*break*/, 1];\n case ChartUpdateType.PROCESS_DATA: return [3 /*break*/, 1];\n case ChartUpdateType.PERFORM_LAYOUT: return [3 /*break*/, 3];\n case ChartUpdateType.SERIES_UPDATE: return [3 /*break*/, 5];\n case ChartUpdateType.TOOLTIP_RECALCULATION: return [3 /*break*/, 7];\n case ChartUpdateType.SCENE_RENDER: return [3 /*break*/, 8];\n case ChartUpdateType.NONE: return [3 /*break*/, 10];\n }\n return [3 /*break*/, 11];\n case 1: return [4 /*yield*/, this.processData()];\n case 2:\n _d.sent();\n this.disablePointer(true);\n splits.push(performance.now());\n _d.label = 3;\n case 3:\n if (this.autoSize && !this._lastAutoSize) {\n count_1 = this._performUpdateNoRenderCount++;\n if (count_1 < 5) {\n // Reschedule if canvas size hasn't been set yet to avoid a race.\n this._performUpdateType = ChartUpdateType.PERFORM_LAYOUT;\n this.performUpdateTrigger.schedule();\n return [3 /*break*/, 11];\n }\n // After several failed passes, continue and accept there maybe a redundant\n // render. Sometimes this case happens when we already have the correct\n // width/height, and we end up never rendering the chart in that scenario.\n }\n this._performUpdateNoRenderCount = 0;\n return [4 /*yield*/, this.performLayout()];\n case 4:\n _d.sent();\n this.handleOverlays();\n splits.push(performance.now());\n _d.label = 5;\n case 5:\n seriesRect_1 = this.seriesRect;\n seriesUpdates = __spread$m(this.seriesToUpdate).map(function (series) { return series.update({ seriesRect: seriesRect_1 }); });\n this.seriesToUpdate.clear();\n return [4 /*yield*/, Promise.all(seriesUpdates)];\n case 6:\n _d.sent();\n splits.push(performance.now());\n _d.label = 7;\n case 7:\n tooltipMeta = this.tooltipManager.getTooltipMeta(this.id);\n if (performUpdateType < ChartUpdateType.SERIES_UPDATE && ((_a = tooltipMeta === null || tooltipMeta === void 0 ? void 0 : tooltipMeta.event) === null || _a === void 0 ? void 0 : _a.type) === 'hover') {\n this.handlePointer(tooltipMeta.event);\n }\n _d.label = 8;\n case 8: return [4 /*yield*/, this.scene.render({ debugSplitTimes: splits, extraDebugStats: extraDebugStats })];\n case 9:\n _d.sent();\n this.extraDebugStats = {};\n _d.label = 10;\n case 10:\n // Do nothing.\n this._performUpdateType = ChartUpdateType.NONE;\n _d.label = 11;\n case 11:\n end = performance.now();\n this.log({\n chart: this,\n durationMs: Math.round((end - splits[0]) * 100) / 100,\n count: count,\n performUpdateType: ChartUpdateType[performUpdateType],\n });\n return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(Chart.prototype, \"axes\", {\n get: function () {\n return this._axes;\n },\n set: function (values) {\n var _this = this;\n var removedAxes = new Set();\n this._axes.forEach(function (axis) {\n axis.detachAxis(_this.axisGroup);\n removedAxes.add(axis);\n });\n // make linked axes go after the regular ones (simulates stable sort by `linkedTo` property)\n this._axes = values.filter(function (a) { return !a.linkedTo; }).concat(values.filter(function (a) { return a.linkedTo; }));\n this._axes.forEach(function (axis) {\n axis.attachAxis(_this.axisGroup);\n removedAxes.delete(axis);\n });\n removedAxes.forEach(function (axis) { return axis.destroy(); });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"series\", {\n get: function () {\n return this._series;\n },\n set: function (values) {\n var _this = this;\n this.removeAllSeries();\n values.forEach(function (series) { return _this.addSeries(series); });\n },\n enumerable: false,\n configurable: true\n });\n Chart.prototype.addSeries = function (series, before) {\n var _a = this, allSeries = _a.series, seriesRoot = _a.seriesRoot;\n var canAdd = allSeries.indexOf(series) < 0;\n if (canAdd) {\n var beforeIndex = before ? allSeries.indexOf(before) : -1;\n if (beforeIndex >= 0) {\n allSeries.splice(beforeIndex, 0, series);\n seriesRoot.insertBefore(series.rootGroup, before.rootGroup);\n }\n else {\n allSeries.push(series);\n seriesRoot.append(series.rootGroup);\n }\n this.initSeries(series);\n return true;\n }\n return false;\n };\n Chart.prototype.initSeries = function (series) {\n series.chart = this;\n series.highlightManager = this.highlightManager;\n if (!series.data) {\n series.data = this.data;\n }\n this.addSeriesListeners(series);\n };\n Chart.prototype.freeSeries = function (series) {\n series.chart = undefined;\n series.removeEventListener('nodeClick', this.onSeriesNodeClick);\n series.removeEventListener('nodeDoubleClick', this.onSeriesNodeDoubleClick);\n };\n Chart.prototype.removeAllSeries = function () {\n var _this = this;\n this.series.forEach(function (series) {\n _this.freeSeries(series);\n _this.seriesRoot.removeChild(series.rootGroup);\n });\n this._series = []; // using `_series` instead of `series` to prevent infinite recursion\n };\n Chart.prototype.addSeriesListeners = function (series) {\n if (this.hasEventListener('seriesNodeClick')) {\n series.addEventListener('nodeClick', this.onSeriesNodeClick);\n }\n if (this.hasEventListener('seriesNodeDoubleClick')) {\n series.addEventListener('nodeDoubleClick', this.onSeriesNodeDoubleClick);\n }\n };\n Chart.prototype.updateAllSeriesListeners = function () {\n var _this = this;\n this.series.forEach(function (series) {\n series.removeEventListener('nodeClick', _this.onSeriesNodeClick);\n series.removeEventListener('nodeDoubleClick', _this.onSeriesNodeDoubleClick);\n _this.addSeriesListeners(series);\n });\n };\n Chart.prototype.assignSeriesToAxes = function () {\n var _this = this;\n this.axes.forEach(function (axis) {\n axis.boundSeries = _this.series.filter(function (s) {\n var seriesAxis = axis.direction === ChartAxisDirection.X ? s.xAxis : s.yAxis;\n return seriesAxis === axis;\n });\n });\n };\n Chart.prototype.assignAxesToSeries = function (force) {\n var _this = this;\n if (force === void 0) { force = false; }\n // This method has to run before `assignSeriesToAxes`.\n var directionToAxesMap = {};\n this.axes.forEach(function (axis) {\n var direction = axis.direction;\n var directionAxes = directionToAxesMap[direction] || (directionToAxesMap[direction] = []);\n directionAxes.push(axis);\n });\n this.series.forEach(function (series) {\n series.directions.forEach(function (direction) {\n var currentAxis = direction === ChartAxisDirection.X ? series.xAxis : series.yAxis;\n if (currentAxis && !force) {\n return;\n }\n var directionAxes = directionToAxesMap[direction];\n if (!directionAxes) {\n Logger.warn(\"no available axis for direction [\" + direction + \"]; check series and axes configuration.\");\n return;\n }\n var seriesKeys = series.getKeys(direction);\n var newAxis = _this.findMatchingAxis(directionAxes, series.getKeys(direction));\n if (!newAxis) {\n Logger.warn(\"no matching axis for direction [\" + direction + \"] and keys [\" + seriesKeys + \"]; check series and axes configuration.\");\n return;\n }\n if (direction === ChartAxisDirection.X) {\n series.xAxis = newAxis;\n }\n else {\n series.yAxis = newAxis;\n }\n });\n });\n };\n Chart.prototype.findMatchingAxis = function (directionAxes, directionKeys) {\n var e_4, _a, e_5, _b;\n try {\n for (var directionAxes_1 = __values$h(directionAxes), directionAxes_1_1 = directionAxes_1.next(); !directionAxes_1_1.done; directionAxes_1_1 = directionAxes_1.next()) {\n var axis = directionAxes_1_1.value;\n var axisKeys = axis.keys;\n if (!axisKeys.length) {\n return axis;\n }\n if (!directionKeys) {\n continue;\n }\n try {\n for (var directionKeys_1 = (e_5 = void 0, __values$h(directionKeys)), directionKeys_1_1 = directionKeys_1.next(); !directionKeys_1_1.done; directionKeys_1_1 = directionKeys_1.next()) {\n var directionKey = directionKeys_1_1.value;\n if (axisKeys.indexOf(directionKey) >= 0) {\n return axis;\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (directionKeys_1_1 && !directionKeys_1_1.done && (_b = directionKeys_1.return)) _b.call(directionKeys_1);\n }\n finally { if (e_5) throw e_5.error; }\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (directionAxes_1_1 && !directionAxes_1_1.done && (_a = directionAxes_1.return)) _a.call(directionAxes_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n };\n Chart.prototype.resize = function (width, height) {\n if (!width || !height || !Number.isFinite(width) || !Number.isFinite(height))\n return;\n if (this.scene.resize(width, height)) {\n this.disablePointer();\n this.update(ChartUpdateType.PERFORM_LAYOUT, { forceNodeDataRefresh: true });\n }\n };\n Chart.prototype.processData = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n return __generator$b(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.axes.length > 0 || this.series.some(function (s) { return s instanceof CartesianSeries; })) {\n this.assignAxesToSeries(true);\n this.assignSeriesToAxes();\n }\n return [4 /*yield*/, Promise.all(this.series.map(function (s) { return s.processData(); }))];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.updateLegend()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Chart.prototype.placeLabels = function () {\n var e_6, _a;\n var visibleSeries = [];\n var data = [];\n try {\n for (var _b = __values$h(this.series), _c = _b.next(); !_c.done; _c = _b.next()) {\n var series = _c.value;\n if (!series.visible) {\n continue;\n }\n var labelData = series.getLabelData();\n if (!(labelData && isPointLabelDatum(labelData[0]))) {\n continue;\n }\n data.push(labelData);\n visibleSeries.push(series);\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_6) throw e_6.error; }\n }\n var seriesRect = this.seriesRect;\n var labels = seriesRect && data.length > 0\n ? placeLabels(data, { x: 0, y: 0, width: seriesRect.width, height: seriesRect.height })\n : [];\n return new Map(labels.map(function (l, i) { return [visibleSeries[i], l]; }));\n };\n Chart.prototype.updateLegend = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n var legendData, formatter;\n return __generator$b(this, function (_a) {\n legendData = [];\n this.series\n .filter(function (s) { return s.showInLegend; })\n .forEach(function (series) {\n legendData.push.apply(legendData, __spread$m(series.getLegendData()));\n });\n formatter = this.legend.item.label.formatter;\n if (formatter) {\n legendData.forEach(function (datum) {\n return (datum.label.text = formatter({\n get id() {\n Logger.warnOnce(\"LegendLabelFormatterParams.id is deprecated, use seriesId instead\");\n return datum.seriesId;\n },\n itemId: datum.itemId,\n value: datum.label.text,\n seriesId: datum.seriesId,\n }));\n });\n }\n this.legend.data = legendData;\n return [2 /*return*/];\n });\n });\n };\n Chart.prototype.performLayout = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n var _a, width, height, shrinkRect;\n return __generator$b(this, function (_b) {\n this.scene.root.visible = true;\n _a = this.scene, width = _a.width, height = _a.height;\n shrinkRect = new BBox(0, 0, width, height);\n (shrinkRect = this.layoutService.dispatchPerformLayout('start-layout', { shrinkRect: shrinkRect }).shrinkRect);\n (shrinkRect = this.layoutService.dispatchPerformLayout('before-series', { shrinkRect: shrinkRect }).shrinkRect);\n return [2 /*return*/, shrinkRect];\n });\n });\n };\n Chart.prototype.positionPadding = function (shrinkRect) {\n var padding = this.padding;\n shrinkRect.shrink(padding.left, 'left');\n shrinkRect.shrink(padding.top, 'top');\n shrinkRect.shrink(padding.right, 'right');\n shrinkRect.shrink(padding.bottom, 'bottom');\n return { shrinkRect: shrinkRect };\n };\n Chart.prototype.positionCaptions = function (shrinkRect) {\n var _a = this, title = _a.title, subtitle = _a.subtitle, footnote = _a.footnote;\n var newShrinkRect = shrinkRect.clone();\n var positionTopAndShrinkBBox = function (caption) {\n var _a;\n var baseY = newShrinkRect.y;\n caption.node.x = newShrinkRect.x + newShrinkRect.width / 2;\n caption.node.y = baseY;\n caption.node.textBaseline = 'top';\n var bbox = caption.node.computeBBox();\n // As the bbox (x,y) ends up at a different location than specified above, we need to\n // take it into consideration when calculating how much space needs to be reserved to\n // accommodate the caption.\n var bboxHeight = Math.ceil(bbox.y - baseY + bbox.height + ((_a = caption.spacing) !== null && _a !== void 0 ? _a : 0));\n newShrinkRect.shrink(bboxHeight, 'top');\n };\n var positionBottomAndShrinkBBox = function (caption) {\n var _a;\n var baseY = newShrinkRect.y + newShrinkRect.height;\n caption.node.x = newShrinkRect.x + newShrinkRect.width / 2;\n caption.node.y = baseY;\n caption.node.textBaseline = 'bottom';\n var bbox = caption.node.computeBBox();\n var bboxHeight = Math.ceil(baseY - bbox.y + ((_a = caption.spacing) !== null && _a !== void 0 ? _a : 0));\n newShrinkRect.shrink(bboxHeight, 'bottom');\n };\n if (title) {\n title.node.visible = title.enabled;\n if (title.node.visible) {\n positionTopAndShrinkBBox(title);\n }\n }\n if (subtitle) {\n subtitle.node.visible = title !== undefined && title.enabled && subtitle.enabled;\n if (subtitle.node.visible) {\n positionTopAndShrinkBBox(subtitle);\n }\n }\n if (footnote) {\n footnote.node.visible = footnote.enabled;\n if (footnote.node.visible) {\n positionBottomAndShrinkBBox(footnote);\n }\n }\n return { shrinkRect: newShrinkRect };\n };\n Chart.prototype.getSeriesRect = function () {\n return this.seriesRect;\n };\n // x/y are local canvas coordinates in CSS pixels, not actual pixels\n Chart.prototype.pickSeriesNode = function (point, exactMatchOnly, maxDistance) {\n var e_7, _a;\n var _b, _c;\n var start = performance.now();\n // Disable 'nearest match' options if looking for exact matches only\n var pickModes = exactMatchOnly ? [SeriesNodePickMode.EXACT_SHAPE_MATCH] : undefined;\n // Iterate through series in reverse, as later declared series appears on top of earlier\n // declared series.\n var reverseSeries = __spread$m(this.series).reverse();\n var result = undefined;\n try {\n for (var reverseSeries_1 = __values$h(reverseSeries), reverseSeries_1_1 = reverseSeries_1.next(); !reverseSeries_1_1.done; reverseSeries_1_1 = reverseSeries_1.next()) {\n var series = reverseSeries_1_1.value;\n if (!series.visible || !series.rootGroup.visible) {\n continue;\n }\n var _d = (_b = series.pickNode(point, pickModes)) !== null && _b !== void 0 ? _b : {}, match = _d.match, distance = _d.distance;\n if (!match || distance == null) {\n continue;\n }\n if ((!result || result.distance > distance) && distance <= (maxDistance !== null && maxDistance !== void 0 ? maxDistance : Infinity)) {\n result = { series: series, distance: distance, datum: match };\n }\n if (distance === 0) {\n break;\n }\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (reverseSeries_1_1 && !reverseSeries_1_1.done && (_a = reverseSeries_1.return)) _a.call(reverseSeries_1);\n }\n finally { if (e_7) throw e_7.error; }\n }\n this.extraDebugStats['pickSeriesNode'] = Math.round(((_c = this.extraDebugStats['pickSeriesNode']) !== null && _c !== void 0 ? _c : 0) + (performance.now() - start));\n return result;\n };\n Chart.prototype.onMouseMove = function (event) {\n this.lastInteractionEvent = event;\n this.pointerScheduler.schedule();\n this.extraDebugStats['mouseX'] = event.offsetX;\n this.extraDebugStats['mouseY'] = event.offsetY;\n this.update(ChartUpdateType.SCENE_RENDER);\n };\n Chart.prototype.onLeave = function (event) {\n if (this.tooltip.pointerLeftOntoTooltip(event)) {\n return;\n }\n this.disablePointer();\n };\n Chart.prototype.handlePointer = function (event) {\n var _this = this;\n var _a = this, lastPick = _a.lastPick, hoverRect = _a.hoverRect;\n var offsetX = event.offsetX, offsetY = event.offsetY;\n var disablePointer = function (highlightOnly) {\n if (highlightOnly === void 0) { highlightOnly = false; }\n if (lastPick) {\n // Cursor moved from a non-marker node to empty space.\n _this.disablePointer(highlightOnly);\n }\n };\n if (!(hoverRect === null || hoverRect === void 0 ? void 0 : hoverRect.containsPoint(offsetX, offsetY))) {\n disablePointer();\n return;\n }\n // Handle node highlighting and tooltip toggling when pointer within `tooltip.range`\n this.handlePointerTooltip(event, disablePointer);\n // Handle node highlighting and mouse cursor when pointer withing `series[].nodeClickRange`\n this.handlePointerNode(event);\n };\n Chart.prototype.handlePointerTooltip = function (event, disablePointer) {\n var _a, _b;\n var _c = this, lastPick = _c.lastPick, tooltip = _c.tooltip;\n var range = tooltip.range;\n var pageX = event.pageX, pageY = event.pageY, offsetX = event.offsetX, offsetY = event.offsetY;\n var pixelRange;\n if (typeof range === 'number' && Number.isFinite(range)) {\n pixelRange = range;\n }\n var pick = this.pickSeriesNode({ x: offsetX, y: offsetY }, range === 'exact', pixelRange);\n if (!pick) {\n this.tooltipManager.updateTooltip(this.id);\n if (this.highlight.range === 'tooltip')\n disablePointer(true);\n return;\n }\n var isNewDatum = this.highlight.range === 'node' || !lastPick || lastPick.datum !== pick.datum;\n var html;\n if (isNewDatum) {\n html = pick.series.getTooltipHtml(pick.datum);\n if (this.highlight.range === 'tooltip') {\n this.highlightManager.updateHighlight(this.id, pick.datum);\n }\n }\n else if (lastPick) {\n lastPick.event = event.sourceEvent;\n }\n var isPixelRange = pixelRange != null;\n var tooltipEnabled = this.tooltip.enabled && pick.series.tooltip.enabled;\n var exactlyMatched = range === 'exact' && pick.distance === 0;\n var rangeMatched = range === 'nearest' || isPixelRange || exactlyMatched;\n var shouldUpdateTooltip = tooltipEnabled && rangeMatched && (!isNewDatum || html !== undefined);\n var position = {\n xOffset: pick.datum.series.tooltip.position.xOffset,\n yOffset: pick.datum.series.tooltip.position.yOffset,\n };\n var meta = this.mergePointerDatum({ pageX: pageX, pageY: pageY, offsetX: offsetX, offsetY: offsetY, event: event, position: position }, pick.datum);\n meta.enableInteraction = (_b = (_a = pick.series.tooltip.interaction) === null || _a === void 0 ? void 0 : _a.enabled) !== null && _b !== void 0 ? _b : false;\n if (shouldUpdateTooltip) {\n this.tooltipManager.updateTooltip(this.id, meta, html);\n }\n };\n Chart.prototype.handlePointerNode = function (event) {\n var _this = this;\n var found = this.checkSeriesNodeRange(event, function (series, datum) {\n if (series.hasEventListener('nodeClick') || series.hasEventListener('nodeDoubleClick')) {\n _this.cursorManager.updateCursor('chart', 'pointer');\n }\n if (_this.highlight.range === 'node') {\n _this.highlightManager.updateHighlight(_this.id, datum);\n }\n });\n if (!found) {\n this.cursorManager.updateCursor('chart');\n if (this.highlight.range === 'node') {\n this.highlightManager.updateHighlight(this.id);\n }\n }\n };\n Chart.prototype.onClick = function (event) {\n if (this.checkSeriesNodeClick(event)) {\n this.update(ChartUpdateType.SERIES_UPDATE);\n return;\n }\n this.fireEvent({\n type: 'click',\n event: event.sourceEvent,\n });\n };\n Chart.prototype.onDoubleClick = function (event) {\n if (this.checkSeriesNodeDoubleClick(event)) {\n this.update(ChartUpdateType.SERIES_UPDATE);\n return;\n }\n this.fireEvent({\n type: 'doubleClick',\n event: event.sourceEvent,\n });\n };\n Chart.prototype.checkSeriesNodeClick = function (event) {\n return this.checkSeriesNodeRange(event, function (series, datum) {\n return series.fireNodeClickEvent(event.sourceEvent, datum);\n });\n };\n Chart.prototype.checkSeriesNodeDoubleClick = function (event) {\n return this.checkSeriesNodeRange(event, function (series, datum) {\n return series.fireNodeDoubleClickEvent(event.sourceEvent, datum);\n });\n };\n Chart.prototype.checkSeriesNodeRange = function (event, callback) {\n var nearestNode = this.pickSeriesNode({ x: event.offsetX, y: event.offsetY }, false);\n var datum = nearestNode === null || nearestNode === void 0 ? void 0 : nearestNode.datum;\n var nodeClickRange = datum === null || datum === void 0 ? void 0 : datum.series.nodeClickRange;\n // First check if we should trigger the callback based on nearest node\n if (datum && nodeClickRange === 'nearest') {\n callback(datum.series, datum);\n return true;\n }\n // Then check for an exact match or within the given range\n var pixelRange;\n if (typeof nodeClickRange === 'number' && Number.isFinite(nodeClickRange)) {\n pixelRange = nodeClickRange;\n }\n var pick = this.pickSeriesNode({ x: event.offsetX, y: event.offsetY }, nodeClickRange === 'exact', pixelRange);\n if (!pick)\n return false;\n // Then if we've picked a node within the pixel range, or exactly, trigger the callback\n var isPixelRange = pixelRange != null;\n var exactlyMatched = nodeClickRange === 'exact' && pick.distance === 0;\n if (isPixelRange || exactlyMatched) {\n callback(pick.series, pick.datum);\n return true;\n }\n return false;\n };\n Chart.prototype.mergePointerDatum = function (meta, datum) {\n var type = datum.series.tooltip.position.type;\n if (type === 'node' && datum.nodeMidPoint) {\n var _a = datum.nodeMidPoint, x = _a.x, y = _a.y;\n var canvas = this.scene.canvas;\n var point = datum.series.rootGroup.inverseTransformPoint(x, y);\n var canvasRect = canvas.element.getBoundingClientRect();\n return __assign$z(__assign$z({}, meta), { pageX: Math.round(canvasRect.left + window.scrollX + point.x), pageY: Math.round(canvasRect.top + window.scrollY + point.y), offsetX: Math.round(point.x), offsetY: Math.round(point.y) });\n }\n return meta;\n };\n Chart.prototype.changeHighlightDatum = function (event) {\n var seriesToUpdate = new Set();\n var _a = event.currentHighlight || {}, _b = _a.series, newSeries = _b === void 0 ? undefined : _b, newDatum = _a.datum;\n var _c = event.previousHighlight || {}, _d = _c.series, lastSeries = _d === void 0 ? undefined : _d, lastDatum = _c.datum;\n if (lastSeries) {\n seriesToUpdate.add(lastSeries);\n }\n if (newSeries) {\n seriesToUpdate.add(newSeries);\n }\n // Adjust cursor if a specific datum is highlighted, rather than just a series.\n if ((lastSeries === null || lastSeries === void 0 ? void 0 : lastSeries.cursor) && lastDatum) {\n this.cursorManager.updateCursor(lastSeries.id);\n }\n if ((newSeries === null || newSeries === void 0 ? void 0 : newSeries.cursor) && newDatum) {\n this.cursorManager.updateCursor(newSeries.id, newSeries.cursor);\n }\n this.lastPick = event.currentHighlight ? { datum: event.currentHighlight } : undefined;\n var updateAll = newSeries == null || lastSeries == null;\n if (updateAll) {\n this.update(ChartUpdateType.SERIES_UPDATE);\n }\n else {\n this.update(ChartUpdateType.SERIES_UPDATE, { seriesToUpdate: seriesToUpdate });\n }\n };\n Chart.prototype.waitForUpdate = function (timeoutMs) {\n if (timeoutMs === void 0) { timeoutMs = 5000; }\n return __awaiter$b(this, void 0, void 0, function () {\n var start;\n return __generator$b(this, function (_a) {\n switch (_a.label) {\n case 0:\n start = performance.now();\n _a.label = 1;\n case 1:\n if (!(this._pendingFactoryUpdates.length > 0 || this.updatePending)) return [3 /*break*/, 3];\n if (performance.now() - start > timeoutMs) {\n throw new Error('waitForUpdate() timeout reached.');\n }\n return [4 /*yield*/, sleep(5)];\n case 2:\n _a.sent();\n return [3 /*break*/, 1];\n case 3: return [4 /*yield*/, this.awaitUpdateCompletion()];\n case 4:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Chart.prototype.handleOverlays = function () {\n this.handleNoDataOverlay();\n };\n Chart.prototype.handleNoDataOverlay = function () {\n var shouldDisplayNoDataOverlay = !this.series.some(function (s) { return s.hasData(); });\n var rect = this.getSeriesRect();\n if (shouldDisplayNoDataOverlay && rect) {\n this.overlays.noData.show(rect);\n }\n else {\n this.overlays.noData.hide();\n }\n };\n __decorate$1x([\n ActionOnSet({\n newValue: function (value) {\n this.scene.debug.consoleLog = value;\n },\n })\n ], Chart.prototype, \"debug\", void 0);\n __decorate$1x([\n ActionOnSet({\n newValue: function (value) {\n var _a;\n (_a = this.series) === null || _a === void 0 ? void 0 : _a.forEach(function (series) { return (series.data = value); });\n },\n })\n ], Chart.prototype, \"data\", void 0);\n __decorate$1x([\n ActionOnSet({\n newValue: function (value) {\n this.autoSize = false;\n this.resize(value, this.height);\n },\n })\n ], Chart.prototype, \"width\", void 0);\n __decorate$1x([\n ActionOnSet({\n newValue: function (value) {\n this.autoSize = false;\n this.resize(this.width, value);\n },\n })\n ], Chart.prototype, \"height\", void 0);\n __decorate$1x([\n ActionOnSet({\n changeValue: function (value) {\n this.autoSizeChanged(value);\n },\n }),\n Validate(BOOLEAN)\n ], Chart.prototype, \"autoSize\", void 0);\n __decorate$1x([\n ActionOnSet({\n newValue: function (value) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(value.node);\n },\n oldValue: function (oldValue) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(oldValue.node);\n },\n })\n ], Chart.prototype, \"title\", void 0);\n __decorate$1x([\n ActionOnSet({\n newValue: function (value) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(value.node);\n },\n oldValue: function (oldValue) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(oldValue.node);\n },\n })\n ], Chart.prototype, \"subtitle\", void 0);\n __decorate$1x([\n ActionOnSet({\n newValue: function (value) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(value.node);\n },\n oldValue: function (oldValue) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(oldValue.node);\n },\n })\n ], Chart.prototype, \"footnote\", void 0);\n __decorate$1x([\n Validate(STRING_UNION('standalone', 'integrated'))\n ], Chart.prototype, \"mode\", void 0);\n return Chart;\n}(Observable));\n\n/**\n * The tree layout is calculated in abstract x/y coordinates, where the root is at (0, 0)\n * and the tree grows downward from the root.\n */\nvar TreeNode = /** @class */ (function () {\n function TreeNode(label, parent, number) {\n if (label === void 0) { label = ''; }\n if (number === void 0) { number = 0; }\n this.x = 0;\n this.y = 0;\n this.subtreeLeft = NaN;\n this.subtreeRight = NaN;\n this.screenX = 0;\n this.screenY = 0;\n this.children = [];\n this.leafCount = 0;\n this.prelim = 0;\n this.mod = 0;\n this.ancestor = this;\n this.change = 0;\n this.shift = 0;\n this.label = label;\n // screenX and screenY are meant to be recomputed from (layout) x and y\n // when the tree is resized (without performing another layout)\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n this.number = number;\n }\n TreeNode.prototype.getLeftSibling = function () {\n return this.number > 0 && this.parent ? this.parent.children[this.number - 1] : undefined;\n };\n TreeNode.prototype.getLeftmostSibling = function () {\n return this.number > 0 && this.parent ? this.parent.children[0] : undefined;\n };\n // traverse the left contour of a subtree, return the successor of v on this contour\n TreeNode.prototype.nextLeft = function () {\n return this.children ? this.children[0] : this.thread;\n };\n // traverse the right contour of a subtree, return the successor of v on this contour\n TreeNode.prototype.nextRight = function () {\n return this.children ? this.children[this.children.length - 1] : this.thread;\n };\n TreeNode.prototype.getSiblings = function () {\n var _this = this;\n return this.parent ? this.parent.children.filter(function (_, i) { return i !== _this.number; }) : [];\n };\n return TreeNode;\n}());\n/**\n * Converts an array of ticks, where each tick has an array of labels, to a label tree.\n * If `pad` is `true`, will ensure that every branch matches the depth of the tree by\n * creating empty labels.\n */\nfunction ticksToTree(ticks, pad) {\n if (pad === void 0) { pad = true; }\n var root = new TreeNode();\n var depth = 0;\n if (pad) {\n ticks.forEach(function (tick) { return (depth = Math.max(depth, tick.labels.length)); });\n }\n ticks.forEach(function (tick) {\n if (pad) {\n while (tick.labels.length < depth) {\n tick.labels.unshift('');\n }\n }\n insertTick(root, tick);\n });\n return root;\n}\nfunction insertTick(root, tick) {\n var pathParts = tick.labels.slice().reverse(); // path elements from root to leaf label\n var lastPartIndex = pathParts.length - 1;\n pathParts.forEach(function (pathPart, partIndex) {\n var children = root.children;\n var existingNode = children.find(function (child) { return child.label === pathPart; });\n var isNotLeaf = partIndex !== lastPartIndex;\n if (existingNode && isNotLeaf) {\n // the isNotLeaf check is to allow duplicate leafs\n root = existingNode;\n }\n else {\n var node = new TreeNode(pathPart, root);\n node.number = children.length;\n children.push(node);\n if (isNotLeaf) {\n root = node;\n }\n }\n });\n}\n// Shift the subtree.\nfunction moveSubtree(wm, wp, shift) {\n var subtrees = wp.number - wm.number;\n var ratio = shift / subtrees;\n wp.change -= ratio;\n wp.shift += shift;\n wm.change += ratio;\n wp.prelim += shift;\n wp.mod += shift;\n}\nfunction ancestor(vim, v, defaultAncestor) {\n return v.getSiblings().indexOf(vim.ancestor) >= 0 ? vim.ancestor : defaultAncestor;\n}\n// Spaces out the children.\nfunction executeShifts(v) {\n var children = v.children;\n if (children) {\n var shift = 0;\n var change = 0;\n for (var i = children.length - 1; i >= 0; i--) {\n var w = children[i];\n w.prelim += shift;\n w.mod += shift;\n change += w.change;\n shift += w.shift + change;\n }\n }\n}\n// Moves current subtree with v as the root if some nodes are conflicting in space.\nfunction apportion(v, defaultAncestor, distance) {\n var w = v.getLeftSibling();\n if (w) {\n var vop = v;\n var vip = v;\n var vim = w;\n var vom = vip.getLeftmostSibling();\n var sip = vip.mod;\n var sop = vop.mod;\n var sim = vim.mod;\n var som = vom.mod;\n while (vim.nextRight() && vip.nextLeft()) {\n vim = vim.nextRight();\n vip = vip.nextLeft();\n vom = vom.nextLeft();\n vop = vop.nextRight();\n vop.ancestor = v;\n var shift = vim.prelim + sim - (vip.prelim + sip) + distance;\n if (shift > 0) {\n moveSubtree(ancestor(vim, v, defaultAncestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.mod;\n sip += vip.mod;\n som += vom.mod;\n sop += vop.mod;\n }\n if (vim.nextRight() && !vop.nextRight()) {\n vop.thread = vim.nextRight();\n vop.mod += sim - sop;\n }\n else {\n if (vip.nextLeft() && !vom.nextLeft()) {\n vom.thread = vip.nextLeft();\n vom.mod += sip - som;\n }\n defaultAncestor = v;\n }\n }\n return defaultAncestor;\n}\n// Compute the preliminary x-coordinate of node and its children (recursively).\nfunction firstWalk(node, distance) {\n var children = node.children;\n if (children.length) {\n var defaultAncestor_1 = children[0];\n children.forEach(function (child) {\n firstWalk(child, distance);\n defaultAncestor_1 = apportion(child, defaultAncestor_1, distance);\n });\n executeShifts(node);\n var midpoint = (children[0].prelim + children[children.length - 1].prelim) / 2;\n var leftSibling = node.getLeftSibling();\n if (leftSibling) {\n node.prelim = leftSibling.prelim + distance;\n node.mod = node.prelim - midpoint;\n }\n else {\n node.prelim = midpoint;\n }\n }\n else {\n var leftSibling = node.getLeftSibling();\n node.prelim = leftSibling ? leftSibling.prelim + distance : 0;\n }\n}\nvar Dimensions = /** @class */ (function () {\n function Dimensions() {\n this.top = Infinity;\n this.right = -Infinity;\n this.bottom = -Infinity;\n this.left = Infinity;\n }\n Dimensions.prototype.update = function (node, xy) {\n var _a = xy(node), x = _a.x, y = _a.y;\n if (x > this.right) {\n this.right = x;\n }\n if (x < this.left) {\n this.left = x;\n }\n if (y > this.bottom) {\n this.bottom = y;\n }\n if (y < this.top) {\n this.top = y;\n }\n };\n return Dimensions;\n}());\nfunction secondWalk(v, m, layout) {\n v.x = v.prelim + m;\n v.y = v.depth;\n layout.update(v);\n v.children.forEach(function (w) { return secondWalk(w, m + v.mod, layout); });\n}\n// After the second walk the parent nodes are positioned at the center of their immediate children.\n// If we want the parent nodes to be positioned at the center of the subtree for which they are roots,\n// we need a third walk to adjust the positions.\nfunction thirdWalk(v) {\n var children = v.children;\n var leafCount = 0;\n children.forEach(function (w) {\n thirdWalk(w);\n if (w.children.length) {\n leafCount += w.leafCount;\n }\n else {\n leafCount++;\n }\n });\n v.leafCount = leafCount;\n if (children.length) {\n v.subtreeLeft = children[0].subtreeLeft;\n v.subtreeRight = children[v.children.length - 1].subtreeRight;\n v.x = (v.subtreeLeft + v.subtreeRight) / 2;\n }\n else {\n v.subtreeLeft = v.x;\n v.subtreeRight = v.x;\n }\n}\nfunction treeLayout(root) {\n var layout = new TreeLayout();\n firstWalk(root, 1);\n secondWalk(root, -root.prelim, layout);\n thirdWalk(root);\n return layout;\n}\nvar TreeLayout = /** @class */ (function () {\n function TreeLayout() {\n this.dimensions = new Dimensions();\n this.leafCount = 0;\n this.nodes = [];\n // One might want to process leaf nodes separately from the rest of the tree.\n // For example, position labels corresponding to leafs vertically, rather than horizontally.\n this.leafNodes = [];\n this.nonLeafNodes = [];\n this.depth = 0;\n }\n TreeLayout.prototype.update = function (node) {\n this.dimensions.update(node, function (node) { return ({ x: node.x, y: node.y }); });\n if (!node.children.length) {\n this.leafCount++;\n this.leafNodes.push(node);\n }\n else {\n this.nonLeafNodes.push(node);\n }\n if (node.depth > this.depth) {\n this.depth = node.depth;\n }\n this.nodes.push(node);\n };\n TreeLayout.prototype.resize = function (width, height, shiftX, shiftY, flipX) {\n if (shiftX === void 0) { shiftX = 0; }\n if (shiftY === void 0) { shiftY = 0; }\n if (flipX === void 0) { flipX = false; }\n var xSteps = this.leafCount - 1;\n var ySteps = this.depth;\n var dimensions = this.dimensions;\n var scalingX = 1;\n var scalingY = 1;\n if (width > 0 && xSteps) {\n var existingSpacingX = (dimensions.right - dimensions.left) / xSteps;\n var desiredSpacingX = width / xSteps;\n scalingX = desiredSpacingX / existingSpacingX;\n if (flipX) {\n scalingX = -scalingX;\n }\n }\n if (height > 0 && ySteps) {\n var existingSpacingY = (dimensions.bottom - dimensions.top) / ySteps;\n var desiredSpacingY = height / ySteps;\n scalingY = desiredSpacingY / existingSpacingY;\n }\n var screenDimensions = new Dimensions();\n this.nodes.forEach(function (node) {\n node.screenX = node.x * scalingX;\n node.screenY = node.y * scalingY;\n screenDimensions.update(node, function (node) { return ({ x: node.screenX, y: node.screenY }); });\n });\n // Normalize so that root top and leftmost leaf left start at zero.\n var offsetX = -screenDimensions.left;\n var offsetY = -screenDimensions.top;\n this.nodes.forEach(function (node) {\n node.screenX += offsetX + shiftX;\n node.screenY += offsetY + shiftY;\n });\n };\n return TreeLayout;\n}());\n\nvar __extends$2d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$C = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$l = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$C(arguments[i]));\n return ar;\n};\nvar GroupedCategoryAxisLabel = /** @class */ (function (_super) {\n __extends$2d(GroupedCategoryAxisLabel, _super);\n function GroupedCategoryAxisLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.grid = false;\n return _this;\n }\n __decorate$1w([\n Validate(BOOLEAN)\n ], GroupedCategoryAxisLabel.prototype, \"grid\", void 0);\n return GroupedCategoryAxisLabel;\n}(AxisLabel));\nvar GroupedCategoryAxis = /** @class */ (function (_super) {\n __extends$2d(GroupedCategoryAxis, _super);\n function GroupedCategoryAxis(moduleCtx) {\n var _this = _super.call(this, moduleCtx, new BandScale$5()) || this;\n // Label scale (labels are positioned between ticks, tick count = label count + 1).\n // We don't call is `labelScale` for consistency with other axes.\n _this.tickScale = new BandScale$5();\n _this.translation = {\n x: 0,\n y: 0,\n };\n _this.line = new AxisLine();\n _this.label = new GroupedCategoryAxisLabel();\n /**\n * The color of the labels.\n * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make labels invisible.\n */\n _this.labelColor = 'rgba(87, 87, 87, 1)';\n _this.includeInvisibleDomains = true;\n var _a = _this, tickLineGroup = _a.tickLineGroup, tickLabelGroup = _a.tickLabelGroup, gridLineGroup = _a.gridLineGroup, tickScale = _a.tickScale, scale = _a.scale;\n scale.paddingOuter = 0.1;\n scale.paddingInner = scale.paddingOuter * 2;\n _this.requestedRange = scale.range.slice();\n _this.refreshScale();\n tickScale.paddingInner = 1;\n tickScale.paddingOuter = 0;\n _this.gridLineSelection = Selection.select(gridLineGroup, Line);\n _this.axisLineSelection = Selection.select(tickLineGroup, Line);\n _this.separatorSelection = Selection.select(tickLineGroup, Line);\n _this.labelSelection = Selection.select(tickLabelGroup, Text);\n return _this;\n }\n Object.defineProperty(GroupedCategoryAxis.prototype, \"range\", {\n get: function () {\n return this.requestedRange.slice();\n },\n set: function (value) {\n this.requestedRange = value.slice();\n this.updateRange();\n },\n enumerable: false,\n configurable: true\n });\n GroupedCategoryAxis.prototype.updateRange = function () {\n var _a = this, rr = _a.requestedRange, vr = _a.visibleRange, scale = _a.scale;\n var span = (rr[1] - rr[0]) / (vr[1] - vr[0]);\n var shift = span * vr[0];\n var start = rr[0] - shift;\n this.tickScale.range = scale.range = [start, start + span];\n this.resizeTickTree();\n };\n GroupedCategoryAxis.prototype.resizeTickTree = function () {\n var s = this.scale;\n var range = s.domain.length ? [s.convert(s.domain[0]), s.convert(s.domain[s.domain.length - 1])] : s.range;\n var layout = this.tickTreeLayout;\n var lineHeight = this.lineHeight;\n if (layout) {\n layout.resize(Math.abs(range[1] - range[0]), layout.depth * lineHeight, (Math.min(range[0], range[1]) || 0) + (s.bandwidth || 0) / 2, -layout.depth * lineHeight, range[1] - range[0] < 0);\n }\n };\n Object.defineProperty(GroupedCategoryAxis.prototype, \"lineHeight\", {\n get: function () {\n return this.label.fontSize * 1.5;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(GroupedCategoryAxis.prototype, \"gridLength\", {\n get: function () {\n return this._gridLength;\n },\n /**\n * The length of the grid. The grid is only visible in case of a non-zero value.\n */\n set: function (value) {\n // Was visible and now invisible, or was invisible and now visible.\n if ((this._gridLength && !value) || (!this._gridLength && value)) {\n this.gridLineSelection.clear();\n this.labelSelection.clear();\n }\n this._gridLength = value;\n },\n enumerable: false,\n configurable: true\n });\n GroupedCategoryAxis.prototype.calculateDomain = function () {\n var _a;\n var _b = this, direction = _b.direction, boundSeries = _b.boundSeries;\n var domains = [];\n var isNumericX = undefined;\n boundSeries\n .filter(function (s) { return s.visible; })\n .forEach(function (series) {\n if (direction === ChartAxisDirection.X) {\n if (isNumericX === undefined) {\n // always add first X domain\n var domain_1 = series.getDomain(direction);\n domains.push(domain_1);\n isNumericX = typeof domain_1[0] === 'number';\n }\n else if (isNumericX) {\n // only add further X domains if the axis is numeric\n domains.push(series.getDomain(direction));\n }\n }\n else {\n domains.push(series.getDomain(direction));\n }\n });\n var domain = (_a = new Array()).concat.apply(_a, __spread$l(domains));\n var values = extent$4(domain) || domain;\n this.dataDomain = this.normaliseDataDomain(values);\n };\n GroupedCategoryAxis.prototype.normaliseDataDomain = function (d) {\n // Prevent duplicate categories.\n var values = d.filter(function (s, i, arr) { return arr.indexOf(s) === i; });\n var tickTree = ticksToTree(values);\n this.tickTreeLayout = treeLayout(tickTree);\n var tickScaleDomain = values.slice();\n tickScaleDomain.push('');\n this.tickScale.domain = tickScaleDomain;\n this.resizeTickTree();\n return values;\n };\n /**\n * Creates/removes/updates the scene graph nodes that constitute the axis.\n * Supposed to be called _manually_ after changing _any_ of the axis properties.\n * This allows to bulk set axis properties before updating the nodes.\n * The node changes made by this method are rendered on the next animation frame.\n * We could schedule this method call automatically on the next animation frame\n * when any of the axis properties change (the way we do when properties of scene graph's\n * nodes change), but this will mean that we first wait for the next animation\n * frame to make changes to the nodes of the axis, then wait for another animation\n * frame to render those changes. It's nice to have everything update automatically,\n * but this extra level of async indirection will not just introduce an unwanted delay,\n * it will also make it harder to reason about the program.\n */\n GroupedCategoryAxis.prototype.update = function (primaryTickCount) {\n var _this = this;\n this.calculateDomain();\n var _a = this, scale = _a.scale, label = _a.label, parallel = _a.label.parallel, tickScale = _a.tickScale, requestedRange = _a.requestedRange;\n scale.domain = this.dataDomain;\n var rangeStart = scale.range[0];\n var rangeEnd = scale.range[1];\n var rangeLength = Math.abs(rangeEnd - rangeStart);\n var bandwidth = rangeLength / scale.domain.length || 0;\n var rotation = toRadians$1(this.rotation);\n var isHorizontal = Math.abs(Math.cos(rotation)) < 1e-8;\n this.updatePosition();\n var title = this.title;\n // The Text `node` of the Caption is not used to render the title of the grouped category axis.\n // The phantom root of the tree layout is used instead.\n if (title) {\n title.node.visible = false;\n }\n var lineHeight = this.lineHeight;\n // Render ticks and labels.\n var tickTreeLayout = this.tickTreeLayout;\n var labels = scale.ticks();\n var treeLabels = tickTreeLayout ? tickTreeLayout.nodes : [];\n var isLabelTree = tickTreeLayout ? tickTreeLayout.depth > 1 : false;\n var ticks = tickScale.ticks();\n // The side of the axis line to position the labels on.\n // -1 = left (default)\n // 1 = right\n var sideFlag = label.mirrored ? 1 : -1;\n // When labels are parallel to the axis line, the `parallelFlipFlag` is used to\n // flip the labels to avoid upside-down text, when the axis is rotated\n // such that it is in the right hemisphere, i.e. the angle of rotation\n // is in the [0, π] interval.\n // The rotation angle is normalized, so that we have an easier time checking\n // if it's in the said interval. Since the axis is always rendered vertically\n // and then rotated, zero rotation means 12 (not 3) o-clock.\n // -1 = flip\n // 1 = don't flip (default)\n var _b = calculateLabelRotation({\n rotation: label.rotation,\n parallel: parallel,\n regularFlipRotation: normalizeAngle360(rotation - Math.PI / 2),\n parallelFlipRotation: normalizeAngle360(rotation),\n }), autoRotation = _b.autoRotation, labelRotation = _b.labelRotation, parallelFlipFlag = _b.parallelFlipFlag;\n var gridLineSelection = this.gridLineSelection.update(this.gridLength ? ticks : []);\n var labelSelection = this.labelSelection.update(treeLabels);\n var labelFormatter = label.formatter;\n var labelBBoxes = new Map();\n var maxLeafLabelWidth = 0;\n labelSelection.each(function (node, datum, index) {\n node.fontStyle = label.fontStyle;\n node.fontWeight = label.fontWeight;\n node.fontSize = label.fontSize;\n node.fontFamily = label.fontFamily;\n node.fill = label.color;\n node.textBaseline = parallelFlipFlag === -1 ? 'bottom' : 'hanging';\n node.textAlign = 'center';\n node.translationX = datum.screenY - label.fontSize * 0.25;\n node.translationY = datum.screenX;\n if (index === 0) {\n // use the phantom root as the axis title\n if (title && title.enabled && labels.length > 0) {\n node.visible = true;\n node.text = title.text;\n node.fontSize = title.fontSize;\n node.fontStyle = title.fontStyle;\n node.fontWeight = title.fontWeight;\n node.fontFamily = title.fontFamily;\n node.textBaseline = 'hanging';\n }\n else {\n node.visible = false;\n }\n }\n else {\n node.text = labelFormatter\n ? labelFormatter({\n value: String(datum.label),\n index: index,\n })\n : String(datum.label);\n node.visible = datum.screenX >= requestedRange[0] && datum.screenX <= requestedRange[1];\n }\n var bbox = node.computeBBox();\n labelBBoxes.set(node.id, bbox);\n if (bbox.width > maxLeafLabelWidth) {\n maxLeafLabelWidth = bbox.width;\n }\n });\n var labelX = sideFlag * label.padding;\n var labelGrid = this.label.grid;\n var separatorData = [];\n labelSelection.each(function (label, datum, index) {\n label.x = labelX;\n label.rotationCenterX = labelX;\n if (!datum.children.length) {\n label.rotation = labelRotation;\n label.textAlign = 'end';\n label.textBaseline = 'middle';\n var bbox = labelBBoxes.get(label.id);\n if (bbox && bbox.height > bandwidth) {\n label.visible = false;\n }\n }\n else {\n label.translationX -= maxLeafLabelWidth - lineHeight + _this.label.padding;\n var availableRange = datum.leafCount * bandwidth;\n var bbox = labelBBoxes.get(label.id);\n if (bbox && bbox.width > availableRange) {\n label.visible = false;\n }\n else if (isHorizontal) {\n label.rotation = autoRotation;\n }\n else {\n label.rotation = -Math.PI / 2;\n }\n }\n // Calculate positions of label separators for all nodes except the root.\n // Each separator is placed to the top of the current label.\n if (datum.parent && isLabelTree) {\n var y = !datum.children.length\n ? datum.screenX - bandwidth / 2\n : datum.screenX - (datum.leafCount * bandwidth) / 2;\n if (!datum.children.length) {\n if (datum.number !== datum.children.length - 1 || labelGrid) {\n separatorData.push({\n y: y,\n x1: 0,\n x2: -maxLeafLabelWidth - _this.label.padding * 2,\n toString: function () { return String(index); },\n });\n }\n }\n else {\n var x = -maxLeafLabelWidth - _this.label.padding * 2 + datum.screenY;\n separatorData.push({\n y: y,\n x1: x + lineHeight,\n x2: x,\n toString: function () { return String(index); },\n });\n }\n }\n });\n // Calculate the position of the long separator on the far bottom of the axis.\n var minX = 0;\n separatorData.forEach(function (d) { return (minX = Math.min(minX, d.x2)); });\n separatorData.push({\n y: Math.max(rangeStart, rangeEnd),\n x1: 0,\n x2: minX,\n toString: function () { return String(separatorData.length); },\n });\n var separatorSelection = this.separatorSelection.update(separatorData);\n var epsilon = 0.0000001;\n separatorSelection.each(function (line, datum) {\n line.x1 = datum.x1;\n line.x2 = datum.x2;\n line.y1 = datum.y;\n line.y2 = datum.y;\n line.visible = datum.y >= requestedRange[0] - epsilon && datum.y <= requestedRange[1] + epsilon;\n line.stroke = _this.tick.color;\n line.fill = undefined;\n line.strokeWidth = 1;\n });\n this.gridLineSelection = gridLineSelection;\n this.labelSelection = labelSelection;\n // Render axis lines.\n var lineCount = tickTreeLayout ? tickTreeLayout.depth + 1 : 1;\n var lines = [];\n for (var i = 0; i < lineCount; i++) {\n lines.push(i);\n }\n var axisLineSelection = this.axisLineSelection.update(lines);\n axisLineSelection.each(function (line, _, index) {\n var x = index > 0 ? -maxLeafLabelWidth - _this.label.padding * 2 - (index - 1) * lineHeight : 0;\n line.x1 = x;\n line.x2 = x;\n line.y1 = requestedRange[0];\n line.y2 = requestedRange[1];\n line.strokeWidth = _this.line.width;\n line.stroke = _this.line.color;\n line.visible = labels.length > 0 && (index === 0 || (labelGrid && isLabelTree));\n });\n if (this.gridLength) {\n var styles_1 = this.gridStyle;\n var styleCount_1 = styles_1.length;\n gridLineSelection.each(function (line, datum, index) {\n var y = Math.round(tickScale.convert(datum));\n line.x1 = 0;\n line.x2 = -sideFlag * _this.gridLength;\n line.y1 = y;\n line.y2 = y;\n line.visible = y >= requestedRange[0] && y <= requestedRange[1];\n var style = styles_1[index % styleCount_1];\n line.stroke = style.stroke;\n line.strokeWidth = _this.tick.width;\n line.lineDash = style.lineDash;\n line.fill = undefined;\n });\n }\n return primaryTickCount;\n };\n GroupedCategoryAxis.className = 'GroupedCategoryAxis';\n GroupedCategoryAxis.type = 'groupedCategory';\n __decorate$1w([\n Validate(OPT_COLOR_STRING)\n ], GroupedCategoryAxis.prototype, \"labelColor\", void 0);\n return GroupedCategoryAxis;\n}(ChartAxis));\n\nvar __extends$2c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$y = (undefined && undefined.__assign) || function () {\n __assign$y = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$y.apply(this, arguments);\n};\nvar __awaiter$a = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$a = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values$g = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$B = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar directions = ['top', 'right', 'bottom', 'left'];\nvar CartesianChart = /** @class */ (function (_super) {\n __extends$2c(CartesianChart, _super);\n function CartesianChart(document, overrideDevicePixelRatio, resources) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this, document, overrideDevicePixelRatio, resources) || this;\n /** Integrated Charts feature state - not used in Standalone Charts. */\n _this.paired = true;\n _this._lastAxisWidths = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n _this._lastVisibility = {\n crossLines: true,\n series: true,\n };\n var root = _this.scene.root;\n _this.legend.attachLegend(root);\n return _this;\n }\n CartesianChart.prototype.performLayout = function () {\n return __awaiter$a(this, void 0, void 0, function () {\n var shrinkRect, _a, seriesRect, visibility, clipSeries, _b, seriesRoot, seriesAreaPadding, seriesPaddedRect, hoverRectPadding, hoverRect;\n return __generator$a(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, _super.prototype.performLayout.call(this)];\n case 1:\n shrinkRect = _c.sent();\n _a = this.updateAxes(shrinkRect), seriesRect = _a.seriesRect, visibility = _a.visibility, clipSeries = _a.clipSeries;\n this.seriesRoot.visible = visibility.series;\n this.seriesRect = seriesRect;\n this.series.forEach(function (series) {\n series.rootGroup.translationX = Math.floor(seriesRect.x);\n series.rootGroup.translationY = Math.floor(seriesRect.y);\n });\n _b = this, seriesRoot = _b.seriesRoot, seriesAreaPadding = _b.seriesAreaPadding;\n seriesPaddedRect = seriesRect.clone().grow(seriesAreaPadding);\n hoverRectPadding = 20;\n hoverRect = seriesPaddedRect.clone().grow(hoverRectPadding);\n this.hoverRect = hoverRect;\n this.layoutService.dispatchLayoutComplete({\n type: 'layout-complete',\n chart: { width: this.scene.width, height: this.scene.height },\n series: { rect: seriesRect, paddedRect: seriesPaddedRect, hoverRect: hoverRect, visible: visibility.series },\n axes: this.axes.map(function (axis) { return (__assign$y({ id: axis.id }, axis.getLayoutState())); }),\n });\n if (clipSeries) {\n seriesRoot.setClipRectInGroupCoordinateSpace(seriesPaddedRect);\n }\n else {\n seriesRoot.setClipRectInGroupCoordinateSpace();\n }\n return [2 /*return*/, shrinkRect];\n }\n });\n });\n };\n CartesianChart.prototype.updateAxes = function (inputShrinkRect) {\n var e_1, _a;\n var _b;\n // Start with a good approximation from the last update - this should mean that in many resize\n // cases that only a single pass is needed \\o/.\n var axisWidths = __assign$y({}, this._lastAxisWidths);\n var visibility = __assign$y({}, this._lastVisibility);\n // Clean any positions which aren't valid with the current axis status (otherwise we end up\n // never being able to find a stable result).\n var liveAxisWidths = new Set(this._axes.map(function (a) { return a.position; }));\n try {\n for (var _c = __values$g(Object.keys(axisWidths)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var position = _d.value;\n if (!liveAxisWidths.has(position)) {\n delete axisWidths[position];\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var stableOutputs = function (otherAxisWidths, otherVisibility) {\n // Check for new axis positions.\n if (Object.keys(otherAxisWidths).some(function (k) { return axisWidths[k] == null; })) {\n return false;\n }\n return (visibility.crossLines === otherVisibility.crossLines &&\n visibility.series === otherVisibility.series &&\n // Check for existing axis positions and equality.\n Object.entries(axisWidths).every(function (_a) {\n var _b = __read$B(_a, 2), p = _b[0], w = _b[1];\n var otherW = otherAxisWidths[p];\n if (w != null || otherW != null) {\n return w === otherW;\n }\n return true;\n }));\n };\n var ceilValues = function (records) {\n return Object.entries(records).reduce(function (out, _a) {\n var _b = __read$B(_a, 2), key = _b[0], value = _b[1];\n if (value && Math.abs(value) === Infinity) {\n value = 0;\n }\n out[key] = value != null ? Math.ceil(value) : value;\n return out;\n }, {});\n };\n // Iteratively try to resolve axis widths - since X axis width affects Y axis range,\n // and vice-versa, we need to iteratively try and find a fit for the axes and their\n // ticks/labels.\n var lastPassAxisWidths = {};\n var lastPassVisibility = {};\n var clipSeries = false;\n var seriesRect = (_b = this.seriesRect) === null || _b === void 0 ? void 0 : _b.clone();\n var count = 0;\n do {\n Object.assign(axisWidths, lastPassAxisWidths);\n Object.assign(visibility, lastPassVisibility);\n var result = this.updateAxesPass(axisWidths, inputShrinkRect.clone(), seriesRect);\n lastPassAxisWidths = ceilValues(result.axisWidths);\n lastPassVisibility = result.visibility;\n clipSeries = result.clipSeries;\n seriesRect = result.seriesRect;\n if (count++ > 10) {\n Logger.warn('unable to find stable axis layout.');\n break;\n }\n } while (!stableOutputs(lastPassAxisWidths, lastPassVisibility));\n var clipRectPadding = 5;\n this.axes.forEach(function (axis) {\n // update visibility of crosslines\n axis.setCrossLinesVisible(visibility.crossLines);\n if (!seriesRect) {\n return;\n }\n axis.clipGrid(seriesRect.x, seriesRect.y, seriesRect.width + clipRectPadding, seriesRect.height + clipRectPadding);\n switch (axis.position) {\n case 'left':\n case 'right':\n axis.clipTickLines(inputShrinkRect.x, seriesRect.y, inputShrinkRect.width + clipRectPadding, seriesRect.height + clipRectPadding);\n break;\n case 'top':\n case 'bottom':\n axis.clipTickLines(seriesRect.x, inputShrinkRect.y, seriesRect.width + clipRectPadding, inputShrinkRect.height + clipRectPadding);\n break;\n }\n });\n this._lastAxisWidths = axisWidths;\n this._lastVisibility = visibility;\n return { seriesRect: seriesRect, visibility: visibility, clipSeries: clipSeries };\n };\n CartesianChart.prototype.updateAxesPass = function (axisWidths, bounds, lastPassSeriesRect) {\n var _this = this;\n var axes = this.axes;\n var visited = {};\n var newAxisWidths = {};\n var visibility = {\n series: true,\n crossLines: true,\n };\n var clipSeries = false;\n var primaryTickCounts = {};\n var paddedBounds = this.applySeriesPadding(bounds);\n var crossLinePadding = lastPassSeriesRect ? this.buildCrossLinePadding(lastPassSeriesRect, axisWidths) : {};\n var axisBound = this.buildAxisBound(paddedBounds, axisWidths, crossLinePadding, visibility);\n var seriesRect = this.buildSeriesRect(axisBound, axisWidths);\n // Set the number of ticks for continuous axes based on the available range\n // before updating the axis domain via `this.updateAxes()` as the tick count has an effect on the calculated `nice` domain extent\n axes.forEach(function (axis) {\n var _a, _b;\n var position = axis.position;\n var _c = _this.calculateAxisDimensions({\n axis: axis,\n seriesRect: seriesRect,\n axisWidths: axisWidths,\n newAxisWidths: newAxisWidths,\n primaryTickCounts: primaryTickCounts,\n clipSeries: clipSeries,\n addInterAxisPadding: ((_a = visited[position]) !== null && _a !== void 0 ? _a : 0) > 0,\n }), newClipSeries = _c.clipSeries, axisThickness = _c.axisThickness, axisOffset = _c.axisOffset;\n visited[position] = ((_b = visited[position]) !== null && _b !== void 0 ? _b : 0) + 1;\n clipSeries = clipSeries || newClipSeries;\n _this.positionAxis({\n axis: axis,\n axisBound: axisBound,\n axisOffset: axisOffset,\n axisThickness: axisThickness,\n axisWidths: axisWidths,\n primaryTickCounts: primaryTickCounts,\n seriesRect: seriesRect,\n });\n });\n return { clipSeries: clipSeries, seriesRect: seriesRect, axisWidths: newAxisWidths, visibility: visibility };\n };\n CartesianChart.prototype.buildCrossLinePadding = function (lastPassSeriesRect, axisWidths) {\n var e_2, _a;\n var _b;\n var crossLinePadding = {};\n this.axes.forEach(function (axis) {\n if (axis.crossLines) {\n axis.crossLines.forEach(function (crossLine) {\n crossLine.calculatePadding(crossLinePadding, lastPassSeriesRect);\n });\n }\n });\n try {\n // Reduce cross-line padding to account for overlap with axes.\n for (var _c = __values$g(Object.entries(crossLinePadding)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var _e = __read$B(_d.value, 2), side = _e[0], _f = _e[1], padding = _f === void 0 ? 0 : _f;\n crossLinePadding[side] = Math.max(padding - ((_b = axisWidths[side]) !== null && _b !== void 0 ? _b : 0), 0);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return crossLinePadding;\n };\n CartesianChart.prototype.applySeriesPadding = function (bounds) {\n var _this = this;\n var paddedRect = bounds.clone();\n var reversedAxes = this.axes.slice().reverse();\n directions.forEach(function (dir) {\n var padding = _this.seriesAreaPadding[dir];\n var axis = reversedAxes.find(function (axis) { return axis.position === dir; });\n if (axis) {\n axis.seriesAreaPadding = padding;\n }\n else {\n paddedRect.shrink(padding, dir);\n }\n });\n return paddedRect;\n };\n CartesianChart.prototype.buildAxisBound = function (bounds, axisWidths, crossLinePadding, visibility) {\n var _a, _b, _c, _d;\n var result = bounds.clone();\n var _e = crossLinePadding.top, top = _e === void 0 ? 0 : _e, _f = crossLinePadding.right, right = _f === void 0 ? 0 : _f, _g = crossLinePadding.bottom, bottom = _g === void 0 ? 0 : _g, _h = crossLinePadding.left, left = _h === void 0 ? 0 : _h;\n var horizontalPadding = left + right;\n var verticalPadding = top + bottom;\n var totalWidth = ((_a = axisWidths.left) !== null && _a !== void 0 ? _a : 0) + ((_b = axisWidths.right) !== null && _b !== void 0 ? _b : 0) + horizontalPadding;\n var totalHeight = ((_c = axisWidths.top) !== null && _c !== void 0 ? _c : 0) + ((_d = axisWidths.bottom) !== null && _d !== void 0 ? _d : 0) + verticalPadding;\n if (result.width <= totalWidth || result.height <= totalHeight) {\n // Not enough space for crossLines and series\n visibility.crossLines = false;\n visibility.series = false;\n return result;\n }\n result.x += left;\n result.y += top;\n result.width -= horizontalPadding;\n result.height -= verticalPadding;\n return result;\n };\n CartesianChart.prototype.buildSeriesRect = function (axisBound, axisWidths) {\n var result = axisBound.clone();\n var top = axisWidths.top, bottom = axisWidths.bottom, left = axisWidths.left, right = axisWidths.right;\n result.x += left !== null && left !== void 0 ? left : 0;\n result.y += top !== null && top !== void 0 ? top : 0;\n result.width -= (left !== null && left !== void 0 ? left : 0) + (right !== null && right !== void 0 ? right : 0);\n result.height -= (top !== null && top !== void 0 ? top : 0) + (bottom !== null && bottom !== void 0 ? bottom : 0);\n // Width and height should not be negative.\n result.width = Math.max(0, result.width);\n result.height = Math.max(0, result.height);\n return result;\n };\n CartesianChart.prototype.clampToOutsideSeriesRect = function (seriesRect, value, dimension, direction) {\n var x = seriesRect.x, y = seriesRect.y, width = seriesRect.width, height = seriesRect.height;\n var clampBounds = [x, y, x + width, y + height];\n var fn = direction === 1 ? Math.min : Math.max;\n var compareTo = clampBounds[(dimension === 'x' ? 0 : 1) + (direction === 1 ? 0 : 2)];\n return fn(value, compareTo);\n };\n CartesianChart.prototype.calculateAxisDimensions = function (opts) {\n var _a, _b, _c, _d, _e, _f;\n var axis = opts.axis, seriesRect = opts.seriesRect, axisWidths = opts.axisWidths, newAxisWidths = opts.newAxisWidths, primaryTickCounts = opts.primaryTickCounts, addInterAxisPadding = opts.addInterAxisPadding;\n var clipSeries = opts.clipSeries;\n var position = axis.position, direction = axis.direction;\n var axisLeftRightRange = function (axis) {\n if (axis instanceof CategoryAxis || axis instanceof GroupedCategoryAxis) {\n return [0, seriesRect.height];\n }\n return [seriesRect.height, 0];\n };\n axis.label.mirrored = ['top', 'right'].includes(position);\n var axisOffset = (_a = newAxisWidths[position]) !== null && _a !== void 0 ? _a : 0;\n switch (position) {\n case 'top':\n case 'bottom':\n axis.range = [0, seriesRect.width];\n axis.gridLength = seriesRect.height;\n break;\n case 'right':\n case 'left':\n axis.range = axisLeftRightRange(axis);\n axis.gridLength = seriesRect.width;\n break;\n }\n var zoom = (_b = this.zoomManager.getZoom()) === null || _b === void 0 ? void 0 : _b[axis.direction];\n var _g = zoom !== null && zoom !== void 0 ? zoom : {}, _h = _g.min, min = _h === void 0 ? 0 : _h, _j = _g.max, max = _j === void 0 ? 1 : _j;\n axis.visibleRange = [min, max];\n if (!clipSeries && (axis.visibleRange[0] > 0 || axis.visibleRange[1] < 1)) {\n clipSeries = true;\n }\n var primaryTickCount = axis.nice ? primaryTickCounts[direction] : undefined;\n primaryTickCount = axis.update(primaryTickCount);\n primaryTickCounts[direction] = (_c = primaryTickCounts[direction]) !== null && _c !== void 0 ? _c : primaryTickCount;\n var axisThickness = 0;\n if (axis.thickness) {\n axisThickness = axis.thickness;\n }\n else {\n var bbox = axis.computeBBox();\n axisThickness = direction === ChartAxisDirection.X ? bbox.height : bbox.width;\n }\n // for multiple axes in the same direction and position, apply padding at the top of each inner axis (i.e. between axes).\n var axisPadding = 15;\n if (addInterAxisPadding) {\n axisThickness += axisPadding;\n }\n axisThickness = Math.ceil(axisThickness);\n newAxisWidths[position] = ((_d = newAxisWidths[position]) !== null && _d !== void 0 ? _d : 0) + axisThickness;\n axis.gridPadding = ((_e = axisWidths[position]) !== null && _e !== void 0 ? _e : 0) - ((_f = newAxisWidths[position]) !== null && _f !== void 0 ? _f : 0);\n return { clipSeries: clipSeries, axisThickness: axisThickness, axisOffset: axisOffset };\n };\n CartesianChart.prototype.positionAxis = function (opts) {\n var _a, _b, _c, _d;\n var axis = opts.axis, axisBound = opts.axisBound, axisWidths = opts.axisWidths, seriesRect = opts.seriesRect, axisOffset = opts.axisOffset, axisThickness = opts.axisThickness;\n var position = axis.position;\n switch (position) {\n case 'top':\n axis.translation.x = axisBound.x + ((_a = axisWidths.left) !== null && _a !== void 0 ? _a : 0);\n axis.translation.y = this.clampToOutsideSeriesRect(seriesRect, axisBound.y + 1 + axisOffset + axisThickness, 'y', 1);\n break;\n case 'bottom':\n axis.translation.x = axisBound.x + ((_b = axisWidths.left) !== null && _b !== void 0 ? _b : 0);\n axis.translation.y = this.clampToOutsideSeriesRect(seriesRect, axisBound.y + axisBound.height + 1 - axisThickness - axisOffset, 'y', -1);\n break;\n case 'left':\n axis.translation.y = axisBound.y + ((_c = axisWidths.top) !== null && _c !== void 0 ? _c : 0);\n axis.translation.x = this.clampToOutsideSeriesRect(seriesRect, axisBound.x + axisOffset + axisThickness, 'x', 1);\n break;\n case 'right':\n axis.translation.y = axisBound.y + ((_d = axisWidths.top) !== null && _d !== void 0 ? _d : 0);\n axis.translation.x = this.clampToOutsideSeriesRect(seriesRect, axisBound.x + axisBound.width - axisThickness - axisOffset, 'x', -1);\n break;\n }\n axis.updatePosition();\n };\n CartesianChart.className = 'CartesianChart';\n CartesianChart.type = 'cartesian';\n return CartesianChart;\n}(Chart));\n\nvar __extends$2b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar PolarSeries = /** @class */ (function (_super) {\n __extends$2b(PolarSeries, _super);\n function PolarSeries(_a) {\n var _b;\n var _c = _a.useLabelLayer, useLabelLayer = _c === void 0 ? false : _c;\n var _this = _super.call(this, {\n useLabelLayer: useLabelLayer,\n pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH],\n directionKeys: (_b = {},\n _b[ChartAxisDirection.X] = ['angleKey'],\n _b[ChartAxisDirection.Y] = ['radiusKey'],\n _b),\n }) || this;\n /**\n * The center of the polar series (for example, the center of a pie).\n * If the polar chart has multiple series, all of them will have their\n * center set to the same value as a result of the polar chart layout.\n * The center coordinates are not supposed to be set by the user.\n */\n _this.centerX = 0;\n _this.centerY = 0;\n /**\n * The maximum radius the series can use.\n * This value is set automatically as a result of the polar chart layout\n * and is not supposed to be set by the user.\n */\n _this.radius = 0;\n return _this;\n }\n PolarSeries.prototype.getLabelData = function () {\n return [];\n };\n PolarSeries.prototype.computeLabelsBBox = function (_options) {\n return null;\n };\n return PolarSeries;\n}(Series));\n\nvar __extends$2a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter$9 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$9 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar PolarChart = /** @class */ (function (_super) {\n __extends$2a(PolarChart, _super);\n function PolarChart(document, overrideDevicePixelRatio, resources) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this, document, overrideDevicePixelRatio, resources) || this;\n _this.padding = new Padding$1(40);\n var root = _this.scene.root;\n _this.legend.attachLegend(root);\n return _this;\n }\n PolarChart.prototype.performLayout = function () {\n return __awaiter$9(this, void 0, void 0, function () {\n var shrinkRect, fullSeriesRect, hoverRectPadding, hoverRect;\n return __generator$9(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, _super.prototype.performLayout.call(this)];\n case 1:\n shrinkRect = _a.sent();\n fullSeriesRect = shrinkRect.clone();\n this.computeSeriesRect(shrinkRect);\n this.computeCircle();\n hoverRectPadding = 20;\n hoverRect = shrinkRect.clone().grow(hoverRectPadding);\n this.hoverRect = hoverRect;\n this.layoutService.dispatchLayoutComplete({\n type: 'layout-complete',\n chart: { width: this.scene.width, height: this.scene.height },\n series: { rect: fullSeriesRect, paddedRect: shrinkRect, hoverRect: hoverRect, visible: true },\n axes: [],\n });\n return [2 /*return*/, shrinkRect];\n }\n });\n });\n };\n PolarChart.prototype.computeSeriesRect = function (shrinkRect) {\n var seriesAreaPadding = this.seriesAreaPadding;\n shrinkRect.shrink(seriesAreaPadding.left, 'left');\n shrinkRect.shrink(seriesAreaPadding.top, 'top');\n shrinkRect.shrink(seriesAreaPadding.right, 'right');\n shrinkRect.shrink(seriesAreaPadding.bottom, 'bottom');\n this.seriesRect = shrinkRect;\n };\n PolarChart.prototype.computeCircle = function () {\n var _this = this;\n var seriesBox = this.seriesRect;\n var polarSeries = this.series.filter(function (series) {\n return series instanceof PolarSeries;\n });\n var setSeriesCircle = function (cx, cy, r) {\n polarSeries.forEach(function (series) {\n series.centerX = cx;\n series.centerY = cy;\n series.radius = r;\n });\n };\n var centerX = seriesBox.x + seriesBox.width / 2;\n var centerY = seriesBox.y + seriesBox.height / 2;\n var initialRadius = Math.max(0, Math.min(seriesBox.width, seriesBox.height) / 2);\n var radius = initialRadius;\n setSeriesCircle(centerX, centerY, radius);\n var shake = function (_a) {\n var _b = (_a === void 0 ? {} : _a).hideWhenNecessary, hideWhenNecessary = _b === void 0 ? false : _b;\n var labelBoxes = polarSeries\n .map(function (series) { return series.computeLabelsBBox({ hideWhenNecessary: hideWhenNecessary }); })\n .filter(function (box) { return box != null; });\n if (labelBoxes.length === 0) {\n setSeriesCircle(centerX, centerY, initialRadius);\n return;\n }\n var labelBox = BBox.merge(labelBoxes);\n var refined = _this.refineCircle(labelBox, radius);\n setSeriesCircle(refined.centerX, refined.centerY, refined.radius);\n if (refined.radius === radius) {\n return;\n }\n radius = refined.radius;\n };\n shake(); // Initial attempt\n shake(); // Precise attempt\n shake(); // Just in case\n shake({ hideWhenNecessary: true }); // Hide unnecessary labels\n shake({ hideWhenNecessary: true }); // Final result\n };\n PolarChart.prototype.refineCircle = function (labelsBox, radius) {\n var minCircleRatio = 0.5; // Prevents reduced circle to be too small\n var seriesBox = this.seriesRect;\n var circleLeft = -radius;\n var circleTop = -radius;\n var circleRight = radius;\n var circleBottom = radius;\n // Label padding around the circle\n var padLeft = Math.max(0, circleLeft - labelsBox.x);\n var padTop = Math.max(0, circleTop - labelsBox.y);\n var padRight = Math.max(0, labelsBox.x + labelsBox.width - circleRight);\n var padBottom = Math.max(0, labelsBox.y + labelsBox.height - circleBottom);\n // Available area for the circle (after the padding will be applied)\n var availCircleWidth = seriesBox.width - padLeft - padRight;\n var availCircleHeight = seriesBox.height - padTop - padBottom;\n var newRadius = Math.min(availCircleWidth, availCircleHeight) / 2;\n var minHorizontalRadius = (minCircleRatio * seriesBox.width) / 2;\n var minVerticalRadius = (minCircleRatio * seriesBox.height) / 2;\n var minRadius = Math.min(minHorizontalRadius, minVerticalRadius);\n if (newRadius < minRadius) {\n // If the radius is too small, reduce the label padding\n newRadius = minRadius;\n var horizontalPadding = padLeft + padRight;\n var verticalPadding = padTop + padBottom;\n if (2 * newRadius + verticalPadding > seriesBox.height) {\n var padHeight = seriesBox.height - 2 * newRadius;\n if (Math.min(padTop, padBottom) * 2 > padHeight) {\n padTop = padHeight / 2;\n padBottom = padHeight / 2;\n }\n else if (padTop > padBottom) {\n padTop = padHeight - padBottom;\n }\n else {\n padBottom = padHeight - padTop;\n }\n }\n if (2 * newRadius + horizontalPadding > seriesBox.width) {\n var padWidth = seriesBox.width - 2 * newRadius;\n if (Math.min(padLeft, padRight) * 2 > padWidth) {\n padLeft = padWidth / 2;\n padRight = padWidth / 2;\n }\n else if (padLeft > padRight) {\n padLeft = padWidth - padRight;\n }\n else {\n padRight = padWidth - padLeft;\n }\n }\n }\n var newWidth = padLeft + 2 * newRadius + padRight;\n var newHeight = padTop + 2 * newRadius + padBottom;\n return {\n centerX: seriesBox.x + (seriesBox.width - newWidth) / 2 + padLeft + newRadius,\n centerY: seriesBox.y + (seriesBox.height - newHeight) / 2 + padTop + newRadius,\n radius: newRadius,\n };\n };\n PolarChart.className = 'PolarChart';\n PolarChart.type = 'polar';\n return PolarChart;\n}(Chart));\n\nvar __extends$29 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter$8 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$8 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar HierarchyChart = /** @class */ (function (_super) {\n __extends$29(HierarchyChart, _super);\n function HierarchyChart(document, overrideDevicePixelRatio, resources) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this, document, overrideDevicePixelRatio, resources) || this;\n _this._data = {};\n var root = _this.scene.root;\n _this.legend.attachLegend(root);\n return _this;\n }\n HierarchyChart.prototype.performLayout = function () {\n return __awaiter$8(this, void 0, void 0, function () {\n var shrinkRect, seriesAreaPadding, fullSeriesRect, hoverRectPadding, hoverRect, seriesRoot;\n return __generator$8(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, _super.prototype.performLayout.call(this)];\n case 1:\n shrinkRect = _a.sent();\n seriesAreaPadding = this.seriesAreaPadding;\n fullSeriesRect = shrinkRect.clone();\n shrinkRect.shrink(seriesAreaPadding.left, 'left');\n shrinkRect.shrink(seriesAreaPadding.top, 'top');\n shrinkRect.shrink(seriesAreaPadding.right, 'right');\n shrinkRect.shrink(seriesAreaPadding.bottom, 'bottom');\n this.seriesRect = shrinkRect;\n hoverRectPadding = 20;\n hoverRect = shrinkRect.clone().grow(hoverRectPadding);\n this.hoverRect = hoverRect;\n this.series.forEach(function (series) {\n series.rootGroup.translationX = Math.floor(shrinkRect.x);\n series.rootGroup.translationY = Math.floor(shrinkRect.y);\n series.update({ seriesRect: shrinkRect }); // this has to happen after the `updateAxes` call\n });\n seriesRoot = this.seriesRoot;\n seriesRoot.setClipRectInGroupCoordinateSpace(new BBox(shrinkRect.x, shrinkRect.y, shrinkRect.width, shrinkRect.height));\n this.layoutService.dispatchLayoutComplete({\n type: 'layout-complete',\n chart: { width: this.scene.width, height: this.scene.height },\n series: { rect: fullSeriesRect, paddedRect: shrinkRect, hoverRect: hoverRect, visible: true },\n axes: [],\n });\n return [2 /*return*/, shrinkRect];\n }\n });\n });\n };\n HierarchyChart.className = 'HierarchyChart';\n HierarchyChart.type = 'hierarchy';\n return HierarchyChart;\n}(Chart));\n\nvar __read$A = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar interpolatePattern = /(#\\{(.*?)\\})/g;\nfunction interpolate(input, values, formats) {\n return input.replace(interpolatePattern, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var name = args[2];\n var _a = __read$A(name.split(':'), 2), valueName = _a[0], formatName = _a[1];\n var value = values[valueName];\n if (typeof value === 'number') {\n var format = formatName && formats && formats[formatName];\n if (format) {\n var _b = format, locales = _b.locales, options = _b.options;\n return value.toLocaleString(locales, options);\n }\n return String(value);\n }\n if (value instanceof Date) {\n var format = formatName && formats && formats[formatName];\n if (typeof format === 'string') {\n var formatter = buildFormatter(format);\n return formatter(value);\n }\n return value.toDateString();\n }\n if (typeof value === 'string' || (value && value.toString)) {\n return String(value);\n }\n return '';\n });\n}\n\nvar element = null;\nfunction sanitizeHtml(text) {\n element = element || document.createElement('div');\n if (!text) {\n return '';\n }\n element.textContent = text;\n return element.innerHTML;\n}\n\nfunction calculateNiceSecondaryAxis(domain, primaryTickCount) {\n // Make secondary axis domain nice using strict tick count, matching the tick count from the primary axis.\n // This is to make the secondary axis grid lines/ tick positions align with the ones from the primary axis.\n var start = Math.floor(domain[0]);\n var stop = domain[1];\n start = calculateNiceStart(start, stop, primaryTickCount);\n var step = getTickStep(start, stop, primaryTickCount);\n var segments = primaryTickCount - 1;\n stop = start + segments * step;\n var d = [start, stop];\n var ticks = getTicks(start, step, primaryTickCount);\n return [d, ticks];\n}\nfunction calculateNiceStart(a, b, count) {\n var rawStep = Math.abs(b - a) / (count - 1);\n var order = Math.floor(Math.log10(rawStep));\n var magnitude = Math.pow(10, order);\n return Math.floor(a / magnitude) * magnitude;\n}\nfunction getTicks(start, step, count) {\n // power of the step will be negative if the step is a fraction (between 0 and 1)\n var stepPower = Math.floor(Math.log10(step));\n var fractionDigits = step > 0 && step < 1 ? Math.abs(stepPower) : 0;\n var f = Math.pow(10, fractionDigits);\n var ticks = new NumericTicks(fractionDigits);\n for (var i = 0; i < count; i++) {\n var tick = start + step * i;\n ticks[i] = Math.round(tick * f) / f;\n }\n return ticks;\n}\nfunction getTickStep(start, stop, count) {\n var segments = count - 1;\n var rawStep = (stop - start) / segments;\n return calculateNextNiceStep(rawStep);\n}\nfunction calculateNextNiceStep(rawStep) {\n var order = Math.floor(Math.log10(rawStep));\n var magnitude = Math.pow(10, order);\n // Make order 1\n var step = (rawStep / magnitude) * 10;\n if (step > 0 && step <= 1) {\n return magnitude / 10;\n }\n if (step > 1 && step <= 2) {\n return (2 * magnitude) / 10;\n }\n if (step > 1 && step <= 5) {\n return (5 * magnitude) / 10;\n }\n if (step > 5 && step <= 10) {\n return (10 * magnitude) / 10;\n }\n if (step > 10 && step <= 20) {\n return (20 * magnitude) / 10;\n }\n if (step > 20 && step <= 40) {\n return (40 * magnitude) / 10;\n }\n if (step > 40 && step <= 50) {\n return (50 * magnitude) / 10;\n }\n if (step > 50 && step <= 100) {\n return (100 * magnitude) / 10;\n }\n return step;\n}\n\nvar __extends$28 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$z = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar NumberAxis = /** @class */ (function (_super) {\n __extends$28(NumberAxis, _super);\n function NumberAxis(moduleCtx, scale) {\n if (scale === void 0) { scale = new LinearScale$1(); }\n var _this = _super.call(this, moduleCtx, scale) || this;\n _this.min = NaN;\n _this.max = NaN;\n scale.strictClampByDefault = true;\n return _this;\n }\n NumberAxis.prototype.normaliseDataDomain = function (d) {\n var _a = this, min = _a.min, max = _a.max;\n if (d.length > 2) {\n d = extent$4(d) || [NaN, NaN];\n }\n if (!isNaN(min)) {\n d = [min, d[1]];\n }\n if (!isNaN(max)) {\n d = [d[0], max];\n }\n if (d[0] > d[1]) {\n d = [];\n }\n return d;\n };\n NumberAxis.prototype.formatDatum = function (datum) {\n if (typeof datum === 'number') {\n return datum.toFixed(2);\n }\n else {\n Logger.warnOnce('data contains Date objects which are being plotted against a number axis, please only use a number axis for numbers.');\n return String(datum);\n }\n };\n NumberAxis.prototype.updateSecondaryAxisTicks = function (primaryTickCount) {\n if (this.dataDomain == null) {\n throw new Error('AG Charts - dataDomain not calculated, cannot perform tick calculation.');\n }\n var _a = __read$z(calculateNiceSecondaryAxis(this.dataDomain, primaryTickCount !== null && primaryTickCount !== void 0 ? primaryTickCount : 0), 2), d = _a[0], ticks = _a[1];\n this.scale.nice = false;\n this.scale.domain = d;\n this.scale.update();\n return ticks;\n };\n NumberAxis.className = 'NumberAxis';\n NumberAxis.type = 'number';\n __decorate$1v([\n Validate(AND(NUMBER_OR_NAN(), LESS_THAN('max'))),\n Default(NaN)\n ], NumberAxis.prototype, \"min\", void 0);\n __decorate$1v([\n Validate(AND(NUMBER_OR_NAN(), GREATER_THAN('min'))),\n Default(NaN)\n ], NumberAxis.prototype, \"max\", void 0);\n return NumberAxis;\n}(ChartAxis));\n\nvar __extends$27 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction NON_ZERO_NUMBER() {\n // Cannot be 0\n var message = \"expecting a non-zero Number\";\n return predicateWithMessage(function (v) { return typeof v === 'number' && v !== 0; }, message);\n}\nvar LogAxis = /** @class */ (function (_super) {\n __extends$27(LogAxis, _super);\n function LogAxis(moduleCtx) {\n var _this = _super.call(this, moduleCtx, new LogScale()) || this;\n _this.min = NaN;\n _this.max = NaN;\n _this.scale.strictClampByDefault = true;\n return _this;\n }\n LogAxis.prototype.normaliseDataDomain = function (d) {\n var _a = this, min = _a.min, max = _a.max;\n if (d.length > 2) {\n d = extent$4(d) || [NaN, NaN];\n }\n if (!isNaN(min)) {\n d = [min, d[1]];\n }\n if (!isNaN(max)) {\n d = [d[0], max];\n }\n var isInverted = d[0] > d[1];\n var crossesZero = d[0] < 0 && d[1] > 0;\n var hasZeroExtent = d[0] === 0 && d[1] === 0;\n var invalidDomain = isInverted || crossesZero || hasZeroExtent;\n if (invalidDomain) {\n d = [];\n if (crossesZero) {\n Logger.warn(\"the data domain crosses zero, the chart data cannot be rendered. See log axis documentation for more information.\");\n }\n else if (hasZeroExtent) {\n Logger.warn(\"the data domain has 0 extent, no data is rendered.\");\n }\n }\n if (d[0] === 0) {\n d[0] = 1;\n }\n if (d[1] === 0) {\n d[1] = -1;\n }\n return d;\n };\n Object.defineProperty(LogAxis.prototype, \"base\", {\n get: function () {\n return this.scale.base;\n },\n set: function (value) {\n this.scale.base = value;\n },\n enumerable: false,\n configurable: true\n });\n LogAxis.className = 'LogAxis';\n LogAxis.type = 'log';\n __decorate$1u([\n Validate(AND(NUMBER_OR_NAN(), LESS_THAN('max'), NON_ZERO_NUMBER())),\n Default(NaN)\n ], LogAxis.prototype, \"min\", void 0);\n __decorate$1u([\n Validate(AND(NUMBER_OR_NAN(), GREATER_THAN('min'), NON_ZERO_NUMBER())),\n Default(NaN)\n ], LogAxis.prototype, \"max\", void 0);\n return LogAxis;\n}(NumberAxis));\n\nvar __assign$x = (undefined && undefined.__assign) || function () {\n __assign$x = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$x.apply(this, arguments);\n};\nvar __values$f = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$y = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$k = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$y(arguments[i]));\n return ar;\n};\nfunction extendDomain(values, domain) {\n var e_1, _a;\n if (domain === void 0) { domain = [Infinity, -Infinity]; }\n try {\n for (var values_1 = __values$f(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n var value = values_1_1.value;\n if (typeof value !== 'number') {\n continue;\n }\n if (value < domain[0]) {\n domain[0] = value;\n }\n if (value > domain[1]) {\n domain[1] = value;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return domain;\n}\nfunction sumValues(values, accumulator) {\n var e_2, _a;\n if (accumulator === void 0) { accumulator = [0, 0]; }\n try {\n for (var values_2 = __values$f(values), values_2_1 = values_2.next(); !values_2_1.done; values_2_1 = values_2.next()) {\n var value = values_2_1.value;\n if (typeof value !== 'number') {\n continue;\n }\n if (value < 0) {\n accumulator[0] += value;\n }\n if (value > 0) {\n accumulator[1] += value;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (values_2_1 && !values_2_1.done && (_a = values_2.return)) _a.call(values_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return accumulator;\n}\nfunction toKeyString(keys) {\n return keys\n .map(function (v) {\n if (v == null) {\n return v;\n }\n else if (typeof v === 'number' || typeof v === 'string' || typeof v === 'boolean') {\n return v;\n }\n else if (typeof v === 'object') {\n return JSON.stringify(v);\n }\n return v;\n })\n .join('-');\n}\nvar SMALLEST_KEY_INTERVAL = {\n type: 'reducer',\n property: 'smallestKeyInterval',\n initialValue: Infinity,\n reducer: function () {\n var prevX = NaN;\n return function (smallestSoFar, next) {\n var nextX = next.keys[0];\n var interval = Math.abs(nextX - prevX);\n prevX = nextX;\n if (!isNaN(interval) && interval > 0 && interval < smallestSoFar) {\n return interval;\n }\n return smallestSoFar;\n };\n },\n};\nvar SUM_VALUE_EXTENT = {\n type: 'processor',\n property: 'sumValueExtent',\n calculate: function (processedData) {\n var e_3, _a;\n var _b, _c, _d, _e;\n var result = __spread$k(((_c = (_b = processedData.domain.sumValues) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : [0, 0]));\n try {\n for (var _f = __values$f((_e = (_d = processedData.domain.sumValues) === null || _d === void 0 ? void 0 : _d.slice(1)) !== null && _e !== void 0 ? _e : []), _g = _f.next(); !_g.done; _g = _f.next()) {\n var _h = __read$y(_g.value, 2), min = _h[0], max = _h[1];\n if (min < result[0]) {\n result[0] = min;\n }\n if (max > result[1]) {\n result[1] = max;\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return result;\n },\n};\nvar INVALID_VALUE = Symbol('invalid');\nvar DataModel = /** @class */ (function () {\n function DataModel(opts) {\n var e_4, _a, e_5, _b;\n var _this = this;\n var _c;\n var props = opts.props;\n // Validate that keys appear before values in the definitions, as output ordering depends\n // on configuration ordering, but we process keys before values.\n var keys = true;\n try {\n for (var props_1 = __values$f(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var next = props_1_1.value;\n if (next.type === 'key' && !keys) {\n throw new Error('AG Charts - internal config error: keys must come before values.');\n }\n if (next.type === 'value' && keys) {\n keys = false;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n this.opts = __assign$x({ dataVisible: true }, opts);\n this.keys = props\n .filter(function (def) { return def.type === 'key'; })\n .map(function (def, index) { return (__assign$x(__assign$x({}, def), { index: index, missing: false })); });\n this.values = props\n .filter(function (def) { return def.type === 'value'; })\n .map(function (def, index) { return (__assign$x(__assign$x({}, def), { index: index, missing: false })); });\n this.sums = props.filter(function (def) { return def.type === 'sum'; });\n this.reducers = props.filter(function (def) { return def.type === 'reducer'; });\n this.processors = props.filter(function (def) { return def.type === 'processor'; });\n try {\n for (var _d = __values$f((_c = this.sums) !== null && _c !== void 0 ? _c : []), _e = _d.next(); !_e.done; _e = _d.next()) {\n var properties = _e.value.properties;\n if (properties.length === 0)\n continue;\n if (!properties.some(function (prop) { return _this.values.some(function (def) { return def.property === prop; }); })) {\n throw new Error(\"AG Charts - internal config error: sum properties must match defined properties (\" + properties + \").\");\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_b = _d.return)) _b.call(_d);\n }\n finally { if (e_5) throw e_5.error; }\n }\n }\n DataModel.prototype.resolveProcessedDataIndex = function (propName) {\n var def = this.resolveProcessedDataDef(propName);\n if ((def === null || def === void 0 ? void 0 : def.type) === 'key' || (def === null || def === void 0 ? void 0 : def.type) === 'value') {\n return { type: def.type, index: def.index };\n }\n };\n DataModel.prototype.resolveProcessedDataDef = function (propName) {\n var _a = this, keys = _a.keys, values = _a.values;\n var def = __spread$k(keys, values).find(function (_a) {\n var property = _a.property;\n return property === propName;\n });\n if (!def)\n return undefined;\n return def;\n };\n DataModel.prototype.getDomain = function (propName, processedData) {\n var idx = this.resolveProcessedDataIndex(propName);\n if (!idx) {\n return [];\n }\n return processedData.domain[idx.type === 'key' ? 'keys' : 'values'][idx.index];\n };\n DataModel.prototype.processData = function (data) {\n var e_6, _a, e_7, _b;\n var _c = this, _d = _c.opts, groupByKeys = _d.groupByKeys, normaliseTo = _d.normaliseTo, sums = _c.sums, reducers = _c.reducers, processors = _c.processors;\n var start = performance.now();\n try {\n for (var _e = __values$f(__spread$k(this.keys, this.values)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var def = _f.value;\n def.missing = false;\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_a = _e.return)) _a.call(_e);\n }\n finally { if (e_6) throw e_6.error; }\n }\n if (groupByKeys && this.keys.length === 0) {\n return undefined;\n }\n var processedData = this.extractData(data);\n if (groupByKeys) {\n processedData = this.groupData(processedData);\n }\n if (sums.length > 0) {\n this.sumData(processedData);\n }\n if (typeof normaliseTo === 'number') {\n this.normaliseData(processedData);\n }\n if (reducers.length > 0) {\n this.reduceData(processedData);\n }\n if (processors.length > 0) {\n this.postProcessData(processedData);\n }\n try {\n for (var _g = __values$f(__spread$k(this.keys, this.values)), _h = _g.next(); !_h.done; _h = _g.next()) {\n var def = _h.value;\n if (def.missing) {\n Logger.warnOnce(\"the key '\" + def.property + \"' was not found in at least one data element.\");\n }\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (_h && !_h.done && (_b = _g.return)) _b.call(_g);\n }\n finally { if (e_7) throw e_7.error; }\n }\n var end = performance.now();\n processedData.time = end - start;\n return processedData;\n };\n DataModel.prototype.extractData = function (data) {\n var e_8, _a, e_9, _b, e_10, _c;\n var _d = this, keyDefs = _d.keys, valueDefs = _d.values, dataVisible = _d.opts.dataVisible;\n var _e = this.initDataDomainProcessor(), dataDomain = _e.dataDomain, processValue = _e.processValue;\n var resultData = new Array(dataVisible ? data.length : 0);\n var resultDataIdx = 0;\n try {\n dataLoop: for (var data_1 = __values$f(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var datum = data_1_1.value;\n var keys = dataVisible ? new Array(keyDefs.length) : undefined;\n var keyIdx = 0;\n try {\n for (var keyDefs_1 = (e_9 = void 0, __values$f(keyDefs)), keyDefs_1_1 = keyDefs_1.next(); !keyDefs_1_1.done; keyDefs_1_1 = keyDefs_1.next()) {\n var def = keyDefs_1_1.value;\n var key = processValue(def, datum);\n if (key === INVALID_VALUE) {\n continue dataLoop;\n }\n if (keys) {\n keys[keyIdx++] = key;\n }\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (keyDefs_1_1 && !keyDefs_1_1.done && (_b = keyDefs_1.return)) _b.call(keyDefs_1);\n }\n finally { if (e_9) throw e_9.error; }\n }\n var values = dataVisible ? new Array(valueDefs.length) : undefined;\n var valueIdx = 0;\n try {\n for (var valueDefs_1 = (e_10 = void 0, __values$f(valueDefs)), valueDefs_1_1 = valueDefs_1.next(); !valueDefs_1_1.done; valueDefs_1_1 = valueDefs_1.next()) {\n var def = valueDefs_1_1.value;\n var value = processValue(def, datum);\n if (value === INVALID_VALUE) {\n continue dataLoop;\n }\n if (values) {\n values[valueIdx++] = value;\n }\n }\n }\n catch (e_10_1) { e_10 = { error: e_10_1 }; }\n finally {\n try {\n if (valueDefs_1_1 && !valueDefs_1_1.done && (_c = valueDefs_1.return)) _c.call(valueDefs_1);\n }\n finally { if (e_10) throw e_10.error; }\n }\n if (dataVisible) {\n resultData[resultDataIdx++] = {\n datum: datum,\n keys: keys,\n values: values,\n };\n }\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_8) throw e_8.error; }\n }\n resultData.length = resultDataIdx;\n var propertyDomain = function (def) {\n var result = dataDomain.get(def.property).domain;\n if (Array.isArray(result) && result[0] > result[1]) {\n // Ignore starting values.\n return [];\n }\n return __spread$k(result);\n };\n return {\n type: 'ungrouped',\n data: resultData,\n domain: {\n keys: keyDefs.map(function (def) { return propertyDomain(def); }),\n values: valueDefs.map(function (def) { return propertyDomain(def); }),\n },\n indices: {\n keys: keyDefs.reduce(function (r, _a) {\n var property = _a.property, index = _a.index;\n r[property] = index;\n return r;\n }, {}),\n values: valueDefs.reduce(function (r, _a) {\n var property = _a.property, index = _a.index;\n r[property] = index;\n return r;\n }, {}),\n },\n defs: {\n keys: keyDefs,\n values: valueDefs,\n },\n time: 0,\n };\n };\n DataModel.prototype.groupData = function (data) {\n var e_11, _a, e_12, _b;\n var processedData = new Map();\n try {\n for (var _c = __values$f(data.data), _d = _c.next(); !_d.done; _d = _c.next()) {\n var _e = _d.value, keys = _e.keys, values = _e.values, datum = _e.datum;\n var keyStr = toKeyString(keys);\n if (processedData.has(keyStr)) {\n var existingData = processedData.get(keyStr);\n existingData.values.push(values);\n existingData.datum.push(datum);\n }\n else {\n processedData.set(keyStr, { keys: keys, values: [values], datum: [datum] });\n }\n }\n }\n catch (e_11_1) { e_11 = { error: e_11_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_11) throw e_11.error; }\n }\n var resultData = new Array(processedData.size);\n var dataIndex = 0;\n try {\n for (var _f = __values$f(processedData.entries()), _g = _f.next(); !_g.done; _g = _f.next()) {\n var _h = __read$y(_g.value, 2), _j = _h[1], keys = _j.keys, values = _j.values, datum = _j.datum;\n resultData[dataIndex++] = {\n keys: keys,\n values: values,\n datum: datum,\n };\n }\n }\n catch (e_12_1) { e_12 = { error: e_12_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n }\n finally { if (e_12) throw e_12.error; }\n }\n return __assign$x(__assign$x({}, data), { type: 'grouped', data: resultData });\n };\n DataModel.prototype.sumData = function (processedData) {\n var e_13, _a, e_14, _b, e_15, _c;\n var _d;\n var _e = this, valueDefs = _e.values, sumDefs = _e.sums;\n if (!sumDefs)\n return;\n var resultSumValues = sumDefs.map(function () { return [Infinity, -Infinity]; });\n var resultSumValueIndices = sumDefs.map(function (defs) {\n return defs.properties.map(function (prop) { return valueDefs.findIndex(function (def) { return def.property === prop; }); });\n });\n try {\n for (var _f = __values$f(processedData.data), _g = _f.next(); !_g.done; _g = _f.next()) {\n var group = _g.value;\n var values = group.values;\n (_d = group.sumValues) !== null && _d !== void 0 ? _d : (group.sumValues = new Array(resultSumValueIndices.length));\n if (processedData.type === 'ungrouped') {\n values = [values];\n }\n var resultIdx = 0;\n try {\n for (var resultSumValueIndices_1 = (e_14 = void 0, __values$f(resultSumValueIndices)), resultSumValueIndices_1_1 = resultSumValueIndices_1.next(); !resultSumValueIndices_1_1.done; resultSumValueIndices_1_1 = resultSumValueIndices_1.next()) {\n var indices = resultSumValueIndices_1_1.value;\n var groupDomain = extendDomain([]);\n var _loop_1 = function (distinctValues) {\n var valuesToSum = indices.map(function (valueIdx) { return distinctValues[valueIdx]; });\n var range = sumValues(valuesToSum);\n if (range) {\n extendDomain(range, groupDomain);\n }\n };\n try {\n for (var values_3 = (e_15 = void 0, __values$f(values)), values_3_1 = values_3.next(); !values_3_1.done; values_3_1 = values_3.next()) {\n var distinctValues = values_3_1.value;\n _loop_1(distinctValues);\n }\n }\n catch (e_15_1) { e_15 = { error: e_15_1 }; }\n finally {\n try {\n if (values_3_1 && !values_3_1.done && (_c = values_3.return)) _c.call(values_3);\n }\n finally { if (e_15) throw e_15.error; }\n }\n extendDomain(groupDomain, resultSumValues[resultIdx]);\n group.sumValues[resultIdx++] = groupDomain;\n }\n }\n catch (e_14_1) { e_14 = { error: e_14_1 }; }\n finally {\n try {\n if (resultSumValueIndices_1_1 && !resultSumValueIndices_1_1.done && (_b = resultSumValueIndices_1.return)) _b.call(resultSumValueIndices_1);\n }\n finally { if (e_14) throw e_14.error; }\n }\n }\n }\n catch (e_13_1) { e_13 = { error: e_13_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n }\n finally { if (e_13) throw e_13.error; }\n }\n processedData.domain.sumValues = resultSumValues;\n };\n DataModel.prototype.normaliseData = function (processedData) {\n var e_16, _a, e_17, _b, e_18, _c, e_19, _d, e_20, _e, e_21, _f, e_22, _g;\n var _h;\n var _j = this, sumDefs = _j.sums, valueDefs = _j.values, normaliseTo = _j.opts.normaliseTo;\n if (normaliseTo == null)\n return;\n var sumValues = processedData.domain.sumValues;\n var resultSumValueIndices = sumDefs.map(function (defs) {\n return defs.properties.map(function (prop) { return valueDefs.findIndex(function (def) { return def.property === prop; }); });\n });\n // const normalisedRange = [-normaliseTo, normaliseTo];\n var normalise = function (val, extent) {\n var result = (val * normaliseTo) / extent;\n if (result >= 0) {\n return Math.min(normaliseTo, result);\n }\n return Math.max(-normaliseTo, result);\n };\n for (var sumIdx = 0; sumIdx < sumDefs.length; sumIdx++) {\n var sums = sumValues === null || sumValues === void 0 ? void 0 : sumValues[sumIdx];\n if (sums == null)\n continue;\n var sumAbsExtent = -Infinity;\n try {\n for (var sums_1 = (e_16 = void 0, __values$f(sums)), sums_1_1 = sums_1.next(); !sums_1_1.done; sums_1_1 = sums_1.next()) {\n var sum = sums_1_1.value;\n var sumAbs = Math.abs(sum);\n if (sumAbsExtent < sumAbs) {\n sumAbsExtent = sumAbs;\n }\n }\n }\n catch (e_16_1) { e_16 = { error: e_16_1 }; }\n finally {\n try {\n if (sums_1_1 && !sums_1_1.done && (_a = sums_1.return)) _a.call(sums_1);\n }\n finally { if (e_16) throw e_16.error; }\n }\n var sumRangeIdx = 0;\n try {\n for (var sums_2 = (e_17 = void 0, __values$f(sums)), sums_2_1 = sums_2.next(); !sums_2_1.done; sums_2_1 = sums_2.next()) {\n var _ = sums_2_1.value;\n sums[sumRangeIdx] = normalise(sums[sumRangeIdx], sumAbsExtent);\n sumRangeIdx++;\n }\n }\n catch (e_17_1) { e_17 = { error: e_17_1 }; }\n finally {\n try {\n if (sums_2_1 && !sums_2_1.done && (_b = sums_2.return)) _b.call(sums_2);\n }\n finally { if (e_17) throw e_17.error; }\n }\n try {\n for (var _k = (e_18 = void 0, __values$f(processedData.data)), _l = _k.next(); !_l.done; _l = _k.next()) {\n var next = _l.value;\n var sumValues_1 = next.sumValues;\n var values = next.values;\n if (processedData.type === 'ungrouped') {\n values = [values];\n }\n var valuesSumExtent = 0;\n try {\n for (var _m = (e_19 = void 0, __values$f((_h = sumValues_1 === null || sumValues_1 === void 0 ? void 0 : sumValues_1[sumIdx]) !== null && _h !== void 0 ? _h : [])), _o = _m.next(); !_o.done; _o = _m.next()) {\n var sum = _o.value;\n var sumAbs = Math.abs(sum);\n if (valuesSumExtent < sumAbs) {\n valuesSumExtent = sumAbs;\n }\n }\n }\n catch (e_19_1) { e_19 = { error: e_19_1 }; }\n finally {\n try {\n if (_o && !_o.done && (_d = _m.return)) _d.call(_m);\n }\n finally { if (e_19) throw e_19.error; }\n }\n try {\n for (var values_4 = (e_20 = void 0, __values$f(values)), values_4_1 = values_4.next(); !values_4_1.done; values_4_1 = values_4.next()) {\n var row = values_4_1.value;\n try {\n for (var _p = (e_21 = void 0, __values$f(resultSumValueIndices[sumIdx])), _q = _p.next(); !_q.done; _q = _p.next()) {\n var indices = _q.value;\n row[indices] = normalise(row[indices], valuesSumExtent);\n }\n }\n catch (e_21_1) { e_21 = { error: e_21_1 }; }\n finally {\n try {\n if (_q && !_q.done && (_f = _p.return)) _f.call(_p);\n }\n finally { if (e_21) throw e_21.error; }\n }\n }\n }\n catch (e_20_1) { e_20 = { error: e_20_1 }; }\n finally {\n try {\n if (values_4_1 && !values_4_1.done && (_e = values_4.return)) _e.call(values_4);\n }\n finally { if (e_20) throw e_20.error; }\n }\n if (sumValues_1 == null)\n continue;\n sumRangeIdx = 0;\n try {\n for (var _r = (e_22 = void 0, __values$f(sumValues_1[sumIdx])), _s = _r.next(); !_s.done; _s = _r.next()) {\n var _ = _s.value;\n sumValues_1[sumIdx][sumRangeIdx] = normalise(sumValues_1[sumIdx][sumRangeIdx], valuesSumExtent);\n sumRangeIdx++;\n }\n }\n catch (e_22_1) { e_22 = { error: e_22_1 }; }\n finally {\n try {\n if (_s && !_s.done && (_g = _r.return)) _g.call(_r);\n }\n finally { if (e_22) throw e_22.error; }\n }\n }\n }\n catch (e_18_1) { e_18 = { error: e_18_1 }; }\n finally {\n try {\n if (_l && !_l.done && (_c = _k.return)) _c.call(_k);\n }\n finally { if (e_18) throw e_18.error; }\n }\n }\n };\n DataModel.prototype.reduceData = function (processedData) {\n var e_23, _a, e_24, _b;\n var _c;\n var reducerDefs = this.reducers;\n var reducers = reducerDefs.map(function (def) { return def.reducer(); });\n var accValues = reducerDefs.map(function (def) { return def.initialValue; });\n try {\n for (var _d = __values$f(processedData.data), _e = _d.next(); !_e.done; _e = _d.next()) {\n var group = _e.value;\n var reducerIndex = 0;\n try {\n for (var reducers_1 = (e_24 = void 0, __values$f(reducers)), reducers_1_1 = reducers_1.next(); !reducers_1_1.done; reducers_1_1 = reducers_1.next()) {\n var reducer = reducers_1_1.value;\n accValues[reducerIndex] = reducer(accValues[reducerIndex], group);\n reducerIndex++;\n }\n }\n catch (e_24_1) { e_24 = { error: e_24_1 }; }\n finally {\n try {\n if (reducers_1_1 && !reducers_1_1.done && (_b = reducers_1.return)) _b.call(reducers_1);\n }\n finally { if (e_24) throw e_24.error; }\n }\n }\n }\n catch (e_23_1) { e_23 = { error: e_23_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_23) throw e_23.error; }\n }\n for (var accIdx = 0; accIdx < accValues.length; accIdx++) {\n (_c = processedData.reduced) !== null && _c !== void 0 ? _c : (processedData.reduced = {});\n processedData.reduced[reducerDefs[accIdx].property] = accValues[accIdx];\n }\n };\n DataModel.prototype.postProcessData = function (processedData) {\n var e_25, _a;\n var _b;\n var processorDefs = this.processors;\n try {\n for (var processorDefs_1 = __values$f(processorDefs), processorDefs_1_1 = processorDefs_1.next(); !processorDefs_1_1.done; processorDefs_1_1 = processorDefs_1.next()) {\n var def = processorDefs_1_1.value;\n (_b = processedData.reduced) !== null && _b !== void 0 ? _b : (processedData.reduced = {});\n processedData.reduced[def.property] = def.calculate(processedData);\n }\n }\n catch (e_25_1) { e_25 = { error: e_25_1 }; }\n finally {\n try {\n if (processorDefs_1_1 && !processorDefs_1_1.done && (_a = processorDefs_1.return)) _a.call(processorDefs_1);\n }\n finally { if (e_25) throw e_25.error; }\n }\n };\n DataModel.prototype.initDataDomainProcessor = function () {\n var _a = this, keyDefs = _a.keys, valueDefs = _a.values;\n var dataDomain = new Map();\n var initDataDomainKey = function (key, type, updateDataDomain) {\n if (type === 'category') {\n updateDataDomain.set(key, { type: type, domain: new Set() });\n }\n else {\n updateDataDomain.set(key, { type: type, domain: [Infinity, -Infinity] });\n }\n };\n var initDataDomain = function (updateDataDomain) {\n if (updateDataDomain === void 0) { updateDataDomain = dataDomain; }\n keyDefs.forEach(function (def) { return initDataDomainKey(def.property, def.valueType, updateDataDomain); });\n valueDefs.forEach(function (def) { return initDataDomainKey(def.property, def.valueType, updateDataDomain); });\n return updateDataDomain;\n };\n initDataDomain();\n var processValue = function (def, datum, updateDataDomain) {\n var _a, _b;\n if (updateDataDomain === void 0) { updateDataDomain = dataDomain; }\n var valueInDatum = def.property in datum;\n var missingValueDef = 'missingValue' in def;\n if (!def.missing && !valueInDatum && !missingValueDef) {\n def.missing = true;\n }\n if (!updateDataDomain.has(def.property)) {\n initDataDomain(updateDataDomain);\n }\n var value = valueInDatum ? datum[def.property] : def.missingValue;\n if (valueInDatum) {\n var valid = (_b = (_a = def.validation) === null || _a === void 0 ? void 0 : _a.call(def, value)) !== null && _b !== void 0 ? _b : true;\n if (!valid) {\n if ('invalidValue' in def) {\n value = def.invalidValue;\n }\n else {\n return INVALID_VALUE;\n }\n }\n }\n var meta = updateDataDomain.get(def.property);\n if ((meta === null || meta === void 0 ? void 0 : meta.type) === 'category') {\n meta.domain.add(value);\n }\n else if ((meta === null || meta === void 0 ? void 0 : meta.type) === 'range') {\n if (meta.domain[0] > value) {\n meta.domain[0] = value;\n }\n if (meta.domain[1] < value) {\n meta.domain[1] = value;\n }\n }\n return value;\n };\n return { dataDomain: dataDomain, processValue: processValue, initDataDomain: initDataDomain };\n };\n return DataModel;\n}());\n\nvar __extends$26 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TimeAxis = /** @class */ (function (_super) {\n __extends$26(TimeAxis, _super);\n function TimeAxis(moduleCtx) {\n var _this = _super.call(this, moduleCtx, new TimeScale$1()) || this;\n _this.datumFormat = '%m/%d/%y, %H:%M:%S';\n _this.min = undefined;\n _this.max = undefined;\n var scale = _this.scale;\n scale.strictClampByDefault = true;\n _this.refreshScale();\n _this.datumFormatter = scale.tickFormat({\n specifier: _this.datumFormat,\n });\n return _this;\n }\n TimeAxis.prototype.normaliseDataDomain = function (d) {\n var _a = this, min = _a.min, max = _a.max;\n if (typeof min === 'number') {\n min = new Date(min);\n }\n if (typeof max === 'number') {\n max = new Date(max);\n }\n if (d.length > 2) {\n d = (extent$4(d) || [0, 1000]).map(function (x) { return new Date(x); });\n }\n if (min instanceof Date) {\n d = [min, d[1]];\n }\n if (max instanceof Date) {\n d = [d[0], max];\n }\n if (d[0] > d[1]) {\n d = [];\n }\n return d;\n };\n TimeAxis.prototype.onLabelFormatChange = function (ticks, format) {\n if (format) {\n _super.prototype.onLabelFormatChange.call(this, ticks, format);\n }\n else {\n // For time axis labels to look nice, even if date format wasn't set.\n this.labelFormatter = this.scale.tickFormat({ ticks: ticks });\n }\n };\n TimeAxis.prototype.formatDatum = function (datum) {\n return this.datumFormatter(datum);\n };\n TimeAxis.prototype.calculatePadding = function (_min, _max) {\n // numbers in domain correspond to Unix timestamps\n // automatically expand domain by 1 in each direction\n return 1;\n };\n TimeAxis.className = 'TimeAxis';\n TimeAxis.type = 'time';\n __decorate$1t([\n Validate(AND(OPT_DATE_OR_DATETIME_MS, LESS_THAN('max')))\n ], TimeAxis.prototype, \"min\", void 0);\n __decorate$1t([\n Validate(AND(OPT_DATE_OR_DATETIME_MS, GREATER_THAN('min')))\n ], TimeAxis.prototype, \"max\", void 0);\n return TimeAxis;\n}(ChartAxis));\n\nvar __extends$25 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$7 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$7 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$x = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$j = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$x(arguments[i]));\n return ar;\n};\nvar __values$e = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar AreaSeriesLabel = /** @class */ (function (_super) {\n __extends$25(AreaSeriesLabel, _super);\n function AreaSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1s([\n Validate(OPT_FUNCTION)\n ], AreaSeriesLabel.prototype, \"formatter\", void 0);\n return AreaSeriesLabel;\n}(Label$1));\nvar AreaSeriesTooltip = /** @class */ (function (_super) {\n __extends$25(AreaSeriesTooltip, _super);\n function AreaSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n _this.format = undefined;\n return _this;\n }\n __decorate$1s([\n Validate(OPT_FUNCTION)\n ], AreaSeriesTooltip.prototype, \"renderer\", void 0);\n __decorate$1s([\n Validate(OPT_STRING)\n ], AreaSeriesTooltip.prototype, \"format\", void 0);\n return AreaSeriesTooltip;\n}(SeriesTooltip));\nvar AreaSeriesTag;\n(function (AreaSeriesTag) {\n AreaSeriesTag[AreaSeriesTag[\"Fill\"] = 0] = \"Fill\";\n AreaSeriesTag[AreaSeriesTag[\"Stroke\"] = 1] = \"Stroke\";\n AreaSeriesTag[AreaSeriesTag[\"Marker\"] = 2] = \"Marker\";\n AreaSeriesTag[AreaSeriesTag[\"Label\"] = 3] = \"Label\";\n})(AreaSeriesTag || (AreaSeriesTag = {}));\nvar AreaSeries = /** @class */ (function (_super) {\n __extends$25(AreaSeries, _super);\n function AreaSeries() {\n var _this = _super.call(this, {\n pathsPerSeries: 2,\n pathsZIndexSubOrderOffset: [0, 1000],\n hasMarkers: true,\n renderLayerPerSubSeries: false,\n directionKeys: {\n x: ['xKey'],\n y: ['yKeys'],\n },\n }) || this;\n _this.tooltip = new AreaSeriesTooltip();\n _this.marker = new CartesianSeriesMarker();\n _this.label = new AreaSeriesLabel();\n _this.fills = ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'];\n _this.strokes = ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'];\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this._xKey = '';\n _this.xName = '';\n _this._yKeys = [];\n _this._visibles = [];\n _this.yNames = [];\n _this.strokeWidth = 2;\n _this.shadow = undefined;\n var _a = _this, marker = _a.marker, label = _a.label;\n marker.enabled = false;\n label.enabled = false;\n return _this;\n }\n Object.defineProperty(AreaSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n this._xKey = value;\n this.processedData = undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"yKeys\", {\n get: function () {\n return this._yKeys;\n },\n set: function (values) {\n if (!areArrayItemsStrictlyEqual(this._yKeys, values)) {\n this._yKeys = values;\n this.processedData = undefined;\n this.processSeriesItemEnabled();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"visibles\", {\n get: function () {\n return this._visibles;\n },\n set: function (visibles) {\n this._visibles = visibles;\n this.processSeriesItemEnabled();\n },\n enumerable: false,\n configurable: true\n });\n AreaSeries.prototype.processSeriesItemEnabled = function () {\n var _a = this, seriesItemEnabled = _a.seriesItemEnabled, _b = _a._visibles, visibles = _b === void 0 ? [] : _b;\n seriesItemEnabled.clear();\n this._yKeys.forEach(function (key, idx) { var _a; return seriesItemEnabled.set(key, (_a = visibles[idx]) !== null && _a !== void 0 ? _a : true); });\n };\n Object.defineProperty(AreaSeries.prototype, \"normalizedTo\", {\n get: function () {\n return this._normalizedTo;\n },\n set: function (value) {\n var absValue = value ? Math.abs(value) : undefined;\n if (this._normalizedTo !== absValue) {\n this._normalizedTo = absValue;\n }\n },\n enumerable: false,\n configurable: true\n });\n AreaSeries.prototype.processData = function () {\n return __awaiter$7(this, void 0, void 0, function () {\n var _a, xKey, yKeys, seriesItemEnabled, xAxis, yAxis, normalizedTo, data, isContinuousX, isContinuousY, enabledYKeys, normaliseTo;\n return __generator$7(this, function (_b) {\n _a = this, xKey = _a.xKey, yKeys = _a.yKeys, seriesItemEnabled = _a.seriesItemEnabled, xAxis = _a.xAxis, yAxis = _a.yAxis, normalizedTo = _a.normalizedTo;\n data = xKey && yKeys.length && this.data ? this.data : [];\n isContinuousX = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.scale) instanceof ContinuousScale;\n isContinuousY = (yAxis === null || yAxis === void 0 ? void 0 : yAxis.scale) instanceof ContinuousScale;\n enabledYKeys = __spread$j(seriesItemEnabled.entries()).filter(function (_a) {\n var _b = __read$x(_a, 2), enabled = _b[1];\n return enabled;\n }).map(function (_a) {\n var _b = __read$x(_a, 1), yKey = _b[0];\n return yKey;\n });\n normaliseTo = normalizedTo && isFinite(normalizedTo) ? normalizedTo : undefined;\n this.dataModel = new DataModel({\n props: __spread$j([\n keyProperty(xKey, isContinuousX)\n ], enabledYKeys.map(function (yKey) {\n return valueProperty(yKey, isContinuousY, {\n missingValue: NaN,\n invalidValue: undefined,\n });\n }), [\n sumProperties(enabledYKeys),\n SUM_VALUE_EXTENT,\n ]),\n groupByKeys: true,\n dataVisible: this.visible && enabledYKeys.length > 0,\n normaliseTo: normaliseTo,\n });\n this.processedData = this.dataModel.processData(data);\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.getDomain = function (direction) {\n var _a = this, processedData = _a.processedData, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!processedData)\n return [];\n var _b = processedData, _c = __read$x(_b.defs.keys, 1), keyDef = _c[0], _d = _b.domain, _e = __read$x(_d.keys, 1), keys = _e[0], _f = __read$x(_d.values, 1), yExtent = _f[0], _g = _b.reduced, _h = SUM_VALUE_EXTENT.property, ySumExtent = (_g === void 0 ? {} : _g)[_h];\n if (direction === ChartAxisDirection.X) {\n if (keyDef.valueType === 'category') {\n return keys;\n }\n return this.fixNumericExtent(extent$4(keys), xAxis);\n }\n else if (yAxis instanceof LogAxis || yAxis instanceof TimeAxis) {\n return this.fixNumericExtent(yExtent, yAxis);\n }\n else {\n return this.fixNumericExtent(ySumExtent, yAxis);\n }\n };\n AreaSeries.prototype.createNodeData = function () {\n return __awaiter$7(this, void 0, void 0, function () {\n var _a, xAxis, yAxis, data, _b, groupedData, contexts, _c, yKeys, xKey, marker, label, fills, strokes, seriesId, xScale, yScale, continuousY, xOffset, xDataCount, cumulativePathValues, cumulativeMarkerValues, createPathCoordinates, createMarkerCoordinate;\n var _this = this;\n return __generator$7(this, function (_d) {\n _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis, data = _a.data, _b = _a.processedData, groupedData = (_b === void 0 ? {} : _b).data;\n if (!xAxis || !yAxis || !data) {\n return [2 /*return*/, []];\n }\n contexts = [];\n _c = this, yKeys = _c.yKeys, xKey = _c.xKey, marker = _c.marker, label = _c.label, fills = _c.fills, strokes = _c.strokes, seriesId = _c.id;\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n continuousY = yScale instanceof ContinuousScale;\n xOffset = (xScale.bandwidth || 0) / 2;\n xDataCount = data.length;\n cumulativePathValues = new Array(xDataCount)\n .fill(null)\n .map(function () { return ({ left: 0, right: 0 }); });\n cumulativeMarkerValues = new Array(xDataCount).fill(0);\n createPathCoordinates = function (xDatum, yDatum, idx, side) {\n var x = xScale.convert(xDatum) + xOffset;\n var prevY = cumulativePathValues[idx][side];\n var currY = cumulativePathValues[idx][side] + yDatum;\n var prevYCoordinate = yScale.convert(prevY, { strict: false });\n var currYCoordinate = yScale.convert(currY, { strict: false });\n cumulativePathValues[idx][side] = currY;\n return [\n { x: x, y: currYCoordinate, size: marker.size },\n { x: x, y: prevYCoordinate, size: marker.size },\n ];\n };\n createMarkerCoordinate = function (xDatum, yDatum, idx, rawYDatum) {\n var currY;\n // if not normalized, the invalid data points will be processed as `undefined` in processData()\n // if normalized, the invalid data points will be processed as 0 rather than `undefined`\n // check if unprocessed datum is valid as we only want to show markers for valid points\n var normalized = _this.normalizedTo && isFinite(_this.normalizedTo);\n var normalizedAndValid = normalized && continuousY && isContinuous(rawYDatum);\n var valid = (!normalized && !isNaN(rawYDatum)) || normalizedAndValid;\n if (valid) {\n currY = cumulativeMarkerValues[idx] += yDatum;\n }\n var x = xScale.convert(xDatum) + xOffset;\n var y = yScale.convert(currY, { strict: false });\n return { x: x, y: y, size: marker.size };\n };\n yKeys.forEach(function (yKey, seriesIdx) {\n var _a;\n var yKeyDataIndex = (_a = _this.dataModel) === null || _a === void 0 ? void 0 : _a.resolveProcessedDataIndex(yKey);\n var labelSelectionData = [];\n var markerSelectionData = [];\n var strokeSelectionData = { itemId: yKey, points: [], yValues: [] };\n var fillSelectionData = { itemId: yKey, points: [] };\n contexts[seriesIdx] = {\n itemId: yKey,\n fillSelectionData: fillSelectionData,\n labelData: labelSelectionData,\n nodeData: markerSelectionData,\n strokeSelectionData: strokeSelectionData,\n };\n if (!yKeyDataIndex) {\n return;\n }\n var fillPoints = fillSelectionData.points;\n var fillPhantomPoints = [];\n var strokePoints = strokeSelectionData.points;\n var yValues = strokeSelectionData.yValues;\n var datumIdx = -1;\n groupedData === null || groupedData === void 0 ? void 0 : groupedData.forEach(function (datumGroup, dataIdx) {\n var _a = __read$x(datumGroup.keys, 1), xDatum = _a[0], datumArray = datumGroup.datum, valuesArray = datumGroup.values;\n valuesArray.forEach(function (values, valueIdx) {\n datumIdx++;\n var seriesDatum = datumArray[valueIdx];\n var rawYDatum = values[yKeyDataIndex.index];\n var yDatum = isNaN(rawYDatum) ? undefined : rawYDatum;\n var nextValuesSameGroup = valueIdx < valuesArray.length - 1;\n var nextDatumGroup = nextValuesSameGroup ? datumGroup : groupedData[dataIdx + 1];\n var nextXDatum = nextDatumGroup === null || nextDatumGroup === void 0 ? void 0 : nextDatumGroup.keys[0];\n var rawNextYIdx = nextValuesSameGroup ? valueIdx + 1 : 0;\n var rawNextYDatum = nextDatumGroup === null || nextDatumGroup === void 0 ? void 0 : nextDatumGroup.values[rawNextYIdx][yKeyDataIndex.index];\n var nextYDatum = isNaN(rawNextYDatum) ? undefined : rawNextYDatum;\n // marker data\n var point = createMarkerCoordinate(xDatum, +yDatum, datumIdx, seriesDatum[yKey]);\n if (marker) {\n markerSelectionData.push({\n index: datumIdx,\n series: _this,\n itemId: yKey,\n datum: seriesDatum,\n nodeMidPoint: { x: point.x, y: point.y },\n cumulativeValue: cumulativeMarkerValues[datumIdx],\n yValue: yDatum,\n yKey: yKey,\n xKey: xKey,\n point: point,\n fill: fills[seriesIdx % fills.length],\n stroke: strokes[seriesIdx % strokes.length],\n });\n }\n // label data\n var labelText;\n if (label.formatter) {\n labelText = label.formatter({ value: yDatum, seriesId: seriesId });\n }\n else {\n labelText = isNumber$4(yDatum) ? Number(yDatum).toFixed(2) : String(yDatum);\n }\n if (label) {\n labelSelectionData.push({\n index: datumIdx,\n itemId: yKey,\n point: point,\n label: labelText\n ? {\n text: labelText,\n fontStyle: label.fontStyle,\n fontWeight: label.fontWeight,\n fontSize: label.fontSize,\n fontFamily: label.fontFamily,\n textAlign: 'center',\n textBaseline: 'bottom',\n fill: label.color,\n }\n : undefined,\n });\n }\n // fill data\n // Handle data in pairs of current and next x and y values\n var windowX = [xDatum, nextXDatum];\n var windowY = [yDatum, nextYDatum];\n if (windowX.some(function (v) { return v == undefined; })) {\n return;\n }\n if (windowY.some(function (v) { return v == undefined; })) {\n windowY[0] = 0;\n windowY[1] = 0;\n }\n var currCoordinates = createPathCoordinates(windowX[0], +windowY[0], datumIdx, 'right');\n fillPoints.push(currCoordinates[0]);\n fillPhantomPoints.push(currCoordinates[1]);\n var nextCoordinates = createPathCoordinates(windowX[1], +windowY[1], datumIdx, 'left');\n fillPoints.push(nextCoordinates[0]);\n fillPhantomPoints.push(nextCoordinates[1]);\n // stroke data\n strokePoints.push({ x: NaN, y: NaN }); // moveTo\n yValues.push(undefined);\n strokePoints.push(currCoordinates[0]);\n yValues.push(yDatum);\n if (nextYDatum !== undefined) {\n strokePoints.push(nextCoordinates[0]);\n yValues.push(yDatum);\n }\n });\n });\n for (var i = fillPhantomPoints.length - 1; i >= 0; i--) {\n fillPoints.push(fillPhantomPoints[i]);\n }\n });\n return [2 /*return*/, contexts];\n });\n });\n };\n AreaSeries.prototype.isPathOrSelectionDirty = function () {\n return this.marker.isDirty();\n };\n AreaSeries.prototype.updatePaths = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var _a, fillSelectionData, strokeSelectionData, _b, fill, stroke;\n return __generator$7(this, function (_c) {\n _a = opts.contextData, fillSelectionData = _a.fillSelectionData, strokeSelectionData = _a.strokeSelectionData, _b = __read$x(opts.paths, 2), fill = _b[0], stroke = _b[1];\n fill.datum = fillSelectionData;\n fill.tag = AreaSeriesTag.Fill;\n fill.lineJoin = 'round';\n fill.stroke = undefined;\n fill.pointerEvents = PointerEvents.None;\n stroke.datum = strokeSelectionData;\n stroke.tag = AreaSeriesTag.Stroke;\n stroke.fill = undefined;\n stroke.lineJoin = stroke.lineCap = 'round';\n stroke.pointerEvents = PointerEvents.None;\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.updatePathNodes = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var _a, fill, stroke, seriesIdx, itemId, _b, strokes, fills, fillOpacity, strokeOpacity, strokeWidth, shadow, points, path, i, points_1, points_1_1, p, _c, points, yValues, moveTo_1, path, i, points_2, points_2_1, p;\n var e_1, _d, e_2, _e;\n return __generator$7(this, function (_f) {\n _a = __read$x(opts.paths, 2), fill = _a[0], stroke = _a[1], seriesIdx = opts.seriesIdx, itemId = opts.itemId;\n _b = this, strokes = _b.strokes, fills = _b.fills, fillOpacity = _b.fillOpacity, strokeOpacity = _b.strokeOpacity, strokeWidth = _b.strokeWidth, shadow = _b.shadow;\n {\n points = fill.datum.points;\n fill.fill = fills[seriesIdx % fills.length];\n fill.fillOpacity = fillOpacity;\n fill.strokeOpacity = strokeOpacity;\n fill.strokeWidth = strokeWidth;\n fill.lineDash = this.lineDash;\n fill.lineDashOffset = this.lineDashOffset;\n fill.fillShadow = shadow;\n path = fill.path;\n path.clear({ trackChanges: true });\n i = 0;\n try {\n for (points_1 = __values$e(points), points_1_1 = points_1.next(); !points_1_1.done; points_1_1 = points_1.next()) {\n p = points_1_1.value;\n if (i++ > 0) {\n path.lineTo(p.x, p.y);\n }\n else {\n path.moveTo(p.x, p.y);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (points_1_1 && !points_1_1.done && (_d = points_1.return)) _d.call(points_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n path.closePath();\n fill.checkPathDirty();\n }\n {\n _c = stroke.datum, points = _c.points, yValues = _c.yValues;\n moveTo_1 = true;\n stroke.stroke = strokes[seriesIdx % strokes.length];\n stroke.strokeWidth = this.getStrokeWidth(this.strokeWidth, { itemId: itemId });\n stroke.strokeOpacity = strokeOpacity;\n stroke.lineDash = this.lineDash;\n stroke.lineDashOffset = this.lineDashOffset;\n path = stroke.path;\n path.clear({ trackChanges: true });\n i = 0;\n try {\n for (points_2 = __values$e(points), points_2_1 = points_2.next(); !points_2_1.done; points_2_1 = points_2.next()) {\n p = points_2_1.value;\n if (yValues[i++] === undefined) {\n moveTo_1 = true;\n }\n else if (moveTo_1) {\n path.moveTo(p.x, p.y);\n moveTo_1 = false;\n }\n else {\n path.lineTo(p.x, p.y);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (points_2_1 && !points_2_1.done && (_e = points_2.return)) _e.call(points_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n stroke.checkPathDirty();\n }\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.markerFactory = function () {\n var shape = this.marker.shape;\n var MarkerShape = getMarker$1(shape);\n return new MarkerShape();\n };\n AreaSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var nodeData, markerSelection, enabled, data;\n return __generator$7(this, function (_a) {\n nodeData = opts.nodeData, markerSelection = opts.markerSelection;\n enabled = this.marker.enabled;\n data = enabled && nodeData ? nodeData : [];\n if (this.marker.isDirty()) {\n markerSelection.clear();\n }\n return [2 /*return*/, markerSelection.update(data, function (marker) {\n marker.tag = AreaSeriesTag.Marker;\n })];\n });\n });\n };\n AreaSeries.prototype.updateMarkerNodes = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var markerSelection, isDatumHighlighted, _a, seriesId, xKey, marker, seriesItemEnabled, yKeys, fills, strokes, seriesFillOpacity, _b, markerFillOpacity, strokeOpacity, _c, highlightedFill, _d, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, size, formatter, markerStrokeWidth, customMarker;\n return __generator$7(this, function (_e) {\n markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n _a = this, seriesId = _a.id, xKey = _a.xKey, marker = _a.marker, seriesItemEnabled = _a.seriesItemEnabled, yKeys = _a.yKeys, fills = _a.fills, strokes = _a.strokes, seriesFillOpacity = _a.fillOpacity, _b = _a.marker.fillOpacity, markerFillOpacity = _b === void 0 ? seriesFillOpacity : _b, strokeOpacity = _a.strokeOpacity, _c = _a.highlightStyle.item, highlightedFill = _c.fill, _d = _c.fillOpacity, highlightFillOpacity = _d === void 0 ? markerFillOpacity : _d, highlightedStroke = _c.stroke, highlightedDatumStrokeWidth = _c.strokeWidth;\n size = marker.size, formatter = marker.formatter;\n markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : this.strokeWidth;\n customMarker = typeof marker.shape === 'function';\n markerSelection.each(function (node, datum) {\n var _a, _b;\n var yKeyIndex = yKeys.indexOf(datum.yKey);\n var fill = isDatumHighlighted && highlightedFill !== undefined\n ? highlightedFill\n : marker.fill || fills[yKeyIndex % fills.length];\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined\n ? highlightedStroke\n : marker.stroke || strokes[yKeyIndex % fills.length];\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : markerStrokeWidth;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n xKey: xKey,\n yKey: datum.yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: isDatumHighlighted,\n seriesId: seriesId,\n });\n }\n node.fill = (format && format.fill) || fill;\n node.stroke = (format && format.stroke) || stroke;\n node.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n node.strokeOpacity = (_b = (_a = marker.strokeOpacity) !== null && _a !== void 0 ? _a : strokeOpacity) !== null && _b !== void 0 ? _b : 1;\n node.size = format && format.size !== undefined ? format.size : size;\n node.translationX = datum.point.x;\n node.translationY = datum.point.y;\n node.visible =\n node.size > 0 && !!seriesItemEnabled.get(datum.yKey) && !isNaN(datum.point.x) && !isNaN(datum.point.y);\n if (!customMarker || node.dirtyPath) {\n return;\n }\n // Only for cutom marker shapes\n node.path.clear({ trackChanges: true });\n node.updatePath();\n node.checkPathDirty();\n });\n if (!isDatumHighlighted) {\n this.marker.markClean();\n }\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var labelData, labelSelection;\n return __generator$7(this, function (_a) {\n labelData = opts.labelData, labelSelection = opts.labelSelection;\n return [2 /*return*/, labelSelection.update(labelData, function (text) {\n text.tag = AreaSeriesTag.Label;\n })];\n });\n });\n };\n AreaSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var labelSelection, _a, labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color;\n return __generator$7(this, function (_b) {\n labelSelection = opts.labelSelection;\n _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n labelSelection.each(function (text, datum) {\n var point = datum.point, label = datum.label;\n if (label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = point.x;\n text.y = point.y - 10;\n text.fill = color;\n text.visible = true;\n }\n else {\n text.visible = false;\n }\n });\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new CartesianSeriesNodeClickEvent(this.xKey, datum.yKey, event, datum, this);\n };\n AreaSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n return new CartesianSeriesNodeDoubleClickEvent(this.xKey, datum.yKey, event, datum, this);\n };\n AreaSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a, _b, _c;\n var _d = this, xKey = _d.xKey, seriesId = _d.id;\n var yKey = nodeDatum.yKey;\n var yKeyDataIndex = (_a = this.dataModel) === null || _a === void 0 ? void 0 : _a.resolveProcessedDataIndex(yKey);\n if (!(xKey && yKey) || !yKeyDataIndex) {\n return '';\n }\n var datum = nodeDatum.datum;\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var _e = this, xAxis = _e.xAxis, yAxis = _e.yAxis, yKeys = _e.yKeys;\n if (!(xAxis && yAxis && isNumber$4(yValue)) || !yKeyDataIndex) {\n return '';\n }\n var _f = this, xName = _f.xName, yNames = _f.yNames, fills = _f.fills, strokes = _f.strokes, tooltip = _f.tooltip, marker = _f.marker;\n var size = marker.size, markerFormatter = marker.formatter, markerStrokeWidth = marker.strokeWidth, markerFill = marker.fill, markerStroke = marker.stroke;\n var xString = xAxis.formatDatum(xValue);\n var yString = yAxis.formatDatum(yValue);\n var yKeyIndex = yKeys.indexOf(yKey);\n var processedYValue = (_c = (_b = this.processedData) === null || _b === void 0 ? void 0 : _b.data[nodeDatum.index]) === null || _c === void 0 ? void 0 : _c.values[0][yKeyDataIndex === null || yKeyDataIndex === void 0 ? void 0 : yKeyDataIndex.index];\n var yName = yNames[yKeyIndex];\n var title = sanitizeHtml(yName);\n var content = sanitizeHtml(xString + ': ' + yString);\n var strokeWidth = markerStrokeWidth !== undefined ? markerStrokeWidth : this.strokeWidth;\n var fill = markerFill || fills[yKeyIndex % fills.length];\n var stroke = markerStroke || strokes[yKeyIndex % fills.length];\n var format = undefined;\n if (markerFormatter) {\n format = markerFormatter({\n datum: datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: false,\n seriesId: seriesId,\n });\n }\n var color = (format && format.fill) || fill;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content,\n };\n var tooltipRenderer = tooltip.renderer, tooltipFormat = tooltip.format;\n if (tooltipFormat || tooltipRenderer) {\n var params = {\n datum: datum,\n xKey: xKey,\n xName: xName,\n xValue: xValue,\n yKey: yKey,\n yValue: yValue,\n processedYValue: processedYValue,\n yName: yName,\n color: color,\n title: title,\n seriesId: seriesId,\n };\n if (tooltipFormat) {\n return toTooltipHtml$1({\n content: interpolate(tooltipFormat, params),\n }, defaults);\n }\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer(params), defaults);\n }\n }\n return toTooltipHtml$1(defaults);\n };\n AreaSeries.prototype.getLegendData = function () {\n var _a, _b;\n var _c = this, data = _c.data, id = _c.id, xKey = _c.xKey, yKeys = _c.yKeys, yNames = _c.yNames, seriesItemEnabled = _c.seriesItemEnabled, marker = _c.marker, fills = _c.fills, strokes = _c.strokes, fillOpacity = _c.fillOpacity, strokeOpacity = _c.strokeOpacity;\n if (!data || !data.length || !xKey || !yKeys.length) {\n return [];\n }\n var legendData = [];\n // Area stacks should be listed in the legend in reverse order, for symmetry with the\n // vertical stack display order.\n for (var index = yKeys.length - 1; index >= 0; index--) {\n var yKey = yKeys[index];\n legendData.push({\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: seriesItemEnabled.get(yKey) || false,\n label: {\n text: yNames[index] || yKeys[index],\n },\n marker: {\n shape: marker.shape,\n fill: marker.fill || fills[index % fills.length],\n stroke: marker.stroke || strokes[index % strokes.length],\n fillOpacity: (_a = marker.fillOpacity) !== null && _a !== void 0 ? _a : fillOpacity,\n strokeOpacity: (_b = marker.strokeOpacity) !== null && _b !== void 0 ? _b : strokeOpacity,\n },\n });\n }\n return legendData;\n };\n AreaSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n AreaSeries.className = 'AreaSeries';\n AreaSeries.type = 'area';\n __decorate$1s([\n Validate(COLOR_STRING_ARRAY)\n ], AreaSeries.prototype, \"fills\", void 0);\n __decorate$1s([\n Validate(COLOR_STRING_ARRAY)\n ], AreaSeries.prototype, \"strokes\", void 0);\n __decorate$1s([\n Validate(NUMBER(0, 1))\n ], AreaSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1s([\n Validate(NUMBER(0, 1))\n ], AreaSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1s([\n Validate(OPT_LINE_DASH)\n ], AreaSeries.prototype, \"lineDash\", void 0);\n __decorate$1s([\n Validate(NUMBER(0))\n ], AreaSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1s([\n Validate(STRING)\n ], AreaSeries.prototype, \"_xKey\", void 0);\n __decorate$1s([\n Validate(STRING)\n ], AreaSeries.prototype, \"xName\", void 0);\n __decorate$1s([\n Validate(STRING_ARRAY)\n ], AreaSeries.prototype, \"_yKeys\", void 0);\n __decorate$1s([\n Validate(BOOLEAN_ARRAY)\n ], AreaSeries.prototype, \"_visibles\", void 0);\n __decorate$1s([\n Validate(STRING_ARRAY)\n ], AreaSeries.prototype, \"yNames\", void 0);\n __decorate$1s([\n Validate(OPT_NUMBER())\n ], AreaSeries.prototype, \"_normalizedTo\", void 0);\n __decorate$1s([\n Validate(NUMBER(0))\n ], AreaSeries.prototype, \"strokeWidth\", void 0);\n return AreaSeries;\n}(CartesianSeries));\n\nvar __extends$24 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Rect = /** @class */ (function (_super) {\n __extends$24(Rect, _super);\n function Rect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.borderPath = new Path2D();\n _this.x = 0;\n _this.y = 0;\n _this.width = 10;\n _this.height = 10;\n _this.radius = 0;\n /**\n * If `true`, the rect is aligned to the pixel grid for crisp looking lines.\n * Animated rects may not look nice with this option enabled, for example\n * when a rect is translated by a sub-pixel value on each frame.\n */\n _this.crisp = false;\n _this.lastUpdatePathStrokeWidth = Shape.defaultStyles.strokeWidth;\n _this.effectiveStrokeWidth = Shape.defaultStyles.strokeWidth;\n /**\n * When the rectangle's width or height is less than a pixel\n * and crisp mode is on, the rectangle will still fit into the pixel,\n * but will be less opaque to make an effect of holding less space.\n */\n _this.microPixelEffectOpacity = 1;\n return _this;\n }\n Rect.prototype.isDirtyPath = function () {\n var _a;\n if (this.lastUpdatePathStrokeWidth !== this.strokeWidth) {\n return true;\n }\n if (this.path.isDirty() || this.borderPath.isDirty() || ((_a = this.clipPath) === null || _a === void 0 ? void 0 : _a.isDirty())) {\n return true;\n }\n return false;\n };\n Rect.prototype.updatePath = function () {\n var _a, _b, _c;\n var _d = this, path = _d.path, borderPath = _d.borderPath, crisp = _d.crisp;\n var _e = this, x = _e.x, y = _e.y, w = _e.width, h = _e.height, strokeWidth = _e.strokeWidth;\n var pixelRatio = (_b = (_a = this.layerManager) === null || _a === void 0 ? void 0 : _a.canvas.pixelRatio) !== null && _b !== void 0 ? _b : 1;\n var pixelSize = 1 / pixelRatio;\n var microPixelEffectOpacity = 1;\n path.clear({ trackChanges: true });\n borderPath.clear({ trackChanges: true });\n if (crisp) {\n if (w <= pixelSize) {\n microPixelEffectOpacity *= w / pixelSize;\n }\n if (h <= pixelSize) {\n microPixelEffectOpacity *= h / pixelSize;\n }\n w = this.align(x, w);\n h = this.align(y, h);\n x = this.align(x);\n y = this.align(y);\n }\n if (strokeWidth) {\n if (w < pixelSize) {\n // Too narrow, draw a vertical stroke\n var lx = x + pixelSize / 2;\n borderPath.moveTo(lx, y);\n borderPath.lineTo(lx, y + h);\n strokeWidth = pixelSize;\n this.borderClipPath = undefined;\n }\n else if (h < pixelSize) {\n // Too narrow, draw a horizontal stroke\n var ly = y + pixelSize / 2;\n borderPath.moveTo(x, ly);\n borderPath.lineTo(x + w, ly);\n strokeWidth = pixelSize;\n this.borderClipPath = undefined;\n }\n else if (strokeWidth < w && strokeWidth < h) {\n var halfStrokeWidth = strokeWidth / 2;\n x += halfStrokeWidth;\n y += halfStrokeWidth;\n w -= strokeWidth;\n h -= strokeWidth;\n // Clipping not needed in this case; fill to center of stroke.\n this.borderClipPath = undefined;\n path.rect(x, y, w, h);\n borderPath.rect(x, y, w, h);\n }\n else {\n // Skip the fill and just render the stroke.\n this.borderClipPath = (_c = this.borderClipPath) !== null && _c !== void 0 ? _c : new Path2D();\n this.borderClipPath.clear({ trackChanges: true });\n this.borderClipPath.rect(x, y, w, h);\n borderPath.rect(x, y, w, h);\n }\n }\n else {\n // No borderPath needed, and thus no clipPath needed either. Fill to full extent of\n // Rect.\n this.borderClipPath = undefined;\n path.rect(x, y, w, h);\n }\n this.effectiveStrokeWidth = strokeWidth;\n this.lastUpdatePathStrokeWidth = strokeWidth;\n this.microPixelEffectOpacity = microPixelEffectOpacity;\n };\n Rect.prototype.computeBBox = function () {\n var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n return new BBox(x, y, width, height);\n };\n Rect.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox.containsPoint(point.x, point.y);\n };\n Rect.prototype.applyFillAlpha = function (ctx) {\n var _a = this, fillOpacity = _a.fillOpacity, microPixelEffectOpacity = _a.microPixelEffectOpacity, opacity = _a.opacity;\n ctx.globalAlpha = opacity * fillOpacity * microPixelEffectOpacity;\n };\n Rect.prototype.renderStroke = function (ctx) {\n var _a = this, stroke = _a.stroke, effectiveStrokeWidth = _a.effectiveStrokeWidth, borderPath = _a.borderPath, borderClipPath = _a.borderClipPath, opacity = _a.opacity, microPixelEffectOpacity = _a.microPixelEffectOpacity;\n var borderActive = !!stroke && !!effectiveStrokeWidth;\n if (borderActive) {\n var _b = this, strokeOpacity = _b.strokeOpacity, lineDash = _b.lineDash, lineDashOffset = _b.lineDashOffset, lineCap = _b.lineCap, lineJoin = _b.lineJoin;\n if (borderClipPath) {\n // strokeWidth is larger than width or height, so use clipping to render correctly.\n // This is the simplest way to achieve the correct rendering due to nuances with ~0\n // width/height lines in Canvas operations.\n borderClipPath.draw(ctx);\n ctx.clip();\n }\n borderPath.draw(ctx);\n var globalAlpha = ctx.globalAlpha;\n ctx.strokeStyle = stroke;\n ctx.globalAlpha = globalAlpha * opacity * strokeOpacity * microPixelEffectOpacity;\n ctx.lineWidth = effectiveStrokeWidth;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n ctx.stroke();\n ctx.globalAlpha = globalAlpha;\n }\n };\n Rect.className = 'Rect';\n __decorate$1r([\n ScenePathChangeDetection()\n ], Rect.prototype, \"x\", void 0);\n __decorate$1r([\n ScenePathChangeDetection()\n ], Rect.prototype, \"y\", void 0);\n __decorate$1r([\n ScenePathChangeDetection()\n ], Rect.prototype, \"width\", void 0);\n __decorate$1r([\n ScenePathChangeDetection()\n ], Rect.prototype, \"height\", void 0);\n __decorate$1r([\n ScenePathChangeDetection()\n ], Rect.prototype, \"radius\", void 0);\n __decorate$1r([\n ScenePathChangeDetection()\n ], Rect.prototype, \"crisp\", void 0);\n return Rect;\n}(Path));\n\nvar __extends$23 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$6 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$6 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$w = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$i = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$w(arguments[i]));\n return ar;\n};\nvar BAR_LABEL_PLACEMENTS = ['inside', 'outside'];\nvar OPT_BAR_LABEL_PLACEMENT = function (v, ctx) {\n return OPTIONAL(v, ctx, function (v) { return BAR_LABEL_PLACEMENTS.includes(v); });\n};\nvar BarSeriesNodeTag;\n(function (BarSeriesNodeTag) {\n BarSeriesNodeTag[BarSeriesNodeTag[\"Bar\"] = 0] = \"Bar\";\n BarSeriesNodeTag[BarSeriesNodeTag[\"Label\"] = 1] = \"Label\";\n})(BarSeriesNodeTag || (BarSeriesNodeTag = {}));\nvar BarSeriesLabel = /** @class */ (function (_super) {\n __extends$23(BarSeriesLabel, _super);\n function BarSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n _this.placement = 'inside';\n return _this;\n }\n __decorate$1q([\n Validate(OPT_FUNCTION)\n ], BarSeriesLabel.prototype, \"formatter\", void 0);\n __decorate$1q([\n Validate(OPT_BAR_LABEL_PLACEMENT)\n ], BarSeriesLabel.prototype, \"placement\", void 0);\n return BarSeriesLabel;\n}(Label$1));\nvar BarSeriesTooltip = /** @class */ (function (_super) {\n __extends$23(BarSeriesTooltip, _super);\n function BarSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1q([\n Validate(OPT_FUNCTION)\n ], BarSeriesTooltip.prototype, \"renderer\", void 0);\n return BarSeriesTooltip;\n}(SeriesTooltip));\nfunction is2dArray$1(array) {\n return array.length > 0 && Array.isArray(array[0]);\n}\nvar BarSeries = /** @class */ (function (_super) {\n __extends$23(BarSeries, _super);\n function BarSeries() {\n var _a;\n var _this = _super.call(this, {\n pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH],\n pathsPerSeries: 0,\n directionKeys: (_a = {},\n _a[ChartAxisDirection.X] = ['xKey'],\n _a[ChartAxisDirection.Y] = ['yKeys'],\n _a),\n }) || this;\n _this.label = new BarSeriesLabel();\n _this.tooltip = new BarSeriesTooltip();\n _this.flipXY = false;\n _this.fills = ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'];\n _this.strokes = ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'];\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.formatter = undefined;\n /**\n * Used to get the position of bars within each group.\n */\n _this.groupScale = new BandScale$5();\n _this._xKey = '';\n _this.xName = '';\n _this.cumYKeyCount = [];\n _this.flatYKeys = undefined; // only set when a user used a flat array for yKeys\n _this.hideInLegend = [];\n _this.yKeys = [];\n _this.yKeysCache = [];\n _this.visibles = [];\n _this._grouped = false;\n _this.stackGroups = {};\n /**\n * A map of `yKeys` to their names (used in legends and tooltips).\n * For example, if a key is `product_name` it's name can be a more presentable `Product Name`.\n */\n _this.yNames = {};\n _this.strokeWidth = 1;\n _this.shadow = undefined;\n _this.smallestDataInterval = undefined;\n _this.label.enabled = false;\n return _this;\n }\n BarSeries.prototype.resolveKeyDirection = function (direction) {\n return this.flipXY ? flipChartAxisDirection(direction) : direction;\n };\n Object.defineProperty(BarSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n this._xKey = value;\n this.processedData = undefined;\n },\n enumerable: false,\n configurable: true\n });\n BarSeries.prototype.processYKeys = function () {\n var _this = this;\n var yKeys = this.yKeys;\n var flatYKeys = undefined;\n // Convert from flat y-keys to grouped y-keys.\n if (!is2dArray$1(yKeys)) {\n flatYKeys = yKeys;\n yKeys = this.grouped ? flatYKeys.map(function (k) { return [k]; }) : [flatYKeys];\n }\n var stackGroups = Object.values(this.stackGroups);\n if (stackGroups.length > 0) {\n var flattenKeys = function (keys) { return keys.reduce(function (res, k) { return res.concat(k); }, []); };\n // Create a stack for items without a group\n var flatKeys_1 = flattenKeys(yKeys);\n var keysInStacks_1 = new Set(flattenKeys(stackGroups));\n var ungroupedKeys = flatKeys_1.filter(function (k) { return !keysInStacks_1.has(k); });\n yKeys = stackGroups.map(function (keys) { return keys; });\n if (ungroupedKeys.length > 0) {\n yKeys.push(ungroupedKeys);\n }\n // Preserve the order of colours and other properties\n var indexMap = function (items) {\n return items.reduce(function (map, key, index) { return map.set(key, index); }, new Map());\n };\n var newKeys = flattenKeys(yKeys);\n var newKeysIndices_1 = indexMap(newKeys);\n var sort = function (items) {\n var result = Array.from({ length: items.length });\n items.forEach(function (item, index) {\n var key = flatKeys_1[index];\n var newIndex = newKeysIndices_1.get(key);\n result[newIndex] = item;\n });\n return result;\n };\n this.fills = sort(this.fills);\n this.strokes = sort(this.strokes);\n this.visibles = sort(this.visibles);\n }\n if (!areArrayItemsStrictlyEqual(this.yKeysCache, yKeys)) {\n this.flatYKeys = flatYKeys ? flatYKeys : undefined;\n this.yKeys = yKeys;\n var prevYKeyCount_1 = 0;\n this.cumYKeyCount = [];\n var visibleStacks_1 = [];\n yKeys.forEach(function (stack, index) {\n if (stack.length > 0) {\n visibleStacks_1.push(String(index));\n }\n _this.cumYKeyCount.push(prevYKeyCount_1);\n prevYKeyCount_1 += stack.length;\n });\n this.processSeriesItemEnabled();\n var groupScale = this.groupScale;\n groupScale.domain = visibleStacks_1;\n }\n this.yKeysCache = yKeys;\n };\n BarSeries.prototype.processSeriesItemEnabled = function () {\n var seriesItemEnabled = this.seriesItemEnabled;\n var flattenFn = function (r, n) { return r.concat.apply(r, __spread$i((Array.isArray(n) ? n : [n]))); };\n var visibles = this.visibles.reduce(flattenFn, []);\n seriesItemEnabled.clear();\n var visiblesIdx = 0;\n this.yKeys.forEach(function (stack) {\n stack.forEach(function (yKey) { var _a; return seriesItemEnabled.set(yKey, (_a = visibles[visiblesIdx++]) !== null && _a !== void 0 ? _a : true); });\n });\n };\n Object.defineProperty(BarSeries.prototype, \"grouped\", {\n get: function () {\n return this._grouped;\n },\n set: function (value) {\n this._grouped = value;\n },\n enumerable: false,\n configurable: true\n });\n BarSeries.prototype.getStackGroup = function (yKey) {\n var _a;\n var stackGroups = this.stackGroups;\n return (_a = Object.entries(stackGroups).find(function (_a) {\n var _b = __read$w(_a, 2); _b[0]; var keys = _b[1];\n return keys.includes(yKey);\n })) === null || _a === void 0 ? void 0 : _a[0];\n };\n BarSeries.prototype.processYNames = function () {\n var values = this.yNames;\n if (Array.isArray(values) && this.flatYKeys) {\n var map_1 = {};\n this.flatYKeys.forEach(function (k, i) {\n map_1[k] = values[i];\n });\n this.yNames = map_1;\n }\n };\n Object.defineProperty(BarSeries.prototype, \"normalizedTo\", {\n get: function () {\n return this._normalizedTo;\n },\n set: function (value) {\n var absValue = value ? Math.abs(value) : undefined;\n this._normalizedTo = absValue;\n },\n enumerable: false,\n configurable: true\n });\n BarSeries.prototype.processData = function () {\n var _a, _b, _c, _d, _e;\n return __awaiter$6(this, void 0, void 0, function () {\n var _f, xKey, seriesItemEnabled, normalizedTo, _g, data, isContinuousX, isContinuousY, activeSeriesItems, activeStacks, normaliseTo;\n return __generator$6(this, function (_h) {\n this.processYKeys();\n this.processYNames();\n _f = this, xKey = _f.xKey, seriesItemEnabled = _f.seriesItemEnabled, normalizedTo = _f.normalizedTo, _g = _f.data, data = _g === void 0 ? [] : _g;\n isContinuousX = ((_a = this.getCategoryAxis()) === null || _a === void 0 ? void 0 : _a.scale) instanceof ContinuousScale;\n isContinuousY = ((_b = this.getValueAxis()) === null || _b === void 0 ? void 0 : _b.scale) instanceof ContinuousScale;\n activeSeriesItems = __spread$i(seriesItemEnabled.entries()).filter(function (_a) {\n var _b = __read$w(_a, 2), enabled = _b[1];\n return enabled;\n })\n .map(function (_a) {\n var _b = __read$w(_a, 1), yKey = _b[0];\n return yKey;\n });\n activeStacks = this.yKeys\n .map(function (stack) { return stack.filter(function (key) { return seriesItemEnabled.get(key); }); })\n .filter(function (stack) { return stack.length > 0; });\n normaliseTo = normalizedTo && isFinite(normalizedTo) ? normalizedTo : undefined;\n this.dataModel = new DataModel({\n props: __spread$i([\n keyProperty(xKey, isContinuousX)\n ], activeSeriesItems.map(function (yKey) { return valueProperty(yKey, isContinuousY, { invalidValue: null }); }), activeStacks.map(function (stack) { return sumProperties(stack); }), (isContinuousX ? [SMALLEST_KEY_INTERVAL] : []), [\n SUM_VALUE_EXTENT,\n ]),\n groupByKeys: true,\n dataVisible: this.visible && activeSeriesItems.length > 0,\n normaliseTo: normaliseTo,\n });\n this.processedData = this.dataModel.processData(data);\n this.smallestDataInterval = {\n x: (_e = (_d = (_c = this.processedData) === null || _c === void 0 ? void 0 : _c.reduced) === null || _d === void 0 ? void 0 : _d[SMALLEST_KEY_INTERVAL.property]) !== null && _e !== void 0 ? _e : Infinity,\n y: Infinity,\n };\n return [2 /*return*/];\n });\n });\n };\n BarSeries.prototype.getDomain = function (direction) {\n var _a = this, flipXY = _a.flipXY, processedData = _a.processedData;\n if (!processedData)\n return [];\n if (flipXY) {\n direction = flipChartAxisDirection(direction);\n }\n var _b = processedData, _c = __read$w(_b.defs.keys, 1), keyDef = _c[0], _d = _b.domain, _e = __read$w(_d.keys, 1), keys = _e[0], _f = __read$w(_d.values, 1), yExtent = _f[0], _g = _b.reduced, _h = _g === void 0 ? {} : _g, _j = SMALLEST_KEY_INTERVAL.property, smallestX = _h[_j], _k = SUM_VALUE_EXTENT.property, ySumExtent = _h[_k];\n if (direction === ChartAxisDirection.X) {\n if (keyDef.valueType === 'category') {\n return keys;\n }\n var keysExtent = extent$4(keys) || [NaN, NaN];\n if (flipXY) {\n return [keysExtent[0] + -smallestX, keysExtent[1]];\n }\n return [keysExtent[0], keysExtent[1] + smallestX];\n }\n else if (this.getValueAxis() instanceof LogAxis) {\n return this.fixNumericExtent(yExtent);\n }\n else {\n return this.fixNumericExtent(ySumExtent);\n }\n };\n BarSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new CartesianSeriesNodeClickEvent(this.xKey, datum.yKey, event, datum, this);\n };\n BarSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n return new CartesianSeriesNodeDoubleClickEvent(this.xKey, datum.yKey, event, datum, this);\n };\n BarSeries.prototype.getCategoryAxis = function () {\n return this.flipXY ? this.yAxis : this.xAxis;\n };\n BarSeries.prototype.getValueAxis = function () {\n return this.flipXY ? this.xAxis : this.yAxis;\n };\n BarSeries.prototype.calculateStep = function (range) {\n var _a;\n var smallestInterval = this.smallestDataInterval;\n var xAxis = this.getCategoryAxis();\n if (!xAxis) {\n return;\n }\n // calculate step\n var domainLength = xAxis.dataDomain[1] - xAxis.dataDomain[0];\n var intervals = domainLength / ((_a = smallestInterval === null || smallestInterval === void 0 ? void 0 : smallestInterval.x) !== null && _a !== void 0 ? _a : 1) + 1;\n // The number of intervals/bands is used to determine the width of individual bands by dividing the available range.\n // Allow a maximum number of bands to ensure the step does not fall below 1 pixel.\n // This means there could be some overlap of the bands in the chart.\n var maxBands = Math.floor(range); // A minimum of 1px per bar/column means the maximum number of bands will equal the available range\n var bands = Math.min(intervals, maxBands);\n var step = range / Math.max(1, bands);\n return step;\n };\n BarSeries.prototype.createNodeData = function () {\n return __awaiter$6(this, void 0, void 0, function () {\n var _a, data, visible, xAxis, yAxis, xScale, yScale, _b, groupScale, yKeys, xKey, cumYKeyCount, fills, strokes, strokeWidth, seriesItemEnabled, label, flipXY, seriesId, processedData, labelFontStyle, labelFontWeight, labelFontSize, labelFontFamily, labelColor, labelFormatter, labelPlacement, xBandWidth, availableRange, step, barWidth, contexts;\n var _this = this;\n return __generator$6(this, function (_c) {\n _a = this, data = _a.data, visible = _a.visible;\n xAxis = this.getCategoryAxis();\n yAxis = this.getValueAxis();\n if (!(data && visible && xAxis && yAxis)) {\n return [2 /*return*/, []];\n }\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n _b = this, groupScale = _b.groupScale, yKeys = _b.yKeys, xKey = _b.xKey, cumYKeyCount = _b.cumYKeyCount, fills = _b.fills, strokes = _b.strokes, strokeWidth = _b.strokeWidth, seriesItemEnabled = _b.seriesItemEnabled, label = _b.label, flipXY = _b.flipXY, seriesId = _b.id, processedData = _b.processedData;\n labelFontStyle = label.fontStyle, labelFontWeight = label.fontWeight, labelFontSize = label.fontSize, labelFontFamily = label.fontFamily, labelColor = label.color, labelFormatter = label.formatter, labelPlacement = label.placement;\n xBandWidth = xScale.bandwidth;\n if (xScale instanceof ContinuousScale) {\n availableRange = Math.max(xAxis.range[0], xAxis.range[1]);\n step = this.calculateStep(availableRange);\n xBandWidth = step;\n }\n groupScale.range = [0, xBandWidth];\n if (xAxis instanceof CategoryAxis) {\n groupScale.padding = xAxis.groupPaddingInner;\n }\n else if (xAxis instanceof GroupedCategoryAxis) {\n groupScale.padding = 0.1;\n }\n else {\n // Number or Time axis\n groupScale.padding = 0;\n }\n // To get exactly `0` padding we need to turn off rounding\n if (groupScale.padding === 0) {\n groupScale.round = false;\n }\n else {\n groupScale.round = true;\n }\n barWidth = groupScale.bandwidth >= 1\n ? // Pixel-rounded value for low-volume bar charts.\n groupScale.bandwidth\n : // Handle high-volume bar charts gracefully.\n groupScale.rawBandwidth;\n contexts = [];\n processedData === null || processedData === void 0 ? void 0 : processedData.data.forEach(function (_a, dataIndex) {\n var _b, _c, _d, _e, _f;\n var _g;\n var keys = _a.keys, seriesDatum = _a.datum, values = _a.values;\n var x = xScale.convert(keys[0]);\n for (var stackIndex = 0; stackIndex < ((_b = yKeys === null || yKeys === void 0 ? void 0 : yKeys.length) !== null && _b !== void 0 ? _b : 0); stackIndex++) {\n var stackYKeys = (_c = yKeys === null || yKeys === void 0 ? void 0 : yKeys[stackIndex]) !== null && _c !== void 0 ? _c : []; // y-data for a stack within a group\n (_d = contexts[stackIndex]) !== null && _d !== void 0 ? _d : (contexts[stackIndex] = []);\n var prevMinY = 0;\n var prevMaxY = 0;\n for (var levelIndex = 0; levelIndex < stackYKeys.length; levelIndex++) {\n var yKey = stackYKeys[levelIndex];\n var yIndex = (_e = processedData === null || processedData === void 0 ? void 0 : processedData.indices.values[yKey]) !== null && _e !== void 0 ? _e : -1;\n (_f = (_g = contexts[stackIndex])[levelIndex]) !== null && _f !== void 0 ? _f : (_g[levelIndex] = {\n itemId: yKey,\n nodeData: [],\n labelData: [],\n });\n if (yIndex === undefined)\n continue;\n var yValue = values[0][yIndex];\n var currY = +yValue;\n var barX = x + groupScale.convert(String(stackIndex));\n // Bars outside of visible range are not rendered, so we create node data\n // only for the visible subset of user data.\n if (!xAxis.inRange(barX, barWidth)) {\n continue;\n }\n if (isNaN(currY)) {\n continue;\n }\n var prevY = currY < 0 ? prevMinY : prevMaxY;\n var y = yScale.convert(prevY + currY, { strict: false });\n var bottomY = yScale.convert(prevY, { strict: false });\n var labelText = void 0;\n if (labelFormatter) {\n labelText = labelFormatter({\n value: isNumber$4(yValue) ? yValue : undefined,\n seriesId: seriesId,\n });\n }\n else {\n labelText = isNumber$4(yValue) ? yValue.toFixed(2) : '';\n }\n var labelX = void 0;\n var labelY = void 0;\n if (flipXY) {\n labelY = barX + barWidth / 2;\n if (labelPlacement === 'inside') {\n labelX = y + ((yValue >= 0 ? -1 : 1) * Math.abs(bottomY - y)) / 2;\n }\n else {\n labelX = y + (yValue >= 0 ? 1 : -1) * 4;\n }\n }\n else {\n labelX = barX + barWidth / 2;\n if (labelPlacement === 'inside') {\n labelY = y + ((yValue >= 0 ? 1 : -1) * Math.abs(bottomY - y)) / 2;\n }\n else {\n labelY = y + (yValue >= 0 ? -3 : 4);\n }\n }\n var labelTextAlign = void 0;\n var labelTextBaseline = void 0;\n if (labelPlacement === 'inside') {\n labelTextAlign = 'center';\n labelTextBaseline = 'middle';\n }\n else {\n labelTextAlign = flipXY ? (yValue >= 0 ? 'start' : 'end') : 'center';\n labelTextBaseline = flipXY ? 'middle' : yValue >= 0 ? 'bottom' : 'top';\n }\n var colorIndex = cumYKeyCount[stackIndex] + levelIndex;\n var rect = {\n x: flipXY ? Math.min(y, bottomY) : barX,\n y: flipXY ? barX : Math.min(y, bottomY),\n width: flipXY ? Math.abs(bottomY - y) : barWidth,\n height: flipXY ? barWidth : Math.abs(bottomY - y),\n };\n var nodeMidPoint = {\n x: rect.x + rect.width / 2,\n y: rect.y + rect.height / 2,\n };\n var nodeData = {\n index: dataIndex,\n series: _this,\n itemId: yKey,\n datum: seriesDatum[0],\n cumulativeValue: prevY + currY,\n yValue: yValue,\n yKey: yKey,\n xKey: xKey,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n nodeMidPoint: nodeMidPoint,\n colorIndex: colorIndex,\n fill: fills[colorIndex % fills.length],\n stroke: strokes[colorIndex % strokes.length],\n strokeWidth: strokeWidth,\n label: seriesItemEnabled.get(yKey) && labelText\n ? {\n text: labelText,\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n textAlign: labelTextAlign,\n textBaseline: labelTextBaseline,\n fill: labelColor,\n x: labelX,\n y: labelY,\n }\n : undefined,\n };\n contexts[stackIndex][levelIndex].nodeData.push(nodeData);\n contexts[stackIndex][levelIndex].labelData.push(nodeData);\n if (currY < 0) {\n prevMinY += currY;\n }\n else {\n prevMaxY += currY;\n }\n }\n }\n });\n return [2 /*return*/, contexts.reduce(function (r, n) { return r.concat.apply(r, __spread$i(n)); }, [])];\n });\n });\n };\n BarSeries.prototype.nodeFactory = function () {\n return new Rect();\n };\n BarSeries.prototype.updateDatumSelection = function (opts) {\n return __awaiter$6(this, void 0, void 0, function () {\n var nodeData, datumSelection;\n return __generator$6(this, function (_a) {\n nodeData = opts.nodeData, datumSelection = opts.datumSelection;\n return [2 /*return*/, datumSelection.update(nodeData, function (rect) { return (rect.tag = BarSeriesNodeTag.Bar); })];\n });\n });\n };\n BarSeries.prototype.updateDatumNodes = function (opts) {\n var _a, _b;\n return __awaiter$6(this, void 0, void 0, function () {\n var datumSelection, isDatumHighlighted, _c, fills, strokes, seriesFillOpacity, strokeOpacity, shadow, formatter, xKey, flipXY, _d, highlightedFill, _e, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, seriesId, _f, visibleMin, visibleMax, isZoomed, crisp;\n var _this = this;\n return __generator$6(this, function (_g) {\n datumSelection = opts.datumSelection, isDatumHighlighted = opts.isHighlight;\n _c = this, fills = _c.fills, strokes = _c.strokes, seriesFillOpacity = _c.fillOpacity, strokeOpacity = _c.strokeOpacity, shadow = _c.shadow, formatter = _c.formatter, xKey = _c.xKey, flipXY = _c.flipXY, _d = _c.highlightStyle.item, highlightedFill = _d.fill, _e = _d.fillOpacity, highlightFillOpacity = _e === void 0 ? seriesFillOpacity : _e, highlightedStroke = _d.stroke, highlightedDatumStrokeWidth = _d.strokeWidth, seriesId = _c.id;\n _f = __read$w((_b = (_a = this.xAxis) === null || _a === void 0 ? void 0 : _a.visibleRange) !== null && _b !== void 0 ? _b : [], 2), visibleMin = _f[0], visibleMax = _f[1];\n isZoomed = visibleMin !== 0 || visibleMax !== 1;\n crisp = !isZoomed;\n datumSelection.each(function (rect, datum) {\n var colorIndex = datum.colorIndex;\n var fill = isDatumHighlighted && highlightedFill !== undefined\n ? highlightedFill\n : fills[colorIndex % fills.length];\n var stroke = isDatumHighlighted && highlightedStroke !== undefined\n ? highlightedStroke\n : strokes[colorIndex % fills.length];\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : _this.getStrokeWidth(_this.strokeWidth, datum);\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : seriesFillOpacity;\n var stackGroup = _this.getStackGroup(datum.yKey);\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n highlighted: isDatumHighlighted,\n xKey: xKey,\n yKey: datum.yKey,\n seriesId: seriesId,\n stackGroup: stackGroup,\n });\n }\n rect.crisp = crisp;\n rect.x = datum.x;\n rect.y = datum.y;\n rect.width = datum.width;\n rect.height = datum.height;\n rect.fill = (format && format.fill) || fill;\n rect.stroke = (format && format.stroke) || stroke;\n rect.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n rect.fillOpacity = fillOpacity;\n rect.strokeOpacity = strokeOpacity;\n rect.lineDash = _this.lineDash;\n rect.lineDashOffset = _this.lineDashOffset;\n rect.fillShadow = shadow;\n // Prevent stroke from rendering for zero height columns and zero width bars.\n rect.visible = flipXY ? datum.width > 0 : datum.height > 0;\n });\n return [2 /*return*/];\n });\n });\n };\n BarSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$6(this, void 0, void 0, function () {\n var labelData, labelSelection, enabled, data;\n return __generator$6(this, function (_a) {\n labelData = opts.labelData, labelSelection = opts.labelSelection;\n enabled = this.label.enabled;\n data = enabled ? labelData : [];\n return [2 /*return*/, labelSelection.update(data, function (text) {\n text.tag = BarSeriesNodeTag.Label;\n text.pointerEvents = PointerEvents.None;\n })];\n });\n });\n };\n BarSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$6(this, void 0, void 0, function () {\n var labelSelection, _a, labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color;\n return __generator$6(this, function (_b) {\n labelSelection = opts.labelSelection;\n _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n labelSelection.each(function (text, datum) {\n var label = datum.label;\n if (label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = label.x;\n text.y = label.y;\n text.fill = color;\n text.visible = true;\n }\n else {\n text.visible = false;\n }\n });\n return [2 /*return*/];\n });\n });\n };\n BarSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this, xKey = _a.xKey, yKeys = _a.yKeys, processedData = _a.processedData;\n var xAxis = this.getCategoryAxis();\n var yAxis = this.getValueAxis();\n var yKey = nodeDatum.yKey;\n if (!processedData || !xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var fillIndex = 0;\n var i = 0;\n var j = 0;\n for (; j < yKeys.length; j++) {\n var stack = yKeys[j];\n i = stack.indexOf(yKey);\n if (i >= 0) {\n fillIndex += i;\n break;\n }\n fillIndex += stack.length;\n }\n var _b = this, xName = _b.xName, yNames = _b.yNames, fills = _b.fills, strokes = _b.strokes, tooltip = _b.tooltip, formatter = _b.formatter, seriesId = _b.id;\n var tooltipRenderer = tooltip.renderer;\n var datum = nodeDatum.datum;\n var yName = yNames[yKey];\n var stackGroup = this.getStackGroup(yKey);\n var fill = fills[fillIndex % fills.length];\n var stroke = strokes[fillIndex % fills.length];\n var strokeWidth = this.getStrokeWidth(this.strokeWidth);\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var xString = sanitizeHtml(xAxis.formatDatum(xValue));\n var yString = sanitizeHtml(yAxis.formatDatum(yValue));\n var title = sanitizeHtml(yName);\n var content = xString + ': ' + yString;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n highlighted: false,\n xKey: xKey,\n yKey: yKey,\n seriesId: seriesId,\n stackGroup: stackGroup,\n });\n }\n var color = (format && format.fill) || fill;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content,\n };\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: datum,\n xKey: xKey,\n xValue: xValue,\n xName: xName,\n yKey: yKey,\n yValue: yValue,\n yName: yName,\n color: color,\n title: title,\n seriesId: seriesId,\n stackGroup: stackGroup,\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n BarSeries.prototype.getLegendData = function () {\n var _a = this, id = _a.id, data = _a.data, xKey = _a.xKey, yKeys = _a.yKeys, yNames = _a.yNames, cumYKeyCount = _a.cumYKeyCount, seriesItemEnabled = _a.seriesItemEnabled, hideInLegend = _a.hideInLegend, fills = _a.fills, strokes = _a.strokes, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, flipXY = _a.flipXY;\n if (!data || !data.length || !xKey || !yKeys.length) {\n return [];\n }\n var legendData = [];\n this.yKeys.forEach(function (stack, stackIndex) {\n // Column stacks should be listed in the legend in reverse order, for symmetry with the\n // vertical stack display order. Bar stacks are already consistent left-to-right with\n // the legend.\n var startLevel = flipXY ? 0 : stack.length - 1;\n var direction = flipXY ? 1 : -1;\n for (var levelIndex = startLevel, step = 0; step < stack.length; levelIndex += direction, step++) {\n var yKey = stack[levelIndex];\n if (hideInLegend.indexOf(yKey) >= 0) {\n return;\n }\n var colorIndex = cumYKeyCount[stackIndex] + levelIndex;\n legendData.push({\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: seriesItemEnabled.get(yKey) || false,\n label: {\n text: yNames[yKey] || yKey,\n },\n marker: {\n fill: fills[colorIndex % fills.length],\n stroke: strokes[colorIndex % strokes.length],\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity,\n },\n });\n }\n });\n return legendData;\n };\n BarSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n _super.prototype.toggleSeriesItem.call(this, itemId, enabled);\n var yKeys = this.yKeys.map(function (stack) { return stack.slice(); }); // deep clone\n this.seriesItemEnabled.forEach(function (enabled, yKey) {\n if (!enabled) {\n yKeys.forEach(function (stack) {\n var index = stack.indexOf(yKey);\n if (index >= 0) {\n stack.splice(index, 1);\n }\n });\n }\n });\n var visibleStacks = [];\n yKeys.forEach(function (stack, index) {\n if (stack.length > 0) {\n visibleStacks.push(String(index));\n }\n });\n this.groupScale.domain = visibleStacks;\n this.nodeDataRefresh = true;\n };\n BarSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n BarSeries.prototype.getBandScalePadding = function () {\n return { inner: 0.2, outer: 0.3 };\n };\n BarSeries.className = 'BarSeries';\n BarSeries.type = 'bar';\n __decorate$1q([\n Validate(BOOLEAN)\n ], BarSeries.prototype, \"flipXY\", void 0);\n __decorate$1q([\n Validate(COLOR_STRING_ARRAY)\n ], BarSeries.prototype, \"fills\", void 0);\n __decorate$1q([\n Validate(COLOR_STRING_ARRAY)\n ], BarSeries.prototype, \"strokes\", void 0);\n __decorate$1q([\n Validate(NUMBER(0, 1))\n ], BarSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1q([\n Validate(NUMBER(0, 1))\n ], BarSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1q([\n Validate(OPT_LINE_DASH)\n ], BarSeries.prototype, \"lineDash\", void 0);\n __decorate$1q([\n Validate(NUMBER(0))\n ], BarSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1q([\n Validate(OPT_FUNCTION)\n ], BarSeries.prototype, \"formatter\", void 0);\n __decorate$1q([\n Validate(STRING)\n ], BarSeries.prototype, \"_xKey\", void 0);\n __decorate$1q([\n Validate(STRING)\n ], BarSeries.prototype, \"xName\", void 0);\n __decorate$1q([\n Validate(STRING_ARRAY)\n ], BarSeries.prototype, \"hideInLegend\", void 0);\n __decorate$1q([\n Validate(BOOLEAN_ARRAY)\n ], BarSeries.prototype, \"visibles\", void 0);\n __decorate$1q([\n Validate(BOOLEAN)\n ], BarSeries.prototype, \"_grouped\", void 0);\n __decorate$1q([\n Validate(OPT_NUMBER())\n ], BarSeries.prototype, \"_normalizedTo\", void 0);\n __decorate$1q([\n Validate(NUMBER(0))\n ], BarSeries.prototype, \"strokeWidth\", void 0);\n return BarSeries;\n}(CartesianSeries));\n\nvar __extends$22 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$5 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$5 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$v = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$h = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$v(arguments[i]));\n return ar;\n};\nvar HISTOGRAM_AGGREGATIONS = ['count', 'sum', 'mean'];\nvar HISTOGRAM_AGGREGATION = predicateWithMessage(function (v) { return HISTOGRAM_AGGREGATIONS.includes(v); }, \"expecting a histogram aggregation keyword such as 'count', 'sum' or 'mean\");\nvar HistogramSeriesNodeTag;\n(function (HistogramSeriesNodeTag) {\n HistogramSeriesNodeTag[HistogramSeriesNodeTag[\"Bin\"] = 0] = \"Bin\";\n HistogramSeriesNodeTag[HistogramSeriesNodeTag[\"Label\"] = 1] = \"Label\";\n})(HistogramSeriesNodeTag || (HistogramSeriesNodeTag = {}));\nvar HistogramSeriesLabel = /** @class */ (function (_super) {\n __extends$22(HistogramSeriesLabel, _super);\n function HistogramSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1p([\n Validate(OPT_FUNCTION)\n ], HistogramSeriesLabel.prototype, \"formatter\", void 0);\n return HistogramSeriesLabel;\n}(Label$1));\nvar defaultBinCount = 10;\nvar aggregationFunctions = {\n count: function (bin) { return bin.data.length; },\n sum: function (bin, yKey) { return bin.data.reduce(function (acc, datum) { return acc + datum[yKey]; }, 0); },\n mean: function (bin, yKey) { return aggregationFunctions.sum(bin, yKey) / aggregationFunctions.count(bin, yKey); },\n};\nvar HistogramBin = /** @class */ (function () {\n function HistogramBin(_a) {\n var _b = __read$v(_a, 2), domainMin = _b[0], domainMax = _b[1];\n this.data = [];\n this.aggregatedValue = 0;\n this.frequency = 0;\n this.domain = [domainMin, domainMax];\n }\n HistogramBin.prototype.addDatum = function (datum) {\n this.data.push(datum);\n this.frequency++;\n };\n Object.defineProperty(HistogramBin.prototype, \"domainWidth\", {\n get: function () {\n var _a = __read$v(this.domain, 2), domainMin = _a[0], domainMax = _a[1];\n return domainMax - domainMin;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HistogramBin.prototype, \"relativeHeight\", {\n get: function () {\n return this.aggregatedValue / this.domainWidth;\n },\n enumerable: false,\n configurable: true\n });\n HistogramBin.prototype.calculateAggregatedValue = function (aggregationName, yKey) {\n if (!yKey) {\n // not having a yKey forces us into a frequency plot\n aggregationName = 'count';\n }\n var aggregationFunction = aggregationFunctions[aggregationName];\n this.aggregatedValue = aggregationFunction(this, yKey);\n };\n HistogramBin.prototype.getY = function (areaPlot) {\n return areaPlot ? this.relativeHeight : this.aggregatedValue;\n };\n return HistogramBin;\n}());\nvar HistogramSeriesTooltip = /** @class */ (function (_super) {\n __extends$22(HistogramSeriesTooltip, _super);\n function HistogramSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1p([\n Validate(OPT_FUNCTION)\n ], HistogramSeriesTooltip.prototype, \"renderer\", void 0);\n return HistogramSeriesTooltip;\n}(SeriesTooltip));\nvar HistogramSeries = /** @class */ (function (_super) {\n __extends$22(HistogramSeries, _super);\n function HistogramSeries() {\n var _this = _super.call(this, { pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH] }) || this;\n _this.binnedData = [];\n _this.xDomain = [];\n _this.yDomain = [];\n _this.label = new HistogramSeriesLabel();\n _this.tooltip = new HistogramSeriesTooltip();\n _this.fill = undefined;\n _this.stroke = undefined;\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.xKey = '';\n _this.areaPlot = false;\n _this.bins = undefined;\n _this.aggregation = 'count';\n _this.binCount = undefined;\n _this.xName = '';\n _this.yKey = '';\n _this.yName = '';\n _this.strokeWidth = 1;\n _this.shadow = undefined;\n _this.label.enabled = false;\n return _this;\n }\n // During processData phase, used to unify different ways of the user specifying\n // the bins. Returns bins in format[[min1, max1], [min2, max2], ... ].\n HistogramSeries.prototype.deriveBins = function () {\n var _this = this;\n var bins = this.bins;\n if (!this.data) {\n return [];\n }\n var xData = this.data.map(function (datum) { return datum[_this.xKey]; });\n var xDomain = this.fixNumericExtent(extent$4(xData));\n if (this.binCount === undefined) {\n if (bins) {\n return bins;\n }\n var binStarts = ticks(xDomain[0], xDomain[1], defaultBinCount);\n var binSize_1 = tickStep(xDomain[0], xDomain[1], defaultBinCount);\n var firstBinEnd = binStarts[0];\n var expandStartToBin = function (n) { return [n, n + binSize_1]; };\n return __spread$h([[firstBinEnd - binSize_1, firstBinEnd]], binStarts.map(expandStartToBin));\n }\n else {\n return this.calculateNiceBins(xDomain, this.binCount);\n }\n };\n HistogramSeries.prototype.calculateNiceBins = function (domain, binCount) {\n var startGuess = Math.floor(domain[0]);\n var stop = domain[1];\n var segments = binCount || 1;\n var _a = this.calculateNiceStart(startGuess, stop, segments), start = _a.start, binSize = _a.binSize;\n return this.getBins(start, stop, binSize, segments);\n };\n HistogramSeries.prototype.getBins = function (start, stop, step, count) {\n var bins = [];\n for (var i = 0; i < count; i++) {\n var a = Math.round((start + i * step) * 10) / 10;\n var b = Math.round((start + (i + 1) * step) * 10) / 10;\n if (i === count - 1) {\n b = Math.max(b, stop);\n }\n bins[i] = [a, b];\n }\n return bins;\n };\n HistogramSeries.prototype.calculateNiceStart = function (a, b, segments) {\n var binSize = Math.abs(b - a) / segments;\n var order = Math.floor(Math.log10(binSize));\n var magnitude = Math.pow(10, order);\n var start = Math.floor(a / magnitude) * magnitude;\n return {\n start: start,\n binSize: binSize,\n };\n };\n HistogramSeries.prototype.placeDataInBins = function (data) {\n var _this = this;\n var xKey = this.xKey;\n var derivedBins = this.deriveBins();\n this.bins = derivedBins;\n // creating a sorted copy allows binning in O(n) rather than O(n²)\n // but at the expense of more temporary memory\n var sortedData = data.slice().sort(function (a, b) {\n if (a[xKey] < b[xKey]) {\n return -1;\n }\n if (a[xKey] > b[xKey]) {\n return 1;\n }\n return 0;\n });\n var bins = [new HistogramBin(derivedBins[0])];\n var currentBin = 0;\n for (var i = 0; i < sortedData.length && currentBin < derivedBins.length; i++) {\n var datum = sortedData[i];\n while (datum[xKey] > derivedBins[currentBin][1] && currentBin < derivedBins.length) {\n currentBin++;\n bins.push(new HistogramBin(derivedBins[currentBin]));\n }\n if (currentBin < derivedBins.length) {\n bins[currentBin].addDatum(datum);\n }\n }\n bins.forEach(function (b) { return b.calculateAggregatedValue(_this.aggregation, _this.yKey); });\n return bins;\n };\n Object.defineProperty(HistogramSeries.prototype, \"xMax\", {\n get: function () {\n var _this = this;\n return (this.data &&\n this.data.reduce(function (acc, datum) {\n return Math.max(acc, datum[_this.xKey]);\n }, Number.NEGATIVE_INFINITY));\n },\n enumerable: false,\n configurable: true\n });\n HistogramSeries.prototype.processData = function () {\n return __awaiter$5(this, void 0, void 0, function () {\n var _a, xKey, data, yData, yMinMax, firstBin, lastBin, xMin, xMax;\n var _this = this;\n return __generator$5(this, function (_b) {\n _a = this, xKey = _a.xKey, data = _a.data;\n this.binnedData = this.placeDataInBins(xKey && data ? data : []);\n yData = this.binnedData.map(function (b) { return b.getY(_this.areaPlot); });\n yMinMax = extent$4(yData);\n this.yDomain = this.fixNumericExtent([0, yMinMax ? yMinMax[1] : 1]);\n firstBin = this.binnedData[0];\n lastBin = this.binnedData[this.binnedData.length - 1];\n xMin = firstBin.domain[0];\n xMax = lastBin.domain[1];\n this.xDomain = [xMin, xMax];\n return [2 /*return*/];\n });\n });\n };\n HistogramSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.xDomain;\n }\n else {\n return this.yDomain;\n }\n };\n HistogramSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new CartesianSeriesNodeClickEvent(this.xKey, this.yKey, event, datum, this);\n };\n HistogramSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n return new CartesianSeriesNodeDoubleClickEvent(this.xKey, this.yKey, event, datum, this);\n };\n HistogramSeries.prototype.createNodeData = function () {\n return __awaiter$5(this, void 0, void 0, function () {\n var _a, xAxis, yAxis, xScale, yScale, _b, fill, stroke, strokeWidth, seriesId, yKey, xKey, nodeData, defaultLabelFormatter, _c, _d, labelFormatter, labelFontStyle, labelFontWeight, labelFontSize, labelFontFamily, labelColor;\n var _this = this;\n return __generator$5(this, function (_e) {\n _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!this.seriesItemEnabled || !xAxis || !yAxis) {\n return [2 /*return*/, []];\n }\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n _b = this, fill = _b.fill, stroke = _b.stroke, strokeWidth = _b.strokeWidth, seriesId = _b.id, yKey = _b.yKey, xKey = _b.xKey;\n nodeData = [];\n defaultLabelFormatter = function (params) { return String(params.value); };\n _c = this.label, _d = _c.formatter, labelFormatter = _d === void 0 ? defaultLabelFormatter : _d, labelFontStyle = _c.fontStyle, labelFontWeight = _c.fontWeight, labelFontSize = _c.fontSize, labelFontFamily = _c.fontFamily, labelColor = _c.color;\n this.binnedData.forEach(function (binOfData) {\n var total = binOfData.aggregatedValue, frequency = binOfData.frequency, _a = __read$v(binOfData.domain, 2), xDomainMin = _a[0], xDomainMax = _a[1], relativeHeight = binOfData.relativeHeight;\n var xMinPx = xScale.convert(xDomainMin), xMaxPx = xScale.convert(xDomainMax), \n // note: assuming can't be negative:\n y = _this.areaPlot ? relativeHeight : yKey ? total : frequency, yZeroPx = yScale.convert(0), yMaxPx = yScale.convert(y), w = xMaxPx - xMinPx, h = Math.abs(yMaxPx - yZeroPx);\n var selectionDatumLabel = y !== 0\n ? {\n text: labelFormatter({ value: binOfData.aggregatedValue, seriesId: seriesId }),\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n fill: labelColor,\n x: xMinPx + w / 2,\n y: yMaxPx + h / 2,\n }\n : undefined;\n var nodeMidPoint = {\n x: xMinPx + w / 2,\n y: yMaxPx + h / 2,\n };\n nodeData.push({\n series: _this,\n datum: binOfData,\n // since each selection is an aggregation of multiple data.\n aggregatedValue: binOfData.aggregatedValue,\n domain: binOfData.domain,\n yKey: yKey,\n xKey: xKey,\n x: xMinPx,\n y: yMaxPx,\n width: w,\n height: h,\n nodeMidPoint: nodeMidPoint,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n label: selectionDatumLabel,\n });\n });\n return [2 /*return*/, [{ itemId: this.yKey, nodeData: nodeData, labelData: nodeData }]];\n });\n });\n };\n HistogramSeries.prototype.nodeFactory = function () {\n return new Rect();\n };\n HistogramSeries.prototype.updateDatumSelection = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var nodeData, datumSelection;\n return __generator$5(this, function (_a) {\n nodeData = opts.nodeData, datumSelection = opts.datumSelection;\n return [2 /*return*/, datumSelection.update(nodeData, function (rect) {\n rect.tag = HistogramSeriesNodeTag.Bin;\n rect.crisp = true;\n })];\n });\n });\n };\n HistogramSeries.prototype.updateDatumNodes = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var datumSelection, isDatumHighlighted, _a, seriesFillOpacity, strokeOpacity, shadow, _b, highlightedFill, _c, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth;\n var _this = this;\n return __generator$5(this, function (_d) {\n datumSelection = opts.datumSelection, isDatumHighlighted = opts.isHighlight;\n _a = this, seriesFillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, shadow = _a.shadow, _b = _a.highlightStyle.item, highlightedFill = _b.fill, _c = _b.fillOpacity, highlightFillOpacity = _c === void 0 ? seriesFillOpacity : _c, highlightedStroke = _b.stroke, highlightedDatumStrokeWidth = _b.strokeWidth;\n datumSelection.each(function (rect, datum, index) {\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : datum.strokeWidth;\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : seriesFillOpacity;\n rect.x = datum.x;\n rect.y = datum.y;\n rect.width = datum.width;\n rect.height = datum.height;\n rect.fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : datum.fill;\n rect.stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : datum.stroke;\n rect.fillOpacity = fillOpacity;\n rect.strokeOpacity = strokeOpacity;\n rect.strokeWidth = strokeWidth;\n rect.lineDash = _this.lineDash;\n rect.lineDashOffset = _this.lineDashOffset;\n rect.fillShadow = shadow;\n rect.zIndex = isDatumHighlighted ? Series.highlightedZIndex : index;\n rect.visible = datum.height > 0; // prevent stroke from rendering for zero height columns\n });\n return [2 /*return*/];\n });\n });\n };\n HistogramSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var labelData, labelSelection;\n return __generator$5(this, function (_a) {\n labelData = opts.labelData, labelSelection = opts.labelSelection;\n return [2 /*return*/, labelSelection.update(labelData, function (text) {\n text.tag = HistogramSeriesNodeTag.Label;\n text.pointerEvents = PointerEvents.None;\n text.textAlign = 'center';\n text.textBaseline = 'middle';\n })];\n });\n });\n };\n HistogramSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var labelSelection, labelEnabled;\n return __generator$5(this, function (_a) {\n labelSelection = opts.labelSelection;\n labelEnabled = this.label.enabled;\n labelSelection.each(function (text, datum) {\n var label = datum.label;\n if (label && labelEnabled) {\n text.text = label.text;\n text.x = label.x;\n text.y = label.y;\n text.fontStyle = label.fontStyle;\n text.fontWeight = label.fontWeight;\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.fill = label.fill;\n text.visible = true;\n }\n else {\n text.visible = false;\n }\n });\n return [2 /*return*/];\n });\n });\n };\n HistogramSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this, xKey = _a.xKey, yKey = _a.yKey, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!xKey || !xAxis || !yAxis) {\n return '';\n }\n var _b = this, xName = _b.xName, yName = _b.yName, color = _b.fill, tooltip = _b.tooltip, aggregation = _b.aggregation, seriesId = _b.id;\n var tooltipRenderer = tooltip.renderer;\n var bin = nodeDatum.datum;\n var aggregatedValue = bin.aggregatedValue, frequency = bin.frequency, _c = __read$v(bin.domain, 2), rangeMin = _c[0], rangeMax = _c[1];\n var title = sanitizeHtml(xName || xKey) + \": \" + xAxis.formatDatum(rangeMin) + \" - \" + xAxis.formatDatum(rangeMax);\n var content = yKey\n ? \"<b>\" + sanitizeHtml(yName || yKey) + \" (\" + aggregation + \")</b>: \" + yAxis.formatDatum(aggregatedValue) + \"<br>\"\n : '';\n content += \"<b>Frequency</b>: \" + frequency;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content,\n };\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: bin,\n xKey: xKey,\n xValue: bin.domain,\n xName: xName,\n yKey: yKey,\n yValue: bin.aggregatedValue,\n yName: yName,\n color: color,\n title: title,\n seriesId: seriesId,\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n HistogramSeries.prototype.getLegendData = function () {\n var _a = this, id = _a.id, data = _a.data, xKey = _a.xKey, yName = _a.yName, visible = _a.visible, fill = _a.fill, stroke = _a.stroke, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity;\n if (!data || data.length === 0) {\n return [];\n }\n return [\n {\n id: id,\n itemId: xKey,\n seriesId: id,\n enabled: visible,\n label: {\n text: yName || xKey || 'Frequency',\n },\n marker: {\n fill: fill || 'rgba(0, 0, 0, 0)',\n stroke: stroke || 'rgba(0, 0, 0, 0)',\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity,\n },\n },\n ];\n };\n HistogramSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n HistogramSeries.className = 'HistogramSeries';\n HistogramSeries.type = 'histogram';\n __decorate$1p([\n Validate(OPT_COLOR_STRING)\n ], HistogramSeries.prototype, \"fill\", void 0);\n __decorate$1p([\n Validate(OPT_COLOR_STRING)\n ], HistogramSeries.prototype, \"stroke\", void 0);\n __decorate$1p([\n Validate(NUMBER(0, 1))\n ], HistogramSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1p([\n Validate(NUMBER(0, 1))\n ], HistogramSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1p([\n Validate(OPT_LINE_DASH)\n ], HistogramSeries.prototype, \"lineDash\", void 0);\n __decorate$1p([\n Validate(NUMBER(0))\n ], HistogramSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1p([\n Validate(STRING)\n ], HistogramSeries.prototype, \"xKey\", void 0);\n __decorate$1p([\n Validate(BOOLEAN)\n ], HistogramSeries.prototype, \"areaPlot\", void 0);\n __decorate$1p([\n Validate(OPT_ARRAY())\n ], HistogramSeries.prototype, \"bins\", void 0);\n __decorate$1p([\n Validate(HISTOGRAM_AGGREGATION)\n ], HistogramSeries.prototype, \"aggregation\", void 0);\n __decorate$1p([\n Validate(OPT_NUMBER(0))\n ], HistogramSeries.prototype, \"binCount\", void 0);\n __decorate$1p([\n Validate(STRING)\n ], HistogramSeries.prototype, \"xName\", void 0);\n __decorate$1p([\n Validate(STRING)\n ], HistogramSeries.prototype, \"yKey\", void 0);\n __decorate$1p([\n Validate(STRING)\n ], HistogramSeries.prototype, \"yName\", void 0);\n __decorate$1p([\n Validate(NUMBER(0))\n ], HistogramSeries.prototype, \"strokeWidth\", void 0);\n return HistogramSeries;\n}(CartesianSeries));\n\nvar __extends$21 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$4 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$4 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values$d = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$u = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar LineSeriesLabel = /** @class */ (function (_super) {\n __extends$21(LineSeriesLabel, _super);\n function LineSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1o([\n Validate(OPT_FUNCTION)\n ], LineSeriesLabel.prototype, \"formatter\", void 0);\n return LineSeriesLabel;\n}(Label$1));\nvar LineSeriesTooltip = /** @class */ (function (_super) {\n __extends$21(LineSeriesTooltip, _super);\n function LineSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n _this.format = undefined;\n return _this;\n }\n __decorate$1o([\n Validate(OPT_FUNCTION)\n ], LineSeriesTooltip.prototype, \"renderer\", void 0);\n __decorate$1o([\n Validate(OPT_STRING)\n ], LineSeriesTooltip.prototype, \"format\", void 0);\n return LineSeriesTooltip;\n}(SeriesTooltip));\nvar LineSeries = /** @class */ (function (_super) {\n __extends$21(LineSeries, _super);\n function LineSeries() {\n var _this = _super.call(this, {\n hasMarkers: true,\n pickModes: [\n SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST,\n SeriesNodePickMode.NEAREST_NODE,\n SeriesNodePickMode.EXACT_SHAPE_MATCH,\n ],\n }) || this;\n _this.xDomain = [];\n _this.yDomain = [];\n _this.pointsData = [];\n _this.marker = new CartesianSeriesMarker();\n _this.label = new LineSeriesLabel();\n _this.title = undefined;\n _this.stroke = '#874349';\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.strokeWidth = 2;\n _this.strokeOpacity = 1;\n _this.tooltip = new LineSeriesTooltip();\n _this._xKey = '';\n _this.xName = '';\n _this._yKey = '';\n _this.yName = '';\n var _a = _this, marker = _a.marker, label = _a.label;\n marker.fill = '#c16068';\n marker.stroke = '#874349';\n label.enabled = false;\n return _this;\n }\n Object.defineProperty(LineSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n this._xKey = value;\n this.pointsData.splice(0);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"yKey\", {\n get: function () {\n return this._yKey;\n },\n set: function (value) {\n this._yKey = value;\n this.pointsData.splice(0);\n },\n enumerable: false,\n configurable: true\n });\n LineSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.xDomain;\n }\n return this.yDomain;\n };\n LineSeries.prototype.processData = function () {\n return __awaiter$4(this, void 0, void 0, function () {\n var _a, xAxis, yAxis, xKey, yKey, pointsData, data, isContinuousX, isContinuousY, xData, yData, data_1, data_1_1, datum, x, y, xDatum, yDatum;\n var e_1, _b;\n return __generator$4(this, function (_c) {\n _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis, xKey = _a.xKey, yKey = _a.yKey, pointsData = _a.pointsData;\n data = xKey && yKey && this.data ? this.data : [];\n if (!xAxis || !yAxis) {\n return [2 /*return*/];\n }\n isContinuousX = xAxis.scale instanceof ContinuousScale;\n isContinuousY = yAxis.scale instanceof ContinuousScale;\n xData = [];\n yData = [];\n pointsData.splice(0);\n try {\n for (data_1 = __values$d(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n datum = data_1_1.value;\n x = datum[xKey];\n y = datum[yKey];\n xDatum = checkDatum(x, isContinuousX);\n if (isContinuousX && xDatum === undefined) {\n continue;\n }\n yDatum = checkDatum(y, isContinuousY);\n xData.push(xDatum);\n yData.push(yDatum);\n pointsData.push({\n xDatum: xDatum,\n yDatum: yDatum,\n datum: datum,\n });\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_b = data_1.return)) _b.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.validateXYData(this.xKey, this.yKey, data, xAxis, yAxis, xData, yData, 1);\n this.xDomain = isContinuousX ? this.fixNumericExtent(extent$4(xData), xAxis) : xData;\n this.yDomain = isContinuousY ? this.fixNumericExtent(extent$4(yData), yAxis) : yData;\n return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.createNodeData = function () {\n var _a;\n return __awaiter$4(this, void 0, void 0, function () {\n var _b, data, xAxis, yAxis, _c, markerEnabled, markerSize, strokeWidth, _d, pointsData, label, yKey, xKey, seriesId, xScale, yScale, xOffset, yOffset, nodeData, size, moveTo, prevXInRange, nextPoint, actualLength, i, point, xDatum, yDatum, datum, x, tolerance, xInRange, nextXInRange, y, labelText;\n return __generator$4(this, function (_e) {\n _b = this, data = _b.data, xAxis = _b.xAxis, yAxis = _b.yAxis, _c = _b.marker, markerEnabled = _c.enabled, markerSize = _c.size, strokeWidth = _c.strokeWidth;\n if (!data || !xAxis || !yAxis) {\n return [2 /*return*/, []];\n }\n _d = this, pointsData = _d.pointsData, label = _d.label, yKey = _d.yKey, xKey = _d.xKey, seriesId = _d.id;\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n xOffset = (xScale.bandwidth || 0) / 2;\n yOffset = (yScale.bandwidth || 0) / 2;\n nodeData = new Array(data.length);\n size = markerEnabled ? markerSize : 0;\n moveTo = true;\n prevXInRange = undefined;\n nextPoint = undefined;\n actualLength = 0;\n for (i = 0; i < pointsData.length; i++) {\n point = nextPoint || pointsData[i];\n if (point.yDatum === undefined) {\n prevXInRange = undefined;\n moveTo = true;\n }\n else {\n xDatum = point.xDatum, yDatum = point.yDatum, datum = point.datum;\n x = xScale.convert(xDatum) + xOffset;\n if (isNaN(x)) {\n prevXInRange = undefined;\n moveTo = true;\n continue;\n }\n tolerance = (xScale.bandwidth || markerSize * 0.5 + (strokeWidth || 0)) + 1;\n nextPoint = ((_a = pointsData[i + 1]) === null || _a === void 0 ? void 0 : _a.yDatum) === undefined ? undefined : pointsData[i + 1];\n xInRange = xAxis.inRangeEx(x, 0, tolerance);\n nextXInRange = nextPoint && xAxis.inRangeEx(xScale.convert(nextPoint.xDatum) + xOffset, 0, tolerance);\n if (xInRange === -1 && nextXInRange === -1) {\n moveTo = true;\n continue;\n }\n if (xInRange === 1 && prevXInRange === 1) {\n moveTo = true;\n continue;\n }\n prevXInRange = xInRange;\n y = yScale.convert(yDatum) + yOffset;\n labelText = void 0;\n if (label.formatter) {\n labelText = label.formatter({ value: yDatum, seriesId: seriesId });\n }\n else {\n labelText =\n typeof yDatum === 'number' && isFinite(yDatum)\n ? yDatum.toFixed(2)\n : yDatum\n ? String(yDatum)\n : '';\n }\n nodeData[actualLength++] = {\n series: this,\n datum: datum,\n yKey: yKey,\n xKey: xKey,\n point: { x: x, y: y, moveTo: moveTo, size: size },\n nodeMidPoint: { x: x, y: y },\n label: labelText\n ? {\n text: labelText,\n fontStyle: label.fontStyle,\n fontWeight: label.fontWeight,\n fontSize: label.fontSize,\n fontFamily: label.fontFamily,\n textAlign: 'center',\n textBaseline: 'bottom',\n fill: label.color,\n }\n : undefined,\n };\n moveTo = false;\n }\n }\n nodeData.length = actualLength;\n return [2 /*return*/, [{ itemId: yKey, nodeData: nodeData, labelData: nodeData }]];\n });\n });\n };\n LineSeries.prototype.isPathOrSelectionDirty = function () {\n return this.marker.isDirty();\n };\n LineSeries.prototype.updatePaths = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var nodeData, _a, lineNode, linePath, nodeData_1, nodeData_1_1, data;\n var e_2, _b;\n return __generator$4(this, function (_c) {\n nodeData = opts.contextData.nodeData, _a = __read$u(opts.paths, 1), lineNode = _a[0];\n linePath = lineNode.path;\n lineNode.fill = undefined;\n lineNode.lineJoin = 'round';\n lineNode.pointerEvents = PointerEvents.None;\n linePath.clear({ trackChanges: true });\n try {\n for (nodeData_1 = __values$d(nodeData), nodeData_1_1 = nodeData_1.next(); !nodeData_1_1.done; nodeData_1_1 = nodeData_1.next()) {\n data = nodeData_1_1.value;\n if (data.point.moveTo) {\n linePath.moveTo(data.point.x, data.point.y);\n }\n else {\n linePath.lineTo(data.point.x, data.point.y);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (nodeData_1_1 && !nodeData_1_1.done && (_b = nodeData_1.return)) _b.call(nodeData_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n lineNode.checkPathDirty();\n return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.updatePathNodes = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var _a, lineNode;\n return __generator$4(this, function (_b) {\n _a = __read$u(opts.paths, 1), lineNode = _a[0];\n lineNode.stroke = this.stroke;\n lineNode.strokeWidth = this.getStrokeWidth(this.strokeWidth);\n lineNode.strokeOpacity = this.strokeOpacity;\n lineNode.lineDash = this.lineDash;\n lineNode.lineDashOffset = this.lineDashOffset;\n return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.markerFactory = function () {\n var shape = this.marker.shape;\n var MarkerShape = getMarker$1(shape);\n return new MarkerShape();\n };\n LineSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var nodeData, markerSelection, _a, shape, enabled;\n return __generator$4(this, function (_b) {\n nodeData = opts.nodeData;\n markerSelection = opts.markerSelection;\n _a = this.marker, shape = _a.shape, enabled = _a.enabled;\n nodeData = shape && enabled ? nodeData : [];\n if (this.marker.isDirty()) {\n markerSelection.clear();\n }\n return [2 /*return*/, markerSelection.update(nodeData)];\n });\n });\n };\n LineSeries.prototype.updateMarkerNodes = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var markerSelection, isDatumHighlighted, _a, marker, markerFillOpacity, xKey, yKey, lineStroke, strokeOpacity, _b, highlightedFill, _c, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, seriesId, size, formatter, markerStrokeWidth, customMarker;\n return __generator$4(this, function (_d) {\n markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n _a = this, marker = _a.marker, markerFillOpacity = _a.marker.fillOpacity, xKey = _a.xKey, yKey = _a.yKey, lineStroke = _a.stroke, strokeOpacity = _a.strokeOpacity, _b = _a.highlightStyle.item, highlightedFill = _b.fill, _c = _b.fillOpacity, highlightFillOpacity = _c === void 0 ? markerFillOpacity : _c, highlightedStroke = _b.stroke, highlightedDatumStrokeWidth = _b.strokeWidth, seriesId = _a.id;\n size = marker.size, formatter = marker.formatter;\n markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : this.strokeWidth;\n customMarker = typeof marker.shape === 'function';\n markerSelection.each(function (node, datum) {\n var _a, _b;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : marker.fill;\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : marker.stroke || lineStroke;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : markerStrokeWidth;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: isDatumHighlighted,\n seriesId: seriesId,\n });\n }\n node.fill = (format && format.fill) || fill;\n node.stroke = (format && format.stroke) || stroke;\n node.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n node.strokeOpacity = (_b = (_a = marker.strokeOpacity) !== null && _a !== void 0 ? _a : strokeOpacity) !== null && _b !== void 0 ? _b : 1;\n node.size = format && format.size !== undefined ? format.size : size;\n node.translationX = datum.point.x;\n node.translationY = datum.point.y;\n node.visible = node.size > 0 && !isNaN(datum.point.x) && !isNaN(datum.point.y);\n if (!customMarker || node.dirtyPath) {\n return;\n }\n // Only for cutom marker shapes\n node.path.clear({ trackChanges: true });\n node.updatePath();\n node.checkPathDirty();\n });\n if (!isDatumHighlighted) {\n this.marker.markClean();\n }\n return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var labelData, labelSelection, _a, shape, enabled;\n return __generator$4(this, function (_b) {\n labelData = opts.labelData;\n labelSelection = opts.labelSelection;\n _a = this.marker, shape = _a.shape, enabled = _a.enabled;\n labelData = shape && enabled ? labelData : [];\n return [2 /*return*/, labelSelection.update(labelData)];\n });\n });\n };\n LineSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var labelSelection, _a, labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color;\n return __generator$4(this, function (_b) {\n labelSelection = opts.labelSelection;\n _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n labelSelection.each(function (text, datum) {\n var point = datum.point, label = datum.label;\n if (datum && label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = point.x;\n text.y = point.y - 10;\n text.fill = color;\n text.visible = true;\n }\n else {\n text.visible = false;\n }\n });\n return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new CartesianSeriesNodeClickEvent(this.xKey, this.yKey, event, datum, this);\n };\n LineSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n return new CartesianSeriesNodeDoubleClickEvent(this.xKey, this.yKey, event, datum, this);\n };\n LineSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this, xKey = _a.xKey, yKey = _a.yKey, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var _b = this, xName = _b.xName, yName = _b.yName, tooltip = _b.tooltip, marker = _b.marker, seriesId = _b.id;\n var tooltipRenderer = tooltip.renderer, tooltipFormat = tooltip.format;\n var datum = nodeDatum.datum;\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var xString = xAxis.formatDatum(xValue);\n var yString = yAxis.formatDatum(yValue);\n var title = sanitizeHtml(this.title || yName);\n var content = sanitizeHtml(xString + ': ' + yString);\n var markerFormatter = marker.formatter, fill = marker.fill, stroke = marker.stroke, markerStrokeWidth = marker.strokeWidth, size = marker.size;\n var strokeWidth = markerStrokeWidth !== undefined ? markerStrokeWidth : this.strokeWidth;\n var format = undefined;\n if (markerFormatter) {\n format = markerFormatter({\n datum: datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: false,\n seriesId: seriesId,\n });\n }\n var color = (format && format.fill) || fill;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content,\n };\n if (tooltipFormat || tooltipRenderer) {\n var params = {\n datum: datum,\n xKey: xKey,\n xValue: xValue,\n xName: xName,\n yKey: yKey,\n yValue: yValue,\n yName: yName,\n title: title,\n color: color,\n seriesId: seriesId,\n };\n if (tooltipFormat) {\n return toTooltipHtml$1({\n content: interpolate(tooltipFormat, params),\n }, defaults);\n }\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer(params), defaults);\n }\n }\n return toTooltipHtml$1(defaults);\n };\n LineSeries.prototype.getLegendData = function () {\n var _a, _b, _c;\n var _d = this, id = _d.id, data = _d.data, xKey = _d.xKey, yKey = _d.yKey, yName = _d.yName, visible = _d.visible, title = _d.title, marker = _d.marker, stroke = _d.stroke, strokeOpacity = _d.strokeOpacity;\n if (!(data && data.length && xKey && yKey)) {\n return [];\n }\n return [\n {\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: visible,\n label: {\n text: title || yName || yKey,\n },\n marker: {\n shape: marker.shape,\n fill: marker.fill || 'rgba(0, 0, 0, 0)',\n stroke: marker.stroke || stroke || 'rgba(0, 0, 0, 0)',\n fillOpacity: (_a = marker.fillOpacity) !== null && _a !== void 0 ? _a : 1,\n strokeOpacity: (_c = (_b = marker.strokeOpacity) !== null && _b !== void 0 ? _b : strokeOpacity) !== null && _c !== void 0 ? _c : 1,\n },\n },\n ];\n };\n LineSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n LineSeries.className = 'LineSeries';\n LineSeries.type = 'line';\n __decorate$1o([\n Validate(OPT_STRING)\n ], LineSeries.prototype, \"title\", void 0);\n __decorate$1o([\n Validate(OPT_COLOR_STRING)\n ], LineSeries.prototype, \"stroke\", void 0);\n __decorate$1o([\n Validate(OPT_LINE_DASH)\n ], LineSeries.prototype, \"lineDash\", void 0);\n __decorate$1o([\n Validate(NUMBER(0))\n ], LineSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1o([\n Validate(NUMBER(0))\n ], LineSeries.prototype, \"strokeWidth\", void 0);\n __decorate$1o([\n Validate(NUMBER(0, 1))\n ], LineSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1o([\n Validate(STRING)\n ], LineSeries.prototype, \"_xKey\", void 0);\n __decorate$1o([\n Validate(STRING)\n ], LineSeries.prototype, \"xName\", void 0);\n __decorate$1o([\n Validate(STRING)\n ], LineSeries.prototype, \"_yKey\", void 0);\n __decorate$1o([\n Validate(STRING)\n ], LineSeries.prototype, \"yName\", void 0);\n return LineSeries;\n}(CartesianSeries));\n\nvar __extends$20 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$w = (undefined && undefined.__assign) || function () {\n __assign$w = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$w.apply(this, arguments);\n};\nvar __decorate$1n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$3 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$3 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$t = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$g = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$t(arguments[i]));\n return ar;\n};\nvar __values$c = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar ScatterSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n __extends$20(ScatterSeriesNodeBaseClickEvent, _super);\n function ScatterSeriesNodeBaseClickEvent(sizeKey, xKey, yKey, nativeEvent, datum, series) {\n var _this = _super.call(this, xKey, yKey, nativeEvent, datum, series) || this;\n _this.sizeKey = sizeKey;\n return _this;\n }\n return ScatterSeriesNodeBaseClickEvent;\n}(CartesianSeriesNodeBaseClickEvent));\nvar ScatterSeriesNodeClickEvent = /** @class */ (function (_super) {\n __extends$20(ScatterSeriesNodeClickEvent, _super);\n function ScatterSeriesNodeClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeClick';\n return _this;\n }\n return ScatterSeriesNodeClickEvent;\n}(ScatterSeriesNodeBaseClickEvent));\nvar ScatterSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n __extends$20(ScatterSeriesNodeDoubleClickEvent, _super);\n function ScatterSeriesNodeDoubleClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeDoubleClick';\n return _this;\n }\n return ScatterSeriesNodeDoubleClickEvent;\n}(ScatterSeriesNodeBaseClickEvent));\nvar ScatterSeriesTooltip = /** @class */ (function (_super) {\n __extends$20(ScatterSeriesTooltip, _super);\n function ScatterSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1n([\n Validate(OPT_FUNCTION)\n ], ScatterSeriesTooltip.prototype, \"renderer\", void 0);\n return ScatterSeriesTooltip;\n}(SeriesTooltip));\nvar ScatterSeries = /** @class */ (function (_super) {\n __extends$20(ScatterSeries, _super);\n function ScatterSeries() {\n var _this = _super.call(this, {\n pickModes: [\n SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST,\n SeriesNodePickMode.NEAREST_NODE,\n SeriesNodePickMode.EXACT_SHAPE_MATCH,\n ],\n pathsPerSeries: 0,\n hasMarkers: true,\n }) || this;\n _this.sizeScale = new LinearScale$1();\n _this.marker = new CartesianSeriesMarker();\n _this.label = new Label$1();\n _this.title = undefined;\n _this.labelKey = undefined;\n _this.xName = '';\n _this.yName = '';\n _this.sizeName = 'Size';\n _this.labelName = 'Label';\n _this._xKey = '';\n _this._yKey = '';\n _this._sizeKey = undefined;\n _this.tooltip = new ScatterSeriesTooltip();\n var label = _this.label;\n label.enabled = false;\n return _this;\n }\n Object.defineProperty(ScatterSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n this._xKey = value;\n this.processedData = undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"yKey\", {\n get: function () {\n return this._yKey;\n },\n set: function (value) {\n this._yKey = value;\n this.processedData = undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"sizeKey\", {\n get: function () {\n return this._sizeKey;\n },\n set: function (value) {\n this._sizeKey = value;\n this.processedData = undefined;\n },\n enumerable: false,\n configurable: true\n });\n ScatterSeries.prototype.processData = function () {\n var _a, _b, _c, _d;\n return __awaiter$3(this, void 0, void 0, function () {\n var _e, xKey, yKey, sizeKey, xAxis, yAxis, marker, data, isContinuousX, isContinuousY, sizeKeyIdx, processedSize;\n return __generator$3(this, function (_f) {\n _e = this, xKey = _e.xKey, yKey = _e.yKey, sizeKey = _e.sizeKey, xAxis = _e.xAxis, yAxis = _e.yAxis, marker = _e.marker, data = _e.data;\n isContinuousX = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.scale) instanceof ContinuousScale;\n isContinuousY = (yAxis === null || yAxis === void 0 ? void 0 : yAxis.scale) instanceof ContinuousScale;\n this.dataModel = new DataModel({\n props: __spread$g([\n valueProperty(xKey, isContinuousX),\n valueProperty(yKey, isContinuousY)\n ], (sizeKey ? [valueProperty(sizeKey, true)] : [])),\n dataVisible: this.visible,\n });\n this.processedData = this.dataModel.processData(data !== null && data !== void 0 ? data : []);\n if (sizeKey) {\n sizeKeyIdx = (_b = (_a = this.dataModel.resolveProcessedDataIndex(sizeKey)) === null || _a === void 0 ? void 0 : _a.index) !== null && _b !== void 0 ? _b : -1;\n processedSize = (_d = (_c = this.processedData) === null || _c === void 0 ? void 0 : _c.domain.values[sizeKeyIdx]) !== null && _d !== void 0 ? _d : [];\n this.sizeScale.domain = marker.domain ? marker.domain : processedSize;\n }\n return [2 /*return*/];\n });\n });\n };\n ScatterSeries.prototype.getDomain = function (direction) {\n var _a, _b, _c, _d, _e, _f;\n var xDataIdx = (_a = this.dataModel) === null || _a === void 0 ? void 0 : _a.resolveProcessedDataIndex(this.xKey);\n var yDataIdx = (_b = this.dataModel) === null || _b === void 0 ? void 0 : _b.resolveProcessedDataIndex(this.yKey);\n if (!xDataIdx || !yDataIdx) {\n return [];\n }\n if (direction === ChartAxisDirection.X) {\n return (_d = (_c = this.processedData) === null || _c === void 0 ? void 0 : _c.domain.values[0]) !== null && _d !== void 0 ? _d : [];\n }\n else {\n return (_f = (_e = this.processedData) === null || _e === void 0 ? void 0 : _e.domain.values[1]) !== null && _f !== void 0 ? _f : [];\n }\n };\n ScatterSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new ScatterSeriesNodeClickEvent(this.sizeKey, this.xKey, this.yKey, event, datum, this);\n };\n ScatterSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n return new ScatterSeriesNodeDoubleClickEvent(this.sizeKey, this.xKey, this.yKey, event, datum, this);\n };\n ScatterSeries.prototype.createNodeData = function () {\n var _a, _b, _c, _d, _e, _f;\n return __awaiter$3(this, void 0, void 0, function () {\n var _g, visible, xAxis, yAxis, yKey, xKey, label, labelKey, xDataIdx, yDataIdx, xScale, yScale, xOffset, yOffset, _h, sizeScale, marker, nodeData, font, actualLength, _j, _k, _l, values, datum, x, y, text, size, markerSize;\n var e_1, _m;\n return __generator$3(this, function (_o) {\n _g = this, visible = _g.visible, xAxis = _g.xAxis, yAxis = _g.yAxis, yKey = _g.yKey, xKey = _g.xKey, label = _g.label, labelKey = _g.labelKey;\n xDataIdx = (_a = this.dataModel) === null || _a === void 0 ? void 0 : _a.resolveProcessedDataIndex(xKey);\n yDataIdx = (_b = this.dataModel) === null || _b === void 0 ? void 0 : _b.resolveProcessedDataIndex(yKey);\n if (!(xDataIdx && yDataIdx && visible && xAxis && yAxis)) {\n return [2 /*return*/, []];\n }\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n xOffset = (xScale.bandwidth || 0) / 2;\n yOffset = (yScale.bandwidth || 0) / 2;\n _h = this, sizeScale = _h.sizeScale, marker = _h.marker;\n nodeData = new Array((_d = (_c = this.processedData) === null || _c === void 0 ? void 0 : _c.data.length) !== null && _d !== void 0 ? _d : 0);\n sizeScale.range = [marker.size, marker.maxSize];\n font = label.getFont();\n actualLength = 0;\n try {\n for (_j = __values$c((_f = (_e = this.processedData) === null || _e === void 0 ? void 0 : _e.data) !== null && _f !== void 0 ? _f : []), _k = _j.next(); !_k.done; _k = _j.next()) {\n _l = _k.value, values = _l.values, datum = _l.datum;\n x = xScale.convert(values[xDataIdx.index]) + xOffset;\n y = yScale.convert(values[yDataIdx.index]) + yOffset;\n if (!this.checkRangeXY(x, y, xAxis, yAxis)) {\n continue;\n }\n text = labelKey ? String(datum[labelKey]) : '';\n size = HdpiCanvas.getTextSize(text, font);\n markerSize = values.length > 2 ? sizeScale.convert(values[2]) : marker.size;\n nodeData[actualLength++] = {\n series: this,\n itemId: yKey,\n yKey: yKey,\n xKey: xKey,\n datum: datum,\n point: { x: x, y: y, size: markerSize },\n nodeMidPoint: { x: x, y: y },\n label: __assign$w({ text: text }, size),\n };\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_k && !_k.done && (_m = _j.return)) _m.call(_j);\n }\n finally { if (e_1) throw e_1.error; }\n }\n nodeData.length = actualLength;\n return [2 /*return*/, [{ itemId: this.yKey, nodeData: nodeData, labelData: nodeData }]];\n });\n });\n };\n ScatterSeries.prototype.isPathOrSelectionDirty = function () {\n return this.marker.isDirty();\n };\n ScatterSeries.prototype.getLabelData = function () {\n var _a;\n return (_a = this.contextNodeData) === null || _a === void 0 ? void 0 : _a.reduce(function (r, n) { return r.concat(n.labelData); }, []);\n };\n ScatterSeries.prototype.markerFactory = function () {\n var shape = this.marker.shape;\n var MarkerShape = getMarker$1(shape);\n return new MarkerShape();\n };\n ScatterSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$3(this, void 0, void 0, function () {\n var nodeData, markerSelection, enabled, data;\n return __generator$3(this, function (_a) {\n nodeData = opts.nodeData, markerSelection = opts.markerSelection;\n enabled = this.marker.enabled;\n if (this.marker.isDirty()) {\n markerSelection.clear();\n }\n data = enabled ? nodeData : [];\n return [2 /*return*/, markerSelection.update(data)];\n });\n });\n };\n ScatterSeries.prototype.updateMarkerNodes = function (opts) {\n return __awaiter$3(this, void 0, void 0, function () {\n var markerSelection, isDatumHighlighted, _a, marker, xKey, yKey, sizeScale, _b, markerFillOpacity, markerStrokeOpacity, markerStrokeWidth, _c, highlightedFill, _d, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, seriesId, formatter, customMarker;\n return __generator$3(this, function (_e) {\n markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n _a = this, marker = _a.marker, xKey = _a.xKey, yKey = _a.yKey, sizeScale = _a.sizeScale, _b = _a.marker, markerFillOpacity = _b.fillOpacity, markerStrokeOpacity = _b.strokeOpacity, markerStrokeWidth = _b.strokeWidth, _c = _a.highlightStyle.item, highlightedFill = _c.fill, _d = _c.fillOpacity, highlightFillOpacity = _d === void 0 ? markerFillOpacity : _d, highlightedStroke = _c.stroke, highlightedDatumStrokeWidth = _c.strokeWidth, seriesId = _a.id;\n formatter = marker.formatter;\n sizeScale.range = [marker.size, marker.maxSize];\n customMarker = typeof marker.shape === 'function';\n markerSelection.each(function (node, datum) {\n var _a, _b, _c, _d, _e, _f, _g;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : marker.fill;\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : marker.stroke;\n var strokeOpacity = markerStrokeOpacity;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : markerStrokeWidth !== null && markerStrokeWidth !== void 0 ? markerStrokeWidth : 1;\n var size = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: isDatumHighlighted,\n seriesId: seriesId,\n });\n }\n node.fill = (format && format.fill) || fill;\n node.stroke = (format && format.stroke) || stroke;\n node.strokeWidth = (_c = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _c !== void 0 ? _c : strokeWidth;\n node.size = format && format.size !== undefined ? format.size : size;\n node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n node.strokeOpacity = strokeOpacity !== null && strokeOpacity !== void 0 ? strokeOpacity : 1;\n node.translationX = (_e = (_d = datum.point) === null || _d === void 0 ? void 0 : _d.x) !== null && _e !== void 0 ? _e : 0;\n node.translationY = (_g = (_f = datum.point) === null || _f === void 0 ? void 0 : _f.y) !== null && _g !== void 0 ? _g : 0;\n node.visible = node.size > 0;\n if (!customMarker || node.dirtyPath) {\n return;\n }\n // Only for cutom marker shapes\n node.path.clear({ trackChanges: true });\n node.updatePath();\n node.checkPathDirty();\n });\n if (!isDatumHighlighted) {\n this.marker.markClean();\n }\n return [2 /*return*/];\n });\n });\n };\n ScatterSeries.prototype.updateLabelSelection = function (opts) {\n var _a, _b;\n return __awaiter$3(this, void 0, void 0, function () {\n var labelSelection, enabled, placedLabels, placedNodeDatum;\n return __generator$3(this, function (_c) {\n labelSelection = opts.labelSelection;\n enabled = this.label.enabled;\n placedLabels = enabled ? (_b = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.placeLabels().get(this)) !== null && _b !== void 0 ? _b : [] : [];\n placedNodeDatum = placedLabels.map(function (v) { return (__assign$w(__assign$w({}, v.datum), { point: {\n x: v.x,\n y: v.y,\n size: v.datum.point.size,\n } })); });\n return [2 /*return*/, labelSelection.update(placedNodeDatum)];\n });\n });\n };\n ScatterSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$3(this, void 0, void 0, function () {\n var labelSelection, label;\n return __generator$3(this, function (_a) {\n labelSelection = opts.labelSelection;\n label = this.label;\n labelSelection.each(function (text, datum) {\n var _a, _b, _c, _d;\n text.text = datum.label.text;\n text.fill = label.color;\n text.x = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0;\n text.y = (_d = (_c = datum.point) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0;\n text.fontStyle = label.fontStyle;\n text.fontWeight = label.fontWeight;\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.textAlign = 'left';\n text.textBaseline = 'top';\n });\n return [2 /*return*/];\n });\n });\n };\n ScatterSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a, _b, _c;\n var _d = this, xKey = _d.xKey, yKey = _d.yKey, xAxis = _d.xAxis, yAxis = _d.yAxis;\n if (!xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var _e = this, marker = _e.marker, tooltip = _e.tooltip, xName = _e.xName, yName = _e.yName, sizeKey = _e.sizeKey, sizeName = _e.sizeName, labelKey = _e.labelKey, labelName = _e.labelName, seriesId = _e.id;\n var fill = marker.fill, stroke = marker.stroke;\n var strokeWidth = this.getStrokeWidth((_a = marker.strokeWidth) !== null && _a !== void 0 ? _a : 1);\n var formatter = this.marker.formatter;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: nodeDatum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: (_c = (_b = nodeDatum.point) === null || _b === void 0 ? void 0 : _b.size) !== null && _c !== void 0 ? _c : 0,\n highlighted: false,\n seriesId: seriesId,\n });\n }\n var color = (format && format.fill) || fill || 'gray';\n var title = this.title || yName;\n var datum = nodeDatum.datum;\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var xString = sanitizeHtml(xAxis.formatDatum(xValue));\n var yString = sanitizeHtml(yAxis.formatDatum(yValue));\n var content = \"<b>\" + sanitizeHtml(xName || xKey) + \"</b>: \" + xString + \"<br>\" +\n (\"<b>\" + sanitizeHtml(yName || yKey) + \"</b>: \" + yString);\n if (sizeKey) {\n content += \"<br><b>\" + sanitizeHtml(sizeName || sizeKey) + \"</b>: \" + sanitizeHtml(datum[sizeKey]);\n }\n if (labelKey) {\n content = \"<b>\" + sanitizeHtml(labelName || labelKey) + \"</b>: \" + sanitizeHtml(datum[labelKey]) + \"<br>\" + content;\n }\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content,\n };\n var tooltipRenderer = tooltip.renderer;\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: datum,\n xKey: xKey,\n xValue: xValue,\n xName: xName,\n yKey: yKey,\n yValue: yValue,\n yName: yName,\n sizeKey: sizeKey,\n sizeName: sizeName,\n labelKey: labelKey,\n labelName: labelName,\n title: title,\n color: color,\n seriesId: seriesId,\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n ScatterSeries.prototype.getLegendData = function () {\n var _a = this, id = _a.id, data = _a.data, xKey = _a.xKey, yKey = _a.yKey, yName = _a.yName, title = _a.title, visible = _a.visible, marker = _a.marker;\n var fill = marker.fill, stroke = marker.stroke, fillOpacity = marker.fillOpacity, strokeOpacity = marker.strokeOpacity;\n if (!(data && data.length && xKey && yKey)) {\n return [];\n }\n return [\n {\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: visible,\n label: {\n text: title || yName || yKey,\n },\n marker: {\n shape: marker.shape,\n fill: marker.fill || fill || 'rgba(0, 0, 0, 0)',\n stroke: marker.stroke || stroke || 'rgba(0, 0, 0, 0)',\n fillOpacity: fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1,\n strokeOpacity: strokeOpacity !== null && strokeOpacity !== void 0 ? strokeOpacity : 1,\n },\n },\n ];\n };\n ScatterSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n ScatterSeries.className = 'ScatterSeries';\n ScatterSeries.type = 'scatter';\n __decorate$1n([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"title\", void 0);\n __decorate$1n([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"labelKey\", void 0);\n __decorate$1n([\n Validate(STRING)\n ], ScatterSeries.prototype, \"xName\", void 0);\n __decorate$1n([\n Validate(STRING)\n ], ScatterSeries.prototype, \"yName\", void 0);\n __decorate$1n([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"sizeName\", void 0);\n __decorate$1n([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"labelName\", void 0);\n __decorate$1n([\n Validate(STRING)\n ], ScatterSeries.prototype, \"_xKey\", void 0);\n __decorate$1n([\n Validate(STRING)\n ], ScatterSeries.prototype, \"_yKey\", void 0);\n __decorate$1n([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"_sizeKey\", void 0);\n return ScatterSeries;\n}(CartesianSeries));\n\nfunction isPointInSector(x, y, sector) {\n var radius = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n var innerRadius = sector.innerRadius, outerRadius = sector.outerRadius;\n if (radius < Math.min(innerRadius, outerRadius) || radius > Math.max(innerRadius, outerRadius)) {\n return false;\n }\n // Start and End angles are expected to be [-90, 270]\n // while Math.atan2 returns [-180, 180]\n var angle = Math.atan2(y, x);\n if (angle < -Math.PI / 2) {\n angle += 2 * Math.PI;\n }\n // Start is actually bigger than End clock-wise\n var startAngle = sector.startAngle, endAngle = sector.endAngle;\n if (endAngle === -Math.PI / 2) {\n return angle < startAngle;\n }\n if (startAngle === (3 * Math.PI) / 2) {\n return angle > endAngle;\n }\n return angle >= endAngle && angle <= startAngle;\n}\nfunction lineCollidesSector(line, sector) {\n var startAngle = sector.startAngle, endAngle = sector.endAngle, innerRadius = sector.innerRadius, outerRadius = sector.outerRadius;\n var outerStart = { x: outerRadius * Math.cos(startAngle), y: outerRadius * Math.sin(startAngle) };\n var outerEnd = { x: outerRadius * Math.cos(endAngle), y: outerRadius * Math.sin(endAngle) };\n var innerStart = innerRadius === 0\n ? { x: 0, y: 0 }\n : { x: innerRadius * Math.cos(startAngle), y: innerRadius * Math.sin(startAngle) };\n var innerEnd = innerRadius === 0\n ? { x: 0, y: 0 }\n : { x: innerRadius * Math.cos(endAngle), y: innerRadius * Math.sin(endAngle) };\n return (segmentIntersection(line.start.x, line.start.y, line.end.x, line.end.y, outerStart.x, outerStart.y, innerStart.x, innerStart.y) != null ||\n segmentIntersection(line.start.x, line.start.y, line.end.x, line.end.y, outerEnd.x, outerEnd.y, innerEnd.x, innerEnd.y) != null ||\n arcIntersections(0, 0, outerRadius, startAngle, endAngle, true, line.start.x, line.start.y, line.end.x, line.end.y).length > 0);\n}\nfunction boxCollidesSector(box, sector) {\n var topLeft = { x: box.x, y: box.y };\n var topRight = { x: box.x + box.width, y: box.y };\n var bottomLeft = { x: box.x, y: box.y + box.height };\n var bottomRight = { x: box.x + box.width, y: box.y + box.height };\n return (lineCollidesSector({ start: topLeft, end: topRight }, sector) ||\n lineCollidesSector({ start: bottomLeft, end: bottomRight }, sector));\n}\n\nvar __extends$1$ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Sector = /** @class */ (function (_super) {\n __extends$1$(Sector, _super);\n function Sector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.centerX = 0;\n _this.centerY = 0;\n _this.innerRadius = 10;\n _this.outerRadius = 20;\n _this.startAngle = 0;\n _this.endAngle = Math.PI * 2;\n _this.angleOffset = 0;\n return _this;\n }\n Sector.prototype.computeBBox = function () {\n var radius = this.outerRadius;\n return new BBox(this.centerX - radius, this.centerY - radius, radius * 2, radius * 2);\n };\n Sector.prototype.updatePath = function () {\n var path = this.path;\n var angleOffset = this.angleOffset;\n var startAngle = Math.min(this.startAngle, this.endAngle) + angleOffset;\n var endAngle = Math.max(this.startAngle, this.endAngle) + angleOffset;\n var innerRadius = Math.min(this.innerRadius, this.outerRadius);\n var outerRadius = Math.max(this.innerRadius, this.outerRadius);\n var fullPie = isEqual$2(normalizeAngle360(this.startAngle), normalizeAngle360(this.endAngle));\n var centerX = this.centerX;\n var centerY = this.centerY;\n path.clear();\n if (fullPie) {\n path.arc(centerX, centerY, outerRadius, startAngle, endAngle);\n if (innerRadius > 0) {\n path.moveTo(centerX + innerRadius * Math.cos(endAngle), centerY + innerRadius * Math.sin(endAngle));\n path.arc(centerX, centerY, innerRadius, endAngle, startAngle, true);\n }\n }\n else {\n path.moveTo(centerX + innerRadius * Math.cos(startAngle), centerY + innerRadius * Math.sin(startAngle));\n path.arc(centerX, centerY, outerRadius, startAngle, endAngle);\n if (innerRadius > 0) {\n path.arc(centerX, centerY, innerRadius, endAngle, startAngle, true);\n }\n else {\n path.lineTo(centerX, centerY);\n }\n }\n path.closePath();\n this.dirtyPath = false;\n };\n Sector.prototype.isPointInPath = function (x, y) {\n var angleOffset = this.angleOffset;\n var startAngle = this.startAngle + angleOffset;\n var endAngle = this.endAngle + angleOffset;\n var innerRadius = Math.min(this.innerRadius, this.outerRadius);\n var outerRadius = Math.max(this.innerRadius, this.outerRadius);\n var point = this.transformPoint(x, y);\n return isPointInSector(point.x, point.y, { startAngle: startAngle, endAngle: endAngle, innerRadius: innerRadius, outerRadius: outerRadius });\n };\n Sector.className = 'Sector';\n __decorate$1m([\n ScenePathChangeDetection()\n ], Sector.prototype, \"centerX\", void 0);\n __decorate$1m([\n ScenePathChangeDetection()\n ], Sector.prototype, \"centerY\", void 0);\n __decorate$1m([\n ScenePathChangeDetection()\n ], Sector.prototype, \"innerRadius\", void 0);\n __decorate$1m([\n ScenePathChangeDetection()\n ], Sector.prototype, \"outerRadius\", void 0);\n __decorate$1m([\n ScenePathChangeDetection()\n ], Sector.prototype, \"startAngle\", void 0);\n __decorate$1m([\n ScenePathChangeDetection()\n ], Sector.prototype, \"endAngle\", void 0);\n __decorate$1m([\n ScenePathChangeDetection()\n ], Sector.prototype, \"angleOffset\", void 0);\n return Sector;\n}(Path));\n\nvar __extends$1_ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$v = (undefined && undefined.__assign) || function () {\n __assign$v = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$v.apply(this, arguments);\n};\nvar __decorate$1l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$2 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$s = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$f = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$s(arguments[i]));\n return ar;\n};\nvar PieSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n __extends$1_(PieSeriesNodeBaseClickEvent, _super);\n function PieSeriesNodeBaseClickEvent(angleKey, calloutLabelKey, sectorLabelKey, radiusKey, nativeEvent, datum, series) {\n var _this = _super.call(this, nativeEvent, datum, series) || this;\n _this.angleKey = angleKey;\n _this.calloutLabelKey = calloutLabelKey;\n _this.sectorLabelKey = sectorLabelKey;\n _this.radiusKey = radiusKey;\n return _this;\n }\n __decorate$1l([\n DeprecatedAndRenamedTo('calloutLabelKey')\n ], PieSeriesNodeBaseClickEvent.prototype, \"labelKey\", void 0);\n return PieSeriesNodeBaseClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar PieSeriesNodeClickEvent = /** @class */ (function (_super) {\n __extends$1_(PieSeriesNodeClickEvent, _super);\n function PieSeriesNodeClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeClick';\n return _this;\n }\n return PieSeriesNodeClickEvent;\n}(PieSeriesNodeBaseClickEvent));\nvar PieSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n __extends$1_(PieSeriesNodeDoubleClickEvent, _super);\n function PieSeriesNodeDoubleClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeDoubleClick';\n return _this;\n }\n return PieSeriesNodeDoubleClickEvent;\n}(PieSeriesNodeBaseClickEvent));\nvar PieNodeTag;\n(function (PieNodeTag) {\n PieNodeTag[PieNodeTag[\"Sector\"] = 0] = \"Sector\";\n PieNodeTag[PieNodeTag[\"Callout\"] = 1] = \"Callout\";\n PieNodeTag[PieNodeTag[\"Label\"] = 2] = \"Label\";\n})(PieNodeTag || (PieNodeTag = {}));\nvar PieSeriesCalloutLabel = /** @class */ (function (_super) {\n __extends$1_(PieSeriesCalloutLabel, _super);\n function PieSeriesCalloutLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.offset = 3; // from the callout line\n _this.minAngle = 0; // in degrees\n _this.formatter = undefined;\n _this.minSpacing = 4;\n _this.maxCollisionOffset = 50;\n return _this;\n }\n __decorate$1l([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLabel.prototype, \"offset\", void 0);\n __decorate$1l([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLabel.prototype, \"minAngle\", void 0);\n __decorate$1l([\n Validate(OPT_FUNCTION)\n ], PieSeriesCalloutLabel.prototype, \"formatter\", void 0);\n __decorate$1l([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLabel.prototype, \"minSpacing\", void 0);\n __decorate$1l([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLabel.prototype, \"maxCollisionOffset\", void 0);\n return PieSeriesCalloutLabel;\n}(Label$1));\nvar PieSeriesSectorLabel = /** @class */ (function (_super) {\n __extends$1_(PieSeriesSectorLabel, _super);\n function PieSeriesSectorLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.positionOffset = 0;\n _this.positionRatio = 0.5;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1l([\n Validate(NUMBER())\n ], PieSeriesSectorLabel.prototype, \"positionOffset\", void 0);\n __decorate$1l([\n Validate(NUMBER(0, 1))\n ], PieSeriesSectorLabel.prototype, \"positionRatio\", void 0);\n __decorate$1l([\n Validate(OPT_FUNCTION)\n ], PieSeriesSectorLabel.prototype, \"formatter\", void 0);\n return PieSeriesSectorLabel;\n}(Label$1));\nvar PieSeriesCalloutLine = /** @class */ (function () {\n function PieSeriesCalloutLine() {\n this.colors = undefined;\n this.length = 10;\n this.strokeWidth = 1;\n }\n __decorate$1l([\n Validate(OPT_COLOR_STRING_ARRAY)\n ], PieSeriesCalloutLine.prototype, \"colors\", void 0);\n __decorate$1l([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLine.prototype, \"length\", void 0);\n __decorate$1l([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLine.prototype, \"strokeWidth\", void 0);\n return PieSeriesCalloutLine;\n}());\nvar PieSeriesTooltip = /** @class */ (function (_super) {\n __extends$1_(PieSeriesTooltip, _super);\n function PieSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1l([\n Validate(OPT_FUNCTION)\n ], PieSeriesTooltip.prototype, \"renderer\", void 0);\n return PieSeriesTooltip;\n}(SeriesTooltip));\nvar PieTitle = /** @class */ (function (_super) {\n __extends$1_(PieTitle, _super);\n function PieTitle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.showInLegend = false;\n return _this;\n }\n __decorate$1l([\n Validate(BOOLEAN)\n ], PieTitle.prototype, \"showInLegend\", void 0);\n return PieTitle;\n}(Caption));\nvar DoughnutInnerLabel = /** @class */ (function (_super) {\n __extends$1_(DoughnutInnerLabel, _super);\n function DoughnutInnerLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.text = '';\n _this.margin = 2;\n return _this;\n }\n __decorate$1l([\n Validate(STRING)\n ], DoughnutInnerLabel.prototype, \"text\", void 0);\n __decorate$1l([\n Validate(NUMBER())\n ], DoughnutInnerLabel.prototype, \"margin\", void 0);\n return DoughnutInnerLabel;\n}(Label$1));\nvar DoughnutInnerCircle = /** @class */ (function () {\n function DoughnutInnerCircle() {\n this.fill = 'transparent';\n this.fillOpacity = 1;\n }\n __decorate$1l([\n Validate(COLOR_STRING)\n ], DoughnutInnerCircle.prototype, \"fill\", void 0);\n __decorate$1l([\n Validate(OPT_NUMBER(0, 1))\n ], DoughnutInnerCircle.prototype, \"fillOpacity\", void 0);\n return DoughnutInnerCircle;\n}());\nvar PieSeries = /** @class */ (function (_super) {\n __extends$1_(PieSeries, _super);\n function PieSeries() {\n var _this = _super.call(this, { useLabelLayer: true }) || this;\n _this.radiusScale = new LinearScale$1();\n _this.groupSelection = Selection.select(_this.contentGroup, Group);\n _this.highlightSelection = Selection.select(_this.highlightGroup, Group);\n /**\n * The processed data that gets visualized.\n */\n _this.groupSelectionData = [];\n _this.sectorFormatData = [];\n _this.angleScale = (function () {\n var scale = new LinearScale$1();\n // Each sector is a ratio of the whole, where all ratios add up to 1.\n scale.domain = [0, 1];\n // Add 90 deg to start the first pie at 12 o'clock.\n scale.range = [-Math.PI, Math.PI].map(function (angle) { return angle + Math.PI / 2; });\n return scale;\n })();\n // When a user toggles a series item (e.g. from the legend), its boolean state is recorded here.\n _this.seriesItemEnabled = [];\n _this.calloutLabel = new PieSeriesCalloutLabel();\n _this.label = _this.calloutLabel;\n _this.sectorLabel = new PieSeriesSectorLabel();\n _this.calloutLine = new PieSeriesCalloutLine();\n _this.callout = _this.calloutLine;\n _this.tooltip = new PieSeriesTooltip();\n /**\n * The key of the numeric field to use to determine the angle (for example,\n * a pie sector angle).\n */\n _this.angleKey = '';\n _this.angleName = '';\n _this.innerLabels = [];\n /**\n * The key of the numeric field to use to determine the radii of pie sectors.\n * The largest value will correspond to the full radius and smaller values to\n * proportionally smaller radii.\n */\n _this.radiusKey = undefined;\n _this.radiusName = undefined;\n _this.radiusMin = undefined;\n _this.radiusMax = undefined;\n _this.calloutLabelKey = undefined;\n _this.calloutLabelName = undefined;\n _this.labelKey = undefined;\n _this.labelName = undefined;\n _this.sectorLabelKey = undefined;\n _this.sectorLabelName = undefined;\n _this.legendItemKey = undefined;\n _this.fills = ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'];\n _this.strokes = ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'];\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.formatter = undefined;\n /**\n * The series rotation in degrees.\n */\n _this.rotation = 0;\n _this.outerRadiusOffset = 0;\n _this.outerRadiusRatio = 1;\n _this.innerRadiusOffset = 0;\n _this.innerRadiusRatio = 1;\n _this.strokeWidth = 1;\n _this.shadow = undefined;\n _this.highlightStyle = new HighlightStyle();\n _this.datumSectorRefs = new WeakMap();\n _this.backgroundGroup = _this.rootGroup.appendChild(new Group({\n name: _this.id + \"-background\",\n layer: true,\n zIndex: Layers.SERIES_BACKGROUND_ZINDEX,\n }));\n var pieCalloutLabels = new Group({ name: 'pieCalloutLabels' });\n var pieSectorLabels = new Group({ name: 'pieSectorLabels' });\n var innerLabels = new Group({ name: 'innerLabels' });\n _this.labelGroup.append(pieCalloutLabels);\n _this.labelGroup.append(pieSectorLabels);\n _this.labelGroup.append(innerLabels);\n _this.calloutLabelSelection = Selection.select(pieCalloutLabels, Group);\n _this.sectorLabelSelection = Selection.select(pieSectorLabels, Text);\n _this.innerLabelsSelection = Selection.select(innerLabels, Text);\n return _this;\n }\n Object.defineProperty(PieSeries.prototype, \"title\", {\n get: function () {\n return this._title;\n },\n set: function (value) {\n var _a, _b;\n var oldTitle = this._title;\n if (oldTitle !== value) {\n if (oldTitle) {\n (_a = this.labelGroup) === null || _a === void 0 ? void 0 : _a.removeChild(oldTitle.node);\n }\n if (value) {\n value.node.textBaseline = 'bottom';\n (_b = this.labelGroup) === null || _b === void 0 ? void 0 : _b.appendChild(value.node);\n }\n this._title = value;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (input) {\n this._data = input;\n this.processSeriesItemEnabled();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"innerCircle\", {\n get: function () {\n return this._innerCircleConfig;\n },\n set: function (value) {\n var _a;\n var oldCircleCfg = this._innerCircleConfig;\n if (oldCircleCfg !== value) {\n var oldNode = this._innerCircleNode;\n var circle = void 0;\n if (oldNode) {\n this.backgroundGroup.removeChild(oldNode);\n }\n if (value) {\n circle = new Circle();\n circle.fill = value.fill;\n circle.fillOpacity = (_a = value.fillOpacity) !== null && _a !== void 0 ? _a : 1;\n this.backgroundGroup.appendChild(circle);\n }\n this._innerCircleConfig = value;\n this._innerCircleNode = circle;\n }\n },\n enumerable: false,\n configurable: true\n });\n PieSeries.prototype.visibleChanged = function () {\n this.processSeriesItemEnabled();\n };\n PieSeries.prototype.processSeriesItemEnabled = function () {\n var _a = this, data = _a.data, visible = _a.visible;\n this.seriesItemEnabled = (data === null || data === void 0 ? void 0 : data.map(function () { return visible; })) || [];\n };\n PieSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.angleScale.domain;\n }\n else {\n return this.radiusScale.domain;\n }\n };\n PieSeries.prototype.processData = function () {\n return __awaiter$2(this, void 0, void 0, function () {\n var _a, angleKey, radiusKey, seriesItemEnabled, angleScale, groupSelectionData, sectorFormatData, calloutLabel, sectorLabel, seriesId, data, angleData, angleDataTotal, angleDataRatios, labelFormatter, labelKey, sectorLabelKey, labelData, sectorLabelData, radiusData, getLabelFormatterParams, showValueDeprecationWarning_1, sectorLabelFormatter, _b, radiusMin, radiusMax, radii, min_1, max, delta_1, rotation, halfPi, datumIndex, quadrantTextOpts, end;\n var _this = this;\n return __generator$2(this, function (_c) {\n _a = this, angleKey = _a.angleKey, radiusKey = _a.radiusKey, seriesItemEnabled = _a.seriesItemEnabled, angleScale = _a.angleScale, groupSelectionData = _a.groupSelectionData, sectorFormatData = _a.sectorFormatData, calloutLabel = _a.calloutLabel, sectorLabel = _a.sectorLabel, seriesId = _a.id;\n data = angleKey && this.data ? this.data : [];\n angleData = data.map(function (datum, index) { return (seriesItemEnabled[index] && Math.abs(+datum[angleKey])) || 0; });\n angleDataTotal = angleData.reduce(function (a, b) { return a + b; }, 0);\n angleDataRatios = (function () {\n var sum = 0;\n return angleData.map(function (datum) { return (sum += datum / angleDataTotal); });\n })();\n labelFormatter = calloutLabel.formatter;\n labelKey = calloutLabel.enabled ? this.calloutLabelKey : undefined;\n sectorLabelKey = sectorLabel.enabled ? this.sectorLabelKey : undefined;\n labelData = [];\n sectorLabelData = [];\n radiusData = [];\n getLabelFormatterParams = function (datum) {\n return {\n datum: datum,\n angleKey: angleKey,\n angleValue: datum[angleKey],\n angleName: _this.angleName,\n radiusKey: radiusKey,\n radiusValue: radiusKey ? datum[radiusKey] : undefined,\n radiusName: _this.radiusName,\n labelKey: labelKey,\n labelValue: labelKey ? datum[labelKey] : undefined,\n labelName: _this.calloutLabelName,\n calloutLabelKey: labelKey,\n calloutLabelValue: labelKey ? datum[labelKey] : undefined,\n calloutLabelName: _this.calloutLabelName,\n sectorLabelKey: sectorLabelKey,\n sectorLabelValue: sectorLabelKey ? datum[sectorLabelKey] : undefined,\n sectorLabelName: _this.sectorLabelName,\n seriesId: seriesId,\n };\n };\n if (labelKey) {\n if (labelFormatter) {\n showValueDeprecationWarning_1 = function () {\n return Logger.warnOnce('the use of { value } in the pie chart label formatter function is deprecated. Please use { datum, labelKey, ... } instead.');\n };\n labelData = data.map(function (datum) {\n var deprecatedValue = datum[labelKey];\n var formatterParams = __assign$v(__assign$v({}, getLabelFormatterParams(datum)), { get value() {\n showValueDeprecationWarning_1();\n return deprecatedValue;\n },\n set value(v) {\n showValueDeprecationWarning_1();\n deprecatedValue = v;\n } });\n return labelFormatter(formatterParams);\n });\n }\n else {\n labelData = data.map(function (datum) { return String(datum[labelKey]); });\n }\n }\n sectorLabelFormatter = sectorLabel.formatter;\n if (sectorLabelKey) {\n if (sectorLabelFormatter) {\n sectorLabelData = data.map(function (datum) {\n var formatterParams = getLabelFormatterParams(datum);\n return sectorLabelFormatter(formatterParams);\n });\n }\n else {\n sectorLabelData = data.map(function (datum) { return String(datum[sectorLabelKey]); });\n }\n }\n if (radiusKey) {\n _b = this, radiusMin = _b.radiusMin, radiusMax = _b.radiusMax;\n radii = data.map(function (datum) { return Math.abs(datum[radiusKey]); });\n min_1 = radiusMin !== null && radiusMin !== void 0 ? radiusMin : 0;\n max = radiusMax ? radiusMax : Math.max.apply(Math, __spread$f(radii));\n delta_1 = max - min_1;\n radiusData = radii.map(function (value) { return (delta_1 ? (value - min_1) / delta_1 : 1); });\n }\n groupSelectionData.length = 0;\n sectorFormatData.length = 0;\n sectorFormatData.push.apply(sectorFormatData, __spread$f(data.map(function (datum, datumIdx) { return _this.getSectorFormat(datum, datumIdx, datumIdx, false); })));\n rotation = toRadians$1(this.rotation);\n halfPi = Math.PI / 2;\n datumIndex = 0;\n quadrantTextOpts = [\n { textAlign: 'center', textBaseline: 'bottom' },\n { textAlign: 'left', textBaseline: 'middle' },\n { textAlign: 'center', textBaseline: 'hanging' },\n { textAlign: 'right', textBaseline: 'middle' },\n ];\n end = 0;\n angleDataRatios.forEach(function (start) {\n if (isNaN(start)) {\n return;\n } // No sectors displayed - nothing to do.\n var radius = radiusKey ? radiusData[datumIndex] : 1;\n var startAngle = angleScale.convert(start) + rotation;\n var endAngle = angleScale.convert(end) + rotation;\n var midAngle = (startAngle + endAngle) / 2;\n var span = Math.abs(endAngle - startAngle);\n var midCos = Math.cos(midAngle);\n var midSin = Math.sin(midAngle);\n var labelMinAngle = toRadians$1(calloutLabel.minAngle);\n var labelVisible = labelKey && span > labelMinAngle;\n var midAngle180 = normalizeAngle180(midAngle);\n // Split the circle into quadrants like so: ⊗\n var quadrantStart = (-3 * Math.PI) / 4; // same as `normalizeAngle180(toRadians(-135))`\n var quadrantOffset = midAngle180 - quadrantStart;\n var quadrant = Math.floor(quadrantOffset / halfPi);\n var quadrantIndex = mod(quadrant, quadrantTextOpts.length);\n var _a = quadrantTextOpts[quadrantIndex], textAlign = _a.textAlign, textBaseline = _a.textBaseline;\n var datum = data[datumIndex];\n var itemId = datumIndex;\n groupSelectionData.push({\n series: _this,\n datum: datum,\n itemId: itemId,\n index: datumIndex,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle,\n midAngle: midAngle,\n midCos: midCos,\n midSin: midSin,\n calloutLabel: labelVisible\n ? {\n text: labelData[datumIndex],\n textAlign: textAlign,\n textBaseline: textBaseline,\n hidden: false,\n collisionTextAlign: undefined,\n collisionOffsetY: 0,\n box: undefined,\n }\n : undefined,\n sectorLabel: sectorLabelKey\n ? {\n text: sectorLabelData[datumIndex],\n }\n : undefined,\n sectorFormat: sectorFormatData[datumIndex],\n });\n datumIndex++;\n end = start; // Update for next iteration.\n });\n return [2 /*return*/];\n });\n });\n };\n PieSeries.prototype.getSectorFormat = function (datum, itemId, index, highlight) {\n var _a, _b, _c, _d, _e;\n var _f = this, angleKey = _f.angleKey, radiusKey = _f.radiusKey, fills = _f.fills, strokes = _f.strokes, seriesFillOpacity = _f.fillOpacity, formatter = _f.formatter, seriesId = _f.id;\n var highlightedDatum = (_a = this.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n var isDatumHighlighted = highlight && (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.series) === this && itemId === highlightedDatum.itemId;\n var highlightedStyle = isDatumHighlighted ? this.highlightStyle.item : null;\n var fill = (highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.fill) || fills[index % fills.length];\n var fillOpacity = (_b = highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.fillOpacity) !== null && _b !== void 0 ? _b : seriesFillOpacity;\n var stroke = (highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.stroke) || strokes[index % strokes.length];\n var strokeWidth = (_c = highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.strokeWidth) !== null && _c !== void 0 ? _c : this.getStrokeWidth(this.strokeWidth);\n var format;\n if (formatter) {\n format = formatter({\n datum: datum,\n angleKey: angleKey,\n radiusKey: radiusKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n highlighted: isDatumHighlighted,\n seriesId: seriesId,\n });\n }\n return {\n fill: (format === null || format === void 0 ? void 0 : format.fill) || fill,\n fillOpacity: (_d = format === null || format === void 0 ? void 0 : format.fillOpacity) !== null && _d !== void 0 ? _d : fillOpacity,\n stroke: (format === null || format === void 0 ? void 0 : format.stroke) || stroke,\n strokeWidth: (_e = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _e !== void 0 ? _e : strokeWidth,\n };\n };\n PieSeries.prototype.createNodeData = function () {\n return __awaiter$2(this, void 0, void 0, function () {\n return __generator$2(this, function (_a) {\n return [2 /*return*/, []];\n });\n });\n };\n PieSeries.prototype.getInnerRadius = function () {\n var _a = this, radius = _a.radius, innerRadiusRatio = _a.innerRadiusRatio, innerRadiusOffset = _a.innerRadiusOffset;\n var innerRadius = radius * (innerRadiusRatio !== null && innerRadiusRatio !== void 0 ? innerRadiusRatio : 1) + (innerRadiusOffset ? innerRadiusOffset : 0);\n if (innerRadius === radius || innerRadius < 0) {\n return 0;\n }\n return innerRadius;\n };\n PieSeries.prototype.getOuterRadius = function () {\n var _a = this, radius = _a.radius, outerRadiusRatio = _a.outerRadiusRatio, outerRadiusOffset = _a.outerRadiusOffset;\n var outerRadius = radius * (outerRadiusRatio !== null && outerRadiusRatio !== void 0 ? outerRadiusRatio : 1) + (outerRadiusOffset ? outerRadiusOffset : 0);\n if (outerRadius < 0) {\n return 0;\n }\n return outerRadius;\n };\n PieSeries.prototype.updateRadiusScale = function () {\n var innerRadius = this.getInnerRadius();\n var outerRadius = this.getOuterRadius();\n this.radiusScale.range = [innerRadius, outerRadius];\n };\n PieSeries.prototype.getTitleTranslationY = function () {\n var _a, _b;\n var outerRadius = Math.max(0, this.radiusScale.range[1]);\n if (outerRadius === 0) {\n return NaN;\n }\n var spacing = (_b = (_a = this.title) === null || _a === void 0 ? void 0 : _a.spacing) !== null && _b !== void 0 ? _b : 0;\n var titleOffset = 2 + spacing;\n var minLabelY = Math.min.apply(Math, __spread$f([0], this.groupSelectionData.map(function (d) { var _a, _b; return ((_b = (_a = d.calloutLabel) === null || _a === void 0 ? void 0 : _a.box) === null || _b === void 0 ? void 0 : _b.y) || 0; })));\n var dy = Math.max(0, -outerRadius - minLabelY);\n return -outerRadius - titleOffset - dy;\n };\n PieSeries.prototype.update = function () {\n return __awaiter$2(this, void 0, void 0, function () {\n var title, dy;\n return __generator$2(this, function (_a) {\n switch (_a.label) {\n case 0:\n title = this.title;\n this.updateRadiusScale();\n this.rootGroup.translationX = this.centerX;\n this.rootGroup.translationY = this.centerY;\n if (title) {\n dy = this.getTitleTranslationY();\n if (isFinite(dy)) {\n title.node.visible = title.enabled;\n title.node.translationY = dy;\n }\n else {\n title.node.visible = false;\n }\n }\n this.updateNodeMidPoint();\n return [4 /*yield*/, this.updateSelections()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.updateNodes()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PieSeries.prototype.updateNodeMidPoint = function () {\n var _this = this;\n this.groupSelectionData.forEach(function (d) {\n var radius = _this.radiusScale.convert(d.radius);\n d.nodeMidPoint = {\n x: d.midCos * Math.max(0, radius / 2),\n y: d.midSin * Math.max(0, radius / 2),\n };\n });\n };\n PieSeries.prototype.updateSelections = function () {\n return __awaiter$2(this, void 0, void 0, function () {\n return __generator$2(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.updateGroupSelection()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PieSeries.prototype.updateGroupSelection = function () {\n return __awaiter$2(this, void 0, void 0, function () {\n var _a, groupSelection, highlightSelection, calloutLabelSelection, sectorLabelSelection, innerLabelsSelection, update;\n var _this = this;\n return __generator$2(this, function (_b) {\n _a = this, groupSelection = _a.groupSelection, highlightSelection = _a.highlightSelection, calloutLabelSelection = _a.calloutLabelSelection, sectorLabelSelection = _a.sectorLabelSelection, innerLabelsSelection = _a.innerLabelsSelection;\n update = function (selection) {\n return selection.update(_this.groupSelectionData, function (group) {\n var sector = new Sector();\n sector.tag = PieNodeTag.Sector;\n group.appendChild(sector);\n });\n };\n this.groupSelection = update(groupSelection);\n this.highlightSelection = update(highlightSelection);\n calloutLabelSelection.update(this.groupSelectionData, function (group) {\n var line = new Line();\n line.tag = PieNodeTag.Callout;\n line.pointerEvents = PointerEvents.None;\n group.appendChild(line);\n var text = new Text();\n text.tag = PieNodeTag.Label;\n text.pointerEvents = PointerEvents.None;\n group.appendChild(text);\n });\n sectorLabelSelection.update(this.groupSelectionData, function (node) {\n node.pointerEvents = PointerEvents.None;\n });\n innerLabelsSelection.update(this.innerLabels, function (node) {\n node.pointerEvents = PointerEvents.None;\n });\n return [2 /*return*/];\n });\n });\n };\n PieSeries.prototype.updateNodes = function () {\n var _a;\n return __awaiter$2(this, void 0, void 0, function () {\n var highlightedDatum, isVisible, radiusScale, innerRadius, updateSectorFn;\n var _this = this;\n return __generator$2(this, function (_b) {\n highlightedDatum = (_a = this.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n isVisible = this.seriesItemEnabled.indexOf(true) >= 0;\n this.rootGroup.visible = isVisible;\n this.backgroundGroup.visible = isVisible;\n this.contentGroup.visible = isVisible;\n this.highlightGroup.visible = isVisible && (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.series) === this;\n this.labelGroup.visible = isVisible;\n this.contentGroup.opacity = this.getOpacity();\n this.updateInnerCircle();\n radiusScale = this.radiusScale;\n innerRadius = radiusScale.convert(0);\n updateSectorFn = function (sector, datum, index, isDatumHighlighted) {\n var radius = radiusScale.convert(datum.radius);\n // Bring highlighted sector's parent group to front.\n var sectorParent = sector.parent;\n var sectorGrandParent = sectorParent === null || sectorParent === void 0 ? void 0 : sectorParent.parent;\n if (isDatumHighlighted && sectorParent && sectorGrandParent) {\n sectorGrandParent.removeChild(sectorParent);\n sectorGrandParent.appendChild(sectorParent);\n }\n sector.innerRadius = Math.max(0, innerRadius);\n sector.outerRadius = Math.max(0, radius);\n sector.startAngle = datum.startAngle;\n sector.endAngle = datum.endAngle;\n var format = _this.getSectorFormat(datum.datum, datum.itemId, index, isDatumHighlighted);\n sector.fill = format.fill;\n sector.stroke = format.stroke;\n sector.strokeWidth = format.strokeWidth;\n sector.fillOpacity = format.fillOpacity;\n sector.strokeOpacity = _this.strokeOpacity;\n sector.lineDash = _this.lineDash;\n sector.lineDashOffset = _this.lineDashOffset;\n sector.fillShadow = _this.shadow;\n sector.lineJoin = 'round';\n sector.visible = _this.seriesItemEnabled[index];\n _this.datumSectorRefs.set(datum, sector);\n };\n this.groupSelection\n .selectByTag(PieNodeTag.Sector)\n .forEach(function (node, index) { return updateSectorFn(node, node.datum, index, false); });\n this.highlightSelection.selectByTag(PieNodeTag.Sector).forEach(function (node, index) {\n var isDatumHighlighted = (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.series) === _this && node.datum.itemId === highlightedDatum.itemId;\n node.visible = isDatumHighlighted;\n if (node.visible) {\n updateSectorFn(node, node.datum, index, isDatumHighlighted);\n }\n });\n this.updateCalloutLineNodes();\n this.updateCalloutLabelNodes();\n this.updateSectorLabelNodes();\n this.updateInnerLabelNodes();\n return [2 /*return*/];\n });\n });\n };\n PieSeries.prototype.updateCalloutLineNodes = function () {\n var _a = this, radiusScale = _a.radiusScale, calloutLine = _a.calloutLine;\n var calloutLength = calloutLine.length;\n var calloutStrokeWidth = calloutLine.strokeWidth;\n var calloutColors = calloutLine.colors || this.strokes;\n var offset = this.calloutLabel.offset;\n this.calloutLabelSelection.selectByTag(PieNodeTag.Callout).forEach(function (line, index) {\n var datum = line.datum;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n var label = datum.calloutLabel;\n if (label && label.text && !label.hidden && outerRadius !== 0) {\n line.visible = true;\n line.strokeWidth = calloutStrokeWidth;\n line.stroke = calloutColors[index % calloutColors.length];\n line.fill = undefined;\n var x1 = datum.midCos * outerRadius;\n var y1 = datum.midSin * outerRadius;\n var x2 = datum.midCos * (outerRadius + calloutLength);\n var y2 = datum.midSin * (outerRadius + calloutLength);\n if (label.collisionTextAlign || label.collisionOffsetY !== 0) {\n // Get the closest point to the text bounding box\n var box = label.box;\n var cx = x2 < box.x ? box.x : x2 > box.x + box.width ? box.x + box.width : x2;\n var cy = y2 < box.y ? box.y : y2 > box.y + box.height ? box.y + box.height : y2;\n // Apply label offset\n var dx = cx - x2;\n var dy = cy - y2;\n var length_1 = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n var paddedLength = length_1 - offset;\n if (paddedLength > 0) {\n x2 = x2 + (dx * paddedLength) / length_1;\n y2 = y2 + (dy * paddedLength) / length_1;\n }\n }\n line.x1 = x1;\n line.y1 = y1;\n line.x2 = x2;\n line.y2 = y2;\n }\n else {\n line.visible = false;\n }\n });\n };\n PieSeries.prototype.getLabelOverflow = function (text, box) {\n var seriesBox = this.chart.getSeriesRect();\n var seriesLeft = seriesBox.x - this.centerX;\n var seriesRight = seriesBox.x + seriesBox.width - this.centerX;\n var seriesTop = seriesBox.y - this.centerY;\n var seriesBottom = seriesBox.y + seriesBox.height - this.centerY;\n var errPx = 1; // Prevents errors related to floating point calculations\n var visibleTextPart = 1;\n if (box.x + errPx < seriesLeft) {\n visibleTextPart = (box.x + box.width - seriesLeft) / box.width;\n }\n else if (box.x + box.width - errPx > seriesRight) {\n visibleTextPart = (seriesRight - box.x) / box.width;\n }\n var hasVerticalOverflow = box.y + errPx < seriesTop || box.y + box.height - errPx > seriesBottom;\n var textLength = Math.floor(text.length * visibleTextPart) - 1;\n return { visibleTextPart: visibleTextPart, textLength: textLength, hasVerticalOverflow: hasVerticalOverflow };\n };\n PieSeries.prototype.computeCalloutLabelCollisionOffsets = function () {\n var _this = this;\n var _a = this, radiusScale = _a.radiusScale, calloutLabel = _a.calloutLabel, calloutLine = _a.calloutLine;\n var offset = calloutLabel.offset, minSpacing = calloutLabel.minSpacing;\n var innerRadius = radiusScale.convert(0);\n var shouldSkip = function (datum) {\n var label = datum.calloutLabel;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n return !label || outerRadius === 0;\n };\n var fullData = this.groupSelectionData;\n var data = this.groupSelectionData.filter(function (text) { return !shouldSkip(text); });\n data.forEach(function (datum) {\n var label = datum.calloutLabel;\n label.hidden = false;\n label.collisionTextAlign = undefined;\n label.collisionOffsetY = 0;\n });\n if (data.length <= 1) {\n return;\n }\n var leftLabels = data.filter(function (d) { return d.midCos < 0; }).sort(function (a, b) { return a.midSin - b.midSin; });\n var rightLabels = data.filter(function (d) { return d.midCos >= 0; }).sort(function (a, b) { return a.midSin - b.midSin; });\n var topLabels = data\n .filter(function (d) { return d.midSin < 0 && d.calloutLabel.textAlign === 'center'; })\n .sort(function (a, b) { return a.midCos - b.midCos; });\n var bottomLabels = data\n .filter(function (d) { return d.midSin >= 0 && d.calloutLabel.textAlign === 'center'; })\n .sort(function (a, b) { return a.midCos - b.midCos; });\n var tempTextNode = new Text();\n var getTextBBox = function (datum) {\n var label = datum.calloutLabel;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n var labelRadius = outerRadius + calloutLine.length + offset;\n var x = datum.midCos * labelRadius;\n var y = datum.midSin * labelRadius + label.collisionOffsetY;\n _this.setTextDimensionalProps(tempTextNode, x, y, _this.calloutLabel, label);\n return tempTextNode.computeBBox();\n };\n var avoidNeighbourYCollision = function (label, next, direction) {\n var box = getTextBBox(label).grow(minSpacing / 2);\n var other = getTextBBox(next).grow(minSpacing / 2);\n // The full collision is not detected, because sometimes\n // the next label can appear behind the label with offset\n var collidesOrBehind = box.x < other.x + other.width &&\n box.x + box.width > other.x &&\n (direction === 'to-top' ? box.y < other.y + other.height : box.y + box.height > other.y);\n if (collidesOrBehind) {\n var dy = direction === 'to-top' ? box.y - other.y - other.height : box.y + box.height - other.y;\n next.calloutLabel.collisionOffsetY = dy;\n }\n };\n var avoidYCollisions = function (labels) {\n var midLabel = labels.slice().sort(function (a, b) { return Math.abs(a.midSin) - Math.abs(b.midSin); })[0];\n var midIndex = labels.indexOf(midLabel);\n for (var i = midIndex - 1; i >= 0; i--) {\n var prev = labels[i + 1];\n var next = labels[i];\n avoidNeighbourYCollision(prev, next, 'to-top');\n }\n for (var i = midIndex + 1; i < labels.length; i++) {\n var prev = labels[i - 1];\n var next = labels[i];\n avoidNeighbourYCollision(prev, next, 'to-bottom');\n }\n };\n var avoidXCollisions = function (labels) {\n var labelsCollideLabelsByY = data.some(function (datum) { return datum.calloutLabel.collisionOffsetY !== 0; });\n var boxes = labels.map(function (label) { return getTextBBox(label); });\n var paddedBoxes = boxes.map(function (box) { return box.clone().grow(minSpacing / 2); });\n var labelsCollideLabelsByX = false;\n loop: for (var i = 0; i < paddedBoxes.length; i++) {\n var box = paddedBoxes[i];\n for (var j = i + 1; j < labels.length; j++) {\n var other = paddedBoxes[j];\n if (box.collidesBBox(other)) {\n labelsCollideLabelsByX = true;\n break loop;\n }\n }\n }\n var sectors = fullData.map(function (datum) {\n var startAngle = datum.startAngle, endAngle = datum.endAngle;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n return { startAngle: startAngle, endAngle: endAngle, innerRadius: innerRadius, outerRadius: outerRadius };\n });\n var labelsCollideSectors = boxes.some(function (box) {\n return sectors.some(function (sector) { return boxCollidesSector(box, sector); });\n });\n if (!labelsCollideLabelsByX && !labelsCollideLabelsByY && !labelsCollideSectors) {\n return;\n }\n labels\n .filter(function (datum) { return datum.calloutLabel.textAlign === 'center'; })\n .forEach(function (datum) {\n var label = datum.calloutLabel;\n label.collisionTextAlign = datum.midCos < 0 ? 'right' : datum.midCos > 0 ? 'left' : 'center';\n });\n };\n avoidYCollisions(leftLabels);\n avoidYCollisions(rightLabels);\n avoidXCollisions(topLabels);\n avoidXCollisions(bottomLabels);\n };\n PieSeries.prototype.updateCalloutLabelNodes = function () {\n var _this = this;\n var _a = this, radiusScale = _a.radiusScale, calloutLabel = _a.calloutLabel, calloutLine = _a.calloutLine;\n var calloutLength = calloutLine.length;\n var offset = calloutLabel.offset, color = calloutLabel.color;\n var tempTextNode = new Text();\n this.calloutLabelSelection.selectByTag(PieNodeTag.Label).forEach(function (text) {\n var datum = text.datum;\n var label = datum.calloutLabel;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n if (!label || !label.text || outerRadius === 0 || label.hidden) {\n text.visible = false;\n return;\n }\n var labelRadius = outerRadius + calloutLength + offset;\n var x = datum.midCos * labelRadius;\n var y = datum.midSin * labelRadius + label.collisionOffsetY;\n // Detect text overflow\n _this.setTextDimensionalProps(tempTextNode, x, y, _this.calloutLabel, label);\n var box = tempTextNode.computeBBox();\n var _a = _this.getLabelOverflow(label.text, box), visibleTextPart = _a.visibleTextPart, textLength = _a.textLength, hasVerticalOverflow = _a.hasVerticalOverflow;\n var displayText = visibleTextPart === 1 ? label.text : label.text.substring(0, textLength) + \"\\u2026\";\n _this.setTextDimensionalProps(text, x, y, _this.calloutLabel, __assign$v(__assign$v({}, label), { text: displayText }));\n text.fill = color;\n text.visible = !hasVerticalOverflow;\n });\n };\n PieSeries.prototype.computeLabelsBBox = function (options) {\n var _this = this;\n var _a = this, radiusScale = _a.radiusScale, calloutLabel = _a.calloutLabel, calloutLine = _a.calloutLine;\n var calloutLength = calloutLine.length;\n var offset = calloutLabel.offset, maxCollisionOffset = calloutLabel.maxCollisionOffset;\n this.updateRadiusScale();\n this.computeCalloutLabelCollisionOffsets();\n var text = new Text();\n var textBoxes = this.groupSelectionData\n .map(function (datum) {\n var label = datum.calloutLabel;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n if (!label || outerRadius === 0) {\n return null;\n }\n var labelRadius = outerRadius + calloutLength + offset;\n var x = datum.midCos * labelRadius;\n var y = datum.midSin * labelRadius + label.collisionOffsetY;\n _this.setTextDimensionalProps(text, x, y, _this.calloutLabel, label);\n var box = text.computeBBox();\n label.box = box;\n if (Math.abs(label.collisionOffsetY) > maxCollisionOffset) {\n label.hidden = true;\n return null;\n }\n if (options.hideWhenNecessary) {\n var _a = _this.getLabelOverflow(label.text, box), textLength = _a.textLength, hasVerticalOverflow = _a.hasVerticalOverflow;\n var isTooShort = label.text.length > 2 && textLength < 2;\n if (hasVerticalOverflow || isTooShort) {\n label.hidden = true;\n return null;\n }\n }\n label.hidden = false;\n return box;\n })\n .filter(function (box) { return box != null; });\n if (this.title && this.title.text) {\n var dy = this.getTitleTranslationY();\n if (isFinite(dy)) {\n this.setTextDimensionalProps(text, 0, dy, this.title, {\n text: this.title.text,\n textBaseline: 'bottom',\n textAlign: 'center',\n hidden: false,\n collisionTextAlign: undefined,\n collisionOffsetY: 0,\n });\n var box = text.computeBBox();\n textBoxes.push(box);\n }\n }\n if (textBoxes.length === 0) {\n return null;\n }\n return BBox.merge(textBoxes);\n };\n PieSeries.prototype.setTextDimensionalProps = function (textNode, x, y, style, label) {\n var fontStyle = style.fontStyle, fontWeight = style.fontWeight, fontSize = style.fontSize, fontFamily = style.fontFamily;\n textNode.fontStyle = fontStyle;\n textNode.fontWeight = fontWeight;\n textNode.fontSize = fontSize;\n textNode.fontFamily = fontFamily;\n textNode.text = label.text;\n textNode.x = x;\n textNode.y = y;\n textNode.textAlign = label.collisionTextAlign || label.textAlign;\n textNode.textBaseline = label.textBaseline;\n };\n PieSeries.prototype.updateSectorLabelNodes = function () {\n var _this = this;\n var radiusScale = this.radiusScale;\n var innerRadius = radiusScale.convert(0);\n var _a = this.sectorLabel, fontSize = _a.fontSize, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontFamily = _a.fontFamily, positionOffset = _a.positionOffset, positionRatio = _a.positionRatio, color = _a.color;\n var isDoughnut = innerRadius > 0;\n var singleVisibleSector = this.seriesItemEnabled.filter(Boolean).length === 1;\n this.sectorLabelSelection.each(function (text, datum) {\n var sectorLabel = datum.sectorLabel;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n var isTextVisible = false;\n if (sectorLabel && outerRadius !== 0) {\n var labelRadius = innerRadius * (1 - positionRatio) + radius * positionRatio + positionOffset;\n text.fill = color;\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.text = sectorLabel.text;\n var shouldPutTextInCenter = !isDoughnut && singleVisibleSector;\n if (shouldPutTextInCenter) {\n text.x = 0;\n text.y = 0;\n }\n else {\n text.x = datum.midCos * labelRadius;\n text.y = datum.midSin * labelRadius;\n }\n text.textAlign = 'center';\n text.textBaseline = 'middle';\n var sector = _this.datumSectorRefs.get(datum);\n if (sector) {\n var bbox = text.computeBBox();\n var corners = [\n [bbox.x, bbox.y],\n [bbox.x + bbox.width, bbox.y],\n [bbox.x + bbox.width, bbox.y + bbox.height],\n [bbox.x, bbox.y + bbox.height],\n ];\n var startAngle = datum.startAngle, endAngle = datum.endAngle;\n var sectorBounds_1 = { startAngle: startAngle, endAngle: endAngle, innerRadius: innerRadius, outerRadius: outerRadius };\n if (corners.every(function (_a) {\n var _b = __read$s(_a, 2), x = _b[0], y = _b[1];\n return isPointInSector(x, y, sectorBounds_1);\n })) {\n isTextVisible = true;\n }\n }\n }\n text.visible = isTextVisible;\n });\n };\n PieSeries.prototype.updateInnerCircle = function () {\n var circle = this._innerCircleNode;\n if (!circle) {\n return;\n }\n var innerRadius = this.getInnerRadius();\n if (innerRadius === 0) {\n circle.size = 0;\n }\n else {\n var circleRadius = Math.min(innerRadius, this.getOuterRadius());\n var antiAliasingPadding = 1;\n circle.size = Math.ceil(circleRadius * 2 + antiAliasingPadding);\n }\n };\n PieSeries.prototype.updateInnerLabelNodes = function () {\n var textBBoxes = [];\n var margins = [];\n this.innerLabelsSelection.each(function (text, datum) {\n var fontStyle = datum.fontStyle, fontWeight = datum.fontWeight, fontSize = datum.fontSize, fontFamily = datum.fontFamily, color = datum.color;\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.text = datum.text;\n text.x = 0;\n text.y = 0;\n text.fill = color;\n text.textAlign = 'center';\n text.textBaseline = 'alphabetic';\n textBBoxes.push(text.computeBBox());\n margins.push(datum.margin);\n });\n var getMarginTop = function (index) { return (index === 0 ? 0 : margins[index]); };\n var getMarginBottom = function (index) { return (index === margins.length - 1 ? 0 : margins[index]); };\n var totalHeight = textBBoxes.reduce(function (sum, bbox, i) {\n return sum + bbox.height + getMarginTop(i) + getMarginBottom(i);\n }, 0);\n var totalWidth = Math.max.apply(Math, __spread$f(textBBoxes.map(function (bbox) { return bbox.width; })));\n var innerRadius = this.getInnerRadius();\n var labelRadius = Math.sqrt(Math.pow(totalWidth / 2, 2) + Math.pow(totalHeight / 2, 2));\n var labelsVisible = labelRadius <= (innerRadius > 0 ? innerRadius : this.getOuterRadius());\n var textBottoms = [];\n for (var i = 0, prev = -totalHeight / 2; i < textBBoxes.length; i++) {\n var bbox = textBBoxes[i];\n var bottom = bbox.height + prev + getMarginTop(i);\n textBottoms.push(bottom);\n prev = bottom + getMarginBottom(i);\n }\n this.innerLabelsSelection.each(function (text, _datum, index) {\n text.y = textBottoms[index];\n text.visible = labelsVisible;\n });\n };\n PieSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new PieSeriesNodeClickEvent(this.angleKey, this.calloutLabelKey, this.sectorLabelKey, this.radiusKey, event, datum, this);\n };\n PieSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n return new PieSeriesNodeDoubleClickEvent(this.angleKey, this.calloutLabelKey, this.sectorLabelKey, this.radiusKey, event, datum, this);\n };\n PieSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var angleKey = this.angleKey;\n if (!angleKey) {\n return '';\n }\n var _a = this, tooltip = _a.tooltip, angleName = _a.angleName, radiusKey = _a.radiusKey, radiusName = _a.radiusName, calloutLabelKey = _a.calloutLabelKey, sectorLabelKey = _a.sectorLabelKey, calloutLabelName = _a.calloutLabelName, sectorLabelName = _a.sectorLabelName, seriesId = _a.id;\n var tooltipRenderer = tooltip.renderer;\n var color = nodeDatum.sectorFormat.fill;\n var datum = nodeDatum.datum;\n var label = calloutLabelKey ? datum[calloutLabelKey] + \": \" : '';\n var angleValue = datum[angleKey];\n var formattedAngleValue = typeof angleValue === 'number' ? toFixed(angleValue) : angleValue.toString();\n var title = this.title ? this.title.text : undefined;\n var content = label + formattedAngleValue;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content,\n };\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: datum,\n angleKey: angleKey,\n angleValue: angleValue,\n angleName: angleName,\n radiusKey: radiusKey,\n radiusValue: radiusKey ? datum[radiusKey] : undefined,\n radiusName: radiusName,\n labelKey: calloutLabelKey,\n labelName: calloutLabelName,\n calloutLabelKey: calloutLabelKey,\n calloutLabelName: calloutLabelName,\n sectorLabelKey: sectorLabelKey,\n sectorLabelName: sectorLabelName,\n title: title,\n color: color,\n seriesId: seriesId,\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n PieSeries.prototype.getLegendData = function () {\n var _this = this;\n var _a = this, calloutLabelKey = _a.calloutLabelKey, legendItemKey = _a.legendItemKey, data = _a.data, id = _a.id, sectorFormatData = _a.sectorFormatData;\n if (!data || data.length === 0 || (!legendItemKey && !calloutLabelKey))\n return [];\n var titleText = this.title && this.title.showInLegend && this.title.text;\n var legendData = data.map(function (datum, index) {\n var labelParts = [];\n titleText && labelParts.push(titleText);\n if (legendItemKey) {\n labelParts.push(String(datum[legendItemKey]));\n }\n else if (calloutLabelKey) {\n labelParts.push(String(datum[calloutLabelKey]));\n }\n return {\n id: id,\n itemId: index,\n seriesId: id,\n enabled: _this.seriesItemEnabled[index],\n label: {\n text: labelParts.join(' - '),\n },\n marker: {\n fill: sectorFormatData[index].fill,\n stroke: sectorFormatData[index].stroke,\n fillOpacity: _this.fillOpacity,\n strokeOpacity: _this.strokeOpacity,\n },\n };\n });\n return legendData;\n };\n PieSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n this.seriesItemEnabled[itemId] = enabled;\n this.nodeDataRefresh = true;\n };\n PieSeries.prototype.toggleOtherSeriesItems = function (seriesToggled, datumToggled, enabled, suggestedEnabled) {\n var _this = this;\n var _a, _b;\n var legendItemKey = this.legendItemKey;\n if (seriesToggled.type !== 'pie')\n return;\n if (legendItemKey === undefined)\n return;\n var pieSeriesToggled = seriesToggled;\n var datumToggledLegendItemValue = datumToggled &&\n pieSeriesToggled.legendItemKey && ((_a = pieSeriesToggled.data) === null || _a === void 0 ? void 0 : _a.find(function (_, index) { return index === datumToggled.itemId; })[pieSeriesToggled.legendItemKey]);\n if (!datumToggledLegendItemValue)\n return;\n (_b = this.data) === null || _b === void 0 ? void 0 : _b.forEach(function (d, itemId) {\n if (enabled !== undefined && d[legendItemKey] === datumToggledLegendItemValue) {\n _this.toggleSeriesItem(itemId, enabled);\n }\n else if (suggestedEnabled !== undefined) {\n _this.toggleSeriesItem(itemId, suggestedEnabled || d[legendItemKey] === datumToggledLegendItemValue);\n }\n });\n };\n PieSeries.className = 'PieSeries';\n PieSeries.type = 'pie';\n __decorate$1l([\n DeprecatedAndRenamedTo('calloutLabel')\n ], PieSeries.prototype, \"label\", void 0);\n __decorate$1l([\n DeprecatedAndRenamedTo('calloutLine')\n ], PieSeries.prototype, \"callout\", void 0);\n __decorate$1l([\n Validate(STRING)\n ], PieSeries.prototype, \"angleKey\", void 0);\n __decorate$1l([\n Validate(STRING)\n ], PieSeries.prototype, \"angleName\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"radiusKey\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"radiusName\", void 0);\n __decorate$1l([\n Validate(OPT_NUMBER(0))\n ], PieSeries.prototype, \"radiusMin\", void 0);\n __decorate$1l([\n Validate(OPT_NUMBER(0))\n ], PieSeries.prototype, \"radiusMax\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"calloutLabelKey\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"calloutLabelName\", void 0);\n __decorate$1l([\n DeprecatedAndRenamedTo('calloutLabelKey')\n ], PieSeries.prototype, \"labelKey\", void 0);\n __decorate$1l([\n DeprecatedAndRenamedTo('calloutLabelName')\n ], PieSeries.prototype, \"labelName\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"sectorLabelKey\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"sectorLabelName\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"legendItemKey\", void 0);\n __decorate$1l([\n Validate(COLOR_STRING_ARRAY)\n ], PieSeries.prototype, \"fills\", void 0);\n __decorate$1l([\n Validate(COLOR_STRING_ARRAY)\n ], PieSeries.prototype, \"strokes\", void 0);\n __decorate$1l([\n Validate(NUMBER(0, 1))\n ], PieSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1l([\n Validate(NUMBER(0, 1))\n ], PieSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1l([\n Validate(OPT_LINE_DASH)\n ], PieSeries.prototype, \"lineDash\", void 0);\n __decorate$1l([\n Validate(NUMBER(0))\n ], PieSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1l([\n Validate(OPT_FUNCTION)\n ], PieSeries.prototype, \"formatter\", void 0);\n __decorate$1l([\n Validate(NUMBER(-360, 360))\n ], PieSeries.prototype, \"rotation\", void 0);\n __decorate$1l([\n Validate(NUMBER())\n ], PieSeries.prototype, \"outerRadiusOffset\", void 0);\n __decorate$1l([\n Validate(NUMBER(0))\n ], PieSeries.prototype, \"outerRadiusRatio\", void 0);\n __decorate$1l([\n Validate(NUMBER())\n ], PieSeries.prototype, \"innerRadiusOffset\", void 0);\n __decorate$1l([\n Validate(NUMBER(0))\n ], PieSeries.prototype, \"innerRadiusRatio\", void 0);\n __decorate$1l([\n Validate(NUMBER(0))\n ], PieSeries.prototype, \"strokeWidth\", void 0);\n return PieSeries;\n}(PolarSeries));\n\nvar __extends$1Z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar HierarchySeries = /** @class */ (function (_super) {\n __extends$1Z(HierarchySeries, _super);\n function HierarchySeries() {\n return _super.call(this, { pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH] }) || this;\n }\n HierarchySeries.prototype.getLabelData = function () {\n return [];\n };\n return HierarchySeries;\n}(Series));\n\nvar __extends$1Y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DropShadow = /** @class */ (function (_super) {\n __extends$1Y(DropShadow, _super);\n function DropShadow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.enabled = true;\n _this.color = 'rgba(0, 0, 0, 0.5)';\n _this.xOffset = 0;\n _this.yOffset = 0;\n _this.blur = 5;\n return _this;\n }\n __decorate$1k([\n Validate(BOOLEAN),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], DropShadow.prototype, \"enabled\", void 0);\n __decorate$1k([\n Validate(COLOR_STRING),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], DropShadow.prototype, \"color\", void 0);\n __decorate$1k([\n Validate(NUMBER()),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], DropShadow.prototype, \"xOffset\", void 0);\n __decorate$1k([\n Validate(NUMBER()),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], DropShadow.prototype, \"yOffset\", void 0);\n __decorate$1k([\n Validate(NUMBER(0)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], DropShadow.prototype, \"blur\", void 0);\n return DropShadow;\n}(ChangeDetectable));\n\nfunction number (a, b) {\n a = +a;\n b = +b;\n return function (t) { return a * (1 - t) + b * t; };\n}\n\nfunction interpolateColor (a, b) {\n if (typeof a === 'string') {\n try {\n a = Color.fromString(a);\n }\n catch (e) {\n a = Color.fromArray([0, 0, 0]);\n }\n }\n if (typeof b === 'string') {\n try {\n b = Color.fromString(b);\n }\n catch (e) {\n b = Color.fromArray([0, 0, 0]);\n }\n }\n var red = number(a.r, b.r);\n var green = number(a.g, b.g);\n var blue = number(a.b, b.b);\n var alpha = number(a.a, b.a);\n return function (t) {\n return Color.fromArray([red(t), green(t), blue(t), alpha(t)]).toRgbaString();\n };\n}\n\nvar ColorScale = /** @class */ (function () {\n function ColorScale() {\n this.domain = [0, 1];\n this._range = ['red', 'green'];\n this.parsedRange = this._range.map(function (v) { return Color.fromString(v); });\n }\n Object.defineProperty(ColorScale.prototype, \"range\", {\n get: function () {\n return this._range;\n },\n set: function (values) {\n this._range = values;\n this.parsedRange = values.map(function (v) { return Color.fromString(v); });\n },\n enumerable: false,\n configurable: true\n });\n ColorScale.prototype.convert = function (x) {\n var _a = this, domain = _a.domain, range = _a.range, parsedRange = _a.parsedRange;\n var d0 = domain[0];\n var d1 = domain[domain.length - 1];\n var r0 = range[0];\n var r1 = range[range.length - 1];\n if (x <= d0) {\n return r0;\n }\n if (x >= d1) {\n return r1;\n }\n var index;\n var q;\n if (domain.length === 2) {\n var t = (x - d0) / (d1 - d0);\n var step = 1 / (range.length - 1);\n index = range.length <= 2 ? 0 : Math.min(Math.floor(t * (range.length - 1)), range.length - 2);\n q = (t - index * step) / step;\n }\n else {\n for (index = 0; index < domain.length - 2; index++) {\n if (x < domain[index + 1]) {\n break;\n }\n }\n var a = domain[index];\n var b = domain[index + 1];\n q = (x - a) / (b - a);\n }\n var c0 = parsedRange[index];\n var c1 = parsedRange[index + 1];\n return interpolateColor(c0, c1)(q);\n };\n return ColorScale;\n}());\n\nvar __extends$1X = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$u = (undefined && undefined.__assign) || function () {\n __assign$u = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$u.apply(this, arguments);\n};\nvar __decorate$1j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$1 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar TreemapSeriesTooltip = /** @class */ (function (_super) {\n __extends$1X(TreemapSeriesTooltip, _super);\n function TreemapSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1j([\n Validate(OPT_FUNCTION)\n ], TreemapSeriesTooltip.prototype, \"renderer\", void 0);\n return TreemapSeriesTooltip;\n}(SeriesTooltip));\nvar TreemapSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n __extends$1X(TreemapSeriesNodeBaseClickEvent, _super);\n function TreemapSeriesNodeBaseClickEvent(labelKey, sizeKey, colorKey, nativeEvent, datum, series) {\n var _this = _super.call(this, nativeEvent, datum, series) || this;\n _this.labelKey = labelKey;\n _this.sizeKey = sizeKey;\n _this.colorKey = colorKey;\n return _this;\n }\n return TreemapSeriesNodeBaseClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar TreemapSeriesNodeClickEvent = /** @class */ (function (_super) {\n __extends$1X(TreemapSeriesNodeClickEvent, _super);\n function TreemapSeriesNodeClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeClick';\n return _this;\n }\n return TreemapSeriesNodeClickEvent;\n}(TreemapSeriesNodeBaseClickEvent));\nvar TreemapSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n __extends$1X(TreemapSeriesNodeDoubleClickEvent, _super);\n function TreemapSeriesNodeDoubleClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeDoubleClick';\n return _this;\n }\n return TreemapSeriesNodeDoubleClickEvent;\n}(TreemapSeriesNodeBaseClickEvent));\nvar TreemapSeriesLabel = /** @class */ (function (_super) {\n __extends$1X(TreemapSeriesLabel, _super);\n function TreemapSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.padding = 10;\n return _this;\n }\n __decorate$1j([\n Validate(NUMBER(0))\n ], TreemapSeriesLabel.prototype, \"padding\", void 0);\n return TreemapSeriesLabel;\n}(Label$1));\nvar TreemapValueLabel = /** @class */ (function () {\n function TreemapValueLabel() {\n this.style = (function () {\n var label = new Label$1();\n label.color = 'white';\n return label;\n })();\n }\n __decorate$1j([\n Validate(OPT_STRING)\n ], TreemapValueLabel.prototype, \"key\", void 0);\n __decorate$1j([\n Validate(OPT_STRING)\n ], TreemapValueLabel.prototype, \"name\", void 0);\n __decorate$1j([\n Validate(OPT_FUNCTION)\n ], TreemapValueLabel.prototype, \"formatter\", void 0);\n return TreemapValueLabel;\n}());\nvar TextNodeTag;\n(function (TextNodeTag) {\n TextNodeTag[TextNodeTag[\"Name\"] = 0] = \"Name\";\n TextNodeTag[TextNodeTag[\"Value\"] = 1] = \"Value\";\n})(TextNodeTag || (TextNodeTag = {}));\nfunction getTextSize(text, style) {\n return HdpiCanvas.getTextSize(text, [style.fontWeight, style.fontSize + \"px\", style.fontFamily].join(' '));\n}\nfunction validateColor(color) {\n if (typeof color === 'string' && !Color.validColorString(color)) {\n var fallbackColor = 'black';\n Logger.warnOnce(\"invalid Treemap tile colour string \\\"\" + color + \"\\\". Affected treemap tiles will be coloured \" + fallbackColor + \".\");\n return 'black';\n }\n return color;\n}\nvar TreemapTextHighlightStyle = /** @class */ (function () {\n function TreemapTextHighlightStyle() {\n this.color = 'black';\n }\n __decorate$1j([\n Validate(OPT_COLOR_STRING)\n ], TreemapTextHighlightStyle.prototype, \"color\", void 0);\n return TreemapTextHighlightStyle;\n}());\nvar TreemapHighlightStyle = /** @class */ (function (_super) {\n __extends$1X(TreemapHighlightStyle, _super);\n function TreemapHighlightStyle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.text = new TreemapTextHighlightStyle();\n return _this;\n }\n return TreemapHighlightStyle;\n}(HighlightStyle));\nvar TreemapSeries = /** @class */ (function (_super) {\n __extends$1X(TreemapSeries, _super);\n function TreemapSeries() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.groupSelection = Selection.select(_this.contentGroup, Group);\n _this.highlightSelection = Selection.select(_this.highlightGroup, Group);\n _this.title = (function () {\n var label = new TreemapSeriesLabel();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 12;\n label.fontFamily = 'Verdana, sans-serif';\n label.padding = 15;\n return label;\n })();\n _this.subtitle = (function () {\n var label = new TreemapSeriesLabel();\n label.color = 'white';\n label.fontSize = 9;\n label.fontFamily = 'Verdana, sans-serif';\n label.padding = 13;\n return label;\n })();\n _this.labels = {\n large: (function () {\n var label = new Label$1();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 18;\n return label;\n })(),\n medium: (function () {\n var label = new Label$1();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 14;\n return label;\n })(),\n small: (function () {\n var label = new Label$1();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 10;\n return label;\n })(),\n value: new TreemapValueLabel(),\n };\n _this.nodePadding = 2;\n _this.labelKey = 'label';\n _this.sizeKey = 'size';\n _this.colorKey = 'color';\n _this.colorDomain = [-5, 5];\n _this.colorRange = ['#cb4b3f', '#6acb64'];\n _this.groupFill = '#272931';\n _this.groupStroke = 'black';\n _this.groupStrokeWidth = 1;\n _this.tileStroke = 'black';\n _this.tileStrokeWidth = 1;\n _this.gradient = true;\n _this.formatter = undefined;\n _this.colorName = 'Change';\n _this.rootName = 'Root';\n _this.highlightGroups = true;\n _this.tileShadow = new DropShadow();\n _this.labelShadow = new DropShadow();\n _this.tooltip = new TreemapSeriesTooltip();\n _this.highlightStyle = new TreemapHighlightStyle();\n return _this;\n }\n TreemapSeries.prototype.getNodePaddingTop = function (nodeDatum, bbox) {\n var _a = this, title = _a.title, subtitle = _a.subtitle, nodePadding = _a.nodePadding;\n var label = nodeDatum.label;\n if (nodeDatum.isLeaf || !label || nodeDatum.depth === 0) {\n return nodePadding;\n }\n var font = nodeDatum.depth > 1 ? subtitle : title;\n var textSize = getTextSize(label, font);\n var heightRatioThreshold = 3;\n if (font.fontSize > bbox.width / heightRatioThreshold || font.fontSize > bbox.height / heightRatioThreshold) {\n return nodePadding;\n }\n if (textSize.height >= bbox.height) {\n return nodePadding;\n }\n return textSize.height + nodePadding * 2;\n };\n TreemapSeries.prototype.getNodePadding = function (nodeDatum, bbox) {\n var nodePadding = this.nodePadding;\n var top = this.getNodePaddingTop(nodeDatum, bbox);\n return {\n top: top,\n right: nodePadding,\n bottom: nodePadding,\n left: nodePadding,\n };\n };\n /**\n * Squarified Treemap algorithm\n * https://www.win.tue.nl/~vanwijk/stm.pdf\n */\n TreemapSeries.prototype.squarify = function (nodeDatum, bbox, outputNodesBoxes) {\n if (outputNodesBoxes === void 0) { outputNodesBoxes = new Map(); }\n var targetTileAspectRatio = 1; // The width and height will tend to this ratio\n var padding = this.getNodePadding(nodeDatum, bbox);\n outputNodesBoxes.set(nodeDatum, bbox);\n var width = bbox.width - padding.left - padding.right;\n var height = bbox.height - padding.top - padding.bottom;\n if (width <= 0 || height <= 0 || nodeDatum.value <= 0) {\n return outputNodesBoxes;\n }\n var stackSum = 0;\n var startIndex = 0;\n var minRatioDiff = Infinity;\n var partitionSum = nodeDatum.value;\n var children = nodeDatum.children;\n var partition = new BBox(bbox.x + padding.left, bbox.y + padding.top, width, height);\n for (var i = 0; i < children.length; i++) {\n var value = children[i].value;\n var firstValue = children[startIndex].value;\n var isVertical_1 = partition.width < partition.height;\n stackSum += value;\n var partThickness = isVertical_1 ? partition.height : partition.width;\n var partLength = isVertical_1 ? partition.width : partition.height;\n var firstTileLength = (partLength * firstValue) / stackSum;\n var stackThickness = (partThickness * stackSum) / partitionSum;\n var ratio = Math.max(firstTileLength, stackThickness) / Math.min(firstTileLength, stackThickness);\n var diff = Math.abs(targetTileAspectRatio - ratio);\n if (diff < minRatioDiff) {\n minRatioDiff = diff;\n continue;\n }\n // Go one step back and process the best match\n stackSum -= value;\n stackThickness = (partThickness * stackSum) / partitionSum;\n var start_1 = isVertical_1 ? partition.x : partition.y;\n for (var j = startIndex; j < i; j++) {\n var child = children[j];\n var x = isVertical_1 ? start_1 : partition.x;\n var y = isVertical_1 ? partition.y : start_1;\n var length_1 = (partLength * child.value) / stackSum;\n var width_1 = isVertical_1 ? length_1 : stackThickness;\n var height_1 = isVertical_1 ? stackThickness : length_1;\n var childBox = new BBox(x, y, width_1, height_1);\n this.squarify(child, childBox, outputNodesBoxes);\n partitionSum -= child.value;\n start_1 += length_1;\n }\n if (isVertical_1) {\n partition.y += stackThickness;\n partition.height -= stackThickness;\n }\n else {\n partition.x += stackThickness;\n partition.width -= stackThickness;\n }\n startIndex = i;\n stackSum = 0;\n minRatioDiff = Infinity;\n i--;\n }\n // Process remaining space\n var isVertical = partition.width < partition.height;\n var start = isVertical ? partition.x : partition.y;\n for (var i = startIndex; i < children.length; i++) {\n var x = isVertical ? start : partition.x;\n var y = isVertical ? partition.y : start;\n var part = children[i].value / partitionSum;\n var width_2 = partition.width * (isVertical ? part : 1);\n var height_2 = partition.height * (isVertical ? 1 : part);\n var childBox = new BBox(x, y, width_2, height_2);\n this.squarify(children[i], childBox, outputNodesBoxes);\n start += isVertical ? width_2 : height_2;\n }\n return outputNodesBoxes;\n };\n TreemapSeries.prototype.processData = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n var _a, data, sizeKey, labelKey, colorKey, colorDomain, colorRange, groupFill, colorScale, createTreeNodeDatum;\n var _this = this;\n return __generator$1(this, function (_b) {\n if (!this.data) {\n return [2 /*return*/];\n }\n _a = this, data = _a.data, sizeKey = _a.sizeKey, labelKey = _a.labelKey, colorKey = _a.colorKey, colorDomain = _a.colorDomain, colorRange = _a.colorRange, groupFill = _a.groupFill;\n colorScale = new ColorScale();\n colorScale.domain = colorDomain;\n colorScale.range = colorRange;\n createTreeNodeDatum = function (datum, depth, parent) {\n var _a, _b;\n if (depth === void 0) { depth = 0; }\n var label = (labelKey && datum[labelKey]) || '';\n var colorScaleValue = colorKey ? (_a = datum[colorKey]) !== null && _a !== void 0 ? _a : depth : depth;\n colorScaleValue = validateColor(colorScaleValue);\n var isLeaf = !datum.children;\n var fill = typeof colorScaleValue === 'string'\n ? colorScaleValue\n : isLeaf || !groupFill\n ? colorScale.convert(colorScaleValue)\n : groupFill;\n var nodeDatum = {\n datum: datum,\n depth: depth,\n parent: parent,\n value: 0,\n label: label,\n fill: fill,\n series: _this,\n isLeaf: isLeaf,\n children: [],\n };\n if (isLeaf) {\n nodeDatum.value = sizeKey ? (_b = datum[sizeKey]) !== null && _b !== void 0 ? _b : 1 : 1;\n }\n else {\n datum.children.forEach(function (child) {\n var childNodeDatum = createTreeNodeDatum(child, depth + 1, nodeDatum);\n var value = childNodeDatum.value;\n if (isNaN(value) || !isFinite(value) || value === 0) {\n return;\n }\n nodeDatum.value += value;\n nodeDatum.children.push(childNodeDatum);\n });\n nodeDatum.children.sort(function (a, b) {\n return b.value - a.value;\n });\n }\n return nodeDatum;\n };\n this.dataRoot = createTreeNodeDatum(data);\n return [2 /*return*/];\n });\n });\n };\n TreemapSeries.prototype.createNodeData = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n return __generator$1(this, function (_a) {\n return [2 /*return*/, []];\n });\n });\n };\n TreemapSeries.prototype.update = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n return __generator$1(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.updateSelections()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.updateNodes()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n TreemapSeries.prototype.updateSelections = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n var _a, chart, dataRoot, seriesRect, descendants, traverse, _b, groupSelection, highlightSelection, update;\n return __generator$1(this, function (_c) {\n if (!this.nodeDataRefresh) {\n return [2 /*return*/];\n }\n this.nodeDataRefresh = false;\n _a = this, chart = _a.chart, dataRoot = _a.dataRoot;\n if (!chart || !dataRoot) {\n return [2 /*return*/];\n }\n seriesRect = chart.getSeriesRect();\n if (!seriesRect) {\n return [2 /*return*/];\n }\n descendants = [];\n traverse = function (datum) {\n var _a;\n descendants.push(datum);\n (_a = datum.children) === null || _a === void 0 ? void 0 : _a.forEach(traverse);\n };\n traverse(this.dataRoot);\n _b = this, groupSelection = _b.groupSelection, highlightSelection = _b.highlightSelection;\n update = function (selection) {\n return selection.update(descendants, function (group) {\n var rect = new Rect();\n var nameLabel = new Text();\n nameLabel.tag = TextNodeTag.Name;\n var valueLabel = new Text();\n valueLabel.tag = TextNodeTag.Value;\n group.append([rect, nameLabel, valueLabel]);\n });\n };\n this.groupSelection = update(groupSelection);\n this.highlightSelection = update(highlightSelection);\n return [2 /*return*/];\n });\n });\n };\n TreemapSeries.prototype.isDatumHighlighted = function (datum) {\n var _a;\n var highlightedDatum = (_a = this.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n return datum === highlightedDatum && (datum.isLeaf || this.highlightGroups);\n };\n TreemapSeries.prototype.getTileFormat = function (datum, isHighlighted) {\n var _a;\n var formatter = this.formatter;\n if (!formatter) {\n return {};\n }\n var _b = this, gradient = _b.gradient, colorKey = _b.colorKey, labelKey = _b.labelKey, sizeKey = _b.sizeKey, tileStroke = _b.tileStroke, tileStrokeWidth = _b.tileStrokeWidth, groupStroke = _b.groupStroke, groupStrokeWidth = _b.groupStrokeWidth;\n var stroke = datum.isLeaf ? tileStroke : groupStroke;\n var strokeWidth = datum.isLeaf ? tileStrokeWidth : groupStrokeWidth;\n return formatter({\n seriesId: this.id,\n datum: datum.datum,\n depth: datum.depth,\n parent: (_a = datum.parent) === null || _a === void 0 ? void 0 : _a.datum,\n colorKey: colorKey,\n sizeKey: sizeKey,\n labelKey: labelKey,\n fill: datum.fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n gradient: gradient,\n highlighted: isHighlighted,\n });\n };\n TreemapSeries.prototype.updateNodes = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n var _a, gradient, _b, _c, highlightedFill, highlightedFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, highlightedTextColor, tileStroke, tileStrokeWidth, groupStroke, groupStrokeWidth, tileShadow, labelShadow, seriesRect, boxes, labelMeta, updateRectFn, updateLabelFn;\n var _this = this;\n return __generator$1(this, function (_d) {\n if (!this.chart) {\n return [2 /*return*/];\n }\n _a = this, gradient = _a.gradient, _b = _a.highlightStyle, _c = _b.item, highlightedFill = _c.fill, highlightedFillOpacity = _c.fillOpacity, highlightedStroke = _c.stroke, highlightedDatumStrokeWidth = _c.strokeWidth, highlightedTextColor = _b.text.color, tileStroke = _a.tileStroke, tileStrokeWidth = _a.tileStrokeWidth, groupStroke = _a.groupStroke, groupStrokeWidth = _a.groupStrokeWidth, tileShadow = _a.tileShadow, labelShadow = _a.labelShadow;\n seriesRect = this.chart.getSeriesRect();\n boxes = this.squarify(this.dataRoot, new BBox(0, 0, seriesRect.width, seriesRect.height));\n labelMeta = this.buildLabelMeta(boxes);\n this.updateNodeMidPoint(boxes);\n updateRectFn = function (rect, datum, isDatumHighlighted) {\n var _a, _b, _c, _d, _e, _f;\n var box = boxes.get(datum);\n if (!box) {\n rect.visible = false;\n return;\n }\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : datum.fill;\n var fillOpacity = (_a = (isDatumHighlighted ? highlightedFillOpacity : 1)) !== null && _a !== void 0 ? _a : 1;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined\n ? highlightedStroke\n : datum.isLeaf\n ? tileStroke\n : groupStroke;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : datum.isLeaf\n ? tileStrokeWidth\n : groupStrokeWidth;\n var format = _this.getTileFormat(datum, isDatumHighlighted);\n var fillColor = validateColor((_b = format === null || format === void 0 ? void 0 : format.fill) !== null && _b !== void 0 ? _b : fill);\n if ((_c = format === null || format === void 0 ? void 0 : format.gradient) !== null && _c !== void 0 ? _c : gradient) {\n var start = Color.tryParseFromString(fill).brighter().toString();\n var end = Color.tryParseFromString(fill).darker().toString();\n rect.fill = \"linear-gradient(180deg, \" + start + \", \" + end + \")\";\n }\n else {\n rect.fill = fillColor;\n }\n rect.fillOpacity = (_d = format === null || format === void 0 ? void 0 : format.fillOpacity) !== null && _d !== void 0 ? _d : fillOpacity;\n rect.stroke = validateColor((_e = format === null || format === void 0 ? void 0 : format.stroke) !== null && _e !== void 0 ? _e : stroke);\n rect.strokeWidth = (_f = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _f !== void 0 ? _f : strokeWidth;\n rect.fillShadow = tileShadow;\n rect.crisp = true;\n rect.x = box.x;\n rect.y = box.y;\n rect.width = box.width;\n rect.height = box.height;\n rect.visible = true;\n if (isDatumHighlighted && !datum.isLeaf) {\n var padding = _this.getNodePadding(datum, box);\n var x0 = box.x + padding.left;\n var x1 = box.x + box.width - padding.right;\n var y0 = box.y + padding.top;\n var y1 = box.y + box.height - padding.bottom;\n if (rect.clipPath) {\n rect.clipPath.clear();\n }\n else {\n rect.clipPath = new Path2D();\n }\n rect.clipMode = 'punch-out';\n rect.clipPath.moveTo(x0, y0);\n rect.clipPath.lineTo(x1, y0);\n rect.clipPath.lineTo(x1, y1);\n rect.clipPath.lineTo(x0, y1);\n rect.clipPath.lineTo(x0, y0);\n rect.clipPath.closePath();\n }\n };\n this.groupSelection.selectByClass(Rect).forEach(function (rect) { return updateRectFn(rect, rect.datum, false); });\n this.highlightSelection.selectByClass(Rect).forEach(function (rect) {\n var isDatumHighlighted = _this.isDatumHighlighted(rect.datum);\n rect.visible = isDatumHighlighted;\n if (rect.visible) {\n updateRectFn(rect, rect.datum, isDatumHighlighted);\n }\n });\n updateLabelFn = function (text, datum, highlighted, key) {\n var meta = labelMeta.get(datum);\n var label = meta === null || meta === void 0 ? void 0 : meta[key];\n if (!label) {\n text.visible = false;\n return;\n }\n text.text = label.text;\n text.fontFamily = label.style.fontFamily;\n text.fontSize = label.style.fontSize;\n text.fontWeight = label.style.fontWeight;\n text.fill = highlighted ? highlightedTextColor !== null && highlightedTextColor !== void 0 ? highlightedTextColor : label.style.color : label.style.color;\n text.fillShadow = highlighted ? undefined : labelShadow;\n text.textAlign = label.hAlign;\n text.textBaseline = label.vAlign;\n text.x = label.x;\n text.y = label.y;\n text.visible = true;\n };\n this.groupSelection\n .selectByTag(TextNodeTag.Name)\n .forEach(function (text) { return updateLabelFn(text, text.datum, false, 'label'); });\n this.highlightSelection.selectByTag(TextNodeTag.Name).forEach(function (text) {\n var isDatumHighlighted = _this.isDatumHighlighted(text.datum);\n text.visible = isDatumHighlighted;\n if (text.visible) {\n updateLabelFn(text, text.datum, isDatumHighlighted, 'label');\n }\n });\n this.groupSelection\n .selectByTag(TextNodeTag.Value)\n .forEach(function (text) { return updateLabelFn(text, text.datum, false, 'value'); });\n this.highlightSelection.selectByTag(TextNodeTag.Value).forEach(function (text) {\n var isDatumHighlighted = _this.isDatumHighlighted(text.datum);\n text.visible = isDatumHighlighted;\n if (text.visible) {\n updateLabelFn(text, text.datum, isDatumHighlighted, 'value');\n }\n });\n return [2 /*return*/];\n });\n });\n };\n TreemapSeries.prototype.updateNodeMidPoint = function (boxes) {\n boxes.forEach(function (box, treeNodeDatum) {\n treeNodeDatum.nodeMidPoint = {\n x: box.x + box.width / 2,\n y: box.y,\n };\n });\n };\n TreemapSeries.prototype.buildLabelMeta = function (boxes) {\n var _a = this, labels = _a.labels, title = _a.title, subtitle = _a.subtitle, nodePadding = _a.nodePadding, labelKey = _a.labelKey;\n var labelMeta = new Map();\n boxes.forEach(function (box, datum) {\n if (!labelKey || datum.depth === 0) {\n return;\n }\n var labelText = datum.isLeaf ? datum.label : datum.label.toUpperCase();\n var labelStyle;\n if (datum.isLeaf) {\n // Choose the font size that fits\n labelStyle =\n [labels.large, labels.medium, labels.small].find(function (s) {\n var _a = getTextSize(labelText, s), width = _a.width, height = _a.height;\n return width < box.width && height < box.height;\n }) || labels.small;\n }\n else if (datum.depth === 1) {\n labelStyle = title;\n }\n else {\n labelStyle = subtitle;\n }\n var labelSize = getTextSize(labelText, labelStyle);\n var availTextWidth = box.width - 2 * nodePadding;\n var availTextHeight = box.height - 2 * nodePadding;\n var minSizeRatio = 3;\n if (labelStyle.fontSize > box.width / minSizeRatio || labelStyle.fontSize > box.height / minSizeRatio) {\n // Avoid labels on too small tiles\n return;\n }\n // Crop text if not enough space\n if (labelSize.width > availTextWidth) {\n var textLength = Math.floor((labelText.length * availTextWidth) / labelSize.width) - 1;\n labelText = labelText.substring(0, textLength) + \"\\u2026\";\n }\n var valueConfig = labels.value;\n var valueStyle = valueConfig.style;\n var valueMargin = (labelStyle.fontSize + valueStyle.fontSize) / 8;\n var valueText = String(datum.isLeaf\n ? valueConfig.formatter\n ? valueConfig.formatter({ datum: datum.datum })\n : valueConfig.key\n ? datum.datum[valueConfig.key]\n : ''\n : '');\n var valueSize = getTextSize(valueText, valueStyle);\n var hasValueText = valueText &&\n valueSize.width < availTextWidth &&\n valueSize.height + labelSize.height + valueMargin < availTextHeight;\n labelMeta.set(datum, {\n label: __assign$u({ text: labelText, style: labelStyle }, (datum.isLeaf\n ? {\n hAlign: 'center',\n vAlign: 'middle',\n x: box.x + box.width / 2,\n y: box.y + box.height / 2 - (hasValueText ? valueSize.height / 2 + valueMargin / 2 : 0),\n }\n : {\n hAlign: 'left',\n vAlign: 'top',\n x: box.x + nodePadding,\n y: box.y + nodePadding,\n })),\n value: hasValueText\n ? {\n text: valueText,\n style: valueStyle,\n hAlign: 'center',\n vAlign: 'middle',\n x: box.x + box.width / 2,\n y: box.y + box.height / 2 + labelSize.height / 2 + valueMargin / 2,\n }\n : undefined,\n });\n });\n return labelMeta;\n };\n TreemapSeries.prototype.getDomain = function (_direction) {\n return [0, 1];\n };\n TreemapSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new TreemapSeriesNodeClickEvent(this.labelKey, this.sizeKey, this.colorKey, event, datum, this);\n };\n TreemapSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n return new TreemapSeriesNodeDoubleClickEvent(this.labelKey, this.sizeKey, this.colorKey, event, datum, this);\n };\n TreemapSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a;\n if (!this.highlightGroups && !nodeDatum.isLeaf) {\n return '';\n }\n var _b = this, tooltip = _b.tooltip, sizeKey = _b.sizeKey, labelKey = _b.labelKey, colorKey = _b.colorKey, rootName = _b.rootName, seriesId = _b.id, labels = _b.labels;\n var datum = nodeDatum.datum;\n var tooltipRenderer = tooltip.renderer;\n var title = nodeDatum.depth ? datum[labelKey] : rootName || datum[labelKey];\n var content = '';\n var format = this.getTileFormat(nodeDatum, false);\n var color = (format === null || format === void 0 ? void 0 : format.fill) || nodeDatum.fill || 'gray';\n var valueKey = labels.value.key;\n var valueFormatter = labels.value.formatter;\n if (valueKey || valueFormatter) {\n var valueText = '';\n if (valueFormatter) {\n valueText = valueFormatter({ datum: datum });\n }\n else {\n var value = datum[valueKey];\n if (typeof value === 'number' && isFinite(value)) {\n valueText = toFixed(value);\n }\n }\n if (valueText) {\n if (labels.value.name) {\n content += \"<b>\" + labels.value.name + \":</b> \";\n }\n content += valueText;\n }\n }\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content,\n };\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: nodeDatum.datum,\n parent: (_a = nodeDatum.parent) === null || _a === void 0 ? void 0 : _a.datum,\n depth: nodeDatum.depth,\n sizeKey: sizeKey,\n labelKey: labelKey,\n colorKey: colorKey,\n title: title,\n color: color,\n seriesId: seriesId,\n }), defaults);\n }\n if (!title && !content) {\n return '';\n }\n return toTooltipHtml$1(defaults);\n };\n TreemapSeries.prototype.getLegendData = function () {\n // Override point for subclasses.\n return [];\n };\n TreemapSeries.className = 'TreemapSeries';\n TreemapSeries.type = 'treemap';\n __decorate$1j([\n Validate(NUMBER(0))\n ], TreemapSeries.prototype, \"nodePadding\", void 0);\n __decorate$1j([\n Validate(STRING)\n ], TreemapSeries.prototype, \"labelKey\", void 0);\n __decorate$1j([\n Validate(OPT_STRING)\n ], TreemapSeries.prototype, \"sizeKey\", void 0);\n __decorate$1j([\n Validate(OPT_STRING)\n ], TreemapSeries.prototype, \"colorKey\", void 0);\n __decorate$1j([\n Validate(NUMBER_ARRAY)\n ], TreemapSeries.prototype, \"colorDomain\", void 0);\n __decorate$1j([\n Validate(COLOR_STRING_ARRAY)\n ], TreemapSeries.prototype, \"colorRange\", void 0);\n __decorate$1j([\n Validate(OPT_STRING)\n ], TreemapSeries.prototype, \"groupFill\", void 0);\n __decorate$1j([\n Validate(OPT_COLOR_STRING)\n ], TreemapSeries.prototype, \"groupStroke\", void 0);\n __decorate$1j([\n Validate(OPT_NUMBER(0))\n ], TreemapSeries.prototype, \"groupStrokeWidth\", void 0);\n __decorate$1j([\n Validate(OPT_COLOR_STRING)\n ], TreemapSeries.prototype, \"tileStroke\", void 0);\n __decorate$1j([\n Validate(OPT_NUMBER(0))\n ], TreemapSeries.prototype, \"tileStrokeWidth\", void 0);\n __decorate$1j([\n Validate(BOOLEAN)\n ], TreemapSeries.prototype, \"gradient\", void 0);\n __decorate$1j([\n Validate(OPT_FUNCTION)\n ], TreemapSeries.prototype, \"formatter\", void 0);\n __decorate$1j([\n Validate(STRING)\n ], TreemapSeries.prototype, \"colorName\", void 0);\n __decorate$1j([\n Validate(STRING)\n ], TreemapSeries.prototype, \"rootName\", void 0);\n __decorate$1j([\n Validate(OPT_BOOLEAN)\n ], TreemapSeries.prototype, \"highlightGroups\", void 0);\n return TreemapSeries;\n}(HierarchySeries));\n\nvar types$1 = {\n area: 'cartesian',\n bar: 'cartesian',\n column: 'cartesian',\n histogram: 'cartesian',\n line: 'cartesian',\n scatter: 'cartesian',\n treemap: 'hierarchy',\n pie: 'polar',\n};\nvar CHART_TYPES = {\n add: function (seriesType, chartType) {\n types$1[seriesType] = chartType;\n },\n delete: function (seriesType) {\n delete types$1[seriesType];\n },\n has: function (seriesType) {\n return Object.prototype.hasOwnProperty.call(types$1, seriesType);\n },\n isCartesian: function (seriesType) {\n return types$1[seriesType] === 'cartesian';\n },\n isPolar: function (seriesType) {\n return types$1[seriesType] === 'polar';\n },\n isHierarchy: function (seriesType) {\n return types$1[seriesType] === 'hierarchy';\n },\n get seriesTypes() {\n return Object.keys(types$1);\n },\n get cartesianTypes() {\n var _this = this;\n return this.seriesTypes.filter(function (t) { return _this.isCartesian(t); });\n },\n get polarTypes() {\n var _this = this;\n return this.seriesTypes.filter(function (t) { return _this.isPolar(t); });\n },\n get hierarchyTypes() {\n var _this = this;\n return this.seriesTypes.filter(function (t) { return _this.isHierarchy(t); });\n },\n};\n\nfunction deepMerge$1(target, source) {\n if (isPlainObject(target) && isPlainObject(source)) {\n var result_1 = {};\n Object.keys(target).forEach(function (key) {\n if (key in source) {\n result_1[key] = deepMerge$1(target[key], source[key]);\n }\n else {\n result_1[key] = target[key];\n }\n });\n Object.keys(source).forEach(function (key) {\n if (!(key in target)) {\n result_1[key] = source[key];\n }\n });\n return result_1;\n }\n if ((Array.isArray(target) && !Array.isArray(source)) || (isObject(target) && !isObject(source))) {\n return target;\n }\n return source;\n}\nfunction isObject(value) {\n return value && typeof value === 'object';\n}\nfunction isPlainObject(x) {\n return isObject(x) && x.constructor === Object;\n}\n\nvar __assign$t = (undefined && undefined.__assign) || function () {\n __assign$t = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$t.apply(this, arguments);\n};\nvar __read$r = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar palette$8 = {\n fills: ['#f3622d', '#fba71b', '#57b757', '#41a9c9', '#4258c9', '#9a42c8', '#c84164', '#888888'],\n strokes: ['#aa4520', '#b07513', '#3d803d', '#2d768d', '#2e3e8d', '#6c2e8c', '#8c2d46', '#5f5f5f'],\n};\nvar BOLD = 'bold';\nvar INSIDE = 'inside';\nvar RIGHT = 'right';\nvar ChartTheme = /** @class */ (function () {\n function ChartTheme(options) {\n options = deepMerge$1({}, options || {});\n var _a = options.overrides, overrides = _a === void 0 ? null : _a, _b = options.palette, palette = _b === void 0 ? null : _b;\n var defaults = this.createChartConfigPerChartType(this.getDefaults());\n if (overrides) {\n var common = overrides.common, cartesian = overrides.cartesian, polar = overrides.polar, hierarchy = overrides.hierarchy;\n var applyOverrides = function (type, seriesTypes, overrideOpts) {\n if (overrideOpts) {\n defaults[type] = deepMerge$1(defaults[type], overrideOpts);\n seriesTypes.forEach(function (s) {\n var seriesType = s;\n defaults[seriesType] = deepMerge$1(defaults[seriesType], overrideOpts);\n });\n }\n };\n applyOverrides('common', Object.keys(defaults), common);\n applyOverrides('cartesian', CHART_TYPES.cartesianTypes, cartesian);\n applyOverrides('polar', CHART_TYPES.polarTypes, polar);\n applyOverrides('hierarchy', CHART_TYPES.hierarchyTypes, hierarchy);\n CHART_TYPES.seriesTypes.forEach(function (s) {\n var _a;\n var seriesType = s;\n var chartConfig = overrides[seriesType];\n if (chartConfig) {\n if (chartConfig.series) {\n chartConfig.series = (_a = {}, _a[seriesType] = chartConfig.series, _a);\n }\n defaults[seriesType] = deepMerge$1(defaults[seriesType], chartConfig);\n }\n });\n }\n this.palette = palette !== null && palette !== void 0 ? palette : this.getPalette();\n this.config = Object.freeze(defaults);\n }\n ChartTheme.prototype.getPalette = function () {\n return palette$8;\n };\n ChartTheme.getAxisDefaults = function () {\n return {\n top: {},\n right: {},\n bottom: {},\n left: {},\n thickness: 0,\n title: {\n enabled: false,\n text: 'Axis Title',\n fontStyle: undefined,\n fontWeight: BOLD,\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(70, 70, 70)',\n },\n label: {\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n padding: 5,\n rotation: undefined,\n color: 'rgb(87, 87, 87)',\n formatter: undefined,\n autoRotate: false,\n avoidCollisions: true,\n },\n line: {\n width: 1,\n color: 'rgb(195, 195, 195)',\n },\n tick: {\n width: 1,\n size: 6,\n color: 'rgb(195, 195, 195)',\n },\n gridStyle: [\n {\n stroke: 'rgb(219, 219, 219)',\n lineDash: [4, 2],\n },\n ],\n crossLines: {\n enabled: false,\n fill: 'rgb(187,221,232)',\n stroke: 'rgb(70,162,192)',\n strokeWidth: 1,\n label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n padding: 5,\n color: 'rgb(87, 87, 87)',\n rotation: undefined,\n },\n },\n };\n };\n ChartTheme.getSeriesDefaults = function () {\n return {\n tooltip: {\n enabled: true,\n renderer: undefined,\n },\n visible: true,\n showInLegend: true,\n highlightStyle: {\n item: {\n fill: 'yellow',\n fillOpacity: 1,\n },\n series: {\n dimOpacity: 1,\n },\n text: {\n color: 'black',\n },\n },\n nodeClickRange: 'exact',\n };\n };\n ChartTheme.getBarSeriesDefaults = function () {\n return __assign$t(__assign$t({}, this.getSeriesDefaults()), { flipXY: false, fillOpacity: 1, strokeOpacity: 1, xKey: '', xName: '', normalizedTo: undefined, strokeWidth: 1, lineDash: [0], lineDashOffset: 0, label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined,\n placement: INSIDE,\n }, shadow: {\n enabled: false,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 3,\n yOffset: 3,\n blur: 5,\n } });\n };\n ChartTheme.getLineSeriesDefaults = function () {\n var seriesDefaults = this.getSeriesDefaults();\n return __assign$t(__assign$t({}, seriesDefaults), { tooltip: __assign$t(__assign$t({}, seriesDefaults.tooltip), { format: undefined, position: {\n type: 'node',\n } }) });\n };\n ChartTheme.getAreaSeriesDefaults = function () {\n var seriesDefaults = this.getSeriesDefaults();\n return __assign$t(__assign$t({}, seriesDefaults), { nodeClickRange: 'nearest', tooltip: __assign$t(__assign$t({}, seriesDefaults.tooltip), { position: {\n type: 'node',\n } }) });\n };\n ChartTheme.getScatterSeriesDefaults = function () {\n var seriesDefaults = this.getSeriesDefaults();\n return __assign$t(__assign$t({}, seriesDefaults), { tooltip: __assign$t(__assign$t({}, seriesDefaults.tooltip), { position: {\n type: 'node',\n } }) });\n };\n ChartTheme.getCartesianSeriesMarkerDefaults = function () {\n return {\n enabled: true,\n shape: 'circle',\n size: 6,\n maxSize: 30,\n strokeWidth: 1,\n formatter: undefined,\n };\n };\n ChartTheme.getChartDefaults = function () {\n return {\n background: {\n visible: true,\n fill: 'white',\n },\n padding: {\n top: 20,\n right: 20,\n bottom: 20,\n left: 20,\n },\n title: {\n enabled: false,\n text: 'Title',\n fontStyle: undefined,\n fontWeight: BOLD,\n fontSize: 16,\n fontFamily: this.fontFamily,\n color: 'rgb(70, 70, 70)',\n },\n subtitle: {\n enabled: false,\n text: 'Subtitle',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(140, 140, 140)',\n },\n footnote: {\n enabled: false,\n text: 'Footnote',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(140, 140, 140)',\n spacing: 30,\n },\n legend: {\n enabled: true,\n position: RIGHT,\n spacing: 20,\n listeners: {},\n item: {\n paddingX: 16,\n paddingY: 8,\n marker: {\n shape: undefined,\n size: 15,\n strokeWidth: 1,\n padding: 8,\n },\n label: {\n color: 'black',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n formatter: undefined,\n },\n },\n reverseOrder: false,\n pagination: {\n marker: {\n size: 12,\n },\n activeStyle: {\n fill: 'rgb(70, 70, 70)',\n },\n inactiveStyle: {\n fill: 'rgb(219, 219, 219)',\n },\n highlightStyle: {\n fill: 'rgb(70, 70, 70)',\n },\n label: {\n color: 'rgb(70, 70, 70)',\n },\n },\n },\n tooltip: {\n enabled: true,\n range: 'nearest',\n delay: 0,\n },\n listeners: {},\n };\n };\n ChartTheme.prototype.createChartConfigPerChartType = function (config) {\n var typeToAliases = {\n cartesian: CHART_TYPES.cartesianTypes,\n polar: CHART_TYPES.polarTypes,\n hierarchy: CHART_TYPES.hierarchyTypes,\n groupedCategory: [],\n };\n Object.entries(typeToAliases).forEach(function (_a) {\n var _b = __read$r(_a, 2), type = _b[0], aliases = _b[1];\n aliases.forEach(function (alias) {\n if (!config[alias]) {\n config[alias] = deepMerge$1({}, config[type]);\n }\n });\n });\n return config;\n };\n /**\n * Meant to be overridden in subclasses. For example:\n * ```\n * getDefaults() {\n * const subclassDefaults = { ... };\n * return this.mergeWithParentDefaults(subclassDefaults);\n * }\n * ```\n */\n ChartTheme.prototype.getDefaults = function () {\n var defaults = deepMerge$1({}, ChartTheme.defaults);\n var getOverridesByType = function (seriesTypes) {\n var result = {};\n result.series = seriesTypes.reduce(function (obj, seriesType) {\n if (Object.prototype.hasOwnProperty.call(ChartTheme.seriesThemeOverrides, seriesType)) {\n obj[seriesType] = ChartTheme.seriesThemeOverrides[seriesType]({\n seriesDefaults: ChartTheme.getSeriesDefaults(),\n defaultFontFamily: ChartTheme.fontFamily,\n });\n }\n return obj;\n }, {});\n return result;\n };\n var extension = {\n cartesian: getOverridesByType(CHART_TYPES.cartesianTypes),\n groupedCategory: getOverridesByType(CHART_TYPES.cartesianTypes),\n polar: getOverridesByType(CHART_TYPES.polarTypes),\n hierarchy: getOverridesByType(CHART_TYPES.hierarchyTypes),\n };\n return deepMerge$1(defaults, extension);\n };\n ChartTheme.prototype.mergeWithParentDefaults = function (parentDefaults, defaults) {\n return deepMerge$1(parentDefaults, defaults);\n };\n ChartTheme.fontFamily = 'Verdana, sans-serif';\n ChartTheme.seriesThemeOverrides = {};\n ChartTheme.cartesianDefaults = __assign$t(__assign$t({}, ChartTheme.getChartDefaults()), { axes: {\n number: __assign$t({}, ChartTheme.getAxisDefaults()),\n log: __assign$t(__assign$t({}, ChartTheme.getAxisDefaults()), { base: 10 }),\n category: __assign$t(__assign$t({}, ChartTheme.getAxisDefaults()), { groupPaddingInner: 0.1, label: __assign$t(__assign$t({}, ChartTheme.getAxisDefaults().label), { autoRotate: true }) }),\n groupedCategory: __assign$t({}, ChartTheme.getAxisDefaults()),\n time: __assign$t({}, ChartTheme.getAxisDefaults()),\n }, series: {\n column: __assign$t(__assign$t({}, ChartTheme.getBarSeriesDefaults()), { flipXY: false }),\n bar: __assign$t(__assign$t({}, ChartTheme.getBarSeriesDefaults()), { flipXY: true }),\n line: __assign$t(__assign$t({}, ChartTheme.getLineSeriesDefaults()), { title: undefined, xKey: '', xName: '', yKey: '', yName: '', strokeWidth: 2, strokeOpacity: 1, lineDash: [0], lineDashOffset: 0, marker: __assign$t(__assign$t({}, ChartTheme.getCartesianSeriesMarkerDefaults()), { fillOpacity: 1, strokeOpacity: 1 }), label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined,\n } }),\n scatter: __assign$t(__assign$t({}, ChartTheme.getScatterSeriesDefaults()), { title: undefined, xKey: '', yKey: '', sizeKey: undefined, labelKey: undefined, xName: '', yName: '', sizeName: 'Size', labelName: 'Label', marker: __assign$t({}, ChartTheme.getCartesianSeriesMarkerDefaults()), label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n } }),\n area: __assign$t(__assign$t({}, ChartTheme.getAreaSeriesDefaults()), { xKey: '', xName: '', normalizedTo: undefined, fillOpacity: 0.8, strokeOpacity: 1, strokeWidth: 2, lineDash: [0], lineDashOffset: 0, shadow: {\n enabled: false,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 3,\n yOffset: 3,\n blur: 5,\n }, marker: __assign$t(__assign$t({}, ChartTheme.getCartesianSeriesMarkerDefaults()), { fillOpacity: 1, strokeOpacity: 1, enabled: false }), label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined,\n } }),\n histogram: __assign$t(__assign$t({}, ChartTheme.getSeriesDefaults()), { xKey: '', yKey: '', xName: '', yName: '', strokeWidth: 1, fillOpacity: 1, strokeOpacity: 1, lineDash: [0], lineDashOffset: 0, areaPlot: false, bins: undefined, aggregation: 'sum', label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined,\n }, shadow: {\n enabled: true,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 0,\n yOffset: 0,\n blur: 5,\n } }),\n }, navigator: {\n enabled: false,\n height: 30,\n mask: {\n fill: '#999999',\n stroke: '#999999',\n strokeWidth: 1,\n fillOpacity: 0.2,\n },\n minHandle: {\n fill: '#f2f2f2',\n stroke: '#999999',\n strokeWidth: 1,\n width: 8,\n height: 16,\n gripLineGap: 2,\n gripLineLength: 8,\n },\n maxHandle: {\n fill: '#f2f2f2',\n stroke: '#999999',\n strokeWidth: 1,\n width: 8,\n height: 16,\n gripLineGap: 2,\n gripLineLength: 8,\n },\n } });\n ChartTheme.polarDefaults = __assign$t(__assign$t({}, ChartTheme.getChartDefaults()), { series: {\n pie: __assign$t(__assign$t({}, ChartTheme.getSeriesDefaults()), { title: {\n enabled: true,\n text: '',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 14,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n }, angleKey: '', angleName: '', radiusKey: undefined, radiusName: undefined, calloutLabelKey: undefined, calloutLabelName: undefined, sectorLabelKey: undefined, sectorLabelName: undefined, calloutLabel: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n offset: 3,\n minAngle: 0,\n }, sectorLabel: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n positionOffset: 0,\n positionRatio: 0.5,\n }, calloutLine: {\n length: 10,\n strokeWidth: 2,\n }, fillOpacity: 1, strokeOpacity: 1, strokeWidth: 1, lineDash: [0], lineDashOffset: 0, rotation: 0, outerRadiusOffset: 0, innerRadiusOffset: 0, shadow: {\n enabled: false,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 3,\n yOffset: 3,\n blur: 5,\n }, innerLabels: {\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n margin: 2,\n } }),\n } });\n ChartTheme.hierarchyDefaults = __assign$t(__assign$t({}, ChartTheme.getChartDefaults()), { series: {\n treemap: __assign$t(__assign$t({}, ChartTheme.getSeriesDefaults()), { showInLegend: false, labelKey: 'label', sizeKey: 'size', colorKey: 'color', colorDomain: [-5, 5], colorRange: ['#cb4b3f', '#6acb64'], groupFill: '#272931', groupStroke: 'black', groupStrokeWidth: 1, tileStroke: 'black', tileStrokeWidth: 1, gradient: true, tileShadow: {\n enabled: false,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 3,\n yOffset: 3,\n blur: 5,\n }, labelShadow: {\n enabled: true,\n color: 'rgba(0, 0, 0, 0.4)',\n xOffset: 1.5,\n yOffset: 1.5,\n blur: 5,\n }, highlightGroups: true, nodePadding: 2, title: {\n enabled: true,\n color: 'white',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n padding: 15,\n }, subtitle: {\n enabled: true,\n color: 'white',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 9,\n fontFamily: 'Verdana, sans-serif',\n padding: 13,\n }, labels: {\n large: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 18,\n fontFamily: 'Verdana, sans-serif',\n color: 'white',\n },\n medium: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 14,\n fontFamily: 'Verdana, sans-serif',\n color: 'white',\n },\n small: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 10,\n fontFamily: 'Verdana, sans-serif',\n color: 'white',\n },\n value: {\n style: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n color: 'white',\n },\n },\n } }),\n } });\n ChartTheme.defaults = {\n cartesian: ChartTheme.cartesianDefaults,\n groupedCategory: ChartTheme.cartesianDefaults,\n polar: ChartTheme.polarDefaults,\n hierarchy: ChartTheme.hierarchyDefaults,\n };\n return ChartTheme;\n}());\n\nvar __extends$1W = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$s = (undefined && undefined.__assign) || function () {\n __assign$s = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$s.apply(this, arguments);\n};\nvar DarkTheme = /** @class */ (function (_super) {\n __extends$1W(DarkTheme, _super);\n function DarkTheme(options) {\n return _super.call(this, options) || this;\n }\n DarkTheme.prototype.getDefaults = function () {\n var fontColor = DarkTheme.fontColor;\n var mutedFontColor = DarkTheme.mutedFontColor;\n var axisDefaults = {\n title: {\n color: fontColor,\n },\n label: {\n color: fontColor,\n },\n gridStyle: [\n {\n stroke: 'rgb(88, 88, 88)',\n lineDash: [4, 2],\n },\n ],\n };\n var seriesLabelDefaults = {\n label: {\n color: fontColor,\n },\n };\n var chartAxesDefaults = {\n axes: {\n number: __assign$s({}, axisDefaults),\n category: __assign$s({}, axisDefaults),\n time: __assign$s({}, axisDefaults),\n },\n };\n var chartDefaults = {\n background: {\n fill: 'rgb(34, 38, 41)',\n },\n title: {\n color: fontColor,\n },\n subtitle: {\n color: mutedFontColor,\n },\n legend: {\n item: {\n label: {\n color: fontColor,\n },\n },\n pagination: {\n activeStyle: {\n fill: fontColor,\n },\n inactiveStyle: {\n fill: mutedFontColor,\n },\n highlightStyle: {\n fill: fontColor,\n },\n label: {\n color: fontColor,\n },\n },\n },\n };\n var getOverridesByType = function (seriesTypes) {\n return seriesTypes.reduce(function (obj, seriesType) {\n if (Object.prototype.hasOwnProperty.call(DarkTheme.seriesDarkThemeOverrides, seriesType)) {\n obj[seriesType] = DarkTheme.seriesDarkThemeOverrides[seriesType]({\n seriesLabelDefaults: DarkTheme.seriesLabelDefaults,\n });\n }\n return obj;\n }, {});\n };\n return this.mergeWithParentDefaults(_super.prototype.getDefaults.call(this), {\n cartesian: __assign$s(__assign$s(__assign$s({}, chartDefaults), chartAxesDefaults), { series: __assign$s({ bar: __assign$s({}, seriesLabelDefaults), column: __assign$s({}, seriesLabelDefaults), histogram: __assign$s({}, seriesLabelDefaults) }, getOverridesByType(CHART_TYPES.cartesianTypes)) }),\n groupedCategory: __assign$s(__assign$s(__assign$s({}, chartDefaults), chartAxesDefaults), { series: __assign$s({ bar: __assign$s({}, seriesLabelDefaults), column: __assign$s({}, seriesLabelDefaults), histogram: __assign$s({}, seriesLabelDefaults) }, getOverridesByType(CHART_TYPES.cartesianTypes)) }),\n polar: __assign$s(__assign$s({}, chartDefaults), { series: __assign$s({ pie: {\n calloutLabel: {\n color: fontColor,\n },\n sectorLabel: {\n color: fontColor,\n },\n title: {\n color: fontColor,\n },\n innerLabels: {\n color: fontColor,\n },\n } }, getOverridesByType(CHART_TYPES.polarTypes)) }),\n hierarchy: __assign$s(__assign$s({}, chartDefaults), { series: __assign$s({ treemap: {\n tileStroke: 'white',\n groupStroke: 'white',\n title: {\n color: fontColor,\n },\n subtitle: {\n color: mutedFontColor,\n },\n labels: {\n large: {\n color: fontColor,\n },\n medium: {\n color: fontColor,\n },\n small: {\n color: fontColor,\n },\n value: {\n style: {\n color: fontColor,\n },\n },\n },\n } }, getOverridesByType(CHART_TYPES.hierarchyTypes)) }),\n });\n };\n DarkTheme.fontColor = 'rgb(200, 200, 200)';\n DarkTheme.mutedFontColor = 'rgb(150, 150, 150)';\n DarkTheme.seriesLabelDefaults = {\n label: {\n color: DarkTheme.fontColor,\n },\n };\n DarkTheme.seriesDarkThemeOverrides = {};\n return DarkTheme;\n}(ChartTheme));\n\nvar __values$b = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar BaseModuleInstance = /** @class */ (function () {\n function BaseModuleInstance() {\n this.destroyFns = [];\n }\n BaseModuleInstance.prototype.destroy = function () {\n var e_1, _a;\n try {\n for (var _b = __values$b(this.destroyFns), _c = _b.next(); !_c.done; _c = _b.next()) {\n var destroyFn = _c.value;\n destroyFn();\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n return BaseModuleInstance;\n}());\nvar REGISTERED_MODULES = [];\nfunction registerModule(module) {\n var otherModule = REGISTERED_MODULES.find(function (other) {\n return module.type === other.type && module.optionsKey === other.optionsKey;\n });\n if (otherModule) {\n if (module.packageType === 'enterprise' && otherModule.packageType === 'community') {\n // Replace the community module with an enterprise version\n var index = REGISTERED_MODULES.indexOf(otherModule);\n REGISTERED_MODULES.splice(index, 1, module);\n }\n }\n else {\n // Simply register the module\n REGISTERED_MODULES.push(module);\n }\n}\n\nvar __extends$1V = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RangeHandle$1 = /** @class */ (function (_super) {\n __extends$1V(RangeHandle, _super);\n function RangeHandle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._fill = '#f2f2f2';\n _this._stroke = '#999999';\n _this._strokeWidth = 1;\n _this._lineCap = 'square';\n _this._centerX = 0;\n _this._centerY = 0;\n // Use an even number for better looking results.\n _this._width = 8;\n // Use an even number for better looking results.\n _this._gripLineGap = 2;\n // Use an even number for better looking results.\n _this._gripLineLength = 8;\n _this._height = 16;\n return _this;\n }\n Object.defineProperty(RangeHandle.prototype, \"centerX\", {\n get: function () {\n return this._centerX;\n },\n set: function (value) {\n if (this._centerX !== value) {\n this._centerX = value;\n this.dirtyPath = true;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"centerY\", {\n get: function () {\n return this._centerY;\n },\n set: function (value) {\n if (this._centerY !== value) {\n this._centerY = value;\n this.dirtyPath = true;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirtyPath = true;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"gripLineGap\", {\n get: function () {\n return this._gripLineGap;\n },\n set: function (value) {\n if (this._gripLineGap !== value) {\n this._gripLineGap = value;\n this.dirtyPath = true;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"gripLineLength\", {\n get: function () {\n return this._gripLineLength;\n },\n set: function (value) {\n if (this._gripLineLength !== value) {\n this._gripLineLength = value;\n this.dirtyPath = true;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirtyPath = true;\n }\n },\n enumerable: false,\n configurable: true\n });\n RangeHandle.prototype.computeBBox = function () {\n var _a = this, centerX = _a.centerX, centerY = _a.centerY, width = _a.width, height = _a.height;\n var x = centerX - width / 2;\n var y = centerY - height / 2;\n return new BBox(x, y, width, height);\n };\n RangeHandle.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox.containsPoint(point.x, point.y);\n };\n RangeHandle.prototype.updatePath = function () {\n var _a = this, path = _a.path, centerX = _a.centerX, centerY = _a.centerY, width = _a.width, height = _a.height;\n path.clear();\n var x = centerX - width / 2;\n var y = centerY - height / 2;\n var ax = this.align(x);\n var ay = this.align(y);\n var axw = ax + this.align(x, width);\n var ayh = ay + this.align(y, height);\n // Handle.\n path.moveTo(ax, ay);\n path.lineTo(axw, ay);\n path.lineTo(axw, ayh);\n path.lineTo(ax, ayh);\n path.lineTo(ax, ay);\n // Grip lines.\n var dx = this.gripLineGap / 2;\n var dy = this.gripLineLength / 2;\n path.moveTo(this.align(centerX - dx), this.align(centerY - dy));\n path.lineTo(this.align(centerX - dx), this.align(centerY + dy));\n path.moveTo(this.align(centerX + dx), this.align(centerY - dy));\n path.lineTo(this.align(centerX + dx), this.align(centerY + dy));\n };\n RangeHandle.className = 'RangeHandle';\n __decorate$1i([\n Validate(COLOR_STRING)\n ], RangeHandle.prototype, \"_fill\", void 0);\n __decorate$1i([\n Validate(COLOR_STRING)\n ], RangeHandle.prototype, \"_stroke\", void 0);\n __decorate$1i([\n Validate(NUMBER(0))\n ], RangeHandle.prototype, \"_strokeWidth\", void 0);\n __decorate$1i([\n Validate(LINE_CAP)\n ], RangeHandle.prototype, \"_lineCap\", void 0);\n __decorate$1i([\n Validate(NUMBER(0))\n ], RangeHandle.prototype, \"_width\", void 0);\n __decorate$1i([\n Validate(NUMBER(0))\n ], RangeHandle.prototype, \"_gripLineGap\", void 0);\n __decorate$1i([\n Validate(NUMBER(0))\n ], RangeHandle.prototype, \"_gripLineLength\", void 0);\n __decorate$1i([\n Validate(NUMBER(0))\n ], RangeHandle.prototype, \"_height\", void 0);\n return RangeHandle;\n}(Path));\n\nvar __extends$1U = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RangeMask = /** @class */ (function (_super) {\n __extends$1U(RangeMask, _super);\n function RangeMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._stroke = '#999999';\n _this._strokeWidth = 1;\n _this._fill = '#999999';\n _this._fillOpacity = 0.2;\n _this._lineCap = 'square';\n _this._x = 0;\n _this._y = 0;\n _this._width = 200;\n _this._height = 30;\n _this.minRange = 0.05;\n _this._min = 0;\n _this._max = 1;\n return _this;\n }\n Object.defineProperty(RangeMask.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirtyPath = true;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirtyPath = true;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirtyPath = true;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirtyPath = true;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"min\", {\n get: function () {\n return this._min;\n },\n set: function (value) {\n var _a;\n value = Math.min(Math.max(value, 0), this.max - this.minRange);\n if (isNaN(value)) {\n return;\n }\n if (this._min !== value) {\n this._min = value;\n this.dirtyPath = true;\n (_a = this.onRangeChange) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"max\", {\n get: function () {\n return this._max;\n },\n set: function (value) {\n var _a;\n value = Math.max(Math.min(value, 1), this.min + this.minRange);\n if (isNaN(value)) {\n return;\n }\n if (this._max !== value) {\n this._max = value;\n this.dirtyPath = true;\n (_a = this.onRangeChange) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n },\n enumerable: false,\n configurable: true\n });\n RangeMask.prototype.computeBBox = function () {\n var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n return new BBox(x, y, width, height);\n };\n RangeMask.prototype.computeVisibleRangeBBox = function () {\n var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height, min = _a.min, max = _a.max;\n var minX = x + width * min;\n var maxX = x + width * max;\n return new BBox(minX, y, maxX - minX, height);\n };\n RangeMask.prototype.updatePath = function () {\n var _a = this, path = _a.path, x = _a.x, y = _a.y, width = _a.width, height = _a.height, min = _a.min, max = _a.max;\n path.clear();\n var ax = this.align(x);\n var ay = this.align(y);\n var axw = ax + this.align(x, width);\n var ayh = ay + this.align(y, height);\n // Whole range.\n path.moveTo(ax, ay);\n path.lineTo(axw, ay);\n path.lineTo(axw, ayh);\n path.lineTo(ax, ayh);\n path.lineTo(ax, ay);\n var minX = this.align(x + width * min);\n var maxX = this.align(x + width * max);\n // Visible range.\n path.moveTo(minX, ay);\n path.lineTo(minX, ayh);\n path.lineTo(maxX, ayh);\n path.lineTo(maxX, ay);\n path.lineTo(minX, ay);\n };\n RangeMask.className = 'RangeMask';\n __decorate$1h([\n Validate(COLOR_STRING)\n ], RangeMask.prototype, \"_stroke\", void 0);\n __decorate$1h([\n Validate(NUMBER(0))\n ], RangeMask.prototype, \"_strokeWidth\", void 0);\n __decorate$1h([\n Validate(COLOR_STRING)\n ], RangeMask.prototype, \"_fill\", void 0);\n __decorate$1h([\n Validate(NUMBER(0, 1))\n ], RangeMask.prototype, \"_fillOpacity\", void 0);\n __decorate$1h([\n Validate(LINE_CAP)\n ], RangeMask.prototype, \"_lineCap\", void 0);\n __decorate$1h([\n Validate(NUMBER(0))\n ], RangeMask.prototype, \"_width\", void 0);\n __decorate$1h([\n Validate(NUMBER(0))\n ], RangeMask.prototype, \"_height\", void 0);\n __decorate$1h([\n Validate(NUMBER())\n ], RangeMask.prototype, \"_min\", void 0);\n __decorate$1h([\n Validate(NUMBER())\n ], RangeMask.prototype, \"_max\", void 0);\n return RangeMask;\n}(Path));\n\nvar __extends$1T = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$r = (undefined && undefined.__assign) || function () {\n __assign$r = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$r.apply(this, arguments);\n};\nvar RangeSelector = /** @class */ (function (_super) {\n __extends$1T(RangeSelector, _super);\n function RangeSelector() {\n var _this = _super.call(this, { name: 'rangeSelectorGroup' }) || this;\n _this.minHandle = new RangeHandle$1();\n _this.maxHandle = new RangeHandle$1();\n _this.mask = (function () {\n var _a = RangeSelector.defaults, x = _a.x, y = _a.y, width = _a.width, height = _a.height, min = _a.min, max = _a.max;\n var mask = new RangeMask();\n mask.x = x;\n mask.y = y;\n mask.width = width;\n mask.height = height;\n mask.min = min;\n mask.max = max;\n var _b = _this, minHandle = _b.minHandle, maxHandle = _b.maxHandle;\n minHandle.centerX = x;\n maxHandle.centerX = x + width;\n minHandle.centerY = maxHandle.centerY = y + height / 2;\n _this.append([mask, minHandle, maxHandle]);\n mask.onRangeChange = function () {\n var _a;\n _this.updateHandles();\n (_a = _this.onRangeChange) === null || _a === void 0 ? void 0 : _a.call(_this);\n };\n return mask;\n })();\n _this._x = RangeSelector.defaults.x;\n _this._y = RangeSelector.defaults.y;\n _this._width = RangeSelector.defaults.width;\n _this._height = RangeSelector.defaults.height;\n _this._min = RangeSelector.defaults.min;\n _this._max = RangeSelector.defaults.max;\n _this.isContainerNode = true;\n return _this;\n }\n Object.defineProperty(RangeSelector.prototype, \"x\", {\n get: function () {\n return this.mask.x;\n },\n set: function (value) {\n this.mask.x = value;\n this.updateHandles();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"y\", {\n get: function () {\n return this.mask.y;\n },\n set: function (value) {\n this.mask.y = value;\n this.updateHandles();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"width\", {\n get: function () {\n return this.mask.width;\n },\n set: function (value) {\n this.mask.width = value;\n this.updateHandles();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"height\", {\n get: function () {\n return this.mask.height;\n },\n set: function (value) {\n this.mask.height = value;\n this.updateHandles();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"min\", {\n get: function () {\n return this.mask.min;\n },\n set: function (value) {\n this.mask.min = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"max\", {\n get: function () {\n return this.mask.max;\n },\n set: function (value) {\n this.mask.max = value;\n },\n enumerable: false,\n configurable: true\n });\n RangeSelector.prototype.updateHandles = function () {\n var _a = this, minHandle = _a.minHandle, maxHandle = _a.maxHandle, x = _a.x, y = _a.y, width = _a.width, height = _a.height, mask = _a.mask;\n minHandle.centerX = x + width * mask.min;\n maxHandle.centerX = x + width * mask.max;\n minHandle.centerY = maxHandle.centerY = y + height / 2;\n };\n RangeSelector.prototype.computeBBox = function () {\n return this.mask.computeBBox();\n };\n RangeSelector.prototype.computeVisibleRangeBBox = function () {\n return this.mask.computeVisibleRangeBBox();\n };\n RangeSelector.prototype.render = function (renderCtx) {\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped++;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n var _a = this, mask = _a.mask, minHandle = _a.minHandle, maxHandle = _a.maxHandle;\n [mask, minHandle, maxHandle].forEach(function (child) {\n if (child.visible && (forceRender || child.dirty > RedrawType.NONE)) {\n ctx.save();\n child.render(__assign$r(__assign$r({}, renderCtx), { ctx: ctx, forceRender: forceRender }));\n ctx.restore();\n }\n });\n this.markClean({ force: true });\n if (stats)\n stats.nodesRendered++;\n };\n RangeSelector.className = 'Range';\n RangeSelector.defaults = {\n x: 0,\n y: 0,\n width: 200,\n height: 30,\n min: 0,\n max: 1,\n };\n return RangeSelector;\n}(Group));\n\nvar NavigatorMask = /** @class */ (function () {\n function NavigatorMask(rangeMask) {\n this.rm = rangeMask;\n }\n Object.defineProperty(NavigatorMask.prototype, \"fill\", {\n get: function () {\n return this.rm.fill;\n },\n set: function (value) {\n this.rm.fill = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NavigatorMask.prototype, \"stroke\", {\n get: function () {\n return this.rm.stroke;\n },\n set: function (value) {\n this.rm.stroke = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NavigatorMask.prototype, \"strokeWidth\", {\n get: function () {\n return this.rm.strokeWidth;\n },\n set: function (value) {\n this.rm.strokeWidth = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NavigatorMask.prototype, \"fillOpacity\", {\n get: function () {\n return this.rm.fillOpacity;\n },\n set: function (value) {\n this.rm.fillOpacity = value;\n },\n enumerable: false,\n configurable: true\n });\n return NavigatorMask;\n}());\n\nvar NavigatorHandle = /** @class */ (function () {\n function NavigatorHandle(rangeHandle) {\n this.rh = rangeHandle;\n }\n Object.defineProperty(NavigatorHandle.prototype, \"fill\", {\n get: function () {\n return this.rh.fill;\n },\n set: function (value) {\n this.rh.fill = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"stroke\", {\n get: function () {\n return this.rh.stroke;\n },\n set: function (value) {\n this.rh.stroke = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"strokeWidth\", {\n get: function () {\n return this.rh.strokeWidth;\n },\n set: function (value) {\n this.rh.strokeWidth = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"width\", {\n get: function () {\n return this.rh.width;\n },\n set: function (value) {\n this.rh.width = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"height\", {\n get: function () {\n return this.rh.height;\n },\n set: function (value) {\n this.rh.height = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"gripLineGap\", {\n get: function () {\n return this.rh.gripLineGap;\n },\n set: function (value) {\n this.rh.gripLineGap = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"gripLineLength\", {\n get: function () {\n return this.rh.gripLineLength;\n },\n set: function (value) {\n this.rh.gripLineLength = value;\n },\n enumerable: false,\n configurable: true\n });\n return NavigatorHandle;\n}());\n\nvar __extends$1S = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Navigator = /** @class */ (function (_super) {\n __extends$1S(Navigator, _super);\n function Navigator(ctx) {\n var _this = _super.call(this) || this;\n _this.ctx = ctx;\n _this.rs = new RangeSelector();\n // Wrappers to allow option application to the scene graph nodes.\n _this.mask = new NavigatorMask(_this.rs.mask);\n _this.minHandle = new NavigatorHandle(_this.rs.minHandle);\n _this.maxHandle = new NavigatorHandle(_this.rs.maxHandle);\n _this.minHandleDragging = false;\n _this.maxHandleDragging = false;\n _this.panHandleOffset = NaN;\n _this._enabled = false;\n _this.margin = 10;\n _this._visible = true;\n _this.rs.onRangeChange = function () {\n return _this.ctx.zoomManager.updateZoom('navigator', { x: { min: _this.rs.min, max: _this.rs.max } });\n };\n [\n ctx.interactionManager.addListener('drag-start', function (event) { return _this.onDragStart(event); }),\n ctx.interactionManager.addListener('drag', function (event) { return _this.onDrag(event); }),\n ctx.interactionManager.addListener('hover', function (event) { return _this.onDrag(event); }),\n ctx.interactionManager.addListener('drag-end', function () { return _this.onDragStop(); }),\n ].forEach(function (s) { return _this.destroyFns.push(function () { return ctx.interactionManager.removeListener(s); }); });\n [\n ctx.layoutService.addListener('before-series', function (event) { return _this.layout(event); }),\n ctx.layoutService.addListener('layout-complete', function (event) { return _this.layoutComplete(event); }),\n ].forEach(function (s) { return _this.destroyFns.push(function () { return ctx.layoutService.removeListener(s); }); });\n ctx.scene.root.appendChild(_this.rs);\n _this.destroyFns.push(function () { var _a; return (_a = ctx.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(_this.rs); });\n _this.updateGroupVisibility();\n return _this;\n }\n Object.defineProperty(Navigator.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n this._enabled = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"width\", {\n get: function () {\n return this.rs.width;\n },\n set: function (value) {\n this.rs.width = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"height\", {\n get: function () {\n return this.rs.height;\n },\n set: function (value) {\n this.rs.height = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"min\", {\n get: function () {\n return this.rs.min;\n },\n set: function (value) {\n this.rs.min = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"max\", {\n get: function () {\n return this.rs.max;\n },\n set: function (value) {\n this.rs.max = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n this._visible = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Navigator.prototype.updateGroupVisibility = function () {\n this.rs.visible = this.enabled && this.visible;\n };\n Navigator.prototype.layout = function (_a) {\n var shrinkRect = _a.shrinkRect;\n if (this.enabled) {\n var navigatorTotalHeight = this.rs.height + this.margin;\n shrinkRect.shrink(navigatorTotalHeight, 'bottom');\n this.rs.y = shrinkRect.y + shrinkRect.height + this.margin;\n }\n return { shrinkRect: shrinkRect };\n };\n Navigator.prototype.layoutComplete = function (_a) {\n var _b = _a.series, rect = _b.rect, visible = _b.visible;\n if (this.enabled && visible) {\n this.rs.x = rect.x;\n this.rs.width = rect.width;\n }\n this.visible = visible;\n };\n Navigator.prototype.update = function () {\n // Nothing to do!\n };\n Navigator.prototype.onDragStart = function (offset) {\n if (!this.enabled) {\n return;\n }\n var offsetX = offset.offsetX, offsetY = offset.offsetY;\n var rs = this.rs;\n var minHandle = rs.minHandle, maxHandle = rs.maxHandle, x = rs.x, width = rs.width, min = rs.min;\n var visibleRange = rs.computeVisibleRangeBBox();\n if (!(this.minHandleDragging || this.maxHandleDragging)) {\n if (minHandle.containsPoint(offsetX, offsetY)) {\n this.minHandleDragging = true;\n }\n else if (maxHandle.containsPoint(offsetX, offsetY)) {\n this.maxHandleDragging = true;\n }\n else if (visibleRange.containsPoint(offsetX, offsetY)) {\n this.panHandleOffset = (offsetX - x) / width - min;\n }\n }\n };\n Navigator.prototype.onDrag = function (offset) {\n if (!this.enabled) {\n return;\n }\n var _a = this, rs = _a.rs, panHandleOffset = _a.panHandleOffset;\n var x = rs.x, y = rs.y, width = rs.width, height = rs.height, minHandle = rs.minHandle, maxHandle = rs.maxHandle;\n var offsetX = offset.offsetX, offsetY = offset.offsetY;\n var minX = x + width * rs.min;\n var maxX = x + width * rs.max;\n var visibleRange = new BBox(minX, y, maxX - minX, height);\n var getRatio = function () { return Math.min(Math.max((offsetX - x) / width, 0), 1); };\n if (minHandle.containsPoint(offsetX, offsetY) || maxHandle.containsPoint(offsetX, offsetY)) {\n this.ctx.cursorManager.updateCursor('navigator', 'ew-resize');\n }\n else if (visibleRange.containsPoint(offsetX, offsetY)) {\n this.ctx.cursorManager.updateCursor('navigator', 'grab');\n }\n else {\n this.ctx.cursorManager.updateCursor('navigator');\n }\n if (this.minHandleDragging) {\n rs.min = getRatio();\n }\n else if (this.maxHandleDragging) {\n rs.max = getRatio();\n }\n else if (!isNaN(panHandleOffset)) {\n var span = rs.max - rs.min;\n var min = Math.min(getRatio() - panHandleOffset, 1 - span);\n if (min <= rs.min) {\n // pan left\n rs.min = min;\n rs.max = rs.min + span;\n }\n else {\n // pan right\n rs.max = min + span;\n rs.min = rs.max - span;\n }\n }\n };\n Navigator.prototype.onDragStop = function () {\n this.stopHandleDragging();\n };\n Navigator.prototype.stopHandleDragging = function () {\n this.minHandleDragging = this.maxHandleDragging = false;\n this.panHandleOffset = NaN;\n };\n __decorate$1g([\n Validate(BOOLEAN)\n ], Navigator.prototype, \"_enabled\", void 0);\n __decorate$1g([\n Validate(NUMBER(0))\n ], Navigator.prototype, \"margin\", void 0);\n return Navigator;\n}(BaseModuleInstance));\n\nvar CHART_NAVIGATOR_MODULE = {\n type: 'root',\n optionsKey: 'navigator',\n packageType: 'community',\n chartTypes: ['cartesian'],\n initialiseModule: function (ctx) {\n return {\n instance: new Navigator(ctx),\n };\n },\n};\nregisterModule(CHART_NAVIGATOR_MODULE);\n\nvar __extends$1R = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Background = /** @class */ (function (_super) {\n __extends$1R(Background, _super);\n function Background(ctx) {\n var _a;\n var _this = _super.call(this) || this;\n _this.onLayoutComplete = function (e) {\n var _a = e.chart, width = _a.width, height = _a.height;\n _this.rectNode.width = width;\n _this.rectNode.height = height;\n };\n _this.node = new Group({ name: 'background' });\n _this.node.zIndex = Layers.SERIES_BACKGROUND_ZINDEX;\n _this.rectNode = new Rect();\n _this.node.appendChild(_this.rectNode);\n _this.fill = 'white';\n _this.visible = true;\n (_a = ctx.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(_this.node);\n _this.destroyFns.push(function () { var _a; return (_a = ctx.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(_this.node); });\n var layoutHandle = ctx.layoutService.addListener('layout-complete', _this.onLayoutComplete);\n _this.destroyFns.push(function () { return ctx.layoutService.removeListener(layoutHandle); });\n return _this;\n }\n Background.prototype.update = function () { };\n __decorate$1f([\n Validate(BOOLEAN),\n ProxyPropertyOnWrite('node', 'visible')\n ], Background.prototype, \"visible\", void 0);\n __decorate$1f([\n Validate(OPT_COLOR_STRING),\n ProxyPropertyOnWrite('rectNode', 'fill')\n ], Background.prototype, \"fill\", void 0);\n return Background;\n}(BaseModuleInstance));\n\nvar CHART_BACKGROUND_MODULE = {\n type: 'root',\n optionsKey: 'background',\n packageType: 'community',\n chartTypes: ['cartesian', 'polar', 'hierarchy'],\n initialiseModule: function (ctx) {\n return {\n instance: new Background(ctx),\n };\n },\n};\nregisterModule(CHART_BACKGROUND_MODULE);\n\nvar builtinSeriesTypes = {\n area: AreaSeries,\n bar: BarSeries,\n column: BarSeries,\n histogram: HistogramSeries,\n line: LineSeries,\n pie: PieSeries,\n scatter: ScatterSeries,\n treemap: TreemapSeries,\n};\nvar extraSeriesFactories = {};\nvar initialisedSeriesModules = new Map();\nfunction initialiseSeriesModules() {\n REGISTERED_MODULES.filter(function (m) { return m.type === 'series'; })\n .filter(function (m) { return !initialisedSeriesModules.has(m); })\n .forEach(function (m) { return initialiseSeriesModule(m); });\n}\nvar seriesDefaults = {};\nfunction initialiseSeriesModule(mod) {\n var seriesType = mod.optionsKey;\n var instance = mod.initialiseModule({\n seriesFactory: {\n add: function (factory) {\n extraSeriesFactories[seriesType] = factory;\n },\n delete: function () {\n delete extraSeriesFactories[seriesType];\n },\n },\n defaults: {\n add: function (defaultOptions) {\n seriesDefaults[seriesType] = defaultOptions;\n },\n delete: function () {\n delete seriesDefaults[seriesType];\n },\n },\n themes: {\n chartTheme: {\n add: function (fn) {\n ChartTheme.seriesThemeOverrides[seriesType] = fn;\n },\n delete: function () {\n delete ChartTheme.seriesThemeOverrides[seriesType];\n },\n },\n darkTheme: {\n add: function (fn) {\n DarkTheme.seriesDarkThemeOverrides[seriesType] = fn;\n },\n delete: function () {\n delete DarkTheme.seriesDarkThemeOverrides[seriesType];\n },\n },\n },\n });\n initialisedSeriesModules.set(mod, instance);\n var chartType = mod.chartTypes[0];\n CHART_TYPES.add(seriesType, chartType);\n}\nfunction getSeries(chartType) {\n if (Object.prototype.hasOwnProperty.call(extraSeriesFactories, chartType)) {\n var factory = extraSeriesFactories[chartType];\n return factory();\n }\n if (Object.prototype.hasOwnProperty.call(builtinSeriesTypes, chartType)) {\n var SeriesConstructor = builtinSeriesTypes[chartType];\n return new SeriesConstructor();\n }\n throw new Error(\"AG Charts - unknown series type: \" + chartType);\n}\n\nvar DEFAULT_CARTESIAN_CHART_OVERRIDES = {\n axes: [\n {\n type: NumberAxis.type,\n position: 'left',\n },\n {\n type: CategoryAxis.type,\n position: 'bottom',\n },\n ],\n};\nvar DEFAULT_BAR_CHART_OVERRIDES = {\n axes: [\n {\n type: 'number',\n position: 'bottom',\n },\n {\n type: 'category',\n position: 'left',\n },\n ],\n};\nvar DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES = {\n axes: [\n {\n type: 'number',\n position: 'bottom',\n },\n {\n type: 'number',\n position: 'left',\n },\n ],\n};\n\nvar __assign$q = (undefined && undefined.__assign) || function () {\n __assign$q = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$q.apply(this, arguments);\n};\nfunction transform(input, transforms) {\n var result = {};\n for (var p in input) {\n var t = transforms[p] || (function (x) { return x; });\n result[p] = t(input[p], input);\n }\n return result;\n}\nfunction is2dArray(input) {\n return input != null && input instanceof Array && input[0] instanceof Array;\n}\nfunction yNamesMapping(p, src) {\n if (p == null) {\n return {};\n }\n if (!(p instanceof Array)) {\n return p;\n }\n var yKeys = src.yKeys;\n if (yKeys == null || is2dArray(yKeys)) {\n throw new Error('AG Charts - yNames and yKeys mismatching configuration.');\n }\n var result = {};\n yKeys.forEach(function (k, i) {\n result[k] = p[i];\n });\n return result;\n}\nfunction yKeysMapping(p, src) {\n if (p == null) {\n return [[]];\n }\n if (is2dArray(p)) {\n return p;\n }\n return src.grouped ? p.map(function (v) { return [v]; }) : [p];\n}\nfunction barSeriesTransform(options) {\n var result = __assign$q({}, options);\n delete result['yKey'];\n delete result['yName'];\n return transform(result, {\n yNames: yNamesMapping,\n yKeys: yKeysMapping,\n });\n}\nfunction identityTransform(input) {\n return input;\n}\nvar SERIES_TRANSFORMS = {\n area: identityTransform,\n bar: barSeriesTransform,\n column: barSeriesTransform,\n histogram: identityTransform,\n line: identityTransform,\n pie: identityTransform,\n scatter: identityTransform,\n treemap: identityTransform,\n};\nfunction applySeriesTransform(options) {\n var type = options.type || 'line';\n var transform = SERIES_TRANSFORMS[type];\n return (transform !== null && transform !== void 0 ? transform : identityTransform)(options);\n}\n\nvar __extends$1Q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$7 = {\n fills: [\n '#f44336',\n '#e91e63',\n '#9c27b0',\n '#673ab7',\n '#3f51b5',\n '#2196f3',\n '#03a9f4',\n '#00bcd4',\n '#009688',\n '#4caf50',\n '#8bc34a',\n '#cddc39',\n '#ffeb3b',\n '#ffc107',\n '#ff9800',\n '#ff5722',\n ],\n strokes: [\n '#ab2f26',\n '#a31545',\n '#6d1b7b',\n '#482980',\n '#2c397f',\n '#1769aa',\n '#0276ab',\n '#008494',\n '#00695f',\n '#357a38',\n '#618834',\n '#909a28',\n '#b3a429',\n '#b38705',\n '#b36a00',\n '#b33d18',\n ],\n};\nvar MaterialLight = /** @class */ (function (_super) {\n __extends$1Q(MaterialLight, _super);\n function MaterialLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MaterialLight.prototype.getPalette = function () {\n return palette$7;\n };\n return MaterialLight;\n}(ChartTheme));\n\nvar __extends$1P = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$6 = {\n fills: [\n '#f44336',\n '#e91e63',\n '#9c27b0',\n '#673ab7',\n '#3f51b5',\n '#2196f3',\n '#03a9f4',\n '#00bcd4',\n '#009688',\n '#4caf50',\n '#8bc34a',\n '#cddc39',\n '#ffeb3b',\n '#ffc107',\n '#ff9800',\n '#ff5722',\n ],\n strokes: [\n '#ab2f26',\n '#a31545',\n '#6d1b7b',\n '#482980',\n '#2c397f',\n '#1769aa',\n '#0276ab',\n '#008494',\n '#00695f',\n '#357a38',\n '#618834',\n '#909a28',\n '#b3a429',\n '#b38705',\n '#b36a00',\n '#b33d18',\n ],\n};\nvar MaterialDark = /** @class */ (function (_super) {\n __extends$1P(MaterialDark, _super);\n function MaterialDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MaterialDark.prototype.getPalette = function () {\n return palette$6;\n };\n return MaterialDark;\n}(DarkTheme));\n\nvar __extends$1O = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$5 = {\n fills: ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'],\n strokes: ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'],\n};\nvar PastelLight = /** @class */ (function (_super) {\n __extends$1O(PastelLight, _super);\n function PastelLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PastelLight.prototype.getPalette = function () {\n return palette$5;\n };\n return PastelLight;\n}(ChartTheme));\n\nvar __extends$1N = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$4 = {\n fills: ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'],\n strokes: ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'],\n};\nvar PastelDark = /** @class */ (function (_super) {\n __extends$1N(PastelDark, _super);\n function PastelDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PastelDark.prototype.getPalette = function () {\n return palette$4;\n };\n return PastelDark;\n}(DarkTheme));\n\nvar __extends$1M = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$3 = {\n fills: [\n '#febe76',\n '#ff7979',\n '#badc58',\n '#f9ca23',\n '#f0932b',\n '#eb4c4b',\n '#6ab04c',\n '#7ed6df',\n '#e056fd',\n '#686de0',\n ],\n strokes: [\n '#b28553',\n '#b35555',\n '#829a3e',\n '#ae8d19',\n '#a8671e',\n '#a43535',\n '#4a7b35',\n '#58969c',\n '#9d3cb1',\n '#494c9d',\n ],\n};\nvar SolarLight = /** @class */ (function (_super) {\n __extends$1M(SolarLight, _super);\n function SolarLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SolarLight.prototype.getPalette = function () {\n return palette$3;\n };\n return SolarLight;\n}(ChartTheme));\n\nvar __extends$1L = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$2 = {\n fills: [\n '#febe76',\n '#ff7979',\n '#badc58',\n '#f9ca23',\n '#f0932b',\n '#eb4c4b',\n '#6ab04c',\n '#7ed6df',\n '#e056fd',\n '#686de0',\n ],\n strokes: [\n '#b28553',\n '#b35555',\n '#829a3e',\n '#ae8d19',\n '#a8671e',\n '#a43535',\n '#4a7b35',\n '#58969c',\n '#9d3cb1',\n '#494c9d',\n ],\n};\nvar SolarDark = /** @class */ (function (_super) {\n __extends$1L(SolarDark, _super);\n function SolarDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SolarDark.prototype.getPalette = function () {\n return palette$2;\n };\n return SolarDark;\n}(DarkTheme));\n\nvar __extends$1K = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$1 = {\n fills: ['#5BC0EB', '#FDE74C', '#9BC53D', '#E55934', '#FA7921', '#fa3081'],\n strokes: ['#4086a4', '#b1a235', '#6c8a2b', '#a03e24', '#af5517', '#af225a'],\n};\nvar VividLight = /** @class */ (function (_super) {\n __extends$1K(VividLight, _super);\n function VividLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n VividLight.prototype.getPalette = function () {\n return palette$1;\n };\n return VividLight;\n}(ChartTheme));\n\nvar __extends$1J = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette = {\n fills: ['#5BC0EB', '#FDE74C', '#9BC53D', '#E55934', '#FA7921', '#fa3081'],\n strokes: ['#4086a4', '#b1a235', '#6c8a2b', '#a03e24', '#af5517', '#af225a'],\n};\nvar VividDark = /** @class */ (function (_super) {\n __extends$1J(VividDark, _super);\n function VividDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n VividDark.prototype.getPalette = function () {\n return palette;\n };\n return VividDark;\n}(DarkTheme));\n\nvar __assign$p = (undefined && undefined.__assign) || function () {\n __assign$p = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$p.apply(this, arguments);\n};\nvar lightTheme = function () { return new ChartTheme(); };\nvar darkTheme = function () { return new DarkTheme(); };\nvar lightThemes = {\n undefined: lightTheme,\n null: lightTheme,\n 'ag-default': lightTheme,\n 'ag-material': function () { return new MaterialLight(); },\n 'ag-pastel': function () { return new PastelLight(); },\n 'ag-solar': function () { return new SolarLight(); },\n 'ag-vivid': function () { return new VividLight(); },\n};\nvar darkThemes = {\n undefined: darkTheme,\n null: darkTheme,\n 'ag-default-dark': darkTheme,\n 'ag-material-dark': function () { return new MaterialDark(); },\n 'ag-pastel-dark': function () { return new PastelDark(); },\n 'ag-solar-dark': function () { return new SolarDark(); },\n 'ag-vivid-dark': function () { return new VividDark(); },\n};\nvar themes$1 = __assign$p(__assign$p({}, darkThemes), lightThemes);\nfunction getChartTheme(value) {\n var _a;\n if (value instanceof ChartTheme) {\n return value;\n }\n var stockTheme = themes$1[value];\n if (stockTheme) {\n return stockTheme();\n }\n value = value;\n // Flatten recursive themes.\n var overrides = [];\n var palette;\n while (typeof value === 'object') {\n overrides.push((_a = value.overrides) !== null && _a !== void 0 ? _a : {});\n // Use first palette found, they can't be merged.\n if (value.palette && palette == null) {\n palette = value.palette;\n }\n value = value.baseTheme;\n }\n overrides.reverse();\n var flattenedTheme = __assign$p({ baseTheme: value, overrides: jsonMerge(overrides) }, (palette ? { palette: palette } : {}));\n if (flattenedTheme.baseTheme || flattenedTheme.overrides) {\n var baseTheme = getChartTheme(flattenedTheme.baseTheme);\n return new baseTheme.constructor(flattenedTheme);\n }\n return lightTheme();\n}\n\nvar __assign$o = (undefined && undefined.__assign) || function () {\n __assign$o = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$o.apply(this, arguments);\n};\nvar __values$a = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$q = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$e = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$q(arguments[i]));\n return ar;\n};\n/**\n * Groups the series options objects if they are of type `column` or `bar` and places them in an array at the index where the first instance of this series type was found.\n * Returns an array of arrays containing the ordered and grouped series options objects.\n */\nfunction groupSeriesByType(seriesOptions) {\n var e_1, _a;\n var indexMap = {};\n var result = [];\n try {\n for (var seriesOptions_1 = __values$a(seriesOptions), seriesOptions_1_1 = seriesOptions_1.next(); !seriesOptions_1_1.done; seriesOptions_1_1 = seriesOptions_1.next()) {\n var s = seriesOptions_1_1.value;\n if (s.type !== 'column' && s.type !== 'bar' && (s.type !== 'area' || s.stacked !== true)) {\n // No need to use index for these cases.\n result.push([s]);\n continue;\n }\n var seriesType = s.type || 'line';\n var groupingKey = s.stacked ? 'stacked' : 'grouped';\n var indexKey = seriesType + \"-\" + s.xKey + \"-\" + groupingKey;\n if (indexMap[indexKey] == null) {\n // Add indexed array to result on first addition.\n indexMap[indexKey] = [];\n result.push(indexMap[indexKey]);\n }\n indexMap[indexKey].push(s);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (seriesOptions_1_1 && !seriesOptions_1_1.done && (_a = seriesOptions_1.return)) _a.call(seriesOptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return result;\n}\nvar FAIL = Symbol();\nvar SKIP = Symbol();\nvar ARRAY_REDUCER = function (prop) { return function (result, next) {\n var _a;\n return result.concat.apply(result, __spread$e(((_a = next[prop]) !== null && _a !== void 0 ? _a : [])));\n}; };\nvar BOOLEAN_OR_REDUCER = function (prop, defaultValue) { return function (result, next) {\n if (typeof next[prop] === 'boolean') {\n return (result !== null && result !== void 0 ? result : false) || next[prop];\n }\n return result !== null && result !== void 0 ? result : defaultValue;\n}; };\nvar DEFAULTING_ARRAY_REDUCER = function (prop, defaultValue) { return function (result, next, idx, length) {\n var _a;\n var sparse = defaultValue === SKIP || defaultValue === FAIL;\n var nextValue = (_a = next[prop]) !== null && _a !== void 0 ? _a : defaultValue;\n if (nextValue === FAIL) {\n throw new Error(\"AG Charts - missing value for property [\" + prop + \"] on series config.\");\n }\n else if (nextValue === SKIP) {\n return result;\n }\n if (result.length === 0 && !sparse) {\n // Pre-populate values on first invocation as we will only be invoked for series with a\n // value specified.\n while (result.length < length) {\n result = result.concat(defaultValue);\n }\n }\n if (!sparse) {\n result[idx] = nextValue;\n return result;\n }\n return result.concat(nextValue);\n}; };\nvar YKEYS_REDUCER = function (prop, activationValue) { return function (result, next) {\n if (next[prop] === activationValue) {\n return result.concat.apply(result, __spread$e((next.yKey ? [next.yKey] : next.yKeys)));\n }\n return result;\n}; };\nvar STACK_GROUPS_REDUCER = function () { return function (result, next) {\n var _a;\n return __assign$o(__assign$o({}, result), (_a = {}, _a[next.stackGroup] = __spread$e((result[next.stackGroup] || []), [next.yKey]), _a));\n}; };\nvar REDUCE_CONFIG = {\n hideInChart: { outputProp: 'hideInChart', reducer: ARRAY_REDUCER('hideInChart'), start: [] },\n hideInLegend: { outputProp: 'hideInLegend', reducer: ARRAY_REDUCER('hideInLegend'), start: [] },\n yKey: { outputProp: 'yKeys', reducer: DEFAULTING_ARRAY_REDUCER('yKey', SKIP), start: [] },\n fill: { outputProp: 'fills', reducer: DEFAULTING_ARRAY_REDUCER('fill', SKIP), start: [] },\n stroke: { outputProp: 'strokes', reducer: DEFAULTING_ARRAY_REDUCER('stroke', SKIP), start: [] },\n yName: { outputProp: 'yNames', reducer: DEFAULTING_ARRAY_REDUCER('yName', SKIP), start: [] },\n visible: { outputProp: 'visibles', reducer: DEFAULTING_ARRAY_REDUCER('visible', true), start: [] },\n grouped: {\n outputProp: 'grouped',\n reducer: BOOLEAN_OR_REDUCER('grouped'),\n seriesType: ['bar', 'column'],\n start: undefined,\n },\n showInLegend: {\n outputProp: 'hideInLegend',\n reducer: YKEYS_REDUCER('showInLegend', false),\n seriesType: ['bar', 'column'],\n start: [],\n },\n stackGroup: {\n outputProp: 'stackGroups',\n reducer: STACK_GROUPS_REDUCER(),\n seriesType: ['bar', 'column'],\n start: {},\n },\n};\n/**\n * Takes an array of bar or area series options objects and returns a single object with the combined area series options.\n */\nfunction reduceSeries(series) {\n var options = {};\n series.forEach(function (s, idx) {\n Object.keys(s).forEach(function (prop) {\n var _a;\n var reducerConfig = REDUCE_CONFIG[prop];\n var defaultReduce = function () {\n var _a, _b;\n options[prop] = (_b = (_a = s[prop]) !== null && _a !== void 0 ? _a : options[prop]) !== null && _b !== void 0 ? _b : undefined;\n };\n if (!reducerConfig) {\n defaultReduce();\n return;\n }\n var outputProp = reducerConfig.outputProp, reducer = reducerConfig.reducer, _b = reducerConfig.start, start = _b === void 0 ? undefined : _b, _c = reducerConfig.seriesType, seriesType = _c === void 0 ? [s.type] : _c;\n if (!seriesType.includes(s.type)) {\n defaultReduce();\n return;\n }\n var result = reducer((_a = options[outputProp]) !== null && _a !== void 0 ? _a : start, s, idx, series.length);\n if (result !== undefined) {\n options[outputProp] = result;\n }\n });\n });\n return options;\n}\n/**\n * Transforms provided series options array into an array containing series options which are compatible with standalone charts series options.\n */\nfunction processSeriesOptions(seriesOptions) {\n var e_2, _a;\n var result = [];\n var preprocessed = seriesOptions.map(function (series) {\n // Change the default for bar/columns when yKey is used to be grouped rather than stacked.\n if ((series.type === 'bar' || series.type === 'column') && series.yKey != null && !series.stacked) {\n return __assign$o(__assign$o({}, series), { grouped: series.grouped != null ? series.grouped : true });\n }\n return series;\n });\n try {\n for (var _b = __values$a(groupSeriesByType(preprocessed)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var series = _c.value;\n switch (series[0].type) {\n case 'column':\n case 'bar':\n case 'area':\n result.push(reduceSeries(series));\n break;\n case 'line':\n default:\n if (series.length > 1) {\n Logger.warn('unexpected grouping of series type: ' + series[0].type);\n }\n result.push(series[0]);\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return result;\n}\n\nvar types = {\n number: 'number',\n time: 'time',\n log: 'log',\n category: 'category',\n groupedCategory: 'groupedCategory',\n};\nvar CHART_AXES_TYPES = {\n has: function (axisType) {\n return Object.prototype.hasOwnProperty.call(types, axisType);\n },\n get axesTypes() {\n return Object.keys(types);\n },\n};\n\nvar __assign$n = (undefined && undefined.__assign) || function () {\n __assign$n = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$n.apply(this, arguments);\n};\nvar __values$9 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$p = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$d = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$p(arguments[i]));\n return ar;\n};\nfunction optionsType(input) {\n var _a, _b, _c, _d;\n return (_d = (_a = input.type) !== null && _a !== void 0 ? _a : (_c = (_b = input.series) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.type) !== null && _d !== void 0 ? _d : 'line';\n}\nfunction isAgCartesianChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return true;\n }\n if (specifiedType === 'cartesian') {\n Logger.warnOnce(\"type '\" + specifiedType + \"' is deprecated, use a series type instead\");\n return true;\n }\n return CHART_TYPES.isCartesian(specifiedType);\n}\nfunction isAgHierarchyChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return false;\n }\n if (specifiedType === 'hierarchy') {\n Logger.warnOnce(\"type '\" + specifiedType + \"' is deprecated, use a series type instead\");\n return true;\n }\n return CHART_TYPES.isHierarchy(specifiedType);\n}\nfunction isAgPolarChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return false;\n }\n if (specifiedType === 'polar') {\n Logger.warnOnce(\"type '\" + specifiedType + \"' is deprecated, use a series type instead\");\n return true;\n }\n return CHART_TYPES.isPolar(specifiedType);\n}\nfunction isSeriesOptionType(input) {\n if (input == null) {\n return false;\n }\n return CHART_TYPES.has(input);\n}\nfunction isAxisOptionType(input) {\n if (input == null) {\n return false;\n }\n return CHART_AXES_TYPES.has(input);\n}\nfunction countArrayElements(input) {\n var e_1, _a;\n var count = 0;\n try {\n for (var input_1 = __values$9(input), input_1_1 = input_1.next(); !input_1_1.done; input_1_1 = input_1.next()) {\n var next = input_1_1.value;\n if (next instanceof Array) {\n count += countArrayElements(next);\n }\n if (next != null) {\n count++;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (input_1_1 && !input_1_1.done && (_a = input_1.return)) _a.call(input_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return count;\n}\nfunction takeColours(context, colours, maxCount) {\n var result = [];\n for (var count = 0; count < maxCount; count++) {\n result.push(colours[(count + context.colourIndex) % colours.length]);\n }\n return result;\n}\nvar noDataCloneMergeOptions = {\n avoidDeepClone: ['data'],\n};\nfunction prepareOptions(newOptions, fallbackOptions, seriesDefaults) {\n var e_2, _a, e_3, _b;\n var _c, _d, _e, _f;\n var options = jsonMerge([fallbackOptions, newOptions], noDataCloneMergeOptions);\n sanityCheckOptions(options);\n // Determine type and ensure it's explicit in the options config.\n var userSuppliedOptionsType = options.type;\n var type = optionsType(options);\n var globalTooltipPositionOptions = ((_c = options.tooltip) === null || _c === void 0 ? void 0 : _c.position) || {};\n var checkSeriesType = function (type) {\n if (type != null && !(isSeriesOptionType(type) || (seriesDefaults === null || seriesDefaults === void 0 ? void 0 : seriesDefaults[type]))) {\n throw new Error(\"AG Charts - unknown series type: \" + type + \"; expected one of: \" + CHART_TYPES.seriesTypes);\n }\n };\n checkSeriesType(type);\n try {\n for (var _g = __values$9((_d = options.series) !== null && _d !== void 0 ? _d : []), _h = _g.next(); !_h.done; _h = _g.next()) {\n var seriesType = _h.value.type;\n if (seriesType == null)\n continue;\n checkSeriesType(seriesType);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_h && !_h.done && (_a = _g.return)) _a.call(_g);\n }\n finally { if (e_2) throw e_2.error; }\n }\n options = __assign$n(__assign$n({}, options), { type: type });\n var defaultSeriesType = 'line';\n if (isAgCartesianChartOptions(options)) {\n defaultSeriesType = 'line';\n }\n else if (isAgHierarchyChartOptions(options)) {\n defaultSeriesType = 'treemap';\n }\n else if (isAgPolarChartOptions(options)) {\n defaultSeriesType = 'pie';\n }\n var defaultOverrides = {};\n if (seriesDefaults && Object.prototype.hasOwnProperty.call(seriesDefaults, type)) {\n defaultOverrides = seriesDefaults[type];\n }\n else if (type === 'bar') {\n defaultOverrides = DEFAULT_BAR_CHART_OVERRIDES;\n }\n else if (type === 'scatter' || type === 'histogram') {\n defaultOverrides = DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES;\n }\n else if (isAgCartesianChartOptions(options)) {\n defaultOverrides = DEFAULT_CARTESIAN_CHART_OVERRIDES;\n }\n var _j = prepareMainOptions(defaultOverrides, options), context = _j.context, mergedOptions = _j.mergedOptions, axesThemes = _j.axesThemes, seriesThemes = _j.seriesThemes;\n // Special cases where we have arrays of elements which need their own defaults.\n // Apply series themes before calling processSeriesOptions() as it reduces and renames some\n // properties, and in that case then cannot correctly have themes applied.\n mergedOptions.series = processSeriesOptions((mergedOptions.series || []).map(function (s) {\n var type = defaultSeriesType;\n if (s.type) {\n type = s.type;\n }\n else if (isSeriesOptionType(userSuppliedOptionsType)) {\n type = userSuppliedOptionsType;\n }\n var mergedSeries = mergeSeriesOptions(s, type, seriesThemes, globalTooltipPositionOptions);\n if (type === 'pie') {\n preparePieOptions(seriesThemes.pie, s, mergedSeries);\n }\n return mergedSeries;\n })).map(function (s) { return prepareSeries(context, s); });\n var checkAxisType = function (type) {\n var isAxisType = isAxisOptionType(type);\n if (!isAxisType) {\n Logger.warnOnce(\"AG Charts - unknown axis type: \" + type + \"; expected one of: \" + CHART_AXES_TYPES.axesTypes + \", ignoring.\");\n }\n return isAxisType;\n };\n if (isAgCartesianChartOptions(mergedOptions)) {\n var validAxesTypes = true;\n try {\n for (var _k = __values$9((_e = mergedOptions.axes) !== null && _e !== void 0 ? _e : []), _l = _k.next(); !_l.done; _l = _k.next()) {\n var axisType = _l.value.type;\n if (!checkAxisType(axisType)) {\n validAxesTypes = false;\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_l && !_l.done && (_b = _k.return)) _b.call(_k);\n }\n finally { if (e_3) throw e_3.error; }\n }\n if (!validAxesTypes) {\n mergedOptions.axes = defaultOverrides.axes;\n }\n else {\n mergedOptions.axes = (_f = mergedOptions.axes) === null || _f === void 0 ? void 0 : _f.map(function (axis) {\n var axisType = axis.type;\n var axesTheme = jsonMerge([\n axesThemes[axisType],\n axesThemes[axisType][axis.position || 'unknown'] || {},\n ]);\n return prepareAxis(axis, axesTheme);\n });\n }\n }\n prepareEnabledOptions(options, mergedOptions);\n return mergedOptions;\n}\nfunction sanityCheckOptions(options) {\n var deprecatedArrayProps = {\n yKeys: 'yKey',\n yNames: 'yName',\n };\n Object.entries(deprecatedArrayProps).forEach(function (_a) {\n var _b;\n var _c = __read$p(_a, 2), oldProp = _c[0], newProp = _c[1];\n if ((_b = options.series) === null || _b === void 0 ? void 0 : _b.some(function (s) { return s[oldProp] != null; })) {\n Logger.warnOnce(\"property [series.\" + oldProp + \"] is deprecated, please use [series.\" + newProp + \"] and multiple series instead.\");\n }\n });\n}\nfunction mergeSeriesOptions(series, type, seriesThemes, globalTooltipPositionOptions) {\n var _a;\n var mergedTooltipPosition = jsonMerge([__assign$n({}, globalTooltipPositionOptions), (_a = series.tooltip) === null || _a === void 0 ? void 0 : _a.position], noDataCloneMergeOptions);\n var mergedSeries = jsonMerge([\n seriesThemes[type] || {},\n __assign$n(__assign$n({}, series), { type: type, tooltip: __assign$n(__assign$n({}, series.tooltip), { position: mergedTooltipPosition }) }),\n ], noDataCloneMergeOptions);\n return mergedSeries;\n}\nfunction prepareMainOptions(defaultOverrides, options) {\n var _a = prepareTheme(options), theme = _a.theme, cleanedTheme = _a.cleanedTheme, axesThemes = _a.axesThemes, seriesThemes = _a.seriesThemes;\n var context = { colourIndex: 0, palette: theme.palette };\n var mergedOptions = jsonMerge([defaultOverrides, cleanedTheme, options], noDataCloneMergeOptions);\n return { context: context, mergedOptions: mergedOptions, axesThemes: axesThemes, seriesThemes: seriesThemes };\n}\nfunction prepareTheme(options) {\n var theme = getChartTheme(options.theme);\n var themeConfig = theme.config[optionsType(options) || 'cartesian'];\n var seriesThemes = Object.entries(theme.config).reduce(function (result, _a) {\n var _b = __read$p(_a, 2), seriesType = _b[0], series = _b[1].series;\n result[seriesType] = series === null || series === void 0 ? void 0 : series[seriesType];\n return result;\n }, {});\n return {\n theme: theme,\n axesThemes: themeConfig['axes'] || {},\n seriesThemes: seriesThemes,\n cleanedTheme: jsonMerge([themeConfig, { axes: DELETE, series: DELETE }]),\n };\n}\nfunction prepareSeries(context, input) {\n var defaults = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n defaults[_i - 2] = arguments[_i];\n }\n var paletteOptions = calculateSeriesPalette(context, input);\n // Part of the options interface, but not directly consumed by the series implementations.\n var removeOptions = { stacked: DELETE };\n var mergedResult = jsonMerge(__spread$d(defaults, [paletteOptions, input, removeOptions]), noDataCloneMergeOptions);\n return applySeriesTransform(mergedResult);\n}\nfunction calculateSeriesPalette(context, input) {\n var paletteOptions = {};\n var _a = context.palette, fills = _a.fills, strokes = _a.strokes;\n var inputAny = input;\n var colourCount = countArrayElements(inputAny['yKeys'] || []) || 1; // Defaults to 1 if no yKeys.\n switch (input.type) {\n case 'pie':\n colourCount = Math.max(fills.length, strokes.length);\n // eslint-disable-next-line no-fallthrough\n case 'area':\n case 'bar':\n case 'column':\n paletteOptions.fills = takeColours(context, fills, colourCount);\n paletteOptions.strokes = takeColours(context, strokes, colourCount);\n break;\n case 'histogram':\n paletteOptions.fill = takeColours(context, fills, 1)[0];\n paletteOptions.stroke = takeColours(context, strokes, 1)[0];\n break;\n case 'scatter':\n paletteOptions.marker = {\n stroke: takeColours(context, strokes, 1)[0],\n fill: takeColours(context, fills, 1)[0],\n };\n break;\n case 'line':\n paletteOptions.stroke = takeColours(context, fills, 1)[0];\n paletteOptions.marker = {\n stroke: takeColours(context, strokes, 1)[0],\n fill: takeColours(context, fills, 1)[0],\n };\n break;\n }\n context.colourIndex += colourCount;\n return paletteOptions;\n}\nfunction prepareAxis(axis, axisTheme) {\n // Remove redundant theme overload keys.\n var removeOptions = { top: DELETE, bottom: DELETE, left: DELETE, right: DELETE };\n // Special cross lines case where we have an array of cross line elements which need their own defaults.\n if (axis.crossLines) {\n if (!Array.isArray(axis.crossLines)) {\n Logger.warn('axis[].crossLines should be an array.');\n axis.crossLines = [];\n }\n var crossLinesTheme_1 = axisTheme.crossLines;\n axis.crossLines = axis.crossLines.map(function (crossLine) { return jsonMerge([crossLinesTheme_1, crossLine]); });\n }\n var cleanTheme = { crossLines: DELETE };\n return jsonMerge([axisTheme, cleanTheme, axis, removeOptions], noDataCloneMergeOptions);\n}\nfunction prepareEnabledOptions(options, mergedOptions) {\n // Set `enabled: true` for all option objects where the user has provided values.\n jsonWalk(options, function (_, visitingUserOpts, visitingMergedOpts) {\n if (!visitingMergedOpts)\n return;\n var _enabledFromTheme = visitingMergedOpts._enabledFromTheme;\n if (_enabledFromTheme != null) {\n // Do not apply special handling, base enablement on theme.\n delete visitingMergedOpts._enabledFromTheme;\n }\n if (!('enabled' in visitingMergedOpts))\n return;\n if (_enabledFromTheme)\n return;\n if (visitingUserOpts.enabled == null) {\n visitingMergedOpts.enabled = true;\n }\n }, { skip: ['data', 'theme'] }, mergedOptions);\n // Cleanup any special properties.\n jsonWalk(mergedOptions, function (_, visitingMergedOpts) {\n if (visitingMergedOpts._enabledFromTheme != null) {\n // Do not apply special handling, base enablement on theme.\n delete visitingMergedOpts._enabledFromTheme;\n }\n }, { skip: ['data', 'theme'] });\n}\nfunction preparePieOptions(pieSeriesTheme, seriesOptions, mergedSeries) {\n if (Array.isArray(seriesOptions.innerLabels)) {\n mergedSeries.innerLabels = seriesOptions.innerLabels.map(function (ln) {\n return jsonMerge([pieSeriesTheme.innerLabels, ln]);\n });\n }\n else {\n mergedSeries.innerLabels = DELETE;\n }\n}\n\nvar horizontalCrosslineTranslationDirections = {\n top: { xTranslationDirection: 0, yTranslationDirection: -1 },\n bottom: { xTranslationDirection: 0, yTranslationDirection: 1 },\n left: { xTranslationDirection: -1, yTranslationDirection: 0 },\n right: { xTranslationDirection: 1, yTranslationDirection: 0 },\n topLeft: { xTranslationDirection: 1, yTranslationDirection: -1 },\n topRight: { xTranslationDirection: -1, yTranslationDirection: -1 },\n bottomLeft: { xTranslationDirection: 1, yTranslationDirection: 1 },\n bottomRight: { xTranslationDirection: -1, yTranslationDirection: 1 },\n inside: { xTranslationDirection: 0, yTranslationDirection: 0 },\n insideLeft: { xTranslationDirection: 1, yTranslationDirection: 0 },\n insideRight: { xTranslationDirection: -1, yTranslationDirection: 0 },\n insideTop: { xTranslationDirection: 0, yTranslationDirection: 1 },\n insideBottom: { xTranslationDirection: 0, yTranslationDirection: -1 },\n insideTopLeft: { xTranslationDirection: 1, yTranslationDirection: 1 },\n insideBottomLeft: { xTranslationDirection: 1, yTranslationDirection: -1 },\n insideTopRight: { xTranslationDirection: -1, yTranslationDirection: 1 },\n insideBottomRight: { xTranslationDirection: -1, yTranslationDirection: -1 },\n};\nvar verticalCrossLineTranslationDirections = {\n top: { xTranslationDirection: 1, yTranslationDirection: 0 },\n bottom: { xTranslationDirection: -1, yTranslationDirection: 0 },\n left: { xTranslationDirection: 0, yTranslationDirection: -1 },\n right: { xTranslationDirection: 0, yTranslationDirection: 1 },\n topLeft: { xTranslationDirection: -1, yTranslationDirection: -1 },\n topRight: { xTranslationDirection: -1, yTranslationDirection: 1 },\n bottomLeft: { xTranslationDirection: 1, yTranslationDirection: -1 },\n bottomRight: { xTranslationDirection: 1, yTranslationDirection: 1 },\n inside: { xTranslationDirection: 0, yTranslationDirection: 0 },\n insideLeft: { xTranslationDirection: 0, yTranslationDirection: 1 },\n insideRight: { xTranslationDirection: 0, yTranslationDirection: -1 },\n insideTop: { xTranslationDirection: -1, yTranslationDirection: 0 },\n insideBottom: { xTranslationDirection: 1, yTranslationDirection: 0 },\n insideTopLeft: { xTranslationDirection: -1, yTranslationDirection: 1 },\n insideBottomLeft: { xTranslationDirection: 1, yTranslationDirection: 1 },\n insideTopRight: { xTranslationDirection: -1, yTranslationDirection: -1 },\n insideBottomRight: { xTranslationDirection: 1, yTranslationDirection: -1 },\n};\nvar calculateLabelTranslation = function (_a) {\n var _b;\n var yDirection = _a.yDirection, _c = _a.padding, padding = _c === void 0 ? 0 : _c, position = _a.position, bbox = _a.bbox;\n var crossLineTranslationDirections = yDirection\n ? horizontalCrosslineTranslationDirections\n : verticalCrossLineTranslationDirections;\n var _d = (_b = crossLineTranslationDirections[position]) !== null && _b !== void 0 ? _b : crossLineTranslationDirections['top'], xTranslationDirection = _d.xTranslationDirection, yTranslationDirection = _d.yTranslationDirection;\n var w = yDirection ? bbox.width : bbox.height;\n var h = yDirection ? bbox.height : bbox.width;\n var xTranslation = xTranslationDirection * (padding + w / 2);\n var yTranslation = yTranslationDirection * (padding + h / 2);\n return {\n xTranslation: xTranslation,\n yTranslation: yTranslation,\n };\n};\nvar POSITION_TOP_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xEnd / 2, y: yStart };\n }\n else {\n return { x: xEnd, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n }\n};\nvar POSITION_LEFT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xStart, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n }\n else {\n return { x: xEnd / 2, y: yStart };\n }\n};\nvar POSITION_RIGHT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xEnd, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n }\n else {\n return { x: xEnd / 2, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n};\nvar POSITION_BOTTOM_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xEnd / 2, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n else {\n return { x: xStart, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n }\n};\nvar POSITION_INSIDE_COORDINATES = function (_a) {\n var xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n return { x: xEnd / 2, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n};\nvar POSITION_TOP_LEFT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart;\n if (yDirection) {\n return { x: xStart / 2, y: yStart };\n }\n else {\n return { x: xEnd, y: yStart };\n }\n};\nvar POSITION_BOTTOM_LEFT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xStart = _a.xStart, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xStart, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n else {\n return { x: xStart, y: yStart };\n }\n};\nvar POSITION_TOP_RIGHT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xEnd, y: yStart };\n }\n else {\n return { x: xEnd, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n};\nvar POSITION_BOTTOM_RIGHT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xEnd, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n else {\n return { x: xStart, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n};\nvar labeldDirectionHandling = {\n top: { c: POSITION_TOP_COORDINATES },\n bottom: { c: POSITION_BOTTOM_COORDINATES },\n left: { c: POSITION_LEFT_COORDINATES },\n right: { c: POSITION_RIGHT_COORDINATES },\n topLeft: { c: POSITION_TOP_LEFT_COORDINATES },\n topRight: { c: POSITION_TOP_RIGHT_COORDINATES },\n bottomLeft: { c: POSITION_BOTTOM_LEFT_COORDINATES },\n bottomRight: { c: POSITION_BOTTOM_RIGHT_COORDINATES },\n inside: { c: POSITION_INSIDE_COORDINATES },\n insideLeft: { c: POSITION_LEFT_COORDINATES },\n insideRight: { c: POSITION_RIGHT_COORDINATES },\n insideTop: { c: POSITION_TOP_COORDINATES },\n insideBottom: { c: POSITION_BOTTOM_COORDINATES },\n insideTopLeft: { c: POSITION_TOP_LEFT_COORDINATES },\n insideBottomLeft: { c: POSITION_BOTTOM_LEFT_COORDINATES },\n insideTopRight: { c: POSITION_TOP_RIGHT_COORDINATES },\n insideBottomRight: { c: POSITION_BOTTOM_RIGHT_COORDINATES },\n};\n\nvar __extends$1I = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$m = (undefined && undefined.__assign) || function () {\n __assign$m = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$m.apply(this, arguments);\n};\nvar __decorate$1e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Range = /** @class */ (function (_super) {\n __extends$1I(Range, _super);\n function Range() {\n var _this = _super.call(this) || this;\n _this.x1 = 0;\n _this.y1 = 0;\n _this.x2 = 0;\n _this.y2 = 0;\n _this.startLine = false;\n _this.endLine = false;\n _this.isRange = false;\n _this.restoreOwnStyles();\n return _this;\n }\n Range.prototype.computeBBox = function () {\n return new BBox(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n };\n Range.prototype.isPointInPath = function (_x, _y) {\n return false;\n };\n Range.prototype.render = function (renderCtx) {\n var _a;\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n var _b = this, x1 = _b.x1, y1 = _b.y1, x2 = _b.x2, y2 = _b.y2;\n x1 = this.align(x1);\n y1 = this.align(y1);\n x2 = this.align(x2);\n y2 = this.align(y2);\n var _c = this, fill = _c.fill, opacity = _c.opacity, isRange = _c.isRange;\n var fillActive = !!(isRange && fill);\n if (fillActive) {\n var fillOpacity = this.fillOpacity;\n ctx.fillStyle = fill;\n ctx.globalAlpha = opacity * fillOpacity;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x1, y2);\n ctx.closePath();\n ctx.fill();\n }\n var _d = this, stroke = _d.stroke, strokeWidth = _d.strokeWidth, startLine = _d.startLine, endLine = _d.endLine;\n var strokeActive = !!((startLine || endLine) && stroke && strokeWidth);\n if (strokeActive) {\n var _e = this, strokeOpacity = _e.strokeOpacity, lineDash = _e.lineDash, lineDashOffset = _e.lineDashOffset, lineCap = _e.lineCap, lineJoin = _e.lineJoin;\n ctx.strokeStyle = stroke;\n ctx.globalAlpha = opacity * strokeOpacity;\n ctx.lineWidth = strokeWidth;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n ctx.beginPath();\n if (startLine) {\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y1);\n }\n if (endLine) {\n ctx.moveTo(x2, y2);\n ctx.lineTo(x1, y2);\n }\n ctx.stroke();\n }\n (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.markClean();\n _super.prototype.render.call(this, renderCtx);\n };\n Range.className = 'Range';\n Range.defaultStyles = __assign$m(__assign$m({}, Shape.defaultStyles), { strokeWidth: 1 });\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"x1\", void 0);\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"y1\", void 0);\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"x2\", void 0);\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"y2\", void 0);\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"startLine\", void 0);\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"endLine\", void 0);\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"isRange\", void 0);\n return Range;\n}(Shape));\n\nvar __decorate$1d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$o = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$c = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$o(arguments[i]));\n return ar;\n};\nvar CROSSLINE_LABEL_POSITIONS = [\n 'top',\n 'left',\n 'right',\n 'bottom',\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight',\n 'inside',\n 'insideLeft',\n 'insideRight',\n 'insideTop',\n 'insideBottom',\n 'insideTopLeft',\n 'insideBottomLeft',\n 'insideTopRight',\n 'insideBottomRight',\n];\nvar OPT_CROSSLINE_LABEL_POSITION = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v) { return CROSSLINE_LABEL_POSITIONS.includes(v); }); }, \"expecting an optional crossLine label position keyword such as 'topLeft', 'topRight' or 'inside'\");\nvar OPT_CROSSLINE_TYPE = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v) { return v === 'range' || v === 'line'; }); }, \"expecting a crossLine type keyword such as 'range' or 'line'\");\nvar CrossLineLabel = /** @class */ (function () {\n function CrossLineLabel() {\n this.enabled = undefined;\n this.text = undefined;\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 14;\n this.fontFamily = 'Verdana, sans-serif';\n /**\n * The padding between the label and the line.\n */\n this.padding = 5;\n /**\n * The color of the labels.\n */\n this.color = 'rgba(87, 87, 87, 1)';\n this.position = undefined;\n this.rotation = undefined;\n this.parallel = undefined;\n }\n __decorate$1d([\n Validate(OPT_BOOLEAN)\n ], CrossLineLabel.prototype, \"enabled\", void 0);\n __decorate$1d([\n Validate(OPT_STRING)\n ], CrossLineLabel.prototype, \"text\", void 0);\n __decorate$1d([\n Validate(OPT_FONT_STYLE)\n ], CrossLineLabel.prototype, \"fontStyle\", void 0);\n __decorate$1d([\n Validate(OPT_FONT_WEIGHT)\n ], CrossLineLabel.prototype, \"fontWeight\", void 0);\n __decorate$1d([\n Validate(NUMBER(0))\n ], CrossLineLabel.prototype, \"fontSize\", void 0);\n __decorate$1d([\n Validate(STRING)\n ], CrossLineLabel.prototype, \"fontFamily\", void 0);\n __decorate$1d([\n Validate(NUMBER(0))\n ], CrossLineLabel.prototype, \"padding\", void 0);\n __decorate$1d([\n Validate(OPT_COLOR_STRING)\n ], CrossLineLabel.prototype, \"color\", void 0);\n __decorate$1d([\n Validate(OPT_CROSSLINE_LABEL_POSITION)\n ], CrossLineLabel.prototype, \"position\", void 0);\n __decorate$1d([\n Validate(OPT_NUMBER(-360, 360))\n ], CrossLineLabel.prototype, \"rotation\", void 0);\n __decorate$1d([\n Validate(OPT_BOOLEAN)\n ], CrossLineLabel.prototype, \"parallel\", void 0);\n return CrossLineLabel;\n}());\nvar CrossLine = /** @class */ (function () {\n function CrossLine() {\n this.id = createId$1(this);\n this.enabled = undefined;\n this.type = undefined;\n this.range = undefined;\n this.value = undefined;\n this.fill = undefined;\n this.fillOpacity = undefined;\n this.stroke = undefined;\n this.strokeWidth = undefined;\n this.strokeOpacity = undefined;\n this.lineDash = undefined;\n this.label = new CrossLineLabel();\n this.scale = undefined;\n this.clippedRange = [-Infinity, Infinity];\n this.gridLength = 0;\n this.sideFlag = -1;\n this.parallelFlipRotation = 0;\n this.regularFlipRotation = 0;\n this.direction = ChartAxisDirection.X;\n this.group = new Group({ name: \"\" + this.id, layer: true, zIndex: CrossLine.LINE_LAYER_ZINDEX });\n this.crossLineRange = new Range();\n this.crossLineLabel = new Text();\n this.labelPoint = undefined;\n this.data = [];\n this.startLine = false;\n this.endLine = false;\n this.isRange = false;\n var _a = this, group = _a.group, crossLineRange = _a.crossLineRange, crossLineLabel = _a.crossLineLabel;\n group.append([crossLineRange, crossLineLabel]);\n crossLineRange.pointerEvents = PointerEvents.None;\n }\n CrossLine.prototype.update = function (visible) {\n if (!this.enabled) {\n return;\n }\n this.group.visible = visible;\n if (!visible) {\n return;\n }\n var dataCreated = this.createNodeData();\n if (!dataCreated) {\n this.group.visible = false;\n return;\n }\n this.updateNodes();\n this.group.zIndex = this.getZIndex(this.isRange);\n };\n CrossLine.prototype.updateNodes = function () {\n this.updateRangeNode();\n if (this.label.enabled) {\n this.updateLabel();\n this.positionLabel();\n }\n };\n CrossLine.prototype.createNodeData = function () {\n var _a, _b, _c;\n var _d, _e;\n var _f = this, scale = _f.scale, gridLength = _f.gridLength, sideFlag = _f.sideFlag, direction = _f.direction, _g = _f.label.position, position = _g === void 0 ? 'top' : _g, clippedRange = _f.clippedRange, _h = _f.strokeWidth, strokeWidth = _h === void 0 ? 0 : _h;\n if (!scale) {\n return false;\n }\n var bandwidth = (_d = scale.bandwidth) !== null && _d !== void 0 ? _d : 0;\n var clippedRangeClamper = function (x) {\n return Math.max(Math.min.apply(Math, __spread$c(clippedRange)), Math.min(Math.max.apply(Math, __spread$c(clippedRange)), x));\n };\n var _j = __read$o([0, sideFlag * gridLength], 2), xStart = _j[0], xEnd = _j[1];\n var _k = __read$o(this.getRange(), 2), yStart = _k[0], yEnd = _k[1];\n var _l = __read$o([\n Number(scale.convert(yStart, { strict: false })),\n scale.convert(yEnd, { strict: false }) + bandwidth,\n ], 2), clampedYStart = _l[0], clampedYEnd = _l[1];\n clampedYStart = clippedRangeClamper(clampedYStart);\n clampedYEnd = clippedRangeClamper(clampedYEnd);\n _a = __read$o([Number(scale.convert(yStart)), scale.convert(yEnd) + bandwidth], 2), yStart = _a[0], yEnd = _a[1];\n var validRange = !isNaN(clampedYStart) &&\n !isNaN(clampedYEnd) &&\n (yStart === clampedYStart || yEnd === clampedYEnd || clampedYStart !== clampedYEnd) &&\n Math.abs(clampedYEnd - clampedYStart) > 0;\n if (validRange) {\n var reverse = clampedYStart !== Math.min(clampedYStart, clampedYEnd);\n if (reverse) {\n _b = __read$o([\n Math.min(clampedYStart, clampedYEnd),\n Math.max(clampedYStart, clampedYEnd),\n ], 2), clampedYStart = _b[0], clampedYEnd = _b[1];\n _c = __read$o([yEnd, yStart], 2), yStart = _c[0], yEnd = _c[1];\n }\n }\n this.isRange = validRange;\n this.startLine = !isNaN(yStart) && strokeWidth > 0 && yStart === clampedYStart;\n this.endLine = !isNaN(yEnd) && strokeWidth > 0 && yEnd === clampedYEnd;\n if (!validRange && !this.startLine && !this.endLine) {\n return false;\n }\n this.data = [clampedYStart, clampedYEnd];\n if (this.label.enabled) {\n var yDirection = direction === ChartAxisDirection.Y;\n var _m = ((_e = labeldDirectionHandling[position]) !== null && _e !== void 0 ? _e : {}).c, c = _m === void 0 ? POSITION_TOP_COORDINATES : _m;\n var _o = c({ yDirection: yDirection, xStart: xStart, xEnd: xEnd, yStart: clampedYStart, yEnd: clampedYEnd }), labelX = _o.x, labelY = _o.y;\n this.labelPoint = {\n x: labelX,\n y: labelY,\n };\n }\n return true;\n };\n CrossLine.prototype.updateRangeNode = function () {\n var _a;\n var _b = this, crossLineRange = _b.crossLineRange, sideFlag = _b.sideFlag, gridLength = _b.gridLength, data = _b.data, startLine = _b.startLine, endLine = _b.endLine, isRange = _b.isRange, fill = _b.fill, fillOpacity = _b.fillOpacity, stroke = _b.stroke, strokeWidth = _b.strokeWidth, lineDash = _b.lineDash;\n crossLineRange.x1 = 0;\n crossLineRange.x2 = sideFlag * gridLength;\n crossLineRange.y1 = data[0];\n crossLineRange.y2 = data[1];\n crossLineRange.startLine = startLine;\n crossLineRange.endLine = endLine;\n crossLineRange.isRange = isRange;\n crossLineRange.fill = fill;\n crossLineRange.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n crossLineRange.stroke = stroke;\n crossLineRange.strokeWidth = strokeWidth !== null && strokeWidth !== void 0 ? strokeWidth : 1;\n crossLineRange.strokeOpacity = (_a = this.strokeOpacity) !== null && _a !== void 0 ? _a : 1;\n crossLineRange.lineDash = lineDash;\n };\n CrossLine.prototype.updateLabel = function () {\n var _a = this, crossLineLabel = _a.crossLineLabel, label = _a.label;\n if (!label.text) {\n return;\n }\n crossLineLabel.fontStyle = label.fontStyle;\n crossLineLabel.fontWeight = label.fontWeight;\n crossLineLabel.fontSize = label.fontSize;\n crossLineLabel.fontFamily = label.fontFamily;\n crossLineLabel.fill = label.color;\n crossLineLabel.text = label.text;\n };\n CrossLine.prototype.positionLabel = function () {\n var _a = this, crossLineLabel = _a.crossLineLabel, _b = _a.labelPoint, _c = _b === void 0 ? {} : _b, _d = _c.x, x = _d === void 0 ? undefined : _d, _e = _c.y, y = _e === void 0 ? undefined : _e, _f = _a.label, parallel = _f.parallel, rotation = _f.rotation, _g = _f.position, position = _g === void 0 ? 'top' : _g, _h = _f.padding, padding = _h === void 0 ? 0 : _h, direction = _a.direction, parallelFlipRotation = _a.parallelFlipRotation, regularFlipRotation = _a.regularFlipRotation;\n if (x === undefined || y === undefined) {\n return;\n }\n var _j = calculateLabelRotation({\n rotation: rotation,\n parallel: parallel,\n regularFlipRotation: regularFlipRotation,\n parallelFlipRotation: parallelFlipRotation,\n }), autoRotation = _j.autoRotation, labelRotation = _j.labelRotation;\n crossLineLabel.rotation = autoRotation + labelRotation;\n crossLineLabel.textBaseline = 'middle';\n crossLineLabel.textAlign = 'center';\n var bbox = this.computeLabelBBox();\n if (!bbox) {\n return;\n }\n var yDirection = direction === ChartAxisDirection.Y;\n var _k = calculateLabelTranslation({ yDirection: yDirection, padding: padding, position: position, bbox: bbox }), xTranslation = _k.xTranslation, yTranslation = _k.yTranslation;\n crossLineLabel.translationX = x + xTranslation;\n crossLineLabel.translationY = y + yTranslation;\n };\n CrossLine.prototype.getZIndex = function (isRange) {\n if (isRange === void 0) { isRange = false; }\n if (isRange) {\n return CrossLine.RANGE_LAYER_ZINDEX;\n }\n return CrossLine.LINE_LAYER_ZINDEX;\n };\n CrossLine.prototype.getRange = function () {\n var _a;\n var _b = this, value = _b.value, range = _b.range, scale = _b.scale;\n var isContinuous = scale instanceof ContinuousScale;\n var _c = __read$o(range !== null && range !== void 0 ? range : [value, undefined], 2), start = _c[0], end = _c[1];\n if (!isContinuous && end === undefined) {\n end = start;\n }\n _a = __read$o([checkDatum(start, isContinuous), checkDatum(end, isContinuous)], 2), start = _a[0], end = _a[1];\n if (isContinuous && start === end) {\n end = undefined;\n }\n if (start === undefined && end !== undefined) {\n start = end;\n end = undefined;\n }\n return [start, end];\n };\n CrossLine.prototype.computeLabelBBox = function () {\n return this.crossLineLabel.computeTransformedBBox();\n };\n CrossLine.prototype.calculatePadding = function (padding, seriesRect) {\n var _a, _b, _c, _d, _e, _f;\n var _g = this, isRange = _g.isRange, startLine = _g.startLine, endLine = _g.endLine;\n if (!isRange && !startLine && !endLine) {\n return;\n }\n var crossLineLabelBBox = this.computeLabelBBox();\n var labelX = crossLineLabelBBox === null || crossLineLabelBBox === void 0 ? void 0 : crossLineLabelBBox.x;\n var labelY = crossLineLabelBBox === null || crossLineLabelBBox === void 0 ? void 0 : crossLineLabelBBox.y;\n if (labelX == undefined || labelY == undefined) {\n return;\n }\n var labelWidth = (_a = crossLineLabelBBox === null || crossLineLabelBBox === void 0 ? void 0 : crossLineLabelBBox.width) !== null && _a !== void 0 ? _a : 0;\n var labelHeight = (_b = crossLineLabelBBox === null || crossLineLabelBBox === void 0 ? void 0 : crossLineLabelBBox.height) !== null && _b !== void 0 ? _b : 0;\n if (labelWidth > seriesRect.width || labelHeight > seriesRect.height) {\n // If label is bigger than seriesRect, trying to pad is just going to cause\n // layout instability.\n return;\n }\n if (labelX + labelWidth >= seriesRect.x + seriesRect.width) {\n var paddingRight = labelX + labelWidth - (seriesRect.x + seriesRect.width);\n padding.right = ((_c = padding.right) !== null && _c !== void 0 ? _c : 0) >= paddingRight ? padding.right : paddingRight;\n }\n else if (labelX <= seriesRect.x) {\n var paddingLeft = seriesRect.x - labelX;\n padding.left = ((_d = padding.left) !== null && _d !== void 0 ? _d : 0) >= paddingLeft ? padding.left : paddingLeft;\n }\n if (labelY + labelHeight >= seriesRect.y + seriesRect.height) {\n var paddingBottom = labelY + labelHeight - (seriesRect.y + seriesRect.height);\n padding.bottom = ((_e = padding.bottom) !== null && _e !== void 0 ? _e : 0) >= paddingBottom ? padding.bottom : paddingBottom;\n }\n else if (labelY <= seriesRect.y) {\n var paddingTop = seriesRect.y - labelY;\n padding.top = ((_f = padding.top) !== null && _f !== void 0 ? _f : 0) >= paddingTop ? padding.top : paddingTop;\n }\n };\n CrossLine.LINE_LAYER_ZINDEX = Layers.SERIES_CROSSLINE_LINE_ZINDEX;\n CrossLine.RANGE_LAYER_ZINDEX = Layers.SERIES_CROSSLINE_RANGE_ZINDEX;\n CrossLine.className = 'CrossLine';\n __decorate$1d([\n Validate(OPT_BOOLEAN)\n ], CrossLine.prototype, \"enabled\", void 0);\n __decorate$1d([\n Validate(OPT_CROSSLINE_TYPE)\n ], CrossLine.prototype, \"type\", void 0);\n __decorate$1d([\n Validate(OPT_ARRAY(2))\n ], CrossLine.prototype, \"range\", void 0);\n __decorate$1d([\n Validate(OPT_COLOR_STRING)\n ], CrossLine.prototype, \"fill\", void 0);\n __decorate$1d([\n Validate(OPT_NUMBER(0, 1))\n ], CrossLine.prototype, \"fillOpacity\", void 0);\n __decorate$1d([\n Validate(OPT_COLOR_STRING)\n ], CrossLine.prototype, \"stroke\", void 0);\n __decorate$1d([\n Validate(OPT_NUMBER())\n ], CrossLine.prototype, \"strokeWidth\", void 0);\n __decorate$1d([\n Validate(OPT_NUMBER(0, 1))\n ], CrossLine.prototype, \"strokeOpacity\", void 0);\n __decorate$1d([\n Validate(OPT_LINE_DASH)\n ], CrossLine.prototype, \"lineDash\", void 0);\n return CrossLine;\n}());\n\nvar __extends$1H = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Image = /** @class */ (function (_super) {\n __extends$1H(Image, _super);\n function Image(sourceImage) {\n var _this = _super.call(this) || this;\n _this.x = 0;\n _this.y = 0;\n _this.width = 0;\n _this.height = 0;\n _this.opacity = 1;\n _this.sourceImage = sourceImage;\n return _this;\n }\n Image.prototype.render = function (renderCtx) {\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped++;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n var image = this.sourceImage;\n ctx.globalAlpha = this.opacity;\n ctx.drawImage(image, 0, 0, image.width, image.height, this.x, this.y, this.width, this.height);\n _super.prototype.render.call(this, renderCtx);\n };\n __decorate$1c([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Image.prototype, \"x\", void 0);\n __decorate$1c([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Image.prototype, \"y\", void 0);\n __decorate$1c([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Image.prototype, \"width\", void 0);\n __decorate$1c([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Image.prototype, \"height\", void 0);\n __decorate$1c([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Image.prototype, \"opacity\", void 0);\n return Image;\n}(Node));\n\nvar BackgroundImage = /** @class */ (function () {\n function BackgroundImage() {\n var _this = this;\n this._image = document.createElement('img');\n this.loadedSynchronously = true;\n this.left = undefined;\n this.top = undefined;\n this.right = undefined;\n this.bottom = undefined;\n this.width = undefined;\n this.height = undefined;\n this.opacity = 1;\n this.containerWidth = 0;\n this.containerHeight = 0;\n this.onload = undefined;\n this.onImageLoad = function () {\n if (_this.loadedSynchronously) {\n return;\n }\n _this.node.visible = false; // Ensure marked dirty.\n _this.performLayout(_this.containerWidth, _this.containerHeight);\n if (_this.onload) {\n _this.onload();\n }\n };\n this.node = new Image(this._image);\n this._image.onload = this.onImageLoad;\n }\n Object.defineProperty(BackgroundImage.prototype, \"url\", {\n get: function () {\n return this._image.src;\n },\n set: function (value) {\n this._image.src = value;\n this.loadedSynchronously = this.complete;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BackgroundImage.prototype, \"complete\", {\n get: function () {\n // In tests image is nodejs-canvas Image, which doesn't report its status in the 'complete' method correctly.\n return this._image.width > 0 && this._image.height > 0;\n },\n enumerable: false,\n configurable: true\n });\n BackgroundImage.prototype.performLayout = function (containerWidth, containerHeight) {\n this.containerWidth = containerWidth;\n this.containerHeight = containerHeight;\n if (!this.complete) {\n this.node.visible = false;\n return;\n }\n var position = this.calculatePosition(this._image.width, this._image.height);\n Object.assign(this.node, position);\n this.node.visible = true;\n this.node.opacity = this.opacity;\n };\n BackgroundImage.prototype.calculatePosition = function (naturalWidth, naturalHeight) {\n var left = this.left;\n var right = this.right;\n var width = this.width;\n var top = this.top;\n var bottom = this.bottom;\n var height = this.height;\n if (left != null) {\n if (right != null) {\n width = this.containerWidth - left - right;\n }\n else if (width != null) {\n right = this.containerWidth - left + width;\n }\n }\n else if (right != null) {\n if (width != null) {\n left = this.containerWidth - right - width;\n }\n }\n if (top != null) {\n if (bottom != null) {\n height = this.containerHeight - bottom - top;\n }\n else if (height != null) {\n bottom = this.containerHeight - top - height;\n }\n }\n else if (bottom != null) {\n if (height != null) {\n top = this.containerHeight - bottom - height;\n }\n }\n // If width and height still undetermined, derive them from natural size.\n if (width == null) {\n if (height == null) {\n width = naturalWidth;\n height = naturalHeight;\n }\n else {\n width = Math.ceil((naturalWidth * height) / naturalHeight);\n }\n }\n else if (height == null) {\n height = Math.ceil((naturalHeight * width) / naturalWidth);\n }\n if (left == null) {\n if (right == null) {\n left = Math.floor((this.containerWidth - width) / 2);\n }\n else {\n left = this.containerWidth - right - width;\n }\n }\n if (top == null) {\n if (bottom == null) {\n top = Math.floor((this.containerHeight - height) / 2);\n }\n else {\n top = this.containerHeight - height - bottom;\n }\n }\n return { x: left, y: top, width: width, height: height };\n };\n return BackgroundImage;\n}());\n\nvar __assign$l = (undefined && undefined.__assign) || function () {\n __assign$l = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$l.apply(this, arguments);\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$n = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$b = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$n(arguments[i]));\n return ar;\n};\nvar __values$8 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction chartType(options) {\n if (isAgCartesianChartOptions(options)) {\n return 'cartesian';\n }\n else if (isAgPolarChartOptions(options)) {\n return 'polar';\n }\n else if (isAgHierarchyChartOptions(options)) {\n return 'hierarchy';\n }\n throw new Error(\"AG Chart - unknown type of chart for options with type: \" + options.type);\n}\n/**\n * Factory for creating and updating instances of AgChartInstance.\n *\n * @docsInterface\n */\nvar AgChart = /** @class */ (function () {\n function AgChart() {\n }\n /**\n * Create a new `AgChartInstance` based upon the given configuration options.\n */\n AgChart.create = function (options) {\n return AgChartInternal.createOrUpdate(options);\n };\n /**\n * Update an existing `AgChartInstance`. Options provided should be complete and not\n * partial.\n * <br/>\n * <br/>\n * **NOTE**: As each call could trigger a chart redraw, multiple calls to update options in\n * quick succession could result in undesirable flickering, so callers should batch up and/or\n * debounce changes to avoid unintended partial update renderings.\n */\n AgChart.update = function (chart, options) {\n if (!AgChartInstanceProxy.isInstance(chart)) {\n throw new Error('AG Charts - invalid chart reference passed');\n }\n AgChartInternal.createOrUpdate(options, chart);\n };\n /**\n * Update an existing `AgChartInstance` by applying a partial set of option changes.\n * <br/>\n * <br/>\n * **NOTE**: As each call could trigger a chart redraw, each individual delta options update\n * should leave the chart in a valid options state. Also, multiple calls to update options in\n * quick succession could result in undesirable flickering, so callers should batch up and/or\n * debounce changes to avoid unintended partial update renderings.\n */\n AgChart.updateDelta = function (chart, deltaOptions) {\n if (!AgChartInstanceProxy.isInstance(chart)) {\n throw new Error('AG Charts - invalid chart reference passed');\n }\n return AgChartInternal.updateUserDelta(chart, deltaOptions);\n };\n /**\n * Starts a browser-based image download for the given `AgChartInstance`.\n */\n AgChart.download = function (chart, options) {\n if (!(chart instanceof AgChartInstanceProxy)) {\n throw new Error('AG Charts - invalid chart reference passed');\n }\n return AgChartInternal.download(chart, options);\n };\n /**\n * Returns a base64-encoded image data URL for the given `AgChartInstance`.\n */\n AgChart.getImageDataURL = function (chart, options) {\n if (!(chart instanceof AgChartInstanceProxy)) {\n throw new Error('AG Charts - invalid chart reference passed');\n }\n return AgChartInternal.getImageDataURL(chart, options);\n };\n return AgChart;\n}());\n/**\n * Proxy class, to allow library users to keep a stable reference to their chart, even if we need\n * to switch concrete class (e.g. when switching between CartesianChart vs. PolarChart).\n */\nvar AgChartInstanceProxy = /** @class */ (function () {\n function AgChartInstanceProxy(chart) {\n this.chart = chart;\n }\n AgChartInstanceProxy.isInstance = function (x) {\n var _a, _b;\n if (x instanceof AgChartInstanceProxy) {\n // Simple case.\n return true;\n }\n if (((_a = x.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'AgChartInstanceProxy' && x.chart != null) {\n // instanceof can fail if mixing bundles (e.g. grid all-modules vs. standalone).\n return true;\n }\n var signatureProps = Object.keys((_b = x.constructor) === null || _b === void 0 ? void 0 : _b.prototype);\n var heuristicTypeCheck = Object.keys(AgChartInstanceProxy.prototype).every(function (prop) {\n return signatureProps.includes(prop);\n });\n if (heuristicTypeCheck && x.chart != null) {\n // minimised code case - the constructor name is mangled but prototype names are not :P\n return true;\n }\n return false;\n };\n AgChartInstanceProxy.prototype.getOptions = function () {\n return this.chart.getOptions();\n };\n AgChartInstanceProxy.prototype.destroy = function () {\n this.chart.destroy();\n };\n return AgChartInstanceProxy;\n}());\nvar AgChartInternal = /** @class */ (function () {\n function AgChartInternal() {\n }\n AgChartInternal.createOrUpdate = function (userOptions, proxy) {\n var _this = this;\n debug('>>> createOrUpdate() user options', userOptions);\n var mixinOpts = {};\n if (AgChartInternal.DEBUG() === true) {\n mixinOpts['debug'] = true;\n }\n var overrideDevicePixelRatio = userOptions.overrideDevicePixelRatio;\n delete userOptions['overrideDevicePixelRatio'];\n initialiseSeriesModules();\n var processedOptions = prepareOptions(userOptions, mixinOpts, seriesDefaults);\n var chart = proxy === null || proxy === void 0 ? void 0 : proxy.chart;\n if (chart == null || chartType(userOptions) !== chartType(chart.processedOptions)) {\n chart = AgChartInternal.createChartInstance(processedOptions, overrideDevicePixelRatio, chart);\n }\n if (proxy == null) {\n proxy = new AgChartInstanceProxy(chart);\n }\n else {\n proxy.chart = chart;\n }\n var chartToUpdate = chart;\n chartToUpdate.queuedUserOptions.push(userOptions);\n var dequeue = function () {\n // If there are a lot of update calls, `requestFactoryUpdate()` may skip callbacks,\n // so we need to remove all queue items up to the last successfully applied item.\n var queuedOptionsIdx = chartToUpdate.queuedUserOptions.indexOf(userOptions);\n chartToUpdate.queuedUserOptions.splice(0, queuedOptionsIdx);\n };\n chartToUpdate.requestFactoryUpdate(function () { return __awaiter(_this, void 0, void 0, function () {\n var deltaOptions;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // Chart destroyed, skip processing.\n if (chartToUpdate.destroyed)\n return [2 /*return*/];\n deltaOptions = jsonDiff(chartToUpdate.processedOptions, processedOptions);\n if (deltaOptions == null) {\n dequeue();\n return [2 /*return*/];\n }\n return [4 /*yield*/, AgChartInternal.updateDelta(chartToUpdate, deltaOptions, userOptions)];\n case 1:\n _a.sent();\n dequeue();\n return [2 /*return*/];\n }\n });\n }); });\n return proxy;\n };\n AgChartInternal.updateUserDelta = function (proxy, deltaOptions) {\n var _a;\n var chart = proxy.chart, queuedUserOptions = proxy.chart.queuedUserOptions;\n var lastUpdateOptions = (_a = queuedUserOptions[queuedUserOptions.length - 1]) !== null && _a !== void 0 ? _a : chart.userOptions;\n var userOptions = jsonMerge([lastUpdateOptions, deltaOptions]);\n debug('>>> updateUserDelta() user delta', deltaOptions);\n debug('base options', lastUpdateOptions);\n AgChartInternal.createOrUpdate(userOptions, proxy);\n };\n /**\n * Returns the content of the current canvas as an image.\n * @param opts The download options including `width` and `height` of the image as well as `fileName` and `fileFormat`.\n */\n AgChartInternal.download = function (proxy, opts) {\n var _this = this;\n var asyncDownload = function () { return __awaiter(_this, void 0, void 0, function () {\n var maybeClone, chart;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, AgChartInternal.prepareResizedChart(proxy, opts)];\n case 1:\n maybeClone = _a.sent();\n chart = maybeClone.chart;\n chart.scene.download(opts === null || opts === void 0 ? void 0 : opts.fileName, opts === null || opts === void 0 ? void 0 : opts.fileFormat);\n if (maybeClone !== proxy) {\n maybeClone.destroy();\n }\n return [2 /*return*/];\n }\n });\n }); };\n asyncDownload();\n };\n AgChartInternal.getImageDataURL = function (proxy, opts) {\n return __awaiter(this, void 0, void 0, function () {\n var maybeClone, chart, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, AgChartInternal.prepareResizedChart(proxy, opts)];\n case 1:\n maybeClone = _a.sent();\n chart = maybeClone.chart;\n result = chart.scene.canvas.getDataURL(opts === null || opts === void 0 ? void 0 : opts.fileFormat);\n if (maybeClone !== proxy) {\n maybeClone.destroy();\n }\n return [2 /*return*/, result];\n }\n });\n });\n };\n AgChartInternal.prepareResizedChart = function (proxy, opts) {\n return __awaiter(this, void 0, void 0, function () {\n var chart, _a, width, height, currentWidth, currentHeight, unchanged, options, clonedChart;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n chart = proxy.chart;\n _a = opts || {}, width = _a.width, height = _a.height;\n currentWidth = chart.width;\n currentHeight = chart.height;\n unchanged = (width === undefined && height === undefined) ||\n (chart.scene.canvas.pixelRatio === 1 && currentWidth === width && currentHeight === height);\n if (unchanged) {\n return [2 /*return*/, proxy];\n }\n width = width !== null && width !== void 0 ? width : currentWidth;\n height = height !== null && height !== void 0 ? height : currentHeight;\n options = __assign$l(__assign$l({}, chart.userOptions), { container: document.createElement('div'), width: width,\n height: height, autoSize: false, overrideDevicePixelRatio: 1 });\n clonedChart = AgChartInternal.createOrUpdate(options);\n return [4 /*yield*/, clonedChart.chart.waitForUpdate()];\n case 1:\n _b.sent();\n return [2 /*return*/, clonedChart];\n }\n });\n });\n };\n AgChartInternal.createChartInstance = function (options, overrideDevicePixelRatio, oldChart) {\n var transferableResource = oldChart === null || oldChart === void 0 ? void 0 : oldChart.destroy({ keepTransferableResources: true });\n if (isAgCartesianChartOptions(options)) {\n return new CartesianChart(document, overrideDevicePixelRatio, transferableResource);\n }\n else if (isAgHierarchyChartOptions(options)) {\n return new HierarchyChart(document, overrideDevicePixelRatio, transferableResource);\n }\n else if (isAgPolarChartOptions(options)) {\n return new PolarChart(document, overrideDevicePixelRatio, transferableResource);\n }\n throw new Error(\"AG Charts - couldn't apply configuration, check type of options: \" + options['type']);\n };\n AgChartInternal.updateDelta = function (chart, processedOptions, userOptions) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (processedOptions.type == null) {\n processedOptions = __assign$l(__assign$l({}, processedOptions), { type: chart.processedOptions.type || optionsType(processedOptions) });\n }\n return [4 /*yield*/, chart.awaitUpdateCompletion()];\n case 1:\n _a.sent();\n if (chart.destroyed)\n return [2 /*return*/];\n debug('applying delta', processedOptions);\n applyChartOptions(chart, processedOptions, userOptions);\n return [2 /*return*/];\n }\n });\n });\n };\n AgChartInternal.DEBUG = function () { var _a; return (_a = windowValue('agChartsDebug')) !== null && _a !== void 0 ? _a : false; };\n return AgChartInternal;\n}());\nfunction debug(message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n if ([true, 'opts'].includes(AgChartInternal.DEBUG())) {\n Logger.debug.apply(Logger, __spread$b([message], optionalParams));\n }\n}\nfunction applyChartOptions(chart, processedOptions, userOptions) {\n var _a, _b, _c, _d;\n var completeOptions = jsonMerge([(_a = chart.processedOptions) !== null && _a !== void 0 ? _a : {}, processedOptions], noDataCloneMergeOptions);\n var modulesChanged = applyModules(chart, completeOptions);\n var skip = ['type', 'data', 'series', 'autoSize', 'listeners', 'theme', 'legend.listeners'];\n if (isAgCartesianChartOptions(processedOptions)) {\n // Append axes to defaults.\n skip.push('axes');\n }\n else if (isAgPolarChartOptions(processedOptions) || isAgHierarchyChartOptions(processedOptions)) ;\n else {\n throw new Error(\"AG Charts - couldn't apply configuration, check type of options and chart: \" + processedOptions['type']);\n }\n // Needs to be done before applying the series to detect if a seriesNode[Double]Click listener has been added\n if (processedOptions.listeners) {\n registerListeners(chart, processedOptions.listeners);\n }\n applyOptionValues(chart, processedOptions, { skip: skip });\n var forceNodeDataRefresh = false;\n if (processedOptions.series && processedOptions.series.length > 0) {\n applySeries(chart, processedOptions);\n forceNodeDataRefresh = true;\n }\n if (isAgCartesianChartOptions(processedOptions) && processedOptions.axes) {\n var axesPresent = applyAxes(chart, processedOptions);\n if (axesPresent) {\n forceNodeDataRefresh = true;\n }\n }\n var seriesOpts = processedOptions.series;\n var seriesDataUpdate = !!processedOptions.data || (seriesOpts === null || seriesOpts === void 0 ? void 0 : seriesOpts.some(function (s) { return s.data != null; }));\n var otherRefreshUpdate = processedOptions.legend || processedOptions.title || processedOptions.subtitle;\n forceNodeDataRefresh = forceNodeDataRefresh || seriesDataUpdate || !!otherRefreshUpdate;\n if (processedOptions.data) {\n chart.data = processedOptions.data;\n }\n // Needs to be done last to avoid overrides by width/height properties.\n if (processedOptions.autoSize != null) {\n chart.autoSize = processedOptions.autoSize;\n }\n if ((_b = processedOptions.legend) === null || _b === void 0 ? void 0 : _b.listeners) {\n Object.assign(chart.legend.listeners, (_c = processedOptions.legend.listeners) !== null && _c !== void 0 ? _c : {});\n }\n if (processedOptions.listeners) {\n chart.updateAllSeriesListeners();\n }\n chart.processedOptions = completeOptions;\n chart.userOptions = jsonMerge([(_d = chart.userOptions) !== null && _d !== void 0 ? _d : {}, userOptions], noDataCloneMergeOptions);\n var majorChange = forceNodeDataRefresh || modulesChanged;\n var updateType = majorChange ? ChartUpdateType.PROCESS_DATA : ChartUpdateType.PERFORM_LAYOUT;\n debug('chart update type', { updateType: ChartUpdateType[updateType] });\n chart.update(updateType, { forceNodeDataRefresh: forceNodeDataRefresh });\n}\nfunction applyModules(chart, options) {\n var e_1, _a;\n var matchingChartType = function (module) {\n return ((chart instanceof CartesianChart && module.chartTypes.includes('cartesian')) ||\n (chart instanceof PolarChart && module.chartTypes.includes('polar')) ||\n (chart instanceof HierarchyChart && module.chartTypes.includes('hierarchy')));\n };\n var modulesChanged = false;\n var rootModules = REGISTERED_MODULES.filter(function (m) { return m.type === 'root'; });\n try {\n for (var rootModules_1 = __values$8(rootModules), rootModules_1_1 = rootModules_1.next(); !rootModules_1_1.done; rootModules_1_1 = rootModules_1.next()) {\n var next = rootModules_1_1.value;\n var shouldBeEnabled = matchingChartType(next) && options[next.optionsKey] != null;\n var isEnabled = chart.isModuleEnabled(next);\n if (shouldBeEnabled === isEnabled)\n continue;\n modulesChanged = true;\n if (shouldBeEnabled) {\n chart.addModule(next);\n }\n else {\n chart.removeModule(next);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (rootModules_1_1 && !rootModules_1_1.done && (_a = rootModules_1.return)) _a.call(rootModules_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return modulesChanged;\n}\nfunction applySeries(chart, options) {\n var optSeries = options.series;\n if (!optSeries) {\n return;\n }\n var matchingTypes = chart.series.length === optSeries.length && chart.series.every(function (s, i) { var _a; return s.type === ((_a = optSeries[i]) === null || _a === void 0 ? void 0 : _a.type); });\n // Try to optimise series updates if series count and types didn't change.\n if (matchingTypes) {\n chart.series.forEach(function (s, i) {\n var _a, _b;\n var previousOpts = ((_b = (_a = chart.processedOptions) === null || _a === void 0 ? void 0 : _a.series) === null || _b === void 0 ? void 0 : _b[i]) || {};\n var seriesDiff = jsonDiff(previousOpts, optSeries[i] || {});\n if (!seriesDiff) {\n return;\n }\n debug(\"applying series diff idx \" + i, seriesDiff);\n applySeriesValues(s, seriesDiff, { path: \"series[\" + i + \"]\", index: i });\n s.markNodeDataDirty();\n });\n return;\n }\n chart.series = createSeries(optSeries);\n}\nfunction applyAxes(chart, options) {\n var optAxes = options.axes;\n if (!optAxes) {\n return false;\n }\n var matchingTypes = chart.axes.length === optAxes.length && chart.axes.every(function (a, i) { return a.type === optAxes[i].type; });\n // Try to optimise series updates if series count and types didn't change.\n if (matchingTypes) {\n var oldOpts_1 = chart.processedOptions;\n if (isAgCartesianChartOptions(oldOpts_1)) {\n chart.axes.forEach(function (a, i) {\n var _a;\n var previousOpts = ((_a = oldOpts_1.axes) === null || _a === void 0 ? void 0 : _a[i]) || {};\n var axisDiff = jsonDiff(previousOpts, optAxes[i]);\n debug(\"applying axis diff idx \" + i, axisDiff);\n var path = \"axes[\" + i + \"]\";\n var skip = ['axes[].type'];\n applyOptionValues(a, axisDiff, { path: path, skip: skip });\n });\n return true;\n }\n }\n chart.axes = createAxis(chart, optAxes);\n return true;\n}\nfunction createSeries(options) {\n var e_2, _a;\n var series = [];\n var index = 0;\n try {\n for (var _b = __values$8(options || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var seriesOptions = _c.value;\n var path = \"series[\" + index++ + \"]\";\n var seriesInstance = getSeries(seriesOptions.type);\n applySeriesValues(seriesInstance, seriesOptions, { path: path, index: index });\n series.push(seriesInstance);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return series;\n}\nfunction createAxis(chart, options) {\n var e_3, _a;\n var axes = [];\n var skip = ['axes[].type'];\n var moduleContext = chart.getModuleContext();\n var index = 0;\n try {\n for (var _b = __values$8(options || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var axisOptions = _c.value;\n var axis = void 0;\n switch (axisOptions.type) {\n case 'number':\n axis = new NumberAxis(moduleContext);\n break;\n case LogAxis.type:\n axis = new LogAxis(moduleContext);\n break;\n case CategoryAxis.type:\n axis = new CategoryAxis(moduleContext);\n break;\n case GroupedCategoryAxis.type:\n axis = new GroupedCategoryAxis(moduleContext);\n break;\n case TimeAxis.type:\n axis = new TimeAxis(moduleContext);\n break;\n default:\n throw new Error('AG Charts - unknown axis type: ' + axisOptions['type']);\n }\n var path = \"axes[\" + index++ + \"]\";\n applyAxisModules(axis, axisOptions);\n applyOptionValues(axis, axisOptions, { path: path, skip: skip });\n axes.push(axis);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return axes;\n}\nfunction applyAxisModules(axis, options) {\n var e_4, _a;\n var modulesChanged = false;\n var rootModules = REGISTERED_MODULES.filter(function (m) { return m.type === 'axis'; });\n try {\n for (var rootModules_2 = __values$8(rootModules), rootModules_2_1 = rootModules_2.next(); !rootModules_2_1.done; rootModules_2_1 = rootModules_2.next()) {\n var next = rootModules_2_1.value;\n var shouldBeEnabled = options[next.optionsKey] != null;\n var isEnabled = axis.isModuleEnabled(next);\n if (shouldBeEnabled === isEnabled)\n continue;\n modulesChanged = true;\n if (shouldBeEnabled) {\n axis.addModule(next);\n }\n else {\n axis.removeModule(next);\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (rootModules_2_1 && !rootModules_2_1.done && (_a = rootModules_2.return)) _a.call(rootModules_2);\n }\n finally { if (e_4) throw e_4.error; }\n }\n return modulesChanged;\n}\nfunction registerListeners(source, listeners) {\n source.clearEventListeners();\n for (var property in listeners) {\n var listener = listeners[property];\n if (typeof listener !== 'function')\n continue;\n source.addEventListener(property, listener);\n }\n}\nvar JSON_APPLY_OPTIONS = {\n constructors: {\n title: Caption,\n subtitle: Caption,\n footnote: Caption,\n shadow: DropShadow,\n innerCircle: DoughnutInnerCircle,\n 'axes[].crossLines[]': CrossLine,\n 'series[].innerLabels[]': DoughnutInnerLabel,\n 'background.image': BackgroundImage,\n },\n allowedTypes: {\n 'legend.pagination.marker.shape': ['primitive', 'function'],\n 'series[].marker.shape': ['primitive', 'function'],\n 'axis[].tick.count': ['primitive', 'class-instance'],\n },\n};\nfunction applyOptionValues(target, options, _a) {\n var _b = _a === void 0 ? {} : _a, skip = _b.skip, path = _b.path;\n var applyOpts = __assign$l(__assign$l(__assign$l({}, JSON_APPLY_OPTIONS), { skip: skip }), (path ? { path: path } : {}));\n return jsonApply(target, options, applyOpts);\n}\nfunction applySeriesValues(target, options, _a) {\n var _b = _a === void 0 ? {} : _a, path = _b.path, index = _b.index;\n var skip = ['series[].listeners'];\n var ctrs = (JSON_APPLY_OPTIONS === null || JSON_APPLY_OPTIONS === void 0 ? void 0 : JSON_APPLY_OPTIONS.constructors) || {};\n var seriesTypeOverrides = {\n constructors: __assign$l(__assign$l({}, ctrs), { title: target.type === 'pie' ? PieTitle : ctrs['title'] }),\n };\n var applyOpts = __assign$l(__assign$l(__assign$l(__assign$l(__assign$l({}, JSON_APPLY_OPTIONS), seriesTypeOverrides), { skip: __spread$b(['series[].type'], (skip || [])) }), (path ? { path: path } : {})), { idx: index !== null && index !== void 0 ? index : -1 });\n var result = jsonApply(target, options, applyOpts);\n var listeners = options === null || options === void 0 ? void 0 : options.listeners;\n if (listeners != null) {\n registerListeners(target, listeners);\n }\n return result;\n}\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$b = '7.3.0';\n\nvar __read$m = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar themes = Object.entries(themes$1).reduce(function (obj, _a) {\n var _b = __read$m(_a, 2), name = _b[0], factory = _b[1];\n obj[name] = factory();\n return obj;\n}, {});\n\nvar __extends$1G = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartDatasource = /** @class */ (function (_super) {\n __extends$1G(ChartDatasource, _super);\n function ChartDatasource() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartDatasource.prototype.getData = function (params) {\n if (params.crossFiltering) {\n if (params.grouping) {\n console.warn(\"AG Grid: crossing filtering with row grouping is not supported.\");\n return { chartData: [], columnNames: {} };\n }\n if (!this.gridOptionsService.isRowModelType('clientSide')) {\n console.warn(\"AG Grid: crossing filtering is only supported in the client side row model.\");\n return { chartData: [], columnNames: {} };\n }\n }\n var isServerSide = this.gridOptionsService.isRowModelType('serverSide');\n if (isServerSide && params.pivoting) {\n this.updatePivotKeysForSSRM();\n }\n var result = this.extractRowsFromGridRowModel(params);\n result.chartData = this.aggregateRowsByDimension(params, result.chartData);\n return result;\n };\n ChartDatasource.prototype.extractRowsFromGridRowModel = function (params) {\n var _this = this;\n var extractedRowData = [];\n var columnNames = {};\n // maps used to keep track of expanded groups that need to be removed\n var groupNodeIndexes = {};\n var groupsToRemove = {};\n // only used when cross filtering\n var filteredNodes = {};\n var allRowNodes = [];\n var numRows;\n if (params.crossFiltering) {\n filteredNodes = this.getFilteredRowNodes();\n allRowNodes = this.getAllRowNodes();\n numRows = allRowNodes.length;\n }\n else {\n // make sure enough rows in range to chart. if user filters and less rows, then end row will be\n // the last displayed row, not where the range ends.\n var modelLastRow = this.gridRowModel.getRowCount() - 1;\n var rangeLastRow = params.endRow >= 0 ? Math.min(params.endRow, modelLastRow) : modelLastRow;\n numRows = rangeLastRow - params.startRow + 1;\n }\n var _loop_1 = function (i) {\n var data = {};\n var rowNode = params.crossFiltering ? allRowNodes[i] : this_1.gridRowModel.getRow(i + params.startRow);\n // first get data for dimensions columns\n params.dimensionCols.forEach(function (col) {\n var colId = col.colId;\n var column = _this.columnModel.getGridColumn(colId);\n if (column) {\n var valueObject = _this.valueService.getValue(column, rowNode);\n // when grouping we also need to build up multi category labels for charts\n if (params.grouping) {\n var valueString = valueObject && valueObject.toString ? String(valueObject.toString()) : '';\n // traverse parents to extract group label path\n var labels = ChartDatasource.getGroupLabels(rowNode, valueString);\n data[colId] = {\n labels: labels, toString: function () {\n return this.labels.filter(function (l) { return !!l; }).reverse().join(' - ');\n }\n };\n // keep track of group node indexes, so they can be padded when other groups are expanded\n if (rowNode.group) {\n groupNodeIndexes[labels.toString()] = i;\n }\n // if node (group or leaf) has parents then it is expanded and should be removed\n var groupKey = labels.slice(1, labels.length).toString();\n if (groupKey) {\n groupsToRemove[groupKey] = groupNodeIndexes[groupKey];\n }\n }\n else {\n // leaf nodes can be directly added to dimension columns\n data[colId] = valueObject;\n }\n }\n else {\n // introduce a default category when no dimensions exist with a value based off row index (+1)\n data[ChartDataModel.DEFAULT_CATEGORY] = i + 1;\n }\n });\n // then get data for value columns\n params.valueCols.forEach(function (col) {\n var columnNamesArr = [];\n // pivot keys should be added first\n var pivotKeys = col.getColDef().pivotKeys;\n if (pivotKeys) {\n columnNamesArr = pivotKeys.slice();\n }\n // then add column header name to results\n var headerName = col.getColDef().headerName;\n if (headerName) {\n columnNamesArr.push(headerName);\n }\n // add array of column names to results\n if (columnNamesArr.length > 0) {\n columnNames[col.getId()] = columnNamesArr;\n }\n var colId = col.getColId();\n if (params.crossFiltering) {\n var filteredOutColId = colId + '-filtered-out';\n // add data value to value column\n var value = _this.valueService.getValue(col, rowNode);\n var actualValue = value != null && typeof value.toNumber === 'function' ? value.toNumber() : value;\n if (filteredNodes[rowNode.id]) {\n data[colId] = actualValue;\n data[filteredOutColId] = params.aggFunc || params.isScatter ? undefined : 0;\n }\n else {\n data[colId] = params.aggFunc || params.isScatter ? undefined : 0;\n data[filteredOutColId] = actualValue;\n }\n }\n else {\n // add data value to value column\n var value = _this.valueService.getValue(col, rowNode);\n // aggregated value\n if (value && value.hasOwnProperty('toString')) {\n value = parseFloat(value.toString());\n }\n data[colId] = value != null && typeof value.toNumber === 'function' ? value.toNumber() : value;\n }\n });\n // row data from footer nodes should not be included in charts\n if (rowNode.footer) {\n // 'stamping' data as footer to avoid impacting previously calculated `groupIndexesToRemove` and will\n // be removed from the results along with any expanded group nodes\n data.footer = true;\n }\n // add data to results\n extractedRowData.push(data);\n };\n var this_1 = this;\n for (var i = 0; i < numRows; i++) {\n _loop_1(i);\n }\n if (params.grouping) {\n var groupIndexesToRemove_1 = _.values(groupsToRemove);\n var filterFunc = function (data, index) { return !data.footer && !_.includes(groupIndexesToRemove_1, index); };\n extractedRowData = extractedRowData.filter(filterFunc);\n }\n return { chartData: extractedRowData, columnNames: columnNames };\n };\n ChartDatasource.prototype.aggregateRowsByDimension = function (params, dataFromGrid) {\n var _this = this;\n var dimensionCols = params.dimensionCols;\n if (!params.aggFunc || dimensionCols.length === 0) {\n return dataFromGrid;\n }\n var lastCol = _.last(dimensionCols);\n var lastColId = lastCol && lastCol.colId;\n var map = {};\n var dataAggregated = [];\n dataFromGrid.forEach(function (data) {\n var currentMap = map;\n dimensionCols.forEach(function (col) {\n var colId = col.colId;\n var key = data[colId];\n if (colId === lastColId) {\n var groupItem_1 = currentMap[key];\n if (!groupItem_1) {\n groupItem_1 = { __children: [] };\n dimensionCols.forEach(function (dimCol) {\n var dimColId = dimCol.colId;\n groupItem_1[dimColId] = data[dimColId];\n });\n currentMap[key] = groupItem_1;\n dataAggregated.push(groupItem_1);\n }\n groupItem_1.__children.push(data);\n }\n else {\n // map of maps\n if (!currentMap[key]) {\n currentMap[key] = {};\n }\n currentMap = currentMap[key];\n }\n });\n });\n if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Charting Aggregation')) {\n dataAggregated.forEach(function (groupItem) { return params.valueCols.forEach(function (col) {\n if (params.crossFiltering) {\n params.valueCols.forEach(function (valueCol) {\n var colId = valueCol.getColId();\n // filtered data\n var dataToAgg = groupItem.__children\n .filter(function (child) { return typeof child[colId] !== 'undefined'; })\n .map(function (child) { return child[colId]; });\n var aggResult = _this.aggregationStage.aggregateValues(dataToAgg, params.aggFunc);\n groupItem[valueCol.getId()] = aggResult && typeof aggResult.value !== 'undefined' ? aggResult.value : aggResult;\n // filtered out data\n var filteredOutColId = colId + \"-filtered-out\";\n var dataToAggFiltered = groupItem.__children\n .filter(function (child) { return typeof child[filteredOutColId] !== 'undefined'; })\n .map(function (child) { return child[filteredOutColId]; });\n var aggResultFiltered = _this.aggregationStage.aggregateValues(dataToAggFiltered, params.aggFunc);\n groupItem[filteredOutColId] = aggResultFiltered && typeof aggResultFiltered.value !== 'undefined' ? aggResultFiltered.value : aggResultFiltered;\n });\n }\n else {\n var dataToAgg = groupItem.__children.map(function (child) { return child[col.getId()]; });\n var aggResult = 0;\n if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Charting Aggregation')) {\n aggResult = _this.aggregationStage.aggregateValues(dataToAgg, params.aggFunc);\n }\n groupItem[col.getId()] = aggResult && typeof aggResult.value !== 'undefined' ? aggResult.value : aggResult;\n }\n }); });\n }\n return dataAggregated;\n };\n ChartDatasource.prototype.updatePivotKeysForSSRM = function () {\n var secondaryColumns = this.columnModel.getSecondaryColumns();\n if (!secondaryColumns) {\n return;\n }\n // we don't know what the application will use for the pivot key separator (i.e. '_' or '|' ) as the\n // secondary columns are provided to grid by the application via columnApi.setSecondaryColumns()\n var pivotKeySeparator = this.extractPivotKeySeparator(secondaryColumns);\n // `pivotKeys` is not used by the SSRM for pivoting, so it is safe to reuse this colDef property. This way\n // the same logic can be used for CSRM and SSRM to extract legend names in extractRowsFromGridRowModel()\n secondaryColumns.forEach(function (col) {\n if (pivotKeySeparator === '') {\n col.getColDef().pivotKeys = [];\n }\n else {\n var keys = col.getColId().split(pivotKeySeparator);\n col.getColDef().pivotKeys = keys.slice(0, keys.length - 1);\n }\n });\n };\n ChartDatasource.prototype.extractPivotKeySeparator = function (secondaryColumns) {\n if (secondaryColumns.length === 0) {\n return '';\n }\n var extractSeparator = function (columnGroup, childId) {\n var groupId = columnGroup.getGroupId();\n if (!columnGroup.getParent()) {\n // removing groupId ('2000') from childId ('2000|Swimming') yields '|Swimming' so first char is separator\n return childId.split(groupId)[1][0];\n }\n return extractSeparator(columnGroup.getParent(), groupId);\n };\n var firstSecondaryCol = secondaryColumns[0];\n if (firstSecondaryCol.getParent() == null) {\n return '';\n }\n return extractSeparator(firstSecondaryCol.getParent(), firstSecondaryCol.getColId());\n };\n ChartDatasource.getGroupLabels = function (rowNode, initialLabel) {\n var labels = [initialLabel];\n while (rowNode && rowNode.level !== 0) {\n rowNode = rowNode.parent;\n if (rowNode) {\n labels.push(rowNode.key);\n }\n }\n return labels;\n };\n ChartDatasource.prototype.getFilteredRowNodes = function () {\n var filteredNodes = {};\n this.gridRowModel.forEachNodeAfterFilterAndSort(function (rowNode) {\n filteredNodes[rowNode.id] = rowNode;\n });\n return filteredNodes;\n };\n ChartDatasource.prototype.getAllRowNodes = function () {\n var allRowNodes = [];\n this.gridRowModel.forEachNode(function (rowNode) {\n allRowNodes.push(rowNode);\n });\n return this.sortRowNodes(allRowNodes);\n };\n ChartDatasource.prototype.sortRowNodes = function (rowNodes) {\n var sortOptions = this.sortController.getSortOptions();\n var noSort = !sortOptions || sortOptions.length == 0;\n if (noSort)\n return rowNodes;\n return this.rowNodeSorter.doFullSort(rowNodes, sortOptions);\n };\n __decorate$1b([\n Autowired('rowModel')\n ], ChartDatasource.prototype, \"gridRowModel\", void 0);\n __decorate$1b([\n Autowired('valueService')\n ], ChartDatasource.prototype, \"valueService\", void 0);\n __decorate$1b([\n Autowired('columnModel')\n ], ChartDatasource.prototype, \"columnModel\", void 0);\n __decorate$1b([\n Autowired('rowNodeSorter')\n ], ChartDatasource.prototype, \"rowNodeSorter\", void 0);\n __decorate$1b([\n Autowired('sortController')\n ], ChartDatasource.prototype, \"sortController\", void 0);\n __decorate$1b([\n Optional('aggregationStage')\n ], ChartDatasource.prototype, \"aggregationStage\", void 0);\n return ChartDatasource;\n}(BeanStub));\n\nvar __extends$1F = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$l = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$a = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$l(arguments[i]));\n return ar;\n};\nvar ChartDataModel = /** @class */ (function (_super) {\n __extends$1F(ChartDataModel, _super);\n function ChartDataModel(params) {\n var _this = _super.call(this) || this;\n _this.unlinked = false;\n _this.chartData = [];\n _this.valueColState = [];\n _this.dimensionColState = [];\n _this.columnNames = {};\n _this.grouping = false;\n _this.crossFiltering = false;\n // this control flag is used to only log warning for the initial user config\n _this.suppressComboChartWarnings = false;\n _this.chartId = params.chartId;\n _this.chartType = params.chartType;\n _this.pivotChart = params.pivotChart;\n _this.chartThemeName = params.chartThemeName;\n _this.aggFunc = params.aggFunc;\n _this.referenceCellRange = params.cellRange;\n _this.suppliedCellRange = params.cellRange;\n _this.suppressChartRanges = params.suppressChartRanges;\n _this.unlinked = !!params.unlinkChart;\n _this.crossFiltering = !!params.crossFiltering;\n _this.seriesChartTypes = params.seriesChartTypes || [];\n _this.initComboCharts(params);\n return _this;\n }\n ChartDataModel.prototype.initComboCharts = function (params) {\n var seriesChartTypesExist = this.seriesChartTypes && this.seriesChartTypes.length > 0;\n var customCombo = params.chartType === 'customCombo' || seriesChartTypesExist;\n if (customCombo) {\n // it is not necessary to supply a chart type for combo charts when `seriesChartTypes` is supplied\n this.chartType = 'customCombo';\n // cache supplied `seriesChartTypes` to allow switching between different chart types in the settings panel\n this.savedCustomSeriesChartTypes = this.seriesChartTypes || [];\n }\n };\n ChartDataModel.prototype.init = function () {\n this.datasource = this.createManagedBean(new ChartDatasource());\n this.updateCellRanges();\n };\n ChartDataModel.prototype.updateCellRanges = function (updatedColState) {\n if (this.valueCellRange) {\n this.referenceCellRange = this.valueCellRange;\n }\n var _a = this.getAllChartColumns(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var allColsFromRanges = this.getAllColumnsFromRanges();\n if (updatedColState) {\n this.updateColumnState(updatedColState);\n }\n this.setDimensionCellRange(dimensionCols, allColsFromRanges, updatedColState);\n this.setValueCellRange(valueCols, allColsFromRanges, updatedColState);\n if (!updatedColState) {\n this.resetColumnState();\n // dimension / category cell range could be out of sync after resetting column state when row grouping\n this.syncDimensionCellRange();\n }\n this.updateSeriesChartTypes();\n this.updateData();\n };\n ChartDataModel.prototype.updateSeriesChartTypes = function () {\n if (!this.isComboChart()) {\n return;\n }\n // ensure primary only chart types are not placed on secondary axis\n this.seriesChartTypes = this.seriesChartTypes.map(function (seriesChartType) {\n var primaryOnly = ['groupedColumn', 'stackedColumn', 'stackedArea'].includes(seriesChartType.chartType);\n seriesChartType.secondaryAxis = primaryOnly ? false : seriesChartType.secondaryAxis;\n return seriesChartType;\n });\n // note that when seriesChartTypes are supplied the chart type is also changed to 'customCombo'\n if (this.chartType === 'customCombo') {\n this.updateSeriesChartTypesForCustomCombo();\n return;\n }\n this.updateChartSeriesTypesForBuiltInCombos();\n };\n ChartDataModel.prototype.updateSeriesChartTypesForCustomCombo = function () {\n var _this = this;\n var seriesChartTypesSupplied = this.seriesChartTypes && this.seriesChartTypes.length > 0;\n if (!seriesChartTypesSupplied && !this.suppressComboChartWarnings) {\n console.warn(\"AG Grid: 'seriesChartTypes' are required when the 'customCombo' chart type is specified.\");\n }\n // ensure correct chartTypes are supplied\n this.seriesChartTypes = this.seriesChartTypes.map(function (s) {\n if (!ChartDataModel.SUPPORTED_COMBO_CHART_TYPES.includes(s.chartType)) {\n console.warn(\"AG Grid: invalid chartType '\" + s.chartType + \"' supplied in 'seriesChartTypes', converting to 'line' instead.\");\n s.chartType = 'line';\n }\n return s;\n });\n var getSeriesChartType = function (valueCol) {\n if (!_this.savedCustomSeriesChartTypes || _this.savedCustomSeriesChartTypes.length === 0) {\n _this.savedCustomSeriesChartTypes = _this.seriesChartTypes;\n }\n var providedSeriesChartType = _this.savedCustomSeriesChartTypes.find(function (s) { return s.colId === valueCol.colId; });\n if (!providedSeriesChartType) {\n if (valueCol.selected && !_this.suppressComboChartWarnings) {\n console.warn(\"AG Grid: no 'seriesChartType' found for colId = '\" + valueCol.colId + \"', defaulting to 'line'.\");\n }\n return {\n colId: valueCol.colId,\n chartType: 'line',\n secondaryAxis: false\n };\n }\n return providedSeriesChartType;\n };\n var updatedSeriesChartTypes = this.valueColState.map(getSeriesChartType);\n this.seriesChartTypes = updatedSeriesChartTypes;\n // also cache custom `seriesChartTypes` to allow for switching between different chart types\n this.savedCustomSeriesChartTypes = updatedSeriesChartTypes;\n // turn off warnings as first combo chart attempt has completed\n this.suppressComboChartWarnings = true;\n };\n ChartDataModel.prototype.updateChartSeriesTypesForBuiltInCombos = function () {\n var primaryChartType = this.chartType === 'columnLineCombo' ? 'groupedColumn' : 'stackedArea';\n var secondaryChartType = this.chartType === 'columnLineCombo' ? 'line' : 'groupedColumn';\n var selectedCols = this.valueColState.filter(function (cs) { return cs.selected; });\n var lineIndex = Math.ceil(selectedCols.length / 2);\n this.seriesChartTypes = selectedCols.map(function (valueCol, i) {\n var seriesType = (i >= lineIndex) ? secondaryChartType : primaryChartType;\n return { colId: valueCol.colId, chartType: seriesType, secondaryAxis: false };\n });\n };\n ChartDataModel.prototype.updateData = function () {\n var _a = this.getRowIndexes(), startRow = _a.startRow, endRow = _a.endRow;\n if (this.pivotChart) {\n this.resetColumnState();\n }\n this.grouping = this.isGrouping();\n var params = {\n aggFunc: this.aggFunc,\n dimensionCols: [this.getSelectedDimension()],\n grouping: this.grouping,\n pivoting: this.isPivotActive(),\n crossFiltering: this.crossFiltering,\n valueCols: this.getSelectedValueCols(),\n startRow: startRow,\n endRow: endRow,\n isScatter: _.includes(['scatter', 'bubble'], this.chartType)\n };\n var _b = this.datasource.getData(params), chartData = _b.chartData, columnNames = _b.columnNames;\n this.chartData = chartData;\n this.columnNames = columnNames;\n };\n ChartDataModel.prototype.isGrouping = function () {\n var usingTreeData = this.gridOptionsService.isTreeData();\n var groupedCols = usingTreeData ? null : this.columnModel.getRowGroupColumns();\n var isGroupActive = usingTreeData || (groupedCols && groupedCols.length > 0);\n // charts only group when the selected category is a group column\n var colId = this.getSelectedDimension().colId;\n var displayedGroupCols = this.columnModel.getGroupDisplayColumns();\n var groupDimensionSelected = displayedGroupCols.map(function (col) { return col.getColId(); }).some(function (id) { return id === colId; });\n return !!isGroupActive && groupDimensionSelected;\n };\n ChartDataModel.prototype.getSelectedValueCols = function () {\n return this.valueColState.filter(function (cs) { return cs.selected; }).map(function (cs) { return cs.column; });\n };\n ChartDataModel.prototype.getSelectedDimension = function () {\n return this.dimensionColState.filter(function (cs) { return cs.selected; })[0];\n };\n ChartDataModel.prototype.getColDisplayName = function (col) {\n return this.columnModel.getDisplayNameForColumn(col, 'chart');\n };\n ChartDataModel.prototype.isPivotMode = function () {\n return this.columnModel.isPivotMode();\n };\n ChartDataModel.prototype.getChartDataType = function (colId) {\n var column = this.columnModel.getPrimaryColumn(colId);\n return column ? column.getColDef().chartDataType : undefined;\n };\n ChartDataModel.prototype.isPivotActive = function () {\n return this.columnModel.isPivotActive();\n };\n ChartDataModel.prototype.createCellRange = function (type) {\n var columns = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n columns[_i - 1] = arguments[_i];\n }\n return {\n id: this.chartId,\n startRow: this.referenceCellRange.startRow,\n endRow: this.referenceCellRange.endRow,\n columns: columns,\n startColumn: type === CellRangeType.DIMENSION ? columns[0] : this.referenceCellRange.startColumn,\n type: type\n };\n };\n ChartDataModel.prototype.getAllColumnsFromRanges = function () {\n if (this.pivotChart) {\n return _.convertToSet(this.columnModel.getAllDisplayedColumns());\n }\n var columns = this.dimensionCellRange || this.valueCellRange ? [] : this.referenceCellRange.columns;\n if (this.dimensionCellRange) {\n columns.push.apply(columns, __spread$a(this.dimensionCellRange.columns));\n }\n if (this.valueCellRange) {\n columns.push.apply(columns, __spread$a(this.valueCellRange.columns));\n }\n return _.convertToSet(columns);\n };\n ChartDataModel.prototype.getRowIndexes = function () {\n var startRow = 0, endRow = 0;\n var rangeService = this.rangeService;\n var range = this.valueCellRange;\n if (rangeService && range) {\n startRow = rangeService.getRangeStartRow(range).rowIndex;\n // when the last row the cell range is a pinned 'bottom' row, the `endRow` index is set to -1 which results\n // in the ChartDatasource processing all non pinned rows from the `startRow` index.\n var endRowPosition = rangeService.getRangeEndRow(range);\n endRow = endRowPosition.rowPinned === 'bottom' ? -1 : endRowPosition.rowIndex;\n }\n return { startRow: startRow, endRow: endRow };\n };\n ChartDataModel.prototype.getAllChartColumns = function () {\n var _this = this;\n var displayedCols = this.columnModel.getAllDisplayedColumns();\n var dimensionCols = new Set();\n var valueCols = new Set();\n displayedCols.forEach(function (col) {\n var colDef = col.getColDef();\n var chartDataType = colDef.chartDataType;\n if (chartDataType) {\n // chart data type was specified explicitly\n switch (chartDataType) {\n case 'category':\n case 'time':\n dimensionCols.add(col);\n return;\n case 'series':\n valueCols.add(col);\n return;\n case 'excluded':\n return;\n default:\n console.warn(\"AG Grid: unexpected chartDataType value '\" + chartDataType + \"' supplied, instead use 'category', 'series' or 'excluded'\");\n break;\n }\n }\n if (colDef.colId === 'ag-Grid-AutoColumn') {\n dimensionCols.add(col);\n return;\n }\n if (!col.isPrimary()) {\n valueCols.add(col);\n return;\n }\n // if 'chartDataType' is not provided then infer type based data contained in first row\n (_this.isNumberCol(col) ? valueCols : dimensionCols).add(col);\n });\n return { dimensionCols: dimensionCols, valueCols: valueCols };\n };\n ChartDataModel.prototype.isNumberCol = function (col) {\n if (col.getColId() === 'ag-Grid-AutoColumn') {\n return false;\n }\n var row = this.rowRenderer.getRowNode({ rowIndex: 0, rowPinned: null });\n if (!row) {\n return false;\n }\n var cellValue = this.valueService.getValue(col, row);\n if (cellValue == null) {\n cellValue = this.extractLeafData(row, col);\n }\n if (cellValue != null && typeof cellValue.toNumber === 'function') {\n cellValue = cellValue.toNumber();\n }\n return typeof cellValue === 'number';\n };\n ChartDataModel.prototype.extractLeafData = function (row, col) {\n if (!row.allLeafChildren) {\n return null;\n }\n for (var i = 0; i < row.allLeafChildren.length; i++) {\n var childRow = row.allLeafChildren[i];\n var value = this.valueService.getValue(col, childRow);\n if (value != null) {\n return value;\n }\n }\n return null;\n };\n ChartDataModel.prototype.resetColumnState = function () {\n var _this = this;\n var _a = this.getAllChartColumns(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var allCols = this.getAllColumnsFromRanges();\n var isInitialising = this.valueColState.length < 1;\n this.dimensionColState = [];\n this.valueColState = [];\n var hasSelectedDimension = false;\n var order = 1;\n var aggFuncDimension = this.suppliedCellRange.columns[0]; //TODO\n dimensionCols.forEach(function (column) {\n var isAutoGroupCol = column.getColId() === 'ag-Grid-AutoColumn';\n var selected = false;\n if (_this.crossFiltering && _this.aggFunc) {\n if (aggFuncDimension.getColId() === column.getColId()) {\n selected = true;\n }\n }\n else {\n selected = isAutoGroupCol ? true : !hasSelectedDimension && allCols.has(column);\n }\n _this.dimensionColState.push({\n column: column,\n colId: column.getColId(),\n displayName: _this.getColDisplayName(column),\n selected: selected,\n order: order++\n });\n if (selected) {\n hasSelectedDimension = true;\n }\n });\n var defaultCategory = {\n colId: ChartDataModel.DEFAULT_CATEGORY,\n displayName: this.chartTranslationService.translate('defaultCategory'),\n selected: !hasSelectedDimension,\n order: 0\n };\n this.dimensionColState.unshift(defaultCategory);\n var valueColumnsFromReferenceRange = this.referenceCellRange.columns.filter(function (c) { return valueCols.has(c); });\n valueCols.forEach(function (column) {\n // first time the value cell range is set, preserve the column order from the supplied range\n if (isInitialising && _.includes(_this.referenceCellRange.columns, column)) {\n column = valueColumnsFromReferenceRange.shift();\n }\n _this.valueColState.push({\n column: column,\n colId: column.getColId(),\n displayName: _this.getColDisplayName(column),\n selected: allCols.has(column),\n order: order++\n });\n });\n };\n ChartDataModel.prototype.updateColumnState = function (updatedCol) {\n var idsMatch = function (cs) { return cs.colId === updatedCol.colId; };\n var _a = this, dimensionColState = _a.dimensionColState, valueColState = _a.valueColState;\n if (dimensionColState.filter(idsMatch).length > 0) {\n // only one dimension should be selected\n dimensionColState.forEach(function (cs) { return cs.selected = idsMatch(cs); });\n }\n else {\n // just update the selected value on the supplied value column\n valueColState.filter(idsMatch).forEach(function (cs) { return cs.selected = updatedCol.selected; });\n }\n var allColumns = __spread$a(dimensionColState, valueColState);\n var orderedColIds = [];\n // calculate new order\n allColumns.forEach(function (col, i) {\n if (i === updatedCol.order) {\n orderedColIds.push(updatedCol.colId);\n }\n if (col.colId !== updatedCol.colId) {\n orderedColIds.push(col.colId);\n }\n });\n // update col state with new order\n allColumns.forEach(function (col) {\n var order = orderedColIds.indexOf(col.colId);\n col.order = order >= 0 ? orderedColIds.indexOf(col.colId) : allColumns.length - 1;\n });\n this.reorderColState();\n };\n ChartDataModel.prototype.reorderColState = function () {\n var ascColStateOrder = function (a, b) { return a.order - b.order; };\n this.dimensionColState.sort(ascColStateOrder);\n this.valueColState.sort(ascColStateOrder);\n };\n ChartDataModel.prototype.setDimensionCellRange = function (dimensionCols, colsInRange, updatedColState) {\n var _this = this;\n this.dimensionCellRange = undefined;\n if (!updatedColState && !this.dimensionColState.length) {\n // use first dimension column in range by default\n dimensionCols.forEach(function (col) {\n if (_this.dimensionCellRange || !colsInRange.has(col)) {\n return;\n }\n _this.dimensionCellRange = _this.createCellRange(CellRangeType.DIMENSION, col);\n });\n return;\n }\n var selectedDimensionColState = updatedColState;\n if (this.crossFiltering && this.aggFunc) {\n var aggFuncDimension_1 = this.suppliedCellRange.columns[0]; //TODO\n selectedDimensionColState = this.dimensionColState.filter(function (cs) { return cs.colId === aggFuncDimension_1.getColId(); })[0];\n }\n else if (!selectedDimensionColState || !dimensionCols.has(selectedDimensionColState.column)) {\n selectedDimensionColState = this.dimensionColState.filter(function (cs) { return cs.selected; })[0];\n }\n if (selectedDimensionColState && selectedDimensionColState.colId !== ChartDataModel.DEFAULT_CATEGORY) {\n this.dimensionCellRange = this.createCellRange(CellRangeType.DIMENSION, selectedDimensionColState.column);\n }\n };\n ChartDataModel.prototype.setValueCellRange = function (valueCols, colsInRange, updatedColState) {\n this.valueCellRange = undefined;\n var selectedValueCols = [];\n valueCols.forEach(function (col) {\n if (updatedColState && updatedColState.colId === col.getColId()) {\n if (updatedColState.selected) {\n selectedValueCols.push(updatedColState.column);\n }\n }\n else if (colsInRange.has(col)) {\n selectedValueCols.push(col);\n }\n });\n if (selectedValueCols.length > 0) {\n var orderedColIds_1 = [];\n if (this.valueColState.length > 0) {\n orderedColIds_1 = this.valueColState.map(function (c) { return c.colId; });\n }\n else {\n colsInRange.forEach(function (c) { return orderedColIds_1.push(c.getColId()); });\n }\n selectedValueCols.sort(function (a, b) { return orderedColIds_1.indexOf(a.getColId()) - orderedColIds_1.indexOf(b.getColId()); });\n this.valueCellRange = this.createCellRange.apply(this, __spread$a([CellRangeType.VALUE], selectedValueCols));\n }\n };\n ChartDataModel.prototype.syncDimensionCellRange = function () {\n var selectedDimension = this.getSelectedDimension();\n if (selectedDimension && selectedDimension.column) {\n this.dimensionCellRange = this.createCellRange(CellRangeType.DIMENSION, selectedDimension.column);\n }\n };\n ChartDataModel.prototype.isComboChart = function () {\n return ['columnLineCombo', 'areaColumnCombo', 'customCombo'].includes(this.chartType);\n };\n ChartDataModel.DEFAULT_CATEGORY = 'AG-GRID-DEFAULT-CATEGORY';\n ChartDataModel.SUPPORTED_COMBO_CHART_TYPES = ['line', 'groupedColumn', 'stackedColumn', 'area', 'stackedArea'];\n __decorate$1a([\n Autowired('columnModel')\n ], ChartDataModel.prototype, \"columnModel\", void 0);\n __decorate$1a([\n Autowired('valueService')\n ], ChartDataModel.prototype, \"valueService\", void 0);\n __decorate$1a([\n Autowired('rangeService')\n ], ChartDataModel.prototype, \"rangeService\", void 0);\n __decorate$1a([\n Autowired('rowRenderer')\n ], ChartDataModel.prototype, \"rowRenderer\", void 0);\n __decorate$1a([\n Autowired('chartTranslationService')\n ], ChartDataModel.prototype, \"chartTranslationService\", void 0);\n __decorate$1a([\n PostConstruct\n ], ChartDataModel.prototype, \"init\", null);\n return ChartDataModel;\n}(BeanStub));\n\nvar VALID_SERIES_TYPES = [\n 'area',\n 'bar',\n 'column',\n 'histogram',\n 'line',\n 'pie',\n 'scatter',\n];\nfunction getSeriesType(chartType) {\n switch (chartType) {\n case 'bar':\n case 'groupedBar':\n case 'stackedBar':\n case 'normalizedBar':\n return 'bar';\n case 'column':\n case 'groupedColumn':\n case 'stackedColumn':\n case 'normalizedColumn':\n return 'column';\n case 'line':\n return 'line';\n case 'area':\n case 'stackedArea':\n case 'normalizedArea':\n return 'area';\n case 'scatter':\n case 'bubble':\n return 'scatter';\n case 'histogram':\n return 'histogram';\n case 'pie':\n case 'doughnut':\n return 'pie';\n default:\n return 'cartesian';\n }\n}\n\nvar ALL_AXIS_TYPES = ['number', 'category', 'groupedCategory', 'log', 'time'];\nfunction getLegacyAxisType(chartType) {\n switch (chartType) {\n case 'bar':\n case 'stackedBar':\n case 'normalizedBar':\n return ['number', 'category'];\n case 'groupedBar':\n return ['number', 'groupedCategory'];\n case 'column':\n case 'stackedColumn':\n case 'normalizedColumn':\n case 'line':\n case 'area':\n case 'stackedArea':\n case 'normalizedArea':\n case 'histogram':\n return ['category', 'number'];\n case 'groupedColumn':\n return ['groupedCategory', 'number'];\n case 'scatter':\n case 'bubble':\n return ['number', 'number'];\n default:\n return undefined;\n }\n}\n\nvar __assign$k = (undefined && undefined.__assign) || function () {\n __assign$k = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$k.apply(this, arguments);\n};\nfunction createAgChartTheme(chartProxyParams, proxy) {\n var _a;\n var chartOptionsToRestore = chartProxyParams.chartOptionsToRestore, chartPaletteToRestore = chartProxyParams.chartPaletteToRestore, chartThemeToRestore = chartProxyParams.chartThemeToRestore;\n var themeName = getSelectedTheme(chartProxyParams);\n var stockTheme = isStockTheme(themeName);\n var rootTheme = stockTheme\n ? { baseTheme: themeName }\n : (_a = lookupCustomChartTheme(chartProxyParams, themeName)) !== null && _a !== void 0 ? _a : {};\n var gridOptionsThemeOverrides = chartProxyParams.getGridOptionsChartThemeOverrides();\n var apiThemeOverrides = chartProxyParams.apiChartThemeOverrides;\n var standaloneChartType = getSeriesType(chartProxyParams.chartType);\n var crossFilterThemeOverridePoint = standaloneChartType === 'pie' ? 'polar' : 'cartesian';\n var crossFilteringOverrides = chartProxyParams.crossFiltering\n ? createCrossFilterThemeOverrides(proxy, chartProxyParams, crossFilterThemeOverridePoint)\n : undefined;\n var formattingPanelOverrides = __assign$k({}, (chartOptionsToRestore !== null && chartOptionsToRestore !== void 0 ? chartOptionsToRestore : {}));\n var isTitleEnabled = function () {\n var isTitleEnabled = function (obj) {\n if (!obj) {\n return false;\n }\n return Object.keys(obj).some(function (key) { return _.get(obj[key], 'title.enabled', false); });\n };\n return isTitleEnabled(gridOptionsThemeOverrides) || isTitleEnabled(apiThemeOverrides);\n };\n // Overrides in ascending precedence ordering.\n var overrides = [\n stockTheme ? inbuiltStockThemeOverrides(chartProxyParams, isTitleEnabled()) : undefined,\n crossFilteringOverrides,\n gridOptionsThemeOverrides,\n apiThemeOverrides,\n formattingPanelOverrides,\n ];\n // Recursively nest theme overrides so they are applied with correct precedence in\n // Standalone Charts - this is an undocumented feature.\n // Outermost theme overrides will be the formatting panel configured values, so they are\n // differentiated from grid-config and inbuilt overrides.\n var theme = overrides\n .filter(function (v) { return !!v; })\n .reduce(function (r, n) { return ({\n baseTheme: r,\n overrides: n,\n }); }, rootTheme);\n // Avoid explicitly setting the `theme.palette` property unless we're using the restored theme\n // AND the palette is actually different.\n if (chartPaletteToRestore && themeName === chartThemeToRestore) {\n var rootThemePalette = getChartTheme(rootTheme).palette;\n if (!isIdenticalPalette(chartPaletteToRestore, rootThemePalette)) {\n theme.palette = chartPaletteToRestore;\n }\n }\n return theme;\n}\nfunction isIdenticalPalette(paletteA, paletteB) {\n var arrayCompare = function (arrA, arrB) {\n if (arrA.length !== arrB.length)\n return false;\n return arrA.every(function (v, i) { return v === arrB[i]; });\n };\n return arrayCompare(paletteA.fills, paletteB.fills) &&\n arrayCompare(paletteA.strokes, paletteB.strokes);\n}\nfunction isStockTheme(themeName) {\n return _.includes(Object.keys(themes), themeName);\n}\nfunction createCrossFilterThemeOverrides(proxy, chartProxyParams, overrideType) {\n var _a;\n var legend = {\n listeners: {\n legendItemClick: function (e) {\n var chart = proxy.getChart();\n chart.series.forEach(function (s) {\n s.toggleSeriesItem(e.itemId, e.enabled);\n s.toggleSeriesItem(e.itemId + \"-filtered-out\", e.enabled);\n });\n },\n },\n };\n var series = {};\n if (overrideType === 'polar') {\n series.pie = {\n tooltip: {\n renderer: function (_a) {\n var angleName = _a.angleName, datum = _a.datum, calloutLabelKey = _a.calloutLabelKey, radiusKey = _a.radiusKey, angleValue = _a.angleValue;\n var title = angleName;\n var label = datum[calloutLabelKey];\n var ratio = datum[radiusKey];\n var totalValue = angleValue;\n return { title: title, content: label + \": \" + totalValue * ratio };\n },\n },\n };\n }\n return _a = {},\n _a[overrideType] = {\n tooltip: {\n delay: 500,\n },\n legend: legend,\n listeners: {\n click: function (e) { return chartProxyParams.crossFilterCallback(e, true); },\n },\n series: series,\n },\n _a;\n}\nvar STATIC_INBUILT_STOCK_THEME_AXES_OVERRIDES = ALL_AXIS_TYPES.reduce(function (r, n) {\n var _a;\n return (__assign$k(__assign$k({}, r), (_a = {}, _a[n] = { title: { _enabledFromTheme: true } }, _a)));\n}, {});\nfunction inbuiltStockThemeOverrides(params, titleEnabled) {\n var extraPadding = params.getExtraPaddingDirections();\n return {\n common: {\n axes: STATIC_INBUILT_STOCK_THEME_AXES_OVERRIDES,\n padding: {\n // don't add extra padding when a title is present!\n top: !titleEnabled && extraPadding.includes('top') ? 40 : 20,\n right: extraPadding.includes('right') ? 30 : 20,\n bottom: extraPadding.includes('bottom') ? 40 : 20,\n left: extraPadding.includes('left') ? 30 : 20,\n },\n },\n pie: {\n series: {\n title: { _enabledFromTheme: true },\n calloutLabel: { _enabledFromTheme: true },\n sectorLabel: {\n enabled: false,\n _enabledFromTheme: true,\n },\n },\n },\n };\n}\nfunction getSelectedTheme(chartProxyParams) {\n var chartThemeName = chartProxyParams.getChartThemeName();\n var availableThemes = chartProxyParams.getChartThemes();\n if (!_.includes(availableThemes, chartThemeName)) {\n chartThemeName = availableThemes[0];\n }\n return chartThemeName;\n}\nfunction lookupCustomChartTheme(chartProxyParams, name) {\n var customChartThemes = chartProxyParams.customChartThemes;\n var customChartTheme = customChartThemes && customChartThemes[name];\n if (!customChartTheme) {\n console.warn(\"AG Grid: no stock theme exists with the name '\" + name + \"' and no \" +\n \"custom chart theme with that name was supplied to 'customChartThemes'\");\n }\n return customChartTheme;\n}\n\nvar __extends$1E = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$19 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DEFAULT_THEMES = ['ag-default', 'ag-material', 'ag-pastel', 'ag-vivid', 'ag-solar'];\nvar ChartController = /** @class */ (function (_super) {\n __extends$1E(ChartController, _super);\n function ChartController(model) {\n var _this = _super.call(this) || this;\n _this.model = model;\n return _this;\n }\n ChartController.prototype.init = function () {\n var _this = this;\n this.setChartRange();\n this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, function (event) {\n if (event.id && event.id === _this.model.chartId) {\n _this.updateForRangeChange();\n }\n });\n if (this.model.unlinked) {\n if (this.rangeService) {\n this.rangeService.setCellRanges([]);\n }\n }\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.updateForDataChange.bind(this));\n };\n ChartController.prototype.updateForGridChange = function () {\n if (this.model.unlinked) {\n return;\n }\n this.model.updateCellRanges();\n this.setChartRange();\n };\n ChartController.prototype.updateForDataChange = function () {\n if (this.model.unlinked) {\n return;\n }\n this.model.updateData();\n this.raiseChartModelUpdateEvent();\n };\n ChartController.prototype.updateForRangeChange = function () {\n this.updateForGridChange();\n this.raiseChartRangeSelectionChangedEvent();\n };\n ChartController.prototype.updateForPanelChange = function (updatedCol) {\n this.model.updateCellRanges(updatedCol);\n this.setChartRange();\n this.raiseChartRangeSelectionChangedEvent();\n };\n ChartController.prototype.getChartUpdateParams = function () {\n var selectedCols = this.getSelectedValueColState();\n var fields = selectedCols.map(function (c) { return ({ colId: c.colId, displayName: c.displayName }); });\n var data = this.getChartData();\n var selectedDimension = this.getSelectedDimension();\n return {\n data: data,\n grouping: this.isGrouping(),\n category: {\n id: selectedDimension.colId,\n name: selectedDimension.displayName,\n chartDataType: this.model.getChartDataType(selectedDimension.colId)\n },\n fields: fields,\n chartId: this.getChartId(),\n getCrossFilteringContext: function () { return ({ lastSelectedChartId: 'xxx' }); },\n seriesChartTypes: this.getSeriesChartTypes()\n };\n };\n ChartController.prototype.getChartModel = function () {\n var modelType = this.model.pivotChart ? 'pivot' : 'range';\n var seriesChartTypes = this.isComboChart() ? this.model.seriesChartTypes : undefined;\n return {\n modelType: modelType,\n chartId: this.model.chartId,\n chartType: this.model.chartType,\n chartThemeName: this.getChartThemeName(),\n chartOptions: this.chartProxy.getChartThemeOverrides(),\n chartPalette: this.chartProxy.getChartPalette(),\n cellRange: this.getCellRangeParams(),\n suppressChartRanges: this.model.suppressChartRanges,\n aggFunc: this.model.aggFunc,\n unlinkChart: this.model.unlinked,\n seriesChartTypes: seriesChartTypes\n };\n };\n ChartController.prototype.getChartId = function () {\n return this.model.chartId;\n };\n ChartController.prototype.getChartData = function () {\n return this.model.chartData;\n };\n ChartController.prototype.getChartType = function () {\n return this.model.chartType;\n };\n ChartController.prototype.setChartType = function (chartType) {\n this.model.chartType = chartType;\n this.model.updateSeriesChartTypes();\n this.raiseChartModelUpdateEvent();\n this.raiseChartOptionsChangedEvent();\n };\n ChartController.prototype.setChartThemeName = function (chartThemeName) {\n this.model.chartThemeName = chartThemeName;\n this.raiseChartModelUpdateEvent();\n this.raiseChartOptionsChangedEvent();\n };\n ChartController.prototype.getChartThemeName = function () {\n return this.model.chartThemeName;\n };\n ChartController.prototype.isPivotChart = function () {\n return this.model.pivotChart;\n };\n ChartController.prototype.isPivotMode = function () {\n return this.model.isPivotMode();\n };\n ChartController.prototype.isGrouping = function () {\n return this.model.isGrouping();\n };\n ChartController.prototype.getThemes = function () {\n return this.gridOptionsService.get('chartThemes') || DEFAULT_THEMES;\n };\n ChartController.prototype.getPalettes = function () {\n var _this = this;\n var themeNames = this.getThemes();\n return themeNames.map(function (themeName) {\n var stockTheme = isStockTheme(themeName);\n var theme = stockTheme ? themeName : _this.chartProxy.lookupCustomChartTheme(themeName);\n return getChartTheme(theme).palette;\n });\n };\n ChartController.prototype.getValueColState = function () {\n return this.model.valueColState.map(this.displayNameMapper.bind(this));\n };\n ChartController.prototype.getSelectedValueColState = function () {\n return this.getValueColState().filter(function (cs) { return cs.selected; });\n };\n ChartController.prototype.getDimensionColState = function () {\n return this.model.dimensionColState;\n };\n ChartController.prototype.getSelectedDimension = function () {\n return this.model.getSelectedDimension();\n };\n ChartController.prototype.displayNameMapper = function (col) {\n var columnNames = this.model.columnNames[col.colId];\n col.displayName = columnNames ? columnNames.join(' - ') : this.model.getColDisplayName(col.column);\n return col;\n };\n ChartController.prototype.getColStateForMenu = function () {\n return { dimensionCols: this.model.dimensionColState, valueCols: this.getValueColState() };\n };\n ChartController.prototype.isDefaultCategorySelected = function () {\n return this.model.getSelectedDimension().colId === ChartDataModel.DEFAULT_CATEGORY;\n };\n ChartController.prototype.setChartRange = function (silent) {\n if (silent === void 0) { silent = false; }\n if (this.rangeService && !this.model.suppressChartRanges && !this.model.unlinked) {\n this.rangeService.setCellRanges(this.getCellRanges());\n }\n if (!silent) {\n this.raiseChartModelUpdateEvent();\n }\n };\n ChartController.prototype.detachChartRange = function () {\n // when chart is detached it won't listen to changes from the grid\n this.model.unlinked = !this.model.unlinked;\n if (this.model.unlinked) {\n // remove range from grid\n if (this.rangeService) {\n this.rangeService.setCellRanges([]);\n }\n }\n else {\n // update chart data may have changed\n this.updateForGridChange();\n }\n };\n ChartController.prototype.setChartProxy = function (chartProxy) {\n this.chartProxy = chartProxy;\n };\n ChartController.prototype.getChartProxy = function () {\n return this.chartProxy;\n };\n ChartController.prototype.isActiveXYChart = function () {\n return _.includes(['scatter', 'bubble'], this.getChartType());\n };\n ChartController.prototype.isChartLinked = function () {\n return !this.model.unlinked;\n };\n ChartController.prototype.customComboExists = function () {\n return this.model.savedCustomSeriesChartTypes && this.model.savedCustomSeriesChartTypes.length > 0;\n };\n ChartController.prototype.getSeriesChartTypes = function () {\n return this.model.seriesChartTypes;\n };\n ChartController.prototype.isComboChart = function () {\n return this.model.isComboChart();\n };\n ChartController.prototype.updateSeriesChartType = function (colId, chartType, secondaryAxis) {\n var seriesChartType = this.model.seriesChartTypes.find(function (s) { return s.colId === colId; });\n if (seriesChartType) {\n // once a combo chart has been modified it is now a 'customCombo' chart\n var updateChartType = this.model.chartType !== 'customCombo';\n if (updateChartType) {\n this.model.chartType = 'customCombo';\n }\n var prevSeriesChartType = seriesChartType.chartType;\n if (chartType != null) {\n seriesChartType.chartType = chartType;\n }\n if (secondaryAxis != null) {\n seriesChartType.secondaryAxis = secondaryAxis;\n }\n // replace existing custom series types with this latest version\n this.model.savedCustomSeriesChartTypes = this.model.seriesChartTypes;\n // series chart types can be modified, i.e. column chart types should be moved to primary axis\n this.model.updateSeriesChartTypes();\n this.updateForDataChange();\n if (updateChartType) {\n // update the settings panel by raising an EVENT_CHART_TYPE_CHANGED event\n this.dispatchEvent({\n type: ChartController.EVENT_CHART_TYPE_CHANGED\n });\n }\n if (prevSeriesChartType !== chartType) {\n // update the format panel by raising an EVENT_CHART_SERIES_CHART_TYPE_CHANGED event\n this.dispatchEvent({\n type: ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED\n });\n }\n this.raiseChartOptionsChangedEvent();\n }\n };\n ChartController.prototype.getActiveSeriesChartTypes = function () {\n var selectedColIds = this.getSelectedValueColState().map(function (c) { return c.colId; });\n return this.getSeriesChartTypes().filter(function (s) { return selectedColIds.includes(s.colId); });\n };\n ChartController.prototype.getChartSeriesTypes = function () {\n var supportedComboSeriesTypes = ['line', 'column', 'area'];\n return this.isComboChart() ? supportedComboSeriesTypes : [getSeriesType(this.getChartType())];\n };\n ChartController.prototype.getCellRanges = function () {\n return [this.model.dimensionCellRange, this.model.valueCellRange].filter(function (r) { return r; });\n };\n ChartController.prototype.getCellRangeParams = function () {\n var cellRanges = this.getCellRanges();\n var firstCellRange = cellRanges[0];\n var startRow = (firstCellRange && firstCellRange.startRow) || null;\n var endRow = (firstCellRange && firstCellRange.endRow) || null;\n return {\n rowStartIndex: startRow && startRow.rowIndex,\n rowStartPinned: startRow && startRow.rowPinned,\n rowEndIndex: endRow && endRow.rowIndex,\n rowEndPinned: endRow && endRow.rowPinned,\n columns: cellRanges.reduce(function (columns, value) { return columns.concat(value.columns.map(function (c) { return c.getId(); })); }, [])\n };\n };\n ChartController.prototype.raiseChartModelUpdateEvent = function () {\n var event = {\n type: ChartController.EVENT_CHART_MODEL_UPDATE\n };\n this.dispatchEvent(event);\n };\n ChartController.prototype.raiseChartUpdatedEvent = function () {\n var event = {\n type: ChartController.EVENT_CHART_UPDATED\n };\n this.dispatchEvent(event);\n };\n ChartController.prototype.raiseChartOptionsChangedEvent = function () {\n var _a = this.getChartModel(), chartId = _a.chartId, chartType = _a.chartType;\n var event = {\n type: Events.EVENT_CHART_OPTIONS_CHANGED,\n chartId: chartId,\n chartType: chartType,\n chartThemeName: this.getChartThemeName(),\n chartOptions: this.chartProxy.getChartThemeOverrides()\n };\n this.eventService.dispatchEvent(event);\n };\n ChartController.prototype.raiseChartRangeSelectionChangedEvent = function () {\n var event = {\n type: Events.EVENT_CHART_RANGE_SELECTION_CHANGED,\n id: this.model.chartId,\n chartId: this.model.chartId,\n cellRange: this.getCellRangeParams()\n };\n this.eventService.dispatchEvent(event);\n };\n ChartController.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.rangeService) {\n this.rangeService.setCellRanges([]);\n }\n };\n ChartController.EVENT_CHART_UPDATED = 'chartUpdated';\n ChartController.EVENT_CHART_MODEL_UPDATE = 'chartModelUpdate';\n ChartController.EVENT_CHART_TYPE_CHANGED = 'chartTypeChanged';\n ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED = 'chartSeriesChartTypeChanged';\n __decorate$19([\n Autowired('rangeService')\n ], ChartController.prototype, \"rangeService\", void 0);\n __decorate$19([\n PostConstruct\n ], ChartController.prototype, \"init\", null);\n return ChartController;\n}(BeanStub));\n\nvar __extends$1D = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$18 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$k = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$9 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$k(arguments[i]));\n return ar;\n};\nvar __values$7 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar DefaultDataPanelDef = {\n groups: [\n { type: 'categories', isOpen: true },\n { type: 'series', isOpen: true },\n { type: 'seriesChartType', isOpen: true }\n ]\n};\nvar ChartDataPanel = /** @class */ (function (_super) {\n __extends$1D(ChartDataPanel, _super);\n function ChartDataPanel(chartController, chartOptionsService) {\n var _this = _super.call(this, ChartDataPanel.TEMPLATE) || this;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.columnComps = new Map();\n return _this;\n }\n ChartDataPanel.prototype.init = function () {\n this.updatePanels();\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_MODEL_UPDATE, this.updatePanels.bind(this));\n this.createAutoScrollService();\n };\n ChartDataPanel.prototype.destroy = function () {\n this.clearComponents();\n _super.prototype.destroy.call(this);\n };\n ChartDataPanel.prototype.updatePanels = function () {\n var _this = this;\n var _a, _b;\n var currentChartType = this.chartType;\n var _c = this.chartController.getColStateForMenu(), dimensionCols = _c.dimensionCols, valueCols = _c.valueCols;\n var colIds = dimensionCols.map(function (c) { return c.colId; }).concat(valueCols.map(function (c) { return c.colId; }));\n this.chartType = this.chartController.getChartType();\n var groupExpandedState = this.getGroupExpandedState();\n if (_.areEqual(_.keys(this.columnComps), colIds) && this.chartType === currentChartType) {\n // if possible, we just update existing components\n __spread$9(dimensionCols, valueCols).forEach(function (col) {\n _this.columnComps.get(col.colId).setValue(col.selected, true);\n });\n if (this.chartController.isActiveXYChart()) {\n var getSeriesLabel_1 = this.generateGetSeriesLabel();\n valueCols.forEach(function (col) {\n _this.columnComps.get(col.colId).setLabel(getSeriesLabel_1(col));\n });\n }\n // recreate series chart type group if it exists as series may be added or removed via series group panel\n _.removeFromParent(this.getGui().querySelector('#seriesChartTypeGroup'));\n this.seriesChartTypeGroupComp = this.destroyBean(this.seriesChartTypeGroupComp);\n var seriesChartTypeIndex = (_a = this.getDataPanelDef().groups) === null || _a === void 0 ? void 0 : _a.reduce(function (prevVal, _a, index) {\n var type = _a.type;\n if (type === 'seriesChartType') {\n return index;\n }\n return prevVal;\n }, -1);\n if (seriesChartTypeIndex !== -1) {\n this.createSeriesChartTypeGroup(valueCols, seriesChartTypeIndex);\n }\n }\n else {\n // otherwise, we re-create everything\n this.clearComponents();\n (_b = this.getDataPanelDef().groups) === null || _b === void 0 ? void 0 : _b.forEach(function (_a) {\n var type = _a.type;\n if (type === 'categories') {\n _this.createCategoriesGroup(dimensionCols);\n }\n else if (type === 'series') {\n _this.createSeriesGroup(valueCols);\n }\n else if (type === 'seriesChartType') {\n _this.createSeriesChartTypeGroup(valueCols);\n }\n else {\n console.warn(\"AG Grid: invalid charts data panel group name supplied: '\" + type + \"'\");\n }\n });\n }\n this.restoreGroupExpandedState(groupExpandedState);\n };\n ChartDataPanel.prototype.getGroupExpandedState = function () {\n var _this = this;\n var groups = [\n { groupType: 'categories', comp: this.categoriesGroupComp },\n { groupType: 'series', comp: this.seriesGroupComp },\n { groupType: 'seriesChartType', comp: this.seriesChartTypeGroupComp }\n ];\n return groups.map(function (_a) {\n var _b, _c;\n var groupType = _a.groupType, comp = _a.comp;\n var defaultExpanded = Boolean((_c = (_b = _this.getDataPanelDef().groups) === null || _b === void 0 ? void 0 : _b.find(function (_a) {\n var type = _a.type;\n return type === groupType;\n })) === null || _c === void 0 ? void 0 : _c.isOpen);\n return !comp ? defaultExpanded : comp.isExpanded();\n });\n };\n ChartDataPanel.prototype.restoreGroupExpandedState = function (groupExpandedState) {\n [\n this.categoriesGroupComp,\n this.seriesGroupComp,\n this.seriesChartTypeGroupComp\n ].forEach(function (group, idx) {\n if (!group) {\n return;\n }\n group.toggleGroupExpand(groupExpandedState[idx]);\n });\n };\n ChartDataPanel.prototype.createAutoScrollService = function () {\n var eGui = this.getGui();\n this.autoScrollService = new AutoScrollService({\n scrollContainer: eGui,\n scrollAxis: 'y',\n getVerticalPosition: function () { return eGui.scrollTop; },\n setVerticalPosition: function (position) { return eGui.scrollTop = position; }\n });\n };\n ChartDataPanel.prototype.createComponent = function (component, id) {\n var eDiv = document.createElement('div');\n eDiv.id = id;\n eDiv.className = 'ag-chart-data-section';\n eDiv.appendChild(component.getGui());\n return eDiv;\n };\n ChartDataPanel.prototype.addComponent = function (parent, component, id) {\n var eDiv = this.createComponent(component, id);\n parent.appendChild(eDiv);\n };\n ChartDataPanel.prototype.addComponentAtIndex = function (parent, component, id, index) {\n var eDiv = this.createComponent(component, id);\n parent.insertBefore(eDiv, parent.children[index]);\n };\n ChartDataPanel.prototype.addChangeListener = function (component, columnState) {\n var _this = this;\n this.addManagedListener(component, AgAbstractField.EVENT_CHANGED, function () {\n columnState.selected = component.getValue();\n _this.chartController.updateForPanelChange(columnState);\n });\n };\n ChartDataPanel.prototype.createCategoriesGroup = function (columns) {\n var _this = this;\n this.categoriesGroupComp = this.createBean(new AgGroupComponent({\n title: this.getCategoryGroupTitle(),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false,\n cssIdentifier: 'charts-data'\n }));\n var inputName = \"chartDimension\" + this.getCompId();\n columns.forEach(function (col) {\n var comp = _this.categoriesGroupComp.createManagedBean(new AgRadioButton());\n comp.setLabel(_.escapeString(col.displayName));\n comp.setValue(col.selected);\n comp.setInputName(inputName);\n _this.addChangeListener(comp, col);\n _this.categoriesGroupComp.addItem(comp);\n _this.columnComps.set(col.colId, comp);\n });\n this.addComponent(this.getGui(), this.categoriesGroupComp, 'categoriesGroup');\n };\n ChartDataPanel.prototype.createSeriesGroup = function (columns) {\n var _this = this;\n this.seriesGroupComp = this.createManagedBean(new AgGroupComponent({\n title: this.getSeriesGroupTitle(),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false,\n cssIdentifier: 'charts-data'\n }));\n if (this.chartController.isActiveXYChart()) {\n var pairedModeToggle = this.seriesGroupComp.createManagedBean(new AgToggleButton());\n pairedModeToggle\n .setLabel(this.chartTranslationService.translate('paired'))\n .setLabelAlignment('left')\n .setLabelWidth('flex')\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getPairedMode())\n .onValueChange(function (newValue) {\n _this.chartOptionsService.setPairedMode(!!newValue);\n _this.chartController.updateForGridChange();\n });\n this.seriesGroupComp.addItem(pairedModeToggle);\n }\n var getSeriesLabel = this.generateGetSeriesLabel();\n columns.forEach(function (col) {\n var comp = _this.seriesGroupComp.createManagedBean(new AgCheckbox());\n comp.addCssClass('ag-data-select-checkbox');\n var label = getSeriesLabel(col);\n comp.setLabel(label);\n comp.setValue(col.selected);\n _this.addChangeListener(comp, col);\n _this.seriesGroupComp.addItem(comp);\n _this.columnComps.set(col.colId, comp);\n _this.addDragHandle(comp, col);\n });\n var eGui = this.getGui();\n var seriesGroupGui = this.seriesGroupComp.getGui();\n this.addComponent(eGui, this.seriesGroupComp, 'seriesGroup');\n var dropTarget = {\n getIconName: function () { return DragAndDropService.ICON_MOVE; },\n getContainer: function () { return seriesGroupGui; },\n onDragging: function (params) { return _this.onDragging(params); },\n onDragLeave: function () { return _this.onDragLeave(); },\n isInterestedIn: this.isInterestedIn.bind(this),\n targetContainsSource: true\n };\n this.dragAndDropService.addDropTarget(dropTarget);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDropTarget(dropTarget); });\n };\n ChartDataPanel.prototype.createSeriesChartTypeGroup = function (columns, index) {\n var _this = this;\n if (!this.chartController.isComboChart()) {\n return;\n }\n this.seriesChartTypeGroupComp = this.createManagedBean(new AgGroupComponent({\n title: this.chartTranslationService.translate('seriesChartType'),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false,\n cssIdentifier: 'charts-data'\n }));\n var seriesChartTypes = this.chartController.getSeriesChartTypes();\n columns.forEach(function (col) {\n if (!col.selected) {\n return;\n }\n var seriesChartType = seriesChartTypes.filter(function (s) { return s.colId === col.colId; })[0];\n if (!seriesChartType) {\n return;\n }\n var seriesItemGroup = _this.seriesChartTypeGroupComp.createManagedBean(new AgGroupComponent({\n title: col.displayName,\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: true,\n cssIdentifier: 'charts-format-sub-level'\n }));\n var secondaryAxisComp = _this.seriesChartTypeGroupComp\n .createManagedBean(new AgCheckbox())\n .setLabel(_this.chartTranslationService.translate('secondaryAxis'))\n .setLabelWidth(\"flex\")\n .setDisabled(['groupedColumn', 'stackedColumn', 'stackedArea'].includes(seriesChartType.chartType))\n .setValue(!!seriesChartType.secondaryAxis)\n .onValueChange(function (enabled) { return _this.chartController.updateSeriesChartType(col.colId, undefined, enabled); });\n seriesItemGroup.addItem(secondaryAxisComp);\n var translate = function (key, defaultText) {\n return _this.chartTranslationService.translate(key, defaultText);\n };\n var availableChartTypes = [\n { value: 'line', text: translate('line', 'Line') },\n { value: 'area', text: translate('area', 'Area') },\n { value: 'stackedArea', text: translate('stackedArea', 'StackedArea') },\n { value: 'groupedColumn', text: translate('groupedColumn', 'Grouped Column') },\n { value: 'stackedColumn', text: translate('stackedColumn', 'Stacked Column') },\n ];\n var chartTypeComp = seriesItemGroup.createManagedBean(new AgSelect());\n chartTypeComp\n .setLabelAlignment('left')\n .setLabelWidth(\"flex\")\n .addOptions(availableChartTypes)\n .setValue(seriesChartType.chartType)\n .onValueChange(function (chartType) { return _this.chartController.updateSeriesChartType(col.colId, chartType); });\n seriesItemGroup.addItem(chartTypeComp);\n _this.seriesChartTypeGroupComp.addItem(seriesItemGroup);\n });\n if (index === undefined) {\n this.addComponent(this.getGui(), this.seriesChartTypeGroupComp, 'seriesChartTypeGroup');\n }\n else {\n this.addComponentAtIndex(this.getGui(), this.seriesChartTypeGroupComp, 'seriesChartTypeGroup', index);\n }\n };\n ChartDataPanel.prototype.addDragHandle = function (comp, col) {\n var _this = this;\n var eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsService);\n eDragHandle.classList.add('ag-drag-handle', 'ag-chart-data-column-drag-handle');\n comp.getGui().insertAdjacentElement('beforeend', eDragHandle);\n var dragSource = {\n type: DragSourceType.ChartPanel,\n eElement: eDragHandle,\n dragItemName: col.displayName,\n getDragItem: function () { return ({ columns: [col.column] }); },\n onDragStopped: function () { return _this.onDragStop(); }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n ChartDataPanel.prototype.generateGetSeriesLabel = function () {\n if (!this.chartController.isActiveXYChart()) {\n return function (col) { return _.escapeString(col.displayName); };\n }\n var isBubble = this.chartType === 'bubble';\n var isInPairedMode = this.isInPairedMode();\n var selectedValuesCount = 0;\n var indexToAxisLabel = new Map();\n indexToAxisLabel.set(0, 'X');\n indexToAxisLabel.set(1, 'Y');\n indexToAxisLabel.set(2, 'size');\n return function (col) {\n var escapedLabel = _.escapeString(col.displayName);\n if (!col.selected) {\n return escapedLabel;\n }\n var axisLabel;\n if (isInPairedMode) {\n axisLabel = indexToAxisLabel.get(selectedValuesCount % (isBubble ? 3 : 2));\n }\n else {\n if (selectedValuesCount === 0) {\n axisLabel = 'X';\n }\n else {\n axisLabel = isBubble && selectedValuesCount % 2 === 0 ? 'size' : 'Y';\n }\n }\n selectedValuesCount++;\n return escapedLabel + \" (\" + axisLabel + \")\";\n };\n };\n ChartDataPanel.prototype.getCategoryGroupTitle = function () {\n return this.chartTranslationService.translate(this.chartController.isActiveXYChart() ? 'labels' : 'categories');\n };\n ChartDataPanel.prototype.getSeriesGroupTitle = function () {\n return this.chartTranslationService.translate(this.chartController.isActiveXYChart() ? 'xyValues' : 'series');\n };\n ChartDataPanel.prototype.getDataPanelDef = function () {\n var _a;\n var userProvidedDataPanelDef = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.dataPanel;\n return userProvidedDataPanelDef ? userProvidedDataPanelDef : DefaultDataPanelDef;\n };\n ChartDataPanel.prototype.isInPairedMode = function () {\n return this.chartController.isActiveXYChart() && this.chartOptionsService.getSeriesOption('paired', 'scatter');\n };\n ChartDataPanel.prototype.clearComponents = function () {\n _.clearElement(this.getGui());\n this.categoriesGroupComp = this.destroyBean(this.categoriesGroupComp);\n this.seriesGroupComp = this.destroyBean(this.seriesGroupComp);\n this.seriesChartTypeGroupComp = this.destroyBean(this.seriesChartTypeGroupComp);\n this.columnComps.clear();\n };\n ChartDataPanel.prototype.onDragging = function (draggingEvent) {\n var itemHovered = this.checkHoveredItem(draggingEvent);\n if (!itemHovered) {\n return;\n }\n this.lastDraggedColumn = draggingEvent.dragItem.columns[0];\n var comp = itemHovered.comp, position = itemHovered.position;\n var _a = this.lastHoveredItem || {}, lastHoveredComp = _a.comp, lastHoveredPosition = _a.position;\n if (comp === lastHoveredComp && position === lastHoveredPosition) {\n return;\n }\n this.autoScrollService.check(draggingEvent.event);\n this.clearHoveredItems();\n this.lastHoveredItem = { comp: comp, position: position };\n var eGui = comp.getGui();\n eGui.classList.add('ag-list-item-hovered', \"ag-item-highlight-\" + position);\n };\n ChartDataPanel.prototype.checkHoveredItem = function (draggingEvent) {\n var e_1, _a;\n if (_.missing(draggingEvent.vDirection)) {\n return null;\n }\n var mouseEvent = draggingEvent.event;\n try {\n for (var _b = __values$7(this.columnComps.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var comp = _c.value;\n var eGui = comp.getGui();\n if (!eGui.querySelector('.ag-chart-data-column-drag-handle')) {\n continue;\n }\n var rect = eGui.getBoundingClientRect();\n var isOverComp = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n if (isOverComp) {\n var height = eGui.clientHeight;\n var position = mouseEvent.clientY > rect.top + (height / 2) ? 'bottom' : 'top';\n return { comp: comp, position: position };\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return null;\n };\n ChartDataPanel.prototype.onDragLeave = function () {\n this.clearHoveredItems();\n };\n ChartDataPanel.prototype.onDragStop = function () {\n var _this = this;\n if (this.lastHoveredItem) {\n var _a = this.chartController.getColStateForMenu(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var draggedColumnState = __spread$9(dimensionCols, valueCols).find(function (state) { return state.column === _this.lastDraggedColumn; });\n if (draggedColumnState) {\n var targetIndex = Array.from(this.columnComps.values()).indexOf(this.lastHoveredItem.comp);\n if (this.lastHoveredItem.position === 'bottom') {\n targetIndex++;\n }\n draggedColumnState.order = targetIndex;\n this.chartController.updateForPanelChange(draggedColumnState);\n }\n }\n this.clearHoveredItems();\n this.lastDraggedColumn = undefined;\n this.autoScrollService.ensureCleared();\n };\n ChartDataPanel.prototype.clearHoveredItems = function () {\n this.columnComps.forEach(function (columnComp) {\n columnComp.getGui().classList.remove('ag-list-item-hovered', 'ag-item-highlight-top', 'ag-item-highlight-bottom');\n });\n this.lastHoveredItem = undefined;\n };\n ChartDataPanel.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.ChartPanel;\n };\n ChartDataPanel.TEMPLATE = \"<div class=\\\"ag-chart-data-wrapper ag-scrollable-container\\\"></div>\";\n __decorate$18([\n Autowired('dragAndDropService')\n ], ChartDataPanel.prototype, \"dragAndDropService\", void 0);\n __decorate$18([\n Autowired('chartTranslationService')\n ], ChartDataPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$18([\n PostConstruct\n ], ChartDataPanel.prototype, \"init\", null);\n return ChartDataPanel;\n}(Component));\n\nvar __extends$1C = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$17 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FontPanel = /** @class */ (function (_super) {\n __extends$1C(FontPanel, _super);\n function FontPanel(params) {\n var _this = _super.call(this) || this;\n _this.activeComps = [];\n _this.params = params;\n return _this;\n }\n FontPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(FontPanel.TEMPLATE, { fontGroup: groupParams });\n this.initGroup();\n this.initFontFamilySelect();\n this.initFontWeightStyleSelect();\n this.initFontSizeSelect();\n this.initFontColorPicker();\n };\n FontPanel.prototype.addCompToPanel = function (comp) {\n this.fontGroup.addItem(comp);\n this.activeComps.push(comp);\n };\n FontPanel.prototype.setEnabled = function (enabled) {\n this.fontGroup.setEnabled(enabled);\n };\n FontPanel.prototype.initGroup = function () {\n var _this = this;\n this.fontGroup\n .setTitle(this.params.name || this.chartTranslationService.translate('font'))\n .setEnabled(this.params.enabled)\n .hideEnabledCheckbox(!!this.params.suppressEnabledCheckbox)\n .hideOpenCloseIcons(true)\n .onEnableChange(function (enabled) {\n if (_this.params.setEnabled) {\n _this.params.setEnabled(enabled);\n }\n });\n };\n FontPanel.prototype.initFontFamilySelect = function () {\n var _this = this;\n var families = [\n 'Arial, sans-serif',\n 'Aria Black, sans-serif',\n 'Book Antiqua, serif',\n 'Charcoal, sans-serif',\n 'Comic Sans MS, cursive',\n 'Courier, monospace',\n 'Courier New, monospace',\n 'Gadget, sans-serif',\n 'Geneva, sans-serif',\n 'Helvetica, sans-serif',\n 'Impact, sans-serif',\n 'Lucida Console, monospace',\n 'Lucida Grande, sans-serif',\n 'Lucida Sans Unicode, sans-serif',\n 'Monaco, monospace',\n 'Palatino Linotype, serif',\n 'Palatino, serif',\n 'Times New Roman, serif',\n 'Times, serif',\n 'Verdana, sans-serif'\n ];\n var family = this.params.initialFont.family;\n var initialValue = families[0];\n if (family) {\n // check for known values using lowercase\n var lowerCaseValues = families.map(function (f) { return f.toLowerCase(); });\n var valueIndex = lowerCaseValues.indexOf(family.toLowerCase());\n if (valueIndex >= 0) {\n initialValue = families[valueIndex];\n }\n else {\n // add user provided value to list\n var capitalisedFontValue = _.capitalise(family);\n families.push(capitalisedFontValue);\n initialValue = capitalisedFontValue;\n }\n }\n var options = families.sort().map(function (value) { return ({ value: value, text: value }); });\n this.familySelect.addOptions(options)\n .setInputWidth('flex')\n .setValue(\"\" + initialValue)\n .onValueChange(function (newValue) { return _this.params.setFont({ family: newValue }); });\n };\n FontPanel.prototype.initFontSizeSelect = function () {\n var _this = this;\n var sizes = [8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36];\n var size = this.params.initialFont.size;\n if (!_.includes(sizes, size)) {\n sizes.push(size);\n }\n var options = sizes.sort(function (a, b) { return a - b; }).map(function (value) { return ({ value: \"\" + value, text: \"\" + value }); });\n this.sizeSelect.addOptions(options)\n .setInputWidth('flex')\n .setValue(\"\" + size)\n .onValueChange(function (newValue) { return _this.params.setFont({ size: parseInt(newValue, 10) }); });\n this.sizeSelect.setLabel(this.chartTranslationService.translate('size'));\n };\n FontPanel.prototype.initFontWeightStyleSelect = function () {\n var _this = this;\n var _a = this.params.initialFont, _b = _a.weight, weight = _b === void 0 ? 'normal' : _b, _c = _a.style, style = _c === void 0 ? 'normal' : _c;\n var weightStyles = [\n { name: 'normal', weight: 'normal', style: 'normal' },\n { name: 'bold', weight: 'bold', style: 'normal' },\n { name: 'italic', weight: 'normal', style: 'italic' },\n { name: 'boldItalic', weight: 'bold', style: 'italic' }\n ];\n var selectedOption = weightStyles.find(function (x) { return x.weight === weight && x.style === style; });\n if (!selectedOption) {\n selectedOption = { name: 'predefined', weight: weight, style: style };\n weightStyles.unshift(selectedOption);\n }\n var options = weightStyles.map(function (ws) { return ({\n value: ws.name,\n text: _this.chartTranslationService.translate(ws.name),\n }); });\n this.weightStyleSelect.addOptions(options)\n .setInputWidth('flex')\n .setValue(selectedOption.name)\n .onValueChange(function (newValue) {\n var selectedWeightStyle = weightStyles.find(function (x) { return x.name === newValue; });\n _this.params.setFont({ weight: selectedWeightStyle.weight, style: selectedWeightStyle.style });\n });\n };\n FontPanel.prototype.initFontColorPicker = function () {\n var _this = this;\n this.colorPicker\n .setLabel(this.chartTranslationService.translate('color'))\n .setInputWidth(45)\n .setValue(\"\" + this.params.initialFont.color)\n .onValueChange(function (newColor) { return _this.params.setFont({ color: newColor }); });\n };\n FontPanel.prototype.addItemToPanel = function (item) {\n this.fontGroup.addItem(item);\n this.activeComps.push(item);\n };\n FontPanel.prototype.destroyActiveComps = function () {\n var _this = this;\n this.activeComps.forEach(function (comp) {\n _.removeFromParent(comp.getGui());\n _this.destroyBean(comp);\n });\n };\n FontPanel.prototype.destroy = function () {\n this.destroyActiveComps();\n _super.prototype.destroy.call(this);\n };\n FontPanel.TEMPLATE = \"<div class=\\\"ag-font-panel\\\">\\n <ag-group-component ref=\\\"fontGroup\\\">\\n <ag-select ref=\\\"familySelect\\\"></ag-select>\\n <ag-select ref=\\\"weightStyleSelect\\\"></ag-select>\\n <div class=\\\"ag-charts-font-size-color\\\">\\n <ag-select ref=\\\"sizeSelect\\\"></ag-select>\\n <ag-color-picker ref=\\\"colorPicker\\\"></ag-color-picker>\\n </div>\\n </ag-group-component>\\n </div>\";\n __decorate$17([\n RefSelector('fontGroup')\n ], FontPanel.prototype, \"fontGroup\", void 0);\n __decorate$17([\n RefSelector('familySelect')\n ], FontPanel.prototype, \"familySelect\", void 0);\n __decorate$17([\n RefSelector('weightStyleSelect')\n ], FontPanel.prototype, \"weightStyleSelect\", void 0);\n __decorate$17([\n RefSelector('sizeSelect')\n ], FontPanel.prototype, \"sizeSelect\", void 0);\n __decorate$17([\n RefSelector('colorPicker')\n ], FontPanel.prototype, \"colorPicker\", void 0);\n __decorate$17([\n Autowired('chartTranslationService')\n ], FontPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$17([\n PostConstruct\n ], FontPanel.prototype, \"init\", null);\n return FontPanel;\n}(Component));\n\nvar __extends$1B = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$16 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LegendPanel = /** @class */ (function (_super) {\n __extends$1B(LegendPanel, _super);\n function LegendPanel(_a) {\n var chartOptionsService = _a.chartOptionsService, _b = _a.isExpandedOnInit, isExpandedOnInit = _b === void 0 ? false : _b;\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartOptionsService = chartOptionsService;\n _this.isExpandedOnInit = isExpandedOnInit;\n return _this;\n }\n LegendPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(LegendPanel.TEMPLATE, { legendGroup: groupParams });\n this.initLegendGroup();\n this.initLegendPosition();\n this.initLegendPadding();\n this.initLegendItems();\n this.initLabelPanel();\n };\n LegendPanel.prototype.initLegendGroup = function () {\n var _this = this;\n this.legendGroup\n .setTitle(this.chartTranslationService.translate(\"legend\"))\n .hideEnabledCheckbox(false)\n .setEnabled(this.chartOptionsService.getChartOption(\"legend.enabled\") || false)\n .toggleGroupExpand(this.isExpandedOnInit)\n .onEnableChange(function (enabled) {\n _this.chartOptionsService.setChartOption(\"legend.enabled\", enabled);\n _this.legendGroup.toggleGroupExpand(true);\n });\n };\n LegendPanel.prototype.initLegendPosition = function () {\n var _this = this;\n var positions = ['top', 'right', 'bottom', 'left'];\n this.legendPositionSelect\n .setLabel(this.chartTranslationService.translate(\"position\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(80)\n .addOptions(positions.map(function (position) { return ({\n value: position,\n text: _this.chartTranslationService.translate(position)\n }); }))\n .setValue(this.chartOptionsService.getChartOption(\"legend.position\"))\n .onValueChange(function (newValue) { return _this.chartOptionsService.setChartOption(\"legend.position\", newValue); });\n };\n LegendPanel.prototype.initLegendPadding = function () {\n var _this = this;\n var currentValue = this.chartOptionsService.getChartOption(\"legend.spacing\");\n this.legendPaddingSlider\n .setLabel(this.chartTranslationService.translate(\"spacing\"))\n .setMaxValue(getMaxValue(currentValue, 200))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setChartOption(\"legend.spacing\", newValue); });\n };\n LegendPanel.prototype.initLegendItems = function () {\n var _this = this;\n var initSlider = function (expression, labelKey, input, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getChartOption(\"legend.\" + expression);\n input.setLabel(_this.chartTranslationService.translate(labelKey))\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) {\n _this.chartOptionsService.setChartOption(\"legend.\" + expression, newValue);\n });\n };\n initSlider(\"item.marker.size\", \"markerSize\", this.markerSizeSlider, 40);\n initSlider(\"item.marker.strokeWidth\", \"markerStroke\", this.markerStrokeSlider, 10);\n initSlider(\"item.marker.padding\", \"itemSpacing\", this.markerPaddingSlider, 20);\n initSlider(\"item.paddingX\", \"layoutHorizontalSpacing\", this.itemPaddingXSlider, 50);\n initSlider(\"item.paddingY\", \"layoutVerticalSpacing\", this.itemPaddingYSlider, 50);\n };\n LegendPanel.prototype.initLabelPanel = function () {\n var _this = this;\n var chartProxy = this.chartOptionsService;\n var initialFont = {\n family: chartProxy.getChartOption(\"legend.item.label.fontFamily\"),\n style: chartProxy.getChartOption(\"legend.item.label.fontStyle\"),\n weight: chartProxy.getChartOption(\"legend.item.label.fontWeight\"),\n size: chartProxy.getChartOption(\"legend.item.label.fontSize\"),\n color: chartProxy.getChartOption(\"legend.item.label.color\")\n };\n var setFont = function (font) {\n var proxy = _this.chartOptionsService;\n if (font.family) {\n proxy.setChartOption(\"legend.item.label.fontFamily\", font.family);\n }\n if (font.weight) {\n proxy.setChartOption(\"legend.item.label.fontWeight\", font.weight);\n }\n if (font.style) {\n proxy.setChartOption(\"legend.item.label.fontStyle\", font.style);\n }\n if (font.size) {\n proxy.setChartOption(\"legend.item.label.fontSize\", font.size);\n }\n if (font.color) {\n proxy.setChartOption(\"legend.item.label.color\", font.color);\n }\n };\n var params = {\n enabled: true,\n suppressEnabledCheckbox: true,\n initialFont: initialFont,\n setFont: setFont\n };\n var fontPanelComp = this.createBean(new FontPanel(params));\n this.legendGroup.addItem(fontPanelComp);\n this.activePanels.push(fontPanelComp);\n };\n LegendPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n LegendPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n LegendPanel.TEMPLATE = \"<div>\\n <ag-group-component ref=\\\"legendGroup\\\">\\n <ag-select ref=\\\"legendPositionSelect\\\"></ag-select>\\n <ag-slider ref=\\\"legendPaddingSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"markerSizeSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"markerStrokeSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"markerPaddingSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"itemPaddingXSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"itemPaddingYSlider\\\"></ag-slider>\\n </ag-group-component>\\n </div>\";\n __decorate$16([\n RefSelector('legendGroup')\n ], LegendPanel.prototype, \"legendGroup\", void 0);\n __decorate$16([\n RefSelector('legendPositionSelect')\n ], LegendPanel.prototype, \"legendPositionSelect\", void 0);\n __decorate$16([\n RefSelector('legendPaddingSlider')\n ], LegendPanel.prototype, \"legendPaddingSlider\", void 0);\n __decorate$16([\n RefSelector('markerSizeSlider')\n ], LegendPanel.prototype, \"markerSizeSlider\", void 0);\n __decorate$16([\n RefSelector('markerStrokeSlider')\n ], LegendPanel.prototype, \"markerStrokeSlider\", void 0);\n __decorate$16([\n RefSelector('markerPaddingSlider')\n ], LegendPanel.prototype, \"markerPaddingSlider\", void 0);\n __decorate$16([\n RefSelector('itemPaddingXSlider')\n ], LegendPanel.prototype, \"itemPaddingXSlider\", void 0);\n __decorate$16([\n RefSelector('itemPaddingYSlider')\n ], LegendPanel.prototype, \"itemPaddingYSlider\", void 0);\n __decorate$16([\n Autowired('chartTranslationService')\n ], LegendPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$16([\n PostConstruct\n ], LegendPanel.prototype, \"init\", null);\n return LegendPanel;\n}(Component));\n\nvar __extends$1A = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$15 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AxisTicksPanel = /** @class */ (function (_super) {\n __extends$1A(AxisTicksPanel, _super);\n function AxisTicksPanel(chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n return _this;\n }\n AxisTicksPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(AxisTicksPanel.TEMPLATE, { axisTicksGroup: groupParams });\n this.initAxisTicks();\n };\n AxisTicksPanel.prototype.initAxisTicks = function () {\n var _this = this;\n this.axisTicksGroup\n .setTitle(this.chartTranslationService.translate(\"ticks\"))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(true);\n this.axisTicksColorPicker\n .setLabel(this.chartTranslationService.translate(\"color\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getAxisProperty(\"tick.color\"))\n .onValueChange(function (newColor) { return _this.chartOptionsService.setAxisProperty(\"tick.color\", newColor); });\n var initInput = function (expression, input, label, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getAxisProperty(expression);\n input.setLabel(label)\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setAxisProperty(expression, newValue); });\n };\n initInput(\"tick.width\", this.axisTicksWidthSlider, this.chartTranslationService.translate(\"width\"), 10);\n initInput(\"tick.size\", this.axisTicksSizeSlider, this.chartTranslationService.translate(\"length\"), 30);\n };\n AxisTicksPanel.TEMPLATE = \"<div>\\n <ag-group-component ref=\\\"axisTicksGroup\\\">\\n <ag-color-picker ref=\\\"axisTicksColorPicker\\\"></ag-color-picker>\\n <ag-slider ref=\\\"axisTicksWidthSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"axisTicksSizeSlider\\\"></ag-slider>\\n </ag-group-component>\\n </div>\";\n __decorate$15([\n RefSelector('axisTicksGroup')\n ], AxisTicksPanel.prototype, \"axisTicksGroup\", void 0);\n __decorate$15([\n RefSelector('axisTicksColorPicker')\n ], AxisTicksPanel.prototype, \"axisTicksColorPicker\", void 0);\n __decorate$15([\n RefSelector('axisTicksWidthSlider')\n ], AxisTicksPanel.prototype, \"axisTicksWidthSlider\", void 0);\n __decorate$15([\n RefSelector('axisTicksSizeSlider')\n ], AxisTicksPanel.prototype, \"axisTicksSizeSlider\", void 0);\n __decorate$15([\n Autowired('chartTranslationService')\n ], AxisTicksPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$15([\n PostConstruct\n ], AxisTicksPanel.prototype, \"init\", null);\n return AxisTicksPanel;\n}(Component));\n\nvar __extends$1z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$14 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAngleSelect = /** @class */ (function (_super) {\n __extends$1z(AgAngleSelect, _super);\n function AgAngleSelect(config) {\n var _this = _super.call(this, config, AgAngleSelect.TEMPLATE) || this;\n _this.radius = 0;\n _this.offsetX = 0;\n _this.offsetY = 0;\n return _this;\n }\n AgAngleSelect.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.dragListener = {\n eElement: this.eParentCircle,\n dragStartPixels: 0,\n onDragStart: function (e) {\n _this.parentCircleRect = _this.eParentCircle.getBoundingClientRect();\n },\n onDragging: function (e) { return _this.calculateAngleDrag(e); },\n onDragStop: function () { }\n };\n this.dragService.addDragSource(this.dragListener);\n this.eAngleValue\n .setLabel('')\n .setLabelWidth(5)\n .setInputWidth(45)\n .setMin(0)\n .setMax(360)\n .setValue(\"\" + this.degrees)\n .onValueChange(function (value) {\n if (value == null || value === '') {\n value = '0';\n }\n value = _this.eAngleValue.normalizeValue(value);\n var floatValue = parseFloat(value);\n if (floatValue > 180) {\n floatValue = floatValue - 360;\n }\n _this.setValue(floatValue);\n });\n this.updateNumberInput();\n if (_.exists(this.getValue())) {\n this.eAngleValue.setValue(this.normalizeNegativeValue(this.getValue()).toString());\n }\n this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () {\n var eDocument = _this.gridOptionsService.getDocument();\n if (_this.eAngleValue.getInputElement().contains(eDocument.activeElement)) {\n return;\n }\n _this.updateNumberInput();\n });\n };\n AgAngleSelect.prototype.updateNumberInput = function () {\n var normalizedValue = this.normalizeNegativeValue(this.getValue());\n this.eAngleValue.setValue(normalizedValue.toString());\n };\n AgAngleSelect.prototype.positionChildCircle = function (radians) {\n var rect = this.parentCircleRect || { width: 24, height: 24 };\n var eChildCircle = this.eChildCircle;\n var centerX = rect.width / 2;\n var centerY = rect.height / 2;\n eChildCircle.style.left = centerX + Math.cos(radians) * 8 + \"px\";\n eChildCircle.style.top = centerY + Math.sin(radians) * 8 + \"px\";\n };\n AgAngleSelect.prototype.calculatePolar = function () {\n var x = this.offsetX;\n var y = this.offsetY;\n var radians = Math.atan2(y, x);\n this.degrees = this.toDegrees(radians);\n this.radius = Math.sqrt((x * x) + (y * y));\n this.positionChildCircle(radians);\n };\n AgAngleSelect.prototype.calculateCartesian = function () {\n var radians = this.toRadians(this.getValue());\n var radius = this.getRadius();\n this\n .setOffsetX(Math.cos(radians) * radius)\n .setOffsetY(Math.sin(radians) * radius);\n };\n AgAngleSelect.prototype.setOffsetX = function (offset) {\n if (this.offsetX !== offset) {\n this.offsetX = offset;\n this.calculatePolar();\n }\n return this;\n };\n AgAngleSelect.prototype.setOffsetY = function (offset) {\n if (this.offsetY !== offset) {\n this.offsetY = offset;\n this.calculatePolar();\n }\n return this;\n };\n AgAngleSelect.prototype.calculateAngleDrag = function (e) {\n var rect = this.parentCircleRect;\n var centerX = rect.width / 2;\n var centerY = rect.height / 2;\n var x = e.clientX - rect.left;\n var y = e.clientY - rect.top;\n var dx = x - centerX;\n var dy = y - centerY;\n var radians = Math.atan2(dy, dx);\n this.setValue(radians, true);\n };\n AgAngleSelect.prototype.toDegrees = function (radians) {\n return radians / Math.PI * 180;\n };\n AgAngleSelect.prototype.toRadians = function (degrees) {\n return degrees / 180 * Math.PI;\n };\n AgAngleSelect.prototype.normalizeNegativeValue = function (degrees) {\n return degrees < 0 ? 360 + degrees : degrees;\n };\n AgAngleSelect.prototype.normalizeAngle180 = function (radians) {\n radians %= Math.PI * 2;\n if (radians < -Math.PI) {\n radians += Math.PI * 2;\n }\n else if (radians >= Math.PI) {\n radians -= Math.PI * 2;\n }\n return radians;\n };\n AgAngleSelect.prototype.getRadius = function () {\n return this.radius;\n };\n AgAngleSelect.prototype.setRadius = function (r) {\n if (this.radius === r) {\n return this;\n }\n this.radius = r;\n this.calculateCartesian();\n return this;\n };\n AgAngleSelect.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () {\n callbackFn(_this.degrees);\n });\n return this;\n };\n AgAngleSelect.prototype.getValue = function (radians) {\n return radians ? this.toRadians(this.degrees) : this.degrees;\n };\n AgAngleSelect.prototype.setValue = function (degrees, radians) {\n var radiansValue;\n if (!radians) {\n radiansValue = this.normalizeAngle180(this.toRadians(degrees));\n }\n else {\n radiansValue = degrees;\n }\n degrees = this.toDegrees(radiansValue);\n if (this.degrees !== degrees) {\n this.degrees = Math.floor(degrees);\n this.calculateCartesian();\n this.positionChildCircle(radiansValue);\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n }\n return this;\n };\n AgAngleSelect.prototype.setWidth = function (width) {\n _.setFixedWidth(this.getGui(), width);\n return this;\n };\n AgAngleSelect.prototype.setDisabled = function (disabled) {\n _super.prototype.setDisabled.call(this, disabled);\n this.eAngleValue.setDisabled(disabled);\n return this;\n };\n AgAngleSelect.prototype.destroy = function () {\n this.dragService.removeDragSource(this.dragListener);\n _super.prototype.destroy.call(this);\n };\n AgAngleSelect.TEMPLATE = \"<div class=\\\"ag-angle-select\\\">\\n <div ref=\\\"eLabel\\\"></div>\\n <div class=\\\"ag-wrapper ag-angle-select-wrapper\\\">\\n <div ref=\\\"eAngleSelectField\\\" class=\\\"ag-angle-select-field\\\">\\n <div ref=\\\"eParentCircle\\\" class=\\\"ag-angle-select-parent-circle\\\">\\n <div ref=\\\"eChildCircle\\\" class=\\\"ag-angle-select-child-circle\\\"></div>\\n </div>\\n </div>\\n <ag-input-number-field ref=\\\"eAngleValue\\\"></ag-input-number-field>\\n </div>\\n </div>\";\n __decorate$14([\n RefSelector('eLabel')\n ], AgAngleSelect.prototype, \"eLabel\", void 0);\n __decorate$14([\n RefSelector('eParentCircle')\n ], AgAngleSelect.prototype, \"eParentCircle\", void 0);\n __decorate$14([\n RefSelector('eChildCircle')\n ], AgAngleSelect.prototype, \"eChildCircle\", void 0);\n __decorate$14([\n RefSelector('eAngleValue')\n ], AgAngleSelect.prototype, \"eAngleValue\", void 0);\n __decorate$14([\n Autowired('dragService')\n ], AgAngleSelect.prototype, \"dragService\", void 0);\n return AgAngleSelect;\n}(AgAbstractLabel));\n\nvar __extends$1y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$13 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AxisPanel = /** @class */ (function (_super) {\n __extends$1y(AxisPanel, _super);\n function AxisPanel(_a) {\n var chartController = _a.chartController, chartOptionsService = _a.chartOptionsService, _b = _a.isExpandedOnInit, isExpandedOnInit = _b === void 0 ? false : _b;\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.axisLabelUpdateFuncs = [];\n _this.prevXRotation = 0;\n _this.prevYRotation = 0;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.isExpandedOnInit = isExpandedOnInit;\n return _this;\n }\n AxisPanel.prototype.init = function () {\n var _this = this;\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(AxisPanel.TEMPLATE, { axisGroup: groupParams });\n this.initAxis();\n this.initAxisTicks();\n this.initAxisLabels();\n var updateAxisLabelRotations = function () { return _this.axisLabelUpdateFuncs.forEach(function (func) { return func(); }); };\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, updateAxisLabelRotations);\n };\n AxisPanel.prototype.initAxis = function () {\n var _this = this;\n this.axisGroup\n .setTitle(this.translate(\"axis\"))\n .toggleGroupExpand(this.isExpandedOnInit)\n .hideEnabledCheckbox(true);\n this.axisColorInput\n .setLabel(this.translate(\"color\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getAxisProperty(\"line.color\"))\n .onValueChange(function (newColor) { return _this.chartOptionsService.setAxisProperty(\"line.color\", newColor); });\n var currentValue = this.chartOptionsService.getAxisProperty(\"line.width\");\n this.axisLineWidthSlider\n .setMaxValue(getMaxValue(currentValue, 10))\n .setLabel(this.translate(\"thickness\"))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setAxisProperty(\"line.width\", newValue); });\n };\n AxisPanel.prototype.initAxisTicks = function () {\n var axisTicksComp = this.createBean(new AxisTicksPanel(this.chartOptionsService));\n this.axisGroup.addItem(axisTicksComp);\n this.activePanels.push(axisTicksComp);\n };\n AxisPanel.prototype.initAxisLabels = function () {\n var _this = this;\n var initialFont = {\n family: this.chartOptionsService.getAxisProperty(\"label.fontFamily\"),\n style: this.chartOptionsService.getAxisProperty(\"label.fontStyle\"),\n weight: this.chartOptionsService.getAxisProperty(\"label.fontWeight\"),\n size: this.chartOptionsService.getAxisProperty(\"label.fontSize\"),\n color: this.chartOptionsService.getAxisProperty(\"label.color\")\n };\n var setFont = function (font) {\n if (font.family) {\n _this.chartOptionsService.setAxisProperty(\"label.fontFamily\", font.family);\n }\n if (font.weight) {\n _this.chartOptionsService.setAxisProperty(\"label.fontWeight\", font.weight);\n }\n if (font.style) {\n _this.chartOptionsService.setAxisProperty(\"label.fontStyle\", font.style);\n }\n if (font.size) {\n _this.chartOptionsService.setAxisProperty(\"label.fontSize\", font.size);\n }\n if (font.color) {\n _this.chartOptionsService.setAxisProperty(\"label.color\", font.color);\n }\n };\n var params = {\n name: this.translate(\"labels\"),\n enabled: true,\n suppressEnabledCheckbox: true,\n initialFont: initialFont,\n setFont: setFont\n };\n var labelPanelComp = this.createBean(new FontPanel(params));\n this.axisGroup.addItem(labelPanelComp);\n this.activePanels.push(labelPanelComp);\n this.addAdditionalLabelComps(labelPanelComp);\n };\n AxisPanel.prototype.addAdditionalLabelComps = function (labelPanelComp) {\n this.addLabelPadding(labelPanelComp);\n var _a = this.createRotationWidgets(), xRotationComp = _a.xRotationComp, yRotationComp = _a.yRotationComp;\n var autoRotateCb = this.initLabelRotations(xRotationComp, yRotationComp);\n labelPanelComp.addCompToPanel(autoRotateCb);\n labelPanelComp.addCompToPanel(xRotationComp);\n labelPanelComp.addCompToPanel(yRotationComp);\n };\n AxisPanel.prototype.initLabelRotations = function (xRotationComp, yRotationComp) {\n var _this = this;\n var getLabelRotation = function (axisType) {\n return _this.chartOptionsService.getLabelRotation(axisType);\n };\n var setLabelRotation = function (axisType, value) {\n _this.chartOptionsService.setLabelRotation(axisType, value);\n };\n var updateAutoRotate = function (autoRotate) {\n _this.chartOptionsService.setAxisProperty(\"label.autoRotate\", autoRotate);\n if (autoRotate) {\n // store prev rotations before we remove them from the options\n _this.prevXRotation = getLabelRotation(\"xAxis\");\n _this.prevYRotation = getLabelRotation(\"yAxis\");\n // `autoRotate` is only\n setLabelRotation(\"xAxis\", undefined);\n setLabelRotation(\"yAxis\", undefined);\n }\n else {\n // reinstate prev rotations\n setLabelRotation(\"xAxis\", _this.prevXRotation);\n setLabelRotation(\"yAxis\", _this.prevYRotation);\n }\n xRotationComp.setDisabled(autoRotate);\n yRotationComp.setDisabled(autoRotate);\n };\n var getAutoRotateValue = function () {\n var xRotation = getLabelRotation(\"xAxis\");\n var yRotation = getLabelRotation(\"yAxis\");\n if (xRotation == undefined && yRotation == undefined) {\n return _this.chartOptionsService.getAxisProperty(\"label.autoRotate\");\n }\n return false;\n };\n var autoRotate = getAutoRotateValue();\n var autoRotateCheckbox = this.createBean(new AgCheckbox())\n .setLabel(this.translate('autoRotate'))\n .setValue(autoRotate)\n .onValueChange(updateAutoRotate);\n // init rotation comp state\n xRotationComp.setDisabled(autoRotate);\n yRotationComp.setDisabled(autoRotate);\n return autoRotateCheckbox;\n };\n AxisPanel.prototype.createRotationWidgets = function () {\n var _this = this;\n var degreesSymbol = String.fromCharCode(176);\n var createRotationComp = function (labelKey, axisType) {\n var label = _this.chartTranslationService.translate(labelKey) + \" \" + degreesSymbol;\n var value = _this.chartOptionsService.getLabelRotation(axisType);\n var angleSelect = new AgAngleSelect()\n .setLabel(label)\n .setLabelWidth(\"flex\")\n .setValue(value || 0)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setLabelRotation(axisType, newValue); });\n // the axis label rotation needs to be updated when the default category changes in the data panel\n _this.axisLabelUpdateFuncs.push(function () {\n var value = _this.chartOptionsService.getLabelRotation(axisType);\n angleSelect.setValue(value || 0);\n });\n return _this.createBean(angleSelect);\n };\n return {\n xRotationComp: createRotationComp(\"xRotation\", \"xAxis\"),\n yRotationComp: createRotationComp(\"yRotation\", \"yAxis\")\n };\n };\n AxisPanel.prototype.addLabelPadding = function (labelPanelComp) {\n var _this = this;\n var labelPaddingSlider = this.createBean(new AgSlider());\n var currentValue = this.chartOptionsService.getAxisProperty(\"label.padding\");\n labelPaddingSlider.setLabel(this.chartTranslationService.translate(\"padding\"))\n .setMaxValue(getMaxValue(currentValue, 30))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setAxisProperty(\"label.padding\", newValue); });\n labelPanelComp.addCompToPanel(labelPaddingSlider);\n };\n AxisPanel.prototype.translate = function (key, defaultText) {\n return this.chartTranslationService.translate(key, defaultText);\n };\n AxisPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n AxisPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n AxisPanel.TEMPLATE = \"<div>\\n <ag-group-component ref=\\\"axisGroup\\\">\\n <ag-color-picker ref=\\\"axisColorInput\\\"></ag-color-picker>\\n <ag-slider ref=\\\"axisLineWidthSlider\\\"></ag-slider>\\n </ag-group-component>\\n </div>\";\n __decorate$13([\n RefSelector('axisGroup')\n ], AxisPanel.prototype, \"axisGroup\", void 0);\n __decorate$13([\n RefSelector('axisColorInput')\n ], AxisPanel.prototype, \"axisColorInput\", void 0);\n __decorate$13([\n RefSelector('axisLineWidthSlider')\n ], AxisPanel.prototype, \"axisLineWidthSlider\", void 0);\n __decorate$13([\n Autowired('chartTranslationService')\n ], AxisPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$13([\n PostConstruct\n ], AxisPanel.prototype, \"init\", null);\n return AxisPanel;\n}(Component));\n\nvar __extends$1x = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$12 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NavigatorPanel = /** @class */ (function (_super) {\n __extends$1x(NavigatorPanel, _super);\n function NavigatorPanel(_a) {\n var chartOptionsService = _a.chartOptionsService, _b = _a.isExpandedOnInit, isExpandedOnInit = _b === void 0 ? false : _b;\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.isExpandedOnInit = isExpandedOnInit;\n return _this;\n }\n NavigatorPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(NavigatorPanel.TEMPLATE, { navigatorGroup: groupParams });\n this.initNavigator();\n };\n NavigatorPanel.prototype.initNavigator = function () {\n var _this = this;\n var chartTranslationService = this.chartTranslationService;\n this.navigatorGroup\n .setTitle(chartTranslationService.translate(\"navigator\"))\n .hideEnabledCheckbox(false)\n .setEnabled(this.chartOptionsService.getChartOption(\"navigator.enabled\") || false)\n .onEnableChange(function (enabled) {\n _this.chartOptionsService.setChartOption(\"navigator.enabled\", enabled);\n _this.navigatorGroup.toggleGroupExpand(true);\n })\n .toggleGroupExpand(this.isExpandedOnInit);\n var currentValue = this.chartOptionsService.getChartOption(\"navigator.height\");\n this.navigatorHeightSlider\n .setLabel(chartTranslationService.translate(\"height\"))\n .setMinValue(10)\n .setMaxValue(getMaxValue(currentValue, 60))\n .setTextFieldWidth(45)\n .setValue(\"\" + (currentValue || 30))\n .onValueChange(function (height) { return _this.chartOptionsService.setChartOption(\"navigator.height\", height); });\n };\n NavigatorPanel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n NavigatorPanel.TEMPLATE = \"<div>\\n <ag-group-component ref=\\\"navigatorGroup\\\">\\n <ag-slider ref=\\\"navigatorHeightSlider\\\"></ag-slider>\\n </ag-group-component>\\n </div>\";\n __decorate$12([\n RefSelector('navigatorGroup')\n ], NavigatorPanel.prototype, \"navigatorGroup\", void 0);\n __decorate$12([\n RefSelector('navigatorHeightSlider')\n ], NavigatorPanel.prototype, \"navigatorHeightSlider\", void 0);\n __decorate$12([\n Autowired('chartTranslationService')\n ], NavigatorPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$12([\n PostConstruct\n ], NavigatorPanel.prototype, \"init\", null);\n return NavigatorPanel;\n}(Component));\n\nvar __extends$1w = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$11 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaddingPanel = /** @class */ (function (_super) {\n __extends$1w(PaddingPanel, _super);\n function PaddingPanel(chartOptionsService, chartController) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.chartController = chartController;\n return _this;\n }\n PaddingPanel.prototype.init = function () {\n var _this = this;\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(PaddingPanel.TEMPLATE, { chartPaddingGroup: groupParams });\n this.addManagedListener(this.eventService, Events.EVENT_CHART_OPTIONS_CHANGED, function (e) {\n _this.updateTopPadding(e.chartOptions);\n });\n this.initGroup();\n this.initChartPaddingItems();\n };\n PaddingPanel.prototype.initGroup = function () {\n this.chartPaddingGroup\n .setTitle(this.chartTranslationService.translate(\"padding\"))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(true);\n };\n PaddingPanel.prototype.initChartPaddingItems = function () {\n var _this = this;\n var initInput = function (property, input) {\n var currentValue = _this.chartOptionsService.getChartOption('padding.' + property);\n input.setLabel(_this.chartTranslationService.translate(property))\n .setMaxValue(getMaxValue(currentValue, 200))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setChartOption('padding.' + property, newValue); });\n };\n initInput('top', this.paddingTopSlider);\n initInput('right', this.paddingRightSlider);\n initInput('bottom', this.paddingBottomSlider);\n initInput('left', this.paddingLeftSlider);\n };\n PaddingPanel.prototype.updateTopPadding = function (chartOptions) {\n var _a, _b;\n // keep 'top' padding in sync with chart as toggling chart title on / off change the 'top' padding\n var seriesType = this.chartController.getChartSeriesTypes()[0];\n var topPadding = (_b = (_a = chartOptions[seriesType]) === null || _a === void 0 ? void 0 : _a.padding) === null || _b === void 0 ? void 0 : _b.top;\n if (topPadding != null) {\n this.paddingTopSlider.setValue(topPadding);\n }\n };\n PaddingPanel.TEMPLATE = \"<div>\\n <ag-group-component ref=\\\"chartPaddingGroup\\\">\\n <ag-slider ref=\\\"paddingTopSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"paddingRightSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"paddingBottomSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"paddingLeftSlider\\\"></ag-slider>\\n </ag-group-component>\\n <div>\";\n __decorate$11([\n RefSelector('chartPaddingGroup')\n ], PaddingPanel.prototype, \"chartPaddingGroup\", void 0);\n __decorate$11([\n RefSelector('paddingTopSlider')\n ], PaddingPanel.prototype, \"paddingTopSlider\", void 0);\n __decorate$11([\n RefSelector('paddingRightSlider')\n ], PaddingPanel.prototype, \"paddingRightSlider\", void 0);\n __decorate$11([\n RefSelector('paddingBottomSlider')\n ], PaddingPanel.prototype, \"paddingBottomSlider\", void 0);\n __decorate$11([\n RefSelector('paddingLeftSlider')\n ], PaddingPanel.prototype, \"paddingLeftSlider\", void 0);\n __decorate$11([\n Autowired('chartTranslationService')\n ], PaddingPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$11([\n PostConstruct\n ], PaddingPanel.prototype, \"init\", null);\n return PaddingPanel;\n}(Component));\n\nvar __extends$1v = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$10 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BackgroundPanel = /** @class */ (function (_super) {\n __extends$1v(BackgroundPanel, _super);\n function BackgroundPanel(chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n return _this;\n }\n BackgroundPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(BackgroundPanel.TEMPLATE, { chartBackgroundGroup: groupParams });\n this.initGroup();\n this.initColorPicker();\n };\n BackgroundPanel.prototype.initGroup = function () {\n var _this = this;\n this.group\n .setTitle(this.chartTranslationService.translate('background'))\n .setEnabled(this.chartOptionsService.getChartOption('background.visible'))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(false)\n .onEnableChange(function (enabled) { return _this.chartOptionsService.setChartOption('background.visible', enabled); });\n };\n BackgroundPanel.prototype.initColorPicker = function () {\n var _this = this;\n this.colorPicker\n .setLabel(this.chartTranslationService.translate('color'))\n .setLabelWidth('flex')\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getChartOption('background.fill'))\n .onValueChange(function (newColor) { return _this.chartOptionsService.setChartOption('background.fill', newColor); });\n };\n BackgroundPanel.TEMPLATE = \"<div>\\n <ag-group-component ref=\\\"chartBackgroundGroup\\\">\\n <ag-color-picker ref=\\\"colorPicker\\\"></ag-color-picker>\\n </ag-group-component>\\n <div>\";\n __decorate$10([\n RefSelector('chartBackgroundGroup')\n ], BackgroundPanel.prototype, \"group\", void 0);\n __decorate$10([\n RefSelector('colorPicker')\n ], BackgroundPanel.prototype, \"colorPicker\", void 0);\n __decorate$10([\n Autowired('chartTranslationService')\n ], BackgroundPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$10([\n PostConstruct\n ], BackgroundPanel.prototype, \"init\", null);\n return BackgroundPanel;\n}(Component));\n\nvar __extends$1u = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TitlePanel = /** @class */ (function (_super) {\n __extends$1u(TitlePanel, _super);\n function TitlePanel(chartOptionsService) {\n var _this = _super.call(this, TitlePanel.TEMPLATE) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.activePanels = [];\n return _this;\n }\n TitlePanel.prototype.init = function () {\n this.initFontPanel();\n this.titlePlaceholder = this.chartTranslationService.translate('titlePlaceholder');\n };\n TitlePanel.prototype.hasTitle = function () {\n var title = this.getOption('title');\n return title && title.enabled && title.text && title.text.length > 0;\n };\n TitlePanel.prototype.initFontPanel = function () {\n var _this = this;\n var hasTitle = this.hasTitle();\n var setFont = function (font, isSilent) {\n if (font.family) {\n _this.setOption('title.fontFamily', font.family, isSilent);\n }\n if (font.weight) {\n _this.setOption('title.fontWeight', font.weight, isSilent);\n }\n if (font.style) {\n _this.setOption('title.fontStyle', font.style, isSilent);\n }\n if (font.size) {\n _this.setOption('title.fontSize', font.size, isSilent);\n }\n if (font.color) {\n _this.setOption('title.color', font.color, isSilent);\n }\n };\n var initialFont = {\n family: this.getOption('title.fontFamily'),\n style: this.getOption('title.fontStyle'),\n weight: this.getOption('title.fontWeight'),\n size: this.getOption('title.fontSize'),\n color: this.getOption('title.color')\n };\n if (!hasTitle) {\n setFont(initialFont, true);\n }\n var fontPanelParams = {\n name: this.chartTranslationService.translate('title'),\n enabled: hasTitle,\n suppressEnabledCheckbox: false,\n initialFont: initialFont,\n setFont: setFont,\n setEnabled: function (enabled) {\n if (_this.toolbarExists()) {\n // extra padding is only included when the toolbar is present\n var topPadding = _this.getOption('padding.top');\n _this.setOption('padding.top', enabled ? topPadding - 20 : topPadding + 20);\n }\n _this.setOption('title.enabled', enabled);\n var currentTitleText = _this.getOption('title.text');\n var replaceableTitleText = currentTitleText === 'Title' || (currentTitleText === null || currentTitleText === void 0 ? void 0 : currentTitleText.trim().length) === 0;\n if (enabled && replaceableTitleText) {\n _this.setOption('title.text', _this.titlePlaceholder);\n }\n }\n };\n var fontPanelComp = this.createBean(new FontPanel(fontPanelParams));\n // add the title spacing slider to font panel\n fontPanelComp.addItemToPanel(this.createSpacingSlicer());\n this.getGui().appendChild(fontPanelComp.getGui());\n this.activePanels.push(fontPanelComp);\n // edits to the title can disable it, so keep the checkbox in sync:\n this.addManagedListener(this.eventService, 'chartTitleEdit', function () {\n fontPanelComp.setEnabled(_this.hasTitle());\n });\n };\n TitlePanel.prototype.createSpacingSlicer = function () {\n var _this = this;\n var spacingSlider = this.createBean(new AgSlider());\n var currentValue = this.chartOptionsService.getChartOption('title.spacing');\n spacingSlider.setLabel(this.chartTranslationService.translate('spacing'))\n .setMaxValue(Math.max(currentValue, 100))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setChartOption('title.spacing', newValue); });\n return spacingSlider;\n };\n TitlePanel.prototype.toolbarExists = function () {\n var toolbarItemsFunc = this.gridOptionsService.getCallback('getChartToolbarItems');\n if (!toolbarItemsFunc) {\n return true;\n }\n var params = {\n defaultItems: ['chartUnlink', 'chartDownload']\n };\n var topItems = ['chartLink', 'chartUnlink', 'chartDownload'];\n return topItems.some(function (v) { var _a; return (_a = (toolbarItemsFunc && toolbarItemsFunc(params))) === null || _a === void 0 ? void 0 : _a.includes(v); });\n };\n TitlePanel.prototype.getOption = function (expression) {\n return this.chartOptionsService.getChartOption(expression);\n };\n TitlePanel.prototype.setOption = function (property, value, isSilent) {\n this.chartOptionsService.setChartOption(property, value, isSilent);\n };\n TitlePanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n TitlePanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n TitlePanel.TEMPLATE = \"<div></div>\";\n __decorate$$([\n Autowired('chartTranslationService')\n ], TitlePanel.prototype, \"chartTranslationService\", void 0);\n __decorate$$([\n PostConstruct\n ], TitlePanel.prototype, \"init\", null);\n return TitlePanel;\n}(Component));\n\nvar __extends$1t = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartPanel = /** @class */ (function (_super) {\n __extends$1t(ChartPanel, _super);\n function ChartPanel(_a) {\n var chartController = _a.chartController, chartOptionsService = _a.chartOptionsService, _b = _a.isExpandedOnInit, isExpandedOnInit = _b === void 0 ? false : _b;\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.isExpandedOnInit = isExpandedOnInit;\n return _this;\n }\n ChartPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(ChartPanel.TEMPLATE, { chartGroup: groupParams });\n this.initGroup();\n this.initTitles();\n this.initPaddingPanel();\n this.initBackgroundPanel();\n };\n ChartPanel.prototype.initGroup = function () {\n this.chartGroup\n .setTitle(this.chartTranslationService.translate('chart'))\n .toggleGroupExpand(this.isExpandedOnInit)\n .hideEnabledCheckbox(true);\n };\n ChartPanel.prototype.initTitles = function () {\n var titlePanelComp = this.createBean(new TitlePanel(this.chartOptionsService));\n this.chartGroup.addItem(titlePanelComp);\n this.activePanels.push(titlePanelComp);\n };\n ChartPanel.prototype.initPaddingPanel = function () {\n var paddingPanelComp = this.createBean(new PaddingPanel(this.chartOptionsService, this.chartController));\n this.chartGroup.addItem(paddingPanelComp);\n this.activePanels.push(paddingPanelComp);\n };\n ChartPanel.prototype.initBackgroundPanel = function () {\n var backgroundPanelComp = this.createBean(new BackgroundPanel(this.chartOptionsService));\n this.chartGroup.addItem(backgroundPanelComp);\n this.activePanels.push(backgroundPanelComp);\n };\n ChartPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n ChartPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n ChartPanel.TEMPLATE = \"<div>\\n <ag-group-component ref=\\\"chartGroup\\\"></ag-group-component>\\n </div>\";\n __decorate$_([\n RefSelector('chartGroup')\n ], ChartPanel.prototype, \"chartGroup\", void 0);\n __decorate$_([\n Autowired('chartTranslationService')\n ], ChartPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$_([\n PostConstruct\n ], ChartPanel.prototype, \"init\", null);\n return ChartPanel;\n}(Component));\n\nvar __extends$1s = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ShadowPanel = /** @class */ (function (_super) {\n __extends$1s(ShadowPanel, _super);\n function ShadowPanel(chartOptionsService, getSelectedSeries) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.getSelectedSeries = getSelectedSeries;\n return _this;\n }\n ShadowPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(ShadowPanel.TEMPLATE, { shadowGroup: groupParams });\n this.shadowBlurSlider.setTextFieldWidth(45);\n this.shadowXOffsetSlider.setTextFieldWidth(45);\n this.shadowYOffsetSlider.setTextFieldWidth(45);\n this.initSeriesShadow();\n };\n ShadowPanel.prototype.initSeriesShadow = function () {\n var _this = this;\n this.shadowGroup\n .setTitle(this.chartTranslationService.translate(\"shadow\"))\n .setEnabled(this.chartOptionsService.getSeriesOption(\"shadow.enabled\", this.getSelectedSeries()))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(false)\n .onEnableChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(\"shadow.enabled\", newValue, _this.getSelectedSeries()); });\n this.shadowColorPicker\n .setLabel(this.chartTranslationService.translate(\"color\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getSeriesOption(\"shadow.color\", this.getSelectedSeries()))\n .onValueChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(\"shadow.color\", newValue, _this.getSelectedSeries()); });\n var initInput = function (input, property, minValue, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getSeriesOption(\"shadow.\" + property, _this.getSelectedSeries());\n input.setLabel(_this.chartTranslationService.translate(property))\n .setMinValue(minValue)\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(\"shadow.\" + property, newValue, _this.getSelectedSeries()); });\n };\n initInput(this.shadowBlurSlider, \"blur\", 0, 20);\n initInput(this.shadowXOffsetSlider, \"xOffset\", -10, 10);\n initInput(this.shadowYOffsetSlider, \"yOffset\", -10, 10);\n };\n ShadowPanel.TEMPLATE = \"<div>\\n <ag-group-component ref=\\\"shadowGroup\\\">\\n <ag-color-picker ref=\\\"shadowColorPicker\\\"></ag-color-picker>\\n <ag-slider ref=\\\"shadowBlurSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"shadowXOffsetSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"shadowYOffsetSlider\\\"></ag-slider>\\n </ag-group-component>\\n </div>\";\n __decorate$Z([\n RefSelector('shadowGroup')\n ], ShadowPanel.prototype, \"shadowGroup\", void 0);\n __decorate$Z([\n RefSelector('shadowColorPicker')\n ], ShadowPanel.prototype, \"shadowColorPicker\", void 0);\n __decorate$Z([\n RefSelector('shadowBlurSlider')\n ], ShadowPanel.prototype, \"shadowBlurSlider\", void 0);\n __decorate$Z([\n RefSelector('shadowXOffsetSlider')\n ], ShadowPanel.prototype, \"shadowXOffsetSlider\", void 0);\n __decorate$Z([\n RefSelector('shadowYOffsetSlider')\n ], ShadowPanel.prototype, \"shadowYOffsetSlider\", void 0);\n __decorate$Z([\n Autowired('chartTranslationService')\n ], ShadowPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$Z([\n PostConstruct\n ], ShadowPanel.prototype, \"init\", null);\n return ShadowPanel;\n}(Component));\n\nfunction initFontPanelParams(_a) {\n var labelName = _a.labelName, chartOptionsService = _a.chartOptionsService, getSelectedSeries = _a.getSelectedSeries, seriesOptionLabelProperty = _a.seriesOptionLabelProperty;\n var getFontOptionExpression = function (fontOption) {\n return seriesOptionLabelProperty + \".\" + fontOption;\n };\n var getFontOption = function (fontOption) {\n var expression = getFontOptionExpression(fontOption);\n return chartOptionsService.getSeriesOption(expression, getSelectedSeries());\n };\n var setFontOption = function (fontOption, value) {\n var expression = getFontOptionExpression(fontOption);\n chartOptionsService.setSeriesOption(expression, value, getSelectedSeries());\n };\n var initialFont = {\n family: getFontOption('fontFamily'),\n style: getFontOption('fontStyle'),\n weight: getFontOption('fontWeight'),\n size: getFontOption('fontSize'),\n color: getFontOption('color'),\n };\n var setFont = function (font) {\n if (font.family) {\n setFontOption('fontFamily', font.family);\n }\n if (font.weight) {\n setFontOption('fontWeight', font.weight);\n }\n if (font.style) {\n setFontOption('fontStyle', font.style);\n }\n if (font.size) {\n setFontOption('fontSize', font.size);\n }\n if (font.color) {\n setFontOption('color', font.color);\n }\n };\n var params = {\n name: labelName,\n enabled: getFontOption('enabled') || false,\n setEnabled: function (enabled) { return setFontOption('enabled', enabled); },\n suppressEnabledCheckbox: false,\n initialFont: initialFont,\n setFont: setFont\n };\n return params;\n}\n\nvar __extends$1r = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MarkersPanel = /** @class */ (function (_super) {\n __extends$1r(MarkersPanel, _super);\n function MarkersPanel(chartOptionsService, getSelectedSeries) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.getSelectedSeries = getSelectedSeries;\n return _this;\n }\n MarkersPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical'\n };\n this.setTemplate(MarkersPanel.TEMPLATE, { seriesMarkersGroup: groupParams });\n this.initMarkers();\n };\n MarkersPanel.prototype.initMarkers = function () {\n var _this = this;\n var seriesMarkerShapeOptions = [\n {\n value: 'square',\n text: 'Square'\n },\n {\n value: 'circle',\n text: 'Circle'\n },\n {\n value: 'cross',\n text: 'Cross'\n },\n {\n value: 'diamond',\n text: 'Diamond'\n },\n {\n value: 'plus',\n text: 'Plus'\n },\n {\n value: 'triangle',\n text: 'Triangle'\n },\n {\n value: 'heart',\n text: 'Heart'\n }\n ];\n this.seriesMarkerShapeSelect\n .addOptions(seriesMarkerShapeOptions)\n .setLabel(this.chartTranslationService.translate('shape'))\n .setValue(this.getSeriesOption(\"marker.shape\"))\n .onValueChange(function (value) { return _this.setSeriesOption(\"marker.shape\", value); });\n // scatter charts should always show markers\n var chartType = this.chartOptionsService.getChartType();\n var shouldHideEnabledCheckbox = _.includes(['scatter', 'bubble'], chartType);\n this.seriesMarkersGroup\n .setTitle(this.chartTranslationService.translate(\"markers\"))\n .hideEnabledCheckbox(shouldHideEnabledCheckbox)\n .setEnabled(this.getSeriesOption(\"marker.enabled\") || false)\n .hideOpenCloseIcons(true)\n .onEnableChange(function (newValue) { return _this.setSeriesOption(\"marker.enabled\", newValue); });\n var initInput = function (expression, input, labelKey, defaultMaxValue) {\n var currentValue = _this.getSeriesOption(expression);\n input.setLabel(_this.chartTranslationService.translate(labelKey))\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.setSeriesOption(expression, newValue); });\n };\n if (chartType === 'bubble') {\n initInput(\"marker.maxSize\", this.seriesMarkerMinSizeSlider, \"maxSize\", 60);\n initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"minSize\", 60);\n }\n else {\n this.seriesMarkerMinSizeSlider.setDisplayed(false);\n initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"size\", 60);\n }\n initInput(\"marker.strokeWidth\", this.seriesMarkerStrokeWidthSlider, \"strokeWidth\", 10);\n };\n MarkersPanel.prototype.getSeriesOption = function (expression) {\n return this.chartOptionsService.getSeriesOption(expression, this.getSelectedSeries());\n };\n MarkersPanel.prototype.setSeriesOption = function (expression, newValue) {\n this.chartOptionsService.setSeriesOption(expression, newValue, this.getSelectedSeries());\n };\n MarkersPanel.TEMPLATE = \"<div>\\n <ag-group-component ref=\\\"seriesMarkersGroup\\\">\\n <ag-select ref=\\\"seriesMarkerShapeSelect\\\"></ag-select>\\n <ag-slider ref=\\\"seriesMarkerMinSizeSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"seriesMarkerSizeSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"seriesMarkerStrokeWidthSlider\\\"></ag-slider>\\n </ag-group-component>\\n </div>\";\n __decorate$Y([\n RefSelector('seriesMarkersGroup')\n ], MarkersPanel.prototype, \"seriesMarkersGroup\", void 0);\n __decorate$Y([\n RefSelector('seriesMarkerShapeSelect')\n ], MarkersPanel.prototype, \"seriesMarkerShapeSelect\", void 0);\n __decorate$Y([\n RefSelector('seriesMarkerSizeSlider')\n ], MarkersPanel.prototype, \"seriesMarkerSizeSlider\", void 0);\n __decorate$Y([\n RefSelector('seriesMarkerMinSizeSlider')\n ], MarkersPanel.prototype, \"seriesMarkerMinSizeSlider\", void 0);\n __decorate$Y([\n RefSelector('seriesMarkerStrokeWidthSlider')\n ], MarkersPanel.prototype, \"seriesMarkerStrokeWidthSlider\", void 0);\n __decorate$Y([\n Autowired('chartTranslationService')\n ], MarkersPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$Y([\n PostConstruct\n ], MarkersPanel.prototype, \"init\", null);\n return MarkersPanel;\n}(Component));\n\nvar __extends$1q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CalloutPanel = /** @class */ (function (_super) {\n __extends$1q(CalloutPanel, _super);\n function CalloutPanel(chartOptionsService, getSelectedSeries) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.getSelectedSeries = getSelectedSeries;\n return _this;\n }\n CalloutPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical'\n };\n this.setTemplate(CalloutPanel.TEMPLATE, { calloutGroup: groupParams });\n this.initCalloutOptions();\n };\n CalloutPanel.prototype.initCalloutOptions = function () {\n var _this = this;\n this.calloutGroup\n .setTitle(this.chartTranslationService.translate(\"callout\"))\n .setEnabled(true)\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(true);\n var initInput = function (expression, input, labelKey, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getSeriesOption(expression, _this.getSelectedSeries());\n input.setLabel(_this.chartTranslationService.translate(labelKey))\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(expression, newValue, _this.getSelectedSeries()); });\n };\n initInput('calloutLine.length', this.calloutLengthSlider, 'length', 40);\n initInput('calloutLine.strokeWidth', this.calloutStrokeWidthSlider, 'strokeWidth', 10);\n initInput('calloutLabel.offset', this.labelOffsetSlider, 'offset', 30);\n };\n CalloutPanel.TEMPLATE = \"<div>\\n <ag-group-component ref=\\\"calloutGroup\\\">\\n <ag-slider ref=\\\"calloutLengthSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"calloutStrokeWidthSlider\\\"></ag-slider>\\n <ag-slider ref=\\\"labelOffsetSlider\\\"></ag-slider>\\n </ag-group-component>\\n </div>\";\n __decorate$X([\n RefSelector('calloutGroup')\n ], CalloutPanel.prototype, \"calloutGroup\", void 0);\n __decorate$X([\n RefSelector('calloutLengthSlider')\n ], CalloutPanel.prototype, \"calloutLengthSlider\", void 0);\n __decorate$X([\n RefSelector('calloutStrokeWidthSlider')\n ], CalloutPanel.prototype, \"calloutStrokeWidthSlider\", void 0);\n __decorate$X([\n RefSelector('labelOffsetSlider')\n ], CalloutPanel.prototype, \"labelOffsetSlider\", void 0);\n __decorate$X([\n Autowired('chartTranslationService')\n ], CalloutPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$X([\n PostConstruct\n ], CalloutPanel.prototype, \"init\", null);\n return CalloutPanel;\n}(Component));\n\nvar __extends$1p = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SeriesPanel = /** @class */ (function (_super) {\n __extends$1p(SeriesPanel, _super);\n function SeriesPanel(_a) {\n var chartController = _a.chartController, chartOptionsService = _a.chartOptionsService, seriesType = _a.seriesType, _b = _a.isExpandedOnInit, isExpandedOnInit = _b === void 0 ? false : _b;\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.widgetFuncs = {\n 'lineWidth': function () { return _this.initLineWidth(); },\n 'strokeWidth': function () { return _this.initStrokeWidth(); },\n 'lineDash': function () { return _this.initLineDash(); },\n 'lineOpacity': function () { return _this.initLineOpacity(); },\n 'fillOpacity': function () { return _this.initFillOpacity(); },\n 'markers': function () { return _this.initMarkers(); },\n 'labels': function () { return _this.initLabels(); },\n 'shadow': function () { return _this.initShadow(); },\n 'tooltips': function () { return _this.initTooltips(); },\n 'bins': function () { return _this.initBins(); },\n };\n _this.seriesWidgetMappings = {\n 'area': ['tooltips', 'lineWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'markers', 'labels', 'shadow'],\n 'bar': ['tooltips', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n 'column': ['tooltips', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n 'line': ['tooltips', 'lineWidth', 'lineDash', 'lineOpacity', 'markers', 'labels'],\n 'histogram': ['tooltips', 'bins', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n 'scatter': ['tooltips', 'markers', 'labels'],\n 'pie': ['tooltips', 'strokeWidth', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n };\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.seriesType = seriesType || _this.getChartSeriesType();\n _this.isExpandedOnInit = isExpandedOnInit;\n return _this;\n }\n SeriesPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(SeriesPanel.TEMPLATE, { seriesGroup: groupParams });\n this.seriesGroup\n .setTitle(this.translate(\"series\"))\n .toggleGroupExpand(this.isExpandedOnInit)\n .hideEnabledCheckbox(true);\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED, this.refreshWidgets.bind(this));\n this.refreshWidgets();\n };\n SeriesPanel.prototype.refreshWidgets = function () {\n var _this = this;\n this.destroyActivePanels();\n var chart = this.chartController.getChartProxy().getChart();\n chart.waitForUpdate().then(function () {\n if (_this.chartController.isComboChart()) {\n _this.updateSeriesType();\n _this.initSeriesSelect();\n }\n _this.seriesWidgetMappings[_this.seriesType].forEach(function (w) { return _this.widgetFuncs[w](); });\n });\n };\n SeriesPanel.prototype.initSeriesSelect = function () {\n var _this = this;\n var seriesSelect = this.seriesGroup.createManagedBean(new AgSelect());\n seriesSelect\n .setLabel(this.translate('seriesType'))\n .setLabelAlignment(\"left\")\n .setLabelWidth('flex')\n .setInputWidth(100)\n .addOptions(this.getSeriesSelectOptions())\n .setValue(\"\" + this.seriesType)\n .onValueChange(function (newValue) {\n _this.seriesType = newValue;\n _this.refreshWidgets();\n });\n this.seriesGroup.addItem(seriesSelect);\n this.activePanels.push(seriesSelect);\n };\n SeriesPanel.prototype.initTooltips = function () {\n var _this = this;\n var seriesTooltipsToggle = this.createBean(new AgToggleButton());\n seriesTooltipsToggle\n .setLabel(this.translate(\"tooltips\"))\n .setLabelAlignment(\"left\")\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(this.getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"tooltip.enabled\", newValue); });\n this.addWidget(seriesTooltipsToggle);\n };\n SeriesPanel.prototype.initStrokeWidth = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"strokeWidth\");\n var seriesStrokeWidthSlider = this.createBean(new AgSlider());\n seriesStrokeWidthSlider\n .setLabel(this.translate(\"strokeWidth\"))\n .setMaxValue(getMaxValue(currentValue, 10))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"strokeWidth\", newValue); });\n this.addWidget(seriesStrokeWidthSlider);\n };\n SeriesPanel.prototype.initLineWidth = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"strokeWidth\");\n var seriesLineWidthSlider = this.createBean(new AgSlider());\n seriesLineWidthSlider\n .setLabel(this.translate('lineWidth'))\n .setMaxValue(getMaxValue(currentValue, 10))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"strokeWidth\", newValue); });\n this.addWidget(seriesLineWidthSlider);\n };\n SeriesPanel.prototype.initLineDash = function () {\n var _this = this;\n var lineDash = this.getSeriesOption(\"lineDash\");\n var currentValue = lineDash ? lineDash[0] : 0;\n var seriesLineDashSlider = this.createBean(new AgSlider());\n seriesLineDashSlider\n .setLabel(this.translate('lineDash'))\n .setMaxValue(getMaxValue(currentValue, 30))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"lineDash\", [newValue]); });\n this.addWidget(seriesLineDashSlider);\n };\n SeriesPanel.prototype.initLineOpacity = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"strokeOpacity\");\n var seriesLineOpacitySlider = this.createBean(new AgSlider());\n seriesLineOpacitySlider\n .setLabel(this.translate(\"strokeOpacity\"))\n .setStep(0.05)\n .setMaxValue(getMaxValue(currentValue, 1))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"strokeOpacity\", newValue); });\n this.addWidget(seriesLineOpacitySlider);\n };\n SeriesPanel.prototype.initFillOpacity = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"fillOpacity\");\n var seriesFillOpacitySlider = this.createBean(new AgSlider());\n seriesFillOpacitySlider\n .setLabel(this.translate(\"fillOpacity\"))\n .setStep(0.05)\n .setMaxValue(getMaxValue(currentValue, 1))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"fillOpacity\", newValue); });\n this.addWidget(seriesFillOpacitySlider);\n };\n SeriesPanel.prototype.initLabels = function () {\n var _this = this;\n var seriesOptionLabelProperty = this.seriesType === 'pie' ? 'calloutLabel' : 'label';\n var labelName = this.seriesType === 'pie'\n ? this.chartTranslationService.translate('calloutLabels')\n : this.chartTranslationService.translate('labels');\n var labelParams = initFontPanelParams({\n labelName: labelName,\n chartOptionsService: this.chartOptionsService,\n getSelectedSeries: function () { return _this.seriesType; },\n seriesOptionLabelProperty: seriesOptionLabelProperty\n });\n var labelPanelComp = this.createBean(new FontPanel(labelParams));\n if (this.seriesType === 'pie') {\n var calloutPanelComp = this.createBean(new CalloutPanel(this.chartOptionsService, function () { return _this.seriesType; }));\n labelPanelComp.addCompToPanel(calloutPanelComp);\n this.activePanels.push(calloutPanelComp);\n }\n this.addWidget(labelPanelComp);\n if (this.seriesType === 'pie') {\n var sectorParams = initFontPanelParams({\n labelName: this.chartTranslationService.translate('sectorLabels'),\n chartOptionsService: this.chartOptionsService,\n getSelectedSeries: function () { return _this.seriesType; },\n seriesOptionLabelProperty: 'sectorLabel'\n });\n var sectorPanelComp = this.createBean(new FontPanel(sectorParams));\n var positionRatioComp = this.getSectorLabelPositionRatio();\n sectorPanelComp.addCompToPanel(positionRatioComp);\n this.addWidget(sectorPanelComp);\n }\n };\n SeriesPanel.prototype.getSectorLabelPositionRatio = function () {\n var _this = this;\n var expression = 'sectorLabel.positionRatio';\n var currentValue = this.chartOptionsService.getSeriesOption(expression, this.seriesType);\n var sectorLabelPositionRatioSlider = this.createBean(new AgSlider());\n return sectorLabelPositionRatioSlider\n .setLabel(this.translate(\"positionRatio\"))\n .setStep(0.05)\n .setMaxValue(getMaxValue(currentValue, 1))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(expression, newValue, _this.seriesType); });\n };\n SeriesPanel.prototype.initShadow = function () {\n var _this = this;\n var shadowPanelComp = this.createBean(new ShadowPanel(this.chartOptionsService, function () { return _this.seriesType; }));\n this.addWidget(shadowPanelComp);\n };\n SeriesPanel.prototype.initMarkers = function () {\n var _this = this;\n var markersPanelComp = this.createBean(new MarkersPanel(this.chartOptionsService, function () { return _this.seriesType; }));\n this.addWidget(markersPanelComp);\n };\n SeriesPanel.prototype.initBins = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"bins\").length;\n var seriesBinCountSlider = this.createBean(new AgSlider());\n seriesBinCountSlider\n .setLabel(this.translate(\"histogramBinCount\"))\n .setMinValue(0)\n .setMaxValue(getMaxValue(currentValue, 20))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"binCount\", newValue); });\n this.addWidget(seriesBinCountSlider);\n };\n SeriesPanel.prototype.addWidget = function (widget) {\n this.seriesGroup.addItem(widget);\n this.activePanels.push(widget);\n };\n SeriesPanel.prototype.getSeriesOption = function (expression) {\n return this.chartOptionsService.getSeriesOption(expression, this.seriesType);\n };\n SeriesPanel.prototype.setSeriesOption = function (expression, newValue) {\n this.chartOptionsService.setSeriesOption(expression, newValue, this.seriesType);\n };\n SeriesPanel.prototype.getChartSeriesType = function () {\n if (this.chartController.getSeriesChartTypes().length === 0) {\n return 'column';\n }\n var ct = this.chartController.getSeriesChartTypes()[0].chartType;\n return (ct === 'columnLineCombo') ? 'column' : (ct === 'areaColumnCombo') ? 'area' : getSeriesType(ct);\n };\n SeriesPanel.prototype.getSeriesSelectOptions = function () {\n var _this = this;\n if (!this.seriesSelectOptions) {\n // lazy init options as they are only required for combo charts\n this.seriesSelectOptions = new Map([\n ['area', { value: 'area', text: this.translate('area', 'Area') }],\n ['bar', { value: 'bar', text: this.translate('bar', 'Bar') }],\n ['column', { value: 'column', text: this.translate('column', 'Column') }],\n ['line', { value: 'line', text: this.translate('line', 'Line') }],\n ['scatter', { value: 'scatter', text: this.translate('scatter', 'Scatter') }],\n ['histogram', { value: 'histogram', text: this.translate('histogram', 'Histogram') }],\n ['pie', { value: 'pie', text: this.translate('pie', 'Pie') }],\n ]);\n }\n var seriesSelectOptions = new Set();\n this.chartController.getActiveSeriesChartTypes().forEach(function (s) {\n var chartType = getSeriesType(s.chartType);\n seriesSelectOptions.add(_this.seriesSelectOptions.get(chartType));\n });\n return Array.from(seriesSelectOptions);\n };\n SeriesPanel.prototype.updateSeriesType = function () {\n var activeChartTypes = this.chartController.getActiveSeriesChartTypes().map(function (s) { return getSeriesType(s.chartType); });\n var invalidSeriesType = !activeChartTypes.includes(this.seriesType);\n if (invalidSeriesType && activeChartTypes.length > 0) {\n this.seriesType = activeChartTypes[0]; // default to first active series type\n }\n };\n SeriesPanel.prototype.translate = function (key, defaultText) {\n return this.chartTranslationService.translate(key, defaultText);\n };\n SeriesPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n SeriesPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n SeriesPanel.TEMPLATE = \"<div>\\n <ag-group-component ref=\\\"seriesGroup\\\">\\n </ag-group-component>\\n </div>\";\n __decorate$W([\n RefSelector('seriesGroup')\n ], SeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate$W([\n Autowired('chartTranslationService')\n ], SeriesPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$W([\n PostConstruct\n ], SeriesPanel.prototype, \"init\", null);\n return SeriesPanel;\n}(Component));\n\nvar __extends$1o = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction getMaxValue(currentValue, defaultMaxValue) {\n return Math.max(currentValue, defaultMaxValue);\n}\nvar DefaultFormatPanelDef = {\n groups: [\n { type: 'chart' },\n { type: 'legend' },\n { type: 'series' },\n { type: 'axis' },\n { type: 'navigator' },\n ]\n};\nvar FormatPanel = /** @class */ (function (_super) {\n __extends$1o(FormatPanel, _super);\n function FormatPanel(chartController, chartOptionsService) {\n var _this = _super.call(this, FormatPanel.TEMPLATE) || this;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.panels = [];\n _this.isGroupPanelShownInSeries = function (group, seriesType) {\n var commonGroupPanels = ['chart', 'legend', 'series'];\n if (commonGroupPanels.includes(group)) {\n return true;\n }\n var cartesianOnlyGroupPanels = ['axis', 'navigator'];\n var cartesianSeries = ['bar', 'column', 'line', 'area', 'scatter', 'histogram', 'cartesian'];\n return !!(cartesianOnlyGroupPanels.includes(group) && cartesianSeries.includes(seriesType));\n };\n return _this;\n }\n FormatPanel.prototype.init = function () {\n this.createPanels();\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, this.createPanels.bind(this));\n };\n FormatPanel.prototype.createPanels = function () {\n var _this = this;\n var _a;\n var chartType = this.chartController.getChartType();\n var isGrouping = this.chartController.isGrouping();\n var seriesType = getSeriesType(chartType);\n if (chartType === this.chartType && isGrouping === this.isGrouping) {\n // existing panels can be re-used\n return;\n }\n this.destroyPanels();\n (_a = this.getFormatPanelDef().groups) === null || _a === void 0 ? void 0 : _a.forEach(function (groupDef) {\n var group = groupDef.type;\n // ensure the group should be displayed for the current series type\n if (!_this.isGroupPanelShownInSeries(group, seriesType)) {\n return;\n }\n var opts = {\n chartController: _this.chartController,\n chartOptionsService: _this.chartOptionsService,\n isExpandedOnInit: groupDef.isOpen,\n seriesType: seriesType\n };\n if (group === 'chart') {\n _this.addComponent(new ChartPanel(opts));\n }\n else if (group === 'legend') {\n _this.addComponent(new LegendPanel(opts));\n }\n else if (group === 'axis') {\n _this.addComponent(new AxisPanel(opts));\n }\n else if (group === 'series') {\n _this.addComponent(new SeriesPanel(opts));\n }\n else if (group === 'navigator') {\n _this.addComponent(new NavigatorPanel(opts));\n }\n else {\n console.warn(\"AG Grid: invalid charts format panel group name supplied: '\" + groupDef.type + \"'\");\n }\n });\n this.chartType = chartType;\n this.isGrouping = isGrouping;\n };\n FormatPanel.prototype.getFormatPanelDef = function () {\n var _a;\n var userProvidedFormatPanelDef = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.formatPanel;\n return userProvidedFormatPanelDef ? userProvidedFormatPanelDef : DefaultFormatPanelDef;\n };\n FormatPanel.prototype.addComponent = function (component) {\n this.createBean(component);\n this.panels.push(component);\n component.addCssClass('ag-chart-format-section');\n this.getGui().appendChild(component.getGui());\n };\n FormatPanel.prototype.destroyPanels = function () {\n var _this = this;\n this.panels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n FormatPanel.prototype.destroy = function () {\n this.destroyPanels();\n _super.prototype.destroy.call(this);\n };\n FormatPanel.TEMPLATE = \"<div class=\\\"ag-chart-format-wrapper\\\"></div>\";\n __decorate$V([\n PostConstruct\n ], FormatPanel.prototype, \"init\", null);\n return FormatPanel;\n}(Component));\n\nvar __extends$1n = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MiniChart = /** @class */ (function (_super) {\n __extends$1n(MiniChart, _super);\n function MiniChart(container, tooltipName) {\n var _this = _super.call(this) || this;\n _this.size = 58;\n _this.padding = 5;\n _this.root = new Group();\n var scene = new Scene({ document: window.document, width: _this.size, height: _this.size });\n scene.canvas.element.classList.add('ag-chart-mini-thumbnail-canvas');\n scene.root = _this.root;\n scene.container = container;\n _this.scene = scene;\n _this.tooltipName = tooltipName;\n return _this;\n }\n MiniChart.prototype.init = function () {\n this.scene.canvas.element.title = this.chartTranslationService.translate(this.tooltipName);\n // necessary to force scene graph render as we are not using the standalone factory!\n this.scene.render();\n };\n __decorate$U([\n Autowired('chartTranslationService')\n ], MiniChart.prototype, \"chartTranslationService\", void 0);\n __decorate$U([\n PostConstruct\n ], MiniChart.prototype, \"init\", null);\n return MiniChart;\n}(Component));\n\nvar __extends$1m = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MiniChartWithAxes = /** @class */ (function (_super) {\n __extends$1m(MiniChartWithAxes, _super);\n function MiniChartWithAxes(container, tooltipName) {\n var _this = _super.call(this, container, tooltipName) || this;\n _this.stroke = 'gray';\n _this.axisOvershoot = 3;\n return _this;\n }\n MiniChartWithAxes.prototype.addAxes = function () {\n var size = this.size;\n var padding = this.padding;\n var leftAxis = new Line();\n leftAxis.x1 = padding;\n leftAxis.y1 = padding;\n leftAxis.x2 = padding;\n leftAxis.y2 = size - padding + this.axisOvershoot;\n leftAxis.stroke = this.stroke;\n var bottomAxis = new Line();\n bottomAxis.x1 = padding - this.axisOvershoot + 1;\n bottomAxis.y1 = size - padding;\n bottomAxis.x2 = size - padding + 1;\n bottomAxis.y2 = size - padding;\n bottomAxis.stroke = this.stroke;\n var root = this.root;\n root.append(leftAxis);\n root.append(bottomAxis);\n };\n __decorate$T([\n PostConstruct\n ], MiniChartWithAxes.prototype, \"addAxes\", null);\n return MiniChartWithAxes;\n}(MiniChart));\n\nfunction createColumnRects(params) {\n var stacked = params.stacked, size = params.size, padding = params.padding, xScalePadding = params.xScalePadding, xScaleDomain = params.xScaleDomain, yScaleDomain = params.yScaleDomain;\n var xScale = new BandScale$5();\n xScale.domain = xScaleDomain;\n xScale.range = [padding, size - padding];\n xScale.paddingInner = xScalePadding;\n xScale.paddingOuter = xScalePadding;\n var yScale = new LinearScale$1();\n yScale.domain = yScaleDomain;\n yScale.range = [size - padding, padding];\n var createBars = function (series, xScale, yScale) {\n return series.map(function (datum, i) {\n var top = yScale.convert(datum);\n var rect = new Rect();\n rect.x = xScale.convert(i);\n rect.y = top;\n rect.width = xScale.bandwidth;\n rect.height = yScale.convert(0) - top;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n };\n if (stacked) {\n return params.data.map(function (d) { return createBars(d, xScale, yScale); });\n }\n return createBars(params.data, xScale, yScale);\n}\nfunction createLinePaths(root, data, size, padding) {\n var xScale = new LinearScale$1();\n xScale.domain = [0, 4];\n xScale.range = [padding, size - padding];\n var yScale = new LinearScale$1();\n yScale.domain = [0, 10];\n yScale.range = [size - padding, padding];\n var lines = data.map(function (series) {\n var line = new Path();\n line.strokeWidth = 3;\n line.lineCap = 'round';\n line.fill = undefined;\n series.forEach(function (datum, i) {\n line.path[i > 0 ? 'lineTo' : 'moveTo'](xScale.convert(i), yScale.convert(datum));\n });\n return line;\n });\n var linesGroup = new Group();\n linesGroup.setClipRectInGroupCoordinateSpace(new BBox(padding, padding, size - padding * 2, size - padding * 2));\n linesGroup.append(lines);\n root.append(linesGroup);\n return lines;\n}\n\nvar __extends$1l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniColumn = /** @class */ (function (_super) {\n __extends$1l(MiniColumn, _super);\n function MiniColumn(container, fills, strokes) {\n var _this = _super.call(this, container, \"groupedColumnTooltip\") || this;\n _this.columnData = [2, 3, 4];\n var _a = _this, root = _a.root, columnData = _a.columnData, size = _a.size, padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1, 2],\n yScaleDomain: [0, 4],\n xScalePadding: 0.3\n });\n root.append(_this.columns);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniColumn.prototype.updateColors = function (fills, strokes) {\n this.columns.forEach(function (column, i) {\n column.fill = fills[i];\n column.stroke = strokes[i];\n });\n };\n MiniColumn.chartType = 'groupedColumn';\n return MiniColumn;\n}(MiniChartWithAxes));\n\nvar __extends$1k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniStackedColumn = /** @class */ (function (_super) {\n __extends$1k(MiniStackedColumn, _super);\n function MiniStackedColumn(container, fills, strokes, data, yScaleDomain, tooltipName) {\n if (data === void 0) { data = MiniStackedColumn.data; }\n if (yScaleDomain === void 0) { yScaleDomain = [0, 16]; }\n if (tooltipName === void 0) { tooltipName = \"stackedColumnTooltip\"; }\n var _this = _super.call(this, container, tooltipName) || this;\n var _a = _this, root = _a.root, size = _a.size, padding = _a.padding;\n _this.stackedColumns = createColumnRects({\n stacked: true,\n root: root,\n data: data,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1, 2],\n yScaleDomain: yScaleDomain,\n xScalePadding: 0.3,\n });\n root.append([].concat.apply([], _this.stackedColumns));\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniStackedColumn.prototype.updateColors = function (fills, strokes) {\n this.stackedColumns.forEach(function (series, i) {\n return series.forEach(function (column) {\n column.fill = fills[i];\n column.stroke = strokes[i];\n });\n });\n };\n MiniStackedColumn.chartType = 'stackedColumn';\n MiniStackedColumn.data = [\n [8, 12, 16],\n [6, 9, 12],\n [2, 3, 4]\n ];\n return MiniStackedColumn;\n}(MiniChartWithAxes));\n\nvar __extends$1j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniNormalizedColumn = /** @class */ (function (_super) {\n __extends$1j(MiniNormalizedColumn, _super);\n function MiniNormalizedColumn(container, fills, strokes) {\n return _super.call(this, container, fills, strokes, MiniNormalizedColumn.data, [0, 10], \"normalizedColumnTooltip\") || this;\n }\n MiniNormalizedColumn.chartType = 'normalizedColumn';\n MiniNormalizedColumn.data = [\n [10, 10, 10],\n [6, 7, 8],\n [2, 4, 6]\n ];\n return MiniNormalizedColumn;\n}(MiniStackedColumn));\n\nvar __extends$1i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniBar = /** @class */ (function (_super) {\n __extends$1i(MiniBar, _super);\n function MiniBar(container, fills, strokes) {\n var _this = _super.call(this, container, \"groupedBarTooltip\") || this;\n var padding = _this.padding;\n var size = _this.size;\n var data = [2, 3, 4];\n var yScale = new BandScale$5();\n yScale.domain = [0, 1, 2];\n yScale.range = [padding, size - padding];\n yScale.paddingInner = 0.3;\n yScale.paddingOuter = 0.3;\n var xScale = new LinearScale$1();\n xScale.domain = [0, 4];\n xScale.range = [size - padding, padding];\n var bottom = xScale.convert(0);\n var height = yScale.bandwidth;\n _this.bars = data.map(function (datum, i) {\n var rect = new Rect();\n rect.x = padding;\n rect.y = yScale.convert(i);\n rect.width = bottom - xScale.convert(datum);\n rect.height = height;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.bars);\n return _this;\n }\n MiniBar.prototype.updateColors = function (fills, strokes) {\n this.bars.forEach(function (bar, i) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n };\n MiniBar.chartType = 'groupedBar';\n return MiniBar;\n}(MiniChartWithAxes));\n\nvar __extends$1h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniStackedBar = /** @class */ (function (_super) {\n __extends$1h(MiniStackedBar, _super);\n function MiniStackedBar(container, fills, strokes, data, xScaleDomain, tooltipName) {\n if (data === void 0) { data = MiniStackedBar.data; }\n if (xScaleDomain === void 0) { xScaleDomain = [0, 16]; }\n if (tooltipName === void 0) { tooltipName = \"stackedBarTooltip\"; }\n var _this = _super.call(this, container, tooltipName) || this;\n var size = _this.size;\n var padding = _this.padding;\n var yScale = new BandScale$5();\n yScale.domain = [0, 1, 2];\n yScale.range = [padding, size - padding];\n yScale.paddingInner = 0.3;\n yScale.paddingOuter = 0.3;\n var xScale = new LinearScale$1();\n xScale.domain = xScaleDomain;\n xScale.range = [size - padding, padding];\n var bottom = xScale.convert(0);\n var height = yScale.bandwidth;\n _this.bars = data.map(function (series) {\n return series.map(function (datum, i) {\n var rect = new Rect();\n rect.x = padding;\n rect.y = yScale.convert(i);\n rect.width = bottom - xScale.convert(datum);\n rect.height = height;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n });\n _this.updateColors(fills, strokes);\n _this.root.append([].concat.apply([], _this.bars));\n return _this;\n }\n MiniStackedBar.prototype.updateColors = function (fills, strokes) {\n this.bars.forEach(function (series, i) {\n return series.forEach(function (bar) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n });\n };\n MiniStackedBar.chartType = 'stackedBar';\n MiniStackedBar.data = [\n [8, 12, 16],\n [6, 9, 12],\n [2, 3, 4]\n ];\n return MiniStackedBar;\n}(MiniChartWithAxes));\n\nvar __extends$1g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniNormalizedBar = /** @class */ (function (_super) {\n __extends$1g(MiniNormalizedBar, _super);\n function MiniNormalizedBar(container, fills, strokes) {\n return _super.call(this, container, fills, strokes, MiniNormalizedBar.data, [0, 10], \"normalizedBarTooltip\") || this;\n }\n MiniNormalizedBar.chartType = 'normalizedBar';\n MiniNormalizedBar.data = [\n [10, 10, 10],\n [6, 7, 8],\n [2, 4, 6]\n ];\n return MiniNormalizedBar;\n}(MiniStackedBar));\n\nvar __extends$1f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read$j = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar toRadians = toRadians$1;\nvar MiniDoughnut = /** @class */ (function (_super) {\n __extends$1f(MiniDoughnut, _super);\n function MiniDoughnut(container, fills, strokes, centerRadiusScaler, tooltipName) {\n if (centerRadiusScaler === void 0) { centerRadiusScaler = 0.6; }\n if (tooltipName === void 0) { tooltipName = \"doughnutTooltip\"; }\n var _this = _super.call(this, container, tooltipName) || this;\n var radius = (_this.size - _this.padding * 2) / 2;\n var center = radius + _this.padding;\n var angles = [\n [toRadians(-90), toRadians(30)],\n [toRadians(30), toRadians(120)],\n [toRadians(120), toRadians(180)],\n [toRadians(180), toRadians(210)],\n [toRadians(210), toRadians(240)],\n [toRadians(240), toRadians(270)]\n ];\n _this.sectors = angles.map(function (_a) {\n var _b = __read$j(_a, 2), startAngle = _b[0], endAngle = _b[1];\n var sector = new Sector();\n sector.centerX = center;\n sector.centerY = center;\n sector.innerRadius = radius * centerRadiusScaler;\n sector.outerRadius = radius;\n sector.startAngle = startAngle;\n sector.endAngle = endAngle;\n sector.stroke = undefined;\n sector.strokeWidth = 1;\n return sector;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.sectors);\n return _this;\n }\n MiniDoughnut.prototype.updateColors = function (fills, strokes) {\n this.sectors.forEach(function (sector, i) {\n sector.fill = fills[i % fills.length];\n sector.stroke = strokes[i % strokes.length];\n });\n };\n MiniDoughnut.chartType = 'doughnut';\n return MiniDoughnut;\n}(MiniChart));\n\nvar __extends$1e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniPie = /** @class */ (function (_super) {\n __extends$1e(MiniPie, _super);\n function MiniPie(container, fills, strokes) {\n return _super.call(this, container, fills, strokes, 0, \"pieTooltip\") || this;\n }\n MiniPie.chartType = 'pie';\n return MiniPie;\n}(MiniDoughnut));\n\nvar __extends$1d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniLine = /** @class */ (function (_super) {\n __extends$1d(MiniLine, _super);\n function MiniLine(container, fills, strokes) {\n var _this = _super.call(this, container, \"lineTooltip\") || this;\n _this.data = [\n [9, 7, 8, 5, 6],\n [5, 6, 3, 4, 1],\n [1, 3, 4, 8, 7]\n ];\n _this.lines = createLinePaths(_this.root, _this.data, _this.size, _this.padding);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniLine.prototype.updateColors = function (fills, strokes) {\n this.lines.forEach(function (line, i) {\n line.stroke = fills[i];\n });\n };\n MiniLine.chartType = 'line';\n return MiniLine;\n}(MiniChartWithAxes));\n\nvar __extends$1c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read$i = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar MiniScatter = /** @class */ (function (_super) {\n __extends$1c(MiniScatter, _super);\n function MiniScatter(container, fills, strokes) {\n var _this = _super.call(this, container, \"scatterTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n // [x, y] pairs\n var data = [\n [[0.3, 3], [1.1, 0.9], [2, 0.4], [3.4, 2.4]],\n [[0, 0.3], [1, 2], [2.4, 1.4], [3, 0]]\n ];\n var xScale = new LinearScale$1();\n xScale.domain = [-0.5, 4];\n xScale.range = [padding * 2, size - padding];\n var yScale = new LinearScale$1();\n yScale.domain = [-0.5, 3.5];\n yScale.range = [size - padding, padding];\n var points = [];\n data.forEach(function (series) {\n series.forEach(function (_a) {\n var _b = __read$i(_a, 2), x = _b[0], y = _b[1];\n var arc = new Arc();\n arc.strokeWidth = 1;\n arc.centerX = xScale.convert(x);\n arc.centerY = yScale.convert(y);\n arc.radius = 2.5;\n points.push(arc);\n });\n });\n _this.points = points;\n _this.updateColors(fills, strokes);\n var pointsGroup = new Group();\n pointsGroup.setClipRectInGroupCoordinateSpace(new BBox(padding, padding, size - padding * 2, size - padding * 2));\n pointsGroup.append(_this.points);\n _this.root.append(pointsGroup);\n return _this;\n }\n MiniScatter.prototype.updateColors = function (fills, strokes) {\n this.points.forEach(function (line, i) {\n line.stroke = strokes[i % strokes.length];\n line.fill = fills[i % fills.length];\n });\n };\n MiniScatter.chartType = 'scatter';\n return MiniScatter;\n}(MiniChartWithAxes));\n\nvar __extends$1b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read$h = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar MiniBubble = /** @class */ (function (_super) {\n __extends$1b(MiniBubble, _super);\n function MiniBubble(container, fills, strokes) {\n var _this = _super.call(this, container, \"bubbleTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n // [x, y, radius] triples\n var data = [\n [[0.1, 0.3, 5], [0.5, 0.4, 7], [0.2, 0.8, 7]], [[0.8, 0.7, 5], [0.7, 0.3, 9]]\n ];\n var xScale = new LinearScale$1();\n xScale.domain = [0, 1];\n xScale.range = [padding * 2, size - padding];\n var yScale = new LinearScale$1();\n yScale.domain = [0, 1];\n yScale.range = [size - padding, padding];\n var points = [];\n data.forEach(function (series) {\n series.forEach(function (_a) {\n var _b = __read$h(_a, 3), x = _b[0], y = _b[1], radius = _b[2];\n var arc = new Arc();\n arc.strokeWidth = 1;\n arc.centerX = xScale.convert(x);\n arc.centerY = yScale.convert(y);\n arc.radius = radius;\n arc.fillOpacity = 0.7;\n points.push(arc);\n });\n });\n _this.points = points;\n _this.updateColors(fills, strokes);\n var pointsGroup = new Group();\n pointsGroup.setClipRectInGroupCoordinateSpace(new BBox(padding, padding, size - padding * 2, size - padding * 2));\n pointsGroup.append(_this.points);\n _this.root.append(pointsGroup);\n return _this;\n }\n MiniBubble.prototype.updateColors = function (fills, strokes) {\n this.points.forEach(function (line, i) {\n line.stroke = strokes[i % strokes.length];\n line.fill = fills[i % fills.length];\n });\n };\n MiniBubble.chartType = 'bubble';\n return MiniBubble;\n}(MiniChartWithAxes));\n\nvar __extends$1a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniArea = /** @class */ (function (_super) {\n __extends$1a(MiniArea, _super);\n function MiniArea(container, fills, strokes, data) {\n if (data === void 0) { data = MiniArea.data; }\n var _this = _super.call(this, container, \"groupedAreaTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n var xScale = new BandScale$5();\n xScale.domain = [0, 1, 2];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n xScale.range = [padding + 0.5, size - padding - 0.5];\n var yScale = new LinearScale$1();\n yScale.domain = [0, 6];\n yScale.range = [size - padding + 0.5, padding];\n var xCount = data.length;\n var last = xCount * 2 - 1;\n var pathData = [];\n var bottomY = yScale.convert(0);\n data.forEach(function (datum, i) {\n var x = xScale.convert(i);\n datum.forEach(function (yDatum, j) {\n var y = yScale.convert(yDatum);\n var points = pathData[j] || (pathData[j] = []);\n points[i] = {\n x: x,\n y: y\n };\n points[last - i] = {\n x: x,\n y: bottomY\n };\n });\n });\n _this.areas = pathData.reverse().map(function (points) {\n var area = new Path();\n area.strokeWidth = 1;\n area.fillOpacity = 0.7;\n var path = area.path;\n path.clear();\n points.forEach(function (point, i) { return path[i > 0 ? \"lineTo\" : \"moveTo\"](point.x, point.y); });\n path.closePath();\n return area;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.areas);\n return _this;\n }\n MiniArea.prototype.updateColors = function (fills, strokes) {\n this.areas.forEach(function (area, i) {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n };\n MiniArea.chartType = 'area';\n MiniArea.data = [\n [1, 3, 5],\n [2, 6, 4],\n [5, 3, 1]\n ];\n return MiniArea;\n}(MiniChartWithAxes));\n\nvar __extends$19 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniStackedArea = /** @class */ (function (_super) {\n __extends$19(MiniStackedArea, _super);\n function MiniStackedArea(container, fills, strokes, data, tooltipName) {\n if (data === void 0) { data = MiniStackedArea.data; }\n if (tooltipName === void 0) { tooltipName = \"stackedAreaTooltip\"; }\n var _this = _super.call(this, container, tooltipName) || this;\n var size = _this.size;\n var padding = _this.padding;\n var xScale = new BandScale$5();\n xScale.domain = [0, 1, 2];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n xScale.range = [padding + 0.5, size - padding - 0.5];\n var yScale = new LinearScale$1();\n yScale.domain = [0, 16];\n yScale.range = [size - padding + 0.5, padding + 0.5];\n var xCount = data.length;\n var last = xCount * 2 - 1;\n var pathData = [];\n data.forEach(function (datum, i) {\n var x = xScale.convert(i);\n var total = 0;\n datum.forEach(function (yDatum, j) {\n var y = yScale.convert(total + yDatum);\n var points = pathData[j] || (pathData[j] = []);\n points[i] = {\n x: x,\n y: y\n };\n points[last - i] = {\n x: x,\n y: yScale.convert(total) // bottom y\n };\n total += yDatum;\n });\n });\n _this.areas = pathData.map(function (points) {\n var area = new Path();\n area.strokeWidth = 1;\n var path = area.path;\n path.clear();\n points.forEach(function (point, i) { return path[i > 0 ? \"lineTo\" : \"moveTo\"](point.x, point.y); });\n path.closePath();\n return area;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.areas);\n return _this;\n }\n MiniStackedArea.prototype.updateColors = function (fills, strokes) {\n this.areas.forEach(function (area, i) {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n };\n MiniStackedArea.chartType = 'stackedArea';\n MiniStackedArea.data = [\n [2, 3, 2],\n [3, 6, 5],\n [6, 2, 2]\n ];\n return MiniStackedArea;\n}(MiniChartWithAxes));\n\nvar __extends$18 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniNormalizedArea = /** @class */ (function (_super) {\n __extends$18(MiniNormalizedArea, _super);\n function MiniNormalizedArea(container, fills, strokes, data) {\n if (data === void 0) { data = MiniNormalizedArea.data; }\n return _super.call(this, container, fills, strokes, data, \"normalizedAreaTooltip\") || this;\n }\n MiniNormalizedArea.chartType = 'normalizedArea';\n MiniNormalizedArea.data = MiniStackedArea.data.map(function (stack) {\n var sum = stack.reduce(function (p, c) { return p + c; }, 0);\n return stack.map(function (v) { return v / sum * 16; });\n });\n return MiniNormalizedArea;\n}(MiniStackedArea));\n\nvar __extends$17 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read$g = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar MiniHistogram = /** @class */ (function (_super) {\n __extends$17(MiniHistogram, _super);\n function MiniHistogram(container, fills, strokes) {\n var _this = _super.call(this, container, \"histogramTooltip\") || this;\n var padding = _this.padding;\n var size = _this.size;\n // approx normal curve\n var data = [2, 5, 11, 13, 10, 6, 1];\n var xScale = new LinearScale$1();\n xScale.domain = [0, data.length];\n xScale.range = [padding, size - padding];\n var yScale = new LinearScale$1();\n yScale.domain = [0, data.reduce(function (a, b) { return Math.max(a, b); }, 0)];\n yScale.range = [size - padding, padding];\n var bottom = yScale.convert(0);\n _this.bars = data.map(function (datum, i) {\n var top = yScale.convert(datum);\n var left = xScale.convert(i);\n var right = xScale.convert(i + 1);\n var rect = new Rect();\n rect.x = left;\n rect.y = top;\n rect.width = right - left;\n rect.height = bottom - top;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.bars);\n return _this;\n }\n MiniHistogram.prototype.updateColors = function (_a, _b) {\n var _c = __read$g(_a, 1), fill = _c[0];\n var _d = __read$g(_b, 1), stroke = _d[0];\n this.bars.forEach(function (bar) {\n bar.fill = fill;\n bar.stroke = stroke;\n });\n };\n MiniHistogram.chartType = 'histogram';\n return MiniHistogram;\n}(MiniChartWithAxes));\n\nvar __extends$16 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniColumnLineCombo = /** @class */ (function (_super) {\n __extends$16(MiniColumnLineCombo, _super);\n function MiniColumnLineCombo(container, fills, strokes) {\n var _this = _super.call(this, container, \"columnLineComboTooltip\") || this;\n _this.columnData = [3, 4];\n _this.lineData = [\n [5, 4, 6, 5, 4]\n ];\n var _a = _this, root = _a.root, columnData = _a.columnData, lineData = _a.lineData, size = _a.size, padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1],\n yScaleDomain: [0, 4],\n xScalePadding: 0.5\n });\n root.append(_this.columns);\n _this.lines = createLinePaths(root, lineData, size, padding);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniColumnLineCombo.prototype.updateColors = function (fills, strokes) {\n this.columns.forEach(function (bar, i) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n this.lines.forEach(function (line, i) {\n line.stroke = fills[i + 2];\n });\n };\n MiniColumnLineCombo.chartType = 'columnLineCombo';\n return MiniColumnLineCombo;\n}(MiniChartWithAxes));\n\nvar __extends$15 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniAreaColumnCombo = /** @class */ (function (_super) {\n __extends$15(MiniAreaColumnCombo, _super);\n function MiniAreaColumnCombo(container, fills, strokes) {\n var _this = _super.call(this, container, \"areaColumnComboTooltip\") || this;\n _this.columnData = [3, 4.5];\n _this.areaData = [\n [5, 4, 6, 5, 4],\n ];\n var _a = _this, root = _a.root, columnData = _a.columnData, areaData = _a.areaData, size = _a.size, padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1],\n yScaleDomain: [0, 6],\n xScalePadding: 0.5,\n });\n // scale for area series\n var xScale = new BandScale$5();\n xScale.range = [padding, size - padding];\n xScale.domain = [0, 1, 2, 3, 4];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n var yScale = new LinearScale$1();\n yScale.range = [size - padding, padding];\n yScale.domain = [0, 6];\n var pathData = [];\n var yZero = yScale.convert(0);\n var firstX = xScale.convert(0);\n areaData.forEach(function (series, i) {\n var points = pathData[i] || (pathData[i] = []);\n series.forEach(function (data, j) {\n var yDatum = data;\n var xDatum = j;\n var x = xScale.convert(xDatum);\n var y = yScale.convert(yDatum);\n points[j] = { x: x, y: y };\n });\n var lastX = xScale.convert(series.length - 1);\n pathData[i].push({\n x: lastX,\n y: yZero\n }, {\n x: firstX,\n y: yZero\n });\n });\n _this.areas = pathData.map(function (points) {\n var area = new Path();\n area.strokeWidth = 1;\n area.fillOpacity = 0.8;\n var path = area.path;\n points.forEach(function (point, i) { return path[i > 0 ? 'lineTo' : 'moveTo'](point.x, point.y); });\n return area;\n });\n root.append(_this.areas);\n root.append([].concat.apply([], _this.columns));\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniAreaColumnCombo.prototype.updateColors = function (fills, strokes) {\n this.areas.forEach(function (area, i) {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n this.columns.forEach(function (bar, i) {\n bar.fill = fills[i + 1];\n bar.stroke = strokes[i + 1];\n });\n };\n MiniAreaColumnCombo.chartType = 'areaColumnCombo';\n return MiniAreaColumnCombo;\n}(MiniChartWithAxes));\n\nvar __extends$14 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MiniCustomCombo = /** @class */ (function (_super) {\n __extends$14(MiniCustomCombo, _super);\n function MiniCustomCombo(container, fills, strokes) {\n var _this = _super.call(this, container, 'customComboTooltip') || this;\n _this.columnData = [3, 4];\n _this.lineData = [[5, 4, 6, 5, 4]];\n var _a = _this, root = _a.root, columnData = _a.columnData, lineData = _a.lineData, size = _a.size, padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1],\n yScaleDomain: [0, 4],\n xScalePadding: 0.5,\n });\n root.append(_this.columns);\n _this.lines = createLinePaths(root, lineData, size, padding);\n var axisStroke = 'grey';\n var axisOvershoot = 3;\n var leftAxis = new Line();\n leftAxis.x1 = padding;\n leftAxis.y1 = padding;\n leftAxis.x2 = padding;\n leftAxis.y2 = size - padding + axisOvershoot;\n leftAxis.stroke = axisStroke;\n var bottomAxis = new Line();\n bottomAxis.x1 = padding - axisOvershoot + 1;\n bottomAxis.y1 = size - padding;\n bottomAxis.x2 = size - padding + 1;\n bottomAxis.y2 = size - padding;\n bottomAxis.stroke = axisStroke;\n var penIcon = new Path();\n _this.buildPenIconPath(penIcon);\n penIcon.fill = 'whitesmoke';\n penIcon.stroke = 'darkslategrey';\n penIcon.strokeWidth = 1;\n root.append([bottomAxis, leftAxis, penIcon]);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniCustomCombo.prototype.updateColors = function (fills, strokes) {\n this.columns.forEach(function (bar, i) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n this.lines.forEach(function (line, i) {\n line.stroke = fills[i + 2];\n });\n };\n MiniCustomCombo.prototype.buildPenIconPath = function (penIcon) {\n var path = penIcon.path;\n path.moveTo(25.76, 43.46);\n path.lineTo(31.27, 48.53);\n path.moveTo(49.86, 22);\n path.lineTo(49.86, 22);\n path.cubicCurveTo(49.01994659053345, 21.317514933510974, 47.89593834348529, 21.09645997825817, 46.86, 21.41);\n path.lineTo(46.86, 21.41);\n path.cubicCurveTo(45.55460035985361, 21.77260167850787, 44.38777081121966, 22.517979360321792, 43.51, 23.55);\n path.lineTo(25.51, 43.8);\n path.lineTo(25.43, 43.89);\n path.lineTo(23.01, 51.89);\n path.lineTo(22.83, 52.46);\n path.lineTo(31.02, 48.86);\n path.lineTo(49.02, 28.52);\n path.lineTo(49.02, 28.52);\n path.cubicCurveTo(49.940716461596224, 27.521914221246085, 50.54302631059587, 26.2720342455763, 50.75, 24.93);\n path.lineTo(50.75, 24.93);\n path.cubicCurveTo(50.95363374988308, 23.866379846512814, 50.62080640232334, 22.77066734274871, 49.86, 22.0);\n path.closePath();\n path.moveTo(41.76, 25.5);\n path.lineTo(47.34, 30.5);\n path.moveTo(40.74, 26.65);\n path.lineTo(46.25, 31.71);\n };\n MiniCustomCombo.chartType = 'customCombo';\n return MiniCustomCombo;\n}(MiniChart));\n\nvar __extends$13 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$j = (undefined && undefined.__assign) || function () {\n __assign$j = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$j.apply(this, arguments);\n};\nvar __decorate$S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar miniChartMapping = {\n columnGroup: {\n column: MiniColumn,\n stackedColumn: MiniStackedColumn,\n normalizedColumn: MiniNormalizedColumn\n },\n barGroup: {\n bar: MiniBar,\n stackedBar: MiniStackedBar,\n normalizedBar: MiniNormalizedBar\n },\n pieGroup: {\n pie: MiniPie,\n doughnut: MiniDoughnut\n },\n lineGroup: {\n line: MiniLine\n },\n scatterGroup: {\n scatter: MiniScatter,\n bubble: MiniBubble\n },\n areaGroup: {\n area: MiniArea,\n stackedArea: MiniStackedArea,\n normalizedArea: MiniNormalizedArea\n },\n histogramGroup: {\n histogram: MiniHistogram\n },\n combinationGroup: {\n columnLineCombo: MiniColumnLineCombo,\n areaColumnCombo: MiniAreaColumnCombo,\n customCombo: MiniCustomCombo\n }\n};\nvar MiniChartsContainer = /** @class */ (function (_super) {\n __extends$13(MiniChartsContainer, _super);\n function MiniChartsContainer(chartController, fills, strokes, chartGroups) {\n if (chartGroups === void 0) { chartGroups = DEFAULT_CHART_GROUPS; }\n var _this = _super.call(this, MiniChartsContainer.TEMPLATE) || this;\n _this.wrappers = {};\n _this.chartController = chartController;\n _this.fills = fills;\n _this.strokes = strokes;\n _this.chartGroups = __assign$j({}, chartGroups);\n return _this;\n }\n MiniChartsContainer.prototype.init = function () {\n var _this = this;\n // hide MiniCustomCombo if no custom combo exists\n if (!this.chartController.customComboExists() && this.chartGroups.combinationGroup) {\n this.chartGroups.combinationGroup = this.chartGroups.combinationGroup.filter(function (chartType) { return chartType !== 'customCombo'; });\n }\n var eGui = this.getGui();\n Object.keys(this.chartGroups).forEach(function (group) {\n var chartGroupValues = _this.chartGroups[group];\n var groupComponent = _this.createBean(new AgGroupComponent({\n title: _this.chartTranslationService.translate(group),\n suppressEnabledCheckbox: true,\n enabled: true,\n suppressOpenCloseIcons: true,\n cssIdentifier: 'charts-settings',\n direction: 'horizontal'\n }));\n chartGroupValues.forEach(function (chartType) {\n var _a;\n var MiniClass = (_a = miniChartMapping[group]) === null || _a === void 0 ? void 0 : _a[chartType];\n if (!MiniClass) {\n if (miniChartMapping[group]) {\n _.doOnce(function () { return console.warn(\"AG Grid - invalid chartGroupsDef config '\" + group + \".\" + chartType + \"'\"); }, \"invalid_chartGroupsDef\" + chartType + \"_\" + group);\n }\n else {\n _.doOnce(function () { return console.warn(\"AG Grid - invalid chartGroupsDef config '\" + group + \"'\"); }, \"invalid_chartGroupsDef\" + group);\n }\n return;\n }\n var miniWrapper = document.createElement('div');\n miniWrapper.classList.add('ag-chart-mini-thumbnail');\n var miniClassChartType = MiniClass.chartType;\n _this.addManagedListener(miniWrapper, 'click', function () {\n _this.chartController.setChartType(miniClassChartType);\n _this.updateSelectedMiniChart();\n });\n _this.wrappers[miniClassChartType] = miniWrapper;\n _this.createBean(new MiniClass(miniWrapper, _this.fills, _this.strokes));\n groupComponent.addItem(miniWrapper);\n });\n eGui.appendChild(groupComponent.getGui());\n });\n this.updateSelectedMiniChart();\n };\n MiniChartsContainer.prototype.updateSelectedMiniChart = function () {\n var selectedChartType = this.chartController.getChartType();\n for (var miniChartType in this.wrappers) {\n var miniChart = this.wrappers[miniChartType];\n var selected = miniChartType === selectedChartType;\n miniChart.classList.toggle('ag-selected', selected);\n }\n };\n MiniChartsContainer.TEMPLATE = \"<div class=\\\"ag-chart-settings-mini-wrapper\\\"></div>\";\n __decorate$S([\n Autowired('chartTranslationService')\n ], MiniChartsContainer.prototype, \"chartTranslationService\", void 0);\n __decorate$S([\n PostConstruct\n ], MiniChartsContainer.prototype, \"init\", null);\n return MiniChartsContainer;\n}(Component));\n\nvar __extends$12 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartSettingsPanel = /** @class */ (function (_super) {\n __extends$12(ChartSettingsPanel, _super);\n function ChartSettingsPanel(chartController) {\n var _this = _super.call(this, ChartSettingsPanel.TEMPLATE) || this;\n _this.miniChartsContainers = [];\n _this.cardItems = [];\n _this.activePaletteIndex = 0;\n _this.palettes = [];\n _this.themes = [];\n _this.chartController = chartController;\n return _this;\n }\n ChartSettingsPanel.prototype.postConstruct = function () {\n var _this = this;\n this.resetPalettes();\n this.ePrevBtn.insertAdjacentElement('afterbegin', _.createIconNoSpan('previous', this.gridOptionsService));\n this.eNextBtn.insertAdjacentElement('afterbegin', _.createIconNoSpan('next', this.gridOptionsService));\n this.addManagedListener(this.ePrevBtn, 'click', function () { return _this.setActivePalette(_this.getPrev(), 'left'); });\n this.addManagedListener(this.eNextBtn, 'click', function () { return _this.setActivePalette(_this.getNext(), 'right'); });\n // change the selected chart when a combo chart is modified via the data panel, i.e. the custom combo should be selected\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_TYPE_CHANGED, function () { return _this.resetPalettes(true); });\n this.scrollSelectedIntoView();\n };\n ChartSettingsPanel.prototype.scrollSelectedIntoView = function () {\n var _this = this;\n // the panel is not immediately visible due to the slide animation, so we add a\n // setTimeout to wait until the panel animation is over and is able to scroll\n setTimeout(function () {\n var isMiniChartsContainerVisible = function (miniChartsContainers) {\n return !miniChartsContainers.getGui().classList.contains('ag-hidden');\n };\n var currentMiniChartContainer = _this.miniChartsContainers.find(isMiniChartsContainerVisible);\n var currentChart = currentMiniChartContainer.getGui().querySelector('.ag-selected');\n if (currentChart) {\n var parent_1 = currentChart.offsetParent;\n if (parent_1) {\n _this.eMiniChartsContainer.scrollTo(0, parent_1.offsetTop);\n }\n }\n }, 250);\n };\n ChartSettingsPanel.prototype.resetPalettes = function (forceReset) {\n var _this = this;\n var _a, _b;\n var palettes = this.chartController.getPalettes();\n var chartGroups = (_b = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.settingsPanel) === null || _b === void 0 ? void 0 : _b.chartGroupsDef;\n if ((_.shallowCompare(palettes, this.palettes) && !forceReset) || this.isAnimating) {\n return;\n }\n this.palettes = palettes;\n this.themes = this.chartController.getThemes();\n this.activePaletteIndex = this.themes.findIndex(function (name) { return name === _this.chartController.getChartThemeName(); });\n this.cardItems = [];\n _.clearElement(this.eCardSelector);\n this.destroyMiniCharts();\n this.palettes.forEach(function (palette, index) {\n var isActivePalette = _this.activePaletteIndex === index;\n var fills = palette.fills, strokes = palette.strokes;\n var miniChartsContainer = _this.createBean(new MiniChartsContainer(_this.chartController, fills, strokes, chartGroups));\n _this.miniChartsContainers.push(miniChartsContainer);\n _this.eMiniChartsContainer.appendChild(miniChartsContainer.getGui());\n _this.addCardLink(index);\n if (isActivePalette) {\n miniChartsContainer.updateSelectedMiniChart();\n }\n else {\n miniChartsContainer.setDisplayed(false);\n }\n });\n _.setDisplayed(this.eNavBar, this.palettes.length > 1);\n _.radioCssClass(this.cardItems[this.activePaletteIndex], 'ag-selected', 'ag-not-selected');\n };\n ChartSettingsPanel.prototype.addCardLink = function (index) {\n var _this = this;\n var link = document.createElement('div');\n link.classList.add('ag-chart-settings-card-item');\n this.addManagedListener(link, 'click', function () {\n _this.setActivePalette(index, index < _this.activePaletteIndex ? 'left' : 'right');\n });\n this.eCardSelector.appendChild(link);\n this.cardItems.push(link);\n };\n ChartSettingsPanel.prototype.getPrev = function () {\n var prev = this.activePaletteIndex - 1;\n if (prev < 0) {\n prev = this.palettes.length - 1;\n }\n return prev;\n };\n ChartSettingsPanel.prototype.getNext = function () {\n var next = this.activePaletteIndex + 1;\n if (next >= this.palettes.length) {\n next = 0;\n }\n return next;\n };\n ChartSettingsPanel.prototype.setActivePalette = function (index, animationDirection) {\n var _this = this;\n if (this.isAnimating || this.activePaletteIndex === index) {\n return;\n }\n _.radioCssClass(this.cardItems[index], 'ag-selected', 'ag-not-selected');\n var currentPalette = this.miniChartsContainers[this.activePaletteIndex];\n var currentGui = currentPalette.getGui();\n var futurePalette = this.miniChartsContainers[index];\n var nextGui = futurePalette.getGui();\n currentPalette.updateSelectedMiniChart();\n futurePalette.updateSelectedMiniChart();\n var multiplier = animationDirection === 'left' ? -1 : 1;\n var final = nextGui.style.left = (_.getAbsoluteWidth(this.getGui()) * multiplier) + \"px\";\n this.activePaletteIndex = index;\n this.isAnimating = true;\n var animatingClass = 'ag-animating';\n futurePalette.setDisplayed(true);\n currentPalette.addCssClass(animatingClass);\n futurePalette.addCssClass(animatingClass);\n this.chartController.setChartThemeName(this.themes[index]);\n window.setTimeout(function () {\n currentGui.style.left = -parseFloat(final) + \"px\";\n nextGui.style.left = '0px';\n }, 0);\n window.setTimeout(function () {\n _this.isAnimating = false;\n currentPalette.removeCssClass(animatingClass);\n futurePalette.removeCssClass(animatingClass);\n currentPalette.setDisplayed(false);\n }, 300);\n };\n ChartSettingsPanel.prototype.destroyMiniCharts = function () {\n _.clearElement(this.eMiniChartsContainer);\n this.miniChartsContainers = this.destroyBeans(this.miniChartsContainers);\n };\n ChartSettingsPanel.prototype.destroy = function () {\n this.destroyMiniCharts();\n _super.prototype.destroy.call(this);\n };\n ChartSettingsPanel.TEMPLATE = \"<div class=\\\"ag-chart-settings-wrapper\\\">\\n <div ref=\\\"eMiniChartsContainer\\\" class=\\\"ag-chart-settings-mini-charts-container ag-scrollable-container\\\"></div>\\n <div ref=\\\"eNavBar\\\" class=\\\"ag-chart-settings-nav-bar\\\">\\n <div ref=\\\"ePrevBtn\\\" class=\\\"ag-chart-settings-prev\\\">\\n <button type=\\\"button\\\" class=\\\"ag-chart-settings-prev-button\\\"></button>\\n </div>\\n <div ref=\\\"eCardSelector\\\" class=\\\"ag-chart-settings-card-selector\\\"></div>\\n <div ref=\\\"eNextBtn\\\" class=\\\"ag-chart-settings-next\\\">\\n <button type=\\\"button\\\" class=\\\"ag-chart-settings-next-button\\\"></button>\\n </div>\\n </div>\\n </div>\";\n __decorate$R([\n Autowired('resizeObserverService')\n ], ChartSettingsPanel.prototype, \"resizeObserverService\", void 0);\n __decorate$R([\n RefSelector('eMiniChartsContainer')\n ], ChartSettingsPanel.prototype, \"eMiniChartsContainer\", void 0);\n __decorate$R([\n RefSelector('eNavBar')\n ], ChartSettingsPanel.prototype, \"eNavBar\", void 0);\n __decorate$R([\n RefSelector('eCardSelector')\n ], ChartSettingsPanel.prototype, \"eCardSelector\", void 0);\n __decorate$R([\n RefSelector('ePrevBtn')\n ], ChartSettingsPanel.prototype, \"ePrevBtn\", void 0);\n __decorate$R([\n RefSelector('eNextBtn')\n ], ChartSettingsPanel.prototype, \"eNextBtn\", void 0);\n __decorate$R([\n PostConstruct\n ], ChartSettingsPanel.prototype, \"postConstruct\", null);\n return ChartSettingsPanel;\n}(Component));\n\nvar __extends$11 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TabbedChartMenu = /** @class */ (function (_super) {\n __extends$11(TabbedChartMenu, _super);\n function TabbedChartMenu(params) {\n var _this = _super.call(this) || this;\n _this.tabs = [];\n var controller = params.controller, panels = params.panels, chartOptionsService = params.chartOptionsService;\n _this.chartController = controller;\n _this.chartOptionsService = chartOptionsService;\n _this.panels = panels;\n return _this;\n }\n TabbedChartMenu.prototype.init = function () {\n var _this = this;\n this.panels.forEach(function (panel) {\n var panelType = panel.replace('chart', '').toLowerCase();\n var _a = _this.createTab(panel, panelType, _this.getPanelClass(panelType)), comp = _a.comp, tab = _a.tab;\n _this.tabs.push(tab);\n _this.addDestroyFunc(function () { return _this.destroyBean(comp); });\n });\n this.tabbedLayout = new TabbedLayout({\n items: this.tabs,\n cssClass: 'ag-chart-tabbed-menu',\n keepScrollPosition: true\n });\n this.getContext().createBean(this.tabbedLayout);\n };\n TabbedChartMenu.prototype.createTab = function (name, title, TabPanelClass) {\n var eWrapperDiv = document.createElement('div');\n eWrapperDiv.classList.add('ag-chart-tab', \"ag-chart-\" + title);\n var comp = new TabPanelClass(this.chartController, this.chartOptionsService);\n this.getContext().createBean(comp);\n eWrapperDiv.appendChild(comp.getGui());\n var titleEl = document.createElement('div');\n var translatedTitle = this.chartTranslationService.translate(title);\n titleEl.innerText = translatedTitle;\n return {\n comp: comp,\n tab: {\n title: titleEl,\n titleLabel: translatedTitle,\n bodyPromise: AgPromise.resolve(eWrapperDiv),\n getScrollableContainer: function () {\n var scrollableContainer = eWrapperDiv.querySelector('.ag-scrollable-container');\n return (scrollableContainer || eWrapperDiv);\n },\n name: name\n }\n };\n };\n TabbedChartMenu.prototype.showTab = function (tab) {\n var tabItem = this.tabs[tab];\n this.tabbedLayout.showItem(tabItem);\n };\n TabbedChartMenu.prototype.getGui = function () {\n return this.tabbedLayout && this.tabbedLayout.getGui();\n };\n TabbedChartMenu.prototype.destroy = function () {\n if (this.parentComponent && this.parentComponent.isAlive()) {\n this.destroyBean(this.parentComponent);\n }\n _super.prototype.destroy.call(this);\n };\n TabbedChartMenu.prototype.getPanelClass = function (panelType) {\n switch (panelType) {\n case TabbedChartMenu.TAB_DATA:\n return ChartDataPanel;\n case TabbedChartMenu.TAB_FORMAT:\n return FormatPanel;\n default:\n return ChartSettingsPanel;\n }\n };\n TabbedChartMenu.TAB_DATA = 'data';\n TabbedChartMenu.TAB_FORMAT = 'format';\n __decorate$Q([\n Autowired('chartTranslationService')\n ], TabbedChartMenu.prototype, \"chartTranslationService\", void 0);\n __decorate$Q([\n PostConstruct\n ], TabbedChartMenu.prototype, \"init\", null);\n return TabbedChartMenu;\n}(Component));\n\nvar __extends$10 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$f = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$8 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$f(arguments[i]));\n return ar;\n};\nvar ChartMenu = /** @class */ (function (_super) {\n __extends$10(ChartMenu, _super);\n function ChartMenu(eChartContainer, eMenuPanelContainer, chartController, chartOptionsService) {\n var _this = _super.call(this, ChartMenu.TEMPLATE) || this;\n _this.eChartContainer = eChartContainer;\n _this.eMenuPanelContainer = eMenuPanelContainer;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.buttons = {\n chartSettings: ['menu', function () { return _this.showMenu(_this.defaultPanel); }],\n chartData: ['menu', function () { return _this.showMenu(\"chartData\"); }],\n chartFormat: ['menu', function () { return _this.showMenu(\"chartFormat\"); }],\n chartLink: ['linked', function (e) { return _this.toggleDetached(e); }],\n chartUnlink: ['unlinked', function (e) { return _this.toggleDetached(e); }],\n chartDownload: ['save', function () { return _this.saveChart(); }]\n };\n _this.panels = [];\n _this.menuVisible = false;\n return _this;\n }\n ChartMenu.prototype.postConstruct = function () {\n var _this = this;\n this.createButtons();\n this.addManagedListener(this.eventService, Events.EVENT_CHART_CREATED, function (e) {\n var _a;\n if (e.chartId === _this.chartController.getChartId()) {\n var showDefaultToolPanel = Boolean((_a = _this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.defaultToolPanel);\n if (showDefaultToolPanel) {\n _this.showMenu(_this.defaultPanel, false);\n }\n }\n });\n this.refreshMenuClasses();\n if (!this.gridOptionsService.is('suppressChartToolPanelsButton') && this.panels.length > 0) {\n this.getGui().classList.add('ag-chart-tool-panel-button-enable');\n this.addManagedListener(this.eHideButton, 'click', this.toggleMenu.bind(this));\n }\n };\n ChartMenu.prototype.isVisible = function () {\n return this.menuVisible;\n };\n ChartMenu.prototype.getExtraPaddingDirections = function () {\n var _this = this;\n var topItems = ['chartLink', 'chartUnlink', 'chartDownload'];\n var rightItems = ['chartSettings', 'chartData', 'chartFormat'];\n var result = [];\n if (topItems.some(function (v) { return _this.chartToolbarOptions.includes(v); })) {\n result.push('top');\n }\n if (rightItems.some(function (v) { return _this.chartToolbarOptions.includes(v); })) {\n result.push(this.gridOptionsService.is('enableRtl') ? 'left' : 'right');\n }\n return result;\n };\n ChartMenu.prototype.getToolbarOptions = function () {\n var _this = this;\n var _a, _b, _c;\n var useChartToolPanelCustomisation = Boolean(this.gridOptionsService.get('chartToolPanelsDef'));\n if (useChartToolPanelCustomisation) {\n var defaultChartToolbarOptions = [\n this.chartController.isChartLinked() ? 'chartLink' : 'chartUnlink',\n 'chartDownload'\n ];\n var toolbarItemsFunc = this.gridOptionsService.getCallback('getChartToolbarItems');\n var params = {\n defaultItems: defaultChartToolbarOptions\n };\n var chartToolbarOptions = toolbarItemsFunc\n ? toolbarItemsFunc(params).filter(function (option) {\n if (!CHART_TOOLBAR_ALLOW_LIST.includes(option)) {\n var msg = CHART_TOOL_PANEL_ALLOW_LIST.includes(option)\n ? \"AG Grid: '\" + option + \"' is a Chart Tool Panel option and will be ignored since 'chartToolPanelsDef' is used. Please use 'chartToolPanelsDef.panels' grid option instead\"\n : \"AG Grid: '\" + option + \"' is not a valid Chart Toolbar Option\";\n console.warn(msg);\n return false;\n }\n return true;\n })\n : defaultChartToolbarOptions;\n var panelsOverride = (_b = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.panels) === null || _b === void 0 ? void 0 : _b.map(function (panel) {\n var menuOption = CHART_TOOL_PANEL_MENU_OPTIONS[panel];\n if (!menuOption) {\n console.warn(\"AG Grid - invalid panel in chartToolPanelsDef.panels: '\" + panel + \"'\");\n }\n return menuOption;\n }).filter(function (panel) { return Boolean(panel); });\n this.panels = panelsOverride\n ? panelsOverride\n : Object.values(CHART_TOOL_PANEL_MENU_OPTIONS);\n // pivot charts use the column tool panel instead of the data panel\n if (this.chartController.isPivotChart()) {\n this.panels = this.panels.filter(function (panel) { return panel !== 'chartData'; });\n }\n var defaultToolPanel = (_c = this.gridOptionsService.get('chartToolPanelsDef')) === null || _c === void 0 ? void 0 : _c.defaultToolPanel;\n this.defaultPanel = (defaultToolPanel && CHART_TOOL_PANEL_MENU_OPTIONS[defaultToolPanel]) || this.panels[0];\n return this.panels.length > 0\n // Only one panel is required to display menu icon in toolbar\n ? __spread$8([this.panels[0]], chartToolbarOptions) : chartToolbarOptions;\n }\n else { // To be deprecated in future. Toolbar options will be different to chart tool panels.\n var tabOptions = [\n 'chartSettings',\n 'chartData',\n 'chartFormat',\n this.chartController.isChartLinked() ? 'chartLink' : 'chartUnlink',\n 'chartDownload'\n ];\n var toolbarItemsFunc = this.gridOptionsService.getCallback('getChartToolbarItems');\n if (toolbarItemsFunc) {\n var isLegacyToolbar_1 = this.gridOptionsService.is('suppressChartToolPanelsButton');\n var params = {\n defaultItems: isLegacyToolbar_1 ? tabOptions : CHART_TOOLBAR_ALLOW_LIST\n };\n tabOptions = toolbarItemsFunc(params).filter(function (option) {\n if (!_this.buttons[option]) {\n console.warn(\"AG Grid: '\" + option + \"' is not a valid Chart Toolbar Option\");\n return false;\n }\n // If not legacy, remove chart tool panel options here,\n // and add them all in one go below\n else if (!isLegacyToolbar_1 && CHART_TOOL_PANEL_ALLOW_LIST.includes(option)) {\n var msg = \"AG Grid: '\" + option + \"' is a Chart Tool Panel option and will be ignored. Please use 'chartToolPanelsDef.panels' grid option instead\";\n console.warn(msg);\n return false;\n }\n return true;\n });\n if (!isLegacyToolbar_1) {\n // Add all the chart tool panels, as `chartToolPanelsDef.panels`\n // should be used for configuration\n tabOptions = tabOptions.concat(CHART_TOOL_PANEL_ALLOW_LIST);\n }\n }\n // pivot charts use the column tool panel instead of the data panel\n if (this.chartController.isPivotChart()) {\n tabOptions = tabOptions.filter(function (option) { return option !== 'chartData'; });\n }\n var ignoreOptions_1 = ['chartUnlink', 'chartLink', 'chartDownload'];\n this.panels = tabOptions.filter(function (option) { return ignoreOptions_1.indexOf(option) === -1; });\n this.defaultPanel = this.panels[0];\n return tabOptions.filter(function (value) {\n return ignoreOptions_1.indexOf(value) !== -1 ||\n (_this.panels.length && value === _this.panels[0]);\n });\n }\n };\n ChartMenu.prototype.toggleDetached = function (e) {\n var target = e.target;\n var active = target.classList.contains('ag-icon-linked');\n target.classList.toggle('ag-icon-linked', !active);\n target.classList.toggle('ag-icon-unlinked', active);\n var tooltipKey = active ? 'chartUnlinkToolbarTooltip' : 'chartLinkToolbarTooltip';\n var tooltipTitle = this.chartTranslationService.translate(tooltipKey);\n if (tooltipTitle) {\n target.title = tooltipTitle;\n }\n this.chartController.detachChartRange();\n };\n ChartMenu.prototype.createButtons = function () {\n var _this = this;\n this.chartToolbarOptions = this.getToolbarOptions();\n var menuEl = this.eMenu;\n this.chartToolbarOptions.forEach(function (button) {\n var buttonConfig = _this.buttons[button];\n var _a = __read$f(buttonConfig, 2), iconName = _a[0], callback = _a[1];\n var buttonEl = _.createIconNoSpan(iconName, _this.gridOptionsService, undefined, true);\n buttonEl.classList.add('ag-chart-menu-icon');\n var tooltipTitle = _this.chartTranslationService.translate(button + 'ToolbarTooltip');\n if (tooltipTitle && buttonEl instanceof HTMLElement) {\n buttonEl.title = tooltipTitle;\n }\n _this.addManagedListener(buttonEl, 'click', callback);\n menuEl.appendChild(buttonEl);\n });\n };\n ChartMenu.prototype.saveChart = function () {\n var event = { type: ChartMenu.EVENT_DOWNLOAD_CHART };\n this.dispatchEvent(event);\n };\n ChartMenu.prototype.createMenuPanel = function (defaultTab) {\n var _this = this;\n var width = this.environment.chartMenuPanelWidth();\n var menuPanel = this.menuPanel = this.createBean(new AgPanel({\n minWidth: width,\n width: width,\n height: '100%',\n closable: true,\n hideTitleBar: true,\n cssIdentifier: 'chart-menu'\n }));\n menuPanel.setParentComponent(this);\n this.eMenuPanelContainer.appendChild(menuPanel.getGui());\n this.tabbedMenu = this.createBean(new TabbedChartMenu({\n controller: this.chartController,\n type: this.chartController.getChartType(),\n panels: this.panels,\n chartOptionsService: this.chartOptionsService\n }));\n this.addManagedListener(menuPanel, Component.EVENT_DESTROYED, function () { return _this.destroyBean(_this.tabbedMenu); });\n return new AgPromise(function (res) {\n window.setTimeout(function () {\n menuPanel.setBodyComponent(_this.tabbedMenu);\n _this.tabbedMenu.showTab(defaultTab);\n res(menuPanel);\n _this.addManagedListener(_this.eChartContainer, 'click', function (event) {\n if (_this.getGui().contains(event.target)) {\n return;\n }\n if (_this.menuVisible) {\n _this.hideMenu();\n }\n });\n }, 100);\n });\n };\n ChartMenu.prototype.showContainer = function () {\n if (!this.menuPanel) {\n return;\n }\n this.menuVisible = true;\n this.showParent(this.menuPanel.getWidth());\n this.refreshMenuClasses();\n };\n ChartMenu.prototype.toggleMenu = function () {\n this.menuVisible ? this.hideMenu() : this.showMenu();\n };\n ChartMenu.prototype.showMenu = function (\n /**\n * Menu panel to show. If empty, shows the existing menu, or creates the default menu if menu panel has not been created\n */\n panel, \n /**\n * Whether to animate the menu opening\n */\n animate) {\n var _this = this;\n if (animate === void 0) { animate = true; }\n if (!animate) {\n this.eMenuPanelContainer.classList.add('ag-no-transition');\n }\n if (this.menuPanel && !panel) {\n this.showContainer();\n }\n else {\n var menuPanel = panel || this.defaultPanel;\n var tab = this.panels.indexOf(menuPanel);\n if (tab < 0) {\n console.warn(\"AG Grid: '\" + panel + \"' is not a valid Chart Tool Panel name\");\n tab = this.panels.indexOf(this.defaultPanel);\n }\n if (this.menuPanel) {\n this.tabbedMenu.showTab(tab);\n this.showContainer();\n }\n else {\n this.createMenuPanel(tab).then(this.showContainer.bind(this));\n }\n }\n if (!animate) {\n // Wait for menu to render\n setTimeout(function () {\n if (!_this.isAlive()) {\n return;\n }\n _this.eMenuPanelContainer.classList.remove('ag-no-transition');\n }, 500);\n }\n };\n ChartMenu.prototype.hideMenu = function () {\n var _this = this;\n this.hideParent();\n window.setTimeout(function () {\n _this.menuVisible = false;\n _this.refreshMenuClasses();\n }, 500);\n };\n ChartMenu.prototype.refreshMenuClasses = function () {\n this.eChartContainer.classList.toggle('ag-chart-menu-visible', this.menuVisible);\n this.eChartContainer.classList.toggle('ag-chart-menu-hidden', !this.menuVisible);\n if (!this.gridOptionsService.is('suppressChartToolPanelsButton')) {\n this.eHideButtonIcon.classList.toggle('ag-icon-contracted', this.menuVisible);\n this.eHideButtonIcon.classList.toggle('ag-icon-expanded', !this.menuVisible);\n }\n };\n ChartMenu.prototype.showParent = function (width) {\n this.eMenuPanelContainer.style.minWidth = width + \"px\";\n };\n ChartMenu.prototype.hideParent = function () {\n this.eMenuPanelContainer.style.minWidth = '0';\n };\n ChartMenu.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.menuPanel && this.menuPanel.isAlive()) {\n this.destroyBean(this.menuPanel);\n }\n if (this.tabbedMenu && this.tabbedMenu.isAlive()) {\n this.destroyBean(this.tabbedMenu);\n }\n };\n ChartMenu.EVENT_DOWNLOAD_CHART = \"downloadChart\";\n ChartMenu.TEMPLATE = \"<div>\\n <div class=\\\"ag-chart-menu\\\" ref=\\\"eMenu\\\"></div>\\n <button class=\\\"ag-chart-menu-close\\\" ref=\\\"eHideButton\\\">\\n <span class=\\\"ag-icon ag-icon-contracted\\\" ref=\\\"eHideButtonIcon\\\"></span>\\n </button>\\n </div>\";\n __decorate$P([\n Autowired('chartTranslationService')\n ], ChartMenu.prototype, \"chartTranslationService\", void 0);\n __decorate$P([\n RefSelector(\"eMenu\")\n ], ChartMenu.prototype, \"eMenu\", void 0);\n __decorate$P([\n RefSelector(\"eHideButton\")\n ], ChartMenu.prototype, \"eHideButton\", void 0);\n __decorate$P([\n RefSelector(\"eHideButtonIcon\")\n ], ChartMenu.prototype, \"eHideButtonIcon\", void 0);\n __decorate$P([\n PostConstruct\n ], ChartMenu.prototype, \"postConstruct\", null);\n return ChartMenu;\n}(Component));\n\nvar __extends$$ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$i = (undefined && undefined.__assign) || function () {\n __assign$i = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$i.apply(this, arguments);\n};\nvar __decorate$O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$6 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar TitleEdit = /** @class */ (function (_super) {\n __extends$$(TitleEdit, _super);\n function TitleEdit(chartMenu) {\n var _this = _super.call(this, TitleEdit.TEMPLATE) || this;\n _this.chartMenu = chartMenu;\n _this.destroyableChartListeners = [];\n _this.editing = false;\n return _this;\n }\n TitleEdit.prototype.init = function () {\n var _this = this;\n this.addManagedListener(this.getGui(), 'keypress', function (e) {\n if (_this.editing && e.key === 'Enter' && !e.shiftKey) {\n _this.handleEndEditing();\n e.preventDefault();\n }\n });\n this.addManagedListener(this.getGui(), 'input', function () {\n if (_this.editing) {\n _this.updateHeight();\n }\n });\n this.addManagedListener(this.getGui(), 'blur', function () { return _this.endEditing(); });\n };\n /* should be called when the containing component changes to a new chart proxy */\n TitleEdit.prototype.refreshTitle = function (chartController, chartOptionsService) {\n var e_1, _a;\n var _this = this;\n this.chartController = chartController;\n this.chartOptionsService = chartOptionsService;\n try {\n for (var _b = __values$6(this.destroyableChartListeners), _c = _b.next(); !_c.done; _c = _b.next()) {\n var destroyFn = _c.value;\n destroyFn();\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.destroyableChartListeners = [];\n var chartProxy = this.chartController.getChartProxy();\n var chart = chartProxy.getChart();\n var canvas = chart.scene.canvas.element;\n var destroyDbleClickListener = this.addManagedListener(canvas, 'dblclick', function (event) {\n var title = chart.title;\n if (title && title.node.containsPoint(event.offsetX, event.offsetY)) {\n var bbox = title.node.computeBBox();\n var xy = title.node.inverseTransformPoint(bbox.x, bbox.y);\n _this.startEditing(__assign$i(__assign$i({}, bbox), xy), canvas.width);\n }\n });\n var wasInTitle = false;\n var destroyMouseMoveListener = this.addManagedListener(canvas, 'mousemove', function (event) {\n var title = chart.title;\n var inTitle = !!(title && title.enabled && title.node.containsPoint(event.offsetX, event.offsetY));\n if (wasInTitle !== inTitle) {\n canvas.style.cursor = inTitle ? 'pointer' : '';\n }\n wasInTitle = inTitle;\n });\n this.destroyableChartListeners = [\n destroyDbleClickListener,\n destroyMouseMoveListener\n ];\n };\n TitleEdit.prototype.startEditing = function (titleBBox, canvasWidth) {\n if (this.chartMenu && this.chartMenu.isVisible()) {\n // currently, we ignore requests to edit the chart title while the chart menu is showing\n // because the click to edit the chart will also close the chart menu, making the position\n // of the title change.\n return;\n }\n if (this.editing) {\n return;\n }\n this.editing = true;\n var minimumTargetInputWidth = 300;\n var inputWidth = Math.max(Math.min(titleBBox.width + 20, canvasWidth), minimumTargetInputWidth);\n var element = this.getGui();\n element.classList.add('currently-editing');\n var inputStyle = element.style;\n // match style of input to title that we're editing\n inputStyle.fontFamily = this.chartOptionsService.getChartOption('title.fontFamily');\n inputStyle.fontWeight = this.chartOptionsService.getChartOption('title.fontWeight');\n inputStyle.fontStyle = this.chartOptionsService.getChartOption('title.fontStyle');\n inputStyle.fontSize = this.chartOptionsService.getChartOption('title.fontSize') + 'px';\n inputStyle.color = this.chartOptionsService.getChartOption('title.color');\n // populate the input with the title, unless the title is the placeholder:\n var oldTitle = this.chartOptionsService.getChartOption('title.text');\n var isTitlePlaceholder = oldTitle === this.chartTranslationService.translate('titlePlaceholder');\n element.value = isTitlePlaceholder ? '' : oldTitle;\n var oldTitleLines = oldTitle.split(/\\r?\\n/g).length;\n inputStyle.left = Math.round(titleBBox.x + titleBBox.width / 2 - inputWidth / 2 - 1) + 'px';\n inputStyle.top = Math.round(titleBBox.y + titleBBox.height / 2 - (oldTitleLines * this.getLineHeight()) / 2 - 2) + 'px';\n inputStyle.width = Math.round(inputWidth) + 'px';\n inputStyle.lineHeight = this.getLineHeight() + 'px';\n this.updateHeight();\n element.focus();\n };\n TitleEdit.prototype.updateHeight = function () {\n var element = this.getGui();\n // The element should cover the title and provide enough space for the new one.\n var oldTitleLines = this.chartOptionsService.getChartOption('title.text').split(/\\r?\\n/g).length;\n var currentTitleLines = element.value.split(/\\r?\\n/g).length;\n element.style.height = (Math.round(Math.max(oldTitleLines, currentTitleLines) * this.getLineHeight()) + 4) + 'px';\n };\n TitleEdit.prototype.getLineHeight = function () {\n var fixedLineHeight = this.chartOptionsService.getChartOption('title.lineHeight');\n if (fixedLineHeight) {\n return parseInt(fixedLineHeight);\n }\n return Math.round(parseInt(this.chartOptionsService.getChartOption('title.fontSize')) * 1.2);\n };\n TitleEdit.prototype.handleEndEditing = function () {\n // special handling to avoid flicker caused by delay when swapping old and new titles\n var _this = this;\n // 1 - store current title color\n var titleColor = this.chartOptionsService.getChartOption('title.color');\n // 2 - hide title by making it transparent\n var transparentColor = 'rgba(0, 0, 0, 0)';\n this.chartOptionsService.setChartOption('title.color', transparentColor);\n // 3 - trigger 'end editing' - this will update the chart with the new title\n this.chartOptionsService.awaitChartOptionUpdate(function () { return _this.endEditing(); });\n // 4 - restore title color to its original value\n this.chartOptionsService.awaitChartOptionUpdate(function () {\n _this.chartOptionsService.setChartOption('title.color', titleColor);\n });\n };\n TitleEdit.prototype.endEditing = function () {\n var _this = this;\n if (!this.editing) {\n return;\n }\n this.editing = false;\n var value = this.getGui().value;\n if (value && value.trim() !== '') {\n this.chartOptionsService.setChartOption('title.text', value);\n this.chartOptionsService.setChartOption('title.enabled', true);\n }\n else {\n this.chartOptionsService.setChartOption('title.text', '');\n this.chartOptionsService.setChartOption('title.enabled', false);\n }\n this.getGui().classList.remove('currently-editing');\n // await chart updates so `chartTitleEdit` event consumers can read the new state correctly\n this.chartOptionsService.awaitChartOptionUpdate(function () {\n _this.eventService.dispatchEvent({ type: 'chartTitleEdit' });\n });\n };\n TitleEdit.TEMPLATE = \"<textarea\\n class=\\\"ag-chart-title-edit\\\"\\n style=\\\"padding:0; border:none; border-radius: 0; min-height: 0; text-align: center; resize: none;\\\" />\\n \";\n __decorate$O([\n Autowired('chartTranslationService')\n ], TitleEdit.prototype, \"chartTranslationService\", void 0);\n __decorate$O([\n PostConstruct\n ], TitleEdit.prototype, \"init\", null);\n return TitleEdit;\n}(Component));\n\nfunction deproxy(chartOrProxy) {\n if (chartOrProxy.chart != null) {\n return chartOrProxy.chart;\n }\n return chartOrProxy;\n}\n\nvar __assign$h = (undefined && undefined.__assign) || function () {\n __assign$h = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$h.apply(this, arguments);\n};\nvar ChartProxy = /** @class */ (function () {\n function ChartProxy(chartProxyParams) {\n this.chartProxyParams = chartProxyParams;\n this.clearThemeOverrides = false;\n this.chart = chartProxyParams.chartInstance;\n this.chartType = chartProxyParams.chartType;\n this.crossFiltering = chartProxyParams.crossFiltering;\n this.crossFilterCallback = chartProxyParams.crossFilterCallback;\n this.standaloneChartType = getSeriesType(this.chartType);\n if (this.chart == null) {\n this.chart = AgChart.create(this.getCommonChartOptions());\n }\n else {\n // On chart change, reset formatting panel changes.\n this.clearThemeOverrides = true;\n }\n }\n ChartProxy.prototype.getChart = function () {\n return deproxy(this.chart);\n };\n ChartProxy.prototype.getChartRef = function () {\n return this.chart;\n };\n ChartProxy.prototype.downloadChart = function (dimensions, fileName, fileFormat) {\n var chart = this.chart;\n var rawChart = deproxy(chart);\n var imageFileName = fileName || (rawChart.title ? rawChart.title.text : 'chart');\n var _a = dimensions || {}, width = _a.width, height = _a.height;\n AgChart.download(chart, { width: width, height: height, fileName: imageFileName, fileFormat: fileFormat });\n };\n ChartProxy.prototype.getChartImageDataURL = function (type) {\n return this.getChart().scene.getDataURL(type);\n };\n ChartProxy.prototype.getChartOptions = function () {\n return this.chart.getOptions();\n };\n ChartProxy.prototype.getChartThemeOverrides = function () {\n var _a;\n var chartOptionsTheme = this.getChartOptions().theme;\n return (_a = chartOptionsTheme.overrides) !== null && _a !== void 0 ? _a : {};\n };\n ChartProxy.prototype.getChartPalette = function () {\n return getChartTheme(this.getChartOptions().theme).palette;\n };\n ChartProxy.prototype.setPaired = function (paired) {\n var _a;\n // Special handling to make scatter charts operate in paired mode by default, where \n // columns alternate between being X and Y (and size for bubble). In standard mode,\n // the first column is used for X and every other column is treated as Y\n // (or alternates between Y and size for bubble)\n var seriesType = getSeriesType(this.chartProxyParams.chartType);\n AgChart.updateDelta(this.chart, { theme: { overrides: (_a = {}, _a[seriesType] = { paired: paired }, _a) } });\n };\n ChartProxy.prototype.isPaired = function () {\n var seriesType = getSeriesType(this.chartProxyParams.chartType);\n return _.get(this.getChartThemeOverrides(), seriesType + \".paired\", true);\n };\n ChartProxy.prototype.lookupCustomChartTheme = function (themeName) {\n return lookupCustomChartTheme(this.chartProxyParams, themeName);\n };\n ChartProxy.prototype.transformData = function (data, categoryKey, categoryAxis) {\n if (categoryAxis) {\n // replace the values for the selected category with a complex object to allow for duplicated categories\n return data.map(function (d, index) {\n var value = d[categoryKey];\n var valueString = value && value.toString ? value.toString() : '';\n var datum = __assign$h({}, d);\n datum[categoryKey] = { id: index, value: value, toString: function () { return valueString; } };\n return datum;\n });\n }\n return data;\n };\n ChartProxy.prototype.getCommonChartOptions = function () {\n var _a, _b;\n // Only apply active overrides if chart is initialised.\n var existingOptions = this.clearThemeOverrides ? {} : (_b = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.getOptions()) !== null && _b !== void 0 ? _b : {};\n var formattingPanelOverrides = this.chart != null ?\n { overrides: this.getActiveFormattingPanelOverrides() } : {};\n this.clearThemeOverrides = false;\n return __assign$h(__assign$h({}, existingOptions), { theme: __assign$h(__assign$h({}, createAgChartTheme(this.chartProxyParams, this)), formattingPanelOverrides), container: this.chartProxyParams.parentElement, mode: 'integrated' });\n };\n ChartProxy.prototype.getActiveFormattingPanelOverrides = function () {\n var _a, _b;\n if (this.clearThemeOverrides) {\n return {};\n }\n var inUseTheme = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.getOptions().theme;\n var overrides = (_b = inUseTheme === null || inUseTheme === void 0 ? void 0 : inUseTheme.overrides) !== null && _b !== void 0 ? _b : {};\n return overrides;\n };\n ChartProxy.prototype.destroy = function (_a) {\n var _b = (_a === void 0 ? {} : _a).keepChartInstance, keepChartInstance = _b === void 0 ? false : _b;\n if (keepChartInstance) {\n return this.chart;\n }\n this.destroyChart();\n };\n ChartProxy.prototype.destroyChart = function () {\n if (this.chart) {\n this.chart.destroy();\n this.chart = undefined;\n }\n };\n return ChartProxy;\n}());\n\nvar __extends$_ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$g = (undefined && undefined.__assign) || function () {\n __assign$g = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$g.apply(this, arguments);\n};\nvar CartesianChartProxy = /** @class */ (function (_super) {\n __extends$_(CartesianChartProxy, _super);\n function CartesianChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.crossFilteringAllPoints = new Set();\n _this.crossFilteringSelectedPoints = [];\n return _this;\n }\n CartesianChartProxy.prototype.update = function (params) {\n var axes = this.getAxes(params);\n var options = __assign$g(__assign$g({}, this.getCommonChartOptions()), { data: this.getData(params, axes), axes: axes, series: this.getSeries(params) });\n AgChart.update(this.getChartRef(), options);\n };\n CartesianChartProxy.prototype.getData = function (params, axes) {\n var _a;\n var supportsCrossFiltering = ['area', 'line'].includes(this.standaloneChartType);\n var xPosition = this.standaloneChartType === 'bar' ? 'left' : 'bottom';\n var xAxisIsCategory = ((_a = axes.find(function (o) { return o.position === xPosition; })) === null || _a === void 0 ? void 0 : _a.type) === 'category';\n return this.crossFiltering && supportsCrossFiltering ?\n this.getCrossFilterData(params) :\n this.getDataTransformedData(params, xAxisIsCategory);\n };\n CartesianChartProxy.prototype.getDataTransformedData = function (params, isCategoryAxis) {\n return this.transformData(params.data, params.category.id, isCategoryAxis);\n };\n CartesianChartProxy.prototype.getXAxisType = function (params) {\n if (params.grouping) {\n return 'groupedCategory';\n }\n else if (CartesianChartProxy.isTimeAxis(params)) {\n return 'time';\n }\n return 'category';\n };\n CartesianChartProxy.isTimeAxis = function (params) {\n if (params.category && params.category.chartDataType) {\n return params.category.chartDataType === 'time';\n }\n var testDatum = params.data[0];\n return (testDatum && testDatum[params.category.id]) instanceof Date;\n };\n CartesianChartProxy.prototype.crossFilteringReset = function () {\n this.crossFilteringSelectedPoints = [];\n this.crossFilteringAllPoints.clear();\n };\n CartesianChartProxy.prototype.crossFilteringPointSelected = function (point) {\n return this.crossFilteringSelectedPoints.length == 0 || this.crossFilteringSelectedPoints.includes(point);\n };\n CartesianChartProxy.prototype.crossFilteringDeselectedPoints = function () {\n return this.crossFilteringSelectedPoints.length > 0 &&\n this.crossFilteringAllPoints.size !== this.crossFilteringSelectedPoints.length;\n };\n CartesianChartProxy.prototype.extractLineAreaCrossFilterSeries = function (series, params) {\n var _this = this;\n var getYKey = function (yKey) {\n if (_this.standaloneChartType === 'area') {\n var lastSelectedChartId = params.getCrossFilteringContext().lastSelectedChartId;\n return (lastSelectedChartId === params.chartId) ? yKey + '-total' : yKey;\n }\n return yKey + '-total';\n };\n return series.map(function (s) {\n s.yKey = getYKey(s.yKey);\n s.listeners = {\n nodeClick: function (e) {\n var value = e.datum[s.xKey];\n var multiSelection = e.event.metaKey || e.event.ctrlKey;\n _this.crossFilteringAddSelectedPoint(multiSelection, value);\n _this.crossFilterCallback(e);\n }\n };\n s.marker = {\n formatter: function (p) {\n var category = p.datum[params.category.id];\n return {\n fill: p.highlighted ? 'yellow' : p.fill,\n size: p.highlighted ? 14 : _this.crossFilteringPointSelected(category) ? 8 : 0,\n };\n }\n };\n if (_this.standaloneChartType === 'area') {\n s.fillOpacity = _this.crossFilteringDeselectedPoints() ? 0.3 : 1;\n }\n if (_this.standaloneChartType === 'line') {\n s.strokeOpacity = _this.crossFilteringDeselectedPoints() ? 0.3 : 1;\n }\n return s;\n });\n };\n CartesianChartProxy.prototype.getCrossFilterData = function (params) {\n var _this = this;\n this.crossFilteringAllPoints.clear();\n var colId = params.fields[0].colId;\n var filteredOutColId = colId + \"-filtered-out\";\n var lastSelectedChartId = params.getCrossFilteringContext().lastSelectedChartId;\n return params.data.map(function (d) {\n var category = d[params.category.id];\n _this.crossFilteringAllPoints.add(category);\n var pointSelected = _this.crossFilteringPointSelected(category);\n if (_this.standaloneChartType === 'area' && lastSelectedChartId === params.chartId) {\n d[colId + \"-total\"] = pointSelected ? d[colId] : d[colId] + d[filteredOutColId];\n }\n if (_this.standaloneChartType === 'line') {\n d[colId + \"-total\"] = pointSelected ? d[colId] : d[colId] + d[filteredOutColId];\n }\n return d;\n });\n };\n CartesianChartProxy.prototype.crossFilteringAddSelectedPoint = function (multiSelection, value) {\n multiSelection ? this.crossFilteringSelectedPoints.push(value) : this.crossFilteringSelectedPoints = [value];\n };\n return CartesianChartProxy;\n}(ChartProxy));\n\n// deepMerge\nfunction emptyTarget(value) {\n return Array.isArray(value) ? [] : {};\n}\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n return (options.clone !== false && options.isMergeableObject(value))\n ? deepMerge(emptyTarget(value), value, options)\n : value;\n}\nfunction defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function (element) {\n return cloneUnlessOtherwiseSpecified(element, options);\n });\n}\nfunction getMergeFunction(key, options) {\n if (!options.customMerge) {\n return deepMerge;\n }\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : deepMerge;\n}\nfunction getEnumerableOwnPropertySymbols(target) {\n // @ts-ignore\n return Object.getOwnPropertySymbols\n // @ts-ignore\n ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return target.propertyIsEnumerable(symbol);\n })\n : [];\n}\nfunction getKeys(target) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\nfunction propertyIsOnObject(object, property) {\n try {\n return property in object;\n }\n catch (_) {\n return false;\n }\n}\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\nfunction mergeObject(target, source, options) {\n if (target === void 0) { target = {}; }\n if (source === void 0) { source = {}; }\n var destination = {};\n if (options.isMergeableObject(target)) {\n getKeys(target).forEach(function (key) {\n destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n });\n }\n getKeys(source).forEach(function (key) {\n if (propertyIsUnsafe(target, key)) {\n return;\n }\n if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n }\n else {\n destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n }\n });\n return destination;\n}\nfunction defaultIsMergeableObject(value) {\n return isNonNullObject(value) && !isSpecial(value);\n}\nfunction isNonNullObject(value) {\n return !!value && typeof value === 'object';\n}\nfunction isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]';\n}\nfunction deepMerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || defaultIsMergeableObject;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified(source, options);\n }\n else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n }\n else {\n return mergeObject(target, source, options);\n }\n}\n\nfunction hexToRGBA(hex, alpha) {\n var r = parseInt(hex.slice(1, 3), 16);\n var g = parseInt(hex.slice(3, 5), 16);\n var b = parseInt(hex.slice(5, 7), 16);\n return alpha ? \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + alpha + \")\" : \"rgba(\" + r + \", \" + g + \", \" + b + \")\";\n}\nfunction changeOpacity(fills, alpha) {\n return fills.map(function (fill) {\n var c = Color.fromString(fill);\n return new Color(c.r, c.g, c.b, alpha).toHexString();\n });\n}\n\nvar __extends$Z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$f = (undefined && undefined.__assign) || function () {\n __assign$f = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$f.apply(this, arguments);\n};\nvar BarChartProxy = /** @class */ (function (_super) {\n __extends$Z(BarChartProxy, _super);\n function BarChartProxy(params) {\n return _super.call(this, params) || this;\n }\n BarChartProxy.prototype.getAxes = function (params) {\n var isBar = this.standaloneChartType === 'bar';\n var axes = [\n {\n type: this.getXAxisType(params),\n position: isBar ? 'left' : 'bottom',\n },\n {\n type: 'number',\n position: isBar ? 'bottom' : 'left',\n },\n ];\n // Add a default label formatter to show '%' for normalized charts if none is provided\n if (this.isNormalised()) {\n var numberAxis = axes[1];\n numberAxis.label = __assign$f(__assign$f({}, numberAxis.label), { formatter: function (params) { return Math.round(params.value) + '%'; } });\n }\n return axes;\n };\n BarChartProxy.prototype.getSeries = function (params) {\n var _this = this;\n var groupedCharts = ['groupedColumn', 'groupedBar'];\n var isGrouped = !this.crossFiltering && _.includes(groupedCharts, this.chartType);\n var series = params.fields.map(function (f) { return ({\n type: _this.standaloneChartType,\n grouped: isGrouped,\n normalizedTo: _this.isNormalised() ? 100 : undefined,\n xKey: params.category.id,\n xName: params.category.name,\n yKey: f.colId,\n yName: f.displayName\n }); });\n return this.crossFiltering ? this.extractCrossFilterSeries(series) : series;\n };\n BarChartProxy.prototype.extractCrossFilterSeries = function (series) {\n var _this = this;\n var palette = this.getChartPalette();\n var updatePrimarySeries = function (seriesOptions, index) {\n return __assign$f(__assign$f({}, seriesOptions), { highlightStyle: { item: { fill: undefined } }, fill: palette === null || palette === void 0 ? void 0 : palette.fills[index], stroke: palette === null || palette === void 0 ? void 0 : palette.strokes[index], listeners: {\n nodeClick: _this.crossFilterCallback\n } });\n };\n var updateFilteredOutSeries = function (seriesOptions) {\n var yKey = seriesOptions.yKey + '-filtered-out';\n return __assign$f(__assign$f({}, deepMerge({}, seriesOptions)), { yKey: yKey, fill: hexToRGBA(seriesOptions.fill, '0.3'), stroke: hexToRGBA(seriesOptions.stroke, '0.3'), hideInLegend: [yKey] });\n };\n var allSeries = [];\n for (var i = 0; i < series.length; i++) {\n // update primary series\n var primarySeries = updatePrimarySeries(series[i], i);\n allSeries.push(primarySeries);\n // add 'filtered-out' series\n allSeries.push(updateFilteredOutSeries(primarySeries));\n }\n return allSeries;\n };\n BarChartProxy.prototype.isNormalised = function () {\n var normalisedCharts = ['normalizedColumn', 'normalizedBar'];\n return !this.crossFiltering && _.includes(normalisedCharts, this.chartType);\n };\n return BarChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$Y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$e = (undefined && undefined.__assign) || function () {\n __assign$e = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$e.apply(this, arguments);\n};\nvar AreaChartProxy = /** @class */ (function (_super) {\n __extends$Y(AreaChartProxy, _super);\n function AreaChartProxy(params) {\n return _super.call(this, params) || this;\n }\n AreaChartProxy.prototype.getAxes = function (params) {\n var axes = [\n {\n type: this.getXAxisType(params),\n position: 'bottom',\n },\n {\n type: 'number',\n position: 'left',\n },\n ];\n // Add a default label formatter to show '%' for normalized charts if none is provided\n if (this.isNormalised()) {\n var numberAxis = axes[1];\n numberAxis.label = __assign$e(__assign$e({}, numberAxis.label), { formatter: function (params) { return Math.round(params.value) + '%'; } });\n }\n return axes;\n };\n AreaChartProxy.prototype.getSeries = function (params) {\n var _this = this;\n var series = params.fields.map(function (f) { return ({\n type: _this.standaloneChartType,\n xKey: params.category.id,\n xName: params.category.name,\n yKey: f.colId,\n yName: f.displayName,\n normalizedTo: _this.chartType === 'normalizedArea' ? 100 : undefined,\n stacked: ['normalizedArea', 'stackedArea'].includes(_this.chartType)\n }); });\n return this.crossFiltering ? this.extractLineAreaCrossFilterSeries(series, params) : series;\n };\n AreaChartProxy.prototype.isNormalised = function () {\n return !this.crossFiltering && this.chartType === 'normalizedArea';\n };\n return AreaChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$X = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LineChartProxy = /** @class */ (function (_super) {\n __extends$X(LineChartProxy, _super);\n function LineChartProxy(params) {\n return _super.call(this, params) || this;\n }\n LineChartProxy.prototype.getAxes = function (params) {\n return [\n {\n type: this.getXAxisType(params),\n position: 'bottom'\n },\n {\n type: 'number',\n position: 'left'\n },\n ];\n };\n LineChartProxy.prototype.getSeries = function (params) {\n var _this = this;\n var series = params.fields.map(function (f) { return ({\n type: _this.standaloneChartType,\n xKey: params.category.id,\n xName: params.category.name,\n yKey: f.colId,\n yName: f.displayName\n }); });\n return this.crossFiltering ? this.extractLineAreaCrossFilterSeries(series, params) : series;\n };\n return LineChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$W = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$d = (undefined && undefined.__assign) || function () {\n __assign$d = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$d.apply(this, arguments);\n};\nvar PieChartProxy = /** @class */ (function (_super) {\n __extends$W(PieChartProxy, _super);\n function PieChartProxy(params) {\n return _super.call(this, params) || this;\n }\n PieChartProxy.prototype.update = function (params) {\n var data = params.data, category = params.category;\n var options = __assign$d(__assign$d({}, this.getCommonChartOptions()), { data: this.crossFiltering ? this.getCrossFilterData(params) : this.transformData(data, category.id), series: this.getSeries(params) });\n AgChart.update(this.getChartRef(), options);\n };\n PieChartProxy.prototype.getSeries = function (params) {\n var _this = this;\n var numFields = params.fields.length;\n var offset = {\n currentOffset: 0,\n offsetAmount: numFields > 1 ? 20 : 40\n };\n var series = this.getFields(params).map(function (f) {\n var _a;\n // options shared by 'pie' and 'doughnut' charts\n var options = {\n type: _this.standaloneChartType,\n angleKey: f.colId,\n angleName: f.displayName,\n sectorLabelKey: f.colId,\n calloutLabelKey: params.category.id,\n calloutLabelName: params.category.name,\n };\n if (_this.chartType === 'doughnut') {\n var _b = PieChartProxy.calculateOffsets(offset), outerRadiusOffset = _b.outerRadiusOffset, innerRadiusOffset = _b.innerRadiusOffset;\n var title = f.displayName ? {\n title: { text: f.displayName, showInLegend: numFields > 1 },\n } : undefined;\n // augment shared options with 'doughnut' specific options\n return __assign$d(__assign$d(__assign$d(__assign$d({}, options), { outerRadiusOffset: outerRadiusOffset,\n innerRadiusOffset: innerRadiusOffset }), title), { calloutLine: {\n colors: (_a = _this.getChartPalette()) === null || _a === void 0 ? void 0 : _a.strokes,\n } });\n }\n return options;\n });\n return this.crossFiltering ? this.extractCrossFilterSeries(series) : series;\n };\n PieChartProxy.prototype.getCrossFilterData = function (params) {\n var colId = params.fields[0].colId;\n var filteredOutColId = colId + \"-filtered-out\";\n return params.data.map(function (d) {\n var total = d[colId] + d[filteredOutColId];\n d[colId + \"-total\"] = total;\n d[filteredOutColId] = 1; // normalise to 1\n d[colId] = d[colId] / total; // fraction of 1\n return d;\n });\n };\n PieChartProxy.prototype.extractCrossFilterSeries = function (series) {\n var _this = this;\n var palette = this.getChartPalette();\n var primaryOptions = function (seriesOptions) {\n return __assign$d(__assign$d({}, seriesOptions), { calloutLabel: { enabled: false }, highlightStyle: { item: { fill: undefined } }, radiusKey: seriesOptions.angleKey, angleKey: seriesOptions.angleKey + '-total', radiusMin: 0, radiusMax: 1, listeners: {\n nodeClick: _this.crossFilterCallback,\n } });\n };\n var filteredOutOptions = function (seriesOptions, angleKey) {\n var _a, _b;\n return __assign$d(__assign$d({}, deepMerge({}, primaryOpts)), { radiusKey: angleKey + '-filtered-out', fills: changeOpacity((_a = seriesOptions.fills) !== null && _a !== void 0 ? _a : palette.fills, 0.3), strokes: changeOpacity((_b = seriesOptions.strokes) !== null && _b !== void 0 ? _b : palette.strokes, 0.3), showInLegend: false });\n };\n // currently, only single 'doughnut' cross-filter series are supported\n var primarySeries = series[0];\n // update primary series\n var angleKey = primarySeries.angleKey;\n var primaryOpts = primaryOptions(primarySeries);\n return [\n filteredOutOptions(primarySeries, angleKey),\n primaryOpts,\n ];\n };\n PieChartProxy.calculateOffsets = function (offset) {\n var outerRadiusOffset = offset.currentOffset;\n offset.currentOffset -= offset.offsetAmount;\n var innerRadiusOffset = offset.currentOffset;\n offset.currentOffset -= offset.offsetAmount;\n return { outerRadiusOffset: outerRadiusOffset, innerRadiusOffset: innerRadiusOffset };\n };\n PieChartProxy.prototype.getFields = function (params) {\n return this.chartType === 'pie' ? params.fields.slice(0, 1) : params.fields;\n };\n PieChartProxy.prototype.crossFilteringReset = function () {\n // not required in pie charts\n };\n return PieChartProxy;\n}(ChartProxy));\n\nvar __extends$V = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$c = (undefined && undefined.__assign) || function () {\n __assign$c = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$c.apply(this, arguments);\n};\nvar __values$5 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$e = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$7 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$e(arguments[i]));\n return ar;\n};\nvar ScatterChartProxy = /** @class */ (function (_super) {\n __extends$V(ScatterChartProxy, _super);\n function ScatterChartProxy(params) {\n return _super.call(this, params) || this;\n }\n ScatterChartProxy.prototype.getAxes = function (_params) {\n return [\n {\n type: 'number',\n position: 'bottom',\n },\n {\n type: 'number',\n position: 'left',\n },\n ];\n };\n ScatterChartProxy.prototype.getSeries = function (params) {\n var _this = this;\n var paired = this.isPaired();\n var seriesDefinitions = this.getSeriesDefinitions(params.fields, paired);\n var labelFieldDefinition = params.category.id === ChartDataModel.DEFAULT_CATEGORY ? undefined : params.category;\n var series = seriesDefinitions.map(function (seriesDefinition) { return ({\n type: _this.standaloneChartType,\n xKey: seriesDefinition.xField.colId,\n xName: seriesDefinition.xField.displayName,\n yKey: seriesDefinition.yField.colId,\n yName: seriesDefinition.yField.displayName,\n title: seriesDefinition.yField.displayName + \" vs \" + seriesDefinition.xField.displayName,\n sizeKey: seriesDefinition.sizeField ? seriesDefinition.sizeField.colId : undefined,\n sizeName: seriesDefinition.sizeField ? seriesDefinition.sizeField.displayName : undefined,\n labelKey: labelFieldDefinition ? labelFieldDefinition.id : seriesDefinition.yField.colId,\n labelName: labelFieldDefinition ? labelFieldDefinition.name : undefined,\n }); });\n return this.crossFiltering ? this.extractCrossFilterSeries(series, params) : series;\n };\n ScatterChartProxy.prototype.extractCrossFilterSeries = function (series, params) {\n var _this = this;\n var data = params.data;\n var palette = this.getChartPalette();\n var filteredOutKey = function (key) { return key + \"-filtered-out\"; };\n var calcMarkerDomain = function (data, sizeKey) {\n var e_1, _a;\n var _b;\n var markerDomain = [Infinity, -Infinity];\n if (sizeKey != null) {\n try {\n for (var data_1 = __values$5(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var datum = data_1_1.value;\n var value = (_b = datum[sizeKey]) !== null && _b !== void 0 ? _b : datum[filteredOutKey(sizeKey)];\n if (value < markerDomain[0]) {\n markerDomain[0] = value;\n }\n if (value > markerDomain[1]) {\n markerDomain[1] = value;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n if (markerDomain[0] <= markerDomain[1]) {\n return markerDomain;\n }\n return undefined;\n };\n var updatePrimarySeries = function (series, idx) {\n var sizeKey = series.sizeKey;\n var fill = palette === null || palette === void 0 ? void 0 : palette.fills[idx];\n var stroke = palette === null || palette === void 0 ? void 0 : palette.strokes[idx];\n var markerDomain = calcMarkerDomain(data, sizeKey);\n var marker = __assign$c(__assign$c({}, series.marker), { fill: fill,\n stroke: stroke, domain: markerDomain });\n return __assign$c(__assign$c({}, series), { marker: marker, highlightStyle: { item: { fill: 'yellow' } }, listeners: __assign$c(__assign$c({}, series.listeners), { nodeClick: _this.crossFilterCallback }) });\n };\n var updateFilteredOutSeries = function (series) {\n var sizeKey = series.sizeKey, yKey = series.yKey, xKey = series.xKey;\n if (sizeKey != null) {\n sizeKey = filteredOutKey(sizeKey);\n }\n return __assign$c(__assign$c({}, series), { yKey: filteredOutKey(yKey), xKey: filteredOutKey(xKey), marker: __assign$c(__assign$c({}, series.marker), { fillOpacity: 0.3, strokeOpacity: 0.3 }), sizeKey: sizeKey, showInLegend: false, listeners: __assign$c(__assign$c({}, series.listeners), { nodeClick: function (e) {\n var _a;\n var value = e.datum[filteredOutKey(xKey)];\n // Need to remove the `-filtered-out` suffixes from the event so that\n // upstream processing maps the event correctly onto grid column ids.\n var filterableEvent = __assign$c(__assign$c({}, e), { xKey: xKey, datum: __assign$c(__assign$c({}, e.datum), (_a = {}, _a[xKey] = value, _a)) });\n _this.crossFilterCallback(filterableEvent);\n } }) });\n };\n var updatedSeries = series.map(updatePrimarySeries);\n return __spread$7(updatedSeries, updatedSeries.map(updateFilteredOutSeries));\n };\n ScatterChartProxy.prototype.getSeriesDefinitions = function (fields, paired) {\n if (fields.length < 2) {\n return [];\n }\n var isBubbleChart = this.chartType === 'bubble';\n if (paired) {\n if (isBubbleChart) {\n return fields.map(function (currentXField, i) { return i % 3 === 0 ? ({\n xField: currentXField,\n yField: fields[i + 1],\n sizeField: fields[i + 2],\n }) : null; }).filter(function (x) { return x && x.yField && x.sizeField; });\n }\n return fields.map(function (currentXField, i) { return i % 2 === 0 ? ({\n xField: currentXField,\n yField: fields[i + 1],\n }) : null; }).filter(function (x) { return x && x.yField; });\n }\n var xField = fields[0];\n if (isBubbleChart) {\n return fields\n .map(function (yField, i) { return i % 2 === 1 ? ({\n xField: xField,\n yField: yField,\n sizeField: fields[i + 1],\n }) : null; })\n .filter(function (x) { return x && x.sizeField; });\n }\n return fields.filter(function (value, i) { return i > 0; }).map(function (yField) { return ({ xField: xField, yField: yField }); });\n };\n return ScatterChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$U = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar HistogramChartProxy = /** @class */ (function (_super) {\n __extends$U(HistogramChartProxy, _super);\n function HistogramChartProxy(params) {\n return _super.call(this, params) || this;\n }\n HistogramChartProxy.prototype.getSeries = function (params) {\n var firstField = params.fields[0]; // multiple series are not supported!\n return [\n {\n type: this.standaloneChartType,\n xKey: firstField.colId,\n xName: firstField.displayName,\n yName: this.chartProxyParams.translate(\"histogramFrequency\"),\n areaPlot: false,\n }\n ];\n };\n HistogramChartProxy.prototype.getAxes = function (_params) {\n return [\n {\n type: 'number',\n position: 'bottom',\n },\n {\n type: 'number',\n position: 'left',\n },\n ];\n };\n return HistogramChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$T = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar ChartOptionsService = /** @class */ (function (_super) {\n __extends$T(ChartOptionsService, _super);\n function ChartOptionsService(chartController) {\n var _this = _super.call(this) || this;\n _this.chartController = chartController;\n return _this;\n }\n ChartOptionsService.prototype.getChartOption = function (expression) {\n // TODO: We shouldn't be reading the chart implementation directly, but right now\n // it isn't possible to either get option defaults OR retrieve themed options.\n return _.get(this.getChart(), expression, undefined);\n };\n ChartOptionsService.prototype.setChartOption = function (expression, value, isSilent) {\n var _this = this;\n var chartSeriesTypes = this.chartController.getChartSeriesTypes();\n if (this.chartController.isComboChart()) {\n chartSeriesTypes.push('cartesian');\n }\n var chartOptions = {};\n // we need to update chart options on each series type for combo charts\n chartSeriesTypes.forEach(function (seriesType) {\n chartOptions = deepMerge(chartOptions, _this.createChartOptions({\n seriesType: seriesType,\n expression: expression,\n value: value\n }));\n });\n this.updateChart(chartOptions);\n if (!isSilent) {\n this.raiseChartOptionsChangedEvent();\n }\n };\n ChartOptionsService.prototype.awaitChartOptionUpdate = function (func) {\n var chart = this.chartController.getChartProxy().getChart();\n chart.waitForUpdate().then(function () { return func(); });\n };\n ChartOptionsService.prototype.getAxisProperty = function (expression) {\n var _a;\n return _.get((_a = this.getChart().axes) === null || _a === void 0 ? void 0 : _a[0], expression, undefined);\n };\n ChartOptionsService.prototype.setAxisProperty = function (expression, value) {\n var _this = this;\n var _a;\n // update axis options\n var chart = this.getChart();\n var chartOptions = {};\n (_a = chart.axes) === null || _a === void 0 ? void 0 : _a.forEach(function (axis) {\n chartOptions = deepMerge(chartOptions, _this.getUpdateAxisOptions(axis, expression, value));\n });\n this.updateChart(chartOptions);\n this.raiseChartOptionsChangedEvent();\n };\n ChartOptionsService.prototype.getLabelRotation = function (axisType) {\n var axis = this.getAxis(axisType);\n return _.get(axis, 'label.rotation', undefined);\n };\n ChartOptionsService.prototype.setLabelRotation = function (axisType, value) {\n var chartAxis = this.getAxis(axisType);\n if (chartAxis) {\n var chartOptions = this.getUpdateAxisOptions(chartAxis, 'label.rotation', value);\n this.updateChart(chartOptions);\n this.raiseChartOptionsChangedEvent();\n }\n };\n ChartOptionsService.prototype.getSeriesOption = function (expression, seriesType) {\n var series = this.getChart().series.find(function (s) { return ChartOptionsService.isMatchingSeries(seriesType, s); });\n return _.get(series, expression, undefined);\n };\n ChartOptionsService.prototype.setSeriesOption = function (expression, value, seriesType) {\n var chartOptions = this.createChartOptions({\n seriesType: seriesType,\n expression: \"series.\" + expression,\n value: value\n });\n this.updateChart(chartOptions);\n this.raiseChartOptionsChangedEvent();\n };\n ChartOptionsService.prototype.getPairedMode = function () {\n return this.chartController.getChartProxy().isPaired();\n };\n ChartOptionsService.prototype.setPairedMode = function (paired) {\n this.chartController.getChartProxy().setPaired(paired);\n };\n ChartOptionsService.prototype.getAxis = function (axisType) {\n var chart = this.getChart();\n if (!chart.axes || chart.axes.length < 1) {\n return undefined;\n }\n if (axisType === 'xAxis') {\n return (chart.axes && chart.axes[0].direction === 'x') ? chart.axes[0] : chart.axes[1];\n }\n return (chart.axes && chart.axes[1].direction === 'y') ? chart.axes[1] : chart.axes[0];\n };\n ChartOptionsService.prototype.getUpdateAxisOptions = function (chartAxis, expression, value) {\n var seriesType = getSeriesType(this.getChartType());\n var validAxisTypes = ['number', 'category', 'time', 'groupedCategory'];\n if (!validAxisTypes.includes(chartAxis.type)) {\n return {};\n }\n return this.createChartOptions({\n seriesType: seriesType,\n expression: \"axes.\" + chartAxis.type + \".\" + expression,\n value: value\n });\n };\n ChartOptionsService.prototype.getChartType = function () {\n return this.chartController.getChartType();\n };\n ChartOptionsService.prototype.getChart = function () {\n return this.chartController.getChartProxy().getChart();\n };\n ChartOptionsService.prototype.updateChart = function (chartOptions) {\n var chartRef = this.chartController.getChartProxy().getChartRef();\n AgChart.updateDelta(chartRef, chartOptions);\n };\n ChartOptionsService.prototype.createChartOptions = function (_a) {\n var seriesType = _a.seriesType, expression = _a.expression, value = _a.value;\n var overrides = {};\n var chartOptions = {\n theme: {\n overrides: overrides\n }\n };\n _.set(overrides, seriesType + \".\" + expression, value);\n return chartOptions;\n };\n ChartOptionsService.prototype.raiseChartOptionsChangedEvent = function () {\n var chartModel = this.chartController.getChartModel();\n var event = {\n type: Events.EVENT_CHART_OPTIONS_CHANGED,\n chartId: chartModel.chartId,\n chartType: chartModel.chartType,\n chartThemeName: this.chartController.getChartThemeName(),\n chartOptions: chartModel.chartOptions\n };\n this.eventService.dispatchEvent(event);\n };\n ChartOptionsService.isMatchingSeries = function (seriesType, series) {\n var mapTypeToImplType = function (type) { return type === 'column' ? 'bar' : type; };\n return VALID_SERIES_TYPES.includes(seriesType) &&\n series.type === mapTypeToImplType(seriesType);\n };\n ChartOptionsService.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return ChartOptionsService;\n}(BeanStub));\n\nvar __extends$S = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar ComboChartProxy = /** @class */ (function (_super) {\n __extends$S(ComboChartProxy, _super);\n function ComboChartProxy(params) {\n return _super.call(this, params) || this;\n }\n ComboChartProxy.prototype.getAxes = function (params) {\n var fields = params ? params.fields : [];\n var fieldsMap = new Map(fields.map(function (f) { return [f.colId, f]; }));\n var _a = this.getYKeys(fields, params.seriesChartTypes), primaryYKeys = _a.primaryYKeys, secondaryYKeys = _a.secondaryYKeys;\n var axes = [\n {\n type: this.getXAxisType(params),\n position: 'bottom',\n gridStyle: [{ stroke: undefined }],\n },\n ];\n if (primaryYKeys.length > 0) {\n axes.push({\n type: 'number',\n keys: primaryYKeys,\n position: 'left',\n title: {\n text: primaryYKeys.map(function (key) {\n var field = fieldsMap.get(key);\n return field ? field.displayName : key;\n }).join(' / '),\n },\n });\n }\n if (secondaryYKeys.length > 0) {\n secondaryYKeys.forEach(function (secondaryYKey, i) {\n var field = fieldsMap.get(secondaryYKey);\n var secondaryAxisIsVisible = field && field.colId === secondaryYKey;\n if (!secondaryAxisIsVisible) {\n return;\n }\n var secondaryAxisOptions = {\n type: 'number',\n keys: [secondaryYKey],\n position: 'right',\n title: {\n text: field ? field.displayName : secondaryYKey,\n },\n };\n var primaryYAxis = primaryYKeys.some(function (primaryYKey) { return !!fieldsMap.get(primaryYKey); });\n var lastSecondaryAxis = i === secondaryYKeys.length - 1;\n if (!primaryYAxis && lastSecondaryAxis) ;\n else {\n secondaryAxisOptions.gridStyle = [{ stroke: undefined }];\n }\n axes.push(secondaryAxisOptions);\n });\n }\n return axes;\n };\n ComboChartProxy.prototype.getSeries = function (params) {\n var fields = params.fields, category = params.category, seriesChartTypes = params.seriesChartTypes;\n return fields.map(function (field) {\n var seriesChartType = seriesChartTypes.find(function (s) { return s.colId === field.colId; });\n if (seriesChartType) {\n var chartType = seriesChartType.chartType;\n return {\n type: getSeriesType(chartType),\n xKey: category.id,\n yKey: field.colId,\n yName: field.displayName,\n grouped: ['groupedColumn', 'groupedBar', 'groupedArea'].includes(chartType),\n stacked: ['stackedArea', 'stackedColumn'].includes(chartType),\n };\n }\n });\n };\n ComboChartProxy.prototype.getYKeys = function (fields, seriesChartTypes) {\n var primaryYKeys = [];\n var secondaryYKeys = [];\n fields.forEach(function (field) {\n var colId = field.colId;\n var seriesChartType = seriesChartTypes.find(function (s) { return s.colId === colId; });\n if (seriesChartType) {\n seriesChartType.secondaryAxis ? secondaryYKeys.push(colId) : primaryYKeys.push(colId);\n }\n });\n return { primaryYKeys: primaryYKeys, secondaryYKeys: secondaryYKeys };\n };\n return ComboChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$R = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridChartComp = /** @class */ (function (_super) {\n __extends$R(GridChartComp, _super);\n function GridChartComp(params) {\n var _this = _super.call(this, GridChartComp.TEMPLATE) || this;\n _this.params = params;\n return _this;\n }\n GridChartComp.prototype.init = function () {\n var _this = this;\n var availableChartThemes = this.gridOptionsService.get('chartThemes') || DEFAULT_THEMES;\n if (availableChartThemes.length < 1) {\n throw new Error('Cannot create chart: no chart themes are available to be used.');\n }\n var chartThemeName = this.params.chartThemeName;\n if (!_.includes(availableChartThemes, chartThemeName)) {\n chartThemeName = availableChartThemes[0];\n }\n var modelParams = {\n chartId: this.params.chartId,\n pivotChart: this.params.pivotChart,\n chartType: this.params.chartType,\n chartThemeName: chartThemeName,\n aggFunc: this.params.aggFunc,\n cellRange: this.params.cellRange,\n suppressChartRanges: this.params.suppressChartRanges,\n unlinkChart: this.params.unlinkChart,\n crossFiltering: this.params.crossFiltering,\n seriesChartTypes: this.params.seriesChartTypes,\n };\n var isRtl = this.gridOptionsService.is('enableRtl');\n this.addCssClass(isRtl ? 'ag-rtl' : 'ag-ltr');\n // only the chart controller interacts with the chart model\n var model = this.createBean(new ChartDataModel(modelParams));\n this.chartController = this.createManagedBean(new ChartController(model));\n this.validateCustomThemes();\n // create chart before dialog to ensure dialog is correct size\n this.createChart();\n if (this.params.insideDialog) {\n this.addDialog();\n }\n this.addMenu();\n this.addTitleEditComp();\n this.addManagedListener(this.getGui(), 'focusin', this.setActiveChartCellRange.bind(this));\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_MODEL_UPDATE, this.update.bind(this));\n if (this.chartMenu) {\n // chart menu may not exist, i.e. cross filtering\n this.addManagedListener(this.chartMenu, ChartMenu.EVENT_DOWNLOAD_CHART, function () { return _this.downloadChart(); });\n }\n this.update();\n this.raiseChartCreatedEvent();\n };\n GridChartComp.prototype.validateCustomThemes = function () {\n var suppliedThemes = this.getChartThemes();\n var customChartThemes = this.gridOptionsService.get('customChartThemes');\n if (customChartThemes) {\n _.getAllKeysInObjects([customChartThemes]).forEach(function (customThemeName) {\n if (!_.includes(suppliedThemes, customThemeName)) {\n console.warn(\"AG Grid: a custom chart theme with the name '\" + customThemeName + \"' has been \" +\n \"supplied but not added to the 'chartThemes' list\");\n }\n });\n }\n };\n GridChartComp.prototype.createChart = function () {\n var _this = this;\n // if chart already exists, destroy it and remove it from DOM\n var chartInstance = undefined;\n if (this.chartProxy) {\n chartInstance = this.chartProxy.destroy({ keepChartInstance: true });\n }\n var crossFilterCallback = function (event, reset) {\n var ctx = _this.params.crossFilteringContext;\n ctx.lastSelectedChartId = reset ? '' : _this.chartController.getChartId();\n if (reset) {\n _this.params.crossFilteringResetCallback();\n }\n _this.crossFilterService.filter(event, reset);\n };\n var chartType = this.chartController.getChartType();\n var chartProxyParams = {\n chartType: chartType,\n chartInstance: chartInstance,\n getChartThemeName: this.getChartThemeName.bind(this),\n getChartThemes: this.getChartThemes.bind(this),\n customChartThemes: this.gridOptionsService.get('customChartThemes'),\n getGridOptionsChartThemeOverrides: function () { return _this.getGridOptionsChartThemeOverrides(); },\n getExtraPaddingDirections: function () { var _a, _b; return (_b = (_a = _this.chartMenu) === null || _a === void 0 ? void 0 : _a.getExtraPaddingDirections()) !== null && _b !== void 0 ? _b : []; },\n apiChartThemeOverrides: this.params.chartThemeOverrides,\n crossFiltering: this.params.crossFiltering,\n crossFilterCallback: crossFilterCallback,\n parentElement: this.eChart,\n grouping: this.chartController.isGrouping(),\n chartThemeToRestore: this.params.chartThemeName,\n chartOptionsToRestore: this.params.chartOptionsToRestore,\n chartPaletteToRestore: this.params.chartPaletteToRestore,\n seriesChartTypes: this.chartController.getSeriesChartTypes(),\n translate: function (toTranslate, defaultText) { return _this.chartTranslationService.translate(toTranslate, defaultText); },\n };\n // ensure 'restoring' options are not reused when switching chart types\n this.params.chartOptionsToRestore = undefined;\n // set local state used to detect when chart changes\n this.chartType = chartType;\n this.chartThemeName = this.chartController.getChartThemeName();\n this.chartProxy = GridChartComp.createChartProxy(chartProxyParams);\n if (!this.chartProxy) {\n console.warn('AG Grid: invalid chart type supplied: ', chartProxyParams.chartType);\n return;\n }\n var canvas = this.eChart.querySelector('canvas');\n if (canvas) {\n canvas.classList.add('ag-charts-canvas');\n }\n this.chartController.setChartProxy(this.chartProxy);\n this.chartOptionsService = this.createBean(new ChartOptionsService(this.chartController));\n this.titleEdit && this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n };\n GridChartComp.prototype.getChartThemeName = function () {\n return this.chartController.getChartThemeName();\n };\n GridChartComp.prototype.getChartThemes = function () {\n return this.chartController.getThemes();\n };\n GridChartComp.prototype.getGridOptionsChartThemeOverrides = function () {\n return this.gridOptionsService.get('chartThemeOverrides');\n };\n GridChartComp.createChartProxy = function (chartProxyParams) {\n switch (chartProxyParams.chartType) {\n case 'column':\n case 'bar':\n case 'groupedColumn':\n case 'stackedColumn':\n case 'normalizedColumn':\n case 'groupedBar':\n case 'stackedBar':\n case 'normalizedBar':\n return new BarChartProxy(chartProxyParams);\n case 'pie':\n case 'doughnut':\n return new PieChartProxy(chartProxyParams);\n case 'area':\n case 'stackedArea':\n case 'normalizedArea':\n return new AreaChartProxy(chartProxyParams);\n case 'line':\n return new LineChartProxy(chartProxyParams);\n case 'scatter':\n case 'bubble':\n return new ScatterChartProxy(chartProxyParams);\n case 'histogram':\n return new HistogramChartProxy(chartProxyParams);\n case 'columnLineCombo':\n case 'areaColumnCombo':\n case 'customCombo':\n return new ComboChartProxy(chartProxyParams);\n default:\n throw \"AG Grid: Unable to create chart as an invalid chartType = '\" + chartProxyParams.chartType + \"' was supplied.\";\n }\n };\n GridChartComp.prototype.addDialog = function () {\n var _this = this;\n var title = this.chartTranslationService.translate(this.params.pivotChart ? 'pivotChartTitle' : 'rangeChartTitle');\n var _a = this.getBestDialogSize(), width = _a.width, height = _a.height;\n this.chartDialog = new AgDialog({\n resizable: true,\n movable: true,\n maximizable: true,\n title: title,\n width: width,\n height: height,\n component: this,\n centered: true,\n closable: true\n });\n this.getContext().createBean(this.chartDialog);\n this.chartDialog.addEventListener(AgDialog.EVENT_DESTROYED, function () { return _this.destroy(); });\n };\n GridChartComp.prototype.getBestDialogSize = function () {\n var popupParent = this.popupService.getPopupParent();\n var maxWidth = _.getAbsoluteWidth(popupParent) * 0.75;\n var maxHeight = _.getAbsoluteHeight(popupParent) * 0.75;\n var ratio = 0.553;\n var chart = this.chartProxy.getChart();\n var width = this.params.insideDialog ? 850 : chart.width;\n var height = this.params.insideDialog ? 470 : chart.height;\n if (width > maxWidth || height > maxHeight) {\n width = Math.min(width, maxWidth);\n height = Math.round(width * ratio);\n if (height > maxHeight) {\n height = maxHeight;\n width = Math.min(width, Math.round(height / ratio));\n }\n }\n return { width: width, height: height };\n };\n GridChartComp.prototype.addMenu = function () {\n if (!this.params.crossFiltering) {\n this.chartMenu = this.createBean(new ChartMenu(this.eChartContainer, this.eMenuContainer, this.chartController, this.chartOptionsService));\n this.eChartContainer.appendChild(this.chartMenu.getGui());\n }\n };\n GridChartComp.prototype.addTitleEditComp = function () {\n this.titleEdit = this.createBean(new TitleEdit(this.chartMenu));\n this.eTitleEditContainer.appendChild(this.titleEdit.getGui());\n if (this.chartProxy) {\n this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n }\n };\n GridChartComp.prototype.update = function () {\n if (this.shouldRecreateChart()) {\n this.createChart();\n }\n this.updateChart();\n };\n GridChartComp.prototype.shouldRecreateChart = function () {\n return this.chartType !== this.chartController.getChartType() || this.chartThemeName !== this.chartController.getChartThemeName();\n };\n GridChartComp.prototype.getCurrentChartType = function () {\n return this.chartType;\n };\n GridChartComp.prototype.getChartModel = function () {\n return this.chartController.getChartModel();\n };\n GridChartComp.prototype.getChartImageDataURL = function (fileFormat) {\n return this.chartProxy.getChartImageDataURL(fileFormat);\n };\n GridChartComp.prototype.updateChart = function () {\n var _this = this;\n var chartProxy = this.chartProxy;\n var selectedCols = this.chartController.getSelectedValueColState();\n var fields = selectedCols.map(function (c) { return ({ colId: c.colId, displayName: c.displayName }); });\n var data = this.chartController.getChartData();\n var chartEmpty = this.handleEmptyChart(data, fields);\n if (chartEmpty) {\n return;\n }\n var chartUpdateParams = this.chartController.getChartUpdateParams();\n chartProxy.update(chartUpdateParams);\n this.chartProxy.getChart().waitForUpdate().then(function () {\n _this.chartController.raiseChartUpdatedEvent();\n });\n this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n };\n GridChartComp.prototype.handleEmptyChart = function (data, fields) {\n var pivotModeDisabled = this.chartController.isPivotChart() && !this.chartController.isPivotMode();\n var minFieldsRequired = 1;\n if (this.chartController.isActiveXYChart()) {\n minFieldsRequired = this.chartController.getChartType() === 'bubble' ? 3 : 2;\n }\n var isEmptyChart = fields.length < minFieldsRequired || data.length === 0;\n if (this.eChart) {\n var isEmpty = pivotModeDisabled || isEmptyChart;\n _.setDisplayed(this.eChart, !isEmpty);\n _.setDisplayed(this.eEmpty, isEmpty);\n }\n if (pivotModeDisabled) {\n this.eEmpty.innerText = this.chartTranslationService.translate('pivotChartRequiresPivotMode');\n return true;\n }\n if (isEmptyChart) {\n this.eEmpty.innerText = this.chartTranslationService.translate('noDataToChart');\n return true;\n }\n return false;\n };\n GridChartComp.prototype.downloadChart = function (dimensions, fileName, fileFormat) {\n this.chartProxy.downloadChart(dimensions, fileName, fileFormat);\n };\n GridChartComp.prototype.openChartToolPanel = function (panel) {\n var menuPanel = panel ? CHART_TOOL_PANEL_MENU_OPTIONS[panel] : panel;\n this.chartMenu.showMenu(menuPanel);\n };\n GridChartComp.prototype.closeChartToolPanel = function () {\n this.chartMenu.hideMenu();\n };\n GridChartComp.prototype.getChartId = function () {\n return this.chartController.getChartId();\n };\n GridChartComp.prototype.getUnderlyingChart = function () {\n return this.chartProxy.getChartRef();\n };\n GridChartComp.prototype.crossFilteringReset = function () {\n this.chartProxy.crossFilteringReset();\n };\n GridChartComp.prototype.setActiveChartCellRange = function (focusEvent) {\n if (this.getGui().contains(focusEvent.relatedTarget)) {\n return;\n }\n this.chartController.setChartRange(true);\n this.gridApi.focusService.clearFocusedCell();\n };\n GridChartComp.prototype.raiseChartCreatedEvent = function () {\n var _this = this;\n var event = {\n type: Events.EVENT_CHART_CREATED,\n chartId: this.chartController.getChartId()\n };\n this.chartProxy.getChart().waitForUpdate().then(function () {\n _this.eventService.dispatchEvent(event);\n });\n };\n GridChartComp.prototype.raiseChartDestroyedEvent = function () {\n var event = {\n type: Events.EVENT_CHART_DESTROYED,\n chartId: this.chartController.getChartId(),\n };\n this.eventService.dispatchEvent(event);\n };\n GridChartComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.chartProxy) {\n this.chartProxy.destroy();\n }\n this.destroyBean(this.chartMenu);\n this.destroyBean(this.titleEdit);\n // don't want to invoke destroy() on the Dialog (prevents destroy loop)\n if (this.chartDialog && this.chartDialog.isAlive()) {\n this.destroyBean(this.chartDialog);\n }\n // if the user is providing containers for the charts, we need to clean up, otherwise the old chart\n // data will still be visible although the chart is no longer bound to the grid\n var eGui = this.getGui();\n _.clearElement(eGui);\n // remove from parent, so if user provided container, we detach from the provided dom element\n _.removeFromParent(eGui);\n this.raiseChartDestroyedEvent();\n };\n GridChartComp.TEMPLATE = \"<div class=\\\"ag-chart\\\" tabindex=\\\"-1\\\">\\n <div ref=\\\"eChartContainer\\\" tabindex=\\\"-1\\\" class=\\\"ag-chart-components-wrapper\\\">\\n <div ref=\\\"eChart\\\" class=\\\"ag-chart-canvas-wrapper\\\"></div>\\n <div ref=\\\"eEmpty\\\" class=\\\"ag-chart-empty-text ag-unselectable\\\"></div>\\n </div>\\n <div ref=\\\"eTitleEditContainer\\\"></div>\\n <div ref=\\\"eMenuContainer\\\" class=\\\"ag-chart-docked-container\\\"></div>\\n </div>\";\n __decorate$N([\n RefSelector('eChart')\n ], GridChartComp.prototype, \"eChart\", void 0);\n __decorate$N([\n RefSelector('eChartContainer')\n ], GridChartComp.prototype, \"eChartContainer\", void 0);\n __decorate$N([\n RefSelector('eMenuContainer')\n ], GridChartComp.prototype, \"eMenuContainer\", void 0);\n __decorate$N([\n RefSelector('eEmpty')\n ], GridChartComp.prototype, \"eEmpty\", void 0);\n __decorate$N([\n RefSelector('eTitleEditContainer')\n ], GridChartComp.prototype, \"eTitleEditContainer\", void 0);\n __decorate$N([\n Autowired('chartCrossFilterService')\n ], GridChartComp.prototype, \"crossFilterService\", void 0);\n __decorate$N([\n Autowired('chartTranslationService')\n ], GridChartComp.prototype, \"chartTranslationService\", void 0);\n __decorate$N([\n Autowired('gridApi')\n ], GridChartComp.prototype, \"gridApi\", void 0);\n __decorate$N([\n Autowired('popupService')\n ], GridChartComp.prototype, \"popupService\", void 0);\n __decorate$N([\n PostConstruct\n ], GridChartComp.prototype, \"init\", null);\n return GridChartComp;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$a = '29.3.5';\n\nvar __assign$b = (undefined && undefined.__assign) || function () {\n __assign$b = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$b.apply(this, arguments);\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __read$d = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __values$4 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction upgradeChartModel(model) {\n model.version;\n if (model.version == null) {\n // Try to guess the version so we can apply the right subset of migrations.\n model.version = heuristicVersionDetection(model);\n }\n model = migrateIfBefore('23.0.0', model, migrateV23);\n model = migrateIfBefore('24.0.0', model, migrateV24);\n model = migrateIfBefore('25.1.0', model, migrateV25_1);\n model = migrateIfBefore('26.0.0', model, migrateV26);\n model = migrateIfBefore('26.1.0', model, migrateV26_1);\n // Switch from iChartOptions to iAgChartOptions....\n model = migrateIfBefore('26.2.0', model, migrateV26_2);\n model = migrateIfBefore('28.0.0', model, migrateV28);\n model = migrateIfBefore('28.2.0', model, migrateV28_2);\n model = migrateIfBefore('29.0.0', model, migrateV29);\n model = cleanup(model);\n // Bump version to latest.\n model = migrateIfBefore(VERSION$a, model, function (m) { return m; });\n return model;\n}\nfunction migrateV23(model) {\n // https://github.com/ag-grid/ag-grid/commit/76c6744ff2b732d298d1ade73c122188854b5bac\n model = jsonRename('chartOptions.legend.item.marker.type', 'shape', model);\n model = jsonRename('chartOptions.seriesDefaults.marker.type', 'shape', model);\n // https://github.com/ag-grid/ag-grid/commit/7bdf2cfd666acda758a818733a9f9cb35ac1d7a7\n model = jsonRename('chartOptions.legend.padding', 'spacing', model);\n return model;\n}\nfunction migrateV24(model) {\n var _a;\n // https://github.com/ag-grid/ag-grid/commit/f4e854e3dc459400fa00e6da2873cb8e9cfff6fe#\n model = jsonDelete('chartOptions.seriesDefaults.marker.minSize', model);\n var _b = model, chartType = _b.chartType, chartPalette = _b.chartPalette, // Migrate.\n _c = _b.chartOptions, xAxis = _c.xAxis, yAxis = _c.yAxis, chartOptions = __rest(_c, [\"xAxis\", \"yAxis\"]), chartModel = __rest(_b, [\"chartType\", \"chartPalette\", \"chartOptions\"]);\n var axesTypes = getLegacyAxisType(chartType);\n var axes = axesTypes === null || axesTypes === void 0 ? void 0 : axesTypes.map(function (type, i) { return (__assign$b({ type: type }, (i === 0 ? xAxis : yAxis))); });\n return __assign$b({ chartType: chartType, chartThemeName: (_a = LEGACY_PALETTES[chartPalette]) !== null && _a !== void 0 ? _a : 'ag-default', chartOptions: __assign$b(__assign$b({}, chartOptions), { axes: axes,\n xAxis: xAxis,\n yAxis: yAxis }) }, chartModel);\n}\nfunction migrateV25_1(model) {\n // https://github.com/ag-grid/ag-grid/commit/61943f9fecbfb5ac1b9a1fd93788f9fdd8687181\n model = jsonRename('chartOptions.seriesDefaults.label.minRequiredAngle', 'minAngle', model);\n return model;\n}\nfunction migrateV26(model) {\n // https://github.com/ag-grid/ag-grid/commit/df2445d88e64cb4e831d6163104a0fa60ccde3b5\n var highlightOptUpdate = function (_a) {\n var dimOpacity = _a.dimOpacity, opts = __rest(_a, [\"dimOpacity\"]);\n return (__assign$b(__assign$b({}, opts), (dimOpacity != null ? { series: { dimOpacity: dimOpacity } } : {})));\n };\n model = jsonMutate('chartOptions.seriesDefaults.highlightStyle', model, highlightOptUpdate);\n // https://github.com/ag-grid/ag-grid/commit/f4e854e3dc459400fa00e6da2873cb8e9cfff6fe#\n model = jsonDelete('chart', model);\n model = jsonDelete('chartOptions.seriesDefaults.tooltipClass', model);\n model = jsonDelete('chartOptions.seriesDefaults.tooltipTracking', model);\n // Cleanup label.rotation === 0, which was treated as 'use the default' on reload prior to 26.\n model = jsonDeleteDefault('chartOptions.axes[].label.rotation', 0, model);\n model = jsonDeleteDefault('chartOptions.axes[].label.rotation', 335, model);\n return model;\n}\nfunction migrateV26_1(model) {\n // https://github.com/ag-grid/ag-grid/commit/df2445d88e64cb4e831d6163104a0fa60ccde3b5\n var highlightOptUpdate = function (_a) {\n var item = _a.item, series = _a.series, opts = __rest(_a, [\"item\", \"series\"]);\n return (__assign$b({ item: __assign$b(__assign$b({}, opts), item) }, (series ? { series: series } : {})));\n };\n model = jsonMutate('chartOptions.seriesDefaults.highlightStyle', model, highlightOptUpdate);\n model = jsonMutate('chartOptions.series[].highlightStyle', model, highlightOptUpdate);\n return model;\n}\nfunction migrateV26_2(model) {\n // https://github.com/ag-grid/ag-grid/commit/8b2e223cb1a687cb6c1d70b9f75f52fa29d00341\n model = jsonMove('chartOptions.seriesDefaults.fill.opacity', 'chartOptions.seriesDefaults.fillOpacity', model);\n model = jsonMove('chartOptions.seriesDefaults.stroke.opacity', 'chartOptions.seriesDefaults.strokeOpacity', model);\n model = jsonMove('chartOptions.seriesDefaults.stroke.width', 'chartOptions.seriesDefaults.strokeWidth', model);\n model = jsonDelete('chartOptions.seriesDefaults.fill', model);\n model = jsonDelete('chartOptions.seriesDefaults.stroke', model);\n model = jsonDelete('chartOptions.seriesDefaults.callout.colors', model);\n model = jsonDelete('chartOptions.xAxis', model);\n model = jsonDelete('chartOptions.yAxis', model);\n var _a = model, chartType = _a.chartType, _b = _a.chartOptions, axes = _b.axes; _b.series; var seriesDefaults = _b.seriesDefaults, otherChartOptions = __rest(_b, [\"axes\", \"series\", \"seriesDefaults\"]), otherModelProps = __rest(_a, [\"chartType\", \"chartOptions\"]);\n // At 26.2.0 combination charts weren't supported, so we can safely assume a single series type.\n // We can't rely on the `series.type` field as it was incorrect (in v25.0.0 line chart has an\n // `area` series).\n var seriesTypes = [getSeriesType(chartType)];\n var chartTypeMixin = {};\n if (!seriesTypes.includes('pie')) {\n var minimalAxis_1 = { top: {}, bottom: {}, left: {}, right: {} };\n var updatedAxes_1 = axes\n .map(function (_a) {\n var _b;\n var type = _a.type, axisProps = __rest(_a, [\"type\"]);\n return (_b = {},\n _b[type] = __assign$b(__assign$b({}, minimalAxis_1), axisProps),\n _b);\n })\n .reduce(merge, {});\n ALL_AXIS_TYPES.filter(function (v) { return updatedAxes_1[v] == null; }).forEach(function (v) {\n updatedAxes_1[v] = __assign$b({}, minimalAxis_1);\n });\n chartTypeMixin.axes = updatedAxes_1;\n }\n var updatedChartOptions = seriesTypes\n .map(function (t) {\n var _a;\n return (_a = {},\n _a[t] = __assign$b(__assign$b(__assign$b({}, chartTypeMixin), { series: seriesDefaults }), otherChartOptions),\n _a);\n })\n .reduce(merge, {});\n model = __assign$b(__assign$b({}, otherModelProps), { chartType: chartType, chartOptions: updatedChartOptions });\n return model;\n}\nfunction migrateV28(model) {\n model = jsonDelete('chartOptions.*.title.padding', model);\n model = jsonDelete('chartOptions.*.subtitle.padding', model);\n model = jsonDelete('chartOptions.*.axes.*.title.padding', model);\n model = jsonBackfill('chartOptions.*.axes.*.title.enabled', false, model);\n return model;\n}\nfunction migrateV28_2(model) {\n model = jsonRename('chartOptions.pie.series.callout', 'calloutLine', model);\n model = jsonRename('chartOptions.pie.series.label', 'calloutLabel', model);\n // series.yKeys => yKey ?\n // series.yNames => yName ?\n return model;\n}\nfunction migrateV29(model) {\n model = jsonMoveIfMissing('chartOptions.scatter.series.fill', 'chartOptions.scatter.series.marker.fill', model);\n model = jsonMoveIfMissing('chartOptions.scatter.series.fillOpacity', 'chartOptions.scatter.series.marker.fillOpacity', model);\n model = jsonMoveIfMissing('chartOptions.scatter.series.stroke', 'chartOptions.scatter.series.marker.stroke', model);\n model = jsonMoveIfMissing('chartOptions.scatter.series.strokeOpacity', 'chartOptions.scatter.series.marker.strokeOpacity', model);\n model = jsonMoveIfMissing('chartOptions.scatter.series.strokeWidth', 'chartOptions.scatter.series.marker.strokeWidth', model);\n model = jsonMove('chartOptions.scatter.series.paired', 'chartOptions.scatter.paired', model);\n return model;\n}\nfunction cleanup(model) {\n // Remove fixed width/height - this has never been supported via UI configuration.\n model = jsonDelete('chartOptions.*.width', model);\n model = jsonDelete('chartOptions.*.height', model);\n model = jsonBackfill('chartOptions.*.axes.category.label.autoRotate', true, model);\n return model;\n}\nfunction heuristicVersionDetection(model) {\n var _a, _b;\n var modelAny = model;\n if (model.version != null) {\n return model.version;\n }\n var hasKey = function (obj) {\n var keys = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n keys[_i - 1] = arguments[_i];\n }\n return Object.keys(obj || {}).some(function (k) { return keys.includes(k); });\n };\n var chartOptions = modelAny.chartOptions;\n var seriesOptions = hasKey(chartOptions, 'seriesDefaults')\n ? chartOptions === null || chartOptions === void 0 ? void 0 : chartOptions.seriesDefaults : chartOptions === null || chartOptions === void 0 ? void 0 : chartOptions[Object.keys(chartOptions)[0]];\n var hints = {\n '27.0.0': hasKey(modelAny, 'seriesChartTypes'),\n '26.2.0': !hasKey(chartOptions, 'seriesDefaults'),\n '26.1.0': hasKey(seriesOptions === null || seriesOptions === void 0 ? void 0 : seriesOptions.highlightStyle, 'item'),\n '26.0.0': hasKey(seriesOptions === null || seriesOptions === void 0 ? void 0 : seriesOptions.highlightStyle, 'series'),\n // '26.0.0': modelAny.chart === undefined,\n '25.1.0': hasKey(seriesOptions === null || seriesOptions === void 0 ? void 0 : seriesOptions.label, 'minAngle'),\n '25.0.0': hasKey(modelAny, 'modelType', 'aggFunc', 'unlinkChart', 'suppressChartRanges') ||\n hasKey(seriesOptions, 'lineDash', 'lineDashOffset'),\n '24.0.0': hasKey(modelAny, 'chartThemeName', 'chart') || hasKey(chartOptions, 'series'),\n '23.2.0': hasKey(chartOptions, 'navigator'),\n '23.0.0': hasKey((_b = (_a = chartOptions === null || chartOptions === void 0 ? void 0 : chartOptions.legend) === null || _a === void 0 ? void 0 : _a.item) === null || _b === void 0 ? void 0 : _b.marker, 'shape'),\n '22.1.0': hasKey(modelAny, 'chartPalette', 'chartType'),\n };\n // Default to 27.1.0, the last version before we added `version`.\n var defaultVersion = '27.1.0';\n var matchingHints = Object.entries(hints).filter(function (_a) {\n var _b = __read$d(_a, 2); _b[0]; var match = _b[1];\n return match;\n });\n var _c = __read$d(matchingHints[0], 1), _d = _c[0], heuristicVersion = _d === void 0 ? defaultVersion : _d;\n return heuristicVersion;\n}\nfunction migrateIfBefore(maxVersion, model, migration) {\n if (versionNumber(maxVersion) > versionNumber(model.version)) {\n var result = migration(model);\n result.version = maxVersion;\n return result;\n }\n return model;\n}\nfunction versionParts(version) {\n var split = typeof version === 'string' ? version.split('.').map(function (v) { return Number(v); }) : [];\n if (split.length !== 3 || split.some(function (v) { return isNaN(v); })) {\n throw new Error('AG Grid - Illegal version string: ' + version);\n }\n return {\n major: split[0],\n minor: split[1],\n patch: split[2],\n };\n}\nfunction versionNumber(version) {\n var _a = versionParts(version), major = _a.major, minor = _a.minor, patch = _a.patch;\n // Return a number of the form MMmmPP.\n return major * 10000 + minor * 100 + patch;\n}\nfunction jsonDeleteDefault(path, defaultValue, json) {\n return jsonMutateProperty(path, true, json, function (parent, prop) {\n if (parent[prop] === defaultValue) {\n delete parent[prop];\n }\n });\n}\nfunction jsonBackfill(path, defaultValue, json) {\n return jsonMutateProperty(path, false, json, function (parent, prop) {\n if (parent[prop] == null) {\n parent[prop] = defaultValue;\n }\n });\n}\nfunction jsonMove(from, to, json) {\n var valueToMove = undefined;\n var valueFound = false;\n json = jsonMutateProperty(from, true, json, function (parent, prop) {\n valueFound = true;\n valueToMove = parent[prop];\n delete parent[prop];\n });\n if (!valueFound) {\n return json;\n }\n return jsonMutateProperty(to, false, json, function (parent, prop) {\n parent[prop] = valueToMove;\n });\n}\nfunction jsonMoveIfMissing(from, to, json) {\n var valueToMove = undefined;\n var valueFound = false;\n json = jsonMutateProperty(from, true, json, function (parent, prop) {\n valueFound = true;\n valueToMove = parent[prop];\n delete parent[prop];\n });\n if (!valueFound) {\n return json;\n }\n return jsonMutateProperty(to, false, json, function (parent, prop) {\n if (parent[prop] === undefined) {\n parent[prop] = valueToMove;\n }\n });\n}\nfunction jsonRename(path, renameTo, json) {\n return jsonMutateProperty(path, true, json, function (parent, prop) {\n parent[renameTo] = parent[prop];\n delete parent[prop];\n });\n}\nfunction jsonDelete(path, json) {\n return jsonMutateProperty(path, true, json, function (parent, prop) { return delete parent[prop]; });\n}\nfunction jsonMutateProperty(path, skipMissing, json, mutator) {\n var pathElements = path instanceof Array ? path : path.split('.');\n var parentPathElements = pathElements.slice(0, pathElements.length - 1);\n var targetName = pathElements[pathElements.length - 1];\n return jsonMutate(parentPathElements, json, function (parent) {\n var hasProperty = Object.keys(parent).includes(targetName);\n if (skipMissing && !hasProperty) {\n return parent;\n }\n var result = __assign$b({}, parent);\n mutator(result, targetName);\n return result;\n });\n}\nfunction jsonMutate(path, json, mutator) {\n var e_1, _a;\n var pathElements = path instanceof Array ? path : path.split('.');\n // Clone to avoid mutating original input.\n json = __assign$b({}, json);\n if (pathElements.length === 0) {\n return mutator(json);\n }\n else if (pathElements[0].startsWith('{')) {\n var pathOptions = pathElements[0].substring(1, pathElements[0].lastIndexOf('}')).split(',');\n try {\n for (var pathOptions_1 = __values$4(pathOptions), pathOptions_1_1 = pathOptions_1.next(); !pathOptions_1_1.done; pathOptions_1_1 = pathOptions_1.next()) {\n var pathOption = pathOptions_1_1.value;\n if (json[pathOption] != null) {\n json[pathOption] = jsonMutate(pathElements.slice(1), json[pathOption], mutator);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (pathOptions_1_1 && !pathOptions_1_1.done && (_a = pathOptions_1.return)) _a.call(pathOptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else if (pathElements[0].endsWith('[]')) {\n var arrayName = pathElements[0].substring(0, path[0].indexOf('['));\n if (json[arrayName] instanceof Array) {\n json[arrayName] = json[arrayName].map(function (v) { return jsonMutate(pathElements.slice(1), v, mutator); });\n }\n }\n else if (pathElements[0] === '*') {\n for (var jsonProp in json) {\n json[jsonProp] = jsonMutate(pathElements.slice(1), json[jsonProp], mutator);\n }\n }\n else if (json[pathElements[0]] != null) {\n json[pathElements[0]] = jsonMutate(pathElements.slice(1), json[pathElements[0]], mutator);\n }\n return json;\n}\nvar merge = function (r, n) { return (__assign$b(__assign$b({}, r), n)); };\n// Precise legacy palette fills/strokes can be found here for future reference:\n// https://github.com/ag-grid/ag-grid/blob/b22.1.0/grid-enterprise-modules/charts/src/charts/chart/palettes.ts\nvar LEGACY_PALETTES = {\n borneo: 'ag-default',\n material: 'ag-material',\n pastel: 'ag-pastel',\n bright: 'ag-vivid',\n flat: 'ag-solar',\n};\n\nvar __extends$Q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$a = (undefined && undefined.__assign) || function () {\n __assign$a = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$a.apply(this, arguments);\n};\nvar __decorate$M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartService = /** @class */ (function (_super) {\n __extends$Q(ChartService, _super);\n function ChartService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // we destroy all charts bound to this grid when grid is destroyed. activeCharts contains all charts, including\n // those in developer provided containers.\n _this.activeCharts = new Set();\n _this.activeChartComps = new Set();\n // this shared (singleton) context is used by cross filtering in line and area charts\n _this.crossFilteringContext = {\n lastSelectedChartId: '',\n };\n return _this;\n }\n ChartService.prototype.getChartModels = function () {\n var models = [];\n var versionedModel = function (c) {\n return __assign$a(__assign$a({}, c), { version: VERSION$a });\n };\n this.activeChartComps.forEach(function (c) { return models.push(versionedModel(c.getChartModel())); });\n return models;\n };\n ChartService.prototype.getChartRef = function (chartId) {\n var chartRef;\n this.activeCharts.forEach(function (cr) {\n if (cr.chartId === chartId) {\n chartRef = cr;\n }\n });\n return chartRef;\n };\n ChartService.prototype.getChartImageDataURL = function (params) {\n var url;\n this.activeChartComps.forEach(function (c) {\n if (c.getChartId() === params.chartId) {\n url = c.getChartImageDataURL(params.fileFormat);\n }\n });\n return url;\n };\n ChartService.prototype.downloadChart = function (params) {\n var chartComp = Array.from(this.activeChartComps).find(function (c) { return c.getChartId() === params.chartId; });\n chartComp === null || chartComp === void 0 ? void 0 : chartComp.downloadChart(params.dimensions, params.fileName, params.fileFormat);\n };\n ChartService.prototype.openChartToolPanel = function (params) {\n var chartComp = Array.from(this.activeChartComps).find(function (c) { return c.getChartId() === params.chartId; });\n chartComp === null || chartComp === void 0 ? void 0 : chartComp.openChartToolPanel(params.panel);\n };\n ChartService.prototype.closeChartToolPanel = function (chartId) {\n var chartComp = Array.from(this.activeChartComps).find(function (c) { return c.getChartId() === chartId; });\n chartComp === null || chartComp === void 0 ? void 0 : chartComp.closeChartToolPanel();\n };\n ChartService.prototype.createChartFromCurrentRange = function (chartType) {\n if (chartType === void 0) { chartType = 'groupedColumn'; }\n var selectedRange = this.getSelectedRange();\n return this.createChart(selectedRange, chartType);\n };\n ChartService.prototype.restoreChart = function (model, chartContainer) {\n var _this = this;\n if (!model) {\n console.warn(\"AG Grid - unable to restore chart as no chart model is provided\");\n return;\n }\n if (model.version !== VERSION$a) {\n model = upgradeChartModel(model);\n }\n var params = {\n cellRange: model.cellRange,\n chartType: model.chartType,\n chartThemeName: model.chartThemeName,\n chartContainer: chartContainer,\n suppressChartRanges: model.suppressChartRanges,\n aggFunc: model.aggFunc,\n unlinkChart: model.unlinkChart,\n seriesChartTypes: model.seriesChartTypes\n };\n var getCellRange = function (cellRangeParams) {\n return _this.rangeService\n ? _this.rangeService.createCellRangeFromCellRangeParams(cellRangeParams)\n : undefined;\n };\n if (model.modelType === 'pivot') {\n // if required enter pivot mode\n if (!this.columnModel.isPivotMode()) {\n this.columnModel.setPivotMode(true, \"pivotChart\");\n }\n // pivot chart range contains all visible column without a row range to include all rows\n var columns = this.columnModel.getAllDisplayedColumns().map(function (col) { return col.getColId(); });\n var chartAllRangeParams = {\n rowStartIndex: null,\n rowStartPinned: undefined,\n rowEndIndex: null,\n rowEndPinned: undefined,\n columns: columns\n };\n var cellRange_1 = getCellRange(chartAllRangeParams);\n if (!cellRange_1) {\n console.warn(\"AG Grid - unable to create chart as there are no columns in the grid.\");\n return;\n }\n return this.createChart(cellRange_1, params.chartType, params.chartThemeName, true, true, params.chartContainer, undefined, undefined, params.unlinkChart, false, model.chartOptions);\n }\n var cellRange = getCellRange(params.cellRange);\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as no range is selected\");\n return;\n }\n return this.createChart(cellRange, params.chartType, params.chartThemeName, false, params.suppressChartRanges, params.chartContainer, params.aggFunc, undefined, params.unlinkChart, false, model.chartOptions, model.chartPalette, params.seriesChartTypes);\n };\n ChartService.prototype.createRangeChart = function (params) {\n var cellRange = this.rangeService\n ? this.rangeService.createCellRangeFromCellRangeParams(params.cellRange)\n : undefined;\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as no range is selected\");\n return;\n }\n return this.createChart(cellRange, params.chartType, params.chartThemeName, false, params.suppressChartRanges, params.chartContainer, params.aggFunc, params.chartThemeOverrides, params.unlinkChart, undefined, undefined, undefined, params.seriesChartTypes);\n };\n ChartService.prototype.createPivotChart = function (params) {\n // if required enter pivot mode\n if (!this.columnModel.isPivotMode()) {\n this.columnModel.setPivotMode(true, \"pivotChart\");\n }\n // pivot chart range contains all visible column without a row range to include all rows\n var chartAllRangeParams = {\n rowStartIndex: null,\n rowStartPinned: undefined,\n rowEndIndex: null,\n rowEndPinned: undefined,\n columns: this.columnModel.getAllDisplayedColumns().map(function (col) { return col.getColId(); })\n };\n var cellRange = this.rangeService\n ? this.rangeService.createCellRangeFromCellRangeParams(chartAllRangeParams)\n : undefined;\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as there are no columns in the grid.\");\n return;\n }\n return this.createChart(cellRange, params.chartType, params.chartThemeName, true, true, params.chartContainer, undefined, params.chartThemeOverrides, params.unlinkChart);\n };\n ChartService.prototype.createCrossFilterChart = function (params) {\n var cellRange = this.rangeService\n ? this.rangeService.createCellRangeFromCellRangeParams(params.cellRange)\n : undefined;\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as no range is selected\");\n return;\n }\n var crossFiltering = true;\n var suppressChartRangesSupplied = typeof params.suppressChartRanges !== 'undefined' && params.suppressChartRanges !== null;\n var suppressChartRanges = suppressChartRangesSupplied ? params.suppressChartRanges : true;\n return this.createChart(cellRange, params.chartType, params.chartThemeName, false, suppressChartRanges, params.chartContainer, params.aggFunc, params.chartThemeOverrides, params.unlinkChart, crossFiltering);\n };\n ChartService.prototype.createChart = function (cellRange, chartType, chartThemeName, pivotChart, suppressChartRanges, container, aggFunc, chartThemeOverrides, unlinkChart, crossFiltering, chartOptionsToRestore, chartPaletteToRestore, seriesChartTypes) {\n var _this = this;\n if (pivotChart === void 0) { pivotChart = false; }\n if (suppressChartRanges === void 0) { suppressChartRanges = false; }\n if (unlinkChart === void 0) { unlinkChart = false; }\n if (crossFiltering === void 0) { crossFiltering = false; }\n var createChartContainerFunc = this.gridOptionsService.getCallback('createChartContainer');\n var params = {\n chartId: this.generateId(),\n pivotChart: pivotChart,\n cellRange: cellRange,\n chartType: chartType,\n chartThemeName: chartThemeName,\n insideDialog: !(container || createChartContainerFunc),\n suppressChartRanges: suppressChartRanges,\n aggFunc: aggFunc,\n chartThemeOverrides: chartThemeOverrides,\n unlinkChart: unlinkChart,\n crossFiltering: crossFiltering,\n crossFilteringContext: this.crossFilteringContext,\n chartOptionsToRestore: chartOptionsToRestore,\n chartPaletteToRestore: chartPaletteToRestore,\n seriesChartTypes: seriesChartTypes,\n crossFilteringResetCallback: function () { return _this.activeChartComps.forEach(function (c) { return c.crossFilteringReset(); }); }\n };\n var chartComp = new GridChartComp(params);\n this.context.createBean(chartComp);\n var chartRef = this.createChartRef(chartComp);\n if (container) {\n // if container exists, means developer initiated chart create via API, so place in provided container\n container.appendChild(chartComp.getGui());\n // if the chart container was placed outside of an element that\n // has the grid's theme, we manually add the current theme to\n // make sure all styles for the chartMenu are rendered correctly\n var theme = this.environment.getTheme();\n if (theme.el && !theme.el.contains(container)) {\n container.classList.add(theme.theme);\n }\n }\n else if (createChartContainerFunc) {\n // otherwise user created chart via grid UI, check if developer provides containers (eg if the application\n // is using its own dialogs rather than the grid provided dialogs)\n createChartContainerFunc(chartRef);\n }\n else {\n // add listener to remove from active charts list when charts are destroyed, e.g. closing chart dialog\n chartComp.addEventListener(GridChartComp.EVENT_DESTROYED, function () {\n _this.activeChartComps.delete(chartComp);\n _this.activeCharts.delete(chartRef);\n });\n }\n return chartRef;\n };\n ChartService.prototype.createChartRef = function (chartComp) {\n var _this = this;\n var chartRef = {\n destroyChart: function () {\n if (_this.activeCharts.has(chartRef)) {\n _this.context.destroyBean(chartComp);\n _this.activeChartComps.delete(chartComp);\n _this.activeCharts.delete(chartRef);\n }\n },\n chartElement: chartComp.getGui(),\n chart: chartComp.getUnderlyingChart(),\n chartId: chartComp.getChartModel().chartId\n };\n this.activeCharts.add(chartRef);\n this.activeChartComps.add(chartComp);\n return chartRef;\n };\n ChartService.prototype.getSelectedRange = function () {\n var ranges = this.rangeService.getCellRanges();\n return ranges.length > 0 ? ranges[0] : {};\n };\n ChartService.prototype.generateId = function () {\n return 'id-' + Math.random().toString(36).substr(2, 16);\n };\n ChartService.prototype.destroyAllActiveCharts = function () {\n this.activeCharts.forEach(function (chart) { return chart.destroyChart(); });\n };\n ChartService.CHARTS_VERSION = VERSION$b;\n __decorate$M([\n Optional('rangeService')\n ], ChartService.prototype, \"rangeService\", void 0);\n __decorate$M([\n Autowired('columnModel')\n ], ChartService.prototype, \"columnModel\", void 0);\n __decorate$M([\n PreDestroy\n ], ChartService.prototype, \"destroyAllActiveCharts\", null);\n ChartService = __decorate$M([\n Bean('chartService')\n ], ChartService);\n return ChartService;\n}(BeanStub));\n\nvar __extends$P = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartTranslationService = /** @class */ (function (_super) {\n __extends$P(ChartTranslationService, _super);\n function ChartTranslationService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartTranslationService_1 = ChartTranslationService;\n ChartTranslationService.prototype.translate = function (toTranslate, defaultText) {\n var translate = this.localeService.getLocaleTextFunc();\n var defaultTranslation = ChartTranslationService_1.DEFAULT_TRANSLATIONS[toTranslate] || defaultText;\n return translate(toTranslate, defaultTranslation);\n };\n var ChartTranslationService_1;\n ChartTranslationService.DEFAULT_TRANSLATIONS = {\n pivotChartTitle: 'Pivot Chart',\n rangeChartTitle: 'Range Chart',\n settings: 'Settings',\n data: 'Data',\n format: 'Format',\n categories: 'Categories',\n defaultCategory: '(None)',\n series: 'Series',\n xyValues: 'X Y Values',\n paired: 'Paired Mode',\n axis: 'Axis',\n navigator: 'Navigator',\n color: 'Color',\n thickness: 'Thickness',\n xType: 'X Type',\n automatic: 'Automatic',\n category: 'Category',\n number: 'Number',\n time: 'Time',\n autoRotate: 'Auto Rotate',\n xRotation: 'X Rotation',\n yRotation: 'Y Rotation',\n ticks: 'Ticks',\n width: 'Width',\n height: 'Height',\n length: 'Length',\n padding: 'Padding',\n spacing: 'Spacing',\n chart: 'Chart',\n title: 'Title',\n titlePlaceholder: 'Chart title - double click to edit',\n background: 'Background',\n font: 'Font',\n top: 'Top',\n right: 'Right',\n bottom: 'Bottom',\n left: 'Left',\n labels: 'Labels',\n calloutLabels: 'Callout Labels',\n sectorLabels: 'Sector Labels',\n positionRatio: 'Position Ratio',\n size: 'Size',\n shape: 'Shape',\n minSize: 'Minimum Size',\n maxSize: 'Maximum Size',\n legend: 'Legend',\n position: 'Position',\n markerSize: 'Marker Size',\n markerStroke: 'Marker Stroke',\n markerPadding: 'Marker Padding',\n itemSpacing: 'Item Spacing',\n itemPaddingX: 'Item Padding X',\n itemPaddingY: 'Item Padding Y',\n layoutHorizontalSpacing: 'Horizontal Spacing',\n layoutVerticalSpacing: 'Vertical Spacing',\n strokeWidth: 'Stroke Width',\n offset: 'Offset',\n offsets: 'Offsets',\n tooltips: 'Tooltips',\n callout: 'Callout',\n markers: 'Markers',\n shadow: 'Shadow',\n blur: 'Blur',\n xOffset: 'X Offset',\n yOffset: 'Y Offset',\n lineWidth: 'Line Width',\n lineDash: 'Line Dash',\n normal: 'Normal',\n bold: 'Bold',\n italic: 'Italic',\n boldItalic: 'Bold Italic',\n predefined: 'Predefined',\n fillOpacity: 'Fill Opacity',\n strokeOpacity: 'Line Opacity',\n histogramBinCount: 'Bin count',\n columnGroup: 'Column',\n barGroup: 'Bar',\n pieGroup: 'Pie',\n lineGroup: 'Line',\n scatterGroup: 'X Y (Scatter)',\n areaGroup: 'Area',\n histogramGroup: 'Histogram',\n combinationGroup: 'Combination',\n groupedColumnTooltip: 'Grouped',\n stackedColumnTooltip: 'Stacked',\n normalizedColumnTooltip: '100% Stacked',\n groupedBarTooltip: 'Grouped',\n stackedBarTooltip: 'Stacked',\n normalizedBarTooltip: '100% Stacked',\n pieTooltip: 'Pie',\n doughnutTooltip: 'Doughnut',\n lineTooltip: 'Line',\n groupedAreaTooltip: 'Area',\n stackedAreaTooltip: 'Stacked',\n normalizedAreaTooltip: '100% Stacked',\n scatterTooltip: 'Scatter',\n bubbleTooltip: 'Bubble',\n histogramTooltip: 'Histogram',\n columnLineComboTooltip: 'Column & Line',\n areaColumnComboTooltip: 'Area & Column',\n customComboTooltip: 'Custom Combination',\n noDataToChart: 'No data available to be charted.',\n pivotChartRequiresPivotMode: 'Pivot Chart requires Pivot Mode enabled.',\n chartSettingsToolbarTooltip: 'Menu',\n chartLinkToolbarTooltip: 'Linked to Grid',\n chartUnlinkToolbarTooltip: 'Unlinked from Grid',\n chartDownloadToolbarTooltip: 'Download Chart',\n histogramFrequency: \"Frequency\",\n seriesChartType: 'Series Chart Type',\n seriesType: 'Series Type',\n secondaryAxis: 'Secondary Axis',\n };\n ChartTranslationService = ChartTranslationService_1 = __decorate$L([\n Bean(\"chartTranslationService\")\n ], ChartTranslationService);\n return ChartTranslationService;\n}(BeanStub));\n\nvar __extends$O = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartCrossFilterService = /** @class */ (function (_super) {\n __extends$O(ChartCrossFilterService, _super);\n function ChartCrossFilterService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartCrossFilterService_1 = ChartCrossFilterService;\n ChartCrossFilterService.prototype.filter = function (event, reset) {\n if (reset === void 0) { reset = false; }\n var filterModel = this.gridApi.getFilterModel();\n // filters should be reset when user clicks on canvas background\n if (reset) {\n this.resetFilters(filterModel);\n return;\n }\n var colId = ChartCrossFilterService_1.extractFilterColId(event);\n if (this.isValidColumnFilter(colId)) {\n // update filters based on current chart selections\n this.updateFilters(filterModel, event, colId);\n }\n else {\n console.warn(\"AG Grid: cross filtering requires a 'agSetColumnFilter' or 'agMultiColumnFilter' \" +\n \"to be defined on the column with id: '\" + colId + \"'\");\n }\n };\n ChartCrossFilterService.prototype.resetFilters = function (filterModel) {\n var filtersExist = Object.keys(filterModel).length > 0;\n if (filtersExist) {\n // only reset filters / charts when necessary to prevent undesirable flickering effect\n this.gridApi.setFilterModel(null);\n this.gridApi.onFilterChanged();\n }\n };\n ChartCrossFilterService.prototype.updateFilters = function (filterModel, event, colId) {\n var _a;\n var dataKey = ChartCrossFilterService_1.extractFilterColId(event);\n var rawValue = event.datum[dataKey];\n if (rawValue === undefined) {\n return;\n }\n var selectedValue = rawValue.toString();\n if (event.event.metaKey || event.event.ctrlKey) {\n var existingGridValues = this.getCurrentGridValuesForCategory(colId);\n var valueAlreadyExists = _.includes(existingGridValues, selectedValue);\n var updatedValues = void 0;\n if (valueAlreadyExists) {\n updatedValues = existingGridValues.filter(function (v) { return v !== selectedValue; });\n }\n else {\n updatedValues = existingGridValues;\n updatedValues.push(selectedValue);\n }\n filterModel[colId] = this.getUpdatedFilterModel(colId, updatedValues);\n }\n else {\n var updatedValues = [selectedValue];\n filterModel = (_a = {}, _a[colId] = this.getUpdatedFilterModel(colId, updatedValues), _a);\n }\n this.gridApi.setFilterModel(filterModel);\n };\n ChartCrossFilterService.prototype.getUpdatedFilterModel = function (colId, updatedValues) {\n var columnFilterType = this.getColumnFilterType(colId);\n if (columnFilterType === 'agMultiColumnFilter') {\n return { filterType: 'multi', filterModels: [null, { filterType: 'set', values: updatedValues }] };\n }\n return { filterType: 'set', values: updatedValues };\n };\n ChartCrossFilterService.prototype.getCurrentGridValuesForCategory = function (colId) {\n var _this = this;\n var filteredValues = [];\n var column = this.getColumnById(colId);\n this.gridApi.forEachNodeAfterFilter(function (rowNode) {\n if (column && !rowNode.group) {\n var value = _this.valueService.getValue(column, rowNode) + '';\n if (!filteredValues.includes(value)) {\n filteredValues.push(value);\n }\n }\n });\n return filteredValues;\n };\n ChartCrossFilterService.extractFilterColId = function (event) {\n return event.xKey || event.calloutLabelKey;\n };\n ChartCrossFilterService.prototype.isValidColumnFilter = function (colId) {\n if (colId.indexOf('-filtered-out')) {\n colId = colId.replace('-filtered-out', '');\n }\n var filterType = this.getColumnFilterType(colId);\n if (typeof filterType === 'boolean') {\n return filterType;\n }\n return _.includes(['agSetColumnFilter', 'agMultiColumnFilter'], filterType);\n };\n ChartCrossFilterService.prototype.getColumnFilterType = function (colId) {\n var gridColumn = this.getColumnById(colId);\n if (gridColumn) {\n var colDef = gridColumn.getColDef();\n return colDef.filter != null ? colDef.filter : colDef.filterFramework;\n }\n };\n ChartCrossFilterService.prototype.getColumnById = function (colId) {\n return this.columnModel.getGridColumn(colId);\n };\n var ChartCrossFilterService_1;\n __decorate$K([\n Autowired('gridApi')\n ], ChartCrossFilterService.prototype, \"gridApi\", void 0);\n __decorate$K([\n Autowired('columnModel')\n ], ChartCrossFilterService.prototype, \"columnModel\", void 0);\n __decorate$K([\n Autowired('valueService')\n ], ChartCrossFilterService.prototype, \"valueService\", void 0);\n ChartCrossFilterService = ChartCrossFilterService_1 = __decorate$K([\n Bean(\"chartCrossFilterService\")\n ], ChartCrossFilterService);\n return ChartCrossFilterService;\n}(BeanStub));\n\nvar __extends$N = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$9 = (undefined && undefined.__assign) || function () {\n __assign$9 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$9.apply(this, arguments);\n};\nvar __decorate$J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$c = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$6 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$c(arguments[i]));\n return ar;\n};\nvar __values$3 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar RangeService = /** @class */ (function (_super) {\n __extends$N(RangeService, _super);\n function RangeService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellRanges = [];\n _this.bodyScrollListener = _this.onBodyScroll.bind(_this);\n _this.dragging = false;\n _this.intersectionRange = false; // When dragging ends, the current range will be used to intersect all other ranges\n return _this;\n }\n RangeService.prototype.init = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () { return _this.onColumnsChanged(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.onColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function () { return _this.removeAllCellRanges(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.removeAllCellRanges(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, function () { return _this.removeAllCellRanges(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.refreshLastRangeStart.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.refreshLastRangeStart.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.refreshLastRangeStart.bind(this));\n this.ctrlsService.whenReady(function () {\n var gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n _this.autoScrollService = new AutoScrollService({\n scrollContainer: gridBodyCtrl.getBodyViewportElement(),\n scrollAxis: 'xy',\n getVerticalPosition: function () { return gridBodyCtrl.getScrollFeature().getVScrollPosition().top; },\n setVerticalPosition: function (position) { return gridBodyCtrl.getScrollFeature().setVerticalScrollPosition(position); },\n getHorizontalPosition: function () { return gridBodyCtrl.getScrollFeature().getHScrollPosition().left; },\n setHorizontalPosition: function (position) { return gridBodyCtrl.getScrollFeature().setHorizontalScrollPosition(position); },\n shouldSkipVerticalScroll: function () { return !_this.gridOptionsService.isDomLayout('normal'); },\n shouldSkipHorizontalScroll: function () { return !gridBodyCtrl.getScrollFeature().isHorizontalScrollShowing(); }\n });\n });\n };\n // Called for both columns loaded & column visibility events\n RangeService.prototype.onColumnsChanged = function () {\n var _this = this;\n // first move start column in last cell range (i.e. series chart range)\n this.refreshLastRangeStart();\n var allColumns = this.columnModel.getAllDisplayedColumns();\n // check that the columns in each range still exist and are visible\n this.cellRanges.forEach(function (cellRange) {\n var beforeCols = cellRange.columns;\n // remove hidden or removed cols from cell range\n cellRange.columns = cellRange.columns.filter(function (col) { return col.isVisible() && allColumns.indexOf(col) !== -1; });\n var colsInRangeChanged = !_.areEqual(beforeCols, cellRange.columns);\n if (colsInRangeChanged) {\n // notify users and other parts of grid (i.e. status panel) that range has changed\n _this.dispatchChangedEvent(false, true, cellRange.id);\n }\n });\n // Remove empty cell ranges\n var countBefore = this.cellRanges.length;\n this.cellRanges = this.cellRanges.filter(function (range) { return range.columns.length > 0; });\n if (countBefore > this.cellRanges.length) {\n this.dispatchChangedEvent(false, true);\n }\n };\n RangeService.prototype.refreshLastRangeStart = function () {\n var lastRange = _.last(this.cellRanges);\n if (!lastRange) {\n return;\n }\n this.refreshRangeStart(lastRange);\n };\n RangeService.prototype.isContiguousRange = function (cellRange) {\n var rangeColumns = cellRange.columns;\n if (!rangeColumns.length) {\n return false;\n }\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var allPositions = rangeColumns.map(function (c) { return allColumns.indexOf(c); }).sort(function (a, b) { return a - b; });\n return _.last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\n };\n RangeService.prototype.getRangeStartRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.startRow : cellRange.endRow;\n }\n var rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? 'top' : null;\n return { rowIndex: 0, rowPinned: rowPinned };\n };\n RangeService.prototype.getRangeEndRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.endRow : cellRange.startRow;\n }\n var pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();\n var pinnedBottom = pinnedBottomRowCount > 0;\n if (pinnedBottom) {\n return {\n rowIndex: pinnedBottomRowCount - 1,\n rowPinned: 'bottom'\n };\n }\n return {\n rowIndex: this.rowModel.getRowCount() - 1,\n rowPinned: null\n };\n };\n RangeService.prototype.setRangeToCell = function (cell, appendRange) {\n if (appendRange === void 0) { appendRange = false; }\n if (!this.gridOptionsService.isEnableRangeSelection()) {\n return;\n }\n var columns = this.calculateColumnsBetween(cell.column, cell.column);\n if (!columns) {\n return;\n }\n var suppressMultiRangeSelections = this.gridOptionsService.is('suppressMultiRangeSelection');\n // if not appending, then clear previous range selections\n if (suppressMultiRangeSelections || !appendRange || _.missing(this.cellRanges)) {\n this.removeAllCellRanges(true);\n }\n var rowForCell = {\n rowIndex: cell.rowIndex,\n rowPinned: cell.rowPinned\n };\n var cellRange = {\n startRow: rowForCell,\n endRow: rowForCell,\n columns: columns,\n startColumn: cell.column\n };\n this.cellRanges.push(cellRange);\n this.setNewestRangeStartCell(cell);\n this.onDragStop();\n this.dispatchChangedEvent(true, true);\n };\n RangeService.prototype.extendLatestRangeToCell = function (cellPosition) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n var cellRange = _.last(this.cellRanges);\n this.updateRangeEnd(cellRange, cellPosition);\n };\n RangeService.prototype.updateRangeEnd = function (cellRange, cellPosition, silent) {\n if (silent === void 0) { silent = false; }\n var endColumn = cellPosition.column;\n var colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\n if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {\n return;\n }\n cellRange.columns = colsToAdd;\n cellRange.endRow = { rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned };\n if (!silent) {\n this.dispatchChangedEvent(true, true, cellRange.id);\n }\n };\n RangeService.prototype.refreshRangeStart = function (cellRange) {\n var startColumn = cellRange.startColumn, columns = cellRange.columns;\n var moveColInCellRange = function (colToMove, moveToFront) {\n var otherCols = cellRange.columns.filter(function (col) { return col !== colToMove; });\n if (colToMove) {\n cellRange.startColumn = colToMove;\n cellRange.columns = moveToFront ? __spread$6([colToMove], otherCols) : __spread$6(otherCols, [colToMove]);\n }\n else {\n cellRange.columns = otherCols;\n }\n };\n var _a = this.getRangeEdgeColumns(cellRange), left = _a.left, right = _a.right;\n var shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\n if (shouldMoveLeftCol) {\n moveColInCellRange(left, true);\n return;\n }\n var shouldMoveRightCol = startColumn === _.last(columns) && startColumn === right;\n if (shouldMoveRightCol) {\n moveColInCellRange(right, false);\n return;\n }\n };\n RangeService.prototype.getRangeEdgeColumns = function (cellRange) {\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var allIndices = cellRange.columns\n .map(function (c) { return allColumns.indexOf(c); })\n .filter(function (i) { return i > -1; })\n .sort(function (a, b) { return a - b; });\n return {\n left: allColumns[allIndices[0]],\n right: allColumns[_.last(allIndices)]\n };\n };\n // returns true if successful, false if not successful\n RangeService.prototype.extendLatestRangeInDirection = function (event) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n var key = event.key;\n var ctrlKey = event.ctrlKey || event.metaKey;\n var lastRange = _.last(this.cellRanges);\n var startCell = this.newestRangeStartCell;\n var firstCol = lastRange.columns[0];\n var lastCol = _.last(lastRange.columns);\n // find the cell that is at the furthest away corner from the starting cell\n var endCellIndex = lastRange.endRow.rowIndex;\n var endCellFloating = lastRange.endRow.rowPinned;\n var endCellColumn = startCell.column === firstCol ? lastCol : firstCol;\n var endCell = { column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating };\n var newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell, ctrlKey);\n // if user is at end of grid, so no cell to extend to, we return false\n if (!newEndCell) {\n return;\n }\n this.setCellRange({\n rowStartIndex: startCell.rowIndex,\n rowStartPinned: startCell.rowPinned,\n rowEndIndex: newEndCell.rowIndex,\n rowEndPinned: newEndCell.rowPinned,\n columnStart: startCell.column,\n columnEnd: newEndCell.column\n });\n return newEndCell;\n };\n RangeService.prototype.setCellRange = function (params) {\n if (!this.gridOptionsService.isEnableRangeSelection()) {\n return;\n }\n this.removeAllCellRanges(true);\n this.addCellRange(params);\n };\n RangeService.prototype.setCellRanges = function (cellRanges) {\n var _this = this;\n if (_.shallowCompare(this.cellRanges, cellRanges)) {\n return;\n }\n this.removeAllCellRanges(true);\n cellRanges.forEach(function (newRange) {\n if (newRange.columns && newRange.startRow) {\n _this.setNewestRangeStartCell({\n rowIndex: newRange.startRow.rowIndex,\n rowPinned: newRange.startRow.rowPinned,\n column: newRange.columns[0]\n });\n }\n _this.cellRanges.push(newRange);\n });\n this.dispatchChangedEvent(false, true);\n };\n RangeService.prototype.setNewestRangeStartCell = function (position) {\n this.newestRangeStartCell = position;\n };\n RangeService.prototype.clearCellRangeCellValues = function (cellRanges, source) {\n var _this = this;\n if (source === void 0) { source = 'rangeService'; }\n if (!cellRanges) {\n cellRanges = this.cellRanges;\n }\n cellRanges.forEach(function (cellRange) {\n _this.forEachRowInRange(cellRange, function (rowPosition) {\n var rowNode = _this.rowPositionUtils.getRowNode(rowPosition);\n if (!rowNode) {\n return;\n }\n for (var i = 0; i < cellRange.columns.length; i++) {\n var column = _this.columnModel.getGridColumn(cellRange.columns[i]);\n if (!column || !column.isCellEditable(rowNode)) {\n return;\n }\n rowNode.setDataValue(column, null, source);\n }\n });\n });\n };\n RangeService.prototype.createCellRangeFromCellRangeParams = function (params) {\n var _this = this;\n var columns;\n var startsOnTheRight = false;\n if (params.columns) {\n columns = params.columns.map(function (c) { return _this.columnModel.getColumnWithValidation(c); }).filter(function (c) { return c; });\n }\n else {\n var columnStart = this.columnModel.getColumnWithValidation(params.columnStart);\n var columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);\n if (!columnStart || !columnEnd) {\n return;\n }\n columns = this.calculateColumnsBetween(columnStart, columnEnd);\n if (columns && columns.length) {\n startsOnTheRight = columns[0] !== columnStart;\n }\n }\n if (!columns) {\n return;\n }\n var startRow = params.rowStartIndex != null ? {\n rowIndex: params.rowStartIndex,\n rowPinned: params.rowStartPinned || null\n } : undefined;\n var endRow = params.rowEndIndex != null ? {\n rowIndex: params.rowEndIndex,\n rowPinned: params.rowEndPinned || null\n } : undefined;\n return {\n startRow: startRow,\n endRow: endRow,\n columns: columns,\n startColumn: startsOnTheRight ? _.last(columns) : columns[0]\n };\n };\n RangeService.prototype.addCellRange = function (params) {\n if (!this.gridOptionsService.isEnableRangeSelection()) {\n return;\n }\n var newRange = this.createCellRangeFromCellRangeParams(params);\n if (newRange) {\n if (newRange.startRow) {\n this.setNewestRangeStartCell({\n rowIndex: newRange.startRow.rowIndex,\n rowPinned: newRange.startRow.rowPinned,\n column: newRange.startColumn\n });\n }\n this.cellRanges.push(newRange);\n this.dispatchChangedEvent(false, true, newRange.id);\n }\n };\n RangeService.prototype.getCellRanges = function () {\n return this.cellRanges;\n };\n RangeService.prototype.isEmpty = function () {\n return this.cellRanges.length === 0;\n };\n RangeService.prototype.isMoreThanOneCell = function () {\n var len = this.cellRanges.length;\n if (len === 0) {\n return false;\n }\n if (len > 1) {\n return true; // Assumes a cell range must contain at least one cell\n }\n // only one range, return true if range has more than one\n var range = this.cellRanges[0];\n var startRow = this.getRangeStartRow(range);\n var endRow = this.getRangeEndRow(range);\n return startRow.rowPinned !== endRow.rowPinned ||\n startRow.rowIndex !== endRow.rowIndex ||\n range.columns.length !== 1;\n };\n RangeService.prototype.areAllRangesAbleToMerge = function () {\n var e_1, _a;\n var _this = this;\n var rowToColumnMap = new Map();\n var len = this.cellRanges.length;\n if (len <= 1)\n return true;\n this.cellRanges.forEach(function (range) {\n _this.forEachRowInRange(range, function (row) {\n var rowName = (row.rowPinned || 'normal') + \"_\" + row.rowIndex;\n var columns = rowToColumnMap.get(rowName);\n var currentRangeColIds = range.columns.map(function (col) { return col.getId(); });\n if (columns) {\n var filteredColumns = currentRangeColIds.filter(function (col) { return columns.indexOf(col) === -1; });\n columns.push.apply(columns, __spread$6(filteredColumns));\n }\n else {\n rowToColumnMap.set(rowName, currentRangeColIds);\n }\n });\n });\n var columnsString;\n try {\n for (var _b = __values$3(rowToColumnMap.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var val = _c.value;\n var currentValString = val.sort().join();\n if (columnsString === undefined) {\n columnsString = currentValString;\n continue;\n }\n if (columnsString !== currentValString) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n RangeService.prototype.forEachRowInRange = function (cellRange, callback) {\n var topRow = this.getRangeStartRow(cellRange);\n var bottomRow = this.getRangeEndRow(cellRange);\n var currentRow = topRow;\n while (currentRow) {\n callback(currentRow);\n if (this.rowPositionUtils.sameRow(currentRow, bottomRow)) {\n break;\n }\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\n }\n };\n RangeService.prototype.removeAllCellRanges = function (silent) {\n if (this.isEmpty()) {\n return;\n }\n this.onDragStop();\n this.cellRanges.length = 0;\n if (!silent) {\n this.dispatchChangedEvent(false, true);\n }\n };\n // as the user is dragging outside of the panel, the div starts to scroll, which in turn\n // means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\n // the selection my mimicking a new mouse event\n RangeService.prototype.onBodyScroll = function () {\n if (this.dragging && this.lastMouseEvent) {\n this.onDragging(this.lastMouseEvent);\n }\n };\n RangeService.prototype.isCellInAnyRange = function (cell) {\n return this.getCellRangeCount(cell) > 0;\n };\n RangeService.prototype.isCellInSpecificRange = function (cell, range) {\n var columnInRange = range.columns !== null && _.includes(range.columns, cell.column);\n var rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\n return columnInRange && rowInRange;\n };\n RangeService.prototype.isLastCellOfRange = function (cellRange, cell) {\n var startRow = cellRange.startRow, endRow = cellRange.endRow;\n var lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n var isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\n var rangeFirstIndexColumn = cellRange.columns[0];\n var rangeLastIndexColumn = _.last(cellRange.columns);\n var lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;\n var isLastColumn = cell.column === lastRangeColumn;\n return isLastColumn && isLastRow;\n };\n RangeService.prototype.isBottomRightCell = function (cellRange, cell) {\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var allPositions = cellRange.columns.map(function (c) { return allColumns.indexOf(c); }).sort(function (a, b) { return a - b; });\n var startRow = cellRange.startRow, endRow = cellRange.endRow;\n var lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n var isRightColumn = allColumns.indexOf(cell.column) === _.last(allPositions);\n var isLastRow = cell.rowIndex === lastRow.rowIndex && _.makeNull(cell.rowPinned) === _.makeNull(lastRow.rowPinned);\n return isRightColumn && isLastRow;\n };\n // returns the number of ranges this cell is in\n RangeService.prototype.getCellRangeCount = function (cell) {\n var _this = this;\n if (this.isEmpty()) {\n return 0;\n }\n return this.cellRanges.filter(function (cellRange) { return _this.isCellInSpecificRange(cell, cellRange); }).length;\n };\n RangeService.prototype.isRowInRange = function (rowIndex, floating, cellRange) {\n var firstRow = this.getRangeStartRow(cellRange);\n var lastRow = this.getRangeEndRow(cellRange);\n var thisRow = { rowIndex: rowIndex, rowPinned: floating || null };\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\n var equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\n var equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\n if (equalsFirstRow || equalsLastRow) {\n return true;\n }\n var afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);\n var beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);\n return afterFirstRow && beforeLastRow;\n };\n RangeService.prototype.getDraggingRange = function () {\n return this.draggingRange;\n };\n RangeService.prototype.onDragStart = function (mouseEvent) {\n if (!this.gridOptionsService.isEnableRangeSelection()) {\n return;\n }\n var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;\n // ctrlKey for windows, metaKey for Apple\n var multiKeyPressed = ctrlKey || metaKey;\n var allowMulti = !this.gridOptionsService.is('suppressMultiRangeSelection');\n var multiSelectKeyPressed = allowMulti ? multiKeyPressed : false;\n var extendRange = shiftKey && _.existsAndNotEmpty(this.cellRanges);\n if (!multiSelectKeyPressed && (!extendRange || _.exists(_.last(this.cellRanges).type))) {\n this.removeAllCellRanges(true);\n }\n // The browser changes the Event target of cached events when working with the ShadowDOM\n // so we need to retrieve the initial DragStartTarget.\n var startTarget = this.dragService.getStartTarget();\n if (startTarget) {\n this.updateValuesOnMove(startTarget);\n }\n if (!this.lastCellHovered) {\n return;\n }\n this.dragging = true;\n this.lastMouseEvent = mouseEvent;\n this.intersectionRange = multiSelectKeyPressed && this.getCellRangeCount(this.lastCellHovered) > 1;\n if (!extendRange) {\n this.setNewestRangeStartCell(this.lastCellHovered);\n }\n // if we didn't clear the ranges, then dragging means the user clicked, and when the\n // user clicks it means a range of one cell was created. we need to extend this range\n // rather than creating another range. otherwise we end up with two distinct ranges\n // from a drag operation (one from click, and one from drag).\n if (this.cellRanges.length > 0) {\n this.draggingRange = _.last(this.cellRanges);\n }\n else {\n var mouseRowPosition = {\n rowIndex: this.lastCellHovered.rowIndex,\n rowPinned: this.lastCellHovered.rowPinned\n };\n this.draggingRange = {\n startRow: mouseRowPosition,\n endRow: mouseRowPosition,\n columns: [this.lastCellHovered.column],\n startColumn: this.newestRangeStartCell.column\n };\n this.cellRanges.push(this.draggingRange);\n }\n this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);\n this.dispatchChangedEvent(true, false, this.draggingRange.id);\n };\n RangeService.prototype.intersectLastRange = function (fromMouseClick) {\n var _this = this;\n // when ranges are created due to a mouse click without drag (happens in cellMouseListener)\n // this method will be called with `fromMouseClick=true`.\n if (fromMouseClick && this.dragging) {\n return;\n }\n if (this.gridOptionsService.is('suppressMultiRangeSelection')) {\n return;\n }\n if (this.isEmpty()) {\n return;\n }\n var lastRange = _.last(this.cellRanges);\n var intersectionStartRow = this.getRangeStartRow(lastRange);\n var intersectionEndRow = this.getRangeEndRow(lastRange);\n var newRanges = [];\n this.cellRanges.slice(0, -1).forEach(function (range) {\n var startRow = _this.getRangeStartRow(range);\n var endRow = _this.getRangeEndRow(range);\n var cols = range.columns;\n var intersectCols = cols.filter(function (col) { return lastRange.columns.indexOf(col) === -1; });\n if (intersectCols.length === cols.length) {\n // No overlapping columns, retain previous range\n newRanges.push(range);\n return;\n }\n if (_this.rowPositionUtils.before(intersectionEndRow, startRow) || _this.rowPositionUtils.before(endRow, intersectionStartRow)) {\n // No overlapping rows, retain previous range\n newRanges.push(range);\n return;\n }\n var rangeCountBefore = newRanges.length;\n // Top\n if (_this.rowPositionUtils.before(startRow, intersectionStartRow)) {\n var top_1 = {\n columns: __spread$6(cols),\n startColumn: lastRange.startColumn,\n startRow: __assign$9({}, startRow),\n endRow: _this.cellNavigationService.getRowAbove(intersectionStartRow),\n };\n newRanges.push(top_1);\n }\n // Left & Right (not contiguous with columns)\n if (intersectCols.length > 0) {\n var middle = {\n columns: intersectCols,\n startColumn: _.includes(intersectCols, lastRange.startColumn) ? lastRange.startColumn : intersectCols[0],\n startRow: _this.rowPositionUtils.rowMax([__assign$9({}, intersectionStartRow), __assign$9({}, startRow)]),\n endRow: _this.rowPositionUtils.rowMin([__assign$9({}, intersectionEndRow), __assign$9({}, endRow)]),\n };\n newRanges.push(middle);\n }\n // Bottom\n if (_this.rowPositionUtils.before(intersectionEndRow, endRow)) {\n newRanges.push({\n columns: __spread$6(cols),\n startColumn: lastRange.startColumn,\n startRow: _this.cellNavigationService.getRowBelow(intersectionEndRow),\n endRow: __assign$9({}, endRow),\n });\n }\n if ((newRanges.length - rangeCountBefore) === 1) {\n // Only one range result from the intersection.\n // Copy the source range's id, since essentially we just reduced it's size\n newRanges[newRanges.length - 1].id = range.id;\n }\n });\n this.cellRanges = newRanges;\n // when this is called because of a clickEvent and the ranges were changed\n // we need to force a dragEnd event to update the UI.\n if (fromMouseClick) {\n this.dispatchChangedEvent(false, true);\n }\n };\n RangeService.prototype.updateValuesOnMove = function (eventTarget) {\n var cellCtrl = _.getCtrlForEventTarget(this.gridOptionsService, eventTarget, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n var cell = cellCtrl === null || cellCtrl === void 0 ? void 0 : cellCtrl.getCellPosition();\n this.cellHasChanged = false;\n if (!cell || (this.lastCellHovered && this.cellPositionUtils.equals(cell, this.lastCellHovered))) {\n return;\n }\n if (this.lastCellHovered) {\n this.cellHasChanged = true;\n }\n this.lastCellHovered = cell;\n };\n RangeService.prototype.onDragging = function (mouseEvent) {\n var _this = this;\n if (!this.dragging || !mouseEvent) {\n return;\n }\n this.updateValuesOnMove(mouseEvent.target);\n this.lastMouseEvent = mouseEvent;\n var cellPosition = this.lastCellHovered;\n var isMouseAndStartInPinned = function (position) {\n return cellPosition && cellPosition.rowPinned === position && _this.newestRangeStartCell.rowPinned === position;\n };\n var skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\n this.autoScrollService.check(mouseEvent, skipVerticalScroll);\n if (!this.cellHasChanged) {\n return;\n }\n var columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);\n if (!columns) {\n return;\n }\n this.draggingRange.endRow = {\n rowIndex: cellPosition.rowIndex,\n rowPinned: cellPosition.rowPinned\n };\n this.draggingRange.columns = columns;\n this.dispatchChangedEvent(false, false, this.draggingRange.id);\n };\n RangeService.prototype.onDragStop = function () {\n if (!this.dragging) {\n return;\n }\n var id = this.draggingRange.id;\n this.autoScrollService.ensureCleared();\n this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);\n this.lastMouseEvent = null;\n this.dragging = false;\n this.draggingRange = undefined;\n this.lastCellHovered = undefined;\n if (this.intersectionRange) {\n this.intersectionRange = false;\n this.intersectLastRange();\n }\n this.dispatchChangedEvent(false, true, id);\n };\n RangeService.prototype.dispatchChangedEvent = function (started, finished, id) {\n var event = {\n type: Events.EVENT_RANGE_SELECTION_CHANGED,\n started: started,\n finished: finished,\n id: id,\n };\n this.eventService.dispatchEvent(event);\n };\n RangeService.prototype.calculateColumnsBetween = function (columnFrom, columnTo) {\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var isSameColumn = columnFrom === columnTo;\n var fromIndex = allColumns.indexOf(columnFrom);\n if (fromIndex < 0) {\n console.warn(\"AG Grid: column \" + columnFrom.getId() + \" is not visible\");\n return;\n }\n var toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);\n if (toIndex < 0) {\n console.warn(\"AG Grid: column \" + columnTo.getId() + \" is not visible\");\n return;\n }\n if (isSameColumn) {\n return [columnFrom];\n }\n var firstIndex = Math.min(fromIndex, toIndex);\n var lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\n var columns = [];\n for (var i = firstIndex; i <= lastIndex; i++) {\n columns.push(allColumns[i]);\n }\n return columns;\n };\n __decorate$J([\n Autowired('rowModel')\n ], RangeService.prototype, \"rowModel\", void 0);\n __decorate$J([\n Autowired('dragService')\n ], RangeService.prototype, \"dragService\", void 0);\n __decorate$J([\n Autowired('columnModel')\n ], RangeService.prototype, \"columnModel\", void 0);\n __decorate$J([\n Autowired('cellNavigationService')\n ], RangeService.prototype, \"cellNavigationService\", void 0);\n __decorate$J([\n Autowired(\"pinnedRowModel\")\n ], RangeService.prototype, \"pinnedRowModel\", void 0);\n __decorate$J([\n Autowired('rowPositionUtils')\n ], RangeService.prototype, \"rowPositionUtils\", void 0);\n __decorate$J([\n Autowired('cellPositionUtils')\n ], RangeService.prototype, \"cellPositionUtils\", void 0);\n __decorate$J([\n Autowired('ctrlsService')\n ], RangeService.prototype, \"ctrlsService\", void 0);\n __decorate$J([\n PostConstruct\n ], RangeService.prototype, \"init\", null);\n RangeService = __decorate$J([\n Bean('rangeService')\n ], RangeService);\n return RangeService;\n}(BeanStub));\n\nvar __extends$M = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AbstractSelectionHandle = /** @class */ (function (_super) {\n __extends$M(AbstractSelectionHandle, _super);\n function AbstractSelectionHandle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.changedCalculatedValues = false;\n _this.dragging = false;\n _this.shouldDestroyOnEndDragging = false;\n return _this;\n }\n AbstractSelectionHandle.prototype.init = function () {\n var _this = this;\n this.dragService.addDragSource({\n dragStartPixels: 0,\n eElement: this.getGui(),\n onDragStart: this.onDragStart.bind(this),\n onDragging: function (e) {\n _this.dragging = true;\n _this.rangeService.autoScrollService.check(e);\n if (_this.changedCalculatedValues) {\n _this.onDrag(e);\n _this.changedCalculatedValues = false;\n }\n },\n onDragStop: function (e) {\n _this.dragging = false;\n _this.onDragEnd(e);\n _this.clearValues();\n _this.rangeService.autoScrollService.ensureCleared();\n // TODO: this causes a bug where if there are multiple grids in the same page, all of them will\n // be affected by a drag on any. Move it to the root element.\n document.body.classList.remove(_this.getDraggingCssClass());\n if (_this.shouldDestroyOnEndDragging) {\n _this.destroy();\n }\n }\n });\n this.addManagedListener(this.getGui(), 'mousedown', this.preventRangeExtension.bind(this));\n };\n AbstractSelectionHandle.prototype.isDragging = function () {\n return this.dragging;\n };\n AbstractSelectionHandle.prototype.getCellCtrl = function () {\n return this.cellCtrl;\n };\n AbstractSelectionHandle.prototype.setCellCtrl = function (cellComp) {\n this.cellCtrl = cellComp;\n };\n AbstractSelectionHandle.prototype.getCellRange = function () {\n return this.cellRange;\n };\n AbstractSelectionHandle.prototype.setCellRange = function (range) {\n this.cellRange = range;\n };\n AbstractSelectionHandle.prototype.getRangeStartRow = function () {\n return this.rangeStartRow;\n };\n AbstractSelectionHandle.prototype.setRangeStartRow = function (row) {\n this.rangeStartRow = row;\n };\n AbstractSelectionHandle.prototype.getRangeEndRow = function () {\n return this.rangeEndRow;\n };\n AbstractSelectionHandle.prototype.setRangeEndRow = function (row) {\n this.rangeEndRow = row;\n };\n AbstractSelectionHandle.prototype.getLastCellHovered = function () {\n return this.lastCellHovered;\n };\n AbstractSelectionHandle.prototype.preventRangeExtension = function (e) {\n e.stopPropagation();\n };\n AbstractSelectionHandle.prototype.onDragStart = function (e) {\n this.cellHoverListener = this.addManagedListener(this.ctrlsService.getGridCtrl().getGui(), 'mousemove', this.updateValuesOnMove.bind(this));\n document.body.classList.add(this.getDraggingCssClass());\n };\n AbstractSelectionHandle.prototype.getDraggingCssClass = function () {\n return \"ag-dragging-\" + (this.type === SelectionHandleType.FILL ? 'fill' : 'range') + \"-handle\";\n };\n AbstractSelectionHandle.prototype.updateValuesOnMove = function (e) {\n var cell = this.mouseEventService.getCellPositionForEvent(e);\n if (!cell || (this.lastCellHovered && this.cellPositionUtils.equals(cell, this.lastCellHovered))) {\n return;\n }\n this.lastCellHovered = cell;\n this.changedCalculatedValues = true;\n };\n AbstractSelectionHandle.prototype.getType = function () {\n return this.type;\n };\n AbstractSelectionHandle.prototype.refresh = function (cellCtrl) {\n var oldCellComp = this.getCellCtrl();\n var eGui = this.getGui();\n var cellRange = _.last(this.rangeService.getCellRanges());\n var start = cellRange.startRow;\n var end = cellRange.endRow;\n if (start && end) {\n var isBefore = this.rowPositionUtils.before(end, start);\n if (isBefore) {\n this.setRangeStartRow(end);\n this.setRangeEndRow(start);\n }\n else {\n this.setRangeStartRow(start);\n this.setRangeEndRow(end);\n }\n }\n if (oldCellComp !== cellCtrl || !_.isVisible(eGui)) {\n this.setCellCtrl(cellCtrl);\n var eParentOfValue = cellCtrl.getComp().getParentOfValue();\n if (eParentOfValue) {\n eParentOfValue.appendChild(eGui);\n }\n }\n this.setCellRange(cellRange);\n };\n AbstractSelectionHandle.prototype.clearValues = function () {\n this.lastCellHovered = undefined;\n this.removeListeners();\n };\n AbstractSelectionHandle.prototype.removeListeners = function () {\n if (this.cellHoverListener) {\n this.cellHoverListener();\n this.cellHoverListener = undefined;\n }\n };\n AbstractSelectionHandle.prototype.destroy = function () {\n if (!this.shouldDestroyOnEndDragging && this.isDragging()) {\n _.setDisplayed(this.getGui(), false);\n this.shouldDestroyOnEndDragging = true;\n return;\n }\n this.shouldDestroyOnEndDragging = false;\n _super.prototype.destroy.call(this);\n this.removeListeners();\n var eGui = this.getGui();\n if (eGui.parentElement) {\n eGui.parentElement.removeChild(eGui);\n }\n };\n __decorate$I([\n Autowired(\"rowRenderer\")\n ], AbstractSelectionHandle.prototype, \"rowRenderer\", void 0);\n __decorate$I([\n Autowired(\"dragService\")\n ], AbstractSelectionHandle.prototype, \"dragService\", void 0);\n __decorate$I([\n Autowired(\"rangeService\")\n ], AbstractSelectionHandle.prototype, \"rangeService\", void 0);\n __decorate$I([\n Autowired(\"mouseEventService\")\n ], AbstractSelectionHandle.prototype, \"mouseEventService\", void 0);\n __decorate$I([\n Autowired(\"columnModel\")\n ], AbstractSelectionHandle.prototype, \"columnModel\", void 0);\n __decorate$I([\n Autowired(\"cellNavigationService\")\n ], AbstractSelectionHandle.prototype, \"cellNavigationService\", void 0);\n __decorate$I([\n Autowired(\"navigationService\")\n ], AbstractSelectionHandle.prototype, \"navigationService\", void 0);\n __decorate$I([\n Autowired('rowPositionUtils')\n ], AbstractSelectionHandle.prototype, \"rowPositionUtils\", void 0);\n __decorate$I([\n Autowired('cellPositionUtils')\n ], AbstractSelectionHandle.prototype, \"cellPositionUtils\", void 0);\n __decorate$I([\n Autowired('ctrlsService')\n ], AbstractSelectionHandle.prototype, \"ctrlsService\", void 0);\n __decorate$I([\n PostConstruct\n ], AbstractSelectionHandle.prototype, \"init\", null);\n return AbstractSelectionHandle;\n}(Component));\n\nfunction findLineByLeastSquares(values) {\n var len = values.length;\n var maxDecimals = 0;\n if (len <= 1) {\n return values;\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var splitExponent = value.toString().split('e-');\n if (splitExponent.length > 1) {\n maxDecimals = Math.max(maxDecimals, parseInt(splitExponent[1], 10));\n continue;\n }\n if (Math.floor(value) === value) {\n continue;\n }\n maxDecimals = Math.max(maxDecimals, value.toString().split('.')[1].length);\n }\n var sum_x = 0;\n var sum_y = 0;\n var sum_xy = 0;\n var sum_xx = 0;\n var y = 0;\n for (var x = 0; x < len; x++) {\n y = values[x];\n sum_x += x;\n sum_y += y;\n sum_xx += x * x;\n sum_xy += x * y;\n }\n var m = (len * sum_xy - sum_x * sum_y) / (len * sum_xx - sum_x * sum_x);\n var b = (sum_y / len) - (m * sum_x) / len;\n var result = [];\n for (var x = 0; x <= len; x++) {\n result.push(parseFloat((x * m + b).toFixed(maxDecimals)));\n }\n return result;\n}\n\nvar __extends$L = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$8 = (undefined && undefined.__assign) || function () {\n __assign$8 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$8.apply(this, arguments);\n};\nvar __decorate$H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$b = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$5 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$b(arguments[i]));\n return ar;\n};\nvar FillHandle = /** @class */ (function (_super) {\n __extends$L(FillHandle, _super);\n function FillHandle() {\n var _this = _super.call(this, FillHandle.TEMPLATE) || this;\n _this.markedCells = [];\n _this.cellValues = [];\n _this.isUp = false;\n _this.isLeft = false;\n _this.isReduce = false;\n _this.type = SelectionHandleType.FILL;\n return _this;\n }\n FillHandle.prototype.updateValuesOnMove = function (e) {\n _super.prototype.updateValuesOnMove.call(this, e);\n if (!this.initialXY) {\n this.initialXY = this.mouseEventService.getNormalisedPosition(e);\n }\n var _a = this.initialXY, x = _a.x, y = _a.y;\n var _b = this.mouseEventService.getNormalisedPosition(e), newX = _b.x, newY = _b.y;\n var diffX = Math.abs(x - newX);\n var diffY = Math.abs(y - newY);\n var allowedDirection = this.getFillHandleDirection();\n var direction;\n if (allowedDirection === 'xy') {\n direction = diffX > diffY ? 'x' : 'y';\n }\n else {\n direction = allowedDirection;\n }\n if (direction !== this.dragAxis) {\n this.dragAxis = direction;\n this.changedCalculatedValues = true;\n }\n };\n FillHandle.prototype.onDrag = function (e) {\n if (!this.initialPosition) {\n var cellCtrl = this.getCellCtrl();\n if (!cellCtrl) {\n return;\n }\n this.initialPosition = cellCtrl.getCellPosition();\n }\n var lastCellHovered = this.getLastCellHovered();\n if (lastCellHovered) {\n this.markPathFrom(this.initialPosition, lastCellHovered);\n }\n };\n FillHandle.prototype.onDragEnd = function (e) {\n this.initialXY = null;\n if (!this.markedCells.length) {\n return;\n }\n var isX = this.dragAxis === 'x';\n var initialRange = this.getCellRange();\n var colLen = initialRange.columns.length;\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n var finalRange;\n if (!this.isUp && !this.isLeft) {\n finalRange = this.rangeService.createCellRangeFromCellRangeParams({\n rowStartIndex: rangeStartRow.rowIndex,\n rowStartPinned: rangeStartRow.rowPinned,\n columnStart: initialRange.columns[0],\n rowEndIndex: isX ? rangeEndRow.rowIndex : this.lastCellMarked.rowIndex,\n rowEndPinned: isX ? rangeEndRow.rowPinned : this.lastCellMarked.rowPinned,\n columnEnd: isX ? this.lastCellMarked.column : initialRange.columns[colLen - 1]\n });\n }\n else {\n var startRow = isX ? rangeStartRow : this.lastCellMarked;\n finalRange = this.rangeService.createCellRangeFromCellRangeParams({\n rowStartIndex: startRow.rowIndex,\n rowStartPinned: startRow.rowPinned,\n columnStart: isX ? this.lastCellMarked.column : initialRange.columns[0],\n rowEndIndex: rangeEndRow.rowIndex,\n rowEndPinned: rangeEndRow.rowPinned,\n columnEnd: initialRange.columns[colLen - 1]\n });\n }\n if (finalRange) {\n // raising fill events for undo / redo\n this.raiseFillStartEvent();\n this.handleValueChanged(initialRange, finalRange, e);\n this.rangeService.setCellRanges([finalRange]);\n this.raiseFillEndEvent(initialRange, finalRange);\n }\n };\n FillHandle.prototype.getFillHandleDirection = function () {\n var direction = this.gridOptionsService.get('fillHandleDirection');\n if (!direction) {\n return 'xy';\n }\n if (direction !== 'x' && direction !== 'y' && direction !== 'xy') {\n _.doOnce(function () { return console.warn(\"AG Grid: valid values for fillHandleDirection are 'x', 'y' and 'xy'. Default to 'xy'.\"); }, 'warn invalid fill direction');\n return 'xy';\n }\n return direction;\n };\n FillHandle.prototype.raiseFillStartEvent = function () {\n var fillStartEvent = {\n type: Events.EVENT_FILL_START\n };\n this.eventService.dispatchEvent(fillStartEvent);\n };\n FillHandle.prototype.raiseFillEndEvent = function (initialRange, finalRange) {\n var fillEndEvent = {\n type: Events.EVENT_FILL_END,\n initialRange: initialRange,\n finalRange: finalRange\n };\n this.eventService.dispatchEvent(fillEndEvent);\n };\n FillHandle.prototype.handleValueChanged = function (initialRange, finalRange, e) {\n var _this = this;\n var initialRangeEndRow = this.rangeService.getRangeEndRow(initialRange);\n var initialRangeStartRow = this.rangeService.getRangeStartRow(initialRange);\n var finalRangeEndRow = this.rangeService.getRangeEndRow(finalRange);\n var finalRangeStartRow = this.rangeService.getRangeStartRow(finalRange);\n var isVertical = this.dragAxis === 'y';\n // if the range is being reduced in size, all we need to do is\n // clear the cells that are no longer part of the range\n if (this.isReduce && !this.gridOptionsService.is('suppressClearOnFillReduction')) {\n var columns = isVertical\n ? initialRange.columns\n : initialRange.columns.filter(function (col) { return finalRange.columns.indexOf(col) < 0; });\n var startRow = isVertical ? this.cellNavigationService.getRowBelow(finalRangeEndRow) : finalRangeStartRow;\n if (startRow) {\n this.clearCellsInRange(startRow, initialRangeEndRow, columns);\n }\n return;\n }\n var withinInitialRange = true;\n var values = [];\n var initialValues = [];\n var idx = 0;\n var resetValues = function () {\n values.length = 0;\n initialValues.length = 0;\n idx = 0;\n };\n var iterateAcrossCells = function (column, columns) {\n var currentRow = _this.isUp ? initialRangeEndRow : initialRangeStartRow;\n var finished = false;\n if (isVertical) {\n withinInitialRange = true;\n resetValues();\n }\n var _loop_1 = function () {\n var rowNode = _this.rowPositionUtils.getRowNode(currentRow);\n if (!rowNode) {\n return \"break\";\n }\n if (isVertical && column) {\n fillValues(values, column, rowNode, function () {\n return !_this.rowPositionUtils.sameRow(currentRow, _this.isUp ? initialRangeStartRow : initialRangeEndRow);\n });\n }\n else if (columns) {\n withinInitialRange = true;\n resetValues();\n columns.forEach(function (col) { return fillValues(values, col, rowNode, function () { return col !== (_this.isLeft ? initialRange.columns[0] : _.last(initialRange.columns)); }); });\n }\n finished = _this.rowPositionUtils.sameRow(currentRow, _this.isUp ? finalRangeStartRow : finalRangeEndRow);\n currentRow = _this.isUp\n ? _this.cellNavigationService.getRowAbove(currentRow)\n : _this.cellNavigationService.getRowBelow(currentRow);\n };\n while (!finished && currentRow) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n };\n var fillValues = function (currentValues, col, rowNode, updateInitialSet) {\n var currentValue;\n var skipValue = false;\n if (withinInitialRange) {\n currentValue = _this.valueService.getValue(col, rowNode);\n initialValues.push(currentValue);\n withinInitialRange = updateInitialSet();\n }\n else {\n var _a = _this.processValues(e, currentValues, initialValues, col, rowNode, idx++), value = _a.value, fromUserFunction = _a.fromUserFunction;\n currentValue = value;\n if (col.isCellEditable(rowNode)) {\n var cellValue = _this.valueService.getValue(col, rowNode);\n if (!fromUserFunction || cellValue !== currentValue) {\n rowNode.setDataValue(col, currentValue, 'rangeService');\n }\n else {\n skipValue = true;\n }\n }\n }\n if (!skipValue) {\n currentValues.push(currentValue);\n }\n };\n if (isVertical) {\n initialRange.columns.forEach(function (col) {\n iterateAcrossCells(col);\n });\n }\n else {\n var columns = this.isLeft ? __spread$5(finalRange.columns).reverse() : finalRange.columns;\n iterateAcrossCells(undefined, columns);\n }\n };\n FillHandle.prototype.clearCellsInRange = function (startRow, endRow, columns) {\n var cellRange = {\n startRow: startRow,\n endRow: endRow,\n columns: columns,\n startColumn: columns[0]\n };\n this.rangeService.clearCellRangeCellValues([cellRange]);\n };\n FillHandle.prototype.processValues = function (event, values, initialValues, col, rowNode, idx) {\n var userFillOperation = this.gridOptionsService.getCallback('fillOperation');\n var isVertical = this.dragAxis === 'y';\n var direction;\n if (isVertical) {\n direction = this.isUp ? 'up' : 'down';\n }\n else {\n direction = this.isLeft ? 'left' : 'right';\n }\n if (userFillOperation) {\n var params = {\n event: event,\n values: values,\n initialValues: initialValues,\n currentIndex: idx,\n currentCellValue: this.valueService.getValue(col, rowNode),\n direction: direction,\n column: col,\n rowNode: rowNode\n };\n var userResult = userFillOperation(params);\n if (userResult !== false) {\n return { value: userResult, fromUserFunction: true };\n }\n }\n var allNumbers = !values.some(function (val) {\n var asFloat = parseFloat(val);\n return isNaN(asFloat) || asFloat.toString() !== val.toString();\n });\n // values should be copied in order if the alt key is pressed\n // or if the values contain strings and numbers\n // However, if we only have one initial value selected, and that\n // value is a number and we are also pressing alt, then we should\n // increment or decrement the value by 1 based on direction.\n if (event.altKey || !allNumbers) {\n if (allNumbers && initialValues.length === 1) {\n var multiplier = (this.isUp || this.isLeft) ? -1 : 1;\n return { value: parseFloat(_.last(values)) + 1 * multiplier, fromUserFunction: false };\n }\n return { value: values[idx % values.length], fromUserFunction: false };\n }\n return { value: _.last(findLineByLeastSquares(values.map(Number))), fromUserFunction: false };\n };\n FillHandle.prototype.clearValues = function () {\n this.clearMarkedPath();\n this.clearCellValues();\n this.lastCellMarked = undefined;\n _super.prototype.clearValues.call(this);\n };\n FillHandle.prototype.clearMarkedPath = function () {\n this.markedCells.forEach(function (cell) {\n if (!cell.isAlive()) {\n return;\n }\n var comp = cell.getComp();\n comp.addOrRemoveCssClass('ag-selection-fill-top', false);\n comp.addOrRemoveCssClass('ag-selection-fill-right', false);\n comp.addOrRemoveCssClass('ag-selection-fill-bottom', false);\n comp.addOrRemoveCssClass('ag-selection-fill-left', false);\n });\n this.markedCells.length = 0;\n this.isUp = false;\n this.isLeft = false;\n this.isReduce = false;\n };\n FillHandle.prototype.clearCellValues = function () {\n this.cellValues.length = 0;\n };\n FillHandle.prototype.markPathFrom = function (initialPosition, currentPosition) {\n this.clearMarkedPath();\n this.clearCellValues();\n if (this.dragAxis === 'y') {\n if (this.rowPositionUtils.sameRow(currentPosition, initialPosition)) {\n return;\n }\n var isBefore = this.rowPositionUtils.before(currentPosition, initialPosition);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n if (isBefore && ((currentPosition.rowPinned == rangeStartRow.rowPinned &&\n currentPosition.rowIndex >= rangeStartRow.rowIndex) ||\n (rangeStartRow.rowPinned != rangeEndRow.rowPinned &&\n currentPosition.rowPinned == rangeEndRow.rowPinned &&\n currentPosition.rowIndex <= rangeEndRow.rowIndex))) {\n this.reduceVertical(initialPosition, currentPosition);\n this.isReduce = true;\n }\n else {\n this.extendVertical(initialPosition, currentPosition, isBefore);\n this.isReduce = false;\n }\n }\n else {\n var initialColumn = initialPosition.column;\n var currentColumn = currentPosition.column;\n if (initialColumn === currentColumn) {\n return;\n }\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var initialIndex = displayedColumns.indexOf(initialColumn);\n var currentIndex = displayedColumns.indexOf(currentColumn);\n if (currentIndex <= initialIndex && currentIndex >= displayedColumns.indexOf(this.getCellRange().columns[0])) {\n this.reduceHorizontal(initialPosition, currentPosition);\n this.isReduce = true;\n }\n else {\n this.extendHorizontal(initialPosition, currentPosition, currentIndex < initialIndex);\n this.isReduce = false;\n }\n }\n this.lastCellMarked = currentPosition;\n };\n FillHandle.prototype.extendVertical = function (initialPosition, endPosition, isMovingUp) {\n var _a = this, navigationService = _a.navigationService, rangeService = _a.rangeService;\n var row = initialPosition;\n do {\n var cellRange = this.getCellRange();\n var colLen = cellRange.columns.length;\n for (var i = 0; i < colLen; i++) {\n var column = cellRange.columns[i];\n var rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n var cellPos = __assign$8(__assign$8({}, rowPos), { column: column });\n var cellInRange = rangeService.isCellInSpecificRange(cellPos, cellRange);\n var isInitialRow = this.rowPositionUtils.sameRow(row, initialPosition);\n if (isMovingUp) {\n this.isUp = true;\n }\n if (!isInitialRow) {\n var cell = navigationService.getCellByPosition(cellPos);\n if (cell) {\n this.markedCells.push(cell);\n var cellCtrl = cell.getComp();\n if (!cellInRange) {\n cellCtrl.addOrRemoveCssClass('ag-selection-fill-left', i === 0);\n cellCtrl.addOrRemoveCssClass('ag-selection-fill-right', i === colLen - 1);\n }\n cellCtrl.addOrRemoveCssClass(isMovingUp ? 'ag-selection-fill-top' : 'ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n }\n }\n }\n if (this.rowPositionUtils.sameRow(row, endPosition)) {\n break;\n }\n } while (\n // tslint:disable-next-line\n row = isMovingUp\n ? this.cellNavigationService.getRowAbove(row)\n : this.cellNavigationService.getRowBelow(row));\n };\n FillHandle.prototype.reduceVertical = function (initialPosition, endPosition) {\n var row = initialPosition;\n do {\n var cellRange = this.getCellRange();\n var colLen = cellRange.columns.length;\n var isLastRow = this.rowPositionUtils.sameRow(row, endPosition);\n for (var i = 0; i < colLen; i++) {\n var rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n var celPos = __assign$8(__assign$8({}, rowPos), { column: cellRange.columns[i] });\n var cell = this.navigationService.getCellByPosition(celPos);\n if (cell) {\n this.markedCells.push(cell);\n var cellComp = cell.getComp();\n cellComp.addOrRemoveCssClass('ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n }\n }\n if (isLastRow) {\n break;\n }\n // tslint:disable-next-line\n } while (row = this.cellNavigationService.getRowAbove(row));\n };\n FillHandle.prototype.extendHorizontal = function (initialPosition, endPosition, isMovingLeft) {\n var _this = this;\n var allCols = this.columnModel.getAllDisplayedColumns();\n var startCol = allCols.indexOf(isMovingLeft ? endPosition.column : initialPosition.column);\n var endCol = allCols.indexOf(isMovingLeft ? this.getCellRange().columns[0] : endPosition.column);\n var offset = isMovingLeft ? 0 : 1;\n var colsToMark = allCols.slice(startCol + offset, endCol + offset);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(function (column) {\n var row = rangeStartRow;\n var isLastRow = false;\n do {\n isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n var cell = _this.navigationService.getCellByPosition({\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned,\n column: column\n });\n if (cell) {\n _this.markedCells.push(cell);\n var cellComp = cell.getComp();\n cellComp.addOrRemoveCssClass('ag-selection-fill-top', _this.rowPositionUtils.sameRow(row, rangeStartRow));\n cellComp.addOrRemoveCssClass('ag-selection-fill-bottom', _this.rowPositionUtils.sameRow(row, rangeEndRow));\n if (isMovingLeft) {\n _this.isLeft = true;\n cellComp.addOrRemoveCssClass('ag-selection-fill-left', column === colsToMark[0]);\n }\n else {\n cellComp.addOrRemoveCssClass('ag-selection-fill-right', column === _.last(colsToMark));\n }\n }\n row = _this.cellNavigationService.getRowBelow(row);\n } while (!isLastRow);\n });\n };\n FillHandle.prototype.reduceHorizontal = function (initialPosition, endPosition) {\n var _this = this;\n var allCols = this.columnModel.getAllDisplayedColumns();\n var startCol = allCols.indexOf(endPosition.column);\n var endCol = allCols.indexOf(initialPosition.column);\n var colsToMark = allCols.slice(startCol, endCol);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(function (column) {\n var row = rangeStartRow;\n var isLastRow = false;\n do {\n isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n var cell = _this.navigationService.getCellByPosition({\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned,\n column: column\n });\n if (cell) {\n _this.markedCells.push(cell);\n var cellComp = cell.getComp();\n cellComp.addOrRemoveCssClass('ag-selection-fill-right', column === colsToMark[0]);\n }\n row = _this.cellNavigationService.getRowBelow(row);\n } while (!isLastRow);\n });\n };\n FillHandle.prototype.refresh = function (cellCtrl) {\n var cellRange = this.rangeService.getCellRanges()[0];\n var isColumnRange = !cellRange.startRow || !cellRange.endRow;\n if (isColumnRange) {\n this.destroy();\n return;\n }\n _super.prototype.refresh.call(this, cellCtrl);\n };\n FillHandle.TEMPLATE = \"<div class=\\\"ag-fill-handle\\\"></div>\";\n __decorate$H([\n Autowired('valueService')\n ], FillHandle.prototype, \"valueService\", void 0);\n return FillHandle;\n}(AbstractSelectionHandle));\n\nvar __extends$K = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$7 = (undefined && undefined.__assign) || function () {\n __assign$7 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$7.apply(this, arguments);\n};\nvar RangeHandle = /** @class */ (function (_super) {\n __extends$K(RangeHandle, _super);\n function RangeHandle() {\n var _this = _super.call(this, RangeHandle.TEMPLATE) || this;\n _this.type = SelectionHandleType.RANGE;\n _this.rangeFixed = false;\n return _this;\n }\n RangeHandle.prototype.onDrag = function (e) {\n var lastCellHovered = this.getLastCellHovered();\n if (!lastCellHovered) {\n return;\n }\n var cellRanges = this.rangeService.getCellRanges();\n var lastRange = _.last(cellRanges);\n if (!this.rangeFixed) {\n this.fixRangeStartEnd(lastRange);\n this.rangeFixed = true;\n }\n this.endPosition = {\n rowIndex: lastCellHovered.rowIndex,\n rowPinned: lastCellHovered.rowPinned,\n column: lastCellHovered.column\n };\n // check if the cell ranges are for a chart\n if (cellRanges.length === 2 && cellRanges[0].type === CellRangeType.DIMENSION && lastRange.type === CellRangeType.VALUE) {\n var rowChanged = !this.rowPositionUtils.sameRow(this.endPosition, this.rangeService.getRangeEndRow(lastRange));\n if (rowChanged) {\n // ensure the dimension range is kept in sync with the value range (which has the handle)\n this.rangeService.updateRangeEnd(cellRanges[0], __assign$7(__assign$7({}, this.endPosition), { column: cellRanges[0].columns[0] }), true);\n }\n }\n this.rangeService.extendLatestRangeToCell(this.endPosition);\n };\n RangeHandle.prototype.onDragEnd = function (e) {\n var cellRange = _.last(this.rangeService.getCellRanges());\n this.fixRangeStartEnd(cellRange);\n this.rangeFixed = false;\n };\n RangeHandle.prototype.fixRangeStartEnd = function (cellRange) {\n var startRow = this.rangeService.getRangeStartRow(cellRange);\n var endRow = this.rangeService.getRangeEndRow(cellRange);\n var column = cellRange.columns[0];\n cellRange.startRow = startRow;\n cellRange.endRow = endRow;\n cellRange.startColumn = column;\n };\n RangeHandle.TEMPLATE = \"<div class=\\\"ag-range-handle\\\"></div>\";\n return RangeHandle;\n}(AbstractSelectionHandle));\n\nvar __extends$J = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectionHandleFactory = /** @class */ (function (_super) {\n __extends$J(SelectionHandleFactory, _super);\n function SelectionHandleFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectionHandleFactory.prototype.createSelectionHandle = function (type) {\n return this.createBean(type === SelectionHandleType.RANGE ? new RangeHandle() : new FillHandle());\n };\n SelectionHandleFactory = __decorate$G([\n Bean('selectionHandleFactory')\n ], SelectionHandleFactory);\n return SelectionHandleFactory;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$9 = '29.3.5';\n\nvar RangeSelectionModule = {\n version: VERSION$9,\n moduleName: ModuleNames.RangeSelectionModule,\n beans: [RangeService, SelectionHandleFactory],\n agStackComponents: [\n { componentName: 'AgFillHandle', componentClass: FillHandle },\n { componentName: 'AgRangeHandle', componentClass: RangeHandle }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\nvar __extends$I = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$a = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar AgColorPanel = /** @class */ (function (_super) {\n __extends$I(AgColorPanel, _super);\n function AgColorPanel(config) {\n var _this = _super.call(this, AgColorPanel.TEMPLATE) || this;\n _this.H = 1; // in the [0, 1] range\n _this.S = 1; // in the [0, 1] range\n _this.B = 1; // in the [0, 1] range\n _this.A = 1; // in the [0, 1] range\n _this.isSpectrumDragging = false;\n _this.isSpectrumHueDragging = false;\n _this.isSpectrumAlphaDragging = false;\n _this.colorChanged = false;\n _this.picker = config.picker;\n return _this;\n }\n AgColorPanel.prototype.postConstruct = function () {\n var eGui = this.getGui();\n this.initRecentColors();\n this.addManagedListener(this.spectrumVal, 'mousedown', this.onSpectrumDraggerDown.bind(this));\n this.addManagedListener(eGui, 'mousemove', this.onSpectrumDraggerMove.bind(this));\n this.addManagedListener(this.spectrumHue, 'mousedown', this.onSpectrumHueDown.bind(this));\n this.addManagedListener(eGui, 'mousemove', this.onSpectrumHueMove.bind(this));\n this.addManagedListener(this.spectrumAlpha, 'mousedown', this.onSpectrumAlphaDown.bind(this));\n this.addManagedListener(eGui, 'mousemove', this.onSpectrumAlphaMove.bind(this));\n // Listening to `mouseup` on the document on purpose. The user might release the mouse button\n // outside the UI control. When the mouse returns back to the control's area, the dragging\n // of the thumb is not expected and seen as a bug.\n this.addManagedListener(document, 'mouseup', this.onMouseUp.bind(this));\n this.addManagedListener(this.recentColors, 'click', this.onRecentColorClick.bind(this));\n };\n AgColorPanel.prototype.refreshSpectrumRect = function () {\n return this.spectrumValRect = this.spectrumVal.getBoundingClientRect();\n };\n AgColorPanel.prototype.refreshHueRect = function () {\n return this.spectrumHueRect = this.spectrumHue.getBoundingClientRect();\n };\n AgColorPanel.prototype.refreshAlphaRect = function () {\n return this.spectrumAlphaRect = this.spectrumAlpha.getBoundingClientRect();\n };\n AgColorPanel.prototype.onSpectrumDraggerDown = function (e) {\n this.refreshSpectrumRect();\n this.isSpectrumDragging = true;\n this.moveDragger(e);\n };\n AgColorPanel.prototype.onSpectrumDraggerMove = function (e) {\n if (this.isSpectrumDragging) {\n this.moveDragger(e);\n }\n };\n AgColorPanel.prototype.onSpectrumHueDown = function (e) {\n this.refreshHueRect();\n this.isSpectrumHueDragging = true;\n this.moveHueSlider(e);\n };\n AgColorPanel.prototype.onSpectrumHueMove = function (e) {\n if (this.isSpectrumHueDragging) {\n this.moveHueSlider(e);\n }\n };\n AgColorPanel.prototype.onSpectrumAlphaDown = function (e) {\n this.refreshAlphaRect();\n this.isSpectrumAlphaDragging = true;\n this.moveAlphaSlider(e);\n };\n AgColorPanel.prototype.onSpectrumAlphaMove = function (e) {\n if (this.isSpectrumAlphaDragging) {\n this.moveAlphaSlider(e);\n }\n };\n AgColorPanel.prototype.onMouseUp = function () {\n this.isSpectrumDragging = false;\n this.isSpectrumHueDragging = false;\n this.isSpectrumAlphaDragging = false;\n };\n AgColorPanel.prototype.moveDragger = function (e) {\n var valRect = this.spectrumValRect;\n if (valRect) {\n var x = e.clientX - valRect.left;\n var y = e.clientY - valRect.top;\n x = Math.max(x, 0);\n x = Math.min(x, valRect.width);\n y = Math.max(y, 0);\n y = Math.min(y, valRect.height);\n this.setSpectrumValue(x / valRect.width, 1 - y / valRect.height);\n }\n };\n AgColorPanel.prototype.moveHueSlider = function (e) {\n var hueRect = this.spectrumHueRect;\n if (hueRect) {\n var slider = this.spectrumHueSlider;\n var sliderRect = slider.getBoundingClientRect();\n var x = e.clientX - hueRect.left;\n x = Math.max(x, 0);\n x = Math.min(x, hueRect.width);\n this.H = 1 - x / hueRect.width;\n slider.style.left = (x + sliderRect.width / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.moveAlphaSlider = function (e) {\n var alphaRect = this.spectrumAlphaRect;\n if (alphaRect) {\n var slider = this.spectrumAlphaSlider;\n var sliderRect = slider.getBoundingClientRect();\n var x = e.clientX - alphaRect.left;\n x = Math.max(x, 0);\n x = Math.min(x, alphaRect.width);\n this.A = x / alphaRect.width;\n slider.style.left = (x + sliderRect.width / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.update = function () {\n var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n var spectrumColor = Color.fromHSB(this.H * 360, 1, 1);\n var rgbaColor = color.toRgbaString();\n // the recent color list needs to know color has actually changed\n var colorPicker = this.picker;\n var existingColor = Color.fromString(colorPicker.getValue());\n if (existingColor.toRgbaString() !== rgbaColor) {\n this.colorChanged = true;\n }\n colorPicker.setValue(rgbaColor);\n this.spectrumColor.style.backgroundColor = spectrumColor.toRgbaString();\n this.spectrumDragger.style.backgroundColor = rgbaColor;\n };\n /**\n * @param saturation In the [0, 1] interval.\n * @param brightness In the [0, 1] interval.\n */\n AgColorPanel.prototype.setSpectrumValue = function (saturation, brightness) {\n var valRect = this.spectrumValRect || this.refreshSpectrumRect();\n if (valRect) {\n var dragger = this.spectrumDragger;\n var draggerRect = dragger.getBoundingClientRect();\n saturation = Math.max(0, saturation);\n saturation = Math.min(1, saturation);\n brightness = Math.max(0, brightness);\n brightness = Math.min(1, brightness);\n this.S = saturation;\n this.B = brightness;\n dragger.style.left = (saturation * valRect.width - draggerRect.width / 2) + 'px';\n dragger.style.top = ((1 - brightness) * valRect.height - draggerRect.height / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.initRecentColors = function () {\n var recentColors = AgColorPanel.recentColors;\n var innerHtml = recentColors.map(function (color, index) {\n return \"<div class=\\\"ag-recent-color\\\" id=\" + index + \" style=\\\"background-color: \" + color + \"; width: 15px; height: 15px;\\\" recent-color=\\\"\" + color + \"\\\"></div>\";\n });\n this.recentColors.innerHTML = innerHtml.join('');\n };\n AgColorPanel.prototype.setValue = function (val) {\n var color = Color.fromString(val);\n var _a = __read$a(color.toHSB(), 3), h = _a[0], s = _a[1], b = _a[2];\n this.H = (isNaN(h) ? 0 : h) / 360;\n this.A = color.a;\n var spectrumHueRect = this.spectrumHueRect || this.refreshHueRect();\n var spectrumAlphaRect = this.spectrumAlphaRect || this.refreshAlphaRect();\n this.spectrumHueSlider.style.left = ((this.H - 1) * -spectrumHueRect.width) + \"px\";\n this.spectrumAlphaSlider.style.left = (this.A * spectrumAlphaRect.width) + \"px\";\n this.setSpectrumValue(s, b);\n };\n AgColorPanel.prototype.onRecentColorClick = function (e) {\n var target = e.target;\n if (!_.exists(target.id)) {\n return;\n }\n var id = parseInt(target.id, 10);\n this.setValue(AgColorPanel.recentColors[id]);\n this.destroy();\n };\n AgColorPanel.prototype.addRecentColor = function () {\n var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n var rgbaColor = color.toRgbaString();\n var recentColors = AgColorPanel.recentColors;\n if (!this.colorChanged || recentColors[0] === rgbaColor) {\n return;\n }\n // remove duplicate color\n recentColors = recentColors.filter(function (currentColor) { return currentColor != rgbaColor; });\n // add color to head\n recentColors = [rgbaColor].concat(recentColors);\n // ensure we don't exceed max number of recent colors\n if (recentColors.length > AgColorPanel.maxRecentColors) {\n recentColors = recentColors.slice(0, AgColorPanel.maxRecentColors);\n }\n AgColorPanel.recentColors = recentColors;\n };\n AgColorPanel.prototype.destroy = function () {\n this.addRecentColor();\n _super.prototype.destroy.call(this);\n };\n AgColorPanel.maxRecentColors = 8;\n AgColorPanel.recentColors = [];\n AgColorPanel.TEMPLATE = \"<div class=\\\"ag-color-panel\\\">\\n <div ref=\\\"spectrumColor\\\" class=\\\"ag-spectrum-color\\\">\\n <div class=\\\"ag-spectrum-sat ag-spectrum-fill\\\">\\n <div ref=\\\"spectrumVal\\\" class=\\\"ag-spectrum-val ag-spectrum-fill\\\">\\n <div ref=\\\"spectrumDragger\\\" class=\\\"ag-spectrum-dragger\\\"></div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"ag-spectrum-tools\\\">\\n <div ref=\\\"spectrumHue\\\" class=\\\"ag-spectrum-hue ag-spectrum-tool\\\">\\n <div class=\\\"ag-spectrum-hue-background\\\"></div>\\n <div ref=\\\"spectrumHueSlider\\\" class=\\\"ag-spectrum-slider\\\"></div>\\n </div>\\n <div ref=\\\"spectrumAlpha\\\" class=\\\"ag-spectrum-alpha ag-spectrum-tool\\\">\\n <div class=\\\"ag-spectrum-alpha-background\\\"></div>\\n <div ref=\\\"spectrumAlphaSlider\\\" class=\\\"ag-spectrum-slider\\\"></div>\\n </div>\\n <div ref=\\\"recentColors\\\" class=\\\"ag-recent-colors\\\"></div>\\n </div>\\n </div>\";\n __decorate$F([\n RefSelector('spectrumColor')\n ], AgColorPanel.prototype, \"spectrumColor\", void 0);\n __decorate$F([\n RefSelector('spectrumVal')\n ], AgColorPanel.prototype, \"spectrumVal\", void 0);\n __decorate$F([\n RefSelector('spectrumDragger')\n ], AgColorPanel.prototype, \"spectrumDragger\", void 0);\n __decorate$F([\n RefSelector('spectrumHue')\n ], AgColorPanel.prototype, \"spectrumHue\", void 0);\n __decorate$F([\n RefSelector('spectrumHueSlider')\n ], AgColorPanel.prototype, \"spectrumHueSlider\", void 0);\n __decorate$F([\n RefSelector('spectrumAlpha')\n ], AgColorPanel.prototype, \"spectrumAlpha\", void 0);\n __decorate$F([\n RefSelector('spectrumAlphaSlider')\n ], AgColorPanel.prototype, \"spectrumAlphaSlider\", void 0);\n __decorate$F([\n RefSelector('recentColors')\n ], AgColorPanel.prototype, \"recentColors\", void 0);\n __decorate$F([\n PostConstruct\n ], AgColorPanel.prototype, \"postConstruct\", null);\n return AgColorPanel;\n}(Component));\n\nvar __extends$H = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgColorPicker = /** @class */ (function (_super) {\n __extends$H(AgColorPicker, _super);\n function AgColorPicker(config) {\n var _this = _super.call(this, config, 'ag-color-picker', 'colorPicker') || this;\n if (config && config.color) {\n _this.value = config.color;\n }\n return _this;\n }\n AgColorPicker.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n if (this.value) {\n this.setValue(this.value);\n }\n };\n AgColorPicker.prototype.showPicker = function () {\n var _this = this;\n var eGuiRect = this.getGui().getBoundingClientRect();\n var colorDialog = this.createBean(new AgDialog({\n closable: false,\n modal: true,\n hideTitleBar: true,\n minWidth: 190,\n width: 190,\n height: 250,\n x: eGuiRect.right - 190,\n y: eGuiRect.top - 250\n }));\n this.isPickerDisplayed = true;\n colorDialog.addCssClass('ag-color-dialog');\n _.setAriaExpanded(this.eWrapper, true);\n var colorPanel = this.createBean(new AgColorPanel({ picker: this }));\n colorPanel.addDestroyFunc(function () {\n if (colorDialog.isAlive()) {\n _this.destroyBean(colorDialog);\n }\n });\n colorDialog.setParentComponent(this);\n colorDialog.setBodyComponent(colorPanel);\n colorPanel.setValue(this.getValue());\n colorDialog.addDestroyFunc(function () {\n // here we check if the picker was already being\n // destroyed to avoid a stack overflow\n if (!_this.isDestroyingPicker) {\n _this.isDestroyingPicker = true;\n if (colorPanel.isAlive()) {\n _this.destroyBean(colorPanel);\n }\n }\n else {\n _this.isDestroyingPicker = false;\n }\n if (_this.isAlive()) {\n _.setAriaExpanded(_this.eWrapper, false);\n _this.getFocusableElement().focus();\n }\n _this.isPickerDisplayed = false;\n });\n return colorDialog;\n };\n AgColorPicker.prototype.setValue = function (color) {\n if (this.value === color) {\n return this;\n }\n this.eDisplayField.style.backgroundColor = color;\n return _super.prototype.setValue.call(this, color);\n };\n AgColorPicker.prototype.getValue = function () {\n return this.value;\n };\n return AgColorPicker;\n}(AgPickerField));\n\nvar __read$9 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION = 28;\nvar VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION = 6;\nfunction isValidVersion(version) {\n return version && version.match(/\\d+\\.\\d+\\.\\d+/);\n}\nfunction isValidMajorVersion(_a) {\n var gridMajorVersion = _a.gridMajorVersion, chartsMajorVersion = _a.chartsMajorVersion;\n var gridMajor = parseInt(gridMajorVersion, 10);\n var chartsMajor = parseInt(chartsMajorVersion, 10);\n var gridMajorDifference = gridMajor - VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION;\n var chartsMajorDifference = chartsMajor - VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION;\n var isFirstOrAfterVersion = gridMajorDifference >= 0;\n return gridMajorDifference === chartsMajorDifference && isFirstOrAfterVersion;\n}\nfunction gridChartVersion(gridVersion) {\n if (!gridVersion || !isValidVersion(gridVersion)) {\n return undefined;\n }\n var _a = __read$9(gridVersion.split('.') || [], 2), gridMajor = _a[0], gridMinor = _a[1];\n var gridMajorMinor = gridMajor + \".\" + gridMinor + \".x\";\n var gridMajorNumber = parseInt(gridMajor, 10);\n var chartsMajor = (gridMajorNumber - VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION) + VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION;\n if (chartsMajor < 0) {\n return undefined;\n }\n var chartsMinor = gridMinor;\n var chartsMajorMinor = chartsMajor + \".\" + chartsMinor + \".x\";\n return {\n gridMajorMinor: gridMajorMinor,\n chartsMajorMinor: chartsMajorMinor\n };\n}\nfunction validGridChartsVersionErrorMessage(_a) {\n var type = _a.type, gridVersion = _a.gridVersion, chartsVersion = _a.chartsVersion;\n var invalidMessage = 'AG Grid: AG Grid version is incompatible. Please see https://www.ag-grid.com/javascript-data-grid/modules/ for more information.';\n if (!gridVersion) {\n return invalidMessage;\n }\n var version = gridChartVersion(gridVersion);\n if (!version) {\n return invalidMessage;\n }\n var gridMajorMinor = version.gridMajorMinor, chartsMajorMinor = version.chartsMajorMinor;\n if (type === 'incompatible') {\n return \"AG Grid version \" + gridVersion + \" and AG Charts version \" + chartsVersion + \" is not supported. AG Grid version \" + gridMajorMinor + \" should be used with AG Chart \" + chartsMajorMinor + \". Please see https://www.ag-grid.com/javascript-data-grid/modules/ for more information.\";\n }\n else if (type === 'invalidCharts') {\n return \"AG Grid version \" + gridMajorMinor + \" should be used with AG Chart \" + chartsMajorMinor + \". Please see https://www.ag-grid.com/javascript-data-grid/modules/ for more information.\";\n }\n return invalidMessage;\n}\nfunction validGridChartsVersion(_a) {\n var gridVersion = _a.gridVersion, chartsVersion = _a.chartsVersion;\n if (!isValidVersion(chartsVersion)) {\n return {\n isValid: false,\n message: validGridChartsVersionErrorMessage({ type: 'invalidCharts', gridVersion: gridVersion, chartsVersion: chartsVersion })\n };\n }\n if (!isValidVersion(gridVersion)) {\n return {\n isValid: false,\n message: validGridChartsVersionErrorMessage({ type: 'invalidGrid', gridVersion: gridVersion, chartsVersion: chartsVersion })\n };\n }\n var _b = __read$9(gridVersion.split('.') || [], 2), gridMajor = _b[0], gridMinor = _b[1];\n var _c = __read$9(chartsVersion.split('.') || [], 2), chartsMajor = _c[0], chartsMinor = _c[1];\n var isValidMajor = isValidMajorVersion({\n gridMajorVersion: gridMajor,\n chartsMajorVersion: chartsMajor\n });\n if (isValidMajor && gridMinor === chartsMinor) {\n return {\n isValid: true\n };\n }\n else if (!isValidMajor || gridMinor !== chartsMinor) {\n return {\n isValid: false,\n message: validGridChartsVersionErrorMessage({ type: 'incompatible', gridVersion: gridVersion, chartsVersion: chartsVersion })\n };\n }\n return {\n isValid: false,\n message: validGridChartsVersionErrorMessage({ type: 'invalid', gridVersion: gridVersion, chartsVersion: chartsVersion })\n };\n}\n\nvar GridChartsModule = {\n version: VERSION$a,\n validate: function () {\n return validGridChartsVersion({\n gridVersion: VERSION$a,\n chartsVersion: ChartService.CHARTS_VERSION\n });\n },\n moduleName: ModuleNames.GridChartsModule,\n beans: [\n ChartService, ChartTranslationService, ChartCrossFilterService\n ],\n agStackComponents: [\n { componentName: 'AgColorPicker', componentClass: AgColorPicker },\n { componentName: 'AgAngleSelect', componentClass: AgAngleSelect },\n ],\n dependantModules: [\n RangeSelectionModule,\n EnterpriseCoreModule\n ]\n};\n\n/**\n * Internal Use Only: Used to ensure this file is treated as a module until we can use moduleDetection flag in Ts v4.7\n */\nvar __FORCE_MODULE_DETECTION_AG_GRID_CORE_EXT = 0;\n\nvar agCharts = {\n time: time,\n AgChart: AgChart\n};\n\nvar __extends$G = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$6 = (undefined && undefined.__assign) || function () {\n __assign$6 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$6.apply(this, arguments);\n};\nvar __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DetailCellRendererCtrl = /** @class */ (function (_super) {\n __extends$G(DetailCellRendererCtrl, _super);\n function DetailCellRendererCtrl() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.loadRowDataVersion = 0;\n _this.needRefresh = false;\n return _this;\n }\n DetailCellRendererCtrl.prototype.init = function (comp, params) {\n var _this = this;\n this.params = params;\n this.comp = comp;\n var doNothingBecauseInsidePinnedSection = params.pinned != null;\n if (doNothingBecauseInsidePinnedSection) {\n return;\n }\n this.setAutoHeightClasses();\n this.setupRefreshStrategy();\n this.addThemeToDetailGrid();\n this.createDetailGrid();\n this.loadRowData();\n this.addManagedListener(params.node.parent, RowNode.EVENT_DATA_CHANGED, function () {\n _this.needRefresh = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_FULL_WIDTH_ROW_FOCUSED, this.onFullWidthRowFocused.bind(this));\n };\n DetailCellRendererCtrl.prototype.onFullWidthRowFocused = function (e) {\n var params = this.params;\n var row = { rowIndex: params.node.rowIndex, rowPinned: params.node.rowPinned };\n var eventRow = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n var isSameRow = this.rowPositionUtils.sameRow(row, eventRow);\n if (!isSameRow) {\n return;\n }\n this.focusService.focusInto(this.comp.getGui(), e.fromBelow);\n };\n DetailCellRendererCtrl.prototype.setAutoHeightClasses = function () {\n var autoHeight = this.gridOptionsService.is('detailRowAutoHeight');\n var parentClass = autoHeight ? 'ag-details-row-auto-height' : 'ag-details-row-fixed-height';\n var detailClass = autoHeight ? 'ag-details-grid-auto-height' : 'ag-details-grid-fixed-height';\n this.comp.addOrRemoveCssClass(parentClass, true);\n this.comp.addOrRemoveDetailGridCssClass(detailClass, true);\n };\n DetailCellRendererCtrl.prototype.setupRefreshStrategy = function () {\n var providedStrategy = this.params.refreshStrategy;\n var validSelection = providedStrategy == 'everything' || providedStrategy == 'nothing' || providedStrategy == 'rows';\n if (validSelection) {\n this.refreshStrategy = providedStrategy;\n return;\n }\n if (providedStrategy != null) {\n console.warn(\"AG Grid: invalid cellRendererParams.refreshStrategy = '\" + providedStrategy +\n \"' supplied, defaulting to refreshStrategy = 'rows'.\");\n }\n this.refreshStrategy = 'rows';\n };\n DetailCellRendererCtrl.prototype.addThemeToDetailGrid = function () {\n // this is needed by environment service of the child grid, the class needs to be on\n // the grid div itself - the browser's CSS on the other hand just inherits from the parent grid theme.\n var theme = this.environment.getTheme().theme;\n if (theme) {\n this.comp.addOrRemoveDetailGridCssClass(theme, true);\n }\n };\n DetailCellRendererCtrl.prototype.createDetailGrid = function () {\n if (_.missing(this.params.detailGridOptions)) {\n console.warn('AG Grid: could not find detail grid options for master detail, ' +\n 'please set gridOptions.detailCellRendererParams.detailGridOptions');\n return;\n }\n var autoHeight = this.gridOptionsService.is('detailRowAutoHeight');\n // we clone the detail grid options, as otherwise it would be shared\n // across many instances, and that would be a problem because we set\n // api and columnApi into gridOptions\n var gridOptions = __assign$6({}, this.params.detailGridOptions);\n if (autoHeight) {\n gridOptions.domLayout = 'autoHeight';\n }\n this.comp.setDetailGrid(gridOptions);\n };\n DetailCellRendererCtrl.prototype.registerDetailWithMaster = function (api, columnApi) {\n var rowId = this.params.node.id;\n var masterGridApi = this.params.api;\n var gridInfo = {\n id: rowId,\n api: api,\n columnApi: columnApi\n };\n var rowNode = this.params.node;\n // register with api\n masterGridApi.addDetailGridInfo(rowId, gridInfo);\n // register with node\n rowNode.detailGridInfo = gridInfo;\n this.addDestroyFunc(function () {\n // the gridInfo can be stale if a refresh happens and\n // a new row is created before the old one is destroyed.\n if (rowNode.detailGridInfo !== gridInfo) {\n return;\n }\n masterGridApi.removeDetailGridInfo(rowId); // unregister from api\n rowNode.detailGridInfo = null; // unregister from node\n });\n };\n DetailCellRendererCtrl.prototype.loadRowData = function () {\n var _this = this;\n // in case a refresh happens before the last refresh completes (as we depend on async\n // application logic) we keep track on what the latest call was.\n this.loadRowDataVersion++;\n var versionThisCall = this.loadRowDataVersion;\n var userFunc = this.params.getDetailRowData;\n if (!userFunc) {\n console.warn('AG Grid: could not find getDetailRowData for master / detail, ' +\n 'please set gridOptions.detailCellRendererParams.getDetailRowData');\n return;\n }\n var successCallback = function (rowData) {\n var mostRecentCall = _this.loadRowDataVersion === versionThisCall;\n if (mostRecentCall) {\n _this.comp.setRowData(rowData);\n }\n };\n var funcParams = {\n node: this.params.node,\n // we take data from node, rather than params.data\n // as the data could have been updated with new instance\n data: this.params.node.data,\n successCallback: successCallback,\n context: this.gridOptionsService.context\n };\n userFunc(funcParams);\n };\n DetailCellRendererCtrl.prototype.refresh = function () {\n var GET_GRID_TO_REFRESH = false;\n var GET_GRID_TO_DO_NOTHING = true;\n // if we return true, it means we pretend to the grid\n // that we have refreshed, so refresh will never happen.\n var doNotRefresh = !this.needRefresh || this.refreshStrategy === 'nothing';\n if (doNotRefresh) {\n // we do nothing in this refresh method, and also tell the grid to do nothing\n return GET_GRID_TO_DO_NOTHING;\n }\n // reset flag, so don't refresh again until more data changes.\n this.needRefresh = false;\n if (this.refreshStrategy === 'everything') {\n // we want full refresh, so tell the grid to destroy and recreate this cell\n return GET_GRID_TO_REFRESH;\n }\n else {\n // do the refresh here, and tell the grid to do nothing\n this.loadRowData();\n return GET_GRID_TO_DO_NOTHING;\n }\n };\n __decorate$E([\n Autowired('rowPositionUtils')\n ], DetailCellRendererCtrl.prototype, \"rowPositionUtils\", void 0);\n __decorate$E([\n Autowired('focusService')\n ], DetailCellRendererCtrl.prototype, \"focusService\", void 0);\n return DetailCellRendererCtrl;\n}(BeanStub));\n\nvar __extends$F = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DetailCellRenderer = /** @class */ (function (_super) {\n __extends$F(DetailCellRenderer, _super);\n function DetailCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DetailCellRenderer.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n this.selectAndSetTemplate();\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n addOrRemoveDetailGridCssClass: function (cssClassName, on) { return _this.eDetailGrid.classList.toggle(cssClassName, on); },\n setDetailGrid: function (gridOptions) { return _this.setDetailGrid(gridOptions); },\n setRowData: function (rowData) { return _this.setRowData(rowData); },\n getGui: function () { return _this.eDetailGrid; }\n };\n this.ctrl = this.createManagedBean(new DetailCellRendererCtrl());\n this.ctrl.init(compProxy, params);\n };\n DetailCellRenderer.prototype.refresh = function () {\n return this.ctrl && this.ctrl.refresh();\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n DetailCellRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n DetailCellRenderer.prototype.selectAndSetTemplate = function () {\n var _this = this;\n if (this.params.pinned) {\n this.setTemplate('<div class=\"ag-details-row\"></div>');\n return;\n }\n var setDefaultTemplate = function () {\n _this.setTemplate(DetailCellRenderer.TEMPLATE);\n };\n if (_.missing(this.params.template)) {\n // use default template\n setDefaultTemplate();\n }\n else {\n // use user provided template\n if (typeof this.params.template === 'string') {\n this.setTemplate(this.params.template);\n }\n else if (typeof this.params.template === 'function') {\n var templateFunc = this.params.template;\n var template = templateFunc(this.params);\n this.setTemplate(template);\n }\n else {\n console.warn('AG Grid: detailCellRendererParams.template should be function or string');\n setDefaultTemplate();\n }\n }\n if (this.eDetailGrid == null) {\n console.warn('AG Grid: reference to eDetailGrid was missing from the details template. ' +\n 'Please add ref=\"eDetailGrid\" to the template.');\n }\n };\n DetailCellRenderer.prototype.setDetailGrid = function (gridOptions) {\n if (!this.eDetailGrid) {\n return;\n }\n // AG-1715\n // this is only needed when reactUi=false, once we remove the old way\n // of doing react, and Master / Details is all native React, then we\n // can remove this code.\n var agGridReact = this.context.getBean('agGridReact');\n var agGridReactCloned = agGridReact ? _.cloneObject(agGridReact) : undefined;\n // when we create detail grid, the detail grid needs frameworkComponentWrapper so that\n // it created child components correctly, ie Angular detail grid can have Angular cell renderer.\n // this is only used by Angular and Vue, as React uses native React AG Grid detail grids\n var frameworkComponentWrapper = this.context.getBean('frameworkComponentWrapper');\n var frameworkOverrides = this.getFrameworkOverrides();\n // tslint:disable-next-line\n new Grid(this.eDetailGrid, gridOptions, {\n frameworkOverrides: frameworkOverrides,\n providedBeanInstances: {\n agGridReact: agGridReactCloned,\n frameworkComponentWrapper: frameworkComponentWrapper\n }\n });\n this.detailApi = gridOptions.api;\n this.ctrl.registerDetailWithMaster(gridOptions.api, gridOptions.columnApi);\n this.addDestroyFunc(function () {\n if (gridOptions.api) {\n gridOptions.api.destroy();\n }\n });\n };\n DetailCellRenderer.prototype.setRowData = function (rowData) {\n // ensure detail grid api still exists (grid may be destroyed when async call tries to set data)\n this.detailApi && this.detailApi.setRowData(rowData);\n };\n DetailCellRenderer.TEMPLATE = \"<div class=\\\"ag-details-row\\\" role=\\\"gridcell\\\">\\n <div ref=\\\"eDetailGrid\\\" class=\\\"ag-details-grid\\\" role=\\\"presentation\\\"></div>\\n </div>\";\n __decorate$D([\n RefSelector('eDetailGrid')\n ], DetailCellRenderer.prototype, \"eDetailGrid\", void 0);\n return DetailCellRenderer;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$8 = '29.3.5';\n\nvar MasterDetailModule = {\n version: VERSION$8,\n moduleName: ModuleNames.MasterDetailModule,\n beans: [],\n userComponents: [\n { componentName: 'agDetailCellRenderer', componentClass: DetailCellRenderer }\n ],\n controllers: [\n { controllerName: 'detailCellRenderer', controllerClass: DetailCellRendererCtrl }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\nvar __extends$E = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar EnterpriseMenuFactory = /** @class */ (function (_super) {\n __extends$E(EnterpriseMenuFactory, _super);\n function EnterpriseMenuFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EnterpriseMenuFactory.prototype.hideActiveMenu = function () {\n this.destroyBean(this.activeMenu);\n };\n EnterpriseMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent, defaultTab) {\n var _this = this;\n this.showMenu(column, function (menu) {\n var ePopup = menu.getGui();\n _this.popupService.positionPopupUnderMouseEvent({\n type: 'columnMenu',\n column: column,\n mouseEvent: mouseEvent,\n ePopup: ePopup\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, 'columnMenu', defaultTab, undefined, mouseEvent.target);\n };\n EnterpriseMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, containerType, defaultTab, restrictToTabs) {\n var _this = this;\n var multiplier = -1;\n var alignSide = 'left';\n if (this.gridOptionsService.is('enableRtl')) {\n multiplier = 1;\n alignSide = 'right';\n }\n this.showMenu(column, function (menu) {\n var ePopup = menu.getGui();\n _this.popupService.positionPopupByComponent({\n type: containerType,\n column: column,\n eventSource: eventSource,\n ePopup: ePopup,\n alignSide: alignSide,\n nudgeX: 9 * multiplier,\n nudgeY: -23,\n position: 'under',\n keepWithinBounds: true,\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, containerType, defaultTab, restrictToTabs, eventSource);\n };\n EnterpriseMenuFactory.prototype.showMenu = function (column, positionCallback, containerType, defaultTab, restrictToTabs, eventSource) {\n var _this = this;\n var _a = this.getMenuParams(column, restrictToTabs, eventSource), menu = _a.menu, eMenuGui = _a.eMenuGui, currentHeaderPosition = _a.currentHeaderPosition, currentColumnIndex = _a.currentColumnIndex, anchorToElement = _a.anchorToElement;\n var closedFuncs = [];\n closedFuncs.push(this.getClosedCallback(column, menu, currentHeaderPosition, currentColumnIndex, eventSource));\n var translate = this.localeService.getLocaleTextFunc();\n // need to show filter before positioning, as only after filter\n // is visible can we find out what the width of it is\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eMenuGui,\n closeOnEsc: true,\n closedCallback: function (e) {\n closedFuncs.forEach(function (f) { return f(e); });\n },\n afterGuiAttached: function (params) { return menu.afterGuiAttached(Object.assign({}, { container: containerType }, params)); },\n // if defaultTab is not present, positionCallback will be called\n // after `showTabBasedOnPreviousSelection` is called.\n positionCallback: !!defaultTab ? function () { return positionCallback(menu); } : undefined,\n anchorToElement: anchorToElement,\n ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')\n });\n // if user starts showing / hiding columns, or otherwise move the underlying column\n // for this menu, we want to stop tracking the menu with the column position. otherwise\n // the menu would move as the user is using the columns tab inside the menu.\n this.addStopAnchoring(addPopupRes === null || addPopupRes === void 0 ? void 0 : addPopupRes.stopAnchoringPromise, column, closedFuncs);\n if (!defaultTab) {\n menu.showTabBasedOnPreviousSelection();\n // reposition the menu because the method above could load\n // an element that is bigger than enterpriseMenu header.\n positionCallback(menu);\n }\n menu.addEventListener(EnterpriseMenu.EVENT_TAB_SELECTED, function (event) {\n _this.lastSelectedTab = event.key;\n });\n column.setMenuVisible(true, 'contextMenu');\n this.activeMenu = menu;\n menu.addEventListener(BeanStub.EVENT_DESTROYED, function () {\n if (_this.activeMenu === menu) {\n _this.activeMenu = null;\n }\n });\n };\n EnterpriseMenuFactory.prototype.getClosedCallback = function (column, menu, headerPosition, columnIndex, eventSource) {\n var _this = this;\n return function (e) {\n _this.destroyBean(menu);\n column.setMenuVisible(false, 'contextMenu');\n var isKeyboardEvent = e instanceof KeyboardEvent;\n if (!isKeyboardEvent || !eventSource) {\n return;\n }\n if (_.isVisible(eventSource)) {\n var focusableEl = _this.focusService.findTabbableParent(eventSource);\n if (focusableEl) {\n if (column) {\n _this.headerNavigationService.scrollToColumn(column);\n }\n focusableEl.focus();\n }\n }\n // if the focusEl is no longer in the DOM, we try to focus\n // the header that is closest to the previous header position\n else if (headerPosition && columnIndex !== -1) {\n var allColumns = _this.columnModel.getAllDisplayedColumns();\n var columnToFocus = allColumns[columnIndex] || _.last(allColumns);\n if (columnToFocus) {\n _this.focusService.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: headerPosition.headerRowIndex,\n column: columnToFocus\n }\n });\n }\n }\n };\n };\n EnterpriseMenuFactory.prototype.addStopAnchoring = function (stopAnchoringPromise, column, closedFuncsArr) {\n if (!stopAnchoringPromise) {\n return;\n }\n stopAnchoringPromise.then(function (stopAnchoringFunc) {\n column.addEventListener('leftChanged', stopAnchoringFunc);\n column.addEventListener('visibleChanged', stopAnchoringFunc);\n closedFuncsArr.push(function () {\n column.removeEventListener('leftChanged', stopAnchoringFunc);\n column.removeEventListener('visibleChanged', stopAnchoringFunc);\n });\n });\n };\n EnterpriseMenuFactory.prototype.getMenuParams = function (column, restrictToTabs, eventSource) {\n var menu = this.createBean(new EnterpriseMenu(column, this.lastSelectedTab, restrictToTabs));\n return {\n menu: menu,\n eMenuGui: menu.getGui(),\n currentHeaderPosition: this.focusService.getFocusedHeader(),\n currentColumnIndex: this.columnModel.getAllDisplayedColumns().indexOf(column),\n anchorToElement: eventSource || this.ctrlsService.getGridBodyCtrl().getGui()\n };\n };\n EnterpriseMenuFactory.prototype.isMenuEnabled = function (column) {\n return column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT).length > 0;\n };\n __decorate$C([\n Autowired('popupService')\n ], EnterpriseMenuFactory.prototype, \"popupService\", void 0);\n __decorate$C([\n Autowired('focusService')\n ], EnterpriseMenuFactory.prototype, \"focusService\", void 0);\n __decorate$C([\n Autowired('headerNavigationService')\n ], EnterpriseMenuFactory.prototype, \"headerNavigationService\", void 0);\n __decorate$C([\n Autowired('ctrlsService')\n ], EnterpriseMenuFactory.prototype, \"ctrlsService\", void 0);\n __decorate$C([\n Autowired('columnModel')\n ], EnterpriseMenuFactory.prototype, \"columnModel\", void 0);\n EnterpriseMenuFactory = __decorate$C([\n Bean('menuFactory')\n ], EnterpriseMenuFactory);\n return EnterpriseMenuFactory;\n}(BeanStub));\nvar EnterpriseMenu = /** @class */ (function (_super) {\n __extends$E(EnterpriseMenu, _super);\n function EnterpriseMenu(column, initialSelection, restrictTo) {\n var _this = _super.call(this) || this;\n _this.tabFactories = {};\n _this.includeChecks = {};\n _this.column = column;\n _this.initialSelection = initialSelection;\n _this.tabFactories[EnterpriseMenu.TAB_GENERAL] = _this.createMainPanel.bind(_this);\n _this.tabFactories[EnterpriseMenu.TAB_FILTER] = _this.createFilterPanel.bind(_this);\n _this.tabFactories[EnterpriseMenu.TAB_COLUMNS] = _this.createColumnsPanel.bind(_this);\n _this.includeChecks[EnterpriseMenu.TAB_GENERAL] = function () { return true; };\n _this.includeChecks[EnterpriseMenu.TAB_FILTER] = function () { return _this.filterManager.isFilterAllowed(column); };\n _this.includeChecks[EnterpriseMenu.TAB_COLUMNS] = function () { return true; };\n _this.restrictTo = restrictTo;\n return _this;\n }\n EnterpriseMenu.prototype.init = function () {\n var _this = this;\n var tabs = this.getTabsToCreate().map(function (name) { return _this.createTab(name); });\n this.tabbedLayout = new TabbedLayout({\n items: tabs,\n cssClass: 'ag-menu',\n onActiveItemClicked: this.onHidePopup.bind(this),\n onItemClicked: this.onTabItemClicked.bind(this)\n });\n this.createBean(this.tabbedLayout);\n if (this.mainMenuList) {\n this.mainMenuList.setParentComponent(this.tabbedLayout);\n }\n this.addDestroyFunc(function () { return _this.destroyBean(_this.tabbedLayout); });\n };\n EnterpriseMenu.prototype.getTabsToCreate = function () {\n var _this = this;\n if (this.restrictTo) {\n return this.restrictTo;\n }\n return this.column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT)\n .filter(function (tabName) { return _this.isValidMenuTabItem(tabName); })\n .filter(function (tabName) { return _this.isNotSuppressed(tabName); })\n .filter(function (tabName) { return _this.isModuleLoaded(tabName); });\n };\n EnterpriseMenu.prototype.isModuleLoaded = function (menuTabName) {\n if (menuTabName === EnterpriseMenu.TAB_COLUMNS) {\n return ModuleRegistry.isRegistered(ModuleNames.ColumnsToolPanelModule);\n }\n return true;\n };\n EnterpriseMenu.prototype.isValidMenuTabItem = function (menuTabName) {\n var isValid = true;\n var itemsToConsider = EnterpriseMenu.TABS_DEFAULT;\n if (this.restrictTo != null) {\n isValid = this.restrictTo.indexOf(menuTabName) > -1;\n itemsToConsider = this.restrictTo;\n }\n isValid = isValid && EnterpriseMenu.TABS_DEFAULT.indexOf(menuTabName) > -1;\n if (!isValid) {\n console.warn(\"AG Grid: Trying to render an invalid menu item '\" + menuTabName + \"'. Check that your 'menuTabs' contains one of [\" + itemsToConsider + \"]\");\n }\n return isValid;\n };\n EnterpriseMenu.prototype.isNotSuppressed = function (menuTabName) {\n return this.includeChecks[menuTabName]();\n };\n EnterpriseMenu.prototype.createTab = function (name) {\n return this.tabFactories[name]();\n };\n EnterpriseMenu.prototype.showTabBasedOnPreviousSelection = function () {\n // show the tab the user was on last time they had a menu open\n this.showTab(this.initialSelection);\n };\n EnterpriseMenu.prototype.showTab = function (toShow) {\n if (this.tabItemColumns && toShow === EnterpriseMenu.TAB_COLUMNS) {\n this.tabbedLayout.showItem(this.tabItemColumns);\n }\n else if (this.tabItemFilter && toShow === EnterpriseMenu.TAB_FILTER) {\n this.tabbedLayout.showItem(this.tabItemFilter);\n }\n else if (this.tabItemGeneral && toShow === EnterpriseMenu.TAB_GENERAL) {\n this.tabbedLayout.showItem(this.tabItemGeneral);\n }\n else {\n this.tabbedLayout.showFirstItem();\n }\n };\n EnterpriseMenu.prototype.onTabItemClicked = function (event) {\n var key = null;\n switch (event.item) {\n case this.tabItemColumns:\n key = EnterpriseMenu.TAB_COLUMNS;\n break;\n case this.tabItemFilter:\n key = EnterpriseMenu.TAB_FILTER;\n break;\n case this.tabItemGeneral:\n key = EnterpriseMenu.TAB_GENERAL;\n break;\n }\n if (key) {\n this.activateTab(key);\n }\n };\n EnterpriseMenu.prototype.activateTab = function (tab) {\n var ev = {\n type: EnterpriseMenu.EVENT_TAB_SELECTED,\n key: tab\n };\n this.dispatchEvent(ev);\n };\n EnterpriseMenu.prototype.getMenuItems = function () {\n var defaultMenuOptions = this.getDefaultMenuOptions();\n var result;\n var userFunc = this.gridOptionsService.getCallback('getMainMenuItems');\n if (userFunc) {\n result = userFunc({\n column: this.column,\n defaultItems: defaultMenuOptions\n });\n }\n else {\n result = defaultMenuOptions;\n }\n // GUI looks weird when two separators are side by side. this can happen accidentally\n // if we remove items from the menu then two separators can edit up adjacent.\n _.removeRepeatsFromArray(result, EnterpriseMenu.MENU_ITEM_SEPARATOR);\n return result;\n };\n EnterpriseMenu.prototype.getDefaultMenuOptions = function () {\n var result = [];\n var allowPinning = !this.column.getColDef().lockPinned;\n var rowGroupCount = this.columnModel.getRowGroupColumns().length;\n var doingGrouping = rowGroupCount > 0;\n var groupedByThisColumn = this.columnModel.getRowGroupColumns().indexOf(this.column) >= 0;\n var allowValue = this.column.isAllowValue();\n var allowRowGroup = this.column.isAllowRowGroup();\n var isPrimary = this.column.isPrimary();\n var pivotModeOn = this.columnModel.isPivotMode();\n var isInMemoryRowModel = this.rowModel.getType() === 'clientSide';\n var usingTreeData = this.gridOptionsService.isTreeData();\n var allowValueAgg = \n // if primary, then only allow aggValue if grouping and it's a value columns\n (isPrimary && doingGrouping && allowValue)\n // secondary columns can always have aggValue, as it means it's a pivot value column\n || !isPrimary;\n if (allowPinning) {\n result.push('pinSubMenu');\n }\n if (allowValueAgg) {\n result.push('valueAggSubMenu');\n }\n if (allowPinning || allowValueAgg) {\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n }\n result.push('autoSizeThis');\n result.push('autoSizeAll');\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n if (allowRowGroup && this.column.isPrimary()) {\n if (groupedByThisColumn) {\n result.push('rowUnGroup');\n }\n else {\n result.push('rowGroup');\n }\n }\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n result.push('resetColumns');\n // only add grouping expand/collapse if grouping in the InMemoryRowModel\n // if pivoting, we only have expandable groups if grouping by 2 or more columns\n // as the lowest level group is not expandable while pivoting.\n // if not pivoting, then any active row group can be expanded.\n var allowExpandAndContract = isInMemoryRowModel && (usingTreeData || rowGroupCount > (pivotModeOn ? 1 : 0));\n if (allowExpandAndContract) {\n result.push('expandAll');\n result.push('contractAll');\n }\n return result;\n };\n EnterpriseMenu.prototype.createMainPanel = function () {\n this.mainMenuList = this.createManagedBean(new AgMenuList());\n var menuItems = this.getMenuItems();\n var menuItemsMapped = this.menuItemMapper.mapWithStockItems(menuItems, this.column);\n this.mainMenuList.addMenuItems(menuItemsMapped);\n this.mainMenuList.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, this.onHidePopup.bind(this));\n this.tabItemGeneral = {\n title: _.createIconNoSpan('menu', this.gridOptionsService, this.column),\n titleLabel: EnterpriseMenu.TAB_GENERAL.replace('MenuTab', ''),\n bodyPromise: AgPromise.resolve(this.mainMenuList.getGui()),\n name: EnterpriseMenu.TAB_GENERAL\n };\n return this.tabItemGeneral;\n };\n EnterpriseMenu.prototype.onHidePopup = function (event) {\n var keyboardEvent;\n if (event && event.event && event.event instanceof KeyboardEvent) {\n keyboardEvent = event.event;\n }\n this.hidePopupFunc(keyboardEvent && { keyboardEvent: keyboardEvent });\n // this method only gets called when the menu was closed by selection an option\n // in this case we highlight the cell that was previously highlighted\n var focusedCell = this.focusService.getFocusedCell();\n var eDocument = this.gridOptionsService.getDocument();\n if (eDocument.activeElement === eDocument.body && focusedCell) {\n var rowIndex = focusedCell.rowIndex, rowPinned = focusedCell.rowPinned, column = focusedCell.column;\n this.focusService.setFocusedCell({ rowIndex: rowIndex, column: column, rowPinned: rowPinned, forceBrowserFocus: true, preventScrollOnBrowserFocus: true });\n }\n };\n EnterpriseMenu.prototype.createFilterPanel = function () {\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.column, 'COLUMN_MENU');\n if (!filterWrapper) {\n throw new Error('AG Grid - Unable to instantiate filter');\n }\n var afterFilterAttachedCallback = function (params) {\n if (!(filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.filterPromise)) {\n return;\n }\n // slightly odd block this - this promise will always have been resolved by the time it gets here, so won't be\n // async (_unless_ in react or similar, but if so why not encountered before now?).\n // I'd suggest a future improvement would be to remove/replace this promise as this block just wont work if it is\n // async and is confusing if you don't have this context\n filterWrapper.filterPromise.then(function (filter) {\n if (filter && filter.afterGuiAttached) {\n filter.afterGuiAttached(params);\n }\n });\n };\n // see comment above\n var afterDetachedCallback = function () { var _a; return (_a = filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.then(function (filter) { var _a; return (_a = filter === null || filter === void 0 ? void 0 : filter.afterGuiDetached) === null || _a === void 0 ? void 0 : _a.call(filter); }); };\n this.tabItemFilter = {\n title: _.createIconNoSpan('filter', this.gridOptionsService, this.column),\n titleLabel: EnterpriseMenu.TAB_FILTER.replace('MenuTab', ''),\n bodyPromise: filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.guiPromise,\n afterAttachedCallback: afterFilterAttachedCallback,\n afterDetachedCallback: afterDetachedCallback,\n name: EnterpriseMenu.TAB_FILTER\n };\n return this.tabItemFilter;\n };\n EnterpriseMenu.prototype.createColumnsPanel = function () {\n var eWrapperDiv = document.createElement('div');\n eWrapperDiv.classList.add('ag-menu-column-select-wrapper');\n var columnSelectPanel = this.createManagedBean(new PrimaryColsPanel());\n var columnsMenuParams = this.column.getColDef().columnsMenuParams;\n if (!columnsMenuParams) {\n columnsMenuParams = {};\n }\n var contractColumnSelection = columnsMenuParams.contractColumnSelection, suppressColumnExpandAll = columnsMenuParams.suppressColumnExpandAll, suppressColumnFilter = columnsMenuParams.suppressColumnFilter, suppressColumnSelectAll = columnsMenuParams.suppressColumnSelectAll, suppressSyncLayoutWithGrid = columnsMenuParams.suppressSyncLayoutWithGrid, columnLayout = columnsMenuParams.columnLayout;\n columnSelectPanel.init(false, {\n suppressColumnMove: false,\n suppressValues: false,\n suppressPivots: false,\n suppressRowGroups: false,\n suppressPivotMode: false,\n contractColumnSelection: !!contractColumnSelection,\n suppressColumnExpandAll: !!suppressColumnExpandAll,\n suppressColumnFilter: !!suppressColumnFilter,\n suppressColumnSelectAll: !!suppressColumnSelectAll,\n suppressSyncLayoutWithGrid: !!columnLayout || !!suppressSyncLayoutWithGrid,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context\n }, 'columnMenu');\n if (columnLayout) {\n columnSelectPanel.setColumnLayout(columnLayout);\n }\n var columnSelectPanelGui = columnSelectPanel.getGui();\n columnSelectPanelGui.classList.add('ag-menu-column-select');\n eWrapperDiv.appendChild(columnSelectPanelGui);\n this.tabItemColumns = {\n title: _.createIconNoSpan('columns', this.gridOptionsService, this.column),\n titleLabel: EnterpriseMenu.TAB_COLUMNS.replace('MenuTab', ''),\n bodyPromise: AgPromise.resolve(eWrapperDiv),\n name: EnterpriseMenu.TAB_COLUMNS\n };\n return this.tabItemColumns;\n };\n EnterpriseMenu.prototype.afterGuiAttached = function (params) {\n var container = params.container, hidePopup = params.hidePopup;\n this.tabbedLayout.setAfterAttachedParams({ container: container, hidePopup: hidePopup });\n if (hidePopup) {\n this.hidePopupFunc = hidePopup;\n this.addDestroyFunc(hidePopup);\n }\n };\n EnterpriseMenu.prototype.getGui = function () {\n return this.tabbedLayout.getGui();\n };\n EnterpriseMenu.EVENT_TAB_SELECTED = 'tabSelected';\n EnterpriseMenu.TAB_FILTER = 'filterMenuTab';\n EnterpriseMenu.TAB_GENERAL = 'generalMenuTab';\n EnterpriseMenu.TAB_COLUMNS = 'columnsMenuTab';\n EnterpriseMenu.TABS_DEFAULT = [EnterpriseMenu.TAB_GENERAL, EnterpriseMenu.TAB_FILTER, EnterpriseMenu.TAB_COLUMNS];\n EnterpriseMenu.MENU_ITEM_SEPARATOR = 'separator';\n __decorate$C([\n Autowired('columnModel')\n ], EnterpriseMenu.prototype, \"columnModel\", void 0);\n __decorate$C([\n Autowired('filterManager')\n ], EnterpriseMenu.prototype, \"filterManager\", void 0);\n __decorate$C([\n Autowired('gridApi')\n ], EnterpriseMenu.prototype, \"gridApi\", void 0);\n __decorate$C([\n Autowired('columnApi')\n ], EnterpriseMenu.prototype, \"columnApi\", void 0);\n __decorate$C([\n Autowired('menuItemMapper')\n ], EnterpriseMenu.prototype, \"menuItemMapper\", void 0);\n __decorate$C([\n Autowired('rowModel')\n ], EnterpriseMenu.prototype, \"rowModel\", void 0);\n __decorate$C([\n Autowired('focusService')\n ], EnterpriseMenu.prototype, \"focusService\", void 0);\n __decorate$C([\n PostConstruct\n ], EnterpriseMenu.prototype, \"init\", null);\n return EnterpriseMenu;\n}(BeanStub));\n\nvar __extends$D = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$5 = (undefined && undefined.__assign) || function () {\n __assign$5 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$5.apply(this, arguments);\n};\nvar __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CSS_MENU = 'ag-menu';\nvar CSS_CONTEXT_MENU_OPEN = 'ag-context-menu-open';\nvar ContextMenuFactory = /** @class */ (function (_super) {\n __extends$D(ContextMenuFactory, _super);\n function ContextMenuFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ContextMenuFactory.prototype.hideActiveMenu = function () {\n this.destroyBean(this.activeMenu);\n };\n ContextMenuFactory.prototype.getMenuItems = function (node, column, value) {\n var defaultMenuOptions = [];\n if (_.exists(node) && ModuleRegistry.isRegistered(ModuleNames.ClipboardModule)) {\n if (column) {\n // only makes sense if column exists, could have originated from a row\n if (!this.gridOptionsService.is('suppressCutToClipboard')) {\n defaultMenuOptions.push('cut');\n }\n defaultMenuOptions.push('copy', 'copyWithHeaders', 'copyWithGroupHeaders', 'paste', 'separator');\n }\n }\n if (this.gridOptionsService.is('enableCharts') && ModuleRegistry.isRegistered(ModuleNames.GridChartsModule)) {\n if (this.columnModel.isPivotMode()) {\n defaultMenuOptions.push('pivotChart');\n }\n if (this.rangeService && !this.rangeService.isEmpty()) {\n defaultMenuOptions.push('chartRange');\n }\n }\n if (_.exists(node)) {\n // if user clicks a cell\n var csvModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n var excelModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.ExcelExportModule);\n var suppressExcel = this.gridOptionsService.is('suppressExcelExport') || excelModuleMissing;\n var suppressCsv = this.gridOptionsService.is('suppressCsvExport') || csvModuleMissing;\n var onIPad = _.isIOSUserAgent();\n var anyExport = !onIPad && (!suppressExcel || !suppressCsv);\n if (anyExport) {\n defaultMenuOptions.push('export');\n }\n }\n var userFunc = this.gridOptionsService.getCallback('getContextMenuItems');\n if (userFunc) {\n var params = {\n node: node,\n column: column,\n value: value,\n defaultItems: defaultMenuOptions.length ? defaultMenuOptions : undefined,\n };\n return userFunc(params);\n }\n return defaultMenuOptions;\n };\n ContextMenuFactory.prototype.onContextMenu = function (mouseEvent, touchEvent, rowNode, column, value, anchorToElement) {\n // to allow us to debug in chrome, we ignore the event if ctrl is pressed.\n // not everyone wants this, so first 'if' below allows to turn this hack off.\n if (!this.gridOptionsService.is('allowContextMenuWithControlKey')) {\n // then do the check\n if (mouseEvent && (mouseEvent.ctrlKey || mouseEvent.metaKey)) {\n return;\n }\n }\n // need to do this regardless of context menu showing or not, so doing\n // before the isSuppressContextMenu() check\n if (mouseEvent) {\n this.blockMiddleClickScrollsIfNeeded(mouseEvent);\n }\n if (this.gridOptionsService.is('suppressContextMenu')) {\n return;\n }\n var eventOrTouch = mouseEvent ? mouseEvent : touchEvent.touches[0];\n if (this.showMenu(rowNode, column, value, eventOrTouch, anchorToElement)) {\n var event_1 = mouseEvent ? mouseEvent : touchEvent;\n event_1.preventDefault();\n }\n };\n ContextMenuFactory.prototype.blockMiddleClickScrollsIfNeeded = function (mouseEvent) {\n // if we don't do this, then middle click will never result in a 'click' event, as 'mousedown'\n // will be consumed by the browser to mean 'scroll' (as you can scroll with the middle mouse\n // button in the browser). so this property allows the user to receive middle button clicks if\n // they want.\n var gridOptionsService = this.gridOptionsService;\n var which = mouseEvent.which;\n if (gridOptionsService.is('suppressMiddleClickScrolls') && which === 2) {\n mouseEvent.preventDefault();\n }\n };\n ContextMenuFactory.prototype.showMenu = function (node, column, value, mouseEvent, anchorToElement) {\n var _this = this;\n var menuItems = this.getMenuItems(node, column, value);\n var eGridBodyGui = this.ctrlsService.getGridBodyCtrl().getGui();\n if (menuItems === undefined || _.missingOrEmpty(menuItems)) {\n return false;\n }\n var menu = new ContextMenu(menuItems);\n this.createBean(menu);\n var eMenuGui = menu.getGui();\n var positionParams = {\n column: column,\n rowNode: node,\n type: 'contextMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenuGui,\n // move one pixel away so that accidentally double clicking\n // won't show the browser's contextmenu\n nudgeY: 1\n };\n var translate = this.localeService.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eMenuGui,\n closeOnEsc: true,\n closedCallback: function () {\n eGridBodyGui.classList.remove(CSS_CONTEXT_MENU_OPEN);\n _this.destroyBean(menu);\n },\n click: mouseEvent,\n positionCallback: function () {\n var isRtl = _this.gridOptionsService.is('enableRtl');\n _this.popupService.positionPopupUnderMouseEvent(__assign$5(__assign$5({}, positionParams), { nudgeX: isRtl ? (eMenuGui.offsetWidth + 1) * -1 : 1 }));\n },\n // so when browser is scrolled down, or grid is scrolled, context menu stays with cell\n anchorToElement: anchorToElement,\n ariaLabel: translate('ariaLabelContextMenu', 'Context Menu')\n });\n if (addPopupRes) {\n eGridBodyGui.classList.add(CSS_CONTEXT_MENU_OPEN);\n menu.afterGuiAttached({ container: 'contextMenu', hidePopup: addPopupRes.hideFunc });\n }\n // there should never be an active menu at this point, however it was found\n // that you could right click a second time just 1 or 2 pixels from the first\n // click, and another menu would pop up. so somehow the logic for closing the\n // first menu (clicking outside should close it) was glitchy somehow. an easy\n // way to avoid this is just remove the old context menu here if it exists.\n if (this.activeMenu) {\n this.hideActiveMenu();\n }\n this.activeMenu = menu;\n menu.addEventListener(BeanStub.EVENT_DESTROYED, function () {\n if (_this.activeMenu === menu) {\n _this.activeMenu = null;\n }\n });\n // hide the popup if something gets selected\n if (addPopupRes) {\n menu.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, addPopupRes.hideFunc);\n }\n return true;\n };\n __decorate$B([\n Autowired('popupService')\n ], ContextMenuFactory.prototype, \"popupService\", void 0);\n __decorate$B([\n Optional('rangeService')\n ], ContextMenuFactory.prototype, \"rangeService\", void 0);\n __decorate$B([\n Autowired('ctrlsService')\n ], ContextMenuFactory.prototype, \"ctrlsService\", void 0);\n __decorate$B([\n Autowired('columnModel')\n ], ContextMenuFactory.prototype, \"columnModel\", void 0);\n ContextMenuFactory = __decorate$B([\n Bean('contextMenuFactory')\n ], ContextMenuFactory);\n return ContextMenuFactory;\n}(BeanStub));\nvar ContextMenu = /** @class */ (function (_super) {\n __extends$D(ContextMenu, _super);\n function ContextMenu(menuItems) {\n var _this = _super.call(this, /* html */ \"<div class=\\\"\" + CSS_MENU + \"\\\" role=\\\"presentation\\\"></div>\") || this;\n _this.menuList = null;\n _this.focusedCell = null;\n _this.menuItems = menuItems;\n return _this;\n }\n ContextMenu.prototype.addMenuItems = function () {\n var _this = this;\n var menuList = this.createManagedBean(new AgMenuList());\n var menuItemsMapped = this.menuItemMapper.mapWithStockItems(this.menuItems, null);\n menuList.addMenuItems(menuItemsMapped);\n this.appendChild(menuList);\n this.menuList = menuList;\n menuList.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (e) { return _this.dispatchEvent(e); });\n };\n ContextMenu.prototype.afterGuiAttached = function (params) {\n if (params.hidePopup) {\n this.addDestroyFunc(params.hidePopup);\n }\n this.focusedCell = this.focusService.getFocusedCell();\n if (this.menuList) {\n this.focusService.focusInto(this.menuList.getGui());\n }\n };\n ContextMenu.prototype.restoreFocusedCell = function () {\n var currentFocusedCell = this.focusService.getFocusedCell();\n if (currentFocusedCell && this.focusedCell && this.cellPositionUtils.equals(currentFocusedCell, this.focusedCell)) {\n var _a = this.focusedCell, rowIndex = _a.rowIndex, rowPinned = _a.rowPinned, column = _a.column;\n var doc = this.gridOptionsService.getDocument();\n if (doc.activeElement === doc.body) {\n this.focusService.setFocusedCell({ rowIndex: rowIndex, column: column, rowPinned: rowPinned, forceBrowserFocus: true });\n }\n }\n };\n ContextMenu.prototype.destroy = function () {\n this.restoreFocusedCell();\n _super.prototype.destroy.call(this);\n };\n __decorate$B([\n Autowired('menuItemMapper')\n ], ContextMenu.prototype, \"menuItemMapper\", void 0);\n __decorate$B([\n Autowired('focusService')\n ], ContextMenu.prototype, \"focusService\", void 0);\n __decorate$B([\n Autowired('cellPositionUtils')\n ], ContextMenu.prototype, \"cellPositionUtils\", void 0);\n __decorate$B([\n PostConstruct\n ], ContextMenu.prototype, \"addMenuItems\", null);\n return ContextMenu;\n}(Component));\n\nvar __extends$C = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$4 = (undefined && undefined.__assign) || function () {\n __assign$4 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$4.apply(this, arguments);\n};\nvar __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MenuItemMapper = /** @class */ (function (_super) {\n __extends$C(MenuItemMapper, _super);\n function MenuItemMapper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MenuItemMapper.prototype.mapWithStockItems = function (originalList, column) {\n var _this = this;\n if (!originalList) {\n return [];\n }\n var resultList = [];\n originalList.forEach(function (menuItemOrString) {\n var result;\n if (typeof menuItemOrString === 'string') {\n result = _this.getStockMenuItem(menuItemOrString, column);\n }\n else {\n // Spread to prevent leaking mapped subMenus back into the original menuItem\n result = __assign$4({}, menuItemOrString);\n }\n // if no mapping, can happen when module is not loaded but user tries to use module anyway\n if (!result) {\n return;\n }\n var resultDef = result;\n var subMenu = resultDef.subMenu;\n if (subMenu && subMenu instanceof Array) {\n resultDef.subMenu = _this.mapWithStockItems(subMenu, column);\n }\n if (result != null) {\n resultList.push(result);\n }\n });\n return resultList;\n };\n MenuItemMapper.prototype.getStockMenuItem = function (key, column) {\n var _this = this;\n var _a;\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var skipHeaderOnAutoSize = this.gridOptionsService.is('skipHeaderOnAutoSize');\n switch (key) {\n case 'pinSubMenu':\n return {\n name: localeTextFunc('pinColumn', 'Pin Column'),\n icon: _.createIconNoSpan('menuPin', this.gridOptionsService, null),\n subMenu: ['clearPinned', 'pinLeft', 'pinRight']\n };\n case 'pinLeft':\n return {\n name: localeTextFunc('pinLeft', 'Pin Left'),\n action: function () { return _this.columnModel.setColumnPinned(column, 'left', \"contextMenu\"); },\n checked: !!column && column.isPinnedLeft()\n };\n case 'pinRight':\n return {\n name: localeTextFunc('pinRight', 'Pin Right'),\n action: function () { return _this.columnModel.setColumnPinned(column, 'right', \"contextMenu\"); },\n checked: !!column && column.isPinnedRight()\n };\n case 'clearPinned':\n return {\n name: localeTextFunc('noPin', 'No Pin'),\n action: function () { return _this.columnModel.setColumnPinned(column, null, \"contextMenu\"); },\n checked: !!column && !column.isPinned()\n };\n case 'valueAggSubMenu':\n if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Aggregation from Menu')) {\n if (!(column === null || column === void 0 ? void 0 : column.isPrimary()) && !(column === null || column === void 0 ? void 0 : column.getColDef().pivotValueColumn)) {\n return null;\n }\n return {\n name: localeTextFunc('valueAggregation', 'Value Aggregation'),\n icon: _.createIconNoSpan('menuValue', this.gridOptionsService, null),\n subMenu: this.createAggregationSubMenu(column)\n };\n }\n else {\n return null;\n }\n case 'autoSizeThis':\n return {\n name: localeTextFunc('autosizeThiscolumn', 'Autosize This Column'),\n action: function () { return _this.columnModel.autoSizeColumn(column, skipHeaderOnAutoSize, \"contextMenu\"); }\n };\n case 'autoSizeAll':\n return {\n name: localeTextFunc('autosizeAllColumns', 'Autosize All Columns'),\n action: function () { return _this.columnModel.autoSizeAllColumns(skipHeaderOnAutoSize, \"contextMenu\"); }\n };\n case 'rowGroup':\n return {\n name: localeTextFunc('groupBy', 'Group by') + ' ' + _.escapeString(this.columnModel.getDisplayNameForColumn(column, 'header')),\n action: function () { return _this.columnModel.addRowGroupColumn(column, \"contextMenu\"); },\n icon: _.createIconNoSpan('menuAddRowGroup', this.gridOptionsService, null)\n };\n case 'rowUnGroup':\n return {\n name: localeTextFunc('ungroupBy', 'Un-Group by') + ' ' + _.escapeString(this.columnModel.getDisplayNameForColumn(column, 'header')),\n action: function () { return _this.columnModel.removeRowGroupColumn(column, \"contextMenu\"); },\n icon: _.createIconNoSpan('menuRemoveRowGroup', this.gridOptionsService, null)\n };\n case 'resetColumns':\n return {\n name: localeTextFunc('resetColumns', 'Reset Columns'),\n action: function () { return _this.columnModel.resetColumnState(\"contextMenu\"); }\n };\n case 'expandAll':\n return {\n name: localeTextFunc('expandAll', 'Expand All'),\n action: function () { return _this.gridApi.expandAll(); }\n };\n case 'contractAll':\n return {\n name: localeTextFunc('collapseAll', 'Collapse All'),\n action: function () { return _this.gridApi.collapseAll(); }\n };\n case 'copy':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy from Menu')) {\n return {\n name: localeTextFunc('copy', 'Copy'),\n shortcut: localeTextFunc('ctrlC', 'Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsService, null),\n action: function () { return _this.clipboardService.copyToClipboard(); }\n };\n }\n else {\n return null;\n }\n case 'copyWithHeaders':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy with Headers from Menu')) {\n return {\n name: localeTextFunc('copyWithHeaders', 'Copy with Headers'),\n // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsService, null),\n action: function () { return _this.clipboardService.copyToClipboard({ includeHeaders: true }); }\n };\n }\n else {\n return null;\n }\n case 'copyWithGroupHeaders':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy with Group Headers from Menu')) {\n return {\n name: localeTextFunc('copyWithGroupHeaders', 'Copy with Group Headers'),\n // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsService, null),\n action: function () { return _this.clipboardService.copyToClipboard({ includeHeaders: true, includeGroupHeaders: true }); }\n };\n }\n else {\n return null;\n }\n case 'cut':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Cut from Menu')) {\n var focusedCell = this.focusService.getFocusedCell();\n var rowNode = focusedCell ? this.rowPositionUtils.getRowNode(focusedCell) : null;\n var isEditable = rowNode ? focusedCell === null || focusedCell === void 0 ? void 0 : focusedCell.column.isCellEditable(rowNode) : false;\n return {\n name: localeTextFunc('cut', 'Cut'),\n shortcut: localeTextFunc('ctrlX', 'Ctrl+X'),\n icon: _.createIconNoSpan('clipboardCut', this.gridOptionsService, null),\n disabled: !isEditable || this.gridOptionsService.is('suppressCutToClipboard'),\n action: function () { return _this.clipboardService.cutToClipboard(); }\n };\n }\n else {\n return null;\n }\n case 'paste':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Paste from Clipboard')) {\n return {\n name: localeTextFunc('paste', 'Paste'),\n shortcut: localeTextFunc('ctrlV', 'Ctrl+V'),\n disabled: true,\n icon: _.createIconNoSpan('clipboardPaste', this.gridOptionsService, null),\n action: function () { return _this.clipboardService.pasteFromClipboard(); }\n };\n }\n else {\n return null;\n }\n case 'export':\n var exportSubMenuItems = [];\n var csvModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n var excelModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.ExcelExportModule);\n if (!this.gridOptionsService.is('suppressCsvExport') && csvModuleLoaded) {\n exportSubMenuItems.push('csvExport');\n }\n if (!this.gridOptionsService.is('suppressExcelExport') && excelModuleLoaded) {\n exportSubMenuItems.push('excelExport');\n }\n return {\n name: localeTextFunc('export', 'Export'),\n subMenu: exportSubMenuItems,\n icon: _.createIconNoSpan('save', this.gridOptionsService, null),\n };\n case 'csvExport':\n return {\n name: localeTextFunc('csvExport', 'CSV Export'),\n icon: _.createIconNoSpan('csvExport', this.gridOptionsService, null),\n action: function () { return _this.gridApi.exportDataAsCsv({}); }\n };\n case 'excelExport':\n return {\n name: localeTextFunc('excelExport', 'Excel Export'),\n icon: _.createIconNoSpan('excelExport', this.gridOptionsService, null),\n action: function () { return _this.gridApi.exportDataAsExcel(); }\n };\n case 'separator':\n return 'separator';\n case 'pivotChart':\n case 'chartRange':\n return (_a = this.chartMenuItemMapper.getChartItems(key)) !== null && _a !== void 0 ? _a : null;\n default: {\n console.warn(\"AG Grid: unknown menu item type \" + key);\n return null;\n }\n }\n };\n MenuItemMapper.prototype.createAggregationSubMenu = function (column) {\n var _this = this;\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var columnToUse;\n if (column.isPrimary()) {\n columnToUse = column;\n }\n else {\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n columnToUse = _.exists(pivotValueColumn) ? pivotValueColumn : undefined;\n }\n var result = [];\n if (columnToUse) {\n var columnIsAlreadyAggValue_1 = columnToUse.isValueActive();\n var funcNames = this.aggFuncService.getFuncNames(columnToUse);\n result.push({\n name: localeTextFunc('noAggregation', 'None'),\n action: function () {\n _this.columnModel.removeValueColumn(columnToUse, \"contextMenu\");\n _this.columnModel.setColumnAggFunc(columnToUse, undefined, \"contextMenu\");\n },\n checked: !columnIsAlreadyAggValue_1\n });\n funcNames.forEach(function (funcName) {\n result.push({\n name: localeTextFunc(funcName, _.capitalise(funcName)),\n action: function () {\n _this.columnModel.setColumnAggFunc(columnToUse, funcName, \"contextMenu\");\n _this.columnModel.addValueColumn(columnToUse, \"contextMenu\");\n },\n checked: columnIsAlreadyAggValue_1 && columnToUse.getAggFunc() === funcName\n });\n });\n }\n return result;\n };\n __decorate$A([\n Autowired('columnModel')\n ], MenuItemMapper.prototype, \"columnModel\", void 0);\n __decorate$A([\n Autowired('gridApi')\n ], MenuItemMapper.prototype, \"gridApi\", void 0);\n __decorate$A([\n Optional('clipboardService')\n ], MenuItemMapper.prototype, \"clipboardService\", void 0);\n __decorate$A([\n Optional('aggFuncService')\n ], MenuItemMapper.prototype, \"aggFuncService\", void 0);\n __decorate$A([\n Autowired('focusService')\n ], MenuItemMapper.prototype, \"focusService\", void 0);\n __decorate$A([\n Autowired('rowPositionUtils')\n ], MenuItemMapper.prototype, \"rowPositionUtils\", void 0);\n __decorate$A([\n Autowired('chartMenuItemMapper')\n ], MenuItemMapper.prototype, \"chartMenuItemMapper\", void 0);\n MenuItemMapper = __decorate$A([\n Bean('menuItemMapper')\n ], MenuItemMapper);\n return MenuItemMapper;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$7 = '29.3.5';\n\nvar __extends$B = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$3 = (undefined && undefined.__assign) || function () {\n __assign$3 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$3.apply(this, arguments);\n};\nvar __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$8 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar ChartMenuItemMapper = /** @class */ (function (_super) {\n __extends$B(ChartMenuItemMapper, _super);\n function ChartMenuItemMapper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartMenuItemMapper_1 = ChartMenuItemMapper;\n ChartMenuItemMapper.prototype.getChartItems = function (key) {\n var _a, _b;\n if (!this.chartService) {\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, \"the Context Menu key \\\"\" + key + \"\\\"\");\n return undefined;\n }\n var builder = key === 'pivotChart'\n ? new PivotMenuItemMapper(this.gridOptionsService, this.chartService, this.localeService)\n : new RangeMenuItemMapper(this.gridOptionsService, this.chartService, this.localeService);\n var topLevelMenuItem = builder.getMenuItem();\n var chartGroupsDef = (_b = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.settingsPanel) === null || _b === void 0 ? void 0 : _b.chartGroupsDef;\n if (chartGroupsDef) {\n // Apply filtering and ordering if chartGroupsDef provided\n topLevelMenuItem = ChartMenuItemMapper_1.filterAndOrderChartMenu(topLevelMenuItem, chartGroupsDef, builder.getConfigLookup());\n }\n return this.cleanInternals(topLevelMenuItem);\n };\n // Remove our internal _key properties so this does not leak out of the class on the menu items.\n ChartMenuItemMapper.prototype.cleanInternals = function (menuItem) {\n if (!menuItem) {\n return menuItem;\n }\n var removeKey = function (m) {\n var _a;\n m === null || m === void 0 ? true : delete m._key;\n (_a = m === null || m === void 0 ? void 0 : m.subMenu) === null || _a === void 0 ? void 0 : _a.forEach(function (s) { return removeKey(s); });\n return m;\n };\n return removeKey(menuItem);\n };\n ChartMenuItemMapper.buildLookup = function (menuItem) {\n var itemLookup = {};\n var addItem = function (item) {\n itemLookup[item._key] = item;\n if (item.subMenu) {\n item.subMenu.forEach(function (s) { return addItem(s); });\n }\n };\n addItem(menuItem);\n return itemLookup;\n };\n /**\n * Make the MenuItem match the charts provided and their ordering on the ChartGroupsDef config object as provided by the user.\n */\n ChartMenuItemMapper.filterAndOrderChartMenu = function (topLevelMenuItem, chartGroupsDef, configLookup) {\n var _a;\n var menuItemLookup = this.buildLookup(topLevelMenuItem);\n var orderedAndFiltered = __assign$3(__assign$3({}, topLevelMenuItem), { subMenu: [] });\n Object.entries(chartGroupsDef).forEach(function (_a) {\n var _b, _c;\n var _d = __read$8(_a, 2), group = _d[0], chartTypes = _d[1];\n var chartConfigGroup = configLookup[group];\n if (chartConfigGroup == undefined) {\n _.doOnce(function () { return console.warn(\"AG Grid - invalid chartGroupsDef config '\" + group + \"'\"); }, \"invalid_chartGroupsDef\" + group);\n return undefined;\n }\n var menuItem = menuItemLookup[chartConfigGroup._key];\n if (menuItem) {\n if (menuItem.subMenu) {\n var subMenus = chartTypes.map(function (chartType) {\n var itemKey = chartConfigGroup[chartType];\n if (itemKey == undefined) {\n _.doOnce(function () { return console.warn(\"AG Grid - invalid chartGroupsDef config '\" + group + \".\" + chartType + \"'\"); }, \"invalid_chartGroupsDef\" + chartType + \"_\" + group);\n return undefined;\n }\n return menuItemLookup[itemKey];\n }).filter(function (s) { return s !== undefined; });\n if (subMenus.length > 0) {\n menuItem.subMenu = subMenus;\n (_b = orderedAndFiltered.subMenu) === null || _b === void 0 ? void 0 : _b.push(menuItem);\n }\n }\n else {\n // Handles line case which is not actually a sub subMenu\n (_c = orderedAndFiltered.subMenu) === null || _c === void 0 ? void 0 : _c.push(menuItem);\n }\n }\n });\n if (((_a = orderedAndFiltered.subMenu) === null || _a === void 0 ? void 0 : _a.length) == 0) {\n return undefined;\n }\n return orderedAndFiltered;\n };\n var ChartMenuItemMapper_1;\n __decorate$z([\n Optional('chartService')\n ], ChartMenuItemMapper.prototype, \"chartService\", void 0);\n ChartMenuItemMapper = ChartMenuItemMapper_1 = __decorate$z([\n Bean('chartMenuItemMapper')\n ], ChartMenuItemMapper);\n return ChartMenuItemMapper;\n}(BeanStub));\nvar PivotMenuItemMapper = /** @class */ (function () {\n function PivotMenuItemMapper(gridOptionsService, chartService, localeService) {\n this.gridOptionsService = gridOptionsService;\n this.chartService = chartService;\n this.localeService = localeService;\n }\n PivotMenuItemMapper.prototype.getMenuItem = function () {\n var _this = this;\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var getMenuItem = function (localeKey, defaultText, chartType, key) {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: function () { return _this.chartService.createPivotChart({ chartType: chartType }); },\n _key: key\n };\n };\n return {\n name: localeTextFunc('pivotChart', 'Pivot Chart'),\n _key: 'pivotChart',\n subMenu: [\n {\n _key: 'pivotColumnChart',\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: [\n getMenuItem('groupedColumn', 'Grouped‎', 'groupedColumn', 'pivotGroupedColumn'),\n getMenuItem('stackedColumn', 'Stacked‎', 'stackedColumn', 'pivotStackedColumn'),\n getMenuItem('normalizedColumn', '100% Stacked‎', 'normalizedColumn', 'pivotNormalizedColumn')\n ]\n },\n {\n _key: 'pivotBarChart',\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: [\n getMenuItem('groupedBar', 'Grouped‎', 'groupedBar', 'pivotGroupedBar'),\n getMenuItem('stackedBar', 'Stacked‎', 'stackedBar', 'pivotStackedBar'),\n getMenuItem('normalizedBar', '100% Stacked‎', 'normalizedBar', 'pivotNormalizedBar')\n ]\n },\n {\n _key: 'pivotPieChart',\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: [\n getMenuItem('pie', 'Pie‎', 'pie', 'pivotPie'),\n getMenuItem('doughnut', 'Doughnut‎', 'doughnut', 'pivotDoughnut')\n ]\n },\n getMenuItem('line', 'Line‎', 'line', 'pivotLineChart'),\n {\n _key: 'pivotXYChart',\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: [\n getMenuItem('scatter', 'Scatter‎', 'scatter', 'pivotScatter'),\n getMenuItem('bubble', 'Bubble‎', 'bubble', 'pivotBubble')\n ]\n },\n {\n _key: 'pivotAreaChart',\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: [\n getMenuItem('area', 'Area‎', 'area', 'pivotArea'),\n getMenuItem('stackedArea', 'Stacked‎', 'stackedArea', 'pivotStackedArea'),\n getMenuItem('normalizedArea', '100% Stacked‎', 'normalizedArea', 'pivotNormalizedArea')\n ]\n },\n getMenuItem('histogramChart', 'Histogram‎', 'histogram', 'pivotHistogramChart'),\n {\n _key: 'pivotCombinationChart',\n name: localeTextFunc('combinationChart', 'Combination'),\n subMenu: [\n getMenuItem('columnLineCombo', 'Column & Line‎', 'columnLineCombo', 'pivotColumnLineCombo'),\n getMenuItem('AreaColumnCombo', 'Area & Column‎', 'areaColumnCombo', 'pivotAreaColumnCombo')\n ]\n }\n ],\n icon: _.createIconNoSpan('chart', this.gridOptionsService, undefined),\n };\n };\n PivotMenuItemMapper.prototype.getConfigLookup = function () {\n return {\n columnGroup: {\n _key: 'pivotColumnChart',\n column: 'pivotGroupedColumn',\n stackedColumn: 'pivotStackedColumn',\n normalizedColumn: 'pivotNormalizedColumn',\n },\n barGroup: {\n _key: 'pivotBarChart',\n bar: 'pivotGroupedBar',\n stackedBar: 'pivotStackedBar',\n normalizedBar: 'pivotNormalizedBar',\n },\n pieGroup: {\n _key: 'pivotPieChart',\n pie: 'pivotPie',\n doughnut: 'pivotDoughnut',\n },\n lineGroup: {\n _key: 'pivotLineChart',\n line: 'pivotLineChart',\n },\n scatterGroup: {\n _key: 'pivotXYChart',\n bubble: 'pivotBubble',\n scatter: 'pivotScatter',\n },\n areaGroup: {\n _key: 'pivotAreaChart',\n area: 'pivotArea',\n stackedArea: 'pivotStackedArea',\n normalizedArea: 'pivotNormalizedArea',\n },\n histogramGroup: {\n _key: 'pivotHistogramChart',\n histogram: 'pivotHistogramChart',\n },\n combinationGroup: {\n _key: 'pivotCombinationChart',\n columnLineCombo: 'pivotColumnLineCombo',\n areaColumnCombo: 'pivotAreaColumnCombo',\n customCombo: '' // Not currently supported but needs a value to separate from a missing value\n }\n };\n };\n return PivotMenuItemMapper;\n}());\nvar RangeMenuItemMapper = /** @class */ (function () {\n function RangeMenuItemMapper(gridOptionsService, chartService, localeService) {\n this.gridOptionsService = gridOptionsService;\n this.chartService = chartService;\n this.localeService = localeService;\n }\n RangeMenuItemMapper.prototype.getMenuItem = function () {\n var _this = this;\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var getMenuItem = function (localeKey, defaultText, chartType, key) {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: function () { return _this.chartService.createChartFromCurrentRange(chartType); },\n _key: key\n };\n };\n return {\n name: localeTextFunc('chartRange', 'Chart Range'),\n _key: 'chartRange',\n subMenu: [\n {\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: [\n getMenuItem('groupedColumn', 'Grouped‎', 'groupedColumn', 'rangeGroupedColumn'),\n getMenuItem('stackedColumn', 'Stacked‎', 'stackedColumn', 'rangeStackedColumn'),\n getMenuItem('normalizedColumn', '100% Stacked‎', 'normalizedColumn', 'rangeNormalizedColumn')\n ],\n _key: 'rangeColumnChart'\n },\n {\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: [\n getMenuItem('groupedBar', 'Grouped‎', 'groupedBar', 'rangeGroupedBar'),\n getMenuItem('stackedBar', 'Stacked‎', 'stackedBar', 'rangeStackedBar'),\n getMenuItem('normalizedBar', '100% Stacked‎', 'normalizedBar', 'rangeNormalizedBar')\n ],\n _key: 'rangeBarChart'\n },\n {\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: [\n getMenuItem('pie', 'Pie‎', 'pie', 'rangePie'),\n getMenuItem('doughnut', 'Doughnut‎', 'doughnut', 'rangeDoughnut')\n ],\n _key: 'rangePieChart'\n },\n getMenuItem('line', 'Line‎', 'line', 'rangeLineChart'),\n {\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: [\n getMenuItem('scatter', 'Scatter‎', 'scatter', 'rangeScatter'),\n getMenuItem('bubble', 'Bubble‎', 'bubble', 'rangeBubble')\n ],\n _key: 'rangeXYChart'\n },\n {\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: [\n getMenuItem('area', 'Area‎', 'area', 'rangeArea'),\n getMenuItem('stackedArea', 'Stacked‎', 'stackedArea', 'rangeStackedArea'),\n getMenuItem('normalizedArea', '100% Stacked‎', 'normalizedArea', 'rangeNormalizedArea')\n ],\n _key: 'rangeAreaChart'\n },\n getMenuItem('histogramChart', 'Histogram‎', 'histogram', 'rangeHistogramChart'),\n {\n name: localeTextFunc('combinationChart', 'Combination'),\n subMenu: [\n getMenuItem('columnLineCombo', 'Column & Line‎', 'columnLineCombo', 'rangeColumnLineCombo'),\n getMenuItem('AreaColumnCombo', 'Area & Column‎', 'areaColumnCombo', 'rangeAreaColumnCombo')\n ],\n _key: 'rangeCombinationChart'\n }\n ],\n icon: _.createIconNoSpan('chart', this.gridOptionsService, undefined),\n };\n };\n RangeMenuItemMapper.prototype.getConfigLookup = function () {\n return {\n columnGroup: {\n _key: 'rangeColumnChart',\n column: 'rangeGroupedColumn',\n stackedColumn: 'rangeStackedColumn',\n normalizedColumn: 'rangeNormalizedColumn',\n },\n barGroup: {\n _key: 'rangeBarChart',\n bar: 'rangeGroupedBar',\n stackedBar: 'rangeStackedBar',\n normalizedBar: 'rangeNormalizedBar',\n },\n pieGroup: {\n _key: 'rangePieChart',\n pie: 'rangePie',\n doughnut: 'rangeDoughnut',\n },\n lineGroup: {\n _key: 'rangeLineChart',\n line: 'rangeLineChart',\n },\n scatterGroup: {\n _key: 'rangeXYChart',\n bubble: 'rangeBubble',\n scatter: 'rangeScatter',\n },\n areaGroup: {\n _key: 'rangeAreaChart',\n area: 'rangeArea',\n stackedArea: 'rangeStackedArea',\n normalizedArea: 'rangeNormalizedArea',\n },\n histogramGroup: {\n _key: 'rangeHistogramChart',\n histogram: 'rangeHistogramChart',\n },\n combinationGroup: {\n _key: 'rangeCombinationChart',\n columnLineCombo: 'rangeColumnLineCombo',\n areaColumnCombo: 'rangeAreaColumnCombo',\n customCombo: '' // Not currently supported but needs a value to separate from a missing value\n }\n };\n };\n return RangeMenuItemMapper;\n}());\n\nvar MenuModule = {\n version: VERSION$7,\n moduleName: ModuleNames.MenuModule,\n beans: [EnterpriseMenuFactory, ContextMenuFactory, MenuItemMapper, ChartMenuItemMapper],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\nvar __extends$A = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$2 = (undefined && undefined.__assign) || function () {\n __assign$2 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$2.apply(this, arguments);\n};\nvar __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MultiFilter = /** @class */ (function (_super) {\n __extends$A(MultiFilter, _super);\n function MultiFilter() {\n var _this = _super.call(this, /* html */ \"<div class=\\\"ag-multi-filter ag-menu-list-compact\\\"></div>\") || this;\n _this.filterDefs = [];\n _this.filters = [];\n _this.guiDestroyFuncs = [];\n _this.activeFilterIndices = [];\n _this.lastActivatedMenuItem = null;\n _this.afterFiltersReadyFuncs = [];\n return _this;\n }\n MultiFilter.prototype.postConstruct = function () {\n var _this = this;\n this.initialiseTabGuard({\n onFocusIn: function (e) { return _this.onFocusIn(e); }\n });\n };\n MultiFilter.getFilterDefs = function (params) {\n var filters = params.filters;\n return filters && filters.length > 0 ?\n filters :\n [{ filter: 'agTextColumnFilter' }, { filter: 'agSetColumnFilter' }];\n };\n MultiFilter.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n this.filterDefs = MultiFilter.getFilterDefs(params);\n var column = params.column, filterChangedCallback = params.filterChangedCallback;\n this.column = column;\n this.filterChangedCallback = filterChangedCallback;\n var filterPromises = [];\n this.filterDefs.forEach(function (filterDef, index) {\n var filterPromise = _this.createFilter(filterDef, index);\n if (filterPromise != null) {\n filterPromises.push(filterPromise);\n }\n });\n // we have to refresh the GUI here to ensure that Angular components are not rendered in odd places\n return AgPromise\n .all(filterPromises)\n .then(function (filters) {\n _this.filters = filters;\n _this.refreshGui('columnMenu');\n _this.afterFiltersReadyFuncs.forEach(function (f) { return f(); });\n _this.afterFiltersReadyFuncs.length = 0;\n });\n };\n MultiFilter.prototype.refreshGui = function (container) {\n var _this = this;\n if (container === this.lastOpenedInContainer) {\n return;\n }\n this.removeAllChildrenExceptTabGuards();\n this.destroyChildren();\n this.filters.forEach(function (filter, index) {\n if (index > 0) {\n _this.appendChild(_.loadTemplate(/* html */ \"<div class=\\\"ag-filter-separator\\\"></div>\"));\n }\n var filterDef = _this.filterDefs[index];\n var filterTitle = _this.getFilterTitle(filter, filterDef);\n var filterGui;\n if (filterDef.display === 'subMenu' && container !== 'toolPanel') {\n // prevent sub-menu being used in tool panel\n var menuItem = _this.insertFilterMenu(filter, filterTitle);\n filterGui = menuItem.getGui();\n }\n else if (filterDef.display === 'subMenu' || filterDef.display === 'accordion') {\n // sub-menus should appear as groups in the tool panel\n var group = _this.insertFilterGroup(filter, filterTitle);\n filterGui = group.getGui();\n }\n else {\n // display inline\n filterGui = filter.getGui();\n }\n _this.appendChild(filterGui);\n });\n this.lastOpenedInContainer = container;\n };\n MultiFilter.prototype.getFilterTitle = function (filter, filterDef) {\n if (filterDef.title != null) {\n return filterDef.title;\n }\n var filterWithoutType = filter;\n return typeof filterWithoutType.getFilterTitle === 'function' ? filterWithoutType.getFilterTitle() : 'Filter';\n };\n MultiFilter.prototype.destroyChildren = function () {\n this.guiDestroyFuncs.forEach(function (func) { return func(); });\n this.guiDestroyFuncs.length = 0;\n };\n MultiFilter.prototype.insertFilterMenu = function (filter, name) {\n var _this = this;\n var menuItem = this.createBean(new AgMenuItemComponent({\n name: name,\n subMenu: filter,\n cssClasses: ['ag-multi-filter-menu-item'],\n isCompact: true,\n isAnotherSubMenuOpen: function () { return false; },\n }));\n menuItem.setParentComponent(this);\n this.guiDestroyFuncs.push(function () { return _this.destroyBean(menuItem); });\n this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED, function (event) {\n if (_this.lastActivatedMenuItem && _this.lastActivatedMenuItem !== event.menuItem) {\n _this.lastActivatedMenuItem.deactivate();\n }\n _this.lastActivatedMenuItem = event.menuItem;\n });\n menuItem.addGuiEventListener('focusin', function () { return menuItem.activate(); });\n menuItem.addGuiEventListener('focusout', function () {\n if (!menuItem.isSubMenuOpen()) {\n menuItem.deactivate();\n }\n });\n return menuItem;\n };\n MultiFilter.prototype.insertFilterGroup = function (filter, title) {\n var _this = this;\n var group = this.createBean(new AgGroupComponent({\n title: title,\n cssIdentifier: 'multi-filter',\n }));\n this.guiDestroyFuncs.push(function () { return _this.destroyBean(group); });\n group.addItem(filter.getGui());\n group.toggleGroupExpand(false);\n if (filter.afterGuiAttached) {\n var params_1 = { container: this.lastOpenedInContainer, suppressFocus: true };\n group.addManagedListener(group, AgGroupComponent.EVENT_EXPANDED, function () { return filter.afterGuiAttached(params_1); });\n }\n return group;\n };\n MultiFilter.prototype.isFilterActive = function () {\n return this.filters.some(function (filter) { return filter.isFilterActive(); });\n };\n MultiFilter.prototype.getLastActiveFilterIndex = function () {\n return this.activeFilterIndices.length > 0 ? this.activeFilterIndices[this.activeFilterIndices.length - 1] : null;\n };\n MultiFilter.prototype.doesFilterPass = function (params, filterToSkip) {\n var rowPasses = true;\n this.filters.forEach(function (filter) {\n if (!rowPasses || filter === filterToSkip || !filter.isFilterActive()) {\n return;\n }\n rowPasses = filter.doesFilterPass(params);\n });\n return rowPasses;\n };\n MultiFilter.prototype.getFilterType = function () {\n return 'multi';\n };\n MultiFilter.prototype.getModelFromUi = function () {\n var model = {\n filterType: this.getFilterType(),\n filterModels: this.filters.map(function (filter) {\n var providedFilter = filter;\n if (typeof providedFilter.getModelFromUi === 'function') {\n return providedFilter.getModelFromUi();\n }\n return null;\n })\n };\n return model;\n };\n MultiFilter.prototype.getModel = function () {\n if (!this.isFilterActive()) {\n return null;\n }\n var model = {\n filterType: this.getFilterType(),\n filterModels: this.filters.map(function (filter) {\n if (filter.isFilterActive()) {\n return filter.getModel();\n }\n return null;\n })\n };\n return model;\n };\n MultiFilter.prototype.setModel = function (model) {\n var _this = this;\n var setFilterModel = function (filter, filterModel) {\n return new AgPromise(function (resolve) {\n var promise = filter.setModel(filterModel);\n promise ? promise.then(function () { return resolve(); }) : resolve();\n });\n };\n var promises = [];\n if (model == null) {\n promises = this.filters.map(function (filter, index) {\n var res = setFilterModel(filter, null).then(function () {\n _this.updateActiveList(index);\n });\n return res;\n });\n }\n else {\n this.filters.forEach(function (filter, index) {\n var filterModel = model.filterModels.length > index ? model.filterModels[index] : null;\n var res = setFilterModel(filter, filterModel).then(function () {\n _this.updateActiveList(index);\n });\n promises.push(res);\n });\n }\n return AgPromise.all(promises).then(function () { });\n };\n MultiFilter.prototype.applyModel = function (source) {\n if (source === void 0) { source = 'api'; }\n var result = false;\n this.filters.forEach(function (filter) {\n if (filter instanceof ProvidedFilter) {\n result = filter.applyModel(source) || result;\n }\n });\n return result;\n };\n MultiFilter.prototype.getChildFilterInstance = function (index) {\n return this.filters[index];\n };\n MultiFilter.prototype.afterGuiAttached = function (params) {\n if (params) {\n this.refreshGui(params.container);\n }\n var filters = this.params.filters;\n var suppressFocus = filters && filters.some(function (filter) { return filter.display && filter.display !== 'inline'; });\n this.executeFunctionIfExists('afterGuiAttached', __assign$2(__assign$2({}, params || {}), { suppressFocus: suppressFocus }));\n var eDocument = this.gridOptionsService.getDocument();\n var activeEl = eDocument.activeElement;\n // if suppress focus is true, we might run into two scenarios:\n // 1 - we are loading the filter for the first time and the component isn't ready,\n // which means the document will have focus.\n // 2 - The focus will be somewhere inside the component due to auto focus\n // In both cases we need to force the focus somewhere valid but outside the filter.\n if (suppressFocus && (activeEl === eDocument.body || this.getGui().contains(activeEl))) {\n // reset focus to the top of the container, and blur\n this.forceFocusOutOfContainer(true);\n }\n };\n MultiFilter.prototype.afterGuiDetached = function () {\n this.executeFunctionIfExists('afterGuiDetached');\n };\n MultiFilter.prototype.onAnyFilterChanged = function () {\n this.executeFunctionIfExists('onAnyFilterChanged');\n };\n MultiFilter.prototype.onNewRowsLoaded = function () {\n this.executeFunctionIfExists('onNewRowsLoaded');\n };\n MultiFilter.prototype.destroy = function () {\n var _this = this;\n this.filters.forEach(function (filter) {\n filter.setModel(null);\n _this.destroyBean(filter);\n });\n this.filters.length = 0;\n this.destroyChildren();\n _super.prototype.destroy.call(this);\n };\n MultiFilter.prototype.executeFunctionIfExists = function (name) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n // The first filter is always the \"dominant\" one. By iterating in reverse order we ensure the first filter\n // always gets the last say\n _.forEachReverse(this.filters, function (filter) {\n var func = filter[name];\n if (typeof func === 'function') {\n func.apply(filter, params);\n }\n });\n };\n MultiFilter.prototype.createFilter = function (filterDef, index) {\n var _this = this;\n var _a = this.params, filterModifiedCallback = _a.filterModifiedCallback, doesRowPassOtherFilter = _a.doesRowPassOtherFilter;\n var filterInstance;\n var filterParams = __assign$2(__assign$2({}, this.filterManager.createFilterParams(this.column, this.column.getColDef())), { filterModifiedCallback: filterModifiedCallback, filterChangedCallback: function (additionalEventAttributes) {\n _this.executeWhenAllFiltersReady(function () { return _this.filterChanged(index, additionalEventAttributes); });\n }, doesRowPassOtherFilter: function (node) {\n return doesRowPassOtherFilter(node) && _this.doesFilterPass({ node: node, data: node.data }, filterInstance);\n } });\n var compDetails = this.userComponentFactory.getFilterDetails(filterDef, filterParams, 'agTextColumnFilter');\n if (!compDetails) {\n return null;\n }\n var filterPromise = compDetails.newAgStackInstance();\n if (filterPromise) {\n filterPromise.then(function (filter) { return filterInstance = filter; });\n }\n return filterPromise;\n };\n MultiFilter.prototype.executeWhenAllFiltersReady = function (action) {\n if (this.filters && this.filters.length > 0) {\n action();\n }\n else {\n this.afterFiltersReadyFuncs.push(action);\n }\n };\n MultiFilter.prototype.updateActiveList = function (index) {\n var changedFilter = this.filters[index];\n _.removeFromArray(this.activeFilterIndices, index);\n if (changedFilter.isFilterActive()) {\n this.activeFilterIndices.push(index);\n }\n };\n MultiFilter.prototype.filterChanged = function (index, additionalEventAttributes) {\n this.updateActiveList(index);\n this.filterChangedCallback(additionalEventAttributes);\n var changedFilter = this.filters[index];\n this.filters.forEach(function (filter) {\n if (filter === changedFilter) {\n return;\n }\n if (typeof filter.onAnyFilterChanged === 'function') {\n filter.onAnyFilterChanged();\n }\n });\n };\n MultiFilter.prototype.onFocusIn = function (e) {\n if (this.lastActivatedMenuItem != null && !this.lastActivatedMenuItem.getGui().contains(e.target)) {\n this.lastActivatedMenuItem.deactivate();\n this.lastActivatedMenuItem = null;\n }\n return true;\n };\n MultiFilter.prototype.getModelAsString = function (model) {\n var _a, _b, _c, _d;\n if (!this.filters || !((_a = model === null || model === void 0 ? void 0 : model.filterModels) === null || _a === void 0 ? void 0 : _a.length)) {\n return '';\n }\n var lastActiveIndex = (_b = this.getLastActiveFilterIndex()) !== null && _b !== void 0 ? _b : 0;\n var activeFilter = this.filters[lastActiveIndex];\n return (_d = (_c = activeFilter.getModelAsString) === null || _c === void 0 ? void 0 : _c.call(activeFilter, model.filterModels[lastActiveIndex])) !== null && _d !== void 0 ? _d : '';\n };\n __decorate$y([\n Autowired('filterManager')\n ], MultiFilter.prototype, \"filterManager\", void 0);\n __decorate$y([\n Autowired('userComponentFactory')\n ], MultiFilter.prototype, \"userComponentFactory\", void 0);\n __decorate$y([\n PostConstruct\n ], MultiFilter.prototype, \"postConstruct\", null);\n return MultiFilter;\n}(TabGuardComp));\n\nvar __extends$z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$1 = (undefined && undefined.__assign) || function () {\n __assign$1 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$1.apply(this, arguments);\n};\nvar __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MultiFloatingFilterComp = /** @class */ (function (_super) {\n __extends$z(MultiFloatingFilterComp, _super);\n function MultiFloatingFilterComp() {\n var _this = _super.call(this, /* html */ \"<div class=\\\"ag-multi-floating-filter ag-floating-filter-input\\\"></div>\") || this;\n _this.floatingFilters = [];\n return _this;\n }\n MultiFloatingFilterComp.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n var filterParams = params.filterParams;\n var floatingFilterPromises = [];\n MultiFilter.getFilterDefs(filterParams).forEach(function (filterDef, index) {\n var floatingFilterParams = __assign$1(__assign$1({}, params), { \n // set the parent filter instance for each floating filter to the relevant child filter instance\n parentFilterInstance: function (callback) {\n _this.parentMultiFilterInstance(function (parent) {\n var child = parent.getChildFilterInstance(index);\n if (child == null) {\n return;\n }\n callback(child);\n });\n } });\n _.mergeDeep(floatingFilterParams.filterParams, filterDef.filterParams);\n var floatingFilterPromise = _this.createFloatingFilter(filterDef, floatingFilterParams);\n if (floatingFilterPromise != null) {\n floatingFilterPromises.push(floatingFilterPromise);\n }\n });\n return AgPromise.all(floatingFilterPromises).then(function (floatingFilters) {\n floatingFilters.forEach(function (floatingFilter, index) {\n _this.floatingFilters.push(floatingFilter);\n var gui = floatingFilter.getGui();\n _this.appendChild(gui);\n if (index > 0) {\n _.setDisplayed(gui, false);\n }\n });\n });\n };\n MultiFloatingFilterComp.prototype.onParentModelChanged = function (model, event) {\n var _this = this;\n // We don't want to update the floating filter if the floating filter caused the change,\n // because the UI is already in sync. if we didn't do this, the UI would behave strangely\n // as it would be updating as the user is typing\n if (event && event.afterFloatingFilter) {\n return;\n }\n this.parentMultiFilterInstance(function (parent) {\n if (model == null) {\n _this.floatingFilters.forEach(function (filter, i) {\n filter.onParentModelChanged(null, event);\n _.setDisplayed(filter.getGui(), i === 0);\n });\n }\n else {\n var lastActiveFloatingFilterIndex_1 = parent.getLastActiveFilterIndex();\n _this.floatingFilters.forEach(function (filter, i) {\n var filterModel = model.filterModels.length > i ? model.filterModels[i] : null;\n filter.onParentModelChanged(filterModel, event);\n var shouldShow = lastActiveFloatingFilterIndex_1 == null ? i === 0 : i === lastActiveFloatingFilterIndex_1;\n _.setDisplayed(filter.getGui(), shouldShow);\n });\n }\n });\n };\n MultiFloatingFilterComp.prototype.destroy = function () {\n this.destroyBeans(this.floatingFilters);\n this.floatingFilters.length = 0;\n _super.prototype.destroy.call(this);\n };\n MultiFloatingFilterComp.prototype.createFloatingFilter = function (filterDef, params) {\n var _a;\n var defaultComponentName = (_a = this.userComponentFactory.getDefaultFloatingFilterType(filterDef)) !== null && _a !== void 0 ? _a : 'agReadOnlyFloatingFilter';\n var compDetails = this.userComponentFactory.getFloatingFilterCompDetails(filterDef, params, defaultComponentName);\n return compDetails ? compDetails.newAgStackInstance() : null;\n };\n MultiFloatingFilterComp.prototype.parentMultiFilterInstance = function (cb) {\n this.params.parentFilterInstance(function (parent) {\n if (!(parent instanceof MultiFilter)) {\n throw new Error('AG Grid - MultiFloatingFilterComp expects MultiFilter as its parent');\n }\n cb(parent);\n });\n };\n __decorate$x([\n Autowired('userComponentFactory')\n ], MultiFloatingFilterComp.prototype, \"userComponentFactory\", void 0);\n return MultiFloatingFilterComp;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$6 = '29.3.5';\n\nvar MultiFilterModule = {\n version: VERSION$6,\n moduleName: ModuleNames.MultiFilterModule,\n beans: [],\n userComponents: [\n { componentName: 'agMultiColumnFilter', componentClass: MultiFilter },\n { componentName: 'agMultiColumnFloatingFilter', componentClass: MultiFloatingFilterComp },\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\n/**\n * cell renderers are used in a few places. they bind to dom slightly differently to other cell renderes as they\n * can return back strings (instead of html elemnt) in the getGui() method. common code placed here to handle that.\n * @param {AgPromise<ICellRendererComp>} cellRendererPromise\n * @param {HTMLElement} eTarget\n */\nfunction bindCellRendererToHtmlElement(cellRendererPromise, eTarget) {\n cellRendererPromise.then(function (cellRenderer) {\n var gui = cellRenderer.getGui();\n if (gui != null) {\n if (typeof gui === 'object') {\n eTarget.appendChild(gui);\n }\n else {\n eTarget.innerHTML = gui;\n }\n }\n });\n}\n\nvar __extends$y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RichSelectRow = /** @class */ (function (_super) {\n __extends$y(RichSelectRow, _super);\n function RichSelectRow(params) {\n var _this = _super.call(this, /* html */ \"<div class=\\\"ag-rich-select-row\\\" role=\\\"presentation\\\"></div>\") || this;\n _this.params = params;\n return _this;\n }\n RichSelectRow.prototype.setState = function (value, valueFormatted, selected) {\n var rendererSuccessful = this.populateWithRenderer(value, valueFormatted);\n if (!rendererSuccessful) {\n this.populateWithoutRenderer(value, valueFormatted);\n }\n this.updateSelected(selected);\n };\n RichSelectRow.prototype.updateSelected = function (selected) {\n this.addOrRemoveCssClass('ag-rich-select-row-selected', selected);\n };\n RichSelectRow.prototype.populateWithoutRenderer = function (value, valueFormatted) {\n var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n var valueToRender = valueFormattedExits ? valueFormatted : value;\n if (_.exists(valueToRender) && valueToRender !== '') {\n // not using innerHTML to prevent injection of HTML\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML#Security_considerations\n this.getGui().textContent = valueToRender.toString();\n }\n else {\n // putting in blank, so if missing, at least the user can click on it\n this.getGui().innerHTML = ' ';\n }\n };\n RichSelectRow.prototype.populateWithRenderer = function (value, valueFormatted) {\n var _this = this;\n // bad coder here - we are not populating all values of the cellRendererParams\n var params = {\n value: value,\n valueFormatted: valueFormatted,\n api: this.gridOptionsService.api\n };\n var compDetails = this.userComponentFactory.getCellRendererDetails(this.params, params);\n var cellRendererPromise = compDetails ? compDetails.newAgStackInstance() : undefined;\n if (cellRendererPromise != null) {\n bindCellRendererToHtmlElement(cellRendererPromise, this.getGui());\n }\n else {\n this.getGui().innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n if (cellRendererPromise) {\n cellRendererPromise.then(function (childComponent) {\n _this.addDestroyFunc(function () {\n _this.getContext().destroyBean(childComponent);\n });\n });\n return true;\n }\n return false;\n };\n __decorate$w([\n Autowired('userComponentFactory')\n ], RichSelectRow.prototype, \"userComponentFactory\", void 0);\n return RichSelectRow;\n}(Component));\n\nvar __extends$x = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RichSelectCellEditor = /** @class */ (function (_super) {\n __extends$x(RichSelectCellEditor, _super);\n function RichSelectCellEditor() {\n var _this = _super.call(this, RichSelectCellEditor.TEMPLATE) || this;\n _this.selectionConfirmed = false;\n _this.searchString = '';\n return _this;\n }\n RichSelectCellEditor.prototype.init = function (params) {\n this.params = params;\n this.selectedValue = params.value;\n this.originalSelectedValue = params.value;\n this.focusAfterAttached = params.cellStartedEdit;\n var icon = _.createIconNoSpan('smallDown', this.gridOptionsService);\n icon.classList.add('ag-rich-select-value-icon');\n this.eValue.appendChild(icon);\n this.virtualList = this.createManagedBean(new VirtualList('rich-select'));\n this.virtualList.setComponentCreator(this.createRowComponent.bind(this));\n this.eList.appendChild(this.virtualList.getGui());\n if (_.exists(this.params.cellHeight)) {\n this.virtualList.setRowHeight(this.params.cellHeight);\n }\n this.renderSelectedValue();\n if (_.missing(params.values)) {\n console.warn('AG Grid: richSelectCellEditor requires values for it to work');\n return;\n }\n var values = params.values;\n this.virtualList.setModel({\n getRowCount: function () { return values.length; },\n getRow: function (index) { return values[index]; }\n });\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n var virtualListGui = this.virtualList.getGui();\n this.addManagedListener(virtualListGui, 'click', this.onClick.bind(this));\n this.addManagedListener(virtualListGui, 'mousemove', this.onMouseMove.bind(this));\n var debounceDelay = _.exists(params.searchDebounceDelay) ? params.searchDebounceDelay : 300;\n this.clearSearchString = _.debounce(this.clearSearchString, debounceDelay);\n if (_.exists(params.charPress)) {\n this.searchText(params.charPress);\n }\n };\n RichSelectCellEditor.prototype.onKeyDown = function (event) {\n var key = event.key;\n event.preventDefault();\n switch (key) {\n case KeyCode.ENTER:\n this.onEnterKeyDown();\n break;\n case KeyCode.TAB:\n this.confirmSelection();\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n this.onNavigationKeyPressed(event, key);\n break;\n default:\n this.searchText(event);\n }\n };\n RichSelectCellEditor.prototype.confirmSelection = function () {\n this.selectionConfirmed = true;\n };\n RichSelectCellEditor.prototype.onEnterKeyDown = function () {\n this.confirmSelection();\n this.params.stopEditing();\n };\n RichSelectCellEditor.prototype.onNavigationKeyPressed = function (event, key) {\n // if we don't preventDefault the page body and/or grid scroll will move.\n event.preventDefault();\n var oldIndex = this.params.values.indexOf(this.selectedValue);\n var newIndex = key === KeyCode.UP ? oldIndex - 1 : oldIndex + 1;\n if (newIndex >= 0 && newIndex < this.params.values.length) {\n var valueToSelect = this.params.values[newIndex];\n this.setSelectedValue(valueToSelect);\n }\n };\n RichSelectCellEditor.prototype.searchText = function (key) {\n if (typeof key !== 'string') {\n var keyString = key.key;\n if (keyString === KeyCode.BACKSPACE) {\n this.searchString = this.searchString.slice(0, -1);\n keyString = '';\n }\n else if (!_.isEventFromPrintableCharacter(key)) {\n return;\n }\n this.searchText(keyString);\n return;\n }\n this.searchString += key;\n this.runSearch();\n this.clearSearchString();\n };\n RichSelectCellEditor.prototype.runSearch = function () {\n var _this = this;\n var values = this.params.values;\n var searchStrings;\n if (typeof values[0] === 'number' || typeof values[0] === 'string') {\n searchStrings = values.map(function (v) { return _this.params.formatValue(v); });\n }\n if (typeof values[0] === 'object' && this.params.colDef.keyCreator) {\n searchStrings = values.map(function (value) {\n var keyParams = {\n value: value,\n colDef: _this.params.colDef,\n column: _this.params.column,\n node: _this.params.node,\n data: _this.params.data,\n api: _this.gridOptionsService.api,\n columnApi: _this.gridOptionsService.columnApi,\n context: _this.gridOptionsService.context\n };\n return _this.params.colDef.keyCreator(keyParams);\n });\n }\n if (!searchStrings) {\n return;\n }\n var topSuggestion = _.fuzzySuggestions(this.searchString, searchStrings, true)[0];\n if (!topSuggestion) {\n return;\n }\n var topSuggestionIndex = searchStrings.indexOf(topSuggestion);\n var topValue = values[topSuggestionIndex];\n this.setSelectedValue(topValue);\n };\n RichSelectCellEditor.prototype.clearSearchString = function () {\n this.searchString = '';\n };\n RichSelectCellEditor.prototype.renderSelectedValue = function () {\n var _this = this;\n var valueFormatted = this.params.formatValue(this.selectedValue);\n var eValue = this.eValue;\n var params = {\n value: this.selectedValue,\n valueFormatted: valueFormatted,\n api: this.gridOptionsService.api,\n };\n var compDetails = this.userComponentFactory.getCellRendererDetails(this.params, params);\n var promise = compDetails ? compDetails.newAgStackInstance() : undefined;\n if (promise) {\n bindCellRendererToHtmlElement(promise, eValue);\n promise.then(function (renderer) {\n _this.addDestroyFunc(function () { return _this.getContext().destroyBean(renderer); });\n });\n }\n else {\n if (_.exists(this.selectedValue)) {\n eValue.innerText = valueFormatted;\n }\n else {\n _.clearElement(eValue);\n }\n }\n };\n RichSelectCellEditor.prototype.setSelectedValue = function (value) {\n if (this.selectedValue === value) {\n return;\n }\n var index = this.params.values.indexOf(value);\n if (index === -1) {\n return;\n }\n this.selectedValue = value;\n this.virtualList.ensureIndexVisible(index);\n this.virtualList.forEachRenderedRow(function (cmp, idx) {\n cmp.updateSelected(index === idx);\n });\n this.virtualList.focusRow(index);\n };\n RichSelectCellEditor.prototype.createRowComponent = function (value) {\n var valueFormatted = this.params.formatValue(value);\n var row = new RichSelectRow(this.params);\n this.getContext().createBean(row);\n row.setState(value, valueFormatted, value === this.selectedValue);\n return row;\n };\n RichSelectCellEditor.prototype.onMouseMove = function (mouseEvent) {\n var rect = this.virtualList.getGui().getBoundingClientRect();\n var scrollTop = this.virtualList.getScrollTop();\n var mouseY = mouseEvent.clientY - rect.top + scrollTop;\n var row = Math.floor(mouseY / this.virtualList.getRowHeight());\n var value = this.params.values[row];\n // not using utils.exist() as want empty string test to pass\n if (value !== undefined) {\n this.setSelectedValue(value);\n }\n };\n RichSelectCellEditor.prototype.onClick = function () {\n this.confirmSelection();\n this.params.stopEditing();\n };\n // we need to have the gui attached before we can draw the virtual rows, as the\n // virtual row logic needs info about the gui state\n RichSelectCellEditor.prototype.afterGuiAttached = function () {\n var selectedIndex = this.params.values.indexOf(this.selectedValue);\n // we have to call this here to get the list to have the right height, ie\n // otherwise it would not have scrolls yet and ensureIndexVisible would do nothing\n this.virtualList.refresh();\n if (selectedIndex >= 0) {\n this.virtualList.ensureIndexVisible(selectedIndex);\n }\n // we call refresh again, as the list could of moved, and we need to render the new rows\n this.virtualList.refresh();\n if (this.focusAfterAttached) {\n var indexToSelect = selectedIndex !== -1 ? selectedIndex : 0;\n if (this.params.values.length) {\n this.virtualList.focusRow(indexToSelect);\n }\n else {\n this.getGui().focus();\n }\n }\n };\n RichSelectCellEditor.prototype.getValue = function () {\n // NOTE: we don't use valueParser for Set Filter. The user should provide values that are to be\n // set into the data. valueParser only really makese sense when the user is typing in text (not picking\n // form a set).\n return this.selectionConfirmed ? this.selectedValue : this.originalSelectedValue;\n };\n // tab index is needed so we can focus, which is needed for keyboard events\n RichSelectCellEditor.TEMPLATE = \"<div class=\\\"ag-rich-select\\\" tabindex=\\\"-1\\\">\\n <div ref=\\\"eValue\\\" class=\\\"ag-rich-select-value\\\"></div>\\n <div ref=\\\"eList\\\" class=\\\"ag-rich-select-list\\\"></div>\\n </div>\";\n __decorate$v([\n Autowired('userComponentFactory')\n ], RichSelectCellEditor.prototype, \"userComponentFactory\", void 0);\n __decorate$v([\n RefSelector('eValue')\n ], RichSelectCellEditor.prototype, \"eValue\", void 0);\n __decorate$v([\n RefSelector('eList')\n ], RichSelectCellEditor.prototype, \"eList\", void 0);\n return RichSelectCellEditor;\n}(PopupComponent));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$5 = '29.3.5';\n\nvar RichSelectModule = {\n version: VERSION$5,\n moduleName: ModuleNames.RichSelectModule,\n beans: [],\n userComponents: [\n { componentName: 'agRichSelect', componentClass: RichSelectCellEditor },\n { componentName: 'agRichSelectCellEditor', componentClass: RichSelectCellEditor }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\nvar __extends$w = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FullStore = /** @class */ (function (_super) {\n __extends$w(FullStore, _super);\n function FullStore(ssrmParams, storeParams, parentRowNode) {\n var _this = \n // finite block represents a cache with just one block, thus 0 is the id, it's the first block\n _super.call(this, 0) || this;\n _this.nodeIdSequence = new NumberSequence();\n _this.info = {};\n _this.ssrmParams = ssrmParams;\n _this.parentRowNode = parentRowNode;\n _this.level = parentRowNode.level + 1;\n _this.groupLevel = ssrmParams.rowGroupCols ? _this.level < ssrmParams.rowGroupCols.length : undefined;\n _this.leafGroup = ssrmParams.rowGroupCols ? _this.level === ssrmParams.rowGroupCols.length - 1 : false;\n return _this;\n }\n FullStore.prototype.postConstruct = function () {\n var _this = this;\n this.usingTreeData = this.gridOptionsService.isTreeData();\n this.nodeIdPrefix = this.blockUtils.createNodeIdPrefix(this.parentRowNode);\n if (!this.usingTreeData && this.groupLevel) {\n var groupColVo = this.ssrmParams.rowGroupCols[this.level];\n this.groupField = groupColVo.field;\n this.rowGroupColumn = this.columnModel.getRowGroupColumns()[this.level];\n }\n var initialRowCount = 1;\n var isRootStore = this.parentRowNode.level === -1;\n var userInitialRowCount = this.storeUtils.getServerSideInitialRowCount();\n if (isRootStore && userInitialRowCount !== undefined) {\n initialRowCount = userInitialRowCount;\n }\n this.initialiseRowNodes(initialRowCount);\n this.rowNodeBlockLoader.addBlock(this);\n this.addDestroyFunc(function () { return _this.rowNodeBlockLoader.removeBlock(_this); });\n };\n FullStore.prototype.destroyRowNodes = function () {\n this.blockUtils.destroyRowNodes(this.allRowNodes);\n this.allRowNodes = [];\n this.nodesAfterSort = [];\n this.nodesAfterFilter = [];\n this.allNodesMap = {};\n };\n FullStore.prototype.initialiseRowNodes = function (loadingRowsCount, failedLoad) {\n if (failedLoad === void 0) { failedLoad = false; }\n this.destroyRowNodes();\n for (var i = 0; i < loadingRowsCount; i++) {\n var loadingRowNode = this.blockUtils.createRowNode({\n field: this.groupField,\n group: this.groupLevel,\n leafGroup: this.leafGroup,\n level: this.level, parent: this.parentRowNode, rowGroupColumn: this.rowGroupColumn\n });\n if (failedLoad) {\n loadingRowNode.failedLoad = true;\n }\n this.allRowNodes.push(loadingRowNode);\n this.nodesAfterFilter.push(loadingRowNode);\n this.nodesAfterSort.push(loadingRowNode);\n }\n };\n FullStore.prototype.getBlockStateJson = function () {\n return {\n id: this.nodeIdPrefix ? this.nodeIdPrefix : '',\n state: this.getState()\n };\n };\n FullStore.prototype.loadFromDatasource = function () {\n this.storeUtils.loadFromDatasource({\n startRow: undefined,\n endRow: undefined,\n parentBlock: this,\n parentNode: this.parentRowNode,\n storeParams: this.ssrmParams,\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n success: this.success.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this, this.getVersion()),\n fail: this.pageLoadFailed.bind(this, this.getVersion())\n });\n };\n FullStore.prototype.getStartRow = function () {\n return 0; // always zero as not in a cache\n };\n FullStore.prototype.getEndRow = function () {\n return this.nodesAfterSort.length;\n };\n FullStore.prototype.createDataNode = function (data, index) {\n var rowNode = this.blockUtils.createRowNode({\n field: this.groupField,\n group: this.groupLevel,\n leafGroup: this.leafGroup,\n level: this.level, parent: this.parentRowNode, rowGroupColumn: this.rowGroupColumn\n });\n if (index != null) {\n _.insertIntoArray(this.allRowNodes, rowNode, index);\n }\n else {\n this.allRowNodes.push(rowNode);\n }\n var defaultId = this.prefixId(this.nodeIdSequence.next());\n this.blockUtils.setDataIntoRowNode(rowNode, data, defaultId, undefined);\n this.nodeManager.addRowNode(rowNode);\n this.blockUtils.checkOpenByDefault(rowNode);\n this.allNodesMap[rowNode.id] = rowNode;\n return rowNode;\n };\n FullStore.prototype.prefixId = function (id) {\n if (this.nodeIdPrefix) {\n return this.nodeIdPrefix + '-' + id;\n }\n else {\n return id.toString();\n }\n };\n FullStore.prototype.processServerFail = function () {\n this.initialiseRowNodes(1, true);\n this.fireStoreUpdatedEvent();\n this.flushAsyncTransactions();\n };\n FullStore.prototype.processServerResult = function (params) {\n if (!this.isAlive()) {\n return;\n }\n var info = params.storeInfo || params.groupLevelInfo;\n if (info) {\n Object.assign(this.info, info);\n }\n var nodesToRecycle = this.allRowNodes.length > 0 ? this.allNodesMap : undefined;\n this.allRowNodes = [];\n this.nodesAfterSort = [];\n this.nodesAfterFilter = [];\n this.allNodesMap = {};\n if (!params.rowData) {\n var message_1 = 'AG Grid: \"params.data\" is missing from Server-Side Row Model success() callback. Please use the \"data\" attribute. If no data is returned, set an empty list.';\n _.doOnce(function () { return console.warn(message_1, params); }, 'FullStore.noData');\n }\n this.createOrRecycleNodes(nodesToRecycle, params.rowData);\n if (nodesToRecycle) {\n this.blockUtils.destroyRowNodes(_.getAllValuesInObject(nodesToRecycle));\n }\n this.filterAndSortNodes();\n this.fireStoreUpdatedEvent();\n this.flushAsyncTransactions();\n };\n FullStore.prototype.createOrRecycleNodes = function (nodesToRecycle, rowData) {\n var _this = this;\n if (!rowData) {\n return;\n }\n var lookupNodeToRecycle = function (data) {\n if (!nodesToRecycle) {\n return undefined;\n }\n var getRowIdFunc = _this.gridOptionsService.getRowIdFunc();\n if (!getRowIdFunc) {\n return undefined;\n }\n var parentKeys = _this.parentRowNode.getGroupKeys();\n var level = _this.level;\n var id = getRowIdFunc({\n data: data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level: level,\n });\n var foundNode = nodesToRecycle[id];\n if (!foundNode) {\n return undefined;\n }\n delete nodesToRecycle[id];\n return foundNode;\n };\n var recycleNode = function (rowNode, dataItem) {\n _this.allNodesMap[rowNode.id] = rowNode;\n _this.blockUtils.updateDataIntoRowNode(rowNode, dataItem);\n _this.allRowNodes.push(rowNode);\n };\n rowData.forEach(function (dataItem) {\n var nodeToRecycle = lookupNodeToRecycle(dataItem);\n if (nodeToRecycle) {\n recycleNode(nodeToRecycle, dataItem);\n }\n else {\n _this.createDataNode(dataItem);\n }\n });\n };\n FullStore.prototype.flushAsyncTransactions = function () {\n var _this = this;\n // we want to update the store with any outstanding transactions straight away,\n // as otherwise if waitTimeMillis is large (eg 5s), then the user could be looking\n // at old data for a few seconds before the transactions is applied, which isn't what\n // you would expect when we advertise 'transaction is applied when data is loaded'.\n // we do this in a timeout as flushAsyncTransactions expects the grid to be in a settled\n // state, not in the middle of loading rows! keeps the VM Turns more simple and deterministic.\n window.setTimeout(function () { return _this.transactionManager.flushAsyncTransactions(); }, 0);\n };\n FullStore.prototype.filterAndSortNodes = function () {\n this.filterRowNodes();\n this.sortRowNodes();\n };\n FullStore.prototype.sortRowNodes = function () {\n var serverIsSorting = this.storeUtils.isServerSideSortAllLevels() || this.storeUtils.isServerSideSortOnServer();\n var sortOptions = this.sortController.getSortOptions();\n var noSortApplied = !sortOptions || sortOptions.length == 0;\n if (serverIsSorting || noSortApplied) {\n this.nodesAfterSort = this.nodesAfterFilter;\n return;\n }\n this.nodesAfterSort = this.rowNodeSorter.doFullSort(this.nodesAfterFilter, sortOptions);\n };\n FullStore.prototype.filterRowNodes = function () {\n var _this = this;\n var serverIsFiltering = this.storeUtils.isServerSideFilterAllLevels() || this.storeUtils.isServerSideFilterOnServer();\n // filtering for InFullStore only works at lowest level details.\n // reason is the logic for group filtering was to difficult to work out how it should work at time of writing.\n var groupLevel = this.groupLevel;\n if (serverIsFiltering || groupLevel) {\n this.nodesAfterFilter = this.allRowNodes;\n return;\n }\n this.nodesAfterFilter = this.allRowNodes.filter(function (rowNode) { return _this.filterManager.doesRowPassFilter({ rowNode: rowNode }); });\n };\n FullStore.prototype.clearDisplayIndexes = function () {\n var _this = this;\n this.displayIndexStart = undefined;\n this.displayIndexEnd = undefined;\n this.allRowNodes.forEach(function (rowNode) { return _this.blockUtils.clearDisplayIndex(rowNode); });\n };\n FullStore.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n FullStore.prototype.isDisplayIndexInStore = function (displayIndex) {\n if (this.getRowCount() === 0) {\n return false;\n }\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n FullStore.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n var _this = this;\n this.displayIndexStart = displayIndexSeq.peek();\n this.topPx = nextRowTop.value;\n var visibleNodeIds = {};\n // set on all visible nodes\n this.nodesAfterSort.forEach(function (rowNode) {\n _this.blockUtils.setDisplayIndex(rowNode, displayIndexSeq, nextRowTop);\n visibleNodeIds[rowNode.id] = true;\n });\n // and clear on all non-visible nodes\n this.allRowNodes.forEach(function (rowNode) {\n if (!visibleNodeIds[rowNode.id]) {\n _this.blockUtils.clearDisplayIndex(rowNode);\n }\n });\n this.displayIndexEnd = displayIndexSeq.peek();\n this.heightPx = nextRowTop.value - this.topPx;\n };\n FullStore.prototype.forEachStoreDeep = function (callback, sequence) {\n if (sequence === void 0) { sequence = new NumberSequence(); }\n callback(this, sequence.next());\n this.allRowNodes.forEach(function (rowNode) {\n var childCache = rowNode.childStore;\n if (childCache) {\n childCache.forEachStoreDeep(callback, sequence);\n }\n });\n };\n FullStore.prototype.forEachNodeDeep = function (callback, sequence) {\n if (sequence === void 0) { sequence = new NumberSequence(); }\n this.allRowNodes.forEach(function (rowNode) {\n callback(rowNode, sequence.next());\n var childCache = rowNode.childStore;\n if (childCache) {\n childCache.forEachNodeDeep(callback, sequence);\n }\n });\n };\n FullStore.prototype.forEachNodeDeepAfterFilterAndSort = function (callback, sequence) {\n if (sequence === void 0) { sequence = new NumberSequence(); }\n this.nodesAfterSort.forEach(function (rowNode) {\n callback(rowNode, sequence.next());\n var childCache = rowNode.childStore;\n if (childCache) {\n childCache.forEachNodeDeepAfterFilterAndSort(callback, sequence);\n }\n });\n };\n FullStore.prototype.getRowUsingDisplayIndex = function (displayRowIndex) {\n // this can happen if asking for a row that doesn't exist in the model,\n // eg if a cell range is selected, and the user filters so rows no longer exists\n if (!this.isDisplayIndexInStore(displayRowIndex)) {\n return undefined;\n }\n var res = this.blockUtils.binarySearchForDisplayIndex(displayRowIndex, this.nodesAfterSort);\n return res;\n };\n FullStore.prototype.getRowBounds = function (index) {\n for (var i = 0; i < this.nodesAfterSort.length; i++) {\n var rowNode = this.nodesAfterSort[i];\n var res = this.blockUtils.extractRowBounds(rowNode, index);\n if (res) {\n return res;\n }\n }\n return null;\n };\n FullStore.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.topPx && pixel < (this.topPx + this.heightPx);\n };\n FullStore.prototype.getRowIndexAtPixel = function (pixel) {\n var _this = this;\n // if pixel before block, return first row\n var pixelBeforeThisStore = pixel <= this.topPx;\n if (pixelBeforeThisStore) {\n var firstNode = this.nodesAfterSort[0];\n return firstNode.rowIndex;\n }\n // if pixel after store, return last row, however the last\n // row could be a child store\n var pixelAfterThisStore = pixel >= (this.topPx + this.heightPx);\n if (pixelAfterThisStore) {\n var lastRowNode = this.nodesAfterSort[this.nodesAfterSort.length - 1];\n var lastRowNodeBottomPx = lastRowNode.rowTop + lastRowNode.rowHeight;\n if (pixel >= lastRowNodeBottomPx && lastRowNode.expanded) {\n if (lastRowNode.childStore && lastRowNode.childStore.getRowCount() > 0) {\n return lastRowNode.childStore.getRowIndexAtPixel(pixel);\n }\n if (lastRowNode.detailNode) {\n return lastRowNode.detailNode.rowIndex;\n }\n }\n return lastRowNode.rowIndex;\n }\n var res = null;\n this.nodesAfterSort.forEach(function (rowNode) {\n var res2 = _this.blockUtils.getIndexAtPixel(rowNode, pixel);\n if (res2 != null) {\n res = res2;\n }\n });\n var pixelIsPastLastRow = res == null;\n if (pixelIsPastLastRow) {\n return this.displayIndexEnd - 1;\n }\n return res;\n };\n FullStore.prototype.getChildStore = function (keys) {\n var _this = this;\n return this.storeUtils.getChildStore(keys, this, function (key) {\n var rowNode = _this.allRowNodes.find(function (currentRowNode) {\n return currentRowNode.key == key;\n });\n return rowNode;\n });\n };\n FullStore.prototype.forEachChildStoreShallow = function (callback) {\n this.allRowNodes.forEach(function (rowNode) {\n var childStore = rowNode.childStore;\n if (childStore) {\n callback(childStore);\n }\n });\n };\n FullStore.prototype.refreshAfterFilter = function (params) {\n var serverIsFiltering = this.storeUtils.isServerSideFilterOnServer();\n var storeIsImpacted = this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params);\n var serverIsFilteringAllLevels = this.storeUtils.isServerSideFilterAllLevels();\n if (serverIsFilteringAllLevels || (serverIsFiltering && storeIsImpacted)) {\n this.refreshStore(true);\n this.sortRowNodes();\n return;\n }\n this.filterRowNodes();\n this.sortRowNodes();\n this.forEachChildStoreShallow(function (store) { return store.refreshAfterFilter(params); });\n };\n FullStore.prototype.refreshAfterSort = function (params) {\n var serverIsSorting = this.storeUtils.isServerSideSortOnServer();\n var storeIsImpacted = this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params);\n var serverIsSortingAllLevels = this.storeUtils.isServerSideSortAllLevels();\n if (serverIsSortingAllLevels || (serverIsSorting && storeIsImpacted)) {\n this.refreshStore(true);\n this.filterRowNodes();\n return;\n }\n this.filterRowNodes();\n this.sortRowNodes();\n this.forEachChildStoreShallow(function (store) { return store.refreshAfterSort(params); });\n };\n FullStore.prototype.applyTransaction = function (transaction) {\n // we only apply transactions to loaded state\n switch (this.getState()) {\n case RowNodeBlock.STATE_FAILED:\n return { status: ServerSideTransactionResultStatus.StoreLoadingFailed };\n case RowNodeBlock.STATE_LOADING:\n return { status: ServerSideTransactionResultStatus.StoreLoading };\n case RowNodeBlock.STATE_WAITING_TO_LOAD:\n return { status: ServerSideTransactionResultStatus.StoreWaitingToLoad };\n }\n var applyCallback = this.gridOptionsService.getCallback('isApplyServerSideTransaction');\n if (applyCallback) {\n var params = {\n transaction: transaction,\n parentNode: this.parentRowNode,\n storeInfo: this.info,\n groupLevelInfo: this.info\n };\n var apply = applyCallback(params);\n if (!apply) {\n return { status: ServerSideTransactionResultStatus.Cancelled };\n }\n }\n var res = {\n status: ServerSideTransactionResultStatus.Applied,\n remove: [],\n update: [],\n add: []\n };\n var nodesToUnselect = [];\n this.executeAdd(transaction, res);\n this.executeRemove(transaction, res, nodesToUnselect);\n this.executeUpdate(transaction, res, nodesToUnselect);\n this.filterAndSortNodes();\n this.updateSelection(nodesToUnselect);\n return res;\n };\n FullStore.prototype.updateSelection = function (nodesToUnselect) {\n var selectionChanged = nodesToUnselect.length > 0;\n if (selectionChanged) {\n nodesToUnselect.forEach(function (rowNode) {\n rowNode.setSelected(false, false, true, 'rowDataChanged');\n });\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: 'rowDataChanged'\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n FullStore.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var add = rowDataTran.add, addIndex = rowDataTran.addIndex;\n if (_.missingOrEmpty(add)) {\n return;\n }\n var useIndex = typeof addIndex === 'number' && addIndex >= 0;\n if (useIndex) {\n // items get inserted in reverse order for index insertion\n add.reverse().forEach(function (item) {\n var newRowNode = _this.createDataNode(item, addIndex);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n else {\n add.forEach(function (item) {\n var newRowNode = _this.createDataNode(item);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n };\n FullStore.prototype.executeRemove = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var remove = rowDataTran.remove;\n if (remove == null) {\n return;\n }\n var rowIdsRemoved = {};\n remove.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n // do delete - setting 'suppressFinishActions = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n if (rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n // so row renderer knows to fade row out (and not reposition it)\n rowNode.clearRowTopAndRowIndex();\n // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially\n // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list\n rowIdsRemoved[rowNode.id] = true;\n // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n delete _this.allNodesMap[rowNode.id];\n rowNodeTransaction.remove.push(rowNode);\n _this.nodeManager.removeNode(rowNode);\n });\n this.allRowNodes = this.allRowNodes.filter(function (rowNode) { return !rowIdsRemoved[rowNode.id]; });\n };\n FullStore.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var update = rowDataTran.update;\n if (update == null) {\n return;\n }\n update.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n _this.blockUtils.updateDataIntoRowNode(rowNode, item);\n if (!rowNode.selectable && rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n rowNodeTransaction.update.push(rowNode);\n });\n };\n FullStore.prototype.lookupRowNode = function (data) {\n var getRowIdFunc = this.gridOptionsService.getRowIdFunc();\n var rowNode;\n if (getRowIdFunc != null) {\n // find rowNode using id\n var level = this.level;\n var parentKeys = this.parentRowNode.getGroupKeys();\n var id = getRowIdFunc({\n data: data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level: level,\n });\n rowNode = this.allNodesMap[id];\n if (!rowNode) {\n console.error(\"AG Grid: could not find row id=\" + id + \", data item was not found for this id\");\n return null;\n }\n }\n else {\n // find rowNode using object references\n rowNode = this.allRowNodes.find(function (currentRowNode) { return currentRowNode.data === data; });\n if (!rowNode) {\n console.error(\"AG Grid: could not find data item as object was not found\", data);\n return null;\n }\n }\n return rowNode;\n };\n FullStore.prototype.addStoreStates = function (result) {\n result.push({\n suppressInfiniteScroll: true,\n route: this.parentRowNode.getGroupKeys(),\n rowCount: this.allRowNodes.length,\n info: this.info\n });\n this.forEachChildStoreShallow(function (childStore) { return childStore.addStoreStates(result); });\n };\n FullStore.prototype.refreshStore = function (purge) {\n if (purge) {\n var loadingRowsToShow = this.nodesAfterSort ? this.nodesAfterSort.length : 1;\n this.initialiseRowNodes(loadingRowsToShow);\n }\n this.scheduleLoad();\n this.fireStoreUpdatedEvent();\n };\n FullStore.prototype.retryLoads = function () {\n if (this.getState() === RowNodeBlock.STATE_FAILED) {\n this.initialiseRowNodes(1);\n this.scheduleLoad();\n }\n this.forEachChildStoreShallow(function (store) { return store.retryLoads(); });\n };\n FullStore.prototype.scheduleLoad = function () {\n this.setStateWaitingToLoad();\n this.rowNodeBlockLoader.checkBlockToLoad();\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n FullStore.prototype.fireStoreUpdatedEvent = function () {\n // this results in row model firing ModelUpdated.\n // server side row model also updates the row indexes first\n var event = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event);\n };\n FullStore.prototype.getRowCount = function () {\n return this.nodesAfterSort.length;\n };\n FullStore.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var rowNode = this.nodesAfterSort[topLevelIndex];\n return rowNode.rowIndex;\n };\n FullStore.prototype.isLastRowIndexKnown = function () {\n return this.getState() == RowNodeBlock.STATE_LOADED;\n };\n FullStore.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var result = [];\n var inActiveRange = false;\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) {\n inActiveRange = true;\n }\n this.nodesAfterSort.forEach(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = inActiveRange;\n return invalidRange ? [] : result;\n };\n FullStore.prototype.getStoreBounds = function () {\n return {\n topPx: this.topPx,\n heightPx: this.heightPx,\n };\n };\n __decorate$u([\n Autowired('ssrmStoreUtils')\n ], FullStore.prototype, \"storeUtils\", void 0);\n __decorate$u([\n Autowired('ssrmBlockUtils')\n ], FullStore.prototype, \"blockUtils\", void 0);\n __decorate$u([\n Autowired('columnModel')\n ], FullStore.prototype, \"columnModel\", void 0);\n __decorate$u([\n Autowired('rowNodeBlockLoader')\n ], FullStore.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$u([\n Autowired('rowNodeSorter')\n ], FullStore.prototype, \"rowNodeSorter\", void 0);\n __decorate$u([\n Autowired('sortController')\n ], FullStore.prototype, \"sortController\", void 0);\n __decorate$u([\n Autowired('ssrmNodeManager')\n ], FullStore.prototype, \"nodeManager\", void 0);\n __decorate$u([\n Autowired('filterManager')\n ], FullStore.prototype, \"filterManager\", void 0);\n __decorate$u([\n Autowired('ssrmTransactionManager')\n ], FullStore.prototype, \"transactionManager\", void 0);\n __decorate$u([\n PostConstruct\n ], FullStore.prototype, \"postConstruct\", null);\n __decorate$u([\n PreDestroy\n ], FullStore.prototype, \"destroyRowNodes\", null);\n return FullStore;\n}(RowNodeBlock));\n\nvar __extends$v = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$7 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar LazyBlockLoader = /** @class */ (function (_super) {\n __extends$v(LazyBlockLoader, _super);\n function LazyBlockLoader(cache, parentNode, storeParams) {\n var _this = _super.call(this) || this;\n _this.loadingNodes = new Set();\n _this.checkForLoadQueued = false;\n _this.loaderTimeout = undefined;\n _this.nextBlockToLoad = undefined;\n _this.parentNode = parentNode;\n _this.cache = cache;\n _this.storeParams = storeParams;\n return _this;\n }\n LazyBlockLoader.prototype.init = function () {\n var _this = this;\n this.addManagedListener(this.rowNodeBlockLoader, RowNodeBlockLoader.BLOCK_LOADED_EVENT, function () { return _this.queueLoadAction(); });\n };\n LazyBlockLoader.prototype.isRowLoading = function (index) {\n return this.loadingNodes.has(index);\n };\n LazyBlockLoader.prototype.getBlockToLoad = function () {\n var _a;\n var firstRowInViewport = this.api.getFirstDisplayedRow();\n var lastRowInViewport = this.api.getLastDisplayedRow();\n // quick look-up for priority rows needing loading in viewport.\n for (var i = firstRowInViewport; i <= lastRowInViewport; i++) {\n var node = this.cache.getNodeCachedByDisplayIndex(i);\n if (!node) {\n // if no row details, ignore, as row hasn't been created\n // and it's too expensive to work out its location here\n continue;\n }\n var lazyNode = this.cache.getNodes().getBy('node', node);\n if (!lazyNode) {\n continue;\n }\n if (this.isRowLoading(lazyNode.index)) {\n continue;\n }\n if (node.__needsRefreshWhenVisible || (node.stub && !node.failedLoad)) {\n return this.getBlockStartIndexForIndex(lazyNode.index);\n }\n }\n var nodesToRefresh = this.cache.getNodesToRefresh();\n var nodeToRefresh = null;\n var nodeToRefreshDist = Number.MAX_SAFE_INTEGER;\n nodesToRefresh.forEach(function (node) {\n if (node.rowIndex == null) {\n nodeToRefresh = node;\n return;\n }\n var distToViewportTop = Math.abs(firstRowInViewport - node.rowIndex);\n var distToViewportBottom = Math.abs(node.rowIndex - lastRowInViewport);\n if (distToViewportTop < nodeToRefreshDist) {\n nodeToRefresh = node;\n nodeToRefreshDist = distToViewportTop;\n }\n if (distToViewportBottom < nodeToRefreshDist) {\n nodeToRefresh = node;\n nodeToRefreshDist = distToViewportBottom;\n }\n });\n var lazyIndex = (_a = this.cache.getNodes().getBy('node', nodeToRefresh)) === null || _a === void 0 ? void 0 : _a.index;\n return lazyIndex == null ? undefined : this.getBlockStartIndexForIndex(lazyIndex);\n };\n LazyBlockLoader.prototype.reset = function () {\n this.loadingNodes.clear();\n clearTimeout(this.loaderTimeout);\n this.loaderTimeout = undefined;\n };\n LazyBlockLoader.prototype.executeLoad = function (startRow, endRow) {\n var _this = this;\n var _a;\n var ssrmParams = this.cache.getSsrmParams();\n var request = {\n startRow: startRow,\n endRow: endRow,\n rowGroupCols: ssrmParams.rowGroupCols,\n valueCols: ssrmParams.valueCols,\n pivotCols: ssrmParams.pivotCols,\n pivotMode: ssrmParams.pivotMode,\n groupKeys: this.parentNode.getGroupKeys(),\n filterModel: ssrmParams.filterModel,\n sortModel: ssrmParams.sortModel,\n };\n var removeNodesFromLoadingMap = function () {\n for (var i = 0; i < endRow - startRow; i++) {\n _this.loadingNodes.delete(startRow + i);\n }\n };\n var addNodesToLoadingMap = function () {\n for (var i = 0; i < endRow - startRow; i++) {\n _this.loadingNodes.add(startRow + i);\n }\n };\n var success = function (params) {\n _this.rowNodeBlockLoader.loadComplete();\n _this.cache.onLoadSuccess(startRow, endRow - startRow, params);\n removeNodesFromLoadingMap();\n _this.queueLoadAction();\n };\n var fail = function () {\n _this.rowNodeBlockLoader.loadComplete();\n _this.cache.onLoadFailed(startRow, endRow - startRow);\n removeNodesFromLoadingMap();\n _this.queueLoadAction();\n };\n var params = {\n request: request,\n successCallback: function (rowData, rowCount) { return success({ rowData: rowData, rowCount: rowCount }); },\n success: success,\n failCallback: fail,\n fail: fail,\n parentNode: this.parentNode,\n api: this.api,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context\n };\n addNodesToLoadingMap();\n (_a = this.cache.getSsrmParams().datasource) === null || _a === void 0 ? void 0 : _a.getRows(params);\n };\n LazyBlockLoader.prototype.getNextBlockToLoad = function () {\n var result = this.getBlockToLoad();\n if (result != null && result < 0) {\n this.getBlockToLoad();\n }\n if (result != null) {\n return [String(result), result + this.getBlockSize()];\n }\n return null;\n };\n LazyBlockLoader.prototype.queueLoadCheck = function () {\n var _this = this;\n // already going to check next cycle, ignore.\n if (this.checkForLoadQueued) {\n return;\n }\n this.checkForLoadQueued = true;\n window.queueMicrotask(function () {\n _this.checkForLoadQueued = false;\n _this.queueLoadAction();\n });\n };\n LazyBlockLoader.prototype.queueLoadAction = function () {\n var _this = this;\n var _a;\n var nextBlockToLoad = this.getNextBlockToLoad();\n if (!nextBlockToLoad) {\n // there's no block we should be loading right now, clear the timeouts\n window.clearTimeout(this.loaderTimeout);\n this.loaderTimeout = undefined;\n this.nextBlockToLoad = undefined;\n return;\n }\n // if the next required block has changed, reset the loading timeout\n if (!this.nextBlockToLoad || (this.nextBlockToLoad[0] !== nextBlockToLoad[0] && this.nextBlockToLoad[1] !== nextBlockToLoad[1])) {\n this.nextBlockToLoad = nextBlockToLoad;\n window.clearTimeout(this.loaderTimeout);\n var _b = __read$7(this.nextBlockToLoad, 2), startRowString = _b[0], endRow_1 = _b[1];\n var startRow_1 = Number(startRowString);\n this.loaderTimeout = window.setTimeout(function () {\n if (!_this.cache.isAlive()) {\n return;\n }\n _this.loaderTimeout = undefined;\n _this.attemptLoad(startRow_1, endRow_1);\n _this.nextBlockToLoad = undefined;\n }, (_a = this.gridOptionsService.getNum('blockLoadDebounceMillis')) !== null && _a !== void 0 ? _a : 0);\n }\n };\n LazyBlockLoader.prototype.attemptLoad = function (start, end) {\n var availableLoadingCount = this.rowNodeBlockLoader.getAvailableLoadingCount();\n // too many loads already, ignore the request as a successful request will requeue itself anyway\n if (availableLoadingCount != null && availableLoadingCount === 0) {\n return;\n }\n this.rowNodeBlockLoader.registerLoads(1);\n this.executeLoad(start, end);\n this.queueLoadAction();\n };\n LazyBlockLoader.prototype.getBlockSize = function () {\n return this.storeParams.cacheBlockSize || LazyBlockLoader.DEFAULT_BLOCK_SIZE;\n };\n LazyBlockLoader.prototype.getBlockStartIndexForIndex = function (storeIndex) {\n var blockSize = this.getBlockSize();\n return storeIndex - (storeIndex % blockSize);\n };\n LazyBlockLoader.prototype.getBlockBoundsForIndex = function (storeIndex) {\n var startOfBlock = this.getBlockStartIndexForIndex(storeIndex);\n var blockSize = this.getBlockSize();\n return [startOfBlock, startOfBlock + blockSize];\n };\n LazyBlockLoader.DEFAULT_BLOCK_SIZE = 100;\n __decorate$t([\n Autowired('gridApi')\n ], LazyBlockLoader.prototype, \"api\", void 0);\n __decorate$t([\n Autowired('columnApi')\n ], LazyBlockLoader.prototype, \"columnApi\", void 0);\n __decorate$t([\n Autowired('rowNodeBlockLoader')\n ], LazyBlockLoader.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$t([\n PostConstruct\n ], LazyBlockLoader.prototype, \"init\", null);\n return LazyBlockLoader;\n}(BeanStub));\n\nvar MultiIndexMap = /** @class */ (function () {\n function MultiIndexMap() {\n var indexes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n indexes[_i] = arguments[_i];\n }\n if (indexes.length < 1) {\n throw new Error('AG Grid: At least one index must be provided.');\n }\n this.indexes = indexes;\n this.maps = new Map(this.indexes.map(function (index) { return [index, new Map()]; }));\n }\n MultiIndexMap.prototype.getBy = function (index, key) {\n var map = this.maps.get(index);\n if (!map) {\n throw new Error(\"AG Grid: \" + String(index) + \" not found\");\n }\n return map.get(key);\n };\n MultiIndexMap.prototype.set = function (item) {\n var _this = this;\n this.indexes.forEach(function (index) {\n var map = _this.maps.get(index);\n if (!map) {\n throw new Error(\"AG Grid: \" + String(index) + \" not found\");\n }\n map.set(item[index], item);\n });\n };\n MultiIndexMap.prototype.delete = function (item) {\n var _this = this;\n this.indexes.forEach(function (index) {\n var map = _this.maps.get(index);\n if (!map) {\n throw new Error(\"AG Grid: \" + String(index) + \" not found\");\n }\n map.delete(item[index]);\n });\n };\n MultiIndexMap.prototype.clear = function () {\n this.maps.forEach(function (map) { return map.clear(); });\n };\n MultiIndexMap.prototype.getIterator = function (index) {\n var map = this.maps.get(index);\n if (!map) {\n throw new Error(\"AG Grid: \" + String(index) + \" not found\");\n }\n return map.values();\n };\n MultiIndexMap.prototype.forEach = function (callback) {\n var iterator = this.getIterator(this.indexes[0]);\n var pointer;\n while (pointer = iterator.next()) {\n if (pointer.done)\n break;\n callback(pointer.value);\n }\n };\n MultiIndexMap.prototype.find = function (callback) {\n var iterator = this.getIterator(this.indexes[0]);\n var pointer;\n while (pointer = iterator.next()) {\n if (pointer.done)\n break;\n if (callback(pointer.value)) {\n return pointer.value;\n }\n }\n };\n MultiIndexMap.prototype.filter = function (predicate) {\n var iterator = this.getIterator(this.indexes[0]);\n var pointer;\n var result = [];\n while (pointer = iterator.next()) {\n if (pointer.done)\n break;\n if (predicate(pointer.value)) {\n result.push(pointer.value);\n }\n }\n return result;\n };\n return MultiIndexMap;\n}());\n\nvar __extends$u = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$6 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$4 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$6(arguments[i]));\n return ar;\n};\nvar LazyCache = /** @class */ (function (_super) {\n __extends$u(LazyCache, _super);\n function LazyCache(store, numberOfRows, storeParams) {\n var _this = _super.call(this) || this;\n /**\n * Indicates whether this is still the live dataset for this store (used for ignoring old requests after purge)\n */\n _this.live = true;\n _this.store = store;\n _this.numberOfRows = numberOfRows;\n _this.isLastRowKnown = false;\n _this.storeParams = storeParams;\n return _this;\n }\n LazyCache.prototype.init = function () {\n // initiate the node map to be indexed at 'index', 'id' and 'node' for quick look-up.\n // it's important id isn't first, as stub nodes overwrite each-other, and the first index is\n // used for iteration.\n this.nodeMap = new MultiIndexMap('index', 'id', 'node');\n this.nodeDisplayIndexMap = new Map();\n this.nodesToRefresh = new Set();\n this.defaultNodeIdPrefix = this.blockUtils.createNodeIdPrefix(this.store.getParentNode());\n this.rowLoader = this.createManagedBean(new LazyBlockLoader(this, this.store.getParentNode(), this.storeParams));\n this.getRowIdFunc = this.gridOptionsService.getRowIdFunc();\n this.isMasterDetail = this.gridOptionsService.isMasterDetail();\n };\n LazyCache.prototype.destroyRowNodes = function () {\n var _this = this;\n this.numberOfRows = 0;\n this.nodeMap.forEach(function (node) { return _this.blockUtils.destroyRowNode(node.node); });\n this.nodeMap.clear();\n this.nodeDisplayIndexMap.clear();\n this.nodesToRefresh.clear();\n this.live = false;\n };\n /**\n * Get the row node for a specific display index from this store\n * @param displayIndex the display index of the node to find\n * @returns undefined if the node is not in the store bounds, otherwise will always return a node\n */\n LazyCache.prototype.getRowByDisplayIndex = function (displayIndex) {\n var _a, _b, _c, _d;\n // if index isn't in store, nothing to return\n if (!this.store.isDisplayIndexInStore(displayIndex)) {\n return undefined;\n }\n // first try to directly look this node up in the display index map\n var node = this.nodeDisplayIndexMap.get(displayIndex);\n if (node) {\n // if we have the node, check if it needs refreshed when rendered\n if (node.stub || node.__needsRefreshWhenVisible) {\n this.rowLoader.queueLoadCheck();\n }\n return node;\n }\n // next check if this is the first row, if so return a stub node\n // this is a performance optimisation, as it is the most common scenario\n // and enables the node - 1 check to kick in more often.\n if (displayIndex === this.store.getDisplayIndexStart()) {\n return this.createStubNode(0, displayIndex);\n }\n // check if the row immediately prior is available in the store\n var contiguouslyPreviousNode = this.nodeDisplayIndexMap.get(displayIndex - 1);\n if (contiguouslyPreviousNode) {\n // if previous row is master detail, and expanded, this node must be detail\n if (this.isMasterDetail && contiguouslyPreviousNode.master && contiguouslyPreviousNode.expanded) {\n return contiguouslyPreviousNode.detailNode;\n }\n // if previous row is expanded group, this node will belong to that group.\n if (contiguouslyPreviousNode.expanded && ((_a = contiguouslyPreviousNode.childStore) === null || _a === void 0 ? void 0 : _a.isDisplayIndexInStore(displayIndex))) {\n return (_b = contiguouslyPreviousNode.childStore) === null || _b === void 0 ? void 0 : _b.getRowUsingDisplayIndex(displayIndex);\n }\n // otherwise, row must be a stub node\n var lazyCacheNode = this.nodeMap.getBy('node', contiguouslyPreviousNode);\n return this.createStubNode(lazyCacheNode.index + 1, displayIndex);\n }\n var adjacentNodes = this.getSurroundingNodesByDisplayIndex(displayIndex);\n // if no bounds skipped includes this, calculate from end index\n if (adjacentNodes == null) {\n var storeIndexFromEndIndex_1 = this.store.getRowCount() - (this.store.getDisplayIndexEnd() - displayIndex);\n return this.createStubNode(storeIndexFromEndIndex_1, displayIndex);\n }\n var previousNode = adjacentNodes.previousNode, nextNode = adjacentNodes.nextNode;\n // if the node before this node is expanded, this node might be a child of that node\n if (previousNode && previousNode.node.expanded && ((_c = previousNode.node.childStore) === null || _c === void 0 ? void 0 : _c.isDisplayIndexInStore(displayIndex))) {\n return (_d = previousNode.node.childStore) === null || _d === void 0 ? void 0 : _d.getRowUsingDisplayIndex(displayIndex);\n }\n // if we have the node after this node, we can calculate the store index of this node by the difference\n // in display indexes between the two nodes.\n if (nextNode) {\n var displayIndexDiff = nextNode.node.rowIndex - displayIndex;\n var newStoreIndex = nextNode.index - displayIndexDiff;\n return this.createStubNode(newStoreIndex, displayIndex);\n }\n // if no next node, calculate from end index of this store\n var storeIndexFromEndIndex = this.store.getRowCount() - (this.store.getDisplayIndexEnd() - displayIndex);\n return this.createStubNode(storeIndexFromEndIndex, displayIndex);\n };\n /**\n * Used for creating and positioning a stub node without firing a store updated event\n */\n LazyCache.prototype.createStubNode = function (storeIndex, displayIndex) {\n var _this = this;\n // bounds are acquired before creating the node, as otherwise it'll use it's own empty self to calculate\n var rowBounds = this.store.getRowBounds(displayIndex);\n var newNode = this.createRowAtIndex(storeIndex, null, function (node) {\n node.setRowIndex(displayIndex);\n node.setRowTop(rowBounds.rowTop);\n _this.nodeDisplayIndexMap.set(displayIndex, node);\n });\n this.rowLoader.queueLoadCheck();\n return newNode;\n };\n /**\n * @param index The row index relative to this store\n * @returns A rowNode at the given store index\n */\n LazyCache.prototype.getRowByStoreIndex = function (index) {\n var _a;\n return (_a = this.nodeMap.getBy('index', index)) === null || _a === void 0 ? void 0 : _a.node;\n };\n /**\n * Given a number of rows, skips through the given sequence & row top reference (using default row height)\n * @param numberOfRowsToSkip number of rows to skip over in the given sequence\n * @param displayIndexSeq the sequence in which to skip\n * @param nextRowTop the row top reference in which to skip\n */\n LazyCache.prototype.skipDisplayIndexes = function (numberOfRowsToSkip, displayIndexSeq, nextRowTop) {\n if (numberOfRowsToSkip === 0) {\n return;\n }\n var defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n displayIndexSeq.skip(numberOfRowsToSkip);\n nextRowTop.value += numberOfRowsToSkip * defaultRowHeight;\n };\n /**\n * @param displayIndexSeq the number sequence for generating the display index of each row\n * @param nextRowTop an object containing the next row top value intended to be modified by ref per row\n */\n LazyCache.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n // Create a map of display index nodes for access speed\n this.nodeDisplayIndexMap.clear();\n // create an object indexed by store index, as this will sort all of the nodes when we iterate\n // the object\n var orderedMap = {};\n this.nodeMap.forEach(function (lazyNode) {\n orderedMap[lazyNode.index] = lazyNode.node;\n });\n var lastIndex = -1;\n // iterate over the nodes in order, setting the display index on each node.\n for (var stringIndex in orderedMap) {\n var node = orderedMap[stringIndex];\n var numericIndex = Number(stringIndex);\n // if any nodes aren't currently in the store, skip the display indexes too\n var numberOfRowsToSkip_1 = (numericIndex - 1) - lastIndex;\n this.skipDisplayIndexes(numberOfRowsToSkip_1, displayIndexSeq, nextRowTop);\n // set this nodes index and row top\n this.blockUtils.setDisplayIndex(node, displayIndexSeq, nextRowTop);\n this.nodeDisplayIndexMap.set(node.rowIndex, node);\n // store this index for skipping after this\n lastIndex = numericIndex;\n }\n // need to skip rows until the end of this store\n var numberOfRowsToSkip = (this.numberOfRows - 1) - lastIndex;\n this.skipDisplayIndexes(numberOfRowsToSkip, displayIndexSeq, nextRowTop);\n // this is not terribly efficient, and could probs be improved\n this.purgeExcessRows();\n };\n LazyCache.prototype.getRowCount = function () {\n return this.numberOfRows;\n };\n LazyCache.prototype.setRowCount = function (rowCount, isLastRowIndexKnown) {\n if (rowCount < 0) {\n throw new Error('AG Grid: setRowCount can only accept a positive row count.');\n }\n this.numberOfRows = rowCount;\n if (isLastRowIndexKnown != null) {\n this.isLastRowKnown = isLastRowIndexKnown;\n if (isLastRowIndexKnown === false) {\n this.numberOfRows += 1;\n }\n }\n this.fireStoreUpdatedEvent();\n };\n LazyCache.prototype.getNodes = function () {\n return this.nodeMap;\n };\n LazyCache.prototype.getNodeCachedByDisplayIndex = function (displayIndex) {\n var _a;\n return (_a = this.nodeDisplayIndexMap.get(displayIndex)) !== null && _a !== void 0 ? _a : null;\n };\n LazyCache.prototype.getNodesToRefresh = function () {\n return this.nodesToRefresh;\n };\n /**\n * @returns the previous and next loaded row nodes surrounding the given display index\n */\n LazyCache.prototype.getSurroundingNodesByDisplayIndex = function (displayIndex) {\n var nextNode;\n var previousNode;\n this.nodeMap.forEach(function (lazyNode) {\n // previous node\n if (displayIndex > lazyNode.node.rowIndex) {\n // get the largest previous node\n if (previousNode == null || previousNode.node.rowIndex < lazyNode.node.rowIndex) {\n previousNode = lazyNode;\n }\n return;\n }\n // next node\n // get the smallest next node\n if (nextNode == null || nextNode.node.rowIndex > lazyNode.node.rowIndex) {\n nextNode = lazyNode;\n return;\n }\n });\n if (!previousNode && !nextNode)\n return null;\n return { previousNode: previousNode, nextNode: nextNode };\n };\n /**\n * Get or calculate the display index for a given store index\n * @param storeIndex the rows index within this store\n * @returns the rows visible display index relative to the grid\n */\n LazyCache.prototype.getDisplayIndexFromStoreIndex = function (storeIndex) {\n var _a, _b;\n var nodeAtIndex = this.nodeMap.getBy('index', storeIndex);\n if (nodeAtIndex) {\n return nodeAtIndex.node.rowIndex;\n }\n var nextNode;\n var previousNode;\n this.nodeMap.forEach(function (lazyNode) {\n // previous node\n if (storeIndex > lazyNode.index) {\n // get the largest previous node\n if (previousNode == null || previousNode.index < lazyNode.index) {\n previousNode = lazyNode;\n }\n return;\n }\n // next node\n // get the smallest next node\n if (nextNode == null || nextNode.index > lazyNode.index) {\n nextNode = lazyNode;\n return;\n }\n });\n if (!nextNode) {\n return this.store.getDisplayIndexEnd() - (this.numberOfRows - storeIndex);\n }\n if (!previousNode) {\n return this.store.getDisplayIndexStart() + storeIndex;\n }\n var storeIndexDiff = storeIndex - previousNode.index;\n var previousDisplayIndex = ((_b = (_a = previousNode.node.childStore) === null || _a === void 0 ? void 0 : _a.getDisplayIndexEnd()) !== null && _b !== void 0 ? _b : previousNode.node.rowIndex);\n return previousDisplayIndex + storeIndexDiff;\n };\n /**\n * Creates a new row and inserts it at the given index\n * @param atStoreIndex the node index relative to this store\n * @param data the data object to populate the node with\n * @returns the new row node\n */\n LazyCache.prototype.createRowAtIndex = function (atStoreIndex, data, createNodeCallback) {\n // make sure an existing node isn't being overwritten\n var lazyNode = this.nodeMap.getBy('index', atStoreIndex);\n // if node already exists, update it or destroy it\n if (lazyNode) {\n var node = lazyNode.node;\n this.nodesToRefresh.delete(node);\n node.__needsRefreshWhenVisible = false;\n // if the node is the same, just update the content\n if (this.doesNodeMatch(data, node)) {\n this.blockUtils.updateDataIntoRowNode(node, data);\n return node;\n }\n // if there's no id and this is an open group, protect this node from changes\n if (this.getRowIdFunc == null && node.group && node.expanded) {\n return node;\n }\n // destroy the old node, might be worth caching state here\n this.destroyRowAtIndex(atStoreIndex);\n }\n // if the node already exists elsewhere, update it and move it to the new location\n if (data && this.getRowIdFunc != null) {\n var id = this.getRowId(data);\n var lazyNode_1 = this.nodeMap.getBy('id', id);\n if (lazyNode_1) {\n // delete old lazy node so we can insert it at different location\n this.nodeMap.delete(lazyNode_1);\n var node = lazyNode_1.node, index = lazyNode_1.index;\n this.blockUtils.updateDataIntoRowNode(node, data);\n this.nodeMap.set({\n id: node.id,\n node: node,\n index: atStoreIndex\n });\n // mark all of the old block as needsVerify to trigger it for a refresh, as nodes\n // should not be out of place\n this.markBlockForVerify(index);\n return node;\n }\n }\n // node doesn't exist, create a new one\n var newNode = this.blockUtils.createRowNode(this.store.getRowDetails());\n if (data != null) {\n var defaultId = this.getPrefixedId(this.store.getIdSequence().next());\n this.blockUtils.setDataIntoRowNode(newNode, data, defaultId, undefined);\n this.blockUtils.checkOpenByDefault(newNode);\n this.nodeManager.addRowNode(newNode);\n }\n // add the new node to the store, has to be done after the display index is calculated so it doesn't take itself into account\n this.nodeMap.set({\n id: newNode.id,\n node: newNode,\n index: atStoreIndex,\n });\n if (createNodeCallback) {\n createNodeCallback(newNode);\n }\n return newNode;\n };\n LazyCache.prototype.getBlockStates = function () {\n var _this = this;\n var blockCounts = {};\n var blockStates = {};\n this.nodeMap.forEach(function (_a) {\n var _b;\n var node = _a.node, index = _a.index;\n var blockStart = _this.rowLoader.getBlockStartIndexForIndex(index);\n if (!node.stub && !node.failedLoad) {\n blockCounts[blockStart] = ((_b = blockCounts[blockStart]) !== null && _b !== void 0 ? _b : 0) + 1;\n }\n var rowState = 'loaded';\n if (node.failedLoad) {\n rowState = 'failed';\n }\n else if (_this.rowLoader.isRowLoading(blockStart)) {\n rowState = 'loading';\n }\n else if (_this.nodesToRefresh.has(node) || node.stub) {\n rowState = 'needsLoading';\n }\n if (!blockStates[blockStart]) {\n blockStates[blockStart] = new Set();\n }\n blockStates[blockStart].add(rowState);\n });\n var statePriorityMap = {\n loading: 4,\n failed: 3,\n needsLoading: 2,\n loaded: 1,\n };\n var blockPrefix = this.blockUtils.createNodeIdPrefix(this.store.getParentNode());\n var results = {};\n Object.entries(blockStates).forEach(function (_a) {\n var _b;\n var _c = __read$6(_a, 2), blockStart = _c[0], uniqueStates = _c[1];\n var sortedStates = __spread$4(uniqueStates).sort(function (a, b) { var _a, _b; return ((_a = statePriorityMap[a]) !== null && _a !== void 0 ? _a : 0) - ((_b = statePriorityMap[b]) !== null && _b !== void 0 ? _b : 0); });\n var priorityState = sortedStates[0];\n var blockNumber = Number(blockStart) / _this.rowLoader.getBlockSize();\n var blockId = blockPrefix ? blockPrefix + \"-\" + blockNumber : String(blockNumber);\n results[blockId] = {\n blockNumber: blockNumber,\n startRow: Number(blockStart),\n endRow: Number(blockStart) + _this.rowLoader.getBlockSize(),\n pageStatus: priorityState,\n loadedRowCount: (_b = blockCounts[blockStart]) !== null && _b !== void 0 ? _b : 0,\n };\n });\n return results;\n };\n LazyCache.prototype.destroyRowAtIndex = function (atStoreIndex) {\n var lazyNode = this.nodeMap.getBy('index', atStoreIndex);\n if (!lazyNode) {\n return;\n }\n this.nodeMap.delete(lazyNode);\n this.nodeDisplayIndexMap.delete(lazyNode.node.rowIndex);\n this.nodesToRefresh.delete(lazyNode.node);\n this.blockUtils.destroyRowNode(lazyNode.node);\n };\n LazyCache.prototype.getSsrmParams = function () {\n return this.store.getSsrmParams();\n };\n /**\n * @param id the base id to be prefixed\n * @returns a node id with prefix if required\n */\n LazyCache.prototype.getPrefixedId = function (id) {\n if (this.defaultNodeIdPrefix) {\n return this.defaultNodeIdPrefix + '-' + id;\n }\n else {\n return id.toString();\n }\n };\n LazyCache.prototype.markBlockForVerify = function (rowIndex) {\n var _a = __read$6(this.rowLoader.getBlockBoundsForIndex(rowIndex), 2), start = _a[0], end = _a[1];\n var lazyNodesInRange = this.nodeMap.filter(function (lazyNode) { return lazyNode.index >= start && lazyNode.index < end; });\n lazyNodesInRange.forEach(function (_a) {\n var node = _a.node;\n node.__needsRefreshWhenVisible = true;\n });\n };\n LazyCache.prototype.doesNodeMatch = function (data, node) {\n if (node.stub) {\n return false;\n }\n if (this.getRowIdFunc != null) {\n var id = this.getRowId(data);\n return node.id === id;\n }\n return node.data === data;\n };\n /**\n * Deletes any stub nodes not within the given range\n */\n LazyCache.prototype.purgeStubsOutsideOfViewport = function () {\n var _this = this;\n var firstRow = this.api.getFirstDisplayedRow();\n var lastRow = this.api.getLastDisplayedRow();\n var firstRowBlockStart = this.rowLoader.getBlockStartIndexForIndex(firstRow);\n var _a = __read$6(this.rowLoader.getBlockBoundsForIndex(lastRow), 2); _a[0]; var lastRowBlockEnd = _a[1];\n this.nodeMap.forEach(function (lazyNode) {\n if (_this.rowLoader.isRowLoading(lazyNode.index)) {\n return;\n }\n if (lazyNode.node.stub && (lazyNode.index < firstRowBlockStart || lazyNode.index > lastRowBlockEnd)) {\n _this.destroyRowAtIndex(lazyNode.index);\n }\n });\n };\n LazyCache.prototype.getBlocksDistanceFromRow = function (nodes, otherDisplayIndex) {\n var _this = this;\n var blockDistanceToMiddle = {};\n nodes.forEach(function (_a) {\n var node = _a.node, index = _a.index;\n var _b = __read$6(_this.rowLoader.getBlockBoundsForIndex(index), 2), blockStart = _b[0], blockEnd = _b[1];\n if (blockStart in blockDistanceToMiddle) {\n return;\n }\n var distStart = Math.abs(node.rowIndex - otherDisplayIndex);\n var distEnd;\n // may not have an end node if the block came back small \n var lastLazyNode = _this.nodeMap.getBy('index', [blockEnd - 1]);\n if (lastLazyNode)\n distEnd = Math.abs(lastLazyNode.node.rowIndex - otherDisplayIndex);\n var farthest = distEnd == null || distStart < distEnd ? distStart : distEnd;\n blockDistanceToMiddle[blockStart] = farthest;\n });\n return Object.entries(blockDistanceToMiddle);\n };\n LazyCache.prototype.purgeExcessRows = function () {\n var _this = this;\n var _a;\n // Delete all stub nodes which aren't in the viewport or already loading\n this.purgeStubsOutsideOfViewport();\n if (this.store.getDisplayIndexEnd() == null || this.storeParams.maxBlocksInCache == null) {\n // if group is collapsed, or max blocks missing, ignore the event\n return;\n }\n var firstRowInViewport = this.api.getFirstDisplayedRow();\n var lastRowInViewport = this.api.getLastDisplayedRow();\n // the start storeIndex of every block in this store\n var allLoadedBlocks = new Set();\n // the start storeIndex of every displayed block in this store\n var blocksInViewport = new Set();\n this.nodeMap.forEach(function (_a) {\n var index = _a.index, node = _a.node;\n var blockStart = _this.rowLoader.getBlockStartIndexForIndex(index);\n allLoadedBlocks.add(blockStart);\n var isInViewport = node.rowIndex >= firstRowInViewport && node.rowIndex <= lastRowInViewport;\n if (isInViewport) {\n blocksInViewport.add(blockStart);\n }\n });\n // if the viewport is larger than the max blocks, then the viewport size is minimum cache size\n var numberOfBlocksToRetain = Math.max(blocksInViewport.size, (_a = this.storeParams.maxBlocksInCache) !== null && _a !== void 0 ? _a : 0);\n // ensure there is blocks that can be removed\n var loadedBlockCount = allLoadedBlocks.size;\n var blocksToRemove = loadedBlockCount - numberOfBlocksToRetain;\n if (blocksToRemove <= 0) {\n return;\n }\n // the first and last block in the viewport\n var firstRowBlockStart = Number.MAX_SAFE_INTEGER;\n var lastRowBlockStart = Number.MIN_SAFE_INTEGER;\n blocksInViewport.forEach(function (blockStart) {\n if (firstRowBlockStart > blockStart) {\n firstRowBlockStart = blockStart;\n }\n if (lastRowBlockStart < blockStart) {\n lastRowBlockStart = blockStart;\n }\n });\n // all nodes which aren't cached or in the viewport, and so can be removed\n var disposableNodes = this.nodeMap.filter(function (_a) {\n var node = _a.node, index = _a.index;\n var rowBlockStart = _this.rowLoader.getBlockStartIndexForIndex(index);\n var rowBlockInViewport = rowBlockStart >= firstRowBlockStart && rowBlockStart <= lastRowBlockStart;\n return !rowBlockInViewport && !_this.isNodeCached(node);\n });\n if (disposableNodes.length === 0) {\n return;\n }\n var midViewportRow = firstRowInViewport + ((lastRowInViewport - firstRowInViewport) / 2);\n var blockDistanceArray = this.getBlocksDistanceFromRow(disposableNodes, midViewportRow);\n var blockSize = this.rowLoader.getBlockSize();\n // sort the blocks by distance from middle of viewport\n blockDistanceArray.sort(function (a, b) { return Math.sign(b[1] - a[1]); });\n // remove excess blocks, starting from furthest from viewport\n for (var i = 0; i < Math.min(blocksToRemove, blockDistanceArray.length); i++) {\n var blockStart = Number(blockDistanceArray[i][0]);\n for (var x = blockStart; x < blockStart + blockSize; x++) {\n var lazyNode = this.nodeMap.getBy('index', x);\n if (!lazyNode || this.isNodeCached(lazyNode.node)) {\n continue;\n }\n this.destroyRowAtIndex(x);\n }\n }\n };\n LazyCache.prototype.isNodeFocused = function (node) {\n var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n var hasFocus = focusedCell.rowIndex === node.rowIndex;\n return hasFocus;\n };\n LazyCache.prototype.isNodeCached = function (node) {\n return (node.isExpandable() && node.expanded) || this.isNodeFocused(node);\n };\n LazyCache.prototype.extractDuplicateIds = function (rows) {\n var _this = this;\n if (!this.getRowIdFunc == null) {\n return [];\n }\n var newIds = new Set();\n var duplicates = new Set();\n rows.forEach(function (data) {\n var id = _this.getRowId(data);\n if (newIds.has(id)) {\n duplicates.add(id);\n return;\n }\n newIds.add(id);\n });\n return __spread$4(duplicates);\n };\n LazyCache.prototype.onLoadSuccess = function (firstRowIndex, numberOfRowsExpected, response) {\n var _this = this;\n var _a;\n if (!this.live)\n return;\n var info = (_a = response.groupLevelInfo) !== null && _a !== void 0 ? _a : response.storeInfo;\n this.store.setStoreInfo(info);\n if (this.getRowIdFunc != null) {\n var duplicates = this.extractDuplicateIds(response.rowData);\n if (duplicates.length > 0) {\n var duplicateIdText = duplicates.join(', ');\n console.warn(\"AG Grid: Unable to display rows as duplicate row ids (\" + duplicateIdText + \") were returned by the getRowId callback. Please modify the getRowId callback to provide unique ids.\");\n this.onLoadFailed(firstRowIndex, numberOfRowsExpected);\n return;\n }\n }\n var wasRefreshing = this.nodesToRefresh.size > 0;\n response.rowData.forEach(function (data, responseRowIndex) {\n var _a;\n var rowIndex = firstRowIndex + responseRowIndex;\n var nodeFromCache = _this.nodeMap.getBy('index', rowIndex);\n // if stub, overwrite\n if ((_a = nodeFromCache === null || nodeFromCache === void 0 ? void 0 : nodeFromCache.node) === null || _a === void 0 ? void 0 : _a.stub) {\n _this.createRowAtIndex(rowIndex, data);\n return;\n }\n if (nodeFromCache && _this.doesNodeMatch(data, nodeFromCache.node)) {\n _this.blockUtils.updateDataIntoRowNode(nodeFromCache.node, data);\n _this.nodesToRefresh.delete(nodeFromCache.node);\n nodeFromCache.node.__needsRefreshWhenVisible = false;\n return;\n }\n // create row will handle deleting the overwritten row\n _this.createRowAtIndex(rowIndex, data);\n });\n var finishedRefreshing = this.nodesToRefresh.size === 0;\n if (wasRefreshing && finishedRefreshing) {\n this.fireRefreshFinishedEvent();\n }\n if (response.rowCount != undefined && response.rowCount !== -1) {\n // if the rowCount has been provided, set the row count\n this.numberOfRows = response.rowCount;\n this.isLastRowKnown = true;\n }\n else if (numberOfRowsExpected > response.rowData.length) {\n // infer the last row as the response came back short\n this.numberOfRows = firstRowIndex + response.rowData.length;\n this.isLastRowKnown = true;\n }\n else if (!this.isLastRowKnown) {\n // add 1 for loading row, as we don't know the last row\n var lastInferredRow = firstRowIndex + response.rowData.length + 1;\n if (lastInferredRow > this.numberOfRows) {\n this.numberOfRows = lastInferredRow;\n }\n }\n if (this.isLastRowKnown) {\n // delete any rows after the last index\n var lazyNodesAfterStoreEnd = this.nodeMap.filter(function (lazyNode) { return lazyNode.index >= _this.numberOfRows; });\n lazyNodesAfterStoreEnd.forEach(function (lazyNode) { return _this.destroyRowAtIndex(lazyNode.index); });\n }\n this.fireStoreUpdatedEvent();\n };\n LazyCache.prototype.fireRefreshFinishedEvent = function () {\n var finishedRefreshing = this.nodesToRefresh.size === 0;\n // if anything refreshing currently, skip.\n if (!finishedRefreshing) {\n return;\n }\n this.store.fireRefreshFinishedEvent();\n };\n LazyCache.prototype.isLastRowIndexKnown = function () {\n return this.isLastRowKnown;\n };\n LazyCache.prototype.onLoadFailed = function (firstRowIndex, numberOfRowsExpected) {\n if (!this.live)\n return;\n var failedNodes = this.nodeMap.filter(function (node) { return node.index >= firstRowIndex && node.index < firstRowIndex + numberOfRowsExpected; });\n failedNodes.forEach(function (node) { return node.node.failedLoad = true; });\n this.fireStoreUpdatedEvent();\n };\n LazyCache.prototype.markNodesForRefresh = function () {\n var _this = this;\n this.nodeMap.forEach(function (lazyNode) {\n if (lazyNode.node.stub) {\n return;\n }\n _this.nodesToRefresh.add(lazyNode.node);\n });\n this.rowLoader.queueLoadCheck();\n if (this.isLastRowKnown && this.numberOfRows === 0) {\n this.numberOfRows = 1;\n this.isLastRowKnown = false;\n this.fireStoreUpdatedEvent();\n }\n };\n LazyCache.prototype.isNodeInCache = function (id) {\n return !!this.nodeMap.getBy('id', id);\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n LazyCache.prototype.fireStoreUpdatedEvent = function () {\n if (!this.live) {\n return;\n }\n this.store.fireStoreUpdatedEvent();\n };\n LazyCache.prototype.getRowId = function (data) {\n if (this.getRowIdFunc == null) {\n return null;\n }\n // find rowNode using id\n var level = this.store.getRowDetails().level;\n var parentKeys = this.store.getParentNode().getGroupKeys();\n var id = this.getRowIdFunc({\n data: data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level: level,\n });\n return String(id);\n };\n LazyCache.prototype.updateRowNodes = function (updates) {\n var _this = this;\n if (this.getRowIdFunc == null) {\n // throw error, as this is type checked in the store. User likely abusing internal apis if here.\n throw new Error('AG Grid: Insert transactions can only be applied when row ids are supplied.');\n }\n var updatedNodes = [];\n updates.forEach(function (data) {\n var id = _this.getRowId(data);\n var lazyNode = _this.nodeMap.getBy('id', id);\n if (lazyNode) {\n _this.blockUtils.updateDataIntoRowNode(lazyNode.node, data);\n updatedNodes.push(lazyNode.node);\n }\n });\n return updatedNodes;\n };\n LazyCache.prototype.insertRowNodes = function (inserts, indexToAdd) {\n var _this = this;\n // if missing and we know the last row, we're inserting at the end\n var addIndex = indexToAdd == null && this.isLastRowKnown ? this.store.getRowCount() : indexToAdd;\n // can't insert nodes past the end of the store\n if (addIndex == null || this.store.getRowCount() < addIndex) {\n return [];\n }\n if (this.getRowIdFunc == null) {\n // throw error, as this is type checked in the store. User likely abusing internal apis if here.\n throw new Error('AG Grid: Insert transactions can only be applied when row ids are supplied.');\n }\n var uniqueInsertsMap = {};\n inserts.forEach(function (data) {\n var dataId = _this.getRowId(data);\n if (dataId && _this.isNodeInCache(dataId)) {\n return;\n }\n uniqueInsertsMap[dataId] = data;\n });\n var uniqueInserts = Object.values(uniqueInsertsMap);\n var numberOfInserts = uniqueInserts.length;\n if (numberOfInserts === 0) {\n return [];\n }\n var nodesToMove = this.nodeMap.filter(function (node) { return node.index >= addIndex; });\n // delete all nodes which need moved first, so they don't get overwritten\n nodesToMove.forEach(function (lazyNode) { return _this.nodeMap.delete(lazyNode); });\n // then move the nodes to their new locations\n nodesToMove.forEach(function (lazyNode) {\n _this.nodeMap.set({\n node: lazyNode.node,\n index: lazyNode.index + numberOfInserts,\n id: lazyNode.id,\n });\n });\n // increase the store size to accommodate\n this.numberOfRows += numberOfInserts;\n // finally insert the new rows\n return uniqueInserts.map(function (data, uniqueInsertOffset) { return _this.createRowAtIndex(addIndex + uniqueInsertOffset, data); });\n };\n LazyCache.prototype.getOrderedNodeMap = function () {\n var obj = {};\n this.nodeMap.forEach(function (node) { return obj[node.index] = node; });\n return obj;\n };\n LazyCache.prototype.clearDisplayIndexes = function () {\n this.nodeDisplayIndexMap.clear();\n };\n LazyCache.prototype.removeRowNodes = function (idsToRemove) {\n if (this.getRowIdFunc == null) {\n // throw error, as this is type checked in the store. User likely abusing internal apis if here.\n throw new Error('AG Grid: Insert transactions can only be applied when row ids are supplied.');\n }\n var removedNodes = [];\n var nodesToVerify = [];\n // track how many nodes have been deleted, as when we pass other nodes we need to shift them up\n var deletedNodeCount = 0;\n var remainingIdsToRemove = __spread$4(idsToRemove);\n var allNodes = this.getOrderedNodeMap();\n var contiguousIndex = -1;\n var _loop_1 = function (stringIndex) {\n contiguousIndex += 1;\n var node = allNodes[stringIndex];\n // finding the index allows the use of splice which should be slightly faster than both a check and filter\n var matchIndex = remainingIdsToRemove.findIndex(function (idToRemove) { return idToRemove === node.id; });\n if (matchIndex !== -1) {\n // found node, remove it from nodes to remove\n remainingIdsToRemove.splice(matchIndex, 1);\n this_1.destroyRowAtIndex(Number(stringIndex));\n removedNodes.push(node.node);\n deletedNodeCount += 1;\n return \"continue\";\n }\n // no nodes removed and this node doesn't match, so no need to shift\n if (deletedNodeCount === 0) {\n return \"continue\";\n }\n var numericStoreIndex = Number(stringIndex);\n if (contiguousIndex !== numericStoreIndex) {\n nodesToVerify.push(node.node);\n }\n // shift normal node up by number of deleted prior to this point\n this_1.nodeMap.delete(allNodes[stringIndex]);\n this_1.nodeMap.set({\n id: node.id,\n node: node.node,\n index: numericStoreIndex - deletedNodeCount,\n });\n };\n var this_1 = this;\n for (var stringIndex in allNodes) {\n _loop_1(stringIndex);\n }\n this.numberOfRows -= this.isLastRowIndexKnown() ? idsToRemove.length : deletedNodeCount;\n if (remainingIdsToRemove.length > 0 && nodesToVerify.length > 0) {\n nodesToVerify.forEach(function (node) { return node.__needsRefreshWhenVisible = true; });\n this.rowLoader.queueLoadCheck();\n }\n return removedNodes;\n };\n __decorate$s([\n Autowired('gridApi')\n ], LazyCache.prototype, \"api\", void 0);\n __decorate$s([\n Autowired('ssrmBlockUtils')\n ], LazyCache.prototype, \"blockUtils\", void 0);\n __decorate$s([\n Autowired('focusService')\n ], LazyCache.prototype, \"focusService\", void 0);\n __decorate$s([\n Autowired('ssrmNodeManager')\n ], LazyCache.prototype, \"nodeManager\", void 0);\n __decorate$s([\n PostConstruct\n ], LazyCache.prototype, \"init\", null);\n __decorate$s([\n PreDestroy\n ], LazyCache.prototype, \"destroyRowNodes\", null);\n return LazyCache;\n}(BeanStub));\n\nvar __extends$t = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$5 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$3 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$5(arguments[i]));\n return ar;\n};\nvar LazyStore = /** @class */ (function (_super) {\n __extends$t(LazyStore, _super);\n function LazyStore(ssrmParams, storeParams, parentRowNode) {\n var _this = _super.call(this) || this;\n _this.idSequence = new NumberSequence();\n _this.ssrmParams = ssrmParams;\n _this.parentRowNode = parentRowNode;\n _this.storeParams = storeParams;\n _this.level = parentRowNode.level + 1;\n _this.group = ssrmParams.rowGroupCols ? _this.level < ssrmParams.rowGroupCols.length : false;\n _this.leafGroup = ssrmParams.rowGroupCols ? _this.level === ssrmParams.rowGroupCols.length - 1 : false;\n _this.info = {};\n return _this;\n }\n LazyStore.prototype.init = function () {\n var numberOfRows = 1;\n if (this.level === 0) {\n numberOfRows = this.storeUtils.getServerSideInitialRowCount();\n }\n this.cache = this.createManagedBean(new LazyCache(this, numberOfRows, this.storeParams));\n var usingTreeData = this.gridOptionsService.isTreeData();\n if (!usingTreeData && this.group) {\n var groupColVo = this.ssrmParams.rowGroupCols[this.level];\n this.groupField = groupColVo.field;\n this.rowGroupColumn = this.columnModel.getRowGroupColumns()[this.level];\n }\n };\n LazyStore.prototype.destroyRowNodes = function () {\n this.displayIndexStart = undefined;\n this.displayIndexEnd = undefined;\n this.destroyBean(this.cache);\n };\n /**\n * Applies a given transaction to the data set within this store\n *\n * @param transaction an object containing delta instructions determining the changes to apply to this store\n * @returns an object determining the status of this transaction and effected nodes\n */\n LazyStore.prototype.applyTransaction = function (transaction) {\n var _this = this;\n var _a, _b, _c;\n var idFunc = this.gridOptionsService.getRowIdFunc();\n if (!idFunc) {\n console.warn('AG Grid: getRowId callback must be implemented for transactions to work. Transaction was ignored.');\n return {\n status: ServerSideTransactionResultStatus.Cancelled,\n };\n }\n var applyCallback = this.gridOptionsService.getCallback('isApplyServerSideTransaction');\n if (applyCallback) {\n var params = {\n transaction: transaction,\n parentNode: this.parentRowNode,\n storeInfo: this.info,\n groupLevelInfo: this.info\n };\n var apply = applyCallback(params);\n if (!apply) {\n return { status: ServerSideTransactionResultStatus.Cancelled };\n }\n }\n var updatedNodes = undefined;\n if ((_a = transaction.update) === null || _a === void 0 ? void 0 : _a.length) {\n updatedNodes = this.cache.updateRowNodes(transaction.update);\n }\n var insertedNodes = undefined;\n if ((_b = transaction.add) === null || _b === void 0 ? void 0 : _b.length) {\n var addIndex = transaction.addIndex;\n if (addIndex != null && addIndex < 0) {\n addIndex = undefined;\n }\n insertedNodes = this.cache.insertRowNodes(transaction.add, addIndex);\n }\n var removedNodes = undefined;\n if ((_c = transaction.remove) === null || _c === void 0 ? void 0 : _c.length) {\n var allIdsToRemove = transaction.remove.map(function (data) { return (idFunc({ level: _this.level, parentKeys: _this.parentRowNode.getGroupKeys(), data: data })); });\n var allUniqueIdsToRemove = __spread$3(new Set(allIdsToRemove));\n removedNodes = this.cache.removeRowNodes(allUniqueIdsToRemove);\n }\n this.updateSelectionAfterTransaction(updatedNodes, removedNodes);\n return {\n status: ServerSideTransactionResultStatus.Applied,\n update: updatedNodes,\n add: insertedNodes,\n remove: removedNodes,\n };\n };\n LazyStore.prototype.updateSelectionAfterTransaction = function (updatedNodes, removedNodes) {\n var fireSelectionUpdatedEvent = false;\n updatedNodes === null || updatedNodes === void 0 ? void 0 : updatedNodes.forEach(function (node) {\n if (node.isSelected() && !node.selectable) {\n node.setSelected(false, false, true, 'rowDataChanged');\n fireSelectionUpdatedEvent = true;\n }\n });\n removedNodes === null || removedNodes === void 0 ? void 0 : removedNodes.forEach(function (node) {\n if (node.isSelected()) {\n node.setSelected(false, false, true, 'rowDataChanged');\n fireSelectionUpdatedEvent = true;\n }\n });\n if (fireSelectionUpdatedEvent) {\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: 'rowDataChanged'\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n /**\n * Clear the display indexes, used for fading rows out when stores are not being destroyed\n */\n LazyStore.prototype.clearDisplayIndexes = function () {\n var _this = this;\n this.displayIndexStart = undefined;\n this.displayIndexEnd = undefined;\n this.cache.getNodes().forEach(function (lazyNode) { return _this.blockUtils.clearDisplayIndex(lazyNode.node); });\n this.cache.clearDisplayIndexes();\n };\n /**\n * @returns an index representing the last sequentially displayed row in the grid for this store\n */\n LazyStore.prototype.getDisplayIndexStart = function () {\n return this.displayIndexStart;\n };\n /**\n * @returns the index representing one after the last sequentially displayed row in the grid for this store\n */\n LazyStore.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n /**\n * @returns the virtual size of this store\n */\n LazyStore.prototype.getRowCount = function () {\n return this.cache.getRowCount();\n };\n /**\n * Sets the current row count of the store, and whether the last row index is known\n */\n LazyStore.prototype.setRowCount = function (rowCount, isLastRowIndexKnown) {\n this.cache.setRowCount(rowCount, isLastRowIndexKnown);\n };\n /**\n * Given a display index, returns whether that row is within this store or a child store of this store\n *\n * @param displayIndex the visible index of a row\n * @returns whether or not the row exists within this store\n */\n LazyStore.prototype.isDisplayIndexInStore = function (displayIndex) {\n if (this.cache.getRowCount() === 0)\n return false;\n return this.displayIndexStart <= displayIndex && displayIndex < this.getDisplayIndexEnd();\n };\n /**\n * Recursively sets up the display indexes and top position of every node belonging to this store.\n *\n * Called after a row height changes, or a store updated event.\n *\n * @param displayIndexSeq the number sequence for generating the display index of each row\n * @param nextRowTop an object containing the next row top value intended to be modified by ref per row\n */\n LazyStore.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n this.displayIndexStart = displayIndexSeq.peek();\n this.topPx = nextRowTop.value;\n // delegate to the store to set the row display indexes\n this.cache.setDisplayIndexes(displayIndexSeq, nextRowTop);\n this.displayIndexEnd = displayIndexSeq.peek();\n this.heightPx = nextRowTop.value - this.topPx;\n };\n /**\n * Recursively applies a provided function to every node\n *\n * For the purpose of exclusively server side filtered stores, this is the same as getNodes().forEachDeepAfterFilterAndSort\n */\n LazyStore.prototype.forEachStoreDeep = function (callback, sequence) {\n if (sequence === void 0) { sequence = new NumberSequence(); }\n callback(this, sequence.next());\n this.cache.getNodes().forEach(function (lazyNode) {\n var childCache = lazyNode.node.childStore;\n if (childCache) {\n childCache.forEachStoreDeep(callback, sequence);\n }\n });\n };\n /**\n * Recursively applies a provided function to every node\n *\n * For the purpose of exclusively server side filtered stores, this is the same as getNodes().forEachDeepAfterFilterAndSort\n */\n LazyStore.prototype.forEachNodeDeep = function (callback, sequence) {\n if (sequence === void 0) { sequence = new NumberSequence(); }\n this.cache.getNodes().forEach(function (lazyNode) {\n callback(lazyNode.node, sequence.next());\n var childCache = lazyNode.node.childStore;\n if (childCache) {\n childCache.forEachNodeDeep(callback, sequence);\n }\n });\n };\n /**\n * Recursively applies a provided function to every node\n *\n * For the purpose of exclusively server side filtered stores, this is the same as getNodes().forEachDeep\n */\n LazyStore.prototype.forEachNodeDeepAfterFilterAndSort = function (callback, sequence) {\n if (sequence === void 0) { sequence = new NumberSequence(); }\n var orderedNodes = this.cache.getOrderedNodeMap();\n for (var key in orderedNodes) {\n var lazyNode = orderedNodes[key];\n callback(lazyNode.node, sequence.next());\n var childCache = lazyNode.node.childStore;\n if (childCache) {\n childCache.forEachNodeDeepAfterFilterAndSort(callback, sequence);\n }\n }\n };\n /**\n * Removes the failed status from all nodes, and marks them as stub to encourage reloading\n */\n LazyStore.prototype.retryLoads = function () {\n this.cache.getNodes().forEach(function (_a) {\n var node = _a.node;\n if (node.failedLoad) {\n node.failedLoad = false;\n node.__needsRefreshWhenVisible = true;\n node.stub = true;\n }\n });\n this.forEachChildStoreShallow(function (store) { return store.retryLoads(); });\n this.fireStoreUpdatedEvent();\n };\n /**\n * Given a display index, returns the row at that location.\n *\n * @param displayRowIndex the displayed index within the grid to search for\n * @returns the row node if the display index falls within the store, if it didn't exist this will create a new stub to return\n */\n LazyStore.prototype.getRowUsingDisplayIndex = function (displayRowIndex) {\n return this.cache.getRowByDisplayIndex(displayRowIndex);\n };\n /**\n * Given a display index, returns the row top and height for the row at that index.\n *\n * @param displayIndex the display index of the node\n * @returns an object containing the rowTop and rowHeight of the node at the given displayIndex\n */\n LazyStore.prototype.getRowBounds = function (displayIndex) {\n var _a;\n if (!this.isDisplayIndexInStore(displayIndex)) {\n return null;\n }\n var thisNode = this.cache.getNodeCachedByDisplayIndex(displayIndex);\n if (thisNode) {\n var boundsFromRow = this.blockUtils.extractRowBounds(thisNode, displayIndex);\n if (boundsFromRow) {\n return boundsFromRow;\n }\n }\n var _b = (_a = this.cache.getSurroundingNodesByDisplayIndex(displayIndex)) !== null && _a !== void 0 ? _a : {}, previousNode = _b.previousNode, nextNode = _b.nextNode;\n // previous node may equal, or catch via detail node or child of group\n if (previousNode) {\n var boundsFromRow = this.blockUtils.extractRowBounds(previousNode.node, displayIndex);\n if (boundsFromRow != null) {\n return boundsFromRow;\n }\n }\n var defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n // if node after this, can calculate backwards (and ignore detail/grouping)\n if (nextNode) {\n var numberOfRowDiff_1 = Math.floor((nextNode.node.rowIndex - displayIndex) * defaultRowHeight);\n return {\n rowTop: nextNode.node.rowTop - numberOfRowDiff_1,\n rowHeight: defaultRowHeight,\n };\n }\n // otherwise calculate from end of store\n var lastTop = this.topPx + this.heightPx;\n var numberOfRowDiff = Math.floor((this.getDisplayIndexEnd() - displayIndex) * defaultRowHeight);\n return {\n rowTop: lastTop - numberOfRowDiff,\n rowHeight: defaultRowHeight,\n };\n };\n /**\n * Given a vertical pixel, determines whether this store contains a row at that pixel\n *\n * @param pixel a vertical pixel position from the grid\n * @returns whether that pixel points to a virtual space belonging to this store\n */\n LazyStore.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.topPx && pixel < (this.topPx + this.heightPx);\n };\n /**\n * Given a vertical pixel, returns the row existing at that pixel location\n *\n * @param pixel a vertical pixel position from the grid\n * @returns the display index at the given pixel location\n */\n LazyStore.prototype.getRowIndexAtPixel = function (pixel) {\n if (pixel < this.topPx) {\n return this.getDisplayIndexStart();\n }\n if (pixel >= this.topPx + this.heightPx) {\n return this.getDisplayIndexEnd() - 1;\n }\n var distToPreviousNodeTop = Number.MAX_SAFE_INTEGER;\n var previousNode = null;\n var distToNextNodeTop = Number.MAX_SAFE_INTEGER;\n var nextNode = null;\n this.cache.getNodes().forEach(function (_a) {\n var node = _a.node;\n var distBetween = Math.abs(pixel - node.rowTop);\n // previous node\n if (node.rowTop < pixel) {\n if (distBetween < distToPreviousNodeTop) {\n distToPreviousNodeTop = distBetween;\n previousNode = node;\n }\n return;\n }\n // next node\n if (distBetween < distToNextNodeTop) {\n distToNextNodeTop = distBetween;\n nextNode = node;\n }\n });\n // cast these back as typescript doesn't understand the forEach above\n previousNode = previousNode;\n nextNode = nextNode;\n // previous node may equal, or catch via detail node or child of group\n if (previousNode) {\n var indexOfRow = this.blockUtils.getIndexAtPixel(previousNode, pixel);\n if (indexOfRow != null) {\n return indexOfRow;\n }\n }\n var defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n // if node after this, can calculate backwards (and ignore detail/grouping)\n if (nextNode) {\n var nextTop_1 = nextNode.rowTop;\n var numberOfRowDiff_2 = Math.ceil((nextTop_1 - pixel) / defaultRowHeight);\n return nextNode.rowIndex - numberOfRowDiff_2;\n }\n // otherwise calculate from end of store\n var nextTop = this.topPx + this.heightPx;\n var numberOfRowDiff = Math.floor((nextTop - pixel) / defaultRowHeight);\n return this.getDisplayIndexEnd() - numberOfRowDiff;\n };\n /**\n * Given a path of group keys, returns the child store for that group.\n *\n * @param keys the grouping path to the desired store\n * @returns the child store for the given keys, or null if not found\n */\n LazyStore.prototype.getChildStore = function (keys) {\n var _this = this;\n return this.storeUtils.getChildStore(keys, this, function (key) {\n var lazyNode = _this.cache.getNodes().find(function (lazyNode) { return lazyNode.node.key == key; });\n if (!lazyNode) {\n return null;\n }\n return lazyNode.node;\n });\n };\n /**\n * Executes a provided callback on each child store belonging to this store\n *\n * @param cb the callback to execute\n */\n LazyStore.prototype.forEachChildStoreShallow = function (cb) {\n this.cache.getNodes().forEach(function (_a) {\n var node = _a.node;\n if (node.childStore) {\n cb(node.childStore);\n }\n });\n };\n /**\n * Executes after a change to sorting, determines recursively whether this store or a child requires refreshed.\n *\n * If a purge refresh occurs, the row count is preserved.\n *\n * @param params a set of properties pertaining to the sort changes\n */\n LazyStore.prototype.refreshAfterSort = function (params) {\n var serverSortsAllLevels = this.storeUtils.isServerSideSortAllLevels();\n if (serverSortsAllLevels || this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params)) {\n var oldCount = this.cache.getRowCount();\n this.destroyBean(this.cache);\n this.cache = this.createManagedBean(new LazyCache(this, oldCount, this.storeParams));\n this.fireStoreUpdatedEvent();\n return;\n }\n // call refreshAfterSort on children, as we did not purge.\n // if we did purge, no need to do this as all children were destroyed\n this.forEachChildStoreShallow(function (store) { return store.refreshAfterSort(params); });\n };\n /**\n * Executes after a change to filtering, determines recursively whether this store or a child requires refreshed.\n *\n * If a refresh occurs, the row count is reset.\n *\n * @param params a set of properties pertaining to the filter changes\n */\n LazyStore.prototype.refreshAfterFilter = function (params) {\n var serverFiltersAllLevels = this.storeUtils.isServerSideFilterAllLevels();\n if (serverFiltersAllLevels || this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params)) {\n this.refreshStore(true);\n return;\n }\n // call refreshAfterSort on children, as we did not purge.\n // if we did purge, no need to do this as all children were destroyed\n this.forEachChildStoreShallow(function (store) { return store.refreshAfterFilter(params); });\n };\n /**\n * Marks all existing nodes as requiring reloaded, and triggers a load check\n *\n * @param purge whether to remove all nodes and data in favour of stub nodes\n */\n LazyStore.prototype.refreshStore = function (purge) {\n if (purge) {\n this.destroyBean(this.cache);\n this.cache = this.createManagedBean(new LazyCache(this, 1, this.storeParams));\n this.fireStoreUpdatedEvent();\n return;\n }\n this.cache.markNodesForRefresh();\n };\n /**\n * Used for pagination, given a local/store index, returns the display index of that row\n *\n * @param topLevelIndex the store index of a row\n * @returns the display index for the given store index\n */\n LazyStore.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var displayIndex = this.cache.getDisplayIndexFromStoreIndex(topLevelIndex);\n return displayIndex !== null && displayIndex !== void 0 ? displayIndex : topLevelIndex;\n };\n /**\n * Used for pagination to determine if the last page is known, and for aria to determine if the last grid row is known\n *\n * @returns whether the last index of this store is known, or if lazy loading still required\n */\n LazyStore.prototype.isLastRowIndexKnown = function () {\n return this.cache.isLastRowIndexKnown();\n };\n /**\n * Used by the selection service to select a range of nodes\n *\n * @param firstInRange the first node in the range to find\n * @param lastInRange the last node in the range to find\n * @returns a range of nodes between firstInRange and lastInRange inclusive\n */\n LazyStore.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) ;\n return this.cache.getNodes().filter(function (_a) {\n var node = _a.node;\n return node.rowIndex >= firstInRange.rowIndex && node.rowIndex <= lastInRange.rowIndex;\n }).map(function (_a) {\n var node = _a.node;\n return node;\n });\n };\n /**\n * Mutates a given array to add this stores state, and recursively add all the children store states.\n *\n * @param result a mutable results array\n */\n LazyStore.prototype.addStoreStates = function (result) {\n result.push({\n suppressInfiniteScroll: false,\n route: this.parentRowNode.getGroupKeys(),\n rowCount: this.getRowCount(),\n lastRowIndexKnown: this.isLastRowIndexKnown(),\n info: this.info,\n maxBlocksInCache: this.storeParams.maxBlocksInCache,\n cacheBlockSize: this.storeParams.cacheBlockSize,\n });\n this.forEachChildStoreShallow(function (childStore) { return childStore.addStoreStates(result); });\n };\n LazyStore.prototype.getIdSequence = function () {\n return this.idSequence;\n };\n LazyStore.prototype.getParentNode = function () {\n return this.parentRowNode;\n };\n LazyStore.prototype.getRowDetails = function () {\n return {\n field: this.groupField,\n group: this.group,\n leafGroup: this.leafGroup,\n level: this.level,\n parent: this.parentRowNode,\n rowGroupColumn: this.rowGroupColumn,\n };\n };\n LazyStore.prototype.getSsrmParams = function () {\n return this.ssrmParams;\n };\n LazyStore.prototype.setStoreInfo = function (info) {\n if (info) {\n Object.assign(this.info, info);\n }\n };\n // gets called 1) row count changed 2) cache purged\n LazyStore.prototype.fireStoreUpdatedEvent = function () {\n // this results in row model firing ModelUpdated.\n // server side row model also updates the row indexes first\n var event = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event);\n };\n // gets called when row data updated, and no more refreshing needed\n LazyStore.prototype.fireRefreshFinishedEvent = function () {\n var event = {\n type: Events.EVENT_STORE_REFRESHED,\n route: this.parentRowNode.getRoute(),\n };\n this.eventService.dispatchEvent(event);\n };\n LazyStore.prototype.getBlockStates = function () {\n return this.cache.getBlockStates();\n };\n LazyStore.prototype.getStoreBounds = function () {\n return {\n topPx: this.topPx,\n heightPx: this.heightPx,\n };\n };\n __decorate$r([\n Autowired('ssrmBlockUtils')\n ], LazyStore.prototype, \"blockUtils\", void 0);\n __decorate$r([\n Autowired('ssrmStoreUtils')\n ], LazyStore.prototype, \"storeUtils\", void 0);\n __decorate$r([\n Autowired('columnModel')\n ], LazyStore.prototype, \"columnModel\", void 0);\n __decorate$r([\n PostConstruct\n ], LazyStore.prototype, \"init\", null);\n __decorate$r([\n PreDestroy\n ], LazyStore.prototype, \"destroyRowNodes\", null);\n return LazyStore;\n}(BeanStub));\n\nvar __extends$s = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$4 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar ServerSideRowModel = /** @class */ (function (_super) {\n __extends$s(ServerSideRowModel, _super);\n function ServerSideRowModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onRowHeightChanged_debounced = _.debounce(_this.onRowHeightChanged.bind(_this), 100);\n _this.pauseStoreUpdateListening = false;\n _this.started = false;\n return _this;\n }\n // we don't implement as lazy row heights is not supported in this row model\n ServerSideRowModel.prototype.ensureRowHeightsValid = function () { return false; };\n ServerSideRowModel.prototype.start = function () {\n this.started = true;\n var datasource = this.gridOptionsService.get('serverSideDatasource');\n if (datasource) {\n this.setDatasource(datasource);\n }\n };\n ServerSideRowModel.prototype.destroyDatasource = function () {\n if (!this.datasource) {\n return;\n }\n if (this.datasource.destroy) {\n this.datasource.destroy();\n }\n this.rowRenderer.datasourceChanged();\n this.datasource = undefined;\n };\n ServerSideRowModel.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverything.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_STORE_UPDATED, this.onStoreUpdated.bind(this));\n var resetListener = this.resetRootStore.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, resetListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, resetListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, resetListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, resetListener);\n this.verifyProps();\n };\n ServerSideRowModel.prototype.verifyProps = function () {\n if (this.gridOptionsService.exists('initialGroupOrderComparator') || this.gridOptionsService.exists('defaultGroupOrderComparator')) {\n var message_1 = \"AG Grid: initialGroupOrderComparator cannot be used with Server Side Row Model. If using Full Store, then provide the rows to the grid in the desired sort order. If using Infinite Scroll, then sorting is done on the server side, nothing to do with the client.\";\n _.doOnce(function () { return console.warn(message_1); }, 'SSRM.InitialGroupOrderComparator');\n }\n if (this.gridOptionsService.isRowSelection() && !this.gridOptionsService.exists('getRowId')) {\n var message_2 = \"AG Grid: getRowId callback must be provided for Server Side Row Model selection to work correctly.\";\n _.doOnce(function () { return console.warn(message_2); }, 'SSRM.SelectionNeedsRowNodeIdFunc');\n }\n };\n ServerSideRowModel.prototype.setDatasource = function (datasource) {\n // sometimes React, due to async, can call gridApi.setDatasource() before we have started.\n // this happens when React app does this:\n // useEffect(() => setDatasource(ds), []);\n // thus if we set the datasource before the grid UI has finished initialising, we do not set it,\n // and the ssrm.start() method will set the datasoure when the grid is ready.\n if (!this.started) {\n return;\n }\n this.destroyDatasource();\n this.datasource = datasource;\n this.resetRootStore();\n };\n ServerSideRowModel.prototype.isLastRowIndexKnown = function () {\n var cache = this.getRootStore();\n if (!cache) {\n return false;\n }\n return cache.isLastRowIndexKnown();\n };\n ServerSideRowModel.prototype.onColumnEverything = function () {\n // if first time, always reset\n if (!this.storeParams) {\n this.resetRootStore();\n return;\n }\n // check if anything pertaining to fetching data has changed, and if it has, reset, but if\n // it has not, don't reset\n var rowGroupColumnVos = this.columnsToValueObjects(this.columnModel.getRowGroupColumns());\n var valueColumnVos = this.columnsToValueObjects(this.columnModel.getValueColumns());\n var pivotColumnVos = this.columnsToValueObjects(this.columnModel.getPivotColumns());\n // compares two sets of columns, ensuring no columns have been added or removed (unless specified via allowRemovedColumns)\n // if the columns are found, also ensures the field and aggFunc properties have not been changed.\n var areColsSame = function (params) {\n var oldColsMap = {};\n params.oldCols.forEach(function (col) { return oldColsMap[col.id] = col; });\n var allColsUnchanged = params.newCols.every(function (col) {\n var equivalentCol = oldColsMap[col.id];\n if (equivalentCol) {\n delete oldColsMap[col.id];\n }\n return equivalentCol && equivalentCol.field === col.field && equivalentCol.aggFunc === col.aggFunc;\n });\n var missingCols = !params.allowRemovedColumns && !!Object.values(oldColsMap).length;\n return allColsUnchanged && !missingCols;\n };\n var sortModelDifferent = !_.jsonEquals(this.storeParams.sortModel, this.sortListener.extractSortModel());\n var rowGroupDifferent = !areColsSame({\n oldCols: this.storeParams.rowGroupCols,\n newCols: rowGroupColumnVos,\n });\n var pivotDifferent = !areColsSame({\n oldCols: this.storeParams.pivotCols,\n newCols: pivotColumnVos,\n });\n var valuesDifferent = !!(rowGroupColumnVos === null || rowGroupColumnVos === void 0 ? void 0 : rowGroupColumnVos.length) && !areColsSame({\n oldCols: this.storeParams.valueCols,\n newCols: valueColumnVos,\n allowRemovedColumns: true,\n });\n var resetRequired = sortModelDifferent || rowGroupDifferent || pivotDifferent || valuesDifferent;\n if (resetRequired) {\n this.resetRootStore();\n }\n else {\n // cols may have changed even if we didn't do a reset. storeParams ref will be provided when getRows\n // is called, so it's important to keep it up to date.\n var newParams = this.createStoreParams();\n this.storeParams.rowGroupCols = newParams.rowGroupCols;\n this.storeParams.pivotCols = newParams.pivotCols;\n this.storeParams.valueCols = newParams.valueCols;\n }\n };\n ServerSideRowModel.prototype.destroyRootStore = function () {\n if (!this.rootNode || !this.rootNode.childStore) {\n return;\n }\n this.rootNode.childStore = this.destroyBean(this.rootNode.childStore);\n this.nodeManager.clear();\n };\n ServerSideRowModel.prototype.refreshAfterSort = function (newSortModel, params) {\n if (this.storeParams) {\n this.storeParams.sortModel = newSortModel;\n }\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.refreshAfterSort(params);\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.resetRootStore = function () {\n this.destroyRootStore();\n this.rootNode = new RowNode(this.beans);\n this.rootNode.group = true;\n this.rootNode.level = -1;\n if (this.datasource) {\n this.storeParams = this.createStoreParams();\n this.rootNode.childStore = this.createBean(this.storeFactory.createStore(this.storeParams, this.rootNode));\n this.updateRowIndexesAndBounds();\n }\n // this event shows/hides 'no rows' overlay\n var rowDataChangedEvent = {\n type: Events.EVENT_ROW_DATA_UPDATED\n };\n this.eventService.dispatchEvent(rowDataChangedEvent);\n // this gets the row to render rows (or remove the previously rendered rows, as it's blank to start).\n // important to NOT pass in an event with keepRenderedRows or animate, as we want the renderer\n // to treat the rows as new rows, as it's all new data\n this.dispatchModelUpdated(true);\n };\n ServerSideRowModel.prototype.columnsToValueObjects = function (columns) {\n var _this = this;\n return columns.map(function (col) { return ({\n id: col.getId(),\n aggFunc: col.getAggFunc(),\n displayName: _this.columnModel.getDisplayNameForColumn(col, 'model'),\n field: col.getColDef().field\n }); });\n };\n ServerSideRowModel.prototype.createStoreParams = function () {\n var rowGroupColumnVos = this.columnsToValueObjects(this.columnModel.getRowGroupColumns());\n var valueColumnVos = this.columnsToValueObjects(this.columnModel.getValueColumns());\n var pivotColumnVos = this.columnsToValueObjects(this.columnModel.getPivotColumns());\n var dynamicRowHeight = this.gridOptionsService.isGetRowHeightFunction();\n var params = {\n // the columns the user has grouped and aggregated by\n valueCols: valueColumnVos,\n rowGroupCols: rowGroupColumnVos,\n pivotCols: pivotColumnVos,\n pivotMode: this.columnModel.isPivotMode(),\n // sort and filter model\n filterModel: this.filterManager.getFilterModel(),\n sortModel: this.sortListener.extractSortModel(),\n datasource: this.datasource,\n lastAccessedSequence: new NumberSequence(),\n // blockSize: blockSize == null ? 100 : blockSize,\n dynamicRowHeight: dynamicRowHeight\n };\n return params;\n };\n ServerSideRowModel.prototype.getParams = function () {\n return this.storeParams;\n };\n ServerSideRowModel.prototype.dispatchModelUpdated = function (reset) {\n if (reset === void 0) { reset = false; }\n var modelUpdatedEvent = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: !reset,\n keepRenderedRows: !reset,\n newPage: false,\n newData: false\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.onStoreUpdated = function () {\n // sometimes if doing a batch update, we do the batch first,\n // then call onStoreUpdated manually. eg expandAll() method.\n if (this.pauseStoreUpdateListening) {\n return;\n }\n this.updateRowIndexesAndBounds();\n this.dispatchModelUpdated();\n };\n /** This method is debounced. It is used for row auto-height. If we don't debounce,\n * then the Row Models will end up recalculating each row position\n * for each row height change and result in the Row Renderer laying out rows.\n * This is particularly bad if using print layout, and showing eg 1,000 rows,\n * each row will change it's height, causing Row Model to update 1,000 times.\n */\n ServerSideRowModel.prototype.onRowHeightChangedDebounced = function () {\n this.onRowHeightChanged_debounced();\n };\n ServerSideRowModel.prototype.onRowHeightChanged = function () {\n this.updateRowIndexesAndBounds();\n this.dispatchModelUpdated();\n };\n ServerSideRowModel.prototype.updateRowIndexesAndBounds = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.setDisplayIndexes(new NumberSequence(), { value: 0 });\n };\n ServerSideRowModel.prototype.retryLoads = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.retryLoads();\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.getRow = function (index) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return undefined;\n }\n return rootStore.getRowUsingDisplayIndex(index);\n };\n ServerSideRowModel.prototype.expandAll = function (value) {\n // if we don't pause store updating, we are needlessly\n // recalculating row-indexes etc, and also getting rendering\n // engine to re-render (listens on ModelUpdated event)\n this.pauseStoreUpdateListening = true;\n this.forEachNode(function (node) {\n if (node.stub) {\n return;\n }\n if (node.hasChildren()) {\n node.setExpanded(value);\n }\n });\n this.pauseStoreUpdateListening = false;\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.refreshAfterFilter = function (newFilterModel, params) {\n if (this.storeParams) {\n this.storeParams.filterModel = newFilterModel;\n }\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.refreshAfterFilter(params);\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.getRootStore = function () {\n if (this.rootNode && this.rootNode.childStore) {\n return this.rootNode.childStore;\n }\n };\n ServerSideRowModel.prototype.getRowCount = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return 0;\n }\n return rootStore.getDisplayIndexEnd();\n };\n ServerSideRowModel.prototype.getTopLevelRowCount = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return 1;\n }\n return rootStore.getRowCount();\n };\n ServerSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return topLevelIndex;\n }\n return rootStore.getTopLevelRowDisplayedIndex(topLevelIndex);\n };\n ServerSideRowModel.prototype.getRowBounds = function (index) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n var rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n return {\n rowTop: 0,\n rowHeight: rowHeight\n };\n }\n return rootStore.getRowBounds(index);\n };\n ServerSideRowModel.prototype.getBlockStates = function () {\n var root = this.getRootStore();\n if (!root) {\n return undefined;\n }\n var states = {};\n root.forEachStoreDeep(function (store) {\n if (store instanceof FullStore) {\n var _a = store.getBlockStateJson(), id = _a.id, state = _a.state;\n states[id] = state;\n }\n else if (store instanceof LazyStore) {\n Object.entries(store.getBlockStates()).forEach(function (_a) {\n var _b = __read$4(_a, 2), block = _b[0], state = _b[1];\n states[block] = state;\n });\n }\n else {\n throw new Error('AG Grid: Unsupported store type');\n }\n });\n return states;\n };\n ServerSideRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n var rootStore = this.getRootStore();\n if (pixel <= 0 || !rootStore) {\n return 0;\n }\n return rootStore.getRowIndexAtPixel(pixel);\n };\n ServerSideRowModel.prototype.isEmpty = function () {\n return false;\n };\n ServerSideRowModel.prototype.isRowsToRender = function () {\n return this.getRootStore() != null && this.getRowCount() > 0;\n };\n ServerSideRowModel.prototype.getType = function () {\n return 'serverSide';\n };\n ServerSideRowModel.prototype.forEachNode = function (callback) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.forEachNodeDeep(callback);\n };\n ServerSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.forEachNodeDeepAfterFilterAndSort(callback);\n };\n ServerSideRowModel.prototype.executeOnStore = function (route, callback) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n var storeToExecuteOn = rootStore.getChildStore(route);\n if (storeToExecuteOn) {\n callback(storeToExecuteOn);\n }\n };\n ServerSideRowModel.prototype.refreshStore = function (params) {\n if (params === void 0) { params = {}; }\n var route = params.route ? params.route : [];\n this.executeOnStore(route, function (store) { return store.refreshStore(params.purge == true); });\n };\n ServerSideRowModel.prototype.getStoreState = function () {\n var res = [];\n var rootStore = this.getRootStore();\n if (rootStore) {\n rootStore.addStoreStates(res);\n }\n return res;\n };\n ServerSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n if (!_.exists(firstInRange)) {\n return [];\n }\n if (!lastInRange) {\n return [firstInRange];\n }\n var startIndex = firstInRange.rowIndex;\n var endIndex = lastInRange.rowIndex;\n if (startIndex === null || endIndex === null) {\n return [firstInRange];\n }\n var nodeRange = [];\n var _a = __read$4([startIndex, endIndex].sort(function (a, b) { return a - b; }), 2), firstIndex = _a[0], lastIndex = _a[1];\n this.forEachNode(function (node) {\n var thisRowIndex = node.rowIndex;\n if (thisRowIndex == null || node.stub) {\n return;\n }\n if (thisRowIndex >= firstIndex && thisRowIndex <= lastIndex) {\n nodeRange.push(node);\n }\n });\n var rowsAreContiguous = nodeRange.every(function (node, idx, all) {\n if (idx === 0) {\n return node.rowIndex === firstIndex;\n }\n return all[idx - 1].rowIndex === (node.rowIndex - 1);\n });\n // don't allow range selection if we don't have the full range of rows\n if (!rowsAreContiguous || nodeRange.length !== (lastIndex - firstIndex + 1)) {\n return [firstInRange];\n }\n return nodeRange;\n };\n ServerSideRowModel.prototype.getRowNode = function (id) {\n var result;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n if (rowNode.detailNode && rowNode.detailNode.id === id) {\n result = rowNode.detailNode;\n }\n });\n return result;\n };\n ServerSideRowModel.prototype.isRowPresent = function (rowNode) {\n var foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n };\n ServerSideRowModel.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {\n var rootStore = this.getRootStore();\n if (rootStore) {\n if (rootStore instanceof LazyStore) {\n rootStore.setRowCount(rowCount, lastRowIndexKnown);\n return;\n }\n console.error('AG Grid: Infinite scrolling must be enabled in order to set the row count.');\n }\n };\n __decorate$q([\n Autowired('columnModel')\n ], ServerSideRowModel.prototype, \"columnModel\", void 0);\n __decorate$q([\n Autowired('filterManager')\n ], ServerSideRowModel.prototype, \"filterManager\", void 0);\n __decorate$q([\n Autowired('rowRenderer')\n ], ServerSideRowModel.prototype, \"rowRenderer\", void 0);\n __decorate$q([\n Autowired('ssrmSortService')\n ], ServerSideRowModel.prototype, \"sortListener\", void 0);\n __decorate$q([\n Autowired('ssrmNodeManager')\n ], ServerSideRowModel.prototype, \"nodeManager\", void 0);\n __decorate$q([\n Autowired('ssrmStoreFactory')\n ], ServerSideRowModel.prototype, \"storeFactory\", void 0);\n __decorate$q([\n Autowired('beans')\n ], ServerSideRowModel.prototype, \"beans\", void 0);\n __decorate$q([\n PreDestroy\n ], ServerSideRowModel.prototype, \"destroyDatasource\", null);\n __decorate$q([\n PostConstruct\n ], ServerSideRowModel.prototype, \"addEventListeners\", null);\n __decorate$q([\n PreDestroy\n ], ServerSideRowModel.prototype, \"destroyRootStore\", null);\n ServerSideRowModel = __decorate$q([\n Bean('rowModel')\n ], ServerSideRowModel);\n return ServerSideRowModel;\n}(BeanStub));\n\nvar __extends$r = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StoreUtils = /** @class */ (function (_super) {\n __extends$r(StoreUtils, _super);\n function StoreUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StoreUtils.prototype.loadFromDatasource = function (p) {\n var storeParams = p.storeParams, parentBlock = p.parentBlock, parentNode = p.parentNode;\n var groupKeys = parentNode.getGroupKeys();\n if (!storeParams.datasource) {\n return;\n }\n var request = {\n startRow: p.startRow,\n endRow: p.endRow,\n rowGroupCols: storeParams.rowGroupCols,\n valueCols: storeParams.valueCols,\n pivotCols: storeParams.pivotCols,\n pivotMode: storeParams.pivotMode,\n groupKeys: groupKeys,\n filterModel: storeParams.filterModel,\n sortModel: storeParams.sortModel\n };\n var getRowsParams = {\n successCallback: p.successCallback,\n success: p.success,\n failCallback: p.failCallback,\n fail: p.fail,\n request: request,\n parentNode: p.parentNode,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context\n };\n window.setTimeout(function () {\n if (!storeParams.datasource || !parentBlock.isAlive()) {\n // failCallback() is important, to reduce the 'RowNodeBlockLoader.activeBlockLoadsCount' count\n p.failCallback();\n return;\n }\n storeParams.datasource.getRows(getRowsParams);\n }, 0);\n };\n StoreUtils.prototype.getChildStore = function (keys, currentCache, findNodeFunc) {\n if (_.missingOrEmpty(keys)) {\n return currentCache;\n }\n var nextKey = keys[0];\n var nextNode = findNodeFunc(nextKey);\n if (nextNode) {\n var keyListForNextLevel = keys.slice(1, keys.length);\n var nextStore = nextNode.childStore;\n return nextStore ? nextStore.getChildStore(keyListForNextLevel) : null;\n }\n return null;\n };\n StoreUtils.prototype.isServerRefreshNeeded = function (parentRowNode, rowGroupCols, params) {\n if (params.valueColChanged || params.secondaryColChanged) {\n return true;\n }\n var level = parentRowNode.level + 1;\n var grouping = level < rowGroupCols.length;\n var leafNodes = !grouping;\n if (leafNodes) {\n return true;\n }\n var colIdThisGroup = rowGroupCols[level].id;\n var actionOnThisGroup = params.changedColumns.indexOf(colIdThisGroup) > -1;\n if (actionOnThisGroup) {\n return true;\n }\n var allCols = this.columnModel.getAllGridColumns();\n var affectedGroupCols = allCols\n // find all impacted cols which also a group display column\n .filter(function (col) { return col.getColDef().showRowGroup && params.changedColumns.includes(col.getId()); })\n .map(function (col) { return col.getColDef().showRowGroup; })\n // if displaying all groups, or displaying the effected col for this group, refresh\n .some(function (group) { return group === true || group === colIdThisGroup; });\n return affectedGroupCols;\n };\n StoreUtils.prototype.getServerSideInitialRowCount = function () {\n var rowCount = this.gridOptionsService.getNum('serverSideInitialRowCount');\n if (typeof rowCount === 'number' && rowCount > 0) {\n return rowCount;\n }\n return 1;\n };\n StoreUtils.prototype.assertRowModelIsServerSide = function (key) {\n if (!this.gridOptionsService.isRowModelType('serverSide')) {\n _.doOnce(function () { return console.warn(\"AG Grid: The '\" + key + \"' property can only be used with the Server Side Row Model.\"); }, key);\n return false;\n }\n return true;\n };\n StoreUtils.prototype.assertNotTreeData = function (key) {\n if (this.gridOptionsService.is('treeData')) {\n _.doOnce(function () { return console.warn(\"AG Grid: The '\" + key + \"' property cannot be used while using tree data.\"); }, key + '_TreeData');\n return false;\n }\n return true;\n };\n StoreUtils.prototype.isServerSideSortAllLevels = function () {\n return this.gridOptionsService.is('serverSideSortAllLevels') && this.assertRowModelIsServerSide('serverSideSortAllLevels');\n };\n StoreUtils.prototype.isServerSideFilterAllLevels = function () {\n return this.gridOptionsService.is('serverSideFilterAllLevels') && this.assertRowModelIsServerSide('serverSideFilterAllLevels');\n };\n StoreUtils.prototype.isServerSideSortOnServer = function () {\n return this.gridOptionsService.is('serverSideSortOnServer') && this.assertRowModelIsServerSide('serverSideSortOnServer') && this.assertNotTreeData('serverSideSortOnServer');\n };\n StoreUtils.prototype.isServerSideFilterOnServer = function () {\n return this.gridOptionsService.is('serverSideFilterOnServer') && this.assertRowModelIsServerSide('serverSideFilterOnServer') && this.assertNotTreeData('serverSideFilterOnServer');\n };\n __decorate$p([\n Autowired('columnApi')\n ], StoreUtils.prototype, \"columnApi\", void 0);\n __decorate$p([\n Autowired('columnModel')\n ], StoreUtils.prototype, \"columnModel\", void 0);\n __decorate$p([\n Autowired('gridApi')\n ], StoreUtils.prototype, \"gridApi\", void 0);\n StoreUtils = __decorate$p([\n Bean('ssrmStoreUtils')\n ], StoreUtils);\n return StoreUtils;\n}(BeanStub));\n\nvar __extends$q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GROUP_MISSING_KEY_ID = 'ag-Grid-MissingKey';\nvar BlockUtils = /** @class */ (function (_super) {\n __extends$q(BlockUtils, _super);\n function BlockUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockUtils.prototype.postConstruct = function () {\n this.rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n this.usingTreeData = this.gridOptionsService.isTreeData();\n this.usingMasterDetail = this.gridOptionsService.isMasterDetail();\n };\n BlockUtils.prototype.createRowNode = function (params) {\n var rowNode = new RowNode(this.beans);\n var rowHeight = params.rowHeight != null ? params.rowHeight : this.rowHeight;\n rowNode.setRowHeight(rowHeight);\n rowNode.group = params.group;\n rowNode.leafGroup = params.leafGroup;\n rowNode.level = params.level;\n rowNode.uiLevel = params.level;\n rowNode.parent = params.parent;\n // stub gets set to true here, and then false when this rowNode gets it's data\n rowNode.stub = true;\n rowNode.__needsRefreshWhenVisible = false;\n if (rowNode.group) {\n rowNode.expanded = false;\n rowNode.field = params.field;\n rowNode.rowGroupColumn = params.rowGroupColumn;\n }\n return rowNode;\n };\n BlockUtils.prototype.destroyRowNodes = function (rowNodes) {\n var _this = this;\n if (rowNodes) {\n rowNodes.forEach(function (row) { return _this.destroyRowNode(row); });\n }\n };\n BlockUtils.prototype.destroyRowNode = function (rowNode, preserveStore) {\n if (preserveStore === void 0) { preserveStore = false; }\n if (rowNode.childStore && !preserveStore) {\n this.destroyBean(rowNode.childStore);\n rowNode.childStore = null;\n }\n // this is needed, so row render knows to fade out the row, otherwise it\n // sees row top is present, and thinks the row should be shown. maybe\n // rowNode should have a flag on whether it is visible???\n rowNode.clearRowTopAndRowIndex();\n if (rowNode.id != null) {\n this.nodeManager.removeNode(rowNode);\n }\n };\n BlockUtils.prototype.setTreeGroupInfo = function (rowNode) {\n rowNode.updateHasChildren();\n var getKeyFunc = this.gridOptionsService.get('getServerSideGroupKey');\n if (rowNode.hasChildren() && getKeyFunc != null) {\n rowNode.key = getKeyFunc(rowNode.data);\n }\n if (!rowNode.hasChildren() && rowNode.childStore != null) {\n this.destroyBean(rowNode.childStore);\n rowNode.childStore = null;\n rowNode.expanded = false;\n }\n };\n BlockUtils.prototype.setRowGroupInfo = function (rowNode) {\n rowNode.key = this.valueService.getValue(rowNode.rowGroupColumn, rowNode);\n if (rowNode.key === null || rowNode.key === undefined) {\n _.doOnce(function () {\n console.warn(\"AG Grid: null and undefined values are not allowed for server side row model keys\");\n if (rowNode.rowGroupColumn) {\n console.warn(\"column = \" + rowNode.rowGroupColumn.getId());\n }\n console.warn(\"data is \", rowNode.data);\n }, 'ServerSideBlock-CannotHaveNullOrUndefinedForKey');\n }\n };\n BlockUtils.prototype.setMasterDetailInfo = function (rowNode) {\n var isMasterFunc = this.gridOptionsService.get('isRowMaster');\n if (isMasterFunc != null) {\n rowNode.master = isMasterFunc(rowNode.data);\n }\n else {\n rowNode.master = true;\n }\n };\n BlockUtils.prototype.updateDataIntoRowNode = function (rowNode, data) {\n rowNode.updateData(data);\n if (this.usingTreeData) {\n this.setTreeGroupInfo(rowNode);\n this.setChildCountIntoRowNode(rowNode);\n }\n else if (rowNode.group) {\n this.setChildCountIntoRowNode(rowNode);\n // it's not possible for a node to change whether it's a group or not\n // when doing row grouping (as only rows at certain levels are groups),\n // so nothing to do here\n }\n else if (this.usingMasterDetail) ;\n };\n BlockUtils.prototype.setDataIntoRowNode = function (rowNode, data, defaultId, cachedRowHeight) {\n rowNode.stub = false;\n if (_.exists(data)) {\n rowNode.setDataAndId(data, defaultId);\n if (this.usingTreeData) {\n this.setTreeGroupInfo(rowNode);\n }\n else if (rowNode.group) {\n this.setRowGroupInfo(rowNode);\n }\n else if (this.usingMasterDetail) {\n this.setMasterDetailInfo(rowNode);\n }\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n rowNode.key = null;\n }\n if (this.usingTreeData || rowNode.group) {\n this.setGroupDataIntoRowNode(rowNode);\n this.setChildCountIntoRowNode(rowNode);\n }\n // this needs to be done AFTER setGroupDataIntoRowNode(), as the height can depend on the group data\n // getting set, if it's a group node and colDef.autoHeight=true\n if (_.exists(data)) {\n rowNode.setRowHeight(this.gridOptionsService.getRowHeightForNode(rowNode, false, cachedRowHeight).height);\n }\n };\n BlockUtils.prototype.setChildCountIntoRowNode = function (rowNode) {\n var getChildCount = this.gridOptionsService.get('getChildCount');\n if (getChildCount) {\n rowNode.setAllChildrenCount(getChildCount(rowNode.data));\n }\n };\n BlockUtils.prototype.setGroupDataIntoRowNode = function (rowNode) {\n var _this = this;\n var groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n var usingTreeData = this.gridOptionsService.isTreeData();\n groupDisplayCols.forEach(function (col) {\n if (rowNode.groupData == null) {\n rowNode.groupData = {};\n }\n if (usingTreeData) {\n rowNode.groupData[col.getColId()] = rowNode.key;\n }\n else if (col.isRowGroupDisplayed(rowNode.rowGroupColumn.getId())) {\n var groupValue = _this.valueService.getValue(rowNode.rowGroupColumn, rowNode);\n rowNode.groupData[col.getColId()] = groupValue;\n }\n });\n };\n BlockUtils.prototype.clearDisplayIndex = function (rowNode) {\n rowNode.clearRowTopAndRowIndex();\n var hasChildStore = rowNode.hasChildren() && _.exists(rowNode.childStore);\n if (hasChildStore) {\n var childStore = rowNode.childStore;\n childStore.clearDisplayIndexes();\n }\n var hasDetailNode = rowNode.master && rowNode.detailNode;\n if (hasDetailNode) {\n rowNode.detailNode.clearRowTopAndRowIndex();\n }\n };\n BlockUtils.prototype.setDisplayIndex = function (rowNode, displayIndexSeq, nextRowTop) {\n // set this row\n rowNode.setRowIndex(displayIndexSeq.next());\n rowNode.setRowTop(nextRowTop.value);\n nextRowTop.value += rowNode.rowHeight;\n // set child for master / detail\n var hasDetailRow = rowNode.master;\n if (hasDetailRow) {\n if (rowNode.expanded && rowNode.detailNode) {\n rowNode.detailNode.setRowIndex(displayIndexSeq.next());\n rowNode.detailNode.setRowTop(nextRowTop.value);\n nextRowTop.value += rowNode.detailNode.rowHeight;\n }\n else if (rowNode.detailNode) {\n rowNode.detailNode.clearRowTopAndRowIndex();\n }\n }\n // set children for SSRM child rows\n var hasChildStore = rowNode.hasChildren() && _.exists(rowNode.childStore);\n if (hasChildStore) {\n var childStore = rowNode.childStore;\n if (rowNode.expanded) {\n childStore.setDisplayIndexes(displayIndexSeq, nextRowTop);\n }\n else {\n // we need to clear the row tops, as the row renderer depends on\n // this to know if the row should be faded out\n childStore.clearDisplayIndexes();\n }\n }\n };\n BlockUtils.prototype.binarySearchForDisplayIndex = function (displayRowIndex, rowNodes) {\n var bottomPointer = 0;\n var topPointer = rowNodes.length - 1;\n if (_.missing(topPointer) || _.missing(bottomPointer)) {\n console.warn(\"AG Grid: error: topPointer = \" + topPointer + \", bottomPointer = \" + bottomPointer);\n return undefined;\n }\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = rowNodes[midPointer];\n // first check current row for index\n if (currentRowNode.rowIndex === displayRowIndex) {\n return currentRowNode;\n }\n // then check if current row contains a detail row with the index\n var expandedMasterRow = currentRowNode.master && currentRowNode.expanded;\n var detailNode = currentRowNode.detailNode;\n if (expandedMasterRow && detailNode && detailNode.rowIndex === displayRowIndex) {\n return currentRowNode.detailNode;\n }\n // then check if child cache contains index\n var childStore = currentRowNode.childStore;\n if (currentRowNode.expanded && childStore && childStore.isDisplayIndexInStore(displayRowIndex)) {\n return childStore.getRowUsingDisplayIndex(displayRowIndex);\n }\n // otherwise adjust pointers to continue searching for index\n if (currentRowNode.rowIndex < displayRowIndex) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowIndex > displayRowIndex) {\n topPointer = midPointer - 1;\n }\n else {\n console.warn(\"AG Grid: error: unable to locate rowIndex = \" + displayRowIndex + \" in cache\");\n return undefined;\n }\n }\n };\n BlockUtils.prototype.extractRowBounds = function (rowNode, index) {\n var extractRowBounds = function (currentRowNode) { return ({\n rowHeight: currentRowNode.rowHeight,\n rowTop: currentRowNode.rowTop\n }); };\n if (rowNode.rowIndex === index) {\n return extractRowBounds(rowNode);\n }\n if (rowNode.hasChildren() && rowNode.expanded && _.exists(rowNode.childStore)) {\n var childStore = rowNode.childStore;\n if (childStore.isDisplayIndexInStore(index)) {\n return childStore.getRowBounds(index);\n }\n }\n else if (rowNode.master && rowNode.expanded && _.exists(rowNode.detailNode)) {\n if (rowNode.detailNode.rowIndex === index) {\n return extractRowBounds(rowNode.detailNode);\n }\n }\n };\n BlockUtils.prototype.getIndexAtPixel = function (rowNode, pixel) {\n // first check if pixel is in range of current row\n if (rowNode.isPixelInRange(pixel)) {\n return rowNode.rowIndex;\n }\n // then check if current row contains a detail row with pixel in range\n var expandedMasterRow = rowNode.master && rowNode.expanded;\n var detailNode = rowNode.detailNode;\n if (expandedMasterRow && detailNode && detailNode.isPixelInRange(pixel)) {\n return rowNode.detailNode.rowIndex;\n }\n // then check if it's a group row with a child cache with pixel in range\n if (rowNode.hasChildren() && rowNode.expanded && _.exists(rowNode.childStore)) {\n var childStore = rowNode.childStore;\n if (childStore.isPixelInRange(pixel)) {\n return childStore.getRowIndexAtPixel(pixel);\n }\n }\n return null;\n // pixel is not within this row node or it's children / detail, so return undefined\n };\n BlockUtils.prototype.createNodeIdPrefix = function (parentRowNode) {\n var parts = [];\n var rowNode = parentRowNode;\n // pull keys from all parent nodes, but do not include the root node\n while (rowNode && rowNode.level >= 0) {\n if (rowNode.key === '') {\n parts.push(GROUP_MISSING_KEY_ID);\n }\n else {\n parts.push(rowNode.key);\n }\n rowNode = rowNode.parent;\n }\n if (parts.length > 0) {\n return parts.reverse().join('-');\n }\n // no prefix, so node id's are left as they are\n return undefined;\n };\n BlockUtils.prototype.checkOpenByDefault = function (rowNode) {\n if (!rowNode.isExpandable()) {\n return;\n }\n var userFunc = this.gridOptionsService.getCallback('isServerSideGroupOpenByDefault');\n if (!userFunc) {\n return;\n }\n var params = {\n data: rowNode.data,\n rowNode: rowNode\n };\n var userFuncRes = userFunc(params);\n if (userFuncRes) {\n // we do this in a timeout, so that we don't expand a row node while in the middle\n // of setting up rows, setting up rows is complex enough without another chunk of work\n // getting added to the call stack. this is also helpful as openByDefault may or may\n // not happen (so makes setting up rows more deterministic by expands never happening)\n // and also checkOpenByDefault is shard with both store types, so easier control how it\n // impacts things by keeping it in new VM turn.\n window.setTimeout(function () { return rowNode.setExpanded(true); }, 0);\n }\n };\n __decorate$o([\n Autowired('valueService')\n ], BlockUtils.prototype, \"valueService\", void 0);\n __decorate$o([\n Autowired('columnModel')\n ], BlockUtils.prototype, \"columnModel\", void 0);\n __decorate$o([\n Autowired('ssrmNodeManager')\n ], BlockUtils.prototype, \"nodeManager\", void 0);\n __decorate$o([\n Autowired('beans')\n ], BlockUtils.prototype, \"beans\", void 0);\n __decorate$o([\n PostConstruct\n ], BlockUtils.prototype, \"postConstruct\", null);\n BlockUtils = __decorate$o([\n Bean('ssrmBlockUtils')\n ], BlockUtils);\n return BlockUtils;\n}(BeanStub));\n\nvar __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NodeManager = /** @class */ (function () {\n function NodeManager() {\n this.rowNodes = {};\n }\n NodeManager.prototype.addRowNode = function (rowNode) {\n var id = rowNode.id;\n if (this.rowNodes[id]) {\n console.warn(\"AG Grid: Duplicate node id \" + rowNode.id + \". Row ID's are provided via the getRowId() callback. Please modify the getRowId() callback code to provide unique row id values.\");\n console.warn('first instance', this.rowNodes[id].data);\n console.warn('second instance', rowNode.data);\n }\n this.rowNodes[id] = rowNode;\n };\n NodeManager.prototype.removeNode = function (rowNode) {\n var id = rowNode.id;\n if (this.rowNodes[id]) {\n this.rowNodes[id] = undefined;\n }\n };\n NodeManager.prototype.clear = function () {\n this.rowNodes = {};\n };\n __decorate$n([\n PreDestroy\n ], NodeManager.prototype, \"clear\", null);\n NodeManager = __decorate$n([\n Bean('ssrmNodeManager')\n ], NodeManager);\n return NodeManager;\n}());\n\nvar __extends$p = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TransactionManager = /** @class */ (function (_super) {\n __extends$p(TransactionManager, _super);\n function TransactionManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.asyncTransactions = [];\n return _this;\n }\n TransactionManager.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsService.isRowModelType('serverSide')) {\n return;\n }\n };\n TransactionManager.prototype.applyTransactionAsync = function (transaction, callback) {\n if (this.asyncTransactionsTimeout == null) {\n this.scheduleExecuteAsync();\n }\n this.asyncTransactions.push({ transaction: transaction, callback: callback });\n };\n TransactionManager.prototype.scheduleExecuteAsync = function () {\n var _this = this;\n var waitMillis = this.gridOptionsService.getAsyncTransactionWaitMillis();\n this.asyncTransactionsTimeout = window.setTimeout(function () {\n _this.executeAsyncTransactions();\n }, waitMillis);\n };\n TransactionManager.prototype.executeAsyncTransactions = function () {\n var _this = this;\n if (!this.asyncTransactions) {\n return;\n }\n var resultFuncs = [];\n var resultsForEvent = [];\n var transactionsToRetry = [];\n var atLeastOneTransactionApplied = false;\n this.asyncTransactions.forEach(function (txWrapper) {\n var result;\n _this.serverSideRowModel.executeOnStore(txWrapper.transaction.route, function (cache) {\n result = cache.applyTransaction(txWrapper.transaction);\n });\n if (result == undefined) {\n result = { status: ServerSideTransactionResultStatus.StoreNotFound };\n }\n resultsForEvent.push(result);\n var retryTransaction = result.status == ServerSideTransactionResultStatus.StoreLoading;\n if (retryTransaction) {\n transactionsToRetry.push(txWrapper);\n return;\n }\n if (txWrapper.callback) {\n resultFuncs.push(function () { return txWrapper.callback(result); });\n }\n if (result.status === ServerSideTransactionResultStatus.Applied) {\n atLeastOneTransactionApplied = true;\n }\n });\n // do callbacks in next VM turn so it's async\n if (resultFuncs.length > 0) {\n window.setTimeout(function () {\n resultFuncs.forEach(function (func) { return func(); });\n }, 0);\n }\n this.asyncTransactionsTimeout = undefined;\n // this will be empty list if nothing to retry\n this.asyncTransactions = transactionsToRetry;\n if (atLeastOneTransactionApplied) {\n this.valueCache.onDataChanged();\n this.eventService.dispatchEvent({ type: Events.EVENT_STORE_UPDATED });\n }\n if (resultsForEvent.length > 0) {\n var event_1 = {\n type: Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED,\n results: resultsForEvent\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n TransactionManager.prototype.flushAsyncTransactions = function () {\n // the timeout could be missing, if we are flushing due to row data loaded\n if (this.asyncTransactionsTimeout != null) {\n clearTimeout(this.asyncTransactionsTimeout);\n }\n this.executeAsyncTransactions();\n };\n TransactionManager.prototype.applyTransaction = function (transaction) {\n var res;\n this.serverSideRowModel.executeOnStore(transaction.route, function (store) {\n res = store.applyTransaction(transaction);\n });\n if (res) {\n this.valueCache.onDataChanged();\n if (res.remove) {\n var removedRowIds = res.remove.map(function (row) { return row.id; });\n this.selectionService.deleteSelectionStateFromParent(transaction.route || [], removedRowIds);\n }\n this.eventService.dispatchEvent({ type: Events.EVENT_STORE_UPDATED });\n return res;\n }\n else {\n return { status: ServerSideTransactionResultStatus.StoreNotFound };\n }\n };\n __decorate$m([\n Autowired('rowNodeBlockLoader')\n ], TransactionManager.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$m([\n Autowired('valueCache')\n ], TransactionManager.prototype, \"valueCache\", void 0);\n __decorate$m([\n Autowired('rowModel')\n ], TransactionManager.prototype, \"serverSideRowModel\", void 0);\n __decorate$m([\n Autowired('rowRenderer')\n ], TransactionManager.prototype, \"rowRenderer\", void 0);\n __decorate$m([\n Autowired('selectionService')\n ], TransactionManager.prototype, \"selectionService\", void 0);\n __decorate$m([\n PostConstruct\n ], TransactionManager.prototype, \"postConstruct\", null);\n TransactionManager = __decorate$m([\n Bean('ssrmTransactionManager')\n ], TransactionManager);\n return TransactionManager;\n}(BeanStub));\n\nvar __extends$o = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ExpandListener = /** @class */ (function (_super) {\n __extends$o(ExpandListener, _super);\n function ExpandListener() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExpandListener.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsService.isRowModelType('serverSide')) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n };\n ExpandListener.prototype.onRowGroupOpened = function (event) {\n var rowNode = event.node;\n if (rowNode.expanded) {\n if (rowNode.master) {\n this.createDetailNode(rowNode);\n }\n else if (_.missing(rowNode.childStore)) {\n var storeParams = this.serverSideRowModel.getParams();\n rowNode.childStore = this.createBean(this.storeFactory.createStore(storeParams, rowNode));\n }\n }\n else if (this.gridOptionsService.is('purgeClosedRowNodes') && _.exists(rowNode.childStore)) {\n rowNode.childStore = this.destroyBean(rowNode.childStore);\n }\n var storeUpdatedEvent = { type: Events.EVENT_STORE_UPDATED };\n this.eventService.dispatchEvent(storeUpdatedEvent);\n };\n ExpandListener.prototype.createDetailNode = function (masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n var detailNode = new RowNode(this.beans);\n detailNode.detail = true;\n detailNode.selectable = false;\n detailNode.parent = masterNode;\n if (_.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n var defaultDetailRowHeight = 200;\n var rowHeight = this.gridOptionsService.getRowHeightForNode(detailNode).height;\n detailNode.rowHeight = rowHeight ? rowHeight : defaultDetailRowHeight;\n masterNode.detailNode = detailNode;\n return detailNode;\n };\n __decorate$l([\n Autowired('rowModel')\n ], ExpandListener.prototype, \"serverSideRowModel\", void 0);\n __decorate$l([\n Autowired('ssrmStoreFactory')\n ], ExpandListener.prototype, \"storeFactory\", void 0);\n __decorate$l([\n Autowired('beans')\n ], ExpandListener.prototype, \"beans\", void 0);\n __decorate$l([\n PostConstruct\n ], ExpandListener.prototype, \"postConstruct\", null);\n ExpandListener = __decorate$l([\n Bean('ssrmExpandListener')\n ], ExpandListener);\n return ExpandListener;\n}(BeanStub));\n\nvar __extends$n = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortListener = /** @class */ (function (_super) {\n __extends$n(SortListener, _super);\n function SortListener() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortListener.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsService.isRowModelType('serverSide')) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n };\n SortListener.prototype.extractSortModel = function () {\n var sortModel = this.sortController.getSortModel();\n // when using tree data we just return the sort model with the 'ag-Grid-AutoColumn' as is, i.e not broken out\n // into it's constitute group columns as they are not defined up front and can vary per node.\n if (this.gridOptionsService.isTreeData()) {\n return sortModel;\n }\n // it autoCol is active, we don't want to send this to the server. instead we want to\n // send the\n this.replaceAutoGroupColumnWithActualRowGroupColumns(sortModel);\n this.removeMultiColumnPrefixOnColumnIds(sortModel);\n return sortModel;\n };\n SortListener.prototype.removeMultiColumnPrefixOnColumnIds = function (sortModel) {\n if (this.gridOptionsService.isGroupMultiAutoColumn()) {\n var multiColumnPrefix = GROUP_AUTO_COLUMN_ID + \"-\";\n for (var i = 0; i < sortModel.length; ++i) {\n if (sortModel[i].colId.indexOf(multiColumnPrefix) > -1) {\n sortModel[i].colId = sortModel[i].colId.substr(multiColumnPrefix.length);\n }\n }\n }\n };\n SortListener.prototype.replaceAutoGroupColumnWithActualRowGroupColumns = function (sortModel) {\n // find index of auto group column in sort model\n var autoGroupSortModel = sortModel.find(function (sm) { return sm.colId == GROUP_AUTO_COLUMN_ID; });\n // replace auto column with individual group columns\n if (autoGroupSortModel) {\n // remove auto group column\n var autoGroupIndex = sortModel.indexOf(autoGroupSortModel);\n _.removeFromArray(sortModel, autoGroupSortModel);\n var isNotInSortModel = function (col) { return sortModel.filter(function (sm) { return sm.colId === col.getColId(); }).length == 0; };\n var mapColumnToSortModel = function (col) { return ({ colId: col.getId(), sort: autoGroupSortModel.sort }); };\n var newModels = this.columnModel.getRowGroupColumns()\n .filter(isNotInSortModel)\n .map(mapColumnToSortModel);\n _.insertArrayIntoArray(sortModel, newModels, autoGroupIndex);\n }\n };\n SortListener.prototype.onSortChanged = function () {\n var storeParams = this.serverSideRowModel.getParams();\n if (!storeParams) {\n return;\n } // params is undefined if no datasource set\n var newSortModel = this.extractSortModel();\n var oldSortModel = storeParams.sortModel;\n var changedColumns = this.findChangedColumnsInSort(newSortModel, oldSortModel);\n var valueColChanged = this.listenerUtils.isSortingWithValueColumn(changedColumns);\n var secondaryColChanged = this.listenerUtils.isSortingWithSecondaryColumn(changedColumns);\n var params = {\n valueColChanged: valueColChanged,\n secondaryColChanged: secondaryColChanged,\n changedColumns: changedColumns\n };\n this.serverSideRowModel.refreshAfterSort(newSortModel, params);\n };\n // returns back all the cols that were effected by the sorting. eg if we were sorting by col A,\n // and now we are sorting by col B, the list of impacted cols should be A and B. so if a cache\n // is impacted by sorting on A or B then it needs to be refreshed. this includes where the cache\n // was previously sorted by A and then the A sort now needs to be cleared.\n SortListener.prototype.findChangedColumnsInSort = function (newSortModel, oldSortModel) {\n var allColsInBothSorts = [];\n [newSortModel, oldSortModel].forEach(function (sortModel) {\n if (sortModel) {\n var ids = sortModel.map(function (sm) { return sm.colId; });\n allColsInBothSorts = allColsInBothSorts.concat(ids);\n }\n });\n var differentSorts = function (oldSortItem, newSortItem) {\n var oldSort = oldSortItem ? oldSortItem.sort : null;\n var newSort = newSortItem ? newSortItem.sort : null;\n return oldSort !== newSort;\n };\n var differentIndexes = function (oldSortItem, newSortItem) {\n var oldIndex = oldSortItem ? oldSortModel.indexOf(oldSortItem) : -1;\n var newIndex = newSortItem ? newSortModel.indexOf(newSortItem) : -1;\n return oldIndex !== newIndex;\n };\n return allColsInBothSorts.filter(function (colId) {\n var oldSortItem = oldSortModel.find(function (sm) { return sm.colId === colId; });\n var newSortItem = newSortModel.find(function (sm) { return sm.colId === colId; });\n return differentSorts(oldSortItem, newSortItem) || differentIndexes(oldSortItem, newSortItem);\n });\n };\n __decorate$k([\n Autowired('sortController')\n ], SortListener.prototype, \"sortController\", void 0);\n __decorate$k([\n Autowired('columnModel')\n ], SortListener.prototype, \"columnModel\", void 0);\n __decorate$k([\n Autowired('rowModel')\n ], SortListener.prototype, \"serverSideRowModel\", void 0);\n __decorate$k([\n Autowired('ssrmListenerUtils')\n ], SortListener.prototype, \"listenerUtils\", void 0);\n __decorate$k([\n PostConstruct\n ], SortListener.prototype, \"postConstruct\", null);\n SortListener = __decorate$k([\n Bean('ssrmSortService')\n ], SortListener);\n return SortListener;\n}(BeanStub));\n\nvar __extends$m = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterListener = /** @class */ (function (_super) {\n __extends$m(FilterListener, _super);\n function FilterListener() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterListener.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsService.isRowModelType('serverSide')) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n };\n FilterListener.prototype.onFilterChanged = function () {\n var storeParams = this.serverSideRowModel.getParams();\n if (!storeParams) {\n return;\n } // params is undefined if no datasource set\n var newModel = this.filterManager.getFilterModel();\n var oldModel = storeParams ? storeParams.filterModel : {};\n var changedColumns = this.findChangedColumns(newModel, oldModel);\n var valueColChanged = this.listenerUtils.isSortingWithValueColumn(changedColumns);\n var secondaryColChanged = this.listenerUtils.isSortingWithSecondaryColumn(changedColumns);\n var params = {\n valueColChanged: valueColChanged,\n secondaryColChanged: secondaryColChanged,\n changedColumns: changedColumns\n };\n this.serverSideRowModel.refreshAfterFilter(newModel, params);\n };\n FilterListener.prototype.findChangedColumns = function (oldModel, newModel) {\n var allColKeysMap = {};\n Object.keys(oldModel).forEach(function (key) { return allColKeysMap[key] = true; });\n Object.keys(newModel).forEach(function (key) { return allColKeysMap[key] = true; });\n var res = [];\n Object.keys(allColKeysMap).forEach(function (key) {\n var oldJson = JSON.stringify(oldModel[key]);\n var newJson = JSON.stringify(newModel[key]);\n var filterChanged = oldJson != newJson;\n if (filterChanged) {\n res.push(key);\n }\n });\n return res;\n };\n __decorate$j([\n Autowired('rowModel')\n ], FilterListener.prototype, \"serverSideRowModel\", void 0);\n __decorate$j([\n Autowired('filterManager')\n ], FilterListener.prototype, \"filterManager\", void 0);\n __decorate$j([\n Autowired('ssrmListenerUtils')\n ], FilterListener.prototype, \"listenerUtils\", void 0);\n __decorate$j([\n PostConstruct\n ], FilterListener.prototype, \"postConstruct\", null);\n FilterListener = __decorate$j([\n Bean('ssrmFilterListener')\n ], FilterListener);\n return FilterListener;\n}(BeanStub));\n\nvar __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StoreFactory = /** @class */ (function () {\n function StoreFactory() {\n }\n StoreFactory.prototype.createStore = function (ssrmParams, parentNode) {\n var storeParams = this.getStoreParams(ssrmParams, parentNode);\n var CacheClass = storeParams.suppressInfiniteScroll ? FullStore : LazyStore;\n return new CacheClass(ssrmParams, storeParams, parentNode);\n };\n StoreFactory.prototype.getStoreParams = function (ssrmParams, parentNode) {\n var userStoreParams = this.getLevelSpecificParams(parentNode);\n // if user provided overrideParams, we take infiniteScroll from there if it exists\n var infiniteScroll = this.isInfiniteScroll(userStoreParams);\n var cacheBlockSize = this.getBlockSize(infiniteScroll, userStoreParams);\n var maxBlocksInCache = this.getMaxBlocksInCache(infiniteScroll, ssrmParams, userStoreParams);\n var storeParams = {\n suppressInfiniteScroll: !infiniteScroll,\n cacheBlockSize: cacheBlockSize,\n maxBlocksInCache: maxBlocksInCache\n };\n return storeParams;\n };\n StoreFactory.prototype.getMaxBlocksInCache = function (infiniteScroll, ssrmParams, userStoreParams) {\n if (!infiniteScroll) {\n return undefined;\n }\n var maxBlocksInCache = (userStoreParams && userStoreParams.maxBlocksInCache != null)\n ? userStoreParams.maxBlocksInCache\n : this.gridOptionsService.getNum('maxBlocksInCache');\n var maxBlocksActive = maxBlocksInCache != null && maxBlocksInCache >= 0;\n if (!maxBlocksActive) {\n return undefined;\n }\n if (ssrmParams.dynamicRowHeight) {\n var message_1 = 'AG Grid: Server Side Row Model does not support Dynamic Row Height and Cache Purging. ' +\n 'Either a) remove getRowHeight() callback or b) remove maxBlocksInCache property. Purging has been disabled.';\n _.doOnce(function () { return console.warn(message_1); }, 'storeFactory.maxBlocksInCache.dynamicRowHeight');\n return undefined;\n }\n if (this.columnModel.isAutoRowHeightActive()) {\n var message_2 = 'AG Grid: Server Side Row Model does not support Auto Row Height and Cache Purging. ' +\n 'Either a) remove colDef.autoHeight or b) remove maxBlocksInCache property. Purging has been disabled.';\n _.doOnce(function () { return console.warn(message_2); }, 'storeFactory.maxBlocksInCache.autoRowHeightActive');\n return undefined;\n }\n return maxBlocksInCache;\n };\n StoreFactory.prototype.getBlockSize = function (infiniteScroll, userStoreParams) {\n if (!infiniteScroll) {\n return undefined;\n }\n var blockSize = (userStoreParams && userStoreParams.cacheBlockSize != null)\n ? userStoreParams.cacheBlockSize\n : this.gridOptionsService.getNum('cacheBlockSize');\n if (blockSize != null && blockSize > 0) {\n return blockSize;\n }\n else {\n return 100;\n }\n };\n StoreFactory.prototype.getLevelSpecificParams = function (parentNode) {\n var callback = this.gridOptionsService.getCallback('getServerSideGroupLevelParams');\n if (!callback) {\n return undefined;\n }\n var params = {\n level: parentNode.level + 1,\n parentRowNode: parentNode.level >= 0 ? parentNode : undefined,\n rowGroupColumns: this.columnModel.getRowGroupColumns(),\n pivotColumns: this.columnModel.getPivotColumns(),\n pivotMode: this.columnModel.isPivotMode()\n };\n var res = callback(params);\n if (res.storeType != null) {\n res.suppressInfiniteScroll = res.storeType !== \"partial\";\n }\n return res;\n };\n StoreFactory.prototype.isInfiniteScroll = function (storeParams) {\n var res = (storeParams && storeParams.suppressInfiniteScroll != null)\n ? storeParams.suppressInfiniteScroll\n : this.isSuppressServerSideInfiniteScroll();\n return !res;\n };\n StoreFactory.prototype.isSuppressServerSideInfiniteScroll = function () {\n return this.gridOptionsService.is('suppressServerSideInfiniteScroll');\n };\n __decorate$i([\n Autowired('gridOptionsService')\n ], StoreFactory.prototype, \"gridOptionsService\", void 0);\n __decorate$i([\n Autowired('columnModel')\n ], StoreFactory.prototype, \"columnModel\", void 0);\n StoreFactory = __decorate$i([\n Bean('ssrmStoreFactory')\n ], StoreFactory);\n return StoreFactory;\n}());\n\nvar __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ListenerUtils = /** @class */ (function () {\n function ListenerUtils() {\n }\n ListenerUtils.prototype.isSortingWithValueColumn = function (changedColumnsInSort) {\n var valueColIds = this.columnModel.getValueColumns().map(function (col) { return col.getColId(); });\n for (var i = 0; i < changedColumnsInSort.length; i++) {\n if (valueColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n ListenerUtils.prototype.isSortingWithSecondaryColumn = function (changedColumnsInSort) {\n if (!this.columnModel.getSecondaryColumns()) {\n return false;\n }\n var secondaryColIds = this.columnModel.getSecondaryColumns().map(function (col) { return col.getColId(); });\n for (var i = 0; i < changedColumnsInSort.length; i++) {\n if (secondaryColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n __decorate$h([\n Autowired('columnModel')\n ], ListenerUtils.prototype, \"columnModel\", void 0);\n ListenerUtils = __decorate$h([\n Bean('ssrmListenerUtils')\n ], ListenerUtils);\n return ListenerUtils;\n}());\n\nvar __extends$l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$3 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$2 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$3(arguments[i]));\n return ar;\n};\nvar DefaultStrategy = /** @class */ (function (_super) {\n __extends$l(DefaultStrategy, _super);\n function DefaultStrategy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.selectedState = { selectAll: false, toggledNodes: new Set() };\n _this.lastSelected = null;\n _this.selectAllUsed = false;\n // this is to prevent regressions, default selectionService retains reference of clicked nodes.\n _this.selectedNodes = {};\n return _this;\n }\n DefaultStrategy.prototype.init = function () {\n var _this = this;\n this.rowSelection = this.gridOptionsService.get('rowSelection');\n this.addManagedPropertyListener('rowSelection', function (propChange) {\n _this.rowSelection = propChange.currentValue;\n });\n };\n DefaultStrategy.prototype.getSelectedState = function () {\n return {\n selectAll: this.selectedState.selectAll,\n toggledNodes: __spread$2(this.selectedState.toggledNodes),\n };\n };\n DefaultStrategy.prototype.setSelectedState = function (state) {\n // fire selection changed event\n var newState = {\n selectAll: false,\n toggledNodes: new Set(),\n };\n if (typeof state !== 'object') {\n console.error('AG Grid: The provided selection state should be an object.');\n return;\n }\n if ('selectAll' in state && typeof state.selectAll === 'boolean') {\n newState.selectAll = state.selectAll;\n }\n else {\n console.error('AG Grid: Select all status should be of boolean type.');\n return;\n }\n if ('toggledNodes' in state && Array.isArray(state.toggledNodes)) {\n state.toggledNodes.forEach(function (key) {\n if (typeof key === 'string') {\n newState.toggledNodes.add(key);\n }\n else {\n console.warn(\"AG Grid: Provided ids must be of string type. Invalid id provided: \" + key);\n }\n });\n }\n else {\n console.error('AG Grid: `toggledNodes` must be an array of string ids.');\n return;\n }\n this.selectedState = newState;\n };\n DefaultStrategy.prototype.deleteSelectionStateFromParent = function (parentPath, removedNodeIds) {\n var _this = this;\n if (this.selectedState.toggledNodes.size === 0) {\n return false;\n }\n var anyNodesToggled = false;\n removedNodeIds.forEach(function (id) {\n if (_this.selectedState.toggledNodes.delete(id)) {\n anyNodesToggled = true;\n }\n });\n return anyNodesToggled;\n };\n DefaultStrategy.prototype.setNodeSelected = function (params) {\n var _a;\n var _this = this;\n var onlyThisNode = params.clearSelection && params.newValue && !params.rangeSelect;\n if (this.rowSelection !== 'multiple' || onlyThisNode) {\n if (params.newValue) {\n this.selectedNodes = (_a = {}, _a[params.node.id] = params.node, _a);\n this.selectedState = {\n selectAll: false,\n toggledNodes: new Set([params.node.id]),\n };\n }\n else {\n this.selectedNodes = {};\n this.selectedState = {\n selectAll: false,\n toggledNodes: new Set(),\n };\n }\n this.lastSelected = params.node.id;\n return 1;\n }\n var updateNodeState = function (node) {\n if (params.newValue) {\n _this.selectedNodes[node.id] = node;\n }\n else {\n delete _this.selectedNodes[node.id];\n }\n var doesNodeConform = params.newValue === _this.selectedState.selectAll;\n if (doesNodeConform) {\n _this.selectedState.toggledNodes.delete(node.id);\n return;\n }\n _this.selectedState.toggledNodes.add(node.id);\n };\n if (params.rangeSelect && this.lastSelected) {\n var lastSelectedNode = this.rowModel.getRowNode(this.lastSelected);\n this.rowModel.getNodesInRangeForSelection(params.node, lastSelectedNode !== null && lastSelectedNode !== void 0 ? lastSelectedNode : null).forEach(updateNodeState);\n this.lastSelected = params.node.id;\n return 1;\n }\n updateNodeState(params.node);\n this.lastSelected = params.node.id;\n return 1;\n };\n DefaultStrategy.prototype.processNewRow = function (node) {\n if (this.selectedNodes[node.id]) {\n this.selectedNodes[node.id] = node;\n }\n };\n DefaultStrategy.prototype.isNodeSelected = function (node) {\n var isToggled = this.selectedState.toggledNodes.has(node.id);\n return this.selectedState.selectAll ? !isToggled : isToggled;\n };\n DefaultStrategy.prototype.getSelectedNodes = function () {\n if (this.selectAllUsed) {\n console.warn(\"AG Grid: getSelectedNodes and getSelectedRows functions cannot be used with select all functionality with the server-side row model.\\n Use `api.getServerSideSelectionState()` instead.\");\n }\n return Object.values(this.selectedNodes);\n };\n DefaultStrategy.prototype.getSelectedRows = function () {\n return this.getSelectedNodes().map(function (node) { return node.data; });\n };\n DefaultStrategy.prototype.getSelectionCount = function () {\n if (this.selectedState.selectAll) {\n return -1;\n }\n return this.selectedState.toggledNodes.size;\n };\n DefaultStrategy.prototype.clearOtherNodes = function (rowNodeToKeepSelected, source) {\n var clearedRows = this.selectedState.selectAll ? 1 : this.selectedState.toggledNodes.size - 1;\n this.selectedState = {\n selectAll: false,\n toggledNodes: new Set([rowNodeToKeepSelected.id]),\n };\n this.rowModel.forEachNode(function (node) {\n if (node !== rowNodeToKeepSelected) {\n node.selectThisNode(false, undefined, source);\n }\n });\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: source,\n };\n this.eventService.dispatchEvent(event);\n return clearedRows;\n };\n DefaultStrategy.prototype.isEmpty = function () {\n var _a;\n return !this.selectedState.selectAll && !((_a = this.selectedState.toggledNodes) === null || _a === void 0 ? void 0 : _a.size);\n };\n DefaultStrategy.prototype.selectAllRowNodes = function (params) {\n this.selectedState = { selectAll: true, toggledNodes: new Set() };\n this.selectedNodes = {};\n this.selectAllUsed = true;\n };\n DefaultStrategy.prototype.deselectAllRowNodes = function (params) {\n this.selectedState = { selectAll: false, toggledNodes: new Set() };\n this.selectedNodes = {};\n };\n DefaultStrategy.prototype.getSelectAllState = function (justFiltered, justCurrentPage) {\n if (this.selectedState.selectAll) {\n if (this.selectedState.toggledNodes.size > 0) {\n return null;\n }\n return true;\n }\n if (this.selectedState.toggledNodes.size > 0) {\n return null;\n }\n return false;\n };\n __decorate$g([\n Autowired('rowModel')\n ], DefaultStrategy.prototype, \"rowModel\", void 0);\n __decorate$g([\n PostConstruct\n ], DefaultStrategy.prototype, \"init\", null);\n return DefaultStrategy;\n}(BeanStub));\n\nvar __extends$k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$2 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$1 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$2(arguments[i]));\n return ar;\n};\nvar GroupSelectsChildrenStrategy = /** @class */ (function (_super) {\n __extends$k(GroupSelectsChildrenStrategy, _super);\n function GroupSelectsChildrenStrategy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.selectedState = { selectAllChildren: false, toggledNodes: new Map() };\n _this.lastSelected = null;\n return _this;\n }\n GroupSelectsChildrenStrategy.prototype.init = function () {\n var _this = this;\n // if model has updated, a store may now be fully loaded to clean up indeterminate states\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, function () { return _this.removeRedundantState(); });\n // when the grouping changes, the state no longer makes sense, so reset the state.\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.selectionService.reset(); });\n };\n GroupSelectsChildrenStrategy.prototype.getSelectedState = function () {\n var _this = this;\n var recursivelySerializeState = function (state, level, nodeId) {\n var normalisedState = {\n nodeId: nodeId,\n };\n if (level <= _this.columnModel.getRowGroupColumns().length) {\n normalisedState.selectAllChildren = state.selectAllChildren;\n }\n // omit toggledNodes if empty\n if (state.toggledNodes.size) {\n var toggledNodes_1 = [];\n state.toggledNodes.forEach(function (value, key) {\n var newState = recursivelySerializeState(value, level + 1, key);\n toggledNodes_1.push(newState);\n });\n normalisedState.toggledNodes = toggledNodes_1;\n }\n return normalisedState;\n };\n return recursivelySerializeState(this.selectedState, 0);\n };\n GroupSelectsChildrenStrategy.prototype.setSelectedState = function (state) {\n var recursivelyDeserializeState = function (normalisedState, parentSelected) {\n var _a, _b;\n if (typeof normalisedState !== 'object') {\n throw new Error('AG Grid: Each provided state object must be an object.');\n }\n if ('selectAllChildren' in normalisedState && typeof normalisedState.selectAllChildren !== 'boolean') {\n throw new Error('AG Grid: `selectAllChildren` must be a boolean value or undefined.');\n }\n if ('toggledNodes' in normalisedState) {\n if (!Array.isArray(normalisedState.toggledNodes)) {\n throw new Error('AG Grid: `toggledNodes` must be an array.');\n }\n var allHaveIds = normalisedState.toggledNodes.every(function (innerState) { return (typeof innerState === 'object' && 'nodeId' in innerState && typeof innerState.nodeId === 'string'); });\n if (!allHaveIds) {\n throw new Error('AG Grid: Every `toggledNode` requires an associated string id.');\n }\n }\n var isThisNodeSelected = (_a = normalisedState.selectAllChildren) !== null && _a !== void 0 ? _a : !parentSelected;\n var convertedChildren = (_b = normalisedState.toggledNodes) === null || _b === void 0 ? void 0 : _b.map(function (innerState) { return ([innerState.nodeId, recursivelyDeserializeState(innerState, isThisNodeSelected)]); });\n var doesRedundantStateExist = convertedChildren === null || convertedChildren === void 0 ? void 0 : convertedChildren.some(function (_a) {\n var _b = __read$2(_a, 2); _b[0]; var innerState = _b[1];\n return isThisNodeSelected === innerState.selectAllChildren && innerState.toggledNodes.size === 0;\n });\n if (doesRedundantStateExist) {\n throw new Error(\"\\n AG Grid: AG Grid: Row selection state could not be parsed due to invalid data. Ensure all child state has toggledNodes or does not conform with the parent rule.\\n Please rebuild the selection state and reapply it.\\n \");\n }\n return {\n selectAllChildren: isThisNodeSelected,\n toggledNodes: new Map(convertedChildren),\n };\n };\n try {\n this.selectedState = recursivelyDeserializeState(state, !!state.selectAllChildren);\n }\n catch (e) {\n console.error(e.message);\n }\n };\n GroupSelectsChildrenStrategy.prototype.deleteSelectionStateFromParent = function (parentRoute, removedNodeIds) {\n var parentState = this.selectedState;\n var remainingRoute = __spread$1(parentRoute);\n while (parentState && remainingRoute.length) {\n parentState = parentState.toggledNodes.get(remainingRoute.pop());\n }\n // parent has no explicit state, nothing to remove\n if (!parentState) {\n return false;\n }\n var anyStateChanged = false;\n removedNodeIds.forEach(function (id) {\n if (parentState === null || parentState === void 0 ? void 0 : parentState.toggledNodes.delete(id)) {\n anyStateChanged = true;\n }\n });\n if (anyStateChanged) {\n this.removeRedundantState();\n }\n return anyStateChanged;\n };\n GroupSelectsChildrenStrategy.prototype.setNodeSelected = function (params) {\n var _this = this;\n if (params.rangeSelect) {\n var nodes = this.rowModel.getNodesInRangeForSelection(params.node, this.lastSelected);\n // sort the routes by route length, high to low, this means we can do the lowest level children first\n var routes = nodes.map(this.getRouteToNode).sort(function (a, b) { return b.length - a.length; });\n // skip routes if we've already done a descendent\n var completedRoutes_1 = new Set();\n routes.forEach(function (route) {\n // skip routes if we've already selected a descendent\n if (completedRoutes_1.has(route[route.length - 1])) {\n return;\n }\n route.forEach(function (part) { return completedRoutes_1.add(part); });\n _this.recursivelySelectNode(route, _this.selectedState, params);\n });\n this.removeRedundantState();\n this.lastSelected = params.node;\n return 1;\n }\n var idPathToNode = this.getRouteToNode(params.node);\n this.recursivelySelectNode(idPathToNode, this.selectedState, params);\n this.removeRedundantState();\n this.lastSelected = params.node;\n return 1;\n };\n GroupSelectsChildrenStrategy.prototype.isNodeSelected = function (node) {\n var path = this.getRouteToNode(node);\n return this.isNodePathSelected(path, this.selectedState);\n };\n GroupSelectsChildrenStrategy.prototype.isNodePathSelected = function (_a, state) {\n var _b = __read$2(_a), nextNode = _b[0], nodes = _b.slice(1);\n if (nodes.length === 0) {\n var isToggled = state.toggledNodes.has(nextNode.id);\n if (nextNode.hasChildren()) {\n var groupState = state.toggledNodes.get(nextNode.id);\n if (groupState && groupState.toggledNodes.size) {\n return undefined;\n }\n }\n return state.selectAllChildren ? !isToggled : isToggled;\n }\n // if there's a deeper level, check recursively\n if (state.toggledNodes.has(nextNode.id)) {\n var nextState = state.toggledNodes.get(nextNode.id);\n if (nextState) {\n return this.isNodePathSelected(nodes, nextState);\n }\n }\n // no deeper custom state, respect the closest default\n return !!state.selectAllChildren;\n };\n GroupSelectsChildrenStrategy.prototype.getRouteToNode = function (node) {\n var pathToNode = [];\n var tempNode = node;\n while (tempNode.parent) {\n pathToNode.push(tempNode);\n tempNode = tempNode.parent;\n }\n return pathToNode.reverse();\n };\n GroupSelectsChildrenStrategy.prototype.removeRedundantState = function () {\n var _this = this;\n if (this.filterManager.isAnyFilterPresent()) {\n return;\n }\n var recursivelyRemoveState = function (selectedState, store, node) {\n if (selectedState === void 0) { selectedState = _this.selectedState; }\n if (store === void 0) { store = _this.serverSideRowModel.getRootStore(); }\n var allChildNodesFound = true;\n var noIndeterminateChildren = true;\n selectedState.toggledNodes.forEach(function (state, id) {\n var parentNode = _this.rowModel.getRowNode(id);\n if (!parentNode) {\n allChildNodesFound = false;\n }\n var nextStore = parentNode === null || parentNode === void 0 ? void 0 : parentNode.childStore;\n if (!nextStore) {\n if (state.toggledNodes.size > 0) {\n noIndeterminateChildren = false;\n }\n return;\n }\n // if child was cleared, check if this state is still relevant\n if (recursivelyRemoveState(state, nextStore, parentNode)) {\n // cleans out groups which have no toggled nodes and an equivalent default to its parent\n if (selectedState.selectAllChildren === state.selectAllChildren) {\n selectedState.toggledNodes.delete(id);\n }\n }\n if (state.toggledNodes.size > 0) {\n noIndeterminateChildren = false;\n }\n });\n if (!store || !store.isLastRowIndexKnown() || store.getRowCount() !== selectedState.toggledNodes.size) {\n // if row count unknown, or doesn't match the size of toggledNodes, ignore.\n return false;\n }\n if (noIndeterminateChildren && allChildNodesFound) {\n selectedState.toggledNodes.clear();\n selectedState.selectAllChildren = !selectedState.selectAllChildren;\n // if node was indeterminate, it's not any more.\n if (node && (node === null || node === void 0 ? void 0 : node.isSelected()) !== selectedState.selectAllChildren) {\n node.selectThisNode(selectedState.selectAllChildren, undefined, 'api');\n }\n return true;\n }\n return false;\n };\n recursivelyRemoveState();\n };\n GroupSelectsChildrenStrategy.prototype.recursivelySelectNode = function (_a, selectedState, params) {\n var _b = __read$2(_a), nextNode = _b[0], nodes = _b.slice(1);\n if (!nextNode) {\n return;\n }\n // if this is the last node, hard add/remove based on its selectAllChildren state\n var isLastNode = !nodes.length;\n if (isLastNode) {\n var needsDeleted = selectedState.selectAllChildren === params.newValue;\n if (needsDeleted) {\n selectedState.toggledNodes.delete(nextNode.id);\n return;\n }\n var newState = {\n selectAllChildren: params.newValue,\n toggledNodes: new Map(),\n };\n selectedState.toggledNodes.set(nextNode.id, newState);\n return;\n }\n var doesStateAlreadyExist = selectedState.toggledNodes.has(nextNode.id);\n var childState = doesStateAlreadyExist ? (selectedState.toggledNodes.get(nextNode.id)) : {\n selectAllChildren: selectedState.selectAllChildren,\n toggledNodes: new Map(),\n };\n if (!doesStateAlreadyExist) {\n selectedState.toggledNodes.set(nextNode.id, childState);\n }\n this.recursivelySelectNode(nodes, childState, params);\n // cleans out groups which have no toggled nodes and an equivalent default to its parent\n if (selectedState.selectAllChildren === childState.selectAllChildren && childState.toggledNodes.size === 0) {\n selectedState.toggledNodes.delete(nextNode.id);\n }\n };\n GroupSelectsChildrenStrategy.prototype.getSelectedNodes = function () {\n console.warn(\"AG Grid: `getSelectedNodes` and `getSelectedRows` functions cannot be used with `groupSelectsChildren` and the server-side row model.\\n Use `api.getServerSideSelectionState()` instead.\");\n var selectedNodes = [];\n this.rowModel.forEachNode(function (node) {\n if (node.isSelected()) {\n selectedNodes.push(node);\n }\n });\n return selectedNodes;\n };\n GroupSelectsChildrenStrategy.prototype.processNewRow = function (node) {\n // This is used for updating outdated node refs, as this model entirely uses ids it's irrelevant\n };\n GroupSelectsChildrenStrategy.prototype.getSelectedRows = function () {\n return this.getSelectedNodes().map(function (node) { return node.data; });\n };\n GroupSelectsChildrenStrategy.prototype.getSelectionCount = function () {\n return -1;\n };\n GroupSelectsChildrenStrategy.prototype.isEmpty = function () {\n var _a;\n return !this.selectedState.selectAllChildren && !((_a = this.selectedState.toggledNodes) === null || _a === void 0 ? void 0 : _a.size);\n };\n GroupSelectsChildrenStrategy.prototype.selectAllRowNodes = function (params) {\n this.selectedState = { selectAllChildren: true, toggledNodes: new Map() };\n };\n GroupSelectsChildrenStrategy.prototype.deselectAllRowNodes = function (params) {\n this.selectedState = { selectAllChildren: false, toggledNodes: new Map() };\n };\n GroupSelectsChildrenStrategy.prototype.getSelectAllState = function (justFiltered, justCurrentPage) {\n if (this.selectedState.selectAllChildren) {\n if (this.selectedState.toggledNodes.size > 0) {\n return null;\n }\n return true;\n }\n if (this.selectedState.toggledNodes.size > 0) {\n return null;\n }\n return false;\n };\n __decorate$f([\n Autowired('rowModel')\n ], GroupSelectsChildrenStrategy.prototype, \"rowModel\", void 0);\n __decorate$f([\n Autowired('columnModel')\n ], GroupSelectsChildrenStrategy.prototype, \"columnModel\", void 0);\n __decorate$f([\n Autowired('filterManager')\n ], GroupSelectsChildrenStrategy.prototype, \"filterManager\", void 0);\n __decorate$f([\n Autowired('rowModel')\n ], GroupSelectsChildrenStrategy.prototype, \"serverSideRowModel\", void 0);\n __decorate$f([\n Autowired('selectionService')\n ], GroupSelectsChildrenStrategy.prototype, \"selectionService\", void 0);\n __decorate$f([\n PostConstruct\n ], GroupSelectsChildrenStrategy.prototype, \"init\", null);\n return GroupSelectsChildrenStrategy;\n}(BeanStub));\n\nvar __extends$j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ServerSideSelectionService = /** @class */ (function (_super) {\n __extends$j(ServerSideSelectionService, _super);\n function ServerSideSelectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ServerSideSelectionService.prototype.init = function () {\n var _this = this;\n var groupSelectsChildren = this.gridOptionsService.is('groupSelectsChildren');\n this.addManagedPropertyListener('groupSelectsChildren', function (propChange) {\n _this.destroyBean(_this.selectionStrategy);\n var StrategyClazz = !propChange.currentValue ? DefaultStrategy : GroupSelectsChildrenStrategy;\n _this.selectionStrategy = _this.createManagedBean(new StrategyClazz());\n _this.shotgunResetNodeSelectionState();\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: 'api',\n };\n _this.eventService.dispatchEvent(event);\n });\n var StrategyClazz = !groupSelectsChildren ? DefaultStrategy : GroupSelectsChildrenStrategy;\n this.selectionStrategy = this.createManagedBean(new StrategyClazz());\n };\n ServerSideSelectionService.prototype.getServerSideSelectionState = function () {\n return this.selectionStrategy.getSelectedState();\n };\n ServerSideSelectionService.prototype.setServerSideSelectionState = function (state) {\n this.selectionStrategy.setSelectedState(state);\n this.shotgunResetNodeSelectionState();\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: 'api',\n };\n this.eventService.dispatchEvent(event);\n };\n ServerSideSelectionService.prototype.setNodeSelected = function (params) {\n var changedNodes = this.selectionStrategy.setNodeSelected(params);\n this.shotgunResetNodeSelectionState(params.source);\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: params.source,\n };\n this.eventService.dispatchEvent(event);\n return changedNodes;\n };\n /**\n * Deletes the selection state for a set of nodes, for use after deleting nodes via\n * transaction. As this is designed for transactions, all nodes should belong to the same group.\n */\n ServerSideSelectionService.prototype.deleteSelectionStateFromParent = function (storeRoute, removedNodeIds) {\n var stateChanged = this.selectionStrategy.deleteSelectionStateFromParent(storeRoute, removedNodeIds);\n if (!stateChanged) {\n return;\n }\n this.shotgunResetNodeSelectionState();\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: 'api',\n };\n this.eventService.dispatchEvent(event);\n };\n ServerSideSelectionService.prototype.shotgunResetNodeSelectionState = function (source) {\n var _this = this;\n this.rowModel.forEachNode(function (node) {\n if (node.stub) {\n return;\n }\n var isNodeSelected = _this.selectionStrategy.isNodeSelected(node);\n if (isNodeSelected !== node.isSelected()) {\n node.selectThisNode(isNodeSelected, undefined, source);\n }\n });\n };\n ServerSideSelectionService.prototype.getSelectedNodes = function () {\n return this.selectionStrategy.getSelectedNodes();\n };\n ServerSideSelectionService.prototype.getSelectedRows = function () {\n return this.selectionStrategy.getSelectedRows();\n };\n ServerSideSelectionService.prototype.getSelectionCount = function () {\n return this.selectionStrategy.getSelectionCount();\n };\n ServerSideSelectionService.prototype.syncInRowNode = function (rowNode, oldNode) {\n // update any refs being held in the strategies\n this.selectionStrategy.processNewRow(rowNode);\n var isNodeSelected = this.selectionStrategy.isNodeSelected(rowNode);\n rowNode.setSelectedInitialValue(isNodeSelected);\n };\n ServerSideSelectionService.prototype.reset = function () {\n this.selectionStrategy.deselectAllRowNodes({ source: 'api' });\n };\n ServerSideSelectionService.prototype.isEmpty = function () {\n return this.selectionStrategy.isEmpty();\n };\n ServerSideSelectionService.prototype.selectAllRowNodes = function (params) {\n if (params.justCurrentPage || params.justFiltered) {\n console.warn(\"AG Grid: selecting just filtered only works when gridOptions.rowModelType='clientSide'\");\n }\n this.selectionStrategy.selectAllRowNodes(params);\n this.rowModel.forEachNode(function (node) {\n if (node.stub) {\n return;\n }\n node.selectThisNode(true, undefined, params.source);\n });\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: params.source,\n };\n this.eventService.dispatchEvent(event);\n };\n ServerSideSelectionService.prototype.deselectAllRowNodes = function (params) {\n if (params.justCurrentPage || params.justFiltered) {\n console.warn(\"AG Grid: selecting just filtered only works when gridOptions.rowModelType='clientSide'\");\n }\n this.selectionStrategy.deselectAllRowNodes(params);\n this.rowModel.forEachNode(function (node) {\n if (node.stub) {\n return;\n }\n node.selectThisNode(false, undefined, params.source);\n });\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: params.source,\n };\n this.eventService.dispatchEvent(event);\n };\n ServerSideSelectionService.prototype.getSelectAllState = function (justFiltered, justCurrentPage) {\n return this.selectionStrategy.getSelectAllState(justFiltered, justCurrentPage);\n };\n // used by CSRM\n ServerSideSelectionService.prototype.updateGroupsFromChildrenSelections = function (source, changedPath) {\n return false;\n };\n // used by CSRM\n ServerSideSelectionService.prototype.getBestCostNodeSelection = function () {\n console.warn('AG Grid: calling gridApi.getBestCostNodeSelection() is only possible when using rowModelType=`clientSide`.');\n return undefined;\n };\n // used by CSRM\n ServerSideSelectionService.prototype.filterFromSelection = function () {\n return;\n };\n __decorate$e([\n Autowired('rowModel')\n ], ServerSideSelectionService.prototype, \"rowModel\", void 0);\n __decorate$e([\n PostConstruct\n ], ServerSideSelectionService.prototype, \"init\", null);\n ServerSideSelectionService = __decorate$e([\n Bean('selectionService')\n ], ServerSideSelectionService);\n return ServerSideSelectionService;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$4 = '29.3.5';\n\nvar ServerSideRowModelModule = {\n version: VERSION$4,\n moduleName: ModuleNames.ServerSideRowModelModule,\n rowModel: 'serverSide',\n beans: [ServerSideRowModel, ExpandListener, SortListener, StoreUtils, BlockUtils, NodeManager, TransactionManager,\n FilterListener, StoreFactory, ListenerUtils, ServerSideSelectionService],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\n/** @param V type of value in the Set Filter */\nvar ClientSideValuesExtractor = /** @class */ (function () {\n function ClientSideValuesExtractor(rowModel, filterParams, createKey, caseFormat, columnModel, valueService, treeDataOrGrouping, treeData, getDataPath) {\n this.rowModel = rowModel;\n this.filterParams = filterParams;\n this.createKey = createKey;\n this.caseFormat = caseFormat;\n this.columnModel = columnModel;\n this.valueService = valueService;\n this.treeDataOrGrouping = treeDataOrGrouping;\n this.treeData = treeData;\n this.getDataPath = getDataPath;\n }\n ClientSideValuesExtractor.prototype.extractUniqueValues = function (predicate, existingValues) {\n var _this = this;\n var values = new Map();\n var existingFormattedKeys = this.extractExistingFormattedKeys(existingValues);\n var formattedKeys = new Set();\n var treeData = this.treeData && !!this.getDataPath;\n var groupedCols = this.columnModel.getRowGroupColumns();\n var addValue = function (unformattedKey, value) {\n var formattedKey = _this.caseFormat(unformattedKey);\n if (!formattedKeys.has(formattedKey)) {\n formattedKeys.add(formattedKey);\n var keyToAdd = unformattedKey;\n var valueToAdd = _.makeNull(value);\n // when case insensitive, we pick the first value to use. if this is later filtered out,\n // we still want to use the original value and not one with a different case\n var existingUnformattedKey = existingFormattedKeys === null || existingFormattedKeys === void 0 ? void 0 : existingFormattedKeys.get(formattedKey);\n if (existingUnformattedKey != null) {\n keyToAdd = existingUnformattedKey;\n valueToAdd = existingValues.get(existingUnformattedKey);\n }\n values.set(keyToAdd, valueToAdd);\n }\n };\n this.rowModel.forEachLeafNode(function (node) {\n // only pull values from rows that have data. this means we skip filler group nodes.\n if (!node.data || !predicate(node)) {\n return;\n }\n if (_this.treeDataOrGrouping) {\n _this.addValueForTreeDataOrGrouping(node, treeData, groupedCols, addValue);\n return;\n }\n var value = _this.getValue(node);\n if (_this.filterParams.convertValuesToStrings) {\n // for backwards compatibility - keeping separate as it will eventually be removed\n _this.addValueForConvertValuesToString(node, value, addValue);\n return;\n }\n if (value != null && Array.isArray(value)) {\n value.forEach(function (x) {\n addValue(_this.createKey(x, node), x);\n });\n if (value.length === 0) {\n addValue(null, null);\n }\n }\n else {\n addValue(_this.createKey(value, node), value);\n }\n });\n return values;\n };\n ClientSideValuesExtractor.prototype.addValueForConvertValuesToString = function (node, value, addValue) {\n var key = this.createKey(value, node);\n if (key != null && Array.isArray(key)) {\n key.forEach(function (part) {\n var processedPart = _.toStringOrNull(_.makeNull(part));\n addValue(processedPart, processedPart);\n });\n if (key.length === 0) {\n addValue(null, null);\n }\n }\n else {\n addValue(key, key);\n }\n };\n ClientSideValuesExtractor.prototype.addValueForTreeDataOrGrouping = function (node, treeData, groupedCols, addValue) {\n var _this = this;\n var _a;\n var dataPath;\n if (treeData) {\n if ((_a = node.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length) {\n return;\n }\n dataPath = this.getDataPath(node.data);\n }\n else {\n dataPath = groupedCols.map(function (groupCol) { return _this.valueService.getKeyForNode(groupCol, node); });\n dataPath.push(this.getValue(node));\n }\n if (dataPath) {\n dataPath = dataPath.map(function (treeKey) { return _.toStringOrNull(_.makeNull(treeKey)); });\n }\n if (dataPath === null || dataPath === void 0 ? void 0 : dataPath.some(function (treeKey) { return treeKey == null; })) {\n dataPath = null;\n }\n addValue(this.createKey(dataPath), dataPath);\n };\n ClientSideValuesExtractor.prototype.getValue = function (node) {\n var _a = this.filterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;\n return this.filterParams.valueGetter({\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n data: node.data,\n getValue: function (field) { return node.data[field]; },\n node: node,\n });\n };\n ClientSideValuesExtractor.prototype.extractExistingFormattedKeys = function (existingValues) {\n var _this = this;\n if (!existingValues) {\n return null;\n }\n var existingFormattedKeys = new Map();\n existingValues.forEach(function (_value, key) {\n existingFormattedKeys.set(_this.caseFormat(key), key);\n });\n return existingFormattedKeys;\n };\n return ClientSideValuesExtractor;\n}());\n\nvar SetFilterDisplayValue = /** @class */ (function () {\n function SetFilterDisplayValue() {\n }\n SetFilterDisplayValue.SELECT_ALL = '__AG_SELECT_ALL__';\n return SetFilterDisplayValue;\n}());\n\nvar __values$2 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar FlatSetDisplayValueModel = /** @class */ (function () {\n function FlatSetDisplayValueModel(valueFormatterService, valueFormatter, formatter, column) {\n this.valueFormatterService = valueFormatterService;\n this.valueFormatter = valueFormatter;\n this.formatter = formatter;\n this.column = column;\n /** All keys that are currently displayed, after the mini-filter has been applied. */\n this.displayedKeys = [];\n }\n FlatSetDisplayValueModel.prototype.updateDisplayedValuesToAllAvailable = function (_getValue, _allKeys, availableKeys) {\n this.displayedKeys = Array.from(availableKeys);\n };\n FlatSetDisplayValueModel.prototype.updateDisplayedValuesToMatchMiniFilter = function (getValue, _allKeys, availableKeys, matchesFilter, nullMatchesFilter) {\n var e_1, _a;\n this.displayedKeys = [];\n try {\n for (var availableKeys_1 = __values$2(availableKeys), availableKeys_1_1 = availableKeys_1.next(); !availableKeys_1_1.done; availableKeys_1_1 = availableKeys_1.next()) {\n var key = availableKeys_1_1.value;\n if (key == null) {\n if (nullMatchesFilter) {\n this.displayedKeys.push(key);\n }\n }\n else {\n var value = getValue(key);\n var valueFormatterValue = this.valueFormatterService.formatValue(this.column, null, value, this.valueFormatter, false);\n var textFormatterValue = this.formatter(valueFormatterValue);\n if (matchesFilter(textFormatterValue)) {\n this.displayedKeys.push(key);\n }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (availableKeys_1_1 && !availableKeys_1_1.done && (_a = availableKeys_1.return)) _a.call(availableKeys_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n FlatSetDisplayValueModel.prototype.getDisplayedValueCount = function () {\n return this.displayedKeys.length;\n };\n FlatSetDisplayValueModel.prototype.getDisplayedItem = function (index) {\n return this.displayedKeys[index];\n };\n FlatSetDisplayValueModel.prototype.getSelectAllItem = function () {\n return SetFilterDisplayValue.SELECT_ALL;\n };\n FlatSetDisplayValueModel.prototype.getDisplayedKeys = function () {\n return this.displayedKeys;\n };\n FlatSetDisplayValueModel.prototype.forEachDisplayedKey = function (func) {\n this.displayedKeys.forEach(func);\n };\n FlatSetDisplayValueModel.prototype.someDisplayedKey = function (func) {\n return this.displayedKeys.some(func);\n };\n FlatSetDisplayValueModel.prototype.hasGroups = function () {\n return false;\n };\n FlatSetDisplayValueModel.prototype.refresh = function () {\n // not used\n };\n return FlatSetDisplayValueModel;\n}());\n\nvar __read$1 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$1(arguments[i]));\n return ar;\n};\nvar __values$1 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar TreeSetDisplayValueModel = /** @class */ (function () {\n function TreeSetDisplayValueModel(formatter, treeListPathGetter, treeListFormatter, treeDataOrGrouping) {\n this.formatter = formatter;\n this.treeListPathGetter = treeListPathGetter;\n this.treeListFormatter = treeListFormatter;\n this.treeDataOrGrouping = treeDataOrGrouping;\n /** all displayed items in a tree structure */\n this.allDisplayedItemsTree = [];\n /** all displayed items flattened and filtered */\n this.activeDisplayedItemsFlat = [];\n this.selectAllItem = {\n depth: 0,\n filterPasses: true,\n available: true,\n treeKey: SetFilterDisplayValue.SELECT_ALL,\n children: this.allDisplayedItemsTree,\n expanded: true,\n key: SetFilterDisplayValue.SELECT_ALL,\n parentTreeKeys: []\n };\n }\n TreeSetDisplayValueModel.prototype.updateDisplayedValuesToAllAvailable = function (getValue, allKeys, availableKeys, source) {\n if (source === 'reload') {\n this.generateItemTree(getValue, allKeys, availableKeys);\n }\n else if (source === 'otherFilter') {\n this.updateAvailable(availableKeys);\n this.updateExpandAll();\n }\n else if (source === 'miniFilter') {\n this.resetFilter();\n this.updateExpandAll();\n }\n this.flattenItems();\n };\n TreeSetDisplayValueModel.prototype.updateDisplayedValuesToMatchMiniFilter = function (getValue, allKeys, availableKeys, matchesFilter, nullMatchesFilter, source) {\n if (source === 'reload') {\n this.generateItemTree(getValue, allKeys, availableKeys);\n }\n else if (source === 'otherFilter') {\n this.updateAvailable(availableKeys);\n }\n this.updateFilter(matchesFilter, nullMatchesFilter);\n this.updateExpandAll();\n this.flattenItems();\n };\n TreeSetDisplayValueModel.prototype.generateItemTree = function (getValue, allKeys, availableKeys) {\n var e_1, _a;\n var _b;\n this.allDisplayedItemsTree = [];\n this.groupsExist = false;\n var treeListPathGetter = this.getTreeListPathGetter(getValue, availableKeys);\n var _loop_1 = function (key) {\n var value = getValue(key);\n var dataPath = (_b = treeListPathGetter(value)) !== null && _b !== void 0 ? _b : [null];\n if (dataPath.length > 1) {\n this_1.groupsExist = true;\n }\n var available = availableKeys.has(key);\n var children = this_1.allDisplayedItemsTree;\n var item;\n var parentTreeKeys = [];\n dataPath.forEach(function (treeKey, depth) {\n if (!children) {\n children = [];\n item.children = children;\n }\n item = children.find(function (child) { var _a; return ((_a = child.treeKey) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === (treeKey === null || treeKey === void 0 ? void 0 : treeKey.toUpperCase()); });\n if (!item) {\n item = { treeKey: treeKey, depth: depth, filterPasses: true, expanded: false, available: available, parentTreeKeys: parentTreeKeys };\n if (depth === dataPath.length - 1) {\n item.key = key;\n }\n children.push(item);\n }\n children = item.children;\n parentTreeKeys = __spread(parentTreeKeys, [treeKey]);\n });\n };\n var this_1 = this;\n try {\n for (var allKeys_1 = __values$1(allKeys), allKeys_1_1 = allKeys_1.next(); !allKeys_1_1.done; allKeys_1_1 = allKeys_1.next()) {\n var key = allKeys_1_1.value;\n _loop_1(key);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (allKeys_1_1 && !allKeys_1_1.done && (_a = allKeys_1.return)) _a.call(allKeys_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n // update the parent availability based on the children\n this.updateAvailable(availableKeys);\n this.selectAllItem.children = this.allDisplayedItemsTree;\n this.selectAllItem.expanded = false;\n };\n TreeSetDisplayValueModel.prototype.getTreeListPathGetter = function (getValue, availableKeys) {\n var e_2, _a;\n if (this.treeListPathGetter) {\n return this.treeListPathGetter;\n }\n if (this.treeDataOrGrouping) {\n return function (value) { return value; };\n }\n // infer from data\n var isDate = false;\n try {\n for (var availableKeys_1 = __values$1(availableKeys), availableKeys_1_1 = availableKeys_1.next(); !availableKeys_1_1.done; availableKeys_1_1 = availableKeys_1.next()) {\n var availableKey = availableKeys_1_1.value;\n // find the first non-null value\n var value = getValue(availableKey);\n if (value instanceof Date) {\n isDate = true;\n break;\n }\n else if (value != null) {\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (availableKeys_1_1 && !availableKeys_1_1.done && (_a = availableKeys_1.return)) _a.call(availableKeys_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (isDate) {\n return TreeSetDisplayValueModel.DATE_TREE_LIST_PATH_GETTER;\n }\n _.doOnce(function () { return console.warn('AG Grid: property treeList=true for Set Filter params, but you did not provide a treeListPathGetter or values of type Date.'); }, 'getTreeListPathGetter');\n return function (value) { return [String(value)]; };\n };\n TreeSetDisplayValueModel.prototype.flattenItems = function () {\n var _this = this;\n this.activeDisplayedItemsFlat = [];\n var recursivelyFlattenDisplayedItems = function (items) {\n items.forEach(function (item) {\n if (!item.filterPasses || !item.available) {\n return;\n }\n _this.activeDisplayedItemsFlat.push(item);\n if (item.children && item.expanded) {\n recursivelyFlattenDisplayedItems(item.children);\n }\n });\n };\n recursivelyFlattenDisplayedItems(this.allDisplayedItemsTree);\n };\n TreeSetDisplayValueModel.prototype.resetFilter = function () {\n var recursiveFilterReset = function (item) {\n if (item.children) {\n item.children.forEach(function (child) {\n recursiveFilterReset(child);\n });\n }\n item.filterPasses = true;\n };\n this.allDisplayedItemsTree.forEach(function (item) { return recursiveFilterReset(item); });\n };\n TreeSetDisplayValueModel.prototype.updateFilter = function (matchesFilter, nullMatchesFilter) {\n var _this = this;\n var passesFilter = function (item) {\n if (!item.available) {\n return false;\n }\n if (item.treeKey == null) {\n return nullMatchesFilter;\n }\n return matchesFilter(_this.formatter(_this.treeListFormatter ? _this.treeListFormatter(item.treeKey, item.depth, item.parentTreeKeys) : item.treeKey));\n };\n this.allDisplayedItemsTree.forEach(function (item) { return _this.recursiveItemCheck(item, false, passesFilter, 'filterPasses'); });\n };\n TreeSetDisplayValueModel.prototype.getDisplayedValueCount = function () {\n return this.activeDisplayedItemsFlat.length;\n };\n TreeSetDisplayValueModel.prototype.getDisplayedItem = function (index) {\n return this.activeDisplayedItemsFlat[index];\n };\n TreeSetDisplayValueModel.prototype.getSelectAllItem = function () {\n return this.selectAllItem;\n };\n TreeSetDisplayValueModel.prototype.getDisplayedKeys = function () {\n var displayedKeys = [];\n this.forEachDisplayedKey(function (key) { return displayedKeys.push(key); });\n return displayedKeys;\n };\n TreeSetDisplayValueModel.prototype.forEachDisplayedKey = function (func) {\n var recursiveForEachItem = function (item, topParentExpanded) {\n if (item.children) {\n if (!item.expanded || !topParentExpanded) {\n // if the parent is not expanded, we need to iterate the entire tree\n item.children.forEach(function (child) {\n if (child.filterPasses) {\n recursiveForEachItem(child, false);\n }\n });\n }\n }\n else {\n func(item.key);\n }\n };\n this.activeDisplayedItemsFlat.forEach(function (item) { return recursiveForEachItem(item, true); });\n };\n TreeSetDisplayValueModel.prototype.someDisplayedKey = function (func) {\n var recursiveSomeItem = function (item, topParentExpanded) {\n if (item.children) {\n if (!item.expanded || !topParentExpanded) {\n // if the parent is not expanded, we need to iterate the entire tree\n return item.children.some(function (child) {\n if (child.filterPasses) {\n return recursiveSomeItem(child, false);\n }\n return false;\n });\n }\n }\n else {\n return func(item.key);\n }\n return false;\n };\n return this.activeDisplayedItemsFlat.some(function (item) { return recursiveSomeItem(item, true); });\n };\n TreeSetDisplayValueModel.prototype.hasGroups = function () {\n return this.groupsExist;\n };\n TreeSetDisplayValueModel.prototype.refresh = function () {\n this.updateExpandAll();\n this.flattenItems();\n };\n TreeSetDisplayValueModel.prototype.updateExpandAll = function () {\n var recursiveExpansionCheck = function (items, someTrue, someFalse) {\n var e_3, _a;\n try {\n for (var items_1 = __values$1(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n var item_1 = items_1_1.value;\n if (!item_1.filterPasses || !item_1.available || !item_1.children) {\n continue;\n }\n // indeterminate state only exists for expand all, so don't need to check for the current item\n someTrue = someTrue || !!item_1.expanded;\n someFalse = someFalse || !item_1.expanded;\n if (someTrue && someFalse) {\n // already indeterminate. No need to check the children\n return undefined;\n }\n var childExpanded = recursiveExpansionCheck(item_1.children, someTrue, someFalse);\n if (childExpanded === undefined) {\n return undefined;\n }\n else if (childExpanded) {\n someTrue = true;\n }\n else {\n someFalse = true;\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return someTrue && someFalse ? undefined : someTrue;\n };\n var item = this.getSelectAllItem();\n item.expanded = recursiveExpansionCheck(item.children, false, false);\n };\n TreeSetDisplayValueModel.prototype.recursiveItemCheck = function (item, parentPasses, checkFunction, itemProp) {\n var _this = this;\n var atLeastOneChildPassed = false;\n if (item.children) {\n item.children.forEach(function (child) {\n var childPasses = _this.recursiveItemCheck(child, parentPasses || checkFunction(item), checkFunction, itemProp);\n atLeastOneChildPassed = atLeastOneChildPassed || childPasses;\n });\n }\n var itemPasses = parentPasses || atLeastOneChildPassed || checkFunction(item);\n item[itemProp] = itemPasses;\n return itemPasses;\n };\n TreeSetDisplayValueModel.prototype.updateAvailable = function (availableKeys) {\n var _this = this;\n var isAvailable = function (item) { return availableKeys.has(item.key); };\n this.allDisplayedItemsTree.forEach(function (item) { return _this.recursiveItemCheck(item, false, isAvailable, 'available'); });\n };\n TreeSetDisplayValueModel.DATE_TREE_LIST_PATH_GETTER = function (date) { return date ? [String(date.getFullYear()), String(date.getMonth() + 1), String(date.getDate())] : null; };\n return TreeSetDisplayValueModel;\n}());\n\nvar __read = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar SetFilterModelValuesType;\n(function (SetFilterModelValuesType) {\n SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_LIST\"] = 0] = \"PROVIDED_LIST\";\n SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_CALLBACK\"] = 1] = \"PROVIDED_CALLBACK\";\n SetFilterModelValuesType[SetFilterModelValuesType[\"TAKEN_FROM_GRID_VALUES\"] = 2] = \"TAKEN_FROM_GRID_VALUES\";\n})(SetFilterModelValuesType || (SetFilterModelValuesType = {}));\n/** @param V type of value in the Set Filter */\nvar SetValueModel = /** @class */ (function () {\n function SetValueModel(params) {\n var _this = this;\n var _a;\n this.localEventService = new EventService();\n this.miniFilterText = null;\n /** Values provided to the filter for use. */\n this.providedValues = null;\n /** All possible values for the filter, sorted if required. */\n this.allValues = new Map();\n /** Remaining keys when filters from other columns have been applied. */\n this.availableKeys = new Set();\n /** Keys that have been selected for this filter. */\n this.selectedKeys = new Set();\n this.initialised = false;\n var usingComplexObjects = params.usingComplexObjects, columnModel = params.columnModel, valueService = params.valueService, treeDataTreeList = params.treeDataTreeList, groupingTreeList = params.groupingTreeList, filterParams = params.filterParams, gridOptionsService = params.gridOptionsService, valueFormatterService = params.valueFormatterService, valueFormatter = params.valueFormatter;\n var column = filterParams.column, colDef = filterParams.colDef, textFormatter = filterParams.textFormatter, doesRowPassOtherFilter = filterParams.doesRowPassOtherFilter, suppressSorting = filterParams.suppressSorting, comparator = filterParams.comparator, rowModel = filterParams.rowModel, values = filterParams.values, caseSensitive = filterParams.caseSensitive, convertValuesToStrings = filterParams.convertValuesToStrings, treeList = filterParams.treeList, treeListPathGetter = filterParams.treeListPathGetter, treeListFormatter = filterParams.treeListFormatter;\n this.filterParams = filterParams;\n this.setIsLoading = params.setIsLoading;\n this.translate = params.translate;\n this.caseFormat = params.caseFormat;\n this.createKey = params.createKey;\n this.usingComplexObjects = !!params.usingComplexObjects;\n this.formatter = textFormatter || TextFilter.DEFAULT_FORMATTER;\n this.doesRowPassOtherFilters = doesRowPassOtherFilter;\n this.suppressSorting = suppressSorting || false;\n this.convertValuesToStrings = !!convertValuesToStrings;\n var keyComparator = comparator !== null && comparator !== void 0 ? comparator : colDef.comparator;\n var treeDataOrGrouping = !!treeDataTreeList || !!groupingTreeList;\n // If using complex objects and a comparator is provided, sort by values, otherwise need to sort by the string keys.\n // Also if tree data, grouping, or date with tree list, then need to do value sort\n this.compareByValue = !!((usingComplexObjects && keyComparator) || treeDataOrGrouping || (treeList && !treeListPathGetter));\n if (treeDataOrGrouping && !keyComparator) {\n this.entryComparator = this.createTreeDataOrGroupingComparator();\n }\n else if (treeList && !treeListPathGetter && !keyComparator) {\n this.entryComparator = function (_a, _b) {\n var _c = __read(_a, 2); _c[0]; var aValue = _c[1];\n var _d = __read(_b, 2); _d[0]; var bValue = _d[1];\n return _.defaultComparator(aValue, bValue);\n };\n }\n else {\n this.entryComparator = function (_a, _b) {\n var _c = __read(_a, 2); _c[0]; var aValue = _c[1];\n var _d = __read(_b, 2); _d[0]; var bValue = _d[1];\n return keyComparator(aValue, bValue);\n };\n }\n this.keyComparator = (_a = keyComparator) !== null && _a !== void 0 ? _a : _.defaultComparator;\n this.caseSensitive = !!caseSensitive;\n var getDataPath = gridOptionsService.get('getDataPath');\n if (rowModel.getType() === 'clientSide') {\n this.clientSideValuesExtractor = new ClientSideValuesExtractor(rowModel, this.filterParams, this.createKey, this.caseFormat, columnModel, valueService, treeDataOrGrouping, !!treeDataTreeList, getDataPath);\n }\n if (values == null) {\n this.valuesType = SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n }\n else {\n this.valuesType = Array.isArray(values) ?\n SetFilterModelValuesType.PROVIDED_LIST :\n SetFilterModelValuesType.PROVIDED_CALLBACK;\n this.providedValues = values;\n }\n this.displayValueModel = treeList ? new TreeSetDisplayValueModel(this.formatter, treeListPathGetter, treeListFormatter, treeDataTreeList || groupingTreeList) : new FlatSetDisplayValueModel(valueFormatterService, valueFormatter, this.formatter, column);\n this.updateAllValues().then(function (updatedKeys) { return _this.resetSelectionState(updatedKeys || []); });\n }\n SetValueModel.prototype.addEventListener = function (eventType, listener, async) {\n this.localEventService.addEventListener(eventType, listener, async);\n };\n SetValueModel.prototype.removeEventListener = function (eventType, listener, async) {\n this.localEventService.removeEventListener(eventType, listener, async);\n };\n /**\n * Re-fetches the values used in the filter from the value source.\n * If keepSelection is false, the filter selection will be reset to everything selected,\n * otherwise the current selection will be preserved.\n */\n SetValueModel.prototype.refreshValues = function () {\n var currentModel = this.getModel();\n this.updateAllValues();\n // ensure model is updated for new values\n return this.setModel(currentModel);\n };\n /**\n * Overrides the current values being used for the set filter.\n * If keepSelection is false, the filter selection will be reset to everything selected,\n * otherwise the current selection will be preserved.\n */\n SetValueModel.prototype.overrideValues = function (valuesToUse) {\n var _this = this;\n return new AgPromise(function (resolve) {\n // wait for any existing values to be populated before overriding\n _this.allValuesPromise.then(function () {\n _this.valuesType = SetFilterModelValuesType.PROVIDED_LIST;\n _this.providedValues = valuesToUse;\n _this.refreshValues().then(function () { return resolve(); });\n });\n });\n };\n /** @return has anything been updated */\n SetValueModel.prototype.refreshAfterAnyFilterChanged = function () {\n var _this = this;\n if (this.showAvailableOnly()) {\n return this.allValuesPromise.then(function (keys) {\n _this.updateAvailableKeys(keys !== null && keys !== void 0 ? keys : [], 'otherFilter');\n return true;\n });\n }\n return AgPromise.resolve(false);\n };\n SetValueModel.prototype.isInitialised = function () {\n return this.initialised;\n };\n SetValueModel.prototype.updateAllValues = function () {\n var _this = this;\n this.allValuesPromise = new AgPromise(function (resolve) {\n switch (_this.valuesType) {\n case SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES:\n case SetFilterModelValuesType.PROVIDED_LIST: {\n resolve(_this.processAllKeys(_this.valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES, _this.providedValues));\n break;\n }\n case SetFilterModelValuesType.PROVIDED_CALLBACK: {\n _this.setIsLoading(true);\n var callback_1 = _this.providedValues;\n var _a = _this.filterParams, columnApi = _a.columnApi, api = _a.api, context = _a.context, column = _a.column, colDef = _a.colDef;\n var params_1 = {\n success: function (values) {\n _this.setIsLoading(false);\n resolve(_this.processAllKeys(false, values));\n },\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n api: api,\n context: context,\n };\n window.setTimeout(function () { return callback_1(params_1); }, 0);\n break;\n }\n default:\n throw new Error('Unrecognised valuesType');\n }\n });\n this.allValuesPromise.then(function (values) { return _this.updateAvailableKeys(values || [], 'reload'); }).then(function () { return _this.initialised = true; });\n return this.allValuesPromise;\n };\n SetValueModel.prototype.processAllKeys = function (getFromRows, providedValues) {\n var values = getFromRows ? this.getValuesFromRows(false) : this.uniqueValues(this.validateProvidedValues(providedValues));\n var sortedKeys = this.sortKeys(values);\n this.allValues = values !== null && values !== void 0 ? values : new Map();\n return sortedKeys;\n };\n SetValueModel.prototype.validateProvidedValues = function (values) {\n if (this.usingComplexObjects && (values === null || values === void 0 ? void 0 : values.length)) {\n var firstValue = values[0];\n if (firstValue && typeof firstValue !== 'object' && typeof firstValue !== 'function') {\n var firstKey = this.createKey(firstValue);\n if (firstKey == null) {\n _.doOnce(function () { return console.warn('Set Filter Key Creator is returning null for provided values and provided values are primitives. Please provide complex objects or set convertValuesToStrings=true in the filterParams. See https://www.ag-grid.com/javascript-data-grid/filter-set-filter-list/#filter-value-types'); }, 'setFilterComplexObjectsProvidedNull');\n }\n else {\n _.doOnce(function () { return console.warn('AG Grid: Set Filter has a Key Creator, but provided values are primitives. Did you mean to provide complex objects or enable convertValuesToStrings?'); }, 'setFilterComplexObjectsProvidedPrimitive');\n }\n }\n }\n return values;\n };\n SetValueModel.prototype.setValuesType = function (value) {\n this.valuesType = value;\n };\n SetValueModel.prototype.getValuesType = function () {\n return this.valuesType;\n };\n SetValueModel.prototype.isKeyAvailable = function (key) {\n return this.availableKeys.has(key);\n };\n SetValueModel.prototype.showAvailableOnly = function () {\n return this.valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n };\n SetValueModel.prototype.updateAvailableKeys = function (allKeys, source) {\n var availableKeys = this.showAvailableOnly() ? this.sortKeys(this.getValuesFromRows(true)) : allKeys;\n this.availableKeys = new Set(availableKeys);\n this.localEventService.dispatchEvent({ type: SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED });\n this.updateDisplayedValues(source, allKeys);\n };\n SetValueModel.prototype.sortKeys = function (nullableValues) {\n var values = nullableValues !== null && nullableValues !== void 0 ? nullableValues : new Map();\n if (this.suppressSorting) {\n return Array.from(values.keys());\n }\n var sortedKeys;\n if (this.compareByValue) {\n sortedKeys = Array.from(values.entries()).sort(this.entryComparator).map(function (_a) {\n var _b = __read(_a, 1), key = _b[0];\n return key;\n });\n }\n else {\n sortedKeys = Array.from(values.keys()).sort(this.keyComparator);\n }\n if (this.filterParams.excelMode && values.has(null)) {\n // ensure the blank value always appears last\n sortedKeys = sortedKeys.filter(function (v) { return v != null; });\n sortedKeys.push(null);\n }\n return sortedKeys;\n };\n SetValueModel.prototype.getValuesFromRows = function (removeUnavailableValues) {\n var _this = this;\n if (removeUnavailableValues === void 0) { removeUnavailableValues = false; }\n if (!this.clientSideValuesExtractor) {\n console.error('AG Grid: Set Filter cannot initialise because you are using a row model that does not contain all rows in the browser. Either use a different filter type, or configure Set Filter such that you provide it with values');\n return null;\n }\n var predicate = function (node) { return (!removeUnavailableValues || _this.doesRowPassOtherFilters(node)); };\n return this.clientSideValuesExtractor.extractUniqueValues(predicate, removeUnavailableValues && !this.caseSensitive ? this.allValues : undefined);\n };\n /** Sets mini filter value. Returns true if it changed from last value, otherwise false. */\n SetValueModel.prototype.setMiniFilter = function (value) {\n value = _.makeNull(value);\n if (this.miniFilterText === value) {\n //do nothing if filter has not changed\n return false;\n }\n this.miniFilterText = value;\n this.updateDisplayedValues('miniFilter');\n return true;\n };\n SetValueModel.prototype.getMiniFilter = function () {\n return this.miniFilterText;\n };\n SetValueModel.prototype.updateDisplayedValues = function (source, allKeys) {\n var _this = this;\n if (source === 'expansion') {\n this.displayValueModel.refresh();\n return;\n }\n // if no filter, just display all available values\n if (this.miniFilterText == null) {\n this.displayValueModel.updateDisplayedValuesToAllAvailable(function (key) { return _this.getValue(key); }, allKeys, this.availableKeys, source);\n return;\n }\n // if filter present, we filter down the list\n // to allow for case insensitive searches, upper-case both filter text and value\n var formattedFilterText = this.caseFormat(this.formatter(this.miniFilterText) || '');\n var matchesFilter = function (valueToCheck) {\n return valueToCheck != null && _this.caseFormat(valueToCheck).indexOf(formattedFilterText) >= 0;\n };\n var nullMatchesFilter = !!this.filterParams.excelMode && matchesFilter(this.translate('blanks'));\n this.displayValueModel.updateDisplayedValuesToMatchMiniFilter(function (key) { return _this.getValue(key); }, allKeys, this.availableKeys, matchesFilter, nullMatchesFilter, source);\n };\n SetValueModel.prototype.getDisplayedValueCount = function () {\n return this.displayValueModel.getDisplayedValueCount();\n };\n SetValueModel.prototype.getDisplayedItem = function (index) {\n return this.displayValueModel.getDisplayedItem(index);\n };\n SetValueModel.prototype.getSelectAllItem = function () {\n return this.displayValueModel.getSelectAllItem();\n };\n SetValueModel.prototype.hasSelections = function () {\n return this.filterParams.defaultToNothingSelected ?\n this.selectedKeys.size > 0 :\n this.allValues.size !== this.selectedKeys.size;\n };\n SetValueModel.prototype.getKeys = function () {\n return Array.from(this.allValues.keys());\n };\n SetValueModel.prototype.getValues = function () {\n return Array.from(this.allValues.values());\n };\n SetValueModel.prototype.getValue = function (key) {\n return this.allValues.get(key);\n };\n SetValueModel.prototype.selectAllMatchingMiniFilter = function (clearExistingSelection) {\n var _this = this;\n if (clearExistingSelection === void 0) { clearExistingSelection = false; }\n if (this.miniFilterText == null) {\n // ensure everything is selected\n this.selectedKeys = new Set(this.allValues.keys());\n }\n else {\n // ensure everything that matches the mini filter is selected\n if (clearExistingSelection) {\n this.selectedKeys.clear();\n }\n this.displayValueModel.forEachDisplayedKey(function (key) { return _this.selectedKeys.add(key); });\n }\n };\n SetValueModel.prototype.deselectAllMatchingMiniFilter = function () {\n var _this = this;\n if (this.miniFilterText == null) {\n // ensure everything is deselected\n this.selectedKeys.clear();\n }\n else {\n // ensure everything that matches the mini filter is deselected\n this.displayValueModel.forEachDisplayedKey(function (key) { return _this.selectedKeys.delete(key); });\n }\n };\n SetValueModel.prototype.selectKey = function (key) {\n this.selectedKeys.add(key);\n };\n SetValueModel.prototype.deselectKey = function (key) {\n if (this.filterParams.excelMode && this.isEverythingVisibleSelected()) {\n // ensure we're starting from the correct \"everything selected\" state\n this.resetSelectionState(this.displayValueModel.getDisplayedKeys());\n }\n this.selectedKeys.delete(key);\n };\n SetValueModel.prototype.isKeySelected = function (key) {\n return this.selectedKeys.has(key);\n };\n SetValueModel.prototype.isEverythingVisibleSelected = function () {\n var _this = this;\n return !this.displayValueModel.someDisplayedKey(function (it) { return !_this.isKeySelected(it); });\n };\n SetValueModel.prototype.isNothingVisibleSelected = function () {\n var _this = this;\n return !this.displayValueModel.someDisplayedKey(function (it) { return _this.isKeySelected(it); });\n };\n SetValueModel.prototype.getModel = function () {\n return this.hasSelections() ? Array.from(this.selectedKeys) : null;\n };\n SetValueModel.prototype.setModel = function (model) {\n var _this = this;\n return this.allValuesPromise.then(function (keys) {\n if (model == null) {\n _this.resetSelectionState(keys !== null && keys !== void 0 ? keys : []);\n }\n else {\n // select all values from the model that exist in the filter\n _this.selectedKeys.clear();\n var existingFormattedKeys_1 = new Map();\n _this.allValues.forEach(function (_value, key) {\n existingFormattedKeys_1.set(_this.caseFormat(key), key);\n });\n model.forEach(function (unformattedKey) {\n var formattedKey = _this.caseFormat(unformattedKey);\n var existingUnformattedKey = existingFormattedKeys_1.get(formattedKey);\n if (existingUnformattedKey !== undefined) {\n _this.selectKey(existingUnformattedKey);\n }\n });\n }\n });\n };\n SetValueModel.prototype.uniqueValues = function (values) {\n var _this = this;\n var uniqueValues = new Map();\n var formattedKeys = new Set();\n (values !== null && values !== void 0 ? values : []).forEach(function (value) {\n var valueToUse = _.makeNull(value);\n var unformattedKey = _this.convertAndGetKey(valueToUse);\n var formattedKey = _this.caseFormat(unformattedKey);\n if (!formattedKeys.has(formattedKey)) {\n formattedKeys.add(formattedKey);\n uniqueValues.set(unformattedKey, valueToUse);\n }\n });\n return uniqueValues;\n };\n SetValueModel.prototype.convertAndGetKey = function (value) {\n return this.convertValuesToStrings ? value : this.createKey(value);\n };\n SetValueModel.prototype.resetSelectionState = function (keys) {\n if (this.filterParams.defaultToNothingSelected) {\n this.selectedKeys.clear();\n }\n else {\n this.selectedKeys = new Set(keys);\n }\n };\n SetValueModel.prototype.hasGroups = function () {\n return this.displayValueModel.hasGroups();\n };\n SetValueModel.prototype.createTreeDataOrGroupingComparator = function () {\n return function (_a, _b) {\n var _c = __read(_a, 2); _c[0]; var aValue = _c[1];\n var _d = __read(_b, 2); _d[0]; var bValue = _d[1];\n if (aValue == null) {\n return bValue == null ? 0 : -1;\n }\n else if (bValue == null) {\n return 1;\n }\n for (var i = 0; i < aValue.length; i++) {\n if (i >= bValue.length) {\n return 1;\n }\n var diff = _.defaultComparator(aValue[i], bValue[i]);\n if (diff !== 0) {\n return diff;\n }\n }\n return 0;\n };\n };\n SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED = 'availableValuesChanged';\n return SetValueModel;\n}());\n\nvar __extends$i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** @param V type of value in the Set Filter */\nvar SetFilterListItem = /** @class */ (function (_super) {\n __extends$i(SetFilterListItem, _super);\n function SetFilterListItem(params) {\n var _a;\n var _this = _super.call(this, params.isGroup ? SetFilterListItem.GROUP_TEMPLATE : SetFilterListItem.TEMPLATE) || this;\n _this.focusWrapper = params.focusWrapper;\n _this.value = params.value;\n _this.params = params.params;\n _this.translate = params.translate;\n _this.valueFormatter = params.valueFormatter;\n _this.item = params.item;\n _this.isSelected = params.isSelected;\n _this.isTree = params.isTree;\n _this.depth = (_a = params.depth) !== null && _a !== void 0 ? _a : 0;\n _this.isGroup = params.isGroup;\n _this.groupsExist = params.groupsExist;\n _this.isExpanded = params.isExpanded;\n _this.hasIndeterminateExpandState = params.hasIndeterminateExpandState;\n return _this;\n }\n SetFilterListItem.prototype.init = function () {\n var _this = this;\n this.render();\n this.eCheckbox.setLabelEllipsis(true);\n this.eCheckbox.setValue(this.isSelected, true);\n this.eCheckbox.setDisabled(!!this.params.readOnly);\n this.eCheckbox.getInputElement().setAttribute('tabindex', '-1');\n this.refreshVariableAriaLabels();\n if (this.isTree) {\n if (this.depth > 0) {\n this.addCssClass('ag-set-filter-indent-' + this.depth);\n }\n if (this.isGroup) {\n this.setupExpansion();\n }\n else {\n if (this.groupsExist) {\n this.addCssClass('ag-set-filter-add-group-indent');\n }\n }\n _.setAriaLevel(this.focusWrapper, this.depth + 1);\n }\n if (!!this.params.readOnly) {\n // Don't add event listeners if we're read-only.\n return;\n }\n this.eCheckbox.onValueChange(function (value) { return _this.onCheckboxChanged(!!value); });\n };\n SetFilterListItem.prototype.setupExpansion = function () {\n this.eGroupClosedIcon.appendChild(_.createIcon('setFilterGroupClosed', this.gridOptionsService, null));\n this.eGroupOpenedIcon.appendChild(_.createIcon('setFilterGroupOpen', this.gridOptionsService, null));\n this.addManagedListener(this.eGroupClosedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n this.addManagedListener(this.eGroupOpenedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n if (this.hasIndeterminateExpandState) {\n this.eGroupIndeterminateIcon.appendChild(_.createIcon('setFilterGroupIndeterminate', this.gridOptionsService, null));\n this.addManagedListener(this.eGroupIndeterminateIcon, 'click', this.onExpandOrContractClicked.bind(this));\n }\n this.setExpandedIcons();\n this.refreshAriaExpanded();\n };\n SetFilterListItem.prototype.onExpandOrContractClicked = function () {\n this.setExpanded(!this.isExpanded);\n };\n SetFilterListItem.prototype.setExpanded = function (isExpanded, silent) {\n if (this.isGroup && isExpanded !== this.isExpanded) {\n this.isExpanded = isExpanded;\n var event_1 = {\n type: SetFilterListItem.EVENT_EXPANDED_CHANGED,\n isExpanded: !!isExpanded,\n item: this.item\n };\n if (!silent) {\n this.dispatchEvent(event_1);\n }\n this.setExpandedIcons();\n this.refreshAriaExpanded();\n }\n };\n SetFilterListItem.prototype.refreshAriaExpanded = function () {\n _.setAriaExpanded(this.focusWrapper, !!this.isExpanded);\n };\n SetFilterListItem.prototype.setExpandedIcons = function () {\n _.setDisplayed(this.eGroupClosedIcon, this.hasIndeterminateExpandState ? this.isExpanded === false : !this.isExpanded);\n _.setDisplayed(this.eGroupOpenedIcon, this.isExpanded === true);\n if (this.hasIndeterminateExpandState) {\n _.setDisplayed(this.eGroupIndeterminateIcon, this.isExpanded === undefined);\n }\n };\n SetFilterListItem.prototype.onCheckboxChanged = function (isSelected) {\n this.isSelected = isSelected;\n var event = {\n type: SetFilterListItem.EVENT_SELECTION_CHANGED,\n isSelected: isSelected,\n item: this.item\n };\n this.dispatchEvent(event);\n this.refreshVariableAriaLabels();\n };\n SetFilterListItem.prototype.toggleSelected = function () {\n if (!!this.params.readOnly) {\n return;\n }\n this.setSelected(!this.isSelected);\n };\n SetFilterListItem.prototype.setSelected = function (isSelected, silent) {\n this.isSelected = isSelected;\n this.eCheckbox.setValue(this.isSelected, silent);\n };\n SetFilterListItem.prototype.refreshVariableAriaLabels = function () {\n if (!this.isTree) {\n return;\n }\n var translate = this.localeService.getLocaleTextFunc();\n var checkboxValue = this.eCheckbox.getValue();\n var state = checkboxValue === undefined ?\n translate('ariaIndeterminate', 'indeterminate') :\n (checkboxValue ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden'));\n var visibilityLabel = translate('ariaToggleVisibility', 'Press SPACE to toggle visibility');\n _.setAriaLabelledBy(this.eCheckbox.getInputElement(), undefined);\n this.eCheckbox.setInputAriaLabel(visibilityLabel + \" (\" + state + \")\");\n };\n SetFilterListItem.prototype.setupFixedAriaLabels = function (value) {\n if (!this.isTree) {\n return;\n }\n var translate = this.localeService.getLocaleTextFunc();\n var itemLabel = translate('ariaFilterValue', 'Filter Value');\n _.setAriaLabel(this.focusWrapper, value + \" \" + itemLabel);\n _.setAriaDescribedBy(this.focusWrapper, this.eCheckbox.getInputElement().id);\n };\n SetFilterListItem.prototype.refresh = function (item, isSelected, isExpanded) {\n var _a, _b;\n this.item = item;\n // setExpanded checks if value has changed, setSelected does not\n if (isSelected !== this.isSelected) {\n this.setSelected(isSelected, true);\n }\n this.setExpanded(isExpanded, true);\n if (this.valueFunction) {\n // underlying value might have changed, so call again and re-render\n var value = this.valueFunction();\n this.setTooltipAndCellRendererParams(value, value);\n if (!this.cellRendererComponent) {\n this.renderCellWithoutCellRenderer();\n }\n }\n (_b = (_a = this.cellRendererComponent) === null || _a === void 0 ? void 0 : _a.refresh) === null || _b === void 0 ? void 0 : _b.call(_a, this.cellRendererParams);\n };\n SetFilterListItem.prototype.render = function () {\n var column = this.params.column;\n var value = this.value;\n var formattedValue = null;\n if (typeof value === 'function') {\n this.valueFunction = value;\n formattedValue = this.valueFunction();\n // backwards compatibility for select all in value\n value = formattedValue;\n }\n else if (this.isTree) {\n // tree values are already formatted via treeListFormatter\n formattedValue = _.toStringOrNull(value);\n }\n else {\n formattedValue = this.getFormattedValue(column, value);\n }\n this.setTooltipAndCellRendererParams(value, formattedValue);\n this.renderCell();\n };\n SetFilterListItem.prototype.setTooltipAndCellRendererParams = function (value, formattedValue) {\n if (this.params.showTooltips) {\n var tooltipValue = formattedValue != null ? formattedValue : _.toStringOrNull(value);\n this.setTooltip(tooltipValue);\n }\n this.cellRendererParams = {\n value: value,\n valueFormatted: formattedValue,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n colDef: this.params.colDef,\n column: this.params.column,\n };\n };\n SetFilterListItem.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'setFilterValue';\n res.colDef = this.getComponentHolder();\n if (this.isTree) {\n res.level = this.depth;\n }\n return res;\n };\n SetFilterListItem.prototype.getFormattedValue = function (column, value) {\n return this.valueFormatterService.formatValue(column, null, value, this.valueFormatter, false);\n };\n SetFilterListItem.prototype.renderCell = function () {\n var _this = this;\n var compDetails = this.userComponentFactory.getSetFilterCellRendererDetails(this.params, this.cellRendererParams);\n var cellRendererPromise = compDetails ? compDetails.newAgStackInstance() : undefined;\n if (cellRendererPromise == null) {\n this.renderCellWithoutCellRenderer();\n return;\n }\n cellRendererPromise.then(function (component) {\n if (component) {\n _this.cellRendererComponent = component;\n _this.eCheckbox.setLabel(component.getGui());\n _this.addDestroyFunc(function () { return _this.destroyBean(component); });\n }\n });\n };\n SetFilterListItem.prototype.renderCellWithoutCellRenderer = function () {\n var _a;\n var valueToRender = (_a = (this.cellRendererParams.valueFormatted == null ? this.cellRendererParams.value : this.cellRendererParams.valueFormatted)) !== null && _a !== void 0 ? _a : this.translate('blanks');\n if (typeof valueToRender !== 'string') {\n _.doOnce(function () { return console.warn('AG Grid: Set Filter Value Formatter must return string values. Please ensure the Set Filter Value Formatter returns string values for complex objects, or set convertValuesToStrings=true in the filterParams. See https://www.ag-grid.com/javascript-data-grid/filter-set-filter-list/#filter-value-types'); }, 'setFilterComplexObjectsValueFormatter');\n valueToRender = '';\n }\n this.eCheckbox.setLabel(valueToRender);\n this.setupFixedAriaLabels(valueToRender);\n };\n SetFilterListItem.prototype.getComponentHolder = function () {\n return this.params.column.getColDef();\n };\n SetFilterListItem.EVENT_SELECTION_CHANGED = 'selectionChanged';\n SetFilterListItem.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n SetFilterListItem.GROUP_TEMPLATE = \"\\n <div class=\\\"ag-set-filter-item\\\" aria-hidden=\\\"true\\\">\\n <span class=\\\"ag-set-filter-group-icons\\\">\\n <span class=\\\"ag-set-filter-group-closed-icon\\\" ref=\\\"eGroupClosedIcon\\\"></span>\\n <span class=\\\"ag-set-filter-group-opened-icon\\\" ref=\\\"eGroupOpenedIcon\\\"></span>\\n <span class=\\\"ag-set-filter-group-indeterminate-icon\\\" ref=\\\"eGroupIndeterminateIcon\\\"></span>\\n </span>\\n <ag-checkbox ref=\\\"eCheckbox\\\" class=\\\"ag-set-filter-item-checkbox\\\"></ag-checkbox>\\n </div>\";\n SetFilterListItem.TEMPLATE = \"\\n <div class=\\\"ag-set-filter-item\\\">\\n <ag-checkbox ref=\\\"eCheckbox\\\" class=\\\"ag-set-filter-item-checkbox\\\"></ag-checkbox>\\n </div>\";\n __decorate$d([\n Autowired('valueFormatterService')\n ], SetFilterListItem.prototype, \"valueFormatterService\", void 0);\n __decorate$d([\n Autowired('userComponentFactory')\n ], SetFilterListItem.prototype, \"userComponentFactory\", void 0);\n __decorate$d([\n RefSelector('eCheckbox')\n ], SetFilterListItem.prototype, \"eCheckbox\", void 0);\n __decorate$d([\n RefSelector('eGroupOpenedIcon')\n ], SetFilterListItem.prototype, \"eGroupOpenedIcon\", void 0);\n __decorate$d([\n RefSelector('eGroupClosedIcon')\n ], SetFilterListItem.prototype, \"eGroupClosedIcon\", void 0);\n __decorate$d([\n RefSelector('eGroupIndeterminateIcon')\n ], SetFilterListItem.prototype, \"eGroupIndeterminateIcon\", void 0);\n __decorate$d([\n PostConstruct\n ], SetFilterListItem.prototype, \"init\", null);\n return SetFilterListItem;\n}(Component));\n\nvar DEFAULT_LOCALE_TEXT = {\n loadingOoo: 'Loading...',\n blanks: '(Blanks)',\n searchOoo: 'Search...',\n selectAll: '(Select All)',\n selectAllSearchResults: '(Select All Search Results)',\n noMatches: 'No matches.'\n};\n\nvar SetFilterModelFormatter = /** @class */ (function () {\n function SetFilterModelFormatter() {\n }\n SetFilterModelFormatter.prototype.getModelAsString = function (model, setFilter) {\n var values = (model || setFilter.getModel() || {}).values;\n var valueModel = setFilter.getValueModel();\n if (values == null || valueModel == null) {\n return '';\n }\n var availableKeys = values.filter(function (v) { return valueModel.isKeyAvailable(v); });\n var numValues = availableKeys.length;\n var formattedValues = availableKeys.slice(0, 10).map(function (key) { return setFilter.getFormattedValue(key); });\n return \"(\" + numValues + \") \" + formattedValues.join(',') + (numValues > 10 ? ',...' : '');\n };\n return SetFilterModelFormatter;\n}());\n\nvar __extends$h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** @param V type of value in the Set Filter */\nvar SetFilter = /** @class */ (function (_super) {\n __extends$h(SetFilter, _super);\n function SetFilter() {\n var _this = _super.call(this, 'setFilter') || this;\n _this.valueModel = null;\n _this.setFilterParams = null;\n _this.virtualList = null;\n _this.caseSensitive = false;\n _this.convertValuesToStrings = false;\n _this.treeDataTreeList = false;\n _this.groupingTreeList = false;\n _this.hardRefreshVirtualList = false;\n _this.noValueFormatterSupplied = false;\n // To make the filtering super fast, we store the keys in an Set rather than using the default array\n _this.appliedModelKeys = null;\n _this.noAppliedModelKeys = false;\n _this.filterModelFormatter = new SetFilterModelFormatter();\n return _this;\n }\n SetFilter.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n };\n // unlike the simple filters, nothing in the set filter UI shows/hides.\n // maybe this method belongs in abstractSimpleFilter???\n SetFilter.prototype.updateUiVisibility = function () { };\n SetFilter.prototype.createBodyTemplate = function () {\n return /* html */ \"\\n <div class=\\\"ag-set-filter\\\">\\n <div ref=\\\"eFilterLoading\\\" class=\\\"ag-filter-loading ag-hidden\\\">\" + this.translateForSetFilter('loadingOoo') + \"</div>\\n <ag-input-text-field class=\\\"ag-mini-filter\\\" ref=\\\"eMiniFilter\\\"></ag-input-text-field>\\n <div ref=\\\"eFilterNoMatches\\\" class=\\\"ag-filter-no-matches ag-hidden\\\">\" + this.translateForSetFilter('noMatches') + \"</div>\\n <div ref=\\\"eSetFilterList\\\" class=\\\"ag-set-filter-list\\\" role=\\\"presentation\\\"></div>\\n </div>\";\n };\n SetFilter.prototype.handleKeyDown = function (e) {\n _super.prototype.handleKeyDown.call(this, e);\n if (e.defaultPrevented) {\n return;\n }\n switch (e.key) {\n case KeyCode.SPACE:\n this.handleKeySpace(e);\n break;\n case KeyCode.ENTER:\n this.handleKeyEnter(e);\n break;\n case KeyCode.LEFT:\n this.handleKeyLeft(e);\n break;\n case KeyCode.RIGHT:\n this.handleKeyRight(e);\n break;\n }\n };\n SetFilter.prototype.handleKeySpace = function (e) {\n var _a;\n (_a = this.getComponentForKeyEvent(e)) === null || _a === void 0 ? void 0 : _a.toggleSelected();\n };\n SetFilter.prototype.handleKeyEnter = function (e) {\n if (!this.setFilterParams) {\n return;\n }\n var _a = this.setFilterParams || {}, excelMode = _a.excelMode, readOnly = _a.readOnly;\n if (!excelMode || !!readOnly) {\n return;\n }\n e.preventDefault();\n // in Excel Mode, hitting Enter is the same as pressing the Apply button\n this.onBtApply(false, false, e);\n if (this.setFilterParams.excelMode === 'mac') {\n // in Mac version, select all the input text\n this.eMiniFilter.getInputElement().select();\n }\n };\n SetFilter.prototype.handleKeyLeft = function (e) {\n var _a;\n (_a = this.getComponentForKeyEvent(e)) === null || _a === void 0 ? void 0 : _a.setExpanded(false);\n };\n SetFilter.prototype.handleKeyRight = function (e) {\n var _a;\n (_a = this.getComponentForKeyEvent(e)) === null || _a === void 0 ? void 0 : _a.setExpanded(true);\n };\n SetFilter.prototype.getComponentForKeyEvent = function (e) {\n var _a;\n var eDocument = this.gridOptionsService.getDocument();\n if (!this.eSetFilterList.contains(eDocument.activeElement) || !this.virtualList) {\n return;\n }\n var currentItem = this.virtualList.getLastFocusedRow();\n if (currentItem == null) {\n return;\n }\n var component = this.virtualList.getComponentAt(currentItem);\n if (component == null) {\n return;\n }\n e.preventDefault();\n var readOnly = ((_a = this.setFilterParams) !== null && _a !== void 0 ? _a : {}).readOnly;\n if (!!readOnly) {\n return;\n }\n return component;\n };\n SetFilter.prototype.getCssIdentifier = function () {\n return 'set-filter';\n };\n SetFilter.prototype.setModel = function (model) {\n var _a;\n if (model == null && ((_a = this.valueModel) === null || _a === void 0 ? void 0 : _a.getModel()) == null) {\n // refreshing is expensive. if new and old model are both null (e.g. nothing set), skip.\n // mini filter isn't contained within the model, so always reset\n this.setMiniFilter(null);\n return AgPromise.resolve();\n }\n return _super.prototype.setModel.call(this, model);\n };\n SetFilter.prototype.setModelAndRefresh = function (values) {\n var _this = this;\n return this.valueModel ? this.valueModel.setModel(values).then(function () { return _this.refresh(); }) : AgPromise.resolve();\n };\n SetFilter.prototype.resetUiToDefaults = function () {\n this.setMiniFilter(null);\n return this.setModelAndRefresh(null);\n };\n SetFilter.prototype.setModelIntoUi = function (model) {\n this.setMiniFilter(null);\n var values = model == null ? null : model.values;\n return this.setModelAndRefresh(values);\n };\n SetFilter.prototype.getModelFromUi = function () {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var values = this.valueModel.getModel();\n if (!values) {\n return null;\n }\n return { values: values, filterType: this.getFilterType() };\n };\n SetFilter.prototype.getFilterType = function () {\n return 'set';\n };\n SetFilter.prototype.getValueModel = function () {\n return this.valueModel;\n };\n SetFilter.prototype.areModelsEqual = function (a, b) {\n // both are missing\n if (a == null && b == null) {\n return true;\n }\n return a != null && b != null && _.areEqual(a.values, b.values);\n };\n SetFilter.prototype.setParams = function (params) {\n var _this = this;\n var _a;\n this.applyExcelModeOptions(params);\n _super.prototype.setParams.call(this, params);\n this.setFilterParams = params;\n this.convertValuesToStrings = !!params.convertValuesToStrings;\n this.caseSensitive = !!params.caseSensitive;\n var keyCreator = (_a = params.keyCreator) !== null && _a !== void 0 ? _a : params.colDef.keyCreator;\n this.setValueFormatter(params.valueFormatter, keyCreator, this.convertValuesToStrings, !!params.treeList, !!params.colDef.refData);\n var isGroupCol = params.column.getId().startsWith(GROUP_AUTO_COLUMN_ID);\n this.treeDataTreeList = this.gridOptionsService.is('treeData') && !!params.treeList && isGroupCol;\n this.getDataPath = this.gridOptionsService.get('getDataPath');\n this.groupingTreeList = !!this.columnModel.getRowGroupColumns().length && !!params.treeList && isGroupCol;\n this.createKey = this.generateCreateKey(keyCreator, this.convertValuesToStrings, this.treeDataTreeList || this.groupingTreeList);\n this.valueModel = new SetValueModel({\n filterParams: params,\n setIsLoading: function (loading) { return _this.setIsLoading(loading); },\n valueFormatterService: this.valueFormatterService,\n translate: function (key) { return _this.translateForSetFilter(key); },\n caseFormat: function (v) { return _this.caseFormat(v); },\n createKey: this.createKey,\n valueFormatter: this.valueFormatter,\n usingComplexObjects: !!keyCreator,\n gridOptionsService: this.gridOptionsService,\n columnModel: this.columnModel,\n valueService: this.valueService,\n treeDataTreeList: this.treeDataTreeList,\n groupingTreeList: this.groupingTreeList\n });\n this.initialiseFilterBodyUi();\n this.addEventListenersForDataChanges();\n };\n SetFilter.prototype.setValueFormatter = function (providedValueFormatter, keyCreator, convertValuesToStrings, treeList, isRefData) {\n var valueFormatter = providedValueFormatter;\n if (!valueFormatter) {\n if (keyCreator && !convertValuesToStrings && !treeList) {\n throw new Error('AG Grid: Must supply a Value Formatter in Set Filter params when using a Key Creator unless convertValuesToStrings is enabled');\n }\n this.noValueFormatterSupplied = true;\n // ref data is handled by ValueFormatterService\n if (!isRefData) {\n valueFormatter = function (params) { return _.toStringOrNull(params.value); };\n }\n }\n this.valueFormatter = valueFormatter;\n };\n SetFilter.prototype.generateCreateKey = function (keyCreator, convertValuesToStrings, treeDataOrGrouping) {\n var _this = this;\n if (treeDataOrGrouping && !keyCreator) {\n throw new Error('AG Grid: Must supply a Key Creator in Set Filter params when `treeList = true` on a group column, and Tree Data or Row Grouping is enabled.');\n }\n if (keyCreator) {\n return function (value, node) {\n if (node === void 0) { node = null; }\n var params = _this.getKeyCreatorParams(value, node);\n return _.makeNull(keyCreator(params));\n };\n }\n if (convertValuesToStrings) {\n // for backwards compatibility - keeping separate as it will eventually be removed\n return function (value) { return Array.isArray(value) ? value : _.makeNull(_.toStringOrNull(value)); };\n }\n else {\n return function (value) { return _.makeNull(_.toStringOrNull(value)); };\n }\n };\n SetFilter.prototype.getFormattedValue = function (key) {\n var _a;\n var value = this.valueModel.getValue(key);\n if (this.noValueFormatterSupplied && (this.treeDataTreeList || this.groupingTreeList) && Array.isArray(value)) {\n // essentially get back the cell value\n value = _.last(value);\n }\n var formattedValue = this.valueFormatterService.formatValue(this.setFilterParams.column, null, value, this.valueFormatter, false);\n return (_a = (formattedValue == null ? _.toStringOrNull(value) : formattedValue)) !== null && _a !== void 0 ? _a : this.translateForSetFilter('blanks');\n };\n SetFilter.prototype.applyExcelModeOptions = function (params) {\n // apply default options to match Excel behaviour, unless they have already been specified\n if (params.excelMode === 'windows') {\n if (!params.buttons) {\n params.buttons = ['apply', 'cancel'];\n }\n if (params.closeOnApply == null) {\n params.closeOnApply = true;\n }\n }\n else if (params.excelMode === 'mac') {\n if (!params.buttons) {\n params.buttons = ['reset'];\n }\n if (params.applyMiniFilterWhileTyping == null) {\n params.applyMiniFilterWhileTyping = true;\n }\n if (params.debounceMs == null) {\n params.debounceMs = 500;\n }\n }\n if (params.excelMode && params.defaultToNothingSelected) {\n _.doOnce(function () { return console.warn('AG Grid: The Set Filter Parameter \"defaultToNothingSelected\" does not work with \"excelMode\".'); }, 'setFilterExcelModeDefaultToNothingSelect');\n }\n };\n SetFilter.prototype.addEventListenersForDataChanges = function () {\n var _this = this;\n if (!this.isValuesTakenFromGrid()) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, function (event) {\n // only interested in changes to do with this column\n if (_this.setFilterParams && event.column === _this.setFilterParams.column) {\n _this.syncAfterDataChange();\n }\n });\n };\n SetFilter.prototype.syncAfterDataChange = function () {\n var _this = this;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var promise = this.valueModel.refreshValues();\n return promise.then(function () {\n _this.refresh();\n _this.onBtApply(false, true);\n });\n };\n SetFilter.prototype.setIsLoading = function (isLoading) {\n _.setDisplayed(this.eFilterLoading, isLoading);\n if (!isLoading) {\n // hard refresh when async data received\n this.hardRefreshVirtualList = true;\n }\n };\n SetFilter.prototype.initialiseFilterBodyUi = function () {\n this.initVirtualList();\n this.initMiniFilter();\n };\n SetFilter.prototype.initVirtualList = function () {\n var _this = this;\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var translate = this.localeService.getLocaleTextFunc();\n var filterListName = translate('ariaFilterList', 'Filter List');\n var isTree = !!this.setFilterParams.treeList;\n var virtualList = this.virtualList = this.createBean(new VirtualList('filter', isTree ? 'tree' : 'listbox', filterListName));\n var eSetFilterList = this.getRefElement('eSetFilterList');\n if (isTree) {\n eSetFilterList.classList.add('ag-set-filter-tree-list');\n }\n if (eSetFilterList) {\n eSetFilterList.appendChild(virtualList.getGui());\n }\n var cellHeight = this.setFilterParams.cellHeight;\n if (cellHeight != null) {\n virtualList.setRowHeight(cellHeight);\n }\n var componentCreator = function (item, listItemElement) { return _this.createSetListItem(item, isTree, listItemElement); };\n virtualList.setComponentCreator(componentCreator);\n var componentUpdater = function (item, component) { return _this.updateSetListItem(item, component); };\n virtualList.setComponentUpdater(componentUpdater);\n var model;\n if (this.setFilterParams.suppressSelectAll) {\n model = new ModelWrapper(this.valueModel);\n }\n else {\n model = new ModelWrapperWithSelectAll(this.valueModel, function () { return _this.isSelectAllSelected(); });\n }\n if (isTree) {\n model = new TreeModelWrapper(model);\n }\n virtualList.setModel(model);\n };\n SetFilter.prototype.getSelectAllLabel = function () {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var key = this.valueModel.getMiniFilter() == null || !this.setFilterParams.excelMode ?\n 'selectAll' : 'selectAllSearchResults';\n return this.translateForSetFilter(key);\n };\n SetFilter.prototype.createSetListItem = function (item, isTree, focusWrapper) {\n var _this = this;\n var _a, _b, _c, _d, _e, _f;\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var groupsExist = this.valueModel.hasGroups();\n var value;\n var depth;\n var isGroup;\n var hasIndeterminateExpandState;\n var selectedListener;\n var expandedListener;\n if (this.isSetFilterModelTreeItem(item)) {\n depth = item.depth;\n if (item.key === SetFilterDisplayValue.SELECT_ALL) {\n // select all\n value = function () { return _this.getSelectAllLabel(); };\n isGroup = groupsExist;\n hasIndeterminateExpandState = true;\n selectedListener = function (e) { return _this.onSelectAll(e.isSelected); };\n expandedListener = function (e) { return _this.onExpandAll(e.item, e.isExpanded); };\n }\n else if (item.children) {\n // group\n value = (_c = (_b = (_a = this.setFilterParams).treeListFormatter) === null || _b === void 0 ? void 0 : _b.call(_a, item.treeKey, item.depth, item.parentTreeKeys)) !== null && _c !== void 0 ? _c : item.treeKey;\n isGroup = true;\n selectedListener = function (e) { return _this.onGroupItemSelected(e.item, e.isSelected); };\n expandedListener = function (e) { return _this.onExpandedChanged(e.item, e.isExpanded); };\n }\n else {\n // leaf\n value = (_f = (_e = (_d = this.setFilterParams).treeListFormatter) === null || _e === void 0 ? void 0 : _e.call(_d, item.treeKey, item.depth, item.parentTreeKeys)) !== null && _f !== void 0 ? _f : item.treeKey;\n selectedListener = function (e) { return _this.onItemSelected(e.item.key, e.isSelected); };\n }\n }\n else {\n if (item === SetFilterDisplayValue.SELECT_ALL) {\n value = function () { return _this.getSelectAllLabel(); };\n selectedListener = function (e) { return _this.onSelectAll(e.isSelected); };\n }\n else {\n value = this.valueModel.getValue(item);\n selectedListener = function (e) { return _this.onItemSelected(e.item, e.isSelected); };\n }\n }\n var _g = this.isSelectedExpanded(item), isSelected = _g.isSelected, isExpanded = _g.isExpanded;\n var itemParams = {\n focusWrapper: focusWrapper,\n value: value,\n params: this.setFilterParams,\n translate: function (translateKey) { return _this.translateForSetFilter(translateKey); },\n valueFormatter: this.valueFormatter,\n item: item,\n isSelected: isSelected,\n isTree: isTree,\n depth: depth,\n groupsExist: groupsExist,\n isGroup: isGroup,\n isExpanded: isExpanded,\n hasIndeterminateExpandState: hasIndeterminateExpandState,\n };\n var listItem = this.createBean(new SetFilterListItem(itemParams));\n listItem.addEventListener(SetFilterListItem.EVENT_SELECTION_CHANGED, selectedListener);\n if (expandedListener) {\n listItem.addEventListener(SetFilterListItem.EVENT_EXPANDED_CHANGED, expandedListener);\n }\n return listItem;\n };\n SetFilter.prototype.updateSetListItem = function (item, component) {\n var _a = this.isSelectedExpanded(item), isSelected = _a.isSelected, isExpanded = _a.isExpanded;\n component.refresh(item, isSelected, isExpanded);\n };\n SetFilter.prototype.isSelectedExpanded = function (item) {\n var isSelected;\n var isExpanded;\n if (this.isSetFilterModelTreeItem(item)) {\n isExpanded = item.expanded;\n if (item.key === SetFilterDisplayValue.SELECT_ALL) {\n isSelected = this.isSelectAllSelected();\n }\n else if (item.children) {\n isSelected = this.areAllChildrenSelected(item);\n }\n else {\n isSelected = this.valueModel.isKeySelected(item.key);\n }\n }\n else {\n if (item === SetFilterDisplayValue.SELECT_ALL) {\n isSelected = this.isSelectAllSelected();\n }\n else {\n isSelected = this.valueModel.isKeySelected(item);\n }\n }\n return { isSelected: isSelected, isExpanded: isExpanded };\n };\n SetFilter.prototype.isSetFilterModelTreeItem = function (item) {\n return (item === null || item === void 0 ? void 0 : item.treeKey) !== undefined;\n };\n SetFilter.prototype.initMiniFilter = function () {\n var _this = this;\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var _a = this, eMiniFilter = _a.eMiniFilter, localeService = _a.localeService;\n var translate = localeService.getLocaleTextFunc();\n eMiniFilter.setDisplayed(!this.setFilterParams.suppressMiniFilter);\n eMiniFilter.setValue(this.valueModel.getMiniFilter());\n eMiniFilter.onValueChange(function () { return _this.onMiniFilterInput(); });\n eMiniFilter.setInputAriaLabel(translate('ariaSearchFilterValues', 'Search filter values'));\n this.addManagedListener(eMiniFilter.getInputElement(), 'keypress', function (e) { return _this.onMiniFilterKeyPress(e); });\n };\n // we need to have the GUI attached before we can draw the virtual rows, as the\n // virtual row logic needs info about the GUI state\n SetFilter.prototype.afterGuiAttached = function (params) {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n _super.prototype.afterGuiAttached.call(this, params);\n // collapse all tree list items (if tree list)\n this.resetExpansion();\n this.refreshVirtualList();\n var eMiniFilter = this.eMiniFilter;\n eMiniFilter.setInputPlaceholder(this.translateForSetFilter('searchOoo'));\n if (!params || !params.suppressFocus) {\n eMiniFilter.getFocusableElement().focus();\n }\n };\n SetFilter.prototype.afterGuiDetached = function () {\n var _a, _b;\n _super.prototype.afterGuiDetached.call(this);\n // discard any unapplied UI state (reset to model)\n if ((_a = this.setFilterParams) === null || _a === void 0 ? void 0 : _a.excelMode) {\n this.resetMiniFilter();\n }\n var appliedModel = this.getModel();\n if (((_b = this.setFilterParams) === null || _b === void 0 ? void 0 : _b.excelMode) || !this.areModelsEqual(appliedModel, this.getModelFromUi())) {\n this.resetUiToActiveModel(appliedModel);\n this.showOrHideResults();\n }\n };\n SetFilter.prototype.applyModel = function (source) {\n var _this = this;\n if (source === void 0) { source = 'api'; }\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (this.setFilterParams.excelMode && source !== 'rowDataUpdated' && this.valueModel.isEverythingVisibleSelected()) {\n // In Excel, if the filter is applied with all visible values selected, then any active filter on the\n // column is removed. This ensures the filter is removed in this situation.\n this.valueModel.selectAllMatchingMiniFilter();\n }\n var result = _super.prototype.applyModel.call(this, source);\n // keep appliedModelKeys in sync with the applied model\n var appliedModel = this.getModel();\n if (appliedModel) {\n this.appliedModelKeys = new Set();\n appliedModel.values.forEach(function (key) {\n _this.appliedModelKeys.add(_this.caseFormat(key));\n });\n }\n else {\n this.appliedModelKeys = null;\n }\n this.noAppliedModelKeys = (appliedModel === null || appliedModel === void 0 ? void 0 : appliedModel.values.length) === 0;\n return result;\n };\n SetFilter.prototype.isModelValid = function (model) {\n return this.setFilterParams && this.setFilterParams.excelMode ? model == null || model.values.length > 0 : true;\n };\n SetFilter.prototype.doesFilterPass = function (params) {\n var _this = this;\n if (!this.setFilterParams || !this.valueModel || !this.appliedModelKeys) {\n return true;\n }\n // if nothing selected, don't need to check value\n if (this.noAppliedModelKeys) {\n return false;\n }\n var node = params.node, data = params.data;\n if (this.treeDataTreeList) {\n return this.doesFilterPassForTreeData(node, data);\n }\n if (this.groupingTreeList) {\n return this.doesFilterPassForGrouping(node, data);\n }\n var value = this.getValueFromNode(node, data);\n if (this.convertValuesToStrings) {\n // for backwards compatibility - keeping separate as it will eventually be removed\n return this.doesFilterPassForConvertValuesToString(node, value);\n }\n if (value != null && Array.isArray(value)) {\n if (value.length === 0) {\n return this.appliedModelKeys.has(null);\n }\n return value.some(function (v) { return _this.isInAppliedModel(_this.createKey(v, node)); });\n }\n return this.isInAppliedModel(this.createKey(value, node));\n };\n SetFilter.prototype.doesFilterPassForConvertValuesToString = function (node, value) {\n var _this = this;\n var key = this.createKey(value, node);\n if (key != null && Array.isArray(key)) {\n if (key.length === 0) {\n return this.appliedModelKeys.has(null);\n }\n return key.some(function (v) { return _this.isInAppliedModel(v); });\n }\n return this.isInAppliedModel(key);\n };\n SetFilter.prototype.doesFilterPassForTreeData = function (node, data) {\n var _a;\n if ((_a = node.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length) {\n // only perform checking on leaves. The core filtering logic for tree data won't work properly otherwise\n return false;\n }\n return this.isInAppliedModel(this.createKey(this.checkMakeNullDataPath(this.getDataPath(data))));\n };\n SetFilter.prototype.doesFilterPassForGrouping = function (node, data) {\n var _this = this;\n var dataPath = this.columnModel.getRowGroupColumns().map(function (groupCol) { return _this.valueService.getKeyForNode(groupCol, node); });\n dataPath.push(this.getValueFromNode(node, data));\n return this.isInAppliedModel(this.createKey(this.checkMakeNullDataPath(dataPath)));\n };\n SetFilter.prototype.checkMakeNullDataPath = function (dataPath) {\n if (dataPath) {\n dataPath = dataPath.map(function (treeKey) { return _.toStringOrNull(_.makeNull(treeKey)); });\n }\n if (dataPath === null || dataPath === void 0 ? void 0 : dataPath.some(function (treeKey) { return treeKey == null; })) {\n return null;\n }\n return dataPath;\n };\n SetFilter.prototype.isInAppliedModel = function (key) {\n return this.appliedModelKeys.has(this.caseFormat(key));\n };\n SetFilter.prototype.getValueFromNode = function (node, data) {\n var _a = this.setFilterParams, valueGetter = _a.valueGetter, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;\n return valueGetter({\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n data: data,\n getValue: function (field) { return data[field]; },\n node: node,\n });\n };\n SetFilter.prototype.getKeyCreatorParams = function (value, node) {\n if (node === void 0) { node = null; }\n return {\n value: value,\n colDef: this.setFilterParams.colDef,\n column: this.setFilterParams.column,\n node: node,\n data: node === null || node === void 0 ? void 0 : node.data,\n api: this.setFilterParams.api,\n columnApi: this.setFilterParams.columnApi,\n context: this.setFilterParams.context\n };\n };\n SetFilter.prototype.onNewRowsLoaded = function () {\n if (!this.isValuesTakenFromGrid()) {\n return;\n }\n this.syncAfterDataChange();\n };\n SetFilter.prototype.isValuesTakenFromGrid = function () {\n if (!this.valueModel) {\n return false;\n }\n var valuesType = this.valueModel.getValuesType();\n return valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n };\n //noinspection JSUnusedGlobalSymbols\n /**\n * Public method provided so the user can change the value of the filter once\n * the filter has been already started\n * @param values The values to use.\n */\n SetFilter.prototype.setFilterValues = function (values) {\n var _this = this;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n this.valueModel.overrideValues(values).then(function () {\n _this.refresh();\n _this.onUiChanged();\n });\n };\n //noinspection JSUnusedGlobalSymbols\n /**\n * Public method provided so the user can reset the values of the filter once that it has started.\n */\n SetFilter.prototype.resetFilterValues = function () {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n this.valueModel.setValuesType(SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES);\n this.syncAfterDataChange();\n };\n SetFilter.prototype.refreshFilterValues = function () {\n var _this = this;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n // the model is still being initialised\n if (!this.valueModel.isInitialised()) {\n return;\n }\n this.valueModel.refreshValues().then(function () {\n _this.refresh();\n _this.onUiChanged();\n });\n };\n SetFilter.prototype.onAnyFilterChanged = function () {\n var _this = this;\n // don't block the current action when updating the values for this filter\n setTimeout(function () {\n if (!_this.isAlive()) {\n return;\n }\n if (!_this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n _this.valueModel.refreshAfterAnyFilterChanged().then(function (refresh) {\n if (refresh) {\n _this.refresh();\n _this.showOrHideResults();\n }\n });\n }, 0);\n };\n SetFilter.prototype.onMiniFilterInput = function () {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!this.valueModel.setMiniFilter(this.eMiniFilter.getValue())) {\n return;\n }\n var _a = this.setFilterParams || {}, applyMiniFilterWhileTyping = _a.applyMiniFilterWhileTyping, readOnly = _a.readOnly;\n if (!readOnly && applyMiniFilterWhileTyping) {\n this.filterOnAllVisibleValues(false);\n }\n else {\n this.updateUiAfterMiniFilterChange();\n }\n };\n SetFilter.prototype.updateUiAfterMiniFilterChange = function () {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var _a = this.setFilterParams || {}, excelMode = _a.excelMode, readOnly = _a.readOnly;\n if (excelMode == null || !!readOnly) {\n this.refresh();\n }\n else if (this.valueModel.getMiniFilter() == null) {\n this.resetUiToActiveModel(this.getModel());\n }\n else {\n this.valueModel.selectAllMatchingMiniFilter(true);\n this.refresh();\n this.onUiChanged();\n }\n this.showOrHideResults();\n };\n SetFilter.prototype.showOrHideResults = function () {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var hideResults = this.valueModel.getMiniFilter() != null && this.valueModel.getDisplayedValueCount() < 1;\n _.setDisplayed(this.eNoMatches, hideResults);\n _.setDisplayed(this.eSetFilterList, !hideResults);\n };\n SetFilter.prototype.resetMiniFilter = function () {\n var _a;\n this.eMiniFilter.setValue(null, true);\n (_a = this.valueModel) === null || _a === void 0 ? void 0 : _a.setMiniFilter(null);\n };\n SetFilter.prototype.resetUiToActiveModel = function (currentModel, afterUiUpdatedFunc) {\n var _this = this;\n // override the default behaviour as we don't always want to clear the mini filter\n this.setModelAndRefresh(currentModel == null ? null : currentModel.values).then(function () {\n _this.onUiChanged(false, 'prevent');\n afterUiUpdatedFunc === null || afterUiUpdatedFunc === void 0 ? void 0 : afterUiUpdatedFunc();\n });\n };\n SetFilter.prototype.handleCancelEnd = function (e) {\n this.setMiniFilter(null);\n _super.prototype.handleCancelEnd.call(this, e);\n };\n SetFilter.prototype.onMiniFilterKeyPress = function (e) {\n var _a = this.setFilterParams || {}, excelMode = _a.excelMode, readOnly = _a.readOnly;\n if (e.key === KeyCode.ENTER && !excelMode && !readOnly) {\n this.filterOnAllVisibleValues();\n }\n };\n SetFilter.prototype.filterOnAllVisibleValues = function (applyImmediately) {\n if (applyImmediately === void 0) { applyImmediately = true; }\n var readOnly = (this.setFilterParams || {}).readOnly;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!!readOnly) {\n throw new Error('Unable to filter in readOnly mode.');\n }\n this.valueModel.selectAllMatchingMiniFilter(true);\n this.refresh();\n this.onUiChanged(false, applyImmediately ? 'immediately' : 'debounce');\n this.showOrHideResults();\n };\n SetFilter.prototype.focusRowIfAlive = function (rowIndex) {\n var _this = this;\n if (rowIndex == null) {\n return;\n }\n window.setTimeout(function () {\n if (!_this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n if (_this.isAlive()) {\n _this.virtualList.focusRow(rowIndex);\n }\n }, 0);\n };\n SetFilter.prototype.onSelectAll = function (isSelected) {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n if (isSelected) {\n this.valueModel.selectAllMatchingMiniFilter();\n }\n else {\n this.valueModel.deselectAllMatchingMiniFilter();\n }\n this.refreshAfterSelection();\n };\n SetFilter.prototype.onGroupItemSelected = function (item, isSelected) {\n var _this = this;\n var recursiveGroupSelection = function (i) {\n if (i.children) {\n i.children.forEach(function (childItem) { return recursiveGroupSelection(childItem); });\n }\n else {\n _this.selectItem(i.key, isSelected);\n }\n };\n recursiveGroupSelection(item);\n this.refreshAfterSelection();\n };\n SetFilter.prototype.onItemSelected = function (key, isSelected) {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n this.selectItem(key, isSelected);\n this.refreshAfterSelection();\n };\n SetFilter.prototype.selectItem = function (key, isSelected) {\n if (isSelected) {\n this.valueModel.selectKey(key);\n }\n else {\n this.valueModel.deselectKey(key);\n }\n };\n SetFilter.prototype.onExpandAll = function (item, isExpanded) {\n var recursiveExpansion = function (i) {\n if (i.filterPasses && i.available && i.children) {\n i.children.forEach(function (childItem) { return recursiveExpansion(childItem); });\n i.expanded = isExpanded;\n }\n };\n recursiveExpansion(item);\n this.refreshAfterExpansion();\n };\n SetFilter.prototype.onExpandedChanged = function (item, isExpanded) {\n item.expanded = isExpanded;\n this.refreshAfterExpansion();\n };\n SetFilter.prototype.refreshAfterExpansion = function () {\n var focusedRow = this.virtualList.getLastFocusedRow();\n this.valueModel.updateDisplayedValues('expansion');\n this.refresh();\n this.focusRowIfAlive(focusedRow);\n };\n SetFilter.prototype.refreshAfterSelection = function () {\n var focusedRow = this.virtualList.getLastFocusedRow();\n this.refresh();\n this.onUiChanged();\n this.focusRowIfAlive(focusedRow);\n };\n SetFilter.prototype.setMiniFilter = function (newMiniFilter) {\n this.eMiniFilter.setValue(newMiniFilter);\n this.onMiniFilterInput();\n };\n SetFilter.prototype.getMiniFilter = function () {\n return this.valueModel ? this.valueModel.getMiniFilter() : null;\n };\n SetFilter.prototype.refresh = function () {\n if (!this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n this.virtualList.refresh(!this.hardRefreshVirtualList);\n if (this.hardRefreshVirtualList) {\n this.hardRefreshVirtualList = false;\n }\n };\n SetFilter.prototype.getFilterKeys = function () {\n return this.valueModel ? this.valueModel.getKeys() : [];\n };\n SetFilter.prototype.getFilterValues = function () {\n return this.valueModel ? this.valueModel.getValues() : [];\n };\n SetFilter.prototype.getValues = function () {\n return this.getFilterKeys();\n };\n SetFilter.prototype.refreshVirtualList = function () {\n if (this.setFilterParams && this.setFilterParams.refreshValuesOnOpen) {\n this.refreshFilterValues();\n }\n else {\n this.refresh();\n }\n };\n SetFilter.prototype.translateForSetFilter = function (key) {\n var translate = this.localeService.getLocaleTextFunc();\n return translate(key, DEFAULT_LOCALE_TEXT[key]);\n };\n SetFilter.prototype.isSelectAllSelected = function () {\n if (!this.setFilterParams || !this.valueModel) {\n return false;\n }\n if (!this.setFilterParams.defaultToNothingSelected) {\n // everything selected by default\n if (this.valueModel.hasSelections() && this.valueModel.isNothingVisibleSelected()) {\n return false;\n }\n if (this.valueModel.isEverythingVisibleSelected()) {\n return true;\n }\n }\n else {\n // nothing selected by default\n if (this.valueModel.hasSelections() && this.valueModel.isEverythingVisibleSelected()) {\n return true;\n }\n if (this.valueModel.isNothingVisibleSelected()) {\n return false;\n }\n }\n // returning `undefined` means the checkbox status is indeterminate.\n return undefined;\n };\n SetFilter.prototype.areAllChildrenSelected = function (item) {\n var _this = this;\n var recursiveChildSelectionCheck = function (i) {\n if (i.children) {\n var someTrue_1 = false;\n var someFalse_1 = false;\n var mixed = i.children.some(function (child) {\n if (!child.filterPasses || !child.available) {\n return false;\n }\n var childSelected = recursiveChildSelectionCheck(child);\n if (childSelected === undefined) {\n return true;\n }\n if (childSelected) {\n someTrue_1 = true;\n }\n else {\n someFalse_1 = true;\n }\n return someTrue_1 && someFalse_1;\n });\n // returning `undefined` means the checkbox status is indeterminate.\n // if not mixed and some true, all must be true\n return mixed ? undefined : someTrue_1;\n }\n else {\n return _this.valueModel.isKeySelected(i.key);\n }\n };\n if (!this.setFilterParams.defaultToNothingSelected) {\n // everything selected by default\n return recursiveChildSelectionCheck(item);\n }\n else {\n // nothing selected by default\n return this.valueModel.hasSelections() && recursiveChildSelectionCheck(item);\n }\n };\n SetFilter.prototype.destroy = function () {\n if (this.virtualList != null) {\n this.virtualList.destroy();\n this.virtualList = null;\n }\n _super.prototype.destroy.call(this);\n };\n SetFilter.prototype.caseFormat = function (valueToFormat) {\n if (valueToFormat == null || typeof valueToFormat !== 'string') {\n return valueToFormat;\n }\n return this.caseSensitive ? valueToFormat : valueToFormat.toUpperCase();\n };\n SetFilter.prototype.resetExpansion = function () {\n var _a, _b;\n if (!((_a = this.setFilterParams) === null || _a === void 0 ? void 0 : _a.treeList)) {\n return;\n }\n var selectAllItem = (_b = this.valueModel) === null || _b === void 0 ? void 0 : _b.getSelectAllItem();\n if (this.isSetFilterModelTreeItem(selectAllItem)) {\n var recursiveCollapse_1 = function (i) {\n if (i.children) {\n i.children.forEach(function (childItem) { return recursiveCollapse_1(childItem); });\n i.expanded = false;\n }\n };\n recursiveCollapse_1(selectAllItem);\n this.valueModel.updateDisplayedValues('expansion');\n }\n };\n SetFilter.prototype.getModelAsString = function (model) {\n return this.filterModelFormatter.getModelAsString(model, this);\n };\n SetFilter.prototype.getPositionableElement = function () {\n return this.eSetFilterList;\n };\n __decorate$c([\n RefSelector('eMiniFilter')\n ], SetFilter.prototype, \"eMiniFilter\", void 0);\n __decorate$c([\n RefSelector('eFilterLoading')\n ], SetFilter.prototype, \"eFilterLoading\", void 0);\n __decorate$c([\n RefSelector('eSetFilterList')\n ], SetFilter.prototype, \"eSetFilterList\", void 0);\n __decorate$c([\n RefSelector('eFilterNoMatches')\n ], SetFilter.prototype, \"eNoMatches\", void 0);\n __decorate$c([\n Autowired('valueFormatterService')\n ], SetFilter.prototype, \"valueFormatterService\", void 0);\n __decorate$c([\n Autowired('columnModel')\n ], SetFilter.prototype, \"columnModel\", void 0);\n __decorate$c([\n Autowired('valueService')\n ], SetFilter.prototype, \"valueService\", void 0);\n return SetFilter;\n}(ProvidedFilter));\nvar ModelWrapper = /** @class */ (function () {\n function ModelWrapper(model) {\n this.model = model;\n }\n ModelWrapper.prototype.getRowCount = function () {\n return this.model.getDisplayedValueCount();\n };\n ModelWrapper.prototype.getRow = function (index) {\n return this.model.getDisplayedItem(index);\n };\n ModelWrapper.prototype.isRowSelected = function (index) {\n return this.model.isKeySelected(this.getRow(index));\n };\n ModelWrapper.prototype.areRowsEqual = function (oldRow, newRow) {\n return oldRow === newRow;\n };\n return ModelWrapper;\n}());\nvar ModelWrapperWithSelectAll = /** @class */ (function () {\n function ModelWrapperWithSelectAll(model, isSelectAllSelected) {\n this.model = model;\n this.isSelectAllSelected = isSelectAllSelected;\n }\n ModelWrapperWithSelectAll.prototype.getRowCount = function () {\n return this.model.getDisplayedValueCount() + 1;\n };\n ModelWrapperWithSelectAll.prototype.getRow = function (index) {\n return index === 0 ? this.model.getSelectAllItem() : this.model.getDisplayedItem(index - 1);\n };\n ModelWrapperWithSelectAll.prototype.isRowSelected = function (index) {\n return index === 0 ? this.isSelectAllSelected() : this.model.isKeySelected(this.getRow(index));\n };\n ModelWrapperWithSelectAll.prototype.areRowsEqual = function (oldRow, newRow) {\n return oldRow === newRow;\n };\n return ModelWrapperWithSelectAll;\n}());\n// isRowSelected is used by VirtualList to add aria tags for flat lists. We want to suppress this when using trees\nvar TreeModelWrapper = /** @class */ (function () {\n function TreeModelWrapper(model) {\n this.model = model;\n }\n TreeModelWrapper.prototype.getRowCount = function () {\n return this.model.getRowCount();\n };\n TreeModelWrapper.prototype.getRow = function (index) {\n return this.model.getRow(index);\n };\n TreeModelWrapper.prototype.areRowsEqual = function (oldRow, newRow) {\n if (oldRow == null && newRow == null) {\n return true;\n }\n return oldRow != null && newRow != null && oldRow.treeKey === newRow.treeKey && oldRow.depth === newRow.depth;\n };\n return TreeModelWrapper;\n}());\n\nvar __extends$g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetFloatingFilterComp = /** @class */ (function (_super) {\n __extends$g(SetFloatingFilterComp, _super);\n function SetFloatingFilterComp() {\n var _this = _super.call(this, /* html */ \"\\n <div class=\\\"ag-floating-filter-input\\\" role=\\\"presentation\\\">\\n <ag-input-text-field ref=\\\"eFloatingFilterText\\\"></ag-input-text-field>\\n </div>\") || this;\n _this.availableValuesListenerAdded = false;\n _this.filterModelFormatter = new SetFilterModelFormatter();\n return _this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n SetFloatingFilterComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n SetFloatingFilterComp.prototype.init = function (params) {\n var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n var translate = this.localeService.getLocaleTextFunc();\n this.eFloatingFilterText\n .setDisabled(true)\n .setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input'))\n .addGuiEventListener('click', function () { return params.showParentFilter(); });\n this.params = params;\n };\n SetFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n this.updateFloatingFilterText(parentModel);\n };\n SetFloatingFilterComp.prototype.parentSetFilterInstance = function (cb) {\n this.params.parentFilterInstance(function (filter) {\n if (!(filter instanceof SetFilter)) {\n throw new Error('AG Grid - SetFloatingFilter expects SetFilter as its parent');\n }\n cb(filter);\n });\n };\n SetFloatingFilterComp.prototype.addAvailableValuesListener = function () {\n var _this = this;\n this.parentSetFilterInstance(function (setFilter) {\n var setValueModel = setFilter.getValueModel();\n if (!setValueModel) {\n return;\n }\n // unlike other filters, what we show in the floating filter can be different, even\n // if another filter changes. this is due to how set filter restricts its values based\n // on selections in other filters, e.g. if you filter Language to English, then the set filter\n // on Country will only show English speaking countries. Thus the list of items to show\n // in the floating filter can change.\n _this.addManagedListener(setValueModel, SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED, function () { return _this.updateFloatingFilterText(); });\n });\n this.availableValuesListenerAdded = true;\n };\n SetFloatingFilterComp.prototype.updateFloatingFilterText = function (parentModel) {\n var _this = this;\n if (!this.availableValuesListenerAdded) {\n this.addAvailableValuesListener();\n }\n this.parentSetFilterInstance(function (setFilter) {\n _this.eFloatingFilterText.setValue(_this.filterModelFormatter.getModelAsString(parentModel, setFilter));\n });\n };\n __decorate$b([\n RefSelector('eFloatingFilterText')\n ], SetFloatingFilterComp.prototype, \"eFloatingFilterText\", void 0);\n __decorate$b([\n Autowired('columnModel')\n ], SetFloatingFilterComp.prototype, \"columnModel\", void 0);\n return SetFloatingFilterComp;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$3 = '29.3.5';\n\nvar SetFilterModule = {\n version: VERSION$3,\n moduleName: ModuleNames.SetFilterModule,\n beans: [],\n userComponents: [\n { componentName: 'agSetColumnFilter', componentClass: SetFilter },\n { componentName: 'agSetColumnFloatingFilter', componentClass: SetFloatingFilterComp },\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\nvar __extends$f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StatusBarService = /** @class */ (function (_super) {\n __extends$f(StatusBarService, _super);\n // tslint:disable-next-line\n function StatusBarService() {\n var _this = _super.call(this) || this;\n _this.allComponents = {};\n return _this;\n }\n StatusBarService.prototype.registerStatusPanel = function (key, component) {\n this.allComponents[key] = component;\n };\n StatusBarService.prototype.getStatusPanel = function (key) {\n return this.allComponents[key];\n };\n StatusBarService = __decorate$a([\n Bean('statusBarService')\n ], StatusBarService);\n return StatusBarService;\n}(BeanStub));\n\nvar __extends$e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StatusBar = /** @class */ (function (_super) {\n __extends$e(StatusBar, _super);\n function StatusBar() {\n return _super.call(this, StatusBar.TEMPLATE) || this;\n }\n StatusBar.prototype.postConstruct = function () {\n var _a;\n var statusPanels = (_a = this.gridOptionsService.get('statusBar')) === null || _a === void 0 ? void 0 : _a.statusPanels;\n if (statusPanels) {\n var leftStatusPanelComponents = statusPanels\n .filter(function (componentConfig) { return componentConfig.align === 'left'; });\n this.createAndRenderComponents(leftStatusPanelComponents, this.eStatusBarLeft);\n var centerStatusPanelComponents = statusPanels\n .filter(function (componentConfig) { return componentConfig.align === 'center'; });\n this.createAndRenderComponents(centerStatusPanelComponents, this.eStatusBarCenter);\n var rightStatusPanelComponents = statusPanels\n .filter(function (componentConfig) { return (!componentConfig.align || componentConfig.align === 'right'); });\n this.createAndRenderComponents(rightStatusPanelComponents, this.eStatusBarRight);\n }\n else {\n this.setDisplayed(false);\n }\n };\n StatusBar.prototype.createAndRenderComponents = function (statusBarComponents, ePanelComponent) {\n var _this = this;\n var componentDetails = [];\n statusBarComponents.forEach(function (componentConfig) {\n var params = {};\n var compDetails = _this.userComponentFactory.getStatusPanelCompDetails(componentConfig, params);\n var promise = compDetails.newAgStackInstance();\n if (!promise) {\n return;\n }\n componentDetails.push({\n // default to the component name if no key supplied\n key: componentConfig.key || componentConfig.statusPanel,\n promise: promise\n });\n });\n AgPromise.all(componentDetails.map(function (details) { return details.promise; }))\n .then(function () {\n componentDetails.forEach(function (componentDetail) {\n componentDetail.promise.then(function (component) {\n var destroyFunc = function () {\n _this.getContext().destroyBean(component);\n };\n if (_this.isAlive()) {\n _this.statusBarService.registerStatusPanel(componentDetail.key, component);\n ePanelComponent.appendChild(component.getGui());\n _this.addDestroyFunc(destroyFunc);\n }\n else {\n destroyFunc();\n }\n });\n });\n });\n };\n StatusBar.TEMPLATE = \"<div class=\\\"ag-status-bar\\\">\\n <div ref=\\\"eStatusBarLeft\\\" class=\\\"ag-status-bar-left\\\" role=\\\"status\\\"></div>\\n <div ref=\\\"eStatusBarCenter\\\" class=\\\"ag-status-bar-center\\\" role=\\\"status\\\"></div>\\n <div ref=\\\"eStatusBarRight\\\" class=\\\"ag-status-bar-right\\\" role=\\\"status\\\"></div>\\n </div>\";\n __decorate$9([\n Autowired('userComponentFactory')\n ], StatusBar.prototype, \"userComponentFactory\", void 0);\n __decorate$9([\n Autowired('statusBarService')\n ], StatusBar.prototype, \"statusBarService\", void 0);\n __decorate$9([\n RefSelector('eStatusBarLeft')\n ], StatusBar.prototype, \"eStatusBarLeft\", void 0);\n __decorate$9([\n RefSelector('eStatusBarCenter')\n ], StatusBar.prototype, \"eStatusBarCenter\", void 0);\n __decorate$9([\n RefSelector('eStatusBarRight')\n ], StatusBar.prototype, \"eStatusBarRight\", void 0);\n __decorate$9([\n PostConstruct\n ], StatusBar.prototype, \"postConstruct\", null);\n return StatusBar;\n}(Component));\n\nvar __extends$d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NameValueComp = /** @class */ (function (_super) {\n __extends$d(NameValueComp, _super);\n function NameValueComp() {\n return _super.call(this, NameValueComp.TEMPLATE) || this;\n }\n NameValueComp.prototype.setLabel = function (key, defaultValue) {\n // we want to hide until the first value comes in\n this.setDisplayed(false);\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n this.eLabel.innerHTML = localeTextFunc(key, defaultValue);\n };\n NameValueComp.prototype.setValue = function (value) {\n this.eValue.innerHTML = value;\n };\n NameValueComp.TEMPLATE = \"<div class=\\\"ag-status-name-value\\\">\\n <span ref=\\\"eLabel\\\"></span>: \\n <span ref=\\\"eValue\\\" class=\\\"ag-status-name-value-value\\\"></span>\\n </div>\";\n __decorate$8([\n RefSelector('eLabel')\n ], NameValueComp.prototype, \"eLabel\", void 0);\n __decorate$8([\n RefSelector('eValue')\n ], NameValueComp.prototype, \"eValue\", void 0);\n return NameValueComp;\n}(Component));\n\nvar __extends$c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TotalAndFilteredRowsComp = /** @class */ (function (_super) {\n __extends$c(TotalAndFilteredRowsComp, _super);\n function TotalAndFilteredRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TotalAndFilteredRowsComp.prototype.postConstruct = function () {\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"AG Grid: agTotalAndFilteredRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.setLabel('totalAndFilteredRows', 'Rows');\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-total-and-filtered-row-count');\n this.setDisplayed(true);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onDataChanged.bind(this));\n this.onDataChanged();\n };\n TotalAndFilteredRowsComp.prototype.onDataChanged = function () {\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n var rowCount = _.formatNumberCommas(this.getFilteredRowCountValue(), thousandSeparator, decimalSeparator);\n var totalRowCount = _.formatNumberCommas(this.getTotalRowCount(), thousandSeparator, decimalSeparator);\n if (rowCount === totalRowCount) {\n this.setValue(rowCount);\n }\n else {\n var localeTextFunc_1 = this.localeService.getLocaleTextFunc();\n this.setValue(rowCount + \" \" + localeTextFunc_1('of', 'of') + \" \" + totalRowCount);\n }\n };\n TotalAndFilteredRowsComp.prototype.getFilteredRowCountValue = function () {\n var filteredRowCount = 0;\n this.gridApi.forEachNodeAfterFilter(function (node) {\n if (!node.group) {\n filteredRowCount++;\n }\n });\n return filteredRowCount;\n };\n TotalAndFilteredRowsComp.prototype.getTotalRowCount = function () {\n var totalRowCount = 0;\n this.gridApi.forEachNode(function (node) {\n if (!node.group) {\n totalRowCount++;\n }\n });\n return totalRowCount;\n };\n TotalAndFilteredRowsComp.prototype.init = function () { };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n TotalAndFilteredRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate$7([\n Autowired('gridApi')\n ], TotalAndFilteredRowsComp.prototype, \"gridApi\", void 0);\n __decorate$7([\n PostConstruct\n ], TotalAndFilteredRowsComp.prototype, \"postConstruct\", null);\n return TotalAndFilteredRowsComp;\n}(NameValueComp));\n\nvar __extends$b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilteredRowsComp = /** @class */ (function (_super) {\n __extends$b(FilteredRowsComp, _super);\n function FilteredRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilteredRowsComp.prototype.postConstruct = function () {\n this.setLabel('filteredRows', 'Filtered');\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"AG Grid: agFilteredRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-filtered-row-count');\n this.setDisplayed(true);\n var listener = this.onDataChanged.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, listener);\n listener();\n };\n FilteredRowsComp.prototype.onDataChanged = function () {\n var totalRowCountValue = this.getTotalRowCountValue();\n var filteredRowCountValue = this.getFilteredRowCountValue();\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(filteredRowCountValue, thousandSeparator, decimalSeparator));\n this.setDisplayed(totalRowCountValue !== filteredRowCountValue);\n };\n FilteredRowsComp.prototype.getTotalRowCountValue = function () {\n var totalRowCount = 0;\n this.gridApi.forEachNode(function (node) { return totalRowCount += 1; });\n return totalRowCount;\n };\n FilteredRowsComp.prototype.getFilteredRowCountValue = function () {\n var filteredRowCount = 0;\n this.gridApi.forEachNodeAfterFilter(function (node) {\n if (!node.group) {\n filteredRowCount += 1;\n }\n });\n return filteredRowCount;\n };\n FilteredRowsComp.prototype.init = function () { };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n FilteredRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate$6([\n Autowired('gridApi')\n ], FilteredRowsComp.prototype, \"gridApi\", void 0);\n __decorate$6([\n PostConstruct\n ], FilteredRowsComp.prototype, \"postConstruct\", null);\n return FilteredRowsComp;\n}(NameValueComp));\n\nvar __extends$a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TotalRowsComp = /** @class */ (function (_super) {\n __extends$a(TotalRowsComp, _super);\n function TotalRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TotalRowsComp.prototype.postConstruct = function () {\n this.setLabel('totalRows', 'Total Rows');\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"AG Grid: agTotalRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-total-row-count');\n this.setDisplayed(true);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onDataChanged.bind(this));\n this.onDataChanged();\n };\n TotalRowsComp.prototype.onDataChanged = function () {\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(this.getRowCountValue(), thousandSeparator, decimalSeparator));\n };\n TotalRowsComp.prototype.getRowCountValue = function () {\n var totalRowCount = 0;\n this.gridApi.forEachLeafNode(function (node) { return totalRowCount += 1; });\n return totalRowCount;\n };\n TotalRowsComp.prototype.init = function () {\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n TotalRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate$5([\n Autowired('gridApi')\n ], TotalRowsComp.prototype, \"gridApi\", void 0);\n __decorate$5([\n PostConstruct\n ], TotalRowsComp.prototype, \"postConstruct\", null);\n return TotalRowsComp;\n}(NameValueComp));\n\nvar __extends$9 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectedRowsComp = /** @class */ (function (_super) {\n __extends$9(SelectedRowsComp, _super);\n function SelectedRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectedRowsComp.prototype.postConstruct = function () {\n if (!this.isValidRowModel()) {\n console.warn(\"AG Grid: agSelectedRowCountComponent should only be used with the client and server side row model.\");\n return;\n }\n this.setLabel('selectedRows', 'Selected');\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-selected-row-count');\n this.onRowSelectionChanged();\n var eventListener = this.onRowSelectionChanged.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, eventListener);\n this.addManagedListener(this.eventService, Events.EVENT_SELECTION_CHANGED, eventListener);\n };\n SelectedRowsComp.prototype.isValidRowModel = function () {\n // this component is only really useful with client or server side rowmodels\n var rowModelType = this.gridApi.getModel().getType();\n return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n };\n SelectedRowsComp.prototype.onRowSelectionChanged = function () {\n var selectedRowCount = this.selectionService.getSelectionCount();\n if (selectedRowCount < 0) {\n this.setValue('?');\n this.setDisplayed(true);\n return;\n }\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(selectedRowCount, thousandSeparator, decimalSeparator));\n this.setDisplayed(selectedRowCount > 0);\n };\n SelectedRowsComp.prototype.init = function () {\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n SelectedRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate$4([\n Autowired('gridApi')\n ], SelectedRowsComp.prototype, \"gridApi\", void 0);\n __decorate$4([\n Autowired('selectionService')\n ], SelectedRowsComp.prototype, \"selectionService\", void 0);\n __decorate$4([\n PostConstruct\n ], SelectedRowsComp.prototype, \"postConstruct\", null);\n return SelectedRowsComp;\n}(NameValueComp));\n\nvar __extends$8 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AggregationComp = /** @class */ (function (_super) {\n __extends$8(AggregationComp, _super);\n function AggregationComp() {\n return _super.call(this, AggregationComp.TEMPLATE) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n AggregationComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n AggregationComp.prototype.postConstruct = function () {\n if (!this.isValidRowModel()) {\n console.warn(\"AG Grid: agAggregationComponent should only be used with the client and server side row model.\");\n return;\n }\n this.avgAggregationComp.setLabel('avg', 'Average');\n this.countAggregationComp.setLabel('count', 'Count');\n this.minAggregationComp.setLabel('min', 'Min');\n this.maxAggregationComp.setLabel('max', 'Max');\n this.sumAggregationComp.setLabel('sum', 'Sum');\n this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, this.onRangeSelectionChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onRangeSelectionChanged.bind(this));\n };\n AggregationComp.prototype.isValidRowModel = function () {\n // this component is only really useful with client or server side rowmodels\n var rowModelType = this.gridApi.getModel().getType();\n return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n };\n AggregationComp.prototype.init = function () {\n };\n AggregationComp.prototype.setAggregationComponentValue = function (aggFuncName, value, visible) {\n var statusBarValueComponent = this.getAggregationValueComponent(aggFuncName);\n if (_.exists(statusBarValueComponent) && statusBarValueComponent) {\n var localeTextFunc = this.localeService.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n statusBarValueComponent.setValue(_.formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator));\n statusBarValueComponent.setDisplayed(visible);\n }\n };\n AggregationComp.prototype.getAggregationValueComponent = function (aggFuncName) {\n // converts user supplied agg name to our reference - eg: sum => sumAggregationComp\n var refComponentName = aggFuncName + \"AggregationComp\";\n // if the user has specified the agAggregationPanelComp but no aggFuncs we show the all\n // if the user has specified the agAggregationPanelComp and aggFuncs, then we only show the aggFuncs listed\n var statusBarValueComponent = null;\n var statusBar = this.gridOptionsService.get('statusBar');\n var aggregationPanelConfig = _.exists(statusBar) && statusBar ? statusBar.statusPanels.find(function (panel) { return panel.statusPanel === 'agAggregationComponent'; }) : null;\n if (_.exists(aggregationPanelConfig) && aggregationPanelConfig) {\n // a little defensive here - if no statusPanelParams show it, if componentParams we also expect aggFuncs\n if (!_.exists(aggregationPanelConfig.statusPanelParams) ||\n (_.exists(aggregationPanelConfig.statusPanelParams) &&\n _.exists(aggregationPanelConfig.statusPanelParams.aggFuncs) &&\n _.exists(aggregationPanelConfig.statusPanelParams.aggFuncs.find(function (func) { return func === aggFuncName; })))) {\n statusBarValueComponent = this[refComponentName];\n }\n }\n else {\n // components not specified - assume we can show this component\n statusBarValueComponent = this[refComponentName];\n }\n // either we can't find it (which would indicate a typo or similar user side), or the user has deliberately\n // not listed the component in aggFuncs\n return statusBarValueComponent;\n };\n AggregationComp.prototype.onRangeSelectionChanged = function () {\n var _this = this;\n var cellRanges = this.rangeService ? this.rangeService.getCellRanges() : undefined;\n var sum = 0;\n var count = 0;\n var numberCount = 0;\n var min = null;\n var max = null;\n var cellsSoFar = {};\n if (cellRanges && !_.missingOrEmpty(cellRanges)) {\n cellRanges.forEach(function (cellRange) {\n var currentRow = _this.rangeService.getRangeStartRow(cellRange);\n var lastRow = _this.rangeService.getRangeEndRow(cellRange);\n while (true) {\n var finishedAllRows = _.missing(currentRow) || !currentRow || _this.rowPositionUtils.before(lastRow, currentRow);\n if (finishedAllRows || !currentRow || !cellRange.columns) {\n break;\n }\n cellRange.columns.forEach(function (col) {\n if (currentRow === null) {\n return;\n }\n // we only want to include each cell once, in case a cell is in multiple ranges\n var cellId = _this.cellPositionUtils.createId({\n rowPinned: currentRow.rowPinned,\n column: col,\n rowIndex: currentRow.rowIndex\n });\n if (cellsSoFar[cellId]) {\n return;\n }\n cellsSoFar[cellId] = true;\n var rowNode = _this.rowRenderer.getRowNode(currentRow);\n if (_.missing(rowNode)) {\n return;\n }\n var value = _this.valueService.getValue(col, rowNode);\n // if empty cell, skip it, doesn't impact count or anything\n if (_.missing(value) || value === '') {\n return;\n }\n // see if value is wrapped, can happen when doing count() or avg() functions\n if (typeof value === 'object' && 'value' in value) {\n value = value.value;\n }\n if (typeof value === 'string') {\n value = Number(value);\n }\n if (typeof value === 'number' && !isNaN(value)) {\n sum += value;\n if (max === null || value > max) {\n max = value;\n }\n if (min === null || value < min) {\n min = value;\n }\n numberCount++;\n }\n count++;\n });\n currentRow = _this.cellNavigationService.getRowBelow(currentRow);\n }\n });\n }\n var gotResult = count > 1;\n var gotNumberResult = numberCount > 1;\n // we show count even if no numbers\n this.setAggregationComponentValue('count', count, gotResult);\n // show if numbers found\n this.setAggregationComponentValue('sum', sum, gotNumberResult);\n this.setAggregationComponentValue('min', min, gotNumberResult);\n this.setAggregationComponentValue('max', max, gotNumberResult);\n this.setAggregationComponentValue('avg', (sum / numberCount), gotNumberResult);\n };\n AggregationComp.TEMPLATE = \"<div class=\\\"ag-status-panel ag-status-panel-aggregations\\\">\\n <ag-name-value ref=\\\"avgAggregationComp\\\"></ag-name-value>\\n <ag-name-value ref=\\\"countAggregationComp\\\"></ag-name-value>\\n <ag-name-value ref=\\\"minAggregationComp\\\"></ag-name-value>\\n <ag-name-value ref=\\\"maxAggregationComp\\\"></ag-name-value>\\n <ag-name-value ref=\\\"sumAggregationComp\\\"></ag-name-value>\\n </div>\";\n __decorate$3([\n Optional('rangeService')\n ], AggregationComp.prototype, \"rangeService\", void 0);\n __decorate$3([\n Autowired('valueService')\n ], AggregationComp.prototype, \"valueService\", void 0);\n __decorate$3([\n Autowired('cellNavigationService')\n ], AggregationComp.prototype, \"cellNavigationService\", void 0);\n __decorate$3([\n Autowired('rowRenderer')\n ], AggregationComp.prototype, \"rowRenderer\", void 0);\n __decorate$3([\n Autowired('gridApi')\n ], AggregationComp.prototype, \"gridApi\", void 0);\n __decorate$3([\n Autowired('cellPositionUtils')\n ], AggregationComp.prototype, \"cellPositionUtils\", void 0);\n __decorate$3([\n Autowired('rowPositionUtils')\n ], AggregationComp.prototype, \"rowPositionUtils\", void 0);\n __decorate$3([\n RefSelector('sumAggregationComp')\n ], AggregationComp.prototype, \"sumAggregationComp\", void 0);\n __decorate$3([\n RefSelector('countAggregationComp')\n ], AggregationComp.prototype, \"countAggregationComp\", void 0);\n __decorate$3([\n RefSelector('minAggregationComp')\n ], AggregationComp.prototype, \"minAggregationComp\", void 0);\n __decorate$3([\n RefSelector('maxAggregationComp')\n ], AggregationComp.prototype, \"maxAggregationComp\", void 0);\n __decorate$3([\n RefSelector('avgAggregationComp')\n ], AggregationComp.prototype, \"avgAggregationComp\", void 0);\n __decorate$3([\n PostConstruct\n ], AggregationComp.prototype, \"postConstruct\", null);\n return AggregationComp;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$2 = '29.3.5';\n\nvar StatusBarModule = {\n version: VERSION$2,\n moduleName: ModuleNames.StatusBarModule,\n beans: [StatusBarService],\n agStackComponents: [\n { componentName: 'AgStatusBar', componentClass: StatusBar },\n { componentName: 'AgNameValue', componentClass: NameValueComp },\n ],\n userComponents: [\n { componentName: 'agAggregationComponent', componentClass: AggregationComp },\n { componentName: 'agSelectedRowCountComponent', componentClass: SelectedRowsComp },\n { componentName: 'agTotalRowCountComponent', componentClass: TotalRowsComp },\n { componentName: 'agFilteredRowCountComponent', componentClass: FilteredRowsComp },\n { componentName: 'agTotalAndFilteredRowCountComponent', componentClass: TotalAndFilteredRowsComp }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$1 = '29.3.5';\n\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE = 5;\nvar DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE = 5;\nvar ViewportRowModel = /** @class */ (function (_super) {\n __extends$7(ViewportRowModel, _super);\n function ViewportRowModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // rowRenderer tells us these\n _this.firstRow = -1;\n _this.lastRow = -1;\n // datasource tells us this\n _this.rowCount = -1;\n _this.rowNodesByIndex = {};\n return _this;\n }\n // we don't implement as lazy row heights is not supported in this row model\n ViewportRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) { return false; };\n ViewportRowModel.prototype.init = function () {\n this.rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n this.addManagedListener(this.eventService, Events.EVENT_VIEWPORT_CHANGED, this.onViewportChanged.bind(this));\n };\n ViewportRowModel.prototype.start = function () {\n if (this.gridOptionsService.get('viewportDatasource')) {\n this.setViewportDatasource(this.gridOptionsService.get('viewportDatasource'));\n }\n };\n ViewportRowModel.prototype.isLastRowIndexKnown = function () {\n return true;\n };\n ViewportRowModel.prototype.destroyDatasource = function () {\n if (!this.viewportDatasource) {\n return;\n }\n if (this.viewportDatasource.destroy) {\n this.viewportDatasource.destroy();\n }\n this.rowRenderer.datasourceChanged();\n this.firstRow = -1;\n this.lastRow = -1;\n };\n ViewportRowModel.prototype.getViewportRowModelPageSize = function () {\n return _.oneOrGreater(this.gridOptionsService.getNum('viewportRowModelPageSize'), DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE);\n };\n ViewportRowModel.prototype.getViewportRowModelBufferSize = function () {\n return _.zeroOrGreater(this.gridOptionsService.getNum('viewportRowModelBufferSize'), DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE);\n };\n ViewportRowModel.prototype.calculateFirstRow = function (firstRenderedRow) {\n var bufferSize = this.getViewportRowModelBufferSize();\n var pageSize = this.getViewportRowModelPageSize();\n var afterBuffer = firstRenderedRow - bufferSize;\n if (afterBuffer < 0) {\n return 0;\n }\n return Math.floor(afterBuffer / pageSize) * pageSize;\n };\n ViewportRowModel.prototype.calculateLastRow = function (lastRenderedRow) {\n if (lastRenderedRow === -1) {\n return lastRenderedRow;\n }\n var bufferSize = this.getViewportRowModelBufferSize();\n var pageSize = this.getViewportRowModelPageSize();\n var afterBuffer = lastRenderedRow + bufferSize;\n var result = Math.ceil(afterBuffer / pageSize) * pageSize;\n var lastRowIndex = this.rowCount - 1;\n return Math.min(result, lastRowIndex);\n };\n ViewportRowModel.prototype.onViewportChanged = function (event) {\n var newFirst = this.calculateFirstRow(event.firstRow);\n var newLast = this.calculateLastRow(event.lastRow);\n if (this.firstRow !== newFirst || this.lastRow !== newLast) {\n this.firstRow = newFirst;\n this.lastRow = newLast;\n this.purgeRowsNotInViewport();\n if (this.viewportDatasource) {\n this.viewportDatasource.setViewportRange(this.firstRow, this.lastRow);\n }\n }\n };\n ViewportRowModel.prototype.purgeRowsNotInViewport = function () {\n var _this = this;\n Object.keys(this.rowNodesByIndex).forEach(function (indexStr) {\n var index = parseInt(indexStr, 10);\n if (index < _this.firstRow || index > _this.lastRow) {\n if (_this.isRowFocused(index)) {\n return;\n }\n delete _this.rowNodesByIndex[index];\n }\n });\n };\n ViewportRowModel.prototype.isRowFocused = function (rowIndex) {\n var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n var hasFocus = focusedCell.rowIndex === rowIndex;\n return hasFocus;\n };\n ViewportRowModel.prototype.setViewportDatasource = function (viewportDatasource) {\n this.destroyDatasource();\n this.viewportDatasource = viewportDatasource;\n this.rowCount = -1;\n if (!viewportDatasource.init) {\n console.warn('AG Grid: viewport is missing init method.');\n }\n else {\n viewportDatasource.init({\n setRowCount: this.setRowCount.bind(this),\n setRowData: this.setRowData.bind(this),\n getRow: this.getRow.bind(this)\n });\n }\n };\n ViewportRowModel.prototype.getType = function () {\n return 'viewport';\n };\n ViewportRowModel.prototype.getRow = function (rowIndex) {\n if (!this.rowNodesByIndex[rowIndex]) {\n this.rowNodesByIndex[rowIndex] = this.createBlankRowNode(rowIndex);\n }\n return this.rowNodesByIndex[rowIndex];\n };\n ViewportRowModel.prototype.getRowNode = function (id) {\n var result;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n };\n ViewportRowModel.prototype.getRowCount = function () {\n return this.rowCount === -1 ? 0 : this.rowCount;\n };\n ViewportRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (this.rowHeight !== 0) { // avoid divide by zero error\n return Math.floor(pixel / this.rowHeight);\n }\n return 0;\n };\n ViewportRowModel.prototype.getRowBounds = function (index) {\n return {\n rowHeight: this.rowHeight,\n rowTop: this.rowHeight * index\n };\n };\n ViewportRowModel.prototype.getTopLevelRowCount = function () {\n return this.getRowCount();\n };\n ViewportRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n return topLevelIndex;\n };\n ViewportRowModel.prototype.isEmpty = function () {\n return this.rowCount > 0;\n };\n ViewportRowModel.prototype.isRowsToRender = function () {\n return this.rowCount > 0;\n };\n ViewportRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n var firstIndex = _.missing(firstInRange) ? 0 : firstInRange.rowIndex;\n var lastIndex = lastInRange.rowIndex;\n var firstNodeOutOfRange = firstIndex < this.firstRow || firstIndex > this.lastRow;\n var lastNodeOutOfRange = lastIndex < this.firstRow || lastIndex > this.lastRow;\n if (firstNodeOutOfRange || lastNodeOutOfRange) {\n return [];\n }\n var result = [];\n var startIndex = firstIndex <= lastIndex ? firstIndex : lastIndex;\n var endIndex = firstIndex <= lastIndex ? lastIndex : firstIndex;\n for (var i = startIndex; i <= endIndex; i++) {\n result.push(this.rowNodesByIndex[i]);\n }\n return result;\n };\n ViewportRowModel.prototype.forEachNode = function (callback) {\n var _this = this;\n var callbackCount = 0;\n Object.keys(this.rowNodesByIndex).forEach(function (indexStr) {\n var index = parseInt(indexStr, 10);\n var rowNode = _this.rowNodesByIndex[index];\n callback(rowNode, callbackCount);\n callbackCount++;\n });\n };\n ViewportRowModel.prototype.setRowData = function (rowData) {\n var _this = this;\n _.iterateObject(rowData, function (indexStr, dataItem) {\n var index = parseInt(indexStr, 10);\n // we should never keep rows that we didn't specifically ask for, this\n // guarantees the contract we have with the server.\n if (index >= _this.firstRow && index <= _this.lastRow) {\n var rowNode = _this.rowNodesByIndex[index];\n // the abnormal case is we requested a row even though the grid didn't need it\n // as a result of the paging and buffer (ie the row is off screen), in which\n // case we need to create a new node now\n if (_.missing(rowNode)) {\n rowNode = _this.createBlankRowNode(index);\n _this.rowNodesByIndex[index] = rowNode;\n }\n // now we deffo have a row node, so set in the details\n // if the grid already asked for this row (the normal case), then we would\n // of put a placeholder node in place.\n rowNode.setDataAndId(dataItem, index.toString());\n }\n });\n };\n ViewportRowModel.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = new RowNode(this.beans);\n rowNode.setRowHeight(this.rowHeight);\n rowNode.setRowTop(this.rowHeight * rowIndex);\n rowNode.setRowIndex(rowIndex);\n return rowNode;\n };\n ViewportRowModel.prototype.setRowCount = function (rowCount, keepRenderedRows) {\n if (keepRenderedRows === void 0) { keepRenderedRows = false; }\n if (rowCount === this.rowCount) {\n return;\n }\n this.rowCount = rowCount;\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n newData: false,\n newPage: false,\n keepRenderedRows: keepRenderedRows,\n animate: false\n };\n this.eventService.dispatchEvent(event);\n };\n ViewportRowModel.prototype.isRowPresent = function (rowNode) {\n var foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n };\n __decorate$2([\n Autowired('rowRenderer')\n ], ViewportRowModel.prototype, \"rowRenderer\", void 0);\n __decorate$2([\n Autowired('focusService')\n ], ViewportRowModel.prototype, \"focusService\", void 0);\n __decorate$2([\n Autowired('beans')\n ], ViewportRowModel.prototype, \"beans\", void 0);\n __decorate$2([\n PostConstruct\n ], ViewportRowModel.prototype, \"init\", null);\n __decorate$2([\n PreDestroy\n ], ViewportRowModel.prototype, \"destroyDatasource\", null);\n ViewportRowModel = __decorate$2([\n Bean('rowModel')\n ], ViewportRowModel);\n return ViewportRowModel;\n}(BeanStub));\n\nvar ViewportRowModelModule = {\n version: VERSION$1,\n moduleName: ModuleNames.ViewportRowModelModule,\n rowModel: 'viewport',\n beans: [ViewportRowModel],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\nvar defaultTooltipCss = \"\\n.ag-sparkline-tooltip-wrapper {\\n position: absolute;\\n user-select: none;\\n pointer-events: none;\\n}\\n\\n.ag-sparkline-tooltip {\\n position: relative;\\n font: 12px arial,sans-serif;\\n border-radius: 2px;\\n box-shadow: 0 1px 3px rgb(0 0 0 / 20%), 0 1px 1px rgb(0 0 0 / 14%);\\n line-height: 1.7em;\\n overflow: hidden;\\n white-space: nowrap;\\n z-index: 99999;\\n background-color: rgb(255, 255, 255);\\n color: rgba(0,0,0, 0.67);\\n}\\n\\n.ag-sparkline-tooltip-content {\\n padding: 0 7px;\\n opacity: 1;\\n}\\n\\n.ag-sparkline-tooltip-title {\\n padding-left: 7px;\\n opacity: 1;\\n}\\n\\n.ag-sparkline-tooltip-wrapper-hidden {\\n top: -10000px !important;\\n}\\n\\n.ag-sparkline-wrapper {\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n\";\n\nvar __values = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar extent$3 = extent$4, isNumber$3 = isNumber$4, isString = isString$1, isStringObject = isStringObject$1, isDate = isDate$1, createId = createId$1, Padding = Padding$1;\nvar LinearScale = LinearScale$1, BandScale$4 = BandScale$5, TimeScale = TimeScale$1;\n/**\n * Constants to declare the expected nominal zIndex for nodes in a sparkline rendering.\n */\nvar ZINDICIES;\n(function (ZINDICIES) {\n ZINDICIES[ZINDICIES[\"SERIES_FILL_ZINDEX\"] = 50] = \"SERIES_FILL_ZINDEX\";\n ZINDICIES[ZINDICIES[\"AXIS_LINE_ZINDEX\"] = 500] = \"AXIS_LINE_ZINDEX\";\n ZINDICIES[ZINDICIES[\"SERIES_STROKE_ZINDEX\"] = 1000] = \"SERIES_STROKE_ZINDEX\";\n ZINDICIES[ZINDICIES[\"SERIES_LABEL_ZINDEX\"] = 1500] = \"SERIES_LABEL_ZINDEX\";\n ZINDICIES[ZINDICIES[\"CROSSHAIR_ZINDEX\"] = 2000] = \"CROSSHAIR_ZINDEX\";\n ZINDICIES[ZINDICIES[\"SERIES_MARKERS_ZINDEX\"] = 2500] = \"SERIES_MARKERS_ZINDEX\";\n})(ZINDICIES || (ZINDICIES = {}));\nvar SparklineAxis = /** @class */ (function () {\n function SparklineAxis() {\n this.type = 'category';\n this.stroke = 'rgb(204, 214, 235)';\n this.strokeWidth = 1;\n }\n return SparklineAxis;\n}());\nvar Sparkline = /** @class */ (function () {\n function Sparkline() {\n this.id = createId(this);\n this.seriesRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n this._context = undefined;\n this._container = undefined;\n this._data = undefined;\n this.padding = new Padding(3);\n this.xKey = 'x';\n this.yKey = 'y';\n this.dataType = undefined;\n this.xData = [];\n this.yData = [];\n // Minimum y value in provided data.\n this.min = undefined;\n // Maximum y value in provided data.\n this.max = undefined;\n this.yScale = new LinearScale();\n this.axis = new SparklineAxis();\n this.highlightStyle = {\n size: 6,\n fill: 'yellow',\n stroke: 'silver',\n strokeWidth: 1,\n };\n this._width = 100;\n this._height = 100;\n this.smallestInterval = undefined;\n this.layoutId = 0;\n this.defaultDateFormatter = new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n });\n this._onMouseMove = this.onMouseMove.bind(this);\n this._onMouseOut = this.onMouseOut.bind(this);\n var root = new Group();\n this.rootGroup = root;\n var element = document.createElement('div');\n element.setAttribute('class', 'ag-sparkline-wrapper');\n var scene = new Scene({ document: document });\n this.scene = scene;\n this.canvasElement = scene.canvas.element;\n scene.root = root;\n scene.container = element;\n scene.resize(this.width, this.height);\n this.seriesRect.width = this.width;\n this.seriesRect.height = this.height;\n // one style element for tooltip styles per document\n if (Sparkline.tooltipDocuments.indexOf(document) === -1) {\n var styleElement = document.createElement('style');\n styleElement.innerHTML = defaultTooltipCss;\n document.head.insertBefore(styleElement, document.head.querySelector('style'));\n Sparkline.tooltipDocuments.push(document);\n }\n this.setupDomEventListeners(this.scene.canvas.element);\n }\n Object.defineProperty(Sparkline.prototype, \"context\", {\n get: function () {\n return this._context;\n },\n set: function (value) {\n if (this._context !== value) {\n this._context = value;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n set: function (value) {\n if (this._container !== value) {\n var parentNode = this.canvasElement.parentNode;\n if (parentNode != null) {\n parentNode.removeChild(this.canvasElement);\n }\n if (value) {\n value.appendChild(this.canvasElement);\n }\n this._container = value;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (value) {\n if (this._data !== value) {\n this._data = value;\n this.processData();\n if (this.mouseMoveEvent && this.highlightedDatum) {\n this.updateHitPoint(this.mouseMoveEvent);\n }\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.scene.resize(value, this.height);\n this.scheduleLayout();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.scene.resize(this.width, value);\n this.scheduleLayout();\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Generate node data from processed data.\n * Produce data joins.\n * Update selection's nodes using node data.\n */\n Sparkline.prototype.update = function () { };\n // Update y scale based on processed data.\n Sparkline.prototype.updateYScale = function () {\n this.updateYScaleRange();\n this.updateYScaleDomain();\n };\n // Update y scale domain based on processed data.\n Sparkline.prototype.updateYScaleDomain = function () { };\n // Update y scale range based on height and padding (seriesRect).\n Sparkline.prototype.updateYScaleRange = function () {\n var _a = this, yScale = _a.yScale, seriesRect = _a.seriesRect;\n yScale.range = [seriesRect.height, 0];\n };\n // Update x scale based on processed data.\n Sparkline.prototype.updateXScale = function () {\n var type = this.axis.type;\n this.xScale = this.getXScale(type);\n this.updateXScaleRange();\n this.updateXScaleDomain();\n };\n // Update x scale range based on width and padding (seriesRect).\n Sparkline.prototype.updateXScaleRange = function () {\n this.xScale.range = [0, this.seriesRect.width];\n };\n // Update x scale domain based on processed data and type of scale.\n Sparkline.prototype.updateXScaleDomain = function () {\n var _a = this, xData = _a.xData, xScale = _a.xScale;\n var xMinMax;\n if (xScale instanceof LinearScale || xScale instanceof TimeScale) {\n xMinMax = extent$3(xData);\n }\n this.xScale.domain = xMinMax ? xMinMax.slice() : xData;\n };\n /**\n * Return xScale instance based on the provided type or return a `BandScale` by default.\n * The default type is `category`.\n * @param type\n */\n Sparkline.prototype.getXScale = function (type) {\n if (type === void 0) { type = 'category'; }\n switch (type) {\n case 'number':\n return new LinearScale();\n case 'time':\n return new TimeScale();\n case 'category':\n default:\n return new BandScale$4();\n }\n };\n // Update axis line.\n Sparkline.prototype.updateAxisLine = function () { };\n // Update X and Y scales and the axis line.\n Sparkline.prototype.updateAxes = function () {\n this.updateYScale();\n this.updateXScale();\n this.updateAxisLine();\n };\n // Update horizontal and vertical crosshair lines.\n Sparkline.prototype.updateCrosshairs = function () {\n this.updateXCrosshairLine();\n this.updateYCrosshairLine();\n };\n // Using processed data, generate data that backs visible nodes.\n Sparkline.prototype.generateNodeData = function () {\n return [];\n };\n // Returns persisted node data associated with the sparkline's data.\n Sparkline.prototype.getNodeData = function () {\n return [];\n };\n // Update the selection's nodes.\n Sparkline.prototype.updateNodes = function () { };\n // Update the vertical crosshair line.\n Sparkline.prototype.updateXCrosshairLine = function () { };\n // Update the horizontal crosshair line.\n Sparkline.prototype.updateYCrosshairLine = function () { };\n Sparkline.prototype.highlightDatum = function (closestDatum) {\n this.updateNodes();\n };\n Sparkline.prototype.dehighlightDatum = function () {\n this.highlightedDatum = undefined;\n this.updateNodes();\n this.updateCrosshairs();\n };\n /**\n * Highlight closest datum and display tooltip if enabled.\n * Only update if necessary, i.e. only update if the highlighted datum is different from previously highlighted datum,\n * or if there is no previously highlighted datum.\n * @param event\n */\n Sparkline.prototype.onMouseMove = function (event) {\n this.mouseMoveEvent = event;\n this.updateHitPoint(event);\n };\n Sparkline.prototype.updateHitPoint = function (event) {\n var _a, _b, _c;\n var closestDatum = this.pickClosestSeriesNodeDatum(event.offsetX, event.offsetY);\n if (!closestDatum) {\n return;\n }\n var oldHighlightedDatum = this.highlightedDatum;\n this.highlightedDatum = closestDatum;\n if ((this.highlightedDatum && !oldHighlightedDatum) ||\n (this.highlightedDatum && oldHighlightedDatum && this.highlightedDatum !== oldHighlightedDatum)) {\n this.highlightDatum(closestDatum);\n this.updateCrosshairs();\n this.scene.render();\n }\n var tooltipEnabled = (_c = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.enabled) !== null && _c !== void 0 ? _c : true;\n if (tooltipEnabled) {\n this.handleTooltip(event, closestDatum);\n }\n };\n /**\n * Dehighlight all nodes and remove tooltip.\n * @param event\n */\n Sparkline.prototype.onMouseOut = function (event) {\n this.dehighlightDatum();\n this.tooltip.toggle(false);\n this.scene.render();\n };\n // Fetch required values from the data object and process them.\n Sparkline.prototype.processData = function () {\n var _this = this;\n var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData;\n if (!data || this.invalidData(this.data)) {\n return;\n }\n yData.length = 0;\n xData.length = 0;\n var n = data.length;\n var dataType = this.getDataType(data);\n this.dataType = dataType;\n var xValueType = this.axis.type;\n var xType = xValueType !== 'number' && xValueType !== 'time' ? 'category' : xValueType;\n var isContinuousX = xType === 'number' || xType === 'time';\n var setSmallestXInterval = function (curr, prev) {\n if (_this.smallestInterval == undefined) {\n _this.smallestInterval = { x: Infinity, y: Infinity };\n }\n var x = _this.smallestInterval.x;\n var interval = Math.abs(curr - prev);\n if (interval > 0 && interval < x) {\n _this.smallestInterval.x = interval;\n }\n };\n var prevX;\n if (dataType === 'number') {\n for (var i = 0; i < n; i++) {\n var xDatum = i;\n var yDatum = data[i];\n var x = this.getDatum(xDatum, xType);\n var y = this.getDatum(yDatum, 'number');\n if (isContinuousX) {\n setSmallestXInterval(x, prevX);\n }\n xData.push(x);\n yData.push(y);\n prevX = x;\n }\n }\n else if (dataType === 'array') {\n for (var i = 0; i < n; i++) {\n var datum = data[i];\n if (Array.isArray(datum)) {\n var xDatum = datum[0];\n var yDatum = datum[1];\n var x = this.getDatum(xDatum, xType);\n var y = this.getDatum(yDatum, 'number');\n if (x == undefined) {\n continue;\n }\n if (isContinuousX) {\n setSmallestXInterval(x, prevX);\n }\n xData.push(x);\n yData.push(y);\n prevX = x;\n }\n }\n }\n else if (dataType === 'object') {\n var _b = this, yKey = _b.yKey, xKey = _b.xKey;\n for (var i = 0; i < n; i++) {\n var datum = data[i];\n if (typeof datum === 'object' && !Array.isArray(datum)) {\n var xDatum = datum[xKey];\n var yDatum = datum[yKey];\n var x = this.getDatum(xDatum, xType);\n var y = this.getDatum(yDatum, 'number');\n if (x == undefined) {\n continue;\n }\n if (isContinuousX) {\n setSmallestXInterval(x, prevX);\n }\n xData.push(x);\n yData.push(y);\n prevX = x;\n }\n }\n }\n // update axes\n this.updateAxes();\n // produce data joins and update selection's nodes\n this.update();\n this.scene.render();\n };\n /**\n * Return the type of data provided to the sparkline based on the first truthy value in the data array.\n * If the value is not a number, array or object, return `undefined`.\n * @param data\n */\n Sparkline.prototype.getDataType = function (data) {\n var e_1, _a;\n try {\n for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var datum = data_1_1.value;\n if (datum != undefined) {\n if (isNumber$3(datum)) {\n return 'number';\n }\n else if (Array.isArray(datum)) {\n return 'array';\n }\n else if (typeof datum === 'object') {\n return 'object';\n }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n /**\n * Return the given value depending on the type of axis.\n * Return `undefined` if the value is invalid for the given axis type.\n * @param value\n */\n Sparkline.prototype.getDatum = function (value, type) {\n if ((type === 'number' && isNumber$3(value)) || (type === 'time' && (isNumber$3(value) || isDate(value)))) {\n return value;\n }\n else if (type === 'category') {\n if (isString(value) || isDate(value) || isNumber$3(value)) {\n return { toString: function () { return String(value); } };\n }\n else if (isStringObject(value)) {\n return value;\n }\n }\n };\n Object.defineProperty(Sparkline.prototype, \"layoutScheduled\", {\n /**\n * Only `true` while we are waiting for the layout to start.\n * This will be `false` if the layout has already started and is ongoing.\n */\n get: function () {\n return !!this.layoutId;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Execute update method on the next available screen repaint to make changes to the canvas.\n * If we are waiting for a layout to start and a new layout is requested,\n * cancel the previous layout using the non 0 integer (this.layoutId) returned from requestAnimationFrame.\n */\n Sparkline.prototype.scheduleLayout = function () {\n var _this = this;\n if (this.layoutId) {\n cancelAnimationFrame(this.layoutId);\n }\n this.layoutId = requestAnimationFrame(function () {\n _this.setSparklineDimensions();\n if (_this.invalidData(_this.data)) {\n return;\n }\n // update axes ranges\n _this.updateXScaleRange();\n _this.updateYScaleRange();\n // update axis line\n _this.updateAxisLine();\n // produce data joins and update selection's nodes\n _this.update();\n _this.scene.render();\n _this.layoutId = 0;\n });\n };\n Sparkline.prototype.setSparklineDimensions = function () {\n var _a = this, width = _a.width, height = _a.height, padding = _a.padding, seriesRect = _a.seriesRect, rootGroup = _a.rootGroup;\n var shrunkWidth = width - padding.left - padding.right;\n var shrunkHeight = height - padding.top - padding.bottom;\n seriesRect.width = shrunkWidth;\n seriesRect.height = shrunkHeight;\n seriesRect.x = padding.left;\n seriesRect.y = padding.top;\n rootGroup.translationX = seriesRect.x;\n rootGroup.translationY = seriesRect.y;\n };\n /**\n * Return the closest data point to x/y canvas coordinates.\n * @param x\n * @param y\n */\n Sparkline.prototype.pickClosestSeriesNodeDatum = function (x, y) {\n var minDistance = Infinity;\n var closestDatum;\n var hitPoint = this.rootGroup.transformPoint(x, y);\n var nodeData = this.getNodeData();\n for (var i = 0; i < nodeData.length; i++) {\n var datum = nodeData[i];\n if (!datum.point) {\n return;\n }\n var distance = this.getDistance(hitPoint, datum.point);\n if (distance <= minDistance) {\n minDistance = distance;\n closestDatum = datum;\n }\n }\n return closestDatum;\n };\n /**\n * Return the relevant distance between two points.\n * The distance will be calculated based on the x value of the points for all sparklines except bar sparkline, where the distance is based on the y values.\n * @param x\n * @param y\n */\n Sparkline.prototype.getDistance = function (p1, p2) {\n return Math.abs(p1.x - p2.x);\n };\n /**\n * calculate x/y coordinates for tooltip based on coordinates of highlighted datum, position of canvas and page offset.\n * @param datum\n */\n Sparkline.prototype.handleTooltip = function (event, datum) {\n var _a, _b;\n var seriesDatum = datum.seriesDatum;\n var canvasElement = this.canvasElement;\n var clientX = event.clientX, clientY = event.clientY;\n var tooltipOptions = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip;\n var meta = {\n pageX: clientX,\n pageY: clientY,\n position: {\n xOffset: tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.xOffset,\n yOffset: tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.yOffset,\n },\n container: tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.container,\n };\n // confine tooltip to sparkline width if tooltip container not provided.\n if (meta.container == undefined) {\n meta.container = canvasElement;\n }\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n // check if tooltip is enabled for this specific data point\n var enabled = (_b = tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.enabled) !== null && _b !== void 0 ? _b : true;\n var tooltipRenderer = tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.renderer;\n if (tooltipRenderer) {\n var tooltipRendererResult = tooltipRenderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue,\n });\n enabled =\n typeof tooltipRendererResult !== 'string' && tooltipRendererResult.enabled !== undefined\n ? tooltipRendererResult.enabled\n : enabled;\n }\n var html = enabled && seriesDatum.y !== undefined && this.getTooltipHtml(datum);\n if (html) {\n this.tooltip.show(meta, html);\n }\n };\n Sparkline.prototype.formatNumericDatum = function (datum) {\n return String(Math.round(datum * 10) / 10);\n };\n // locale.format('%m/%d/%y, %H:%M:%S');\n Sparkline.prototype.formatDatum = function (datum) {\n var type = this.axis.type || 'category';\n if (type === 'number' && typeof datum === 'number') {\n return this.formatNumericDatum(datum);\n }\n else if (type === 'time' && (datum instanceof Date || isNumber$3(datum))) {\n return this.defaultDateFormatter.format(datum);\n }\n else {\n return String(datum);\n }\n };\n Sparkline.prototype.setupDomEventListeners = function (chartElement) {\n chartElement.addEventListener('mousemove', this._onMouseMove);\n chartElement.addEventListener('mouseout', this._onMouseOut);\n };\n Sparkline.prototype.cleanupDomEventListeners = function (chartElement) {\n chartElement.removeEventListener('mousemove', this._onMouseMove);\n chartElement.removeEventListener('mouseout', this._onMouseOut);\n };\n Sparkline.prototype.invalidData = function (data) {\n return !data || !Array.isArray(data) || data.length === 0;\n };\n /**\n * Cleanup and remove canvas element from the DOM.\n */\n Sparkline.prototype.destroy = function () {\n this.scene.container = undefined;\n // remove canvas element from the DOM\n this.container = undefined;\n this.cleanupDomEventListeners(this.scene.canvas.element);\n };\n Sparkline.tooltipDocuments = [];\n return Sparkline;\n}());\n\nfunction toTooltipHtml(input, defaults) {\n if (typeof input === 'string') {\n return input;\n }\n defaults = defaults || {};\n var _a = input.content, content = _a === void 0 ? defaults.content || '' : _a, _b = input.title, title = _b === void 0 ? defaults.title || undefined : _b, _c = input.color, color = _c === void 0 ? defaults.color : _c, _d = input.backgroundColor, backgroundColor = _d === void 0 ? defaults.backgroundColor : _d, _e = input.opacity, opacity = _e === void 0 ? defaults.opacity || 1 : _e;\n var titleHtml;\n var contentHtml;\n if (color) {\n titleHtml = title\n ? \"<span class=\\\"\" + SparklineTooltip.class + \"-title\\\"; style=\\\"color: \" + color + \"\\\">\" + title + \"</span>\"\n : '';\n contentHtml = \"<span class=\\\"\" + SparklineTooltip.class + \"-content\\\" style=\\\"color: \" + color + \"\\\">\" + content + \"</span>\";\n }\n else {\n titleHtml = title ? \"<span class=\\\"\" + SparklineTooltip.class + \"-title\\\">\" + title + \"</span>\" : '';\n contentHtml = \"<span class=\\\"\" + SparklineTooltip.class + \"-content\\\">\" + content + \"</span>\";\n }\n var style = \"opacity: \" + opacity;\n if (backgroundColor) {\n style += \"; background-color: \" + backgroundColor.toLowerCase();\n }\n return \"<div class=\\\"\" + SparklineTooltip.class + \"\\\" style=\\\"\" + style + \"\\\">\\n \" + titleHtml + \"\\n \" + contentHtml + \"\\n </div>\";\n}\nvar SparklineTooltip = /** @class */ (function () {\n function SparklineTooltip() {\n this.element = document.createElement('div');\n var tooltipRoot = document.body;\n tooltipRoot.appendChild(this.element);\n }\n SparklineTooltip.prototype.isVisible = function () {\n var element = this.element;\n if (element.classList) {\n return !element.classList.contains(SparklineTooltip.class + \"-wrapper-hidden\");\n }\n // IE11\n var classes = element.getAttribute('class');\n if (classes) {\n return classes.split(' ').indexOf(SparklineTooltip.class + \"-wrapper-hidden\") < 0;\n }\n return false;\n };\n SparklineTooltip.prototype.updateClass = function (visible) {\n var classList = [SparklineTooltip.class + \"-wrapper\"];\n if (visible !== true) {\n classList.push(SparklineTooltip.class + \"-wrapper-hidden\");\n }\n this.element.setAttribute('class', classList.join(' '));\n };\n SparklineTooltip.prototype.show = function (meta, html) {\n var _a, _b, _c, _d;\n this.toggle(false);\n var element = this.element;\n if (html !== undefined) {\n element.innerHTML = html;\n }\n else if (!element.innerHTML) {\n return;\n }\n var xOffset = (_b = (_a = meta.position) === null || _a === void 0 ? void 0 : _a.xOffset) !== null && _b !== void 0 ? _b : 10;\n var yOffset = (_d = (_c = meta.position) === null || _c === void 0 ? void 0 : _c.yOffset) !== null && _d !== void 0 ? _d : 0;\n var left = meta.pageX + xOffset;\n var top = meta.pageY + yOffset;\n var tooltipRect = element.getBoundingClientRect();\n var maxLeft = window.innerWidth - tooltipRect.width;\n if (meta.container) {\n var containerRect = meta.container.getBoundingClientRect();\n maxLeft = containerRect.left + (containerRect.width - tooltipRect.width);\n }\n if (left > maxLeft) {\n left = meta.pageX - element.clientWidth - xOffset;\n }\n if (typeof scrollX !== 'undefined') {\n left += scrollX;\n }\n if (typeof scrollY !== 'undefined') {\n top += scrollY;\n }\n element.style.left = Math.round(left) + \"px\";\n element.style.top = Math.round(top) + \"px\";\n this.toggle(true);\n };\n SparklineTooltip.prototype.toggle = function (visible) {\n this.updateClass(visible);\n };\n SparklineTooltip.prototype.destroy = function () {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n };\n SparklineTooltip.class = 'ag-sparkline-tooltip';\n return SparklineTooltip;\n}());\n\nfunction getMarker(shape) {\n switch (shape) {\n case 'circle':\n return Circle;\n case 'square':\n return Square;\n case 'diamond':\n return Diamond;\n default:\n return Circle;\n }\n}\n\nfunction getLineDash(lineCap, lineDash) {\n if (lineDash === void 0) { lineDash = 'solid'; }\n var buttOrNull = {\n solid: [],\n dash: [4, 3],\n dot: [1, 3],\n dashDot: [4, 3, 1, 3],\n dashDotDot: [4, 3, 1, 3, 1, 3],\n shortDot: [1, 1],\n shortDash: [3, 1],\n shortDashDot: [3, 1, 1, 1],\n shortDashDotDot: [3, 1, 1, 1, 1, 1],\n longDash: [8, 3],\n longDashDot: [8, 3, 1, 3],\n longDashDotDot: [8, 3, 1, 3, 1, 3]\n };\n var roundOrSquare = {\n solid: [],\n dash: [3, 3],\n dot: [0, 3],\n dashDot: [3, 3, 0, 3],\n dashDotDot: [3, 3, 0, 3, 0, 3],\n shortDot: [0, 2],\n shortDash: [2, 2],\n shortDashDot: [2, 2, 0, 2],\n shortDashDotDot: [2, 2, 0, 2, 0, 2],\n longDash: [7, 3],\n longDashDot: [7, 3, 0, 3],\n longDashDotDot: [7, 3, 0, 3, 0, 3]\n };\n if (lineCap === 'round' || lineCap === 'square') {\n if (roundOrSquare[lineDash] == undefined) {\n console.warn(\"'\" + lineDash + \"' is not a valid 'lineDash' option.\");\n return roundOrSquare.solid;\n }\n return roundOrSquare[lineDash];\n }\n if (buttOrNull[lineDash] == undefined) {\n console.warn(\"'\" + lineDash + \"' is not a valid 'lineDash' option.\");\n return buttOrNull.solid;\n }\n return buttOrNull[lineDash];\n}\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar extent$2 = extent$4;\nvar BandScale$3 = BandScale$5;\nvar SparklineMarker$1 = /** @class */ (function () {\n function SparklineMarker() {\n this.enabled = true;\n this.shape = 'circle';\n this.size = 0;\n this.fill = 'rgb(124, 181, 236)';\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n this.formatter = undefined;\n }\n return SparklineMarker;\n}());\nvar SparklineLine$1 = /** @class */ (function () {\n function SparklineLine() {\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n }\n return SparklineLine;\n}());\nvar SparklineCrosshairs$1 = /** @class */ (function () {\n function SparklineCrosshairs() {\n this.xLine = {\n enabled: true,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined,\n };\n this.yLine = {\n enabled: false,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined,\n };\n }\n return SparklineCrosshairs;\n}());\nvar AreaSparkline = /** @class */ (function (_super) {\n __extends$6(AreaSparkline, _super);\n function AreaSparkline() {\n var _this = _super.call(this) || this;\n _this.fill = 'rgba(124, 181, 236, 0.25)';\n _this.strokePath = new Path();\n _this.fillPath = new Path();\n _this.xCrosshairLine = new Line();\n _this.yCrosshairLine = new Line();\n _this.areaSparklineGroup = new Group();\n _this.xAxisLine = new Line();\n _this.markers = new Group();\n _this.markerSelection = Selection.select(_this.markers, function () { return _this.markerFactory(); });\n _this.markerSelectionData = [];\n _this.marker = new SparklineMarker$1();\n _this.line = new SparklineLine$1();\n _this.crosshairs = new SparklineCrosshairs$1();\n _this.rootGroup.append(_this.areaSparklineGroup);\n _this.xAxisLine.zIndex = ZINDICIES.AXIS_LINE_ZINDEX;\n _this.fillPath.zIndex = ZINDICIES.SERIES_FILL_ZINDEX;\n _this.strokePath.zIndex = ZINDICIES.SERIES_STROKE_ZINDEX;\n _this.xCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n _this.yCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n _this.markers.zIndex = ZINDICIES.SERIES_MARKERS_ZINDEX;\n _this.areaSparklineGroup.append([\n _this.fillPath,\n _this.xAxisLine,\n _this.strokePath,\n _this.xCrosshairLine,\n _this.yCrosshairLine,\n _this.markers,\n ]);\n return _this;\n }\n AreaSparkline.prototype.markerFactory = function () {\n var shape = this.marker.shape;\n var MarkerShape = getMarker(shape);\n return new MarkerShape();\n };\n AreaSparkline.prototype.getNodeData = function () {\n return this.markerSelectionData;\n };\n AreaSparkline.prototype.update = function () {\n var data = this.generateNodeData();\n if (!data) {\n return;\n }\n var nodeData = data.nodeData, fillData = data.fillData, strokeData = data.strokeData;\n this.markerSelectionData = nodeData;\n this.updateSelection(nodeData);\n this.updateNodes();\n this.updateStroke(strokeData);\n this.updateFill(fillData);\n };\n AreaSparkline.prototype.updateYScaleDomain = function () {\n var _a = this, yData = _a.yData, yScale = _a.yScale;\n var yMinMax = extent$2(yData);\n var yMin = 0;\n var yMax = 1;\n if (yMinMax !== undefined) {\n yMin = this.min = yMinMax[0];\n yMax = this.max = yMinMax[1];\n }\n // if yMin is positive, set yMin to 0\n yMin = yMin < 0 ? yMin : 0;\n // if yMax is negative, set yMax to 0\n yMax = yMax < 0 ? 0 : yMax;\n yScale.domain = [yMin, yMax];\n };\n AreaSparkline.prototype.generateNodeData = function () {\n var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale;\n if (!data) {\n return;\n }\n var continuous = !(xScale instanceof BandScale$3);\n var offsetX = !continuous ? xScale.bandwidth / 2 : 0;\n var n = yData.length;\n var nodeData = [];\n var fillData = [];\n var strokeData = [];\n var firstValidX;\n var lastValidX;\n var previousX;\n var nextX;\n var yZero = yScale.convert(0);\n for (var i = 0; i < n; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n var x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum) + offsetX;\n var y = yDatum === undefined ? NaN : yScale.convert(yDatum);\n // if this iteration is not the last, set nextX using the next value in the data array\n if (i + 1 < n) {\n nextX = xScale.convert(continuous ? xScale.toDomain(xData[i + 1]) : xData[i + 1]) + offsetX;\n }\n // set stroke data regardless of missing/ undefined values. Undefined values will be handled in the updateStroke() method\n strokeData.push({\n seriesDatum: { x: xDatum, y: yDatum },\n point: { x: x, y: y },\n });\n if (yDatum === undefined && previousX !== undefined) {\n // if yDatum is undefined and there is a valid previous data point, add a phantom point at yZero\n // if a next data point exists, add a phantom point at yZero at the next X\n fillData.push({ seriesDatum: undefined, point: { x: previousX, y: yZero } });\n if (nextX !== undefined) {\n fillData.push({ seriesDatum: undefined, point: { x: nextX, y: yZero } });\n }\n }\n else if (yDatum !== undefined) {\n fillData.push({\n seriesDatum: { x: xDatum, y: yDatum },\n point: { x: x, y: y },\n });\n // set node data only if yDatum is not undefined. These values are used in the updateSelection() method to update markers\n nodeData.push({\n seriesDatum: { x: xDatum, y: yDatum },\n point: { x: x, y: y },\n });\n firstValidX = firstValidX !== undefined ? firstValidX : x;\n lastValidX = x;\n }\n previousX = x;\n }\n // phantom points for creating closed area\n fillData.push({ seriesDatum: undefined, point: { x: lastValidX, y: yZero } }, { seriesDatum: undefined, point: { x: firstValidX, y: yZero } });\n return { nodeData: nodeData, fillData: fillData, strokeData: strokeData };\n };\n AreaSparkline.prototype.updateAxisLine = function () {\n var _a = this, xScale = _a.xScale, yScale = _a.yScale, axis = _a.axis, xAxisLine = _a.xAxisLine;\n xAxisLine.x1 = xScale.range[0];\n xAxisLine.x2 = xScale.range[1];\n xAxisLine.y1 = xAxisLine.y2 = 0;\n xAxisLine.stroke = axis.stroke;\n xAxisLine.strokeWidth = axis.strokeWidth;\n var yZero = yScale.convert(0);\n xAxisLine.translationY = yZero;\n };\n AreaSparkline.prototype.updateSelection = function (selectionData) {\n this.markerSelection.update(selectionData);\n };\n AreaSparkline.prototype.updateNodes = function () {\n var _this = this;\n var _a = this, highlightedDatum = _a.highlightedDatum, highlightStyle = _a.highlightStyle, marker = _a.marker;\n var highlightSize = highlightStyle.size, highlightFill = highlightStyle.fill, highlightStroke = highlightStyle.stroke, highlightStrokeWidth = highlightStyle.strokeWidth;\n var markerFormatter = marker.formatter;\n this.markerSelection.each(function (node, datum, index) {\n var point = datum.point, seriesDatum = datum.seriesDatum;\n if (!point) {\n return;\n }\n var highlighted = datum === highlightedDatum;\n var markerFill = highlighted && highlightFill !== undefined ? highlightFill : marker.fill;\n var markerStroke = highlighted && highlightStroke !== undefined ? highlightStroke : marker.stroke;\n var markerStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : marker.strokeWidth;\n var markerSize = highlighted && highlightSize !== undefined ? highlightSize : marker.size;\n var markerFormat;\n if (markerFormatter) {\n var first = index === 0;\n var last = index === _this.markerSelectionData.length - 1;\n var min = seriesDatum.y === _this.min;\n var max = seriesDatum.y === _this.max;\n markerFormat = markerFormatter({\n datum: datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n min: min,\n max: max,\n first: first,\n last: last,\n fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: markerSize,\n highlighted: highlighted,\n });\n }\n node.size = markerFormat && markerFormat.size != undefined ? markerFormat.size : markerSize;\n node.fill = markerFormat && markerFormat.fill != undefined ? markerFormat.fill : markerFill;\n node.stroke = markerFormat && markerFormat.stroke != undefined ? markerFormat.stroke : markerStroke;\n node.strokeWidth =\n markerFormat && markerFormat.strokeWidth != undefined ? markerFormat.strokeWidth : markerStrokeWidth;\n node.translationX = point.x;\n node.translationY = point.y;\n node.visible =\n markerFormat && markerFormat.enabled != undefined\n ? markerFormat.enabled\n : marker.enabled && node.size > 0;\n });\n };\n AreaSparkline.prototype.updateStroke = function (strokeData) {\n var _a = this, strokePath = _a.strokePath, yData = _a.yData, line = _a.line;\n if (yData.length < 2) {\n return;\n }\n var path = strokePath.path;\n var n = strokeData.length;\n var moveTo = true;\n path.clear();\n for (var i = 0; i < n; i++) {\n var _b = strokeData[i], point = _b.point, seriesDatum = _b.seriesDatum;\n var x = point.x;\n var y = point.y;\n if (seriesDatum.y == undefined) {\n moveTo = true;\n }\n else {\n if (moveTo) {\n path.moveTo(x, y);\n moveTo = false;\n }\n else {\n path.lineTo(x, y);\n }\n }\n }\n strokePath.lineJoin = strokePath.lineCap = 'round';\n strokePath.fill = undefined;\n strokePath.stroke = line.stroke;\n strokePath.strokeWidth = line.strokeWidth;\n };\n AreaSparkline.prototype.updateFill = function (areaData) {\n var _a = this, fillPath = _a.fillPath, yData = _a.yData, fill = _a.fill;\n var path = fillPath.path;\n var n = areaData.length;\n path.clear();\n if (yData.length < 2) {\n return;\n }\n for (var i = 0; i < n; i++) {\n var point = areaData[i].point;\n var x = point.x;\n var y = point.y;\n if (i > 0) {\n path.lineTo(x, y);\n }\n else {\n path.moveTo(x, y);\n }\n }\n path.closePath();\n fillPath.lineJoin = 'round';\n fillPath.stroke = undefined;\n fillPath.fill = fill;\n };\n AreaSparkline.prototype.updateXCrosshairLine = function () {\n var _a = this, yScale = _a.yScale, xCrosshairLine = _a.xCrosshairLine, highlightedDatum = _a.highlightedDatum, xLine = _a.crosshairs.xLine;\n if (!xLine.enabled || highlightedDatum == undefined) {\n xCrosshairLine.strokeWidth = 0;\n return;\n }\n xCrosshairLine.y1 = yScale.range[0];\n xCrosshairLine.y2 = yScale.range[1];\n xCrosshairLine.x1 = xCrosshairLine.x2 = 0;\n xCrosshairLine.stroke = xLine.stroke;\n xCrosshairLine.strokeWidth = xLine.strokeWidth || 1;\n xCrosshairLine.lineCap = xLine.lineCap === 'round' || xLine.lineCap === 'square' ? xLine.lineCap : undefined;\n var lineDash = xLine.lineDash;\n xCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(xCrosshairLine.lineCap, xLine.lineDash);\n xCrosshairLine.translationX = highlightedDatum.point.x;\n };\n AreaSparkline.prototype.updateYCrosshairLine = function () {\n var _a = this, xScale = _a.xScale, yCrosshairLine = _a.yCrosshairLine, highlightedDatum = _a.highlightedDatum, yLine = _a.crosshairs.yLine;\n if (!yLine.enabled || highlightedDatum == undefined) {\n yCrosshairLine.strokeWidth = 0;\n return;\n }\n yCrosshairLine.x1 = xScale.range[0];\n yCrosshairLine.x2 = xScale.range[1];\n yCrosshairLine.y1 = yCrosshairLine.y2 = 0;\n yCrosshairLine.stroke = yLine.stroke;\n yCrosshairLine.strokeWidth = yLine.strokeWidth || 1;\n yCrosshairLine.lineCap = yLine.lineCap === 'round' || yLine.lineCap === 'square' ? yLine.lineCap : undefined;\n var lineDash = yLine.lineDash;\n yCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(yCrosshairLine.lineCap, yLine.lineDash);\n yCrosshairLine.translationY = highlightedDatum.point.y;\n };\n AreaSparkline.prototype.getTooltipHtml = function (datum) {\n var _a, _b;\n var dataType = this.dataType;\n var seriesDatum = datum.seriesDatum;\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n var content = this.formatNumericDatum(yValue);\n var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n var defaults = {\n content: content,\n title: title,\n };\n var tooltipRenderer = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.renderer;\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue,\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n AreaSparkline.className = 'AreaSparkline';\n return AreaSparkline;\n}(Sparkline));\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar extent$1 = extent$4;\nvar BandScale$2 = BandScale$5;\nvar SparklineMarker = /** @class */ (function () {\n function SparklineMarker() {\n this.enabled = true;\n this.shape = 'circle';\n this.size = 0;\n this.fill = 'rgb(124, 181, 236)';\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n this.formatter = undefined;\n }\n return SparklineMarker;\n}());\nvar SparklineLine = /** @class */ (function () {\n function SparklineLine() {\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n }\n return SparklineLine;\n}());\nvar SparklineCrosshairs = /** @class */ (function () {\n function SparklineCrosshairs() {\n this.xLine = {\n enabled: true,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined,\n };\n this.yLine = {\n enabled: false,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined,\n };\n }\n return SparklineCrosshairs;\n}());\nvar LineSparkline = /** @class */ (function (_super) {\n __extends$5(LineSparkline, _super);\n function LineSparkline() {\n var _this = _super.call(this) || this;\n _this.linePath = new Path();\n _this.xCrosshairLine = new Line();\n _this.yCrosshairLine = new Line();\n _this.lineSparklineGroup = new Group();\n _this.markers = new Group();\n _this.markerSelection = Selection.select(_this.markers, function () { return _this.markerFactory(); });\n _this.markerSelectionData = [];\n _this.marker = new SparklineMarker();\n _this.line = new SparklineLine();\n _this.crosshairs = new SparklineCrosshairs();\n _this.rootGroup.append(_this.lineSparklineGroup);\n _this.linePath.zIndex = ZINDICIES.SERIES_STROKE_ZINDEX;\n _this.xCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n _this.yCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n _this.markers.zIndex = ZINDICIES.SERIES_MARKERS_ZINDEX;\n _this.lineSparklineGroup.append([_this.linePath, _this.xCrosshairLine, _this.yCrosshairLine, _this.markers]);\n return _this;\n }\n LineSparkline.prototype.getNodeData = function () {\n return this.markerSelectionData;\n };\n LineSparkline.prototype.markerFactory = function () {\n var shape = this.marker.shape;\n var MarkerShape = getMarker(shape);\n return new MarkerShape();\n };\n /**\n * If marker shape is changed, this method should be called to remove the previous marker nodes selection.\n */\n LineSparkline.prototype.onMarkerShapeChange = function () {\n this.markerSelection = this.markerSelection.clear();\n this.scheduleLayout();\n };\n LineSparkline.prototype.update = function () {\n var nodeData = this.generateNodeData();\n if (!nodeData) {\n return;\n }\n this.markerSelectionData = nodeData;\n this.updateSelection(nodeData);\n this.updateNodes();\n this.updateLine();\n };\n LineSparkline.prototype.updateYScaleDomain = function () {\n var _a = this, yData = _a.yData, yScale = _a.yScale;\n var yMinMax = extent$1(yData);\n var yMin = 0;\n var yMax = 1;\n if (yMinMax !== undefined) {\n yMin = this.min = yMinMax[0];\n yMax = this.max = yMinMax[1];\n }\n if (yMin === yMax) {\n // if all values in the data are the same, yMin and yMax will be equal, need to adjust the domain with some padding\n var padding = Math.abs(yMin * 0.01);\n yMin -= padding;\n yMax += padding;\n }\n yScale.domain = [yMin, yMax];\n };\n LineSparkline.prototype.generateNodeData = function () {\n var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale;\n if (!data) {\n return;\n }\n var continuous = !(xScale instanceof BandScale$2);\n var offsetX = !continuous ? xScale.bandwidth / 2 : 0;\n var nodeData = [];\n for (var i = 0; i < yData.length; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n if (yDatum == undefined) {\n continue;\n }\n var x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum) + offsetX;\n var y = yDatum === undefined ? NaN : yScale.convert(yDatum);\n nodeData.push({\n seriesDatum: { x: xDatum, y: yDatum },\n point: { x: x, y: y },\n });\n }\n return nodeData;\n };\n LineSparkline.prototype.updateSelection = function (selectionData) {\n this.markerSelection.update(selectionData);\n };\n LineSparkline.prototype.updateNodes = function () {\n var _this = this;\n var _a = this, highlightedDatum = _a.highlightedDatum, highlightStyle = _a.highlightStyle, marker = _a.marker;\n var highlightSize = highlightStyle.size, highlightFill = highlightStyle.fill, highlightStroke = highlightStyle.stroke, highlightStrokeWidth = highlightStyle.strokeWidth;\n var markerFormatter = marker.formatter;\n this.markerSelection.each(function (node, datum, index) {\n var highlighted = datum === highlightedDatum;\n var markerFill = highlighted && highlightFill !== undefined ? highlightFill : marker.fill;\n var markerStroke = highlighted && highlightStroke !== undefined ? highlightStroke : marker.stroke;\n var markerStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : marker.strokeWidth;\n var markerSize = highlighted && highlightSize !== undefined ? highlightSize : marker.size;\n var markerFormat;\n var seriesDatum = datum.seriesDatum, point = datum.point;\n if (markerFormatter) {\n var first = index === 0;\n var last = index === _this.markerSelectionData.length - 1;\n var min = seriesDatum.y === _this.min;\n var max = seriesDatum.y === _this.max;\n markerFormat = markerFormatter({\n datum: datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n min: min,\n max: max,\n first: first,\n last: last,\n fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: markerSize,\n highlighted: highlighted,\n });\n }\n node.size = markerFormat && markerFormat.size != undefined ? markerFormat.size : markerSize;\n node.fill = markerFormat && markerFormat.fill != undefined ? markerFormat.fill : markerFill;\n node.stroke = markerFormat && markerFormat.stroke != undefined ? markerFormat.stroke : markerStroke;\n node.strokeWidth =\n markerFormat && markerFormat.strokeWidth != undefined ? markerFormat.strokeWidth : markerStrokeWidth;\n node.translationX = point.x;\n node.translationY = point.y;\n node.visible =\n markerFormat && markerFormat.enabled != undefined\n ? markerFormat.enabled\n : marker.enabled && node.size > 0;\n });\n };\n LineSparkline.prototype.updateLine = function () {\n var _a = this, linePath = _a.linePath, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale, line = _a.line;\n if (yData.length < 2) {\n return;\n }\n var continuous = !(xScale instanceof BandScale$2);\n var path = linePath.path;\n var n = yData.length;\n var offsetX = !continuous ? xScale.bandwidth / 2 : 0;\n var moveTo = true;\n path.clear();\n for (var i = 0; i < n; i++) {\n var xDatum = xData[i];\n var yDatum = yData[i];\n var x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum) + offsetX;\n var y = yDatum === undefined ? NaN : yScale.convert(yDatum);\n if (yDatum == undefined) {\n moveTo = true;\n }\n else {\n if (moveTo) {\n path.moveTo(x, y);\n moveTo = false;\n }\n else {\n path.lineTo(x, y);\n }\n }\n }\n linePath.fill = undefined;\n linePath.stroke = line.stroke;\n linePath.strokeWidth = line.strokeWidth;\n };\n LineSparkline.prototype.updateXCrosshairLine = function () {\n var _a = this, yScale = _a.yScale, xCrosshairLine = _a.xCrosshairLine, highlightedDatum = _a.highlightedDatum, xLine = _a.crosshairs.xLine;\n if (!xLine.enabled || highlightedDatum == undefined) {\n xCrosshairLine.strokeWidth = 0;\n return;\n }\n xCrosshairLine.y1 = yScale.range[0];\n xCrosshairLine.y2 = yScale.range[1];\n xCrosshairLine.x1 = xCrosshairLine.x2 = 0;\n xCrosshairLine.stroke = xLine.stroke;\n xCrosshairLine.strokeWidth = xLine.strokeWidth || 1;\n xCrosshairLine.lineCap = xLine.lineCap === 'round' || xLine.lineCap === 'square' ? xLine.lineCap : undefined;\n var lineDash = xLine.lineDash;\n xCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(xCrosshairLine.lineCap, xLine.lineDash);\n xCrosshairLine.translationX = highlightedDatum.point.x;\n };\n LineSparkline.prototype.updateYCrosshairLine = function () {\n var _a = this, xScale = _a.xScale, yCrosshairLine = _a.yCrosshairLine, highlightedDatum = _a.highlightedDatum, yLine = _a.crosshairs.yLine;\n if (!yLine.enabled || highlightedDatum == undefined) {\n yCrosshairLine.strokeWidth = 0;\n return;\n }\n yCrosshairLine.x1 = xScale.range[0];\n yCrosshairLine.x2 = xScale.range[1];\n yCrosshairLine.y1 = yCrosshairLine.y2 = 0;\n yCrosshairLine.stroke = yLine.stroke;\n yCrosshairLine.strokeWidth = yLine.strokeWidth || 1;\n yCrosshairLine.lineCap = yLine.lineCap === 'round' || yLine.lineCap === 'square' ? yLine.lineCap : undefined;\n var lineDash = yLine.lineDash;\n yCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(yCrosshairLine.lineCap, yLine.lineDash);\n yCrosshairLine.translationY = highlightedDatum.point.y;\n };\n LineSparkline.prototype.getTooltipHtml = function (datum) {\n var _a, _b;\n var dataType = this.dataType;\n var seriesDatum = datum.seriesDatum;\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n var content = this.formatNumericDatum(yValue);\n var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n var defaults = {\n content: content,\n title: title,\n };\n var tooltipRenderer = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.renderer;\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue,\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n LineSparkline.className = 'LineSparkline';\n return LineSparkline;\n}(Sparkline));\n\nvar Label = /** @class */ (function () {\n function Label() {\n this.enabled = true;\n this.fontSize = 8;\n this.fontFamily = 'Verdana, sans-serif';\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.color = 'rgba(70, 70, 70, 1)';\n }\n return Label;\n}());\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar extent = extent$4;\nvar BarColumnNodeTag;\n(function (BarColumnNodeTag) {\n BarColumnNodeTag[BarColumnNodeTag[\"Rect\"] = 0] = \"Rect\";\n BarColumnNodeTag[BarColumnNodeTag[\"Label\"] = 1] = \"Label\";\n})(BarColumnNodeTag || (BarColumnNodeTag = {}));\nvar BarColumnLabelPlacement;\n(function (BarColumnLabelPlacement) {\n BarColumnLabelPlacement[\"InsideBase\"] = \"insideBase\";\n BarColumnLabelPlacement[\"InsideEnd\"] = \"insideEnd\";\n BarColumnLabelPlacement[\"Center\"] = \"center\";\n BarColumnLabelPlacement[\"OutsideEnd\"] = \"outsideEnd\";\n})(BarColumnLabelPlacement || (BarColumnLabelPlacement = {}));\nvar BarColumnLabel = /** @class */ (function (_super) {\n __extends$4(BarColumnLabel, _super);\n function BarColumnLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n _this.placement = BarColumnLabelPlacement.InsideEnd;\n return _this;\n }\n return BarColumnLabel;\n}(Label));\nvar BarColumnSparkline = /** @class */ (function (_super) {\n __extends$4(BarColumnSparkline, _super);\n function BarColumnSparkline() {\n var _this = _super.call(this) || this;\n _this.fill = 'rgb(124, 181, 236)';\n _this.stroke = 'silver';\n _this.strokeWidth = 0;\n _this.paddingInner = 0.1;\n _this.paddingOuter = 0.2;\n _this.valueAxisDomain = undefined;\n _this.formatter = undefined;\n _this.axisLine = new Line();\n _this.bandWidth = 0;\n _this.sparklineGroup = new Group();\n _this.rectGroup = new Group();\n _this.labelGroup = new Group();\n _this.rectSelection = Selection.select(_this.rectGroup, Rect);\n _this.labelSelection = Selection.select(_this.labelGroup, Text);\n _this.nodeSelectionData = [];\n _this.label = new BarColumnLabel();\n _this.rootGroup.append(_this.sparklineGroup);\n _this.rectGroup.zIndex = ZINDICIES.SERIES_FILL_ZINDEX;\n _this.axisLine.zIndex = ZINDICIES.AXIS_LINE_ZINDEX;\n _this.labelGroup.zIndex = ZINDICIES.SERIES_LABEL_ZINDEX;\n _this.sparklineGroup.append([_this.rectGroup, _this.axisLine, _this.labelGroup]);\n _this.axisLine.lineCap = 'round';\n _this.label.enabled = false;\n return _this;\n }\n BarColumnSparkline.prototype.getNodeData = function () {\n return this.nodeSelectionData;\n };\n BarColumnSparkline.prototype.update = function () {\n this.updateSelections();\n this.updateNodes();\n };\n BarColumnSparkline.prototype.updateSelections = function () {\n var nodeData = this.generateNodeData();\n if (!nodeData) {\n return;\n }\n this.nodeSelectionData = nodeData;\n this.updateRectSelection(nodeData);\n this.updateLabelSelection(nodeData);\n };\n BarColumnSparkline.prototype.updateNodes = function () {\n this.updateRectNodes();\n this.updateLabelNodes();\n };\n BarColumnSparkline.prototype.calculateStep = function (range) {\n var _a;\n var _b = this, xScale = _b.xScale, paddingInner = _b.paddingInner, paddingOuter = _b.paddingOuter, smallestInterval = _b.smallestInterval;\n // calculate step\n var domainLength = xScale.domain[1] - xScale.domain[0];\n var intervals = domainLength / ((_a = smallestInterval === null || smallestInterval === void 0 ? void 0 : smallestInterval.x) !== null && _a !== void 0 ? _a : 1) + 1;\n // The number of intervals/bands is used to determine the width of individual bands by dividing the available range.\n // Allow a maximum of 50 bands to ensure the step (width of individual bands + padding) does not fall below a certain number of pixels.\n // If the number of intervals exceeds 50, calculate the step for 50 bands within the given range.\n // This means there could be some overlap of the bands in the sparkline.\n var maxBands = 50;\n var bands = Math.min(intervals, maxBands);\n var gaps = bands - 1; // number of gaps (padding between bands)\n var step = range / Math.max(1, 2 * paddingOuter + gaps * paddingInner + bands); // step width is a combination of band width and gap width\n return step;\n };\n BarColumnSparkline.prototype.updateYScaleDomain = function () {\n var _a = this, yScale = _a.yScale, yData = _a.yData, valueAxisDomain = _a.valueAxisDomain;\n var yMinMax = extent(yData);\n var yMin = 0;\n var yMax = 1;\n if (yMinMax !== undefined) {\n yMin = this.min = yMinMax[0];\n yMax = this.max = yMinMax[1];\n }\n // if yMin is positive, set yMin to 0\n yMin = yMin < 0 ? yMin : 0;\n // if yMax is negative, set yMax to 0\n yMax = yMax < 0 ? 0 : yMax;\n if (valueAxisDomain) {\n if (valueAxisDomain[1] < yMax) {\n valueAxisDomain[1] = yMax;\n }\n if (valueAxisDomain[0] > yMin) {\n valueAxisDomain[0] = yMin;\n }\n }\n yScale.domain = valueAxisDomain ? valueAxisDomain : [yMin, yMax];\n };\n BarColumnSparkline.prototype.updateRectSelection = function (selectionData) {\n this.rectSelection.update(selectionData);\n };\n BarColumnSparkline.prototype.updateRectNodes = function () {\n var _this = this;\n var _a = this, highlightedDatum = _a.highlightedDatum, nodeFormatter = _a.formatter, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth;\n var _b = this.highlightStyle, highlightFill = _b.fill, highlightStroke = _b.stroke, highlightStrokeWidth = _b.strokeWidth;\n this.rectSelection.each(function (node, datum, index) {\n var highlighted = datum === highlightedDatum;\n var nodeFill = highlighted && highlightFill !== undefined ? highlightFill : fill;\n var nodeStroke = highlighted && highlightStroke !== undefined ? highlightStroke : stroke;\n var nodeStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : strokeWidth;\n var nodeFormat;\n var x = datum.x, y = datum.y, width = datum.width, height = datum.height, seriesDatum = datum.seriesDatum;\n if (nodeFormatter) {\n var first = index === 0;\n var last = index === _this.nodeSelectionData.length - 1;\n var min = seriesDatum.y === _this.min;\n var max = seriesDatum.y === _this.max;\n nodeFormat = nodeFormatter({\n datum: datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n width: width,\n height: height,\n min: min,\n max: max,\n first: first,\n last: last,\n fill: nodeFill,\n stroke: nodeStroke,\n strokeWidth: nodeStrokeWidth,\n highlighted: highlighted,\n });\n }\n node.fill = (nodeFormat && nodeFormat.fill) || nodeFill;\n node.stroke = (nodeFormat && nodeFormat.stroke) || nodeStroke;\n node.strokeWidth = (nodeFormat && nodeFormat.strokeWidth) || nodeStrokeWidth;\n node.x = node.y = 0;\n node.width = width;\n node.height = height;\n node.visible = node.height > 0;\n node.translationX = x;\n node.translationY = y;\n // shifts bars upwards?\n // node.crisp = true;\n });\n };\n BarColumnSparkline.prototype.updateLabelSelection = function (selectionData) {\n this.labelSelection.update(selectionData, function (text) {\n text.tag = BarColumnNodeTag.Label;\n text.pointerEvents = PointerEvents.None;\n });\n };\n BarColumnSparkline.prototype.updateLabelNodes = function () {\n var _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n this.labelSelection.each(function (text, datum) {\n var label = datum.label;\n if (label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = label.x;\n text.y = label.y;\n text.fill = color;\n text.visible = true;\n }\n else {\n text.visible = false;\n }\n });\n };\n BarColumnSparkline.prototype.getTooltipHtml = function (datum) {\n var _a, _b;\n var dataType = this.dataType;\n var seriesDatum = datum.seriesDatum;\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n var content = this.formatNumericDatum(yValue);\n var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n var defaults = {\n content: content,\n title: title,\n };\n var tooltipRenderer = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.renderer;\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue,\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n BarColumnSparkline.prototype.formatLabelValue = function (value) {\n return value % 1 !== 0 ? value.toFixed(1) : value.toFixed(0);\n };\n return BarColumnSparkline;\n}(Sparkline));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar isNumber$2 = isNumber$4;\nvar BandScale$1 = BandScale$5;\nvar BarSparkline = /** @class */ (function (_super) {\n __extends$3(BarSparkline, _super);\n function BarSparkline() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BarSparkline.prototype.updateYScaleRange = function () {\n var _a = this, seriesRect = _a.seriesRect, yScale = _a.yScale;\n yScale.range = [0, seriesRect.width];\n };\n BarSparkline.prototype.updateXScaleRange = function () {\n var _a = this, xScale = _a.xScale, seriesRect = _a.seriesRect, paddingOuter = _a.paddingOuter, paddingInner = _a.paddingInner;\n if (xScale instanceof BandScale$1) {\n xScale.range = [0, seriesRect.height];\n xScale.paddingInner = paddingInner;\n xScale.paddingOuter = paddingOuter;\n }\n else {\n // last node will be clipped if the scale is not a band scale\n // subtract last band width from the range so that the last band is not clipped\n var step = this.calculateStep(seriesRect.height);\n // PaddingOuter and paddingInner are fractions of the step with values between 0 and 1\n var padding = step * paddingOuter; // left and right outer padding\n this.bandWidth = step * (1 - paddingInner);\n xScale.range = [padding, seriesRect.height - padding - this.bandWidth];\n }\n };\n BarSparkline.prototype.updateAxisLine = function () {\n var _a = this, yScale = _a.yScale, axis = _a.axis, axisLine = _a.axisLine, seriesRect = _a.seriesRect;\n var strokeWidth = axis.strokeWidth;\n axisLine.x1 = 0;\n axisLine.x2 = 0;\n axisLine.y1 = 0;\n axisLine.y2 = seriesRect.height;\n axisLine.stroke = axis.stroke;\n axisLine.strokeWidth = strokeWidth + (strokeWidth % 2 === 1 ? 1 : 0);\n var yZero = yScale.convert(0);\n axisLine.translationX = yZero;\n };\n BarSparkline.prototype.generateNodeData = function () {\n var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth, label = _a.label;\n if (!data) {\n return;\n }\n var labelFontStyle = label.fontStyle, labelFontWeight = label.fontWeight, labelFontSize = label.fontSize, labelFontFamily = label.fontFamily, labelColor = label.color, labelFormatter = label.formatter, labelPlacement = label.placement;\n var nodeData = [];\n var yZero = yScale.convert(0);\n var continuous = !(xScale instanceof BandScale$1);\n for (var i = 0, n = yData.length; i < n; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n var invalidDatum = yDatum === undefined;\n if (invalidDatum) {\n yDatum = 0;\n }\n var y = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum);\n var x = Math.min(yDatum === undefined ? NaN : yScale.convert(yDatum), yZero);\n var bottom = Math.max(yDatum === undefined ? NaN : yScale.convert(yDatum), yZero);\n // if the scale is a band scale, the width of the rects will be the bandwidth, otherwise the width of the rects will be the range / number of items in the data\n var height = !continuous ? xScale.bandwidth : this.bandWidth;\n var width = bottom - x;\n var midPoint = {\n x: yZero,\n y: y,\n };\n var labelText = void 0;\n if (labelFormatter) {\n labelText = labelFormatter({ value: yDatum });\n }\n else {\n labelText = yDatum !== undefined && isNumber$2(yDatum) ? this.formatLabelValue(yDatum) : '';\n }\n var labelY = y + height / 2;\n var labelX = void 0;\n var labelTextBaseline = 'middle';\n var labelTextAlign = void 0;\n var isPositiveY = yDatum !== undefined && yDatum >= 0;\n var labelPadding = 4;\n if (labelPlacement === BarColumnLabelPlacement.Center) {\n labelX = x + width / 2;\n labelTextAlign = 'center';\n }\n else if (labelPlacement === BarColumnLabelPlacement.OutsideEnd) {\n labelX = x + (isPositiveY ? width + labelPadding : -labelPadding);\n labelTextAlign = isPositiveY ? 'start' : 'end';\n }\n else if (labelPlacement === BarColumnLabelPlacement.InsideEnd) {\n labelX = x + (isPositiveY ? width - labelPadding : labelPadding);\n labelTextAlign = isPositiveY ? 'end' : 'start';\n var textSize = HdpiCanvas.getTextSize(labelText, labelFontFamily);\n var textWidth = textSize.width || 20;\n var positiveBoundary = yZero + textWidth;\n var negativeBoundary = yZero - textWidth;\n var exceedsBoundaries = (isPositiveY && labelX < positiveBoundary) || (!isPositiveY && labelX > negativeBoundary);\n if (exceedsBoundaries) {\n // if labelX exceeds the boundary, labels should be positioned at `insideBase`.\n labelX = yZero + labelPadding * (isPositiveY ? 1 : -1);\n labelTextAlign = isPositiveY ? 'start' : 'end';\n }\n }\n else {\n // if labelPlacement === BarColumnLabelPlacement.InsideBase\n labelX = yZero + labelPadding * (isPositiveY ? 1 : -1);\n labelTextAlign = isPositiveY ? 'start' : 'end';\n }\n nodeData.push({\n x: x,\n y: y,\n width: width,\n height: height,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n seriesDatum: { x: xDatum, y: invalidDatum ? undefined : yDatum },\n point: midPoint,\n label: {\n x: labelX,\n y: labelY,\n text: labelText,\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n textAlign: labelTextAlign,\n textBaseline: labelTextBaseline,\n fill: labelColor,\n },\n });\n }\n return nodeData;\n };\n BarSparkline.prototype.getDistance = function (p1, p2) {\n return Math.abs(p1.y - p2.y);\n };\n BarSparkline.className = 'BarSparkline';\n return BarSparkline;\n}(BarColumnSparkline));\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar isNumber$1 = isNumber$4;\nvar BandScale = BandScale$5;\nvar ColumnSparkline = /** @class */ (function (_super) {\n __extends$2(ColumnSparkline, _super);\n function ColumnSparkline() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnSparkline.prototype.updateYScaleRange = function () {\n var _a = this, seriesRect = _a.seriesRect, yScale = _a.yScale;\n yScale.range = [seriesRect.height, 0];\n };\n ColumnSparkline.prototype.updateXScaleRange = function () {\n var _a = this, xScale = _a.xScale, seriesRect = _a.seriesRect, paddingOuter = _a.paddingOuter, paddingInner = _a.paddingInner;\n if (xScale instanceof BandScale) {\n xScale.range = [0, seriesRect.width];\n xScale.paddingInner = paddingInner;\n xScale.paddingOuter = paddingOuter;\n }\n else {\n // last node will be clipped if the scale is not a band scale\n // subtract last band width from the range so that the last band is not clipped\n var step = this.calculateStep(seriesRect.width);\n // PaddingOuter and paddingInner are fractions of the step with values between 0 and 1\n var padding = step * paddingOuter; // left and right outer padding\n this.bandWidth = step * (1 - paddingInner);\n xScale.range = [padding, seriesRect.width - padding - this.bandWidth];\n }\n };\n ColumnSparkline.prototype.updateAxisLine = function () {\n var _a = this, yScale = _a.yScale, axis = _a.axis, axisLine = _a.axisLine, seriesRect = _a.seriesRect;\n var strokeWidth = axis.strokeWidth;\n axisLine.x1 = 0;\n axisLine.x2 = seriesRect.width;\n axisLine.y1 = 0;\n axisLine.y2 = 0;\n axisLine.stroke = axis.stroke;\n axisLine.strokeWidth = strokeWidth + (strokeWidth % 2 === 1 ? 1 : 0);\n var yZero = yScale.convert(0);\n axisLine.translationY = yZero;\n };\n ColumnSparkline.prototype.generateNodeData = function () {\n var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth, label = _a.label;\n if (!data) {\n return;\n }\n var labelFontStyle = label.fontStyle, labelFontWeight = label.fontWeight, labelFontSize = label.fontSize, labelFontFamily = label.fontFamily, labelColor = label.color, labelFormatter = label.formatter, labelPlacement = label.placement;\n var nodeData = [];\n var yZero = yScale.convert(0);\n var continuous = !(xScale instanceof BandScale);\n for (var i = 0, n = yData.length; i < n; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n var invalidDatum = yDatum === undefined;\n if (invalidDatum) {\n yDatum = 0;\n }\n var y = Math.min(yDatum === undefined ? NaN : yScale.convert(yDatum), yZero);\n var x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum);\n var bottom = Math.max(yDatum === undefined ? NaN : yScale.convert(yDatum), yZero);\n // if the scale is a band scale, the width of the rects will be the bandwidth, otherwise the width of the rects will be the range / number of items in the data\n var width = !continuous ? xScale.bandwidth : this.bandWidth;\n var height = bottom - y;\n var midPoint = {\n x: x + width / 2,\n y: yZero,\n };\n var labelText = void 0;\n if (labelFormatter) {\n labelText = labelFormatter({ value: yDatum });\n }\n else {\n labelText = yDatum !== undefined && isNumber$1(yDatum) ? this.formatLabelValue(yDatum) : '';\n }\n var labelX = x + width / 2;\n var labelY = void 0;\n var labelTextAlign = 'center';\n var labelTextBaseline = void 0;\n var isPositiveY = yDatum !== undefined && yDatum >= 0;\n var labelPadding = 2;\n if (labelPlacement === BarColumnLabelPlacement.Center) {\n labelY = y + height / 2;\n labelTextBaseline = 'middle';\n }\n else if (labelPlacement === BarColumnLabelPlacement.OutsideEnd) {\n labelY = y + (isPositiveY ? -labelPadding : height + labelPadding);\n labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n }\n else if (labelPlacement === BarColumnLabelPlacement.InsideEnd) {\n labelY = y + (isPositiveY ? labelPadding : height - labelPadding);\n labelTextBaseline = isPositiveY ? 'top' : 'bottom';\n var textSize = HdpiCanvas.getTextSize(labelText, labelFontFamily);\n var textHeight = textSize.height || 10;\n var positiveBoundary = yZero - textHeight;\n var negativeBoundary = yZero + textHeight;\n var exceedsBoundaries = (isPositiveY && labelY > positiveBoundary) || (!isPositiveY && labelY < negativeBoundary);\n if (exceedsBoundaries) {\n // if labelY exceeds the y boundary, labels should be positioned at the insideBase\n labelY = yZero + labelPadding * (isPositiveY ? -1 : 1);\n labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n }\n }\n else {\n // if labelPlacement === BarColumnLabelPlacement.InsideBase\n labelY = yZero + labelPadding * (isPositiveY ? -1 : 1);\n labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n }\n nodeData.push({\n x: x,\n y: y,\n width: width,\n height: height,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n seriesDatum: { x: xDatum, y: invalidDatum ? undefined : yDatum },\n point: midPoint,\n label: {\n x: labelX,\n y: labelY,\n text: labelText,\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n textAlign: labelTextAlign,\n textBaseline: labelTextBaseline,\n fill: labelColor,\n },\n });\n }\n return nodeData;\n };\n ColumnSparkline.className = 'ColumnSparkline';\n return ColumnSparkline;\n}(BarColumnSparkline));\n\nvar isNumber = isNumber$4;\nvar AgSparkline = /** @class */ (function () {\n function AgSparkline() {\n }\n AgSparkline.create = function (options, tooltip) {\n // avoid mutating user provided options\n options = jsonMerge([options]);\n var sparkline = getSparklineInstance(options.type);\n if (tooltip) {\n sparkline.tooltip = tooltip;\n }\n initSparkline(sparkline, options);\n initSparklineByType(sparkline, options);\n if (options.data) {\n sparkline.data = options.data;\n }\n sparkline.processedOptions = options;\n return sparkline;\n };\n return AgSparkline;\n}());\nfunction getSparklineInstance(type) {\n if (type === void 0) { type = 'line'; }\n switch (type) {\n case 'column':\n return new ColumnSparkline();\n case 'bar':\n return new BarSparkline();\n case 'area':\n return new AreaSparkline();\n case 'line':\n default:\n return new LineSparkline();\n }\n}\nfunction initSparklineByType(sparkline, options) {\n switch (options.type) {\n case 'bar':\n initBarColumnSparkline(sparkline, options);\n break;\n case 'column':\n initBarColumnSparkline(sparkline, options);\n break;\n case 'area':\n initAreaSparkline(sparkline, options);\n break;\n case 'line':\n default:\n initLineSparkline(sparkline, options);\n break;\n }\n}\nfunction initSparkline(sparkline, options) {\n setValueIfPropertyExists(sparkline, 'context', options.context, options);\n setValueIfPropertyExists(sparkline, 'width', options.width, options);\n setValueIfPropertyExists(sparkline, 'height', options.height, options);\n setValueIfPropertyExists(sparkline, 'container', options.container, options);\n setValueIfPropertyExists(sparkline, 'xKey', options.xKey, options);\n setValueIfPropertyExists(sparkline, 'yKey', options.yKey, options);\n if (options.padding) {\n initPaddingOptions(sparkline.padding, options.padding);\n }\n if (options.axis) {\n initAxisOptions(sparkline.axis, options.axis);\n }\n if (options.highlightStyle) {\n initHighlightStyleOptions(sparkline.highlightStyle, options.highlightStyle);\n }\n}\nfunction initLineSparkline(sparkline, options) {\n if (options.marker) {\n initMarkerOptions(sparkline.marker, options.marker);\n }\n if (options.line) {\n initLineOptions(sparkline.line, options.line);\n }\n if (options.crosshairs) {\n initCrosshairsOptions(sparkline.crosshairs, options.crosshairs);\n }\n}\nfunction initAreaSparkline(sparkline, options) {\n setValueIfPropertyExists(sparkline, 'fill', options.fill, options);\n if (options.marker) {\n initMarkerOptions(sparkline.marker, options.marker);\n }\n if (options.line) {\n initLineOptions(sparkline.line, options.line);\n }\n if (options.crosshairs) {\n initCrosshairsOptions(sparkline.crosshairs, options.crosshairs);\n }\n}\nfunction initBarColumnSparkline(sparkline, options) {\n setValueIfPropertyExists(sparkline, 'valueAxisDomain', options.valueAxisDomain, options);\n setValueIfPropertyExists(sparkline, 'fill', options.fill, options);\n setValueIfPropertyExists(sparkline, 'stroke', options.stroke, options);\n setValueIfPropertyExists(sparkline, 'strokeWidth', options.strokeWidth, options);\n setValueIfPropertyExists(sparkline, 'paddingInner', options.paddingInner, options);\n setValueIfPropertyExists(sparkline, 'paddingOuter', options.paddingOuter, options);\n setValueIfPropertyExists(sparkline, 'formatter', options.formatter, options);\n if (options.label) {\n initLabelOptions(sparkline.label, options.label);\n }\n}\nfunction initPaddingOptions(target, options) {\n setValueIfPropertyExists(target, 'top', options.top, options);\n setValueIfPropertyExists(target, 'right', options.right, options);\n setValueIfPropertyExists(target, 'bottom', options.bottom, options);\n setValueIfPropertyExists(target, 'left', options.left, options);\n}\nfunction initMarkerOptions(target, options) {\n setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n setValueIfPropertyExists(target, 'size', options.size, options);\n setValueIfPropertyExists(target, 'shape', options.shape, options);\n setValueIfPropertyExists(target, 'fill', options.fill, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n setValueIfPropertyExists(target, 'formatter', options.formatter, options);\n}\nfunction initLabelOptions(target, options) {\n setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n setValueIfPropertyExists(target, 'fontStyle', options.fontStyle, options);\n setValueIfPropertyExists(target, 'fontWeight', options.fontWeight, options);\n setValueIfPropertyExists(target, 'fontSize', options.fontSize, options);\n setValueIfPropertyExists(target, 'fontFamily', options.fontFamily, options);\n setValueIfPropertyExists(target, 'textAlign', options.textAlign, options);\n setValueIfPropertyExists(target, 'textBaseline', options.textBaseline, options);\n setValueIfPropertyExists(target, 'color', options.color, options);\n setValueIfPropertyExists(target, 'formatter', options.formatter, options);\n setValueIfPropertyExists(target, 'placement', options.placement, options);\n}\nfunction initLineOptions(target, options) {\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initAxisOptions(target, options) {\n setValueIfPropertyExists(target, 'type', options.type, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initHighlightStyleOptions(target, options) {\n setValueIfPropertyExists(target, 'fill', options.fill, options);\n setValueIfPropertyExists(target, 'size', options.size, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initCrosshairsOptions(target, options) {\n if (target.xLine && options.xLine) {\n initCrosshairLineOptions(target.xLine, options.xLine);\n }\n if (target.yLine && options.yLine) {\n initCrosshairLineOptions(target.yLine, options.yLine);\n }\n}\nfunction initCrosshairLineOptions(target, options) {\n setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n setValueIfPropertyExists(target, 'lineDash', options.lineDash, options);\n setValueIfPropertyExists(target, 'lineCap', options.lineCap, options);\n}\nvar doOnceFlags = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nfunction doOnce(func, key) {\n if (doOnceFlags[key]) {\n return;\n }\n func();\n doOnceFlags[key] = true;\n}\nvar offsetValidator = function (property, value, defaultOffset) {\n if (isNumber(value)) {\n return true;\n }\n var message = \"AG Charts: \" + property + \" must be a number, the value you provided is not a valid number. Using the default of \" + defaultOffset + \"px.\";\n doOnce(function () { return console.warn(message); }, property + \" not a number\");\n return false;\n};\nvar validators = {\n xOffset: offsetValidator,\n yOffset: offsetValidator,\n};\nfunction setValueIfPropertyExists(target, property, value, options) {\n if (property in options) {\n if (property in target) {\n var validator = validators[property];\n var isValid = validator ? validator(property, value, target[property]) : true;\n if (isValid && target[property] !== value) {\n // only set property if the value is different to new value\n target[property] = value;\n }\n }\n else {\n console.warn(\"Property \" + property + \" does not exist on the target object.\");\n }\n }\n}\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SparklineCellRenderer = /** @class */ (function (_super) {\n __extends$1(SparklineCellRenderer, _super);\n function SparklineCellRenderer() {\n return _super.call(this, SparklineCellRenderer.TEMPLATE) || this;\n }\n SparklineCellRenderer.prototype.init = function (params) {\n var _this = this;\n var firstTimeIn = true;\n var updateSparkline = function () {\n var _a = _this.getGui(), clientWidth = _a.clientWidth, clientHeight = _a.clientHeight;\n if (clientWidth === 0 || clientHeight === 0) {\n return;\n }\n if (firstTimeIn) {\n var options = __assign({ data: params.value, width: clientWidth, height: clientHeight, context: {\n data: params.data,\n } }, params.sparklineOptions);\n // create new instance of sparkline\n _this.sparkline = AgSparkline.create(options, _this.sparklineTooltipSingleton.getSparklineTooltip());\n // append sparkline canvas to cell renderer element\n _this.eSparkline.appendChild(_this.sparkline.canvasElement);\n firstTimeIn = false;\n }\n else {\n _this.sparkline.width = clientWidth;\n _this.sparkline.height = clientHeight;\n }\n };\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.getGui(), updateSparkline);\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n };\n SparklineCellRenderer.prototype.refresh = function (params) {\n if (this.sparkline) {\n this.sparkline.data = params.value;\n return true;\n }\n return false;\n };\n SparklineCellRenderer.prototype.destroy = function () {\n if (this.sparkline) {\n this.sparkline.destroy();\n }\n _super.prototype.destroy.call(this);\n };\n SparklineCellRenderer.TEMPLATE /* html */ = \"<div class=\\\"ag-sparkline-wrapper\\\">\\n <span ref=\\\"eSparkline\\\"></span>\\n </div>\";\n __decorate$1([\n RefSelector('eSparkline')\n ], SparklineCellRenderer.prototype, \"eSparkline\", void 0);\n __decorate$1([\n Autowired('resizeObserverService')\n ], SparklineCellRenderer.prototype, \"resizeObserverService\", void 0);\n __decorate$1([\n Autowired('sparklineTooltipSingleton')\n ], SparklineCellRenderer.prototype, \"sparklineTooltipSingleton\", void 0);\n return SparklineCellRenderer;\n}(Component));\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * This 'bean' creates a single sparkline tooltip that is bound to the grid lifecycle.\n */\nvar SparklineTooltipSingleton = /** @class */ (function (_super) {\n __extends(SparklineTooltipSingleton, _super);\n function SparklineTooltipSingleton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SparklineTooltipSingleton.prototype.postConstruct = function () {\n this.tooltip = new SparklineTooltip();\n };\n SparklineTooltipSingleton.prototype.getSparklineTooltip = function () {\n return this.tooltip;\n };\n SparklineTooltipSingleton.prototype.destroyTooltip = function () {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n };\n __decorate([\n PostConstruct\n ], SparklineTooltipSingleton.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], SparklineTooltipSingleton.prototype, \"destroyTooltip\", null);\n SparklineTooltipSingleton = __decorate([\n Bean('sparklineTooltipSingleton')\n ], SparklineTooltipSingleton);\n return SparklineTooltipSingleton;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION = '29.3.5';\n\nvar SparklinesModule = {\n version: VERSION,\n moduleName: ModuleNames.SparklinesModule,\n beans: [SparklineTooltipSingleton],\n userComponents: [{ componentName: 'agSparklineCellRenderer', componentClass: SparklineCellRenderer }],\n dependantModules: [EnterpriseCoreModule],\n};\n\nvar AllEnterpriseModules = [\n ClipboardModule,\n ColumnsToolPanelModule,\n ExcelExportModule,\n FiltersToolPanelModule,\n GridChartsModule,\n MasterDetailModule,\n MenuModule,\n MultiFilterModule,\n RangeSelectionModule,\n RichSelectModule,\n RowGroupingModule,\n ServerSideRowModelModule,\n SetFilterModule,\n SideBarModule,\n StatusBarModule,\n ViewportRowModelModule,\n SparklinesModule\n];\nvar AllModules = AllCommunityModules.concat(AllEnterpriseModules);\n\nModuleRegistry.registerModules(AllEnterpriseModules);\n\nexport { AllEnterpriseModules, AllModules, ClipboardModule, ColumnsToolPanelModule, EnterpriseCoreModule, ExcelExportModule, FiltersToolPanelModule, GridChartsModule, GridLicenseManager as LicenseManager, MasterDetailModule, MenuModule, MultiFilter, MultiFilterModule, PivotDropZonePanel, PrimaryColsPanel, RangeSelectionModule, RichSelectModule, RowGroupDropZonePanel, RowGroupingModule, ServerSideRowModelModule, SetFilter, SetFilterModule, SideBarModule, SparklinesModule, StatusBarModule, ToolPanelColDefService, ValuesDropZonePanel, ViewportRowModelModule, __FORCE_MODULE_DETECTION_AG_GRID_CORE_EXT, agCharts, exportMultipleSheetsAsExcel, getMultipleSheetsAsExcel };\n","const TimeoutErrorImpl = (() => {\n function TimeoutErrorImpl() {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n TimeoutErrorImpl.prototype = Object.create(Error.prototype);\n return TimeoutErrorImpl;\n})();\nexport const TimeoutError = TimeoutErrorImpl;\n","import { Subject } from '../Subject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function retryWhen(notifier) {\n return (source) => source.lift(new RetryWhenOperator(notifier, source));\n}\nclass RetryWhenOperator {\n constructor(notifier, source) {\n this.notifier = notifier;\n this.source = source;\n }\n call(subscriber, source) {\n return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));\n }\n}\nclass RetryWhenSubscriber extends OuterSubscriber {\n constructor(destination, notifier, source) {\n super(destination);\n this.notifier = notifier;\n this.source = source;\n }\n error(err) {\n if (!this.isStopped) {\n let errors = this.errors;\n let retries = this.retries;\n let retriesSubscription = this.retriesSubscription;\n if (!retries) {\n errors = new Subject();\n try {\n const { notifier } = this;\n retries = notifier(errors);\n }\n catch (e) {\n return super.error(e);\n }\n retriesSubscription = subscribeToResult(this, retries);\n }\n else {\n this.errors = null;\n this.retriesSubscription = null;\n }\n this._unsubscribeAndRecycle();\n this.errors = errors;\n this.retries = retries;\n this.retriesSubscription = retriesSubscription;\n errors.next(err);\n }\n }\n _unsubscribe() {\n const { errors, retriesSubscription } = this;\n if (errors) {\n errors.unsubscribe();\n this.errors = null;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = null;\n }\n this.retries = null;\n }\n notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n const { _unsubscribe } = this;\n this._unsubscribe = null;\n this._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n this.source.subscribe(this);\n }\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function timeoutWith(due, withObservable, scheduler = async) {\n return (source) => {\n let absoluteTimeout = isDate(due);\n let waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\nclass TimeoutWithOperator {\n constructor(waitFor, absoluteTimeout, withObservable, scheduler) {\n this.waitFor = waitFor;\n this.absoluteTimeout = absoluteTimeout;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));\n }\n}\nclass TimeoutWithSubscriber extends OuterSubscriber {\n constructor(destination, absoluteTimeout, waitFor, withObservable, scheduler) {\n super(destination);\n this.absoluteTimeout = absoluteTimeout;\n this.waitFor = waitFor;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n this.action = null;\n this.scheduleTimeout();\n }\n static dispatchTimeout(subscriber) {\n const { withObservable } = subscriber;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(subscribeToResult(subscriber, withObservable));\n }\n scheduleTimeout() {\n const { action } = this;\n if (action) {\n this.action = action.schedule(this, this.waitFor);\n }\n else {\n this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));\n }\n }\n _next(value) {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n super._next(value);\n }\n _unsubscribe() {\n this.action = null;\n this.scheduler = null;\n this.withObservable = null;\n }\n}\n","import { DOCUMENT, isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders, HttpParams, HttpErrorResponse, HttpResponse, HttpClientModule } from '@angular/common/http';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, PLATFORM_ID, InjectionToken, APP_INITIALIZER, NgModule } from '@angular/core';\nimport { ReplaySubject, BehaviorSubject, throwError, of, timer, Observable, Subject, forkJoin, TimeoutError } from 'rxjs';\nimport { distinctUntilChanged, switchMap, retryWhen, catchError, mergeMap, map, retry, tap, concatMap, take, timeout } from 'rxjs/operators';\nimport { KJUR, hextob64u, KEYUTIL } from 'jsrsasign-reduced';\nimport * as i2 from '@angular/router';\n\nclass HttpBaseService {\r\n constructor(http) {\r\n this.http = http;\r\n }\r\n get(url, params) {\r\n return this.http.get(url, params);\r\n }\r\n post(url, body, params) {\r\n return this.http.post(url, body, params);\r\n }\r\n}\r\nHttpBaseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: HttpBaseService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\r\nHttpBaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: HttpBaseService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: HttpBaseService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });\n\nclass ConfigurationProvider {\r\n constructor() {\r\n this.configsInternal = {};\r\n }\r\n hasAsLeastOneConfig() {\r\n return Object.keys(this.configsInternal).length > 0;\r\n }\r\n hasManyConfigs() {\r\n return Object.keys(this.configsInternal).length > 1;\r\n }\r\n setConfig(readyConfig) {\r\n const { configId } = readyConfig;\r\n this.configsInternal[configId] = readyConfig;\r\n }\r\n getOpenIDConfiguration(configId) {\r\n if (!!configId) {\r\n return this.configsInternal[configId] || null;\r\n }\r\n const [, value] = Object.entries(this.configsInternal)[0] || [[null, null]];\r\n return value || null;\r\n }\r\n getAllConfigurations() {\r\n return Object.values(this.configsInternal);\r\n }\r\n}\r\nConfigurationProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ConfigurationProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nConfigurationProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ConfigurationProvider });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ConfigurationProvider, decorators: [{\r\n type: Injectable\r\n }] });\n\nconst NGSW_CUSTOM_PARAM = 'ngsw-bypass';\r\nclass DataService {\r\n constructor(httpClient, configurationProvider) {\r\n this.httpClient = httpClient;\r\n this.configurationProvider = configurationProvider;\r\n }\r\n get(url, configId, token) {\r\n const headers = this.prepareHeaders(token);\r\n const params = this.prepareParams(configId);\r\n return this.httpClient.get(url, {\r\n headers,\r\n params,\r\n });\r\n }\r\n post(url, body, configId, headersParams) {\r\n const headers = headersParams || this.prepareHeaders();\r\n const params = this.prepareParams(configId);\r\n return this.httpClient.post(url, body, { headers, params });\r\n }\r\n prepareHeaders(token) {\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Accept', 'application/json');\r\n if (!!token) {\r\n headers = headers.set('Authorization', 'Bearer ' + decodeURIComponent(token));\r\n }\r\n return headers;\r\n }\r\n prepareParams(configId) {\r\n let params = new HttpParams();\r\n const { ngswBypass } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (ngswBypass) {\r\n params = params.set(NGSW_CUSTOM_PARAM, '');\r\n }\r\n return params;\r\n }\r\n}\r\nDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: DataService, deps: [{ token: HttpBaseService }, { token: ConfigurationProvider }], target: i0.ɵɵFactoryTarget.Injectable });\r\nDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: DataService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: DataService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: HttpBaseService }, { type: ConfigurationProvider }]; } });\n\n// eslint-disable-next-line no-shadow\r\nvar EventTypes;\r\n(function (EventTypes) {\r\n /**\r\n * This only works in the AppModule Constructor\r\n */\r\n EventTypes[EventTypes[\"ConfigLoaded\"] = 0] = \"ConfigLoaded\";\r\n EventTypes[EventTypes[\"ConfigLoadingFailed\"] = 1] = \"ConfigLoadingFailed\";\r\n EventTypes[EventTypes[\"CheckSessionReceived\"] = 2] = \"CheckSessionReceived\";\r\n EventTypes[EventTypes[\"UserDataChanged\"] = 3] = \"UserDataChanged\";\r\n EventTypes[EventTypes[\"NewAuthenticationResult\"] = 4] = \"NewAuthenticationResult\";\r\n EventTypes[EventTypes[\"TokenExpired\"] = 5] = \"TokenExpired\";\r\n EventTypes[EventTypes[\"IdTokenExpired\"] = 6] = \"IdTokenExpired\";\r\n EventTypes[EventTypes[\"SilentRenewStarted\"] = 7] = \"SilentRenewStarted\";\r\n})(EventTypes || (EventTypes = {}));\n\n// eslint-disable-next-line no-shadow\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"None\"] = 0] = \"None\";\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n LogLevel[LogLevel[\"Warn\"] = 2] = \"Warn\";\r\n LogLevel[LogLevel[\"Error\"] = 3] = \"Error\";\r\n})(LogLevel || (LogLevel = {}));\n\nclass LoggerService {\r\n constructor(configurationProvider) {\r\n this.configurationProvider = configurationProvider;\r\n }\r\n logError(configId, message, ...args) {\r\n if (!!configId) {\r\n this.logErrorWithConfig(configId, message, ...args);\r\n }\r\n else {\r\n this.logErrorWithoutConfig(message, ...args);\r\n }\r\n }\r\n logWarning(configId, message, ...args) {\r\n if (!!configId) {\r\n this.logWarningWithConfig(configId, message, ...args);\r\n }\r\n else {\r\n this.logWarningWithoutConfig(message, ...args);\r\n }\r\n }\r\n logDebug(configId, message, ...args) {\r\n if (!this.logLevelIsSet(configId)) {\r\n return;\r\n }\r\n if (this.loggingIsTurnedOff(configId)) {\r\n return;\r\n }\r\n if (!this.currentLogLevelIsEqualOrSmallerThan(configId, LogLevel.Debug)) {\r\n return;\r\n }\r\n if (!!args && !!args.length) {\r\n console.log(`[DEBUG] ${configId} - ${message}`, ...args);\r\n }\r\n else {\r\n console.log(`[DEBUG] ${configId} - ${message}`);\r\n }\r\n }\r\n logWarningWithoutConfig(message, ...args) {\r\n if (!!args && !!args.length) {\r\n console.warn(`[WARN] - ${message}`, ...args);\r\n }\r\n else {\r\n console.warn(`[WARN] - ${message}`);\r\n }\r\n }\r\n logWarningWithConfig(configId, message, ...args) {\r\n if (!this.logLevelIsSet(configId)) {\r\n return;\r\n }\r\n if (this.loggingIsTurnedOff(configId)) {\r\n return;\r\n }\r\n if (!this.currentLogLevelIsEqualOrSmallerThan(configId, LogLevel.Warn)) {\r\n return;\r\n }\r\n if (!!args && !!args.length) {\r\n console.warn(`[WARN] ${configId} - ${message}`, ...args);\r\n }\r\n else {\r\n console.warn(`[WARN] ${configId} - ${message}`);\r\n }\r\n }\r\n logErrorWithConfig(configId, message, ...args) {\r\n if (this.loggingIsTurnedOff(configId)) {\r\n return;\r\n }\r\n if (!!args && !!args.length) {\r\n console.error(`[ERROR] ${configId} - ${message}`, ...args);\r\n }\r\n else {\r\n console.error(`[ERROR] ${configId} - ${message}`);\r\n }\r\n }\r\n logErrorWithoutConfig(message, ...args) {\r\n if (!!args && !!args.length) {\r\n console.error(`[ERROR] - ${message}`, ...args);\r\n }\r\n else {\r\n console.error(`[ERROR] - ${message}`);\r\n }\r\n }\r\n currentLogLevelIsEqualOrSmallerThan(configId, logLevelToCompare) {\r\n const { logLevel } = this.configurationProvider.getOpenIDConfiguration(configId) || {};\r\n return logLevel <= logLevelToCompare;\r\n }\r\n logLevelIsSet(configId) {\r\n const { logLevel } = this.configurationProvider.getOpenIDConfiguration(configId) || {};\r\n if (logLevel === null) {\r\n return false;\r\n }\r\n if (logLevel === undefined) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n loggingIsTurnedOff(configId) {\r\n const { logLevel } = this.configurationProvider.getOpenIDConfiguration(configId) || {};\r\n return logLevel === LogLevel.None;\r\n }\r\n}\r\nLoggerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: LoggerService, deps: [{ token: ConfigurationProvider }], target: i0.ɵɵFactoryTarget.Injectable });\r\nLoggerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: LoggerService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: LoggerService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: ConfigurationProvider }]; } });\n\nclass BrowserStorageService {\r\n constructor(configProvider, loggerService) {\r\n this.configProvider = configProvider;\r\n this.loggerService = loggerService;\r\n }\r\n read(key, configId) {\r\n if (!this.hasStorage()) {\r\n this.loggerService.logDebug(configId, `Wanted to read '${key}' but Storage was undefined`);\r\n return null;\r\n }\r\n const storage = this.getStorage(configId);\r\n if (!storage) {\r\n this.loggerService.logDebug(configId, `Wanted to read config for '${configId}' but Storage was falsy`);\r\n return null;\r\n }\r\n const storedConfig = storage.read(configId);\r\n if (!storedConfig) {\r\n return null;\r\n }\r\n return JSON.parse(storedConfig);\r\n }\r\n write(value, configId) {\r\n if (!this.hasStorage()) {\r\n this.loggerService.logDebug(configId, `Wanted to write '${value}' but Storage was falsy`);\r\n return false;\r\n }\r\n const storage = this.getStorage(configId);\r\n if (!storage) {\r\n this.loggerService.logDebug(configId, `Wanted to write '${value}' but Storage was falsy`);\r\n return false;\r\n }\r\n value = value || null;\r\n storage.write(configId, JSON.stringify(value));\r\n return true;\r\n }\r\n remove(key, configId) {\r\n if (!this.hasStorage()) {\r\n this.loggerService.logDebug(configId, `Wanted to remove '${key}' but Storage was falsy`);\r\n return false;\r\n }\r\n const storage = this.getStorage(configId);\r\n if (!storage) {\r\n this.loggerService.logDebug(configId, `Wanted to write '${key}' but Storage was falsy`);\r\n return false;\r\n }\r\n storage.remove(key);\r\n return true;\r\n }\r\n // TODO THIS STORAGE WANTS AN ID BUT CLEARS EVERYTHING\r\n clear(configId) {\r\n if (!this.hasStorage()) {\r\n this.loggerService.logDebug(configId, `Wanted to clear storage but Storage was falsy`);\r\n return false;\r\n }\r\n const storage = this.getStorage(configId);\r\n if (!storage) {\r\n this.loggerService.logDebug(configId, `Wanted to clear storage but Storage was falsy`);\r\n return false;\r\n }\r\n storage.clear();\r\n return true;\r\n }\r\n getStorage(configId) {\r\n const { storage } = this.configProvider.getOpenIDConfiguration(configId) || {};\r\n return storage;\r\n }\r\n hasStorage() {\r\n return typeof Storage !== 'undefined';\r\n }\r\n}\r\nBrowserStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: BrowserStorageService, deps: [{ token: ConfigurationProvider }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nBrowserStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: BrowserStorageService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: BrowserStorageService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: ConfigurationProvider }, { type: LoggerService }]; } });\n\nclass StoragePersistenceService {\r\n constructor(browserStorageService) {\r\n this.browserStorageService = browserStorageService;\r\n }\r\n read(key, configId) {\r\n const storedConfig = this.browserStorageService.read(key, configId) || {};\r\n return storedConfig[key];\r\n }\r\n write(key, value, configId) {\r\n const storedConfig = this.browserStorageService.read(key, configId) || {};\r\n storedConfig[key] = value;\r\n this.browserStorageService.write(storedConfig, configId);\r\n }\r\n remove(key, configId) {\r\n const storedConfig = this.browserStorageService.read(key, configId) || {};\r\n delete storedConfig[key];\r\n this.browserStorageService.write(storedConfig, configId);\r\n }\r\n clear(configId) {\r\n this.browserStorageService.clear(configId);\r\n }\r\n resetStorageFlowData(configId) {\r\n this.remove('session_state', configId);\r\n this.remove('storageSilentRenewRunning', configId);\r\n this.remove('codeVerifier', configId);\r\n this.remove('userData', configId);\r\n this.remove('storageCustomParamsAuthRequest', configId);\r\n this.remove('access_token_expires_at', configId);\r\n this.remove('storageCustomParamsRefresh', configId);\r\n this.remove('storageCustomParamsEndSession', configId);\r\n }\r\n resetAuthStateInStorage(configId) {\r\n this.remove('authzData', configId);\r\n this.remove('authnResult', configId);\r\n }\r\n getAccessToken(configId) {\r\n return this.read('authzData', configId);\r\n }\r\n getIdToken(configId) {\r\n var _a;\r\n return (_a = this.read('authnResult', configId)) === null || _a === void 0 ? void 0 : _a.id_token;\r\n }\r\n getRefreshToken(configId) {\r\n var _a;\r\n return (_a = this.read('authnResult', configId)) === null || _a === void 0 ? void 0 : _a.refresh_token;\r\n }\r\n getAuthenticationResult(configId) {\r\n return this.read('authnResult', configId);\r\n }\r\n}\r\nStoragePersistenceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StoragePersistenceService, deps: [{ token: BrowserStorageService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nStoragePersistenceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StoragePersistenceService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StoragePersistenceService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: BrowserStorageService }]; } });\n\nclass PublicEventsService {\r\n constructor() {\r\n this.notify = new ReplaySubject(1);\r\n }\r\n /**\r\n * Fires a new event.\r\n *\r\n * @param type The event type.\r\n * @param value The event value.\r\n */\r\n fireEvent(type, value) {\r\n this.notify.next({ type, value });\r\n }\r\n /**\r\n * Wires up the event notification observable.\r\n */\r\n registerForEvents() {\r\n return this.notify.asObservable();\r\n }\r\n}\r\nPublicEventsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PublicEventsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nPublicEventsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PublicEventsService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PublicEventsService, decorators: [{\r\n type: Injectable\r\n }] });\n\nconst PARTS_OF_TOKEN = 3;\r\nclass TokenHelperService {\r\n constructor(loggerService) {\r\n this.loggerService = loggerService;\r\n }\r\n getTokenExpirationDate(dataIdToken) {\r\n if (!dataIdToken.hasOwnProperty('exp')) {\r\n return new Date(new Date().toUTCString());\r\n }\r\n const date = new Date(0); // The 0 here is the key, which sets the date to the epoch\r\n date.setUTCSeconds(dataIdToken.exp);\r\n return date;\r\n }\r\n getHeaderFromToken(token, encoded, configId) {\r\n if (!this.tokenIsValid(token, configId)) {\r\n return {};\r\n }\r\n return this.getPartOfToken(token, 0, encoded);\r\n }\r\n getPayloadFromToken(token, encoded, configId) {\r\n if (!this.tokenIsValid(token, configId)) {\r\n return {};\r\n }\r\n return this.getPartOfToken(token, 1, encoded);\r\n }\r\n getSignatureFromToken(token, encoded, configId) {\r\n if (!this.tokenIsValid(token, configId)) {\r\n return {};\r\n }\r\n return this.getPartOfToken(token, 2, encoded);\r\n }\r\n getPartOfToken(token, index, encoded) {\r\n const partOfToken = this.extractPartOfToken(token, index);\r\n if (encoded) {\r\n return partOfToken;\r\n }\r\n const result = this.urlBase64Decode(partOfToken);\r\n return JSON.parse(result);\r\n }\r\n urlBase64Decode(str) {\r\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\r\n switch (output.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n output += '==';\r\n break;\r\n case 3:\r\n output += '=';\r\n break;\r\n default:\r\n throw Error('Illegal base64url string!');\r\n }\r\n const decoded = typeof window !== 'undefined' ? window.atob(output) : Buffer.from(output, 'base64').toString('binary');\r\n try {\r\n // Going backwards: from byte stream, to percent-encoding, to original string.\r\n return decodeURIComponent(decoded\r\n .split('')\r\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\r\n .join(''));\r\n }\r\n catch (err) {\r\n return decoded;\r\n }\r\n }\r\n tokenIsValid(token, configId) {\r\n if (!token) {\r\n this.loggerService.logError(configId, `token '${token}' is not valid --> token falsy`);\r\n return false;\r\n }\r\n if (!token.includes('.')) {\r\n this.loggerService.logError(configId, `token '${token}' is not valid --> no dots included`);\r\n return false;\r\n }\r\n const parts = token.split('.');\r\n if (parts.length !== PARTS_OF_TOKEN) {\r\n this.loggerService.logError(configId, `token '${token}' is not valid --> token has to have exactly ${PARTS_OF_TOKEN - 1} dots`);\r\n return false;\r\n }\r\n return true;\r\n }\r\n extractPartOfToken(token, index) {\r\n return token.split('.')[index];\r\n }\r\n}\r\nTokenHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: TokenHelperService, deps: [{ token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nTokenHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: TokenHelperService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: TokenHelperService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }]; } });\n\nclass JsrsAsignReducedService {\r\n generateCodeChallenge(codeVerifier) {\r\n const hash = KJUR.crypto.Util.hashString(codeVerifier, 'sha256');\r\n const testData = hextob64u(hash);\r\n return testData;\r\n }\r\n generateAtHash(accessToken, sha) {\r\n const hash = KJUR.crypto.Util.hashString(accessToken, sha);\r\n const first128bits = hash.substr(0, hash.length / 2);\r\n const testData = hextob64u(first128bits);\r\n return testData;\r\n }\r\n}\r\nJsrsAsignReducedService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: JsrsAsignReducedService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nJsrsAsignReducedService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: JsrsAsignReducedService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: JsrsAsignReducedService, decorators: [{\r\n type: Injectable\r\n }] });\n\n// http://openid.net/specs/openid-connect-implicit-1_0.html\r\n// id_token\r\n// id_token C1: The Issuer Identifier for the OpenID Provider (which is typically obtained during Discovery)\r\n// MUST exactly match the value of the iss (issuer) Claim.\r\n//\r\n// id_token C2: The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified\r\n// by the iss (issuer) Claim as an audience.The ID Token MUST be rejected if the ID Token does not list the Client as a valid audience,\r\n// or if it contains additional audiences not trusted by the Client.\r\n//\r\n// id_token C3: If the ID Token contains multiple audiences, the Client SHOULD verify that an azp Claim is present.\r\n//\r\n// id_token C4: If an azp (authorized party) Claim is present, the Client SHOULD verify that its client_id is the Claim Value.\r\n//\r\n// id_token C5: The Client MUST validate the signature of the ID Token according to JWS [JWS] using the algorithm specified in the\r\n// alg Header Parameter of the JOSE Header.The Client MUST use the keys provided by the Issuer.\r\n//\r\n// id_token C6: The alg value SHOULD be RS256. Validation of tokens using other signing algorithms is described in the OpenID Connect\r\n// Core 1.0\r\n// [OpenID.Core] specification.\r\n//\r\n// id_token C7: The current time MUST be before the time represented by the exp Claim (possibly allowing for some small leeway to account\r\n// for clock skew).\r\n//\r\n// id_token C8: The iat Claim can be used to reject tokens that were issued too far away from the current time,\r\n// limiting the amount of time that nonces need to be stored to prevent attacks.The acceptable range is Client specific.\r\n//\r\n// id_token C9: The value of the nonce Claim MUST be checked to verify that it is the same value as the one that was sent\r\n// in the Authentication Request.The Client SHOULD check the nonce value for replay attacks.The precise method for detecting replay attacks\r\n// is Client specific.\r\n//\r\n// id_token C10: If the acr Claim was requested, the Client SHOULD check that the asserted Claim Value is appropriate.\r\n// The meaning and processing of acr Claim Values is out of scope for this document.\r\n//\r\n// id_token C11: When a max_age request is made, the Client SHOULD check the auth_time Claim value and request re- authentication\r\n// if it determines too much time has elapsed since the last End- User authentication.\r\n// Access Token Validation\r\n// access_token C1: Hash the octets of the ASCII representation of the access_token with the hash algorithm specified in JWA[JWA]\r\n// for the alg Header Parameter of the ID Token's JOSE Header. For instance, if the alg is RS256, the hash algorithm used is SHA-256.\r\n// access_token C2: Take the left- most half of the hash and base64url- encode it.\r\n// access_token C3: The value of at_hash in the ID Token MUST match the value produced in the previous step if at_hash is present\r\n// in the ID Token.\r\nclass TokenValidationService {\r\n constructor(tokenHelperService, loggerService, jsrsAsignReducedService) {\r\n this.tokenHelperService = tokenHelperService;\r\n this.loggerService = loggerService;\r\n this.jsrsAsignReducedService = jsrsAsignReducedService;\r\n this.keyAlgorithms = ['HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'PS256', 'PS384', 'PS512'];\r\n }\r\n // id_token C7: The current time MUST be before the time represented by the exp Claim\r\n // (possibly allowing for some small leeway to account for clock skew).\r\n hasIdTokenExpired(token, configId, offsetSeconds) {\r\n const decoded = this.tokenHelperService.getPayloadFromToken(token, false, configId);\r\n return !this.validateIdTokenExpNotExpired(decoded, configId, offsetSeconds);\r\n }\r\n // id_token C7: The current time MUST be before the time represented by the exp Claim\r\n // (possibly allowing for some small leeway to account for clock skew).\r\n validateIdTokenExpNotExpired(decodedIdToken, configId, offsetSeconds) {\r\n const tokenExpirationDate = this.tokenHelperService.getTokenExpirationDate(decodedIdToken);\r\n offsetSeconds = offsetSeconds || 0;\r\n if (!tokenExpirationDate) {\r\n return false;\r\n }\r\n const tokenExpirationValue = tokenExpirationDate.valueOf();\r\n const nowWithOffset = new Date(new Date().toUTCString()).valueOf() + offsetSeconds * 1000;\r\n const tokenNotExpired = tokenExpirationValue > nowWithOffset;\r\n this.loggerService.logDebug(configId, `Has idToken expired: ${!tokenNotExpired} --> expires in ${this.millisToMinutesAndSeconds(tokenExpirationValue - nowWithOffset)} , ${new Date(tokenExpirationValue).toLocaleTimeString()} > ${new Date(nowWithOffset).toLocaleTimeString()}`);\r\n // Token not expired?\r\n return tokenNotExpired;\r\n }\r\n validateAccessTokenNotExpired(accessTokenExpiresAt, configId, offsetSeconds) {\r\n // value is optional, so if it does not exist, then it has not expired\r\n if (!accessTokenExpiresAt) {\r\n return true;\r\n }\r\n offsetSeconds = offsetSeconds || 0;\r\n const accessTokenExpirationValue = accessTokenExpiresAt.valueOf();\r\n const nowWithOffset = new Date(new Date().toUTCString()).valueOf() + offsetSeconds * 1000;\r\n const tokenNotExpired = accessTokenExpirationValue > nowWithOffset;\r\n this.loggerService.logDebug(configId, `Has accessToken expired: ${!tokenNotExpired} --> expires in ${this.millisToMinutesAndSeconds(accessTokenExpirationValue - nowWithOffset)} , ${new Date(accessTokenExpirationValue).toLocaleTimeString()} > ${new Date(nowWithOffset).toLocaleTimeString()}`);\r\n // access token not expired?\r\n return tokenNotExpired;\r\n }\r\n // iss\r\n // REQUIRED. Issuer Identifier for the Issuer of the response.The iss value is a case-sensitive URL using the\r\n // https scheme that contains scheme, host,\r\n // and optionally, port number and path components and no query or fragment components.\r\n //\r\n // sub\r\n // REQUIRED. Subject Identifier.Locally unique and never reassigned identifier within the Issuer for the End- User,\r\n // which is intended to be consumed by the Client, e.g., 24400320 or AItOawmwtWwcT0k51BayewNvutrJUqsvl6qs7A4.\r\n // It MUST NOT exceed 255 ASCII characters in length.The sub value is a case-sensitive string.\r\n //\r\n // aud\r\n // REQUIRED. Audience(s) that this ID Token is intended for. It MUST contain the OAuth 2.0 client_id of the Relying Party as an\r\n // audience value.\r\n // It MAY also contain identifiers for other audiences.In the general case, the aud value is an array of case-sensitive strings.\r\n // In the common special case when there is one audience, the aud value MAY be a single case-sensitive string.\r\n //\r\n // exp\r\n // REQUIRED. Expiration time on or after which the ID Token MUST NOT be accepted for processing.\r\n // The processing of this parameter requires that the current date/ time MUST be before the expiration date/ time listed in the value.\r\n // Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.\r\n // Its value is a JSON [RFC7159] number representing the number of seconds from 1970- 01 - 01T00: 00:00Z as measured in UTC until\r\n // the date/ time.\r\n // See RFC 3339 [RFC3339] for details regarding date/ times in general and UTC in particular.\r\n //\r\n // iat\r\n // REQUIRED. Time at which the JWT was issued. Its value is a JSON number representing the number of seconds from\r\n // 1970- 01 - 01T00: 00: 00Z as measured\r\n // in UTC until the date/ time.\r\n validateRequiredIdToken(dataIdToken, configId) {\r\n let validated = true;\r\n if (!dataIdToken.hasOwnProperty('iss')) {\r\n validated = false;\r\n this.loggerService.logWarning(configId, 'iss is missing, this is required in the id_token');\r\n }\r\n if (!dataIdToken.hasOwnProperty('sub')) {\r\n validated = false;\r\n this.loggerService.logWarning(configId, 'sub is missing, this is required in the id_token');\r\n }\r\n if (!dataIdToken.hasOwnProperty('aud')) {\r\n validated = false;\r\n this.loggerService.logWarning(configId, 'aud is missing, this is required in the id_token');\r\n }\r\n if (!dataIdToken.hasOwnProperty('exp')) {\r\n validated = false;\r\n this.loggerService.logWarning(configId, 'exp is missing, this is required in the id_token');\r\n }\r\n if (!dataIdToken.hasOwnProperty('iat')) {\r\n validated = false;\r\n this.loggerService.logWarning(configId, 'iat is missing, this is required in the id_token');\r\n }\r\n return validated;\r\n }\r\n // id_token C8: The iat Claim can be used to reject tokens that were issued too far away from the current time,\r\n // limiting the amount of time that nonces need to be stored to prevent attacks.The acceptable range is Client specific.\r\n validateIdTokenIatMaxOffset(dataIdToken, maxOffsetAllowedInSeconds, disableIatOffsetValidation, configId) {\r\n if (disableIatOffsetValidation) {\r\n return true;\r\n }\r\n if (!dataIdToken.hasOwnProperty('iat')) {\r\n return false;\r\n }\r\n const dateTimeIatIdToken = new Date(0); // The 0 here is the key, which sets the date to the epoch\r\n dateTimeIatIdToken.setUTCSeconds(dataIdToken.iat);\r\n maxOffsetAllowedInSeconds = maxOffsetAllowedInSeconds || 0;\r\n const nowInUtc = new Date(new Date().toUTCString());\r\n const diff = nowInUtc.valueOf() - dateTimeIatIdToken.valueOf();\r\n const maxOffsetAllowedInMilliseconds = maxOffsetAllowedInSeconds * 1000;\r\n this.loggerService.logDebug(configId, `validate id token iat max offset ${diff} < ${maxOffsetAllowedInMilliseconds}`);\r\n if (diff > 0) {\r\n return diff < maxOffsetAllowedInMilliseconds;\r\n }\r\n return -diff < maxOffsetAllowedInMilliseconds;\r\n }\r\n // id_token C9: The value of the nonce Claim MUST be checked to verify that it is the same value as the one\r\n // that was sent in the Authentication Request.The Client SHOULD check the nonce value for replay attacks.\r\n // The precise method for detecting replay attacks is Client specific.\r\n // However the nonce claim SHOULD not be present for the refresh_token grant type\r\n // https://bitbucket.org/openid/connect/issues/1025/ambiguity-with-how-nonce-is-handled-on\r\n // The current spec is ambiguous and KeyCloak does send it.\r\n validateIdTokenNonce(dataIdToken, localNonce, ignoreNonceAfterRefresh, configId) {\r\n const isFromRefreshToken = (dataIdToken.nonce === undefined || ignoreNonceAfterRefresh) && localNonce === TokenValidationService.refreshTokenNoncePlaceholder;\r\n if (!isFromRefreshToken && dataIdToken.nonce !== localNonce) {\r\n this.loggerService.logDebug(configId, 'Validate_id_token_nonce failed, dataIdToken.nonce: ' + dataIdToken.nonce + ' local_nonce:' + localNonce);\r\n return false;\r\n }\r\n return true;\r\n }\r\n // id_token C1: The Issuer Identifier for the OpenID Provider (which is typically obtained during Discovery)\r\n // MUST exactly match the value of the iss (issuer) Claim.\r\n validateIdTokenIss(dataIdToken, authWellKnownEndpointsIssuer, configId) {\r\n if (dataIdToken.iss !== authWellKnownEndpointsIssuer) {\r\n this.loggerService.logDebug(configId, 'Validate_id_token_iss failed, dataIdToken.iss: ' +\r\n dataIdToken.iss +\r\n ' authWellKnownEndpoints issuer:' +\r\n authWellKnownEndpointsIssuer);\r\n return false;\r\n }\r\n return true;\r\n }\r\n // id_token C2: The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified\r\n // by the iss (issuer) Claim as an audience.\r\n // The ID Token MUST be rejected if the ID Token does not list the Client as a valid audience, or if it contains additional audiences\r\n // not trusted by the Client.\r\n validateIdTokenAud(dataIdToken, aud, configId) {\r\n if (Array.isArray(dataIdToken.aud)) {\r\n const result = dataIdToken.aud.includes(aud);\r\n if (!result) {\r\n this.loggerService.logDebug(configId, 'Validate_id_token_aud array failed, dataIdToken.aud: ' + dataIdToken.aud + ' client_id:' + aud);\r\n return false;\r\n }\r\n return true;\r\n }\r\n else if (dataIdToken.aud !== aud) {\r\n this.loggerService.logDebug(configId, 'Validate_id_token_aud failed, dataIdToken.aud: ' + dataIdToken.aud + ' client_id:' + aud);\r\n return false;\r\n }\r\n return true;\r\n }\r\n validateIdTokenAzpExistsIfMoreThanOneAud(dataIdToken) {\r\n if (!dataIdToken) {\r\n return false;\r\n }\r\n if (Array.isArray(dataIdToken.aud) && dataIdToken.aud.length > 1 && !dataIdToken.azp) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n // If an azp (authorized party) Claim is present, the Client SHOULD verify that its client_id is the Claim Value.\r\n validateIdTokenAzpValid(dataIdToken, clientId) {\r\n if (!(dataIdToken === null || dataIdToken === void 0 ? void 0 : dataIdToken.azp)) {\r\n return true;\r\n }\r\n if (dataIdToken.azp === clientId) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n validateStateFromHashCallback(state, localState, configId) {\r\n if (state !== localState) {\r\n this.loggerService.logDebug(configId, 'ValidateStateFromHashCallback failed, state: ' + state + ' local_state:' + localState);\r\n return false;\r\n }\r\n return true;\r\n }\r\n // id_token C5: The Client MUST validate the signature of the ID Token according to JWS [JWS] using the algorithm specified in the alg\r\n // Header Parameter of the JOSE Header.The Client MUST use the keys provided by the Issuer.\r\n // id_token C6: The alg value SHOULD be RS256. Validation of tokens using other signing algorithms is described in the\r\n // OpenID Connect Core 1.0 [OpenID.Core] specification.\r\n validateSignatureIdToken(idToken, jwtkeys, configId) {\r\n if (!jwtkeys || !jwtkeys.keys) {\r\n return false;\r\n }\r\n const headerData = this.tokenHelperService.getHeaderFromToken(idToken, false, configId);\r\n if (Object.keys(headerData).length === 0 && headerData.constructor === Object) {\r\n this.loggerService.logWarning(configId, 'id token has no header data');\r\n return false;\r\n }\r\n const kid = headerData.kid;\r\n const alg = headerData.alg;\r\n if (!this.keyAlgorithms.includes(alg)) {\r\n this.loggerService.logWarning(configId, 'alg not supported', alg);\r\n return false;\r\n }\r\n let jwtKtyToUse = 'RSA';\r\n if (alg.charAt(0) === 'E') {\r\n jwtKtyToUse = 'EC';\r\n }\r\n let isValid = false;\r\n // No kid in the Jose header\r\n if (!kid) {\r\n let keyToValidate;\r\n // If only one key, use it\r\n if (jwtkeys.keys.length === 1 && jwtkeys.keys[0].kty === jwtKtyToUse) {\r\n keyToValidate = jwtkeys.keys[0];\r\n }\r\n else {\r\n // More than one key\r\n // Make sure there's exactly 1 key candidate\r\n // kty \"RSA\" and \"EC\" uses \"sig\"\r\n let amountOfMatchingKeys = 0;\r\n for (const key of jwtkeys.keys) {\r\n if (key.kty === jwtKtyToUse && key.use === 'sig') {\r\n amountOfMatchingKeys++;\r\n keyToValidate = key;\r\n }\r\n }\r\n if (amountOfMatchingKeys > 1) {\r\n this.loggerService.logWarning(configId, 'no ID Token kid claim in JOSE header and multiple supplied in jwks_uri');\r\n return false;\r\n }\r\n }\r\n if (!keyToValidate) {\r\n this.loggerService.logWarning(configId, 'no keys found, incorrect Signature, validation failed for id_token');\r\n return false;\r\n }\r\n isValid = KJUR.jws.JWS.verify(idToken, KEYUTIL.getKey(keyToValidate), [alg]);\r\n if (!isValid) {\r\n this.loggerService.logWarning(configId, 'incorrect Signature, validation failed for id_token');\r\n }\r\n return isValid;\r\n }\r\n else {\r\n // kid in the Jose header of id_token\r\n for (const key of jwtkeys.keys) {\r\n if (key.kid === kid) {\r\n const publicKey = KEYUTIL.getKey(key);\r\n isValid = KJUR.jws.JWS.verify(idToken, publicKey, [alg]);\r\n if (!isValid) {\r\n this.loggerService.logWarning(configId, 'incorrect Signature, validation failed for id_token');\r\n }\r\n return isValid;\r\n }\r\n }\r\n }\r\n return isValid;\r\n }\r\n // Accepts ID Token without 'kid' claim in JOSE header if only one JWK supplied in 'jwks_url'\r\n //// private validate_no_kid_in_header_only_one_allowed_in_jwtkeys(header_data: any, jwtkeys: any): boolean {\r\n //// this.oidcSecurityCommon.logDebug('amount of jwtkeys.keys: ' + jwtkeys.keys.length);\r\n //// if (!header_data.hasOwnProperty('kid')) {\r\n //// // no kid defined in Jose header\r\n //// if (jwtkeys.keys.length != 1) {\r\n //// this.oidcSecurityCommon.logDebug('jwtkeys.keys.length != 1 and no kid in header');\r\n //// return false;\r\n //// }\r\n //// }\r\n //// return true;\r\n //// }\r\n // Access Token Validation\r\n // access_token C1: Hash the octets of the ASCII representation of the access_token with the hash algorithm specified in JWA[JWA]\r\n // for the alg Header Parameter of the ID Token's JOSE Header. For instance, if the alg is RS256, the hash algorithm used is SHA-256.\r\n // access_token C2: Take the left- most half of the hash and base64url- encode it.\r\n // access_token C3: The value of at_hash in the ID Token MUST match the value produced in the previous step if at_hash\r\n // is present in the ID Token.\r\n validateIdTokenAtHash(accessToken, atHash, idTokenAlg, configId) {\r\n this.loggerService.logDebug(configId, 'at_hash from the server:' + atHash);\r\n // 'sha256' 'sha384' 'sha512'\r\n let sha = 'sha256';\r\n if (idTokenAlg.includes('384')) {\r\n sha = 'sha384';\r\n }\r\n else if (idTokenAlg.includes('512')) {\r\n sha = 'sha512';\r\n }\r\n const testData = this.jsrsAsignReducedService.generateAtHash('' + accessToken, sha);\r\n this.loggerService.logDebug(configId, 'at_hash client validation not decoded:' + testData);\r\n if (testData === atHash) {\r\n return true; // isValid;\r\n }\r\n else {\r\n const testValue = this.jsrsAsignReducedService.generateAtHash('' + decodeURIComponent(accessToken), sha);\r\n this.loggerService.logDebug(configId, '-gen access--' + testValue);\r\n if (testValue === atHash) {\r\n return true; // isValid\r\n }\r\n }\r\n return false;\r\n }\r\n millisToMinutesAndSeconds(millis) {\r\n const minutes = Math.floor(millis / 60000);\r\n const seconds = ((millis % 60000) / 1000).toFixed(0);\r\n return minutes + ':' + (+seconds < 10 ? '0' : '') + seconds;\r\n }\r\n}\r\nTokenValidationService.refreshTokenNoncePlaceholder = '--RefreshToken--';\r\nTokenValidationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: TokenValidationService, deps: [{ token: TokenHelperService }, { token: LoggerService }, { token: JsrsAsignReducedService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nTokenValidationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: TokenValidationService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: TokenValidationService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: TokenHelperService }, { type: LoggerService }, { type: JsrsAsignReducedService }]; } });\n\nconst DEFAULT_AUTHRESULT = { isAuthenticated: false, allConfigsAuthenticated: [] };\r\nclass AuthStateService {\r\n constructor(storagePersistenceService, loggerService, publicEventsService, configurationProvider, tokenValidationService) {\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.loggerService = loggerService;\r\n this.publicEventsService = publicEventsService;\r\n this.configurationProvider = configurationProvider;\r\n this.tokenValidationService = tokenValidationService;\r\n this.authenticatedInternal$ = new BehaviorSubject(DEFAULT_AUTHRESULT);\r\n }\r\n get authenticated$() {\r\n return this.authenticatedInternal$.asObservable().pipe(distinctUntilChanged());\r\n }\r\n setAuthenticatedAndFireEvent() {\r\n const result = this.composeAuthenticatedResult();\r\n this.authenticatedInternal$.next(result);\r\n }\r\n setUnauthenticatedAndFireEvent(configIdToReset) {\r\n this.storagePersistenceService.resetAuthStateInStorage(configIdToReset);\r\n const result = this.composeUnAuthenticatedResult();\r\n this.authenticatedInternal$.next(result);\r\n }\r\n updateAndPublishAuthState(authenticationResult) {\r\n this.publicEventsService.fireEvent(EventTypes.NewAuthenticationResult, authenticationResult);\r\n }\r\n setAuthorizationData(accessToken, authResult, configId) {\r\n this.loggerService.logDebug(configId, `storing the accessToken '${accessToken}'`);\r\n this.storagePersistenceService.write('authzData', accessToken, configId);\r\n this.persistAccessTokenExpirationTime(authResult, configId);\r\n this.setAuthenticatedAndFireEvent();\r\n }\r\n getAccessToken(configId) {\r\n if (!this.isAuthenticated(configId)) {\r\n return null;\r\n }\r\n const token = this.storagePersistenceService.getAccessToken(configId);\r\n return this.decodeURIComponentSafely(token);\r\n }\r\n getIdToken(configId) {\r\n if (!this.isAuthenticated(configId)) {\r\n return null;\r\n }\r\n const token = this.storagePersistenceService.getIdToken(configId);\r\n return this.decodeURIComponentSafely(token);\r\n }\r\n getRefreshToken(configId) {\r\n if (!this.isAuthenticated(configId)) {\r\n return null;\r\n }\r\n const token = this.storagePersistenceService.getRefreshToken(configId);\r\n return this.decodeURIComponentSafely(token);\r\n }\r\n getAuthenticationResult(configId) {\r\n if (!this.isAuthenticated(configId)) {\r\n return null;\r\n }\r\n return this.storagePersistenceService.getAuthenticationResult(configId);\r\n }\r\n areAuthStorageTokensValid(configId) {\r\n if (!this.isAuthenticated(configId)) {\r\n return false;\r\n }\r\n if (this.hasIdTokenExpiredAndRenewCheckIsEnabled(configId)) {\r\n this.loggerService.logDebug(configId, 'persisted idToken is expired');\r\n return false;\r\n }\r\n if (this.hasAccessTokenExpiredIfExpiryExists(configId)) {\r\n this.loggerService.logDebug(configId, 'persisted accessToken is expired');\r\n return false;\r\n }\r\n this.loggerService.logDebug(configId, 'persisted idToken and accessToken are valid');\r\n return true;\r\n }\r\n hasIdTokenExpiredAndRenewCheckIsEnabled(configId) {\r\n const { renewTimeBeforeTokenExpiresInSeconds, enableIdTokenExpiredValidationInRenew } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!enableIdTokenExpiredValidationInRenew) {\r\n return false;\r\n }\r\n const tokenToCheck = this.storagePersistenceService.getIdToken(configId);\r\n const idTokenExpired = this.tokenValidationService.hasIdTokenExpired(tokenToCheck, configId, renewTimeBeforeTokenExpiresInSeconds);\r\n if (idTokenExpired) {\r\n this.publicEventsService.fireEvent(EventTypes.IdTokenExpired, idTokenExpired);\r\n }\r\n return idTokenExpired;\r\n }\r\n hasAccessTokenExpiredIfExpiryExists(configId) {\r\n const { renewTimeBeforeTokenExpiresInSeconds } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n const accessTokenExpiresIn = this.storagePersistenceService.read('access_token_expires_at', configId);\r\n const accessTokenHasNotExpired = this.tokenValidationService.validateAccessTokenNotExpired(accessTokenExpiresIn, configId, renewTimeBeforeTokenExpiresInSeconds);\r\n const hasExpired = !accessTokenHasNotExpired;\r\n if (hasExpired) {\r\n this.publicEventsService.fireEvent(EventTypes.TokenExpired, hasExpired);\r\n }\r\n return hasExpired;\r\n }\r\n isAuthenticated(configId) {\r\n return !!this.storagePersistenceService.getAccessToken(configId) && !!this.storagePersistenceService.getIdToken(configId);\r\n }\r\n decodeURIComponentSafely(token) {\r\n if (token) {\r\n return decodeURIComponent(token);\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n persistAccessTokenExpirationTime(authResult, configId) {\r\n if (authResult === null || authResult === void 0 ? void 0 : authResult.expires_in) {\r\n const accessTokenExpiryTime = new Date(new Date().toUTCString()).valueOf() + authResult.expires_in * 1000;\r\n this.storagePersistenceService.write('access_token_expires_at', accessTokenExpiryTime, configId);\r\n }\r\n }\r\n composeAuthenticatedResult() {\r\n if (!this.configurationProvider.hasManyConfigs()) {\r\n const { configId } = this.configurationProvider.getOpenIDConfiguration();\r\n return { isAuthenticated: true, allConfigsAuthenticated: [{ configId, isAuthenticated: true }] };\r\n }\r\n return this.checkAllConfigsIfTheyAreAuthenticated();\r\n }\r\n composeUnAuthenticatedResult() {\r\n if (!this.configurationProvider.hasManyConfigs()) {\r\n const { configId } = this.configurationProvider.getOpenIDConfiguration();\r\n return { isAuthenticated: false, allConfigsAuthenticated: [{ configId, isAuthenticated: false }] };\r\n }\r\n return this.checkAllConfigsIfTheyAreAuthenticated();\r\n }\r\n checkAllConfigsIfTheyAreAuthenticated() {\r\n const configs = this.configurationProvider.getAllConfigurations();\r\n const allConfigsAuthenticated = configs.map(({ configId }) => ({\r\n configId,\r\n isAuthenticated: this.isAuthenticated(configId),\r\n }));\r\n const isAuthenticated = allConfigsAuthenticated.every((x) => !!x.isAuthenticated);\r\n return { allConfigsAuthenticated, isAuthenticated };\r\n }\r\n}\r\nAuthStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthStateService, deps: [{ token: StoragePersistenceService }, { token: LoggerService }, { token: PublicEventsService }, { token: ConfigurationProvider }, { token: TokenValidationService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nAuthStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthStateService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthStateService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: StoragePersistenceService }, { type: LoggerService }, { type: PublicEventsService }, { type: ConfigurationProvider }, { type: TokenValidationService }]; } });\n\nconst STORAGE_KEY = 'redirect';\r\nclass AutoLoginService {\r\n constructor(storageService, router) {\r\n this.storageService = storageService;\r\n this.router = router;\r\n }\r\n checkSavedRedirectRouteAndNavigate(configId) {\r\n const savedRouteForRedirect = this.getStoredRedirectRoute(configId);\r\n if (savedRouteForRedirect) {\r\n this.deleteStoredRedirectRoute(configId);\r\n this.router.navigateByUrl(savedRouteForRedirect);\r\n }\r\n }\r\n /**\r\n * Saves the redirect URL to storage.\r\n *\r\n * @param url The redirect URL to save.\r\n */\r\n saveRedirectRoute(configId, url) {\r\n this.storageService.write(STORAGE_KEY, url, configId);\r\n }\r\n /**\r\n * Gets the stored redirect URL from storage.\r\n */\r\n getStoredRedirectRoute(configId) {\r\n return this.storageService.read(STORAGE_KEY, configId);\r\n }\r\n /**\r\n * Removes the redirect URL from storage.\r\n */\r\n deleteStoredRedirectRoute(configId) {\r\n this.storageService.remove(STORAGE_KEY, configId);\r\n }\r\n}\r\nAutoLoginService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AutoLoginService, deps: [{ token: StoragePersistenceService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });\r\nAutoLoginService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AutoLoginService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AutoLoginService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: StoragePersistenceService }, { type: i2.Router }]; } });\n\nclass UriEncoder {\r\n encodeKey(key) {\r\n return encodeURIComponent(key);\r\n }\r\n encodeValue(value) {\r\n return encodeURIComponent(value);\r\n }\r\n decodeKey(key) {\r\n return decodeURIComponent(key);\r\n }\r\n decodeValue(value) {\r\n return decodeURIComponent(value);\r\n }\r\n}\n\nclass RandomService {\r\n constructor(doc, loggerService) {\r\n this.doc = doc;\r\n this.loggerService = loggerService;\r\n }\r\n createRandom(requiredLength, configId) {\r\n if (requiredLength <= 0) {\r\n return '';\r\n }\r\n if (requiredLength > 0 && requiredLength < 7) {\r\n this.loggerService.logWarning(configId, `RandomService called with ${requiredLength} but 7 chars is the minimum, returning 10 chars`);\r\n requiredLength = 10;\r\n }\r\n const length = requiredLength - 6;\r\n const arr = new Uint8Array(Math.floor((length || length) / 2));\r\n if (this.getCrypto()) {\r\n this.getCrypto().getRandomValues(arr);\r\n }\r\n return Array.from(arr, this.toHex).join('') + this.randomString(7);\r\n }\r\n toHex(dec) {\r\n return ('0' + dec.toString(16)).substr(-2);\r\n }\r\n randomString(length) {\r\n let result = '';\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n const values = new Uint32Array(length);\r\n if (this.getCrypto()) {\r\n this.getCrypto().getRandomValues(values);\r\n for (let i = 0; i < length; i++) {\r\n result += characters[values[i] % characters.length];\r\n }\r\n }\r\n return result;\r\n }\r\n getCrypto() {\r\n // support for IE, (window.crypto || window.msCrypto)\r\n return this.doc.defaultView.crypto || this.doc.defaultView.msCrypto;\r\n }\r\n}\r\nRandomService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RandomService, deps: [{ token: DOCUMENT }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nRandomService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RandomService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RandomService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\r\n type: Inject,\r\n args: [DOCUMENT]\r\n }] }, { type: LoggerService }]; } });\n\nclass FlowsDataService {\r\n constructor(storagePersistenceService, randomService, configurationProvider, loggerService) {\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.randomService = randomService;\r\n this.configurationProvider = configurationProvider;\r\n this.loggerService = loggerService;\r\n }\r\n createNonce(configId) {\r\n const nonce = this.randomService.createRandom(40, configId);\r\n this.loggerService.logDebug(configId, 'Nonce created. nonce:' + nonce);\r\n this.setNonce(nonce, configId);\r\n return nonce;\r\n }\r\n setNonce(nonce, configId) {\r\n this.storagePersistenceService.write('authNonce', nonce, configId);\r\n }\r\n getAuthStateControl(configId) {\r\n return this.storagePersistenceService.read('authStateControl', configId);\r\n }\r\n setAuthStateControl(authStateControl, configId) {\r\n this.storagePersistenceService.write('authStateControl', authStateControl, configId);\r\n }\r\n getExistingOrCreateAuthStateControl(configId) {\r\n let state = this.storagePersistenceService.read('authStateControl', configId);\r\n if (!state) {\r\n state = this.randomService.createRandom(40, configId);\r\n this.storagePersistenceService.write('authStateControl', state, configId);\r\n }\r\n return state;\r\n }\r\n setSessionState(sessionState, configId) {\r\n this.storagePersistenceService.write('session_state', sessionState, configId);\r\n }\r\n resetStorageFlowData(configId) {\r\n this.storagePersistenceService.resetStorageFlowData(configId);\r\n }\r\n getCodeVerifier(configId) {\r\n return this.storagePersistenceService.read('codeVerifier', configId);\r\n }\r\n createCodeVerifier(configId) {\r\n const codeVerifier = this.randomService.createRandom(67, configId);\r\n this.storagePersistenceService.write('codeVerifier', codeVerifier, configId);\r\n return codeVerifier;\r\n }\r\n isSilentRenewRunning(configId) {\r\n const storageObject = this.getSilentRenewRunningStorageEntry(configId);\r\n if (!storageObject) {\r\n return false;\r\n }\r\n const { silentRenewTimeoutInSeconds } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n const timeOutInMilliseconds = silentRenewTimeoutInSeconds * 1000;\r\n const dateOfLaunchedProcessUtc = Date.parse(storageObject.dateOfLaunchedProcessUtc);\r\n const currentDateUtc = Date.parse(new Date().toISOString());\r\n const elapsedTimeInMilliseconds = Math.abs(currentDateUtc - dateOfLaunchedProcessUtc);\r\n const isProbablyStuck = elapsedTimeInMilliseconds > timeOutInMilliseconds;\r\n if (isProbablyStuck) {\r\n this.loggerService.logDebug(configId, 'silent renew process is probably stuck, state will be reset.', configId);\r\n this.resetSilentRenewRunning(configId);\r\n return false;\r\n }\r\n return storageObject.state === 'running';\r\n }\r\n setSilentRenewRunning(configId) {\r\n const storageObject = {\r\n state: 'running',\r\n dateOfLaunchedProcessUtc: new Date().toISOString(),\r\n };\r\n this.storagePersistenceService.write('storageSilentRenewRunning', JSON.stringify(storageObject), configId);\r\n }\r\n resetSilentRenewRunning(configId) {\r\n this.storagePersistenceService.write('storageSilentRenewRunning', '', configId);\r\n }\r\n getSilentRenewRunningStorageEntry(configId) {\r\n const storageEntry = this.storagePersistenceService.read('storageSilentRenewRunning', configId);\r\n if (!storageEntry) {\r\n return null;\r\n }\r\n return JSON.parse(storageEntry);\r\n }\r\n}\r\nFlowsDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: FlowsDataService, deps: [{ token: StoragePersistenceService }, { token: RandomService }, { token: ConfigurationProvider }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nFlowsDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: FlowsDataService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: FlowsDataService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: StoragePersistenceService }, { type: RandomService }, { type: ConfigurationProvider }, { type: LoggerService }]; } });\n\nclass FlowHelper {\r\n constructor(configurationProvider) {\r\n this.configurationProvider = configurationProvider;\r\n }\r\n isCurrentFlowCodeFlow(configId) {\r\n return this.currentFlowIs('code', configId);\r\n }\r\n isCurrentFlowAnyImplicitFlow(configId) {\r\n return this.isCurrentFlowImplicitFlowWithAccessToken(configId) || this.isCurrentFlowImplicitFlowWithoutAccessToken(configId);\r\n }\r\n isCurrentFlowCodeFlowWithRefreshTokens(configId) {\r\n const { useRefreshToken } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (this.isCurrentFlowCodeFlow(configId) && useRefreshToken) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n isCurrentFlowImplicitFlowWithAccessToken(configId) {\r\n return this.currentFlowIs('id_token token', configId);\r\n }\r\n currentFlowIs(flowTypes, configId) {\r\n const { responseType } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (Array.isArray(flowTypes)) {\r\n return flowTypes.some((x) => responseType === x);\r\n }\r\n return responseType === flowTypes;\r\n }\r\n isCurrentFlowImplicitFlowWithoutAccessToken(configId) {\r\n return this.currentFlowIs('id_token', configId);\r\n }\r\n}\r\nFlowHelper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: FlowHelper, deps: [{ token: ConfigurationProvider }], target: i0.ɵɵFactoryTarget.Injectable });\r\nFlowHelper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: FlowHelper });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: FlowHelper, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: ConfigurationProvider }]; } });\n\nconst CALLBACK_PARAMS_TO_CHECK = ['code', 'state', 'token', 'id_token'];\r\nconst AUTH0_ENDPOINT = 'auth0.com';\r\nclass UrlService {\r\n constructor(configurationProvider, loggerService, flowsDataService, flowHelper, storagePersistenceService, jsrsAsignReducedService) {\r\n this.configurationProvider = configurationProvider;\r\n this.loggerService = loggerService;\r\n this.flowsDataService = flowsDataService;\r\n this.flowHelper = flowHelper;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.jsrsAsignReducedService = jsrsAsignReducedService;\r\n }\r\n getUrlParameter(urlToCheck, name) {\r\n if (!urlToCheck) {\r\n return '';\r\n }\r\n if (!name) {\r\n return '';\r\n }\r\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\r\n const results = regex.exec(urlToCheck);\r\n return results === null ? '' : decodeURIComponent(results[1]);\r\n }\r\n isCallbackFromSts(currentUrl) {\r\n return CALLBACK_PARAMS_TO_CHECK.some((x) => !!this.getUrlParameter(currentUrl, x));\r\n }\r\n getRefreshSessionSilentRenewUrl(configId, customParams) {\r\n if (this.flowHelper.isCurrentFlowCodeFlow(configId)) {\r\n return this.createUrlCodeFlowWithSilentRenew(configId, customParams);\r\n }\r\n return this.createUrlImplicitFlowWithSilentRenew(configId, customParams) || '';\r\n }\r\n getAuthorizeParUrl(requestUri, configId) {\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n if (!authWellKnownEndPoints) {\r\n this.loggerService.logError(configId, 'authWellKnownEndpoints is undefined');\r\n return null;\r\n }\r\n const authorizationEndpoint = authWellKnownEndPoints.authorizationEndpoint;\r\n if (!authorizationEndpoint) {\r\n this.loggerService.logError(configId, `Can not create an authorize URL when authorizationEndpoint is '${authorizationEndpoint}'`);\r\n return null;\r\n }\r\n const { clientId } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!clientId) {\r\n this.loggerService.logError(configId, `getAuthorizeParUrl could not add clientId because it was: `, clientId);\r\n return null;\r\n }\r\n const urlParts = authorizationEndpoint.split('?');\r\n const authorizationUrl = urlParts[0];\r\n const existingParams = urlParts[1];\r\n let params = this.createHttpParams(existingParams);\r\n params = params.set('request_uri', requestUri);\r\n params = params.append('client_id', clientId);\r\n return `${authorizationUrl}?${params}`;\r\n }\r\n getAuthorizeUrl(configId, customParams) {\r\n if (this.flowHelper.isCurrentFlowCodeFlow(configId)) {\r\n return this.createUrlCodeFlowAuthorize(configId, customParams);\r\n }\r\n return this.createUrlImplicitFlowAuthorize(configId, customParams) || '';\r\n }\r\n createEndSessionUrl(idTokenHint, configId, customParamsEndSession) {\r\n // Auth0 needs a special logout url\r\n // See https://auth0.com/docs/api/authentication#logout\r\n if (this.isAuth0Endpoint(configId)) {\r\n return this.composeAuth0Endpoint(configId);\r\n }\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n const endSessionEndpoint = authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.endSessionEndpoint;\r\n if (!endSessionEndpoint) {\r\n return null;\r\n }\r\n const urlParts = endSessionEndpoint.split('?');\r\n const authorizationEndSessionUrl = urlParts[0];\r\n const existingParams = urlParts[1];\r\n let params = this.createHttpParams(existingParams);\r\n params = params.set('id_token_hint', idTokenHint);\r\n const postLogoutRedirectUri = this.getPostLogoutRedirectUrl(configId);\r\n if (postLogoutRedirectUri) {\r\n params = params.append('post_logout_redirect_uri', postLogoutRedirectUri);\r\n }\r\n if (customParamsEndSession) {\r\n params = this.appendCustomParams(Object.assign({}, customParamsEndSession), params);\r\n }\r\n return `${authorizationEndSessionUrl}?${params}`;\r\n }\r\n createRevocationEndpointBodyAccessToken(token, configId) {\r\n const clientId = this.getClientId(configId);\r\n if (!clientId) {\r\n return null;\r\n }\r\n let params = this.createHttpParams();\r\n params = params.set('client_id', clientId);\r\n params = params.set('token', token);\r\n params = params.set('token_type_hint', 'access_token');\r\n return params.toString();\r\n }\r\n createRevocationEndpointBodyRefreshToken(token, configId) {\r\n const clientId = this.getClientId(configId);\r\n if (!clientId) {\r\n return null;\r\n }\r\n let params = this.createHttpParams();\r\n params = params.set('client_id', clientId);\r\n params = params.set('token', token);\r\n params = params.set('token_type_hint', 'refresh_token');\r\n return params.toString();\r\n }\r\n getRevocationEndpointUrl(configId) {\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n const revocationEndpoint = authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.revocationEndpoint;\r\n if (!revocationEndpoint) {\r\n return null;\r\n }\r\n const urlParts = revocationEndpoint.split('?');\r\n const revocationEndpointUrl = urlParts[0];\r\n return revocationEndpointUrl;\r\n }\r\n createBodyForCodeFlowCodeRequest(code, configId, customTokenParams) {\r\n const codeVerifier = this.flowsDataService.getCodeVerifier(configId);\r\n if (!codeVerifier) {\r\n this.loggerService.logError(configId, `CodeVerifier is not set `, codeVerifier);\r\n return null;\r\n }\r\n const clientId = this.getClientId(configId);\r\n if (!clientId) {\r\n return null;\r\n }\r\n let params = this.createHttpParams();\r\n params = params.set('grant_type', 'authorization_code');\r\n params = params.set('client_id', clientId);\r\n params = params.set('code_verifier', codeVerifier);\r\n params = params.set('code', code);\r\n if (customTokenParams) {\r\n params = this.appendCustomParams(Object.assign({}, customTokenParams), params);\r\n }\r\n const silentRenewUrl = this.getSilentRenewUrl(configId);\r\n if (this.flowsDataService.isSilentRenewRunning(configId) && silentRenewUrl) {\r\n params = params.set('redirect_uri', silentRenewUrl);\r\n return params.toString();\r\n }\r\n const redirectUrl = this.getRedirectUrl(configId);\r\n if (!redirectUrl) {\r\n return null;\r\n }\r\n params = params.set('redirect_uri', redirectUrl);\r\n return params.toString();\r\n }\r\n createBodyForCodeFlowRefreshTokensRequest(refreshToken, configId, customParamsRefresh) {\r\n const clientId = this.getClientId(configId);\r\n if (!clientId) {\r\n return null;\r\n }\r\n let params = this.createHttpParams();\r\n params = params.set('grant_type', 'refresh_token');\r\n params = params.set('client_id', clientId);\r\n params = params.set('refresh_token', refreshToken);\r\n if (customParamsRefresh) {\r\n params = this.appendCustomParams(Object.assign({}, customParamsRefresh), params);\r\n }\r\n return params.toString();\r\n }\r\n createBodyForParCodeFlowRequest(configId, customParamsRequest) {\r\n const redirectUrl = this.getRedirectUrl(configId);\r\n if (!redirectUrl) {\r\n return null;\r\n }\r\n const state = this.flowsDataService.getExistingOrCreateAuthStateControl(configId);\r\n const nonce = this.flowsDataService.createNonce(configId);\r\n this.loggerService.logDebug(configId, 'Authorize created. adding myautostate: ' + state);\r\n // code_challenge with \"S256\"\r\n const codeVerifier = this.flowsDataService.createCodeVerifier(configId);\r\n const codeChallenge = this.jsrsAsignReducedService.generateCodeChallenge(codeVerifier);\r\n const { clientId, responseType, scope, hdParam, customParamsAuthRequest } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n let params = this.createHttpParams('');\r\n params = params.set('client_id', clientId);\r\n params = params.append('redirect_uri', redirectUrl);\r\n params = params.append('response_type', responseType);\r\n params = params.append('scope', scope);\r\n params = params.append('nonce', nonce);\r\n params = params.append('state', state);\r\n params = params.append('code_challenge', codeChallenge);\r\n params = params.append('code_challenge_method', 'S256');\r\n if (hdParam) {\r\n params = params.append('hd', hdParam);\r\n }\r\n if (customParamsAuthRequest) {\r\n params = this.appendCustomParams(Object.assign({}, customParamsAuthRequest), params);\r\n }\r\n if (customParamsRequest) {\r\n params = this.appendCustomParams(Object.assign({}, customParamsRequest), params);\r\n }\r\n return params.toString();\r\n }\r\n createAuthorizeUrl(codeChallenge, redirectUrl, nonce, state, configId, prompt, customRequestParams) {\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n const authorizationEndpoint = authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.authorizationEndpoint;\r\n if (!authorizationEndpoint) {\r\n this.loggerService.logError(configId, `Can not create an authorize URL when authorizationEndpoint is '${authorizationEndpoint}'`);\r\n return null;\r\n }\r\n const { clientId, responseType, scope, hdParam, customParamsAuthRequest } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!clientId) {\r\n this.loggerService.logError(configId, `createAuthorizeUrl could not add clientId because it was: `, clientId);\r\n return null;\r\n }\r\n if (!responseType) {\r\n this.loggerService.logError(configId, `createAuthorizeUrl could not add responseType because it was: `, responseType);\r\n return null;\r\n }\r\n if (!scope) {\r\n this.loggerService.logError(configId, `createAuthorizeUrl could not add scope because it was: `, scope);\r\n return null;\r\n }\r\n const urlParts = authorizationEndpoint.split('?');\r\n const authorizationUrl = urlParts[0];\r\n const existingParams = urlParts[1];\r\n let params = this.createHttpParams(existingParams);\r\n params = params.set('client_id', clientId);\r\n params = params.append('redirect_uri', redirectUrl);\r\n params = params.append('response_type', responseType);\r\n params = params.append('scope', scope);\r\n params = params.append('nonce', nonce);\r\n params = params.append('state', state);\r\n if (this.flowHelper.isCurrentFlowCodeFlow(configId)) {\r\n params = params.append('code_challenge', codeChallenge);\r\n params = params.append('code_challenge_method', 'S256');\r\n }\r\n const mergedParams = Object.assign(Object.assign({}, customParamsAuthRequest), customRequestParams);\r\n if (Object.keys(mergedParams).length > 0) {\r\n params = this.appendCustomParams(Object.assign({}, mergedParams), params);\r\n }\r\n if (prompt) {\r\n params = this.overWriteParam(params, 'prompt', prompt);\r\n }\r\n if (hdParam) {\r\n params = params.append('hd', hdParam);\r\n }\r\n return `${authorizationUrl}?${params}`;\r\n }\r\n createUrlImplicitFlowWithSilentRenew(configId, customParams) {\r\n const state = this.flowsDataService.getExistingOrCreateAuthStateControl(configId);\r\n const nonce = this.flowsDataService.createNonce(configId);\r\n const silentRenewUrl = this.getSilentRenewUrl(configId);\r\n if (!silentRenewUrl) {\r\n return null;\r\n }\r\n this.loggerService.logDebug(configId, 'RefreshSession created. adding myautostate: ', state);\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n if (authWellKnownEndPoints) {\r\n return this.createAuthorizeUrl('', silentRenewUrl, nonce, state, configId, 'none', customParams);\r\n }\r\n this.loggerService.logError(configId, 'authWellKnownEndpoints is undefined');\r\n return null;\r\n }\r\n createUrlCodeFlowWithSilentRenew(configId, customParams) {\r\n const state = this.flowsDataService.getExistingOrCreateAuthStateControl(configId);\r\n const nonce = this.flowsDataService.createNonce(configId);\r\n this.loggerService.logDebug(configId, 'RefreshSession created. adding myautostate: ' + state);\r\n // code_challenge with \"S256\"\r\n const codeVerifier = this.flowsDataService.createCodeVerifier(configId);\r\n const codeChallenge = this.jsrsAsignReducedService.generateCodeChallenge(codeVerifier);\r\n const silentRenewUrl = this.getSilentRenewUrl(configId);\r\n if (!silentRenewUrl) {\r\n return null;\r\n }\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n if (authWellKnownEndPoints) {\r\n return this.createAuthorizeUrl(codeChallenge, silentRenewUrl, nonce, state, configId, 'none', customParams);\r\n }\r\n this.loggerService.logWarning(configId, 'authWellKnownEndpoints is undefined');\r\n return null;\r\n }\r\n createUrlImplicitFlowAuthorize(configId, customParams) {\r\n const state = this.flowsDataService.getExistingOrCreateAuthStateControl(configId);\r\n const nonce = this.flowsDataService.createNonce(configId);\r\n this.loggerService.logDebug(configId, 'Authorize created. adding myautostate: ' + state);\r\n const redirectUrl = this.getRedirectUrl(configId);\r\n if (!redirectUrl) {\r\n return null;\r\n }\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n if (authWellKnownEndPoints) {\r\n return this.createAuthorizeUrl('', redirectUrl, nonce, state, configId, null, customParams);\r\n }\r\n this.loggerService.logError(configId, 'authWellKnownEndpoints is undefined');\r\n return null;\r\n }\r\n createUrlCodeFlowAuthorize(configId, customParams) {\r\n const state = this.flowsDataService.getExistingOrCreateAuthStateControl(configId);\r\n const nonce = this.flowsDataService.createNonce(configId);\r\n this.loggerService.logDebug(configId, 'Authorize created. adding myautostate: ' + state);\r\n const redirectUrl = this.getRedirectUrl(configId);\r\n if (!redirectUrl) {\r\n return null;\r\n }\r\n // code_challenge with \"S256\"\r\n const codeVerifier = this.flowsDataService.createCodeVerifier(configId);\r\n const codeChallenge = this.jsrsAsignReducedService.generateCodeChallenge(codeVerifier);\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n if (authWellKnownEndPoints) {\r\n return this.createAuthorizeUrl(codeChallenge, redirectUrl, nonce, state, configId, null, customParams);\r\n }\r\n this.loggerService.logError(configId, 'authWellKnownEndpoints is undefined');\r\n return null;\r\n }\r\n getRedirectUrl(configId) {\r\n const { redirectUrl } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!redirectUrl) {\r\n this.loggerService.logError(configId, `could not get redirectUrl, was: `, redirectUrl);\r\n null;\r\n }\r\n return redirectUrl;\r\n }\r\n getSilentRenewUrl(configId) {\r\n const { silentRenewUrl } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!silentRenewUrl) {\r\n this.loggerService.logError(configId, `could not get silentRenewUrl, was: `, silentRenewUrl);\r\n return null;\r\n }\r\n return silentRenewUrl;\r\n }\r\n getPostLogoutRedirectUrl(configId) {\r\n const { postLogoutRedirectUri } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!postLogoutRedirectUri) {\r\n this.loggerService.logError(configId, `could not get postLogoutRedirectUri, was: `, postLogoutRedirectUri);\r\n return null;\r\n }\r\n return postLogoutRedirectUri;\r\n }\r\n getClientId(configId) {\r\n const { clientId } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!clientId) {\r\n this.loggerService.logError(configId, `could not get clientId, was: `, clientId);\r\n return null;\r\n }\r\n return clientId;\r\n }\r\n appendCustomParams(customParams, params) {\r\n for (const [key, value] of Object.entries(Object.assign({}, customParams))) {\r\n params = params.append(key, value.toString());\r\n }\r\n return params;\r\n }\r\n overWriteParam(params, key, value) {\r\n return params.set(key, value);\r\n }\r\n createHttpParams(existingParams) {\r\n existingParams = existingParams !== null && existingParams !== void 0 ? existingParams : '';\r\n const params = new HttpParams({\r\n fromString: existingParams,\r\n encoder: new UriEncoder(),\r\n });\r\n return params;\r\n }\r\n isAuth0Endpoint(configId) {\r\n const { authority } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!authority) {\r\n return false;\r\n }\r\n return authority.endsWith(AUTH0_ENDPOINT);\r\n }\r\n composeAuth0Endpoint(configId) {\r\n // format: https://YOUR_DOMAIN/v2/logout?client_id=YOUR_CLIENT_ID&returnTo=LOGOUT_URL\r\n const { authority, clientId } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n const postLogoutRedirectUrl = this.getPostLogoutRedirectUrl(configId);\r\n return `${authority}/v2/logout?client_id=${clientId}&returnTo=${postLogoutRedirectUrl}`;\r\n }\r\n}\r\nUrlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: UrlService, deps: [{ token: ConfigurationProvider }, { token: LoggerService }, { token: FlowsDataService }, { token: FlowHelper }, { token: StoragePersistenceService }, { token: JsrsAsignReducedService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nUrlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: UrlService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: UrlService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: ConfigurationProvider }, { type: LoggerService }, { type: FlowsDataService }, { type: FlowHelper }, { type: StoragePersistenceService }, { type: JsrsAsignReducedService }]; } });\n\nclass CodeFlowCallbackHandlerService {\r\n constructor(urlService, loggerService, tokenValidationService, flowsDataService, configurationProvider, storagePersistenceService, dataService) {\r\n this.urlService = urlService;\r\n this.loggerService = loggerService;\r\n this.tokenValidationService = tokenValidationService;\r\n this.flowsDataService = flowsDataService;\r\n this.configurationProvider = configurationProvider;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.dataService = dataService;\r\n }\r\n // STEP 1 Code Flow\r\n codeFlowCallback(urlToCheck, configId) {\r\n const code = this.urlService.getUrlParameter(urlToCheck, 'code');\r\n const state = this.urlService.getUrlParameter(urlToCheck, 'state');\r\n const sessionState = this.urlService.getUrlParameter(urlToCheck, 'session_state');\r\n if (!state) {\r\n this.loggerService.logDebug(configId, 'no state in url');\r\n return throwError('no state in url');\r\n }\r\n if (!code) {\r\n this.loggerService.logDebug(configId, 'no code in url');\r\n return throwError('no code in url');\r\n }\r\n this.loggerService.logDebug(configId, 'running validation for callback', urlToCheck);\r\n const initialCallbackContext = {\r\n code,\r\n refreshToken: null,\r\n state,\r\n sessionState,\r\n authResult: null,\r\n isRenewProcess: false,\r\n jwtKeys: null,\r\n validationResult: null,\r\n existingIdToken: null,\r\n };\r\n return of(initialCallbackContext);\r\n }\r\n // STEP 2 Code Flow // Code Flow Silent Renew starts here\r\n codeFlowCodeRequest(callbackContext, configId) {\r\n const authStateControl = this.flowsDataService.getAuthStateControl(configId);\r\n const isStateCorrect = this.tokenValidationService.validateStateFromHashCallback(callbackContext.state, authStateControl, configId);\r\n if (!isStateCorrect) {\r\n return throwError('codeFlowCodeRequest incorrect state');\r\n }\r\n const authWellknownEndpoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n const tokenEndpoint = authWellknownEndpoints === null || authWellknownEndpoints === void 0 ? void 0 : authWellknownEndpoints.tokenEndpoint;\r\n if (!tokenEndpoint) {\r\n return throwError('Token Endpoint not defined');\r\n }\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\r\n const config = this.configurationProvider.getOpenIDConfiguration(configId);\r\n const bodyForCodeFlow = this.urlService.createBodyForCodeFlowCodeRequest(callbackContext.code, configId, config === null || config === void 0 ? void 0 : config.customParamsCodeRequest);\r\n return this.dataService.post(tokenEndpoint, bodyForCodeFlow, configId, headers).pipe(switchMap((response) => {\r\n let authResult = new Object();\r\n authResult = response;\r\n authResult.state = callbackContext.state;\r\n authResult.session_state = callbackContext.sessionState;\r\n callbackContext.authResult = authResult;\r\n return of(callbackContext);\r\n }), retryWhen((error) => this.handleRefreshRetry(error, configId)), catchError((error) => {\r\n const { authority } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n const errorMessage = `OidcService code request ${authority}`;\r\n this.loggerService.logError(configId, errorMessage, error);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n handleRefreshRetry(errors, configId) {\r\n return errors.pipe(mergeMap((error) => {\r\n // retry token refresh if there is no internet connection\r\n if (error && error instanceof HttpErrorResponse && error.error instanceof ProgressEvent && error.error.type === 'error') {\r\n const { authority, refreshTokenRetryInSeconds } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n const errorMessage = `OidcService code request ${authority} - no internet connection`;\r\n this.loggerService.logWarning(configId, errorMessage, error);\r\n return timer(refreshTokenRetryInSeconds * 1000);\r\n }\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\nCodeFlowCallbackHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CodeFlowCallbackHandlerService, deps: [{ token: UrlService }, { token: LoggerService }, { token: TokenValidationService }, { token: FlowsDataService }, { token: ConfigurationProvider }, { token: StoragePersistenceService }, { token: DataService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nCodeFlowCallbackHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CodeFlowCallbackHandlerService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CodeFlowCallbackHandlerService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: UrlService }, { type: LoggerService }, { type: TokenValidationService }, { type: FlowsDataService }, { type: ConfigurationProvider }, { type: StoragePersistenceService }, { type: DataService }]; } });\n\nconst DEFAULT_USERRESULT = { userData: null, allUserData: [] };\r\nclass UserService {\r\n constructor(oidcDataService, storagePersistenceService, eventService, loggerService, tokenHelperService, flowHelper, configurationProvider) {\r\n this.oidcDataService = oidcDataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.eventService = eventService;\r\n this.loggerService = loggerService;\r\n this.tokenHelperService = tokenHelperService;\r\n this.flowHelper = flowHelper;\r\n this.configurationProvider = configurationProvider;\r\n this.userDataInternal$ = new BehaviorSubject(DEFAULT_USERRESULT);\r\n }\r\n get userData$() {\r\n return this.userDataInternal$.asObservable();\r\n }\r\n getAndPersistUserDataInStore(configId, isRenewProcess = false, idToken, decodedIdToken) {\r\n idToken = idToken || this.storagePersistenceService.getIdToken(configId);\r\n decodedIdToken = decodedIdToken || this.tokenHelperService.getPayloadFromToken(idToken, false, configId);\r\n const existingUserDataFromStorage = this.getUserDataFromStore(configId);\r\n const haveUserData = !!existingUserDataFromStorage;\r\n const isCurrentFlowImplicitFlowWithAccessToken = this.flowHelper.isCurrentFlowImplicitFlowWithAccessToken(configId);\r\n const isCurrentFlowCodeFlow = this.flowHelper.isCurrentFlowCodeFlow(configId);\r\n const accessToken = this.storagePersistenceService.getAccessToken(configId);\r\n if (!(isCurrentFlowImplicitFlowWithAccessToken || isCurrentFlowCodeFlow)) {\r\n this.loggerService.logDebug(configId, `authCallback idToken flow with accessToken ${accessToken}`);\r\n this.setUserDataToStore(decodedIdToken, configId);\r\n return of(decodedIdToken);\r\n }\r\n const { renewUserInfoAfterTokenRenew } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!isRenewProcess || renewUserInfoAfterTokenRenew || !haveUserData) {\r\n return this.getUserDataOidcFlowAndSave(decodedIdToken.sub, configId).pipe(switchMap((userData) => {\r\n this.loggerService.logDebug(configId, 'Received user data: ', userData);\r\n if (!!userData) {\r\n this.loggerService.logDebug(configId, 'accessToken: ', accessToken);\r\n return of(userData);\r\n }\r\n else {\r\n return throwError('Received no user data, request failed');\r\n }\r\n }));\r\n }\r\n return of(existingUserDataFromStorage);\r\n }\r\n getUserDataFromStore(configId) {\r\n return this.storagePersistenceService.read('userData', configId) || null;\r\n }\r\n publishUserDataIfExists(configId) {\r\n const userData = this.getUserDataFromStore(configId);\r\n if (userData) {\r\n this.fireUserDataEvent(configId, userData);\r\n }\r\n }\r\n setUserDataToStore(userData, configId) {\r\n this.storagePersistenceService.write('userData', userData, configId);\r\n this.fireUserDataEvent(configId, userData);\r\n }\r\n resetUserDataInStore(configId) {\r\n this.storagePersistenceService.remove('userData', configId);\r\n this.fireUserDataEvent(configId, null);\r\n }\r\n getUserDataOidcFlowAndSave(idTokenSub, configId) {\r\n return this.getIdentityUserData(configId).pipe(map((data) => {\r\n if (this.validateUserDataSubIdToken(idTokenSub, data === null || data === void 0 ? void 0 : data.sub)) {\r\n this.setUserDataToStore(data, configId);\r\n return data;\r\n }\r\n else {\r\n // something went wrong, user data sub does not match that from id_token\r\n this.loggerService.logWarning(configId, `User data sub does not match sub in id_token, resetting`);\r\n this.resetUserDataInStore(configId);\r\n return null;\r\n }\r\n }));\r\n }\r\n getIdentityUserData(configId) {\r\n const token = this.storagePersistenceService.getAccessToken(configId);\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n if (!authWellKnownEndPoints) {\r\n this.loggerService.logWarning(configId, 'init check session: authWellKnownEndpoints is undefined');\r\n return throwError('authWellKnownEndpoints is undefined');\r\n }\r\n const userInfoEndpoint = authWellKnownEndPoints.userInfoEndpoint;\r\n if (!userInfoEndpoint) {\r\n this.loggerService.logError(configId, 'init check session: authWellKnownEndpoints.userinfo_endpoint is undefined; set auto_userinfo = false in config');\r\n return throwError('authWellKnownEndpoints.userinfo_endpoint is undefined');\r\n }\r\n return this.oidcDataService.get(userInfoEndpoint, configId, token).pipe(retry(2));\r\n }\r\n validateUserDataSubIdToken(idTokenSub, userDataSub) {\r\n if (!idTokenSub) {\r\n return false;\r\n }\r\n if (!userDataSub) {\r\n return false;\r\n }\r\n if (idTokenSub !== userDataSub) {\r\n this.loggerService.logDebug('validateUserDataSubIdToken failed', idTokenSub, userDataSub);\r\n return false;\r\n }\r\n return true;\r\n }\r\n fireUserDataEvent(configId, passedUserData) {\r\n const userData = this.composeSingleOrMultipleUserDataObject(configId, passedUserData);\r\n this.userDataInternal$.next(userData);\r\n this.eventService.fireEvent(EventTypes.UserDataChanged, { configId, userData: passedUserData });\r\n }\r\n composeSingleOrMultipleUserDataObject(configId, passedUserData) {\r\n const hasManyConfigs = this.configurationProvider.hasManyConfigs();\r\n if (!hasManyConfigs) {\r\n return this.composeSingleUserDataResult(configId, passedUserData);\r\n }\r\n const configs = this.configurationProvider.getAllConfigurations();\r\n const allUserData = configs.map((config) => {\r\n if (this.currentConfigIsToUpdate(configId, config)) {\r\n return { configId: config.configId, userData: passedUserData };\r\n }\r\n const alreadySavedUserData = this.storagePersistenceService.read('userData', config.configId) || null;\r\n return { configId: config.configId, userData: alreadySavedUserData };\r\n });\r\n return {\r\n userData: null,\r\n allUserData,\r\n };\r\n }\r\n composeSingleUserDataResult(configId, userData) {\r\n return {\r\n userData,\r\n allUserData: [{ configId, userData }],\r\n };\r\n }\r\n currentConfigIsToUpdate(configId, config) {\r\n return config.configId === configId;\r\n }\r\n}\r\nUserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: UserService, deps: [{ token: DataService }, { token: StoragePersistenceService }, { token: PublicEventsService }, { token: LoggerService }, { token: TokenHelperService }, { token: FlowHelper }, { token: ConfigurationProvider }], target: i0.ɵɵFactoryTarget.Injectable });\r\nUserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: UserService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: UserService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: DataService }, { type: StoragePersistenceService }, { type: PublicEventsService }, { type: LoggerService }, { type: TokenHelperService }, { type: FlowHelper }, { type: ConfigurationProvider }]; } });\n\nclass ResetAuthDataService {\r\n constructor(authStateService, flowsDataService, userService) {\r\n this.authStateService = authStateService;\r\n this.flowsDataService = flowsDataService;\r\n this.userService = userService;\r\n }\r\n resetAuthorizationData(configId) {\r\n this.userService.resetUserDataInStore(configId);\r\n this.flowsDataService.resetStorageFlowData(configId);\r\n this.authStateService.setUnauthenticatedAndFireEvent(configId);\r\n }\r\n}\r\nResetAuthDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ResetAuthDataService, deps: [{ token: AuthStateService }, { token: FlowsDataService }, { token: UserService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nResetAuthDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ResetAuthDataService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ResetAuthDataService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: AuthStateService }, { type: FlowsDataService }, { type: UserService }]; } });\n\nclass ImplicitFlowCallbackHandlerService {\r\n constructor(resetAuthDataService, loggerService, flowsDataService, doc) {\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.loggerService = loggerService;\r\n this.flowsDataService = flowsDataService;\r\n this.doc = doc;\r\n }\r\n // STEP 1 Code Flow\r\n // STEP 1 Implicit Flow\r\n implicitFlowCallback(configId, hash) {\r\n const isRenewProcessData = this.flowsDataService.isSilentRenewRunning(configId);\r\n this.loggerService.logDebug(configId, 'BEGIN callback, no auth data');\r\n if (!isRenewProcessData) {\r\n this.resetAuthDataService.resetAuthorizationData(configId);\r\n }\r\n hash = hash || this.doc.location.hash.substr(1);\r\n const authResult = hash.split('&').reduce((resultData, item) => {\r\n const parts = item.split('=');\r\n resultData[parts.shift()] = parts.join('=');\r\n return resultData;\r\n }, {});\r\n const callbackContext = {\r\n code: null,\r\n refreshToken: null,\r\n state: null,\r\n sessionState: null,\r\n authResult,\r\n isRenewProcess: isRenewProcessData,\r\n jwtKeys: null,\r\n validationResult: null,\r\n existingIdToken: null,\r\n };\r\n return of(callbackContext);\r\n }\r\n}\r\nImplicitFlowCallbackHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ImplicitFlowCallbackHandlerService, deps: [{ token: ResetAuthDataService }, { token: LoggerService }, { token: FlowsDataService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\r\nImplicitFlowCallbackHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ImplicitFlowCallbackHandlerService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ImplicitFlowCallbackHandlerService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: ResetAuthDataService }, { type: LoggerService }, { type: FlowsDataService }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [DOCUMENT]\r\n }] }]; } });\n\n/* eslint-disable no-shadow */\r\nvar ValidationResult;\r\n(function (ValidationResult) {\r\n ValidationResult[\"NotSet\"] = \"NotSet\";\r\n ValidationResult[\"StatesDoNotMatch\"] = \"StatesDoNotMatch\";\r\n ValidationResult[\"SignatureFailed\"] = \"SignatureFailed\";\r\n ValidationResult[\"IncorrectNonce\"] = \"IncorrectNonce\";\r\n ValidationResult[\"RequiredPropertyMissing\"] = \"RequiredPropertyMissing\";\r\n ValidationResult[\"MaxOffsetExpired\"] = \"MaxOffsetExpired\";\r\n ValidationResult[\"IssDoesNotMatchIssuer\"] = \"IssDoesNotMatchIssuer\";\r\n ValidationResult[\"NoAuthWellKnownEndPoints\"] = \"NoAuthWellKnownEndPoints\";\r\n ValidationResult[\"IncorrectAud\"] = \"IncorrectAud\";\r\n ValidationResult[\"IncorrectIdTokenClaimsAfterRefresh\"] = \"IncorrectIdTokenClaimsAfterRefresh\";\r\n ValidationResult[\"IncorrectAzp\"] = \"IncorrectAzp\";\r\n ValidationResult[\"TokenExpired\"] = \"TokenExpired\";\r\n ValidationResult[\"IncorrectAtHash\"] = \"IncorrectAtHash\";\r\n ValidationResult[\"Ok\"] = \"Ok\";\r\n ValidationResult[\"LoginRequired\"] = \"LoginRequired\";\r\n ValidationResult[\"SecureTokenServerError\"] = \"SecureTokenServerError\";\r\n})(ValidationResult || (ValidationResult = {}));\n\nclass SigninKeyDataService {\r\n constructor(storagePersistenceService, loggerService, dataService) {\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.loggerService = loggerService;\r\n this.dataService = dataService;\r\n }\r\n getSigningKeys(configId) {\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n const jwksUri = authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.jwksUri;\r\n if (!jwksUri) {\r\n const error = `getSigningKeys: authWellKnownEndpoints.jwksUri is: '${jwksUri}'`;\r\n this.loggerService.logWarning(configId, error);\r\n return throwError(error);\r\n }\r\n this.loggerService.logDebug(configId, 'Getting signinkeys from ', jwksUri);\r\n return this.dataService.get(jwksUri, configId).pipe(retry(2), catchError((e) => this.handleErrorGetSigningKeys(e, configId)));\r\n }\r\n handleErrorGetSigningKeys(errorResponse, configId) {\r\n let errMsg = '';\r\n if (errorResponse instanceof HttpResponse) {\r\n const body = errorResponse.body || {};\r\n const err = JSON.stringify(body);\r\n const { status, statusText } = errorResponse;\r\n errMsg = `${status || ''} - ${statusText || ''} ${err || ''}`;\r\n }\r\n else {\r\n const { message } = errorResponse;\r\n errMsg = !!message ? message : `${errorResponse}`;\r\n }\r\n this.loggerService.logError(configId, errMsg);\r\n return throwError(errMsg);\r\n }\r\n}\r\nSigninKeyDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: SigninKeyDataService, deps: [{ token: StoragePersistenceService }, { token: LoggerService }, { token: DataService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nSigninKeyDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: SigninKeyDataService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: SigninKeyDataService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: StoragePersistenceService }, { type: LoggerService }, { type: DataService }]; } });\n\nconst JWT_KEYS = 'jwtKeys';\r\nclass HistoryJwtKeysCallbackHandlerService {\r\n constructor(loggerService, configurationProvider, authStateService, flowsDataService, signInKeyDataService, storagePersistenceService, resetAuthDataService) {\r\n this.loggerService = loggerService;\r\n this.configurationProvider = configurationProvider;\r\n this.authStateService = authStateService;\r\n this.flowsDataService = flowsDataService;\r\n this.signInKeyDataService = signInKeyDataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n }\r\n // STEP 3 Code Flow, STEP 2 Implicit Flow, STEP 3 Refresh Token\r\n callbackHistoryAndResetJwtKeys(callbackContext, configId) {\r\n this.storagePersistenceService.write('authnResult', callbackContext.authResult, configId);\r\n if (this.historyCleanUpTurnedOn(configId) && !callbackContext.isRenewProcess) {\r\n this.resetBrowserHistory();\r\n }\r\n else {\r\n this.loggerService.logDebug(configId, 'history clean up inactive');\r\n }\r\n if (callbackContext.authResult.error) {\r\n const errorMessage = `AuthCallback AuthResult came with error: ${callbackContext.authResult.error}`;\r\n this.loggerService.logDebug(configId, errorMessage);\r\n this.resetAuthDataService.resetAuthorizationData(configId);\r\n this.flowsDataService.setNonce('', configId);\r\n this.handleResultErrorFromCallback(callbackContext.authResult, callbackContext.isRenewProcess);\r\n return throwError(errorMessage);\r\n }\r\n this.loggerService.logDebug(configId, `AuthResult '${JSON.stringify(callbackContext.authResult, null, 2)}'.\n AuthCallback created, begin token validation`);\r\n return this.signInKeyDataService.getSigningKeys(configId).pipe(tap((jwtKeys) => this.storeSigningKeys(jwtKeys, configId)), catchError((err) => {\r\n // fallback: try to load jwtKeys from storage\r\n const storedJwtKeys = this.readSigningKeys(configId);\r\n if (!!storedJwtKeys) {\r\n this.loggerService.logWarning(configId, `Failed to retrieve signing keys, fallback to stored keys`);\r\n return of(storedJwtKeys);\r\n }\r\n return throwError(err);\r\n }), switchMap((jwtKeys) => {\r\n if (jwtKeys) {\r\n callbackContext.jwtKeys = jwtKeys;\r\n return of(callbackContext);\r\n }\r\n const errorMessage = `Failed to retrieve signing key`;\r\n this.loggerService.logWarning(configId, errorMessage);\r\n return throwError(errorMessage);\r\n }), catchError((err) => {\r\n const errorMessage = `Failed to retrieve signing key with error: ${err}`;\r\n this.loggerService.logWarning(configId, errorMessage);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n handleResultErrorFromCallback(result, isRenewProcess) {\r\n let validationResult = ValidationResult.SecureTokenServerError;\r\n if (result.error === 'login_required') {\r\n validationResult = ValidationResult.LoginRequired;\r\n }\r\n this.authStateService.updateAndPublishAuthState({\r\n isAuthenticated: false,\r\n validationResult,\r\n isRenewProcess,\r\n });\r\n }\r\n historyCleanUpTurnedOn(configId) {\r\n const { historyCleanupOff } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n return !historyCleanupOff;\r\n }\r\n resetBrowserHistory() {\r\n window.history.replaceState({}, window.document.title, window.location.origin + window.location.pathname);\r\n }\r\n storeSigningKeys(jwtKeys, configId) {\r\n this.storagePersistenceService.write(JWT_KEYS, jwtKeys, configId);\r\n }\r\n readSigningKeys(configId) {\r\n return this.storagePersistenceService.read(JWT_KEYS, configId);\r\n }\r\n}\r\nHistoryJwtKeysCallbackHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: HistoryJwtKeysCallbackHandlerService, deps: [{ token: LoggerService }, { token: ConfigurationProvider }, { token: AuthStateService }, { token: FlowsDataService }, { token: SigninKeyDataService }, { token: StoragePersistenceService }, { token: ResetAuthDataService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nHistoryJwtKeysCallbackHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: HistoryJwtKeysCallbackHandlerService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: HistoryJwtKeysCallbackHandlerService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }, { type: ConfigurationProvider }, { type: AuthStateService }, { type: FlowsDataService }, { type: SigninKeyDataService }, { type: StoragePersistenceService }, { type: ResetAuthDataService }]; } });\n\nclass UserCallbackHandlerService {\r\n constructor(loggerService, configurationProvider, authStateService, flowsDataService, userService, resetAuthDataService) {\r\n this.loggerService = loggerService;\r\n this.configurationProvider = configurationProvider;\r\n this.authStateService = authStateService;\r\n this.flowsDataService = flowsDataService;\r\n this.userService = userService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n }\r\n // STEP 5 userData\r\n callbackUser(callbackContext, configId) {\r\n const { isRenewProcess, validationResult, authResult, refreshToken } = callbackContext;\r\n const { autoUserInfo, renewUserInfoAfterTokenRenew } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!autoUserInfo) {\r\n if (!isRenewProcess || renewUserInfoAfterTokenRenew) {\r\n // userData is set to the id_token decoded, auto get user data set to false\r\n if (validationResult.decodedIdToken) {\r\n this.userService.setUserDataToStore(validationResult.decodedIdToken, configId);\r\n }\r\n }\r\n if (!isRenewProcess && !refreshToken) {\r\n this.flowsDataService.setSessionState(authResult.session_state, configId);\r\n }\r\n this.publishAuthState(validationResult, isRenewProcess);\r\n return of(callbackContext);\r\n }\r\n return this.userService\r\n .getAndPersistUserDataInStore(configId, isRenewProcess, validationResult.idToken, validationResult.decodedIdToken)\r\n .pipe(switchMap((userData) => {\r\n if (!!userData) {\r\n if (!refreshToken) {\r\n this.flowsDataService.setSessionState(authResult.session_state, configId);\r\n }\r\n this.publishAuthState(validationResult, isRenewProcess);\r\n return of(callbackContext);\r\n }\r\n else {\r\n this.resetAuthDataService.resetAuthorizationData(configId);\r\n this.publishUnauthenticatedState(validationResult, isRenewProcess);\r\n const errorMessage = `Called for userData but they were ${userData}`;\r\n this.loggerService.logWarning(configId, errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n }), catchError((err) => {\r\n const errorMessage = `Failed to retrieve user info with error: ${err}`;\r\n this.loggerService.logWarning(configId, errorMessage);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n publishAuthState(stateValidationResult, isRenewProcess) {\r\n this.authStateService.updateAndPublishAuthState({\r\n isAuthenticated: true,\r\n validationResult: stateValidationResult.state,\r\n isRenewProcess,\r\n });\r\n }\r\n publishUnauthenticatedState(stateValidationResult, isRenewProcess) {\r\n this.authStateService.updateAndPublishAuthState({\r\n isAuthenticated: false,\r\n validationResult: stateValidationResult.state,\r\n isRenewProcess,\r\n });\r\n }\r\n}\r\nUserCallbackHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: UserCallbackHandlerService, deps: [{ token: LoggerService }, { token: ConfigurationProvider }, { token: AuthStateService }, { token: FlowsDataService }, { token: UserService }, { token: ResetAuthDataService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nUserCallbackHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: UserCallbackHandlerService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: UserCallbackHandlerService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }, { type: ConfigurationProvider }, { type: AuthStateService }, { type: FlowsDataService }, { type: UserService }, { type: ResetAuthDataService }]; } });\n\nclass StateValidationResult {\r\n constructor(accessToken = '', idToken = '', authResponseIsValid = false, decodedIdToken = {}, state = ValidationResult.NotSet) {\r\n this.accessToken = accessToken;\r\n this.idToken = idToken;\r\n this.authResponseIsValid = authResponseIsValid;\r\n this.decodedIdToken = decodedIdToken;\r\n this.state = state;\r\n }\r\n}\n\nclass EqualityService {\r\n isStringEqualOrNonOrderedArrayEqual(value1, value2) {\r\n if (this.isNullOrUndefined(value1)) {\r\n return false;\r\n }\r\n if (this.isNullOrUndefined(value2)) {\r\n return false;\r\n }\r\n if (this.oneValueIsStringAndTheOtherIsArray(value1, value2)) {\r\n return false;\r\n }\r\n if (this.bothValuesAreStrings(value1, value2)) {\r\n return value1 === value2;\r\n }\r\n if (this.bothValuesAreArrays(value1, value2)) {\r\n return this.arraysHaveEqualContent(value1, value2);\r\n }\r\n return false;\r\n }\r\n areEqual(value1, value2) {\r\n if (!value1 || !value2) {\r\n return false;\r\n }\r\n if (this.bothValuesAreArrays(value1, value2)) {\r\n return this.arraysStrictEqual(value1, value2);\r\n }\r\n if (this.bothValuesAreStrings(value1, value2)) {\r\n return value1 === value2;\r\n }\r\n if (this.bothValuesAreObjects(value1, value2)) {\r\n return JSON.stringify(value1).toLowerCase() === JSON.stringify(value2).toLowerCase();\r\n }\r\n if (this.oneValueIsStringAndTheOtherIsArray(value1, value2)) {\r\n if (Array.isArray(value1) && this.valueIsString(value2)) {\r\n return value1[0] === value2;\r\n }\r\n if (Array.isArray(value2) && this.valueIsString(value1)) {\r\n return value2[0] === value1;\r\n }\r\n }\r\n return false;\r\n }\r\n oneValueIsStringAndTheOtherIsArray(value1, value2) {\r\n return (Array.isArray(value1) && this.valueIsString(value2)) || (Array.isArray(value2) && this.valueIsString(value1));\r\n }\r\n bothValuesAreObjects(value1, value2) {\r\n return this.valueIsObject(value1) && this.valueIsObject(value2);\r\n }\r\n bothValuesAreStrings(value1, value2) {\r\n return this.valueIsString(value1) && this.valueIsString(value2);\r\n }\r\n bothValuesAreArrays(value1, value2) {\r\n return Array.isArray(value1) && Array.isArray(value2);\r\n }\r\n valueIsString(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n }\r\n valueIsObject(value) {\r\n return typeof value === 'object';\r\n }\r\n arraysStrictEqual(arr1, arr2) {\r\n if (arr1.length !== arr2.length) {\r\n return false;\r\n }\r\n for (let i = arr1.length; i--;) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n arraysHaveEqualContent(arr1, arr2) {\r\n if (arr1.length !== arr2.length) {\r\n return false;\r\n }\r\n return arr1.some((v) => arr2.includes(v));\r\n }\r\n isNullOrUndefined(val) {\r\n return val === null || val === undefined;\r\n }\r\n}\r\nEqualityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: EqualityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nEqualityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: EqualityService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: EqualityService, decorators: [{\r\n type: Injectable\r\n }] });\n\nclass StateValidationService {\r\n constructor(storagePersistenceService, tokenValidationService, tokenHelperService, loggerService, configurationProvider, equalityService, flowHelper) {\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.tokenValidationService = tokenValidationService;\r\n this.tokenHelperService = tokenHelperService;\r\n this.loggerService = loggerService;\r\n this.configurationProvider = configurationProvider;\r\n this.equalityService = equalityService;\r\n this.flowHelper = flowHelper;\r\n }\r\n getValidatedStateResult(callbackContext, configId) {\r\n if (!callbackContext) {\r\n return new StateValidationResult('', '', false, {});\r\n }\r\n if (callbackContext.authResult.error) {\r\n return new StateValidationResult('', '', false, {});\r\n }\r\n return this.validateState(callbackContext, configId);\r\n }\r\n validateState(callbackContext, configId) {\r\n const toReturn = new StateValidationResult();\r\n const authStateControl = this.storagePersistenceService.read('authStateControl', configId);\r\n if (!this.tokenValidationService.validateStateFromHashCallback(callbackContext.authResult.state, authStateControl, configId)) {\r\n this.loggerService.logWarning(configId, 'authCallback incorrect state');\r\n toReturn.state = ValidationResult.StatesDoNotMatch;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n const isCurrentFlowImplicitFlowWithAccessToken = this.flowHelper.isCurrentFlowImplicitFlowWithAccessToken(configId);\r\n const isCurrentFlowCodeFlow = this.flowHelper.isCurrentFlowCodeFlow(configId);\r\n if (isCurrentFlowImplicitFlowWithAccessToken || isCurrentFlowCodeFlow) {\r\n toReturn.accessToken = callbackContext.authResult.access_token;\r\n }\r\n if (callbackContext.authResult.id_token) {\r\n const { clientId, issValidationOff, maxIdTokenIatOffsetAllowedInSeconds, disableIatOffsetValidation, ignoreNonceAfterRefresh } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n toReturn.idToken = callbackContext.authResult.id_token;\r\n toReturn.decodedIdToken = this.tokenHelperService.getPayloadFromToken(toReturn.idToken, false, configId);\r\n if (!this.tokenValidationService.validateSignatureIdToken(toReturn.idToken, callbackContext.jwtKeys, configId)) {\r\n this.loggerService.logDebug(configId, 'authCallback Signature validation failed id_token');\r\n toReturn.state = ValidationResult.SignatureFailed;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n const authNonce = this.storagePersistenceService.read('authNonce', configId);\r\n if (!this.tokenValidationService.validateIdTokenNonce(toReturn.decodedIdToken, authNonce, ignoreNonceAfterRefresh, configId)) {\r\n this.loggerService.logWarning(configId, 'authCallback incorrect nonce, did you call the checkAuth() method multiple times?');\r\n toReturn.state = ValidationResult.IncorrectNonce;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateRequiredIdToken(toReturn.decodedIdToken, configId)) {\r\n this.loggerService.logDebug(configId, 'authCallback Validation, one of the REQUIRED properties missing from id_token');\r\n toReturn.state = ValidationResult.RequiredPropertyMissing;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateIdTokenIatMaxOffset(toReturn.decodedIdToken, maxIdTokenIatOffsetAllowedInSeconds, disableIatOffsetValidation, configId)) {\r\n this.loggerService.logWarning(configId, 'authCallback Validation, iat rejected id_token was issued too far away from the current time');\r\n toReturn.state = ValidationResult.MaxOffsetExpired;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n if (authWellKnownEndPoints) {\r\n if (issValidationOff) {\r\n this.loggerService.logDebug(configId, 'iss validation is turned off, this is not recommended!');\r\n }\r\n else if (!issValidationOff &&\r\n !this.tokenValidationService.validateIdTokenIss(toReturn.decodedIdToken, authWellKnownEndPoints.issuer, configId)) {\r\n this.loggerService.logWarning(configId, 'authCallback incorrect iss does not match authWellKnownEndpoints issuer');\r\n toReturn.state = ValidationResult.IssDoesNotMatchIssuer;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n }\r\n else {\r\n this.loggerService.logWarning(configId, 'authWellKnownEndpoints is undefined');\r\n toReturn.state = ValidationResult.NoAuthWellKnownEndPoints;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateIdTokenAud(toReturn.decodedIdToken, clientId, configId)) {\r\n this.loggerService.logWarning(configId, 'authCallback incorrect aud');\r\n toReturn.state = ValidationResult.IncorrectAud;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateIdTokenAzpExistsIfMoreThanOneAud(toReturn.decodedIdToken)) {\r\n this.loggerService.logWarning(configId, 'authCallback missing azp');\r\n toReturn.state = ValidationResult.IncorrectAzp;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateIdTokenAzpValid(toReturn.decodedIdToken, clientId)) {\r\n this.loggerService.logWarning(configId, 'authCallback incorrect azp');\r\n toReturn.state = ValidationResult.IncorrectAzp;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n if (!this.isIdTokenAfterRefreshTokenRequestValid(callbackContext, toReturn.decodedIdToken, configId)) {\r\n this.loggerService.logWarning(configId, 'authCallback pre, post id_token claims do not match in refresh');\r\n toReturn.state = ValidationResult.IncorrectIdTokenClaimsAfterRefresh;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateIdTokenExpNotExpired(toReturn.decodedIdToken, configId)) {\r\n this.loggerService.logWarning(configId, 'authCallback id token expired');\r\n toReturn.state = ValidationResult.TokenExpired;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n }\r\n else {\r\n this.loggerService.logDebug(configId, 'No id_token found, skipping id_token validation');\r\n }\r\n // flow id_token\r\n if (!isCurrentFlowImplicitFlowWithAccessToken && !isCurrentFlowCodeFlow) {\r\n toReturn.authResponseIsValid = true;\r\n toReturn.state = ValidationResult.Ok;\r\n this.handleSuccessfulValidation(configId);\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n // only do check if id_token returned, no always the case when using refresh tokens\r\n if (callbackContext.authResult.id_token) {\r\n const idTokenHeader = this.tokenHelperService.getHeaderFromToken(toReturn.idToken, false, configId);\r\n // The at_hash is optional for the code flow\r\n if (isCurrentFlowCodeFlow && !toReturn.decodedIdToken.at_hash) {\r\n this.loggerService.logDebug(configId, 'Code Flow active, and no at_hash in the id_token, skipping check!');\r\n }\r\n else if (!this.tokenValidationService.validateIdTokenAtHash(toReturn.accessToken, toReturn.decodedIdToken.at_hash, idTokenHeader.alg, // 'RSA256'\r\n configId) ||\r\n !toReturn.accessToken) {\r\n this.loggerService.logWarning(configId, 'authCallback incorrect at_hash');\r\n toReturn.state = ValidationResult.IncorrectAtHash;\r\n this.handleUnsuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n }\r\n toReturn.authResponseIsValid = true;\r\n toReturn.state = ValidationResult.Ok;\r\n this.handleSuccessfulValidation(configId);\r\n return toReturn;\r\n }\r\n isIdTokenAfterRefreshTokenRequestValid(callbackContext, newIdToken, configId) {\r\n const { useRefreshToken, disableRefreshIdTokenAuthTimeValidation } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!useRefreshToken) {\r\n return true;\r\n }\r\n if (!callbackContext.existingIdToken) {\r\n return true;\r\n }\r\n const decodedIdToken = this.tokenHelperService.getPayloadFromToken(callbackContext.existingIdToken, false, configId);\r\n // Upon successful validation of the Refresh Token, the response body is the Token Response of Section 3.1.3.3\r\n // except that it might not contain an id_token.\r\n // If an ID Token is returned as a result of a token refresh request, the following requirements apply:\r\n // its iss Claim Value MUST be the same as in the ID Token issued when the original authentication occurred,\r\n if (decodedIdToken.iss !== newIdToken.iss) {\r\n this.loggerService.logDebug(configId, `iss do not match: ${decodedIdToken.iss} ${newIdToken.iss}`);\r\n return false;\r\n }\r\n // its azp Claim Value MUST be the same as in the ID Token issued when the original authentication occurred;\r\n // if no azp Claim was present in the original ID Token, one MUST NOT be present in the new ID Token, and\r\n // otherwise, the same rules apply as apply when issuing an ID Token at the time of the original authentication.\r\n if (decodedIdToken.azp !== newIdToken.azp) {\r\n this.loggerService.logDebug(configId, `azp do not match: ${decodedIdToken.azp} ${newIdToken.azp}`);\r\n return false;\r\n }\r\n // its sub Claim Value MUST be the same as in the ID Token issued when the original authentication occurred,\r\n if (decodedIdToken.sub !== newIdToken.sub) {\r\n this.loggerService.logDebug(configId, `sub do not match: ${decodedIdToken.sub} ${newIdToken.sub}`);\r\n return false;\r\n }\r\n // its aud Claim Value MUST be the same as in the ID Token issued when the original authentication occurred,\r\n if (!this.equalityService.isStringEqualOrNonOrderedArrayEqual(decodedIdToken === null || decodedIdToken === void 0 ? void 0 : decodedIdToken.aud, newIdToken === null || newIdToken === void 0 ? void 0 : newIdToken.aud)) {\r\n this.loggerService.logDebug(configId, `aud in new id_token is not valid: '${decodedIdToken === null || decodedIdToken === void 0 ? void 0 : decodedIdToken.aud}' '${newIdToken.aud}'`);\r\n return false;\r\n }\r\n if (disableRefreshIdTokenAuthTimeValidation) {\r\n return true;\r\n }\r\n // its iat Claim MUST represent the time that the new ID Token is issued,\r\n // if the ID Token contains an auth_time Claim, its value MUST represent the time of the original authentication\r\n // - not the time that the new ID token is issued,\r\n if (decodedIdToken.auth_time !== newIdToken.auth_time) {\r\n this.loggerService.logDebug(configId, `auth_time do not match: ${decodedIdToken.auth_time} ${newIdToken.auth_time}`);\r\n return false;\r\n }\r\n return true;\r\n }\r\n handleSuccessfulValidation(configId) {\r\n const { autoCleanStateAfterAuthentication } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n this.storagePersistenceService.write('authNonce', null, configId);\r\n if (autoCleanStateAfterAuthentication) {\r\n this.storagePersistenceService.write('authStateControl', '', configId);\r\n }\r\n this.loggerService.logDebug(configId, 'authCallback token(s) validated, continue');\r\n }\r\n handleUnsuccessfulValidation(configId) {\r\n const { autoCleanStateAfterAuthentication } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n this.storagePersistenceService.write('authNonce', null, configId);\r\n if (autoCleanStateAfterAuthentication) {\r\n this.storagePersistenceService.write('authStateControl', '', configId);\r\n }\r\n this.loggerService.logDebug(configId, 'authCallback token(s) invalid');\r\n }\r\n}\r\nStateValidationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StateValidationService, deps: [{ token: StoragePersistenceService }, { token: TokenValidationService }, { token: TokenHelperService }, { token: LoggerService }, { token: ConfigurationProvider }, { token: EqualityService }, { token: FlowHelper }], target: i0.ɵɵFactoryTarget.Injectable });\r\nStateValidationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StateValidationService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StateValidationService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: StoragePersistenceService }, { type: TokenValidationService }, { type: TokenHelperService }, { type: LoggerService }, { type: ConfigurationProvider }, { type: EqualityService }, { type: FlowHelper }]; } });\n\nclass StateValidationCallbackHandlerService {\r\n constructor(loggerService, stateValidationService, authStateService, resetAuthDataService, doc) {\r\n this.loggerService = loggerService;\r\n this.stateValidationService = stateValidationService;\r\n this.authStateService = authStateService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.doc = doc;\r\n }\r\n // STEP 4 All flows\r\n callbackStateValidation(callbackContext, configId) {\r\n const validationResult = this.stateValidationService.getValidatedStateResult(callbackContext, configId);\r\n callbackContext.validationResult = validationResult;\r\n if (validationResult.authResponseIsValid) {\r\n this.authStateService.setAuthorizationData(validationResult.accessToken, callbackContext.authResult, configId);\r\n return of(callbackContext);\r\n }\r\n else {\r\n const errorMessage = `authorizedCallback, token(s) validation failed, resetting. Hash: ${this.doc.location.hash}`;\r\n this.loggerService.logWarning(configId, errorMessage);\r\n this.resetAuthDataService.resetAuthorizationData(configId);\r\n this.publishUnauthorizedState(callbackContext.validationResult, callbackContext.isRenewProcess);\r\n return throwError(errorMessage);\r\n }\r\n }\r\n publishUnauthorizedState(stateValidationResult, isRenewProcess) {\r\n this.authStateService.updateAndPublishAuthState({\r\n isAuthenticated: false,\r\n validationResult: stateValidationResult.state,\r\n isRenewProcess,\r\n });\r\n }\r\n}\r\nStateValidationCallbackHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StateValidationCallbackHandlerService, deps: [{ token: LoggerService }, { token: StateValidationService }, { token: AuthStateService }, { token: ResetAuthDataService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\r\nStateValidationCallbackHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StateValidationCallbackHandlerService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StateValidationCallbackHandlerService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }, { type: StateValidationService }, { type: AuthStateService }, { type: ResetAuthDataService }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [DOCUMENT]\r\n }] }]; } });\n\nclass RefreshSessionCallbackHandlerService {\r\n constructor(loggerService, authStateService, flowsDataService) {\r\n this.loggerService = loggerService;\r\n this.authStateService = authStateService;\r\n this.flowsDataService = flowsDataService;\r\n }\r\n // STEP 1 Refresh session\r\n refreshSessionWithRefreshTokens(configId) {\r\n const stateData = this.flowsDataService.getExistingOrCreateAuthStateControl(configId);\r\n this.loggerService.logDebug(configId, 'RefreshSession created. Adding myautostate: ' + stateData);\r\n const refreshToken = this.authStateService.getRefreshToken(configId);\r\n const idToken = this.authStateService.getIdToken(configId);\r\n if (refreshToken) {\r\n const callbackContext = {\r\n code: null,\r\n refreshToken,\r\n state: stateData,\r\n sessionState: null,\r\n authResult: null,\r\n isRenewProcess: true,\r\n jwtKeys: null,\r\n validationResult: null,\r\n existingIdToken: idToken,\r\n };\r\n this.loggerService.logDebug(configId, 'found refresh code, obtaining new credentials with refresh code');\r\n // Nonce is not used with refresh tokens; but Key cloak may send it anyway\r\n this.flowsDataService.setNonce(TokenValidationService.refreshTokenNoncePlaceholder, configId);\r\n return of(callbackContext);\r\n }\r\n else {\r\n const errorMessage = 'no refresh token found, please login';\r\n this.loggerService.logError(configId, errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n }\r\n}\r\nRefreshSessionCallbackHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionCallbackHandlerService, deps: [{ token: LoggerService }, { token: AuthStateService }, { token: FlowsDataService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nRefreshSessionCallbackHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionCallbackHandlerService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionCallbackHandlerService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }, { type: AuthStateService }, { type: FlowsDataService }]; } });\n\nclass RefreshTokenCallbackHandlerService {\r\n constructor(urlService, loggerService, configurationProvider, dataService, storagePersistenceService) {\r\n this.urlService = urlService;\r\n this.loggerService = loggerService;\r\n this.configurationProvider = configurationProvider;\r\n this.dataService = dataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n }\r\n // STEP 2 Refresh Token\r\n refreshTokensRequestTokens(callbackContext, configId, customParamsRefresh) {\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\r\n const authWellknownEndpoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n const tokenEndpoint = authWellknownEndpoints === null || authWellknownEndpoints === void 0 ? void 0 : authWellknownEndpoints.tokenEndpoint;\r\n if (!tokenEndpoint) {\r\n return throwError('Token Endpoint not defined');\r\n }\r\n const data = this.urlService.createBodyForCodeFlowRefreshTokensRequest(callbackContext.refreshToken, configId, customParamsRefresh);\r\n return this.dataService.post(tokenEndpoint, data, configId, headers).pipe(switchMap((response) => {\r\n this.loggerService.logDebug(configId, 'token refresh response: ', response);\r\n let authResult = new Object();\r\n authResult = response;\r\n authResult.state = callbackContext.state;\r\n callbackContext.authResult = authResult;\r\n return of(callbackContext);\r\n }), retryWhen((error) => this.handleRefreshRetry(error, configId)), catchError((error) => {\r\n const { authority } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n const errorMessage = `OidcService code request ${authority}`;\r\n this.loggerService.logError(configId, errorMessage, error);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n handleRefreshRetry(errors, configId) {\r\n return errors.pipe(mergeMap((error) => {\r\n // retry token refresh if there is no internet connection\r\n if (error && error instanceof HttpErrorResponse && error.error instanceof ProgressEvent && error.error.type === 'error') {\r\n const { authority, refreshTokenRetryInSeconds } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n const errorMessage = `OidcService code request ${authority} - no internet connection`;\r\n this.loggerService.logWarning(configId, errorMessage, error);\r\n return timer(refreshTokenRetryInSeconds * 1000);\r\n }\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\nRefreshTokenCallbackHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshTokenCallbackHandlerService, deps: [{ token: UrlService }, { token: LoggerService }, { token: ConfigurationProvider }, { token: DataService }, { token: StoragePersistenceService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nRefreshTokenCallbackHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshTokenCallbackHandlerService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshTokenCallbackHandlerService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: UrlService }, { type: LoggerService }, { type: ConfigurationProvider }, { type: DataService }, { type: StoragePersistenceService }]; } });\n\nclass FlowsService {\r\n constructor(codeFlowCallbackHandlerService, implicitFlowCallbackHandlerService, historyJwtKeysCallbackHandlerService, userHandlerService, stateValidationCallbackHandlerService, refreshSessionCallbackHandlerService, refreshTokenCallbackHandlerService) {\r\n this.codeFlowCallbackHandlerService = codeFlowCallbackHandlerService;\r\n this.implicitFlowCallbackHandlerService = implicitFlowCallbackHandlerService;\r\n this.historyJwtKeysCallbackHandlerService = historyJwtKeysCallbackHandlerService;\r\n this.userHandlerService = userHandlerService;\r\n this.stateValidationCallbackHandlerService = stateValidationCallbackHandlerService;\r\n this.refreshSessionCallbackHandlerService = refreshSessionCallbackHandlerService;\r\n this.refreshTokenCallbackHandlerService = refreshTokenCallbackHandlerService;\r\n }\r\n processCodeFlowCallback(urlToCheck, configId) {\r\n return this.codeFlowCallbackHandlerService.codeFlowCallback(urlToCheck, configId).pipe(concatMap((callbackContext) => this.codeFlowCallbackHandlerService.codeFlowCodeRequest(callbackContext, configId)), concatMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext, configId)), concatMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext, configId)), concatMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext, configId)));\r\n }\r\n processSilentRenewCodeFlowCallback(firstContext, configId) {\r\n return this.codeFlowCallbackHandlerService.codeFlowCodeRequest(firstContext, configId).pipe(concatMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext, configId)), concatMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext, configId)), concatMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext, configId)));\r\n }\r\n processImplicitFlowCallback(configId, hash) {\r\n return this.implicitFlowCallbackHandlerService.implicitFlowCallback(configId, hash).pipe(concatMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext, configId)), concatMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext, configId)), concatMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext, configId)));\r\n }\r\n processRefreshToken(configId, customParamsRefresh) {\r\n return this.refreshSessionCallbackHandlerService.refreshSessionWithRefreshTokens(configId).pipe(concatMap((callbackContext) => this.refreshTokenCallbackHandlerService.refreshTokensRequestTokens(callbackContext, configId, customParamsRefresh)), concatMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext, configId)), concatMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext, configId)), concatMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext, configId)));\r\n }\r\n}\r\nFlowsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: FlowsService, deps: [{ token: CodeFlowCallbackHandlerService }, { token: ImplicitFlowCallbackHandlerService }, { token: HistoryJwtKeysCallbackHandlerService }, { token: UserCallbackHandlerService }, { token: StateValidationCallbackHandlerService }, { token: RefreshSessionCallbackHandlerService }, { token: RefreshTokenCallbackHandlerService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nFlowsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: FlowsService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: FlowsService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: CodeFlowCallbackHandlerService }, { type: ImplicitFlowCallbackHandlerService }, { type: HistoryJwtKeysCallbackHandlerService }, { type: UserCallbackHandlerService }, { type: StateValidationCallbackHandlerService }, { type: RefreshSessionCallbackHandlerService }, { type: RefreshTokenCallbackHandlerService }]; } });\n\nclass IntervalService {\r\n constructor(zone) {\r\n this.zone = zone;\r\n this.runTokenValidationRunning = null;\r\n }\r\n stopPeriodicTokenCheck() {\r\n if (this.runTokenValidationRunning) {\r\n this.runTokenValidationRunning.unsubscribe();\r\n this.runTokenValidationRunning = null;\r\n }\r\n }\r\n startPeriodicTokenCheck(repeatAfterSeconds) {\r\n const millisecondsDelayBetweenTokenCheck = repeatAfterSeconds * 1000;\r\n return new Observable((subscriber) => {\r\n let intervalId;\r\n this.zone.runOutsideAngular(() => {\r\n intervalId = setInterval(() => this.zone.run(() => subscriber.next()), millisecondsDelayBetweenTokenCheck);\r\n });\r\n return () => {\r\n clearInterval(intervalId);\r\n };\r\n });\r\n }\r\n}\r\nIntervalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: IntervalService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\r\nIntervalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: IntervalService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: IntervalService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\nclass ImplicitFlowCallbackService {\r\n constructor(flowsService, configurationProvider, router, flowsDataService, intervalService) {\r\n this.flowsService = flowsService;\r\n this.configurationProvider = configurationProvider;\r\n this.router = router;\r\n this.flowsDataService = flowsDataService;\r\n this.intervalService = intervalService;\r\n }\r\n authenticatedImplicitFlowCallback(configId, hash) {\r\n const isRenewProcess = this.flowsDataService.isSilentRenewRunning(configId);\r\n const { triggerAuthorizationResultEvent, postLoginRoute, unauthorizedRoute } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n return this.flowsService.processImplicitFlowCallback(configId, hash).pipe(tap((callbackContext) => {\r\n if (!triggerAuthorizationResultEvent && !callbackContext.isRenewProcess) {\r\n this.router.navigateByUrl(postLoginRoute);\r\n }\r\n }), catchError((error) => {\r\n this.flowsDataService.resetSilentRenewRunning(configId);\r\n this.intervalService.stopPeriodicTokenCheck();\r\n if (!triggerAuthorizationResultEvent && !isRenewProcess) {\r\n this.router.navigateByUrl(unauthorizedRoute);\r\n }\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\nImplicitFlowCallbackService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ImplicitFlowCallbackService, deps: [{ token: FlowsService }, { token: ConfigurationProvider }, { token: i2.Router }, { token: FlowsDataService }, { token: IntervalService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nImplicitFlowCallbackService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ImplicitFlowCallbackService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ImplicitFlowCallbackService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: FlowsService }, { type: ConfigurationProvider }, { type: i2.Router }, { type: FlowsDataService }, { type: IntervalService }]; } });\n\nclass IFrameService {\r\n constructor(doc, loggerService) {\r\n this.doc = doc;\r\n this.loggerService = loggerService;\r\n }\r\n getExistingIFrame(identifier) {\r\n const iFrameOnParent = this.getIFrameFromParentWindow(identifier);\r\n if (this.isIFrameElement(iFrameOnParent)) {\r\n return iFrameOnParent;\r\n }\r\n const iFrameOnSelf = this.getIFrameFromWindow(identifier);\r\n if (this.isIFrameElement(iFrameOnSelf)) {\r\n return iFrameOnSelf;\r\n }\r\n return null;\r\n }\r\n addIFrameToWindowBody(identifier, configId) {\r\n const sessionIframe = this.doc.createElement('iframe');\r\n sessionIframe.id = identifier;\r\n sessionIframe.title = identifier;\r\n this.loggerService.logDebug(configId, sessionIframe);\r\n sessionIframe.style.display = 'none';\r\n this.doc.body.appendChild(sessionIframe);\r\n return sessionIframe;\r\n }\r\n getIFrameFromParentWindow(identifier) {\r\n try {\r\n const iFrameElement = this.doc.defaultView.parent.document.getElementById(identifier);\r\n if (this.isIFrameElement(iFrameElement)) {\r\n return iFrameElement;\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n getIFrameFromWindow(identifier) {\r\n const iFrameElement = this.doc.getElementById(identifier);\r\n if (this.isIFrameElement(iFrameElement)) {\r\n return iFrameElement;\r\n }\r\n return null;\r\n }\r\n isIFrameElement(element) {\r\n return !!element && element instanceof HTMLIFrameElement;\r\n }\r\n}\r\nIFrameService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: IFrameService, deps: [{ token: DOCUMENT }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nIFrameService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: IFrameService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: IFrameService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\r\n type: Inject,\r\n args: [DOCUMENT]\r\n }] }, { type: LoggerService }]; } });\n\nconst IFRAME_FOR_CHECK_SESSION_IDENTIFIER = 'myiFrameForCheckSession';\r\n// http://openid.net/specs/openid-connect-session-1_0-ID4.html\r\nclass CheckSessionService {\r\n constructor(storagePersistenceService, loggerService, iFrameService, eventService, configurationProvider, zone) {\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.loggerService = loggerService;\r\n this.iFrameService = iFrameService;\r\n this.eventService = eventService;\r\n this.configurationProvider = configurationProvider;\r\n this.zone = zone;\r\n this.checkSessionReceived = false;\r\n this.lastIFrameRefresh = 0;\r\n this.outstandingMessages = 0;\r\n this.heartBeatInterval = 3000;\r\n this.iframeRefreshInterval = 60000;\r\n this.checkSessionChangedInternal$ = new BehaviorSubject(false);\r\n }\r\n get checkSessionChanged$() {\r\n return this.checkSessionChangedInternal$.asObservable();\r\n }\r\n isCheckSessionConfigured(configId) {\r\n const { startCheckSession } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n return startCheckSession;\r\n }\r\n start(configId) {\r\n if (!!this.scheduledHeartBeatRunning) {\r\n return;\r\n }\r\n const { clientId } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n this.pollServerSession(clientId, configId);\r\n }\r\n stop() {\r\n if (!this.scheduledHeartBeatRunning) {\r\n return;\r\n }\r\n this.clearScheduledHeartBeat();\r\n this.checkSessionReceived = false;\r\n }\r\n serverStateChanged(configId) {\r\n const { startCheckSession } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n return startCheckSession && this.checkSessionReceived;\r\n }\r\n getExistingIframe() {\r\n return this.iFrameService.getExistingIFrame(IFRAME_FOR_CHECK_SESSION_IDENTIFIER);\r\n }\r\n init(configId) {\r\n if (this.lastIFrameRefresh + this.iframeRefreshInterval > Date.now()) {\r\n return of(undefined);\r\n }\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n if (!authWellKnownEndPoints) {\r\n this.loggerService.logWarning(configId, 'CheckSession - init check session: authWellKnownEndpoints is undefined. Returning.');\r\n return of();\r\n }\r\n const existingIframe = this.getOrCreateIframe(configId);\r\n const checkSessionIframe = authWellKnownEndPoints.checkSessionIframe;\r\n if (checkSessionIframe) {\r\n existingIframe.contentWindow.location.replace(checkSessionIframe);\r\n }\r\n else {\r\n this.loggerService.logWarning(configId, 'CheckSession - init check session: checkSessionIframe is not configured to run');\r\n }\r\n return new Observable((observer) => {\r\n existingIframe.onload = () => {\r\n this.lastIFrameRefresh = Date.now();\r\n observer.next();\r\n observer.complete();\r\n };\r\n });\r\n }\r\n pollServerSession(clientId, configId) {\r\n this.outstandingMessages = 0;\r\n const pollServerSessionRecur = () => {\r\n this.init(configId)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n var _a;\r\n const existingIframe = this.getExistingIframe();\r\n if (existingIframe && clientId) {\r\n this.loggerService.logDebug(configId, `CheckSession - clientId : '${clientId}' - existingIframe: '${existingIframe}'`);\r\n const sessionState = this.storagePersistenceService.read('session_state', configId);\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n if (sessionState && (authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.checkSessionIframe)) {\r\n const iframeOrigin = (_a = new URL(authWellKnownEndPoints.checkSessionIframe)) === null || _a === void 0 ? void 0 : _a.origin;\r\n this.outstandingMessages++;\r\n existingIframe.contentWindow.postMessage(clientId + ' ' + sessionState, iframeOrigin);\r\n }\r\n else {\r\n this.loggerService.logDebug(configId, `CheckSession - session_state is '${sessionState}' - AuthWellKnownEndPoints is '${JSON.stringify(authWellKnownEndPoints, null, 2)}'`);\r\n this.checkSessionChangedInternal$.next(true);\r\n }\r\n }\r\n else {\r\n this.loggerService.logWarning(configId, `CheckSession - OidcSecurityCheckSession pollServerSession checkSession IFrame does not exist:\n clientId : '${clientId}' - existingIframe: '${existingIframe}'`);\r\n }\r\n // after sending three messages with no response, fail.\r\n if (this.outstandingMessages > 3) {\r\n this.loggerService.logError(configId, `CheckSession - OidcSecurityCheckSession not receiving check session response messages.\n Outstanding messages: '${this.outstandingMessages}'. Server unreachable?`);\r\n }\r\n this.zone.runOutsideAngular(() => {\r\n this.scheduledHeartBeatRunning = setTimeout(() => this.zone.run(pollServerSessionRecur), this.heartBeatInterval);\r\n });\r\n });\r\n };\r\n pollServerSessionRecur();\r\n }\r\n clearScheduledHeartBeat() {\r\n clearTimeout(this.scheduledHeartBeatRunning);\r\n this.scheduledHeartBeatRunning = null;\r\n }\r\n messageHandler(configId, e) {\r\n var _a;\r\n const existingIFrame = this.getExistingIframe();\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n const startsWith = !!((_a = authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.checkSessionIframe) === null || _a === void 0 ? void 0 : _a.startsWith(e.origin));\r\n this.outstandingMessages = 0;\r\n if (existingIFrame && startsWith && e.source === existingIFrame.contentWindow) {\r\n if (e.data === 'error') {\r\n this.loggerService.logWarning(configId, 'CheckSession - error from check session messageHandler');\r\n }\r\n else if (e.data === 'changed') {\r\n this.loggerService.logDebug(configId, `CheckSession - ${e} from check session messageHandler`);\r\n this.checkSessionReceived = true;\r\n this.eventService.fireEvent(EventTypes.CheckSessionReceived, e.data);\r\n this.checkSessionChangedInternal$.next(true);\r\n }\r\n else {\r\n this.eventService.fireEvent(EventTypes.CheckSessionReceived, e.data);\r\n this.loggerService.logDebug(configId, `CheckSession - ${e.data} from check session messageHandler`);\r\n }\r\n }\r\n }\r\n bindMessageEventToIframe(configId) {\r\n const iframeMessageEvent = this.messageHandler.bind(this, configId);\r\n window.addEventListener('message', iframeMessageEvent, false);\r\n }\r\n getOrCreateIframe(configId) {\r\n const existingIframe = this.getExistingIframe();\r\n if (!existingIframe) {\r\n const frame = this.iFrameService.addIFrameToWindowBody(IFRAME_FOR_CHECK_SESSION_IDENTIFIER, configId);\r\n this.bindMessageEventToIframe(configId);\r\n return frame;\r\n }\r\n return existingIframe;\r\n }\r\n}\r\nCheckSessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CheckSessionService, deps: [{ token: StoragePersistenceService }, { token: LoggerService }, { token: IFrameService }, { token: PublicEventsService }, { token: ConfigurationProvider }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\r\nCheckSessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CheckSessionService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CheckSessionService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: StoragePersistenceService }, { type: LoggerService }, { type: IFrameService }, { type: PublicEventsService }, { type: ConfigurationProvider }, { type: i0.NgZone }]; } });\n\nclass CurrentUrlService {\r\n constructor(doc) {\r\n this.doc = doc;\r\n }\r\n getStateParamFromCurrentUrl() {\r\n const currentUrl = this.getCurrentUrl();\r\n const parsedUrl = new URL(currentUrl);\r\n const urlParams = new URLSearchParams(parsedUrl.search);\r\n const stateFromUrl = urlParams.get('state');\r\n return stateFromUrl;\r\n }\r\n currentUrlHasStateParam() {\r\n return !!this.getStateParamFromCurrentUrl();\r\n }\r\n getCurrentUrl() {\r\n return this.doc.defaultView.location.toString();\r\n }\r\n}\r\nCurrentUrlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CurrentUrlService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\r\nCurrentUrlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CurrentUrlService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CurrentUrlService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\r\n type: Inject,\r\n args: [DOCUMENT]\r\n }] }]; } });\n\nconst IFRAME_FOR_SILENT_RENEW_IDENTIFIER = 'myiFrameForSilentRenew';\r\nclass SilentRenewService {\r\n constructor(configurationProvider, iFrameService, flowsService, resetAuthDataService, flowsDataService, authStateService, loggerService, flowHelper, implicitFlowCallbackService, intervalService) {\r\n this.configurationProvider = configurationProvider;\r\n this.iFrameService = iFrameService;\r\n this.flowsService = flowsService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.flowsDataService = flowsDataService;\r\n this.authStateService = authStateService;\r\n this.loggerService = loggerService;\r\n this.flowHelper = flowHelper;\r\n this.implicitFlowCallbackService = implicitFlowCallbackService;\r\n this.intervalService = intervalService;\r\n this.refreshSessionWithIFrameCompletedInternal$ = new Subject();\r\n }\r\n get refreshSessionWithIFrameCompleted$() {\r\n return this.refreshSessionWithIFrameCompletedInternal$.asObservable();\r\n }\r\n getOrCreateIframe(configId) {\r\n const existingIframe = this.getExistingIframe();\r\n if (!existingIframe) {\r\n return this.iFrameService.addIFrameToWindowBody(IFRAME_FOR_SILENT_RENEW_IDENTIFIER, configId);\r\n }\r\n return existingIframe;\r\n }\r\n isSilentRenewConfigured(configId) {\r\n const { useRefreshToken, silentRenew } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n return !useRefreshToken && silentRenew;\r\n }\r\n codeFlowCallbackSilentRenewIframe(urlParts, configId) {\r\n const params = new HttpParams({\r\n fromString: urlParts[1],\r\n });\r\n const error = params.get('error');\r\n if (error) {\r\n this.authStateService.updateAndPublishAuthState({\r\n isAuthenticated: false,\r\n validationResult: ValidationResult.LoginRequired,\r\n isRenewProcess: true,\r\n });\r\n this.resetAuthDataService.resetAuthorizationData(configId);\r\n this.flowsDataService.setNonce('', configId);\r\n this.intervalService.stopPeriodicTokenCheck();\r\n return throwError(error);\r\n }\r\n const code = params.get('code');\r\n const state = params.get('state');\r\n const sessionState = params.get('session_state');\r\n const callbackContext = {\r\n code,\r\n refreshToken: null,\r\n state,\r\n sessionState,\r\n authResult: null,\r\n isRenewProcess: true,\r\n jwtKeys: null,\r\n validationResult: null,\r\n existingIdToken: null,\r\n };\r\n return this.flowsService.processSilentRenewCodeFlowCallback(callbackContext, configId).pipe(catchError((errorFromFlow) => {\r\n this.intervalService.stopPeriodicTokenCheck();\r\n this.resetAuthDataService.resetAuthorizationData(configId);\r\n return throwError(errorFromFlow);\r\n }));\r\n }\r\n silentRenewEventHandler(e, configId) {\r\n this.loggerService.logDebug(configId, 'silentRenewEventHandler');\r\n if (!e.detail) {\r\n return;\r\n }\r\n let callback$ = of(null);\r\n const isCodeFlow = this.flowHelper.isCurrentFlowCodeFlow(configId);\r\n if (isCodeFlow) {\r\n const urlParts = e.detail.toString().split('?');\r\n callback$ = this.codeFlowCallbackSilentRenewIframe(urlParts, configId);\r\n }\r\n else {\r\n callback$ = this.implicitFlowCallbackService.authenticatedImplicitFlowCallback(configId, e.detail);\r\n }\r\n callback$.subscribe((callbackContext) => {\r\n this.refreshSessionWithIFrameCompletedInternal$.next(callbackContext);\r\n this.flowsDataService.resetSilentRenewRunning(configId);\r\n }, (err) => {\r\n this.loggerService.logError(configId, 'Error: ' + err);\r\n this.refreshSessionWithIFrameCompletedInternal$.next(null);\r\n this.flowsDataService.resetSilentRenewRunning(configId);\r\n });\r\n }\r\n getExistingIframe() {\r\n return this.iFrameService.getExistingIFrame(IFRAME_FOR_SILENT_RENEW_IDENTIFIER);\r\n }\r\n}\r\nSilentRenewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: SilentRenewService, deps: [{ token: ConfigurationProvider }, { token: IFrameService }, { token: FlowsService }, { token: ResetAuthDataService }, { token: FlowsDataService }, { token: AuthStateService }, { token: LoggerService }, { token: FlowHelper }, { token: ImplicitFlowCallbackService }, { token: IntervalService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nSilentRenewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: SilentRenewService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: SilentRenewService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: ConfigurationProvider }, { type: IFrameService }, { type: FlowsService }, { type: ResetAuthDataService }, { type: FlowsDataService }, { type: AuthStateService }, { type: LoggerService }, { type: FlowHelper }, { type: ImplicitFlowCallbackService }, { type: IntervalService }]; } });\n\nclass CodeFlowCallbackService {\r\n constructor(flowsService, flowsDataService, intervalService, configurationProvider, router) {\r\n this.flowsService = flowsService;\r\n this.flowsDataService = flowsDataService;\r\n this.intervalService = intervalService;\r\n this.configurationProvider = configurationProvider;\r\n this.router = router;\r\n }\r\n authenticatedCallbackWithCode(urlToCheck, configId) {\r\n const isRenewProcess = this.flowsDataService.isSilentRenewRunning(configId);\r\n const { triggerAuthorizationResultEvent, postLoginRoute, unauthorizedRoute } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n return this.flowsService.processCodeFlowCallback(urlToCheck, configId).pipe(tap((callbackContext) => {\r\n if (!triggerAuthorizationResultEvent && !callbackContext.isRenewProcess) {\r\n this.router.navigateByUrl(postLoginRoute);\r\n }\r\n }), catchError((error) => {\r\n this.flowsDataService.resetSilentRenewRunning(configId);\r\n this.intervalService.stopPeriodicTokenCheck();\r\n if (!triggerAuthorizationResultEvent && !isRenewProcess) {\r\n this.router.navigateByUrl(unauthorizedRoute);\r\n }\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\nCodeFlowCallbackService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CodeFlowCallbackService, deps: [{ token: FlowsService }, { token: FlowsDataService }, { token: IntervalService }, { token: ConfigurationProvider }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });\r\nCodeFlowCallbackService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CodeFlowCallbackService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CodeFlowCallbackService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: FlowsService }, { type: FlowsDataService }, { type: IntervalService }, { type: ConfigurationProvider }, { type: i2.Router }]; } });\n\nclass CallbackService {\r\n constructor(urlService, flowHelper, implicitFlowCallbackService, codeFlowCallbackService) {\r\n this.urlService = urlService;\r\n this.flowHelper = flowHelper;\r\n this.implicitFlowCallbackService = implicitFlowCallbackService;\r\n this.codeFlowCallbackService = codeFlowCallbackService;\r\n this.stsCallbackInternal$ = new Subject();\r\n }\r\n get stsCallback$() {\r\n return this.stsCallbackInternal$.asObservable();\r\n }\r\n isCallback(currentUrl) {\r\n return this.urlService.isCallbackFromSts(currentUrl);\r\n }\r\n handleCallbackAndFireEvents(currentCallbackUrl, configId) {\r\n let callback$;\r\n if (this.flowHelper.isCurrentFlowCodeFlow(configId)) {\r\n callback$ = this.codeFlowCallbackService.authenticatedCallbackWithCode(currentCallbackUrl, configId);\r\n }\r\n else if (this.flowHelper.isCurrentFlowAnyImplicitFlow(configId)) {\r\n callback$ = this.implicitFlowCallbackService.authenticatedImplicitFlowCallback(configId);\r\n }\r\n return callback$.pipe(tap(() => this.stsCallbackInternal$.next()));\r\n }\r\n}\r\nCallbackService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CallbackService, deps: [{ token: UrlService }, { token: FlowHelper }, { token: ImplicitFlowCallbackService }, { token: CodeFlowCallbackService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nCallbackService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CallbackService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CallbackService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: UrlService }, { type: FlowHelper }, { type: ImplicitFlowCallbackService }, { type: CodeFlowCallbackService }]; } });\n\nconst WELL_KNOWN_SUFFIX = `/.well-known/openid-configuration`;\r\nclass AuthWellKnownDataService {\r\n constructor(http) {\r\n this.http = http;\r\n }\r\n getWellKnownEndPointsFromUrl(authWellknownEndpoint, configId) {\r\n return this.getWellKnownDocument(authWellknownEndpoint, configId).pipe(map((wellKnownEndpoints) => ({\r\n issuer: wellKnownEndpoints.issuer,\r\n jwksUri: wellKnownEndpoints.jwks_uri,\r\n authorizationEndpoint: wellKnownEndpoints.authorization_endpoint,\r\n tokenEndpoint: wellKnownEndpoints.token_endpoint,\r\n userInfoEndpoint: wellKnownEndpoints.userinfo_endpoint,\r\n endSessionEndpoint: wellKnownEndpoints.end_session_endpoint,\r\n checkSessionIframe: wellKnownEndpoints.check_session_iframe,\r\n revocationEndpoint: wellKnownEndpoints.revocation_endpoint,\r\n introspectionEndpoint: wellKnownEndpoints.introspection_endpoint,\r\n parEndpoint: wellKnownEndpoints.pushed_authorization_request_endpoint,\r\n })));\r\n }\r\n getWellKnownDocument(wellKnownEndpoint, configId) {\r\n let url = wellKnownEndpoint;\r\n if (!wellKnownEndpoint.includes(WELL_KNOWN_SUFFIX)) {\r\n url = `${wellKnownEndpoint}${WELL_KNOWN_SUFFIX}`;\r\n }\r\n return this.http.get(url, configId).pipe(retry(2));\r\n }\r\n}\r\nAuthWellKnownDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthWellKnownDataService, deps: [{ token: DataService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nAuthWellKnownDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthWellKnownDataService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthWellKnownDataService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: DataService }]; } });\n\nclass AuthWellKnownService {\r\n constructor(publicEventsService, dataService, storagePersistenceService) {\r\n this.publicEventsService = publicEventsService;\r\n this.dataService = dataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n }\r\n getAuthWellKnownEndPoints(authWellknownEndpointUrl, configId) {\r\n const alreadySavedWellKnownEndpoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n if (!!alreadySavedWellKnownEndpoints) {\r\n return of(alreadySavedWellKnownEndpoints);\r\n }\r\n return this.getWellKnownEndPointsFromUrl(authWellknownEndpointUrl, configId).pipe(tap((mappedWellKnownEndpoints) => this.storeWellKnownEndpoints(configId, mappedWellKnownEndpoints)), catchError((error) => {\r\n this.publicEventsService.fireEvent(EventTypes.ConfigLoadingFailed, null);\r\n return throwError(error);\r\n }));\r\n }\r\n storeWellKnownEndpoints(configId, mappedWellKnownEndpoints) {\r\n this.storagePersistenceService.write('authWellKnownEndPoints', mappedWellKnownEndpoints, configId);\r\n }\r\n getWellKnownEndPointsFromUrl(authWellknownEndpointUrl, configId) {\r\n return this.dataService.getWellKnownEndPointsFromUrl(authWellknownEndpointUrl, configId);\r\n }\r\n}\r\nAuthWellKnownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthWellKnownService, deps: [{ token: PublicEventsService }, { token: AuthWellKnownDataService }, { token: StoragePersistenceService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nAuthWellKnownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthWellKnownService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthWellKnownService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: PublicEventsService }, { type: AuthWellKnownDataService }, { type: StoragePersistenceService }]; } });\n\nclass RefreshSessionIframeService {\r\n constructor(doc, loggerService, urlService, silentRenewService, rendererFactory) {\r\n this.doc = doc;\r\n this.loggerService = loggerService;\r\n this.urlService = urlService;\r\n this.silentRenewService = silentRenewService;\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n refreshSessionWithIframe(configId, customParams) {\r\n this.loggerService.logDebug(configId, 'BEGIN refresh session Authorize Iframe renew');\r\n const url = this.urlService.getRefreshSessionSilentRenewUrl(configId, customParams);\r\n return this.sendAuthorizeRequestUsingSilentRenew(url, configId);\r\n }\r\n sendAuthorizeRequestUsingSilentRenew(url, configId) {\r\n const sessionIframe = this.silentRenewService.getOrCreateIframe(configId);\r\n this.initSilentRenewRequest(configId);\r\n this.loggerService.logDebug(configId, 'sendAuthorizeRequestUsingSilentRenew for URL:' + url);\r\n return new Observable((observer) => {\r\n const onLoadHandler = () => {\r\n sessionIframe.removeEventListener('load', onLoadHandler);\r\n this.loggerService.logDebug(configId, 'removed event listener from IFrame');\r\n observer.next(true);\r\n observer.complete();\r\n };\r\n sessionIframe.addEventListener('load', onLoadHandler);\r\n sessionIframe.contentWindow.location.replace(url);\r\n });\r\n }\r\n initSilentRenewRequest(configId) {\r\n const instanceId = Math.random();\r\n const initDestroyHandler = this.renderer.listen('window', 'oidc-silent-renew-init', (e) => {\r\n if (e.detail !== instanceId) {\r\n initDestroyHandler();\r\n renewDestroyHandler();\r\n }\r\n });\r\n const renewDestroyHandler = this.renderer.listen('window', 'oidc-silent-renew-message', (e) => this.silentRenewService.silentRenewEventHandler(e, configId));\r\n this.doc.defaultView.dispatchEvent(new CustomEvent('oidc-silent-renew-init', {\r\n detail: instanceId,\r\n }));\r\n }\r\n}\r\nRefreshSessionIframeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionIframeService, deps: [{ token: DOCUMENT }, { token: LoggerService }, { token: UrlService }, { token: SilentRenewService }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });\r\nRefreshSessionIframeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionIframeService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionIframeService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\r\n type: Inject,\r\n args: [DOCUMENT]\r\n }] }, { type: LoggerService }, { type: UrlService }, { type: SilentRenewService }, { type: i0.RendererFactory2 }]; } });\n\nclass RefreshSessionRefreshTokenService {\r\n constructor(loggerService, resetAuthDataService, flowsService, intervalService) {\r\n this.loggerService = loggerService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.flowsService = flowsService;\r\n this.intervalService = intervalService;\r\n }\r\n refreshSessionWithRefreshTokens(configId, customParamsRefresh) {\r\n this.loggerService.logDebug(configId, 'BEGIN refresh session Authorize');\r\n return this.flowsService.processRefreshToken(configId, customParamsRefresh).pipe(catchError((error) => {\r\n this.intervalService.stopPeriodicTokenCheck();\r\n this.resetAuthDataService.resetAuthorizationData(configId);\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\nRefreshSessionRefreshTokenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionRefreshTokenService, deps: [{ token: LoggerService }, { token: ResetAuthDataService }, { token: FlowsService }, { token: IntervalService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nRefreshSessionRefreshTokenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionRefreshTokenService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionRefreshTokenService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: LoggerService }, { type: ResetAuthDataService }, { type: FlowsService }, { type: IntervalService }]; } });\n\nconst MAX_RETRY_ATTEMPTS = 3;\r\nclass RefreshSessionService {\r\n constructor(flowHelper, configurationProvider, flowsDataService, loggerService, silentRenewService, authStateService, authWellKnownService, refreshSessionIframeService, storagePersistenceService, refreshSessionRefreshTokenService, userService) {\r\n this.flowHelper = flowHelper;\r\n this.configurationProvider = configurationProvider;\r\n this.flowsDataService = flowsDataService;\r\n this.loggerService = loggerService;\r\n this.silentRenewService = silentRenewService;\r\n this.authStateService = authStateService;\r\n this.authWellKnownService = authWellKnownService;\r\n this.refreshSessionIframeService = refreshSessionIframeService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.refreshSessionRefreshTokenService = refreshSessionRefreshTokenService;\r\n this.userService = userService;\r\n }\r\n userForceRefreshSession(configId, extraCustomParams) {\r\n this.persistCustomParams(extraCustomParams, configId);\r\n return this.forceRefreshSession(configId, extraCustomParams);\r\n }\r\n forceRefreshSession(configId, extraCustomParams) {\r\n const { customParamsRefreshTokenRequest } = this.configurationProvider.getOpenIDConfiguration();\r\n const mergedParams = Object.assign(Object.assign({}, customParamsRefreshTokenRequest), extraCustomParams);\r\n if (this.flowHelper.isCurrentFlowCodeFlowWithRefreshTokens(configId)) {\r\n return this.startRefreshSession(configId, mergedParams).pipe(map(() => {\r\n const isAuthenticated = this.authStateService.areAuthStorageTokensValid(configId);\r\n if (isAuthenticated) {\r\n return {\r\n idToken: this.authStateService.getIdToken(configId),\r\n accessToken: this.authStateService.getAccessToken(configId),\r\n userData: this.userService.getUserDataFromStore(configId),\r\n isAuthenticated,\r\n configId,\r\n };\r\n }\r\n return null;\r\n }));\r\n }\r\n const { silentRenewTimeoutInSeconds } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n const timeOutTime = silentRenewTimeoutInSeconds * 1000;\r\n return forkJoin([\r\n this.startRefreshSession(configId, extraCustomParams),\r\n this.silentRenewService.refreshSessionWithIFrameCompleted$.pipe(take(1)),\r\n ]).pipe(timeout(timeOutTime), retryWhen(this.timeoutRetryStrategy.bind(this)), map(([_, callbackContext]) => {\r\n var _a, _b;\r\n const isAuthenticated = this.authStateService.areAuthStorageTokensValid(configId);\r\n if (isAuthenticated) {\r\n return {\r\n idToken: (_a = callbackContext === null || callbackContext === void 0 ? void 0 : callbackContext.authResult) === null || _a === void 0 ? void 0 : _a.id_token,\r\n accessToken: (_b = callbackContext === null || callbackContext === void 0 ? void 0 : callbackContext.authResult) === null || _b === void 0 ? void 0 : _b.access_token,\r\n userData: this.userService.getUserDataFromStore(configId),\r\n isAuthenticated,\r\n configId,\r\n };\r\n }\r\n return null;\r\n }));\r\n }\r\n persistCustomParams(extraCustomParams, configId) {\r\n const { useRefreshToken } = this.configurationProvider.getOpenIDConfiguration();\r\n if (extraCustomParams) {\r\n if (useRefreshToken) {\r\n this.storagePersistenceService.write('storageCustomParamsRefresh', extraCustomParams, configId);\r\n }\r\n else {\r\n this.storagePersistenceService.write('storageCustomParamsAuthRequest', extraCustomParams, configId);\r\n }\r\n }\r\n }\r\n startRefreshSession(configId, extraCustomParams) {\r\n const isSilentRenewRunning = this.flowsDataService.isSilentRenewRunning(configId);\r\n this.loggerService.logDebug(configId, `Checking: silentRenewRunning: ${isSilentRenewRunning}`);\r\n const shouldBeExecuted = !isSilentRenewRunning;\r\n if (!shouldBeExecuted) {\r\n return of(null);\r\n }\r\n const { authWellknownEndpointUrl } = this.configurationProvider.getOpenIDConfiguration(configId) || {};\r\n if (!authWellknownEndpointUrl) {\r\n this.loggerService.logError(configId, 'no authWellKnownEndpoint given!');\r\n return of(null);\r\n }\r\n return this.authWellKnownService.getAuthWellKnownEndPoints(authWellknownEndpointUrl, configId).pipe(switchMap(() => {\r\n this.flowsDataService.setSilentRenewRunning(configId);\r\n if (this.flowHelper.isCurrentFlowCodeFlowWithRefreshTokens(configId)) {\r\n // Refresh Session using Refresh tokens\r\n return this.refreshSessionRefreshTokenService.refreshSessionWithRefreshTokens(configId, extraCustomParams);\r\n }\r\n return this.refreshSessionIframeService.refreshSessionWithIframe(configId, extraCustomParams);\r\n }));\r\n }\r\n timeoutRetryStrategy(errorAttempts, configId) {\r\n return errorAttempts.pipe(mergeMap((error, index) => {\r\n const scalingDuration = 1000;\r\n const currentAttempt = index + 1;\r\n if (!(error instanceof TimeoutError) || currentAttempt > MAX_RETRY_ATTEMPTS) {\r\n return throwError(error);\r\n }\r\n this.loggerService.logDebug(configId, `forceRefreshSession timeout. Attempt #${currentAttempt}`);\r\n this.flowsDataService.resetSilentRenewRunning(configId);\r\n return timer(currentAttempt * scalingDuration);\r\n }));\r\n }\r\n}\r\nRefreshSessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionService, deps: [{ token: FlowHelper }, { token: ConfigurationProvider }, { token: FlowsDataService }, { token: LoggerService }, { token: SilentRenewService }, { token: AuthStateService }, { token: AuthWellKnownService }, { token: RefreshSessionIframeService }, { token: StoragePersistenceService }, { token: RefreshSessionRefreshTokenService }, { token: UserService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nRefreshSessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RefreshSessionService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: FlowHelper }, { type: ConfigurationProvider }, { type: FlowsDataService }, { type: LoggerService }, { type: SilentRenewService }, { type: AuthStateService }, { type: AuthWellKnownService }, { type: RefreshSessionIframeService }, { type: StoragePersistenceService }, { type: RefreshSessionRefreshTokenService }, { type: UserService }]; } });\n\nclass PeriodicallyTokenCheckService {\r\n constructor(resetAuthDataService, flowHelper, configurationProvider, flowsDataService, loggerService, userService, authStateService, refreshSessionIframeService, refreshSessionRefreshTokenService, intervalService, storagePersistenceService, publicEventsService) {\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.flowHelper = flowHelper;\r\n this.configurationProvider = configurationProvider;\r\n this.flowsDataService = flowsDataService;\r\n this.loggerService = loggerService;\r\n this.userService = userService;\r\n this.authStateService = authStateService;\r\n this.refreshSessionIframeService = refreshSessionIframeService;\r\n this.refreshSessionRefreshTokenService = refreshSessionRefreshTokenService;\r\n this.intervalService = intervalService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.publicEventsService = publicEventsService;\r\n }\r\n startTokenValidationPeriodically() {\r\n const configsWithSilentRenewEnabled = this.getConfigsWithSilentRenewEnabled();\r\n if (configsWithSilentRenewEnabled.length <= 0) {\r\n return;\r\n }\r\n const refreshTimeInSeconds = this.getSmallestRefreshTimeFromConfigs(configsWithSilentRenewEnabled);\r\n if (!!this.intervalService.runTokenValidationRunning) {\r\n return;\r\n }\r\n // START PERIODICALLY CHECK ONCE AND CHECK EACH CONFIG WHICH HAS IT ENABLED\r\n const periodicallyCheck$ = this.intervalService.startPeriodicTokenCheck(refreshTimeInSeconds).pipe(switchMap(() => {\r\n const objectWithConfigIdsAndRefreshEvent = {};\r\n configsWithSilentRenewEnabled.forEach(({ configId }) => {\r\n objectWithConfigIdsAndRefreshEvent[configId] = this.getRefreshEvent(configId);\r\n });\r\n return forkJoin(objectWithConfigIdsAndRefreshEvent);\r\n }));\r\n this.intervalService.runTokenValidationRunning = periodicallyCheck$.subscribe((objectWithConfigIds) => {\r\n for (const [key, _] of Object.entries(objectWithConfigIds)) {\r\n this.loggerService.logDebug(key, 'silent renew, periodic check finished!');\r\n if (this.flowHelper.isCurrentFlowCodeFlowWithRefreshTokens(key)) {\r\n this.flowsDataService.resetSilentRenewRunning(key);\r\n }\r\n }\r\n });\r\n }\r\n getRefreshEvent(configId) {\r\n const shouldStartRefreshEvent = this.shouldStartPeriodicallyCheckForConfig(configId);\r\n if (!shouldStartRefreshEvent) {\r\n return of(null);\r\n }\r\n const refreshEvent$ = this.createRefreshEventForConfig(configId);\r\n this.publicEventsService.fireEvent(EventTypes.SilentRenewStarted);\r\n const refreshEventWithErrorHandler$ = refreshEvent$.pipe(catchError((error) => {\r\n this.loggerService.logError(configId, 'silent renew failed!', error);\r\n this.flowsDataService.resetSilentRenewRunning(configId);\r\n return throwError(error);\r\n }));\r\n return refreshEventWithErrorHandler$;\r\n }\r\n getSmallestRefreshTimeFromConfigs(configsWithSilentRenewEnabled) {\r\n const result = configsWithSilentRenewEnabled.reduce((prev, curr) => prev.tokenRefreshInSeconds < curr.tokenRefreshInSeconds ? prev : curr);\r\n return result.tokenRefreshInSeconds;\r\n }\r\n getConfigsWithSilentRenewEnabled() {\r\n return this.configurationProvider.getAllConfigurations().filter((x) => x.silentRenew);\r\n }\r\n createRefreshEventForConfig(configId) {\r\n this.loggerService.logDebug(configId, 'starting silent renew...');\r\n const config = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!(config === null || config === void 0 ? void 0 : config.silentRenew)) {\r\n this.resetAuthDataService.resetAuthorizationData(configId);\r\n return of(null);\r\n }\r\n this.flowsDataService.setSilentRenewRunning(configId);\r\n if (this.flowHelper.isCurrentFlowCodeFlowWithRefreshTokens(configId)) {\r\n // Retrieve Dynamically Set Custom Params for refresh body\r\n const customParamsRefresh = this.storagePersistenceService.read('storageCustomParamsRefresh', configId) || {};\r\n const { customParamsRefreshTokenRequest } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n const mergedParams = Object.assign(Object.assign({}, customParamsRefreshTokenRequest), customParamsRefresh);\r\n // Refresh Session using Refresh tokens\r\n return this.refreshSessionRefreshTokenService.refreshSessionWithRefreshTokens(configId, mergedParams);\r\n }\r\n // Retrieve Dynamically Set Custom Params\r\n const customParams = this.storagePersistenceService.read('storageCustomParamsAuthRequest', configId);\r\n return this.refreshSessionIframeService.refreshSessionWithIframe(configId, customParams);\r\n }\r\n shouldStartPeriodicallyCheckForConfig(configId) {\r\n const idToken = this.authStateService.getIdToken(configId);\r\n const isSilentRenewRunning = this.flowsDataService.isSilentRenewRunning(configId);\r\n const userDataFromStore = this.userService.getUserDataFromStore(configId);\r\n this.loggerService.logDebug(configId, `Checking: silentRenewRunning: ${isSilentRenewRunning} - has idToken: ${!!idToken} - has userData: ${!!userDataFromStore}`);\r\n const shouldBeExecuted = !!userDataFromStore && !isSilentRenewRunning && !!idToken;\r\n if (!shouldBeExecuted) {\r\n return false;\r\n }\r\n const idTokenStillValid = this.authStateService.hasIdTokenExpiredAndRenewCheckIsEnabled(configId);\r\n const accessTokenHasExpired = this.authStateService.hasAccessTokenExpiredIfExpiryExists(configId);\r\n if (!idTokenStillValid && !accessTokenHasExpired) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\nPeriodicallyTokenCheckService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PeriodicallyTokenCheckService, deps: [{ token: ResetAuthDataService }, { token: FlowHelper }, { token: ConfigurationProvider }, { token: FlowsDataService }, { token: LoggerService }, { token: UserService }, { token: AuthStateService }, { token: RefreshSessionIframeService }, { token: RefreshSessionRefreshTokenService }, { token: IntervalService }, { token: StoragePersistenceService }, { token: PublicEventsService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nPeriodicallyTokenCheckService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PeriodicallyTokenCheckService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PeriodicallyTokenCheckService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: ResetAuthDataService }, { type: FlowHelper }, { type: ConfigurationProvider }, { type: FlowsDataService }, { type: LoggerService }, { type: UserService }, { type: AuthStateService }, { type: RefreshSessionIframeService }, { type: RefreshSessionRefreshTokenService }, { type: IntervalService }, { type: StoragePersistenceService }, { type: PublicEventsService }]; } });\n\nclass PopUpService {\r\n constructor() {\r\n this.STORAGE_IDENTIFIER = 'popupauth';\r\n this.resultInternal$ = new Subject();\r\n }\r\n get result$() {\r\n return this.resultInternal$.asObservable();\r\n }\r\n isCurrentlyInPopup() {\r\n if (this.canAccessSessionStorage()) {\r\n const popup = sessionStorage.getItem(this.STORAGE_IDENTIFIER);\r\n return !!window.opener && window.opener !== window && !!popup;\r\n }\r\n return false;\r\n }\r\n openPopUp(url, popupOptions) {\r\n const optionsToPass = this.getOptions(popupOptions);\r\n this.popUp = window.open(url, '_blank', optionsToPass);\r\n this.popUp.sessionStorage.setItem(this.STORAGE_IDENTIFIER, 'true');\r\n const listener = (event) => {\r\n if (!(event === null || event === void 0 ? void 0 : event.data) || typeof event.data !== 'string') {\r\n return;\r\n }\r\n this.resultInternal$.next({ userClosed: false, receivedUrl: event.data });\r\n this.cleanUp(listener);\r\n };\r\n window.addEventListener('message', listener, false);\r\n this.handle = window.setInterval(() => {\r\n if (this.popUp.closed) {\r\n this.resultInternal$.next({ userClosed: true });\r\n this.cleanUp(listener);\r\n }\r\n }, 200);\r\n }\r\n sendMessageToMainWindow(url) {\r\n if (window.opener) {\r\n this.sendMessage(url, window.location.href);\r\n }\r\n }\r\n cleanUp(listener) {\r\n var _a;\r\n window.removeEventListener('message', listener, false);\r\n window.clearInterval(this.handle);\r\n if (this.popUp) {\r\n (_a = this.popUp.sessionStorage) === null || _a === void 0 ? void 0 : _a.removeItem(this.STORAGE_IDENTIFIER);\r\n this.popUp.close();\r\n this.popUp = null;\r\n }\r\n }\r\n sendMessage(url, href) {\r\n window.opener.postMessage(url, href);\r\n }\r\n getOptions(popupOptions) {\r\n const popupDefaultOptions = { width: 500, height: 500, left: 50, top: 50 };\r\n const options = Object.assign(Object.assign({}, popupDefaultOptions), (popupOptions || {}));\r\n const left = window.screenLeft + (window.outerWidth - options.width) / 2;\r\n const top = window.screenTop + (window.outerHeight - options.height) / 2;\r\n options.left = left;\r\n options.top = top;\r\n return Object.entries(options)\r\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\r\n .join(',');\r\n }\r\n canAccessSessionStorage() {\r\n return typeof navigator !== 'undefined' && navigator.cookieEnabled && typeof Storage !== 'undefined';\r\n }\r\n}\r\nPopUpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PopUpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nPopUpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PopUpService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PopUpService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }] });\n\nclass CheckAuthService {\r\n constructor(checkSessionService, currentUrlService, silentRenewService, userService, loggerService, configurationProvider, authStateService, callbackService, refreshSessionService, periodicallyTokenCheckService, popupService, autoLoginService, storagePersistenceService) {\r\n this.checkSessionService = checkSessionService;\r\n this.currentUrlService = currentUrlService;\r\n this.silentRenewService = silentRenewService;\r\n this.userService = userService;\r\n this.loggerService = loggerService;\r\n this.configurationProvider = configurationProvider;\r\n this.authStateService = authStateService;\r\n this.callbackService = callbackService;\r\n this.refreshSessionService = refreshSessionService;\r\n this.periodicallyTokenCheckService = periodicallyTokenCheckService;\r\n this.popupService = popupService;\r\n this.autoLoginService = autoLoginService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n }\r\n checkAuth(passedConfigId, url) {\r\n if (this.currentUrlService.currentUrlHasStateParam()) {\r\n const stateParamFromUrl = this.currentUrlService.getStateParamFromCurrentUrl();\r\n const config = this.getConfigurationWithUrlState(stateParamFromUrl);\r\n if (!config) {\r\n return throwError(`could not find matching config for state ${stateParamFromUrl}`);\r\n }\r\n return this.checkAuthWithConfig(config, url);\r\n }\r\n if (!!passedConfigId) {\r\n const config = this.configurationProvider.getOpenIDConfiguration(passedConfigId);\r\n return this.checkAuthWithConfig(config, url);\r\n }\r\n const onlyExistingConfig = this.configurationProvider.getOpenIDConfiguration();\r\n return this.checkAuthWithConfig(onlyExistingConfig, url);\r\n }\r\n checkAuthMultiple(passedConfigId, url) {\r\n if (this.currentUrlService.currentUrlHasStateParam()) {\r\n const stateParamFromUrl = this.currentUrlService.getStateParamFromCurrentUrl();\r\n const config = this.getConfigurationWithUrlState(stateParamFromUrl);\r\n if (!config) {\r\n return throwError(`could not find matching config for state ${stateParamFromUrl}`);\r\n }\r\n return this.composeMultipleLoginResults(config, url);\r\n }\r\n if (!!passedConfigId) {\r\n const config = this.configurationProvider.getOpenIDConfiguration(passedConfigId);\r\n if (!config) {\r\n return throwError(`could not find matching config for id ${passedConfigId}`);\r\n }\r\n return this.composeMultipleLoginResults(config, url);\r\n }\r\n const allConfigs = this.configurationProvider.getAllConfigurations();\r\n const allChecks$ = allConfigs.map((x) => this.checkAuthWithConfig(x, url));\r\n return forkJoin(allChecks$);\r\n }\r\n checkAuthIncludingServer(configId) {\r\n const config = this.configurationProvider.getOpenIDConfiguration(configId);\r\n return this.checkAuthWithConfig(config).pipe(switchMap((loginResponse) => {\r\n const { isAuthenticated } = loginResponse;\r\n if (isAuthenticated) {\r\n return of(loginResponse);\r\n }\r\n return this.refreshSessionService.forceRefreshSession(configId).pipe(tap((loginResponseAfterRefreshSession) => {\r\n if (loginResponseAfterRefreshSession === null || loginResponseAfterRefreshSession === void 0 ? void 0 : loginResponseAfterRefreshSession.isAuthenticated) {\r\n this.startCheckSessionAndValidation(configId);\r\n }\r\n }));\r\n }));\r\n }\r\n checkAuthWithConfig(config, url) {\r\n const { configId, authority } = config;\r\n if (!this.configurationProvider.hasAsLeastOneConfig()) {\r\n const errorMessage = 'Please provide at least one configuration before setting up the module';\r\n this.loggerService.logError(configId, errorMessage);\r\n return of({ isAuthenticated: false, errorMessage, userData: null, idToken: null, accessToken: null, configId });\r\n }\r\n const currentUrl = url || this.currentUrlService.getCurrentUrl();\r\n this.loggerService.logDebug(configId, `Working with config '${configId}' using ${authority}`);\r\n if (this.popupService.isCurrentlyInPopup()) {\r\n this.popupService.sendMessageToMainWindow(currentUrl);\r\n return of(null);\r\n }\r\n const isCallback = this.callbackService.isCallback(currentUrl);\r\n this.loggerService.logDebug(configId, 'currentUrl to check auth with: ', currentUrl);\r\n const callback$ = isCallback ? this.callbackService.handleCallbackAndFireEvents(currentUrl, configId) : of(null);\r\n return callback$.pipe(map(() => {\r\n const isAuthenticated = this.authStateService.areAuthStorageTokensValid(configId);\r\n if (isAuthenticated) {\r\n this.startCheckSessionAndValidation(configId);\r\n if (!isCallback) {\r\n this.authStateService.setAuthenticatedAndFireEvent();\r\n this.userService.publishUserDataIfExists(configId);\r\n }\r\n }\r\n this.loggerService.logDebug(configId, 'checkAuth completed - firing events now. isAuthenticated: ' + isAuthenticated);\r\n return {\r\n isAuthenticated,\r\n userData: this.userService.getUserDataFromStore(configId),\r\n accessToken: this.authStateService.getAccessToken(configId),\r\n idToken: this.authStateService.getIdToken(configId),\r\n configId,\r\n };\r\n }), tap(({ isAuthenticated }) => {\r\n if (isAuthenticated) {\r\n this.autoLoginService.checkSavedRedirectRouteAndNavigate(configId);\r\n }\r\n }), catchError((errorMessage) => {\r\n this.loggerService.logError(configId, errorMessage);\r\n return of({ isAuthenticated: false, errorMessage, userData: null, idToken: null, accessToken: null, configId });\r\n }));\r\n }\r\n startCheckSessionAndValidation(configId) {\r\n if (this.checkSessionService.isCheckSessionConfigured(configId)) {\r\n this.checkSessionService.start(configId);\r\n }\r\n this.periodicallyTokenCheckService.startTokenValidationPeriodically();\r\n if (this.silentRenewService.isSilentRenewConfigured(configId)) {\r\n this.silentRenewService.getOrCreateIframe(configId);\r\n }\r\n }\r\n getConfigurationWithUrlState(stateFromUrl) {\r\n const allConfigs = this.configurationProvider.getAllConfigurations();\r\n for (const config of allConfigs) {\r\n const storedState = this.storagePersistenceService.read('authStateControl', config.configId);\r\n if (storedState === stateFromUrl) {\r\n return config;\r\n }\r\n }\r\n return null;\r\n }\r\n composeMultipleLoginResults(activeConfig, url) {\r\n const allOtherConfigs = this.configurationProvider.getAllConfigurations().filter((x) => x.configId !== activeConfig.configId);\r\n const currentConfigResult = this.checkAuthWithConfig(activeConfig, url);\r\n const allOtherConfigResults = allOtherConfigs.map((config) => {\r\n const { redirectUrl } = config;\r\n return this.checkAuthWithConfig(config, redirectUrl);\r\n });\r\n return forkJoin([currentConfigResult, ...allOtherConfigResults]);\r\n }\r\n}\r\nCheckAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CheckAuthService, deps: [{ token: CheckSessionService }, { token: CurrentUrlService }, { token: SilentRenewService }, { token: UserService }, { token: LoggerService }, { token: ConfigurationProvider }, { token: AuthStateService }, { token: CallbackService }, { token: RefreshSessionService }, { token: PeriodicallyTokenCheckService }, { token: PopUpService }, { token: AutoLoginService }, { token: StoragePersistenceService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nCheckAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CheckAuthService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: CheckAuthService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: CheckSessionService }, { type: CurrentUrlService }, { type: SilentRenewService }, { type: UserService }, { type: LoggerService }, { type: ConfigurationProvider }, { type: AuthStateService }, { type: CallbackService }, { type: RefreshSessionService }, { type: PeriodicallyTokenCheckService }, { type: PopUpService }, { type: AutoLoginService }, { type: StoragePersistenceService }]; } });\n\nconst DEFAULT_CONFIG = {\r\n authority: 'https://please_set',\r\n authWellknownEndpointUrl: '',\r\n authWellknownEndpoints: null,\r\n redirectUrl: 'https://please_set',\r\n clientId: 'please_set',\r\n responseType: 'code',\r\n scope: 'openid email profile',\r\n hdParam: '',\r\n postLogoutRedirectUri: 'https://please_set',\r\n startCheckSession: false,\r\n silentRenew: false,\r\n silentRenewUrl: 'https://please_set',\r\n silentRenewTimeoutInSeconds: 20,\r\n renewTimeBeforeTokenExpiresInSeconds: 0,\r\n useRefreshToken: false,\r\n usePushedAuthorisationRequests: false,\r\n ignoreNonceAfterRefresh: false,\r\n postLoginRoute: '/',\r\n forbiddenRoute: '/forbidden',\r\n unauthorizedRoute: '/unauthorized',\r\n autoUserInfo: true,\r\n autoCleanStateAfterAuthentication: true,\r\n triggerAuthorizationResultEvent: false,\r\n logLevel: LogLevel.Warn,\r\n issValidationOff: false,\r\n historyCleanupOff: false,\r\n maxIdTokenIatOffsetAllowedInSeconds: 120,\r\n disableIatOffsetValidation: false,\r\n storage: null,\r\n customParamsAuthRequest: {},\r\n customParamsRefreshTokenRequest: {},\r\n customParamsEndSessionRequest: {},\r\n customParamsCodeRequest: {},\r\n eagerLoadAuthWellKnownEndpoints: true,\r\n disableRefreshIdTokenAuthTimeValidation: false,\r\n enableIdTokenExpiredValidationInRenew: true,\r\n tokenRefreshInSeconds: 4,\r\n refreshTokenRetryInSeconds: 3,\r\n ngswBypass: false,\r\n};\n\nconst POSITIVE_VALIDATION_RESULT = {\r\n result: true,\r\n messages: [],\r\n level: null,\r\n};\n\nconst ensureAuthority = (passedConfig) => {\r\n if (!passedConfig.authority) {\r\n return {\r\n result: false,\r\n messages: ['The authority URL MUST be provided in the configuration! '],\r\n level: 'error',\r\n };\r\n }\r\n return POSITIVE_VALIDATION_RESULT;\r\n};\n\nconst ensureClientId = (passedConfig) => {\r\n if (!passedConfig.clientId) {\r\n return {\r\n result: false,\r\n messages: ['The clientId is required and missing from your config!'],\r\n level: 'error',\r\n };\r\n }\r\n return POSITIVE_VALIDATION_RESULT;\r\n};\n\nconst createIdentifierToCheck = (passedConfig) => {\r\n if (!passedConfig) {\r\n return null;\r\n }\r\n const { authority, clientId, scope } = passedConfig;\r\n return `${authority}${clientId}${scope}`;\r\n};\r\nconst arrayHasDuplicates = (array) => new Set(array).size !== array.length;\r\nconst ensureNoDuplicatedConfigsRule = (passedConfigs) => {\r\n const allIdentifiers = passedConfigs.map((x) => createIdentifierToCheck(x));\r\n const someAreNull = allIdentifiers.some((x) => x === null);\r\n if (someAreNull) {\r\n return {\r\n result: false,\r\n messages: [`Please make sure you add an object with a 'config' property: ....({ config }) instead of ...(config)`],\r\n level: 'error',\r\n };\r\n }\r\n const hasDuplicates = arrayHasDuplicates(allIdentifiers);\r\n if (hasDuplicates) {\r\n return {\r\n result: false,\r\n messages: ['You added multiple configs with the same authority, clientId and scope'],\r\n level: 'warning',\r\n };\r\n }\r\n return POSITIVE_VALIDATION_RESULT;\r\n};\n\nconst ensureRedirectRule = (passedConfig) => {\r\n if (!passedConfig.redirectUrl) {\r\n return {\r\n result: false,\r\n messages: ['The redirectURL is required and missing from your config'],\r\n level: 'error',\r\n };\r\n }\r\n return POSITIVE_VALIDATION_RESULT;\r\n};\n\nconst ensureSilentRenewUrlWhenNoRefreshTokenUsed = (passedConfig) => {\r\n const usesSilentRenew = passedConfig.silentRenew;\r\n const usesRefreshToken = passedConfig.useRefreshToken;\r\n const hasSilentRenewUrl = passedConfig.silentRenewUrl;\r\n if (usesSilentRenew && !usesRefreshToken && !hasSilentRenewUrl) {\r\n return {\r\n result: false,\r\n messages: ['Please provide a silent renew URL if using renew and not refresh tokens'],\r\n level: 'error',\r\n };\r\n }\r\n return POSITIVE_VALIDATION_RESULT;\r\n};\n\nconst useOfflineScopeWithSilentRenew = (passedConfig) => {\r\n const hasRefreshToken = passedConfig.useRefreshToken;\r\n const hasSilentRenew = passedConfig.silentRenew;\r\n const scope = passedConfig.scope || '';\r\n const hasOfflineScope = scope.split(' ').includes('offline_access');\r\n if (hasRefreshToken && hasSilentRenew && !hasOfflineScope) {\r\n return {\r\n result: false,\r\n messages: ['When using silent renew and refresh tokens please set the `offline_access` scope'],\r\n level: 'warning',\r\n };\r\n }\r\n return POSITIVE_VALIDATION_RESULT;\r\n};\n\nconst allRules = [\r\n ensureAuthority,\r\n useOfflineScopeWithSilentRenew,\r\n ensureRedirectRule,\r\n ensureClientId,\r\n ensureSilentRenewUrlWhenNoRefreshTokenUsed,\r\n];\r\nconst allMultipleConfigRules = [ensureNoDuplicatedConfigsRule];\n\nclass ConfigValidationService {\r\n constructor(loggerService) {\r\n this.loggerService = loggerService;\r\n }\r\n validateConfigs(passedConfigs) {\r\n return this.validateConfigsInternal(passedConfigs, allMultipleConfigRules);\r\n }\r\n validateConfig(passedConfig) {\r\n return this.validateConfigInternal(passedConfig, allRules);\r\n }\r\n validateConfigsInternal(passedConfigs, allRulesToUse) {\r\n const allValidationResults = allRulesToUse.map((rule) => rule(passedConfigs));\r\n let overallErrorCount = 0;\r\n passedConfigs.forEach((passedConfig) => {\r\n const errorCount = this.processValidationResultsAndGetErrorCount(allValidationResults, passedConfig === null || passedConfig === void 0 ? void 0 : passedConfig.configId);\r\n overallErrorCount += errorCount;\r\n });\r\n return overallErrorCount === 0;\r\n }\r\n validateConfigInternal(passedConfig, allRulesToUse) {\r\n const allValidationResults = allRulesToUse.map((rule) => rule(passedConfig));\r\n const errorCount = this.processValidationResultsAndGetErrorCount(allValidationResults, passedConfig.configId);\r\n return errorCount === 0;\r\n }\r\n processValidationResultsAndGetErrorCount(allValidationResults, configId) {\r\n const allMessages = allValidationResults.filter((x) => x.messages.length > 0);\r\n const allErrorMessages = this.getAllMessagesOfType('error', allMessages);\r\n const allWarnings = this.getAllMessagesOfType('warning', allMessages);\r\n allErrorMessages.forEach((message) => this.loggerService.logError(configId, message));\r\n allWarnings.forEach((message) => this.loggerService.logWarning(configId, message));\r\n return allErrorMessages.length;\r\n }\r\n getAllMessagesOfType(type, results) {\r\n const allMessages = results.filter((x) => x.level === type).map((result) => result.messages);\r\n return allMessages.reduce((acc, val) => acc.concat(val), []);\r\n }\r\n}\r\nConfigValidationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ConfigValidationService, deps: [{ token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nConfigValidationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ConfigValidationService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ConfigValidationService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }]; } });\n\nclass PlatformProvider {\r\n constructor(platformId) {\r\n this.platformId = platformId;\r\n }\r\n get isBrowser() {\r\n return isPlatformBrowser(this.platformId);\r\n }\r\n}\r\nPlatformProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PlatformProvider, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\r\nPlatformProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PlatformProvider });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PlatformProvider, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\r\n type: Inject,\r\n args: [PLATFORM_ID]\r\n }] }]; } });\n\nclass DefaultSessionStorageService {\r\n read(key) {\r\n return sessionStorage.getItem(key);\r\n }\r\n write(key, value) {\r\n sessionStorage.setItem(key, value);\r\n }\r\n remove(key) {\r\n sessionStorage.removeItem(key);\r\n }\r\n clear() {\r\n sessionStorage.clear();\r\n }\r\n}\r\nDefaultSessionStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: DefaultSessionStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nDefaultSessionStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: DefaultSessionStorageService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: DefaultSessionStorageService, decorators: [{\r\n type: Injectable\r\n }] });\n\nclass OidcConfigService {\r\n constructor(loggerService, publicEventsService, configurationProvider, authWellKnownService, storagePersistenceService, configValidationService, platformProvider, defaultSessionStorageService) {\r\n this.loggerService = loggerService;\r\n this.publicEventsService = publicEventsService;\r\n this.configurationProvider = configurationProvider;\r\n this.authWellKnownService = authWellKnownService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.configValidationService = configValidationService;\r\n this.platformProvider = platformProvider;\r\n this.defaultSessionStorageService = defaultSessionStorageService;\r\n }\r\n withConfigs(passedConfigs) {\r\n if (!this.configValidationService.validateConfigs(passedConfigs)) {\r\n return Promise.resolve(null);\r\n }\r\n this.createUniqueIds(passedConfigs);\r\n const allHandleConfigPromises = passedConfigs.map((x) => this.handleConfig(x));\r\n return Promise.all(allHandleConfigPromises);\r\n }\r\n createUniqueIds(passedConfigs) {\r\n passedConfigs.forEach((config, index) => {\r\n if (!config.configId) {\r\n config.configId = `${index}-${config.clientId}`;\r\n }\r\n });\r\n }\r\n handleConfig(passedConfig) {\r\n return new Promise((resolve, reject) => {\r\n if (!this.configValidationService.validateConfig(passedConfig)) {\r\n this.loggerService.logError(passedConfig.configId, 'Validation of config rejected with errors. Config is NOT set.');\r\n resolve(null);\r\n return;\r\n }\r\n if (!passedConfig.authWellknownEndpointUrl) {\r\n passedConfig.authWellknownEndpointUrl = passedConfig.authority;\r\n }\r\n const usedConfig = this.prepareConfig(passedConfig);\r\n this.configurationProvider.setConfig(usedConfig);\r\n const alreadyExistingAuthWellKnownEndpoints = this.storagePersistenceService.read('authWellKnownEndPoints', usedConfig.configId);\r\n if (!!alreadyExistingAuthWellKnownEndpoints) {\r\n usedConfig.authWellknownEndpoints = alreadyExistingAuthWellKnownEndpoints;\r\n this.publicEventsService.fireEvent(EventTypes.ConfigLoaded, usedConfig);\r\n resolve(usedConfig);\r\n return;\r\n }\r\n const passedAuthWellKnownEndpoints = usedConfig.authWellknownEndpoints;\r\n if (!!passedAuthWellKnownEndpoints) {\r\n this.authWellKnownService.storeWellKnownEndpoints(usedConfig.configId, passedAuthWellKnownEndpoints);\r\n usedConfig.authWellknownEndpoints = passedAuthWellKnownEndpoints;\r\n this.publicEventsService.fireEvent(EventTypes.ConfigLoaded, usedConfig);\r\n resolve(usedConfig);\r\n return;\r\n }\r\n if (usedConfig.eagerLoadAuthWellKnownEndpoints) {\r\n this.authWellKnownService\r\n .getAuthWellKnownEndPoints(usedConfig.authWellknownEndpointUrl, usedConfig.configId)\r\n .pipe(catchError((error) => {\r\n this.loggerService.logError(usedConfig.configId, 'Getting auth well known endpoints failed on start', error);\r\n return throwError(error);\r\n }), tap((wellknownEndPoints) => {\r\n usedConfig.authWellknownEndpoints = wellknownEndPoints;\r\n this.publicEventsService.fireEvent(EventTypes.ConfigLoaded, usedConfig);\r\n }))\r\n .subscribe(() => resolve(usedConfig), () => reject());\r\n }\r\n else {\r\n this.publicEventsService.fireEvent(EventTypes.ConfigLoaded, usedConfig);\r\n resolve(usedConfig);\r\n }\r\n });\r\n }\r\n prepareConfig(configuration) {\r\n const openIdConfigurationInternal = Object.assign(Object.assign({}, DEFAULT_CONFIG), configuration);\r\n this.setSpecialCases(openIdConfigurationInternal);\r\n this.setStorage(openIdConfigurationInternal);\r\n return openIdConfigurationInternal;\r\n }\r\n setSpecialCases(currentConfig) {\r\n if (!this.platformProvider.isBrowser) {\r\n currentConfig.startCheckSession = false;\r\n currentConfig.silentRenew = false;\r\n currentConfig.useRefreshToken = false;\r\n currentConfig.usePushedAuthorisationRequests = false;\r\n }\r\n }\r\n setStorage(currentConfig) {\r\n if (currentConfig.storage) {\r\n return;\r\n }\r\n if (this.hasBrowserStorage()) {\r\n currentConfig.storage = this.defaultSessionStorageService;\r\n }\r\n else {\r\n currentConfig.storage = null;\r\n }\r\n }\r\n hasBrowserStorage() {\r\n return typeof navigator !== 'undefined' && navigator.cookieEnabled && typeof Storage !== 'undefined';\r\n }\r\n}\r\nOidcConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: OidcConfigService, deps: [{ token: LoggerService }, { token: PublicEventsService }, { token: ConfigurationProvider }, { token: AuthWellKnownService }, { token: StoragePersistenceService }, { token: ConfigValidationService }, { token: PlatformProvider }, { token: DefaultSessionStorageService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nOidcConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: OidcConfigService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: OidcConfigService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }, { type: PublicEventsService }, { type: ConfigurationProvider }, { type: AuthWellKnownService }, { type: StoragePersistenceService }, { type: ConfigValidationService }, { type: PlatformProvider }, { type: DefaultSessionStorageService }]; } });\n\nclass OpenIdConfigLoader {\r\n}\r\nclass StsConfigLoader {\r\n}\r\nclass StsConfigStaticLoader {\r\n constructor(passedConfigs) {\r\n this.passedConfigs = passedConfigs;\r\n }\r\n loadConfigs() {\r\n if (Array.isArray(this.passedConfigs)) {\r\n const allInstantStaticPromises = this.passedConfigs.map((x) => new Promise((resolve, _) => resolve(x)));\r\n return allInstantStaticPromises;\r\n }\r\n const singleStaticPromise = new Promise((resolve, _) => resolve(this.passedConfigs));\r\n return [singleStaticPromise];\r\n }\r\n}\r\nclass StsConfigHttpLoader {\r\n constructor(configs$) {\r\n this.configs$ = configs$;\r\n }\r\n loadConfigs() {\r\n return Array.isArray(this.configs$) ? this.configs$ : [this.configs$];\r\n }\r\n}\n\nclass ClosestMatchingRouteService {\r\n constructor(configProvider) {\r\n this.configProvider = configProvider;\r\n }\r\n getConfigIdForClosestMatchingRoute(route) {\r\n const allConfiguredRoutes = this.getAllConfiguredRoutes();\r\n for (const routesWithConfig of allConfiguredRoutes) {\r\n const allRoutesForConfig = routesWithConfig.routes;\r\n for (const configuredRoute of allRoutesForConfig) {\r\n if (route.startsWith(configuredRoute)) {\r\n return {\r\n matchingRoute: configuredRoute,\r\n matchingConfigId: routesWithConfig.configId,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n matchingRoute: null,\r\n matchingConfigId: null,\r\n };\r\n }\r\n getAllConfiguredRoutes() {\r\n const allConfigurations = this.configProvider.getAllConfigurations();\r\n return allConfigurations.map((x) => ({ routes: x.secureRoutes, configId: x.configId }));\r\n }\r\n}\r\nClosestMatchingRouteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ClosestMatchingRouteService, deps: [{ token: ConfigurationProvider }], target: i0.ɵɵFactoryTarget.Injectable });\r\nClosestMatchingRouteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ClosestMatchingRouteService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ClosestMatchingRouteService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: ConfigurationProvider }]; } });\n\nclass ResponseTypeValidationService {\r\n constructor(loggerService, flowHelper) {\r\n this.loggerService = loggerService;\r\n this.flowHelper = flowHelper;\r\n }\r\n hasConfigValidResponseType(configId) {\r\n if (this.flowHelper.isCurrentFlowAnyImplicitFlow(configId)) {\r\n return true;\r\n }\r\n if (this.flowHelper.isCurrentFlowCodeFlow(configId)) {\r\n return true;\r\n }\r\n this.loggerService.logWarning(configId, 'module configured incorrectly, invalid response_type. Check the responseType in the config');\r\n return false;\r\n }\r\n}\r\nResponseTypeValidationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ResponseTypeValidationService, deps: [{ token: LoggerService }, { token: FlowHelper }], target: i0.ɵɵFactoryTarget.Injectable });\r\nResponseTypeValidationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ResponseTypeValidationService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ResponseTypeValidationService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }, { type: FlowHelper }]; } });\n\nclass RedirectService {\r\n constructor(doc) {\r\n this.doc = doc;\r\n }\r\n redirectTo(url) {\r\n this.doc.location.href = url;\r\n }\r\n}\r\nRedirectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RedirectService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\r\nRedirectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RedirectService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: RedirectService, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\r\n type: Inject,\r\n args: [DOCUMENT]\r\n }] }]; } });\n\nclass ParService {\r\n constructor(loggerService, urlService, dataService, storagePersistenceService) {\r\n this.loggerService = loggerService;\r\n this.urlService = urlService;\r\n this.dataService = dataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n }\r\n postParRequest(configId, customParams) {\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\r\n const authWellknownEndpoints = this.storagePersistenceService.read('authWellKnownEndPoints', configId);\r\n if (!authWellknownEndpoints) {\r\n return throwError('Could not read PAR endpoint because authWellKnownEndPoints are not given');\r\n }\r\n const parEndpoint = authWellknownEndpoints.parEndpoint;\r\n if (!parEndpoint) {\r\n return throwError('Could not read PAR endpoint from authWellKnownEndpoints');\r\n }\r\n const data = this.urlService.createBodyForParCodeFlowRequest(configId, customParams);\r\n return this.dataService.post(parEndpoint, data, configId, headers).pipe(retry(2), map((response) => {\r\n this.loggerService.logDebug(configId, 'par response: ', response);\r\n return {\r\n expiresIn: response.expires_in,\r\n requestUri: response.request_uri,\r\n };\r\n }), catchError((error) => {\r\n const errorMessage = `There was an error on ParService postParRequest`;\r\n this.loggerService.logError(configId, errorMessage, error);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n}\r\nParService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ParService, deps: [{ token: LoggerService }, { token: UrlService }, { token: DataService }, { token: StoragePersistenceService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nParService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ParService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ParService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }, { type: UrlService }, { type: DataService }, { type: StoragePersistenceService }]; } });\n\nclass ParLoginService {\r\n constructor(loggerService, responseTypeValidationService, urlService, redirectService, configurationProvider, authWellKnownService, popupService, checkAuthService, parService) {\r\n this.loggerService = loggerService;\r\n this.responseTypeValidationService = responseTypeValidationService;\r\n this.urlService = urlService;\r\n this.redirectService = redirectService;\r\n this.configurationProvider = configurationProvider;\r\n this.authWellKnownService = authWellKnownService;\r\n this.popupService = popupService;\r\n this.checkAuthService = checkAuthService;\r\n this.parService = parService;\r\n }\r\n loginPar(configId, authOptions) {\r\n if (!this.responseTypeValidationService.hasConfigValidResponseType(configId)) {\r\n this.loggerService.logError(configId, 'Invalid response type!');\r\n return;\r\n }\r\n const { authWellknownEndpointUrl } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!authWellknownEndpointUrl) {\r\n this.loggerService.logError(configId, 'no authWellknownEndpoint given!');\r\n return;\r\n }\r\n this.loggerService.logDebug(configId, 'BEGIN Authorize OIDC Flow, no auth data');\r\n const { urlHandler, customParams } = authOptions || {};\r\n this.authWellKnownService\r\n .getAuthWellKnownEndPoints(authWellknownEndpointUrl, configId)\r\n .pipe(switchMap(() => this.parService.postParRequest(configId, customParams)))\r\n .subscribe((response) => {\r\n this.loggerService.logDebug(configId, 'par response: ', response);\r\n const url = this.urlService.getAuthorizeParUrl(response.requestUri, configId);\r\n this.loggerService.logDebug(configId, 'par request url: ', url);\r\n if (!url) {\r\n this.loggerService.logError(configId, `Could not create URL with param ${response.requestUri}: '${url}'`);\r\n return;\r\n }\r\n if (urlHandler) {\r\n urlHandler(url);\r\n }\r\n else {\r\n this.redirectService.redirectTo(url);\r\n }\r\n });\r\n }\r\n loginWithPopUpPar(configId, authOptions, popupOptions) {\r\n if (!this.responseTypeValidationService.hasConfigValidResponseType(configId)) {\r\n const errorMessage = 'Invalid response type!';\r\n this.loggerService.logError(configId, errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n const { authWellknownEndpointUrl } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!authWellknownEndpointUrl) {\r\n const errorMessage = 'no authWellknownEndpoint given!';\r\n this.loggerService.logError(configId, errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n this.loggerService.logDebug(configId, 'BEGIN Authorize OIDC Flow with popup, no auth data');\r\n const { customParams } = authOptions || {};\r\n return this.authWellKnownService.getAuthWellKnownEndPoints(authWellknownEndpointUrl, configId).pipe(switchMap(() => this.parService.postParRequest(configId, customParams)), switchMap((response) => {\r\n this.loggerService.logDebug(configId, 'par response: ', response);\r\n const url = this.urlService.getAuthorizeParUrl(response.requestUri, configId);\r\n this.loggerService.logDebug(configId, 'par request url: ', url);\r\n if (!url) {\r\n const errorMessage = `Could not create URL with param ${response.requestUri}: 'url'`;\r\n this.loggerService.logError(configId, errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n this.popupService.openPopUp(url, popupOptions);\r\n return this.popupService.result$.pipe(take(1), switchMap((result) => {\r\n const { userClosed, receivedUrl } = result;\r\n if (userClosed) {\r\n return of({\r\n isAuthenticated: false,\r\n errorMessage: 'User closed popup',\r\n userData: null,\r\n idToken: null,\r\n accessToken: null,\r\n configId,\r\n });\r\n }\r\n return this.checkAuthService.checkAuth(configId, receivedUrl);\r\n }));\r\n }));\r\n }\r\n}\r\nParLoginService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ParLoginService, deps: [{ token: LoggerService }, { token: ResponseTypeValidationService }, { token: UrlService }, { token: RedirectService }, { token: ConfigurationProvider }, { token: AuthWellKnownService }, { token: PopUpService }, { token: CheckAuthService }, { token: ParService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nParLoginService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ParLoginService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: ParLoginService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }, { type: ResponseTypeValidationService }, { type: UrlService }, { type: RedirectService }, { type: ConfigurationProvider }, { type: AuthWellKnownService }, { type: PopUpService }, { type: CheckAuthService }, { type: ParService }]; } });\n\nclass PopUpLoginService {\r\n constructor(loggerService, responseTypeValidationService, urlService, configurationProvider, authWellKnownService, popupService, checkAuthService) {\r\n this.loggerService = loggerService;\r\n this.responseTypeValidationService = responseTypeValidationService;\r\n this.urlService = urlService;\r\n this.configurationProvider = configurationProvider;\r\n this.authWellKnownService = authWellKnownService;\r\n this.popupService = popupService;\r\n this.checkAuthService = checkAuthService;\r\n }\r\n loginWithPopUpStandard(configId, authOptions, popupOptions) {\r\n if (!this.responseTypeValidationService.hasConfigValidResponseType(configId)) {\r\n const errorMessage = 'Invalid response type!';\r\n this.loggerService.logError(configId, errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n const { authWellknownEndpointUrl } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!authWellknownEndpointUrl) {\r\n const errorMessage = 'no authWellknownEndpoint given!';\r\n this.loggerService.logError(configId, errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n this.loggerService.logDebug(configId, 'BEGIN Authorize OIDC Flow with popup, no auth data');\r\n return this.authWellKnownService.getAuthWellKnownEndPoints(authWellknownEndpointUrl, configId).pipe(switchMap(() => {\r\n const { customParams } = authOptions || {};\r\n const authUrl = this.urlService.getAuthorizeUrl(configId, customParams);\r\n this.popupService.openPopUp(authUrl, popupOptions);\r\n return this.popupService.result$.pipe(take(1), switchMap((result) => {\r\n const { userClosed, receivedUrl } = result;\r\n if (userClosed) {\r\n return of({\r\n isAuthenticated: false,\r\n errorMessage: 'User closed popup',\r\n userData: null,\r\n idToken: null,\r\n accessToken: null,\r\n configId,\r\n });\r\n }\r\n return this.checkAuthService.checkAuth(configId, receivedUrl);\r\n }));\r\n }));\r\n }\r\n}\r\nPopUpLoginService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PopUpLoginService, deps: [{ token: LoggerService }, { token: ResponseTypeValidationService }, { token: UrlService }, { token: ConfigurationProvider }, { token: AuthWellKnownService }, { token: PopUpService }, { token: CheckAuthService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nPopUpLoginService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PopUpLoginService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: PopUpLoginService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }, { type: ResponseTypeValidationService }, { type: UrlService }, { type: ConfigurationProvider }, { type: AuthWellKnownService }, { type: PopUpService }, { type: CheckAuthService }]; } });\n\nclass StandardLoginService {\r\n constructor(loggerService, responseTypeValidationService, urlService, redirectService, configurationProvider, authWellKnownService) {\r\n this.loggerService = loggerService;\r\n this.responseTypeValidationService = responseTypeValidationService;\r\n this.urlService = urlService;\r\n this.redirectService = redirectService;\r\n this.configurationProvider = configurationProvider;\r\n this.authWellKnownService = authWellKnownService;\r\n }\r\n loginStandard(configId, authOptions) {\r\n if (!this.responseTypeValidationService.hasConfigValidResponseType(configId)) {\r\n this.loggerService.logError(configId, 'Invalid response type!');\r\n return;\r\n }\r\n const { authWellknownEndpointUrl } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (!authWellknownEndpointUrl) {\r\n this.loggerService.logError(configId, 'no authWellknownEndpoint given!');\r\n return;\r\n }\r\n this.loggerService.logDebug(configId, 'BEGIN Authorize OIDC Flow, no auth data');\r\n this.authWellKnownService.getAuthWellKnownEndPoints(authWellknownEndpointUrl, configId).subscribe(() => {\r\n const { urlHandler, customParams } = authOptions || {};\r\n const url = this.urlService.getAuthorizeUrl(configId, customParams);\r\n if (!url) {\r\n this.loggerService.logError(configId, 'Could not create URL', url);\r\n return;\r\n }\r\n if (urlHandler) {\r\n urlHandler(url);\r\n }\r\n else {\r\n this.redirectService.redirectTo(url);\r\n }\r\n });\r\n }\r\n}\r\nStandardLoginService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StandardLoginService, deps: [{ token: LoggerService }, { token: ResponseTypeValidationService }, { token: UrlService }, { token: RedirectService }, { token: ConfigurationProvider }, { token: AuthWellKnownService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nStandardLoginService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StandardLoginService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: StandardLoginService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: LoggerService }, { type: ResponseTypeValidationService }, { type: UrlService }, { type: RedirectService }, { type: ConfigurationProvider }, { type: AuthWellKnownService }]; } });\n\nclass LoginService {\r\n constructor(configurationProvider, parLoginService, popUpLoginService, standardLoginService, storagePersistenceService) {\r\n this.configurationProvider = configurationProvider;\r\n this.parLoginService = parLoginService;\r\n this.popUpLoginService = popUpLoginService;\r\n this.standardLoginService = standardLoginService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n }\r\n login(configId, authOptions) {\r\n if (authOptions === null || authOptions === void 0 ? void 0 : authOptions.customParams) {\r\n this.storagePersistenceService.write('storageCustomParamsAuthRequest', authOptions.customParams, configId);\r\n }\r\n const { usePushedAuthorisationRequests } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (usePushedAuthorisationRequests) {\r\n return this.parLoginService.loginPar(configId, authOptions);\r\n }\r\n else {\r\n return this.standardLoginService.loginStandard(configId, authOptions);\r\n }\r\n }\r\n loginWithPopUp(configId, authOptions, popupOptions) {\r\n if (authOptions === null || authOptions === void 0 ? void 0 : authOptions.customParams) {\r\n this.storagePersistenceService.write('storageCustomParamsAuthRequest', authOptions.customParams, configId);\r\n }\r\n const { usePushedAuthorisationRequests } = this.configurationProvider.getOpenIDConfiguration(configId);\r\n if (usePushedAuthorisationRequests) {\r\n return this.parLoginService.loginWithPopUpPar(configId, authOptions, popupOptions);\r\n }\r\n else {\r\n return this.popUpLoginService.loginWithPopUpStandard(configId, authOptions, popupOptions);\r\n }\r\n }\r\n}\r\nLoginService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: LoginService, deps: [{ token: ConfigurationProvider }, { token: ParLoginService }, { token: PopUpLoginService }, { token: StandardLoginService }, { token: StoragePersistenceService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nLoginService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: LoginService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: LoginService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: ConfigurationProvider }, { type: ParLoginService }, { type: PopUpLoginService }, { type: StandardLoginService }, { type: StoragePersistenceService }]; } });\n\nclass LogoffRevocationService {\r\n constructor(dataService, storagePersistenceService, loggerService, urlService, checkSessionService, resetAuthDataService, redirectService, configurationProvider) {\r\n this.dataService = dataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.loggerService = loggerService;\r\n this.urlService = urlService;\r\n this.checkSessionService = checkSessionService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.redirectService = redirectService;\r\n this.configurationProvider = configurationProvider;\r\n }\r\n // Logs out on the server and the local client.\r\n // If the server state has changed, check session, then only a local logout.\r\n logoff(configId, authOptions) {\r\n const { urlHandler, customParams } = authOptions || {};\r\n this.loggerService.logDebug(configId, 'logoff, remove auth ');\r\n const endSessionUrl = this.getEndSessionUrl(configId, customParams);\r\n this.resetAuthDataService.resetAuthorizationData(configId);\r\n if (!endSessionUrl) {\r\n this.loggerService.logDebug(configId, 'only local login cleaned up, no end_session_endpoint');\r\n return;\r\n }\r\n if (this.checkSessionService.serverStateChanged(configId)) {\r\n this.loggerService.logDebug(configId, 'only local login cleaned up, server session has changed');\r\n }\r\n else if (urlHandler) {\r\n urlHandler(endSessionUrl);\r\n }\r\n else {\r\n this.redirectService.redirectTo(endSessionUrl);\r\n }\r\n }\r\n logoffLocal(configId) {\r\n this.resetAuthDataService.resetAuthorizationData(configId);\r\n this.checkSessionService.stop();\r\n }\r\n logoffLocalMultiple() {\r\n const allConfigs = this.configurationProvider.getAllConfigurations();\r\n allConfigs.forEach(({ configId }) => this.logoffLocal(configId));\r\n }\r\n // The refresh token and and the access token are revoked on the server. If the refresh token does not exist\r\n // only the access token is revoked. Then the logout run.\r\n logoffAndRevokeTokens(configId, authOptions) {\r\n const { revocationEndpoint } = this.storagePersistenceService.read('authWellKnownEndPoints', configId) || {};\r\n if (!revocationEndpoint) {\r\n this.loggerService.logDebug(configId, 'revocation endpoint not supported');\r\n this.logoff(configId, authOptions);\r\n }\r\n if (this.storagePersistenceService.getRefreshToken(configId)) {\r\n return this.revokeRefreshToken(configId).pipe(switchMap((result) => this.revokeAccessToken(configId, result)), catchError((error) => {\r\n const errorMessage = `revoke token failed`;\r\n this.loggerService.logError(configId, errorMessage, error);\r\n return throwError(errorMessage);\r\n }), tap(() => this.logoff(configId, authOptions)));\r\n }\r\n else {\r\n return this.revokeAccessToken(configId).pipe(catchError((error) => {\r\n const errorMessage = `revoke accessToken failed`;\r\n this.loggerService.logError(configId, errorMessage, error);\r\n return throwError(errorMessage);\r\n }), tap(() => this.logoff(configId, authOptions)));\r\n }\r\n }\r\n // https://tools.ietf.org/html/rfc7009\r\n // revokes an access token on the STS. If no token is provided, then the token from\r\n // the storage is revoked. You can pass any token to revoke. This makes it possible to\r\n // manage your own tokens. The is a public API.\r\n revokeAccessToken(configId, accessToken) {\r\n const accessTok = accessToken || this.storagePersistenceService.getAccessToken(configId);\r\n const body = this.urlService.createRevocationEndpointBodyAccessToken(accessTok, configId);\r\n return this.sendRevokeRequest(configId, body);\r\n }\r\n // https://tools.ietf.org/html/rfc7009\r\n // revokes an refresh token on the STS. This is only required in the code flow with refresh tokens.\r\n // If no token is provided, then the token from the storage is revoked. You can pass any token to revoke.\r\n // This makes it possible to manage your own tokens.\r\n revokeRefreshToken(configId, refreshToken) {\r\n const refreshTok = refreshToken || this.storagePersistenceService.getRefreshToken(configId);\r\n const body = this.urlService.createRevocationEndpointBodyRefreshToken(refreshTok, configId);\r\n return this.sendRevokeRequest(configId, body);\r\n }\r\n getEndSessionUrl(configId, customParams) {\r\n const idToken = this.storagePersistenceService.getIdToken(configId);\r\n const { customParamsEndSessionRequest } = this.configurationProvider.getOpenIDConfiguration();\r\n const mergedParams = Object.assign(Object.assign({}, customParamsEndSessionRequest), customParams);\r\n return this.urlService.createEndSessionUrl(idToken, configId, mergedParams);\r\n }\r\n sendRevokeRequest(configId, body) {\r\n const url = this.urlService.getRevocationEndpointUrl(configId);\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\r\n return this.dataService.post(url, body, configId, headers).pipe(retry(2), switchMap((response) => {\r\n this.loggerService.logDebug(configId, 'revocation endpoint post response: ', response);\r\n return of(response);\r\n }), catchError((error) => {\r\n const errorMessage = `Revocation request failed`;\r\n this.loggerService.logError(configId, errorMessage, error);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n}\r\nLogoffRevocationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: LogoffRevocationService, deps: [{ token: DataService }, { token: StoragePersistenceService }, { token: LoggerService }, { token: UrlService }, { token: CheckSessionService }, { token: ResetAuthDataService }, { token: RedirectService }, { token: ConfigurationProvider }], target: i0.ɵɵFactoryTarget.Injectable });\r\nLogoffRevocationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: LogoffRevocationService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: LogoffRevocationService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: DataService }, { type: StoragePersistenceService }, { type: LoggerService }, { type: UrlService }, { type: CheckSessionService }, { type: ResetAuthDataService }, { type: RedirectService }, { type: ConfigurationProvider }]; } });\n\nclass OidcSecurityService {\r\n constructor(checkSessionService, checkAuthService, userService, tokenHelperService, configurationProvider, authStateService, flowsDataService, callbackService, logoffRevocationService, loginService, refreshSessionService, urlService) {\r\n this.checkSessionService = checkSessionService;\r\n this.checkAuthService = checkAuthService;\r\n this.userService = userService;\r\n this.tokenHelperService = tokenHelperService;\r\n this.configurationProvider = configurationProvider;\r\n this.authStateService = authStateService;\r\n this.flowsDataService = flowsDataService;\r\n this.callbackService = callbackService;\r\n this.logoffRevocationService = logoffRevocationService;\r\n this.loginService = loginService;\r\n this.refreshSessionService = refreshSessionService;\r\n this.urlService = urlService;\r\n }\r\n /**\r\n * Provides information about the user after they have logged in.\r\n *\r\n * @returns Returns an object containing either the user data directly (single config) or\r\n * the user data per config in case you are running with multiple configs\r\n */\r\n get userData$() {\r\n return this.userService.userData$;\r\n }\r\n /**\r\n * Emits each time an authorization event occurs.\r\n *\r\n * @returns Returns an object containing if you are authenticated or not.\r\n * Single Config: true if config is authenticated, false if not.\r\n * Multiple Configs: true is all configs are authenticated, false if only one of them is not\r\n *\r\n * The `allConfigsAuthenticated` property contains the auth information _per config_.\r\n */\r\n get isAuthenticated$() {\r\n return this.authStateService.authenticated$;\r\n }\r\n /**\r\n * Emits each time the server sends a CheckSession event and the value changed. This property will always return\r\n * true.\r\n */\r\n get checkSessionChanged$() {\r\n return this.checkSessionService.checkSessionChanged$;\r\n }\r\n /**\r\n * Emits on a Security Token Service callback. The observable will never contain a value.\r\n */\r\n get stsCallback$() {\r\n return this.callbackService.stsCallback$;\r\n }\r\n /**\r\n * Returns the currently active OpenID configurations.\r\n *\r\n * @returns an array of OpenIdConfigurations.\r\n */\r\n getConfigurations() {\r\n return this.configurationProvider.getAllConfigurations();\r\n }\r\n /**\r\n * Returns a single active OpenIdConfiguration.\r\n *\r\n * @param configId The configId to identify the config. If not passed, the first one is being returned\r\n */\r\n getConfiguration(configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration().configId;\r\n return this.configurationProvider.getOpenIDConfiguration(configId);\r\n }\r\n /**\r\n * Returns the userData for a configuration\r\n *\r\n * @param configId The configId to identify the config. If not passed, the first one is being used\r\n */\r\n getUserData(configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration().configId;\r\n return this.userService.getUserDataFromStore(configId);\r\n }\r\n /**\r\n * Starts the complete setup flow for one configuration. Calling will start the entire authentication flow, and the returned observable\r\n * will denote whether the user was successfully authenticated including the user data, the access token, the configId and\r\n * an error message in case an error happened\r\n *\r\n * @param url The URL to perform the authorization on the behalf of.\r\n * @param configId The configId to perform the authorization on the behalf of. If not passed, the first configs will be taken\r\n *\r\n * @returns An object `LoginResponse` containing all information about the login\r\n */\r\n checkAuth(url, configId) {\r\n return this.checkAuthService.checkAuth(configId, url);\r\n }\r\n /**\r\n * Starts the complete setup flow for multiple configurations.\r\n * Calling will start the entire authentication flow, and the returned observable\r\n * will denote whether the user was successfully authenticated including the user data, the access token, the configId and\r\n * an error message in case an error happened in an array for each config which was provided\r\n *\r\n * @param url The URL to perform the authorization on the behalf of.\r\n * @param configId The configId to perform the authorization on the behalf of. If not passed, all of the current\r\n * configured ones will be used to check.\r\n *\r\n * @returns An array of `LoginResponse` objects containing all information about the logins\r\n */\r\n checkAuthMultiple(url, configId) {\r\n return this.checkAuthService.checkAuthMultiple(configId, url);\r\n }\r\n /**\r\n * Provides information about the current authenticated state\r\n *\r\n * @param configId The configId to check the information for. If not passed, the first configs will be taken\r\n *\r\n * @returns A boolean whether the config is authenticated or not.\r\n */\r\n isAuthenticated(configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.authStateService.isAuthenticated(configId);\r\n }\r\n /**\r\n * Checks the server for an authenticated session using the iframe silent renew if not locally authenticated.\r\n */\r\n checkAuthIncludingServer(configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.checkAuthService.checkAuthIncludingServer(configId);\r\n }\r\n /**\r\n * Returns the access token for the login scenario.\r\n *\r\n * @param configId The configId to check the information for. If not passed, the first configs will be taken\r\n *\r\n * @returns A string with the access token.\r\n */\r\n getAccessToken(configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.authStateService.getAccessToken(configId);\r\n }\r\n /**\r\n * Returns the ID token for the sign-in.\r\n *\r\n * @param configId The configId to check the information for. If not passed, the first configs will be taken\r\n *\r\n * @returns A string with the id token.\r\n */\r\n getIdToken(configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.authStateService.getIdToken(configId);\r\n }\r\n /**\r\n * Returns the refresh token, if present, for the sign-in.\r\n *\r\n * @param configId The configId to check the information for. If not passed, the first configs will be taken\r\n *\r\n * @returns A string with the refresh token.\r\n */\r\n getRefreshToken(configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.authStateService.getRefreshToken(configId);\r\n }\r\n /**\r\n * Returns the authentication result, if present, for the sign-in.\r\n *\r\n * @param configId The configId to check the information for. If not passed, the first configs will be taken\r\n *\r\n * @returns A object with the authentication result\r\n */\r\n getAuthenticationResult(configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.authStateService.getAuthenticationResult(configId);\r\n }\r\n /**\r\n * Returns the payload from the ID token.\r\n *\r\n * @param encode Set to true if the payload is base64 encoded\r\n * @param configId The configId to check the information for. If not passed, the first configs will be taken\r\n *\r\n * @returns The payload from the id token.\r\n */\r\n getPayloadFromIdToken(encode = false, configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n const token = this.authStateService.getIdToken(configId);\r\n return this.tokenHelperService.getPayloadFromToken(token, encode, configId);\r\n }\r\n /**\r\n * Sets a custom state for the authorize request.\r\n *\r\n * @param state The state to set.\r\n * @param configId The configId to check the information for. If not passed, the first configs will be taken\r\n */\r\n setState(state, configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n this.flowsDataService.setAuthStateControl(state, configId);\r\n }\r\n /**\r\n * Gets the state value used for the authorize request.\r\n *\r\n * @param configId The configId to check the information for. If not passed, the first configs will be taken\r\n *\r\n * @returns The state value used for the authorize request.\r\n */\r\n getState(configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.flowsDataService.getAuthStateControl(configId);\r\n }\r\n /**\r\n * Redirects the user to the Security Token Service to begin the authentication process.\r\n *\r\n * @param configId The configId to perform the action in behalf of. If not passed, the first configs will be taken\r\n * @param authOptions The custom options for the the authentication request.\r\n */\r\n authorize(configId, authOptions) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n this.loginService.login(configId, authOptions);\r\n }\r\n /**\r\n * Opens the Security Token Service in a new window to begin the authentication process.\r\n *\r\n * @param authOptions The custom options for the authentication request.\r\n * @param popupOptions The configuration for the popup window.\r\n * @param configId The configId to perform the action in behalf of. If not passed, the first configs will be taken\r\n *\r\n * @returns An `Observable<LoginResponse>` containing all information about the login\r\n */\r\n authorizeWithPopUp(authOptions, popupOptions, configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.loginService.loginWithPopUp(configId, authOptions, popupOptions);\r\n }\r\n /**\r\n * Manually refreshes the session.\r\n *\r\n * @param customParams Custom parameters to pass to the refresh request.\r\n * @param configId The configId to perform the action in behalf of. If not passed, the first configs will be taken\r\n *\r\n * @returns An `Observable<LoginResponse>` containing all information about the login\r\n */\r\n forceRefreshSession(customParams, configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.refreshSessionService.userForceRefreshSession(configId, customParams);\r\n }\r\n /**\r\n * Revokes the refresh token (if present) and the access token on the server and then performs the logoff operation.\r\n * The refresh token and and the access token are revoked on the server. If the refresh token does not exist\r\n * only the access token is revoked. Then the logout run.\r\n *\r\n * @param configId The configId to perform the action in behalf of. If not passed, the first configs will be taken\r\n * @param authOptions The custom options for the request.\r\n *\r\n * @returns An observable when the action is finished\r\n */\r\n logoffAndRevokeTokens(configId, authOptions) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.logoffRevocationService.logoffAndRevokeTokens(configId, authOptions);\r\n }\r\n /**\r\n * Logs out on the server and the local client. If the server state has changed, confirmed via check session,\r\n * then only a local logout is performed.\r\n *\r\n * @param configId The configId to perform the action in behalf of. If not passed, the first configs will be taken\r\n * @param authOptions with custom parameters and/or an custom url handler\r\n */\r\n logoff(configId, authOptions) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.logoffRevocationService.logoff(configId, authOptions);\r\n }\r\n /**\r\n * Logs the user out of the application without logging them out of the server.\r\n * Use this method if you have _one_ config enabled.\r\n *\r\n * @param configId The configId to perform the action in behalf of. If not passed, the first configs will be taken\r\n */\r\n logoffLocal(configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.logoffRevocationService.logoffLocal(configId);\r\n }\r\n /**\r\n * Logs the user out of the application for all configs without logging them out of the server.\r\n * Use this method if you have _multiple_ configs enabled.\r\n */\r\n logoffLocalMultiple() {\r\n return this.logoffRevocationService.logoffLocalMultiple();\r\n }\r\n /**\r\n * Revokes an access token on the Security Token Service. This is only required in the code flow with refresh tokens. If no token is\r\n * provided, then the token from the storage is revoked. You can pass any token to revoke.\r\n * https://tools.ietf.org/html/rfc7009\r\n *\r\n * @param accessToken The access token to revoke.\r\n * @param configId The configId to perform the action in behalf of. If not passed, the first configs will be taken\r\n *\r\n * @returns An observable when the action is finished\r\n */\r\n revokeAccessToken(accessToken, configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.logoffRevocationService.revokeAccessToken(configId, accessToken);\r\n }\r\n /**\r\n * Revokes a refresh token on the Security Token Service. This is only required in the code flow with refresh tokens. If no token is\r\n * provided, then the token from the storage is revoked. You can pass any token to revoke.\r\n * https://tools.ietf.org/html/rfc7009\r\n *\r\n * @param refreshToken The access token to revoke.\r\n * @param configId The configId to perform the action in behalf of. If not passed, the first configs will be taken\r\n *\r\n * @returns An observable when the action is finished\r\n */\r\n revokeRefreshToken(refreshToken, configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.logoffRevocationService.revokeRefreshToken(configId, refreshToken);\r\n }\r\n /**\r\n * Creates the end session URL which can be used to implement an alternate server logout.\r\n *\r\n * @param customParams\r\n * @param configId The configId to perform the action in behalf of. If not passed, the first configs will be taken\r\n *\r\n * @returns A string with the end session url or null\r\n */\r\n getEndSessionUrl(customParams, configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.logoffRevocationService.getEndSessionUrl(configId, customParams);\r\n }\r\n /**\r\n * Creates the authorize URL based on your flow\r\n *\r\n * @param customParams\r\n * @param configId The configId to perform the action in behalf of. If not passed, the first configs will be taken\r\n *\r\n * @returns A string with the authorize URL or null\r\n */\r\n getAuthorizeUrl(customParams, configId) {\r\n configId = configId !== null && configId !== void 0 ? configId : this.configurationProvider.getOpenIDConfiguration(configId).configId;\r\n return this.urlService.getAuthorizeUrl(configId, customParams);\r\n }\r\n}\r\nOidcSecurityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: OidcSecurityService, deps: [{ token: CheckSessionService }, { token: CheckAuthService }, { token: UserService }, { token: TokenHelperService }, { token: ConfigurationProvider }, { token: AuthStateService }, { token: FlowsDataService }, { token: CallbackService }, { token: LogoffRevocationService }, { token: LoginService }, { token: RefreshSessionService }, { token: UrlService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nOidcSecurityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: OidcSecurityService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: OidcSecurityService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: CheckSessionService }, { type: CheckAuthService }, { type: UserService }, { type: TokenHelperService }, { type: ConfigurationProvider }, { type: AuthStateService }, { type: FlowsDataService }, { type: CallbackService }, { type: LogoffRevocationService }, { type: LoginService }, { type: RefreshSessionService }, { type: UrlService }]; } });\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\nfunction createStaticLoader(passedConfig) {\r\n return new StsConfigStaticLoader(passedConfig.config);\r\n}\r\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\nfunction configurationProviderFactory(oidcConfigService, loader) {\r\n const allLoadPromises = Promise.all(loader.loadConfigs());\r\n const fn = () => allLoadPromises.then((configs) => oidcConfigService.withConfigs(configs));\r\n return fn;\r\n}\r\nconst PASSED_CONFIG = new InjectionToken('PASSED_CONFIG');\r\nclass AuthModule {\r\n static forRoot(passedConfig) {\r\n return {\r\n ngModule: AuthModule,\r\n providers: [\r\n // Make the PASSED_CONFIG available through injection\r\n { provide: PASSED_CONFIG, useValue: passedConfig },\r\n // Create the loader: Either the one getting passed or a static one\r\n (passedConfig === null || passedConfig === void 0 ? void 0 : passedConfig.loader) || { provide: StsConfigLoader, useFactory: createStaticLoader, deps: [PASSED_CONFIG] },\r\n // Load the config when the app starts\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [OidcConfigService, StsConfigLoader, PASSED_CONFIG],\r\n useFactory: configurationProviderFactory,\r\n },\r\n OidcConfigService,\r\n PublicEventsService,\r\n FlowHelper,\r\n ConfigurationProvider,\r\n OidcSecurityService,\r\n TokenValidationService,\r\n PlatformProvider,\r\n CheckSessionService,\r\n FlowsDataService,\r\n FlowsService,\r\n SilentRenewService,\r\n LogoffRevocationService,\r\n UserService,\r\n RandomService,\r\n HttpBaseService,\r\n UrlService,\r\n AuthStateService,\r\n SigninKeyDataService,\r\n StoragePersistenceService,\r\n TokenHelperService,\r\n LoggerService,\r\n IFrameService,\r\n EqualityService,\r\n LoginService,\r\n ParService,\r\n AuthWellKnownDataService,\r\n AuthWellKnownService,\r\n DataService,\r\n StateValidationService,\r\n ConfigValidationService,\r\n CheckAuthService,\r\n ResetAuthDataService,\r\n ImplicitFlowCallbackService,\r\n HistoryJwtKeysCallbackHandlerService,\r\n ResponseTypeValidationService,\r\n UserCallbackHandlerService,\r\n StateValidationCallbackHandlerService,\r\n RefreshSessionCallbackHandlerService,\r\n RefreshTokenCallbackHandlerService,\r\n CodeFlowCallbackHandlerService,\r\n ImplicitFlowCallbackHandlerService,\r\n ParLoginService,\r\n PopUpLoginService,\r\n StandardLoginService,\r\n AutoLoginService,\r\n JsrsAsignReducedService,\r\n CurrentUrlService,\r\n ClosestMatchingRouteService,\r\n DefaultSessionStorageService,\r\n BrowserStorageService,\r\n ],\r\n };\r\n }\r\n}\r\nAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthModule, imports: [CommonModule, HttpClientModule] });\r\nAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthModule, imports: [[CommonModule, HttpClientModule]] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n imports: [CommonModule, HttpClientModule],\r\n declarations: [],\r\n exports: [],\r\n }]\r\n }] });\n\nclass AutoLoginAllRoutesGuard {\r\n constructor(autoLoginService, checkAuthService, loginService, configurationProvider) {\r\n this.autoLoginService = autoLoginService;\r\n this.checkAuthService = checkAuthService;\r\n this.loginService = loginService;\r\n this.configurationProvider = configurationProvider;\r\n }\r\n canLoad(route, segments) {\r\n const routeToRedirect = segments.join('/');\r\n return this.checkAuth(routeToRedirect);\r\n }\r\n canActivate(route, state) {\r\n return this.checkAuth(state.url);\r\n }\r\n canActivateChild(route, state) {\r\n return this.checkAuth(state.url);\r\n }\r\n checkAuth(url) {\r\n const configId = this.getId();\r\n return this.checkAuthService.checkAuth().pipe(take(1), map(({ isAuthenticated }) => {\r\n if (isAuthenticated) {\r\n this.autoLoginService.checkSavedRedirectRouteAndNavigate(configId);\r\n }\r\n if (!isAuthenticated) {\r\n this.autoLoginService.saveRedirectRoute(configId, url);\r\n this.loginService.login(configId);\r\n }\r\n return isAuthenticated;\r\n }));\r\n }\r\n getId() {\r\n return this.configurationProvider.getOpenIDConfiguration().configId;\r\n }\r\n}\r\nAutoLoginAllRoutesGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AutoLoginAllRoutesGuard, deps: [{ token: AutoLoginService }, { token: CheckAuthService }, { token: LoginService }, { token: ConfigurationProvider }], target: i0.ɵɵFactoryTarget.Injectable });\r\nAutoLoginAllRoutesGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AutoLoginAllRoutesGuard, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AutoLoginAllRoutesGuard, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: AutoLoginService }, { type: CheckAuthService }, { type: LoginService }, { type: ConfigurationProvider }]; } });\n\nclass AutoLoginPartialRoutesGuard {\r\n constructor(autoLoginService, authStateService, loginService, configurationProvider) {\r\n this.autoLoginService = autoLoginService;\r\n this.authStateService = authStateService;\r\n this.loginService = loginService;\r\n this.configurationProvider = configurationProvider;\r\n }\r\n canLoad(route, segments) {\r\n const routeToRedirect = segments.join('/');\r\n return this.checkAuth(routeToRedirect);\r\n }\r\n canActivate(route, state) {\r\n return this.checkAuth(state.url);\r\n }\r\n canActivateChild(route, state) {\r\n return this.checkAuth(state.url);\r\n }\r\n checkAuth(url) {\r\n const configId = this.getId();\r\n const isAuthenticated = this.authStateService.areAuthStorageTokensValid(configId);\r\n if (isAuthenticated) {\r\n this.autoLoginService.checkSavedRedirectRouteAndNavigate(configId);\r\n }\r\n if (!isAuthenticated) {\r\n this.autoLoginService.saveRedirectRoute(configId, url);\r\n this.loginService.login(configId);\r\n }\r\n return isAuthenticated;\r\n }\r\n getId() {\r\n return this.configurationProvider.getOpenIDConfiguration().configId;\r\n }\r\n}\r\nAutoLoginPartialRoutesGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AutoLoginPartialRoutesGuard, deps: [{ token: AutoLoginService }, { token: AuthStateService }, { token: LoginService }, { token: ConfigurationProvider }], target: i0.ɵɵFactoryTarget.Injectable });\r\nAutoLoginPartialRoutesGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AutoLoginPartialRoutesGuard, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AutoLoginPartialRoutesGuard, decorators: [{\r\n type: Injectable,\r\n args: [{ providedIn: 'root' }]\r\n }], ctorParameters: function () { return [{ type: AutoLoginService }, { type: AuthStateService }, { type: LoginService }, { type: ConfigurationProvider }]; } });\n\nclass AuthInterceptor {\r\n constructor(authStateService, configurationProvider, loggerService, closestMatchingRouteService) {\r\n this.authStateService = authStateService;\r\n this.configurationProvider = configurationProvider;\r\n this.loggerService = loggerService;\r\n this.closestMatchingRouteService = closestMatchingRouteService;\r\n }\r\n intercept(req, next) {\r\n if (!this.configurationProvider.hasAsLeastOneConfig()) {\r\n return next.handle(req);\r\n }\r\n const allConfigurations = this.configurationProvider.getAllConfigurations();\r\n const allRoutesConfigured = allConfigurations.map((x) => x.secureRoutes || []);\r\n const allRoutesConfiguredFlat = [].concat.apply([], allRoutesConfigured);\r\n if (allRoutesConfiguredFlat.length === 0) {\r\n const { configId } = allConfigurations[0];\r\n this.loggerService.logDebug(configId, `No routes to check configured`);\r\n return next.handle(req);\r\n }\r\n const { matchingConfigId, matchingRoute } = this.closestMatchingRouteService.getConfigIdForClosestMatchingRoute(req.url);\r\n if (!matchingConfigId) {\r\n const { configId } = allConfigurations[0];\r\n this.loggerService.logDebug(configId, `Did not find any configured route for route ${req.url}`);\r\n return next.handle(req);\r\n }\r\n this.loggerService.logDebug(matchingConfigId, `'${req.url}' matches configured route '${matchingRoute}'`);\r\n const token = this.authStateService.getAccessToken(matchingConfigId);\r\n if (!token) {\r\n this.loggerService.logDebug(matchingConfigId, `Wanted to add token to ${req.url} but found no token: '${token}'`);\r\n return next.handle(req);\r\n }\r\n this.loggerService.logDebug(matchingConfigId, `'${req.url}' matches configured route '${matchingRoute}', adding token`);\r\n req = req.clone({\r\n headers: req.headers.set('Authorization', 'Bearer ' + token),\r\n });\r\n return next.handle(req);\r\n }\r\n}\r\nAuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthInterceptor, deps: [{ token: AuthStateService }, { token: ConfigurationProvider }, { token: LoggerService }, { token: ClosestMatchingRouteService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nAuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthInterceptor });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AuthInterceptor, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: AuthStateService }, { type: ConfigurationProvider }, { type: LoggerService }, { type: ClosestMatchingRouteService }]; } });\n\n/**\r\n * Implement this class-interface to create a custom storage.\r\n */\r\nclass AbstractSecurityStorage {\r\n}\r\nAbstractSecurityStorage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AbstractSecurityStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nAbstractSecurityStorage.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AbstractSecurityStorage });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.0.4\", ngImport: i0, type: AbstractSecurityStorage, decorators: [{\r\n type: Injectable\r\n }] });\n\n// Public classes.\n\n/*\r\n * Public API Surface of angular-auth-oidc-client\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { AbstractSecurityStorage, AuthInterceptor, AuthModule, AutoLoginAllRoutesGuard, AutoLoginPartialRoutesGuard, EventTypes, LogLevel, LoggerService, OidcConfigService, OidcSecurityService, OpenIdConfigLoader, PASSED_CONFIG, PopUpService, PublicEventsService, StateValidationResult, StsConfigHttpLoader, StsConfigLoader, StsConfigStaticLoader, TokenHelperService, TokenValidationService, ValidationResult, configurationProviderFactory, createStaticLoader };\n","import { async } from '../scheduler/async';\nimport { TimeoutError } from '../util/TimeoutError';\nimport { timeoutWith } from './timeoutWith';\nimport { throwError } from '../observable/throwError';\nexport function timeout(due, scheduler = async) {\n return timeoutWith(due, throwError(new TimeoutError()), scheduler);\n}\n","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n\n // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n dateLeft.setFullYear(1584);\n dateRight.setFullYear(1584);\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - Number(isLastYearNotFull));\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n","/*! ExcelJS 19-10-2023 */\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).ExcelJS=e()}}((function(){return function e(t,r,n){function i(o,a){if(!r[o]){if(!t[o]){var l=\"function\"==typeof require&&require;if(!a&&l)return l(o,!0);if(s)return s(o,!0);var c=new Error(\"Cannot find module '\"+o+\"'\");throw c.code=\"MODULE_NOT_FOUND\",c}var u=r[o]={exports:{}};t[o][0].call(u.exports,(function(e){return i(t[o][1][e]||e)}),u,u.exports,e,t,r,n)}return r[o].exports}for(var s=\"function\"==typeof require&&require,o=0;o<n.length;o++)i(n[o]);return i}({1:[function(e,t,r){\"use strict\";const n=e(\"fs\"),i=e(\"fast-csv\"),s=e(\"dayjs/plugin/customParseFormat\"),o=e(\"dayjs/plugin/utc\"),a=e(\"dayjs\").extend(s).extend(o),l=e(\"../utils/stream-buf\"),{fs:{exists:c}}=e(\"../utils/utils\"),u={true:!0,false:!1,\"#N/A\":{error:\"#N/A\"},\"#REF!\":{error:\"#REF!\"},\"#NAME?\":{error:\"#NAME?\"},\"#DIV/0!\":{error:\"#DIV/0!\"},\"#NULL!\":{error:\"#NULL!\"},\"#VALUE!\":{error:\"#VALUE!\"},\"#NUM!\":{error:\"#NUM!\"}};t.exports=class{constructor(e){this.workbook=e,this.worksheet=null}async readFile(e,t){if(t=t||{},!await c(e))throw new Error(\"File not found: \"+e);const r=n.createReadStream(e),i=await this.read(r,t);return r.close(),i}read(e,t){return t=t||{},new Promise((r,n)=>{const s=this.workbook.addWorksheet(t.sheetName),o=t.dateFormats||[\"YYYY-MM-DD[T]HH:mm:ssZ\",\"YYYY-MM-DD[T]HH:mm:ss\",\"MM-DD-YYYY\",\"YYYY-MM-DD\"],l=t.map||function(e){if(\"\"===e)return null;const t=Number(e);if(!Number.isNaN(t)&&t!==1/0)return t;const r=o.reduce((t,r)=>{if(t)return t;const n=a(e,r,!0);return n.isValid()?n:null},null);if(r)return new Date(r.valueOf());const n=u[e];return void 0!==n?n:e},c=i.parse(t.parserOptions).on(\"data\",e=>{s.addRow(e.map(l))}).on(\"end\",()=>{c.emit(\"worksheet\",s)});c.on(\"worksheet\",r).on(\"error\",n),e.pipe(c)})}createInputStream(){throw new Error(\"`CSV#createInputStream` is deprecated. You should use `CSV#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md\")}write(e,t){return new Promise((r,n)=>{t=t||{};const s=this.workbook.getWorksheet(t.sheetName||t.sheetId),o=i.format(t.formatterOptions);e.on(\"finish\",()=>{r()}),o.on(\"error\",n),o.pipe(e);const{dateFormat:l,dateUTC:c}=t,u=t.map||(e=>{if(e){if(e.text||e.hyperlink)return e.hyperlink||e.text||\"\";if(e.formula||e.result)return e.result||\"\";if(e instanceof Date)return l?c?a.utc(e).format(l):a(e).format(l):c?a.utc(e).format():a(e).format();if(e.error)return e.error;if(\"object\"==typeof e)return JSON.stringify(e)}return e}),h=void 0===t.includeEmptyRows||t.includeEmptyRows;let f=1;s&&s.eachRow((e,t)=>{if(h)for(;f++<t-1;)o.write([]);const{values:r}=e;r.shift(),o.write(r.map(u)),f=t}),o.end()})}writeFile(e,t){const r={encoding:(t=t||{}).encoding||\"utf8\"},i=n.createWriteStream(e,r);return this.write(i,t)}async writeBuffer(e){const t=new l;return await this.write(t,e),t.read()}}},{\"../utils/stream-buf\":24,\"../utils/utils\":27,dayjs:391,\"dayjs/plugin/customParseFormat\":392,\"dayjs/plugin/utc\":393,\"fast-csv\":424,fs:216}],2:[function(e,t,r){\"use strict\";const n=e(\"../utils/col-cache\");class i{constructor(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(this.worksheet=e,t)if(\"string\"==typeof t){const e=n.decodeAddress(t);this.nativeCol=e.col+r,this.nativeColOff=0,this.nativeRow=e.row+r,this.nativeRowOff=0}else void 0!==t.nativeCol?(this.nativeCol=t.nativeCol||0,this.nativeColOff=t.nativeColOff||0,this.nativeRow=t.nativeRow||0,this.nativeRowOff=t.nativeRowOff||0):void 0!==t.col?(this.col=t.col+r,this.row=t.row+r):(this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0);else this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0}static asInstance(e){return e instanceof i||null==e?e:new i(e)}get col(){return this.nativeCol+Math.min(this.colWidth-1,this.nativeColOff)/this.colWidth}set col(e){this.nativeCol=Math.floor(e),this.nativeColOff=Math.floor((e-this.nativeCol)*this.colWidth)}get row(){return this.nativeRow+Math.min(this.rowHeight-1,this.nativeRowOff)/this.rowHeight}set row(e){this.nativeRow=Math.floor(e),this.nativeRowOff=Math.floor((e-this.nativeRow)*this.rowHeight)}get colWidth(){return this.worksheet&&this.worksheet.getColumn(this.nativeCol+1)&&this.worksheet.getColumn(this.nativeCol+1).isCustomWidth?Math.floor(1e4*this.worksheet.getColumn(this.nativeCol+1).width):64e4}get rowHeight(){return this.worksheet&&this.worksheet.getRow(this.nativeRow+1)&&this.worksheet.getRow(this.nativeRow+1).height?Math.floor(1e4*this.worksheet.getRow(this.nativeRow+1).height):18e4}get model(){return{nativeCol:this.nativeCol,nativeColOff:this.nativeColOff,nativeRow:this.nativeRow,nativeRowOff:this.nativeRowOff}}set model(e){this.nativeCol=e.nativeCol,this.nativeColOff=e.nativeColOff,this.nativeRow=e.nativeRow,this.nativeRowOff=e.nativeRowOff}}t.exports=i},{\"../utils/col-cache\":19}],3:[function(e,t,r){\"use strict\";const n=e(\"../utils/col-cache\"),i=e(\"../utils/under-dash\"),s=e(\"./enums\"),{slideFormula:o}=e(\"../utils/shared-formula\"),a=e(\"./note\");class l{constructor(e,t,r){if(!e||!t)throw new Error(\"A Cell needs a Row\");this._row=e,this._column=t,n.validateAddress(r),this._address=r,this._value=c.create(l.Types.Null,this),this.style=this._mergeStyle(e.style,t.style,{}),this._mergeCount=0}get worksheet(){return this._row.worksheet}get workbook(){return this._row.worksheet.workbook}destroy(){delete this.style,delete this._value,delete this._row,delete this._column,delete this._address}get numFmt(){return this.style.numFmt}set numFmt(e){this.style.numFmt=e}get font(){return this.style.font}set font(e){this.style.font=e}get alignment(){return this.style.alignment}set alignment(e){this.style.alignment=e}get border(){return this.style.border}set border(e){this.style.border=e}get fill(){return this.style.fill}set fill(e){this.style.fill=e}get protection(){return this.style.protection}set protection(e){this.style.protection=e}_mergeStyle(e,t,r){const n=e&&e.numFmt||t&&t.numFmt;n&&(r.numFmt=n);const i=e&&e.font||t&&t.font;i&&(r.font=i);const s=e&&e.alignment||t&&t.alignment;s&&(r.alignment=s);const o=e&&e.border||t&&t.border;o&&(r.border=o);const a=e&&e.fill||t&&t.fill;a&&(r.fill=a);const l=e&&e.protection||t&&t.protection;return l&&(r.protection=l),r}get address(){return this._address}get row(){return this._row.number}get col(){return this._column.number}get $col$row(){return`$${this._column.letter}$${this.row}`}get type(){return this._value.type}get effectiveType(){return this._value.effectiveType}toCsvString(){return this._value.toCsvString()}addMergeRef(){this._mergeCount++}releaseMergeRef(){this._mergeCount--}get isMerged(){return this._mergeCount>0||this.type===l.Types.Merge}merge(e,t){this._value.release(),this._value=c.create(l.Types.Merge,this,e),t||(this.style=e.style)}unmerge(){this.type===l.Types.Merge&&(this._value.release(),this._value=c.create(l.Types.Null,this),this.style=this._mergeStyle(this._row.style,this._column.style,{}))}isMergedTo(e){return this._value.type===l.Types.Merge&&this._value.isMergedTo(e)}get master(){return this.type===l.Types.Merge?this._value.master:this}get isHyperlink(){return this._value.type===l.Types.Hyperlink}get hyperlink(){return this._value.hyperlink}get value(){return this._value.value}set value(e){this.type!==l.Types.Merge?(this._value.release(),this._value=c.create(c.getType(e),this,e)):this._value.master.value=e}get note(){return this._comment&&this._comment.note}set note(e){this._comment=new a(e)}get text(){return this._value.toString()}get html(){return i.escapeHtml(this.text)}toString(){return this.text}_upgradeToHyperlink(e){this.type===l.Types.String&&(this._value=c.create(l.Types.Hyperlink,this,{text:this._value.value,hyperlink:e}))}get formula(){return this._value.formula}get result(){return this._value.result}get formulaType(){return this._value.formulaType}get fullAddress(){const{worksheet:e}=this._row;return{sheetName:e.name,address:this.address,row:this.row,col:this.col}}get name(){return this.names[0]}set name(e){this.names=[e]}get names(){return this.workbook.definedNames.getNamesEx(this.fullAddress)}set names(e){const{definedNames:t}=this.workbook;t.removeAllNames(this.fullAddress),e.forEach(e=>{t.addEx(this.fullAddress,e)})}addName(e){this.workbook.definedNames.addEx(this.fullAddress,e)}removeName(e){this.workbook.definedNames.removeEx(this.fullAddress,e)}removeAllNames(){this.workbook.definedNames.removeAllNames(this.fullAddress)}get _dataValidations(){return this.worksheet.dataValidations}get dataValidation(){return this._dataValidations.find(this.address)}set dataValidation(e){this._dataValidations.add(this.address,e)}get model(){const{model:e}=this._value;return e.style=this.style,this._comment&&(e.comment=this._comment.model),e}set model(e){if(this._value.release(),this._value=c.create(e.type,this),this._value.model=e,e.comment)switch(e.comment.type){case\"note\":this._comment=a.fromModel(e.comment)}e.style?this.style=e.style:this.style={}}}l.Types=s.ValueType;const c={getType:e=>null==e?l.Types.Null:e instanceof String||\"string\"==typeof e?l.Types.String:\"number\"==typeof e?l.Types.Number:\"boolean\"==typeof e?l.Types.Boolean:e instanceof Date?l.Types.Date:e.text&&e.hyperlink?l.Types.Hyperlink:e.formula||e.sharedFormula?l.Types.Formula:e.richText?l.Types.RichText:e.sharedString?l.Types.SharedString:e.error?l.Types.Error:l.Types.JSON,types:[{t:l.Types.Null,f:class{constructor(e){this.model={address:e.address,type:l.Types.Null}}get value(){return null}set value(e){}get type(){return l.Types.Null}get effectiveType(){return l.Types.Null}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return\"\"}release(){}toString(){return\"\"}}},{t:l.Types.Number,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Number,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.Number}get effectiveType(){return l.Types.Number}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.value.toString()}release(){}toString(){return this.model.value.toString()}}},{t:l.Types.String,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.String,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.String}get effectiveType(){return l.Types.String}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return`\"${this.model.value.replace(/\"/g,'\"\"')}\"`}release(){}toString(){return this.model.value}}},{t:l.Types.Date,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Date,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.Date}get effectiveType(){return l.Types.Date}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.value.toISOString()}release(){}toString(){return this.model.value.toString()}}},{t:l.Types.Hyperlink,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Hyperlink,text:t?t.text:void 0,hyperlink:t?t.hyperlink:void 0},t&&t.tooltip&&(this.model.tooltip=t.tooltip)}get value(){const e={text:this.model.text,hyperlink:this.model.hyperlink};return this.model.tooltip&&(e.tooltip=this.model.tooltip),e}set value(e){this.model={text:e.text,hyperlink:e.hyperlink},e.tooltip&&(this.model.tooltip=e.tooltip)}get text(){return this.model.text}set text(e){this.model.text=e}get hyperlink(){return this.model.hyperlink}set hyperlink(e){this.model.hyperlink=e}get type(){return l.Types.Hyperlink}get effectiveType(){return l.Types.Hyperlink}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.hyperlink}release(){}toString(){return this.model.text}}},{t:l.Types.Formula,f:class{constructor(e,t){this.cell=e,this.model={address:e.address,type:l.Types.Formula,shareType:t?t.shareType:void 0,ref:t?t.ref:void 0,formula:t?t.formula:void 0,sharedFormula:t?t.sharedFormula:void 0,result:t?t.result:void 0}}_copyModel(e){const t={},r=r=>{const n=e[r];n&&(t[r]=n)};return r(\"formula\"),r(\"result\"),r(\"ref\"),r(\"shareType\"),r(\"sharedFormula\"),t}get value(){return this._copyModel(this.model)}set value(e){this.model=this._copyModel(e)}validate(e){switch(c.getType(e)){case l.Types.Null:case l.Types.String:case l.Types.Number:case l.Types.Date:break;case l.Types.Hyperlink:case l.Types.Formula:default:throw new Error(\"Cannot process that type of result value\")}}get dependencies(){return{ranges:this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g),cells:this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g,\"\").match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}/g)}}get formula(){return this.model.formula||this._getTranslatedFormula()}set formula(e){this.model.formula=e}get formulaType(){return this.model.formula?s.FormulaType.Master:this.model.sharedFormula?s.FormulaType.Shared:s.FormulaType.None}get result(){return this.model.result}set result(e){this.model.result=e}get type(){return l.Types.Formula}get effectiveType(){const e=this.model.result;return null==e?s.ValueType.Null:e instanceof String||\"string\"==typeof e?s.ValueType.String:\"number\"==typeof e?s.ValueType.Number:e instanceof Date?s.ValueType.Date:e.text&&e.hyperlink?s.ValueType.Hyperlink:e.formula?s.ValueType.Formula:s.ValueType.Null}get address(){return this.model.address}set address(e){this.model.address=e}_getTranslatedFormula(){if(!this._translatedFormula&&this.model.sharedFormula){const{worksheet:e}=this.cell,t=e.findCell(this.model.sharedFormula);this._translatedFormula=t&&o(t.formula,t.address,this.model.address)}return this._translatedFormula}toCsvString(){return\"\"+(this.model.result||\"\")}release(){}toString(){return this.model.result?this.model.result.toString():\"\"}}},{t:l.Types.Merge,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Merge,master:t?t.address:void 0},this._master=t,t&&t.addMergeRef()}get value(){return this._master.value}set value(e){e instanceof l?(this._master&&this._master.releaseMergeRef(),e.addMergeRef(),this._master=e):this._master.value=e}isMergedTo(e){return e===this._master}get master(){return this._master}get type(){return l.Types.Merge}get effectiveType(){return this._master.effectiveType}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return\"\"}release(){this._master.releaseMergeRef()}toString(){return this.value.toString()}}},{t:l.Types.JSON,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.String,value:JSON.stringify(t),rawValue:t}}get value(){return this.model.rawValue}set value(e){this.model.rawValue=e,this.model.value=JSON.stringify(e)}get type(){return l.Types.String}get effectiveType(){return l.Types.String}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.value}release(){}toString(){return this.model.value}}},{t:l.Types.SharedString,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.SharedString,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.SharedString}get effectiveType(){return l.Types.SharedString}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.value.toString()}release(){}toString(){return this.model.value.toString()}}},{t:l.Types.RichText,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.String,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}toString(){return this.model.value.richText.map(e=>e.text).join(\"\")}get type(){return l.Types.RichText}get effectiveType(){return l.Types.RichText}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return`\"${this.text.replace(/\"/g,'\"\"')}\"`}release(){}}},{t:l.Types.Boolean,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Boolean,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.Boolean}get effectiveType(){return l.Types.Boolean}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.value?1:0}release(){}toString(){return this.model.value.toString()}}},{t:l.Types.Error,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Error,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.Error}get effectiveType(){return l.Types.Error}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.toString()}release(){}toString(){return this.model.value.error.toString()}}}].reduce((e,t)=>(e[t.t]=t.f,e),[]),create(e,t,r){const n=this.types[e];if(!n)throw new Error(\"Could not create Value of type \"+e);return new n(t,r)}};t.exports=l},{\"../utils/col-cache\":19,\"../utils/shared-formula\":23,\"../utils/under-dash\":26,\"./enums\":7,\"./note\":9}],4:[function(e,t,r){\"use strict\";const n=e(\"../utils/under-dash\"),i=e(\"./enums\"),s=e(\"../utils/col-cache\");class o{constructor(e,t,r){this._worksheet=e,this._number=t,!1!==r&&(this.defn=r)}get number(){return this._number}get worksheet(){return this._worksheet}get letter(){return s.n2l(this._number)}get isCustomWidth(){return void 0!==this.width&&9!==this.width}get defn(){return{header:this._header,key:this.key,width:this.width,style:this.style,hidden:this.hidden,outlineLevel:this.outlineLevel}}set defn(e){e?(this.key=e.key,this.width=void 0!==e.width?e.width:9,this.outlineLevel=e.outlineLevel,e.style?this.style=e.style:this.style={},this.header=e.header,this._hidden=!!e.hidden):(delete this._header,delete this._key,delete this.width,this.style={},this.outlineLevel=0)}get headers(){return this._header&&this._header instanceof Array?this._header:[this._header]}get header(){return this._header}set header(e){void 0!==e?(this._header=e,this.headers.forEach((e,t)=>{this._worksheet.getCell(t+1,this.number).value=e})):this._header=void 0}get key(){return this._key}set key(e){(this._key&&this._worksheet.getColumnKey(this._key))===this&&this._worksheet.deleteColumnKey(this._key),this._key=e,e&&this._worksheet.setColumnKey(this._key,this)}get hidden(){return!!this._hidden}set hidden(e){this._hidden=e}get outlineLevel(){return this._outlineLevel||0}set outlineLevel(e){this._outlineLevel=e}get collapsed(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelCol)}toString(){return JSON.stringify({key:this.key,width:this.width,headers:this.headers.length?this.headers:void 0})}equivalentTo(e){return this.width===e.width&&this.hidden===e.hidden&&this.outlineLevel===e.outlineLevel&&n.isEqual(this.style,e.style)}get isDefault(){if(this.isCustomWidth)return!1;if(this.hidden)return!1;if(this.outlineLevel)return!1;const e=this.style;return!e||!(e.font||e.numFmt||e.alignment||e.border||e.fill||e.protection)}get headerCount(){return this.headers.length}eachCell(e,t){const r=this.number;t||(t=e,e=null),this._worksheet.eachRow(e,(e,n)=>{t(e.getCell(r),n)})}get values(){const e=[];return this.eachCell((t,r)=>{t&&t.type!==i.ValueType.Null&&(e[r]=t.value)}),e}set values(e){if(!e)return;const t=this.number;let r=0;e.hasOwnProperty(\"0\")&&(r=1),e.forEach((e,n)=>{this._worksheet.getCell(n+r,t).value=e})}_applyStyle(e,t){return this.style[e]=t,this.eachCell(r=>{r[e]=t}),t}get numFmt(){return this.style.numFmt}set numFmt(e){this._applyStyle(\"numFmt\",e)}get font(){return this.style.font}set font(e){this._applyStyle(\"font\",e)}get alignment(){return this.style.alignment}set alignment(e){this._applyStyle(\"alignment\",e)}get protection(){return this.style.protection}set protection(e){this._applyStyle(\"protection\",e)}get border(){return this.style.border}set border(e){this._applyStyle(\"border\",e)}get fill(){return this.style.fill}set fill(e){this._applyStyle(\"fill\",e)}static toModel(e){const t=[];let r=null;return e&&e.forEach((e,n)=>{e.isDefault?r&&(r=null):r&&e.equivalentTo(r)?r.max=n+1:(r={min:n+1,max:n+1,width:void 0!==e.width?e.width:9,style:e.style,isCustomWidth:e.isCustomWidth,hidden:e.hidden,outlineLevel:e.outlineLevel,collapsed:e.collapsed},t.push(r))}),t.length?t:void 0}static fromModel(e,t){const r=[];let n=1,i=0;for(t=(t=t||[]).sort((function(e,t){return e.min-t.min}));i<t.length;){const s=t[i++];for(;n<s.min;)r.push(new o(e,n++));for(;n<=s.max;)r.push(new o(e,n++,s))}return r.length?r:null}}t.exports=o},{\"../utils/col-cache\":19,\"../utils/under-dash\":26,\"./enums\":7}],5:[function(e,t,r){\"use strict\";t.exports=class{constructor(e){this.model=e||{}}add(e,t){return this.model[e]=t}find(e){return this.model[e]}remove(e){this.model[e]=void 0}}},{}],6:[function(e,t,r){\"use strict\";const n=e(\"../utils/under-dash\"),i=e(\"../utils/col-cache\"),s=e(\"../utils/cell-matrix\"),o=e(\"./range\"),a=/[$](\\w+)[$](\\d+)(:[$](\\w+)[$](\\d+))?/;t.exports=class{constructor(){this.matrixMap={}}getMatrix(e){return this.matrixMap[e]||(this.matrixMap[e]=new s)}add(e,t){const r=i.decodeEx(e);this.addEx(r,t)}addEx(e,t){const r=this.getMatrix(t);if(e.top)for(let t=e.left;t<=e.right;t++)for(let n=e.top;n<=e.bottom;n++){const s={sheetName:e.sheetName,address:i.n2l(t)+n,row:n,col:t};r.addCellEx(s)}else r.addCellEx(e)}remove(e,t){const r=i.decodeEx(e);this.removeEx(r,t)}removeEx(e,t){this.getMatrix(t).removeCellEx(e)}removeAllNames(e){n.each(this.matrixMap,t=>{t.removeCellEx(e)})}forEach(e){n.each(this.matrixMap,(t,r)=>{t.forEach(t=>{e(r,t)})})}getNames(e){return this.getNamesEx(i.decodeEx(e))}getNamesEx(e){return n.map(this.matrixMap,(t,r)=>t.findCellEx(e)&&r).filter(Boolean)}_explore(e,t){t.mark=!1;const{sheetName:r}=t,n=new o(t.row,t.col,t.row,t.col,r);let i,s;function a(i,s){const o=e.findCellAt(r,i,t.col);return!(!o||!o.mark)&&(n[s]=i,o.mark=!1,!0)}for(s=t.row-1;a(s,\"top\");s--);for(s=t.row+1;a(s,\"bottom\");s++);function l(t,i){const o=[];for(s=n.top;s<=n.bottom;s++){const n=e.findCellAt(r,s,t);if(!n||!n.mark)return!1;o.push(n)}n[i]=t;for(let e=0;e<o.length;e++)o[e].mark=!1;return!0}for(i=t.col-1;l(i,\"left\");i--);for(i=t.col+1;l(i,\"right\");i++);return n}getRanges(e,t){if(!(t=t||this.matrixMap[e]))return{name:e,ranges:[]};t.forEach(e=>{e.mark=!0});return{name:e,ranges:t.map(e=>e.mark&&this._explore(t,e)).filter(Boolean).map(e=>e.$shortRange)}}normaliseMatrix(e,t){e.forEachInSheet(t,(e,t,r)=>{e&&(e.row===t&&e.col===r||(e.row=t,e.col=r,e.address=i.n2l(r)+t))})}spliceRows(e,t,r,i){n.each(this.matrixMap,n=>{n.spliceRows(e,t,r,i),this.normaliseMatrix(n,e)})}spliceColumns(e,t,r,i){n.each(this.matrixMap,n=>{n.spliceColumns(e,t,r,i),this.normaliseMatrix(n,e)})}get model(){return n.map(this.matrixMap,(e,t)=>this.getRanges(t,e)).filter(e=>e.ranges.length)}set model(e){const t=this.matrixMap={};e.forEach(e=>{const r=t[e.name]=new s;e.ranges.forEach(e=>{a.test(e.split(\"!\").pop()||\"\")&&r.addCell(e)})})}}},{\"../utils/cell-matrix\":18,\"../utils/col-cache\":19,\"../utils/under-dash\":26,\"./range\":10}],7:[function(e,t,r){\"use strict\";t.exports={ValueType:{Null:0,Merge:1,Number:2,String:3,Date:4,Hyperlink:5,Formula:6,SharedString:7,RichText:8,Boolean:9,Error:10},FormulaType:{None:0,Master:1,Shared:2},RelationshipType:{None:0,OfficeDocument:1,Worksheet:2,CalcChain:3,SharedStrings:4,Styles:5,Theme:6,Hyperlink:7},DocumentType:{Xlsx:1},ReadingOrder:{LeftToRight:1,RightToLeft:2},ErrorValue:{NotApplicable:\"#N/A\",Ref:\"#REF!\",Name:\"#NAME?\",DivZero:\"#DIV/0!\",Null:\"#NULL!\",Value:\"#VALUE!\",Num:\"#NUM!\"}}},{}],8:[function(e,t,r){\"use strict\";const n=e(\"../utils/col-cache\"),i=e(\"./anchor\");t.exports=class{constructor(e,t){this.worksheet=e,this.model=t}get model(){switch(this.type){case\"background\":return{type:this.type,imageId:this.imageId};case\"image\":return{type:this.type,imageId:this.imageId,hyperlinks:this.range.hyperlinks,range:{tl:this.range.tl.model,br:this.range.br&&this.range.br.model,ext:this.range.ext,editAs:this.range.editAs}};default:throw new Error(\"Invalid Image Type\")}}set model(e){let{type:t,imageId:r,range:s,hyperlinks:o}=e;if(this.type=t,this.imageId=r,\"image\"===t)if(\"string\"==typeof s){const e=n.decode(s);this.range={tl:new i(this.worksheet,{col:e.left,row:e.top},-1),br:new i(this.worksheet,{col:e.right,row:e.bottom},0),editAs:\"oneCell\"}}else this.range={tl:new i(this.worksheet,s.tl,0),br:s.br&&new i(this.worksheet,s.br,0),ext:s.ext,editAs:s.editAs,hyperlinks:o||s.hyperlinks}}}},{\"../utils/col-cache\":19,\"./anchor\":2}],9:[function(e,t,r){\"use strict\";const n=e(\"../utils/under-dash\");class i{constructor(e){this.note=e}get model(){let e=null;switch(typeof this.note){case\"string\":e={type:\"note\",note:{texts:[{text:this.note}]}};break;default:e={type:\"note\",note:this.note}}return n.deepMerge({},i.DEFAULT_CONFIGS,e)}set model(e){const{note:t}=e,{texts:r}=t;1===r.length&&1===Object.keys(r[0]).length?this.note=r[0].text:this.note=t}static fromModel(e){const t=new i;return t.model=e,t}}i.DEFAULT_CONFIGS={note:{margins:{insetmode:\"auto\",inset:[.13,.13,.25,.25]},protection:{locked:\"True\",lockText:\"True\"},editAs:\"absolute\"}},t.exports=i},{\"../utils/under-dash\":26}],10:[function(e,t,r){\"use strict\";const n=e(\"../utils/col-cache\");class i{constructor(){this.decode(arguments)}setTLBR(e,t,r,i,s){if(arguments.length<4){const i=n.decodeAddress(e),o=n.decodeAddress(t);this.model={top:Math.min(i.row,o.row),left:Math.min(i.col,o.col),bottom:Math.max(i.row,o.row),right:Math.max(i.col,o.col),sheetName:r},this.setTLBR(i.row,i.col,o.row,o.col,s)}else this.model={top:Math.min(e,r),left:Math.min(t,i),bottom:Math.max(e,r),right:Math.max(t,i),sheetName:s}}decode(e){switch(e.length){case 5:this.setTLBR(e[0],e[1],e[2],e[3],e[4]);break;case 4:this.setTLBR(e[0],e[1],e[2],e[3]);break;case 3:this.setTLBR(e[0],e[1],e[2]);break;case 2:this.setTLBR(e[0],e[1]);break;case 1:{const t=e[0];if(t instanceof i)this.model={top:t.model.top,left:t.model.left,bottom:t.model.bottom,right:t.model.right,sheetName:t.sheetName};else if(t instanceof Array)this.decode(t);else if(t.top&&t.left&&t.bottom&&t.right)this.model={top:t.top,left:t.left,bottom:t.bottom,right:t.right,sheetName:t.sheetName};else{const e=n.decodeEx(t);e.top?this.model={top:e.top,left:e.left,bottom:e.bottom,right:e.right,sheetName:e.sheetName}:this.model={top:e.row,left:e.col,bottom:e.row,right:e.col,sheetName:e.sheetName}}break}case 0:this.model={top:0,left:0,bottom:0,right:0};break;default:throw new Error(\"Invalid number of arguments to _getDimensions() - \"+e.length)}}get top(){return this.model.top||1}set top(e){this.model.top=e}get left(){return this.model.left||1}set left(e){this.model.left=e}get bottom(){return this.model.bottom||1}set bottom(e){this.model.bottom=e}get right(){return this.model.right||1}set right(e){this.model.right=e}get sheetName(){return this.model.sheetName}set sheetName(e){this.model.sheetName=e}get _serialisedSheetName(){const{sheetName:e}=this.model;return e?/^[a-zA-Z0-9]*$/.test(e)?e+\"!\":`'${e}'!`:\"\"}expand(e,t,r,n){(!this.model.top||e<this.top)&&(this.top=e),(!this.model.left||t<this.left)&&(this.left=t),(!this.model.bottom||r>this.bottom)&&(this.bottom=r),(!this.model.right||n>this.right)&&(this.right=n)}expandRow(e){if(e){const{dimensions:t,number:r}=e;t&&this.expand(r,t.min,r,t.max)}}expandToAddress(e){const t=n.decodeEx(e);this.expand(t.row,t.col,t.row,t.col)}get tl(){return n.n2l(this.left)+this.top}get $t$l(){return`$${n.n2l(this.left)}$${this.top}`}get br(){return n.n2l(this.right)+this.bottom}get $b$r(){return`$${n.n2l(this.right)}$${this.bottom}`}get range(){return`${this._serialisedSheetName+this.tl}:${this.br}`}get $range(){return`${this._serialisedSheetName+this.$t$l}:${this.$b$r}`}get shortRange(){return this.count>1?this.range:this._serialisedSheetName+this.tl}get $shortRange(){return this.count>1?this.$range:this._serialisedSheetName+this.$t$l}get count(){return(1+this.bottom-this.top)*(1+this.right-this.left)}toString(){return this.range}intersects(e){return(!e.sheetName||!this.sheetName||e.sheetName===this.sheetName)&&(!(e.bottom<this.top)&&(!(e.top>this.bottom)&&(!(e.right<this.left)&&!(e.left>this.right))))}contains(e){const t=n.decodeEx(e);return this.containsEx(t)}containsEx(e){return(!e.sheetName||!this.sheetName||e.sheetName===this.sheetName)&&(e.row>=this.top&&e.row<=this.bottom&&e.col>=this.left&&e.col<=this.right)}forEachAddress(e){for(let t=this.left;t<=this.right;t++)for(let r=this.top;r<=this.bottom;r++)e(n.encodeAddress(r,t),r,t)}}t.exports=i},{\"../utils/col-cache\":19}],11:[function(e,t,r){\"use strict\";const n=e(\"../utils/under-dash\"),i=e(\"./enums\"),s=e(\"../utils/col-cache\"),o=e(\"./cell\");t.exports=class{constructor(e,t){this._worksheet=e,this._number=t,this._cells=[],this.style={},this.outlineLevel=0}get number(){return this._number}get worksheet(){return this._worksheet}commit(){this._worksheet._commitRow(this)}destroy(){delete this._worksheet,delete this._cells,delete this.style}findCell(e){return this._cells[e-1]}getCellEx(e){let t=this._cells[e.col-1];if(!t){const r=this._worksheet.getColumn(e.col);t=new o(this,r,e.address),this._cells[e.col-1]=t}return t}getCell(e){if(\"string\"==typeof e){const t=this._worksheet.getColumnKey(e);e=t?t.number:s.l2n(e)}return this._cells[e-1]||this.getCellEx({address:s.encodeAddress(this._number,e),row:this._number,col:e})}splice(e,t){const r=e+t;for(var n=arguments.length,i=new Array(n>2?n-2:0),s=2;s<n;s++)i[s-2]=arguments[s];const o=i.length-t,a=this._cells.length;let l,c,u;if(o<0)for(l=e+i.length;l<=a;l++)u=this._cells[l-1],c=this._cells[l-o-1],c?(u=this.getCell(l),u.value=c.value,u.style=c.style,u._comment=c._comment):u&&(u.value=null,u.style={},u._comment=void 0);else if(o>0)for(l=a;l>=r;l--)c=this._cells[l-1],c?(u=this.getCell(l+o),u.value=c.value,u.style=c.style,u._comment=c._comment):this._cells[l+o-1]=void 0;for(l=0;l<i.length;l++)u=this.getCell(e+l),u.value=i[l],u.style={},u._comment=void 0}eachCell(e,t){if(t||(t=e,e=null),e&&e.includeEmpty){const e=this._cells.length;for(let r=1;r<=e;r++)t(this.getCell(r),r)}else this._cells.forEach((e,r)=>{e&&e.type!==i.ValueType.Null&&t(e,r+1)})}addPageBreak(e,t){const r=this._worksheet,n=Math.max(0,e-1)||0,i=Math.max(0,t-1)||16838,s={id:this._number,max:i,man:1};n&&(s.min=n),r.rowBreaks.push(s)}get values(){const e=[];return this._cells.forEach(t=>{t&&t.type!==i.ValueType.Null&&(e[t.col]=t.value)}),e}set values(e){if(this._cells=[],e)if(e instanceof Array){let t=0;e.hasOwnProperty(\"0\")&&(t=1),e.forEach((e,r)=>{void 0!==e&&(this.getCellEx({address:s.encodeAddress(this._number,r+t),row:this._number,col:r+t}).value=e)})}else this._worksheet.eachColumnKey((t,r)=>{void 0!==e[r]&&(this.getCellEx({address:s.encodeAddress(this._number,t.number),row:this._number,col:t.number}).value=e[r])});else;}get hasValues(){return n.some(this._cells,e=>e&&e.type!==i.ValueType.Null)}get cellCount(){return this._cells.length}get actualCellCount(){let e=0;return this.eachCell(()=>{e++}),e}get dimensions(){let e=0,t=0;return this._cells.forEach(r=>{r&&r.type!==i.ValueType.Null&&((!e||e>r.col)&&(e=r.col),t<r.col&&(t=r.col))}),e>0?{min:e,max:t}:null}_applyStyle(e,t){return this.style[e]=t,this._cells.forEach(r=>{r&&(r[e]=t)}),t}get numFmt(){return this.style.numFmt}set numFmt(e){this._applyStyle(\"numFmt\",e)}get font(){return this.style.font}set font(e){this._applyStyle(\"font\",e)}get alignment(){return this.style.alignment}set alignment(e){this._applyStyle(\"alignment\",e)}get protection(){return this.style.protection}set protection(e){this._applyStyle(\"protection\",e)}get border(){return this.style.border}set border(e){this._applyStyle(\"border\",e)}get fill(){return this.style.fill}set fill(e){this._applyStyle(\"fill\",e)}get hidden(){return!!this._hidden}set hidden(e){this._hidden=e}get outlineLevel(){return this._outlineLevel||0}set outlineLevel(e){this._outlineLevel=e}get collapsed(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelRow)}get model(){const e=[];let t=0,r=0;return this._cells.forEach(n=>{if(n){const i=n.model;i&&((!t||t>n.col)&&(t=n.col),r<n.col&&(r=n.col),e.push(i))}}),this.height||e.length?{cells:e,number:this.number,min:t,max:r,height:this.height,style:this.style,hidden:this.hidden,outlineLevel:this.outlineLevel,collapsed:this.collapsed}:null}set model(e){if(e.number!==this._number)throw new Error(\"Invalid row number in model\");let t;this._cells=[],e.cells.forEach(e=>{switch(e.type){case o.Types.Merge:break;default:{let r;if(e.address)r=s.decodeAddress(e.address);else if(t){const{row:e}=t,n=t.col+1;r={row:e,col:n,address:s.encodeAddress(e,n),$col$row:`$${s.n2l(n)}$${e}`}}t=r;this.getCellEx(r).model=e;break}}}),e.height?this.height=e.height:delete this.height,this.hidden=e.hidden,this.outlineLevel=e.outlineLevel||0,this.style=e.style&&JSON.parse(JSON.stringify(e.style))||{}}}},{\"../utils/col-cache\":19,\"../utils/under-dash\":26,\"./cell\":3,\"./enums\":7}],12:[function(e,t,r){\"use strict\";const n=e(\"../utils/col-cache\");class i{constructor(e,t,r){this.table=e,this.column=t,this.index=r}_set(e,t){this.table.cacheState(),this.column[e]=t}get name(){return this.column.name}set name(e){this._set(\"name\",e)}get filterButton(){return this.column.filterButton}set filterButton(e){this.column.filterButton=e}get style(){return this.column.style}set style(e){this.column.style=e}get totalsRowLabel(){return this.column.totalsRowLabel}set totalsRowLabel(e){this._set(\"totalsRowLabel\",e)}get totalsRowFunction(){return this.column.totalsRowFunction}set totalsRowFunction(e){this._set(\"totalsRowFunction\",e)}get totalsRowResult(){return this.column.totalsRowResult}set totalsRowResult(e){this._set(\"totalsRowResult\",e)}get totalsRowFormula(){return this.column.totalsRowFormula}set totalsRowFormula(e){this._set(\"totalsRowFormula\",e)}}t.exports=class{constructor(e,t){this.worksheet=e,t&&(this.table=t,this.validate(),this.store())}getFormula(e){switch(e.totalsRowFunction){case\"none\":return null;case\"average\":return`SUBTOTAL(101,${this.table.name}[${e.name}])`;case\"countNums\":return`SUBTOTAL(102,${this.table.name}[${e.name}])`;case\"count\":return`SUBTOTAL(103,${this.table.name}[${e.name}])`;case\"max\":return`SUBTOTAL(104,${this.table.name}[${e.name}])`;case\"min\":return`SUBTOTAL(105,${this.table.name}[${e.name}])`;case\"stdDev\":return`SUBTOTAL(106,${this.table.name}[${e.name}])`;case\"var\":return`SUBTOTAL(107,${this.table.name}[${e.name}])`;case\"sum\":return`SUBTOTAL(109,${this.table.name}[${e.name}])`;case\"custom\":return e.totalsRowFormula;default:throw new Error(\"Invalid Totals Row Function: \"+e.totalsRowFunction)}}get width(){return this.table.columns.length}get height(){return this.table.rows.length}get filterHeight(){return this.height+(this.table.headerRow?1:0)}get tableHeight(){return this.filterHeight+(this.table.totalsRow?1:0)}validate(){const{table:e}=this,t=(e,t,r)=>{void 0===e[t]&&(e[t]=r)};t(e,\"headerRow\",!0),t(e,\"totalsRow\",!1),t(e,\"style\",{}),t(e.style,\"theme\",\"TableStyleMedium2\"),t(e.style,\"showFirstColumn\",!1),t(e.style,\"showLastColumn\",!1),t(e.style,\"showRowStripes\",!1),t(e.style,\"showColumnStripes\",!1);const r=(e,t)=>{if(!e)throw new Error(t)};r(e.ref,\"Table must have ref\"),r(e.columns,\"Table must have column definitions\"),r(e.rows,\"Table must have row definitions\"),e.tl=n.decodeAddress(e.ref);const{row:i,col:s}=e.tl;r(i>0,\"Table must be on valid row\"),r(s>0,\"Table must be on valid col\");const{width:o,filterHeight:a,tableHeight:l}=this;e.autoFilterRef=n.encode(i,s,i+a-1,s+o-1),e.tableRef=n.encode(i,s,i+l-1,s+o-1),e.columns.forEach((e,n)=>{r(e.name,`Column ${n} must have a name`),0===n?t(e,\"totalsRowLabel\",\"Total\"):(t(e,\"totalsRowFunction\",\"none\"),e.totalsRowFormula=this.getFormula(e))})}store(){const e=(e,t)=>{t&&Object.keys(t).forEach(r=>{e[r]=t[r]})},{worksheet:t,table:r}=this,{row:n,col:i}=r.tl;let s=0;if(r.headerRow){const o=t.getRow(n+s++);r.columns.forEach((t,r)=>{const{style:n,name:s}=t,a=o.getCell(i+r);a.value=s,e(a,n)})}if(r.rows.forEach(o=>{const a=t.getRow(n+s++);o.forEach((t,n)=>{const s=a.getCell(i+n);s.value=t,e(s,r.columns[n].style)})}),r.totalsRow){const o=t.getRow(n+s++);r.columns.forEach((t,r)=>{const n=o.getCell(i+r);if(0===r)n.value=t.totalsRowLabel;else{const e=this.getFormula(t);n.value=e?{formula:t.totalsRowFormula,result:t.totalsRowResult}:null}e(n,t.style)})}}load(e){const{table:t}=this,{row:r,col:n}=t.tl;let i=0;if(t.headerRow){const s=e.getRow(r+i++);t.columns.forEach((e,t)=>{s.getCell(n+t).value=e.name})}if(t.rows.forEach(t=>{const s=e.getRow(r+i++);t.forEach((e,t)=>{s.getCell(n+t).value=e})}),t.totalsRow){const s=e.getRow(r+i++);t.columns.forEach((e,t)=>{const r=s.getCell(n+t);if(0===t)r.value=e.totalsRowLabel;else{this.getFormula(e)&&(r.value={formula:e.totalsRowFormula,result:e.totalsRowResult})}})}}get model(){return this.table}set model(e){this.table=e}cacheState(){this._cache||(this._cache={ref:this.ref,width:this.width,tableHeight:this.tableHeight})}commit(){if(!this._cache)return;this.validate();const e=n.decodeAddress(this._cache.ref);if(this.ref!==this._cache.ref)for(let t=0;t<this._cache.tableHeight;t++){const r=this.worksheet.getRow(e.row+t);for(let t=0;t<this._cache.width;t++){r.getCell(e.col+t).value=null}}else{for(let t=this.tableHeight;t<this._cache.tableHeight;t++){const r=this.worksheet.getRow(e.row+t);for(let t=0;t<this._cache.width;t++){r.getCell(e.col+t).value=null}}for(let t=0;t<this.tableHeight;t++){const r=this.worksheet.getRow(e.row+t);for(let t=this.width;t<this._cache.width;t++){r.getCell(e.col+t).value=null}}}this.store()}addRow(e,t){this.cacheState(),void 0===t?this.table.rows.push(e):this.table.rows.splice(t,0,e)}removeRows(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.cacheState(),this.table.rows.splice(e,t)}getColumn(e){const t=this.table.columns[e];return new i(this,t,e)}addColumn(e,t,r){this.cacheState(),void 0===r?(this.table.columns.push(e),this.table.rows.forEach((e,r)=>{e.push(t[r])})):(this.table.columns.splice(r,0,e),this.table.rows.forEach((e,n)=>{e.splice(r,0,t[n])}))}removeColumns(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.cacheState(),this.table.columns.splice(e,t),this.table.rows.forEach(r=>{r.splice(e,t)})}_assign(e,t,r){this.cacheState(),e[t]=r}get ref(){return this.table.ref}set ref(e){this._assign(this.table,\"ref\",e)}get name(){return this.table.name}set name(e){this.table.name=e}get displayName(){return this.table.displyName||this.table.name}set displayNamename(e){this.table.displayName=e}get headerRow(){return this.table.headerRow}set headerRow(e){this._assign(this.table,\"headerRow\",e)}get totalsRow(){return this.table.totalsRow}set totalsRow(e){this._assign(this.table,\"totalsRow\",e)}get theme(){return this.table.style.name}set theme(e){this.table.style.name=e}get showFirstColumn(){return this.table.style.showFirstColumn}set showFirstColumn(e){this.table.style.showFirstColumn=e}get showLastColumn(){return this.table.style.showLastColumn}set showLastColumn(e){this.table.style.showLastColumn=e}get showRowStripes(){return this.table.style.showRowStripes}set showRowStripes(e){this.table.style.showRowStripes=e}get showColumnStripes(){return this.table.style.showColumnStripes}set showColumnStripes(e){this.table.style.showColumnStripes=e}}},{\"../utils/col-cache\":19}],13:[function(e,t,r){\"use strict\";const n=e(\"./worksheet\"),i=e(\"./defined-names\"),s=e(\"../xlsx/xlsx\"),o=e(\"../csv/csv\");t.exports=class{constructor(){this.category=\"\",this.company=\"\",this.created=new Date,this.description=\"\",this.keywords=\"\",this.manager=\"\",this.modified=this.created,this.properties={},this.calcProperties={},this._worksheets=[],this.subject=\"\",this.title=\"\",this.views=[],this.media=[],this._definedNames=new i}get xlsx(){return this._xlsx||(this._xlsx=new s(this)),this._xlsx}get csv(){return this._csv||(this._csv=new o(this)),this._csv}get nextId(){for(let e=1;e<this._worksheets.length;e++)if(!this._worksheets[e])return e;return this._worksheets.length||1}addWorksheet(e,t){const r=this.nextId;t&&(\"string\"==typeof t?(console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: \"rbg value\" } }'),t={properties:{tabColor:{argb:t}}}):(t.argb||t.theme||t.indexed)&&(console.trace(\"tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }\"),t={properties:{tabColor:t}}));const i=this._worksheets.reduce((e,t)=>(t&&t.orderNo)>e?t.orderNo:e,0),s=Object.assign({},t,{id:r,name:e,orderNo:i+1,workbook:this}),o=new n(s);return this._worksheets[r]=o,o}removeWorksheetEx(e){delete this._worksheets[e.id]}removeWorksheet(e){const t=this.getWorksheet(e);t&&t.destroy()}getWorksheet(e){return void 0===e?this._worksheets.find(Boolean):\"number\"==typeof e?this._worksheets[e]:\"string\"==typeof e?this._worksheets.find(t=>t&&t.name===e):void 0}get worksheets(){return this._worksheets.slice(1).sort((e,t)=>e.orderNo-t.orderNo).filter(Boolean)}eachSheet(e){this.worksheets.forEach(t=>{e(t,t.id)})}get definedNames(){return this._definedNames}clearThemes(){this._themes=void 0}addImage(e){const t=this.media.length;return this.media.push(Object.assign({},e,{type:\"image\"})),t}getImage(e){return this.media[e]}get model(){return{creator:this.creator||\"Unknown\",lastModifiedBy:this.lastModifiedBy||\"Unknown\",lastPrinted:this.lastPrinted,created:this.created,modified:this.modified,properties:this.properties,worksheets:this.worksheets.map(e=>e.model),sheets:this.worksheets.map(e=>e.model).filter(Boolean),definedNames:this._definedNames.model,views:this.views,company:this.company,manager:this.manager,title:this.title,subject:this.subject,keywords:this.keywords,category:this.category,description:this.description,language:this.language,revision:this.revision,contentStatus:this.contentStatus,themes:this._themes,media:this.media,calcProperties:this.calcProperties}}set model(e){this.creator=e.creator,this.lastModifiedBy=e.lastModifiedBy,this.lastPrinted=e.lastPrinted,this.created=e.created,this.modified=e.modified,this.company=e.company,this.manager=e.manager,this.title=e.title,this.subject=e.subject,this.keywords=e.keywords,this.category=e.category,this.description=e.description,this.language=e.language,this.revision=e.revision,this.contentStatus=e.contentStatus,this.properties=e.properties,this.calcProperties=e.calcProperties,this._worksheets=[],e.worksheets.forEach(t=>{const{id:r,name:i,state:s}=t,o=e.sheets&&e.sheets.findIndex(e=>e.id===r);(this._worksheets[r]=new n({id:r,name:i,orderNo:o,state:s,workbook:this})).model=t}),this._definedNames.model=e.definedNames,this.views=e.views,this._themes=e.themes,this.media=e.media||[]}}},{\"../csv/csv\":1,\"../xlsx/xlsx\":144,\"./defined-names\":6,\"./worksheet\":14}],14:[function(e,t,r){\"use strict\";const n=e(\"../utils/under-dash\"),i=e(\"../utils/col-cache\"),s=e(\"./range\"),o=e(\"./row\"),a=e(\"./column\"),l=e(\"./enums\"),c=e(\"./image\"),u=e(\"./table\"),h=e(\"./data-validations\"),f=e(\"../utils/encryptor\"),{copyStyle:d}=e(\"../utils/copy-style\");t.exports=class{constructor(e){e=e||{},this._workbook=e.workbook,this.id=e.id,this.orderNo=e.orderNo,this.name=e.name,this.state=e.state||\"visible\",this._rows=[],this._columns=null,this._keys={},this._merges={},this.rowBreaks=[],this.properties=Object.assign({},{defaultRowHeight:15,dyDescent:55,outlineLevelCol:0,outlineLevelRow:0},e.properties),this.pageSetup=Object.assign({},{margins:{left:.7,right:.7,top:.75,bottom:.75,header:.3,footer:.3},orientation:\"portrait\",horizontalDpi:4294967295,verticalDpi:4294967295,fitToPage:!(!e.pageSetup||!e.pageSetup.fitToWidth&&!e.pageSetup.fitToHeight||e.pageSetup.scale),pageOrder:\"downThenOver\",blackAndWhite:!1,draft:!1,cellComments:\"None\",errors:\"displayed\",scale:100,fitToWidth:1,fitToHeight:1,paperSize:void 0,showRowColHeaders:!1,showGridLines:!1,firstPageNumber:void 0,horizontalCentered:!1,verticalCentered:!1,rowBreaks:null,colBreaks:null},e.pageSetup),this.headerFooter=Object.assign({},{differentFirst:!1,differentOddEven:!1,oddHeader:null,oddFooter:null,evenHeader:null,evenFooter:null,firstHeader:null,firstFooter:null},e.headerFooter),this.dataValidations=new h,this.views=e.views||[],this.autoFilter=e.autoFilter||null,this._media=[],this.sheetProtection=null,this.tables={},this.conditionalFormattings=[]}get name(){return this._name}set name(e){if(void 0===e&&(e=\"sheet\"+this.id),this._name!==e){if(\"string\"!=typeof e)throw new Error(\"The name has to be a string.\");if(\"\"===e)throw new Error(\"The name can't be empty.\");if(\"History\"===e)throw new Error('The name \"History\" is protected. Please use a different name.');if(/[*?:/\\\\[\\]]/.test(e))throw new Error(`Worksheet name ${e} cannot include any of the following characters: * ? : \\\\ / [ ]`);if(/(^')|('$)/.test(e))throw new Error(\"The first or last character of worksheet name cannot be a single quotation mark: \"+e);if(e&&e.length>31&&(console.warn(`Worksheet name ${e} exceeds 31 chars. This will be truncated`),e=e.substring(0,31)),this._workbook._worksheets.find(t=>t&&t.name.toLowerCase()===e.toLowerCase()))throw new Error(\"Worksheet name already exists: \"+e);this._name=e}}get workbook(){return this._workbook}destroy(){this._workbook.removeWorksheetEx(this)}get dimensions(){const e=new s;return this._rows.forEach(t=>{if(t){const r=t.dimensions;r&&e.expand(t.number,r.min,t.number,r.max)}}),e}get columns(){return this._columns}set columns(e){this._headerRowCount=e.reduce((e,t)=>{const r=(t.header?1:t.headers&&t.headers.length)||0;return Math.max(e,r)},0);let t=1;const r=this._columns=[];e.forEach(e=>{const n=new a(this,t++,!1);r.push(n),n.defn=e})}getColumnKey(e){return this._keys[e]}setColumnKey(e,t){this._keys[e]=t}deleteColumnKey(e){delete this._keys[e]}eachColumnKey(e){n.each(this._keys,e)}getColumn(e){if(\"string\"==typeof e){const t=this._keys[e];if(t)return t;e=i.l2n(e)}if(this._columns||(this._columns=[]),e>this._columns.length){let t=this._columns.length+1;for(;t<=e;)this._columns.push(new a(this,t++))}return this._columns[e-1]}spliceColumns(e,t){const r=this._rows.length;for(var n=arguments.length,i=new Array(n>2?n-2:0),s=2;s<n;s++)i[s-2]=arguments[s];if(i.length>0)for(let n=0;n<r;n++){const r=[e,t];i.forEach(e=>{r.push(e[n]||null)});const s=this.getRow(n+1);s.splice.apply(s,r)}else this._rows.forEach(r=>{r&&r.splice(e,t)});const o=i.length-t,a=e+t,l=this._columns.length;if(o<0)for(let t=e+i.length;t<=l;t++)this.getColumn(t).defn=this.getColumn(t-o).defn;else if(o>0)for(let e=l;e>=a;e--)this.getColumn(e+o).defn=this.getColumn(e).defn;for(let t=e;t<e+i.length;t++)this.getColumn(t).defn=null;this.workbook.definedNames.spliceColumns(this.name,e,t,i.length)}get lastColumn(){return this.getColumn(this.columnCount)}get columnCount(){let e=0;return this.eachRow(t=>{e=Math.max(e,t.cellCount)}),e}get actualColumnCount(){const e=[];let t=0;return this.eachRow(r=>{r.eachCell(r=>{let{col:n}=r;e[n]||(e[n]=!0,t++)})}),t}_commitRow(){}get _lastRowNumber(){const e=this._rows;let t=e.length;for(;t>0&&void 0===e[t-1];)t--;return t}get _nextRow(){return this._lastRowNumber+1}get lastRow(){if(this._rows.length)return this._rows[this._rows.length-1]}findRow(e){return this._rows[e-1]}findRows(e,t){return this._rows.slice(e-1,e-1+t)}get rowCount(){return this._lastRowNumber}get actualRowCount(){let e=0;return this.eachRow(()=>{e++}),e}getRow(e){let t=this._rows[e-1];return t||(t=this._rows[e-1]=new o(this,e)),t}getRows(e,t){if(t<1)return;const r=[];for(let n=e;n<e+t;n++)r.push(this.getRow(n));return r}addRow(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"n\";const r=this._nextRow,n=this.getRow(r);return n.values=e,this._setStyleOption(r,\"i\"===t[0]?t:\"n\"),n}addRows(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"n\";const r=[];return e.forEach(e=>{r.push(this.addRow(e,t))}),r}insertRow(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"n\";return this.spliceRows(e,0,t),this._setStyleOption(e,r),this.getRow(e)}insertRows(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"n\";if(this.spliceRows(e,0,...t),\"n\"!==r)for(let n=0;n<t.length;n++)\"o\"===r[0]&&void 0!==this.findRow(t.length+e+n)?this._copyStyle(t.length+e+n,e+n,\"+\"===r[1]):\"i\"===r[0]&&void 0!==this.findRow(e-1)&&this._copyStyle(e-1,e+n,\"+\"===r[1]);return this.getRows(e,t.length)}_setStyleOption(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"n\";\"o\"===t[0]&&void 0!==this.findRow(e+1)?this._copyStyle(e+1,e,\"+\"===t[1]):\"i\"===t[0]&&void 0!==this.findRow(e-1)&&this._copyStyle(e-1,e,\"+\"===t[1])}_copyStyle(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this.getRow(e),i=this.getRow(t);i.style=d(n.style),n.eachCell({includeEmpty:r},(e,t)=>{i.getCell(t).style=d(e.style)}),i.height=n.height}duplicateRow(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this._rows[e-1],i=new Array(t).fill(n.values);this.spliceRows(e+1,r?0:t,...i);for(let r=0;r<t;r++){const t=this._rows[e+r];t.style=n.style,t.height=n.height,n.eachCell({includeEmpty:!0},(e,r)=>{t.getCell(r).style=e.style})}}spliceRows(e,t){const r=e+t;for(var n=arguments.length,i=new Array(n>2?n-2:0),s=2;s<n;s++)i[s-2]=arguments[s];const o=i.length,a=o-t,l=this._rows.length;let c,u;if(a<0)for(e===l&&(this._rows[l-1]=void 0),c=r;c<=l;c++)if(u=this._rows[c-1],u){const e=this.getRow(c+a);e.values=u.values,e.style=u.style,e.height=u.height,u.eachCell({includeEmpty:!0},(t,r)=>{e.getCell(r).style=t.style}),this._rows[c-1]=void 0}else this._rows[c+a-1]=void 0;else if(a>0)for(c=l;c>=r;c--)if(u=this._rows[c-1],u){const e=this.getRow(c+a);e.values=u.values,e.style=u.style,e.height=u.height,u.eachCell({includeEmpty:!0},(t,r)=>{if(e.getCell(r).style=t.style,\"MergeValue\"===t._value.constructor.name){const e=this.getRow(t._row._number+o).getCell(r),n=t._value._master,i=this.getRow(n._row._number+o).getCell(n._column._number);e.merge(i)}})}else this._rows[c+a-1]=void 0;for(c=0;c<o;c++){const t=this.getRow(e+c);t.style={},t.values=i[c]}this.workbook.definedNames.spliceRows(this.name,e,t,o)}eachRow(e,t){if(t||(t=e,e=void 0),e&&e.includeEmpty){const e=this._rows.length;for(let r=1;r<=e;r++)t(this.getRow(r),r)}else this._rows.forEach(e=>{e&&e.hasValues&&t(e,e.number)})}getSheetValues(){const e=[];return this._rows.forEach(t=>{t&&(e[t.number]=t.values)}),e}findCell(e,t){const r=i.getAddress(e,t),n=this._rows[r.row-1];return n?n.findCell(r.col):void 0}getCell(e,t){const r=i.getAddress(e,t);return this.getRow(r.row).getCellEx(r)}mergeCells(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];const n=new s(t);this._mergeCellsInternal(n)}mergeCellsWithoutStyle(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];const n=new s(t);this._mergeCellsInternal(n,!0)}_mergeCellsInternal(e,t){n.each(this._merges,t=>{if(t.intersects(e))throw new Error(\"Cannot merge already merged cells\")});const r=this.getCell(e.top,e.left);for(let n=e.top;n<=e.bottom;n++)for(let i=e.left;i<=e.right;i++)(n>e.top||i>e.left)&&this.getCell(n,i).merge(r,t);this._merges[r.address]=e}_unMergeMaster(e){const t=this._merges[e.address];if(t){for(let e=t.top;e<=t.bottom;e++)for(let r=t.left;r<=t.right;r++)this.getCell(e,r).unmerge();delete this._merges[e.address]}}get hasMerges(){return n.some(this._merges,Boolean)}unMergeCells(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];const n=new s(t);for(let e=n.top;e<=n.bottom;e++)for(let t=n.left;t<=n.right;t++){const r=this.findCell(e,t);r&&(r.type===l.ValueType.Merge?this._unMergeMaster(r.master):this._merges[r.address]&&this._unMergeMaster(r))}}fillFormula(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"shared\";const s=i.decode(e),{top:o,left:a,bottom:l,right:c}=s,u=c-a+1,h=i.encodeAddress(o,a),f=\"shared\"===n;let d;d=\"function\"==typeof r?r:Array.isArray(r)?Array.isArray(r[0])?(e,t)=>r[e-o][t-a]:(e,t)=>r[(e-o)*u+(t-a)]:()=>{};let p=!0;for(let r=o;r<=l;r++)for(let i=a;i<=c;i++)p?(this.getCell(r,i).value={shareType:n,formula:t,ref:e,result:d(r,i)},p=!1):this.getCell(r,i).value=f?{sharedFormula:h,result:d(r,i)}:d(r,i)}addImage(e,t){const r={type:\"image\",imageId:e,range:t};this._media.push(new c(this,r))}getImages(){return this._media.filter(e=>\"image\"===e.type)}addBackgroundImage(e){const t={type:\"background\",imageId:e};this._media.push(new c(this,t))}getBackgroundImageId(){const e=this._media.find(e=>\"background\"===e.type);return e&&e.imageId}protect(e,t){return new Promise(r=>{this.sheetProtection={sheet:!0},t&&\"spinCount\"in t&&(t.spinCount=Number.isFinite(t.spinCount)?Math.round(Math.max(0,t.spinCount)):1e5),e&&(this.sheetProtection.algorithmName=\"SHA-512\",this.sheetProtection.saltValue=f.randomBytes(16).toString(\"base64\"),this.sheetProtection.spinCount=t&&\"spinCount\"in t?t.spinCount:1e5,this.sheetProtection.hashValue=f.convertPasswordToHash(e,\"SHA512\",this.sheetProtection.saltValue,this.sheetProtection.spinCount)),t&&(this.sheetProtection=Object.assign(this.sheetProtection,t),!e&&\"spinCount\"in t&&delete this.sheetProtection.spinCount),r()})}unprotect(){this.sheetProtection=null}addTable(e){const t=new u(this,e);return this.tables[e.name]=t,t}getTable(e){return this.tables[e]}removeTable(e){delete this.tables[e]}getTables(){return Object.values(this.tables)}addConditionalFormatting(e){this.conditionalFormattings.push(e)}removeConditionalFormatting(e){\"number\"==typeof e?this.conditionalFormattings.splice(e,1):this.conditionalFormattings=e instanceof Function?this.conditionalFormattings.filter(e):[]}get tabColor(){return console.trace(\"worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor\"),this.properties.tabColor}set tabColor(e){console.trace(\"worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor\"),this.properties.tabColor=e}get model(){const e={id:this.id,name:this.name,dataValidations:this.dataValidations.model,properties:this.properties,state:this.state,pageSetup:this.pageSetup,headerFooter:this.headerFooter,rowBreaks:this.rowBreaks,views:this.views,autoFilter:this.autoFilter,media:this._media.map(e=>e.model),sheetProtection:this.sheetProtection,tables:Object.values(this.tables).map(e=>e.model),conditionalFormattings:this.conditionalFormattings};e.cols=a.toModel(this.columns);const t=e.rows=[],r=e.dimensions=new s;return this._rows.forEach(e=>{const n=e&&e.model;n&&(r.expand(n.number,n.min,n.number,n.max),t.push(n))}),e.merges=[],n.each(this._merges,t=>{e.merges.push(t.range)}),e}_parseRows(e){this._rows=[],e.rows.forEach(e=>{const t=new o(this,e.number);this._rows[t.number-1]=t,t.model=e})}_parseMergeCells(e){n.each(e.mergeCells,e=>{this.mergeCellsWithoutStyle(e)})}set model(e){this.name=e.name,this._columns=a.fromModel(this,e.cols),this._parseRows(e),this._parseMergeCells(e),this.dataValidations=new h(e.dataValidations),this.properties=e.properties,this.pageSetup=e.pageSetup,this.headerFooter=e.headerFooter,this.views=e.views,this.autoFilter=e.autoFilter,this._media=e.media.map(e=>new c(this,e)),this.sheetProtection=e.sheetProtection,this.tables=e.tables.reduce((e,t)=>{const r=new u;return r.model=t,e[t.name]=r,e},{}),this.conditionalFormattings=e.conditionalFormattings}}},{\"../utils/col-cache\":19,\"../utils/copy-style\":20,\"../utils/encryptor\":21,\"../utils/under-dash\":26,\"./column\":4,\"./data-validations\":5,\"./enums\":7,\"./image\":8,\"./range\":10,\"./row\":11,\"./table\":12}],15:[function(e,t,r){\"use strict\";e(\"core-js/modules/es.promise\"),e(\"core-js/modules/es.promise.finally\"),e(\"core-js/modules/es.object.assign\"),e(\"core-js/modules/es.object.keys\"),e(\"core-js/modules/es.object.values\"),e(\"core-js/modules/es.symbol\"),e(\"core-js/modules/es.symbol.async-iterator\"),e(\"core-js/modules/es.array.iterator\"),e(\"core-js/modules/es.array.includes\"),e(\"core-js/modules/es.array.find-index\"),e(\"core-js/modules/es.array.find\"),e(\"core-js/modules/es.string.from-code-point\"),e(\"core-js/modules/es.string.includes\"),e(\"core-js/modules/es.number.is-nan\"),e(\"regenerator-runtime/runtime\");const n={Workbook:e(\"./doc/workbook\")},i=e(\"./doc/enums\");Object.keys(i).forEach(e=>{n[e]=i[e]}),t.exports=n},{\"./doc/enums\":7,\"./doc/workbook\":13,\"core-js/modules/es.array.find\":359,\"core-js/modules/es.array.find-index\":358,\"core-js/modules/es.array.includes\":360,\"core-js/modules/es.array.iterator\":361,\"core-js/modules/es.number.is-nan\":363,\"core-js/modules/es.object.assign\":364,\"core-js/modules/es.object.keys\":366,\"core-js/modules/es.object.values\":367,\"core-js/modules/es.promise\":372,\"core-js/modules/es.promise.finally\":371,\"core-js/modules/es.string.from-code-point\":376,\"core-js/modules/es.string.includes\":377,\"core-js/modules/es.symbol\":381,\"core-js/modules/es.symbol.async-iterator\":378,\"regenerator-runtime/runtime\":492}],16:[function(e,t,r){\"use strict\";const n=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf-8\");r.bufferToString=function(e){return\"string\"==typeof e?e:n?n.decode(e):e.toString()}},{}],17:[function(e,t,r){\"use strict\";const n=\"undefined\"==typeof TextEncoder?null:new TextEncoder(\"utf-8\"),{Buffer:i}=e(\"buffer\");r.stringToBuffer=function(e){return\"string\"!=typeof e?e:n?i.from(n.encode(e).buffer):i.from(e)}},{buffer:220}],18:[function(e,t,r){\"use strict\";const n=e(\"./under-dash\"),i=e(\"./col-cache\");t.exports=class{constructor(e){this.template=e,this.sheets={}}addCell(e){this.addCellEx(i.decodeEx(e))}getCell(e){return this.findCellEx(i.decodeEx(e),!0)}findCell(e){return this.findCellEx(i.decodeEx(e),!1)}findCellAt(e,t,r){const n=this.sheets[e],i=n&&n[t];return i&&i[r]}addCellEx(e){if(e.top)for(let t=e.top;t<=e.bottom;t++)for(let r=e.left;r<=e.right;r++)this.getCellAt(e.sheetName,t,r);else this.findCellEx(e,!0)}getCellEx(e){return this.findCellEx(e,!0)}findCellEx(e,t){const r=this.findSheet(e,t),n=this.findSheetRow(r,e,t);return this.findRowCell(n,e,t)}getCellAt(e,t,r){const n=this.sheets[e]||(this.sheets[e]=[]),s=n[t]||(n[t]=[]);return s[r]||(s[r]={sheetName:e,address:i.n2l(r)+t,row:t,col:r})}removeCellEx(e){const t=this.findSheet(e);if(!t)return;const r=this.findSheetRow(t,e);r&&delete r[e.col]}forEachInSheet(e,t){const r=this.sheets[e];r&&r.forEach((e,r)=>{e&&e.forEach((e,n)=>{e&&t(e,r,n)})})}forEach(e){n.each(this.sheets,(t,r)=>{this.forEachInSheet(r,e)})}map(e){const t=[];return this.forEach(r=>{t.push(e(r))}),t}findSheet(e,t){const r=e.sheetName;return this.sheets[r]?this.sheets[r]:t?this.sheets[r]=[]:void 0}findSheetRow(e,t,r){const{row:n}=t;return e&&e[n]?e[n]:r?e[n]=[]:void 0}findRowCell(e,t,r){const{col:n}=t;return e&&e[n]?e[n]:r?e[n]=this.template?Object.assign(t,JSON.parse(JSON.stringify(this.template))):t:void 0}spliceRows(e,t,r,n){const i=this.sheets[e];if(i){const e=[];for(let t=0;t<n;t++)e.push([]);i.splice(t,r,...e)}}spliceColumns(e,t,r,i){const s=this.sheets[e];if(s){const e=[];for(let t=0;t<i;t++)e.push(null);n.each(s,n=>{n.splice(t,r,...e)})}}}},{\"./col-cache\":19,\"./under-dash\":26}],19:[function(e,t,r){\"use strict\";const n=/^[A-Z]+\\d+$/,i={_dictionary:[\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\"],_l2nFill:0,_l2n:{},_n2l:[],_level:e=>e<=26?1:e<=676?2:3,_fill(e){let t,r,n,i,s,o=1;if(e>=4)throw new Error(\"Out of bounds. Excel supports columns from 1 to 16384\");if(this._l2nFill<1&&e>=1){for(;o<=26;)t=this._dictionary[o-1],this._n2l[o]=t,this._l2n[t]=o,o++;this._l2nFill=1}if(this._l2nFill<2&&e>=2){for(o=27;o<=702;)r=o-27,n=r%26,i=Math.floor(r/26),t=this._dictionary[i]+this._dictionary[n],this._n2l[o]=t,this._l2n[t]=o,o++;this._l2nFill=2}if(this._l2nFill<3&&e>=3){for(o=703;o<=16384;)r=o-703,n=r%26,i=Math.floor(r/26)%26,s=Math.floor(r/676),t=this._dictionary[s]+this._dictionary[i]+this._dictionary[n],this._n2l[o]=t,this._l2n[t]=o,o++;this._l2nFill=3}},l2n(e){if(this._l2n[e]||this._fill(e.length),!this._l2n[e])throw new Error(\"Out of bounds. Invalid column letter: \"+e);return this._l2n[e]},n2l(e){if(e<1||e>16384)throw new Error(e+\" is out of bounds. Excel supports columns from 1 to 16384\");return this._n2l[e]||this._fill(this._level(e)),this._n2l[e]},_hash:{},validateAddress(e){if(!n.test(e))throw new Error(\"Invalid Address: \"+e);return!0},decodeAddress(e){const t=e.length<5&&this._hash[e];if(t)return t;let r=!1,n=\"\",i=0,s=!1,o=\"\",a=0;for(let t,l=0;l<e.length;l++)if(t=e.charCodeAt(l),!s&&t>=65&&t<=90)r=!0,n+=e[l],i=26*i+t-64;else if(t>=48&&t<=57)s=!0,o+=e[l],a=10*a+t-48;else if(s&&r&&36!==t)break;if(r){if(i>16384)throw new Error(\"Out of bounds. Invalid column letter: \"+n)}else i=void 0;s||(a=void 0);const l={address:e=n+o,col:i,row:a,$col$row:`$${n}$${o}`};return i<=100&&a<=100&&(this._hash[e]=l,this._hash[l.$col$row]=l),l},getAddress(e,t){if(t){const r=this.n2l(t)+e;return this.decodeAddress(r)}return this.decodeAddress(e)},decode(e){const t=e.split(\":\");if(2===t.length){const e=this.decodeAddress(t[0]),r=this.decodeAddress(t[1]),n={top:Math.min(e.row,r.row),left:Math.min(e.col,r.col),bottom:Math.max(e.row,r.row),right:Math.max(e.col,r.col)};return n.tl=this.n2l(n.left)+n.top,n.br=this.n2l(n.right)+n.bottom,n.dimensions=`${n.tl}:${n.br}`,n}return this.decodeAddress(e)},decodeEx(e){const t=e.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/),r=t[1]||t[2],n=t[3],i=n.split(\":\");if(i.length>1){let e=this.decodeAddress(i[0]),t=this.decodeAddress(i[1]);const n=Math.min(e.row,t.row),s=Math.min(e.col,t.col),o=Math.max(e.row,t.row),a=Math.max(e.col,t.col);return e=this.n2l(s)+n,t=this.n2l(a)+o,{top:n,left:s,bottom:o,right:a,sheetName:r,tl:{address:e,col:s,row:n,$col$row:`$${this.n2l(s)}$${n}`,sheetName:r},br:{address:t,col:a,row:o,$col$row:`$${this.n2l(a)}$${o}`,sheetName:r},dimensions:`${e}:${t}`}}if(n.startsWith(\"#\"))return r?{sheetName:r,error:n}:{error:n};const s=this.decodeAddress(n);return r?{sheetName:r,...s}:s},encodeAddress:(e,t)=>i.n2l(t)+e,encode(){switch(arguments.length){case 2:return i.encodeAddress(arguments[0],arguments[1]);case 4:return`${i.encodeAddress(arguments[0],arguments[1])}:${i.encodeAddress(arguments[2],arguments[3])}`;default:throw new Error(\"Can only encode with 2 or 4 arguments\")}},inRange(e,t){const[r,n,,i,s]=e,[o,a]=t;return o>=r&&o<=i&&a>=n&&a<=s}};t.exports=i},{}],20:[function(e,t,r){\"use strict\";const n=(e,t)=>({...e,...t.reduce((t,r)=>(e[r]&&(t[r]={...e[r]}),t),{})}),i=function(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];e[r]&&(t[r]=n(e[r],i))};r.copyStyle=e=>{if(!e)return e;if(t=e,0===Object.keys(t).length)return{};var t;const r={...e};return i(e,r,\"font\",[\"color\"]),i(e,r,\"alignment\"),i(e,r,\"protection\"),e.border&&(i(e,r,\"border\"),i(e.border,r.border,\"top\",[\"color\"]),i(e.border,r.border,\"left\",[\"color\"]),i(e.border,r.border,\"bottom\",[\"color\"]),i(e.border,r.border,\"right\",[\"color\"]),i(e.border,r.border,\"diagonal\",[\"color\"])),e.fill&&(i(e,r,\"fill\",[\"fgColor\",\"bgColor\",\"center\"]),e.fill.stops&&(r.fill.stops=e.fill.stops.map(e=>n(e,[\"color\"])))),r}},{}],21:[function(e,t,r){(function(r){(function(){\"use strict\";const n=e(\"crypto\"),i={hash(e){const t=n.createHash(e);for(var i=arguments.length,s=new Array(i>1?i-1:0),o=1;o<i;o++)s[o-1]=arguments[o];return t.update(r.concat(s)),t.digest()},convertPasswordToHash(e,t,i,s){t=t.toLowerCase();if(n.getHashes().indexOf(t)<0)throw new Error(`Hash algorithm '${t}' not supported!`);const o=r.from(e,\"utf16le\");let a=this.hash(t,r.from(i,\"base64\"),o);for(let e=0;e<s;e++){const n=r.alloc(4);n.writeUInt32LE(e,0),a=this.hash(t,a,n)}return a.toString(\"base64\")},randomBytes:e=>n.randomBytes(e)};t.exports=i}).call(this)}).call(this,e(\"buffer\").Buffer)},{buffer:220,crypto:390}],22:[function(e,t,r){\"use strict\";const{SaxesParser:n}=e(\"saxes\"),{PassThrough:i}=e(\"readable-stream\"),{bufferToString:s}=e(\"./browser-buffer-decode\");t.exports=async function*(e){e.pipe&&!e[Symbol.asyncIterator]&&(e=e.pipe(new i));const t=new n;let r;t.on(\"error\",e=>{r=e});let o=[];t.on(\"opentag\",e=>o.push({eventType:\"opentag\",value:e})),t.on(\"text\",e=>o.push({eventType:\"text\",value:e})),t.on(\"closetag\",e=>o.push({eventType:\"closetag\",value:e}));for await(const n of e){if(t.write(s(n)),r)throw r;yield o,o=[]}}},{\"./browser-buffer-decode\":16,\"readable-stream\":491,saxes:496}],23:[function(e,t,r){\"use strict\";const n=e(\"./col-cache\"),i=/(([a-z_\\-0-9]*)!)?([a-z0-9_$]{2,})([(])?/gi,s=/^([$])?([a-z]+)([$])?([1-9][0-9]*)$/i;t.exports={slideFormula:function(e,t,r){const o=n.decode(t),a=n.decode(r);return e.replace(i,(e,t,r,i,l)=>{if(l)return e;const c=s.exec(i);if(c){const r=c[1],i=c[2].toUpperCase(),s=c[3],l=c[4];if(i.length>3||3===i.length&&i>\"XFD\")return e;let u=n.l2n(i),h=parseInt(l,10);r||(u+=a.col-o.col),s||(h+=a.row-o.row);return(t||\"\")+(r||\"\")+n.n2l(u)+(s||\"\")+h}return e})}}},{\"./col-cache\":19}],24:[function(e,t,r){(function(r,n){(function(){\"use strict\";const i=e(\"readable-stream\"),s=e(\"./utils\"),o=e(\"./string-buf\");class a{constructor(e,t){this._data=e,this._encoding=t}get length(){return this.toBuffer().length}copy(e,t,r,n){return this.toBuffer().copy(e,t,r,n)}toBuffer(){return this._buffer||(this._buffer=n.from(this._data,this._encoding)),this._buffer}}class l{constructor(e){this._data=e}get length(){return this._data.length}copy(e,t,r,n){return this._data._buf.copy(e,t,r,n)}toBuffer(){return this._data.toBuffer()}}class c{constructor(e){this._data=e}get length(){return this._data.length}copy(e,t,r,n){this._data.copy(e,t,r,n)}toBuffer(){return this._data}}class u{constructor(e){this.size=e,this.buffer=n.alloc(e),this.iRead=0,this.iWrite=0}toBuffer(){if(0===this.iRead&&this.iWrite===this.size)return this.buffer;const e=n.alloc(this.iWrite-this.iRead);return this.buffer.copy(e,0,this.iRead,this.iWrite),e}get length(){return this.iWrite-this.iRead}get eod(){return this.iRead===this.iWrite}get full(){return this.iWrite===this.size}read(e){let t;return 0===e?null:void 0===e||e>=this.length?(t=this.toBuffer(),this.iRead=this.iWrite,t):(t=n.alloc(e),this.buffer.copy(t,0,this.iRead,e),this.iRead+=e,t)}write(e,t,r){const n=Math.min(r,this.size-this.iWrite);return e.copy(this.buffer,this.iWrite,t,t+n),this.iWrite+=n,n}}const h=function(e){e=e||{},this.bufSize=e.bufSize||1048576,this.buffers=[],this.batch=e.batch||!1,this.corked=!1,this.inPos=0,this.outPos=0,this.pipes=[],this.paused=!1,this.encoding=null};s.inherits(h,i.Duplex,{toBuffer(){switch(this.buffers.length){case 0:return null;case 1:return this.buffers[0].toBuffer();default:return n.concat(this.buffers.map(e=>e.toBuffer()))}},_getWritableBuffer(){if(this.buffers.length){const e=this.buffers[this.buffers.length-1];if(!e.full)return e}const e=new u(this.bufSize);return this.buffers.push(e),e},async _pipe(e){await Promise.all(this.pipes.map((function(t){return new Promise(r=>{t.write(e.toBuffer(),()=>{r()})})})))},_writeToBuffers(e){let t=0;const r=e.length;for(;t<r;){t+=this._getWritableBuffer().write(e,t,r-t)}},async write(e,t,i){let u;if(t instanceof Function&&(i=t,t=\"utf8\"),i=i||s.nop,e instanceof o)u=new l(e);else if(e instanceof n)u=new c(e);else{if(!(\"string\"==typeof e||e instanceof String||e instanceof ArrayBuffer))throw new Error(\"Chunk must be one of type String, Buffer or StringBuf.\");u=new a(e,t)}if(this.pipes.length)if(this.batch)for(this._writeToBuffers(u);!this.corked&&this.buffers.length>1;)this._pipe(this.buffers.shift());else this.corked?(this._writeToBuffers(u),r.nextTick(i)):(await this._pipe(u),i());else this.paused||this.emit(\"data\",u.toBuffer()),this._writeToBuffers(u),this.emit(\"readable\");return!0},cork(){this.corked=!0},_flush(){if(this.pipes.length)for(;this.buffers.length;)this._pipe(this.buffers.shift())},uncork(){this.corked=!1,this._flush()},end(e,t,r){const n=e=>{e?r(e):(this._flush(),this.pipes.forEach(e=>{e.end()}),this.emit(\"finish\"))};e?this.write(e,t,n):n()},read(e){let t;if(e){for(t=[];e&&this.buffers.length&&!this.buffers[0].eod;){const r=this.buffers[0],n=r.read(e);e-=n.length,t.push(n),r.eod&&r.full&&this.buffers.shift()}return n.concat(t)}return t=this.buffers.map(e=>e.toBuffer()).filter(Boolean),this.buffers=[],n.concat(t)},setEncoding(e){this.encoding=e},pause(){this.paused=!0},resume(){this.paused=!1},isPaused(){return!!this.paused},pipe(e){this.pipes.push(e),!this.paused&&this.buffers.length&&this.end()},unpipe(e){this.pipes=this.pipes.filter(t=>t!==e)},unshift(){throw new Error(\"Not Implemented\")},wrap(){throw new Error(\"Not Implemented\")}}),t.exports=h}).call(this)}).call(this,e(\"_process\"),e(\"buffer\").Buffer)},{\"./string-buf\":25,\"./utils\":27,_process:467,buffer:220,\"readable-stream\":491}],25:[function(e,t,r){(function(e){(function(){\"use strict\";t.exports=class{constructor(t){this._buf=e.alloc(t&&t.size||16384),this._encoding=t&&t.encoding||\"utf8\",this._inPos=0,this._buffer=void 0}get length(){return this._inPos}get capacity(){return this._buf.length}get buffer(){return this._buf}toBuffer(){return this._buffer||(this._buffer=e.alloc(this.length),this._buf.copy(this._buffer,0,0,this.length)),this._buffer}reset(e){e=e||0,this._buffer=void 0,this._inPos=e}_grow(t){let r=2*this._buf.length;for(;r<t;)r*=2;const n=e.alloc(r);this._buf.copy(n,0),this._buf=n}addText(e){this._buffer=void 0;let t=this._inPos+this._buf.write(e,this._inPos,this._encoding);for(;t>=this._buf.length-4;)this._grow(this._inPos+e.length),t=this._inPos+this._buf.write(e,this._inPos,this._encoding);this._inPos=t}addStringBuf(e){e.length&&(this._buffer=void 0,this.length+e.length>this.capacity&&this._grow(this.length+e.length),e._buf.copy(this._buf,this._inPos,0,e.length),this._inPos+=e.length)}}}).call(this)}).call(this,e(\"buffer\").Buffer)},{buffer:220}],26:[function(e,t,r){\"use strict\";const{toString:n}=Object.prototype,i=/[\"&<>]/,s={each:function(e,t){e&&(Array.isArray(e)?e.forEach(t):Object.keys(e).forEach(r=>{t(e[r],r)}))},some:function(e,t){return!!e&&(Array.isArray(e)?e.some(t):Object.keys(e).some(r=>t(e[r],r)))},every:function(e,t){return!e||(Array.isArray(e)?e.every(t):Object.keys(e).every(r=>t(e[r],r)))},map:function(e,t){return e?Array.isArray(e)?e.map(t):Object.keys(e).map(r=>t(e[r],r)):[]},keyBy:(e,t)=>e.reduce((e,r)=>(e[r[t]]=r,e),{}),isEqual:function(e,t){const r=typeof e,n=typeof t,i=Array.isArray(e),o=Array.isArray(t);let a;if(r!==n)return!1;switch(typeof e){case\"object\":if(i||o)return!(!i||!o)&&(e.length===t.length&&e.every((e,r)=>{const n=t[r];return s.isEqual(e,n)}));if(null===e||null===t)return e===t;if(a=Object.keys(e),Object.keys(t).length!==a.length)return!1;for(const e of a)if(!t.hasOwnProperty(e))return!1;return s.every(e,(e,r)=>{const n=t[r];return s.isEqual(e,n)});default:return e===t}},escapeHtml(e){const t=i.exec(e);if(!t)return e;let r=\"\",n=\"\",s=0,o=t.index;for(;o<e.length;o++){switch(e.charAt(o)){case'\"':n=\""\";break;case\"&\":n=\"&\";break;case\"'\":n=\"'\";break;case\"<\":n=\"<\";break;case\">\":n=\">\";break;default:continue}s!==o&&(r+=e.substring(s,o)),s=o+1,r+=n}return s!==o?r+e.substring(s,o):r},strcmp:(e,t)=>e<t?-1:e>t?1:0,isUndefined:e=>\"[object Undefined]\"===n.call(e),isObject:e=>\"[object Object]\"===n.call(e),deepMerge(){const e=arguments[0]||{},{length:t}=arguments;let r,n,i;function o(t,o){r=e[o],i=Array.isArray(t),s.isObject(t)||i?(i?(i=!1,n=r&&Array.isArray(r)?r:[]):n=r&&s.isObject(r)?r:{},e[o]=s.deepMerge(n,t)):s.isUndefined(t)||(e[o]=t)}for(let e=0;e<t;e++)s.each(arguments[e],o);return e}};t.exports=s},{}],27:[function(e,t,r){(function(r,n){(function(){\"use strict\";const i=e(\"fs\"),s=/[<>&'\"\\x7F\\x00-\\x08\\x0B-\\x0C\\x0E-\\x1F]/,o={nop(){},promiseImmediate:e=>new Promise(t=>{r.setImmediate?n(()=>{t(e)}):setTimeout(()=>{t(e)},1)}),inherits:function(e,t,r,n){e.super_=t,n||(n=r,r=null),r&&Object.keys(r).forEach(t=>{Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))});const i={constructor:{value:e,enumerable:!1,writable:!1,configurable:!0}};n&&Object.keys(n).forEach(e=>{i[e]=Object.getOwnPropertyDescriptor(n,e)}),e.prototype=Object.create(t.prototype,i)},dateToExcel:(e,t)=>25569+e.getTime()/864e5-(t?1462:0),excelToDate(e,t){const r=Math.round(24*(e-25569+(t?1462:0))*3600*1e3);return new Date(r)},parsePath(e){const t=e.lastIndexOf(\"/\");return{path:e.substring(0,t),name:e.substring(t+1)}},getRelsPath(e){const t=o.parsePath(e);return`${t.path}/_rels/${t.name}.rels`},xmlEncode(e){const t=s.exec(e);if(!t)return e;let r=\"\",n=\"\",i=0,o=t.index;for(;o<e.length;o++){const t=e.charCodeAt(o);switch(t){case 34:n=\""\";break;case 38:n=\"&\";break;case 39:n=\"'\";break;case 60:n=\"<\";break;case 62:n=\">\";break;case 127:n=\"\";break;default:if(t<=31&&(t<=8||t>=11&&13!==t)){n=\"\";break}continue}i!==o&&(r+=e.substring(i,o)),i=o+1,n&&(r+=n)}return i!==o?r+e.substring(i,o):r},xmlDecode:e=>e.replace(/&([a-z]*);/g,e=>{switch(e){case\"<\":return\"<\";case\">\":return\">\";case\"&\":return\"&\";case\"'\":return\"'\";case\""\":return'\"';default:return e}}),validInt(e){const t=parseInt(e,10);return Number.isNaN(t)?0:t},isDateFmt(e){if(!e)return!1;return null!==(e=(e=e.replace(/\\[[^\\]]*]/g,\"\")).replace(/\"[^\"]*\"/g,\"\")).match(/[ymdhMsb]+/)},fs:{exists:e=>new Promise(t=>{i.access(e,i.constants.F_OK,e=>{t(!e)})})},toIsoDateString:e=>e.toIsoString().subsstr(0,10),parseBoolean:e=>!0===e||\"true\"===e||1===e||\"1\"===e};t.exports=o}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"timers\").setImmediate)},{fs:216,timers:523}],28:[function(e,t,r){\"use strict\";const n=e(\"./under-dash\"),i=e(\"./utils\");function s(e,t,r){e.push(` ${t}=\"${i.xmlEncode(r.toString())}\"`)}function o(e,t){if(t){const r=[];n.each(t,(e,t)=>{void 0!==e&&s(r,t,e)}),e.push(r.join(\"\"))}}class a{constructor(){this._xml=[],this._stack=[],this._rollbacks=[]}get tos(){return this._stack.length?this._stack[this._stack.length-1]:void 0}get cursor(){return this._xml.length}openXml(e){const t=this._xml;t.push(\"<?xml\"),o(t,e),t.push(\"?>\\n\")}openNode(e,t){const r=this.tos,n=this._xml;r&&this.open&&n.push(\">\"),this._stack.push(e),n.push(\"<\"),n.push(e),o(n,t),this.leaf=!0,this.open=!0}addAttribute(e,t){if(!this.open)throw new Error(\"Cannot write attributes to node if it is not open\");void 0!==t&&s(this._xml,e,t)}addAttributes(e){if(!this.open)throw new Error(\"Cannot write attributes to node if it is not open\");o(this._xml,e)}writeText(e){const t=this._xml;this.open&&(t.push(\">\"),this.open=!1),this.leaf=!1,t.push(i.xmlEncode(e.toString()))}writeXml(e){this.open&&(this._xml.push(\">\"),this.open=!1),this.leaf=!1,this._xml.push(e)}closeNode(){const e=this._stack.pop(),t=this._xml;this.leaf?t.push(\"/>\"):(t.push(\"</\"),t.push(e),t.push(\">\")),this.open=!1,this.leaf=!1}leafNode(e,t,r){this.openNode(e,t),void 0!==r&&this.writeText(r),this.closeNode()}closeAll(){for(;this._stack.length;)this.closeNode()}addRollback(){return this._rollbacks.push({xml:this._xml.length,stack:this._stack.length,leaf:this.leaf,open:this.open}),this.cursor}commit(){this._rollbacks.pop()}rollback(){const e=this._rollbacks.pop();this._xml.length>e.xml&&this._xml.splice(e.xml,this._xml.length-e.xml),this._stack.length>e.stack&&this._stack.splice(e.stack,this._stack.length-e.stack),this.leaf=e.leaf,this.open=e.open}get xml(){return this.closeAll(),this._xml.join(\"\")}}a.StdDocAttributes={version:\"1.0\",encoding:\"UTF-8\",standalone:\"yes\"},t.exports=a},{\"./under-dash\":26,\"./utils\":27}],29:[function(e,t,r){(function(r){(function(){\"use strict\";const n=e(\"events\"),i=e(\"jszip\"),s=e(\"./stream-buf\"),{stringToBuffer:o}=e(\"./browser-buffer-encode\");class a extends n.EventEmitter{constructor(e){super(),this.options=Object.assign({type:\"nodebuffer\",compression:\"DEFLATE\"},e),this.zip=new i,this.stream=new s}append(e,t){t.hasOwnProperty(\"base64\")&&t.base64?this.zip.file(t.name,e,{base64:!0}):(r.browser&&\"string\"==typeof e&&(e=o(e)),this.zip.file(t.name,e))}async finalize(){const e=await this.zip.generateAsync(this.options);this.stream.end(e),this.emit(\"finish\")}read(e){return this.stream.read(e)}setEncoding(e){return this.stream.setEncoding(e)}pause(){return this.stream.pause()}resume(){return this.stream.resume()}isPaused(){return this.stream.isPaused()}pipe(e,t){return this.stream.pipe(e,t)}unpipe(e){return this.stream.unpipe(e)}unshift(e){return this.stream.unshift(e)}wrap(e){return this.stream.wrap(e)}}t.exports={ZipWriter:a}}).call(this)}).call(this,e(\"_process\"))},{\"./browser-buffer-encode\":17,\"./stream-buf\":24,_process:467,events:422,jszip:441}],30:[function(e,t,r){\"use strict\";t.exports={0:{f:\"General\"},1:{f:\"0\"},2:{f:\"0.00\"},3:{f:\"#,##0\"},4:{f:\"#,##0.00\"},9:{f:\"0%\"},10:{f:\"0.00%\"},11:{f:\"0.00E+00\"},12:{f:\"# ?/?\"},13:{f:\"# ??/??\"},14:{f:\"mm-dd-yy\"},15:{f:\"d-mmm-yy\"},16:{f:\"d-mmm\"},17:{f:\"mmm-yy\"},18:{f:\"h:mm AM/PM\"},19:{f:\"h:mm:ss AM/PM\"},20:{f:\"h:mm\"},21:{f:\"h:mm:ss\"},22:{f:'m/d/yy \"h\":mm'},27:{\"zh-tw\":\"[$-404]e/m/d\",\"zh-cn\":'yyyy\"\\u5e74\"m\"\\u6708\"',\"ja-jp\":\"[$-411]ge.m.d\",\"ko-kr\":'yyyy\"\\u5e74\" mm\"\\u6708\" dd\"\\u65e5\"'},28:{\"zh-tw\":'[$-404]e\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"zh-cn\":'m\"\\u6708\"d\"\\u65e5\"',\"ja-jp\":'[$-411]ggge\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"ko-kr\":\"mm-dd\"},29:{\"zh-tw\":'[$-404]e\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"zh-cn\":'m\"\\u6708\"d\"\\u65e5\"',\"ja-jp\":'[$-411]ggge\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"ko-kr\":\"mm-dd\"},30:{\"zh-tw\":\"m/d/yy \",\"zh-cn\":\"m-d-yy\",\"ja-jp\":\"m/d/yy\",\"ko-kr\":\"mm-dd-yy\"},31:{\"zh-tw\":'yyyy\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"zh-cn\":'yyyy\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"ja-jp\":'yyyy\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"ko-kr\":'yyyy\"\\ub144\" mm\"\\uc6d4\" dd\"\\uc77c\"'},32:{\"zh-tw\":'hh\"\\u6642\"mm\"\\u5206\"',\"zh-cn\":'h\"\\u65f6\"mm\"\\u5206\"',\"ja-jp\":'h\"\\u6642\"mm\"\\u5206\"',\"ko-kr\":'h\"\\uc2dc\" mm\"\\ubd84\"'},33:{\"zh-tw\":'hh\"\\u6642\"mm\"\\u5206\"ss\"\\u79d2\"',\"zh-cn\":'h\"\\u65f6\"mm\"\\u5206\"ss\"\\u79d2\"',\"ja-jp\":'h\"\\u6642\"mm\"\\u5206\"ss\"\\u79d2\"',\"ko-kr\":'h\"\\uc2dc\" mm\"\\ubd84\" ss\"\\ucd08\"'},34:{\"zh-tw\":'\\u4e0a\\u5348/\\u4e0b\\u5348 hh\"\\u6642\"mm\"\\u5206\"',\"zh-cn\":'\\u4e0a\\u5348/\\u4e0b\\u5348 h\"\\u65f6\"mm\"\\u5206\"',\"ja-jp\":'yyyy\"\\u5e74\"m\"\\u6708\"',\"ko-kr\":\"yyyy-mm-dd\"},35:{\"zh-tw\":'\\u4e0a\\u5348/\\u4e0b\\u5348 hh\"\\u6642\"mm\"\\u5206\"ss\"\\u79d2\"',\"zh-cn\":'\\u4e0a\\u5348/\\u4e0b\\u5348 h\"\\u65f6\"mm\"\\u5206\"ss\"\\u79d2\"',\"ja-jp\":'m\"\\u6708\"d\"\\u65e5\"',\"ko-kr\":\"yyyy-mm-dd\"},36:{\"zh-tw\":\"[$-404]e/m/d\",\"zh-cn\":'yyyy\"\\u5e74\"m\"\\u6708\"',\"ja-jp\":\"[$-411]ge.m.d\",\"ko-kr\":'yyyy\"\\u5e74\" mm\"\\u6708\" dd\"\\u65e5\"'},37:{f:\"#,##0 ;(#,##0)\"},38:{f:\"#,##0 ;[Red](#,##0)\"},39:{f:\"#,##0.00 ;(#,##0.00)\"},40:{f:\"#,##0.00 ;[Red](#,##0.00)\"},45:{f:\"mm:ss\"},46:{f:\"[h]:mm:ss\"},47:{f:\"mmss.0\"},48:{f:\"##0.0E+0\"},49:{f:\"@\"},50:{\"zh-tw\":\"[$-404]e/m/d\",\"zh-cn\":'yyyy\"\\u5e74\"m\"\\u6708\"',\"ja-jp\":\"[$-411]ge.m.d\",\"ko-kr\":'yyyy\"\\u5e74\" mm\"\\u6708\" dd\"\\u65e5\"'},51:{\"zh-tw\":'[$-404]e\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"zh-cn\":'m\"\\u6708\"d\"\\u65e5\"',\"ja-jp\":'[$-411]ggge\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"ko-kr\":\"mm-dd\"},52:{\"zh-tw\":'\\u4e0a\\u5348/\\u4e0b\\u5348 hh\"\\u6642\"mm\"\\u5206\"',\"zh-cn\":'yyyy\"\\u5e74\"m\"\\u6708\"',\"ja-jp\":'yyyy\"\\u5e74\"m\"\\u6708\"',\"ko-kr\":\"yyyy-mm-dd\"},53:{\"zh-tw\":'\\u4e0a\\u5348/\\u4e0b\\u5348 hh\"\\u6642\"mm\"\\u5206\"ss\"\\u79d2\"',\"zh-cn\":'m\"\\u6708\"d\"\\u65e5\"',\"ja-jp\":'m\"\\u6708\"d\"\\u65e5\"',\"ko-kr\":\"yyyy-mm-dd\"},54:{\"zh-tw\":'[$-404]e\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"zh-cn\":'m\"\\u6708\"d\"\\u65e5\"',\"ja-jp\":'[$-411]ggge\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"ko-kr\":\"mm-dd\"},55:{\"zh-tw\":'\\u4e0a\\u5348/\\u4e0b\\u5348 hh\"\\u6642\"mm\"\\u5206\"',\"zh-cn\":'\\u4e0a\\u5348/\\u4e0b\\u5348 h\"\\u65f6\"mm\"\\u5206\"',\"ja-jp\":'yyyy\"\\u5e74\"m\"\\u6708\"',\"ko-kr\":\"yyyy-mm-dd\"},56:{\"zh-tw\":'\\u4e0a\\u5348/\\u4e0b\\u5348 hh\"\\u6642\"mm\"\\u5206\"ss\"\\u79d2\"',\"zh-cn\":'\\u4e0a\\u5348/\\u4e0b\\u5348 h\"\\u65f6\"mm\"\\u5206\"ss\"\\u79d2\"',\"ja-jp\":'m\"\\u6708\"d\"\\u65e5\"',\"ko-kr\":\"yyyy-mm-dd\"},57:{\"zh-tw\":\"[$-404]e/m/d\",\"zh-cn\":'yyyy\"\\u5e74\"m\"\\u6708\"',\"ja-jp\":\"[$-411]ge.m.d\",\"ko-kr\":'yyyy\"\\u5e74\" mm\"\\u6708\" dd\"\\u65e5\"'},58:{\"zh-tw\":'[$-404]e\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"zh-cn\":'m\"\\u6708\"d\"\\u65e5\"',\"ja-jp\":'[$-411]ggge\"\\u5e74\"m\"\\u6708\"d\"\\u65e5\"',\"ko-kr\":\"mm-dd\"},59:{\"th-th\":\"t0\"},60:{\"th-th\":\"t0.00\"},61:{\"th-th\":\"t#,##0\"},62:{\"th-th\":\"t#,##0.00\"},67:{\"th-th\":\"t0%\"},68:{\"th-th\":\"t0.00%\"},69:{\"th-th\":\"t# ?/?\"},70:{\"th-th\":\"t# ??/??\"},81:{\"th-th\":\"d/m/bb\"}}},{}],31:[function(e,t,r){\"use strict\";t.exports={OfficeDocument:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",Worksheet:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",CalcChain:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain\",SharedStrings:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",Styles:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",Theme:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",Hyperlink:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",Image:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",CoreProperties:\"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",ExtenderProperties:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\",Comments:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",VmlDrawing:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",Table:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table\"}},{}],32:[function(e,t,r){\"use strict\";const n=e(\"../../utils/parse-sax\"),i=e(\"../../utils/xml-stream\");class s{prepare(){}render(){}parseOpen(e){}parseText(e){}parseClose(e){}reconcile(e,t){}reset(){this.model=null,this.map&&Object.values(this.map).forEach(e=>{e instanceof s?e.reset():e.xform&&e.xform.reset()})}mergeModel(e){this.model=Object.assign(this.model||{},e)}async parse(e){for await(const t of e)for(const{eventType:e,value:r}of t)if(\"opentag\"===e)this.parseOpen(r);else if(\"text\"===e)this.parseText(r);else if(\"closetag\"===e&&!this.parseClose(r.name))return this.model;return this.model}async parseStream(e){return this.parse(n(e))}get xml(){return this.toXml(this.model)}toXml(e){const t=new i;return this.render(t,e),t.xml}static toAttribute(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(void 0===e){if(r)return t}else if(r||e!==t)return e.toString()}static toStringAttribute(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return s.toAttribute(e,t,r)}static toStringValue(e,t){return void 0===e?t:e}static toBoolAttribute(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(void 0===e){if(r)return t}else if(r||e!==t)return e?\"1\":\"0\"}static toBoolValue(e,t){return void 0===e?t:\"1\"===e}static toIntAttribute(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return s.toAttribute(e,t,r)}static toIntValue(e,t){return void 0===e?t:parseInt(e,10)}static toFloatAttribute(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return s.toAttribute(e,t,r)}static toFloatValue(e,t){return void 0===e?t:parseFloat(e)}}t.exports=s},{\"../../utils/parse-sax\":22,\"../../utils/xml-stream\":28}],33:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"../../../utils/col-cache\");function s(e){try{return i.decodeEx(e),!0}catch(e){return!1}}function o(e){const t=[];let r=!1,n=\"\";return e.split(\",\").forEach(e=>{if(!e)return;const i=(e.match(/'/g)||[]).length;if(!i)return void(r?n+=e+\",\":s(e)&&t.push(e));const o=i%2==0;!r&&o&&s(e)?t.push(e):r&&!o?(r=!1,s(n+e)&&t.push(n+e),n=\"\"):(r=!0,n+=e+\",\")}),t}t.exports=class extends n{render(e,t){e.openNode(\"definedName\",{name:t.name,localSheetId:t.localSheetId}),e.writeText(t.ranges.join(\",\")),e.closeNode()}parseOpen(e){switch(e.name){case\"definedName\":return this._parsedName=e.attributes.name,this._parsedLocalSheetId=e.attributes.localSheetId,this._parsedText=[],!0;default:return!1}}parseText(e){this._parsedText.push(e)}parseClose(){return this.model={name:this._parsedName,ranges:o(this._parsedText.join(\"\"))},void 0!==this._parsedLocalSheetId&&(this.model.localSheetId=parseInt(this._parsedLocalSheetId,10)),!1}}},{\"../../../utils/col-cache\":19,\"../base-xform\":32}],34:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/utils\"),i=e(\"../base-xform\");t.exports=class extends i{render(e,t){e.leafNode(\"sheet\",{sheetId:t.id,name:t.name,state:t.state,\"r:id\":t.rId})}parseOpen(e){return\"sheet\"===e.name&&(this.model={name:n.xmlDecode(e.attributes.name),id:parseInt(e.attributes.sheetId,10),state:e.attributes.state,rId:e.attributes[\"r:id\"]},!0)}parseText(){}parseClose(){return!1}}},{\"../../../utils/utils\":27,\"../base-xform\":32}],35:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{render(e,t){e.leafNode(\"calcPr\",{calcId:171027,fullCalcOnLoad:t.fullCalcOnLoad?1:void 0})}parseOpen(e){return\"calcPr\"===e.name&&(this.model={},!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],36:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{render(e,t){e.leafNode(\"workbookPr\",{date1904:t.date1904?1:void 0,defaultThemeVersion:164011,filterPrivacy:1})}parseOpen(e){return\"workbookPr\"===e.name&&(this.model={date1904:\"1\"===e.attributes.date1904},!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],37:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{render(e,t){const r={xWindow:t.x||0,yWindow:t.y||0,windowWidth:t.width||12e3,windowHeight:t.height||24e3,firstSheet:t.firstSheet,activeTab:t.activeTab};t.visibility&&\"visible\"!==t.visibility&&(r.visibility=t.visibility),e.leafNode(\"workbookView\",r)}parseOpen(e){if(\"workbookView\"===e.name){const t=this.model={},r=function(e,r,n){const i=void 0!==r?t[e]=r:n;void 0!==i&&(t[e]=i)},n=function(e,r,n){const i=void 0!==r?t[e]=parseInt(r,10):n;void 0!==i&&(t[e]=i)};return n(\"x\",e.attributes.xWindow,0),n(\"y\",e.attributes.yWindow,0),n(\"width\",e.attributes.windowWidth,25e3),n(\"height\",e.attributes.windowHeight,1e4),r(\"visibility\",e.attributes.visibility,\"visible\"),n(\"activeTab\",e.attributes.activeTab,void 0),n(\"firstSheet\",e.attributes.firstSheet,void 0),!0}return!1}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],38:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/under-dash\"),i=e(\"../../../utils/col-cache\"),s=e(\"../../../utils/xml-stream\"),o=e(\"../base-xform\"),a=e(\"../static-xform\"),l=e(\"../list-xform\"),c=e(\"./defined-name-xform\"),u=e(\"./sheet-xform\"),h=e(\"./workbook-view-xform\"),f=e(\"./workbook-properties-xform\"),d=e(\"./workbook-calc-properties-xform\");class p extends o{constructor(){super(),this.map={fileVersion:p.STATIC_XFORMS.fileVersion,workbookPr:new f,bookViews:new l({tag:\"bookViews\",count:!1,childXform:new h}),sheets:new l({tag:\"sheets\",count:!1,childXform:new u}),definedNames:new l({tag:\"definedNames\",count:!1,childXform:new c}),calcPr:new d}}prepare(e){e.sheets=e.worksheets;const t=[];let r=0;e.sheets.forEach(e=>{if(e.pageSetup&&e.pageSetup.printArea&&e.pageSetup.printArea.split(\"&&\").forEach(n=>{const i=n.split(\":\"),s={name:\"_xlnm.Print_Area\",ranges:[`'${e.name}'!$${i[0]}:$${i[1]}`],localSheetId:r};t.push(s)}),e.pageSetup&&(e.pageSetup.printTitlesRow||e.pageSetup.printTitlesColumn)){const n=[];if(e.pageSetup.printTitlesColumn){const t=e.pageSetup.printTitlesColumn.split(\":\");n.push(`'${e.name}'!$${t[0]}:$${t[1]}`)}if(e.pageSetup.printTitlesRow){const t=e.pageSetup.printTitlesRow.split(\":\");n.push(`'${e.name}'!$${t[0]}:$${t[1]}`)}const i={name:\"_xlnm.Print_Titles\",ranges:n,localSheetId:r};t.push(i)}r++}),t.length&&(e.definedNames=e.definedNames.concat(t)),(e.media||[]).forEach((e,t)=>{e.name=e.type+(t+1)})}render(e,t){e.openXml(s.StdDocAttributes),e.openNode(\"workbook\",p.WORKBOOK_ATTRIBUTES),this.map.fileVersion.render(e),this.map.workbookPr.render(e,t.properties),this.map.bookViews.render(e,t.views),this.map.sheets.render(e,t.sheets),this.map.definedNames.render(e,t.definedNames),this.map.calcPr.render(e,t.calcProperties),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"workbook\":return!0;default:return this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e),!0}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case\"workbook\":return this.model={sheets:this.map.sheets.model,properties:this.map.workbookPr.model||{},views:this.map.bookViews.model,calcProperties:{}},this.map.definedNames.model&&(this.model.definedNames=this.map.definedNames.model),!1;default:return!0}}reconcile(e){const t=(e.workbookRels||[]).reduce((e,t)=>(e[t.Id]=t,e),{}),r=[];let s,o=0;(e.sheets||[]).forEach(n=>{const i=t[n.rId];i&&(s=e.worksheetHash[\"xl/\"+i.Target.replace(/^(\\s|\\/xl\\/)+/,\"\")],s&&(s.name=n.name,s.id=n.id,s.state=n.state,r[o++]=s))});const a=[];n.each(e.definedNames,e=>{if(\"_xlnm.Print_Area\"===e.name){if(s=r[e.localSheetId],s){s.pageSetup||(s.pageSetup={});const t=i.decodeEx(e.ranges[0]);s.pageSetup.printArea=s.pageSetup.printArea?`${s.pageSetup.printArea}&&${t.dimensions}`:t.dimensions}}else if(\"_xlnm.Print_Titles\"===e.name){if(s=r[e.localSheetId],s){s.pageSetup||(s.pageSetup={});const t=e.ranges.join(\",\"),r=/\\$/g,n=/\\$\\d+:\\$\\d+/,i=t.match(n);if(i&&i.length){const e=i[0];s.pageSetup.printTitlesRow=e.replace(r,\"\")}const o=/\\$[A-Z]+:\\$[A-Z]+/,a=t.match(o);if(a&&a.length){const e=a[0];s.pageSetup.printTitlesColumn=e.replace(r,\"\")}}}else a.push(e)}),e.definedNames=a,e.media.forEach((e,t)=>{e.index=t})}}p.WORKBOOK_ATTRIBUTES={xmlns:\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\",\"xmlns:r\":\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\"xmlns:mc\":\"http://schemas.openxmlformats.org/markup-compatibility/2006\",\"mc:Ignorable\":\"x15\",\"xmlns:x15\":\"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main\"},p.STATIC_XFORMS={fileVersion:new a({tag:\"fileVersion\",$:{appName:\"xl\",lastEdited:5,lowestEdited:5,rupBuild:9303}})},t.exports=p},{\"../../../utils/col-cache\":19,\"../../../utils/under-dash\":26,\"../../../utils/xml-stream\":28,\"../base-xform\":32,\"../list-xform\":71,\"../static-xform\":120,\"./defined-name-xform\":33,\"./sheet-xform\":34,\"./workbook-calc-properties-xform\":35,\"./workbook-properties-xform\":36,\"./workbook-view-xform\":37}],39:[function(e,t,r){\"use strict\";const n=e(\"../strings/rich-text-xform\"),i=e(\"../../../utils/utils\"),s=e(\"../base-xform\"),o=t.exports=function(e){this.model=e};i.inherits(o,s,{get tag(){return\"r\"},get richTextXform(){return this._richTextXform||(this._richTextXform=new n),this._richTextXform},render(e,t){t=t||this.model,e.openNode(\"comment\",{ref:t.ref,authorId:0}),e.openNode(\"text\"),t&&t.note&&t.note.texts&&t.note.texts.forEach(t=>{this.richTextXform.render(e,t)}),e.closeNode(),e.closeNode()},parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"comment\":return this.model={type:\"note\",note:{texts:[]},...e.attributes},!0;case\"r\":return this.parser=this.richTextXform,this.parser.parseOpen(e),!0;default:return!1}},parseText(e){this.parser&&this.parser.parseText(e)},parseClose(e){switch(e){case\"comment\":return!1;case\"r\":return this.model.note.texts.push(this.parser.model),this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(e),!0}}})},{\"../../../utils/utils\":27,\"../base-xform\":32,\"../strings/rich-text-xform\":122}],40:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/xml-stream\"),i=e(\"../../../utils/utils\"),s=e(\"../base-xform\"),o=e(\"./comment-xform\"),a=t.exports=function(){this.map={comment:new o}};i.inherits(a,s,{COMMENTS_ATTRIBUTES:{xmlns:\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"}},{render(e,t){t=t||this.model,e.openXml(n.StdDocAttributes),e.openNode(\"comments\",a.COMMENTS_ATTRIBUTES),e.openNode(\"authors\"),e.leafNode(\"author\",null,\"Author\"),e.closeNode(),e.openNode(\"commentList\"),t.comments.forEach(t=>{this.map.comment.render(e,t)}),e.closeNode(),e.closeNode()},parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"commentList\":return this.model={comments:[]},!0;case\"comment\":return this.parser=this.map.comment,this.parser.parseOpen(e),!0;default:return!1}},parseText(e){this.parser&&this.parser.parseText(e)},parseClose(e){switch(e){case\"commentList\":return!1;case\"comment\":return this.model.comments.push(this.parser.model),this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(e),!0}}})},{\"../../../utils/utils\":27,\"../../../utils/xml-stream\":28,\"../base-xform\":32,\"./comment-xform\":39}],41:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\");t.exports=class extends n{constructor(e){super(),this._model=e}get tag(){return this._model&&this._model.tag}render(e,t,r){(t===r[2]||\"x:SizeWithCells\"===this.tag&&t===r[1])&&e.leafNode(this.tag)}parseOpen(e){switch(e.name){case this.tag:return this.model={},this.model[this.tag]=!0,!0;default:return!1}}parseText(){}parseClose(){return!1}}},{\"../../base-xform\":32}],42:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\");t.exports=class extends n{constructor(e){super(),this._model=e}get tag(){return this._model&&this._model.tag}render(e,t){e.leafNode(this.tag,null,t)}parseOpen(e){switch(e.name){case this.tag:return this.text=\"\",!0;default:return!1}}parseText(e){this.text=e}parseClose(){return!1}}},{\"../../base-xform\":32}],43:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"x:Anchor\"}getAnchorRect(e){const t=Math.floor(e.left),r=Math.floor(68*(e.left-t)),n=Math.floor(e.top),i=Math.floor(18*(e.top-n)),s=Math.floor(e.right),o=Math.floor(68*(e.right-s)),a=Math.floor(e.bottom);return[t,r,n,i,s,o,a,Math.floor(18*(e.bottom-a))]}getDefaultRect(e){const t=e.col,r=Math.max(e.row-2,0);return[t,6,r,14,t+2,2,r+4,16]}render(e,t){const r=t.anchor?this.getAnchorRect(t.anchor):this.getDefaultRect(t.refAddress);e.leafNode(\"x:Anchor\",null,r.join(\", \"))}parseOpen(e){switch(e.name){case this.tag:return this.text=\"\",!0;default:return!1}}parseText(e){this.text=e}parseClose(){return!1}}},{\"../base-xform\":32}],44:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"./vml-anchor-xform\"),s=e(\"./style/vml-protection-xform\"),o=e(\"./style/vml-position-xform\"),a=[\"twoCells\",\"oneCells\",\"absolute\"];t.exports=class extends n{constructor(){super(),this.map={\"x:Anchor\":new i,\"x:Locked\":new s({tag:\"x:Locked\"}),\"x:LockText\":new s({tag:\"x:LockText\"}),\"x:SizeWithCells\":new o({tag:\"x:SizeWithCells\"}),\"x:MoveWithCells\":new o({tag:\"x:MoveWithCells\"})}}get tag(){return\"x:ClientData\"}render(e,t){const{protection:r,editAs:n}=t.note;e.openNode(this.tag,{ObjectType:\"Note\"}),this.map[\"x:MoveWithCells\"].render(e,n,a),this.map[\"x:SizeWithCells\"].render(e,n,a),this.map[\"x:Anchor\"].render(e,t),this.map[\"x:Locked\"].render(e,r.locked),e.leafNode(\"x:AutoFill\",null,\"False\"),this.map[\"x:LockText\"].render(e,r.lockText),e.leafNode(\"x:Row\",null,t.refAddress.row-1),e.leafNode(\"x:Column\",null,t.refAddress.col-1),e.closeNode()}parseOpen(e){switch(e.name){case this.tag:this.reset(),this.model={anchor:[],protection:{},editAs:\"\"};break;default:this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)}return!0}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case this.tag:return this.normalizeModel(),!1;default:return!0}}normalizeModel(){const e=Object.assign({},this.map[\"x:MoveWithCells\"].model,this.map[\"x:SizeWithCells\"].model),t=Object.keys(e).length;this.model.editAs=a[t],this.model.anchor=this.map[\"x:Anchor\"].text,this.model.protection.locked=this.map[\"x:Locked\"].text,this.model.protection.lockText=this.map[\"x:LockText\"].text}}},{\"../base-xform\":32,\"./style/vml-position-xform\":41,\"./style/vml-protection-xform\":42,\"./vml-anchor-xform\":43}],45:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/xml-stream\"),i=e(\"../base-xform\"),s=e(\"./vml-shape-xform\");class o extends i{constructor(){super(),this.map={\"v:shape\":new s}}get tag(){return\"xml\"}render(e,t){e.openXml(n.StdDocAttributes),e.openNode(this.tag,o.DRAWING_ATTRIBUTES),e.openNode(\"o:shapelayout\",{\"v:ext\":\"edit\"}),e.leafNode(\"o:idmap\",{\"v:ext\":\"edit\",data:1}),e.closeNode(),e.openNode(\"v:shapetype\",{id:\"_x0000_t202\",coordsize:\"21600,21600\",\"o:spt\":202,path:\"m,l,21600r21600,l21600,xe\"}),e.leafNode(\"v:stroke\",{joinstyle:\"miter\"}),e.leafNode(\"v:path\",{gradientshapeok:\"t\",\"o:connecttype\":\"rect\"}),e.closeNode(),t.comments.forEach((t,r)=>{this.map[\"v:shape\"].render(e,t,r)}),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:this.reset(),this.model={comments:[]};break;default:this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)}return!0}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.model.comments.push(this.parser.model),this.parser=void 0),!0;switch(e){case this.tag:return!1;default:return!0}}reconcile(e,t){e.anchors.forEach(e=>{e.br?this.map[\"xdr:twoCellAnchor\"].reconcile(e,t):this.map[\"xdr:oneCellAnchor\"].reconcile(e,t)})}}o.DRAWING_ATTRIBUTES={\"xmlns:v\":\"urn:schemas-microsoft-com:vml\",\"xmlns:o\":\"urn:schemas-microsoft-com:office:office\",\"xmlns:x\":\"urn:schemas-microsoft-com:office:excel\"},t.exports=o},{\"../../../utils/xml-stream\":28,\"../base-xform\":32,\"./vml-shape-xform\":46}],46:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"./vml-textbox-xform\"),s=e(\"./vml-client-data-xform\");class o extends n{constructor(){super(),this.map={\"v:textbox\":new i,\"x:ClientData\":new s}}get tag(){return\"v:shape\"}render(e,t,r){e.openNode(\"v:shape\",o.V_SHAPE_ATTRIBUTES(t,r)),e.leafNode(\"v:fill\",{color2:\"infoBackground [80]\"}),e.leafNode(\"v:shadow\",{color:\"none [81]\",obscured:\"t\"}),e.leafNode(\"v:path\",{\"o:connecttype\":\"none\"}),this.map[\"v:textbox\"].render(e,t),this.map[\"x:ClientData\"].render(e,t),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:this.reset(),this.model={margins:{insetmode:e.attributes[\"o:insetmode\"]},anchor:\"\",editAs:\"\",protection:{}};break;default:this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)}return!0}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case this.tag:return this.model.margins.inset=this.map[\"v:textbox\"].model&&this.map[\"v:textbox\"].model.inset,this.model.protection=this.map[\"x:ClientData\"].model&&this.map[\"x:ClientData\"].model.protection,this.model.anchor=this.map[\"x:ClientData\"].model&&this.map[\"x:ClientData\"].model.anchor,this.model.editAs=this.map[\"x:ClientData\"].model&&this.map[\"x:ClientData\"].model.editAs,!1;default:return!0}}}o.V_SHAPE_ATTRIBUTES=(e,t)=>({id:\"_x0000_s\"+(1025+t),type:\"#_x0000_t202\",style:\"position:absolute; margin-left:105.3pt;margin-top:10.5pt;width:97.8pt;height:59.1pt;z-index:1;visibility:hidden\",fillcolor:\"infoBackground [80]\",strokecolor:\"none [81]\",\"o:insetmode\":e.note.margins&&e.note.margins.insetmode}),t.exports=o},{\"../base-xform\":32,\"./vml-client-data-xform\":44,\"./vml-textbox-xform\":47}],47:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"v:textbox\"}conversionUnit(e,t,r){return`${parseFloat(e)*t.toFixed(2)}${r}`}reverseConversionUnit(e){return(e||\"\").split(\",\").map(e=>Number(parseFloat(this.conversionUnit(parseFloat(e),.1,\"\")).toFixed(2)))}render(e,t){const r={style:\"mso-direction-alt:auto\"};if(t&&t.note){let{inset:e}=t.note&&t.note.margins;Array.isArray(e)&&(e=e.map(e=>this.conversionUnit(e,10,\"mm\")).join(\",\")),e&&(r.inset=e)}e.openNode(\"v:textbox\",r),e.leafNode(\"div\",{style:\"text-align:left\"}),e.closeNode()}parseOpen(e){switch(e.name){case this.tag:return this.model={inset:this.reverseConversionUnit(e.attributes.inset)},!0;default:return!0}}parseText(){}parseClose(e){switch(e){case this.tag:return!1;default:return!0}}}},{\"../base-xform\":32}],48:[function(e,t,r){\"use strict\";const n=e(\"./base-xform\");t.exports=class extends n{createNewModel(e){return{}}parseOpen(e){return this.parser=this.parser||this.map[e.name],this.parser?(this.parser.parseOpen(e),!0):e.name===this.tag&&(this.model=this.createNewModel(e),!0)}parseText(e){this.parser&&this.parser.parseText(e)}onParserClose(e,t){this.model[e]=t.model}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.onParserClose(e,this.parser),this.parser=void 0),!0):e!==this.tag}}},{\"./base-xform\":32}],49:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{render(e,t){e.openNode(\"HeadingPairs\"),e.openNode(\"vt:vector\",{size:2,baseType:\"variant\"}),e.openNode(\"vt:variant\"),e.leafNode(\"vt:lpstr\",void 0,\"Worksheets\"),e.closeNode(),e.openNode(\"vt:variant\"),e.leafNode(\"vt:i4\",void 0,t.length),e.closeNode(),e.closeNode(),e.closeNode()}parseOpen(e){return\"HeadingPairs\"===e.name}parseText(){}parseClose(e){return\"HeadingPairs\"!==e}}},{\"../base-xform\":32}],50:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{render(e,t){e.openNode(\"TitlesOfParts\"),e.openNode(\"vt:vector\",{size:t.length,baseType:\"lpstr\"}),t.forEach(t=>{e.leafNode(\"vt:lpstr\",void 0,t.name)}),e.closeNode(),e.closeNode()}parseOpen(e){return\"TitlesOfParts\"===e.name}parseText(){}parseClose(e){return\"TitlesOfParts\"!==e}}},{\"../base-xform\":32}],51:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/xml-stream\"),i=e(\"../base-xform\"),s=e(\"../simple/string-xform\"),o=e(\"./app-heading-pairs-xform\"),a=e(\"./app-titles-of-parts-xform\");class l extends i{constructor(){super(),this.map={Company:new s({tag:\"Company\"}),Manager:new s({tag:\"Manager\"}),HeadingPairs:new o,TitleOfParts:new a}}render(e,t){e.openXml(n.StdDocAttributes),e.openNode(\"Properties\",l.PROPERTY_ATTRIBUTES),e.leafNode(\"Application\",void 0,\"Microsoft Excel\"),e.leafNode(\"DocSecurity\",void 0,\"0\"),e.leafNode(\"ScaleCrop\",void 0,\"false\"),this.map.HeadingPairs.render(e,t.worksheets),this.map.TitleOfParts.render(e,t.worksheets),this.map.Company.render(e,t.company||\"\"),this.map.Manager.render(e,t.manager),e.leafNode(\"LinksUpToDate\",void 0,\"false\"),e.leafNode(\"SharedDoc\",void 0,\"false\"),e.leafNode(\"HyperlinksChanged\",void 0,\"false\"),e.leafNode(\"AppVersion\",void 0,\"16.0300\"),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"Properties\":return!0;default:return this.parser=this.map[e.name],!!this.parser&&(this.parser.parseOpen(e),!0)}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case\"Properties\":return this.model={worksheets:this.map.TitleOfParts.model,company:this.map.Company.model,manager:this.map.Manager.model},!1;default:return!0}}}l.DateFormat=function(e){return e.toISOString().replace(/[.]\\d{3,6}/,\"\")},l.DateAttrs={\"xsi:type\":\"dcterms:W3CDTF\"},l.PROPERTY_ATTRIBUTES={xmlns:\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\"xmlns:vt\":\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\"},t.exports=l},{\"../../../utils/xml-stream\":28,\"../base-xform\":32,\"../simple/string-xform\":119,\"./app-heading-pairs-xform\":49,\"./app-titles-of-parts-xform\":50}],52:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/xml-stream\"),i=e(\"../base-xform\");class s extends i{render(e,t){e.openXml(n.StdDocAttributes),e.openNode(\"Types\",s.PROPERTY_ATTRIBUTES);const r={};(t.media||[]).forEach(t=>{if(\"image\"===t.type){const n=t.extension;r[n]||(r[n]=!0,e.leafNode(\"Default\",{Extension:n,ContentType:\"image/\"+n}))}}),e.leafNode(\"Default\",{Extension:\"rels\",ContentType:\"application/vnd.openxmlformats-package.relationships+xml\"}),e.leafNode(\"Default\",{Extension:\"xml\",ContentType:\"application/xml\"}),e.leafNode(\"Override\",{PartName:\"/xl/workbook.xml\",ContentType:\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\"}),t.worksheets.forEach(t=>{const r=`/xl/worksheets/sheet${t.id}.xml`;e.leafNode(\"Override\",{PartName:r,ContentType:\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\"})}),e.leafNode(\"Override\",{PartName:\"/xl/theme/theme1.xml\",ContentType:\"application/vnd.openxmlformats-officedocument.theme+xml\"}),e.leafNode(\"Override\",{PartName:\"/xl/styles.xml\",ContentType:\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\"});t.sharedStrings&&t.sharedStrings.count&&e.leafNode(\"Override\",{PartName:\"/xl/sharedStrings.xml\",ContentType:\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\"}),t.tables&&t.tables.forEach(t=>{e.leafNode(\"Override\",{PartName:\"/xl/tables/\"+t.target,ContentType:\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\"})}),t.drawings&&t.drawings.forEach(t=>{e.leafNode(\"Override\",{PartName:`/xl/drawings/${t.name}.xml`,ContentType:\"application/vnd.openxmlformats-officedocument.drawing+xml\"})}),t.commentRefs&&(e.leafNode(\"Default\",{Extension:\"vml\",ContentType:\"application/vnd.openxmlformats-officedocument.vmlDrawing\"}),t.commentRefs.forEach(t=>{let{commentName:r}=t;e.leafNode(\"Override\",{PartName:`/xl/${r}.xml`,ContentType:\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\"})})),e.leafNode(\"Override\",{PartName:\"/docProps/core.xml\",ContentType:\"application/vnd.openxmlformats-package.core-properties+xml\"}),e.leafNode(\"Override\",{PartName:\"/docProps/app.xml\",ContentType:\"application/vnd.openxmlformats-officedocument.extended-properties+xml\"}),e.closeNode()}parseOpen(){return!1}parseText(){}parseClose(){return!1}}s.PROPERTY_ATTRIBUTES={xmlns:\"http://schemas.openxmlformats.org/package/2006/content-types\"},t.exports=s},{\"../../../utils/xml-stream\":28,\"../base-xform\":32}],53:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/xml-stream\"),i=e(\"../base-xform\"),s=e(\"../simple/date-xform\"),o=e(\"../simple/string-xform\"),a=e(\"../simple/integer-xform\");class l extends i{constructor(){super(),this.map={\"dc:creator\":new o({tag:\"dc:creator\"}),\"dc:title\":new o({tag:\"dc:title\"}),\"dc:subject\":new o({tag:\"dc:subject\"}),\"dc:description\":new o({tag:\"dc:description\"}),\"dc:identifier\":new o({tag:\"dc:identifier\"}),\"dc:language\":new o({tag:\"dc:language\"}),\"cp:keywords\":new o({tag:\"cp:keywords\"}),\"cp:category\":new o({tag:\"cp:category\"}),\"cp:lastModifiedBy\":new o({tag:\"cp:lastModifiedBy\"}),\"cp:lastPrinted\":new s({tag:\"cp:lastPrinted\",format:l.DateFormat}),\"cp:revision\":new a({tag:\"cp:revision\"}),\"cp:version\":new o({tag:\"cp:version\"}),\"cp:contentStatus\":new o({tag:\"cp:contentStatus\"}),\"cp:contentType\":new o({tag:\"cp:contentType\"}),\"dcterms:created\":new s({tag:\"dcterms:created\",attrs:l.DateAttrs,format:l.DateFormat}),\"dcterms:modified\":new s({tag:\"dcterms:modified\",attrs:l.DateAttrs,format:l.DateFormat})}}render(e,t){e.openXml(n.StdDocAttributes),e.openNode(\"cp:coreProperties\",l.CORE_PROPERTY_ATTRIBUTES),this.map[\"dc:creator\"].render(e,t.creator),this.map[\"dc:title\"].render(e,t.title),this.map[\"dc:subject\"].render(e,t.subject),this.map[\"dc:description\"].render(e,t.description),this.map[\"dc:identifier\"].render(e,t.identifier),this.map[\"dc:language\"].render(e,t.language),this.map[\"cp:keywords\"].render(e,t.keywords),this.map[\"cp:category\"].render(e,t.category),this.map[\"cp:lastModifiedBy\"].render(e,t.lastModifiedBy),this.map[\"cp:lastPrinted\"].render(e,t.lastPrinted),this.map[\"cp:revision\"].render(e,t.revision),this.map[\"cp:version\"].render(e,t.version),this.map[\"cp:contentStatus\"].render(e,t.contentStatus),this.map[\"cp:contentType\"].render(e,t.contentType),this.map[\"dcterms:created\"].render(e,t.created),this.map[\"dcterms:modified\"].render(e,t.modified),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"cp:coreProperties\":case\"coreProperties\":return!0;default:if(this.parser=this.map[e.name],this.parser)return this.parser.parseOpen(e),!0;throw new Error(\"Unexpected xml node in parseOpen: \"+JSON.stringify(e))}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case\"cp:coreProperties\":case\"coreProperties\":return this.model={creator:this.map[\"dc:creator\"].model,title:this.map[\"dc:title\"].model,subject:this.map[\"dc:subject\"].model,description:this.map[\"dc:description\"].model,identifier:this.map[\"dc:identifier\"].model,language:this.map[\"dc:language\"].model,keywords:this.map[\"cp:keywords\"].model,category:this.map[\"cp:category\"].model,lastModifiedBy:this.map[\"cp:lastModifiedBy\"].model,lastPrinted:this.map[\"cp:lastPrinted\"].model,revision:this.map[\"cp:revision\"].model,contentStatus:this.map[\"cp:contentStatus\"].model,contentType:this.map[\"cp:contentType\"].model,created:this.map[\"dcterms:created\"].model,modified:this.map[\"dcterms:modified\"].model},!1;default:throw new Error(\"Unexpected xml node in parseClose: \"+e)}}}l.DateFormat=function(e){return e.toISOString().replace(/[.]\\d{3}/,\"\")},l.DateAttrs={\"xsi:type\":\"dcterms:W3CDTF\"},l.CORE_PROPERTY_ATTRIBUTES={\"xmlns:cp\":\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\",\"xmlns:dc\":\"http://purl.org/dc/elements/1.1/\",\"xmlns:dcterms\":\"http://purl.org/dc/terms/\",\"xmlns:dcmitype\":\"http://purl.org/dc/dcmitype/\",\"xmlns:xsi\":\"http://www.w3.org/2001/XMLSchema-instance\"},t.exports=l},{\"../../../utils/xml-stream\":28,\"../base-xform\":32,\"../simple/date-xform\":117,\"../simple/integer-xform\":118,\"../simple/string-xform\":119}],54:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{render(e,t){e.leafNode(\"Relationship\",t)}parseOpen(e){switch(e.name){case\"Relationship\":return this.model=e.attributes,!0;default:return!1}}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],55:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/xml-stream\"),i=e(\"../base-xform\"),s=e(\"./relationship-xform\");class o extends i{constructor(){super(),this.map={Relationship:new s}}render(e,t){t=t||this._values,e.openXml(n.StdDocAttributes),e.openNode(\"Relationships\",o.RELATIONSHIPS_ATTRIBUTES),t.forEach(t=>{this.map.Relationship.render(e,t)}),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"Relationships\":return this.model=[],!0;default:if(this.parser=this.map[e.name],this.parser)return this.parser.parseOpen(e),!0;throw new Error(\"Unexpected xml node in parseOpen: \"+JSON.stringify(e))}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.model.push(this.parser.model),this.parser=void 0),!0;switch(e){case\"Relationships\":return!1;default:throw new Error(\"Unexpected xml node in parseClose: \"+e)}}}o.RELATIONSHIPS_ATTRIBUTES={xmlns:\"http://schemas.openxmlformats.org/package/2006/relationships\"},t.exports=o},{\"../../../utils/xml-stream\":28,\"../base-xform\":32,\"./relationship-xform\":54}],56:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:this.reset(),this.model={range:{editAs:e.attributes.editAs||\"oneCell\"}};break;default:this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)}return!0}parseText(e){this.parser&&this.parser.parseText(e)}reconcilePicture(e,t){if(e&&e.rId){const r=t.rels[e.rId].Target.match(/.*\\/media\\/(.+[.][a-zA-Z]{3,4})/);if(r){const e=r[1],n=t.mediaIndex[e];return t.media[n]}}}}},{\"../base-xform\":32}],57:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"./blip-xform\");t.exports=class extends n{constructor(){super(),this.map={\"a:blip\":new i}}get tag(){return\"xdr:blipFill\"}render(e,t){e.openNode(this.tag),this.map[\"a:blip\"].render(e,t),e.openNode(\"a:stretch\"),e.leafNode(\"a:fillRect\"),e.closeNode(),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:this.reset();break;default:this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)}return!0}parseText(){}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case this.tag:return this.model=this.map[\"a:blip\"].model,!1;default:return!0}}}},{\"../base-xform\":32,\"./blip-xform\":58}],58:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"a:blip\"}render(e,t){e.leafNode(this.tag,{\"xmlns:r\":\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\"r:embed\":t.rId,cstate:\"print\"})}parseOpen(e){switch(e.name){case this.tag:return this.model={rId:e.attributes[\"r:embed\"]},!0;default:return!0}}parseText(){}parseClose(e){switch(e){case this.tag:return!1;default:return!0}}}},{\"../base-xform\":32}],59:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"xdr:cNvPicPr\"}render(e){e.openNode(this.tag),e.leafNode(\"a:picLocks\",{noChangeAspect:\"1\"}),e.closeNode()}parseOpen(e){switch(e.name){case this.tag:default:return!0}}parseText(){}parseClose(e){switch(e){case this.tag:return!1;default:return!0}}}},{\"../base-xform\":32}],60:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"./hlink-click-xform\"),s=e(\"./ext-lst-xform\");t.exports=class extends n{constructor(){super(),this.map={\"a:hlinkClick\":new i,\"a:extLst\":new s}}get tag(){return\"xdr:cNvPr\"}render(e,t){e.openNode(this.tag,{id:t.index,name:\"Picture \"+t.index}),this.map[\"a:hlinkClick\"].render(e,t),this.map[\"a:extLst\"].render(e,t),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:this.reset();break;default:this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)}return!0}parseText(){}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case this.tag:return this.model=this.map[\"a:hlinkClick\"].model,!1;default:return!0}}}},{\"../base-xform\":32,\"./ext-lst-xform\":63,\"./hlink-click-xform\":65}],61:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"../simple/integer-xform\");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.map={\"xdr:col\":new i({tag:\"xdr:col\",zero:!0}),\"xdr:colOff\":new i({tag:\"xdr:colOff\",zero:!0}),\"xdr:row\":new i({tag:\"xdr:row\",zero:!0}),\"xdr:rowOff\":new i({tag:\"xdr:rowOff\",zero:!0})}}render(e,t){e.openNode(this.tag),this.map[\"xdr:col\"].render(e,t.nativeCol),this.map[\"xdr:colOff\"].render(e,t.nativeColOff),this.map[\"xdr:row\"].render(e,t.nativeRow),this.map[\"xdr:rowOff\"].render(e,t.nativeRowOff),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:this.reset();break;default:this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)}return!0}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case this.tag:return this.model={nativeCol:this.map[\"xdr:col\"].model,nativeColOff:this.map[\"xdr:colOff\"].model,nativeRow:this.map[\"xdr:row\"].model,nativeRowOff:this.map[\"xdr:rowOff\"].model},!1;default:return!0}}}},{\"../base-xform\":32,\"../simple/integer-xform\":118}],62:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/col-cache\"),i=e(\"../../../utils/xml-stream\"),s=e(\"../base-xform\"),o=e(\"./two-cell-anchor-xform\"),a=e(\"./one-cell-anchor-xform\");class l extends s{constructor(){super(),this.map={\"xdr:twoCellAnchor\":new o,\"xdr:oneCellAnchor\":new a}}prepare(e){e.anchors.forEach((e,t)=>{e.anchorType=function(e){return(\"string\"==typeof e.range?n.decode(e.range):e.range).br?\"xdr:twoCellAnchor\":\"xdr:oneCellAnchor\"}(e);this.map[e.anchorType].prepare(e,{index:t})})}get tag(){return\"xdr:wsDr\"}render(e,t){e.openXml(i.StdDocAttributes),e.openNode(this.tag,l.DRAWING_ATTRIBUTES),t.anchors.forEach(t=>{this.map[t.anchorType].render(e,t)}),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:this.reset(),this.model={anchors:[]};break;default:this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)}return!0}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.model.anchors.push(this.parser.model),this.parser=void 0),!0;switch(e){case this.tag:return!1;default:return!0}}reconcile(e,t){e.anchors.forEach(e=>{e.br?this.map[\"xdr:twoCellAnchor\"].reconcile(e,t):this.map[\"xdr:oneCellAnchor\"].reconcile(e,t)})}}l.DRAWING_ATTRIBUTES={\"xmlns:xdr\":\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\",\"xmlns:a\":\"http://schemas.openxmlformats.org/drawingml/2006/main\"},t.exports=l},{\"../../../utils/col-cache\":19,\"../../../utils/xml-stream\":28,\"../base-xform\":32,\"./one-cell-anchor-xform\":67,\"./two-cell-anchor-xform\":70}],63:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"a:extLst\"}render(e){e.openNode(this.tag),e.openNode(\"a:ext\",{uri:\"{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}\"}),e.leafNode(\"a16:creationId\",{\"xmlns:a16\":\"http://schemas.microsoft.com/office/drawing/2014/main\",id:\"{00000000-0008-0000-0000-000002000000}\"}),e.closeNode(),e.closeNode()}parseOpen(e){switch(e.name){case this.tag:default:return!0}}parseText(){}parseClose(e){switch(e){case this.tag:return!1;default:return!0}}}},{\"../base-xform\":32}],64:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.map={}}render(e,t){e.openNode(this.tag);const r=Math.floor(9525*t.width),n=Math.floor(9525*t.height);e.addAttribute(\"cx\",r),e.addAttribute(\"cy\",n),e.closeNode()}parseOpen(e){return e.name===this.tag&&(this.model={width:parseInt(e.attributes.cx||\"0\",10)/9525,height:parseInt(e.attributes.cy||\"0\",10)/9525},!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],65:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"a:hlinkClick\"}render(e,t){t.hyperlinks&&t.hyperlinks.rId&&e.leafNode(this.tag,{\"xmlns:r\":\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\"r:id\":t.hyperlinks.rId,tooltip:t.hyperlinks.tooltip})}parseOpen(e){switch(e.name){case this.tag:return this.model={hyperlinks:{rId:e.attributes[\"r:id\"],tooltip:e.attributes.tooltip}},!0;default:return!0}}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],66:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"./c-nv-pr-xform\"),s=e(\"./c-nv-pic-pr-xform\");t.exports=class extends n{constructor(){super(),this.map={\"xdr:cNvPr\":new i,\"xdr:cNvPicPr\":new s}}get tag(){return\"xdr:nvPicPr\"}render(e,t){e.openNode(this.tag),this.map[\"xdr:cNvPr\"].render(e,t),this.map[\"xdr:cNvPicPr\"].render(e,t),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:this.reset();break;default:this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)}return!0}parseText(){}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case this.tag:return this.model=this.map[\"xdr:cNvPr\"].model,!1;default:return!0}}}},{\"../base-xform\":32,\"./c-nv-pic-pr-xform\":59,\"./c-nv-pr-xform\":60}],67:[function(e,t,r){\"use strict\";const n=e(\"./base-cell-anchor-xform\"),i=e(\"../static-xform\"),s=e(\"./cell-position-xform\"),o=e(\"./ext-xform\"),a=e(\"./pic-xform\");t.exports=class extends n{constructor(){super(),this.map={\"xdr:from\":new s({tag:\"xdr:from\"}),\"xdr:ext\":new o({tag:\"xdr:ext\"}),\"xdr:pic\":new a,\"xdr:clientData\":new i({tag:\"xdr:clientData\"})}}get tag(){return\"xdr:oneCellAnchor\"}prepare(e,t){this.map[\"xdr:pic\"].prepare(e.picture,t)}render(e,t){e.openNode(this.tag,{editAs:t.range.editAs||\"oneCell\"}),this.map[\"xdr:from\"].render(e,t.range.tl),this.map[\"xdr:ext\"].render(e,t.range.ext),this.map[\"xdr:pic\"].render(e,t.picture),this.map[\"xdr:clientData\"].render(e,{}),e.closeNode()}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case this.tag:return this.model.range.tl=this.map[\"xdr:from\"].model,this.model.range.ext=this.map[\"xdr:ext\"].model,this.model.picture=this.map[\"xdr:pic\"].model,!1;default:return!0}}reconcile(e,t){e.medium=this.reconcilePicture(e.picture,t)}}},{\"../static-xform\":120,\"./base-cell-anchor-xform\":56,\"./cell-position-xform\":61,\"./ext-xform\":64,\"./pic-xform\":68}],68:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"../static-xform\"),s=e(\"./blip-fill-xform\"),o=e(\"./nv-pic-pr-xform\"),a=e(\"./sp-pr\");t.exports=class extends n{constructor(){super(),this.map={\"xdr:nvPicPr\":new o,\"xdr:blipFill\":new s,\"xdr:spPr\":new i(a)}}get tag(){return\"xdr:pic\"}prepare(e,t){e.index=t.index+1}render(e,t){e.openNode(this.tag),this.map[\"xdr:nvPicPr\"].render(e,t),this.map[\"xdr:blipFill\"].render(e,t),this.map[\"xdr:spPr\"].render(e,t),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:this.reset();break;default:this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)}return!0}parseText(){}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.mergeModel(this.parser.model),this.parser=void 0),!0;switch(e){case this.tag:return!1;default:return!0}}}},{\"../base-xform\":32,\"../static-xform\":120,\"./blip-fill-xform\":57,\"./nv-pic-pr-xform\":66,\"./sp-pr\":69}],69:[function(e,t,r){\"use strict\";t.exports={tag:\"xdr:spPr\",c:[{tag:\"a:xfrm\",c:[{tag:\"a:off\",$:{x:\"0\",y:\"0\"}},{tag:\"a:ext\",$:{cx:\"0\",cy:\"0\"}}]},{tag:\"a:prstGeom\",$:{prst:\"rect\"},c:[{tag:\"a:avLst\"}]}]}},{}],70:[function(e,t,r){\"use strict\";const n=e(\"./base-cell-anchor-xform\"),i=e(\"../static-xform\"),s=e(\"./cell-position-xform\"),o=e(\"./pic-xform\");t.exports=class extends n{constructor(){super(),this.map={\"xdr:from\":new s({tag:\"xdr:from\"}),\"xdr:to\":new s({tag:\"xdr:to\"}),\"xdr:pic\":new o,\"xdr:clientData\":new i({tag:\"xdr:clientData\"})}}get tag(){return\"xdr:twoCellAnchor\"}prepare(e,t){this.map[\"xdr:pic\"].prepare(e.picture,t)}render(e,t){e.openNode(this.tag,{editAs:t.range.editAs||\"oneCell\"}),this.map[\"xdr:from\"].render(e,t.range.tl),this.map[\"xdr:to\"].render(e,t.range.br),this.map[\"xdr:pic\"].render(e,t.picture),this.map[\"xdr:clientData\"].render(e,{}),e.closeNode()}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case this.tag:return this.model.range.tl=this.map[\"xdr:from\"].model,this.model.range.br=this.map[\"xdr:to\"].model,this.model.picture=this.map[\"xdr:pic\"].model,!1;default:return!0}}reconcile(e,t){e.medium=this.reconcilePicture(e.picture,t)}}},{\"../static-xform\":120,\"./base-cell-anchor-xform\":56,\"./cell-position-xform\":61,\"./pic-xform\":68}],71:[function(e,t,r){\"use strict\";const n=e(\"./base-xform\");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.always=!!e.always,this.count=e.count,this.empty=e.empty,this.$count=e.$count||\"count\",this.$=e.$,this.childXform=e.childXform,this.maxItems=e.maxItems}prepare(e,t){const{childXform:r}=this;e&&e.forEach((e,n)=>{t.index=n,r.prepare(e,t)})}render(e,t){if(this.always||t&&t.length){e.openNode(this.tag,this.$),this.count&&e.addAttribute(this.$count,t&&t.length||0);const{childXform:r}=this;(t||[]).forEach((t,n)=>{r.render(e,t,n)}),e.closeNode()}else this.empty&&e.leafNode(this.tag)}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:return this.model=[],!0;default:return!!this.childXform.parseOpen(e)&&(this.parser=this.childXform,!0)}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser){if(!this.parser.parseClose(e)&&(this.model.push(this.parser.model),this.parser=void 0,this.maxItems&&this.model.length>this.maxItems))throw new Error(`Max ${this.childXform.tag} count (${this.maxItems}) exceeded`);return!0}return!1}reconcile(e,t){if(e){const{childXform:r}=this;e.forEach(e=>{r.reconcile(e,t)})}}}},{\"./base-xform\":32}],72:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/col-cache\"),i=e(\"../base-xform\");t.exports=class extends i{get tag(){return\"autoFilter\"}render(e,t){if(t)if(\"string\"==typeof t)e.leafNode(\"autoFilter\",{ref:t});else{const r=function(e){return\"string\"==typeof e?e:n.getAddress(e.row,e.column).address},i=r(t.from),s=r(t.to);i&&s&&e.leafNode(\"autoFilter\",{ref:`${i}:${s}`})}}parseOpen(e){\"autoFilter\"===e.name&&(this.model=e.attributes.ref)}}},{\"../../../utils/col-cache\":19,\"../base-xform\":32}],73:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/utils\"),i=e(\"../base-xform\"),s=e(\"../../../doc/range\"),o=e(\"../../../doc/enums\"),a=e(\"../strings/rich-text-xform\");function l(e){if(null==e)return o.ValueType.Null;if(e instanceof String||\"string\"==typeof e)return o.ValueType.String;if(\"number\"==typeof e)return o.ValueType.Number;if(\"boolean\"==typeof e)return o.ValueType.Boolean;if(e instanceof Date)return o.ValueType.Date;if(e.text&&e.hyperlink)return o.ValueType.Hyperlink;if(e.formula)return o.ValueType.Formula;if(e.error)return o.ValueType.Error;throw new Error(\"I could not understand type of value\")}t.exports=class extends i{constructor(){super(),this.richTextXForm=new a}get tag(){return\"c\"}prepare(e,t){const r=t.styles.addStyleModel(e.style||{},function(e){switch(e.type){case o.ValueType.Formula:return l(e.result);default:return e.type}}(e));switch(r&&(e.styleId=r),e.comment&&t.comments.push({...e.comment,ref:e.address}),e.type){case o.ValueType.String:case o.ValueType.RichText:t.sharedStrings&&(e.ssId=t.sharedStrings.add(e.value));break;case o.ValueType.Date:t.date1904&&(e.date1904=!0);break;case o.ValueType.Hyperlink:t.sharedStrings&&void 0!==e.text&&null!==e.text&&(e.ssId=t.sharedStrings.add(e.text)),t.hyperlinks.push({address:e.address,target:e.hyperlink,tooltip:e.tooltip});break;case o.ValueType.Merge:t.merges.add(e);break;case o.ValueType.Formula:if(t.date1904&&(e.date1904=!0),\"shared\"===e.shareType&&(e.si=t.siFormulae++),e.formula)t.formulae[e.address]=e;else if(e.sharedFormula){const r=t.formulae[e.sharedFormula];if(!r)throw new Error(\"Shared Formula master must exist above and or left of clone for cell \"+e.address);void 0===r.si?(r.shareType=\"shared\",r.si=t.siFormulae++,r.range=new s(r.address,e.address)):r.range&&r.range.expandToAddress(e.address),e.si=r.si}}}renderFormula(e,t){let r=null;switch(t.shareType){case\"shared\":r={t:\"shared\",ref:t.ref||t.range.range,si:t.si};break;case\"array\":r={t:\"array\",ref:t.ref};break;default:void 0!==t.si&&(r={t:\"shared\",si:t.si})}switch(l(t.result)){case o.ValueType.Null:e.leafNode(\"f\",r,t.formula);break;case o.ValueType.String:e.addAttribute(\"t\",\"str\"),e.leafNode(\"f\",r,t.formula),e.leafNode(\"v\",null,t.result);break;case o.ValueType.Number:e.leafNode(\"f\",r,t.formula),e.leafNode(\"v\",null,t.result);break;case o.ValueType.Boolean:e.addAttribute(\"t\",\"b\"),e.leafNode(\"f\",r,t.formula),e.leafNode(\"v\",null,t.result?1:0);break;case o.ValueType.Error:e.addAttribute(\"t\",\"e\"),e.leafNode(\"f\",r,t.formula),e.leafNode(\"v\",null,t.result.error);break;case o.ValueType.Date:e.leafNode(\"f\",r,t.formula),e.leafNode(\"v\",null,n.dateToExcel(t.result,t.date1904));break;default:throw new Error(\"I could not understand type of value\")}}render(e,t){if(t.type!==o.ValueType.Null||t.styleId){switch(e.openNode(\"c\"),e.addAttribute(\"r\",t.address),t.styleId&&e.addAttribute(\"s\",t.styleId),t.type){case o.ValueType.Null:break;case o.ValueType.Number:e.leafNode(\"v\",null,t.value);break;case o.ValueType.Boolean:e.addAttribute(\"t\",\"b\"),e.leafNode(\"v\",null,t.value?\"1\":\"0\");break;case o.ValueType.Error:e.addAttribute(\"t\",\"e\"),e.leafNode(\"v\",null,t.value.error);break;case o.ValueType.String:case o.ValueType.RichText:void 0!==t.ssId?(e.addAttribute(\"t\",\"s\"),e.leafNode(\"v\",null,t.ssId)):t.value&&t.value.richText?(e.addAttribute(\"t\",\"inlineStr\"),e.openNode(\"is\"),t.value.richText.forEach(t=>{this.richTextXForm.render(e,t)}),e.closeNode(\"is\")):(e.addAttribute(\"t\",\"str\"),e.leafNode(\"v\",null,t.value));break;case o.ValueType.Date:e.leafNode(\"v\",null,n.dateToExcel(t.value,t.date1904));break;case o.ValueType.Hyperlink:void 0!==t.ssId?(e.addAttribute(\"t\",\"s\"),e.leafNode(\"v\",null,t.ssId)):(e.addAttribute(\"t\",\"str\"),e.leafNode(\"v\",null,t.text));break;case o.ValueType.Formula:this.renderFormula(e,t);break;case o.ValueType.Merge:}e.closeNode()}}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"c\":return this.model={address:e.attributes.r},this.t=e.attributes.t,e.attributes.s&&(this.model.styleId=parseInt(e.attributes.s,10)),!0;case\"f\":return this.currentNode=\"f\",this.model.si=e.attributes.si,this.model.shareType=e.attributes.t,this.model.ref=e.attributes.ref,!0;case\"v\":return this.currentNode=\"v\",!0;case\"t\":return this.currentNode=\"t\",!0;case\"r\":return this.parser=this.richTextXForm,this.parser.parseOpen(e),!0;default:return!1}}parseText(e){if(this.parser)this.parser.parseText(e);else switch(this.currentNode){case\"f\":this.model.formula=this.model.formula?this.model.formula+e:e;break;case\"v\":case\"t\":this.model.value&&this.model.value.richText?this.model.value.richText.text=this.model.value.richText.text?this.model.value.richText.text+e:e:this.model.value=this.model.value?this.model.value+e:e}}parseClose(e){switch(e){case\"c\":{const{model:e}=this;if(e.formula||e.shareType)e.type=o.ValueType.Formula,e.value&&(\"str\"===this.t?e.result=n.xmlDecode(e.value):\"b\"===this.t?e.result=0!==parseInt(e.value,10):\"e\"===this.t?e.result={error:e.value}:e.result=parseFloat(e.value),e.value=void 0);else if(void 0!==e.value)switch(this.t){case\"s\":e.type=o.ValueType.String,e.value=parseInt(e.value,10);break;case\"str\":e.type=o.ValueType.String,e.value=n.xmlDecode(e.value);break;case\"inlineStr\":e.type=o.ValueType.String;break;case\"b\":e.type=o.ValueType.Boolean,e.value=0!==parseInt(e.value,10);break;case\"e\":e.type=o.ValueType.Error,e.value={error:e.value};break;default:e.type=o.ValueType.Number,e.value=parseFloat(e.value)}else e.styleId?e.type=o.ValueType.Null:e.type=o.ValueType.Merge;return!1}case\"f\":case\"v\":case\"is\":return this.currentNode=void 0,!0;case\"t\":return this.parser?(this.parser.parseClose(e),!0):(this.currentNode=void 0,!0);case\"r\":return this.model.value=this.model.value||{},this.model.value.richText=this.model.value.richText||[],this.model.value.richText.push(this.parser.model),this.parser=void 0,this.currentNode=void 0,!0;default:return!!this.parser&&(this.parser.parseClose(e),!0)}}reconcile(e,t){const r=e.styleId&&t.styles&&t.styles.getStyleModel(e.styleId);switch(r&&(e.style=r),void 0!==e.styleId&&(e.styleId=void 0),e.type){case o.ValueType.String:\"number\"==typeof e.value&&t.sharedStrings&&(e.value=t.sharedStrings.getString(e.value)),e.value.richText&&(e.type=o.ValueType.RichText);break;case o.ValueType.Number:r&&n.isDateFmt(r.numFmt)&&(e.type=o.ValueType.Date,e.value=n.excelToDate(e.value,t.date1904));break;case o.ValueType.Formula:void 0!==e.result&&r&&n.isDateFmt(r.numFmt)&&(e.result=n.excelToDate(e.result,t.date1904)),\"shared\"===e.shareType&&(e.ref?t.formulae[e.si]=e.address:(e.sharedFormula=t.formulae[e.si],delete e.shareType),delete e.si)}const i=t.hyperlinkMap[e.address];i&&(e.type===o.ValueType.Formula?(e.text=e.result,e.result=void 0):(e.text=e.value,e.value=void 0),e.type=o.ValueType.Hyperlink,e.hyperlink=i);const s=t.commentsMap&&t.commentsMap[e.address];s&&(e.comment=s)}}},{\"../../../doc/enums\":7,\"../../../doc/range\":10,\"../../../utils/utils\":27,\"../base-xform\":32,\"../strings/rich-text-xform\":122}],74:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\");t.exports=class extends n{get tag(){return\"x14:cfIcon\"}render(e,t){e.leafNode(this.tag,{iconSet:t.iconSet,iconId:t.iconId})}parseOpen(e){let{attributes:t}=e;this.model={iconSet:t.iconSet,iconId:n.toIntValue(t.iconId)}}parseClose(e){return e!==this.tag}}},{\"../../base-xform\":32}],75:[function(e,t,r){\"use strict\";const{v4:n}=e(\"uuid\"),i=e(\"../../base-xform\"),s=e(\"../../composite-xform\"),o=e(\"./databar-ext-xform\"),a=e(\"./icon-set-ext-xform\"),l={\"3Triangles\":!0,\"3Stars\":!0,\"5Boxes\":!0};class c extends s{constructor(){super(),this.map={\"x14:dataBar\":this.databarXform=new o,\"x14:iconSet\":this.iconSetXform=new a}}get tag(){return\"x14:cfRule\"}static isExt(e){return\"dataBar\"===e.type?o.isExt(e):!(\"iconSet\"!==e.type||!e.custom&&!l[e.iconSet])}prepare(e){c.isExt(e)&&(e.x14Id=`{${n()}}`.toUpperCase())}render(e,t){if(c.isExt(t))switch(t.type){case\"dataBar\":this.renderDataBar(e,t);break;case\"iconSet\":this.renderIconSet(e,t)}}renderDataBar(e,t){e.openNode(this.tag,{type:\"dataBar\",id:t.x14Id}),this.databarXform.render(e,t),e.closeNode()}renderIconSet(e,t){e.openNode(this.tag,{type:\"iconSet\",priority:t.priority,id:t.x14Id||`{${n()}}`}),this.iconSetXform.render(e,t),e.closeNode()}createNewModel(e){let{attributes:t}=e;return{type:t.type,x14Id:t.id,priority:i.toIntValue(t.priority)}}onParserClose(e,t){Object.assign(this.model,t.model)}}t.exports=c},{\"../../base-xform\":32,\"../../composite-xform\":48,\"./databar-ext-xform\":79,\"./icon-set-ext-xform\":81,uuid:528}],76:[function(e,t,r){\"use strict\";const n=e(\"../../composite-xform\"),i=e(\"./f-ext-xform\");t.exports=class extends n{constructor(){super(),this.map={\"xm:f\":this.fExtXform=new i}}get tag(){return\"x14:cfvo\"}render(e,t){e.openNode(this.tag,{type:t.type}),void 0!==t.value&&this.fExtXform.render(e,t.value),e.closeNode()}createNewModel(e){return{type:e.attributes.type}}onParserClose(e,t){switch(e){case\"xm:f\":this.model.value=t.model?parseFloat(t.model):0}}}},{\"../../composite-xform\":48,\"./f-ext-xform\":80}],77:[function(e,t,r){\"use strict\";const n=e(\"../../composite-xform\"),i=e(\"./sqref-ext-xform\"),s=e(\"./cf-rule-ext-xform\");t.exports=class extends n{constructor(){super(),this.map={\"xm:sqref\":this.sqRef=new i,\"x14:cfRule\":this.cfRule=new s}}get tag(){return\"x14:conditionalFormatting\"}prepare(e,t){e.rules.forEach(e=>{this.cfRule.prepare(e,t)})}render(e,t){t.rules.some(s.isExt)&&(e.openNode(this.tag,{\"xmlns:xm\":\"http://schemas.microsoft.com/office/excel/2006/main\"}),t.rules.filter(s.isExt).forEach(t=>this.cfRule.render(e,t)),this.sqRef.render(e,t.ref),e.closeNode())}createNewModel(){return{rules:[]}}onParserClose(e,t){switch(e){case\"xm:sqref\":this.model.ref=t.model;break;case\"x14:cfRule\":this.model.rules.push(t.model)}}}},{\"../../composite-xform\":48,\"./cf-rule-ext-xform\":75,\"./sqref-ext-xform\":82}],78:[function(e,t,r){\"use strict\";const n=e(\"../../composite-xform\"),i=e(\"./cf-rule-ext-xform\"),s=e(\"./conditional-formatting-ext-xform\");t.exports=class extends n{constructor(){super(),this.map={\"x14:conditionalFormatting\":this.cfXform=new s}}get tag(){return\"x14:conditionalFormattings\"}hasContent(e){return void 0===e.hasExtContent&&(e.hasExtContent=e.some(e=>e.rules.some(i.isExt))),e.hasExtContent}prepare(e,t){e.forEach(e=>{this.cfXform.prepare(e,t)})}render(e,t){this.hasContent(t)&&(e.openNode(this.tag),t.forEach(t=>this.cfXform.render(e,t)),e.closeNode())}createNewModel(){return[]}onParserClose(e,t){this.model.push(t.model)}}},{\"../../composite-xform\":48,\"./cf-rule-ext-xform\":75,\"./conditional-formatting-ext-xform\":77}],79:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\"),i=e(\"../../composite-xform\"),s=e(\"../../style/color-xform\"),o=e(\"./cfvo-ext-xform\");t.exports=class extends i{constructor(){super(),this.map={\"x14:cfvo\":this.cfvoXform=new o,\"x14:borderColor\":this.borderColorXform=new s(\"x14:borderColor\"),\"x14:negativeBorderColor\":this.negativeBorderColorXform=new s(\"x14:negativeBorderColor\"),\"x14:negativeFillColor\":this.negativeFillColorXform=new s(\"x14:negativeFillColor\"),\"x14:axisColor\":this.axisColorXform=new s(\"x14:axisColor\")}}static isExt(e){return!e.gradient}get tag(){return\"x14:dataBar\"}render(e,t){e.openNode(this.tag,{minLength:n.toIntAttribute(t.minLength,0,!0),maxLength:n.toIntAttribute(t.maxLength,100,!0),border:n.toBoolAttribute(t.border,!1),gradient:n.toBoolAttribute(t.gradient,!0),negativeBarColorSameAsPositive:n.toBoolAttribute(t.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:n.toBoolAttribute(t.negativeBarBorderColorSameAsPositive,!0),axisPosition:n.toAttribute(t.axisPosition,\"auto\"),direction:n.toAttribute(t.direction,\"leftToRight\")}),t.cfvo.forEach(t=>{this.cfvoXform.render(e,t)}),this.borderColorXform.render(e,t.borderColor),this.negativeBorderColorXform.render(e,t.negativeBorderColor),this.negativeFillColorXform.render(e,t.negativeFillColor),this.axisColorXform.render(e,t.axisColor),e.closeNode()}createNewModel(e){let{attributes:t}=e;return{cfvo:[],minLength:n.toIntValue(t.minLength,0),maxLength:n.toIntValue(t.maxLength,100),border:n.toBoolValue(t.border,!1),gradient:n.toBoolValue(t.gradient,!0),negativeBarColorSameAsPositive:n.toBoolValue(t.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:n.toBoolValue(t.negativeBarBorderColorSameAsPositive,!0),axisPosition:n.toStringValue(t.axisPosition,\"auto\"),direction:n.toStringValue(t.direction,\"leftToRight\")}}onParserClose(e,t){const[,r]=e.split(\":\");switch(r){case\"cfvo\":this.model.cfvo.push(t.model);break;default:this.model[r]=t.model}}}},{\"../../base-xform\":32,\"../../composite-xform\":48,\"../../style/color-xform\":128,\"./cfvo-ext-xform\":76}],80:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\");t.exports=class extends n{get tag(){return\"xm:f\"}render(e,t){e.leafNode(this.tag,null,t)}parseOpen(){this.model=\"\"}parseText(e){this.model+=e}parseClose(e){return e!==this.tag}}},{\"../../base-xform\":32}],81:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\"),i=e(\"../../composite-xform\"),s=e(\"./cfvo-ext-xform\"),o=e(\"./cf-icon-ext-xform\");t.exports=class extends i{constructor(){super(),this.map={\"x14:cfvo\":this.cfvoXform=new s,\"x14:cfIcon\":this.cfIconXform=new o}}get tag(){return\"x14:iconSet\"}render(e,t){e.openNode(this.tag,{iconSet:n.toStringAttribute(t.iconSet),reverse:n.toBoolAttribute(t.reverse,!1),showValue:n.toBoolAttribute(t.showValue,!0),custom:n.toBoolAttribute(t.icons,!1)}),t.cfvo.forEach(t=>{this.cfvoXform.render(e,t)}),t.icons&&t.icons.forEach((t,r)=>{t.iconId=r,this.cfIconXform.render(e,t)}),e.closeNode()}createNewModel(e){let{attributes:t}=e;return{cfvo:[],iconSet:n.toStringValue(t.iconSet,\"3TrafficLights\"),reverse:n.toBoolValue(t.reverse,!1),showValue:n.toBoolValue(t.showValue,!0)}}onParserClose(e,t){const[,r]=e.split(\":\");switch(r){case\"cfvo\":this.model.cfvo.push(t.model);break;case\"cfIcon\":this.model.icons||(this.model.icons=[]),this.model.icons.push(t.model);break;default:this.model[r]=t.model}}}},{\"../../base-xform\":32,\"../../composite-xform\":48,\"./cf-icon-ext-xform\":74,\"./cfvo-ext-xform\":76}],82:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\");t.exports=class extends n{get tag(){return\"xm:sqref\"}render(e,t){e.leafNode(this.tag,null,t)}parseOpen(){this.model=\"\"}parseText(e){this.model+=e}parseClose(e){return e!==this.tag}}},{\"../../base-xform\":32}],83:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\"),i=e(\"../../composite-xform\"),s=e(\"../../../../doc/range\"),o=e(\"./databar-xform\"),a=e(\"./ext-lst-ref-xform\"),l=e(\"./formula-xform\"),c=e(\"./color-scale-xform\"),u=e(\"./icon-set-xform\"),h={\"3Triangles\":!0,\"3Stars\":!0,\"5Boxes\":!0},f=e=>{const{type:t,operator:r}=e;switch(t){case\"containsText\":case\"containsBlanks\":case\"notContainsBlanks\":case\"containsErrors\":case\"notContainsErrors\":return{type:\"containsText\",operator:t};default:return{type:t,operator:r}}};class d extends i{constructor(){super(),this.map={dataBar:this.databarXform=new o,extLst:this.extLstRefXform=new a,formula:this.formulaXform=new l,colorScale:this.colorScaleXform=new c,iconSet:this.iconSetXform=new u}}get tag(){return\"cfRule\"}static isPrimitive(e){return\"iconSet\"!==e.type||!e.custom&&!h[e.iconSet]}render(e,t){switch(t.type){case\"expression\":this.renderExpression(e,t);break;case\"cellIs\":this.renderCellIs(e,t);break;case\"top10\":this.renderTop10(e,t);break;case\"aboveAverage\":this.renderAboveAverage(e,t);break;case\"dataBar\":this.renderDataBar(e,t);break;case\"colorScale\":this.renderColorScale(e,t);break;case\"iconSet\":this.renderIconSet(e,t);break;case\"containsText\":this.renderText(e,t);break;case\"timePeriod\":this.renderTimePeriod(e,t)}}renderExpression(e,t){e.openNode(this.tag,{type:\"expression\",dxfId:t.dxfId,priority:t.priority}),this.formulaXform.render(e,t.formulae[0]),e.closeNode()}renderCellIs(e,t){e.openNode(this.tag,{type:\"cellIs\",dxfId:t.dxfId,priority:t.priority,operator:t.operator}),t.formulae.forEach(t=>{this.formulaXform.render(e,t)}),e.closeNode()}renderTop10(e,t){e.leafNode(this.tag,{type:\"top10\",dxfId:t.dxfId,priority:t.priority,percent:n.toBoolAttribute(t.percent,!1),bottom:n.toBoolAttribute(t.bottom,!1),rank:n.toIntValue(t.rank,10,!0)})}renderAboveAverage(e,t){e.leafNode(this.tag,{type:\"aboveAverage\",dxfId:t.dxfId,priority:t.priority,aboveAverage:n.toBoolAttribute(t.aboveAverage,!0)})}renderDataBar(e,t){e.openNode(this.tag,{type:\"dataBar\",priority:t.priority}),this.databarXform.render(e,t),this.extLstRefXform.render(e,t),e.closeNode()}renderColorScale(e,t){e.openNode(this.tag,{type:\"colorScale\",priority:t.priority}),this.colorScaleXform.render(e,t),e.closeNode()}renderIconSet(e,t){d.isPrimitive(t)&&(e.openNode(this.tag,{type:\"iconSet\",priority:t.priority}),this.iconSetXform.render(e,t),e.closeNode())}renderText(e,t){e.openNode(this.tag,{type:t.operator,dxfId:t.dxfId,priority:t.priority,operator:n.toStringAttribute(t.operator,\"containsText\")});const r=(e=>{if(e.formulae&&e.formulae[0])return e.formulae[0];const t=new s(e.ref),{tl:r}=t;switch(e.operator){case\"containsText\":return`NOT(ISERROR(SEARCH(\"${e.text}\",${r})))`;case\"containsBlanks\":return`LEN(TRIM(${r}))=0`;case\"notContainsBlanks\":return`LEN(TRIM(${r}))>0`;case\"containsErrors\":return`ISERROR(${r})`;case\"notContainsErrors\":return`NOT(ISERROR(${r}))`;default:return}})(t);r&&this.formulaXform.render(e,r),e.closeNode()}renderTimePeriod(e,t){e.openNode(this.tag,{type:\"timePeriod\",dxfId:t.dxfId,priority:t.priority,timePeriod:t.timePeriod});const r=(e=>{if(e.formulae&&e.formulae[0])return e.formulae[0];const t=new s(e.ref),{tl:r}=t;switch(e.timePeriod){case\"thisWeek\":return`AND(TODAY()-ROUNDDOWN(${r},0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(${r},0)-TODAY()<=7-WEEKDAY(TODAY()))`;case\"lastWeek\":return`AND(TODAY()-ROUNDDOWN(${r},0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(${r},0)<(WEEKDAY(TODAY())+7))`;case\"nextWeek\":return`AND(ROUNDDOWN(${r},0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(${r},0)-TODAY()<(15-WEEKDAY(TODAY())))`;case\"yesterday\":return`FLOOR(${r},1)=TODAY()-1`;case\"today\":return`FLOOR(${r},1)=TODAY()`;case\"tomorrow\":return`FLOOR(${r},1)=TODAY()+1`;case\"last7Days\":return`AND(TODAY()-FLOOR(${r},1)<=6,FLOOR(${r},1)<=TODAY())`;case\"lastMonth\":return`AND(MONTH(${r})=MONTH(EDATE(TODAY(),0-1)),YEAR(${r})=YEAR(EDATE(TODAY(),0-1)))`;case\"thisMonth\":return`AND(MONTH(${r})=MONTH(TODAY()),YEAR(${r})=YEAR(TODAY()))`;case\"nextMonth\":return`AND(MONTH(${r})=MONTH(EDATE(TODAY(),0+1)),YEAR(${r})=YEAR(EDATE(TODAY(),0+1)))`;default:return}})(t);r&&this.formulaXform.render(e,r),e.closeNode()}createNewModel(e){let{attributes:t}=e;return{...f(t),dxfId:n.toIntValue(t.dxfId),priority:n.toIntValue(t.priority),timePeriod:t.timePeriod,percent:n.toBoolValue(t.percent),bottom:n.toBoolValue(t.bottom),rank:n.toIntValue(t.rank),aboveAverage:n.toBoolValue(t.aboveAverage)}}onParserClose(e,t){switch(e){case\"dataBar\":case\"extLst\":case\"colorScale\":case\"iconSet\":Object.assign(this.model,t.model);break;case\"formula\":this.model.formulae=this.model.formulae||[],this.model.formulae.push(t.model)}}}t.exports=d},{\"../../../../doc/range\":10,\"../../base-xform\":32,\"../../composite-xform\":48,\"./color-scale-xform\":85,\"./databar-xform\":88,\"./ext-lst-ref-xform\":89,\"./formula-xform\":90,\"./icon-set-xform\":91}],84:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\");t.exports=class extends n{get tag(){return\"cfvo\"}render(e,t){e.leafNode(this.tag,{type:t.type,val:t.value})}parseOpen(e){this.model={type:e.attributes.type,value:n.toFloatValue(e.attributes.val)}}parseClose(e){return e!==this.tag}}},{\"../../base-xform\":32}],85:[function(e,t,r){\"use strict\";const n=e(\"../../composite-xform\"),i=e(\"../../style/color-xform\"),s=e(\"./cfvo-xform\");t.exports=class extends n{constructor(){super(),this.map={cfvo:this.cfvoXform=new s,color:this.colorXform=new i}}get tag(){return\"colorScale\"}render(e,t){e.openNode(this.tag),t.cfvo.forEach(t=>{this.cfvoXform.render(e,t)}),t.color.forEach(t=>{this.colorXform.render(e,t)}),e.closeNode()}createNewModel(e){return{cfvo:[],color:[]}}onParserClose(e,t){this.model[e].push(t.model)}}},{\"../../composite-xform\":48,\"../../style/color-xform\":128,\"./cfvo-xform\":84}],86:[function(e,t,r){\"use strict\";const n=e(\"../../composite-xform\"),i=e(\"./cf-rule-xform\");t.exports=class extends n{constructor(){super(),this.map={cfRule:new i}}get tag(){return\"conditionalFormatting\"}render(e,t){t.rules.some(i.isPrimitive)&&(e.openNode(this.tag,{sqref:t.ref}),t.rules.forEach(r=>{i.isPrimitive(r)&&(r.ref=t.ref,this.map.cfRule.render(e,r))}),e.closeNode())}createNewModel(e){let{attributes:t}=e;return{ref:t.sqref,rules:[]}}onParserClose(e,t){this.model.rules.push(t.model)}}},{\"../../composite-xform\":48,\"./cf-rule-xform\":83}],87:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\"),i=e(\"./conditional-formatting-xform\");t.exports=class extends n{constructor(){super(),this.cfXform=new i}get tag(){return\"conditionalFormatting\"}reset(){this.model=[]}prepare(e,t){let r=e.reduce((e,t)=>Math.max(e,...t.rules.map(e=>e.priority||0)),1);e.forEach(e=>{e.rules.forEach(e=>{e.priority||(e.priority=r++),e.style&&(e.dxfId=t.styles.addDxfStyle(e.style))})})}render(e,t){t.forEach(t=>{this.cfXform.render(e,t)})}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"conditionalFormatting\":return this.parser=this.cfXform,this.parser.parseOpen(e),!0;default:return!1}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return!!this.parser&&(!!this.parser.parseClose(e)||(this.model.push(this.parser.model),this.parser=void 0,!1))}reconcile(e,t){e.forEach(e=>{e.rules.forEach(e=>{void 0!==e.dxfId&&(e.style=t.styles.getDxfStyle(e.dxfId),delete e.dxfId)})})}}},{\"../../base-xform\":32,\"./conditional-formatting-xform\":86}],88:[function(e,t,r){\"use strict\";const n=e(\"../../composite-xform\"),i=e(\"../../style/color-xform\"),s=e(\"./cfvo-xform\");t.exports=class extends n{constructor(){super(),this.map={cfvo:this.cfvoXform=new s,color:this.colorXform=new i}}get tag(){return\"dataBar\"}render(e,t){e.openNode(this.tag),t.cfvo.forEach(t=>{this.cfvoXform.render(e,t)}),this.colorXform.render(e,t.color),e.closeNode()}createNewModel(){return{cfvo:[]}}onParserClose(e,t){switch(e){case\"cfvo\":this.model.cfvo.push(t.model);break;case\"color\":this.model.color=t.model}}}},{\"../../composite-xform\":48,\"../../style/color-xform\":128,\"./cfvo-xform\":84}],89:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\"),i=e(\"../../composite-xform\");class s extends n{get tag(){return\"x14:id\"}render(e,t){e.leafNode(this.tag,null,t)}parseOpen(){this.model=\"\"}parseText(e){this.model+=e}parseClose(e){return e!==this.tag}}class o extends i{constructor(){super(),this.map={\"x14:id\":this.idXform=new s}}get tag(){return\"ext\"}render(e,t){e.openNode(this.tag,{uri:\"{B025F937-C7B1-47D3-B67F-A62EFF666E3E}\",\"xmlns:x14\":\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main\"}),this.idXform.render(e,t.x14Id),e.closeNode()}createNewModel(){return{}}onParserClose(e,t){this.model.x14Id=t.model}}t.exports=class extends i{constructor(){super(),this.map={ext:new o}}get tag(){return\"extLst\"}render(e,t){e.openNode(this.tag),this.map.ext.render(e,t),e.closeNode()}createNewModel(){return{}}onParserClose(e,t){Object.assign(this.model,t.model)}}},{\"../../base-xform\":32,\"../../composite-xform\":48}],90:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\");t.exports=class extends n{get tag(){return\"formula\"}render(e,t){e.leafNode(this.tag,null,t)}parseOpen(){this.model=\"\"}parseText(e){this.model+=e}parseClose(e){return e!==this.tag}}},{\"../../base-xform\":32}],91:[function(e,t,r){\"use strict\";const n=e(\"../../base-xform\"),i=e(\"../../composite-xform\"),s=e(\"./cfvo-xform\");t.exports=class extends i{constructor(){super(),this.map={cfvo:this.cfvoXform=new s}}get tag(){return\"iconSet\"}render(e,t){e.openNode(this.tag,{iconSet:n.toStringAttribute(t.iconSet,\"3TrafficLights\"),reverse:n.toBoolAttribute(t.reverse,!1),showValue:n.toBoolAttribute(t.showValue,!0)}),t.cfvo.forEach(t=>{this.cfvoXform.render(e,t)}),e.closeNode()}createNewModel(e){let{attributes:t}=e;return{iconSet:n.toStringValue(t.iconSet,\"3TrafficLights\"),reverse:n.toBoolValue(t.reverse),showValue:n.toBoolValue(t.showValue),cfvo:[]}}onParserClose(e,t){this.model[e].push(t.model)}}},{\"../../base-xform\":32,\"../../composite-xform\":48,\"./cfvo-xform\":84}],92:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/utils\"),i=e(\"../base-xform\");t.exports=class extends i{get tag(){return\"col\"}prepare(e,t){const r=t.styles.addStyleModel(e.style||{});r&&(e.styleId=r)}render(e,t){e.openNode(\"col\"),e.addAttribute(\"min\",t.min),e.addAttribute(\"max\",t.max),t.width&&e.addAttribute(\"width\",t.width),t.styleId&&e.addAttribute(\"style\",t.styleId),t.hidden&&e.addAttribute(\"hidden\",\"1\"),t.bestFit&&e.addAttribute(\"bestFit\",\"1\"),t.outlineLevel&&e.addAttribute(\"outlineLevel\",t.outlineLevel),t.collapsed&&e.addAttribute(\"collapsed\",\"1\"),e.addAttribute(\"customWidth\",\"1\"),e.closeNode()}parseOpen(e){if(\"col\"===e.name){const t=this.model={min:parseInt(e.attributes.min||\"0\",10),max:parseInt(e.attributes.max||\"0\",10),width:void 0===e.attributes.width?void 0:parseFloat(e.attributes.width||\"0\")};return e.attributes.style&&(t.styleId=parseInt(e.attributes.style,10)),n.parseBoolean(e.attributes.hidden)&&(t.hidden=!0),n.parseBoolean(e.attributes.bestFit)&&(t.bestFit=!0),e.attributes.outlineLevel&&(t.outlineLevel=parseInt(e.attributes.outlineLevel,10)),n.parseBoolean(e.attributes.collapsed)&&(t.collapsed=!0),!0}return!1}parseText(){}parseClose(){return!1}reconcile(e,t){e.styleId&&(e.style=t.styles.getStyleModel(e.styleId))}}},{\"../../../utils/utils\":27,\"../base-xform\":32}],93:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/under-dash\"),i=e(\"../../../utils/utils\"),s=e(\"../../../utils/col-cache\"),o=e(\"../base-xform\"),a=e(\"../../../doc/range\");function l(e,t,r,n){const i=t[r];void 0!==i?e[r]=i:void 0!==n&&(e[r]=n)}function c(e,t,r,n){const s=t[r];void 0!==s?e[r]=i.parseBoolean(s):void 0!==n&&(e[r]=n)}t.exports=class extends o{get tag(){return\"dataValidations\"}render(e,t){const r=function(e){const t=n.map(e,(e,t)=>({address:t,dataValidation:e,marked:!1})).sort((e,t)=>n.strcmp(e.address,t.address)),r=n.keyBy(t,\"address\"),i=(t,r,i)=>{for(let o=0;o<r;o++){const r=s.encodeAddress(t.row+o,i);if(!e[r]||!n.isEqual(e[t.address],e[r]))return!1}return!0};return t.map(t=>{if(!t.marked){const o=s.decodeEx(t.address);if(o.dimensions)return r[o.dimensions].marked=!0,{...t.dataValidation,sqref:t.address};let a=1,l=s.encodeAddress(o.row+a,o.col);for(;e[l]&&n.isEqual(t.dataValidation,e[l]);)a++,l=s.encodeAddress(o.row+a,o.col);let c=1;for(;i(o,a,o.col+c);)c++;for(let e=0;e<a;e++)for(let t=0;t<c;t++)l=s.encodeAddress(o.row+e,o.col+t),r[l].marked=!0;if(a>1||c>1){const e=o.row+(a-1),r=o.col+(c-1);return{...t.dataValidation,sqref:`${t.address}:${s.encodeAddress(e,r)}`}}return{...t.dataValidation,sqref:t.address}}return null}).filter(Boolean)}(t);r.length&&(e.openNode(\"dataValidations\",{count:r.length}),r.forEach(t=>{e.openNode(\"dataValidation\"),\"any\"!==t.type&&(e.addAttribute(\"type\",t.type),t.operator&&\"list\"!==t.type&&\"between\"!==t.operator&&e.addAttribute(\"operator\",t.operator),t.allowBlank&&e.addAttribute(\"allowBlank\",\"1\")),t.showInputMessage&&e.addAttribute(\"showInputMessage\",\"1\"),t.promptTitle&&e.addAttribute(\"promptTitle\",t.promptTitle),t.prompt&&e.addAttribute(\"prompt\",t.prompt),t.showErrorMessage&&e.addAttribute(\"showErrorMessage\",\"1\"),t.errorStyle&&e.addAttribute(\"errorStyle\",t.errorStyle),t.errorTitle&&e.addAttribute(\"errorTitle\",t.errorTitle),t.error&&e.addAttribute(\"error\",t.error),e.addAttribute(\"sqref\",t.sqref),(t.formulae||[]).forEach((r,n)=>{e.openNode(\"formula\"+(n+1)),\"date\"===t.type?e.writeText(i.dateToExcel(new Date(r))):e.writeText(r),e.closeNode()}),e.closeNode()}),e.closeNode())}parseOpen(e){switch(e.name){case\"dataValidations\":return this.model={},!0;case\"dataValidation\":{this._address=e.attributes.sqref;const t={type:e.attributes.type||\"any\",formulae:[]};switch(e.attributes.type&&c(t,e.attributes,\"allowBlank\"),c(t,e.attributes,\"showInputMessage\"),c(t,e.attributes,\"showErrorMessage\"),t.type){case\"any\":case\"list\":case\"custom\":break;default:l(t,e.attributes,\"operator\",\"between\")}return l(t,e.attributes,\"promptTitle\"),l(t,e.attributes,\"prompt\"),l(t,e.attributes,\"errorStyle\"),l(t,e.attributes,\"errorTitle\"),l(t,e.attributes,\"error\"),this._dataValidation=t,!0}case\"formula1\":case\"formula2\":return this._formula=[],!0;default:return!1}}parseText(e){this._formula&&this._formula.push(e)}parseClose(e){switch(e){case\"dataValidations\":return!1;case\"dataValidation\":this._dataValidation.formulae&&this._dataValidation.formulae.length||(delete this._dataValidation.formulae,delete this._dataValidation.operator);return(this._address.split(/\\s+/g)||[]).forEach(e=>{if(e.includes(\":\")){new a(e).forEachAddress(e=>{this.model[e]=this._dataValidation})}else this.model[e]=this._dataValidation}),!0;case\"formula1\":case\"formula2\":{let e=this._formula.join(\"\");switch(this._dataValidation.type){case\"whole\":case\"textLength\":e=parseInt(e,10);break;case\"decimal\":e=parseFloat(e);break;case\"date\":e=i.excelToDate(parseFloat(e))}return this._dataValidation.formulae.push(e),this._formula=void 0,!0}default:return!0}}}},{\"../../../doc/range\":10,\"../../../utils/col-cache\":19,\"../../../utils/under-dash\":26,\"../../../utils/utils\":27,\"../base-xform\":32}],94:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"dimension\"}render(e,t){t&&e.leafNode(\"dimension\",{ref:t})}parseOpen(e){return\"dimension\"===e.name&&(this.model=e.attributes.ref,!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],95:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"drawing\"}render(e,t){t&&e.leafNode(this.tag,{\"r:id\":t.rId})}parseOpen(e){switch(e.name){case this.tag:return this.model={rId:e.attributes[\"r:id\"]},!0;default:return!1}}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],96:[function(e,t,r){\"use strict\";const n=e(\"../composite-xform\"),i=e(\"./cf-ext/conditional-formattings-ext-xform\");class s extends n{constructor(){super(),this.map={\"x14:conditionalFormattings\":this.conditionalFormattings=new i}}get tag(){return\"ext\"}hasContent(e){return this.conditionalFormattings.hasContent(e.conditionalFormattings)}prepare(e,t){this.conditionalFormattings.prepare(e.conditionalFormattings,t)}render(e,t){e.openNode(\"ext\",{uri:\"{78C0D931-6437-407d-A8EE-F0AAD7539E65}\",\"xmlns:x14\":\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main\"}),this.conditionalFormattings.render(e,t.conditionalFormattings),e.closeNode()}createNewModel(){return{}}onParserClose(e,t){this.model[e]=t.model}}t.exports=class extends n{constructor(){super(),this.map={ext:this.ext=new s}}get tag(){return\"extLst\"}prepare(e,t){this.ext.prepare(e,t)}hasContent(e){return this.ext.hasContent(e)}render(e,t){this.hasContent(t)&&(e.openNode(\"extLst\"),this.ext.render(e,t),e.closeNode())}createNewModel(){return{}}onParserClose(e,t){Object.assign(this.model,t.model)}}},{\"../composite-xform\":48,\"./cf-ext/conditional-formattings-ext-xform\":78}],97:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"headerFooter\"}render(e,t){if(t){e.addRollback();let r=!1;e.openNode(\"headerFooter\"),t.differentFirst&&(e.addAttribute(\"differentFirst\",\"1\"),r=!0),t.differentOddEven&&(e.addAttribute(\"differentOddEven\",\"1\"),r=!0),t.oddHeader&&\"string\"==typeof t.oddHeader&&(e.leafNode(\"oddHeader\",null,t.oddHeader),r=!0),t.oddFooter&&\"string\"==typeof t.oddFooter&&(e.leafNode(\"oddFooter\",null,t.oddFooter),r=!0),t.evenHeader&&\"string\"==typeof t.evenHeader&&(e.leafNode(\"evenHeader\",null,t.evenHeader),r=!0),t.evenFooter&&\"string\"==typeof t.evenFooter&&(e.leafNode(\"evenFooter\",null,t.evenFooter),r=!0),t.firstHeader&&\"string\"==typeof t.firstHeader&&(e.leafNode(\"firstHeader\",null,t.firstHeader),r=!0),t.firstFooter&&\"string\"==typeof t.firstFooter&&(e.leafNode(\"firstFooter\",null,t.firstFooter),r=!0),r?(e.closeNode(),e.commit()):e.rollback()}}parseOpen(e){switch(e.name){case\"headerFooter\":return this.model={},e.attributes.differentFirst&&(this.model.differentFirst=1===parseInt(e.attributes.differentFirst,0)),e.attributes.differentOddEven&&(this.model.differentOddEven=1===parseInt(e.attributes.differentOddEven,0)),!0;case\"oddHeader\":return this.currentNode=\"oddHeader\",!0;case\"oddFooter\":return this.currentNode=\"oddFooter\",!0;case\"evenHeader\":return this.currentNode=\"evenHeader\",!0;case\"evenFooter\":return this.currentNode=\"evenFooter\",!0;case\"firstHeader\":return this.currentNode=\"firstHeader\",!0;case\"firstFooter\":return this.currentNode=\"firstFooter\",!0;default:return!1}}parseText(e){switch(this.currentNode){case\"oddHeader\":this.model.oddHeader=e;break;case\"oddFooter\":this.model.oddFooter=e;break;case\"evenHeader\":this.model.evenHeader=e;break;case\"evenFooter\":this.model.evenFooter=e;break;case\"firstHeader\":this.model.firstHeader=e;break;case\"firstFooter\":this.model.firstFooter=e}}parseClose(){switch(this.currentNode){case\"oddHeader\":case\"oddFooter\":case\"evenHeader\":case\"evenFooter\":case\"firstHeader\":case\"firstFooter\":return this.currentNode=void 0,!0;default:return!1}}}},{\"../base-xform\":32}],98:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"hyperlink\"}render(e,t){this.isInternalLink(t)?e.leafNode(\"hyperlink\",{ref:t.address,\"r:id\":t.rId,tooltip:t.tooltip,location:t.target}):e.leafNode(\"hyperlink\",{ref:t.address,\"r:id\":t.rId,tooltip:t.tooltip})}parseOpen(e){return\"hyperlink\"===e.name&&(this.model={address:e.attributes.ref,rId:e.attributes[\"r:id\"],tooltip:e.attributes.tooltip},e.attributes.location&&(this.model.target=e.attributes.location),!0)}parseText(){}parseClose(){return!1}isInternalLink(e){return e.target&&/^[^!]+![a-zA-Z]+[\\d]+$/.test(e.target)}}},{\"../base-xform\":32}],99:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"mergeCell\"}render(e,t){e.leafNode(\"mergeCell\",{ref:t})}parseOpen(e){return\"mergeCell\"===e.name&&(this.model=e.attributes.ref,!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],100:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/under-dash\"),i=e(\"../../../doc/range\"),s=e(\"../../../utils/col-cache\"),o=e(\"../../../doc/enums\");t.exports=class{constructor(){this.merges={}}add(e){if(this.merges[e.master])this.merges[e.master].expandToAddress(e.address);else{const t=`${e.master}:${e.address}`;this.merges[e.master]=new i(t)}}get mergeCells(){return n.map(this.merges,e=>e.range)}reconcile(e,t){n.each(e,e=>{const r=s.decode(e);for(let e=r.top;e<=r.bottom;e++){const n=t[e-1];for(let t=r.left;t<=r.right;t++){const i=n.cells[t-1];i?i.type===o.ValueType.Merge&&(i.master=r.tl):n.cells[t]={type:o.ValueType.Null,address:s.encodeAddress(e,t)}}}})}getMasterAddress(e){const t=this.hash[e];return t&&t.tl}}},{\"../../../doc/enums\":7,\"../../../doc/range\":10,\"../../../utils/col-cache\":19,\"../../../utils/under-dash\":26}],101:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e=>void 0!==e;t.exports=class extends n{get tag(){return\"outlinePr\"}render(e,t){return!(!t||!i(t.summaryBelow)&&!i(t.summaryRight))&&(e.leafNode(this.tag,{summaryBelow:i(t.summaryBelow)?Number(t.summaryBelow):void 0,summaryRight:i(t.summaryRight)?Number(t.summaryRight):void 0}),!0)}parseOpen(e){return e.name===this.tag&&(this.model={summaryBelow:i(e.attributes.summaryBelow)?Boolean(Number(e.attributes.summaryBelow)):void 0,summaryRight:i(e.attributes.summaryRight)?Boolean(Number(e.attributes.summaryRight)):void 0},!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],102:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"brk\"}render(e,t){e.leafNode(\"brk\",t)}parseOpen(e){return\"brk\"===e.name&&(this.model=e.attributes.ref,!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],103:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/under-dash\"),i=e(\"../base-xform\");t.exports=class extends i{get tag(){return\"pageMargins\"}render(e,t){if(t){const r={left:t.left,right:t.right,top:t.top,bottom:t.bottom,header:t.header,footer:t.footer};n.some(r,e=>void 0!==e)&&e.leafNode(this.tag,r)}}parseOpen(e){switch(e.name){case this.tag:return this.model={left:parseFloat(e.attributes.left||.7),right:parseFloat(e.attributes.right||.7),top:parseFloat(e.attributes.top||.75),bottom:parseFloat(e.attributes.bottom||.75),header:parseFloat(e.attributes.header||.3),footer:parseFloat(e.attributes.footer||.3)},!0;default:return!1}}parseText(){}parseClose(){return!1}}},{\"../../../utils/under-dash\":26,\"../base-xform\":32}],104:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"pageSetUpPr\"}render(e,t){return!(!t||!t.fitToPage)&&(e.leafNode(this.tag,{fitToPage:t.fitToPage?\"1\":void 0}),!0)}parseOpen(e){return e.name===this.tag&&(this.model={fitToPage:\"1\"===e.attributes.fitToPage},!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],105:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/under-dash\"),i=e(\"../base-xform\");function s(e){return e?\"1\":void 0}function o(e){switch(e){case\"overThenDown\":return e;default:return}}function a(e){switch(e){case\"atEnd\":case\"asDisplyed\":return e;default:return}}function l(e){switch(e){case\"dash\":case\"blank\":case\"NA\":return e;default:return}}t.exports=class extends i{get tag(){return\"pageSetup\"}render(e,t){if(t){const r={paperSize:t.paperSize,orientation:t.orientation,horizontalDpi:t.horizontalDpi,verticalDpi:t.verticalDpi,pageOrder:o(t.pageOrder),blackAndWhite:s(t.blackAndWhite),draft:s(t.draft),cellComments:a(t.cellComments),errors:l(t.errors),scale:t.scale,fitToWidth:t.fitToWidth,fitToHeight:t.fitToHeight,firstPageNumber:t.firstPageNumber,useFirstPageNumber:s(t.firstPageNumber),usePrinterDefaults:s(t.usePrinterDefaults),copies:t.copies};n.some(r,e=>void 0!==e)&&e.leafNode(this.tag,r)}}parseOpen(e){switch(e.name){case this.tag:return this.model={paperSize:(t=e.attributes.paperSize,void 0!==t?parseInt(t,10):void 0),orientation:e.attributes.orientation||\"portrait\",horizontalDpi:parseInt(e.attributes.horizontalDpi||\"4294967295\",10),verticalDpi:parseInt(e.attributes.verticalDpi||\"4294967295\",10),pageOrder:e.attributes.pageOrder||\"downThenOver\",blackAndWhite:\"1\"===e.attributes.blackAndWhite,draft:\"1\"===e.attributes.draft,cellComments:e.attributes.cellComments||\"None\",errors:e.attributes.errors||\"displayed\",scale:parseInt(e.attributes.scale||\"100\",10),fitToWidth:parseInt(e.attributes.fitToWidth||\"1\",10),fitToHeight:parseInt(e.attributes.fitToHeight||\"1\",10),firstPageNumber:parseInt(e.attributes.firstPageNumber||\"1\",10),useFirstPageNumber:\"1\"===e.attributes.useFirstPageNumber,usePrinterDefaults:\"1\"===e.attributes.usePrinterDefaults,copies:parseInt(e.attributes.copies||\"1\",10)},!0;default:return!1}var t}parseText(){}parseClose(){return!1}}},{\"../../../utils/under-dash\":26,\"../base-xform\":32}],106:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"picture\"}render(e,t){t&&e.leafNode(this.tag,{\"r:id\":t.rId})}parseOpen(e){switch(e.name){case this.tag:return this.model={rId:e.attributes[\"r:id\"]},!0;default:return!1}}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],107:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/under-dash\"),i=e(\"../base-xform\");function s(e){return e?\"1\":void 0}t.exports=class extends i{get tag(){return\"printOptions\"}render(e,t){if(t){const r={headings:s(t.showRowColHeaders),gridLines:s(t.showGridLines),horizontalCentered:s(t.horizontalCentered),verticalCentered:s(t.verticalCentered)};n.some(r,e=>void 0!==e)&&e.leafNode(this.tag,r)}}parseOpen(e){switch(e.name){case this.tag:return this.model={showRowColHeaders:\"1\"===e.attributes.headings,showGridLines:\"1\"===e.attributes.gridLines,horizontalCentered:\"1\"===e.attributes.horizontalCentered,verticalCentered:\"1\"===e.attributes.verticalCentered},!0;default:return!1}}parseText(){}parseClose(){return!1}}},{\"../../../utils/under-dash\":26,\"../base-xform\":32}],108:[function(e,t,r){\"use strict\";const n=e(\"./page-breaks-xform\"),i=e(\"../list-xform\");t.exports=class extends i{constructor(){super({tag:\"rowBreaks\",count:!0,childXform:new n})}render(e,t){if(t&&t.length){e.openNode(this.tag,this.$),this.count&&(e.addAttribute(this.$count,t.length),e.addAttribute(\"manualBreakCount\",t.length));const{childXform:r}=this;t.forEach(t=>{r.render(e,t)}),e.closeNode()}else this.empty&&e.leafNode(this.tag)}}},{\"../list-xform\":71,\"./page-breaks-xform\":102}],109:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"../../../utils/utils\"),s=e(\"./cell-xform\");t.exports=class extends n{constructor(e){super(),this.maxItems=e&&e.maxItems,this.map={c:new s}}get tag(){return\"row\"}prepare(e,t){const r=t.styles.addStyleModel(e.style);r&&(e.styleId=r);const n=this.map.c;e.cells.forEach(e=>{n.prepare(e,t)})}render(e,t,r){e.openNode(\"row\"),e.addAttribute(\"r\",t.number),t.height&&(e.addAttribute(\"ht\",t.height),e.addAttribute(\"customHeight\",\"1\")),t.hidden&&e.addAttribute(\"hidden\",\"1\"),t.min>0&&t.max>0&&t.min<=t.max&&e.addAttribute(\"spans\",`${t.min}:${t.max}`),t.styleId&&(e.addAttribute(\"s\",t.styleId),e.addAttribute(\"customFormat\",\"1\")),e.addAttribute(\"x14ac:dyDescent\",\"0.25\"),t.outlineLevel&&e.addAttribute(\"outlineLevel\",t.outlineLevel),t.collapsed&&e.addAttribute(\"collapsed\",\"1\");const n=this.map.c;t.cells.forEach(t=>{n.render(e,t,r)}),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;if(\"row\"===e.name){this.numRowsSeen+=1;const t=e.attributes.spans?e.attributes.spans.split(\":\").map(e=>parseInt(e,10)):[void 0,void 0],r=this.model={number:parseInt(e.attributes.r,10),min:t[0],max:t[1],cells:[]};return e.attributes.s&&(r.styleId=parseInt(e.attributes.s,10)),i.parseBoolean(e.attributes.hidden)&&(r.hidden=!0),i.parseBoolean(e.attributes.bestFit)&&(r.bestFit=!0),e.attributes.ht&&(r.height=parseFloat(e.attributes.ht)),e.attributes.outlineLevel&&(r.outlineLevel=parseInt(e.attributes.outlineLevel,10)),i.parseBoolean(e.attributes.collapsed)&&(r.collapsed=!0),!0}return this.parser=this.map[e.name],!!this.parser&&(this.parser.parseOpen(e),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser){if(!this.parser.parseClose(e)){if(this.model.cells.push(this.parser.model),this.maxItems&&this.model.cells.length>this.maxItems)throw new Error(`Max column count (${this.maxItems}) exceeded`);this.parser=void 0}return!0}return!1}reconcile(e,t){e.style=e.styleId?t.styles.getStyleModel(e.styleId):{},void 0!==e.styleId&&(e.styleId=void 0);const r=this.map.c;e.cells.forEach(e=>{r.reconcile(e,t)})}}},{\"../../../utils/utils\":27,\"../base-xform\":32,\"./cell-xform\":73}],110:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/under-dash\"),i=e(\"../base-xform\");t.exports=class extends i{get tag(){return\"sheetFormatPr\"}render(e,t){if(t){const r={defaultRowHeight:t.defaultRowHeight,outlineLevelRow:t.outlineLevelRow,outlineLevelCol:t.outlineLevelCol,\"x14ac:dyDescent\":t.dyDescent};t.defaultColWidth&&(r.defaultColWidth=t.defaultColWidth),t.defaultRowHeight&&15===t.defaultRowHeight||(r.customHeight=\"1\"),n.some(r,e=>void 0!==e)&&e.leafNode(\"sheetFormatPr\",r)}}parseOpen(e){return\"sheetFormatPr\"===e.name&&(this.model={defaultRowHeight:parseFloat(e.attributes.defaultRowHeight||\"0\"),dyDescent:parseFloat(e.attributes[\"x14ac:dyDescent\"]||\"0\"),outlineLevelRow:parseInt(e.attributes.outlineLevelRow||\"0\",10),outlineLevelCol:parseInt(e.attributes.outlineLevelCol||\"0\",10)},e.attributes.defaultColWidth&&(this.model.defaultColWidth=parseFloat(e.attributes.defaultColWidth)),!0)}parseText(){}parseClose(){return!1}}},{\"../../../utils/under-dash\":26,\"../base-xform\":32}],111:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"../style/color-xform\"),s=e(\"./page-setup-properties-xform\"),o=e(\"./outline-properties-xform\");t.exports=class extends n{constructor(){super(),this.map={tabColor:new i(\"tabColor\"),pageSetUpPr:new s,outlinePr:new o}}get tag(){return\"sheetPr\"}render(e,t){if(t){e.addRollback(),e.openNode(\"sheetPr\");let r=!1;r=this.map.tabColor.render(e,t.tabColor)||r,r=this.map.pageSetUpPr.render(e,t.pageSetup)||r,r=this.map.outlinePr.render(e,t.outlineProperties)||r,r?(e.closeNode(),e.commit()):e.rollback()}}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):e.name===this.tag?(this.reset(),!0):!!this.map[e.name]&&(this.parser=this.map[e.name],this.parser.parseOpen(e),!0)}parseText(e){return!!this.parser&&(this.parser.parseText(e),!0)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):(this.map.tabColor.model||this.map.pageSetUpPr.model||this.map.outlinePr.model?(this.model={},this.map.tabColor.model&&(this.model.tabColor=this.map.tabColor.model),this.map.pageSetUpPr.model&&(this.model.pageSetup=this.map.pageSetUpPr.model),this.map.outlinePr.model&&(this.model.outlineProperties=this.map.outlinePr.model)):this.model=null,!1)}}},{\"../base-xform\":32,\"../style/color-xform\":128,\"./outline-properties-xform\":101,\"./page-setup-properties-xform\":104}],112:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/under-dash\"),i=e(\"../base-xform\");function s(e,t){return e?t:void 0}function o(e,t){return e===t||void 0}t.exports=class extends i{get tag(){return\"sheetProtection\"}render(e,t){if(t){const r={sheet:s(t.sheet,\"1\"),selectLockedCells:!1===t.selectLockedCells?\"1\":void 0,selectUnlockedCells:!1===t.selectUnlockedCells?\"1\":void 0,formatCells:s(t.formatCells,\"0\"),formatColumns:s(t.formatColumns,\"0\"),formatRows:s(t.formatRows,\"0\"),insertColumns:s(t.insertColumns,\"0\"),insertRows:s(t.insertRows,\"0\"),insertHyperlinks:s(t.insertHyperlinks,\"0\"),deleteColumns:s(t.deleteColumns,\"0\"),deleteRows:s(t.deleteRows,\"0\"),sort:s(t.sort,\"0\"),autoFilter:s(t.autoFilter,\"0\"),pivotTables:s(t.pivotTables,\"0\")};t.sheet&&(r.algorithmName=t.algorithmName,r.hashValue=t.hashValue,r.saltValue=t.saltValue,r.spinCount=t.spinCount,r.objects=s(!1===t.objects,\"1\"),r.scenarios=s(!1===t.scenarios,\"1\")),n.some(r,e=>void 0!==e)&&e.leafNode(this.tag,r)}}parseOpen(e){switch(e.name){case this.tag:return this.model={sheet:o(e.attributes.sheet,\"1\"),objects:\"1\"!==e.attributes.objects&&void 0,scenarios:\"1\"!==e.attributes.scenarios&&void 0,selectLockedCells:\"1\"!==e.attributes.selectLockedCells&&void 0,selectUnlockedCells:\"1\"!==e.attributes.selectUnlockedCells&&void 0,formatCells:o(e.attributes.formatCells,\"0\"),formatColumns:o(e.attributes.formatColumns,\"0\"),formatRows:o(e.attributes.formatRows,\"0\"),insertColumns:o(e.attributes.insertColumns,\"0\"),insertRows:o(e.attributes.insertRows,\"0\"),insertHyperlinks:o(e.attributes.insertHyperlinks,\"0\"),deleteColumns:o(e.attributes.deleteColumns,\"0\"),deleteRows:o(e.attributes.deleteRows,\"0\"),sort:o(e.attributes.sort,\"0\"),autoFilter:o(e.attributes.autoFilter,\"0\"),pivotTables:o(e.attributes.pivotTables,\"0\")},e.attributes.algorithmName&&(this.model.algorithmName=e.attributes.algorithmName,this.model.hashValue=e.attributes.hashValue,this.model.saltValue=e.attributes.saltValue,this.model.spinCount=parseInt(e.attributes.spinCount,10)),!0;default:return!1}}parseText(){}parseClose(){return!1}}},{\"../../../utils/under-dash\":26,\"../base-xform\":32}],113:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/col-cache\"),i=e(\"../base-xform\"),s={frozen:\"frozen\",frozenSplit:\"frozen\",split:\"split\"};t.exports=class extends i{get tag(){return\"sheetView\"}prepare(e){switch(e.state){case\"frozen\":case\"split\":break;default:e.state=\"normal\"}}render(e,t){e.openNode(\"sheetView\",{workbookViewId:t.workbookViewId||0});const r=function(t,r,n){n&&e.addAttribute(t,r)};let i,s,o,a;switch(r(\"rightToLeft\",\"1\",!0===t.rightToLeft),r(\"tabSelected\",\"1\",t.tabSelected),r(\"showRuler\",\"0\",!1===t.showRuler),r(\"showRowColHeaders\",\"0\",!1===t.showRowColHeaders),r(\"showGridLines\",\"0\",!1===t.showGridLines),r(\"zoomScale\",t.zoomScale,t.zoomScale),r(\"zoomScaleNormal\",t.zoomScaleNormal,t.zoomScaleNormal),r(\"view\",t.style,t.style),t.state){case\"frozen\":s=t.xSplit||0,o=t.ySplit||0,i=t.topLeftCell||n.getAddress(o+1,s+1).address,a=(t.xSplit&&t.ySplit?\"bottomRight\":t.xSplit&&\"topRight\")||\"bottomLeft\",e.leafNode(\"pane\",{xSplit:t.xSplit||void 0,ySplit:t.ySplit||void 0,topLeftCell:i,activePane:a,state:\"frozen\"}),e.leafNode(\"selection\",{pane:a,activeCell:t.activeCell,sqref:t.activeCell});break;case\"split\":\"topLeft\"===t.activePane&&(t.activePane=void 0),e.leafNode(\"pane\",{xSplit:t.xSplit||void 0,ySplit:t.ySplit||void 0,topLeftCell:t.topLeftCell,activePane:t.activePane}),e.leafNode(\"selection\",{pane:t.activePane,activeCell:t.activeCell,sqref:t.activeCell});break;case\"normal\":t.activeCell&&e.leafNode(\"selection\",{activeCell:t.activeCell,sqref:t.activeCell})}e.closeNode()}parseOpen(e){switch(e.name){case\"sheetView\":return this.sheetView={workbookViewId:parseInt(e.attributes.workbookViewId,10),rightToLeft:\"1\"===e.attributes.rightToLeft,tabSelected:\"1\"===e.attributes.tabSelected,showRuler:!(\"0\"===e.attributes.showRuler),showRowColHeaders:!(\"0\"===e.attributes.showRowColHeaders),showGridLines:!(\"0\"===e.attributes.showGridLines),zoomScale:parseInt(e.attributes.zoomScale||\"100\",10),zoomScaleNormal:parseInt(e.attributes.zoomScaleNormal||\"100\",10),style:e.attributes.view},this.pane=void 0,this.selections={},!0;case\"pane\":return this.pane={xSplit:parseInt(e.attributes.xSplit||\"0\",10),ySplit:parseInt(e.attributes.ySplit||\"0\",10),topLeftCell:e.attributes.topLeftCell,activePane:e.attributes.activePane||\"topLeft\",state:e.attributes.state},!0;case\"selection\":{const t=e.attributes.pane||\"topLeft\";return this.selections[t]={pane:t,activeCell:e.attributes.activeCell},!0}default:return!1}}parseText(){}parseClose(e){let t,r;switch(e){case\"sheetView\":return this.sheetView&&this.pane?(t=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:s[this.pane.state]||\"split\",xSplit:this.pane.xSplit,ySplit:this.pane.ySplit,topLeftCell:this.pane.topLeftCell,showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},\"split\"===this.model.state&&(t.activePane=this.pane.activePane),r=this.selections[this.pane.activePane],r&&r.activeCell&&(t.activeCell=r.activeCell),this.sheetView.style&&(t.style=this.sheetView.style)):(t=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:\"normal\",showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},r=this.selections.topLeft,r&&r.activeCell&&(t.activeCell=r.activeCell),this.sheetView.style&&(t.style=this.sheetView.style)),!1;default:return!0}}reconcile(){}}},{\"../../../utils/col-cache\":19,\"../base-xform\":32}],114:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"tablePart\"}render(e,t){t&&e.leafNode(this.tag,{\"r:id\":t.rId})}parseOpen(e){switch(e.name){case this.tag:return this.model={rId:e.attributes[\"r:id\"]},!0;default:return!1}}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],115:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/under-dash\"),i=e(\"../../../utils/col-cache\"),s=e(\"../../../utils/xml-stream\"),o=e(\"../../rel-type\"),a=e(\"./merges\"),l=e(\"../base-xform\"),c=e(\"../list-xform\"),u=e(\"./row-xform\"),h=e(\"./col-xform\"),f=e(\"./dimension-xform\"),d=e(\"./hyperlink-xform\"),p=e(\"./merge-cell-xform\"),m=e(\"./data-validations-xform\"),b=e(\"./sheet-properties-xform\"),g=e(\"./sheet-format-properties-xform\"),y=e(\"./sheet-view-xform\"),v=e(\"./sheet-protection-xform\"),w=e(\"./page-margins-xform\"),_=e(\"./page-setup-xform\"),x=e(\"./print-options-xform\"),k=e(\"./auto-filter-xform\"),S=e(\"./picture-xform\"),M=e(\"./drawing-xform\"),C=e(\"./table-part-xform\"),T=e(\"./row-breaks-xform\"),E=e(\"./header-footer-xform\"),A=e(\"./cf/conditional-formattings-xform\"),R=e(\"./ext-lst-xform\"),O=(e,t)=>{if(!t||!t.length)return e;if(!e||!e.length)return t;const r={},n={};return e.forEach(e=>{r[e.ref]=e,e.rules.forEach(e=>{const{x14Id:t}=e;t&&(n[t]=e)})}),t.forEach(t=>{t.rules.forEach(i=>{const s=n[i.x14Id];s?((e,t)=>{Object.keys(t).forEach(r=>{const n=e[r],i=t[r];void 0===n&&void 0!==i&&(e[r]=i)})})(s,i):r[t.ref]?r[t.ref].rules.push(i):e.push({ref:t.ref,rules:[i]})})}),e};class j extends l{constructor(e){super();const{maxRows:t,maxCols:r,ignoreNodes:n}=e||{};this.ignoreNodes=n||[],this.map={sheetPr:new b,dimension:new f,sheetViews:new c({tag:\"sheetViews\",count:!1,childXform:new y}),sheetFormatPr:new g,cols:new c({tag:\"cols\",count:!1,childXform:new h}),sheetData:new c({tag:\"sheetData\",count:!1,empty:!0,childXform:new u({maxItems:r}),maxItems:t}),autoFilter:new k,mergeCells:new c({tag:\"mergeCells\",count:!0,childXform:new p}),rowBreaks:new T,hyperlinks:new c({tag:\"hyperlinks\",count:!1,childXform:new d}),pageMargins:new w,dataValidations:new m,pageSetup:new _,headerFooter:new E,printOptions:new x,picture:new S,drawing:new M,sheetProtection:new v,tableParts:new c({tag:\"tableParts\",count:!0,childXform:new C}),conditionalFormatting:new A,extLst:new R}}prepare(e,t){t.merges=new a,e.hyperlinks=t.hyperlinks=[],e.comments=t.comments=[],t.formulae={},t.siFormulae=0,this.map.cols.prepare(e.cols,t),this.map.sheetData.prepare(e.rows,t),this.map.conditionalFormatting.prepare(e.conditionalFormattings,t),e.mergeCells=t.merges.mergeCells;const r=e.rels=[];function n(e){return\"rId\"+(e.length+1)}if(e.hyperlinks.forEach(e=>{const t=n(r);e.rId=t,r.push({Id:t,Type:o.Hyperlink,Target:e.target,TargetMode:\"External\"})}),e.comments.length>0){const s={Id:n(r),Type:o.Comments,Target:`../comments${e.id}.xml`};r.push(s);const a={Id:n(r),Type:o.VmlDrawing,Target:`../drawings/vmlDrawing${e.id}.vml`};r.push(a),e.comments.forEach(e=>{e.refAddress=i.decodeAddress(e.ref)}),t.commentRefs.push({commentName:\"comments\"+e.id,vmlDrawing:\"vmlDrawing\"+e.id})}const s=[];let l;e.media.forEach(i=>{if(\"background\"===i.type){const s=n(r);l=t.media[i.imageId],r.push({Id:s,Type:o.Image,Target:`../media/${l.name}.${l.extension}`}),e.background={rId:s},e.image=t.media[i.imageId]}else if(\"image\"===i.type){let{drawing:a}=e;l=t.media[i.imageId],a||(a=e.drawing={rId:n(r),name:\"drawing\"+ ++t.drawingsCount,anchors:[],rels:[]},t.drawings.push(a),r.push({Id:a.rId,Type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",Target:`../drawings/${a.name}.xml`}));let c=this.preImageId===i.imageId?s[i.imageId]:s[a.rels.length];c||(c=n(a.rels),s[a.rels.length]=c,a.rels.push({Id:c,Type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",Target:`../media/${l.name}.${l.extension}`}));const u={picture:{rId:c},range:i.range};if(i.hyperlinks&&i.hyperlinks.hyperlink){const e=n(a.rels);s[a.rels.length]=e,u.picture.hyperlinks={tooltip:i.hyperlinks.tooltip,rId:e},a.rels.push({Id:e,Type:o.Hyperlink,Target:i.hyperlinks.hyperlink,TargetMode:\"External\"})}this.preImageId=i.imageId,a.anchors.push(u)}}),e.tables.forEach(e=>{const i=n(r);e.rId=i,r.push({Id:i,Type:o.Table,Target:\"../tables/\"+e.target}),e.columns.forEach(e=>{const{style:r}=e;r&&(e.dxfId=t.styles.addDxfStyle(r))})}),this.map.extLst.prepare(e,t)}render(e,t){e.openXml(s.StdDocAttributes),e.openNode(\"worksheet\",j.WORKSHEET_ATTRIBUTES);const r=t.properties?{defaultRowHeight:t.properties.defaultRowHeight,dyDescent:t.properties.dyDescent,outlineLevelCol:t.properties.outlineLevelCol,outlineLevelRow:t.properties.outlineLevelRow}:void 0;t.properties&&t.properties.defaultColWidth&&(r.defaultColWidth=t.properties.defaultColWidth);const n={outlineProperties:t.properties&&t.properties.outlineProperties,tabColor:t.properties&&t.properties.tabColor,pageSetup:t.pageSetup&&t.pageSetup.fitToPage?{fitToPage:t.pageSetup.fitToPage}:void 0},i=t.pageSetup&&t.pageSetup.margins,a={showRowColHeaders:t.pageSetup&&t.pageSetup.showRowColHeaders,showGridLines:t.pageSetup&&t.pageSetup.showGridLines,horizontalCentered:t.pageSetup&&t.pageSetup.horizontalCentered,verticalCentered:t.pageSetup&&t.pageSetup.verticalCentered},l=t.sheetProtection;this.map.sheetPr.render(e,n),this.map.dimension.render(e,t.dimensions),this.map.sheetViews.render(e,t.views),this.map.sheetFormatPr.render(e,r),this.map.cols.render(e,t.cols),this.map.sheetData.render(e,t.rows),this.map.sheetProtection.render(e,l),this.map.autoFilter.render(e,t.autoFilter),this.map.mergeCells.render(e,t.mergeCells),this.map.conditionalFormatting.render(e,t.conditionalFormattings),this.map.dataValidations.render(e,t.dataValidations),this.map.hyperlinks.render(e,t.hyperlinks),this.map.printOptions.render(e,a),this.map.pageMargins.render(e,i),this.map.pageSetup.render(e,t.pageSetup),this.map.headerFooter.render(e,t.headerFooter),this.map.rowBreaks.render(e,t.rowBreaks),this.map.drawing.render(e,t.drawing),this.map.picture.render(e,t.background),this.map.tableParts.render(e,t.tables),this.map.extLst.render(e,t),t.rels&&t.rels.forEach(t=>{t.Type===o.VmlDrawing&&e.leafNode(\"legacyDrawing\",{\"r:id\":t.Id})}),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):\"worksheet\"===e.name?(n.each(this.map,e=>{e.reset()}),!0):(this.map[e.name]&&!this.ignoreNodes.includes(e.name)&&(this.parser=this.map[e.name],this.parser.parseOpen(e)),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case\"worksheet\":{const e=this.map.sheetFormatPr.model||{};this.map.sheetPr.model&&this.map.sheetPr.model.tabColor&&(e.tabColor=this.map.sheetPr.model.tabColor),this.map.sheetPr.model&&this.map.sheetPr.model.outlineProperties&&(e.outlineProperties=this.map.sheetPr.model.outlineProperties);const t={fitToPage:this.map.sheetPr.model&&this.map.sheetPr.model.pageSetup&&this.map.sheetPr.model.pageSetup.fitToPage||!1,margins:this.map.pageMargins.model},r=Object.assign(t,this.map.pageSetup.model,this.map.printOptions.model),n=O(this.map.conditionalFormatting.model,this.map.extLst.model&&this.map.extLst.model[\"x14:conditionalFormattings\"]);return this.model={dimensions:this.map.dimension.model,cols:this.map.cols.model,rows:this.map.sheetData.model,mergeCells:this.map.mergeCells.model,hyperlinks:this.map.hyperlinks.model,dataValidations:this.map.dataValidations.model,properties:e,views:this.map.sheetViews.model,pageSetup:r,headerFooter:this.map.headerFooter.model,background:this.map.picture.model,drawing:this.map.drawing.model,tables:this.map.tableParts.model,conditionalFormattings:n},this.map.autoFilter.model&&(this.model.autoFilter=this.map.autoFilter.model),this.map.sheetProtection.model&&(this.model.sheetProtection=this.map.sheetProtection.model),!1}default:return!0}}reconcile(e,t){const r=(e.relationships||[]).reduce((r,n)=>{if(r[n.Id]=n,n.Type===o.Comments&&(e.comments=t.comments[n.Target].comments),n.Type===o.VmlDrawing&&e.comments&&e.comments.length){const r=t.vmlDrawings[n.Target].comments;e.comments.forEach((e,t)=>{e.note=Object.assign({},e.note,r[t])})}return r},{});if(t.commentsMap=(e.comments||[]).reduce((e,t)=>(t.ref&&(e[t.ref]=t),e),{}),t.hyperlinkMap=(e.hyperlinks||[]).reduce((e,t)=>(t.rId&&(e[t.address]=r[t.rId].Target),e),{}),t.formulae={},e.rows=e.rows&&e.rows.filter(Boolean)||[],e.rows.forEach(e=>{e.cells=e.cells&&e.cells.filter(Boolean)||[]}),this.map.cols.reconcile(e.cols,t),this.map.sheetData.reconcile(e.rows,t),this.map.conditionalFormatting.reconcile(e.conditionalFormattings,t),e.media=[],e.drawing){const n=r[e.drawing.rId].Target.match(/\\/drawings\\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);if(n){const r=n[1];t.drawings[r].anchors.forEach(t=>{if(t.medium){const r={type:\"image\",imageId:t.medium.index,range:t.range,hyperlinks:t.picture.hyperlinks};e.media.push(r)}})}}const n=e.background&&r[e.background.rId];if(n){const r=n.Target.split(\"/media/\")[1],i=t.mediaIndex&&t.mediaIndex[r];void 0!==i&&e.media.push({type:\"background\",imageId:i})}e.tables=(e.tables||[]).map(e=>{const n=r[e.rId];return t.tables[n.Target]}),delete e.relationships,delete e.hyperlinks,delete e.comments}}j.WORKSHEET_ATTRIBUTES={xmlns:\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\",\"xmlns:r\":\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\"xmlns:mc\":\"http://schemas.openxmlformats.org/markup-compatibility/2006\",\"mc:Ignorable\":\"x14ac\",\"xmlns:x14ac\":\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\"},t.exports=j},{\"../../../utils/col-cache\":19,\"../../../utils/under-dash\":26,\"../../../utils/xml-stream\":28,\"../../rel-type\":31,\"../base-xform\":32,\"../list-xform\":71,\"./auto-filter-xform\":72,\"./cf/conditional-formattings-xform\":87,\"./col-xform\":92,\"./data-validations-xform\":93,\"./dimension-xform\":94,\"./drawing-xform\":95,\"./ext-lst-xform\":96,\"./header-footer-xform\":97,\"./hyperlink-xform\":98,\"./merge-cell-xform\":99,\"./merges\":100,\"./page-margins-xform\":103,\"./page-setup-xform\":105,\"./picture-xform\":106,\"./print-options-xform\":107,\"./row-breaks-xform\":108,\"./row-xform\":109,\"./sheet-format-properties-xform\":110,\"./sheet-properties-xform\":111,\"./sheet-protection-xform\":112,\"./sheet-view-xform\":113,\"./table-part-xform\":114}],116:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.attr=e.attr}render(e,t){t&&(e.openNode(this.tag),e.closeNode())}parseOpen(e){e.name===this.tag&&(this.model=!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],117:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.attr=e.attr,this.attrs=e.attrs,this._format=e.format||function(e){try{return Number.isNaN(e.getTime())?\"\":e.toISOString()}catch(e){return\"\"}},this._parse=e.parse||function(e){return new Date(e)}}render(e,t){t&&(e.openNode(this.tag),this.attrs&&e.addAttributes(this.attrs),this.attr?e.addAttribute(this.attr,this._format(t)):e.writeText(this._format(t)),e.closeNode())}parseOpen(e){e.name===this.tag&&(this.attr?this.model=this._parse(e.attributes[this.attr]):this.text=[])}parseText(e){this.attr||this.text.push(e)}parseClose(){return this.attr||(this.model=this._parse(this.text.join(\"\"))),!1}}},{\"../base-xform\":32}],118:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.attr=e.attr,this.attrs=e.attrs,this.zero=e.zero}render(e,t){(t||this.zero)&&(e.openNode(this.tag),this.attrs&&e.addAttributes(this.attrs),this.attr?e.addAttribute(this.attr,t):e.writeText(t),e.closeNode())}parseOpen(e){return e.name===this.tag&&(this.attr?this.model=parseInt(e.attributes[this.attr],10):this.text=[],!0)}parseText(e){this.attr||this.text.push(e)}parseClose(){return this.attr||(this.model=parseInt(this.text.join(\"\")||0,10)),!1}}},{\"../base-xform\":32}],119:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.attr=e.attr,this.attrs=e.attrs}render(e,t){void 0!==t&&(e.openNode(this.tag),this.attrs&&e.addAttributes(this.attrs),this.attr?e.addAttribute(this.attr,t):e.writeText(t),e.closeNode())}parseOpen(e){e.name===this.tag&&(this.attr?this.model=e.attributes[this.attr]:this.text=[])}parseText(e){this.attr||this.text.push(e)}parseClose(){return this.attr||(this.model=this.text.join(\"\")),!1}}},{\"../base-xform\":32}],120:[function(e,t,r){\"use strict\";const n=e(\"./base-xform\"),i=e(\"../../utils/xml-stream\");t.exports=class extends n{constructor(e){super(),this._model=e}render(e){if(!this._xml){const e=new i;!function e(t,r){t.openNode(r.tag,r.$),r.c&&r.c.forEach(r=>{e(t,r)}),r.t&&t.writeText(r.t),t.closeNode()}(e,this._model),this._xml=e.xml}e.writeXml(this._xml)}parseOpen(){return!0}parseText(){}parseClose(e){switch(e){case this._model.tag:return!1;default:return!0}}}},{\"../../utils/xml-stream\":28,\"./base-xform\":32}],121:[function(e,t,r){\"use strict\";const n=e(\"./text-xform\"),i=e(\"./rich-text-xform\"),s=e(\"../base-xform\");t.exports=class extends s{constructor(){super(),this.map={r:new i,t:new n}}get tag(){return\"rPh\"}render(e,t){if(e.openNode(this.tag,{sb:t.sb||0,eb:t.eb||0}),t&&t.hasOwnProperty(\"richText\")&&t.richText){const{r:r}=this.map;t.richText.forEach(t=>{r.render(e,t)})}else t&&this.map.t.render(e,t.text);e.closeNode()}parseOpen(e){const{name:t}=e;return this.parser?(this.parser.parseOpen(e),!0):t===this.tag?(this.model={sb:parseInt(e.attributes.sb,10),eb:parseInt(e.attributes.eb,10)},!0):(this.parser=this.map[t],!!this.parser&&(this.parser.parseOpen(e),!0))}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser){if(!this.parser.parseClose(e)){switch(e){case\"r\":{let e=this.model.richText;e||(e=this.model.richText=[]),e.push(this.parser.model);break}case\"t\":this.model.text=this.parser.model}this.parser=void 0}return!0}switch(e){case this.tag:return!1;default:return!0}}}},{\"../base-xform\":32,\"./rich-text-xform\":122,\"./text-xform\":125}],122:[function(e,t,r){\"use strict\";const n=e(\"./text-xform\"),i=e(\"../style/font-xform\"),s=e(\"../base-xform\");class o extends s{constructor(e){super(),this.model=e}get tag(){return\"r\"}get textXform(){return this._textXform||(this._textXform=new n)}get fontXform(){return this._fontXform||(this._fontXform=new i(o.FONT_OPTIONS))}render(e,t){t=t||this.model,e.openNode(\"r\"),t.font&&this.fontXform.render(e,t.font),this.textXform.render(e,t.text),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"r\":return this.model={},!0;case\"t\":return this.parser=this.textXform,this.parser.parseOpen(e),!0;case\"rPr\":return this.parser=this.fontXform,this.parser.parseOpen(e),!0;default:return!1}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){switch(e){case\"r\":return!1;case\"t\":return this.model.text=this.parser.model,this.parser=void 0,!0;case\"rPr\":return this.model.font=this.parser.model,this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(e),!0}}}o.FONT_OPTIONS={tagName:\"rPr\",fontNameTag:\"rFont\"},t.exports=o},{\"../base-xform\":32,\"../style/font-xform\":131,\"./text-xform\":125}],123:[function(e,t,r){\"use strict\";const n=e(\"./text-xform\"),i=e(\"./rich-text-xform\"),s=e(\"./phonetic-text-xform\"),o=e(\"../base-xform\");t.exports=class extends o{constructor(e){super(),this.model=e,this.map={r:new i,t:new n,rPh:new s}}get tag(){return\"si\"}render(e,t){e.openNode(this.tag),t&&t.hasOwnProperty(\"richText\")&&t.richText?t.richText.length?t.richText.forEach(t=>{this.map.r.render(e,t)}):this.map.t.render(e,\"\"):null!=t&&this.map.t.render(e,t),e.closeNode()}parseOpen(e){const{name:t}=e;return this.parser?(this.parser.parseOpen(e),!0):t===this.tag?(this.model={},!0):(this.parser=this.map[t],!!this.parser&&(this.parser.parseOpen(e),!0))}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser){if(!this.parser.parseClose(e)){switch(e){case\"r\":{let e=this.model.richText;e||(e=this.model.richText=[]),e.push(this.parser.model);break}case\"t\":this.model=this.parser.model}this.parser=void 0}return!0}switch(e){case this.tag:return!1;default:return!0}}}},{\"../base-xform\":32,\"./phonetic-text-xform\":121,\"./rich-text-xform\":122,\"./text-xform\":125}],124:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/xml-stream\"),i=e(\"../base-xform\"),s=e(\"./shared-string-xform\");t.exports=class extends i{constructor(e){super(),this.model=e||{values:[],count:0},this.hash=Object.create(null),this.rich=Object.create(null)}get sharedStringXform(){return this._sharedStringXform||(this._sharedStringXform=new s)}get values(){return this.model.values}get uniqueCount(){return this.model.values.length}get count(){return this.model.count}getString(e){return this.model.values[e]}add(e){return e.richText?this.addRichText(e):this.addText(e)}addText(e){let t=this.hash[e];return void 0===t&&(t=this.hash[e]=this.model.values.length,this.model.values.push(e)),this.model.count++,t}addRichText(e){const t=this.sharedStringXform.toXml(e);let r=this.rich[t];return void 0===r&&(r=this.rich[t]=this.model.values.length,this.model.values.push(e)),this.model.count++,r}render(e,t){t=t||this._values,e.openXml(n.StdDocAttributes),e.openNode(\"sst\",{xmlns:\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\",count:t.count,uniqueCount:t.values.length});const r=this.sharedStringXform;t.values.forEach(t=>{r.render(e,t)}),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"sst\":return!0;case\"si\":return this.parser=this.sharedStringXform,this.parser.parseOpen(e),!0;default:throw new Error(\"Unexpected xml node in parseOpen: \"+JSON.stringify(e))}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.model.values.push(this.parser.model),this.model.count++,this.parser=void 0),!0;switch(e){case\"sst\":return!1;default:throw new Error(\"Unexpected xml node in parseClose: \"+e)}}}},{\"../../../utils/xml-stream\":28,\"../base-xform\":32,\"./shared-string-xform\":123}],125:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"t\"}render(e,t){e.openNode(\"t\"),/^\\s|\\n|\\s$/.test(t)&&e.addAttribute(\"xml:space\",\"preserve\"),e.writeText(t),e.closeNode()}get model(){return this._text.join(\"\").replace(/_x([0-9A-F]{4})_/g,(e,t)=>String.fromCharCode(parseInt(t,16)))}parseOpen(e){switch(e.name){case\"t\":return this._text=[],!0;default:return!1}}parseText(e){this._text.push(e)}parseClose(){return!1}}},{\"../base-xform\":32}],126:[function(e,t,r){\"use strict\";const n=e(\"../../../doc/enums\"),i=e(\"../../../utils/utils\"),s=e(\"../base-xform\"),o={horizontalValues:[\"left\",\"center\",\"right\",\"fill\",\"centerContinuous\",\"distributed\",\"justify\"].reduce((e,t)=>(e[t]=!0,e),{}),horizontal(e){return this.horizontalValues[e]?e:void 0},verticalValues:[\"top\",\"middle\",\"bottom\",\"distributed\",\"justify\"].reduce((e,t)=>(e[t]=!0,e),{}),vertical(e){return\"middle\"===e?\"center\":this.verticalValues[e]?e:void 0},wrapText:e=>!!e||void 0,shrinkToFit:e=>!!e||void 0,textRotation(e){switch(e){case\"vertical\":return e;default:return(e=i.validInt(e))>=-90&&e<=90?e:void 0}},indent:e=>(e=i.validInt(e),Math.max(0,e)),readingOrder(e){switch(e){case\"ltr\":return n.ReadingOrder.LeftToRight;case\"rtl\":return n.ReadingOrder.RightToLeft;default:return}}},a={toXml(e){if(e=o.textRotation(e)){if(\"vertical\"===e)return 255;const t=Math.round(e);if(t>=0&&t<=90)return t;if(t<0&&t>=-90)return 90-t}},toModel(e){const t=i.validInt(e);if(void 0!==t){if(255===t)return\"vertical\";if(t>=0&&t<=90)return t;if(t>90&&t<=180)return 90-t}}};t.exports=class extends s{get tag(){return\"alignment\"}render(e,t){e.addRollback(),e.openNode(\"alignment\");let r=!1;function n(t,n){n&&(e.addAttribute(t,n),r=!0)}n(\"horizontal\",o.horizontal(t.horizontal)),n(\"vertical\",o.vertical(t.vertical)),n(\"wrapText\",!!o.wrapText(t.wrapText)&&\"1\"),n(\"shrinkToFit\",!!o.shrinkToFit(t.shrinkToFit)&&\"1\"),n(\"indent\",o.indent(t.indent)),n(\"textRotation\",a.toXml(t.textRotation)),n(\"readingOrder\",o.readingOrder(t.readingOrder)),e.closeNode(),r?e.commit():e.rollback()}parseOpen(e){const t={};let r=!1;function n(e,n,i){e&&(t[n]=i,r=!0)}n(e.attributes.horizontal,\"horizontal\",e.attributes.horizontal),n(e.attributes.vertical,\"vertical\",\"center\"===e.attributes.vertical?\"middle\":e.attributes.vertical),n(e.attributes.wrapText,\"wrapText\",i.parseBoolean(e.attributes.wrapText)),n(e.attributes.shrinkToFit,\"shrinkToFit\",i.parseBoolean(e.attributes.shrinkToFit)),n(e.attributes.indent,\"indent\",parseInt(e.attributes.indent,10)),n(e.attributes.textRotation,\"textRotation\",a.toModel(e.attributes.textRotation)),n(e.attributes.readingOrder,\"readingOrder\",\"2\"===e.attributes.readingOrder?\"rtl\":\"ltr\"),this.model=r?t:null}parseText(){}parseClose(){return!1}}},{\"../../../doc/enums\":7,\"../../../utils/utils\":27,\"../base-xform\":32}],127:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"../../../utils/utils\"),s=e(\"./color-xform\");class o extends n{constructor(e){super(),this.name=e,this.map={color:new s}}get tag(){return this.name}render(e,t,r){const n=t&&t.color||r||this.defaultColor;e.openNode(this.name),t&&t.style&&(e.addAttribute(\"style\",t.style),n&&this.map.color.render(e,n)),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.name:{const{style:t}=e.attributes;return this.model=t?{style:t}:void 0,!0}case\"color\":return this.parser=this.map.color,this.parser.parseOpen(e),!0;default:return!1}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):(e===this.name&&this.map.color.model&&(this.model||(this.model={}),this.model.color=this.map.color.model),!1)}validStyle(e){return o.validStyleValues[e]}}o.validStyleValues=[\"thin\",\"dashed\",\"dotted\",\"dashDot\",\"hair\",\"dashDotDot\",\"slantDashDot\",\"mediumDashed\",\"mediumDashDotDot\",\"mediumDashDot\",\"medium\",\"double\",\"thick\"].reduce((e,t)=>(e[t]=!0,e),{});t.exports=class extends n{constructor(){super(),this.map={top:new o(\"top\"),left:new o(\"left\"),bottom:new o(\"bottom\"),right:new o(\"right\"),diagonal:new o(\"diagonal\")}}render(e,t){const{color:r}=t;function n(n,i){n&&!n.color&&t.color&&(n={...n,color:t.color}),i.render(e,n,r)}e.openNode(\"border\"),t.diagonal&&t.diagonal.style&&(t.diagonal.up&&e.addAttribute(\"diagonalUp\",\"1\"),t.diagonal.down&&e.addAttribute(\"diagonalDown\",\"1\")),n(t.left,this.map.left),n(t.right,this.map.right),n(t.top,this.map.top),n(t.bottom,this.map.bottom),n(t.diagonal,this.map.diagonal),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"border\":return this.reset(),this.diagonalUp=i.parseBoolean(e.attributes.diagonalUp),this.diagonalDown=i.parseBoolean(e.attributes.diagonalDown),!0;default:return this.parser=this.map[e.name],!!this.parser&&(this.parser.parseOpen(e),!0)}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;if(\"border\"===e){const e=this.model={},t=function(t,r,n){r&&(n&&Object.assign(r,n),e[t]=r)};t(\"left\",this.map.left.model),t(\"right\",this.map.right.model),t(\"top\",this.map.top.model),t(\"bottom\",this.map.bottom.model),t(\"diagonal\",this.map.diagonal.model,{up:this.diagonalUp,down:this.diagonalDown})}return!1}}},{\"../../../utils/utils\":27,\"../base-xform\":32,\"./color-xform\":128}],128:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{constructor(e){super(),this.name=e||\"color\"}get tag(){return this.name}render(e,t){return!!t&&(e.openNode(this.name),t.argb?e.addAttribute(\"rgb\",t.argb):void 0!==t.theme?(e.addAttribute(\"theme\",t.theme),void 0!==t.tint&&e.addAttribute(\"tint\",t.tint)):void 0!==t.indexed?e.addAttribute(\"indexed\",t.indexed):e.addAttribute(\"auto\",\"1\"),e.closeNode(),!0)}parseOpen(e){return e.name===this.name&&(e.attributes.rgb?this.model={argb:e.attributes.rgb}:e.attributes.theme?(this.model={theme:parseInt(e.attributes.theme,10)},e.attributes.tint&&(this.model.tint=parseFloat(e.attributes.tint))):e.attributes.indexed?this.model={indexed:parseInt(e.attributes.indexed,10)}:this.model=void 0,!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],129:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"./alignment-xform\"),s=e(\"./border-xform\"),o=e(\"./fill-xform\"),a=e(\"./font-xform\"),l=e(\"./numfmt-xform\"),c=e(\"./protection-xform\");t.exports=class extends n{constructor(){super(),this.map={alignment:new i,border:new s,fill:new o,font:new a,numFmt:new l,protection:new c}}get tag(){return\"dxf\"}render(e,t){if(e.openNode(this.tag),t.font&&this.map.font.render(e,t.font),t.numFmt&&t.numFmtId){const r={id:t.numFmtId,formatCode:t.numFmt};this.map.numFmt.render(e,r)}t.fill&&this.map.fill.render(e,t.fill),t.alignment&&this.map.alignment.render(e,t.alignment),t.border&&this.map.border.render(e,t.border),t.protection&&this.map.protection.render(e,t.protection),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:return this.reset(),!0;default:return this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e),!0}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.model={alignment:this.map.alignment.model,border:this.map.border.model,fill:this.map.fill.model,font:this.map.font.model,numFmt:this.map.numFmt.model,protection:this.map.protection.model},!1)}}},{\"../base-xform\":32,\"./alignment-xform\":126,\"./border-xform\":127,\"./fill-xform\":130,\"./font-xform\":131,\"./numfmt-xform\":132,\"./protection-xform\":133}],130:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"./color-xform\");class s extends n{constructor(){super(),this.map={color:new i}}get tag(){return\"stop\"}render(e,t){e.openNode(\"stop\"),e.addAttribute(\"position\",t.position),this.map.color.render(e,t.color),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"stop\":return this.model={position:parseFloat(e.attributes.position)},!0;case\"color\":return this.parser=this.map.color,this.parser.parseOpen(e),!0;default:return!1}}parseText(){}parseClose(e){return!!this.parser&&(this.parser.parseClose(e)||(this.model.color=this.parser.model,this.parser=void 0),!0)}}class o extends n{constructor(){super(),this.map={fgColor:new i(\"fgColor\"),bgColor:new i(\"bgColor\")}}get name(){return\"pattern\"}get tag(){return\"patternFill\"}render(e,t){e.openNode(\"patternFill\"),e.addAttribute(\"patternType\",t.pattern),t.fgColor&&this.map.fgColor.render(e,t.fgColor),t.bgColor&&this.map.bgColor.render(e,t.bgColor),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"patternFill\":return this.model={type:\"pattern\",pattern:e.attributes.patternType},!0;default:return this.parser=this.map[e.name],!!this.parser&&(this.parser.parseOpen(e),!0)}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return!!this.parser&&(this.parser.parseClose(e)||(this.parser.model&&(this.model[e]=this.parser.model),this.parser=void 0),!0)}}class a extends n{constructor(){super(),this.map={stop:new s}}get name(){return\"gradient\"}get tag(){return\"gradientFill\"}render(e,t){switch(e.openNode(\"gradientFill\"),t.gradient){case\"angle\":e.addAttribute(\"degree\",t.degree);break;case\"path\":e.addAttribute(\"type\",\"path\"),t.center.left&&(e.addAttribute(\"left\",t.center.left),void 0===t.center.right&&e.addAttribute(\"right\",t.center.left)),t.center.right&&e.addAttribute(\"right\",t.center.right),t.center.top&&(e.addAttribute(\"top\",t.center.top),void 0===t.center.bottom&&e.addAttribute(\"bottom\",t.center.top)),t.center.bottom&&e.addAttribute(\"bottom\",t.center.bottom)}const r=this.map.stop;t.stops.forEach(t=>{r.render(e,t)}),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"gradientFill\":{const t=this.model={stops:[]};return e.attributes.degree?(t.gradient=\"angle\",t.degree=parseInt(e.attributes.degree,10)):\"path\"===e.attributes.type&&(t.gradient=\"path\",t.center={left:e.attributes.left?parseFloat(e.attributes.left):0,top:e.attributes.top?parseFloat(e.attributes.top):0},e.attributes.right!==e.attributes.left&&(t.center.right=e.attributes.right?parseFloat(e.attributes.right):0),e.attributes.bottom!==e.attributes.top&&(t.center.bottom=e.attributes.bottom?parseFloat(e.attributes.bottom):0)),!0}case\"stop\":return this.parser=this.map.stop,this.parser.parseOpen(e),!0;default:return!1}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return!!this.parser&&(this.parser.parseClose(e)||(this.model.stops.push(this.parser.model),this.parser=void 0),!0)}}class l extends n{constructor(){super(),this.map={patternFill:new o,gradientFill:new a}}get tag(){return\"fill\"}render(e,t){switch(e.addRollback(),e.openNode(\"fill\"),t.type){case\"pattern\":this.map.patternFill.render(e,t);break;case\"gradient\":this.map.gradientFill.render(e,t);break;default:return void e.rollback()}e.closeNode(),e.commit()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"fill\":return this.model={},!0;default:return this.parser=this.map[e.name],!!this.parser&&(this.parser.parseOpen(e),!0)}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return!!this.parser&&(this.parser.parseClose(e)||(this.model=this.parser.model,this.model.type=this.parser.name,this.parser=void 0),!0)}validStyle(e){return l.validPatternValues[e]}}l.validPatternValues=[\"none\",\"solid\",\"darkVertical\",\"darkGray\",\"mediumGray\",\"lightGray\",\"gray125\",\"gray0625\",\"darkHorizontal\",\"darkVertical\",\"darkDown\",\"darkUp\",\"darkGrid\",\"darkTrellis\",\"lightHorizontal\",\"lightVertical\",\"lightDown\",\"lightUp\",\"lightGrid\",\"lightTrellis\",\"lightGrid\"].reduce((e,t)=>(e[t]=!0,e),{}),l.StopXform=s,l.PatternFillXform=o,l.GradientFillXform=a,t.exports=l},{\"../base-xform\":32,\"./color-xform\":128}],131:[function(e,t,r){\"use strict\";const n=e(\"./color-xform\"),i=e(\"../simple/boolean-xform\"),s=e(\"../simple/integer-xform\"),o=e(\"../simple/string-xform\"),a=e(\"./underline-xform\"),l=e(\"../../../utils/under-dash\"),c=e(\"../base-xform\");class u extends c{constructor(e){super(),this.options=e||u.OPTIONS,this.map={b:{prop:\"bold\",xform:new i({tag:\"b\",attr:\"val\"})},i:{prop:\"italic\",xform:new i({tag:\"i\",attr:\"val\"})},u:{prop:\"underline\",xform:new a},charset:{prop:\"charset\",xform:new s({tag:\"charset\",attr:\"val\"})},color:{prop:\"color\",xform:new n},condense:{prop:\"condense\",xform:new i({tag:\"condense\",attr:\"val\"})},extend:{prop:\"extend\",xform:new i({tag:\"extend\",attr:\"val\"})},family:{prop:\"family\",xform:new s({tag:\"family\",attr:\"val\"})},outline:{prop:\"outline\",xform:new i({tag:\"outline\",attr:\"val\"})},vertAlign:{prop:\"vertAlign\",xform:new o({tag:\"vertAlign\",attr:\"val\"})},scheme:{prop:\"scheme\",xform:new o({tag:\"scheme\",attr:\"val\"})},shadow:{prop:\"shadow\",xform:new i({tag:\"shadow\",attr:\"val\"})},strike:{prop:\"strike\",xform:new i({tag:\"strike\",attr:\"val\"})},sz:{prop:\"size\",xform:new s({tag:\"sz\",attr:\"val\"})}},this.map[this.options.fontNameTag]={prop:\"name\",xform:new o({tag:this.options.fontNameTag,attr:\"val\"})}}get tag(){return this.options.tagName}render(e,t){const{map:r}=this;e.openNode(this.options.tagName),l.each(this.map,(n,i)=>{r[i].xform.render(e,t[n.prop])}),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;if(this.map[e.name])return this.parser=this.map[e.name].xform,this.parser.parseOpen(e);switch(e.name){case this.options.tagName:return this.model={},!0;default:return!1}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser&&!this.parser.parseClose(e)){const t=this.map[e];return this.parser.model&&(this.model[t.prop]=this.parser.model),this.parser=void 0,!0}switch(e){case this.options.tagName:return!1;default:return!0}}}u.OPTIONS={tagName:\"font\",fontNameTag:\"name\"},t.exports=u},{\"../../../utils/under-dash\":26,\"../base-xform\":32,\"../simple/boolean-xform\":116,\"../simple/integer-xform\":118,\"../simple/string-xform\":119,\"./color-xform\":128,\"./underline-xform\":136}],132:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/under-dash\"),i=e(\"../../defaultnumformats\"),s=e(\"../base-xform\");const o=function(){const e={};return n.each(i,(t,r)=>{t.f&&(e[t.f]=parseInt(r,10))}),e}();class a extends s{constructor(e,t){super(),this.id=e,this.formatCode=t}get tag(){return\"numFmt\"}render(e,t){e.leafNode(\"numFmt\",{numFmtId:t.id,formatCode:t.formatCode})}parseOpen(e){switch(e.name){case\"numFmt\":return this.model={id:parseInt(e.attributes.numFmtId,10),formatCode:e.attributes.formatCode.replace(/[\\\\](.)/g,\"$1\")},!0;default:return!1}}parseText(){}parseClose(){return!1}}a.getDefaultFmtId=function(e){return o[e]},a.getDefaultFmtCode=function(e){return i[e]&&i[e].f},t.exports=a},{\"../../../utils/under-dash\":26,\"../../defaultnumformats\":30,\"../base-xform\":32}],133:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i={boolean:(e,t)=>void 0===e?t:e};t.exports=class extends n{get tag(){return\"protection\"}render(e,t){e.addRollback(),e.openNode(\"protection\");let r=!1;function n(t,n){void 0!==n&&(e.addAttribute(t,n),r=!0)}n(\"locked\",i.boolean(t.locked,!0)?void 0:\"0\"),n(\"hidden\",i.boolean(t.hidden,!1)?\"1\":void 0),e.closeNode(),r?e.commit():e.rollback()}parseOpen(e){const t={locked:!(\"0\"===e.attributes.locked),hidden:\"1\"===e.attributes.hidden},r=!t.locked||t.hidden;this.model=r?t:null}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],134:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"./alignment-xform\"),s=e(\"./protection-xform\");t.exports=class extends n{constructor(e){super(),this.xfId=!(!e||!e.xfId),this.map={alignment:new i,protection:new s}}get tag(){return\"xf\"}render(e,t){e.openNode(\"xf\",{numFmtId:t.numFmtId||0,fontId:t.fontId||0,fillId:t.fillId||0,borderId:t.borderId||0}),this.xfId&&e.addAttribute(\"xfId\",t.xfId||0),t.numFmtId&&e.addAttribute(\"applyNumberFormat\",\"1\"),t.fontId&&e.addAttribute(\"applyFont\",\"1\"),t.fillId&&e.addAttribute(\"applyFill\",\"1\"),t.borderId&&e.addAttribute(\"applyBorder\",\"1\"),t.alignment&&e.addAttribute(\"applyAlignment\",\"1\"),t.protection&&e.addAttribute(\"applyProtection\",\"1\"),t.alignment&&this.map.alignment.render(e,t.alignment),t.protection&&this.map.protection.render(e,t.protection),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"xf\":return this.model={numFmtId:parseInt(e.attributes.numFmtId,10),fontId:parseInt(e.attributes.fontId,10),fillId:parseInt(e.attributes.fillId,10),borderId:parseInt(e.attributes.borderId,10)},this.xfId&&(this.model.xfId=parseInt(e.attributes.xfId,10)),!0;case\"alignment\":return this.parser=this.map.alignment,this.parser.parseOpen(e),!0;case\"protection\":return this.parser=this.map.protection,this.parser.parseOpen(e),!0;default:return!1}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.map.protection===this.parser?this.model.protection=this.parser.model:this.model.alignment=this.parser.model,this.parser=void 0),!0):\"xf\"!==e}}},{\"../base-xform\":32,\"./alignment-xform\":126,\"./protection-xform\":133}],135:[function(e,t,r){\"use strict\";const n=e(\"../../../doc/enums\"),i=e(\"../../../utils/xml-stream\"),s=e(\"../base-xform\"),o=e(\"../static-xform\"),a=e(\"../list-xform\"),l=e(\"./font-xform\"),c=e(\"./fill-xform\"),u=e(\"./border-xform\"),h=e(\"./numfmt-xform\"),f=e(\"./style-xform\"),d=e(\"./dxf-xform\");class p extends s{constructor(e){super(),this.map={numFmts:new a({tag:\"numFmts\",count:!0,childXform:new h}),fonts:new a({tag:\"fonts\",count:!0,childXform:new l,$:{\"x14ac:knownFonts\":1}}),fills:new a({tag:\"fills\",count:!0,childXform:new c}),borders:new a({tag:\"borders\",count:!0,childXform:new u}),cellStyleXfs:new a({tag:\"cellStyleXfs\",count:!0,childXform:new f}),cellXfs:new a({tag:\"cellXfs\",count:!0,childXform:new f({xfId:!0})}),dxfs:new a({tag:\"dxfs\",always:!0,count:!0,childXform:new d}),numFmt:new h,font:new l,fill:new c,border:new u,style:new f({xfId:!0}),cellStyles:p.STATIC_XFORMS.cellStyles,tableStyles:p.STATIC_XFORMS.tableStyles,extLst:p.STATIC_XFORMS.extLst},e&&this.init()}initIndex(){this.index={style:{},numFmt:{},numFmtNextId:164,font:{},border:{},fill:{}}}init(){this.model={styles:[],numFmts:[],fonts:[],borders:[],fills:[],dxfs:[]},this.initIndex(),this._addBorder({}),this._addStyle({numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}),this._addFill({type:\"pattern\",pattern:\"none\"}),this._addFill({type:\"pattern\",pattern:\"gray125\"}),this.weakMap=new WeakMap}render(e,t){t=t||this.model,e.openXml(i.StdDocAttributes),e.openNode(\"styleSheet\",p.STYLESHEET_ATTRIBUTES),this.index?(t.numFmts&&t.numFmts.length&&(e.openNode(\"numFmts\",{count:t.numFmts.length}),t.numFmts.forEach(t=>{e.writeXml(t)}),e.closeNode()),t.fonts.length||this._addFont({size:11,color:{theme:1},name:\"Calibri\",family:2,scheme:\"minor\"}),e.openNode(\"fonts\",{count:t.fonts.length,\"x14ac:knownFonts\":1}),t.fonts.forEach(t=>{e.writeXml(t)}),e.closeNode(),e.openNode(\"fills\",{count:t.fills.length}),t.fills.forEach(t=>{e.writeXml(t)}),e.closeNode(),e.openNode(\"borders\",{count:t.borders.length}),t.borders.forEach(t=>{e.writeXml(t)}),e.closeNode(),this.map.cellStyleXfs.render(e,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),e.openNode(\"cellXfs\",{count:t.styles.length}),t.styles.forEach(t=>{e.writeXml(t)}),e.closeNode()):(this.map.numFmts.render(e,t.numFmts),this.map.fonts.render(e,t.fonts),this.map.fills.render(e,t.fills),this.map.borders.render(e,t.borders),this.map.cellStyleXfs.render(e,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),this.map.cellXfs.render(e,t.styles)),p.STATIC_XFORMS.cellStyles.render(e),this.map.dxfs.render(e,t.dxfs),p.STATIC_XFORMS.tableStyles.render(e),p.STATIC_XFORMS.extLst.render(e),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case\"styleSheet\":return this.initIndex(),!0;default:return this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e),!0}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case\"styleSheet\":{this.model={};const e=(e,t)=>{t.model&&t.model.length&&(this.model[e]=t.model)};if(e(\"numFmts\",this.map.numFmts),e(\"fonts\",this.map.fonts),e(\"fills\",this.map.fills),e(\"borders\",this.map.borders),e(\"styles\",this.map.cellXfs),e(\"dxfs\",this.map.dxfs),this.index={model:[],numFmt:[]},this.model.numFmts){const e=this.index.numFmt;this.model.numFmts.forEach(t=>{e[t.id]=t.formatCode})}return!1}default:return!0}}addStyleModel(e,t){if(!e)return 0;if(this.model.fonts.length||this._addFont({size:11,color:{theme:1},name:\"Calibri\",family:2,scheme:\"minor\"}),this.weakMap&&this.weakMap.has(e))return this.weakMap.get(e);const r={};if(t=t||n.ValueType.Number,e.numFmt)r.numFmtId=this._addNumFmtStr(e.numFmt);else switch(t){case n.ValueType.Number:r.numFmtId=this._addNumFmtStr(\"General\");break;case n.ValueType.Date:r.numFmtId=this._addNumFmtStr(\"mm-dd-yy\")}e.font&&(r.fontId=this._addFont(e.font)),e.border&&(r.borderId=this._addBorder(e.border)),e.fill&&(r.fillId=this._addFill(e.fill)),e.alignment&&(r.alignment=e.alignment),e.protection&&(r.protection=e.protection);const i=this._addStyle(r);return this.weakMap&&this.weakMap.set(e,i),i}getStyleModel(e){const t=this.model.styles[e];if(!t)return null;let r=this.index.model[e];if(r)return r;if(r=this.index.model[e]={},t.numFmtId){const e=this.index.numFmt[t.numFmtId]||h.getDefaultFmtCode(t.numFmtId);e&&(r.numFmt=e)}function n(e,t,n){if(n||0===n){const i=t[n];i&&(r[e]=i)}}return n(\"font\",this.model.fonts,t.fontId),n(\"border\",this.model.borders,t.borderId),n(\"fill\",this.model.fills,t.fillId),t.alignment&&(r.alignment=t.alignment),t.protection&&(r.protection=t.protection),r}addDxfStyle(e){return e.numFmt&&(e.numFmtId=this._addNumFmtStr(e.numFmt)),this.model.dxfs.push(e),this.model.dxfs.length-1}getDxfStyle(e){return this.model.dxfs[e]}_addStyle(e){const t=this.map.style.toXml(e);let r=this.index.style[t];return void 0===r&&(r=this.index.style[t]=this.model.styles.length,this.model.styles.push(t)),r}_addNumFmtStr(e){let t=h.getDefaultFmtId(e);if(void 0!==t)return t;if(t=this.index.numFmt[e],void 0!==t)return t;t=this.index.numFmt[e]=164+this.model.numFmts.length;const r=this.map.numFmt.toXml({id:t,formatCode:e});return this.model.numFmts.push(r),t}_addFont(e){const t=this.map.font.toXml(e);let r=this.index.font[t];return void 0===r&&(r=this.index.font[t]=this.model.fonts.length,this.model.fonts.push(t)),r}_addBorder(e){const t=this.map.border.toXml(e);let r=this.index.border[t];return void 0===r&&(r=this.index.border[t]=this.model.borders.length,this.model.borders.push(t)),r}_addFill(e){const t=this.map.fill.toXml(e);let r=this.index.fill[t];return void 0===r&&(r=this.index.fill[t]=this.model.fills.length,this.model.fills.push(t)),r}}p.STYLESHEET_ATTRIBUTES={xmlns:\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\",\"xmlns:mc\":\"http://schemas.openxmlformats.org/markup-compatibility/2006\",\"mc:Ignorable\":\"x14ac x16r2\",\"xmlns:x14ac\":\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\",\"xmlns:x16r2\":\"http://schemas.microsoft.com/office/spreadsheetml/2015/02/main\"},p.STATIC_XFORMS={cellStyles:new o({tag:\"cellStyles\",$:{count:1},c:[{tag:\"cellStyle\",$:{name:\"Normal\",xfId:0,builtinId:0}}]}),dxfs:new o({tag:\"dxfs\",$:{count:0}}),tableStyles:new o({tag:\"tableStyles\",$:{count:0,defaultTableStyle:\"TableStyleMedium2\",defaultPivotStyle:\"PivotStyleLight16\"}}),extLst:new o({tag:\"extLst\",c:[{tag:\"ext\",$:{uri:\"{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}\",\"xmlns:x14\":\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main\"},c:[{tag:\"x14:slicerStyles\",$:{defaultSlicerStyle:\"SlicerStyleLight1\"}}]},{tag:\"ext\",$:{uri:\"{9260A510-F301-46a8-8635-F512D64BE5F5}\",\"xmlns:x15\":\"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main\"},c:[{tag:\"x15:timelineStyles\",$:{defaultTimelineStyle:\"TimeSlicerStyleLight1\"}}]}]})};p.Mock=class extends p{constructor(){super(),this.model={styles:[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}],numFmts:[],fonts:[{size:11,color:{theme:1},name:\"Calibri\",family:2,scheme:\"minor\"}],borders:[{}],fills:[{type:\"pattern\",pattern:\"none\"},{type:\"pattern\",pattern:\"gray125\"}]}}parseStream(e){return e.autodrain(),Promise.resolve()}addStyleModel(e,t){switch(t){case n.ValueType.Date:return this.dateStyleId;default:return 0}}get dateStyleId(){if(!this._dateStyleId){const e={numFmtId:h.getDefaultFmtId(\"mm-dd-yy\")};this._dateStyleId=this.model.styles.length,this.model.styles.push(e)}return this._dateStyleId}getStyleModel(){return{}}},t.exports=p},{\"../../../doc/enums\":7,\"../../../utils/xml-stream\":28,\"../base-xform\":32,\"../list-xform\":71,\"../static-xform\":120,\"./border-xform\":127,\"./dxf-xform\":129,\"./fill-xform\":130,\"./font-xform\":131,\"./numfmt-xform\":132,\"./style-xform\":134}],136:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");class i extends n{constructor(e){super(),this.model=e}get tag(){return\"u\"}render(e,t){if(!0===(t=t||this.model))e.leafNode(\"u\");else{const r=i.Attributes[t];r&&e.leafNode(\"u\",r)}}parseOpen(e){\"u\"===e.name&&(this.model=e.attributes.val||!0)}parseText(){}parseClose(){return!1}}i.Attributes={single:{},double:{val:\"double\"},singleAccounting:{val:\"singleAccounting\"},doubleAccounting:{val:\"doubleAccounting\"}},t.exports=i},{\"../base-xform\":32}],137:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"./filter-column-xform\");t.exports=class extends n{constructor(){super(),this.map={filterColumn:new i}}get tag(){return\"autoFilter\"}prepare(e){e.columns.forEach((e,t)=>{this.map.filterColumn.prepare(e,{index:t})})}render(e,t){return e.openNode(this.tag,{ref:t.autoFilterRef}),t.columns.forEach(t=>{this.map.filterColumn.render(e,t)}),e.closeNode(),!0}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.tag:return this.model={autoFilterRef:e.attributes.ref,columns:[]},!0;default:if(this.parser=this.map[e.name],this.parser)return this.parseOpen(e),!0;throw new Error(\"Unexpected xml node in parseOpen: \"+JSON.stringify(e))}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.model.columns.push(this.parser.model),this.parser=void 0),!0;switch(e){case this.tag:return!1;default:throw new Error(\"Unexpected xml node in parseClose: \"+e)}}}},{\"../base-xform\":32,\"./filter-column-xform\":139}],138:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"customFilter\"}render(e,t){e.leafNode(this.tag,{val:t.val,operator:t.operator})}parseOpen(e){return e.name===this.tag&&(this.model={val:e.attributes.val,operator:e.attributes.operator},!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],139:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\"),i=e(\"../list-xform\"),s=e(\"./custom-filter-xform\"),o=e(\"./filter-xform\");t.exports=class extends n{constructor(){super(),this.map={customFilters:new i({tag:\"customFilters\",count:!1,empty:!0,childXform:new s}),filters:new i({tag:\"filters\",count:!1,empty:!0,childXform:new o})}}get tag(){return\"filterColumn\"}prepare(e,t){e.colId=t.index.toString()}render(e,t){return t.customFilters?(e.openNode(this.tag,{colId:t.colId,hiddenButton:t.filterButton?\"0\":\"1\"}),this.map.customFilters.render(e,t.customFilters),e.closeNode(),!0):(e.leafNode(this.tag,{colId:t.colId,hiddenButton:t.filterButton?\"0\":\"1\"}),!0)}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;const{attributes:t}=e;switch(e.name){case this.tag:return this.model={filterButton:\"0\"===t.hiddenButton},!0;default:if(this.parser=this.map[e.name],this.parser)return this.parseOpen(e),!0;throw new Error(\"Unexpected xml node in parseOpen: \"+JSON.stringify(e))}}parseText(){}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case this.tag:return this.model.customFilters=this.map.customFilters.model,!1;default:return!0}}}},{\"../base-xform\":32,\"../list-xform\":71,\"./custom-filter-xform\":138,\"./filter-xform\":140}],140:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"filter\"}render(e,t){e.leafNode(this.tag,{val:t.val})}parseOpen(e){return e.name===this.tag&&(this.model={val:e.attributes.val},!0)}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],141:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"tableColumn\"}prepare(e,t){e.id=t.index+1}render(e,t){return e.leafNode(this.tag,{id:t.id.toString(),name:t.name,totalsRowLabel:t.totalsRowLabel,totalsRowFunction:t.totalsRowFunction,dxfId:t.dxfId}),!0}parseOpen(e){if(e.name===this.tag){const{attributes:t}=e;return this.model={name:t.name,totalsRowLabel:t.totalsRowLabel,totalsRowFunction:t.totalsRowFunction,dxfId:t.dxfId},!0}return!1}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],142:[function(e,t,r){\"use strict\";const n=e(\"../base-xform\");t.exports=class extends n{get tag(){return\"tableStyleInfo\"}render(e,t){return e.leafNode(this.tag,{name:t.theme?t.theme:void 0,showFirstColumn:t.showFirstColumn?\"1\":\"0\",showLastColumn:t.showLastColumn?\"1\":\"0\",showRowStripes:t.showRowStripes?\"1\":\"0\",showColumnStripes:t.showColumnStripes?\"1\":\"0\"}),!0}parseOpen(e){if(e.name===this.tag){const{attributes:t}=e;return this.model={theme:t.name?t.name:null,showFirstColumn:\"1\"===t.showFirstColumn,showLastColumn:\"1\"===t.showLastColumn,showRowStripes:\"1\"===t.showRowStripes,showColumnStripes:\"1\"===t.showColumnStripes},!0}return!1}parseText(){}parseClose(){return!1}}},{\"../base-xform\":32}],143:[function(e,t,r){\"use strict\";const n=e(\"../../../utils/xml-stream\"),i=e(\"../base-xform\"),s=e(\"../list-xform\"),o=e(\"./auto-filter-xform\"),a=e(\"./table-column-xform\"),l=e(\"./table-style-info-xform\");class c extends i{constructor(){super(),this.map={autoFilter:new o,tableColumns:new s({tag:\"tableColumns\",count:!0,empty:!0,childXform:new a}),tableStyleInfo:new l}}prepare(e,t){this.map.autoFilter.prepare(e),this.map.tableColumns.prepare(e.columns,t)}get tag(){return\"table\"}render(e,t){e.openXml(n.StdDocAttributes),e.openNode(this.tag,{...c.TABLE_ATTRIBUTES,id:t.id,name:t.name,displayName:t.displayName||t.name,ref:t.tableRef,totalsRowCount:t.totalsRow?\"1\":void 0,totalsRowShown:t.totalsRow?void 0:\"1\",headerRowCount:t.headerRow?\"1\":\"0\"}),this.map.autoFilter.render(e,t),this.map.tableColumns.render(e,t.columns),this.map.tableStyleInfo.render(e,t.style),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;const{name:t,attributes:r}=e;switch(t){case this.tag:this.reset(),this.model={name:r.name,displayName:r.displayName||r.name,tableRef:r.ref,totalsRow:\"1\"===r.totalsRowCount,headerRow:\"1\"===r.headerRowCount};break;default:this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)}return!0}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case this.tag:return this.model.columns=this.map.tableColumns.model,this.map.autoFilter.model&&(this.model.autoFilterRef=this.map.autoFilter.model.autoFilterRef,this.map.autoFilter.model.columns.forEach((e,t)=>{this.model.columns[t].filterButton=e.filterButton})),this.model.style=this.map.tableStyleInfo.model,!1;default:return!0}}reconcile(e,t){e.columns.forEach(e=>{void 0!==e.dxfId&&(e.style=t.styles.getDxfStyle(e.dxfId))})}}c.TABLE_ATTRIBUTES={xmlns:\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\",\"xmlns:mc\":\"http://schemas.openxmlformats.org/markup-compatibility/2006\",\"mc:Ignorable\":\"xr xr3\",\"xmlns:xr\":\"http://schemas.microsoft.com/office/spreadsheetml/2014/revision\",\"xmlns:xr3\":\"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3\"},t.exports=c},{\"../../../utils/xml-stream\":28,\"../base-xform\":32,\"../list-xform\":71,\"./auto-filter-xform\":137,\"./table-column-xform\":141,\"./table-style-info-xform\":142}],144:[function(e,t,r){(function(r,n){(function(){\"use strict\";const i=e(\"fs\"),s=e(\"jszip\"),{PassThrough:o}=e(\"readable-stream\"),a=e(\"../utils/zip-stream\"),l=e(\"../utils/stream-buf\"),c=e(\"../utils/utils\"),u=e(\"../utils/xml-stream\"),{bufferToString:h}=e(\"../utils/browser-buffer-decode\"),f=e(\"./xform/style/styles-xform\"),d=e(\"./xform/core/core-xform\"),p=e(\"./xform/strings/shared-strings-xform\"),m=e(\"./xform/core/relationships-xform\"),b=e(\"./xform/core/content-types-xform\"),g=e(\"./xform/core/app-xform\"),y=e(\"./xform/book/workbook-xform\"),v=e(\"./xform/sheet/worksheet-xform\"),w=e(\"./xform/drawing/drawing-xform\"),_=e(\"./xform/table/table-xform\"),x=e(\"./xform/comment/comments-xform\"),k=e(\"./xform/comment/vml-notes-xform\"),S=e(\"./xml/theme1\");class M{constructor(e){this.workbook=e}async readFile(e,t){if(!await c.fs.exists(e))throw new Error(\"File not found: \"+e);const r=i.createReadStream(e);try{const e=await this.read(r,t);return r.close(),e}catch(e){throw r.close(),e}}parseRels(e){return(new m).parseStream(e)}parseWorkbook(e){return(new y).parseStream(e)}parseSharedStrings(e){return(new p).parseStream(e)}reconcile(e,t){const r=new y,n=new v(t),i=new w,s=new _;r.reconcile(e);const o={media:e.media,mediaIndex:e.mediaIndex};Object.keys(e.drawings).forEach(t=>{const r=e.drawings[t],n=e.drawingRels[t];n&&(o.rels=n.reduce((e,t)=>(e[t.Id]=t,e),{}),(r.anchors||[]).forEach(e=>{const t=e.picture&&e.picture.hyperlinks;t&&o.rels[t.rId]&&(t.hyperlink=o.rels[t.rId].Target,delete t.rId)}),i.reconcile(r,o))});const a={styles:e.styles};Object.values(e.tables).forEach(e=>{s.reconcile(e,a)});const l={styles:e.styles,sharedStrings:e.sharedStrings,media:e.media,mediaIndex:e.mediaIndex,date1904:e.properties&&e.properties.date1904,drawings:e.drawings,comments:e.comments,tables:e.tables,vmlDrawings:e.vmlDrawings};e.worksheets.forEach(t=>{t.relationships=e.worksheetRels[t.sheetNo],n.reconcile(t,l)}),delete e.worksheetHash,delete e.worksheetRels,delete e.globalRels,delete e.sharedStrings,delete e.workbookRels,delete e.sheetDefs,delete e.styles,delete e.mediaIndex,delete e.drawings,delete e.drawingRels,delete e.vmlDrawings}async _processWorksheetEntry(e,t,r,n,i){const s=new v(n),o=await s.parseStream(e);o.sheetNo=r,t.worksheetHash[i]=o,t.worksheets.push(o)}async _processCommentEntry(e,t,r){const n=new x,i=await n.parseStream(e);t.comments[`../${r}.xml`]=i}async _processTableEntry(e,t,r){const n=new _,i=await n.parseStream(e);t.tables[`../tables/${r}.xml`]=i}async _processWorksheetRelsEntry(e,t,r){const n=new m,i=await n.parseStream(e);t.worksheetRels[r]=i}async _processMediaEntry(e,t,r){const n=r.lastIndexOf(\".\");if(n>=1){const i=r.substr(n+1),s=r.substr(0,n);await new Promise((n,o)=>{const a=new l;a.on(\"finish\",()=>{t.mediaIndex[r]=t.media.length,t.mediaIndex[s]=t.media.length;const e={type:\"image\",name:s,extension:i,buffer:a.toBuffer()};t.media.push(e),n()}),e.on(\"error\",e=>{o(e)}),e.pipe(a)})}}async _processDrawingEntry(e,t,r){const n=new w,i=await n.parseStream(e);t.drawings[r]=i}async _processDrawingRelsEntry(e,t,r){const n=new m,i=await n.parseStream(e);t.drawingRels[r]=i}async _processVmlDrawingEntry(e,t,r){const n=new k,i=await n.parseStream(e);t.vmlDrawings[`../drawings/${r}.vml`]=i}async _processThemeEntry(e,t,r){await new Promise((n,i)=>{const s=new l;e.on(\"error\",i),s.on(\"error\",i),s.on(\"finish\",()=>{t.themes[r]=s.read().toString(),n()}),e.pipe(s)})}createInputStream(){throw new Error(\"`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md\")}async read(e,t){!e[Symbol.asyncIterator]&&e.pipe&&(e=e.pipe(new o));const r=[];for await(const t of e)r.push(t);return this.load(n.concat(r),t)}async load(e,t){let i;i=t&&t.base64?n.from(e.toString(),\"base64\"):e;const a={worksheets:[],worksheetHash:{},worksheetRels:[],themes:{},media:[],mediaIndex:{},drawings:{},drawingRels:{},comments:{},tables:{},vmlDrawings:{}},l=await s.loadAsync(i);for(const e of Object.values(l.files))if(!e.dir){let n,i=e.name;if(\"/\"===i[0]&&(i=i.substr(1)),i.match(/xl\\/media\\//)||i.match(/xl\\/theme\\/([a-zA-Z0-9]+)[.]xml/))n=new o,n.write(await e.async(\"nodebuffer\"));else{let t;n=new o({writableObjectMode:!0,readableObjectMode:!0}),t=r.browser?h(await e.async(\"nodebuffer\")):await e.async(\"string\");const i=16384;for(let e=0;e<t.length;e+=i)n.write(t.substring(e,e+i))}switch(n.end(),i){case\"_rels/.rels\":a.globalRels=await this.parseRels(n);break;case\"xl/workbook.xml\":{const e=await this.parseWorkbook(n);a.sheets=e.sheets,a.definedNames=e.definedNames,a.views=e.views,a.properties=e.properties,a.calcProperties=e.calcProperties;break}case\"xl/_rels/workbook.xml.rels\":a.workbookRels=await this.parseRels(n);break;case\"xl/sharedStrings.xml\":a.sharedStrings=new p,await a.sharedStrings.parseStream(n);break;case\"xl/styles.xml\":a.styles=new f,await a.styles.parseStream(n);break;case\"docProps/app.xml\":{const e=new g,t=await e.parseStream(n);a.company=t.company,a.manager=t.manager;break}case\"docProps/core.xml\":{const e=new d,t=await e.parseStream(n);Object.assign(a,t);break}default:{let e=i.match(/xl\\/worksheets\\/sheet(\\d+)[.]xml/);if(e){await this._processWorksheetEntry(n,a,e[1],t,i);break}if(e=i.match(/xl\\/worksheets\\/_rels\\/sheet(\\d+)[.]xml.rels/),e){await this._processWorksheetRelsEntry(n,a,e[1]);break}if(e=i.match(/xl\\/theme\\/([a-zA-Z0-9]+)[.]xml/),e){await this._processThemeEntry(n,a,e[1]);break}if(e=i.match(/xl\\/media\\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/),e){await this._processMediaEntry(n,a,e[1]);break}if(e=i.match(/xl\\/drawings\\/([a-zA-Z0-9]+)[.]xml/),e){await this._processDrawingEntry(n,a,e[1]);break}if(e=i.match(/xl\\/(comments\\d+)[.]xml/),e){await this._processCommentEntry(n,a,e[1]);break}if(e=i.match(/xl\\/tables\\/(table\\d+)[.]xml/),e){await this._processTableEntry(n,a,e[1]);break}if(e=i.match(/xl\\/drawings\\/_rels\\/([a-zA-Z0-9]+)[.]xml[.]rels/),e){await this._processDrawingRelsEntry(n,a,e[1]);break}if(e=i.match(/xl\\/drawings\\/(vmlDrawing\\d+)[.]vml/),e){await this._processVmlDrawingEntry(n,a,e[1]);break}}}}return this.reconcile(a,t),this.workbook.model=a,this.workbook}async addMedia(e,t){await Promise.all(t.media.map(async t=>{if(\"image\"===t.type){const r=`xl/media/${t.name}.${t.extension}`;if(t.filename){const n=await function(e,t){return new Promise((r,n)=>{i.readFile(e,t,(e,t)=>{e?n(e):r(t)})})}(t.filename);return e.append(n,{name:r})}if(t.buffer)return e.append(t.buffer,{name:r});if(t.base64){const n=t.base64,i=n.substring(n.indexOf(\",\")+1);return e.append(i,{name:r,base64:!0})}}throw new Error(\"Unsupported media\")}))}addDrawings(e,t){const r=new w,n=new m;t.worksheets.forEach(t=>{const{drawing:i}=t;if(i){r.prepare(i,{});let t=r.toXml(i);e.append(t,{name:`xl/drawings/${i.name}.xml`}),t=n.toXml(i.rels),e.append(t,{name:`xl/drawings/_rels/${i.name}.xml.rels`})}})}addTables(e,t){const r=new _;t.worksheets.forEach(t=>{const{tables:n}=t;n.forEach(t=>{r.prepare(t,{});const n=r.toXml(t);e.append(n,{name:\"xl/tables/\"+t.target})})})}async addContentTypes(e,t){const r=(new b).toXml(t);e.append(r,{name:\"[Content_Types].xml\"})}async addApp(e,t){const r=(new g).toXml(t);e.append(r,{name:\"docProps/app.xml\"})}async addCore(e,t){const r=new d;e.append(r.toXml(t),{name:\"docProps/core.xml\"})}async addThemes(e,t){const r=t.themes||{theme1:S};Object.keys(r).forEach(t=>{const n=r[t],i=`xl/theme/${t}.xml`;e.append(n,{name:i})})}async addOfficeRels(e){const t=(new m).toXml([{Id:\"rId1\",Type:M.RelType.OfficeDocument,Target:\"xl/workbook.xml\"},{Id:\"rId2\",Type:M.RelType.CoreProperties,Target:\"docProps/core.xml\"},{Id:\"rId3\",Type:M.RelType.ExtenderProperties,Target:\"docProps/app.xml\"}]);e.append(t,{name:\"_rels/.rels\"})}async addWorkbookRels(e,t){let r=1;const n=[{Id:\"rId\"+r++,Type:M.RelType.Styles,Target:\"styles.xml\"},{Id:\"rId\"+r++,Type:M.RelType.Theme,Target:\"theme/theme1.xml\"}];t.sharedStrings.count&&n.push({Id:\"rId\"+r++,Type:M.RelType.SharedStrings,Target:\"sharedStrings.xml\"}),t.worksheets.forEach(e=>{e.rId=\"rId\"+r++,n.push({Id:e.rId,Type:M.RelType.Worksheet,Target:`worksheets/sheet${e.id}.xml`})});const i=(new m).toXml(n);e.append(i,{name:\"xl/_rels/workbook.xml.rels\"})}async addSharedStrings(e,t){t.sharedStrings&&t.sharedStrings.count&&e.append(t.sharedStrings.xml,{name:\"xl/sharedStrings.xml\"})}async addStyles(e,t){const{xml:r}=t.styles;r&&e.append(r,{name:\"xl/styles.xml\"})}async addWorkbook(e,t){const r=new y;e.append(r.toXml(t),{name:\"xl/workbook.xml\"})}async addWorksheets(e,t){const r=new v,n=new m,i=new x,s=new k;t.worksheets.forEach(t=>{let o=new u;r.render(o,t),e.append(o.xml,{name:`xl/worksheets/sheet${t.id}.xml`}),t.rels&&t.rels.length&&(o=new u,n.render(o,t.rels),e.append(o.xml,{name:`xl/worksheets/_rels/sheet${t.id}.xml.rels`})),t.comments.length>0&&(o=new u,i.render(o,t),e.append(o.xml,{name:`xl/comments${t.id}.xml`}),o=new u,s.render(o,t),e.append(o.xml,{name:`xl/drawings/vmlDrawing${t.id}.vml`}))})}_finalize(e){return new Promise((t,r)=>{e.on(\"finish\",()=>{t(this)}),e.on(\"error\",r),e.finalize()})}prepareModel(e,t){e.creator=e.creator||\"ExcelJS\",e.lastModifiedBy=e.lastModifiedBy||\"ExcelJS\",e.created=e.created||new Date,e.modified=e.modified||new Date,e.useSharedStrings=void 0===t.useSharedStrings||t.useSharedStrings,e.useStyles=void 0===t.useStyles||t.useStyles,e.sharedStrings=new p,e.styles=e.useStyles?new f(!0):new f.Mock;const r=new y,n=new v;r.prepare(e);const i={sharedStrings:e.sharedStrings,styles:e.styles,date1904:e.properties.date1904,drawingsCount:0,media:e.media};i.drawings=e.drawings=[],i.commentRefs=e.commentRefs=[];let s=0;e.tables=[],e.worksheets.forEach(t=>{t.tables.forEach(t=>{s++,t.target=`table${s}.xml`,t.id=s,e.tables.push(t)}),n.prepare(t,i)})}async write(e,t){t=t||{};const{model:r}=this.workbook,n=new a.ZipWriter(t.zip);return n.pipe(e),this.prepareModel(r,t),await this.addContentTypes(n,r),await this.addOfficeRels(n,r),await this.addWorkbookRels(n,r),await this.addWorksheets(n,r),await this.addSharedStrings(n,r),await this.addDrawings(n,r),await this.addTables(n,r),await Promise.all([this.addThemes(n,r),this.addStyles(n,r)]),await this.addMedia(n,r),await Promise.all([this.addApp(n,r),this.addCore(n,r)]),await this.addWorkbook(n,r),this._finalize(n)}writeFile(e,t){const r=i.createWriteStream(e);return new Promise((e,n)=>{r.on(\"finish\",()=>{e()}),r.on(\"error\",e=>{n(e)}),this.write(r,t).then(()=>{r.end()}).catch(e=>{n(e)})})}async writeBuffer(e){const t=new l;return await this.write(t,e),t.read()}}M.RelType=e(\"./rel-type\"),t.exports=M}).call(this)}).call(this,e(\"_process\"),e(\"buffer\").Buffer)},{\"../utils/browser-buffer-decode\":16,\"../utils/stream-buf\":24,\"../utils/utils\":27,\"../utils/xml-stream\":28,\"../utils/zip-stream\":29,\"./rel-type\":31,\"./xform/book/workbook-xform\":38,\"./xform/comment/comments-xform\":40,\"./xform/comment/vml-notes-xform\":45,\"./xform/core/app-xform\":51,\"./xform/core/content-types-xform\":52,\"./xform/core/core-xform\":53,\"./xform/core/relationships-xform\":55,\"./xform/drawing/drawing-xform\":62,\"./xform/sheet/worksheet-xform\":115,\"./xform/strings/shared-strings-xform\":124,\"./xform/style/styles-xform\":135,\"./xform/table/table-xform\":143,\"./xml/theme1\":145,_process:467,buffer:220,fs:216,jszip:441,\"readable-stream\":491}],145:[function(e,t,r){\"use strict\";t.exports='<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\n<a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\"> <a:themeElements> <a:clrScheme name=\"Office\"> <a:dk1> <a:sysClr val=\"windowText\" lastClr=\"000000\"/> </a:dk1> <a:lt1> <a:sysClr val=\"window\" lastClr=\"FFFFFF\"/> </a:lt1> <a:dk2> <a:srgbClr val=\"1F497D\"/> </a:dk2> <a:lt2> <a:srgbClr val=\"EEECE1\"/> </a:lt2> <a:accent1> <a:srgbClr val=\"4F81BD\"/> </a:accent1> <a:accent2> <a:srgbClr val=\"C0504D\"/> </a:accent2> <a:accent3> <a:srgbClr val=\"9BBB59\"/> </a:accent3> <a:accent4> <a:srgbClr val=\"8064A2\"/> </a:accent4> <a:accent5> <a:srgbClr val=\"4BACC6\"/> </a:accent5> <a:accent6> <a:srgbClr val=\"F79646\"/> </a:accent6> <a:hlink> <a:srgbClr val=\"0000FF\"/> </a:hlink> <a:folHlink> <a:srgbClr val=\"800080\"/> </a:folHlink> </a:clrScheme> <a:fontScheme name=\"Office\"> <a:majorFont> <a:latin typeface=\"Cambria\"/> <a:ea typeface=\"\"/> <a:cs typeface=\"\"/> <a:font script=\"Jpan\" typeface=\"\\uff2d\\uff33 \\uff30\\u30b4\\u30b7\\u30c3\\u30af\"/> <a:font script=\"Hang\" typeface=\"\\ub9d1\\uc740 \\uace0\\ub515\"/> <a:font script=\"Hans\" typeface=\"\\u5b8b\\u4f53\"/> <a:font script=\"Hant\" typeface=\"\\u65b0\\u7d30\\u660e\\u9ad4\"/> <a:font script=\"Arab\" typeface=\"Times New Roman\"/> <a:font script=\"Hebr\" typeface=\"Times New Roman\"/> <a:font script=\"Thai\" typeface=\"Tahoma\"/> <a:font script=\"Ethi\" typeface=\"Nyala\"/> <a:font script=\"Beng\" typeface=\"Vrinda\"/> <a:font script=\"Gujr\" typeface=\"Shruti\"/> <a:font script=\"Khmr\" typeface=\"MoolBoran\"/> <a:font script=\"Knda\" typeface=\"Tunga\"/> <a:font script=\"Guru\" typeface=\"Raavi\"/> <a:font script=\"Cans\" typeface=\"Euphemia\"/> <a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/> <a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/> <a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/> <a:font script=\"Thaa\" typeface=\"MV Boli\"/> <a:font script=\"Deva\" typeface=\"Mangal\"/> <a:font script=\"Telu\" typeface=\"Gautami\"/> <a:font script=\"Taml\" typeface=\"Latha\"/> <a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/> <a:font script=\"Orya\" typeface=\"Kalinga\"/> <a:font script=\"Mlym\" typeface=\"Kartika\"/> <a:font script=\"Laoo\" typeface=\"DokChampa\"/> <a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/> <a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/> <a:font script=\"Viet\" typeface=\"Times New Roman\"/> <a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/> <a:font script=\"Geor\" typeface=\"Sylfaen\"/> </a:majorFont> <a:minorFont> <a:latin typeface=\"Calibri\"/> <a:ea typeface=\"\"/> <a:cs typeface=\"\"/> <a:font script=\"Jpan\" typeface=\"\\uff2d\\uff33 \\uff30\\u30b4\\u30b7\\u30c3\\u30af\"/> <a:font script=\"Hang\" typeface=\"\\ub9d1\\uc740 \\uace0\\ub515\"/> <a:font script=\"Hans\" typeface=\"\\u5b8b\\u4f53\"/> <a:font script=\"Hant\" typeface=\"\\u65b0\\u7d30\\u660e\\u9ad4\"/> <a:font script=\"Arab\" typeface=\"Arial\"/> <a:font script=\"Hebr\" typeface=\"Arial\"/> <a:font script=\"Thai\" typeface=\"Tahoma\"/> <a:font script=\"Ethi\" typeface=\"Nyala\"/> <a:font script=\"Beng\" typeface=\"Vrinda\"/> <a:font script=\"Gujr\" typeface=\"Shruti\"/> <a:font script=\"Khmr\" typeface=\"DaunPenh\"/> <a:font script=\"Knda\" typeface=\"Tunga\"/> <a:font script=\"Guru\" typeface=\"Raavi\"/> <a:font script=\"Cans\" typeface=\"Euphemia\"/> <a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/> <a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/> <a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/> <a:font script=\"Thaa\" typeface=\"MV Boli\"/> <a:font script=\"Deva\" typeface=\"Mangal\"/> <a:font script=\"Telu\" typeface=\"Gautami\"/> <a:font script=\"Taml\" typeface=\"Latha\"/> <a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/> <a:font script=\"Orya\" typeface=\"Kalinga\"/> <a:font script=\"Mlym\" typeface=\"Kartika\"/> <a:font script=\"Laoo\" typeface=\"DokChampa\"/> <a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/> <a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/> <a:font script=\"Viet\" typeface=\"Arial\"/> <a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/> <a:font script=\"Geor\" typeface=\"Sylfaen\"/> </a:minorFont> </a:fontScheme> <a:fmtScheme name=\"Office\"> <a:fillStyleLst> <a:solidFill> <a:schemeClr val=\"phClr\"/> </a:solidFill> <a:gradFill rotWithShape=\"1\"> <a:gsLst> <a:gs pos=\"0\"> <a:schemeClr val=\"phClr\"> <a:tint val=\"50000\"/> <a:satMod val=\"300000\"/> </a:schemeClr> </a:gs> <a:gs pos=\"35000\"> <a:schemeClr val=\"phClr\"> <a:tint val=\"37000\"/> <a:satMod val=\"300000\"/> </a:schemeClr> </a:gs> <a:gs pos=\"100000\"> <a:schemeClr val=\"phClr\"> <a:tint val=\"15000\"/> <a:satMod val=\"350000\"/> </a:schemeClr> </a:gs> </a:gsLst> <a:lin ang=\"16200000\" scaled=\"1\"/> </a:gradFill> <a:gradFill rotWithShape=\"1\"> <a:gsLst> <a:gs pos=\"0\"> <a:schemeClr val=\"phClr\"> <a:tint val=\"100000\"/> <a:shade val=\"100000\"/> <a:satMod val=\"130000\"/> </a:schemeClr> </a:gs> <a:gs pos=\"100000\"> <a:schemeClr val=\"phClr\"> <a:tint val=\"50000\"/> <a:shade val=\"100000\"/> <a:satMod val=\"350000\"/> </a:schemeClr> </a:gs> </a:gsLst> <a:lin ang=\"16200000\" scaled=\"0\"/> </a:gradFill> </a:fillStyleLst> <a:lnStyleLst> <a:ln w=\"9525\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"> <a:solidFill> <a:schemeClr val=\"phClr\"> <a:shade val=\"95000\"/> <a:satMod val=\"105000\"/> </a:schemeClr> </a:solidFill> <a:prstDash val=\"solid\"/> </a:ln> <a:ln w=\"25400\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"> <a:solidFill> <a:schemeClr val=\"phClr\"/> </a:solidFill> <a:prstDash val=\"solid\"/> </a:ln> <a:ln w=\"38100\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"> <a:solidFill> <a:schemeClr val=\"phClr\"/> </a:solidFill> <a:prstDash val=\"solid\"/> </a:ln> </a:lnStyleLst> <a:effectStyleLst> <a:effectStyle> <a:effectLst> <a:outerShdw blurRad=\"40000\" dist=\"20000\" dir=\"5400000\" rotWithShape=\"0\"> <a:srgbClr val=\"000000\"> <a:alpha val=\"38000\"/> </a:srgbClr> </a:outerShdw> </a:effectLst> </a:effectStyle> <a:effectStyle> <a:effectLst> <a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"> <a:srgbClr val=\"000000\"> <a:alpha val=\"35000\"/> </a:srgbClr> </a:outerShdw> </a:effectLst> </a:effectStyle> <a:effectStyle> <a:effectLst> <a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"> <a:srgbClr val=\"000000\"> <a:alpha val=\"35000\"/> </a:srgbClr> </a:outerShdw> </a:effectLst> <a:scene3d> <a:camera prst=\"orthographicFront\"> <a:rot lat=\"0\" lon=\"0\" rev=\"0\"/> </a:camera> <a:lightRig rig=\"threePt\" dir=\"t\"> <a:rot lat=\"0\" lon=\"0\" rev=\"1200000\"/> </a:lightRig> </a:scene3d> <a:sp3d> <a:bevelT w=\"63500\" h=\"25400\"/> </a:sp3d> </a:effectStyle> </a:effectStyleLst> <a:bgFillStyleLst> <a:solidFill> <a:schemeClr val=\"phClr\"/> </a:solidFill> <a:gradFill rotWithShape=\"1\"> <a:gsLst> <a:gs pos=\"0\"> <a:schemeClr val=\"phClr\"> <a:tint val=\"40000\"/> <a:satMod val=\"350000\"/> </a:schemeClr> </a:gs> <a:gs pos=\"40000\"> <a:schemeClr val=\"phClr\"> <a:tint val=\"45000\"/> <a:shade val=\"99000\"/> <a:satMod val=\"350000\"/> </a:schemeClr> </a:gs> <a:gs pos=\"100000\"> <a:schemeClr val=\"phClr\"> <a:shade val=\"20000\"/> <a:satMod val=\"255000\"/> </a:schemeClr> </a:gs> </a:gsLst> <a:path path=\"circle\"> <a:fillToRect l=\"50000\" t=\"-80000\" r=\"50000\" b=\"180000\"/> </a:path> </a:gradFill> <a:gradFill rotWithShape=\"1\"> <a:gsLst> <a:gs pos=\"0\"> <a:schemeClr val=\"phClr\"> <a:tint val=\"80000\"/> <a:satMod val=\"300000\"/> </a:schemeClr> </a:gs> <a:gs pos=\"100000\"> <a:schemeClr val=\"phClr\"> <a:shade val=\"30000\"/> <a:satMod val=\"200000\"/> </a:schemeClr> </a:gs> </a:gsLst> <a:path path=\"circle\"> <a:fillToRect l=\"50000\" t=\"50000\" r=\"50000\" b=\"50000\"/> </a:path> </a:gradFill> </a:bgFillStyleLst> </a:fmtScheme> </a:themeElements> <a:objectDefaults> <a:spDef> <a:spPr/> <a:bodyPr/> <a:lstStyle/> <a:style> <a:lnRef idx=\"1\"> <a:schemeClr val=\"accent1\"/> </a:lnRef> <a:fillRef idx=\"3\"> <a:schemeClr val=\"accent1\"/> </a:fillRef> <a:effectRef idx=\"2\"> <a:schemeClr val=\"accent1\"/> </a:effectRef> <a:fontRef idx=\"minor\"> <a:schemeClr val=\"lt1\"/> </a:fontRef> </a:style> </a:spDef> <a:lnDef> <a:spPr/> <a:bodyPr/> <a:lstStyle/> <a:style> <a:lnRef idx=\"2\"> <a:schemeClr val=\"accent1\"/> </a:lnRef> <a:fillRef idx=\"0\"> <a:schemeClr val=\"accent1\"/> </a:fillRef> <a:effectRef idx=\"1\"> <a:schemeClr val=\"accent1\"/> </a:effectRef> <a:fontRef idx=\"minor\"> <a:schemeClr val=\"tx1\"/> </a:fontRef> </a:style> </a:lnDef> </a:objectDefaults> <a:extraClrSchemeLst/> </a:theme>'},{}],146:[function(e,t,r){(function(t){(function(){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.CsvFormatterStream=void 0;const n=e(\"stream\"),i=e(\"./formatter\");class s extends n.Transform{constructor(e){super({writableObjectMode:e.objectMode}),this.hasWrittenBOM=!1,this.formatterOptions=e,this.rowFormatter=new i.RowFormatter(e),this.hasWrittenBOM=!e.writeBOM}transform(e){return this.rowFormatter.rowTransform=e,this}_transform(e,r,n){let i=!1;try{this.hasWrittenBOM||(this.push(this.formatterOptions.BOM),this.hasWrittenBOM=!0),this.rowFormatter.format(e,(e,r)=>e?(i=!0,n(e)):(r&&r.forEach(e=>{this.push(t.from(e,\"utf8\"))}),i=!0,n()))}catch(e){if(i)throw e;n(e)}}_flush(e){this.rowFormatter.finish((r,n)=>r?e(r):(n&&n.forEach(e=>{this.push(t.from(e,\"utf8\"))}),e()))}}r.CsvFormatterStream=s}).call(this)}).call(this,e(\"buffer\").Buffer)},{\"./formatter\":150,buffer:220,stream:505}],147:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.FormatterOptions=void 0;r.FormatterOptions=class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t;this.objectMode=!0,this.delimiter=\",\",this.rowDelimiter=\"\\n\",this.quote='\"',this.escape=this.quote,this.quoteColumns=!1,this.quoteHeaders=this.quoteColumns,this.headers=null,this.includeEndRowDelimiter=!1,this.writeBOM=!1,this.BOM=\"\\ufeff\",this.alwaysWriteHeaders=!1,Object.assign(this,e||{}),void 0===(null==e?void 0:e.quoteHeaders)&&(this.quoteHeaders=this.quoteColumns),!0===(null==e?void 0:e.quote)?this.quote='\"':!1===(null==e?void 0:e.quote)&&(this.quote=\"\"),\"string\"!=typeof(null==e?void 0:e.escape)&&(this.escape=this.quote),this.shouldWriteHeaders=!!this.headers&&(null===(t=e.writeHeaders)||void 0===t||t),this.headers=Array.isArray(this.headers)?this.headers:null,this.escapedQuote=`${this.escape}${this.quote}`}}},{}],148:[function(e,t,r){\"use strict\";var n=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,\"__esModule\",{value:!0}),r.FieldFormatter=void 0;const i=n(e(\"lodash.isboolean\")),s=n(e(\"lodash.isnil\")),o=n(e(\"lodash.escaperegexp\"));r.FieldFormatter=class{constructor(e){this._headers=null,this.formatterOptions=e,null!==e.headers&&(this.headers=e.headers),this.REPLACE_REGEXP=new RegExp(e.quote,\"g\");const t=`[${e.delimiter}${o.default(e.rowDelimiter)}|\\r|\\n]`;this.ESCAPE_REGEXP=new RegExp(t)}set headers(e){this._headers=e}shouldQuote(e,t){const r=t?this.formatterOptions.quoteHeaders:this.formatterOptions.quoteColumns;return i.default(r)?r:Array.isArray(r)?r[e]:null!==this._headers&&r[this._headers[e]]}format(e,t,r){const n=(\"\"+(s.default(e)?\"\":e)).replace(/\\0/g,\"\"),{formatterOptions:i}=this;if(\"\"!==i.quote){if(-1!==n.indexOf(i.quote))return this.quoteField(n.replace(this.REPLACE_REGEXP,i.escapedQuote))}return-1!==n.search(this.ESCAPE_REGEXP)||this.shouldQuote(t,r)?this.quoteField(n):n}quoteField(e){const{quote:t}=this.formatterOptions;return`${t}${e}${t}`}}},{\"lodash.escaperegexp\":442,\"lodash.isboolean\":444,\"lodash.isnil\":447}],149:[function(e,t,r){\"use strict\";var n=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,\"__esModule\",{value:!0}),r.RowFormatter=void 0;const i=n(e(\"lodash.isfunction\")),s=n(e(\"lodash.isequal\")),o=e(\"./FieldFormatter\"),a=e(\"../types\");class l{constructor(e){this.rowCount=0,this.formatterOptions=e,this.fieldFormatter=new o.FieldFormatter(e),this.headers=e.headers,this.shouldWriteHeaders=e.shouldWriteHeaders,this.hasWrittenHeaders=!1,null!==this.headers&&(this.fieldFormatter.headers=this.headers),e.transform&&(this.rowTransform=e.transform)}static isRowHashArray(e){return!!Array.isArray(e)&&(Array.isArray(e[0])&&2===e[0].length)}static isRowArray(e){return Array.isArray(e)&&!this.isRowHashArray(e)}static gatherHeaders(e){return l.isRowHashArray(e)?e.map(e=>e[0]):Array.isArray(e)?e:Object.keys(e)}static createTransform(e){return a.isSyncTransform(e)?(t,r)=>{let n=null;try{n=e(t)}catch(e){return r(e)}return r(null,n)}:(t,r)=>{e(t,r)}}set rowTransform(e){if(!i.default(e))throw new TypeError(\"The transform should be a function\");this._rowTransform=l.createTransform(e)}format(e,t){this.callTransformer(e,(r,n)=>{if(r)return t(r);if(!e)return t(null);const i=[];if(n){const{shouldFormatColumns:e,headers:t}=this.checkHeaders(n);if(this.shouldWriteHeaders&&t&&!this.hasWrittenHeaders&&(i.push(this.formatColumns(t,!0)),this.hasWrittenHeaders=!0),e){const e=this.gatherColumns(n);i.push(this.formatColumns(e,!1))}}return t(null,i)})}finish(e){const t=[];if(this.formatterOptions.alwaysWriteHeaders&&0===this.rowCount){if(!this.headers)return e(new Error(\"`alwaysWriteHeaders` option is set to true but `headers` option not provided.\"));t.push(this.formatColumns(this.headers,!0))}return this.formatterOptions.includeEndRowDelimiter&&t.push(this.formatterOptions.rowDelimiter),e(null,t)}checkHeaders(e){if(this.headers)return{shouldFormatColumns:!0,headers:this.headers};const t=l.gatherHeaders(e);return this.headers=t,this.fieldFormatter.headers=t,this.shouldWriteHeaders?{shouldFormatColumns:!s.default(t,e),headers:t}:{shouldFormatColumns:!0,headers:null}}gatherColumns(e){if(null===this.headers)throw new Error(\"Headers is currently null\");return Array.isArray(e)?l.isRowHashArray(e)?this.headers.map((t,r)=>{const n=e[r];return n?n[1]:\"\"}):l.isRowArray(e)&&!this.shouldWriteHeaders?e:this.headers.map((t,r)=>e[r]):this.headers.map(t=>e[t])}callTransformer(e,t){return this._rowTransform?this._rowTransform(e,t):t(null,e)}formatColumns(e,t){const r=e.map((e,r)=>this.fieldFormatter.format(e,r,t)).join(this.formatterOptions.delimiter),{rowCount:n}=this;return this.rowCount+=1,n?[this.formatterOptions.rowDelimiter,r].join(\"\"):r}}r.RowFormatter=l},{\"../types\":152,\"./FieldFormatter\":148,\"lodash.isequal\":445,\"lodash.isfunction\":446}],150:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.FieldFormatter=r.RowFormatter=void 0;var n=e(\"./RowFormatter\");Object.defineProperty(r,\"RowFormatter\",{enumerable:!0,get:function(){return n.RowFormatter}});var i=e(\"./FieldFormatter\");Object.defineProperty(r,\"FieldFormatter\",{enumerable:!0,get:function(){return i.FieldFormatter}})},{\"./FieldFormatter\":148,\"./RowFormatter\":149}],151:[function(e,t,r){(function(t){(function(){\"use strict\";var n=Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]},i=Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t},s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)\"default\"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=function(e,t){for(var r in e)\"default\"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(r,\"__esModule\",{value:!0}),r.writeToPath=r.writeToString=r.writeToBuffer=r.writeToStream=r.write=r.format=r.FormatterOptions=r.CsvFormatterStream=void 0;const a=e(\"util\"),l=e(\"stream\"),c=s(e(\"fs\")),u=e(\"./FormatterOptions\"),h=e(\"./CsvFormatterStream\");o(e(\"./types\"),r);var f=e(\"./CsvFormatterStream\");Object.defineProperty(r,\"CsvFormatterStream\",{enumerable:!0,get:function(){return f.CsvFormatterStream}});var d=e(\"./FormatterOptions\");Object.defineProperty(r,\"FormatterOptions\",{enumerable:!0,get:function(){return d.FormatterOptions}}),r.format=e=>new h.CsvFormatterStream(new u.FormatterOptions(e)),r.write=(e,t)=>{const n=r.format(t),i=a.promisify((e,t)=>{n.write(e,void 0,t)});return e.reduce((e,t)=>e.then(()=>i(t)),Promise.resolve()).then(()=>n.end()).catch(e=>{n.emit(\"error\",e)}),n},r.writeToStream=(e,t,n)=>r.write(t,n).pipe(e),r.writeToBuffer=function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=[],s=new l.Writable({write(e,t,r){i.push(e),r()}});return new Promise((o,a)=>{s.on(\"error\",a).on(\"finish\",()=>o(t.concat(i))),r.write(e,n).pipe(s)})},r.writeToString=(e,t)=>r.writeToBuffer(e,t).then(e=>e.toString()),r.writeToPath=(e,t,n)=>{const i=c.createWriteStream(e,{encoding:\"utf8\"});return r.write(t,n).pipe(i)}}).call(this)}).call(this,e(\"buffer\").Buffer)},{\"./CsvFormatterStream\":146,\"./FormatterOptions\":147,\"./types\":152,buffer:220,fs:216,stream:505,util:527}],152:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.isSyncTransform=void 0,r.isSyncTransform=e=>1===e.length},{}],153:[function(e,t,r){(function(t){(function(){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.CsvParserStream=void 0;const n=e(\"string_decoder\"),i=e(\"stream\"),s=e(\"./transforms\"),o=e(\"./parser\");class a extends i.Transform{constructor(e){super({objectMode:e.objectMode}),this.lines=\"\",this.rowCount=0,this.parsedRowCount=0,this.parsedLineCount=0,this.endEmitted=!1,this.headersEmitted=!1,this.parserOptions=e,this.parser=new o.Parser(e),this.headerTransformer=new s.HeaderTransformer(e),this.decoder=new n.StringDecoder(e.encoding),this.rowTransformerValidator=new s.RowTransformerValidator}get hasHitRowLimit(){return this.parserOptions.limitRows&&this.rowCount>=this.parserOptions.maxRows}get shouldEmitRows(){return this.parsedRowCount>this.parserOptions.skipRows}get shouldSkipLine(){return this.parsedLineCount<=this.parserOptions.skipLines}transform(e){return this.rowTransformerValidator.rowTransform=e,this}validate(e){return this.rowTransformerValidator.rowValidator=e,this}emit(e){if(\"end\"===e)return this.endEmitted||(this.endEmitted=!0,super.emit(\"end\",this.rowCount)),!1;for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return super.emit(e,...r)}_transform(e,t,r){if(this.hasHitRowLimit)return r();const n=a.wrapDoneCallback(r);try{const{lines:t}=this,r=t+this.decoder.write(e),i=this.parse(r,!0);return this.processRows(i,n)}catch(e){return n(e)}}_flush(e){const t=a.wrapDoneCallback(e);if(this.hasHitRowLimit)return t();try{const e=this.lines+this.decoder.end(),r=this.parse(e,!1);return this.processRows(r,t)}catch(e){return t(e)}}parse(e,t){if(!e)return[];const{line:r,rows:n}=this.parser.parse(e,t);return this.lines=r,n}processRows(e,r){const n=e.length,i=s=>{const o=e=>e?r(e):s%100!=0?i(s+1):void t(()=>i(s+1));if(this.checkAndEmitHeaders(),s>=n||this.hasHitRowLimit)return r();if(this.parsedLineCount+=1,this.shouldSkipLine)return o();const a=e[s];this.rowCount+=1,this.parsedRowCount+=1;const l=this.rowCount;return this.transformRow(a,(e,t)=>{if(e)return this.rowCount-=1,o(e);if(!t)return o(new Error(\"expected transform result\"));if(t.isValid){if(t.row)return this.pushRow(t.row,o)}else this.emit(\"data-invalid\",t.row,l,t.reason);return o()})};i(0)}transformRow(e,t){try{this.headerTransformer.transform(e,(r,n)=>r?t(r):n?n.isValid?n.row?this.shouldEmitRows?this.rowTransformerValidator.transformAndValidate(n.row,t):this.skipRow(t):(this.rowCount-=1,this.parsedRowCount-=1,t(null,{row:null,isValid:!0})):this.shouldEmitRows?t(null,{isValid:!1,row:e}):this.skipRow(t):t(new Error(\"Expected result from header transform\")))}catch(e){t(e)}}checkAndEmitHeaders(){!this.headersEmitted&&this.headerTransformer.headers&&(this.headersEmitted=!0,this.emit(\"headers\",this.headerTransformer.headers))}skipRow(e){return this.rowCount-=1,e(null,{row:null,isValid:!0})}pushRow(e,t){try{this.parserOptions.objectMode?this.push(e):this.push(JSON.stringify(e)),t()}catch(e){t(e)}}static wrapDoneCallback(e){let t=!1;return function(r){if(r){if(t)throw r;return t=!0,void e(r)}for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];e(...i)}}}r.CsvParserStream=a}).call(this)}).call(this,e(\"timers\").setImmediate)},{\"./parser\":165,\"./transforms\":168,stream:505,string_decoder:218,timers:523}],154:[function(e,t,r){\"use strict\";var n=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,\"__esModule\",{value:!0}),r.ParserOptions=void 0;const i=n(e(\"lodash.escaperegexp\")),s=n(e(\"lodash.isnil\"));r.ParserOptions=class{constructor(e){var t;if(this.objectMode=!0,this.delimiter=\",\",this.ignoreEmpty=!1,this.quote='\"',this.escape=null,this.escapeChar=this.quote,this.comment=null,this.supportsComments=!1,this.ltrim=!1,this.rtrim=!1,this.trim=!1,this.headers=null,this.renameHeaders=!1,this.strictColumnHandling=!1,this.discardUnmappedColumns=!1,this.carriageReturn=\"\\r\",this.encoding=\"utf8\",this.limitRows=!1,this.maxRows=0,this.skipLines=0,this.skipRows=0,Object.assign(this,e||{}),this.delimiter.length>1)throw new Error(\"delimiter option must be one character long\");this.escapedDelimiter=i.default(this.delimiter),this.escapeChar=null!==(t=this.escape)&&void 0!==t?t:this.quote,this.supportsComments=!s.default(this.comment),this.NEXT_TOKEN_REGEXP=new RegExp(`([^\\\\s]|\\\\r\\\\n|\\\\n|\\\\r|${this.escapedDelimiter})`),this.maxRows>0&&(this.limitRows=!0)}}},{\"lodash.escaperegexp\":442,\"lodash.isnil\":447}],155:[function(e,t,r){\"use strict\";var n=Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]},i=Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t},s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)\"default\"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=function(e,t){for(var r in e)\"default\"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(r,\"__esModule\",{value:!0}),r.parseString=r.parseFile=r.parseStream=r.parse=r.ParserOptions=r.CsvParserStream=void 0;const a=s(e(\"fs\")),l=e(\"stream\"),c=e(\"./ParserOptions\"),u=e(\"./CsvParserStream\");o(e(\"./types\"),r);var h=e(\"./CsvParserStream\");Object.defineProperty(r,\"CsvParserStream\",{enumerable:!0,get:function(){return h.CsvParserStream}});var f=e(\"./ParserOptions\");Object.defineProperty(r,\"ParserOptions\",{enumerable:!0,get:function(){return f.ParserOptions}}),r.parse=e=>new u.CsvParserStream(new c.ParserOptions(e)),r.parseStream=(e,t)=>e.pipe(new u.CsvParserStream(new c.ParserOptions(t))),r.parseFile=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a.createReadStream(e).pipe(new u.CsvParserStream(new c.ParserOptions(t)))},r.parseString=(e,t)=>{const r=new l.Readable;return r.push(e),r.push(null),r.pipe(new u.CsvParserStream(new c.ParserOptions(t)))}},{\"./CsvParserStream\":153,\"./ParserOptions\":154,\"./types\":169,fs:216,stream:505}],156:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.Parser=void 0;const n=e(\"./Scanner\"),i=e(\"./RowParser\"),s=e(\"./Token\");class o{constructor(e){this.parserOptions=e,this.rowParser=new i.RowParser(this.parserOptions)}static removeBOM(e){return e&&65279===e.charCodeAt(0)?e.slice(1):e}parse(e,t){const r=new n.Scanner({line:o.removeBOM(e),parserOptions:this.parserOptions,hasMoreData:t});return this.parserOptions.supportsComments?this.parseWithComments(r):this.parseWithoutComments(r)}parseWithoutComments(e){const t=[];let r=!0;for(;r;)r=this.parseRow(e,t);return{line:e.line,rows:t}}parseWithComments(e){const{parserOptions:t}=this,r=[];for(let n=e.nextCharacterToken;null!==n;n=e.nextCharacterToken)if(s.Token.isTokenComment(n,t)){if(null===e.advancePastLine())return{line:e.lineFromCursor,rows:r};if(!e.hasMoreCharacters)return{line:e.lineFromCursor,rows:r};e.truncateToCursor()}else if(!this.parseRow(e,r))break;return{line:e.line,rows:r}}parseRow(e,t){if(!e.nextNonSpaceToken)return!1;const r=this.rowParser.parse(e);return null!==r&&(this.parserOptions.ignoreEmpty&&i.RowParser.isEmptyRow(r)||t.push(r),!0)}}r.Parser=o},{\"./RowParser\":157,\"./Scanner\":158,\"./Token\":159}],157:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.RowParser=void 0;const n=e(\"./column\"),i=e(\"./Token\");r.RowParser=class{constructor(e){this.parserOptions=e,this.columnParser=new n.ColumnParser(e)}static isEmptyRow(e){return\"\"===e.join(\"\").replace(/\\s+/g,\"\")}parse(e){const{parserOptions:t}=this,{hasMoreData:r}=e,n=e,s=[];let o=this.getStartToken(n,s);for(;o;){if(i.Token.isTokenRowDelimiter(o))return n.advancePastToken(o),!n.hasMoreCharacters&&i.Token.isTokenCarriageReturn(o,t)&&r?null:(n.truncateToCursor(),s);if(!this.shouldSkipColumnParse(n,o,s)){const e=this.columnParser.parse(n);if(null===e)return null;s.push(e)}o=n.nextNonSpaceToken}return r?null:(n.truncateToCursor(),s)}getStartToken(e,t){const r=e.nextNonSpaceToken;return null!==r&&i.Token.isTokenDelimiter(r,this.parserOptions)?(t.push(\"\"),e.nextNonSpaceToken):r}shouldSkipColumnParse(e,t,r){const{parserOptions:n}=this;if(i.Token.isTokenDelimiter(t,n)){e.advancePastToken(t);const s=e.nextCharacterToken;if(!e.hasMoreCharacters||null!==s&&i.Token.isTokenRowDelimiter(s))return r.push(\"\"),!0;if(null!==s&&i.Token.isTokenDelimiter(s,n))return r.push(\"\"),!0}return!1}}},{\"./Token\":159,\"./column\":164}],158:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.Scanner=void 0;const n=e(\"./Token\"),i=/((?:\\r\\n)|\\n|\\r)/;r.Scanner=class{constructor(e){this.cursor=0,this.line=e.line,this.lineLength=this.line.length,this.parserOptions=e.parserOptions,this.hasMoreData=e.hasMoreData,this.cursor=e.cursor||0}get hasMoreCharacters(){return this.lineLength>this.cursor}get nextNonSpaceToken(){const{lineFromCursor:e}=this,t=this.parserOptions.NEXT_TOKEN_REGEXP;if(-1===e.search(t))return null;const r=t.exec(e);if(null==r)return null;const i=r[1],s=this.cursor+(r.index||0);return new n.Token({token:i,startCursor:s,endCursor:s+i.length-1})}get nextCharacterToken(){const{cursor:e,lineLength:t}=this;return t<=e?null:new n.Token({token:this.line[e],startCursor:e,endCursor:e})}get lineFromCursor(){return this.line.substr(this.cursor)}advancePastLine(){const e=i.exec(this.lineFromCursor);return e?(this.cursor+=(e.index||0)+e[0].length,this):this.hasMoreData?null:(this.cursor=this.lineLength,this)}advanceTo(e){return this.cursor=e,this}advanceToToken(e){return this.cursor=e.startCursor,this}advancePastToken(e){return this.cursor=e.endCursor+1,this}truncateToCursor(){return this.line=this.lineFromCursor,this.lineLength=this.line.length,this.cursor=0,this}}},{\"./Token\":159}],159:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.Token=void 0;r.Token=class{constructor(e){this.token=e.token,this.startCursor=e.startCursor,this.endCursor=e.endCursor}static isTokenRowDelimiter(e){const t=e.token;return\"\\r\"===t||\"\\n\"===t||\"\\r\\n\"===t}static isTokenCarriageReturn(e,t){return e.token===t.carriageReturn}static isTokenComment(e,t){return t.supportsComments&&!!e&&e.token===t.comment}static isTokenEscapeCharacter(e,t){return e.token===t.escapeChar}static isTokenQuote(e,t){return e.token===t.quote}static isTokenDelimiter(e,t){return e.token===t.delimiter}}},{}],160:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.ColumnFormatter=void 0;r.ColumnFormatter=class{constructor(e){e.trim?this.format=e=>e.trim():e.ltrim?this.format=e=>e.trimLeft():e.rtrim?this.format=e=>e.trimRight():this.format=e=>e}}},{}],161:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.ColumnParser=void 0;const n=e(\"./NonQuotedColumnParser\"),i=e(\"./QuotedColumnParser\"),s=e(\"../Token\");r.ColumnParser=class{constructor(e){this.parserOptions=e,this.quotedColumnParser=new i.QuotedColumnParser(e),this.nonQuotedColumnParser=new n.NonQuotedColumnParser(e)}parse(e){const{nextNonSpaceToken:t}=e;return null!==t&&s.Token.isTokenQuote(t,this.parserOptions)?(e.advanceToToken(t),this.quotedColumnParser.parse(e)):this.nonQuotedColumnParser.parse(e)}}},{\"../Token\":159,\"./NonQuotedColumnParser\":162,\"./QuotedColumnParser\":163}],162:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.NonQuotedColumnParser=void 0;const n=e(\"./ColumnFormatter\"),i=e(\"../Token\");r.NonQuotedColumnParser=class{constructor(e){this.parserOptions=e,this.columnFormatter=new n.ColumnFormatter(e)}parse(e){if(!e.hasMoreCharacters)return null;const{parserOptions:t}=this,r=[];let n=e.nextCharacterToken;for(;n&&(!i.Token.isTokenDelimiter(n,t)&&!i.Token.isTokenRowDelimiter(n));n=e.nextCharacterToken)r.push(n.token),e.advancePastToken(n);return this.columnFormatter.format(r.join(\"\"))}}},{\"../Token\":159,\"./ColumnFormatter\":160}],163:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.QuotedColumnParser=void 0;const n=e(\"./ColumnFormatter\"),i=e(\"../Token\");r.QuotedColumnParser=class{constructor(e){this.parserOptions=e,this.columnFormatter=new n.ColumnFormatter(e)}parse(e){if(!e.hasMoreCharacters)return null;const t=e.cursor,{foundClosingQuote:r,col:n}=this.gatherDataBetweenQuotes(e);if(!r){if(e.advanceTo(t),!e.hasMoreData)throw new Error(`Parse Error: missing closing: '${this.parserOptions.quote||\"\"}' in line: at '${e.lineFromCursor.replace(/[\\r\\n]/g,\"\\\\n'\")}'`);return null}return this.checkForMalformedColumn(e),n}gatherDataBetweenQuotes(e){const{parserOptions:t}=this;let r=!1,n=!1;const s=[];let o=e.nextCharacterToken;for(;!n&&null!==o;o=e.nextCharacterToken){const a=i.Token.isTokenQuote(o,t);if(!r&&a)r=!0;else if(r)if(i.Token.isTokenEscapeCharacter(o,t)){e.advancePastToken(o);const r=e.nextCharacterToken;null!==r&&(i.Token.isTokenQuote(r,t)||i.Token.isTokenEscapeCharacter(r,t))?(s.push(r.token),o=r):a?n=!0:s.push(o.token)}else a?n=!0:s.push(o.token);e.advancePastToken(o)}return{col:this.columnFormatter.format(s.join(\"\")),foundClosingQuote:n}}checkForMalformedColumn(e){const{parserOptions:t}=this,{nextNonSpaceToken:r}=e;if(r){const n=i.Token.isTokenDelimiter(r,t),s=i.Token.isTokenRowDelimiter(r);if(!n&&!s){const n=e.lineFromCursor.substr(0,10).replace(/[\\r\\n]/g,\"\\\\n'\");throw new Error(`Parse Error: expected: '${t.escapedDelimiter}' OR new line got: '${r.token}'. at '${n}`)}e.advanceToToken(r)}else e.hasMoreData||e.advancePastLine()}}},{\"../Token\":159,\"./ColumnFormatter\":160}],164:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.ColumnFormatter=r.QuotedColumnParser=r.NonQuotedColumnParser=r.ColumnParser=void 0;var n=e(\"./ColumnParser\");Object.defineProperty(r,\"ColumnParser\",{enumerable:!0,get:function(){return n.ColumnParser}});var i=e(\"./NonQuotedColumnParser\");Object.defineProperty(r,\"NonQuotedColumnParser\",{enumerable:!0,get:function(){return i.NonQuotedColumnParser}});var s=e(\"./QuotedColumnParser\");Object.defineProperty(r,\"QuotedColumnParser\",{enumerable:!0,get:function(){return s.QuotedColumnParser}});var o=e(\"./ColumnFormatter\");Object.defineProperty(r,\"ColumnFormatter\",{enumerable:!0,get:function(){return o.ColumnFormatter}})},{\"./ColumnFormatter\":160,\"./ColumnParser\":161,\"./NonQuotedColumnParser\":162,\"./QuotedColumnParser\":163}],165:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.QuotedColumnParser=r.NonQuotedColumnParser=r.ColumnParser=r.Token=r.Scanner=r.RowParser=r.Parser=void 0;var n=e(\"./Parser\");Object.defineProperty(r,\"Parser\",{enumerable:!0,get:function(){return n.Parser}});var i=e(\"./RowParser\");Object.defineProperty(r,\"RowParser\",{enumerable:!0,get:function(){return i.RowParser}});var s=e(\"./Scanner\");Object.defineProperty(r,\"Scanner\",{enumerable:!0,get:function(){return s.Scanner}});var o=e(\"./Token\");Object.defineProperty(r,\"Token\",{enumerable:!0,get:function(){return o.Token}});var a=e(\"./column\");Object.defineProperty(r,\"ColumnParser\",{enumerable:!0,get:function(){return a.ColumnParser}}),Object.defineProperty(r,\"NonQuotedColumnParser\",{enumerable:!0,get:function(){return a.NonQuotedColumnParser}}),Object.defineProperty(r,\"QuotedColumnParser\",{enumerable:!0,get:function(){return a.QuotedColumnParser}})},{\"./Parser\":156,\"./RowParser\":157,\"./Scanner\":158,\"./Token\":159,\"./column\":164}],166:[function(e,t,r){\"use strict\";var n=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,\"__esModule\",{value:!0}),r.HeaderTransformer=void 0;const i=n(e(\"lodash.isundefined\")),s=n(e(\"lodash.isfunction\")),o=n(e(\"lodash.uniq\")),a=n(e(\"lodash.groupby\"));r.HeaderTransformer=class{constructor(e){this.headers=null,this.receivedHeaders=!1,this.shouldUseFirstRow=!1,this.processedFirstRow=!1,this.headersLength=0,this.parserOptions=e,!0===e.headers?this.shouldUseFirstRow=!0:Array.isArray(e.headers)?this.setHeaders(e.headers):s.default(e.headers)&&(this.headersTransform=e.headers)}transform(e,t){return this.shouldMapRow(e)?t(null,this.processRow(e)):t(null,{row:null,isValid:!0})}shouldMapRow(e){const{parserOptions:t}=this;if(!this.headersTransform&&t.renameHeaders&&!this.processedFirstRow){if(!this.receivedHeaders)throw new Error(\"Error renaming headers: new headers must be provided in an array\");return this.processedFirstRow=!0,!1}if(!this.receivedHeaders&&Array.isArray(e)){if(this.headersTransform)this.setHeaders(this.headersTransform(e));else{if(!this.shouldUseFirstRow)return!0;this.setHeaders(e)}return!1}return!0}processRow(e){if(!this.headers)return{row:e,isValid:!0};const{parserOptions:t}=this;if(!t.discardUnmappedColumns&&e.length>this.headersLength){if(!t.strictColumnHandling)throw new Error(`Unexpected Error: column header mismatch expected: ${this.headersLength} columns got: ${e.length}`);return{row:e,isValid:!1,reason:`Column header mismatch expected: ${this.headersLength} columns got: ${e.length}`}}return t.strictColumnHandling&&e.length<this.headersLength?{row:e,isValid:!1,reason:`Column header mismatch expected: ${this.headersLength} columns got: ${e.length}`}:{row:this.mapHeaders(e),isValid:!0}}mapHeaders(e){const t={},{headers:r,headersLength:n}=this;for(let s=0;s<n;s+=1){const n=r[s];if(!i.default(n)){const r=e[s];i.default(r)?t[n]=\"\":t[n]=r}}return t}setHeaders(e){var t;const r=e.filter(e=>!!e);if(o.default(r).length!==r.length){const e=a.default(r),t=Object.keys(e).filter(t=>e[t].length>1);throw new Error(\"Duplicate headers found \"+JSON.stringify(t))}this.headers=e,this.receivedHeaders=!0,this.headersLength=(null===(t=this.headers)||void 0===t?void 0:t.length)||0}}},{\"lodash.groupby\":443,\"lodash.isfunction\":446,\"lodash.isundefined\":448,\"lodash.uniq\":449}],167:[function(e,t,r){\"use strict\";var n=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,\"__esModule\",{value:!0}),r.RowTransformerValidator=void 0;const i=n(e(\"lodash.isfunction\")),s=e(\"../types\");class o{constructor(){this._rowTransform=null,this._rowValidator=null}static createTransform(e){return s.isSyncTransform(e)?(t,r)=>{let n=null;try{n=e(t)}catch(e){return r(e)}return r(null,n)}:e}static createValidator(e){return s.isSyncValidate(e)?(t,r)=>{r(null,{row:t,isValid:e(t)})}:(t,r)=>{e(t,(e,n,i)=>e?r(e):r(null,n?{row:t,isValid:n,reason:i}:{row:t,isValid:!1,reason:i}))}}set rowTransform(e){if(!i.default(e))throw new TypeError(\"The transform should be a function\");this._rowTransform=o.createTransform(e)}set rowValidator(e){if(!i.default(e))throw new TypeError(\"The validate should be a function\");this._rowValidator=o.createValidator(e)}transformAndValidate(e,t){return this.callTransformer(e,(e,r)=>e?t(e):r?this.callValidator(r,(e,n)=>e?t(e):n&&!n.isValid?t(null,{row:r,isValid:!1,reason:n.reason}):t(null,{row:r,isValid:!0})):t(null,{row:null,isValid:!0}))}callTransformer(e,t){return this._rowTransform?this._rowTransform(e,t):t(null,e)}callValidator(e,t){return this._rowValidator?this._rowValidator(e,t):t(null,{row:e,isValid:!0})}}r.RowTransformerValidator=o},{\"../types\":169,\"lodash.isfunction\":446}],168:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.HeaderTransformer=r.RowTransformerValidator=void 0;var n=e(\"./RowTransformerValidator\");Object.defineProperty(r,\"RowTransformerValidator\",{enumerable:!0,get:function(){return n.RowTransformerValidator}});var i=e(\"./HeaderTransformer\");Object.defineProperty(r,\"HeaderTransformer\",{enumerable:!0,get:function(){return i.HeaderTransformer}})},{\"./HeaderTransformer\":166,\"./RowTransformerValidator\":167}],169:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.isSyncValidate=r.isSyncTransform=void 0,r.isSyncTransform=e=>1===e.length,r.isSyncValidate=e=>1===e.length},{}],170:[function(e,t,r){\"use strict\";const n=r;n.bignum=e(\"bn.js\"),n.define=e(\"./asn1/api\").define,n.base=e(\"./asn1/base\"),n.constants=e(\"./asn1/constants\"),n.decoders=e(\"./asn1/decoders\"),n.encoders=e(\"./asn1/encoders\")},{\"./asn1/api\":171,\"./asn1/base\":173,\"./asn1/constants\":177,\"./asn1/decoders\":179,\"./asn1/encoders\":182,\"bn.js\":184}],171:[function(e,t,r){\"use strict\";const n=e(\"./encoders\"),i=e(\"./decoders\"),s=e(\"inherits\");function o(e,t){this.name=e,this.body=t,this.decoders={},this.encoders={}}r.define=function(e,t){return new o(e,t)},o.prototype._createNamed=function(e){const t=this.name;function r(e){this._initNamed(e,t)}return s(r,e),r.prototype._initNamed=function(t,r){e.call(this,t,r)},new r(this)},o.prototype._getDecoder=function(e){return e=e||\"der\",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(i[e])),this.decoders[e]},o.prototype.decode=function(e,t,r){return this._getDecoder(t).decode(e,r)},o.prototype._getEncoder=function(e){return e=e||\"der\",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(n[e])),this.encoders[e]},o.prototype.encode=function(e,t,r){return this._getEncoder(t).encode(e,r)}},{\"./decoders\":179,\"./encoders\":182,inherits:440}],172:[function(e,t,r){\"use strict\";const n=e(\"inherits\"),i=e(\"../base/reporter\").Reporter,s=e(\"safer-buffer\").Buffer;function o(e,t){i.call(this,t),s.isBuffer(e)?(this.base=e,this.offset=0,this.length=e.length):this.error(\"Input not Buffer\")}function a(e,t){if(Array.isArray(e))this.length=0,this.value=e.map((function(e){return a.isEncoderBuffer(e)||(e=new a(e,t)),this.length+=e.length,e}),this);else if(\"number\"==typeof e){if(!(0<=e&&e<=255))return t.error(\"non-byte EncoderBuffer value\");this.value=e,this.length=1}else if(\"string\"==typeof e)this.value=e,this.length=s.byteLength(e);else{if(!s.isBuffer(e))return t.error(\"Unsupported type: \"+typeof e);this.value=e,this.length=e.length}}n(o,i),r.DecoderBuffer=o,o.isDecoderBuffer=function(e){if(e instanceof o)return!0;return\"object\"==typeof e&&s.isBuffer(e.base)&&\"DecoderBuffer\"===e.constructor.name&&\"number\"==typeof e.offset&&\"number\"==typeof e.length&&\"function\"==typeof e.save&&\"function\"==typeof e.restore&&\"function\"==typeof e.isEmpty&&\"function\"==typeof e.readUInt8&&\"function\"==typeof e.skip&&\"function\"==typeof e.raw},o.prototype.save=function(){return{offset:this.offset,reporter:i.prototype.save.call(this)}},o.prototype.restore=function(e){const t=new o(this.base);return t.offset=e.offset,t.length=this.offset,this.offset=e.offset,i.prototype.restore.call(this,e.reporter),t},o.prototype.isEmpty=function(){return this.offset===this.length},o.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||\"DecoderBuffer overrun\")},o.prototype.skip=function(e,t){if(!(this.offset+e<=this.length))return this.error(t||\"DecoderBuffer overrun\");const r=new o(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+e,this.offset+=e,r},o.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)},r.EncoderBuffer=a,a.isEncoderBuffer=function(e){if(e instanceof a)return!0;return\"object\"==typeof e&&\"EncoderBuffer\"===e.constructor.name&&\"number\"==typeof e.length&&\"function\"==typeof e.join},a.prototype.join=function(e,t){return e||(e=s.alloc(this.length)),t||(t=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(r){r.join(e,t),t+=r.length})):(\"number\"==typeof this.value?e[t]=this.value:\"string\"==typeof this.value?e.write(this.value,t):s.isBuffer(this.value)&&this.value.copy(e,t),t+=this.length)),e}},{\"../base/reporter\":175,inherits:440,\"safer-buffer\":495}],173:[function(e,t,r){\"use strict\";const n=r;n.Reporter=e(\"./reporter\").Reporter,n.DecoderBuffer=e(\"./buffer\").DecoderBuffer,n.EncoderBuffer=e(\"./buffer\").EncoderBuffer,n.Node=e(\"./node\")},{\"./buffer\":172,\"./node\":174,\"./reporter\":175}],174:[function(e,t,r){\"use strict\";const n=e(\"../base/reporter\").Reporter,i=e(\"../base/buffer\").EncoderBuffer,s=e(\"../base/buffer\").DecoderBuffer,o=e(\"minimalistic-assert\"),a=[\"seq\",\"seqof\",\"set\",\"setof\",\"objid\",\"bool\",\"gentime\",\"utctime\",\"null_\",\"enum\",\"int\",\"objDesc\",\"bitstr\",\"bmpstr\",\"charstr\",\"genstr\",\"graphstr\",\"ia5str\",\"iso646str\",\"numstr\",\"octstr\",\"printstr\",\"t61str\",\"unistr\",\"utf8str\",\"videostr\"],l=[\"key\",\"obj\",\"use\",\"optional\",\"explicit\",\"implicit\",\"def\",\"choice\",\"any\",\"contains\"].concat(a);function c(e,t,r){const n={};this._baseState=n,n.name=r,n.enc=e,n.parent=t||null,n.children=null,n.tag=null,n.args=null,n.reverseArgs=null,n.choice=null,n.optional=!1,n.any=!1,n.obj=!1,n.use=null,n.useDecoder=null,n.key=null,n.default=null,n.explicit=null,n.implicit=null,n.contains=null,n.parent||(n.children=[],this._wrap())}t.exports=c;const u=[\"enc\",\"parent\",\"children\",\"tag\",\"args\",\"reverseArgs\",\"choice\",\"optional\",\"any\",\"obj\",\"use\",\"alteredUse\",\"key\",\"default\",\"explicit\",\"implicit\",\"contains\"];c.prototype.clone=function(){const e=this._baseState,t={};u.forEach((function(r){t[r]=e[r]}));const r=new this.constructor(t.parent);return r._baseState=t,r},c.prototype._wrap=function(){const e=this._baseState;l.forEach((function(t){this[t]=function(){const r=new this.constructor(this);return e.children.push(r),r[t].apply(r,arguments)}}),this)},c.prototype._init=function(e){const t=this._baseState;o(null===t.parent),e.call(this),t.children=t.children.filter((function(e){return e._baseState.parent===this}),this),o.equal(t.children.length,1,\"Root node can have only one child\")},c.prototype._useArgs=function(e){const t=this._baseState,r=e.filter((function(e){return e instanceof this.constructor}),this);e=e.filter((function(e){return!(e instanceof this.constructor)}),this),0!==r.length&&(o(null===t.children),t.children=r,r.forEach((function(e){e._baseState.parent=this}),this)),0!==e.length&&(o(null===t.args),t.args=e,t.reverseArgs=e.map((function(e){if(\"object\"!=typeof e||e.constructor!==Object)return e;const t={};return Object.keys(e).forEach((function(r){r==(0|r)&&(r|=0);const n=e[r];t[n]=r})),t})))},[\"_peekTag\",\"_decodeTag\",\"_use\",\"_decodeStr\",\"_decodeObjid\",\"_decodeTime\",\"_decodeNull\",\"_decodeInt\",\"_decodeBool\",\"_decodeList\",\"_encodeComposite\",\"_encodeStr\",\"_encodeObjid\",\"_encodeTime\",\"_encodeNull\",\"_encodeInt\",\"_encodeBool\"].forEach((function(e){c.prototype[e]=function(){const t=this._baseState;throw new Error(e+\" not implemented for encoding: \"+t.enc)}})),a.forEach((function(e){c.prototype[e]=function(){const t=this._baseState,r=Array.prototype.slice.call(arguments);return o(null===t.tag),t.tag=e,this._useArgs(r),this}})),c.prototype.use=function(e){o(e);const t=this._baseState;return o(null===t.use),t.use=e,this},c.prototype.optional=function(){return this._baseState.optional=!0,this},c.prototype.def=function(e){const t=this._baseState;return o(null===t.default),t.default=e,t.optional=!0,this},c.prototype.explicit=function(e){const t=this._baseState;return o(null===t.explicit&&null===t.implicit),t.explicit=e,this},c.prototype.implicit=function(e){const t=this._baseState;return o(null===t.explicit&&null===t.implicit),t.implicit=e,this},c.prototype.obj=function(){const e=this._baseState,t=Array.prototype.slice.call(arguments);return e.obj=!0,0!==t.length&&this._useArgs(t),this},c.prototype.key=function(e){const t=this._baseState;return o(null===t.key),t.key=e,this},c.prototype.any=function(){return this._baseState.any=!0,this},c.prototype.choice=function(e){const t=this._baseState;return o(null===t.choice),t.choice=e,this._useArgs(Object.keys(e).map((function(t){return e[t]}))),this},c.prototype.contains=function(e){const t=this._baseState;return o(null===t.use),t.contains=e,this},c.prototype._decode=function(e,t){const r=this._baseState;if(null===r.parent)return e.wrapResult(r.children[0]._decode(e,t));let n,i=r.default,o=!0,a=null;if(null!==r.key&&(a=e.enterKey(r.key)),r.optional){let n=null;if(null!==r.explicit?n=r.explicit:null!==r.implicit?n=r.implicit:null!==r.tag&&(n=r.tag),null!==n||r.any){if(o=this._peekTag(e,n,r.any),e.isError(o))return o}else{const n=e.save();try{null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t),o=!0}catch(e){o=!1}e.restore(n)}}if(r.obj&&o&&(n=e.enterObject()),o){if(null!==r.explicit){const t=this._decodeTag(e,r.explicit);if(e.isError(t))return t;e=t}const n=e.offset;if(null===r.use&&null===r.choice){let t;r.any&&(t=e.save());const n=this._decodeTag(e,null!==r.implicit?r.implicit:r.tag,r.any);if(e.isError(n))return n;r.any?i=e.raw(t):e=n}if(t&&t.track&&null!==r.tag&&t.track(e.path(),n,e.length,\"tagged\"),t&&t.track&&null!==r.tag&&t.track(e.path(),e.offset,e.length,\"content\"),r.any||(i=null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t)),e.isError(i))return i;if(r.any||null!==r.choice||null===r.children||r.children.forEach((function(r){r._decode(e,t)})),r.contains&&(\"octstr\"===r.tag||\"bitstr\"===r.tag)){const n=new s(i);i=this._getUse(r.contains,e._reporterState.obj)._decode(n,t)}}return r.obj&&o&&(i=e.leaveObject(n)),null===r.key||null===i&&!0!==o?null!==a&&e.exitKey(a):e.leaveKey(a,r.key,i),i},c.prototype._decodeGeneric=function(e,t,r){const n=this._baseState;return\"seq\"===e||\"set\"===e?null:\"seqof\"===e||\"setof\"===e?this._decodeList(t,e,n.args[0],r):/str$/.test(e)?this._decodeStr(t,e,r):\"objid\"===e&&n.args?this._decodeObjid(t,n.args[0],n.args[1],r):\"objid\"===e?this._decodeObjid(t,null,null,r):\"gentime\"===e||\"utctime\"===e?this._decodeTime(t,e,r):\"null_\"===e?this._decodeNull(t,r):\"bool\"===e?this._decodeBool(t,r):\"objDesc\"===e?this._decodeStr(t,e,r):\"int\"===e||\"enum\"===e?this._decodeInt(t,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,t._reporterState.obj)._decode(t,r):t.error(\"unknown tag: \"+e)},c.prototype._getUse=function(e,t){const r=this._baseState;return r.useDecoder=this._use(e,t),o(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},c.prototype._decodeChoice=function(e,t){const r=this._baseState;let n=null,i=!1;return Object.keys(r.choice).some((function(s){const o=e.save(),a=r.choice[s];try{const r=a._decode(e,t);if(e.isError(r))return!1;n={type:s,value:r},i=!0}catch(t){return e.restore(o),!1}return!0}),this),i?n:e.error(\"Choice not matched\")},c.prototype._createEncoderBuffer=function(e){return new i(e,this.reporter)},c.prototype._encode=function(e,t,r){const n=this._baseState;if(null!==n.default&&n.default===e)return;const i=this._encodeValue(e,t,r);return void 0===i||this._skipDefault(i,t,r)?void 0:i},c.prototype._encodeValue=function(e,t,r){const i=this._baseState;if(null===i.parent)return i.children[0]._encode(e,t||new n);let s=null;if(this.reporter=t,i.optional&&void 0===e){if(null===i.default)return;e=i.default}let o=null,a=!1;if(i.any)s=this._createEncoderBuffer(e);else if(i.choice)s=this._encodeChoice(e,t);else if(i.contains)o=this._getUse(i.contains,r)._encode(e,t),a=!0;else if(i.children)o=i.children.map((function(r){if(\"null_\"===r._baseState.tag)return r._encode(null,t,e);if(null===r._baseState.key)return t.error(\"Child should have a key\");const n=t.enterKey(r._baseState.key);if(\"object\"!=typeof e)return t.error(\"Child expected, but input is not object\");const i=r._encode(e[r._baseState.key],t,e);return t.leaveKey(n),i}),this).filter((function(e){return e})),o=this._createEncoderBuffer(o);else if(\"seqof\"===i.tag||\"setof\"===i.tag){if(!i.args||1!==i.args.length)return t.error(\"Too many args for : \"+i.tag);if(!Array.isArray(e))return t.error(\"seqof/setof, but data is not Array\");const r=this.clone();r._baseState.implicit=null,o=this._createEncoderBuffer(e.map((function(r){const n=this._baseState;return this._getUse(n.args[0],e)._encode(r,t)}),r))}else null!==i.use?s=this._getUse(i.use,r)._encode(e,t):(o=this._encodePrimitive(i.tag,e),a=!0);if(!i.any&&null===i.choice){const e=null!==i.implicit?i.implicit:i.tag,r=null===i.implicit?\"universal\":\"context\";null===e?null===i.use&&t.error(\"Tag could be omitted only for .use()\"):null===i.use&&(s=this._encodeComposite(e,a,r,o))}return null!==i.explicit&&(s=this._encodeComposite(i.explicit,!1,\"context\",s)),s},c.prototype._encodeChoice=function(e,t){const r=this._baseState,n=r.choice[e.type];return n||o(!1,e.type+\" not found in \"+JSON.stringify(Object.keys(r.choice))),n._encode(e.value,t)},c.prototype._encodePrimitive=function(e,t){const r=this._baseState;if(/str$/.test(e))return this._encodeStr(t,e);if(\"objid\"===e&&r.args)return this._encodeObjid(t,r.reverseArgs[0],r.args[1]);if(\"objid\"===e)return this._encodeObjid(t,null,null);if(\"gentime\"===e||\"utctime\"===e)return this._encodeTime(t,e);if(\"null_\"===e)return this._encodeNull();if(\"int\"===e||\"enum\"===e)return this._encodeInt(t,r.args&&r.reverseArgs[0]);if(\"bool\"===e)return this._encodeBool(t);if(\"objDesc\"===e)return this._encodeStr(t,e);throw new Error(\"Unsupported tag: \"+e)},c.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)},c.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(e)}},{\"../base/buffer\":172,\"../base/reporter\":175,\"minimalistic-assert\":453}],175:[function(e,t,r){\"use strict\";const n=e(\"inherits\");function i(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}function s(e,t){this.path=e,this.rethrow(t)}r.Reporter=i,i.prototype.isError=function(e){return e instanceof s},i.prototype.save=function(){const e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}},i.prototype.restore=function(e){const t=this._reporterState;t.obj=e.obj,t.path=t.path.slice(0,e.pathLen)},i.prototype.enterKey=function(e){return this._reporterState.path.push(e)},i.prototype.exitKey=function(e){const t=this._reporterState;t.path=t.path.slice(0,e-1)},i.prototype.leaveKey=function(e,t,r){const n=this._reporterState;this.exitKey(e),null!==n.obj&&(n.obj[t]=r)},i.prototype.path=function(){return this._reporterState.path.join(\"/\")},i.prototype.enterObject=function(){const e=this._reporterState,t=e.obj;return e.obj={},t},i.prototype.leaveObject=function(e){const t=this._reporterState,r=t.obj;return t.obj=e,r},i.prototype.error=function(e){let t;const r=this._reporterState,n=e instanceof s;if(t=n?e:new s(r.path.map((function(e){return\"[\"+JSON.stringify(e)+\"]\"})).join(\"\"),e.message||e,e.stack),!r.options.partial)throw t;return n||r.errors.push(t),t},i.prototype.wrapResult=function(e){const t=this._reporterState;return t.options.partial?{result:this.isError(e)?null:e,errors:t.errors}:e},n(s,Error),s.prototype.rethrow=function(e){if(this.message=e+\" at: \"+(this.path||\"(shallow)\"),Error.captureStackTrace&&Error.captureStackTrace(this,s),!this.stack)try{throw new Error(this.message)}catch(e){this.stack=e.stack}return this}},{inherits:440}],176:[function(e,t,r){\"use strict\";function n(e){const t={};return Object.keys(e).forEach((function(r){(0|r)==r&&(r|=0);const n=e[r];t[n]=r})),t}r.tagClass={0:\"universal\",1:\"application\",2:\"context\",3:\"private\"},r.tagClassByName=n(r.tagClass),r.tag={0:\"end\",1:\"bool\",2:\"int\",3:\"bitstr\",4:\"octstr\",5:\"null_\",6:\"objid\",7:\"objDesc\",8:\"external\",9:\"real\",10:\"enum\",11:\"embed\",12:\"utf8str\",13:\"relativeOid\",16:\"seq\",17:\"set\",18:\"numstr\",19:\"printstr\",20:\"t61str\",21:\"videostr\",22:\"ia5str\",23:\"utctime\",24:\"gentime\",25:\"graphstr\",26:\"iso646str\",27:\"genstr\",28:\"unistr\",29:\"charstr\",30:\"bmpstr\"},r.tagByName=n(r.tag)},{}],177:[function(e,t,r){\"use strict\";const n=r;n._reverse=function(e){const t={};return Object.keys(e).forEach((function(r){(0|r)==r&&(r|=0);const n=e[r];t[n]=r})),t},n.der=e(\"./der\")},{\"./der\":176}],178:[function(e,t,r){\"use strict\";const n=e(\"inherits\"),i=e(\"bn.js\"),s=e(\"../base/buffer\").DecoderBuffer,o=e(\"../base/node\"),a=e(\"../constants/der\");function l(e){this.enc=\"der\",this.name=e.name,this.entity=e,this.tree=new c,this.tree._init(e.body)}function c(e){o.call(this,\"der\",e)}function u(e,t){let r=e.readUInt8(t);if(e.isError(r))return r;const n=a.tagClass[r>>6],i=0==(32&r);if(31==(31&r)){let n=r;for(r=0;128==(128&n);){if(n=e.readUInt8(t),e.isError(n))return n;r<<=7,r|=127&n}}else r&=31;return{cls:n,primitive:i,tag:r,tagStr:a.tag[r]}}function h(e,t,r){let n=e.readUInt8(r);if(e.isError(n))return n;if(!t&&128===n)return null;if(0==(128&n))return n;const i=127&n;if(i>4)return e.error(\"length octect is too long\");n=0;for(let t=0;t<i;t++){n<<=8;const t=e.readUInt8(r);if(e.isError(t))return t;n|=t}return n}t.exports=l,l.prototype.decode=function(e,t){return s.isDecoderBuffer(e)||(e=new s(e,t)),this.tree._decode(e,t)},n(c,o),c.prototype._peekTag=function(e,t,r){if(e.isEmpty())return!1;const n=e.save(),i=u(e,'Failed to peek tag: \"'+t+'\"');return e.isError(i)?i:(e.restore(n),i.tag===t||i.tagStr===t||i.tagStr+\"of\"===t||r)},c.prototype._decodeTag=function(e,t,r){const n=u(e,'Failed to decode tag of \"'+t+'\"');if(e.isError(n))return n;let i=h(e,n.primitive,'Failed to get length of \"'+t+'\"');if(e.isError(i))return i;if(!r&&n.tag!==t&&n.tagStr!==t&&n.tagStr+\"of\"!==t)return e.error('Failed to match tag: \"'+t+'\"');if(n.primitive||null!==i)return e.skip(i,'Failed to match body of: \"'+t+'\"');const s=e.save(),o=this._skipUntilEnd(e,'Failed to skip indefinite length body: \"'+this.tag+'\"');return e.isError(o)?o:(i=e.offset-s.offset,e.restore(s),e.skip(i,'Failed to match body of: \"'+t+'\"'))},c.prototype._skipUntilEnd=function(e,t){for(;;){const r=u(e,t);if(e.isError(r))return r;const n=h(e,r.primitive,t);if(e.isError(n))return n;let i;if(i=r.primitive||null!==n?e.skip(n):this._skipUntilEnd(e,t),e.isError(i))return i;if(\"end\"===r.tagStr)break}},c.prototype._decodeList=function(e,t,r,n){const i=[];for(;!e.isEmpty();){const t=this._peekTag(e,\"end\");if(e.isError(t))return t;const s=r.decode(e,\"der\",n);if(e.isError(s)&&t)break;i.push(s)}return i},c.prototype._decodeStr=function(e,t){if(\"bitstr\"===t){const t=e.readUInt8();return e.isError(t)?t:{unused:t,data:e.raw()}}if(\"bmpstr\"===t){const t=e.raw();if(t.length%2==1)return e.error(\"Decoding of string type: bmpstr length mismatch\");let r=\"\";for(let e=0;e<t.length/2;e++)r+=String.fromCharCode(t.readUInt16BE(2*e));return r}if(\"numstr\"===t){const t=e.raw().toString(\"ascii\");return this._isNumstr(t)?t:e.error(\"Decoding of string type: numstr unsupported characters\")}if(\"octstr\"===t)return e.raw();if(\"objDesc\"===t)return e.raw();if(\"printstr\"===t){const t=e.raw().toString(\"ascii\");return this._isPrintstr(t)?t:e.error(\"Decoding of string type: printstr unsupported characters\")}return/str$/.test(t)?e.raw().toString():e.error(\"Decoding of string type: \"+t+\" unsupported\")},c.prototype._decodeObjid=function(e,t,r){let n;const i=[];let s=0,o=0;for(;!e.isEmpty();)o=e.readUInt8(),s<<=7,s|=127&o,0==(128&o)&&(i.push(s),s=0);128&o&&i.push(s);const a=i[0]/40|0,l=i[0]%40;if(n=r?i:[a,l].concat(i.slice(1)),t){let e=t[n.join(\" \")];void 0===e&&(e=t[n.join(\".\")]),void 0!==e&&(n=e)}return n},c.prototype._decodeTime=function(e,t){const r=e.raw().toString();let n,i,s,o,a,l;if(\"gentime\"===t)n=0|r.slice(0,4),i=0|r.slice(4,6),s=0|r.slice(6,8),o=0|r.slice(8,10),a=0|r.slice(10,12),l=0|r.slice(12,14);else{if(\"utctime\"!==t)return e.error(\"Decoding \"+t+\" time is not supported yet\");n=0|r.slice(0,2),i=0|r.slice(2,4),s=0|r.slice(4,6),o=0|r.slice(6,8),a=0|r.slice(8,10),l=0|r.slice(10,12),n=n<70?2e3+n:1900+n}return Date.UTC(n,i-1,s,o,a,l,0)},c.prototype._decodeNull=function(){return null},c.prototype._decodeBool=function(e){const t=e.readUInt8();return e.isError(t)?t:0!==t},c.prototype._decodeInt=function(e,t){const r=e.raw();let n=new i(r);return t&&(n=t[n.toString(10)]||n),n},c.prototype._use=function(e,t){return\"function\"==typeof e&&(e=e(t)),e._getDecoder(\"der\").tree}},{\"../base/buffer\":172,\"../base/node\":174,\"../constants/der\":176,\"bn.js\":184,inherits:440}],179:[function(e,t,r){\"use strict\";const n=r;n.der=e(\"./der\"),n.pem=e(\"./pem\")},{\"./der\":178,\"./pem\":180}],180:[function(e,t,r){\"use strict\";const n=e(\"inherits\"),i=e(\"safer-buffer\").Buffer,s=e(\"./der\");function o(e){s.call(this,e),this.enc=\"pem\"}n(o,s),t.exports=o,o.prototype.decode=function(e,t){const r=e.toString().split(/[\\r\\n]+/g),n=t.label.toUpperCase(),o=/^-----(BEGIN|END) ([^-]+)-----$/;let a=-1,l=-1;for(let e=0;e<r.length;e++){const t=r[e].match(o);if(null!==t&&t[2]===n){if(-1!==a){if(\"END\"!==t[1])break;l=e;break}if(\"BEGIN\"!==t[1])break;a=e}}if(-1===a||-1===l)throw new Error(\"PEM section not found for: \"+n);const c=r.slice(a+1,l).join(\"\");c.replace(/[^a-z0-9+/=]+/gi,\"\");const u=i.from(c,\"base64\");return s.prototype.decode.call(this,u,t)}},{\"./der\":178,inherits:440,\"safer-buffer\":495}],181:[function(e,t,r){\"use strict\";const n=e(\"inherits\"),i=e(\"safer-buffer\").Buffer,s=e(\"../base/node\"),o=e(\"../constants/der\");function a(e){this.enc=\"der\",this.name=e.name,this.entity=e,this.tree=new l,this.tree._init(e.body)}function l(e){s.call(this,\"der\",e)}function c(e){return e<10?\"0\"+e:e}t.exports=a,a.prototype.encode=function(e,t){return this.tree._encode(e,t).join()},n(l,s),l.prototype._encodeComposite=function(e,t,r,n){const s=function(e,t,r,n){let i;\"seqof\"===e?e=\"seq\":\"setof\"===e&&(e=\"set\");if(o.tagByName.hasOwnProperty(e))i=o.tagByName[e];else{if(\"number\"!=typeof e||(0|e)!==e)return n.error(\"Unknown tag: \"+e);i=e}if(i>=31)return n.error(\"Multi-octet tag encoding unsupported\");t||(i|=32);return i|=o.tagClassByName[r||\"universal\"]<<6,i}(e,t,r,this.reporter);if(n.length<128){const e=i.alloc(2);return e[0]=s,e[1]=n.length,this._createEncoderBuffer([e,n])}let a=1;for(let e=n.length;e>=256;e>>=8)a++;const l=i.alloc(2+a);l[0]=s,l[1]=128|a;for(let e=1+a,t=n.length;t>0;e--,t>>=8)l[e]=255&t;return this._createEncoderBuffer([l,n])},l.prototype._encodeStr=function(e,t){if(\"bitstr\"===t)return this._createEncoderBuffer([0|e.unused,e.data]);if(\"bmpstr\"===t){const t=i.alloc(2*e.length);for(let r=0;r<e.length;r++)t.writeUInt16BE(e.charCodeAt(r),2*r);return this._createEncoderBuffer(t)}return\"numstr\"===t?this._isNumstr(e)?this._createEncoderBuffer(e):this.reporter.error(\"Encoding of string type: numstr supports only digits and space\"):\"printstr\"===t?this._isPrintstr(e)?this._createEncoderBuffer(e):this.reporter.error(\"Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark\"):/str$/.test(t)||\"objDesc\"===t?this._createEncoderBuffer(e):this.reporter.error(\"Encoding of string type: \"+t+\" unsupported\")},l.prototype._encodeObjid=function(e,t,r){if(\"string\"==typeof e){if(!t)return this.reporter.error(\"string objid given, but no values map found\");if(!t.hasOwnProperty(e))return this.reporter.error(\"objid not found in values map\");e=t[e].split(/[\\s.]+/g);for(let t=0;t<e.length;t++)e[t]|=0}else if(Array.isArray(e)){e=e.slice();for(let t=0;t<e.length;t++)e[t]|=0}if(!Array.isArray(e))return this.reporter.error(\"objid() should be either array or string, got: \"+JSON.stringify(e));if(!r){if(e[1]>=40)return this.reporter.error(\"Second objid identifier OOB\");e.splice(0,2,40*e[0]+e[1])}let n=0;for(let t=0;t<e.length;t++){let r=e[t];for(n++;r>=128;r>>=7)n++}const s=i.alloc(n);let o=s.length-1;for(let t=e.length-1;t>=0;t--){let r=e[t];for(s[o--]=127&r;(r>>=7)>0;)s[o--]=128|127&r}return this._createEncoderBuffer(s)},l.prototype._encodeTime=function(e,t){let r;const n=new Date(e);return\"gentime\"===t?r=[c(n.getUTCFullYear()),c(n.getUTCMonth()+1),c(n.getUTCDate()),c(n.getUTCHours()),c(n.getUTCMinutes()),c(n.getUTCSeconds()),\"Z\"].join(\"\"):\"utctime\"===t?r=[c(n.getUTCFullYear()%100),c(n.getUTCMonth()+1),c(n.getUTCDate()),c(n.getUTCHours()),c(n.getUTCMinutes()),c(n.getUTCSeconds()),\"Z\"].join(\"\"):this.reporter.error(\"Encoding \"+t+\" time is not supported yet\"),this._encodeStr(r,\"octstr\")},l.prototype._encodeNull=function(){return this._createEncoderBuffer(\"\")},l.prototype._encodeInt=function(e,t){if(\"string\"==typeof e){if(!t)return this.reporter.error(\"String int or enum given, but no values map\");if(!t.hasOwnProperty(e))return this.reporter.error(\"Values map doesn't contain: \"+JSON.stringify(e));e=t[e]}if(\"number\"!=typeof e&&!i.isBuffer(e)){const t=e.toArray();!e.sign&&128&t[0]&&t.unshift(0),e=i.from(t)}if(i.isBuffer(e)){let t=e.length;0===e.length&&t++;const r=i.alloc(t);return e.copy(r),0===e.length&&(r[0]=0),this._createEncoderBuffer(r)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);let r=1;for(let t=e;t>=256;t>>=8)r++;const n=new Array(r);for(let t=n.length-1;t>=0;t--)n[t]=255&e,e>>=8;return 128&n[0]&&n.unshift(0),this._createEncoderBuffer(i.from(n))},l.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},l.prototype._use=function(e,t){return\"function\"==typeof e&&(e=e(t)),e._getEncoder(\"der\").tree},l.prototype._skipDefault=function(e,t,r){const n=this._baseState;let i;if(null===n.default)return!1;const s=e.join();if(void 0===n.defaultBuffer&&(n.defaultBuffer=this._encodeValue(n.default,t,r).join()),s.length!==n.defaultBuffer.length)return!1;for(i=0;i<s.length;i++)if(s[i]!==n.defaultBuffer[i])return!1;return!0}},{\"../base/node\":174,\"../constants/der\":176,inherits:440,\"safer-buffer\":495}],182:[function(e,t,r){\"use strict\";const n=r;n.der=e(\"./der\"),n.pem=e(\"./pem\")},{\"./der\":181,\"./pem\":183}],183:[function(e,t,r){\"use strict\";const n=e(\"inherits\"),i=e(\"./der\");function s(e){i.call(this,e),this.enc=\"pem\"}n(s,i),t.exports=s,s.prototype.encode=function(e,t){const r=i.prototype.encode.call(this,e).toString(\"base64\"),n=[\"-----BEGIN \"+t.label+\"-----\"];for(let e=0;e<r.length;e+=64)n.push(r.slice(e,e+64));return n.push(\"-----END \"+t.label+\"-----\"),n.join(\"\\n\")}},{\"./der\":181,inherits:440}],184:[function(e,t,r){\"use strict\";!function(t,r){function n(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function i(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function s(e,t,r){if(s.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&(\"le\"!==t&&\"be\"!==t||(r=t,t=10),this._init(e||0,t||10,r||\"be\"))}var o;\"object\"==typeof t?t.exports=s:(void 0).BN=s,s.BN=s,s.wordSize=26;try{o=\"undefined\"!=typeof window&&void 0!==window.Buffer?window.Buffer:e(\"buffer\").Buffer}catch(e){}function a(e,t){var r=e.charCodeAt(t);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function l(e,t,r){var n=a(e,r);return r-1>=t&&(n|=a(e,r-1)<<4),n}function c(e,t,r,n){for(var i=0,s=Math.min(e.length,r),o=t;o<s;o++){var a=e.charCodeAt(o)-48;i*=n,i+=a>=49?a-49+10:a>=17?a-17+10:a}return i}s.isBN=function(e){return e instanceof s||null!==e&&\"object\"==typeof e&&e.constructor.wordSize===s.wordSize&&Array.isArray(e.words)},s.max=function(e,t){return e.cmp(t)>0?e:t},s.min=function(e,t){return e.cmp(t)<0?e:t},s.prototype._init=function(e,t,r){if(\"number\"==typeof e)return this._initNumber(e,t,r);if(\"object\"==typeof e)return this._initArray(e,t,r);\"hex\"===t&&(t=16),n(t===(0|t)&&t>=2&&t<=36);var i=0;\"-\"===(e=e.toString().replace(/\\s+/g,\"\"))[0]&&(i++,this.negative=1),i<e.length&&(16===t?this._parseHex(e,i,r):(this._parseBase(e,t,i),\"le\"===r&&this._initArray(this.toArray(),t,r)))},s.prototype._initNumber=function(e,t,r){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(n(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),t,r)},s.prototype._initArray=function(e,t,r){if(n(\"number\"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var s,o,a=0;if(\"be\"===r)for(i=e.length-1,s=0;i>=0;i-=3)o=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[s]|=o<<a&67108863,this.words[s+1]=o>>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);else if(\"le\"===r)for(i=0,s=0;i<e.length;i+=3)o=e[i]|e[i+1]<<8|e[i+2]<<16,this.words[s]|=o<<a&67108863,this.words[s+1]=o>>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);return this.strip()},s.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var i,s=0,o=0;if(\"be\"===r)for(n=e.length-1;n>=t;n-=2)i=l(e,t,n)<<s,this.words[o]|=67108863&i,s>=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;else for(n=(e.length-t)%2==0?t+1:t;n<e.length;n+=2)i=l(e,t,n)<<s,this.words[o]|=67108863&i,s>=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;this.strip()},s.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=t)n++;n--,i=i/t|0;for(var s=e.length-r,o=s%n,a=Math.min(s,s-o)+r,l=0,u=r;u<a;u+=n)l=c(e,u,u+n,t),this.imuln(i),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l);if(0!==o){var h=1;for(l=c(e,u,e.length,t),u=0;u<o;u++)h*=t;this.imuln(h),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l)}this.strip()},s.prototype.copy=function(e){e.words=new Array(this.length);for(var t=0;t<this.length;t++)e.words[t]=this.words[t];e.length=this.length,e.negative=this.negative,e.red=this.red},s.prototype.clone=function(){var e=new s(null);return this.copy(e),e},s.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},s.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},s.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},s.prototype.inspect=function(){return(this.red?\"<BN-R: \":\"<BN: \")+this.toString(16)+\">\"};var u=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var n=e.length+t.length|0;r.length=n,n=n-1|0;var i=0|e.words[0],s=0|t.words[0],o=i*s,a=67108863&o,l=o/67108864|0;r.words[0]=a;for(var c=1;c<n;c++){for(var u=l>>>26,h=67108863&l,f=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=f;d++){var p=c-d|0;u+=(o=(i=0|e.words[p])*(s=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,l=0|u}return 0!==l?r.words[c]=0|l:r.length--,r.strip()}s.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||\"hex\"===e){r=\"\";for(var i=0,s=0,o=0;o<this.length;o++){var a=this.words[o],l=(16777215&(a<<i|s)).toString(16);r=0!==(s=a>>>24-i&16777215)||o!==this.length-1?u[6-l.length]+l+r:l+r,(i+=2)>=26&&(i-=26,o--)}for(0!==s&&(r=s.toString(16)+r);r.length%t!=0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=f[e];r=\"\";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(d).toString(e);r=(p=p.idivn(d)).isZero()?m+r:u[c-m.length]+m+r}for(this.isZero()&&(r=\"0\"+r);r.length%t!=0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},s.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-e:e},s.prototype.toJSON=function(){return this.toString(16)},s.prototype.toBuffer=function(e,t){return n(void 0!==o),this.toArrayLike(o,e,t)},s.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},s.prototype.toArrayLike=function(e,t,r){var i=this.byteLength(),s=r||Math.max(1,i);n(i<=s,\"byte array longer than desired length\"),n(s>0,\"Requested array length <= 0\"),this.strip();var o,a,l=\"le\"===t,c=new e(s),u=this.clone();if(l){for(a=0;!u.isZero();a++)o=u.andln(255),u.iushrn(8),c[a]=o;for(;a<s;a++)c[a]=0}else{for(a=0;a<s-i;a++)c[a]=0;for(a=0;!u.isZero();a++)o=u.andln(255),u.iushrn(8),c[s-a-1]=o}return c},Math.clz32?s.prototype._countBits=function(e){return 32-Math.clz32(e)}:s.prototype._countBits=function(e){var t=e,r=0;return t>=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},s.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},s.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;t<this.length;t++){var r=this._zeroBits(this.words[t]);if(e+=r,26!==r)break}return e},s.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},s.prototype.toTwos=function(e){return 0!==this.negative?this.abs().inotn(e).iaddn(1):this.clone()},s.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},s.prototype.isNeg=function(){return 0!==this.negative},s.prototype.neg=function(){return this.clone().ineg()},s.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},s.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var t=0;t<e.length;t++)this.words[t]=this.words[t]|e.words[t];return this.strip()},s.prototype.ior=function(e){return n(0==(this.negative|e.negative)),this.iuor(e)},s.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},s.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},s.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;r<t.length;r++)this.words[r]=this.words[r]&e.words[r];return this.length=t.length,this.strip()},s.prototype.iand=function(e){return n(0==(this.negative|e.negative)),this.iuand(e)},s.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},s.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},s.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var n=0;n<r.length;n++)this.words[n]=t.words[n]^r.words[n];if(this!==t)for(;n<t.length;n++)this.words[n]=t.words[n];return this.length=t.length,this.strip()},s.prototype.ixor=function(e){return n(0==(this.negative|e.negative)),this.iuxor(e)},s.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},s.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},s.prototype.inotn=function(e){n(\"number\"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var i=0;i<t;i++)this.words[i]=67108863&~this.words[i];return r>0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},s.prototype.notn=function(e){return this.clone().inotn(e)},s.prototype.setn=function(e,t){n(\"number\"==typeof e&&e>=0);var r=e/26|0,i=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<<i:this.words[r]&~(1<<i),this.strip()},s.prototype.iadd=function(e){var t,r,n;if(0!==this.negative&&0===e.negative)return this.negative=0,t=this.isub(e),this.negative^=1,this._normSign();if(0===this.negative&&0!==e.negative)return e.negative=0,t=this.isub(e),e.negative=1,t._normSign();this.length>e.length?(r=this,n=e):(r=e,n=this);for(var i=0,s=0;s<n.length;s++)t=(0|r.words[s])+(0|n.words[s])+i,this.words[s]=67108863&t,i=t>>>26;for(;0!==i&&s<r.length;s++)t=(0|r.words[s])+i,this.words[s]=67108863&t,i=t>>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;s<r.length;s++)this.words[s]=r.words[s];return this},s.prototype.add=function(e){var t;return 0!==e.negative&&0===this.negative?(e.negative=0,t=this.sub(e),e.negative^=1,t):0===e.negative&&0!==this.negative?(this.negative=0,t=e.sub(this),this.negative=1,t):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},s.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,n,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=e):(r=e,n=this);for(var s=0,o=0;o<n.length;o++)s=(t=(0|r.words[o])-(0|n.words[o])+s)>>26,this.words[o]=67108863&t;for(;0!==s&&o<r.length;o++)s=(t=(0|r.words[o])+s)>>26,this.words[o]=67108863&t;if(0===s&&o<r.length&&r!==this)for(;o<r.length;o++)this.words[o]=r.words[o];return this.length=Math.max(this.length,o),r!==this&&(this.negative=1),this.strip()},s.prototype.sub=function(e){return this.clone().isub(e)};var p=function(e,t,r){var n,i,s,o=e.words,a=t.words,l=r.words,c=0,u=0|o[0],h=8191&u,f=u>>>13,d=0|o[1],p=8191&d,m=d>>>13,b=0|o[2],g=8191&b,y=b>>>13,v=0|o[3],w=8191&v,_=v>>>13,x=0|o[4],k=8191&x,S=x>>>13,M=0|o[5],C=8191&M,T=M>>>13,E=0|o[6],A=8191&E,R=E>>>13,O=0|o[7],j=8191&O,I=O>>>13,N=0|o[8],P=8191&N,B=N>>>13,D=0|o[9],F=8191&D,L=D>>>13,z=0|a[0],U=8191&z,$=z>>>13,H=0|a[1],V=8191&H,q=H>>>13,W=0|a[2],X=8191&W,K=W>>>13,Y=0|a[3],Z=8191&Y,G=Y>>>13,J=0|a[4],Q=8191&J,ee=J>>>13,te=0|a[5],re=8191&te,ne=te>>>13,ie=0|a[6],se=8191&ie,oe=ie>>>13,ae=0|a[7],le=8191&ae,ce=ae>>>13,ue=0|a[8],he=8191&ue,fe=ue>>>13,de=0|a[9],pe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var be=(c+(n=Math.imul(h,U))|0)+((8191&(i=(i=Math.imul(h,$))+Math.imul(f,U)|0))<<13)|0;c=((s=Math.imul(f,$))+(i>>>13)|0)+(be>>>26)|0,be&=67108863,n=Math.imul(p,U),i=(i=Math.imul(p,$))+Math.imul(m,U)|0,s=Math.imul(m,$);var ge=(c+(n=n+Math.imul(h,V)|0)|0)+((8191&(i=(i=i+Math.imul(h,q)|0)+Math.imul(f,V)|0))<<13)|0;c=((s=s+Math.imul(f,q)|0)+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,n=Math.imul(g,U),i=(i=Math.imul(g,$))+Math.imul(y,U)|0,s=Math.imul(y,$),n=n+Math.imul(p,V)|0,i=(i=i+Math.imul(p,q)|0)+Math.imul(m,V)|0,s=s+Math.imul(m,q)|0;var ye=(c+(n=n+Math.imul(h,X)|0)|0)+((8191&(i=(i=i+Math.imul(h,K)|0)+Math.imul(f,X)|0))<<13)|0;c=((s=s+Math.imul(f,K)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,n=Math.imul(w,U),i=(i=Math.imul(w,$))+Math.imul(_,U)|0,s=Math.imul(_,$),n=n+Math.imul(g,V)|0,i=(i=i+Math.imul(g,q)|0)+Math.imul(y,V)|0,s=s+Math.imul(y,q)|0,n=n+Math.imul(p,X)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,X)|0,s=s+Math.imul(m,K)|0;var ve=(c+(n=n+Math.imul(h,Z)|0)|0)+((8191&(i=(i=i+Math.imul(h,G)|0)+Math.imul(f,Z)|0))<<13)|0;c=((s=s+Math.imul(f,G)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,n=Math.imul(k,U),i=(i=Math.imul(k,$))+Math.imul(S,U)|0,s=Math.imul(S,$),n=n+Math.imul(w,V)|0,i=(i=i+Math.imul(w,q)|0)+Math.imul(_,V)|0,s=s+Math.imul(_,q)|0,n=n+Math.imul(g,X)|0,i=(i=i+Math.imul(g,K)|0)+Math.imul(y,X)|0,s=s+Math.imul(y,K)|0,n=n+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,G)|0)+Math.imul(m,Z)|0,s=s+Math.imul(m,G)|0;var we=(c+(n=n+Math.imul(h,Q)|0)|0)+((8191&(i=(i=i+Math.imul(h,ee)|0)+Math.imul(f,Q)|0))<<13)|0;c=((s=s+Math.imul(f,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,n=Math.imul(C,U),i=(i=Math.imul(C,$))+Math.imul(T,U)|0,s=Math.imul(T,$),n=n+Math.imul(k,V)|0,i=(i=i+Math.imul(k,q)|0)+Math.imul(S,V)|0,s=s+Math.imul(S,q)|0,n=n+Math.imul(w,X)|0,i=(i=i+Math.imul(w,K)|0)+Math.imul(_,X)|0,s=s+Math.imul(_,K)|0,n=n+Math.imul(g,Z)|0,i=(i=i+Math.imul(g,G)|0)+Math.imul(y,Z)|0,s=s+Math.imul(y,G)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Q)|0,s=s+Math.imul(m,ee)|0;var _e=(c+(n=n+Math.imul(h,re)|0)|0)+((8191&(i=(i=i+Math.imul(h,ne)|0)+Math.imul(f,re)|0))<<13)|0;c=((s=s+Math.imul(f,ne)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,n=Math.imul(A,U),i=(i=Math.imul(A,$))+Math.imul(R,U)|0,s=Math.imul(R,$),n=n+Math.imul(C,V)|0,i=(i=i+Math.imul(C,q)|0)+Math.imul(T,V)|0,s=s+Math.imul(T,q)|0,n=n+Math.imul(k,X)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(S,X)|0,s=s+Math.imul(S,K)|0,n=n+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,G)|0)+Math.imul(_,Z)|0,s=s+Math.imul(_,G)|0,n=n+Math.imul(g,Q)|0,i=(i=i+Math.imul(g,ee)|0)+Math.imul(y,Q)|0,s=s+Math.imul(y,ee)|0,n=n+Math.imul(p,re)|0,i=(i=i+Math.imul(p,ne)|0)+Math.imul(m,re)|0,s=s+Math.imul(m,ne)|0;var xe=(c+(n=n+Math.imul(h,se)|0)|0)+((8191&(i=(i=i+Math.imul(h,oe)|0)+Math.imul(f,se)|0))<<13)|0;c=((s=s+Math.imul(f,oe)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,n=Math.imul(j,U),i=(i=Math.imul(j,$))+Math.imul(I,U)|0,s=Math.imul(I,$),n=n+Math.imul(A,V)|0,i=(i=i+Math.imul(A,q)|0)+Math.imul(R,V)|0,s=s+Math.imul(R,q)|0,n=n+Math.imul(C,X)|0,i=(i=i+Math.imul(C,K)|0)+Math.imul(T,X)|0,s=s+Math.imul(T,K)|0,n=n+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,G)|0)+Math.imul(S,Z)|0,s=s+Math.imul(S,G)|0,n=n+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,s=s+Math.imul(_,ee)|0,n=n+Math.imul(g,re)|0,i=(i=i+Math.imul(g,ne)|0)+Math.imul(y,re)|0,s=s+Math.imul(y,ne)|0,n=n+Math.imul(p,se)|0,i=(i=i+Math.imul(p,oe)|0)+Math.imul(m,se)|0,s=s+Math.imul(m,oe)|0;var ke=(c+(n=n+Math.imul(h,le)|0)|0)+((8191&(i=(i=i+Math.imul(h,ce)|0)+Math.imul(f,le)|0))<<13)|0;c=((s=s+Math.imul(f,ce)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,n=Math.imul(P,U),i=(i=Math.imul(P,$))+Math.imul(B,U)|0,s=Math.imul(B,$),n=n+Math.imul(j,V)|0,i=(i=i+Math.imul(j,q)|0)+Math.imul(I,V)|0,s=s+Math.imul(I,q)|0,n=n+Math.imul(A,X)|0,i=(i=i+Math.imul(A,K)|0)+Math.imul(R,X)|0,s=s+Math.imul(R,K)|0,n=n+Math.imul(C,Z)|0,i=(i=i+Math.imul(C,G)|0)+Math.imul(T,Z)|0,s=s+Math.imul(T,G)|0,n=n+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(S,Q)|0,s=s+Math.imul(S,ee)|0,n=n+Math.imul(w,re)|0,i=(i=i+Math.imul(w,ne)|0)+Math.imul(_,re)|0,s=s+Math.imul(_,ne)|0,n=n+Math.imul(g,se)|0,i=(i=i+Math.imul(g,oe)|0)+Math.imul(y,se)|0,s=s+Math.imul(y,oe)|0,n=n+Math.imul(p,le)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(m,le)|0,s=s+Math.imul(m,ce)|0;var Se=(c+(n=n+Math.imul(h,he)|0)|0)+((8191&(i=(i=i+Math.imul(h,fe)|0)+Math.imul(f,he)|0))<<13)|0;c=((s=s+Math.imul(f,fe)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,n=Math.imul(F,U),i=(i=Math.imul(F,$))+Math.imul(L,U)|0,s=Math.imul(L,$),n=n+Math.imul(P,V)|0,i=(i=i+Math.imul(P,q)|0)+Math.imul(B,V)|0,s=s+Math.imul(B,q)|0,n=n+Math.imul(j,X)|0,i=(i=i+Math.imul(j,K)|0)+Math.imul(I,X)|0,s=s+Math.imul(I,K)|0,n=n+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,G)|0)+Math.imul(R,Z)|0,s=s+Math.imul(R,G)|0,n=n+Math.imul(C,Q)|0,i=(i=i+Math.imul(C,ee)|0)+Math.imul(T,Q)|0,s=s+Math.imul(T,ee)|0,n=n+Math.imul(k,re)|0,i=(i=i+Math.imul(k,ne)|0)+Math.imul(S,re)|0,s=s+Math.imul(S,ne)|0,n=n+Math.imul(w,se)|0,i=(i=i+Math.imul(w,oe)|0)+Math.imul(_,se)|0,s=s+Math.imul(_,oe)|0,n=n+Math.imul(g,le)|0,i=(i=i+Math.imul(g,ce)|0)+Math.imul(y,le)|0,s=s+Math.imul(y,ce)|0,n=n+Math.imul(p,he)|0,i=(i=i+Math.imul(p,fe)|0)+Math.imul(m,he)|0,s=s+Math.imul(m,fe)|0;var Me=(c+(n=n+Math.imul(h,pe)|0)|0)+((8191&(i=(i=i+Math.imul(h,me)|0)+Math.imul(f,pe)|0))<<13)|0;c=((s=s+Math.imul(f,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,n=Math.imul(F,V),i=(i=Math.imul(F,q))+Math.imul(L,V)|0,s=Math.imul(L,q),n=n+Math.imul(P,X)|0,i=(i=i+Math.imul(P,K)|0)+Math.imul(B,X)|0,s=s+Math.imul(B,K)|0,n=n+Math.imul(j,Z)|0,i=(i=i+Math.imul(j,G)|0)+Math.imul(I,Z)|0,s=s+Math.imul(I,G)|0,n=n+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(R,Q)|0,s=s+Math.imul(R,ee)|0,n=n+Math.imul(C,re)|0,i=(i=i+Math.imul(C,ne)|0)+Math.imul(T,re)|0,s=s+Math.imul(T,ne)|0,n=n+Math.imul(k,se)|0,i=(i=i+Math.imul(k,oe)|0)+Math.imul(S,se)|0,s=s+Math.imul(S,oe)|0,n=n+Math.imul(w,le)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,le)|0,s=s+Math.imul(_,ce)|0,n=n+Math.imul(g,he)|0,i=(i=i+Math.imul(g,fe)|0)+Math.imul(y,he)|0,s=s+Math.imul(y,fe)|0;var Ce=(c+(n=n+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;c=((s=s+Math.imul(m,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,n=Math.imul(F,X),i=(i=Math.imul(F,K))+Math.imul(L,X)|0,s=Math.imul(L,K),n=n+Math.imul(P,Z)|0,i=(i=i+Math.imul(P,G)|0)+Math.imul(B,Z)|0,s=s+Math.imul(B,G)|0,n=n+Math.imul(j,Q)|0,i=(i=i+Math.imul(j,ee)|0)+Math.imul(I,Q)|0,s=s+Math.imul(I,ee)|0,n=n+Math.imul(A,re)|0,i=(i=i+Math.imul(A,ne)|0)+Math.imul(R,re)|0,s=s+Math.imul(R,ne)|0,n=n+Math.imul(C,se)|0,i=(i=i+Math.imul(C,oe)|0)+Math.imul(T,se)|0,s=s+Math.imul(T,oe)|0,n=n+Math.imul(k,le)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(S,le)|0,s=s+Math.imul(S,ce)|0,n=n+Math.imul(w,he)|0,i=(i=i+Math.imul(w,fe)|0)+Math.imul(_,he)|0,s=s+Math.imul(_,fe)|0;var Te=(c+(n=n+Math.imul(g,pe)|0)|0)+((8191&(i=(i=i+Math.imul(g,me)|0)+Math.imul(y,pe)|0))<<13)|0;c=((s=s+Math.imul(y,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,n=Math.imul(F,Z),i=(i=Math.imul(F,G))+Math.imul(L,Z)|0,s=Math.imul(L,G),n=n+Math.imul(P,Q)|0,i=(i=i+Math.imul(P,ee)|0)+Math.imul(B,Q)|0,s=s+Math.imul(B,ee)|0,n=n+Math.imul(j,re)|0,i=(i=i+Math.imul(j,ne)|0)+Math.imul(I,re)|0,s=s+Math.imul(I,ne)|0,n=n+Math.imul(A,se)|0,i=(i=i+Math.imul(A,oe)|0)+Math.imul(R,se)|0,s=s+Math.imul(R,oe)|0,n=n+Math.imul(C,le)|0,i=(i=i+Math.imul(C,ce)|0)+Math.imul(T,le)|0,s=s+Math.imul(T,ce)|0,n=n+Math.imul(k,he)|0,i=(i=i+Math.imul(k,fe)|0)+Math.imul(S,he)|0,s=s+Math.imul(S,fe)|0;var Ee=(c+(n=n+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(_,pe)|0))<<13)|0;c=((s=s+Math.imul(_,me)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,n=Math.imul(F,Q),i=(i=Math.imul(F,ee))+Math.imul(L,Q)|0,s=Math.imul(L,ee),n=n+Math.imul(P,re)|0,i=(i=i+Math.imul(P,ne)|0)+Math.imul(B,re)|0,s=s+Math.imul(B,ne)|0,n=n+Math.imul(j,se)|0,i=(i=i+Math.imul(j,oe)|0)+Math.imul(I,se)|0,s=s+Math.imul(I,oe)|0,n=n+Math.imul(A,le)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(R,le)|0,s=s+Math.imul(R,ce)|0,n=n+Math.imul(C,he)|0,i=(i=i+Math.imul(C,fe)|0)+Math.imul(T,he)|0,s=s+Math.imul(T,fe)|0;var Ae=(c+(n=n+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(S,pe)|0))<<13)|0;c=((s=s+Math.imul(S,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,n=Math.imul(F,re),i=(i=Math.imul(F,ne))+Math.imul(L,re)|0,s=Math.imul(L,ne),n=n+Math.imul(P,se)|0,i=(i=i+Math.imul(P,oe)|0)+Math.imul(B,se)|0,s=s+Math.imul(B,oe)|0,n=n+Math.imul(j,le)|0,i=(i=i+Math.imul(j,ce)|0)+Math.imul(I,le)|0,s=s+Math.imul(I,ce)|0,n=n+Math.imul(A,he)|0,i=(i=i+Math.imul(A,fe)|0)+Math.imul(R,he)|0,s=s+Math.imul(R,fe)|0;var Re=(c+(n=n+Math.imul(C,pe)|0)|0)+((8191&(i=(i=i+Math.imul(C,me)|0)+Math.imul(T,pe)|0))<<13)|0;c=((s=s+Math.imul(T,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,n=Math.imul(F,se),i=(i=Math.imul(F,oe))+Math.imul(L,se)|0,s=Math.imul(L,oe),n=n+Math.imul(P,le)|0,i=(i=i+Math.imul(P,ce)|0)+Math.imul(B,le)|0,s=s+Math.imul(B,ce)|0,n=n+Math.imul(j,he)|0,i=(i=i+Math.imul(j,fe)|0)+Math.imul(I,he)|0,s=s+Math.imul(I,fe)|0;var Oe=(c+(n=n+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(R,pe)|0))<<13)|0;c=((s=s+Math.imul(R,me)|0)+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,n=Math.imul(F,le),i=(i=Math.imul(F,ce))+Math.imul(L,le)|0,s=Math.imul(L,ce),n=n+Math.imul(P,he)|0,i=(i=i+Math.imul(P,fe)|0)+Math.imul(B,he)|0,s=s+Math.imul(B,fe)|0;var je=(c+(n=n+Math.imul(j,pe)|0)|0)+((8191&(i=(i=i+Math.imul(j,me)|0)+Math.imul(I,pe)|0))<<13)|0;c=((s=s+Math.imul(I,me)|0)+(i>>>13)|0)+(je>>>26)|0,je&=67108863,n=Math.imul(F,he),i=(i=Math.imul(F,fe))+Math.imul(L,he)|0,s=Math.imul(L,fe);var Ie=(c+(n=n+Math.imul(P,pe)|0)|0)+((8191&(i=(i=i+Math.imul(P,me)|0)+Math.imul(B,pe)|0))<<13)|0;c=((s=s+Math.imul(B,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863;var Ne=(c+(n=Math.imul(F,pe))|0)+((8191&(i=(i=Math.imul(F,me))+Math.imul(L,pe)|0))<<13)|0;return c=((s=Math.imul(L,me))+(i>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l[0]=be,l[1]=ge,l[2]=ye,l[3]=ve,l[4]=we,l[5]=_e,l[6]=xe,l[7]=ke,l[8]=Se,l[9]=Me,l[10]=Ce,l[11]=Te,l[12]=Ee,l[13]=Ae,l[14]=Re,l[15]=Oe,l[16]=je,l[17]=Ie,l[18]=Ne,0!==c&&(l[19]=c,r.length++),r};function m(e,t,r){return(new b).mulp(e,t,r)}function b(e,t){this.x=e,this.y=t}Math.imul||(p=d),s.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?p(this,e,t):r<63?d(this,e,t):r<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var n=0,i=0,s=0;s<r.length-1;s++){var o=i;i=0;for(var a=67108863&n,l=Math.min(s,t.length-1),c=Math.max(0,s-e.length+1);c<=l;c++){var u=s-c,h=(0|e.words[u])*(0|t.words[c]),f=67108863&h;a=67108863&(f=f+a|0),i+=(o=(o=o+(h/67108864|0)|0)+(f>>>26)|0)>>>26,o&=67108863}r.words[s]=a,n=o,o=i}return 0!==n?r.words[s]=n:r.length--,r.strip()}(this,e,t):m(this,e,t)},b.prototype.makeRBT=function(e){for(var t=new Array(e),r=s.prototype._countBits(e)-1,n=0;n<e;n++)t[n]=this.revBin(n,r,e);return t},b.prototype.revBin=function(e,t,r){if(0===e||e===r-1)return e;for(var n=0,i=0;i<t;i++)n|=(1&e)<<t-i-1,e>>=1;return n},b.prototype.permute=function(e,t,r,n,i,s){for(var o=0;o<s;o++)n[o]=t[e[o]],i[o]=r[e[o]]},b.prototype.transform=function(e,t,r,n,i,s){this.permute(s,e,t,r,n,i);for(var o=1;o<i;o<<=1)for(var a=o<<1,l=Math.cos(2*Math.PI/a),c=Math.sin(2*Math.PI/a),u=0;u<i;u+=a)for(var h=l,f=c,d=0;d<o;d++){var p=r[u+d],m=n[u+d],b=r[u+d+o],g=n[u+d+o],y=h*b-f*g;g=h*g+f*b,b=y,r[u+d]=p+b,n[u+d]=m+g,r[u+d+o]=p-b,n[u+d+o]=m-g,d!==a&&(y=l*h-c*f,f=l*f+c*h,h=y)}},b.prototype.guessLen13b=function(e,t){var r=1|Math.max(t,e),n=1&r,i=0;for(r=r/2|0;r;r>>>=1)i++;return 1<<i+1+n},b.prototype.conjugate=function(e,t,r){if(!(r<=1))for(var n=0;n<r/2;n++){var i=e[n];e[n]=e[r-n-1],e[r-n-1]=i,i=t[n],t[n]=-t[r-n-1],t[r-n-1]=-i}},b.prototype.normalize13b=function(e,t){for(var r=0,n=0;n<t/2;n++){var i=8192*Math.round(e[2*n+1]/t)+Math.round(e[2*n]/t)+r;e[n]=67108863&i,r=i<67108864?0:i/67108864|0}return e},b.prototype.convert13b=function(e,t,r,i){for(var s=0,o=0;o<t;o++)s+=0|e[o],r[2*o]=8191&s,s>>>=13,r[2*o+1]=8191&s,s>>>=13;for(o=2*t;o<i;++o)r[o]=0;n(0===s),n(0==(-8192&s))},b.prototype.stub=function(e){for(var t=new Array(e),r=0;r<e;r++)t[r]=0;return t},b.prototype.mulp=function(e,t,r){var n=2*this.guessLen13b(e.length,t.length),i=this.makeRBT(n),s=this.stub(n),o=new Array(n),a=new Array(n),l=new Array(n),c=new Array(n),u=new Array(n),h=new Array(n),f=r.words;f.length=n,this.convert13b(e.words,e.length,o,n),this.convert13b(t.words,t.length,c,n),this.transform(o,s,a,l,n,i),this.transform(c,s,u,h,n,i);for(var d=0;d<n;d++){var p=a[d]*u[d]-l[d]*h[d];l[d]=a[d]*h[d]+l[d]*u[d],a[d]=p}return this.conjugate(a,l,n),this.transform(a,l,f,s,n,i),this.conjugate(f,s,n),this.normalize13b(f,n),r.negative=e.negative^t.negative,r.length=e.length+t.length,r.strip()},s.prototype.mul=function(e){var t=new s(null);return t.words=new Array(this.length+e.length),this.mulTo(e,t)},s.prototype.mulf=function(e){var t=new s(null);return t.words=new Array(this.length+e.length),m(this,e,t)},s.prototype.imul=function(e){return this.clone().mulTo(e,this)},s.prototype.imuln=function(e){n(\"number\"==typeof e),n(e<67108864);for(var t=0,r=0;r<this.length;r++){var i=(0|this.words[r])*e,s=(67108863&i)+(67108863&t);t>>=26,t+=i/67108864|0,t+=s>>>26,this.words[r]=67108863&s}return 0!==t&&(this.words[r]=t,this.length++),this},s.prototype.muln=function(e){return this.clone().imuln(e)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r<t.length;r++){var n=r/26|0,i=r%26;t[r]=(e.words[n]&1<<i)>>>i}return t}(e);if(0===t.length)return new s(1);for(var r=this,n=0;n<t.length&&0===t[n];n++,r=r.sqr());if(++n<t.length)for(var i=r.sqr();n<t.length;n++,i=i.sqr())0!==t[n]&&(r=r.mul(i));return r},s.prototype.iushln=function(e){n(\"number\"==typeof e&&e>=0);var t,r=e%26,i=(e-r)/26,s=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t<this.length;t++){var a=this.words[t]&s,l=(0|this.words[t])-a<<r;this.words[t]=l|o,o=a>>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t<i;t++)this.words[t]=0;this.length+=i}return this.strip()},s.prototype.ishln=function(e){return n(0===this.negative),this.iushln(e)},s.prototype.iushrn=function(e,t,r){var i;n(\"number\"==typeof e&&e>=0),i=t?(t-t%26)/26:0;var s=e%26,o=Math.min((e-s)/26,this.length),a=67108863^67108863>>>s<<s,l=r;if(i-=o,i=Math.max(0,i),l){for(var c=0;c<o;c++)l.words[c]=this.words[c];l.length=o}if(0===o);else if(this.length>o)for(this.length-=o,c=0;c<this.length;c++)this.words[c]=this.words[c+o];else this.words[0]=0,this.length=1;var u=0;for(c=this.length-1;c>=0&&(0!==u||c>=i);c--){var h=0|this.words[c];this.words[c]=u<<26-s|h>>>s,u=h&a}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},s.prototype.ishrn=function(e,t,r){return n(0===this.negative),this.iushrn(e,t,r)},s.prototype.shln=function(e){return this.clone().ishln(e)},s.prototype.ushln=function(e){return this.clone().iushln(e)},s.prototype.shrn=function(e){return this.clone().ishrn(e)},s.prototype.ushrn=function(e){return this.clone().iushrn(e)},s.prototype.testn=function(e){n(\"number\"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,i=1<<t;return!(this.length<=r)&&!!(this.words[r]&i)},s.prototype.imaskn=function(e){n(\"number\"==typeof e&&e>=0);var t=e%26,r=(e-t)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var i=67108863^67108863>>>t<<t;this.words[this.length-1]&=i}return this.strip()},s.prototype.maskn=function(e){return this.clone().imaskn(e)},s.prototype.iaddn=function(e){return n(\"number\"==typeof e),n(e<67108864),e<0?this.isubn(-e):0!==this.negative?1===this.length&&(0|this.words[0])<e?(this.words[0]=e-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},s.prototype._iaddn=function(e){this.words[0]+=e;for(var t=0;t<this.length&&this.words[t]>=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},s.prototype.isubn=function(e){if(n(\"number\"==typeof e),n(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t<this.length&&this.words[t]<0;t++)this.words[t]+=67108864,this.words[t+1]-=1;return this.strip()},s.prototype.addn=function(e){return this.clone().iaddn(e)},s.prototype.subn=function(e){return this.clone().isubn(e)},s.prototype.iabs=function(){return this.negative=0,this},s.prototype.abs=function(){return this.clone().iabs()},s.prototype._ishlnsubmul=function(e,t,r){var i,s,o=e.length+r;this._expand(o);var a=0;for(i=0;i<e.length;i++){s=(0|this.words[i+r])+a;var l=(0|e.words[i])*t;a=((s-=67108863&l)>>26)-(l/67108864|0),this.words[i+r]=67108863&s}for(;i<this.length-r;i++)a=(s=(0|this.words[i+r])+a)>>26,this.words[i+r]=67108863&s;if(0===a)return this.strip();for(n(-1===a),a=0,i=0;i<this.length;i++)a=(s=-(0|this.words[i])+a)>>26,this.words[i]=67108863&s;return this.negative=1,this.strip()},s.prototype._wordDiv=function(e,t){var r=(this.length,e.length),n=this.clone(),i=e,o=0|i.words[i.length-1];0!==(r=26-this._countBits(o))&&(i=i.ushln(r),n.iushln(r),o=0|i.words[i.length-1]);var a,l=n.length-i.length;if(\"mod\"!==t){(a=new s(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c<a.length;c++)a.words[c]=0}var u=n.clone()._ishlnsubmul(i,1,l);0===u.negative&&(n=u,a&&(a.words[l]=1));for(var h=l-1;h>=0;h--){var f=67108864*(0|n.words[i.length+h])+(0|n.words[i.length+h-1]);for(f=Math.min(f/o|0,67108863),n._ishlnsubmul(i,f,h);0!==n.negative;)f--,n.negative=0,n._ishlnsubmul(i,1,h),n.isZero()||(n.negative^=1);a&&(a.words[h]=f)}return a&&a.strip(),n.strip(),\"div\"!==t&&0!==r&&n.iushrn(r),{div:a||null,mod:n}},s.prototype.divmod=function(e,t,r){return n(!e.isZero()),this.isZero()?{div:new s(0),mod:new s(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),\"mod\"!==t&&(i=a.div.neg()),\"div\"!==t&&(o=a.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:i,mod:o}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),\"mod\"!==t&&(i=a.div.neg()),{div:i,mod:a.mod}):0!=(this.negative&e.negative)?(a=this.neg().divmod(e.neg(),t),\"div\"!==t&&(o=a.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:a.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new s(0),mod:this}:1===e.length?\"div\"===t?{div:this.divn(e.words[0]),mod:null}:\"mod\"===t?{div:null,mod:new s(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new s(this.modn(e.words[0]))}:this._wordDiv(e,t);var i,o,a},s.prototype.div=function(e){return this.divmod(e,\"div\",!1).div},s.prototype.mod=function(e){return this.divmod(e,\"mod\",!1).mod},s.prototype.umod=function(e){return this.divmod(e,\"mod\",!0).mod},s.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,n=e.ushrn(1),i=e.andln(1),s=r.cmp(n);return s<0||1===i&&0===s?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},s.prototype.modn=function(e){n(e<=67108863);for(var t=(1<<26)%e,r=0,i=this.length-1;i>=0;i--)r=(t*r+(0|this.words[i]))%e;return r},s.prototype.idivn=function(e){n(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*t;this.words[r]=i/e|0,t=i%e}return this.strip()},s.prototype.divn=function(e){return this.clone().idivn(e)},s.prototype.egcd=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new s(1),o=new s(0),a=new s(0),l=new s(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var u=r.clone(),h=t.clone();!t.isZero();){for(var f=0,d=1;0==(t.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(t.iushrn(f);f-- >0;)(i.isOdd()||o.isOdd())&&(i.iadd(u),o.isub(h)),i.iushrn(1),o.iushrn(1);for(var p=0,m=1;0==(r.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(u),l.isub(h)),a.iushrn(1),l.iushrn(1);t.cmp(r)>=0?(t.isub(r),i.isub(a),o.isub(l)):(r.isub(t),a.isub(i),l.isub(o))}return{a:a,b:l,gcd:r.iushln(c)}},s.prototype._invmp=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,o=new s(1),a=new s(0),l=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,u=1;0==(t.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var h=0,f=1;0==(r.words[0]&f)&&h<26;++h,f<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(a)):(r.isub(t),a.isub(o))}return(i=0===t.cmpn(1)?o:a).cmpn(0)<0&&i.iadd(e),i},s.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var n=0;t.isEven()&&r.isEven();n++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=t.cmp(r);if(i<0){var s=t;t=r,r=s}else if(0===i||0===r.cmpn(1))break;t.isub(r)}return r.iushln(n)},s.prototype.invm=function(e){return this.egcd(e).a.umod(e)},s.prototype.isEven=function(){return 0==(1&this.words[0])},s.prototype.isOdd=function(){return 1==(1&this.words[0])},s.prototype.andln=function(e){return this.words[0]&e},s.prototype.bincn=function(e){n(\"number\"==typeof e);var t=e%26,r=(e-t)/26,i=1<<t;if(this.length<=r)return this._expand(r+1),this.words[r]|=i,this;for(var s=i,o=r;0!==s&&o<this.length;o++){var a=0|this.words[o];s=(a+=s)>>>26,a&=67108863,this.words[o]=a}return 0!==s&&(this.words[o]=s,this.length++),this},s.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},s.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),n(e<=67108863,\"Number is too big\");var i=0|this.words[0];t=i===e?0:i<e?-1:1}return 0!==this.negative?0|-t:t},s.prototype.cmp=function(e){if(0!==this.negative&&0===e.negative)return-1;if(0===this.negative&&0!==e.negative)return 1;var t=this.ucmp(e);return 0!==this.negative?0|-t:t},s.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var t=0,r=this.length-1;r>=0;r--){var n=0|this.words[r],i=0|e.words[r];if(n!==i){n<i?t=-1:n>i&&(t=1);break}}return t},s.prototype.gtn=function(e){return 1===this.cmpn(e)},s.prototype.gt=function(e){return 1===this.cmp(e)},s.prototype.gten=function(e){return this.cmpn(e)>=0},s.prototype.gte=function(e){return this.cmp(e)>=0},s.prototype.ltn=function(e){return-1===this.cmpn(e)},s.prototype.lt=function(e){return-1===this.cmp(e)},s.prototype.lten=function(e){return this.cmpn(e)<=0},s.prototype.lte=function(e){return this.cmp(e)<=0},s.prototype.eqn=function(e){return 0===this.cmpn(e)},s.prototype.eq=function(e){return 0===this.cmp(e)},s.red=function(e){return new k(e)},s.prototype.toRed=function(e){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),e.convertTo(this)._forceRed(e)},s.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},s.prototype._forceRed=function(e){return this.red=e,this},s.prototype.forceRed=function(e){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(e)},s.prototype.redAdd=function(e){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,e)},s.prototype.redIAdd=function(e){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,e)},s.prototype.redSub=function(e){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,e)},s.prototype.redISub=function(e){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,e)},s.prototype.redShl=function(e){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,e)},s.prototype.redMul=function(e){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,e),this.red.mul(this,e)},s.prototype.redIMul=function(e){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,e),this.red.imul(this,e)},s.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(e){return n(this.red&&!e.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,e)};var g={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new s(t,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function v(){y.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function w(){y.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function _(){y.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function x(){y.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function k(e){if(\"string\"==typeof e){var t=s._prime(e);this.m=t.p,this.prime=t}else n(e.gtn(1),\"modulus must be greater than 1\"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new s(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var n=t<this.n?-1:r.ucmp(this.p);return 0===n?(r.words[0]=0,r.length=1):n>0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},i(v,y),v.prototype.split=function(e,t){for(var r=Math.min(e.length,9),n=0;n<r;n++)t.words[n]=e.words[n];if(t.length=r,e.length<=9)return e.words[0]=0,void(e.length=1);var i=e.words[9];for(t.words[t.length++]=4194303&i,n=10;n<e.length;n++){var s=0|e.words[n];e.words[n-10]=(4194303&s)<<4|i>>>22,i=s}i>>>=22,e.words[n-10]=i,0===i&&e.length>10?e.length-=10:e.length-=9},v.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r<e.length;r++){var n=0|e.words[r];t+=977*n,e.words[r]=67108863&t,t=64*n+(t/67108864|0)}return 0===e.words[e.length-1]&&(e.length--,0===e.words[e.length-1]&&e.length--),e},i(w,y),i(_,y),i(x,y),x.prototype.imulK=function(e){for(var t=0,r=0;r<e.length;r++){var n=19*(0|e.words[r])+t,i=67108863&n;n>>>=26,e.words[r]=i,t=n}return 0!==t&&(e.words[e.length++]=t),e},s._prime=function(e){if(g[e])return g[e];var t;if(\"k256\"===e)t=new v;else if(\"p224\"===e)t=new w;else if(\"p192\"===e)t=new _;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new x}return g[e]=t,t},k.prototype._verify1=function(e){n(0===e.negative,\"red works only with positives\"),n(e.red,\"red works only with red numbers\")},k.prototype._verify2=function(e,t){n(0==(e.negative|t.negative),\"red works only with positives\"),n(e.red&&e.red===t.red,\"red works only with red numbers\")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(n(t%2==1),3===t){var r=this.m.add(new s(1)).iushrn(2);return this.pow(e,r)}for(var i=this.m.subn(1),o=0;!i.isZero()&&0===i.andln(1);)o++,i.iushrn(1);n(!i.isZero());var a=new s(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new s(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var h=this.pow(u,i),f=this.pow(e,i.addn(1).iushrn(1)),d=this.pow(e,i),p=o;0!==d.cmp(a);){for(var m=d,b=0;0!==m.cmp(a);b++)m=m.redSqr();n(b<p);var g=this.pow(h,new s(1).iushln(p-b-1));f=f.redMul(g),h=g.redSqr(),d=d.redMul(h),p=b}return f},k.prototype.invm=function(e){var t=e._invmp(this.m);return 0!==t.negative?(t.negative=0,this.imod(t).redNeg()):this.imod(t)},k.prototype.pow=function(e,t){if(t.isZero())return new s(1).toRed(this);if(0===t.cmpn(1))return e.clone();var r=new Array(16);r[0]=new s(1).toRed(this),r[1]=e;for(var n=2;n<r.length;n++)r[n]=this.mul(r[n-1],e);var i=r[0],o=0,a=0,l=t.bitLength()%26;for(0===l&&(l=26),n=t.length-1;n>=0;n--){for(var c=t.words[n],u=l-1;u>=0;u--){var h=c>>u&1;i!==r[0]&&(i=this.sqr(i)),0!==h||0!==o?(o<<=1,o|=h,(4===++a||0===n&&0===u)&&(i=this.mul(i,r[o]),a=0,o=0)):a=0}l=26}return i},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},s.mont=function(e){return new S(e)},i(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new s(0)._forceRed(this);var r=e.mul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===t||t)},{buffer:188}],185:[function(e,t,r){\"use strict\";r.byteLength=function(e){var t=c(e),r=t[0],n=t[1];return 3*(r+n)/4-n},r.toByteArray=function(e){var t,r,n=c(e),o=n[0],a=n[1],l=new s(function(e,t,r){return 3*(t+r)/4-r}(0,o,a)),u=0,h=a>0?o-4:o;for(r=0;r<h;r+=4)t=i[e.charCodeAt(r)]<<18|i[e.charCodeAt(r+1)]<<12|i[e.charCodeAt(r+2)]<<6|i[e.charCodeAt(r+3)],l[u++]=t>>16&255,l[u++]=t>>8&255,l[u++]=255&t;2===a&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,l[u++]=255&t);1===a&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,l[u++]=t>>8&255,l[u++]=255&t);return l},r.fromByteArray=function(e){for(var t,r=e.length,i=r%3,s=[],o=0,a=r-i;o<a;o+=16383)s.push(u(e,o,o+16383>a?a:o+16383));1===i?(t=e[r-1],s.push(n[t>>2]+n[t<<4&63]+\"==\")):2===i&&(t=(e[r-2]<<8)+e[r-1],s.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+\"=\"));return s.join(\"\")};for(var n=[],i=[],s=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",a=0,l=o.length;a<l;++a)n[a]=o[a],i[o.charCodeAt(a)]=a;function c(e){var t=e.length;if(t%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=e.indexOf(\"=\");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function u(e,t,r){for(var i,s,o=[],a=t;a<r;a+=3)i=(e[a]<<16&16711680)+(e[a+1]<<8&65280)+(255&e[a+2]),o.push(n[(s=i)>>18&63]+n[s>>12&63]+n[s>>6&63]+n[63&s]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},{}],186:[function(e,t,r){\"use strict\";!function(t,r){function n(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function i(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function s(e,t,r){if(s.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&(\"le\"!==t&&\"be\"!==t||(r=t,t=10),this._init(e||0,t||10,r||\"be\"))}var o;\"object\"==typeof t?t.exports=s:(void 0).BN=s,s.BN=s,s.wordSize=26;try{o=\"undefined\"!=typeof window&&void 0!==window.Buffer?window.Buffer:e(\"buffer\").Buffer}catch(e){}function a(e,t){var r=e.charCodeAt(t);return r>=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void n(!1,\"Invalid character in \"+e)}function l(e,t,r){var n=a(e,r);return r-1>=t&&(n|=a(e,r-1)<<4),n}function c(e,t,r,i){for(var s=0,o=0,a=Math.min(e.length,r),l=t;l<a;l++){var c=e.charCodeAt(l)-48;s*=i,o=c>=49?c-49+10:c>=17?c-17+10:c,n(c>=0&&o<i,\"Invalid character\"),s+=o}return s}function u(e,t){e.words=t.words,e.length=t.length,e.negative=t.negative,e.red=t.red}if(s.isBN=function(e){return e instanceof s||null!==e&&\"object\"==typeof e&&e.constructor.wordSize===s.wordSize&&Array.isArray(e.words)},s.max=function(e,t){return e.cmp(t)>0?e:t},s.min=function(e,t){return e.cmp(t)<0?e:t},s.prototype._init=function(e,t,r){if(\"number\"==typeof e)return this._initNumber(e,t,r);if(\"object\"==typeof e)return this._initArray(e,t,r);\"hex\"===t&&(t=16),n(t===(0|t)&&t>=2&&t<=36);var i=0;\"-\"===(e=e.toString().replace(/\\s+/g,\"\"))[0]&&(i++,this.negative=1),i<e.length&&(16===t?this._parseHex(e,i,r):(this._parseBase(e,t,i),\"le\"===r&&this._initArray(this.toArray(),t,r)))},s.prototype._initNumber=function(e,t,r){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(n(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),t,r)},s.prototype._initArray=function(e,t,r){if(n(\"number\"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var s,o,a=0;if(\"be\"===r)for(i=e.length-1,s=0;i>=0;i-=3)o=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[s]|=o<<a&67108863,this.words[s+1]=o>>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);else if(\"le\"===r)for(i=0,s=0;i<e.length;i+=3)o=e[i]|e[i+1]<<8|e[i+2]<<16,this.words[s]|=o<<a&67108863,this.words[s+1]=o>>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);return this._strip()},s.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var i,s=0,o=0;if(\"be\"===r)for(n=e.length-1;n>=t;n-=2)i=l(e,t,n)<<s,this.words[o]|=67108863&i,s>=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;else for(n=(e.length-t)%2==0?t+1:t;n<e.length;n+=2)i=l(e,t,n)<<s,this.words[o]|=67108863&i,s>=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;this._strip()},s.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=t)n++;n--,i=i/t|0;for(var s=e.length-r,o=s%n,a=Math.min(s,s-o)+r,l=0,u=r;u<a;u+=n)l=c(e,u,u+n,t),this.imuln(i),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l);if(0!==o){var h=1;for(l=c(e,u,e.length,t),u=0;u<o;u++)h*=t;this.imuln(h),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l)}this._strip()},s.prototype.copy=function(e){e.words=new Array(this.length);for(var t=0;t<this.length;t++)e.words[t]=this.words[t];e.length=this.length,e.negative=this.negative,e.red=this.red},s.prototype._move=function(e){u(e,this)},s.prototype.clone=function(){var e=new s(null);return this.copy(e),e},s.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},s.prototype._strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},s.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},\"undefined\"!=typeof Symbol&&\"function\"==typeof Symbol.for)try{s.prototype[Symbol.for(\"nodejs.util.inspect.custom\")]=h}catch(e){s.prototype.inspect=h}else s.prototype.inspect=h;function h(){return(this.red?\"<BN-R: \":\"<BN: \")+this.toString(16)+\">\"}var f=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];s.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||\"hex\"===e){r=\"\";for(var i=0,s=0,o=0;o<this.length;o++){var a=this.words[o],l=(16777215&(a<<i|s)).toString(16);s=a>>>24-i&16777215,(i+=2)>=26&&(i-=26,o--),r=0!==s||o!==this.length-1?f[6-l.length]+l+r:l+r}for(0!==s&&(r=s.toString(16)+r);r.length%t!=0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=d[e],u=p[e];r=\"\";var h=this.clone();for(h.negative=0;!h.isZero();){var m=h.modrn(u).toString(e);r=(h=h.idivn(u)).isZero()?m+r:f[c-m.length]+m+r}for(this.isZero()&&(r=\"0\"+r);r.length%t!=0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},s.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-e:e},s.prototype.toJSON=function(){return this.toString(16,2)},o&&(s.prototype.toBuffer=function(e,t){return this.toArrayLike(o,e,t)}),s.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)};function m(e,t,r){r.negative=t.negative^e.negative;var n=e.length+t.length|0;r.length=n,n=n-1|0;var i=0|e.words[0],s=0|t.words[0],o=i*s,a=67108863&o,l=o/67108864|0;r.words[0]=a;for(var c=1;c<n;c++){for(var u=l>>>26,h=67108863&l,f=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=f;d++){var p=c-d|0;u+=(o=(i=0|e.words[p])*(s=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,l=0|u}return 0!==l?r.words[c]=0|l:r.length--,r._strip()}s.prototype.toArrayLike=function(e,t,r){this._strip();var i=this.byteLength(),s=r||Math.max(1,i);n(i<=s,\"byte array longer than desired length\"),n(s>0,\"Requested array length <= 0\");var o=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,s);return this[\"_toArrayLike\"+(\"le\"===t?\"LE\":\"BE\")](o,i),o},s.prototype._toArrayLikeLE=function(e,t){for(var r=0,n=0,i=0,s=0;i<this.length;i++){var o=this.words[i]<<s|n;e[r++]=255&o,r<e.length&&(e[r++]=o>>8&255),r<e.length&&(e[r++]=o>>16&255),6===s?(r<e.length&&(e[r++]=o>>24&255),n=0,s=0):(n=o>>>24,s+=2)}if(r<e.length)for(e[r++]=n;r<e.length;)e[r++]=0},s.prototype._toArrayLikeBE=function(e,t){for(var r=e.length-1,n=0,i=0,s=0;i<this.length;i++){var o=this.words[i]<<s|n;e[r--]=255&o,r>=0&&(e[r--]=o>>8&255),r>=0&&(e[r--]=o>>16&255),6===s?(r>=0&&(e[r--]=o>>24&255),n=0,s=0):(n=o>>>24,s+=2)}if(r>=0)for(e[r--]=n;r>=0;)e[r--]=0},Math.clz32?s.prototype._countBits=function(e){return 32-Math.clz32(e)}:s.prototype._countBits=function(e){var t=e,r=0;return t>=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},s.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},s.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;t<this.length;t++){var r=this._zeroBits(this.words[t]);if(e+=r,26!==r)break}return e},s.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},s.prototype.toTwos=function(e){return 0!==this.negative?this.abs().inotn(e).iaddn(1):this.clone()},s.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},s.prototype.isNeg=function(){return 0!==this.negative},s.prototype.neg=function(){return this.clone().ineg()},s.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},s.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var t=0;t<e.length;t++)this.words[t]=this.words[t]|e.words[t];return this._strip()},s.prototype.ior=function(e){return n(0==(this.negative|e.negative)),this.iuor(e)},s.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},s.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},s.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;r<t.length;r++)this.words[r]=this.words[r]&e.words[r];return this.length=t.length,this._strip()},s.prototype.iand=function(e){return n(0==(this.negative|e.negative)),this.iuand(e)},s.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},s.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},s.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var n=0;n<r.length;n++)this.words[n]=t.words[n]^r.words[n];if(this!==t)for(;n<t.length;n++)this.words[n]=t.words[n];return this.length=t.length,this._strip()},s.prototype.ixor=function(e){return n(0==(this.negative|e.negative)),this.iuxor(e)},s.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},s.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},s.prototype.inotn=function(e){n(\"number\"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var i=0;i<t;i++)this.words[i]=67108863&~this.words[i];return r>0&&(this.words[i]=~this.words[i]&67108863>>26-r),this._strip()},s.prototype.notn=function(e){return this.clone().inotn(e)},s.prototype.setn=function(e,t){n(\"number\"==typeof e&&e>=0);var r=e/26|0,i=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<<i:this.words[r]&~(1<<i),this._strip()},s.prototype.iadd=function(e){var t,r,n;if(0!==this.negative&&0===e.negative)return this.negative=0,t=this.isub(e),this.negative^=1,this._normSign();if(0===this.negative&&0!==e.negative)return e.negative=0,t=this.isub(e),e.negative=1,t._normSign();this.length>e.length?(r=this,n=e):(r=e,n=this);for(var i=0,s=0;s<n.length;s++)t=(0|r.words[s])+(0|n.words[s])+i,this.words[s]=67108863&t,i=t>>>26;for(;0!==i&&s<r.length;s++)t=(0|r.words[s])+i,this.words[s]=67108863&t,i=t>>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;s<r.length;s++)this.words[s]=r.words[s];return this},s.prototype.add=function(e){var t;return 0!==e.negative&&0===this.negative?(e.negative=0,t=this.sub(e),e.negative^=1,t):0===e.negative&&0!==this.negative?(this.negative=0,t=e.sub(this),this.negative=1,t):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},s.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,n,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=e):(r=e,n=this);for(var s=0,o=0;o<n.length;o++)s=(t=(0|r.words[o])-(0|n.words[o])+s)>>26,this.words[o]=67108863&t;for(;0!==s&&o<r.length;o++)s=(t=(0|r.words[o])+s)>>26,this.words[o]=67108863&t;if(0===s&&o<r.length&&r!==this)for(;o<r.length;o++)this.words[o]=r.words[o];return this.length=Math.max(this.length,o),r!==this&&(this.negative=1),this._strip()},s.prototype.sub=function(e){return this.clone().isub(e)};var b=function(e,t,r){var n,i,s,o=e.words,a=t.words,l=r.words,c=0,u=0|o[0],h=8191&u,f=u>>>13,d=0|o[1],p=8191&d,m=d>>>13,b=0|o[2],g=8191&b,y=b>>>13,v=0|o[3],w=8191&v,_=v>>>13,x=0|o[4],k=8191&x,S=x>>>13,M=0|o[5],C=8191&M,T=M>>>13,E=0|o[6],A=8191&E,R=E>>>13,O=0|o[7],j=8191&O,I=O>>>13,N=0|o[8],P=8191&N,B=N>>>13,D=0|o[9],F=8191&D,L=D>>>13,z=0|a[0],U=8191&z,$=z>>>13,H=0|a[1],V=8191&H,q=H>>>13,W=0|a[2],X=8191&W,K=W>>>13,Y=0|a[3],Z=8191&Y,G=Y>>>13,J=0|a[4],Q=8191&J,ee=J>>>13,te=0|a[5],re=8191&te,ne=te>>>13,ie=0|a[6],se=8191&ie,oe=ie>>>13,ae=0|a[7],le=8191&ae,ce=ae>>>13,ue=0|a[8],he=8191&ue,fe=ue>>>13,de=0|a[9],pe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var be=(c+(n=Math.imul(h,U))|0)+((8191&(i=(i=Math.imul(h,$))+Math.imul(f,U)|0))<<13)|0;c=((s=Math.imul(f,$))+(i>>>13)|0)+(be>>>26)|0,be&=67108863,n=Math.imul(p,U),i=(i=Math.imul(p,$))+Math.imul(m,U)|0,s=Math.imul(m,$);var ge=(c+(n=n+Math.imul(h,V)|0)|0)+((8191&(i=(i=i+Math.imul(h,q)|0)+Math.imul(f,V)|0))<<13)|0;c=((s=s+Math.imul(f,q)|0)+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,n=Math.imul(g,U),i=(i=Math.imul(g,$))+Math.imul(y,U)|0,s=Math.imul(y,$),n=n+Math.imul(p,V)|0,i=(i=i+Math.imul(p,q)|0)+Math.imul(m,V)|0,s=s+Math.imul(m,q)|0;var ye=(c+(n=n+Math.imul(h,X)|0)|0)+((8191&(i=(i=i+Math.imul(h,K)|0)+Math.imul(f,X)|0))<<13)|0;c=((s=s+Math.imul(f,K)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,n=Math.imul(w,U),i=(i=Math.imul(w,$))+Math.imul(_,U)|0,s=Math.imul(_,$),n=n+Math.imul(g,V)|0,i=(i=i+Math.imul(g,q)|0)+Math.imul(y,V)|0,s=s+Math.imul(y,q)|0,n=n+Math.imul(p,X)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,X)|0,s=s+Math.imul(m,K)|0;var ve=(c+(n=n+Math.imul(h,Z)|0)|0)+((8191&(i=(i=i+Math.imul(h,G)|0)+Math.imul(f,Z)|0))<<13)|0;c=((s=s+Math.imul(f,G)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,n=Math.imul(k,U),i=(i=Math.imul(k,$))+Math.imul(S,U)|0,s=Math.imul(S,$),n=n+Math.imul(w,V)|0,i=(i=i+Math.imul(w,q)|0)+Math.imul(_,V)|0,s=s+Math.imul(_,q)|0,n=n+Math.imul(g,X)|0,i=(i=i+Math.imul(g,K)|0)+Math.imul(y,X)|0,s=s+Math.imul(y,K)|0,n=n+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,G)|0)+Math.imul(m,Z)|0,s=s+Math.imul(m,G)|0;var we=(c+(n=n+Math.imul(h,Q)|0)|0)+((8191&(i=(i=i+Math.imul(h,ee)|0)+Math.imul(f,Q)|0))<<13)|0;c=((s=s+Math.imul(f,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,n=Math.imul(C,U),i=(i=Math.imul(C,$))+Math.imul(T,U)|0,s=Math.imul(T,$),n=n+Math.imul(k,V)|0,i=(i=i+Math.imul(k,q)|0)+Math.imul(S,V)|0,s=s+Math.imul(S,q)|0,n=n+Math.imul(w,X)|0,i=(i=i+Math.imul(w,K)|0)+Math.imul(_,X)|0,s=s+Math.imul(_,K)|0,n=n+Math.imul(g,Z)|0,i=(i=i+Math.imul(g,G)|0)+Math.imul(y,Z)|0,s=s+Math.imul(y,G)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Q)|0,s=s+Math.imul(m,ee)|0;var _e=(c+(n=n+Math.imul(h,re)|0)|0)+((8191&(i=(i=i+Math.imul(h,ne)|0)+Math.imul(f,re)|0))<<13)|0;c=((s=s+Math.imul(f,ne)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,n=Math.imul(A,U),i=(i=Math.imul(A,$))+Math.imul(R,U)|0,s=Math.imul(R,$),n=n+Math.imul(C,V)|0,i=(i=i+Math.imul(C,q)|0)+Math.imul(T,V)|0,s=s+Math.imul(T,q)|0,n=n+Math.imul(k,X)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(S,X)|0,s=s+Math.imul(S,K)|0,n=n+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,G)|0)+Math.imul(_,Z)|0,s=s+Math.imul(_,G)|0,n=n+Math.imul(g,Q)|0,i=(i=i+Math.imul(g,ee)|0)+Math.imul(y,Q)|0,s=s+Math.imul(y,ee)|0,n=n+Math.imul(p,re)|0,i=(i=i+Math.imul(p,ne)|0)+Math.imul(m,re)|0,s=s+Math.imul(m,ne)|0;var xe=(c+(n=n+Math.imul(h,se)|0)|0)+((8191&(i=(i=i+Math.imul(h,oe)|0)+Math.imul(f,se)|0))<<13)|0;c=((s=s+Math.imul(f,oe)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,n=Math.imul(j,U),i=(i=Math.imul(j,$))+Math.imul(I,U)|0,s=Math.imul(I,$),n=n+Math.imul(A,V)|0,i=(i=i+Math.imul(A,q)|0)+Math.imul(R,V)|0,s=s+Math.imul(R,q)|0,n=n+Math.imul(C,X)|0,i=(i=i+Math.imul(C,K)|0)+Math.imul(T,X)|0,s=s+Math.imul(T,K)|0,n=n+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,G)|0)+Math.imul(S,Z)|0,s=s+Math.imul(S,G)|0,n=n+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,s=s+Math.imul(_,ee)|0,n=n+Math.imul(g,re)|0,i=(i=i+Math.imul(g,ne)|0)+Math.imul(y,re)|0,s=s+Math.imul(y,ne)|0,n=n+Math.imul(p,se)|0,i=(i=i+Math.imul(p,oe)|0)+Math.imul(m,se)|0,s=s+Math.imul(m,oe)|0;var ke=(c+(n=n+Math.imul(h,le)|0)|0)+((8191&(i=(i=i+Math.imul(h,ce)|0)+Math.imul(f,le)|0))<<13)|0;c=((s=s+Math.imul(f,ce)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,n=Math.imul(P,U),i=(i=Math.imul(P,$))+Math.imul(B,U)|0,s=Math.imul(B,$),n=n+Math.imul(j,V)|0,i=(i=i+Math.imul(j,q)|0)+Math.imul(I,V)|0,s=s+Math.imul(I,q)|0,n=n+Math.imul(A,X)|0,i=(i=i+Math.imul(A,K)|0)+Math.imul(R,X)|0,s=s+Math.imul(R,K)|0,n=n+Math.imul(C,Z)|0,i=(i=i+Math.imul(C,G)|0)+Math.imul(T,Z)|0,s=s+Math.imul(T,G)|0,n=n+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(S,Q)|0,s=s+Math.imul(S,ee)|0,n=n+Math.imul(w,re)|0,i=(i=i+Math.imul(w,ne)|0)+Math.imul(_,re)|0,s=s+Math.imul(_,ne)|0,n=n+Math.imul(g,se)|0,i=(i=i+Math.imul(g,oe)|0)+Math.imul(y,se)|0,s=s+Math.imul(y,oe)|0,n=n+Math.imul(p,le)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(m,le)|0,s=s+Math.imul(m,ce)|0;var Se=(c+(n=n+Math.imul(h,he)|0)|0)+((8191&(i=(i=i+Math.imul(h,fe)|0)+Math.imul(f,he)|0))<<13)|0;c=((s=s+Math.imul(f,fe)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,n=Math.imul(F,U),i=(i=Math.imul(F,$))+Math.imul(L,U)|0,s=Math.imul(L,$),n=n+Math.imul(P,V)|0,i=(i=i+Math.imul(P,q)|0)+Math.imul(B,V)|0,s=s+Math.imul(B,q)|0,n=n+Math.imul(j,X)|0,i=(i=i+Math.imul(j,K)|0)+Math.imul(I,X)|0,s=s+Math.imul(I,K)|0,n=n+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,G)|0)+Math.imul(R,Z)|0,s=s+Math.imul(R,G)|0,n=n+Math.imul(C,Q)|0,i=(i=i+Math.imul(C,ee)|0)+Math.imul(T,Q)|0,s=s+Math.imul(T,ee)|0,n=n+Math.imul(k,re)|0,i=(i=i+Math.imul(k,ne)|0)+Math.imul(S,re)|0,s=s+Math.imul(S,ne)|0,n=n+Math.imul(w,se)|0,i=(i=i+Math.imul(w,oe)|0)+Math.imul(_,se)|0,s=s+Math.imul(_,oe)|0,n=n+Math.imul(g,le)|0,i=(i=i+Math.imul(g,ce)|0)+Math.imul(y,le)|0,s=s+Math.imul(y,ce)|0,n=n+Math.imul(p,he)|0,i=(i=i+Math.imul(p,fe)|0)+Math.imul(m,he)|0,s=s+Math.imul(m,fe)|0;var Me=(c+(n=n+Math.imul(h,pe)|0)|0)+((8191&(i=(i=i+Math.imul(h,me)|0)+Math.imul(f,pe)|0))<<13)|0;c=((s=s+Math.imul(f,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,n=Math.imul(F,V),i=(i=Math.imul(F,q))+Math.imul(L,V)|0,s=Math.imul(L,q),n=n+Math.imul(P,X)|0,i=(i=i+Math.imul(P,K)|0)+Math.imul(B,X)|0,s=s+Math.imul(B,K)|0,n=n+Math.imul(j,Z)|0,i=(i=i+Math.imul(j,G)|0)+Math.imul(I,Z)|0,s=s+Math.imul(I,G)|0,n=n+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(R,Q)|0,s=s+Math.imul(R,ee)|0,n=n+Math.imul(C,re)|0,i=(i=i+Math.imul(C,ne)|0)+Math.imul(T,re)|0,s=s+Math.imul(T,ne)|0,n=n+Math.imul(k,se)|0,i=(i=i+Math.imul(k,oe)|0)+Math.imul(S,se)|0,s=s+Math.imul(S,oe)|0,n=n+Math.imul(w,le)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,le)|0,s=s+Math.imul(_,ce)|0,n=n+Math.imul(g,he)|0,i=(i=i+Math.imul(g,fe)|0)+Math.imul(y,he)|0,s=s+Math.imul(y,fe)|0;var Ce=(c+(n=n+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;c=((s=s+Math.imul(m,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,n=Math.imul(F,X),i=(i=Math.imul(F,K))+Math.imul(L,X)|0,s=Math.imul(L,K),n=n+Math.imul(P,Z)|0,i=(i=i+Math.imul(P,G)|0)+Math.imul(B,Z)|0,s=s+Math.imul(B,G)|0,n=n+Math.imul(j,Q)|0,i=(i=i+Math.imul(j,ee)|0)+Math.imul(I,Q)|0,s=s+Math.imul(I,ee)|0,n=n+Math.imul(A,re)|0,i=(i=i+Math.imul(A,ne)|0)+Math.imul(R,re)|0,s=s+Math.imul(R,ne)|0,n=n+Math.imul(C,se)|0,i=(i=i+Math.imul(C,oe)|0)+Math.imul(T,se)|0,s=s+Math.imul(T,oe)|0,n=n+Math.imul(k,le)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(S,le)|0,s=s+Math.imul(S,ce)|0,n=n+Math.imul(w,he)|0,i=(i=i+Math.imul(w,fe)|0)+Math.imul(_,he)|0,s=s+Math.imul(_,fe)|0;var Te=(c+(n=n+Math.imul(g,pe)|0)|0)+((8191&(i=(i=i+Math.imul(g,me)|0)+Math.imul(y,pe)|0))<<13)|0;c=((s=s+Math.imul(y,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,n=Math.imul(F,Z),i=(i=Math.imul(F,G))+Math.imul(L,Z)|0,s=Math.imul(L,G),n=n+Math.imul(P,Q)|0,i=(i=i+Math.imul(P,ee)|0)+Math.imul(B,Q)|0,s=s+Math.imul(B,ee)|0,n=n+Math.imul(j,re)|0,i=(i=i+Math.imul(j,ne)|0)+Math.imul(I,re)|0,s=s+Math.imul(I,ne)|0,n=n+Math.imul(A,se)|0,i=(i=i+Math.imul(A,oe)|0)+Math.imul(R,se)|0,s=s+Math.imul(R,oe)|0,n=n+Math.imul(C,le)|0,i=(i=i+Math.imul(C,ce)|0)+Math.imul(T,le)|0,s=s+Math.imul(T,ce)|0,n=n+Math.imul(k,he)|0,i=(i=i+Math.imul(k,fe)|0)+Math.imul(S,he)|0,s=s+Math.imul(S,fe)|0;var Ee=(c+(n=n+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(_,pe)|0))<<13)|0;c=((s=s+Math.imul(_,me)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,n=Math.imul(F,Q),i=(i=Math.imul(F,ee))+Math.imul(L,Q)|0,s=Math.imul(L,ee),n=n+Math.imul(P,re)|0,i=(i=i+Math.imul(P,ne)|0)+Math.imul(B,re)|0,s=s+Math.imul(B,ne)|0,n=n+Math.imul(j,se)|0,i=(i=i+Math.imul(j,oe)|0)+Math.imul(I,se)|0,s=s+Math.imul(I,oe)|0,n=n+Math.imul(A,le)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(R,le)|0,s=s+Math.imul(R,ce)|0,n=n+Math.imul(C,he)|0,i=(i=i+Math.imul(C,fe)|0)+Math.imul(T,he)|0,s=s+Math.imul(T,fe)|0;var Ae=(c+(n=n+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(S,pe)|0))<<13)|0;c=((s=s+Math.imul(S,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,n=Math.imul(F,re),i=(i=Math.imul(F,ne))+Math.imul(L,re)|0,s=Math.imul(L,ne),n=n+Math.imul(P,se)|0,i=(i=i+Math.imul(P,oe)|0)+Math.imul(B,se)|0,s=s+Math.imul(B,oe)|0,n=n+Math.imul(j,le)|0,i=(i=i+Math.imul(j,ce)|0)+Math.imul(I,le)|0,s=s+Math.imul(I,ce)|0,n=n+Math.imul(A,he)|0,i=(i=i+Math.imul(A,fe)|0)+Math.imul(R,he)|0,s=s+Math.imul(R,fe)|0;var Re=(c+(n=n+Math.imul(C,pe)|0)|0)+((8191&(i=(i=i+Math.imul(C,me)|0)+Math.imul(T,pe)|0))<<13)|0;c=((s=s+Math.imul(T,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,n=Math.imul(F,se),i=(i=Math.imul(F,oe))+Math.imul(L,se)|0,s=Math.imul(L,oe),n=n+Math.imul(P,le)|0,i=(i=i+Math.imul(P,ce)|0)+Math.imul(B,le)|0,s=s+Math.imul(B,ce)|0,n=n+Math.imul(j,he)|0,i=(i=i+Math.imul(j,fe)|0)+Math.imul(I,he)|0,s=s+Math.imul(I,fe)|0;var Oe=(c+(n=n+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(R,pe)|0))<<13)|0;c=((s=s+Math.imul(R,me)|0)+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,n=Math.imul(F,le),i=(i=Math.imul(F,ce))+Math.imul(L,le)|0,s=Math.imul(L,ce),n=n+Math.imul(P,he)|0,i=(i=i+Math.imul(P,fe)|0)+Math.imul(B,he)|0,s=s+Math.imul(B,fe)|0;var je=(c+(n=n+Math.imul(j,pe)|0)|0)+((8191&(i=(i=i+Math.imul(j,me)|0)+Math.imul(I,pe)|0))<<13)|0;c=((s=s+Math.imul(I,me)|0)+(i>>>13)|0)+(je>>>26)|0,je&=67108863,n=Math.imul(F,he),i=(i=Math.imul(F,fe))+Math.imul(L,he)|0,s=Math.imul(L,fe);var Ie=(c+(n=n+Math.imul(P,pe)|0)|0)+((8191&(i=(i=i+Math.imul(P,me)|0)+Math.imul(B,pe)|0))<<13)|0;c=((s=s+Math.imul(B,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863;var Ne=(c+(n=Math.imul(F,pe))|0)+((8191&(i=(i=Math.imul(F,me))+Math.imul(L,pe)|0))<<13)|0;return c=((s=Math.imul(L,me))+(i>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l[0]=be,l[1]=ge,l[2]=ye,l[3]=ve,l[4]=we,l[5]=_e,l[6]=xe,l[7]=ke,l[8]=Se,l[9]=Me,l[10]=Ce,l[11]=Te,l[12]=Ee,l[13]=Ae,l[14]=Re,l[15]=Oe,l[16]=je,l[17]=Ie,l[18]=Ne,0!==c&&(l[19]=c,r.length++),r};function g(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var n=0,i=0,s=0;s<r.length-1;s++){var o=i;i=0;for(var a=67108863&n,l=Math.min(s,t.length-1),c=Math.max(0,s-e.length+1);c<=l;c++){var u=s-c,h=(0|e.words[u])*(0|t.words[c]),f=67108863&h;a=67108863&(f=f+a|0),i+=(o=(o=o+(h/67108864|0)|0)+(f>>>26)|0)>>>26,o&=67108863}r.words[s]=a,n=o,o=i}return 0!==n?r.words[s]=n:r.length--,r._strip()}function y(e,t,r){return g(e,t,r)}function v(e,t){this.x=e,this.y=t}Math.imul||(b=m),s.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?b(this,e,t):r<63?m(this,e,t):r<1024?g(this,e,t):y(this,e,t)},v.prototype.makeRBT=function(e){for(var t=new Array(e),r=s.prototype._countBits(e)-1,n=0;n<e;n++)t[n]=this.revBin(n,r,e);return t},v.prototype.revBin=function(e,t,r){if(0===e||e===r-1)return e;for(var n=0,i=0;i<t;i++)n|=(1&e)<<t-i-1,e>>=1;return n},v.prototype.permute=function(e,t,r,n,i,s){for(var o=0;o<s;o++)n[o]=t[e[o]],i[o]=r[e[o]]},v.prototype.transform=function(e,t,r,n,i,s){this.permute(s,e,t,r,n,i);for(var o=1;o<i;o<<=1)for(var a=o<<1,l=Math.cos(2*Math.PI/a),c=Math.sin(2*Math.PI/a),u=0;u<i;u+=a)for(var h=l,f=c,d=0;d<o;d++){var p=r[u+d],m=n[u+d],b=r[u+d+o],g=n[u+d+o],y=h*b-f*g;g=h*g+f*b,b=y,r[u+d]=p+b,n[u+d]=m+g,r[u+d+o]=p-b,n[u+d+o]=m-g,d!==a&&(y=l*h-c*f,f=l*f+c*h,h=y)}},v.prototype.guessLen13b=function(e,t){var r=1|Math.max(t,e),n=1&r,i=0;for(r=r/2|0;r;r>>>=1)i++;return 1<<i+1+n},v.prototype.conjugate=function(e,t,r){if(!(r<=1))for(var n=0;n<r/2;n++){var i=e[n];e[n]=e[r-n-1],e[r-n-1]=i,i=t[n],t[n]=-t[r-n-1],t[r-n-1]=-i}},v.prototype.normalize13b=function(e,t){for(var r=0,n=0;n<t/2;n++){var i=8192*Math.round(e[2*n+1]/t)+Math.round(e[2*n]/t)+r;e[n]=67108863&i,r=i<67108864?0:i/67108864|0}return e},v.prototype.convert13b=function(e,t,r,i){for(var s=0,o=0;o<t;o++)s+=0|e[o],r[2*o]=8191&s,s>>>=13,r[2*o+1]=8191&s,s>>>=13;for(o=2*t;o<i;++o)r[o]=0;n(0===s),n(0==(-8192&s))},v.prototype.stub=function(e){for(var t=new Array(e),r=0;r<e;r++)t[r]=0;return t},v.prototype.mulp=function(e,t,r){var n=2*this.guessLen13b(e.length,t.length),i=this.makeRBT(n),s=this.stub(n),o=new Array(n),a=new Array(n),l=new Array(n),c=new Array(n),u=new Array(n),h=new Array(n),f=r.words;f.length=n,this.convert13b(e.words,e.length,o,n),this.convert13b(t.words,t.length,c,n),this.transform(o,s,a,l,n,i),this.transform(c,s,u,h,n,i);for(var d=0;d<n;d++){var p=a[d]*u[d]-l[d]*h[d];l[d]=a[d]*h[d]+l[d]*u[d],a[d]=p}return this.conjugate(a,l,n),this.transform(a,l,f,s,n,i),this.conjugate(f,s,n),this.normalize13b(f,n),r.negative=e.negative^t.negative,r.length=e.length+t.length,r._strip()},s.prototype.mul=function(e){var t=new s(null);return t.words=new Array(this.length+e.length),this.mulTo(e,t)},s.prototype.mulf=function(e){var t=new s(null);return t.words=new Array(this.length+e.length),y(this,e,t)},s.prototype.imul=function(e){return this.clone().mulTo(e,this)},s.prototype.imuln=function(e){var t=e<0;t&&(e=-e),n(\"number\"==typeof e),n(e<67108864);for(var r=0,i=0;i<this.length;i++){var s=(0|this.words[i])*e,o=(67108863&s)+(67108863&r);r>>=26,r+=s/67108864|0,r+=o>>>26,this.words[i]=67108863&o}return 0!==r&&(this.words[i]=r,this.length++),t?this.ineg():this},s.prototype.muln=function(e){return this.clone().imuln(e)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r<t.length;r++){var n=r/26|0,i=r%26;t[r]=e.words[n]>>>i&1}return t}(e);if(0===t.length)return new s(1);for(var r=this,n=0;n<t.length&&0===t[n];n++,r=r.sqr());if(++n<t.length)for(var i=r.sqr();n<t.length;n++,i=i.sqr())0!==t[n]&&(r=r.mul(i));return r},s.prototype.iushln=function(e){n(\"number\"==typeof e&&e>=0);var t,r=e%26,i=(e-r)/26,s=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t<this.length;t++){var a=this.words[t]&s,l=(0|this.words[t])-a<<r;this.words[t]=l|o,o=a>>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t<i;t++)this.words[t]=0;this.length+=i}return this._strip()},s.prototype.ishln=function(e){return n(0===this.negative),this.iushln(e)},s.prototype.iushrn=function(e,t,r){var i;n(\"number\"==typeof e&&e>=0),i=t?(t-t%26)/26:0;var s=e%26,o=Math.min((e-s)/26,this.length),a=67108863^67108863>>>s<<s,l=r;if(i-=o,i=Math.max(0,i),l){for(var c=0;c<o;c++)l.words[c]=this.words[c];l.length=o}if(0===o);else if(this.length>o)for(this.length-=o,c=0;c<this.length;c++)this.words[c]=this.words[c+o];else this.words[0]=0,this.length=1;var u=0;for(c=this.length-1;c>=0&&(0!==u||c>=i);c--){var h=0|this.words[c];this.words[c]=u<<26-s|h>>>s,u=h&a}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},s.prototype.ishrn=function(e,t,r){return n(0===this.negative),this.iushrn(e,t,r)},s.prototype.shln=function(e){return this.clone().ishln(e)},s.prototype.ushln=function(e){return this.clone().iushln(e)},s.prototype.shrn=function(e){return this.clone().ishrn(e)},s.prototype.ushrn=function(e){return this.clone().iushrn(e)},s.prototype.testn=function(e){n(\"number\"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,i=1<<t;return!(this.length<=r)&&!!(this.words[r]&i)},s.prototype.imaskn=function(e){n(\"number\"==typeof e&&e>=0);var t=e%26,r=(e-t)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var i=67108863^67108863>>>t<<t;this.words[this.length-1]&=i}return this._strip()},s.prototype.maskn=function(e){return this.clone().imaskn(e)},s.prototype.iaddn=function(e){return n(\"number\"==typeof e),n(e<67108864),e<0?this.isubn(-e):0!==this.negative?1===this.length&&(0|this.words[0])<=e?(this.words[0]=e-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},s.prototype._iaddn=function(e){this.words[0]+=e;for(var t=0;t<this.length&&this.words[t]>=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},s.prototype.isubn=function(e){if(n(\"number\"==typeof e),n(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t<this.length&&this.words[t]<0;t++)this.words[t]+=67108864,this.words[t+1]-=1;return this._strip()},s.prototype.addn=function(e){return this.clone().iaddn(e)},s.prototype.subn=function(e){return this.clone().isubn(e)},s.prototype.iabs=function(){return this.negative=0,this},s.prototype.abs=function(){return this.clone().iabs()},s.prototype._ishlnsubmul=function(e,t,r){var i,s,o=e.length+r;this._expand(o);var a=0;for(i=0;i<e.length;i++){s=(0|this.words[i+r])+a;var l=(0|e.words[i])*t;a=((s-=67108863&l)>>26)-(l/67108864|0),this.words[i+r]=67108863&s}for(;i<this.length-r;i++)a=(s=(0|this.words[i+r])+a)>>26,this.words[i+r]=67108863&s;if(0===a)return this._strip();for(n(-1===a),a=0,i=0;i<this.length;i++)a=(s=-(0|this.words[i])+a)>>26,this.words[i]=67108863&s;return this.negative=1,this._strip()},s.prototype._wordDiv=function(e,t){var r=(this.length,e.length),n=this.clone(),i=e,o=0|i.words[i.length-1];0!==(r=26-this._countBits(o))&&(i=i.ushln(r),n.iushln(r),o=0|i.words[i.length-1]);var a,l=n.length-i.length;if(\"mod\"!==t){(a=new s(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c<a.length;c++)a.words[c]=0}var u=n.clone()._ishlnsubmul(i,1,l);0===u.negative&&(n=u,a&&(a.words[l]=1));for(var h=l-1;h>=0;h--){var f=67108864*(0|n.words[i.length+h])+(0|n.words[i.length+h-1]);for(f=Math.min(f/o|0,67108863),n._ishlnsubmul(i,f,h);0!==n.negative;)f--,n.negative=0,n._ishlnsubmul(i,1,h),n.isZero()||(n.negative^=1);a&&(a.words[h]=f)}return a&&a._strip(),n._strip(),\"div\"!==t&&0!==r&&n.iushrn(r),{div:a||null,mod:n}},s.prototype.divmod=function(e,t,r){return n(!e.isZero()),this.isZero()?{div:new s(0),mod:new s(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),\"mod\"!==t&&(i=a.div.neg()),\"div\"!==t&&(o=a.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:i,mod:o}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),\"mod\"!==t&&(i=a.div.neg()),{div:i,mod:a.mod}):0!=(this.negative&e.negative)?(a=this.neg().divmod(e.neg(),t),\"div\"!==t&&(o=a.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:a.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new s(0),mod:this}:1===e.length?\"div\"===t?{div:this.divn(e.words[0]),mod:null}:\"mod\"===t?{div:null,mod:new s(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new s(this.modrn(e.words[0]))}:this._wordDiv(e,t);var i,o,a},s.prototype.div=function(e){return this.divmod(e,\"div\",!1).div},s.prototype.mod=function(e){return this.divmod(e,\"mod\",!1).mod},s.prototype.umod=function(e){return this.divmod(e,\"mod\",!0).mod},s.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,n=e.ushrn(1),i=e.andln(1),s=r.cmp(n);return s<0||1===i&&0===s?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},s.prototype.modrn=function(e){var t=e<0;t&&(e=-e),n(e<=67108863);for(var r=(1<<26)%e,i=0,s=this.length-1;s>=0;s--)i=(r*i+(0|this.words[s]))%e;return t?-i:i},s.prototype.modn=function(e){return this.modrn(e)},s.prototype.idivn=function(e){var t=e<0;t&&(e=-e),n(e<=67108863);for(var r=0,i=this.length-1;i>=0;i--){var s=(0|this.words[i])+67108864*r;this.words[i]=s/e|0,r=s%e}return this._strip(),t?this.ineg():this},s.prototype.divn=function(e){return this.clone().idivn(e)},s.prototype.egcd=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new s(1),o=new s(0),a=new s(0),l=new s(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var u=r.clone(),h=t.clone();!t.isZero();){for(var f=0,d=1;0==(t.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(t.iushrn(f);f-- >0;)(i.isOdd()||o.isOdd())&&(i.iadd(u),o.isub(h)),i.iushrn(1),o.iushrn(1);for(var p=0,m=1;0==(r.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(u),l.isub(h)),a.iushrn(1),l.iushrn(1);t.cmp(r)>=0?(t.isub(r),i.isub(a),o.isub(l)):(r.isub(t),a.isub(i),l.isub(o))}return{a:a,b:l,gcd:r.iushln(c)}},s.prototype._invmp=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,o=new s(1),a=new s(0),l=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,u=1;0==(t.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var h=0,f=1;0==(r.words[0]&f)&&h<26;++h,f<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(a)):(r.isub(t),a.isub(o))}return(i=0===t.cmpn(1)?o:a).cmpn(0)<0&&i.iadd(e),i},s.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var n=0;t.isEven()&&r.isEven();n++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=t.cmp(r);if(i<0){var s=t;t=r,r=s}else if(0===i||0===r.cmpn(1))break;t.isub(r)}return r.iushln(n)},s.prototype.invm=function(e){return this.egcd(e).a.umod(e)},s.prototype.isEven=function(){return 0==(1&this.words[0])},s.prototype.isOdd=function(){return 1==(1&this.words[0])},s.prototype.andln=function(e){return this.words[0]&e},s.prototype.bincn=function(e){n(\"number\"==typeof e);var t=e%26,r=(e-t)/26,i=1<<t;if(this.length<=r)return this._expand(r+1),this.words[r]|=i,this;for(var s=i,o=r;0!==s&&o<this.length;o++){var a=0|this.words[o];s=(a+=s)>>>26,a&=67108863,this.words[o]=a}return 0!==s&&(this.words[o]=s,this.length++),this},s.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},s.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this._strip(),this.length>1)t=1;else{r&&(e=-e),n(e<=67108863,\"Number is too big\");var i=0|this.words[0];t=i===e?0:i<e?-1:1}return 0!==this.negative?0|-t:t},s.prototype.cmp=function(e){if(0!==this.negative&&0===e.negative)return-1;if(0===this.negative&&0!==e.negative)return 1;var t=this.ucmp(e);return 0!==this.negative?0|-t:t},s.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var t=0,r=this.length-1;r>=0;r--){var n=0|this.words[r],i=0|e.words[r];if(n!==i){n<i?t=-1:n>i&&(t=1);break}}return t},s.prototype.gtn=function(e){return 1===this.cmpn(e)},s.prototype.gt=function(e){return 1===this.cmp(e)},s.prototype.gten=function(e){return this.cmpn(e)>=0},s.prototype.gte=function(e){return this.cmp(e)>=0},s.prototype.ltn=function(e){return-1===this.cmpn(e)},s.prototype.lt=function(e){return-1===this.cmp(e)},s.prototype.lten=function(e){return this.cmpn(e)<=0},s.prototype.lte=function(e){return this.cmp(e)<=0},s.prototype.eqn=function(e){return 0===this.cmpn(e)},s.prototype.eq=function(e){return 0===this.cmp(e)},s.red=function(e){return new C(e)},s.prototype.toRed=function(e){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),e.convertTo(this)._forceRed(e)},s.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},s.prototype._forceRed=function(e){return this.red=e,this},s.prototype.forceRed=function(e){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(e)},s.prototype.redAdd=function(e){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,e)},s.prototype.redIAdd=function(e){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,e)},s.prototype.redSub=function(e){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,e)},s.prototype.redISub=function(e){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,e)},s.prototype.redShl=function(e){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,e)},s.prototype.redMul=function(e){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,e),this.red.mul(this,e)},s.prototype.redIMul=function(e){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,e),this.red.imul(this,e)},s.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(e){return n(this.red&&!e.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,e)};var w={k256:null,p224:null,p192:null,p25519:null};function _(e,t){this.name=e,this.p=new s(t,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function x(){_.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function k(){_.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function S(){_.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function M(){_.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function C(e){if(\"string\"==typeof e){var t=s._prime(e);this.m=t.p,this.prime=t}else n(e.gtn(1),\"modulus must be greater than 1\"),this.m=e,this.prime=null}function T(e){C.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}_.prototype._tmp=function(){var e=new s(null);return e.words=new Array(Math.ceil(this.n/13)),e},_.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var n=t<this.n?-1:r.ucmp(this.p);return 0===n?(r.words[0]=0,r.length=1):n>0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},_.prototype.split=function(e,t){e.iushrn(this.n,0,t)},_.prototype.imulK=function(e){return e.imul(this.k)},i(x,_),x.prototype.split=function(e,t){for(var r=Math.min(e.length,9),n=0;n<r;n++)t.words[n]=e.words[n];if(t.length=r,e.length<=9)return e.words[0]=0,void(e.length=1);var i=e.words[9];for(t.words[t.length++]=4194303&i,n=10;n<e.length;n++){var s=0|e.words[n];e.words[n-10]=(4194303&s)<<4|i>>>22,i=s}i>>>=22,e.words[n-10]=i,0===i&&e.length>10?e.length-=10:e.length-=9},x.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r<e.length;r++){var n=0|e.words[r];t+=977*n,e.words[r]=67108863&t,t=64*n+(t/67108864|0)}return 0===e.words[e.length-1]&&(e.length--,0===e.words[e.length-1]&&e.length--),e},i(k,_),i(S,_),i(M,_),M.prototype.imulK=function(e){for(var t=0,r=0;r<e.length;r++){var n=19*(0|e.words[r])+t,i=67108863&n;n>>>=26,e.words[r]=i,t=n}return 0!==t&&(e.words[e.length++]=t),e},s._prime=function(e){if(w[e])return w[e];var t;if(\"k256\"===e)t=new x;else if(\"p224\"===e)t=new k;else if(\"p192\"===e)t=new S;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new M}return w[e]=t,t},C.prototype._verify1=function(e){n(0===e.negative,\"red works only with positives\"),n(e.red,\"red works only with red numbers\")},C.prototype._verify2=function(e,t){n(0==(e.negative|t.negative),\"red works only with positives\"),n(e.red&&e.red===t.red,\"red works only with red numbers\")},C.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(u(e,e.umod(this.m)._forceRed(this)),e)},C.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},C.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},C.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},C.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},C.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},C.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},C.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},C.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},C.prototype.isqr=function(e){return this.imul(e,e.clone())},C.prototype.sqr=function(e){return this.mul(e,e)},C.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(n(t%2==1),3===t){var r=this.m.add(new s(1)).iushrn(2);return this.pow(e,r)}for(var i=this.m.subn(1),o=0;!i.isZero()&&0===i.andln(1);)o++,i.iushrn(1);n(!i.isZero());var a=new s(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new s(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var h=this.pow(u,i),f=this.pow(e,i.addn(1).iushrn(1)),d=this.pow(e,i),p=o;0!==d.cmp(a);){for(var m=d,b=0;0!==m.cmp(a);b++)m=m.redSqr();n(b<p);var g=this.pow(h,new s(1).iushln(p-b-1));f=f.redMul(g),h=g.redSqr(),d=d.redMul(h),p=b}return f},C.prototype.invm=function(e){var t=e._invmp(this.m);return 0!==t.negative?(t.negative=0,this.imod(t).redNeg()):this.imod(t)},C.prototype.pow=function(e,t){if(t.isZero())return new s(1).toRed(this);if(0===t.cmpn(1))return e.clone();var r=new Array(16);r[0]=new s(1).toRed(this),r[1]=e;for(var n=2;n<r.length;n++)r[n]=this.mul(r[n-1],e);var i=r[0],o=0,a=0,l=t.bitLength()%26;for(0===l&&(l=26),n=t.length-1;n>=0;n--){for(var c=t.words[n],u=l-1;u>=0;u--){var h=c>>u&1;i!==r[0]&&(i=this.sqr(i)),0!==h||0!==o?(o<<=1,o|=h,(4===++a||0===n&&0===u)&&(i=this.mul(i,r[o]),a=0,o=0)):a=0}l=26}return i},C.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},C.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},s.mont=function(e){return new T(e)},i(T,C),T.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},T.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},T.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},T.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new s(0)._forceRed(this);var r=e.mul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},T.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===t||t)},{buffer:188}],187:[function(e,t,r){\"use strict\";var n;function i(e){this.rand=e}if(t.exports=function(e){return n||(n=new i(null)),n.generate(e)},t.exports.Rand=i,i.prototype.generate=function(e){return this._rand(e)},i.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),r=0;r<t.length;r++)t[r]=this.rand.getByte();return t},\"object\"==typeof self)self.crypto&&self.crypto.getRandomValues?i.prototype._rand=function(e){var t=new Uint8Array(e);return self.crypto.getRandomValues(t),t}:self.msCrypto&&self.msCrypto.getRandomValues?i.prototype._rand=function(e){var t=new Uint8Array(e);return self.msCrypto.getRandomValues(t),t}:\"object\"==typeof window&&(i.prototype._rand=function(){throw new Error(\"Not implemented yet\")});else try{var s=e(\"crypto\");if(\"function\"!=typeof s.randomBytes)throw new Error(\"Not supported\");i.prototype._rand=function(e){return s.randomBytes(e)}}catch(e){}},{crypto:188}],188:[function(e,t,r){},{}],189:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer;function i(e){n.isBuffer(e)||(e=n.from(e));for(var t=e.length/4|0,r=new Array(t),i=0;i<t;i++)r[i]=e.readUInt32BE(4*i);return r}function s(e){for(;0<e.length;e++)e[0]=0}function o(e,t,r,n,i){for(var s,o,a,l,c=r[0],u=r[1],h=r[2],f=r[3],d=e[0]^t[0],p=e[1]^t[1],m=e[2]^t[2],b=e[3]^t[3],g=4,y=1;y<i;y++)s=c[d>>>24]^u[p>>>16&255]^h[m>>>8&255]^f[255&b]^t[g++],o=c[p>>>24]^u[m>>>16&255]^h[b>>>8&255]^f[255&d]^t[g++],a=c[m>>>24]^u[b>>>16&255]^h[d>>>8&255]^f[255&p]^t[g++],l=c[b>>>24]^u[d>>>16&255]^h[p>>>8&255]^f[255&m]^t[g++],d=s,p=o,m=a,b=l;return s=(n[d>>>24]<<24|n[p>>>16&255]<<16|n[m>>>8&255]<<8|n[255&b])^t[g++],o=(n[p>>>24]<<24|n[m>>>16&255]<<16|n[b>>>8&255]<<8|n[255&d])^t[g++],a=(n[m>>>24]<<24|n[b>>>16&255]<<16|n[d>>>8&255]<<8|n[255&p])^t[g++],l=(n[b>>>24]<<24|n[d>>>16&255]<<16|n[p>>>8&255]<<8|n[255&m])^t[g++],[s>>>=0,o>>>=0,a>>>=0,l>>>=0]}var a=[0,1,2,4,8,16,32,64,128,27,54],l=function(){for(var e=new Array(256),t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;for(var r=[],n=[],i=[[],[],[],[]],s=[[],[],[],[]],o=0,a=0,l=0;l<256;++l){var c=a^a<<1^a<<2^a<<3^a<<4;c=c>>>8^255&c^99,r[o]=c,n[c]=o;var u=e[o],h=e[u],f=e[h],d=257*e[c]^16843008*c;i[0][o]=d<<24|d>>>8,i[1][o]=d<<16|d>>>16,i[2][o]=d<<8|d>>>24,i[3][o]=d,d=16843009*f^65537*h^257*u^16843008*o,s[0][c]=d<<24|d>>>8,s[1][c]=d<<16|d>>>16,s[2][c]=d<<8|d>>>24,s[3][c]=d,0===o?o=a=1:(o=u^e[e[e[f^u]]],a^=e[e[a]])}return{SBOX:r,INV_SBOX:n,SUB_MIX:i,INV_SUB_MIX:s}}();function c(e){this._key=i(e),this._reset()}c.blockSize=16,c.keySize=32,c.prototype.blockSize=c.blockSize,c.prototype.keySize=c.keySize,c.prototype._reset=function(){for(var e=this._key,t=e.length,r=t+6,n=4*(r+1),i=[],s=0;s<t;s++)i[s]=e[s];for(s=t;s<n;s++){var o=i[s-1];s%t==0?(o=o<<8|o>>>24,o=l.SBOX[o>>>24]<<24|l.SBOX[o>>>16&255]<<16|l.SBOX[o>>>8&255]<<8|l.SBOX[255&o],o^=a[s/t|0]<<24):t>6&&s%t==4&&(o=l.SBOX[o>>>24]<<24|l.SBOX[o>>>16&255]<<16|l.SBOX[o>>>8&255]<<8|l.SBOX[255&o]),i[s]=i[s-t]^o}for(var c=[],u=0;u<n;u++){var h=n-u,f=i[h-(u%4?0:4)];c[u]=u<4||h<=4?f:l.INV_SUB_MIX[0][l.SBOX[f>>>24]]^l.INV_SUB_MIX[1][l.SBOX[f>>>16&255]]^l.INV_SUB_MIX[2][l.SBOX[f>>>8&255]]^l.INV_SUB_MIX[3][l.SBOX[255&f]]}this._nRounds=r,this._keySchedule=i,this._invKeySchedule=c},c.prototype.encryptBlockRaw=function(e){return o(e=i(e),this._keySchedule,l.SUB_MIX,l.SBOX,this._nRounds)},c.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),r=n.allocUnsafe(16);return r.writeUInt32BE(t[0],0),r.writeUInt32BE(t[1],4),r.writeUInt32BE(t[2],8),r.writeUInt32BE(t[3],12),r},c.prototype.decryptBlock=function(e){var t=(e=i(e))[1];e[1]=e[3],e[3]=t;var r=o(e,this._invKeySchedule,l.INV_SUB_MIX,l.INV_SBOX,this._nRounds),s=n.allocUnsafe(16);return s.writeUInt32BE(r[0],0),s.writeUInt32BE(r[3],4),s.writeUInt32BE(r[2],8),s.writeUInt32BE(r[1],12),s},c.prototype.scrub=function(){s(this._keySchedule),s(this._invKeySchedule),s(this._key)},t.exports.AES=c},{\"safe-buffer\":494}],190:[function(e,t,r){\"use strict\";var n=e(\"./aes\"),i=e(\"safe-buffer\").Buffer,s=e(\"cipher-base\"),o=e(\"inherits\"),a=e(\"./ghash\"),l=e(\"buffer-xor\"),c=e(\"./incr32\");function u(e,t,r,o){s.call(this);var l=i.alloc(4,0);this._cipher=new n.AES(t);var u=this._cipher.encryptBlock(l);this._ghash=new a(u),r=function(e,t,r){if(12===t.length)return e._finID=i.concat([t,i.from([0,0,0,1])]),i.concat([t,i.from([0,0,0,2])]);var n=new a(r),s=t.length,o=s%16;n.update(t),o&&(o=16-o,n.update(i.alloc(o,0))),n.update(i.alloc(8,0));var l=8*s,u=i.alloc(8);u.writeUIntBE(l,0,8),n.update(u),e._finID=n.state;var h=i.from(e._finID);return c(h),h}(this,r,u),this._prev=i.from(r),this._cache=i.allocUnsafe(0),this._secCache=i.allocUnsafe(0),this._decrypt=o,this._alen=0,this._len=0,this._mode=e,this._authTag=null,this._called=!1}o(u,s),u.prototype._update=function(e){if(!this._called&&this._alen){var t=16-this._alen%16;t<16&&(t=i.alloc(t,0),this._ghash.update(t))}this._called=!0;var r=this._mode.encrypt(this,e);return this._decrypt?this._ghash.update(e):this._ghash.update(r),this._len+=e.length,r},u.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error(\"Unsupported state or unable to authenticate data\");var e=l(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(e,t){var r=0;e.length!==t.length&&r++;for(var n=Math.min(e.length,t.length),i=0;i<n;++i)r+=e[i]^t[i];return r}(e,this._authTag))throw new Error(\"Unsupported state or unable to authenticate data\");this._authTag=e,this._cipher.scrub()},u.prototype.getAuthTag=function(){if(this._decrypt||!i.isBuffer(this._authTag))throw new Error(\"Attempting to get auth tag in unsupported state\");return this._authTag},u.prototype.setAuthTag=function(e){if(!this._decrypt)throw new Error(\"Attempting to set auth tag in unsupported state\");this._authTag=e},u.prototype.setAAD=function(e){if(this._called)throw new Error(\"Attempting to set AAD in unsupported state\");this._ghash.update(e),this._alen+=e.length},t.exports=u},{\"./aes\":189,\"./ghash\":194,\"./incr32\":195,\"buffer-xor\":219,\"cipher-base\":221,inherits:440,\"safe-buffer\":494}],191:[function(e,t,r){\"use strict\";var n=e(\"./encrypter\"),i=e(\"./decrypter\"),s=e(\"./modes/list.json\");r.createCipher=r.Cipher=n.createCipher,r.createCipheriv=r.Cipheriv=n.createCipheriv,r.createDecipher=r.Decipher=i.createDecipher,r.createDecipheriv=r.Decipheriv=i.createDecipheriv,r.listCiphers=r.getCiphers=function(){return Object.keys(s)}},{\"./decrypter\":192,\"./encrypter\":193,\"./modes/list.json\":203}],192:[function(e,t,r){\"use strict\";var n=e(\"./authCipher\"),i=e(\"safe-buffer\").Buffer,s=e(\"./modes\"),o=e(\"./streamCipher\"),a=e(\"cipher-base\"),l=e(\"./aes\"),c=e(\"evp_bytestokey\");function u(e,t,r){a.call(this),this._cache=new h,this._last=void 0,this._cipher=new l.AES(t),this._prev=i.from(r),this._mode=e,this._autopadding=!0}function h(){this.cache=i.allocUnsafe(0)}function f(e,t,r){var a=s[e.toLowerCase()];if(!a)throw new TypeError(\"invalid suite type\");if(\"string\"==typeof r&&(r=i.from(r)),\"GCM\"!==a.mode&&r.length!==a.iv)throw new TypeError(\"invalid iv length \"+r.length);if(\"string\"==typeof t&&(t=i.from(t)),t.length!==a.key/8)throw new TypeError(\"invalid key length \"+t.length);return\"stream\"===a.type?new o(a.module,t,r,!0):\"auth\"===a.type?new n(a.module,t,r,!0):new u(a.module,t,r)}e(\"inherits\")(u,a),u.prototype._update=function(e){var t,r;this._cache.add(e);for(var n=[];t=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,t),n.push(r);return i.concat(n)},u.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return function(e){var t=e[15];if(t<1||t>16)throw new Error(\"unable to decrypt data\");var r=-1;for(;++r<t;)if(e[r+(16-t)]!==t)throw new Error(\"unable to decrypt data\");if(16===t)return;return e.slice(0,16-t)}(this._mode.decrypt(this,e));if(e)throw new Error(\"data not multiple of block length\")},u.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this},h.prototype.add=function(e){this.cache=i.concat([this.cache,e])},h.prototype.get=function(e){var t;if(e){if(this.cache.length>16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null},h.prototype.flush=function(){if(this.cache.length)return this.cache},r.createDecipher=function(e,t){var r=s[e.toLowerCase()];if(!r)throw new TypeError(\"invalid suite type\");var n=c(t,!1,r.key,r.iv);return f(e,n.key,n.iv)},r.createDecipheriv=f},{\"./aes\":189,\"./authCipher\":190,\"./modes\":202,\"./streamCipher\":205,\"cipher-base\":221,evp_bytestokey:423,inherits:440,\"safe-buffer\":494}],193:[function(e,t,r){\"use strict\";var n=e(\"./modes\"),i=e(\"./authCipher\"),s=e(\"safe-buffer\").Buffer,o=e(\"./streamCipher\"),a=e(\"cipher-base\"),l=e(\"./aes\"),c=e(\"evp_bytestokey\");function u(e,t,r){a.call(this),this._cache=new f,this._cipher=new l.AES(t),this._prev=s.from(r),this._mode=e,this._autopadding=!0}e(\"inherits\")(u,a),u.prototype._update=function(e){var t,r;this._cache.add(e);for(var n=[];t=this._cache.get();)r=this._mode.encrypt(this,t),n.push(r);return s.concat(n)};var h=s.alloc(16,16);function f(){this.cache=s.allocUnsafe(0)}function d(e,t,r){var a=n[e.toLowerCase()];if(!a)throw new TypeError(\"invalid suite type\");if(\"string\"==typeof t&&(t=s.from(t)),t.length!==a.key/8)throw new TypeError(\"invalid key length \"+t.length);if(\"string\"==typeof r&&(r=s.from(r)),\"GCM\"!==a.mode&&r.length!==a.iv)throw new TypeError(\"invalid iv length \"+r.length);return\"stream\"===a.type?new o(a.module,t,r):\"auth\"===a.type?new i(a.module,t,r):new u(a.module,t,r)}u.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(h))throw this._cipher.scrub(),new Error(\"data not multiple of block length\")},u.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this},f.prototype.add=function(e){this.cache=s.concat([this.cache,e])},f.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null},f.prototype.flush=function(){for(var e=16-this.cache.length,t=s.allocUnsafe(e),r=-1;++r<e;)t.writeUInt8(e,r);return s.concat([this.cache,t])},r.createCipheriv=d,r.createCipher=function(e,t){var r=n[e.toLowerCase()];if(!r)throw new TypeError(\"invalid suite type\");var i=c(t,!1,r.key,r.iv);return d(e,i.key,i.iv)}},{\"./aes\":189,\"./authCipher\":190,\"./modes\":202,\"./streamCipher\":205,\"cipher-base\":221,evp_bytestokey:423,inherits:440,\"safe-buffer\":494}],194:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer,i=n.alloc(16,0);function s(e){var t=n.allocUnsafe(16);return t.writeUInt32BE(e[0]>>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function o(e){this.h=e,this.state=n.alloc(16,0),this.cache=n.allocUnsafe(0)}o.prototype.ghash=function(e){for(var t=-1;++t<e.length;)this.state[t]^=e[t];this._multiply()},o.prototype._multiply=function(){for(var e,t,r,n=[(e=this.h).readUInt32BE(0),e.readUInt32BE(4),e.readUInt32BE(8),e.readUInt32BE(12)],i=[0,0,0,0],o=-1;++o<128;){for(0!=(this.state[~~(o/8)]&1<<7-o%8)&&(i[0]^=n[0],i[1]^=n[1],i[2]^=n[2],i[3]^=n[3]),r=0!=(1&n[3]),t=3;t>0;t--)n[t]=n[t]>>>1|(1&n[t-1])<<31;n[0]=n[0]>>>1,r&&(n[0]=n[0]^225<<24)}this.state=s(i)},o.prototype.update=function(e){var t;for(this.cache=n.concat([this.cache,e]);this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)},o.prototype.final=function(e,t){return this.cache.length&&this.ghash(n.concat([this.cache,i],16)),this.ghash(s([0,e,0,t])),this.state},t.exports=o},{\"safe-buffer\":494}],195:[function(e,t,r){\"use strict\";t.exports=function(e){for(var t,r=e.length;r--;){if(255!==(t=e.readUInt8(r))){t++,e.writeUInt8(t,r);break}e.writeUInt8(0,r)}}},{}],196:[function(e,t,r){\"use strict\";var n=e(\"buffer-xor\");r.encrypt=function(e,t){var r=n(t,e._prev);return e._prev=e._cipher.encryptBlock(r),e._prev},r.decrypt=function(e,t){var r=e._prev;e._prev=t;var i=e._cipher.decryptBlock(t);return n(i,r)}},{\"buffer-xor\":219}],197:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer,i=e(\"buffer-xor\");function s(e,t,r){var s=t.length,o=i(t,e._cache);return e._cache=e._cache.slice(s),e._prev=n.concat([e._prev,r?t:o]),o}r.encrypt=function(e,t,r){for(var i,o=n.allocUnsafe(0);t.length;){if(0===e._cache.length&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=n.allocUnsafe(0)),!(e._cache.length<=t.length)){o=n.concat([o,s(e,t,r)]);break}i=e._cache.length,o=n.concat([o,s(e,t.slice(0,i),r)]),t=t.slice(i)}return o}},{\"buffer-xor\":219,\"safe-buffer\":494}],198:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer;function i(e,t,r){for(var n,i,o=-1,a=0;++o<8;)n=t&1<<7-o?128:0,a+=(128&(i=e._cipher.encryptBlock(e._prev)[0]^n))>>o%8,e._prev=s(e._prev,r?n:i);return a}function s(e,t){var r=e.length,i=-1,s=n.allocUnsafe(e.length);for(e=n.concat([e,n.from([t])]);++i<r;)s[i]=e[i]<<1|e[i+1]>>7;return s}r.encrypt=function(e,t,r){for(var s=t.length,o=n.allocUnsafe(s),a=-1;++a<s;)o[a]=i(e,t[a],r);return o}},{\"safe-buffer\":494}],199:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer;function i(e,t,r){var i=e._cipher.encryptBlock(e._prev)[0]^t;return e._prev=n.concat([e._prev.slice(1),n.from([r?t:i])]),i}r.encrypt=function(e,t,r){for(var s=t.length,o=n.allocUnsafe(s),a=-1;++a<s;)o[a]=i(e,t[a],r);return o}},{\"safe-buffer\":494}],200:[function(e,t,r){\"use strict\";var n=e(\"buffer-xor\"),i=e(\"safe-buffer\").Buffer,s=e(\"../incr32\");function o(e){var t=e._cipher.encryptBlockRaw(e._prev);return s(e._prev),t}r.encrypt=function(e,t){var r=Math.ceil(t.length/16),s=e._cache.length;e._cache=i.concat([e._cache,i.allocUnsafe(16*r)]);for(var a=0;a<r;a++){var l=o(e),c=s+16*a;e._cache.writeUInt32BE(l[0],c+0),e._cache.writeUInt32BE(l[1],c+4),e._cache.writeUInt32BE(l[2],c+8),e._cache.writeUInt32BE(l[3],c+12)}var u=e._cache.slice(0,t.length);return e._cache=e._cache.slice(t.length),n(t,u)}},{\"../incr32\":195,\"buffer-xor\":219,\"safe-buffer\":494}],201:[function(e,t,r){\"use strict\";r.encrypt=function(e,t){return e._cipher.encryptBlock(t)},r.decrypt=function(e,t){return e._cipher.decryptBlock(t)}},{}],202:[function(e,t,r){\"use strict\";var n={ECB:e(\"./ecb\"),CBC:e(\"./cbc\"),CFB:e(\"./cfb\"),CFB8:e(\"./cfb8\"),CFB1:e(\"./cfb1\"),OFB:e(\"./ofb\"),CTR:e(\"./ctr\"),GCM:e(\"./ctr\")},i=e(\"./list.json\");for(var s in i)i[s].module=n[i[s].mode];t.exports=i},{\"./cbc\":196,\"./cfb\":197,\"./cfb1\":198,\"./cfb8\":199,\"./ctr\":200,\"./ecb\":201,\"./list.json\":203,\"./ofb\":204}],203:[function(e,t,r){t.exports={\"aes-128-ecb\":{cipher:\"AES\",key:128,iv:0,mode:\"ECB\",type:\"block\"},\"aes-192-ecb\":{cipher:\"AES\",key:192,iv:0,mode:\"ECB\",type:\"block\"},\"aes-256-ecb\":{cipher:\"AES\",key:256,iv:0,mode:\"ECB\",type:\"block\"},\"aes-128-cbc\":{cipher:\"AES\",key:128,iv:16,mode:\"CBC\",type:\"block\"},\"aes-192-cbc\":{cipher:\"AES\",key:192,iv:16,mode:\"CBC\",type:\"block\"},\"aes-256-cbc\":{cipher:\"AES\",key:256,iv:16,mode:\"CBC\",type:\"block\"},aes128:{cipher:\"AES\",key:128,iv:16,mode:\"CBC\",type:\"block\"},aes192:{cipher:\"AES\",key:192,iv:16,mode:\"CBC\",type:\"block\"},aes256:{cipher:\"AES\",key:256,iv:16,mode:\"CBC\",type:\"block\"},\"aes-128-cfb\":{cipher:\"AES\",key:128,iv:16,mode:\"CFB\",type:\"stream\"},\"aes-192-cfb\":{cipher:\"AES\",key:192,iv:16,mode:\"CFB\",type:\"stream\"},\"aes-256-cfb\":{cipher:\"AES\",key:256,iv:16,mode:\"CFB\",type:\"stream\"},\"aes-128-cfb8\":{cipher:\"AES\",key:128,iv:16,mode:\"CFB8\",type:\"stream\"},\"aes-192-cfb8\":{cipher:\"AES\",key:192,iv:16,mode:\"CFB8\",type:\"stream\"},\"aes-256-cfb8\":{cipher:\"AES\",key:256,iv:16,mode:\"CFB8\",type:\"stream\"},\"aes-128-cfb1\":{cipher:\"AES\",key:128,iv:16,mode:\"CFB1\",type:\"stream\"},\"aes-192-cfb1\":{cipher:\"AES\",key:192,iv:16,mode:\"CFB1\",type:\"stream\"},\"aes-256-cfb1\":{cipher:\"AES\",key:256,iv:16,mode:\"CFB1\",type:\"stream\"},\"aes-128-ofb\":{cipher:\"AES\",key:128,iv:16,mode:\"OFB\",type:\"stream\"},\"aes-192-ofb\":{cipher:\"AES\",key:192,iv:16,mode:\"OFB\",type:\"stream\"},\"aes-256-ofb\":{cipher:\"AES\",key:256,iv:16,mode:\"OFB\",type:\"stream\"},\"aes-128-ctr\":{cipher:\"AES\",key:128,iv:16,mode:\"CTR\",type:\"stream\"},\"aes-192-ctr\":{cipher:\"AES\",key:192,iv:16,mode:\"CTR\",type:\"stream\"},\"aes-256-ctr\":{cipher:\"AES\",key:256,iv:16,mode:\"CTR\",type:\"stream\"},\"aes-128-gcm\":{cipher:\"AES\",key:128,iv:12,mode:\"GCM\",type:\"auth\"},\"aes-192-gcm\":{cipher:\"AES\",key:192,iv:12,mode:\"GCM\",type:\"auth\"},\"aes-256-gcm\":{cipher:\"AES\",key:256,iv:12,mode:\"GCM\",type:\"auth\"}}},{}],204:[function(e,t,r){(function(t){(function(){\"use strict\";var n=e(\"buffer-xor\");function i(e){return e._prev=e._cipher.encryptBlock(e._prev),e._prev}r.encrypt=function(e,r){for(;e._cache.length<r.length;)e._cache=t.concat([e._cache,i(e)]);var s=e._cache.slice(0,r.length);return e._cache=e._cache.slice(r.length),n(r,s)}}).call(this)}).call(this,e(\"buffer\").Buffer)},{buffer:220,\"buffer-xor\":219}],205:[function(e,t,r){\"use strict\";var n=e(\"./aes\"),i=e(\"safe-buffer\").Buffer,s=e(\"cipher-base\");function o(e,t,r,o){s.call(this),this._cipher=new n.AES(t),this._prev=i.from(r),this._cache=i.allocUnsafe(0),this._secCache=i.allocUnsafe(0),this._decrypt=o,this._mode=e}e(\"inherits\")(o,s),o.prototype._update=function(e){return this._mode.encrypt(this,e,this._decrypt)},o.prototype._final=function(){this._cipher.scrub()},t.exports=o},{\"./aes\":189,\"cipher-base\":221,inherits:440,\"safe-buffer\":494}],206:[function(e,t,r){\"use strict\";var n=e(\"browserify-des\"),i=e(\"browserify-aes/browser\"),s=e(\"browserify-aes/modes\"),o=e(\"browserify-des/modes\"),a=e(\"evp_bytestokey\");function l(e,t,r){if(e=e.toLowerCase(),s[e])return i.createCipheriv(e,t,r);if(o[e])return new n({key:t,iv:r,mode:e});throw new TypeError(\"invalid suite type\")}function c(e,t,r){if(e=e.toLowerCase(),s[e])return i.createDecipheriv(e,t,r);if(o[e])return new n({key:t,iv:r,mode:e,decrypt:!0});throw new TypeError(\"invalid suite type\")}r.createCipher=r.Cipher=function(e,t){var r,n;if(e=e.toLowerCase(),s[e])r=s[e].key,n=s[e].iv;else{if(!o[e])throw new TypeError(\"invalid suite type\");r=8*o[e].key,n=o[e].iv}var i=a(t,!1,r,n);return l(e,i.key,i.iv)},r.createCipheriv=r.Cipheriv=l,r.createDecipher=r.Decipher=function(e,t){var r,n;if(e=e.toLowerCase(),s[e])r=s[e].key,n=s[e].iv;else{if(!o[e])throw new TypeError(\"invalid suite type\");r=8*o[e].key,n=o[e].iv}var i=a(t,!1,r,n);return c(e,i.key,i.iv)},r.createDecipheriv=r.Decipheriv=c,r.listCiphers=r.getCiphers=function(){return Object.keys(o).concat(i.getCiphers())}},{\"browserify-aes/browser\":191,\"browserify-aes/modes\":202,\"browserify-des\":207,\"browserify-des/modes\":208,evp_bytestokey:423}],207:[function(e,t,r){\"use strict\";var n=e(\"cipher-base\"),i=e(\"des.js\"),s=e(\"inherits\"),o=e(\"safe-buffer\").Buffer,a={\"des-ede3-cbc\":i.CBC.instantiate(i.EDE),\"des-ede3\":i.EDE,\"des-ede-cbc\":i.CBC.instantiate(i.EDE),\"des-ede\":i.EDE,\"des-cbc\":i.CBC.instantiate(i.DES),\"des-ecb\":i.DES};function l(e){n.call(this);var t,r=e.mode.toLowerCase(),i=a[r];t=e.decrypt?\"decrypt\":\"encrypt\";var s=e.key;o.isBuffer(s)||(s=o.from(s)),\"des-ede\"!==r&&\"des-ede-cbc\"!==r||(s=o.concat([s,s.slice(0,8)]));var l=e.iv;o.isBuffer(l)||(l=o.from(l)),this._des=i.create({key:s,iv:l,type:t})}a.des=a[\"des-cbc\"],a.des3=a[\"des-ede3-cbc\"],t.exports=l,s(l,n),l.prototype._update=function(e){return o.from(this._des.update(e))},l.prototype._final=function(){return o.from(this._des.final())}},{\"cipher-base\":221,\"des.js\":394,inherits:440,\"safe-buffer\":494}],208:[function(e,t,r){\"use strict\";r[\"des-ecb\"]={key:8,iv:0},r[\"des-cbc\"]=r.des={key:8,iv:8},r[\"des-ede3-cbc\"]=r.des3={key:24,iv:8},r[\"des-ede3\"]={key:24,iv:0},r[\"des-ede-cbc\"]={key:16,iv:8},r[\"des-ede\"]={key:16,iv:0}},{}],209:[function(e,t,r){(function(r){(function(){\"use strict\";var n=e(\"bn.js\"),i=e(\"randombytes\");function s(e){var t,r=e.modulus.byteLength();do{t=new n(i(r))}while(t.cmp(e.modulus)>=0||!t.umod(e.prime1)||!t.umod(e.prime2));return t}function o(e,t){var i=function(e){var t=s(e);return{blinder:t.toRed(n.mont(e.modulus)).redPow(new n(e.publicExponent)).fromRed(),unblinder:t.invm(e.modulus)}}(t),o=t.modulus.byteLength(),a=new n(e).mul(i.blinder).umod(t.modulus),l=a.toRed(n.mont(t.prime1)),c=a.toRed(n.mont(t.prime2)),u=t.coefficient,h=t.prime1,f=t.prime2,d=l.redPow(t.exponent1).fromRed(),p=c.redPow(t.exponent2).fromRed(),m=d.isub(p).imul(u).umod(h).imul(f);return p.iadd(m).imul(i.unblinder).umod(t.modulus).toArrayLike(r,\"be\",o)}o.getr=s,t.exports=o}).call(this)}).call(this,e(\"buffer\").Buffer)},{\"bn.js\":186,buffer:220,randombytes:475}],210:[function(e,t,r){\"use strict\";t.exports=e(\"./browser/algorithms.json\")},{\"./browser/algorithms.json\":211}],211:[function(e,t,r){t.exports={sha224WithRSAEncryption:{sign:\"rsa\",hash:\"sha224\",id:\"302d300d06096086480165030402040500041c\"},\"RSA-SHA224\":{sign:\"ecdsa/rsa\",hash:\"sha224\",id:\"302d300d06096086480165030402040500041c\"},sha256WithRSAEncryption:{sign:\"rsa\",hash:\"sha256\",id:\"3031300d060960864801650304020105000420\"},\"RSA-SHA256\":{sign:\"ecdsa/rsa\",hash:\"sha256\",id:\"3031300d060960864801650304020105000420\"},sha384WithRSAEncryption:{sign:\"rsa\",hash:\"sha384\",id:\"3041300d060960864801650304020205000430\"},\"RSA-SHA384\":{sign:\"ecdsa/rsa\",hash:\"sha384\",id:\"3041300d060960864801650304020205000430\"},sha512WithRSAEncryption:{sign:\"rsa\",hash:\"sha512\",id:\"3051300d060960864801650304020305000440\"},\"RSA-SHA512\":{sign:\"ecdsa/rsa\",hash:\"sha512\",id:\"3051300d060960864801650304020305000440\"},\"RSA-SHA1\":{sign:\"rsa\",hash:\"sha1\",id:\"3021300906052b0e03021a05000414\"},\"ecdsa-with-SHA1\":{sign:\"ecdsa\",hash:\"sha1\",id:\"\"},sha256:{sign:\"ecdsa\",hash:\"sha256\",id:\"\"},sha224:{sign:\"ecdsa\",hash:\"sha224\",id:\"\"},sha384:{sign:\"ecdsa\",hash:\"sha384\",id:\"\"},sha512:{sign:\"ecdsa\",hash:\"sha512\",id:\"\"},\"DSA-SHA\":{sign:\"dsa\",hash:\"sha1\",id:\"\"},\"DSA-SHA1\":{sign:\"dsa\",hash:\"sha1\",id:\"\"},DSA:{sign:\"dsa\",hash:\"sha1\",id:\"\"},\"DSA-WITH-SHA224\":{sign:\"dsa\",hash:\"sha224\",id:\"\"},\"DSA-SHA224\":{sign:\"dsa\",hash:\"sha224\",id:\"\"},\"DSA-WITH-SHA256\":{sign:\"dsa\",hash:\"sha256\",id:\"\"},\"DSA-SHA256\":{sign:\"dsa\",hash:\"sha256\",id:\"\"},\"DSA-WITH-SHA384\":{sign:\"dsa\",hash:\"sha384\",id:\"\"},\"DSA-SHA384\":{sign:\"dsa\",hash:\"sha384\",id:\"\"},\"DSA-WITH-SHA512\":{sign:\"dsa\",hash:\"sha512\",id:\"\"},\"DSA-SHA512\":{sign:\"dsa\",hash:\"sha512\",id:\"\"},\"DSA-RIPEMD160\":{sign:\"dsa\",hash:\"rmd160\",id:\"\"},ripemd160WithRSA:{sign:\"rsa\",hash:\"rmd160\",id:\"3021300906052b2403020105000414\"},\"RSA-RIPEMD160\":{sign:\"rsa\",hash:\"rmd160\",id:\"3021300906052b2403020105000414\"},md5WithRSAEncryption:{sign:\"rsa\",hash:\"md5\",id:\"3020300c06082a864886f70d020505000410\"},\"RSA-MD5\":{sign:\"rsa\",hash:\"md5\",id:\"3020300c06082a864886f70d020505000410\"}}},{}],212:[function(e,t,r){t.exports={\"1.3.132.0.10\":\"secp256k1\",\"1.3.132.0.33\":\"p224\",\"1.2.840.10045.3.1.1\":\"p192\",\"1.2.840.10045.3.1.7\":\"p256\",\"1.3.132.0.34\":\"p384\",\"1.3.132.0.35\":\"p521\"}},{}],213:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer,i=e(\"create-hash\"),s=e(\"readable-stream\"),o=e(\"inherits\"),a=e(\"./sign\"),l=e(\"./verify\"),c=e(\"./algorithms.json\");function u(e){s.Writable.call(this);var t=c[e];if(!t)throw new Error(\"Unknown message digest\");this._hashType=t.hash,this._hash=i(t.hash),this._tag=t.id,this._signType=t.sign}function h(e){s.Writable.call(this);var t=c[e];if(!t)throw new Error(\"Unknown message digest\");this._hash=i(t.hash),this._tag=t.id,this._signType=t.sign}function f(e){return new u(e)}function d(e){return new h(e)}Object.keys(c).forEach((function(e){c[e].id=n.from(c[e].id,\"hex\"),c[e.toLowerCase()]=c[e]})),o(u,s.Writable),u.prototype._write=function(e,t,r){this._hash.update(e),r()},u.prototype.update=function(e,t){return\"string\"==typeof e&&(e=n.from(e,t)),this._hash.update(e),this},u.prototype.sign=function(e,t){this.end();var r=this._hash.digest(),n=a(r,e,this._hashType,this._signType,this._tag);return t?n.toString(t):n},o(h,s.Writable),h.prototype._write=function(e,t,r){this._hash.update(e),r()},h.prototype.update=function(e,t){return\"string\"==typeof e&&(e=n.from(e,t)),this._hash.update(e),this},h.prototype.verify=function(e,t,r){\"string\"==typeof t&&(t=n.from(t,r)),this.end();var i=this._hash.digest();return l(t,i,e,this._signType,this._tag)},t.exports={Sign:f,Verify:d,createSign:f,createVerify:d}},{\"./algorithms.json\":211,\"./sign\":214,\"./verify\":215,\"create-hash\":386,inherits:440,\"readable-stream\":491,\"safe-buffer\":494}],214:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer,i=e(\"create-hmac\"),s=e(\"browserify-rsa\"),o=e(\"elliptic\").ec,a=e(\"bn.js\"),l=e(\"parse-asn1\"),c=e(\"./curves.json\");function u(e,t,r,s){if((e=n.from(e.toArray())).length<t.byteLength()){var o=n.alloc(t.byteLength()-e.length);e=n.concat([o,e])}var a=r.length,l=function(e,t){e=(e=h(e,t)).mod(t);var r=n.from(e.toArray());if(r.length<t.byteLength()){var i=n.alloc(t.byteLength()-r.length);r=n.concat([i,r])}return r}(r,t),c=n.alloc(a);c.fill(1);var u=n.alloc(a);return u=i(s,u).update(c).update(n.from([0])).update(e).update(l).digest(),c=i(s,u).update(c).digest(),{k:u=i(s,u).update(c).update(n.from([1])).update(e).update(l).digest(),v:c=i(s,u).update(c).digest()}}function h(e,t){var r=new a(e),n=(e.length<<3)-t.bitLength();return n>0&&r.ishrn(n),r}function f(e,t,r){var s,o;do{for(s=n.alloc(0);8*s.length<e.bitLength();)t.v=i(r,t.k).update(t.v).digest(),s=n.concat([s,t.v]);o=h(s,e),t.k=i(r,t.k).update(t.v).update(n.from([0])).digest(),t.v=i(r,t.k).update(t.v).digest()}while(-1!==o.cmp(e));return o}function d(e,t,r,n){return e.toRed(a.mont(r)).redPow(t).fromRed().mod(n)}t.exports=function(e,t,r,i,p){var m=l(t);if(m.curve){if(\"ecdsa\"!==i&&\"ecdsa/rsa\"!==i)throw new Error(\"wrong private key type\");return function(e,t){var r=c[t.curve.join(\".\")];if(!r)throw new Error(\"unknown curve \"+t.curve.join(\".\"));var i=new o(r).keyFromPrivate(t.privateKey).sign(e);return n.from(i.toDER())}(e,m)}if(\"dsa\"===m.type){if(\"dsa\"!==i)throw new Error(\"wrong private key type\");return function(e,t,r){var i,s=t.params.priv_key,o=t.params.p,l=t.params.q,c=t.params.g,p=new a(0),m=h(e,l).mod(l),b=!1,g=u(s,l,e,r);for(;!1===b;)i=f(l,g,r),p=d(c,i,o,l),0===(b=i.invm(l).imul(m.add(s.mul(p))).mod(l)).cmpn(0)&&(b=!1,p=new a(0));return function(e,t){e=e.toArray(),t=t.toArray(),128&e[0]&&(e=[0].concat(e));128&t[0]&&(t=[0].concat(t));var r=[48,e.length+t.length+4,2,e.length];return r=r.concat(e,[2,t.length],t),n.from(r)}(p,b)}(e,m,r)}if(\"rsa\"!==i&&\"ecdsa/rsa\"!==i)throw new Error(\"wrong private key type\");e=n.concat([p,e]);for(var b=m.modulus.byteLength(),g=[0,1];e.length+g.length+1<b;)g.push(255);g.push(0);for(var y=-1;++y<e.length;)g.push(e[y]);return s(g,m)},t.exports.getKey=u,t.exports.makeKey=f},{\"./curves.json\":212,\"bn.js\":186,\"browserify-rsa\":209,\"create-hmac\":388,elliptic:405,\"parse-asn1\":459,\"safe-buffer\":494}],215:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer,i=e(\"bn.js\"),s=e(\"elliptic\").ec,o=e(\"parse-asn1\"),a=e(\"./curves.json\");function l(e,t){if(e.cmpn(0)<=0)throw new Error(\"invalid sig\");if(e.cmp(t)>=t)throw new Error(\"invalid sig\")}t.exports=function(e,t,r,c,u){var h=o(r);if(\"ec\"===h.type){if(\"ecdsa\"!==c&&\"ecdsa/rsa\"!==c)throw new Error(\"wrong public key type\");return function(e,t,r){var n=a[r.data.algorithm.curve.join(\".\")];if(!n)throw new Error(\"unknown curve \"+r.data.algorithm.curve.join(\".\"));var i=new s(n),o=r.data.subjectPrivateKey.data;return i.verify(t,e,o)}(e,t,h)}if(\"dsa\"===h.type){if(\"dsa\"!==c)throw new Error(\"wrong public key type\");return function(e,t,r){var n=r.data.p,s=r.data.q,a=r.data.g,c=r.data.pub_key,u=o.signature.decode(e,\"der\"),h=u.s,f=u.r;l(h,s),l(f,s);var d=i.mont(n),p=h.invm(s);return 0===a.toRed(d).redPow(new i(t).mul(p).mod(s)).fromRed().mul(c.toRed(d).redPow(f.mul(p).mod(s)).fromRed()).mod(n).mod(s).cmp(f)}(e,t,h)}if(\"rsa\"!==c&&\"ecdsa/rsa\"!==c)throw new Error(\"wrong public key type\");t=n.concat([u,t]);for(var f=h.modulus.byteLength(),d=[1],p=0;t.length+d.length+2<f;)d.push(255),p++;d.push(0);for(var m=-1;++m<t.length;)d.push(t[m]);d=n.from(d);var b=i.mont(h.modulus);e=(e=new i(e).toRed(b)).redPow(new i(h.publicExponent)),e=n.from(e.fromRed().toArray());var g=p<8?1:0;for(f=Math.min(e.length,d.length),e.length!==d.length&&(g=1),m=-1;++m<f;)g|=e[m]^d[m];return 0===g}},{\"./curves.json\":212,\"bn.js\":186,elliptic:405,\"parse-asn1\":459,\"safe-buffer\":494}],216:[function(e,t,r){},{}],217:[function(e,t,r){\"use strict\";var n=e(\"buffer\"),i=n.Buffer;function s(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(s(n,r),r.Buffer=o),s(i,o),o.from=function(e,t,r){if(\"number\"==typeof e)throw new TypeError(\"Argument must not be a number\");return i(e,t,r)},o.alloc=function(e,t,r){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");var n=i(e);return void 0!==t?\"string\"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},o.allocUnsafe=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return i(e)},o.allocUnsafeSlow=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(e)}},{buffer:220}],218:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer,i=n.isEncoding||function(e){switch((e=\"\"+e)&&e.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function s(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return\"utf8\";for(var t;;)switch(e){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return e;default:if(t)return;e=(\"\"+e).toLowerCase(),t=!0}}(e);if(\"string\"!=typeof t&&(n.isEncoding===i||!i(e)))throw new Error(\"Unknown encoding: \"+e);return t||e}(e),this.encoding){case\"utf16le\":this.text=l,this.end=c,t=4;break;case\"utf8\":this.fillLast=a,t=4;break;case\"base64\":this.text=u,this.end=h,t=3;break;default:return this.write=f,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function a(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"\\ufffd\";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"\\ufffd\";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"\\ufffd\"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function u(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function f(e){return e.toString(this.encoding)}function d(e){return e&&e.length?this.write(e):\"\"}r.StringDecoder=s,s.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||\"\"},s.prototype.end=function(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+\"\\ufffd\":t},s.prototype.text=function(e,t){var r=function(e,t,r){var n=t.length-1;if(n<r)return 0;var i=o(t[n]);if(i>=0)return i>0&&(e.lastNeed=i-1),i;if(--n<r||-2===i)return 0;if((i=o(t[n]))>=0)return i>0&&(e.lastNeed=i-2),i;if(--n<r||-2===i)return 0;if((i=o(t[n]))>=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},s.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},{\"safe-buffer\":217}],219:[function(e,t,r){(function(e){(function(){\"use strict\";t.exports=function(t,r){for(var n=Math.min(t.length,r.length),i=new e(n),s=0;s<n;++s)i[s]=t[s]^r[s];return i}}).call(this)}).call(this,e(\"buffer\").Buffer)},{buffer:220}],220:[function(e,t,r){(function(t){(function(){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\"use strict\";var t=e(\"base64-js\"),n=e(\"ieee754\");r.Buffer=s,r.SlowBuffer=function(e){+e!=e&&(e=0);return s.alloc(+e)},r.INSPECT_MAX_BYTES=50;function i(e){if(e>2147483647)throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"');var t=new Uint8Array(e);return t.__proto__=s.prototype,t}function s(e,t,r){if(\"number\"==typeof e){if(\"string\"==typeof t)throw new TypeError('The \"string\" argument must be of type string. Received type number');return l(e)}return o(e,t,r)}function o(e,t,r){if(\"string\"==typeof e)return function(e,t){\"string\"==typeof t&&\"\"!==t||(t=\"utf8\");if(!s.isEncoding(t))throw new TypeError(\"Unknown encoding: \"+t);var r=0|h(e,t),n=i(r),o=n.write(e,t);o!==r&&(n=n.slice(0,o));return n}(e,t);if(ArrayBuffer.isView(e))return c(e);if(null==e)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof e);if(F(e,ArrayBuffer)||e&&F(e.buffer,ArrayBuffer))return function(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('\"offset\" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('\"length\" is outside of buffer bounds');var n;n=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r);return n.__proto__=s.prototype,n}(e,t,r);if(\"number\"==typeof e)throw new TypeError('The \"value\" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return s.from(n,t,r);var o=function(e){if(s.isBuffer(e)){var t=0|u(e.length),r=i(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return\"number\"!=typeof e.length||L(e.length)?i(0):c(e);if(\"Buffer\"===e.type&&Array.isArray(e.data))return c(e.data)}(e);if(o)return o;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof e[Symbol.toPrimitive])return s.from(e[Symbol.toPrimitive](\"string\"),t,r);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof e)}function a(e){if(\"number\"!=typeof e)throw new TypeError('\"size\" argument must be of type number');if(e<0)throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"')}function l(e){return a(e),i(e<0?0:0|u(e))}function c(e){for(var t=e.length<0?0:0|u(e.length),r=i(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function u(e){if(e>=2147483647)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+2147483647..toString(16)+\" bytes\");return 0|e}function h(e,t){if(s.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||F(e,ArrayBuffer))return e.byteLength;if(\"string\"!=typeof e)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return P(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return B(e).length;default:if(i)return n?-1:P(e).length;t=(\"\"+t).toLowerCase(),i=!0}}function f(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return C(this,t,r);case\"utf8\":case\"utf-8\":return k(this,t,r);case\"ascii\":return S(this,t,r);case\"latin1\":case\"binary\":return M(this,t,r);case\"base64\":return x(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return T(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}function d(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function p(e,t,r,n,i){if(0===e.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),L(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof t&&(t=s.from(t,n)),s.isBuffer(t))return 0===t.length?-1:m(e,t,r,n,i);if(\"number\"==typeof t)return t&=255,\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):m(e,[t],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function m(e,t,r,n,i){var s,o=1,a=e.length,l=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;o=2,a/=2,l/=2,r/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var u=-1;for(s=r;s<a;s++)if(c(e,s)===c(t,-1===u?0:s-u)){if(-1===u&&(u=s),s-u+1===l)return u*o}else-1!==u&&(s-=s-u),u=-1}else for(r+l>a&&(r=a-l),s=r;s>=0;s--){for(var h=!0,f=0;f<l;f++)if(c(e,s+f)!==c(t,f)){h=!1;break}if(h)return s}return-1}function b(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n))>i&&(n=i):n=i;var s=t.length;n>s/2&&(n=s/2);for(var o=0;o<n;++o){var a=parseInt(t.substr(2*o,2),16);if(L(a))return o;e[r+o]=a}return o}function g(e,t,r,n){return D(P(t,e.length-r),e,r,n)}function y(e,t,r,n){return D(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function v(e,t,r,n){return y(e,t,r,n)}function w(e,t,r,n){return D(B(t),e,r,n)}function _(e,t,r,n){return D(function(e,t){for(var r,n,i,s=[],o=0;o<e.length&&!((t-=2)<0);++o)r=e.charCodeAt(o),n=r>>8,i=r%256,s.push(i),s.push(n);return s}(t,e.length-r),e,r,n)}function x(e,r,n){return 0===r&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,n))}function k(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i<r;){var s,o,a,l,c=e[i],u=null,h=c>239?4:c>223?3:c>191?2:1;if(i+h<=r)switch(h){case 1:c<128&&(u=c);break;case 2:128==(192&(s=e[i+1]))&&(l=(31&c)<<6|63&s)>127&&(u=l);break;case 3:s=e[i+1],o=e[i+2],128==(192&s)&&128==(192&o)&&(l=(15&c)<<12|(63&s)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:s=e[i+1],o=e[i+2],a=e[i+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(l=(15&c)<<18|(63&s)<<12|(63&o)<<6|63&a)>65535&&l<1114112&&(u=l)}null===u?(u=65533,h=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=h}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var r=\"\",n=0;for(;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=4096));return r}(n)}r.kMaxLength=2147483647,s.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}(),s.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(s.prototype,\"parent\",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,\"offset\",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}}),\"undefined\"!=typeof Symbol&&null!=Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),s.poolSize=8192,s.from=function(e,t,r){return o(e,t,r)},s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,s.alloc=function(e,t,r){return function(e,t,r){return a(e),e<=0?i(e):void 0!==t?\"string\"==typeof r?i(e).fill(t,r):i(e).fill(t):i(e)}(e,t,r)},s.allocUnsafe=function(e){return l(e)},s.allocUnsafeSlow=function(e){return l(e)},s.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==s.prototype},s.compare=function(e,t){if(F(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),F(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),!s.isBuffer(e)||!s.isBuffer(t))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);i<o;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0},s.isEncoding=function(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},s.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===e.length)return s.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=s.allocUnsafe(t),i=0;for(r=0;r<e.length;++r){var o=e[r];if(F(o,Uint8Array)&&(o=s.from(o)),!s.isBuffer(o))throw new TypeError('\"list\" argument must be an Array of Buffers');o.copy(n,i),i+=o.length}return n},s.byteLength=h,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var t=0;t<e;t+=2)d(this,t,t+1);return this},s.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var t=0;t<e;t+=4)d(this,t,t+3),d(this,t+1,t+2);return this},s.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var t=0;t<e;t+=8)d(this,t,t+7),d(this,t+1,t+6),d(this,t+2,t+5),d(this,t+3,t+4);return this},s.prototype.toString=function(){var e=this.length;return 0===e?\"\":0===arguments.length?k(this,0,e):f.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(e){if(!s.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===s.compare(this,e)},s.prototype.inspect=function(){var e=\"\",t=r.INSPECT_MAX_BYTES;return e=this.toString(\"hex\",0,t).replace(/(.{2})/g,\"$1 \").trim(),this.length>t&&(e+=\" ... \"),\"<Buffer \"+e+\">\"},s.prototype.compare=function(e,t,r,n,i){if(F(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),!s.isBuffer(e))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(t>>>=0),l=Math.min(o,a),c=this.slice(n,i),u=e.slice(t,r),h=0;h<l;++h)if(c[h]!==u[h]){o=c[h],a=u[h];break}return o<a?-1:a<o?1:0},s.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},s.prototype.indexOf=function(e,t,r){return p(this,e,t,r,!0)},s.prototype.lastIndexOf=function(e,t,r){return p(this,e,t,r,!1)},s.prototype.write=function(e,t,r,n){if(void 0===t)n=\"utf8\",r=this.length,t=0;else if(void 0===r&&\"string\"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var s=!1;;)switch(n){case\"hex\":return b(this,e,t,r);case\"utf8\":case\"utf-8\":return g(this,e,t,r);case\"ascii\":return y(this,e,t,r);case\"latin1\":case\"binary\":return v(this,e,t,r);case\"base64\":return w(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return _(this,e,t,r);default:if(s)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),s=!0}},s.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function S(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(127&e[i]);return n}function M(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}function C(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var i=\"\",s=t;s<r;++s)i+=N(e[s]);return i}function T(e,t,r){for(var n=e.slice(t,r),i=\"\",s=0;s<n.length;s+=2)i+=String.fromCharCode(n[s]+256*n[s+1]);return i}function E(e,t,r){if(e%1!=0||e<0)throw new RangeError(\"offset is not uint\");if(e+t>r)throw new RangeError(\"Trying to access beyond buffer length\")}function A(e,t,r,n,i,o){if(!s.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>i||t<o)throw new RangeError('\"value\" argument is out of bounds');if(r+n>e.length)throw new RangeError(\"Index out of range\")}function R(e,t,r,n,i,s){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function O(e,t,r,i,s){return t=+t,r>>>=0,s||R(e,0,r,4),n.write(e,t,r,i,23,4),r+4}function j(e,t,r,i,s){return t=+t,r>>>=0,s||R(e,0,r,8),n.write(e,t,r,i,52,8),r+8}s.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return n.__proto__=s.prototype,n},s.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||E(e,t,this.length);for(var n=this[e],i=1,s=0;++s<t&&(i*=256);)n+=this[e+s]*i;return n},s.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||E(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},s.prototype.readUInt8=function(e,t){return e>>>=0,t||E(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return e>>>=0,t||E(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return e>>>=0,t||E(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return e>>>=0,t||E(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,t){return e>>>=0,t||E(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||E(e,t,this.length);for(var n=this[e],i=1,s=0;++s<t&&(i*=256);)n+=this[e+s]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*t)),n},s.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||E(e,t,this.length);for(var n=t,i=1,s=this[e+--n];n>0&&(i*=256);)s+=this[e+--n]*i;return s>=(i*=128)&&(s-=Math.pow(2,8*t)),s},s.prototype.readInt8=function(e,t){return e>>>=0,t||E(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},s.prototype.readInt16LE=function(e,t){e>>>=0,t||E(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt16BE=function(e,t){e>>>=0,t||E(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt32LE=function(e,t){return e>>>=0,t||E(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return e>>>=0,t||E(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return e>>>=0,t||E(e,4,this.length),n.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return e>>>=0,t||E(e,4,this.length),n.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return e>>>=0,t||E(e,8,this.length),n.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return e>>>=0,t||E(e,8,this.length),n.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||A(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,s=0;for(this[t]=255&e;++s<r&&(i*=256);)this[t+s]=e/i&255;return t+r},s.prototype.writeUIntBE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||A(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,s=1;for(this[t+i]=255&e;--i>=0&&(s*=256);)this[t+i]=e/s&255;return t+r},s.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,1,255,0),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},s.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);A(this,e,t,r,i-1,-i)}var s=0,o=1,a=0;for(this[t]=255&e;++s<r&&(o*=256);)e<0&&0===a&&0!==this[t+s-1]&&(a=1),this[t+s]=(e/o>>0)-a&255;return t+r},s.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);A(this,e,t,r,i-1,-i)}var s=r-1,o=1,a=0;for(this[t+s]=255&e;--s>=0&&(o*=256);)e<0&&0===a&&0!==this[t+s+1]&&(a=1),this[t+s]=(e/o>>0)-a&255;return t+r},s.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},s.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeFloatLE=function(e,t,r){return O(this,e,t,!0,r)},s.prototype.writeFloatBE=function(e,t,r){return O(this,e,t,!1,r)},s.prototype.writeDoubleLE=function(e,t,r){return j(this,e,t,!0,r)},s.prototype.writeDoubleBE=function(e,t,r){return j(this,e,t,!1,r)},s.prototype.copy=function(e,t,r,n){if(!s.isBuffer(e))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError(\"targetStart out of bounds\");if(r<0||r>=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var i=n-r;if(this===e&&\"function\"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,r,n);else if(this===e&&r<t&&t<n)for(var o=i-1;o>=0;--o)e[o+t]=this[o+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return i},s.prototype.fill=function(e,t,r,n){if(\"string\"==typeof e){if(\"string\"==typeof t?(n=t,t=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!s.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===e.length){var i=e.charCodeAt(0);(\"utf8\"===n&&i<128||\"latin1\"===n)&&(e=i)}}else\"number\"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<r)throw new RangeError(\"Out of range index\");if(r<=t)return this;var o;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),\"number\"==typeof e)for(o=t;o<r;++o)this[o]=e;else{var a=s.isBuffer(e)?e:s.from(e,n),l=a.length;if(0===l)throw new TypeError('The value \"'+e+'\" is invalid for argument \"value\"');for(o=0;o<r-t;++o)this[o+t]=a[o%l]}return this};var I=/[^+/0-9A-Za-z-_]/g;function N(e){return e<16?\"0\"+e.toString(16):e.toString(16)}function P(e,t){var r;t=t||1/0;for(var n=e.length,i=null,s=[],o=0;o<n;++o){if((r=e.charCodeAt(o))>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&s.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&s.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&s.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;s.push(r)}else if(r<2048){if((t-=2)<0)break;s.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function B(e){return t.toByteArray(function(e){if((e=(e=e.split(\"=\")[0]).trim().replace(I,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function D(e,t,r,n){for(var i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function F(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function L(e){return e!=e}}).call(this)}).call(this,e(\"buffer\").Buffer)},{\"base64-js\":185,buffer:220,ieee754:439}],221:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer,i=e(\"stream\").Transform,s=e(\"string_decoder\").StringDecoder;function o(e){i.call(this),this.hashMode=\"string\"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}e(\"inherits\")(o,i),o.prototype.update=function(e,t,r){\"string\"==typeof e&&(e=n.from(e,t));var i=this._update(e);return this.hashMode?this:(r&&(i=this._toString(i,r)),i)},o.prototype.setAutoPadding=function(){},o.prototype.getAuthTag=function(){throw new Error(\"trying to get auth tag in unsupported state\")},o.prototype.setAuthTag=function(){throw new Error(\"trying to set auth tag in unsupported state\")},o.prototype.setAAD=function(){throw new Error(\"trying to set aad in unsupported state\")},o.prototype._transform=function(e,t,r){var n;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(e){n=e}finally{r(n)}},o.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(e){t=e}e(t)},o.prototype._finalOrDigest=function(e){var t=this.__final()||n.alloc(0);return e&&(t=this._toString(t,e,!0)),t},o.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new s(t),this._encoding=t),this._encoding!==t)throw new Error(\"can't switch encodings\");var n=this._decoder.write(e);return r&&(n+=this._decoder.end()),n},t.exports=o},{inherits:440,\"safe-buffer\":494,stream:505,string_decoder:218}],222:[function(e,t,r){\"use strict\";var n=e(\"../internals/is-callable\"),i=e(\"../internals/try-to-string\"),s=TypeError;t.exports=function(e){if(n(e))return e;throw new s(i(e)+\" is not a function\")}},{\"../internals/is-callable\":285,\"../internals/try-to-string\":349}],223:[function(e,t,r){\"use strict\";var n=e(\"../internals/is-constructor\"),i=e(\"../internals/try-to-string\"),s=TypeError;t.exports=function(e){if(n(e))return e;throw new s(i(e)+\" is not a constructor\")}},{\"../internals/is-constructor\":286,\"../internals/try-to-string\":349}],224:[function(e,t,r){\"use strict\";var n=e(\"../internals/is-callable\"),i=String,s=TypeError;t.exports=function(e){if(\"object\"==typeof e||n(e))return e;throw new s(\"Can't set \"+i(e)+\" as a prototype\")}},{\"../internals/is-callable\":285}],225:[function(e,t,r){\"use strict\";var n=e(\"../internals/well-known-symbol\"),i=e(\"../internals/object-create\"),s=e(\"../internals/object-define-property\").f,o=n(\"unscopables\"),a=Array.prototype;void 0===a[o]&&s(a,o,{configurable:!0,value:i(null)}),t.exports=function(e){a[o][e]=!0}},{\"../internals/object-create\":306,\"../internals/object-define-property\":308,\"../internals/well-known-symbol\":357}],226:[function(e,t,r){\"use strict\";var n=e(\"../internals/object-is-prototype-of\"),i=TypeError;t.exports=function(e,t){if(n(t,e))return e;throw new i(\"Incorrect invocation\")}},{\"../internals/object-is-prototype-of\":314}],227:[function(e,t,r){\"use strict\";var n=e(\"../internals/is-object\"),i=String,s=TypeError;t.exports=function(e){if(n(e))return e;throw new s(i(e)+\" is not an object\")}},{\"../internals/is-object\":289}],228:[function(e,t,r){\"use strict\";var n=e(\"../internals/to-indexed-object\"),i=e(\"../internals/to-absolute-index\"),s=e(\"../internals/length-of-array-like\"),o=function(e){return function(t,r,o){var a,l=n(t),c=s(l),u=i(o,c);if(e&&r!=r){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===r)return e||u||0;return!e&&-1}};t.exports={includes:o(!0),indexOf:o(!1)}},{\"../internals/length-of-array-like\":299,\"../internals/to-absolute-index\":340,\"../internals/to-indexed-object\":341}],229:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-bind-context\"),i=e(\"../internals/function-uncurry-this\"),s=e(\"../internals/indexed-object\"),o=e(\"../internals/to-object\"),a=e(\"../internals/length-of-array-like\"),l=e(\"../internals/array-species-create\"),c=i([].push),u=function(e){var t=1===e,r=2===e,i=3===e,u=4===e,h=6===e,f=7===e,d=5===e||h;return function(p,m,b,g){for(var y,v,w=o(p),_=s(w),x=n(m,b),k=a(_),S=0,M=g||l,C=t?M(p,k):r||f?M(p,0):void 0;k>S;S++)if((d||S in _)&&(v=x(y=_[S],S,w),e))if(t)C[S]=v;else if(v)switch(e){case 3:return!0;case 5:return y;case 6:return S;case 2:c(C,y)}else switch(e){case 4:return!1;case 7:c(C,y)}return h?-1:i||u?u:C}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterReject:u(7)}},{\"../internals/array-species-create\":233,\"../internals/function-bind-context\":262,\"../internals/function-uncurry-this\":268,\"../internals/indexed-object\":280,\"../internals/length-of-array-like\":299,\"../internals/to-object\":344}],230:[function(e,t,r){\"use strict\";var n=e(\"../internals/to-absolute-index\"),i=e(\"../internals/length-of-array-like\"),s=e(\"../internals/create-property\"),o=Array,a=Math.max;t.exports=function(e,t,r){for(var l=i(e),c=n(t,l),u=n(void 0===r?l:r,l),h=o(a(u-c,0)),f=0;c<u;c++,f++)s(h,f,e[c]);return h.length=f,h}},{\"../internals/create-property\":243,\"../internals/length-of-array-like\":299,\"../internals/to-absolute-index\":340}],231:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\");t.exports=n([].slice)},{\"../internals/function-uncurry-this\":268}],232:[function(e,t,r){\"use strict\";var n=e(\"../internals/is-array\"),i=e(\"../internals/is-constructor\"),s=e(\"../internals/is-object\"),o=e(\"../internals/well-known-symbol\")(\"species\"),a=Array;t.exports=function(e){var t;return n(e)&&(t=e.constructor,(i(t)&&(t===a||n(t.prototype))||s(t)&&null===(t=t[o]))&&(t=void 0)),void 0===t?a:t}},{\"../internals/is-array\":284,\"../internals/is-constructor\":286,\"../internals/is-object\":289,\"../internals/well-known-symbol\":357}],233:[function(e,t,r){\"use strict\";var n=e(\"../internals/array-species-constructor\");t.exports=function(e,t){return new(n(e))(0===t?0:t)}},{\"../internals/array-species-constructor\":232}],234:[function(e,t,r){\"use strict\";var n=e(\"../internals/well-known-symbol\")(\"iterator\"),i=!1;try{var s=0,o={next:function(){return{done:!!s++}},return:function(){i=!0}};o[n]=function(){return this},Array.from(o,(function(){throw 2}))}catch(e){}t.exports=function(e,t){try{if(!t&&!i)return!1}catch(e){return!1}var r=!1;try{var s={};s[n]=function(){return{next:function(){return{done:r=!0}}}},e(s)}catch(e){}return r}},{\"../internals/well-known-symbol\":357}],235:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\"),i=n({}.toString),s=n(\"\".slice);t.exports=function(e){return s(i(e),8,-1)}},{\"../internals/function-uncurry-this\":268}],236:[function(e,t,r){\"use strict\";var n=e(\"../internals/to-string-tag-support\"),i=e(\"../internals/is-callable\"),s=e(\"../internals/classof-raw\"),o=e(\"../internals/well-known-symbol\")(\"toStringTag\"),a=Object,l=\"Arguments\"===s(function(){return arguments}());t.exports=n?s:function(e){var t,r,n;return void 0===e?\"Undefined\":null===e?\"Null\":\"string\"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=a(e),o))?r:l?s(t):\"Object\"===(n=s(t))&&i(t.callee)?\"Arguments\":n}},{\"../internals/classof-raw\":235,\"../internals/is-callable\":285,\"../internals/to-string-tag-support\":347,\"../internals/well-known-symbol\":357}],237:[function(e,t,r){\"use strict\";var n=e(\"../internals/has-own-property\"),i=e(\"../internals/own-keys\"),s=e(\"../internals/object-get-own-property-descriptor\"),o=e(\"../internals/object-define-property\");t.exports=function(e,t,r){for(var a=i(t),l=o.f,c=s.f,u=0;u<a.length;u++){var h=a[u];n(e,h)||r&&n(r,h)||l(e,h,c(t,h))}}},{\"../internals/has-own-property\":275,\"../internals/object-define-property\":308,\"../internals/object-get-own-property-descriptor\":309,\"../internals/own-keys\":321}],238:[function(e,t,r){\"use strict\";var n=e(\"../internals/well-known-symbol\")(\"match\");t.exports=function(e){var t=/./;try{\"/./\"[e](t)}catch(r){try{return t[n]=!1,\"/./\"[e](t)}catch(e){}}return!1}},{\"../internals/well-known-symbol\":357}],239:[function(e,t,r){\"use strict\";var n=e(\"../internals/fails\");t.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},{\"../internals/fails\":260}],240:[function(e,t,r){\"use strict\";t.exports=function(e,t){return{value:e,done:t}}},{}],241:[function(e,t,r){\"use strict\";var n=e(\"../internals/descriptors\"),i=e(\"../internals/object-define-property\"),s=e(\"../internals/create-property-descriptor\");t.exports=n?function(e,t,r){return i.f(e,t,s(1,r))}:function(e,t,r){return e[t]=r,e}},{\"../internals/create-property-descriptor\":242,\"../internals/descriptors\":247,\"../internals/object-define-property\":308}],242:[function(e,t,r){\"use strict\";t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],243:[function(e,t,r){\"use strict\";var n=e(\"../internals/to-property-key\"),i=e(\"../internals/object-define-property\"),s=e(\"../internals/create-property-descriptor\");t.exports=function(e,t,r){var o=n(t);o in e?i.f(e,o,s(0,r)):e[o]=r}},{\"../internals/create-property-descriptor\":242,\"../internals/object-define-property\":308,\"../internals/to-property-key\":346}],244:[function(e,t,r){\"use strict\";var n=e(\"../internals/make-built-in\"),i=e(\"../internals/object-define-property\");t.exports=function(e,t,r){return r.get&&n(r.get,t,{getter:!0}),r.set&&n(r.set,t,{setter:!0}),i.f(e,t,r)}},{\"../internals/make-built-in\":300,\"../internals/object-define-property\":308}],245:[function(e,t,r){\"use strict\";var n=e(\"../internals/is-callable\"),i=e(\"../internals/object-define-property\"),s=e(\"../internals/make-built-in\"),o=e(\"../internals/define-global-property\");t.exports=function(e,t,r,a){a||(a={});var l=a.enumerable,c=void 0!==a.name?a.name:t;if(n(r)&&s(r,c,a),a.global)l?e[t]=r:o(t,r);else{try{a.unsafe?e[t]&&(l=!0):delete e[t]}catch(e){}l?e[t]=r:i.f(e,t,{value:r,enumerable:!1,configurable:!a.nonConfigurable,writable:!a.nonWritable})}return e}},{\"../internals/define-global-property\":246,\"../internals/is-callable\":285,\"../internals/make-built-in\":300,\"../internals/object-define-property\":308}],246:[function(e,t,r){\"use strict\";var n=e(\"../internals/global\"),i=Object.defineProperty;t.exports=function(e,t){try{i(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},{\"../internals/global\":274}],247:[function(e,t,r){\"use strict\";var n=e(\"../internals/fails\");t.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},{\"../internals/fails\":260}],248:[function(e,t,r){\"use strict\";var n=\"object\"==typeof document&&document.all,i=void 0===n&&void 0!==n;t.exports={all:n,IS_HTMLDDA:i}},{}],249:[function(e,t,r){\"use strict\";var n=e(\"../internals/global\"),i=e(\"../internals/is-object\"),s=n.document,o=i(s)&&i(s.createElement);t.exports=function(e){return o?s.createElement(e):{}}},{\"../internals/global\":274,\"../internals/is-object\":289}],250:[function(e,t,r){\"use strict\";var n=e(\"../internals/engine-is-deno\"),i=e(\"../internals/engine-is-node\");t.exports=!n&&!i&&\"object\"==typeof window&&\"object\"==typeof document},{\"../internals/engine-is-deno\":251,\"../internals/engine-is-node\":254}],251:[function(e,t,r){\"use strict\";t.exports=\"object\"==typeof Deno&&Deno&&\"object\"==typeof Deno.version},{}],252:[function(e,t,r){\"use strict\";var n=e(\"../internals/engine-user-agent\");t.exports=/ipad|iphone|ipod/i.test(n)&&\"undefined\"!=typeof Pebble},{\"../internals/engine-user-agent\":256}],253:[function(e,t,r){\"use strict\";var n=e(\"../internals/engine-user-agent\");t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},{\"../internals/engine-user-agent\":256}],254:[function(e,t,r){\"use strict\";var n=e(\"../internals/global\"),i=e(\"../internals/classof-raw\");t.exports=\"process\"===i(n.process)},{\"../internals/classof-raw\":235,\"../internals/global\":274}],255:[function(e,t,r){\"use strict\";var n=e(\"../internals/engine-user-agent\");t.exports=/web0s(?!.*chrome)/i.test(n)},{\"../internals/engine-user-agent\":256}],256:[function(e,t,r){\"use strict\";t.exports=\"undefined\"!=typeof navigator&&String(navigator.userAgent)||\"\"},{}],257:[function(e,t,r){\"use strict\";var n,i,s=e(\"../internals/global\"),o=e(\"../internals/engine-user-agent\"),a=s.process,l=s.Deno,c=a&&a.versions||l&&l.version,u=c&&c.v8;u&&(i=(n=u.split(\".\"))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!i&&o&&(!(n=o.match(/Edge\\/(\\d+)/))||n[1]>=74)&&(n=o.match(/Chrome\\/(\\d+)/))&&(i=+n[1]),t.exports=i},{\"../internals/engine-user-agent\":256,\"../internals/global\":274}],258:[function(e,t,r){\"use strict\";t.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},{}],259:[function(e,t,r){\"use strict\";var n=e(\"../internals/global\"),i=e(\"../internals/object-get-own-property-descriptor\").f,s=e(\"../internals/create-non-enumerable-property\"),o=e(\"../internals/define-built-in\"),a=e(\"../internals/define-global-property\"),l=e(\"../internals/copy-constructor-properties\"),c=e(\"../internals/is-forced\");t.exports=function(e,t){var r,u,h,f,d,p=e.target,m=e.global,b=e.stat;if(r=m?n:b?n[p]||a(p,{}):(n[p]||{}).prototype)for(u in t){if(f=t[u],h=e.dontCallGetSet?(d=i(r,u))&&d.value:r[u],!c(m?u:p+(b?\".\":\"#\")+u,e.forced)&&void 0!==h){if(typeof f==typeof h)continue;l(f,h)}(e.sham||h&&h.sham)&&s(f,\"sham\",!0),o(r,u,f,e)}}},{\"../internals/copy-constructor-properties\":237,\"../internals/create-non-enumerable-property\":241,\"../internals/define-built-in\":245,\"../internals/define-global-property\":246,\"../internals/global\":274,\"../internals/is-forced\":287,\"../internals/object-get-own-property-descriptor\":309}],260:[function(e,t,r){\"use strict\";t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],261:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-bind-native\"),i=Function.prototype,s=i.apply,o=i.call;t.exports=\"object\"==typeof Reflect&&Reflect.apply||(n?o.bind(s):function(){return o.apply(s,arguments)})},{\"../internals/function-bind-native\":263}],262:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this-clause\"),i=e(\"../internals/a-callable\"),s=e(\"../internals/function-bind-native\"),o=n(n.bind);t.exports=function(e,t){return i(e),void 0===t?e:s?o(e,t):function(){return e.apply(t,arguments)}}},{\"../internals/a-callable\":222,\"../internals/function-bind-native\":263,\"../internals/function-uncurry-this-clause\":267}],263:[function(e,t,r){\"use strict\";var n=e(\"../internals/fails\");t.exports=!n((function(){var e=function(){}.bind();return\"function\"!=typeof e||e.hasOwnProperty(\"prototype\")}))},{\"../internals/fails\":260}],264:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-bind-native\"),i=Function.prototype.call;t.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},{\"../internals/function-bind-native\":263}],265:[function(e,t,r){\"use strict\";var n=e(\"../internals/descriptors\"),i=e(\"../internals/has-own-property\"),s=Function.prototype,o=n&&Object.getOwnPropertyDescriptor,a=i(s,\"name\"),l=a&&\"something\"===function(){}.name,c=a&&(!n||n&&o(s,\"name\").configurable);t.exports={EXISTS:a,PROPER:l,CONFIGURABLE:c}},{\"../internals/descriptors\":247,\"../internals/has-own-property\":275}],266:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\"),i=e(\"../internals/a-callable\");t.exports=function(e,t,r){try{return n(i(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}}},{\"../internals/a-callable\":222,\"../internals/function-uncurry-this\":268}],267:[function(e,t,r){\"use strict\";var n=e(\"../internals/classof-raw\"),i=e(\"../internals/function-uncurry-this\");t.exports=function(e){if(\"Function\"===n(e))return i(e)}},{\"../internals/classof-raw\":235,\"../internals/function-uncurry-this\":268}],268:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-bind-native\"),i=Function.prototype,s=i.call,o=n&&i.bind.bind(s,s);t.exports=n?o:function(e){return function(){return s.apply(e,arguments)}}},{\"../internals/function-bind-native\":263}],269:[function(e,t,r){\"use strict\";var n=e(\"../internals/global\"),i=e(\"../internals/is-callable\"),s=function(e){return i(e)?e:void 0};t.exports=function(e,t){return arguments.length<2?s(n[e]):n[e]&&n[e][t]}},{\"../internals/global\":274,\"../internals/is-callable\":285}],270:[function(e,t,r){\"use strict\";var n=e(\"../internals/classof\"),i=e(\"../internals/get-method\"),s=e(\"../internals/is-null-or-undefined\"),o=e(\"../internals/iterators\"),a=e(\"../internals/well-known-symbol\")(\"iterator\");t.exports=function(e){if(!s(e))return i(e,a)||i(e,\"@@iterator\")||o[n(e)]}},{\"../internals/classof\":236,\"../internals/get-method\":273,\"../internals/is-null-or-undefined\":288,\"../internals/iterators\":298,\"../internals/well-known-symbol\":357}],271:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-call\"),i=e(\"../internals/a-callable\"),s=e(\"../internals/an-object\"),o=e(\"../internals/try-to-string\"),a=e(\"../internals/get-iterator-method\"),l=TypeError;t.exports=function(e,t){var r=arguments.length<2?a(e):t;if(i(r))return s(n(r,e));throw new l(o(e)+\" is not iterable\")}},{\"../internals/a-callable\":222,\"../internals/an-object\":227,\"../internals/function-call\":264,\"../internals/get-iterator-method\":270,\"../internals/try-to-string\":349}],272:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\"),i=e(\"../internals/is-array\"),s=e(\"../internals/is-callable\"),o=e(\"../internals/classof-raw\"),a=e(\"../internals/to-string\"),l=n([].push);t.exports=function(e){if(s(e))return e;if(i(e)){for(var t=e.length,r=[],n=0;n<t;n++){var c=e[n];\"string\"==typeof c?l(r,c):\"number\"!=typeof c&&\"Number\"!==o(c)&&\"String\"!==o(c)||l(r,a(c))}var u=r.length,h=!0;return function(e,t){if(h)return h=!1,t;if(i(this))return t;for(var n=0;n<u;n++)if(r[n]===e)return t}}}},{\"../internals/classof-raw\":235,\"../internals/function-uncurry-this\":268,\"../internals/is-array\":284,\"../internals/is-callable\":285,\"../internals/to-string\":348}],273:[function(e,t,r){\"use strict\";var n=e(\"../internals/a-callable\"),i=e(\"../internals/is-null-or-undefined\");t.exports=function(e,t){var r=e[t];return i(r)?void 0:n(r)}},{\"../internals/a-callable\":222,\"../internals/is-null-or-undefined\":288}],274:[function(e,t,r){(function(e){(function(){\"use strict\";var r=function(e){return e&&e.Math===Math&&e};t.exports=r(\"object\"==typeof globalThis&&globalThis)||r(\"object\"==typeof window&&window)||r(\"object\"==typeof self&&self)||r(\"object\"==typeof e&&e)||function(){return this}()||this||Function(\"return this\")()}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],275:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\"),i=e(\"../internals/to-object\"),s=n({}.hasOwnProperty);t.exports=Object.hasOwn||function(e,t){return s(i(e),t)}},{\"../internals/function-uncurry-this\":268,\"../internals/to-object\":344}],276:[function(e,t,r){\"use strict\";t.exports={}},{}],277:[function(e,t,r){\"use strict\";t.exports=function(e,t){try{1===arguments.length?console.error(e):console.error(e,t)}catch(e){}}},{}],278:[function(e,t,r){\"use strict\";var n=e(\"../internals/get-built-in\");t.exports=n(\"document\",\"documentElement\")},{\"../internals/get-built-in\":269}],279:[function(e,t,r){\"use strict\";var n=e(\"../internals/descriptors\"),i=e(\"../internals/fails\"),s=e(\"../internals/document-create-element\");t.exports=!n&&!i((function(){return 7!==Object.defineProperty(s(\"div\"),\"a\",{get:function(){return 7}}).a}))},{\"../internals/descriptors\":247,\"../internals/document-create-element\":249,\"../internals/fails\":260}],280:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\"),i=e(\"../internals/fails\"),s=e(\"../internals/classof-raw\"),o=Object,a=n(\"\".split);t.exports=i((function(){return!o(\"z\").propertyIsEnumerable(0)}))?function(e){return\"String\"===s(e)?a(e,\"\"):o(e)}:o},{\"../internals/classof-raw\":235,\"../internals/fails\":260,\"../internals/function-uncurry-this\":268}],281:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\"),i=e(\"../internals/is-callable\"),s=e(\"../internals/shared-store\"),o=n(Function.toString);i(s.inspectSource)||(s.inspectSource=function(e){return o(e)}),t.exports=s.inspectSource},{\"../internals/function-uncurry-this\":268,\"../internals/is-callable\":285,\"../internals/shared-store\":333}],282:[function(e,t,r){\"use strict\";var n,i,s,o=e(\"../internals/weak-map-basic-detection\"),a=e(\"../internals/global\"),l=e(\"../internals/is-object\"),c=e(\"../internals/create-non-enumerable-property\"),u=e(\"../internals/has-own-property\"),h=e(\"../internals/shared-store\"),f=e(\"../internals/shared-key\"),d=e(\"../internals/hidden-keys\"),p=a.TypeError,m=a.WeakMap;if(o||h.state){var b=h.state||(h.state=new m);b.get=b.get,b.has=b.has,b.set=b.set,n=function(e,t){if(b.has(e))throw new p(\"Object already initialized\");return t.facade=e,b.set(e,t),t},i=function(e){return b.get(e)||{}},s=function(e){return b.has(e)}}else{var g=f(\"state\");d[g]=!0,n=function(e,t){if(u(e,g))throw new p(\"Object already initialized\");return t.facade=e,c(e,g,t),t},i=function(e){return u(e,g)?e[g]:{}},s=function(e){return u(e,g)}}t.exports={set:n,get:i,has:s,enforce:function(e){return s(e)?i(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!l(t)||(r=i(t)).type!==e)throw new p(\"Incompatible receiver, \"+e+\" required\");return r}}}},{\"../internals/create-non-enumerable-property\":241,\"../internals/global\":274,\"../internals/has-own-property\":275,\"../internals/hidden-keys\":276,\"../internals/is-object\":289,\"../internals/shared-key\":332,\"../internals/shared-store\":333,\"../internals/weak-map-basic-detection\":354}],283:[function(e,t,r){\"use strict\";var n=e(\"../internals/well-known-symbol\"),i=e(\"../internals/iterators\"),s=n(\"iterator\"),o=Array.prototype;t.exports=function(e){return void 0!==e&&(i.Array===e||o[s]===e)}},{\"../internals/iterators\":298,\"../internals/well-known-symbol\":357}],284:[function(e,t,r){\"use strict\";var n=e(\"../internals/classof-raw\");t.exports=Array.isArray||function(e){return\"Array\"===n(e)}},{\"../internals/classof-raw\":235}],285:[function(e,t,r){\"use strict\";var n=e(\"../internals/document-all\"),i=n.all;t.exports=n.IS_HTMLDDA?function(e){return\"function\"==typeof e||e===i}:function(e){return\"function\"==typeof e}},{\"../internals/document-all\":248}],286:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\"),i=e(\"../internals/fails\"),s=e(\"../internals/is-callable\"),o=e(\"../internals/classof\"),a=e(\"../internals/get-built-in\"),l=e(\"../internals/inspect-source\"),c=function(){},u=[],h=a(\"Reflect\",\"construct\"),f=/^\\s*(?:class|function)\\b/,d=n(f.exec),p=!f.test(c),m=function(e){if(!s(e))return!1;try{return h(c,u,e),!0}catch(e){return!1}},b=function(e){if(!s(e))return!1;switch(o(e)){case\"AsyncFunction\":case\"GeneratorFunction\":case\"AsyncGeneratorFunction\":return!1}try{return p||!!d(f,l(e))}catch(e){return!0}};b.sham=!0,t.exports=!h||i((function(){var e;return m(m.call)||!m(Object)||!m((function(){e=!0}))||e}))?b:m},{\"../internals/classof\":236,\"../internals/fails\":260,\"../internals/function-uncurry-this\":268,\"../internals/get-built-in\":269,\"../internals/inspect-source\":281,\"../internals/is-callable\":285}],287:[function(e,t,r){\"use strict\";var n=e(\"../internals/fails\"),i=e(\"../internals/is-callable\"),s=/#|\\.prototype\\./,o=function(e,t){var r=l[a(e)];return r===u||r!==c&&(i(t)?n(t):!!t)},a=o.normalize=function(e){return String(e).replace(s,\".\").toLowerCase()},l=o.data={},c=o.NATIVE=\"N\",u=o.POLYFILL=\"P\";t.exports=o},{\"../internals/fails\":260,\"../internals/is-callable\":285}],288:[function(e,t,r){\"use strict\";t.exports=function(e){return null==e}},{}],289:[function(e,t,r){\"use strict\";var n=e(\"../internals/is-callable\"),i=e(\"../internals/document-all\"),s=i.all;t.exports=i.IS_HTMLDDA?function(e){return\"object\"==typeof e?null!==e:n(e)||e===s}:function(e){return\"object\"==typeof e?null!==e:n(e)}},{\"../internals/document-all\":248,\"../internals/is-callable\":285}],290:[function(e,t,r){\"use strict\";t.exports=!1},{}],291:[function(e,t,r){\"use strict\";var n=e(\"../internals/is-object\"),i=e(\"../internals/classof-raw\"),s=e(\"../internals/well-known-symbol\")(\"match\");t.exports=function(e){var t;return n(e)&&(void 0!==(t=e[s])?!!t:\"RegExp\"===i(e))}},{\"../internals/classof-raw\":235,\"../internals/is-object\":289,\"../internals/well-known-symbol\":357}],292:[function(e,t,r){\"use strict\";var n=e(\"../internals/get-built-in\"),i=e(\"../internals/is-callable\"),s=e(\"../internals/object-is-prototype-of\"),o=e(\"../internals/use-symbol-as-uid\"),a=Object;t.exports=o?function(e){return\"symbol\"==typeof e}:function(e){var t=n(\"Symbol\");return i(t)&&s(t.prototype,a(e))}},{\"../internals/get-built-in\":269,\"../internals/is-callable\":285,\"../internals/object-is-prototype-of\":314,\"../internals/use-symbol-as-uid\":351}],293:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-bind-context\"),i=e(\"../internals/function-call\"),s=e(\"../internals/an-object\"),o=e(\"../internals/try-to-string\"),a=e(\"../internals/is-array-iterator-method\"),l=e(\"../internals/length-of-array-like\"),c=e(\"../internals/object-is-prototype-of\"),u=e(\"../internals/get-iterator\"),h=e(\"../internals/get-iterator-method\"),f=e(\"../internals/iterator-close\"),d=TypeError,p=function(e,t){this.stopped=e,this.result=t},m=p.prototype;t.exports=function(e,t,r){var b,g,y,v,w,_,x,k=r&&r.that,S=!(!r||!r.AS_ENTRIES),M=!(!r||!r.IS_RECORD),C=!(!r||!r.IS_ITERATOR),T=!(!r||!r.INTERRUPTED),E=n(t,k),A=function(e){return b&&f(b,\"normal\",e),new p(!0,e)},R=function(e){return S?(s(e),T?E(e[0],e[1],A):E(e[0],e[1])):T?E(e,A):E(e)};if(M)b=e.iterator;else if(C)b=e;else{if(!(g=h(e)))throw new d(o(e)+\" is not iterable\");if(a(g)){for(y=0,v=l(e);v>y;y++)if((w=R(e[y]))&&c(m,w))return w;return new p(!1)}b=u(e,g)}for(_=M?e.next:b.next;!(x=i(_,b)).done;){try{w=R(x.value)}catch(e){f(b,\"throw\",e)}if(\"object\"==typeof w&&w&&c(m,w))return w}return new p(!1)}},{\"../internals/an-object\":227,\"../internals/function-bind-context\":262,\"../internals/function-call\":264,\"../internals/get-iterator\":271,\"../internals/get-iterator-method\":270,\"../internals/is-array-iterator-method\":283,\"../internals/iterator-close\":294,\"../internals/length-of-array-like\":299,\"../internals/object-is-prototype-of\":314,\"../internals/try-to-string\":349}],294:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-call\"),i=e(\"../internals/an-object\"),s=e(\"../internals/get-method\");t.exports=function(e,t,r){var o,a;i(e);try{if(!(o=s(e,\"return\"))){if(\"throw\"===t)throw r;return r}o=n(o,e)}catch(e){a=!0,o=e}if(\"throw\"===t)throw r;if(a)throw o;return i(o),r}},{\"../internals/an-object\":227,\"../internals/function-call\":264,\"../internals/get-method\":273}],295:[function(e,t,r){\"use strict\";var n=e(\"../internals/iterators-core\").IteratorPrototype,i=e(\"../internals/object-create\"),s=e(\"../internals/create-property-descriptor\"),o=e(\"../internals/set-to-string-tag\"),a=e(\"../internals/iterators\"),l=function(){return this};t.exports=function(e,t,r,c){var u=t+\" Iterator\";return e.prototype=i(n,{next:s(+!c,r)}),o(e,u,!1,!0),a[u]=l,e}},{\"../internals/create-property-descriptor\":242,\"../internals/iterators\":298,\"../internals/iterators-core\":297,\"../internals/object-create\":306,\"../internals/set-to-string-tag\":331}],296:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/function-call\"),s=e(\"../internals/is-pure\"),o=e(\"../internals/function-name\"),a=e(\"../internals/is-callable\"),l=e(\"../internals/iterator-create-constructor\"),c=e(\"../internals/object-get-prototype-of\"),u=e(\"../internals/object-set-prototype-of\"),h=e(\"../internals/set-to-string-tag\"),f=e(\"../internals/create-non-enumerable-property\"),d=e(\"../internals/define-built-in\"),p=e(\"../internals/well-known-symbol\"),m=e(\"../internals/iterators\"),b=e(\"../internals/iterators-core\"),g=o.PROPER,y=o.CONFIGURABLE,v=b.IteratorPrototype,w=b.BUGGY_SAFARI_ITERATORS,_=p(\"iterator\"),x=function(){return this};t.exports=function(e,t,r,o,p,b,k){l(r,t,o);var S,M,C,T=function(e){if(e===p&&j)return j;if(!w&&e&&e in R)return R[e];switch(e){case\"keys\":case\"values\":case\"entries\":return function(){return new r(this,e)}}return function(){return new r(this)}},E=t+\" Iterator\",A=!1,R=e.prototype,O=R[_]||R[\"@@iterator\"]||p&&R[p],j=!w&&O||T(p),I=\"Array\"===t&&R.entries||O;if(I&&(S=c(I.call(new e)))!==Object.prototype&&S.next&&(s||c(S)===v||(u?u(S,v):a(S[_])||d(S,_,x)),h(S,E,!0,!0),s&&(m[E]=x)),g&&\"values\"===p&&O&&\"values\"!==O.name&&(!s&&y?f(R,\"name\",\"values\"):(A=!0,j=function(){return i(O,this)})),p)if(M={values:T(\"values\"),keys:b?j:T(\"keys\"),entries:T(\"entries\")},k)for(C in M)(w||A||!(C in R))&&d(R,C,M[C]);else n({target:t,proto:!0,forced:w||A},M);return s&&!k||R[_]===j||d(R,_,j,{name:p}),m[t]=j,M}},{\"../internals/create-non-enumerable-property\":241,\"../internals/define-built-in\":245,\"../internals/export\":259,\"../internals/function-call\":264,\"../internals/function-name\":265,\"../internals/is-callable\":285,\"../internals/is-pure\":290,\"../internals/iterator-create-constructor\":295,\"../internals/iterators\":298,\"../internals/iterators-core\":297,\"../internals/object-get-prototype-of\":313,\"../internals/object-set-prototype-of\":318,\"../internals/set-to-string-tag\":331,\"../internals/well-known-symbol\":357}],297:[function(e,t,r){\"use strict\";var n,i,s,o=e(\"../internals/fails\"),a=e(\"../internals/is-callable\"),l=e(\"../internals/is-object\"),c=e(\"../internals/object-create\"),u=e(\"../internals/object-get-prototype-of\"),h=e(\"../internals/define-built-in\"),f=e(\"../internals/well-known-symbol\"),d=e(\"../internals/is-pure\"),p=f(\"iterator\"),m=!1;[].keys&&(\"next\"in(s=[].keys())?(i=u(u(s)))!==Object.prototype&&(n=i):m=!0),!l(n)||o((function(){var e={};return n[p].call(e)!==e}))?n={}:d&&(n=c(n)),a(n[p])||h(n,p,(function(){return this})),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:m}},{\"../internals/define-built-in\":245,\"../internals/fails\":260,\"../internals/is-callable\":285,\"../internals/is-object\":289,\"../internals/is-pure\":290,\"../internals/object-create\":306,\"../internals/object-get-prototype-of\":313,\"../internals/well-known-symbol\":357}],298:[function(e,t,r){arguments[4][276][0].apply(r,arguments)},{dup:276}],299:[function(e,t,r){\"use strict\";var n=e(\"../internals/to-length\");t.exports=function(e){return n(e.length)}},{\"../internals/to-length\":343}],300:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\"),i=e(\"../internals/fails\"),s=e(\"../internals/is-callable\"),o=e(\"../internals/has-own-property\"),a=e(\"../internals/descriptors\"),l=e(\"../internals/function-name\").CONFIGURABLE,c=e(\"../internals/inspect-source\"),u=e(\"../internals/internal-state\"),h=u.enforce,f=u.get,d=String,p=Object.defineProperty,m=n(\"\".slice),b=n(\"\".replace),g=n([].join),y=a&&!i((function(){return 8!==p((function(){}),\"length\",{value:8}).length})),v=String(String).split(\"String\"),w=t.exports=function(e,t,r){\"Symbol(\"===m(d(t),0,7)&&(t=\"[\"+b(d(t),/^Symbol\\(([^)]*)\\)/,\"$1\")+\"]\"),r&&r.getter&&(t=\"get \"+t),r&&r.setter&&(t=\"set \"+t),(!o(e,\"name\")||l&&e.name!==t)&&(a?p(e,\"name\",{value:t,configurable:!0}):e.name=t),y&&r&&o(r,\"arity\")&&e.length!==r.arity&&p(e,\"length\",{value:r.arity});try{r&&o(r,\"constructor\")&&r.constructor?a&&p(e,\"prototype\",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=h(e);return o(n,\"source\")||(n.source=g(v,\"string\"==typeof t?t:\"\")),e};Function.prototype.toString=w((function(){return s(this)&&f(this).source||c(this)}),\"toString\")},{\"../internals/descriptors\":247,\"../internals/fails\":260,\"../internals/function-name\":265,\"../internals/function-uncurry-this\":268,\"../internals/has-own-property\":275,\"../internals/inspect-source\":281,\"../internals/internal-state\":282,\"../internals/is-callable\":285}],301:[function(e,t,r){\"use strict\";var n=Math.ceil,i=Math.floor;t.exports=Math.trunc||function(e){var t=+e;return(t>0?i:n)(t)}},{}],302:[function(e,t,r){\"use strict\";var n,i,s,o,a,l=e(\"../internals/global\"),c=e(\"../internals/function-bind-context\"),u=e(\"../internals/object-get-own-property-descriptor\").f,h=e(\"../internals/task\").set,f=e(\"../internals/queue\"),d=e(\"../internals/engine-is-ios\"),p=e(\"../internals/engine-is-ios-pebble\"),m=e(\"../internals/engine-is-webos-webkit\"),b=e(\"../internals/engine-is-node\"),g=l.MutationObserver||l.WebKitMutationObserver,y=l.document,v=l.process,w=l.Promise,_=u(l,\"queueMicrotask\"),x=_&&_.value;if(!x){var k=new f,S=function(){var e,t;for(b&&(e=v.domain)&&e.exit();t=k.get();)try{t()}catch(e){throw k.head&&n(),e}e&&e.enter()};d||b||m||!g||!y?!p&&w&&w.resolve?((o=w.resolve(void 0)).constructor=w,a=c(o.then,o),n=function(){a(S)}):b?n=function(){v.nextTick(S)}:(h=c(h,l),n=function(){h(S)}):(i=!0,s=y.createTextNode(\"\"),new g(S).observe(s,{characterData:!0}),n=function(){s.data=i=!i}),x=function(e){k.head||n(),k.add(e)}}t.exports=x},{\"../internals/engine-is-ios\":253,\"../internals/engine-is-ios-pebble\":252,\"../internals/engine-is-node\":254,\"../internals/engine-is-webos-webkit\":255,\"../internals/function-bind-context\":262,\"../internals/global\":274,\"../internals/object-get-own-property-descriptor\":309,\"../internals/queue\":328,\"../internals/task\":339}],303:[function(e,t,r){\"use strict\";var n=e(\"../internals/a-callable\"),i=TypeError,s=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw new i(\"Bad Promise constructor\");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};t.exports.f=function(e){return new s(e)}},{\"../internals/a-callable\":222}],304:[function(e,t,r){\"use strict\";var n=e(\"../internals/is-regexp\"),i=TypeError;t.exports=function(e){if(n(e))throw new i(\"The method doesn't accept regular expressions\");return e}},{\"../internals/is-regexp\":291}],305:[function(e,t,r){\"use strict\";var n=e(\"../internals/descriptors\"),i=e(\"../internals/function-uncurry-this\"),s=e(\"../internals/function-call\"),o=e(\"../internals/fails\"),a=e(\"../internals/object-keys\"),l=e(\"../internals/object-get-own-property-symbols\"),c=e(\"../internals/object-property-is-enumerable\"),u=e(\"../internals/to-object\"),h=e(\"../internals/indexed-object\"),f=Object.assign,d=Object.defineProperty,p=i([].concat);t.exports=!f||o((function(){if(n&&1!==f({b:1},f(d({},\"a\",{enumerable:!0,get:function(){d(this,\"b\",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol(\"assign detection\");return e[r]=7,\"abcdefghijklmnopqrst\".split(\"\").forEach((function(e){t[e]=e})),7!==f({},e)[r]||\"abcdefghijklmnopqrst\"!==a(f({},t)).join(\"\")}))?function(e,t){for(var r=u(e),i=arguments.length,o=1,f=l.f,d=c.f;i>o;)for(var m,b=h(arguments[o++]),g=f?p(a(b),f(b)):a(b),y=g.length,v=0;y>v;)m=g[v++],n&&!s(d,b,m)||(r[m]=b[m]);return r}:f},{\"../internals/descriptors\":247,\"../internals/fails\":260,\"../internals/function-call\":264,\"../internals/function-uncurry-this\":268,\"../internals/indexed-object\":280,\"../internals/object-get-own-property-symbols\":312,\"../internals/object-keys\":316,\"../internals/object-property-is-enumerable\":317,\"../internals/to-object\":344}],306:[function(e,t,r){\"use strict\";var n,i=e(\"../internals/an-object\"),s=e(\"../internals/object-define-properties\"),o=e(\"../internals/enum-bug-keys\"),a=e(\"../internals/hidden-keys\"),l=e(\"../internals/html\"),c=e(\"../internals/document-create-element\"),u=e(\"../internals/shared-key\"),h=u(\"IE_PROTO\"),f=function(){},d=function(e){return\"<script>\"+e+\"<\\/script>\"},p=function(e){e.write(d(\"\")),e.close();var t=e.parentWindow.Object;return e=null,t},m=function(){try{n=new ActiveXObject(\"htmlfile\")}catch(e){}var e,t;m=\"undefined\"!=typeof document?document.domain&&n?p(n):((t=c(\"iframe\")).style.display=\"none\",l.appendChild(t),t.src=String(\"javascript:\"),(e=t.contentWindow.document).open(),e.write(d(\"document.F=Object\")),e.close(),e.F):p(n);for(var r=o.length;r--;)delete m.prototype[o[r]];return m()};a[h]=!0,t.exports=Object.create||function(e,t){var r;return null!==e?(f.prototype=i(e),r=new f,f.prototype=null,r[h]=e):r=m(),void 0===t?r:s.f(r,t)}},{\"../internals/an-object\":227,\"../internals/document-create-element\":249,\"../internals/enum-bug-keys\":258,\"../internals/hidden-keys\":276,\"../internals/html\":278,\"../internals/object-define-properties\":307,\"../internals/shared-key\":332}],307:[function(e,t,r){\"use strict\";var n=e(\"../internals/descriptors\"),i=e(\"../internals/v8-prototype-define-bug\"),s=e(\"../internals/object-define-property\"),o=e(\"../internals/an-object\"),a=e(\"../internals/to-indexed-object\"),l=e(\"../internals/object-keys\");r.f=n&&!i?Object.defineProperties:function(e,t){o(e);for(var r,n=a(t),i=l(t),c=i.length,u=0;c>u;)s.f(e,r=i[u++],n[r]);return e}},{\"../internals/an-object\":227,\"../internals/descriptors\":247,\"../internals/object-define-property\":308,\"../internals/object-keys\":316,\"../internals/to-indexed-object\":341,\"../internals/v8-prototype-define-bug\":352}],308:[function(e,t,r){\"use strict\";var n=e(\"../internals/descriptors\"),i=e(\"../internals/ie8-dom-define\"),s=e(\"../internals/v8-prototype-define-bug\"),o=e(\"../internals/an-object\"),a=e(\"../internals/to-property-key\"),l=TypeError,c=Object.defineProperty,u=Object.getOwnPropertyDescriptor;r.f=n?s?function(e,t,r){if(o(e),t=a(t),o(r),\"function\"==typeof e&&\"prototype\"===t&&\"value\"in r&&\"writable\"in r&&!r.writable){var n=u(e,t);n&&n.writable&&(e[t]=r.value,r={configurable:\"configurable\"in r?r.configurable:n.configurable,enumerable:\"enumerable\"in r?r.enumerable:n.enumerable,writable:!1})}return c(e,t,r)}:c:function(e,t,r){if(o(e),t=a(t),o(r),i)try{return c(e,t,r)}catch(e){}if(\"get\"in r||\"set\"in r)throw new l(\"Accessors not supported\");return\"value\"in r&&(e[t]=r.value),e}},{\"../internals/an-object\":227,\"../internals/descriptors\":247,\"../internals/ie8-dom-define\":279,\"../internals/to-property-key\":346,\"../internals/v8-prototype-define-bug\":352}],309:[function(e,t,r){\"use strict\";var n=e(\"../internals/descriptors\"),i=e(\"../internals/function-call\"),s=e(\"../internals/object-property-is-enumerable\"),o=e(\"../internals/create-property-descriptor\"),a=e(\"../internals/to-indexed-object\"),l=e(\"../internals/to-property-key\"),c=e(\"../internals/has-own-property\"),u=e(\"../internals/ie8-dom-define\"),h=Object.getOwnPropertyDescriptor;r.f=n?h:function(e,t){if(e=a(e),t=l(t),u)try{return h(e,t)}catch(e){}if(c(e,t))return o(!i(s.f,e,t),e[t])}},{\"../internals/create-property-descriptor\":242,\"../internals/descriptors\":247,\"../internals/function-call\":264,\"../internals/has-own-property\":275,\"../internals/ie8-dom-define\":279,\"../internals/object-property-is-enumerable\":317,\"../internals/to-indexed-object\":341,\"../internals/to-property-key\":346}],310:[function(e,t,r){\"use strict\";var n=e(\"../internals/classof-raw\"),i=e(\"../internals/to-indexed-object\"),s=e(\"../internals/object-get-own-property-names\").f,o=e(\"../internals/array-slice-simple\"),a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(e){return a&&\"Window\"===n(e)?function(e){try{return s(e)}catch(e){return o(a)}}(e):s(i(e))}},{\"../internals/array-slice-simple\":230,\"../internals/classof-raw\":235,\"../internals/object-get-own-property-names\":311,\"../internals/to-indexed-object\":341}],311:[function(e,t,r){\"use strict\";var n=e(\"../internals/object-keys-internal\"),i=e(\"../internals/enum-bug-keys\").concat(\"length\",\"prototype\");r.f=Object.getOwnPropertyNames||function(e){return n(e,i)}},{\"../internals/enum-bug-keys\":258,\"../internals/object-keys-internal\":315}],312:[function(e,t,r){\"use strict\";r.f=Object.getOwnPropertySymbols},{}],313:[function(e,t,r){\"use strict\";var n=e(\"../internals/has-own-property\"),i=e(\"../internals/is-callable\"),s=e(\"../internals/to-object\"),o=e(\"../internals/shared-key\"),a=e(\"../internals/correct-prototype-getter\"),l=o(\"IE_PROTO\"),c=Object,u=c.prototype;t.exports=a?c.getPrototypeOf:function(e){var t=s(e);if(n(t,l))return t[l];var r=t.constructor;return i(r)&&t instanceof r?r.prototype:t instanceof c?u:null}},{\"../internals/correct-prototype-getter\":239,\"../internals/has-own-property\":275,\"../internals/is-callable\":285,\"../internals/shared-key\":332,\"../internals/to-object\":344}],314:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\");t.exports=n({}.isPrototypeOf)},{\"../internals/function-uncurry-this\":268}],315:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\"),i=e(\"../internals/has-own-property\"),s=e(\"../internals/to-indexed-object\"),o=e(\"../internals/array-includes\").indexOf,a=e(\"../internals/hidden-keys\"),l=n([].push);t.exports=function(e,t){var r,n=s(e),c=0,u=[];for(r in n)!i(a,r)&&i(n,r)&&l(u,r);for(;t.length>c;)i(n,r=t[c++])&&(~o(u,r)||l(u,r));return u}},{\"../internals/array-includes\":228,\"../internals/function-uncurry-this\":268,\"../internals/has-own-property\":275,\"../internals/hidden-keys\":276,\"../internals/to-indexed-object\":341}],316:[function(e,t,r){\"use strict\";var n=e(\"../internals/object-keys-internal\"),i=e(\"../internals/enum-bug-keys\");t.exports=Object.keys||function(e){return n(e,i)}},{\"../internals/enum-bug-keys\":258,\"../internals/object-keys-internal\":315}],317:[function(e,t,r){\"use strict\";var n={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,s=i&&!n.call({1:2},1);r.f=s?function(e){var t=i(this,e);return!!t&&t.enumerable}:n},{}],318:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this-accessor\"),i=e(\"../internals/an-object\"),s=e(\"../internals/a-possible-prototype\");t.exports=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var e,t=!1,r={};try{(e=n(Object.prototype,\"__proto__\",\"set\"))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return i(r),s(n),t?e(r,n):r.__proto__=n,r}}():void 0)},{\"../internals/a-possible-prototype\":224,\"../internals/an-object\":227,\"../internals/function-uncurry-this-accessor\":266}],319:[function(e,t,r){\"use strict\";var n=e(\"../internals/descriptors\"),i=e(\"../internals/fails\"),s=e(\"../internals/function-uncurry-this\"),o=e(\"../internals/object-get-prototype-of\"),a=e(\"../internals/object-keys\"),l=e(\"../internals/to-indexed-object\"),c=s(e(\"../internals/object-property-is-enumerable\").f),u=s([].push),h=n&&i((function(){var e=Object.create(null);return e[2]=2,!c(e,2)})),f=function(e){return function(t){for(var r,i=l(t),s=a(i),f=h&&null===o(i),d=s.length,p=0,m=[];d>p;)r=s[p++],n&&!(f?r in i:c(i,r))||u(m,e?[r,i[r]]:i[r]);return m}};t.exports={entries:f(!0),values:f(!1)}},{\"../internals/descriptors\":247,\"../internals/fails\":260,\"../internals/function-uncurry-this\":268,\"../internals/object-get-prototype-of\":313,\"../internals/object-keys\":316,\"../internals/object-property-is-enumerable\":317,\"../internals/to-indexed-object\":341}],320:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-call\"),i=e(\"../internals/is-callable\"),s=e(\"../internals/is-object\"),o=TypeError;t.exports=function(e,t){var r,a;if(\"string\"===t&&i(r=e.toString)&&!s(a=n(r,e)))return a;if(i(r=e.valueOf)&&!s(a=n(r,e)))return a;if(\"string\"!==t&&i(r=e.toString)&&!s(a=n(r,e)))return a;throw new o(\"Can't convert object to primitive value\")}},{\"../internals/function-call\":264,\"../internals/is-callable\":285,\"../internals/is-object\":289}],321:[function(e,t,r){\"use strict\";var n=e(\"../internals/get-built-in\"),i=e(\"../internals/function-uncurry-this\"),s=e(\"../internals/object-get-own-property-names\"),o=e(\"../internals/object-get-own-property-symbols\"),a=e(\"../internals/an-object\"),l=i([].concat);t.exports=n(\"Reflect\",\"ownKeys\")||function(e){var t=s.f(a(e)),r=o.f;return r?l(t,r(e)):t}},{\"../internals/an-object\":227,\"../internals/function-uncurry-this\":268,\"../internals/get-built-in\":269,\"../internals/object-get-own-property-names\":311,\"../internals/object-get-own-property-symbols\":312}],322:[function(e,t,r){\"use strict\";var n=e(\"../internals/global\");t.exports=n},{\"../internals/global\":274}],323:[function(e,t,r){\"use strict\";t.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},{}],324:[function(e,t,r){\"use strict\";var n=e(\"../internals/global\"),i=e(\"../internals/promise-native-constructor\"),s=e(\"../internals/is-callable\"),o=e(\"../internals/is-forced\"),a=e(\"../internals/inspect-source\"),l=e(\"../internals/well-known-symbol\"),c=e(\"../internals/engine-is-browser\"),u=e(\"../internals/engine-is-deno\"),h=e(\"../internals/is-pure\"),f=e(\"../internals/engine-v8-version\"),d=i&&i.prototype,p=l(\"species\"),m=!1,b=s(n.PromiseRejectionEvent),g=o(\"Promise\",(function(){var e=a(i),t=e!==String(i);if(!t&&66===f)return!0;if(h&&(!d.catch||!d.finally))return!0;if(!f||f<51||!/native code/.test(e)){var r=new i((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};if((r.constructor={})[p]=n,!(m=r.then((function(){}))instanceof n))return!0}return!t&&(c||u)&&!b}));t.exports={CONSTRUCTOR:g,REJECTION_EVENT:b,SUBCLASSING:m}},{\"../internals/engine-is-browser\":250,\"../internals/engine-is-deno\":251,\"../internals/engine-v8-version\":257,\"../internals/global\":274,\"../internals/inspect-source\":281,\"../internals/is-callable\":285,\"../internals/is-forced\":287,\"../internals/is-pure\":290,\"../internals/promise-native-constructor\":325,\"../internals/well-known-symbol\":357}],325:[function(e,t,r){\"use strict\";var n=e(\"../internals/global\");t.exports=n.Promise},{\"../internals/global\":274}],326:[function(e,t,r){\"use strict\";var n=e(\"../internals/an-object\"),i=e(\"../internals/is-object\"),s=e(\"../internals/new-promise-capability\");t.exports=function(e,t){if(n(e),i(t)&&t.constructor===e)return t;var r=s.f(e);return(0,r.resolve)(t),r.promise}},{\"../internals/an-object\":227,\"../internals/is-object\":289,\"../internals/new-promise-capability\":303}],327:[function(e,t,r){\"use strict\";var n=e(\"../internals/promise-native-constructor\"),i=e(\"../internals/check-correctness-of-iteration\"),s=e(\"../internals/promise-constructor-detection\").CONSTRUCTOR;t.exports=s||!i((function(e){n.all(e).then(void 0,(function(){}))}))},{\"../internals/check-correctness-of-iteration\":234,\"../internals/promise-constructor-detection\":324,\"../internals/promise-native-constructor\":325}],328:[function(e,t,r){\"use strict\";var n=function(){this.head=null,this.tail=null};n.prototype={add:function(e){var t={item:e,next:null},r=this.tail;r?r.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}},t.exports=n},{}],329:[function(e,t,r){\"use strict\";var n=e(\"../internals/is-null-or-undefined\"),i=TypeError;t.exports=function(e){if(n(e))throw new i(\"Can't call method on \"+e);return e}},{\"../internals/is-null-or-undefined\":288}],330:[function(e,t,r){\"use strict\";var n=e(\"../internals/get-built-in\"),i=e(\"../internals/define-built-in-accessor\"),s=e(\"../internals/well-known-symbol\"),o=e(\"../internals/descriptors\"),a=s(\"species\");t.exports=function(e){var t=n(e);o&&t&&!t[a]&&i(t,a,{configurable:!0,get:function(){return this}})}},{\"../internals/define-built-in-accessor\":244,\"../internals/descriptors\":247,\"../internals/get-built-in\":269,\"../internals/well-known-symbol\":357}],331:[function(e,t,r){\"use strict\";var n=e(\"../internals/object-define-property\").f,i=e(\"../internals/has-own-property\"),s=e(\"../internals/well-known-symbol\")(\"toStringTag\");t.exports=function(e,t,r){e&&!r&&(e=e.prototype),e&&!i(e,s)&&n(e,s,{configurable:!0,value:t})}},{\"../internals/has-own-property\":275,\"../internals/object-define-property\":308,\"../internals/well-known-symbol\":357}],332:[function(e,t,r){\"use strict\";var n=e(\"../internals/shared\"),i=e(\"../internals/uid\"),s=n(\"keys\");t.exports=function(e){return s[e]||(s[e]=i(e))}},{\"../internals/shared\":334,\"../internals/uid\":350}],333:[function(e,t,r){\"use strict\";var n=e(\"../internals/global\"),i=e(\"../internals/define-global-property\"),s=n[\"__core-js_shared__\"]||i(\"__core-js_shared__\",{});t.exports=s},{\"../internals/define-global-property\":246,\"../internals/global\":274}],334:[function(e,t,r){\"use strict\";var n=e(\"../internals/is-pure\"),i=e(\"../internals/shared-store\");(t.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})(\"versions\",[]).push({version:\"3.33.0\",mode:n?\"pure\":\"global\",copyright:\"\\xa9 2014-2023 Denis Pushkarev (zloirock.ru)\",license:\"https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE\",source:\"https://github.com/zloirock/core-js\"})},{\"../internals/is-pure\":290,\"../internals/shared-store\":333}],335:[function(e,t,r){\"use strict\";var n=e(\"../internals/an-object\"),i=e(\"../internals/a-constructor\"),s=e(\"../internals/is-null-or-undefined\"),o=e(\"../internals/well-known-symbol\")(\"species\");t.exports=function(e,t){var r,a=n(e).constructor;return void 0===a||s(r=n(a)[o])?t:i(r)}},{\"../internals/a-constructor\":223,\"../internals/an-object\":227,\"../internals/is-null-or-undefined\":288,\"../internals/well-known-symbol\":357}],336:[function(e,t,r){\"use strict\";var n=e(\"../internals/engine-v8-version\"),i=e(\"../internals/fails\"),s=e(\"../internals/global\").String;t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var e=Symbol(\"symbol detection\");return!s(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},{\"../internals/engine-v8-version\":257,\"../internals/fails\":260,\"../internals/global\":274}],337:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-call\"),i=e(\"../internals/get-built-in\"),s=e(\"../internals/well-known-symbol\"),o=e(\"../internals/define-built-in\");t.exports=function(){var e=i(\"Symbol\"),t=e&&e.prototype,r=t&&t.valueOf,a=s(\"toPrimitive\");t&&!t[a]&&o(t,a,(function(e){return n(r,this)}),{arity:1})}},{\"../internals/define-built-in\":245,\"../internals/function-call\":264,\"../internals/get-built-in\":269,\"../internals/well-known-symbol\":357}],338:[function(e,t,r){\"use strict\";var n=e(\"../internals/symbol-constructor-detection\");t.exports=n&&!!Symbol.for&&!!Symbol.keyFor},{\"../internals/symbol-constructor-detection\":336}],339:[function(e,t,r){\"use strict\";var n,i,s,o,a=e(\"../internals/global\"),l=e(\"../internals/function-apply\"),c=e(\"../internals/function-bind-context\"),u=e(\"../internals/is-callable\"),h=e(\"../internals/has-own-property\"),f=e(\"../internals/fails\"),d=e(\"../internals/html\"),p=e(\"../internals/array-slice\"),m=e(\"../internals/document-create-element\"),b=e(\"../internals/validate-arguments-length\"),g=e(\"../internals/engine-is-ios\"),y=e(\"../internals/engine-is-node\"),v=a.setImmediate,w=a.clearImmediate,_=a.process,x=a.Dispatch,k=a.Function,S=a.MessageChannel,M=a.String,C=0,T={};f((function(){n=a.location}));var E=function(e){if(h(T,e)){var t=T[e];delete T[e],t()}},A=function(e){return function(){E(e)}},R=function(e){E(e.data)},O=function(e){a.postMessage(M(e),n.protocol+\"//\"+n.host)};v&&w||(v=function(e){b(arguments.length,1);var t=u(e)?e:k(e),r=p(arguments,1);return T[++C]=function(){l(t,void 0,r)},i(C),C},w=function(e){delete T[e]},y?i=function(e){_.nextTick(A(e))}:x&&x.now?i=function(e){x.now(A(e))}:S&&!g?(o=(s=new S).port2,s.port1.onmessage=R,i=c(o.postMessage,o)):a.addEventListener&&u(a.postMessage)&&!a.importScripts&&n&&\"file:\"!==n.protocol&&!f(O)?(i=O,a.addEventListener(\"message\",R,!1)):i=\"onreadystatechange\"in m(\"script\")?function(e){d.appendChild(m(\"script\")).onreadystatechange=function(){d.removeChild(this),E(e)}}:function(e){setTimeout(A(e),0)}),t.exports={set:v,clear:w}},{\"../internals/array-slice\":231,\"../internals/document-create-element\":249,\"../internals/engine-is-ios\":253,\"../internals/engine-is-node\":254,\"../internals/fails\":260,\"../internals/function-apply\":261,\"../internals/function-bind-context\":262,\"../internals/global\":274,\"../internals/has-own-property\":275,\"../internals/html\":278,\"../internals/is-callable\":285,\"../internals/validate-arguments-length\":353}],340:[function(e,t,r){\"use strict\";var n=e(\"../internals/to-integer-or-infinity\"),i=Math.max,s=Math.min;t.exports=function(e,t){var r=n(e);return r<0?i(r+t,0):s(r,t)}},{\"../internals/to-integer-or-infinity\":342}],341:[function(e,t,r){\"use strict\";var n=e(\"../internals/indexed-object\"),i=e(\"../internals/require-object-coercible\");t.exports=function(e){return n(i(e))}},{\"../internals/indexed-object\":280,\"../internals/require-object-coercible\":329}],342:[function(e,t,r){\"use strict\";var n=e(\"../internals/math-trunc\");t.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},{\"../internals/math-trunc\":301}],343:[function(e,t,r){\"use strict\";var n=e(\"../internals/to-integer-or-infinity\"),i=Math.min;t.exports=function(e){return e>0?i(n(e),9007199254740991):0}},{\"../internals/to-integer-or-infinity\":342}],344:[function(e,t,r){\"use strict\";var n=e(\"../internals/require-object-coercible\"),i=Object;t.exports=function(e){return i(n(e))}},{\"../internals/require-object-coercible\":329}],345:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-call\"),i=e(\"../internals/is-object\"),s=e(\"../internals/is-symbol\"),o=e(\"../internals/get-method\"),a=e(\"../internals/ordinary-to-primitive\"),l=e(\"../internals/well-known-symbol\"),c=TypeError,u=l(\"toPrimitive\");t.exports=function(e,t){if(!i(e)||s(e))return e;var r,l=o(e,u);if(l){if(void 0===t&&(t=\"default\"),r=n(l,e,t),!i(r)||s(r))return r;throw new c(\"Can't convert object to primitive value\")}return void 0===t&&(t=\"number\"),a(e,t)}},{\"../internals/function-call\":264,\"../internals/get-method\":273,\"../internals/is-object\":289,\"../internals/is-symbol\":292,\"../internals/ordinary-to-primitive\":320,\"../internals/well-known-symbol\":357}],346:[function(e,t,r){\"use strict\";var n=e(\"../internals/to-primitive\"),i=e(\"../internals/is-symbol\");t.exports=function(e){var t=n(e,\"string\");return i(t)?t:t+\"\"}},{\"../internals/is-symbol\":292,\"../internals/to-primitive\":345}],347:[function(e,t,r){\"use strict\";var n={};n[e(\"../internals/well-known-symbol\")(\"toStringTag\")]=\"z\",t.exports=\"[object z]\"===String(n)},{\"../internals/well-known-symbol\":357}],348:[function(e,t,r){\"use strict\";var n=e(\"../internals/classof\"),i=String;t.exports=function(e){if(\"Symbol\"===n(e))throw new TypeError(\"Cannot convert a Symbol value to a string\");return i(e)}},{\"../internals/classof\":236}],349:[function(e,t,r){\"use strict\";var n=String;t.exports=function(e){try{return n(e)}catch(e){return\"Object\"}}},{}],350:[function(e,t,r){\"use strict\";var n=e(\"../internals/function-uncurry-this\"),i=0,s=Math.random(),o=n(1..toString);t.exports=function(e){return\"Symbol(\"+(void 0===e?\"\":e)+\")_\"+o(++i+s,36)}},{\"../internals/function-uncurry-this\":268}],351:[function(e,t,r){\"use strict\";var n=e(\"../internals/symbol-constructor-detection\");t.exports=n&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator},{\"../internals/symbol-constructor-detection\":336}],352:[function(e,t,r){\"use strict\";var n=e(\"../internals/descriptors\"),i=e(\"../internals/fails\");t.exports=n&&i((function(){return 42!==Object.defineProperty((function(){}),\"prototype\",{value:42,writable:!1}).prototype}))},{\"../internals/descriptors\":247,\"../internals/fails\":260}],353:[function(e,t,r){\"use strict\";var n=TypeError;t.exports=function(e,t){if(e<t)throw new n(\"Not enough arguments\");return e}},{}],354:[function(e,t,r){\"use strict\";var n=e(\"../internals/global\"),i=e(\"../internals/is-callable\"),s=n.WeakMap;t.exports=i(s)&&/native code/.test(String(s))},{\"../internals/global\":274,\"../internals/is-callable\":285}],355:[function(e,t,r){\"use strict\";var n=e(\"../internals/path\"),i=e(\"../internals/has-own-property\"),s=e(\"../internals/well-known-symbol-wrapped\"),o=e(\"../internals/object-define-property\").f;t.exports=function(e){var t=n.Symbol||(n.Symbol={});i(t,e)||o(t,e,{value:s.f(e)})}},{\"../internals/has-own-property\":275,\"../internals/object-define-property\":308,\"../internals/path\":322,\"../internals/well-known-symbol-wrapped\":356}],356:[function(e,t,r){\"use strict\";var n=e(\"../internals/well-known-symbol\");r.f=n},{\"../internals/well-known-symbol\":357}],357:[function(e,t,r){\"use strict\";var n=e(\"../internals/global\"),i=e(\"../internals/shared\"),s=e(\"../internals/has-own-property\"),o=e(\"../internals/uid\"),a=e(\"../internals/symbol-constructor-detection\"),l=e(\"../internals/use-symbol-as-uid\"),c=n.Symbol,u=i(\"wks\"),h=l?c.for||c:c&&c.withoutSetter||o;t.exports=function(e){return s(u,e)||(u[e]=a&&s(c,e)?c[e]:h(\"Symbol.\"+e)),u[e]}},{\"../internals/global\":274,\"../internals/has-own-property\":275,\"../internals/shared\":334,\"../internals/symbol-constructor-detection\":336,\"../internals/uid\":350,\"../internals/use-symbol-as-uid\":351}],358:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/array-iteration\").findIndex,s=e(\"../internals/add-to-unscopables\"),o=!0;\"findIndex\"in[]&&Array(1).findIndex((function(){o=!1})),n({target:\"Array\",proto:!0,forced:o},{findIndex:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}}),s(\"findIndex\")},{\"../internals/add-to-unscopables\":225,\"../internals/array-iteration\":229,\"../internals/export\":259}],359:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/array-iteration\").find,s=e(\"../internals/add-to-unscopables\"),o=!0;\"find\"in[]&&Array(1).find((function(){o=!1})),n({target:\"Array\",proto:!0,forced:o},{find:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}}),s(\"find\")},{\"../internals/add-to-unscopables\":225,\"../internals/array-iteration\":229,\"../internals/export\":259}],360:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/array-includes\").includes,s=e(\"../internals/fails\"),o=e(\"../internals/add-to-unscopables\");n({target:\"Array\",proto:!0,forced:s((function(){return!Array(1).includes()}))},{includes:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}}),o(\"includes\")},{\"../internals/add-to-unscopables\":225,\"../internals/array-includes\":228,\"../internals/export\":259,\"../internals/fails\":260}],361:[function(e,t,r){\"use strict\";var n=e(\"../internals/to-indexed-object\"),i=e(\"../internals/add-to-unscopables\"),s=e(\"../internals/iterators\"),o=e(\"../internals/internal-state\"),a=e(\"../internals/object-define-property\").f,l=e(\"../internals/iterator-define\"),c=e(\"../internals/create-iter-result-object\"),u=e(\"../internals/is-pure\"),h=e(\"../internals/descriptors\"),f=o.set,d=o.getterFor(\"Array Iterator\");t.exports=l(Array,\"Array\",(function(e,t){f(this,{type:\"Array Iterator\",target:n(e),index:0,kind:t})}),(function(){var e=d(this),t=e.target,r=e.kind,n=e.index++;if(!t||n>=t.length)return e.target=void 0,c(void 0,!0);switch(r){case\"keys\":return c(n,!1);case\"values\":return c(t[n],!1)}return c([n,t[n]],!1)}),\"values\");var p=s.Arguments=s.Array;if(i(\"keys\"),i(\"values\"),i(\"entries\"),!u&&h&&\"values\"!==p.name)try{a(p,\"name\",{value:\"values\"})}catch(e){}},{\"../internals/add-to-unscopables\":225,\"../internals/create-iter-result-object\":240,\"../internals/descriptors\":247,\"../internals/internal-state\":282,\"../internals/is-pure\":290,\"../internals/iterator-define\":296,\"../internals/iterators\":298,\"../internals/object-define-property\":308,\"../internals/to-indexed-object\":341}],362:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/get-built-in\"),s=e(\"../internals/function-apply\"),o=e(\"../internals/function-call\"),a=e(\"../internals/function-uncurry-this\"),l=e(\"../internals/fails\"),c=e(\"../internals/is-callable\"),u=e(\"../internals/is-symbol\"),h=e(\"../internals/array-slice\"),f=e(\"../internals/get-json-replacer-function\"),d=e(\"../internals/symbol-constructor-detection\"),p=String,m=i(\"JSON\",\"stringify\"),b=a(/./.exec),g=a(\"\".charAt),y=a(\"\".charCodeAt),v=a(\"\".replace),w=a(1..toString),_=/[\\uD800-\\uDFFF]/g,x=/^[\\uD800-\\uDBFF]$/,k=/^[\\uDC00-\\uDFFF]$/,S=!d||l((function(){var e=i(\"Symbol\")(\"stringify detection\");return\"[null]\"!==m([e])||\"{}\"!==m({a:e})||\"{}\"!==m(Object(e))})),M=l((function(){return'\"\\\\udf06\\\\ud834\"'!==m(\"\\udf06\\ud834\")||'\"\\\\udead\"'!==m(\"\\udead\")})),C=function(e,t){var r=h(arguments),n=f(t);if(c(n)||void 0!==e&&!u(e))return r[1]=function(e,t){if(c(n)&&(t=o(n,this,p(e),t)),!u(t))return t},s(m,null,r)},T=function(e,t,r){var n=g(r,t-1),i=g(r,t+1);return b(x,e)&&!b(k,i)||b(k,e)&&!b(x,n)?\"\\\\u\"+w(y(e,0),16):e};m&&n({target:\"JSON\",stat:!0,arity:3,forced:S||M},{stringify:function(e,t,r){var n=h(arguments),i=s(S?C:m,null,n);return M&&\"string\"==typeof i?v(i,_,T):i}})},{\"../internals/array-slice\":231,\"../internals/export\":259,\"../internals/fails\":260,\"../internals/function-apply\":261,\"../internals/function-call\":264,\"../internals/function-uncurry-this\":268,\"../internals/get-built-in\":269,\"../internals/get-json-replacer-function\":272,\"../internals/is-callable\":285,\"../internals/is-symbol\":292,\"../internals/symbol-constructor-detection\":336}],363:[function(e,t,r){\"use strict\";e(\"../internals/export\")({target:\"Number\",stat:!0},{isNaN:function(e){return e!=e}})},{\"../internals/export\":259}],364:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/object-assign\");n({target:\"Object\",stat:!0,arity:2,forced:Object.assign!==i},{assign:i})},{\"../internals/export\":259,\"../internals/object-assign\":305}],365:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/symbol-constructor-detection\"),s=e(\"../internals/fails\"),o=e(\"../internals/object-get-own-property-symbols\"),a=e(\"../internals/to-object\");n({target:\"Object\",stat:!0,forced:!i||s((function(){o.f(1)}))},{getOwnPropertySymbols:function(e){var t=o.f;return t?t(a(e)):[]}})},{\"../internals/export\":259,\"../internals/fails\":260,\"../internals/object-get-own-property-symbols\":312,\"../internals/symbol-constructor-detection\":336,\"../internals/to-object\":344}],366:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/to-object\"),s=e(\"../internals/object-keys\");n({target:\"Object\",stat:!0,forced:e(\"../internals/fails\")((function(){s(1)}))},{keys:function(e){return s(i(e))}})},{\"../internals/export\":259,\"../internals/fails\":260,\"../internals/object-keys\":316,\"../internals/to-object\":344}],367:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/object-to-array\").values;n({target:\"Object\",stat:!0},{values:function(e){return i(e)}})},{\"../internals/export\":259,\"../internals/object-to-array\":319}],368:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/function-call\"),s=e(\"../internals/a-callable\"),o=e(\"../internals/new-promise-capability\"),a=e(\"../internals/perform\"),l=e(\"../internals/iterate\");n({target:\"Promise\",stat:!0,forced:e(\"../internals/promise-statics-incorrect-iteration\")},{all:function(e){var t=this,r=o.f(t),n=r.resolve,c=r.reject,u=a((function(){var r=s(t.resolve),o=[],a=0,u=1;l(e,(function(e){var s=a++,l=!1;u++,i(r,t,e).then((function(e){l||(l=!0,o[s]=e,--u||n(o))}),c)})),--u||n(o)}));return u.error&&c(u.value),r.promise}})},{\"../internals/a-callable\":222,\"../internals/export\":259,\"../internals/function-call\":264,\"../internals/iterate\":293,\"../internals/new-promise-capability\":303,\"../internals/perform\":323,\"../internals/promise-statics-incorrect-iteration\":327}],369:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/is-pure\"),s=e(\"../internals/promise-constructor-detection\").CONSTRUCTOR,o=e(\"../internals/promise-native-constructor\"),a=e(\"../internals/get-built-in\"),l=e(\"../internals/is-callable\"),c=e(\"../internals/define-built-in\"),u=o&&o.prototype;if(n({target:\"Promise\",proto:!0,forced:s,real:!0},{catch:function(e){return this.then(void 0,e)}}),!i&&l(o)){var h=a(\"Promise\").prototype.catch;u.catch!==h&&c(u,\"catch\",h,{unsafe:!0})}},{\"../internals/define-built-in\":245,\"../internals/export\":259,\"../internals/get-built-in\":269,\"../internals/is-callable\":285,\"../internals/is-pure\":290,\"../internals/promise-constructor-detection\":324,\"../internals/promise-native-constructor\":325}],370:[function(e,t,r){\"use strict\";var n,i,s,o=e(\"../internals/export\"),a=e(\"../internals/is-pure\"),l=e(\"../internals/engine-is-node\"),c=e(\"../internals/global\"),u=e(\"../internals/function-call\"),h=e(\"../internals/define-built-in\"),f=e(\"../internals/object-set-prototype-of\"),d=e(\"../internals/set-to-string-tag\"),p=e(\"../internals/set-species\"),m=e(\"../internals/a-callable\"),b=e(\"../internals/is-callable\"),g=e(\"../internals/is-object\"),y=e(\"../internals/an-instance\"),v=e(\"../internals/species-constructor\"),w=e(\"../internals/task\").set,_=e(\"../internals/microtask\"),x=e(\"../internals/host-report-errors\"),k=e(\"../internals/perform\"),S=e(\"../internals/queue\"),M=e(\"../internals/internal-state\"),C=e(\"../internals/promise-native-constructor\"),T=e(\"../internals/promise-constructor-detection\"),E=e(\"../internals/new-promise-capability\"),A=T.CONSTRUCTOR,R=T.REJECTION_EVENT,O=T.SUBCLASSING,j=M.getterFor(\"Promise\"),I=M.set,N=C&&C.prototype,P=C,B=N,D=c.TypeError,F=c.document,L=c.process,z=E.f,U=z,$=!!(F&&F.createEvent&&c.dispatchEvent),H=function(e){var t;return!(!g(e)||!b(t=e.then))&&t},V=function(e,t){var r,n,i,s=t.value,o=1===t.state,a=o?e.ok:e.fail,l=e.resolve,c=e.reject,h=e.domain;try{a?(o||(2===t.rejection&&Y(t),t.rejection=1),!0===a?r=s:(h&&h.enter(),r=a(s),h&&(h.exit(),i=!0)),r===e.promise?c(new D(\"Promise-chain cycle\")):(n=H(r))?u(n,r,l,c):l(r)):c(s)}catch(e){h&&!i&&h.exit(),c(e)}},q=function(e,t){e.notified||(e.notified=!0,_((function(){for(var r,n=e.reactions;r=n.get();)V(r,e);e.notified=!1,t&&!e.rejection&&X(e)})))},W=function(e,t,r){var n,i;$?((n=F.createEvent(\"Event\")).promise=t,n.reason=r,n.initEvent(e,!1,!0),c.dispatchEvent(n)):n={promise:t,reason:r},!R&&(i=c[\"on\"+e])?i(n):\"unhandledrejection\"===e&&x(\"Unhandled promise rejection\",r)},X=function(e){u(w,c,(function(){var t,r=e.facade,n=e.value;if(K(e)&&(t=k((function(){l?L.emit(\"unhandledRejection\",n,r):W(\"unhandledrejection\",r,n)})),e.rejection=l||K(e)?2:1,t.error))throw t.value}))},K=function(e){return 1!==e.rejection&&!e.parent},Y=function(e){u(w,c,(function(){var t=e.facade;l?L.emit(\"rejectionHandled\",t):W(\"rejectionhandled\",t,e.value)}))},Z=function(e,t,r){return function(n){e(t,n,r)}},G=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=2,q(e,!0))},J=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw new D(\"Promise can't be resolved itself\");var n=H(t);n?_((function(){var r={done:!1};try{u(n,t,Z(J,r,e),Z(G,r,e))}catch(t){G(r,t,e)}})):(e.value=t,e.state=1,q(e,!1))}catch(t){G({done:!1},t,e)}}};if(A&&(B=(P=function(e){y(this,B),m(e),u(n,this);var t=j(this);try{e(Z(J,t),Z(G,t))}catch(e){G(t,e)}}).prototype,(n=function(e){I(this,{type:\"Promise\",done:!1,notified:!1,parent:!1,reactions:new S,rejection:!1,state:0,value:void 0})}).prototype=h(B,\"then\",(function(e,t){var r=j(this),n=z(v(this,P));return r.parent=!0,n.ok=!b(e)||e,n.fail=b(t)&&t,n.domain=l?L.domain:void 0,0===r.state?r.reactions.add(n):_((function(){V(n,r)})),n.promise})),i=function(){var e=new n,t=j(e);this.promise=e,this.resolve=Z(J,t),this.reject=Z(G,t)},E.f=z=function(e){return e===P||void 0===e?new i(e):U(e)},!a&&b(C)&&N!==Object.prototype)){s=N.then,O||h(N,\"then\",(function(e,t){var r=this;return new P((function(e,t){u(s,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete N.constructor}catch(e){}f&&f(N,B)}o({global:!0,constructor:!0,wrap:!0,forced:A},{Promise:P}),d(P,\"Promise\",!1,!0),p(\"Promise\")},{\"../internals/a-callable\":222,\"../internals/an-instance\":226,\"../internals/define-built-in\":245,\"../internals/engine-is-node\":254,\"../internals/export\":259,\"../internals/function-call\":264,\"../internals/global\":274,\"../internals/host-report-errors\":277,\"../internals/internal-state\":282,\"../internals/is-callable\":285,\"../internals/is-object\":289,\"../internals/is-pure\":290,\"../internals/microtask\":302,\"../internals/new-promise-capability\":303,\"../internals/object-set-prototype-of\":318,\"../internals/perform\":323,\"../internals/promise-constructor-detection\":324,\"../internals/promise-native-constructor\":325,\"../internals/queue\":328,\"../internals/set-species\":330,\"../internals/set-to-string-tag\":331,\"../internals/species-constructor\":335,\"../internals/task\":339}],371:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/is-pure\"),s=e(\"../internals/promise-native-constructor\"),o=e(\"../internals/fails\"),a=e(\"../internals/get-built-in\"),l=e(\"../internals/is-callable\"),c=e(\"../internals/species-constructor\"),u=e(\"../internals/promise-resolve\"),h=e(\"../internals/define-built-in\"),f=s&&s.prototype;if(n({target:\"Promise\",proto:!0,real:!0,forced:!!s&&o((function(){f.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=c(this,a(\"Promise\")),r=l(e);return this.then(r?function(r){return u(t,e()).then((function(){return r}))}:e,r?function(r){return u(t,e()).then((function(){throw r}))}:e)}}),!i&&l(s)){var d=a(\"Promise\").prototype.finally;f.finally!==d&&h(f,\"finally\",d,{unsafe:!0})}},{\"../internals/define-built-in\":245,\"../internals/export\":259,\"../internals/fails\":260,\"../internals/get-built-in\":269,\"../internals/is-callable\":285,\"../internals/is-pure\":290,\"../internals/promise-native-constructor\":325,\"../internals/promise-resolve\":326,\"../internals/species-constructor\":335}],372:[function(e,t,r){\"use strict\";e(\"../modules/es.promise.constructor\"),e(\"../modules/es.promise.all\"),e(\"../modules/es.promise.catch\"),e(\"../modules/es.promise.race\"),e(\"../modules/es.promise.reject\"),e(\"../modules/es.promise.resolve\")},{\"../modules/es.promise.all\":368,\"../modules/es.promise.catch\":369,\"../modules/es.promise.constructor\":370,\"../modules/es.promise.race\":373,\"../modules/es.promise.reject\":374,\"../modules/es.promise.resolve\":375}],373:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/function-call\"),s=e(\"../internals/a-callable\"),o=e(\"../internals/new-promise-capability\"),a=e(\"../internals/perform\"),l=e(\"../internals/iterate\");n({target:\"Promise\",stat:!0,forced:e(\"../internals/promise-statics-incorrect-iteration\")},{race:function(e){var t=this,r=o.f(t),n=r.reject,c=a((function(){var o=s(t.resolve);l(e,(function(e){i(o,t,e).then(r.resolve,n)}))}));return c.error&&n(c.value),r.promise}})},{\"../internals/a-callable\":222,\"../internals/export\":259,\"../internals/function-call\":264,\"../internals/iterate\":293,\"../internals/new-promise-capability\":303,\"../internals/perform\":323,\"../internals/promise-statics-incorrect-iteration\":327}],374:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/function-call\"),s=e(\"../internals/new-promise-capability\");n({target:\"Promise\",stat:!0,forced:e(\"../internals/promise-constructor-detection\").CONSTRUCTOR},{reject:function(e){var t=s.f(this);return i(t.reject,void 0,e),t.promise}})},{\"../internals/export\":259,\"../internals/function-call\":264,\"../internals/new-promise-capability\":303,\"../internals/promise-constructor-detection\":324}],375:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/get-built-in\"),s=e(\"../internals/is-pure\"),o=e(\"../internals/promise-native-constructor\"),a=e(\"../internals/promise-constructor-detection\").CONSTRUCTOR,l=e(\"../internals/promise-resolve\"),c=i(\"Promise\"),u=s&&!a;n({target:\"Promise\",stat:!0,forced:s||a},{resolve:function(e){return l(u&&this===c?o:this,e)}})},{\"../internals/export\":259,\"../internals/get-built-in\":269,\"../internals/is-pure\":290,\"../internals/promise-constructor-detection\":324,\"../internals/promise-native-constructor\":325,\"../internals/promise-resolve\":326}],376:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/function-uncurry-this\"),s=e(\"../internals/to-absolute-index\"),o=RangeError,a=String.fromCharCode,l=String.fromCodePoint,c=i([].join);n({target:\"String\",stat:!0,arity:1,forced:!!l&&1!==l.length},{fromCodePoint:function(e){for(var t,r=[],n=arguments.length,i=0;n>i;){if(t=+arguments[i++],s(t,1114111)!==t)throw new o(t+\" is not a valid code point\");r[i]=t<65536?a(t):a(55296+((t-=65536)>>10),t%1024+56320)}return c(r,\"\")}})},{\"../internals/export\":259,\"../internals/function-uncurry-this\":268,\"../internals/to-absolute-index\":340}],377:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/function-uncurry-this\"),s=e(\"../internals/not-a-regexp\"),o=e(\"../internals/require-object-coercible\"),a=e(\"../internals/to-string\"),l=e(\"../internals/correct-is-regexp-logic\"),c=i(\"\".indexOf);n({target:\"String\",proto:!0,forced:!l(\"includes\")},{includes:function(e){return!!~c(a(o(this)),a(s(e)),arguments.length>1?arguments[1]:void 0)}})},{\"../internals/correct-is-regexp-logic\":238,\"../internals/export\":259,\"../internals/function-uncurry-this\":268,\"../internals/not-a-regexp\":304,\"../internals/require-object-coercible\":329,\"../internals/to-string\":348}],378:[function(e,t,r){\"use strict\";e(\"../internals/well-known-symbol-define\")(\"asyncIterator\")},{\"../internals/well-known-symbol-define\":355}],379:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/global\"),s=e(\"../internals/function-call\"),o=e(\"../internals/function-uncurry-this\"),a=e(\"../internals/is-pure\"),l=e(\"../internals/descriptors\"),c=e(\"../internals/symbol-constructor-detection\"),u=e(\"../internals/fails\"),h=e(\"../internals/has-own-property\"),f=e(\"../internals/object-is-prototype-of\"),d=e(\"../internals/an-object\"),p=e(\"../internals/to-indexed-object\"),m=e(\"../internals/to-property-key\"),b=e(\"../internals/to-string\"),g=e(\"../internals/create-property-descriptor\"),y=e(\"../internals/object-create\"),v=e(\"../internals/object-keys\"),w=e(\"../internals/object-get-own-property-names\"),_=e(\"../internals/object-get-own-property-names-external\"),x=e(\"../internals/object-get-own-property-symbols\"),k=e(\"../internals/object-get-own-property-descriptor\"),S=e(\"../internals/object-define-property\"),M=e(\"../internals/object-define-properties\"),C=e(\"../internals/object-property-is-enumerable\"),T=e(\"../internals/define-built-in\"),E=e(\"../internals/define-built-in-accessor\"),A=e(\"../internals/shared\"),R=e(\"../internals/shared-key\"),O=e(\"../internals/hidden-keys\"),j=e(\"../internals/uid\"),I=e(\"../internals/well-known-symbol\"),N=e(\"../internals/well-known-symbol-wrapped\"),P=e(\"../internals/well-known-symbol-define\"),B=e(\"../internals/symbol-define-to-primitive\"),D=e(\"../internals/set-to-string-tag\"),F=e(\"../internals/internal-state\"),L=e(\"../internals/array-iteration\").forEach,z=R(\"hidden\"),U=F.set,$=F.getterFor(\"Symbol\"),H=Object.prototype,V=i.Symbol,q=V&&V.prototype,W=i.RangeError,X=i.TypeError,K=i.QObject,Y=k.f,Z=S.f,G=_.f,J=C.f,Q=o([].push),ee=A(\"symbols\"),te=A(\"op-symbols\"),re=A(\"wks\"),ne=!K||!K.prototype||!K.prototype.findChild,ie=function(e,t,r){var n=Y(H,t);n&&delete H[t],Z(e,t,r),n&&e!==H&&Z(H,t,n)},se=l&&u((function(){return 7!==y(Z({},\"a\",{get:function(){return Z(this,\"a\",{value:7}).a}})).a}))?ie:Z,oe=function(e,t){var r=ee[e]=y(q);return U(r,{type:\"Symbol\",tag:e,description:t}),l||(r.description=t),r},ae=function(e,t,r){e===H&&ae(te,t,r),d(e);var n=m(t);return d(r),h(ee,n)?(r.enumerable?(h(e,z)&&e[z][n]&&(e[z][n]=!1),r=y(r,{enumerable:g(0,!1)})):(h(e,z)||Z(e,z,g(1,{})),e[z][n]=!0),se(e,n,r)):Z(e,n,r)},le=function(e,t){d(e);var r=p(t),n=v(r).concat(fe(r));return L(n,(function(t){l&&!s(ce,r,t)||ae(e,t,r[t])})),e},ce=function(e){var t=m(e),r=s(J,this,t);return!(this===H&&h(ee,t)&&!h(te,t))&&(!(r||!h(this,t)||!h(ee,t)||h(this,z)&&this[z][t])||r)},ue=function(e,t){var r=p(e),n=m(t);if(r!==H||!h(ee,n)||h(te,n)){var i=Y(r,n);return!i||!h(ee,n)||h(r,z)&&r[z][n]||(i.enumerable=!0),i}},he=function(e){var t=G(p(e)),r=[];return L(t,(function(e){h(ee,e)||h(O,e)||Q(r,e)})),r},fe=function(e){var t=e===H,r=G(t?te:p(e)),n=[];return L(r,(function(e){!h(ee,e)||t&&!h(H,e)||Q(n,ee[e])})),n};c||(T(q=(V=function(){if(f(q,this))throw new X(\"Symbol is not a constructor\");var e=arguments.length&&void 0!==arguments[0]?b(arguments[0]):void 0,t=j(e),r=function(e){this===H&&s(r,te,e),h(this,z)&&h(this[z],t)&&(this[z][t]=!1);var n=g(1,e);try{se(this,t,n)}catch(e){if(!(e instanceof W))throw e;ie(this,t,n)}};return l&&ne&&se(H,t,{configurable:!0,set:r}),oe(t,e)}).prototype,\"toString\",(function(){return $(this).tag})),T(V,\"withoutSetter\",(function(e){return oe(j(e),e)})),C.f=ce,S.f=ae,M.f=le,k.f=ue,w.f=_.f=he,x.f=fe,N.f=function(e){return oe(I(e),e)},l&&(E(q,\"description\",{configurable:!0,get:function(){return $(this).description}}),a||T(H,\"propertyIsEnumerable\",ce,{unsafe:!0}))),n({global:!0,constructor:!0,wrap:!0,forced:!c,sham:!c},{Symbol:V}),L(v(re),(function(e){P(e)})),n({target:\"Symbol\",stat:!0,forced:!c},{useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),n({target:\"Object\",stat:!0,forced:!c,sham:!l},{create:function(e,t){return void 0===t?y(e):le(y(e),t)},defineProperty:ae,defineProperties:le,getOwnPropertyDescriptor:ue}),n({target:\"Object\",stat:!0,forced:!c},{getOwnPropertyNames:he}),B(),D(V,\"Symbol\"),O[z]=!0},{\"../internals/an-object\":227,\"../internals/array-iteration\":229,\"../internals/create-property-descriptor\":242,\"../internals/define-built-in\":245,\"../internals/define-built-in-accessor\":244,\"../internals/descriptors\":247,\"../internals/export\":259,\"../internals/fails\":260,\"../internals/function-call\":264,\"../internals/function-uncurry-this\":268,\"../internals/global\":274,\"../internals/has-own-property\":275,\"../internals/hidden-keys\":276,\"../internals/internal-state\":282,\"../internals/is-pure\":290,\"../internals/object-create\":306,\"../internals/object-define-properties\":307,\"../internals/object-define-property\":308,\"../internals/object-get-own-property-descriptor\":309,\"../internals/object-get-own-property-names\":311,\"../internals/object-get-own-property-names-external\":310,\"../internals/object-get-own-property-symbols\":312,\"../internals/object-is-prototype-of\":314,\"../internals/object-keys\":316,\"../internals/object-property-is-enumerable\":317,\"../internals/set-to-string-tag\":331,\"../internals/shared\":334,\"../internals/shared-key\":332,\"../internals/symbol-constructor-detection\":336,\"../internals/symbol-define-to-primitive\":337,\"../internals/to-indexed-object\":341,\"../internals/to-property-key\":346,\"../internals/to-string\":348,\"../internals/uid\":350,\"../internals/well-known-symbol\":357,\"../internals/well-known-symbol-define\":355,\"../internals/well-known-symbol-wrapped\":356}],380:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/get-built-in\"),s=e(\"../internals/has-own-property\"),o=e(\"../internals/to-string\"),a=e(\"../internals/shared\"),l=e(\"../internals/symbol-registry-detection\"),c=a(\"string-to-symbol-registry\"),u=a(\"symbol-to-string-registry\");n({target:\"Symbol\",stat:!0,forced:!l},{for:function(e){var t=o(e);if(s(c,t))return c[t];var r=i(\"Symbol\")(t);return c[t]=r,u[r]=t,r}})},{\"../internals/export\":259,\"../internals/get-built-in\":269,\"../internals/has-own-property\":275,\"../internals/shared\":334,\"../internals/symbol-registry-detection\":338,\"../internals/to-string\":348}],381:[function(e,t,r){\"use strict\";e(\"../modules/es.symbol.constructor\"),e(\"../modules/es.symbol.for\"),e(\"../modules/es.symbol.key-for\"),e(\"../modules/es.json.stringify\"),e(\"../modules/es.object.get-own-property-symbols\")},{\"../modules/es.json.stringify\":362,\"../modules/es.object.get-own-property-symbols\":365,\"../modules/es.symbol.constructor\":379,\"../modules/es.symbol.for\":380,\"../modules/es.symbol.key-for\":382}],382:[function(e,t,r){\"use strict\";var n=e(\"../internals/export\"),i=e(\"../internals/has-own-property\"),s=e(\"../internals/is-symbol\"),o=e(\"../internals/try-to-string\"),a=e(\"../internals/shared\"),l=e(\"../internals/symbol-registry-detection\"),c=a(\"symbol-to-string-registry\");n({target:\"Symbol\",stat:!0,forced:!l},{keyFor:function(e){if(!s(e))throw new TypeError(o(e)+\" is not a symbol\");if(i(c,e))return c[e]}})},{\"../internals/export\":259,\"../internals/has-own-property\":275,\"../internals/is-symbol\":292,\"../internals/shared\":334,\"../internals/symbol-registry-detection\":338,\"../internals/try-to-string\":349}],383:[function(e,t,r){\"use strict\";function n(e){return Object.prototype.toString.call(e)}r.isArray=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===n(e)},r.isBoolean=function(e){return\"boolean\"==typeof e},r.isNull=function(e){return null===e},r.isNullOrUndefined=function(e){return null==e},r.isNumber=function(e){return\"number\"==typeof e},r.isString=function(e){return\"string\"==typeof e},r.isSymbol=function(e){return\"symbol\"==typeof e},r.isUndefined=function(e){return void 0===e},r.isRegExp=function(e){return\"[object RegExp]\"===n(e)},r.isObject=function(e){return\"object\"==typeof e&&null!==e},r.isDate=function(e){return\"[object Date]\"===n(e)},r.isError=function(e){return\"[object Error]\"===n(e)||e instanceof Error},r.isFunction=function(e){return\"function\"==typeof e},r.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},r.isBuffer=e(\"buffer\").Buffer.isBuffer},{buffer:220}],384:[function(e,t,r){(function(r){(function(){\"use strict\";var n=e(\"elliptic\"),i=e(\"bn.js\");t.exports=function(e){return new o(e)};var s={secp256k1:{name:\"secp256k1\",byteLength:32},secp224r1:{name:\"p224\",byteLength:28},prime256v1:{name:\"p256\",byteLength:32},prime192v1:{name:\"p192\",byteLength:24},ed25519:{name:\"ed25519\",byteLength:32},secp384r1:{name:\"p384\",byteLength:48},secp521r1:{name:\"p521\",byteLength:66}};function o(e){this.curveType=s[e],this.curveType||(this.curveType={name:e}),this.curve=new n.ec(this.curveType.name),this.keys=void 0}function a(e,t,n){Array.isArray(e)||(e=e.toArray());var i=new r(e);if(n&&i.length<n){var s=new r(n-i.length);s.fill(0),i=r.concat([s,i])}return t?i.toString(t):i}s.p224=s.secp224r1,s.p256=s.secp256r1=s.prime256v1,s.p192=s.secp192r1=s.prime192v1,s.p384=s.secp384r1,s.p521=s.secp521r1,o.prototype.generateKeys=function(e,t){return this.keys=this.curve.genKeyPair(),this.getPublicKey(e,t)},o.prototype.computeSecret=function(e,t,n){return t=t||\"utf8\",r.isBuffer(e)||(e=new r(e,t)),a(this.curve.keyFromPublic(e).getPublic().mul(this.keys.getPrivate()).getX(),n,this.curveType.byteLength)},o.prototype.getPublicKey=function(e,t){var r=this.keys.getPublic(\"compressed\"===t,!0);return\"hybrid\"===t&&(r[r.length-1]%2?r[0]=7:r[0]=6),a(r,e)},o.prototype.getPrivateKey=function(e){return a(this.keys.getPrivate(),e)},o.prototype.setPublicKey=function(e,t){return t=t||\"utf8\",r.isBuffer(e)||(e=new r(e,t)),this.keys._importPublic(e),this},o.prototype.setPrivateKey=function(e,t){t=t||\"utf8\",r.isBuffer(e)||(e=new r(e,t));var n=new i(e);return n=n.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(n),this}}).call(this)}).call(this,e(\"buffer\").Buffer)},{\"bn.js\":385,buffer:220,elliptic:405}],385:[function(e,t,r){arguments[4][184][0].apply(r,arguments)},{buffer:188,dup:184}],386:[function(e,t,r){\"use strict\";var n=e(\"inherits\"),i=e(\"md5.js\"),s=e(\"ripemd160\"),o=e(\"sha.js\"),a=e(\"cipher-base\");function l(e){a.call(this,\"digest\"),this._hash=e}n(l,a),l.prototype._update=function(e){this._hash.update(e)},l.prototype._final=function(){return this._hash.digest()},t.exports=function(e){return\"md5\"===(e=e.toLowerCase())?new i:\"rmd160\"===e||\"ripemd160\"===e?new s:new l(o(e))}},{\"cipher-base\":221,inherits:440,\"md5.js\":450,ripemd160:493,\"sha.js\":498}],387:[function(e,t,r){\"use strict\";var n=e(\"md5.js\");t.exports=function(e){return(new n).update(e).digest()}},{\"md5.js\":450}],388:[function(e,t,r){\"use strict\";var n=e(\"inherits\"),i=e(\"./legacy\"),s=e(\"cipher-base\"),o=e(\"safe-buffer\").Buffer,a=e(\"create-hash/md5\"),l=e(\"ripemd160\"),c=e(\"sha.js\"),u=o.alloc(128);function h(e,t){s.call(this,\"digest\"),\"string\"==typeof t&&(t=o.from(t));var r=\"sha512\"===e||\"sha384\"===e?128:64;(this._alg=e,this._key=t,t.length>r)?t=(\"rmd160\"===e?new l:c(e)).update(t).digest():t.length<r&&(t=o.concat([t,u],r));for(var n=this._ipad=o.allocUnsafe(r),i=this._opad=o.allocUnsafe(r),a=0;a<r;a++)n[a]=54^t[a],i[a]=92^t[a];this._hash=\"rmd160\"===e?new l:c(e),this._hash.update(n)}n(h,s),h.prototype._update=function(e){this._hash.update(e)},h.prototype._final=function(){var e=this._hash.digest();return(\"rmd160\"===this._alg?new l:c(this._alg)).update(this._opad).update(e).digest()},t.exports=function(e,t){return\"rmd160\"===(e=e.toLowerCase())||\"ripemd160\"===e?new h(\"rmd160\",t):\"md5\"===e?new i(a,t):new h(e,t)}},{\"./legacy\":389,\"cipher-base\":221,\"create-hash/md5\":387,inherits:440,ripemd160:493,\"safe-buffer\":494,\"sha.js\":498}],389:[function(e,t,r){\"use strict\";var n=e(\"inherits\"),i=e(\"safe-buffer\").Buffer,s=e(\"cipher-base\"),o=i.alloc(128);function a(e,t){s.call(this,\"digest\"),\"string\"==typeof t&&(t=i.from(t)),this._alg=e,this._key=t,t.length>64?t=e(t):t.length<64&&(t=i.concat([t,o],64));for(var r=this._ipad=i.allocUnsafe(64),n=this._opad=i.allocUnsafe(64),a=0;a<64;a++)r[a]=54^t[a],n[a]=92^t[a];this._hash=[r]}n(a,s),a.prototype._update=function(e){this._hash.push(e)},a.prototype._final=function(){var e=this._alg(i.concat(this._hash));return this._alg(i.concat([this._opad,e]))},t.exports=a},{\"cipher-base\":221,inherits:440,\"safe-buffer\":494}],390:[function(e,t,r){\"use strict\";r.randomBytes=r.rng=r.pseudoRandomBytes=r.prng=e(\"randombytes\"),r.createHash=r.Hash=e(\"create-hash\"),r.createHmac=r.Hmac=e(\"create-hmac\");var n=e(\"browserify-sign/algos\"),i=Object.keys(n),s=[\"sha1\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"md5\",\"rmd160\"].concat(i);r.getHashes=function(){return s};var o=e(\"pbkdf2\");r.pbkdf2=o.pbkdf2,r.pbkdf2Sync=o.pbkdf2Sync;var a=e(\"browserify-cipher\");r.Cipher=a.Cipher,r.createCipher=a.createCipher,r.Cipheriv=a.Cipheriv,r.createCipheriv=a.createCipheriv,r.Decipher=a.Decipher,r.createDecipher=a.createDecipher,r.Decipheriv=a.Decipheriv,r.createDecipheriv=a.createDecipheriv,r.getCiphers=a.getCiphers,r.listCiphers=a.listCiphers;var l=e(\"diffie-hellman\");r.DiffieHellmanGroup=l.DiffieHellmanGroup,r.createDiffieHellmanGroup=l.createDiffieHellmanGroup,r.getDiffieHellman=l.getDiffieHellman,r.createDiffieHellman=l.createDiffieHellman,r.DiffieHellman=l.DiffieHellman;var c=e(\"browserify-sign\");r.createSign=c.createSign,r.Sign=c.Sign,r.createVerify=c.createVerify,r.Verify=c.Verify,r.createECDH=e(\"create-ecdh\");var u=e(\"public-encrypt\");r.publicEncrypt=u.publicEncrypt,r.privateEncrypt=u.privateEncrypt,r.publicDecrypt=u.publicDecrypt,r.privateDecrypt=u.privateDecrypt;var h=e(\"randomfill\");r.randomFill=h.randomFill,r.randomFillSync=h.randomFillSync,r.createCredentials=function(){throw new Error([\"sorry, createCredentials is not implemented yet\",\"we accept pull requests\",\"https://github.com/crypto-browserify/crypto-browserify\"].join(\"\\n\"))},r.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},{\"browserify-cipher\":206,\"browserify-sign\":213,\"browserify-sign/algos\":210,\"create-ecdh\":384,\"create-hash\":386,\"create-hmac\":388,\"diffie-hellman\":400,pbkdf2:460,\"public-encrypt\":468,randombytes:475,randomfill:476}],391:[function(e,t,r){\"use strict\";!function(e,n){\"object\"==typeof r&&void 0!==t?t.exports=n():(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs=n()}(void 0,(function(){var e=6e4,t=36e5,r=\"millisecond\",n=\"second\",i=\"minute\",s=\"hour\",o=\"day\",a=\"week\",l=\"month\",c=\"quarter\",u=\"year\",h=\"date\",f=\"Invalid Date\",d=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,p=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(e){var t=[\"th\",\"st\",\"nd\",\"rd\"],r=e%100;return\"[\"+e+(t[(r-20)%10]||t[r]||t[0])+\"]\"}},b=function(e,t,r){var n=String(e);return!n||n.length>=t?e:\"\"+Array(t+1-n.length).join(r)+e},g={s:b,z:function(e){var t=-e.utcOffset(),r=Math.abs(t),n=Math.floor(r/60),i=r%60;return(t<=0?\"+\":\"-\")+b(n,2,\"0\")+\":\"+b(i,2,\"0\")},m:function e(t,r){if(t.date()<r.date())return-e(r,t);var n=12*(r.year()-t.year())+(r.month()-t.month()),i=t.clone().add(n,l),s=r-i<0,o=t.clone().add(n+(s?-1:1),l);return+(-(n+(r-i)/(s?i-o:o-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:l,y:u,w:a,d:o,D:h,h:s,m:i,s:n,ms:r,Q:c}[e]||String(e||\"\").toLowerCase().replace(/s$/,\"\")},u:function(e){return void 0===e}},y=\"en\",v={};v[y]=m;var w=\"$isDayjsObject\",_=function(e){return e instanceof M||!(!e||!e[w])},x=function e(t,r,n){var i;if(!t)return y;if(\"string\"==typeof t){var s=t.toLowerCase();v[s]&&(i=s),r&&(v[s]=r,i=s);var o=t.split(\"-\");if(!i&&o.length>1)return e(o[0])}else{var a=t.name;v[a]=t,i=a}return!n&&i&&(y=i),i||!n&&y},k=function(e,t){if(_(e))return e.clone();var r=\"object\"==typeof t?t:{};return r.date=e,r.args=arguments,new M(r)},S=g;S.l=x,S.i=_,S.w=function(e,t){return k(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var M=function(){function m(e){this.$L=x(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[w]=!0}var b=m.prototype;return b.parse=function(e){this.$d=function(e){var t=e.date,r=e.utc;if(null===t)return new Date(NaN);if(S.u(t))return new Date;if(t instanceof Date)return new Date(t);if(\"string\"==typeof t&&!/Z$/i.test(t)){var n=t.match(d);if(n){var i=n[2]-1||0,s=(n[7]||\"0\").substring(0,3);return r?new Date(Date.UTC(n[1],i,n[3]||1,n[4]||0,n[5]||0,n[6]||0,s)):new Date(n[1],i,n[3]||1,n[4]||0,n[5]||0,n[6]||0,s)}}return new Date(t)}(e),this.init()},b.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},b.$utils=function(){return S},b.isValid=function(){return!(this.$d.toString()===f)},b.isSame=function(e,t){var r=k(e);return this.startOf(t)<=r&&r<=this.endOf(t)},b.isAfter=function(e,t){return k(e)<this.startOf(t)},b.isBefore=function(e,t){return this.endOf(t)<k(e)},b.$g=function(e,t,r){return S.u(e)?this[t]:this.set(r,e)},b.unix=function(){return Math.floor(this.valueOf()/1e3)},b.valueOf=function(){return this.$d.getTime()},b.startOf=function(e,t){var r=this,c=!!S.u(t)||t,f=S.p(e),d=function(e,t){var n=S.w(r.$u?Date.UTC(r.$y,t,e):new Date(r.$y,t,e),r);return c?n:n.endOf(o)},p=function(e,t){return S.w(r.toDate()[e].apply(r.toDate(\"s\"),(c?[0,0,0,0]:[23,59,59,999]).slice(t)),r)},m=this.$W,b=this.$M,g=this.$D,y=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case u:return c?d(1,0):d(31,11);case l:return c?d(1,b):d(0,b+1);case a:var v=this.$locale().weekStart||0,w=(m<v?m+7:m)-v;return d(c?g-w:g+(6-w),b);case o:case h:return p(y+\"Hours\",0);case s:return p(y+\"Minutes\",1);case i:return p(y+\"Seconds\",2);case n:return p(y+\"Milliseconds\",3);default:return this.clone()}},b.endOf=function(e){return this.startOf(e,!1)},b.$set=function(e,t){var a,c=S.p(e),f=\"set\"+(this.$u?\"UTC\":\"\"),d=(a={},a[o]=f+\"Date\",a[h]=f+\"Date\",a[l]=f+\"Month\",a[u]=f+\"FullYear\",a[s]=f+\"Hours\",a[i]=f+\"Minutes\",a[n]=f+\"Seconds\",a[r]=f+\"Milliseconds\",a)[c],p=c===o?this.$D+(t-this.$W):t;if(c===l||c===u){var m=this.clone().set(h,1);m.$d[d](p),m.init(),this.$d=m.set(h,Math.min(this.$D,m.daysInMonth())).$d}else d&&this.$d[d](p);return this.init(),this},b.set=function(e,t){return this.clone().$set(e,t)},b.get=function(e){return this[S.p(e)]()},b.add=function(r,c){var h,f=this;r=Number(r);var d=S.p(c),p=function(e){var t=k(f);return S.w(t.date(t.date()+Math.round(e*r)),f)};if(d===l)return this.set(l,this.$M+r);if(d===u)return this.set(u,this.$y+r);if(d===o)return p(1);if(d===a)return p(7);var m=(h={},h[i]=e,h[s]=t,h[n]=1e3,h)[d]||1,b=this.$d.getTime()+r*m;return S.w(b,this)},b.subtract=function(e,t){return this.add(-1*e,t)},b.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return r.invalidDate||f;var n=e||\"YYYY-MM-DDTHH:mm:ssZ\",i=S.z(this),s=this.$H,o=this.$m,a=this.$M,l=r.weekdays,c=r.months,u=r.meridiem,h=function(e,r,i,s){return e&&(e[r]||e(t,n))||i[r].slice(0,s)},d=function(e){return S.s(s%12||12,e,\"0\")},m=u||function(e,t,r){var n=e<12?\"AM\":\"PM\";return r?n.toLowerCase():n};return n.replace(p,(function(e,n){return n||function(e){switch(e){case\"YY\":return String(t.$y).slice(-2);case\"YYYY\":return S.s(t.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return S.s(a+1,2,\"0\");case\"MMM\":return h(r.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return t.$D;case\"DD\":return S.s(t.$D,2,\"0\");case\"d\":return String(t.$W);case\"dd\":return h(r.weekdaysMin,t.$W,l,2);case\"ddd\":return h(r.weekdaysShort,t.$W,l,3);case\"dddd\":return l[t.$W];case\"H\":return String(s);case\"HH\":return S.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return m(s,o,!0);case\"A\":return m(s,o,!1);case\"m\":return String(o);case\"mm\":return S.s(o,2,\"0\");case\"s\":return String(t.$s);case\"ss\":return S.s(t.$s,2,\"0\");case\"SSS\":return S.s(t.$ms,3,\"0\");case\"Z\":return i}return null}(e)||i.replace(\":\",\"\")}))},b.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},b.diff=function(r,h,f){var d,p=this,m=S.p(h),b=k(r),g=(b.utcOffset()-this.utcOffset())*e,y=this-b,v=function(){return S.m(p,b)};switch(m){case u:d=v()/12;break;case l:d=v();break;case c:d=v()/3;break;case a:d=(y-g)/6048e5;break;case o:d=(y-g)/864e5;break;case s:d=y/t;break;case i:d=y/e;break;case n:d=y/1e3;break;default:d=y}return f?d:S.a(d)},b.daysInMonth=function(){return this.endOf(l).$D},b.$locale=function(){return v[this.$L]},b.locale=function(e,t){if(!e)return this.$L;var r=this.clone(),n=x(e,t,!0);return n&&(r.$L=n),r},b.clone=function(){return S.w(this.$d,this)},b.toDate=function(){return new Date(this.valueOf())},b.toJSON=function(){return this.isValid()?this.toISOString():null},b.toISOString=function(){return this.$d.toISOString()},b.toString=function(){return this.$d.toUTCString()},m}(),C=M.prototype;return k.prototype=C,[[\"$ms\",r],[\"$s\",n],[\"$m\",i],[\"$H\",s],[\"$W\",o],[\"$M\",l],[\"$y\",u],[\"$D\",h]].forEach((function(e){C[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),k.extend=function(e,t){return e.$i||(e(t,M,k),e.$i=!0),k},k.locale=x,k.isDayjs=_,k.unix=function(e){return k(1e3*e)},k.en=v[y],k.Ls=v,k.p={},k}))},{}],392:[function(e,t,r){\"use strict\";!function(e,n){\"object\"==typeof r&&void 0!==t?t.exports=n():(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=n()}(void 0,(function(){var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\\d\\d/,n=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,s={},o=function(e){return(e=+e)+(e>68?1900:2e3)},a=function(e){return function(t){this[e]=+t}},l=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),r=60*t[1]+(+t[2]||0);return 0===r?0:\"+\"===t[0]?-r:r}(e)}],c=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var r,n=s.meridiem;if(n){for(var i=1;i<=24;i+=1)if(e.indexOf(n(i,0,t))>-1){r=i>12;break}}else r=e===(t?\"pm\":\"PM\");return r},h={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[n,a(\"seconds\")],ss:[n,a(\"seconds\")],m:[n,a(\"minutes\")],mm:[n,a(\"minutes\")],H:[n,a(\"hours\")],h:[n,a(\"hours\")],HH:[n,a(\"hours\")],hh:[n,a(\"hours\")],D:[n,a(\"day\")],DD:[r,a(\"day\")],Do:[i,function(e){var t=s.ordinal,r=e.match(/\\d+/);if(this.day=r[0],t)for(var n=1;n<=31;n+=1)t(n).replace(/\\[|\\]/g,\"\")===e&&(this.day=n)}],M:[n,a(\"month\")],MM:[r,a(\"month\")],MMM:[i,function(e){var t=c(\"months\"),r=(c(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(r<1)throw new Error;this.month=r%12||r}],MMMM:[i,function(e){var t=c(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[r,function(e){this.year=o(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:l,ZZ:l};function f(r){var n,i;n=r,i=s&&s.formats;for(var o=(r=n.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,r,n){var s=n&&n.toUpperCase();return r||i[n]||e[n]||i[s].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,r){return t||r.slice(1)}))}))).match(t),a=o.length,l=0;l<a;l+=1){var c=o[l],u=h[c],f=u&&u[0],d=u&&u[1];o[l]=d?{regex:f,parser:d}:c.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},r=0,n=0;r<a;r+=1){var i=o[r];if(\"string\"==typeof i)n+=i.length;else{var s=i.regex,l=i.parser,c=e.slice(n),u=s.exec(c)[0];l.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var r=e.hours;t?r<12&&(e.hours+=12):12===r&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,r){r.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(o=e.parseTwoDigitYear);var n=t.prototype,i=n.parse;n.parse=function(e){var t=e.date,n=e.utc,o=e.args;this.$u=n;var a=o[1];if(\"string\"==typeof a){var l=!0===o[2],c=!0===o[3],u=l||c,h=o[2];c&&(h=o[2]),s=this.$locale(),!l&&h&&(s=r.Ls[h]),this.$d=function(e,t,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var n=f(t)(e),i=n.year,s=n.month,o=n.day,a=n.hours,l=n.minutes,c=n.seconds,u=n.milliseconds,h=n.zone,d=new Date,p=o||(i||s?1:d.getDate()),m=i||d.getFullYear(),b=0;i&&!s||(b=s>0?s-1:d.getMonth());var g=a||0,y=l||0,v=c||0,w=u||0;return h?new Date(Date.UTC(m,b,p,g,y,v,w+60*h.offset*1e3)):r?new Date(Date.UTC(m,b,p,g,y,v,w)):new Date(m,b,p,g,y,v,w)}catch(e){return new Date(\"\")}}(t,a,n),this.init(),h&&!0!==h&&(this.$L=this.locale(h).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var d=a.length,p=1;p<=d;p+=1){o[1]=a[p-1];var m=r.apply(this,o);if(m.isValid()){this.$d=m.$d,this.$L=m.$L,this.init();break}p===d&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}))},{}],393:[function(e,t,r){\"use strict\";!function(e,n){\"object\"==typeof r&&void 0!==t?t.exports=n():(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_utc=n()}(void 0,(function(){var e=\"minute\",t=/[+-]\\d\\d(?::?\\d\\d)?/g,r=/([+-]|\\d\\d)/g;return function(n,i,s){var o=i.prototype;s.utc=function(e){var t={date:e,utc:!0,args:arguments};return new i(t)},o.utc=function(t){var r=s(this.toDate(),{locale:this.$L,utc:!0});return t?r.add(this.utcOffset(),e):r},o.local=function(){return s(this.toDate(),{locale:this.$L,utc:!1})};var a=o.parse;o.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),a.call(this,e)};var l=o.init;o.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else l.call(this)};var c=o.utcOffset;o.utcOffset=function(n,i){var s=this.$utils().u;if(s(n))return this.$u?0:s(this.$offset)?c.call(this):this.$offset;if(\"string\"==typeof n&&null===(n=function(e){void 0===e&&(e=\"\");var n=e.match(t);if(!n)return null;var i=(\"\"+n[0]).match(r)||[\"-\",0,0],s=i[0],o=60*+i[1]+ +i[2];return 0===o?0:\"+\"===s?o:-o}(n)))return this;var o=Math.abs(n)<=16?60*n:n,a=this;if(i)return a.$offset=o,a.$u=0===n,a;if(0!==n){var l=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(a=this.local().add(o+l,e)).$offset=o,a.$x.$localOffset=l}else a=this.utc();return a};var u=o.format;o.format=function(e){var t=e||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return u.call(this,t)},o.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},o.isUTC=function(){return!!this.$u},o.toISOString=function(){return this.toDate().toISOString()},o.toString=function(){return this.toDate().toUTCString()};var h=o.toDate;o.toDate=function(e){return\"s\"===e&&this.$offset?s(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():h.call(this)};var f=o.diff;o.diff=function(e,t,r){if(e&&this.$u===e.$u)return f.call(this,e,t,r);var n=this.local(),i=s(e).local();return f.call(n,i,t,r)}}}))},{}],394:[function(e,t,r){\"use strict\";r.utils=e(\"./des/utils\"),r.Cipher=e(\"./des/cipher\"),r.DES=e(\"./des/des\"),r.CBC=e(\"./des/cbc\"),r.EDE=e(\"./des/ede\")},{\"./des/cbc\":395,\"./des/cipher\":396,\"./des/des\":397,\"./des/ede\":398,\"./des/utils\":399}],395:[function(e,t,r){\"use strict\";var n=e(\"minimalistic-assert\"),i=e(\"inherits\"),s={};function o(e){n.equal(e.length,8,\"Invalid IV length\"),this.iv=new Array(8);for(var t=0;t<this.iv.length;t++)this.iv[t]=e[t]}r.instantiate=function(e){function t(t){e.call(this,t),this._cbcInit()}i(t,e);for(var r=Object.keys(s),n=0;n<r.length;n++){var o=r[n];t.prototype[o]=s[o]}return t.create=function(e){return new t(e)},t},s._cbcInit=function(){var e=new o(this.options.iv);this._cbcState=e},s._update=function(e,t,r,n){var i=this._cbcState,s=this.constructor.super_.prototype,o=i.iv;if(\"encrypt\"===this.type){for(var a=0;a<this.blockSize;a++)o[a]^=e[t+a];s._update.call(this,o,0,r,n);for(a=0;a<this.blockSize;a++)o[a]=r[n+a]}else{s._update.call(this,e,t,r,n);for(a=0;a<this.blockSize;a++)r[n+a]^=o[a];for(a=0;a<this.blockSize;a++)o[a]=e[t+a]}}},{inherits:440,\"minimalistic-assert\":453}],396:[function(e,t,r){\"use strict\";var n=e(\"minimalistic-assert\");function i(e){this.options=e,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0,this.padding=!1!==e.padding}t.exports=i,i.prototype._init=function(){},i.prototype.update=function(e){return 0===e.length?[]:\"decrypt\"===this.type?this._updateDecrypt(e):this._updateEncrypt(e)},i.prototype._buffer=function(e,t){for(var r=Math.min(this.buffer.length-this.bufferOff,e.length-t),n=0;n<r;n++)this.buffer[this.bufferOff+n]=e[t+n];return this.bufferOff+=r,r},i.prototype._flushBuffer=function(e,t){return this._update(this.buffer,0,e,t),this.bufferOff=0,this.blockSize},i.prototype._updateEncrypt=function(e){var t=0,r=0,n=(this.bufferOff+e.length)/this.blockSize|0,i=new Array(n*this.blockSize);0!==this.bufferOff&&(t+=this._buffer(e,t),this.bufferOff===this.buffer.length&&(r+=this._flushBuffer(i,r)));for(var s=e.length-(e.length-t)%this.blockSize;t<s;t+=this.blockSize)this._update(e,t,i,r),r+=this.blockSize;for(;t<e.length;t++,this.bufferOff++)this.buffer[this.bufferOff]=e[t];return i},i.prototype._updateDecrypt=function(e){for(var t=0,r=0,n=Math.ceil((this.bufferOff+e.length)/this.blockSize)-1,i=new Array(n*this.blockSize);n>0;n--)t+=this._buffer(e,t),r+=this._flushBuffer(i,r);return t+=this._buffer(e,t),i},i.prototype.final=function(e){var t,r;return e&&(t=this.update(e)),r=\"encrypt\"===this.type?this._finalEncrypt():this._finalDecrypt(),t?t.concat(r):r},i.prototype._pad=function(e,t){if(0===t)return!1;for(;t<e.length;)e[t++]=0;return!0},i.prototype._finalEncrypt=function(){if(!this._pad(this.buffer,this.bufferOff))return[];var e=new Array(this.blockSize);return this._update(this.buffer,0,e,0),e},i.prototype._unpad=function(e){return e},i.prototype._finalDecrypt=function(){n.equal(this.bufferOff,this.blockSize,\"Not enough data to decrypt\");var e=new Array(this.blockSize);return this._flushBuffer(e,0),this._unpad(e)}},{\"minimalistic-assert\":453}],397:[function(e,t,r){\"use strict\";var n=e(\"minimalistic-assert\"),i=e(\"inherits\"),s=e(\"./utils\"),o=e(\"./cipher\");function a(){this.tmp=new Array(2),this.keys=null}function l(e){o.call(this,e);var t=new a;this._desState=t,this.deriveKeys(t,e.key)}i(l,o),t.exports=l,l.create=function(e){return new l(e)};var c=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];l.prototype.deriveKeys=function(e,t){e.keys=new Array(32),n.equal(t.length,this.blockSize,\"Invalid key length\");var r=s.readUInt32BE(t,0),i=s.readUInt32BE(t,4);s.pc1(r,i,e.tmp,0),r=e.tmp[0],i=e.tmp[1];for(var o=0;o<e.keys.length;o+=2){var a=c[o>>>1];r=s.r28shl(r,a),i=s.r28shl(i,a),s.pc2(r,i,e.keys,o)}},l.prototype._update=function(e,t,r,n){var i=this._desState,o=s.readUInt32BE(e,t),a=s.readUInt32BE(e,t+4);s.ip(o,a,i.tmp,0),o=i.tmp[0],a=i.tmp[1],\"encrypt\"===this.type?this._encrypt(i,o,a,i.tmp,0):this._decrypt(i,o,a,i.tmp,0),o=i.tmp[0],a=i.tmp[1],s.writeUInt32BE(r,o,n),s.writeUInt32BE(r,a,n+4)},l.prototype._pad=function(e,t){if(!1===this.padding)return!1;for(var r=e.length-t,n=t;n<e.length;n++)e[n]=r;return!0},l.prototype._unpad=function(e){if(!1===this.padding)return e;for(var t=e[e.length-1],r=e.length-t;r<e.length;r++)n.equal(e[r],t);return e.slice(0,e.length-t)},l.prototype._encrypt=function(e,t,r,n,i){for(var o=t,a=r,l=0;l<e.keys.length;l+=2){var c=e.keys[l],u=e.keys[l+1];s.expand(a,e.tmp,0),c^=e.tmp[0],u^=e.tmp[1];var h=s.substitute(c,u),f=a;a=(o^s.permute(h))>>>0,o=f}s.rip(a,o,n,i)},l.prototype._decrypt=function(e,t,r,n,i){for(var o=r,a=t,l=e.keys.length-2;l>=0;l-=2){var c=e.keys[l],u=e.keys[l+1];s.expand(o,e.tmp,0),c^=e.tmp[0],u^=e.tmp[1];var h=s.substitute(c,u),f=o;o=(a^s.permute(h))>>>0,a=f}s.rip(o,a,n,i)}},{\"./cipher\":396,\"./utils\":399,inherits:440,\"minimalistic-assert\":453}],398:[function(e,t,r){\"use strict\";var n=e(\"minimalistic-assert\"),i=e(\"inherits\"),s=e(\"./cipher\"),o=e(\"./des\");function a(e,t){n.equal(t.length,24,\"Invalid key length\");var r=t.slice(0,8),i=t.slice(8,16),s=t.slice(16,24);this.ciphers=\"encrypt\"===e?[o.create({type:\"encrypt\",key:r}),o.create({type:\"decrypt\",key:i}),o.create({type:\"encrypt\",key:s})]:[o.create({type:\"decrypt\",key:s}),o.create({type:\"encrypt\",key:i}),o.create({type:\"decrypt\",key:r})]}function l(e){s.call(this,e);var t=new a(this.type,this.options.key);this._edeState=t}i(l,s),t.exports=l,l.create=function(e){return new l(e)},l.prototype._update=function(e,t,r,n){var i=this._edeState;i.ciphers[0]._update(e,t,r,n),i.ciphers[1]._update(r,n,r,n),i.ciphers[2]._update(r,n,r,n)},l.prototype._pad=o.prototype._pad,l.prototype._unpad=o.prototype._unpad},{\"./cipher\":396,\"./des\":397,inherits:440,\"minimalistic-assert\":453}],399:[function(e,t,r){\"use strict\";r.readUInt32BE=function(e,t){return(e[0+t]<<24|e[1+t]<<16|e[2+t]<<8|e[3+t])>>>0},r.writeUInt32BE=function(e,t,r){e[0+r]=t>>>24,e[1+r]=t>>>16&255,e[2+r]=t>>>8&255,e[3+r]=255&t},r.ip=function(e,t,r,n){for(var i=0,s=0,o=6;o>=0;o-=2){for(var a=0;a<=24;a+=8)i<<=1,i|=t>>>a+o&1;for(a=0;a<=24;a+=8)i<<=1,i|=e>>>a+o&1}for(o=6;o>=0;o-=2){for(a=1;a<=25;a+=8)s<<=1,s|=t>>>a+o&1;for(a=1;a<=25;a+=8)s<<=1,s|=e>>>a+o&1}r[n+0]=i>>>0,r[n+1]=s>>>0},r.rip=function(e,t,r,n){for(var i=0,s=0,o=0;o<4;o++)for(var a=24;a>=0;a-=8)i<<=1,i|=t>>>a+o&1,i<<=1,i|=e>>>a+o&1;for(o=4;o<8;o++)for(a=24;a>=0;a-=8)s<<=1,s|=t>>>a+o&1,s<<=1,s|=e>>>a+o&1;r[n+0]=i>>>0,r[n+1]=s>>>0},r.pc1=function(e,t,r,n){for(var i=0,s=0,o=7;o>=5;o--){for(var a=0;a<=24;a+=8)i<<=1,i|=t>>a+o&1;for(a=0;a<=24;a+=8)i<<=1,i|=e>>a+o&1}for(a=0;a<=24;a+=8)i<<=1,i|=t>>a+o&1;for(o=1;o<=3;o++){for(a=0;a<=24;a+=8)s<<=1,s|=t>>a+o&1;for(a=0;a<=24;a+=8)s<<=1,s|=e>>a+o&1}for(a=0;a<=24;a+=8)s<<=1,s|=e>>a+o&1;r[n+0]=i>>>0,r[n+1]=s>>>0},r.r28shl=function(e,t){return e<<t&268435455|e>>>28-t};var n=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];r.pc2=function(e,t,r,i){for(var s=0,o=0,a=n.length>>>1,l=0;l<a;l++)s<<=1,s|=e>>>n[l]&1;for(l=a;l<n.length;l++)o<<=1,o|=t>>>n[l]&1;r[i+0]=s>>>0,r[i+1]=o>>>0},r.expand=function(e,t,r){var n=0,i=0;n=(1&e)<<5|e>>>27;for(var s=23;s>=15;s-=4)n<<=6,n|=e>>>s&63;for(s=11;s>=3;s-=4)i|=e>>>s&63,i<<=6;i|=(31&e)<<1|e>>>31,t[r+0]=n>>>0,t[r+1]=i>>>0};var i=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];r.substitute=function(e,t){for(var r=0,n=0;n<4;n++){r<<=4,r|=i[64*n+(e>>>18-6*n&63)]}for(n=0;n<4;n++){r<<=4,r|=i[256+64*n+(t>>>18-6*n&63)]}return r>>>0};var s=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];r.permute=function(e){for(var t=0,r=0;r<s.length;r++)t<<=1,t|=e>>>s[r]&1;return t>>>0},r.padSplit=function(e,t,r){for(var n=e.toString(2);n.length<t;)n=\"0\"+n;for(var i=[],s=0;s<t;s+=r)i.push(n.slice(s,s+r));return i.join(\" \")}},{}],400:[function(e,t,r){(function(t){(function(){\"use strict\";var n=e(\"./lib/generatePrime\"),i=e(\"./lib/primes.json\"),s=e(\"./lib/dh\");var o={binary:!0,hex:!0,base64:!0};r.DiffieHellmanGroup=r.createDiffieHellmanGroup=r.getDiffieHellman=function(e){var r=new t(i[e].prime,\"hex\"),n=new t(i[e].gen,\"hex\");return new s(r,n)},r.createDiffieHellman=r.DiffieHellman=function e(r,i,a,l){return t.isBuffer(i)||void 0===o[i]?e(r,\"binary\",i,a):(i=i||\"binary\",l=l||\"binary\",a=a||new t([2]),t.isBuffer(a)||(a=new t(a,l)),\"number\"==typeof r?new s(n(r,a),a,!0):(t.isBuffer(r)||(r=new t(r,i)),new s(r,a,!0)))}}).call(this)}).call(this,e(\"buffer\").Buffer)},{\"./lib/dh\":401,\"./lib/generatePrime\":402,\"./lib/primes.json\":403,buffer:220}],401:[function(e,t,r){(function(r){(function(){\"use strict\";var n=e(\"bn.js\"),i=new(e(\"miller-rabin\")),s=new n(24),o=new n(11),a=new n(10),l=new n(3),c=new n(7),u=e(\"./generatePrime\"),h=e(\"randombytes\");function f(e,t){return t=t||\"utf8\",r.isBuffer(e)||(e=new r(e,t)),this._pub=new n(e),this}function d(e,t){return t=t||\"utf8\",r.isBuffer(e)||(e=new r(e,t)),this._priv=new n(e),this}t.exports=m;var p={};function m(e,t,r){this.setGenerator(t),this.__prime=new n(e),this._prime=n.mont(this.__prime),this._primeLen=e.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=f,this.setPrivateKey=d):this._primeCode=8}function b(e,t){var n=new r(e.toArray());return t?n.toString(t):n}Object.defineProperty(m.prototype,\"verifyError\",{enumerable:!0,get:function(){return\"number\"!=typeof this._primeCode&&(this._primeCode=function(e,t){var r=t.toString(\"hex\"),n=[r,e.toString(16)].join(\"_\");if(n in p)return p[n];var h,f=0;if(e.isEven()||!u.simpleSieve||!u.fermatTest(e)||!i.test(e))return f+=1,f+=\"02\"===r||\"05\"===r?8:4,p[n]=f,f;switch(i.test(e.shrn(1))||(f+=2),r){case\"02\":e.mod(s).cmp(o)&&(f+=8);break;case\"05\":(h=e.mod(a)).cmp(l)&&h.cmp(c)&&(f+=8);break;default:f+=4}return p[n]=f,f}(this.__prime,this.__gen)),this._primeCode}}),m.prototype.generateKeys=function(){return this._priv||(this._priv=new n(h(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},m.prototype.computeSecret=function(e){var t=(e=(e=new n(e)).toRed(this._prime)).redPow(this._priv).fromRed(),i=new r(t.toArray()),s=this.getPrime();if(i.length<s.length){var o=new r(s.length-i.length);o.fill(0),i=r.concat([o,i])}return i},m.prototype.getPublicKey=function(e){return b(this._pub,e)},m.prototype.getPrivateKey=function(e){return b(this._priv,e)},m.prototype.getPrime=function(e){return b(this.__prime,e)},m.prototype.getGenerator=function(e){return b(this._gen,e)},m.prototype.setGenerator=function(e,t){return t=t||\"utf8\",r.isBuffer(e)||(e=new r(e,t)),this.__gen=e,this._gen=new n(e),this}}).call(this)}).call(this,e(\"buffer\").Buffer)},{\"./generatePrime\":402,\"bn.js\":404,buffer:220,\"miller-rabin\":451,randombytes:475}],402:[function(e,t,r){\"use strict\";var n=e(\"randombytes\");t.exports=y,y.simpleSieve=b,y.fermatTest=g;var i=e(\"bn.js\"),s=new i(24),o=new(e(\"miller-rabin\")),a=new i(1),l=new i(2),c=new i(5),u=(new i(16),new i(8),new i(10)),h=new i(3),f=(new i(7),new i(11)),d=new i(4),p=(new i(12),null);function m(){if(null!==p)return p;var e=[];e[0]=2;for(var t=1,r=3;r<1048576;r+=2){for(var n=Math.ceil(Math.sqrt(r)),i=0;i<t&&e[i]<=n&&r%e[i]!=0;i++);t!==i&&e[i]<=n||(e[t++]=r)}return p=e,e}function b(e){for(var t=m(),r=0;r<t.length;r++)if(0===e.modn(t[r]))return 0===e.cmpn(t[r]);return!0}function g(e){var t=i.mont(e);return 0===l.toRed(t).redPow(e.subn(1)).fromRed().cmpn(1)}function y(e,t){if(e<16)return new i(2===t||5===t?[140,123]:[140,39]);var r,p;for(t=new i(t);;){for(r=new i(n(Math.ceil(e/8)));r.bitLength()>e;)r.ishrn(1);if(r.isEven()&&r.iadd(a),r.testn(1)||r.iadd(l),t.cmp(l)){if(!t.cmp(c))for(;r.mod(u).cmp(h);)r.iadd(d)}else for(;r.mod(s).cmp(f);)r.iadd(d);if(b(p=r.shrn(1))&&b(r)&&g(p)&&g(r)&&o.test(p)&&o.test(r))return r}}},{\"bn.js\":404,\"miller-rabin\":451,randombytes:475}],403:[function(e,t,r){t.exports={modp1:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"},modp2:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"},modp5:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"},modp14:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"},modp15:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"},modp16:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"},modp17:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"},modp18:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"}}},{}],404:[function(e,t,r){arguments[4][184][0].apply(r,arguments)},{buffer:188,dup:184}],405:[function(e,t,r){\"use strict\";var n=r;n.version=e(\"../package.json\").version,n.utils=e(\"./elliptic/utils\"),n.rand=e(\"brorand\"),n.curve=e(\"./elliptic/curve\"),n.curves=e(\"./elliptic/curves\"),n.ec=e(\"./elliptic/ec\"),n.eddsa=e(\"./elliptic/eddsa\")},{\"../package.json\":421,\"./elliptic/curve\":408,\"./elliptic/curves\":411,\"./elliptic/ec\":412,\"./elliptic/eddsa\":415,\"./elliptic/utils\":419,brorand:187}],406:[function(e,t,r){\"use strict\";var n=e(\"bn.js\"),i=e(\"../utils\"),s=i.getNAF,o=i.getJSF,a=i.assert;function l(e,t){this.type=e,this.p=new n(t.p,16),this.red=t.prime?n.red(t.prime):n.mont(this.p),this.zero=new n(0).toRed(this.red),this.one=new n(1).toRed(this.red),this.two=new n(2).toRed(this.red),this.n=t.n&&new n(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function c(e,t){this.curve=e,this.type=t,this.precomputed=null}t.exports=l,l.prototype.point=function(){throw new Error(\"Not implemented\")},l.prototype.validate=function(){throw new Error(\"Not implemented\")},l.prototype._fixedNafMul=function(e,t){a(e.precomputed);var r=e._getDoubles(),n=s(t,1,this._bitLength),i=(1<<r.step+1)-(r.step%2==0?2:1);i/=3;var o,l,c=[];for(o=0;o<n.length;o+=r.step){l=0;for(var u=o+r.step-1;u>=o;u--)l=(l<<1)+n[u];c.push(l)}for(var h=this.jpoint(null,null,null),f=this.jpoint(null,null,null),d=i;d>0;d--){for(o=0;o<c.length;o++)(l=c[o])===d?f=f.mixedAdd(r.points[o]):l===-d&&(f=f.mixedAdd(r.points[o].neg()));h=h.add(f)}return h.toP()},l.prototype._wnafMul=function(e,t){var r=4,n=e._getNAFPoints(r);r=n.wnd;for(var i=n.points,o=s(t,r,this._bitLength),l=this.jpoint(null,null,null),c=o.length-1;c>=0;c--){for(var u=0;c>=0&&0===o[c];c--)u++;if(c>=0&&u++,l=l.dblp(u),c<0)break;var h=o[c];a(0!==h),l=\"affine\"===e.type?h>0?l.mixedAdd(i[h-1>>1]):l.mixedAdd(i[-h-1>>1].neg()):h>0?l.add(i[h-1>>1]):l.add(i[-h-1>>1].neg())}return\"affine\"===e.type?l.toP():l},l.prototype._wnafMulAdd=function(e,t,r,n,i){var a,l,c,u=this._wnafT1,h=this._wnafT2,f=this._wnafT3,d=0;for(a=0;a<n;a++){var p=(c=t[a])._getNAFPoints(e);u[a]=p.wnd,h[a]=p.points}for(a=n-1;a>=1;a-=2){var m=a-1,b=a;if(1===u[m]&&1===u[b]){var g=[t[m],null,null,t[b]];0===t[m].y.cmp(t[b].y)?(g[1]=t[m].add(t[b]),g[2]=t[m].toJ().mixedAdd(t[b].neg())):0===t[m].y.cmp(t[b].y.redNeg())?(g[1]=t[m].toJ().mixedAdd(t[b]),g[2]=t[m].add(t[b].neg())):(g[1]=t[m].toJ().mixedAdd(t[b]),g[2]=t[m].toJ().mixedAdd(t[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],v=o(r[m],r[b]);for(d=Math.max(v[0].length,d),f[m]=new Array(d),f[b]=new Array(d),l=0;l<d;l++){var w=0|v[0][l],_=0|v[1][l];f[m][l]=y[3*(w+1)+(_+1)],f[b][l]=0,h[m]=g}}else f[m]=s(r[m],u[m],this._bitLength),f[b]=s(r[b],u[b],this._bitLength),d=Math.max(f[m].length,d),d=Math.max(f[b].length,d)}var x=this.jpoint(null,null,null),k=this._wnafT4;for(a=d;a>=0;a--){for(var S=0;a>=0;){var M=!0;for(l=0;l<n;l++)k[l]=0|f[l][a],0!==k[l]&&(M=!1);if(!M)break;S++,a--}if(a>=0&&S++,x=x.dblp(S),a<0)break;for(l=0;l<n;l++){var C=k[l];0!==C&&(C>0?c=h[l][C-1>>1]:C<0&&(c=h[l][-C-1>>1].neg()),x=\"affine\"===c.type?x.mixedAdd(c):x.add(c))}}for(a=0;a<n;a++)h[a]=null;return i?x:x.toP()},l.BasePoint=c,c.prototype.eq=function(){throw new Error(\"Not implemented\")},c.prototype.validate=function(){return this.curve.validate(this)},l.prototype.decodePoint=function(e,t){e=i.toArray(e,t);var r=this.p.byteLength();if((4===e[0]||6===e[0]||7===e[0])&&e.length-1==2*r)return 6===e[0]?a(e[e.length-1]%2==0):7===e[0]&&a(e[e.length-1]%2==1),this.point(e.slice(1,1+r),e.slice(1+r,1+2*r));if((2===e[0]||3===e[0])&&e.length-1===r)return this.pointFromX(e.slice(1,1+r),3===e[0]);throw new Error(\"Unknown point format\")},c.prototype.encodeCompressed=function(e){return this.encode(e,!0)},c.prototype._encode=function(e){var t=this.curve.p.byteLength(),r=this.getX().toArray(\"be\",t);return e?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray(\"be\",t))},c.prototype.encode=function(e,t){return i.encode(this._encode(t),e)},c.prototype.precompute=function(e){if(this.precomputed)return this;var t={doubles:null,naf:null,beta:null};return t.naf=this._getNAFPoints(8),t.doubles=this._getDoubles(4,e),t.beta=this._getBeta(),this.precomputed=t,this},c.prototype._hasDoubles=function(e){if(!this.precomputed)return!1;var t=this.precomputed.doubles;return!!t&&t.points.length>=Math.ceil((e.bitLength()+1)/t.step)},c.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i<t;i+=e){for(var s=0;s<e;s++)n=n.dbl();r.push(n)}return{step:e,points:r}},c.prototype._getNAFPoints=function(e){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var t=[this],r=(1<<e)-1,n=1===r?null:this.dbl(),i=1;i<r;i++)t[i]=t[i-1].add(n);return{wnd:e,points:t}},c.prototype._getBeta=function(){return null},c.prototype.dblp=function(e){for(var t=this,r=0;r<e;r++)t=t.dbl();return t}},{\"../utils\":419,\"bn.js\":420}],407:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"bn.js\"),s=e(\"inherits\"),o=e(\"./base\"),a=n.assert;function l(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,o.call(this,\"edwards\",e),this.a=new i(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new i(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new i(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),a(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}function c(e,t,r,n,s){o.BasePoint.call(this,e,\"projective\"),null===t&&null===r&&null===n?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new i(t,16),this.y=new i(r,16),this.z=n?new i(n,16):this.curve.one,this.t=s&&new i(s,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}s(l,o),t.exports=l,l.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},l.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},l.prototype.jpoint=function(e,t,r,n){return this.point(e,t,r,n)},l.prototype.pointFromX=function(e,t){(e=new i(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),n=this.c2.redSub(this.a.redMul(r)),s=this.one.redSub(this.c2.redMul(this.d).redMul(r)),o=n.redMul(s.redInvm()),a=o.redSqrt();if(0!==a.redSqr().redSub(o).cmp(this.zero))throw new Error(\"invalid point\");var l=a.fromRed().isOdd();return(t&&!l||!t&&l)&&(a=a.redNeg()),this.point(e,a)},l.prototype.pointFromY=function(e,t){(e=new i(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),n=r.redSub(this.c2),s=r.redMul(this.d).redMul(this.c2).redSub(this.a),o=n.redMul(s.redInvm());if(0===o.cmp(this.zero)){if(t)throw new Error(\"invalid point\");return this.point(this.zero,e)}var a=o.redSqrt();if(0!==a.redSqr().redSub(o).cmp(this.zero))throw new Error(\"invalid point\");return a.fromRed().isOdd()!==t&&(a=a.redNeg()),this.point(a,e)},l.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),r=e.y.redSqr(),n=t.redMul(this.a).redAdd(r),i=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(r)));return 0===n.cmp(i)},s(c,o.BasePoint),l.prototype.pointFromJSON=function(e){return c.fromJSON(this,e)},l.prototype.point=function(e,t,r,n){return new c(this,e,t,r,n)},c.fromJSON=function(e,t){return new c(e,t[0],t[1],t[2])},c.prototype.inspect=function(){return this.isInfinity()?\"<EC Point Infinity>\":\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" y: \"+this.y.fromRed().toString(16,2)+\" z: \"+this.z.fromRed().toString(16,2)+\">\"},c.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},c.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(e),i=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),s=n.redAdd(t),o=s.redSub(r),a=n.redSub(t),l=i.redMul(o),c=s.redMul(a),u=i.redMul(a),h=o.redMul(s);return this.curve.point(l,c,h,u)},c.prototype._projDbl=function(){var e,t,r,n,i,s,o=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),l=this.y.redSqr();if(this.curve.twisted){var c=(n=this.curve._mulA(a)).redAdd(l);this.zOne?(e=o.redSub(a).redSub(l).redMul(c.redSub(this.curve.two)),t=c.redMul(n.redSub(l)),r=c.redSqr().redSub(c).redSub(c)):(i=this.z.redSqr(),s=c.redSub(i).redISub(i),e=o.redSub(a).redISub(l).redMul(s),t=c.redMul(n.redSub(l)),r=c.redMul(s))}else n=a.redAdd(l),i=this.curve._mulC(this.z).redSqr(),s=n.redSub(i).redSub(i),e=this.curve._mulC(o.redISub(n)).redMul(s),t=this.curve._mulC(n).redMul(a.redISub(l)),r=n.redMul(s);return this.curve.point(e,t,r)},c.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},c.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),n=this.t.redMul(this.curve.dd).redMul(e.t),i=this.z.redMul(e.z.redAdd(e.z)),s=r.redSub(t),o=i.redSub(n),a=i.redAdd(n),l=r.redAdd(t),c=s.redMul(o),u=a.redMul(l),h=s.redMul(l),f=o.redMul(a);return this.curve.point(c,u,f,h)},c.prototype._projAdd=function(e){var t,r,n=this.z.redMul(e.z),i=n.redSqr(),s=this.x.redMul(e.x),o=this.y.redMul(e.y),a=this.curve.d.redMul(s).redMul(o),l=i.redSub(a),c=i.redAdd(a),u=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(s).redISub(o),h=n.redMul(l).redMul(u);return this.curve.twisted?(t=n.redMul(c).redMul(o.redSub(this.curve._mulA(s))),r=l.redMul(c)):(t=n.redMul(c).redMul(o.redSub(s)),r=this.curve._mulC(l).redMul(c)),this.curve.point(h,t,r)},c.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},c.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!1)},c.prototype.jmulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!0)},c.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},c.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},c.prototype.getX=function(){return this.normalize(),this.x.fromRed()},c.prototype.getY=function(){return this.normalize(),this.y.fromRed()},c.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},c.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var r=e.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(n),0===this.x.cmp(t))return!0}},c.prototype.toP=c.prototype.normalize,c.prototype.mixedAdd=c.prototype.add},{\"../utils\":419,\"./base\":406,\"bn.js\":420,inherits:440}],408:[function(e,t,r){\"use strict\";var n=r;n.base=e(\"./base\"),n.short=e(\"./short\"),n.mont=e(\"./mont\"),n.edwards=e(\"./edwards\")},{\"./base\":406,\"./edwards\":407,\"./mont\":409,\"./short\":410}],409:[function(e,t,r){\"use strict\";var n=e(\"bn.js\"),i=e(\"inherits\"),s=e(\"./base\"),o=e(\"../utils\");function a(e){s.call(this,\"mont\",e),this.a=new n(e.a,16).toRed(this.red),this.b=new n(e.b,16).toRed(this.red),this.i4=new n(4).toRed(this.red).redInvm(),this.two=new n(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function l(e,t,r){s.BasePoint.call(this,e,\"projective\"),null===t&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new n(t,16),this.z=new n(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}i(a,s),t.exports=a,a.prototype.validate=function(e){var t=e.normalize().x,r=t.redSqr(),n=r.redMul(t).redAdd(r.redMul(this.a)).redAdd(t);return 0===n.redSqrt().redSqr().cmp(n)},i(l,s.BasePoint),a.prototype.decodePoint=function(e,t){return this.point(o.toArray(e,t),1)},a.prototype.point=function(e,t){return new l(this,e,t)},a.prototype.pointFromJSON=function(e){return l.fromJSON(this,e)},l.prototype.precompute=function(){},l.prototype._encode=function(){return this.getX().toArray(\"be\",this.curve.p.byteLength())},l.fromJSON=function(e,t){return new l(e,t[0],t[1]||e.one)},l.prototype.inspect=function(){return this.isInfinity()?\"<EC Point Infinity>\":\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" z: \"+this.z.fromRed().toString(16,2)+\">\"},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},l.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),t=this.x.redSub(this.z).redSqr(),r=e.redSub(t),n=e.redMul(t),i=r.redMul(t.redAdd(this.curve.a24.redMul(r)));return this.curve.point(n,i)},l.prototype.add=function(){throw new Error(\"Not supported on Montgomery curve\")},l.prototype.diffAdd=function(e,t){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),i=e.x.redAdd(e.z),s=e.x.redSub(e.z).redMul(r),o=i.redMul(n),a=t.z.redMul(s.redAdd(o).redSqr()),l=t.x.redMul(s.redISub(o).redSqr());return this.curve.point(a,l)},l.prototype.mul=function(e){for(var t=e.clone(),r=this,n=this.curve.point(null,null),i=[];0!==t.cmpn(0);t.iushrn(1))i.push(t.andln(1));for(var s=i.length-1;s>=0;s--)0===i[s]?(r=r.diffAdd(n,this),n=n.dbl()):(n=r.diffAdd(n,this),r=r.dbl());return n},l.prototype.mulAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},l.prototype.jumlAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},l.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},l.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},l.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{\"../utils\":419,\"./base\":406,\"bn.js\":420,inherits:440}],410:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"bn.js\"),s=e(\"inherits\"),o=e(\"./base\"),a=n.assert;function l(e){o.call(this,\"short\",e),this.a=new i(e.a,16).toRed(this.red),this.b=new i(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function c(e,t,r,n){o.BasePoint.call(this,e,\"affine\"),null===t&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new i(t,16),this.y=new i(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function u(e,t,r,n){o.BasePoint.call(this,e,\"jacobian\"),null===t&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new i(0)):(this.x=new i(t,16),this.y=new i(r,16),this.z=new i(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}s(l,o),t.exports=l,l.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,r;if(e.beta)t=new i(e.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);t=(t=n[0].cmp(n[1])<0?n[0]:n[1]).toRed(this.red)}if(e.lambda)r=new i(e.lambda,16);else{var s=this._getEndoRoots(this.n);0===this.g.mul(s[0]).x.cmp(this.g.x.redMul(t))?r=s[0]:(r=s[1],a(0===this.g.mul(r).x.cmp(this.g.x.redMul(t))))}return{beta:t,lambda:r,basis:e.basis?e.basis.map((function(e){return{a:new i(e.a,16),b:new i(e.b,16)}})):this._getEndoBasis(r)}}},l.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:i.mont(e),r=new i(2).toRed(t).redInvm(),n=r.redNeg(),s=new i(3).toRed(t).redNeg().redSqrt().redMul(r);return[n.redAdd(s).fromRed(),n.redSub(s).fromRed()]},l.prototype._getEndoBasis=function(e){for(var t,r,n,s,o,a,l,c,u,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),f=e,d=this.n.clone(),p=new i(1),m=new i(0),b=new i(0),g=new i(1),y=0;0!==f.cmpn(0);){var v=d.div(f);c=d.sub(v.mul(f)),u=b.sub(v.mul(p));var w=g.sub(v.mul(m));if(!n&&c.cmp(h)<0)t=l.neg(),r=p,n=c.neg(),s=u;else if(n&&2==++y)break;l=c,d=f,f=c,b=p,p=u,g=m,m=w}o=c.neg(),a=u;var _=n.sqr().add(s.sqr());return o.sqr().add(a.sqr()).cmp(_)>=0&&(o=t,a=r),n.negative&&(n=n.neg(),s=s.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:s},{a:o,b:a}]},l.prototype._endoSplit=function(e){var t=this.endo.basis,r=t[0],n=t[1],i=n.b.mul(e).divRound(this.n),s=r.b.neg().mul(e).divRound(this.n),o=i.mul(r.a),a=s.mul(n.a),l=i.mul(r.b),c=s.mul(n.b);return{k1:e.sub(o).sub(a),k2:l.add(c).neg()}},l.prototype.pointFromX=function(e,t){(e=new i(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error(\"invalid point\");var s=n.fromRed().isOdd();return(t&&!s||!t&&s)&&(n=n.redNeg()),this.point(e,n)},l.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,r=e.y,n=this.a.redMul(t),i=t.redSqr().redMul(t).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},l.prototype._endoWnafMulAdd=function(e,t,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,s=0;s<e.length;s++){var o=this._endoSplit(t[s]),a=e[s],l=a._getBeta();o.k1.negative&&(o.k1.ineg(),a=a.neg(!0)),o.k2.negative&&(o.k2.ineg(),l=l.neg(!0)),n[2*s]=a,n[2*s+1]=l,i[2*s]=o.k1,i[2*s+1]=o.k2}for(var c=this._wnafMulAdd(1,n,i,2*s,r),u=0;u<2*s;u++)n[u]=null,i[u]=null;return c},s(c,o.BasePoint),l.prototype.point=function(e,t,r){return new c(this,e,t,r)},l.prototype.pointFromJSON=function(e,t){return c.fromJSON(this,e,t)},c.prototype._getBeta=function(){if(this.curve.endo){var e=this.precomputed;if(e&&e.beta)return e.beta;var t=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(e){var r=this.curve,n=function(e){return r.point(e.x.redMul(r.endo.beta),e.y)};e.beta=t,t.precomputed={beta:null,naf:e.naf&&{wnd:e.naf.wnd,points:e.naf.points.map(n)},doubles:e.doubles&&{step:e.doubles.step,points:e.doubles.points.map(n)}}}return t}},c.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},c.fromJSON=function(e,t,r){\"string\"==typeof t&&(t=JSON.parse(t));var n=e.point(t[0],t[1],r);if(!t[2])return n;function i(t){return e.point(t[0],t[1],r)}var s=t[2];return n.precomputed={beta:null,doubles:s.doubles&&{step:s.doubles.step,points:[n].concat(s.doubles.points.map(i))},naf:s.naf&&{wnd:s.naf.wnd,points:[n].concat(s.naf.points.map(i))}},n},c.prototype.inspect=function(){return this.isInfinity()?\"<EC Point Infinity>\":\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" y: \"+this.y.fromRed().toString(16,2)+\">\"},c.prototype.isInfinity=function(){return this.inf},c.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),n=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},c.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),n=e.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(n),s=i.redSqr().redISub(this.x.redAdd(this.x)),o=i.redMul(this.x.redSub(s)).redISub(this.y);return this.curve.point(s,o)},c.prototype.getX=function(){return this.x.fromRed()},c.prototype.getY=function(){return this.y.fromRed()},c.prototype.mul=function(e){return e=new i(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,r){var n=[this,t],i=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},c.prototype.jmulAdd=function(e,t,r){var n=[this,t],i=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},c.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},c.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,n=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return t},c.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},s(u,o.BasePoint),l.prototype.jpoint=function(e,t,r){return new u(this,e,t,r)},u.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),n=this.y.redMul(t).redMul(e);return this.curve.point(r,n)},u.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},u.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(t),i=e.x.redMul(r),s=this.y.redMul(t.redMul(e.z)),o=e.y.redMul(r.redMul(this.z)),a=n.redSub(i),l=s.redSub(o);if(0===a.cmpn(0))return 0!==l.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=a.redSqr(),u=c.redMul(a),h=n.redMul(c),f=l.redSqr().redIAdd(u).redISub(h).redISub(h),d=l.redMul(h.redISub(f)).redISub(s.redMul(u)),p=this.z.redMul(e.z).redMul(a);return this.curve.jpoint(f,d,p)},u.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,n=e.x.redMul(t),i=this.y,s=e.y.redMul(t).redMul(this.z),o=r.redSub(n),a=i.redSub(s);if(0===o.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=o.redSqr(),c=l.redMul(o),u=r.redMul(l),h=a.redSqr().redIAdd(c).redISub(u).redISub(u),f=a.redMul(u.redISub(h)).redISub(i.redMul(c)),d=this.z.redMul(o);return this.curve.jpoint(h,f,d)},u.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var t;if(this.curve.zeroA||this.curve.threeA){var r=this;for(t=0;t<e;t++)r=r.dbl();return r}var n=this.curve.a,i=this.curve.tinv,s=this.x,o=this.y,a=this.z,l=a.redSqr().redSqr(),c=o.redAdd(o);for(t=0;t<e;t++){var u=s.redSqr(),h=c.redSqr(),f=h.redSqr(),d=u.redAdd(u).redIAdd(u).redIAdd(n.redMul(l)),p=s.redMul(h),m=d.redSqr().redISub(p.redAdd(p)),b=p.redISub(m),g=d.redMul(b);g=g.redIAdd(g).redISub(f);var y=c.redMul(a);t+1<e&&(l=l.redMul(f)),s=m,a=y,c=g}return this.curve.jpoint(s,c.redMul(i),a)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},u.prototype._zeroDbl=function(){var e,t,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n),l=a.redSqr().redISub(o).redISub(o),c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),e=l,t=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var u=this.x.redSqr(),h=this.y.redSqr(),f=h.redSqr(),d=this.x.redAdd(h).redSqr().redISub(u).redISub(f);d=d.redIAdd(d);var p=u.redAdd(u).redIAdd(u),m=p.redSqr(),b=f.redIAdd(f);b=(b=b.redIAdd(b)).redIAdd(b),e=m.redISub(d).redISub(d),t=p.redMul(d.redISub(e)).redISub(b),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(e,t,r)},u.prototype._threeDbl=function(){var e,t,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n).redIAdd(this.curve.a),l=a.redSqr().redISub(o).redISub(o);e=l;var c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),t=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var u=this.z.redSqr(),h=this.y.redSqr(),f=this.x.redMul(h),d=this.x.redSub(u).redMul(this.x.redAdd(u));d=d.redAdd(d).redIAdd(d);var p=f.redIAdd(f),m=(p=p.redIAdd(p)).redAdd(p);e=d.redSqr().redISub(m),r=this.y.redAdd(this.z).redSqr().redISub(h).redISub(u);var b=h.redSqr();b=(b=(b=b.redIAdd(b)).redIAdd(b)).redIAdd(b),t=d.redMul(p.redISub(e)).redISub(b)}return this.curve.jpoint(e,t,r)},u.prototype._dbl=function(){var e=this.curve.a,t=this.x,r=this.y,n=this.z,i=n.redSqr().redSqr(),s=t.redSqr(),o=r.redSqr(),a=s.redAdd(s).redIAdd(s).redIAdd(e.redMul(i)),l=t.redAdd(t),c=(l=l.redIAdd(l)).redMul(o),u=a.redSqr().redISub(c.redAdd(c)),h=c.redISub(u),f=o.redSqr();f=(f=(f=f.redIAdd(f)).redIAdd(f)).redIAdd(f);var d=a.redMul(h).redISub(f),p=r.redAdd(r).redMul(n);return this.curve.jpoint(u,d,p)},u.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr(),n=t.redSqr(),i=e.redAdd(e).redIAdd(e),s=i.redSqr(),o=this.x.redAdd(t).redSqr().redISub(e).redISub(n),a=(o=(o=(o=o.redIAdd(o)).redAdd(o).redIAdd(o)).redISub(s)).redSqr(),l=n.redIAdd(n);l=(l=(l=l.redIAdd(l)).redIAdd(l)).redIAdd(l);var c=i.redIAdd(o).redSqr().redISub(s).redISub(a).redISub(l),u=t.redMul(c);u=(u=u.redIAdd(u)).redIAdd(u);var h=this.x.redMul(a).redISub(u);h=(h=h.redIAdd(h)).redIAdd(h);var f=this.y.redMul(c.redMul(l.redISub(c)).redISub(o.redMul(a)));f=(f=(f=f.redIAdd(f)).redIAdd(f)).redIAdd(f);var d=this.z.redAdd(o).redSqr().redISub(r).redISub(a);return this.curve.jpoint(h,f,d)},u.prototype.mul=function(e,t){return e=new i(e,t),this.curve._wnafMul(this,e)},u.prototype.eq=function(e){if(\"affine\"===e.type)return this.eq(e.toJ());if(this===e)return!0;var t=this.z.redSqr(),r=e.z.redSqr();if(0!==this.x.redMul(r).redISub(e.x.redMul(t)).cmpn(0))return!1;var n=t.redMul(this.z),i=r.redMul(e.z);return 0===this.y.redMul(i).redISub(e.y.redMul(n)).cmpn(0)},u.prototype.eqXToP=function(e){var t=this.z.redSqr(),r=e.toRed(this.curve.red).redMul(t);if(0===this.x.cmp(r))return!0;for(var n=e.clone(),i=this.curve.redN.redMul(t);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},u.prototype.inspect=function(){return this.isInfinity()?\"<EC JPoint Infinity>\":\"<EC JPoint x: \"+this.x.toString(16,2)+\" y: \"+this.y.toString(16,2)+\" z: \"+this.z.toString(16,2)+\">\"},u.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{\"../utils\":419,\"./base\":406,\"bn.js\":420,inherits:440}],411:[function(e,t,r){\"use strict\";var n,i=r,s=e(\"hash.js\"),o=e(\"./curve\"),a=e(\"./utils\").assert;function l(e){\"short\"===e.type?this.curve=new o.short(e):\"edwards\"===e.type?this.curve=new o.edwards(e):this.curve=new o.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,a(this.g.validate(),\"Invalid curve\"),a(this.g.mul(this.n).isInfinity(),\"Invalid curve, G*N != O\")}function c(e,t){Object.defineProperty(i,e,{configurable:!0,enumerable:!0,get:function(){var r=new l(t);return Object.defineProperty(i,e,{configurable:!0,enumerable:!0,value:r}),r}})}i.PresetCurve=l,c(\"p192\",{type:\"short\",prime:\"p192\",p:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",b:\"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",n:\"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",hash:s.sha256,gRed:!1,g:[\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\",\"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]}),c(\"p224\",{type:\"short\",prime:\"p224\",p:\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",b:\"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",n:\"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",hash:s.sha256,gRed:!1,g:[\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\",\"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]}),c(\"p256\",{type:\"short\",prime:null,p:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",a:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",b:\"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",n:\"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",hash:s.sha256,gRed:!1,g:[\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\",\"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]}),c(\"p384\",{type:\"short\",prime:null,p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",a:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",b:\"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",n:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",hash:s.sha384,gRed:!1,g:[\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\",\"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]}),c(\"p521\",{type:\"short\",prime:null,p:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",a:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",b:\"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",n:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",hash:s.sha512,gRed:!1,g:[\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\",\"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"]}),c(\"curve25519\",{type:\"mont\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"76d06\",b:\"1\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:s.sha256,gRed:!1,g:[\"9\"]}),c(\"ed25519\",{type:\"edwards\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"-1\",c:\"1\",d:\"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:s.sha256,gRed:!1,g:[\"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\"6666666666666666666666666666666666666666666666666666666666666658\"]});try{n=e(\"./precomputed/secp256k1\")}catch(e){n=void 0}c(\"secp256k1\",{type:\"short\",prime:\"k256\",p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",a:\"0\",b:\"7\",n:\"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",h:\"1\",hash:s.sha256,beta:\"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",lambda:\"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",basis:[{a:\"3086d221a7d46bcde86c90e49284eb15\",b:\"-e4437ed6010e88286f547fa90abfe4c3\"},{a:\"114ca50f7a8e2f3f657c1108d9d44cfd8\",b:\"3086d221a7d46bcde86c90e49284eb15\"}],gRed:!1,g:[\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\",\"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\",n]})},{\"./curve\":408,\"./precomputed/secp256k1\":418,\"./utils\":419,\"hash.js\":426}],412:[function(e,t,r){\"use strict\";var n=e(\"bn.js\"),i=e(\"hmac-drbg\"),s=e(\"../utils\"),o=e(\"../curves\"),a=e(\"brorand\"),l=s.assert,c=e(\"./key\"),u=e(\"./signature\");function h(e){if(!(this instanceof h))return new h(e);\"string\"==typeof e&&(l(Object.prototype.hasOwnProperty.call(o,e),\"Unknown curve \"+e),e=o[e]),e instanceof o.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}t.exports=h,h.prototype.keyPair=function(e){return new c(this,e)},h.prototype.keyFromPrivate=function(e,t){return c.fromPrivate(this,e,t)},h.prototype.keyFromPublic=function(e,t){return c.fromPublic(this,e,t)},h.prototype.genKeyPair=function(e){e||(e={});for(var t=new i({hash:this.hash,pers:e.pers,persEnc:e.persEnc||\"utf8\",entropy:e.entropy||a(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||\"utf8\",nonce:this.n.toArray()}),r=this.n.byteLength(),s=this.n.sub(new n(2));;){var o=new n(t.generate(r));if(!(o.cmp(s)>0))return o.iaddn(1),this.keyFromPrivate(o)}},h.prototype._truncateToN=function(e,t){var r=8*e.byteLength()-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},h.prototype.sign=function(e,t,r,s){\"object\"==typeof r&&(s=r,r=null),s||(s={}),t=this.keyFromPrivate(t,r),e=this._truncateToN(new n(e,16));for(var o=this.n.byteLength(),a=t.getPrivate().toArray(\"be\",o),l=e.toArray(\"be\",o),c=new i({hash:this.hash,entropy:a,nonce:l,pers:s.pers,persEnc:s.persEnc||\"utf8\"}),h=this.n.sub(new n(1)),f=0;;f++){var d=s.k?s.k(f):new n(c.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(h)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var m=p.getX(),b=m.umod(this.n);if(0!==b.cmpn(0)){var g=d.invm(this.n).mul(b.mul(t.getPrivate()).iadd(e));if(0!==(g=g.umod(this.n)).cmpn(0)){var y=(p.getY().isOdd()?1:0)|(0!==m.cmp(b)?2:0);return s.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),y^=1),new u({r:b,s:g,recoveryParam:y})}}}}}},h.prototype.verify=function(e,t,r,i){e=this._truncateToN(new n(e,16)),r=this.keyFromPublic(r,i);var s=(t=new u(t,\"hex\")).r,o=t.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var a,l=o.invm(this.n),c=l.mul(e).umod(this.n),h=l.mul(s).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,r.getPublic(),h)).isInfinity()&&a.eqXToP(s):!(a=this.g.mulAdd(c,r.getPublic(),h)).isInfinity()&&0===a.getX().umod(this.n).cmp(s)},h.prototype.recoverPubKey=function(e,t,r,i){l((3&r)===r,\"The recovery param is more than two bits\"),t=new u(t,i);var s=this.n,o=new n(e),a=t.r,c=t.s,h=1&r,f=r>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&f)throw new Error(\"Unable to find sencond key candinate\");a=f?this.curve.pointFromX(a.add(this.curve.n),h):this.curve.pointFromX(a,h);var d=t.r.invm(s),p=s.sub(o).mul(d).umod(s),m=c.mul(d).umod(s);return this.g.mulAdd(p,a,m)},h.prototype.getKeyRecoveryParam=function(e,t,r,n){if(null!==(t=new u(t,n)).recoveryParam)return t.recoveryParam;for(var i=0;i<4;i++){var s;try{s=this.recoverPubKey(e,t,i)}catch(e){continue}if(s.eq(r))return i}throw new Error(\"Unable to find valid recovery factor\")}},{\"../curves\":411,\"../utils\":419,\"./key\":413,\"./signature\":414,\"bn.js\":420,brorand:187,\"hmac-drbg\":438}],413:[function(e,t,r){\"use strict\";var n=e(\"bn.js\"),i=e(\"../utils\").assert;function s(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}t.exports=s,s.fromPublic=function(e,t,r){return t instanceof s?t:new s(e,{pub:t,pubEnc:r})},s.fromPrivate=function(e,t,r){return t instanceof s?t:new s(e,{priv:t,privEnc:r})},s.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:\"Invalid public key\"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:\"Public key * N != O\"}:{result:!1,reason:\"Public key is not a point\"}},s.prototype.getPublic=function(e,t){return\"string\"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},s.prototype.getPrivate=function(e){return\"hex\"===e?this.priv.toString(16,2):this.priv},s.prototype._importPrivate=function(e,t){this.priv=new n(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},s.prototype._importPublic=function(e,t){if(e.x||e.y)return\"mont\"===this.ec.curve.type?i(e.x,\"Need x coordinate\"):\"short\"!==this.ec.curve.type&&\"edwards\"!==this.ec.curve.type||i(e.x&&e.y,\"Need both x and y coordinate\"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},s.prototype.derive=function(e){return e.validate()||i(e.validate(),\"public point not validated\"),e.mul(this.priv).getX()},s.prototype.sign=function(e,t,r){return this.ec.sign(e,this,t,r)},s.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},s.prototype.inspect=function(){return\"<Key priv: \"+(this.priv&&this.priv.toString(16,2))+\" pub: \"+(this.pub&&this.pub.inspect())+\" >\"}},{\"../utils\":419,\"bn.js\":420}],414:[function(e,t,r){\"use strict\";var n=e(\"bn.js\"),i=e(\"../utils\"),s=i.assert;function o(e,t){if(e instanceof o)return e;this._importDER(e,t)||(s(e.r&&e.s,\"Signature without r or s\"),this.r=new n(e.r,16),this.s=new n(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function a(){this.place=0}function l(e,t){var r=e[t.place++];if(!(128&r))return r;var n=15&r;if(0===n||n>4)return!1;for(var i=0,s=0,o=t.place;s<n;s++,o++)i<<=8,i|=e[o],i>>>=0;return!(i<=127)&&(t.place=o,i)}function c(e){for(var t=0,r=e.length-1;!e[t]&&!(128&e[t+1])&&t<r;)t++;return 0===t?e:e.slice(t)}function u(e,t){if(t<128)e.push(t);else{var r=1+(Math.log(t)/Math.LN2>>>3);for(e.push(128|r);--r;)e.push(t>>>(r<<3)&255);e.push(t)}}t.exports=o,o.prototype._importDER=function(e,t){e=i.toArray(e,t);var r=new a;if(48!==e[r.place++])return!1;var s=l(e,r);if(!1===s)return!1;if(s+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var o=l(e,r);if(!1===o)return!1;var c=e.slice(r.place,o+r.place);if(r.place+=o,2!==e[r.place++])return!1;var u=l(e,r);if(!1===u)return!1;if(e.length!==u+r.place)return!1;var h=e.slice(r.place,u+r.place);if(0===c[0]){if(!(128&c[1]))return!1;c=c.slice(1)}if(0===h[0]){if(!(128&h[1]))return!1;h=h.slice(1)}return this.r=new n(c),this.s=new n(h),this.recoveryParam=null,!0},o.prototype.toDER=function(e){var t=this.r.toArray(),r=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&r[0]&&(r=[0].concat(r)),t=c(t),r=c(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];u(n,t.length),(n=n.concat(t)).push(2),u(n,r.length);var s=n.concat(r),o=[48];return u(o,s.length),o=o.concat(s),i.encode(o,e)}},{\"../utils\":419,\"bn.js\":420}],415:[function(e,t,r){\"use strict\";var n=e(\"hash.js\"),i=e(\"../curves\"),s=e(\"../utils\"),o=s.assert,a=s.parseBytes,l=e(\"./key\"),c=e(\"./signature\");function u(e){if(o(\"ed25519\"===e,\"only tested with ed25519 so far\"),!(this instanceof u))return new u(e);e=i[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=n.sha512}t.exports=u,u.prototype.sign=function(e,t){e=a(e);var r=this.keyFromSecret(t),n=this.hashInt(r.messagePrefix(),e),i=this.g.mul(n),s=this.encodePoint(i),o=this.hashInt(s,r.pubBytes(),e).mul(r.priv()),l=n.add(o).umod(this.curve.n);return this.makeSignature({R:i,S:l,Rencoded:s})},u.prototype.verify=function(e,t,r){e=a(e),t=this.makeSignature(t);var n=this.keyFromPublic(r),i=this.hashInt(t.Rencoded(),n.pubBytes(),e),s=this.g.mul(t.S());return t.R().add(n.pub().mul(i)).eq(s)},u.prototype.hashInt=function(){for(var e=this.hash(),t=0;t<arguments.length;t++)e.update(arguments[t]);return s.intFromLE(e.digest()).umod(this.curve.n)},u.prototype.keyFromPublic=function(e){return l.fromPublic(this,e)},u.prototype.keyFromSecret=function(e){return l.fromSecret(this,e)},u.prototype.makeSignature=function(e){return e instanceof c?e:new c(this,e)},u.prototype.encodePoint=function(e){var t=e.getY().toArray(\"le\",this.encodingLength);return t[this.encodingLength-1]|=e.getX().isOdd()?128:0,t},u.prototype.decodePoint=function(e){var t=(e=s.parseBytes(e)).length-1,r=e.slice(0,t).concat(-129&e[t]),n=0!=(128&e[t]),i=s.intFromLE(r);return this.curve.pointFromY(i,n)},u.prototype.encodeInt=function(e){return e.toArray(\"le\",this.encodingLength)},u.prototype.decodeInt=function(e){return s.intFromLE(e)},u.prototype.isPoint=function(e){return e instanceof this.pointClass}},{\"../curves\":411,\"../utils\":419,\"./key\":416,\"./signature\":417,\"hash.js\":426}],416:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=n.assert,s=n.parseBytes,o=n.cachedProperty;function a(e,t){this.eddsa=e,this._secret=s(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=s(t.pub)}a.fromPublic=function(e,t){return t instanceof a?t:new a(e,{pub:t})},a.fromSecret=function(e,t){return t instanceof a?t:new a(e,{secret:t})},a.prototype.secret=function(){return this._secret},o(a,\"pubBytes\",(function(){return this.eddsa.encodePoint(this.pub())})),o(a,\"pub\",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),o(a,\"privBytes\",(function(){var e=this.eddsa,t=this.hash(),r=e.encodingLength-1,n=t.slice(0,e.encodingLength);return n[0]&=248,n[r]&=127,n[r]|=64,n})),o(a,\"priv\",(function(){return this.eddsa.decodeInt(this.privBytes())})),o(a,\"hash\",(function(){return this.eddsa.hash().update(this.secret()).digest()})),o(a,\"messagePrefix\",(function(){return this.hash().slice(this.eddsa.encodingLength)})),a.prototype.sign=function(e){return i(this._secret,\"KeyPair can only verify\"),this.eddsa.sign(e,this)},a.prototype.verify=function(e,t){return this.eddsa.verify(e,t,this)},a.prototype.getSecret=function(e){return i(this._secret,\"KeyPair is public only\"),n.encode(this.secret(),e)},a.prototype.getPublic=function(e){return n.encode(this.pubBytes(),e)},t.exports=a},{\"../utils\":419}],417:[function(e,t,r){\"use strict\";var n=e(\"bn.js\"),i=e(\"../utils\"),s=i.assert,o=i.cachedProperty,a=i.parseBytes;function l(e,t){this.eddsa=e,\"object\"!=typeof t&&(t=a(t)),Array.isArray(t)&&(t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),s(t.R&&t.S,\"Signature without R or S\"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof n&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}o(l,\"S\",(function(){return this.eddsa.decodeInt(this.Sencoded())})),o(l,\"R\",(function(){return this.eddsa.decodePoint(this.Rencoded())})),o(l,\"Rencoded\",(function(){return this.eddsa.encodePoint(this.R())})),o(l,\"Sencoded\",(function(){return this.eddsa.encodeInt(this.S())})),l.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},l.prototype.toHex=function(){return i.encode(this.toBytes(),\"hex\").toUpperCase()},t.exports=l},{\"../utils\":419,\"bn.js\":420}],418:[function(e,t,r){\"use strict\";t.exports={doubles:{step:4,points:[[\"e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a\",\"f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821\"],[\"8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508\",\"11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf\"],[\"175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739\",\"d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695\"],[\"363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640\",\"4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9\"],[\"8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c\",\"4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36\"],[\"723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda\",\"96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f\"],[\"eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa\",\"5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999\"],[\"100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0\",\"cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09\"],[\"e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d\",\"9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d\"],[\"feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d\",\"e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088\"],[\"da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1\",\"9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d\"],[\"53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0\",\"5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8\"],[\"8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047\",\"10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a\"],[\"385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862\",\"283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453\"],[\"6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7\",\"7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160\"],[\"3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd\",\"56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0\"],[\"85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83\",\"7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6\"],[\"948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a\",\"53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589\"],[\"6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8\",\"bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17\"],[\"e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d\",\"4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda\"],[\"e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725\",\"7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd\"],[\"213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754\",\"4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2\"],[\"4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c\",\"17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6\"],[\"fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6\",\"6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f\"],[\"76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39\",\"c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01\"],[\"c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891\",\"893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3\"],[\"d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b\",\"febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f\"],[\"b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03\",\"2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7\"],[\"e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d\",\"eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78\"],[\"a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070\",\"7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1\"],[\"90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4\",\"e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150\"],[\"8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da\",\"662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82\"],[\"e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11\",\"1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc\"],[\"8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e\",\"efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b\"],[\"e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41\",\"2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51\"],[\"b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef\",\"67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45\"],[\"d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8\",\"db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120\"],[\"324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d\",\"648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84\"],[\"4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96\",\"35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d\"],[\"9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd\",\"ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d\"],[\"6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5\",\"9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8\"],[\"a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266\",\"40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8\"],[\"7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71\",\"34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac\"],[\"928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac\",\"c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f\"],[\"85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751\",\"1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962\"],[\"ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e\",\"493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907\"],[\"827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241\",\"c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec\"],[\"eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3\",\"be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d\"],[\"e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f\",\"4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414\"],[\"1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19\",\"aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd\"],[\"146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be\",\"b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0\"],[\"fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9\",\"6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811\"],[\"da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2\",\"8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1\"],[\"a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13\",\"7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c\"],[\"174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c\",\"ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73\"],[\"959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba\",\"2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd\"],[\"d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151\",\"e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405\"],[\"64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073\",\"d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589\"],[\"8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458\",\"38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e\"],[\"13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b\",\"69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27\"],[\"bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366\",\"d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1\"],[\"8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa\",\"40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482\"],[\"8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0\",\"620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945\"],[\"dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787\",\"7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573\"],[\"f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e\",\"ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82\"]]},naf:{wnd:7,points:[[\"f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9\",\"388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672\"],[\"2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4\",\"d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6\"],[\"5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc\",\"6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da\"],[\"acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe\",\"cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37\"],[\"774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb\",\"d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b\"],[\"f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8\",\"ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81\"],[\"d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e\",\"581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58\"],[\"defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34\",\"4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77\"],[\"2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c\",\"85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a\"],[\"352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5\",\"321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c\"],[\"2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f\",\"2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67\"],[\"9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714\",\"73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402\"],[\"daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729\",\"a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55\"],[\"c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db\",\"2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482\"],[\"6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4\",\"e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82\"],[\"1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5\",\"b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396\"],[\"605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479\",\"2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49\"],[\"62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d\",\"80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf\"],[\"80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f\",\"1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a\"],[\"7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb\",\"d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7\"],[\"d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9\",\"eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933\"],[\"49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963\",\"758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a\"],[\"77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74\",\"958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6\"],[\"f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530\",\"e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37\"],[\"463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b\",\"5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e\"],[\"f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247\",\"cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6\"],[\"caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1\",\"cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476\"],[\"2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120\",\"4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40\"],[\"7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435\",\"91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61\"],[\"754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18\",\"673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683\"],[\"e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8\",\"59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5\"],[\"186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb\",\"3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b\"],[\"df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f\",\"55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417\"],[\"5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143\",\"efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868\"],[\"290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba\",\"e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a\"],[\"af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45\",\"f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6\"],[\"766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a\",\"744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996\"],[\"59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e\",\"c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e\"],[\"f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8\",\"e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d\"],[\"7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c\",\"30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2\"],[\"948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519\",\"e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e\"],[\"7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab\",\"100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437\"],[\"3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca\",\"ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311\"],[\"d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf\",\"8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4\"],[\"1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610\",\"68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575\"],[\"733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4\",\"f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d\"],[\"15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c\",\"d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d\"],[\"a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940\",\"edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629\"],[\"e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980\",\"a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06\"],[\"311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3\",\"66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374\"],[\"34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf\",\"9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee\"],[\"f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63\",\"4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1\"],[\"d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448\",\"fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b\"],[\"32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf\",\"5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661\"],[\"7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5\",\"8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6\"],[\"ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6\",\"8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e\"],[\"16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5\",\"5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d\"],[\"eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99\",\"f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc\"],[\"78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51\",\"f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4\"],[\"494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5\",\"42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c\"],[\"a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5\",\"204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b\"],[\"c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997\",\"4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913\"],[\"841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881\",\"73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154\"],[\"5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5\",\"39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865\"],[\"36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66\",\"d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc\"],[\"336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726\",\"ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224\"],[\"8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede\",\"6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e\"],[\"1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94\",\"60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6\"],[\"85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31\",\"3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511\"],[\"29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51\",\"b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b\"],[\"a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252\",\"ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2\"],[\"4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5\",\"cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c\"],[\"d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b\",\"6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3\"],[\"ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4\",\"322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d\"],[\"af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f\",\"6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700\"],[\"e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889\",\"2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4\"],[\"591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246\",\"b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196\"],[\"11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984\",\"998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4\"],[\"3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a\",\"b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257\"],[\"cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030\",\"bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13\"],[\"c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197\",\"6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096\"],[\"c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593\",\"c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38\"],[\"a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef\",\"21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f\"],[\"347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38\",\"60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448\"],[\"da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a\",\"49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a\"],[\"c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111\",\"5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4\"],[\"4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502\",\"7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437\"],[\"3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea\",\"be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7\"],[\"cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26\",\"8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d\"],[\"b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986\",\"39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a\"],[\"d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e\",\"62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54\"],[\"48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4\",\"25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77\"],[\"dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda\",\"ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517\"],[\"6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859\",\"cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10\"],[\"e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f\",\"f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125\"],[\"eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c\",\"6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e\"],[\"13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942\",\"fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1\"],[\"ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a\",\"1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2\"],[\"b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80\",\"5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423\"],[\"ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d\",\"438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8\"],[\"8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1\",\"cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758\"],[\"52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63\",\"c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375\"],[\"e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352\",\"6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d\"],[\"7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193\",\"ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec\"],[\"5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00\",\"9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0\"],[\"32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58\",\"ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c\"],[\"e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7\",\"d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4\"],[\"8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8\",\"c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f\"],[\"4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e\",\"67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649\"],[\"3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d\",\"cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826\"],[\"674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b\",\"299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5\"],[\"d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f\",\"f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87\"],[\"30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6\",\"462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b\"],[\"be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297\",\"62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc\"],[\"93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a\",\"7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c\"],[\"b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c\",\"ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f\"],[\"d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52\",\"4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a\"],[\"d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb\",\"bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46\"],[\"463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065\",\"bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f\"],[\"7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917\",\"603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03\"],[\"74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9\",\"cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08\"],[\"30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3\",\"553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8\"],[\"9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57\",\"712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373\"],[\"176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66\",\"ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3\"],[\"75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8\",\"9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8\"],[\"809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721\",\"9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1\"],[\"1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180\",\"4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9\"]]}}},{}],419:[function(e,t,r){\"use strict\";var n=r,i=e(\"bn.js\"),s=e(\"minimalistic-assert\"),o=e(\"minimalistic-crypto-utils\");n.assert=s,n.toArray=o.toArray,n.zero2=o.zero2,n.toHex=o.toHex,n.encode=o.encode,n.getNAF=function(e,t,r){var n=new Array(Math.max(e.bitLength(),r)+1);n.fill(0);for(var i=1<<t+1,s=e.clone(),o=0;o<n.length;o++){var a,l=s.andln(i-1);s.isOdd()?(a=l>(i>>1)-1?(i>>1)-l:l,s.isubn(a)):a=0,n[o]=a,s.iushrn(1)}return n},n.getJSF=function(e,t){var r=[[],[]];e=e.clone(),t=t.clone();for(var n,i=0,s=0;e.cmpn(-i)>0||t.cmpn(-s)>0;){var o,a,l=e.andln(3)+i&3,c=t.andln(3)+s&3;3===l&&(l=-1),3===c&&(c=-1),o=0==(1&l)?0:3!==(n=e.andln(7)+i&7)&&5!==n||2!==c?l:-l,r[0].push(o),a=0==(1&c)?0:3!==(n=t.andln(7)+s&7)&&5!==n||2!==l?c:-c,r[1].push(a),2*i===o+1&&(i=1-i),2*s===a+1&&(s=1-s),e.iushrn(1),t.iushrn(1)}return r},n.cachedProperty=function(e,t,r){var n=\"_\"+t;e.prototype[t]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}},n.parseBytes=function(e){return\"string\"==typeof e?n.toArray(e,\"hex\"):e},n.intFromLE=function(e){return new i(e,\"hex\",\"le\")}},{\"bn.js\":420,\"minimalistic-assert\":453,\"minimalistic-crypto-utils\":454}],420:[function(e,t,r){arguments[4][184][0].apply(r,arguments)},{buffer:188,dup:184}],421:[function(e,t,r){t.exports={name:\"elliptic\",version:\"6.5.4\",description:\"EC cryptography\",main:\"lib/elliptic.js\",files:[\"lib\"],scripts:{lint:\"eslint lib test\",\"lint:fix\":\"npm run lint -- --fix\",unit:\"istanbul test _mocha --reporter=spec test/index.js\",test:\"npm run lint && npm run unit\",version:\"grunt dist && git add dist/\"},repository:{type:\"git\",url:\"git@github.com:indutny/elliptic\"},keywords:[\"EC\",\"Elliptic\",\"curve\",\"Cryptography\"],author:\"Fedor Indutny <fedor@indutny.com>\",license:\"MIT\",bugs:{url:\"https://github.com/indutny/elliptic/issues\"},homepage:\"https://github.com/indutny/elliptic\",devDependencies:{brfs:\"^2.0.2\",coveralls:\"^3.1.0\",eslint:\"^7.6.0\",grunt:\"^1.2.1\",\"grunt-browserify\":\"^5.3.0\",\"grunt-cli\":\"^1.3.2\",\"grunt-contrib-connect\":\"^3.0.0\",\"grunt-contrib-copy\":\"^1.0.0\",\"grunt-contrib-uglify\":\"^5.0.0\",\"grunt-mocha-istanbul\":\"^5.0.2\",\"grunt-saucelabs\":\"^9.0.1\",istanbul:\"^0.4.5\",mocha:\"^8.0.1\"},dependencies:{\"bn.js\":\"^4.11.9\",brorand:\"^1.1.0\",\"hash.js\":\"^1.0.0\",\"hmac-drbg\":\"^1.0.1\",inherits:\"^2.0.4\",\"minimalistic-assert\":\"^1.0.1\",\"minimalistic-crypto-utils\":\"^1.0.1\"}}},{}],422:[function(e,t,r){\"use strict\";var n=Object.create||function(e){var t=function(){};return t.prototype=e,new t},i=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return r},s=Function.prototype.bind||function(e){var t=this;return function(){return t.apply(e,arguments)}};function o(){this._events&&Object.prototype.hasOwnProperty.call(this,\"_events\")||(this._events=n(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}t.exports=o,o.EventEmitter=o,o.prototype._events=void 0,o.prototype._maxListeners=void 0;var a,l=10;try{var c={};Object.defineProperty&&Object.defineProperty(c,\"x\",{value:0}),a=0===c.x}catch(e){a=!1}function u(e){return void 0===e._maxListeners?o.defaultMaxListeners:e._maxListeners}function h(e,t,r){if(t)e.call(r);else for(var n=e.length,i=_(e,n),s=0;s<n;++s)i[s].call(r)}function f(e,t,r,n){if(t)e.call(r,n);else for(var i=e.length,s=_(e,i),o=0;o<i;++o)s[o].call(r,n)}function d(e,t,r,n,i){if(t)e.call(r,n,i);else for(var s=e.length,o=_(e,s),a=0;a<s;++a)o[a].call(r,n,i)}function p(e,t,r,n,i,s){if(t)e.call(r,n,i,s);else for(var o=e.length,a=_(e,o),l=0;l<o;++l)a[l].call(r,n,i,s)}function m(e,t,r,n){if(t)e.apply(r,n);else for(var i=e.length,s=_(e,i),o=0;o<i;++o)s[o].apply(r,n)}function b(e,t,r,i){var s,o,a;if(\"function\"!=typeof r)throw new TypeError('\"listener\" argument must be a function');if((o=e._events)?(o.newListener&&(e.emit(\"newListener\",t,r.listener?r.listener:r),o=e._events),a=o[t]):(o=e._events=n(null),e._eventsCount=0),a){if(\"function\"==typeof a?a=o[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&(s=u(e))&&s>0&&a.length>s){a.warned=!0;var l=new Error(\"Possible EventEmitter memory leak detected. \"+a.length+' \"'+String(t)+'\" listeners added. Use emitter.setMaxListeners() to increase limit.');l.name=\"MaxListenersExceededWarning\",l.emitter=e,l.type=t,l.count=a.length,\"object\"==typeof console&&console.warn&&console.warn(\"%s: %s\",l.name,l.message)}}else a=o[t]=r,++e._eventsCount;return e}function g(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t<e.length;++t)e[t]=arguments[t];this.listener.apply(this.target,e)}}function y(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=s.call(g,n);return i.listener=r,n.wrapFn=i,i}function v(e,t,r){var n=e._events;if(!n)return[];var i=n[t];return i?\"function\"==typeof i?r?[i.listener||i]:[i]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(i):_(i,i.length):[]}function w(e){var t=this._events;if(t){var r=t[e];if(\"function\"==typeof r)return 1;if(r)return r.length}return 0}function _(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}a?Object.defineProperty(o,\"defaultMaxListeners\",{enumerable:!0,get:function(){return l},set:function(e){if(\"number\"!=typeof e||e<0||e!=e)throw new TypeError('\"defaultMaxListeners\" must be a positive number');l=e}}):o.defaultMaxListeners=l,o.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||isNaN(e))throw new TypeError('\"n\" argument must be a positive number');return this._maxListeners=e,this},o.prototype.getMaxListeners=function(){return u(this)},o.prototype.emit=function(e){var t,r,n,i,s,o,a=\"error\"===e;if(o=this._events)a=a&&null==o.error;else if(!a)return!1;if(a){if(arguments.length>1&&(t=arguments[1]),t instanceof Error)throw t;var l=new Error('Unhandled \"error\" event. ('+t+\")\");throw l.context=t,l}if(!(r=o[e]))return!1;var c=\"function\"==typeof r;switch(n=arguments.length){case 1:h(r,c,this);break;case 2:f(r,c,this,arguments[1]);break;case 3:d(r,c,this,arguments[1],arguments[2]);break;case 4:p(r,c,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),s=1;s<n;s++)i[s-1]=arguments[s];m(r,c,this,i)}return!0},o.prototype.addListener=function(e,t){return b(this,e,t,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,t){return b(this,e,t,!0)},o.prototype.once=function(e,t){if(\"function\"!=typeof t)throw new TypeError('\"listener\" argument must be a function');return this.on(e,y(this,e,t)),this},o.prototype.prependOnceListener=function(e,t){if(\"function\"!=typeof t)throw new TypeError('\"listener\" argument must be a function');return this.prependListener(e,y(this,e,t)),this},o.prototype.removeListener=function(e,t){var r,i,s,o,a;if(\"function\"!=typeof t)throw new TypeError('\"listener\" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=n(null):(delete i[e],i.removeListener&&this.emit(\"removeListener\",e,r.listener||t));else if(\"function\"!=typeof r){for(s=-1,o=r.length-1;o>=0;o--)if(r[o]===t||r[o].listener===t){a=r[o].listener,s=o;break}if(s<0)return this;0===s?r.shift():function(e,t){for(var r=t,n=r+1,i=e.length;n<i;r+=1,n+=1)e[r]=e[n];e.pop()}(r,s),1===r.length&&(i[e]=r[0]),i.removeListener&&this.emit(\"removeListener\",e,a||t)}return this},o.prototype.removeAllListeners=function(e){var t,r,s;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=n(null),this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=n(null):delete r[e]),this;if(0===arguments.length){var o,a=i(r);for(s=0;s<a.length;++s)\"removeListener\"!==(o=a[s])&&this.removeAllListeners(o);return this.removeAllListeners(\"removeListener\"),this._events=n(null),this._eventsCount=0,this}if(\"function\"==typeof(t=r[e]))this.removeListener(e,t);else if(t)for(s=t.length-1;s>=0;s--)this.removeListener(e,t[s]);return this},o.prototype.listeners=function(e){return v(this,e,!0)},o.prototype.rawListeners=function(e){return v(this,e,!1)},o.listenerCount=function(e,t){return\"function\"==typeof e.listenerCount?e.listenerCount(t):w.call(e,t)},o.prototype.listenerCount=w,o.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]}},{}],423:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer,i=e(\"md5.js\");t.exports=function(e,t,r,s){if(n.isBuffer(e)||(e=n.from(e,\"binary\")),t&&(n.isBuffer(t)||(t=n.from(t,\"binary\")),8!==t.length))throw new RangeError(\"salt should be Buffer with 8 byte length\");for(var o=r/8,a=n.alloc(o),l=n.alloc(s||0),c=n.alloc(0);o>0||s>0;){var u=new i;u.update(c),u.update(e),t&&u.update(t),c=u.digest();var h=0;if(o>0){var f=a.length-o;h=Math.min(o,c.length),c.copy(a,f,0,h),o-=h}if(h<c.length&&s>0){var d=l.length-s,p=Math.min(s,c.length-h);c.copy(l,d,h,h+p),s-=p}}return c.fill(0),{key:a,iv:l}}},{\"md5.js\":450,\"safe-buffer\":494}],424:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.CsvParserStream=r.ParserOptions=r.parseFile=r.parseStream=r.parseString=r.parse=r.FormatterOptions=r.CsvFormatterStream=r.writeToPath=r.writeToString=r.writeToBuffer=r.writeToStream=r.write=r.format=void 0;var n=e(\"@fast-csv/format\");Object.defineProperty(r,\"format\",{enumerable:!0,get:function(){return n.format}}),Object.defineProperty(r,\"write\",{enumerable:!0,get:function(){return n.write}}),Object.defineProperty(r,\"writeToStream\",{enumerable:!0,get:function(){return n.writeToStream}}),Object.defineProperty(r,\"writeToBuffer\",{enumerable:!0,get:function(){return n.writeToBuffer}}),Object.defineProperty(r,\"writeToString\",{enumerable:!0,get:function(){return n.writeToString}}),Object.defineProperty(r,\"writeToPath\",{enumerable:!0,get:function(){return n.writeToPath}}),Object.defineProperty(r,\"CsvFormatterStream\",{enumerable:!0,get:function(){return n.CsvFormatterStream}}),Object.defineProperty(r,\"FormatterOptions\",{enumerable:!0,get:function(){return n.FormatterOptions}});var i=e(\"@fast-csv/parse\");Object.defineProperty(r,\"parse\",{enumerable:!0,get:function(){return i.parse}}),Object.defineProperty(r,\"parseString\",{enumerable:!0,get:function(){return i.parseString}}),Object.defineProperty(r,\"parseStream\",{enumerable:!0,get:function(){return i.parseStream}}),Object.defineProperty(r,\"parseFile\",{enumerable:!0,get:function(){return i.parseFile}}),Object.defineProperty(r,\"ParserOptions\",{enumerable:!0,get:function(){return i.ParserOptions}}),Object.defineProperty(r,\"CsvParserStream\",{enumerable:!0,get:function(){return i.CsvParserStream}})},{\"@fast-csv/format\":151,\"@fast-csv/parse\":155}],425:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer,i=e(\"readable-stream\").Transform;function s(e){i.call(this),this._block=n.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}e(\"inherits\")(s,i),s.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},s.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},s.prototype.update=function(e,t){if(function(e,t){if(!n.isBuffer(e)&&\"string\"!=typeof e)throw new TypeError(t+\" must be a string or a buffer\")}(e,\"Data\"),this._finalized)throw new Error(\"Digest already called\");n.isBuffer(e)||(e=n.from(e,t));for(var r=this._block,i=0;this._blockOffset+e.length-i>=this._blockSize;){for(var s=this._blockOffset;s<this._blockSize;)r[s++]=e[i++];this._update(),this._blockOffset=0}for(;i<e.length;)r[this._blockOffset++]=e[i++];for(var o=0,a=8*e.length;a>0;++o)this._length[o]+=a,(a=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*a);return this},s.prototype._update=function(){throw new Error(\"_update is not implemented\")},s.prototype.digest=function(e){if(this._finalized)throw new Error(\"Digest already called\");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},s.prototype._digest=function(){throw new Error(\"_digest is not implemented\")},t.exports=s},{inherits:440,\"readable-stream\":491,\"safe-buffer\":494}],426:[function(e,t,r){\"use strict\";var n=r;n.utils=e(\"./hash/utils\"),n.common=e(\"./hash/common\"),n.sha=e(\"./hash/sha\"),n.ripemd=e(\"./hash/ripemd\"),n.hmac=e(\"./hash/hmac\"),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},{\"./hash/common\":427,\"./hash/hmac\":428,\"./hash/ripemd\":429,\"./hash/sha\":430,\"./hash/utils\":437}],427:[function(e,t,r){\"use strict\";var n=e(\"./utils\"),i=e(\"minimalistic-assert\");function s(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian=\"big\",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}r.BlockHash=s,s.prototype.update=function(e,t){if(e=n.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=n.join32(e,0,e.length-r,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},s.prototype.digest=function(e){return this.update(this._pad()),i(null===this.pending),this._digest(e)},s.prototype._pad=function(){var e=this.pendingTotal,t=this._delta8,r=t-(e+this.padLength)%t,n=new Array(r+this.padLength);n[0]=128;for(var i=1;i<r;i++)n[i]=0;if(e<<=3,\"big\"===this.endian){for(var s=8;s<this.padLength;s++)n[i++]=0;n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=e>>>24&255,n[i++]=e>>>16&255,n[i++]=e>>>8&255,n[i++]=255&e}else for(n[i++]=255&e,n[i++]=e>>>8&255,n[i++]=e>>>16&255,n[i++]=e>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,s=8;s<this.padLength;s++)n[i++]=0;return n}},{\"./utils\":437,\"minimalistic-assert\":453}],428:[function(e,t,r){\"use strict\";var n=e(\"./utils\"),i=e(\"minimalistic-assert\");function s(e,t,r){if(!(this instanceof s))return new s(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(n.toArray(t,r))}t.exports=s,s.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),i(e.length<=this.blockSize);for(var t=e.length;t<this.blockSize;t++)e.push(0);for(t=0;t<e.length;t++)e[t]^=54;for(this.inner=(new this.Hash).update(e),t=0;t<e.length;t++)e[t]^=106;this.outer=(new this.Hash).update(e)},s.prototype.update=function(e,t){return this.inner.update(e,t),this},s.prototype.digest=function(e){return this.outer.update(this.inner.digest()),this.outer.digest(e)}},{\"./utils\":437,\"minimalistic-assert\":453}],429:[function(e,t,r){\"use strict\";var n=e(\"./utils\"),i=e(\"./common\"),s=n.rotl32,o=n.sum32,a=n.sum32_3,l=n.sum32_4,c=i.BlockHash;function u(){if(!(this instanceof u))return new u;c.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian=\"little\"}function h(e,t,r,n){return e<=15?t^r^n:e<=31?t&r|~t&n:e<=47?(t|~r)^n:e<=63?t&n|r&~n:t^(r|~n)}function f(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function d(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}n.inherits(u,c),r.ripemd160=u,u.blockSize=512,u.outSize=160,u.hmacStrength=192,u.padLength=64,u.prototype._update=function(e,t){for(var r=this.h[0],n=this.h[1],i=this.h[2],c=this.h[3],u=this.h[4],y=r,v=n,w=i,_=c,x=u,k=0;k<80;k++){var S=o(s(l(r,h(k,n,i,c),e[p[k]+t],f(k)),b[k]),u);r=u,u=c,c=s(i,10),i=n,n=S,S=o(s(l(y,h(79-k,v,w,_),e[m[k]+t],d(k)),g[k]),x),y=x,x=_,_=s(w,10),w=v,v=S}S=a(this.h[1],i,_),this.h[1]=a(this.h[2],c,x),this.h[2]=a(this.h[3],u,y),this.h[3]=a(this.h[4],r,v),this.h[4]=a(this.h[0],n,w),this.h[0]=S},u.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h,\"little\"):n.split32(this.h,\"little\")};var p=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],m=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],b=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],g=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},{\"./common\":427,\"./utils\":437}],430:[function(e,t,r){\"use strict\";r.sha1=e(\"./sha/1\"),r.sha224=e(\"./sha/224\"),r.sha256=e(\"./sha/256\"),r.sha384=e(\"./sha/384\"),r.sha512=e(\"./sha/512\")},{\"./sha/1\":431,\"./sha/224\":432,\"./sha/256\":433,\"./sha/384\":434,\"./sha/512\":435}],431:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../common\"),s=e(\"./common\"),o=n.rotl32,a=n.sum32,l=n.sum32_5,c=s.ft_1,u=i.BlockHash,h=[1518500249,1859775393,2400959708,3395469782];function f(){if(!(this instanceof f))return new f;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}n.inherits(f,u),t.exports=f,f.blockSize=512,f.outSize=160,f.hmacStrength=80,f.padLength=64,f.prototype._update=function(e,t){for(var r=this.W,n=0;n<16;n++)r[n]=e[t+n];for(;n<r.length;n++)r[n]=o(r[n-3]^r[n-8]^r[n-14]^r[n-16],1);var i=this.h[0],s=this.h[1],u=this.h[2],f=this.h[3],d=this.h[4];for(n=0;n<r.length;n++){var p=~~(n/20),m=l(o(i,5),c(p,s,u,f),d,r[n],h[p]);d=f,f=u,u=o(s,30),s=i,i=m}this.h[0]=a(this.h[0],i),this.h[1]=a(this.h[1],s),this.h[2]=a(this.h[2],u),this.h[3]=a(this.h[3],f),this.h[4]=a(this.h[4],d)},f.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h,\"big\"):n.split32(this.h,\"big\")}},{\"../common\":427,\"../utils\":437,\"./common\":436}],432:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./256\");function s(){if(!(this instanceof s))return new s;i.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}n.inherits(s,i),t.exports=s,s.blockSize=512,s.outSize=224,s.hmacStrength=192,s.padLength=64,s.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h.slice(0,7),\"big\"):n.split32(this.h.slice(0,7),\"big\")}},{\"../utils\":437,\"./256\":433}],433:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../common\"),s=e(\"./common\"),o=e(\"minimalistic-assert\"),a=n.sum32,l=n.sum32_4,c=n.sum32_5,u=s.ch32,h=s.maj32,f=s.s0_256,d=s.s1_256,p=s.g0_256,m=s.g1_256,b=i.BlockHash,g=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function y(){if(!(this instanceof y))return new y;b.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=g,this.W=new Array(64)}n.inherits(y,b),t.exports=y,y.blockSize=512,y.outSize=256,y.hmacStrength=192,y.padLength=64,y.prototype._update=function(e,t){for(var r=this.W,n=0;n<16;n++)r[n]=e[t+n];for(;n<r.length;n++)r[n]=l(m(r[n-2]),r[n-7],p(r[n-15]),r[n-16]);var i=this.h[0],s=this.h[1],b=this.h[2],g=this.h[3],y=this.h[4],v=this.h[5],w=this.h[6],_=this.h[7];for(o(this.k.length===r.length),n=0;n<r.length;n++){var x=c(_,d(y),u(y,v,w),this.k[n],r[n]),k=a(f(i),h(i,s,b));_=w,w=v,v=y,y=a(g,x),g=b,b=s,s=i,i=a(x,k)}this.h[0]=a(this.h[0],i),this.h[1]=a(this.h[1],s),this.h[2]=a(this.h[2],b),this.h[3]=a(this.h[3],g),this.h[4]=a(this.h[4],y),this.h[5]=a(this.h[5],v),this.h[6]=a(this.h[6],w),this.h[7]=a(this.h[7],_)},y.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h,\"big\"):n.split32(this.h,\"big\")}},{\"../common\":427,\"../utils\":437,\"./common\":436,\"minimalistic-assert\":453}],434:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./512\");function s(){if(!(this instanceof s))return new s;i.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}n.inherits(s,i),t.exports=s,s.blockSize=1024,s.outSize=384,s.hmacStrength=192,s.padLength=128,s.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h.slice(0,12),\"big\"):n.split32(this.h.slice(0,12),\"big\")}},{\"../utils\":437,\"./512\":435}],435:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../common\"),s=e(\"minimalistic-assert\"),o=n.rotr64_hi,a=n.rotr64_lo,l=n.shr64_hi,c=n.shr64_lo,u=n.sum64,h=n.sum64_hi,f=n.sum64_lo,d=n.sum64_4_hi,p=n.sum64_4_lo,m=n.sum64_5_hi,b=n.sum64_5_lo,g=i.BlockHash,y=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function v(){if(!(this instanceof v))return new v;g.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=y,this.W=new Array(160)}function w(e,t,r,n,i){var s=e&r^~e&i;return s<0&&(s+=4294967296),s}function _(e,t,r,n,i,s){var o=t&n^~t&s;return o<0&&(o+=4294967296),o}function x(e,t,r,n,i){var s=e&r^e&i^r&i;return s<0&&(s+=4294967296),s}function k(e,t,r,n,i,s){var o=t&n^t&s^n&s;return o<0&&(o+=4294967296),o}function S(e,t){var r=o(e,t,28)^o(t,e,2)^o(t,e,7);return r<0&&(r+=4294967296),r}function M(e,t){var r=a(e,t,28)^a(t,e,2)^a(t,e,7);return r<0&&(r+=4294967296),r}function C(e,t){var r=o(e,t,14)^o(e,t,18)^o(t,e,9);return r<0&&(r+=4294967296),r}function T(e,t){var r=a(e,t,14)^a(e,t,18)^a(t,e,9);return r<0&&(r+=4294967296),r}function E(e,t){var r=o(e,t,1)^o(e,t,8)^l(e,t,7);return r<0&&(r+=4294967296),r}function A(e,t){var r=a(e,t,1)^a(e,t,8)^c(e,t,7);return r<0&&(r+=4294967296),r}function R(e,t){var r=o(e,t,19)^o(t,e,29)^l(e,t,6);return r<0&&(r+=4294967296),r}function O(e,t){var r=a(e,t,19)^a(t,e,29)^c(e,t,6);return r<0&&(r+=4294967296),r}n.inherits(v,g),t.exports=v,v.blockSize=1024,v.outSize=512,v.hmacStrength=192,v.padLength=128,v.prototype._prepareBlock=function(e,t){for(var r=this.W,n=0;n<32;n++)r[n]=e[t+n];for(;n<r.length;n+=2){var i=R(r[n-4],r[n-3]),s=O(r[n-4],r[n-3]),o=r[n-14],a=r[n-13],l=E(r[n-30],r[n-29]),c=A(r[n-30],r[n-29]),u=r[n-32],h=r[n-31];r[n]=d(i,s,o,a,l,c,u,h),r[n+1]=p(i,s,o,a,l,c,u,h)}},v.prototype._update=function(e,t){this._prepareBlock(e,t);var r=this.W,n=this.h[0],i=this.h[1],o=this.h[2],a=this.h[3],l=this.h[4],c=this.h[5],d=this.h[6],p=this.h[7],g=this.h[8],y=this.h[9],v=this.h[10],E=this.h[11],A=this.h[12],R=this.h[13],O=this.h[14],j=this.h[15];s(this.k.length===r.length);for(var I=0;I<r.length;I+=2){var N=O,P=j,B=C(g,y),D=T(g,y),F=w(g,y,v,E,A),L=_(g,y,v,E,A,R),z=this.k[I],U=this.k[I+1],$=r[I],H=r[I+1],V=m(N,P,B,D,F,L,z,U,$,H),q=b(N,P,B,D,F,L,z,U,$,H);N=S(n,i),P=M(n,i),B=x(n,i,o,a,l),D=k(n,i,o,a,l,c);var W=h(N,P,B,D),X=f(N,P,B,D);O=A,j=R,A=v,R=E,v=g,E=y,g=h(d,p,V,q),y=f(p,p,V,q),d=l,p=c,l=o,c=a,o=n,a=i,n=h(V,q,W,X),i=f(V,q,W,X)}u(this.h,0,n,i),u(this.h,2,o,a),u(this.h,4,l,c),u(this.h,6,d,p),u(this.h,8,g,y),u(this.h,10,v,E),u(this.h,12,A,R),u(this.h,14,O,j)},v.prototype._digest=function(e){return\"hex\"===e?n.toHex32(this.h,\"big\"):n.split32(this.h,\"big\")}},{\"../common\":427,\"../utils\":437,\"minimalistic-assert\":453}],436:[function(e,t,r){\"use strict\";var n=e(\"../utils\").rotr32;function i(e,t,r){return e&t^~e&r}function s(e,t,r){return e&t^e&r^t&r}function o(e,t,r){return e^t^r}r.ft_1=function(e,t,r,n){return 0===e?i(t,r,n):1===e||3===e?o(t,r,n):2===e?s(t,r,n):void 0},r.ch32=i,r.maj32=s,r.p32=o,r.s0_256=function(e){return n(e,2)^n(e,13)^n(e,22)},r.s1_256=function(e){return n(e,6)^n(e,11)^n(e,25)},r.g0_256=function(e){return n(e,7)^n(e,18)^e>>>3},r.g1_256=function(e){return n(e,17)^n(e,19)^e>>>10}},{\"../utils\":437}],437:[function(e,t,r){\"use strict\";var n=e(\"minimalistic-assert\"),i=e(\"inherits\");function s(e,t){return 55296==(64512&e.charCodeAt(t))&&(!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1)))}function o(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function a(e){return 1===e.length?\"0\"+e:e}function l(e){return 7===e.length?\"0\"+e:6===e.length?\"00\"+e:5===e.length?\"000\"+e:4===e.length?\"0000\"+e:3===e.length?\"00000\"+e:2===e.length?\"000000\"+e:1===e.length?\"0000000\"+e:e}r.inherits=i,r.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(\"string\"==typeof e)if(t){if(\"hex\"===t)for((e=e.replace(/[^a-z0-9]+/gi,\"\")).length%2!=0&&(e=\"0\"+e),i=0;i<e.length;i+=2)r.push(parseInt(e[i]+e[i+1],16))}else for(var n=0,i=0;i<e.length;i++){var o=e.charCodeAt(i);o<128?r[n++]=o:o<2048?(r[n++]=o>>6|192,r[n++]=63&o|128):s(e,i)?(o=65536+((1023&o)<<10)+(1023&e.charCodeAt(++i)),r[n++]=o>>18|240,r[n++]=o>>12&63|128,r[n++]=o>>6&63|128,r[n++]=63&o|128):(r[n++]=o>>12|224,r[n++]=o>>6&63|128,r[n++]=63&o|128)}else for(i=0;i<e.length;i++)r[i]=0|e[i];return r},r.toHex=function(e){for(var t=\"\",r=0;r<e.length;r++)t+=a(e[r].toString(16));return t},r.htonl=o,r.toHex32=function(e,t){for(var r=\"\",n=0;n<e.length;n++){var i=e[n];\"little\"===t&&(i=o(i)),r+=l(i.toString(16))}return r},r.zero2=a,r.zero8=l,r.join32=function(e,t,r,i){var s=r-t;n(s%4==0);for(var o=new Array(s/4),a=0,l=t;a<o.length;a++,l+=4){var c;c=\"big\"===i?e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]:e[l+3]<<24|e[l+2]<<16|e[l+1]<<8|e[l],o[a]=c>>>0}return o},r.split32=function(e,t){for(var r=new Array(4*e.length),n=0,i=0;n<e.length;n++,i+=4){var s=e[n];\"big\"===t?(r[i]=s>>>24,r[i+1]=s>>>16&255,r[i+2]=s>>>8&255,r[i+3]=255&s):(r[i+3]=s>>>24,r[i+2]=s>>>16&255,r[i+1]=s>>>8&255,r[i]=255&s)}return r},r.rotr32=function(e,t){return e>>>t|e<<32-t},r.rotl32=function(e,t){return e<<t|e>>>32-t},r.sum32=function(e,t){return e+t>>>0},r.sum32_3=function(e,t,r){return e+t+r>>>0},r.sum32_4=function(e,t,r,n){return e+t+r+n>>>0},r.sum32_5=function(e,t,r,n,i){return e+t+r+n+i>>>0},r.sum64=function(e,t,r,n){var i=e[t],s=n+e[t+1]>>>0,o=(s<n?1:0)+r+i;e[t]=o>>>0,e[t+1]=s},r.sum64_hi=function(e,t,r,n){return(t+n>>>0<t?1:0)+e+r>>>0},r.sum64_lo=function(e,t,r,n){return t+n>>>0},r.sum64_4_hi=function(e,t,r,n,i,s,o,a){var l=0,c=t;return l+=(c=c+n>>>0)<t?1:0,l+=(c=c+s>>>0)<s?1:0,e+r+i+o+(l+=(c=c+a>>>0)<a?1:0)>>>0},r.sum64_4_lo=function(e,t,r,n,i,s,o,a){return t+n+s+a>>>0},r.sum64_5_hi=function(e,t,r,n,i,s,o,a,l,c){var u=0,h=t;return u+=(h=h+n>>>0)<t?1:0,u+=(h=h+s>>>0)<s?1:0,u+=(h=h+a>>>0)<a?1:0,e+r+i+o+l+(u+=(h=h+c>>>0)<c?1:0)>>>0},r.sum64_5_lo=function(e,t,r,n,i,s,o,a,l,c){return t+n+s+a+c>>>0},r.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},r.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},r.shr64_hi=function(e,t,r){return e>>>r},r.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0}},{inherits:440,\"minimalistic-assert\":453}],438:[function(e,t,r){\"use strict\";var n=e(\"hash.js\"),i=e(\"minimalistic-crypto-utils\"),s=e(\"minimalistic-assert\");function o(e){if(!(this instanceof o))return new o(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=i.toArray(e.entropy,e.entropyEnc||\"hex\"),r=i.toArray(e.nonce,e.nonceEnc||\"hex\"),n=i.toArray(e.pers,e.persEnc||\"hex\");s(t.length>=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._init(t,r,n)}t.exports=o,o.prototype._init=function(e,t,r){var n=e.concat(t).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(n),this._reseed=1,this.reseedInterval=281474976710656},o.prototype._hmac=function(){return new n.hmac(this.hash,this.K)},o.prototype._update=function(e){var t=this._hmac().update(this.V).update([0]);e&&(t=t.update(e)),this.K=t.digest(),this.V=this._hmac().update(this.V).digest(),e&&(this.K=this._hmac().update(this.V).update([1]).update(e).digest(),this.V=this._hmac().update(this.V).digest())},o.prototype.reseed=function(e,t,r,n){\"string\"!=typeof t&&(n=r,r=t,t=null),e=i.toArray(e,t),r=i.toArray(r,n),s(e.length>=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._update(e.concat(r||[])),this._reseed=1},o.prototype.generate=function(e,t,r,n){if(this._reseed>this.reseedInterval)throw new Error(\"Reseed is required\");\"string\"!=typeof t&&(n=r,r=t,t=null),r&&(r=i.toArray(r,n||\"hex\"),this._update(r));for(var s=[];s.length<e;)this.V=this._hmac().update(this.V).digest(),s=s.concat(this.V);var o=s.slice(0,e);return this._update(r),this._reseed++,i.encode(o,t)}},{\"hash.js\":426,\"minimalistic-assert\":453,\"minimalistic-crypto-utils\":454}],439:[function(e,t,r){\"use strict\";\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */r.read=function(e,t,r,n,i){var s,o,a=8*i-n-1,l=(1<<a)-1,c=l>>1,u=-7,h=r?i-1:0,f=r?-1:1,d=e[t+h];for(h+=f,s=d&(1<<-u)-1,d>>=-u,u+=a;u>0;s=256*s+e[t+h],h+=f,u-=8);for(o=s&(1<<-u)-1,s>>=-u,u+=n;u>0;o=256*o+e[t+h],h+=f,u-=8);if(0===s)s=1-c;else{if(s===l)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,n),s-=c}return(d?-1:1)*o*Math.pow(2,s-n)},r.write=function(e,t,r,n,i,s){var o,a,l,c=8*s-i-1,u=(1<<c)-1,h=u>>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:s-1,p=n?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+h>=1?f/l:f*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=u?(a=0,o=u):o+h>=1?(a=(t*l-1)*Math.pow(2,i),o+=h):(a=t*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;e[r+d]=255&a,d+=p,a/=256,i-=8);for(o=o<<i|a,c+=i;c>0;e[r+d]=255&o,d+=p,o/=256,c-=8);e[r+d-p]|=128*m}},{}],440:[function(e,t,r){\"use strict\";\"function\"==typeof Object.create?t.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},{}],441:[function(e,t,r){(function(n,i,s,o,a,l,c,u){(function(){\"use strict\";\n/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/!function(e){\"object\"==typeof r&&void 0!==t?t.exports=e():(\"undefined\"!=typeof window?window:void 0!==i?i:\"undefined\"!=typeof self?self:this).JSZip=e()}((function(){return function t(r,n,i){function s(a,l){if(!n[a]){if(!r[a]){var c=\"function\"==typeof e&&e;if(!l&&c)return c(a,!0);if(o)return o(a,!0);var u=new Error(\"Cannot find module '\"+a+\"'\");throw u.code=\"MODULE_NOT_FOUND\",u}var h=n[a]={exports:{}};r[a][0].call(h.exports,(function(e){return s(r[a][1][e]||e)}),h,h.exports,t,r,n,i)}return n[a].exports}for(var o=\"function\"==typeof e&&e,a=0;a<i.length;a++)s(i[a]);return s}({1:[function(e,t,r){var n=e(\"./utils\"),i=e(\"./support\"),s=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,i,o,a,l,c,u=[],h=0,f=e.length,d=f,p=\"string\"!==n.getTypeOf(e);h<e.length;)d=f-h,i=p?(t=e[h++],r=h<f?e[h++]:0,h<f?e[h++]:0):(t=e.charCodeAt(h++),r=h<f?e.charCodeAt(h++):0,h<f?e.charCodeAt(h++):0),o=t>>2,a=(3&t)<<4|r>>4,l=1<d?(15&r)<<2|i>>6:64,c=2<d?63&i:64,u.push(s.charAt(o)+s.charAt(a)+s.charAt(l)+s.charAt(c));return u.join(\"\")},r.decode=function(e){var t,r,n,o,a,l,c=0,u=0,h=\"data:\";if(e.substr(0,h.length)===h)throw new Error(\"Invalid base64 input, it looks like a data url.\");var f,d=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===s.charAt(64)&&d--,e.charAt(e.length-2)===s.charAt(64)&&d--,d%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(f=i.uint8array?new Uint8Array(0|d):new Array(0|d);c<e.length;)t=s.indexOf(e.charAt(c++))<<2|(o=s.indexOf(e.charAt(c++)))>>4,r=(15&o)<<4|(a=s.indexOf(e.charAt(c++)))>>2,n=(3&a)<<6|(l=s.indexOf(e.charAt(c++))),f[u++]=t,64!==a&&(f[u++]=r),64!==l&&(f[u++]=n);return f}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),o=e(\"./stream/DataLengthProbe\");function a(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}a.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new o(\"data_length\")),t=this;return e.on(\"end\",(function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")})),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},a.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new o(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new o(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=a},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){var n=e(\"./utils\"),i=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var s=i,o=0+r;e^=-1;for(var a=0;a<o;a++)e=e>>>8^s[255&(e^t[a])];return-1^e}(0|t,e,e.length):function(e,t,r,n){var s=i,o=0+r;e^=-1;for(var a=0;a<o;a++)e=e>>>8^s[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length):0}},{\"./utils\":32}],5:[function(e,t,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){var n;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),o=e(\"./stream/GenericWorker\"),a=n?\"uint8array\":\"array\";function l(e,t){o.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(l,o),l.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(a,e.data),!1)},l.prototype.flush=function(){o.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},r.compressWorker=function(e){return new l(\"Deflate\",e)},r.uncompressWorker=function(){return new l(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){function n(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function i(e,t,r,i,o,u){var h,f,d=e.file,p=e.compression,m=u!==a.utf8encode,b=s.transformTo(\"string\",u(d.name)),g=s.transformTo(\"string\",a.utf8encode(d.name)),y=d.comment,v=s.transformTo(\"string\",u(y)),w=s.transformTo(\"string\",a.utf8encode(y)),_=g.length!==d.name.length,x=w.length!==y.length,k=\"\",S=\"\",M=\"\",C=d.dir,T=d.date,E={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(E.crc32=e.crc32,E.compressedSize=e.compressedSize,E.uncompressedSize=e.uncompressedSize);var A=0;t&&(A|=8),m||!_&&!x||(A|=2048);var R=0,O=0;C&&(R|=16),\"UNIX\"===o?(O=798,R|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(d.unixPermissions,C)):(O=20,R|=function(e){return 63&(e||0)}(d.dosPermissions)),h=T.getUTCHours(),h<<=6,h|=T.getUTCMinutes(),h<<=5,h|=T.getUTCSeconds()/2,f=T.getUTCFullYear()-1980,f<<=4,f|=T.getUTCMonth()+1,f<<=5,f|=T.getUTCDate(),_&&(S=n(1,1)+n(l(b),4)+g,k+=\"up\"+n(S.length,2)+S),x&&(M=n(1,1)+n(l(v),4)+w,k+=\"uc\"+n(M.length,2)+M);var j=\"\";return j+=\"\\n\\0\",j+=n(A,2),j+=p.magic,j+=n(h,2),j+=n(f,2),j+=n(E.crc32,4),j+=n(E.compressedSize,4),j+=n(E.uncompressedSize,4),j+=n(b.length,2),j+=n(k.length,2),{fileRecord:c.LOCAL_FILE_HEADER+j+b+k,dirRecord:c.CENTRAL_FILE_HEADER+n(O,2)+j+n(v.length,2)+\"\\0\\0\\0\\0\"+n(R,4)+n(i,4)+b+k+v}}var s=e(\"../utils\"),o=e(\"../stream/GenericWorker\"),a=e(\"../utf8\"),l=e(\"../crc32\"),c=e(\"../signature\");function u(e,t,r,n){o.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(u,o),u.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,o.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},u.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=i(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},u.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=i(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return c.DATA_DESCRIPTOR+n(e.crc32,4)+n(e.compressedSize,4)+n(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},u.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,i=function(e,t,r,i,o){var a=s.transformTo(\"string\",o(i));return c.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+n(e,2)+n(e,2)+n(t,4)+n(r,4)+n(a.length,2)+a}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:i,meta:{percent:100}})},u.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},u.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",(function(e){t.processChunk(e)})),e.on(\"end\",(function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()})),e.on(\"error\",(function(e){t.error(e)})),this},u.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},u.prototype.error=function(e){var t=this._sources;if(!o.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},u.prototype.lock=function(){o.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=u},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){var n=e(\"../compressions\"),i=e(\"./ZipFileWorker\");r.generateWorker=function(e,t,r){var s=new i(t.streamFiles,r,t.platform,t.encodeFileName),o=0;try{e.forEach((function(e,r){o++;var i=function(e,t){var r=e||t,i=n[r];if(!i)throw new Error(r+\" is not a valid compression method !\");return i}(r.options.compression,t.compression),a=r.options.compressionOptions||t.compressionOptions||{},l=r.dir,c=r.date;r._compressWorker(i,a).withStreamInfo(\"file\",{name:e,dir:l,date:c,comment:r.comment||\"\",unixPermissions:r.unixPermissions,dosPermissions:r.dosPermissions}).pipe(s)})),s.entriesCount=o}catch(e){s.error(e)}return s}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){var n=e(\"./utils\"),i=e(\"./external\"),s=e(\"./utf8\"),o=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function c(e){return new i.Promise((function(t,r){var n=e.decompressed.getContentWorker().pipe(new a);n.on(\"error\",(function(e){r(e)})).on(\"end\",(function(){n.streamInfo.crc32!==e.decompressed.crc32?r(new Error(\"Corrupted zip : CRC32 mismatch\")):t()})).resume()}))}t.exports=function(e,t){var r=this;return t=n.extend(t||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:s.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):n.prepareContent(\"the loaded zip file\",e,!0,t.optimizedBinaryString,t.base64).then((function(e){var r=new o(t);return r.load(e),r})).then((function(e){var r=[i.Promise.resolve(e)],n=e.files;if(t.checkCRC32)for(var s=0;s<n.length;s++)r.push(c(n[s]));return i.Promise.all(r)})).then((function(e){for(var i=e.shift(),s=i.files,o=0;o<s.length;o++){var a=s[o],l=a.fileNameStr,c=n.resolve(a.fileNameStr);r.file(c,a.decompressed,{binary:!0,optimizedBinaryString:!0,date:a.date,dir:a.dir,comment:a.fileCommentStr.length?a.fileCommentStr:null,unixPermissions:a.unixPermissions,dosPermissions:a.dosPermissions,createFolders:t.createFolders}),a.dir||(r.file(c).unsafeOriginalName=l)}return i.zipComment.length&&(r.comment=i.zipComment),r}))}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",(function(e){t.push({data:e,meta:{percent:0}})})).on(\"error\",(function(e){t.isPaused?this.generatedError=e:t.error(e)})).on(\"end\",(function(){t.isPaused?t._upstreamEnded=!0:t.end()}))},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){var n=e(\"readable-stream\").Readable;function i(e,t,r){n.call(this,t),this._helper=e;var i=this;e.on(\"data\",(function(e,t){i.push(e)||i._helper.pause(),r&&r(t)})).on(\"error\",(function(e){i.emit(\"error\",e)})).on(\"end\",(function(){i.push(null)}))}e(\"../utils\").inherits(i,n),i.prototype._read=function(){this._helper.resume()},t.exports=i},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){t.exports={isNode:void 0!==s,newBufferFrom:function(e,t){if(s.from&&s.from!==Uint8Array.from)return s.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new s(e,t)},allocBuffer:function(e){if(s.alloc)return s.alloc(e);var t=new s(e);return t.fill(0),t},isBuffer:function(e){return s.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){function n(e,t,r){var n,i=s.getTypeOf(t),a=s.extend(r||{},l);a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),\"string\"==typeof a.unixPermissions&&(a.unixPermissions=parseInt(a.unixPermissions,8)),a.unixPermissions&&16384&a.unixPermissions&&(a.dir=!0),a.dosPermissions&&16&a.dosPermissions&&(a.dir=!0),a.dir&&(e=m(e)),a.createFolders&&(n=p(e))&&b.call(this,n,!0);var h=\"string\"===i&&!1===a.binary&&!1===a.base64;r&&void 0!==r.binary||(a.binary=!h),(t instanceof c&&0===t.uncompressedSize||a.dir||!t||0===t.length)&&(a.base64=!1,a.binary=!0,t=\"\",a.compression=\"STORE\",i=\"string\");var g;g=t instanceof c||t instanceof o?t:f.isNode&&f.isStream(t)?new d(e,t):s.prepareContent(e,t,a.binary,a.optimizedBinaryString,a.base64);var y=new u(e,g,a);this.files[e]=y}var i=e(\"./utf8\"),s=e(\"./utils\"),o=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),l=e(\"./defaults\"),c=e(\"./compressedObject\"),u=e(\"./zipObject\"),h=e(\"./generate\"),f=e(\"./nodejsUtils\"),d=e(\"./nodejs/NodejsStreamInputAdapter\"),p=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},m=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:l.createFolders,e=m(e),this.files[e]||n.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function g(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var y={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(e){var t=[];return this.forEach((function(r,n){e(r,n)&&t.push(n)})),t},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,n.call(this,e,t,r),this;if(g(e)){var i=e;return this.filter((function(e,t){return!t.dir&&i.test(e)}))}var s=this.files[this.root+e];return s&&!s.dir?s:null},folder:function(e){if(!e)return this;if(g(e))return this.filter((function(t,r){return r.dir&&e.test(t)}));var t=this.root+e,r=b.call(this,t),n=this.clone();return n.root=r.name,n},remove:function(e){e=this.root+e;var t=this.files[e];if(t||(\"/\"!==e.slice(-1)&&(e+=\"/\"),t=this.files[e]),t&&!t.dir)delete this.files[e];else for(var r=this.filter((function(t,r){return r.name.slice(0,e.length)===e})),n=0;n<r.length;n++)delete this.files[r[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=s.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");s.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=h.generateWorker(this,r,n)}catch(e){(t=new o(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=y},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),o=e(\"./StringReader\"),a=e(\"./NodeBufferReader\"),l=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new a(e):i.uint8array?new l(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new o(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){r.LOCAL_FILE_HEADER=\"PK\\x03\\x04\",r.CENTRAL_FILE_HEADER=\"PK\\x01\\x02\",r.CENTRAL_DIRECTORY_END=\"PK\\x05\\x06\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\\x06\\x07\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\\x06\\x06\",r.DATA_DESCRIPTOR=\"PK\\x07\\b\"},{}],24:[function(e,t,r){var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then((function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()}),(function(e){t.error(e)}))}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",(function(e){t.processChunk(e)})),e.on(\"end\",(function(){t.end()})),e.on(\"error\",(function(e){t.error(e)})),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){var n=e(\"../utils\"),i=e(\"./ConvertWorker\"),o=e(\"./GenericWorker\"),a=e(\"../base64\"),l=e(\"../support\"),c=e(\"../external\"),u=null;if(l.nodestream)try{u=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function h(e,t,r){var s=t;switch(t){case\"blob\":case\"arraybuffer\":s=\"uint8array\";break;case\"base64\":s=\"string\"}try{this._internalType=s,this._outputType=t,this._mimeType=r,n.checkSupport(s),this._worker=e.pipe(new i(s)),e.lock()}catch(e){this._worker=new o(\"error\"),this._worker.error(e)}}h.prototype={accumulate:function(e){return function(e,t){return new c.Promise((function(r,i){var o=[],l=e._internalType,c=e._outputType,u=e._mimeType;e.on(\"data\",(function(e,r){o.push(e),t&&t(r)})).on(\"error\",(function(e){o=[],i(e)})).on(\"end\",(function(){try{var e=function(e,t,r){switch(e){case\"blob\":return n.newBlob(n.transformTo(\"arraybuffer\",t),r);case\"base64\":return a.encode(t);default:return n.transformTo(e,t)}}(c,function(e,t){var r,n=0,i=null,o=0;for(r=0;r<t.length;r++)o+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(o),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return s.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(l,o),u);r(e)}catch(e){i(e)}o=[]})).resume()}))}(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,(function(e){t.call(r,e.data,e.meta)})):this._worker.on(e,(function(){n.delay(t,arguments,r)})),this},resume:function(){return n.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(n.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new u(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=h},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=void 0!==s,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,r){for(var n=e(\"./utils\"),i=e(\"./support\"),s=e(\"./nodejsUtils\"),o=e(\"./stream/GenericWorker\"),a=new Array(256),l=0;l<256;l++)a[l]=252<=l?6:248<=l?5:240<=l?4:224<=l?3:192<=l?2:1;function c(){o.call(this,\"utf-8 decode\"),this.leftOver=null}function u(){o.call(this,\"utf-8 encode\")}a[254]=a[254]=1,r.utf8encode=function(e){return i.nodebuffer?s.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,s,o,a=e.length,l=0;for(s=0;s<a;s++)55296==(64512&(r=e.charCodeAt(s)))&&s+1<a&&56320==(64512&(n=e.charCodeAt(s+1)))&&(r=65536+(r-55296<<10)+(n-56320),s++),l+=r<128?1:r<2048?2:r<65536?3:4;for(t=i.uint8array?new Uint8Array(l):new Array(l),s=o=0;o<l;s++)55296==(64512&(r=e.charCodeAt(s)))&&s+1<a&&56320==(64512&(n=e.charCodeAt(s+1)))&&(r=65536+(r-55296<<10)+(n-56320),s++),r<128?t[o++]=r:(r<2048?t[o++]=192|r>>>6:(r<65536?t[o++]=224|r>>>12:(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63),t[o++]=128|r>>>6&63),t[o++]=128|63&r);return t}(e)},r.utf8decode=function(e){return i.nodebuffer?n.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,i,s,o=e.length,l=new Array(2*o);for(t=r=0;t<o;)if((i=e[t++])<128)l[r++]=i;else if(4<(s=a[i]))l[r++]=65533,t+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&t<o;)i=i<<6|63&e[t++],s--;1<s?l[r++]=65533:i<65536?l[r++]=i:(i-=65536,l[r++]=55296|i>>10&1023,l[r++]=56320|1023&i)}return l.length!==r&&(l.subarray?l=l.subarray(0,r):l.length=r),n.applyFromCharCode(l)}(e=n.transformTo(i.uint8array?\"uint8array\":\"array\",e))},n.inherits(c,o),c.prototype.processChunk=function(e){var t=n.transformTo(i.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(i.uint8array){var s=t;(t=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),t.set(s,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var o=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0||0===r?t:r+a[e[r]]>t?r:t}(t),l=t;o!==t.length&&(i.uint8array?(l=t.subarray(0,o),this.leftOver=t.subarray(o,t.length)):(l=t.slice(0,o),this.leftOver=t.slice(o,t.length))),this.push({data:r.utf8decode(l),meta:e.meta})},c.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:r.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},r.Utf8DecodeWorker=c,n.inherits(u,o),u.prototype.processChunk=function(e){this.push({data:r.utf8encode(e.data),meta:e.meta})},r.Utf8EncodeWorker=u},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,r){var n=e(\"./support\"),i=e(\"./base64\"),s=e(\"./nodejsUtils\"),o=e(\"./external\");function a(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),r.newBlob=function(e,t){r.checkSupport(\"blob\");try{return new Blob([e],{type:t})}catch(r){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(e),n.getBlob(t)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var c={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return n.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return n.nodebuffer&&1===String.fromCharCode.apply(null,s.allocBuffer(1)).length}catch(e){return!1}}()}};function h(e){var t=65536,n=r.getTypeOf(e),i=!0;if(\"uint8array\"===n?i=c.applyCanBeUsed.uint8array:\"nodebuffer\"===n&&(i=c.applyCanBeUsed.nodebuffer),i)for(;1<t;)try{return c.stringifyByChunk(e,n,t)}catch(e){t=Math.floor(t/2)}return c.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}r.applyFromCharCode=h;var d={};d.string={string:a,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return d.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,s.allocBuffer(e.length))}},d.array={string:h,array:a,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return s.newBufferFrom(e)}},d.arraybuffer={string:function(e){return h(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:a,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return s.newBufferFrom(new Uint8Array(e))}},d.uint8array={string:h,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:a,nodebuffer:function(e){return s.newBufferFrom(e)}},d.nodebuffer={string:h,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return d.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:a},r.transformTo=function(e,t){if(t=t||\"\",!e)return t;r.checkSupport(e);var n=r.getTypeOf(t);return d[n][e](t)},r.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},r.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":n.nodebuffer&&s.isBuffer(e)?\"nodebuffer\":n.uint8array&&e instanceof Uint8Array?\"uint8array\":n.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},r.checkSupport=function(e){if(!n[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},r.MAX_VALUE_16BITS=65535,r.MAX_VALUE_32BITS=-1,r.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},r.delay=function(e,t,r){u((function(){e.apply(r||null,t||[])}))},r.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},r.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},r.prepareContent=function(e,t,s,a,c){return o.Promise.resolve(t).then((function(e){return n.blob&&(e instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(e)))&&\"undefined\"!=typeof FileReader?new o.Promise((function(t,r){var n=new FileReader;n.onload=function(e){t(e.target.result)},n.onerror=function(e){r(e.target.error)},n.readAsArrayBuffer(e)})):e})).then((function(t){var u=r.getTypeOf(t);return u?(\"arraybuffer\"===u?t=r.transformTo(\"uint8array\",t):\"string\"===u&&(c?t=i.decode(t):s&&!0!==a&&(t=function(e){return l(e,n.uint8array?new Uint8Array(e.length):new Array(e.length))}(t))),t):o.Promise.reject(new Error(\"Can't read the data of '\"+e+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))}))}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),o=e(\"./zipEntry\"),a=e(\"./support\");function l(e){this.files=[],this.loadOptions=e}l.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=a.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new o({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Corrupted zip: can't find end of central directory\"):new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=l},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./compressedObject\"),o=e(\"./crc32\"),a=e(\"./utf8\"),l=e(\"./compressions\"),c=e(\"./support\");function u(e,t){this.options=e,this.loadOptions=t}u.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in l)if(Object.prototype.hasOwnProperty.call(l,t)&&l[t].magic===e)return l[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+i.pretty(this.compressionMethod)+\" unknown (inner file : \"+i.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new s(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===i.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===i.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===i.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===i.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=c.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=a.utf8decode(this.fileName),this.fileCommentStr=a.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=i.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var s=i.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(s)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)||o(this.fileName)!==t.readInt(4)?null:a.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)||o(this.fileComment)!==t.readInt(4)?null:a.utf8decode(t.readData(e.length-5))}return null}},t.exports=u},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var i=e(\"./stream/StreamHelper\"),s=e(\"./stream/DataWorker\"),o=e(\"./utf8\"),a=e(\"./compressedObject\"),l=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var s=!this._dataBinary;s&&!n&&(t=t.pipe(new o.Utf8EncodeWorker)),!s&&n&&(t=t.pipe(new o.Utf8DecodeWorker))}catch(e){(t=new l(\"error\")).error(e)}return new i(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof a&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new o.Utf8EncodeWorker)),a.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof a?this._data.getContentWorker():this._data instanceof l?this._data:new s(this._data)}};for(var c=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],u=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},h=0;h<c.length;h++)n.prototype[c[h]]=u;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,t,r){(function(e){var r,n,i=e.MutationObserver||e.WebKitMutationObserver;if(i){var s=0,o=new i(u),a=e.document.createTextNode(\"\");o.observe(a,{characterData:!0}),r=function(){a.data=s=++s%2}}else if(e.setImmediate||void 0===e.MessageChannel)r=\"document\"in e&&\"onreadystatechange\"in e.document.createElement(\"script\")?function(){var t=e.document.createElement(\"script\");t.onreadystatechange=function(){u(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(u,0)};else{var l=new e.MessageChannel;l.port1.onmessage=u,r=function(){l.port2.postMessage(0)}}var c=[];function u(){var e,t;n=!0;for(var r=c.length;r;){for(t=c,c=[],e=-1;++e<r;)t[e]();r=c.length}n=!1}t.exports=function(e){1!==c.push(e)||n||r()}}).call(this,void 0!==i?i:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){var n=e(\"immediate\");function i(){}var s={},o=[\"REJECTED\"],a=[\"FULFILLED\"],l=[\"PENDING\"];function c(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=l,this.queue=[],this.outcome=void 0,e!==i&&d(this,e)}function u(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function h(e,t,r){n((function(){var n;try{n=t(r)}catch(n){return s.reject(e,n)}n===e?s.reject(e,new TypeError(\"Cannot resolve promise with itself\")):s.resolve(e,n)}))}function f(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(e,t){var r=!1;function n(t){r||(r=!0,s.reject(e,t))}function i(t){r||(r=!0,s.resolve(e,t))}var o=p((function(){t(i,n)}));\"error\"===o.status&&n(o.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=c).prototype.finally=function(e){if(\"function\"!=typeof e)return this;var t=this.constructor;return this.then((function(r){return t.resolve(e()).then((function(){return r}))}),(function(r){return t.resolve(e()).then((function(){throw r}))}))},c.prototype.catch=function(e){return this.then(null,e)},c.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===o)return this;var r=new this.constructor(i);return this.state!==l?h(r,this.state===a?e:t,this.outcome):this.queue.push(new u(r,e,t)),r},u.prototype.callFulfilled=function(e){s.resolve(this.promise,e)},u.prototype.otherCallFulfilled=function(e){h(this.promise,this.onFulfilled,e)},u.prototype.callRejected=function(e){s.reject(this.promise,e)},u.prototype.otherCallRejected=function(e){h(this.promise,this.onRejected,e)},s.resolve=function(e,t){var r=p(f,t);if(\"error\"===r.status)return s.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,o=e.queue.length;++i<o;)e.queue[i].callFulfilled(t)}return e},s.reject=function(e,t){e.state=o,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},c.resolve=function(e){return e instanceof this?e:s.resolve(new this(i),e)},c.reject=function(e){var t=new this(i);return s.reject(t,e)},c.all=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);for(var o=new Array(r),a=0,l=-1,c=new this(i);++l<r;)u(e[l],l);return c;function u(e,i){t.resolve(e).then((function(e){o[i]=e,++a!==r||n||(n=!0,s.resolve(c,o))}),(function(e){n||(n=!0,s.reject(c,e))}))}},c.race=function(e){if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var t=e.length,r=!1;if(!t)return this.resolve([]);for(var n,o=-1,a=new this(i);++o<t;)n=e[o],this.resolve(n).then((function(e){r||(r=!0,s.resolve(a,e))}),(function(e){r||(r=!0,s.reject(a,e))}));return a}},{immediate:36}],38:[function(e,t,r){var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){var n=e(\"./zlib/deflate\"),i=e(\"./utils/common\"),s=e(\"./utils/strings\"),o=e(\"./zlib/messages\"),a=e(\"./zlib/zstream\"),l=Object.prototype.toString;function c(e){if(!(this instanceof c))return new c(e);this.options=i.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new a,this.strm.avail_out=0;var r=n.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==r)throw new Error(o[r]);if(t.header&&n.deflateSetHeader(this.strm,t.header),t.dictionary){var u;if(u=\"string\"==typeof t.dictionary?s.string2buf(t.dictionary):\"[object ArrayBuffer]\"===l.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,0!==(r=n.deflateSetDictionary(this.strm,u)))throw new Error(o[r]);this._dict_set=!0}}function u(e,t){var r=new c(t);if(r.push(e,!0),r.err)throw r.msg||o[r.err];return r.result}c.prototype.push=function(e,t){var r,o,a=this.strm,c=this.options.chunkSize;if(this.ended)return!1;o=t===~~t?t:!0===t?4:0,\"string\"==typeof e?a.input=s.string2buf(e):\"[object ArrayBuffer]\"===l.call(e)?a.input=new Uint8Array(e):a.input=e,a.next_in=0,a.avail_in=a.input.length;do{if(0===a.avail_out&&(a.output=new i.Buf8(c),a.next_out=0,a.avail_out=c),1!==(r=n.deflate(a,o))&&0!==r)return this.onEnd(r),!(this.ended=!0);0!==a.avail_out&&(0!==a.avail_in||4!==o&&2!==o)||(\"string\"===this.options.to?this.onData(s.buf2binstring(i.shrinkBuf(a.output,a.next_out))):this.onData(i.shrinkBuf(a.output,a.next_out)))}while((0<a.avail_in||0===a.avail_out)&&1!==r);return 4===o?(r=n.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,0===r):2!==o||(this.onEnd(0),!(a.avail_out=0))},c.prototype.onData=function(e){this.chunks.push(e)},c.prototype.onEnd=function(e){0===e&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=c,r.deflate=u,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,u(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,u(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){var n=e(\"./zlib/inflate\"),i=e(\"./utils/common\"),s=e(\"./utils/strings\"),o=e(\"./zlib/constants\"),a=e(\"./zlib/messages\"),l=e(\"./zlib/zstream\"),c=e(\"./zlib/gzheader\"),u=Object.prototype.toString;function h(e){if(!(this instanceof h))return new h(e);this.options=i.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var r=n.inflateInit2(this.strm,t.windowBits);if(r!==o.Z_OK)throw new Error(a[r]);this.header=new c,n.inflateGetHeader(this.strm,this.header)}function f(e,t){var r=new h(t);if(r.push(e,!0),r.err)throw r.msg||a[r.err];return r.result}h.prototype.push=function(e,t){var r,a,l,c,h,f,d=this.strm,p=this.options.chunkSize,m=this.options.dictionary,b=!1;if(this.ended)return!1;a=t===~~t?t:!0===t?o.Z_FINISH:o.Z_NO_FLUSH,\"string\"==typeof e?d.input=s.binstring2buf(e):\"[object ArrayBuffer]\"===u.call(e)?d.input=new Uint8Array(e):d.input=e,d.next_in=0,d.avail_in=d.input.length;do{if(0===d.avail_out&&(d.output=new i.Buf8(p),d.next_out=0,d.avail_out=p),(r=n.inflate(d,o.Z_NO_FLUSH))===o.Z_NEED_DICT&&m&&(f=\"string\"==typeof m?s.string2buf(m):\"[object ArrayBuffer]\"===u.call(m)?new Uint8Array(m):m,r=n.inflateSetDictionary(this.strm,f)),r===o.Z_BUF_ERROR&&!0===b&&(r=o.Z_OK,b=!1),r!==o.Z_STREAM_END&&r!==o.Z_OK)return this.onEnd(r),!(this.ended=!0);d.next_out&&(0!==d.avail_out&&r!==o.Z_STREAM_END&&(0!==d.avail_in||a!==o.Z_FINISH&&a!==o.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(l=s.utf8border(d.output,d.next_out),c=d.next_out-l,h=s.buf2string(d.output,l),d.next_out=c,d.avail_out=p-c,c&&i.arraySet(d.output,d.output,l,c,0),this.onData(h)):this.onData(i.shrinkBuf(d.output,d.next_out)))),0===d.avail_in&&0===d.avail_out&&(b=!0)}while((0<d.avail_in||0===d.avail_out)&&r!==o.Z_STREAM_END);return r===o.Z_STREAM_END&&(a=o.Z_FINISH),a===o.Z_FINISH?(r=n.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===o.Z_OK):a!==o.Z_SYNC_FLUSH||(this.onEnd(o.Z_OK),!(d.avail_out=0))},h.prototype.onData=function(e){this.chunks.push(e)},h.prototype.onEnd=function(e){e===o.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=h,r.inflate=f,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,f(e,t)},r.ungzip=f},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,o;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(o=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],o.set(s,i),i+=s.length;return o}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){var n=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var o=new n.Buf8(256),a=0;a<256;a++)o[a]=252<=a?6:248<=a?5:240<=a?4:224<=a?3:192<=a?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,n.shrinkBuf(e,t));for(var r=\"\",o=0;o<t;o++)r+=String.fromCharCode(e[o]);return r}o[254]=o[254]=1,r.string2buf=function(e){var t,r,i,s,o,a=e.length,l=0;for(s=0;s<a;s++)55296==(64512&(r=e.charCodeAt(s)))&&s+1<a&&56320==(64512&(i=e.charCodeAt(s+1)))&&(r=65536+(r-55296<<10)+(i-56320),s++),l+=r<128?1:r<2048?2:r<65536?3:4;for(t=new n.Buf8(l),s=o=0;o<l;s++)55296==(64512&(r=e.charCodeAt(s)))&&s+1<a&&56320==(64512&(i=e.charCodeAt(s+1)))&&(r=65536+(r-55296<<10)+(i-56320),s++),r<128?t[o++]=r:(r<2048?t[o++]=192|r>>>6:(r<65536?t[o++]=224|r>>>12:(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63),t[o++]=128|r>>>6&63),t[o++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new n.Buf8(e.length),r=0,i=t.length;r<i;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,c=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)c[n++]=i;else if(4<(s=o[i]))c[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?c[n++]=65533:i<65536?c[n++]=i:(i-=65536,c[n++]=55296|i>>10&1023,c[n++]=56320|1023&i)}return l(c,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0||0===r?t:r+o[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,o=0;0!==r;){for(r-=o=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--o;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){var n=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,i){var s=n,o=i+r;e^=-1;for(var a=i;a<o;a++)e=e>>>8^s[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){var n,i=e(\"../utils/common\"),s=e(\"./trees\"),o=e(\"./adler32\"),a=e(\"./crc32\"),l=e(\"./messages\"),c=-2,u=258,h=262,f=113;function d(e,t){return e.msg=l[t],t}function p(e){return(e<<1)-(4<e?9:0)}function m(e){for(var t=e.length;0<=--t;)e[t]=0}function b(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(i.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function g(e,t){s._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,b(e.strm)}function y(e,t){e.pending_buf[e.pending++]=t}function v(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function w(e,t){var r,n,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match,l=e.strstart>e.w_size-h?e.strstart-(e.w_size-h):0,c=e.window,f=e.w_mask,d=e.prev,p=e.strstart+u,m=c[s+o-1],b=c[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(c[(r=t)+o]===b&&c[r+o-1]===m&&c[r]===c[s]&&c[++r]===c[s+1]){s+=2,r++;do{}while(c[++s]===c[++r]&&c[++s]===c[++r]&&c[++s]===c[++r]&&c[++s]===c[++r]&&c[++s]===c[++r]&&c[++s]===c[++r]&&c[++s]===c[++r]&&c[++s]===c[++r]&&s<p);if(n=u-(p-s),s=p-u,o<n){if(e.match_start=t,a<=(o=n))break;m=c[s+o-1],b=c[s+o]}}}while((t=d[t&f])>l&&0!=--i);return o<=e.lookahead?o:e.lookahead}function _(e){var t,r,n,s,l,c,u,f,d,p,m=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-h)){for(i.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=r=e.hash_size;n=e.head[--t],e.head[t]=m<=n?n-m:0,--r;);for(t=r=m;n=e.prev[--t],e.prev[t]=m<=n?n-m:0,--r;);s+=m}if(0===e.strm.avail_in)break;if(c=e.strm,u=e.window,f=e.strstart+e.lookahead,p=void 0,(d=s)<(p=c.avail_in)&&(p=d),r=0===p?0:(c.avail_in-=p,i.arraySet(u,c.input,c.next_in,p,f),1===c.state.wrap?c.adler=o(c.adler,u,p,f):2===c.state.wrap&&(c.adler=a(c.adler,u,p,f)),c.next_in+=p,c.total_in+=p,p),e.lookahead+=r,e.lookahead+e.insert>=3)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<<e.hash_shift^e.window[l+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[l+3-1])&e.hash_mask,e.prev[l&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=l,l++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<h&&0!==e.strm.avail_in)}function x(e,t){for(var r,n;;){if(e.lookahead<h){if(_(e),e.lookahead<h&&0===t)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-h&&(e.match_length=w(e,r)),e.match_length>=3)if(n=s._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(g(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,4===t?(g(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(g(e,!1),0===e.strm.avail_out)?1:2}function k(e,t){for(var r,n,i;;){if(e.lookahead<h){if(_(e),e.lookahead<h&&0===t)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-h&&(e.match_length=w(e,r),e.match_length<=5&&(1===e.strategy||3===e.match_length&&4096<e.strstart-e.match_start)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-3,n=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(g(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((n=s._tr_tally(e,0,e.window[e.strstart-1]))&&g(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=s._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,4===t?(g(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(g(e,!1),0===e.strm.avail_out)?1:2}function S(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function M(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(1146),this.dyn_dtree=new i.Buf16(122),this.bl_tree=new i.Buf16(78),m(this.dyn_ltree),m(this.dyn_dtree),m(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(16),this.heap=new i.Buf16(573),m(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(573),m(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function C(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=2,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?42:f,e.adler=2===t.wrap?0:1,t.last_flush=0,s._tr_init(t),0):d(e,c)}function T(e){var t=C(e);return 0===t&&function(e){e.window_size=2*e.w_size,m(e.head),e.max_lazy_match=n[e.level].max_lazy,e.good_match=n[e.level].good_length,e.nice_match=n[e.level].nice_length,e.max_chain_length=n[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0}(e.state),t}function E(e,t,r,n,s,o){if(!e)return c;var a=1;if(-1===t&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),s<1||9<s||8!==r||n<8||15<n||t<0||9<t||o<0||4<o)return d(e,c);8===n&&(n=9);var l=new M;return(e.state=l).strm=e,l.wrap=a,l.gzhead=null,l.w_bits=n,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=s+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+3-1)/3),l.window=new i.Buf8(2*l.w_size),l.head=new i.Buf16(l.hash_size),l.prev=new i.Buf16(l.w_size),l.lit_bufsize=1<<s+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new i.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=t,l.strategy=o,l.method=r,T(e)}n=[new S(0,0,0,0,(function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(_(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,g(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-h&&(g(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(g(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(g(e,!1),e.strm.avail_out),1)})),new S(4,4,8,4,x),new S(4,5,16,8,x),new S(4,6,32,32,x),new S(4,4,16,16,k),new S(8,16,32,32,k),new S(8,16,128,128,k),new S(8,32,128,256,k),new S(32,128,258,1024,k),new S(32,258,258,4096,k)],r.deflateInit=function(e,t){return E(e,t,8,15,8,0)},r.deflateInit2=E,r.deflateReset=T,r.deflateResetKeep=C,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?c:(e.state.gzhead=t,0):c},r.deflate=function(e,t){var r,i,o,l;if(!e||!e.state||5<t||t<0)return e?d(e,c):c;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||666===i.status&&4!==t)return d(e,0===e.avail_out?-5:c);if(i.strm=e,r=i.last_flush,i.last_flush=t,42===i.status)if(2===i.wrap)e.adler=0,y(i,31),y(i,139),y(i,8),i.gzhead?(y(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),y(i,255&i.gzhead.time),y(i,i.gzhead.time>>8&255),y(i,i.gzhead.time>>16&255),y(i,i.gzhead.time>>24&255),y(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),y(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(y(i,255&i.gzhead.extra.length),y(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=a(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(y(i,0),y(i,0),y(i,0),y(i,0),y(i,0),y(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),y(i,3),i.status=f);else{var h=8+(i.w_bits-8<<4)<<8;h|=(2<=i.strategy||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(h|=32),h+=31-h%31,i.status=f,v(i,h),0!==i.strstart&&(v(i,e.adler>>>16),v(i,65535&e.adler)),e.adler=1}if(69===i.status)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),b(e),o=i.pending,i.pending!==i.pending_buf_size));)y(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),b(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,y(i,l)}while(0!==l);i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),b(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,y(i,l)}while(0!==l);i.gzhead.hcrc&&i.pending>o&&(e.adler=a(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&b(e),i.pending+2<=i.pending_buf_size&&(y(i,255&e.adler),y(i,e.adler>>8&255),e.adler=0,i.status=f)):i.status=f),0!==i.pending){if(b(e),0===e.avail_out)return i.last_flush=-1,0}else if(0===e.avail_in&&p(t)<=p(r)&&4!==t)return d(e,-5);if(666===i.status&&0!==e.avail_in)return d(e,-5);if(0!==e.avail_in||0!==i.lookahead||0!==t&&666!==i.status){var w=2===i.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(_(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,r=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(g(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(g(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(g(e,!1),0===e.strm.avail_out)?1:2}(i,t):3===i.strategy?function(e,t){for(var r,n,i,o,a=e.window;;){if(e.lookahead<=u){if(_(e),e.lookahead<=u&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){o=e.strstart+u;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<o);e.match_length=u-(o-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(r=s._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(g(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(g(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(g(e,!1),0===e.strm.avail_out)?1:2}(i,t):n[i.level].func(i,t);if(3!==w&&4!==w||(i.status=666),1===w||3===w)return 0===e.avail_out&&(i.last_flush=-1),0;if(2===w&&(1===t?s._tr_align(i):5!==t&&(s._tr_stored_block(i,0,0,!1),3===t&&(m(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),b(e),0===e.avail_out))return i.last_flush=-1,0}return 4!==t?0:i.wrap<=0?1:(2===i.wrap?(y(i,255&e.adler),y(i,e.adler>>8&255),y(i,e.adler>>16&255),y(i,e.adler>>24&255),y(i,255&e.total_in),y(i,e.total_in>>8&255),y(i,e.total_in>>16&255),y(i,e.total_in>>24&255)):(v(i,e.adler>>>16),v(i,65535&e.adler)),b(e),0<i.wrap&&(i.wrap=-i.wrap),0!==i.pending?0:1)},r.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&103!==t&&t!==f&&666!==t?d(e,c):(e.state=null,t===f?d(e,-3):0):c},r.deflateSetDictionary=function(e,t){var r,n,s,a,l,u,h,f,d=t.length;if(!e||!e.state)return c;if(2===(a=(r=e.state).wrap)||1===a&&42!==r.status||r.lookahead)return c;for(1===a&&(e.adler=o(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===a&&(m(r.head),r.strstart=0,r.block_start=0,r.insert=0),f=new i.Buf8(r.w_size),i.arraySet(f,t,d-r.w_size,r.w_size,0),t=f,d=r.w_size),l=e.avail_in,u=e.next_in,h=e.input,e.avail_in=d,e.next_in=0,e.input=t,_(r);r.lookahead>=3;){for(n=r.strstart,s=r.lookahead-2;r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+3-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--s;);r.strstart=n,r.lookahead=2,_(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=u,e.input=h,e.avail_in=l,r.wrap=a,0},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){t.exports=function(e,t){var r,n,i,s,o,a,l,c,u,h,f,d,p,m,b,g,y,v,w,_,x,k,S,M,C;r=e.state,n=e.next_in,M=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,o=s-(t-e.avail_out),a=s+(e.avail_out-257),l=r.dmax,c=r.wsize,u=r.whave,h=r.wnext,f=r.window,d=r.hold,p=r.bits,m=r.lencode,b=r.distcode,g=(1<<r.lenbits)-1,y=(1<<r.distbits)-1;e:do{p<15&&(d+=M[n++]<<p,p+=8,d+=M[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=w=v>>>24,p-=w,0==(w=v>>>16&255))C[s++]=65535&v;else{if(!(16&w)){if(0==(64&w)){v=m[(65535&v)+(d&(1<<w)-1)];continue t}if(32&w){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}_=65535&v,(w&=15)&&(p<w&&(d+=M[n++]<<p,p+=8),_+=d&(1<<w)-1,d>>>=w,p-=w),p<15&&(d+=M[n++]<<p,p+=8,d+=M[n++]<<p,p+=8),v=b[d&y];r:for(;;){if(d>>>=w=v>>>24,p-=w,!(16&(w=v>>>16&255))){if(0==(64&w)){v=b[(65535&v)+(d&(1<<w)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(x=65535&v,p<(w&=15)&&(d+=M[n++]<<p,(p+=8)<w&&(d+=M[n++]<<p,p+=8)),l<(x+=d&(1<<w)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=w,p-=w,(w=s-o)<x){if(u<(w=x-w)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=f,(k=0)===h){if(k+=c-w,w<_){for(_-=w;C[s++]=f[k++],--w;);k=s-x,S=C}}else if(h<w){if(k+=c+h-w,(w-=h)<_){for(_-=w;C[s++]=f[k++],--w;);if(k=0,h<_){for(_-=w=h;C[s++]=f[k++],--w;);k=s-x,S=C}}}else if(k+=h-w,w<_){for(_-=w;C[s++]=f[k++],--w;);k=s-x,S=C}for(;2<_;)C[s++]=S[k++],C[s++]=S[k++],C[s++]=S[k++],_-=3;_&&(C[s++]=S[k++],1<_&&(C[s++]=S[k++]))}else{for(k=s-x;C[s++]=C[k++],C[s++]=C[k++],C[s++]=C[k++],2<(_-=3););_&&(C[s++]=C[k++],1<_&&(C[s++]=C[k++]))}break}}break}}while(n<i&&s<a);n-=_=p>>3,d&=(1<<(p-=_<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<a?a-s+257:257-(s-a),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){var n=e(\"../utils/common\"),i=e(\"./adler32\"),s=e(\"./crc32\"),o=e(\"./inffast\"),a=e(\"./inftrees\"),l=-2;function c(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function u(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function h(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(852),t.distcode=t.distdyn=new n.Buf32(592),t.sane=1,t.back=-1,0):l}function f(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,h(e)):l}function d(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?l:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,f(e))):l}function p(e,t){var r,n;return e?(n=new u,(e.state=n).window=null,0!==(r=d(e,t))&&(e.state=null),r):l}var m,b,g=!0;function y(e){if(g){var t;for(m=new n.Buf32(512),b=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(a(1,e.lens,0,288,m,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;a(2,e.lens,0,32,b,0,e.work,{bits:5}),g=!1}e.lencode=m,e.lenbits=9,e.distcode=b,e.distbits=5}function v(e,t,r,i){var s,o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new n.Buf8(o.wsize)),i>=o.wsize?(n.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(i<(s=o.wsize-o.wnext)&&(s=i),n.arraySet(o.window,t,r-i,s,o.wnext),(i-=s)?(n.arraySet(o.window,t,r-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=s,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=s))),0}r.inflateReset=f,r.inflateReset2=d,r.inflateResetKeep=h,r.inflateInit=function(e){return p(e,15)},r.inflateInit2=p,r.inflate=function(e,t){var r,u,h,f,d,p,m,b,g,w,_,x,k,S,M,C,T,E,A,R,O,j,I,N,P=0,B=new n.Buf8(4),D=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return l;12===(r=e.state).mode&&(r.mode=13),d=e.next_out,h=e.output,m=e.avail_out,f=e.next_in,u=e.input,p=e.avail_in,b=r.hold,g=r.bits,w=p,_=m,j=0;e:for(;;)switch(r.mode){case 1:if(0===r.wrap){r.mode=13;break}for(;g<16;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}if(2&r.wrap&&35615===b){B[r.check=0]=255&b,B[1]=b>>>8&255,r.check=s(r.check,B,2,0),g=b=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&b)<<8)+(b>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&b)){e.msg=\"unknown compression method\",r.mode=30;break}if(g-=4,O=8+(15&(b>>>=4)),0===r.wbits)r.wbits=O;else if(O>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<O,e.adler=r.check=1,r.mode=512&b?10:12,g=b=0;break;case 2:for(;g<16;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}if(r.flags=b,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=b>>8&1),512&r.flags&&(B[0]=255&b,B[1]=b>>>8&255,r.check=s(r.check,B,2,0)),g=b=0,r.mode=3;case 3:for(;g<32;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}r.head&&(r.head.time=b),512&r.flags&&(B[0]=255&b,B[1]=b>>>8&255,B[2]=b>>>16&255,B[3]=b>>>24&255,r.check=s(r.check,B,4,0)),g=b=0,r.mode=4;case 4:for(;g<16;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}r.head&&(r.head.xflags=255&b,r.head.os=b>>8),512&r.flags&&(B[0]=255&b,B[1]=b>>>8&255,r.check=s(r.check,B,2,0)),g=b=0,r.mode=5;case 5:if(1024&r.flags){for(;g<16;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}r.length=b,r.head&&(r.head.extra_len=b),512&r.flags&&(B[0]=255&b,B[1]=b>>>8&255,r.check=s(r.check,B,2,0)),g=b=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(p<(x=r.length)&&(x=p),x&&(r.head&&(O=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,u,f,x,O)),512&r.flags&&(r.check=s(r.check,u,x,f)),p-=x,f+=x,r.length-=x),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===p)break e;for(x=0;O=u[f+x++],r.head&&O&&r.length<65536&&(r.head.name+=String.fromCharCode(O)),O&&x<p;);if(512&r.flags&&(r.check=s(r.check,u,x,f)),p-=x,f+=x,O)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===p)break e;for(x=0;O=u[f+x++],r.head&&O&&r.length<65536&&(r.head.comment+=String.fromCharCode(O)),O&&x<p;);if(512&r.flags&&(r.check=s(r.check,u,x,f)),p-=x,f+=x,O)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;g<16;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}if(b!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}g=b=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;g<32;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}e.adler=r.check=c(b),g=b=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=d,e.avail_out=m,e.next_in=f,e.avail_in=p,r.hold=b,r.bits=g,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){b>>>=7&g,g-=7&g,r.mode=27;break}for(;g<3;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}switch(r.last=1&b,g-=1,3&(b>>>=1)){case 0:r.mode=14;break;case 1:if(y(r),r.mode=20,6!==t)break;b>>>=2,g-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}b>>>=2,g-=2;break;case 14:for(b>>>=7&g,g-=7&g;g<32;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}if((65535&b)!=(b>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&b,g=b=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(x=r.length){if(p<x&&(x=p),m<x&&(x=m),0===x)break e;n.arraySet(h,u,f,x,d),p-=x,f+=x,m-=x,d+=x,r.length-=x;break}r.mode=12;break;case 17:for(;g<14;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}if(r.nlen=257+(31&b),b>>>=5,g-=5,r.ndist=1+(31&b),b>>>=5,g-=5,r.ncode=4+(15&b),b>>>=4,g-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;g<3;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}r.lens[D[r.have++]]=7&b,b>>>=3,g-=3}for(;r.have<19;)r.lens[D[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,I={bits:r.lenbits},j=a(0,r.lens,0,19,r.lencode,0,r.work,I),r.lenbits=I.bits,j){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;C=(P=r.lencode[b&(1<<r.lenbits)-1])>>>16&255,T=65535&P,!((M=P>>>24)<=g);){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}if(T<16)b>>>=M,g-=M,r.lens[r.have++]=T;else{if(16===T){for(N=M+2;g<N;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}if(b>>>=M,g-=M,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}O=r.lens[r.have-1],x=3+(3&b),b>>>=2,g-=2}else if(17===T){for(N=M+3;g<N;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}g-=M,O=0,x=3+(7&(b>>>=M)),b>>>=3,g-=3}else{for(N=M+7;g<N;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}g-=M,O=0,x=11+(127&(b>>>=M)),b>>>=7,g-=7}if(r.have+x>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;x--;)r.lens[r.have++]=O}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,I={bits:r.lenbits},j=a(1,r.lens,0,r.nlen,r.lencode,0,r.work,I),r.lenbits=I.bits,j){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,I={bits:r.distbits},j=a(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,I),r.distbits=I.bits,j){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=p&&258<=m){e.next_out=d,e.avail_out=m,e.next_in=f,e.avail_in=p,r.hold=b,r.bits=g,o(e,_),d=e.next_out,h=e.output,m=e.avail_out,f=e.next_in,u=e.input,p=e.avail_in,b=r.hold,g=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;C=(P=r.lencode[b&(1<<r.lenbits)-1])>>>16&255,T=65535&P,!((M=P>>>24)<=g);){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}if(C&&0==(240&C)){for(E=M,A=C,R=T;C=(P=r.lencode[R+((b&(1<<E+A)-1)>>E)])>>>16&255,T=65535&P,!(E+(M=P>>>24)<=g);){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}b>>>=E,g-=E,r.back+=E}if(b>>>=M,g-=M,r.back+=M,r.length=T,0===C){r.mode=26;break}if(32&C){r.back=-1,r.mode=12;break}if(64&C){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&C,r.mode=22;case 22:if(r.extra){for(N=r.extra;g<N;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}r.length+=b&(1<<r.extra)-1,b>>>=r.extra,g-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;C=(P=r.distcode[b&(1<<r.distbits)-1])>>>16&255,T=65535&P,!((M=P>>>24)<=g);){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}if(0==(240&C)){for(E=M,A=C,R=T;C=(P=r.distcode[R+((b&(1<<E+A)-1)>>E)])>>>16&255,T=65535&P,!(E+(M=P>>>24)<=g);){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}b>>>=E,g-=E,r.back+=E}if(b>>>=M,g-=M,r.back+=M,64&C){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=T,r.extra=15&C,r.mode=24;case 24:if(r.extra){for(N=r.extra;g<N;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}r.offset+=b&(1<<r.extra)-1,b>>>=r.extra,g-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===m)break e;if(x=_-m,r.offset>x){if((x=r.offset-x)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}k=x>r.wnext?(x-=r.wnext,r.wsize-x):r.wnext-x,x>r.length&&(x=r.length),S=r.window}else S=h,k=d-r.offset,x=r.length;for(m<x&&(x=m),m-=x,r.length-=x;h[d++]=S[k++],--x;);0===r.length&&(r.mode=21);break;case 26:if(0===m)break e;h[d++]=r.length,m--,r.mode=21;break;case 27:if(r.wrap){for(;g<32;){if(0===p)break e;p--,b|=u[f++]<<g,g+=8}if(_-=m,e.total_out+=_,r.total+=_,_&&(e.adler=r.check=r.flags?s(r.check,h,_,d-_):i(r.check,h,_,d-_)),_=m,(r.flags?b:c(b))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}g=b=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;g<32;){if(0===p)break e;p--,b+=u[f++]<<g,g+=8}if(b!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}g=b=0}r.mode=29;case 29:j=1;break e;case 30:j=-3;break e;case 31:return-4;case 32:default:return l}return e.next_out=d,e.avail_out=m,e.next_in=f,e.avail_in=p,r.hold=b,r.bits=g,(r.wsize||_!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&v(e,e.output,e.next_out,_-e.avail_out)?(r.mode=31,-4):(w-=e.avail_in,_-=e.avail_out,e.total_in+=w,e.total_out+=_,r.total+=_,r.wrap&&_&&(e.adler=r.check=r.flags?s(r.check,h,_,e.next_out-_):i(r.check,h,_,e.next_out-_)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==w&&0===_||4===t)&&0===j&&(j=-5),j)},r.inflateEnd=function(e){if(!e||!e.state)return l;var t=e.state;return t.window&&(t.window=null),e.state=null,0},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?l:((r.head=t).done=!1,0):l},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?l:11===r.mode&&i(1,t,n,0)!==r.check?-3:v(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,0):l},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){var n=e(\"../utils/common\"),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],s=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],a=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,l,c,u,h,f){var d,p,m,b,g,y,v,w,_,x=f.bits,k=0,S=0,M=0,C=0,T=0,E=0,A=0,R=0,O=0,j=0,I=null,N=0,P=new n.Buf16(16),B=new n.Buf16(16),D=null,F=0;for(k=0;k<=15;k++)P[k]=0;for(S=0;S<l;S++)P[t[r+S]]++;for(T=x,C=15;1<=C&&0===P[C];C--);if(C<T&&(T=C),0===C)return c[u++]=20971520,c[u++]=20971520,f.bits=1,0;for(M=1;M<C&&0===P[M];M++);for(T<M&&(T=M),k=R=1;k<=15;k++)if(R<<=1,(R-=P[k])<0)return-1;if(0<R&&(0===e||1!==C))return-1;for(B[1]=0,k=1;k<15;k++)B[k+1]=B[k]+P[k];for(S=0;S<l;S++)0!==t[r+S]&&(h[B[t[r+S]]++]=S);if(y=0===e?(I=D=h,19):1===e?(I=i,N-=257,D=s,F-=257,256):(I=o,D=a,-1),k=M,g=u,A=S=j=0,m=-1,b=(O=1<<(E=T))-1,1===e&&852<O||2===e&&592<O)return 1;for(;;){for(v=k-A,_=h[S]<y?(w=0,h[S]):h[S]>y?(w=D[F+h[S]],I[N+h[S]]):(w=96,0),d=1<<k-A,M=p=1<<E;c[g+(j>>A)+(p-=d)]=v<<24|w<<16|_|0,0!==p;);for(d=1<<k-1;j&d;)d>>=1;if(0!==d?(j&=d-1,j+=d):j=0,S++,0==--P[k]){if(k===C)break;k=t[r+h[S]]}if(T<k&&(j&b)!==m){for(0===A&&(A=T),g+=M,R=1<<(E=k-A);E+A<C&&!((R-=P[E+A])<=0);)E++,R<<=1;if(O+=1<<E,1===e&&852<O||2===e&&592<O)return 1;c[m=j&b]=T<<24|E<<16|g-u|0}}return 0!==j&&(c[g+j]=k-A<<24|64<<16|0),f.bits=T,0}},{\"../utils/common\":41}],51:[function(e,t,r){t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){var n=e(\"../utils/common\");function i(e){for(var t=e.length;0<=--t;)e[t]=0}var s=256,o=286,a=30,l=15,c=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],u=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],h=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],f=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],d=new Array(576);i(d);var p=new Array(60);i(p);var m=new Array(512);i(m);var b=new Array(256);i(b);var g=new Array(29);i(g);var y,v,w,_=new Array(a);function x(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function k(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function S(e){return e<256?m[e]:m[256+(e>>>7)]}function M(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>16-r?(e.bi_buf|=t<<e.bi_valid&65535,M(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=r-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function T(e,t,r){C(e,r[2*t],r[2*t+1])}function E(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function A(e,t,r){var n,i,s=new Array(16),o=0;for(n=1;n<=l;n++)s[n]=o=o+r[n-1]<<1;for(i=0;i<=t;i++){var a=e[2*i+1];0!==a&&(e[2*i]=E(s[a]++,a))}}function R(e){var t;for(t=0;t<o;t++)e.dyn_ltree[2*t]=0;for(t=0;t<a;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function O(e){8<e.bi_valid?M(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function j(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function I(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&j(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!j(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function N(e,t,r){var n,i,o,a,l=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*l]<<8|e.pending_buf[e.d_buf+2*l+1],i=e.pending_buf[e.l_buf+l],l++,0===n?T(e,i,t):(T(e,(o=b[i])+s+1,t),0!==(a=c[o])&&C(e,i-=g[o],a),T(e,o=S(--n),r),0!==(a=u[o])&&C(e,n-=_[o],a)),l<e.last_lit;);T(e,256,t)}function P(e,t){var r,n,i,s=t.dyn_tree,o=t.stat_desc.static_tree,a=t.stat_desc.has_stree,c=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=573,r=0;r<c;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,a&&(e.static_len-=o[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)I(e,s,r);for(i=c;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],I(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,I(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,o,a,c=t.dyn_tree,u=t.max_code,h=t.stat_desc.static_tree,f=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,m=t.stat_desc.max_length,b=0;for(s=0;s<=l;s++)e.bl_count[s]=0;for(c[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<573;r++)m<(s=c[2*c[2*(n=e.heap[r])+1]+1]+1)&&(s=m,b++),c[2*n+1]=s,u<n||(e.bl_count[s]++,o=0,p<=n&&(o=d[n-p]),a=c[2*n],e.opt_len+=a*(s+o),f&&(e.static_len+=a*(h[2*n+1]+o)));if(0!==b){do{for(s=m-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[m]--,b-=2}while(0<b);for(s=m;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(c[2*i+1]!==s&&(e.opt_len+=(s-c[2*i+1])*c[2*i],c[2*i+1]=s),n--)}}(e,t),A(s,u,e.bl_count)}function B(e,t,r){var n,i,s=-1,o=t[1],a=0,l=7,c=4;for(0===o&&(l=138,c=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=t[2*(n+1)+1],++a<l&&i===o||(a<c?e.bl_tree[2*i]+=a:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[32]++):a<=10?e.bl_tree[34]++:e.bl_tree[36]++,s=i,c=(a=0)===o?(l=138,3):i===o?(l=6,3):(l=7,4))}function D(e,t,r){var n,i,s=-1,o=t[1],a=0,l=7,c=4;for(0===o&&(l=138,c=3),n=0;n<=r;n++)if(i=o,o=t[2*(n+1)+1],!(++a<l&&i===o)){if(a<c)for(;T(e,i,e.bl_tree),0!=--a;);else 0!==i?(i!==s&&(T(e,i,e.bl_tree),a--),T(e,16,e.bl_tree),C(e,a-3,2)):a<=10?(T(e,17,e.bl_tree),C(e,a-3,3)):(T(e,18,e.bl_tree),C(e,a-11,7));s=i,c=(a=0)===o?(l=138,3):i===o?(l=6,3):(l=7,4)}}i(_);var F=!1;function L(e,t,r,i){C(e,0+(i?1:0),3),function(e,t,r,i){O(e),M(e,r),M(e,~r),n.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r)}r._tr_init=function(e){F||(function(){var e,t,r,n,i,s=new Array(16);for(n=r=0;n<28;n++)for(g[n]=r,e=0;e<1<<c[n];e++)b[r++]=n;for(b[r-1]=n,n=i=0;n<16;n++)for(_[n]=i,e=0;e<1<<u[n];e++)m[i++]=n;for(i>>=7;n<a;n++)for(_[n]=i<<7,e=0;e<1<<u[n]-7;e++)m[256+i++]=n;for(t=0;t<=l;t++)s[t]=0;for(e=0;e<=143;)d[2*e+1]=8,e++,s[8]++;for(;e<=255;)d[2*e+1]=9,e++,s[9]++;for(;e<=279;)d[2*e+1]=7,e++,s[7]++;for(;e<=287;)d[2*e+1]=8,e++,s[8]++;for(A(d,287,s),e=0;e<a;e++)p[2*e+1]=5,p[2*e]=E(e,5);y=new x(d,c,257,o,l),v=new x(p,u,0,a,l),w=new x(new Array(0),h,0,19,7)}(),F=!0),e.l_desc=new k(e.dyn_ltree,y),e.d_desc=new k(e.dyn_dtree,v),e.bl_desc=new k(e.bl_tree,w),e.bi_buf=0,e.bi_valid=0,R(e)},r._tr_stored_block=L,r._tr_flush_block=function(e,t,r,n){var i,o,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<s;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),P(e,e.l_desc),P(e,e.d_desc),a=function(e){var t;for(B(e,e.dyn_ltree,e.l_desc.max_code),B(e,e.dyn_dtree,e.d_desc.max_code),P(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*f[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(o=e.static_len+3+7>>>3)<=i&&(i=o)):i=o=r+5,r+4<=i&&-1!==t?L(e,t,r,n):4===e.strategy||o===i?(C(e,2+(n?1:0),3),N(e,d,p)):(C(e,4+(n?1:0),3),function(e,t,r,n){var i;for(C(e,t-257,5),C(e,r-1,5),C(e,n-4,4),i=0;i<n;i++)C(e,e.bl_tree[2*f[i]+1],3);D(e,e.dyn_ltree,t-1),D(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),N(e,e.dyn_ltree,e.dyn_dtree)),R(e),n&&O(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(b[r]+s+1)]++,e.dyn_dtree[2*S(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){C(e,2,3),T(e,256,d),function(e){16===e.bi_valid?(M(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(e,t){if(!e.setImmediate){var r,i,s,o,a=1,l={},c=!1,u=e.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(e);h=h&&h.setTimeout?h:e,r=\"[object process]\"==={}.toString.call(e.process)?function(e){n.nextTick((function(){d(e)}))}:function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=r,t}}()?(o=\"setImmediate$\"+Math.random()+\"$\",e.addEventListener?e.addEventListener(\"message\",p,!1):e.attachEvent(\"onmessage\",p),function(t){e.postMessage(o+t,\"*\")}):e.MessageChannel?((s=new MessageChannel).port1.onmessage=function(e){d(e.data)},function(e){s.port2.postMessage(e)}):u&&\"onreadystatechange\"in u.createElement(\"script\")?(i=u.documentElement,function(e){var t=u.createElement(\"script\");t.onreadystatechange=function(){d(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(d,0,e)},h.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var i={callback:e,args:t};return l[a]=i,r(a),a++},h.clearImmediate=f}function f(e){delete l[e]}function d(e){if(c)setTimeout(d,0,e);else{var t=l[e];if(t){c=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(void 0,r)}}(t)}finally{f(e),c=!1}}}}function p(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(o)&&d(+t.data.slice(o.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,void 0!==i?i:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)}))}).call(this)}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],e(\"timers\").setImmediate)},{_process:467,buffer:220,timers:523}],442:[function(e,t,r){(function(e){(function(){\"use strict\";var r=/[\\\\^$.*+?()[\\]{}|]/g,n=RegExp(r.source),i=\"object\"==typeof e&&e&&e.Object===Object&&e,s=\"object\"==typeof self&&self&&self.Object===Object&&self,o=i||s||Function(\"return this\")(),a=Object.prototype.toString,l=o.Symbol,c=l?l.prototype:void 0,u=c?c.toString:void 0;function h(e){if(\"string\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==a.call(e)}(e))return u?u.call(e):\"\";var t=e+\"\";return\"0\"==t&&1/e==-1/0?\"-0\":t}t.exports=function(e){var t;return(e=null==(t=e)?\"\":h(t))&&n.test(e)?e.replace(r,\"\\\\$&\"):e}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],443:[function(e,t,r){(function(e){(function(){\"use strict\";var n=\"[object Arguments]\",i=\"[object Map]\",s=\"[object Object]\",o=\"[object Set]\",a=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,l=/^\\w*$/,c=/^\\./,u=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,h=/\\\\(\\\\)?/g,f=/^\\[object .+?Constructor\\]$/,d=/^(?:0|[1-9]\\d*)$/,p={};p[\"[object Float32Array]\"]=p[\"[object Float64Array]\"]=p[\"[object Int8Array]\"]=p[\"[object Int16Array]\"]=p[\"[object Int32Array]\"]=p[\"[object Uint8Array]\"]=p[\"[object Uint8ClampedArray]\"]=p[\"[object Uint16Array]\"]=p[\"[object Uint32Array]\"]=!0,p[n]=p[\"[object Array]\"]=p[\"[object ArrayBuffer]\"]=p[\"[object Boolean]\"]=p[\"[object DataView]\"]=p[\"[object Date]\"]=p[\"[object Error]\"]=p[\"[object Function]\"]=p[i]=p[\"[object Number]\"]=p[s]=p[\"[object RegExp]\"]=p[o]=p[\"[object String]\"]=p[\"[object WeakMap]\"]=!1;var m=\"object\"==typeof e&&e&&e.Object===Object&&e,b=\"object\"==typeof self&&self&&self.Object===Object&&self,g=m||b||Function(\"return this\")(),y=\"object\"==typeof r&&r&&!r.nodeType&&r,v=y&&\"object\"==typeof t&&t&&!t.nodeType&&t,w=v&&v.exports===y&&m.process,_=function(){try{return w&&w.binding(\"util\")}catch(e){}}(),x=_&&_.isTypedArray;function k(e,t,r,n){for(var i=-1,s=e?e.length:0;++i<s;){var o=e[i];t(n,o,r(o),e)}return n}function S(e,t){for(var r=-1,n=e?e.length:0;++r<n;)if(t(e[r],r,e))return!0;return!1}function M(e){var t=!1;if(null!=e&&\"function\"!=typeof e.toString)try{t=!!(e+\"\")}catch(e){}return t}function C(e){var t=-1,r=Array(e.size);return e.forEach((function(e,n){r[++t]=[n,e]})),r}function T(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}var E,A,R,O=Array.prototype,j=Function.prototype,I=Object.prototype,N=g[\"__core-js_shared__\"],P=(E=/[^.]+$/.exec(N&&N.keys&&N.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+E:\"\",B=j.toString,D=I.hasOwnProperty,F=I.toString,L=RegExp(\"^\"+B.call(D).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),z=g.Symbol,U=g.Uint8Array,$=I.propertyIsEnumerable,H=O.splice,V=(A=Object.keys,R=Object,function(e){return A(R(e))}),q=Ce(g,\"DataView\"),W=Ce(g,\"Map\"),X=Ce(g,\"Promise\"),K=Ce(g,\"Set\"),Y=Ce(g,\"WeakMap\"),Z=Ce(Object,\"create\"),G=Ne(q),J=Ne(W),Q=Ne(X),ee=Ne(K),te=Ne(Y),re=z?z.prototype:void 0,ne=re?re.valueOf:void 0,ie=re?re.toString:void 0;function se(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function oe(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function ae(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function le(e){var t=-1,r=e?e.length:0;for(this.__data__=new ae;++t<r;)this.add(e[t])}function ce(e){this.__data__=new oe(e)}function ue(e,t){var r=Ue(e)||ze(e)?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],n=r.length,i=!!n;for(var s in e)!t&&!D.call(e,s)||i&&(\"length\"==s||Ee(s,n))||r.push(s);return r}function he(e,t){for(var r=e.length;r--;)if(Le(e[r][0],t))return r;return-1}function fe(e,t,r,n){return me(e,(function(e,i,s){t(n,e,r(e),s)})),n}se.prototype.clear=function(){this.__data__=Z?Z(null):{}},se.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},se.prototype.get=function(e){var t=this.__data__;if(Z){var r=t[e];return\"__lodash_hash_undefined__\"===r?void 0:r}return D.call(t,e)?t[e]:void 0},se.prototype.has=function(e){var t=this.__data__;return Z?void 0!==t[e]:D.call(t,e)},se.prototype.set=function(e,t){return this.__data__[e]=Z&&void 0===t?\"__lodash_hash_undefined__\":t,this},oe.prototype.clear=function(){this.__data__=[]},oe.prototype.delete=function(e){var t=this.__data__,r=he(t,e);return!(r<0)&&(r==t.length-1?t.pop():H.call(t,r,1),!0)},oe.prototype.get=function(e){var t=this.__data__,r=he(t,e);return r<0?void 0:t[r][1]},oe.prototype.has=function(e){return he(this.__data__,e)>-1},oe.prototype.set=function(e,t){var r=this.__data__,n=he(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},ae.prototype.clear=function(){this.__data__={hash:new se,map:new(W||oe),string:new se}},ae.prototype.delete=function(e){return Me(this,e).delete(e)},ae.prototype.get=function(e){return Me(this,e).get(e)},ae.prototype.has=function(e){return Me(this,e).has(e)},ae.prototype.set=function(e,t){return Me(this,e).set(e,t),this},le.prototype.add=le.prototype.push=function(e){return this.__data__.set(e,\"__lodash_hash_undefined__\"),this},le.prototype.has=function(e){return this.__data__.has(e)},ce.prototype.clear=function(){this.__data__=new oe},ce.prototype.delete=function(e){return this.__data__.delete(e)},ce.prototype.get=function(e){return this.__data__.get(e)},ce.prototype.has=function(e){return this.__data__.has(e)},ce.prototype.set=function(e,t){var r=this.__data__;if(r instanceof oe){var n=r.__data__;if(!W||n.length<199)return n.push([e,t]),this;r=this.__data__=new ae(n)}return r.set(e,t),this};var de,pe,me=(de=function(e,t){return e&&be(e,t,Ye)},function(e,t){if(null==e)return e;if(!$e(e))return de(e,t);for(var r=e.length,n=pe?r:-1,i=Object(e);(pe?n--:++n<r)&&!1!==t(i[n],n,i););return e}),be=function(e){return function(t,r,n){for(var i=-1,s=Object(t),o=n(t),a=o.length;a--;){var l=o[e?a:++i];if(!1===r(s[l],l,s))break}return t}}();function ge(e,t){for(var r=0,n=(t=Ae(t,e)?[t]:ke(t)).length;null!=e&&r<n;)e=e[Ie(t[r++])];return r&&r==n?e:void 0}function ye(e,t){return null!=e&&t in Object(e)}function ve(e,t,r,a,l){return e===t||(null==e||null==t||!qe(e)&&!We(t)?e!=e&&t!=t:function(e,t,r,a,l,c){var u=Ue(e),h=Ue(t),f=\"[object Array]\",d=\"[object Array]\";u||(f=(f=Te(e))==n?s:f);h||(d=(d=Te(t))==n?s:d);var p=f==s&&!M(e),m=d==s&&!M(t),b=f==d;if(b&&!p)return c||(c=new ce),u||Ke(e)?Se(e,t,r,a,l,c):function(e,t,r,n,s,a,l){switch(r){case\"[object DataView]\":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case\"[object ArrayBuffer]\":return!(e.byteLength!=t.byteLength||!n(new U(e),new U(t)));case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return Le(+e,+t);case\"[object Error]\":return e.name==t.name&&e.message==t.message;case\"[object RegExp]\":case\"[object String]\":return e==t+\"\";case i:var c=C;case o:var u=2&a;if(c||(c=T),e.size!=t.size&&!u)return!1;var h=l.get(e);if(h)return h==t;a|=1,l.set(e,t);var f=Se(c(e),c(t),n,s,a,l);return l.delete(e),f;case\"[object Symbol]\":if(ne)return ne.call(e)==ne.call(t)}return!1}(e,t,f,r,a,l,c);if(!(2&l)){var g=p&&D.call(e,\"__wrapped__\"),y=m&&D.call(t,\"__wrapped__\");if(g||y){var v=g?e.value():e,w=y?t.value():t;return c||(c=new ce),r(v,w,a,l,c)}}if(!b)return!1;return c||(c=new ce),function(e,t,r,n,i,s){var o=2&i,a=Ye(e),l=a.length,c=Ye(t).length;if(l!=c&&!o)return!1;var u=l;for(;u--;){var h=a[u];if(!(o?h in t:D.call(t,h)))return!1}var f=s.get(e);if(f&&s.get(t))return f==t;var d=!0;s.set(e,t),s.set(t,e);var p=o;for(;++u<l;){h=a[u];var m=e[h],b=t[h];if(n)var g=o?n(b,m,h,t,e,s):n(m,b,h,e,t,s);if(!(void 0===g?m===b||r(m,b,n,i,s):g)){d=!1;break}p||(p=\"constructor\"==h)}if(d&&!p){var y=e.constructor,v=t.constructor;y==v||!(\"constructor\"in e)||!(\"constructor\"in t)||\"function\"==typeof y&&y instanceof y&&\"function\"==typeof v&&v instanceof v||(d=!1)}return s.delete(e),s.delete(t),d}(e,t,r,a,l,c)}(e,t,ve,r,a,l))}function we(e){return!(!qe(e)||function(e){return!!P&&P in e}(e))&&(He(e)||M(e)?L:f).test(Ne(e))}function _e(e){return\"function\"==typeof e?e:null==e?Ze:\"object\"==typeof e?Ue(e)?function(e,t){if(Ae(e)&&Re(t))return Oe(Ie(e),t);return function(r){var n=function(e,t,r){var n=null==e?void 0:ge(e,t);return void 0===n?r:n}(r,e);return void 0===n&&n===t?function(e,t){return null!=e&&function(e,t,r){t=Ae(t,e)?[t]:ke(t);var n,i=-1,s=t.length;for(;++i<s;){var o=Ie(t[i]);if(!(n=null!=e&&r(e,o)))break;e=e[o]}if(n)return n;return!!(s=e?e.length:0)&&Ve(s)&&Ee(o,s)&&(Ue(e)||ze(e))}(e,t,ye)}(r,e):ve(t,n,void 0,3)}}(e[0],e[1]):function(e){var t=function(e){var t=Ye(e),r=t.length;for(;r--;){var n=t[r],i=e[n];t[r]=[n,i,Re(i)]}return t}(e);if(1==t.length&&t[0][2])return Oe(t[0][0],t[0][1]);return function(r){return r===e||function(e,t,r,n){var i=r.length,s=i,o=!n;if(null==e)return!s;for(e=Object(e);i--;){var a=r[i];if(o&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++i<s;){var l=(a=r[i])[0],c=e[l],u=a[1];if(o&&a[2]){if(void 0===c&&!(l in e))return!1}else{var h=new ce;if(n)var f=n(c,u,l,e,t,h);if(!(void 0===f?ve(u,c,n,3,h):f))return!1}}return!0}(r,e,t)}}(e):Ae(t=e)?(r=Ie(t),function(e){return null==e?void 0:e[r]}):function(e){return function(t){return ge(t,e)}}(t);var t,r}function xe(e){if(r=(t=e)&&t.constructor,n=\"function\"==typeof r&&r.prototype||I,t!==n)return V(e);var t,r,n,i=[];for(var s in Object(e))D.call(e,s)&&\"constructor\"!=s&&i.push(s);return i}function ke(e){return Ue(e)?e:je(e)}function Se(e,t,r,n,i,s){var o=2&i,a=e.length,l=t.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(e);if(c&&s.get(t))return c==t;var u=-1,h=!0,f=1&i?new le:void 0;for(s.set(e,t),s.set(t,e);++u<a;){var d=e[u],p=t[u];if(n)var m=o?n(p,d,u,t,e,s):n(d,p,u,e,t,s);if(void 0!==m){if(m)continue;h=!1;break}if(f){if(!S(t,(function(e,t){if(!f.has(t)&&(d===e||r(d,e,n,i,s)))return f.add(t)}))){h=!1;break}}else if(d!==p&&!r(d,p,n,i,s)){h=!1;break}}return s.delete(e),s.delete(t),h}function Me(e,t){var r,n,i=e.__data__;return(\"string\"==(n=typeof(r=t))||\"number\"==n||\"symbol\"==n||\"boolean\"==n?\"__proto__\"!==r:null===r)?i[\"string\"==typeof t?\"string\":\"hash\"]:i.map}function Ce(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return we(r)?r:void 0}var Te=function(e){return F.call(e)};function Ee(e,t){return!!(t=null==t?9007199254740991:t)&&(\"number\"==typeof e||d.test(e))&&e>-1&&e%1==0&&e<t}function Ae(e,t){if(Ue(e))return!1;var r=typeof e;return!(\"number\"!=r&&\"symbol\"!=r&&\"boolean\"!=r&&null!=e&&!Xe(e))||(l.test(e)||!a.test(e)||null!=t&&e in Object(t))}function Re(e){return e==e&&!qe(e)}function Oe(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}(q&&\"[object DataView]\"!=Te(new q(new ArrayBuffer(1)))||W&&Te(new W)!=i||X&&\"[object Promise]\"!=Te(X.resolve())||K&&Te(new K)!=o||Y&&\"[object WeakMap]\"!=Te(new Y))&&(Te=function(e){var t=F.call(e),r=t==s?e.constructor:void 0,n=r?Ne(r):void 0;if(n)switch(n){case G:return\"[object DataView]\";case J:return i;case Q:return\"[object Promise]\";case ee:return o;case te:return\"[object WeakMap]\"}return t});var je=Fe((function(e){var t;e=null==(t=e)?\"\":function(e){if(\"string\"==typeof e)return e;if(Xe(e))return ie?ie.call(e):\"\";var t=e+\"\";return\"0\"==t&&1/e==-1/0?\"-0\":t}(t);var r=[];return c.test(e)&&r.push(\"\"),e.replace(u,(function(e,t,n,i){r.push(n?i.replace(h,\"$1\"):t||e)})),r}));function Ie(e){if(\"string\"==typeof e||Xe(e))return e;var t=e+\"\";return\"0\"==t&&1/e==-1/0?\"-0\":t}function Ne(e){if(null!=e){try{return B.call(e)}catch(e){}try{return e+\"\"}catch(e){}}return\"\"}var Pe,Be,De=(Pe=function(e,t,r){D.call(e,r)?e[r].push(t):e[r]=[t]},function(e,t){var r=Ue(e)?k:fe,n=Be?Be():{};return r(e,Pe,_e(t),n)});function Fe(e,t){if(\"function\"!=typeof e||t&&\"function\"!=typeof t)throw new TypeError(\"Expected a function\");var r=function(){var n=arguments,i=t?t.apply(this,n):n[0],s=r.cache;if(s.has(i))return s.get(i);var o=e.apply(this,n);return r.cache=s.set(i,o),o};return r.cache=new(Fe.Cache||ae),r}function Le(e,t){return e===t||e!=e&&t!=t}function ze(e){return function(e){return We(e)&&$e(e)}(e)&&D.call(e,\"callee\")&&(!$.call(e,\"callee\")||F.call(e)==n)}Fe.Cache=ae;var Ue=Array.isArray;function $e(e){return null!=e&&Ve(e.length)&&!He(e)}function He(e){var t=qe(e)?F.call(e):\"\";return\"[object Function]\"==t||\"[object GeneratorFunction]\"==t}function Ve(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function qe(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function We(e){return!!e&&\"object\"==typeof e}function Xe(e){return\"symbol\"==typeof e||We(e)&&\"[object Symbol]\"==F.call(e)}var Ke=x?function(e){return function(t){return e(t)}}(x):function(e){return We(e)&&Ve(e.length)&&!!p[F.call(e)]};function Ye(e){return $e(e)?ue(e):xe(e)}function Ze(e){return e}t.exports=De}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],444:[function(e,t,r){\"use strict\";var n=Object.prototype.toString;t.exports=function(e){return!0===e||!1===e||function(e){return!!e&&\"object\"==typeof e}(e)&&\"[object Boolean]\"==n.call(e)}},{}],445:[function(e,t,r){(function(e){(function(){\"use strict\";var n=\"[object Arguments]\",i=\"[object Map]\",s=\"[object Object]\",o=\"[object Set]\",a=/^\\[object .+?Constructor\\]$/,l=/^(?:0|[1-9]\\d*)$/,c={};c[\"[object Float32Array]\"]=c[\"[object Float64Array]\"]=c[\"[object Int8Array]\"]=c[\"[object Int16Array]\"]=c[\"[object Int32Array]\"]=c[\"[object Uint8Array]\"]=c[\"[object Uint8ClampedArray]\"]=c[\"[object Uint16Array]\"]=c[\"[object Uint32Array]\"]=!0,c[n]=c[\"[object Array]\"]=c[\"[object ArrayBuffer]\"]=c[\"[object Boolean]\"]=c[\"[object DataView]\"]=c[\"[object Date]\"]=c[\"[object Error]\"]=c[\"[object Function]\"]=c[i]=c[\"[object Number]\"]=c[s]=c[\"[object RegExp]\"]=c[o]=c[\"[object String]\"]=c[\"[object WeakMap]\"]=!1;var u=\"object\"==typeof e&&e&&e.Object===Object&&e,h=\"object\"==typeof self&&self&&self.Object===Object&&self,f=u||h||Function(\"return this\")(),d=\"object\"==typeof r&&r&&!r.nodeType&&r,p=d&&\"object\"==typeof t&&t&&!t.nodeType&&t,m=p&&p.exports===d,b=m&&u.process,g=function(){try{return b&&b.binding&&b.binding(\"util\")}catch(e){}}(),y=g&&g.isTypedArray;function v(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}function w(e){var t=-1,r=Array(e.size);return e.forEach((function(e,n){r[++t]=[n,e]})),r}function _(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}var x,k,S,M=Array.prototype,C=Function.prototype,T=Object.prototype,E=f[\"__core-js_shared__\"],A=C.toString,R=T.hasOwnProperty,O=(x=/[^.]+$/.exec(E&&E.keys&&E.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+x:\"\",j=T.toString,I=RegExp(\"^\"+A.call(R).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),N=m?f.Buffer:void 0,P=f.Symbol,B=f.Uint8Array,D=T.propertyIsEnumerable,F=M.splice,L=P?P.toStringTag:void 0,z=Object.getOwnPropertySymbols,U=N?N.isBuffer:void 0,$=(k=Object.keys,S=Object,function(e){return k(S(e))}),H=ge(f,\"DataView\"),V=ge(f,\"Map\"),q=ge(f,\"Promise\"),W=ge(f,\"Set\"),X=ge(f,\"WeakMap\"),K=ge(Object,\"create\"),Y=_e(H),Z=_e(V),G=_e(q),J=_e(W),Q=_e(X),ee=P?P.prototype:void 0,te=ee?ee.valueOf:void 0;function re(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function ne(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function ie(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function se(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new ie;++t<r;)this.add(e[t])}function oe(e){var t=this.__data__=new ne(e);this.size=t.size}function ae(e,t){var r=Se(e),n=!r&&ke(e),i=!r&&!n&&Me(e),s=!r&&!n&&!i&&Re(e),o=r||n||i||s,a=o?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],l=a.length;for(var c in e)!t&&!R.call(e,c)||o&&(\"length\"==c||i&&(\"offset\"==c||\"parent\"==c)||s&&(\"buffer\"==c||\"byteLength\"==c||\"byteOffset\"==c)||we(c,l))||a.push(c);return a}function le(e,t){for(var r=e.length;r--;)if(xe(e[r][0],t))return r;return-1}function ce(e){return null==e?void 0===e?\"[object Undefined]\":\"[object Null]\":L&&L in Object(e)?function(e){var t=R.call(e,L),r=e[L];try{e[L]=void 0;var n=!0}catch(e){}var i=j.call(e);n&&(t?e[L]=r:delete e[L]);return i}(e):function(e){return j.call(e)}(e)}function ue(e){return Ae(e)&&ce(e)==n}function he(e,t,r,a,l){return e===t||(null==e||null==t||!Ae(e)&&!Ae(t)?e!=e&&t!=t:function(e,t,r,a,l,c){var u=Se(e),h=Se(t),f=u?\"[object Array]\":ve(e),d=h?\"[object Array]\":ve(t),p=(f=f==n?s:f)==s,m=(d=d==n?s:d)==s,b=f==d;if(b&&Me(e)){if(!Me(t))return!1;u=!0,p=!1}if(b&&!p)return c||(c=new oe),u||Re(e)?pe(e,t,r,a,l,c):function(e,t,r,n,s,a,l){switch(r){case\"[object DataView]\":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case\"[object ArrayBuffer]\":return!(e.byteLength!=t.byteLength||!a(new B(e),new B(t)));case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return xe(+e,+t);case\"[object Error]\":return e.name==t.name&&e.message==t.message;case\"[object RegExp]\":case\"[object String]\":return e==t+\"\";case i:var c=w;case o:var u=1&n;if(c||(c=_),e.size!=t.size&&!u)return!1;var h=l.get(e);if(h)return h==t;n|=2,l.set(e,t);var f=pe(c(e),c(t),n,s,a,l);return l.delete(e),f;case\"[object Symbol]\":if(te)return te.call(e)==te.call(t)}return!1}(e,t,f,r,a,l,c);if(!(1&r)){var g=p&&R.call(e,\"__wrapped__\"),y=m&&R.call(t,\"__wrapped__\");if(g||y){var v=g?e.value():e,x=y?t.value():t;return c||(c=new oe),l(v,x,r,a,c)}}if(!b)return!1;return c||(c=new oe),function(e,t,r,n,i,s){var o=1&r,a=me(e),l=a.length,c=me(t).length;if(l!=c&&!o)return!1;var u=l;for(;u--;){var h=a[u];if(!(o?h in t:R.call(t,h)))return!1}var f=s.get(e);if(f&&s.get(t))return f==t;var d=!0;s.set(e,t),s.set(t,e);var p=o;for(;++u<l;){h=a[u];var m=e[h],b=t[h];if(n)var g=o?n(b,m,h,t,e,s):n(m,b,h,e,t,s);if(!(void 0===g?m===b||i(m,b,r,n,s):g)){d=!1;break}p||(p=\"constructor\"==h)}if(d&&!p){var y=e.constructor,v=t.constructor;y==v||!(\"constructor\"in e)||!(\"constructor\"in t)||\"function\"==typeof y&&y instanceof y&&\"function\"==typeof v&&v instanceof v||(d=!1)}return s.delete(e),s.delete(t),d}(e,t,r,a,l,c)}(e,t,r,a,he,l))}function fe(e){return!(!Ee(e)||function(e){return!!O&&O in e}(e))&&(Ce(e)?I:a).test(_e(e))}function de(e){if(r=(t=e)&&t.constructor,n=\"function\"==typeof r&&r.prototype||T,t!==n)return $(e);var t,r,n,i=[];for(var s in Object(e))R.call(e,s)&&\"constructor\"!=s&&i.push(s);return i}function pe(e,t,r,n,i,s){var o=1&r,a=e.length,l=t.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(e);if(c&&s.get(t))return c==t;var u=-1,h=!0,f=2&r?new se:void 0;for(s.set(e,t),s.set(t,e);++u<a;){var d=e[u],p=t[u];if(n)var m=o?n(p,d,u,t,e,s):n(d,p,u,e,t,s);if(void 0!==m){if(m)continue;h=!1;break}if(f){if(!v(t,(function(e,t){if(o=t,!f.has(o)&&(d===e||i(d,e,r,n,s)))return f.push(t);var o}))){h=!1;break}}else if(d!==p&&!i(d,p,r,n,s)){h=!1;break}}return s.delete(e),s.delete(t),h}function me(e){return function(e,t,r){var n=t(e);return Se(e)?n:function(e,t){for(var r=-1,n=t.length,i=e.length;++r<n;)e[i+r]=t[r];return e}(n,r(e))}(e,Oe,ye)}function be(e,t){var r,n,i=e.__data__;return(\"string\"==(n=typeof(r=t))||\"number\"==n||\"symbol\"==n||\"boolean\"==n?\"__proto__\"!==r:null===r)?i[\"string\"==typeof t?\"string\":\"hash\"]:i.map}function ge(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return fe(r)?r:void 0}re.prototype.clear=function(){this.__data__=K?K(null):{},this.size=0},re.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},re.prototype.get=function(e){var t=this.__data__;if(K){var r=t[e];return\"__lodash_hash_undefined__\"===r?void 0:r}return R.call(t,e)?t[e]:void 0},re.prototype.has=function(e){var t=this.__data__;return K?void 0!==t[e]:R.call(t,e)},re.prototype.set=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=K&&void 0===t?\"__lodash_hash_undefined__\":t,this},ne.prototype.clear=function(){this.__data__=[],this.size=0},ne.prototype.delete=function(e){var t=this.__data__,r=le(t,e);return!(r<0)&&(r==t.length-1?t.pop():F.call(t,r,1),--this.size,!0)},ne.prototype.get=function(e){var t=this.__data__,r=le(t,e);return r<0?void 0:t[r][1]},ne.prototype.has=function(e){return le(this.__data__,e)>-1},ne.prototype.set=function(e,t){var r=this.__data__,n=le(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this},ie.prototype.clear=function(){this.size=0,this.__data__={hash:new re,map:new(V||ne),string:new re}},ie.prototype.delete=function(e){var t=be(this,e).delete(e);return this.size-=t?1:0,t},ie.prototype.get=function(e){return be(this,e).get(e)},ie.prototype.has=function(e){return be(this,e).has(e)},ie.prototype.set=function(e,t){var r=be(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this},se.prototype.add=se.prototype.push=function(e){return this.__data__.set(e,\"__lodash_hash_undefined__\"),this},se.prototype.has=function(e){return this.__data__.has(e)},oe.prototype.clear=function(){this.__data__=new ne,this.size=0},oe.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},oe.prototype.get=function(e){return this.__data__.get(e)},oe.prototype.has=function(e){return this.__data__.has(e)},oe.prototype.set=function(e,t){var r=this.__data__;if(r instanceof ne){var n=r.__data__;if(!V||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new ie(n)}return r.set(e,t),this.size=r.size,this};var ye=z?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var r=-1,n=null==e?0:e.length,i=0,s=[];++r<n;){var o=e[r];t(o,r,e)&&(s[i++]=o)}return s}(z(e),(function(t){return D.call(e,t)})))}:function(){return[]},ve=ce;function we(e,t){return!!(t=null==t?9007199254740991:t)&&(\"number\"==typeof e||l.test(e))&&e>-1&&e%1==0&&e<t}function _e(e){if(null!=e){try{return A.call(e)}catch(e){}try{return e+\"\"}catch(e){}}return\"\"}function xe(e,t){return e===t||e!=e&&t!=t}(H&&\"[object DataView]\"!=ve(new H(new ArrayBuffer(1)))||V&&ve(new V)!=i||q&&\"[object Promise]\"!=ve(q.resolve())||W&&ve(new W)!=o||X&&\"[object WeakMap]\"!=ve(new X))&&(ve=function(e){var t=ce(e),r=t==s?e.constructor:void 0,n=r?_e(r):\"\";if(n)switch(n){case Y:return\"[object DataView]\";case Z:return i;case G:return\"[object Promise]\";case J:return o;case Q:return\"[object WeakMap]\"}return t});var ke=ue(function(){return arguments}())?ue:function(e){return Ae(e)&&R.call(e,\"callee\")&&!D.call(e,\"callee\")},Se=Array.isArray;var Me=U||function(){return!1};function Ce(e){if(!Ee(e))return!1;var t=ce(e);return\"[object Function]\"==t||\"[object GeneratorFunction]\"==t||\"[object AsyncFunction]\"==t||\"[object Proxy]\"==t}function Te(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Ee(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)}function Ae(e){return null!=e&&\"object\"==typeof e}var Re=y?function(e){return function(t){return e(t)}}(y):function(e){return Ae(e)&&Te(e.length)&&!!c[ce(e)]};function Oe(e){return null!=(t=e)&&Te(t.length)&&!Ce(t)?ae(e):de(e);var t}t.exports=function(e,t){return he(e,t)}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],446:[function(e,t,r){(function(e){(function(){\"use strict\";var r=\"object\"==typeof e&&e&&e.Object===Object&&e,n=\"object\"==typeof self&&self&&self.Object===Object&&self,i=r||n||Function(\"return this\")(),s=Object.prototype,o=s.hasOwnProperty,a=s.toString,l=i.Symbol,c=l?l.toStringTag:void 0;function u(e){return null==e?void 0===e?\"[object Undefined]\":\"[object Null]\":c&&c in Object(e)?function(e){var t=o.call(e,c),r=e[c];try{e[c]=void 0;var n=!0}catch(e){}var i=a.call(e);n&&(t?e[c]=r:delete e[c]);return i}(e):function(e){return a.call(e)}(e)}t.exports=function(e){if(!function(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)}(e))return!1;var t=u(e);return\"[object Function]\"==t||\"[object GeneratorFunction]\"==t||\"[object AsyncFunction]\"==t||\"[object Proxy]\"==t}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],447:[function(e,t,r){\"use strict\";t.exports=function(e){return null==e}},{}],448:[function(e,t,r){\"use strict\";t.exports=function(e){return void 0===e}},{}],449:[function(e,t,r){(function(e){(function(){\"use strict\";var r=/^\\[object .+?Constructor\\]$/,n=\"object\"==typeof e&&e&&e.Object===Object&&e,i=\"object\"==typeof self&&self&&self.Object===Object&&self,s=n||i||Function(\"return this\")();function o(e,t){return!!(e?e.length:0)&&function(e,t,r){if(t!=t)return function(e,t,r,n){var i=e.length,s=r+(n?1:-1);for(;n?s--:++s<i;)if(t(e[s],s,e))return s;return-1}(e,l,r);var n=r-1,i=e.length;for(;++n<i;)if(e[n]===t)return n;return-1}(e,t,0)>-1}function a(e,t,r){for(var n=-1,i=e?e.length:0;++n<i;)if(r(t,e[n]))return!0;return!1}function l(e){return e!=e}function c(e,t){return e.has(t)}function u(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}var h,f=Array.prototype,d=Function.prototype,p=Object.prototype,m=s[\"__core-js_shared__\"],b=(h=/[^.]+$/.exec(m&&m.keys&&m.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+h:\"\",g=d.toString,y=p.hasOwnProperty,v=p.toString,w=RegExp(\"^\"+g.call(y).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),_=f.splice,x=I(s,\"Map\"),k=I(s,\"Set\"),S=I(Object,\"create\");function M(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function C(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function T(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function E(e){var t=-1,r=e?e.length:0;for(this.__data__=new T;++t<r;)this.add(e[t])}function A(e,t){for(var r,n,i=e.length;i--;)if((r=e[i][0])===(n=t)||r!=r&&n!=n)return i;return-1}function R(e){return!(!N(e)||(t=e,b&&b in t))&&(function(e){var t=N(e)?v.call(e):\"\";return\"[object Function]\"==t||\"[object GeneratorFunction]\"==t}(e)||function(e){var t=!1;if(null!=e&&\"function\"!=typeof e.toString)try{t=!!(e+\"\")}catch(e){}return t}(e)?w:r).test(function(e){if(null!=e){try{return g.call(e)}catch(e){}try{return e+\"\"}catch(e){}}return\"\"}(e));var t}M.prototype.clear=function(){this.__data__=S?S(null):{}},M.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},M.prototype.get=function(e){var t=this.__data__;if(S){var r=t[e];return\"__lodash_hash_undefined__\"===r?void 0:r}return y.call(t,e)?t[e]:void 0},M.prototype.has=function(e){var t=this.__data__;return S?void 0!==t[e]:y.call(t,e)},M.prototype.set=function(e,t){return this.__data__[e]=S&&void 0===t?\"__lodash_hash_undefined__\":t,this},C.prototype.clear=function(){this.__data__=[]},C.prototype.delete=function(e){var t=this.__data__,r=A(t,e);return!(r<0)&&(r==t.length-1?t.pop():_.call(t,r,1),!0)},C.prototype.get=function(e){var t=this.__data__,r=A(t,e);return r<0?void 0:t[r][1]},C.prototype.has=function(e){return A(this.__data__,e)>-1},C.prototype.set=function(e,t){var r=this.__data__,n=A(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},T.prototype.clear=function(){this.__data__={hash:new M,map:new(x||C),string:new M}},T.prototype.delete=function(e){return j(this,e).delete(e)},T.prototype.get=function(e){return j(this,e).get(e)},T.prototype.has=function(e){return j(this,e).has(e)},T.prototype.set=function(e,t){return j(this,e).set(e,t),this},E.prototype.add=E.prototype.push=function(e){return this.__data__.set(e,\"__lodash_hash_undefined__\"),this},E.prototype.has=function(e){return this.__data__.has(e)};var O=k&&1/u(new k([,-0]))[1]==1/0?function(e){return new k(e)}:function(){};function j(e,t){var r,n,i=e.__data__;return(\"string\"==(n=typeof(r=t))||\"number\"==n||\"symbol\"==n||\"boolean\"==n?\"__proto__\"!==r:null===r)?i[\"string\"==typeof t?\"string\":\"hash\"]:i.map}function I(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return R(r)?r:void 0}function N(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}t.exports=function(e){return e&&e.length?function(e,t,r){var n=-1,i=o,s=e.length,l=!0,h=[],f=h;if(r)l=!1,i=a;else if(s>=200){var d=t?null:O(e);if(d)return u(d);l=!1,i=c,f=new E}else f=t?[]:h;e:for(;++n<s;){var p=e[n],m=t?t(p):p;if(p=r||0!==p?p:0,l&&m==m){for(var b=f.length;b--;)if(f[b]===m)continue e;t&&f.push(m),h.push(p)}else i(f,m,r)||(f!==h&&f.push(m),h.push(p))}return h}(e):[]}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],450:[function(e,t,r){\"use strict\";var n=e(\"inherits\"),i=e(\"hash-base\"),s=e(\"safe-buffer\").Buffer,o=new Array(16);function a(){i.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function l(e,t){return e<<t|e>>>32-t}function c(e,t,r,n,i,s,o){return l(e+(t&r|~t&n)+i+s|0,o)+t|0}function u(e,t,r,n,i,s,o){return l(e+(t&n|r&~n)+i+s|0,o)+t|0}function h(e,t,r,n,i,s,o){return l(e+(t^r^n)+i+s|0,o)+t|0}function f(e,t,r,n,i,s,o){return l(e+(r^(t|~n))+i+s|0,o)+t|0}n(a,i),a.prototype._update=function(){for(var e=o,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,s=this._d;r=c(r,n,i,s,e[0],3614090360,7),s=c(s,r,n,i,e[1],3905402710,12),i=c(i,s,r,n,e[2],606105819,17),n=c(n,i,s,r,e[3],3250441966,22),r=c(r,n,i,s,e[4],4118548399,7),s=c(s,r,n,i,e[5],1200080426,12),i=c(i,s,r,n,e[6],2821735955,17),n=c(n,i,s,r,e[7],4249261313,22),r=c(r,n,i,s,e[8],1770035416,7),s=c(s,r,n,i,e[9],2336552879,12),i=c(i,s,r,n,e[10],4294925233,17),n=c(n,i,s,r,e[11],2304563134,22),r=c(r,n,i,s,e[12],1804603682,7),s=c(s,r,n,i,e[13],4254626195,12),i=c(i,s,r,n,e[14],2792965006,17),r=u(r,n=c(n,i,s,r,e[15],1236535329,22),i,s,e[1],4129170786,5),s=u(s,r,n,i,e[6],3225465664,9),i=u(i,s,r,n,e[11],643717713,14),n=u(n,i,s,r,e[0],3921069994,20),r=u(r,n,i,s,e[5],3593408605,5),s=u(s,r,n,i,e[10],38016083,9),i=u(i,s,r,n,e[15],3634488961,14),n=u(n,i,s,r,e[4],3889429448,20),r=u(r,n,i,s,e[9],568446438,5),s=u(s,r,n,i,e[14],3275163606,9),i=u(i,s,r,n,e[3],4107603335,14),n=u(n,i,s,r,e[8],1163531501,20),r=u(r,n,i,s,e[13],2850285829,5),s=u(s,r,n,i,e[2],4243563512,9),i=u(i,s,r,n,e[7],1735328473,14),r=h(r,n=u(n,i,s,r,e[12],2368359562,20),i,s,e[5],4294588738,4),s=h(s,r,n,i,e[8],2272392833,11),i=h(i,s,r,n,e[11],1839030562,16),n=h(n,i,s,r,e[14],4259657740,23),r=h(r,n,i,s,e[1],2763975236,4),s=h(s,r,n,i,e[4],1272893353,11),i=h(i,s,r,n,e[7],4139469664,16),n=h(n,i,s,r,e[10],3200236656,23),r=h(r,n,i,s,e[13],681279174,4),s=h(s,r,n,i,e[0],3936430074,11),i=h(i,s,r,n,e[3],3572445317,16),n=h(n,i,s,r,e[6],76029189,23),r=h(r,n,i,s,e[9],3654602809,4),s=h(s,r,n,i,e[12],3873151461,11),i=h(i,s,r,n,e[15],530742520,16),r=f(r,n=h(n,i,s,r,e[2],3299628645,23),i,s,e[0],4096336452,6),s=f(s,r,n,i,e[7],1126891415,10),i=f(i,s,r,n,e[14],2878612391,15),n=f(n,i,s,r,e[5],4237533241,21),r=f(r,n,i,s,e[12],1700485571,6),s=f(s,r,n,i,e[3],2399980690,10),i=f(i,s,r,n,e[10],4293915773,15),n=f(n,i,s,r,e[1],2240044497,21),r=f(r,n,i,s,e[8],1873313359,6),s=f(s,r,n,i,e[15],4264355552,10),i=f(i,s,r,n,e[6],2734768916,15),n=f(n,i,s,r,e[13],1309151649,21),r=f(r,n,i,s,e[4],4149444226,6),s=f(s,r,n,i,e[11],3174756917,10),i=f(i,s,r,n,e[2],718787259,15),n=f(n,i,s,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+s|0},a.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=s.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},t.exports=a},{\"hash-base\":425,inherits:440,\"safe-buffer\":494}],451:[function(e,t,r){\"use strict\";var n=e(\"bn.js\"),i=e(\"brorand\");function s(e){this.rand=e||new i.Rand}t.exports=s,s.create=function(e){return new s(e)},s.prototype._randbelow=function(e){var t=e.bitLength(),r=Math.ceil(t/8);do{var i=new n(this.rand.generate(r))}while(i.cmp(e)>=0);return i},s.prototype._randrange=function(e,t){var r=t.sub(e);return e.add(this._randbelow(r))},s.prototype.test=function(e,t,r){var i=e.bitLength(),s=n.mont(e),o=new n(1).toRed(s);t||(t=Math.max(1,i/48|0));for(var a=e.subn(1),l=0;!a.testn(l);l++);for(var c=e.shrn(l),u=a.toRed(s);t>0;t--){var h=this._randrange(new n(2),a);r&&r(h);var f=h.toRed(s).redPow(c);if(0!==f.cmp(o)&&0!==f.cmp(u)){for(var d=1;d<l;d++){if(0===(f=f.redSqr()).cmp(o))return!1;if(0===f.cmp(u))break}if(d===l)return!1}}return!0},s.prototype.getDivisor=function(e,t){var r=e.bitLength(),i=n.mont(e),s=new n(1).toRed(i);t||(t=Math.max(1,r/48|0));for(var o=e.subn(1),a=0;!o.testn(a);a++);for(var l=e.shrn(a),c=o.toRed(i);t>0;t--){var u=this._randrange(new n(2),o),h=e.gcd(u);if(0!==h.cmpn(1))return h;var f=u.toRed(i).redPow(l);if(0!==f.cmp(s)&&0!==f.cmp(c)){for(var d=1;d<a;d++){if(0===(f=f.redSqr()).cmp(s))return f.fromRed().subn(1).gcd(e);if(0===f.cmp(c))break}if(d===a)return(f=f.redSqr()).fromRed().subn(1).gcd(e)}}return!1}},{\"bn.js\":452,brorand:187}],452:[function(e,t,r){arguments[4][184][0].apply(r,arguments)},{buffer:188,dup:184}],453:[function(e,t,r){\"use strict\";function n(e,t){if(!e)throw new Error(t||\"Assertion failed\")}t.exports=n,n.equal=function(e,t,r){if(e!=t)throw new Error(r||\"Assertion failed: \"+e+\" != \"+t)}},{}],454:[function(e,t,r){\"use strict\";var n=r;function i(e){return 1===e.length?\"0\"+e:e}function s(e){for(var t=\"\",r=0;r<e.length;r++)t+=i(e[r].toString(16));return t}n.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(\"string\"!=typeof e){for(var n=0;n<e.length;n++)r[n]=0|e[n];return r}if(\"hex\"===t){(e=e.replace(/[^a-z0-9]+/gi,\"\")).length%2!=0&&(e=\"0\"+e);for(n=0;n<e.length;n+=2)r.push(parseInt(e[n]+e[n+1],16))}else for(n=0;n<e.length;n++){var i=e.charCodeAt(n),s=i>>8,o=255&i;s?r.push(s,o):r.push(o)}return r},n.zero2=i,n.toHex=s,n.encode=function(e,t){return\"hex\"===t?s(e):e}},{}],455:[function(e,t,r){t.exports={\"2.16.840.1.101.3.4.1.1\":\"aes-128-ecb\",\"2.16.840.1.101.3.4.1.2\":\"aes-128-cbc\",\"2.16.840.1.101.3.4.1.3\":\"aes-128-ofb\",\"2.16.840.1.101.3.4.1.4\":\"aes-128-cfb\",\"2.16.840.1.101.3.4.1.21\":\"aes-192-ecb\",\"2.16.840.1.101.3.4.1.22\":\"aes-192-cbc\",\"2.16.840.1.101.3.4.1.23\":\"aes-192-ofb\",\"2.16.840.1.101.3.4.1.24\":\"aes-192-cfb\",\"2.16.840.1.101.3.4.1.41\":\"aes-256-ecb\",\"2.16.840.1.101.3.4.1.42\":\"aes-256-cbc\",\"2.16.840.1.101.3.4.1.43\":\"aes-256-ofb\",\"2.16.840.1.101.3.4.1.44\":\"aes-256-cfb\"}},{}],456:[function(e,t,r){\"use strict\";var n=e(\"asn1.js\");r.certificate=e(\"./certificate\");var i=n.define(\"RSAPrivateKey\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"modulus\").int(),this.key(\"publicExponent\").int(),this.key(\"privateExponent\").int(),this.key(\"prime1\").int(),this.key(\"prime2\").int(),this.key(\"exponent1\").int(),this.key(\"exponent2\").int(),this.key(\"coefficient\").int())}));r.RSAPrivateKey=i;var s=n.define(\"RSAPublicKey\",(function(){this.seq().obj(this.key(\"modulus\").int(),this.key(\"publicExponent\").int())}));r.RSAPublicKey=s;var o=n.define(\"SubjectPublicKeyInfo\",(function(){this.seq().obj(this.key(\"algorithm\").use(a),this.key(\"subjectPublicKey\").bitstr())}));r.PublicKey=o;var a=n.define(\"AlgorithmIdentifier\",(function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"none\").null_().optional(),this.key(\"curve\").objid().optional(),this.key(\"params\").seq().obj(this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int()).optional())})),l=n.define(\"PrivateKeyInfo\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"algorithm\").use(a),this.key(\"subjectPrivateKey\").octstr())}));r.PrivateKey=l;var c=n.define(\"EncryptedPrivateKeyInfo\",(function(){this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(),this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(),this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(),this.key(\"iters\").int())),this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(),this.key(\"iv\").octstr()))),this.key(\"subjectPrivateKey\").octstr())}));r.EncryptedPrivateKey=c;var u=n.define(\"DSAPrivateKey\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int(),this.key(\"pub_key\").int(),this.key(\"priv_key\").int())}));r.DSAPrivateKey=u,r.DSAparam=n.define(\"DSAparam\",(function(){this.int()}));var h=n.define(\"ECPrivateKey\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"privateKey\").octstr(),this.key(\"parameters\").optional().explicit(0).use(f),this.key(\"publicKey\").optional().explicit(1).bitstr())}));r.ECPrivateKey=h;var f=n.define(\"ECParameters\",(function(){this.choice({namedCurve:this.objid()})}));r.signature=n.define(\"signature\",(function(){this.seq().obj(this.key(\"r\").int(),this.key(\"s\").int())}))},{\"./certificate\":457,\"asn1.js\":170}],457:[function(e,t,r){\"use strict\";var n=e(\"asn1.js\"),i=n.define(\"Time\",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),s=n.define(\"AttributeTypeValue\",(function(){this.seq().obj(this.key(\"type\").objid(),this.key(\"value\").any())})),o=n.define(\"AlgorithmIdentifier\",(function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"parameters\").optional(),this.key(\"curve\").objid().optional())})),a=n.define(\"SubjectPublicKeyInfo\",(function(){this.seq().obj(this.key(\"algorithm\").use(o),this.key(\"subjectPublicKey\").bitstr())})),l=n.define(\"RelativeDistinguishedName\",(function(){this.setof(s)})),c=n.define(\"RDNSequence\",(function(){this.seqof(l)})),u=n.define(\"Name\",(function(){this.choice({rdnSequence:this.use(c)})})),h=n.define(\"Validity\",(function(){this.seq().obj(this.key(\"notBefore\").use(i),this.key(\"notAfter\").use(i))})),f=n.define(\"Extension\",(function(){this.seq().obj(this.key(\"extnID\").objid(),this.key(\"critical\").bool().def(!1),this.key(\"extnValue\").octstr())})),d=n.define(\"TBSCertificate\",(function(){this.seq().obj(this.key(\"version\").explicit(0).int().optional(),this.key(\"serialNumber\").int(),this.key(\"signature\").use(o),this.key(\"issuer\").use(u),this.key(\"validity\").use(h),this.key(\"subject\").use(u),this.key(\"subjectPublicKeyInfo\").use(a),this.key(\"issuerUniqueID\").implicit(1).bitstr().optional(),this.key(\"subjectUniqueID\").implicit(2).bitstr().optional(),this.key(\"extensions\").explicit(3).seqof(f).optional())})),p=n.define(\"X509Certificate\",(function(){this.seq().obj(this.key(\"tbsCertificate\").use(d),this.key(\"signatureAlgorithm\").use(o),this.key(\"signatureValue\").bitstr())}));t.exports=p},{\"asn1.js\":170}],458:[function(e,t,r){\"use strict\";var n=/Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m,i=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,s=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m,o=e(\"evp_bytestokey\"),a=e(\"browserify-aes\"),l=e(\"safe-buffer\").Buffer;t.exports=function(e,t){var r,c=e.toString(),u=c.match(n);if(u){var h=\"aes\"+u[1],f=l.from(u[2],\"hex\"),d=l.from(u[3].replace(/[\\r\\n]/g,\"\"),\"base64\"),p=o(t,f.slice(0,8),parseInt(u[1],10)).key,m=[],b=a.createDecipheriv(h,p,f);m.push(b.update(d)),m.push(b.final()),r=l.concat(m)}else{var g=c.match(s);r=l.from(g[2].replace(/[\\r\\n]/g,\"\"),\"base64\")}return{tag:c.match(i)[1],data:r}}},{\"browserify-aes\":191,evp_bytestokey:423,\"safe-buffer\":494}],459:[function(e,t,r){\"use strict\";var n=e(\"./asn1\"),i=e(\"./aesid.json\"),s=e(\"./fixProc\"),o=e(\"browserify-aes\"),a=e(\"pbkdf2\"),l=e(\"safe-buffer\").Buffer;function c(e){var t;\"object\"!=typeof e||l.isBuffer(e)||(t=e.passphrase,e=e.key),\"string\"==typeof e&&(e=l.from(e));var r,c,u=s(e,t),h=u.tag,f=u.data;switch(h){case\"CERTIFICATE\":c=n.certificate.decode(f,\"der\").tbsCertificate.subjectPublicKeyInfo;case\"PUBLIC KEY\":switch(c||(c=n.PublicKey.decode(f,\"der\")),r=c.algorithm.algorithm.join(\".\")){case\"1.2.840.113549.1.1.1\":return n.RSAPublicKey.decode(c.subjectPublicKey.data,\"der\");case\"1.2.840.10045.2.1\":return c.subjectPrivateKey=c.subjectPublicKey,{type:\"ec\",data:c};case\"1.2.840.10040.4.1\":return c.algorithm.params.pub_key=n.DSAparam.decode(c.subjectPublicKey.data,\"der\"),{type:\"dsa\",data:c.algorithm.params};default:throw new Error(\"unknown key id \"+r)}case\"ENCRYPTED PRIVATE KEY\":f=function(e,t){var r=e.algorithm.decrypt.kde.kdeparams.salt,n=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),s=i[e.algorithm.decrypt.cipher.algo.join(\".\")],c=e.algorithm.decrypt.cipher.iv,u=e.subjectPrivateKey,h=parseInt(s.split(\"-\")[1],10)/8,f=a.pbkdf2Sync(t,r,n,h,\"sha1\"),d=o.createDecipheriv(s,f,c),p=[];return p.push(d.update(u)),p.push(d.final()),l.concat(p)}(f=n.EncryptedPrivateKey.decode(f,\"der\"),t);case\"PRIVATE KEY\":switch(r=(c=n.PrivateKey.decode(f,\"der\")).algorithm.algorithm.join(\".\")){case\"1.2.840.113549.1.1.1\":return n.RSAPrivateKey.decode(c.subjectPrivateKey,\"der\");case\"1.2.840.10045.2.1\":return{curve:c.algorithm.curve,privateKey:n.ECPrivateKey.decode(c.subjectPrivateKey,\"der\").privateKey};case\"1.2.840.10040.4.1\":return c.algorithm.params.priv_key=n.DSAparam.decode(c.subjectPrivateKey,\"der\"),{type:\"dsa\",params:c.algorithm.params};default:throw new Error(\"unknown key id \"+r)}case\"RSA PUBLIC KEY\":return n.RSAPublicKey.decode(f,\"der\");case\"RSA PRIVATE KEY\":return n.RSAPrivateKey.decode(f,\"der\");case\"DSA PRIVATE KEY\":return{type:\"dsa\",params:n.DSAPrivateKey.decode(f,\"der\")};case\"EC PRIVATE KEY\":return{curve:(f=n.ECPrivateKey.decode(f,\"der\")).parameters.value,privateKey:f.privateKey};default:throw new Error(\"unknown key type \"+h)}}t.exports=c,c.signature=n.signature},{\"./aesid.json\":455,\"./asn1\":456,\"./fixProc\":458,\"browserify-aes\":191,pbkdf2:460,\"safe-buffer\":494}],460:[function(e,t,r){\"use strict\";r.pbkdf2=e(\"./lib/async\"),r.pbkdf2Sync=e(\"./lib/sync\")},{\"./lib/async\":461,\"./lib/sync\":464}],461:[function(e,t,r){(function(r){(function(){\"use strict\";var n,i,s=e(\"safe-buffer\").Buffer,o=e(\"./precondition\"),a=e(\"./default-encoding\"),l=e(\"./sync\"),c=e(\"./to-buffer\"),u=r.crypto&&r.crypto.subtle,h={sha:\"SHA-1\",\"sha-1\":\"SHA-1\",sha1:\"SHA-1\",sha256:\"SHA-256\",\"sha-256\":\"SHA-256\",sha384:\"SHA-384\",\"sha-384\":\"SHA-384\",\"sha-512\":\"SHA-512\",sha512:\"SHA-512\"},f=[];function d(){return i||(i=r.process&&r.process.nextTick?r.process.nextTick:r.queueMicrotask?r.queueMicrotask:r.setImmediate?r.setImmediate:r.setTimeout)}function p(e,t,r,n,i){return u.importKey(\"raw\",e,{name:\"PBKDF2\"},!1,[\"deriveBits\"]).then((function(e){return u.deriveBits({name:\"PBKDF2\",salt:t,iterations:r,hash:{name:i}},e,n<<3)})).then((function(e){return s.from(e)}))}t.exports=function(e,t,i,m,b,g){\"function\"==typeof b&&(g=b,b=void 0);var y=h[(b=b||\"sha1\").toLowerCase()];if(y&&\"function\"==typeof r.Promise){if(o(i,m),e=c(e,a,\"Password\"),t=c(t,a,\"Salt\"),\"function\"!=typeof g)throw new Error(\"No callback provided to pbkdf2\");!function(e,t){e.then((function(e){d()((function(){t(null,e)}))}),(function(e){d()((function(){t(e)}))}))}(function(e){if(r.process&&!r.process.browser)return Promise.resolve(!1);if(!u||!u.importKey||!u.deriveBits)return Promise.resolve(!1);if(void 0!==f[e])return f[e];var t=p(n=n||s.alloc(8),n,10,128,e).then((function(){return!0})).catch((function(){return!1}));return f[e]=t,t}(y).then((function(r){return r?p(e,t,i,m,y):l(e,t,i,m,b)})),g)}else d()((function(){var r;try{r=l(e,t,i,m,b)}catch(e){return g(e)}g(null,r)}))}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./default-encoding\":462,\"./precondition\":463,\"./sync\":464,\"./to-buffer\":465,\"safe-buffer\":494}],462:[function(e,t,r){(function(e,r){(function(){\"use strict\";var n;if(r.process&&r.process.browser)n=\"utf-8\";else if(r.process&&r.process.version){n=parseInt(e.version.split(\".\")[0].slice(1),10)>=6?\"utf-8\":\"binary\"}else n=\"utf-8\";t.exports=n}).call(this)}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{_process:467}],463:[function(e,t,r){\"use strict\";var n=Math.pow(2,30)-1;t.exports=function(e,t){if(\"number\"!=typeof e)throw new TypeError(\"Iterations not a number\");if(e<0)throw new TypeError(\"Bad iterations\");if(\"number\"!=typeof t)throw new TypeError(\"Key length not a number\");if(t<0||t>n||t!=t)throw new TypeError(\"Bad key length\")}},{}],464:[function(e,t,r){\"use strict\";var n=e(\"create-hash/md5\"),i=e(\"ripemd160\"),s=e(\"sha.js\"),o=e(\"safe-buffer\").Buffer,a=e(\"./precondition\"),l=e(\"./default-encoding\"),c=e(\"./to-buffer\"),u=o.alloc(128),h={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function f(e,t,r){var a=function(e){function t(t){return s(e).update(t).digest()}return\"rmd160\"===e||\"ripemd160\"===e?function(e){return(new i).update(e).digest()}:\"md5\"===e?n:t}(e),l=\"sha512\"===e||\"sha384\"===e?128:64;t.length>l?t=a(t):t.length<l&&(t=o.concat([t,u],l));for(var c=o.allocUnsafe(l+h[e]),f=o.allocUnsafe(l+h[e]),d=0;d<l;d++)c[d]=54^t[d],f[d]=92^t[d];var p=o.allocUnsafe(l+r+4);c.copy(p,0,0,l),this.ipad1=p,this.ipad2=c,this.opad=f,this.alg=e,this.blocksize=l,this.hash=a,this.size=h[e]}f.prototype.run=function(e,t){return e.copy(t,this.blocksize),this.hash(t).copy(this.opad,this.blocksize),this.hash(this.opad)},t.exports=function(e,t,r,n,i){a(r,n);var s=new f(i=i||\"sha1\",e=c(e,l,\"Password\"),(t=c(t,l,\"Salt\")).length),u=o.allocUnsafe(n),d=o.allocUnsafe(t.length+4);t.copy(d,0,0,t.length);for(var p=0,m=h[i],b=Math.ceil(n/m),g=1;g<=b;g++){d.writeUInt32BE(g,t.length);for(var y=s.run(d,s.ipad1),v=y,w=1;w<r;w++){v=s.run(v,s.ipad2);for(var _=0;_<m;_++)y[_]^=v[_]}y.copy(u,p),p+=m}return u}},{\"./default-encoding\":462,\"./precondition\":463,\"./to-buffer\":465,\"create-hash/md5\":387,ripemd160:493,\"safe-buffer\":494,\"sha.js\":498}],465:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer;t.exports=function(e,t,r){if(n.isBuffer(e))return e;if(\"string\"==typeof e)return n.from(e,t);if(ArrayBuffer.isView(e))return n.from(e.buffer);throw new TypeError(r+\" must be a string, a Buffer, a typed array or a DataView\")}},{\"safe-buffer\":494}],466:[function(e,t,r){(function(e){(function(){\"use strict\";void 0===e||!e.version||0===e.version.indexOf(\"v0.\")||0===e.version.indexOf(\"v1.\")&&0!==e.version.indexOf(\"v1.8.\")?t.exports={nextTick:function(t,r,n,i){if(\"function\"!=typeof t)throw new TypeError('\"callback\" argument must be a function');var s,o,a=arguments.length;switch(a){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick((function(){t.call(null,r)}));case 3:return e.nextTick((function(){t.call(null,r,n)}));case 4:return e.nextTick((function(){t.call(null,r,n,i)}));default:for(s=new Array(a-1),o=0;o<s.length;)s[o++]=arguments[o];return e.nextTick((function(){t.apply(null,s)}))}}}:t.exports=e}).call(this)}).call(this,e(\"_process\"))},{_process:467}],467:[function(e,t,r){\"use strict\";var n,i,s=t.exports={};function o(){throw new Error(\"setTimeout has not been defined\")}function a(){throw new Error(\"clearTimeout has not been defined\")}function l(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n=\"function\"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{i=\"function\"==typeof clearTimeout?clearTimeout:a}catch(e){i=a}}();var c,u=[],h=!1,f=-1;function d(){h&&c&&(h=!1,c.length?u=c.concat(u):f=-1,u.length&&p())}function p(){if(!h){var e=l(d);h=!0;for(var t=u.length;t;){for(c=u,u=[];++f<t;)c&&c[f].run();f=-1,t=u.length}c=null,h=!1,function(e){if(i===clearTimeout)return clearTimeout(e);if((i===a||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(e);try{i(e)}catch(t){try{return i.call(null,e)}catch(t){return i.call(this,e)}}}(e)}}function m(e,t){this.fun=e,this.array=t}function b(){}s.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];u.push(new m(e,t)),1!==u.length||h||l(p)},m.prototype.run=function(){this.fun.apply(null,this.array)},s.title=\"browser\",s.browser=!0,s.env={},s.argv=[],s.version=\"\",s.versions={},s.on=b,s.addListener=b,s.once=b,s.off=b,s.removeListener=b,s.removeAllListeners=b,s.emit=b,s.prependListener=b,s.prependOnceListener=b,s.listeners=function(e){return[]},s.binding=function(e){throw new Error(\"process.binding is not supported\")},s.cwd=function(){return\"/\"},s.chdir=function(e){throw new Error(\"process.chdir is not supported\")},s.umask=function(){return 0}},{}],468:[function(e,t,r){\"use strict\";r.publicEncrypt=e(\"./publicEncrypt\"),r.privateDecrypt=e(\"./privateDecrypt\"),r.privateEncrypt=function(e,t){return r.publicEncrypt(e,t,!0)},r.publicDecrypt=function(e,t){return r.privateDecrypt(e,t,!0)}},{\"./privateDecrypt\":471,\"./publicEncrypt\":472}],469:[function(e,t,r){\"use strict\";var n=e(\"create-hash\"),i=e(\"safe-buffer\").Buffer;function s(e){var t=i.allocUnsafe(4);return t.writeUInt32BE(e,0),t}t.exports=function(e,t){for(var r,o=i.alloc(0),a=0;o.length<t;)r=s(a++),o=i.concat([o,n(\"sha1\").update(e).update(r).digest()]);return o.slice(0,t)}},{\"create-hash\":386,\"safe-buffer\":494}],470:[function(e,t,r){arguments[4][184][0].apply(r,arguments)},{buffer:188,dup:184}],471:[function(e,t,r){\"use strict\";var n=e(\"parse-asn1\"),i=e(\"./mgf\"),s=e(\"./xor\"),o=e(\"bn.js\"),a=e(\"browserify-rsa\"),l=e(\"create-hash\"),c=e(\"./withPublic\"),u=e(\"safe-buffer\").Buffer;t.exports=function(e,t,r){var h;h=e.padding?e.padding:r?1:4;var f,d=n(e),p=d.modulus.byteLength();if(t.length>p||new o(t).cmp(d.modulus)>=0)throw new Error(\"decryption error\");f=r?c(new o(t),d):a(t,d);var m=u.alloc(p-f.length);if(f=u.concat([m,f],p),4===h)return function(e,t){var r=e.modulus.byteLength(),n=l(\"sha1\").update(u.alloc(0)).digest(),o=n.length;if(0!==t[0])throw new Error(\"decryption error\");var a=t.slice(1,o+1),c=t.slice(o+1),h=s(a,i(c,o)),f=s(c,i(h,r-o-1));if(function(e,t){e=u.from(e),t=u.from(t);var r=0,n=e.length;e.length!==t.length&&(r++,n=Math.min(e.length,t.length));var i=-1;for(;++i<n;)r+=e[i]^t[i];return r}(n,f.slice(0,o)))throw new Error(\"decryption error\");var d=o;for(;0===f[d];)d++;if(1!==f[d++])throw new Error(\"decryption error\");return f.slice(d)}(d,f);if(1===h)return function(e,t,r){var n=t.slice(0,2),i=2,s=0;for(;0!==t[i++];)if(i>=t.length){s++;break}var o=t.slice(2,i-1);(\"0002\"!==n.toString(\"hex\")&&!r||\"0001\"!==n.toString(\"hex\")&&r)&&s++;o.length<8&&s++;if(s)throw new Error(\"decryption error\");return t.slice(i)}(0,f,r);if(3===h)return f;throw new Error(\"unknown padding\")}},{\"./mgf\":469,\"./withPublic\":473,\"./xor\":474,\"bn.js\":470,\"browserify-rsa\":209,\"create-hash\":386,\"parse-asn1\":459,\"safe-buffer\":494}],472:[function(e,t,r){\"use strict\";var n=e(\"parse-asn1\"),i=e(\"randombytes\"),s=e(\"create-hash\"),o=e(\"./mgf\"),a=e(\"./xor\"),l=e(\"bn.js\"),c=e(\"./withPublic\"),u=e(\"browserify-rsa\"),h=e(\"safe-buffer\").Buffer;t.exports=function(e,t,r){var f;f=e.padding?e.padding:r?1:4;var d,p=n(e);if(4===f)d=function(e,t){var r=e.modulus.byteLength(),n=t.length,c=s(\"sha1\").update(h.alloc(0)).digest(),u=c.length,f=2*u;if(n>r-f-2)throw new Error(\"message too long\");var d=h.alloc(r-n-f-2),p=r-u-1,m=i(u),b=a(h.concat([c,d,h.alloc(1,1),t],p),o(m,p)),g=a(m,o(b,u));return new l(h.concat([h.alloc(1),g,b],r))}(p,t);else if(1===f)d=function(e,t,r){var n,s=t.length,o=e.modulus.byteLength();if(s>o-11)throw new Error(\"message too long\");n=r?h.alloc(o-s-3,255):function(e){var t,r=h.allocUnsafe(e),n=0,s=i(2*e),o=0;for(;n<e;)o===s.length&&(s=i(2*e),o=0),(t=s[o++])&&(r[n++]=t);return r}(o-s-3);return new l(h.concat([h.from([0,r?1:2]),n,h.alloc(1),t],o))}(p,t,r);else{if(3!==f)throw new Error(\"unknown padding\");if((d=new l(t)).cmp(p.modulus)>=0)throw new Error(\"data too long for modulus\")}return r?u(d,p):c(d,p)}},{\"./mgf\":469,\"./withPublic\":473,\"./xor\":474,\"bn.js\":470,\"browserify-rsa\":209,\"create-hash\":386,\"parse-asn1\":459,randombytes:475,\"safe-buffer\":494}],473:[function(e,t,r){\"use strict\";var n=e(\"bn.js\"),i=e(\"safe-buffer\").Buffer;t.exports=function(e,t){return i.from(e.toRed(n.mont(t.modulus)).redPow(new n(t.publicExponent)).fromRed().toArray())}},{\"bn.js\":470,\"safe-buffer\":494}],474:[function(e,t,r){\"use strict\";t.exports=function(e,t){for(var r=e.length,n=-1;++n<r;)e[n]^=t[n];return e}},{}],475:[function(e,t,r){(function(r,n){(function(){\"use strict\";var i=e(\"safe-buffer\").Buffer,s=n.crypto||n.msCrypto;s&&s.getRandomValues?t.exports=function(e,t){if(e>4294967295)throw new RangeError(\"requested too many random bytes\");var n=i.allocUnsafe(e);if(e>0)if(e>65536)for(var o=0;o<e;o+=65536)s.getRandomValues(n.slice(o,o+65536));else s.getRandomValues(n);if(\"function\"==typeof t)return r.nextTick((function(){t(null,n)}));return n}:t.exports=function(){throw new Error(\"Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11\")}}).call(this)}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{_process:467,\"safe-buffer\":494}],476:[function(e,t,r){(function(t,n){(function(){\"use strict\";function i(){throw new Error(\"secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11\")}var s=e(\"safe-buffer\"),o=e(\"randombytes\"),a=s.Buffer,l=s.kMaxLength,c=n.crypto||n.msCrypto,u=Math.pow(2,32)-1;function h(e,t){if(\"number\"!=typeof e||e!=e)throw new TypeError(\"offset must be a number\");if(e>u||e<0)throw new TypeError(\"offset must be a uint32\");if(e>l||e>t)throw new RangeError(\"offset out of range\")}function f(e,t,r){if(\"number\"!=typeof e||e!=e)throw new TypeError(\"size must be a number\");if(e>u||e<0)throw new TypeError(\"size must be a uint32\");if(e+t>r||e>l)throw new RangeError(\"buffer too small\")}function d(e,r,n,i){if(t.browser){var s=e.buffer,a=new Uint8Array(s,r,n);return c.getRandomValues(a),i?void t.nextTick((function(){i(null,e)})):e}if(!i)return o(n).copy(e,r),e;o(n,(function(t,n){if(t)return i(t);n.copy(e,r),i(null,e)}))}c&&c.getRandomValues||!t.browser?(r.randomFill=function(e,t,r,i){if(!(a.isBuffer(e)||e instanceof n.Uint8Array))throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');if(\"function\"==typeof t)i=t,t=0,r=e.length;else if(\"function\"==typeof r)i=r,r=e.length-t;else if(\"function\"!=typeof i)throw new TypeError('\"cb\" argument must be a function');return h(t,e.length),f(r,t,e.length),d(e,t,r,i)},r.randomFillSync=function(e,t,r){void 0===t&&(t=0);if(!(a.isBuffer(e)||e instanceof n.Uint8Array))throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');h(t,e.length),void 0===r&&(r=e.length-t);return f(r,t,e.length),d(e,t,r)}):(r.randomFill=i,r.randomFillSync=i)}).call(this)}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{_process:467,randombytes:475,\"safe-buffer\":494}],477:[function(e,t,r){\"use strict\";var n={};function i(e,t,r){r||(r=Error);var i=function(e){var r,n;function i(r,n,i){return e.call(this,function(e,r,n){return\"string\"==typeof t?t:t(e,r,n)}(r,n,i))||this}return n=e,(r=i).prototype=Object.create(n.prototype),r.prototype.constructor=r,r.__proto__=n,i}(r);i.prototype.name=r.name,i.prototype.code=e,n[e]=i}function s(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map((function(e){return String(e)})),r>2?\"one of \".concat(t,\" \").concat(e.slice(0,r-1).join(\", \"),\", or \")+e[r-1]:2===r?\"one of \".concat(t,\" \").concat(e[0],\" or \").concat(e[1]):\"of \".concat(t,\" \").concat(e[0])}return\"of \".concat(t,\" \").concat(String(e))}i(\"ERR_INVALID_OPT_VALUE\",(function(e,t){return'The value \"'+t+'\" is invalid for option \"'+e+'\"'}),TypeError),i(\"ERR_INVALID_ARG_TYPE\",(function(e,t,r){var n,i,o,a;if(\"string\"==typeof t&&(i=\"not \",t.substr(!o||o<0?0:+o,i.length)===i)?(n=\"must not be\",t=t.replace(/^not /,\"\")):n=\"must be\",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e,\" argument\"))a=\"The \".concat(e,\" \").concat(n,\" \").concat(s(t,\"type\"));else{var l=function(e,t,r){return\"number\"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,\".\")?\"property\":\"argument\";a='The \"'.concat(e,'\" ').concat(l,\" \").concat(n,\" \").concat(s(t,\"type\"))}return a+=\". Received type \".concat(typeof r)}),TypeError),i(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),i(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(e){return\"The \"+e+\" method is not implemented\"})),i(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),i(\"ERR_STREAM_DESTROYED\",(function(e){return\"Cannot call \"+e+\" after a stream was destroyed\"})),i(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),i(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),i(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),i(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),i(\"ERR_UNKNOWN_ENCODING\",(function(e){return\"Unknown encoding: \"+e}),TypeError),i(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),t.exports.codes=n},{}],478:[function(e,t,r){(function(r){(function(){\"use strict\";var n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};t.exports=c;var i=e(\"./_stream_readable\"),s=e(\"./_stream_writable\");e(\"inherits\")(c,i);for(var o=n(s.prototype),a=0;a<o.length;a++){var l=o[a];c.prototype[l]||(c.prototype[l]=s.prototype[l])}function c(e){if(!(this instanceof c))return new c(e);i.call(this,e),s.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once(\"end\",u)))}function u(){this._writableState.ended||r.nextTick(h,this)}function h(e){e.end()}Object.defineProperty(c.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(c.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(c.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(c.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}})}).call(this)}).call(this,e(\"_process\"))},{\"./_stream_readable\":480,\"./_stream_writable\":482,_process:467,inherits:440}],479:[function(e,t,r){\"use strict\";t.exports=i;var n=e(\"./_stream_transform\");function i(e){if(!(this instanceof i))return new i(e);n.call(this,e)}e(\"inherits\")(i,n),i.prototype._transform=function(e,t,r){r(null,e)}},{\"./_stream_transform\":481,inherits:440}],480:[function(e,t,r){(function(r,n){(function(){\"use strict\";var i;t.exports=M,M.ReadableState=S;e(\"events\").EventEmitter;var s=function(e,t){return e.listeners(t).length},o=e(\"./internal/streams/stream\"),a=e(\"buffer\").Buffer,l=(void 0!==n?n:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var c,u=e(\"util\");c=u&&u.debuglog?u.debuglog(\"stream\"):function(){};var h,f,d,p=e(\"./internal/streams/buffer_list\"),m=e(\"./internal/streams/destroy\"),b=e(\"./internal/streams/state\").getHighWaterMark,g=e(\"../errors\").codes,y=g.ERR_INVALID_ARG_TYPE,v=g.ERR_STREAM_PUSH_AFTER_EOF,w=g.ERR_METHOD_NOT_IMPLEMENTED,_=g.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;e(\"inherits\")(M,o);var x=m.errorOrDestroy,k=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function S(t,r,n){i=i||e(\"./_stream_duplex\"),t=t||{},\"boolean\"!=typeof n&&(n=r instanceof i),this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=b(this,t,\"readableHighWaterMark\",n),this.buffer=new p,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(h||(h=e(\"string_decoder/\").StringDecoder),this.decoder=new h(t.encoding),this.encoding=t.encoding)}function M(t){if(i=i||e(\"./_stream_duplex\"),!(this instanceof M))return new M(t);var r=this instanceof i;this._readableState=new S(t,this,r),this.readable=!0,t&&(\"function\"==typeof t.read&&(this._read=t.read),\"function\"==typeof t.destroy&&(this._destroy=t.destroy)),o.call(this)}function C(e,t,r,n,i){c(\"readableAddChunk\",t);var s,o=e._readableState;if(null===t)o.reading=!1,function(e,t){if(c(\"onEofChunk\"),t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?A(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,R(e)))}(e,o);else if(i||(s=function(e,t){var r;n=t,a.isBuffer(n)||n instanceof l||\"string\"==typeof t||void 0===t||e.objectMode||(r=new y(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],t));var n;return r}(o,t)),s)x(e,s);else if(o.objectMode||t&&t.length>0)if(\"string\"==typeof t||o.objectMode||Object.getPrototypeOf(t)===a.prototype||(t=function(e){return a.from(e)}(t)),n)o.endEmitted?x(e,new _):T(e,o,t,!0);else if(o.ended)x(e,new v);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?T(e,o,t,!1):O(e,o)):T(e,o,t,!1)}else n||(o.reading=!1,O(e,o));return!o.ended&&(o.length<o.highWaterMark||0===o.length)}function T(e,t,r,n){t.flowing&&0===t.length&&!t.sync?(t.awaitDrain=0,e.emit(\"data\",r)):(t.length+=t.objectMode?1:r.length,n?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&A(e)),O(e,t)}Object.defineProperty(M.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),M.prototype.destroy=m.destroy,M.prototype._undestroy=m.undestroy,M.prototype._destroy=function(e,t){t(e)},M.prototype.push=function(e,t){var r,n=this._readableState;return n.objectMode?r=!0:\"string\"==typeof e&&((t=t||n.defaultEncoding)!==n.encoding&&(e=a.from(e,t),t=\"\"),r=!0),C(this,e,t,!1,r)},M.prototype.unshift=function(e){return C(this,e,null,!0,!1)},M.prototype.isPaused=function(){return!1===this._readableState.flowing},M.prototype.setEncoding=function(t){h||(h=e(\"string_decoder/\").StringDecoder);var r=new h(t);this._readableState.decoder=r,this._readableState.encoding=this._readableState.decoder.encoding;for(var n=this._readableState.buffer.head,i=\"\";null!==n;)i+=r.write(n.data),n=n.next;return this._readableState.buffer.clear(),\"\"!==i&&this._readableState.buffer.push(i),this._readableState.length=i.length,this};function E(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=function(e){return e>=1073741824?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function A(e){var t=e._readableState;c(\"emitReadable\",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(c(\"emitReadable\",t.flowing),t.emittedReadable=!0,r.nextTick(R,e))}function R(e){var t=e._readableState;c(\"emitReadable_\",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit(\"readable\"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,B(e)}function O(e,t){t.readingMore||(t.readingMore=!0,r.nextTick(j,e,t))}function j(e,t){for(;!t.reading&&!t.ended&&(t.length<t.highWaterMark||t.flowing&&0===t.length);){var r=t.length;if(c(\"maybeReadMore read 0\"),e.read(0),r===t.length)break}t.readingMore=!1}function I(e){var t=e._readableState;t.readableListening=e.listenerCount(\"readable\")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount(\"data\")>0&&e.resume()}function N(e){c(\"readable nexttick read 0\"),e.read(0)}function P(e,t){c(\"resume\",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit(\"resume\"),B(e),t.flowing&&!t.reading&&e.read(0)}function B(e){var t=e._readableState;for(c(\"flow\",t.flowing);t.flowing&&null!==e.read(););}function D(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function F(e){var t=e._readableState;c(\"endReadable\",t.endEmitted),t.endEmitted||(t.ended=!0,r.nextTick(L,t,e))}function L(e,t){if(c(\"endReadableNT\",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function z(e,t){for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}M.prototype.read=function(e){c(\"read\",e),e=parseInt(e,10);var t=this._readableState,r=e;if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&((0!==t.highWaterMark?t.length>=t.highWaterMark:t.length>0)||t.ended))return c(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?F(this):A(this),null;if(0===(e=E(e,t))&&t.ended)return 0===t.length&&F(this),null;var n,i=t.needReadable;return c(\"need readable\",i),(0===t.length||t.length-e<t.highWaterMark)&&c(\"length less than watermark\",i=!0),t.ended||t.reading?c(\"reading or ended\",i=!1):i&&(c(\"do read\"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=E(r,t))),null===(n=e>0?D(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&F(this)),null!==n&&this.emit(\"data\",n),n},M.prototype._read=function(e){x(this,new w(\"_read()\"))},M.prototype.pipe=function(e,t){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,c(\"pipe count=%d opts=%j\",i.pipesCount,t);var o=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?l:b;function a(t,r){c(\"onunpipe\"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,c(\"cleanup\"),e.removeListener(\"close\",p),e.removeListener(\"finish\",m),e.removeListener(\"drain\",u),e.removeListener(\"error\",d),e.removeListener(\"unpipe\",a),n.removeListener(\"end\",l),n.removeListener(\"end\",b),n.removeListener(\"data\",f),h=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||u())}function l(){c(\"onend\"),e.end()}i.endEmitted?r.nextTick(o):n.once(\"end\",o),e.on(\"unpipe\",a);var u=function(e){return function(){var t=e._readableState;c(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,\"data\")&&(t.flowing=!0,B(e))}}(n);e.on(\"drain\",u);var h=!1;function f(t){c(\"ondata\");var r=e.write(t);c(\"dest.write\",r),!1===r&&((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==z(i.pipes,e))&&!h&&(c(\"false write response, pause\",i.awaitDrain),i.awaitDrain++),n.pause())}function d(t){c(\"onerror\",t),b(),e.removeListener(\"error\",d),0===s(e,\"error\")&&x(e,t)}function p(){e.removeListener(\"finish\",m),b()}function m(){c(\"onfinish\"),e.removeListener(\"close\",p),b()}function b(){c(\"unpipe\"),n.unpipe(e)}return n.on(\"data\",f),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",d),e.once(\"close\",p),e.once(\"finish\",m),e.emit(\"pipe\",n),i.flowing||(c(\"pipe resume\"),n.resume()),e},M.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r)),this;if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var s=0;s<i;s++)n[s].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var o=z(t.pipes,e);return-1===o||(t.pipes.splice(o,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit(\"unpipe\",this,r)),this},M.prototype.on=function(e,t){var n=o.prototype.on.call(this,e,t),i=this._readableState;return\"data\"===e?(i.readableListening=this.listenerCount(\"readable\")>0,!1!==i.flowing&&this.resume()):\"readable\"===e&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,c(\"on readable\",i.length,i.reading),i.length?A(this):i.reading||r.nextTick(N,this))),n},M.prototype.addListener=M.prototype.on,M.prototype.removeListener=function(e,t){var n=o.prototype.removeListener.call(this,e,t);return\"readable\"===e&&r.nextTick(I,this),n},M.prototype.removeAllListeners=function(e){var t=o.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==e&&void 0!==e||r.nextTick(I,this),t},M.prototype.resume=function(){var e=this._readableState;return e.flowing||(c(\"resume\"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,r.nextTick(P,e,t))}(this,e)),e.paused=!1,this},M.prototype.pause=function(){return c(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(c(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},M.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on(\"end\",(function(){if(c(\"wrapped end\"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on(\"data\",(function(i){(c(\"wrapped data\"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&\"function\"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var s=0;s<k.length;s++)e.on(k[s],this.emit.bind(this,k[s]));return this._read=function(t){c(\"wrapped _read\",t),n&&(n=!1,e.resume())},this},\"function\"==typeof Symbol&&(M.prototype[Symbol.asyncIterator]=function(){return void 0===f&&(f=e(\"./internal/streams/async_iterator\")),f(this)}),Object.defineProperty(M.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(M.prototype,\"readableBuffer\",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(M.prototype,\"readableFlowing\",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}}),M._fromList=D,Object.defineProperty(M.prototype,\"readableLength\",{enumerable:!1,get:function(){return this._readableState.length}}),\"function\"==typeof Symbol&&(M.from=function(t,r){return void 0===d&&(d=e(\"./internal/streams/from\")),d(M,t,r)})}).call(this)}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"../errors\":477,\"./_stream_duplex\":478,\"./internal/streams/async_iterator\":483,\"./internal/streams/buffer_list\":484,\"./internal/streams/destroy\":485,\"./internal/streams/from\":487,\"./internal/streams/state\":489,\"./internal/streams/stream\":490,_process:467,buffer:220,events:422,inherits:440,\"string_decoder/\":522,util:188}],481:[function(e,t,r){\"use strict\";t.exports=u;var n=e(\"../errors\").codes,i=n.ERR_METHOD_NOT_IMPLEMENTED,s=n.ERR_MULTIPLE_CALLBACK,o=n.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=n.ERR_TRANSFORM_WITH_LENGTH_0,l=e(\"./_stream_duplex\");function c(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(null===n)return this.emit(\"error\",new s);r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}function u(e){if(!(this instanceof u))return new u(e);l.call(this,e),this._transformState={afterTransform:c.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(\"function\"==typeof e.transform&&(this._transform=e.transform),\"function\"==typeof e.flush&&(this._flush=e.flush)),this.on(\"prefinish\",h)}function h(){var e=this;\"function\"!=typeof this._flush||this._readableState.destroyed?f(this,null,null):this._flush((function(t,r){f(e,t,r)}))}function f(e,t,r){if(t)return e.emit(\"error\",t);if(null!=r&&e.push(r),e._writableState.length)throw new a;if(e._transformState.transforming)throw new o;return e.push(null)}e(\"inherits\")(u,l),u.prototype.push=function(e,t){return this._transformState.needTransform=!1,l.prototype.push.call(this,e,t)},u.prototype._transform=function(e,t,r){r(new i(\"_transform()\"))},u.prototype._write=function(e,t,r){var n=this._transformState;if(n.writecb=r,n.writechunk=e,n.writeencoding=t,!n.transforming){var i=this._readableState;(n.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},u.prototype._read=function(e){var t=this._transformState;null===t.writechunk||t.transforming?t.needTransform=!0:(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform))},u.prototype._destroy=function(e,t){l.prototype._destroy.call(this,e,(function(e){t(e)}))}},{\"../errors\":477,\"./_stream_duplex\":478,inherits:440}],482:[function(e,t,r){(function(r,n){(function(){\"use strict\";function i(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}var s;t.exports=M,M.WritableState=S;var o={deprecate:e(\"util-deprecate\")},a=e(\"./internal/streams/stream\"),l=e(\"buffer\").Buffer,c=(void 0!==n?n:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var u,h=e(\"./internal/streams/destroy\"),f=e(\"./internal/streams/state\").getHighWaterMark,d=e(\"../errors\").codes,p=d.ERR_INVALID_ARG_TYPE,m=d.ERR_METHOD_NOT_IMPLEMENTED,b=d.ERR_MULTIPLE_CALLBACK,g=d.ERR_STREAM_CANNOT_PIPE,y=d.ERR_STREAM_DESTROYED,v=d.ERR_STREAM_NULL_VALUES,w=d.ERR_STREAM_WRITE_AFTER_END,_=d.ERR_UNKNOWN_ENCODING,x=h.errorOrDestroy;function k(){}function S(t,n,o){s=s||e(\"./_stream_duplex\"),t=t||{},\"boolean\"!=typeof o&&(o=n instanceof s),this.objectMode=!!t.objectMode,o&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=f(this,t,\"writableHighWaterMark\",o),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,i=n.sync,s=n.writecb;if(\"function\"!=typeof s)throw new b;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,i,s){--t.pendingcb,n?(r.nextTick(s,i),r.nextTick(O,e,t),e._writableState.errorEmitted=!0,x(e,i)):(s(i),e._writableState.errorEmitted=!0,x(e,i),O(e,t))}(e,n,i,t,s);else{var o=A(n)||e.destroyed;o||n.corked||n.bufferProcessing||!n.bufferedRequest||E(e,n),i?r.nextTick(T,e,n,o,s):T(e,n,o,s)}}(n,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new i(this)}function M(t){var r=this instanceof(s=s||e(\"./_stream_duplex\"));if(!r&&!u.call(M,this))return new M(t);this._writableState=new S(t,this,r),this.writable=!0,t&&(\"function\"==typeof t.write&&(this._write=t.write),\"function\"==typeof t.writev&&(this._writev=t.writev),\"function\"==typeof t.destroy&&(this._destroy=t.destroy),\"function\"==typeof t.final&&(this._final=t.final)),a.call(this)}function C(e,t,r,n,i,s,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new y(\"write\")):r?e._writev(i,t.onwrite):e._write(i,s,t.onwrite),t.sync=!1}function T(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),O(e,t)}function E(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,s=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var a=0,l=!0;r;)s[a]=r,r.isBuf||(l=!1),r=r.next,a+=1;s.allBuffers=l,C(e,t,!0,t.length,s,\"\",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new i(t),t.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,u=r.encoding,h=r.callback;if(C(e,t,!1,t.objectMode?1:c.length,c,u,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function A(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function R(e,t){e._final((function(r){t.pendingcb--,r&&x(e,r),t.prefinished=!0,e.emit(\"prefinish\"),O(e,t)}))}function O(e,t){var n=A(t);if(n&&(function(e,t){t.prefinished||t.finalCalled||(\"function\"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit(\"prefinish\")):(t.pendingcb++,t.finalCalled=!0,r.nextTick(R,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"),t.autoDestroy))){var i=e._readableState;(!i||i.autoDestroy&&i.endEmitted)&&e.destroy()}return n}e(\"inherits\")(M,a),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,\"buffer\",{get:o.deprecate((function(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(u=Function.prototype[Symbol.hasInstance],Object.defineProperty(M,Symbol.hasInstance,{value:function(e){return!!u.call(this,e)||this===M&&(e&&e._writableState instanceof S)}})):u=function(e){return e instanceof this},M.prototype.pipe=function(){x(this,new g)},M.prototype.write=function(e,t,n){var i,s=this._writableState,o=!1,a=!s.objectMode&&(i=e,l.isBuffer(i)||i instanceof c);return a&&!l.isBuffer(e)&&(e=function(e){return l.from(e)}(e)),\"function\"==typeof t&&(n=t,t=null),a?t=\"buffer\":t||(t=s.defaultEncoding),\"function\"!=typeof n&&(n=k),s.ending?function(e,t){var n=new w;x(e,n),r.nextTick(t,n)}(this,n):(a||function(e,t,n,i){var s;return null===n?s=new v:\"string\"==typeof n||t.objectMode||(s=new p(\"chunk\",[\"string\",\"Buffer\"],n)),!s||(x(e,s),r.nextTick(i,s),!1)}(this,s,e,n))&&(s.pendingcb++,o=function(e,t,r,n,i,s){if(!r){var o=function(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=l.from(t,r));return t}(t,n,i);n!==o&&(r=!0,i=\"buffer\",n=o)}var a=t.objectMode?1:n.length;t.length+=a;var c=t.length<t.highWaterMark;c||(t.needDrain=!0);if(t.writing||t.corked){var u=t.lastBufferedRequest;t.lastBufferedRequest={chunk:n,encoding:i,isBuf:r,callback:s,next:null},u?u.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else C(e,t,!1,a,n,i,s);return c}(this,s,a,e,t,n)),o},M.prototype.cork=function(){this._writableState.corked++},M.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.bufferProcessing||!e.bufferedRequest||E(this,e))},M.prototype.setDefaultEncoding=function(e){if(\"string\"==typeof e&&(e=e.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((e+\"\").toLowerCase())>-1))throw new _(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(M.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(M.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),M.prototype._write=function(e,t,r){r(new m(\"_write()\"))},M.prototype._writev=null,M.prototype.end=function(e,t,n){var i=this._writableState;return\"function\"==typeof e?(n=e,e=null,t=null):\"function\"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),i.corked&&(i.corked=1,this.uncork()),i.ending||function(e,t,n){t.ending=!0,O(e,t),n&&(t.finished?r.nextTick(n):e.once(\"finish\",n));t.ended=!0,e.writable=!1}(this,i,n),this},Object.defineProperty(M.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(M.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),M.prototype.destroy=h.destroy,M.prototype._undestroy=h.undestroy,M.prototype._destroy=function(e,t){t(e)}}).call(this)}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"../errors\":477,\"./_stream_duplex\":478,\"./internal/streams/destroy\":485,\"./internal/streams/state\":489,\"./internal/streams/stream\":490,_process:467,buffer:220,inherits:440,\"util-deprecate\":524}],483:[function(e,t,r){(function(r){(function(){\"use strict\";var n;function i(e,t,r){return(t=function(e){var t=function(e,t){if(\"object\"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||\"default\");if(\"object\"!=typeof n)return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var s=e(\"./end-of-stream\"),o=Symbol(\"lastResolve\"),a=Symbol(\"lastReject\"),l=Symbol(\"error\"),c=Symbol(\"ended\"),u=Symbol(\"lastPromise\"),h=Symbol(\"handlePromise\"),f=Symbol(\"stream\");function d(e,t){return{value:e,done:t}}function p(e){var t=e[o];if(null!==t){var r=e[f].read();null!==r&&(e[u]=null,e[o]=null,e[a]=null,t(d(r,!1)))}}function m(e){r.nextTick(p,e)}var b=Object.getPrototypeOf((function(){})),g=Object.setPrototypeOf((i(n={get stream(){return this[f]},next:function(){var e=this,t=this[l];if(null!==t)return Promise.reject(t);if(this[c])return Promise.resolve(d(void 0,!0));if(this[f].destroyed)return new Promise((function(t,n){r.nextTick((function(){e[l]?n(e[l]):t(d(void 0,!0))}))}));var n,i=this[u];if(i)n=new Promise(function(e,t){return function(r,n){e.then((function(){t[c]?r(d(void 0,!0)):t[h](r,n)}),n)}}(i,this));else{var s=this[f].read();if(null!==s)return Promise.resolve(d(s,!1));n=new Promise(this[h])}return this[u]=n,n}},Symbol.asyncIterator,(function(){return this})),i(n,\"return\",(function(){var e=this;return new Promise((function(t,r){e[f].destroy(null,(function(e){e?r(e):t(d(void 0,!0))}))}))})),n),b);t.exports=function(e){var t,r=Object.create(g,(i(t={},f,{value:e,writable:!0}),i(t,o,{value:null,writable:!0}),i(t,a,{value:null,writable:!0}),i(t,l,{value:null,writable:!0}),i(t,c,{value:e._readableState.endEmitted,writable:!0}),i(t,h,{value:function(e,t){var n=r[f].read();n?(r[u]=null,r[o]=null,r[a]=null,e(d(n,!1))):(r[o]=e,r[a]=t)},writable:!0}),t));return r[u]=null,s(e,(function(e){if(e&&\"ERR_STREAM_PREMATURE_CLOSE\"!==e.code){var t=r[a];return null!==t&&(r[u]=null,r[o]=null,r[a]=null,t(e)),void(r[l]=e)}var n=r[o];null!==n&&(r[u]=null,r[o]=null,r[a]=null,n(d(void 0,!0))),r[c]=!0})),e.on(\"readable\",m.bind(null,r)),r}}).call(this)}).call(this,e(\"_process\"))},{\"./end-of-stream\":486,_process:467}],484:[function(e,t,r){\"use strict\";function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){s(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t,r){return(t=a(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,a(n.key),n)}}function a(e){var t=function(e,t){if(\"object\"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||\"default\");if(\"object\"!=typeof n)return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof t?t:String(t)}var l=e(\"buffer\").Buffer,c=e(\"util\").inspect,u=c&&c.custom||\"inspect\";t.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.head=null,this.tail=null,this.length=0}var t,r,n;return t=e,(r=[{key:\"push\",value:function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:\"unshift\",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:\"shift\",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r}},{key:\"concat\",value:function(e){if(0===this.length)return l.alloc(0);for(var t,r,n,i=l.allocUnsafe(e>>>0),s=this.head,o=0;s;)t=s.data,r=i,n=o,l.prototype.copy.call(t,r,n),o+=s.data.length,s=s.next;return i}},{key:\"consume\",value:function(e,t){var r;return e<this.head.data.length?(r=this.head.data.slice(0,e),this.head.data=this.head.data.slice(e)):r=e===this.head.data.length?this.shift():t?this._getString(e):this._getBuffer(e),r}},{key:\"first\",value:function(){return this.head.data}},{key:\"_getString\",value:function(e){var t=this.head,r=1,n=t.data;for(e-=n.length;t=t.next;){var i=t.data,s=e>i.length?i.length:e;if(s===i.length?n+=i:n+=i.slice(0,e),0==(e-=s)){s===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(s));break}++r}return this.length-=r,n}},{key:\"_getBuffer\",value:function(e){var t=l.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var i=r.data,s=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,s),0==(e-=s)){s===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(s));break}++n}return this.length-=n,t}},{key:u,value:function(e,t){return c(this,i(i({},t),{},{depth:0,customInspect:!1}))}}])&&o(t.prototype,r),n&&o(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),e}()},{buffer:220,util:188}],485:[function(e,t,r){(function(e){(function(){\"use strict\";function r(e,t){i(e,t),n(e)}function n(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit(\"close\")}function i(e,t){e.emit(\"error\",t)}t.exports={destroy:function(t,s){var o=this,a=this._readableState&&this._readableState.destroyed,l=this._writableState&&this._writableState.destroyed;return a||l?(s?s(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,e.nextTick(i,this,t)):e.nextTick(i,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!s&&t?o._writableState?o._writableState.errorEmitted?e.nextTick(n,o):(o._writableState.errorEmitted=!0,e.nextTick(r,o,t)):e.nextTick(r,o,t):s?(e.nextTick(n,o),s(t)):e.nextTick(n,o)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit(\"error\",t)}}}).call(this)}).call(this,e(\"_process\"))},{_process:467}],486:[function(e,t,r){\"use strict\";var n=e(\"../../../errors\").codes.ERR_STREAM_PREMATURE_CLOSE;function i(){}t.exports=function e(t,r,s){if(\"function\"==typeof r)return e(t,null,r);r||(r={}),s=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];e.apply(this,n)}}}(s||i);var o=r.readable||!1!==r.readable&&t.readable,a=r.writable||!1!==r.writable&&t.writable,l=function(){t.writable||u()},c=t._writableState&&t._writableState.finished,u=function(){a=!1,c=!0,o||s.call(t)},h=t._readableState&&t._readableState.endEmitted,f=function(){o=!1,h=!0,a||s.call(t)},d=function(e){s.call(t,e)},p=function(){var e;return o&&!h?(t._readableState&&t._readableState.ended||(e=new n),s.call(t,e)):a&&!c?(t._writableState&&t._writableState.ended||(e=new n),s.call(t,e)):void 0},m=function(){t.req.on(\"finish\",u)};return!function(e){return e.setHeader&&\"function\"==typeof e.abort}(t)?a&&!t._writableState&&(t.on(\"end\",l),t.on(\"close\",l)):(t.on(\"complete\",u),t.on(\"abort\",p),t.req?m():t.on(\"request\",m)),t.on(\"end\",f),t.on(\"finish\",u),!1!==r.error&&t.on(\"error\",d),t.on(\"close\",p),function(){t.removeListener(\"complete\",u),t.removeListener(\"abort\",p),t.removeListener(\"request\",m),t.req&&t.req.removeListener(\"finish\",u),t.removeListener(\"end\",l),t.removeListener(\"close\",l),t.removeListener(\"finish\",u),t.removeListener(\"end\",f),t.removeListener(\"error\",d),t.removeListener(\"close\",p)}}},{\"../../../errors\":477}],487:[function(e,t,r){\"use strict\";t.exports=function(){throw new Error(\"Readable.from is not available in the browser\")}},{}],488:[function(e,t,r){\"use strict\";var n;var i=e(\"../../../errors\").codes,s=i.ERR_MISSING_ARGS,o=i.ERR_STREAM_DESTROYED;function a(e){if(e)throw e}function l(t,r,i,s){s=function(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}(s);var a=!1;t.on(\"close\",(function(){a=!0})),void 0===n&&(n=e(\"./end-of-stream\")),n(t,{readable:r,writable:i},(function(e){if(e)return s(e);a=!0,s()}));var l=!1;return function(e){if(!a&&!l)return l=!0,function(e){return e.setHeader&&\"function\"==typeof e.abort}(t)?t.abort():\"function\"==typeof t.destroy?t.destroy():void s(e||new o(\"pipe\"))}}function c(e){e()}function u(e,t){return e.pipe(t)}function h(e){return e.length?\"function\"!=typeof e[e.length-1]?a:e.pop():a}t.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n,i=h(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new s(\"streams\");var o=t.map((function(e,r){var s=r<t.length-1;return l(e,s,r>0,(function(e){n||(n=e),e&&o.forEach(c),s||(o.forEach(c),i(n))}))}));return t.reduce(u)}},{\"../../../errors\":477,\"./end-of-stream\":486}],489:[function(e,t,r){\"use strict\";var n=e(\"../../../errors\").codes.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(e,t,r,i){var s=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,i,r);if(null!=s){if(!isFinite(s)||Math.floor(s)!==s||s<0)throw new n(i?r:\"highWaterMark\",s);return Math.floor(s)}return e.objectMode?16:16384}}},{\"../../../errors\":477}],490:[function(e,t,r){\"use strict\";t.exports=e(\"events\").EventEmitter},{events:422}],491:[function(e,t,r){\"use strict\";(r=t.exports=e(\"./lib/_stream_readable.js\")).Stream=r,r.Readable=r,r.Writable=e(\"./lib/_stream_writable.js\"),r.Duplex=e(\"./lib/_stream_duplex.js\"),r.Transform=e(\"./lib/_stream_transform.js\"),r.PassThrough=e(\"./lib/_stream_passthrough.js\"),r.finished=e(\"./lib/internal/streams/end-of-stream.js\"),r.pipeline=e(\"./lib/internal/streams/pipeline.js\")},{\"./lib/_stream_duplex.js\":478,\"./lib/_stream_passthrough.js\":479,\"./lib/_stream_readable.js\":480,\"./lib/_stream_transform.js\":481,\"./lib/_stream_writable.js\":482,\"./lib/internal/streams/end-of-stream.js\":486,\"./lib/internal/streams/pipeline.js\":488}],492:[function(e,t,r){\"use strict\";var n=function(e){var t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},i=\"function\"==typeof Symbol?Symbol:{},s=i.iterator||\"@@iterator\",o=i.asyncIterator||\"@@asyncIterator\",a=i.toStringTag||\"@@toStringTag\";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},\"\")}catch(e){l=function(e,t,r){return e[t]=r}}function c(e,t,r,i){var s=t&&t.prototype instanceof f?t:f,o=Object.create(s.prototype),a=new M(i||[]);return n(o,\"_invoke\",{value:_(e,r,a)}),o}function u(e,t,r){try{return{type:\"normal\",arg:e.call(t,r)}}catch(e){return{type:\"throw\",arg:e}}}e.wrap=c;var h={};function f(){}function d(){}function p(){}var m={};l(m,s,(function(){return this}));var b=Object.getPrototypeOf,g=b&&b(b(C([])));g&&g!==t&&r.call(g,s)&&(m=g);var y=p.prototype=f.prototype=Object.create(m);function v(e){[\"next\",\"throw\",\"return\"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){var i;n(this,\"_invoke\",{value:function(n,s){function o(){return new t((function(i,o){!function n(i,s,o,a){var l=u(e[i],e,s);if(\"throw\"!==l.type){var c=l.arg,h=c.value;return h&&\"object\"==typeof h&&r.call(h,\"__await\")?t.resolve(h.__await).then((function(e){n(\"next\",e,o,a)}),(function(e){n(\"throw\",e,o,a)})):t.resolve(h).then((function(e){c.value=e,o(c)}),(function(e){return n(\"throw\",e,o,a)}))}a(l.arg)}(n,s,i,o)}))}return i=i?i.then(o,o):o()}})}function _(e,t,r){var n=\"suspendedStart\";return function(i,s){if(\"executing\"===n)throw new Error(\"Generator is already running\");if(\"completed\"===n){if(\"throw\"===i)throw s;return T()}for(r.method=i,r.arg=s;;){var o=r.delegate;if(o){var a=x(o,r);if(a){if(a===h)continue;return a}}if(\"next\"===r.method)r.sent=r._sent=r.arg;else if(\"throw\"===r.method){if(\"suspendedStart\"===n)throw n=\"completed\",r.arg;r.dispatchException(r.arg)}else\"return\"===r.method&&r.abrupt(\"return\",r.arg);n=\"executing\";var l=u(e,t,r);if(\"normal\"===l.type){if(n=r.done?\"completed\":\"suspendedYield\",l.arg===h)continue;return{value:l.arg,done:r.done}}\"throw\"===l.type&&(n=\"completed\",r.method=\"throw\",r.arg=l.arg)}}}function x(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,\"throw\"===r&&e.iterator.return&&(t.method=\"return\",t.arg=void 0,x(e,t),\"throw\"===t.method)||\"return\"!==r&&(t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a '\"+r+\"' method\")),h;var i=u(n,e.iterator,t.arg);if(\"throw\"===i.type)return t.method=\"throw\",t.arg=i.arg,t.delegate=null,h;var s=i.arg;return s?s.done?(t[e.resultName]=s.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=void 0),t.delegate=null,h):s:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,h)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function S(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function M(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(k,this),this.reset(!0)}function C(e){if(e){var t=e[s];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:T}}function T(){return{value:void 0,done:!0}}return d.prototype=p,n(y,\"constructor\",{value:p,configurable:!0}),n(p,\"constructor\",{value:d,configurable:!0}),d.displayName=l(p,a,\"GeneratorFunction\"),e.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===d||\"GeneratorFunction\"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,l(e,a,\"GeneratorFunction\")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},v(w.prototype),l(w.prototype,o,(function(){return this})),e.AsyncIterator=w,e.async=function(t,r,n,i,s){void 0===s&&(s=Promise);var o=new w(c(t,r,n,i),s);return e.isGeneratorFunction(r)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},v(y),l(y,a,\"Generator\"),l(y,s,(function(){return this})),l(y,\"toString\",(function(){return\"[object Generator]\"})),e.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},e.values=C,M.prototype={constructor:M,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=void 0,this.tryEntries.forEach(S),!e)for(var t in this)\"t\"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return o.type=\"throw\",o.arg=e,t.next=r,n&&(t.method=\"next\",t.arg=void 0),!!n}for(var i=this.tryEntries.length-1;i>=0;--i){var s=this.tryEntries[i],o=s.completion;if(\"root\"===s.tryLoc)return n(\"end\");if(s.tryLoc<=this.prev){var a=r.call(s,\"catchLoc\"),l=r.call(s,\"finallyLoc\");if(a&&l){if(this.prev<s.catchLoc)return n(s.catchLoc,!0);if(this.prev<s.finallyLoc)return n(s.finallyLoc)}else if(a){if(this.prev<s.catchLoc)return n(s.catchLoc,!0)}else{if(!l)throw new Error(\"try statement without catch or finally\");if(this.prev<s.finallyLoc)return n(s.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,\"finallyLoc\")&&this.prev<i.finallyLoc){var s=i;break}}s&&(\"break\"===e||\"continue\"===e)&&s.tryLoc<=t&&t<=s.finallyLoc&&(s=null);var o=s?s.completion:{};return o.type=e,o.arg=t,s?(this.method=\"next\",this.next=s.finallyLoc,h):this.complete(o)},complete:function(e,t){if(\"throw\"===e.type)throw e.arg;return\"break\"===e.type||\"continue\"===e.type?this.next=e.arg:\"return\"===e.type?(this.rval=this.arg=e.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===e.type&&t&&(this.next=t),h},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),S(r),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(\"throw\"===n.type){var i=n.arg;S(r)}return i}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,r){return this.delegate={iterator:C(e),resultName:t,nextLoc:r},\"next\"===this.method&&(this.arg=void 0),h}},e}(\"object\"==typeof t?t.exports:{});try{regeneratorRuntime=n}catch(e){\"object\"==typeof globalThis?globalThis.regeneratorRuntime=n:Function(\"r\",\"regeneratorRuntime = r\")(n)}},{}],493:[function(e,t,r){\"use strict\";var n=e(\"buffer\").Buffer,i=e(\"inherits\"),s=e(\"hash-base\"),o=new Array(16),a=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],l=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],c=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],u=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],h=[0,1518500249,1859775393,2400959708,2840853838],f=[1352829926,1548603684,1836072691,2053994217,0];function d(){s.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function p(e,t){return e<<t|e>>>32-t}function m(e,t,r,n,i,s,o,a){return p(e+(t^r^n)+s+o|0,a)+i|0}function b(e,t,r,n,i,s,o,a){return p(e+(t&r|~t&n)+s+o|0,a)+i|0}function g(e,t,r,n,i,s,o,a){return p(e+((t|~r)^n)+s+o|0,a)+i|0}function y(e,t,r,n,i,s,o,a){return p(e+(t&n|r&~n)+s+o|0,a)+i|0}function v(e,t,r,n,i,s,o,a){return p(e+(t^(r|~n))+s+o|0,a)+i|0}i(d,s),d.prototype._update=function(){for(var e=o,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,i=0|this._c,s=0|this._d,d=0|this._e,w=0|this._a,_=0|this._b,x=0|this._c,k=0|this._d,S=0|this._e,M=0;M<80;M+=1){var C,T;M<16?(C=m(r,n,i,s,d,e[a[M]],h[0],c[M]),T=v(w,_,x,k,S,e[l[M]],f[0],u[M])):M<32?(C=b(r,n,i,s,d,e[a[M]],h[1],c[M]),T=y(w,_,x,k,S,e[l[M]],f[1],u[M])):M<48?(C=g(r,n,i,s,d,e[a[M]],h[2],c[M]),T=g(w,_,x,k,S,e[l[M]],f[2],u[M])):M<64?(C=y(r,n,i,s,d,e[a[M]],h[3],c[M]),T=b(w,_,x,k,S,e[l[M]],f[3],u[M])):(C=v(r,n,i,s,d,e[a[M]],h[4],c[M]),T=m(w,_,x,k,S,e[l[M]],f[4],u[M])),r=d,d=s,s=p(i,10),i=n,n=C,w=S,S=k,k=p(x,10),x=_,_=T}var E=this._b+i+k|0;this._b=this._c+s+S|0,this._c=this._d+d+w|0,this._d=this._e+r+_|0,this._e=this._a+n+x|0,this._a=E},d.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=n.alloc?n.alloc(20):new n(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},t.exports=d},{buffer:220,\"hash-base\":425,inherits:440}],494:[function(e,t,r){\"use strict\";\n/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var n=e(\"buffer\"),i=n.Buffer;function s(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(s(n,r),r.Buffer=o),o.prototype=Object.create(i.prototype),s(i,o),o.from=function(e,t,r){if(\"number\"==typeof e)throw new TypeError(\"Argument must not be a number\");return i(e,t,r)},o.alloc=function(e,t,r){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");var n=i(e);return void 0!==t?\"string\"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},o.allocUnsafe=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return i(e)},o.allocUnsafeSlow=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(e)}},{buffer:220}],495:[function(e,t,r){(function(r){(function(){\"use strict\";var n,i=e(\"buffer\"),s=i.Buffer,o={};for(n in i)i.hasOwnProperty(n)&&\"SlowBuffer\"!==n&&\"Buffer\"!==n&&(o[n]=i[n]);var a=o.Buffer={};for(n in s)s.hasOwnProperty(n)&&\"allocUnsafe\"!==n&&\"allocUnsafeSlow\"!==n&&(a[n]=s[n]);if(o.Buffer.prototype=s.prototype,a.from&&a.from!==Uint8Array.from||(a.from=function(e,t,r){if(\"number\"==typeof e)throw new TypeError('The \"value\" argument must not be of type number. Received type '+typeof e);if(e&&void 0===e.length)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof e);return s(e,t,r)}),a.alloc||(a.alloc=function(e,t,r){if(\"number\"!=typeof e)throw new TypeError('The \"size\" argument must be of type number. Received type '+typeof e);if(e<0||e>=2*(1<<30))throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"');var n=s(e);return t&&0!==t.length?\"string\"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n}),!o.kStringMaxLength)try{o.kStringMaxLength=r.binding(\"buffer\").kStringMaxLength}catch(e){}o.constants||(o.constants={MAX_LENGTH:o.kMaxLength},o.kStringMaxLength&&(o.constants.MAX_STRING_LENGTH=o.kStringMaxLength)),t.exports=o}).call(this)}).call(this,e(\"_process\"))},{_process:467,buffer:220}],496:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0});const n=e(\"xmlchars/xml/1.0/ed5\"),i=e(\"xmlchars/xml/1.1/ed2\"),s=e(\"xmlchars/xmlns/1.0/ed3\");var o=n.isS,a=n.isChar,l=n.isNameStartChar,c=n.isNameChar,u=n.S_LIST,h=n.NAME_RE,f=i.isChar,d=s.isNCNameStartChar,p=s.isNCNameChar,m=s.NC_NAME_RE;const b=\"http://www.w3.org/XML/1998/namespace\",g=\"http://www.w3.org/2000/xmlns/\",y={__proto__:null,xml:b,xmlns:g},v={__proto__:null,amp:\"&\",gt:\">\",lt:\"<\",quot:'\"',apos:\"'\"},w=e=>34===e||39===e,_=[34,39],x=[..._,91,62],k=[..._,60,93],S=[61,63,...u],M=[...u,62,38,60];function C(e,t,r){switch(t){case\"xml\":r!==b&&e.fail(`xml prefix must be bound to ${b}.`);break;case\"xmlns\":r!==g&&e.fail(`xmlns prefix must be bound to ${g}.`)}switch(r){case g:e.fail(\"\"===t?`the default namespace may not be set to ${r}.`:`may not assign a prefix (even \"xmlns\") to the URI ${g}.`);break;case b:switch(t){case\"xml\":break;case\"\":e.fail(`the default namespace may not be set to ${r}.`);break;default:e.fail(\"may not assign the xml namespace to another prefix.\")}}}const T=e=>m.test(e),E=e=>h.test(e);r.EVENTS=[\"xmldecl\",\"text\",\"processinginstruction\",\"doctype\",\"comment\",\"opentagstart\",\"attribute\",\"opentag\",\"closetag\",\"cdata\",\"error\",\"end\",\"ready\"];const A={xmldecl:\"xmldeclHandler\",text:\"textHandler\",processinginstruction:\"piHandler\",doctype:\"doctypeHandler\",comment:\"commentHandler\",opentagstart:\"openTagStartHandler\",attribute:\"attributeHandler\",opentag:\"openTagHandler\",closetag:\"closeTagHandler\",cdata:\"cdataHandler\",error:\"errorHandler\",end:\"endHandler\",ready:\"readyHandler\"};r.SaxesParser=class{constructor(e){this.opt=null!=e?e:{},this.fragmentOpt=!!this.opt.fragment;const t=this.xmlnsOpt=!!this.opt.xmlns;if(this.trackPosition=!1!==this.opt.position,this.fileName=this.opt.fileName,t){this.nameStartCheck=d,this.nameCheck=p,this.isName=T,this.processAttribs=this.processAttribsNS,this.pushAttrib=this.pushAttribNS,this.ns=Object.assign({__proto__:null},y);const e=this.opt.additionalNamespaces;null!=e&&(!function(e,t){for(const r of Object.keys(t))C(e,r,t[r])}(this,e),Object.assign(this.ns,e))}else this.nameStartCheck=l,this.nameCheck=c,this.isName=E,this.processAttribs=this.processAttribsPlain,this.pushAttrib=this.pushAttribPlain;this.stateTable=[this.sBegin,this.sBeginWhitespace,this.sDoctype,this.sDoctypeQuote,this.sDTD,this.sDTDQuoted,this.sDTDOpenWaka,this.sDTDOpenWakaBang,this.sDTDComment,this.sDTDCommentEnding,this.sDTDCommentEnded,this.sDTDPI,this.sDTDPIEnding,this.sText,this.sEntity,this.sOpenWaka,this.sOpenWakaBang,this.sComment,this.sCommentEnding,this.sCommentEnded,this.sCData,this.sCDataEnding,this.sCDataEnding2,this.sPIFirstChar,this.sPIRest,this.sPIBody,this.sPIEnding,this.sXMLDeclNameStart,this.sXMLDeclName,this.sXMLDeclEq,this.sXMLDeclValueStart,this.sXMLDeclValue,this.sXMLDeclSeparator,this.sXMLDeclEnding,this.sOpenTag,this.sOpenTagSlash,this.sAttrib,this.sAttribName,this.sAttribNameSawWhite,this.sAttribValue,this.sAttribValueQuoted,this.sAttribValueClosed,this.sAttribValueUnquoted,this.sCloseTag,this.sCloseTagSawWhite],this._init()}get closed(){return this._closed}_init(){var e;this.openWakaBang=\"\",this.text=\"\",this.name=\"\",this.piTarget=\"\",this.entity=\"\",this.q=null,this.tags=[],this.tag=null,this.topNS=null,this.chunk=\"\",this.chunkPosition=0,this.i=0,this.prevI=0,this.carriedFromPrevious=void 0,this.forbiddenState=0,this.attribList=[];const{fragmentOpt:t}=this;this.state=t?13:0,this.reportedTextBeforeRoot=this.reportedTextAfterRoot=this.closedRoot=this.sawRoot=t,this.xmlDeclPossible=!t,this.xmlDeclExpects=[\"version\"],this.entityReturnState=void 0;let{defaultXMLVersion:r}=this.opt;if(void 0===r){if(!0===this.opt.forceXMLVersion)throw new Error(\"forceXMLVersion set but defaultXMLVersion is not set\");r=\"1.0\"}this.setXMLVersion(r),this.positionAtNewLine=0,this.doctype=!1,this._closed=!1,this.xmlDecl={version:void 0,encoding:void 0,standalone:void 0},this.line=1,this.column=0,this.ENTITIES=Object.create(v),null===(e=this.readyHandler)||void 0===e||e.call(this)}get position(){return this.chunkPosition+this.i}get columnIndex(){return this.position-this.positionAtNewLine}on(e,t){this[A[e]]=t}off(e){this[A[e]]=void 0}makeError(e){var t;let r=null!==(t=this.fileName)&&void 0!==t?t:\"\";return this.trackPosition&&(r.length>0&&(r+=\":\"),r+=`${this.line}:${this.column}`),r.length>0&&(r+=\": \"),new Error(r+e)}fail(e){const t=this.makeError(e),r=this.errorHandler;if(void 0===r)throw t;return r(t),this}write(e){if(this.closed)return this.fail(\"cannot write after close; assign an onready handler.\");let t=!1;null===e?(t=!0,e=\"\"):\"object\"==typeof e&&(e=e.toString()),void 0!==this.carriedFromPrevious&&(e=`${this.carriedFromPrevious}${e}`,this.carriedFromPrevious=void 0);let r=e.length;const n=e.charCodeAt(r-1);!t&&(13===n||n>=55296&&n<=56319)&&(this.carriedFromPrevious=e[r-1],r--,e=e.slice(0,r));const{stateTable:i}=this;for(this.chunk=e,this.i=0;this.i<r;)i[this.state].call(this);return this.chunkPosition+=r,t?this.end():this}close(){return this.write(null)}getCode10(){const{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return-1;const r=e.charCodeAt(t);if(this.column++,r<55296){if(r>=32||9===r)return r;switch(r){case 10:return this.line++,this.column=0,this.positionAtNewLine=this.position,10;case 13:return 10===e.charCodeAt(t+1)&&(this.i=t+2),this.line++,this.column=0,this.positionAtNewLine=this.position,-2;default:return this.fail(\"disallowed character.\"),r}}if(r>56319)return r>=57344&&r<=65533||this.fail(\"disallowed character.\"),r;const n=65536+1024*(r-55296)+(e.charCodeAt(t+1)-56320);return this.i=t+2,n>1114111&&this.fail(\"disallowed character.\"),n}getCode11(){const{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return-1;const r=e.charCodeAt(t);if(this.column++,r<55296){if(r>31&&r<127||r>159&&8232!==r||9===r)return r;switch(r){case 10:return this.line++,this.column=0,this.positionAtNewLine=this.position,10;case 13:{const r=e.charCodeAt(t+1);10!==r&&133!==r||(this.i=t+2)}case 133:case 8232:return this.line++,this.column=0,this.positionAtNewLine=this.position,-2;default:return this.fail(\"disallowed character.\"),r}}if(r>56319)return r>=57344&&r<=65533||this.fail(\"disallowed character.\"),r;const n=65536+1024*(r-55296)+(e.charCodeAt(t+1)-56320);return this.i=t+2,n>1114111&&this.fail(\"disallowed character.\"),n}getCodeNorm(){const e=this.getCode();return-2===e?10:e}unget(){this.i=this.prevI,this.column--}captureTo(e){let{i:t}=this;const{chunk:r}=this;for(;;){const n=this.getCode(),i=-2===n,s=i?10:n;if(-1===s||e.includes(s))return this.text+=r.slice(t,this.prevI),s;i&&(this.text+=r.slice(t,this.prevI)+\"\\n\",t=this.i)}}captureToChar(e){let{i:t}=this;const{chunk:r}=this;for(;;){let n=this.getCode();switch(n){case-2:this.text+=r.slice(t,this.prevI)+\"\\n\",t=this.i,n=10;break;case-1:return this.text+=r.slice(t),!1}if(n===e)return this.text+=r.slice(t,this.prevI),!0}}captureNameChars(){const{chunk:e,i:t}=this;for(;;){const r=this.getCode();if(-1===r)return this.name+=e.slice(t),-1;if(!c(r))return this.name+=e.slice(t,this.prevI),-2===r?10:r}}skipSpaces(){for(;;){const e=this.getCodeNorm();if(-1===e||!o(e))return e}}setXMLVersion(e){this.currentXMLVersion=e,\"1.0\"===e?(this.isChar=a,this.getCode=this.getCode10):(this.isChar=f,this.getCode=this.getCode11)}sBegin(){65279===this.chunk.charCodeAt(0)&&(this.i++,this.column++),this.state=1}sBeginWhitespace(){const e=this.i,t=this.skipSpaces();switch(this.prevI!==e&&(this.xmlDeclPossible=!1),t){case 60:if(this.state=15,0!==this.text.length)throw new Error(\"no-empty text at start\");break;case-1:break;default:this.unget(),this.state=13,this.xmlDeclPossible=!1}}sDoctype(){var e;const t=this.captureTo(x);switch(t){case 62:null===(e=this.doctypeHandler)||void 0===e||e.call(this,this.text),this.text=\"\",this.state=13,this.doctype=!0;break;case-1:break;default:this.text+=String.fromCodePoint(t),91===t?this.state=4:w(t)&&(this.state=3,this.q=t)}}sDoctypeQuote(){const e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.q=null,this.state=2)}sDTD(){const e=this.captureTo(k);-1!==e&&(this.text+=String.fromCodePoint(e),93===e?this.state=2:60===e?this.state=6:w(e)&&(this.state=5,this.q=e))}sDTDQuoted(){const e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.state=4,this.q=null)}sDTDOpenWaka(){const e=this.getCodeNorm();switch(this.text+=String.fromCodePoint(e),e){case 33:this.state=7,this.openWakaBang=\"\";break;case 63:this.state=11;break;default:this.state=4}}sDTDOpenWakaBang(){const e=String.fromCodePoint(this.getCodeNorm()),t=this.openWakaBang+=e;this.text+=e,\"-\"!==t&&(this.state=\"--\"===t?8:4,this.openWakaBang=\"\")}sDTDComment(){this.captureToChar(45)&&(this.text+=\"-\",this.state=9)}sDTDCommentEnding(){const e=this.getCodeNorm();this.text+=String.fromCodePoint(e),this.state=45===e?10:8}sDTDCommentEnded(){const e=this.getCodeNorm();this.text+=String.fromCodePoint(e),62===e?this.state=4:(this.fail(\"malformed comment.\"),this.state=8)}sDTDPI(){this.captureToChar(63)&&(this.text+=\"?\",this.state=12)}sDTDPIEnding(){const e=this.getCodeNorm();this.text+=String.fromCodePoint(e),62===e&&(this.state=4)}sText(){0!==this.tags.length?this.handleTextInRoot():this.handleTextOutsideRoot()}sEntity(){let{i:e}=this;const{chunk:t}=this;e:for(;;)switch(this.getCode()){case-2:this.entity+=t.slice(e,this.prevI)+\"\\n\",e=this.i;break;case 59:{const{entityReturnState:r}=this,n=this.entity+t.slice(e,this.prevI);let i;this.state=r,\"\"===n?(this.fail(\"empty entity name.\"),i=\"&;\"):(i=this.parseEntity(n),this.entity=\"\"),13===r&&void 0===this.textHandler||(this.text+=i);break e}case-1:this.entity+=t.slice(e);break e}}sOpenWaka(){const e=this.getCode();if(l(e))this.state=34,this.unget(),this.xmlDeclPossible=!1;else switch(e){case 47:this.state=43,this.xmlDeclPossible=!1;break;case 33:this.state=16,this.openWakaBang=\"\",this.xmlDeclPossible=!1;break;case 63:this.state=23;break;default:this.fail(\"disallowed character in tag name\"),this.state=13,this.xmlDeclPossible=!1}}sOpenWakaBang(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case\"[CDATA[\":this.sawRoot||this.reportedTextBeforeRoot||(this.fail(\"text data outside of root node.\"),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(\"text data outside of root node.\"),this.reportedTextAfterRoot=!0),this.state=20,this.openWakaBang=\"\";break;case\"--\":this.state=17,this.openWakaBang=\"\";break;case\"DOCTYPE\":this.state=2,(this.doctype||this.sawRoot)&&this.fail(\"inappropriately located doctype declaration.\"),this.openWakaBang=\"\";break;default:this.openWakaBang.length>=7&&this.fail(\"incorrect syntax.\")}}sComment(){this.captureToChar(45)&&(this.state=18)}sCommentEnding(){var e;const t=this.getCodeNorm();45===t?(this.state=19,null===(e=this.commentHandler)||void 0===e||e.call(this,this.text),this.text=\"\"):(this.text+=\"-\"+String.fromCodePoint(t),this.state=17)}sCommentEnded(){const e=this.getCodeNorm();62!==e?(this.fail(\"malformed comment.\"),this.text+=\"--\"+String.fromCodePoint(e),this.state=17):this.state=13}sCData(){this.captureToChar(93)&&(this.state=21)}sCDataEnding(){const e=this.getCodeNorm();93===e?this.state=22:(this.text+=\"]\"+String.fromCodePoint(e),this.state=20)}sCDataEnding2(){var e;const t=this.getCodeNorm();switch(t){case 62:null===(e=this.cdataHandler)||void 0===e||e.call(this,this.text),this.text=\"\",this.state=13;break;case 93:this.text+=\"]\";break;default:this.text+=\"]]\"+String.fromCodePoint(t),this.state=20}}sPIFirstChar(){const e=this.getCodeNorm();this.nameStartCheck(e)?(this.piTarget+=String.fromCodePoint(e),this.state=24):63===e||o(e)?(this.fail(\"processing instruction without a target.\"),this.state=63===e?26:25):(this.fail(\"disallowed character in processing instruction name.\"),this.piTarget+=String.fromCodePoint(e),this.state=24)}sPIRest(){const{chunk:e,i:t}=this;for(;;){const r=this.getCodeNorm();if(-1===r)return void(this.piTarget+=e.slice(t));if(!this.nameCheck(r)){this.piTarget+=e.slice(t,this.prevI);const n=63===r;n||o(r)?\"xml\"===this.piTarget?(this.xmlDeclPossible||this.fail(\"an XML declaration must be at the start of the document.\"),this.state=n?33:27):this.state=n?26:25:(this.fail(\"disallowed character in processing instruction name.\"),this.piTarget+=String.fromCodePoint(r));break}}}sPIBody(){if(0===this.text.length){const e=this.getCodeNorm();63===e?this.state=26:o(e)||(this.text=String.fromCodePoint(e))}else this.captureToChar(63)&&(this.state=26)}sPIEnding(){var e;const t=this.getCodeNorm();if(62===t){const{piTarget:t}=this;\"xml\"===t.toLowerCase()&&this.fail(\"the XML declaration must appear at the start of the document.\"),null===(e=this.piHandler)||void 0===e||e.call(this,{target:t,body:this.text}),this.piTarget=this.text=\"\",this.state=13}else 63===t?this.text+=\"?\":(this.text+=\"?\"+String.fromCodePoint(t),this.state=25);this.xmlDeclPossible=!1}sXMLDeclNameStart(){const e=this.skipSpaces();63!==e?-1!==e&&(this.state=28,this.name=String.fromCodePoint(e)):this.state=33}sXMLDeclName(){const e=this.captureTo(S);if(63===e)return this.state=33,this.name+=this.text,this.text=\"\",void this.fail(\"XML declaration is incomplete.\");if(o(e)||61===e){if(this.name+=this.text,this.text=\"\",!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail(\"did not expect any more name/value pairs.\");break;case 1:this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);break;default:this.fail(\"expected one of \"+this.xmlDeclExpects.join(\", \"))}this.state=61===e?30:29}}sXMLDeclEq(){const e=this.getCodeNorm();if(63===e)return this.state=33,void this.fail(\"XML declaration is incomplete.\");o(e)||(61!==e&&this.fail(\"value required.\"),this.state=30)}sXMLDeclValueStart(){const e=this.getCodeNorm();if(63===e)return this.state=33,void this.fail(\"XML declaration is incomplete.\");o(e)||(w(e)?this.q=e:(this.fail(\"value must be quoted.\"),this.q=32),this.state=31)}sXMLDeclValue(){const e=this.captureTo([this.q,63]);if(63===e)return this.state=33,this.text=\"\",void this.fail(\"XML declaration is incomplete.\");if(-1===e)return;const t=this.text;switch(this.text=\"\",this.name){case\"version\":{this.xmlDeclExpects=[\"encoding\",\"standalone\"];const e=t;this.xmlDecl.version=e,/^1\\.[0-9]+$/.test(e)?this.opt.forceXMLVersion||this.setXMLVersion(e):this.fail(\"version number must match /^1\\\\.[0-9]+$/.\");break}case\"encoding\":/^[A-Za-z][A-Za-z0-9._-]*$/.test(t)||this.fail(\"encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/.\"),this.xmlDeclExpects=[\"standalone\"],this.xmlDecl.encoding=t;break;case\"standalone\":\"yes\"!==t&&\"no\"!==t&&this.fail('standalone value must match \"yes\" or \"no\".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=t}this.name=\"\",this.state=32}sXMLDeclSeparator(){const e=this.getCodeNorm();63!==e?(o(e)||(this.fail(\"whitespace required.\"),this.unget()),this.state=27):this.state=33}sXMLDeclEnding(){var e;62===this.getCodeNorm()?(\"xml\"!==this.piTarget?this.fail(\"processing instructions are not allowed before root.\"):\"version\"!==this.name&&this.xmlDeclExpects.includes(\"version\")&&this.fail(\"XML declaration must contain a version.\"),null===(e=this.xmldeclHandler)||void 0===e||e.call(this,this.xmlDecl),this.name=\"\",this.piTarget=this.text=\"\",this.state=13):this.fail(\"The character ? is disallowed anywhere in XML declarations.\"),this.xmlDeclPossible=!1}sOpenTag(){var e;const t=this.captureNameChars();if(-1===t)return;const r=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name=\"\",this.xmlnsOpt&&(this.topNS=r.ns=Object.create(null)),null===(e=this.openTagStartHandler)||void 0===e||e.call(this,r),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail(\"documents may contain only one root.\"),t){case 62:this.openTag();break;case 47:this.state=35;break;default:o(t)||this.fail(\"disallowed character in tag name.\"),this.state=36}}sOpenTagSlash(){62===this.getCode()?this.openSelfClosingTag():(this.fail(\"forward-slash in opening tag not followed by >.\"),this.state=36)}sAttrib(){const e=this.skipSpaces();-1!==e&&(l(e)?(this.unget(),this.state=37):62===e?this.openTag():47===e?this.state=35:this.fail(\"disallowed character in attribute name.\"))}sAttribName(){const e=this.captureNameChars();61===e?this.state=39:o(e)?this.state=38:62===e?(this.fail(\"attribute without value.\"),this.pushAttrib(this.name,this.name),this.name=this.text=\"\",this.openTag()):-1!==e&&this.fail(\"disallowed character in attribute name.\")}sAttribNameSawWhite(){const e=this.skipSpaces();switch(e){case-1:return;case 61:this.state=39;break;default:this.fail(\"attribute without value.\"),this.text=\"\",this.name=\"\",62===e?this.openTag():l(e)?(this.unget(),this.state=37):(this.fail(\"disallowed character in attribute name.\"),this.state=36)}}sAttribValue(){const e=this.getCodeNorm();w(e)?(this.q=e,this.state=40):o(e)||(this.fail(\"unquoted attribute value.\"),this.state=42,this.unget())}sAttribValueQuoted(){const{q:e,chunk:t}=this;let{i:r}=this;for(;;)switch(this.getCode()){case e:return this.pushAttrib(this.name,this.text+t.slice(r,this.prevI)),this.name=this.text=\"\",this.q=null,void(this.state=41);case 38:return this.text+=t.slice(r,this.prevI),this.state=14,void(this.entityReturnState=40);case 10:case-2:case 9:this.text+=t.slice(r,this.prevI)+\" \",r=this.i;break;case 60:return this.text+=t.slice(r,this.prevI),void this.fail(\"disallowed character.\");case-1:return void(this.text+=t.slice(r))}}sAttribValueClosed(){const e=this.getCodeNorm();o(e)?this.state=36:62===e?this.openTag():47===e?this.state=35:l(e)?(this.fail(\"no whitespace between attributes.\"),this.unget(),this.state=37):this.fail(\"disallowed character in attribute name.\")}sAttribValueUnquoted(){const e=this.captureTo(M);switch(e){case 38:this.state=14,this.entityReturnState=42;break;case 60:this.fail(\"disallowed character.\");break;case-1:break;default:this.text.includes(\"]]>\")&&this.fail('the string \"]]>\" is disallowed in char data.'),this.pushAttrib(this.name,this.text),this.name=this.text=\"\",62===e?this.openTag():this.state=36}}sCloseTag(){const e=this.captureNameChars();62===e?this.closeTag():o(e)?this.state=44:-1!==e&&this.fail(\"disallowed character in closing tag.\")}sCloseTagSawWhite(){switch(this.skipSpaces()){case 62:this.closeTag();break;case-1:break;default:this.fail(\"disallowed character in closing tag.\")}}handleTextInRoot(){let{i:e,forbiddenState:t}=this;const{chunk:r,textHandler:n}=this;e:for(;;)switch(this.getCode()){case 60:if(this.state=15,void 0!==n){const{text:t}=this,i=r.slice(e,this.prevI);0!==t.length?(n(t+i),this.text=\"\"):0!==i.length&&n(i)}t=0;break e;case 38:this.state=14,this.entityReturnState=13,void 0!==n&&(this.text+=r.slice(e,this.prevI)),t=0;break e;case 93:switch(t){case 0:t=1;break;case 1:t=2;break;case 2:break;default:throw new Error(\"impossible state\")}break;case 62:2===t&&this.fail('the string \"]]>\" is disallowed in char data.'),t=0;break;case-2:void 0!==n&&(this.text+=r.slice(e,this.prevI)+\"\\n\"),e=this.i,t=0;break;case-1:void 0!==n&&(this.text+=r.slice(e));break e;default:t=0}this.forbiddenState=t}handleTextOutsideRoot(){let{i:e}=this;const{chunk:t,textHandler:r}=this;let n=!1;e:for(;;){const i=this.getCode();switch(i){case 60:if(this.state=15,void 0!==r){const{text:n}=this,i=t.slice(e,this.prevI);0!==n.length?(r(n+i),this.text=\"\"):0!==i.length&&r(i)}break e;case 38:this.state=14,this.entityReturnState=13,void 0!==r&&(this.text+=t.slice(e,this.prevI)),n=!0;break e;case-2:void 0!==r&&(this.text+=t.slice(e,this.prevI)+\"\\n\"),e=this.i;break;case-1:void 0!==r&&(this.text+=t.slice(e));break e;default:o(i)||(n=!0)}}n&&(this.sawRoot||this.reportedTextBeforeRoot||(this.fail(\"text data outside of root node.\"),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(\"text data outside of root node.\"),this.reportedTextAfterRoot=!0))}pushAttribNS(e,t){var r;const{prefix:n,local:i}=this.qname(e),s={name:e,prefix:n,local:i,value:t};if(this.attribList.push(s),null===(r=this.attributeHandler)||void 0===r||r.call(this,s),\"xmlns\"===n){const e=t.trim();\"1.0\"===this.currentXMLVersion&&\"\"===e&&this.fail(\"invalid attempt to undefine prefix in XML 1.0\"),this.topNS[i]=e,C(this,i,e)}else if(\"xmlns\"===e){const e=t.trim();this.topNS[\"\"]=e,C(this,\"\",e)}}pushAttribPlain(e,t){var r;const n={name:e,value:t};this.attribList.push(n),null===(r=this.attributeHandler)||void 0===r||r.call(this,n)}end(){var e,t;this.sawRoot||this.fail(\"document must contain a root element.\");const{tags:r}=this;for(;r.length>0;){const e=r.pop();this.fail(\"unclosed tag: \"+e.name)}0!==this.state&&13!==this.state&&this.fail(\"unexpected end.\");const{text:n}=this;return 0!==n.length&&(null===(e=this.textHandler)||void 0===e||e.call(this,n),this.text=\"\"),this._closed=!0,null===(t=this.endHandler)||void 0===t||t.call(this),this._init(),this}resolve(e){var t,r;let n=this.topNS[e];if(void 0!==n)return n;const{tags:i}=this;for(let t=i.length-1;t>=0;t--)if(n=i[t].ns[e],void 0!==n)return n;return n=this.ns[e],void 0!==n?n:null===(r=(t=this.opt).resolvePrefix)||void 0===r?void 0:r.call(t,e)}qname(e){const t=e.indexOf(\":\");if(-1===t)return{prefix:\"\",local:e};const r=e.slice(t+1),n=e.slice(0,t);return(\"\"===n||\"\"===r||r.includes(\":\"))&&this.fail(`malformed name: ${e}.`),{prefix:n,local:r}}processAttribsNS(){var e;const{attribList:t}=this,r=this.tag;{const{prefix:t,local:n}=this.qname(r.name);r.prefix=t,r.local=n;const i=r.uri=null!==(e=this.resolve(t))&&void 0!==e?e:\"\";\"\"!==t&&(\"xmlns\"===t&&this.fail('tags may not have \"xmlns\" as prefix.'),\"\"===i&&(this.fail(`unbound namespace prefix: ${JSON.stringify(t)}.`),r.uri=t))}if(0===t.length)return;const{attributes:n}=r,i=new Set;for(const e of t){const{name:t,prefix:r,local:s}=e;let o,a;\"\"===r?(o=\"xmlns\"===t?g:\"\",a=t):(o=this.resolve(r),void 0===o&&(this.fail(`unbound namespace prefix: ${JSON.stringify(r)}.`),o=r),a=`{${o}}${s}`),i.has(a)&&this.fail(`duplicate attribute: ${a}.`),i.add(a),e.uri=o,n[t]=e}this.attribList=[]}processAttribsPlain(){const{attribList:e}=this,t=this.tag.attributes;for(const{name:r,value:n}of e)void 0!==t[r]&&this.fail(`duplicate attribute: ${r}.`),t[r]=n;this.attribList=[]}openTag(){var e;this.processAttribs();const{tags:t}=this,r=this.tag;r.isSelfClosing=!1,null===(e=this.openTagHandler)||void 0===e||e.call(this,r),t.push(r),this.state=13,this.name=\"\"}openSelfClosingTag(){var e,t,r;this.processAttribs();const{tags:n}=this,i=this.tag;i.isSelfClosing=!0,null===(e=this.openTagHandler)||void 0===e||e.call(this,i),null===(t=this.closeTagHandler)||void 0===t||t.call(this,i);null===(this.tag=null!==(r=n[n.length-1])&&void 0!==r?r:null)&&(this.closedRoot=!0),this.state=13,this.name=\"\"}closeTag(){const{tags:e,name:t}=this;if(this.state=13,this.name=\"\",\"\"===t)return this.fail(\"weird empty close tag.\"),void(this.text+=\"</>\");const r=this.closeTagHandler;let n=e.length;for(;n-- >0;){const n=this.tag=e.pop();if(this.topNS=n.ns,null==r||r(n),n.name===t)break;this.fail(\"unexpected close tag.\")}0===n?this.closedRoot=!0:n<0&&(this.fail(`unmatched closing tag: ${t}.`),this.text+=`</${t}>`)}parseEntity(e){if(\"#\"!==e[0]){const t=this.ENTITIES[e];return void 0!==t?t:(this.fail(this.isName(e)?\"undefined entity.\":\"disallowed character in entity name.\"),`&${e};`)}let t=NaN;return\"x\"===e[1]&&/^#x[0-9a-f]+$/i.test(e)?t=parseInt(e.slice(2),16):/^#[0-9]+$/.test(e)&&(t=parseInt(e.slice(1),10)),this.isChar(t)?String.fromCodePoint(t):(this.fail(\"malformed character entity.\"),`&${e};`)}}},{\"xmlchars/xml/1.0/ed5\":543,\"xmlchars/xml/1.1/ed2\":544,\"xmlchars/xmlns/1.0/ed3\":545}],497:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer;function i(e,t){this._block=n.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}i.prototype.update=function(e,t){\"string\"==typeof e&&(t=t||\"utf8\",e=n.from(e,t));for(var r=this._block,i=this._blockSize,s=e.length,o=this._len,a=0;a<s;){for(var l=o%i,c=Math.min(s-a,i-l),u=0;u<c;u++)r[l+u]=e[a+u];a+=c,(o+=c)%i==0&&this._update(r)}return this._len+=s,this},i.prototype.digest=function(e){var t=this._len%this._blockSize;this._block[t]=128,this._block.fill(0,t+1),t>=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var s=this._hash();return e?s.toString(e):s},i.prototype._update=function(){throw new Error(\"_update must be implemented by subclass\")},t.exports=i},{\"safe-buffer\":494}],498:[function(e,t,r){\"use strict\";var n=t.exports=function(e){e=e.toLowerCase();var t=n[e];if(!t)throw new Error(e+\" is not supported (we accept pull requests)\");return new t};n.sha=e(\"./sha\"),n.sha1=e(\"./sha1\"),n.sha224=e(\"./sha224\"),n.sha256=e(\"./sha256\"),n.sha384=e(\"./sha384\"),n.sha512=e(\"./sha512\")},{\"./sha\":499,\"./sha1\":500,\"./sha224\":501,\"./sha256\":502,\"./sha384\":503,\"./sha512\":504}],499:[function(e,t,r){\"use strict\";var n=e(\"inherits\"),i=e(\"./hash\"),s=e(\"safe-buffer\").Buffer,o=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function l(){this.init(),this._w=a,i.call(this,64,56)}function c(e){return e<<30|e>>>2}function u(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(l,i),l.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},l.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,s=0|this._c,a=0|this._d,l=0|this._e,h=0;h<16;++h)r[h]=e.readInt32BE(4*h);for(;h<80;++h)r[h]=r[h-3]^r[h-8]^r[h-14]^r[h-16];for(var f=0;f<80;++f){var d=~~(f/20),p=0|((t=n)<<5|t>>>27)+u(d,i,s,a)+l+r[f]+o[d];l=a,a=s,s=c(i),i=n,n=p}this._a=n+this._a|0,this._b=i+this._b|0,this._c=s+this._c|0,this._d=a+this._d|0,this._e=l+this._e|0},l.prototype._hash=function(){var e=s.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},t.exports=l},{\"./hash\":497,inherits:440,\"safe-buffer\":494}],500:[function(e,t,r){\"use strict\";var n=e(\"inherits\"),i=e(\"./hash\"),s=e(\"safe-buffer\").Buffer,o=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function l(){this.init(),this._w=a,i.call(this,64,56)}function c(e){return e<<5|e>>>27}function u(e){return e<<30|e>>>2}function h(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(l,i),l.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},l.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,s=0|this._c,a=0|this._d,l=0|this._e,f=0;f<16;++f)r[f]=e.readInt32BE(4*f);for(;f<80;++f)r[f]=(t=r[f-3]^r[f-8]^r[f-14]^r[f-16])<<1|t>>>31;for(var d=0;d<80;++d){var p=~~(d/20),m=c(n)+h(p,i,s,a)+l+r[d]+o[p]|0;l=a,a=s,s=u(i),i=n,n=m}this._a=n+this._a|0,this._b=i+this._b|0,this._c=s+this._c|0,this._d=a+this._d|0,this._e=l+this._e|0},l.prototype._hash=function(){var e=s.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},t.exports=l},{\"./hash\":497,inherits:440,\"safe-buffer\":494}],501:[function(e,t,r){\"use strict\";var n=e(\"inherits\"),i=e(\"./sha256\"),s=e(\"./hash\"),o=e(\"safe-buffer\").Buffer,a=new Array(64);function l(){this.init(),this._w=a,s.call(this,64,56)}n(l,i),l.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},l.prototype._hash=function(){var e=o.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},t.exports=l},{\"./hash\":497,\"./sha256\":502,inherits:440,\"safe-buffer\":494}],502:[function(e,t,r){\"use strict\";var n=e(\"inherits\"),i=e(\"./hash\"),s=e(\"safe-buffer\").Buffer,o=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],a=new Array(64);function l(){this.init(),this._w=a,i.call(this,64,56)}function c(e,t,r){return r^e&(t^r)}function u(e,t,r){return e&t|r&(e|t)}function h(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function f(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function d(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}n(l,i),l.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},l.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,s=0|this._c,a=0|this._d,l=0|this._e,p=0|this._f,m=0|this._g,b=0|this._h,g=0;g<16;++g)r[g]=e.readInt32BE(4*g);for(;g<64;++g)r[g]=0|(((t=r[g-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[g-7]+d(r[g-15])+r[g-16];for(var y=0;y<64;++y){var v=b+f(l)+c(l,p,m)+o[y]+r[y]|0,w=h(n)+u(n,i,s)|0;b=m,m=p,p=l,l=a+v|0,a=s,s=i,i=n,n=v+w|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=s+this._c|0,this._d=a+this._d|0,this._e=l+this._e|0,this._f=p+this._f|0,this._g=m+this._g|0,this._h=b+this._h|0},l.prototype._hash=function(){var e=s.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},t.exports=l},{\"./hash\":497,inherits:440,\"safe-buffer\":494}],503:[function(e,t,r){\"use strict\";var n=e(\"inherits\"),i=e(\"./sha512\"),s=e(\"./hash\"),o=e(\"safe-buffer\").Buffer,a=new Array(160);function l(){this.init(),this._w=a,s.call(this,128,112)}n(l,i),l.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},l.prototype._hash=function(){var e=o.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},t.exports=l},{\"./hash\":497,\"./sha512\":504,inherits:440,\"safe-buffer\":494}],504:[function(e,t,r){\"use strict\";var n=e(\"inherits\"),i=e(\"./hash\"),s=e(\"safe-buffer\").Buffer,o=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],a=new Array(160);function l(){this.init(),this._w=a,i.call(this,128,112)}function c(e,t,r){return r^e&(t^r)}function u(e,t,r){return e&t|r&(e|t)}function h(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function f(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function d(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function p(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function m(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function b(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function g(e,t){return e>>>0<t>>>0?1:0}n(l,i),l.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},l.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,s=0|this._dh,a=0|this._eh,l=0|this._fh,y=0|this._gh,v=0|this._hh,w=0|this._al,_=0|this._bl,x=0|this._cl,k=0|this._dl,S=0|this._el,M=0|this._fl,C=0|this._gl,T=0|this._hl,E=0;E<32;E+=2)t[E]=e.readInt32BE(4*E),t[E+1]=e.readInt32BE(4*E+4);for(;E<160;E+=2){var A=t[E-30],R=t[E-30+1],O=d(A,R),j=p(R,A),I=m(A=t[E-4],R=t[E-4+1]),N=b(R,A),P=t[E-14],B=t[E-14+1],D=t[E-32],F=t[E-32+1],L=j+B|0,z=O+P+g(L,j)|0;z=(z=z+I+g(L=L+N|0,N)|0)+D+g(L=L+F|0,F)|0,t[E]=z,t[E+1]=L}for(var U=0;U<160;U+=2){z=t[U],L=t[U+1];var $=u(r,n,i),H=u(w,_,x),V=h(r,w),q=h(w,r),W=f(a,S),X=f(S,a),K=o[U],Y=o[U+1],Z=c(a,l,y),G=c(S,M,C),J=T+X|0,Q=v+W+g(J,T)|0;Q=(Q=(Q=Q+Z+g(J=J+G|0,G)|0)+K+g(J=J+Y|0,Y)|0)+z+g(J=J+L|0,L)|0;var ee=q+H|0,te=V+$+g(ee,q)|0;v=y,T=C,y=l,C=M,l=a,M=S,a=s+Q+g(S=k+J|0,k)|0,s=i,k=x,i=n,x=_,n=r,_=w,r=Q+te+g(w=J+ee|0,J)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+x|0,this._dl=this._dl+k|0,this._el=this._el+S|0,this._fl=this._fl+M|0,this._gl=this._gl+C|0,this._hl=this._hl+T|0,this._ah=this._ah+r+g(this._al,w)|0,this._bh=this._bh+n+g(this._bl,_)|0,this._ch=this._ch+i+g(this._cl,x)|0,this._dh=this._dh+s+g(this._dl,k)|0,this._eh=this._eh+a+g(this._el,S)|0,this._fh=this._fh+l+g(this._fl,M)|0,this._gh=this._gh+y+g(this._gl,C)|0,this._hh=this._hh+v+g(this._hl,T)|0},l.prototype._hash=function(){var e=s.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},t.exports=l},{\"./hash\":497,inherits:440,\"safe-buffer\":494}],505:[function(e,t,r){\"use strict\";t.exports=i;var n=e(\"events\").EventEmitter;function i(){n.call(this)}e(\"inherits\")(i,n),i.Readable=e(\"readable-stream/readable.js\"),i.Writable=e(\"readable-stream/writable.js\"),i.Duplex=e(\"readable-stream/duplex.js\"),i.Transform=e(\"readable-stream/transform.js\"),i.PassThrough=e(\"readable-stream/passthrough.js\"),i.Stream=i,i.prototype.pipe=function(e,t){var r=this;function i(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function s(){r.readable&&r.resume&&r.resume()}r.on(\"data\",i),e.on(\"drain\",s),e._isStdio||t&&!1===t.end||(r.on(\"end\",a),r.on(\"close\",l));var o=!1;function a(){o||(o=!0,e.end())}function l(){o||(o=!0,\"function\"==typeof e.destroy&&e.destroy())}function c(e){if(u(),0===n.listenerCount(this,\"error\"))throw e}function u(){r.removeListener(\"data\",i),e.removeListener(\"drain\",s),r.removeListener(\"end\",a),r.removeListener(\"close\",l),r.removeListener(\"error\",c),e.removeListener(\"error\",c),r.removeListener(\"end\",u),r.removeListener(\"close\",u),e.removeListener(\"close\",u)}return r.on(\"error\",c),e.on(\"error\",c),r.on(\"end\",u),r.on(\"close\",u),e.on(\"close\",u),e.emit(\"pipe\",r),e}},{events:422,inherits:440,\"readable-stream/duplex.js\":507,\"readable-stream/passthrough.js\":516,\"readable-stream/readable.js\":517,\"readable-stream/transform.js\":518,\"readable-stream/writable.js\":519}],506:[function(e,t,r){\"use strict\";var n={}.toString;t.exports=Array.isArray||function(e){return\"[object Array]\"==n.call(e)}},{}],507:[function(e,t,r){\"use strict\";t.exports=e(\"./lib/_stream_duplex.js\")},{\"./lib/_stream_duplex.js\":508}],508:[function(e,t,r){\"use strict\";var n=e(\"process-nextick-args\"),i=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};t.exports=h;var s=Object.create(e(\"core-util-is\"));s.inherits=e(\"inherits\");var o=e(\"./_stream_readable\"),a=e(\"./_stream_writable\");s.inherits(h,o);for(var l=i(a.prototype),c=0;c<l.length;c++){var u=l[c];h.prototype[u]||(h.prototype[u]=a.prototype[u])}function h(e){if(!(this instanceof h))return new h(e);o.call(this,e),a.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once(\"end\",f)}function f(){this.allowHalfOpen||this._writableState.ended||n.nextTick(d,this)}function d(e){e.end()}Object.defineProperty(h.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(h.prototype,\"destroyed\",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}}),h.prototype._destroy=function(e,t){this.push(null),this.end(),n.nextTick(t,e)}},{\"./_stream_readable\":510,\"./_stream_writable\":512,\"core-util-is\":383,inherits:440,\"process-nextick-args\":466}],509:[function(e,t,r){\"use strict\";t.exports=s;var n=e(\"./_stream_transform\"),i=Object.create(e(\"core-util-is\"));function s(e){if(!(this instanceof s))return new s(e);n.call(this,e)}i.inherits=e(\"inherits\"),i.inherits(s,n),s.prototype._transform=function(e,t,r){r(null,e)}},{\"./_stream_transform\":511,\"core-util-is\":383,inherits:440}],510:[function(e,t,r){(function(r,n){(function(){\"use strict\";var i=e(\"process-nextick-args\");t.exports=v;var s,o=e(\"isarray\");v.ReadableState=y;e(\"events\").EventEmitter;var a=function(e,t){return e.listeners(t).length},l=e(\"./internal/streams/stream\"),c=e(\"safe-buffer\").Buffer,u=(void 0!==n?n:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var h=Object.create(e(\"core-util-is\"));h.inherits=e(\"inherits\");var f=e(\"util\"),d=void 0;d=f&&f.debuglog?f.debuglog(\"stream\"):function(){};var p,m=e(\"./internal/streams/BufferList\"),b=e(\"./internal/streams/destroy\");h.inherits(v,l);var g=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function y(t,r){t=t||{};var n=r instanceof(s=s||e(\"./_stream_duplex\"));this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var i=t.highWaterMark,o=t.readableHighWaterMark,a=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(o||0===o)?o:a,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(p||(p=e(\"string_decoder/\").StringDecoder),this.decoder=new p(t.encoding),this.encoding=t.encoding)}function v(t){if(s=s||e(\"./_stream_duplex\"),!(this instanceof v))return new v(t);this._readableState=new y(t,this),this.readable=!0,t&&(\"function\"==typeof t.read&&(this._read=t.read),\"function\"==typeof t.destroy&&(this._destroy=t.destroy)),l.call(this)}function w(e,t,r,n,i){var s,o=e._readableState;null===t?(o.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,k(e)}(e,o)):(i||(s=function(e,t){var r;n=t,c.isBuffer(n)||n instanceof u||\"string\"==typeof t||void 0===t||e.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\"));var n;return r}(o,t)),s?e.emit(\"error\",s):o.objectMode||t&&t.length>0?(\"string\"==typeof t||o.objectMode||Object.getPrototypeOf(t)===c.prototype||(t=function(e){return c.from(e)}(t)),n?o.endEmitted?e.emit(\"error\",new Error(\"stream.unshift() after end event\")):_(e,o,t,!0):o.ended?e.emit(\"error\",new Error(\"stream.push() after EOF\")):(o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?_(e,o,t,!1):M(e,o)):_(e,o,t,!1))):n||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||0===e.length)}(o)}function _(e,t,r,n){t.flowing&&0===t.length&&!t.sync?(e.emit(\"data\",r),e.read(0)):(t.length+=t.objectMode?1:r.length,n?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&k(e)),M(e,t)}Object.defineProperty(v.prototype,\"destroyed\",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),v.prototype.destroy=b.destroy,v.prototype._undestroy=b.undestroy,v.prototype._destroy=function(e,t){this.push(null),t(e)},v.prototype.push=function(e,t){var r,n=this._readableState;return n.objectMode?r=!0:\"string\"==typeof e&&((t=t||n.defaultEncoding)!==n.encoding&&(e=c.from(e,t),t=\"\"),r=!0),w(this,e,t,!1,r)},v.prototype.unshift=function(e){return w(this,e,null,!0,!1)},v.prototype.isPaused=function(){return!1===this._readableState.flowing},v.prototype.setEncoding=function(t){return p||(p=e(\"string_decoder/\").StringDecoder),this._readableState.decoder=new p(t),this._readableState.encoding=t,this};function x(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function k(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(d(\"emitReadable\",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(S,e):S(e))}function S(e){d(\"emit readable\"),e.emit(\"readable\"),A(e)}function M(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(C,e,t))}function C(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(d(\"maybeReadMore read 0\"),e.read(0),r!==t.length);)r=t.length;t.readingMore=!1}function T(e){d(\"readable nexttick read 0\"),e.read(0)}function E(e,t){t.reading||(d(\"resume read 0\"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit(\"resume\"),A(e),t.flowing&&!t.reading&&e.read(0)}function A(e){var t=e._readableState;for(d(\"flow\",t.flowing);t.flowing&&null!==e.read(););}function R(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;e<t.head.data.length?(n=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):n=e===t.head.data.length?t.shift():r?function(e,t){var r=t.head,n=1,i=r.data;e-=i.length;for(;r=r.next;){var s=r.data,o=e>s.length?s.length:e;if(o===s.length?i+=s:i+=s.slice(0,e),0===(e-=o)){o===s.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=s.slice(o));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=c.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var s=n.data,o=e>s.length?s.length:e;if(s.copy(r,r.length-e,0,o),0===(e-=o)){o===s.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=s.slice(o));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function O(e){var t=e._readableState;if(t.length>0)throw new Error('\"endReadable()\" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(j,t,e))}function j(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"))}function I(e,t){for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}v.prototype.read=function(e){d(\"read\",e),e=parseInt(e,10);var t=this._readableState,r=e;if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return d(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?O(this):k(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&O(this),null;var n,i=t.needReadable;return d(\"need readable\",i),(0===t.length||t.length-e<t.highWaterMark)&&d(\"length less than watermark\",i=!0),t.ended||t.reading?d(\"reading or ended\",i=!1):i&&(d(\"do read\"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=x(r,t))),null===(n=e>0?R(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&O(this)),null!==n&&this.emit(\"data\",n),n},v.prototype._read=function(e){this.emit(\"error\",new Error(\"_read() is not implemented\"))},v.prototype.pipe=function(e,t){var n=this,s=this._readableState;switch(s.pipesCount){case 0:s.pipes=e;break;case 1:s.pipes=[s.pipes,e];break;default:s.pipes.push(e)}s.pipesCount+=1,d(\"pipe count=%d opts=%j\",s.pipesCount,t);var l=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?u:v;function c(t,r){d(\"onunpipe\"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,d(\"cleanup\"),e.removeListener(\"close\",g),e.removeListener(\"finish\",y),e.removeListener(\"drain\",h),e.removeListener(\"error\",b),e.removeListener(\"unpipe\",c),n.removeListener(\"end\",u),n.removeListener(\"end\",v),n.removeListener(\"data\",m),f=!0,!s.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function u(){d(\"onend\"),e.end()}s.endEmitted?i.nextTick(l):n.once(\"end\",l),e.on(\"unpipe\",c);var h=function(e){return function(){var t=e._readableState;d(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&a(e,\"data\")&&(t.flowing=!0,A(e))}}(n);e.on(\"drain\",h);var f=!1;var p=!1;function m(t){d(\"ondata\"),p=!1,!1!==e.write(t)||p||((1===s.pipesCount&&s.pipes===e||s.pipesCount>1&&-1!==I(s.pipes,e))&&!f&&(d(\"false write response, pause\",s.awaitDrain),s.awaitDrain++,p=!0),n.pause())}function b(t){d(\"onerror\",t),v(),e.removeListener(\"error\",b),0===a(e,\"error\")&&e.emit(\"error\",t)}function g(){e.removeListener(\"finish\",y),v()}function y(){d(\"onfinish\"),e.removeListener(\"close\",g),v()}function v(){d(\"unpipe\"),n.unpipe(e)}return n.on(\"data\",m),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?o(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",b),e.once(\"close\",g),e.once(\"finish\",y),e.emit(\"pipe\",n),s.flowing||(d(\"pipe resume\"),n.resume()),e},v.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r)),this;if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var s=0;s<i;s++)n[s].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var o=I(t.pipes,e);return-1===o||(t.pipes.splice(o,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit(\"unpipe\",this,r)),this},v.prototype.on=function(e,t){var r=l.prototype.on.call(this,e,t);if(\"data\"===e)!1!==this._readableState.flowing&&this.resume();else if(\"readable\"===e){var n=this._readableState;n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.emittedReadable=!1,n.reading?n.length&&k(this):i.nextTick(T,this))}return r},v.prototype.addListener=v.prototype.on,v.prototype.resume=function(){var e=this._readableState;return e.flowing||(d(\"resume\"),e.flowing=!0,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,i.nextTick(E,e,t))}(this,e)),this},v.prototype.pause=function(){return d(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(d(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this},v.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on(\"end\",(function(){if(d(\"wrapped end\"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on(\"data\",(function(i){(d(\"wrapped data\"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&\"function\"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var s=0;s<g.length;s++)e.on(g[s],this.emit.bind(this,g[s]));return this._read=function(t){d(\"wrapped _read\",t),n&&(n=!1,e.resume())},this},Object.defineProperty(v.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),v._fromList=R}).call(this)}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./_stream_duplex\":508,\"./internal/streams/BufferList\":513,\"./internal/streams/destroy\":514,\"./internal/streams/stream\":515,_process:467,\"core-util-is\":383,events:422,inherits:440,isarray:506,\"process-nextick-args\":466,\"safe-buffer\":520,\"string_decoder/\":521,util:188}],511:[function(e,t,r){\"use strict\";t.exports=o;var n=e(\"./_stream_duplex\"),i=Object.create(e(\"core-util-is\"));function s(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}function o(e){if(!(this instanceof o))return new o(e);n.call(this,e),this._transformState={afterTransform:s.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(\"function\"==typeof e.transform&&(this._transform=e.transform),\"function\"==typeof e.flush&&(this._flush=e.flush)),this.on(\"prefinish\",a)}function a(){var e=this;\"function\"==typeof this._flush?this._flush((function(t,r){l(e,t,r)})):l(this,null,null)}function l(e,t,r){if(t)return e.emit(\"error\",t);if(null!=r&&e.push(r),e._writableState.length)throw new Error(\"Calling transform done when ws.length != 0\");if(e._transformState.transforming)throw new Error(\"Calling transform done when still transforming\");return e.push(null)}i.inherits=e(\"inherits\"),i.inherits(o,n),o.prototype.push=function(e,t){return this._transformState.needTransform=!1,n.prototype.push.call(this,e,t)},o.prototype._transform=function(e,t,r){throw new Error(\"_transform() is not implemented\")},o.prototype._write=function(e,t,r){var n=this._transformState;if(n.writecb=r,n.writechunk=e,n.writeencoding=t,!n.transforming){var i=this._readableState;(n.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},o.prototype._read=function(e){var t=this._transformState;null!==t.writechunk&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0},o.prototype._destroy=function(e,t){var r=this;n.prototype._destroy.call(this,e,(function(e){t(e),r.emit(\"close\")}))}},{\"./_stream_duplex\":508,\"core-util-is\":383,inherits:440}],512:[function(e,t,r){(function(r,n,i){(function(){\"use strict\";var s=e(\"process-nextick-args\");function o(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}t.exports=y;var a,l=!r.browser&&[\"v0.10\",\"v0.9.\"].indexOf(r.version.slice(0,5))>-1?i:s.nextTick;y.WritableState=g;var c=Object.create(e(\"core-util-is\"));c.inherits=e(\"inherits\");var u={deprecate:e(\"util-deprecate\")},h=e(\"./internal/streams/stream\"),f=e(\"safe-buffer\").Buffer,d=(void 0!==n?n:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var p,m=e(\"./internal/streams/destroy\");function b(){}function g(t,r){a=a||e(\"./_stream_duplex\"),t=t||{};var n=r instanceof a;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,c=t.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(c||0===c)?c:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===t.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(s.nextTick(i,n),s.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit(\"error\",n)):(i(n),e._writableState.errorEmitted=!0,e.emit(\"error\",n),S(e,t))}(e,r,n,t,i);else{var o=x(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||_(e,r),n?l(w,e,r,o,i):w(e,r,o,i)}}(r,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function y(t){if(a=a||e(\"./_stream_duplex\"),!(p.call(y,this)||this instanceof a))return new y(t);this._writableState=new g(t,this),this.writable=!0,t&&(\"function\"==typeof t.write&&(this._write=t.write),\"function\"==typeof t.writev&&(this._writev=t.writev),\"function\"==typeof t.destroy&&(this._destroy=t.destroy),\"function\"==typeof t.final&&(this._final=t.final)),h.call(this)}function v(e,t,r,n,i,s,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,s,t.onwrite),t.sync=!1}function w(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),S(e,t)}function _(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),s=t.corkedRequestsFree;s.entry=r;for(var a=0,l=!0;r;)i[a]=r,r.isBuf||(l=!1),r=r.next,a+=1;i.allBuffers=l,v(e,t,!0,t.length,i,\"\",s.finish),t.pendingcb++,t.lastBufferedRequest=null,s.next?(t.corkedRequestsFree=s.next,s.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,u=r.encoding,h=r.callback;if(v(e,t,!1,t.objectMode?1:c.length,c,u,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function x(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function k(e,t){e._final((function(r){t.pendingcb--,r&&e.emit(\"error\",r),t.prefinished=!0,e.emit(\"prefinish\"),S(e,t)}))}function S(e,t){var r=x(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||(\"function\"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,s.nextTick(k,e,t)):(t.prefinished=!0,e.emit(\"prefinish\")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"))),r}c.inherits(y,h),g.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(g.prototype,\"buffer\",{get:u.deprecate((function(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===y&&(e&&e._writableState instanceof g)}})):p=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},y.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,a=!i.objectMode&&(n=e,f.isBuffer(n)||n instanceof d);return a&&!f.isBuffer(e)&&(e=function(e){return f.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),a?t=\"buffer\":t||(t=i.defaultEncoding),\"function\"!=typeof r&&(r=b),i.ended?function(e,t){var r=new Error(\"write after end\");e.emit(\"error\",r),s.nextTick(t,r)}(this,r):(a||function(e,t,r,n){var i=!0,o=!1;return null===r?o=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||t.objectMode||(o=new TypeError(\"Invalid non-string/buffer chunk\")),o&&(e.emit(\"error\",o),s.nextTick(n,o),i=!1),i}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,s){if(!r){var o=function(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=f.from(t,r));return t}(t,n,i);n!==o&&(r=!0,i=\"buffer\",n=o)}var a=t.objectMode?1:n.length;t.length+=a;var l=t.length<t.highWaterMark;l||(t.needDrain=!0);if(t.writing||t.corked){var c=t.lastBufferedRequest;t.lastBufferedRequest={chunk:n,encoding:i,isBuf:r,callback:s,next:null},c?c.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else v(e,t,!1,a,n,i,s);return l}(this,i,a,e,t,r)),o},y.prototype.cork=function(){this._writableState.corked++},y.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.bufferProcessing||!e.bufferedRequest||_(this,e))},y.prototype.setDefaultEncoding=function(e){if(\"string\"==typeof e&&(e=e.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((e+\"\").toLowerCase())>-1))throw new TypeError(\"Unknown encoding: \"+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(y.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),y.prototype._write=function(e,t,r){r(new Error(\"_write() is not implemented\"))},y.prototype._writev=null,y.prototype.end=function(e,t,r){var n=this._writableState;\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,S(e,t),r&&(t.finished?s.nextTick(r):e.once(\"finish\",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(y.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=m.destroy,y.prototype._undestroy=m.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this)}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"timers\").setImmediate)},{\"./_stream_duplex\":508,\"./internal/streams/destroy\":514,\"./internal/streams/stream\":515,_process:467,\"core-util-is\":383,inherits:440,\"process-nextick-args\":466,\"safe-buffer\":520,timers:523,\"util-deprecate\":524}],513:[function(e,t,r){\"use strict\";var n=e(\"safe-buffer\").Buffer,i=e(\"util\");t.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);for(var t,r,i,s=n.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=o.data,r=s,i=a,t.copy(r,i),a+=o.data.length,o=o.next;return s},e}(),i&&i.inspect&&i.inspect.custom&&(t.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+\" \"+e})},{\"safe-buffer\":520,util:188}],514:[function(e,t,r){\"use strict\";var n=e(\"process-nextick-args\");function i(e,t){e.emit(\"error\",t)}t.exports={destroy:function(e,t){var r=this,s=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return s||o?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(i,this,e)):n.nextTick(i,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?r._writableState?r._writableState.errorEmitted||(r._writableState.errorEmitted=!0,n.nextTick(i,r,e)):n.nextTick(i,r,e):t&&t(e)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{\"process-nextick-args\":466}],515:[function(e,t,r){arguments[4][490][0].apply(r,arguments)},{dup:490,events:422}],516:[function(e,t,r){\"use strict\";t.exports=e(\"./readable\").PassThrough},{\"./readable\":517}],517:[function(e,t,r){\"use strict\";(r=t.exports=e(\"./lib/_stream_readable.js\")).Stream=r,r.Readable=r,r.Writable=e(\"./lib/_stream_writable.js\"),r.Duplex=e(\"./lib/_stream_duplex.js\"),r.Transform=e(\"./lib/_stream_transform.js\"),r.PassThrough=e(\"./lib/_stream_passthrough.js\")},{\"./lib/_stream_duplex.js\":508,\"./lib/_stream_passthrough.js\":509,\"./lib/_stream_readable.js\":510,\"./lib/_stream_transform.js\":511,\"./lib/_stream_writable.js\":512}],518:[function(e,t,r){\"use strict\";t.exports=e(\"./readable\").Transform},{\"./readable\":517}],519:[function(e,t,r){\"use strict\";t.exports=e(\"./lib/_stream_writable.js\")},{\"./lib/_stream_writable.js\":512}],520:[function(e,t,r){arguments[4][217][0].apply(r,arguments)},{buffer:220,dup:217}],521:[function(e,t,r){arguments[4][218][0].apply(r,arguments)},{dup:218,\"safe-buffer\":520}],522:[function(e,t,r){arguments[4][218][0].apply(r,arguments)},{dup:218,\"safe-buffer\":494}],523:[function(e,t,r){(function(t,n){(function(){\"use strict\";var i=e(\"process/browser.js\").nextTick,s=Function.prototype.apply,o=Array.prototype.slice,a={},l=0;function c(e,t){this._id=e,this._clearFn=t}r.setTimeout=function(){return new c(s.call(setTimeout,window,arguments),clearTimeout)},r.setInterval=function(){return new c(s.call(setInterval,window,arguments),clearInterval)},r.clearTimeout=r.clearInterval=function(e){e.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},r.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},r.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},r._unrefActive=r.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},r.setImmediate=\"function\"==typeof t?t:function(e){var t=l++,n=!(arguments.length<2)&&o.call(arguments,1);return a[t]=!0,i((function(){a[t]&&(n?e.apply(null,n):e.call(null),r.clearImmediate(t))})),t},r.clearImmediate=\"function\"==typeof n?n:function(e){delete a[e]}}).call(this)}).call(this,e(\"timers\").setImmediate,e(\"timers\").clearImmediate)},{\"process/browser.js\":467,timers:523}],524:[function(e,t,r){(function(e){(function(){\"use strict\";function r(t){try{if(!e.localStorage)return!1}catch(e){return!1}var r=e.localStorage[t];return null!=r&&\"true\"===String(r).toLowerCase()}t.exports=function(e,t){if(r(\"noDeprecation\"))return e;var n=!1;return function(){if(!n){if(r(\"throwDeprecation\"))throw new Error(t);r(\"traceDeprecation\")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],525:[function(e,t,r){\"use strict\";\"function\"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},{}],526:[function(e,t,r){\"use strict\";t.exports=function(e){return e&&\"object\"==typeof e&&\"function\"==typeof e.copy&&\"function\"==typeof e.fill&&\"function\"==typeof e.readUInt8}},{}],527:[function(e,t,r){(function(t,n){(function(){\"use strict\";var i=/%[sdj%]/g;r.format=function(e){if(!g(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(a(arguments[r]));return t.join(\" \")}r=1;for(var n=arguments,s=n.length,o=String(e).replace(i,(function(e){if(\"%%\"===e)return\"%\";if(r>=s)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return\"[Circular]\"}default:return e}})),l=n[r];r<s;l=n[++r])m(l)||!w(l)?o+=\" \"+l:o+=\" \"+a(l);return o},r.deprecate=function(e,i){if(y(n.process))return function(){return r.deprecate(e,i).apply(this,arguments)};if(!0===t.noDeprecation)return e;var s=!1;return function(){if(!s){if(t.throwDeprecation)throw new Error(i);t.traceDeprecation?console.trace(i):console.error(i),s=!0}return e.apply(this,arguments)}};var s,o={};function a(e,t){var n={seen:[],stylize:c};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(t)?n.showHidden=t:t&&r._extend(n,t),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=l),u(n,e,n.depth)}function l(e,t){var r=a.styles[t];return r?\"\\x1b[\"+a.colors[r][0]+\"m\"+e+\"\\x1b[\"+a.colors[r][1]+\"m\":e}function c(e,t){return e}function u(e,t,n){if(e.customInspect&&t&&k(t.inspect)&&t.inspect!==r.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(n,e);return g(i)||(i=u(e,i,n)),i}var s=function(e,t){if(y(t))return e.stylize(\"undefined\",\"undefined\");if(g(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(b(t))return e.stylize(\"\"+t,\"number\");if(p(t))return e.stylize(\"\"+t,\"boolean\");if(m(t))return e.stylize(\"null\",\"null\")}(e,t);if(s)return s;var o=Object.keys(t),a=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),x(t)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return h(t);if(0===o.length){if(k(t)){var l=t.name?\": \"+t.name:\"\";return e.stylize(\"[Function\"+l+\"]\",\"special\")}if(v(t))return e.stylize(RegExp.prototype.toString.call(t),\"regexp\");if(_(t))return e.stylize(Date.prototype.toString.call(t),\"date\");if(x(t))return h(t)}var c,w=\"\",S=!1,M=[\"{\",\"}\"];(d(t)&&(S=!0,M=[\"[\",\"]\"]),k(t))&&(w=\" [Function\"+(t.name?\": \"+t.name:\"\")+\"]\");return v(t)&&(w=\" \"+RegExp.prototype.toString.call(t)),_(t)&&(w=\" \"+Date.prototype.toUTCString.call(t)),x(t)&&(w=\" \"+h(t)),0!==o.length||S&&0!=t.length?n<0?v(t)?e.stylize(RegExp.prototype.toString.call(t),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(t),c=S?function(e,t,r,n,i){for(var s=[],o=0,a=t.length;o<a;++o)E(t,String(o))?s.push(f(e,t,r,n,String(o),!0)):s.push(\"\");return i.forEach((function(i){i.match(/^\\d+$/)||s.push(f(e,t,r,n,i,!0))})),s}(e,t,n,a,o):o.map((function(r){return f(e,t,n,a,r,S)})),e.seen.pop(),function(e,t,r){if(e.reduce((function(e,t){return t.indexOf(\"\\n\")>=0&&0,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1}),0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(c,w,M)):M[0]+w+M[1]}function h(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function f(e,t,r,n,i,s){var o,a,l;if((l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?a=l.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):l.set&&(a=e.stylize(\"[Setter]\",\"special\")),E(n,i)||(o=\"[\"+i+\"]\"),a||(e.seen.indexOf(l.value)<0?(a=m(r)?u(e,l.value,null):u(e,l.value,r-1)).indexOf(\"\\n\")>-1&&(a=s?a.split(\"\\n\").map((function(e){return\" \"+e})).join(\"\\n\").substr(2):\"\\n\"+a.split(\"\\n\").map((function(e){return\" \"+e})).join(\"\\n\")):a=e.stylize(\"[Circular]\",\"special\")),y(o)){if(s&&i.match(/^\\d+$/))return a;(o=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,\"name\")):(o=o.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),o=e.stylize(o,\"string\"))}return o+\": \"+a}function d(e){return Array.isArray(e)}function p(e){return\"boolean\"==typeof e}function m(e){return null===e}function b(e){return\"number\"==typeof e}function g(e){return\"string\"==typeof e}function y(e){return void 0===e}function v(e){return w(e)&&\"[object RegExp]\"===S(e)}function w(e){return\"object\"==typeof e&&null!==e}function _(e){return w(e)&&\"[object Date]\"===S(e)}function x(e){return w(e)&&(\"[object Error]\"===S(e)||e instanceof Error)}function k(e){return\"function\"==typeof e}function S(e){return Object.prototype.toString.call(e)}function M(e){return e<10?\"0\"+e.toString(10):e.toString(10)}r.debuglog=function(e){if(y(s)&&(s=t.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!o[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(s)){var n=t.pid;o[e]=function(){var t=r.format.apply(r,arguments);console.error(\"%s %d: %s\",e,n,t)}}else o[e]=function(){};return o[e]},r.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},r.isArray=d,r.isBoolean=p,r.isNull=m,r.isNullOrUndefined=function(e){return null==e},r.isNumber=b,r.isString=g,r.isSymbol=function(e){return\"symbol\"==typeof e},r.isUndefined=y,r.isRegExp=v,r.isObject=w,r.isDate=_,r.isError=x,r.isFunction=k,r.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},r.isBuffer=e(\"./support/isBuffer\");var C=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function T(){var e=new Date,t=[M(e.getHours()),M(e.getMinutes()),M(e.getSeconds())].join(\":\");return[e.getDate(),C[e.getMonth()],t].join(\" \")}function E(e,t){return Object.prototype.hasOwnProperty.call(e,t)}r.log=function(){console.log(\"%s - %s\",T(),r.format.apply(r,arguments))},r.inherits=e(\"inherits\"),r._extend=function(e,t){if(!t||!w(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this)}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./support/isBuffer\":526,_process:467,inherits:525}],528:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),Object.defineProperty(r,\"v1\",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(r,\"v3\",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(r,\"v4\",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(r,\"v5\",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(r,\"NIL\",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(r,\"version\",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(r,\"validate\",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(r,\"stringify\",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(r,\"parse\",{enumerable:!0,get:function(){return h.default}});var n=f(e(\"./v1.js\")),i=f(e(\"./v3.js\")),s=f(e(\"./v4.js\")),o=f(e(\"./v5.js\")),a=f(e(\"./nil.js\")),l=f(e(\"./version.js\")),c=f(e(\"./validate.js\")),u=f(e(\"./stringify.js\")),h=f(e(\"./parse.js\"));function f(e){return e&&e.__esModule?e:{default:e}}},{\"./nil.js\":530,\"./parse.js\":531,\"./stringify.js\":535,\"./v1.js\":536,\"./v3.js\":537,\"./v4.js\":539,\"./v5.js\":540,\"./validate.js\":541,\"./version.js\":542}],529:[function(e,t,r){\"use strict\";function n(e){return 14+(e+64>>>9<<4)+1}function i(e,t){const r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function s(e,t,r,n,s,o){return i((a=i(i(t,e),i(n,o)))<<(l=s)|a>>>32-l,r);var a,l}function o(e,t,r,n,i,o,a){return s(t&r|~t&n,e,t,i,o,a)}function a(e,t,r,n,i,o,a){return s(t&n|r&~n,e,t,i,o,a)}function l(e,t,r,n,i,o,a){return s(t^r^n,e,t,i,o,a)}function c(e,t,r,n,i,o,a){return s(r^(t|~n),e,t,i,o,a)}Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var u=function(e){if(\"string\"==typeof e){const t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(let r=0;r<t.length;++r)e[r]=t.charCodeAt(r)}return function(e){const t=[],r=32*e.length;for(let n=0;n<r;n+=8){const r=e[n>>5]>>>n%32&255,i=parseInt(\"0123456789abcdef\".charAt(r>>>4&15)+\"0123456789abcdef\".charAt(15&r),16);t.push(i)}return t}(function(e,t){e[t>>5]|=128<<t%32,e[n(t)-1]=t;let r=1732584193,s=-271733879,u=-1732584194,h=271733878;for(let t=0;t<e.length;t+=16){const n=r,f=s,d=u,p=h;r=o(r,s,u,h,e[t],7,-680876936),h=o(h,r,s,u,e[t+1],12,-389564586),u=o(u,h,r,s,e[t+2],17,606105819),s=o(s,u,h,r,e[t+3],22,-1044525330),r=o(r,s,u,h,e[t+4],7,-176418897),h=o(h,r,s,u,e[t+5],12,1200080426),u=o(u,h,r,s,e[t+6],17,-1473231341),s=o(s,u,h,r,e[t+7],22,-45705983),r=o(r,s,u,h,e[t+8],7,1770035416),h=o(h,r,s,u,e[t+9],12,-1958414417),u=o(u,h,r,s,e[t+10],17,-42063),s=o(s,u,h,r,e[t+11],22,-1990404162),r=o(r,s,u,h,e[t+12],7,1804603682),h=o(h,r,s,u,e[t+13],12,-40341101),u=o(u,h,r,s,e[t+14],17,-1502002290),s=o(s,u,h,r,e[t+15],22,1236535329),r=a(r,s,u,h,e[t+1],5,-165796510),h=a(h,r,s,u,e[t+6],9,-1069501632),u=a(u,h,r,s,e[t+11],14,643717713),s=a(s,u,h,r,e[t],20,-373897302),r=a(r,s,u,h,e[t+5],5,-701558691),h=a(h,r,s,u,e[t+10],9,38016083),u=a(u,h,r,s,e[t+15],14,-660478335),s=a(s,u,h,r,e[t+4],20,-405537848),r=a(r,s,u,h,e[t+9],5,568446438),h=a(h,r,s,u,e[t+14],9,-1019803690),u=a(u,h,r,s,e[t+3],14,-187363961),s=a(s,u,h,r,e[t+8],20,1163531501),r=a(r,s,u,h,e[t+13],5,-1444681467),h=a(h,r,s,u,e[t+2],9,-51403784),u=a(u,h,r,s,e[t+7],14,1735328473),s=a(s,u,h,r,e[t+12],20,-1926607734),r=l(r,s,u,h,e[t+5],4,-378558),h=l(h,r,s,u,e[t+8],11,-2022574463),u=l(u,h,r,s,e[t+11],16,1839030562),s=l(s,u,h,r,e[t+14],23,-35309556),r=l(r,s,u,h,e[t+1],4,-1530992060),h=l(h,r,s,u,e[t+4],11,1272893353),u=l(u,h,r,s,e[t+7],16,-155497632),s=l(s,u,h,r,e[t+10],23,-1094730640),r=l(r,s,u,h,e[t+13],4,681279174),h=l(h,r,s,u,e[t],11,-358537222),u=l(u,h,r,s,e[t+3],16,-722521979),s=l(s,u,h,r,e[t+6],23,76029189),r=l(r,s,u,h,e[t+9],4,-640364487),h=l(h,r,s,u,e[t+12],11,-421815835),u=l(u,h,r,s,e[t+15],16,530742520),s=l(s,u,h,r,e[t+2],23,-995338651),r=c(r,s,u,h,e[t],6,-198630844),h=c(h,r,s,u,e[t+7],10,1126891415),u=c(u,h,r,s,e[t+14],15,-1416354905),s=c(s,u,h,r,e[t+5],21,-57434055),r=c(r,s,u,h,e[t+12],6,1700485571),h=c(h,r,s,u,e[t+3],10,-1894986606),u=c(u,h,r,s,e[t+10],15,-1051523),s=c(s,u,h,r,e[t+1],21,-2054922799),r=c(r,s,u,h,e[t+8],6,1873313359),h=c(h,r,s,u,e[t+15],10,-30611744),u=c(u,h,r,s,e[t+6],15,-1560198380),s=c(s,u,h,r,e[t+13],21,1309151649),r=c(r,s,u,h,e[t+4],6,-145523070),h=c(h,r,s,u,e[t+11],10,-1120210379),u=c(u,h,r,s,e[t+2],15,718787259),s=c(s,u,h,r,e[t+9],21,-343485551),r=i(r,n),s=i(s,f),u=i(u,d),h=i(h,p)}return[r,s,u,h]}(function(e){if(0===e.length)return[];const t=8*e.length,r=new Uint32Array(n(t));for(let n=0;n<t;n+=8)r[n>>5]|=(255&e[n/8])<<n%32;return r}(e),8*e.length))};r.default=u},{}],530:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;r.default=\"00000000-0000-0000-0000-000000000000\"},{}],531:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n,i=(n=e(\"./validate.js\"))&&n.__esModule?n:{default:n};var s=function(e){if(!(0,i.default)(e))throw TypeError(\"Invalid UUID\");let t;const r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r};r.default=s},{\"./validate.js\":541}],532:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;r.default=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i},{}],533:[function(e,t,r){\"use strict\";let n;Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=function(){if(!n&&(n=\"undefined\"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||\"undefined\"!=typeof msCrypto&&\"function\"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto),!n))throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");return n(i)};const i=new Uint8Array(16)},{}],534:[function(e,t,r){\"use strict\";function n(e,t,r,n){switch(e){case 0:return t&r^~t&n;case 1:return t^r^n;case 2:return t&r^t&n^r&n;case 3:return t^r^n}}function i(e,t){return e<<t|e>>>32-t}Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var s=function(e){const t=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if(\"string\"==typeof e){const t=unescape(encodeURIComponent(e));e=[];for(let r=0;r<t.length;++r)e.push(t.charCodeAt(r))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);const s=e.length/4+2,o=Math.ceil(s/16),a=new Array(o);for(let t=0;t<o;++t){const r=new Uint32Array(16);for(let n=0;n<16;++n)r[n]=e[64*t+4*n]<<24|e[64*t+4*n+1]<<16|e[64*t+4*n+2]<<8|e[64*t+4*n+3];a[t]=r}a[o-1][14]=8*(e.length-1)/Math.pow(2,32),a[o-1][14]=Math.floor(a[o-1][14]),a[o-1][15]=8*(e.length-1)&4294967295;for(let e=0;e<o;++e){const s=new Uint32Array(80);for(let t=0;t<16;++t)s[t]=a[e][t];for(let e=16;e<80;++e)s[e]=i(s[e-3]^s[e-8]^s[e-14]^s[e-16],1);let o=r[0],l=r[1],c=r[2],u=r[3],h=r[4];for(let e=0;e<80;++e){const r=Math.floor(e/20),a=i(o,5)+n(r,l,c,u)+h+t[r]+s[e]>>>0;h=u,u=c,c=i(l,30)>>>0,l=o,o=a}r[0]=r[0]+o>>>0,r[1]=r[1]+l>>>0,r[2]=r[2]+c>>>0,r[3]=r[3]+u>>>0,r[4]=r[4]+h>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,255&r[0],r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,255&r[1],r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,255&r[2],r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,255&r[3],r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,255&r[4]]};r.default=s},{}],535:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n,i=(n=e(\"./validate.js\"))&&n.__esModule?n:{default:n};const s=[];for(let e=0;e<256;++e)s.push((e+256).toString(16).substr(1));var o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const r=(s[e[t+0]]+s[e[t+1]]+s[e[t+2]]+s[e[t+3]]+\"-\"+s[e[t+4]]+s[e[t+5]]+\"-\"+s[e[t+6]]+s[e[t+7]]+\"-\"+s[e[t+8]]+s[e[t+9]]+\"-\"+s[e[t+10]]+s[e[t+11]]+s[e[t+12]]+s[e[t+13]]+s[e[t+14]]+s[e[t+15]]).toLowerCase();if(!(0,i.default)(r))throw TypeError(\"Stringified UUID is invalid\");return r};r.default=o},{\"./validate.js\":541}],536:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n=s(e(\"./rng.js\")),i=s(e(\"./stringify.js\"));function s(e){return e&&e.__esModule?e:{default:e}}let o,a,l=0,c=0;var u=function(e,t,r){let s=t&&r||0;const u=t||new Array(16);let h=(e=e||{}).node||o,f=void 0!==e.clockseq?e.clockseq:a;if(null==h||null==f){const t=e.random||(e.rng||n.default)();null==h&&(h=o=[1|t[0],t[1],t[2],t[3],t[4],t[5]]),null==f&&(f=a=16383&(t[6]<<8|t[7]))}let d=void 0!==e.msecs?e.msecs:Date.now(),p=void 0!==e.nsecs?e.nsecs:c+1;const m=d-l+(p-c)/1e4;if(m<0&&void 0===e.clockseq&&(f=f+1&16383),(m<0||d>l)&&void 0===e.nsecs&&(p=0),p>=1e4)throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");l=d,c=p,a=f,d+=122192928e5;const b=(1e4*(268435455&d)+p)%4294967296;u[s++]=b>>>24&255,u[s++]=b>>>16&255,u[s++]=b>>>8&255,u[s++]=255&b;const g=d/4294967296*1e4&268435455;u[s++]=g>>>8&255,u[s++]=255&g,u[s++]=g>>>24&15|16,u[s++]=g>>>16&255,u[s++]=f>>>8|128,u[s++]=255&f;for(let e=0;e<6;++e)u[s+e]=h[e];return t||(0,i.default)(u)};r.default=u},{\"./rng.js\":533,\"./stringify.js\":535}],537:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n=s(e(\"./v35.js\")),i=s(e(\"./md5.js\"));function s(e){return e&&e.__esModule?e:{default:e}}var o=(0,n.default)(\"v3\",48,i.default);r.default=o},{\"./md5.js\":529,\"./v35.js\":538}],538:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=function(e,t,r){function s(e,s,o,a){if(\"string\"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));const t=[];for(let r=0;r<e.length;++r)t.push(e.charCodeAt(r));return t}(e)),\"string\"==typeof s&&(s=(0,i.default)(s)),16!==s.length)throw TypeError(\"Namespace must be array-like (16 iterable integer values, 0-255)\");let l=new Uint8Array(16+e.length);if(l.set(s),l.set(e,s.length),l=r(l),l[6]=15&l[6]|t,l[8]=63&l[8]|128,o){a=a||0;for(let e=0;e<16;++e)o[a+e]=l[e];return o}return(0,n.default)(l)}try{s.name=e}catch(e){}return s.DNS=o,s.URL=a,s},r.URL=r.DNS=void 0;var n=s(e(\"./stringify.js\")),i=s(e(\"./parse.js\"));function s(e){return e&&e.__esModule?e:{default:e}}const o=\"6ba7b810-9dad-11d1-80b4-00c04fd430c8\";r.DNS=o;const a=\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\";r.URL=a},{\"./parse.js\":531,\"./stringify.js\":535}],539:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n=s(e(\"./rng.js\")),i=s(e(\"./stringify.js\"));function s(e){return e&&e.__esModule?e:{default:e}}var o=function(e,t,r){const s=(e=e||{}).random||(e.rng||n.default)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=s[e];return t}return(0,i.default)(s)};r.default=o},{\"./rng.js\":533,\"./stringify.js\":535}],540:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n=s(e(\"./v35.js\")),i=s(e(\"./sha1.js\"));function s(e){return e&&e.__esModule?e:{default:e}}var o=(0,n.default)(\"v5\",80,i.default);r.default=o},{\"./sha1.js\":534,\"./v35.js\":538}],541:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n,i=(n=e(\"./regex.js\"))&&n.__esModule?n:{default:n};var s=function(e){return\"string\"==typeof e&&i.default.test(e)};r.default=s},{\"./regex.js\":532}],542:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=void 0;var n,i=(n=e(\"./validate.js\"))&&n.__esModule?n:{default:n};var s=function(e){if(!(0,i.default)(e))throw TypeError(\"Invalid UUID\");return parseInt(e.substr(14,1),16)};r.default=s},{\"./validate.js\":541}],543:[function(e,t,r){\"use strict\";\n/**\n * Character classes and associated utilities for the 5th edition of XML 1.0.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */Object.defineProperty(r,\"__esModule\",{value:!0}),r.CHAR=\"\\t\\n\\r -\\ud7ff\\ue000-\\ufffd\\ud800\\udc00-\\udbff\\udfff\",r.S=\" \\t\\r\\n\",r.NAME_START_CHAR=\":A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd\\ud800\\udc00-\\udb7f\\udfff\",r.NAME_CHAR=\"-\"+r.NAME_START_CHAR+\".0-9\\xb7\\u0300-\\u036f\\u203f-\\u2040\",r.CHAR_RE=new RegExp(\"^[\"+r.CHAR+\"]$\",\"u\"),r.S_RE=new RegExp(\"^[\"+r.S+\"]+$\",\"u\"),r.NAME_START_CHAR_RE=new RegExp(\"^[\"+r.NAME_START_CHAR+\"]$\",\"u\"),r.NAME_CHAR_RE=new RegExp(\"^[\"+r.NAME_CHAR+\"]$\",\"u\"),r.NAME_RE=new RegExp(\"^[\"+r.NAME_START_CHAR+\"][\"+r.NAME_CHAR+\"]*$\",\"u\"),r.NMTOKEN_RE=new RegExp(\"^[\"+r.NAME_CHAR+\"]+$\",\"u\");function n(e){return e>=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}r.S_LIST=[32,10,13,9],r.isChar=function(e){return e>=32&&e<=55295||10===e||13===e||9===e||e>=57344&&e<=65533||e>=65536&&e<=1114111},r.isS=function(e){return 32===e||10===e||13===e||9===e},r.isNameStartChar=n,r.isNameChar=function(e){return n(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},{}],544:[function(e,t,r){\"use strict\";\n/**\n * Character classes and associated utilities for the 2nd edition of XML 1.1.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */Object.defineProperty(r,\"__esModule\",{value:!0}),r.CHAR=\"\\x01-\\ud7ff\\ue000-\\ufffd\\ud800\\udc00-\\udbff\\udfff\",r.RESTRICTED_CHAR=\"\\x01-\\b\\v\\f\\x0e-\\x1f\\x7f-\\x84\\x86-\\x9f\",r.S=\" \\t\\r\\n\",r.NAME_START_CHAR=\":A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd\\ud800\\udc00-\\udb7f\\udfff\",r.NAME_CHAR=\"-\"+r.NAME_START_CHAR+\".0-9\\xb7\\u0300-\\u036f\\u203f-\\u2040\",r.CHAR_RE=new RegExp(\"^[\"+r.CHAR+\"]$\",\"u\"),r.RESTRICTED_CHAR_RE=new RegExp(\"^[\"+r.RESTRICTED_CHAR+\"]$\",\"u\"),r.S_RE=new RegExp(\"^[\"+r.S+\"]+$\",\"u\"),r.NAME_START_CHAR_RE=new RegExp(\"^[\"+r.NAME_START_CHAR+\"]$\",\"u\"),r.NAME_CHAR_RE=new RegExp(\"^[\"+r.NAME_CHAR+\"]$\",\"u\"),r.NAME_RE=new RegExp(\"^[\"+r.NAME_START_CHAR+\"][\"+r.NAME_CHAR+\"]*$\",\"u\"),r.NMTOKEN_RE=new RegExp(\"^[\"+r.NAME_CHAR+\"]+$\",\"u\");function n(e){return e>=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}r.S_LIST=[32,10,13,9],r.isChar=function(e){return e>=1&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111},r.isRestrictedChar=function(e){return e>=1&&e<=8||11===e||12===e||e>=14&&e<=31||e>=127&&e<=132||e>=134&&e<=159},r.isCharAndNotRestricted=function(e){return 9===e||10===e||13===e||e>31&&e<127||133===e||e>159&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111},r.isS=function(e){return 32===e||10===e||13===e||9===e},r.isNameStartChar=n,r.isNameChar=function(e){return n(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},{}],545:[function(e,t,r){\"use strict\";\n/**\n * Character class utilities for XML NS 1.0 edition 3.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */function n(e){return e>=65&&e<=90||95===e||e>=97&&e<=122||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}Object.defineProperty(r,\"__esModule\",{value:!0}),r.NC_NAME_START_CHAR=\"A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c-\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd\\ud800\\udc00-\\udb7f\\udfff\",r.NC_NAME_CHAR=\"-\"+r.NC_NAME_START_CHAR+\".0-9\\xb7\\u0300-\\u036f\\u203f-\\u2040\",r.NC_NAME_START_CHAR_RE=new RegExp(\"^[\"+r.NC_NAME_START_CHAR+\"]$\",\"u\"),r.NC_NAME_CHAR_RE=new RegExp(\"^[\"+r.NC_NAME_CHAR+\"]$\",\"u\"),r.NC_NAME_RE=new RegExp(\"^[\"+r.NC_NAME_START_CHAR+\"][\"+r.NC_NAME_CHAR+\"]*$\",\"u\"),r.isNCNameStartChar=n,r.isNCNameChar=function(e){return n(e)||45===e||46===e||e>=48&&e<=57||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},{}]},{},[15])(15)}));\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport default function isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}\n","// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nexport var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';\n","/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}\n","import { getLocation } from \"./location.mjs\";\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printLocation(location) {\n return printSourceLocation(location.source, getLocation(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var subLineIndex = Math.floor(columnNum / 80);\n var subLineColumnNum = columnNum % 80;\n var subLines = [];\n\n for (var i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n return ['', subLine];\n }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n }\n\n return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction leftPad(len, str) {\n return whitespace(len - str.length) + str;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport isObjectLike from \"../jsutils/isObjectLike.mjs\";\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport { getLocation } from \"../language/location.mjs\";\nimport { printLocation, printSourceLocation } from \"../language/printLocation.mjs\";\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport var GraphQLError = /*#__PURE__*/function (_Error) {\n _inherits(GraphQLError, _Error);\n\n var _super = _createSuper(GraphQLError);\n\n /**\n * An array of { line, column } locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n var _nodeLocations, _nodeLocations2, _nodeLocations3;\n\n var _this;\n\n _classCallCheck(this, GraphQLError);\n\n _this = _super.call(this, message);\n _this.name = 'GraphQLError';\n _this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n\n _this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n var nodeLocations = [];\n\n for (var _i2 = 0, _ref3 = (_this$nodes = _this.nodes) !== null && _this$nodes !== void 0 ? _this$nodes : []; _i2 < _ref3.length; _i2++) {\n var _this$nodes;\n\n var _ref4 = _ref3[_i2];\n var loc = _ref4.loc;\n\n if (loc != null) {\n nodeLocations.push(loc);\n }\n }\n\n nodeLocations = undefinedIfEmpty(nodeLocations); // Compute locations in the source for the given nodes/positions.\n\n _this.source = source !== null && source !== void 0 ? source : (_nodeLocations = nodeLocations) === null || _nodeLocations === void 0 ? void 0 : _nodeLocations[0].source;\n _this.positions = positions !== null && positions !== void 0 ? positions : (_nodeLocations2 = nodeLocations) === null || _nodeLocations2 === void 0 ? void 0 : _nodeLocations2.map(function (loc) {\n return loc.start;\n });\n _this.locations = positions && source ? positions.map(function (pos) {\n return getLocation(source, pos);\n }) : (_nodeLocations3 = nodeLocations) === null || _nodeLocations3 === void 0 ? void 0 : _nodeLocations3.map(function (loc) {\n return getLocation(loc.source, loc.start);\n });\n _this.path = path !== null && path !== void 0 ? path : undefined;\n var originalExtensions = originalError === null || originalError === void 0 ? void 0 : originalError.extensions;\n\n if (extensions == null && isObjectLike(originalExtensions)) {\n _this.extensions = _objectSpread({}, originalExtensions);\n } else {\n _this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};\n } // By being enumerable, JSON.stringify will include bellow properties in the resulting output.\n // This ensures that the simplest possible GraphQL service adheres to the spec.\n\n\n Object.defineProperties(_assertThisInitialized(_this), {\n message: {\n enumerable: true\n },\n locations: {\n enumerable: _this.locations != null\n },\n path: {\n enumerable: _this.path != null\n },\n extensions: {\n enumerable: _this.extensions != null && Object.keys(_this.extensions).length > 0\n },\n name: {\n enumerable: false\n },\n nodes: {\n enumerable: false\n },\n source: {\n enumerable: false\n },\n positions: {\n enumerable: false\n },\n originalError: {\n enumerable: false\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError !== null && originalError !== void 0 && originalError.stack) {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n return _possibleConstructorReturn(_this);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n } else {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n\n return _this;\n }\n\n _createClass(GraphQLError, [{\n key: \"toString\",\n value: function toString() {\n return printError(this);\n } // FIXME: workaround to not break chai comparisons, should be remove in v16\n // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n }, {\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Object';\n }\n }]);\n\n return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\n\nexport function printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i4 = 0, _error$nodes2 = error.nodes; _i4 < _error$nodes2.length; _i4++) {\n var node = _error$nodes2[_i4];\n\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i6 = 0, _error$locations2 = error.locations; _i6 < _error$locations2.length; _i6++) {\n var location = _error$locations2[_i6];\n output += '\\n\\n' + printSourceLocation(error.source, location);\n }\n }\n\n return output;\n}\n","import { GraphQLError } from \"./GraphQLError.mjs\";\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n SOF: '<SOF>',\n EOF: '<EOF>',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n","export default function devAssert(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport inspect from \"../jsutils/inspect.mjs\";\nimport devAssert from \"../jsutils/devAssert.mjs\";\nimport instanceOf from \"../jsutils/instanceOf.mjs\";\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport var Source = /*#__PURE__*/function () {\n function Source(body) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n line: 1,\n column: 1\n };\n typeof body === 'string' || devAssert(0, \"Body must be a string. Received: \".concat(inspect(body), \".\"));\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive.');\n this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive.');\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n\n _createClass(Source, [{\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Source';\n }\n }]);\n\n return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isSource(source) {\n return instanceOf(source, Source);\n}\n","/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Token } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { dedentBlockStringValue } from \"./blockString.mjs\";\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport var Lexer = /*#__PURE__*/function () {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n function Lexer(source) {\n var startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0, null);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n\n var _proto = Lexer.prototype;\n\n _proto.advance = function advance() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n ;\n\n _proto.lookahead = function lookahead() {\n var token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n var _token$next;\n\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = (_token$next = token.next) !== null && _token$next !== void 0 ? _token$next : token.next = readToken(this, token);\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n };\n\n return Lexer;\n}();\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;\n}\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = prev.end;\n\n while (pos < bodyLength) {\n var code = body.charCodeAt(pos);\n var _line = lexer.line;\n\n var _col = 1 + pos - lexer.lineStart; // SourceCharacter\n\n\n switch (code) {\n case 0xfeff: // <BOM>\n\n case 9: // \\t\n\n case 32: // <space>\n\n case 44:\n // ,\n ++pos;\n continue;\n\n case 10:\n // \\n\n ++pos;\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 13:\n // \\r\n if (body.charCodeAt(pos + 1) === 10) {\n pos += 2;\n } else {\n ++pos;\n }\n\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 33:\n // !\n return new Token(TokenKind.BANG, pos, pos + 1, _line, _col, prev);\n\n case 35:\n // #\n return readComment(source, pos, _line, _col, prev);\n\n case 36:\n // $\n return new Token(TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev);\n\n case 38:\n // &\n return new Token(TokenKind.AMP, pos, pos + 1, _line, _col, prev);\n\n case 40:\n // (\n return new Token(TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev);\n\n case 41:\n // )\n return new Token(TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev);\n\n case 46:\n // .\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new Token(TokenKind.SPREAD, pos, pos + 3, _line, _col, prev);\n }\n\n break;\n\n case 58:\n // :\n return new Token(TokenKind.COLON, pos, pos + 1, _line, _col, prev);\n\n case 61:\n // =\n return new Token(TokenKind.EQUALS, pos, pos + 1, _line, _col, prev);\n\n case 64:\n // @\n return new Token(TokenKind.AT, pos, pos + 1, _line, _col, prev);\n\n case 91:\n // [\n return new Token(TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev);\n\n case 93:\n // ]\n return new Token(TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev);\n\n case 123:\n // {\n return new Token(TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev);\n\n case 124:\n // |\n return new Token(TokenKind.PIPE, pos, pos + 1, _line, _col, prev);\n\n case 125:\n // }\n return new Token(TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev);\n\n case 34:\n // \"\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, _line, _col, prev, lexer);\n }\n\n return readString(source, pos, _line, _col, prev);\n\n case 45: // -\n\n case 48: // 0\n\n case 49: // 1\n\n case 50: // 2\n\n case 51: // 3\n\n case 52: // 4\n\n case 53: // 5\n\n case 54: // 6\n\n case 55: // 7\n\n case 56: // 8\n\n case 57:\n // 9\n return readNumber(source, pos, code, _line, _col, prev);\n\n case 65: // A\n\n case 66: // B\n\n case 67: // C\n\n case 68: // D\n\n case 69: // E\n\n case 70: // F\n\n case 71: // G\n\n case 72: // H\n\n case 73: // I\n\n case 74: // J\n\n case 75: // K\n\n case 76: // L\n\n case 77: // M\n\n case 78: // N\n\n case 79: // O\n\n case 80: // P\n\n case 81: // Q\n\n case 82: // R\n\n case 83: // S\n\n case 84: // T\n\n case 85: // U\n\n case 86: // V\n\n case 87: // W\n\n case 88: // X\n\n case 89: // Y\n\n case 90: // Z\n\n case 95: // _\n\n case 97: // a\n\n case 98: // b\n\n case 99: // c\n\n case 100: // d\n\n case 101: // e\n\n case 102: // f\n\n case 103: // g\n\n case 104: // h\n\n case 105: // i\n\n case 106: // j\n\n case 107: // k\n\n case 108: // l\n\n case 109: // m\n\n case 110: // n\n\n case 111: // o\n\n case 112: // p\n\n case 113: // q\n\n case 114: // r\n\n case 115: // s\n\n case 116: // t\n\n case 117: // u\n\n case 118: // v\n\n case 119: // w\n\n case 120: // x\n\n case 121: // y\n\n case 122:\n // z\n return readName(source, pos, _line, _col, prev);\n }\n\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n }\n\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n return new Token(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Token(TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n\n if (code === 46 || isNameStart(code)) {\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n\n return new Token(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new Token(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new Token(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, dedentBlockStringValue(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else if ( // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new Token(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n} // _ A-Z a-z\n\n\nfunction isNameStart(code) {\n return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122;\n}\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Kind } from \"./kinds.mjs\";\nimport { Location } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { Source, isSource } from \"./source.mjs\";\nimport { DirectiveLocation } from \"./directiveLocation.mjs\";\nimport { Lexer, isPunctuatorTokenKind } from \"./lexer.mjs\";\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport var Parser = /*#__PURE__*/function () {\n function Parser(source, options) {\n var sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.parseName = function parseName() {\n var token = this.expectToken(TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n ;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n ;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n ;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n var operation = this.parseOperationType();\n var name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */\n ;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n ;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */\n ;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */\n ;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n ;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n ;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n ;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n ;\n\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n ;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var _this$_options;\n\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */\n ;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n ;\n\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this._lexer.advance();\n\n return {\n kind: Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.FLOAT:\n this._lexer.advance();\n\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return {\n kind: Kind.BOOLEAN,\n value: true,\n loc: this.loc(token)\n };\n\n case 'false':\n return {\n kind: Kind.BOOLEAN,\n value: false,\n loc: this.loc(token)\n };\n\n case 'null':\n return {\n kind: Kind.NULL,\n loc: this.loc(token)\n };\n\n default:\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n }\n\n case TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n\n break;\n }\n\n throw this.unexpected();\n };\n\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n\n this._lexer.advance();\n\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n ;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n\n return {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n ;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n\n return {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n ;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n ;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n ;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n ;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n\n throw this.unexpected(keywordToken);\n };\n\n _proto.peekDescription = function peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n ;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n */\n ;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n description: description,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n ;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n ;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n ;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var _this$_options2;\n\n if (!this.expectOptionalKeyword('implements')) {\n return [];\n }\n\n if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {\n var types = []; // Optional leading ampersand\n\n this.expectOptionalToken(TokenKind.AMP);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(TokenKind.AMP) || this.peek(TokenKind.NAME));\n\n return types;\n }\n\n return this.delimitedMany(TokenKind.AMP, this.parseNamedType);\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */\n ;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n var _this$_options3;\n\n // Legacy support for the SDL?\n if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {\n this._lexer.advance();\n\n this._lexer.advance();\n\n return [];\n }\n\n return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n ;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n ;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n ;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n ;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n ;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n ;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n ;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n ;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n ;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n ;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n ;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n ;\n\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n ;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n ;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n ;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n ;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */\n ;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n ;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n ;\n\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n\n if (DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in the source that created a given parsed object.\n */\n ;\n\n _proto.loc = function loc(startToken) {\n var _this$_options4;\n\n if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {\n return new Location(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */\n ;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw syntaxError(this._lexer.source, token.start, \"Expected \".concat(getTokenKindDesc(kind), \", found \").concat(getTokenDesc(token), \".\"));\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and return undefined.\n */\n ;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw syntaxError(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token), \".\"));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n ;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n ;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token), \".\"));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n ;\n\n _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n };\n\n return Parser;\n}();\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? \" \\\"\".concat(value, \"\\\"\") : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? \"\\\"\".concat(kind, \"\\\"\") : kind;\n}\n","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n var seenKeys = new Set();\n var definitions = [];\n ast.definitions.forEach(function (fragmentDefinition) {\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n var sourceKeySet = fragmentSourceMap.get(fragmentName);\n if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n }\n else if (!sourceKeySet) {\n fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);\n }\n sourceKeySet.add(sourceKey);\n if (!seenKeys.has(sourceKey)) {\n seenKeys.add(sourceKey);\n definitions.push(fragmentDefinition);\n }\n }\n else {\n definitions.push(fragmentDefinition);\n }\n });\n return __assign(__assign({}, ast), { definitions: definitions });\n}\nfunction stripLoc(doc) {\n var workSet = new Set(doc.definitions);\n workSet.forEach(function (node) {\n if (node.loc)\n delete node.loc;\n Object.keys(node).forEach(function (key) {\n var value = node[key];\n if (value && typeof value === 'object') {\n workSet.add(value);\n }\n });\n });\n var loc = doc.loc;\n if (loc) {\n delete loc.startToken;\n delete loc.endToken;\n }\n return doc;\n}\nfunction parseDocument(source) {\n var cacheKey = normalize(source);\n if (!docCache.has(cacheKey)) {\n var parsed = parse(source, {\n experimentalFragmentVariables: experimentalFragmentVariables,\n allowLegacyFragmentVariables: experimentalFragmentVariables\n });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n }\n return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof literals === 'string') {\n literals = [literals];\n }\n var result = literals[0];\n args.forEach(function (arg, i) {\n if (arg && arg.kind === 'Document') {\n result += arg.loc.source.body;\n }\n else {\n result += arg;\n }\n result += literals[i + 1];\n });\n return parseDocument(result);\n}\nexport function resetCaches() {\n docCache.clear();\n fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\nvar extras = {\n gql: gql,\n resetCaches: resetCaches,\n disableFragmentWarnings: disableFragmentWarnings,\n enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;\n","var navigator = {};navigator.userAgent = false;var window = {};if(YAHOO===undefined){var YAHOO={}}YAHOO.lang={extend:function(g,h,f){if(!h||!g){throw new Error(\"YAHOO.lang.extend failed, please check that all dependencies are included.\")}var d=function(){};d.prototype=h.prototype;g.prototype=new d();g.prototype.constructor=g;g.superclass=h.prototype;if(h.prototype.constructor==Object.prototype.constructor){h.prototype.constructor=h}if(f){var b;for(b in f){g.prototype[b]=f[b]}var e=function(){},c=[\"toString\",\"valueOf\"];try{if(/MSIE/.test(navigator.userAgent)){e=function(j,i){for(b=0;b<c.length;b=b+1){var l=c[b],k=i[l];if(typeof k===\"function\"&&k!=Object.prototype[l]){j[l]=k}}}}}catch(a){}e(g.prototype,f)}}};var CryptoJS=CryptoJS||(function(e,g){var a={};var b=a.lib={};var j=b.Base=(function(){function n(){}return{extend:function(p){n.prototype=this;var o=new n();if(p){o.mixIn(p)}if(!o.hasOwnProperty(\"init\")){o.init=function(){o.$super.init.apply(this,arguments)}}o.init.prototype=o;o.$super=this;return o},create:function(){var o=this.extend();o.init.apply(o,arguments);return o},init:function(){},mixIn:function(p){for(var o in p){if(p.hasOwnProperty(o)){this[o]=p[o]}}if(p.hasOwnProperty(\"toString\")){this.toString=p.toString}},clone:function(){return this.init.prototype.extend(this)}}}());var l=b.WordArray=j.extend({init:function(o,n){o=this.words=o||[];if(n!=g){this.sigBytes=n}else{this.sigBytes=o.length*4}},toString:function(n){return(n||h).stringify(this)},concat:function(t){var q=this.words;var p=t.words;var n=this.sigBytes;var s=t.sigBytes;this.clamp();if(n%4){for(var r=0;r<s;r++){var o=(p[r>>>2]>>>(24-(r%4)*8))&255;q[(n+r)>>>2]|=o<<(24-((n+r)%4)*8)}}else{for(var r=0;r<s;r+=4){q[(n+r)>>>2]=p[r>>>2]}}this.sigBytes+=s;return this},clamp:function(){var o=this.words;var n=this.sigBytes;o[n>>>2]&=4294967295<<(32-(n%4)*8);o.length=e.ceil(n/4)},clone:function(){var n=j.clone.call(this);n.words=this.words.slice(0);return n},random:function(p){var o=[];for(var n=0;n<p;n+=4){o.push((e.random()*4294967296)|0)}return new l.init(o,p)}});var m=a.enc={};var h=m.Hex={stringify:function(p){var r=p.words;var o=p.sigBytes;var q=[];for(var n=0;n<o;n++){var s=(r[n>>>2]>>>(24-(n%4)*8))&255;q.push((s>>>4).toString(16));q.push((s&15).toString(16))}return q.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o<n;o+=2){q[o>>>3]|=parseInt(p.substr(o,2),16)<<(24-(o%8)*4)}return new l.init(q,n/2)}};var d=m.Latin1={stringify:function(q){var r=q.words;var p=q.sigBytes;var n=[];for(var o=0;o<p;o++){var s=(r[o>>>2]>>>(24-(o%4)*8))&255;n.push(String.fromCharCode(s))}return n.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o<n;o++){q[o>>>2]|=(p.charCodeAt(o)&255)<<(24-(o%4)*8)}return new l.init(q,n)}};var c=m.Utf8={stringify:function(n){try{return decodeURIComponent(escape(d.stringify(n)))}catch(o){throw new Error(\"Malformed UTF-8 data\")}},parse:function(n){return d.parse(unescape(encodeURIComponent(n)))}};var i=b.BufferedBlockAlgorithm=j.extend({reset:function(){this._data=new l.init();this._nDataBytes=0},_append:function(n){if(typeof n==\"string\"){n=c.parse(n)}this._data.concat(n);this._nDataBytes+=n.sigBytes},_process:function(w){var q=this._data;var x=q.words;var n=q.sigBytes;var t=this.blockSize;var v=t*4;var u=n/v;if(w){u=e.ceil(u)}else{u=e.max((u|0)-this._minBufferSize,0)}var s=u*t;var r=e.min(s*4,n);if(s){for(var p=0;p<s;p+=t){this._doProcessBlock(x,p)}var o=x.splice(0,s);q.sigBytes-=r}return new l.init(o,r)},clone:function(){var n=j.clone.call(this);n._data=this._data.clone();return n},_minBufferSize:0});var f=b.Hasher=i.extend({cfg:j.extend(),init:function(n){this.cfg=this.cfg.extend(n);this.reset()},reset:function(){i.reset.call(this);this._doReset()},update:function(n){this._append(n);this._process();return this},finalize:function(n){if(n){this._append(n)}var o=this._doFinalize();return o},blockSize:512/32,_createHelper:function(n){return function(p,o){return new n.init(o).finalize(p)}},_createHmacHelper:function(n){return function(p,o){return new k.HMAC.init(n,o).finalize(p)}}});var k=a.algo={};return a}(Math));(function(g){var a=CryptoJS,f=a.lib,e=f.Base,h=f.WordArray,a=a.x64={};a.Word=e.extend({init:function(b,c){this.high=b;this.low=c}});a.WordArray=e.extend({init:function(b,c){b=this.words=b||[];this.sigBytes=c!=g?c:8*b.length},toX32:function(){for(var b=this.words,c=b.length,a=[],d=0;d<c;d++){var e=b[d];a.push(e.high);a.push(e.low)}return h.create(a,this.sigBytes)},clone:function(){for(var b=e.clone.call(this),c=b.words=this.words.slice(0),a=c.length,d=0;d<a;d++)c[d]=c[d].clone();return b}})})();(function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a<f;a+=3)for(var d=(e[a>>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g<f;g++)b.push(c.charAt(d>>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join(\"\")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d<e;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}})();(function(k){for(var g=CryptoJS,h=g.lib,v=h.WordArray,j=h.Hasher,h=g.algo,s=[],t=[],u=function(q){return 4294967296*(q-(q|0))|0},l=2,b=0;64>b;){var d;a:{d=l;for(var w=k.sqrt(d),r=2;r<=w;r++)if(!(d%r)){d=!1;break a}d=!0}d&&(8>b&&(s[b]=u(k.pow(l,0.5))),t[b]=u(k.pow(l,1/3)),b++);l++}var n=[],h=h.SHA256=j.extend({_doReset:function(){this._hash=new v.init(s.slice(0))},_doProcessBlock:function(q,h){for(var a=this._hash.words,c=a[0],d=a[1],b=a[2],k=a[3],f=a[4],g=a[5],j=a[6],l=a[7],e=0;64>e;e++){if(16>e)n[e]=q[h+e]|0;else{var m=n[e-15],p=n[e-2];n[e]=((m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3)+n[e-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+n[e-16]}m=l+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&g^~f&j)+t[e]+n[e];p=((c<<30|c>>>2)^(c<<19|c>>>13)^(c<<10|c>>>22))+(c&d^c&b^d&b);l=j;j=g;g=f;f=k+m|0;k=b;b=d;d=c;c=m+p|0}a[0]=a[0]+c|0;a[1]=a[1]+d|0;a[2]=a[2]+b|0;a[3]=a[3]+k|0;a[4]=a[4]+f|0;a[5]=a[5]+g|0;a[6]=a[6]+j|0;a[7]=a[7]+l|0},_doFinalize:function(){var d=this._data,b=d.words,a=8*this._nDataBytes,c=8*d.sigBytes;b[c>>>5]|=128<<24-c%32;b[(c+64>>>9<<4)+14]=k.floor(a/4294967296);b[(c+64>>>9<<4)+15]=a;d.sigBytes=4*b.length;this._process();return this._hash},clone:function(){var b=j.clone.call(this);b._hash=this._hash.clone();return b}});g.SHA256=j._createHelper(h);g.HmacSHA256=j._createHmacHelper(h)})(Math);(function(){function a(){return d.create.apply(d,arguments)}for(var n=CryptoJS,r=n.lib.Hasher,e=n.x64,d=e.Word,T=e.WordArray,e=n.algo,ea=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],v=[],w=0;80>w;w++)v[w]=a();e=e.SHA512=r.extend({_doReset:function(){this._hash=new T.init([new d.init(1779033703,4089235720),new d.init(3144134277,2227873595),new d.init(1013904242,4271175723),new d.init(2773480762,1595750129),new d.init(1359893119,2917565137),new d.init(2600822924,725511199),new d.init(528734635,4215389547),new d.init(1541459225,327033209)])},_doProcessBlock:function(a,d){for(var f=this._hash.words,F=f[0],e=f[1],n=f[2],r=f[3],G=f[4],H=f[5],I=f[6],f=f[7],w=F.high,J=F.low,X=e.high,K=e.low,Y=n.high,L=n.low,Z=r.high,M=r.low,$=G.high,N=G.low,aa=H.high,O=H.low,ba=I.high,P=I.low,ca=f.high,Q=f.low,k=w,g=J,z=X,x=K,A=Y,y=L,U=Z,B=M,l=$,h=N,R=aa,C=O,S=ba,D=P,V=ca,E=Q,m=0;80>m;m++){var s=v[m];if(16>m)var j=s.high=a[d+2*m]|0,b=s.low=a[d+2*m+1]|0;else{var j=v[m-15],b=j.high,p=j.low,j=(b>>>1|p<<31)^(b>>>8|p<<24)^b>>>7,p=(p>>>1|b<<31)^(p>>>8|b<<24)^(p>>>7|b<<25),u=v[m-2],b=u.high,c=u.low,u=(b>>>19|c<<13)^(b<<3|c>>>29)^b>>>6,c=(c>>>19|b<<13)^(c<<3|b>>>29)^(c>>>6|b<<26),b=v[m-7],W=b.high,t=v[m-16],q=t.high,t=t.low,b=p+b.low,j=j+W+(b>>>0<p>>>0?1:0),b=b+c,j=j+u+(b>>>0<c>>>0?1:0),b=b+t,j=j+q+(b>>>0<t>>>0?1:0);s.high=j;s.low=b}var W=l&R^~l&S,t=h&C^~h&D,s=k&z^k&A^z&A,T=g&x^g&y^x&y,p=(k>>>28|g<<4)^(k<<30|g>>>2)^(k<<25|g>>>7),u=(g>>>28|k<<4)^(g<<30|k>>>2)^(g<<25|k>>>7),c=ea[m],fa=c.high,da=c.low,c=E+((h>>>14|l<<18)^(h>>>18|l<<14)^(h<<23|l>>>9)),q=V+((l>>>14|h<<18)^(l>>>18|h<<14)^(l<<23|h>>>9))+(c>>>0<E>>>0?1:0),c=c+t,q=q+W+(c>>>0<t>>>0?1:0),c=c+da,q=q+fa+(c>>>0<da>>>0?1:0),c=c+b,q=q+j+(c>>>0<b>>>0?1:0),b=u+T,s=p+s+(b>>>0<u>>>0?1:0),V=S,E=D,S=R,D=C,R=l,C=h,h=B+c|0,l=U+q+(h>>>0<B>>>0?1:0)|0,U=A,B=y,A=z,y=x,z=k,x=g,g=c+b|0,k=q+s+(g>>>0<c>>>0?1:0)|0}J=F.low=J+g;F.high=w+k+(J>>>0<g>>>0?1:0);K=e.low=K+x;e.high=X+z+(K>>>0<x>>>0?1:0);L=n.low=L+y;n.high=Y+A+(L>>>0<y>>>0?1:0);M=r.low=M+B;r.high=Z+U+(M>>>0<B>>>0?1:0);N=G.low=N+h;G.high=$+l+(N>>>0<h>>>0?1:0);O=H.low=O+C;H.high=aa+R+(O>>>0<C>>>0?1:0);P=I.low=P+D;I.high=ba+S+(P>>>0<D>>>0?1:0);Q=f.low=Q+E;f.high=ca+V+(Q>>>0<E>>>0?1:0)},_doFinalize:function(){var a=this._data,d=a.words,f=8*this._nDataBytes,e=8*a.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+128>>>10<<5)+30]=Math.floor(f/4294967296);d[(e+128>>>10<<5)+31]=f;a.sigBytes=4*d.length;this._process();return this._hash.toX32()},clone:function(){var a=r.clone.call(this);a._hash=this._hash.clone();return a},blockSize:32});n.SHA512=r._createHelper(e);n.HmacSHA512=r._createHmacHelper(e)})();(function(){var c=CryptoJS,a=c.x64,b=a.Word,e=a.WordArray,a=c.algo,d=a.SHA512,a=a.SHA384=d.extend({_doReset:function(){this._hash=new e.init([new b.init(3418070365,3238371032),new b.init(1654270250,914150663),new b.init(2438529370,812702999),new b.init(355462360,4144912697),new b.init(1731405415,4290775857),new b.init(2394180231,1750603025),new b.init(3675008525,1694076839),new b.init(1203062813,3204075428)])},_doFinalize:function(){var a=d._doFinalize.call(this);a.sigBytes-=16;return a}});c.SHA384=d._createHelper(a);c.HmacSHA384=d._createHmacHelper(a)})();var b64map=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var b64pad=\"=\";function hex2b64(d){var b;var e;var a=\"\";for(b=0;b+3<=d.length;b+=3){e=parseInt(d.substring(b,b+3),16);a+=b64map.charAt(e>>6)+b64map.charAt(e&63)}if(b+1==d.length){e=parseInt(d.substring(b,b+1),16);a+=b64map.charAt(e<<2)}else{if(b+2==d.length){e=parseInt(d.substring(b,b+2),16);a+=b64map.charAt(e>>2)+b64map.charAt((e&3)<<4)}}if(b64pad){while((a.length&3)>0){a+=b64pad}}return a}function b64tohex(f){var d=\"\";var e;var b=0;var c;var a;for(e=0;e<f.length;++e){if(f.charAt(e)==b64pad){break}a=b64map.indexOf(f.charAt(e));if(a<0){continue}if(b==0){d+=int2char(a>>2);c=a&3;b=1}else{if(b==1){d+=int2char((c<<2)|(a>>4));c=a&15;b=2}else{if(b==2){d+=int2char(c);d+=int2char(a>>2);c=a&3;b=3}else{d+=int2char((c<<2)|(a>>4));d+=int2char(a&15);b=0}}}}if(b==1){d+=int2char(c<<2)}return d}function b64toBA(e){var d=b64tohex(e);var c;var b=new Array();for(c=0;2*c<d.length;++c){b[c]=parseInt(d.substring(2*c,2*c+2),16)}return b};var dbits;var canary=244837814094590;var j_lm=((canary&16777215)==15715070);function BigInteger(e,d,f){if(e!=null){if(\"number\"==typeof e){this.fromNumber(e,d,f)}else{if(d==null&&\"string\"!=typeof e){this.fromString(e,256)}else{this.fromString(e,d)}}}}function nbi(){return new BigInteger(null)}function am1(f,a,b,e,h,g){while(--g>=0){var d=a*this[f++]+b[e]+h;h=Math.floor(d/67108864);b[e++]=d&67108863}return h}function am2(f,q,r,e,o,a){var k=q&32767,p=q>>15;while(--a>=0){var d=this[f]&32767;var g=this[f++]>>15;var b=p*d+g*k;d=k*d+((b&32767)<<15)+r[e]+(o&1073741823);o=(d>>>30)+(b>>>15)+p*g+(o>>>30);r[e++]=d&1073741823}return o}function am3(f,q,r,e,o,a){var k=q&16383,p=q>>14;while(--a>=0){var d=this[f]&16383;var g=this[f++]>>14;var b=p*d+g*k;d=k*d+((b&16383)<<14)+r[e]+o;o=(d>>28)+(b>>14)+p*g;r[e++]=d&268435455}return o}if(j_lm&&(navigator.appName==\"Microsoft Internet Explorer\")){BigInteger.prototype.am=am2;dbits=30}else{if(j_lm&&(navigator.appName!=\"Netscape\")){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<<dbits)-1);BigInteger.prototype.DV=(1<<dbits);var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP);BigInteger.prototype.F1=BI_FP-dbits;BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM=\"0123456789abcdefghijklmnopqrstuvwxyz\";var BI_RC=new Array();var rr,vv;rr=\"0\".charCodeAt(0);for(vv=0;vv<=9;++vv){BI_RC[rr++]=vv}rr=\"a\".charCodeAt(0);for(vv=10;vv<36;++vv){BI_RC[rr++]=vv}rr=\"A\".charCodeAt(0);for(vv=10;vv<36;++vv){BI_RC[rr++]=vv}function int2char(a){return BI_RM.charAt(a)}function intAt(b,a){var d=BI_RC[b.charCodeAt(a)];return(d==null)?-1:d}function bnpCopyTo(b){for(var a=this.t-1;a>=0;--a){b[a]=this[a]}b.t=this.t;b.s=this.s}function bnpFromInt(a){this.t=1;this.s=(a<0)?-1:0;if(a>0){this[0]=a}else{if(a<-1){this[0]=a+this.DV}else{this.t=0}}}function nbv(a){var b=nbi();b.fromInt(a);return b}function bnpFromString(h,c){var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==256){e=8}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{this.fromRadix(h,c);return}}}}}}this.t=0;this.s=0;var g=h.length,d=false,f=0;while(--g>=0){var a=(e==8)?h[g]&255:intAt(h,g);if(a<0){if(h.charAt(g)==\"-\"){d=true}continue}d=false;if(f==0){this[this.t++]=a}else{if(f+e>this.DB){this[this.t-1]|=(a&((1<<(this.DB-f))-1))<<f;this[this.t++]=(a>>(this.DB-f))}else{this[this.t-1]|=a<<f}}f+=e;if(f>=this.DB){f-=this.DB}}if(e==8&&(h[0]&128)!=0){this.s=-1;if(f>0){this[this.t-1]|=((1<<(this.DB-f))-1)<<f}}this.clamp();if(d){BigInteger.ZERO.subTo(this,this)}}function bnpClamp(){var a=this.s&this.DM;while(this.t>0&&this[this.t-1]==a){--this.t}}function bnToString(c){if(this.s<0){return\"-\"+this.negate().toString(c)}var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{return this.toRadix(c)}}}}}var g=(1<<e)-1,l,a=false,h=\"\",f=this.t;var j=this.DB-(f*this.DB)%e;if(f-->0){if(j<this.DB&&(l=this[f]>>j)>0){a=true;h=int2char(l)}while(f>=0){if(j<e){l=(this[f]&((1<<j)-1))<<(e-j);l|=this[--f]>>(j+=this.DB-e)}else{l=(this[f]>>(j-=e))&g;if(j<=0){j+=this.DB;--f}}if(l>0){a=true}if(a){h+=int2char(l)}}}return a?h:\"0\"}function bnNegate(){var a=nbi();BigInteger.ZERO.subTo(this,a);return a}function bnAbs(){return(this.s<0)?this.negate():this}function bnCompareTo(b){var d=this.s-b.s;if(d!=0){return d}var c=this.t;d=c-b.t;if(d!=0){return(this.s<0)?-d:d}while(--c>=0){if((d=this[c]-b[c])!=0){return d}}return 0}function nbits(a){var c=1,b;if((b=a>>>16)!=0){a=b;c+=16}if((b=a>>8)!=0){a=b;c+=8}if((b=a>>4)!=0){a=b;c+=4}if((b=a>>2)!=0){a=b;c+=2}if((b=a>>1)!=0){a=b;c+=1}return c}function bnBitLength(){if(this.t<=0){return 0}return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM))}function bnpDLShiftTo(c,b){var a;for(a=this.t-1;a>=0;--a){b[a+c]=this[a]}for(a=c-1;a>=0;--a){b[a]=0}b.t=this.t+c;b.s=this.s}function bnpDRShiftTo(c,b){for(var a=c;a<this.t;++a){b[a-c]=this[a]}b.t=Math.max(this.t-c,0);b.s=this.s}function bnpLShiftTo(j,e){var b=j%this.DB;var a=this.DB-b;var g=(1<<a)-1;var f=Math.floor(j/this.DB),h=(this.s<<b)&this.DM,d;for(d=this.t-1;d>=0;--d){e[d+f+1]=(this[d]>>a)|h;h=(this[d]&g)<<b}for(d=f-1;d>=0;--d){e[d]=0}e[f]=h;e.t=this.t+f+1;e.s=this.s;e.clamp()}function bnpRShiftTo(g,d){d.s=this.s;var e=Math.floor(g/this.DB);if(e>=this.t){d.t=0;return}var b=g%this.DB;var a=this.DB-b;var f=(1<<b)-1;d[0]=this[e]>>b;for(var c=e+1;c<this.t;++c){d[c-e-1]|=(this[c]&f)<<a;d[c-e]=this[c]>>b}if(b>0){d[this.t-e-1]|=(this.s&f)<<a}d.t=this.t-e;d.clamp()}function bnpSubTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e<b){g+=this[e]-d[e];f[e++]=g&this.DM;g>>=this.DB}if(d.t<this.t){g-=d.s;while(e<this.t){g+=this[e];f[e++]=g&this.DM;g>>=this.DB}g+=this.s}else{g+=this.s;while(e<d.t){g-=d[e];f[e++]=g&this.DM;g>>=this.DB}g-=d.s}f.s=(g<0)?-1:0;if(g<-1){f[e++]=this.DV+g}else{if(g>0){f[e++]=g}}f.t=e;f.clamp()}function bnpMultiplyTo(c,e){var b=this.abs(),f=c.abs();var d=b.t;e.t=d+f.t;while(--d>=0){e[d]=0}for(d=0;d<f.t;++d){e[d+b.t]=b.am(0,f[d],e,d,0,b.t)}e.s=0;e.clamp();if(this.s!=c.s){BigInteger.ZERO.subTo(e,e)}}function bnpSquareTo(d){var a=this.abs();var b=d.t=2*a.t;while(--b>=0){d[b]=0}for(b=0;b<a.t-1;++b){var e=a.am(b,a[b],d,2*b,0,1);if((d[b+a.t]+=a.am(b+1,2*a[b],d,2*b+1,e,a.t-b-1))>=a.DV){d[b+a.t]-=a.DV;d[b+a.t+1]=1}}if(d.t>0){d[d.t-1]+=a.am(b,a[b],d,2*b,0,1)}d.s=0;d.clamp()}function bnpDivRemTo(n,h,g){var w=n.abs();if(w.t<=0){return}var k=this.abs();if(k.t<w.t){if(h!=null){h.fromInt(0)}if(g!=null){this.copyTo(g)}return}if(g==null){g=nbi()}var d=nbi(),a=this.s,l=n.s;var v=this.DB-nbits(w[w.t-1]);if(v>0){w.lShiftTo(v,d);k.lShiftTo(v,g)}else{w.copyTo(d);k.copyTo(g)}var p=d.t;var b=d[p-1];if(b==0){return}var o=b*(1<<this.F1)+((p>1)?d[p-2]>>this.F2:0);var A=this.FV/o,z=(1<<this.F1)/o,x=1<<this.F2;var u=g.t,s=u-p,f=(h==null)?nbi():h;d.dlShiftTo(s,f);if(g.compareTo(f)>=0){g[g.t++]=1;g.subTo(f,g)}BigInteger.ONE.dlShiftTo(p,f);f.subTo(d,d);while(d.t<p){d[d.t++]=0}while(--s>=0){var c=(g[--u]==b)?this.DM:Math.floor(g[u]*A+(g[u-1]+x)*z);if((g[u]+=d.am(0,c,g,s,0,p))<c){d.dlShiftTo(s,f);g.subTo(f,g);while(g[u]<--c){g.subTo(f,g)}}}if(h!=null){g.drShiftTo(p,h);if(a!=l){BigInteger.ZERO.subTo(h,h)}}g.t=p;g.clamp();if(v>0){g.rShiftTo(v,g)}if(a<0){BigInteger.ZERO.subTo(g,g)}}function bnMod(b){var c=nbi();this.abs().divRemTo(b,null,c);if(this.s<0&&c.compareTo(BigInteger.ZERO)>0){b.subTo(c,c)}return c}function Classic(a){this.m=a}function cConvert(a){if(a.s<0||a.compareTo(this.m)>=0){return a.mod(this.m)}else{return a}}function cRevert(a){return a}function cReduce(a){a.divRemTo(this.m,null,a)}function cMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}function cSqrTo(a,b){a.squareTo(b);this.reduce(b)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1){return 0}var a=this[0];if((a&1)==0){return 0}var b=a&3;b=(b*(2-(a&15)*b))&15;b=(b*(2-(a&255)*b))&255;b=(b*(2-(((a&65535)*b)&65535)))&65535;b=(b*(2-a*b%this.DV))%this.DV;return(b>0)?this.DV-b:-b}function Montgomery(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(a.DB-15))-1;this.mt2=2*a.t}function montConvert(a){var b=nbi();a.abs().dlShiftTo(this.m.t,b);b.divRemTo(this.m,null,b);if(a.s<0&&b.compareTo(BigInteger.ZERO)>0){this.m.subTo(b,b)}return b}function montRevert(a){var b=nbi();a.copyTo(b);this.reduce(b);return b}function montReduce(a){while(a.t<=this.mt2){a[a.t++]=0}for(var c=0;c<this.m.t;++c){var b=a[c]&32767;var d=(b*this.mpl+(((b*this.mph+(a[c]>>15)*this.mpl)&this.um)<<15))&a.DM;b=c+this.m.t;a[b]+=this.m.am(0,d,a,c,0,this.m.t);while(a[b]>=a.DV){a[b]-=a.DV;a[++b]++}}a.clamp();a.drShiftTo(this.m.t,a);if(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function montSqrTo(a,b){a.squareTo(b);this.reduce(b)}function montMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return((this.t>0)?(this[0]&1):this.s)==0}function bnpExp(h,j){if(h>4294967295||h<1){return BigInteger.ONE}var f=nbi(),a=nbi(),d=j.convert(this),c=nbits(h)-1;d.copyTo(f);while(--c>=0){j.sqrTo(f,a);if((h&(1<<c))>0){j.mulTo(a,d,f)}else{var b=f;f=a;a=b}}return j.revert(f)}function bnModPowInt(b,a){var c;if(b<256||a.isEven()){c=new Classic(a)}else{c=new Montgomery(a)}return this.exp(b,c)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnClone(){var a=nbi();this.copyTo(a);return a}function bnIntValue(){if(this.s<0){if(this.t==1){return this[0]-this.DV}else{if(this.t==0){return -1}}}else{if(this.t==1){return this[0]}else{if(this.t==0){return 0}}}return((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0]}function bnByteValue(){return(this.t==0)?this.s:(this[0]<<24)>>24}function bnShortValue(){return(this.t==0)?this.s:(this[0]<<16)>>16}function bnpChunkSize(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function bnSigNum(){if(this.s<0){return -1}else{if(this.t<=0||(this.t==1&&this[0]<=0)){return 0}else{return 1}}}function bnpToRadix(c){if(c==null){c=10}if(this.signum()==0||c<2||c>36){return\"0\"}var f=this.chunkSize(c);var e=Math.pow(c,f);var i=nbv(e),j=nbi(),h=nbi(),g=\"\";this.divRemTo(i,j,h);while(j.signum()>0){g=(e+h.intValue()).toString(c).substr(1)+g;j.divRemTo(i,j,h)}return h.intValue().toString(c)+g}function bnpFromRadix(m,h){this.fromInt(0);if(h==null){h=10}var f=this.chunkSize(h);var g=Math.pow(h,f),e=false,a=0,l=0;for(var c=0;c<m.length;++c){var k=intAt(m,c);if(k<0){if(m.charAt(c)==\"-\"&&this.signum()==0){e=true}continue}l=h*l+k;if(++a>=f){this.dMultiply(g);this.dAddOffset(l,0);a=0;l=0}}if(a>0){this.dMultiply(Math.pow(h,a));this.dAddOffset(l,0)}if(e){BigInteger.ZERO.subTo(this,this)}}function bnpFromNumber(f,e,h){if(\"number\"==typeof e){if(f<2){this.fromInt(1)}else{this.fromNumber(f,h);if(!this.testBit(f-1)){this.bitwiseTo(BigInteger.ONE.shiftLeft(f-1),op_or,this)}if(this.isEven()){this.dAddOffset(1,0)}while(!this.isProbablePrime(e)){this.dAddOffset(2,0);if(this.bitLength()>f){this.subTo(BigInteger.ONE.shiftLeft(f-1),this)}}}}else{var d=new Array(),g=f&7;d.length=(f>>3)+1;e.nextBytes(d);if(g>0){d[0]&=((1<<g)-1)}else{d[0]=0}this.fromString(d,256)}}function bnToByteArray(){var b=this.t,c=new Array();c[0]=this.s;var e=this.DB-(b*this.DB)%8,f,a=0;if(b-->0){if(e<this.DB&&(f=this[b]>>e)!=(this.s&this.DM)>>e){c[a++]=f|(this.s<<(this.DB-e))}while(b>=0){if(e<8){f=(this[b]&((1<<e)-1))<<(8-e);f|=this[--b]>>(e+=this.DB-8)}else{f=(this[b]>>(e-=8))&255;if(e<=0){e+=this.DB;--b}}if((f&128)!=0){f|=-256}if(a==0&&(this.s&128)!=(f&128)){++a}if(a>0||f!=this.s){c[a++]=f}}}return c}function bnEquals(b){return(this.compareTo(b)==0)}function bnMin(b){return(this.compareTo(b)<0)?this:b}function bnMax(b){return(this.compareTo(b)>0)?this:b}function bnpBitwiseTo(c,h,e){var d,g,b=Math.min(c.t,this.t);for(d=0;d<b;++d){e[d]=h(this[d],c[d])}if(c.t<this.t){g=c.s&this.DM;for(d=b;d<this.t;++d){e[d]=h(this[d],g)}e.t=this.t}else{g=this.s&this.DM;for(d=b;d<c.t;++d){e[d]=h(g,c[d])}e.t=c.t}e.s=h(this.s,c.s);e.clamp()}function op_and(a,b){return a&b}function bnAnd(b){var c=nbi();this.bitwiseTo(b,op_and,c);return c}function op_or(a,b){return a|b}function bnOr(b){var c=nbi();this.bitwiseTo(b,op_or,c);return c}function op_xor(a,b){return a^b}function bnXor(b){var c=nbi();this.bitwiseTo(b,op_xor,c);return c}function op_andnot(a,b){return a&~b}function bnAndNot(b){var c=nbi();this.bitwiseTo(b,op_andnot,c);return c}function bnNot(){var b=nbi();for(var a=0;a<this.t;++a){b[a]=this.DM&~this[a]}b.t=this.t;b.s=~this.s;return b}function bnShiftLeft(b){var a=nbi();if(b<0){this.rShiftTo(-b,a)}else{this.lShiftTo(b,a)}return a}function bnShiftRight(b){var a=nbi();if(b<0){this.lShiftTo(-b,a)}else{this.rShiftTo(b,a)}return a}function lbit(a){if(a==0){return -1}var b=0;if((a&65535)==0){a>>=16;b+=16}if((a&255)==0){a>>=8;b+=8}if((a&15)==0){a>>=4;b+=4}if((a&3)==0){a>>=2;b+=2}if((a&1)==0){++b}return b}function bnGetLowestSetBit(){for(var a=0;a<this.t;++a){if(this[a]!=0){return a*this.DB+lbit(this[a])}}if(this.s<0){return this.t*this.DB}return -1}function cbit(a){var b=0;while(a!=0){a&=a-1;++b}return b}function bnBitCount(){var c=0,a=this.s&this.DM;for(var b=0;b<this.t;++b){c+=cbit(this[b]^a)}return c}function bnTestBit(b){var a=Math.floor(b/this.DB);if(a>=this.t){return(this.s!=0)}return((this[a]&(1<<(b%this.DB)))!=0)}function bnpChangeBit(c,b){var a=BigInteger.ONE.shiftLeft(c);this.bitwiseTo(a,b,a);return a}function bnSetBit(a){return this.changeBit(a,op_or)}function bnClearBit(a){return this.changeBit(a,op_andnot)}function bnFlipBit(a){return this.changeBit(a,op_xor)}function bnpAddTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e<b){g+=this[e]+d[e];f[e++]=g&this.DM;g>>=this.DB}if(d.t<this.t){g+=d.s;while(e<this.t){g+=this[e];f[e++]=g&this.DM;g>>=this.DB}g+=this.s}else{g+=this.s;while(e<d.t){g+=d[e];f[e++]=g&this.DM;g>>=this.DB}g+=d.s}f.s=(g<0)?-1:0;if(g>0){f[e++]=g}else{if(g<-1){f[e++]=this.DV+g}}f.t=e;f.clamp()}function bnAdd(b){var c=nbi();this.addTo(b,c);return c}function bnSubtract(b){var c=nbi();this.subTo(b,c);return c}function bnMultiply(b){var c=nbi();this.multiplyTo(b,c);return c}function bnSquare(){var a=nbi();this.squareTo(a);return a}function bnDivide(b){var c=nbi();this.divRemTo(b,c,null);return c}function bnRemainder(b){var c=nbi();this.divRemTo(b,null,c);return c}function bnDivideAndRemainder(b){var d=nbi(),c=nbi();this.divRemTo(b,d,c);return new Array(d,c)}function bnpDMultiply(a){this[this.t]=this.am(0,a-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(b,a){if(b==0){return}while(this.t<=a){this[this.t++]=0}this[a]+=b;while(this[a]>=this.DV){this[a]-=this.DV;if(++a>=this.t){this[this.t++]=0}++this[a]}}function NullExp(){}function nNop(a){return a}function nMulTo(a,c,b){a.multiplyTo(c,b)}function nSqrTo(a,b){a.squareTo(b)}NullExp.prototype.convert=nNop;NullExp.prototype.revert=nNop;NullExp.prototype.mulTo=nMulTo;NullExp.prototype.sqrTo=nSqrTo;function bnPow(a){return this.exp(a,new NullExp())}function bnpMultiplyLowerTo(b,f,e){var d=Math.min(this.t+b.t,f);e.s=0;e.t=d;while(d>0){e[--d]=0}var c;for(c=e.t-this.t;d<c;++d){e[d+this.t]=this.am(0,b[d],e,d,0,this.t)}for(c=Math.min(b.t,f);d<c;++d){this.am(0,b[d],e,d,0,f-d)}e.clamp()}function bnpMultiplyUpperTo(b,e,d){--e;var c=d.t=this.t+b.t-e;d.s=0;while(--c>=0){d[c]=0}for(c=Math.max(e-this.t,0);c<b.t;++c){d[this.t+c-e]=this.am(e-c,b[c],d,0,0,this.t+c-e)}d.clamp();d.drShiftTo(1,d)}function Barrett(a){this.r2=nbi();this.q3=nbi();BigInteger.ONE.dlShiftTo(2*a.t,this.r2);this.mu=this.r2.divide(a);this.m=a}function barrettConvert(a){if(a.s<0||a.t>2*this.m.t){return a.mod(this.m)}else{if(a.compareTo(this.m)<0){return a}else{var b=nbi();a.copyTo(b);this.reduce(b);return b}}}function barrettRevert(a){return a}function barrettReduce(a){a.drShiftTo(this.m.t-1,this.r2);if(a.t>this.m.t+1){a.t=this.m.t+1;a.clamp()}this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(a.compareTo(this.r2)<0){a.dAddOffset(1,this.m.t+1)}a.subTo(this.r2,a);while(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function barrettSqrTo(a,b){a.squareTo(b);this.reduce(b)}function barrettMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Barrett.prototype.convert=barrettConvert;Barrett.prototype.revert=barrettRevert;Barrett.prototype.reduce=barrettReduce;Barrett.prototype.mulTo=barrettMulTo;Barrett.prototype.sqrTo=barrettSqrTo;function bnModPow(q,f){var o=q.bitLength(),h,b=nbv(1),v;if(o<=0){return b}else{if(o<18){h=1}else{if(o<48){h=3}else{if(o<144){h=4}else{if(o<768){h=5}else{h=6}}}}}if(o<8){v=new Classic(f)}else{if(f.isEven()){v=new Barrett(f)}else{v=new Montgomery(f)}}var p=new Array(),d=3,s=h-1,a=(1<<h)-1;p[1]=v.convert(this);if(h>1){var A=nbi();v.sqrTo(p[1],A);while(d<=a){p[d]=nbi();v.mulTo(A,p[d-2],p[d]);d+=2}}var l=q.t-1,x,u=true,c=nbi(),y;o=nbits(q[l])-1;while(l>=0){if(o>=s){x=(q[l]>>(o-s))&a}else{x=(q[l]&((1<<(o+1))-1))<<(s-o);if(l>0){x|=q[l-1]>>(this.DB+o-s)}}d=h;while((x&1)==0){x>>=1;--d}if((o-=d)<0){o+=this.DB;--l}if(u){p[x].copyTo(b);u=false}else{while(d>1){v.sqrTo(b,c);v.sqrTo(c,b);d-=2}if(d>0){v.sqrTo(b,c)}else{y=b;b=c;c=y}v.mulTo(c,p[x],b)}while(l>=0&&(q[l]&(1<<o))==0){v.sqrTo(b,c);y=b;b=c;c=y;if(--o<0){o=this.DB-1;--l}}}return v.revert(b)}function bnGCD(c){var b=(this.s<0)?this.negate():this.clone();var h=(c.s<0)?c.negate():c.clone();if(b.compareTo(h)<0){var e=b;b=h;h=e}var d=b.getLowestSetBit(),f=h.getLowestSetBit();if(f<0){return b}if(d<f){f=d}if(f>0){b.rShiftTo(f,b);h.rShiftTo(f,h)}while(b.signum()>0){if((d=b.getLowestSetBit())>0){b.rShiftTo(d,b)}if((d=h.getLowestSetBit())>0){h.rShiftTo(d,h)}if(b.compareTo(h)>=0){b.subTo(h,b);b.rShiftTo(1,b)}else{h.subTo(b,h);h.rShiftTo(1,h)}}if(f>0){h.lShiftTo(f,h)}return h}function bnpModInt(e){if(e<=0){return 0}var c=this.DV%e,b=(this.s<0)?e-1:0;if(this.t>0){if(c==0){b=this[0]%e}else{for(var a=this.t-1;a>=0;--a){b=(c*b+this[a])%e}}}return b}function bnModInverse(f){var j=f.isEven();if((this.isEven()&&j)||f.signum()==0){return BigInteger.ZERO}var i=f.clone(),h=this.clone();var g=nbv(1),e=nbv(0),l=nbv(0),k=nbv(1);while(i.signum()!=0){while(i.isEven()){i.rShiftTo(1,i);if(j){if(!g.isEven()||!e.isEven()){g.addTo(this,g);e.subTo(f,e)}g.rShiftTo(1,g)}else{if(!e.isEven()){e.subTo(f,e)}}e.rShiftTo(1,e)}while(h.isEven()){h.rShiftTo(1,h);if(j){if(!l.isEven()||!k.isEven()){l.addTo(this,l);k.subTo(f,k)}l.rShiftTo(1,l)}else{if(!k.isEven()){k.subTo(f,k)}}k.rShiftTo(1,k)}if(i.compareTo(h)>=0){i.subTo(h,i);if(j){g.subTo(l,g)}e.subTo(k,e)}else{h.subTo(i,h);if(j){l.subTo(g,l)}k.subTo(e,k)}}if(h.compareTo(BigInteger.ONE)!=0){return BigInteger.ZERO}if(k.compareTo(f)>=0){return k.subtract(f)}if(k.signum()<0){k.addTo(f,k)}else{return k}if(k.signum()<0){return k.add(f)}else{return k}}var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];var lplim=(1<<26)/lowprimes[lowprimes.length-1];function bnIsProbablePrime(e){var d,b=this.abs();if(b.t==1&&b[0]<=lowprimes[lowprimes.length-1]){for(d=0;d<lowprimes.length;++d){if(b[0]==lowprimes[d]){return true}}return false}if(b.isEven()){return false}d=1;while(d<lowprimes.length){var a=lowprimes[d],c=d+1;while(c<lowprimes.length&&a<lplim){a*=lowprimes[c++]}a=b.modInt(a);while(d<c){if(a%lowprimes[d++]==0){return false}}}return b.millerRabin(e)}function bnpMillerRabin(f){var g=this.subtract(BigInteger.ONE);var c=g.getLowestSetBit();if(c<=0){return false}var h=g.shiftRight(c);f=(f+1)>>1;if(f>lowprimes.length){f=lowprimes.length}var b=nbi();for(var e=0;e<f;++e){b.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);var l=b.modPow(h,this);if(l.compareTo(BigInteger.ONE)!=0&&l.compareTo(g)!=0){var d=1;while(d++<c&&l.compareTo(g)!=0){l=l.modPowInt(2,this);if(l.compareTo(BigInteger.ONE)==0){return false}}if(l.compareTo(g)!=0){return false}}}return true}BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.fromNumber=bnpFromNumber;BigInteger.prototype.bitwiseTo=bnpBitwiseTo;BigInteger.prototype.changeBit=bnpChangeBit;BigInteger.prototype.addTo=bnpAddTo;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.multiplyLowerTo=bnpMultiplyLowerTo;BigInteger.prototype.multiplyUpperTo=bnpMultiplyUpperTo;BigInteger.prototype.modInt=bnpModInt;BigInteger.prototype.millerRabin=bnpMillerRabin;BigInteger.prototype.clone=bnClone;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.byteValue=bnByteValue;BigInteger.prototype.shortValue=bnShortValue;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.toByteArray=bnToByteArray;BigInteger.prototype.equals=bnEquals;BigInteger.prototype.min=bnMin;BigInteger.prototype.max=bnMax;BigInteger.prototype.and=bnAnd;BigInteger.prototype.or=bnOr;BigInteger.prototype.xor=bnXor;BigInteger.prototype.andNot=bnAndNot;BigInteger.prototype.not=bnNot;BigInteger.prototype.shiftLeft=bnShiftLeft;BigInteger.prototype.shiftRight=bnShiftRight;BigInteger.prototype.getLowestSetBit=bnGetLowestSetBit;BigInteger.prototype.bitCount=bnBitCount;BigInteger.prototype.testBit=bnTestBit;BigInteger.prototype.setBit=bnSetBit;BigInteger.prototype.clearBit=bnClearBit;BigInteger.prototype.flipBit=bnFlipBit;BigInteger.prototype.add=bnAdd;BigInteger.prototype.subtract=bnSubtract;BigInteger.prototype.multiply=bnMultiply;BigInteger.prototype.divide=bnDivide;BigInteger.prototype.remainder=bnRemainder;BigInteger.prototype.divideAndRemainder=bnDivideAndRemainder;BigInteger.prototype.modPow=bnModPow;BigInteger.prototype.modInverse=bnModInverse;BigInteger.prototype.pow=bnPow;BigInteger.prototype.gcd=bnGCD;BigInteger.prototype.isProbablePrime=bnIsProbablePrime;BigInteger.prototype.square=bnSquare;function Arcfour(){this.i=0;this.j=0;this.S=new Array()}function ARC4init(d){var c,a,b;for(c=0;c<256;++c){this.S[c]=c}a=0;for(c=0;c<256;++c){a=(a+this.S[c]+d[c%d.length])&255;b=this.S[c];this.S[c]=this.S[a];this.S[a]=b}this.i=0;this.j=0}function ARC4next(){var a;this.i=(this.i+1)&255;this.j=(this.j+this.S[this.i])&255;a=this.S[this.i];this.S[this.i]=this.S[this.j];this.S[this.j]=a;return this.S[(a+this.S[this.i])&255]}Arcfour.prototype.init=ARC4init;Arcfour.prototype.next=ARC4next;function prng_newstate(){return new Arcfour()}var rng_psize=256;var rng_state;var rng_pool;var rng_pptr;function rng_seed_int(a){rng_pool[rng_pptr++]^=a&255;rng_pool[rng_pptr++]^=(a>>8)&255;rng_pool[rng_pptr++]^=(a>>16)&255;rng_pool[rng_pptr++]^=(a>>24)&255;if(rng_pptr>=rng_psize){rng_pptr-=rng_psize}}function rng_seed_time(){rng_seed_int(new Date().getTime())}if(rng_pool==null){rng_pool=new Array();rng_pptr=0;var t;if(window!==undefined&&(window.crypto!==undefined||window.msCrypto!==undefined)){var crypto=window.crypto||window.msCrypto;if(crypto.getRandomValues){var ua=new Uint8Array(32);crypto.getRandomValues(ua);for(t=0;t<32;++t){rng_pool[rng_pptr++]=ua[t]}}else{if(navigator.appName==\"Netscape\"&&navigator.appVersion<\"5\"){var z=window.crypto.random(32);for(t=0;t<z.length;++t){rng_pool[rng_pptr++]=z.charCodeAt(t)&255}}}}while(rng_pptr<rng_psize){t=Math.floor(65536*Math.random());rng_pool[rng_pptr++]=t>>>8;rng_pool[rng_pptr++]=t&255}rng_pptr=0;rng_seed_time()}function rng_get_byte(){if(rng_state==null){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr){rng_pool[rng_pptr]=0}rng_pptr=0}return rng_state.next()}function rng_get_bytes(b){var a;for(a=0;a<b.length;++a){b[a]=rng_get_byte()}}function SecureRandom(){}SecureRandom.prototype.nextBytes=rng_get_bytes;function parseBigInt(b,a){return new BigInteger(b,a)}function linebrk(c,d){var a=\"\";var b=0;while(b+d<c.length){a+=c.substring(b,b+d)+\"\\n\";b+=d}return a+c.substring(b,c.length)}function byte2Hex(a){if(a<16){return\"0\"+a.toString(16)}else{return a.toString(16)}}function pkcs1pad2(e,h){if(h<e.length+11){throw\"Message too long for RSA\";return null}var g=new Array();var d=e.length-1;while(d>=0&&h>0){var f=e.charCodeAt(d--);if(f<128){g[--h]=f}else{if((f>127)&&(f<2048)){g[--h]=(f&63)|128;g[--h]=(f>>6)|192}else{g[--h]=(f&63)|128;g[--h]=((f>>6)&63)|128;g[--h]=(f>>12)|224}}}g[--h]=0;var b=new SecureRandom();var a=new Array();while(h>2){a[0]=0;while(a[0]==0){b.nextBytes(a)}g[--h]=a[0]}g[--h]=2;g[--h]=0;return new BigInteger(g)}function oaep_mgf1_arr(c,a,e){var b=\"\",d=0;while(b.length<a){b+=e(String.fromCharCode.apply(String,c.concat([(d&4278190080)>>24,(d&16711680)>>16,(d&65280)>>8,d&255])));d+=1}return b}function oaep_pad(q,a,f,l){var c=KJUR.crypto.MessageDigest;var o=KJUR.crypto.Util;var b=null;if(!f){f=\"sha1\"}if(typeof f===\"string\"){b=c.getCanonicalAlgName(f);l=c.getHashLength(b);f=function(i){return hextorstr(o.hashHex(rstrtohex(i),b))}}if(q.length+2*l+2>a){throw\"Message too long for RSA\"}var k=\"\",e;for(e=0;e<a-q.length-2*l-2;e+=1){k+=\"\\x00\"}var h=f(\"\")+k+\"\\x01\"+q;var g=new Array(l);new SecureRandom().nextBytes(g);var j=oaep_mgf1_arr(g,h.length,f);var p=[];for(e=0;e<h.length;e+=1){p[e]=h.charCodeAt(e)^j.charCodeAt(e)}var m=oaep_mgf1_arr(p,g.length,f);var d=[0];for(e=0;e<g.length;e+=1){d[e+1]=g[e]^m.charCodeAt(e)}return new BigInteger(d.concat(p))}function RSAKey(){this.n=null;this.e=0;this.d=null;this.p=null;this.q=null;this.dmp1=null;this.dmq1=null;this.coeff=null}function RSASetPublic(b,a){this.isPublic=true;this.isPrivate=false;if(typeof b!==\"string\"){this.n=b;this.e=a}else{if(b!=null&&a!=null&&b.length>0&&a.length>0){this.n=parseBigInt(b,16);this.e=parseInt(a,16)}else{throw\"Invalid RSA public key\"}}}function RSADoPublic(a){return a.modPowInt(this.e,this.n)}function RSAEncrypt(d){var a=pkcs1pad2(d,(this.n.bitLength()+7)>>3);if(a==null){return null}var e=this.doPublic(a);if(e==null){return null}var b=e.toString(16);if((b.length&1)==0){return b}else{return\"0\"+b}}function RSAEncryptOAEP(f,e,b){var a=oaep_pad(f,(this.n.bitLength()+7)>>3,e,b);if(a==null){return null}var g=this.doPublic(a);if(g==null){return null}var d=g.toString(16);if((d.length&1)==0){return d}else{return\"0\"+d}}RSAKey.prototype.doPublic=RSADoPublic;RSAKey.prototype.setPublic=RSASetPublic;RSAKey.prototype.encrypt=RSAEncrypt;RSAKey.prototype.encryptOAEP=RSAEncryptOAEP;RSAKey.prototype.type=\"RSA\";function ECFieldElementFp(b,a){this.x=a;this.q=b}function feFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.x.equals(a.x))}function feFpToBigInteger(){return this.x}function feFpNegate(){return new ECFieldElementFp(this.q,this.x.negate().mod(this.q))}function feFpAdd(a){return new ECFieldElementFp(this.q,this.x.add(a.toBigInteger()).mod(this.q))}function feFpSubtract(a){return new ECFieldElementFp(this.q,this.x.subtract(a.toBigInteger()).mod(this.q))}function feFpMultiply(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger()).mod(this.q))}function feFpSquare(){return new ECFieldElementFp(this.q,this.x.square().mod(this.q))}function feFpDivide(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger().modInverse(this.q)).mod(this.q))}ECFieldElementFp.prototype.equals=feFpEquals;ECFieldElementFp.prototype.toBigInteger=feFpToBigInteger;ECFieldElementFp.prototype.negate=feFpNegate;ECFieldElementFp.prototype.add=feFpAdd;ECFieldElementFp.prototype.subtract=feFpSubtract;ECFieldElementFp.prototype.multiply=feFpMultiply;ECFieldElementFp.prototype.square=feFpSquare;ECFieldElementFp.prototype.divide=feFpDivide;function ECPointFp(c,a,d,b){this.curve=c;this.x=a;this.y=d;if(b==null){this.z=BigInteger.ONE}else{this.z=b}this.zinv=null}function pointFpGetX(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpGetY(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpEquals(a){if(a==this){return true}if(this.isInfinity()){return a.isInfinity()}if(a.isInfinity()){return this.isInfinity()}var c,b;c=a.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(a.z)).mod(this.curve.q);if(!c.equals(BigInteger.ZERO)){return false}b=a.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(a.z)).mod(this.curve.q);return b.equals(BigInteger.ZERO)}function pointFpIsInfinity(){if((this.x==null)&&(this.y==null)){return true}return this.z.equals(BigInteger.ZERO)&&!this.y.toBigInteger().equals(BigInteger.ZERO)}function pointFpNegate(){return new ECPointFp(this.curve,this.x,this.y.negate(),this.z)}function pointFpAdd(l){if(this.isInfinity()){return l}if(l.isInfinity()){return this}var p=l.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(l.z)).mod(this.curve.q);var o=l.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(l.z)).mod(this.curve.q);if(BigInteger.ZERO.equals(o)){if(BigInteger.ZERO.equals(p)){return this.twice()}return this.curve.getInfinity()}var j=new BigInteger(\"3\");var e=this.x.toBigInteger();var n=this.y.toBigInteger();var c=l.x.toBigInteger();var k=l.y.toBigInteger();var m=o.square();var i=m.multiply(o);var d=e.multiply(m);var g=p.square().multiply(this.z);var a=g.subtract(d.shiftLeft(1)).multiply(l.z).subtract(i).multiply(o).mod(this.curve.q);var h=d.multiply(j).multiply(p).subtract(n.multiply(i)).subtract(g.multiply(p)).multiply(l.z).add(p.multiply(i)).mod(this.curve.q);var f=i.multiply(this.z).multiply(l.z).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(h),f)}function pointFpTwice(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var g=new BigInteger(\"3\");var c=this.x.toBigInteger();var h=this.y.toBigInteger();var e=h.multiply(this.z);var j=e.multiply(h).mod(this.curve.q);var i=this.curve.a.toBigInteger();var k=c.square().multiply(g);if(!BigInteger.ZERO.equals(i)){k=k.add(this.z.square().multiply(i))}k=k.mod(this.curve.q);var b=k.square().subtract(c.shiftLeft(3).multiply(j)).shiftLeft(1).multiply(e).mod(this.curve.q);var f=k.multiply(g).multiply(c).subtract(j.shiftLeft(1)).shiftLeft(2).multiply(j).subtract(k.square().multiply(k)).mod(this.curve.q);var d=e.square().multiply(e).shiftLeft(3).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(b),this.curve.fromBigInteger(f),d)}function pointFpMultiply(d){if(this.isInfinity()){return this}if(d.signum()==0){return this.curve.getInfinity()}var m=d;var l=m.multiply(new BigInteger(\"3\"));var b=this.negate();var j=this;var q=this.curve.q.subtract(d);var o=q.multiply(new BigInteger(\"3\"));var c=new ECPointFp(this.curve,this.x,this.y);var a=c.negate();var g;for(g=l.bitLength()-2;g>0;--g){j=j.twice();var n=l.testBit(g);var f=m.testBit(g);if(n!=f){j=j.add(n?this:b)}}for(g=o.bitLength()-2;g>0;--g){c=c.twice();var p=o.testBit(g);var r=q.testBit(g);if(p!=r){c=c.add(p?c:a)}}return j}function pointFpMultiplyTwo(c,a,b){var d;if(c.bitLength()>b.bitLength()){d=c.bitLength()-1}else{d=b.bitLength()-1}var f=this.curve.getInfinity();var e=this.add(a);while(d>=0){f=f.twice();if(c.testBit(d)){if(b.testBit(d)){f=f.add(e)}else{f=f.add(this)}}else{if(b.testBit(d)){f=f.add(a)}}--d}return f}ECPointFp.prototype.getX=pointFpGetX;ECPointFp.prototype.getY=pointFpGetY;ECPointFp.prototype.equals=pointFpEquals;ECPointFp.prototype.isInfinity=pointFpIsInfinity;ECPointFp.prototype.negate=pointFpNegate;ECPointFp.prototype.add=pointFpAdd;ECPointFp.prototype.twice=pointFpTwice;ECPointFp.prototype.multiply=pointFpMultiply;ECPointFp.prototype.multiplyTwo=pointFpMultiplyTwo;function ECCurveFp(e,d,c){this.q=e;this.a=this.fromBigInteger(d);this.b=this.fromBigInteger(c);this.infinity=new ECPointFp(this,null,null)}function curveFpGetQ(){return this.q}function curveFpGetA(){return this.a}function curveFpGetB(){return this.b}function curveFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.a.equals(a.a)&&this.b.equals(a.b))}function curveFpGetInfinity(){return this.infinity}function curveFpFromBigInteger(a){return new ECFieldElementFp(this.q,a)}function curveFpDecodePointHex(d){switch(parseInt(d.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var a=(d.length-2)/2;var c=d.substr(2,a);var b=d.substr(a+2,a);return new ECPointFp(this,this.fromBigInteger(new BigInteger(c,16)),this.fromBigInteger(new BigInteger(b,16)));default:return null}}ECCurveFp.prototype.getQ=curveFpGetQ;ECCurveFp.prototype.getA=curveFpGetA;ECCurveFp.prototype.getB=curveFpGetB;ECCurveFp.prototype.equals=curveFpEquals;ECCurveFp.prototype.getInfinity=curveFpGetInfinity;ECCurveFp.prototype.fromBigInteger=curveFpFromBigInteger;ECCurveFp.prototype.decodePointHex=curveFpDecodePointHex;ECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)};ECPointFp.prototype.getEncoded=function(c){var d=function(h,f){var g=h.toByteArrayUnsigned();if(f<g.length){g=g.slice(g.length-f)}else{while(f>g.length){g.unshift(0)}}return g};var a=this.getX().toBigInteger();var e=this.getY().toBigInteger();var b=d(a,32);if(c){if(e.isEven()){b.unshift(2)}else{b.unshift(3)}}else{b.unshift(4);b=b.concat(d(e,32))}return b};ECPointFp.decodeFrom=function(g,c){var f=c[0];var e=c.length-1;var d=c.slice(1,1+e/2);var b=c.slice(1+e/2,1+e);d.unshift(0);b.unshift(0);var a=new BigInteger(d);var h=new BigInteger(b);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.decodeFromHex=function(g,c){var f=c.substr(0,2);var e=c.length-2;var d=c.substr(2,e/2);var b=c.substr(2+e/2,e/2);var a=new BigInteger(d,16);var h=new BigInteger(b,16);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.prototype.add2D=function(c){if(this.isInfinity()){return c}if(c.isInfinity()){return this}if(this.x.equals(c.x)){if(this.y.equals(c.y)){return this.twice()}return this.curve.getInfinity()}var g=c.x.subtract(this.x);var e=c.y.subtract(this.y);var a=e.divide(g);var d=a.square().subtract(this.x).subtract(c.x);var f=a.multiply(this.x.subtract(d)).subtract(this.y);return new ECPointFp(this.curve,d,f)};ECPointFp.prototype.twice2D=function(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var b=this.curve.fromBigInteger(BigInteger.valueOf(2));var e=this.curve.fromBigInteger(BigInteger.valueOf(3));var a=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(b));var c=a.square().subtract(this.x.multiply(b));var d=a.multiply(this.x.subtract(c)).subtract(this.y);return new ECPointFp(this.curve,c,d)};ECPointFp.prototype.multiply2D=function(b){if(this.isInfinity()){return this}if(b.signum()==0){return this.curve.getInfinity()}var g=b;var f=g.multiply(new BigInteger(\"3\"));var l=this.negate();var d=this;var c;for(c=f.bitLength()-2;c>0;--c){d=d.twice();var a=f.testBit(c);var j=g.testBit(c);if(a!=j){d=d.add2D(a?this:l)}}return d};ECPointFp.prototype.isOnCurve=function(){var d=this.getX().toBigInteger();var i=this.getY().toBigInteger();var f=this.curve.getA().toBigInteger();var c=this.curve.getB().toBigInteger();var h=this.curve.getQ();var e=i.multiply(i).mod(h);var g=d.multiply(d).multiply(d).add(f.multiply(d)).add(c).mod(h);return e.equals(g)};ECPointFp.prototype.toString=function(){return\"(\"+this.getX().toBigInteger().toString()+\",\"+this.getY().toBigInteger().toString()+\")\"};ECPointFp.prototype.validate=function(){var c=this.curve.getQ();if(this.isInfinity()){throw new Error(\"Point is at infinity.\")}var a=this.getX().toBigInteger();var b=this.getY().toBigInteger();if(a.compareTo(BigInteger.ONE)<0||a.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"x coordinate out of bounds\")}if(b.compareTo(BigInteger.ONE)<0||b.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"y coordinate out of bounds\")}if(!this.isOnCurve()){throw new Error(\"Point is not on the curve.\")}if(this.multiply(c).isInfinity()){throw new Error(\"Point is not a scalar multiple of G.\")}return true};var jsonParse=(function(){var e=\"(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)\";var j='(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))';var i='(?:\"'+j+'*\")';var d=new RegExp(\"(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|\"+e+\"|\"+i+\")\",\"g\");var k=new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\",\"g\");var g={'\"':'\"',\"/\":\"/\",\"\\\\\":\"\\\\\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"};function h(l,m,n){return m?g[m]:String.fromCharCode(parseInt(n,16))}var c=new String(\"\");var a=\"\\\\\";var f={\"{\":Object,\"[\":Array};var b=Object.hasOwnProperty;return function(u,q){var p=u.match(d);var x;var v=p[0];var l=false;if(\"{\"===v){x={}}else{if(\"[\"===v){x=[]}else{x=[];l=true}}var t;var r=[x];for(var o=1-l,m=p.length;o<m;++o){v=p[o];var w;switch(v.charCodeAt(0)){default:w=r[0];w[t||w.length]=+(v);t=void 0;break;case 34:v=v.substring(1,v.length-1);if(v.indexOf(a)!==-1){v=v.replace(k,h)}w=r[0];if(!t){if(w instanceof Array){t=w.length}else{t=v||c;break}}w[t]=v;t=void 0;break;case 91:w=r[0];r.unshift(w[t||w.length]=[]);t=void 0;break;case 93:r.shift();break;case 102:w=r[0];w[t||w.length]=false;t=void 0;break;case 110:w=r[0];w[t||w.length]=null;t=void 0;break;case 116:w=r[0];w[t||w.length]=true;t=void 0;break;case 123:w=r[0];r.unshift(w[t||w.length]={});t=void 0;break;case 125:r.shift();break}}if(l){if(r.length!==1){throw new Error()}x=x[0]}else{if(r.length){throw new Error()}}if(q){var s=function(C,B){var D=C[B];if(D&&typeof D===\"object\"){var n=null;for(var z in D){if(b.call(D,z)&&D!==C){var y=s(D,z);if(y!==void 0){D[z]=y}else{if(!n){n=[]}n.push(z)}}}if(n){for(var A=n.length;--A>=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({\"\":x},\"\")}return x}})();if(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.asn1==\"undefined\"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b=\"0\"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!=\"-\"){if(f.length%2==1){f=\"0\"+f}else{if(!f.match(/^[0-7]/)){f=\"00\"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g=\"\";for(var d=0;d<e;d++){g+=\"f\"}var c=new BigInteger(g,16);var b=c.xor(j).add(BigInteger.ONE);f=b.toString(16).replace(/^-/,\"\")}return f};this.getPEMStringFromHex=function(a,b){return hextopem(a,b)};this.newObject=function(k){var D=KJUR,n=D.asn1,z=n.DERBoolean,e=n.DERInteger,s=n.DERBitString,h=n.DEROctetString,v=n.DERNull,w=n.DERObjectIdentifier,l=n.DEREnumerated,g=n.DERUTF8String,f=n.DERNumericString,y=n.DERPrintableString,u=n.DERTeletexString,p=n.DERIA5String,C=n.DERUTCTime,j=n.DERGeneralizedTime,m=n.DERSequence,c=n.DERSet,r=n.DERTaggedObject,o=n.ASN1Util.newObject;var t=Object.keys(k);if(t.length!=1){throw\"key of param shall be only one.\"}var F=t[0];if(\":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:\".indexOf(\":\"+F+\":\")==-1){throw\"undefined key: \"+F}if(F==\"bool\"){return new z(k[F])}if(F==\"int\"){return new e(k[F])}if(F==\"bitstr\"){return new s(k[F])}if(F==\"octstr\"){return new h(k[F])}if(F==\"null\"){return new v(k[F])}if(F==\"oid\"){return new w(k[F])}if(F==\"enum\"){return new l(k[F])}if(F==\"utf8str\"){return new g(k[F])}if(F==\"numstr\"){return new f(k[F])}if(F==\"prnstr\"){return new y(k[F])}if(F==\"telstr\"){return new u(k[F])}if(F==\"ia5str\"){return new p(k[F])}if(F==\"utctime\"){return new C(k[F])}if(F==\"gentime\"){return new j(k[F])}if(F==\"seq\"){var d=k[F];var E=[];for(var x=0;x<d.length;x++){var B=o(d[x]);E.push(B)}return new m({array:E})}if(F==\"set\"){var d=k[F];var E=[];for(var x=0;x<d.length;x++){var B=o(d[x]);E.push(B)}return new c({array:E})}if(F==\"tag\"){var A=k[F];if(Object.prototype.toString.call(A)===\"[object Array]\"&&A.length==3){var q=o(A[2]);return new r({tag:A[0],explicit:A[1],obj:q})}else{var b={};if(A.explicit!==undefined){b.explicit=A.explicit}if(A.tag!==undefined){b.tag=A.tag}if(A.obj===undefined){throw\"obj shall be specified for 'tag'.\"}b.obj=o(A.obj);return new r(b)}}};this.jsonToASN1HEX=function(b){var a=this.newObject(b);return a.getEncodedHex()}};KJUR.asn1.ASN1Util.oidHexToInt=function(a){var j=\"\";var k=parseInt(a.substr(0,2),16);var d=Math.floor(k/40);var c=k%40;var j=d+\".\"+c;var e=\"\";for(var f=2;f<a.length;f+=2){var g=parseInt(a.substr(f,2),16);var h=(\"00000000\"+g.toString(2)).slice(-8);e=e+h.substr(1,7);if(h.substr(0,1)==\"0\"){var b=new BigInteger(e,2);j=j+\".\"+b.toString(10);e=\"\"}}return j};KJUR.asn1.ASN1Util.oidIntToHex=function(f){var e=function(a){var k=a.toString(16);if(k.length==1){k=\"0\"+k}return k};var d=function(o){var n=\"\";var k=new BigInteger(o,10);var a=k.toString(2);var l=7-a.length%7;if(l==7){l=0}var q=\"\";for(var m=0;m<l;m++){q+=\"0\"}a=q+a;for(var m=0;m<a.length-1;m+=7){var p=a.substr(m,7);if(m!=a.length-7){p=\"1\"+p}n+=e(parseInt(p,2))}return n};if(!f.match(/^[0-9.]+$/)){throw\"malformed oid string: \"+f}var g=\"\";var b=f.split(\".\");var j=parseInt(b[0])*40+parseInt(b[1]);g+=e(j);b.splice(0,2);for(var c=0;c<b.length;c++){g+=d(b[c])}return g};KJUR.asn1.ASN1Object=function(){var c=true;var b=null;var d=\"00\";var e=\"00\";var a=\"\";this.getLengthHexFromValue=function(){if(typeof this.hV==\"undefined\"||this.hV==null){throw\"this.hV is null or undefined.\"}if(this.hV.length%2==1){throw\"value hex must be even length: n=\"+a.length+\",v=\"+this.hV}var i=this.hV.length/2;var h=i.toString(16);if(h.length%2==1){h=\"0\"+h}if(i<128){return h}else{var g=h.length/2;if(g>15){throw\"ASN.1 length too long to represent by 8x: n = \"+i.toString(16)}var f=128+g;return f.toString(16)+h}};this.getEncodedHex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getValueHex=function(){this.getEncodedHex();return this.hV};this.getFreshValueHex=function(){return\"\"}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=utf8tohex(this.s).toLowerCase()};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!=\"undefined\"){if(typeof c==\"string\"){this.setString(c)}else{if(typeof c.str!=\"undefined\"){this.setString(c.str)}else{if(typeof c.hex!=\"undefined\"){this.setStringHex(c.hex)}}}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(g){var e=g.getTime()+(g.getTimezoneOffset()*60000);var f=new Date(e);return f};this.formatDate=function(m,o,e){var g=this.zeroPadding;var n=this.localDateToUTC(m);var p=String(n.getFullYear());if(o==\"utc\"){p=p.substr(2,2)}var l=g(String(n.getMonth()+1),2);var q=g(String(n.getDate()),2);var h=g(String(n.getHours()),2);var i=g(String(n.getMinutes()),2);var j=g(String(n.getSeconds()),2);var r=p+l+q+h+i+j;if(e===true){var f=n.getMilliseconds();if(f!=0){var k=g(String(f),3);k=k.replace(/[0]+$/,\"\");r=r+\".\"+k}}return r+\"Z\"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join(\"0\")+e};this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=stohex(d)};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};YAHOO.lang.extend(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!=\"undefined\"){if(typeof b.array!=\"undefined\"){this.asn1Array=b.array}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT=\"01\";this.hTLV=\"0101ff\"};YAHOO.lang.extend(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(a){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT=\"02\";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!=\"undefined\"){if(typeof a.bigint!=\"undefined\"){this.setByBigInteger(a.bigint)}else{if(typeof a[\"int\"]!=\"undefined\"){this.setByInteger(a[\"int\"])}else{if(typeof a==\"number\"){this.setByInteger(a)}else{if(typeof a.hex!=\"undefined\"){this.setValueHex(a.hex)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(b){if(b!==undefined&&typeof b.obj!==\"undefined\"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex=\"00\"+a.getEncodedHex()}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT=\"03\";this.setHexValueIncludingUnusedBits=function(c){this.hTLV=null;this.isModified=true;this.hV=c};this.setUnusedBitsAndHexValue=function(c,e){if(c<0||7<c){throw\"unused bits shall be from 0 to 7: u = \"+c}var d=\"0\"+c;this.hTLV=null;this.isModified=true;this.hV=d+e};this.setByBinaryString=function(e){e=e.replace(/0+$/,\"\");var f=8-e.length%8;if(f==8){f=0}for(var g=0;g<=f;g++){e+=\"0\"}var j=\"\";for(var g=0;g<e.length-1;g+=8){var d=e.substr(g,8);var c=parseInt(d,2).toString(16);if(c.length==1){c=\"0\"+c}j+=c}this.hTLV=null;this.isModified=true;this.hV=\"0\"+f+j};this.setByBooleanArray=function(e){var d=\"\";for(var c=0;c<e.length;c++){if(e[c]==true){d+=\"1\"}else{d+=\"0\"}}this.setByBinaryString(d)};this.newFalseArray=function(e){var c=new Array(e);for(var d=0;d<e;d++){c[d]=false}return c};this.getFreshValueHex=function(){return this.hV};if(typeof b!=\"undefined\"){if(typeof b==\"string\"&&b.toLowerCase().match(/^[0-9a-f]+$/)){this.setHexValueIncludingUnusedBits(b)}else{if(typeof b.hex!=\"undefined\"){this.setHexValueIncludingUnusedBits(b.hex)}else{if(typeof b.bin!=\"undefined\"){this.setByBinaryString(b.bin)}else{if(typeof b.array!=\"undefined\"){this.setByBooleanArray(b.array)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERBitString,KJUR.asn1.ASN1Object);KJUR.asn1.DEROctetString=function(b){if(b!==undefined&&typeof b.obj!==\"undefined\"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex=a.getEncodedHex()}KJUR.asn1.DEROctetString.superclass.constructor.call(this,b);this.hT=\"04\"};YAHOO.lang.extend(KJUR.asn1.DEROctetString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERNull=function(){KJUR.asn1.DERNull.superclass.constructor.call(this);this.hT=\"05\";this.hTLV=\"0500\"};YAHOO.lang.extend(KJUR.asn1.DERNull,KJUR.asn1.ASN1Object);KJUR.asn1.DERObjectIdentifier=function(c){var b=function(d){var e=d.toString(16);if(e.length==1){e=\"0\"+e}return e};var a=function(k){var j=\"\";var e=new BigInteger(k,10);var d=e.toString(2);var f=7-d.length%7;if(f==7){f=0}var m=\"\";for(var g=0;g<f;g++){m+=\"0\"}d=m+d;for(var g=0;g<d.length-1;g+=7){var l=d.substr(g,7);if(g!=d.length-7){l=\"1\"+l}j+=b(parseInt(l,2))}return j};KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);this.hT=\"06\";this.setValueHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.setValueOidString=function(f){if(!f.match(/^[0-9.]+$/)){throw\"malformed oid string: \"+f}var g=\"\";var d=f.split(\".\");var j=parseInt(d[0])*40+parseInt(d[1]);g+=b(j);d.splice(0,2);for(var e=0;e<d.length;e++){g+=a(d[e])}this.hTLV=null;this.isModified=true;this.s=null;this.hV=g};this.setValueName=function(e){var d=KJUR.asn1.x509.OID.name2oid(e);if(d!==\"\"){this.setValueOidString(d)}else{throw\"DERObjectIdentifier oidName undefined: \"+e}};this.getFreshValueHex=function(){return this.hV};if(c!==undefined){if(typeof c===\"string\"){if(c.match(/^[0-2].[0-9.]+$/)){this.setValueOidString(c)}else{this.setValueName(c)}}else{if(c.oid!==undefined){this.setValueOidString(c.oid)}else{if(c.hex!==undefined){this.setValueHex(c.hex)}else{if(c.name!==undefined){this.setValueName(c.name)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.DEREnumerated=function(a){KJUR.asn1.DEREnumerated.superclass.constructor.call(this);this.hT=\"0a\";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!=\"undefined\"){if(typeof a[\"int\"]!=\"undefined\"){this.setByInteger(a[\"int\"])}else{if(typeof a==\"number\"){this.setByInteger(a)}else{if(typeof a.hex!=\"undefined\"){this.setValueHex(a.hex)}}}}};YAHOO.lang.extend(KJUR.asn1.DEREnumerated,KJUR.asn1.ASN1Object);KJUR.asn1.DERUTF8String=function(a){KJUR.asn1.DERUTF8String.superclass.constructor.call(this,a);this.hT=\"0c\"};YAHOO.lang.extend(KJUR.asn1.DERUTF8String,KJUR.asn1.DERAbstractString);KJUR.asn1.DERNumericString=function(a){KJUR.asn1.DERNumericString.superclass.constructor.call(this,a);this.hT=\"12\"};YAHOO.lang.extend(KJUR.asn1.DERNumericString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERPrintableString=function(a){KJUR.asn1.DERPrintableString.superclass.constructor.call(this,a);this.hT=\"13\"};YAHOO.lang.extend(KJUR.asn1.DERPrintableString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERTeletexString=function(a){KJUR.asn1.DERTeletexString.superclass.constructor.call(this,a);this.hT=\"14\"};YAHOO.lang.extend(KJUR.asn1.DERTeletexString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERIA5String=function(a){KJUR.asn1.DERIA5String.superclass.constructor.call(this,a);this.hT=\"16\"};YAHOO.lang.extend(KJUR.asn1.DERIA5String,KJUR.asn1.DERAbstractString);KJUR.asn1.DERUTCTime=function(a){KJUR.asn1.DERUTCTime.superclass.constructor.call(this,a);this.hT=\"17\";this.setByDate=function(b){this.hTLV=null;this.isModified=true;this.date=b;this.s=this.formatDate(this.date,\"utc\");this.hV=stohex(this.s)};this.getFreshValueHex=function(){if(typeof this.date==\"undefined\"&&typeof this.s==\"undefined\"){this.date=new Date();this.s=this.formatDate(this.date,\"utc\");this.hV=stohex(this.s)}return this.hV};if(a!==undefined){if(a.str!==undefined){this.setString(a.str)}else{if(typeof a==\"string\"&&a.match(/^[0-9]{12}Z$/)){this.setString(a)}else{if(a.hex!==undefined){this.setStringHex(a.hex)}else{if(a.date!==undefined){this.setByDate(a.date)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERUTCTime,KJUR.asn1.DERAbstractTime);KJUR.asn1.DERGeneralizedTime=function(a){KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this,a);this.hT=\"18\";this.withMillis=false;this.setByDate=function(b){this.hTLV=null;this.isModified=true;this.date=b;this.s=this.formatDate(this.date,\"gen\",this.withMillis);this.hV=stohex(this.s)};this.getFreshValueHex=function(){if(this.date===undefined&&this.s===undefined){this.date=new Date();this.s=this.formatDate(this.date,\"gen\",this.withMillis);this.hV=stohex(this.s)}return this.hV};if(a!==undefined){if(a.str!==undefined){this.setString(a.str)}else{if(typeof a==\"string\"&&a.match(/^[0-9]{14}Z$/)){this.setString(a)}else{if(a.hex!==undefined){this.setStringHex(a.hex)}else{if(a.date!==undefined){this.setByDate(a.date)}}}}if(a.millis===true){this.withMillis=true}}};YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime,KJUR.asn1.DERAbstractTime);KJUR.asn1.DERSequence=function(a){KJUR.asn1.DERSequence.superclass.constructor.call(this,a);this.hT=\"30\";this.getFreshValueHex=function(){var c=\"\";for(var b=0;b<this.asn1Array.length;b++){var d=this.asn1Array[b];c+=d.getEncodedHex()}this.hV=c;return this.hV}};YAHOO.lang.extend(KJUR.asn1.DERSequence,KJUR.asn1.DERAbstractStructured);KJUR.asn1.DERSet=function(a){KJUR.asn1.DERSet.superclass.constructor.call(this,a);this.hT=\"31\";this.sortFlag=true;this.getFreshValueHex=function(){var b=new Array();for(var c=0;c<this.asn1Array.length;c++){var d=this.asn1Array[c];b.push(d.getEncodedHex())}if(this.sortFlag==true){b.sort()}this.hV=b.join(\"\");return this.hV};if(typeof a!=\"undefined\"){if(typeof a.sortflag!=\"undefined\"&&a.sortflag==false){this.sortFlag=false}}};YAHOO.lang.extend(KJUR.asn1.DERSet,KJUR.asn1.DERAbstractStructured);KJUR.asn1.DERTaggedObject=function(a){KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);this.hT=\"a0\";this.hV=\"\";this.isExplicit=true;this.asn1Object=null;this.setASN1Object=function(b,c,d){this.hT=c;this.isExplicit=b;this.asn1Object=d;if(this.isExplicit){this.hV=this.asn1Object.getEncodedHex();this.hTLV=null;this.isModified=true}else{this.hV=null;this.hTLV=d.getEncodedHex();this.hTLV=this.hTLV.replace(/^../,c);this.isModified=false}};this.getFreshValueHex=function(){return this.hV};if(typeof a!=\"undefined\"){if(typeof a.tag!=\"undefined\"){this.hT=a.tag}if(typeof a.explicit!=\"undefined\"){this.isExplicit=a.explicit}if(typeof a.obj!=\"undefined\"){this.asn1Object=a.obj;this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)}}};YAHOO.lang.extend(KJUR.asn1.DERTaggedObject,KJUR.asn1.ASN1Object);var ASN1HEX=new function(){};ASN1HEX.getLblen=function(c,a){if(c.substr(a+2,1)!=\"8\"){return 1}var b=parseInt(c.substr(a+3,1));if(b==0){return -1}if(0<b&&b<10){return b+1}return -2};ASN1HEX.getL=function(c,b){var a=ASN1HEX.getLblen(c,b);if(a<1){return\"\"}return c.substr(b+2,a*2)};ASN1HEX.getVblen=function(d,a){var c,b;c=ASN1HEX.getL(d,a);if(c==\"\"){return -1}if(c.substr(0,1)===\"8\"){b=new BigInteger(c.substr(2),16)}else{b=new BigInteger(c,16)}return b.intValue()};ASN1HEX.getVidx=function(c,b){var a=ASN1HEX.getLblen(c,b);if(a<0){return a}return b+(a+1)*2};ASN1HEX.getV=function(d,a){var c=ASN1HEX.getVidx(d,a);var b=ASN1HEX.getVblen(d,a);return d.substr(c,b*2)};ASN1HEX.getTLV=function(b,a){return b.substr(a,2)+ASN1HEX.getL(b,a)+ASN1HEX.getV(b,a)};ASN1HEX.getNextSiblingIdx=function(d,a){var c=ASN1HEX.getVidx(d,a);var b=ASN1HEX.getVblen(d,a);return c+b*2};ASN1HEX.getChildIdx=function(e,f){var j=ASN1HEX;var g=new Array();var i=j.getVidx(e,f);if(e.substr(f,2)==\"03\"){g.push(i+2)}else{g.push(i)}var l=j.getVblen(e,f);var c=i;var d=0;while(1){var b=j.getNextSiblingIdx(e,c);if(b==null||(b-i>=(l*2))){break}if(d>=200){break}g.push(b);c=b;d++}return g};ASN1HEX.getNthChildIdx=function(d,b,e){var c=ASN1HEX.getChildIdx(d,b);return c[e]};ASN1HEX.getIdxbyList=function(e,d,c,i){var g=ASN1HEX;var f,b;if(c.length==0){if(i!==undefined){if(e.substr(d,2)!==i){throw\"checking tag doesn't match: \"+e.substr(d,2)+\"!=\"+i}}return d}f=c.shift();b=g.getChildIdx(e,d);return g.getIdxbyList(e,b[f],c,i)};ASN1HEX.getTLVbyList=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyList(d,c,b);if(a===undefined){throw\"can't find nthList object\"}if(f!==undefined){if(d.substr(a,2)!=f){throw\"checking tag doesn't match: \"+d.substr(a,2)+\"!=\"+f}}return e.getTLV(d,a)};ASN1HEX.getVbyList=function(e,c,b,g,i){var f=ASN1HEX;var a,d;a=f.getIdxbyList(e,c,b,g);if(a===undefined){throw\"can't find nthList object\"}d=f.getV(e,a);if(i===true){d=d.substr(2)}return d};ASN1HEX.hextooidstr=function(e){var h=function(b,a){if(b.length>=a){return b}return new Array(a-b.length+1).join(\"0\")+b};var l=[];var o=e.substr(0,2);var f=parseInt(o,16);l[0]=new String(Math.floor(f/40));l[1]=new String(f%40);var m=e.substr(2);var k=[];for(var g=0;g<m.length/2;g++){k.push(parseInt(m.substr(g*2,2),16))}var j=[];var d=\"\";for(var g=0;g<k.length;g++){if(k[g]&128){d=d+h((k[g]&127).toString(2),7)}else{d=d+h((k[g]&127).toString(2),7);j.push(new String(parseInt(d,2)));d=\"\"}}var n=l.join(\".\");if(j.length>0){n=n+\".\"+j.join(\".\")}return n};ASN1HEX.dump=function(t,c,l,g){var p=ASN1HEX;var j=p.getV;var y=p.dump;var w=p.getChildIdx;var e=t;if(t instanceof KJUR.asn1.ASN1Object){e=t.getEncodedHex()}var q=function(A,i){if(A.length<=i*2){return A}else{var v=A.substr(0,i)+\"..(total \"+A.length/2+\"bytes)..\"+A.substr(A.length-i,i);return v}};if(c===undefined){c={ommit_long_octet:32}}if(l===undefined){l=0}if(g===undefined){g=\"\"}var x=c.ommit_long_octet;if(e.substr(l,2)==\"01\"){var h=j(e,l);if(h==\"00\"){return g+\"BOOLEAN FALSE\\n\"}else{return g+\"BOOLEAN TRUE\\n\"}}if(e.substr(l,2)==\"02\"){var h=j(e,l);return g+\"INTEGER \"+q(h,x)+\"\\n\"}if(e.substr(l,2)==\"03\"){var h=j(e,l);return g+\"BITSTRING \"+q(h,x)+\"\\n\"}if(e.substr(l,2)==\"04\"){var h=j(e,l);if(p.isASN1HEX(h)){var k=g+\"OCTETSTRING, encapsulates\\n\";k=k+y(h,c,0,g+\" \");return k}else{return g+\"OCTETSTRING \"+q(h,x)+\"\\n\"}}if(e.substr(l,2)==\"05\"){return g+\"NULL\\n\"}if(e.substr(l,2)==\"06\"){var m=j(e,l);var a=KJUR.asn1.ASN1Util.oidHexToInt(m);var o=KJUR.asn1.x509.OID.oid2name(a);var b=a.replace(/\\./g,\" \");if(o!=\"\"){return g+\"ObjectIdentifier \"+o+\" (\"+b+\")\\n\"}else{return g+\"ObjectIdentifier (\"+b+\")\\n\"}}if(e.substr(l,2)==\"0c\"){return g+\"UTF8String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(e.substr(l,2)==\"13\"){return g+\"PrintableString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(e.substr(l,2)==\"14\"){return g+\"TeletexString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(e.substr(l,2)==\"16\"){return g+\"IA5String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(e.substr(l,2)==\"17\"){return g+\"UTCTime \"+hextoutf8(j(e,l))+\"\\n\"}if(e.substr(l,2)==\"18\"){return g+\"GeneralizedTime \"+hextoutf8(j(e,l))+\"\\n\"}if(e.substr(l,2)==\"30\"){if(e.substr(l,4)==\"3000\"){return g+\"SEQUENCE {}\\n\"}var k=g+\"SEQUENCE\\n\";var d=w(e,l);var f=c;if((d.length==2||d.length==3)&&e.substr(d[0],2)==\"06\"&&e.substr(d[d.length-1],2)==\"04\"){var o=p.oidname(j(e,d[0]));var r=JSON.parse(JSON.stringify(c));r.x509ExtName=o;f=r}for(var u=0;u<d.length;u++){k=k+y(e,f,d[u],g+\" \")}return k}if(e.substr(l,2)==\"31\"){var k=g+\"SET\\n\";var d=w(e,l);for(var u=0;u<d.length;u++){k=k+y(e,c,d[u],g+\" \")}return k}var z=parseInt(e.substr(l,2),16);if((z&128)!=0){var n=z&31;if((z&32)!=0){var k=g+\"[\"+n+\"]\\n\";var d=w(e,l);for(var u=0;u<d.length;u++){k=k+y(e,c,d[u],g+\" \")}return k}else{var h=j(e,l);if(h.substr(0,8)==\"68747470\"){h=hextoutf8(h)}if(c.x509ExtName===\"subjectAltName\"&&n==2){h=hextoutf8(h)}var k=g+\"[\"+n+\"] \"+h+\"\\n\";return k}}return g+\"UNKNOWN(\"+e.substr(l,2)+\") \"+j(e,l)+\"\\n\"};ASN1HEX.isASN1HEX=function(e){var d=ASN1HEX;if(e.length%2==1){return false}var c=d.getVblen(e,0);var b=e.substr(0,2);var f=d.getL(e,0);var a=e.length-b.length-f.length;if(a==c*2){return true}return false};ASN1HEX.oidname=function(a){var c=KJUR.asn1;if(KJUR.lang.String.isHex(a)){a=c.ASN1Util.oidHexToInt(a)}var b=c.x509.OID.oid2name(a);if(b===\"\"){b=a}return b};var KJUR;if(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.lang==\"undefined\"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c<d.length;c++){b[c]=d.charCodeAt(c)}return b}function BAtos(b){var d=\"\";for(var c=0;c<b.length;c++){d=d+String.fromCharCode(b[c])}return d}function BAtohex(b){var e=\"\";for(var d=0;d<b.length;d++){var c=b[d].toString(16);if(c.length==1){c=\"0\"+c}e=e+c}return e}function stohex(a){return BAtohex(stoBA(a))}function stob64(a){return hex2b64(stohex(a))}function stob64u(a){return b64tob64u(hex2b64(stohex(a)))}function b64utos(a){return BAtos(b64toBA(b64utob64(a)))}function b64tob64u(a){a=a.replace(/\\=/g,\"\");a=a.replace(/\\+/g,\"-\");a=a.replace(/\\//g,\"_\");return a}function b64utob64(a){if(a.length%4==2){a=a+\"==\"}else{if(a.length%4==3){a=a+\"=\"}}a=a.replace(/-/g,\"+\");a=a.replace(/_/g,\"/\");return a}function hextob64u(a){if(a.length%2==1){a=\"0\"+a}return b64tob64u(hex2b64(a))}function b64utohex(a){return b64tohex(b64utob64(a))}var utf8tob64u,b64utoutf8;if(typeof Buffer===\"function\"){utf8tob64u=function(a){return b64tob64u(new Buffer(a,\"utf8\").toString(\"base64\"))};b64utoutf8=function(a){return new Buffer(b64utob64(a),\"base64\").toString(\"utf8\")}}else{utf8tob64u=function(a){return hextob64u(uricmptohex(encodeURIComponentAll(a)))};b64utoutf8=function(a){return decodeURIComponent(hextouricmp(b64utohex(a)))}}function utf8tob64(a){return hex2b64(uricmptohex(encodeURIComponentAll(a)))}function b64toutf8(a){return decodeURIComponent(hextouricmp(b64tohex(a)))}function utf8tohex(a){return uricmptohex(encodeURIComponentAll(a))}function hextoutf8(a){return decodeURIComponent(hextouricmp(a))}function hextorstr(c){var b=\"\";for(var a=0;a<c.length-1;a+=2){b+=String.fromCharCode(parseInt(c.substr(a,2),16))}return b}function rstrtohex(c){var a=\"\";for(var b=0;b<c.length;b++){a+=(\"0\"+c.charCodeAt(b).toString(16)).slice(-2)}return a}function hextob64(a){return hex2b64(a)}function hextob64nl(b){var a=hextob64(b);var c=a.replace(/(.{64})/g,\"$1\\r\\n\");c=c.replace(/\\r\\n$/,\"\");return c}function b64nltohex(b){var a=b.replace(/[^0-9A-Za-z\\/+=]*/g,\"\");var c=b64tohex(a);return c}function hextopem(a,b){var c=hextob64nl(a);return\"-----BEGIN \"+b+\"-----\\r\\n\"+c+\"\\r\\n-----END \"+b+\"-----\\r\\n\"}function pemtohex(a,b){if(a.indexOf(\"-----BEGIN \")==-1){throw\"can't find PEM header: \"+b}if(b!==undefined){a=a.replace(new RegExp(\"^[^]*-----BEGIN \"+b+\"-----\"),\"\");a=a.replace(new RegExp(\"-----END \"+b+\"-----[^]*$\"),\"\")}else{a=a.replace(/^[^]*-----BEGIN [^-]+-----/,\"\");a=a.replace(/-----END [^-]+-----[^]*$/,\"\")}return b64nltohex(a)}function hextoArrayBuffer(d){if(d.length%2!=0){throw\"input is not even length\"}if(d.match(/^[0-9A-Fa-f]+$/)==null){throw\"input is not hexadecimal\"}var b=new ArrayBuffer(d.length/2);var a=new DataView(b);for(var c=0;c<d.length/2;c++){a.setUint8(c,parseInt(d.substr(c*2,2),16))}return b}function ArrayBuffertohex(b){var d=\"\";var a=new DataView(b);for(var c=0;c<b.byteLength;c++){d+=(\"00\"+a.getUint8(c).toString(16)).slice(-2)}return d}function zulutomsec(n){var l,j,m,e,f,i,b,k;var a,h,g,c;c=n.match(/^(\\d{2}|\\d{4})(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(|\\.\\d+)Z$/);if(c){a=c[1];l=parseInt(a);if(a.length===2){if(50<=l&&l<100){l=1900+l}else{if(0<=l&&l<50){l=2000+l}}}j=parseInt(c[2])-1;m=parseInt(c[3]);e=parseInt(c[4]);f=parseInt(c[5]);i=parseInt(c[6]);b=0;h=c[7];if(h!==\"\"){g=(h.substr(1)+\"00\").substr(0,3);b=parseInt(g)}return Date.UTC(l,j,m,e,f,i,b)}throw\"unsupported zulu format: \"+n}function zulutosec(a){var b=zulutomsec(a);return ~~(b/1000)}function zulutodate(a){return new Date(zulutomsec(a))}function datetozulu(g,e,f){var b;var a=g.getUTCFullYear();if(e){if(a<1950||2049<a){throw\"not proper year for UTCTime: \"+a}b=(\"\"+a).slice(-2)}else{b=(\"000\"+a).slice(-4)}b+=(\"0\"+(g.getUTCMonth()+1)).slice(-2);b+=(\"0\"+g.getUTCDate()).slice(-2);b+=(\"0\"+g.getUTCHours()).slice(-2);b+=(\"0\"+g.getUTCMinutes()).slice(-2);b+=(\"0\"+g.getUTCSeconds()).slice(-2);if(f){var c=g.getUTCMilliseconds();if(c!==0){c=(\"00\"+c).slice(-3);c=c.replace(/0+$/g,\"\");b+=\".\"+c}}b+=\"Z\";return b}function uricmptohex(a){return a.replace(/%/g,\"\")}function hextouricmp(a){return a.replace(/(..)/g,\"%$1\")}function ipv6tohex(g){var b=\"malformed IPv6 address\";if(!g.match(/^[0-9A-Fa-f:]+$/)){throw b}g=g.toLowerCase();var d=g.split(\":\").length-1;if(d<2){throw b}var e=\":\".repeat(7-d+2);g=g.replace(\"::\",e);var c=g.split(\":\");if(c.length!=8){throw b}for(var f=0;f<8;f++){c[f]=(\"0000\"+c[f]).slice(-4)}return c.join(\"\")}function hextoipv6(e){if(!e.match(/^[0-9A-Fa-f]{32}$/)){throw\"malformed IPv6 address octet\"}e=e.toLowerCase();var b=e.match(/.{1,4}/g);for(var d=0;d<8;d++){b[d]=b[d].replace(/^0+/,\"\");if(b[d]==\"\"){b[d]=\"0\"}}e=\":\"+b.join(\":\")+\":\";var c=e.match(/:(0:){2,}/g);if(c===null){return e.slice(1,-1)}var f=\"\";for(var d=0;d<c.length;d++){if(c[d].length>f.length){f=c[d]}}e=e.replace(f,\"::\");return e.slice(1,-1)}function hextoip(b){var d=\"malformed hex value\";if(!b.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)){throw d}if(b.length==8){var c;try{c=parseInt(b.substr(0,2),16)+\".\"+parseInt(b.substr(2,2),16)+\".\"+parseInt(b.substr(4,2),16)+\".\"+parseInt(b.substr(6,2),16);return c}catch(a){throw d}}else{if(b.length==32){return hextoipv6(b)}else{return b}}}function iptohex(f){var j=\"malformed IP address\";f=f.toLowerCase(f);if(f.match(/^[0-9.]+$/)){var b=f.split(\".\");if(b.length!==4){throw j}var g=\"\";try{for(var e=0;e<4;e++){var h=parseInt(b[e]);g+=(\"0\"+h.toString(16)).slice(-2)}return g}catch(c){throw j}}else{if(f.match(/^[0-9a-f:]+$/)&&f.indexOf(\":\")!==-1){return ipv6tohex(f)}else{throw j}}}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b=\"\";for(var c=0;c<d.length;c++){if(d[c]==\"%\"){b=b+d.substr(c,3);c=c+2}else{b=b+\"%\"+stohex(d[c])}}return b}function newline_toUnix(a){a=a.replace(/\\r\\n/mg,\"\\n\");return a}function newline_toDos(a){a=a.replace(/\\r\\n/mg,\"\\n\");a=a.replace(/\\n/mg,\"\\r\\n\");return a}KJUR.lang.String.isInteger=function(a){if(a.match(/^[0-9]+$/)){return true}else{if(a.match(/^-[0-9]+$/)){return true}else{return false}}};KJUR.lang.String.isHex=function(a){if(a.length%2==0&&(a.match(/^[0-9a-f]+$/)||a.match(/^[0-9A-F]+$/))){return true}else{return false}};KJUR.lang.String.isBase64=function(a){a=a.replace(/\\s+/g,\"\");if(a.match(/^[0-9A-Za-z+\\/]+={0,3}$/)&&a.length%4==0){return true}else{return false}};KJUR.lang.String.isBase64URL=function(a){if(a.match(/[+/=]/)){return false}a=b64utob64(a);return KJUR.lang.String.isBase64(a)};KJUR.lang.String.isIntegerArray=function(a){a=a.replace(/\\s+/g,\"\");if(a.match(/^\\[[0-9,]+\\]$/)){return true}else{return false}};function hextoposhex(a){if(a.length%2==1){return\"0\"+a}if(a.substr(0,1)>\"7\"){return\"00\"+a}return a}function intarystrtohex(b){b=b.replace(/^\\s*\\[\\s*/,\"\");b=b.replace(/\\s*\\]\\s*$/,\"\");b=b.replace(/\\s*/g,\"\");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255<f){throw\"integer not in range 0-255\"}var d=(\"00\"+f.toString(16)).slice(-2);return d}).join(\"\");return c}catch(a){throw\"malformed integer array string: \"+a}}var strdiffidx=function(c,a){var d=c.length;if(c.length>a.length){d=a.length}for(var b=0;b<d;b++){if(c.charCodeAt(b)!=a.charCodeAt(b)){return b}}if(c.length!=a.length){return d}return -1};if(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:\"3021300906052b0e03021a05000414\",sha224:\"302d300d06096086480165030402040500041c\",sha256:\"3031300d060960864801650304020105000420\",sha384:\"3041300d060960864801650304020205000430\",sha512:\"3051300d060960864801650304020305000440\",md2:\"3020300c06082a864886f70d020205000410\",md5:\"3020300c06082a864886f70d020505000410\",ripemd160:\"3021300906052b2403020105000414\",};this.DEFAULTPROVIDER={md5:\"cryptojs\",sha1:\"cryptojs\",sha224:\"cryptojs\",sha256:\"cryptojs\",sha384:\"cryptojs\",sha512:\"cryptojs\",ripemd160:\"cryptojs\",hmacmd5:\"cryptojs\",hmacsha1:\"cryptojs\",hmacsha224:\"cryptojs\",hmacsha256:\"cryptojs\",hmacsha384:\"cryptojs\",hmacsha512:\"cryptojs\",hmacripemd160:\"cryptojs\",MD5withRSA:\"cryptojs/jsrsa\",SHA1withRSA:\"cryptojs/jsrsa\",SHA224withRSA:\"cryptojs/jsrsa\",SHA256withRSA:\"cryptojs/jsrsa\",SHA384withRSA:\"cryptojs/jsrsa\",SHA512withRSA:\"cryptojs/jsrsa\",RIPEMD160withRSA:\"cryptojs/jsrsa\",MD5withECDSA:\"cryptojs/jsrsa\",SHA1withECDSA:\"cryptojs/jsrsa\",SHA224withECDSA:\"cryptojs/jsrsa\",SHA256withECDSA:\"cryptojs/jsrsa\",SHA384withECDSA:\"cryptojs/jsrsa\",SHA512withECDSA:\"cryptojs/jsrsa\",RIPEMD160withECDSA:\"cryptojs/jsrsa\",SHA1withDSA:\"cryptojs/jsrsa\",SHA224withDSA:\"cryptojs/jsrsa\",SHA256withDSA:\"cryptojs/jsrsa\",MD5withRSAandMGF1:\"cryptojs/jsrsa\",SHA1withRSAandMGF1:\"cryptojs/jsrsa\",SHA224withRSAandMGF1:\"cryptojs/jsrsa\",SHA256withRSAandMGF1:\"cryptojs/jsrsa\",SHA384withRSAandMGF1:\"cryptojs/jsrsa\",SHA512withRSAandMGF1:\"cryptojs/jsrsa\",RIPEMD160withRSAandMGF1:\"cryptojs/jsrsa\",};this.CRYPTOJSMESSAGEDIGESTNAME={md5:CryptoJS.algo.MD5,sha1:CryptoJS.algo.SHA1,sha224:CryptoJS.algo.SHA224,sha256:CryptoJS.algo.SHA256,sha384:CryptoJS.algo.SHA384,sha512:CryptoJS.algo.SHA512,ripemd160:CryptoJS.algo.RIPEMD160};this.getDigestInfoHex=function(a,b){if(typeof this.DIGESTINFOHEAD[b]==\"undefined\"){throw\"alg not supported in Util.DIGESTINFOHEAD: \"+b}return this.DIGESTINFOHEAD[b]+a};this.getPaddedDigestInfoHex=function(h,a,j){var c=this.getDigestInfoHex(h,a);var d=j/4;if(c.length+22>d){throw\"key is too short for SigAlg: keylen=\"+j+\",\"+a}var b=\"0001\";var k=\"00\"+c;var g=\"\";var l=d-b.length-k.length;for(var f=0;f<l;f+=2){g+=\"ff\"}var e=b+g+k;return e};this.hashString=function(a,c){var b=new KJUR.crypto.MessageDigest({alg:c});return b.digestString(a)};this.hashHex=function(b,c){var a=new KJUR.crypto.MessageDigest({alg:c});return a.digestHex(b)};this.sha1=function(a){var b=new KJUR.crypto.MessageDigest({alg:\"sha1\",prov:\"cryptojs\"});return b.digestString(a)};this.sha256=function(a){var b=new KJUR.crypto.MessageDigest({alg:\"sha256\",prov:\"cryptojs\"});return b.digestString(a)};this.sha256Hex=function(a){var b=new KJUR.crypto.MessageDigest({alg:\"sha256\",prov:\"cryptojs\"});return b.digestHex(a)};this.sha512=function(a){var b=new KJUR.crypto.MessageDigest({alg:\"sha512\",prov:\"cryptojs\"});return b.digestString(a)};this.sha512Hex=function(a){var b=new KJUR.crypto.MessageDigest({alg:\"sha512\",prov:\"cryptojs\"});return b.digestHex(a)}};KJUR.crypto.Util.md5=function(a){var b=new KJUR.crypto.MessageDigest({alg:\"md5\",prov:\"cryptojs\"});return b.digestString(a)};KJUR.crypto.Util.ripemd160=function(a){var b=new KJUR.crypto.MessageDigest({alg:\"ripemd160\",prov:\"cryptojs\"});return b.digestString(a)};KJUR.crypto.Util.SECURERANDOMGEN=new SecureRandom();KJUR.crypto.Util.getRandomHexOfNbytes=function(b){var a=new Array(b);KJUR.crypto.Util.SECURERANDOMGEN.nextBytes(a);return BAtohex(a)};KJUR.crypto.Util.getRandomBigIntegerOfNbytes=function(a){return new BigInteger(KJUR.crypto.Util.getRandomHexOfNbytes(a),16)};KJUR.crypto.Util.getRandomHexOfNbits=function(d){var c=d%8;var a=(d-c)/8;var b=new Array(a+1);KJUR.crypto.Util.SECURERANDOMGEN.nextBytes(b);b[0]=(((255<<c)&255)^255)&b[0];return BAtohex(b)};KJUR.crypto.Util.getRandomBigIntegerOfNbits=function(a){return new BigInteger(KJUR.crypto.Util.getRandomHexOfNbits(a),16)};KJUR.crypto.Util.getRandomBigIntegerZeroToMax=function(b){var a=b.bitLength();while(1){var c=KJUR.crypto.Util.getRandomBigIntegerOfNbits(a);if(b.compareTo(c)!=-1){return c}}};KJUR.crypto.Util.getRandomBigIntegerMinToMax=function(e,b){var c=e.compareTo(b);if(c==1){throw\"biMin is greater than biMax\"}if(c==0){return e}var a=b.subtract(e);var d=KJUR.crypto.Util.getRandomBigIntegerZeroToMax(a);return d.add(e)};KJUR.crypto.MessageDigest=function(c){var b=null;var a=null;var d=null;this.setAlgAndProvider=function(g,f){g=KJUR.crypto.MessageDigest.getCanonicalAlgName(g);if(g!==null&&f===undefined){f=KJUR.crypto.Util.DEFAULTPROVIDER[g]}if(\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(g)!=-1&&f==\"cryptojs\"){try{this.md=KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[g].create()}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+g+\"/\"+e}this.updateString=function(h){this.md.update(h)};this.updateHex=function(h){var i=CryptoJS.enc.Hex.parse(h);this.md.update(i)};this.digest=function(){var h=this.md.finalize();return h.toString(CryptoJS.enc.Hex)};this.digestString=function(h){this.updateString(h);return this.digest()};this.digestHex=function(h){this.updateHex(h);return this.digest()}}if(\":sha256:\".indexOf(g)!=-1&&f==\"sjcl\"){try{this.md=new sjcl.hash.sha256()}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+g+\"/\"+e}this.updateString=function(h){this.md.update(h)};this.updateHex=function(i){var h=sjcl.codec.hex.toBits(i);this.md.update(h)};this.digest=function(){var h=this.md.finalize();return sjcl.codec.hex.fromBits(h)};this.digestString=function(h){this.updateString(h);return this.digest()};this.digestHex=function(h){this.updateHex(h);return this.digest()}}};this.updateString=function(e){throw\"updateString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.updateHex=function(e){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.digest=function(){throw\"digest() not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.digestString=function(e){throw\"digestString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.digestHex=function(e){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};if(c!==undefined){if(c.alg!==undefined){this.algName=c.alg;if(c.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}this.setAlgAndProvider(this.algName,this.provName)}}};KJUR.crypto.MessageDigest.getCanonicalAlgName=function(a){if(typeof a===\"string\"){a=a.toLowerCase();a=a.replace(/-/,\"\")}return a};KJUR.crypto.MessageDigest.getHashLength=function(c){var b=KJUR.crypto.MessageDigest;var a=b.getCanonicalAlgName(c);if(b.HASHLENGTH[a]===undefined){throw\"not supported algorithm: \"+c}return b.HASHLENGTH[a]};KJUR.crypto.MessageDigest.HASHLENGTH={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,ripemd160:20};KJUR.crypto.Mac=function(d){var f=null;var c=null;var a=null;var e=null;var b=null;this.setAlgAndProvider=function(k,i){k=k.toLowerCase();if(k==null){k=\"hmacsha1\"}k=k.toLowerCase();if(k.substr(0,4)!=\"hmac\"){throw\"setAlgAndProvider unsupported HMAC alg: \"+k}if(i===undefined){i=KJUR.crypto.Util.DEFAULTPROVIDER[k]}this.algProv=k+\"/\"+i;var g=k.substr(4);if(\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(g)!=-1&&i==\"cryptojs\"){try{var j=KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[g];this.mac=CryptoJS.algo.HMAC.create(j,this.pass)}catch(h){throw\"setAlgAndProvider hash alg set fail hashAlg=\"+g+\"/\"+h}this.updateString=function(l){this.mac.update(l)};this.updateHex=function(l){var m=CryptoJS.enc.Hex.parse(l);this.mac.update(m)};this.doFinal=function(){var l=this.mac.finalize();return l.toString(CryptoJS.enc.Hex)};this.doFinalString=function(l){this.updateString(l);return this.doFinal()};this.doFinalHex=function(l){this.updateHex(l);return this.doFinal()}}};this.updateString=function(g){throw\"updateString(str) not supported for this alg/prov: \"+this.algProv};this.updateHex=function(g){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algProv};this.doFinal=function(){throw\"digest() not supported for this alg/prov: \"+this.algProv};this.doFinalString=function(g){throw\"digestString(str) not supported for this alg/prov: \"+this.algProv};this.doFinalHex=function(g){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algProv};this.setPassword=function(h){if(typeof h==\"string\"){var g=h;if(h.length%2==1||!h.match(/^[0-9A-Fa-f]+$/)){g=rstrtohex(h)}this.pass=CryptoJS.enc.Hex.parse(g);return}if(typeof h!=\"object\"){throw\"KJUR.crypto.Mac unsupported password type: \"+h}var g=null;if(h.hex!==undefined){if(h.hex.length%2!=0||!h.hex.match(/^[0-9A-Fa-f]+$/)){throw\"Mac: wrong hex password: \"+h.hex}g=h.hex}if(h.utf8!==undefined){g=utf8tohex(h.utf8)}if(h.rstr!==undefined){g=rstrtohex(h.rstr)}if(h.b64!==undefined){g=b64tohex(h.b64)}if(h.b64u!==undefined){g=b64utohex(h.b64u)}if(g==null){throw\"KJUR.crypto.Mac unsupported password type: \"+h}this.pass=CryptoJS.enc.Hex.parse(g)};if(d!==undefined){if(d.pass!==undefined){this.setPassword(d.pass)}if(d.alg!==undefined){this.algName=d.alg;if(d.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}this.setAlgAndProvider(this.algName,this.provName)}}};KJUR.crypto.Signature=function(o){var q=null;var n=null;var r=null;var c=null;var l=null;var d=null;var k=null;var h=null;var p=null;var e=null;var b=-1;var g=null;var j=null;var a=null;var i=null;var f=null;this._setAlgNames=function(){var s=this.algName.match(/^(.+)with(.+)$/);if(s){this.mdAlgName=s[1].toLowerCase();this.pubkeyAlgName=s[2].toLowerCase()}};this._zeroPaddingOfSignature=function(x,w){var v=\"\";var t=w/4-x.length;for(var u=0;u<t;u++){v=v+\"0\"}return v+x};this.setAlgAndProvider=function(u,t){this._setAlgNames();if(t!=\"cryptojs/jsrsa\"){throw\"provider not supported: \"+t}if(\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(this.mdAlgName)!=-1){try{this.md=new KJUR.crypto.MessageDigest({alg:this.mdAlgName})}catch(s){throw\"setAlgAndProvider hash alg set fail alg=\"+this.mdAlgName+\"/\"+s}this.init=function(w,x){var y=null;try{if(x===undefined){y=KEYUTIL.getKey(w)}else{y=KEYUTIL.getKey(w,x)}}catch(v){throw\"init failed:\"+v}if(y.isPrivate===true){this.prvKey=y;this.state=\"SIGN\"}else{if(y.isPublic===true){this.pubKey=y;this.state=\"VERIFY\"}else{throw\"init failed.:\"+y}}};this.updateString=function(v){this.md.updateString(v)};this.updateHex=function(v){this.md.updateHex(v)};this.sign=function(){this.sHashHex=this.md.digest();if(typeof this.ecprvhex!=\"undefined\"&&typeof this.eccurvename!=\"undefined\"){var v=new KJUR.crypto.ECDSA({curve:this.eccurvename});this.hSign=v.signHex(this.sHashHex,this.ecprvhex)}else{if(this.prvKey instanceof RSAKey&&this.pubkeyAlgName===\"rsaandmgf1\"){this.hSign=this.prvKey.signWithMessageHashPSS(this.sHashHex,this.mdAlgName,this.pssSaltLen)}else{if(this.prvKey instanceof RSAKey&&this.pubkeyAlgName===\"rsa\"){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex,this.mdAlgName)}else{if(this.prvKey instanceof KJUR.crypto.ECDSA){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex)}else{if(this.prvKey instanceof KJUR.crypto.DSA){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex)}else{throw\"Signature: unsupported private key alg: \"+this.pubkeyAlgName}}}}}return this.hSign};this.signString=function(v){this.updateString(v);return this.sign()};this.signHex=function(v){this.updateHex(v);return this.sign()};this.verify=function(v){this.sHashHex=this.md.digest();if(typeof this.ecpubhex!=\"undefined\"&&typeof this.eccurvename!=\"undefined\"){var w=new KJUR.crypto.ECDSA({curve:this.eccurvename});return w.verifyHex(this.sHashHex,v,this.ecpubhex)}else{if(this.pubKey instanceof RSAKey&&this.pubkeyAlgName===\"rsaandmgf1\"){return this.pubKey.verifyWithMessageHashPSS(this.sHashHex,v,this.mdAlgName,this.pssSaltLen)}else{if(this.pubKey instanceof RSAKey&&this.pubkeyAlgName===\"rsa\"){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{if(KJUR.crypto.ECDSA!==undefined&&this.pubKey instanceof KJUR.crypto.ECDSA){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{if(KJUR.crypto.DSA!==undefined&&this.pubKey instanceof KJUR.crypto.DSA){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{throw\"Signature: unsupported public key alg: \"+this.pubkeyAlgName}}}}}}}};this.init=function(s,t){throw\"init(key, pass) not supported for this alg:prov=\"+this.algProvName};this.updateString=function(s){throw\"updateString(str) not supported for this alg:prov=\"+this.algProvName};this.updateHex=function(s){throw\"updateHex(hex) not supported for this alg:prov=\"+this.algProvName};this.sign=function(){throw\"sign() not supported for this alg:prov=\"+this.algProvName};this.signString=function(s){throw\"digestString(str) not supported for this alg:prov=\"+this.algProvName};this.signHex=function(s){throw\"digestHex(hex) not supported for this alg:prov=\"+this.algProvName};this.verify=function(s){throw\"verify(hSigVal) not supported for this alg:prov=\"+this.algProvName};this.initParams=o;if(o!==undefined){if(o.alg!==undefined){this.algName=o.alg;if(o.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}else{this.provName=o.prov}this.algProvName=this.algName+\":\"+this.provName;this.setAlgAndProvider(this.algName,this.provName);this._setAlgNames()}if(o.psssaltlen!==undefined){this.pssSaltLen=o.psssaltlen}if(o.prvkeypem!==undefined){if(o.prvkeypas!==undefined){throw\"both prvkeypem and prvkeypas parameters not supported\"}else{try{var q=KEYUTIL.getKey(o.prvkeypem);this.init(q)}catch(m){throw\"fatal error to load pem private key: \"+m}}}}};KJUR.crypto.Cipher=function(a){};KJUR.crypto.Cipher.encrypt=function(e,f,d){if(f instanceof RSAKey&&f.isPublic){var c=KJUR.crypto.Cipher.getAlgByKeyAndName(f,d);if(c===\"RSA\"){return f.encrypt(e)}if(c===\"RSAOAEP\"){return f.encryptOAEP(e,\"sha1\")}var b=c.match(/^RSAOAEP(\\d+)$/);if(b!==null){return f.encryptOAEP(e,\"sha\"+b[1])}throw\"Cipher.encrypt: unsupported algorithm for RSAKey: \"+d}else{throw\"Cipher.encrypt: unsupported key or algorithm\"}};KJUR.crypto.Cipher.decrypt=function(e,f,d){if(f instanceof RSAKey&&f.isPrivate){var c=KJUR.crypto.Cipher.getAlgByKeyAndName(f,d);if(c===\"RSA\"){return f.decrypt(e)}if(c===\"RSAOAEP\"){return f.decryptOAEP(e,\"sha1\")}var b=c.match(/^RSAOAEP(\\d+)$/);if(b!==null){return f.decryptOAEP(e,\"sha\"+b[1])}throw\"Cipher.decrypt: unsupported algorithm for RSAKey: \"+d}else{throw\"Cipher.decrypt: unsupported key or algorithm\"}};KJUR.crypto.Cipher.getAlgByKeyAndName=function(b,a){if(b instanceof RSAKey){if(\":RSA:RSAOAEP:RSAOAEP224:RSAOAEP256:RSAOAEP384:RSAOAEP512:\".indexOf(a)!=-1){return a}if(a===null||a===undefined){return\"RSA\"}throw\"getAlgByKeyAndName: not supported algorithm name for RSAKey: \"+a}throw\"getAlgByKeyAndName: not supported algorithm name: \"+a};KJUR.crypto.OID=new function(){this.oidhex2name={\"2a864886f70d010101\":\"rsaEncryption\",\"2a8648ce3d0201\":\"ecPublicKey\",\"2a8648ce380401\":\"dsa\",\"2a8648ce3d030107\":\"secp256r1\",\"2b8104001f\":\"secp192k1\",\"2b81040021\":\"secp224r1\",\"2b8104000a\":\"secp256k1\",\"2b81040023\":\"secp521r1\",\"2b81040022\":\"secp384r1\",\"2a8648ce380403\":\"SHA1withDSA\",\"608648016503040301\":\"SHA224withDSA\",\"608648016503040302\":\"SHA256withDSA\",}};if(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECDSA=function(d){var f=\"secp256r1\";var l=null;var b=null;var h=null;var e=BigInteger,g=ECPointFp,j=KJUR.crypto.ECDSA,c=KJUR.crypto.ECParameterDB;var a=new SecureRandom();var k=null;this.type=\"EC\";this.isPrivate=false;this.isPublic=false;function i(t,p,s,o){var n=Math.max(p.bitLength(),o.bitLength());var u=t.add2D(s);var r=t.curve.getInfinity();for(var q=n-1;q>=0;--q){r=r.twice2D();r.z=e.ONE;if(p.testBit(q)){if(o.testBit(q)){r=r.add2D(u)}else{r=r.add2D(t)}}else{if(o.testBit(q)){r=r.add2D(s)}}}return r}this.getBigRandom=function(m){return new e(m.bitLength(),a).mod(m.subtract(e.ONE)).add(e.ONE)};this.setNamedCurve=function(m){this.ecparams=c.getByName(m);this.prvKeyHex=null;this.pubKeyHex=null;this.curveName=m};this.setPrivateKeyHex=function(m){this.isPrivate=true;this.prvKeyHex=m};this.setPublicKeyHex=function(m){this.isPublic=true;this.pubKeyHex=m};this.getPublicKeyXYHex=function(){var o=this.pubKeyHex;if(o.substr(0,2)!==\"04\"){throw\"this method supports uncompressed format(04) only\"}var n=this.ecparams.keylen/4;if(o.length!==2+n*2){throw\"malformed public key hex length\"}var m={};m.x=o.substr(2,n);m.y=o.substr(2+n);return m};this.getShortNISTPCurveName=function(){var m=this.curveName;if(m===\"secp256r1\"||m===\"NIST P-256\"||m===\"P-256\"||m===\"prime256v1\"){return\"P-256\"}if(m===\"secp384r1\"||m===\"NIST P-384\"||m===\"P-384\"){return\"P-384\"}return null};this.generateKeyPairHex=function(){var o=this.ecparams.n;var r=this.getBigRandom(o);var p=this.ecparams.G.multiply(r);var u=p.getX().toBigInteger();var s=p.getY().toBigInteger();var m=this.ecparams.keylen/4;var q=(\"0000000000\"+r.toString(16)).slice(-m);var v=(\"0000000000\"+u.toString(16)).slice(-m);var t=(\"0000000000\"+s.toString(16)).slice(-m);var n=\"04\"+v+t;this.setPrivateKeyHex(q);this.setPublicKeyHex(n);return{ecprvhex:q,ecpubhex:n}};this.signWithMessageHash=function(m){return this.signHex(m,this.prvKeyHex)};this.signHex=function(t,o){var w=new e(o,16);var p=this.ecparams.n;var v=new e(t.substring(0,this.ecparams.keylen/4),16);do{var q=this.getBigRandom(p);var x=this.ecparams.G;var u=x.multiply(q);var m=u.getX().toBigInteger().mod(p)}while(m.compareTo(e.ZERO)<=0);var y=q.modInverse(p).multiply(v.add(w.multiply(m))).mod(p);return j.biRSSigToASN1Sig(m,y)};this.sign=function(q,x){var v=x;var o=this.ecparams.n;var u=e.fromByteArrayUnsigned(q);do{var p=this.getBigRandom(o);var w=this.ecparams.G;var t=w.multiply(p);var m=t.getX().toBigInteger().mod(o)}while(m.compareTo(BigInteger.ZERO)<=0);var y=p.modInverse(o).multiply(u.add(v.multiply(m))).mod(o);return this.serializeSig(m,y)};this.verifyWithMessageHash=function(n,m){return this.verifyHex(n,m,this.pubKeyHex)};this.verifyHex=function(q,m,v){var p,n;var u=j.parseSigHex(m);p=u.r;n=u.s;var o=g.decodeFromHex(this.ecparams.curve,v);var t=new e(q.substring(0,this.ecparams.keylen/4),16);return this.verifyRaw(t,p,n,o)};this.verify=function(u,v,n){var p,m;if(Bitcoin.Util.isArray(v)){var t=this.parseSig(v);p=t.r;m=t.s}else{if(\"object\"===typeof v&&v.r&&v.s){p=v.r;m=v.s}else{throw\"Invalid value for signature\"}}var o;if(n instanceof ECPointFp){o=n}else{if(Bitcoin.Util.isArray(n)){o=g.decodeFrom(this.ecparams.curve,n)}else{throw\"Invalid format for pubkey value, must be byte array or ECPointFp\"}}var q=e.fromByteArrayUnsigned(u);return this.verifyRaw(q,p,m,o)};this.verifyRaw=function(u,m,A,t){var q=this.ecparams.n;var z=this.ecparams.G;if(m.compareTo(e.ONE)<0||m.compareTo(q)>=0){return false}if(A.compareTo(e.ONE)<0||A.compareTo(q)>=0){return false}var w=A.modInverse(q);var p=u.multiply(w).mod(q);var o=m.multiply(w).mod(q);var x=z.multiply(p).add(t.multiply(o));var y=x.getX().toBigInteger().mod(q);return y.equals(m)};this.serializeSig=function(o,n){var p=o.toByteArraySigned();var m=n.toByteArraySigned();var q=[];q.push(2);q.push(p.length);q=q.concat(p);q.push(2);q.push(m.length);q=q.concat(m);q.unshift(q.length);q.unshift(48);return q};this.parseSig=function(t){var q;if(t[0]!=48){throw new Error(\"Signature not a valid DERSequence\")}q=2;if(t[q]!=2){throw new Error(\"First element in signature must be a DERInteger\")}var p=t.slice(q+2,q+2+t[q+1]);q+=2+t[q+1];if(t[q]!=2){throw new Error(\"Second element in signature must be a DERInteger\")}var m=t.slice(q+2,q+2+t[q+1]);q+=2+t[q+1];var o=e.fromByteArrayUnsigned(p);var n=e.fromByteArrayUnsigned(m);return{r:o,s:n}};this.parseSigCompact=function(q){if(q.length!==65){throw\"Signature has the wrong length\"}var m=q[0]-27;if(m<0||m>7){throw\"Invalid signature type\"}var t=this.ecparams.n;var p=e.fromByteArrayUnsigned(q.slice(1,33)).mod(t);var o=e.fromByteArrayUnsigned(q.slice(33,65)).mod(t);return{r:p,s:o,i:m}};this.readPKCS5PrvKeyHex=function(p){var r=ASN1HEX,q=j.getName,t=r.getVbyList;if(r.isASN1HEX(p)===false){throw\"not ASN.1 hex string\"}var m,o,s;try{m=t(p,0,[2,0],\"06\");o=t(p,0,[1],\"04\");try{s=t(p,0,[3,0],\"03\").substr(2)}catch(n){}}catch(n){throw\"malformed PKCS#1/5 plain ECC private key\"}this.curveName=q(m);if(this.curveName===undefined){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(s);this.setPrivateKeyHex(o);this.isPublic=false};this.readPKCS8PrvKeyHex=function(p){var u=ASN1HEX;var m=KJUR.crypto.ECDSA.getName;var r=u.getVbyList;if(u.isASN1HEX(p)===false){throw\"not ASN.1 hex string\"}var n,t,q,o;try{n=r(p,0,[1,0],\"06\");t=r(p,0,[1,1],\"06\");q=r(p,0,[2,0,1],\"04\");try{o=r(p,0,[2,0,2,0],\"03\").substr(2)}catch(s){}}catch(s){throw\"malformed PKCS#8 plain ECC private key\"}this.curveName=m(t);if(this.curveName===undefined){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(o);this.setPrivateKeyHex(q);this.isPublic=false};this.readPKCS8PubKeyHex=function(p){var r=ASN1HEX;var q=KJUR.crypto.ECDSA.getName;var t=r.getVbyList;if(r.isASN1HEX(p)===false){throw\"not ASN.1 hex string\"}var o,m,s;try{o=t(p,0,[0,0],\"06\");m=t(p,0,[0,1],\"06\");s=t(p,0,[1],\"03\").substr(2)}catch(n){throw\"malformed PKCS#8 ECC public key\"}this.curveName=q(m);if(this.curveName===null){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(s)};this.readCertPubKeyHex=function(o,t){if(t!==5){t=6}var q=ASN1HEX;var p=j.getName;var s=q.getVbyList;if(q.isASN1HEX(o)===false){throw\"not ASN.1 hex string\"}var m,r;try{m=s(o,0,[0,t,0,1],\"06\");r=s(o,0,[0,t,1],\"03\").substr(2)}catch(n){throw\"malformed X.509 certificate ECC public key\"}this.curveName=p(m);if(this.curveName===null){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(r)};if(d!==undefined){if(d.curve!==undefined){this.curveName=d.curve}}if(this.curveName===undefined){this.curveName=f}this.setNamedCurve(this.curveName);if(d!==undefined){if(d.prv!==undefined){this.setPrivateKeyHex(d.prv)}if(d.pub!==undefined){this.setPublicKeyHex(d.pub)}}};KJUR.crypto.ECDSA.parseSigHex=function(a){var b=KJUR.crypto.ECDSA.parseSigHexInHexRS(a);var d=new BigInteger(b.r,16);var c=new BigInteger(b.s,16);return{r:d,s:c}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(f){var j=ASN1HEX,i=j.getChildIdx,g=j.getV;if(f.substr(0,2)!=\"30\"){throw\"signature is not a ASN.1 sequence\"}var h=i(f,0);if(h.length!=2){throw\"number of signature ASN.1 sequence elements seem wrong\"}var e=h[0];var d=h[1];if(f.substr(e,2)!=\"02\"){throw\"1st item of sequene of signature is not ASN.1 integer\"}if(f.substr(d,2)!=\"02\"){throw\"2nd item of sequene of signature is not ASN.1 integer\"}var c=g(f,e);var b=g(f,d);return{r:c,s:b}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(c){var d=KJUR.crypto.ECDSA.parseSigHexInHexRS(c);var b=d.r;var a=d.s;if(b.substr(0,2)==\"00\"&&(b.length%32)==2){b=b.substr(2)}if(a.substr(0,2)==\"00\"&&(a.length%32)==2){a=a.substr(2)}if((b.length%32)==30){b=\"00\"+b}if((a.length%32)==30){a=\"00\"+a}if(b.length%32!=0){throw\"unknown ECDSA sig r length error\"}if(a.length%32!=0){throw\"unknown ECDSA sig s length error\"}return b+a};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(a){if((((a.length/2)*8)%(16*8))!=0){throw\"unknown ECDSA concatinated r-s sig length error\"}var c=a.substr(0,a.length/2);var b=a.substr(a.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c,b)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(b,a){var d=new BigInteger(b,16);var c=new BigInteger(a,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d,c)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(f,d){var c=KJUR.asn1;var b=new c.DERInteger({bigint:f});var a=new c.DERInteger({bigint:d});var e=new c.DERSequence({array:[b,a]});return e.getEncodedHex()};KJUR.crypto.ECDSA.getName=function(a){if(a===\"2b8104001f\"){return\"secp192k1\"}if(a===\"2a8648ce3d030107\"){return\"secp256r1\"}if(a===\"2b8104000a\"){return\"secp256k1\"}if(a===\"2b81040021\"){return\"secp224r1\"}if(a===\"2b81040022\"){return\"secp384r1\"}if(\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(a)!==-1){return\"secp256r1\"}if(\"|secp256k1|\".indexOf(a)!==-1){return\"secp256k1\"}if(\"|secp224r1|NIST P-224|P-224|\".indexOf(a)!==-1){return\"secp224r1\"}if(\"|secp384r1|NIST P-384|P-384|\".indexOf(a)!==-1){return\"secp384r1\"}return null};if(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECParameterDB=new function(){var b={};var c={};function a(d){return new BigInteger(d,16)}this.getByName=function(e){var d=e;if(typeof c[d]!=\"undefined\"){d=c[e]}if(typeof b[d]!=\"undefined\"){return b[d]}throw\"unregistered EC curve name: \"+d};this.regist=function(A,l,o,g,m,e,j,f,k,u,d,x){b[A]={};var s=a(o);var z=a(g);var y=a(m);var t=a(e);var w=a(j);var r=new ECCurveFp(s,z,y);var q=r.decodePointHex(\"04\"+f+k);b[A][\"name\"]=A;b[A][\"keylen\"]=l;b[A][\"curve\"]=r;b[A][\"G\"]=q;b[A][\"n\"]=t;b[A][\"h\"]=w;b[A][\"oid\"]=d;b[A][\"info\"]=x;for(var v=0;v<u.length;v++){c[u[v]]=A}}};KJUR.crypto.ECParameterDB.regist(\"secp128r1\",128,\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\",\"E87579C11079F43DD824993C2CEE5ED3\",\"FFFFFFFE0000000075A30D1B9038A115\",\"1\",\"161FF7528B899B2D0C28607CA52C5B86\",\"CF5AC8395BAFEB13C02DA292DDED7A83\",[],\"\",\"secp128r1 : SECG curve over a 128 bit prime field\");KJUR.crypto.ECParameterDB.regist(\"secp160k1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\",\"0\",\"7\",\"0100000000000000000001B8FA16DFAB9ACA16B6B3\",\"1\",\"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\",\"938CF935318FDCED6BC28286531733C3F03C4FEE\",[],\"\",\"secp160k1 : SECG curve over a 160 bit prime field\");KJUR.crypto.ECParameterDB.regist(\"secp160r1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\",\"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\",\"0100000000000000000001F4C8F927AED3CA752257\",\"1\",\"4A96B5688EF573284664698968C38BB913CBFC82\",\"23A628553168947D59DCC912042351377AC5FB32\",[],\"\",\"secp160r1 : SECG curve over a 160 bit prime field\");KJUR.crypto.ECParameterDB.regist(\"secp192k1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\",\"0\",\"3\",\"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\",\"1\",\"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\",\"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\",[]);KJUR.crypto.ECParameterDB.regist(\"secp192r1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\",\"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\",\"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\",\"1\",\"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\",\"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\",[]);KJUR.crypto.ECParameterDB.regist(\"secp224r1\",224,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\",\"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\",\"1\",\"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\",\"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\",[]);KJUR.crypto.ECParameterDB.regist(\"secp256k1\",256,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F\",\"0\",\"7\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\",\"1\",\"79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798\",\"483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8\",[]);KJUR.crypto.ECParameterDB.regist(\"secp256r1\",256,\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\",\"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\",\"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\",\"1\",\"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\",\"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\",[\"NIST P-256\",\"P-256\",\"prime256v1\"]);KJUR.crypto.ECParameterDB.regist(\"secp384r1\",384,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC\",\"B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973\",\"1\",\"AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7\",\"3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f\",[\"NIST P-384\",\"P-384\"]);KJUR.crypto.ECParameterDB.regist(\"secp521r1\",521,\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC\",\"051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409\",\"1\",\"C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66\",\"011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650\",[\"NIST P-521\",\"P-521\"]);var KEYUTIL=function(){var d=function(p,r,q){return k(CryptoJS.AES,p,r,q)};var e=function(p,r,q){return k(CryptoJS.TripleDES,p,r,q)};var a=function(p,r,q){return k(CryptoJS.DES,p,r,q)};var k=function(s,x,u,q){var r=CryptoJS.enc.Hex.parse(x);var w=CryptoJS.enc.Hex.parse(u);var p=CryptoJS.enc.Hex.parse(q);var t={};t.key=w;t.iv=p;t.ciphertext=r;var v=s.decrypt(t,w,{iv:p});return CryptoJS.enc.Hex.stringify(v)};var l=function(p,r,q){return g(CryptoJS.AES,p,r,q)};var o=function(p,r,q){return g(CryptoJS.TripleDES,p,r,q)};var f=function(p,r,q){return g(CryptoJS.DES,p,r,q)};var g=function(t,y,v,q){var s=CryptoJS.enc.Hex.parse(y);var x=CryptoJS.enc.Hex.parse(v);var p=CryptoJS.enc.Hex.parse(q);var w=t.encrypt(s,x,{iv:p});var r=CryptoJS.enc.Hex.parse(w.toString());var u=CryptoJS.enc.Base64.stringify(r);return u};var i={\"AES-256-CBC\":{proc:d,eproc:l,keylen:32,ivlen:16},\"AES-192-CBC\":{proc:d,eproc:l,keylen:24,ivlen:16},\"AES-128-CBC\":{proc:d,eproc:l,keylen:16,ivlen:16},\"DES-EDE3-CBC\":{proc:e,eproc:o,keylen:24,ivlen:8},\"DES-CBC\":{proc:a,eproc:f,keylen:8,ivlen:8}};var c=function(p){return i[p][\"proc\"]};var m=function(p){var r=CryptoJS.lib.WordArray.random(p);var q=CryptoJS.enc.Hex.stringify(r);return q};var n=function(v){var w={};var q=v.match(new RegExp(\"DEK-Info: ([^,]+),([0-9A-Fa-f]+)\",\"m\"));if(q){w.cipher=q[1];w.ivsalt=q[2]}var p=v.match(new RegExp(\"-----BEGIN ([A-Z]+) PRIVATE KEY-----\"));if(p){w.type=p[1]}var u=-1;var x=0;if(v.indexOf(\"\\r\\n\\r\\n\")!=-1){u=v.indexOf(\"\\r\\n\\r\\n\");x=2}if(v.indexOf(\"\\n\\n\")!=-1){u=v.indexOf(\"\\n\\n\");x=1}var t=v.indexOf(\"-----END\");if(u!=-1&&t!=-1){var r=v.substring(u+x*2,t-x);r=r.replace(/\\s+/g,\"\");w.data=r}return w};var j=function(q,y,p){var v=p.substring(0,16);var t=CryptoJS.enc.Hex.parse(v);var r=CryptoJS.enc.Utf8.parse(y);var u=i[q][\"keylen\"]+i[q][\"ivlen\"];var x=\"\";var w=null;for(;;){var s=CryptoJS.algo.MD5.create();if(w!=null){s.update(w)}s.update(r);s.update(t);w=s.finalize();x=x+CryptoJS.enc.Hex.stringify(w);if(x.length>=u*2){break}}var z={};z.keyhex=x.substr(0,i[q][\"keylen\"]*2);z.ivhex=x.substr(i[q][\"keylen\"]*2,i[q][\"ivlen\"]*2);return z};var b=function(p,v,r,w){var s=CryptoJS.enc.Base64.parse(p);var q=CryptoJS.enc.Hex.stringify(s);var u=i[v][\"proc\"];var t=u(q,r,w);return t};var h=function(p,s,q,u){var r=i[s][\"eproc\"];var t=r(p,q,u);return t};return{version:\"1.0.0\",parsePKCS5PEM:function(p){return n(p)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(q,p,r){return j(q,p,r)},decryptKeyB64:function(p,r,q,s){return b(p,r,q,s)},getDecryptedKeyHex:function(y,x){var q=n(y);var t=q.type;var r=q.cipher;var p=q.ivsalt;var s=q.data;var w=j(r,x,p);var v=w.keyhex;var u=b(s,r,v,p);return u},getEncryptedPKCS5PEMFromPrvKeyHex:function(x,s,A,t,r){var p=\"\";if(typeof t==\"undefined\"||t==null){t=\"AES-256-CBC\"}if(typeof i[t]==\"undefined\"){throw\"KEYUTIL unsupported algorithm: \"+t}if(typeof r==\"undefined\"||r==null){var v=i[t][\"ivlen\"];var u=m(v);r=u.toUpperCase()}var z=j(t,A,r);var y=z.keyhex;var w=h(s,t,y,r);var q=w.replace(/(.{64})/g,\"$1\\r\\n\");var p=\"-----BEGIN \"+x+\" PRIVATE KEY-----\\r\\n\";p+=\"Proc-Type: 4,ENCRYPTED\\r\\n\";p+=\"DEK-Info: \"+t+\",\"+r+\"\\r\\n\";p+=\"\\r\\n\";p+=q;p+=\"\\r\\n-----END \"+x+\" PRIVATE KEY-----\\r\\n\";return p},parseHexOfEncryptedPKCS8:function(y){var B=ASN1HEX;var z=B.getChildIdx;var w=B.getV;var t={};var r=z(y,0);if(r.length!=2){throw\"malformed format: SEQUENCE(0).items != 2: \"+r.length}t.ciphertext=w(y,r[1]);var A=z(y,r[0]);if(A.length!=2){throw\"malformed format: SEQUENCE(0.0).items != 2: \"+A.length}if(w(y,A[0])!=\"2a864886f70d01050d\"){throw\"this only supports pkcs5PBES2\"}var p=z(y,A[1]);if(A.length!=2){throw\"malformed format: SEQUENCE(0.0.1).items != 2: \"+p.length}var q=z(y,p[1]);if(q.length!=2){throw\"malformed format: SEQUENCE(0.0.1.1).items != 2: \"+q.length}if(w(y,q[0])!=\"2a864886f70d0307\"){throw\"this only supports TripleDES\"}t.encryptionSchemeAlg=\"TripleDES\";t.encryptionSchemeIV=w(y,q[1]);var s=z(y,p[0]);if(s.length!=2){throw\"malformed format: SEQUENCE(0.0.1.0).items != 2: \"+s.length}if(w(y,s[0])!=\"2a864886f70d01050c\"){throw\"this only supports pkcs5PBKDF2\"}var x=z(y,s[1]);if(x.length<2){throw\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \"+x.length}t.pbkdf2Salt=w(y,x[0]);var u=w(y,x[1]);try{t.pbkdf2Iter=parseInt(u,16)}catch(v){throw\"malformed format pbkdf2Iter: \"+u}return t},getPBKDF2KeyHexFromParam:function(u,p){var t=CryptoJS.enc.Hex.parse(u.pbkdf2Salt);var q=u.pbkdf2Iter;var s=CryptoJS.PBKDF2(p,t,{keySize:192/32,iterations:q});var r=CryptoJS.enc.Hex.stringify(s);return r},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(x,y){var r=pemtohex(x,\"ENCRYPTED PRIVATE KEY\");var p=this.parseHexOfEncryptedPKCS8(r);var u=KEYUTIL.getPBKDF2KeyHexFromParam(p,y);var v={};v.ciphertext=CryptoJS.enc.Hex.parse(p.ciphertext);var t=CryptoJS.enc.Hex.parse(u);var s=CryptoJS.enc.Hex.parse(p.encryptionSchemeIV);var w=CryptoJS.TripleDES.decrypt(v,t,{iv:s});var q=CryptoJS.enc.Hex.stringify(w);return q},getKeyFromEncryptedPKCS8PEM:function(s,q){var p=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(s,q);var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},parsePlainPrivatePKCS8Hex:function(s){var v=ASN1HEX;var u=v.getChildIdx;var t=v.getV;var q={};q.algparam=null;if(s.substr(0,2)!=\"30\"){throw\"malformed plain PKCS8 private key(code:001)\"}var r=u(s,0);if(r.length!=3){throw\"malformed plain PKCS8 private key(code:002)\"}if(s.substr(r[1],2)!=\"30\"){throw\"malformed PKCS8 private key(code:003)\"}var p=u(s,r[1]);if(p.length!=2){throw\"malformed PKCS8 private key(code:004)\"}if(s.substr(p[0],2)!=\"06\"){throw\"malformed PKCS8 private key(code:005)\"}q.algoid=t(s,p[0]);if(s.substr(p[1],2)==\"06\"){q.algparam=t(s,p[1])}if(s.substr(r[2],2)!=\"04\"){throw\"malformed PKCS8 private key(code:006)\"}q.keyidx=v.getVidx(s,r[2]);return q},getKeyFromPlainPrivatePKCS8PEM:function(q){var p=pemtohex(q,\"PRIVATE KEY\");var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},getKeyFromPlainPrivatePKCS8Hex:function(p){var q=this.parsePlainPrivatePKCS8Hex(p);var r;if(q.algoid==\"2a864886f70d010101\"){r=new RSAKey()}else{if(q.algoid==\"2a8648ce380401\"){r=new KJUR.crypto.DSA()}else{if(q.algoid==\"2a8648ce3d0201\"){r=new KJUR.crypto.ECDSA()}else{throw\"unsupported private key algorithm\"}}}r.readPKCS8PrvKeyHex(p);return r},_getKeyFromPublicPKCS8Hex:function(q){var p;var r=ASN1HEX.getVbyList(q,0,[0,0],\"06\");if(r===\"2a864886f70d010101\"){p=new RSAKey()}else{if(r===\"2a8648ce380401\"){p=new KJUR.crypto.DSA()}else{if(r===\"2a8648ce3d0201\"){p=new KJUR.crypto.ECDSA()}else{throw\"unsupported PKCS#8 public key hex\"}}}p.readPKCS8PubKeyHex(q);return p},parsePublicRawRSAKeyHex:function(r){var u=ASN1HEX;var t=u.getChildIdx;var s=u.getV;var p={};if(r.substr(0,2)!=\"30\"){throw\"malformed RSA key(code:001)\"}var q=t(r,0);if(q.length!=2){throw\"malformed RSA key(code:002)\"}if(r.substr(q[0],2)!=\"02\"){throw\"malformed RSA key(code:003)\"}p.n=s(r,q[0]);if(r.substr(q[1],2)!=\"02\"){throw\"malformed RSA key(code:004)\"}p.e=s(r,q[1]);return p},parsePublicPKCS8Hex:function(t){var v=ASN1HEX;var u=v.getChildIdx;var s=v.getV;var q={};q.algparam=null;var r=u(t,0);if(r.length!=2){throw\"outer DERSequence shall have 2 elements: \"+r.length}var w=r[0];if(t.substr(w,2)!=\"30\"){throw\"malformed PKCS8 public key(code:001)\"}var p=u(t,w);if(p.length!=2){throw\"malformed PKCS8 public key(code:002)\"}if(t.substr(p[0],2)!=\"06\"){throw\"malformed PKCS8 public key(code:003)\"}q.algoid=s(t,p[0]);if(t.substr(p[1],2)==\"06\"){q.algparam=s(t,p[1])}else{if(t.substr(p[1],2)==\"30\"){q.algparam={};q.algparam.p=v.getVbyList(t,p[1],[0],\"02\");q.algparam.q=v.getVbyList(t,p[1],[1],\"02\");q.algparam.g=v.getVbyList(t,p[1],[2],\"02\")}}if(t.substr(r[1],2)!=\"03\"){throw\"malformed PKCS8 public key(code:004)\"}q.key=s(t,r[1]).substr(2);return q},}}();KEYUTIL.getKey=function(l,k,n){var G=ASN1HEX,L=G.getChildIdx,v=G.getV,d=G.getVbyList,c=KJUR.crypto,i=c.ECDSA,C=c.DSA,w=RSAKey,M=pemtohex,F=KEYUTIL;if(typeof w!=\"undefined\"&&l instanceof w){return l}if(typeof i!=\"undefined\"&&l instanceof i){return l}if(typeof C!=\"undefined\"&&l instanceof C){return l}if(l.curve!==undefined&&l.xy!==undefined&&l.d===undefined){return new i({pub:l.xy,curve:l.curve})}if(l.curve!==undefined&&l.d!==undefined){return new i({prv:l.d,curve:l.curve})}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(l.n,l.e);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.co!==undefined&&l.qi===undefined){var P=new w();P.setPrivateEx(l.n,l.e,l.d,l.p,l.q,l.dp,l.dq,l.co);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p===undefined){var P=new w();P.setPrivate(l.n,l.e,l.d);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x===undefined){var P=new C();P.setPublic(l.p,l.q,l.g,l.y);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x!==undefined){var P=new C();P.setPrivate(l.p,l.q,l.g,l.y,l.x);return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(b64utohex(l.n),b64utohex(l.e));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.qi!==undefined){var P=new w();P.setPrivateEx(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d),b64utohex(l.p),b64utohex(l.q),b64utohex(l.dp),b64utohex(l.dq),b64utohex(l.qi));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined){var P=new w();P.setPrivate(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d));return P}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d===undefined){var j=new i({curve:l.crv});var t=j.ecparams.keylen/4;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;j.setPublicKeyHex(u);return j}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d!==undefined){var j=new i({curve:l.crv});var t=j.ecparams.keylen/4;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;var b=(\"0000000000\"+b64utohex(l.d)).slice(-t);j.setPublicKeyHex(u);j.setPrivateKeyHex(b);return j}if(n===\"pkcs5prv\"){var J=l,G=ASN1HEX,N,P;N=L(J,0);if(N.length===9){P=new w();P.readPKCS5PrvKeyHex(J)}else{if(N.length===6){P=new C();P.readPKCS5PrvKeyHex(J)}else{if(N.length>2&&J.substr(N[1],2)===\"04\"){P=new i();P.readPKCS5PrvKeyHex(J)}else{throw\"unsupported PKCS#1/5 hexadecimal key\"}}}return P}if(n===\"pkcs8prv\"){var P=F.getKeyFromPlainPrivatePKCS8Hex(l);return P}if(n===\"pkcs8pub\"){return F._getKeyFromPublicPKCS8Hex(l)}if(n===\"x509pub\"){return X509.getPublicKeyFromCertHex(l)}if(l.indexOf(\"-END CERTIFICATE-\",0)!=-1||l.indexOf(\"-END X509 CERTIFICATE-\",0)!=-1||l.indexOf(\"-END TRUSTED CERTIFICATE-\",0)!=-1){return X509.getPublicKeyFromCertPEM(l)}if(l.indexOf(\"-END PUBLIC KEY-\")!=-1){var O=pemtohex(l,\"PUBLIC KEY\");return F._getKeyFromPublicPKCS8Hex(O)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"RSA PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var I=M(l,\"DSA PRIVATE KEY\");var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"EC PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END PRIVATE KEY-\")!=-1){return F.getKeyFromPlainPrivatePKCS8PEM(l)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var o=F.getDecryptedKeyHex(l,k);var H=new RSAKey();H.readPKCS5PrvKeyHex(o);return H}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var P=d(I,0,[1],\"04\");var f=d(I,0,[2,0],\"06\");var A=d(I,0,[3,0],\"03\").substr(2);var e=\"\";if(KJUR.crypto.OID.oidhex2name[f]!==undefined){e=KJUR.crypto.OID.oidhex2name[f]}else{throw\"undefined OID(hex) in KJUR.crypto.OID: \"+f}var j=new i({curve:e});j.setPublicKeyHex(A);j.setPrivateKeyHex(P);j.isPublic=false;return j}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END ENCRYPTED PRIVATE KEY-\")!=-1){return F.getKeyFromEncryptedPKCS8PEM(l,k)}throw\"not supported argument\"};KEYUTIL.generateKeypair=function(a,c){if(a==\"RSA\"){var b=c;var h=new RSAKey();h.generate(b,\"10001\");h.isPrivate=true;h.isPublic=true;var f=new RSAKey();var e=h.n.toString(16);var i=h.e.toString(16);f.setPublic(e,i);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{if(a==\"EC\"){var d=c;var g=new KJUR.crypto.ECDSA({curve:d});var j=g.generateKeyPairHex();var h=new KJUR.crypto.ECDSA({curve:d});h.setPublicKeyHex(j.ecpubhex);h.setPrivateKeyHex(j.ecprvhex);h.isPrivate=true;h.isPublic=false;var f=new KJUR.crypto.ECDSA({curve:d});f.setPublicKeyHex(j.ecpubhex);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{throw\"unknown algorithm: \"+a}}};KEYUTIL.getPEM=function(b,D,y,m,q,j){var F=KJUR,k=F.asn1,z=k.DERObjectIdentifier,f=k.DERInteger,l=k.ASN1Util.newObject,a=k.x509,C=a.SubjectPublicKeyInfo,e=F.crypto,u=e.DSA,r=e.ECDSA,n=RSAKey;function A(s){var G=l({seq:[{\"int\":0},{\"int\":{bigint:s.n}},{\"int\":s.e},{\"int\":{bigint:s.d}},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.dmp1}},{\"int\":{bigint:s.dmq1}},{\"int\":{bigint:s.coeff}}]});return G}function B(G){var s=l({seq:[{\"int\":1},{octstr:{hex:G.prvKeyHex}},{tag:[\"a0\",true,{oid:{name:G.curveName}}]},{tag:[\"a1\",true,{bitstr:{hex:\"00\"+G.pubKeyHex}}]}]});return s}function x(s){var G=l({seq:[{\"int\":0},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.g}},{\"int\":{bigint:s.y}},{\"int\":{bigint:s.x}}]});return G}if(((n!==undefined&&b instanceof n)||(u!==undefined&&b instanceof u)||(r!==undefined&&b instanceof r))&&b.isPublic==true&&(D===undefined||D==\"PKCS8PUB\")){var E=new C(b);var w=E.getEncodedHex();return hextopem(w,\"PUBLIC KEY\")}if(D==\"PKCS1PRV\"&&n!==undefined&&b instanceof n&&(y===undefined||y==null)&&b.isPrivate==true){var E=A(b);var w=E.getEncodedHex();return hextopem(w,\"RSA PRIVATE KEY\")}if(D==\"PKCS1PRV\"&&r!==undefined&&b instanceof r&&(y===undefined||y==null)&&b.isPrivate==true){var i=new z({name:b.curveName});var v=i.getEncodedHex();var h=B(b);var t=h.getEncodedHex();var p=\"\";p+=hextopem(v,\"EC PARAMETERS\");p+=hextopem(t,\"EC PRIVATE KEY\");return p}if(D==\"PKCS1PRV\"&&u!==undefined&&b instanceof u&&(y===undefined||y==null)&&b.isPrivate==true){var E=x(b);var w=E.getEncodedHex();return hextopem(w,\"DSA PRIVATE KEY\")}if(D==\"PKCS5PRV\"&&n!==undefined&&b instanceof n&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=A(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\",w,y,m,j)}if(D==\"PKCS5PRV\"&&r!==undefined&&b instanceof r&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=B(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\",w,y,m,j)}if(D==\"PKCS5PRV\"&&u!==undefined&&b instanceof u&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=x(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\",w,y,m,j)}var o=function(G,s){var I=c(G,s);var H=new l({seq:[{seq:[{oid:{name:\"pkcs5PBES2\"}},{seq:[{seq:[{oid:{name:\"pkcs5PBKDF2\"}},{seq:[{octstr:{hex:I.pbkdf2Salt}},{\"int\":I.pbkdf2Iter}]}]},{seq:[{oid:{name:\"des-EDE3-CBC\"}},{octstr:{hex:I.encryptionSchemeIV}}]}]}]},{octstr:{hex:I.ciphertext}}]});return H.getEncodedHex()};var c=function(N,O){var H=100;var M=CryptoJS.lib.WordArray.random(8);var L=\"DES-EDE3-CBC\";var s=CryptoJS.lib.WordArray.random(8);var I=CryptoJS.PBKDF2(O,M,{keySize:192/32,iterations:H});var J=CryptoJS.enc.Hex.parse(N);var K=CryptoJS.TripleDES.encrypt(J,I,{iv:s})+\"\";var G={};G.ciphertext=K;G.pbkdf2Salt=CryptoJS.enc.Hex.stringify(M);G.pbkdf2Iter=H;G.encryptionSchemeAlg=L;G.encryptionSchemeIV=CryptoJS.enc.Hex.stringify(s);return G};if(D==\"PKCS8PRV\"&&n!=undefined&&b instanceof n&&b.isPrivate==true){var g=A(b);var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"rsaEncryption\"}},{\"null\":true}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}if(D==\"PKCS8PRV\"&&r!==undefined&&b instanceof r&&b.isPrivate==true){var g=new l({seq:[{\"int\":1},{octstr:{hex:b.prvKeyHex}},{tag:[\"a1\",true,{bitstr:{hex:\"00\"+b.pubKeyHex}}]}]});var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"ecPublicKey\"}},{oid:{name:b.curveName}}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}if(D==\"PKCS8PRV\"&&u!==undefined&&b instanceof u&&b.isPrivate==true){var g=new f({bigint:b.x});var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"dsa\"}},{seq:[{\"int\":{bigint:b.p}},{\"int\":{bigint:b.q}},{\"int\":{bigint:b.g}}]}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}throw\"unsupported object nor format\"};KEYUTIL.getKeyFromCSRPEM=function(b){var a=pemtohex(b,\"CERTIFICATE REQUEST\");var c=KEYUTIL.getKeyFromCSRHex(a);return c};KEYUTIL.getKeyFromCSRHex=function(a){var c=KEYUTIL.parseCSRHex(a);var b=KEYUTIL.getKey(c.p8pubkeyhex,null,\"pkcs8pub\");return b};KEYUTIL.parseCSRHex=function(d){var i=ASN1HEX;var f=i.getChildIdx;var c=i.getTLV;var b={};var g=d;if(g.substr(0,2)!=\"30\"){throw\"malformed CSR(code:001)\"}var e=f(g,0);if(e.length<1){throw\"malformed CSR(code:002)\"}if(g.substr(e[0],2)!=\"30\"){throw\"malformed CSR(code:003)\"}var a=f(g,e[0]);if(a.length<3){throw\"malformed CSR(code:004)\"}b.p8pubkeyhex=c(g,a[2]);return b};KEYUTIL.getJWKFromKey=function(d){var b={};if(d instanceof RSAKey&&d.isPrivate){b.kty=\"RSA\";b.n=hextob64u(d.n.toString(16));b.e=hextob64u(d.e.toString(16));b.d=hextob64u(d.d.toString(16));b.p=hextob64u(d.p.toString(16));b.q=hextob64u(d.q.toString(16));b.dp=hextob64u(d.dmp1.toString(16));b.dq=hextob64u(d.dmq1.toString(16));b.qi=hextob64u(d.coeff.toString(16));return b}else{if(d instanceof RSAKey&&d.isPublic){b.kty=\"RSA\";b.n=hextob64u(d.n.toString(16));b.e=hextob64u(d.e.toString(16));return b}else{if(d instanceof KJUR.crypto.ECDSA&&d.isPrivate){var a=d.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"){throw\"unsupported curve name for JWT: \"+a}var c=d.getPublicKeyXYHex();b.kty=\"EC\";b.crv=a;b.x=hextob64u(c.x);b.y=hextob64u(c.y);b.d=hextob64u(d.prvKeyHex);return b}else{if(d instanceof KJUR.crypto.ECDSA&&d.isPublic){var a=d.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"){throw\"unsupported curve name for JWT: \"+a}var c=d.getPublicKeyXYHex();b.kty=\"EC\";b.crv=a;b.x=hextob64u(c.x);b.y=hextob64u(c.y);return b}}}}throw\"not supported key object\"};RSAKey.getPosArrayOfChildrenFromHex=function(a){return ASN1HEX.getChildIdx(a,0)};RSAKey.getHexValueArrayOfChildrenFromHex=function(f){var n=ASN1HEX;var i=n.getV;var k=RSAKey.getPosArrayOfChildrenFromHex(f);var e=i(f,k[0]);var j=i(f,k[1]);var b=i(f,k[2]);var c=i(f,k[3]);var h=i(f,k[4]);var g=i(f,k[5]);var m=i(f,k[6]);var l=i(f,k[7]);var d=i(f,k[8]);var k=new Array();k.push(e,j,b,c,h,g,m,l,d);return k};RSAKey.prototype.readPrivateKeyFromPEMString=function(d){var c=pemtohex(d);var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS5PrvKeyHex=function(c){var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS8PrvKeyHex=function(e){var c,j,l,b,a,f,d,k;var m=ASN1HEX;var g=m.getVbyList;if(m.isASN1HEX(e)===false){throw\"not ASN.1 hex string\"}try{c=g(e,0,[2,0,1],\"02\");j=g(e,0,[2,0,2],\"02\");l=g(e,0,[2,0,3],\"02\");b=g(e,0,[2,0,4],\"02\");a=g(e,0,[2,0,5],\"02\");f=g(e,0,[2,0,6],\"02\");d=g(e,0,[2,0,7],\"02\");k=g(e,0,[2,0,8],\"02\")}catch(i){throw\"malformed PKCS#8 plain RSA private key\"}this.setPrivateEx(c,j,l,b,a,f,d,k)};RSAKey.prototype.readPKCS5PubKeyHex=function(c){var e=ASN1HEX;var b=e.getV;if(e.isASN1HEX(c)===false){throw\"keyHex is not ASN.1 hex string\"}var a=e.getChildIdx(c,0);if(a.length!==2||c.substr(a[0],2)!==\"02\"||c.substr(a[1],2)!==\"02\"){throw\"wrong hex for PKCS#5 public key\"}var f=b(c,a[0]);var d=b(c,a[1]);this.setPublic(f,d)};RSAKey.prototype.readPKCS8PubKeyHex=function(b){var c=ASN1HEX;if(c.isASN1HEX(b)===false){throw\"not ASN.1 hex string\"}if(c.getTLVbyList(b,0,[0,0])!==\"06092a864886f70d010101\"){throw\"not PKCS8 RSA public key\"}var a=c.getTLVbyList(b,0,[1,0]);this.readPKCS5PubKeyHex(a)};RSAKey.prototype.readCertPubKeyHex=function(b,d){var a,c;a=new X509();a.readCertHex(b);c=a.getPublicKeyHex();this.readPKCS8PubKeyHex(c)};var _RE_HEXDECONLY=new RegExp(\"[^0-9a-f]\",\"gi\");function _rsasign_getHexPaddedDigestInfoForString(d,e,a){var b=function(f){return KJUR.crypto.Util.hashString(f,a)};var c=b(d);return KJUR.crypto.Util.getPaddedDigestInfoHex(c,a,e)}function _zeroPaddingOfSignature(e,d){var c=\"\";var a=d/4-e.length;for(var b=0;b<a;b++){c=c+\"0\"}return c+e}RSAKey.prototype.sign=function(d,a){var b=function(e){return KJUR.crypto.Util.hashString(e,a)};var c=b(d);return this.signWithMessageHash(c,a)};RSAKey.prototype.signWithMessageHash=function(e,c){var f=KJUR.crypto.Util.getPaddedDigestInfoHex(e,c,this.n.bitLength());var b=parseBigInt(f,16);var d=this.doPrivate(b);var a=d.toString(16);return _zeroPaddingOfSignature(a,this.n.bitLength())};function pss_mgf1_str(c,a,e){var b=\"\",d=0;while(b.length<a){b+=hextorstr(e(rstrtohex(c+String.fromCharCode.apply(String,[(d&4278190080)>>24,(d&16711680)>>16,(d&65280)>>8,d&255]))));d+=1}return b}RSAKey.prototype.signPSS=function(e,a,d){var c=function(f){return KJUR.crypto.Util.hashHex(f,a)};var b=c(rstrtohex(e));if(d===undefined){d=-1}return this.signWithMessageHashPSS(b,a,d)};RSAKey.prototype.signWithMessageHashPSS=function(l,a,k){var b=hextorstr(l);var g=b.length;var m=this.n.bitLength()-1;var c=Math.ceil(m/8);var d;var o=function(i){return KJUR.crypto.Util.hashHex(i,a)};if(k===-1||k===undefined){k=g}else{if(k===-2){k=c-g-2}else{if(k<-2){throw\"invalid salt length\"}}}if(c<(g+k+2)){throw\"data too long\"}var f=\"\";if(k>0){f=new Array(k);new SecureRandom().nextBytes(f);f=String.fromCharCode.apply(String,f)}var n=hextorstr(o(rstrtohex(\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"+b+f)));var j=[];for(d=0;d<c-k-g-2;d+=1){j[d]=0}var e=String.fromCharCode.apply(String,j)+\"\\x01\"+f;var h=pss_mgf1_str(n,e.length,o);var q=[];for(d=0;d<e.length;d+=1){q[d]=e.charCodeAt(d)^h.charCodeAt(d)}var p=(65280>>(8*c-m))&255;q[0]&=~p;for(d=0;d<g;d++){q.push(n.charCodeAt(d))}q.push(188);return _zeroPaddingOfSignature(this.doPrivate(new BigInteger(q)).toString(16),this.n.bitLength())};function _rsasign_getDecryptSignatureBI(a,d,c){var b=new RSAKey();b.setPublic(d,c);var e=b.doPublic(a);return e}function _rsasign_getHexDigestInfoFromSig(a,c,b){var e=_rsasign_getDecryptSignatureBI(a,c,b);var d=e.toString(16).replace(/^1f+00/,\"\");return d}function _rsasign_getAlgNameAndHashFromHexDisgestInfo(f){for(var e in KJUR.crypto.Util.DIGESTINFOHEAD){var d=KJUR.crypto.Util.DIGESTINFOHEAD[e];var b=d.length;if(f.substring(0,b)==d){var c=[e,f.substring(b)];return c}}return[]}RSAKey.prototype.verify=function(f,j){j=j.replace(_RE_HEXDECONLY,\"\");j=j.replace(/[ \\n]+/g,\"\");var b=parseBigInt(j,16);if(b.bitLength()>this.n.bitLength()){return 0}var i=this.doPublic(b);var e=i.toString(16).replace(/^1f+00/,\"\");var g=_rsasign_getAlgNameAndHashFromHexDisgestInfo(e);if(g.length==0){return false}var d=g[0];var h=g[1];var a=function(k){return KJUR.crypto.Util.hashString(k,d)};var c=a(f);return(h==c)};RSAKey.prototype.verifyWithMessageHash=function(e,a){a=a.replace(_RE_HEXDECONLY,\"\");a=a.replace(/[ \\n]+/g,\"\");var b=parseBigInt(a,16);if(b.bitLength()>this.n.bitLength()){return 0}var h=this.doPublic(b);var g=h.toString(16).replace(/^1f+00/,\"\");var c=_rsasign_getAlgNameAndHashFromHexDisgestInfo(g);if(c.length==0){return false}var d=c[0];var f=c[1];return(f==e)};RSAKey.prototype.verifyPSS=function(c,b,a,f){var e=function(g){return KJUR.crypto.Util.hashHex(g,a)};var d=e(rstrtohex(c));if(f===undefined){f=-1}return this.verifyWithMessageHashPSS(d,b,a,f)};RSAKey.prototype.verifyWithMessageHashPSS=function(f,s,l,c){var k=new BigInteger(s,16);if(k.bitLength()>this.n.bitLength()){return false}var r=function(i){return KJUR.crypto.Util.hashHex(i,l)};var j=hextorstr(f);var h=j.length;var g=this.n.bitLength()-1;var m=Math.ceil(g/8);var q;if(c===-1||c===undefined){c=h}else{if(c===-2){c=m-h-2}else{if(c<-2){throw\"invalid salt length\"}}}if(m<(h+c+2)){throw\"data too long\"}var a=this.doPublic(k).toByteArray();for(q=0;q<a.length;q+=1){a[q]&=255}while(a.length<m){a.unshift(0)}if(a[m-1]!==188){throw\"encoded message does not end in 0xbc\"}a=String.fromCharCode.apply(String,a);var d=a.substr(0,m-h-1);var e=a.substr(d.length,h);var p=(65280>>(8*m-g))&255;if((d.charCodeAt(0)&p)!==0){throw\"bits beyond keysize not zero\"}var n=pss_mgf1_str(e,d.length,r);var o=[];for(q=0;q<d.length;q+=1){o[q]=d.charCodeAt(q)^n.charCodeAt(q)}o[0]&=~p;var b=m-h-c-2;for(q=0;q<b;q+=1){if(o[q]!==0){throw\"leftmost octets not zero\"}}if(o[b]!==1){throw\"0x01 marker not found\"}return e===hextorstr(r(rstrtohex(\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"+j+String.fromCharCode.apply(String,o.slice(-c)))))};RSAKey.SALT_LEN_HLEN=-1;RSAKey.SALT_LEN_MAX=-2;RSAKey.SALT_LEN_RECOVER=-2;function X509(){var k=ASN1HEX,j=k.getChildIdx,h=k.getV,b=k.getTLV,f=k.getVbyList,c=k.getTLVbyList,g=k.getIdxbyList,d=k.getVidx,i=k.oidname,a=X509,e=pemtohex;this.hex=null;this.version=0;this.foffset=0;this.aExtInfo=null;this.getVersion=function(){if(this.hex===null||this.version!==0){return this.version}if(c(this.hex,0,[0,0])!==\"a003020102\"){this.version=1;this.foffset=-1;return 1}this.version=3;return 3};this.getSerialNumberHex=function(){return f(this.hex,0,[0,1+this.foffset],\"02\")};this.getSignatureAlgorithmField=function(){return i(f(this.hex,0,[0,2+this.foffset,0],\"06\"))};this.getIssuerHex=function(){return c(this.hex,0,[0,3+this.foffset],\"30\")};this.getIssuerString=function(){return a.hex2dn(this.getIssuerHex())};this.getSubjectHex=function(){return c(this.hex,0,[0,5+this.foffset],\"30\")};this.getSubjectString=function(){return a.hex2dn(this.getSubjectHex())};this.getNotBefore=function(){var l=f(this.hex,0,[0,4+this.foffset,0]);l=l.replace(/(..)/g,\"%$1\");l=decodeURIComponent(l);return l};this.getNotAfter=function(){var l=f(this.hex,0,[0,4+this.foffset,1]);l=l.replace(/(..)/g,\"%$1\");l=decodeURIComponent(l);return l};this.getPublicKeyHex=function(){return k.getTLVbyList(this.hex,0,[0,6+this.foffset],\"30\")};this.getPublicKeyIdx=function(){return g(this.hex,0,[0,6+this.foffset],\"30\")};this.getPublicKeyContentIdx=function(){var l=this.getPublicKeyIdx();return g(this.hex,l,[1,0],\"30\")};this.getPublicKey=function(){return KEYUTIL.getKey(this.getPublicKeyHex(),null,\"pkcs8pub\")};this.getSignatureAlgorithmName=function(){return i(f(this.hex,0,[1,0],\"06\"))};this.getSignatureValueHex=function(){return f(this.hex,0,[2],\"03\",true)};this.verifySignature=function(n){var o=this.getSignatureAlgorithmName();var l=this.getSignatureValueHex();var m=c(this.hex,0,[0],\"30\");var p=new KJUR.crypto.Signature({alg:o});p.init(n);p.updateHex(m);return p.verify(l)};this.parseExt=function(){if(this.version!==3){return -1}var p=g(this.hex,0,[0,7,0],\"30\");var m=j(this.hex,p);this.aExtInfo=new Array();for(var n=0;n<m.length;n++){var q={};q.critical=false;var l=j(this.hex,m[n]);var r=0;if(l.length===3){q.critical=true;r=1}q.oid=k.hextooidstr(f(this.hex,m[n],[0],\"06\"));var o=g(this.hex,m[n],[1+r]);q.vidx=d(this.hex,o);this.aExtInfo.push(q)}};this.getExtInfo=function(n){var l=this.aExtInfo;var o=n;if(!n.match(/^[0-9.]+$/)){o=KJUR.asn1.x509.OID.name2oid(n)}if(o===\"\"){return undefined}for(var m=0;m<l.length;m++){if(l[m].oid===o){return l[m]}}return undefined};this.getExtBasicConstraints=function(){var n=this.getExtInfo(\"basicConstraints\");if(n===undefined){return n}var l=h(this.hex,n.vidx);if(l===\"\"){return{}}if(l===\"0101ff\"){return{cA:true}}if(l.substr(0,8)===\"0101ff02\"){var o=h(l,6);var m=parseInt(o,16);return{cA:true,pathLen:m}}throw\"basicConstraints parse error\"};this.getExtKeyUsageBin=function(){var o=this.getExtInfo(\"keyUsage\");if(o===undefined){return\"\"}var m=h(this.hex,o.vidx);if(m.length%2!=0||m.length<=2){throw\"malformed key usage value\"}var l=parseInt(m.substr(0,2));var n=parseInt(m.substr(2),16).toString(2);return n.substr(0,n.length-l)};this.getExtKeyUsageString=function(){var n=this.getExtKeyUsageBin();var l=new Array();for(var m=0;m<n.length;m++){if(n.substr(m,1)==\"1\"){l.push(X509.KEYUSAGE_NAME[m])}}return l.join(\",\")};this.getExtSubjectKeyIdentifier=function(){var l=this.getExtInfo(\"subjectKeyIdentifier\");if(l===undefined){return l}return h(this.hex,l.vidx)};this.getExtAuthorityKeyIdentifier=function(){var p=this.getExtInfo(\"authorityKeyIdentifier\");if(p===undefined){return p}var l={};var o=b(this.hex,p.vidx);var m=j(o,0);for(var n=0;n<m.length;n++){if(o.substr(m[n],2)===\"80\"){l.kid=h(o,m[n])}}return l};this.getExtExtKeyUsageName=function(){var p=this.getExtInfo(\"extKeyUsage\");if(p===undefined){return p}var l=new Array();var o=b(this.hex,p.vidx);if(o===\"\"){return l}var m=j(o,0);for(var n=0;n<m.length;n++){l.push(i(h(o,m[n])))}return l};this.getExtSubjectAltName=function(){var m=this.getExtSubjectAltName2();var l=new Array();for(var n=0;n<m.length;n++){if(m[n][0]===\"DNS\"){l.push(m[n][1])}}return l};this.getExtSubjectAltName2=function(){var p,s,r;var q=this.getExtInfo(\"subjectAltName\");if(q===undefined){return q}var l=new Array();var o=b(this.hex,q.vidx);var m=j(o,0);for(var n=0;n<m.length;n++){r=o.substr(m[n],2);p=h(o,m[n]);if(r===\"81\"){s=hextoutf8(p);l.push([\"MAIL\",s])}if(r===\"82\"){s=hextoutf8(p);l.push([\"DNS\",s])}if(r===\"84\"){s=X509.hex2dn(p,0);l.push([\"DN\",s])}if(r===\"86\"){s=hextoutf8(p);l.push([\"URI\",s])}if(r===\"87\"){s=hextoip(p);l.push([\"IP\",s])}}return l};this.getExtCRLDistributionPointsURI=function(){var q=this.getExtInfo(\"cRLDistributionPoints\");if(q===undefined){return q}var l=new Array();var m=j(this.hex,q.vidx);for(var o=0;o<m.length;o++){try{var r=f(this.hex,m[o],[0,0,0],\"86\");var p=hextoutf8(r);l.push(p)}catch(n){}}return l};this.getExtAIAInfo=function(){var p=this.getExtInfo(\"authorityInfoAccess\");if(p===undefined){return p}var l={ocsp:[],caissuer:[]};var m=j(this.hex,p.vidx);for(var n=0;n<m.length;n++){var q=f(this.hex,m[n],[0],\"06\");var o=f(this.hex,m[n],[1],\"86\");if(q===\"2b06010505073001\"){l.ocsp.push(hextoutf8(o))}if(q===\"2b06010505073002\"){l.caissuer.push(hextoutf8(o))}}return l};this.getExtCertificatePolicies=function(){var o=this.getExtInfo(\"certificatePolicies\");if(o===undefined){return o}var l=b(this.hex,o.vidx);var u=[];var s=j(l,0);for(var r=0;r<s.length;r++){var t={};var n=j(l,s[r]);t.id=i(h(l,n[0]));if(n.length===2){var m=j(l,n[1]);for(var q=0;q<m.length;q++){var p=f(l,m[q],[0],\"06\");if(p===\"2b06010505070201\"){t.cps=hextoutf8(f(l,m[q],[1]))}else{if(p===\"2b06010505070202\"){t.unotice=hextoutf8(f(l,m[q],[1,0]))}}}}u.push(t)}return u};this.readCertPEM=function(l){this.readCertHex(e(l))};this.readCertHex=function(l){this.hex=l;this.getVersion();try{g(this.hex,0,[0,7],\"a3\");this.parseExt()}catch(m){}};this.getInfo=function(){var m=X509;var B,u,z;B=\"Basic Fields\\n\";B+=\" serial number: \"+this.getSerialNumberHex()+\"\\n\";B+=\" signature algorithm: \"+this.getSignatureAlgorithmField()+\"\\n\";B+=\" issuer: \"+this.getIssuerString()+\"\\n\";B+=\" notBefore: \"+this.getNotBefore()+\"\\n\";B+=\" notAfter: \"+this.getNotAfter()+\"\\n\";B+=\" subject: \"+this.getSubjectString()+\"\\n\";B+=\" subject public key info: \\n\";u=this.getPublicKey();B+=\" key algorithm: \"+u.type+\"\\n\";if(u.type===\"RSA\"){B+=\" n=\"+hextoposhex(u.n.toString(16)).substr(0,16)+\"...\\n\";B+=\" e=\"+hextoposhex(u.e.toString(16))+\"\\n\"}z=this.aExtInfo;if(z!==undefined&&z!==null){B+=\"X509v3 Extensions:\\n\";for(var r=0;r<z.length;r++){var n=z[r];var A=KJUR.asn1.x509.OID.oid2name(n.oid);if(A===\"\"){A=n.oid}var x=\"\";if(n.critical===true){x=\"CRITICAL\"}B+=\" \"+A+\" \"+x+\":\\n\";if(A===\"basicConstraints\"){var v=this.getExtBasicConstraints();if(v.cA===undefined){B+=\" {}\\n\"}else{B+=\" cA=true\";if(v.pathLen!==undefined){B+=\", pathLen=\"+v.pathLen}B+=\"\\n\"}}else{if(A===\"keyUsage\"){B+=\" \"+this.getExtKeyUsageString()+\"\\n\"}else{if(A===\"subjectKeyIdentifier\"){B+=\" \"+this.getExtSubjectKeyIdentifier()+\"\\n\"}else{if(A===\"authorityKeyIdentifier\"){var l=this.getExtAuthorityKeyIdentifier();if(l.kid!==undefined){B+=\" kid=\"+l.kid+\"\\n\"}}else{if(A===\"extKeyUsage\"){var w=this.getExtExtKeyUsageName();B+=\" \"+w.join(\", \")+\"\\n\"}else{if(A===\"subjectAltName\"){var t=this.getExtSubjectAltName2();B+=\" \"+t+\"\\n\"}else{if(A===\"cRLDistributionPoints\"){var y=this.getExtCRLDistributionPointsURI();B+=\" \"+y+\"\\n\"}else{if(A===\"authorityInfoAccess\"){var p=this.getExtAIAInfo();if(p.ocsp!==undefined){B+=\" ocsp: \"+p.ocsp.join(\",\")+\"\\n\"}if(p.caissuer!==undefined){B+=\" caissuer: \"+p.caissuer.join(\",\")+\"\\n\"}}else{if(A===\"certificatePolicies\"){var o=this.getExtCertificatePolicies();for(var q=0;q<o.length;q++){if(o[q].id!==undefined){B+=\" policy oid: \"+o[q].id+\"\\n\"}if(o[q].cps!==undefined){B+=\" cps: \"+o[q].cps+\"\\n\"}}}}}}}}}}}}}B+=\"signature algorithm: \"+this.getSignatureAlgorithmName()+\"\\n\";B+=\"signature: \"+this.getSignatureValueHex().substr(0,16)+\"...\\n\";return B}}X509.hex2dn=function(f,b){if(b===undefined){b=0}if(f.substr(b,2)!==\"30\"){throw\"malformed DN\"}var c=new Array();var d=ASN1HEX.getChildIdx(f,b);for(var e=0;e<d.length;e++){c.push(X509.hex2rdn(f,d[e]))}c=c.map(function(a){return a.replace(\"/\",\"\\\\/\")});return\"/\"+c.join(\"/\")};X509.hex2rdn=function(f,b){if(b===undefined){b=0}if(f.substr(b,2)!==\"31\"){throw\"malformed RDN\"}var c=new Array();var d=ASN1HEX.getChildIdx(f,b);for(var e=0;e<d.length;e++){c.push(X509.hex2attrTypeValue(f,d[e]))}c=c.map(function(a){return a.replace(\"+\",\"\\\\+\")});return c.join(\"+\")};X509.hex2attrTypeValue=function(d,i){var j=ASN1HEX;var h=j.getV;if(i===undefined){i=0}if(d.substr(i,2)!==\"30\"){throw\"malformed attribute type and value\"}var g=j.getChildIdx(d,i);if(g.length!==2||d.substr(g[0],2)!==\"06\"){\"malformed attribute type and value\"}var b=h(d,g[0]);var f=KJUR.asn1.ASN1Util.oidHexToInt(b);var e=KJUR.asn1.x509.OID.oid2atype(f);var a=h(d,g[1]);var c=hextorstr(a);return e+\"=\"+c};X509.getPublicKeyFromCertHex=function(b){var a=new X509();a.readCertHex(b);return a.getPublicKey()};X509.getPublicKeyFromCertPEM=function(b){var a=new X509();a.readCertPEM(b);return a.getPublicKey()};X509.getPublicKeyInfoPropOfCertPEM=function(c){var e=ASN1HEX;var g=e.getVbyList;var b={};var a,f,d;b.algparam=null;a=new X509();a.readCertPEM(c);f=a.getPublicKeyHex();b.keyhex=g(f,0,[1],\"03\").substr(2);b.algoid=g(f,0,[0,0],\"06\");if(b.algoid===\"2a8648ce3d0201\"){b.algparam=g(f,0,[0,1],\"06\")}return b};X509.KEYUSAGE_NAME=[\"digitalSignature\",\"nonRepudiation\",\"keyEncipherment\",\"dataEncipherment\",\"keyAgreement\",\"keyCertSign\",\"cRLSign\",\"encipherOnly\",\"decipherOnly\"];if(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.jws==\"undefined\"||!KJUR.jws){KJUR.jws={}}KJUR.jws.JWS=function(){var b=KJUR,a=b.jws.JWS,c=a.isSafeJSONString;this.parseJWS=function(g,j){if((this.parsedJWS!==undefined)&&(j||(this.parsedJWS.sigvalH!==undefined))){return}var i=g.match(/^([^.]+)\\.([^.]+)\\.([^.]+)$/);if(i==null){throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\"}var k=i[1];var e=i[2];var l=i[3];var n=k+\".\"+e;this.parsedJWS={};this.parsedJWS.headB64U=k;this.parsedJWS.payloadB64U=e;this.parsedJWS.sigvalB64U=l;this.parsedJWS.si=n;if(!j){var h=b64utohex(l);var f=parseBigInt(h,16);this.parsedJWS.sigvalH=h;this.parsedJWS.sigvalBI=f}var d=b64utoutf8(k);var m=b64utoutf8(e);this.parsedJWS.headS=d;this.parsedJWS.payloadS=m;if(!c(d,this.parsedJWS,\"headP\")){throw\"malformed JSON string for JWS Head: \"+d}}};KJUR.jws.JWS.sign=function(i,v,y,z,a){var w=KJUR,m=w.jws,q=m.JWS,g=q.readSafeJSONString,p=q.isSafeJSONString,d=w.crypto,k=d.ECDSA,o=d.Mac,c=d.Signature,t=JSON;var s,j,n;if(typeof v!=\"string\"&&typeof v!=\"object\"){throw\"spHeader must be JSON string or object: \"+v}if(typeof v==\"object\"){j=v;s=t.stringify(j)}if(typeof v==\"string\"){s=v;if(!p(s)){throw\"JWS Head is not safe JSON string: \"+s}j=g(s)}n=y;if(typeof y==\"object\"){n=t.stringify(y)}if((i==\"\"||i==null)&&j.alg!==undefined){i=j.alg}if((i!=\"\"&&i!=null)&&j.alg===undefined){j.alg=i;s=t.stringify(j)}if(i!==j.alg){throw\"alg and sHeader.alg doesn't match: \"+i+\"!=\"+j.alg}var r=null;if(q.jwsalg2sigalg[i]===undefined){throw\"unsupported alg name: \"+i}else{r=q.jwsalg2sigalg[i]}var e=utf8tob64u(s);var l=utf8tob64u(n);var b=e+\".\"+l;var x=\"\";if(r.substr(0,4)==\"Hmac\"){if(z===undefined){throw\"mac key shall be specified for HS* alg\"}var h=new o({alg:r,prov:\"cryptojs\",pass:z});h.updateString(b);x=h.doFinal()}else{if(r.indexOf(\"withECDSA\")!=-1){var f=new c({alg:r});f.init(z,a);f.updateString(b);hASN1Sig=f.sign();x=KJUR.crypto.ECDSA.asn1SigToConcatSig(hASN1Sig)}else{if(r!=\"none\"){var f=new c({alg:r});f.init(z,a);f.updateString(b);x=f.sign()}}}var u=hextob64u(x);return b+\".\"+u};KJUR.jws.JWS.verify=function(w,B,n){var x=KJUR,q=x.jws,t=q.JWS,i=t.readSafeJSONString,e=x.crypto,p=e.ECDSA,s=e.Mac,d=e.Signature,m;if(typeof RSAKey!==undefined){m=RSAKey}var y=w.split(\".\");if(y.length!==3){return false}var f=y[0];var r=y[1];var c=f+\".\"+r;var A=b64utohex(y[2]);var l=i(b64utoutf8(y[0]));var k=null;var z=null;if(l.alg===undefined){throw\"algorithm not specified in header\"}else{k=l.alg;z=k.substr(0,2)}if(n!=null&&Object.prototype.toString.call(n)===\"[object Array]\"&&n.length>0){var b=\":\"+n.join(\":\")+\":\";if(b.indexOf(\":\"+k+\":\")==-1){throw\"algorithm '\"+k+\"' not accepted in the list\"}}if(k!=\"none\"&&B===null){throw\"key shall be specified to verify.\"}if(typeof B==\"string\"&&B.indexOf(\"-----BEGIN \")!=-1){B=KEYUTIL.getKey(B)}if(z==\"RS\"||z==\"PS\"){if(!(B instanceof m)){throw\"key shall be a RSAKey obj for RS* and PS* algs\"}}if(z==\"ES\"){if(!(B instanceof p)){throw\"key shall be a ECDSA obj for ES* algs\"}}if(k==\"none\"){}var u=null;if(t.jwsalg2sigalg[l.alg]===undefined){throw\"unsupported alg name: \"+k}else{u=t.jwsalg2sigalg[k]}if(u==\"none\"){throw\"not supported\"}else{if(u.substr(0,4)==\"Hmac\"){var o=null;if(B===undefined){throw\"hexadecimal key shall be specified for HMAC\"}var j=new s({alg:u,pass:B});j.updateString(c);o=j.doFinal();return A==o}else{if(u.indexOf(\"withECDSA\")!=-1){var h=null;try{h=p.concatSigToASN1Sig(A)}catch(v){return false}var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(h)}else{var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(A)}}}};KJUR.jws.JWS.parse=function(g){var c=g.split(\".\");var b={};var f,e,d;if(c.length!=2&&c.length!=3){throw\"malformed sJWS: wrong number of '.' splitted elements\"}f=c[0];e=c[1];if(c.length==3){d=c[2]}b.headerObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(f));b.payloadObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(e));b.headerPP=JSON.stringify(b.headerObj,null,\" \");if(b.payloadObj==null){b.payloadPP=b64utoutf8(e)}else{b.payloadPP=JSON.stringify(b.payloadObj,null,\" \")}if(d!==undefined){b.sigHex=b64utohex(d)}return b};KJUR.jws.JWS.verifyJWT=function(e,l,r){var d=KJUR,j=d.jws,o=j.JWS,n=o.readSafeJSONString,p=o.inArray,f=o.includedArray;var k=e.split(\".\");var c=k[0];var i=k[1];var q=c+\".\"+i;var m=b64utohex(k[2]);var h=n(b64utoutf8(c));var g=n(b64utoutf8(i));if(h.alg===undefined){return false}if(r.alg===undefined){throw\"acceptField.alg shall be specified\"}if(!p(h.alg,r.alg)){return false}if(g.iss!==undefined&&typeof r.iss===\"object\"){if(!p(g.iss,r.iss)){return false}}if(g.sub!==undefined&&typeof r.sub===\"object\"){if(!p(g.sub,r.sub)){return false}}if(g.aud!==undefined&&typeof r.aud===\"object\"){if(typeof g.aud==\"string\"){if(!p(g.aud,r.aud)){return false}}else{if(typeof g.aud==\"object\"){if(!f(g.aud,r.aud)){return false}}}}var b=j.IntDate.getNow();if(r.verifyAt!==undefined&&typeof r.verifyAt===\"number\"){b=r.verifyAt}if(r.gracePeriod===undefined||typeof r.gracePeriod!==\"number\"){r.gracePeriod=0}if(g.exp!==undefined&&typeof g.exp==\"number\"){if(g.exp+r.gracePeriod<b){return false}}if(g.nbf!==undefined&&typeof g.nbf==\"number\"){if(b<g.nbf-r.gracePeriod){return false}}if(g.iat!==undefined&&typeof g.iat==\"number\"){if(b<g.iat-r.gracePeriod){return false}}if(g.jti!==undefined&&r.jti!==undefined){if(g.jti!==r.jti){return false}}if(!o.verify(e,l,r.alg)){return false}return true};KJUR.jws.JWS.includedArray=function(b,a){var c=KJUR.jws.JWS.inArray;if(b===null){return false}if(typeof b!==\"object\"){return false}if(typeof b.length!==\"number\"){return false}for(var d=0;d<b.length;d++){if(!c(b[d],a)){return false}}return true};KJUR.jws.JWS.inArray=function(d,b){if(b===null){return false}if(typeof b!==\"object\"){return false}if(typeof b.length!==\"number\"){return false}for(var c=0;c<b.length;c++){if(b[c]==d){return true}}return false};KJUR.jws.JWS.jwsalg2sigalg={HS256:\"HmacSHA256\",HS384:\"HmacSHA384\",HS512:\"HmacSHA512\",RS256:\"SHA256withRSA\",RS384:\"SHA384withRSA\",RS512:\"SHA512withRSA\",ES256:\"SHA256withECDSA\",ES384:\"SHA384withECDSA\",PS256:\"SHA256withRSAandMGF1\",PS384:\"SHA384withRSAandMGF1\",PS512:\"SHA512withRSAandMGF1\",none:\"none\",};KJUR.jws.JWS.isSafeJSONString=function(c,b,d){var e=null;try{e=jsonParse(c);if(typeof e!=\"object\"){return 0}if(e.constructor===Array){return 0}if(b){b[d]=e}return 1}catch(a){return 0}};KJUR.jws.JWS.readSafeJSONString=function(b){var c=null;try{c=jsonParse(b);if(typeof c!=\"object\"){return null}if(c.constructor===Array){return null}return c}catch(a){return null}};KJUR.jws.JWS.getEncodedSignatureValueFromJWS=function(b){var a=b.match(/^[^.]+\\.[^.]+\\.([^.]+)$/);if(a==null){throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\"}return a[1]};KJUR.jws.JWS.getJWKthumbprint=function(d){if(d.kty!==\"RSA\"&&d.kty!==\"EC\"&&d.kty!==\"oct\"){throw\"unsupported algorithm for JWK Thumprint\"}var a=\"{\";if(d.kty===\"RSA\"){if(typeof d.n!=\"string\"||typeof d.e!=\"string\"){throw\"wrong n and e value for RSA key\"}a+='\"e\":\"'+d.e+'\",';a+='\"kty\":\"'+d.kty+'\",';a+='\"n\":\"'+d.n+'\"}'}else{if(d.kty===\"EC\"){if(typeof d.crv!=\"string\"||typeof d.x!=\"string\"||typeof d.y!=\"string\"){throw\"wrong crv, x and y value for EC key\"}a+='\"crv\":\"'+d.crv+'\",';a+='\"kty\":\"'+d.kty+'\",';a+='\"x\":\"'+d.x+'\",';a+='\"y\":\"'+d.y+'\"}'}else{if(d.kty===\"oct\"){if(typeof d.k!=\"string\"){throw\"wrong k value for oct(symmetric) key\"}a+='\"kty\":\"'+d.kty+'\",';a+='\"k\":\"'+d.k+'\"}'}}}var b=rstrtohex(a);var c=KJUR.crypto.Util.hashHex(b,\"sha256\");var e=hextob64u(c);return e};KJUR.jws.IntDate={};KJUR.jws.IntDate.get=function(c){var b=KJUR.jws.IntDate,d=b.getNow,a=b.getZulu;if(c==\"now\"){return d()}else{if(c==\"now + 1hour\"){return d()+60*60}else{if(c==\"now + 1day\"){return d()+60*60*24}else{if(c==\"now + 1month\"){return d()+60*60*24*30}else{if(c==\"now + 1year\"){return d()+60*60*24*365}else{if(c.match(/Z$/)){return a(c)}else{if(c.match(/^[0-9]+$/)){return parseInt(c)}}}}}}}throw\"unsupported format: \"+c};KJUR.jws.IntDate.getZulu=function(a){return zulutosec(a)};KJUR.jws.IntDate.getNow=function(){var a=~~(new Date()/1000);return a};KJUR.jws.IntDate.intDate2UTCString=function(a){var b=new Date(a*1000);return b.toUTCString()};KJUR.jws.IntDate.intDate2Zulu=function(e){var i=new Date(e*1000),h=(\"0000\"+i.getUTCFullYear()).slice(-4),g=(\"00\"+(i.getUTCMonth()+1)).slice(-2),b=(\"00\"+i.getUTCDate()).slice(-2),a=(\"00\"+i.getUTCHours()).slice(-2),c=(\"00\"+i.getUTCMinutes()).slice(-2),f=(\"00\"+i.getUTCSeconds()).slice(-2);return h+g+b+a+c+f+\"Z\"};exports.SecureRandom = SecureRandom;exports.rng_seed_time = rng_seed_time;exports.BigInteger = BigInteger;exports.RSAKey = RSAKey;exports.ECDSA = KJUR.crypto.ECDSA;exports.DSA = KJUR.crypto.DSA;exports.Signature = KJUR.crypto.Signature;exports.MessageDigest = KJUR.crypto.MessageDigest;exports.Mac = KJUR.crypto.Mac;exports.Cipher = KJUR.crypto.Cipher;exports.KEYUTIL = KEYUTIL;exports.ASN1HEX = ASN1HEX;exports.X509 = X509;exports.CryptoJS = CryptoJS;exports.b64tohex = b64tohex;exports.b64toBA = b64toBA;exports.ECFieldElementFp = ECFieldElementFp;exports.ECPointFp = ECPointFp;exports.ECCurveFp = ECCurveFp;exports.stoBA = stoBA;exports.BAtos = BAtos;exports.BAtohex = BAtohex;exports.stohex = stohex;exports.stob64 = stob64;exports.stob64u = stob64u;exports.b64utos = b64utos;exports.b64tob64u = b64tob64u;exports.b64utob64 = b64utob64;exports.hex2b64 = hex2b64;exports.hextob64u = hextob64u;exports.b64utohex = b64utohex;exports.utf8tob64u = utf8tob64u;exports.b64utoutf8 = b64utoutf8;exports.utf8tob64 = utf8tob64;exports.b64toutf8 = b64toutf8;exports.utf8tohex = utf8tohex;exports.hextoutf8 = hextoutf8;exports.hextorstr = hextorstr;exports.rstrtohex = rstrtohex;exports.hextob64 = hextob64;exports.hextob64nl = hextob64nl;exports.b64nltohex = b64nltohex;exports.hextopem = hextopem;exports.pemtohex = pemtohex;exports.hextoArrayBuffer = hextoArrayBuffer;exports.ArrayBuffertohex = ArrayBuffertohex;exports.zulutomsec = zulutomsec;exports.zulutosec = zulutosec;exports.zulutodate = zulutodate;exports.datetozulu = datetozulu;exports.uricmptohex = uricmptohex;exports.hextouricmp = hextouricmp;exports.ipv6tohex = ipv6tohex;exports.hextoipv6 = hextoipv6;exports.hextoip = hextoip;exports.iptohex = iptohex;exports.encodeURIComponentAll = encodeURIComponentAll;exports.newline_toUnix = newline_toUnix;exports.newline_toDos = newline_toDos;exports.hextoposhex = hextoposhex;exports.intarystrtohex = intarystrtohex;exports.strdiffidx = strdiffidx;exports.KJUR = KJUR;exports.crypto = KJUR.crypto;exports.asn1 = KJUR.asn1;exports.jws = KJUR.jws;exports.lang = KJUR.lang;","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","/*!\n * Masonry v4.2.2\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'outlayer/outlayer',\n 'get-size/get-size'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('outlayer'),\n require('get-size')\n );\n } else {\n // browser global\n window.Masonry = factory(\n window.Outlayer,\n window.getSize\n );\n }\n\n}( window, function factory( Outlayer, getSize ) {\n\n'use strict';\n\n// -------------------------- masonryDefinition -------------------------- //\n\n // create an Outlayer layout class\n var Masonry = Outlayer.create('masonry');\n // isFitWidth -> fitWidth\n Masonry.compatOptions.fitWidth = 'isFitWidth';\n\n var proto = Masonry.prototype;\n\n proto._resetLayout = function() {\n this.getSize();\n this._getMeasurement( 'columnWidth', 'outerWidth' );\n this._getMeasurement( 'gutter', 'outerWidth' );\n this.measureColumns();\n\n // reset column Y\n this.colYs = [];\n for ( var i=0; i < this.cols; i++ ) {\n this.colYs.push( 0 );\n }\n\n this.maxY = 0;\n this.horizontalColIndex = 0;\n };\n\n proto.measureColumns = function() {\n this.getContainerWidth();\n // if columnWidth is 0, default to outerWidth of first item\n if ( !this.columnWidth ) {\n var firstItem = this.items[0];\n var firstItemElem = firstItem && firstItem.element;\n // columnWidth fall back to item of first element\n this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth ||\n // if first elem has no width, default to size of container\n this.containerWidth;\n }\n\n var columnWidth = this.columnWidth += this.gutter;\n\n // calculate columns\n var containerWidth = this.containerWidth + this.gutter;\n var cols = containerWidth / columnWidth;\n // fix rounding errors, typically with gutters\n var excess = columnWidth - containerWidth % columnWidth;\n // if overshoot is less than a pixel, round up, otherwise floor it\n var mathMethod = excess && excess < 1 ? 'round' : 'floor';\n cols = Math[ mathMethod ]( cols );\n this.cols = Math.max( cols, 1 );\n };\n\n proto.getContainerWidth = function() {\n // container is parent if fit width\n var isFitWidth = this._getOption('fitWidth');\n var container = isFitWidth ? this.element.parentNode : this.element;\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var size = getSize( container );\n this.containerWidth = size && size.innerWidth;\n };\n\n proto._getItemLayoutPosition = function( item ) {\n item.getSize();\n // how many columns does this brick span\n var remainder = item.size.outerWidth % this.columnWidth;\n var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';\n // round if off by 1 pixel, otherwise use ceil\n var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );\n colSpan = Math.min( colSpan, this.cols );\n // use horizontal or top column position\n var colPosMethod = this.options.horizontalOrder ?\n '_getHorizontalColPosition' : '_getTopColPosition';\n var colPosition = this[ colPosMethod ]( colSpan, item );\n // position the brick\n var position = {\n x: this.columnWidth * colPosition.col,\n y: colPosition.y\n };\n // apply setHeight to necessary columns\n var setHeight = colPosition.y + item.size.outerHeight;\n var setMax = colSpan + colPosition.col;\n for ( var i = colPosition.col; i < setMax; i++ ) {\n this.colYs[i] = setHeight;\n }\n\n return position;\n };\n\n proto._getTopColPosition = function( colSpan ) {\n var colGroup = this._getTopColGroup( colSpan );\n // get the minimum Y value from the columns\n var minimumY = Math.min.apply( Math, colGroup );\n\n return {\n col: colGroup.indexOf( minimumY ),\n y: minimumY,\n };\n };\n\n /**\n * @param {Number} colSpan - number of columns the element spans\n * @returns {Array} colGroup\n */\n proto._getTopColGroup = function( colSpan ) {\n if ( colSpan < 2 ) {\n // if brick spans only one column, use all the column Ys\n return this.colYs;\n }\n\n var colGroup = [];\n // how many different places could this brick fit horizontally\n var groupCount = this.cols + 1 - colSpan;\n // for each group potential horizontal position\n for ( var i = 0; i < groupCount; i++ ) {\n colGroup[i] = this._getColGroupY( i, colSpan );\n }\n return colGroup;\n };\n\n proto._getColGroupY = function( col, colSpan ) {\n if ( colSpan < 2 ) {\n return this.colYs[ col ];\n }\n // make an array of colY values for that one group\n var groupColYs = this.colYs.slice( col, col + colSpan );\n // and get the max value of the array\n return Math.max.apply( Math, groupColYs );\n };\n\n // get column position based on horizontal index. #873\n proto._getHorizontalColPosition = function( colSpan, item ) {\n var col = this.horizontalColIndex % this.cols;\n var isOver = colSpan > 1 && col + colSpan > this.cols;\n // shift to next row if item can't fit on current row\n col = isOver ? 0 : col;\n // don't let zero-size items take up space\n var hasSize = item.size.outerWidth && item.size.outerHeight;\n this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;\n\n return {\n col: col,\n y: this._getColGroupY( col, colSpan ),\n };\n };\n\n proto._manageStamp = function( stamp ) {\n var stampSize = getSize( stamp );\n var offset = this._getElementOffset( stamp );\n // get the columns that this stamp affects\n var isOriginLeft = this._getOption('originLeft');\n var firstX = isOriginLeft ? offset.left : offset.right;\n var lastX = firstX + stampSize.outerWidth;\n var firstCol = Math.floor( firstX / this.columnWidth );\n firstCol = Math.max( 0, firstCol );\n var lastCol = Math.floor( lastX / this.columnWidth );\n // lastCol should not go over if multiple of columnWidth #425\n lastCol -= lastX % this.columnWidth ? 0 : 1;\n lastCol = Math.min( this.cols - 1, lastCol );\n // set colYs to bottom of the stamp\n\n var isOriginTop = this._getOption('originTop');\n var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) +\n stampSize.outerHeight;\n for ( var i = firstCol; i <= lastCol; i++ ) {\n this.colYs[i] = Math.max( stampMaxY, this.colYs[i] );\n }\n };\n\n proto._getContainerSize = function() {\n this.maxY = Math.max.apply( Math, this.colYs );\n var size = {\n height: this.maxY\n };\n\n if ( this._getOption('fitWidth') ) {\n size.width = this._getContainerFitWidth();\n }\n\n return size;\n };\n\n proto._getContainerFitWidth = function() {\n var unusedCols = 0;\n // count unused columns\n var i = this.cols;\n while ( --i ) {\n if ( this.colYs[i] !== 0 ) {\n break;\n }\n unusedCols++;\n }\n // fit container to columns that have been used\n return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;\n };\n\n proto.needsResizeLayout = function() {\n var previousWidth = this.containerWidth;\n this.getContainerWidth();\n return previousWidth != this.containerWidth;\n };\n\n return Masonry;\n\n}));\n","'use strict';\n\nvar Config = {\n DEBUG: false,\n LIB_VERSION: '2.53.0'\n};\n\n/* eslint camelcase: \"off\", eqeqeq: \"off\" */\n\n// since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\nvar win;\nif (typeof(window) === 'undefined') {\n var loc = {\n hostname: ''\n };\n win = {\n navigator: { userAgent: '' },\n document: {\n location: loc,\n referrer: ''\n },\n screen: { width: 0, height: 0 },\n location: loc\n };\n} else {\n win = window;\n}\n\n// Maximum allowed session recording length\nvar MAX_RECORDING_MS = 24 * 60 * 60 * 1000; // 24 hours\n\n/*\n * Saved references to long variable names, so that closure compiler can\n * minimize file size.\n */\n\nvar ArrayProto = Array.prototype,\n FuncProto = Function.prototype,\n ObjProto = Object.prototype,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty,\n windowConsole = win.console,\n navigator = win.navigator,\n document$1 = win.document,\n windowOpera = win.opera,\n screen = win.screen,\n userAgent = navigator.userAgent;\n\nvar nativeBind = FuncProto.bind,\n nativeForEach = ArrayProto.forEach,\n nativeIndexOf = ArrayProto.indexOf,\n nativeMap = ArrayProto.map,\n nativeIsArray = Array.isArray,\n breaker = {};\n\nvar _ = {\n trim: function(str) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n};\n\n// Console override\nvar console = {\n /** @type {function(...*)} */\n log: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n try {\n windowConsole.log.apply(windowConsole, arguments);\n } catch (err) {\n _.each(arguments, function(arg) {\n windowConsole.log(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n warn: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel warning:'].concat(_.toArray(arguments));\n try {\n windowConsole.warn.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.warn(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n error: function() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.error(arg);\n });\n }\n }\n },\n /** @type {function(...*)} */\n critical: function() {\n if (!_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function(arg) {\n windowConsole.error(arg);\n });\n }\n }\n }\n};\n\nvar log_func_with_prefix = function(func, prefix) {\n return function() {\n arguments[0] = '[' + prefix + '] ' + arguments[0];\n return func.apply(console, arguments);\n };\n};\nvar console_with_prefix = function(prefix) {\n return {\n log: log_func_with_prefix(console.log, prefix),\n error: log_func_with_prefix(console.error, prefix),\n critical: log_func_with_prefix(console.critical, prefix)\n };\n};\n\n\n// UNDERSCORE\n// Embed part of the Underscore Library\n_.bind = function(func, context) {\n var args, bound;\n if (nativeBind && func.bind === nativeBind) {\n return nativeBind.apply(func, slice.call(arguments, 1));\n }\n if (!_.isFunction(func)) {\n throw new TypeError();\n }\n args = slice.call(arguments, 2);\n bound = function() {\n if (!(this instanceof bound)) {\n return func.apply(context, args.concat(slice.call(arguments)));\n }\n var ctor = {};\n ctor.prototype = func.prototype;\n var self = new ctor();\n ctor.prototype = null;\n var result = func.apply(self, args.concat(slice.call(arguments)));\n if (Object(result) === result) {\n return result;\n }\n return self;\n };\n return bound;\n};\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} context\n */\n_.each = function(obj, iterator, context) {\n if (obj === null || obj === undefined) {\n return;\n }\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) {\n return;\n }\n }\n } else {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(context, obj[key], key, obj) === breaker) {\n return;\n }\n }\n }\n }\n};\n\n_.extend = function(obj) {\n _.each(slice.call(arguments, 1), function(source) {\n for (var prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop];\n }\n }\n });\n return obj;\n};\n\n_.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n};\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// var bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\n_.isFunction = function(f) {\n try {\n return /^\\s*\\bfunction\\b/.test(f);\n } catch (x) {\n return false;\n }\n};\n\n_.isArguments = function(obj) {\n return !!(obj && hasOwnProperty.call(obj, 'callee'));\n};\n\n_.toArray = function(iterable) {\n if (!iterable) {\n return [];\n }\n if (iterable.toArray) {\n return iterable.toArray();\n }\n if (_.isArray(iterable)) {\n return slice.call(iterable);\n }\n if (_.isArguments(iterable)) {\n return slice.call(iterable);\n }\n return _.values(iterable);\n};\n\n_.map = function(arr, callback, context) {\n if (nativeMap && arr.map === nativeMap) {\n return arr.map(callback, context);\n } else {\n var results = [];\n _.each(arr, function(item) {\n results.push(callback.call(context, item));\n });\n return results;\n }\n};\n\n_.keys = function(obj) {\n var results = [];\n if (obj === null) {\n return results;\n }\n _.each(obj, function(value, key) {\n results[results.length] = key;\n });\n return results;\n};\n\n_.values = function(obj) {\n var results = [];\n if (obj === null) {\n return results;\n }\n _.each(obj, function(value) {\n results[results.length] = value;\n });\n return results;\n};\n\n_.include = function(obj, target) {\n var found = false;\n if (obj === null) {\n return found;\n }\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1;\n }\n _.each(obj, function(value) {\n if (found || (found = (value === target))) {\n return breaker;\n }\n });\n return found;\n};\n\n_.includes = function(str, needle) {\n return str.indexOf(needle) !== -1;\n};\n\n// Underscore Addons\n_.inherit = function(subclass, superclass) {\n subclass.prototype = new superclass();\n subclass.prototype.constructor = subclass;\n subclass.superclass = superclass.prototype;\n return subclass;\n};\n\n_.isObject = function(obj) {\n return (obj === Object(obj) && !_.isArray(obj));\n};\n\n_.isEmptyObject = function(obj) {\n if (_.isObject(obj)) {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n }\n return false;\n};\n\n_.isUndefined = function(obj) {\n return obj === void 0;\n};\n\n_.isString = function(obj) {\n return toString.call(obj) == '[object String]';\n};\n\n_.isDate = function(obj) {\n return toString.call(obj) == '[object Date]';\n};\n\n_.isNumber = function(obj) {\n return toString.call(obj) == '[object Number]';\n};\n\n_.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n};\n\n_.encodeDates = function(obj) {\n _.each(obj, function(v, k) {\n if (_.isDate(v)) {\n obj[k] = _.formatDate(v);\n } else if (_.isObject(v)) {\n obj[k] = _.encodeDates(v); // recurse\n }\n });\n return obj;\n};\n\n_.timestamp = function() {\n Date.now = Date.now || function() {\n return +new Date;\n };\n return Date.now();\n};\n\n_.formatDate = function(d) {\n // YYYY-MM-DDTHH:MM:SS in UTC\n function pad(n) {\n return n < 10 ? '0' + n : n;\n }\n return d.getUTCFullYear() + '-' +\n pad(d.getUTCMonth() + 1) + '-' +\n pad(d.getUTCDate()) + 'T' +\n pad(d.getUTCHours()) + ':' +\n pad(d.getUTCMinutes()) + ':' +\n pad(d.getUTCSeconds());\n};\n\n_.strip_empty_properties = function(p) {\n var ret = {};\n _.each(p, function(v, k) {\n if (_.isString(v) && v.length > 0) {\n ret[k] = v;\n }\n });\n return ret;\n};\n\n/*\n * this function returns a copy of object after truncating it. If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n_.truncate = function(obj, length) {\n var ret;\n\n if (typeof(obj) === 'string') {\n ret = obj.slice(0, length);\n } else if (_.isArray(obj)) {\n ret = [];\n _.each(obj, function(val) {\n ret.push(_.truncate(val, length));\n });\n } else if (_.isObject(obj)) {\n ret = {};\n _.each(obj, function(val, key) {\n ret[key] = _.truncate(val, length);\n });\n } else {\n ret = obj;\n }\n\n return ret;\n};\n\n_.JSONEncode = (function() {\n return function(mixed_val) {\n var value = mixed_val;\n var quote = function(string) {\n var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n var meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n\n escapable.lastIndex = 0;\n return escapable.test(string) ?\n '\"' + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' :\n '\"' + string + '\"';\n };\n\n var str = function(key, holder) {\n var gap = '';\n var indent = ' ';\n var i = 0; // The loop counter.\n var k = ''; // The member key.\n var v = ''; // The member value.\n var length = 0;\n var mind = gap;\n var partial = [];\n var value = holder[key];\n\n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n\n return String(value);\n\n case 'object':\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null';\n }\n\n // Make an array to hold the partial results of stringifying this object value.\n gap += indent;\n partial = [];\n\n // Is the value an array?\n if (toString.apply(value) === '[object Array]') {\n // The value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n // Join all of the elements together, separated with commas, and wrap them in\n // brackets.\n v = partial.length === 0 ? '[]' :\n gap ? '[\\n' + gap +\n partial.join(',\\n' + gap) + '\\n' +\n mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n // Iterate through all of the keys in the object.\n for (k in value) {\n if (hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n\n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n v = partial.length === 0 ? '{}' :\n gap ? '{' + partial.join(',') + '' +\n mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n };\n\n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {\n '': value\n });\n };\n})();\n\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n_.JSONDecode = (function() {\n var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t'\n },\n text,\n error = function(m) {\n var e = new SyntaxError(m);\n e.at = at;\n e.text = text;\n throw e;\n },\n next = function(c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n }\n // Get the next character. When there are no more characters,\n // return the empty string.\n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n number = function() {\n // Parse a number value.\n var number,\n string = '';\n\n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error('Bad number');\n } else {\n return number;\n }\n },\n\n string = function() {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n }\n if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error('Bad string');\n },\n white = function() {\n // Skip whitespace.\n while (ch && ch <= ' ') {\n next();\n }\n },\n word = function() {\n // true, false, or null.\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error('Unexpected \"' + ch + '\"');\n },\n value, // Placeholder for the value function.\n array = function() {\n // Parse an array value.\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error('Bad array');\n },\n object = function() {\n // Parse an object value.\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error('Bad object');\n };\n\n value = function() {\n // Parse a JSON value. It could be an object, an array, a string,\n // a number, or a word.\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n };\n\n // Return the json_parse function. It will have access to all of the\n // above functions and variables.\n return function(source) {\n var result;\n\n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error('Syntax error');\n }\n\n return result;\n };\n})();\n\n_.base64Encode = function(data) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = '',\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data = _.utf8Encode(data);\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n};\n\n_.utf8Encode = function(string) {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n var utftext = '',\n start,\n end;\n var stringl = 0,\n n;\n\n start = end = 0;\n stringl = string.length;\n\n for (n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n\n if (c1 < 128) {\n end++;\n } else if ((c1 > 127) && (c1 < 2048)) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n }\n if (enc !== null) {\n if (end > start) {\n utftext += string.substring(start, end);\n }\n utftext += enc;\n start = end = n + 1;\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length);\n }\n\n return utftext;\n};\n\n_.UUID = (function() {\n\n // Time-based entropy\n var T = function() {\n var time = 1 * new Date(); // cross-browser version of Date.now()\n var ticks;\n if (win.performance && win.performance.now) {\n ticks = win.performance.now();\n } else {\n // fall back to busy loop\n ticks = 0;\n\n // this while loop figures how many browser ticks go by\n // before 1*new Date() returns a new number, ie the amount\n // of ticks that go by per millisecond\n while (time == 1 * new Date()) {\n ticks++;\n }\n }\n return time.toString(16) + Math.floor(ticks).toString(16);\n };\n\n // Math.Random entropy\n var R = function() {\n return Math.random().toString(16).replace('.', '');\n };\n\n // User agent entropy\n // This function takes the user agent string, and then xors\n // together each sequence of 8 bytes. This produces a final\n // sequence of 8 bytes which it returns as hex.\n var UA = function() {\n var ua = userAgent,\n i, ch, buffer = [],\n ret = 0;\n\n function xor(result, byte_array) {\n var j, tmp = 0;\n for (j = 0; j < byte_array.length; j++) {\n tmp |= (buffer[j] << j * 8);\n }\n return result ^ tmp;\n }\n\n for (i = 0; i < ua.length; i++) {\n ch = ua.charCodeAt(i);\n buffer.unshift(ch & 0xFF);\n if (buffer.length >= 4) {\n ret = xor(ret, buffer);\n buffer = [];\n }\n }\n\n if (buffer.length > 0) {\n ret = xor(ret, buffer);\n }\n\n return ret.toString(16);\n };\n\n return function() {\n var se = (screen.height * screen.width).toString(16);\n return (T() + '-' + R() + '-' + UA() + '-' + se + '-' + T());\n };\n})();\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\nvar BLOCKED_UA_STRS = [\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'chrome-lighthouse',\n 'facebookexternal',\n 'petalbot',\n 'pinterest',\n 'screaming frog',\n 'yahoo! slurp',\n 'yandexbot',\n\n // a whole bunch of goog-specific crawlers\n // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google'\n];\n_.isBlockedUA = function(ua) {\n var i;\n ua = ua.toLowerCase();\n for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n_.HTTPBuildQuery = function(formdata, arg_separator) {\n var use_val, use_key, tmp_arr = [];\n\n if (_.isUndefined(arg_separator)) {\n arg_separator = '&';\n }\n\n _.each(formdata, function(val, key) {\n use_val = encodeURIComponent(val.toString());\n use_key = encodeURIComponent(key);\n tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n });\n\n return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function(url, param) {\n // Expects a raw URL\n\n param = param.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n regex = new RegExp(regexS),\n results = regex.exec(url);\n if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {\n return '';\n } else {\n var result = results[1];\n try {\n result = decodeURIComponent(result);\n } catch(err) {\n console.error('Skipping decoding for malformed query param: ' + result);\n }\n return result.replace(/\\+/g, ' ');\n }\n};\n\n\n// _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n_.cookie = {\n get: function(name) {\n var nameEQ = name + '=';\n var ca = document$1.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n },\n\n parse: function(name) {\n var cookie;\n try {\n cookie = _.JSONDecode(_.cookie.get(name)) || {};\n } catch (err) {\n // noop\n }\n return cookie;\n },\n\n set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (seconds) {\n var date = new Date();\n date.setTime(date.getTime() + (seconds * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n document$1.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n },\n\n set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '', expires = '', secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n document$1.cookie = new_cookie_val;\n return new_cookie_val;\n },\n\n remove: function(name, is_cross_subdomain, domain_override) {\n _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n }\n};\n\nvar _localStorageSupported = null;\nvar localStorageSupported = function(storage, forceCheck) {\n if (_localStorageSupported !== null && !forceCheck) {\n return _localStorageSupported;\n }\n\n var supported = true;\n try {\n storage = storage || window.localStorage;\n var key = '__mplss_' + cheap_guid(8),\n val = 'xyz';\n storage.setItem(key, val);\n if (storage.getItem(key) !== val) {\n supported = false;\n }\n storage.removeItem(key);\n } catch (err) {\n supported = false;\n }\n\n _localStorageSupported = supported;\n return supported;\n};\n\n// _.localStorage\n_.localStorage = {\n is_supported: function(force_check) {\n var supported = localStorageSupported(null, force_check);\n if (!supported) {\n console.error('localStorage unsupported; falling back to cookie store');\n }\n return supported;\n },\n\n error: function(msg) {\n console.error('localStorage error: ' + msg);\n },\n\n get: function(name) {\n try {\n return window.localStorage.getItem(name);\n } catch (err) {\n _.localStorage.error(err);\n }\n return null;\n },\n\n parse: function(name) {\n try {\n return _.JSONDecode(_.localStorage.get(name)) || {};\n } catch (err) {\n // noop\n }\n return null;\n },\n\n set: function(name, value) {\n try {\n window.localStorage.setItem(name, value);\n } catch (err) {\n _.localStorage.error(err);\n }\n },\n\n remove: function(name) {\n try {\n window.localStorage.removeItem(name);\n } catch (err) {\n _.localStorage.error(err);\n }\n }\n};\n\n_.register_event = (function() {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from Mixpanel\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n var register_event = function(element, type, handler, oldSchool, useCapture) {\n if (!element) {\n console.error('No valid element provided to register_event');\n return;\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture);\n } else {\n var ontype = 'on' + type;\n var old_handler = element[ontype]; // can be undefined\n element[ontype] = makeHandler(element, handler, old_handler);\n }\n };\n\n function makeHandler(element, new_handler, old_handlers) {\n var handler = function(event) {\n event = event || fixEvent(window.event);\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined;\n }\n\n var ret = true;\n var old_result, new_result;\n\n if (_.isFunction(old_handlers)) {\n old_result = old_handlers(event);\n }\n new_result = new_handler.call(element, event);\n\n if ((false === old_result) || (false === new_result)) {\n ret = false;\n }\n\n return ret;\n };\n\n return handler;\n }\n\n function fixEvent(event) {\n if (event) {\n event.preventDefault = fixEvent.preventDefault;\n event.stopPropagation = fixEvent.stopPropagation;\n }\n return event;\n }\n fixEvent.preventDefault = function() {\n this.returnValue = false;\n };\n fixEvent.stopPropagation = function() {\n this.cancelBubble = true;\n };\n\n return register_event;\n})();\n\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = (function() {\n /* document.getElementsBySelector(selector)\n - returns an array of element objects from the current document\n matching the CSS selector. Selectors can contain element names,\n class names and ids and can be nested. For example:\n\n elements = document.getElementsBySelector('div#main p a.external')\n\n Will return an array of all 'a' elements with 'external' in their\n class attribute that are contained inside 'p' elements that are\n contained inside the 'div' element which has id=\"main\"\n\n New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n Version 0.4 - Simon Willison, March 25th 2003\n -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n -- Opera 7 fails\n\n Version 0.5 - Carl Sverre, Jan 7th 2013\n -- Now uses jQuery-esque `hasClass` for testing class name\n equality. This fixes a bug related to '-' characters being\n considered not part of a 'word' in regex.\n */\n\n function getAllChildren(e) {\n // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n return e.all ? e.all : e.getElementsByTagName('*');\n }\n\n var bad_whitespace = /[\\t\\r\\n]/g;\n\n function hasClass(elem, selector) {\n var className = ' ' + selector + ' ';\n return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);\n }\n\n function getElementsBySelector(selector) {\n // Attempt to fail gracefully in lesser browsers\n if (!document$1.getElementsByTagName) {\n return [];\n }\n // Split selector in to tokens\n var tokens = selector.split(' ');\n var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n var currentContext = [document$1];\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n if (token.indexOf('#') > -1) {\n // Token is an ID selector\n bits = token.split('#');\n tagName = bits[0];\n var id = bits[1];\n var element = document$1.getElementById(id);\n if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n // element not found or tag with that ID not found, return false\n return [];\n }\n // Set currentContext to contain just this element\n currentContext = [element];\n continue; // Skip to next token\n }\n if (token.indexOf('.') > -1) {\n // Token contains a class selector\n bits = token.split('.');\n tagName = bits[0];\n var className = bits[1];\n if (!tagName) {\n tagName = '*';\n }\n // Get elements matching tag, filter them for class selector\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (found[j].className &&\n _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n hasClass(found[j], className)\n ) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n continue; // Skip to next token\n }\n // Code to deal with attribute selectors\n var token_match = token.match(TOKEN_MATCH_REGEX);\n if (token_match) {\n tagName = token_match[1];\n var attrName = token_match[2];\n var attrOperator = token_match[3];\n var attrValue = token_match[4];\n if (!tagName) {\n tagName = '*';\n }\n // Grab all of the tagName elements within current context\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n var checkFunction; // This function will be used to filter the elements\n switch (attrOperator) {\n case '=': // Equality\n checkFunction = function(e) {\n return (e.getAttribute(attrName) == attrValue);\n };\n break;\n case '~': // Match one of space seperated words\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b')));\n };\n break;\n case '|': // Match start with value followed by optional hyphen\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));\n };\n break;\n case '^': // Match starts with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) === 0);\n };\n break;\n case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n checkFunction = function(e) {\n return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);\n };\n break;\n case '*': // Match ends with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) > -1);\n };\n break;\n default:\n // Just test for existence of attribute\n checkFunction = function(e) {\n return e.getAttribute(attrName);\n };\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (checkFunction(found[j])) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n continue; // Skip to next token\n }\n // If we get here, token is JUST an element (not a class or ID selector)\n tagName = token;\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n elements = currentContext[j].getElementsByTagName(tagName);\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = found;\n }\n return currentContext;\n }\n\n return function(query) {\n if (_.isElement(query)) {\n return [query];\n } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n return query;\n } else {\n return getElementsBySelector.call(this, query);\n }\n };\n})();\n\nvar CAMPAIGN_KEYWORDS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];\nvar CLICK_IDS = ['dclid', 'fbclid', 'gclid', 'ko_click_id', 'li_fat_id', 'msclkid', 'ttclid', 'twclid', 'wbraid'];\n\n_.info = {\n campaignParams: function(default_value) {\n var kw = '',\n params = {};\n _.each(CAMPAIGN_KEYWORDS, function(kwkey) {\n kw = _.getQueryParam(document$1.URL, kwkey);\n if (kw.length) {\n params[kwkey] = kw;\n } else if (default_value !== undefined) {\n params[kwkey] = default_value;\n }\n });\n\n return params;\n },\n\n clickParams: function() {\n var id = '',\n params = {};\n _.each(CLICK_IDS, function(idkey) {\n id = _.getQueryParam(document$1.URL, idkey);\n if (id.length) {\n params[idkey] = id;\n }\n });\n\n return params;\n },\n\n marketingParams: function() {\n return _.extend(_.info.campaignParams(), _.info.clickParams());\n },\n\n searchEngine: function(referrer) {\n if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google';\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing';\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo';\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo';\n } else {\n return null;\n }\n },\n\n searchInfo: function(referrer) {\n var search = _.info.searchEngine(referrer),\n param = (search != 'yahoo') ? 'q' : 'p',\n ret = {};\n\n if (search !== null) {\n ret['$search_engine'] = search;\n\n var keyword = _.getQueryParam(referrer, param);\n if (keyword.length) {\n ret['mp_keyword'] = keyword;\n }\n }\n\n return ret;\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function(user_agent, vendor, opera) {\n vendor = vendor || ''; // vendor is undefined for at least IE9\n if (opera || _.includes(user_agent, ' OPR/')) {\n if (_.includes(user_agent, 'Mini')) {\n return 'Opera Mini';\n }\n return 'Opera';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile';\n } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet';\n } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge';\n } else if (_.includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile';\n } else if (_.includes(user_agent, 'Chrome')) {\n return 'Chrome';\n } else if (_.includes(user_agent, 'CriOS')) {\n return 'Chrome iOS';\n } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n return 'UC Browser';\n } else if (_.includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS';\n } else if (_.includes(vendor, 'Apple')) {\n if (_.includes(user_agent, 'Mobile')) {\n return 'Mobile Safari';\n }\n return 'Safari';\n } else if (_.includes(user_agent, 'Android')) {\n return 'Android Mobile';\n } else if (_.includes(user_agent, 'Konqueror')) {\n return 'Konqueror';\n } else if (_.includes(user_agent, 'Firefox')) {\n return 'Firefox';\n } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n return 'Internet Explorer';\n } else if (_.includes(user_agent, 'Gecko')) {\n return 'Mozilla';\n } else {\n return '';\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function(userAgent, vendor, opera) {\n var browser = _.info.browser(userAgent, vendor, opera);\n var versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n 'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser' : /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n 'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n 'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n 'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n 'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n 'Mozilla': /rv:(\\d+(\\.\\d+)?)/\n };\n var regex = versionRegexs[browser];\n if (regex === undefined) {\n return null;\n }\n var matches = userAgent.match(regex);\n if (!matches) {\n return null;\n }\n return parseFloat(matches[matches.length - 2]);\n },\n\n os: function() {\n var a = userAgent;\n if (/Windows/i.test(a)) {\n if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n return 'Windows Phone';\n }\n return 'Windows';\n } else if (/(iPhone|iPad|iPod)/.test(a)) {\n return 'iOS';\n } else if (/Android/.test(a)) {\n return 'Android';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n return 'BlackBerry';\n } else if (/Mac/i.test(a)) {\n return 'Mac OS X';\n } else if (/Linux/.test(a)) {\n return 'Linux';\n } else if (/CrOS/.test(a)) {\n return 'Chrome OS';\n } else {\n return '';\n }\n },\n\n device: function(user_agent) {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone';\n } else if (/iPad/.test(user_agent)) {\n return 'iPad';\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch';\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (/Android/.test(user_agent)) {\n return 'Android';\n } else {\n return '';\n }\n },\n\n referringDomain: function(referrer) {\n var split = referrer.split('/');\n if (split.length >= 3) {\n return split[2];\n }\n return '';\n },\n\n currentUrl: function() {\n return win.location.href;\n },\n\n properties: function(extra_props) {\n if (typeof extra_props !== 'object') {\n extra_props = {};\n }\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera),\n '$referrer': document$1.referrer,\n '$referring_domain': _.info.referringDomain(document$1.referrer),\n '$device': _.info.device(userAgent)\n }), {\n '$current_url': _.info.currentUrl(),\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera),\n '$screen_height': screen.height,\n '$screen_width': screen.width,\n 'mp_lib': 'web',\n '$lib_version': Config.LIB_VERSION,\n '$insert_id': cheap_guid(),\n 'time': _.timestamp() / 1000 // epoch time in seconds\n }, _.strip_empty_properties(extra_props));\n },\n\n people_properties: function() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera)\n }), {\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera)\n });\n },\n\n mpPageViewProperties: function() {\n return _.strip_empty_properties({\n 'current_page_title': document$1.title,\n 'current_domain': win.location.hostname,\n 'current_url_path': win.location.pathname,\n 'current_url_protocol': win.location.protocol,\n 'current_url_search': win.location.search\n });\n }\n};\n\nvar cheap_guid = function(maxlen) {\n var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n return maxlen ? guid.substring(0, maxlen) : guid;\n};\n\n// naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i;\n// this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\nvar extract_domain = function(hostname) {\n var domain_regex = DOMAIN_MATCH_REGEX;\n var parts = hostname.split('.');\n var tld = parts[parts.length - 1];\n if (tld.length > 4 || tld === 'com' || tld === 'org') {\n domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n }\n var matches = hostname.match(domain_regex);\n return matches ? matches[0] : '';\n};\n\nvar JSONStringify = null, JSONParse = null;\nif (typeof JSON !== 'undefined') {\n JSONStringify = JSON.stringify;\n JSONParse = JSON.parse;\n}\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode;\n\n// EXPORTS (for closure compiler)\n_['toArray'] = _.toArray;\n_['isObject'] = _.isObject;\n_['JSONEncode'] = _.JSONEncode;\n_['JSONDecode'] = _.JSONDecode;\n_['isBlockedUA'] = _.isBlockedUA;\n_['isEmptyObject'] = _.isEmptyObject;\n_['info'] = _.info;\n_['info']['device'] = _.info.device;\n_['info']['browser'] = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['properties'] = _.info.properties;\n\n/* eslint camelcase: \"off\" */\n\n/**\n * DomTracker Object\n * @constructor\n */\nvar DomTracker = function() {};\n\n\n// interface\nDomTracker.prototype.create_properties = function() {};\nDomTracker.prototype.event_handler = function() {};\nDomTracker.prototype.after_track_handler = function() {};\n\nDomTracker.prototype.init = function(mixpanel_instance) {\n this.mp = mixpanel_instance;\n return this;\n};\n\n/**\n * @param {Object|string} query\n * @param {string} event_name\n * @param {Object=} properties\n * @param {function=} user_callback\n */\nDomTracker.prototype.track = function(query, event_name, properties, user_callback) {\n var that = this;\n var elements = _.dom_query(query);\n\n if (elements.length === 0) {\n console.error('The DOM query (' + query + ') returned 0 elements');\n return;\n }\n\n _.each(elements, function(element) {\n _.register_event(element, this.override_event, function(e) {\n var options = {};\n var props = that.create_properties(properties, this);\n var timeout = that.mp.get_config('track_links_timeout');\n\n that.event_handler(e, this, options);\n\n // in case the mixpanel servers don't get back to us in time\n window.setTimeout(that.track_callback(user_callback, props, options, true), timeout);\n\n // fire the tracking event\n that.mp.track(event_name, props, that.track_callback(user_callback, props, options));\n });\n }, this);\n\n return true;\n};\n\n/**\n * @param {function} user_callback\n * @param {Object} props\n * @param {boolean=} timeout_occured\n */\nDomTracker.prototype.track_callback = function(user_callback, props, options, timeout_occured) {\n timeout_occured = timeout_occured || false;\n var that = this;\n\n return function() {\n // options is referenced from both callbacks, so we can have\n // a 'lock' of sorts to ensure only one fires\n if (options.callback_fired) { return; }\n options.callback_fired = true;\n\n if (user_callback && user_callback(timeout_occured, props) === false) {\n // user can prevent the default functionality by\n // returning false from their callback\n return;\n }\n\n that.after_track_handler(props, options, timeout_occured);\n };\n};\n\nDomTracker.prototype.create_properties = function(properties, element) {\n var props;\n\n if (typeof(properties) === 'function') {\n props = properties(element);\n } else {\n props = _.extend({}, properties);\n }\n\n return props;\n};\n\n/**\n * LinkTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar LinkTracker = function() {\n this.override_event = 'click';\n};\n_.inherit(LinkTracker, DomTracker);\n\nLinkTracker.prototype.create_properties = function(properties, element) {\n var props = LinkTracker.superclass.create_properties.apply(this, arguments);\n\n if (element.href) { props['url'] = element.href; }\n\n return props;\n};\n\nLinkTracker.prototype.event_handler = function(evt, element, options) {\n options.new_tab = (\n evt.which === 2 ||\n evt.metaKey ||\n evt.ctrlKey ||\n element.target === '_blank'\n );\n options.href = element.href;\n\n if (!options.new_tab) {\n evt.preventDefault();\n }\n};\n\nLinkTracker.prototype.after_track_handler = function(props, options) {\n if (options.new_tab) { return; }\n\n setTimeout(function() {\n window.location = options.href;\n }, 0);\n};\n\n/**\n * FormTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar FormTracker = function() {\n this.override_event = 'submit';\n};\n_.inherit(FormTracker, DomTracker);\n\nFormTracker.prototype.event_handler = function(evt, element, options) {\n options.element = element;\n evt.preventDefault();\n};\n\nFormTracker.prototype.after_track_handler = function(props, options) {\n setTimeout(function() {\n options.element.submit();\n }, 0);\n};\n\nvar logger$2 = console_with_prefix('lock');\n\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n * console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\nvar SharedLock = function(key, options) {\n options = options || {};\n\n this.storageKey = key;\n this.storage = options.storage || window.localStorage;\n this.pollIntervalMS = options.pollIntervalMS || 100;\n this.timeoutMS = options.timeoutMS || 2000;\n};\n\n// pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\nSharedLock.prototype.withLock = function(lockedCB, errorCB, pid) {\n if (!pid && typeof errorCB !== 'function') {\n pid = errorCB;\n errorCB = null;\n }\n\n var i = pid || (new Date().getTime() + '|' + Math.random());\n var startTime = new Date().getTime();\n\n var key = this.storageKey;\n var pollIntervalMS = this.pollIntervalMS;\n var timeoutMS = this.timeoutMS;\n var storage = this.storage;\n\n var keyX = key + ':X';\n var keyY = key + ':Y';\n var keyZ = key + ':Z';\n\n var reportError = function(err) {\n errorCB && errorCB(err);\n };\n\n var delay = function(cb) {\n if (new Date().getTime() - startTime > timeoutMS) {\n logger$2.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n storage.removeItem(keyZ);\n storage.removeItem(keyY);\n loop();\n return;\n }\n setTimeout(function() {\n try {\n cb();\n } catch(err) {\n reportError(err);\n }\n }, pollIntervalMS * (Math.random() + 0.1));\n };\n\n var waitFor = function(predicate, cb) {\n if (predicate()) {\n cb();\n } else {\n delay(function() {\n waitFor(predicate, cb);\n });\n }\n };\n\n var getSetY = function() {\n var valY = storage.getItem(keyY);\n if (valY && valY !== i) { // if Y == i then this process already has the lock (useful for test cases)\n return false;\n } else {\n storage.setItem(keyY, i);\n if (storage.getItem(keyY) === i) {\n return true;\n } else {\n if (!localStorageSupported(storage, true)) {\n throw new Error('localStorage support dropped while acquiring lock');\n }\n return false;\n }\n }\n };\n\n var loop = function() {\n storage.setItem(keyX, i);\n\n waitFor(getSetY, function() {\n if (storage.getItem(keyX) === i) {\n criticalSection();\n return;\n }\n\n delay(function() {\n if (storage.getItem(keyY) !== i) {\n loop();\n return;\n }\n waitFor(function() {\n return !storage.getItem(keyZ);\n }, criticalSection);\n });\n });\n };\n\n var criticalSection = function() {\n storage.setItem(keyZ, '1');\n try {\n lockedCB();\n } finally {\n storage.removeItem(keyZ);\n if (storage.getItem(keyY) === i) {\n storage.removeItem(keyY);\n }\n if (storage.getItem(keyX) === i) {\n storage.removeItem(keyX);\n }\n }\n };\n\n try {\n if (localStorageSupported(storage, true)) {\n loop();\n } else {\n throw new Error('localStorage support check failed');\n }\n } catch(err) {\n reportError(err);\n }\n};\n\nvar logger$1 = console_with_prefix('batch');\n\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\nvar RequestQueue = function(storageKey, options) {\n options = options || {};\n this.storageKey = storageKey;\n this.storage = options.storage || window.localStorage;\n this.reportError = options.errorReporter || _.bind(logger$1.error, logger$1);\n this.lock = new SharedLock(storageKey, {storage: this.storage});\n\n this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n this.memQueue = [];\n};\n\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\nRequestQueue.prototype.enqueue = function(item, flushInterval, cb) {\n var queueEntry = {\n 'id': cheap_guid(),\n 'flushAfter': new Date().getTime() + flushInterval * 2,\n 'payload': item\n };\n\n this.lock.withLock(_.bind(function lockAcquired() {\n var succeeded;\n try {\n var storedQueue = this.readFromStorage();\n storedQueue.push(queueEntry);\n succeeded = this.saveToStorage(storedQueue);\n if (succeeded) {\n // only add to in-memory queue when storage succeeds\n this.memQueue.push(queueEntry);\n }\n } catch(err) {\n this.reportError('Error enqueueing item', item);\n succeeded = false;\n }\n if (cb) {\n cb(succeeded);\n }\n }, this), _.bind(function lockFailure(err) {\n this.reportError('Error acquiring storage lock', err);\n if (cb) {\n cb(false);\n }\n }, this), this.pid);\n};\n\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\nRequestQueue.prototype.fillBatch = function(batchSize) {\n var batch = this.memQueue.slice(0, batchSize);\n if (batch.length < batchSize) {\n // don't need lock just to read events; localStorage is thread-safe\n // and the worst that could happen is a duplicate send of some\n // orphaned events, which will be deduplicated on the server side\n var storedQueue = this.readFromStorage();\n if (storedQueue.length) {\n // item IDs already in batch; don't duplicate out of storage\n var idsInBatch = {}; // poor man's Set\n _.each(batch, function(item) { idsInBatch[item['id']] = true; });\n\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n item.orphaned = true;\n batch.push(item);\n if (batch.length >= batchSize) {\n break;\n }\n }\n }\n }\n }\n return batch;\n};\n\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\nvar filterOutIDsAndInvalid = function(items, idSet) {\n var filteredItems = [];\n _.each(items, function(item) {\n if (item['id'] && !idSet[item['id']]) {\n filteredItems.push(item);\n }\n });\n return filteredItems;\n};\n\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\nRequestQueue.prototype.removeItemsByID = function(ids, cb) {\n var idSet = {}; // poor man's Set\n _.each(ids, function(id) { idSet[id] = true; });\n\n this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n\n var removeFromStorage = _.bind(function() {\n var succeeded;\n try {\n var storedQueue = this.readFromStorage();\n storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n succeeded = this.saveToStorage(storedQueue);\n\n // an extra check: did storage report success but somehow\n // the items are still there?\n if (succeeded) {\n storedQueue = this.readFromStorage();\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (item['id'] && !!idSet[item['id']]) {\n this.reportError('Item not removed from storage');\n return false;\n }\n }\n }\n } catch(err) {\n this.reportError('Error removing items', ids);\n succeeded = false;\n }\n return succeeded;\n }, this);\n\n this.lock.withLock(function lockAcquired() {\n var succeeded = removeFromStorage();\n if (cb) {\n cb(succeeded);\n }\n }, _.bind(function lockFailure(err) {\n var succeeded = false;\n this.reportError('Error acquiring storage lock', err);\n if (!localStorageSupported(this.storage, true)) {\n // Looks like localStorage writes have stopped working sometime after\n // initialization (probably full), and so nobody can acquire locks\n // anymore. Consider it temporarily safe to remove items without the\n // lock, since nobody's writing successfully anyway.\n succeeded = removeFromStorage();\n if (!succeeded) {\n // OK, we couldn't even write out the smaller queue. Try clearing it\n // entirely.\n try {\n this.storage.removeItem(this.storageKey);\n } catch(err) {\n this.reportError('Error clearing queue', err);\n }\n }\n }\n if (cb) {\n cb(succeeded);\n }\n }, this), this.pid);\n};\n\n// internal helper for RequestQueue.updatePayloads\nvar updatePayloads = function(existingItems, itemsToUpdate) {\n var newItems = [];\n _.each(existingItems, function(item) {\n var id = item['id'];\n if (id in itemsToUpdate) {\n var newPayload = itemsToUpdate[id];\n if (newPayload !== null) {\n item['payload'] = newPayload;\n newItems.push(item);\n }\n } else {\n // no update\n newItems.push(item);\n }\n });\n return newItems;\n};\n\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\nRequestQueue.prototype.updatePayloads = function(itemsToUpdate, cb) {\n this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n this.lock.withLock(_.bind(function lockAcquired() {\n var succeeded;\n try {\n var storedQueue = this.readFromStorage();\n storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n succeeded = this.saveToStorage(storedQueue);\n } catch(err) {\n this.reportError('Error updating items', itemsToUpdate);\n succeeded = false;\n }\n if (cb) {\n cb(succeeded);\n }\n }, this), _.bind(function lockFailure(err) {\n this.reportError('Error acquiring storage lock', err);\n if (cb) {\n cb(false);\n }\n }, this), this.pid);\n};\n\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\nRequestQueue.prototype.readFromStorage = function() {\n var storageEntry;\n try {\n storageEntry = this.storage.getItem(this.storageKey);\n if (storageEntry) {\n storageEntry = JSONParse(storageEntry);\n if (!_.isArray(storageEntry)) {\n this.reportError('Invalid storage entry:', storageEntry);\n storageEntry = null;\n }\n }\n } catch (err) {\n this.reportError('Error retrieving queue', err);\n storageEntry = null;\n }\n return storageEntry || [];\n};\n\n/**\n * Serialize the given items array to localStorage.\n */\nRequestQueue.prototype.saveToStorage = function(queue) {\n try {\n this.storage.setItem(this.storageKey, JSONStringify(queue));\n return true;\n } catch (err) {\n this.reportError('Error saving queue', err);\n return false;\n }\n};\n\n/**\n * Clear out queues (memory and localStorage).\n */\nRequestQueue.prototype.clear = function() {\n this.memQueue = [];\n this.storage.removeItem(this.storageKey);\n};\n\n// maximum interval between request retries after exponential backoff\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger = console_with_prefix('batch');\n\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\nvar RequestBatcher = function(storageKey, options) {\n this.errorReporter = options.errorReporter;\n this.queue = new RequestQueue(storageKey, {\n errorReporter: _.bind(this.reportError, this),\n storage: options.storage\n });\n\n this.libConfig = options.libConfig;\n this.sendRequest = options.sendRequestFunc;\n this.beforeSendHook = options.beforeSendHook;\n this.stopAllBatching = options.stopAllBatchingFunc;\n\n // seed variable batch size + flush interval with configured values\n this.batchSize = this.libConfig['batch_size'];\n this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n\n this.stopped = !this.libConfig['batch_autostart'];\n this.consecutiveRemovalFailures = 0;\n\n // extra client-side dedupe\n this.itemIdsSentSuccessfully = {};\n};\n\n/**\n * Add one item to queue.\n */\nRequestBatcher.prototype.enqueue = function(item, cb) {\n this.queue.enqueue(item, this.flushInterval, cb);\n};\n\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\nRequestBatcher.prototype.start = function() {\n this.stopped = false;\n this.consecutiveRemovalFailures = 0;\n this.flush();\n};\n\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\nRequestBatcher.prototype.stop = function() {\n this.stopped = true;\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n this.timeoutID = null;\n }\n};\n\n/**\n * Clear out queue.\n */\nRequestBatcher.prototype.clear = function() {\n this.queue.clear();\n};\n\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetBatchSize = function() {\n this.batchSize = this.libConfig['batch_size'];\n};\n\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetFlush = function() {\n this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\nRequestBatcher.prototype.scheduleFlush = function(flushMS) {\n this.flushInterval = flushMS;\n if (!this.stopped) { // don't schedule anymore if batching has been stopped\n this.timeoutID = setTimeout(_.bind(this.flush, this), this.flushInterval);\n }\n};\n\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\nRequestBatcher.prototype.flush = function(options) {\n try {\n\n if (this.requestInProgress) {\n logger.log('Flush: Request already in progress');\n return;\n }\n\n options = options || {};\n var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n var startTime = new Date().getTime();\n var currentBatchSize = this.batchSize;\n var batch = this.queue.fillBatch(currentBatchSize);\n var dataForRequest = [];\n var transformedItems = {};\n _.each(batch, function(item) {\n var payload = item['payload'];\n if (this.beforeSendHook && !item.orphaned) {\n payload = this.beforeSendHook(payload);\n }\n if (payload) {\n // mp_sent_by_lib_version prop captures which lib version actually\n // sends each event (regardless of which version originally queued\n // it for sending)\n if (payload['event'] && payload['properties']) {\n payload['properties'] = _.extend(\n {},\n payload['properties'],\n {'mp_sent_by_lib_version': Config.LIB_VERSION}\n );\n }\n var addPayload = true;\n var itemId = item['id'];\n if (itemId) {\n if ((this.itemIdsSentSuccessfully[itemId] || 0) > 5) {\n this.reportError('[dupe] item ID sent too many times, not sending', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n addPayload = false;\n }\n } else {\n this.reportError('[dupe] found item with no ID', {item: item});\n }\n\n if (addPayload) {\n dataForRequest.push(payload);\n }\n }\n transformedItems[item['id']] = payload;\n }, this);\n if (dataForRequest.length < 1) {\n this.resetFlush();\n return; // nothing to do\n }\n\n this.requestInProgress = true;\n\n var batchSendCallback = _.bind(function(res) {\n this.requestInProgress = false;\n\n try {\n\n // handle API response in a try-catch to make sure we can reset the\n // flush operation if something goes wrong\n\n var removeItemsFromQueue = false;\n if (options.unloading) {\n // update persisted data to include hook transformations\n this.queue.updatePayloads(transformedItems);\n } else if (\n _.isObject(res) &&\n res.error === 'timeout' &&\n new Date().getTime() - startTime >= timeoutMS\n ) {\n this.reportError('Network timeout; retrying');\n this.flush();\n } else if (\n _.isObject(res) &&\n res.xhr_req &&\n (res.xhr_req['status'] >= 500 || res.xhr_req['status'] === 429 || res.error === 'timeout')\n ) {\n // network or API error, or 429 Too Many Requests, retry\n var retryMS = this.flushInterval * 2;\n var headers = res.xhr_req['responseHeaders'];\n if (headers) {\n var retryAfter = headers['Retry-After'];\n if (retryAfter) {\n retryMS = (parseInt(retryAfter, 10) * 1000) || retryMS;\n }\n }\n retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n this.reportError('Error; retry in ' + retryMS + ' ms');\n this.scheduleFlush(retryMS);\n } else if (_.isObject(res) && res.xhr_req && res.xhr_req['status'] === 413) {\n // 413 Payload Too Large\n if (batch.length > 1) {\n var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n this.reportError('413 response; reducing batch size to ' + this.batchSize);\n this.resetFlush();\n } else {\n this.reportError('Single-event request too large; dropping', batch);\n this.resetBatchSize();\n removeItemsFromQueue = true;\n }\n } else {\n // successful network request+response; remove each item in batch from queue\n // (even if it was e.g. a 400, in which case retrying won't help)\n removeItemsFromQueue = true;\n }\n\n if (removeItemsFromQueue) {\n this.queue.removeItemsByID(\n _.map(batch, function(item) { return item['id']; }),\n _.bind(function(succeeded) {\n if (succeeded) {\n this.consecutiveRemovalFailures = 0;\n this.flush(); // handle next batch if the queue isn't empty\n } else {\n this.reportError('Failed to remove items from queue');\n if (++this.consecutiveRemovalFailures > 5) {\n this.reportError('Too many queue failures; disabling batching system.');\n this.stopAllBatching();\n } else {\n this.resetFlush();\n }\n }\n }, this)\n );\n\n // client-side dedupe\n _.each(batch, _.bind(function(item) {\n var itemId = item['id'];\n if (itemId) {\n this.itemIdsSentSuccessfully[itemId] = this.itemIdsSentSuccessfully[itemId] || 0;\n this.itemIdsSentSuccessfully[itemId]++;\n if (this.itemIdsSentSuccessfully[itemId] > 5) {\n this.reportError('[dupe] item ID sent too many times', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n }\n } else {\n this.reportError('[dupe] found item with no ID while removing', {item: item});\n }\n }, this));\n }\n\n } catch(err) {\n this.reportError('Error handling API response', err);\n this.resetFlush();\n }\n }, this);\n var requestOptions = {\n method: 'POST',\n verbose: true,\n ignore_json_errors: true, // eslint-disable-line camelcase\n timeout_ms: timeoutMS // eslint-disable-line camelcase\n };\n if (options.unloading) {\n requestOptions.transport = 'sendBeacon';\n }\n logger.log('MIXPANEL REQUEST:', dataForRequest);\n this.sendRequest(dataForRequest, requestOptions, batchSendCallback);\n\n } catch(err) {\n this.reportError('Error flushing request queue', err);\n this.resetFlush();\n }\n};\n\n/**\n * Log error to global logger and optional user-defined logger.\n */\nRequestBatcher.prototype.reportError = function(msg, err) {\n logger.error.apply(logger.error, arguments);\n if (this.errorReporter) {\n try {\n if (!(err instanceof Error)) {\n err = new Error(msg);\n }\n this.errorReporter(msg, err);\n } catch(err) {\n logger.error(err);\n }\n }\n};\n\n/**\n * GDPR utils\n *\n * The General Data Protection Regulation (GDPR) is a regulation in EU law on data protection\n * and privacy for all individuals within the European Union. It addresses the export of personal\n * data outside the EU. The GDPR aims primarily to give control back to citizens and residents\n * over their personal data and to simplify the regulatory environment for international business\n * by unifying the regulation within the EU.\n *\n * This set of utilities is intended to enable opt in/out functionality in the Mixpanel JS SDK.\n * These functions are used internally by the SDK and are not intended to be publicly exposed.\n */\n\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction optIn(token, options) {\n _optInOut(true, token, options);\n}\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\nfunction optOut(token, options) {\n _optInOut(false, token, options);\n}\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\nfunction hasOptedIn(token, options) {\n return _getStorageValue(token, options) === '1';\n}\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\nfunction hasOptedOut(token, options) {\n if (_hasDoNotTrackFlagOn(options)) {\n console.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n return true;\n }\n var optedOut = _getStorageValue(token, options) === '0';\n if (optedOut) {\n console.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n }\n return optedOut;\n}\n\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelLib(method) {\n return _addOptOutCheck(method, function(name) {\n return this.get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelPeople(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelGroup(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction clearOptInOut(token, options) {\n options = options || {};\n _getStorage(options).remove(\n _getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain\n );\n}\n\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\nfunction _getStorage(options) {\n options = options || {};\n return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\nfunction _getStorageKey(token, options) {\n options = options || {};\n return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\nfunction _getStorageValue(token, options) {\n return _getStorage(options).get(_getStorageKey(token, options));\n}\n\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\nfunction _hasDoNotTrackFlagOn(options) {\n if (options && options.ignoreDnt) {\n return false;\n }\n var win$1 = (options && options.window) || win;\n var nav = win$1['navigator'] || {};\n var hasDntOn = false;\n\n _.each([\n nav['doNotTrack'], // standard\n nav['msDoNotTrack'],\n win$1['doNotTrack']\n ], function(dntValue) {\n if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n hasDntOn = true;\n }\n });\n\n return hasDntOn;\n}\n\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction _optInOut(optValue, token, options) {\n if (!_.isString(token) || !token.length) {\n console.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n return;\n }\n\n options = options || {};\n\n _getStorage(options).set(\n _getStorageKey(token, options),\n optValue ? 1 : 0,\n _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,\n !!options.crossSubdomainCookie,\n !!options.secureCookie,\n !!options.crossSiteCookie,\n options.cookieDomain\n );\n\n if (options.track && optValue) { // only track event if opting in (optValue=true)\n options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n 'send_immediately': true\n });\n }\n}\n\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction _addOptOutCheck(method, getConfigValue) {\n return function() {\n var optedOut = false;\n\n try {\n var token = getConfigValue.call(this, 'token');\n var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n if (token) { // if there was an issue getting the token, continue method execution as normal\n optedOut = hasOptedOut(token, {\n ignoreDnt: ignoreDnt,\n persistenceType: persistenceType,\n persistencePrefix: persistencePrefix,\n window: win\n });\n }\n } catch(err) {\n console.error('Unexpected error when checking tracking opt-out status: ' + err);\n }\n\n if (!optedOut) {\n return method.apply(this, arguments);\n }\n\n var callback = arguments[arguments.length - 1];\n if (typeof(callback) === 'function') {\n callback(0);\n }\n\n return;\n };\n}\n\n/* eslint camelcase: \"off\" */\n\n/** @const */ var SET_ACTION = '$set';\n/** @const */ var SET_ONCE_ACTION = '$set_once';\n/** @const */ var UNSET_ACTION = '$unset';\n/** @const */ var ADD_ACTION = '$add';\n/** @const */ var APPEND_ACTION = '$append';\n/** @const */ var UNION_ACTION = '$union';\n/** @const */ var REMOVE_ACTION = '$remove';\n/** @const */ var DELETE_ACTION = '$delete';\n\n// Common internal methods for mixpanel.people and mixpanel.group APIs.\n// These methods shouldn't involve network I/O.\nvar apiActions = {\n set_action: function(prop, to) {\n var data = {};\n var $set = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set[k] = v;\n }\n }, this);\n } else {\n $set[prop] = to;\n }\n\n data[SET_ACTION] = $set;\n return data;\n },\n\n unset_action: function(prop) {\n var data = {};\n var $unset = [];\n if (!_.isArray(prop)) {\n prop = [prop];\n }\n\n _.each(prop, function(k) {\n if (!this._is_reserved_property(k)) {\n $unset.push(k);\n }\n }, this);\n\n data[UNSET_ACTION] = $unset;\n return data;\n },\n\n set_once_action: function(prop, to) {\n var data = {};\n var $set_once = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set_once[k] = v;\n }\n }, this);\n } else {\n $set_once[prop] = to;\n }\n data[SET_ONCE_ACTION] = $set_once;\n return data;\n },\n\n union_action: function(list_name, values) {\n var data = {};\n var $union = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $union[k] = _.isArray(v) ? v : [v];\n }\n }, this);\n } else {\n $union[list_name] = _.isArray(values) ? values : [values];\n }\n data[UNION_ACTION] = $union;\n return data;\n },\n\n append_action: function(list_name, value) {\n var data = {};\n var $append = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $append[k] = v;\n }\n }, this);\n } else {\n $append[list_name] = value;\n }\n data[APPEND_ACTION] = $append;\n return data;\n },\n\n remove_action: function(list_name, value) {\n var data = {};\n var $remove = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $remove[k] = v;\n }\n }, this);\n } else {\n $remove[list_name] = value;\n }\n data[REMOVE_ACTION] = $remove;\n return data;\n },\n\n delete_action: function() {\n var data = {};\n data[DELETE_ACTION] = '';\n return data;\n }\n};\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel Group Object\n * @constructor\n */\nvar MixpanelGroup = function() {};\n\n_.extend(MixpanelGroup.prototype, apiActions);\n\nMixpanelGroup.prototype._init = function(mixpanel_instance, group_key, group_id) {\n this._mixpanel = mixpanel_instance;\n this._group_key = group_key;\n this._group_id = group_id;\n};\n\n/**\n * Set properties on a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, dates, or lists\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Set properties on a group, only if they do not yet exist.\n * This will not overwrite previous group property values, unlike\n * group.set().\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set_once('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set_once({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, lists or dates\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set_once = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Unset properties on a group permanently.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').unset('Founded');\n *\n * @param {String} prop The name of the property.\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.unset = addOptOutCheckMixpanelGroup(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/**\n * Merge a given list with a list-valued group property, excluding duplicate values.\n *\n * ### Usage:\n *\n * // merge a value to a list, creating it if needed\n * mixpanel.get_group('company', 'mixpanel').union('Location', ['San Francisco', 'London']);\n *\n * @param {String} list_name Name of the property.\n * @param {Array} values Values to merge with the given property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.union = addOptOutCheckMixpanelGroup(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/**\n * Permanently delete a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').delete();\n *\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype['delete'] = addOptOutCheckMixpanelGroup(function(callback) {\n // bracket notation above prevents a minification error related to reserved words\n var data = this.delete_action();\n return this._send_request(data, callback);\n});\n\n/**\n * Remove a property from a group. The value will be ignored if doesn't exist.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').remove('Location', 'London');\n *\n * @param {String} list_name Name of the property.\n * @param {Object} value Value to remove from the given group property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.remove = addOptOutCheckMixpanelGroup(function(list_name, value, callback) {\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\nMixpanelGroup.prototype._send_request = function(data, callback) {\n data['$group_key'] = this._group_key;\n data['$group_id'] = this._group_id;\n data['$token'] = this._get_config('token');\n\n var date_encoded_data = _.encodeDates(data);\n return this._mixpanel._track_or_batch({\n type: 'groups',\n data: date_encoded_data,\n endpoint: this._get_config('api_host') + '/' + this._get_config('api_routes')['groups'],\n batcher: this._mixpanel.request_batchers.groups\n }, callback);\n};\n\nMixpanelGroup.prototype._is_reserved_property = function(prop) {\n return prop === '$group_key' || prop === '$group_id';\n};\n\nMixpanelGroup.prototype._get_config = function(conf) {\n return this._mixpanel.get_config(conf);\n};\n\nMixpanelGroup.prototype.toString = function() {\n return this._mixpanel.toString() + '.group.' + this._group_key + '.' + this._group_id;\n};\n\n// MixpanelGroup Exports\nMixpanelGroup.prototype['remove'] = MixpanelGroup.prototype.remove;\nMixpanelGroup.prototype['set'] = MixpanelGroup.prototype.set;\nMixpanelGroup.prototype['set_once'] = MixpanelGroup.prototype.set_once;\nMixpanelGroup.prototype['union'] = MixpanelGroup.prototype.union;\nMixpanelGroup.prototype['unset'] = MixpanelGroup.prototype.unset;\nMixpanelGroup.prototype['toString'] = MixpanelGroup.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel People Object\n * @constructor\n */\nvar MixpanelPeople = function() {};\n\n_.extend(MixpanelPeople.prototype, apiActions);\n\nMixpanelPeople.prototype._init = function(mixpanel_instance) {\n this._mixpanel = mixpanel_instance;\n};\n\n/*\n* Set properties on a user record.\n*\n* ### Usage:\n*\n* mixpanel.people.set('gender', 'm');\n*\n* // or set multiple properties at once\n* mixpanel.people.set({\n* 'Company': 'Acme',\n* 'Plan': 'Premium',\n* 'Upgrade date': new Date()\n* });\n* // properties can be strings, integers, dates, or lists\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n // make sure that the referrer info has been updated and saved\n if (this._get_config('save_referrer')) {\n this._mixpanel['persistence'].update_referrer_info(document.referrer);\n }\n\n // update $set object with default people properties\n data[SET_ACTION] = _.extend(\n {},\n _.info.people_properties(),\n data[SET_ACTION]\n );\n return this._send_request(data, callback);\n});\n\n/*\n* Set properties on a user record, only if they do not yet exist.\n* This will not overwrite previous people property values, unlike\n* people.set().\n*\n* ### Usage:\n*\n* mixpanel.people.set_once('First Login Date', new Date());\n*\n* // or set multiple properties at once\n* mixpanel.people.set_once({\n* 'First Login Date': new Date(),\n* 'Starting Plan': 'Premium'\n* });\n*\n* // properties can be strings, integers or dates\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/*\n* Unset properties on a user record (permanently removes the properties and their values from a profile).\n*\n* ### Usage:\n*\n* mixpanel.people.unset('gender');\n*\n* // or unset multiple properties at once\n* mixpanel.people.unset(['gender', 'Company']);\n*\n* @param {Array|String} prop If a string, this is the name of the property. If an array, this is a list of property names.\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.unset = addOptOutCheckMixpanelPeople(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/*\n* Increment/decrement numeric people analytics properties.\n*\n* ### Usage:\n*\n* mixpanel.people.increment('page_views', 1);\n*\n* // or, for convenience, if you're just incrementing a counter by\n* // 1, you can simply do\n* mixpanel.people.increment('page_views');\n*\n* // to decrement a counter, pass a negative number\n* mixpanel.people.increment('credits_left', -1);\n*\n* // like mixpanel.people.set(), you can increment multiple\n* // properties at once:\n* mixpanel.people.increment({\n* counter1: 1,\n* counter2: 6\n* });\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and numeric values.\n* @param {Number} [by] An amount to increment the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function(prop, by, callback) {\n var data = {};\n var $add = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n if (isNaN(parseFloat(v))) {\n console.error('Invalid increment value passed to mixpanel.people.increment - must be a number');\n return;\n } else {\n $add[k] = v;\n }\n }\n }, this);\n callback = by;\n } else {\n // convenience: mixpanel.people.increment('property'); will\n // increment 'property' by 1\n if (_.isUndefined(by)) {\n by = 1;\n }\n $add[prop] = by;\n }\n data[ADD_ACTION] = $add;\n\n return this._send_request(data, callback);\n});\n\n/*\n* Append a value to a list-valued people analytics property.\n*\n* ### Usage:\n*\n* // append a value to a list, creating it if needed\n* mixpanel.people.append('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.append({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value An item to append to the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.append_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Remove a value from a list-valued people analytics property.\n*\n* ### Usage:\n*\n* mixpanel.people.remove('School', 'UCB');\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value Item to remove from the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.remove = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Merge a given list with a list-valued people analytics property,\n* excluding duplicate values.\n*\n* ### Usage:\n*\n* // merge a value to a list, creating it if needed\n* mixpanel.people.union('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.union({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* // like mixpanel.people.append(), you can append multiple\n* // values to the same list:\n* mixpanel.people.union({\n* list1: ['bob', 'billy']\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] Value / values to merge with the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/*\n * Record that you have charged the current user a certain amount\n * of money. Charges recorded with track_charge() will appear in the\n * Mixpanel revenue report.\n *\n * ### Usage:\n *\n * // charge a user $50\n * mixpanel.people.track_charge(50);\n *\n * // charge a user $30.50 on the 2nd of january\n * mixpanel.people.track_charge(30.50, {\n * '$time': new Date('jan 1 2012')\n * });\n *\n * @param {Number} amount The amount of money charged to the current user\n * @param {Object} [properties] An associative array of properties associated with the charge\n * @param {Function} [callback] If provided, the callback will be called when the server responds\n * @deprecated\n */\nMixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function(amount, properties, callback) {\n if (!_.isNumber(amount)) {\n amount = parseFloat(amount);\n if (isNaN(amount)) {\n console.error('Invalid value passed to mixpanel.people.track_charge - must be a number');\n return;\n }\n }\n\n return this.append('$transactions', _.extend({\n '$amount': amount\n }, properties), callback);\n});\n\n/*\n * Permanently clear all revenue report transactions from the\n * current user's people analytics profile.\n *\n * ### Usage:\n *\n * mixpanel.people.clear_charges();\n *\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n * @deprecated\n */\nMixpanelPeople.prototype.clear_charges = function(callback) {\n return this.set('$transactions', [], callback);\n};\n\n/*\n* Permanently deletes the current people analytics profile from\n* Mixpanel (using the current distinct_id).\n*\n* ### Usage:\n*\n* // remove the all data you have stored about the current user\n* mixpanel.people.delete_user();\n*\n*/\nMixpanelPeople.prototype.delete_user = function() {\n if (!this._identify_called()) {\n console.error('mixpanel.people.delete_user() requires you to call identify() first');\n return;\n }\n var data = {'$delete': this._mixpanel.get_distinct_id()};\n return this._send_request(data);\n};\n\nMixpanelPeople.prototype.toString = function() {\n return this._mixpanel.toString() + '.people';\n};\n\nMixpanelPeople.prototype._send_request = function(data, callback) {\n data['$token'] = this._get_config('token');\n data['$distinct_id'] = this._mixpanel.get_distinct_id();\n var device_id = this._mixpanel.get_property('$device_id');\n var user_id = this._mixpanel.get_property('$user_id');\n var had_persisted_distinct_id = this._mixpanel.get_property('$had_persisted_distinct_id');\n if (device_id) {\n data['$device_id'] = device_id;\n }\n if (user_id) {\n data['$user_id'] = user_id;\n }\n if (had_persisted_distinct_id) {\n data['$had_persisted_distinct_id'] = had_persisted_distinct_id;\n }\n\n var date_encoded_data = _.encodeDates(data);\n\n if (!this._identify_called()) {\n this._enqueue(data);\n if (!_.isUndefined(callback)) {\n if (this._get_config('verbose')) {\n callback({status: -1, error: null});\n } else {\n callback(-1);\n }\n }\n return _.truncate(date_encoded_data, 255);\n }\n\n return this._mixpanel._track_or_batch({\n type: 'people',\n data: date_encoded_data,\n endpoint: this._get_config('api_host') + '/' + this._get_config('api_routes')['engage'],\n batcher: this._mixpanel.request_batchers.people\n }, callback);\n};\n\nMixpanelPeople.prototype._get_config = function(conf_var) {\n return this._mixpanel.get_config(conf_var);\n};\n\nMixpanelPeople.prototype._identify_called = function() {\n return this._mixpanel._flags.identify_called === true;\n};\n\n// Queue up engage operations if identify hasn't been called yet.\nMixpanelPeople.prototype._enqueue = function(data) {\n if (SET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ACTION, data);\n } else if (SET_ONCE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ONCE_ACTION, data);\n } else if (UNSET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNSET_ACTION, data);\n } else if (ADD_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(ADD_ACTION, data);\n } else if (APPEND_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, data);\n } else if (REMOVE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, data);\n } else if (UNION_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNION_ACTION, data);\n } else {\n console.error('Invalid call to _enqueue():', data);\n }\n};\n\nMixpanelPeople.prototype._flush_one_queue = function(action, action_method, callback, queue_to_params_fn) {\n var _this = this;\n var queued_data = _.extend({}, this._mixpanel['persistence'].load_queue(action));\n var action_params = queued_data;\n\n if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) {\n _this._mixpanel['persistence']._pop_from_people_queue(action, queued_data);\n _this._mixpanel['persistence'].save();\n if (queue_to_params_fn) {\n action_params = queue_to_params_fn(queued_data);\n }\n action_method.call(_this, action_params, function(response, data) {\n // on bad response, we want to add it back to the queue\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(action, queued_data);\n }\n if (!_.isUndefined(callback)) {\n callback(response, data);\n }\n });\n }\n};\n\n// Flush queued engage operations - order does not matter,\n// and there are network level race conditions anyway\nMixpanelPeople.prototype._flush = function(\n _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n var _this = this;\n\n this._flush_one_queue(SET_ACTION, this.set, _set_callback);\n this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback);\n this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function(queue) { return _.keys(queue); });\n this._flush_one_queue(ADD_ACTION, this.increment, _add_callback);\n this._flush_one_queue(UNION_ACTION, this.union, _union_callback);\n\n // we have to fire off each $append individually since there is\n // no concat method server side\n var $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) {\n var $append_item;\n var append_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, $append_item);\n }\n if (!_.isUndefined(_append_callback)) {\n _append_callback(response, data);\n }\n };\n for (var i = $append_queue.length - 1; i >= 0; i--) {\n $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n $append_item = $append_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($append_item)) {\n _this.append($append_item, append_callback);\n }\n }\n }\n\n // same for $remove\n var $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n if (!_.isUndefined($remove_queue) && _.isArray($remove_queue) && $remove_queue.length) {\n var $remove_item;\n var remove_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, $remove_item);\n }\n if (!_.isUndefined(_remove_callback)) {\n _remove_callback(response, data);\n }\n };\n for (var j = $remove_queue.length - 1; j >= 0; j--) {\n $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n $remove_item = $remove_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($remove_item)) {\n _this.remove($remove_item, remove_callback);\n }\n }\n }\n};\n\nMixpanelPeople.prototype._is_reserved_property = function(prop) {\n return prop === '$distinct_id' || prop === '$token' || prop === '$device_id' || prop === '$user_id' || prop === '$had_persisted_distinct_id';\n};\n\n// MixpanelPeople Exports\nMixpanelPeople.prototype['set'] = MixpanelPeople.prototype.set;\nMixpanelPeople.prototype['set_once'] = MixpanelPeople.prototype.set_once;\nMixpanelPeople.prototype['unset'] = MixpanelPeople.prototype.unset;\nMixpanelPeople.prototype['increment'] = MixpanelPeople.prototype.increment;\nMixpanelPeople.prototype['append'] = MixpanelPeople.prototype.append;\nMixpanelPeople.prototype['remove'] = MixpanelPeople.prototype.remove;\nMixpanelPeople.prototype['union'] = MixpanelPeople.prototype.union;\nMixpanelPeople.prototype['track_charge'] = MixpanelPeople.prototype.track_charge;\nMixpanelPeople.prototype['clear_charges'] = MixpanelPeople.prototype.clear_charges;\nMixpanelPeople.prototype['delete_user'] = MixpanelPeople.prototype.delete_user;\nMixpanelPeople.prototype['toString'] = MixpanelPeople.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n/*\n * Constants\n */\n/** @const */ var SET_QUEUE_KEY = '__mps';\n/** @const */ var SET_ONCE_QUEUE_KEY = '__mpso';\n/** @const */ var UNSET_QUEUE_KEY = '__mpus';\n/** @const */ var ADD_QUEUE_KEY = '__mpa';\n/** @const */ var APPEND_QUEUE_KEY = '__mpap';\n/** @const */ var REMOVE_QUEUE_KEY = '__mpr';\n/** @const */ var UNION_QUEUE_KEY = '__mpu';\n// This key is deprecated, but we want to check for it to see whether aliasing is allowed.\n/** @const */ var PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';\n/** @const */ var ALIAS_ID_KEY = '__alias';\n/** @const */ var EVENT_TIMERS_KEY = '__timers';\n/** @const */ var RESERVED_PROPERTIES = [\n SET_QUEUE_KEY,\n SET_ONCE_QUEUE_KEY,\n UNSET_QUEUE_KEY,\n ADD_QUEUE_KEY,\n APPEND_QUEUE_KEY,\n REMOVE_QUEUE_KEY,\n UNION_QUEUE_KEY,\n PEOPLE_DISTINCT_ID_KEY,\n ALIAS_ID_KEY,\n EVENT_TIMERS_KEY\n];\n\n/**\n * Mixpanel Persistence Object\n * @constructor\n */\nvar MixpanelPersistence = function(config) {\n this['props'] = {};\n this.campaign_params_saved = false;\n\n if (config['persistence_name']) {\n this.name = 'mp_' + config['persistence_name'];\n } else {\n this.name = 'mp_' + config['token'] + '_mixpanel';\n }\n\n var storage_type = config['persistence'];\n if (storage_type !== 'cookie' && storage_type !== 'localStorage') {\n console.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');\n storage_type = config['persistence'] = 'cookie';\n }\n\n if (storage_type === 'localStorage' && _.localStorage.is_supported()) {\n this.storage = _.localStorage;\n } else {\n this.storage = _.cookie;\n }\n\n this.load();\n this.update_config(config);\n this.upgrade();\n this.save();\n};\n\nMixpanelPersistence.prototype.properties = function() {\n var p = {};\n\n this.load();\n\n // Filter out reserved properties\n _.each(this['props'], function(v, k) {\n if (!_.include(RESERVED_PROPERTIES, k)) {\n p[k] = v;\n }\n });\n return p;\n};\n\nMixpanelPersistence.prototype.load = function() {\n if (this.disabled) { return; }\n\n var entry = this.storage.parse(this.name);\n\n if (entry) {\n this['props'] = _.extend({}, entry);\n }\n};\n\nMixpanelPersistence.prototype.upgrade = function() {\n var old_cookie,\n old_localstorage;\n\n // if transferring from cookie to localStorage or vice-versa, copy existing\n // super properties over to new storage mode\n if (this.storage === _.localStorage) {\n old_cookie = _.cookie.parse(this.name);\n\n _.cookie.remove(this.name);\n _.cookie.remove(this.name, true);\n\n if (old_cookie) {\n this.register_once(old_cookie);\n }\n } else if (this.storage === _.cookie) {\n old_localstorage = _.localStorage.parse(this.name);\n\n _.localStorage.remove(this.name);\n\n if (old_localstorage) {\n this.register_once(old_localstorage);\n }\n }\n};\n\nMixpanelPersistence.prototype.save = function() {\n if (this.disabled) { return; }\n\n this.storage.set(\n this.name,\n _.JSONEncode(this['props']),\n this.expire_days,\n this.cross_subdomain,\n this.secure,\n this.cross_site,\n this.cookie_domain\n );\n};\n\nMixpanelPersistence.prototype.load_prop = function(key) {\n this.load();\n return this['props'][key];\n};\n\nMixpanelPersistence.prototype.remove = function() {\n // remove both domain and subdomain cookies\n this.storage.remove(this.name, false, this.cookie_domain);\n this.storage.remove(this.name, true, this.cookie_domain);\n};\n\n// removes the storage entry and deletes all loaded data\n// forced name for tests\nMixpanelPersistence.prototype.clear = function() {\n this.remove();\n this['props'] = {};\n};\n\n/**\n* @param {Object} props\n* @param {*=} default_value\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register_once = function(props, default_value, days) {\n if (_.isObject(props)) {\n if (typeof(default_value) === 'undefined') { default_value = 'None'; }\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n\n _.each(props, function(val, prop) {\n if (!this['props'].hasOwnProperty(prop) || this['props'][prop] === default_value) {\n this['props'][prop] = val;\n }\n }, this);\n\n this.save();\n\n return true;\n }\n return false;\n};\n\n/**\n* @param {Object} props\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register = function(props, days) {\n if (_.isObject(props)) {\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n _.extend(this['props'], props);\n this.save();\n\n return true;\n }\n return false;\n};\n\nMixpanelPersistence.prototype.unregister = function(prop) {\n this.load();\n if (prop in this['props']) {\n delete this['props'][prop];\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.update_search_keyword = function(referrer) {\n this.register(_.info.searchInfo(referrer));\n};\n\n// EXPORTED METHOD, we test this directly.\nMixpanelPersistence.prototype.update_referrer_info = function(referrer) {\n // If referrer doesn't exist, we want to note the fact that it was type-in traffic.\n this.register_once({\n '$initial_referrer': referrer || '$direct',\n '$initial_referring_domain': _.info.referringDomain(referrer) || '$direct'\n }, '');\n};\n\nMixpanelPersistence.prototype.get_referrer_info = function() {\n return _.strip_empty_properties({\n '$initial_referrer': this['props']['$initial_referrer'],\n '$initial_referring_domain': this['props']['$initial_referring_domain']\n });\n};\n\nMixpanelPersistence.prototype.update_config = function(config) {\n this.default_expiry = this.expire_days = config['cookie_expiration'];\n this.set_disabled(config['disable_persistence']);\n this.set_cookie_domain(config['cookie_domain']);\n this.set_cross_site(config['cross_site_cookie']);\n this.set_cross_subdomain(config['cross_subdomain_cookie']);\n this.set_secure(config['secure_cookie']);\n};\n\nMixpanelPersistence.prototype.set_disabled = function(disabled) {\n this.disabled = disabled;\n if (this.disabled) {\n this.remove();\n } else {\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cookie_domain = function(cookie_domain) {\n if (cookie_domain !== this.cookie_domain) {\n this.remove();\n this.cookie_domain = cookie_domain;\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_site = function(cross_site) {\n if (cross_site !== this.cross_site) {\n this.cross_site = cross_site;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_subdomain = function(cross_subdomain) {\n if (cross_subdomain !== this.cross_subdomain) {\n this.cross_subdomain = cross_subdomain;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.get_cross_subdomain = function() {\n return this.cross_subdomain;\n};\n\nMixpanelPersistence.prototype.set_secure = function(secure) {\n if (secure !== this.secure) {\n this.secure = secure ? true : false;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._add_to_people_queue = function(queue, data) {\n var q_key = this._get_queue_key(queue),\n q_data = data[queue],\n set_q = this._get_or_create_queue(SET_ACTION),\n set_once_q = this._get_or_create_queue(SET_ONCE_ACTION),\n unset_q = this._get_or_create_queue(UNSET_ACTION),\n add_q = this._get_or_create_queue(ADD_ACTION),\n union_q = this._get_or_create_queue(UNION_ACTION),\n remove_q = this._get_or_create_queue(REMOVE_ACTION, []),\n append_q = this._get_or_create_queue(APPEND_ACTION, []);\n\n if (q_key === SET_QUEUE_KEY) {\n // Update the set queue - we can override any existing values\n _.extend(set_q, q_data);\n // if there was a pending increment, override it\n // with the set.\n this._pop_from_people_queue(ADD_ACTION, q_data);\n // if there was a pending union, override it\n // with the set.\n this._pop_from_people_queue(UNION_ACTION, q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === SET_ONCE_QUEUE_KEY) {\n // only queue the data if there is not already a set_once call for it.\n _.each(q_data, function(v, k) {\n if (!(k in set_once_q)) {\n set_once_q[k] = v;\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNSET_QUEUE_KEY) {\n _.each(q_data, function(prop) {\n\n // undo previously-queued actions on this key\n _.each([set_q, set_once_q, add_q, union_q], function(enqueued_obj) {\n if (prop in enqueued_obj) {\n delete enqueued_obj[prop];\n }\n });\n _.each(append_q, function(append_obj) {\n if (prop in append_obj) {\n delete append_obj[prop];\n }\n });\n\n unset_q[prop] = true;\n\n });\n } else if (q_key === ADD_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n // If it exists in the set queue, increment\n // the value\n if (k in set_q) {\n set_q[k] += v;\n } else {\n // If it doesn't exist, update the add\n // queue\n if (!(k in add_q)) {\n add_q[k] = 0;\n }\n add_q[k] += v;\n }\n }, this);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNION_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n if (_.isArray(v)) {\n if (!(k in union_q)) {\n union_q[k] = [];\n }\n // We may send duplicates, the server will dedup them.\n union_q[k] = union_q[k].concat(v);\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === REMOVE_QUEUE_KEY) {\n remove_q.push(q_data);\n this._pop_from_people_queue(APPEND_ACTION, q_data);\n } else if (q_key === APPEND_QUEUE_KEY) {\n append_q.push(q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n }\n\n console.log('MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):');\n console.log(data);\n\n this.save();\n};\n\nMixpanelPersistence.prototype._pop_from_people_queue = function(queue, data) {\n var q = this['props'][this._get_queue_key(queue)];\n if (!_.isUndefined(q)) {\n _.each(data, function(v, k) {\n if (queue === APPEND_ACTION || queue === REMOVE_ACTION) {\n // list actions: only remove if both k+v match\n // e.g. remove should not override append in a case like\n // append({foo: 'bar'}); remove({foo: 'qux'})\n _.each(q, function(queued_action) {\n if (queued_action[k] === v) {\n delete queued_action[k];\n }\n });\n } else {\n delete q[k];\n }\n }, this);\n }\n};\n\nMixpanelPersistence.prototype.load_queue = function(queue) {\n return this.load_prop(this._get_queue_key(queue));\n};\n\nMixpanelPersistence.prototype._get_queue_key = function(queue) {\n if (queue === SET_ACTION) {\n return SET_QUEUE_KEY;\n } else if (queue === SET_ONCE_ACTION) {\n return SET_ONCE_QUEUE_KEY;\n } else if (queue === UNSET_ACTION) {\n return UNSET_QUEUE_KEY;\n } else if (queue === ADD_ACTION) {\n return ADD_QUEUE_KEY;\n } else if (queue === APPEND_ACTION) {\n return APPEND_QUEUE_KEY;\n } else if (queue === REMOVE_ACTION) {\n return REMOVE_QUEUE_KEY;\n } else if (queue === UNION_ACTION) {\n return UNION_QUEUE_KEY;\n } else {\n console.error('Invalid queue:', queue);\n }\n};\n\nMixpanelPersistence.prototype._get_or_create_queue = function(queue, default_val) {\n var key = this._get_queue_key(queue);\n default_val = _.isUndefined(default_val) ? {} : default_val;\n return this['props'][key] || (this['props'][key] = default_val);\n};\n\nMixpanelPersistence.prototype.set_event_timer = function(event_name, timestamp) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n timers[event_name] = timestamp;\n this['props'][EVENT_TIMERS_KEY] = timers;\n this.save();\n};\n\nMixpanelPersistence.prototype.remove_event_timer = function(event_name) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n var timestamp = timers[event_name];\n if (!_.isUndefined(timestamp)) {\n delete this['props'][EVENT_TIMERS_KEY][event_name];\n this.save();\n }\n return timestamp;\n};\n\n/* eslint camelcase: \"off\" */\n\n/*\n * Mixpanel JS Library\n *\n * Copyright 2012, Mixpanel, Inc. All Rights Reserved\n * http://mixpanel.com/\n *\n * Includes portions of Underscore.js\n * http://documentcloud.github.com/underscore/\n * (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.\n * Released under the MIT License.\n */\n\n// ==ClosureCompiler==\n// @compilation_level ADVANCED_OPTIMIZATIONS\n// @output_file_name mixpanel-2.8.min.js\n// ==/ClosureCompiler==\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\nvar init_type; // MODULE or SNIPPET loader\nvar mixpanel_master; // main mixpanel instance / object\nvar INIT_MODULE = 0;\nvar INIT_SNIPPET = 1;\n\nvar IDENTITY_FUNC = function(x) {return x;};\nvar NOOP_FUNC = function() {};\n\n/** @const */ var PRIMARY_INSTANCE_NAME = 'mixpanel';\n/** @const */ var PAYLOAD_TYPE_BASE64 = 'base64';\n/** @const */ var PAYLOAD_TYPE_JSON = 'json';\n/** @const */ var DEVICE_ID_PREFIX = '$device:';\n\n\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\nvar USE_XHR = (win.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest());\n\n// IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\nvar ENQUEUE_REQUESTS = !USE_XHR && (userAgent.indexOf('MSIE') === -1) && (userAgent.indexOf('Mozilla') === -1);\n\n// save reference to navigator.sendBeacon so it can be minified\nvar sendBeacon = null;\nif (navigator['sendBeacon']) {\n sendBeacon = function() {\n // late reference to navigator.sendBeacon to allow patching/spying\n return navigator['sendBeacon'].apply(navigator, arguments);\n };\n}\n\nvar DEFAULT_API_ROUTES = {\n 'track': 'track/',\n 'engage': 'engage/',\n 'groups': 'groups/',\n 'record': 'record/'\n};\n\n/*\n * Module-level globals\n */\nvar DEFAULT_CONFIG = {\n 'api_host': 'https://api-js.mixpanel.com',\n 'api_routes': DEFAULT_API_ROUTES,\n 'api_method': 'POST',\n 'api_transport': 'XHR',\n 'api_payload_format': PAYLOAD_TYPE_BASE64,\n 'app_host': 'https://mixpanel.com',\n 'cdn': 'https://cdn.mxpnl.com',\n 'cross_site_cookie': false,\n 'cross_subdomain_cookie': true,\n 'error_reporter': NOOP_FUNC,\n 'persistence': 'cookie',\n 'persistence_name': '',\n 'cookie_domain': '',\n 'cookie_name': '',\n 'loaded': NOOP_FUNC,\n 'mp_loader': null,\n 'track_marketing': true,\n 'track_pageview': false,\n 'skip_first_touch_marketing': false,\n 'store_google': true,\n 'stop_utm_persistence': false,\n 'save_referrer': true,\n 'test': false,\n 'verbose': false,\n 'img': false,\n 'debug': false,\n 'track_links_timeout': 300,\n 'cookie_expiration': 365,\n 'upgrade': false,\n 'disable_persistence': false,\n 'disable_cookie': false,\n 'secure_cookie': false,\n 'ip': true,\n 'opt_out_tracking_by_default': false,\n 'opt_out_persistence_by_default': false,\n 'opt_out_tracking_persistence_type': 'localStorage',\n 'opt_out_tracking_cookie_prefix': null,\n 'property_blacklist': [],\n 'xhr_headers': {}, // { header: value, header2: value }\n 'ignore_dnt': false,\n 'batch_requests': true,\n 'batch_size': 50,\n 'batch_flush_interval_ms': 5000,\n 'batch_request_timeout_ms': 90000,\n 'batch_autostart': true,\n 'hooks': {},\n 'record_block_class': new RegExp('^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$'),\n 'record_block_selector': 'img, video',\n 'record_idle_timeout_ms': 30 * 60 * 1000, // 30 minutes\n 'record_mask_text_class': new RegExp('^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$'),\n 'record_mask_text_selector': '*',\n 'record_max_ms': MAX_RECORDING_MS,\n 'record_sessions_percent': 0,\n 'recorder_src': 'https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js'\n};\n\nvar DOM_LOADED = false;\n\n/**\n * Mixpanel Library Object\n * @constructor\n */\nvar MixpanelLib = function() {};\n\n\n/**\n * create_mplib(token:string, config:object, name:string)\n *\n * This function is used by the init method of MixpanelLib objects\n * as well as the main initializer at the end of the JSLib (that\n * initializes document.mixpanel as well as any additional instances\n * declared before this file has loaded).\n */\nvar create_mplib = function(token, config, name) {\n var instance,\n target = (name === PRIMARY_INSTANCE_NAME) ? mixpanel_master : mixpanel_master[name];\n\n if (target && init_type === INIT_MODULE) {\n instance = target;\n } else {\n if (target && !_.isArray(target)) {\n console.error('You have already initialized ' + name);\n return;\n }\n instance = new MixpanelLib();\n }\n\n instance._cached_groups = {}; // cache groups in a pool\n\n instance._init(token, config, name);\n\n instance['people'] = new MixpanelPeople();\n instance['people']._init(instance);\n\n if (!instance.get_config('skip_first_touch_marketing')) {\n // We need null UTM params in the object because\n // UTM parameters act as a tuple. If any UTM param\n // is present, then we set all UTM params including\n // empty ones together\n var utm_params = _.info.campaignParams(null);\n var initial_utm_params = {};\n var has_utm = false;\n _.each(utm_params, function(utm_value, utm_key) {\n initial_utm_params['initial_' + utm_key] = utm_value;\n if (utm_value) {\n has_utm = true;\n }\n });\n if (has_utm) {\n instance['people'].set_once(initial_utm_params);\n }\n }\n\n // if any instance on the page has debug = true, we set the\n // global debug to be true\n Config.DEBUG = Config.DEBUG || instance.get_config('debug');\n\n // if target is not defined, we called init after the lib already\n // loaded, so there won't be an array of things to execute\n if (!_.isUndefined(target) && _.isArray(target)) {\n // Crunch through the people queue first - we queue this data up &\n // flush on identify, so it's better to do all these operations first\n instance._execute_array.call(instance['people'], target['people']);\n instance._execute_array(target);\n }\n\n return instance;\n};\n\n// Initialization methods\n\n/**\n * This function initializes a new instance of the Mixpanel tracking object.\n * All new instances are added to the main mixpanel object as sub properties (such as\n * mixpanel.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n * mixpanel.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n * mixpanel.library_name.track(...);\n *\n * @param {String} token Your Mixpanel API token\n * @param {Object} [config] A dictionary of config options to override. <a href=\"https://github.com/mixpanel/mixpanel-js/blob/v2.46.0/src/mixpanel-core.js#L88-L127\">See a list of default config options</a>.\n * @param {String} [name] The name for the new mixpanel instance that you want created\n */\nMixpanelLib.prototype.init = function (token, config, name) {\n if (_.isUndefined(name)) {\n this.report_error('You must name your new library: init(token, config, name)');\n return;\n }\n if (name === PRIMARY_INSTANCE_NAME) {\n this.report_error('You must initialize the main mixpanel object right after you include the Mixpanel js snippet');\n return;\n }\n\n var instance = create_mplib(token, config, name);\n mixpanel_master[name] = instance;\n instance._loaded();\n\n return instance;\n};\n\n// mixpanel._init(token:string, config:object, name:string)\n//\n// This function sets up the current instance of the mixpanel\n// library. The difference between this method and the init(...)\n// method is this one initializes the actual instance, whereas the\n// init(...) method sets up a new library and calls _init on it.\n//\nMixpanelLib.prototype._init = function(token, config, name) {\n config = config || {};\n\n this['__loaded'] = true;\n this['config'] = {};\n\n var variable_features = {};\n\n // default to JSON payload for standard mixpanel.com API hosts\n if (!('api_payload_format' in config)) {\n var api_host = config['api_host'] || DEFAULT_CONFIG['api_host'];\n if (api_host.match(/\\.mixpanel\\.com/)) {\n variable_features['api_payload_format'] = PAYLOAD_TYPE_JSON;\n }\n }\n\n this.set_config(_.extend({}, DEFAULT_CONFIG, variable_features, config, {\n 'name': name,\n 'token': token,\n 'callback_fn': ((name === PRIMARY_INSTANCE_NAME) ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'\n }));\n\n this['_jsc'] = NOOP_FUNC;\n\n this.__dom_loaded_queue = [];\n this.__request_queue = [];\n this.__disabled_events = [];\n this._flags = {\n 'disable_all_events': false,\n 'identify_called': false\n };\n\n // set up request queueing/batching\n this.request_batchers = {};\n this._batch_requests = this.get_config('batch_requests');\n if (this._batch_requests) {\n if (!_.localStorage.is_supported(true) || !USE_XHR) {\n this._batch_requests = false;\n console.log('Turning off Mixpanel request-queueing; needs XHR and localStorage support');\n _.each(this.get_batcher_configs(), function(batcher_config) {\n console.log('Clearing batch queue ' + batcher_config.queue_key);\n _.localStorage.remove(batcher_config.queue_key);\n });\n } else {\n this.init_batchers();\n if (sendBeacon && win.addEventListener) {\n // Before page closes or hides (user tabs away etc), attempt to flush any events\n // queued up via navigator.sendBeacon. Since sendBeacon doesn't report success/failure,\n // events will not be removed from the persistent store; if the site is loaded again,\n // the events will be flushed again on startup and deduplicated on the Mixpanel server\n // side.\n // There is no reliable way to capture only page close events, so we lean on the\n // visibilitychange and pagehide events as recommended at\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event#usage_notes.\n // These events fire when the user clicks away from the current page/tab, so will occur\n // more frequently than page unload, but are the only mechanism currently for capturing\n // this scenario somewhat reliably.\n var flush_on_unload = _.bind(function() {\n if (!this.request_batchers.events.stopped) {\n this.request_batchers.events.flush({unloading: true});\n }\n }, this);\n win.addEventListener('pagehide', function(ev) {\n if (ev['persisted']) {\n flush_on_unload();\n }\n });\n win.addEventListener('visibilitychange', function() {\n if (document$1['visibilityState'] === 'hidden') {\n flush_on_unload();\n }\n });\n }\n }\n }\n\n this['persistence'] = this['cookie'] = new MixpanelPersistence(this['config']);\n this.unpersisted_superprops = {};\n this._gdpr_init();\n\n var uuid = _.UUID();\n if (!this.get_distinct_id()) {\n // There is no need to set the distinct id\n // or the device id if something was already stored\n // in the persitence\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n }\n\n var track_pageview_option = this.get_config('track_pageview');\n if (track_pageview_option) {\n this._init_url_change_tracking(track_pageview_option);\n }\n\n if (this.get_config('record_sessions_percent') > 0 && Math.random() * 100 <= this.get_config('record_sessions_percent')) {\n this.start_session_recording();\n }\n};\n\nMixpanelLib.prototype.start_session_recording = addOptOutCheckMixpanelLib(function () {\n if (!win['MutationObserver']) {\n console.critical('Browser does not support MutationObserver; skipping session recording');\n return;\n }\n\n var handleLoadedRecorder = _.bind(function() {\n this._recorder = this._recorder || new win['__mp_recorder'](this);\n this._recorder['startRecording']();\n }, this);\n\n if (_.isUndefined(win['__mp_recorder'])) {\n var scriptEl = document$1.createElement('script');\n scriptEl.type = 'text/javascript';\n scriptEl.async = true;\n scriptEl.onload = handleLoadedRecorder;\n scriptEl.src = this.get_config('recorder_src');\n document$1.head.appendChild(scriptEl);\n } else {\n handleLoadedRecorder();\n }\n});\n\nMixpanelLib.prototype.stop_session_recording = function () {\n if (this._recorder) {\n this._recorder['stopRecording']();\n } else {\n console.critical('Session recorder module not loaded');\n }\n};\n\nMixpanelLib.prototype.get_session_recording_properties = function () {\n var props = {};\n if (this._recorder) {\n var replay_id = this._recorder['replayId'];\n if (replay_id) {\n props['$mp_replay_id'] = replay_id;\n }\n }\n return props;\n};\n\n// Private methods\n\nMixpanelLib.prototype._loaded = function() {\n this.get_config('loaded')(this);\n this._set_default_superprops();\n this['people'].set_once(this['persistence'].get_referrer_info());\n\n // `store_google` is now deprecated and previously stored UTM parameters are cleared\n // from persistence by default.\n if (this.get_config('store_google') && this.get_config('stop_utm_persistence')) {\n var utm_params = _.info.campaignParams(null);\n _.each(utm_params, function(_utm_value, utm_key) {\n // We need to unregister persisted UTM parameters so old values\n // are not mixed with the new UTM parameters\n this.unregister(utm_key);\n }.bind(this));\n }\n};\n\n// update persistence with info on referrer, UTM params, etc\nMixpanelLib.prototype._set_default_superprops = function() {\n this['persistence'].update_search_keyword(document$1.referrer);\n // Registering super properties for UTM persistence by 'store_google' is deprecated.\n if (this.get_config('store_google') && !this.get_config('stop_utm_persistence')) {\n this.register(_.info.campaignParams());\n }\n if (this.get_config('save_referrer')) {\n this['persistence'].update_referrer_info(document$1.referrer);\n }\n};\n\nMixpanelLib.prototype._dom_loaded = function() {\n _.each(this.__dom_loaded_queue, function(item) {\n this._track_dom.apply(this, item);\n }, this);\n\n if (!this.has_opted_out_tracking()) {\n _.each(this.__request_queue, function(item) {\n this._send_request.apply(this, item);\n }, this);\n }\n\n delete this.__dom_loaded_queue;\n delete this.__request_queue;\n};\n\nMixpanelLib.prototype._track_dom = function(DomClass, args) {\n if (this.get_config('img')) {\n this.report_error('You can\\'t use DOM tracking functions with img = true.');\n return false;\n }\n\n if (!DOM_LOADED) {\n this.__dom_loaded_queue.push([DomClass, args]);\n return false;\n }\n\n var dt = new DomClass().init(this);\n return dt.track.apply(dt, args);\n};\n\nMixpanelLib.prototype._init_url_change_tracking = function(track_pageview_option) {\n var previous_tracked_url = '';\n var tracked = this.track_pageview();\n if (tracked) {\n previous_tracked_url = _.info.currentUrl();\n }\n\n if (_.include(['full-url', 'url-with-path-and-query-string', 'url-with-path'], track_pageview_option)) {\n win.addEventListener('popstate', function() {\n win.dispatchEvent(new Event('mp_locationchange'));\n });\n win.addEventListener('hashchange', function() {\n win.dispatchEvent(new Event('mp_locationchange'));\n });\n var nativePushState = win.history.pushState;\n if (typeof nativePushState === 'function') {\n win.history.pushState = function(state, unused, url) {\n nativePushState.call(win.history, state, unused, url);\n win.dispatchEvent(new Event('mp_locationchange'));\n };\n }\n var nativeReplaceState = win.history.replaceState;\n if (typeof nativeReplaceState === 'function') {\n win.history.replaceState = function(state, unused, url) {\n nativeReplaceState.call(win.history, state, unused, url);\n win.dispatchEvent(new Event('mp_locationchange'));\n };\n }\n win.addEventListener('mp_locationchange', function() {\n var current_url = _.info.currentUrl();\n var should_track = false;\n if (track_pageview_option === 'full-url') {\n should_track = current_url !== previous_tracked_url;\n } else if (track_pageview_option === 'url-with-path-and-query-string') {\n should_track = current_url.split('#')[0] !== previous_tracked_url.split('#')[0];\n } else if (track_pageview_option === 'url-with-path') {\n should_track = current_url.split('#')[0].split('?')[0] !== previous_tracked_url.split('#')[0].split('?')[0];\n }\n\n if (should_track) {\n var tracked = this.track_pageview();\n if (tracked) {\n previous_tracked_url = current_url;\n }\n }\n }.bind(this));\n }\n};\n\n/**\n * _prepare_callback() should be called by callers of _send_request for use\n * as the callback argument.\n *\n * If there is no callback, this returns null.\n * If we are going to make XHR/XDR requests, this returns a function.\n * If we are going to use script tags, this returns a string to use as the\n * callback GET param.\n */\nMixpanelLib.prototype._prepare_callback = function(callback, data) {\n if (_.isUndefined(callback)) {\n return null;\n }\n\n if (USE_XHR) {\n var callback_function = function(response) {\n callback(response, data);\n };\n return callback_function;\n } else {\n // if the user gives us a callback, we store as a random\n // property on this instances jsc function and update our\n // callback string to reflect that.\n var jsc = this['_jsc'];\n var randomized_cb = '' + Math.floor(Math.random() * 100000000);\n var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';\n jsc[randomized_cb] = function(response) {\n delete jsc[randomized_cb];\n callback(response, data);\n };\n return callback_string;\n }\n};\n\nMixpanelLib.prototype._send_request = function(url, data, options, callback) {\n var succeeded = true;\n\n if (ENQUEUE_REQUESTS) {\n this.__request_queue.push(arguments);\n return succeeded;\n }\n\n var DEFAULT_OPTIONS = {\n method: this.get_config('api_method'),\n transport: this.get_config('api_transport'),\n verbose: this.get_config('verbose')\n };\n var body_data = null;\n\n if (!callback && (_.isFunction(options) || typeof options === 'string')) {\n callback = options;\n options = null;\n }\n options = _.extend(DEFAULT_OPTIONS, options || {});\n if (!USE_XHR) {\n options.method = 'GET';\n }\n var use_post = options.method === 'POST';\n var use_sendBeacon = sendBeacon && use_post && options.transport.toLowerCase() === 'sendbeacon';\n\n // needed to correctly format responses\n var verbose_mode = options.verbose;\n if (data['verbose']) { verbose_mode = true; }\n\n if (this.get_config('test')) { data['test'] = 1; }\n if (verbose_mode) { data['verbose'] = 1; }\n if (this.get_config('img')) { data['img'] = 1; }\n if (!USE_XHR) {\n if (callback) {\n data['callback'] = callback;\n } else if (verbose_mode || this.get_config('test')) {\n // Verbose output (from verbose mode, or an error in test mode) is a json blob,\n // which by itself is not valid javascript. Without a callback, this verbose output will\n // cause an error when returned via jsonp, so we force a no-op callback param.\n // See the ECMA script spec: http://www.ecma-international.org/ecma-262/5.1/#sec-12.4\n data['callback'] = '(function(){})';\n }\n }\n\n data['ip'] = this.get_config('ip')?1:0;\n data['_'] = new Date().getTime().toString();\n\n if (use_post) {\n body_data = 'data=' + encodeURIComponent(data['data']);\n delete data['data'];\n }\n\n url += '?' + _.HTTPBuildQuery(data);\n\n var lib = this;\n if ('img' in data) {\n var img = document$1.createElement('img');\n img.src = url;\n document$1.body.appendChild(img);\n } else if (use_sendBeacon) {\n try {\n succeeded = sendBeacon(url, body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n try {\n if (callback) {\n callback(succeeded ? 1 : 0);\n }\n } catch (e) {\n lib.report_error(e);\n }\n } else if (USE_XHR) {\n try {\n var req = new XMLHttpRequest();\n req.open(options.method, url, true);\n\n var headers = this.get_config('xhr_headers');\n if (use_post) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n _.each(headers, function(headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue);\n });\n\n if (options.timeout_ms && typeof req.timeout !== 'undefined') {\n req.timeout = options.timeout_ms;\n var start_time = new Date().getTime();\n }\n\n // send the mp_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n req.withCredentials = true;\n req.onreadystatechange = function () {\n if (req.readyState === 4) { // XMLHttpRequest.DONE == 4, except in safari 4\n if (req.status === 200) {\n if (callback) {\n if (verbose_mode) {\n var response;\n try {\n response = _.JSONDecode(req.responseText);\n } catch (e) {\n lib.report_error(e);\n if (options.ignore_json_errors) {\n response = req.responseText;\n } else {\n return;\n }\n }\n callback(response);\n } else {\n callback(Number(req.responseText));\n }\n }\n } else {\n var error;\n if (\n req.timeout &&\n !req.status &&\n new Date().getTime() - start_time >= req.timeout\n ) {\n error = 'timeout';\n } else {\n error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;\n }\n lib.report_error(error);\n if (callback) {\n if (verbose_mode) {\n callback({status: 0, error: error, xhr_req: req});\n } else {\n callback(0);\n }\n }\n }\n }\n };\n req.send(body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n } else {\n var script = document$1.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n var s = document$1.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(script, s);\n }\n\n return succeeded;\n};\n\n/**\n * _execute_array() deals with processing any mixpanel function\n * calls that were called before the Mixpanel library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the mixpanel function calls && user defined\n * functions BEFORE we fire off mixpanel tracking calls. This is so\n * identify/register/set_config calls can properly modify early\n * tracking calls.\n *\n * @param {Array} array\n */\nMixpanelLib.prototype._execute_array = function(array) {\n var fn_name, alias_calls = [], other_calls = [], tracking_calls = [];\n _.each(array, function(item) {\n if (item) {\n fn_name = item[0];\n if (_.isArray(fn_name)) {\n tracking_calls.push(item); // chained call e.g. mixpanel.get_group().set()\n } else if (typeof(item) === 'function') {\n item.call(this);\n } else if (_.isArray(item) && fn_name === 'alias') {\n alias_calls.push(item);\n } else if (_.isArray(item) && fn_name.indexOf('track') !== -1 && typeof(this[fn_name]) === 'function') {\n tracking_calls.push(item);\n } else {\n other_calls.push(item);\n }\n }\n }, this);\n\n var execute = function(calls, context) {\n _.each(calls, function(item) {\n if (_.isArray(item[0])) {\n // chained call\n var caller = context;\n _.each(item, function(call) {\n caller = caller[call[0]].apply(caller, call.slice(1));\n });\n } else {\n this[item[0]].apply(this, item.slice(1));\n }\n }, context);\n };\n\n execute(alias_calls, this);\n execute(other_calls, this);\n execute(tracking_calls, this);\n};\n\n// request queueing utils\n\nMixpanelLib.prototype.are_batchers_initialized = function() {\n return !!this.request_batchers.events;\n};\n\nMixpanelLib.prototype.get_batcher_configs = function() {\n var queue_prefix = '__mpq_' + this.get_config('token');\n var api_routes = this.get_config('api_routes');\n this._batcher_configs = this._batcher_configs || {\n events: {type: 'events', endpoint: '/' + api_routes['track'], queue_key: queue_prefix + '_ev'},\n people: {type: 'people', endpoint: '/' + api_routes['engage'], queue_key: queue_prefix + '_pp'},\n groups: {type: 'groups', endpoint: '/' + api_routes['groups'], queue_key: queue_prefix + '_gr'}\n };\n return this._batcher_configs;\n};\n\nMixpanelLib.prototype.init_batchers = function() {\n if (!this.are_batchers_initialized()) {\n var batcher_for = _.bind(function(attrs) {\n return new RequestBatcher(\n attrs.queue_key,\n {\n libConfig: this['config'],\n sendRequestFunc: _.bind(function(data, options, cb) {\n this._send_request(\n this.get_config('api_host') + attrs.endpoint,\n this._encode_data_for_request(data),\n options,\n this._prepare_callback(cb, data)\n );\n }, this),\n beforeSendHook: _.bind(function(item) {\n return this._run_hook('before_send_' + attrs.type, item);\n }, this),\n errorReporter: this.get_config('error_reporter'),\n stopAllBatchingFunc: _.bind(this.stop_batch_senders, this)\n }\n );\n }, this);\n var batcher_configs = this.get_batcher_configs();\n this.request_batchers = {\n events: batcher_for(batcher_configs.events),\n people: batcher_for(batcher_configs.people),\n groups: batcher_for(batcher_configs.groups)\n };\n }\n if (this.get_config('batch_autostart')) {\n this.start_batch_senders();\n }\n};\n\nMixpanelLib.prototype.start_batch_senders = function() {\n this._batchers_were_started = true;\n if (this.are_batchers_initialized()) {\n this._batch_requests = true;\n _.each(this.request_batchers, function(batcher) {\n batcher.start();\n });\n }\n};\n\nMixpanelLib.prototype.stop_batch_senders = function() {\n this._batch_requests = false;\n _.each(this.request_batchers, function(batcher) {\n batcher.stop();\n batcher.clear();\n });\n};\n\n/**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n * mixpanel.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\nMixpanelLib.prototype.push = function(item) {\n this._execute_array([item]);\n};\n\n/**\n * Disable events on the Mixpanel object. If passed no arguments,\n * this function disables tracking of any event. If passed an\n * array of event names, those events will be disabled, but other\n * events will continue to be tracked.\n *\n * Note: this function does not stop other mixpanel functions from\n * firing, such as register() or people.set().\n *\n * @param {Array} [events] An array of event names to disable\n */\nMixpanelLib.prototype.disable = function(events) {\n if (typeof(events) === 'undefined') {\n this._flags.disable_all_events = true;\n } else {\n this.__disabled_events = this.__disabled_events.concat(events);\n }\n};\n\nMixpanelLib.prototype._encode_data_for_request = function(data) {\n var encoded_data = _.JSONEncode(data);\n if (this.get_config('api_payload_format') === PAYLOAD_TYPE_BASE64) {\n encoded_data = _.base64Encode(encoded_data);\n }\n return {'data': encoded_data};\n};\n\n// internal method for handling track vs batch-enqueue logic\nMixpanelLib.prototype._track_or_batch = function(options, callback) {\n var truncated_data = _.truncate(options.data, 255);\n var endpoint = options.endpoint;\n var batcher = options.batcher;\n var should_send_immediately = options.should_send_immediately;\n var send_request_options = options.send_request_options || {};\n callback = callback || NOOP_FUNC;\n\n var request_enqueued_or_initiated = true;\n var send_request_immediately = _.bind(function() {\n if (!send_request_options.skip_hooks) {\n truncated_data = this._run_hook('before_send_' + options.type, truncated_data);\n }\n if (truncated_data) {\n console.log('MIXPANEL REQUEST:');\n console.log(truncated_data);\n return this._send_request(\n endpoint,\n this._encode_data_for_request(truncated_data),\n send_request_options,\n this._prepare_callback(callback, truncated_data)\n );\n } else {\n return null;\n }\n }, this);\n\n if (this._batch_requests && !should_send_immediately) {\n batcher.enqueue(truncated_data, function(succeeded) {\n if (succeeded) {\n callback(1, truncated_data);\n } else {\n send_request_immediately();\n }\n });\n } else {\n request_enqueued_or_initiated = send_request_immediately();\n }\n\n return request_enqueued_or_initiated && truncated_data;\n};\n\n/**\n * Track an event. This is the most important and\n * frequently used Mixpanel function.\n *\n * ### Usage:\n *\n * // track an event named 'Registered'\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * // track an event using navigator.sendBeacon\n * mixpanel.track('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * To track link clicks or form submissions, see track_links() or track_forms().\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [options] Optional configuration for this track request.\n * @param {String} [options.transport] Transport method for network request ('xhr' or 'sendBeacon').\n * @param {Boolean} [options.send_immediately] Whether to bypass batching/queueing and send track request immediately.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function(event_name, properties, options, callback) {\n if (!callback && typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n var transport = options['transport']; // external API, don't minify 'transport' prop\n if (transport) {\n options.transport = transport; // 'transport' prop name can be minified internally\n }\n var should_send_immediately = options['send_immediately'];\n if (typeof callback !== 'function') {\n callback = NOOP_FUNC;\n }\n\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.track');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n callback(0);\n return;\n }\n\n // set defaults\n properties = _.extend({}, properties);\n properties['token'] = this.get_config('token');\n\n // set $duration if time_event was previously called for this event\n var start_timestamp = this['persistence'].remove_event_timer(event_name);\n if (!_.isUndefined(start_timestamp)) {\n var duration_in_ms = new Date().getTime() - start_timestamp;\n properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));\n }\n\n this._set_default_superprops();\n\n var marketing_properties = this.get_config('track_marketing')\n ? _.info.marketingParams()\n : {};\n\n // note: extend writes to the first object, so lets make sure we\n // don't write to the persistence properties object and info\n // properties object by passing in a new object\n\n // update properties with pageview info and super-properties\n properties = _.extend(\n {},\n _.info.properties({'mp_loader': this.get_config('mp_loader')}),\n marketing_properties,\n this['persistence'].properties(),\n this.unpersisted_superprops,\n this.get_session_recording_properties(),\n properties\n );\n\n var property_blacklist = this.get_config('property_blacklist');\n if (_.isArray(property_blacklist)) {\n _.each(property_blacklist, function(blacklisted_prop) {\n delete properties[blacklisted_prop];\n });\n } else {\n this.report_error('Invalid value for property_blacklist config: ' + property_blacklist);\n }\n\n var data = {\n 'event': event_name,\n 'properties': properties\n };\n var ret = this._track_or_batch({\n type: 'events',\n data: data,\n endpoint: this.get_config('api_host') + '/' + this.get_config('api_routes')['track'],\n batcher: this.request_batchers.events,\n should_send_immediately: should_send_immediately,\n send_request_options: options\n }, callback);\n\n return ret;\n});\n\n/**\n * Register the current user into one/many groups.\n *\n * ### Usage:\n *\n * mixpanel.set_group('company', ['mixpanel', 'google']) // an array of IDs\n * mixpanel.set_group('company', 'mixpanel')\n * mixpanel.set_group('company', 128746312)\n *\n * @param {String} group_key Group key\n * @param {Array|String|Number} group_ids An array of group IDs, or a singular group ID\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n *\n */\nMixpanelLib.prototype.set_group = addOptOutCheckMixpanelLib(function(group_key, group_ids, callback) {\n if (!_.isArray(group_ids)) {\n group_ids = [group_ids];\n }\n var prop = {};\n prop[group_key] = group_ids;\n this.register(prop);\n return this['people'].set(group_key, group_ids, callback);\n});\n\n/**\n * Add a new group for this user.\n *\n * ### Usage:\n *\n * mixpanel.add_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.add_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_values = this.get_property(group_key);\n var prop = {};\n if (old_values === undefined) {\n prop[group_key] = [group_id];\n this.register(prop);\n } else {\n if (old_values.indexOf(group_id) === -1) {\n old_values.push(group_id);\n prop[group_key] = old_values;\n this.register(prop);\n }\n }\n return this['people'].union(group_key, group_id, callback);\n});\n\n/**\n * Remove a group from this user.\n *\n * ### Usage:\n *\n * mixpanel.remove_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.remove_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_value = this.get_property(group_key);\n // if the value doesn't exist, the persistent store is unchanged\n if (old_value !== undefined) {\n var idx = old_value.indexOf(group_id);\n if (idx > -1) {\n old_value.splice(idx, 1);\n this.register({group_key: old_value});\n }\n if (old_value.length === 0) {\n this.unregister(group_key);\n }\n }\n return this['people'].remove(group_key, group_id, callback);\n});\n\n/**\n * Track an event with specific groups.\n *\n * ### Usage:\n *\n * mixpanel.track_with_groups('purchase', {'product': 'iphone'}, {'University': ['UCB', 'UCLA']})\n *\n * @param {String} event_name The name of the event (see `mixpanel.track()`)\n * @param {Object=} properties A set of properties to include with the event you're sending (see `mixpanel.track()`)\n * @param {Object=} groups An object mapping group name keys to one or more values\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.track_with_groups = addOptOutCheckMixpanelLib(function(event_name, properties, groups, callback) {\n var tracking_props = _.extend({}, properties || {});\n _.each(groups, function(v, k) {\n if (v !== null && v !== undefined) {\n tracking_props[k] = v;\n }\n });\n return this.track(event_name, tracking_props, callback);\n});\n\nMixpanelLib.prototype._create_map_key = function (group_key, group_id) {\n return group_key + '_' + JSON.stringify(group_id);\n};\n\nMixpanelLib.prototype._remove_group_from_cache = function (group_key, group_id) {\n delete this._cached_groups[this._create_map_key(group_key, group_id)];\n};\n\n/**\n * Look up reference to a Mixpanel group\n *\n * ### Usage:\n *\n * mixpanel.get_group(group_key, group_id)\n *\n * @param {String} group_key Group key\n * @param {Object} group_id A valid Mixpanel property type\n * @returns {Object} A MixpanelGroup identifier\n */\nMixpanelLib.prototype.get_group = function (group_key, group_id) {\n var map_key = this._create_map_key(group_key, group_id);\n var group = this._cached_groups[map_key];\n if (group === undefined || group._group_key !== group_key || group._group_id !== group_id) {\n group = new MixpanelGroup();\n group._init(this, group_key, group_id);\n this._cached_groups[map_key] = group;\n }\n return group;\n};\n\n/**\n * Track a default Mixpanel page view event, which includes extra default event properties to\n * improve page view data.\n *\n * ### Usage:\n *\n * // track a default $mp_web_page_view event\n * mixpanel.track_pageview();\n *\n * // track a page view event with additional event properties\n * mixpanel.track_pageview({'ab_test_variant': 'card-layout-b'});\n *\n * // example approach to track page views on different page types as event properties\n * mixpanel.track_pageview({'page': 'pricing'});\n * mixpanel.track_pageview({'page': 'homepage'});\n *\n * // UNCOMMON: Tracking a page view event with a custom event_name option. NOT expected to be used for\n * // individual pages on the same site or product. Use cases for custom event_name may be page\n * // views on different products or internal applications that are considered completely separate\n * mixpanel.track_pageview({'page': 'customer-search'}, {'event_name': '[internal] Admin Page View'});\n *\n * ### Notes:\n *\n * The `config.track_pageview` option for <a href=\"#mixpanelinit\">mixpanel.init()</a>\n * may be turned on for tracking page loads automatically.\n *\n * // track only page loads\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: true});\n *\n * // track when the URL changes in any manner\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'full-url'});\n *\n * // track when the URL changes, ignoring any changes in the hash part\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path-and-query-string'});\n *\n * // track when the path changes, ignoring any query parameter or hash changes\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path'});\n *\n * @param {Object} [properties] An optional set of additional properties to send with the page view event\n * @param {Object} [options] Page view tracking options\n * @param {String} [options.event_name] - Alternate name for the tracking event\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track_pageview = addOptOutCheckMixpanelLib(function(properties, options) {\n if (typeof properties !== 'object') {\n properties = {};\n }\n options = options || {};\n var event_name = options['event_name'] || '$mp_web_page_view';\n\n var default_page_properties = _.extend(\n _.info.mpPageViewProperties(),\n _.info.campaignParams(),\n _.info.clickParams()\n );\n\n var event_properties = _.extend(\n {},\n default_page_properties,\n properties\n );\n\n return this.track(event_name, event_properties);\n});\n\n/**\n * Track clicks on a set of document elements. Selector must be a\n * valid query. Elements must exist on the page at the time track_links is called.\n *\n * ### Usage:\n *\n * // track click for link id #nav\n * mixpanel.track_links('#nav', 'Clicked Nav Link');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the Mixpanel\n * servers to respond. If they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement\n */\nMixpanelLib.prototype.track_links = function() {\n return this._track_dom.call(this, LinkTracker, arguments);\n};\n\n/**\n * Track form submissions. Selector must be a valid query.\n *\n * ### Usage:\n *\n * // track submission for form id 'register'\n * mixpanel.track_forms('#register', 'Created Account');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the mixpanel\n * servers to respond, if they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement\n */\nMixpanelLib.prototype.track_forms = function() {\n return this._track_dom.call(this, FormTracker, arguments);\n};\n\n/**\n * Time an event by including the time between this call and a\n * later 'track' call for the same event in the properties sent\n * with the event.\n *\n * ### Usage:\n *\n * // time an event named 'Registered'\n * mixpanel.time_event('Registered');\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * When called for a particular event name, the next track call for that event\n * name will include the elapsed time between the 'time_event' and 'track'\n * calls. This value is stored as seconds in the '$duration' property.\n *\n * @param {String} event_name The name of the event.\n */\nMixpanelLib.prototype.time_event = function(event_name) {\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.time_event');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n return;\n }\n\n this['persistence'].set_event_timer(event_name, new Date().getTime());\n};\n\nvar REGISTER_DEFAULTS = {\n 'persistent': true\n};\n/**\n * Helper to parse options param for register methods, maintaining\n * legacy support for plain \"days\" param instead of options object\n * @param {Number|Object} [days_or_options] 'days' option (Number), or Options object for register methods\n * @returns {Object} options object\n */\nvar options_for_register = function(days_or_options) {\n var options;\n if (_.isObject(days_or_options)) {\n options = days_or_options;\n } else if (!_.isUndefined(days_or_options)) {\n options = {'days': days_or_options};\n } else {\n options = {};\n }\n return _.extend({}, REGISTER_DEFAULTS, options);\n};\n\n/**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values.\n *\n * ### Usage:\n *\n * // register 'Gender' as a super property\n * mixpanel.register({'Gender': 'Female'});\n *\n * // register several super properties when a user signs up\n * mixpanel.register({\n * 'Email': 'jdoe@example.com',\n * 'Account Type': 'Free'\n * });\n *\n * // register only for the current pageload\n * mixpanel.register({'Name': 'Pat'}, {persistent: false});\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register = function(props, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register(props, options['days']);\n } else {\n _.extend(this.unpersisted_superprops, props);\n }\n};\n\n/**\n * Register a set of super properties only once. This will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n * // register a super property for the first time only\n * mixpanel.register_once({\n * 'First Login Date': new Date().toISOString()\n * });\n *\n * // register once, only for the current pageload\n * mixpanel.register_once({\n * 'First interaction time': new Date().toISOString()\n * }, 'None', {persistent: false});\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register_once = function(props, default_value, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register_once(props, default_value, options['days']);\n } else {\n if (typeof(default_value) === 'undefined') {\n default_value = 'None';\n }\n _.each(props, function(val, prop) {\n if (!this.unpersisted_superprops.hasOwnProperty(prop) || this.unpersisted_superprops[prop] === default_value) {\n this.unpersisted_superprops[prop] = val;\n }\n }, this);\n }\n};\n\n/**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n * @param {Object} [options]\n * @param {boolean} [options.persistent=true] - whether to look in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.unregister = function(property, options) {\n options = options_for_register(options);\n if (options['persistent']) {\n this['persistence'].unregister(property);\n } else {\n delete this.unpersisted_superprops[property];\n }\n};\n\nMixpanelLib.prototype._register_single = function(prop, value) {\n var props = {};\n props[prop] = value;\n this.register(props);\n};\n\n/**\n * Identify a user with a unique ID to track user activity across\n * devices, tie a user to their events, and create a user profile.\n * If you never call this method, unique visitors are tracked using\n * a UUID generated the first time they visit the site.\n *\n * Call identify when you know the identity of the current user,\n * typically after login or signup. We recommend against using\n * identify for anonymous visitors to your site.\n *\n * ### Notes:\n * If your project has\n * <a href=\"https://help.mixpanel.com/hc/en-us/articles/360039133851\">ID Merge</a>\n * enabled, the identify method will connect pre- and\n * post-authentication events when appropriate.\n *\n * If your project does not have ID Merge enabled, identify will\n * change the user's local distinct_id to the unique ID you pass.\n * Events tracked prior to authentication will not be connected\n * to the same user identity. If ID Merge is disabled, alias can\n * be used to connect pre- and post-registration events.\n *\n * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n */\nMixpanelLib.prototype.identify = function(\n new_distinct_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n // Optional Parameters\n // _set_callback:function A callback to be run if and when the People set queue is flushed\n // _add_callback:function A callback to be run if and when the People add queue is flushed\n // _append_callback:function A callback to be run if and when the People append queue is flushed\n // _set_once_callback:function A callback to be run if and when the People set_once queue is flushed\n // _union_callback:function A callback to be run if and when the People union queue is flushed\n // _unset_callback:function A callback to be run if and when the People unset queue is flushed\n\n var previous_distinct_id = this.get_distinct_id();\n if (new_distinct_id && previous_distinct_id !== new_distinct_id) {\n // we allow the following condition if previous distinct_id is same as new_distinct_id\n // so that you can force flush people updates for anonymous profiles.\n if (typeof new_distinct_id === 'string' && new_distinct_id.indexOf(DEVICE_ID_PREFIX) === 0) {\n this.report_error('distinct_id cannot have $device: prefix');\n return -1;\n }\n this.register({'$user_id': new_distinct_id});\n }\n\n if (!this.get_property('$device_id')) {\n // The persisted distinct id might not actually be a device id at all\n // it might be a distinct id of the user from before\n var device_id = previous_distinct_id;\n this.register_once({\n '$had_persisted_distinct_id': true,\n '$device_id': device_id\n }, '');\n }\n\n // identify only changes the distinct id if it doesn't match either the existing or the alias;\n // if it's new, blow away the alias as well.\n if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n this.unregister(ALIAS_ID_KEY);\n this.register({'distinct_id': new_distinct_id});\n }\n this._flags.identify_called = true;\n // Flush any queued up people requests\n this['people']._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback);\n\n // send an $identify event any time the distinct_id is changing - logic on the server\n // will determine whether or not to do anything with it.\n if (new_distinct_id !== previous_distinct_id) {\n this.track('$identify', {\n 'distinct_id': new_distinct_id,\n '$anon_distinct_id': previous_distinct_id\n }, {skip_hooks: true});\n }\n};\n\n/**\n * Clears super properties and generates a new random distinct_id for this instance.\n * Useful for clearing data when a user logs out.\n */\nMixpanelLib.prototype.reset = function() {\n this['persistence'].clear();\n this._flags.identify_called = false;\n var uuid = _.UUID();\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n};\n\n/**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // set distinct_id after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * distinct_id = mixpanel.get_distinct_id();\n * }\n * });\n */\nMixpanelLib.prototype.get_distinct_id = function() {\n return this.get_property('distinct_id');\n};\n\n/**\n * The alias method creates an alias which Mixpanel will use to\n * remap one id to another. Multiple aliases can point to the\n * same identifier.\n *\n * The following is a valid use of alias:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // You can add multiple id aliases to the existing ID\n * mixpanel.alias('newer_id', 'existing_id');\n *\n * Aliases can also be chained - the following is a valid example:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // chain newer_id - new_id - existing_id\n * mixpanel.alias('newer_id', 'new_id');\n *\n * Aliases cannot point to multiple identifiers - the following\n * example will not work:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // this is invalid as 'new_id' already points to 'existing_id'\n * mixpanel.alias('new_id', 'newer_id');\n *\n * ### Notes:\n *\n * If your project does not have\n * <a href=\"https://help.mixpanel.com/hc/en-us/articles/360039133851\">ID Merge</a>\n * enabled, the best practice is to call alias once when a unique\n * ID is first created for a user (e.g., when a user first registers\n * for an account). Do not use alias multiple times for a single\n * user without ID Merge enabled.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\nMixpanelLib.prototype.alias = function(alias, original) {\n // If the $people_distinct_id key exists in persistence, there has been a previous\n // mixpanel.people.identify() call made for this user. It is VERY BAD to make an alias with\n // this ID, as it will duplicate users.\n if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n this.report_error('Attempting to create alias for existing People user - aborting.');\n return -2;\n }\n\n var _this = this;\n if (_.isUndefined(original)) {\n original = this.get_distinct_id();\n }\n if (alias !== original) {\n this._register_single(ALIAS_ID_KEY, alias);\n return this.track('$create_alias', {\n 'alias': alias,\n 'distinct_id': original\n }, {\n skip_hooks: true\n }, function() {\n // Flush the people queue\n _this.identify(alias);\n });\n } else {\n this.report_error('alias matches current distinct_id - skipping api call.');\n this.identify(alias);\n return -1;\n }\n};\n\n/**\n * Provide a string to recognize the user by. The string passed to\n * this method will appear in the Mixpanel Streams product rather\n * than an automatically generated name. Name tags do not have to\n * be unique.\n *\n * This value will only be included in Streams data.\n *\n * @param {String} name_tag A human readable name for the user\n * @deprecated\n */\nMixpanelLib.prototype.name_tag = function(name_tag) {\n this._register_single('mp_name_tag', name_tag);\n};\n\n/**\n * Update the configuration of a mixpanel library instance.\n *\n * The default config is:\n *\n * {\n * // host for requests (customizable for e.g. a local proxy)\n * api_host: 'https://api-js.mixpanel.com',\n *\n * // endpoints for different types of requests\n * api_routes: {\n * track: 'track/',\n * engage: 'engage/',\n * groups: 'groups/',\n * }\n *\n * // HTTP method for tracking requests\n * api_method: 'POST'\n *\n * // transport for sending requests ('XHR' or 'sendBeacon')\n * // NB: sendBeacon should only be used for scenarios such as\n * // page unload where a \"best-effort\" attempt to send is\n * // acceptable; the sendBeacon API does not support callbacks\n * // or any way to know the result of the request. Mixpanel\n * // tracking via sendBeacon will not support any event-\n * // batching or retry mechanisms.\n * api_transport: 'XHR'\n *\n * // request-batching/queueing/retry\n * batch_requests: true,\n *\n * // maximum number of events/updates to send in a single\n * // network request\n * batch_size: 50,\n *\n * // milliseconds to wait between sending batch requests\n * batch_flush_interval_ms: 5000,\n *\n * // milliseconds to wait for network responses to batch requests\n * // before they are considered timed-out and retried\n * batch_request_timeout_ms: 90000,\n *\n * // override value for cookie domain, only useful for ensuring\n * // correct cross-subdomain cookies on unusual domains like\n * // subdomain.mainsite.avocat.fr; NB this cannot be used to\n * // set cookies on a different domain than the current origin\n * cookie_domain: ''\n *\n * // super properties cookie expiration (in days)\n * cookie_expiration: 365\n *\n * // if true, cookie will be set with SameSite=None; Secure\n * // this is only useful in special situations, like embedded\n * // 3rd-party iframes that set up a Mixpanel instance\n * cross_site_cookie: false\n *\n * // super properties span subdomains\n * cross_subdomain_cookie: true\n *\n * // debug mode\n * debug: false\n *\n * // if this is true, the mixpanel cookie or localStorage entry\n * // will be deleted, and no user persistence will take place\n * disable_persistence: false\n *\n * // if this is true, Mixpanel will automatically determine\n * // City, Region and Country data using the IP address of\n * //the client\n * ip: true\n *\n * // opt users out of tracking by this Mixpanel instance by default\n * opt_out_tracking_by_default: false\n *\n * // opt users out of browser data storage by this Mixpanel instance by default\n * opt_out_persistence_by_default: false\n *\n * // persistence mechanism used by opt-in/opt-out methods - cookie\n * // or localStorage - falls back to cookie if localStorage is unavailable\n * opt_out_tracking_persistence_type: 'localStorage'\n *\n * // customize the name of cookie/localStorage set by opt-in/opt-out methods\n * opt_out_tracking_cookie_prefix: null\n *\n * // type of persistent store for super properties (cookie/\n * // localStorage) if set to 'localStorage', any existing\n * // mixpanel cookie value with the same persistence_name\n * // will be transferred to localStorage and deleted\n * persistence: 'cookie'\n *\n * // name for super properties persistent store\n * persistence_name: ''\n *\n * // names of properties/superproperties which should never\n * // be sent with track() calls\n * property_blacklist: []\n *\n * // if this is true, mixpanel cookies will be marked as\n * // secure, meaning they will only be transmitted over https\n * secure_cookie: false\n *\n * // disables enriching user profiles with first touch marketing data\n * skip_first_touch_marketing: false\n *\n * // the amount of time track_links will\n * // wait for Mixpanel's servers to respond\n * track_links_timeout: 300\n *\n * // adds any UTM parameters and click IDs present on the page to any events fired\n * track_marketing: true\n *\n * // enables automatic page view tracking using default page view events through\n * // the track_pageview() method\n * track_pageview: false\n *\n * // if you set upgrade to be true, the library will check for\n * // a cookie from our old js library and import super\n * // properties from it, then the old cookie is deleted\n * // The upgrade config option only works in the initialization,\n * // so make sure you set it when you create the library.\n * upgrade: false\n *\n * // extra HTTP request headers to set for each API request, in\n * // the format {'Header-Name': value}\n * xhr_headers: {}\n *\n * // whether to ignore or respect the web browser's Do Not Track setting\n * ignore_dnt: false\n * }\n *\n *\n * @param {Object} config A dictionary of new configuration values to update\n */\nMixpanelLib.prototype.set_config = function(config) {\n if (_.isObject(config)) {\n _.extend(this['config'], config);\n\n var new_batch_size = config['batch_size'];\n if (new_batch_size) {\n _.each(this.request_batchers, function(batcher) {\n batcher.resetBatchSize();\n });\n }\n\n if (!this.get_config('persistence_name')) {\n this['config']['persistence_name'] = this['config']['cookie_name'];\n }\n if (!this.get_config('disable_persistence')) {\n this['config']['disable_persistence'] = this['config']['disable_cookie'];\n }\n\n if (this['persistence']) {\n this['persistence'].update_config(this['config']);\n }\n Config.DEBUG = Config.DEBUG || this.get_config('debug');\n }\n};\n\n/**\n * returns the current config object for the library.\n */\nMixpanelLib.prototype.get_config = function(prop_name) {\n return this['config'][prop_name];\n};\n\n/**\n * Fetch a hook function from config, with safe default, and run it\n * against the given arguments\n * @param {string} hook_name which hook to retrieve\n * @returns {any|null} return value of user-provided hook, or null if nothing was returned\n */\nMixpanelLib.prototype._run_hook = function(hook_name) {\n var ret = (this['config']['hooks'][hook_name] || IDENTITY_FUNC).apply(this, slice.call(arguments, 1));\n if (typeof ret === 'undefined') {\n this.report_error(hook_name + ' hook did not return a value');\n ret = null;\n }\n return ret;\n};\n\n/**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // grab value for 'user_id' after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * user_id = mixpanel.get_property('user_id');\n * }\n * });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\nMixpanelLib.prototype.get_property = function(property_name) {\n return this['persistence'].load_prop([property_name]);\n};\n\nMixpanelLib.prototype.toString = function() {\n var name = this.get_config('name');\n if (name !== PRIMARY_INSTANCE_NAME) {\n name = PRIMARY_INSTANCE_NAME + '.' + name;\n }\n return name;\n};\n\nMixpanelLib.prototype._event_is_disabled = function(event_name) {\n return _.isBlockedUA(userAgent) ||\n this._flags.disable_all_events ||\n _.include(this.__disabled_events, event_name);\n};\n\n// perform some housekeeping around GDPR opt-in/out state\nMixpanelLib.prototype._gdpr_init = function() {\n var is_localStorage_requested = this.get_config('opt_out_tracking_persistence_type') === 'localStorage';\n\n // try to convert opt-in/out cookies to localStorage if possible\n if (is_localStorage_requested && _.localStorage.is_supported()) {\n if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({'persistence_type': 'cookie'})) {\n this.opt_in_tracking({'enable_persistence': false});\n }\n if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({'persistence_type': 'cookie'})) {\n this.opt_out_tracking({'clear_persistence': false});\n }\n this.clear_opt_in_out_tracking({\n 'persistence_type': 'cookie',\n 'enable_persistence': false\n });\n }\n\n // check whether the user has already opted out - if so, clear & disable persistence\n if (this.has_opted_out_tracking()) {\n this._gdpr_update_persistence({'clear_persistence': true});\n\n // check whether we should opt out by default\n // note: we don't clear persistence here by default since opt-out default state is often\n // used as an initial state while GDPR information is being collected\n } else if (!this.has_opted_in_tracking() && (\n this.get_config('opt_out_tracking_by_default') || _.cookie.get('mp_optout')\n )) {\n _.cookie.remove('mp_optout');\n this.opt_out_tracking({\n 'clear_persistence': this.get_config('opt_out_persistence_by_default')\n });\n }\n};\n\n/**\n * Enable or disable persistence based on options\n * only enable/disable if persistence is not already in this state\n * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it\n * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence\n */\nMixpanelLib.prototype._gdpr_update_persistence = function(options) {\n var disabled;\n if (options && options['clear_persistence']) {\n disabled = true;\n } else if (options && options['enable_persistence']) {\n disabled = false;\n } else {\n return;\n }\n\n if (!this.get_config('disable_persistence') && this['persistence'].disabled !== disabled) {\n this['persistence'].set_disabled(disabled);\n }\n\n if (disabled) {\n this.stop_batch_senders();\n } else {\n // only start batchers after opt-in if they have previously been started\n // in order to avoid unintentionally starting up batching for the first time\n if (this._batchers_were_started) {\n this.start_batch_senders();\n }\n }\n};\n\n// call a base gdpr function after constructing the appropriate token and options args\nMixpanelLib.prototype._gdpr_call_func = function(func, options) {\n options = _.extend({\n 'track': _.bind(this.track, this),\n 'persistence_type': this.get_config('opt_out_tracking_persistence_type'),\n 'cookie_prefix': this.get_config('opt_out_tracking_cookie_prefix'),\n 'cookie_expiration': this.get_config('cookie_expiration'),\n 'cross_site_cookie': this.get_config('cross_site_cookie'),\n 'cross_subdomain_cookie': this.get_config('cross_subdomain_cookie'),\n 'cookie_domain': this.get_config('cookie_domain'),\n 'secure_cookie': this.get_config('secure_cookie'),\n 'ignore_dnt': this.get_config('ignore_dnt')\n }, options);\n\n // check if localStorage can be used for recording opt out status, fall back to cookie if not\n if (!_.localStorage.is_supported()) {\n options['persistence_type'] = 'cookie';\n }\n\n return func(this.get_config('token'), {\n track: options['track'],\n trackEventName: options['track_event_name'],\n trackProperties: options['track_properties'],\n persistenceType: options['persistence_type'],\n persistencePrefix: options['cookie_prefix'],\n cookieDomain: options['cookie_domain'],\n cookieExpiration: options['cookie_expiration'],\n crossSiteCookie: options['cross_site_cookie'],\n crossSubdomainCookie: options['cross_subdomain_cookie'],\n secureCookie: options['secure_cookie'],\n ignoreDnt: options['ignore_dnt']\n });\n};\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user in\n * mixpanel.opt_in_tracking();\n *\n * // opt user in with specific event name, properties, cookie configuration\n * mixpanel.opt_in_tracking({\n * track_event_name: 'User opted in',\n * track_event_properties: {\n * 'Email': 'jdoe@example.com'\n * },\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method)\n * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action\n * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_in_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(optIn, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user out\n * mixpanel.opt_out_tracking();\n *\n * // opt user out with different cookie configuration from Mixpanel instance\n * mixpanel.opt_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out\n * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_out_tracking = function(options) {\n options = _.extend({\n 'clear_persistence': true,\n 'delete_user': true\n }, options);\n\n // delete user and clear charges since these methods may be disabled by opt-out\n if (options['delete_user'] && this['people'] && this['people']._identify_called()) {\n this['people'].delete_user();\n this['people'].clear_charges();\n }\n\n this._gdpr_call_func(optOut, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_in = mixpanel.has_opted_in_tracking();\n * // use has_opted_in value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-in status\n */\nMixpanelLib.prototype.has_opted_in_tracking = function(options) {\n return this._gdpr_call_func(hasOptedIn, options);\n};\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_out = mixpanel.has_opted_out_tracking();\n * // use has_opted_out value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-out status\n */\nMixpanelLib.prototype.has_opted_out_tracking = function(options) {\n return this._gdpr_call_func(hasOptedOut, options);\n};\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // clear user's opt-in/out status\n * mixpanel.clear_opt_in_out_tracking();\n *\n * // clear user's opt-in/out status with specific cookie configuration - should match\n * // configuration used when opt_in_tracking/opt_out_tracking methods were called.\n * mixpanel.clear_opt_in_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.clear_opt_in_out_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(clearOptInOut, options);\n this._gdpr_update_persistence(options);\n};\n\nMixpanelLib.prototype.report_error = function(msg, err) {\n console.error.apply(console.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.get_config('error_reporter')(msg, err);\n } catch(err) {\n console.error(err);\n }\n};\n\n// EXPORTS (for closure compiler)\n\n// MixpanelLib Exports\nMixpanelLib.prototype['init'] = MixpanelLib.prototype.init;\nMixpanelLib.prototype['reset'] = MixpanelLib.prototype.reset;\nMixpanelLib.prototype['disable'] = MixpanelLib.prototype.disable;\nMixpanelLib.prototype['time_event'] = MixpanelLib.prototype.time_event;\nMixpanelLib.prototype['track'] = MixpanelLib.prototype.track;\nMixpanelLib.prototype['track_links'] = MixpanelLib.prototype.track_links;\nMixpanelLib.prototype['track_forms'] = MixpanelLib.prototype.track_forms;\nMixpanelLib.prototype['track_pageview'] = MixpanelLib.prototype.track_pageview;\nMixpanelLib.prototype['register'] = MixpanelLib.prototype.register;\nMixpanelLib.prototype['register_once'] = MixpanelLib.prototype.register_once;\nMixpanelLib.prototype['unregister'] = MixpanelLib.prototype.unregister;\nMixpanelLib.prototype['identify'] = MixpanelLib.prototype.identify;\nMixpanelLib.prototype['alias'] = MixpanelLib.prototype.alias;\nMixpanelLib.prototype['name_tag'] = MixpanelLib.prototype.name_tag;\nMixpanelLib.prototype['set_config'] = MixpanelLib.prototype.set_config;\nMixpanelLib.prototype['get_config'] = MixpanelLib.prototype.get_config;\nMixpanelLib.prototype['get_property'] = MixpanelLib.prototype.get_property;\nMixpanelLib.prototype['get_distinct_id'] = MixpanelLib.prototype.get_distinct_id;\nMixpanelLib.prototype['toString'] = MixpanelLib.prototype.toString;\nMixpanelLib.prototype['opt_out_tracking'] = MixpanelLib.prototype.opt_out_tracking;\nMixpanelLib.prototype['opt_in_tracking'] = MixpanelLib.prototype.opt_in_tracking;\nMixpanelLib.prototype['has_opted_out_tracking'] = MixpanelLib.prototype.has_opted_out_tracking;\nMixpanelLib.prototype['has_opted_in_tracking'] = MixpanelLib.prototype.has_opted_in_tracking;\nMixpanelLib.prototype['clear_opt_in_out_tracking'] = MixpanelLib.prototype.clear_opt_in_out_tracking;\nMixpanelLib.prototype['get_group'] = MixpanelLib.prototype.get_group;\nMixpanelLib.prototype['set_group'] = MixpanelLib.prototype.set_group;\nMixpanelLib.prototype['add_group'] = MixpanelLib.prototype.add_group;\nMixpanelLib.prototype['remove_group'] = MixpanelLib.prototype.remove_group;\nMixpanelLib.prototype['track_with_groups'] = MixpanelLib.prototype.track_with_groups;\nMixpanelLib.prototype['start_batch_senders'] = MixpanelLib.prototype.start_batch_senders;\nMixpanelLib.prototype['stop_batch_senders'] = MixpanelLib.prototype.stop_batch_senders;\nMixpanelLib.prototype['start_session_recording'] = MixpanelLib.prototype.start_session_recording;\nMixpanelLib.prototype['stop_session_recording'] = MixpanelLib.prototype.stop_session_recording;\nMixpanelLib.prototype['get_session_recording_properties'] = MixpanelLib.prototype.get_session_recording_properties;\nMixpanelLib.prototype['DEFAULT_API_ROUTES'] = DEFAULT_API_ROUTES;\n\n// MixpanelPersistence Exports\nMixpanelPersistence.prototype['properties'] = MixpanelPersistence.prototype.properties;\nMixpanelPersistence.prototype['update_search_keyword'] = MixpanelPersistence.prototype.update_search_keyword;\nMixpanelPersistence.prototype['update_referrer_info'] = MixpanelPersistence.prototype.update_referrer_info;\nMixpanelPersistence.prototype['get_cross_subdomain'] = MixpanelPersistence.prototype.get_cross_subdomain;\nMixpanelPersistence.prototype['clear'] = MixpanelPersistence.prototype.clear;\n\n\nvar instances = {};\nvar extend_mp = function() {\n // add all the sub mixpanel instances\n _.each(instances, function(instance, name) {\n if (name !== PRIMARY_INSTANCE_NAME) { mixpanel_master[name] = instance; }\n });\n\n // add private functions as _\n mixpanel_master['_'] = _;\n};\n\nvar override_mp_init_func = function() {\n // we override the snippets init function to handle the case where a\n // user initializes the mixpanel library after the script loads & runs\n mixpanel_master['init'] = function(token, config, name) {\n if (name) {\n // initialize a sub library\n if (!mixpanel_master[name]) {\n mixpanel_master[name] = instances[name] = create_mplib(token, config, name);\n mixpanel_master[name]._loaded();\n }\n return mixpanel_master[name];\n } else {\n var instance = mixpanel_master;\n\n if (instances[PRIMARY_INSTANCE_NAME]) {\n // main mixpanel lib already initialized\n instance = instances[PRIMARY_INSTANCE_NAME];\n } else if (token) {\n // intialize the main mixpanel lib\n instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME);\n instance._loaded();\n instances[PRIMARY_INSTANCE_NAME] = instance;\n }\n\n mixpanel_master = instance;\n if (init_type === INIT_SNIPPET) {\n win[PRIMARY_INSTANCE_NAME] = mixpanel_master;\n }\n extend_mp();\n }\n };\n};\n\nvar add_dom_loaded_handler = function() {\n // Cross browser DOM Loaded support\n function dom_loaded_handler() {\n // function flag since we only want to execute this once\n if (dom_loaded_handler.done) { return; }\n dom_loaded_handler.done = true;\n\n DOM_LOADED = true;\n ENQUEUE_REQUESTS = false;\n\n _.each(instances, function(inst) {\n inst._dom_loaded();\n });\n }\n\n function do_scroll_check() {\n try {\n document$1.documentElement.doScroll('left');\n } catch(e) {\n setTimeout(do_scroll_check, 1);\n return;\n }\n\n dom_loaded_handler();\n }\n\n if (document$1.addEventListener) {\n if (document$1.readyState === 'complete') {\n // safari 4 can fire the DOMContentLoaded event before loading all\n // external JS (including this file). you will see some copypasta\n // on the internet that checks for 'complete' and 'loaded', but\n // 'loaded' is an IE thing\n dom_loaded_handler();\n } else {\n document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);\n }\n } else if (document$1.attachEvent) {\n // IE\n document$1.attachEvent('onreadystatechange', dom_loaded_handler);\n\n // check to make sure we arn't in a frame\n var toplevel = false;\n try {\n toplevel = win.frameElement === null;\n } catch(e) {\n // noop\n }\n\n if (document$1.documentElement.doScroll && toplevel) {\n do_scroll_check();\n }\n }\n\n // fallback handler, always will work\n _.register_event(win, 'load', dom_loaded_handler, true);\n};\n\nfunction init_as_module() {\n init_type = INIT_MODULE;\n mixpanel_master = new MixpanelLib();\n\n override_mp_init_func();\n mixpanel_master['init']();\n add_dom_loaded_handler();\n\n return mixpanel_master;\n}\n\n/* eslint camelcase: \"off\" */\n\nvar mixpanel = init_as_module();\n\nmodule.exports = mixpanel;\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Palestine) [ar-ps]\n//! author : Majd Al-Shihabi : https://github.com/majdal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arPs = moment.defineLocale('ar-ps', {\n months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n '_'\n ),\n monthsShort:\n 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .split('') // reversed since negative lookbehind not supported everywhere\n .reverse()\n .join('')\n .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n return numberMap[match];\n })\n .split('')\n .reverse()\n .join('')\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arPs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! author : Rasid Redzic : https://github.com/rasidre\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 'm':\n return withoutSuffix\n ? 'jedna minuta'\n : isFuture\n ? 'jednu minutu'\n : 'jedne minute';\n }\n }\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jedan sat';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: processRelativeTime,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = {\n standalone:\n 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Kurdish [ku-kmr]\n//! authors : Mazlum Özdogan : https://github.com/mergehez\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(num, withoutSuffix, key, isFuture) {\n var format = {\n s: ['çend sanîye', 'çend sanîyeyan'],\n ss: [num + ' sanîye', num + ' sanîyeyan'],\n m: ['deqîqeyek', 'deqîqeyekê'],\n mm: [num + ' deqîqe', num + ' deqîqeyan'],\n h: ['saetek', 'saetekê'],\n hh: [num + ' saet', num + ' saetan'],\n d: ['rojek', 'rojekê'],\n dd: [num + ' roj', num + ' rojan'],\n w: ['hefteyek', 'hefteyekê'],\n ww: [num + ' hefte', num + ' hefteyan'],\n M: ['mehek', 'mehekê'],\n MM: [num + ' meh', num + ' mehan'],\n y: ['salek', 'salekê'],\n yy: [num + ' sal', num + ' salan'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n // function obliqueNumSuffix(num) {\n // if(num.includes(':'))\n // num = parseInt(num.split(':')[0]);\n // else\n // num = parseInt(num);\n // return num == 0 || num % 10 == 1 ? 'ê'\n // : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n // }\n function ezafeNumSuffix(num) {\n num = '' + num;\n var l = num.substring(num.length - 1),\n ll = num.length > 1 ? num.substring(num.length - 2) : '';\n if (\n !(ll == 12 || ll == 13) &&\n (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n )\n return 'yê';\n return 'ê';\n }\n\n var kuKmr = moment.defineLocale('ku-kmr', {\n // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n // But the names below are more well known and handy\n months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n '_'\n ),\n monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n monthsParseExact: true,\n weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'bn' : 'BN';\n } else {\n return isLower ? 'pn' : 'PN';\n }\n },\n meridiemParse: /bn|BN|pn|PN/,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[a] YYYY[an]',\n LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n ll: 'Do MMM[.] YYYY[an]',\n lll: 'Do MMM[.] YYYY[an] HH:mm',\n llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n },\n calendar: {\n sameDay: '[Îro di saet] LT [de]',\n nextDay: '[Sibê di saet] LT [de]',\n nextWeek: 'dddd [di saet] LT [de]',\n lastDay: '[Duh di saet] LT [de]',\n lastWeek: 'dddd[a borî di saet] LT [de]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'di %s de',\n past: 'berî %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n ordinal: function (num, period) {\n var p = period.toLowerCase();\n if (p.includes('w') || p.includes('m')) return num + '.';\n\n return num + ezafeNumSuffix(num);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return kuKmr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays:\n 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort:\n 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'én time',\n hh: '%d timer',\n d: 'én dag',\n dd: '%d dager',\n w: 'én uke',\n ww: '%d uker',\n M: 'én måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/**\n * Outlayer Item\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size'\n ],\n factory\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n require('ev-emitter'),\n require('get-size')\n );\n } else {\n // browser global\n window.Outlayer = {};\n window.Outlayer.Item = factory(\n window.EvEmitter,\n window.getSize\n );\n }\n\n}( window, function factory( EvEmitter, getSize ) {\n'use strict';\n\n// ----- helpers ----- //\n\nfunction isEmptyObj( obj ) {\n for ( var prop in obj ) {\n return false;\n }\n prop = null;\n return true;\n}\n\n// -------------------------- CSS3 support -------------------------- //\n\n\nvar docElemStyle = document.documentElement.style;\n\nvar transitionProperty = typeof docElemStyle.transition == 'string' ?\n 'transition' : 'WebkitTransition';\nvar transformProperty = typeof docElemStyle.transform == 'string' ?\n 'transform' : 'WebkitTransform';\n\nvar transitionEndEvent = {\n WebkitTransition: 'webkitTransitionEnd',\n transition: 'transitionend'\n}[ transitionProperty ];\n\n// cache all vendor properties that could have vendor prefix\nvar vendorProperties = {\n transform: transformProperty,\n transition: transitionProperty,\n transitionDuration: transitionProperty + 'Duration',\n transitionProperty: transitionProperty + 'Property',\n transitionDelay: transitionProperty + 'Delay'\n};\n\n// -------------------------- Item -------------------------- //\n\nfunction Item( element, layout ) {\n if ( !element ) {\n return;\n }\n\n this.element = element;\n // parent layout class, i.e. Masonry, Isotope, or Packery\n this.layout = layout;\n this.position = {\n x: 0,\n y: 0\n };\n\n this._create();\n}\n\n// inherit EvEmitter\nvar proto = Item.prototype = Object.create( EvEmitter.prototype );\nproto.constructor = Item;\n\nproto._create = function() {\n // transition objects\n this._transn = {\n ingProperties: {},\n clean: {},\n onEnd: {}\n };\n\n this.css({\n position: 'absolute'\n });\n};\n\n// trigger specified handler for event type\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * apply CSS styles to element\n * @param {Object} style\n */\nproto.css = function( style ) {\n var elemStyle = this.element.style;\n\n for ( var prop in style ) {\n // use vendor property if available\n var supportedProp = vendorProperties[ prop ] || prop;\n elemStyle[ supportedProp ] = style[ prop ];\n }\n};\n\n // measure position, and sets it\nproto.getPosition = function() {\n var style = getComputedStyle( this.element );\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n var xValue = style[ isOriginLeft ? 'left' : 'right' ];\n var yValue = style[ isOriginTop ? 'top' : 'bottom' ];\n var x = parseFloat( xValue );\n var y = parseFloat( yValue );\n // convert percent to pixels\n var layoutSize = this.layout.size;\n if ( xValue.indexOf('%') != -1 ) {\n x = ( x / 100 ) * layoutSize.width;\n }\n if ( yValue.indexOf('%') != -1 ) {\n y = ( y / 100 ) * layoutSize.height;\n }\n // clean up 'auto' or other non-integer values\n x = isNaN( x ) ? 0 : x;\n y = isNaN( y ) ? 0 : y;\n // remove padding from measurement\n x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;\n y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;\n\n this.position.x = x;\n this.position.y = y;\n};\n\n// set settled position, apply padding\nproto.layoutPosition = function() {\n var layoutSize = this.layout.size;\n var style = {};\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n\n // x\n var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';\n var xProperty = isOriginLeft ? 'left' : 'right';\n var xResetProperty = isOriginLeft ? 'right' : 'left';\n\n var x = this.position.x + layoutSize[ xPadding ];\n // set in percentage or pixels\n style[ xProperty ] = this.getXValue( x );\n // reset other property\n style[ xResetProperty ] = '';\n\n // y\n var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';\n var yProperty = isOriginTop ? 'top' : 'bottom';\n var yResetProperty = isOriginTop ? 'bottom' : 'top';\n\n var y = this.position.y + layoutSize[ yPadding ];\n // set in percentage or pixels\n style[ yProperty ] = this.getYValue( y );\n // reset other property\n style[ yResetProperty ] = '';\n\n this.css( style );\n this.emitEvent( 'layout', [ this ] );\n};\n\nproto.getXValue = function( x ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && !isHorizontal ?\n ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';\n};\n\nproto.getYValue = function( y ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && isHorizontal ?\n ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';\n};\n\nproto._transitionTo = function( x, y ) {\n this.getPosition();\n // get current x & y from top/left\n var curX = this.position.x;\n var curY = this.position.y;\n\n var didNotMove = x == this.position.x && y == this.position.y;\n\n // save end position\n this.setPosition( x, y );\n\n // if did not move and not transitioning, just go to layout\n if ( didNotMove && !this.isTransitioning ) {\n this.layoutPosition();\n return;\n }\n\n var transX = x - curX;\n var transY = y - curY;\n var transitionStyle = {};\n transitionStyle.transform = this.getTranslate( transX, transY );\n\n this.transition({\n to: transitionStyle,\n onTransitionEnd: {\n transform: this.layoutPosition\n },\n isCleaning: true\n });\n};\n\nproto.getTranslate = function( x, y ) {\n // flip cooridinates if origin on right or bottom\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n x = isOriginLeft ? x : -x;\n y = isOriginTop ? y : -y;\n return 'translate3d(' + x + 'px, ' + y + 'px, 0)';\n};\n\n// non transition + transform support\nproto.goTo = function( x, y ) {\n this.setPosition( x, y );\n this.layoutPosition();\n};\n\nproto.moveTo = proto._transitionTo;\n\nproto.setPosition = function( x, y ) {\n this.position.x = parseFloat( x );\n this.position.y = parseFloat( y );\n};\n\n// ----- transition ----- //\n\n/**\n * @param {Object} style - CSS\n * @param {Function} onTransitionEnd\n */\n\n// non transition, just trigger callback\nproto._nonTransition = function( args ) {\n this.css( args.to );\n if ( args.isCleaning ) {\n this._removeStyles( args.to );\n }\n for ( var prop in args.onTransitionEnd ) {\n args.onTransitionEnd[ prop ].call( this );\n }\n};\n\n/**\n * proper transition\n * @param {Object} args - arguments\n * @param {Object} to - style to transition to\n * @param {Object} from - style to start transition from\n * @param {Boolean} isCleaning - removes transition styles after transition\n * @param {Function} onTransitionEnd - callback\n */\nproto.transition = function( args ) {\n // redirect to nonTransition if no transition duration\n if ( !parseFloat( this.layout.options.transitionDuration ) ) {\n this._nonTransition( args );\n return;\n }\n\n var _transition = this._transn;\n // keep track of onTransitionEnd callback by css property\n for ( var prop in args.onTransitionEnd ) {\n _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];\n }\n // keep track of properties that are transitioning\n for ( prop in args.to ) {\n _transition.ingProperties[ prop ] = true;\n // keep track of properties to clean up when transition is done\n if ( args.isCleaning ) {\n _transition.clean[ prop ] = true;\n }\n }\n\n // set from styles\n if ( args.from ) {\n this.css( args.from );\n // force redraw. http://blog.alexmaccaw.com/css-transitions\n var h = this.element.offsetHeight;\n // hack for JSHint to hush about unused var\n h = null;\n }\n // enable transition\n this.enableTransition( args.to );\n // set styles that are transitioning\n this.css( args.to );\n\n this.isTransitioning = true;\n\n};\n\n// dash before all cap letters, including first for\n// WebkitTransform => -webkit-transform\nfunction toDashedAll( str ) {\n return str.replace( /([A-Z])/g, function( $1 ) {\n return '-' + $1.toLowerCase();\n });\n}\n\nvar transitionProps = 'opacity,' + toDashedAll( transformProperty );\n\nproto.enableTransition = function(/* style */) {\n // HACK changing transitionProperty during a transition\n // will cause transition to jump\n if ( this.isTransitioning ) {\n return;\n }\n\n // make `transition: foo, bar, baz` from style object\n // HACK un-comment this when enableTransition can work\n // while a transition is happening\n // var transitionValues = [];\n // for ( var prop in style ) {\n // // dash-ify camelCased properties like WebkitTransition\n // prop = vendorProperties[ prop ] || prop;\n // transitionValues.push( toDashedAll( prop ) );\n // }\n // munge number to millisecond, to match stagger\n var duration = this.layout.options.transitionDuration;\n duration = typeof duration == 'number' ? duration + 'ms' : duration;\n // enable transition styles\n this.css({\n transitionProperty: transitionProps,\n transitionDuration: duration,\n transitionDelay: this.staggerDelay || 0\n });\n // listen for transition end event\n this.element.addEventListener( transitionEndEvent, this, false );\n};\n\n// ----- events ----- //\n\nproto.onwebkitTransitionEnd = function( event ) {\n this.ontransitionend( event );\n};\n\nproto.onotransitionend = function( event ) {\n this.ontransitionend( event );\n};\n\n// properties that I munge to make my life easier\nvar dashedVendorProperties = {\n '-webkit-transform': 'transform'\n};\n\nproto.ontransitionend = function( event ) {\n // disregard bubbled events from children\n if ( event.target !== this.element ) {\n return;\n }\n var _transition = this._transn;\n // get property name of transitioned property, convert to prefix-free\n var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;\n\n // remove property that has completed transitioning\n delete _transition.ingProperties[ propertyName ];\n // check if any properties are still transitioning\n if ( isEmptyObj( _transition.ingProperties ) ) {\n // all properties have completed transitioning\n this.disableTransition();\n }\n // clean style\n if ( propertyName in _transition.clean ) {\n // clean up style\n this.element.style[ event.propertyName ] = '';\n delete _transition.clean[ propertyName ];\n }\n // trigger onTransitionEnd callback\n if ( propertyName in _transition.onEnd ) {\n var onTransitionEnd = _transition.onEnd[ propertyName ];\n onTransitionEnd.call( this );\n delete _transition.onEnd[ propertyName ];\n }\n\n this.emitEvent( 'transitionEnd', [ this ] );\n};\n\nproto.disableTransition = function() {\n this.removeTransitionStyles();\n this.element.removeEventListener( transitionEndEvent, this, false );\n this.isTransitioning = false;\n};\n\n/**\n * removes style property from element\n * @param {Object} style\n**/\nproto._removeStyles = function( style ) {\n // clean up transition styles\n var cleanStyle = {};\n for ( var prop in style ) {\n cleanStyle[ prop ] = '';\n }\n this.css( cleanStyle );\n};\n\nvar cleanTransitionStyle = {\n transitionProperty: '',\n transitionDuration: '',\n transitionDelay: ''\n};\n\nproto.removeTransitionStyles = function() {\n // remove transition\n this.css( cleanTransitionStyle );\n};\n\n// ----- stagger ----- //\n\nproto.stagger = function( delay ) {\n delay = isNaN( delay ) ? 0 : delay;\n this.staggerDelay = delay + 'ms';\n};\n\n// ----- show/hide/remove ----- //\n\n// remove element from DOM\nproto.removeElem = function() {\n this.element.parentNode.removeChild( this.element );\n // remove display: none\n this.css({ display: '' });\n this.emitEvent( 'remove', [ this ] );\n};\n\nproto.remove = function() {\n // just remove element if no transition support or no transition\n if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {\n this.removeElem();\n return;\n }\n\n // start transition\n this.once( 'transitionEnd', function() {\n this.removeElem();\n });\n this.hide();\n};\n\nproto.reveal = function() {\n delete this.isHidden;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;\n\n this.transition({\n from: options.hiddenStyle,\n to: options.visibleStyle,\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onRevealTransitionEnd = function() {\n // check if still visible\n // during transition, item may have been hidden\n if ( !this.isHidden ) {\n this.emitEvent('reveal');\n }\n};\n\n/**\n * get style property use for hide/reveal transition end\n * @param {String} styleProperty - hiddenStyle/visibleStyle\n * @returns {String}\n */\nproto.getHideRevealTransitionEndProperty = function( styleProperty ) {\n var optionStyle = this.layout.options[ styleProperty ];\n // use opacity\n if ( optionStyle.opacity ) {\n return 'opacity';\n }\n // get first property\n for ( var prop in optionStyle ) {\n return prop;\n }\n};\n\nproto.hide = function() {\n // set flag\n this.isHidden = true;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;\n\n this.transition({\n from: options.visibleStyle,\n to: options.hiddenStyle,\n // keep hidden stuff hidden\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onHideTransitionEnd = function() {\n // check if still hidden\n // during transition, item may have been un-hidden\n if ( this.isHidden ) {\n this.css({ display: 'none' });\n this.emitEvent('hide');\n }\n};\n\nproto.destroy = function() {\n this.css({\n position: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n transition: '',\n transform: ''\n });\n};\n\nreturn Item;\n\n}));\n","/*!\n * Outlayer v2.1.1\n * the brains and guts of a layout library\n * MIT license\n */\n\n( function( window, factory ) {\n 'use strict';\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './item'\n ],\n function( EvEmitter, getSize, utils, Item ) {\n return factory( window, EvEmitter, getSize, utils, Item);\n }\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./item')\n );\n } else {\n // browser global\n window.Outlayer = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n window.Outlayer.Item\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize, utils, Item ) {\n'use strict';\n\n// ----- vars ----- //\n\nvar console = window.console;\nvar jQuery = window.jQuery;\nvar noop = function() {};\n\n// -------------------------- Outlayer -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Outlayer intances\nvar instances = {};\n\n\n/**\n * @param {Element, String} element\n * @param {Object} options\n * @constructor\n */\nfunction Outlayer( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for ' + this.constructor.namespace +\n ': ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // add id for Outlayer.getFromElement\n var id = ++GUID;\n this.element.outlayerGUID = id; // expando\n instances[ id ] = this; // associate via id\n\n // kick it off\n this._create();\n\n var isInitLayout = this._getOption('initLayout');\n if ( isInitLayout ) {\n this.layout();\n }\n}\n\n// settings are for internal use only\nOutlayer.namespace = 'outlayer';\nOutlayer.Item = Item;\n\n// default options\nOutlayer.defaults = {\n containerStyle: {\n position: 'relative'\n },\n initLayout: true,\n originLeft: true,\n originTop: true,\n resize: true,\n resizeContainer: true,\n // item options\n transitionDuration: '0.4s',\n hiddenStyle: {\n opacity: 0,\n transform: 'scale(0.001)'\n },\n visibleStyle: {\n opacity: 1,\n transform: 'scale(1)'\n }\n};\n\nvar proto = Outlayer.prototype;\n// inherit EvEmitter\nutils.extend( proto, EvEmitter.prototype );\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\n/**\n * get backwards compatible option value, check old name\n */\nproto._getOption = function( option ) {\n var oldOption = this.constructor.compatOptions[ option ];\n return oldOption && this.options[ oldOption ] !== undefined ?\n this.options[ oldOption ] : this.options[ option ];\n};\n\nOutlayer.compatOptions = {\n // currentName: oldName\n initLayout: 'isInitLayout',\n horizontal: 'isHorizontal',\n layoutInstant: 'isLayoutInstant',\n originLeft: 'isOriginLeft',\n originTop: 'isOriginTop',\n resize: 'isResizeBound',\n resizeContainer: 'isResizingContainer'\n};\n\nproto._create = function() {\n // get items from children\n this.reloadItems();\n // elements that affect layout, but are not laid out\n this.stamps = [];\n this.stamp( this.options.stamp );\n // set container style\n utils.extend( this.element.style, this.options.containerStyle );\n\n // bind resize method\n var canBindResize = this._getOption('resize');\n if ( canBindResize ) {\n this.bindResize();\n }\n};\n\n// goes through all children again and gets bricks in proper order\nproto.reloadItems = function() {\n // collection of item elements\n this.items = this._itemize( this.element.children );\n};\n\n\n/**\n * turn elements into Outlayer.Items to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Outlayer Items\n */\nproto._itemize = function( elems ) {\n\n var itemElems = this._filterFindItemElements( elems );\n var Item = this.constructor.Item;\n\n // create new Outlayer Items for collection\n var items = [];\n for ( var i=0; i < itemElems.length; i++ ) {\n var elem = itemElems[i];\n var item = new Item( elem, this );\n items.push( item );\n }\n\n return items;\n};\n\n/**\n * get item elements to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - item elements\n */\nproto._filterFindItemElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.itemSelector );\n};\n\n/**\n * getter method for getting item elements\n * @returns {Array} elems - collection of item elements\n */\nproto.getItemElements = function() {\n return this.items.map( function( item ) {\n return item.element;\n });\n};\n\n// ----- init & layout ----- //\n\n/**\n * lays out all items\n */\nproto.layout = function() {\n this._resetLayout();\n this._manageStamps();\n\n // don't animate first layout\n var layoutInstant = this._getOption('layoutInstant');\n var isInstant = layoutInstant !== undefined ?\n layoutInstant : !this._isLayoutInited;\n this.layoutItems( this.items, isInstant );\n\n // flag for initalized\n this._isLayoutInited = true;\n};\n\n// _init is alias for layout\nproto._init = proto.layout;\n\n/**\n * logic before any new layout\n */\nproto._resetLayout = function() {\n this.getSize();\n};\n\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * get measurement from option, for columnWidth, rowHeight, gutter\n * if option is String -> get element from selector string, & get size of element\n * if option is Element -> get size of element\n * else use option as a number\n *\n * @param {String} measurement\n * @param {String} size - width or height\n * @private\n */\nproto._getMeasurement = function( measurement, size ) {\n var option = this.options[ measurement ];\n var elem;\n if ( !option ) {\n // default to 0\n this[ measurement ] = 0;\n } else {\n // use option as an element\n if ( typeof option == 'string' ) {\n elem = this.element.querySelector( option );\n } else if ( option instanceof HTMLElement ) {\n elem = option;\n }\n // use size of element, if element\n this[ measurement ] = elem ? getSize( elem )[ size ] : option;\n }\n};\n\n/**\n * layout a collection of item elements\n * @api public\n */\nproto.layoutItems = function( items, isInstant ) {\n items = this._getItemsForLayout( items );\n\n this._layoutItems( items, isInstant );\n\n this._postLayout();\n};\n\n/**\n * get the items to be laid out\n * you may want to skip over some items\n * @param {Array} items\n * @returns {Array} items\n */\nproto._getItemsForLayout = function( items ) {\n return items.filter( function( item ) {\n return !item.isIgnored;\n });\n};\n\n/**\n * layout items\n * @param {Array} items\n * @param {Boolean} isInstant\n */\nproto._layoutItems = function( items, isInstant ) {\n this._emitCompleteOnItems( 'layout', items );\n\n if ( !items || !items.length ) {\n // no items, emit event with empty array\n return;\n }\n\n var queue = [];\n\n items.forEach( function( item ) {\n // get x/y object from method\n var position = this._getItemLayoutPosition( item );\n // enqueue\n position.item = item;\n position.isInstant = isInstant || item.isLayoutInstant;\n queue.push( position );\n }, this );\n\n this._processLayoutQueue( queue );\n};\n\n/**\n * get item layout position\n * @param {Outlayer.Item} item\n * @returns {Object} x and y position\n */\nproto._getItemLayoutPosition = function( /* item */ ) {\n return {\n x: 0,\n y: 0\n };\n};\n\n/**\n * iterate over array and position each item\n * Reason being - separating this logic prevents 'layout invalidation'\n * thx @paul_irish\n * @param {Array} queue\n */\nproto._processLayoutQueue = function( queue ) {\n this.updateStagger();\n queue.forEach( function( obj, i ) {\n this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i );\n }, this );\n};\n\n// set stagger from option in milliseconds number\nproto.updateStagger = function() {\n var stagger = this.options.stagger;\n if ( stagger === null || stagger === undefined ) {\n this.stagger = 0;\n return;\n }\n this.stagger = getMilliseconds( stagger );\n return this.stagger;\n};\n\n/**\n * Sets position of item in DOM\n * @param {Outlayer.Item} item\n * @param {Number} x - horizontal position\n * @param {Number} y - vertical position\n * @param {Boolean} isInstant - disables transitions\n */\nproto._positionItem = function( item, x, y, isInstant, i ) {\n if ( isInstant ) {\n // if not transition, just set CSS\n item.goTo( x, y );\n } else {\n item.stagger( i * this.stagger );\n item.moveTo( x, y );\n }\n};\n\n/**\n * Any logic you want to do after each layout,\n * i.e. size the container\n */\nproto._postLayout = function() {\n this.resizeContainer();\n};\n\nproto.resizeContainer = function() {\n var isResizingContainer = this._getOption('resizeContainer');\n if ( !isResizingContainer ) {\n return;\n }\n var size = this._getContainerSize();\n if ( size ) {\n this._setContainerMeasure( size.width, true );\n this._setContainerMeasure( size.height, false );\n }\n};\n\n/**\n * Sets width or height of container if returned\n * @returns {Object} size\n * @param {Number} width\n * @param {Number} height\n */\nproto._getContainerSize = noop;\n\n/**\n * @param {Number} measure - size of width or height\n * @param {Boolean} isWidth\n */\nproto._setContainerMeasure = function( measure, isWidth ) {\n if ( measure === undefined ) {\n return;\n }\n\n var elemSize = this.size;\n // add padding and border width if border box\n if ( elemSize.isBorderBox ) {\n measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight +\n elemSize.borderLeftWidth + elemSize.borderRightWidth :\n elemSize.paddingBottom + elemSize.paddingTop +\n elemSize.borderTopWidth + elemSize.borderBottomWidth;\n }\n\n measure = Math.max( measure, 0 );\n this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px';\n};\n\n/**\n * emit eventComplete on a collection of items events\n * @param {String} eventName\n * @param {Array} items - Outlayer.Items\n */\nproto._emitCompleteOnItems = function( eventName, items ) {\n var _this = this;\n function onComplete() {\n _this.dispatchEvent( eventName + 'Complete', null, [ items ] );\n }\n\n var count = items.length;\n if ( !items || !count ) {\n onComplete();\n return;\n }\n\n var doneCount = 0;\n function tick() {\n doneCount++;\n if ( doneCount == count ) {\n onComplete();\n }\n }\n\n // bind callback\n items.forEach( function( item ) {\n item.once( eventName, tick );\n });\n};\n\n/**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n // add original event to arguments\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery ) {\n // set this.$element\n this.$element = this.$element || jQuery( this.element );\n if ( event ) {\n // create jQuery event\n var $event = jQuery.Event( event );\n $event.type = type;\n this.$element.trigger( $event, args );\n } else {\n // just trigger with type if no event available\n this.$element.trigger( type, args );\n }\n }\n};\n\n// -------------------------- ignore & stamps -------------------------- //\n\n\n/**\n * keep item in collection, but do not lay it out\n * ignored items do not get skipped in layout\n * @param {Element} elem\n */\nproto.ignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n item.isIgnored = true;\n }\n};\n\n/**\n * return item to layout collection\n * @param {Element} elem\n */\nproto.unignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n delete item.isIgnored;\n }\n};\n\n/**\n * adds elements to stamps\n * @param {NodeList, Array, Element, or String} elems\n */\nproto.stamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ) {\n return;\n }\n\n this.stamps = this.stamps.concat( elems );\n // ignore\n elems.forEach( this.ignore, this );\n};\n\n/**\n * removes elements to stamps\n * @param {NodeList, Array, or Element} elems\n */\nproto.unstamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ){\n return;\n }\n\n elems.forEach( function( elem ) {\n // filter out removed stamp elements\n utils.removeFrom( this.stamps, elem );\n this.unignore( elem );\n }, this );\n};\n\n/**\n * finds child elements\n * @param {NodeList, Array, Element, or String} elems\n * @returns {Array} elems\n */\nproto._find = function( elems ) {\n if ( !elems ) {\n return;\n }\n // if string, use argument as selector string\n if ( typeof elems == 'string' ) {\n elems = this.element.querySelectorAll( elems );\n }\n elems = utils.makeArray( elems );\n return elems;\n};\n\nproto._manageStamps = function() {\n if ( !this.stamps || !this.stamps.length ) {\n return;\n }\n\n this._getBoundingRect();\n\n this.stamps.forEach( this._manageStamp, this );\n};\n\n// update boundingLeft / Top\nproto._getBoundingRect = function() {\n // get bounding rect for container element\n var boundingRect = this.element.getBoundingClientRect();\n var size = this.size;\n this._boundingRect = {\n left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,\n top: boundingRect.top + size.paddingTop + size.borderTopWidth,\n right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ),\n bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth )\n };\n};\n\n/**\n * @param {Element} stamp\n**/\nproto._manageStamp = noop;\n\n/**\n * get x/y position of element relative to container element\n * @param {Element} elem\n * @returns {Object} offset - has left, top, right, bottom\n */\nproto._getElementOffset = function( elem ) {\n var boundingRect = elem.getBoundingClientRect();\n var thisRect = this._boundingRect;\n var size = getSize( elem );\n var offset = {\n left: boundingRect.left - thisRect.left - size.marginLeft,\n top: boundingRect.top - thisRect.top - size.marginTop,\n right: thisRect.right - boundingRect.right - size.marginRight,\n bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom\n };\n return offset;\n};\n\n// -------------------------- resize -------------------------- //\n\n// enable event handlers for listeners\n// i.e. resize -> onresize\nproto.handleEvent = utils.handleEvent;\n\n/**\n * Bind layout to window resizing\n */\nproto.bindResize = function() {\n window.addEventListener( 'resize', this );\n this.isResizeBound = true;\n};\n\n/**\n * Unbind layout to window resizing\n */\nproto.unbindResize = function() {\n window.removeEventListener( 'resize', this );\n this.isResizeBound = false;\n};\n\nproto.onresize = function() {\n this.resize();\n};\n\nutils.debounceMethod( Outlayer, 'onresize', 100 );\n\nproto.resize = function() {\n // don't trigger if size did not change\n // or if resize was unbound. See #9\n if ( !this.isResizeBound || !this.needsResizeLayout() ) {\n return;\n }\n\n this.layout();\n};\n\n/**\n * check if layout is needed post layout\n * @returns Boolean\n */\nproto.needsResizeLayout = function() {\n var size = getSize( this.element );\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var hasSizes = this.size && size;\n return hasSizes && size.innerWidth !== this.size.innerWidth;\n};\n\n// -------------------------- methods -------------------------- //\n\n/**\n * add items to Outlayer instance\n * @param {Array or NodeList or Element} elems\n * @returns {Array} items - Outlayer.Items\n**/\nproto.addItems = function( elems ) {\n var items = this._itemize( elems );\n // add items to collection\n if ( items.length ) {\n this.items = this.items.concat( items );\n }\n return items;\n};\n\n/**\n * Layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\nproto.appended = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // layout and reveal just the new items\n this.layoutItems( items, true );\n this.reveal( items );\n};\n\n/**\n * Layout prepended elements\n * @param {Array or NodeList or Element} elems\n */\nproto.prepended = function( elems ) {\n var items = this._itemize( elems );\n if ( !items.length ) {\n return;\n }\n // add items to beginning of collection\n var previousItems = this.items.slice(0);\n this.items = items.concat( previousItems );\n // start new layout\n this._resetLayout();\n this._manageStamps();\n // layout new stuff without transition\n this.layoutItems( items, true );\n this.reveal( items );\n // layout previous items\n this.layoutItems( previousItems );\n};\n\n/**\n * reveal a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.reveal = function( items ) {\n this._emitCompleteOnItems( 'reveal', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.reveal();\n });\n};\n\n/**\n * hide a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.hide = function( items ) {\n this._emitCompleteOnItems( 'hide', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.hide();\n });\n};\n\n/**\n * reveal item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.revealItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.reveal( items );\n};\n\n/**\n * hide item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.hideItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.hide( items );\n};\n\n/**\n * get Outlayer.Item, given an Element\n * @param {Element} elem\n * @param {Function} callback\n * @returns {Outlayer.Item} item\n */\nproto.getItem = function( elem ) {\n // loop through items to get the one that matches\n for ( var i=0; i < this.items.length; i++ ) {\n var item = this.items[i];\n if ( item.element == elem ) {\n // return item\n return item;\n }\n }\n};\n\n/**\n * get collection of Outlayer.Items, given Elements\n * @param {Array} elems\n * @returns {Array} items - Outlayer.Items\n */\nproto.getItems = function( elems ) {\n elems = utils.makeArray( elems );\n var items = [];\n elems.forEach( function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n items.push( item );\n }\n }, this );\n\n return items;\n};\n\n/**\n * remove element(s) from instance and DOM\n * @param {Array or NodeList or Element} elems\n */\nproto.remove = function( elems ) {\n var removeItems = this.getItems( elems );\n\n this._emitCompleteOnItems( 'remove', removeItems );\n\n // bail if no items to remove\n if ( !removeItems || !removeItems.length ) {\n return;\n }\n\n removeItems.forEach( function( item ) {\n item.remove();\n // remove item from collection\n utils.removeFrom( this.items, item );\n }, this );\n};\n\n// ----- destroy ----- //\n\n// remove and disable Outlayer instance\nproto.destroy = function() {\n // clean up dynamic styles\n var style = this.element.style;\n style.height = '';\n style.position = '';\n style.width = '';\n // destroy items\n this.items.forEach( function( item ) {\n item.destroy();\n });\n\n this.unbindResize();\n\n var id = this.element.outlayerGUID;\n delete instances[ id ]; // remove reference to instance by id\n delete this.element.outlayerGUID;\n // remove data for jQuery\n if ( jQuery ) {\n jQuery.removeData( this.element, this.constructor.namespace );\n }\n\n};\n\n// -------------------------- data -------------------------- //\n\n/**\n * get Outlayer instance from element\n * @param {Element} elem\n * @returns {Outlayer}\n */\nOutlayer.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.outlayerGUID;\n return id && instances[ id ];\n};\n\n\n// -------------------------- create Outlayer class -------------------------- //\n\n/**\n * create a layout class\n * @param {String} namespace\n */\nOutlayer.create = function( namespace, options ) {\n // sub-class Outlayer\n var Layout = subclass( Outlayer );\n // apply new options and compatOptions\n Layout.defaults = utils.extend( {}, Outlayer.defaults );\n utils.extend( Layout.defaults, options );\n Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions );\n\n Layout.namespace = namespace;\n\n Layout.data = Outlayer.data;\n\n // sub-class Item\n Layout.Item = subclass( Item );\n\n // -------------------------- declarative -------------------------- //\n\n utils.htmlInit( Layout, namespace );\n\n // -------------------------- jQuery bridge -------------------------- //\n\n // make into jQuery plugin\n if ( jQuery && jQuery.bridget ) {\n jQuery.bridget( namespace, Layout );\n }\n\n return Layout;\n};\n\nfunction subclass( Parent ) {\n function SubClass() {\n Parent.apply( this, arguments );\n }\n\n SubClass.prototype = Object.create( Parent.prototype );\n SubClass.prototype.constructor = SubClass;\n\n return SubClass;\n}\n\n// ----- helpers ----- //\n\n// how many milliseconds are in each unit\nvar msUnits = {\n ms: 1,\n s: 1000\n};\n\n// munge time-like parameter into millisecond number\n// '0.4s' -> 40\nfunction getMilliseconds( time ) {\n if ( typeof time == 'number' ) {\n return time;\n }\n var matches = time.match( /(^\\d*\\.?\\d*)(\\w*)/ );\n var num = matches && matches[1];\n var unit = matches && matches[2];\n if ( !num.length ) {\n return 0;\n }\n num = parseFloat( num );\n var mult = msUnits[ unit ] || 1;\n return num * mult;\n}\n\n// ----- fin ----- //\n\n// back in global\nOutlayer.Item = Item;\n\nreturn Outlayer;\n\n}));\n","/*! pdfmake v0.2.10, @license MIT, @link http://pdfmake.org */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 41783:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\n// The following break classes are handled by the pair table\nexports.OP = 0; // Opening punctuation\nexports.CL = 1; // Closing punctuation\nexports.CP = 2; // Closing parenthesis\nexports.QU = 3; // Ambiguous quotation\nexports.GL = 4; // Glue\nexports.NS = 5; // Non-starters\nexports.EX = 6; // Exclamation/Interrogation\nexports.SY = 7; // Symbols allowing break after\nexports.IS = 8; // Infix separator\nexports.PR = 9; // Prefix\nexports.PO = 10; // Postfix\nexports.NU = 11; // Numeric\nexports.AL = 12; // Alphabetic\nexports.HL = 13; // Hebrew Letter\nexports.ID = 14; // Ideographic\nexports.IN = 15; // Inseparable characters\nexports.HY = 16; // Hyphen\nexports.BA = 17; // Break after\nexports.BB = 18; // Break before\nexports.B2 = 19; // Break on either side (but not pair)\nexports.ZW = 20; // Zero-width space\nexports.CM = 21; // Combining marks\nexports.WJ = 22; // Word joiner\nexports.H2 = 23; // Hangul LV\nexports.H3 = 24; // Hangul LVT\nexports.JL = 25; // Hangul L Jamo\nexports.JV = 26; // Hangul V Jamo\nexports.JT = 27; // Hangul T Jamo\nexports.RI = 28; // Regional Indicator\nexports.EB = 29; // Emoji Base\nexports.EM = 30; // Emoji Modifier\nexports.ZWJ = 31; // Zero Width Joiner\nexports.CB = 32; // Contingent break\n\n// The following break classes are not handled by the pair table\nexports.AI = 33; // Ambiguous (Alphabetic or Ideograph)\nexports.BK = 34; // Break (mandatory)\nexports.CJ = 35; // Conditional Japanese Starter\nexports.CR = 36; // Carriage return\nexports.LF = 37; // Line feed\nexports.NL = 38; // Next line\nexports.SA = 39; // South-East Asian\nexports.SG = 40; // Surrogates\nexports.SP = 41; // Space\nexports.XX = 42; // Unknown\n\n/***/ }),\n\n/***/ 98282:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nvar CI_BRK, CP_BRK, DI_BRK, IN_BRK, PR_BRK;\nexports.DI_BRK = DI_BRK = 0; // Direct break opportunity\nexports.IN_BRK = IN_BRK = 1; // Indirect break opportunity\nexports.CI_BRK = CI_BRK = 2; // Indirect break opportunity for combining marks\nexports.CP_BRK = CP_BRK = 3; // Prohibited break for combining marks\nexports.PR_BRK = PR_BRK = 4; // Prohibited break\n\n// Based on example pair table from https://www.unicode.org/reports/tr14/tr14-37.html#Table2\n// - ZWJ special processing for LB8a of Revision 41\n// - CB manually added as per Rule LB20\n// - CL, CP, NS, SY, IS, PR, PO, HY, BA, B2 and RI manually adjusted as per LB22 of Revision 45\nexports.pairTable = [\n//OP , CL , CP , QU , GL , NS , EX , SY , IS , PR , PO , NU , AL , HL , ID , IN , HY , BA , BB , B2 , ZW , CM , WJ , H2 , H3 , JL , JV , JT , RI , EB , EM , ZWJ , CB\n[PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, CP_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK],\n// OP\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// CL\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// CP\n[PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK],\n// QU\n[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK],\n// GL\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// NS\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// EX\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// SY\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// IS\n[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK],\n// PR\n[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// PO\n[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// NU\n[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// AL\n[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// HL\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// ID\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// IN\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// HY\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// BA\n[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK],\n// BB\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// B2\n[DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK],\n// ZW\n[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// CM\n[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK],\n// WJ\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// H2\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// H3\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// JL\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// JV\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// JT\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// RI\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK],\n// EB\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// EM\n[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],\n// ZWJ\n[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK] // CB\n];\n\n/***/ }),\n\n/***/ 57013:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(18756);\nexports.EncodeStream = __webpack_require__(16176);\nexports.DecodeStream = __webpack_require__(78984);\nexports.Array = __webpack_require__(38637);\nexports.LazyArray = __webpack_require__(88687);\nexports.Bitfield = __webpack_require__(72959);\nexports.Boolean = __webpack_require__(64888);\nexports.Buffer = __webpack_require__(77324);\nexports.Enum = __webpack_require__(71499);\nexports.Optional = __webpack_require__(72526);\nexports.Reserved = __webpack_require__(10298);\nexports.String = __webpack_require__(36291);\nexports.Struct = __webpack_require__(2731);\nexports.VersionedStruct = __webpack_require__(48084);\nvar utils = __webpack_require__(76949);\nvar NumberT = __webpack_require__(63787);\nvar Pointer = __webpack_require__(41545);\nObject.assign(exports, utils, NumberT, Pointer);\n\n/***/ }),\n\n/***/ 38637:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(65292);\n__webpack_require__(73844);\n__webpack_require__(69330);\n__webpack_require__(11765);\n__webpack_require__(81755);\n__webpack_require__(20731);\n__webpack_require__(24863);\n__webpack_require__(14032);\n__webpack_require__(61726);\n__webpack_require__(57114);\n__webpack_require__(58281);\n__webpack_require__(94712);\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nvar _require = __webpack_require__(63787),\n NumberT = _require.Number;\nvar utils = __webpack_require__(76949);\nvar ArrayT = /*#__PURE__*/function () {\n function ArrayT(type, length, lengthType) {\n if (lengthType === void 0) {\n lengthType = 'count';\n }\n this.type = type;\n this.length = length;\n this.lengthType = lengthType;\n }\n var _proto = ArrayT.prototype;\n _proto.decode = function decode(stream, parent) {\n var length;\n var pos = stream.pos;\n var res = [];\n var ctx = parent;\n if (this.length != null) {\n length = utils.resolveLength(this.length, stream, parent);\n }\n if (this.length instanceof NumberT) {\n // define hidden properties\n Object.defineProperties(res, {\n parent: {\n value: parent\n },\n _startOffset: {\n value: pos\n },\n _currentOffset: {\n value: 0,\n writable: true\n },\n _length: {\n value: length\n }\n });\n ctx = res;\n }\n if (length == null || this.lengthType === 'bytes') {\n var target = length != null ? stream.pos + length : (parent != null ? parent._length : undefined) ? parent._startOffset + parent._length : stream.length;\n while (stream.pos < target) {\n res.push(this.type.decode(stream, ctx));\n }\n } else {\n for (var i = 0, end = length; i < end; i++) {\n res.push(this.type.decode(stream, ctx));\n }\n }\n return res;\n };\n _proto.size = function size(array, ctx) {\n if (!array) {\n return this.type.size(null, ctx) * utils.resolveLength(this.length, null, ctx);\n }\n var size = 0;\n if (this.length instanceof NumberT) {\n size += this.length.size();\n ctx = {\n parent: ctx\n };\n }\n for (var _iterator = _createForOfIteratorHelperLoose(array), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n size += this.type.size(item, ctx);\n }\n return size;\n };\n _proto.encode = function encode(stream, array, parent) {\n var ctx = parent;\n if (this.length instanceof NumberT) {\n ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent: parent\n };\n ctx.pointerOffset = stream.pos + this.size(array, ctx);\n this.length.encode(stream, array.length);\n }\n for (var _iterator2 = _createForOfIteratorHelperLoose(array), _step2; !(_step2 = _iterator2()).done;) {\n var item = _step2.value;\n this.type.encode(stream, item, ctx);\n }\n if (this.length instanceof NumberT) {\n var i = 0;\n while (i < ctx.pointers.length) {\n var ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val);\n }\n }\n };\n return ArrayT;\n}();\nmodule.exports = ArrayT;\n\n/***/ }),\n\n/***/ 72959:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(74516);\nvar Bitfield = /*#__PURE__*/function () {\n function Bitfield(type, flags) {\n if (flags === void 0) {\n flags = [];\n }\n this.type = type;\n this.flags = flags;\n }\n var _proto = Bitfield.prototype;\n _proto.decode = function decode(stream) {\n var val = this.type.decode(stream);\n var res = {};\n for (var i = 0; i < this.flags.length; i++) {\n var flag = this.flags[i];\n if (flag != null) {\n res[flag] = !!(val & 1 << i);\n }\n }\n return res;\n };\n _proto.size = function size() {\n return this.type.size();\n };\n _proto.encode = function encode(stream, keys) {\n var val = 0;\n for (var i = 0; i < this.flags.length; i++) {\n var flag = this.flags[i];\n if (flag != null) {\n if (keys[flag]) {\n val |= 1 << i;\n }\n }\n }\n return this.type.encode(stream, val);\n };\n return Bitfield;\n}();\nmodule.exports = Bitfield;\n\n/***/ }),\n\n/***/ 64888:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar BooleanT = /*#__PURE__*/function () {\n function BooleanT(type) {\n this.type = type;\n }\n var _proto = BooleanT.prototype;\n _proto.decode = function decode(stream, parent) {\n return !!this.type.decode(stream, parent);\n };\n _proto.size = function size(val, parent) {\n return this.type.size(val, parent);\n };\n _proto.encode = function encode(stream, val, parent) {\n return this.type.encode(stream, +val, parent);\n };\n return BooleanT;\n}();\nmodule.exports = BooleanT;\n\n/***/ }),\n\n/***/ 77324:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(76949);\nvar _require = __webpack_require__(63787),\n NumberT = _require.Number;\nvar BufferT = /*#__PURE__*/function () {\n function BufferT(length) {\n this.length = length;\n }\n var _proto = BufferT.prototype;\n _proto.decode = function decode(stream, parent) {\n var length = utils.resolveLength(this.length, stream, parent);\n return stream.readBuffer(length);\n };\n _proto.size = function size(val, parent) {\n if (!val) {\n return utils.resolveLength(this.length, null, parent);\n }\n return val.length;\n };\n _proto.encode = function encode(stream, buf, parent) {\n if (this.length instanceof NumberT) {\n this.length.encode(stream, buf.length);\n }\n return stream.writeBuffer(buf);\n };\n return BufferT;\n}();\nmodule.exports = BufferT;\n\n/***/ }),\n\n/***/ 78984:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n\n\n__webpack_require__(20731);\n__webpack_require__(14032);\n__webpack_require__(61726);\n__webpack_require__(57114);\n__webpack_require__(46467);\nvar iconv;\ntry {\n iconv = __webpack_require__(54171);\n} catch (error) {}\nvar DecodeStream = /*#__PURE__*/function () {\n function DecodeStream(buffer) {\n this.buffer = buffer;\n this.pos = 0;\n this.length = this.buffer.length;\n }\n var _proto = DecodeStream.prototype;\n _proto.readString = function readString(length, encoding) {\n if (encoding === void 0) {\n encoding = 'ascii';\n }\n switch (encoding) {\n case 'utf16le':\n case 'ucs2':\n case 'utf8':\n case 'ascii':\n return this.buffer.toString(encoding, this.pos, this.pos += length);\n case 'utf16be':\n var buf = Buffer.from(this.readBuffer(length));\n\n // swap the bytes\n for (var i = 0, end = buf.length - 1; i < end; i += 2) {\n var byte = buf[i];\n buf[i] = buf[i + 1];\n buf[i + 1] = byte;\n }\n return buf.toString('utf16le');\n default:\n buf = this.readBuffer(length);\n if (iconv) {\n try {\n return iconv.decode(buf, encoding);\n } catch (error1) {}\n }\n return buf;\n }\n };\n _proto.readBuffer = function readBuffer(length) {\n return this.buffer.slice(this.pos, this.pos += length);\n };\n _proto.readUInt24BE = function readUInt24BE() {\n return (this.readUInt16BE() << 8) + this.readUInt8();\n };\n _proto.readUInt24LE = function readUInt24LE() {\n return this.readUInt16LE() + (this.readUInt8() << 16);\n };\n _proto.readInt24BE = function readInt24BE() {\n return (this.readInt16BE() << 8) + this.readUInt8();\n };\n _proto.readInt24LE = function readInt24LE() {\n return this.readUInt16LE() + (this.readInt8() << 16);\n };\n return DecodeStream;\n}();\nDecodeStream.TYPES = {\n UInt8: 1,\n UInt16: 2,\n UInt24: 3,\n UInt32: 4,\n Int8: 1,\n Int16: 2,\n Int24: 3,\n Int32: 4,\n Float: 4,\n Double: 8\n};\nvar _loop = function _loop(key) {\n if (key.slice(0, 4) === 'read') {\n var bytes = DecodeStream.TYPES[key.replace(/read|[BL]E/g, '')];\n DecodeStream.prototype[key] = function () {\n var ret = this.buffer[key](this.pos);\n this.pos += bytes;\n return ret;\n };\n }\n};\nfor (var key in Buffer.prototype) {\n _loop(key);\n}\nmodule.exports = DecodeStream;\n\n/***/ }),\n\n/***/ 16176:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n\n\n__webpack_require__(41584);\n__webpack_require__(20731);\n__webpack_require__(61726);\n__webpack_require__(46467);\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar iconv;\nvar stream = __webpack_require__(9760);\nvar DecodeStream = __webpack_require__(78984);\ntry {\n iconv = __webpack_require__(54171);\n} catch (error) {}\nvar EncodeStream = /*#__PURE__*/function (_stream$Readable) {\n _inheritsLoose(EncodeStream, _stream$Readable);\n function EncodeStream(bufferSize) {\n var _this;\n if (bufferSize === void 0) {\n bufferSize = 65536;\n }\n _this = _stream$Readable.apply(this, arguments) || this;\n _this.buffer = Buffer.alloc(bufferSize);\n _this.bufferOffset = 0;\n _this.pos = 0;\n return _this;\n }\n\n // do nothing, required by node\n var _proto = EncodeStream.prototype;\n _proto._read = function _read() {};\n _proto.ensure = function ensure(bytes) {\n if (this.bufferOffset + bytes > this.buffer.length) {\n return this.flush();\n }\n };\n _proto.flush = function flush() {\n if (this.bufferOffset > 0) {\n this.push(Buffer.from(this.buffer.slice(0, this.bufferOffset)));\n return this.bufferOffset = 0;\n }\n };\n _proto.writeBuffer = function writeBuffer(buffer) {\n this.flush();\n this.push(buffer);\n return this.pos += buffer.length;\n };\n _proto.writeString = function writeString(string, encoding) {\n if (encoding === void 0) {\n encoding = 'ascii';\n }\n switch (encoding) {\n case 'utf16le':\n case 'ucs2':\n case 'utf8':\n case 'ascii':\n return this.writeBuffer(Buffer.from(string, encoding));\n case 'utf16be':\n var buf = Buffer.from(string, 'utf16le');\n\n // swap the bytes\n for (var i = 0, end = buf.length - 1; i < end; i += 2) {\n var byte = buf[i];\n buf[i] = buf[i + 1];\n buf[i + 1] = byte;\n }\n return this.writeBuffer(buf);\n default:\n if (iconv) {\n return this.writeBuffer(iconv.encode(string, encoding));\n } else {\n throw new Error('Install iconv-lite to enable additional string encodings.');\n }\n }\n };\n _proto.writeUInt24BE = function writeUInt24BE(val) {\n this.ensure(3);\n this.buffer[this.bufferOffset++] = val >>> 16 & 0xff;\n this.buffer[this.bufferOffset++] = val >>> 8 & 0xff;\n this.buffer[this.bufferOffset++] = val & 0xff;\n return this.pos += 3;\n };\n _proto.writeUInt24LE = function writeUInt24LE(val) {\n this.ensure(3);\n this.buffer[this.bufferOffset++] = val & 0xff;\n this.buffer[this.bufferOffset++] = val >>> 8 & 0xff;\n this.buffer[this.bufferOffset++] = val >>> 16 & 0xff;\n return this.pos += 3;\n };\n _proto.writeInt24BE = function writeInt24BE(val) {\n if (val >= 0) {\n return this.writeUInt24BE(val);\n } else {\n return this.writeUInt24BE(val + 0xffffff + 1);\n }\n };\n _proto.writeInt24LE = function writeInt24LE(val) {\n if (val >= 0) {\n return this.writeUInt24LE(val);\n } else {\n return this.writeUInt24LE(val + 0xffffff + 1);\n }\n };\n _proto.fill = function fill(val, length) {\n if (length < this.buffer.length) {\n this.ensure(length);\n this.buffer.fill(val, this.bufferOffset, this.bufferOffset + length);\n this.bufferOffset += length;\n return this.pos += length;\n } else {\n var buf = Buffer.alloc(length);\n buf.fill(val);\n return this.writeBuffer(buf);\n }\n };\n _proto.end = function end() {\n this.flush();\n return this.push(null);\n };\n return EncodeStream;\n}(stream.Readable);\nvar _loop = function _loop(key) {\n if (key.slice(0, 5) === 'write') {\n var bytes = +DecodeStream.TYPES[key.replace(/write|[BL]E/g, '')];\n EncodeStream.prototype[key] = function (value) {\n this.ensure(bytes);\n this.buffer[key](value, this.bufferOffset);\n this.bufferOffset += bytes;\n return this.pos += bytes;\n };\n }\n};\nfor (var key in Buffer.prototype) {\n _loop(key);\n}\nmodule.exports = EncodeStream;\n\n/***/ }),\n\n/***/ 71499:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar Enum = /*#__PURE__*/function () {\n function Enum(type, options) {\n if (options === void 0) {\n options = [];\n }\n this.type = type;\n this.options = options;\n }\n var _proto = Enum.prototype;\n _proto.decode = function decode(stream) {\n var index = this.type.decode(stream);\n return this.options[index] || index;\n };\n _proto.size = function size() {\n return this.type.size();\n };\n _proto.encode = function encode(stream, val) {\n var index = this.options.indexOf(val);\n if (index === -1) {\n throw new Error(\"Unknown option in enum: \" + val);\n }\n return this.type.encode(stream, index);\n };\n return Enum;\n}();\nmodule.exports = Enum;\n\n/***/ }),\n\n/***/ 88687:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(14032);\n__webpack_require__(68067);\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar ArrayT = __webpack_require__(38637);\nvar _require = __webpack_require__(63787),\n NumberT = _require.Number;\nvar utils = __webpack_require__(76949);\nvar _require2 = __webpack_require__(7187),\n _inspect = _require2.inspect;\nvar LazyArrayT = /*#__PURE__*/function (_ArrayT) {\n _inheritsLoose(LazyArrayT, _ArrayT);\n function LazyArrayT() {\n return _ArrayT.apply(this, arguments) || this;\n }\n var _proto = LazyArrayT.prototype;\n _proto.decode = function decode(stream, parent) {\n var pos = stream.pos;\n var length = utils.resolveLength(this.length, stream, parent);\n if (this.length instanceof NumberT) {\n parent = {\n parent: parent,\n _startOffset: pos,\n _currentOffset: 0,\n _length: length\n };\n }\n var res = new LazyArray(this.type, length, stream, parent);\n stream.pos += length * this.type.size(null, parent);\n return res;\n };\n _proto.size = function size(val, ctx) {\n if (val instanceof LazyArray) {\n val = val.toArray();\n }\n return _ArrayT.prototype.size.call(this, val, ctx);\n };\n _proto.encode = function encode(stream, val, ctx) {\n if (val instanceof LazyArray) {\n val = val.toArray();\n }\n return _ArrayT.prototype.encode.call(this, stream, val, ctx);\n };\n return LazyArrayT;\n}(ArrayT);\nvar LazyArray = /*#__PURE__*/function () {\n function LazyArray(type, length, stream, ctx) {\n this.type = type;\n this.length = length;\n this.stream = stream;\n this.ctx = ctx;\n this.base = this.stream.pos;\n this.items = [];\n }\n var _proto2 = LazyArray.prototype;\n _proto2.get = function get(index) {\n if (index < 0 || index >= this.length) {\n return undefined;\n }\n if (this.items[index] == null) {\n var pos = this.stream.pos;\n this.stream.pos = this.base + this.type.size(null, this.ctx) * index;\n this.items[index] = this.type.decode(this.stream, this.ctx);\n this.stream.pos = pos;\n }\n return this.items[index];\n };\n _proto2.toArray = function toArray() {\n var result = [];\n for (var i = 0, end = this.length; i < end; i++) {\n result.push(this.get(i));\n }\n return result;\n };\n _proto2.inspect = function inspect() {\n return _inspect(this.toArray());\n };\n return LazyArray;\n}();\nmodule.exports = LazyArrayT;\n\n/***/ }),\n\n/***/ 63787:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar DecodeStream = __webpack_require__(78984);\nvar NumberT = /*#__PURE__*/function () {\n function NumberT(type, endian) {\n if (endian === void 0) {\n endian = 'BE';\n }\n this.type = type;\n this.endian = endian;\n this.fn = this.type;\n if (this.type[this.type.length - 1] !== '8') {\n this.fn += this.endian;\n }\n }\n var _proto = NumberT.prototype;\n _proto.size = function size() {\n return DecodeStream.TYPES[this.type];\n };\n _proto.decode = function decode(stream) {\n return stream[\"read\" + this.fn]();\n };\n _proto.encode = function encode(stream, val) {\n return stream[\"write\" + this.fn](val);\n };\n return NumberT;\n}();\nexports.Number = NumberT;\nexports.uint8 = new NumberT('UInt8');\nexports.uint16be = exports.uint16 = new NumberT('UInt16', 'BE');\nexports.uint16le = new NumberT('UInt16', 'LE');\nexports.uint24be = exports.uint24 = new NumberT('UInt24', 'BE');\nexports.uint24le = new NumberT('UInt24', 'LE');\nexports.uint32be = exports.uint32 = new NumberT('UInt32', 'BE');\nexports.uint32le = new NumberT('UInt32', 'LE');\nexports.int8 = new NumberT('Int8');\nexports.int16be = exports.int16 = new NumberT('Int16', 'BE');\nexports.int16le = new NumberT('Int16', 'LE');\nexports.int24be = exports.int24 = new NumberT('Int24', 'BE');\nexports.int24le = new NumberT('Int24', 'LE');\nexports.int32be = exports.int32 = new NumberT('Int32', 'BE');\nexports.int32le = new NumberT('Int32', 'LE');\nexports.floatbe = exports.float = new NumberT('Float', 'BE');\nexports.floatle = new NumberT('Float', 'LE');\nexports.doublebe = exports.double = new NumberT('Double', 'BE');\nexports.doublele = new NumberT('Double', 'LE');\nvar Fixed = /*#__PURE__*/function (_NumberT) {\n _inheritsLoose(Fixed, _NumberT);\n function Fixed(size, endian, fracBits) {\n var _this;\n if (fracBits === void 0) {\n fracBits = size >> 1;\n }\n _this = _NumberT.call(this, \"Int\" + size, endian) || this;\n _this._point = 1 << fracBits;\n return _this;\n }\n var _proto2 = Fixed.prototype;\n _proto2.decode = function decode(stream) {\n return _NumberT.prototype.decode.call(this, stream) / this._point;\n };\n _proto2.encode = function encode(stream, val) {\n return _NumberT.prototype.encode.call(this, stream, val * this._point | 0);\n };\n return Fixed;\n}(NumberT);\nexports.Fixed = Fixed;\nexports.fixed16be = exports.fixed16 = new Fixed(16, 'BE');\nexports.fixed16le = new Fixed(16, 'LE');\nexports.fixed32be = exports.fixed32 = new Fixed(32, 'BE');\nexports.fixed32le = new Fixed(32, 'LE');\n\n/***/ }),\n\n/***/ 72526:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar Optional = /*#__PURE__*/function () {\n function Optional(type, condition) {\n if (condition === void 0) {\n condition = true;\n }\n this.type = type;\n this.condition = condition;\n }\n var _proto = Optional.prototype;\n _proto.decode = function decode(stream, parent) {\n var condition = this.condition;\n if (typeof condition === 'function') {\n condition = condition.call(parent, parent);\n }\n if (condition) {\n return this.type.decode(stream, parent);\n }\n };\n _proto.size = function size(val, parent) {\n var condition = this.condition;\n if (typeof condition === 'function') {\n condition = condition.call(parent, parent);\n }\n if (condition) {\n return this.type.size(val, parent);\n } else {\n return 0;\n }\n };\n _proto.encode = function encode(stream, val, parent) {\n var condition = this.condition;\n if (typeof condition === 'function') {\n condition = condition.call(parent, parent);\n }\n if (condition) {\n return this.type.encode(stream, val, parent);\n }\n };\n return Optional;\n}();\nmodule.exports = Optional;\n\n/***/ }),\n\n/***/ 41545:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(76949);\nvar Pointer = /*#__PURE__*/function () {\n function Pointer(offsetType, type, options) {\n if (options === void 0) {\n options = {};\n }\n this.offsetType = offsetType;\n this.type = type;\n this.options = options;\n if (this.type === 'void') {\n this.type = null;\n }\n if (this.options.type == null) {\n this.options.type = 'local';\n }\n if (this.options.allowNull == null) {\n this.options.allowNull = true;\n }\n if (this.options.nullValue == null) {\n this.options.nullValue = 0;\n }\n if (this.options.lazy == null) {\n this.options.lazy = false;\n }\n if (this.options.relativeTo) {\n if (typeof this.options.relativeTo !== 'function') {\n throw new Error('relativeTo option must be a function');\n }\n this.relativeToGetter = options.relativeTo;\n }\n }\n var _proto = Pointer.prototype;\n _proto.decode = function decode(stream, ctx) {\n var _this = this;\n var offset = this.offsetType.decode(stream, ctx);\n\n // handle NULL pointers\n if (offset === this.options.nullValue && this.options.allowNull) {\n return null;\n }\n var relative;\n switch (this.options.type) {\n case 'local':\n relative = ctx._startOffset;\n break;\n case 'immediate':\n relative = stream.pos - this.offsetType.size();\n break;\n case 'parent':\n relative = ctx.parent._startOffset;\n break;\n default:\n var c = ctx;\n while (c.parent) {\n c = c.parent;\n }\n relative = c._startOffset || 0;\n }\n if (this.options.relativeTo) {\n relative += this.relativeToGetter(ctx);\n }\n var ptr = offset + relative;\n if (this.type != null) {\n var val = null;\n var decodeValue = function decodeValue() {\n if (val != null) {\n return val;\n }\n var pos = stream.pos;\n stream.pos = ptr;\n val = _this.type.decode(stream, ctx);\n stream.pos = pos;\n return val;\n };\n\n // If this is a lazy pointer, define a getter to decode only when needed.\n // This obviously only works when the pointer is contained by a Struct.\n if (this.options.lazy) {\n return new utils.PropertyDescriptor({\n get: decodeValue\n });\n }\n return decodeValue();\n } else {\n return ptr;\n }\n };\n _proto.size = function size(val, ctx) {\n var parent = ctx;\n switch (this.options.type) {\n case 'local':\n case 'immediate':\n break;\n case 'parent':\n ctx = ctx.parent;\n break;\n default:\n // global\n while (ctx.parent) {\n ctx = ctx.parent;\n }\n }\n var type = this.type;\n if (type == null) {\n if (!(val instanceof VoidPointer)) {\n throw new Error(\"Must be a VoidPointer\");\n }\n var _val = val;\n type = _val.type;\n val = val.value;\n }\n if (val && ctx) {\n ctx.pointerSize += type.size(val, parent);\n }\n return this.offsetType.size();\n };\n _proto.encode = function encode(stream, val, ctx) {\n var relative;\n var parent = ctx;\n if (val == null) {\n this.offsetType.encode(stream, this.options.nullValue);\n return;\n }\n switch (this.options.type) {\n case 'local':\n relative = ctx.startOffset;\n break;\n case 'immediate':\n relative = stream.pos + this.offsetType.size(val, parent);\n break;\n case 'parent':\n ctx = ctx.parent;\n relative = ctx.startOffset;\n break;\n default:\n // global\n relative = 0;\n while (ctx.parent) {\n ctx = ctx.parent;\n }\n }\n if (this.options.relativeTo) {\n relative += this.relativeToGetter(parent.val);\n }\n this.offsetType.encode(stream, ctx.pointerOffset - relative);\n var type = this.type;\n if (type == null) {\n if (!(val instanceof VoidPointer)) {\n throw new Error(\"Must be a VoidPointer\");\n }\n var _val2 = val;\n type = _val2.type;\n val = val.value;\n }\n ctx.pointers.push({\n type: type,\n val: val,\n parent: parent\n });\n return ctx.pointerOffset += type.size(val, parent);\n };\n return Pointer;\n}(); // A pointer whose type is determined at decode time\nvar VoidPointer = function VoidPointer(type, value) {\n this.type = type;\n this.value = value;\n};\nexports.Pointer = Pointer;\nexports.VoidPointer = VoidPointer;\n\n/***/ }),\n\n/***/ 10298:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(41584);\nvar utils = __webpack_require__(76949);\nvar Reserved = /*#__PURE__*/function () {\n function Reserved(type, count) {\n if (count === void 0) {\n count = 1;\n }\n this.type = type;\n this.count = count;\n }\n var _proto = Reserved.prototype;\n _proto.decode = function decode(stream, parent) {\n stream.pos += this.size(null, parent);\n return undefined;\n };\n _proto.size = function size(data, parent) {\n var count = utils.resolveLength(this.count, null, parent);\n return this.type.size() * count;\n };\n _proto.encode = function encode(stream, val, parent) {\n return stream.fill(0, this.size(val, parent));\n };\n return Reserved;\n}();\nmodule.exports = Reserved;\n\n/***/ }),\n\n/***/ 36291:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n\n\nvar _require = __webpack_require__(63787),\n NumberT = _require.Number;\nvar utils = __webpack_require__(76949);\nvar StringT = /*#__PURE__*/function () {\n function StringT(length, encoding) {\n if (encoding === void 0) {\n encoding = 'ascii';\n }\n this.length = length;\n this.encoding = encoding;\n }\n var _proto = StringT.prototype;\n _proto.decode = function decode(stream, parent) {\n var length, pos;\n if (this.length != null) {\n length = utils.resolveLength(this.length, stream, parent);\n } else {\n var buffer;\n buffer = stream.buffer;\n length = stream.length;\n pos = stream.pos;\n while (pos < length && buffer[pos] !== 0x00) {\n ++pos;\n }\n length = pos - stream.pos;\n }\n var encoding = this.encoding;\n if (typeof encoding === 'function') {\n encoding = encoding.call(parent, parent) || 'ascii';\n }\n var string = stream.readString(length, encoding);\n if (this.length == null && stream.pos < stream.length) {\n stream.pos++;\n }\n return string;\n };\n _proto.size = function size(val, parent) {\n // Use the defined value if no value was given\n if (!val) {\n return utils.resolveLength(this.length, null, parent);\n }\n var encoding = this.encoding;\n if (typeof encoding === 'function') {\n encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';\n }\n if (encoding === 'utf16be') {\n encoding = 'utf16le';\n }\n var size = Buffer.byteLength(val, encoding);\n if (this.length instanceof NumberT) {\n size += this.length.size();\n }\n if (this.length == null) {\n size++;\n }\n return size;\n };\n _proto.encode = function encode(stream, val, parent) {\n var encoding = this.encoding;\n if (typeof encoding === 'function') {\n encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';\n }\n if (this.length instanceof NumberT) {\n this.length.encode(stream, Buffer.byteLength(val, encoding));\n }\n stream.writeString(val, encoding);\n if (this.length == null) {\n return stream.writeUInt8(0x00);\n }\n };\n return StringT;\n}();\nmodule.exports = StringT;\n\n/***/ }),\n\n/***/ 2731:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(76949);\nvar Struct = /*#__PURE__*/function () {\n function Struct(fields) {\n if (fields === void 0) {\n fields = {};\n }\n this.fields = fields;\n }\n var _proto = Struct.prototype;\n _proto.decode = function decode(stream, parent, length) {\n if (length === void 0) {\n length = 0;\n }\n var res = this._setup(stream, parent, length);\n this._parseFields(stream, res, this.fields);\n if (this.process != null) {\n this.process.call(res, stream);\n }\n return res;\n };\n _proto._setup = function _setup(stream, parent, length) {\n var res = {};\n\n // define hidden properties\n Object.defineProperties(res, {\n parent: {\n value: parent\n },\n _startOffset: {\n value: stream.pos\n },\n _currentOffset: {\n value: 0,\n writable: true\n },\n _length: {\n value: length\n }\n });\n return res;\n };\n _proto._parseFields = function _parseFields(stream, res, fields) {\n for (var key in fields) {\n var val;\n var type = fields[key];\n if (typeof type === 'function') {\n val = type.call(res, res);\n } else {\n val = type.decode(stream, res);\n }\n if (val !== undefined) {\n if (val instanceof utils.PropertyDescriptor) {\n Object.defineProperty(res, key, val);\n } else {\n res[key] = val;\n }\n }\n res._currentOffset = stream.pos - res._startOffset;\n }\n };\n _proto.size = function size(val, parent, includePointers) {\n if (val == null) {\n val = {};\n }\n if (includePointers == null) {\n includePointers = true;\n }\n var ctx = {\n parent: parent,\n val: val,\n pointerSize: 0\n };\n var size = 0;\n for (var key in this.fields) {\n var type = this.fields[key];\n if (type.size != null) {\n size += type.size(val[key], ctx);\n }\n }\n if (includePointers) {\n size += ctx.pointerSize;\n }\n return size;\n };\n _proto.encode = function encode(stream, val, parent) {\n var type;\n if (this.preEncode != null) {\n this.preEncode.call(val, stream);\n }\n var ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent: parent,\n val: val,\n pointerSize: 0\n };\n ctx.pointerOffset = stream.pos + this.size(val, ctx, false);\n for (var key in this.fields) {\n type = this.fields[key];\n if (type.encode != null) {\n type.encode(stream, val[key], ctx);\n }\n }\n var i = 0;\n while (i < ctx.pointers.length) {\n var ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val, ptr.parent);\n }\n };\n return Struct;\n}();\nmodule.exports = Struct;\n\n/***/ }),\n\n/***/ 48084:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(14032);\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar Struct = __webpack_require__(2731);\nvar getPath = function getPath(object, pathArray) {\n return pathArray.reduce(function (prevObj, key) {\n return prevObj && prevObj[key];\n }, object);\n};\nvar VersionedStruct = /*#__PURE__*/function (_Struct) {\n _inheritsLoose(VersionedStruct, _Struct);\n function VersionedStruct(type, versions) {\n var _this;\n if (versions === void 0) {\n versions = {};\n }\n _this = _Struct.call(this) || this;\n _this.type = type;\n _this.versions = versions;\n if (typeof type === 'string') {\n _this.versionPath = type.split('.');\n }\n return _this;\n }\n var _proto = VersionedStruct.prototype;\n _proto.decode = function decode(stream, parent, length) {\n if (length === void 0) {\n length = 0;\n }\n var res = this._setup(stream, parent, length);\n if (typeof this.type === 'string') {\n res.version = getPath(parent, this.versionPath);\n } else {\n res.version = this.type.decode(stream);\n }\n if (this.versions.header) {\n this._parseFields(stream, res, this.versions.header);\n }\n var fields = this.versions[res.version];\n if (fields == null) {\n throw new Error(\"Unknown version \" + res.version);\n }\n if (fields instanceof VersionedStruct) {\n return fields.decode(stream, parent);\n }\n this._parseFields(stream, res, fields);\n if (this.process != null) {\n this.process.call(res, stream);\n }\n return res;\n };\n _proto.size = function size(val, parent, includePointers) {\n if (includePointers === void 0) {\n includePointers = true;\n }\n var key, type;\n if (!val) {\n throw new Error('Not a fixed size');\n }\n var ctx = {\n parent: parent,\n val: val,\n pointerSize: 0\n };\n var size = 0;\n if (typeof this.type !== 'string') {\n size += this.type.size(val.version, ctx);\n }\n if (this.versions.header) {\n for (key in this.versions.header) {\n type = this.versions.header[key];\n if (type.size != null) {\n size += type.size(val[key], ctx);\n }\n }\n }\n var fields = this.versions[val.version];\n if (fields == null) {\n throw new Error(\"Unknown version \" + val.version);\n }\n for (key in fields) {\n type = fields[key];\n if (type.size != null) {\n size += type.size(val[key], ctx);\n }\n }\n if (includePointers) {\n size += ctx.pointerSize;\n }\n return size;\n };\n _proto.encode = function encode(stream, val, parent) {\n var key, type;\n if (this.preEncode != null) {\n this.preEncode.call(val, stream);\n }\n var ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent: parent,\n val: val,\n pointerSize: 0\n };\n ctx.pointerOffset = stream.pos + this.size(val, ctx, false);\n if (typeof this.type !== 'string') {\n this.type.encode(stream, val.version);\n }\n if (this.versions.header) {\n for (key in this.versions.header) {\n type = this.versions.header[key];\n if (type.encode != null) {\n type.encode(stream, val[key], ctx);\n }\n }\n }\n var fields = this.versions[val.version];\n for (key in fields) {\n type = fields[key];\n if (type.encode != null) {\n type.encode(stream, val[key], ctx);\n }\n }\n var i = 0;\n while (i < ctx.pointers.length) {\n var ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val, ptr.parent);\n }\n };\n return VersionedStruct;\n}(Struct);\nmodule.exports = VersionedStruct;\n\n/***/ }),\n\n/***/ 76949:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _require = __webpack_require__(63787),\n NumberT = _require.Number;\nexports.resolveLength = function (length, stream, parent) {\n var res;\n if (typeof length === 'number') {\n res = length;\n } else if (typeof length === 'function') {\n res = length.call(parent, parent);\n } else if (parent && typeof length === 'string') {\n res = parent[length];\n } else if (stream && length instanceof NumberT) {\n res = length.decode(stream);\n }\n if (isNaN(res)) {\n throw new Error('Not a fixed size');\n }\n return res;\n};\nvar PropertyDescriptor = function PropertyDescriptor(opts) {\n if (opts === void 0) {\n opts = {};\n }\n this.enumerable = true;\n this.configurable = true;\n for (var key in opts) {\n var val = opts[key];\n this[key] = val;\n }\n};\nexports.PropertyDescriptor = PropertyDescriptor;\n\n/***/ }),\n\n/***/ 50621:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\n\n__webpack_require__(65292);\n__webpack_require__(73844);\n__webpack_require__(5597);\n__webpack_require__(39081);\n__webpack_require__(68626);\n__webpack_require__(41584);\n__webpack_require__(58028);\n__webpack_require__(81755);\n__webpack_require__(20731);\n__webpack_require__(10720);\n__webpack_require__(7585);\n__webpack_require__(24863);\n__webpack_require__(7283);\n__webpack_require__(2876);\n__webpack_require__(14032);\n__webpack_require__(61726);\n__webpack_require__(57114);\n__webpack_require__(47458);\n__webpack_require__(46467);\n__webpack_require__(72095);\n__webpack_require__(56912);\n__webpack_require__(73663);\n__webpack_require__(29883);\n__webpack_require__(35471);\n__webpack_require__(21012);\n__webpack_require__(88997);\n__webpack_require__(97464);\n__webpack_require__(2857);\n__webpack_require__(94715);\n__webpack_require__(13624);\n__webpack_require__(91132);\n__webpack_require__(62514);\n__webpack_require__(24597);\n__webpack_require__(88042);\n__webpack_require__(4660);\n__webpack_require__(92451);\n__webpack_require__(44206);\n__webpack_require__(66288);\n__webpack_require__(13250);\n__webpack_require__(3858);\n__webpack_require__(84538);\n__webpack_require__(64793);\n__webpack_require__(74202);\n__webpack_require__(52529);\n__webpack_require__(41863);\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar base64 = __webpack_require__(32504);\nvar ieee754 = __webpack_require__(89029);\nvar customInspectSymbol = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' // eslint-disable-line dot-notation\n? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n: null;\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\nvar K_MAX_LENGTH = 0x7fffffff;\nexports.kMaxLength = K_MAX_LENGTH;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error('This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.');\n}\nfunction typedArraySupport() {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1);\n var proto = {\n foo: function foo() {\n return 42;\n }\n };\n Object.setPrototypeOf(proto, Uint8Array.prototype);\n Object.setPrototypeOf(arr, proto);\n return arr.foo() === 42;\n } catch (e) {\n return false;\n }\n}\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function get() {\n if (!Buffer.isBuffer(this)) return undefined;\n return this.buffer;\n }\n});\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function get() {\n if (!Buffer.isBuffer(this)) return undefined;\n return this.byteOffset;\n }\n});\nfunction createBuffer(length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"');\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length);\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer(arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError('The \"string\" argument must be of type string. Received type number');\n }\n return allocUnsafe(arg);\n }\n return from(arg, encodingOrOffset, length);\n}\nBuffer.poolSize = 8192; // not used by this implementation\n\nfunction from(value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset);\n }\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value);\n }\n if (value == null) {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value);\n }\n if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n if (typeof SharedArrayBuffer !== 'undefined' && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type number');\n }\n var valueOf = value.valueOf && value.valueOf();\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length);\n }\n var b = fromObject(value);\n if (b) return b;\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length);\n }\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value);\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length);\n};\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\nObject.setPrototypeOf(Buffer, Uint8Array);\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number');\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n }\n}\nfunction alloc(size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(size);\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string' ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n }\n return createBuffer(size);\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding);\n};\nfunction allocUnsafe(size) {\n assertSize(size);\n return createBuffer(size < 0 ? 0 : checked(size) | 0);\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size);\n};\nfunction fromString(string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n var length = byteLength(string, encoding) | 0;\n var buf = createBuffer(length);\n var actual = buf.write(string, encoding);\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual);\n }\n return buf;\n}\nfunction fromArrayLike(array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n var buf = createBuffer(length);\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255;\n }\n return buf;\n}\nfunction fromArrayView(arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView);\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n }\n return fromArrayLike(arrayView);\n}\nfunction fromArrayBuffer(array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds');\n }\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds');\n }\n var buf;\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array);\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset);\n } else {\n buf = new Uint8Array(array, byteOffset, length);\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n}\nfunction fromObject(obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n var buf = createBuffer(len);\n if (buf.length === 0) {\n return buf;\n }\n obj.copy(buf, 0, 0, len);\n return buf;\n }\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0);\n }\n return fromArrayLike(obj);\n }\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data);\n }\n}\nfunction checked(length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes');\n }\n return length | 0;\n}\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length);\n}\nBuffer.isBuffer = function isBuffer(b) {\n return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n};\nBuffer.compare = function compare(a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');\n }\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n default:\n return false;\n }\n};\nBuffer.concat = function concat(list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n buf.copy(buffer, pos);\n } else {\n Uint8Array.prototype.set.call(buffer, buf, pos);\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n } else {\n buf.copy(buffer, pos);\n }\n pos += buf.length;\n }\n return buffer;\n};\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength;\n }\n if (typeof string !== 'string') {\n throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + typeof string);\n }\n var len = string.length;\n var mustMatch = arguments.length > 2 && arguments[2] === true;\n if (!mustMatch && len === 0) return 0;\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length;\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n case 'hex':\n return len >>> 1;\n case 'base64':\n return base64ToBytes(string).length;\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n }\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\nfunction slowToString(encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return '';\n }\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n if (end <= 0) {\n return '';\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n if (end <= start) {\n return '';\n }\n if (!encoding) encoding = 'utf8';\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n case 'ascii':\n return asciiSlice(this, start, end);\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n case 'base64':\n return base64Slice(this, start, end);\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true;\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this;\n};\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this;\n};\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this;\n};\nBuffer.prototype.toString = function toString() {\n var length = this.length;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\nBuffer.prototype.toLocaleString = Buffer.prototype.toString;\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n if (this.length > max) str += ' ... ';\n return '<Buffer ' + str + '>';\n};\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n}\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength);\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + typeof target);\n }\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n if (thisStart >= thisEnd) {\n return -1;\n }\n if (start >= end) {\n return 1;\n }\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1;\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n throw new TypeError('val must be string, number or Buffer');\n}\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n if (found) return i;\n }\n }\n return -1;\n}\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n var strLen = string.length;\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n var i;\n for (i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (numberIsNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n return i;\n}\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0;\n if (isFinite(length)) {\n length = length >>> 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length);\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n if (i + bytesPerSequence <= end) {\n var secondByte = void 0,\n thirdByte = void 0,\n fourthByte = void 0,\n tempCodePoint = void 0;\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break;\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n res.push(codePoint);\n i += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n return res;\n}\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret;\n}\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret;\n}\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]];\n }\n return out;\n}\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res;\n}\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n if (end < start) end = start;\n var newBuf = this.subarray(start, end);\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype);\n return newBuf;\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\nBuffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n return val;\n};\nBuffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n return val;\n};\nBuffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\nBuffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\nBuffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\nBuffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\nBuffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n var first = this[offset];\n var last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n var lo = first + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 24);\n var hi = this[++offset] + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + last * Math.pow(2, 24);\n return BigInt(lo) + (BigInt(hi) << BigInt(32));\n});\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n var first = this[offset];\n var last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n var hi = first * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + this[++offset];\n var lo = this[++offset] * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + last;\n return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n});\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n var first = this[offset];\n var last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n var val = this[offset + 4] + this[offset + 5] * Math.pow(2, 8) + this[offset + 6] * Math.pow(2, 16) + (last << 24); // Overflow\n\n return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 24));\n});\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n var first = this[offset];\n var last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n var val = (first << 24) +\n // Overflow\n this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + this[++offset];\n return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + last);\n});\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\nBuffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n this[offset] = value & 0xff;\n return offset + 1;\n};\nBuffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n};\nBuffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n return offset + 2;\n};\nBuffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n return offset + 4;\n};\nBuffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n return offset + 4;\n};\nfunction wrtBigUInt64LE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n var lo = Number(value & BigInt(0xffffffff));\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n var hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n return offset;\n}\nfunction wrtBigUInt64BE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n var lo = Number(value & BigInt(0xffffffff));\n buf[offset + 7] = lo;\n lo = lo >> 8;\n buf[offset + 6] = lo;\n lo = lo >> 8;\n buf[offset + 5] = lo;\n lo = lo >> 8;\n buf[offset + 4] = lo;\n var hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n buf[offset + 3] = hi;\n hi = hi >> 8;\n buf[offset + 2] = hi;\n hi = hi >> 8;\n buf[offset + 1] = hi;\n hi = hi >> 8;\n buf[offset] = hi;\n return offset + 8;\n}\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'));\n});\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'));\n});\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n};\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n return offset + 2;\n};\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n return offset + 4;\n};\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n return offset + 4;\n};\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'));\n});\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'));\n});\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer');\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0;\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range');\n if (end < 0) throw new RangeError('sourceEnd out of bounds');\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n var len = end - start;\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end);\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n }\n return len;\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (encoding === 'utf8' && code < 128 || encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code;\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } else if (typeof val === 'boolean') {\n val = Number(val);\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n if (end <= start) {\n return this;\n }\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n var len = bytes.length;\n if (len === 0) {\n throw new TypeError('The value \"' + val + '\" is invalid for argument \"value\"');\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n return this;\n};\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nvar errors = {};\nfunction E(sym, getMessage, Base) {\n errors[sym] = /*#__PURE__*/function (_Base) {\n _inheritsLoose(NodeError, _Base);\n function NodeError() {\n var _this;\n _this = _Base.call(this) || this;\n Object.defineProperty(_assertThisInitialized(_this), 'message', {\n value: getMessage.apply(_assertThisInitialized(_this), arguments),\n writable: true,\n configurable: true\n });\n\n // Add the error code to the name to include it in the stack trace.\n _this.name = _this.name + \" [\" + sym + \"]\";\n // Access the stack to generate the error message including the error code\n // from the name.\n _this.stack; // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete _this.name;\n return _this;\n }\n var _proto = NodeError.prototype;\n _proto.toString = function toString() {\n return this.name + \" [\" + sym + \"]: \" + this.message;\n };\n _createClass(NodeError, [{\n key: \"code\",\n get: function get() {\n return sym;\n },\n set: function set(value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value: value,\n writable: true\n });\n }\n }]);\n return NodeError;\n }(Base);\n}\nE('ERR_BUFFER_OUT_OF_BOUNDS', function (name) {\n if (name) {\n return name + \" is outside of buffer bounds\";\n }\n return 'Attempt to access memory outside buffer bounds';\n}, RangeError);\nE('ERR_INVALID_ARG_TYPE', function (name, actual) {\n return \"The \\\"\" + name + \"\\\" argument must be of type number. Received type \" + typeof actual;\n}, TypeError);\nE('ERR_OUT_OF_RANGE', function (str, range, input) {\n var msg = \"The value of \\\"\" + str + \"\\\" is out of range.\";\n var received = input;\n if (Number.isInteger(input) && Math.abs(input) > Math.pow(2, 32)) {\n received = addNumericalSeparator(String(input));\n } else if (typeof input === 'bigint') {\n received = String(input);\n if (input > Math.pow(BigInt(2), BigInt(32)) || input < -Math.pow(BigInt(2), BigInt(32))) {\n received = addNumericalSeparator(received);\n }\n received += 'n';\n }\n msg += \" It must be \" + range + \". Received \" + received;\n return msg;\n}, RangeError);\nfunction addNumericalSeparator(val) {\n var res = '';\n var i = val.length;\n var start = val[0] === '-' ? 1 : 0;\n for (; i >= start + 4; i -= 3) {\n res = \"_\" + val.slice(i - 3, i) + res;\n }\n return \"\" + val.slice(0, i) + res;\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds(buf, offset, byteLength) {\n validateNumber(offset, 'offset');\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1));\n }\n}\nfunction checkIntBI(value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n var n = typeof min === 'bigint' ? 'n' : '';\n var range;\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = \">= 0\" + n + \" and < 2\" + n + \" ** \" + (byteLength + 1) * 8 + n;\n } else {\n range = \">= -(2\" + n + \" ** \" + ((byteLength + 1) * 8 - 1) + n + \") and < 2 ** \" + (\"\" + ((byteLength + 1) * 8 - 1) + n);\n }\n } else {\n range = \">= \" + min + n + \" and <= \" + max + n;\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value);\n }\n checkBounds(buf, offset, byteLength);\n}\nfunction validateNumber(value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value);\n }\n}\nfunction boundsError(value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type);\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value);\n }\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n }\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', \">= \" + (type ? 1 : 0) + \" and <= \" + length, value);\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\nfunction base64clean(str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0];\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return '';\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str;\n}\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n }\n\n // valid lead\n leadSurrogate = codePoint;\n continue;\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n return bytes;\n}\nfunction asciiToBytes(str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray;\n}\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n return byteArray;\n}\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\nfunction blitBuffer(src, dst, offset, length) {\n var i;\n for (i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n return i;\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance(obj, type) {\n return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n}\nfunction numberIsNaN(obj) {\n // For IE11 support\n return obj !== obj; // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = function () {\n var alphabet = '0123456789abcdef';\n var table = new Array(256);\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16;\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n return table;\n}();\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod(fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn;\n}\nfunction BufferBigIntNotDefined() {\n throw new Error('BigInt not supported');\n}\n\n/***/ }),\n\n/***/ 38719:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(10720);\n__webpack_require__(14032);\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n\n/***/ }),\n\n/***/ 36597:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(38719);\nvar DESCRIPTORS = __webpack_require__(15567);\nvar global = __webpack_require__(32010);\nvar isCallable = __webpack_require__(94578);\nvar isObject = __webpack_require__(24517);\nvar hasOwn = __webpack_require__(20340);\nvar classof = __webpack_require__(52564);\nvar tryToString = __webpack_require__(68664);\nvar createNonEnumerableProperty = __webpack_require__(48914);\nvar redefine = __webpack_require__(13711);\nvar defineProperty = (__webpack_require__(95892).f);\nvar isPrototypeOf = __webpack_require__(70176);\nvar getPrototypeOf = __webpack_require__(69548);\nvar setPrototypeOf = __webpack_require__(3840);\nvar wellKnownSymbol = __webpack_require__(38688);\nvar uid = __webpack_require__(46859);\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME, Constructor, Prototype;\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView' || hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass);\n};\nvar isTypedArray = function isTypedArray(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass);\n};\nvar aTypedArray = function aTypedArray(it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\nvar aTypedArrayConstructor = function aTypedArrayConstructor(C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\nvar exportTypedArrayMethod = function exportTypedArrayMethod(KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {/* empty */}\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\nvar exportTypedArrayStaticMethod = function exportTypedArrayStaticMethod(KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) {/* empty */}\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) {/* empty */}\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, {\n get: function get() {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n\n/***/ }),\n\n/***/ 89987:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(24863);\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\nvar DESCRIPTORS = __webpack_require__(15567);\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(38719);\nvar FunctionName = __webpack_require__(7081);\nvar createNonEnumerableProperty = __webpack_require__(48914);\nvar redefineAll = __webpack_require__(15341);\nvar fails = __webpack_require__(47044);\nvar anInstance = __webpack_require__(2868);\nvar toIntegerOrInfinity = __webpack_require__(26882);\nvar toLength = __webpack_require__(23417);\nvar toIndex = __webpack_require__(71265);\nvar IEEE754 = __webpack_require__(64397);\nvar getPrototypeOf = __webpack_require__(69548);\nvar setPrototypeOf = __webpack_require__(3840);\nvar getOwnPropertyNames = (__webpack_require__(6611).f);\nvar defineProperty = (__webpack_require__(95892).f);\nvar arrayFill = __webpack_require__(72864);\nvar arraySlice = __webpack_require__(73163);\nvar setToStringTag = __webpack_require__(15216);\nvar InternalStateModule = __webpack_require__(70172);\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\nvar packInt8 = function packInt8(number) {\n return [number & 0xFF];\n};\nvar packInt16 = function packInt16(number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\nvar packInt32 = function packInt32(number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\nvar unpackInt32 = function unpackInt32(buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\nvar packFloat32 = function packFloat32(number) {\n return packIEEE754(number, 23, 4);\n};\nvar packFloat64 = function packFloat64(number) {\n return packIEEE754(number, 52, 8);\n};\nvar addGetter = function addGetter(Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, {\n get: function get() {\n return getInternalState(this)[key];\n }\n });\n};\nvar get = function get(view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = arraySlice(bytes, start, start + count);\n return isLittleEndian ? pack : reverse(pack);\n};\nvar set = function set(view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: fill(Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, DataViewPrototype);\n anInstance(buffer, ArrayBufferPrototype);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toIntegerOrInfinity(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n DataViewPrototype = $DataView[PROTOTYPE];\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n redefineAll(DataViewPrototype, {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n return new NativeArrayBuffer(toIndex(length));\n };\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll(DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n }\n }, {\n unsafe: true\n });\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n\n/***/ }),\n\n/***/ 10720:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\nvar arrayBufferModule = __webpack_require__(89987);\nvar setSpecies = __webpack_require__(51334);\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({\n global: true,\n forced: NativeArrayBuffer !== ArrayBuffer\n}, {\n ArrayBuffer: ArrayBuffer\n});\nsetSpecies(ARRAY_BUFFER);\n\n/***/ }),\n\n/***/ 6993:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(49300), __webpack_require__(72342), __webpack_require__(36572), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var BlockCipher = C_lib.BlockCipher;\n var C_algo = C.algo;\n\n // Lookup tables\n var SBOX = [];\n var INV_SBOX = [];\n var SUB_MIX_0 = [];\n var SUB_MIX_1 = [];\n var SUB_MIX_2 = [];\n var SUB_MIX_3 = [];\n var INV_SUB_MIX_0 = [];\n var INV_SUB_MIX_1 = [];\n var INV_SUB_MIX_2 = [];\n var INV_SUB_MIX_3 = [];\n\n // Compute lookup tables\n (function () {\n // Compute double table\n var d = [];\n for (var i = 0; i < 256; i++) {\n if (i < 128) {\n d[i] = i << 1;\n } else {\n d[i] = i << 1 ^ 0x11b;\n }\n }\n\n // Walk GF(2^8)\n var x = 0;\n var xi = 0;\n for (var i = 0; i < 256; i++) {\n // Compute sbox\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n SBOX[x] = sx;\n INV_SBOX[sx] = x;\n\n // Compute multiplication\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4];\n\n // Compute sub bytes, mix columns tables\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n SUB_MIX_0[x] = t << 24 | t >>> 8;\n SUB_MIX_1[x] = t << 16 | t >>> 16;\n SUB_MIX_2[x] = t << 8 | t >>> 24;\n SUB_MIX_3[x] = t;\n\n // Compute inv sub bytes, inv mix columns tables\n var t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n INV_SUB_MIX_0[sx] = t << 24 | t >>> 8;\n INV_SUB_MIX_1[sx] = t << 16 | t >>> 16;\n INV_SUB_MIX_2[sx] = t << 8 | t >>> 24;\n INV_SUB_MIX_3[sx] = t;\n\n // Compute next counter\n if (!x) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n })();\n\n // Precomputed Rcon lookup\n var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n /**\n * AES block cipher algorithm.\n */\n var AES = C_algo.AES = BlockCipher.extend({\n _doReset: function _doReset() {\n var t;\n\n // Skip reset of nRounds has been set before and key did not change\n if (this._nRounds && this._keyPriorReset === this._key) {\n return;\n }\n\n // Shortcuts\n var key = this._keyPriorReset = this._key;\n var keyWords = key.words;\n var keySize = key.sigBytes / 4;\n\n // Compute number of rounds\n var nRounds = this._nRounds = keySize + 6;\n\n // Compute number of key schedule rows\n var ksRows = (nRounds + 1) * 4;\n\n // Compute key schedule\n var keySchedule = this._keySchedule = [];\n for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n if (ksRow < keySize) {\n keySchedule[ksRow] = keyWords[ksRow];\n } else {\n t = keySchedule[ksRow - 1];\n if (!(ksRow % keySize)) {\n // Rot word\n t = t << 8 | t >>> 24;\n\n // Sub word\n t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 0xff] << 16 | SBOX[t >>> 8 & 0xff] << 8 | SBOX[t & 0xff];\n\n // Mix Rcon\n t ^= RCON[ksRow / keySize | 0] << 24;\n } else if (keySize > 6 && ksRow % keySize == 4) {\n // Sub word\n t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 0xff] << 16 | SBOX[t >>> 8 & 0xff] << 8 | SBOX[t & 0xff];\n }\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n }\n }\n\n // Compute inv key schedule\n var invKeySchedule = this._invKeySchedule = [];\n for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n var ksRow = ksRows - invKsRow;\n if (invKsRow % 4) {\n var t = keySchedule[ksRow];\n } else {\n var t = keySchedule[ksRow - 4];\n }\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t;\n } else {\n invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[t >>> 16 & 0xff]] ^ INV_SUB_MIX_2[SBOX[t >>> 8 & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n }\n }\n },\n encryptBlock: function encryptBlock(M, offset) {\n this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n },\n decryptBlock: function decryptBlock(M, offset) {\n // Swap 2nd and 4th rows\n var t = M[offset + 1];\n M[offset + 1] = M[offset + 3];\n M[offset + 3] = t;\n this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n // Inv swap 2nd and 4th rows\n var t = M[offset + 1];\n M[offset + 1] = M[offset + 3];\n M[offset + 3] = t;\n },\n _doCryptBlock: function _doCryptBlock(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n // Shortcut\n var nRounds = this._nRounds;\n\n // Get input, add round key\n var s0 = M[offset] ^ keySchedule[0];\n var s1 = M[offset + 1] ^ keySchedule[1];\n var s2 = M[offset + 2] ^ keySchedule[2];\n var s3 = M[offset + 3] ^ keySchedule[3];\n\n // Key schedule row counter\n var ksRow = 4;\n\n // Rounds\n for (var round = 1; round < nRounds; round++) {\n // Shift rows, sub bytes, mix columns, add round key\n var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[s1 >>> 16 & 0xff] ^ SUB_MIX_2[s2 >>> 8 & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[s2 >>> 16 & 0xff] ^ SUB_MIX_2[s3 >>> 8 & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[s3 >>> 16 & 0xff] ^ SUB_MIX_2[s0 >>> 8 & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[s0 >>> 16 & 0xff] ^ SUB_MIX_2[s1 >>> 8 & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n // Update state\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n }\n\n // Shift rows, sub bytes, add round key\n var t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 0xff] << 16 | SBOX[s2 >>> 8 & 0xff] << 8 | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n var t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 0xff] << 16 | SBOX[s3 >>> 8 & 0xff] << 8 | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n var t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 0xff] << 16 | SBOX[s0 >>> 8 & 0xff] << 8 | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n var t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 0xff] << 16 | SBOX[s1 >>> 8 & 0xff] << 8 | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n // Set output\n M[offset] = t0;\n M[offset + 1] = t1;\n M[offset + 2] = t2;\n M[offset + 3] = t3;\n },\n keySize: 256 / 32\n });\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n */\n C.AES = BlockCipher._createHelper(AES);\n })();\n return CryptoJS.AES;\n});\n\n/***/ }),\n\n/***/ 83122:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(49300), __webpack_require__(72342), __webpack_require__(36572), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var BlockCipher = C_lib.BlockCipher;\n var C_algo = C.algo;\n var N = 16;\n\n //Origin pbox and sbox, derived from PI\n var ORIG_P = [0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89, 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C, 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, 0x9216D5D9, 0x8979FB1B];\n var ORIG_S = [[0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99, 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013, 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF, 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E, 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60, 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440, 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE, 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A, 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E, 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677, 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193, 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032, 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88, 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239, 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0, 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3, 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88, 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE, 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6, 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D, 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B, 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA, 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463, 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09, 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3, 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB, 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279, 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8, 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82, 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB, 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0, 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B, 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790, 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8, 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4, 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7, 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C, 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1, 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299, 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9, 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477, 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF, 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF, 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA, 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41, 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915, 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400, 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915, 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664, 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A], [0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1, 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6, 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1, 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1, 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737, 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF, 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD, 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7, 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41, 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331, 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF, 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF, 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87, 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C, 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16, 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD, 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B, 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509, 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E, 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F, 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A, 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960, 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66, 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28, 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802, 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84, 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF, 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14, 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50, 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7, 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8, 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281, 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99, 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128, 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73, 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0, 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105, 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250, 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3, 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285, 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061, 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB, 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735, 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC, 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9, 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340, 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20, 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7], [0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068, 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF, 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45, 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504, 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A, 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB, 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE, 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42, 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B, 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB, 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527, 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B, 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33, 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C, 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC, 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17, 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B, 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115, 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728, 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0, 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37, 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D, 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B, 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3, 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB, 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D, 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C, 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9, 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A, 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D, 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC, 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61, 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2, 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2, 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C, 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633, 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10, 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52, 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027, 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62, 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634, 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24, 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC, 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4, 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C, 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837, 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0], [0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE, 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B, 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8, 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6, 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304, 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22, 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4, 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9, 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59, 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51, 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28, 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C, 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B, 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28, 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD, 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A, 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB, 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F, 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32, 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680, 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE, 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB, 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47, 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370, 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84, 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048, 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD, 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9, 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38, 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F, 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C, 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525, 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1, 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964, 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E, 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D, 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F, 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299, 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02, 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC, 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614, 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A, 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6, 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0, 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060, 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E, 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9, 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F, 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6]];\n var BLOWFISH_CTX = {\n pbox: [],\n sbox: []\n };\n function F(ctx, x) {\n var a = x >> 24 & 0xFF;\n var b = x >> 16 & 0xFF;\n var c = x >> 8 & 0xFF;\n var d = x & 0xFF;\n var y = ctx.sbox[0][a] + ctx.sbox[1][b];\n y = y ^ ctx.sbox[2][c];\n y = y + ctx.sbox[3][d];\n return y;\n }\n function BlowFish_Encrypt(ctx, left, right) {\n var Xl = left;\n var Xr = right;\n var temp;\n for (var i = 0; i < N; ++i) {\n Xl = Xl ^ ctx.pbox[i];\n Xr = F(ctx, Xl) ^ Xr;\n temp = Xl;\n Xl = Xr;\n Xr = temp;\n }\n temp = Xl;\n Xl = Xr;\n Xr = temp;\n Xr = Xr ^ ctx.pbox[N];\n Xl = Xl ^ ctx.pbox[N + 1];\n return {\n left: Xl,\n right: Xr\n };\n }\n function BlowFish_Decrypt(ctx, left, right) {\n var Xl = left;\n var Xr = right;\n var temp;\n for (var i = N + 1; i > 1; --i) {\n Xl = Xl ^ ctx.pbox[i];\n Xr = F(ctx, Xl) ^ Xr;\n temp = Xl;\n Xl = Xr;\n Xr = temp;\n }\n temp = Xl;\n Xl = Xr;\n Xr = temp;\n Xr = Xr ^ ctx.pbox[1];\n Xl = Xl ^ ctx.pbox[0];\n return {\n left: Xl,\n right: Xr\n };\n }\n\n /**\n * Initialization ctx's pbox and sbox.\n *\n * @param {Object} ctx The object has pbox and sbox.\n * @param {Array} key An array of 32-bit words.\n * @param {int} keysize The length of the key.\n *\n * @example\n *\n * BlowFishInit(BLOWFISH_CTX, key, 128/32);\n */\n function BlowFishInit(ctx, key, keysize) {\n for (var Row = 0; Row < 4; Row++) {\n ctx.sbox[Row] = [];\n for (var Col = 0; Col < 256; Col++) {\n ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n }\n }\n var keyIndex = 0;\n for (var index = 0; index < N + 2; index++) {\n ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n keyIndex++;\n if (keyIndex >= keysize) {\n keyIndex = 0;\n }\n }\n var Data1 = 0;\n var Data2 = 0;\n var res = 0;\n for (var i = 0; i < N + 2; i += 2) {\n res = BlowFish_Encrypt(ctx, Data1, Data2);\n Data1 = res.left;\n Data2 = res.right;\n ctx.pbox[i] = Data1;\n ctx.pbox[i + 1] = Data2;\n }\n for (var _i = 0; _i < 4; _i++) {\n for (var j = 0; j < 256; j += 2) {\n res = BlowFish_Encrypt(ctx, Data1, Data2);\n Data1 = res.left;\n Data2 = res.right;\n ctx.sbox[_i][j] = Data1;\n ctx.sbox[_i][j + 1] = Data2;\n }\n }\n return true;\n }\n\n /**\n * Blowfish block cipher algorithm.\n */\n var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n _doReset: function _doReset() {\n // Skip reset of nRounds has been set before and key did not change\n if (this._keyPriorReset === this._key) {\n return;\n }\n\n // Shortcuts\n var key = this._keyPriorReset = this._key;\n var keyWords = key.words;\n var keySize = key.sigBytes / 4;\n\n //Initialization pbox and sbox\n BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n },\n encryptBlock: function encryptBlock(M, offset) {\n var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n M[offset] = res.left;\n M[offset + 1] = res.right;\n },\n decryptBlock: function decryptBlock(M, offset) {\n var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n M[offset] = res.left;\n M[offset + 1] = res.right;\n },\n blockSize: 64 / 32,\n keySize: 128 / 32,\n ivSize: 64 / 32\n });\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n */\n C.Blowfish = BlockCipher._createHelper(Blowfish);\n })();\n return CryptoJS.Blowfish;\n});\n\n/***/ }),\n\n/***/ 28395:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(39081);\n__webpack_require__(20731);\n__webpack_require__(23913);\n__webpack_require__(14032);\n__webpack_require__(57114);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(36572));\n } else {}\n})(void 0, function (CryptoJS) {\n /**\n * Cipher core components.\n */\n CryptoJS.lib.Cipher || function (undefined) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var WordArray = C_lib.WordArray;\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n var C_enc = C.enc;\n var Utf8 = C_enc.Utf8;\n var Base64 = C_enc.Base64;\n var C_algo = C.algo;\n var EvpKDF = C_algo.EvpKDF;\n\n /**\n * Abstract base cipher template.\n *\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n */\n var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n /**\n * Configuration options.\n *\n * @property {WordArray} iv The IV to use for this operation.\n */\n cfg: Base.extend(),\n /**\n * Creates this cipher in encryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n */\n createEncryptor: function createEncryptor(key, cfg) {\n return this.create(this._ENC_XFORM_MODE, key, cfg);\n },\n /**\n * Creates this cipher in decryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n */\n createDecryptor: function createDecryptor(key, cfg) {\n return this.create(this._DEC_XFORM_MODE, key, cfg);\n },\n /**\n * Initializes a newly created cipher.\n *\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n */\n init: function init(xformMode, key, cfg) {\n // Apply config defaults\n this.cfg = this.cfg.extend(cfg);\n\n // Store transform mode and key\n this._xformMode = xformMode;\n this._key = key;\n\n // Set initial values\n this.reset();\n },\n /**\n * Resets this cipher to its initial state.\n *\n * @example\n *\n * cipher.reset();\n */\n reset: function reset() {\n // Reset data buffer\n BufferedBlockAlgorithm.reset.call(this);\n\n // Perform concrete-cipher logic\n this._doReset();\n },\n /**\n * Adds data to be encrypted or decrypted.\n *\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n *\n * @return {WordArray} The data after processing.\n *\n * @example\n *\n * var encrypted = cipher.process('data');\n * var encrypted = cipher.process(wordArray);\n */\n process: function process(dataUpdate) {\n // Append\n this._append(dataUpdate);\n\n // Process available blocks\n return this._process();\n },\n /**\n * Finalizes the encryption or decryption process.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n *\n * @return {WordArray} The data after final processing.\n *\n * @example\n *\n * var encrypted = cipher.finalize();\n * var encrypted = cipher.finalize('data');\n * var encrypted = cipher.finalize(wordArray);\n */\n finalize: function finalize(dataUpdate) {\n // Final data update\n if (dataUpdate) {\n this._append(dataUpdate);\n }\n\n // Perform concrete-cipher logic\n var finalProcessedData = this._doFinalize();\n return finalProcessedData;\n },\n keySize: 128 / 32,\n ivSize: 128 / 32,\n _ENC_XFORM_MODE: 1,\n _DEC_XFORM_MODE: 2,\n /**\n * Creates shortcut functions to a cipher's object interface.\n *\n * @param {Cipher} cipher The cipher to create a helper for.\n *\n * @return {Object} An object with encrypt and decrypt shortcut functions.\n *\n * @static\n *\n * @example\n *\n * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n */\n _createHelper: function () {\n function selectCipherStrategy(key) {\n if (typeof key == 'string') {\n return PasswordBasedCipher;\n } else {\n return SerializableCipher;\n }\n }\n return function (cipher) {\n return {\n encrypt: function encrypt(message, key, cfg) {\n return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n },\n decrypt: function decrypt(ciphertext, key, cfg) {\n return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n }\n };\n };\n }()\n });\n\n /**\n * Abstract base stream cipher template.\n *\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n */\n var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n _doFinalize: function _doFinalize() {\n // Process partial blocks\n var finalProcessedBlocks = this._process(!!'flush');\n return finalProcessedBlocks;\n },\n blockSize: 1\n });\n\n /**\n * Mode namespace.\n */\n var C_mode = C.mode = {};\n\n /**\n * Abstract base block cipher mode template.\n */\n var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n /**\n * Creates this mode for encryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n */\n createEncryptor: function createEncryptor(cipher, iv) {\n return this.Encryptor.create(cipher, iv);\n },\n /**\n * Creates this mode for decryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n */\n createDecryptor: function createDecryptor(cipher, iv) {\n return this.Decryptor.create(cipher, iv);\n },\n /**\n * Initializes a newly created mode.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n */\n init: function init(cipher, iv) {\n this._cipher = cipher;\n this._iv = iv;\n }\n });\n\n /**\n * Cipher Block Chaining mode.\n */\n var CBC = C_mode.CBC = function () {\n /**\n * Abstract base CBC mode.\n */\n var CBC = BlockCipherMode.extend();\n\n /**\n * CBC encryptor.\n */\n CBC.Encryptor = CBC.extend({\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n\n // XOR and encrypt\n xorBlock.call(this, words, offset, blockSize);\n cipher.encryptBlock(words, offset);\n\n // Remember this block to use with next block\n this._prevBlock = words.slice(offset, offset + blockSize);\n }\n });\n\n /**\n * CBC decryptor.\n */\n CBC.Decryptor = CBC.extend({\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n\n // Remember this block to use with next block\n var thisBlock = words.slice(offset, offset + blockSize);\n\n // Decrypt and XOR\n cipher.decryptBlock(words, offset);\n xorBlock.call(this, words, offset, blockSize);\n\n // This block becomes the previous block\n this._prevBlock = thisBlock;\n }\n });\n function xorBlock(words, offset, blockSize) {\n var block;\n\n // Shortcut\n var iv = this._iv;\n\n // Choose mixing block\n if (iv) {\n block = iv;\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n } else {\n block = this._prevBlock;\n }\n\n // XOR blocks\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= block[i];\n }\n }\n return CBC;\n }();\n\n /**\n * Padding namespace.\n */\n var C_pad = C.pad = {};\n\n /**\n * PKCS #5/7 padding strategy.\n */\n var Pkcs7 = C_pad.Pkcs7 = {\n /**\n * Pads data using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to pad.\n * @param {number} blockSize The multiple that the data should be padded to.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n */\n pad: function pad(data, blockSize) {\n // Shortcut\n var blockSizeBytes = blockSize * 4;\n\n // Count padding bytes\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n // Create padding word\n var paddingWord = nPaddingBytes << 24 | nPaddingBytes << 16 | nPaddingBytes << 8 | nPaddingBytes;\n\n // Create padding\n var paddingWords = [];\n for (var i = 0; i < nPaddingBytes; i += 4) {\n paddingWords.push(paddingWord);\n }\n var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n // Add padding\n data.concat(padding);\n },\n /**\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to unpad.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\n */\n unpad: function unpad(data) {\n // Get number of padding bytes from last byte\n var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 0xff;\n\n // Remove padding\n data.sigBytes -= nPaddingBytes;\n }\n };\n\n /**\n * Abstract base block cipher template.\n *\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n */\n var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n /**\n * Configuration options.\n *\n * @property {Mode} mode The block mode to use. Default: CBC\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n */\n cfg: Cipher.cfg.extend({\n mode: CBC,\n padding: Pkcs7\n }),\n reset: function reset() {\n var modeCreator;\n\n // Reset cipher\n Cipher.reset.call(this);\n\n // Shortcuts\n var cfg = this.cfg;\n var iv = cfg.iv;\n var mode = cfg.mode;\n\n // Reset block mode\n if (this._xformMode == this._ENC_XFORM_MODE) {\n modeCreator = mode.createEncryptor;\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */{\n modeCreator = mode.createDecryptor;\n // Keep at least one block in the buffer for unpadding\n this._minBufferSize = 1;\n }\n if (this._mode && this._mode.__creator == modeCreator) {\n this._mode.init(this, iv && iv.words);\n } else {\n this._mode = modeCreator.call(mode, this, iv && iv.words);\n this._mode.__creator = modeCreator;\n }\n },\n _doProcessBlock: function _doProcessBlock(words, offset) {\n this._mode.processBlock(words, offset);\n },\n _doFinalize: function _doFinalize() {\n var finalProcessedBlocks;\n\n // Shortcut\n var padding = this.cfg.padding;\n\n // Finalize\n if (this._xformMode == this._ENC_XFORM_MODE) {\n // Pad data\n padding.pad(this._data, this.blockSize);\n\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush');\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */{\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush');\n\n // Unpad data\n padding.unpad(finalProcessedBlocks);\n }\n return finalProcessedBlocks;\n },\n blockSize: 128 / 32\n });\n\n /**\n * A collection of cipher parameters.\n *\n * @property {WordArray} ciphertext The raw ciphertext.\n * @property {WordArray} key The key to this ciphertext.\n * @property {WordArray} iv The IV used in the ciphering operation.\n * @property {WordArray} salt The salt used with a key derivation function.\n * @property {Cipher} algorithm The cipher algorithm.\n * @property {Mode} mode The block mode used in the ciphering operation.\n * @property {Padding} padding The padding scheme used in the ciphering operation.\n * @property {number} blockSize The block size of the cipher.\n * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n */\n var CipherParams = C_lib.CipherParams = Base.extend({\n /**\n * Initializes a newly created cipher params object.\n *\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\n *\n * @example\n *\n * var cipherParams = CryptoJS.lib.CipherParams.create({\n * ciphertext: ciphertextWordArray,\n * key: keyWordArray,\n * iv: ivWordArray,\n * salt: saltWordArray,\n * algorithm: CryptoJS.algo.AES,\n * mode: CryptoJS.mode.CBC,\n * padding: CryptoJS.pad.PKCS7,\n * blockSize: 4,\n * formatter: CryptoJS.format.OpenSSL\n * });\n */\n init: function init(cipherParams) {\n this.mixIn(cipherParams);\n },\n /**\n * Converts this cipher params object to a string.\n *\n * @param {Format} formatter (Optional) The formatting strategy to use.\n *\n * @return {string} The stringified cipher params.\n *\n * @throws Error If neither the formatter nor the default formatter is set.\n *\n * @example\n *\n * var string = cipherParams + '';\n * var string = cipherParams.toString();\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n */\n toString: function toString(formatter) {\n return (formatter || this.formatter).stringify(this);\n }\n });\n\n /**\n * Format namespace.\n */\n var C_format = C.format = {};\n\n /**\n * OpenSSL formatting strategy.\n */\n var OpenSSLFormatter = C_format.OpenSSL = {\n /**\n * Converts a cipher params object to an OpenSSL-compatible string.\n *\n * @param {CipherParams} cipherParams The cipher params object.\n *\n * @return {string} The OpenSSL-compatible string.\n *\n * @static\n *\n * @example\n *\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n */\n stringify: function stringify(cipherParams) {\n var wordArray;\n\n // Shortcuts\n var ciphertext = cipherParams.ciphertext;\n var salt = cipherParams.salt;\n\n // Format\n if (salt) {\n wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n } else {\n wordArray = ciphertext;\n }\n return wordArray.toString(Base64);\n },\n /**\n * Converts an OpenSSL-compatible string to a cipher params object.\n *\n * @param {string} openSSLStr The OpenSSL-compatible string.\n *\n * @return {CipherParams} The cipher params object.\n *\n * @static\n *\n * @example\n *\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n */\n parse: function parse(openSSLStr) {\n var salt;\n\n // Parse base64\n var ciphertext = Base64.parse(openSSLStr);\n\n // Shortcut\n var ciphertextWords = ciphertext.words;\n\n // Test for salt\n if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n // Extract salt\n salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n // Remove salt from ciphertext\n ciphertextWords.splice(0, 4);\n ciphertext.sigBytes -= 16;\n }\n return CipherParams.create({\n ciphertext: ciphertext,\n salt: salt\n });\n }\n };\n\n /**\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n */\n var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n /**\n * Configuration options.\n *\n * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n */\n cfg: Base.extend({\n format: OpenSSLFormatter\n }),\n /**\n * Encrypts a message.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n encrypt: function encrypt(cipher, message, key, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg);\n\n // Encrypt\n var encryptor = cipher.createEncryptor(key, cfg);\n var ciphertext = encryptor.finalize(message);\n\n // Shortcut\n var cipherCfg = encryptor.cfg;\n\n // Create and return serializable cipher params\n return CipherParams.create({\n ciphertext: ciphertext,\n key: key,\n iv: cipherCfg.iv,\n algorithm: cipher,\n mode: cipherCfg.mode,\n padding: cipherCfg.padding,\n blockSize: cipher.blockSize,\n formatter: cfg.format\n });\n },\n /**\n * Decrypts serialized ciphertext.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n decrypt: function decrypt(cipher, ciphertext, key, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg);\n\n // Convert string to CipherParams\n ciphertext = this._parse(ciphertext, cfg.format);\n\n // Decrypt\n var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n return plaintext;\n },\n /**\n * Converts serialized ciphertext to CipherParams,\n * else assumed CipherParams already and returns ciphertext unchanged.\n *\n * @param {CipherParams|string} ciphertext The ciphertext.\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n *\n * @return {CipherParams} The unserialized ciphertext.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n */\n _parse: function _parse(ciphertext, format) {\n if (typeof ciphertext == 'string') {\n return format.parse(ciphertext, this);\n } else {\n return ciphertext;\n }\n }\n });\n\n /**\n * Key derivation function namespace.\n */\n var C_kdf = C.kdf = {};\n\n /**\n * OpenSSL key derivation function.\n */\n var OpenSSLKdf = C_kdf.OpenSSL = {\n /**\n * Derives a key and IV from a password.\n *\n * @param {string} password The password to derive from.\n * @param {number} keySize The size in words of the key to generate.\n * @param {number} ivSize The size in words of the IV to generate.\n * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n *\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\n *\n * @static\n *\n * @example\n *\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n */\n execute: function execute(password, keySize, ivSize, salt, hasher) {\n // Generate random salt\n if (!salt) {\n salt = WordArray.random(64 / 8);\n }\n\n // Derive key and IV\n if (!hasher) {\n var key = EvpKDF.create({\n keySize: keySize + ivSize\n }).compute(password, salt);\n } else {\n var key = EvpKDF.create({\n keySize: keySize + ivSize,\n hasher: hasher\n }).compute(password, salt);\n }\n\n // Separate key and IV\n var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n key.sigBytes = keySize * 4;\n\n // Return params\n return CipherParams.create({\n key: key,\n iv: iv,\n salt: salt\n });\n }\n };\n\n /**\n * A serializable cipher wrapper that derives the key from a password,\n * and returns ciphertext as a serializable cipher params object.\n */\n var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n /**\n * Configuration options.\n *\n * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n */\n cfg: SerializableCipher.cfg.extend({\n kdf: OpenSSLKdf\n }),\n /**\n * Encrypts a message using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n */\n encrypt: function encrypt(cipher, message, password, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg);\n\n // Derive key and other params\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n // Add IV to config\n cfg.iv = derivedParams.iv;\n\n // Encrypt\n var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n // Mix in derived params\n ciphertext.mixIn(derivedParams);\n return ciphertext;\n },\n /**\n * Decrypts serialized ciphertext using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n */\n decrypt: function decrypt(cipher, ciphertext, password, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg);\n\n // Convert string to CipherParams\n ciphertext = this._parse(ciphertext, cfg.format);\n\n // Derive key and other params\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n // Add IV to config\n cfg.iv = derivedParams.iv;\n\n // Decrypt\n var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n return plaintext;\n }\n });\n }();\n});\n\n/***/ }),\n\n/***/ 34559:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(39081);\n__webpack_require__(81755);\n__webpack_require__(94845);\n__webpack_require__(20731);\n__webpack_require__(23913);\n__webpack_require__(14032);\n__webpack_require__(57114);\n__webpack_require__(59735);\n__webpack_require__(73663);\n__webpack_require__(29883);\n__webpack_require__(35471);\n__webpack_require__(21012);\n__webpack_require__(88997);\n__webpack_require__(97464);\n__webpack_require__(2857);\n__webpack_require__(94715);\n__webpack_require__(13624);\n__webpack_require__(91132);\n__webpack_require__(62514);\n__webpack_require__(24597);\n__webpack_require__(88042);\n__webpack_require__(4660);\n__webpack_require__(92451);\n__webpack_require__(44206);\n__webpack_require__(66288);\n__webpack_require__(13250);\n__webpack_require__(3858);\n__webpack_require__(84538);\n__webpack_require__(64793);\n__webpack_require__(74202);\n__webpack_require__(52529);\n__webpack_require__(49109);\n;\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory();\n } else {}\n})(void 0, function () {\n /*globals window, global, require*/\n\n /**\n * CryptoJS core components.\n */\n var CryptoJS = CryptoJS || function (Math, undefined) {\n var crypto;\n\n // Native crypto from window (Browser)\n if (typeof window !== 'undefined' && window.crypto) {\n crypto = window.crypto;\n }\n\n // Native crypto in web worker (Browser)\n if (typeof self !== 'undefined' && self.crypto) {\n crypto = self.crypto;\n }\n\n // Native crypto from worker\n if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n crypto = globalThis.crypto;\n }\n\n // Native (experimental IE 11) crypto from window (Browser)\n if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n crypto = window.msCrypto;\n }\n\n // Native crypto from global (NodeJS)\n if (!crypto && typeof __webpack_require__.g !== 'undefined' && __webpack_require__.g.crypto) {\n crypto = __webpack_require__.g.crypto;\n }\n\n // Native crypto import via require (NodeJS)\n if (!crypto && \"function\" === 'function') {\n try {\n crypto = __webpack_require__(50477);\n } catch (err) {}\n }\n\n /*\n * Cryptographically secure pseudorandom number generator\n *\n * As Math.random() is cryptographically not safe to use\n */\n var cryptoSecureRandomInt = function cryptoSecureRandomInt() {\n if (crypto) {\n // Use getRandomValues method (Browser)\n if (typeof crypto.getRandomValues === 'function') {\n try {\n return crypto.getRandomValues(new Uint32Array(1))[0];\n } catch (err) {}\n }\n\n // Use randomBytes method (NodeJS)\n if (typeof crypto.randomBytes === 'function') {\n try {\n return crypto.randomBytes(4).readInt32LE();\n } catch (err) {}\n }\n }\n throw new Error('Native crypto module could not be used to get secure random number.');\n };\n\n /*\n * Local polyfill of Object.create\n */\n var create = Object.create || function () {\n function F() {}\n return function (obj) {\n var subtype;\n F.prototype = obj;\n subtype = new F();\n F.prototype = null;\n return subtype;\n };\n }();\n\n /**\n * CryptoJS namespace.\n */\n var C = {};\n\n /**\n * Library namespace.\n */\n var C_lib = C.lib = {};\n\n /**\n * Base object for prototypal inheritance.\n */\n var Base = C_lib.Base = function () {\n return {\n /**\n * Creates a new object that inherits from this object.\n *\n * @param {Object} overrides Properties to copy into the new object.\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * field: 'value',\n *\n * method: function () {\n * }\n * });\n */\n extend: function extend(overrides) {\n // Spawn\n var subtype = create(this);\n\n // Augment\n if (overrides) {\n subtype.mixIn(overrides);\n }\n\n // Create default initializer\n if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n subtype.init = function () {\n subtype.$super.init.apply(this, arguments);\n };\n }\n\n // Initializer's prototype is the subtype object\n subtype.init.prototype = subtype;\n\n // Reference supertype\n subtype.$super = this;\n return subtype;\n },\n /**\n * Extends this object and runs the init method.\n * Arguments to create() will be passed to init().\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var instance = MyType.create();\n */\n create: function create() {\n var instance = this.extend();\n instance.init.apply(instance, arguments);\n return instance;\n },\n /**\n * Initializes a newly created object.\n * Override this method to add some logic when your objects are created.\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * init: function () {\n * // ...\n * }\n * });\n */\n init: function init() {},\n /**\n * Copies properties into this object.\n *\n * @param {Object} properties The properties to mix in.\n *\n * @example\n *\n * MyType.mixIn({\n * field: 'value'\n * });\n */\n mixIn: function mixIn(properties) {\n for (var propertyName in properties) {\n if (properties.hasOwnProperty(propertyName)) {\n this[propertyName] = properties[propertyName];\n }\n }\n\n // IE won't copy toString using the loop above\n if (properties.hasOwnProperty('toString')) {\n this.toString = properties.toString;\n }\n },\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = instance.clone();\n */\n clone: function clone() {\n return this.init.prototype.extend(this);\n }\n };\n }();\n\n /**\n * An array of 32-bit words.\n *\n * @property {Array} words The array of 32-bit words.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\n var WordArray = C_lib.WordArray = Base.extend({\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of 32-bit words.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.create();\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n */\n init: function init(words, sigBytes) {\n words = this.words = words || [];\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 4;\n }\n },\n /**\n * Converts this word array to a string.\n *\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n *\n * @return {string} The stringified word array.\n *\n * @example\n *\n * var string = wordArray + '';\n * var string = wordArray.toString();\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\n */\n toString: function toString(encoder) {\n return (encoder || Hex).stringify(this);\n },\n /**\n * Concatenates a word array to this word array.\n *\n * @param {WordArray} wordArray The word array to append.\n *\n * @return {WordArray} This word array.\n *\n * @example\n *\n * wordArray1.concat(wordArray2);\n */\n concat: function concat(wordArray) {\n // Shortcuts\n var thisWords = this.words;\n var thatWords = wordArray.words;\n var thisSigBytes = this.sigBytes;\n var thatSigBytes = wordArray.sigBytes;\n\n // Clamp excess bits\n this.clamp();\n\n // Concat\n if (thisSigBytes % 4) {\n // Copy one byte at a time\n for (var i = 0; i < thatSigBytes; i++) {\n var thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8;\n }\n } else {\n // Copy one word at a time\n for (var j = 0; j < thatSigBytes; j += 4) {\n thisWords[thisSigBytes + j >>> 2] = thatWords[j >>> 2];\n }\n }\n this.sigBytes += thatSigBytes;\n\n // Chainable\n return this;\n },\n /**\n * Removes insignificant bits.\n *\n * @example\n *\n * wordArray.clamp();\n */\n clamp: function clamp() {\n // Shortcuts\n var words = this.words;\n var sigBytes = this.sigBytes;\n\n // Clamp\n words[sigBytes >>> 2] &= 0xffffffff << 32 - sigBytes % 4 * 8;\n words.length = Math.ceil(sigBytes / 4);\n },\n /**\n * Creates a copy of this word array.\n *\n * @return {WordArray} The clone.\n *\n * @example\n *\n * var clone = wordArray.clone();\n */\n clone: function clone() {\n var clone = Base.clone.call(this);\n clone.words = this.words.slice(0);\n return clone;\n },\n /**\n * Creates a word array filled with random bytes.\n *\n * @param {number} nBytes The number of random bytes to generate.\n *\n * @return {WordArray} The random word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.random(16);\n */\n random: function random(nBytes) {\n var words = [];\n for (var i = 0; i < nBytes; i += 4) {\n words.push(cryptoSecureRandomInt());\n }\n return new WordArray.init(words, nBytes);\n }\n });\n\n /**\n * Encoder namespace.\n */\n var C_enc = C.enc = {};\n\n /**\n * Hex encoding strategy.\n */\n var Hex = C_enc.Hex = {\n /**\n * Converts a word array to a hex string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The hex string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n\n // Convert\n var hexChars = [];\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n return hexChars.join('');\n },\n /**\n * Converts a hex string to a word array.\n *\n * @param {string} hexStr The hex string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n */\n parse: function parse(hexStr) {\n // Shortcut\n var hexStrLength = hexStr.length;\n\n // Convert\n var words = [];\n for (var i = 0; i < hexStrLength; i += 2) {\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4;\n }\n return new WordArray.init(words, hexStrLength / 2);\n }\n };\n\n /**\n * Latin1 encoding strategy.\n */\n var Latin1 = C_enc.Latin1 = {\n /**\n * Converts a word array to a Latin1 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Latin1 string.\n *\n * @static\n *\n * @example\n *\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n\n // Convert\n var latin1Chars = [];\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n latin1Chars.push(String.fromCharCode(bite));\n }\n return latin1Chars.join('');\n },\n /**\n * Converts a Latin1 string to a word array.\n *\n * @param {string} latin1Str The Latin1 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n */\n parse: function parse(latin1Str) {\n // Shortcut\n var latin1StrLength = latin1Str.length;\n\n // Convert\n var words = [];\n for (var i = 0; i < latin1StrLength; i++) {\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << 24 - i % 4 * 8;\n }\n return new WordArray.init(words, latin1StrLength);\n }\n };\n\n /**\n * UTF-8 encoding strategy.\n */\n var Utf8 = C_enc.Utf8 = {\n /**\n * Converts a word array to a UTF-8 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-8 string.\n *\n * @static\n *\n * @example\n *\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n try {\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n } catch (e) {\n throw new Error('Malformed UTF-8 data');\n }\n },\n /**\n * Converts a UTF-8 string to a word array.\n *\n * @param {string} utf8Str The UTF-8 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n */\n parse: function parse(utf8Str) {\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n }\n };\n\n /**\n * Abstract buffered block algorithm template.\n *\n * The property blockSize must be implemented in a concrete subtype.\n *\n * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n */\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n /**\n * Resets this block algorithm's data buffer to its initial state.\n *\n * @example\n *\n * bufferedBlockAlgorithm.reset();\n */\n reset: function reset() {\n // Initial values\n this._data = new WordArray.init();\n this._nDataBytes = 0;\n },\n /**\n * Adds new data to this block algorithm's buffer.\n *\n * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n *\n * @example\n *\n * bufferedBlockAlgorithm._append('data');\n * bufferedBlockAlgorithm._append(wordArray);\n */\n _append: function _append(data) {\n // Convert string to WordArray, else assume WordArray already\n if (typeof data == 'string') {\n data = Utf8.parse(data);\n }\n\n // Append\n this._data.concat(data);\n this._nDataBytes += data.sigBytes;\n },\n /**\n * Processes available data blocks.\n *\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n *\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n *\n * @return {WordArray} The processed data.\n *\n * @example\n *\n * var processedData = bufferedBlockAlgorithm._process();\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n */\n _process: function _process(doFlush) {\n var processedWords;\n\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var dataSigBytes = data.sigBytes;\n var blockSize = this.blockSize;\n var blockSizeBytes = blockSize * 4;\n\n // Count blocks ready\n var nBlocksReady = dataSigBytes / blockSizeBytes;\n if (doFlush) {\n // Round up to include partial blocks\n nBlocksReady = Math.ceil(nBlocksReady);\n } else {\n // Round down to include only full blocks,\n // less the number of blocks that must remain in the buffer\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n }\n\n // Count words ready\n var nWordsReady = nBlocksReady * blockSize;\n\n // Count bytes ready\n var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n // Process blocks\n if (nWordsReady) {\n for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n // Perform concrete-algorithm logic\n this._doProcessBlock(dataWords, offset);\n }\n\n // Remove processed words\n processedWords = dataWords.splice(0, nWordsReady);\n data.sigBytes -= nBytesReady;\n }\n\n // Return processed words\n return new WordArray.init(processedWords, nBytesReady);\n },\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = bufferedBlockAlgorithm.clone();\n */\n clone: function clone() {\n var clone = Base.clone.call(this);\n clone._data = this._data.clone();\n return clone;\n },\n _minBufferSize: 0\n });\n\n /**\n * Abstract hasher template.\n *\n * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n */\n var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n /**\n * Configuration options.\n */\n cfg: Base.extend(),\n /**\n * Initializes a newly created hasher.\n *\n * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n *\n * @example\n *\n * var hasher = CryptoJS.algo.SHA256.create();\n */\n init: function init(cfg) {\n // Apply config defaults\n this.cfg = this.cfg.extend(cfg);\n\n // Set initial values\n this.reset();\n },\n /**\n * Resets this hasher to its initial state.\n *\n * @example\n *\n * hasher.reset();\n */\n reset: function reset() {\n // Reset data buffer\n BufferedBlockAlgorithm.reset.call(this);\n\n // Perform concrete-hasher logic\n this._doReset();\n },\n /**\n * Updates this hasher with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {Hasher} This hasher.\n *\n * @example\n *\n * hasher.update('message');\n * hasher.update(wordArray);\n */\n update: function update(messageUpdate) {\n // Append\n this._append(messageUpdate);\n\n // Update the hash\n this._process();\n\n // Chainable\n return this;\n },\n /**\n * Finalizes the hash computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The hash.\n *\n * @example\n *\n * var hash = hasher.finalize();\n * var hash = hasher.finalize('message');\n * var hash = hasher.finalize(wordArray);\n */\n finalize: function finalize(messageUpdate) {\n // Final message update\n if (messageUpdate) {\n this._append(messageUpdate);\n }\n\n // Perform concrete-hasher logic\n var hash = this._doFinalize();\n return hash;\n },\n blockSize: 512 / 32,\n /**\n * Creates a shortcut function to a hasher's object interface.\n *\n * @param {Hasher} hasher The hasher to create a helper for.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n */\n _createHelper: function _createHelper(hasher) {\n return function (message, cfg) {\n return new hasher.init(cfg).finalize(message);\n };\n },\n /**\n * Creates a shortcut function to the HMAC's object interface.\n *\n * @param {Hasher} hasher The hasher to use in this HMAC helper.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n */\n _createHmacHelper: function _createHmacHelper(hasher) {\n return function (message, key) {\n return new C_algo.HMAC.init(hasher, key).finalize(message);\n };\n }\n });\n\n /**\n * Algorithm namespace.\n */\n var C_algo = C.algo = {};\n return C;\n }(Math);\n return CryptoJS;\n});\n\n/***/ }),\n\n/***/ 49300:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(94845);\n;\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * Base64 encoding strategy.\n */\n var Base64 = C_enc.Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = this._map;\n\n // Clamp excess bits\n wordArray.clamp();\n\n // Convert\n var base64Chars = [];\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 0xff;\n var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 0xff;\n var triplet = byte1 << 16 | byte2 << 8 | byte3;\n for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {\n base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 0x3f));\n }\n }\n\n // Add padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n return base64Chars.join('');\n },\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse: function parse(base64Str) {\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = this._map;\n var reverseMap = this._reverseMap;\n if (!reverseMap) {\n reverseMap = this._reverseMap = [];\n for (var j = 0; j < map.length; j++) {\n reverseMap[map.charCodeAt(j)] = j;\n }\n }\n\n // Ignore padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex;\n }\n }\n\n // Convert\n return parseLoop(base64Str, base64StrLength, reverseMap);\n },\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n function parseLoop(base64Str, base64StrLength, reverseMap) {\n var words = [];\n var nBytes = 0;\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;\n var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;\n var bitsCombined = bits1 | bits2;\n words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;\n nBytes++;\n }\n }\n return WordArray.create(words, nBytes);\n }\n })();\n return CryptoJS.enc.Base64;\n});\n\n/***/ }),\n\n/***/ 375:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(94845);\n;\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * Base64url encoding strategy.\n */\n var Base64url = C_enc.Base64url = {\n /**\n * Converts a word array to a Base64url string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @param {boolean} urlSafe Whether to use url safe\n *\n * @return {string} The Base64url string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n */\n stringify: function stringify(wordArray, urlSafe) {\n if (urlSafe === undefined) {\n urlSafe = true;\n }\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = urlSafe ? this._safe_map : this._map;\n\n // Clamp excess bits\n wordArray.clamp();\n\n // Convert\n var base64Chars = [];\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 0xff;\n var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 0xff;\n var triplet = byte1 << 16 | byte2 << 8 | byte3;\n for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {\n base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 0x3f));\n }\n }\n\n // Add padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n return base64Chars.join('');\n },\n /**\n * Converts a Base64url string to a word array.\n *\n * @param {string} base64Str The Base64url string.\n *\n * @param {boolean} urlSafe Whether to use url safe\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n */\n parse: function parse(base64Str, urlSafe) {\n if (urlSafe === undefined) {\n urlSafe = true;\n }\n\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = urlSafe ? this._safe_map : this._map;\n var reverseMap = this._reverseMap;\n if (!reverseMap) {\n reverseMap = this._reverseMap = [];\n for (var j = 0; j < map.length; j++) {\n reverseMap[map.charCodeAt(j)] = j;\n }\n }\n\n // Ignore padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex;\n }\n }\n\n // Convert\n return parseLoop(base64Str, base64StrLength, reverseMap);\n },\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'\n };\n function parseLoop(base64Str, base64StrLength, reverseMap) {\n var words = [];\n var nBytes = 0;\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;\n var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;\n var bitsCombined = bits1 | bits2;\n words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;\n nBytes++;\n }\n }\n return WordArray.create(words, nBytes);\n }\n })();\n return CryptoJS.enc.Base64url;\n});\n\n/***/ }),\n\n/***/ 56217:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(94845);\n;\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * UTF-16 BE encoding strategy.\n */\n var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n /**\n * Converts a word array to a UTF-16 BE string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-16 BE string.\n *\n * @static\n *\n * @example\n *\n * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n\n // Convert\n var utf16Chars = [];\n for (var i = 0; i < sigBytes; i += 2) {\n var codePoint = words[i >>> 2] >>> 16 - i % 4 * 8 & 0xffff;\n utf16Chars.push(String.fromCharCode(codePoint));\n }\n return utf16Chars.join('');\n },\n /**\n * Converts a UTF-16 BE string to a word array.\n *\n * @param {string} utf16Str The UTF-16 BE string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n */\n parse: function parse(utf16Str) {\n // Shortcut\n var utf16StrLength = utf16Str.length;\n\n // Convert\n var words = [];\n for (var i = 0; i < utf16StrLength; i++) {\n words[i >>> 1] |= utf16Str.charCodeAt(i) << 16 - i % 2 * 16;\n }\n return WordArray.create(words, utf16StrLength * 2);\n }\n };\n\n /**\n * UTF-16 LE encoding strategy.\n */\n C_enc.Utf16LE = {\n /**\n * Converts a word array to a UTF-16 LE string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-16 LE string.\n *\n * @static\n *\n * @example\n *\n * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n\n // Convert\n var utf16Chars = [];\n for (var i = 0; i < sigBytes; i += 2) {\n var codePoint = swapEndian(words[i >>> 2] >>> 16 - i % 4 * 8 & 0xffff);\n utf16Chars.push(String.fromCharCode(codePoint));\n }\n return utf16Chars.join('');\n },\n /**\n * Converts a UTF-16 LE string to a word array.\n *\n * @param {string} utf16Str The UTF-16 LE string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n */\n parse: function parse(utf16Str) {\n // Shortcut\n var utf16StrLength = utf16Str.length;\n\n // Convert\n var words = [];\n for (var i = 0; i < utf16StrLength; i++) {\n words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << 16 - i % 2 * 16);\n }\n return WordArray.create(words, utf16StrLength * 2);\n }\n };\n function swapEndian(word) {\n return word << 8 & 0xff00ff00 | word >>> 8 & 0x00ff00ff;\n }\n })();\n return CryptoJS.enc.Utf16;\n});\n\n/***/ }),\n\n/***/ 36572:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(39081);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(76289), __webpack_require__(30443));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var WordArray = C_lib.WordArray;\n var C_algo = C.algo;\n var MD5 = C_algo.MD5;\n\n /**\n * This key derivation function is meant to conform with EVP_BytesToKey.\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n */\n var EvpKDF = C_algo.EvpKDF = Base.extend({\n /**\n * Configuration options.\n *\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n * @property {number} iterations The number of iterations to perform. Default: 1\n */\n cfg: Base.extend({\n keySize: 128 / 32,\n hasher: MD5,\n iterations: 1\n }),\n /**\n * Initializes a newly created key derivation function.\n *\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n *\n * @example\n *\n * var kdf = CryptoJS.algo.EvpKDF.create();\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n */\n init: function init(cfg) {\n this.cfg = this.cfg.extend(cfg);\n },\n /**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n *\n * @return {WordArray} The derived key.\n *\n * @example\n *\n * var key = kdf.compute(password, salt);\n */\n compute: function compute(password, salt) {\n var block;\n\n // Shortcut\n var cfg = this.cfg;\n\n // Init hasher\n var hasher = cfg.hasher.create();\n\n // Initial values\n var derivedKey = WordArray.create();\n\n // Shortcuts\n var derivedKeyWords = derivedKey.words;\n var keySize = cfg.keySize;\n var iterations = cfg.iterations;\n\n // Generate key\n while (derivedKeyWords.length < keySize) {\n if (block) {\n hasher.update(block);\n }\n block = hasher.update(password).finalize(salt);\n hasher.reset();\n\n // Iterations\n for (var i = 1; i < iterations; i++) {\n block = hasher.finalize(block);\n hasher.reset();\n }\n derivedKey.concat(block);\n }\n derivedKey.sigBytes = keySize * 4;\n return derivedKey;\n }\n });\n\n /**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\n *\n * @return {WordArray} The derived key.\n *\n * @static\n *\n * @example\n *\n * var key = CryptoJS.EvpKDF(password, salt);\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n */\n C.EvpKDF = function (password, salt, cfg) {\n return EvpKDF.create(cfg).compute(password, salt);\n };\n })();\n return CryptoJS.EvpKDF;\n});\n\n/***/ }),\n\n/***/ 68219:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(14032);\n__webpack_require__(57114);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n (function (undefined) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var CipherParams = C_lib.CipherParams;\n var C_enc = C.enc;\n var Hex = C_enc.Hex;\n var C_format = C.format;\n var HexFormatter = C_format.Hex = {\n /**\n * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n *\n * @param {CipherParams} cipherParams The cipher params object.\n *\n * @return {string} The hexadecimally encoded string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n */\n stringify: function stringify(cipherParams) {\n return cipherParams.ciphertext.toString(Hex);\n },\n /**\n * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n *\n * @param {string} input The hexadecimally encoded string.\n *\n * @return {CipherParams} The cipher params object.\n *\n * @static\n *\n * @example\n *\n * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n */\n parse: function parse(input) {\n var ciphertext = Hex.parse(input);\n return CipherParams.create({\n ciphertext: ciphertext\n });\n }\n };\n })();\n return CryptoJS.format.Hex;\n});\n\n/***/ }),\n\n/***/ 30443:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(39081);\n;\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var C_enc = C.enc;\n var Utf8 = C_enc.Utf8;\n var C_algo = C.algo;\n\n /**\n * HMAC algorithm.\n */\n var HMAC = C_algo.HMAC = Base.extend({\n /**\n * Initializes a newly created HMAC.\n *\n * @param {Hasher} hasher The hash algorithm to use.\n * @param {WordArray|string} key The secret key.\n *\n * @example\n *\n * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n */\n init: function init(hasher, key) {\n // Init hasher\n hasher = this._hasher = new hasher.init();\n\n // Convert string to WordArray, else assume WordArray already\n if (typeof key == 'string') {\n key = Utf8.parse(key);\n }\n\n // Shortcuts\n var hasherBlockSize = hasher.blockSize;\n var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n // Allow arbitrary length keys\n if (key.sigBytes > hasherBlockSizeBytes) {\n key = hasher.finalize(key);\n }\n\n // Clamp excess bits\n key.clamp();\n\n // Clone key for inner and outer pads\n var oKey = this._oKey = key.clone();\n var iKey = this._iKey = key.clone();\n\n // Shortcuts\n var oKeyWords = oKey.words;\n var iKeyWords = iKey.words;\n\n // XOR keys with pad constants\n for (var i = 0; i < hasherBlockSize; i++) {\n oKeyWords[i] ^= 0x5c5c5c5c;\n iKeyWords[i] ^= 0x36363636;\n }\n oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n // Set initial values\n this.reset();\n },\n /**\n * Resets this HMAC to its initial state.\n *\n * @example\n *\n * hmacHasher.reset();\n */\n reset: function reset() {\n // Shortcut\n var hasher = this._hasher;\n\n // Reset\n hasher.reset();\n hasher.update(this._iKey);\n },\n /**\n * Updates this HMAC with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {HMAC} This HMAC instance.\n *\n * @example\n *\n * hmacHasher.update('message');\n * hmacHasher.update(wordArray);\n */\n update: function update(messageUpdate) {\n this._hasher.update(messageUpdate);\n\n // Chainable\n return this;\n },\n /**\n * Finalizes the HMAC computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The HMAC.\n *\n * @example\n *\n * var hmac = hmacHasher.finalize();\n * var hmac = hmacHasher.finalize('message');\n * var hmac = hmacHasher.finalize(wordArray);\n */\n finalize: function finalize(messageUpdate) {\n // Shortcut\n var hasher = this._hasher;\n\n // Compute HMAC\n var innerHash = hasher.finalize(messageUpdate);\n hasher.reset();\n var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n return hmac;\n }\n });\n })();\n});\n\n/***/ }),\n\n/***/ 66122:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(26478), __webpack_require__(80986), __webpack_require__(56217), __webpack_require__(49300), __webpack_require__(375), __webpack_require__(72342), __webpack_require__(76289), __webpack_require__(26739), __webpack_require__(75230), __webpack_require__(97074), __webpack_require__(371), __webpack_require__(80767), __webpack_require__(76930), __webpack_require__(30443), __webpack_require__(95729), __webpack_require__(36572), __webpack_require__(28395), __webpack_require__(2727), __webpack_require__(59493), __webpack_require__(18494), __webpack_require__(5219), __webpack_require__(96112), __webpack_require__(51583), __webpack_require__(99215), __webpack_require__(43960), __webpack_require__(40681), __webpack_require__(16934), __webpack_require__(68219), __webpack_require__(6993), __webpack_require__(64390), __webpack_require__(76635), __webpack_require__(55380), __webpack_require__(9814), __webpack_require__(83122));\n } else {}\n})(void 0, function (CryptoJS) {\n return CryptoJS;\n});\n\n/***/ }),\n\n/***/ 80986:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(81755);\n__webpack_require__(10720);\n__webpack_require__(14032);\n__webpack_require__(3131);\n__webpack_require__(90868);\n__webpack_require__(65553);\n__webpack_require__(75626);\n__webpack_require__(95756);\n__webpack_require__(56912);\n__webpack_require__(58099);\n__webpack_require__(47969);\n__webpack_require__(59735);\n__webpack_require__(73663);\n__webpack_require__(29883);\n__webpack_require__(35471);\n__webpack_require__(21012);\n__webpack_require__(88997);\n__webpack_require__(97464);\n__webpack_require__(2857);\n__webpack_require__(94715);\n__webpack_require__(13624);\n__webpack_require__(91132);\n__webpack_require__(62514);\n__webpack_require__(24597);\n__webpack_require__(88042);\n__webpack_require__(4660);\n__webpack_require__(92451);\n__webpack_require__(44206);\n__webpack_require__(66288);\n__webpack_require__(13250);\n__webpack_require__(3858);\n__webpack_require__(84538);\n__webpack_require__(64793);\n__webpack_require__(74202);\n__webpack_require__(52529);\n;\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Check if typed arrays are supported\n if (typeof ArrayBuffer != 'function') {\n return;\n }\n\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n\n // Reference original init\n var superInit = WordArray.init;\n\n // Augment WordArray.init to handle typed arrays\n var subInit = WordArray.init = function (typedArray) {\n // Convert buffers to uint8\n if (typedArray instanceof ArrayBuffer) {\n typedArray = new Uint8Array(typedArray);\n }\n\n // Convert other array views to uint8\n if (typedArray instanceof Int8Array || typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray || typedArray instanceof Int16Array || typedArray instanceof Uint16Array || typedArray instanceof Int32Array || typedArray instanceof Uint32Array || typedArray instanceof Float32Array || typedArray instanceof Float64Array) {\n typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n }\n\n // Handle Uint8Array\n if (typedArray instanceof Uint8Array) {\n // Shortcut\n var typedArrayByteLength = typedArray.byteLength;\n\n // Extract bytes\n var words = [];\n for (var i = 0; i < typedArrayByteLength; i++) {\n words[i >>> 2] |= typedArray[i] << 24 - i % 4 * 8;\n }\n\n // Initialize this word array\n superInit.call(this, words, typedArrayByteLength);\n } else {\n // Else call normal init\n superInit.apply(this, arguments);\n }\n };\n subInit.prototype = WordArray;\n })();\n return CryptoJS.lib.WordArray;\n});\n\n/***/ }),\n\n/***/ 72342:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559));\n } else {}\n})(void 0, function (CryptoJS) {\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo;\n\n // Constants table\n var T = [];\n\n // Compute constants\n (function () {\n for (var i = 0; i < 64; i++) {\n T[i] = Math.abs(Math.sin(i + 1)) * 0x100000000 | 0;\n }\n })();\n\n /**\n * MD5 hash algorithm.\n */\n var MD5 = C_algo.MD5 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]);\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Swap endian\n for (var i = 0; i < 16; i++) {\n // Shortcuts\n var offset_i = offset + i;\n var M_offset_i = M[offset_i];\n M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 0x00ff00ff | (M_offset_i << 24 | M_offset_i >>> 8) & 0xff00ff00;\n }\n\n // Shortcuts\n var H = this._hash.words;\n var M_offset_0 = M[offset + 0];\n var M_offset_1 = M[offset + 1];\n var M_offset_2 = M[offset + 2];\n var M_offset_3 = M[offset + 3];\n var M_offset_4 = M[offset + 4];\n var M_offset_5 = M[offset + 5];\n var M_offset_6 = M[offset + 6];\n var M_offset_7 = M[offset + 7];\n var M_offset_8 = M[offset + 8];\n var M_offset_9 = M[offset + 9];\n var M_offset_10 = M[offset + 10];\n var M_offset_11 = M[offset + 11];\n var M_offset_12 = M[offset + 12];\n var M_offset_13 = M[offset + 13];\n var M_offset_14 = M[offset + 14];\n var M_offset_15 = M[offset + 15];\n\n // Working variables\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n\n // Computation\n a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n a = II(a, b, c, d, M_offset_0, 6, T[48]);\n d = II(d, a, b, c, M_offset_7, 10, T[49]);\n c = II(c, d, a, b, M_offset_14, 15, T[50]);\n b = II(b, c, d, a, M_offset_5, 21, T[51]);\n a = II(a, b, c, d, M_offset_12, 6, T[52]);\n d = II(d, a, b, c, M_offset_3, 10, T[53]);\n c = II(c, d, a, b, M_offset_10, 15, T[54]);\n b = II(b, c, d, a, M_offset_1, 21, T[55]);\n a = II(a, b, c, d, M_offset_8, 6, T[56]);\n d = II(d, a, b, c, M_offset_15, 10, T[57]);\n c = II(c, d, a, b, M_offset_6, 15, T[58]);\n b = II(b, c, d, a, M_offset_13, 21, T[59]);\n a = II(a, b, c, d, M_offset_4, 6, T[60]);\n d = II(d, a, b, c, M_offset_11, 10, T[61]);\n c = II(c, d, a, b, M_offset_2, 15, T[62]);\n b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n // Intermediate hash value\n H[0] = H[0] + a | 0;\n H[1] = H[1] + b | 0;\n H[2] = H[2] + c | 0;\n H[3] = H[3] + d | 0;\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n var nBitsTotalL = nBitsTotal;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = (nBitsTotalH << 8 | nBitsTotalH >>> 24) & 0x00ff00ff | (nBitsTotalH << 24 | nBitsTotalH >>> 8) & 0xff00ff00;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotalL << 8 | nBitsTotalL >>> 24) & 0x00ff00ff | (nBitsTotalL << 24 | nBitsTotalL >>> 8) & 0xff00ff00;\n data.sigBytes = (dataWords.length + 1) * 4;\n\n // Hash final blocks\n this._process();\n\n // Shortcuts\n var hash = this._hash;\n var H = hash.words;\n\n // Swap endian\n for (var i = 0; i < 4; i++) {\n // Shortcut\n var H_i = H[i];\n H[i] = (H_i << 8 | H_i >>> 24) & 0x00ff00ff | (H_i << 24 | H_i >>> 8) & 0xff00ff00;\n }\n\n // Return final computed hash\n return hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n }\n });\n function FF(a, b, c, d, x, s, t) {\n var n = a + (b & c | ~b & d) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n function GG(a, b, c, d, x, s, t) {\n var n = a + (b & d | c & ~d) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n function HH(a, b, c, d, x, s, t) {\n var n = a + (b ^ c ^ d) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n function II(a, b, c, d, x, s, t) {\n var n = a + (c ^ (b | ~d)) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.MD5('message');\n * var hash = CryptoJS.MD5(wordArray);\n */\n C.MD5 = Hasher._createHelper(MD5);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacMD5(message, key);\n */\n C.HmacMD5 = Hasher._createHmacHelper(MD5);\n })(Math);\n return CryptoJS.MD5;\n});\n\n/***/ }),\n\n/***/ 2727:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(20731);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n /**\n * Cipher Feedback block mode.\n */\n CryptoJS.mode.CFB = function () {\n var CFB = CryptoJS.lib.BlockCipherMode.extend();\n CFB.Encryptor = CFB.extend({\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n // Remember this block to use with next block\n this._prevBlock = words.slice(offset, offset + blockSize);\n }\n });\n CFB.Decryptor = CFB.extend({\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n\n // Remember this block to use with next block\n var thisBlock = words.slice(offset, offset + blockSize);\n generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n // This block becomes the previous block\n this._prevBlock = thisBlock;\n }\n });\n function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n var keystream;\n\n // Shortcut\n var iv = this._iv;\n\n // Generate keystream\n if (iv) {\n keystream = iv.slice(0);\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n } else {\n keystream = this._prevBlock;\n }\n cipher.encryptBlock(keystream, 0);\n\n // Encrypt\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n return CFB;\n }();\n return CryptoJS.mode.CFB;\n});\n\n/***/ }),\n\n/***/ 18494:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(20731);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n /** @preserve\n * Counter block mode compatible with Dr Brian Gladman fileenc.c\n * derived from CryptoJS.mode.CTR\n * Jan Hruby jhruby.web@gmail.com\n */\n CryptoJS.mode.CTRGladman = function () {\n var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n function incWord(word) {\n if ((word >> 24 & 0xff) === 0xff) {\n //overflow\n var b1 = word >> 16 & 0xff;\n var b2 = word >> 8 & 0xff;\n var b3 = word & 0xff;\n if (b1 === 0xff)\n // overflow b1\n {\n b1 = 0;\n if (b2 === 0xff) {\n b2 = 0;\n if (b3 === 0xff) {\n b3 = 0;\n } else {\n ++b3;\n }\n } else {\n ++b2;\n }\n } else {\n ++b1;\n }\n word = 0;\n word += b1 << 16;\n word += b2 << 8;\n word += b3;\n } else {\n word += 0x01 << 24;\n }\n return word;\n }\n function incCounter(counter) {\n if ((counter[0] = incWord(counter[0])) === 0) {\n // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n counter[1] = incWord(counter[1]);\n }\n return counter;\n }\n var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n var iv = this._iv;\n var counter = this._counter;\n\n // Generate keystream\n if (iv) {\n counter = this._counter = iv.slice(0);\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n }\n incCounter(counter);\n var keystream = counter.slice(0);\n cipher.encryptBlock(keystream, 0);\n\n // Encrypt\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n });\n CTRGladman.Decryptor = Encryptor;\n return CTRGladman;\n }();\n return CryptoJS.mode.CTRGladman;\n});\n\n/***/ }),\n\n/***/ 59493:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(20731);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n /**\n * Counter block mode.\n */\n CryptoJS.mode.CTR = function () {\n var CTR = CryptoJS.lib.BlockCipherMode.extend();\n var Encryptor = CTR.Encryptor = CTR.extend({\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n var iv = this._iv;\n var counter = this._counter;\n\n // Generate keystream\n if (iv) {\n counter = this._counter = iv.slice(0);\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n }\n var keystream = counter.slice(0);\n cipher.encryptBlock(keystream, 0);\n\n // Increment counter\n counter[blockSize - 1] = counter[blockSize - 1] + 1 | 0;\n\n // Encrypt\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n });\n CTR.Decryptor = Encryptor;\n return CTR;\n }();\n return CryptoJS.mode.CTR;\n});\n\n/***/ }),\n\n/***/ 96112:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n /**\n * Electronic Codebook block mode.\n */\n CryptoJS.mode.ECB = function () {\n var ECB = CryptoJS.lib.BlockCipherMode.extend();\n ECB.Encryptor = ECB.extend({\n processBlock: function processBlock(words, offset) {\n this._cipher.encryptBlock(words, offset);\n }\n });\n ECB.Decryptor = ECB.extend({\n processBlock: function processBlock(words, offset) {\n this._cipher.decryptBlock(words, offset);\n }\n });\n return ECB;\n }();\n return CryptoJS.mode.ECB;\n});\n\n/***/ }),\n\n/***/ 5219:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(20731);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n /**\n * Output Feedback block mode.\n */\n CryptoJS.mode.OFB = function () {\n var OFB = CryptoJS.lib.BlockCipherMode.extend();\n var Encryptor = OFB.Encryptor = OFB.extend({\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n var iv = this._iv;\n var keystream = this._keystream;\n\n // Generate keystream\n if (iv) {\n keystream = this._keystream = iv.slice(0);\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n }\n cipher.encryptBlock(keystream, 0);\n\n // Encrypt\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n });\n OFB.Decryptor = Encryptor;\n return OFB;\n }();\n return CryptoJS.mode.OFB;\n});\n\n/***/ }),\n\n/***/ 51583:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n /**\n * ANSI X.923 padding strategy.\n */\n CryptoJS.pad.AnsiX923 = {\n pad: function pad(data, blockSize) {\n // Shortcuts\n var dataSigBytes = data.sigBytes;\n var blockSizeBytes = blockSize * 4;\n\n // Count padding bytes\n var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n // Compute last byte position\n var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n // Pad\n data.clamp();\n data.words[lastBytePos >>> 2] |= nPaddingBytes << 24 - lastBytePos % 4 * 8;\n data.sigBytes += nPaddingBytes;\n },\n unpad: function unpad(data) {\n // Get number of padding bytes from last byte\n var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 0xff;\n\n // Remove padding\n data.sigBytes -= nPaddingBytes;\n }\n };\n return CryptoJS.pad.Ansix923;\n});\n\n/***/ }),\n\n/***/ 99215:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(39081);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n /**\n * ISO 10126 padding strategy.\n */\n CryptoJS.pad.Iso10126 = {\n pad: function pad(data, blockSize) {\n // Shortcut\n var blockSizeBytes = blockSize * 4;\n\n // Count padding bytes\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n // Pad\n data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n },\n unpad: function unpad(data) {\n // Get number of padding bytes from last byte\n var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 0xff;\n\n // Remove padding\n data.sigBytes -= nPaddingBytes;\n }\n };\n return CryptoJS.pad.Iso10126;\n});\n\n/***/ }),\n\n/***/ 43960:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(39081);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n /**\n * ISO/IEC 9797-1 Padding Method 2.\n */\n CryptoJS.pad.Iso97971 = {\n pad: function pad(data, blockSize) {\n // Add 0x80 byte\n data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n // Zero pad the rest\n CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n },\n unpad: function unpad(data) {\n // Remove zero padding\n CryptoJS.pad.ZeroPadding.unpad(data);\n\n // Remove one more byte -- the 0x80 byte\n data.sigBytes--;\n }\n };\n return CryptoJS.pad.Iso97971;\n});\n\n/***/ }),\n\n/***/ 16934:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n /**\n * A noop padding strategy.\n */\n CryptoJS.pad.NoPadding = {\n pad: function pad() {},\n unpad: function unpad() {}\n };\n return CryptoJS.pad.NoPadding;\n});\n\n/***/ }),\n\n/***/ 40681:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n /**\n * Zero padding strategy.\n */\n CryptoJS.pad.ZeroPadding = {\n pad: function pad(data, blockSize) {\n // Shortcut\n var blockSizeBytes = blockSize * 4;\n\n // Pad\n data.clamp();\n data.sigBytes += blockSizeBytes - (data.sigBytes % blockSizeBytes || blockSizeBytes);\n },\n unpad: function unpad(data) {\n // Shortcut\n var dataWords = data.words;\n\n // Unpad\n var i = data.sigBytes - 1;\n for (var i = data.sigBytes - 1; i >= 0; i--) {\n if (dataWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff) {\n data.sigBytes = i + 1;\n break;\n }\n }\n }\n };\n return CryptoJS.pad.ZeroPadding;\n});\n\n/***/ }),\n\n/***/ 95729:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(39081);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(26739), __webpack_require__(30443));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var WordArray = C_lib.WordArray;\n var C_algo = C.algo;\n var SHA256 = C_algo.SHA256;\n var HMAC = C_algo.HMAC;\n\n /**\n * Password-Based Key Derivation Function 2 algorithm.\n */\n var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n /**\n * Configuration options.\n *\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n * @property {Hasher} hasher The hasher to use. Default: SHA256\n * @property {number} iterations The number of iterations to perform. Default: 250000\n */\n cfg: Base.extend({\n keySize: 128 / 32,\n hasher: SHA256,\n iterations: 250000\n }),\n /**\n * Initializes a newly created key derivation function.\n *\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n *\n * @example\n *\n * var kdf = CryptoJS.algo.PBKDF2.create();\n * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n */\n init: function init(cfg) {\n this.cfg = this.cfg.extend(cfg);\n },\n /**\n * Computes the Password-Based Key Derivation Function 2.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n *\n * @return {WordArray} The derived key.\n *\n * @example\n *\n * var key = kdf.compute(password, salt);\n */\n compute: function compute(password, salt) {\n // Shortcut\n var cfg = this.cfg;\n\n // Init HMAC\n var hmac = HMAC.create(cfg.hasher, password);\n\n // Initial values\n var derivedKey = WordArray.create();\n var blockIndex = WordArray.create([0x00000001]);\n\n // Shortcuts\n var derivedKeyWords = derivedKey.words;\n var blockIndexWords = blockIndex.words;\n var keySize = cfg.keySize;\n var iterations = cfg.iterations;\n\n // Generate key\n while (derivedKeyWords.length < keySize) {\n var block = hmac.update(salt).finalize(blockIndex);\n hmac.reset();\n\n // Shortcuts\n var blockWords = block.words;\n var blockWordsLength = blockWords.length;\n\n // Iterations\n var intermediate = block;\n for (var i = 1; i < iterations; i++) {\n intermediate = hmac.finalize(intermediate);\n hmac.reset();\n\n // Shortcut\n var intermediateWords = intermediate.words;\n\n // XOR intermediate with block\n for (var j = 0; j < blockWordsLength; j++) {\n blockWords[j] ^= intermediateWords[j];\n }\n }\n derivedKey.concat(block);\n blockIndexWords[0]++;\n }\n derivedKey.sigBytes = keySize * 4;\n return derivedKey;\n }\n });\n\n /**\n * Computes the Password-Based Key Derivation Function 2.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\n *\n * @return {WordArray} The derived key.\n *\n * @static\n *\n * @example\n *\n * var key = CryptoJS.PBKDF2(password, salt);\n * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n */\n C.PBKDF2 = function (password, salt, cfg) {\n return PBKDF2.create(cfg).compute(password, salt);\n };\n })();\n return CryptoJS.PBKDF2;\n});\n\n/***/ }),\n\n/***/ 9814:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(49300), __webpack_require__(72342), __webpack_require__(36572), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var StreamCipher = C_lib.StreamCipher;\n var C_algo = C.algo;\n\n // Reusable objects\n var S = [];\n var C_ = [];\n var G = [];\n\n /**\n * Rabbit stream cipher algorithm.\n *\n * This is a legacy version that neglected to convert the key to little-endian.\n * This error doesn't affect the cipher's security,\n * but it does affect its compatibility with other implementations.\n */\n var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n _doReset: function _doReset() {\n // Shortcuts\n var K = this._key.words;\n var iv = this.cfg.iv;\n\n // Generate initial state values\n var X = this._X = [K[0], K[3] << 16 | K[2] >>> 16, K[1], K[0] << 16 | K[3] >>> 16, K[2], K[1] << 16 | K[0] >>> 16, K[3], K[2] << 16 | K[1] >>> 16];\n\n // Generate initial counter values\n var C = this._C = [K[2] << 16 | K[2] >>> 16, K[0] & 0xffff0000 | K[1] & 0x0000ffff, K[3] << 16 | K[3] >>> 16, K[1] & 0xffff0000 | K[2] & 0x0000ffff, K[0] << 16 | K[0] >>> 16, K[2] & 0xffff0000 | K[3] & 0x0000ffff, K[1] << 16 | K[1] >>> 16, K[3] & 0xffff0000 | K[0] & 0x0000ffff];\n\n // Carry bit\n this._b = 0;\n\n // Iterate the system four times\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n }\n\n // Modify the counters\n for (var i = 0; i < 8; i++) {\n C[i] ^= X[i + 4 & 7];\n }\n\n // IV setup\n if (iv) {\n // Shortcuts\n var IV = iv.words;\n var IV_0 = IV[0];\n var IV_1 = IV[1];\n\n // Generate four subvectors\n var i0 = (IV_0 << 8 | IV_0 >>> 24) & 0x00ff00ff | (IV_0 << 24 | IV_0 >>> 8) & 0xff00ff00;\n var i2 = (IV_1 << 8 | IV_1 >>> 24) & 0x00ff00ff | (IV_1 << 24 | IV_1 >>> 8) & 0xff00ff00;\n var i1 = i0 >>> 16 | i2 & 0xffff0000;\n var i3 = i2 << 16 | i0 & 0x0000ffff;\n\n // Modify counter values\n C[0] ^= i0;\n C[1] ^= i1;\n C[2] ^= i2;\n C[3] ^= i3;\n C[4] ^= i0;\n C[5] ^= i1;\n C[6] ^= i2;\n C[7] ^= i3;\n\n // Iterate the system four times\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n }\n }\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcut\n var X = this._X;\n\n // Iterate the system\n nextState.call(this);\n\n // Generate four keystream words\n S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;\n S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;\n S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;\n S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;\n for (var i = 0; i < 4; i++) {\n // Swap endian\n S[i] = (S[i] << 8 | S[i] >>> 24) & 0x00ff00ff | (S[i] << 24 | S[i] >>> 8) & 0xff00ff00;\n\n // Encrypt\n M[offset + i] ^= S[i];\n }\n },\n blockSize: 128 / 32,\n ivSize: 64 / 32\n });\n function nextState() {\n // Shortcuts\n var X = this._X;\n var C = this._C;\n\n // Save old counter values\n for (var i = 0; i < 8; i++) {\n C_[i] = C[i];\n }\n\n // Calculate new counter values\n C[0] = C[0] + 0x4d34d34d + this._b | 0;\n C[1] = C[1] + 0xd34d34d3 + (C[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;\n C[2] = C[2] + 0x34d34d34 + (C[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;\n C[3] = C[3] + 0x4d34d34d + (C[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;\n C[4] = C[4] + 0xd34d34d3 + (C[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;\n C[5] = C[5] + 0x34d34d34 + (C[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;\n C[6] = C[6] + 0x4d34d34d + (C[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;\n C[7] = C[7] + 0xd34d34d3 + (C[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;\n this._b = C[7] >>> 0 < C_[7] >>> 0 ? 1 : 0;\n\n // Calculate the g-values\n for (var i = 0; i < 8; i++) {\n var gx = X[i] + C[i];\n\n // Construct high and low argument for squaring\n var ga = gx & 0xffff;\n var gb = gx >>> 16;\n\n // Calculate high and low result of squaring\n var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;\n var gl = ((gx & 0xffff0000) * gx | 0) + ((gx & 0x0000ffff) * gx | 0);\n\n // High XOR low\n G[i] = gh ^ gl;\n }\n\n // Calculate new state values\n X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;\n X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;\n X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;\n X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;\n X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;\n X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;\n X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;\n X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;\n }\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n */\n C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n })();\n return CryptoJS.RabbitLegacy;\n});\n\n/***/ }),\n\n/***/ 55380:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(49300), __webpack_require__(72342), __webpack_require__(36572), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var StreamCipher = C_lib.StreamCipher;\n var C_algo = C.algo;\n\n // Reusable objects\n var S = [];\n var C_ = [];\n var G = [];\n\n /**\n * Rabbit stream cipher algorithm\n */\n var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n _doReset: function _doReset() {\n // Shortcuts\n var K = this._key.words;\n var iv = this.cfg.iv;\n\n // Swap endian\n for (var i = 0; i < 4; i++) {\n K[i] = (K[i] << 8 | K[i] >>> 24) & 0x00ff00ff | (K[i] << 24 | K[i] >>> 8) & 0xff00ff00;\n }\n\n // Generate initial state values\n var X = this._X = [K[0], K[3] << 16 | K[2] >>> 16, K[1], K[0] << 16 | K[3] >>> 16, K[2], K[1] << 16 | K[0] >>> 16, K[3], K[2] << 16 | K[1] >>> 16];\n\n // Generate initial counter values\n var C = this._C = [K[2] << 16 | K[2] >>> 16, K[0] & 0xffff0000 | K[1] & 0x0000ffff, K[3] << 16 | K[3] >>> 16, K[1] & 0xffff0000 | K[2] & 0x0000ffff, K[0] << 16 | K[0] >>> 16, K[2] & 0xffff0000 | K[3] & 0x0000ffff, K[1] << 16 | K[1] >>> 16, K[3] & 0xffff0000 | K[0] & 0x0000ffff];\n\n // Carry bit\n this._b = 0;\n\n // Iterate the system four times\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n }\n\n // Modify the counters\n for (var i = 0; i < 8; i++) {\n C[i] ^= X[i + 4 & 7];\n }\n\n // IV setup\n if (iv) {\n // Shortcuts\n var IV = iv.words;\n var IV_0 = IV[0];\n var IV_1 = IV[1];\n\n // Generate four subvectors\n var i0 = (IV_0 << 8 | IV_0 >>> 24) & 0x00ff00ff | (IV_0 << 24 | IV_0 >>> 8) & 0xff00ff00;\n var i2 = (IV_1 << 8 | IV_1 >>> 24) & 0x00ff00ff | (IV_1 << 24 | IV_1 >>> 8) & 0xff00ff00;\n var i1 = i0 >>> 16 | i2 & 0xffff0000;\n var i3 = i2 << 16 | i0 & 0x0000ffff;\n\n // Modify counter values\n C[0] ^= i0;\n C[1] ^= i1;\n C[2] ^= i2;\n C[3] ^= i3;\n C[4] ^= i0;\n C[5] ^= i1;\n C[6] ^= i2;\n C[7] ^= i3;\n\n // Iterate the system four times\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n }\n }\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcut\n var X = this._X;\n\n // Iterate the system\n nextState.call(this);\n\n // Generate four keystream words\n S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;\n S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;\n S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;\n S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;\n for (var i = 0; i < 4; i++) {\n // Swap endian\n S[i] = (S[i] << 8 | S[i] >>> 24) & 0x00ff00ff | (S[i] << 24 | S[i] >>> 8) & 0xff00ff00;\n\n // Encrypt\n M[offset + i] ^= S[i];\n }\n },\n blockSize: 128 / 32,\n ivSize: 64 / 32\n });\n function nextState() {\n // Shortcuts\n var X = this._X;\n var C = this._C;\n\n // Save old counter values\n for (var i = 0; i < 8; i++) {\n C_[i] = C[i];\n }\n\n // Calculate new counter values\n C[0] = C[0] + 0x4d34d34d + this._b | 0;\n C[1] = C[1] + 0xd34d34d3 + (C[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;\n C[2] = C[2] + 0x34d34d34 + (C[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;\n C[3] = C[3] + 0x4d34d34d + (C[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;\n C[4] = C[4] + 0xd34d34d3 + (C[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;\n C[5] = C[5] + 0x34d34d34 + (C[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;\n C[6] = C[6] + 0x4d34d34d + (C[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;\n C[7] = C[7] + 0xd34d34d3 + (C[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;\n this._b = C[7] >>> 0 < C_[7] >>> 0 ? 1 : 0;\n\n // Calculate the g-values\n for (var i = 0; i < 8; i++) {\n var gx = X[i] + C[i];\n\n // Construct high and low argument for squaring\n var ga = gx & 0xffff;\n var gb = gx >>> 16;\n\n // Calculate high and low result of squaring\n var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;\n var gl = ((gx & 0xffff0000) * gx | 0) + ((gx & 0x0000ffff) * gx | 0);\n\n // High XOR low\n G[i] = gh ^ gl;\n }\n\n // Calculate new state values\n X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;\n X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;\n X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;\n X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;\n X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;\n X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;\n X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;\n X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;\n }\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n */\n C.Rabbit = StreamCipher._createHelper(Rabbit);\n })();\n return CryptoJS.Rabbit;\n});\n\n/***/ }),\n\n/***/ 76635:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(14032);\n__webpack_require__(68067);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(49300), __webpack_require__(72342), __webpack_require__(36572), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var StreamCipher = C_lib.StreamCipher;\n var C_algo = C.algo;\n\n /**\n * RC4 stream cipher algorithm.\n */\n var RC4 = C_algo.RC4 = StreamCipher.extend({\n _doReset: function _doReset() {\n // Shortcuts\n var key = this._key;\n var keyWords = key.words;\n var keySigBytes = key.sigBytes;\n\n // Init sbox\n var S = this._S = [];\n for (var i = 0; i < 256; i++) {\n S[i] = i;\n }\n\n // Key setup\n for (var i = 0, j = 0; i < 256; i++) {\n var keyByteIndex = i % keySigBytes;\n var keyByte = keyWords[keyByteIndex >>> 2] >>> 24 - keyByteIndex % 4 * 8 & 0xff;\n j = (j + S[i] + keyByte) % 256;\n\n // Swap\n var t = S[i];\n S[i] = S[j];\n S[j] = t;\n }\n\n // Counters\n this._i = this._j = 0;\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n M[offset] ^= generateKeystreamWord.call(this);\n },\n keySize: 256 / 32,\n ivSize: 0\n });\n function generateKeystreamWord() {\n // Shortcuts\n var S = this._S;\n var i = this._i;\n var j = this._j;\n\n // Generate keystream word\n var keystreamWord = 0;\n for (var n = 0; n < 4; n++) {\n i = (i + 1) % 256;\n j = (j + S[i]) % 256;\n\n // Swap\n var t = S[i];\n S[i] = S[j];\n S[j] = t;\n keystreamWord |= S[(S[i] + S[j]) % 256] << 24 - n * 8;\n }\n\n // Update counters\n this._i = i;\n this._j = j;\n return keystreamWord;\n }\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n */\n C.RC4 = StreamCipher._createHelper(RC4);\n\n /**\n * Modified RC4 stream cipher algorithm.\n */\n var RC4Drop = C_algo.RC4Drop = RC4.extend({\n /**\n * Configuration options.\n *\n * @property {number} drop The number of keystream words to drop. Default 192\n */\n cfg: RC4.cfg.extend({\n drop: 192\n }),\n _doReset: function _doReset() {\n RC4._doReset.call(this);\n\n // Drop\n for (var i = this.cfg.drop; i > 0; i--) {\n generateKeystreamWord.call(this);\n }\n }\n });\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n */\n C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n })();\n return CryptoJS.RC4;\n});\n\n/***/ }),\n\n/***/ 76930:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559));\n } else {}\n})(void 0, function (CryptoJS) {\n /** @preserve\n (c) 2012 by Cédric Mesnil. All rights reserved.\n \tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n \t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n \tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo;\n\n // Constants table\n var _zl = WordArray.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n var _zr = WordArray.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n var _sl = WordArray.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]);\n var _sr = WordArray.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]);\n var _hl = WordArray.create([0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n var _hr = WordArray.create([0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n /**\n * RIPEMD160 hash algorithm.\n */\n var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Swap endian\n for (var i = 0; i < 16; i++) {\n // Shortcuts\n var offset_i = offset + i;\n var M_offset_i = M[offset_i];\n\n // Swap\n M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 0x00ff00ff | (M_offset_i << 24 | M_offset_i >>> 8) & 0xff00ff00;\n }\n // Shortcut\n var H = this._hash.words;\n var hl = _hl.words;\n var hr = _hr.words;\n var zl = _zl.words;\n var zr = _zr.words;\n var sl = _sl.words;\n var sr = _sr.words;\n\n // Working variables\n var al, bl, cl, dl, el;\n var ar, br, cr, dr, er;\n ar = al = H[0];\n br = bl = H[1];\n cr = cl = H[2];\n dr = dl = H[3];\n er = el = H[4];\n // Computation\n var t;\n for (var i = 0; i < 80; i += 1) {\n t = al + M[offset + zl[i]] | 0;\n if (i < 16) {\n t += f1(bl, cl, dl) + hl[0];\n } else if (i < 32) {\n t += f2(bl, cl, dl) + hl[1];\n } else if (i < 48) {\n t += f3(bl, cl, dl) + hl[2];\n } else if (i < 64) {\n t += f4(bl, cl, dl) + hl[3];\n } else {\n // if (i<80) {\n t += f5(bl, cl, dl) + hl[4];\n }\n t = t | 0;\n t = rotl(t, sl[i]);\n t = t + el | 0;\n al = el;\n el = dl;\n dl = rotl(cl, 10);\n cl = bl;\n bl = t;\n t = ar + M[offset + zr[i]] | 0;\n if (i < 16) {\n t += f5(br, cr, dr) + hr[0];\n } else if (i < 32) {\n t += f4(br, cr, dr) + hr[1];\n } else if (i < 48) {\n t += f3(br, cr, dr) + hr[2];\n } else if (i < 64) {\n t += f2(br, cr, dr) + hr[3];\n } else {\n // if (i<80) {\n t += f1(br, cr, dr) + hr[4];\n }\n t = t | 0;\n t = rotl(t, sr[i]);\n t = t + er | 0;\n ar = er;\n er = dr;\n dr = rotl(cr, 10);\n cr = br;\n br = t;\n }\n // Intermediate hash value\n t = H[1] + cl + dr | 0;\n H[1] = H[2] + dl + er | 0;\n H[2] = H[3] + el + ar | 0;\n H[3] = H[4] + al + br | 0;\n H[4] = H[0] + bl + cr | 0;\n H[0] = t;\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotal << 8 | nBitsTotal >>> 24) & 0x00ff00ff | (nBitsTotal << 24 | nBitsTotal >>> 8) & 0xff00ff00;\n data.sigBytes = (dataWords.length + 1) * 4;\n\n // Hash final blocks\n this._process();\n\n // Shortcuts\n var hash = this._hash;\n var H = hash.words;\n\n // Swap endian\n for (var i = 0; i < 5; i++) {\n // Shortcut\n var H_i = H[i];\n\n // Swap\n H[i] = (H_i << 8 | H_i >>> 24) & 0x00ff00ff | (H_i << 24 | H_i >>> 8) & 0xff00ff00;\n }\n\n // Return final computed hash\n return hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n }\n });\n function f1(x, y, z) {\n return x ^ y ^ z;\n }\n function f2(x, y, z) {\n return x & y | ~x & z;\n }\n function f3(x, y, z) {\n return (x | ~y) ^ z;\n }\n function f4(x, y, z) {\n return x & z | y & ~z;\n }\n function f5(x, y, z) {\n return x ^ (y | ~z);\n }\n function rotl(x, n) {\n return x << n | x >>> 32 - n;\n }\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.RIPEMD160('message');\n * var hash = CryptoJS.RIPEMD160(wordArray);\n */\n C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n */\n C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n })(Math);\n return CryptoJS.RIPEMD160;\n});\n\n/***/ }),\n\n/***/ 76289:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo;\n\n // Reusable object\n var W = [];\n\n /**\n * SHA-1 hash algorithm.\n */\n var SHA1 = C_algo.SHA1 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]);\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcut\n var H = this._hash.words;\n\n // Working variables\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n // Computation\n for (var i = 0; i < 80; i++) {\n if (i < 16) {\n W[i] = M[offset + i] | 0;\n } else {\n var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n W[i] = n << 1 | n >>> 31;\n }\n var t = (a << 5 | a >>> 27) + e + W[i];\n if (i < 20) {\n t += (b & c | ~b & d) + 0x5a827999;\n } else if (i < 40) {\n t += (b ^ c ^ d) + 0x6ed9eba1;\n } else if (i < 60) {\n t += (b & c | b & d | c & d) - 0x70e44324;\n } else /* if (i < 80) */{\n t += (b ^ c ^ d) - 0x359d3e2a;\n }\n e = d;\n d = c;\n c = b << 30 | b >>> 2;\n b = a;\n a = t;\n }\n\n // Intermediate hash value\n H[0] = H[0] + a | 0;\n H[1] = H[1] + b | 0;\n H[2] = H[2] + c | 0;\n H[3] = H[3] + d | 0;\n H[4] = H[4] + e | 0;\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;\n data.sigBytes = dataWords.length * 4;\n\n // Hash final blocks\n this._process();\n\n // Return final computed hash\n return this._hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n }\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA1('message');\n * var hash = CryptoJS.SHA1(wordArray);\n */\n C.SHA1 = Hasher._createHelper(SHA1);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA1(message, key);\n */\n C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n })();\n return CryptoJS.SHA1;\n});\n\n/***/ }),\n\n/***/ 75230:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(26739));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_algo = C.algo;\n var SHA256 = C_algo.SHA256;\n\n /**\n * SHA-224 hash algorithm.\n */\n var SHA224 = C_algo.SHA224 = SHA256.extend({\n _doReset: function _doReset() {\n this._hash = new WordArray.init([0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4]);\n },\n _doFinalize: function _doFinalize() {\n var hash = SHA256._doFinalize.call(this);\n hash.sigBytes -= 4;\n return hash;\n }\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA224('message');\n * var hash = CryptoJS.SHA224(wordArray);\n */\n C.SHA224 = SHA256._createHelper(SHA224);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA224(message, key);\n */\n C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n })();\n return CryptoJS.SHA224;\n});\n\n/***/ }),\n\n/***/ 26739:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(20731);\n;\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559));\n } else {}\n})(void 0, function (CryptoJS) {\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo;\n\n // Initialization and round constants tables\n var H = [];\n var K = [];\n\n // Compute constants\n (function () {\n function isPrime(n) {\n var sqrtN = Math.sqrt(n);\n for (var factor = 2; factor <= sqrtN; factor++) {\n if (!(n % factor)) {\n return false;\n }\n }\n return true;\n }\n function getFractionalBits(n) {\n return (n - (n | 0)) * 0x100000000 | 0;\n }\n var n = 2;\n var nPrime = 0;\n while (nPrime < 64) {\n if (isPrime(n)) {\n if (nPrime < 8) {\n H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n }\n K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n nPrime++;\n }\n n++;\n }\n })();\n\n // Reusable object\n var W = [];\n\n /**\n * SHA-256 hash algorithm.\n */\n var SHA256 = C_algo.SHA256 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = new WordArray.init(H.slice(0));\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcut\n var H = this._hash.words;\n\n // Working variables\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n var f = H[5];\n var g = H[6];\n var h = H[7];\n\n // Computation\n for (var i = 0; i < 64; i++) {\n if (i < 16) {\n W[i] = M[offset + i] | 0;\n } else {\n var gamma0x = W[i - 15];\n var gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3;\n var gamma1x = W[i - 2];\n var gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10;\n W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n }\n var ch = e & f ^ ~e & g;\n var maj = a & b ^ a & c ^ b & c;\n var sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22);\n var sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25);\n var t1 = h + sigma1 + ch + K[i] + W[i];\n var t2 = sigma0 + maj;\n h = g;\n g = f;\n f = e;\n e = d + t1 | 0;\n d = c;\n c = b;\n b = a;\n a = t1 + t2 | 0;\n }\n\n // Intermediate hash value\n H[0] = H[0] + a | 0;\n H[1] = H[1] + b | 0;\n H[2] = H[2] + c | 0;\n H[3] = H[3] + d | 0;\n H[4] = H[4] + e | 0;\n H[5] = H[5] + f | 0;\n H[6] = H[6] + g | 0;\n H[7] = H[7] + h | 0;\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;\n data.sigBytes = dataWords.length * 4;\n\n // Hash final blocks\n this._process();\n\n // Return final computed hash\n return this._hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n }\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA256('message');\n * var hash = CryptoJS.SHA256(wordArray);\n */\n C.SHA256 = Hasher._createHelper(SHA256);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA256(message, key);\n */\n C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n })(Math);\n return CryptoJS.SHA256;\n});\n\n/***/ }),\n\n/***/ 80767:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(20731);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(26478));\n } else {}\n})(void 0, function (CryptoJS) {\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_x64 = C.x64;\n var X64Word = C_x64.Word;\n var C_algo = C.algo;\n\n // Constants tables\n var RHO_OFFSETS = [];\n var PI_INDEXES = [];\n var ROUND_CONSTANTS = [];\n\n // Compute Constants\n (function () {\n // Compute rho offset constants\n var x = 1,\n y = 0;\n for (var t = 0; t < 24; t++) {\n RHO_OFFSETS[x + 5 * y] = (t + 1) * (t + 2) / 2 % 64;\n var newX = y % 5;\n var newY = (2 * x + 3 * y) % 5;\n x = newX;\n y = newY;\n }\n\n // Compute pi index constants\n for (var x = 0; x < 5; x++) {\n for (var y = 0; y < 5; y++) {\n PI_INDEXES[x + 5 * y] = y + (2 * x + 3 * y) % 5 * 5;\n }\n }\n\n // Compute round constants\n var LFSR = 0x01;\n for (var i = 0; i < 24; i++) {\n var roundConstantMsw = 0;\n var roundConstantLsw = 0;\n for (var j = 0; j < 7; j++) {\n if (LFSR & 0x01) {\n var bitPosition = (1 << j) - 1;\n if (bitPosition < 32) {\n roundConstantLsw ^= 1 << bitPosition;\n } else /* if (bitPosition >= 32) */{\n roundConstantMsw ^= 1 << bitPosition - 32;\n }\n }\n\n // Compute next LFSR\n if (LFSR & 0x80) {\n // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n LFSR = LFSR << 1 ^ 0x71;\n } else {\n LFSR <<= 1;\n }\n }\n ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n }\n })();\n\n // Reusable objects for temporary values\n var T = [];\n (function () {\n for (var i = 0; i < 25; i++) {\n T[i] = X64Word.create();\n }\n })();\n\n /**\n * SHA-3 hash algorithm.\n */\n var SHA3 = C_algo.SHA3 = Hasher.extend({\n /**\n * Configuration options.\n *\n * @property {number} outputLength\n * The desired number of bits in the output hash.\n * Only values permitted are: 224, 256, 384, 512.\n * Default: 512\n */\n cfg: Hasher.cfg.extend({\n outputLength: 512\n }),\n _doReset: function _doReset() {\n var state = this._state = [];\n for (var i = 0; i < 25; i++) {\n state[i] = new X64Word.init();\n }\n this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcuts\n var state = this._state;\n var nBlockSizeLanes = this.blockSize / 2;\n\n // Absorb\n for (var i = 0; i < nBlockSizeLanes; i++) {\n // Shortcuts\n var M2i = M[offset + 2 * i];\n var M2i1 = M[offset + 2 * i + 1];\n\n // Swap endian\n M2i = (M2i << 8 | M2i >>> 24) & 0x00ff00ff | (M2i << 24 | M2i >>> 8) & 0xff00ff00;\n M2i1 = (M2i1 << 8 | M2i1 >>> 24) & 0x00ff00ff | (M2i1 << 24 | M2i1 >>> 8) & 0xff00ff00;\n\n // Absorb message into state\n var lane = state[i];\n lane.high ^= M2i1;\n lane.low ^= M2i;\n }\n\n // Rounds\n for (var round = 0; round < 24; round++) {\n // Theta\n for (var x = 0; x < 5; x++) {\n // Mix column lanes\n var tMsw = 0,\n tLsw = 0;\n for (var y = 0; y < 5; y++) {\n var lane = state[x + 5 * y];\n tMsw ^= lane.high;\n tLsw ^= lane.low;\n }\n\n // Temporary values\n var Tx = T[x];\n Tx.high = tMsw;\n Tx.low = tLsw;\n }\n for (var x = 0; x < 5; x++) {\n // Shortcuts\n var Tx4 = T[(x + 4) % 5];\n var Tx1 = T[(x + 1) % 5];\n var Tx1Msw = Tx1.high;\n var Tx1Lsw = Tx1.low;\n\n // Mix surrounding columns\n var tMsw = Tx4.high ^ (Tx1Msw << 1 | Tx1Lsw >>> 31);\n var tLsw = Tx4.low ^ (Tx1Lsw << 1 | Tx1Msw >>> 31);\n for (var y = 0; y < 5; y++) {\n var lane = state[x + 5 * y];\n lane.high ^= tMsw;\n lane.low ^= tLsw;\n }\n }\n\n // Rho Pi\n for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n var tMsw;\n var tLsw;\n\n // Shortcuts\n var lane = state[laneIndex];\n var laneMsw = lane.high;\n var laneLsw = lane.low;\n var rhoOffset = RHO_OFFSETS[laneIndex];\n\n // Rotate lanes\n if (rhoOffset < 32) {\n tMsw = laneMsw << rhoOffset | laneLsw >>> 32 - rhoOffset;\n tLsw = laneLsw << rhoOffset | laneMsw >>> 32 - rhoOffset;\n } else /* if (rhoOffset >= 32) */{\n tMsw = laneLsw << rhoOffset - 32 | laneMsw >>> 64 - rhoOffset;\n tLsw = laneMsw << rhoOffset - 32 | laneLsw >>> 64 - rhoOffset;\n }\n\n // Transpose lanes\n var TPiLane = T[PI_INDEXES[laneIndex]];\n TPiLane.high = tMsw;\n TPiLane.low = tLsw;\n }\n\n // Rho pi at x = y = 0\n var T0 = T[0];\n var state0 = state[0];\n T0.high = state0.high;\n T0.low = state0.low;\n\n // Chi\n for (var x = 0; x < 5; x++) {\n for (var y = 0; y < 5; y++) {\n // Shortcuts\n var laneIndex = x + 5 * y;\n var lane = state[laneIndex];\n var TLane = T[laneIndex];\n var Tx1Lane = T[(x + 1) % 5 + 5 * y];\n var Tx2Lane = T[(x + 2) % 5 + 5 * y];\n\n // Mix rows\n lane.high = TLane.high ^ ~Tx1Lane.high & Tx2Lane.high;\n lane.low = TLane.low ^ ~Tx1Lane.low & Tx2Lane.low;\n }\n }\n\n // Iota\n var lane = state[0];\n var roundConstant = ROUND_CONSTANTS[round];\n lane.high ^= roundConstant.high;\n lane.low ^= roundConstant.low;\n }\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n var blockSizeBits = this.blockSize * 32;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x1 << 24 - nBitsLeft % 32;\n dataWords[(Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits >>> 5) - 1] |= 0x80;\n data.sigBytes = dataWords.length * 4;\n\n // Hash final blocks\n this._process();\n\n // Shortcuts\n var state = this._state;\n var outputLengthBytes = this.cfg.outputLength / 8;\n var outputLengthLanes = outputLengthBytes / 8;\n\n // Squeeze\n var hashWords = [];\n for (var i = 0; i < outputLengthLanes; i++) {\n // Shortcuts\n var lane = state[i];\n var laneMsw = lane.high;\n var laneLsw = lane.low;\n\n // Swap endian\n laneMsw = (laneMsw << 8 | laneMsw >>> 24) & 0x00ff00ff | (laneMsw << 24 | laneMsw >>> 8) & 0xff00ff00;\n laneLsw = (laneLsw << 8 | laneLsw >>> 24) & 0x00ff00ff | (laneLsw << 24 | laneLsw >>> 8) & 0xff00ff00;\n\n // Squeeze state to retrieve hash\n hashWords.push(laneLsw);\n hashWords.push(laneMsw);\n }\n\n // Return final computed hash\n return new WordArray.init(hashWords, outputLengthBytes);\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n var state = clone._state = this._state.slice(0);\n for (var i = 0; i < 25; i++) {\n state[i] = state[i].clone();\n }\n return clone;\n }\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA3('message');\n * var hash = CryptoJS.SHA3(wordArray);\n */\n C.SHA3 = Hasher._createHelper(SHA3);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA3(message, key);\n */\n C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n })(Math);\n return CryptoJS.SHA3;\n});\n\n/***/ }),\n\n/***/ 371:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(26478), __webpack_require__(97074));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_x64 = C.x64;\n var X64Word = C_x64.Word;\n var X64WordArray = C_x64.WordArray;\n var C_algo = C.algo;\n var SHA512 = C_algo.SHA512;\n\n /**\n * SHA-384 hash algorithm.\n */\n var SHA384 = C_algo.SHA384 = SHA512.extend({\n _doReset: function _doReset() {\n this._hash = new X64WordArray.init([new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507), new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939), new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511), new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)]);\n },\n _doFinalize: function _doFinalize() {\n var hash = SHA512._doFinalize.call(this);\n hash.sigBytes -= 16;\n return hash;\n }\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA384('message');\n * var hash = CryptoJS.SHA384(wordArray);\n */\n C.SHA384 = SHA512._createHelper(SHA384);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA384(message, key);\n */\n C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n })();\n return CryptoJS.SHA384;\n});\n\n/***/ }),\n\n/***/ 97074:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(26478));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Hasher = C_lib.Hasher;\n var C_x64 = C.x64;\n var X64Word = C_x64.Word;\n var X64WordArray = C_x64.WordArray;\n var C_algo = C.algo;\n function X64Word_create() {\n return X64Word.create.apply(X64Word, arguments);\n }\n\n // Constants\n var K = [X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd), X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc), X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019), X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118), X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe), X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2), X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1), X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694), X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3), X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65), X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483), X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5), X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210), X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4), X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725), X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70), X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926), X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df), X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8), X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b), X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001), X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30), X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910), X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8), X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53), X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8), X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb), X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3), X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60), X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec), X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9), X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b), X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207), X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178), X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6), X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b), X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493), X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c), X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a), X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)];\n\n // Reusable objects\n var W = [];\n (function () {\n for (var i = 0; i < 80; i++) {\n W[i] = X64Word_create();\n }\n })();\n\n /**\n * SHA-512 hash algorithm.\n */\n var SHA512 = C_algo.SHA512 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = new X64WordArray.init([new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b), new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1), new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f), new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)]);\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcuts\n var H = this._hash.words;\n var H0 = H[0];\n var H1 = H[1];\n var H2 = H[2];\n var H3 = H[3];\n var H4 = H[4];\n var H5 = H[5];\n var H6 = H[6];\n var H7 = H[7];\n var H0h = H0.high;\n var H0l = H0.low;\n var H1h = H1.high;\n var H1l = H1.low;\n var H2h = H2.high;\n var H2l = H2.low;\n var H3h = H3.high;\n var H3l = H3.low;\n var H4h = H4.high;\n var H4l = H4.low;\n var H5h = H5.high;\n var H5l = H5.low;\n var H6h = H6.high;\n var H6l = H6.low;\n var H7h = H7.high;\n var H7l = H7.low;\n\n // Working variables\n var ah = H0h;\n var al = H0l;\n var bh = H1h;\n var bl = H1l;\n var ch = H2h;\n var cl = H2l;\n var dh = H3h;\n var dl = H3l;\n var eh = H4h;\n var el = H4l;\n var fh = H5h;\n var fl = H5l;\n var gh = H6h;\n var gl = H6l;\n var hh = H7h;\n var hl = H7l;\n\n // Rounds\n for (var i = 0; i < 80; i++) {\n var Wil;\n var Wih;\n\n // Shortcut\n var Wi = W[i];\n\n // Extend message\n if (i < 16) {\n Wih = Wi.high = M[offset + i * 2] | 0;\n Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n } else {\n // Gamma0\n var gamma0x = W[i - 15];\n var gamma0xh = gamma0x.high;\n var gamma0xl = gamma0x.low;\n var gamma0h = (gamma0xh >>> 1 | gamma0xl << 31) ^ (gamma0xh >>> 8 | gamma0xl << 24) ^ gamma0xh >>> 7;\n var gamma0l = (gamma0xl >>> 1 | gamma0xh << 31) ^ (gamma0xl >>> 8 | gamma0xh << 24) ^ (gamma0xl >>> 7 | gamma0xh << 25);\n\n // Gamma1\n var gamma1x = W[i - 2];\n var gamma1xh = gamma1x.high;\n var gamma1xl = gamma1x.low;\n var gamma1h = (gamma1xh >>> 19 | gamma1xl << 13) ^ (gamma1xh << 3 | gamma1xl >>> 29) ^ gamma1xh >>> 6;\n var gamma1l = (gamma1xl >>> 19 | gamma1xh << 13) ^ (gamma1xl << 3 | gamma1xh >>> 29) ^ (gamma1xl >>> 6 | gamma1xh << 26);\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7 = W[i - 7];\n var Wi7h = Wi7.high;\n var Wi7l = Wi7.low;\n var Wi16 = W[i - 16];\n var Wi16h = Wi16.high;\n var Wi16l = Wi16.low;\n Wil = gamma0l + Wi7l;\n Wih = gamma0h + Wi7h + (Wil >>> 0 < gamma0l >>> 0 ? 1 : 0);\n Wil = Wil + gamma1l;\n Wih = Wih + gamma1h + (Wil >>> 0 < gamma1l >>> 0 ? 1 : 0);\n Wil = Wil + Wi16l;\n Wih = Wih + Wi16h + (Wil >>> 0 < Wi16l >>> 0 ? 1 : 0);\n Wi.high = Wih;\n Wi.low = Wil;\n }\n var chh = eh & fh ^ ~eh & gh;\n var chl = el & fl ^ ~el & gl;\n var majh = ah & bh ^ ah & ch ^ bh & ch;\n var majl = al & bl ^ al & cl ^ bl & cl;\n var sigma0h = (ah >>> 28 | al << 4) ^ (ah << 30 | al >>> 2) ^ (ah << 25 | al >>> 7);\n var sigma0l = (al >>> 28 | ah << 4) ^ (al << 30 | ah >>> 2) ^ (al << 25 | ah >>> 7);\n var sigma1h = (eh >>> 14 | el << 18) ^ (eh >>> 18 | el << 14) ^ (eh << 23 | el >>> 9);\n var sigma1l = (el >>> 14 | eh << 18) ^ (el >>> 18 | eh << 14) ^ (el << 23 | eh >>> 9);\n\n // t1 = h + sigma1 + ch + K[i] + W[i]\n var Ki = K[i];\n var Kih = Ki.high;\n var Kil = Ki.low;\n var t1l = hl + sigma1l;\n var t1h = hh + sigma1h + (t1l >>> 0 < hl >>> 0 ? 1 : 0);\n var t1l = t1l + chl;\n var t1h = t1h + chh + (t1l >>> 0 < chl >>> 0 ? 1 : 0);\n var t1l = t1l + Kil;\n var t1h = t1h + Kih + (t1l >>> 0 < Kil >>> 0 ? 1 : 0);\n var t1l = t1l + Wil;\n var t1h = t1h + Wih + (t1l >>> 0 < Wil >>> 0 ? 1 : 0);\n\n // t2 = sigma0 + maj\n var t2l = sigma0l + majl;\n var t2h = sigma0h + majh + (t2l >>> 0 < sigma0l >>> 0 ? 1 : 0);\n\n // Update working variables\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n el = dl + t1l | 0;\n eh = dh + t1h + (el >>> 0 < dl >>> 0 ? 1 : 0) | 0;\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n al = t1l + t2l | 0;\n ah = t1h + t2h + (al >>> 0 < t1l >>> 0 ? 1 : 0) | 0;\n }\n\n // Intermediate hash value\n H0l = H0.low = H0l + al;\n H0.high = H0h + ah + (H0l >>> 0 < al >>> 0 ? 1 : 0);\n H1l = H1.low = H1l + bl;\n H1.high = H1h + bh + (H1l >>> 0 < bl >>> 0 ? 1 : 0);\n H2l = H2.low = H2l + cl;\n H2.high = H2h + ch + (H2l >>> 0 < cl >>> 0 ? 1 : 0);\n H3l = H3.low = H3l + dl;\n H3.high = H3h + dh + (H3l >>> 0 < dl >>> 0 ? 1 : 0);\n H4l = H4.low = H4l + el;\n H4.high = H4h + eh + (H4l >>> 0 < el >>> 0 ? 1 : 0);\n H5l = H5.low = H5l + fl;\n H5.high = H5h + fh + (H5l >>> 0 < fl >>> 0 ? 1 : 0);\n H6l = H6.low = H6l + gl;\n H6.high = H6h + gh + (H6l >>> 0 < gl >>> 0 ? 1 : 0);\n H7l = H7.low = H7l + hl;\n H7.high = H7h + hh + (H7l >>> 0 < hl >>> 0 ? 1 : 0);\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n dataWords[(nBitsLeft + 128 >>> 10 << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(nBitsLeft + 128 >>> 10 << 5) + 31] = nBitsTotal;\n data.sigBytes = dataWords.length * 4;\n\n // Hash final blocks\n this._process();\n\n // Convert hash to 32-bit word array before returning\n var hash = this._hash.toX32();\n\n // Return final computed hash\n return hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n },\n blockSize: 1024 / 32\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA512('message');\n * var hash = CryptoJS.SHA512(wordArray);\n */\n C.SHA512 = Hasher._createHelper(SHA512);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA512(message, key);\n */\n C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n })();\n return CryptoJS.SHA512;\n});\n\n/***/ }),\n\n/***/ 64390:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(20731);\n;\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559), __webpack_require__(49300), __webpack_require__(72342), __webpack_require__(36572), __webpack_require__(28395));\n } else {}\n})(void 0, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var BlockCipher = C_lib.BlockCipher;\n var C_algo = C.algo;\n\n // Permuted Choice 1 constants\n var PC1 = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4];\n\n // Permuted Choice 2 constants\n var PC2 = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32];\n\n // Cumulative bit shift constants\n var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n // SBOXes and round permutation constants\n var SBOX_P = [{\n 0x0: 0x808200,\n 0x10000000: 0x8000,\n 0x20000000: 0x808002,\n 0x30000000: 0x2,\n 0x40000000: 0x200,\n 0x50000000: 0x808202,\n 0x60000000: 0x800202,\n 0x70000000: 0x800000,\n 0x80000000: 0x202,\n 0x90000000: 0x800200,\n 0xa0000000: 0x8200,\n 0xb0000000: 0x808000,\n 0xc0000000: 0x8002,\n 0xd0000000: 0x800002,\n 0xe0000000: 0x0,\n 0xf0000000: 0x8202,\n 0x8000000: 0x0,\n 0x18000000: 0x808202,\n 0x28000000: 0x8202,\n 0x38000000: 0x8000,\n 0x48000000: 0x808200,\n 0x58000000: 0x200,\n 0x68000000: 0x808002,\n 0x78000000: 0x2,\n 0x88000000: 0x800200,\n 0x98000000: 0x8200,\n 0xa8000000: 0x808000,\n 0xb8000000: 0x800202,\n 0xc8000000: 0x800002,\n 0xd8000000: 0x8002,\n 0xe8000000: 0x202,\n 0xf8000000: 0x800000,\n 0x1: 0x8000,\n 0x10000001: 0x2,\n 0x20000001: 0x808200,\n 0x30000001: 0x800000,\n 0x40000001: 0x808002,\n 0x50000001: 0x8200,\n 0x60000001: 0x200,\n 0x70000001: 0x800202,\n 0x80000001: 0x808202,\n 0x90000001: 0x808000,\n 0xa0000001: 0x800002,\n 0xb0000001: 0x8202,\n 0xc0000001: 0x202,\n 0xd0000001: 0x800200,\n 0xe0000001: 0x8002,\n 0xf0000001: 0x0,\n 0x8000001: 0x808202,\n 0x18000001: 0x808000,\n 0x28000001: 0x800000,\n 0x38000001: 0x200,\n 0x48000001: 0x8000,\n 0x58000001: 0x800002,\n 0x68000001: 0x2,\n 0x78000001: 0x8202,\n 0x88000001: 0x8002,\n 0x98000001: 0x800202,\n 0xa8000001: 0x202,\n 0xb8000001: 0x808200,\n 0xc8000001: 0x800200,\n 0xd8000001: 0x0,\n 0xe8000001: 0x8200,\n 0xf8000001: 0x808002\n }, {\n 0x0: 0x40084010,\n 0x1000000: 0x4000,\n 0x2000000: 0x80000,\n 0x3000000: 0x40080010,\n 0x4000000: 0x40000010,\n 0x5000000: 0x40084000,\n 0x6000000: 0x40004000,\n 0x7000000: 0x10,\n 0x8000000: 0x84000,\n 0x9000000: 0x40004010,\n 0xa000000: 0x40000000,\n 0xb000000: 0x84010,\n 0xc000000: 0x80010,\n 0xd000000: 0x0,\n 0xe000000: 0x4010,\n 0xf000000: 0x40080000,\n 0x800000: 0x40004000,\n 0x1800000: 0x84010,\n 0x2800000: 0x10,\n 0x3800000: 0x40004010,\n 0x4800000: 0x40084010,\n 0x5800000: 0x40000000,\n 0x6800000: 0x80000,\n 0x7800000: 0x40080010,\n 0x8800000: 0x80010,\n 0x9800000: 0x0,\n 0xa800000: 0x4000,\n 0xb800000: 0x40080000,\n 0xc800000: 0x40000010,\n 0xd800000: 0x84000,\n 0xe800000: 0x40084000,\n 0xf800000: 0x4010,\n 0x10000000: 0x0,\n 0x11000000: 0x40080010,\n 0x12000000: 0x40004010,\n 0x13000000: 0x40084000,\n 0x14000000: 0x40080000,\n 0x15000000: 0x10,\n 0x16000000: 0x84010,\n 0x17000000: 0x4000,\n 0x18000000: 0x4010,\n 0x19000000: 0x80000,\n 0x1a000000: 0x80010,\n 0x1b000000: 0x40000010,\n 0x1c000000: 0x84000,\n 0x1d000000: 0x40004000,\n 0x1e000000: 0x40000000,\n 0x1f000000: 0x40084010,\n 0x10800000: 0x84010,\n 0x11800000: 0x80000,\n 0x12800000: 0x40080000,\n 0x13800000: 0x4000,\n 0x14800000: 0x40004000,\n 0x15800000: 0x40084010,\n 0x16800000: 0x10,\n 0x17800000: 0x40000000,\n 0x18800000: 0x40084000,\n 0x19800000: 0x40000010,\n 0x1a800000: 0x40004010,\n 0x1b800000: 0x80010,\n 0x1c800000: 0x0,\n 0x1d800000: 0x4010,\n 0x1e800000: 0x40080010,\n 0x1f800000: 0x84000\n }, {\n 0x0: 0x104,\n 0x100000: 0x0,\n 0x200000: 0x4000100,\n 0x300000: 0x10104,\n 0x400000: 0x10004,\n 0x500000: 0x4000004,\n 0x600000: 0x4010104,\n 0x700000: 0x4010000,\n 0x800000: 0x4000000,\n 0x900000: 0x4010100,\n 0xa00000: 0x10100,\n 0xb00000: 0x4010004,\n 0xc00000: 0x4000104,\n 0xd00000: 0x10000,\n 0xe00000: 0x4,\n 0xf00000: 0x100,\n 0x80000: 0x4010100,\n 0x180000: 0x4010004,\n 0x280000: 0x0,\n 0x380000: 0x4000100,\n 0x480000: 0x4000004,\n 0x580000: 0x10000,\n 0x680000: 0x10004,\n 0x780000: 0x104,\n 0x880000: 0x4,\n 0x980000: 0x100,\n 0xa80000: 0x4010000,\n 0xb80000: 0x10104,\n 0xc80000: 0x10100,\n 0xd80000: 0x4000104,\n 0xe80000: 0x4010104,\n 0xf80000: 0x4000000,\n 0x1000000: 0x4010100,\n 0x1100000: 0x10004,\n 0x1200000: 0x10000,\n 0x1300000: 0x4000100,\n 0x1400000: 0x100,\n 0x1500000: 0x4010104,\n 0x1600000: 0x4000004,\n 0x1700000: 0x0,\n 0x1800000: 0x4000104,\n 0x1900000: 0x4000000,\n 0x1a00000: 0x4,\n 0x1b00000: 0x10100,\n 0x1c00000: 0x4010000,\n 0x1d00000: 0x104,\n 0x1e00000: 0x10104,\n 0x1f00000: 0x4010004,\n 0x1080000: 0x4000000,\n 0x1180000: 0x104,\n 0x1280000: 0x4010100,\n 0x1380000: 0x0,\n 0x1480000: 0x10004,\n 0x1580000: 0x4000100,\n 0x1680000: 0x100,\n 0x1780000: 0x4010004,\n 0x1880000: 0x10000,\n 0x1980000: 0x4010104,\n 0x1a80000: 0x10104,\n 0x1b80000: 0x4000004,\n 0x1c80000: 0x4000104,\n 0x1d80000: 0x4010000,\n 0x1e80000: 0x4,\n 0x1f80000: 0x10100\n }, {\n 0x0: 0x80401000,\n 0x10000: 0x80001040,\n 0x20000: 0x401040,\n 0x30000: 0x80400000,\n 0x40000: 0x0,\n 0x50000: 0x401000,\n 0x60000: 0x80000040,\n 0x70000: 0x400040,\n 0x80000: 0x80000000,\n 0x90000: 0x400000,\n 0xa0000: 0x40,\n 0xb0000: 0x80001000,\n 0xc0000: 0x80400040,\n 0xd0000: 0x1040,\n 0xe0000: 0x1000,\n 0xf0000: 0x80401040,\n 0x8000: 0x80001040,\n 0x18000: 0x40,\n 0x28000: 0x80400040,\n 0x38000: 0x80001000,\n 0x48000: 0x401000,\n 0x58000: 0x80401040,\n 0x68000: 0x0,\n 0x78000: 0x80400000,\n 0x88000: 0x1000,\n 0x98000: 0x80401000,\n 0xa8000: 0x400000,\n 0xb8000: 0x1040,\n 0xc8000: 0x80000000,\n 0xd8000: 0x400040,\n 0xe8000: 0x401040,\n 0xf8000: 0x80000040,\n 0x100000: 0x400040,\n 0x110000: 0x401000,\n 0x120000: 0x80000040,\n 0x130000: 0x0,\n 0x140000: 0x1040,\n 0x150000: 0x80400040,\n 0x160000: 0x80401000,\n 0x170000: 0x80001040,\n 0x180000: 0x80401040,\n 0x190000: 0x80000000,\n 0x1a0000: 0x80400000,\n 0x1b0000: 0x401040,\n 0x1c0000: 0x80001000,\n 0x1d0000: 0x400000,\n 0x1e0000: 0x40,\n 0x1f0000: 0x1000,\n 0x108000: 0x80400000,\n 0x118000: 0x80401040,\n 0x128000: 0x0,\n 0x138000: 0x401000,\n 0x148000: 0x400040,\n 0x158000: 0x80000000,\n 0x168000: 0x80001040,\n 0x178000: 0x40,\n 0x188000: 0x80000040,\n 0x198000: 0x1000,\n 0x1a8000: 0x80001000,\n 0x1b8000: 0x80400040,\n 0x1c8000: 0x1040,\n 0x1d8000: 0x80401000,\n 0x1e8000: 0x400000,\n 0x1f8000: 0x401040\n }, {\n 0x0: 0x80,\n 0x1000: 0x1040000,\n 0x2000: 0x40000,\n 0x3000: 0x20000000,\n 0x4000: 0x20040080,\n 0x5000: 0x1000080,\n 0x6000: 0x21000080,\n 0x7000: 0x40080,\n 0x8000: 0x1000000,\n 0x9000: 0x20040000,\n 0xa000: 0x20000080,\n 0xb000: 0x21040080,\n 0xc000: 0x21040000,\n 0xd000: 0x0,\n 0xe000: 0x1040080,\n 0xf000: 0x21000000,\n 0x800: 0x1040080,\n 0x1800: 0x21000080,\n 0x2800: 0x80,\n 0x3800: 0x1040000,\n 0x4800: 0x40000,\n 0x5800: 0x20040080,\n 0x6800: 0x21040000,\n 0x7800: 0x20000000,\n 0x8800: 0x20040000,\n 0x9800: 0x0,\n 0xa800: 0x21040080,\n 0xb800: 0x1000080,\n 0xc800: 0x20000080,\n 0xd800: 0x21000000,\n 0xe800: 0x1000000,\n 0xf800: 0x40080,\n 0x10000: 0x40000,\n 0x11000: 0x80,\n 0x12000: 0x20000000,\n 0x13000: 0x21000080,\n 0x14000: 0x1000080,\n 0x15000: 0x21040000,\n 0x16000: 0x20040080,\n 0x17000: 0x1000000,\n 0x18000: 0x21040080,\n 0x19000: 0x21000000,\n 0x1a000: 0x1040000,\n 0x1b000: 0x20040000,\n 0x1c000: 0x40080,\n 0x1d000: 0x20000080,\n 0x1e000: 0x0,\n 0x1f000: 0x1040080,\n 0x10800: 0x21000080,\n 0x11800: 0x1000000,\n 0x12800: 0x1040000,\n 0x13800: 0x20040080,\n 0x14800: 0x20000000,\n 0x15800: 0x1040080,\n 0x16800: 0x80,\n 0x17800: 0x21040000,\n 0x18800: 0x40080,\n 0x19800: 0x21040080,\n 0x1a800: 0x0,\n 0x1b800: 0x21000000,\n 0x1c800: 0x1000080,\n 0x1d800: 0x40000,\n 0x1e800: 0x20040000,\n 0x1f800: 0x20000080\n }, {\n 0x0: 0x10000008,\n 0x100: 0x2000,\n 0x200: 0x10200000,\n 0x300: 0x10202008,\n 0x400: 0x10002000,\n 0x500: 0x200000,\n 0x600: 0x200008,\n 0x700: 0x10000000,\n 0x800: 0x0,\n 0x900: 0x10002008,\n 0xa00: 0x202000,\n 0xb00: 0x8,\n 0xc00: 0x10200008,\n 0xd00: 0x202008,\n 0xe00: 0x2008,\n 0xf00: 0x10202000,\n 0x80: 0x10200000,\n 0x180: 0x10202008,\n 0x280: 0x8,\n 0x380: 0x200000,\n 0x480: 0x202008,\n 0x580: 0x10000008,\n 0x680: 0x10002000,\n 0x780: 0x2008,\n 0x880: 0x200008,\n 0x980: 0x2000,\n 0xa80: 0x10002008,\n 0xb80: 0x10200008,\n 0xc80: 0x0,\n 0xd80: 0x10202000,\n 0xe80: 0x202000,\n 0xf80: 0x10000000,\n 0x1000: 0x10002000,\n 0x1100: 0x10200008,\n 0x1200: 0x10202008,\n 0x1300: 0x2008,\n 0x1400: 0x200000,\n 0x1500: 0x10000000,\n 0x1600: 0x10000008,\n 0x1700: 0x202000,\n 0x1800: 0x202008,\n 0x1900: 0x0,\n 0x1a00: 0x8,\n 0x1b00: 0x10200000,\n 0x1c00: 0x2000,\n 0x1d00: 0x10002008,\n 0x1e00: 0x10202000,\n 0x1f00: 0x200008,\n 0x1080: 0x8,\n 0x1180: 0x202000,\n 0x1280: 0x200000,\n 0x1380: 0x10000008,\n 0x1480: 0x10002000,\n 0x1580: 0x2008,\n 0x1680: 0x10202008,\n 0x1780: 0x10200000,\n 0x1880: 0x10202000,\n 0x1980: 0x10200008,\n 0x1a80: 0x2000,\n 0x1b80: 0x202008,\n 0x1c80: 0x200008,\n 0x1d80: 0x0,\n 0x1e80: 0x10000000,\n 0x1f80: 0x10002008\n }, {\n 0x0: 0x100000,\n 0x10: 0x2000401,\n 0x20: 0x400,\n 0x30: 0x100401,\n 0x40: 0x2100401,\n 0x50: 0x0,\n 0x60: 0x1,\n 0x70: 0x2100001,\n 0x80: 0x2000400,\n 0x90: 0x100001,\n 0xa0: 0x2000001,\n 0xb0: 0x2100400,\n 0xc0: 0x2100000,\n 0xd0: 0x401,\n 0xe0: 0x100400,\n 0xf0: 0x2000000,\n 0x8: 0x2100001,\n 0x18: 0x0,\n 0x28: 0x2000401,\n 0x38: 0x2100400,\n 0x48: 0x100000,\n 0x58: 0x2000001,\n 0x68: 0x2000000,\n 0x78: 0x401,\n 0x88: 0x100401,\n 0x98: 0x2000400,\n 0xa8: 0x2100000,\n 0xb8: 0x100001,\n 0xc8: 0x400,\n 0xd8: 0x2100401,\n 0xe8: 0x1,\n 0xf8: 0x100400,\n 0x100: 0x2000000,\n 0x110: 0x100000,\n 0x120: 0x2000401,\n 0x130: 0x2100001,\n 0x140: 0x100001,\n 0x150: 0x2000400,\n 0x160: 0x2100400,\n 0x170: 0x100401,\n 0x180: 0x401,\n 0x190: 0x2100401,\n 0x1a0: 0x100400,\n 0x1b0: 0x1,\n 0x1c0: 0x0,\n 0x1d0: 0x2100000,\n 0x1e0: 0x2000001,\n 0x1f0: 0x400,\n 0x108: 0x100400,\n 0x118: 0x2000401,\n 0x128: 0x2100001,\n 0x138: 0x1,\n 0x148: 0x2000000,\n 0x158: 0x100000,\n 0x168: 0x401,\n 0x178: 0x2100400,\n 0x188: 0x2000001,\n 0x198: 0x2100000,\n 0x1a8: 0x0,\n 0x1b8: 0x2100401,\n 0x1c8: 0x100401,\n 0x1d8: 0x400,\n 0x1e8: 0x2000400,\n 0x1f8: 0x100001\n }, {\n 0x0: 0x8000820,\n 0x1: 0x20000,\n 0x2: 0x8000000,\n 0x3: 0x20,\n 0x4: 0x20020,\n 0x5: 0x8020820,\n 0x6: 0x8020800,\n 0x7: 0x800,\n 0x8: 0x8020000,\n 0x9: 0x8000800,\n 0xa: 0x20800,\n 0xb: 0x8020020,\n 0xc: 0x820,\n 0xd: 0x0,\n 0xe: 0x8000020,\n 0xf: 0x20820,\n 0x80000000: 0x800,\n 0x80000001: 0x8020820,\n 0x80000002: 0x8000820,\n 0x80000003: 0x8000000,\n 0x80000004: 0x8020000,\n 0x80000005: 0x20800,\n 0x80000006: 0x20820,\n 0x80000007: 0x20,\n 0x80000008: 0x8000020,\n 0x80000009: 0x820,\n 0x8000000a: 0x20020,\n 0x8000000b: 0x8020800,\n 0x8000000c: 0x0,\n 0x8000000d: 0x8020020,\n 0x8000000e: 0x8000800,\n 0x8000000f: 0x20000,\n 0x10: 0x20820,\n 0x11: 0x8020800,\n 0x12: 0x20,\n 0x13: 0x800,\n 0x14: 0x8000800,\n 0x15: 0x8000020,\n 0x16: 0x8020020,\n 0x17: 0x20000,\n 0x18: 0x0,\n 0x19: 0x20020,\n 0x1a: 0x8020000,\n 0x1b: 0x8000820,\n 0x1c: 0x8020820,\n 0x1d: 0x20800,\n 0x1e: 0x820,\n 0x1f: 0x8000000,\n 0x80000010: 0x20000,\n 0x80000011: 0x800,\n 0x80000012: 0x8020020,\n 0x80000013: 0x20820,\n 0x80000014: 0x20,\n 0x80000015: 0x8020000,\n 0x80000016: 0x8000000,\n 0x80000017: 0x8000820,\n 0x80000018: 0x8020820,\n 0x80000019: 0x8000020,\n 0x8000001a: 0x8000800,\n 0x8000001b: 0x0,\n 0x8000001c: 0x20800,\n 0x8000001d: 0x820,\n 0x8000001e: 0x20020,\n 0x8000001f: 0x8020800\n }];\n\n // Masks that select the SBOX input\n var SBOX_MASK = [0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f];\n\n /**\n * DES block cipher algorithm.\n */\n var DES = C_algo.DES = BlockCipher.extend({\n _doReset: function _doReset() {\n // Shortcuts\n var key = this._key;\n var keyWords = key.words;\n\n // Select 56 bits according to PC1\n var keyBits = [];\n for (var i = 0; i < 56; i++) {\n var keyBitPos = PC1[i] - 1;\n keyBits[i] = keyWords[keyBitPos >>> 5] >>> 31 - keyBitPos % 32 & 1;\n }\n\n // Assemble 16 subkeys\n var subKeys = this._subKeys = [];\n for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n // Create subkey\n var subKey = subKeys[nSubKey] = [];\n\n // Shortcut\n var bitShift = BIT_SHIFTS[nSubKey];\n\n // Select 48 bits according to PC2\n for (var i = 0; i < 24; i++) {\n // Select from the left 28 key bits\n subKey[i / 6 | 0] |= keyBits[(PC2[i] - 1 + bitShift) % 28] << 31 - i % 6;\n\n // Select from the right 28 key bits\n subKey[4 + (i / 6 | 0)] |= keyBits[28 + (PC2[i + 24] - 1 + bitShift) % 28] << 31 - i % 6;\n }\n\n // Since each subkey is applied to an expanded 32-bit input,\n // the subkey can be broken into 8 values scaled to 32-bits,\n // which allows the key to be used without expansion\n subKey[0] = subKey[0] << 1 | subKey[0] >>> 31;\n for (var i = 1; i < 7; i++) {\n subKey[i] = subKey[i] >>> (i - 1) * 4 + 3;\n }\n subKey[7] = subKey[7] << 5 | subKey[7] >>> 27;\n }\n\n // Compute inverse subkeys\n var invSubKeys = this._invSubKeys = [];\n for (var i = 0; i < 16; i++) {\n invSubKeys[i] = subKeys[15 - i];\n }\n },\n encryptBlock: function encryptBlock(M, offset) {\n this._doCryptBlock(M, offset, this._subKeys);\n },\n decryptBlock: function decryptBlock(M, offset) {\n this._doCryptBlock(M, offset, this._invSubKeys);\n },\n _doCryptBlock: function _doCryptBlock(M, offset, subKeys) {\n // Get input\n this._lBlock = M[offset];\n this._rBlock = M[offset + 1];\n\n // Initial permutation\n exchangeLR.call(this, 4, 0x0f0f0f0f);\n exchangeLR.call(this, 16, 0x0000ffff);\n exchangeRL.call(this, 2, 0x33333333);\n exchangeRL.call(this, 8, 0x00ff00ff);\n exchangeLR.call(this, 1, 0x55555555);\n\n // Rounds\n for (var round = 0; round < 16; round++) {\n // Shortcuts\n var subKey = subKeys[round];\n var lBlock = this._lBlock;\n var rBlock = this._rBlock;\n\n // Feistel function\n var f = 0;\n for (var i = 0; i < 8; i++) {\n f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n }\n this._lBlock = rBlock;\n this._rBlock = lBlock ^ f;\n }\n\n // Undo swap from last round\n var t = this._lBlock;\n this._lBlock = this._rBlock;\n this._rBlock = t;\n\n // Final permutation\n exchangeLR.call(this, 1, 0x55555555);\n exchangeRL.call(this, 8, 0x00ff00ff);\n exchangeRL.call(this, 2, 0x33333333);\n exchangeLR.call(this, 16, 0x0000ffff);\n exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n // Set output\n M[offset] = this._lBlock;\n M[offset + 1] = this._rBlock;\n },\n keySize: 64 / 32,\n ivSize: 64 / 32,\n blockSize: 64 / 32\n });\n\n // Swap bits across the left and right words\n function exchangeLR(offset, mask) {\n var t = (this._lBlock >>> offset ^ this._rBlock) & mask;\n this._rBlock ^= t;\n this._lBlock ^= t << offset;\n }\n function exchangeRL(offset, mask) {\n var t = (this._rBlock >>> offset ^ this._lBlock) & mask;\n this._lBlock ^= t;\n this._rBlock ^= t << offset;\n }\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n */\n C.DES = BlockCipher._createHelper(DES);\n\n /**\n * Triple-DES block cipher algorithm.\n */\n var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n _doReset: function _doReset() {\n // Shortcuts\n var key = this._key;\n var keyWords = key.words;\n // Make sure the key length is valid (64, 128 or >= 192 bit)\n if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n }\n\n // Extend the key according to the keying options defined in 3DES standard\n var key1 = keyWords.slice(0, 2);\n var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n // Create DES instances\n this._des1 = DES.createEncryptor(WordArray.create(key1));\n this._des2 = DES.createEncryptor(WordArray.create(key2));\n this._des3 = DES.createEncryptor(WordArray.create(key3));\n },\n encryptBlock: function encryptBlock(M, offset) {\n this._des1.encryptBlock(M, offset);\n this._des2.decryptBlock(M, offset);\n this._des3.encryptBlock(M, offset);\n },\n decryptBlock: function decryptBlock(M, offset) {\n this._des3.decryptBlock(M, offset);\n this._des2.encryptBlock(M, offset);\n this._des1.decryptBlock(M, offset);\n },\n keySize: 192 / 32,\n ivSize: 64 / 32,\n blockSize: 64 / 32\n });\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n */\n C.TripleDES = BlockCipher._createHelper(TripleDES);\n })();\n return CryptoJS.TripleDES;\n});\n\n/***/ }),\n\n/***/ 26478:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(20731);\n;\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(34559));\n } else {}\n})(void 0, function (CryptoJS) {\n (function (undefined) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var X32WordArray = C_lib.WordArray;\n\n /**\n * x64 namespace.\n */\n var C_x64 = C.x64 = {};\n\n /**\n * A 64-bit word.\n */\n var X64Word = C_x64.Word = Base.extend({\n /**\n * Initializes a newly created 64-bit word.\n *\n * @param {number} high The high 32 bits.\n * @param {number} low The low 32 bits.\n *\n * @example\n *\n * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n */\n init: function init(high, low) {\n this.high = high;\n this.low = low;\n }\n\n /**\n * Bitwise NOTs this word.\n *\n * @return {X64Word} A new x64-Word object after negating.\n *\n * @example\n *\n * var negated = x64Word.not();\n */\n // not: function () {\n // var high = ~this.high;\n // var low = ~this.low;\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Bitwise ANDs this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to AND with this word.\n *\n * @return {X64Word} A new x64-Word object after ANDing.\n *\n * @example\n *\n * var anded = x64Word.and(anotherX64Word);\n */\n // and: function (word) {\n // var high = this.high & word.high;\n // var low = this.low & word.low;\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Bitwise ORs this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to OR with this word.\n *\n * @return {X64Word} A new x64-Word object after ORing.\n *\n * @example\n *\n * var ored = x64Word.or(anotherX64Word);\n */\n // or: function (word) {\n // var high = this.high | word.high;\n // var low = this.low | word.low;\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Bitwise XORs this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to XOR with this word.\n *\n * @return {X64Word} A new x64-Word object after XORing.\n *\n * @example\n *\n * var xored = x64Word.xor(anotherX64Word);\n */\n // xor: function (word) {\n // var high = this.high ^ word.high;\n // var low = this.low ^ word.low;\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Shifts this word n bits to the left.\n *\n * @param {number} n The number of bits to shift.\n *\n * @return {X64Word} A new x64-Word object after shifting.\n *\n * @example\n *\n * var shifted = x64Word.shiftL(25);\n */\n // shiftL: function (n) {\n // if (n < 32) {\n // var high = (this.high << n) | (this.low >>> (32 - n));\n // var low = this.low << n;\n // } else {\n // var high = this.low << (n - 32);\n // var low = 0;\n // }\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Shifts this word n bits to the right.\n *\n * @param {number} n The number of bits to shift.\n *\n * @return {X64Word} A new x64-Word object after shifting.\n *\n * @example\n *\n * var shifted = x64Word.shiftR(7);\n */\n // shiftR: function (n) {\n // if (n < 32) {\n // var low = (this.low >>> n) | (this.high << (32 - n));\n // var high = this.high >>> n;\n // } else {\n // var low = this.high >>> (n - 32);\n // var high = 0;\n // }\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Rotates this word n bits to the left.\n *\n * @param {number} n The number of bits to rotate.\n *\n * @return {X64Word} A new x64-Word object after rotating.\n *\n * @example\n *\n * var rotated = x64Word.rotL(25);\n */\n // rotL: function (n) {\n // return this.shiftL(n).or(this.shiftR(64 - n));\n // },\n\n /**\n * Rotates this word n bits to the right.\n *\n * @param {number} n The number of bits to rotate.\n *\n * @return {X64Word} A new x64-Word object after rotating.\n *\n * @example\n *\n * var rotated = x64Word.rotR(7);\n */\n // rotR: function (n) {\n // return this.shiftR(n).or(this.shiftL(64 - n));\n // },\n\n /**\n * Adds this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to add with this word.\n *\n * @return {X64Word} A new x64-Word object after adding.\n *\n * @example\n *\n * var added = x64Word.add(anotherX64Word);\n */\n // add: function (word) {\n // var low = (this.low + word.low) | 0;\n // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n // var high = (this.high + word.high + carry) | 0;\n\n // return X64Word.create(high, low);\n // }\n });\n\n /**\n * An array of 64-bit words.\n *\n * @property {Array} words The array of CryptoJS.x64.Word objects.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\n var X64WordArray = C_x64.WordArray = Base.extend({\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.x64.WordArray.create();\n *\n * var wordArray = CryptoJS.x64.WordArray.create([\n * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n * ]);\n *\n * var wordArray = CryptoJS.x64.WordArray.create([\n * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n * ], 10);\n */\n init: function init(words, sigBytes) {\n words = this.words = words || [];\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 8;\n }\n },\n /**\n * Converts this 64-bit word array to a 32-bit word array.\n *\n * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n *\n * @example\n *\n * var x32WordArray = x64WordArray.toX32();\n */\n toX32: function toX32() {\n // Shortcuts\n var x64Words = this.words;\n var x64WordsLength = x64Words.length;\n\n // Convert\n var x32Words = [];\n for (var i = 0; i < x64WordsLength; i++) {\n var x64Word = x64Words[i];\n x32Words.push(x64Word.high);\n x32Words.push(x64Word.low);\n }\n return X32WordArray.create(x32Words, this.sigBytes);\n },\n /**\n * Creates a copy of this word array.\n *\n * @return {X64WordArray} The clone.\n *\n * @example\n *\n * var clone = x64WordArray.clone();\n */\n clone: function clone() {\n var clone = Base.clone.call(this);\n\n // Clone \"words\" array\n var words = clone.words = this.words.slice(0);\n\n // Clone each X64Word object\n var wordsLength = words.length;\n for (var i = 0; i < wordsLength; i++) {\n words[i] = words[i].clone();\n }\n return clone;\n }\n });\n })();\n return CryptoJS;\n});\n\n/***/ }),\n\n/***/ 91836:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(35877);\n__webpack_require__(38178);\n__webpack_require__(11765);\n__webpack_require__(24863);\n__webpack_require__(43448);\n__webpack_require__(63956);\n__webpack_require__(71950);\n__webpack_require__(68067);\n__webpack_require__(57114);\n__webpack_require__(42437);\n__webpack_require__(65292);\n__webpack_require__(73844);\n__webpack_require__(69330);\n__webpack_require__(81755);\n__webpack_require__(20731);\n__webpack_require__(14032);\n__webpack_require__(61726);\n__webpack_require__(58281);\n__webpack_require__(6422);\n__webpack_require__(94712);\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == typeof h && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(typeof e + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar INITIAL_STATE = 1;\nvar FAIL_STATE = 0;\n/**\n * A StateMachine represents a deterministic finite automaton.\n * It can perform matches over a sequence of values, similar to a regular expression.\n */\nvar StateMachine = /*#__PURE__*/function () {\n function StateMachine(dfa) {\n this.stateTable = dfa.stateTable;\n this.accepting = dfa.accepting;\n this.tags = dfa.tags;\n }\n /**\n * Returns an iterable object that yields pattern matches over the input sequence.\n * Matches are of the form [startIndex, endIndex, tags].\n */\n var _proto = StateMachine.prototype;\n _proto.match = function match(str) {\n var _ref;\n var self = this;\n return _ref = {}, _ref[Symbol.iterator] = /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var state, startRun, lastAccepting, lastState, p, c;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n state = INITIAL_STATE;\n startRun = null;\n lastAccepting = null;\n lastState = null;\n p = 0;\n case 5:\n if (!(p < str.length)) {\n _context.next = 21;\n break;\n }\n c = str[p];\n lastState = state;\n state = self.stateTable[state][c];\n if (!(state === FAIL_STATE)) {\n _context.next = 15;\n break;\n }\n if (!(startRun != null && lastAccepting != null && lastAccepting >= startRun)) {\n _context.next = 13;\n break;\n }\n _context.next = 13;\n return [startRun, lastAccepting, self.tags[lastState]];\n case 13:\n // reset the state as if we started over from the initial state\n\n state = self.stateTable[INITIAL_STATE][c];\n startRun = null;\n case 15:\n // start a run if not in the failure state\n\n if (state !== FAIL_STATE && startRun == null) {\n startRun = p;\n } // if accepting, mark the potential match end\n\n if (self.accepting[state]) {\n lastAccepting = p;\n } // reset the state to the initial state if we get into the failure state\n\n if (state === FAIL_STATE) {\n state = INITIAL_STATE;\n }\n case 18:\n p++;\n _context.next = 5;\n break;\n case 21:\n if (!(startRun != null && lastAccepting != null && lastAccepting >= startRun)) {\n _context.next = 24;\n break;\n }\n _context.next = 24;\n return [startRun, lastAccepting, self.tags[state]];\n case 24:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }), _ref;\n }\n /**\n * For each match over the input sequence, action functions matching\n * the tag definitions in the input pattern are called with the startIndex,\n * endIndex, and sub-match sequence.\n */;\n _proto.apply = function apply(str, actions) {\n for (var _iterator = _createForOfIteratorHelperLoose(this.match(str)), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n start = _step$value[0],\n end = _step$value[1],\n tags = _step$value[2];\n for (var _iterator2 = _createForOfIteratorHelperLoose(tags), _step2; !(_step2 = _iterator2()).done;) {\n var tag = _step2.value;\n if (typeof actions[tag] === 'function') {\n actions[tag](start, end, str.slice(start, end + 1));\n }\n }\n }\n };\n return StateMachine;\n}();\nmodule.exports = StateMachine;\n\n/***/ }),\n\n/***/ 80646:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n\n\n__webpack_require__(58028);\n__webpack_require__(20731);\n__webpack_require__(14032);\n__webpack_require__(68067);\n/*\n * MIT LICENSE\n * Copyright (c) 2011 Devon Govett\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this\n * software and associated documentation files (the \"Software\"), to deal in the Software\n * without restriction, including without limitation the rights to use, copy, modify, merge,\n * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons\n * to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nvar fs = __webpack_require__(48181);\nvar zlib = __webpack_require__(6729);\nmodule.exports = /*#__PURE__*/function () {\n PNG.decode = function decode(path, fn) {\n return fs.readFile(path, function (err, file) {\n var png = new PNG(file);\n return png.decode(function (pixels) {\n return fn(pixels);\n });\n });\n };\n PNG.load = function load(path) {\n var file = fs.readFileSync(path);\n return new PNG(file);\n };\n function PNG(data) {\n var i;\n this.data = data;\n this.pos = 8; // Skip the default header\n\n this.palette = [];\n this.imgData = [];\n this.transparency = {};\n this.text = {};\n while (true) {\n var chunkSize = this.readUInt32();\n var section = '';\n for (i = 0; i < 4; i++) {\n section += String.fromCharCode(this.data[this.pos++]);\n }\n switch (section) {\n case 'IHDR':\n // we can grab interesting values from here (like width, height, etc)\n this.width = this.readUInt32();\n this.height = this.readUInt32();\n this.bits = this.data[this.pos++];\n this.colorType = this.data[this.pos++];\n this.compressionMethod = this.data[this.pos++];\n this.filterMethod = this.data[this.pos++];\n this.interlaceMethod = this.data[this.pos++];\n break;\n case 'PLTE':\n this.palette = this.read(chunkSize);\n break;\n case 'IDAT':\n for (i = 0; i < chunkSize; i++) {\n this.imgData.push(this.data[this.pos++]);\n }\n break;\n case 'tRNS':\n // This chunk can only occur once and it must occur after the\n // PLTE chunk and before the IDAT chunk.\n this.transparency = {};\n switch (this.colorType) {\n case 3:\n // Indexed color, RGB. Each byte in this chunk is an alpha for\n // the palette index in the PLTE (\"palette\") chunk up until the\n // last non-opaque entry. Set up an array, stretching over all\n // palette entries which will be 0 (opaque) or 1 (transparent).\n this.transparency.indexed = this.read(chunkSize);\n var short = 255 - this.transparency.indexed.length;\n if (short > 0) {\n for (i = 0; i < short; i++) {\n this.transparency.indexed.push(255);\n }\n }\n break;\n case 0:\n // Greyscale. Corresponding to entries in the PLTE chunk.\n // Grey is two bytes, range 0 .. (2 ^ bit-depth) - 1\n this.transparency.grayscale = this.read(chunkSize)[0];\n break;\n case 2:\n // True color with proper alpha channel.\n this.transparency.rgb = this.read(chunkSize);\n break;\n }\n break;\n case 'tEXt':\n var text = this.read(chunkSize);\n var index = text.indexOf(0);\n var key = String.fromCharCode.apply(String, text.slice(0, index));\n this.text[key] = String.fromCharCode.apply(String, text.slice(index + 1));\n break;\n case 'IEND':\n // we've got everything we need!\n switch (this.colorType) {\n case 0:\n case 3:\n case 4:\n this.colors = 1;\n break;\n case 2:\n case 6:\n this.colors = 3;\n break;\n }\n this.hasAlphaChannel = [4, 6].includes(this.colorType);\n var colors = this.colors + (this.hasAlphaChannel ? 1 : 0);\n this.pixelBitlength = this.bits * colors;\n switch (this.colors) {\n case 1:\n this.colorSpace = 'DeviceGray';\n break;\n case 3:\n this.colorSpace = 'DeviceRGB';\n break;\n }\n this.imgData = new Buffer(this.imgData);\n return;\n break;\n default:\n // unknown (or unimportant) section, skip it\n this.pos += chunkSize;\n }\n this.pos += 4; // Skip the CRC\n\n if (this.pos > this.data.length) {\n throw new Error('Incomplete or corrupt PNG file');\n }\n }\n }\n var _proto = PNG.prototype;\n _proto.read = function read(bytes) {\n var result = new Array(bytes);\n for (var i = 0; i < bytes; i++) {\n result[i] = this.data[this.pos++];\n }\n return result;\n };\n _proto.readUInt32 = function readUInt32() {\n var b1 = this.data[this.pos++] << 24;\n var b2 = this.data[this.pos++] << 16;\n var b3 = this.data[this.pos++] << 8;\n var b4 = this.data[this.pos++];\n return b1 | b2 | b3 | b4;\n };\n _proto.readUInt16 = function readUInt16() {\n var b1 = this.data[this.pos++] << 8;\n var b2 = this.data[this.pos++];\n return b1 | b2;\n };\n _proto.decodePixels = function decodePixels(fn) {\n var _this = this;\n return zlib.inflate(this.imgData, function (err, data) {\n if (err) {\n throw err;\n }\n var width = _this.width,\n height = _this.height;\n var pixelBytes = _this.pixelBitlength / 8;\n var pixels = new Buffer(width * height * pixelBytes);\n var length = data.length;\n var pos = 0;\n function pass(x0, y0, dx, dy, singlePass) {\n if (singlePass === void 0) {\n singlePass = false;\n }\n var w = Math.ceil((width - x0) / dx);\n var h = Math.ceil((height - y0) / dy);\n var scanlineLength = pixelBytes * w;\n var buffer = singlePass ? pixels : new Buffer(scanlineLength * h);\n var row = 0;\n var c = 0;\n while (row < h && pos < length) {\n var byte, col, i, left, upper;\n switch (data[pos++]) {\n case 0:\n // None\n for (i = 0; i < scanlineLength; i++) {\n buffer[c++] = data[pos++];\n }\n break;\n case 1:\n // Sub\n for (i = 0; i < scanlineLength; i++) {\n byte = data[pos++];\n left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n buffer[c++] = (byte + left) % 256;\n }\n break;\n case 2:\n // Up\n for (i = 0; i < scanlineLength; i++) {\n byte = data[pos++];\n col = (i - i % pixelBytes) / pixelBytes;\n upper = row && buffer[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes];\n buffer[c++] = (upper + byte) % 256;\n }\n break;\n case 3:\n // Average\n for (i = 0; i < scanlineLength; i++) {\n byte = data[pos++];\n col = (i - i % pixelBytes) / pixelBytes;\n left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n upper = row && buffer[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes];\n buffer[c++] = (byte + Math.floor((left + upper) / 2)) % 256;\n }\n break;\n case 4:\n // Paeth\n for (i = 0; i < scanlineLength; i++) {\n var paeth, upperLeft;\n byte = data[pos++];\n col = (i - i % pixelBytes) / pixelBytes;\n left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n if (row === 0) {\n upper = upperLeft = 0;\n } else {\n upper = buffer[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes];\n upperLeft = col && buffer[(row - 1) * scanlineLength + (col - 1) * pixelBytes + i % pixelBytes];\n }\n var p = left + upper - upperLeft;\n var pa = Math.abs(p - left);\n var pb = Math.abs(p - upper);\n var pc = Math.abs(p - upperLeft);\n if (pa <= pb && pa <= pc) {\n paeth = left;\n } else if (pb <= pc) {\n paeth = upper;\n } else {\n paeth = upperLeft;\n }\n buffer[c++] = (byte + paeth) % 256;\n }\n break;\n default:\n throw new Error(\"Invalid filter algorithm: \" + data[pos - 1]);\n }\n if (!singlePass) {\n var pixelsPos = ((y0 + row * dy) * width + x0) * pixelBytes;\n var bufferPos = row * scanlineLength;\n for (i = 0; i < w; i++) {\n for (var j = 0; j < pixelBytes; j++) pixels[pixelsPos++] = buffer[bufferPos++];\n pixelsPos += (dx - 1) * pixelBytes;\n }\n }\n row++;\n }\n }\n if (_this.interlaceMethod === 1) {\n /*\n 1 6 4 6 2 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n 3 6 4 6 3 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n */\n pass(0, 0, 8, 8); // 1\n pass(4, 0, 8, 8); // 2\n pass(0, 4, 4, 8); // 3\n pass(2, 0, 4, 4); // 4\n pass(0, 2, 2, 4); // 5\n pass(1, 0, 2, 2); // 6\n pass(0, 1, 1, 2); // 7\n } else {\n pass(0, 0, 1, 1, true);\n }\n return fn(pixels);\n });\n };\n _proto.decodePalette = function decodePalette() {\n var palette = this.palette;\n var length = palette.length;\n var transparency = this.transparency.indexed || [];\n var ret = new Buffer(transparency.length + length);\n var pos = 0;\n var c = 0;\n for (var i = 0; i < length; i += 3) {\n var left;\n ret[pos++] = palette[i];\n ret[pos++] = palette[i + 1];\n ret[pos++] = palette[i + 2];\n ret[pos++] = (left = transparency[c++]) != null ? left : 255;\n }\n return ret;\n };\n _proto.copyToImageData = function copyToImageData(imageData, pixels) {\n var j, k;\n var colors = this.colors;\n var palette = null;\n var alpha = this.hasAlphaChannel;\n if (this.palette.length) {\n palette = this._decodedPalette || (this._decodedPalette = this.decodePalette());\n colors = 4;\n alpha = true;\n }\n var data = imageData.data || imageData;\n var length = data.length;\n var input = palette || pixels;\n var i = j = 0;\n if (colors === 1) {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n var v = input[k++];\n data[i++] = v;\n data[i++] = v;\n data[i++] = v;\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n } else {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n }\n };\n _proto.decode = function decode(fn) {\n var _this2 = this;\n var ret = new Buffer(this.width * this.height * 4);\n return this.decodePixels(function (pixels) {\n _this2.copyToImageData(ret, pixels);\n return fn(ret);\n });\n };\n return PNG;\n}();\n\n/***/ }),\n\n/***/ 16696:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var process = __webpack_require__(9964);\n/* eslint-disable node/no-deprecated-api */\n\n\n\n__webpack_require__(41584);\n__webpack_require__(81755);\n__webpack_require__(14032);\n__webpack_require__(56912);\n__webpack_require__(73663);\n__webpack_require__(29883);\n__webpack_require__(35471);\n__webpack_require__(21012);\n__webpack_require__(88997);\n__webpack_require__(97464);\n__webpack_require__(2857);\n__webpack_require__(83326);\n__webpack_require__(94715);\n__webpack_require__(13624);\n__webpack_require__(91132);\n__webpack_require__(62514);\n__webpack_require__(24597);\n__webpack_require__(88042);\n__webpack_require__(4660);\n__webpack_require__(92451);\n__webpack_require__(44206);\n__webpack_require__(66288);\n__webpack_require__(13250);\n__webpack_require__(3858);\n__webpack_require__(84538);\n__webpack_require__(64793);\n__webpack_require__(74202);\n__webpack_require__(52529);\nvar buffer = __webpack_require__(50621);\nvar Buffer = buffer.Buffer;\nvar safer = {};\nvar key;\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue;\n if (key === 'SlowBuffer' || key === 'Buffer') continue;\n safer[key] = buffer[key];\n}\nvar Safer = safer.Buffer = {};\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue;\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue;\n Safer[key] = Buffer[key];\n}\nsafer.Buffer.prototype = Buffer.prototype;\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value);\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value);\n }\n return Buffer(value, encodingOrOffset, length);\n };\n}\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size);\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n }\n var buf = Buffer(size);\n if (!fill || fill.length === 0) {\n buf.fill(0);\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n return buf;\n };\n}\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength;\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n };\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength;\n }\n}\nmodule.exports = safer;\n\n/***/ }),\n\n/***/ 57540:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(65292);\n__webpack_require__(73844);\n__webpack_require__(5597);\n__webpack_require__(49063);\n__webpack_require__(20731);\n__webpack_require__(7585);\n__webpack_require__(7283);\n__webpack_require__(57444);\n__webpack_require__(28331);\n__webpack_require__(37309);\n__webpack_require__(14032);\n__webpack_require__(42437);\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nvar _require = __webpack_require__(50621),\n Buffer = _require.Buffer;\nvar _require2 = __webpack_require__(63779),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();\n\n/***/ }),\n\n/***/ 72361:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(41584);\n/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(50621);\nvar Buffer = buffer.Buffer;\n\n// alternative to using Object.keys for old browsers\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer);\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n return Buffer(arg, encodingOrOffset, length);\n};\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n var buf = Buffer(size);\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n return buf;\n};\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return Buffer(size);\n};\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return buffer.SlowBuffer(size);\n};\n\n/***/ }),\n\n/***/ 41209:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(81755);\n__webpack_require__(20731);\n__webpack_require__(14032);\n__webpack_require__(56912);\n__webpack_require__(59735);\n__webpack_require__(73663);\n__webpack_require__(29883);\n__webpack_require__(35471);\n__webpack_require__(21012);\n__webpack_require__(88997);\n__webpack_require__(97464);\n__webpack_require__(2857);\n__webpack_require__(94715);\n__webpack_require__(13624);\n__webpack_require__(91132);\n__webpack_require__(62514);\n__webpack_require__(24597);\n__webpack_require__(88042);\n__webpack_require__(4660);\n__webpack_require__(92451);\n__webpack_require__(44206);\n__webpack_require__(66288);\n__webpack_require__(13250);\n__webpack_require__(3858);\n__webpack_require__(84538);\n__webpack_require__(64793);\n__webpack_require__(74202);\n__webpack_require__(52529);\nvar inflate = __webpack_require__(3483);\nvar _require = __webpack_require__(51014),\n swap32LE = _require.swap32LE;\n\n// Shift size for getting the index-1 table offset.\nvar SHIFT_1 = 6 + 5;\n\n// Shift size for getting the index-2 table offset.\nvar SHIFT_2 = 5;\n\n// Difference between the two shift sizes,\n// for getting an index-1 offset from an index-2 offset. 6=11-5\nvar SHIFT_1_2 = SHIFT_1 - SHIFT_2;\n\n// Number of index-1 entries for the BMP. 32=0x20\n// This part of the index-1 table is omitted from the serialized form.\nvar OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;\n\n// Number of entries in an index-2 block. 64=0x40\nvar INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;\n\n// Mask for getting the lower bits for the in-index-2-block offset. */\nvar INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;\n\n// Shift size for shifting left the index array values.\n// Increases possible data size with 16-bit index values at the cost\n// of compactability.\n// This requires data blocks to be aligned by DATA_GRANULARITY.\nvar INDEX_SHIFT = 2;\n\n// Number of entries in a data block. 32=0x20\nvar DATA_BLOCK_LENGTH = 1 << SHIFT_2;\n\n// Mask for getting the lower bits for the in-data-block offset.\nvar DATA_MASK = DATA_BLOCK_LENGTH - 1;\n\n// The part of the index-2 table for U+D800..U+DBFF stores values for\n// lead surrogate code _units_ not code _points_.\n// Values for lead surrogate code _points_ are indexed with this portion of the table.\n// Length=32=0x20=0x400>>SHIFT_2. (There are 1024=0x400 lead surrogates.)\nvar LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;\nvar LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;\n\n// Count the lengths of both BMP pieces. 2080=0x820\nvar INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + LSCP_INDEX_2_LENGTH;\n\n// The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n// Length 32=0x20 for lead bytes C0..DF, regardless of SHIFT_2.\nvar UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;\nvar UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; // U+0800 is the first code point after 2-byte UTF-8\n\n// The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n// Variable length, for code points up to highStart, where the last single-value range starts.\n// Maximum length 512=0x200=0x100000>>SHIFT_1.\n// (For 0x100000 supplementary code points U+10000..U+10ffff.)\n//\n// The part of the index-2 table for supplementary code points starts\n// after this index-1 table.\n//\n// Both the index-1 table and the following part of the index-2 table\n// are omitted completely if there is only BMP data.\nvar INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;\n\n// The alignment size of a data block. Also the granularity for compaction.\nvar DATA_GRANULARITY = 1 << INDEX_SHIFT;\nvar UnicodeTrie = /*#__PURE__*/function () {\n function UnicodeTrie(data) {\n var isBuffer = typeof data.readUInt32BE === 'function' && typeof data.slice === 'function';\n if (isBuffer || data instanceof Uint8Array) {\n // read binary format\n var uncompressedLength;\n if (isBuffer) {\n this.highStart = data.readUInt32LE(0);\n this.errorValue = data.readUInt32LE(4);\n uncompressedLength = data.readUInt32LE(8);\n data = data.slice(12);\n } else {\n var view = new DataView(data.buffer);\n this.highStart = view.getUint32(0, true);\n this.errorValue = view.getUint32(4, true);\n uncompressedLength = view.getUint32(8, true);\n data = data.subarray(12);\n }\n\n // double inflate the actual trie data\n data = inflate(data, new Uint8Array(uncompressedLength));\n data = inflate(data, new Uint8Array(uncompressedLength));\n\n // swap bytes from little-endian\n swap32LE(data);\n this.data = new Uint32Array(data.buffer);\n } else {\n // pre-parsed data\n var _data = data;\n this.data = _data.data;\n this.highStart = _data.highStart;\n this.errorValue = _data.errorValue;\n }\n }\n var _proto = UnicodeTrie.prototype;\n _proto.get = function get(codePoint) {\n var index;\n if (codePoint < 0 || codePoint > 0x10ffff) {\n return this.errorValue;\n }\n if (codePoint < 0xd800 || codePoint > 0xdbff && codePoint <= 0xffff) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the index.\n // data is stored in the index array itself.\n index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n index = (this.data[LSCP_INDEX_2_OFFSET + (codePoint - 0xd800 >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n index = this.data[INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> SHIFT_1)];\n index = this.data[index + (codePoint >> SHIFT_2 & INDEX_2_MASK)];\n index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n return this.data[this.data.length - DATA_GRANULARITY];\n };\n return UnicodeTrie;\n}();\nmodule.exports = UnicodeTrie;\n\n/***/ }),\n\n/***/ 51014:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(81755);\n__webpack_require__(14032);\n__webpack_require__(56912);\n__webpack_require__(59735);\n__webpack_require__(73663);\n__webpack_require__(29883);\n__webpack_require__(35471);\n__webpack_require__(21012);\n__webpack_require__(88997);\n__webpack_require__(97464);\n__webpack_require__(2857);\n__webpack_require__(94715);\n__webpack_require__(13624);\n__webpack_require__(91132);\n__webpack_require__(62514);\n__webpack_require__(24597);\n__webpack_require__(88042);\n__webpack_require__(4660);\n__webpack_require__(92451);\n__webpack_require__(44206);\n__webpack_require__(66288);\n__webpack_require__(13250);\n__webpack_require__(3858);\n__webpack_require__(84538);\n__webpack_require__(64793);\n__webpack_require__(74202);\n__webpack_require__(52529);\nvar isBigEndian = new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x12;\nvar swap = function swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n};\nvar swap32 = function swap32(array) {\n var len = array.length;\n for (var i = 0; i < len; i += 4) {\n swap(array, i, i + 3);\n swap(array, i + 1, i + 2);\n }\n};\nvar swap32LE = function swap32LE(array) {\n if (isBigEndian) {\n swap32(array);\n }\n};\nmodule.exports = {\n swap32LE: swap32LE\n};\n\n/***/ }),\n\n/***/ 54074:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar SVGtoPDF = __webpack_require__(94732);\nmodule.exports = SVGtoPDF;\n\n/***/ }),\n\n/***/ 94732:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* module decorator */ module = __webpack_require__.nmd(module);\n\n\n__webpack_require__(39081);\n__webpack_require__(41584);\n__webpack_require__(81755);\n__webpack_require__(20731);\n__webpack_require__(24863);\n__webpack_require__(7283);\n__webpack_require__(37309);\n__webpack_require__(14032);\n__webpack_require__(61726);\n__webpack_require__(6422);\n__webpack_require__(46467);\n__webpack_require__(7851);\n__webpack_require__(72095);\n__webpack_require__(47259);\n__webpack_require__(1083);\n__webpack_require__(94712);\nvar SVGtoPDF = function SVGtoPDF(doc, svg, x, y, options) {\n \"use strict\";\n\n var NamedColors = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgrey: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n grey: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgrey: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0]\n };\n var DefaultColors = {\n black: [NamedColors.black, 1],\n white: [NamedColors.white, 1],\n transparent: [NamedColors.black, 0]\n };\n var Entities = {\n quot: 34,\n amp: 38,\n lt: 60,\n gt: 62,\n apos: 39,\n OElig: 338,\n oelig: 339,\n Scaron: 352,\n scaron: 353,\n Yuml: 376,\n circ: 710,\n tilde: 732,\n ensp: 8194,\n emsp: 8195,\n thinsp: 8201,\n zwnj: 8204,\n zwj: 8205,\n lrm: 8206,\n rlm: 8207,\n ndash: 8211,\n mdash: 8212,\n lsquo: 8216,\n rsquo: 8217,\n sbquo: 8218,\n ldquo: 8220,\n rdquo: 8221,\n bdquo: 8222,\n dagger: 8224,\n Dagger: 8225,\n permil: 8240,\n lsaquo: 8249,\n rsaquo: 8250,\n euro: 8364,\n nbsp: 160,\n iexcl: 161,\n cent: 162,\n pound: 163,\n curren: 164,\n yen: 165,\n brvbar: 166,\n sect: 167,\n uml: 168,\n copy: 169,\n ordf: 170,\n laquo: 171,\n not: 172,\n shy: 173,\n reg: 174,\n macr: 175,\n deg: 176,\n plusmn: 177,\n sup2: 178,\n sup3: 179,\n acute: 180,\n micro: 181,\n para: 182,\n middot: 183,\n cedil: 184,\n sup1: 185,\n ordm: 186,\n raquo: 187,\n frac14: 188,\n frac12: 189,\n frac34: 190,\n iquest: 191,\n Agrave: 192,\n Aacute: 193,\n Acirc: 194,\n Atilde: 195,\n Auml: 196,\n Aring: 197,\n AElig: 198,\n Ccedil: 199,\n Egrave: 200,\n Eacute: 201,\n Ecirc: 202,\n Euml: 203,\n Igrave: 204,\n Iacute: 205,\n Icirc: 206,\n Iuml: 207,\n ETH: 208,\n Ntilde: 209,\n Ograve: 210,\n Oacute: 211,\n Ocirc: 212,\n Otilde: 213,\n Ouml: 214,\n times: 215,\n Oslash: 216,\n Ugrave: 217,\n Uacute: 218,\n Ucirc: 219,\n Uuml: 220,\n Yacute: 221,\n THORN: 222,\n szlig: 223,\n agrave: 224,\n aacute: 225,\n acirc: 226,\n atilde: 227,\n auml: 228,\n aring: 229,\n aelig: 230,\n ccedil: 231,\n egrave: 232,\n eacute: 233,\n ecirc: 234,\n euml: 235,\n igrave: 236,\n iacute: 237,\n icirc: 238,\n iuml: 239,\n eth: 240,\n ntilde: 241,\n ograve: 242,\n oacute: 243,\n ocirc: 244,\n otilde: 245,\n ouml: 246,\n divide: 247,\n oslash: 248,\n ugrave: 249,\n uacute: 250,\n ucirc: 251,\n uuml: 252,\n yacute: 253,\n thorn: 254,\n yuml: 255,\n fnof: 402,\n Alpha: 913,\n Beta: 914,\n Gamma: 915,\n Delta: 916,\n Epsilon: 917,\n Zeta: 918,\n Eta: 919,\n Theta: 920,\n Iota: 921,\n Kappa: 922,\n Lambda: 923,\n Mu: 924,\n Nu: 925,\n Xi: 926,\n Omicron: 927,\n Pi: 928,\n Rho: 929,\n Sigma: 931,\n Tau: 932,\n Upsilon: 933,\n Phi: 934,\n Chi: 935,\n Psi: 936,\n Omega: 937,\n alpha: 945,\n beta: 946,\n gamma: 947,\n delta: 948,\n epsilon: 949,\n zeta: 950,\n eta: 951,\n theta: 952,\n iota: 953,\n kappa: 954,\n lambda: 955,\n mu: 956,\n nu: 957,\n xi: 958,\n omicron: 959,\n pi: 960,\n rho: 961,\n sigmaf: 962,\n sigma: 963,\n tau: 964,\n upsilon: 965,\n phi: 966,\n chi: 967,\n psi: 968,\n omega: 969,\n thetasym: 977,\n upsih: 978,\n piv: 982,\n bull: 8226,\n hellip: 8230,\n prime: 8242,\n Prime: 8243,\n oline: 8254,\n frasl: 8260,\n weierp: 8472,\n image: 8465,\n real: 8476,\n trade: 8482,\n alefsym: 8501,\n larr: 8592,\n uarr: 8593,\n rarr: 8594,\n darr: 8595,\n harr: 8596,\n crarr: 8629,\n lArr: 8656,\n uArr: 8657,\n rArr: 8658,\n dArr: 8659,\n hArr: 8660,\n forall: 8704,\n part: 8706,\n exist: 8707,\n empty: 8709,\n nabla: 8711,\n isin: 8712,\n notin: 8713,\n ni: 8715,\n prod: 8719,\n sum: 8721,\n minus: 8722,\n lowast: 8727,\n radic: 8730,\n prop: 8733,\n infin: 8734,\n ang: 8736,\n and: 8743,\n or: 8744,\n cap: 8745,\n cup: 8746,\n int: 8747,\n there4: 8756,\n sim: 8764,\n cong: 8773,\n asymp: 8776,\n ne: 8800,\n equiv: 8801,\n le: 8804,\n ge: 8805,\n sub: 8834,\n sup: 8835,\n nsub: 8836,\n sube: 8838,\n supe: 8839,\n oplus: 8853,\n otimes: 8855,\n perp: 8869,\n sdot: 8901,\n lceil: 8968,\n rceil: 8969,\n lfloor: 8970,\n rfloor: 8971,\n lang: 9001,\n rang: 9002,\n loz: 9674,\n spades: 9824,\n clubs: 9827,\n hearts: 9829,\n diams: 9830\n };\n var PathArguments = {\n A: 7,\n a: 7,\n C: 6,\n c: 6,\n H: 1,\n h: 1,\n L: 2,\n l: 2,\n M: 2,\n m: 2,\n Q: 4,\n q: 4,\n S: 4,\n s: 4,\n T: 2,\n t: 2,\n V: 1,\n v: 1,\n Z: 0,\n z: 0\n };\n var PathFlags = {\n A3: true,\n A4: true,\n a3: true,\n a4: true\n };\n var Properties = {\n 'color': {\n inherit: true,\n initial: undefined\n },\n 'visibility': {\n inherit: true,\n initial: 'visible',\n values: {\n 'hidden': 'hidden',\n 'collapse': 'hidden',\n 'visible': 'visible'\n }\n },\n 'fill': {\n inherit: true,\n initial: DefaultColors.black\n },\n 'stroke': {\n inherit: true,\n initial: 'none'\n },\n 'stop-color': {\n inherit: false,\n initial: DefaultColors.black\n },\n 'fill-opacity': {\n inherit: true,\n initial: 1\n },\n 'stroke-opacity': {\n inherit: true,\n initial: 1\n },\n 'stop-opacity': {\n inherit: false,\n initial: 1\n },\n 'fill-rule': {\n inherit: true,\n initial: 'nonzero',\n values: {\n 'nonzero': 'nonzero',\n 'evenodd': 'evenodd'\n }\n },\n 'clip-rule': {\n inherit: true,\n initial: 'nonzero',\n values: {\n 'nonzero': 'nonzero',\n 'evenodd': 'evenodd'\n }\n },\n 'stroke-width': {\n inherit: true,\n initial: 1\n },\n 'stroke-dasharray': {\n inherit: true,\n initial: []\n },\n 'stroke-dashoffset': {\n inherit: true,\n initial: 0\n },\n 'stroke-miterlimit': {\n inherit: true,\n initial: 4\n },\n 'stroke-linejoin': {\n inherit: true,\n initial: 'miter',\n values: {\n 'miter': 'miter',\n 'round': 'round',\n 'bevel': 'bevel'\n }\n },\n 'stroke-linecap': {\n inherit: true,\n initial: 'butt',\n values: {\n 'butt': 'butt',\n 'round': 'round',\n 'square': 'square'\n }\n },\n 'font-size': {\n inherit: true,\n initial: 16,\n values: {\n 'xx-small': 9,\n 'x-small': 10,\n 'small': 13,\n 'medium': 16,\n 'large': 18,\n 'x-large': 24,\n 'xx-large': 32\n }\n },\n 'font-family': {\n inherit: true,\n initial: 'sans-serif'\n },\n 'font-weight': {\n inherit: true,\n initial: 'normal',\n values: {\n '600': 'bold',\n '700': 'bold',\n '800': 'bold',\n '900': 'bold',\n 'bold': 'bold',\n 'bolder': 'bold',\n '500': 'normal',\n '400': 'normal',\n '300': 'normal',\n '200': 'normal',\n '100': 'normal',\n 'normal': 'normal',\n 'lighter': 'normal'\n }\n },\n 'font-style': {\n inherit: true,\n initial: 'normal',\n values: {\n 'italic': 'italic',\n 'oblique': 'italic',\n 'normal': 'normal'\n }\n },\n 'text-anchor': {\n inherit: true,\n initial: 'start',\n values: {\n 'start': 'start',\n 'middle': 'middle',\n 'end': 'end'\n }\n },\n 'direction': {\n inherit: true,\n initial: 'ltr',\n values: {\n 'ltr': 'ltr',\n 'rtl': 'rtl'\n }\n },\n 'dominant-baseline': {\n inherit: true,\n initial: 'baseline',\n values: {\n 'auto': 'baseline',\n 'baseline': 'baseline',\n 'before-edge': 'before-edge',\n 'text-before-edge': 'before-edge',\n 'middle': 'middle',\n 'central': 'central',\n 'after-edge': 'after-edge',\n 'text-after-edge': 'after-edge',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'mathematical'\n }\n },\n 'alignment-baseline': {\n inherit: false,\n initial: undefined,\n values: {\n 'auto': 'baseline',\n 'baseline': 'baseline',\n 'before-edge': 'before-edge',\n 'text-before-edge': 'before-edge',\n 'middle': 'middle',\n 'central': 'central',\n 'after-edge': 'after-edge',\n 'text-after-edge': 'after-edge',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'mathematical'\n }\n },\n 'baseline-shift': {\n inherit: true,\n initial: 'baseline',\n values: {\n 'baseline': 'baseline',\n 'sub': 'sub',\n 'super': 'super'\n }\n },\n 'word-spacing': {\n inherit: true,\n initial: 0,\n values: {\n normal: 0\n }\n },\n 'letter-spacing': {\n inherit: true,\n initial: 0,\n values: {\n normal: 0\n }\n },\n 'text-decoration': {\n inherit: false,\n initial: 'none',\n values: {\n 'none': 'none',\n 'underline': 'underline',\n 'overline': 'overline',\n 'line-through': 'line-through'\n }\n },\n 'xml:space': {\n inherit: true,\n initial: 'default',\n css: 'white-space',\n values: {\n 'preserve': 'preserve',\n 'default': 'default',\n 'pre': 'preserve',\n 'pre-line': 'preserve',\n 'pre-wrap': 'preserve',\n 'nowrap': 'default'\n }\n },\n 'marker-start': {\n inherit: true,\n initial: 'none'\n },\n 'marker-mid': {\n inherit: true,\n initial: 'none'\n },\n 'marker-end': {\n inherit: true,\n initial: 'none'\n },\n 'opacity': {\n inherit: false,\n initial: 1\n },\n 'transform': {\n inherit: false,\n initial: [1, 0, 0, 1, 0, 0]\n },\n 'display': {\n inherit: false,\n initial: 'inline',\n values: {\n 'none': 'none',\n 'inline': 'inline',\n 'block': 'inline'\n }\n },\n 'clip-path': {\n inherit: false,\n initial: 'none'\n },\n 'mask': {\n inherit: false,\n initial: 'none'\n },\n 'overflow': {\n inherit: false,\n initial: 'hidden',\n values: {\n 'hidden': 'hidden',\n 'scroll': 'hidden',\n 'visible': 'visible'\n }\n }\n };\n function docBeginGroup(bbox) {\n var group = new function PDFGroup() {}();\n group.name = 'G' + (doc._groupCount = (doc._groupCount || 0) + 1);\n group.resources = doc.ref();\n group.xobj = doc.ref({\n Type: 'XObject',\n Subtype: 'Form',\n FormType: 1,\n BBox: bbox,\n Group: {\n S: 'Transparency',\n CS: 'DeviceRGB',\n I: true,\n K: false\n },\n Resources: group.resources\n });\n group.xobj.write('');\n group.savedMatrix = doc._ctm;\n group.savedPage = doc.page;\n groupStack.push(group);\n doc._ctm = [1, 0, 0, 1, 0, 0];\n doc.page = {\n width: doc.page.width,\n height: doc.page.height,\n write: function write(data) {\n group.xobj.write(data);\n },\n fonts: {},\n xobjects: {},\n ext_gstates: {},\n patterns: {}\n };\n return group;\n }\n function docEndGroup(group) {\n if (group !== groupStack.pop()) {\n throw 'Group not matching';\n }\n if (Object.keys(doc.page.fonts).length) {\n group.resources.data.Font = doc.page.fonts;\n }\n if (Object.keys(doc.page.xobjects).length) {\n group.resources.data.XObject = doc.page.xobjects;\n }\n if (Object.keys(doc.page.ext_gstates).length) {\n group.resources.data.ExtGState = doc.page.ext_gstates;\n }\n if (Object.keys(doc.page.patterns).length) {\n group.resources.data.Pattern = doc.page.patterns;\n }\n group.resources.end();\n group.xobj.end();\n doc._ctm = group.savedMatrix;\n doc.page = group.savedPage;\n }\n function docInsertGroup(group) {\n doc.page.xobjects[group.name] = group.xobj;\n doc.addContent('/' + group.name + ' Do');\n }\n function docApplyMask(group, clip) {\n var name = 'M' + (doc._maskCount = (doc._maskCount || 0) + 1);\n var gstate = doc.ref({\n Type: 'ExtGState',\n CA: 1,\n ca: 1,\n BM: 'Normal',\n SMask: {\n S: 'Luminosity',\n G: group.xobj,\n BC: clip ? [0, 0, 0] : [1, 1, 1]\n }\n });\n gstate.end();\n doc.page.ext_gstates[name] = gstate;\n doc.addContent('/' + name + ' gs');\n }\n function docCreatePattern(group, dx, dy, matrix) {\n var pattern = new function PDFPattern() {}();\n pattern.group = group;\n pattern.dx = dx;\n pattern.dy = dy;\n pattern.matrix = matrix || [1, 0, 0, 1, 0, 0];\n return pattern;\n }\n function docUsePattern(pattern, stroke) {\n var name = 'P' + (doc._patternCount = (doc._patternCount || 0) + 1);\n var ref = doc.ref({\n Type: 'Pattern',\n PatternType: 1,\n PaintType: 1,\n TilingType: 2,\n BBox: [0, 0, pattern.dx, pattern.dy],\n XStep: pattern.dx,\n YStep: pattern.dy,\n Matrix: multiplyMatrix(doc._ctm, pattern.matrix),\n Resources: {\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\n XObject: function () {\n var temp = {};\n temp[pattern.group.name] = pattern.group.xobj;\n return temp;\n }()\n }\n });\n ref.write('/' + pattern.group.name + ' Do');\n ref.end();\n doc.page.patterns[name] = ref;\n if (stroke) {\n doc.addContent('/Pattern CS');\n doc.addContent('/' + name + ' SCN');\n } else {\n doc.addContent('/Pattern cs');\n doc.addContent('/' + name + ' scn');\n }\n }\n function docBeginText(font, size) {\n if (!doc.page.fonts[font.id]) {\n doc.page.fonts[font.id] = font.ref();\n }\n doc.addContent('BT').addContent('/' + font.id + ' ' + size + ' Tf');\n }\n function docSetTextMatrix(a, b, c, d, e, f) {\n doc.addContent(validateNumber(a) + ' ' + validateNumber(b) + ' ' + validateNumber(-c) + ' ' + validateNumber(-d) + ' ' + validateNumber(e) + ' ' + validateNumber(f) + ' Tm');\n }\n function docSetTextMode(fill, stroke) {\n var mode = fill && stroke ? 2 : stroke ? 1 : fill ? 0 : 3;\n doc.addContent(mode + ' Tr');\n }\n function docWriteGlyph(glyph) {\n doc.addContent('<' + glyph + '> Tj');\n }\n function docEndText() {\n doc.addContent('ET');\n }\n function docFillColor(color) {\n if (color[0].constructor.name === 'PDFPattern') {\n doc.fillOpacity(color[1]);\n docUsePattern(color[0], false);\n } else {\n doc.fillColor(color[0], color[1]);\n }\n }\n function docStrokeColor(color) {\n if (color[0].constructor.name === 'PDFPattern') {\n doc.strokeOpacity(color[1]);\n docUsePattern(color[0], true);\n } else {\n doc.strokeColor(color[0], color[1]);\n }\n }\n function docInsertLink(x, y, w, h, url) {\n var ref = doc.ref({\n Type: 'Annot',\n Subtype: 'Link',\n Rect: [x, y, w, h],\n Border: [0, 0, 0],\n A: {\n S: 'URI',\n URI: new String(url)\n }\n });\n ref.end();\n links.push(ref);\n }\n function parseXml(xml) {\n var SvgNode = function SvgNode(tag, type, value, error) {\n this.error = error;\n this.nodeName = tag;\n this.nodeValue = value;\n this.nodeType = type;\n this.attributes = Object.create(null);\n this.childNodes = [];\n this.parentNode = null;\n this.id = '';\n this.textContent = '';\n this.classList = [];\n };\n SvgNode.prototype.getAttribute = function (attr) {\n return this.attributes[attr] != null ? this.attributes[attr] : null;\n };\n SvgNode.prototype.getElementById = function (id) {\n var result = null;\n (function recursive(node) {\n if (result) {\n return;\n }\n if (node.nodeType === 1) {\n if (node.id === id) {\n result = node;\n }\n for (var i = 0; i < node.childNodes.length; i++) {\n recursive(node.childNodes[i]);\n }\n }\n })(this);\n return result;\n };\n SvgNode.prototype.getElementsByTagName = function (tag) {\n var result = [];\n (function recursive(node) {\n if (node.nodeType === 1) {\n if (node.nodeName === tag) {\n result.push(node);\n }\n for (var i = 0; i < node.childNodes.length; i++) {\n recursive(node.childNodes[i]);\n }\n }\n })(this);\n return result;\n };\n var parser = new StringParser(xml.trim()),\n result,\n child,\n error = false;\n var recursive = function recursive() {\n var temp, child;\n if (temp = parser.match(/^<([\\w:.-]+)\\s*/, true)) {\n // Opening tag\n var node = new SvgNode(temp[1], 1, null, error);\n while (temp = parser.match(/^([\\w:.-]+)(?:\\s*=\\s*\"([^\"]*)\"|\\s*=\\s*'([^']*)')?\\s*/, true)) {\n // Attribute\n var attr = temp[1],\n value = decodeEntities(temp[2] || temp[3] || '');\n if (!node.attributes[attr]) {\n node.attributes[attr] = value;\n if (attr === 'id') {\n node.id = value;\n }\n if (attr === 'class') {\n node.classList = value.split(' ');\n }\n } else {\n warningCallback('parseXml: duplicate attribute \"' + attr + '\"');\n error = true;\n }\n }\n if (parser.match(/^>/)) {\n // End of opening tag\n while (child = recursive()) {\n node.childNodes.push(child);\n child.parentNode = node;\n node.textContent += child.nodeType === 3 || child.nodeType === 4 ? child.nodeValue : child.textContent;\n }\n if (temp = parser.match(/^<\\/([\\w:.-]+)\\s*>/, true)) {\n // Closing tag\n if (temp[1] === node.nodeName) {\n return node;\n } else {\n warningCallback('parseXml: tag not matching, opening \"' + node.nodeName + '\" & closing \"' + temp[1] + '\"');\n error = true;\n return node;\n }\n } else {\n warningCallback('parseXml: tag not matching, opening \"' + node.nodeName + '\" & not closing');\n error = true;\n return node;\n }\n } else if (parser.match(/^\\/>/)) {\n // Self-closing tag\n return node;\n } else {\n warningCallback('parseXml: tag could not be parsed \"' + node.nodeName + '\"');\n error = true;\n }\n } else if (temp = parser.match(/^<!--[\\s\\S]*?-->/)) {\n // Comment\n return new SvgNode(null, 8, temp, error);\n } else if (temp = parser.match(/^<\\?[\\s\\S]*?\\?>/)) {\n // Processing instructions\n return new SvgNode(null, 7, temp, error);\n } else if (temp = parser.match(/^<!DOCTYPE\\s*([\\s\\S]*?)>/)) {\n // Doctype\n return new SvgNode(null, 10, temp, error);\n } else if (temp = parser.match(/^<!\\[CDATA\\[([\\s\\S]*?)\\]\\]>/, true)) {\n // Cdata node\n return new SvgNode('#cdata-section', 4, temp[1], error);\n } else if (temp = parser.match(/^([^<]+)/, true)) {\n // Text node\n return new SvgNode('#text', 3, decodeEntities(temp[1]), error);\n }\n };\n while (child = recursive()) {\n if (child.nodeType === 1 && !result) {\n result = child;\n } else if (child.nodeType === 1 || child.nodeType === 3 && child.nodeValue.trim() !== '') {\n warningCallback('parseXml: data after document end has been discarded');\n }\n }\n if (parser.matchAll()) {\n warningCallback('parseXml: parsing error');\n }\n return result;\n }\n ;\n function decodeEntities(str) {\n return str.replace(/&(?:#([0-9]+)|#[xX]([0-9A-Fa-f]+)|([0-9A-Za-z]+));/g, function (mt, m0, m1, m2) {\n if (m0) {\n return String.fromCharCode(parseInt(m0, 10));\n } else if (m1) {\n return String.fromCharCode(parseInt(m1, 16));\n } else if (m2 && Entities[m2]) {\n return String.fromCharCode(Entities[m2]);\n } else {\n return mt;\n }\n });\n }\n function parseColor(raw) {\n var temp, result;\n raw = (raw || '').trim();\n if (temp = NamedColors[raw]) {\n result = [temp.slice(), 1];\n } else if (temp = raw.match(/^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)$/i)) {\n temp[1] = parseInt(temp[1]);\n temp[2] = parseInt(temp[2]);\n temp[3] = parseInt(temp[3]);\n temp[4] = parseFloat(temp[4]);\n if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256 && temp[4] <= 1) {\n result = [temp.slice(1, 4), temp[4]];\n }\n } else if (temp = raw.match(/^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)$/i)) {\n temp[1] = parseInt(temp[1]);\n temp[2] = parseInt(temp[2]);\n temp[3] = parseInt(temp[3]);\n if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256) {\n result = [temp.slice(1, 4), 1];\n }\n } else if (temp = raw.match(/^rgb\\(\\s*([0-9.]+)%\\s*,\\s*([0-9.]+)%\\s*,\\s*([0-9.]+)%\\s*\\)$/i)) {\n temp[1] = 2.55 * parseFloat(temp[1]);\n temp[2] = 2.55 * parseFloat(temp[2]);\n temp[3] = 2.55 * parseFloat(temp[3]);\n if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256) {\n result = [temp.slice(1, 4), 1];\n }\n } else if (temp = raw.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i)) {\n result = [[parseInt(temp[1], 16), parseInt(temp[2], 16), parseInt(temp[3], 16)], 1];\n } else if (temp = raw.match(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i)) {\n result = [[0x11 * parseInt(temp[1], 16), 0x11 * parseInt(temp[2], 16), 0x11 * parseInt(temp[3], 16)], 1];\n }\n return colorCallback ? colorCallback(result, raw) : result;\n }\n function opacityToColor(color, opacity, isMask) {\n var newColor = color[0].slice(),\n newOpacity = color[1] * opacity;\n if (isMask) {\n for (var i = 0; i < color.length; i++) {\n newColor[i] *= newOpacity;\n }\n return [newColor, 1];\n } else {\n return [newColor, newOpacity];\n }\n }\n function multiplyMatrix() {\n function multiply(a, b) {\n return [a[0] * b[0] + a[2] * b[1], a[1] * b[0] + a[3] * b[1], a[0] * b[2] + a[2] * b[3], a[1] * b[2] + a[3] * b[3], a[0] * b[4] + a[2] * b[5] + a[4], a[1] * b[4] + a[3] * b[5] + a[5]];\n }\n var result = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n result = multiply(result, arguments[i]);\n }\n return result;\n }\n function transformPoint(p, m) {\n return [m[0] * p[0] + m[2] * p[1] + m[4], m[1] * p[0] + m[3] * p[1] + m[5]];\n }\n function getGlobalMatrix() {\n var ctm = doc._ctm;\n for (var i = groupStack.length - 1; i >= 0; i--) {\n ctm = multiplyMatrix(groupStack[i].savedMatrix, ctm);\n }\n return ctm;\n }\n function getPageBBox() {\n return new SvgShape().M(0, 0).L(doc.page.width, 0).L(doc.page.width, doc.page.height).L(0, doc.page.height).transform(inverseMatrix(getGlobalMatrix())).getBoundingBox();\n }\n function inverseMatrix(m) {\n var dt = m[0] * m[3] - m[1] * m[2];\n return [m[3] / dt, -m[1] / dt, -m[2] / dt, m[0] / dt, (m[2] * m[5] - m[3] * m[4]) / dt, (m[1] * m[4] - m[0] * m[5]) / dt];\n }\n function validateMatrix(m) {\n var m0 = validateNumber(m[0]),\n m1 = validateNumber(m[1]),\n m2 = validateNumber(m[2]),\n m3 = validateNumber(m[3]),\n m4 = validateNumber(m[4]),\n m5 = validateNumber(m[5]);\n if (isNotEqual(m0 * m3 - m1 * m2, 0)) {\n return [m0, m1, m2, m3, m4, m5];\n }\n }\n function solveEquation(curve) {\n var a = curve[2] || 0,\n b = curve[1] || 0,\n c = curve[0] || 0;\n if (isEqual(a, 0) && isEqual(b, 0)) {\n return [];\n } else if (isEqual(a, 0)) {\n return [-c / b];\n } else {\n var d = b * b - 4 * a * c;\n if (isNotEqual(d, 0) && d > 0) {\n return [(-b + Math.sqrt(d)) / (2 * a), (-b - Math.sqrt(d)) / (2 * a)];\n } else if (isEqual(d, 0)) {\n return [-b / (2 * a)];\n } else {\n return [];\n }\n }\n }\n function getCurveValue(t, curve) {\n return (curve[0] || 0) + (curve[1] || 0) * t + (curve[2] || 0) * t * t + (curve[3] || 0) * t * t * t;\n }\n function isEqual(number, ref) {\n return Math.abs(number - ref) < 1e-10;\n }\n function isNotEqual(number, ref) {\n return Math.abs(number - ref) >= 1e-10;\n }\n function validateNumber(n) {\n return n > -1e21 && n < 1e21 ? Math.round(n * 1e6) / 1e6 : 0;\n }\n function isArrayLike(v) {\n return typeof v === 'object' && v !== null && typeof v.length === 'number';\n }\n function parseTranform(v) {\n var parser = new StringParser((v || '').trim()),\n result = [1, 0, 0, 1, 0, 0],\n temp;\n while (temp = parser.match(/^([A-Za-z]+)\\s*[(]([^(]+)[)]/, true)) {\n var func = temp[1],\n nums = [],\n parser2 = new StringParser(temp[2].trim()),\n temp2 = void 0;\n while (temp2 = parser2.matchNumber()) {\n nums.push(Number(temp2));\n parser2.matchSeparator();\n }\n if (func === 'matrix' && nums.length === 6) {\n result = multiplyMatrix(result, [nums[0], nums[1], nums[2], nums[3], nums[4], nums[5]]);\n } else if (func === 'translate' && nums.length === 2) {\n result = multiplyMatrix(result, [1, 0, 0, 1, nums[0], nums[1]]);\n } else if (func === 'translate' && nums.length === 1) {\n result = multiplyMatrix(result, [1, 0, 0, 1, nums[0], 0]);\n } else if (func === 'scale' && nums.length === 2) {\n result = multiplyMatrix(result, [nums[0], 0, 0, nums[1], 0, 0]);\n } else if (func === 'scale' && nums.length === 1) {\n result = multiplyMatrix(result, [nums[0], 0, 0, nums[0], 0, 0]);\n } else if (func === 'rotate' && nums.length === 3) {\n var a = nums[0] * Math.PI / 180;\n result = multiplyMatrix(result, [1, 0, 0, 1, nums[1], nums[2]], [Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0], [1, 0, 0, 1, -nums[1], -nums[2]]);\n } else if (func === 'rotate' && nums.length === 1) {\n var _a = nums[0] * Math.PI / 180;\n result = multiplyMatrix(result, [Math.cos(_a), Math.sin(_a), -Math.sin(_a), Math.cos(_a), 0, 0]);\n } else if (func === 'skewX' && nums.length === 1) {\n var _a2 = nums[0] * Math.PI / 180;\n result = multiplyMatrix(result, [1, 0, Math.tan(_a2), 1, 0, 0]);\n } else if (func === 'skewY' && nums.length === 1) {\n var _a3 = nums[0] * Math.PI / 180;\n result = multiplyMatrix(result, [1, Math.tan(_a3), 0, 1, 0, 0]);\n } else {\n return;\n }\n parser.matchSeparator();\n }\n if (parser.matchAll()) {\n return;\n }\n return result;\n }\n function parseAspectRatio(aspectRatio, availWidth, availHeight, elemWidth, elemHeight, initAlign) {\n var temp = (aspectRatio || '').trim().match(/^(none)$|^x(Min|Mid|Max)Y(Min|Mid|Max)(?:\\s+(meet|slice))?$/) || [],\n ratioType = temp[1] || temp[4] || 'meet',\n xAlign = temp[2] || 'Mid',\n yAlign = temp[3] || 'Mid',\n scaleX = availWidth / elemWidth,\n scaleY = availHeight / elemHeight,\n dx = {\n 'Min': 0,\n 'Mid': 0.5,\n 'Max': 1\n }[xAlign] - (initAlign || 0),\n dy = {\n 'Min': 0,\n 'Mid': 0.5,\n 'Max': 1\n }[yAlign] - (initAlign || 0);\n if (ratioType === 'slice') {\n scaleY = scaleX = Math.max(scaleX, scaleY);\n } else if (ratioType === 'meet') {\n scaleY = scaleX = Math.min(scaleX, scaleY);\n }\n return [scaleX, 0, 0, scaleY, dx * (availWidth - elemWidth * scaleX), dy * (availHeight - elemHeight * scaleY)];\n }\n function parseStyleAttr(v) {\n var result = Object.create(null);\n v = (v || '').trim().split(/;/);\n for (var i = 0; i < v.length; i++) {\n var key = (v[i].split(':')[0] || '').trim(),\n value = (v[i].split(':')[1] || '').trim();\n if (key) {\n result[key] = value;\n }\n }\n if (result['marker']) {\n if (!result['marker-start']) {\n result['marker-start'] = result['marker'];\n }\n if (!result['marker-mid']) {\n result['marker-mid'] = result['marker'];\n }\n if (!result['marker-end']) {\n result['marker-end'] = result['marker'];\n }\n }\n if (result['font']) {\n var fontFamily = null,\n fontSize = null,\n fontStyle = \"normal\",\n fontWeight = \"normal\",\n fontVariant = \"normal\";\n var parts = result['font'].split(/\\s+/);\n for (var _i = 0; _i < parts.length; _i++) {\n switch (parts[_i]) {\n case \"normal\":\n break;\n case \"italic\":\n case \"oblique\":\n fontStyle = parts[_i];\n break;\n case \"small-caps\":\n fontVariant = parts[_i];\n break;\n case \"bold\":\n case \"bolder\":\n case \"lighter\":\n case \"100\":\n case \"200\":\n case \"300\":\n case \"400\":\n case \"500\":\n case \"600\":\n case \"700\":\n case \"800\":\n case \"900\":\n fontWeight = parts[_i];\n break;\n default:\n if (!fontSize) {\n fontSize = parts[_i].split('/')[0];\n } else {\n if (!fontFamily) {\n fontFamily = parts[_i];\n } else {\n fontFamily += ' ' + parts[_i];\n }\n }\n break;\n }\n }\n if (!result['font-style']) {\n result['font-style'] = fontStyle;\n }\n if (!result['font-variant']) {\n result['font-variant'] = fontVariant;\n }\n if (!result['font-weight']) {\n result['font-weight'] = fontWeight;\n }\n if (!result['font-size']) {\n result['font-size'] = fontSize;\n }\n if (!result['font-family']) {\n result['font-family'] = fontFamily;\n }\n }\n return result;\n }\n function parseSelector(v) {\n var parts = v.split(/(?=[.#])/g),\n ids = [],\n classes = [],\n tags = [],\n temp;\n for (var i = 0; i < parts.length; i++) {\n if (temp = parts[i].match(/^[#]([_A-Za-z0-9-]+)$/)) {\n ids.push(temp[1]);\n } else if (temp = parts[i].match(/^[.]([_A-Za-z0-9-]+)$/)) {\n classes.push(temp[1]);\n } else if (temp = parts[i].match(/^([_A-Za-z0-9-]+)$/)) {\n tags.push(temp[1]);\n } else if (parts[i] !== '*') {\n return;\n }\n }\n return {\n tags: tags,\n ids: ids,\n classes: classes,\n specificity: ids.length * 10000 + classes.length * 100 + tags.length\n };\n }\n function parseStyleSheet(v) {\n var parser = new StringParser(v.trim()),\n rules = [],\n rule;\n while (rule = parser.match(/^\\s*([^\\{\\}]*?)\\s*\\{([^\\{\\}]*?)\\}/, true)) {\n var selectors = rule[1].split(/\\s*,\\s*/g),\n css = parseStyleAttr(rule[2]);\n for (var i = 0; i < selectors.length; i++) {\n var selector = parseSelector(selectors[i]);\n if (selector) {\n rules.push({\n selector: selector,\n css: css\n });\n }\n }\n }\n return rules;\n }\n function matchesSelector(elem, selector) {\n if (elem.nodeType !== 1) {\n return false;\n }\n for (var i = 0; i < selector.tags.length; i++) {\n if (selector.tags[i] !== elem.nodeName) {\n return false;\n }\n }\n for (var _i2 = 0; _i2 < selector.ids.length; _i2++) {\n if (selector.ids[_i2] !== elem.id) {\n return false;\n }\n }\n for (var _i3 = 0; _i3 < selector.classes.length; _i3++) {\n if (elem.classList.indexOf(selector.classes[_i3]) === -1) {\n return false;\n }\n }\n return true;\n }\n function getStyle(elem) {\n var result = Object.create(null);\n var specificities = Object.create(null);\n for (var i = 0; i < styleRules.length; i++) {\n var rule = styleRules[i];\n if (matchesSelector(elem, rule.selector)) {\n for (var key in rule.css) {\n if (!(specificities[key] > rule.selector.specificity)) {\n result[key] = rule.css[key];\n specificities[key] = rule.selector.specificity;\n }\n }\n }\n }\n return result;\n }\n function combineArrays(array1, array2) {\n return array1.concat(array2.slice(array1.length));\n }\n function getAscent(font, size) {\n return Math.max(font.ascender, (font.bbox[3] || font.bbox.maxY) * (font.scale || 1)) * size / 1000;\n }\n function getDescent(font, size) {\n return Math.min(font.descender, (font.bbox[1] || font.bbox.minY) * (font.scale || 1)) * size / 1000;\n }\n function getXHeight(font, size) {\n return (font.xHeight || 0.5 * (font.ascender - font.descender)) * size / 1000;\n }\n function getBaseline(font, size, baseline, shift) {\n var dy1, dy2;\n switch (baseline) {\n case 'middle':\n dy1 = 0.5 * getXHeight(font, size);\n break;\n case 'central':\n dy1 = 0.5 * (getDescent(font, size) + getAscent(font, size));\n break;\n case 'after-edge':\n case 'text-after-edge':\n dy1 = getDescent(font, size);\n break;\n case 'alphabetic':\n case 'auto':\n case 'baseline':\n dy1 = 0;\n break;\n case 'mathematical':\n dy1 = 0.5 * getAscent(font, size);\n break;\n case 'hanging':\n dy1 = 0.8 * getAscent(font, size);\n break;\n case 'before-edge':\n case 'text-before-edge':\n dy1 = getAscent(font, size);\n break;\n default:\n dy1 = 0;\n break;\n }\n switch (shift) {\n case 'baseline':\n dy2 = 0;\n break;\n case 'super':\n dy2 = 0.6 * size;\n break;\n case 'sub':\n dy2 = -0.6 * size;\n break;\n default:\n dy2 = shift;\n break;\n }\n return dy1 - dy2;\n }\n function getTextPos(font, size, text) {\n var encoded = font.encode('' + text),\n hex = encoded[0],\n pos = encoded[1],\n data = [];\n for (var i = 0; i < hex.length; i++) {\n var unicode = font.unicode ? font.unicode[parseInt(hex[i], 16)] : [text.charCodeAt(i)];\n data.push({\n glyph: hex[i],\n unicode: unicode,\n width: pos[i].advanceWidth * size / 1000,\n xOffset: pos[i].xOffset * size / 1000,\n yOffset: pos[i].yOffset * size / 1000,\n xAdvance: pos[i].xAdvance * size / 1000,\n yAdvance: pos[i].yAdvance * size / 1000\n });\n }\n return data;\n }\n function createSVGElement(obj, inherits) {\n switch (obj.nodeName) {\n case 'use':\n return new SvgElemUse(obj, inherits);\n case 'symbol':\n return new SvgElemSymbol(obj, inherits);\n case 'g':\n return new SvgElemGroup(obj, inherits);\n case 'a':\n return new SvgElemLink(obj, inherits);\n case 'svg':\n return new SvgElemSvg(obj, inherits);\n case 'image':\n return new SVGElemImage(obj, inherits);\n case 'rect':\n return new SvgElemRect(obj, inherits);\n case 'circle':\n return new SvgElemCircle(obj, inherits);\n case 'ellipse':\n return new SvgElemEllipse(obj, inherits);\n case 'line':\n return new SvgElemLine(obj, inherits);\n case 'polyline':\n return new SvgElemPolyline(obj, inherits);\n case 'polygon':\n return new SvgElemPolygon(obj, inherits);\n case 'path':\n return new SvgElemPath(obj, inherits);\n case 'text':\n return new SvgElemText(obj, inherits);\n case 'tspan':\n return new SvgElemTspan(obj, inherits);\n case 'textPath':\n return new SvgElemTextPath(obj, inherits);\n case '#text':\n case '#cdata-section':\n return new SvgElemTextNode(obj, inherits);\n default:\n return new SvgElem(obj, inherits);\n }\n }\n var StringParser = function StringParser(str) {\n this.match = function (exp, all) {\n var temp = str.match(exp);\n if (!temp || temp.index !== 0) {\n return;\n }\n str = str.substring(temp[0].length);\n return all ? temp : temp[0];\n };\n this.matchSeparator = function () {\n return this.match(/^(?:\\s*,\\s*|\\s*|)/);\n };\n this.matchSpace = function () {\n return this.match(/^(?:\\s*)/);\n };\n this.matchLengthUnit = function () {\n return this.match(/^(?:px|pt|cm|mm|in|pc|em|ex|%|)/);\n };\n this.matchNumber = function () {\n return this.match(/^(?:[-+]?(?:[0-9]+[.][0-9]+|[0-9]+[.]|[.][0-9]+|[0-9]+)(?:[eE][-+]?[0-9]+)?)/);\n };\n this.matchAll = function () {\n return this.match(/^[\\s\\S]+/);\n };\n };\n var BezierSegment = function BezierSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n var divisions = 6 * precision;\n var equationX = [p1x, -3 * p1x + 3 * c1x, 3 * p1x - 6 * c1x + 3 * c2x, -p1x + 3 * c1x - 3 * c2x + p2x];\n var equationY = [p1y, -3 * p1y + 3 * c1y, 3 * p1y - 6 * c1y + 3 * c2y, -p1y + 3 * c1y - 3 * c2y + p2y];\n var derivativeX = [-3 * p1x + 3 * c1x, 6 * p1x - 12 * c1x + 6 * c2x, -3 * p1x + 9 * c1x - 9 * c2x + 3 * p2x];\n var derivativeY = [-3 * p1y + 3 * c1y, 6 * p1y - 12 * c1y + 6 * c2y, -3 * p1y + 9 * c1y - 9 * c2y + 3 * p2y];\n var lengthMap = [0];\n for (var i = 1; i <= divisions; i++) {\n var t = (i - 0.5) / divisions;\n var dx = getCurveValue(t, derivativeX) / divisions,\n dy = getCurveValue(t, derivativeY) / divisions,\n l = Math.sqrt(dx * dx + dy * dy);\n lengthMap[i] = lengthMap[i - 1] + l;\n }\n this.totalLength = lengthMap[divisions];\n this.startPoint = [p1x, p1y, isEqual(p1x, c1x) && isEqual(p1y, c1y) ? Math.atan2(c2y - c1y, c2x - c1x) : Math.atan2(c1y - p1y, c1x - p1x)];\n this.endPoint = [p2x, p2y, isEqual(c2x, p2x) && isEqual(c2y, p2y) ? Math.atan2(c2y - c1y, c2x - c1x) : Math.atan2(p2y - c2y, p2x - c2x)];\n this.getBoundingBox = function () {\n var temp;\n var minX = getCurveValue(0, equationX),\n minY = getCurveValue(0, equationY),\n maxX = getCurveValue(1, equationX),\n maxY = getCurveValue(1, equationY);\n if (minX > maxX) {\n temp = maxX;\n maxX = minX;\n minX = temp;\n }\n if (minY > maxY) {\n temp = maxY;\n maxY = minY;\n minY = temp;\n }\n var rootsX = solveEquation(derivativeX);\n for (var _i4 = 0; _i4 < rootsX.length; _i4++) {\n if (rootsX[_i4] >= 0 && rootsX[_i4] <= 1) {\n var _x = getCurveValue(rootsX[_i4], equationX);\n if (_x < minX) {\n minX = _x;\n }\n if (_x > maxX) {\n maxX = _x;\n }\n }\n }\n var rootsY = solveEquation(derivativeY);\n for (var _i5 = 0; _i5 < rootsY.length; _i5++) {\n if (rootsY[_i5] >= 0 && rootsY[_i5] <= 1) {\n var _y = getCurveValue(rootsY[_i5], equationY);\n if (_y < minY) {\n minY = _y;\n }\n if (_y > maxY) {\n maxY = _y;\n }\n }\n }\n return [minX, minY, maxX, maxY];\n };\n this.getPointAtLength = function (l) {\n if (isEqual(l, 0)) {\n return this.startPoint;\n }\n if (isEqual(l, this.totalLength)) {\n return this.endPoint;\n }\n if (l < 0 || l > this.totalLength) {\n return;\n }\n for (var _i6 = 1; _i6 <= divisions; _i6++) {\n var l1 = lengthMap[_i6 - 1],\n l2 = lengthMap[_i6];\n if (l1 <= l && l <= l2) {\n var _t = (_i6 - (l2 - l) / (l2 - l1)) / divisions,\n _x2 = getCurveValue(_t, equationX),\n _y2 = getCurveValue(_t, equationY),\n _dx = getCurveValue(_t, derivativeX),\n _dy = getCurveValue(_t, derivativeY);\n return [_x2, _y2, Math.atan2(_dy, _dx)];\n }\n }\n };\n };\n var LineSegment = function LineSegment(p1x, p1y, p2x, p2y) {\n this.totalLength = Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y));\n this.startPoint = [p1x, p1y, Math.atan2(p2y - p1y, p2x - p1x)];\n this.endPoint = [p2x, p2y, Math.atan2(p2y - p1y, p2x - p1x)];\n this.getBoundingBox = function () {\n return [Math.min(this.startPoint[0], this.endPoint[0]), Math.min(this.startPoint[1], this.endPoint[1]), Math.max(this.startPoint[0], this.endPoint[0]), Math.max(this.startPoint[1], this.endPoint[1])];\n };\n this.getPointAtLength = function (l) {\n if (l >= 0 && l <= this.totalLength) {\n var r = l / this.totalLength || 0,\n _x3 = this.startPoint[0] + r * (this.endPoint[0] - this.startPoint[0]),\n _y3 = this.startPoint[1] + r * (this.endPoint[1] - this.startPoint[1]);\n return [_x3, _y3, this.startPoint[2]];\n }\n };\n };\n var SvgShape = function SvgShape() {\n this.pathCommands = [];\n this.pathSegments = [];\n this.startPoint = null;\n this.endPoint = null;\n this.totalLength = 0;\n var startX = 0,\n startY = 0,\n currX = 0,\n currY = 0,\n lastCom,\n lastCtrlX,\n lastCtrlY;\n this.move = function (x, y) {\n startX = currX = x;\n startY = currY = y;\n return null;\n };\n this.line = function (x, y) {\n var segment = new LineSegment(currX, currY, x, y);\n currX = x;\n currY = y;\n return segment;\n };\n this.curve = function (c1x, c1y, c2x, c2y, x, y) {\n var segment = new BezierSegment(currX, currY, c1x, c1y, c2x, c2y, x, y);\n currX = x;\n currY = y;\n return segment;\n };\n this.close = function () {\n var segment = new LineSegment(currX, currY, startX, startY);\n currX = startX;\n currY = startY;\n return segment;\n };\n this.addCommand = function (data) {\n this.pathCommands.push(data);\n var segment = this[data[0]].apply(this, data.slice(3));\n if (segment) {\n segment.hasStart = data[1];\n segment.hasEnd = data[2];\n this.startPoint = this.startPoint || segment.startPoint;\n this.endPoint = segment.endPoint;\n this.pathSegments.push(segment);\n this.totalLength += segment.totalLength;\n }\n };\n this.M = function (x, y) {\n this.addCommand(['move', true, true, x, y]);\n lastCom = 'M';\n return this;\n };\n this.m = function (x, y) {\n return this.M(currX + x, currY + y);\n };\n this.Z = this.z = function () {\n this.addCommand(['close', true, true]);\n lastCom = 'Z';\n return this;\n };\n this.L = function (x, y) {\n this.addCommand(['line', true, true, x, y]);\n lastCom = 'L';\n return this;\n };\n this.l = function (x, y) {\n return this.L(currX + x, currY + y);\n };\n this.H = function (x) {\n return this.L(x, currY);\n };\n this.h = function (x) {\n return this.L(currX + x, currY);\n };\n this.V = function (y) {\n return this.L(currX, y);\n };\n this.v = function (y) {\n return this.L(currX, currY + y);\n };\n this.C = function (c1x, c1y, c2x, c2y, x, y) {\n this.addCommand(['curve', true, true, c1x, c1y, c2x, c2y, x, y]);\n lastCom = 'C';\n lastCtrlX = c2x;\n lastCtrlY = c2y;\n return this;\n };\n this.c = function (c1x, c1y, c2x, c2y, x, y) {\n return this.C(currX + c1x, currY + c1y, currX + c2x, currY + c2y, currX + x, currY + y);\n };\n this.S = function (c1x, c1y, x, y) {\n return this.C(currX + (lastCom === 'C' ? currX - lastCtrlX : 0), currY + (lastCom === 'C' ? currY - lastCtrlY : 0), c1x, c1y, x, y);\n };\n this.s = function (c1x, c1y, x, y) {\n return this.C(currX + (lastCom === 'C' ? currX - lastCtrlX : 0), currY + (lastCom === 'C' ? currY - lastCtrlY : 0), currX + c1x, currY + c1y, currX + x, currY + y);\n };\n this.Q = function (cx, cy, x, y) {\n var c1x = currX + 2 / 3 * (cx - currX),\n c1y = currY + 2 / 3 * (cy - currY),\n c2x = x + 2 / 3 * (cx - x),\n c2y = y + 2 / 3 * (cy - y);\n this.addCommand(['curve', true, true, c1x, c1y, c2x, c2y, x, y]);\n lastCom = 'Q';\n lastCtrlX = cx;\n lastCtrlY = cy;\n return this;\n };\n this.q = function (c1x, c1y, x, y) {\n return this.Q(currX + c1x, currY + c1y, currX + x, currY + y);\n };\n this.T = function (x, y) {\n return this.Q(currX + (lastCom === 'Q' ? currX - lastCtrlX : 0), currY + (lastCom === 'Q' ? currY - lastCtrlY : 0), x, y);\n };\n this.t = function (x, y) {\n return this.Q(currX + (lastCom === 'Q' ? currX - lastCtrlX : 0), currY + (lastCom === 'Q' ? currY - lastCtrlY : 0), currX + x, currY + y);\n };\n this.A = function (rx, ry, fi, fa, fs, x, y) {\n if (isEqual(rx, 0) || isEqual(ry, 0)) {\n this.addCommand(['line', true, true, x, y]);\n } else {\n fi = fi * (Math.PI / 180);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n fa = 1 * !!fa;\n fs = 1 * !!fs;\n var x1 = Math.cos(fi) * (currX - x) / 2 + Math.sin(fi) * (currY - y) / 2,\n y1 = Math.cos(fi) * (currY - y) / 2 - Math.sin(fi) * (currX - x) / 2,\n lambda = x1 * x1 / (rx * rx) + y1 * y1 / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var r = Math.sqrt(Math.max(0, rx * rx * ry * ry - rx * rx * y1 * y1 - ry * ry * x1 * x1) / (rx * rx * y1 * y1 + ry * ry * x1 * x1)),\n x2 = (fa === fs ? -1 : 1) * r * rx * y1 / ry,\n y2 = (fa === fs ? 1 : -1) * r * ry * x1 / rx;\n var cx = Math.cos(fi) * x2 - Math.sin(fi) * y2 + (currX + x) / 2,\n cy = Math.sin(fi) * x2 + Math.cos(fi) * y2 + (currY + y) / 2,\n th1 = Math.atan2((y1 - y2) / ry, (x1 - x2) / rx),\n th2 = Math.atan2((-y1 - y2) / ry, (-x1 - x2) / rx);\n if (fs === 0 && th2 - th1 > 0) {\n th2 -= 2 * Math.PI;\n } else if (fs === 1 && th2 - th1 < 0) {\n th2 += 2 * Math.PI;\n }\n var segms = Math.ceil(Math.abs(th2 - th1) / (Math.PI / precision));\n for (var i = 0; i < segms; i++) {\n var th3 = th1 + i * (th2 - th1) / segms,\n th4 = th1 + (i + 1) * (th2 - th1) / segms,\n t = 4 / 3 * Math.tan((th4 - th3) / 4);\n var c1x = cx + Math.cos(fi) * rx * (Math.cos(th3) - t * Math.sin(th3)) - Math.sin(fi) * ry * (Math.sin(th3) + t * Math.cos(th3)),\n c1y = cy + Math.sin(fi) * rx * (Math.cos(th3) - t * Math.sin(th3)) + Math.cos(fi) * ry * (Math.sin(th3) + t * Math.cos(th3)),\n c2x = cx + Math.cos(fi) * rx * (Math.cos(th4) + t * Math.sin(th4)) - Math.sin(fi) * ry * (Math.sin(th4) - t * Math.cos(th4)),\n c2y = cy + Math.sin(fi) * rx * (Math.cos(th4) + t * Math.sin(th4)) + Math.cos(fi) * ry * (Math.sin(th4) - t * Math.cos(th4)),\n endX = cx + Math.cos(fi) * rx * Math.cos(th4) - Math.sin(fi) * ry * Math.sin(th4),\n endY = cy + Math.sin(fi) * rx * Math.cos(th4) + Math.cos(fi) * ry * Math.sin(th4);\n this.addCommand(['curve', i === 0, i === segms - 1, c1x, c1y, c2x, c2y, endX, endY]);\n }\n }\n lastCom = 'A';\n return this;\n };\n this.a = function (rx, ry, fi, fa, fs, x, y) {\n return this.A(rx, ry, fi, fa, fs, currX + x, currY + y);\n };\n this.path = function (d) {\n var command,\n value,\n temp,\n parser = new StringParser((d || '').trim());\n while (command = parser.match(/^[astvzqmhlcASTVZQMHLC]/)) {\n parser.matchSeparator();\n var values = [];\n while (value = PathFlags[command + values.length] ? parser.match(/^[01]/) : parser.matchNumber()) {\n parser.matchSeparator();\n if (values.length === PathArguments[command]) {\n this[command].apply(this, values);\n values = [];\n if (command === 'M') {\n command = 'L';\n } else if (command === 'm') {\n command = 'l';\n }\n }\n values.push(Number(value));\n }\n if (values.length === PathArguments[command]) {\n this[command].apply(this, values);\n } else {\n warningCallback('SvgPath: command ' + command + ' with ' + values.length + ' numbers');\n return;\n }\n }\n if (temp = parser.matchAll()) {\n warningCallback('SvgPath: unexpected string ' + temp);\n }\n return this;\n };\n this.getBoundingBox = function () {\n var bbox = [Infinity, Infinity, -Infinity, -Infinity];\n function addBounds(bbox1) {\n if (bbox1[0] < bbox[0]) {\n bbox[0] = bbox1[0];\n }\n if (bbox1[2] > bbox[2]) {\n bbox[2] = bbox1[2];\n }\n if (bbox1[1] < bbox[1]) {\n bbox[1] = bbox1[1];\n }\n if (bbox1[3] > bbox[3]) {\n bbox[3] = bbox1[3];\n }\n }\n for (var i = 0; i < this.pathSegments.length; i++) {\n addBounds(this.pathSegments[i].getBoundingBox());\n }\n if (bbox[0] === Infinity) {\n bbox[0] = 0;\n }\n if (bbox[1] === Infinity) {\n bbox[1] = 0;\n }\n if (bbox[2] === -Infinity) {\n bbox[2] = 0;\n }\n if (bbox[3] === -Infinity) {\n bbox[3] = 0;\n }\n return bbox;\n };\n this.getPointAtLength = function (l) {\n if (l >= 0 && l <= this.totalLength) {\n var temp;\n for (var i = 0; i < this.pathSegments.length; i++) {\n if (temp = this.pathSegments[i].getPointAtLength(l)) {\n return temp;\n }\n l -= this.pathSegments[i].totalLength;\n }\n return this.endPoint;\n }\n };\n this.transform = function (m) {\n this.pathSegments = [];\n this.startPoint = null;\n this.endPoint = null;\n this.totalLength = 0;\n for (var i = 0; i < this.pathCommands.length; i++) {\n var data = this.pathCommands.shift();\n for (var j = 3; j < data.length; j += 2) {\n var p = transformPoint([data[j], data[j + 1]], m);\n data[j] = p[0];\n data[j + 1] = p[1];\n }\n this.addCommand(data);\n }\n return this;\n };\n this.mergeShape = function (shape) {\n for (var i = 0; i < shape.pathCommands.length; i++) {\n this.addCommand(shape.pathCommands[i].slice());\n }\n return this;\n };\n this.clone = function () {\n return new SvgShape().mergeShape(this);\n };\n this.insertInDocument = function () {\n for (var i = 0; i < this.pathCommands.length; i++) {\n var command = this.pathCommands[i][0],\n values = this.pathCommands[i].slice(3);\n switch (command) {\n case 'move':\n doc.moveTo(values[0], values[1]);\n break;\n case 'line':\n doc.lineTo(values[0], values[1]);\n break;\n case 'curve':\n doc.bezierCurveTo(values[0], values[1], values[2], values[3], values[4], values[5]);\n break;\n case 'close':\n doc.closePath();\n break;\n }\n }\n };\n this.getSubPaths = function () {\n var subPaths = [],\n shape = new SvgShape();\n for (var i = 0; i < this.pathCommands.length; i++) {\n var data = this.pathCommands[i],\n command = this.pathCommands[i][0];\n if (command === 'move' && i !== 0) {\n subPaths.push(shape);\n shape = new SvgShape();\n }\n shape.addCommand(data);\n }\n subPaths.push(shape);\n return subPaths;\n };\n this.getMarkers = function () {\n var markers = [],\n subPaths = this.getSubPaths();\n for (var i = 0; i < subPaths.length; i++) {\n var subPath = subPaths[i],\n subPathMarkers = [];\n for (var j = 0; j < subPath.pathSegments.length; j++) {\n var segment = subPath.pathSegments[j];\n if (isNotEqual(segment.totalLength, 0) || j === 0 || j === subPath.pathSegments.length - 1) {\n if (segment.hasStart) {\n var startMarker = segment.getPointAtLength(0),\n prevEndMarker = subPathMarkers.pop();\n if (prevEndMarker) {\n startMarker[2] = 0.5 * (prevEndMarker[2] + startMarker[2]);\n }\n subPathMarkers.push(startMarker);\n }\n if (segment.hasEnd) {\n var endMarker = segment.getPointAtLength(segment.totalLength);\n subPathMarkers.push(endMarker);\n }\n }\n }\n markers = markers.concat(subPathMarkers);\n }\n return markers;\n };\n };\n var SvgElem = function SvgElem(obj, inherits) {\n var styleCache = Object.create(null);\n var childrenCache = null;\n this.name = obj.nodeName;\n this.isOuterElement = obj === svg || !obj.parentNode;\n this.inherits = inherits || (!this.isOuterElement ? createSVGElement(obj.parentNode, null) : null);\n this.stack = this.inherits ? this.inherits.stack.concat(obj) : [obj];\n this.style = parseStyleAttr(typeof obj.getAttribute === 'function' && obj.getAttribute('style'));\n this.css = useCSS ? getComputedStyle(obj) : getStyle(obj);\n this.allowedChildren = [];\n this.attr = function (key) {\n if (typeof obj.getAttribute === 'function') {\n return obj.getAttribute(key);\n }\n };\n this.resolveUrl = function (value) {\n var temp = (value || '').match(/^\\s*(?:url\\(\"(.*)#(.*)\"\\)|url\\('(.*)#(.*)'\\)|url\\((.*)#(.*)\\)|(.*)#(.*))\\s*$/) || [];\n var file = temp[1] || temp[3] || temp[5] || temp[7],\n id = temp[2] || temp[4] || temp[6] || temp[8];\n if (id) {\n if (!file) {\n var svgObj = svg.getElementById(id);\n if (svgObj) {\n if (this.stack.indexOf(svgObj) === -1) {\n return svgObj;\n } else {\n warningCallback('SVGtoPDF: loop of circular references for id \"' + id + '\"');\n return;\n }\n }\n }\n if (documentCallback) {\n var svgs = documentCache[file];\n if (!svgs) {\n svgs = documentCallback(file);\n if (!isArrayLike(svgs)) {\n svgs = [svgs];\n }\n for (var i = 0; i < svgs.length; i++) {\n if (typeof svgs[i] === 'string') {\n svgs[i] = parseXml(svgs[i]);\n }\n }\n documentCache[file] = svgs;\n }\n for (var _i7 = 0; _i7 < svgs.length; _i7++) {\n var _svgObj = svgs[_i7].getElementById(id);\n if (_svgObj) {\n if (this.stack.indexOf(_svgObj) === -1) {\n return _svgObj;\n } else {\n warningCallback('SVGtoPDF: loop of circular references for id \"' + file + '#' + id + '\"');\n return;\n }\n }\n }\n }\n }\n };\n this.computeUnits = function (value, unit, percent, isFontSize) {\n if (unit === '%') {\n return parseFloat(value) / 100 * (isFontSize || percent != null ? percent : this.getViewport());\n } else if (unit === 'ex' || unit === 'em') {\n return value * {\n 'em': 1,\n 'ex': 0.5\n }[unit] * (isFontSize ? percent : this.get('font-size'));\n } else {\n return value * {\n '': 1,\n 'px': 1,\n 'pt': 96 / 72,\n 'cm': 96 / 2.54,\n 'mm': 96 / 25.4,\n 'in': 96,\n 'pc': 96 / 6\n }[unit];\n }\n };\n this.computeLength = function (value, percent, initial, isFontSize) {\n var parser = new StringParser((value || '').trim()),\n temp1,\n temp2;\n if (typeof (temp1 = parser.matchNumber()) === 'string' && typeof (temp2 = parser.matchLengthUnit()) === 'string' && !parser.matchAll()) {\n return this.computeUnits(temp1, temp2, percent, isFontSize);\n }\n return initial;\n };\n this.computeLengthList = function (value, percent, strict) {\n var parser = new StringParser((value || '').trim()),\n result = [],\n temp1,\n temp2;\n while (typeof (temp1 = parser.matchNumber()) === 'string' && typeof (temp2 = parser.matchLengthUnit()) === 'string') {\n result.push(this.computeUnits(temp1, temp2, percent));\n parser.matchSeparator();\n }\n if (strict && parser.matchAll()) {\n return;\n }\n return result;\n };\n this.getLength = function (key, percent, initial) {\n return this.computeLength(this.attr(key), percent, initial);\n };\n this.getLengthList = function (key, percent) {\n return this.computeLengthList(this.attr(key), percent);\n };\n this.getUrl = function (key) {\n return this.resolveUrl(this.attr(key));\n };\n this.getNumberList = function (key) {\n var parser = new StringParser((this.attr(key) || '').trim()),\n result = [],\n temp;\n while (temp = parser.matchNumber()) {\n result.push(Number(temp));\n parser.matchSeparator();\n }\n result.error = parser.matchAll();\n return result;\n };\n this.getViewbox = function (key, initial) {\n var viewBox = this.getNumberList(key);\n if (viewBox.length === 4 && viewBox[2] >= 0 && viewBox[3] >= 0) {\n return viewBox;\n }\n return initial;\n };\n this.getPercent = function (key, initial) {\n var value = this.attr(key);\n var parser = new StringParser((value || '').trim()),\n temp1,\n temp2;\n var number = parser.matchNumber();\n if (!number) {\n return initial;\n }\n if (parser.match('%')) {\n number *= 0.01;\n }\n if (parser.matchAll()) {\n return initial;\n }\n return Math.max(0, Math.min(1, number));\n };\n this.chooseValue = function (args) {\n for (var i = 0; i < arguments.length; i++) {\n if (arguments[i] != null && arguments[i] === arguments[i]) {\n return arguments[i];\n }\n }\n return arguments[arguments.length - 1];\n };\n this.get = function (key) {\n if (styleCache[key] !== undefined) {\n return styleCache[key];\n }\n var keyInfo = Properties[key] || {},\n value,\n result;\n for (var i = 0; i < 3; i++) {\n switch (i) {\n case 0:\n if (key !== 'transform') {\n // the CSS transform behaves strangely\n value = this.css[keyInfo.css || key];\n }\n break;\n case 1:\n value = this.style[key];\n break;\n case 2:\n value = this.attr(key);\n break;\n }\n if (value === 'inherit') {\n result = this.inherits ? this.inherits.get(key) : keyInfo.initial;\n if (result != null) {\n return styleCache[key] = result;\n }\n }\n if (keyInfo.values != null) {\n result = keyInfo.values[value];\n if (result != null) {\n return styleCache[key] = result;\n }\n }\n if (value != null) {\n var parsed = void 0;\n switch (key) {\n case 'font-size':\n result = this.computeLength(value, this.inherits ? this.inherits.get(key) : keyInfo.initial, undefined, true);\n break;\n case 'baseline-shift':\n result = this.computeLength(value, this.get('font-size'));\n break;\n case 'font-family':\n result = value || undefined;\n break;\n case 'opacity':\n case 'stroke-opacity':\n case 'fill-opacity':\n case 'stop-opacity':\n parsed = parseFloat(value);\n if (!isNaN(parsed)) {\n result = Math.max(0, Math.min(1, parsed));\n }\n break;\n case 'transform':\n result = parseTranform(value);\n break;\n case 'stroke-dasharray':\n if (value === 'none') {\n result = [];\n } else if (parsed = this.computeLengthList(value, this.getViewport(), true)) {\n var sum = 0,\n error = false;\n for (var j = 0; j < parsed.length; j++) {\n if (parsed[j] < 0) {\n error = true;\n }\n sum += parsed[j];\n }\n if (!error) {\n if (parsed.length % 2 === 1) {\n parsed = parsed.concat(parsed);\n }\n result = sum === 0 ? [] : parsed;\n }\n }\n break;\n case 'color':\n if (value === 'none' || value === 'transparent') {\n result = 'none';\n } else {\n result = parseColor(value);\n }\n break;\n case 'fill':\n case 'stroke':\n if (value === 'none' || value === 'transparent') {\n result = 'none';\n } else if (value === 'currentColor') {\n result = this.get('color');\n } else if (parsed = parseColor(value)) {\n return parsed;\n } else if (parsed = (value || '').split(' ')) {\n var object = this.resolveUrl(parsed[0]),\n fallbackColor = parseColor(parsed[1]);\n if (object == null) {\n result = fallbackColor;\n } else if (object.nodeName === 'linearGradient' || object.nodeName === 'radialGradient') {\n result = new SvgElemGradient(object, null, fallbackColor);\n } else if (object.nodeName === 'pattern') {\n result = new SvgElemPattern(object, null, fallbackColor);\n } else {\n result = fallbackColor;\n }\n }\n break;\n case 'stop-color':\n if (value === 'none' || value === 'transparent') {\n result = 'none';\n } else if (value === 'currentColor') {\n result = this.get('color');\n } else {\n result = parseColor(value);\n }\n break;\n case 'marker-start':\n case 'marker-mid':\n case 'marker-end':\n case 'clip-path':\n case 'mask':\n if (value === 'none') {\n result = 'none';\n } else {\n result = this.resolveUrl(value);\n }\n break;\n case 'stroke-width':\n parsed = this.computeLength(value, this.getViewport());\n if (parsed != null && parsed >= 0) {\n result = parsed;\n }\n break;\n case 'stroke-miterlimit':\n parsed = parseFloat(value);\n if (parsed != null && parsed >= 1) {\n result = parsed;\n }\n break;\n case 'word-spacing':\n case 'letter-spacing':\n result = this.computeLength(value, this.getViewport());\n break;\n case 'stroke-dashoffset':\n result = this.computeLength(value, this.getViewport());\n if (result != null) {\n if (result < 0) {\n // fix for crbug.com/660850\n var dasharray = this.get('stroke-dasharray');\n for (var _j = 0; _j < dasharray.length; _j++) {\n result += dasharray[_j];\n }\n }\n }\n break;\n }\n if (result != null) {\n return styleCache[key] = result;\n }\n }\n }\n return styleCache[key] = keyInfo.inherit && this.inherits ? this.inherits.get(key) : keyInfo.initial;\n };\n this.getChildren = function () {\n if (childrenCache != null) {\n return childrenCache;\n }\n var children = [];\n for (var i = 0; i < obj.childNodes.length; i++) {\n var child = obj.childNodes[i];\n if (!child.error && this.allowedChildren.indexOf(child.nodeName) !== -1) {\n children.push(createSVGElement(child, this));\n }\n }\n return childrenCache = children;\n };\n this.getParentVWidth = function () {\n return this.inherits ? this.inherits.getVWidth() : viewportWidth;\n };\n this.getParentVHeight = function () {\n return this.inherits ? this.inherits.getVHeight() : viewportHeight;\n };\n this.getParentViewport = function () {\n return Math.sqrt(0.5 * this.getParentVWidth() * this.getParentVWidth() + 0.5 * this.getParentVHeight() * this.getParentVHeight());\n };\n this.getVWidth = function () {\n return this.getParentVWidth();\n };\n this.getVHeight = function () {\n return this.getParentVHeight();\n };\n this.getViewport = function () {\n return Math.sqrt(0.5 * this.getVWidth() * this.getVWidth() + 0.5 * this.getVHeight() * this.getVHeight());\n };\n this.getBoundingBox = function () {\n var shape = this.getBoundingShape();\n return shape.getBoundingBox();\n };\n };\n var SvgElemStylable = function SvgElemStylable(obj, inherits) {\n SvgElem.call(this, obj, inherits);\n this.transform = function () {\n doc.transform.apply(doc, this.getTransformation());\n };\n this.clip = function () {\n if (this.get('clip-path') !== 'none') {\n var clipPath = new SvgElemClipPath(this.get('clip-path'), null);\n clipPath.useMask(this.getBoundingBox());\n return true;\n }\n };\n this.mask = function () {\n if (this.get('mask') !== 'none') {\n var mask = new SvgElemMask(this.get('mask'), null);\n mask.useMask(this.getBoundingBox());\n return true;\n }\n };\n this.getFill = function (isClip, isMask) {\n var opacity = this.get('opacity'),\n fill = this.get('fill'),\n fillOpacity = this.get('fill-opacity');\n if (isClip) {\n return DefaultColors.white;\n }\n if (fill !== 'none' && opacity && fillOpacity) {\n if (fill instanceof SvgElemGradient || fill instanceof SvgElemPattern) {\n return fill.getPaint(this.getBoundingBox(), fillOpacity * opacity, isClip, isMask);\n }\n return opacityToColor(fill, fillOpacity * opacity, isMask);\n }\n };\n this.getStroke = function (isClip, isMask) {\n var opacity = this.get('opacity'),\n stroke = this.get('stroke'),\n strokeOpacity = this.get('stroke-opacity');\n if (isClip || isEqual(this.get('stroke-width'), 0)) {\n return;\n }\n if (stroke !== 'none' && opacity && strokeOpacity) {\n if (stroke instanceof SvgElemGradient || stroke instanceof SvgElemPattern) {\n return stroke.getPaint(this.getBoundingBox(), strokeOpacity * opacity, isClip, isMask);\n }\n return opacityToColor(stroke, strokeOpacity * opacity, isMask);\n }\n };\n };\n var SvgElemHasChildren = function SvgElemHasChildren(obj, inherits) {\n SvgElemStylable.call(this, obj, inherits);\n this.allowedChildren = ['use', 'g', 'a', 'svg', 'image', 'rect', 'circle', 'ellipse', 'line', 'polyline', 'polygon', 'path', 'text'];\n this.getBoundingShape = function () {\n var shape = new SvgShape(),\n children = this.getChildren();\n for (var i = 0; i < children.length; i++) {\n if (children[i].get('display') !== 'none') {\n if (typeof children[i].getBoundingShape === 'function') {\n var childShape = children[i].getBoundingShape().clone();\n if (typeof children[i].getTransformation === 'function') {\n childShape.transform(children[i].getTransformation());\n }\n shape.mergeShape(childShape);\n }\n }\n }\n return shape;\n };\n this.drawChildren = function (isClip, isMask) {\n var children = this.getChildren();\n for (var i = 0; i < children.length; i++) {\n if (children[i].get('display') !== 'none') {\n if (typeof children[i].drawInDocument === 'function') {\n children[i].drawInDocument(isClip, isMask);\n }\n }\n }\n };\n };\n var SvgElemContainer = function SvgElemContainer(obj, inherits) {\n SvgElemHasChildren.call(this, obj, inherits);\n this.drawContent = function (isClip, isMask) {\n this.transform();\n var clipped = this.clip(),\n masked = this.mask(),\n group;\n if ((this.get('opacity') < 1 || clipped || masked) && !isClip) {\n group = docBeginGroup(getPageBBox());\n }\n this.drawChildren(isClip, isMask);\n if (group) {\n docEndGroup(group);\n doc.fillOpacity(this.get('opacity'));\n docInsertGroup(group);\n }\n };\n };\n var SvgElemUse = function SvgElemUse(obj, inherits) {\n SvgElemContainer.call(this, obj, inherits);\n var x = this.getLength('x', this.getVWidth(), 0),\n y = this.getLength('y', this.getVHeight(), 0),\n child = this.getUrl('href') || this.getUrl('xlink:href');\n if (child) {\n child = createSVGElement(child, this);\n }\n this.getChildren = function () {\n return child ? [child] : [];\n };\n this.drawInDocument = function (isClip, isMask) {\n doc.save();\n this.drawContent(isClip, isMask);\n doc.restore();\n };\n this.getTransformation = function () {\n return multiplyMatrix(this.get('transform'), [1, 0, 0, 1, x, y]);\n };\n };\n var SvgElemSymbol = function SvgElemSymbol(obj, inherits) {\n SvgElemContainer.call(this, obj, inherits);\n var width = this.getLength('width', this.getParentVWidth(), this.getParentVWidth()),\n height = this.getLength('height', this.getParentVHeight(), this.getParentVHeight());\n if (inherits instanceof SvgElemUse) {\n width = inherits.getLength('width', inherits.getParentVWidth(), width);\n height = inherits.getLength('height', inherits.getParentVHeight(), height);\n }\n var aspectRatio = (this.attr('preserveAspectRatio') || '').trim(),\n viewBox = this.getViewbox('viewBox', [0, 0, width, height]);\n this.getVWidth = function () {\n return viewBox[2];\n };\n this.getVHeight = function () {\n return viewBox[3];\n };\n this.drawInDocument = function (isClip, isMask) {\n doc.save();\n this.drawContent(isClip, isMask);\n doc.restore();\n };\n this.getTransformation = function () {\n return multiplyMatrix(parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3]), [1, 0, 0, 1, -viewBox[0], -viewBox[1]]);\n };\n };\n var SvgElemGroup = function SvgElemGroup(obj, inherits) {\n SvgElemContainer.call(this, obj, inherits);\n this.drawInDocument = function (isClip, isMask) {\n doc.save();\n if (this.link && !isClip && !isMask) {\n this.addLink();\n }\n this.drawContent(isClip, isMask);\n doc.restore();\n };\n this.getTransformation = function () {\n return this.get('transform');\n };\n };\n var SvgElemLink = function SvgElemLink(obj, inherits) {\n if (inherits && inherits.isText) {\n SvgElemTspan.call(this, obj, inherits);\n this.allowedChildren = ['textPath', 'tspan', '#text', '#cdata-section', 'a'];\n } else {\n SvgElemGroup.call(this, obj, inherits);\n }\n this.link = this.attr('href') || this.attr('xlink:href');\n this.addLink = function () {\n if (this.link.match(/^(?:[a-z][a-z0-9+.-]*:|\\/\\/)?/i) && this.getChildren().length) {\n var bbox = this.getBoundingShape().transform(getGlobalMatrix()).getBoundingBox();\n docInsertLink(bbox[0], bbox[1], bbox[2], bbox[3], this.link);\n }\n };\n };\n var SvgElemSvg = function SvgElemSvg(obj, inherits) {\n SvgElemContainer.call(this, obj, inherits);\n var width = this.getLength('width', this.getParentVWidth(), this.getParentVWidth()),\n height = this.getLength('height', this.getParentVHeight(), this.getParentVHeight()),\n x = this.getLength('x', this.getParentVWidth(), 0),\n y = this.getLength('y', this.getParentVHeight(), 0);\n if (inherits instanceof SvgElemUse) {\n width = inherits.getLength('width', inherits.getParentVWidth(), width);\n height = inherits.getLength('height', inherits.getParentVHeight(), height);\n }\n var aspectRatio = this.attr('preserveAspectRatio'),\n viewBox = this.getViewbox('viewBox', [0, 0, width, height]);\n if (this.isOuterElement && preserveAspectRatio) {\n x = y = 0;\n width = viewportWidth;\n height = viewportHeight;\n aspectRatio = preserveAspectRatio;\n }\n this.getVWidth = function () {\n return viewBox[2];\n };\n this.getVHeight = function () {\n return viewBox[3];\n };\n this.drawInDocument = function (isClip, isMask) {\n doc.save();\n if (this.get('overflow') === 'hidden') {\n new SvgShape().M(x, y).L(x + width, y).L(x + width, y + height).L(x, y + height).Z().transform(this.get('transform')).insertInDocument();\n doc.clip();\n }\n this.drawContent(isClip, isMask);\n doc.restore();\n };\n this.getTransformation = function () {\n return multiplyMatrix(this.get('transform'), [1, 0, 0, 1, x, y], parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3]), [1, 0, 0, 1, -viewBox[0], -viewBox[1]]);\n };\n };\n var SVGElemImage = function SVGElemImage(obj, inherits) {\n SvgElemStylable.call(this, obj, inherits);\n var link = imageCallback(this.attr('href') || this.attr('xlink:href') || ''),\n x = this.getLength('x', this.getVWidth(), 0),\n y = this.getLength('y', this.getVHeight(), 0),\n width = this.getLength('width', this.getVWidth(), 'auto'),\n height = this.getLength('height', this.getVHeight(), 'auto'),\n image;\n try {\n image = doc.openImage(link);\n } catch (e) {\n warningCallback('SVGElemImage: failed to open image \"' + link + '\" in PDFKit');\n }\n if (image) {\n if (width === 'auto' && height !== 'auto') {\n width = height * image.width / image.height;\n } else if (height === 'auto' && width !== 'auto') {\n height = width * image.height / image.width;\n } else if (width === 'auto' && height === 'auto') {\n width = image.width;\n height = image.height;\n }\n }\n if (width === 'auto' || width < 0) {\n width = 0;\n }\n if (height === 'auto' || height < 0) {\n height = 0;\n }\n this.getTransformation = function () {\n return this.get('transform');\n };\n this.getBoundingShape = function () {\n return new SvgShape().M(x, y).L(x + width, y).M(x + width, y + height).L(x, y + height);\n };\n this.drawInDocument = function (isClip, isMask) {\n if (this.get('visibility') === 'hidden' || !image) {\n return;\n }\n doc.save();\n this.transform();\n if (this.get('overflow') === 'hidden') {\n doc.rect(x, y, width, height).clip();\n }\n this.clip();\n this.mask();\n doc.translate(x, y);\n doc.transform.apply(doc, parseAspectRatio(this.attr('preserveAspectRatio'), width, height, image ? image.width : width, image ? image.height : height));\n if (!isClip) {\n doc.fillOpacity(this.get('opacity'));\n doc.image(image, 0, 0);\n } else {\n doc.rect(0, 0, image.width, image.height);\n docFillColor(DefaultColors.white).fill();\n }\n doc.restore();\n };\n };\n var SvgElemPattern = function SvgElemPattern(obj, inherits, fallback) {\n SvgElemHasChildren.call(this, obj, inherits);\n this.ref = function () {\n var ref = this.getUrl('href') || this.getUrl('xlink:href');\n if (ref && ref.nodeName === obj.nodeName) {\n return new SvgElemPattern(ref, inherits, fallback);\n }\n }.call(this);\n var _attr = this.attr;\n this.attr = function (key) {\n var attr = _attr.call(this, key);\n if (attr != null || key === 'href' || key === 'xlink:href') {\n return attr;\n }\n return this.ref ? this.ref.attr(key) : null;\n };\n var _getChildren = this.getChildren;\n this.getChildren = function () {\n var children = _getChildren.call(this);\n if (children.length > 0) {\n return children;\n }\n return this.ref ? this.ref.getChildren() : [];\n };\n this.getPaint = function (bBox, gOpacity, isClip, isMask) {\n var bBoxUnitsPattern = this.attr('patternUnits') !== 'userSpaceOnUse',\n bBoxUnitsContent = this.attr('patternContentUnits') === 'objectBoundingBox',\n x = this.getLength('x', bBoxUnitsPattern ? 1 : this.getParentVWidth(), 0),\n y = this.getLength('y', bBoxUnitsPattern ? 1 : this.getParentVHeight(), 0),\n width = this.getLength('width', bBoxUnitsPattern ? 1 : this.getParentVWidth(), 0),\n height = this.getLength('height', bBoxUnitsPattern ? 1 : this.getParentVHeight(), 0);\n if (bBoxUnitsContent && !bBoxUnitsPattern) {\n // Use the same units for pattern & pattern content\n x = (x - bBox[0]) / (bBox[2] - bBox[0]) || 0;\n y = (y - bBox[1]) / (bBox[3] - bBox[1]) || 0;\n width = width / (bBox[2] - bBox[0]) || 0;\n height = height / (bBox[3] - bBox[1]) || 0;\n } else if (!bBoxUnitsContent && bBoxUnitsPattern) {\n x = bBox[0] + x * (bBox[2] - bBox[0]);\n y = bBox[1] + y * (bBox[3] - bBox[1]);\n width = width * (bBox[2] - bBox[0]);\n height = height * (bBox[3] - bBox[1]);\n }\n var viewBox = this.getViewbox('viewBox', [0, 0, width, height]),\n aspectRatio = (this.attr('preserveAspectRatio') || '').trim(),\n aspectRatioMatrix = multiplyMatrix(parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3], 0), [1, 0, 0, 1, -viewBox[0], -viewBox[1]]),\n matrix = parseTranform(this.attr('patternTransform'));\n if (bBoxUnitsContent) {\n matrix = multiplyMatrix([bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]], matrix);\n }\n matrix = multiplyMatrix(matrix, [1, 0, 0, 1, x, y]);\n if ((matrix = validateMatrix(matrix)) && (aspectRatioMatrix = validateMatrix(aspectRatioMatrix)) && (width = validateNumber(width)) && (height = validateNumber(height))) {\n var group = docBeginGroup([0, 0, width, height]);\n doc.transform.apply(doc, aspectRatioMatrix);\n this.drawChildren(isClip, isMask);\n docEndGroup(group);\n return [docCreatePattern(group, width, height, matrix), gOpacity];\n } else {\n return fallback ? [fallback[0], fallback[1] * gOpacity] : undefined;\n }\n };\n this.getVWidth = function () {\n var bBoxUnitsPattern = this.attr('patternUnits') !== 'userSpaceOnUse',\n width = this.getLength('width', bBoxUnitsPattern ? 1 : this.getParentVWidth(), 0);\n return this.getViewbox('viewBox', [0, 0, width, 0])[2];\n };\n this.getVHeight = function () {\n var bBoxUnitsPattern = this.attr('patternUnits') !== 'userSpaceOnUse',\n height = this.getLength('height', bBoxUnitsPattern ? 1 : this.getParentVHeight(), 0);\n return this.getViewbox('viewBox', [0, 0, 0, height])[3];\n };\n };\n var SvgElemGradient = function SvgElemGradient(obj, inherits, fallback) {\n SvgElem.call(this, obj, inherits);\n this.allowedChildren = ['stop'];\n this.ref = function () {\n var ref = this.getUrl('href') || this.getUrl('xlink:href');\n if (ref && ref.nodeName === obj.nodeName) {\n return new SvgElemGradient(ref, inherits, fallback);\n }\n }.call(this);\n var _attr = this.attr;\n this.attr = function (key) {\n var attr = _attr.call(this, key);\n if (attr != null || key === 'href' || key === 'xlink:href') {\n return attr;\n }\n return this.ref ? this.ref.attr(key) : null;\n };\n var _getChildren = this.getChildren;\n this.getChildren = function () {\n var children = _getChildren.call(this);\n if (children.length > 0) {\n return children;\n }\n return this.ref ? this.ref.getChildren() : [];\n };\n this.getPaint = function (bBox, gOpacity, isClip, isMask) {\n var children = this.getChildren();\n if (children.length === 0) {\n return;\n }\n if (children.length === 1) {\n var child = children[0],\n stopColor = child.get('stop-color');\n if (stopColor === 'none') {\n return;\n }\n return opacityToColor(stopColor, child.get('stop-opacity') * gOpacity, isMask);\n }\n var bBoxUnits = this.attr('gradientUnits') !== 'userSpaceOnUse',\n matrix = parseTranform(this.attr('gradientTransform')),\n spread = this.attr('spreadMethod'),\n grad,\n x1,\n x2,\n y1,\n y2,\n r2,\n nAfter = 0,\n nBefore = 0,\n nTotal = 1;\n if (bBoxUnits) {\n matrix = multiplyMatrix([bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]], matrix);\n }\n if (matrix = validateMatrix(matrix)) {\n if (this.name === 'linearGradient') {\n x1 = this.getLength('x1', bBoxUnits ? 1 : this.getVWidth(), 0);\n x2 = this.getLength('x2', bBoxUnits ? 1 : this.getVWidth(), bBoxUnits ? 1 : this.getVWidth());\n y1 = this.getLength('y1', bBoxUnits ? 1 : this.getVHeight(), 0);\n y2 = this.getLength('y2', bBoxUnits ? 1 : this.getVHeight(), 0);\n } else {\n x2 = this.getLength('cx', bBoxUnits ? 1 : this.getVWidth(), bBoxUnits ? 0.5 : 0.5 * this.getVWidth());\n y2 = this.getLength('cy', bBoxUnits ? 1 : this.getVHeight(), bBoxUnits ? 0.5 : 0.5 * this.getVHeight());\n r2 = this.getLength('r', bBoxUnits ? 1 : this.getViewport(), bBoxUnits ? 0.5 : 0.5 * this.getViewport());\n x1 = this.getLength('fx', bBoxUnits ? 1 : this.getVWidth(), x2);\n y1 = this.getLength('fy', bBoxUnits ? 1 : this.getVHeight(), y2);\n if (r2 < 0) {\n warningCallback('SvgElemGradient: negative r value');\n }\n var d = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)),\n multiplier = 1;\n if (d > r2) {\n // according to specification\n multiplier = r2 / d;\n x1 = x2 + (x1 - x2) * multiplier;\n y1 = y2 + (y1 - y2) * multiplier;\n }\n r2 = Math.max(r2, d * multiplier * (1 + 1e-6)); // fix for edge-case gradients see issue #84\n }\n if (spread === 'reflect' || spread === 'repeat') {\n var inv = inverseMatrix(matrix),\n corner1 = transformPoint([bBox[0], bBox[1]], inv),\n corner2 = transformPoint([bBox[2], bBox[1]], inv),\n corner3 = transformPoint([bBox[2], bBox[3]], inv),\n corner4 = transformPoint([bBox[0], bBox[3]], inv);\n if (this.name === 'linearGradient') {\n // See file 'gradient-repeat-maths.png'\n nAfter = Math.max((corner1[0] - x2) * (x2 - x1) + (corner1[1] - y2) * (y2 - y1), (corner2[0] - x2) * (x2 - x1) + (corner2[1] - y2) * (y2 - y1), (corner3[0] - x2) * (x2 - x1) + (corner3[1] - y2) * (y2 - y1), (corner4[0] - x2) * (x2 - x1) + (corner4[1] - y2) * (y2 - y1)) / (Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n nBefore = Math.max((corner1[0] - x1) * (x1 - x2) + (corner1[1] - y1) * (y1 - y2), (corner2[0] - x1) * (x1 - x2) + (corner2[1] - y1) * (y1 - y2), (corner3[0] - x1) * (x1 - x2) + (corner3[1] - y1) * (y1 - y2), (corner4[0] - x1) * (x1 - x2) + (corner4[1] - y1) * (y1 - y2)) / (Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n } else {\n nAfter = Math.sqrt(Math.max(Math.pow(corner1[0] - x2, 2) + Math.pow(corner1[1] - y2, 2), Math.pow(corner2[0] - x2, 2) + Math.pow(corner2[1] - y2, 2), Math.pow(corner3[0] - x2, 2) + Math.pow(corner3[1] - y2, 2), Math.pow(corner4[0] - x2, 2) + Math.pow(corner4[1] - y2, 2))) / r2 - 1;\n }\n nAfter = Math.ceil(nAfter + 0.5); // Add a little more because the stroke can extend outside of the bounding box\n nBefore = Math.ceil(nBefore + 0.5);\n nTotal = nBefore + 1 + nAfter; // How many times the gradient needs to be repeated to fill the object bounding box\n }\n if (this.name === 'linearGradient') {\n grad = doc.linearGradient(x1 - nBefore * (x2 - x1), y1 - nBefore * (y2 - y1), x2 + nAfter * (x2 - x1), y2 + nAfter * (y2 - y1));\n } else {\n grad = doc.radialGradient(x1, y1, 0, x2, y2, r2 + nAfter * r2);\n }\n for (var n = 0; n < nTotal; n++) {\n var offset = 0,\n inOrder = spread !== 'reflect' || (n - nBefore) % 2 === 0;\n for (var i = 0; i < children.length; i++) {\n var _child = children[inOrder ? i : children.length - 1 - i],\n _stopColor = _child.get('stop-color');\n if (_stopColor === 'none') {\n _stopColor = DefaultColors.transparent;\n }\n _stopColor = opacityToColor(_stopColor, _child.get('stop-opacity') * gOpacity, isMask);\n offset = Math.max(offset, inOrder ? _child.getPercent('offset', 0) : 1 - _child.getPercent('offset', 0));\n if (i === 0 && _stopColor[0].length === 4) {\n grad._colorSpace = 'DeviceCMYK';\n } // Fix until PR #763 is merged into PDFKit\n if (i === 0 && offset > 0) {\n grad.stop((n + 0) / nTotal, _stopColor[0], _stopColor[1]);\n }\n grad.stop((n + offset) / (nAfter + nBefore + 1), _stopColor[0], _stopColor[1]);\n if (i === children.length - 1 && offset < 1) {\n grad.stop((n + 1) / nTotal, _stopColor[0], _stopColor[1]);\n }\n }\n }\n grad.setTransform.apply(grad, matrix);\n return [grad, 1];\n } else {\n return fallback ? [fallback[0], fallback[1] * gOpacity] : undefined;\n }\n };\n };\n var SvgElemBasicShape = function SvgElemBasicShape(obj, inherits) {\n SvgElemStylable.call(this, obj, inherits);\n this.dashScale = 1;\n this.getBoundingShape = function () {\n return this.shape;\n };\n this.getTransformation = function () {\n return this.get('transform');\n };\n this.drawInDocument = function (isClip, isMask) {\n if (this.get('visibility') === 'hidden' || !this.shape) {\n return;\n }\n doc.save();\n this.transform();\n this.clip();\n if (!isClip) {\n var masked = this.mask(),\n group;\n if (masked) {\n group = docBeginGroup(getPageBBox());\n }\n var subPaths = this.shape.getSubPaths(),\n fill = this.getFill(isClip, isMask),\n stroke = this.getStroke(isClip, isMask),\n lineWidth = this.get('stroke-width'),\n lineCap = this.get('stroke-linecap');\n if (fill || stroke) {\n if (fill) {\n docFillColor(fill);\n }\n if (stroke) {\n for (var j = 0; j < subPaths.length; j++) {\n if (isEqual(subPaths[j].totalLength, 0)) {\n if ((lineCap === 'square' || lineCap === 'round') && lineWidth > 0) {\n if (subPaths[j].startPoint && subPaths[j].startPoint.length > 1) {\n var _x4 = subPaths[j].startPoint[0],\n _y4 = subPaths[j].startPoint[1];\n docFillColor(stroke);\n if (lineCap === 'square') {\n doc.rect(_x4 - 0.5 * lineWidth, _y4 - 0.5 * lineWidth, lineWidth, lineWidth);\n } else if (lineCap === 'round') {\n doc.circle(_x4, _y4, 0.5 * lineWidth);\n }\n doc.fill();\n }\n }\n }\n }\n var dashArray = this.get('stroke-dasharray'),\n dashOffset = this.get('stroke-dashoffset');\n if (isNotEqual(this.dashScale, 1)) {\n for (var _j2 = 0; _j2 < dashArray.length; _j2++) {\n dashArray[_j2] *= this.dashScale;\n }\n dashOffset *= this.dashScale;\n }\n docStrokeColor(stroke);\n doc.lineWidth(lineWidth).miterLimit(this.get('stroke-miterlimit')).lineJoin(this.get('stroke-linejoin')).lineCap(lineCap).dash(dashArray, {\n phase: dashOffset\n });\n }\n for (var _j3 = 0; _j3 < subPaths.length; _j3++) {\n if (subPaths[_j3].totalLength > 0) {\n subPaths[_j3].insertInDocument();\n }\n }\n if (fill && stroke) {\n doc.fillAndStroke(this.get('fill-rule'));\n } else if (fill) {\n doc.fill(this.get('fill-rule'));\n } else if (stroke) {\n doc.stroke();\n }\n }\n var markerStart = this.get('marker-start'),\n markerMid = this.get('marker-mid'),\n markerEnd = this.get('marker-end');\n if (markerStart !== 'none' || markerMid !== 'none' || markerEnd !== 'none') {\n var markersPos = this.shape.getMarkers();\n if (markerStart !== 'none') {\n var marker = new SvgElemMarker(markerStart, null);\n marker.drawMarker(false, isMask, markersPos[0], lineWidth);\n }\n if (markerMid !== 'none') {\n for (var i = 1; i < markersPos.length - 1; i++) {\n var _marker = new SvgElemMarker(markerMid, null);\n _marker.drawMarker(false, isMask, markersPos[i], lineWidth);\n }\n }\n if (markerEnd !== 'none') {\n var _marker2 = new SvgElemMarker(markerEnd, null);\n _marker2.drawMarker(false, isMask, markersPos[markersPos.length - 1], lineWidth);\n }\n }\n if (group) {\n docEndGroup(group);\n docInsertGroup(group);\n }\n } else {\n this.shape.insertInDocument();\n docFillColor(DefaultColors.white);\n doc.fill(this.get('clip-rule'));\n }\n doc.restore();\n };\n };\n var SvgElemRect = function SvgElemRect(obj, inherits) {\n SvgElemBasicShape.call(this, obj, inherits);\n var x = this.getLength('x', this.getVWidth(), 0),\n y = this.getLength('y', this.getVHeight(), 0),\n w = this.getLength('width', this.getVWidth(), 0),\n h = this.getLength('height', this.getVHeight(), 0),\n rx = this.getLength('rx', this.getVWidth()),\n ry = this.getLength('ry', this.getVHeight());\n if (rx === undefined && ry === undefined) {\n rx = ry = 0;\n } else if (rx === undefined && ry !== undefined) {\n rx = ry;\n } else if (rx !== undefined && ry === undefined) {\n ry = rx;\n }\n if (w > 0 && h > 0) {\n if (rx && ry) {\n rx = Math.min(rx, 0.5 * w);\n ry = Math.min(ry, 0.5 * h);\n this.shape = new SvgShape().M(x + rx, y).L(x + w - rx, y).A(rx, ry, 0, 0, 1, x + w, y + ry).L(x + w, y + h - ry).A(rx, ry, 0, 0, 1, x + w - rx, y + h).L(x + rx, y + h).A(rx, ry, 0, 0, 1, x, y + h - ry).L(x, y + ry).A(rx, ry, 0, 0, 1, x + rx, y).Z();\n } else {\n this.shape = new SvgShape().M(x, y).L(x + w, y).L(x + w, y + h).L(x, y + h).Z();\n }\n } else {\n this.shape = new SvgShape();\n }\n };\n var SvgElemCircle = function SvgElemCircle(obj, inherits) {\n SvgElemBasicShape.call(this, obj, inherits);\n var cx = this.getLength('cx', this.getVWidth(), 0),\n cy = this.getLength('cy', this.getVHeight(), 0),\n r = this.getLength('r', this.getViewport(), 0);\n if (r > 0) {\n this.shape = new SvgShape().M(cx + r, cy).A(r, r, 0, 0, 1, cx - r, cy).A(r, r, 0, 0, 1, cx + r, cy).Z();\n } else {\n this.shape = new SvgShape();\n }\n };\n var SvgElemEllipse = function SvgElemEllipse(obj, inherits) {\n SvgElemBasicShape.call(this, obj, inherits);\n var cx = this.getLength('cx', this.getVWidth(), 0),\n cy = this.getLength('cy', this.getVHeight(), 0),\n rx = this.getLength('rx', this.getVWidth(), 0),\n ry = this.getLength('ry', this.getVHeight(), 0);\n if (rx > 0 && ry > 0) {\n this.shape = new SvgShape().M(cx + rx, cy).A(rx, ry, 0, 0, 1, cx - rx, cy).A(rx, ry, 0, 0, 1, cx + rx, cy).Z();\n } else {\n this.shape = new SvgShape();\n }\n };\n var SvgElemLine = function SvgElemLine(obj, inherits) {\n SvgElemBasicShape.call(this, obj, inherits);\n var x1 = this.getLength('x1', this.getVWidth(), 0),\n y1 = this.getLength('y1', this.getVHeight(), 0),\n x2 = this.getLength('x2', this.getVWidth(), 0),\n y2 = this.getLength('y2', this.getVHeight(), 0);\n this.shape = new SvgShape().M(x1, y1).L(x2, y2);\n };\n var SvgElemPolyline = function SvgElemPolyline(obj, inherits) {\n SvgElemBasicShape.call(this, obj, inherits);\n var points = this.getNumberList('points');\n this.shape = new SvgShape();\n for (var i = 0; i < points.length - 1; i += 2) {\n if (i === 0) {\n this.shape.M(points[i], points[i + 1]);\n } else {\n this.shape.L(points[i], points[i + 1]);\n }\n }\n if (points.error) {\n warningCallback('SvgElemPolygon: unexpected string ' + points.error);\n }\n if (points.length % 2 === 1) {\n warningCallback('SvgElemPolyline: uneven number of coordinates');\n }\n };\n var SvgElemPolygon = function SvgElemPolygon(obj, inherits) {\n SvgElemBasicShape.call(this, obj, inherits);\n var points = this.getNumberList('points');\n this.shape = new SvgShape();\n for (var i = 0; i < points.length - 1; i += 2) {\n if (i === 0) {\n this.shape.M(points[i], points[i + 1]);\n } else {\n this.shape.L(points[i], points[i + 1]);\n }\n }\n this.shape.Z();\n if (points.error) {\n warningCallback('SvgElemPolygon: unexpected string ' + points.error);\n }\n if (points.length % 2 === 1) {\n warningCallback('SvgElemPolygon: uneven number of coordinates');\n }\n };\n var SvgElemPath = function SvgElemPath(obj, inherits) {\n SvgElemBasicShape.call(this, obj, inherits);\n this.shape = new SvgShape().path(this.attr('d'));\n var pathLength = this.getLength('pathLength', this.getViewport());\n this.pathLength = pathLength > 0 ? pathLength : undefined;\n this.dashScale = this.pathLength !== undefined ? this.shape.totalLength / this.pathLength : 1;\n };\n var SvgElemMarker = function SvgElemMarker(obj, inherits) {\n SvgElemHasChildren.call(this, obj, inherits);\n var width = this.getLength('markerWidth', this.getParentVWidth(), 3),\n height = this.getLength('markerHeight', this.getParentVHeight(), 3),\n viewBox = this.getViewbox('viewBox', [0, 0, width, height]);\n this.getVWidth = function () {\n return viewBox[2];\n };\n this.getVHeight = function () {\n return viewBox[3];\n };\n this.drawMarker = function (isClip, isMask, posArray, strokeWidth) {\n doc.save();\n var orient = this.attr('orient'),\n units = this.attr('markerUnits'),\n rotate = orient === 'auto' ? posArray[2] : (parseFloat(orient) || 0) * Math.PI / 180,\n scale = units === 'userSpaceOnUse' ? 1 : strokeWidth;\n doc.transform(Math.cos(rotate) * scale, Math.sin(rotate) * scale, -Math.sin(rotate) * scale, Math.cos(rotate) * scale, posArray[0], posArray[1]);\n var refX = this.getLength('refX', this.getVWidth(), 0),\n refY = this.getLength('refY', this.getVHeight(), 0),\n aspectRatioMatrix = parseAspectRatio(this.attr('preserveAspectRatio'), width, height, viewBox[2], viewBox[3], 0.5);\n if (this.get('overflow') === 'hidden') {\n doc.rect(aspectRatioMatrix[0] * (viewBox[0] + viewBox[2] / 2 - refX) - width / 2, aspectRatioMatrix[3] * (viewBox[1] + viewBox[3] / 2 - refY) - height / 2, width, height).clip();\n }\n doc.transform.apply(doc, aspectRatioMatrix);\n doc.translate(-refX, -refY);\n var group;\n if (this.get('opacity') < 1 && !isClip) {\n group = docBeginGroup(getPageBBox());\n }\n this.drawChildren(isClip, isMask);\n if (group) {\n docEndGroup(group);\n doc.fillOpacity(this.get('opacity'));\n docInsertGroup(group);\n }\n doc.restore();\n };\n };\n var SvgElemClipPath = function SvgElemClipPath(obj, inherits) {\n SvgElemHasChildren.call(this, obj, inherits);\n this.useMask = function (bBox) {\n var group = docBeginGroup(getPageBBox());\n doc.save();\n if (this.attr('clipPathUnits') === 'objectBoundingBox') {\n doc.transform(bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]);\n }\n this.clip();\n this.drawChildren(true, false);\n doc.restore();\n docEndGroup(group);\n docApplyMask(group, true);\n };\n };\n var SvgElemMask = function SvgElemMask(obj, inherits) {\n SvgElemHasChildren.call(this, obj, inherits);\n this.useMask = function (bBox) {\n var group = docBeginGroup(getPageBBox());\n doc.save();\n var x, y, w, h;\n if (this.attr('maskUnits') === 'userSpaceOnUse') {\n x = this.getLength('x', this.getVWidth(), -0.1 * (bBox[2] - bBox[0]) + bBox[0]);\n y = this.getLength('y', this.getVHeight(), -0.1 * (bBox[3] - bBox[1]) + bBox[1]);\n w = this.getLength('width', this.getVWidth(), 1.2 * (bBox[2] - bBox[0]));\n h = this.getLength('height', this.getVHeight(), 1.2 * (bBox[3] - bBox[1]));\n } else {\n x = this.getLength('x', this.getVWidth(), -0.1) * (bBox[2] - bBox[0]) + bBox[0];\n y = this.getLength('y', this.getVHeight(), -0.1) * (bBox[3] - bBox[1]) + bBox[1];\n w = this.getLength('width', this.getVWidth(), 1.2) * (bBox[2] - bBox[0]);\n h = this.getLength('height', this.getVHeight(), 1.2) * (bBox[3] - bBox[1]);\n }\n doc.rect(x, y, w, h).clip();\n if (this.attr('maskContentUnits') === 'objectBoundingBox') {\n doc.transform(bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]);\n }\n this.clip();\n this.drawChildren(false, true);\n doc.restore();\n docEndGroup(group);\n docApplyMask(group, true);\n };\n };\n var SvgElemTextContainer = function SvgElemTextContainer(obj, inherits) {\n SvgElemStylable.call(this, obj, inherits);\n this.allowedChildren = ['tspan', '#text', '#cdata-section', 'a'];\n this.isText = true;\n this.getBoundingShape = function () {\n var shape = new SvgShape();\n for (var i = 0; i < this._pos.length; i++) {\n var pos = this._pos[i];\n if (!pos.hidden) {\n var dx0 = pos.ascent * Math.sin(pos.rotate),\n dy0 = -pos.ascent * Math.cos(pos.rotate),\n dx1 = pos.descent * Math.sin(pos.rotate),\n dy1 = -pos.descent * Math.cos(pos.rotate),\n dx2 = pos.width * Math.cos(pos.rotate),\n dy2 = pos.width * Math.sin(pos.rotate);\n shape.M(pos.x + dx0, pos.y + dy0).L(pos.x + dx0 + dx2, pos.y + dy0 + dy2).M(pos.x + dx1 + dx2, pos.y + dy1 + dy2).L(pos.x + dx1, pos.y + dy1);\n }\n }\n return shape;\n };\n this.drawTextInDocument = function (isClip, isMask) {\n if (this.link && !isClip && !isMask) {\n this.addLink();\n }\n if (this.get('text-decoration') === 'underline') {\n this.decorate(0.05 * this._font.size, -0.075 * this._font.size, isClip, isMask);\n }\n if (this.get('text-decoration') === 'overline') {\n this.decorate(0.05 * this._font.size, getAscent(this._font.font, this._font.size) + 0.075 * this._font.size, isClip, isMask);\n }\n var fill = this.getFill(isClip, isMask),\n stroke = this.getStroke(isClip, isMask),\n strokeWidth = this.get('stroke-width');\n if (this._font.fauxBold) {\n if (!stroke) {\n stroke = fill;\n strokeWidth = this._font.size * 0.03;\n } else {\n strokeWidth += this._font.size * 0.03;\n }\n }\n var children = this.getChildren();\n for (var i = 0; i < children.length; i++) {\n var childElem = children[i];\n switch (childElem.name) {\n case 'tspan':\n case 'textPath':\n case 'a':\n if (childElem.get('display') !== 'none') {\n childElem.drawTextInDocument(isClip, isMask);\n }\n break;\n case '#text':\n case '#cdata-section':\n if (this.get('visibility') === 'hidden') {\n continue;\n }\n if (fill || stroke || isClip) {\n if (fill) {\n docFillColor(fill);\n }\n if (stroke && strokeWidth) {\n docStrokeColor(stroke);\n doc.lineWidth(strokeWidth).miterLimit(this.get('stroke-miterlimit')).lineJoin(this.get('stroke-linejoin')).lineCap(this.get('stroke-linecap')).dash(this.get('stroke-dasharray'), {\n phase: this.get('stroke-dashoffset')\n });\n }\n docBeginText(this._font.font, this._font.size);\n docSetTextMode(!!fill, !!stroke);\n for (var j = 0, pos = childElem._pos; j < pos.length; j++) {\n if (!pos[j].hidden && isNotEqual(pos[j].width, 0)) {\n var cos = Math.cos(pos[j].rotate),\n sin = Math.sin(pos[j].rotate),\n skew = this._font.fauxItalic ? -0.25 : 0;\n docSetTextMatrix(cos * pos[j].scale, sin * pos[j].scale, cos * skew - sin, sin * skew + cos, pos[j].x, pos[j].y);\n docWriteGlyph(pos[j].glyph);\n }\n }\n docEndText();\n }\n break;\n }\n }\n if (this.get('text-decoration') === 'line-through') {\n this.decorate(0.05 * this._font.size, 0.5 * (getAscent(this._font.font, this._font.size) + getDescent(this._font.font, this._font.size)), isClip, isMask);\n }\n };\n this.decorate = function (lineWidth, linePosition, isClip, isMask) {\n var fill = this.getFill(isClip, isMask),\n stroke = this.getStroke(isClip, isMask);\n if (fill) {\n docFillColor(fill);\n }\n if (stroke) {\n docStrokeColor(stroke);\n doc.lineWidth(this.get('stroke-width')).miterLimit(this.get('stroke-miterlimit')).lineJoin(this.get('stroke-linejoin')).lineCap(this.get('stroke-linecap')).dash(this.get('stroke-dasharray'), {\n phase: this.get('stroke-dashoffset')\n });\n }\n for (var j = 0, pos = this._pos; j < pos.length; j++) {\n if (!pos[j].hidden && isNotEqual(pos[j].width, 0)) {\n var dx0 = (linePosition + lineWidth / 2) * Math.sin(pos[j].rotate),\n dy0 = -(linePosition + lineWidth / 2) * Math.cos(pos[j].rotate),\n dx1 = (linePosition - lineWidth / 2) * Math.sin(pos[j].rotate),\n dy1 = -(linePosition - lineWidth / 2) * Math.cos(pos[j].rotate),\n dx2 = pos[j].width * Math.cos(pos[j].rotate),\n dy2 = pos[j].width * Math.sin(pos[j].rotate);\n new SvgShape().M(pos[j].x + dx0, pos[j].y + dy0).L(pos[j].x + dx0 + dx2, pos[j].y + dy0 + dy2).L(pos[j].x + dx1 + dx2, pos[j].y + dy1 + dy2).L(pos[j].x + dx1, pos[j].y + dy1).Z().insertInDocument();\n if (fill && stroke) {\n doc.fillAndStroke();\n } else if (fill) {\n doc.fill();\n } else if (stroke) {\n doc.stroke();\n }\n }\n }\n };\n };\n var SvgElemTextNode = function SvgElemTextNode(obj, inherits) {\n this.name = obj.nodeName;\n this.textContent = obj.nodeValue;\n };\n var SvgElemTspan = function SvgElemTspan(obj, inherits) {\n SvgElemTextContainer.call(this, obj, inherits);\n };\n var SvgElemTextPath = function SvgElemTextPath(obj, inherits) {\n SvgElemTextContainer.call(this, obj, inherits);\n var pathObject, pathLength, temp;\n if ((temp = this.attr('path')) && temp.trim() !== '') {\n var _pathLength = this.getLength('pathLength', this.getViewport());\n this.pathObject = new SvgShape().path(temp);\n this.pathLength = _pathLength > 0 ? _pathLength : this.pathObject.totalLength;\n this.pathScale = this.pathObject.totalLength / this.pathLength;\n } else if ((temp = this.getUrl('href') || this.getUrl('xlink:href')) && temp.nodeName === 'path') {\n var pathElem = new SvgElemPath(temp, this);\n this.pathObject = pathElem.shape.clone().transform(pathElem.get('transform'));\n this.pathLength = this.chooseValue(pathElem.pathLength, this.pathObject.totalLength);\n this.pathScale = this.pathObject.totalLength / this.pathLength;\n }\n };\n var SvgElemText = function SvgElemText(obj, inherits) {\n SvgElemTextContainer.call(this, obj, inherits);\n this.allowedChildren = ['textPath', 'tspan', '#text', '#cdata-section', 'a'];\n (function (textParentElem) {\n var processedText = '',\n remainingText = obj.textContent,\n textPaths = [],\n currentChunk = [],\n currentAnchor,\n currentDirection,\n currentX = 0,\n currentY = 0;\n function doAnchoring() {\n if (currentChunk.length) {\n var last = currentChunk[currentChunk.length - 1];\n var first = currentChunk[0];\n var width = last.x + last.width - first.x;\n var anchordx = {\n 'startltr': 0,\n 'middleltr': 0.5,\n 'endltr': 1,\n 'startrtl': 1,\n 'middlertl': 0.5,\n 'endrtl': 0\n }[currentAnchor + currentDirection] * width || 0;\n for (var i = 0; i < currentChunk.length; i++) {\n currentChunk[i].x -= anchordx;\n }\n }\n currentChunk = [];\n }\n function adjustLength(pos, length, spacingAndGlyphs) {\n var firstChar = pos[0],\n lastChar = pos[pos.length - 1],\n startX = firstChar.x,\n endX = lastChar.x + lastChar.width;\n if (spacingAndGlyphs) {\n var textScale = length / (endX - startX);\n if (textScale > 0 && textScale < Infinity) {\n for (var j = 0; j < pos.length; j++) {\n pos[j].x = startX + textScale * (pos[j].x - startX);\n pos[j].scale *= textScale;\n pos[j].width *= textScale;\n }\n }\n } else {\n if (pos.length >= 2) {\n var spaceDiff = (length - (endX - startX)) / (pos.length - 1);\n for (var _j4 = 0; _j4 < pos.length; _j4++) {\n pos[_j4].x += _j4 * spaceDiff;\n }\n }\n }\n currentX += length - (endX - startX);\n }\n function recursive(currentElem, parentElem) {\n currentElem._x = combineArrays(currentElem.getLengthList('x', currentElem.getVWidth()), parentElem ? parentElem._x.slice(parentElem._pos.length) : []);\n currentElem._y = combineArrays(currentElem.getLengthList('y', currentElem.getVHeight()), parentElem ? parentElem._y.slice(parentElem._pos.length) : []);\n currentElem._dx = combineArrays(currentElem.getLengthList('dx', currentElem.getVWidth()), parentElem ? parentElem._dx.slice(parentElem._pos.length) : []);\n currentElem._dy = combineArrays(currentElem.getLengthList('dy', currentElem.getVHeight()), parentElem ? parentElem._dy.slice(parentElem._pos.length) : []);\n currentElem._rot = combineArrays(currentElem.getNumberList('rotate'), parentElem ? parentElem._rot.slice(parentElem._pos.length) : []);\n currentElem._defRot = currentElem.chooseValue(currentElem._rot[currentElem._rot.length - 1], parentElem && parentElem._defRot, 0);\n if (currentElem.name === 'textPath') {\n currentElem._y = [];\n }\n var fontOptions = {\n fauxItalic: false,\n fauxBold: false\n },\n fontNameorLink = fontCallback(currentElem.get('font-family'), currentElem.get('font-weight') === 'bold', currentElem.get('font-style') === 'italic', fontOptions);\n try {\n doc.font(fontNameorLink);\n } catch (e) {\n warningCallback('SVGElemText: failed to open font \"' + fontNameorLink + '\" in PDFKit');\n }\n currentElem._pos = [];\n currentElem._index = 0;\n currentElem._font = {\n font: doc._font,\n size: currentElem.get('font-size'),\n fauxItalic: fontOptions.fauxItalic,\n fauxBold: fontOptions.fauxBold\n };\n var textLength = currentElem.getLength('textLength', currentElem.getVWidth(), undefined),\n spacingAndGlyphs = currentElem.attr('lengthAdjust') === 'spacingAndGlyphs',\n wordSpacing = currentElem.get('word-spacing'),\n letterSpacing = currentElem.get('letter-spacing'),\n textAnchor = currentElem.get('text-anchor'),\n textDirection = currentElem.get('direction'),\n baseline = getBaseline(currentElem._font.font, currentElem._font.size, currentElem.get('alignment-baseline') || currentElem.get('dominant-baseline'), currentElem.get('baseline-shift'));\n if (currentElem.name === 'textPath') {\n doAnchoring();\n currentX = currentY = 0;\n }\n var children = currentElem.getChildren();\n for (var i = 0; i < children.length; i++) {\n var childElem = children[i];\n switch (childElem.name) {\n case 'tspan':\n case 'textPath':\n case 'a':\n recursive(childElem, currentElem);\n break;\n case '#text':\n case '#cdata-section':\n var rawText = childElem.textContent,\n renderedText = rawText,\n words = void 0;\n childElem._font = currentElem._font;\n childElem._pos = [];\n remainingText = remainingText.substring(rawText.length);\n if (currentElem.get('xml:space') === 'preserve') {\n renderedText = renderedText.replace(/[\\s]/g, ' ');\n } else {\n renderedText = renderedText.replace(/[\\s]+/g, ' ');\n if (processedText.match(/[\\s]$|^$/)) {\n renderedText = renderedText.replace(/^[\\s]/, '');\n }\n if (remainingText.match(/^[\\s]*$/)) {\n renderedText = renderedText.replace(/[\\s]$/, '');\n }\n }\n processedText += rawText;\n if (wordSpacing === 0) {\n words = [renderedText];\n } else {\n words = renderedText.split(/(\\s)/);\n }\n for (var w = 0; w < words.length; w++) {\n var pos = getTextPos(currentElem._font.font, currentElem._font.size, words[w]);\n for (var j = 0; j < pos.length; j++) {\n var index = currentElem._index,\n xAttr = currentElem._x[index],\n yAttr = currentElem._y[index],\n dxAttr = currentElem._dx[index],\n dyAttr = currentElem._dy[index],\n rotAttr = currentElem._rot[index],\n continuous = !(w === 0 && j === 0);\n if (xAttr !== undefined) {\n continuous = false;\n doAnchoring();\n currentX = xAttr;\n }\n if (yAttr !== undefined) {\n continuous = false;\n doAnchoring();\n currentY = yAttr;\n }\n if (dxAttr !== undefined) {\n continuous = false;\n currentX += dxAttr;\n }\n if (dyAttr !== undefined) {\n continuous = false;\n currentY += dyAttr;\n }\n if (rotAttr !== undefined || currentElem._defRot !== 0) {\n continuous = false;\n }\n var position = {\n glyph: pos[j].glyph,\n rotate: Math.PI / 180 * currentElem.chooseValue(rotAttr, currentElem._defRot),\n x: currentX + pos[j].xOffset,\n y: currentY + baseline + pos[j].yOffset,\n width: pos[j].width,\n ascent: getAscent(currentElem._font.font, currentElem._font.size),\n descent: getDescent(currentElem._font.font, currentElem._font.size),\n scale: 1,\n hidden: false,\n continuous: continuous\n };\n currentChunk.push(position);\n childElem._pos.push(position);\n currentElem._pos.push(position);\n currentElem._index += pos[j].unicode.length;\n if (currentChunk.length === 1) {\n currentAnchor = textAnchor;\n currentDirection = textDirection;\n }\n currentX += pos[j].xAdvance + letterSpacing;\n currentY += pos[j].yAdvance;\n }\n if (words[w] === ' ') {\n currentX += wordSpacing;\n }\n }\n break;\n default:\n remainingText = remainingText.substring(childElem.textContent.length);\n }\n }\n if (textLength && currentElem._pos.length) {\n adjustLength(currentElem._pos, textLength, spacingAndGlyphs);\n }\n if (currentElem.name === 'textPath' || currentElem.name === 'text') {\n doAnchoring();\n }\n if (currentElem.name === 'textPath') {\n textPaths.push(currentElem);\n var pathObject = currentElem.pathObject;\n if (pathObject) {\n currentX = pathObject.endPoint[0];\n currentY = pathObject.endPoint[1];\n }\n }\n if (parentElem) {\n parentElem._pos = parentElem._pos.concat(currentElem._pos);\n parentElem._index += currentElem._index;\n }\n }\n function textOnPath(currentElem) {\n var pathObject = currentElem.pathObject,\n pathLength = currentElem.pathLength,\n pathScale = currentElem.pathScale;\n if (pathObject) {\n var textOffset = currentElem.getLength('startOffset', pathLength, 0);\n for (var j = 0; j < currentElem._pos.length; j++) {\n var charMidX = textOffset + currentElem._pos[j].x + 0.5 * currentElem._pos[j].width;\n if (charMidX > pathLength || charMidX < 0) {\n currentElem._pos[j].hidden = true;\n } else {\n var pointOnPath = pathObject.getPointAtLength(charMidX * pathScale);\n if (isNotEqual(pathScale, 1)) {\n currentElem._pos[j].scale *= pathScale;\n currentElem._pos[j].width *= pathScale;\n }\n currentElem._pos[j].x = pointOnPath[0] - 0.5 * currentElem._pos[j].width * Math.cos(pointOnPath[2]) - currentElem._pos[j].y * Math.sin(pointOnPath[2]);\n currentElem._pos[j].y = pointOnPath[1] - 0.5 * currentElem._pos[j].width * Math.sin(pointOnPath[2]) + currentElem._pos[j].y * Math.cos(pointOnPath[2]);\n currentElem._pos[j].rotate = pointOnPath[2] + currentElem._pos[j].rotate;\n currentElem._pos[j].continuous = false;\n }\n }\n } else {\n for (var _j5 = 0; _j5 < currentElem._pos.length; _j5++) {\n currentElem._pos[_j5].hidden = true;\n }\n }\n }\n recursive(textParentElem, null);\n for (var i = 0; i < textPaths.length; i++) {\n textOnPath(textPaths[i]);\n }\n })(this);\n this.getTransformation = function () {\n return this.get('transform');\n };\n this.drawInDocument = function (isClip, isMask) {\n doc.save();\n this.transform();\n this.clip();\n var masked = this.mask(),\n group;\n if (masked) {\n group = docBeginGroup(getPageBBox());\n }\n this.drawTextInDocument(isClip, isMask);\n if (group) {\n docEndGroup(group);\n docInsertGroup(group);\n }\n doc.restore();\n };\n };\n options = options || {};\n var pxToPt = options.assumePt ? 1 : 72 / 96,\n // 1px = 72/96pt, but only if assumePt is false\n viewportWidth = (options.width || doc.page.width) / pxToPt,\n viewportHeight = (options.height || doc.page.height) / pxToPt,\n preserveAspectRatio = options.preserveAspectRatio || null,\n // default to null so that the attr can override if not passed\n useCSS = options.useCSS && typeof SVGElement !== 'undefined' && svg instanceof SVGElement && typeof getComputedStyle === 'function',\n warningCallback = options.warningCallback,\n fontCallback = options.fontCallback,\n imageCallback = options.imageCallback,\n colorCallback = options.colorCallback,\n documentCallback = options.documentCallback,\n precision = Math.ceil(Math.max(1, options.precision)) || 3,\n groupStack = [],\n documentCache = {},\n links = [],\n styleRules = [];\n if (typeof warningCallback !== 'function') {\n warningCallback = function warningCallback(str) {\n if (typeof console !== undefined && typeof console.warn === 'function') {\n console.warn(str);\n }\n };\n }\n if (typeof fontCallback !== 'function') {\n fontCallback = function fontCallback(family, bold, italic, fontOptions) {\n // Check if the font is already registered in the document\n if (bold && italic) {\n if (doc._registeredFonts.hasOwnProperty(family + '-BoldItalic')) {\n return family + '-BoldItalic';\n } else if (doc._registeredFonts.hasOwnProperty(family + '-Italic')) {\n fontOptions.fauxBold = true;\n return family + '-Italic';\n } else if (doc._registeredFonts.hasOwnProperty(family + '-Bold')) {\n fontOptions.fauxItalic = true;\n return family + '-Bold';\n } else if (doc._registeredFonts.hasOwnProperty(family)) {\n fontOptions.fauxBold = true;\n fontOptions.fauxItalic = true;\n return family;\n }\n }\n if (bold && !italic) {\n if (doc._registeredFonts.hasOwnProperty(family + '-Bold')) {\n return family + '-Bold';\n } else if (doc._registeredFonts.hasOwnProperty(family)) {\n fontOptions.fauxBold = true;\n return family;\n }\n }\n if (!bold && italic) {\n if (doc._registeredFonts.hasOwnProperty(family + '-Italic')) {\n return family + '-Italic';\n } else if (doc._registeredFonts.hasOwnProperty(family)) {\n fontOptions.fauxItalic = true;\n return family;\n }\n }\n if (!bold && !italic) {\n if (doc._registeredFonts.hasOwnProperty(family)) {\n return family;\n }\n }\n // Use standard fonts as fallback\n if (family.match(/(?:^|,)\\s*serif\\s*$/)) {\n if (bold && italic) {\n return 'Times-BoldItalic';\n }\n if (bold && !italic) {\n return 'Times-Bold';\n }\n if (!bold && italic) {\n return 'Times-Italic';\n }\n if (!bold && !italic) {\n return 'Times-Roman';\n }\n } else if (family.match(/(?:^|,)\\s*monospace\\s*$/)) {\n if (bold && italic) {\n return 'Courier-BoldOblique';\n }\n if (bold && !italic) {\n return 'Courier-Bold';\n }\n if (!bold && italic) {\n return 'Courier-Oblique';\n }\n if (!bold && !italic) {\n return 'Courier';\n }\n } else if (family.match(/(?:^|,)\\s*sans-serif\\s*$/) || true) {\n if (bold && italic) {\n return 'Helvetica-BoldOblique';\n }\n if (bold && !italic) {\n return 'Helvetica-Bold';\n }\n if (!bold && italic) {\n return 'Helvetica-Oblique';\n }\n if (!bold && !italic) {\n return 'Helvetica';\n }\n }\n };\n }\n if (typeof imageCallback !== 'function') {\n imageCallback = function imageCallback(link) {\n return link.replace(/\\s+/g, '');\n };\n }\n if (typeof colorCallback !== 'function') {\n colorCallback = null;\n } else {\n for (var color in DefaultColors) {\n var newColor = colorCallback(DefaultColors[color]);\n DefaultColors[color][0] = newColor[0];\n DefaultColors[color][1] = newColor[1];\n }\n }\n if (typeof documentCallback !== 'function') {\n documentCallback = null;\n }\n if (typeof svg === 'string') {\n svg = parseXml(svg);\n }\n if (svg) {\n var styles = svg.getElementsByTagName('style');\n for (var i = 0; i < styles.length; i++) {\n styleRules = styleRules.concat(parseStyleSheet(styles[i].textContent));\n }\n var elem = createSVGElement(svg, null);\n if (typeof elem.drawInDocument === 'function') {\n if (options.useCSS && !useCSS) {\n warningCallback('SVGtoPDF: useCSS option can only be used for SVG *elements* in compatible browsers');\n }\n var savedFillColor = doc._fillColor;\n doc.save().translate(x || 0, y || 0).scale(pxToPt);\n elem.drawInDocument();\n for (var _i8 = 0; _i8 < links.length; _i8++) {\n doc.page.annotations.push(links[_i8]);\n }\n doc.restore();\n doc._fillColor = savedFillColor;\n } else {\n warningCallback('SVGtoPDF: this element can\\'t be rendered directly: ' + svg.nodeName);\n }\n } else {\n warningCallback('SVGtoPDF: the input does not look like a valid SVG');\n }\n};\nif ( true && module && typeof module.exports !== 'undefined') {\n module.exports = SVGtoPDF;\n}\n\n/***/ }),\n\n/***/ 48585:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __dirname = \"/\";\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\n__webpack_require__(65292);\n__webpack_require__(73844);\n__webpack_require__(69330);\n__webpack_require__(39081);\n__webpack_require__(41584);\n__webpack_require__(49063);\n__webpack_require__(11765);\n__webpack_require__(58028);\n__webpack_require__(81755);\n__webpack_require__(94845);\n__webpack_require__(80055);\n__webpack_require__(20731);\n__webpack_require__(45337);\n__webpack_require__(10720);\n__webpack_require__(24863);\n__webpack_require__(7283);\n__webpack_require__(70095);\n__webpack_require__(10849);\n__webpack_require__(18756);\n__webpack_require__(57444);\n__webpack_require__(28331);\n__webpack_require__(71950);\n__webpack_require__(37309);\n__webpack_require__(14032);\n__webpack_require__(68067);\n__webpack_require__(73228);\n__webpack_require__(61726);\n__webpack_require__(57114);\n__webpack_require__(26663);\n__webpack_require__(65578);\n__webpack_require__(58281);\n__webpack_require__(6422);\n__webpack_require__(46467);\n__webpack_require__(7851);\n__webpack_require__(72095);\n__webpack_require__(62046);\n__webpack_require__(47259);\n__webpack_require__(18425);\n__webpack_require__(56912);\n__webpack_require__(73663);\n__webpack_require__(29883);\n__webpack_require__(35471);\n__webpack_require__(21012);\n__webpack_require__(88997);\n__webpack_require__(97464);\n__webpack_require__(2857);\n__webpack_require__(94715);\n__webpack_require__(13624);\n__webpack_require__(91132);\n__webpack_require__(62514);\n__webpack_require__(24597);\n__webpack_require__(88042);\n__webpack_require__(4660);\n__webpack_require__(92451);\n__webpack_require__(44206);\n__webpack_require__(66288);\n__webpack_require__(13250);\n__webpack_require__(3858);\n__webpack_require__(84538);\n__webpack_require__(64793);\n__webpack_require__(74202);\n__webpack_require__(52529);\n__webpack_require__(42437);\n__webpack_require__(94712);\nvar _stream = _interopRequireDefault(__webpack_require__(9760));\nvar _zlib = _interopRequireDefault(__webpack_require__(6729));\nvar _cryptoJs = _interopRequireDefault(__webpack_require__(66122));\nvar _fontkit = _interopRequireDefault(__webpack_require__(60421));\nvar _events = __webpack_require__(64785);\nvar _linebreak = _interopRequireDefault(__webpack_require__(19304));\nvar _pngJs = _interopRequireDefault(__webpack_require__(80646));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar fs = __webpack_require__(48181);\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e2) {\n throw _e2;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e3) {\n didErr = true;\n err = _e3;\n },\n f: function f() {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\n/*\r\nPDFAbstractReference - abstract class for PDF reference\r\n*/\nvar PDFAbstractReference = /*#__PURE__*/function () {\n function PDFAbstractReference() {\n _classCallCheck(this, PDFAbstractReference);\n }\n _createClass(PDFAbstractReference, [{\n key: \"toString\",\n value: function toString() {\n throw new Error('Must be implemented by subclasses');\n }\n }]);\n return PDFAbstractReference;\n}();\nvar PDFTree = /*#__PURE__*/function () {\n function PDFTree() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, PDFTree);\n this._items = {}; // disable /Limits output for this tree\n\n this.limits = typeof options.limits === 'boolean' ? options.limits : true;\n }\n _createClass(PDFTree, [{\n key: \"add\",\n value: function add(key, val) {\n return this._items[key] = val;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this._items[key];\n }\n }, {\n key: \"toString\",\n value: function toString() {\n var _this = this;\n\n // Needs to be sorted by key\n var sortedKeys = Object.keys(this._items).sort(function (a, b) {\n return _this._compareKeys(a, b);\n });\n var out = ['<<'];\n if (this.limits && sortedKeys.length > 1) {\n var first = sortedKeys[0],\n last = sortedKeys[sortedKeys.length - 1];\n out.push(\" /Limits \".concat(PDFObject.convert([this._dataForKey(first), this._dataForKey(last)])));\n }\n out.push(\" /\".concat(this._keysName(), \" [\"));\n var _iterator = _createForOfIteratorHelper(sortedKeys),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n out.push(\" \".concat(PDFObject.convert(this._dataForKey(key)), \" \").concat(PDFObject.convert(this._items[key])));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n out.push(']');\n out.push('>>');\n return out.join('\\n');\n }\n }, {\n key: \"_compareKeys\",\n value: function _compareKeys() /*a, b*/\n {\n throw new Error('Must be implemented by subclasses');\n }\n }, {\n key: \"_keysName\",\n value: function _keysName() {\n throw new Error('Must be implemented by subclasses');\n }\n }, {\n key: \"_dataForKey\",\n value: function _dataForKey() /*k*/\n {\n throw new Error('Must be implemented by subclasses');\n }\n }]);\n return PDFTree;\n}();\nvar pad = function pad(str, length) {\n return (Array(length + 1).join('0') + str).slice(-length);\n};\nvar escapableRe = /[\\n\\r\\t\\b\\f()\\\\]/g;\nvar escapable = {\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\\\': '\\\\\\\\',\n '(': '\\\\(',\n ')': '\\\\)'\n}; // Convert little endian UTF-16 to big endian\n\nvar swapBytes = function swapBytes(buff) {\n var l = buff.length;\n if (l & 0x01) {\n throw new Error('Buffer length must be even');\n } else {\n for (var i = 0, end = l - 1; i < end; i += 2) {\n var a = buff[i];\n buff[i] = buff[i + 1];\n buff[i + 1] = a;\n }\n }\n return buff;\n};\nvar PDFObject = /*#__PURE__*/function () {\n function PDFObject() {\n _classCallCheck(this, PDFObject);\n }\n _createClass(PDFObject, null, [{\n key: \"convert\",\n value: function convert(object) {\n var encryptFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // String literals are converted to the PDF name type\n if (typeof object === 'string') {\n return \"/\".concat(object); // String objects are converted to PDF strings (UTF-16)\n } else if (object instanceof String) {\n var string = object; // Detect if this is a unicode string\n\n var isUnicode = false;\n for (var i = 0, end = string.length; i < end; i++) {\n if (string.charCodeAt(i) > 0x7f) {\n isUnicode = true;\n break;\n }\n } // If so, encode it as big endian UTF-16\n\n var stringBuffer;\n if (isUnicode) {\n stringBuffer = swapBytes(Buffer.from(\"\\uFEFF\".concat(string), 'utf16le'));\n } else {\n stringBuffer = Buffer.from(string.valueOf(), 'ascii');\n } // Encrypt the string when necessary\n\n if (encryptFn) {\n string = encryptFn(stringBuffer).toString('binary');\n } else {\n string = stringBuffer.toString('binary');\n } // Escape characters as required by the spec\n\n string = string.replace(escapableRe, function (c) {\n return escapable[c];\n });\n return \"(\".concat(string, \")\"); // Buffers are converted to PDF hex strings\n } else if (Buffer.isBuffer(object)) {\n return \"<\".concat(object.toString('hex'), \">\");\n } else if (object instanceof PDFAbstractReference || object instanceof PDFTree) {\n return object.toString();\n } else if (object instanceof Date) {\n var _string = \"D:\".concat(pad(object.getUTCFullYear(), 4)) + pad(object.getUTCMonth() + 1, 2) + pad(object.getUTCDate(), 2) + pad(object.getUTCHours(), 2) + pad(object.getUTCMinutes(), 2) + pad(object.getUTCSeconds(), 2) + 'Z'; // Encrypt the string when necessary\n\n if (encryptFn) {\n _string = encryptFn(Buffer.from(_string, 'ascii')).toString('binary'); // Escape characters as required by the spec\n\n _string = _string.replace(escapableRe, function (c) {\n return escapable[c];\n });\n }\n return \"(\".concat(_string, \")\");\n } else if (Array.isArray(object)) {\n var items = object.map(function (e) {\n return PDFObject.convert(e, encryptFn);\n }).join(' ');\n return \"[\".concat(items, \"]\");\n } else if ({}.toString.call(object) === '[object Object]') {\n var out = ['<<'];\n for (var key in object) {\n var val = object[key];\n out.push(\"/\".concat(key, \" \").concat(PDFObject.convert(val, encryptFn)));\n }\n out.push('>>');\n return out.join('\\n');\n } else if (typeof object === 'number') {\n return PDFObject.number(object);\n } else {\n return \"\".concat(object);\n }\n }\n }, {\n key: \"number\",\n value: function number(n) {\n if (n > -1e21 && n < 1e21) {\n return Math.round(n * 1e6) / 1e6;\n }\n throw new Error(\"unsupported number: \".concat(n));\n }\n }]);\n return PDFObject;\n}();\nvar PDFReference = /*#__PURE__*/function (_PDFAbstractReference) {\n _inherits(PDFReference, _PDFAbstractReference);\n var _super = _createSuper(PDFReference);\n function PDFReference(document, id) {\n var _this;\n var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _classCallCheck(this, PDFReference);\n _this = _super.call(this);\n _this.document = document;\n _this.id = id;\n _this.data = data;\n _this.gen = 0;\n _this.compress = _this.document.compress && !_this.data.Filter;\n _this.uncompressedLength = 0;\n _this.buffer = [];\n return _this;\n }\n _createClass(PDFReference, [{\n key: \"write\",\n value: function write(chunk) {\n if (!Buffer.isBuffer(chunk)) {\n chunk = Buffer.from(chunk + '\\n', 'binary');\n }\n this.uncompressedLength += chunk.length;\n if (this.data.Length == null) {\n this.data.Length = 0;\n }\n this.buffer.push(chunk);\n this.data.Length += chunk.length;\n if (this.compress) {\n return this.data.Filter = 'FlateDecode';\n }\n }\n }, {\n key: \"end\",\n value: function end(chunk) {\n if (chunk) {\n this.write(chunk);\n }\n return this.finalize();\n }\n }, {\n key: \"finalize\",\n value: function finalize() {\n this.offset = this.document._offset;\n var encryptFn = this.document._security ? this.document._security.getEncryptFn(this.id, this.gen) : null;\n if (this.buffer.length) {\n this.buffer = Buffer.concat(this.buffer);\n if (this.compress) {\n this.buffer = _zlib.default.deflateSync(this.buffer);\n }\n if (encryptFn) {\n this.buffer = encryptFn(this.buffer);\n }\n this.data.Length = this.buffer.length;\n }\n this.document._write(\"\".concat(this.id, \" \").concat(this.gen, \" obj\"));\n this.document._write(PDFObject.convert(this.data, encryptFn));\n if (this.buffer.length) {\n this.document._write('stream');\n this.document._write(this.buffer);\n this.buffer = []; // free up memory\n\n this.document._write('\\nendstream');\n }\n this.document._write('endobj');\n this.document._refEnd(this);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.id, \" \").concat(this.gen, \" R\");\n }\n }]);\n return PDFReference;\n}(PDFAbstractReference);\n\n/*\r\nPDFPage - represents a single page in the PDF document\r\nBy Devon Govett\r\n*/\nvar DEFAULT_MARGINS = {\n top: 72,\n left: 72,\n bottom: 72,\n right: 72\n};\nvar SIZES = {\n '4A0': [4767.87, 6740.79],\n '2A0': [3370.39, 4767.87],\n A0: [2383.94, 3370.39],\n A1: [1683.78, 2383.94],\n A2: [1190.55, 1683.78],\n A3: [841.89, 1190.55],\n A4: [595.28, 841.89],\n A5: [419.53, 595.28],\n A6: [297.64, 419.53],\n A7: [209.76, 297.64],\n A8: [147.4, 209.76],\n A9: [104.88, 147.4],\n A10: [73.7, 104.88],\n B0: [2834.65, 4008.19],\n B1: [2004.09, 2834.65],\n B2: [1417.32, 2004.09],\n B3: [1000.63, 1417.32],\n B4: [708.66, 1000.63],\n B5: [498.9, 708.66],\n B6: [354.33, 498.9],\n B7: [249.45, 354.33],\n B8: [175.75, 249.45],\n B9: [124.72, 175.75],\n B10: [87.87, 124.72],\n C0: [2599.37, 3676.54],\n C1: [1836.85, 2599.37],\n C2: [1298.27, 1836.85],\n C3: [918.43, 1298.27],\n C4: [649.13, 918.43],\n C5: [459.21, 649.13],\n C6: [323.15, 459.21],\n C7: [229.61, 323.15],\n C8: [161.57, 229.61],\n C9: [113.39, 161.57],\n C10: [79.37, 113.39],\n RA0: [2437.8, 3458.27],\n RA1: [1729.13, 2437.8],\n RA2: [1218.9, 1729.13],\n RA3: [864.57, 1218.9],\n RA4: [609.45, 864.57],\n SRA0: [2551.18, 3628.35],\n SRA1: [1814.17, 2551.18],\n SRA2: [1275.59, 1814.17],\n SRA3: [907.09, 1275.59],\n SRA4: [637.8, 907.09],\n EXECUTIVE: [521.86, 756.0],\n FOLIO: [612.0, 936.0],\n LEGAL: [612.0, 1008.0],\n LETTER: [612.0, 792.0],\n TABLOID: [792.0, 1224.0]\n};\nvar PDFPage = /*#__PURE__*/function () {\n function PDFPage(document) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, PDFPage);\n this.document = document;\n this.size = options.size || 'letter';\n this.layout = options.layout || 'portrait'; // process margins\n\n if (typeof options.margin === 'number') {\n this.margins = {\n top: options.margin,\n left: options.margin,\n bottom: options.margin,\n right: options.margin\n }; // default to 1 inch margins\n } else {\n this.margins = options.margins || DEFAULT_MARGINS;\n } // calculate page dimensions\n\n var dimensions = Array.isArray(this.size) ? this.size : SIZES[this.size.toUpperCase()];\n this.width = dimensions[this.layout === 'portrait' ? 0 : 1];\n this.height = dimensions[this.layout === 'portrait' ? 1 : 0];\n this.content = this.document.ref(); // Initialize the Font, XObject, and ExtGState dictionaries\n\n this.resources = this.document.ref({\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']\n }); // The page dictionary\n\n this.dictionary = this.document.ref({\n Type: 'Page',\n Parent: this.document._root.data.Pages,\n MediaBox: [0, 0, this.width, this.height],\n Contents: this.content,\n Resources: this.resources\n });\n this.markings = [];\n } // Lazily create these objects\n\n _createClass(PDFPage, [{\n key: \"maxY\",\n value: function maxY() {\n return this.height - this.margins.bottom;\n }\n }, {\n key: \"write\",\n value: function write(chunk) {\n return this.content.write(chunk);\n }\n }, {\n key: \"end\",\n value: function end() {\n this.dictionary.end();\n this.resources.end();\n return this.content.end();\n }\n }, {\n key: \"fonts\",\n get: function get() {\n var data = this.resources.data;\n return data.Font != null ? data.Font : data.Font = {};\n }\n }, {\n key: \"xobjects\",\n get: function get() {\n var data = this.resources.data;\n return data.XObject != null ? data.XObject : data.XObject = {};\n }\n }, {\n key: \"ext_gstates\",\n get: function get() {\n var data = this.resources.data;\n return data.ExtGState != null ? data.ExtGState : data.ExtGState = {};\n }\n }, {\n key: \"patterns\",\n get: function get() {\n var data = this.resources.data;\n return data.Pattern != null ? data.Pattern : data.Pattern = {};\n }\n }, {\n key: \"colorSpaces\",\n get: function get() {\n var data = this.resources.data;\n return data.ColorSpace || (data.ColorSpace = {});\n }\n }, {\n key: \"annotations\",\n get: function get() {\n var data = this.dictionary.data;\n return data.Annots != null ? data.Annots : data.Annots = [];\n }\n }, {\n key: \"structParentTreeKey\",\n get: function get() {\n var data = this.dictionary.data;\n return data.StructParents != null ? data.StructParents : data.StructParents = this.document.createStructParentTreeNextKey();\n }\n }]);\n return PDFPage;\n}();\nvar PDFNameTree = /*#__PURE__*/function (_PDFTree) {\n _inherits(PDFNameTree, _PDFTree);\n var _super = _createSuper(PDFNameTree);\n function PDFNameTree() {\n _classCallCheck(this, PDFNameTree);\n return _super.apply(this, arguments);\n }\n _createClass(PDFNameTree, [{\n key: \"_compareKeys\",\n value: function _compareKeys(a, b) {\n return a.localeCompare(b);\n }\n }, {\n key: \"_keysName\",\n value: function _keysName() {\n return \"Names\";\n }\n }, {\n key: \"_dataForKey\",\n value: function _dataForKey(k) {\n return new String(k);\n }\n }]);\n return PDFNameTree;\n}(PDFTree);\n\n/**\r\n * Check if value is in a range group.\r\n * @param {number} value\r\n * @param {number[]} rangeGroup\r\n * @returns {boolean}\r\n */\nfunction inRange(value, rangeGroup) {\n if (value < rangeGroup[0]) return false;\n var startRange = 0;\n var endRange = rangeGroup.length / 2;\n while (startRange <= endRange) {\n var middleRange = Math.floor((startRange + endRange) / 2); // actual array index\n\n var arrayIndex = middleRange * 2; // Check if value is in range pointed by actual index\n\n if (value >= rangeGroup[arrayIndex] && value <= rangeGroup[arrayIndex + 1]) {\n return true;\n }\n if (value > rangeGroup[arrayIndex + 1]) {\n // Search Right Side Of Array\n startRange = middleRange + 1;\n } else {\n // Search Left Side Of Array\n endRange = middleRange - 1;\n }\n }\n return false;\n}\n\n/**\r\n * A.1 Unassigned code points in Unicode 3.2\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-A.1\r\n */\n\nvar unassigned_code_points = [0x0221, 0x0221, 0x0234, 0x024f, 0x02ae, 0x02af, 0x02ef, 0x02ff, 0x0350, 0x035f, 0x0370, 0x0373, 0x0376, 0x0379, 0x037b, 0x037d, 0x037f, 0x0383, 0x038b, 0x038b, 0x038d, 0x038d, 0x03a2, 0x03a2, 0x03cf, 0x03cf, 0x03f7, 0x03ff, 0x0487, 0x0487, 0x04cf, 0x04cf, 0x04f6, 0x04f7, 0x04fa, 0x04ff, 0x0510, 0x0530, 0x0557, 0x0558, 0x0560, 0x0560, 0x0588, 0x0588, 0x058b, 0x0590, 0x05a2, 0x05a2, 0x05ba, 0x05ba, 0x05c5, 0x05cf, 0x05eb, 0x05ef, 0x05f5, 0x060b, 0x060d, 0x061a, 0x061c, 0x061e, 0x0620, 0x0620, 0x063b, 0x063f, 0x0656, 0x065f, 0x06ee, 0x06ef, 0x06ff, 0x06ff, 0x070e, 0x070e, 0x072d, 0x072f, 0x074b, 0x077f, 0x07b2, 0x0900, 0x0904, 0x0904, 0x093a, 0x093b, 0x094e, 0x094f, 0x0955, 0x0957, 0x0971, 0x0980, 0x0984, 0x0984, 0x098d, 0x098e, 0x0991, 0x0992, 0x09a9, 0x09a9, 0x09b1, 0x09b1, 0x09b3, 0x09b5, 0x09ba, 0x09bb, 0x09bd, 0x09bd, 0x09c5, 0x09c6, 0x09c9, 0x09ca, 0x09ce, 0x09d6, 0x09d8, 0x09db, 0x09de, 0x09de, 0x09e4, 0x09e5, 0x09fb, 0x0a01, 0x0a03, 0x0a04, 0x0a0b, 0x0a0e, 0x0a11, 0x0a12, 0x0a29, 0x0a29, 0x0a31, 0x0a31, 0x0a34, 0x0a34, 0x0a37, 0x0a37, 0x0a3a, 0x0a3b, 0x0a3d, 0x0a3d, 0x0a43, 0x0a46, 0x0a49, 0x0a4a, 0x0a4e, 0x0a58, 0x0a5d, 0x0a5d, 0x0a5f, 0x0a65, 0x0a75, 0x0a80, 0x0a84, 0x0a84, 0x0a8c, 0x0a8c, 0x0a8e, 0x0a8e, 0x0a92, 0x0a92, 0x0aa9, 0x0aa9, 0x0ab1, 0x0ab1, 0x0ab4, 0x0ab4, 0x0aba, 0x0abb, 0x0ac6, 0x0ac6, 0x0aca, 0x0aca, 0x0ace, 0x0acf, 0x0ad1, 0x0adf, 0x0ae1, 0x0ae5, 0x0af0, 0x0b00, 0x0b04, 0x0b04, 0x0b0d, 0x0b0e, 0x0b11, 0x0b12, 0x0b29, 0x0b29, 0x0b31, 0x0b31, 0x0b34, 0x0b35, 0x0b3a, 0x0b3b, 0x0b44, 0x0b46, 0x0b49, 0x0b4a, 0x0b4e, 0x0b55, 0x0b58, 0x0b5b, 0x0b5e, 0x0b5e, 0x0b62, 0x0b65, 0x0b71, 0x0b81, 0x0b84, 0x0b84, 0x0b8b, 0x0b8d, 0x0b91, 0x0b91, 0x0b96, 0x0b98, 0x0b9b, 0x0b9b, 0x0b9d, 0x0b9d, 0x0ba0, 0x0ba2, 0x0ba5, 0x0ba7, 0x0bab, 0x0bad, 0x0bb6, 0x0bb6, 0x0bba, 0x0bbd, 0x0bc3, 0x0bc5, 0x0bc9, 0x0bc9, 0x0bce, 0x0bd6, 0x0bd8, 0x0be6, 0x0bf3, 0x0c00, 0x0c04, 0x0c04, 0x0c0d, 0x0c0d, 0x0c11, 0x0c11, 0x0c29, 0x0c29, 0x0c34, 0x0c34, 0x0c3a, 0x0c3d, 0x0c45, 0x0c45, 0x0c49, 0x0c49, 0x0c4e, 0x0c54, 0x0c57, 0x0c5f, 0x0c62, 0x0c65, 0x0c70, 0x0c81, 0x0c84, 0x0c84, 0x0c8d, 0x0c8d, 0x0c91, 0x0c91, 0x0ca9, 0x0ca9, 0x0cb4, 0x0cb4, 0x0cba, 0x0cbd, 0x0cc5, 0x0cc5, 0x0cc9, 0x0cc9, 0x0cce, 0x0cd4, 0x0cd7, 0x0cdd, 0x0cdf, 0x0cdf, 0x0ce2, 0x0ce5, 0x0cf0, 0x0d01, 0x0d04, 0x0d04, 0x0d0d, 0x0d0d, 0x0d11, 0x0d11, 0x0d29, 0x0d29, 0x0d3a, 0x0d3d, 0x0d44, 0x0d45, 0x0d49, 0x0d49, 0x0d4e, 0x0d56, 0x0d58, 0x0d5f, 0x0d62, 0x0d65, 0x0d70, 0x0d81, 0x0d84, 0x0d84, 0x0d97, 0x0d99, 0x0db2, 0x0db2, 0x0dbc, 0x0dbc, 0x0dbe, 0x0dbf, 0x0dc7, 0x0dc9, 0x0dcb, 0x0dce, 0x0dd5, 0x0dd5, 0x0dd7, 0x0dd7, 0x0de0, 0x0df1, 0x0df5, 0x0e00, 0x0e3b, 0x0e3e, 0x0e5c, 0x0e80, 0x0e83, 0x0e83, 0x0e85, 0x0e86, 0x0e89, 0x0e89, 0x0e8b, 0x0e8c, 0x0e8e, 0x0e93, 0x0e98, 0x0e98, 0x0ea0, 0x0ea0, 0x0ea4, 0x0ea4, 0x0ea6, 0x0ea6, 0x0ea8, 0x0ea9, 0x0eac, 0x0eac, 0x0eba, 0x0eba, 0x0ebe, 0x0ebf, 0x0ec5, 0x0ec5, 0x0ec7, 0x0ec7, 0x0ece, 0x0ecf, 0x0eda, 0x0edb, 0x0ede, 0x0eff, 0x0f48, 0x0f48, 0x0f6b, 0x0f70, 0x0f8c, 0x0f8f, 0x0f98, 0x0f98, 0x0fbd, 0x0fbd, 0x0fcd, 0x0fce, 0x0fd0, 0x0fff, 0x1022, 0x1022, 0x1028, 0x1028, 0x102b, 0x102b, 0x1033, 0x1035, 0x103a, 0x103f, 0x105a, 0x109f, 0x10c6, 0x10cf, 0x10f9, 0x10fa, 0x10fc, 0x10ff, 0x115a, 0x115e, 0x11a3, 0x11a7, 0x11fa, 0x11ff, 0x1207, 0x1207, 0x1247, 0x1247, 0x1249, 0x1249, 0x124e, 0x124f, 0x1257, 0x1257, 0x1259, 0x1259, 0x125e, 0x125f, 0x1287, 0x1287, 0x1289, 0x1289, 0x128e, 0x128f, 0x12af, 0x12af, 0x12b1, 0x12b1, 0x12b6, 0x12b7, 0x12bf, 0x12bf, 0x12c1, 0x12c1, 0x12c6, 0x12c7, 0x12cf, 0x12cf, 0x12d7, 0x12d7, 0x12ef, 0x12ef, 0x130f, 0x130f, 0x1311, 0x1311, 0x1316, 0x1317, 0x131f, 0x131f, 0x1347, 0x1347, 0x135b, 0x1360, 0x137d, 0x139f, 0x13f5, 0x1400, 0x1677, 0x167f, 0x169d, 0x169f, 0x16f1, 0x16ff, 0x170d, 0x170d, 0x1715, 0x171f, 0x1737, 0x173f, 0x1754, 0x175f, 0x176d, 0x176d, 0x1771, 0x1771, 0x1774, 0x177f, 0x17dd, 0x17df, 0x17ea, 0x17ff, 0x180f, 0x180f, 0x181a, 0x181f, 0x1878, 0x187f, 0x18aa, 0x1dff, 0x1e9c, 0x1e9f, 0x1efa, 0x1eff, 0x1f16, 0x1f17, 0x1f1e, 0x1f1f, 0x1f46, 0x1f47, 0x1f4e, 0x1f4f, 0x1f58, 0x1f58, 0x1f5a, 0x1f5a, 0x1f5c, 0x1f5c, 0x1f5e, 0x1f5e, 0x1f7e, 0x1f7f, 0x1fb5, 0x1fb5, 0x1fc5, 0x1fc5, 0x1fd4, 0x1fd5, 0x1fdc, 0x1fdc, 0x1ff0, 0x1ff1, 0x1ff5, 0x1ff5, 0x1fff, 0x1fff, 0x2053, 0x2056, 0x2058, 0x205e, 0x2064, 0x2069, 0x2072, 0x2073, 0x208f, 0x209f, 0x20b2, 0x20cf, 0x20eb, 0x20ff, 0x213b, 0x213c, 0x214c, 0x2152, 0x2184, 0x218f, 0x23cf, 0x23ff, 0x2427, 0x243f, 0x244b, 0x245f, 0x24ff, 0x24ff, 0x2614, 0x2615, 0x2618, 0x2618, 0x267e, 0x267f, 0x268a, 0x2700, 0x2705, 0x2705, 0x270a, 0x270b, 0x2728, 0x2728, 0x274c, 0x274c, 0x274e, 0x274e, 0x2753, 0x2755, 0x2757, 0x2757, 0x275f, 0x2760, 0x2795, 0x2797, 0x27b0, 0x27b0, 0x27bf, 0x27cf, 0x27ec, 0x27ef, 0x2b00, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, 0x2ffc, 0x2fff, 0x3040, 0x3040, 0x3097, 0x3098, 0x3100, 0x3104, 0x312d, 0x3130, 0x318f, 0x318f, 0x31b8, 0x31ef, 0x321d, 0x321f, 0x3244, 0x3250, 0x327c, 0x327e, 0x32cc, 0x32cf, 0x32ff, 0x32ff, 0x3377, 0x337a, 0x33de, 0x33df, 0x33ff, 0x33ff, 0x4db6, 0x4dff, 0x9fa6, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xabff, 0xd7a4, 0xd7ff, 0xfa2e, 0xfa2f, 0xfa6b, 0xfaff, 0xfb07, 0xfb12, 0xfb18, 0xfb1c, 0xfb37, 0xfb37, 0xfb3d, 0xfb3d, 0xfb3f, 0xfb3f, 0xfb42, 0xfb42, 0xfb45, 0xfb45, 0xfbb2, 0xfbd2, 0xfd40, 0xfd4f, 0xfd90, 0xfd91, 0xfdc8, 0xfdcf, 0xfdfd, 0xfdff, 0xfe10, 0xfe1f, 0xfe24, 0xfe2f, 0xfe47, 0xfe48, 0xfe53, 0xfe53, 0xfe67, 0xfe67, 0xfe6c, 0xfe6f, 0xfe75, 0xfe75, 0xfefd, 0xfefe, 0xff00, 0xff00, 0xffbf, 0xffc1, 0xffc8, 0xffc9, 0xffd0, 0xffd1, 0xffd8, 0xffd9, 0xffdd, 0xffdf, 0xffe7, 0xffe7, 0xffef, 0xfff8, 0x10000, 0x102ff, 0x1031f, 0x1031f, 0x10324, 0x1032f, 0x1034b, 0x103ff, 0x10426, 0x10427, 0x1044e, 0x1cfff, 0x1d0f6, 0x1d0ff, 0x1d127, 0x1d129, 0x1d1de, 0x1d3ff, 0x1d455, 0x1d455, 0x1d49d, 0x1d49d, 0x1d4a0, 0x1d4a1, 0x1d4a3, 0x1d4a4, 0x1d4a7, 0x1d4a8, 0x1d4ad, 0x1d4ad, 0x1d4ba, 0x1d4ba, 0x1d4bc, 0x1d4bc, 0x1d4c1, 0x1d4c1, 0x1d4c4, 0x1d4c4, 0x1d506, 0x1d506, 0x1d50b, 0x1d50c, 0x1d515, 0x1d515, 0x1d51d, 0x1d51d, 0x1d53a, 0x1d53a, 0x1d53f, 0x1d53f, 0x1d545, 0x1d545, 0x1d547, 0x1d549, 0x1d551, 0x1d551, 0x1d6a4, 0x1d6a7, 0x1d7ca, 0x1d7cd, 0x1d800, 0x1fffd, 0x2a6d7, 0x2f7ff, 0x2fa1e, 0x2fffd, 0x30000, 0x3fffd, 0x40000, 0x4fffd, 0x50000, 0x5fffd, 0x60000, 0x6fffd, 0x70000, 0x7fffd, 0x80000, 0x8fffd, 0x90000, 0x9fffd, 0xa0000, 0xafffd, 0xb0000, 0xbfffd, 0xc0000, 0xcfffd, 0xd0000, 0xdfffd, 0xe0000, 0xe0000, 0xe0002, 0xe001f, 0xe0080, 0xefffd]; // prettier-ignore-end\n\nvar isUnassignedCodePoint = function isUnassignedCodePoint(character) {\n return inRange(character, unassigned_code_points);\n}; // prettier-ignore-start\n\n/**\r\n * B.1 Commonly mapped to nothing\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-B.1\r\n */\n\nvar commonly_mapped_to_nothing = [0x00ad, 0x00ad, 0x034f, 0x034f, 0x1806, 0x1806, 0x180b, 0x180b, 0x180c, 0x180c, 0x180d, 0x180d, 0x200b, 0x200b, 0x200c, 0x200c, 0x200d, 0x200d, 0x2060, 0x2060, 0xfe00, 0xfe00, 0xfe01, 0xfe01, 0xfe02, 0xfe02, 0xfe03, 0xfe03, 0xfe04, 0xfe04, 0xfe05, 0xfe05, 0xfe06, 0xfe06, 0xfe07, 0xfe07, 0xfe08, 0xfe08, 0xfe09, 0xfe09, 0xfe0a, 0xfe0a, 0xfe0b, 0xfe0b, 0xfe0c, 0xfe0c, 0xfe0d, 0xfe0d, 0xfe0e, 0xfe0e, 0xfe0f, 0xfe0f, 0xfeff, 0xfeff]; // prettier-ignore-end\n\nvar isCommonlyMappedToNothing = function isCommonlyMappedToNothing(character) {\n return inRange(character, commonly_mapped_to_nothing);\n}; // prettier-ignore-start\n\n/**\r\n * C.1.2 Non-ASCII space characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.1.2\r\n */\n\nvar non_ASCII_space_characters = [0x00a0, 0x00a0\n/* NO-BREAK SPACE */, 0x1680, 0x1680\n/* OGHAM SPACE MARK */, 0x2000, 0x2000\n/* EN QUAD */, 0x2001, 0x2001\n/* EM QUAD */, 0x2002, 0x2002\n/* EN SPACE */, 0x2003, 0x2003\n/* EM SPACE */, 0x2004, 0x2004\n/* THREE-PER-EM SPACE */, 0x2005, 0x2005\n/* FOUR-PER-EM SPACE */, 0x2006, 0x2006\n/* SIX-PER-EM SPACE */, 0x2007, 0x2007\n/* FIGURE SPACE */, 0x2008, 0x2008\n/* PUNCTUATION SPACE */, 0x2009, 0x2009\n/* THIN SPACE */, 0x200a, 0x200a\n/* HAIR SPACE */, 0x200b, 0x200b\n/* ZERO WIDTH SPACE */, 0x202f, 0x202f\n/* NARROW NO-BREAK SPACE */, 0x205f, 0x205f\n/* MEDIUM MATHEMATICAL SPACE */, 0x3000, 0x3000\n/* IDEOGRAPHIC SPACE */]; // prettier-ignore-end\n\nvar isNonASCIISpaceCharacter = function isNonASCIISpaceCharacter(character) {\n return inRange(character, non_ASCII_space_characters);\n}; // prettier-ignore-start\n\nvar non_ASCII_controls_characters = [\n/**\r\n * C.2.2 Non-ASCII control characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.2\r\n */\n0x0080, 0x009f\n/* [CONTROL CHARACTERS] */, 0x06dd, 0x06dd\n/* ARABIC END OF AYAH */, 0x070f, 0x070f\n/* SYRIAC ABBREVIATION MARK */, 0x180e, 0x180e\n/* MONGOLIAN VOWEL SEPARATOR */, 0x200c, 0x200c\n/* ZERO WIDTH NON-JOINER */, 0x200d, 0x200d\n/* ZERO WIDTH JOINER */, 0x2028, 0x2028\n/* LINE SEPARATOR */, 0x2029, 0x2029\n/* PARAGRAPH SEPARATOR */, 0x2060, 0x2060\n/* WORD JOINER */, 0x2061, 0x2061\n/* FUNCTION APPLICATION */, 0x2062, 0x2062\n/* INVISIBLE TIMES */, 0x2063, 0x2063\n/* INVISIBLE SEPARATOR */, 0x206a, 0x206f\n/* [CONTROL CHARACTERS] */, 0xfeff, 0xfeff\n/* ZERO WIDTH NO-BREAK SPACE */, 0xfff9, 0xfffc\n/* [CONTROL CHARACTERS] */, 0x1d173, 0x1d17a\n/* [MUSICAL CONTROL CHARACTERS] */];\nvar non_character_codepoints = [\n/**\r\n * C.4 Non-character code points\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.4\r\n */\n0xfdd0, 0xfdef\n/* [NONCHARACTER CODE POINTS] */, 0xfffe, 0xffff\n/* [NONCHARACTER CODE POINTS] */, 0x1fffe, 0x1ffff\n/* [NONCHARACTER CODE POINTS] */, 0x2fffe, 0x2ffff\n/* [NONCHARACTER CODE POINTS] */, 0x3fffe, 0x3ffff\n/* [NONCHARACTER CODE POINTS] */, 0x4fffe, 0x4ffff\n/* [NONCHARACTER CODE POINTS] */, 0x5fffe, 0x5ffff\n/* [NONCHARACTER CODE POINTS] */, 0x6fffe, 0x6ffff\n/* [NONCHARACTER CODE POINTS] */, 0x7fffe, 0x7ffff\n/* [NONCHARACTER CODE POINTS] */, 0x8fffe, 0x8ffff\n/* [NONCHARACTER CODE POINTS] */, 0x9fffe, 0x9ffff\n/* [NONCHARACTER CODE POINTS] */, 0xafffe, 0xaffff\n/* [NONCHARACTER CODE POINTS] */, 0xbfffe, 0xbffff\n/* [NONCHARACTER CODE POINTS] */, 0xcfffe, 0xcffff\n/* [NONCHARACTER CODE POINTS] */, 0xdfffe, 0xdffff\n/* [NONCHARACTER CODE POINTS] */, 0xefffe, 0xeffff\n/* [NONCHARACTER CODE POINTS] */, 0x10fffe, 0x10ffff\n/* [NONCHARACTER CODE POINTS] */];\n/**\r\n * 2.3. Prohibited Output\r\n */\n\nvar prohibited_characters = [\n/**\r\n * C.2.1 ASCII control characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.1\r\n */\n0, 0x001f\n/* [CONTROL CHARACTERS] */, 0x007f, 0x007f\n/* DELETE */,\n/**\r\n * C.8 Change display properties or are deprecated\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.8\r\n */\n0x0340, 0x0340\n/* COMBINING GRAVE TONE MARK */, 0x0341, 0x0341\n/* COMBINING ACUTE TONE MARK */, 0x200e, 0x200e\n/* LEFT-TO-RIGHT MARK */, 0x200f, 0x200f\n/* RIGHT-TO-LEFT MARK */, 0x202a, 0x202a\n/* LEFT-TO-RIGHT EMBEDDING */, 0x202b, 0x202b\n/* RIGHT-TO-LEFT EMBEDDING */, 0x202c, 0x202c\n/* POP DIRECTIONAL FORMATTING */, 0x202d, 0x202d\n/* LEFT-TO-RIGHT OVERRIDE */, 0x202e, 0x202e\n/* RIGHT-TO-LEFT OVERRIDE */, 0x206a, 0x206a\n/* INHIBIT SYMMETRIC SWAPPING */, 0x206b, 0x206b\n/* ACTIVATE SYMMETRIC SWAPPING */, 0x206c, 0x206c\n/* INHIBIT ARABIC FORM SHAPING */, 0x206d, 0x206d\n/* ACTIVATE ARABIC FORM SHAPING */, 0x206e, 0x206e\n/* NATIONAL DIGIT SHAPES */, 0x206f, 0x206f\n/* NOMINAL DIGIT SHAPES */,\n/**\r\n * C.7 Inappropriate for canonical representation\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.7\r\n */\n0x2ff0, 0x2ffb\n/* [IDEOGRAPHIC DESCRIPTION CHARACTERS] */,\n/**\r\n * C.5 Surrogate codes\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.5\r\n */\n0xd800, 0xdfff,\n/**\r\n * C.3 Private use\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\r\n */\n0xe000, 0xf8ff\n/* [PRIVATE USE, PLANE 0] */,\n/**\r\n * C.6 Inappropriate for plain text\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.6\r\n */\n0xfff9, 0xfff9\n/* INTERLINEAR ANNOTATION ANCHOR */, 0xfffa, 0xfffa\n/* INTERLINEAR ANNOTATION SEPARATOR */, 0xfffb, 0xfffb\n/* INTERLINEAR ANNOTATION TERMINATOR */, 0xfffc, 0xfffc\n/* OBJECT REPLACEMENT CHARACTER */, 0xfffd, 0xfffd\n/* REPLACEMENT CHARACTER */,\n/**\r\n * C.9 Tagging characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.9\r\n */\n0xe0001, 0xe0001\n/* LANGUAGE TAG */, 0xe0020, 0xe007f\n/* [TAGGING CHARACTERS] */,\n/**\r\n * C.3 Private use\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\r\n */\n0xf0000, 0xffffd\n/* [PRIVATE USE, PLANE 15] */, 0x100000, 0x10fffd\n/* [PRIVATE USE, PLANE 16] */]; // prettier-ignore-end\n\nvar isProhibitedCharacter = function isProhibitedCharacter(character) {\n return inRange(character, non_ASCII_space_characters) || inRange(character, prohibited_characters) || inRange(character, non_ASCII_controls_characters) || inRange(character, non_character_codepoints);\n}; // prettier-ignore-start\n\n/**\r\n * D.1 Characters with bidirectional property \"R\" or \"AL\"\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.1\r\n */\n\nvar bidirectional_r_al = [0x05be, 0x05be, 0x05c0, 0x05c0, 0x05c3, 0x05c3, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x061b, 0x061b, 0x061f, 0x061f, 0x0621, 0x063a, 0x0640, 0x064a, 0x066d, 0x066f, 0x0671, 0x06d5, 0x06dd, 0x06dd, 0x06e5, 0x06e6, 0x06fa, 0x06fe, 0x0700, 0x070d, 0x0710, 0x0710, 0x0712, 0x072c, 0x0780, 0x07a5, 0x07b1, 0x07b1, 0x200f, 0x200f, 0xfb1d, 0xfb1d, 0xfb1f, 0xfb28, 0xfb2a, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbb1, 0xfbd3, 0xfd3d, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfc, 0xfe70, 0xfe74, 0xfe76, 0xfefc]; // prettier-ignore-end\n\nvar isBidirectionalRAL = function isBidirectionalRAL(character) {\n return inRange(character, bidirectional_r_al);\n}; // prettier-ignore-start\n\n/**\r\n * D.2 Characters with bidirectional property \"L\"\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.2\r\n */\n\nvar bidirectional_l = [0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x0220, 0x0222, 0x0233, 0x0250, 0x02ad, 0x02b0, 0x02b8, 0x02bb, 0x02c1, 0x02d0, 0x02d1, 0x02e0, 0x02e4, 0x02ee, 0x02ee, 0x037a, 0x037a, 0x0386, 0x0386, 0x0388, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x03ce, 0x03d0, 0x03f5, 0x0400, 0x0482, 0x048a, 0x04ce, 0x04d0, 0x04f5, 0x04f8, 0x04f9, 0x0500, 0x050f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x0589, 0x0903, 0x0903, 0x0905, 0x0939, 0x093d, 0x0940, 0x0949, 0x094c, 0x0950, 0x0950, 0x0958, 0x0961, 0x0964, 0x0970, 0x0982, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, 0x09be, 0x09c0, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e1, 0x09e6, 0x09f1, 0x09f4, 0x09fa, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, 0x0a13, 0x0a28, 0x0a2a, 0x0a30, 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, 0x0a3e, 0x0a40, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a66, 0x0a6f, 0x0a72, 0x0a74, 0x0a83, 0x0a83, 0x0a85, 0x0a8b, 0x0a8d, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, 0x0abd, 0x0ac0, 0x0ac9, 0x0ac9, 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae0, 0x0ae6, 0x0aef, 0x0b02, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b36, 0x0b39, 0x0b3d, 0x0b3e, 0x0b40, 0x0b40, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 0x0b57, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b61, 0x0b66, 0x0b70, 0x0b83, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, 0x0b92, 0x0b95, 0x0b99, 0x0b9a, 0x0b9c, 0x0b9c, 0x0b9e, 0x0b9f, 0x0ba3, 0x0ba4, 0x0ba8, 0x0baa, 0x0bae, 0x0bb5, 0x0bb7, 0x0bb9, 0x0bbe, 0x0bbf, 0x0bc1, 0x0bc2, 0x0bc6, 0x0bc8, 0x0bca, 0x0bcc, 0x0bd7, 0x0bd7, 0x0be7, 0x0bf2, 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c33, 0x0c35, 0x0c39, 0x0c41, 0x0c44, 0x0c60, 0x0c61, 0x0c66, 0x0c6f, 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, 0x0cbe, 0x0cbe, 0x0cc0, 0x0cc4, 0x0cc7, 0x0cc8, 0x0cca, 0x0ccb, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce1, 0x0ce6, 0x0cef, 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d28, 0x0d2a, 0x0d39, 0x0d3e, 0x0d40, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d57, 0x0d57, 0x0d60, 0x0d61, 0x0d66, 0x0d6f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dcf, 0x0dd1, 0x0dd8, 0x0ddf, 0x0df2, 0x0df4, 0x0e01, 0x0e30, 0x0e32, 0x0e33, 0x0e40, 0x0e46, 0x0e4f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, 0x0e8a, 0x0e8a, 0x0e8d, 0x0e8d, 0x0e94, 0x0e97, 0x0e99, 0x0e9f, 0x0ea1, 0x0ea3, 0x0ea5, 0x0ea5, 0x0ea7, 0x0ea7, 0x0eaa, 0x0eab, 0x0ead, 0x0eb0, 0x0eb2, 0x0eb3, 0x0ebd, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, 0x0f00, 0x0f17, 0x0f1a, 0x0f34, 0x0f36, 0x0f36, 0x0f38, 0x0f38, 0x0f3e, 0x0f47, 0x0f49, 0x0f6a, 0x0f7f, 0x0f7f, 0x0f85, 0x0f85, 0x0f88, 0x0f8b, 0x0fbe, 0x0fc5, 0x0fc7, 0x0fcc, 0x0fcf, 0x0fcf, 0x1000, 0x1021, 0x1023, 0x1027, 0x1029, 0x102a, 0x102c, 0x102c, 0x1031, 0x1031, 0x1038, 0x1038, 0x1040, 0x1057, 0x10a0, 0x10c5, 0x10d0, 0x10f8, 0x10fb, 0x10fb, 0x1100, 0x1159, 0x115f, 0x11a2, 0x11a8, 0x11f9, 0x1200, 0x1206, 0x1208, 0x1246, 0x1248, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, 0x125a, 0x125d, 0x1260, 0x1286, 0x1288, 0x1288, 0x128a, 0x128d, 0x1290, 0x12ae, 0x12b0, 0x12b0, 0x12b2, 0x12b5, 0x12b8, 0x12be, 0x12c0, 0x12c0, 0x12c2, 0x12c5, 0x12c8, 0x12ce, 0x12d0, 0x12d6, 0x12d8, 0x12ee, 0x12f0, 0x130e, 0x1310, 0x1310, 0x1312, 0x1315, 0x1318, 0x131e, 0x1320, 0x1346, 0x1348, 0x135a, 0x1361, 0x137c, 0x13a0, 0x13f4, 0x1401, 0x1676, 0x1681, 0x169a, 0x16a0, 0x16f0, 0x1700, 0x170c, 0x170e, 0x1711, 0x1720, 0x1731, 0x1735, 0x1736, 0x1740, 0x1751, 0x1760, 0x176c, 0x176e, 0x1770, 0x1780, 0x17b6, 0x17be, 0x17c5, 0x17c7, 0x17c8, 0x17d4, 0x17da, 0x17dc, 0x17dc, 0x17e0, 0x17e9, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18a8, 0x1e00, 0x1e9b, 0x1ea0, 0x1ef9, 0x1f00, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, 0x1f50, 0x1f57, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, 0x1fb6, 0x1fbc, 0x1fbe, 0x1fbe, 0x1fc2, 0x1fc4, 0x1fc6, 0x1fcc, 0x1fd0, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fe0, 0x1fec, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffc, 0x200e, 0x200e, 0x2071, 0x2071, 0x207f, 0x207f, 0x2102, 0x2102, 0x2107, 0x2107, 0x210a, 0x2113, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x212f, 0x2131, 0x2133, 0x2139, 0x213d, 0x213f, 0x2145, 0x2149, 0x2160, 0x2183, 0x2336, 0x237a, 0x2395, 0x2395, 0x249c, 0x24e9, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f, 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312c, 0x3131, 0x318e, 0x3190, 0x31b7, 0x31f0, 0x321c, 0x3220, 0x3243, 0x3260, 0x327b, 0x327f, 0x32b0, 0x32c0, 0x32cb, 0x32d0, 0x32fe, 0x3300, 0x3376, 0x337b, 0x33dd, 0x33e0, 0x33fe, 0x3400, 0x4db5, 0x4e00, 0x9fa5, 0xa000, 0xa48c, 0xac00, 0xd7a3, 0xd800, 0xfa2d, 0xfa30, 0xfa6a, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff21, 0xff3a, 0xff41, 0xff5a, 0xff66, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0x10300, 0x1031e, 0x10320, 0x10323, 0x10330, 0x1034a, 0x10400, 0x10425, 0x10428, 0x1044d, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d12a, 0x1d166, 0x1d16a, 0x1d172, 0x1d183, 0x1d184, 0x1d18c, 0x1d1a9, 0x1d1ae, 0x1d1dd, 0x1d400, 0x1d454, 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c0, 0x1d4c2, 0x1d4c3, 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d51e, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d552, 0x1d6a3, 0x1d6a8, 0x1d7c9, 0x20000, 0x2a6d6, 0x2f800, 0x2fa1d, 0xf0000, 0xffffd, 0x100000, 0x10fffd]; // prettier-ignore-end\n\nvar isBidirectionalL = function isBidirectionalL(character) {\n return inRange(character, bidirectional_l);\n};\n\n/**\r\n * non-ASCII space characters [StringPrep, C.1.2] that can be\r\n * mapped to SPACE (U+0020)\r\n */\n\nvar mapping2space = isNonASCIISpaceCharacter;\n/**\r\n * the \"commonly mapped to nothing\" characters [StringPrep, B.1]\r\n * that can be mapped to nothing.\r\n */\n\nvar mapping2nothing = isCommonlyMappedToNothing; // utils\n\nvar getCodePoint = function getCodePoint(character) {\n return character.codePointAt(0);\n};\nvar first = function first(x) {\n return x[0];\n};\nvar last = function last(x) {\n return x[x.length - 1];\n};\n/**\r\n * Convert provided string into an array of Unicode Code Points.\r\n * Based on https://stackoverflow.com/a/21409165/1556249\r\n * and https://www.npmjs.com/package/code-point-at.\r\n * @param {string} input\r\n * @returns {number[]}\r\n */\n\nfunction toCodePoints(input) {\n var codepoints = [];\n var size = input.length;\n for (var i = 0; i < size; i += 1) {\n var before = input.charCodeAt(i);\n if (before >= 0xd800 && before <= 0xdbff && size > i + 1) {\n var next = input.charCodeAt(i + 1);\n if (next >= 0xdc00 && next <= 0xdfff) {\n codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000);\n i += 1;\n continue;\n }\n }\n codepoints.push(before);\n }\n return codepoints;\n}\n/**\r\n * SASLprep.\r\n * @param {string} input\r\n * @param {Object} opts\r\n * @param {boolean} opts.allowUnassigned\r\n * @returns {string}\r\n */\n\nfunction saslprep(input) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (typeof input !== 'string') {\n throw new TypeError('Expected string.');\n }\n if (input.length === 0) {\n return '';\n } // 1. Map\n\n var mapped_input = toCodePoints(input) // 1.1 mapping to space\n .map(function (character) {\n return mapping2space(character) ? 0x20 : character;\n }) // 1.2 mapping to nothing\n .filter(function (character) {\n return !mapping2nothing(character);\n }); // 2. Normalize\n\n var normalized_input = String.fromCodePoint.apply(null, mapped_input).normalize('NFKC');\n var normalized_map = toCodePoints(normalized_input); // 3. Prohibit\n\n var hasProhibited = normalized_map.some(isProhibitedCharacter);\n if (hasProhibited) {\n throw new Error('Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3');\n } // Unassigned Code Points\n\n if (opts.allowUnassigned !== true) {\n var hasUnassigned = normalized_map.some(isUnassignedCodePoint);\n if (hasUnassigned) {\n throw new Error('Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5');\n }\n } // 4. check bidi\n\n var hasBidiRAL = normalized_map.some(isBidirectionalRAL);\n var hasBidiL = normalized_map.some(isBidirectionalL); // 4.1 If a string contains any RandALCat character, the string MUST NOT\n // contain any LCat character.\n\n if (hasBidiRAL && hasBidiL) {\n throw new Error('String must not contain RandALCat and LCat at the same time,' + ' see https://tools.ietf.org/html/rfc3454#section-6');\n }\n /**\r\n * 4.2 If a string contains any RandALCat character, a RandALCat\r\n * character MUST be the first character of the string, and a\r\n * RandALCat character MUST be the last character of the string.\r\n */\n\n var isFirstBidiRAL = isBidirectionalRAL(getCodePoint(first(normalized_input)));\n var isLastBidiRAL = isBidirectionalRAL(getCodePoint(last(normalized_input)));\n if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) {\n throw new Error('Bidirectional RandALCat character must be the first and the last' + ' character of the string, see https://tools.ietf.org/html/rfc3454#section-6');\n }\n return normalized_input;\n}\nvar PDFSecurity = /*#__PURE__*/function () {\n _createClass(PDFSecurity, null, [{\n key: \"generateFileID\",\n value: function generateFileID() {\n var info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var infoStr = \"\".concat(info.CreationDate.getTime(), \"\\n\");\n for (var key in info) {\n // eslint-disable-next-line no-prototype-builtins\n if (!info.hasOwnProperty(key)) {\n continue;\n }\n infoStr += \"\".concat(key, \": \").concat(info[key].valueOf(), \"\\n\");\n }\n return wordArrayToBuffer(_cryptoJs.default.MD5(infoStr));\n }\n }, {\n key: \"generateRandomWordArray\",\n value: function generateRandomWordArray(bytes) {\n return _cryptoJs.default.lib.WordArray.random(bytes);\n }\n }, {\n key: \"create\",\n value: function create(document) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!options.ownerPassword && !options.userPassword) {\n return null;\n }\n return new PDFSecurity(document, options);\n }\n }]);\n function PDFSecurity(document) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, PDFSecurity);\n if (!options.ownerPassword && !options.userPassword) {\n throw new Error('None of owner password and user password is defined.');\n }\n this.document = document;\n this._setupEncryption(options);\n }\n _createClass(PDFSecurity, [{\n key: \"_setupEncryption\",\n value: function _setupEncryption(options) {\n switch (options.pdfVersion) {\n case '1.4':\n case '1.5':\n this.version = 2;\n break;\n case '1.6':\n case '1.7':\n this.version = 4;\n break;\n case '1.7ext3':\n this.version = 5;\n break;\n default:\n this.version = 1;\n break;\n }\n var encDict = {\n Filter: 'Standard'\n };\n switch (this.version) {\n case 1:\n case 2:\n case 4:\n this._setupEncryptionV1V2V4(this.version, encDict, options);\n break;\n case 5:\n this._setupEncryptionV5(encDict, options);\n break;\n }\n this.dictionary = this.document.ref(encDict);\n }\n }, {\n key: \"_setupEncryptionV1V2V4\",\n value: function _setupEncryptionV1V2V4(v, encDict, options) {\n var r, permissions;\n switch (v) {\n case 1:\n r = 2;\n this.keyBits = 40;\n permissions = getPermissionsR2(options.permissions);\n break;\n case 2:\n r = 3;\n this.keyBits = 128;\n permissions = getPermissionsR3(options.permissions);\n break;\n case 4:\n r = 4;\n this.keyBits = 128;\n permissions = getPermissionsR3(options.permissions);\n break;\n }\n var paddedUserPassword = processPasswordR2R3R4(options.userPassword);\n var paddedOwnerPassword = options.ownerPassword ? processPasswordR2R3R4(options.ownerPassword) : paddedUserPassword;\n var ownerPasswordEntry = getOwnerPasswordR2R3R4(r, this.keyBits, paddedUserPassword, paddedOwnerPassword);\n this.encryptionKey = getEncryptionKeyR2R3R4(r, this.keyBits, this.document._id, paddedUserPassword, ownerPasswordEntry, permissions);\n var userPasswordEntry;\n if (r === 2) {\n userPasswordEntry = getUserPasswordR2(this.encryptionKey);\n } else {\n userPasswordEntry = getUserPasswordR3R4(this.document._id, this.encryptionKey);\n }\n encDict.V = v;\n if (v >= 2) {\n encDict.Length = this.keyBits;\n }\n if (v === 4) {\n encDict.CF = {\n StdCF: {\n AuthEvent: 'DocOpen',\n CFM: 'AESV2',\n Length: this.keyBits / 8\n }\n };\n encDict.StmF = 'StdCF';\n encDict.StrF = 'StdCF';\n }\n encDict.R = r;\n encDict.O = wordArrayToBuffer(ownerPasswordEntry);\n encDict.U = wordArrayToBuffer(userPasswordEntry);\n encDict.P = permissions;\n }\n }, {\n key: \"_setupEncryptionV5\",\n value: function _setupEncryptionV5(encDict, options) {\n this.keyBits = 256;\n var permissions = getPermissionsR3(options.permissions);\n var processedUserPassword = processPasswordR5(options.userPassword);\n var processedOwnerPassword = options.ownerPassword ? processPasswordR5(options.ownerPassword) : processedUserPassword;\n this.encryptionKey = getEncryptionKeyR5(PDFSecurity.generateRandomWordArray);\n var userPasswordEntry = getUserPasswordR5(processedUserPassword, PDFSecurity.generateRandomWordArray);\n var userKeySalt = _cryptoJs.default.lib.WordArray.create(userPasswordEntry.words.slice(10, 12), 8);\n var userEncryptionKeyEntry = getUserEncryptionKeyR5(processedUserPassword, userKeySalt, this.encryptionKey);\n var ownerPasswordEntry = getOwnerPasswordR5(processedOwnerPassword, userPasswordEntry, PDFSecurity.generateRandomWordArray);\n var ownerKeySalt = _cryptoJs.default.lib.WordArray.create(ownerPasswordEntry.words.slice(10, 12), 8);\n var ownerEncryptionKeyEntry = getOwnerEncryptionKeyR5(processedOwnerPassword, ownerKeySalt, userPasswordEntry, this.encryptionKey);\n var permsEntry = getEncryptedPermissionsR5(permissions, this.encryptionKey, PDFSecurity.generateRandomWordArray);\n encDict.V = 5;\n encDict.Length = this.keyBits;\n encDict.CF = {\n StdCF: {\n AuthEvent: 'DocOpen',\n CFM: 'AESV3',\n Length: this.keyBits / 8\n }\n };\n encDict.StmF = 'StdCF';\n encDict.StrF = 'StdCF';\n encDict.R = 5;\n encDict.O = wordArrayToBuffer(ownerPasswordEntry);\n encDict.OE = wordArrayToBuffer(ownerEncryptionKeyEntry);\n encDict.U = wordArrayToBuffer(userPasswordEntry);\n encDict.UE = wordArrayToBuffer(userEncryptionKeyEntry);\n encDict.P = permissions;\n encDict.Perms = wordArrayToBuffer(permsEntry);\n }\n }, {\n key: \"getEncryptFn\",\n value: function getEncryptFn(obj, gen) {\n var digest;\n if (this.version < 5) {\n digest = this.encryptionKey.clone().concat(_cryptoJs.default.lib.WordArray.create([(obj & 0xff) << 24 | (obj & 0xff00) << 8 | obj >> 8 & 0xff00 | gen & 0xff, (gen & 0xff00) << 16], 5));\n }\n if (this.version === 1 || this.version === 2) {\n var _key = _cryptoJs.default.MD5(digest);\n _key.sigBytes = Math.min(16, this.keyBits / 8 + 5);\n return function (buffer) {\n return wordArrayToBuffer(_cryptoJs.default.RC4.encrypt(_cryptoJs.default.lib.WordArray.create(buffer), _key).ciphertext);\n };\n }\n var key;\n if (this.version === 4) {\n key = _cryptoJs.default.MD5(digest.concat(_cryptoJs.default.lib.WordArray.create([0x73416c54], 4)));\n } else {\n key = this.encryptionKey;\n }\n var iv = PDFSecurity.generateRandomWordArray(16);\n var options = {\n mode: _cryptoJs.default.mode.CBC,\n padding: _cryptoJs.default.pad.Pkcs7,\n iv: iv\n };\n return function (buffer) {\n return wordArrayToBuffer(iv.clone().concat(_cryptoJs.default.AES.encrypt(_cryptoJs.default.lib.WordArray.create(buffer), key, options).ciphertext));\n };\n }\n }, {\n key: \"end\",\n value: function end() {\n this.dictionary.end();\n }\n }]);\n return PDFSecurity;\n}();\nfunction getPermissionsR2() {\n var permissionObject = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var permissions = 0xffffffc0 >> 0;\n if (permissionObject.printing) {\n permissions |= 4;\n }\n if (permissionObject.modifying) {\n permissions |= 8;\n }\n if (permissionObject.copying) {\n permissions |= 16;\n }\n if (permissionObject.annotating) {\n permissions |= 32;\n }\n return permissions;\n}\nfunction getPermissionsR3() {\n var permissionObject = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var permissions = 0xfffff0c0 >> 0;\n if (permissionObject.printing === 'lowResolution') {\n permissions |= 4;\n }\n if (permissionObject.printing === 'highResolution') {\n permissions |= 2052;\n }\n if (permissionObject.modifying) {\n permissions |= 8;\n }\n if (permissionObject.copying) {\n permissions |= 16;\n }\n if (permissionObject.annotating) {\n permissions |= 32;\n }\n if (permissionObject.fillingForms) {\n permissions |= 256;\n }\n if (permissionObject.contentAccessibility) {\n permissions |= 512;\n }\n if (permissionObject.documentAssembly) {\n permissions |= 1024;\n }\n return permissions;\n}\nfunction getUserPasswordR2(encryptionKey) {\n return _cryptoJs.default.RC4.encrypt(processPasswordR2R3R4(), encryptionKey).ciphertext;\n}\nfunction getUserPasswordR3R4(documentId, encryptionKey) {\n var key = encryptionKey.clone();\n var cipher = _cryptoJs.default.MD5(processPasswordR2R3R4().concat(_cryptoJs.default.lib.WordArray.create(documentId)));\n for (var i = 0; i < 20; i++) {\n var xorRound = Math.ceil(key.sigBytes / 4);\n for (var j = 0; j < xorRound; j++) {\n key.words[j] = encryptionKey.words[j] ^ (i | i << 8 | i << 16 | i << 24);\n }\n cipher = _cryptoJs.default.RC4.encrypt(cipher, key).ciphertext;\n }\n return cipher.concat(_cryptoJs.default.lib.WordArray.create(null, 16));\n}\nfunction getOwnerPasswordR2R3R4(r, keyBits, paddedUserPassword, paddedOwnerPassword) {\n var digest = paddedOwnerPassword;\n var round = r >= 3 ? 51 : 1;\n for (var i = 0; i < round; i++) {\n digest = _cryptoJs.default.MD5(digest);\n }\n var key = digest.clone();\n key.sigBytes = keyBits / 8;\n var cipher = paddedUserPassword;\n round = r >= 3 ? 20 : 1;\n for (var _i = 0; _i < round; _i++) {\n var xorRound = Math.ceil(key.sigBytes / 4);\n for (var j = 0; j < xorRound; j++) {\n key.words[j] = digest.words[j] ^ (_i | _i << 8 | _i << 16 | _i << 24);\n }\n cipher = _cryptoJs.default.RC4.encrypt(cipher, key).ciphertext;\n }\n return cipher;\n}\nfunction getEncryptionKeyR2R3R4(r, keyBits, documentId, paddedUserPassword, ownerPasswordEntry, permissions) {\n var key = paddedUserPassword.clone().concat(ownerPasswordEntry).concat(_cryptoJs.default.lib.WordArray.create([lsbFirstWord(permissions)], 4)).concat(_cryptoJs.default.lib.WordArray.create(documentId));\n var round = r >= 3 ? 51 : 1;\n for (var i = 0; i < round; i++) {\n key = _cryptoJs.default.MD5(key);\n key.sigBytes = keyBits / 8;\n }\n return key;\n}\nfunction getUserPasswordR5(processedUserPassword, generateRandomWordArray) {\n var validationSalt = generateRandomWordArray(8);\n var keySalt = generateRandomWordArray(8);\n return _cryptoJs.default.SHA256(processedUserPassword.clone().concat(validationSalt)).concat(validationSalt).concat(keySalt);\n}\nfunction getUserEncryptionKeyR5(processedUserPassword, userKeySalt, encryptionKey) {\n var key = _cryptoJs.default.SHA256(processedUserPassword.clone().concat(userKeySalt));\n var options = {\n mode: _cryptoJs.default.mode.CBC,\n padding: _cryptoJs.default.pad.NoPadding,\n iv: _cryptoJs.default.lib.WordArray.create(null, 16)\n };\n return _cryptoJs.default.AES.encrypt(encryptionKey, key, options).ciphertext;\n}\nfunction getOwnerPasswordR5(processedOwnerPassword, userPasswordEntry, generateRandomWordArray) {\n var validationSalt = generateRandomWordArray(8);\n var keySalt = generateRandomWordArray(8);\n return _cryptoJs.default.SHA256(processedOwnerPassword.clone().concat(validationSalt).concat(userPasswordEntry)).concat(validationSalt).concat(keySalt);\n}\nfunction getOwnerEncryptionKeyR5(processedOwnerPassword, ownerKeySalt, userPasswordEntry, encryptionKey) {\n var key = _cryptoJs.default.SHA256(processedOwnerPassword.clone().concat(ownerKeySalt).concat(userPasswordEntry));\n var options = {\n mode: _cryptoJs.default.mode.CBC,\n padding: _cryptoJs.default.pad.NoPadding,\n iv: _cryptoJs.default.lib.WordArray.create(null, 16)\n };\n return _cryptoJs.default.AES.encrypt(encryptionKey, key, options).ciphertext;\n}\nfunction getEncryptionKeyR5(generateRandomWordArray) {\n return generateRandomWordArray(32);\n}\nfunction getEncryptedPermissionsR5(permissions, encryptionKey, generateRandomWordArray) {\n var cipher = _cryptoJs.default.lib.WordArray.create([lsbFirstWord(permissions), 0xffffffff, 0x54616462], 12).concat(generateRandomWordArray(4));\n var options = {\n mode: _cryptoJs.default.mode.ECB,\n padding: _cryptoJs.default.pad.NoPadding\n };\n return _cryptoJs.default.AES.encrypt(cipher, encryptionKey, options).ciphertext;\n}\nfunction processPasswordR2R3R4() {\n var password = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var out = Buffer.alloc(32);\n var length = password.length;\n var index = 0;\n while (index < length && index < 32) {\n var code = password.charCodeAt(index);\n if (code > 0xff) {\n throw new Error('Password contains one or more invalid characters.');\n }\n out[index] = code;\n index++;\n }\n while (index < 32) {\n out[index] = PASSWORD_PADDING[index - length];\n index++;\n }\n return _cryptoJs.default.lib.WordArray.create(out);\n}\nfunction processPasswordR5() {\n var password = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n password = unescape(encodeURIComponent(saslprep(password)));\n var length = Math.min(127, password.length);\n var out = Buffer.alloc(length);\n for (var i = 0; i < length; i++) {\n out[i] = password.charCodeAt(i);\n }\n return _cryptoJs.default.lib.WordArray.create(out);\n}\nfunction lsbFirstWord(data) {\n return (data & 0xff) << 24 | (data & 0xff00) << 8 | data >> 8 & 0xff00 | data >> 24 & 0xff;\n}\nfunction wordArrayToBuffer(wordArray) {\n var byteArray = [];\n for (var i = 0; i < wordArray.sigBytes; i++) {\n byteArray.push(wordArray.words[Math.floor(i / 4)] >> 8 * (3 - i % 4) & 0xff);\n }\n return Buffer.from(byteArray);\n}\nvar PASSWORD_PADDING = [0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a];\nvar number = PDFObject.number;\nvar PDFGradient = /*#__PURE__*/function () {\n function PDFGradient(doc) {\n _classCallCheck(this, PDFGradient);\n this.doc = doc;\n this.stops = [];\n this.embedded = false;\n this.transform = [1, 0, 0, 1, 0, 0];\n }\n _createClass(PDFGradient, [{\n key: \"stop\",\n value: function stop(pos, color, opacity) {\n if (opacity == null) {\n opacity = 1;\n }\n color = this.doc._normalizeColor(color);\n if (this.stops.length === 0) {\n if (color.length === 3) {\n this._colorSpace = 'DeviceRGB';\n } else if (color.length === 4) {\n this._colorSpace = 'DeviceCMYK';\n } else if (color.length === 1) {\n this._colorSpace = 'DeviceGray';\n } else {\n throw new Error('Unknown color space');\n }\n } else if (this._colorSpace === 'DeviceRGB' && color.length !== 3 || this._colorSpace === 'DeviceCMYK' && color.length !== 4 || this._colorSpace === 'DeviceGray' && color.length !== 1) {\n throw new Error('All gradient stops must use the same color space');\n }\n opacity = Math.max(0, Math.min(1, opacity));\n this.stops.push([pos, color, opacity]);\n return this;\n }\n }, {\n key: \"setTransform\",\n value: function setTransform(m11, m12, m21, m22, dx, dy) {\n this.transform = [m11, m12, m21, m22, dx, dy];\n return this;\n }\n }, {\n key: \"embed\",\n value: function embed(m) {\n var fn;\n var stopsLength = this.stops.length;\n if (stopsLength === 0) {\n return;\n }\n this.embedded = true;\n this.matrix = m; // if the last stop comes before 100%, add a copy at 100%\n\n var last = this.stops[stopsLength - 1];\n if (last[0] < 1) {\n this.stops.push([1, last[1], last[2]]);\n }\n var bounds = [];\n var encode = [];\n var stops = [];\n for (var i = 0; i < stopsLength - 1; i++) {\n encode.push(0, 1);\n if (i + 2 !== stopsLength) {\n bounds.push(this.stops[i + 1][0]);\n }\n fn = this.doc.ref({\n FunctionType: 2,\n Domain: [0, 1],\n C0: this.stops[i + 0][1],\n C1: this.stops[i + 1][1],\n N: 1\n });\n stops.push(fn);\n fn.end();\n } // if there are only two stops, we don't need a stitching function\n\n if (stopsLength === 1) {\n fn = stops[0];\n } else {\n fn = this.doc.ref({\n FunctionType: 3,\n // stitching function\n Domain: [0, 1],\n Functions: stops,\n Bounds: bounds,\n Encode: encode\n });\n fn.end();\n }\n this.id = \"Sh\".concat(++this.doc._gradCount);\n var shader = this.shader(fn);\n shader.end();\n var pattern = this.doc.ref({\n Type: 'Pattern',\n PatternType: 2,\n Shading: shader,\n Matrix: this.matrix.map(number)\n });\n pattern.end();\n if (this.stops.some(function (stop) {\n return stop[2] < 1;\n })) {\n var grad = this.opacityGradient();\n grad._colorSpace = 'DeviceGray';\n var _iterator = _createForOfIteratorHelper(this.stops),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var stop = _step.value;\n grad.stop(stop[0], [stop[2]]);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n grad = grad.embed(this.matrix);\n var pageBBox = [0, 0, this.doc.page.width, this.doc.page.height];\n var form = this.doc.ref({\n Type: 'XObject',\n Subtype: 'Form',\n FormType: 1,\n BBox: pageBBox,\n Group: {\n Type: 'Group',\n S: 'Transparency',\n CS: 'DeviceGray'\n },\n Resources: {\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\n Pattern: {\n Sh1: grad\n }\n }\n });\n form.write('/Pattern cs /Sh1 scn');\n form.end(\"\".concat(pageBBox.join(' '), \" re f\"));\n var gstate = this.doc.ref({\n Type: 'ExtGState',\n SMask: {\n Type: 'Mask',\n S: 'Luminosity',\n G: form\n }\n });\n gstate.end();\n var opacityPattern = this.doc.ref({\n Type: 'Pattern',\n PatternType: 1,\n PaintType: 1,\n TilingType: 2,\n BBox: pageBBox,\n XStep: pageBBox[2],\n YStep: pageBBox[3],\n Resources: {\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\n Pattern: {\n Sh1: pattern\n },\n ExtGState: {\n Gs1: gstate\n }\n }\n });\n opacityPattern.write('/Gs1 gs /Pattern cs /Sh1 scn');\n opacityPattern.end(\"\".concat(pageBBox.join(' '), \" re f\"));\n this.doc.page.patterns[this.id] = opacityPattern;\n } else {\n this.doc.page.patterns[this.id] = pattern;\n }\n return pattern;\n }\n }, {\n key: \"apply\",\n value: function apply(stroke) {\n // apply gradient transform to existing document ctm\n var _this$doc$_ctm = _slicedToArray(this.doc._ctm, 6),\n m0 = _this$doc$_ctm[0],\n m1 = _this$doc$_ctm[1],\n m2 = _this$doc$_ctm[2],\n m3 = _this$doc$_ctm[3],\n m4 = _this$doc$_ctm[4],\n m5 = _this$doc$_ctm[5];\n var _this$transform = _slicedToArray(this.transform, 6),\n m11 = _this$transform[0],\n m12 = _this$transform[1],\n m21 = _this$transform[2],\n m22 = _this$transform[3],\n dx = _this$transform[4],\n dy = _this$transform[5];\n var m = [m0 * m11 + m2 * m12, m1 * m11 + m3 * m12, m0 * m21 + m2 * m22, m1 * m21 + m3 * m22, m0 * dx + m2 * dy + m4, m1 * dx + m3 * dy + m5];\n if (!this.embedded || m.join(' ') !== this.matrix.join(' ')) {\n this.embed(m);\n }\n this.doc._setColorSpace('Pattern', stroke);\n var op = stroke ? 'SCN' : 'scn';\n return this.doc.addContent(\"/\".concat(this.id, \" \").concat(op));\n }\n }]);\n return PDFGradient;\n}();\nvar PDFLinearGradient = /*#__PURE__*/function (_PDFGradient) {\n _inherits(PDFLinearGradient, _PDFGradient);\n var _super = _createSuper(PDFLinearGradient);\n function PDFLinearGradient(doc, x1, y1, x2, y2) {\n var _this;\n _classCallCheck(this, PDFLinearGradient);\n _this = _super.call(this, doc);\n _this.x1 = x1;\n _this.y1 = y1;\n _this.x2 = x2;\n _this.y2 = y2;\n return _this;\n }\n _createClass(PDFLinearGradient, [{\n key: \"shader\",\n value: function shader(fn) {\n return this.doc.ref({\n ShadingType: 2,\n ColorSpace: this._colorSpace,\n Coords: [this.x1, this.y1, this.x2, this.y2],\n Function: fn,\n Extend: [true, true]\n });\n }\n }, {\n key: \"opacityGradient\",\n value: function opacityGradient() {\n return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2);\n }\n }]);\n return PDFLinearGradient;\n}(PDFGradient);\nvar PDFRadialGradient = /*#__PURE__*/function (_PDFGradient2) {\n _inherits(PDFRadialGradient, _PDFGradient2);\n var _super2 = _createSuper(PDFRadialGradient);\n function PDFRadialGradient(doc, x1, y1, r1, x2, y2, r2) {\n var _this2;\n _classCallCheck(this, PDFRadialGradient);\n _this2 = _super2.call(this, doc);\n _this2.doc = doc;\n _this2.x1 = x1;\n _this2.y1 = y1;\n _this2.r1 = r1;\n _this2.x2 = x2;\n _this2.y2 = y2;\n _this2.r2 = r2;\n return _this2;\n }\n _createClass(PDFRadialGradient, [{\n key: \"shader\",\n value: function shader(fn) {\n return this.doc.ref({\n ShadingType: 3,\n ColorSpace: this._colorSpace,\n Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2],\n Function: fn,\n Extend: [true, true]\n });\n }\n }, {\n key: \"opacityGradient\",\n value: function opacityGradient() {\n return new PDFRadialGradient(this.doc, this.x1, this.y1, this.r1, this.x2, this.y2, this.r2);\n }\n }]);\n return PDFRadialGradient;\n}(PDFGradient);\nvar Gradient = {\n PDFGradient: PDFGradient,\n PDFLinearGradient: PDFLinearGradient,\n PDFRadialGradient: PDFRadialGradient\n};\n\n/*\r\nPDF tiling pattern support. Uncolored only.\r\n */\nvar underlyingColorSpaces = ['DeviceCMYK', 'DeviceRGB'];\nvar PDFTilingPattern = /*#__PURE__*/function () {\n function PDFTilingPattern(doc, bBox, xStep, yStep, stream) {\n _classCallCheck(this, PDFTilingPattern);\n this.doc = doc;\n this.bBox = bBox;\n this.xStep = xStep;\n this.yStep = yStep;\n this.stream = stream;\n }\n _createClass(PDFTilingPattern, [{\n key: \"createPattern\",\n value: function createPattern() {\n // no resources needed for our current usage\n // required entry\n var resources = this.doc.ref();\n resources.end(); // apply default transform matrix (flipped in the default doc._ctm)\n // see document.js & gradient.js\n\n var _this$doc$_ctm = _slicedToArray(this.doc._ctm, 6),\n m0 = _this$doc$_ctm[0],\n m1 = _this$doc$_ctm[1],\n m2 = _this$doc$_ctm[2],\n m3 = _this$doc$_ctm[3],\n m4 = _this$doc$_ctm[4],\n m5 = _this$doc$_ctm[5];\n var m11 = 1,\n m12 = 0,\n m21 = 0,\n m22 = 1,\n dx = 0,\n dy = 0;\n var m = [m0 * m11 + m2 * m12, m1 * m11 + m3 * m12, m0 * m21 + m2 * m22, m1 * m21 + m3 * m22, m0 * dx + m2 * dy + m4, m1 * dx + m3 * dy + m5];\n var pattern = this.doc.ref({\n Type: 'Pattern',\n PatternType: 1,\n // tiling\n PaintType: 2,\n // 1-colored, 2-uncolored\n TilingType: 2,\n // 2-no distortion\n BBox: this.bBox,\n XStep: this.xStep,\n YStep: this.yStep,\n Matrix: m.map(function (v) {\n return +v.toFixed(5);\n }),\n Resources: resources\n });\n pattern.end(this.stream);\n return pattern;\n }\n }, {\n key: \"embedPatternColorSpaces\",\n value: function embedPatternColorSpaces() {\n var _this = this;\n\n // map each pattern to an underlying color space\n // and embed on each page\n underlyingColorSpaces.forEach(function (csName) {\n var csId = _this.getPatternColorSpaceId(csName);\n if (_this.doc.page.colorSpaces[csId]) return;\n var cs = _this.doc.ref(['Pattern', csName]);\n cs.end();\n _this.doc.page.colorSpaces[csId] = cs;\n });\n }\n }, {\n key: \"getPatternColorSpaceId\",\n value: function getPatternColorSpaceId(underlyingColorspace) {\n return \"CsP\".concat(underlyingColorspace);\n }\n }, {\n key: \"embed\",\n value: function embed() {\n if (!this.id) {\n this.doc._patternCount = this.doc._patternCount + 1;\n this.id = 'P' + this.doc._patternCount;\n this.pattern = this.createPattern();\n } // patterns are embedded in each page\n\n if (!this.doc.page.patterns[this.id]) {\n this.doc.page.patterns[this.id] = this.pattern;\n }\n }\n }, {\n key: \"apply\",\n value: function apply(stroke, patternColor) {\n // do any embedding/creating that might be needed\n this.embedPatternColorSpaces();\n this.embed();\n var normalizedColor = this.doc._normalizeColor(patternColor);\n if (!normalizedColor) throw Error(\"invalid pattern color. (value: \".concat(patternColor, \")\")); // select one of the pattern color spaces\n\n var csId = this.getPatternColorSpaceId(this.doc._getColorSpace(normalizedColor));\n this.doc._setColorSpace(csId, stroke); // stroke/fill using the pattern and color (in the above underlying color space)\n\n var op = stroke ? 'SCN' : 'scn';\n return this.doc.addContent(\"\".concat(normalizedColor.join(' '), \" /\").concat(this.id, \" \").concat(op));\n }\n }]);\n return PDFTilingPattern;\n}();\nvar pattern = {\n PDFTilingPattern: PDFTilingPattern\n};\nvar PDFGradient$1 = Gradient.PDFGradient,\n PDFLinearGradient$1 = Gradient.PDFLinearGradient,\n PDFRadialGradient$1 = Gradient.PDFRadialGradient;\nvar PDFTilingPattern$1 = pattern.PDFTilingPattern;\nvar ColorMixin = {\n initColor: function initColor() {\n // The opacity dictionaries\n this._opacityRegistry = {};\n this._opacityCount = 0;\n this._patternCount = 0;\n return this._gradCount = 0;\n },\n _normalizeColor: function _normalizeColor(color) {\n if (typeof color === 'string') {\n if (color.charAt(0) === '#') {\n if (color.length === 4) {\n color = color.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i, '#$1$1$2$2$3$3');\n }\n var hex = parseInt(color.slice(1), 16);\n color = [hex >> 16, hex >> 8 & 0xff, hex & 0xff];\n } else if (namedColors[color]) {\n color = namedColors[color];\n }\n }\n if (Array.isArray(color)) {\n // RGB\n if (color.length === 3) {\n color = color.map(function (part) {\n return part / 255;\n }); // CMYK\n } else if (color.length === 4) {\n color = color.map(function (part) {\n return part / 100;\n });\n }\n return color;\n }\n return null;\n },\n _setColor: function _setColor(color, stroke) {\n if (color instanceof PDFGradient$1) {\n color.apply(stroke);\n return true; // see if tiling pattern, decode & apply it it\n } else if (Array.isArray(color) && color[0] instanceof PDFTilingPattern$1) {\n color[0].apply(stroke, color[1]);\n return true;\n } // any other case should be a normal color and not a pattern\n\n return this._setColorCore(color, stroke);\n },\n _setColorCore: function _setColorCore(color, stroke) {\n color = this._normalizeColor(color);\n if (!color) {\n return false;\n }\n var op = stroke ? 'SCN' : 'scn';\n var space = this._getColorSpace(color);\n this._setColorSpace(space, stroke);\n color = color.join(' ');\n this.addContent(\"\".concat(color, \" \").concat(op));\n return true;\n },\n _setColorSpace: function _setColorSpace(space, stroke) {\n var op = stroke ? 'CS' : 'cs';\n return this.addContent(\"/\".concat(space, \" \").concat(op));\n },\n _getColorSpace: function _getColorSpace(color) {\n return color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB';\n },\n fillColor: function fillColor(color, opacity) {\n var set = this._setColor(color, false);\n if (set) {\n this.fillOpacity(opacity);\n } // save this for text wrapper, which needs to reset\n // the fill color on new pages\n\n this._fillColor = [color, opacity];\n return this;\n },\n strokeColor: function strokeColor(color, opacity) {\n var set = this._setColor(color, true);\n if (set) {\n this.strokeOpacity(opacity);\n }\n return this;\n },\n opacity: function opacity(_opacity) {\n this._doOpacity(_opacity, _opacity);\n return this;\n },\n fillOpacity: function fillOpacity(opacity) {\n this._doOpacity(opacity, null);\n return this;\n },\n strokeOpacity: function strokeOpacity(opacity) {\n this._doOpacity(null, opacity);\n return this;\n },\n _doOpacity: function _doOpacity(fillOpacity, strokeOpacity) {\n var dictionary, name;\n if (fillOpacity == null && strokeOpacity == null) {\n return;\n }\n if (fillOpacity != null) {\n fillOpacity = Math.max(0, Math.min(1, fillOpacity));\n }\n if (strokeOpacity != null) {\n strokeOpacity = Math.max(0, Math.min(1, strokeOpacity));\n }\n var key = \"\".concat(fillOpacity, \"_\").concat(strokeOpacity);\n if (this._opacityRegistry[key]) {\n var _this$_opacityRegistr = _slicedToArray(this._opacityRegistry[key], 2);\n dictionary = _this$_opacityRegistr[0];\n name = _this$_opacityRegistr[1];\n } else {\n dictionary = {\n Type: 'ExtGState'\n };\n if (fillOpacity != null) {\n dictionary.ca = fillOpacity;\n }\n if (strokeOpacity != null) {\n dictionary.CA = strokeOpacity;\n }\n dictionary = this.ref(dictionary);\n dictionary.end();\n var id = ++this._opacityCount;\n name = \"Gs\".concat(id);\n this._opacityRegistry[key] = [dictionary, name];\n }\n this.page.ext_gstates[name] = dictionary;\n return this.addContent(\"/\".concat(name, \" gs\"));\n },\n linearGradient: function linearGradient(x1, y1, x2, y2) {\n return new PDFLinearGradient$1(this, x1, y1, x2, y2);\n },\n radialGradient: function radialGradient(x1, y1, r1, x2, y2, r2) {\n return new PDFRadialGradient$1(this, x1, y1, r1, x2, y2, r2);\n },\n pattern: function pattern(bbox, xStep, yStep, stream) {\n return new PDFTilingPattern$1(this, bbox, xStep, yStep, stream);\n }\n};\nvar namedColors = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n grey: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50]\n};\nvar cx, cy, px, py, sx, sy;\ncx = cy = px = py = sx = sy = 0;\nvar parameters = {\n A: 7,\n a: 7,\n C: 6,\n c: 6,\n H: 1,\n h: 1,\n L: 2,\n l: 2,\n M: 2,\n m: 2,\n Q: 4,\n q: 4,\n S: 4,\n s: 4,\n T: 2,\n t: 2,\n V: 1,\n v: 1,\n Z: 0,\n z: 0\n};\nvar parse = function parse(path) {\n var cmd;\n var ret = [];\n var args = [];\n var curArg = '';\n var foundDecimal = false;\n var params = 0;\n var _iterator = _createForOfIteratorHelper(path),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var c = _step.value;\n if (parameters[c] != null) {\n params = parameters[c];\n if (cmd) {\n // save existing command\n if (curArg.length > 0) {\n args[args.length] = +curArg;\n }\n ret[ret.length] = {\n cmd: cmd,\n args: args\n };\n args = [];\n curArg = '';\n foundDecimal = false;\n }\n cmd = c;\n } else if ([' ', ','].includes(c) || c === '-' && curArg.length > 0 && curArg[curArg.length - 1] !== 'e' || c === '.' && foundDecimal) {\n if (curArg.length === 0) {\n continue;\n }\n if (args.length === params) {\n // handle reused commands\n ret[ret.length] = {\n cmd: cmd,\n args: args\n };\n args = [+curArg]; // handle assumed commands\n\n if (cmd === 'M') {\n cmd = 'L';\n }\n if (cmd === 'm') {\n cmd = 'l';\n }\n } else {\n args[args.length] = +curArg;\n }\n foundDecimal = c === '.'; // fix for negative numbers or repeated decimals with no delimeter between commands\n\n curArg = ['-', '.'].includes(c) ? c : '';\n } else {\n curArg += c;\n if (c === '.') {\n foundDecimal = true;\n }\n }\n } // add the last command\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (curArg.length > 0) {\n if (args.length === params) {\n // handle reused commands\n ret[ret.length] = {\n cmd: cmd,\n args: args\n };\n args = [+curArg]; // handle assumed commands\n\n if (cmd === 'M') {\n cmd = 'L';\n }\n if (cmd === 'm') {\n cmd = 'l';\n }\n } else {\n args[args.length] = +curArg;\n }\n }\n ret[ret.length] = {\n cmd: cmd,\n args: args\n };\n return ret;\n};\nvar _apply = function apply(commands, doc) {\n // current point, control point, and subpath starting point\n cx = cy = px = py = sx = sy = 0; // run the commands\n\n for (var i = 0; i < commands.length; i++) {\n var c = commands[i];\n if (typeof runners[c.cmd] === 'function') {\n runners[c.cmd](doc, c.args);\n }\n }\n};\nvar runners = {\n M: function M(doc, a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return doc.moveTo(cx, cy);\n },\n m: function m(doc, a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return doc.moveTo(cx, cy);\n },\n C: function C(doc, a) {\n cx = a[4];\n cy = a[5];\n px = a[2];\n py = a[3];\n return doc.bezierCurveTo.apply(doc, _toConsumableArray(a));\n },\n c: function c(doc, a) {\n doc.bezierCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy, a[4] + cx, a[5] + cy);\n px = cx + a[2];\n py = cy + a[3];\n cx += a[4];\n return cy += a[5];\n },\n S: function S(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n }\n doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);\n px = a[0];\n py = a[1];\n cx = a[2];\n return cy = a[3];\n },\n s: function s(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n }\n doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), cx + a[0], cy + a[1], cx + a[2], cy + a[3]);\n px = cx + a[0];\n py = cy + a[1];\n cx += a[2];\n return cy += a[3];\n },\n Q: function Q(doc, a) {\n px = a[0];\n py = a[1];\n cx = a[2];\n cy = a[3];\n return doc.quadraticCurveTo(a[0], a[1], cx, cy);\n },\n q: function q(doc, a) {\n doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);\n px = cx + a[0];\n py = cy + a[1];\n cx += a[2];\n return cy += a[3];\n },\n T: function T(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n } else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n doc.quadraticCurveTo(px, py, a[0], a[1]);\n px = cx - (px - cx);\n py = cy - (py - cy);\n cx = a[0];\n return cy = a[1];\n },\n t: function t(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n } else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]);\n cx += a[0];\n return cy += a[1];\n },\n A: function A(doc, a) {\n solveArc(doc, cx, cy, a);\n cx = a[5];\n return cy = a[6];\n },\n a: function a(doc, _a) {\n _a[5] += cx;\n _a[6] += cy;\n solveArc(doc, cx, cy, _a);\n cx = _a[5];\n return cy = _a[6];\n },\n L: function L(doc, a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n l: function l(doc, a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n H: function H(doc, a) {\n cx = a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n h: function h(doc, a) {\n cx += a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n V: function V(doc, a) {\n cy = a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n v: function v(doc, a) {\n cy += a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n Z: function Z(doc) {\n doc.closePath();\n cx = sx;\n return cy = sy;\n },\n z: function z(doc) {\n doc.closePath();\n cx = sx;\n return cy = sy;\n }\n};\nvar solveArc = function solveArc(doc, x, y, coords) {\n var _coords = _slicedToArray(coords, 7),\n rx = _coords[0],\n ry = _coords[1],\n rot = _coords[2],\n large = _coords[3],\n sweep = _coords[4],\n ex = _coords[5],\n ey = _coords[6];\n var segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);\n var _iterator2 = _createForOfIteratorHelper(segs),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var seg = _step2.value;\n var bez = segmentToBezier.apply(void 0, _toConsumableArray(seg));\n doc.bezierCurveTo.apply(doc, _toConsumableArray(bez));\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n}; // from Inkscape svgtopdf, thanks!\n\nvar arcToSegments = function arcToSegments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n var th = rotateX * (Math.PI / 180);\n var sin_th = Math.sin(th);\n var cos_th = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n var pl = px * px / (rx * rx) + py * py / (ry * ry);\n if (pl > 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n var a00 = cos_th / rx;\n var a01 = sin_th / rx;\n var a10 = -sin_th / ry;\n var a11 = cos_th / ry;\n var x0 = a00 * ox + a01 * oy;\n var y0 = a10 * ox + a11 * oy;\n var x1 = a00 * x + a01 * y;\n var y1 = a10 * x + a11 * y;\n var d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n var sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) {\n sfactor_sq = 0;\n }\n var sfactor = Math.sqrt(sfactor_sq);\n if (sweep === large) {\n sfactor = -sfactor;\n }\n var xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n var yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n var th0 = Math.atan2(y0 - yc, x0 - xc);\n var th1 = Math.atan2(y1 - yc, x1 - xc);\n var th_arc = th1 - th0;\n if (th_arc < 0 && sweep === 1) {\n th_arc += 2 * Math.PI;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= 2 * Math.PI;\n }\n var segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\n var result = [];\n for (var i = 0; i < segments; i++) {\n var th2 = th0 + i * th_arc / segments;\n var th3 = th0 + (i + 1) * th_arc / segments;\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n }\n return result;\n};\nvar segmentToBezier = function segmentToBezier(cx, cy, th0, th1, rx, ry, sin_th, cos_th) {\n var a00 = cos_th * rx;\n var a01 = -sin_th * ry;\n var a10 = sin_th * rx;\n var a11 = cos_th * ry;\n var th_half = 0.5 * (th1 - th0);\n var t = 8 / 3 * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5) / Math.sin(th_half);\n var x1 = cx + Math.cos(th0) - t * Math.sin(th0);\n var y1 = cy + Math.sin(th0) + t * Math.cos(th0);\n var x3 = cx + Math.cos(th1);\n var y3 = cy + Math.sin(th1);\n var x2 = x3 + t * Math.sin(th1);\n var y2 = y3 - t * Math.cos(th1);\n return [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];\n};\nvar SVGPath = /*#__PURE__*/function () {\n function SVGPath() {\n _classCallCheck(this, SVGPath);\n }\n _createClass(SVGPath, null, [{\n key: \"apply\",\n value: function apply(doc, path) {\n var commands = parse(path);\n _apply(commands, doc);\n }\n }]);\n return SVGPath;\n}();\nvar number$1 = PDFObject.number; // This constant is used to approximate a symmetrical arc using a cubic\n// Bezier curve.\n\nvar KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\nvar VectorMixin = {\n initVector: function initVector() {\n this._ctm = [1, 0, 0, 1, 0, 0]; // current transformation matrix\n\n return this._ctmStack = [];\n },\n save: function save() {\n this._ctmStack.push(this._ctm.slice()); // TODO: save/restore colorspace and styles so not setting it unnessesarily all the time?\n\n return this.addContent('q');\n },\n restore: function restore() {\n this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0];\n return this.addContent('Q');\n },\n closePath: function closePath() {\n return this.addContent('h');\n },\n lineWidth: function lineWidth(w) {\n return this.addContent(\"\".concat(number$1(w), \" w\"));\n },\n _CAP_STYLES: {\n BUTT: 0,\n ROUND: 1,\n SQUARE: 2\n },\n lineCap: function lineCap(c) {\n if (typeof c === 'string') {\n c = this._CAP_STYLES[c.toUpperCase()];\n }\n return this.addContent(\"\".concat(c, \" J\"));\n },\n _JOIN_STYLES: {\n MITER: 0,\n ROUND: 1,\n BEVEL: 2\n },\n lineJoin: function lineJoin(j) {\n if (typeof j === 'string') {\n j = this._JOIN_STYLES[j.toUpperCase()];\n }\n return this.addContent(\"\".concat(j, \" j\"));\n },\n miterLimit: function miterLimit(m) {\n return this.addContent(\"\".concat(number$1(m), \" M\"));\n },\n dash: function dash(length) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var originalLength = length;\n if (!Array.isArray(length)) {\n length = [length, options.space || length];\n }\n var valid = length.every(function (x) {\n return Number.isFinite(x) && x > 0;\n });\n if (!valid) {\n throw new Error(\"dash(\".concat(JSON.stringify(originalLength), \", \").concat(JSON.stringify(options), \") invalid, lengths must be numeric and greater than zero\"));\n }\n length = length.map(number$1).join(' ');\n return this.addContent(\"[\".concat(length, \"] \").concat(number$1(options.phase || 0), \" d\"));\n },\n undash: function undash() {\n return this.addContent('[] 0 d');\n },\n moveTo: function moveTo(x, y) {\n return this.addContent(\"\".concat(number$1(x), \" \").concat(number$1(y), \" m\"));\n },\n lineTo: function lineTo(x, y) {\n return this.addContent(\"\".concat(number$1(x), \" \").concat(number$1(y), \" l\"));\n },\n bezierCurveTo: function bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n return this.addContent(\"\".concat(number$1(cp1x), \" \").concat(number$1(cp1y), \" \").concat(number$1(cp2x), \" \").concat(number$1(cp2y), \" \").concat(number$1(x), \" \").concat(number$1(y), \" c\"));\n },\n quadraticCurveTo: function quadraticCurveTo(cpx, cpy, x, y) {\n return this.addContent(\"\".concat(number$1(cpx), \" \").concat(number$1(cpy), \" \").concat(number$1(x), \" \").concat(number$1(y), \" v\"));\n },\n rect: function rect(x, y, w, h) {\n return this.addContent(\"\".concat(number$1(x), \" \").concat(number$1(y), \" \").concat(number$1(w), \" \").concat(number$1(h), \" re\"));\n },\n roundedRect: function roundedRect(x, y, w, h, r) {\n if (r == null) {\n r = 0;\n }\n r = Math.min(r, 0.5 * w, 0.5 * h); // amount to inset control points from corners (see `ellipse`)\n\n var c = r * (1.0 - KAPPA);\n this.moveTo(x + r, y);\n this.lineTo(x + w - r, y);\n this.bezierCurveTo(x + w - c, y, x + w, y + c, x + w, y + r);\n this.lineTo(x + w, y + h - r);\n this.bezierCurveTo(x + w, y + h - c, x + w - c, y + h, x + w - r, y + h);\n this.lineTo(x + r, y + h);\n this.bezierCurveTo(x + c, y + h, x, y + h - c, x, y + h - r);\n this.lineTo(x, y + r);\n this.bezierCurveTo(x, y + c, x + c, y, x + r, y);\n return this.closePath();\n },\n ellipse: function ellipse(x, y, r1, r2) {\n // based on http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas/2173084#2173084\n if (r2 == null) {\n r2 = r1;\n }\n x -= r1;\n y -= r2;\n var ox = r1 * KAPPA;\n var oy = r2 * KAPPA;\n var xe = x + r1 * 2;\n var ye = y + r2 * 2;\n var xm = x + r1;\n var ym = y + r2;\n this.moveTo(x, ym);\n this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\n this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\n this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\n this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\n return this.closePath();\n },\n circle: function circle(x, y, radius) {\n return this.ellipse(x, y, radius);\n },\n arc: function arc(x, y, radius, startAngle, endAngle, anticlockwise) {\n if (anticlockwise == null) {\n anticlockwise = false;\n }\n var TWO_PI = 2.0 * Math.PI;\n var HALF_PI = 0.5 * Math.PI;\n var deltaAng = endAngle - startAngle;\n if (Math.abs(deltaAng) > TWO_PI) {\n // draw only full circle if more than that is specified\n deltaAng = TWO_PI;\n } else if (deltaAng !== 0 && anticlockwise !== deltaAng < 0) {\n // necessary to flip direction of rendering\n var dir = anticlockwise ? -1 : 1;\n deltaAng = dir * TWO_PI + deltaAng;\n }\n var numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI);\n var segAng = deltaAng / numSegs;\n var handleLen = segAng / HALF_PI * KAPPA * radius;\n var curAng = startAngle; // component distances between anchor point and control point\n\n var deltaCx = -Math.sin(curAng) * handleLen;\n var deltaCy = Math.cos(curAng) * handleLen; // anchor point\n\n var ax = x + Math.cos(curAng) * radius;\n var ay = y + Math.sin(curAng) * radius; // calculate and render segments\n\n this.moveTo(ax, ay);\n for (var segIdx = 0; segIdx < numSegs; segIdx++) {\n // starting control point\n var cp1x = ax + deltaCx;\n var cp1y = ay + deltaCy; // step angle\n\n curAng += segAng; // next anchor point\n\n ax = x + Math.cos(curAng) * radius;\n ay = y + Math.sin(curAng) * radius; // next control point delta\n\n deltaCx = -Math.sin(curAng) * handleLen;\n deltaCy = Math.cos(curAng) * handleLen; // ending control point\n\n var cp2x = ax - deltaCx;\n var cp2y = ay - deltaCy; // render segment\n\n this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay);\n }\n return this;\n },\n polygon: function polygon() {\n for (var _len = arguments.length, points = new Array(_len), _key = 0; _key < _len; _key++) {\n points[_key] = arguments[_key];\n }\n this.moveTo.apply(this, _toConsumableArray(points.shift() || []));\n for (var _i = 0, _points = points; _i < _points.length; _i++) {\n var point = _points[_i];\n this.lineTo.apply(this, _toConsumableArray(point || []));\n }\n return this.closePath();\n },\n path: function path(_path) {\n SVGPath.apply(this, _path);\n return this;\n },\n _windingRule: function _windingRule(rule) {\n if (/even-?odd/.test(rule)) {\n return '*';\n }\n return '';\n },\n fill: function fill(color, rule) {\n if (/(even-?odd)|(non-?zero)/.test(color)) {\n rule = color;\n color = null;\n }\n if (color) {\n this.fillColor(color);\n }\n return this.addContent(\"f\".concat(this._windingRule(rule)));\n },\n stroke: function stroke(color) {\n if (color) {\n this.strokeColor(color);\n }\n return this.addContent('S');\n },\n fillAndStroke: function fillAndStroke(fillColor, strokeColor, rule) {\n if (strokeColor == null) {\n strokeColor = fillColor;\n }\n var isFillRule = /(even-?odd)|(non-?zero)/;\n if (isFillRule.test(fillColor)) {\n rule = fillColor;\n fillColor = null;\n }\n if (isFillRule.test(strokeColor)) {\n rule = strokeColor;\n strokeColor = fillColor;\n }\n if (fillColor) {\n this.fillColor(fillColor);\n this.strokeColor(strokeColor);\n }\n return this.addContent(\"B\".concat(this._windingRule(rule)));\n },\n clip: function clip(rule) {\n return this.addContent(\"W\".concat(this._windingRule(rule), \" n\"));\n },\n transform: function transform(m11, m12, m21, m22, dx, dy) {\n // keep track of the current transformation matrix\n var m = this._ctm;\n var _m = _slicedToArray(m, 6),\n m0 = _m[0],\n m1 = _m[1],\n m2 = _m[2],\n m3 = _m[3],\n m4 = _m[4],\n m5 = _m[5];\n m[0] = m0 * m11 + m2 * m12;\n m[1] = m1 * m11 + m3 * m12;\n m[2] = m0 * m21 + m2 * m22;\n m[3] = m1 * m21 + m3 * m22;\n m[4] = m0 * dx + m2 * dy + m4;\n m[5] = m1 * dx + m3 * dy + m5;\n var values = [m11, m12, m21, m22, dx, dy].map(function (v) {\n return number$1(v);\n }).join(' ');\n return this.addContent(\"\".concat(values, \" cm\"));\n },\n translate: function translate(x, y) {\n return this.transform(1, 0, 0, 1, x, y);\n },\n rotate: function rotate(angle) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var y;\n var rad = angle * Math.PI / 180;\n var cos = Math.cos(rad);\n var sin = Math.sin(rad);\n var x = y = 0;\n if (options.origin != null) {\n var _options$origin = _slicedToArray(options.origin, 2);\n x = _options$origin[0];\n y = _options$origin[1];\n var x1 = x * cos - y * sin;\n var y1 = x * sin + y * cos;\n x -= x1;\n y -= y1;\n }\n return this.transform(cos, sin, -sin, cos, x, y);\n },\n scale: function scale(xFactor, yFactor) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var y;\n if (yFactor == null) {\n yFactor = xFactor;\n }\n if (typeof yFactor === 'object') {\n options = yFactor;\n yFactor = xFactor;\n }\n var x = y = 0;\n if (options.origin != null) {\n var _options$origin2 = _slicedToArray(options.origin, 2);\n x = _options$origin2[0];\n y = _options$origin2[1];\n x -= xFactor * x;\n y -= yFactor * y;\n }\n return this.transform(xFactor, 0, 0, yFactor, x, y);\n }\n};\nvar WIN_ANSI_MAP = {\n 402: 131,\n 8211: 150,\n 8212: 151,\n 8216: 145,\n 8217: 146,\n 8218: 130,\n 8220: 147,\n 8221: 148,\n 8222: 132,\n 8224: 134,\n 8225: 135,\n 8226: 149,\n 8230: 133,\n 8364: 128,\n 8240: 137,\n 8249: 139,\n 8250: 155,\n 710: 136,\n 8482: 153,\n 338: 140,\n 339: 156,\n 732: 152,\n 352: 138,\n 353: 154,\n 376: 159,\n 381: 142,\n 382: 158\n};\nvar characters = \".notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n \\nspace exclam quotedbl numbersign\\ndollar percent ampersand quotesingle\\nparenleft parenright asterisk plus\\ncomma hyphen period slash\\nzero one two three\\nfour five six seven\\neight nine colon semicolon\\nless equal greater question\\n \\nat A B C\\nD E F G\\nH I J K\\nL M N O\\nP Q R S\\nT U V W\\nX Y Z bracketleft\\nbackslash bracketright asciicircum underscore\\n \\ngrave a b c\\nd e f g\\nh i j k\\nl m n o\\np q r s\\nt u v w\\nx y z braceleft\\nbar braceright asciitilde .notdef\\n \\nEuro .notdef quotesinglbase florin\\nquotedblbase ellipsis dagger daggerdbl\\ncircumflex perthousand Scaron guilsinglleft\\nOE .notdef Zcaron .notdef\\n.notdef quoteleft quoteright quotedblleft\\nquotedblright bullet endash emdash\\ntilde trademark scaron guilsinglright\\noe .notdef zcaron ydieresis\\n \\nspace exclamdown cent sterling\\ncurrency yen brokenbar section\\ndieresis copyright ordfeminine guillemotleft\\nlogicalnot hyphen registered macron\\ndegree plusminus twosuperior threesuperior\\nacute mu paragraph periodcentered\\ncedilla onesuperior ordmasculine guillemotright\\nonequarter onehalf threequarters questiondown\\n \\nAgrave Aacute Acircumflex Atilde\\nAdieresis Aring AE Ccedilla\\nEgrave Eacute Ecircumflex Edieresis\\nIgrave Iacute Icircumflex Idieresis\\nEth Ntilde Ograve Oacute\\nOcircumflex Otilde Odieresis multiply\\nOslash Ugrave Uacute Ucircumflex\\nUdieresis Yacute Thorn germandbls\\n \\nagrave aacute acircumflex atilde\\nadieresis aring ae ccedilla\\negrave eacute ecircumflex edieresis\\nigrave iacute icircumflex idieresis\\neth ntilde ograve oacute\\nocircumflex otilde odieresis divide\\noslash ugrave uacute ucircumflex\\nudieresis yacute thorn ydieresis\".split(/\\s+/);\nvar AFMFont = /*#__PURE__*/function () {\n _createClass(AFMFont, null, [{\n key: \"open\",\n value: function open(filename) {\n return new AFMFont(fs.readFileSync(filename, 'utf8'));\n }\n }]);\n function AFMFont(contents) {\n _classCallCheck(this, AFMFont);\n this.contents = contents;\n this.attributes = {};\n this.glyphWidths = {};\n this.boundingBoxes = {};\n this.kernPairs = {};\n this.parse(); // todo: remove charWidths since appears to not be used\n\n this.charWidths = new Array(256);\n for (var char = 0; char <= 255; char++) {\n this.charWidths[char] = this.glyphWidths[characters[char]];\n }\n this.bbox = this.attributes['FontBBox'].split(/\\s+/).map(function (e) {\n return +e;\n });\n this.ascender = +(this.attributes['Ascender'] || 0);\n this.descender = +(this.attributes['Descender'] || 0);\n this.xHeight = +(this.attributes['XHeight'] || 0);\n this.capHeight = +(this.attributes['CapHeight'] || 0);\n this.lineGap = this.bbox[3] - this.bbox[1] - (this.ascender - this.descender);\n }\n _createClass(AFMFont, [{\n key: \"parse\",\n value: function parse() {\n var section = '';\n var _iterator = _createForOfIteratorHelper(this.contents.split('\\n')),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var line = _step.value;\n var match;\n var a;\n if (match = line.match(/^Start(\\w+)/)) {\n section = match[1];\n continue;\n } else if (match = line.match(/^End(\\w+)/)) {\n section = '';\n continue;\n }\n switch (section) {\n case 'FontMetrics':\n match = line.match(/(^\\w+)\\s+(.*)/);\n var key = match[1];\n var value = match[2];\n if (a = this.attributes[key]) {\n if (!Array.isArray(a)) {\n a = this.attributes[key] = [a];\n }\n a.push(value);\n } else {\n this.attributes[key] = value;\n }\n break;\n case 'CharMetrics':\n if (!/^CH?\\s/.test(line)) {\n continue;\n }\n var name = line.match(/\\bN\\s+(\\.?\\w+)\\s*;/)[1];\n this.glyphWidths[name] = +line.match(/\\bWX\\s+(\\d+)\\s*;/)[1];\n break;\n case 'KernPairs':\n match = line.match(/^KPX\\s+(\\.?\\w+)\\s+(\\.?\\w+)\\s+(-?\\d+)/);\n if (match) {\n this.kernPairs[match[1] + '\\0' + match[2]] = parseInt(match[3]);\n }\n break;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"encodeText\",\n value: function encodeText(text) {\n var res = [];\n for (var i = 0, len = text.length; i < len; i++) {\n var char = text.charCodeAt(i);\n char = WIN_ANSI_MAP[char] || char;\n res.push(char.toString(16));\n }\n return res;\n }\n }, {\n key: \"glyphsForString\",\n value: function glyphsForString(string) {\n var glyphs = [];\n for (var i = 0, len = string.length; i < len; i++) {\n var charCode = string.charCodeAt(i);\n glyphs.push(this.characterToGlyph(charCode));\n }\n return glyphs;\n }\n }, {\n key: \"characterToGlyph\",\n value: function characterToGlyph(character) {\n return characters[WIN_ANSI_MAP[character] || character] || '.notdef';\n }\n }, {\n key: \"widthOfGlyph\",\n value: function widthOfGlyph(glyph) {\n return this.glyphWidths[glyph] || 0;\n }\n }, {\n key: \"getKernPair\",\n value: function getKernPair(left, right) {\n return this.kernPairs[left + '\\0' + right] || 0;\n }\n }, {\n key: \"advancesForGlyphs\",\n value: function advancesForGlyphs(glyphs) {\n var advances = [];\n for (var index = 0; index < glyphs.length; index++) {\n var left = glyphs[index];\n var right = glyphs[index + 1];\n advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right));\n }\n return advances;\n }\n }]);\n return AFMFont;\n}();\nvar PDFFont = /*#__PURE__*/function () {\n function PDFFont() {\n _classCallCheck(this, PDFFont);\n }\n _createClass(PDFFont, [{\n key: \"encode\",\n value: function encode() {\n throw new Error('Must be implemented by subclasses');\n }\n }, {\n key: \"widthOfString\",\n value: function widthOfString() {\n throw new Error('Must be implemented by subclasses');\n }\n }, {\n key: \"ref\",\n value: function ref() {\n return this.dictionary != null ? this.dictionary : this.dictionary = this.document.ref();\n }\n }, {\n key: \"finalize\",\n value: function finalize() {\n if (this.embedded || this.dictionary == null) {\n return;\n }\n this.embed();\n return this.embedded = true;\n }\n }, {\n key: \"embed\",\n value: function embed() {\n throw new Error('Must be implemented by subclasses');\n }\n }, {\n key: \"lineHeight\",\n value: function lineHeight(size, includeGap) {\n if (includeGap == null) {\n includeGap = false;\n }\n var gap = includeGap ? this.lineGap : 0;\n return (this.ascender + gap - this.descender) / 1000 * size;\n }\n }]);\n return PDFFont;\n}();\nvar STANDARD_FONTS = {\n Courier: function Courier() {\n return fs.readFileSync(__dirname + '/data/Courier.afm', 'utf8');\n },\n 'Courier-Bold': function CourierBold() {\n return fs.readFileSync(__dirname + '/data/Courier-Bold.afm', 'utf8');\n },\n 'Courier-Oblique': function CourierOblique() {\n return fs.readFileSync(__dirname + '/data/Courier-Oblique.afm', 'utf8');\n },\n 'Courier-BoldOblique': function CourierBoldOblique() {\n return fs.readFileSync(__dirname + '/data/Courier-BoldOblique.afm', 'utf8');\n },\n Helvetica: function Helvetica() {\n return fs.readFileSync(__dirname + '/data/Helvetica.afm', 'utf8');\n },\n 'Helvetica-Bold': function HelveticaBold() {\n return fs.readFileSync(__dirname + '/data/Helvetica-Bold.afm', 'utf8');\n },\n 'Helvetica-Oblique': function HelveticaOblique() {\n return fs.readFileSync(__dirname + '/data/Helvetica-Oblique.afm', 'utf8');\n },\n 'Helvetica-BoldOblique': function HelveticaBoldOblique() {\n return fs.readFileSync(__dirname + '/data/Helvetica-BoldOblique.afm', 'utf8');\n },\n 'Times-Roman': function TimesRoman() {\n return fs.readFileSync(__dirname + '/data/Times-Roman.afm', 'utf8');\n },\n 'Times-Bold': function TimesBold() {\n return fs.readFileSync(__dirname + '/data/Times-Bold.afm', 'utf8');\n },\n 'Times-Italic': function TimesItalic() {\n return fs.readFileSync(__dirname + '/data/Times-Italic.afm', 'utf8');\n },\n 'Times-BoldItalic': function TimesBoldItalic() {\n return fs.readFileSync(__dirname + '/data/Times-BoldItalic.afm', 'utf8');\n },\n Symbol: function Symbol() {\n return fs.readFileSync(__dirname + '/data/Symbol.afm', 'utf8');\n },\n ZapfDingbats: function ZapfDingbats() {\n return fs.readFileSync(__dirname + '/data/ZapfDingbats.afm', 'utf8');\n }\n};\nvar StandardFont = /*#__PURE__*/function (_PDFFont) {\n _inherits(StandardFont, _PDFFont);\n var _super = _createSuper(StandardFont);\n function StandardFont(document, name, id) {\n var _this;\n _classCallCheck(this, StandardFont);\n _this = _super.call(this);\n _this.document = document;\n _this.name = name;\n _this.id = id;\n _this.font = new AFMFont(STANDARD_FONTS[_this.name]());\n var _this$font = _this.font;\n _this.ascender = _this$font.ascender;\n _this.descender = _this$font.descender;\n _this.bbox = _this$font.bbox;\n _this.lineGap = _this$font.lineGap;\n _this.xHeight = _this$font.xHeight;\n _this.capHeight = _this$font.capHeight;\n return _this;\n }\n _createClass(StandardFont, [{\n key: \"embed\",\n value: function embed() {\n this.dictionary.data = {\n Type: 'Font',\n BaseFont: this.name,\n Subtype: 'Type1',\n Encoding: 'WinAnsiEncoding'\n };\n return this.dictionary.end();\n }\n }, {\n key: \"encode\",\n value: function encode(text) {\n var encoded = this.font.encodeText(text);\n var glyphs = this.font.glyphsForString(\"\".concat(text));\n var advances = this.font.advancesForGlyphs(glyphs);\n var positions = [];\n for (var i = 0; i < glyphs.length; i++) {\n var glyph = glyphs[i];\n positions.push({\n xAdvance: advances[i],\n yAdvance: 0,\n xOffset: 0,\n yOffset: 0,\n advanceWidth: this.font.widthOfGlyph(glyph)\n });\n }\n return [encoded, positions];\n }\n }, {\n key: \"widthOfString\",\n value: function widthOfString(string, size) {\n var glyphs = this.font.glyphsForString(\"\".concat(string));\n var advances = this.font.advancesForGlyphs(glyphs);\n var width = 0;\n var _iterator = _createForOfIteratorHelper(advances),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var advance = _step.value;\n width += advance;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var scale = size / 1000;\n return width * scale;\n }\n }], [{\n key: \"isStandardFont\",\n value: function isStandardFont(name) {\n return name in STANDARD_FONTS;\n }\n }]);\n return StandardFont;\n}(PDFFont);\nvar toHex = function toHex(num) {\n return \"0000\".concat(num.toString(16)).slice(-4);\n};\nvar EmbeddedFont = /*#__PURE__*/function (_PDFFont) {\n _inherits(EmbeddedFont, _PDFFont);\n var _super = _createSuper(EmbeddedFont);\n function EmbeddedFont(document, font, id) {\n var _this;\n _classCallCheck(this, EmbeddedFont);\n _this = _super.call(this);\n _this.document = document;\n _this.font = font;\n _this.id = id;\n _this.subset = _this.font.createSubset();\n _this.unicode = [[0]];\n _this.widths = [_this.font.getGlyph(0).advanceWidth];\n _this.name = _this.font.postscriptName;\n _this.scale = 1000 / _this.font.unitsPerEm;\n _this.ascender = _this.font.ascent * _this.scale;\n _this.descender = _this.font.descent * _this.scale;\n _this.xHeight = _this.font.xHeight * _this.scale;\n _this.capHeight = _this.font.capHeight * _this.scale;\n _this.lineGap = _this.font.lineGap * _this.scale;\n _this.bbox = _this.font.bbox;\n if (document.options.fontLayoutCache !== false) {\n _this.layoutCache = Object.create(null);\n }\n return _this;\n }\n _createClass(EmbeddedFont, [{\n key: \"layoutRun\",\n value: function layoutRun(text, features) {\n var run = this.font.layout(text, features); // Normalize position values\n\n for (var i = 0; i < run.positions.length; i++) {\n var position = run.positions[i];\n for (var key in position) {\n position[key] *= this.scale;\n }\n position.advanceWidth = run.glyphs[i].advanceWidth * this.scale;\n }\n return run;\n }\n }, {\n key: \"layoutCached\",\n value: function layoutCached(text) {\n if (!this.layoutCache) {\n return this.layoutRun(text);\n }\n var cached;\n if (cached = this.layoutCache[text]) {\n return cached;\n }\n var run = this.layoutRun(text);\n this.layoutCache[text] = run;\n return run;\n }\n }, {\n key: \"layout\",\n value: function layout(text, features, onlyWidth) {\n // Skip the cache if any user defined features are applied\n if (features) {\n return this.layoutRun(text, features);\n }\n var glyphs = onlyWidth ? null : [];\n var positions = onlyWidth ? null : [];\n var advanceWidth = 0; // Split the string by words to increase cache efficiency.\n // For this purpose, spaces and tabs are a good enough delimeter.\n\n var last = 0;\n var index = 0;\n while (index <= text.length) {\n var needle;\n if (index === text.length && last < index || (needle = text.charAt(index), [' ', '\\t'].includes(needle))) {\n var run = this.layoutCached(text.slice(last, ++index));\n if (!onlyWidth) {\n glyphs = glyphs.concat(run.glyphs);\n positions = positions.concat(run.positions);\n }\n advanceWidth += run.advanceWidth;\n last = index;\n } else {\n index++;\n }\n }\n return {\n glyphs: glyphs,\n positions: positions,\n advanceWidth: advanceWidth\n };\n }\n }, {\n key: \"encode\",\n value: function encode(text, features) {\n var _this$layout = this.layout(text, features),\n glyphs = _this$layout.glyphs,\n positions = _this$layout.positions;\n var res = [];\n for (var i = 0; i < glyphs.length; i++) {\n var glyph = glyphs[i];\n var gid = this.subset.includeGlyph(glyph.id);\n res.push(\"0000\".concat(gid.toString(16)).slice(-4));\n if (this.widths[gid] == null) {\n this.widths[gid] = glyph.advanceWidth * this.scale;\n }\n if (this.unicode[gid] == null) {\n this.unicode[gid] = glyph.codePoints;\n }\n }\n return [res, positions];\n }\n }, {\n key: \"widthOfString\",\n value: function widthOfString(string, size, features) {\n var width = this.layout(string, features, true).advanceWidth;\n var scale = size / 1000;\n return width * scale;\n }\n }, {\n key: \"embed\",\n value: function embed() {\n var _this2 = this;\n var isCFF = this.subset.cff != null;\n var fontFile = this.document.ref();\n if (isCFF) {\n fontFile.data.Subtype = 'CIDFontType0C';\n }\n this.subset.encodeStream().on('data', function (data) {\n return fontFile.write(data);\n }).on('end', function () {\n return fontFile.end();\n });\n var familyClass = ((this.font['OS/2'] != null ? this.font['OS/2'].sFamilyClass : undefined) || 0) >> 8;\n var flags = 0;\n if (this.font.post.isFixedPitch) {\n flags |= 1 << 0;\n }\n if (1 <= familyClass && familyClass <= 7) {\n flags |= 1 << 1;\n }\n flags |= 1 << 2; // assume the font uses non-latin characters\n\n if (familyClass === 10) {\n flags |= 1 << 3;\n }\n if (this.font.head.macStyle.italic) {\n flags |= 1 << 6;\n } // generate a tag (6 uppercase letters. 17 is the char code offset from '0' to 'A'. 73 will map to 'Z')\n\n var tag = [1, 2, 3, 4, 5, 6].map(function (i) {\n return String.fromCharCode((_this2.id.charCodeAt(i) || 73) + 17);\n }).join('');\n var name = tag + '+' + this.font.postscriptName;\n var bbox = this.font.bbox;\n var descriptor = this.document.ref({\n Type: 'FontDescriptor',\n FontName: name,\n Flags: flags,\n FontBBox: [bbox.minX * this.scale, bbox.minY * this.scale, bbox.maxX * this.scale, bbox.maxY * this.scale],\n ItalicAngle: this.font.italicAngle,\n Ascent: this.ascender,\n Descent: this.descender,\n CapHeight: (this.font.capHeight || this.font.ascent) * this.scale,\n XHeight: (this.font.xHeight || 0) * this.scale,\n StemV: 0\n }); // not sure how to calculate this\n\n if (isCFF) {\n descriptor.data.FontFile3 = fontFile;\n } else {\n descriptor.data.FontFile2 = fontFile;\n }\n if (this.document.subset) {\n var CIDSet = Buffer.from('FFFFFFFFC0', 'hex');\n var CIDSetRef = this.document.ref();\n CIDSetRef.write(CIDSet);\n CIDSetRef.end();\n descriptor.data.CIDSet = CIDSetRef;\n }\n descriptor.end();\n var descendantFontData = {\n Type: 'Font',\n Subtype: 'CIDFontType0',\n BaseFont: name,\n CIDSystemInfo: {\n Registry: new String('Adobe'),\n Ordering: new String('Identity'),\n Supplement: 0\n },\n FontDescriptor: descriptor,\n W: [0, this.widths]\n };\n if (!isCFF) {\n descendantFontData.Subtype = 'CIDFontType2';\n descendantFontData.CIDToGIDMap = 'Identity';\n }\n var descendantFont = this.document.ref(descendantFontData);\n descendantFont.end();\n this.dictionary.data = {\n Type: 'Font',\n Subtype: 'Type0',\n BaseFont: name,\n Encoding: 'Identity-H',\n DescendantFonts: [descendantFont],\n ToUnicode: this.toUnicodeCmap()\n };\n return this.dictionary.end();\n } // Maps the glyph ids encoded in the PDF back to unicode strings\n // Because of ligature substitutions and the like, there may be one or more\n // unicode characters represented by each glyph.\n }, {\n key: \"toUnicodeCmap\",\n value: function toUnicodeCmap() {\n var cmap = this.document.ref();\n var entries = [];\n var _iterator = _createForOfIteratorHelper(this.unicode),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var codePoints = _step.value;\n var encoded = []; // encode codePoints to utf16\n\n var _iterator2 = _createForOfIteratorHelper(codePoints),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var value = _step2.value;\n if (value > 0xffff) {\n value -= 0x10000;\n encoded.push(toHex(value >>> 10 & 0x3ff | 0xd800));\n value = 0xdc00 | value & 0x3ff;\n }\n encoded.push(toHex(value));\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n entries.push(\"<\".concat(encoded.join(' '), \">\"));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n cmap.end(\"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n /Registry (Adobe)\\n /Ordering (UCS)\\n /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000><ffff>\\nendcodespacerange\\n1 beginbfrange\\n<0000> <\".concat(toHex(entries.length - 1), \"> [\").concat(entries.join(' '), \"]\\nendbfrange\\nendcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\"));\n return cmap;\n }\n }]);\n return EmbeddedFont;\n}(PDFFont);\nvar PDFFontFactory = /*#__PURE__*/function () {\n function PDFFontFactory() {\n _classCallCheck(this, PDFFontFactory);\n }\n _createClass(PDFFontFactory, null, [{\n key: \"open\",\n value: function open(document, src, family, id) {\n var font;\n if (typeof src === 'string') {\n if (StandardFont.isStandardFont(src)) {\n return new StandardFont(document, src, id);\n }\n src = fs.readFileSync(src);\n }\n if (Buffer.isBuffer(src)) {\n font = _fontkit.default.create(src, family);\n } else if (src instanceof Uint8Array) {\n font = _fontkit.default.create(Buffer.from(src), family);\n } else if (src instanceof ArrayBuffer) {\n font = _fontkit.default.create(Buffer.from(new Uint8Array(src)), family);\n }\n if (font == null) {\n throw new Error('Not a supported font format or standard PDF font.');\n }\n return new EmbeddedFont(document, font, id);\n }\n }]);\n return PDFFontFactory;\n}();\nvar FontsMixin = {\n initFonts: function initFonts() {\n var defaultFont = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Helvetica';\n // Lookup table for embedded fonts\n this._fontFamilies = {};\n this._fontCount = 0; // Font state\n\n this._fontSize = 12;\n this._font = null;\n this._registeredFonts = {}; // Set the default font\n\n if (defaultFont) {\n this.font(defaultFont);\n }\n },\n font: function font(src, family, size) {\n var cacheKey, font;\n if (typeof family === 'number') {\n size = family;\n family = null;\n } // check registered fonts if src is a string\n\n if (typeof src === 'string' && this._registeredFonts[src]) {\n cacheKey = src;\n var _this$_registeredFont = this._registeredFonts[src];\n src = _this$_registeredFont.src;\n family = _this$_registeredFont.family;\n } else {\n cacheKey = family || src;\n if (typeof cacheKey !== 'string') {\n cacheKey = null;\n }\n }\n if (size != null) {\n this.fontSize(size);\n } // fast path: check if the font is already in the PDF\n\n if (font = this._fontFamilies[cacheKey]) {\n this._font = font;\n return this;\n } // load the font\n\n var id = \"F\".concat(++this._fontCount);\n this._font = PDFFontFactory.open(this, src, family, id); // check for existing font familes with the same name already in the PDF\n // useful if the font was passed as a buffer\n\n if (font = this._fontFamilies[this._font.name]) {\n this._font = font;\n return this;\n } // save the font for reuse later\n\n if (cacheKey) {\n this._fontFamilies[cacheKey] = this._font;\n }\n if (this._font.name) {\n this._fontFamilies[this._font.name] = this._font;\n }\n return this;\n },\n fontSize: function fontSize(_fontSize) {\n this._fontSize = _fontSize;\n return this;\n },\n currentLineHeight: function currentLineHeight(includeGap) {\n if (includeGap == null) {\n includeGap = false;\n }\n return this._font.lineHeight(this._fontSize, includeGap);\n },\n registerFont: function registerFont(name, src, family) {\n this._registeredFonts[name] = {\n src: src,\n family: family\n };\n return this;\n }\n};\nvar LineWrapper = /*#__PURE__*/function (_EventEmitter) {\n _inherits(LineWrapper, _EventEmitter);\n var _super = _createSuper(LineWrapper);\n function LineWrapper(document, options) {\n var _this;\n _classCallCheck(this, LineWrapper);\n _this = _super.call(this);\n _this.document = document;\n _this.indent = options.indent || 0;\n _this.characterSpacing = options.characterSpacing || 0;\n _this.wordSpacing = options.wordSpacing === 0;\n _this.columns = options.columns || 1;\n _this.columnGap = options.columnGap != null ? options.columnGap : 18; // 1/4 inch\n\n _this.lineWidth = (options.width - _this.columnGap * (_this.columns - 1)) / _this.columns;\n _this.spaceLeft = _this.lineWidth;\n _this.startX = _this.document.x;\n _this.startY = _this.document.y;\n _this.column = 1;\n _this.ellipsis = options.ellipsis;\n _this.continuedX = 0;\n _this.features = options.features; // calculate the maximum Y position the text can appear at\n\n if (options.height != null) {\n _this.height = options.height;\n _this.maxY = _this.startY + options.height;\n } else {\n _this.maxY = _this.document.page.maxY();\n } // handle paragraph indents\n\n _this.on('firstLine', function (options) {\n // if this is the first line of the text segment, and\n // we're continuing where we left off, indent that much\n // otherwise use the user specified indent option\n var indent = _this.continuedX || _this.indent;\n _this.document.x += indent;\n _this.lineWidth -= indent;\n return _this.once('line', function () {\n _this.document.x -= indent;\n _this.lineWidth += indent;\n if (options.continued && !_this.continuedX) {\n _this.continuedX = _this.indent;\n }\n if (!options.continued) {\n return _this.continuedX = 0;\n }\n });\n }); // handle left aligning last lines of paragraphs\n\n _this.on('lastLine', function (options) {\n var align = options.align;\n if (align === 'justify') {\n options.align = 'left';\n }\n _this.lastLine = true;\n return _this.once('line', function () {\n _this.document.y += options.paragraphGap || 0;\n options.align = align;\n return _this.lastLine = false;\n });\n });\n return _this;\n }\n _createClass(LineWrapper, [{\n key: \"wordWidth\",\n value: function wordWidth(word) {\n return this.document.widthOfString(word, this) + this.characterSpacing + this.wordSpacing;\n }\n }, {\n key: \"eachWord\",\n value: function eachWord(text, fn) {\n // setup a unicode line breaker\n var bk;\n var breaker = new _linebreak.default(text);\n var last = null;\n var wordWidths = Object.create(null);\n while (bk = breaker.nextBreak()) {\n var shouldContinue;\n var word = text.slice((last != null ? last.position : undefined) || 0, bk.position);\n var w = wordWidths[word] != null ? wordWidths[word] : wordWidths[word] = this.wordWidth(word); // if the word is longer than the whole line, chop it up\n // TODO: break by grapheme clusters, not JS string characters\n\n if (w > this.lineWidth + this.continuedX) {\n // make some fake break objects\n var lbk = last;\n var fbk = {};\n while (word.length) {\n // fit as much of the word as possible into the space we have\n var l, mightGrow;\n if (w > this.spaceLeft) {\n // start our check at the end of our available space - this method is faster than a loop of each character and it resolves\n // an issue with long loops when processing massive words, such as a huge number of spaces\n l = Math.ceil(this.spaceLeft / (w / word.length));\n w = this.wordWidth(word.slice(0, l));\n mightGrow = w <= this.spaceLeft && l < word.length;\n } else {\n l = word.length;\n }\n var mustShrink = w > this.spaceLeft && l > 0; // shrink or grow word as necessary after our near-guess above\n\n while (mustShrink || mightGrow) {\n if (mustShrink) {\n w = this.wordWidth(word.slice(0, --l));\n mustShrink = w > this.spaceLeft && l > 0;\n } else {\n w = this.wordWidth(word.slice(0, ++l));\n mustShrink = w > this.spaceLeft && l > 0;\n mightGrow = w <= this.spaceLeft && l < word.length;\n }\n } // check for the edge case where a single character cannot fit into a line.\n\n if (l === 0 && this.spaceLeft === this.lineWidth) {\n l = 1;\n } // send a required break unless this is the last piece and a linebreak is not specified\n\n fbk.required = bk.required || l < word.length;\n shouldContinue = fn(word.slice(0, l), w, fbk, lbk);\n lbk = {\n required: false\n }; // get the remaining piece of the word\n\n word = word.slice(l);\n w = this.wordWidth(word);\n if (shouldContinue === false) {\n break;\n }\n }\n } else {\n // otherwise just emit the break as it was given to us\n shouldContinue = fn(word, w, bk, last);\n }\n if (shouldContinue === false) {\n break;\n }\n last = bk;\n }\n }\n }, {\n key: \"wrap\",\n value: function wrap(text, options) {\n var _this2 = this;\n\n // override options from previous continued fragments\n if (options.indent != null) {\n this.indent = options.indent;\n }\n if (options.characterSpacing != null) {\n this.characterSpacing = options.characterSpacing;\n }\n if (options.wordSpacing != null) {\n this.wordSpacing = options.wordSpacing;\n }\n if (options.ellipsis != null) {\n this.ellipsis = options.ellipsis;\n } // make sure we're actually on the page\n // and that the first line of is never by\n // itself at the bottom of a page (orphans)\n\n var nextY = this.document.y + this.document.currentLineHeight(true);\n if (this.document.y > this.maxY || nextY > this.maxY) {\n this.nextSection();\n }\n var buffer = '';\n var textWidth = 0;\n var wc = 0;\n var lc = 0;\n var y = this.document.y; // used to reset Y pos if options.continued (below)\n\n var emitLine = function emitLine() {\n options.textWidth = textWidth + _this2.wordSpacing * (wc - 1);\n options.wordCount = wc;\n options.lineWidth = _this2.lineWidth;\n y = _this2.document.y;\n _this2.emit('line', buffer, options, _this2);\n return lc++;\n };\n this.emit('sectionStart', options, this);\n this.eachWord(text, function (word, w, bk, last) {\n if (last == null || last.required) {\n _this2.emit('firstLine', options, _this2);\n _this2.spaceLeft = _this2.lineWidth;\n }\n if (w <= _this2.spaceLeft) {\n buffer += word;\n textWidth += w;\n wc++;\n }\n if (bk.required || w > _this2.spaceLeft) {\n // if the user specified a max height and an ellipsis, and is about to pass the\n // max height and max columns after the next line, append the ellipsis\n var lh = _this2.document.currentLineHeight(true);\n if (_this2.height != null && _this2.ellipsis && _this2.document.y + lh * 2 > _this2.maxY && _this2.column >= _this2.columns) {\n if (_this2.ellipsis === true) {\n _this2.ellipsis = '…';\n } // map default ellipsis character\n\n buffer = buffer.replace(/\\s+$/, '');\n textWidth = _this2.wordWidth(buffer + _this2.ellipsis); // remove characters from the buffer until the ellipsis fits\n // to avoid infinite loop need to stop while-loop if buffer is empty string\n\n while (buffer && textWidth > _this2.lineWidth) {\n buffer = buffer.slice(0, -1).replace(/\\s+$/, '');\n textWidth = _this2.wordWidth(buffer + _this2.ellipsis);\n } // need to add ellipsis only if there is enough space for it\n\n if (textWidth <= _this2.lineWidth) {\n buffer = buffer + _this2.ellipsis;\n }\n textWidth = _this2.wordWidth(buffer);\n }\n if (bk.required) {\n if (w > _this2.spaceLeft) {\n emitLine();\n buffer = word;\n textWidth = w;\n wc = 1;\n }\n _this2.emit('lastLine', options, _this2);\n }\n emitLine(); // if we've reached the edge of the page,\n // continue on a new page or column\n\n if (_this2.document.y + lh > _this2.maxY) {\n var shouldContinue = _this2.nextSection(); // stop if we reached the maximum height\n\n if (!shouldContinue) {\n wc = 0;\n buffer = '';\n return false;\n }\n } // reset the space left and buffer\n\n if (bk.required) {\n _this2.spaceLeft = _this2.lineWidth;\n buffer = '';\n textWidth = 0;\n return wc = 0;\n } else {\n // reset the space left and buffer\n _this2.spaceLeft = _this2.lineWidth - w;\n buffer = word;\n textWidth = w;\n return wc = 1;\n }\n } else {\n return _this2.spaceLeft -= w;\n }\n });\n if (wc > 0) {\n this.emit('lastLine', options, this);\n emitLine();\n }\n this.emit('sectionEnd', options, this); // if the wrap is set to be continued, save the X position\n // to start the first line of the next segment at, and reset\n // the y position\n\n if (options.continued === true) {\n if (lc > 1) {\n this.continuedX = 0;\n }\n this.continuedX += options.textWidth || 0;\n return this.document.y = y;\n } else {\n return this.document.x = this.startX;\n }\n }\n }, {\n key: \"nextSection\",\n value: function nextSection(options) {\n this.emit('sectionEnd', options, this);\n if (++this.column > this.columns) {\n // if a max height was specified by the user, we're done.\n // otherwise, the default is to make a new page at the bottom.\n if (this.height != null) {\n return false;\n }\n this.document.continueOnNewPage();\n this.column = 1;\n this.startY = this.document.page.margins.top;\n this.maxY = this.document.page.maxY();\n this.document.x = this.startX;\n if (this.document._fillColor) {\n var _this$document;\n (_this$document = this.document).fillColor.apply(_this$document, _toConsumableArray(this.document._fillColor));\n }\n this.emit('pageBreak', options, this);\n } else {\n this.document.x += this.lineWidth + this.columnGap;\n this.document.y = this.startY;\n this.emit('columnBreak', options, this);\n }\n this.emit('sectionStart', options, this);\n return true;\n }\n }]);\n return LineWrapper;\n}(_events.EventEmitter);\nvar number$2 = PDFObject.number;\nvar TextMixin = {\n initText: function initText() {\n this._line = this._line.bind(this); // Current coordinates\n\n this.x = 0;\n this.y = 0;\n return this._lineGap = 0;\n },\n lineGap: function lineGap(_lineGap) {\n this._lineGap = _lineGap;\n return this;\n },\n moveDown: function moveDown(lines) {\n if (lines == null) {\n lines = 1;\n }\n this.y += this.currentLineHeight(true) * lines + this._lineGap;\n return this;\n },\n moveUp: function moveUp(lines) {\n if (lines == null) {\n lines = 1;\n }\n this.y -= this.currentLineHeight(true) * lines + this._lineGap;\n return this;\n },\n _text: function _text(text, x, y, options, lineCallback) {\n var _this = this;\n options = this._initOptions(x, y, options); // Convert text to a string\n\n text = text == null ? '' : \"\".concat(text); // if the wordSpacing option is specified, remove multiple consecutive spaces\n\n if (options.wordSpacing) {\n text = text.replace(/\\s{2,}/g, ' ');\n }\n var addStructure = function addStructure() {\n if (options.structParent) {\n options.structParent.add(_this.struct(options.structType || 'P', [_this.markStructureContent(options.structType || 'P')]));\n }\n }; // word wrapping\n\n if (options.width) {\n var wrapper = this._wrapper;\n if (!wrapper) {\n wrapper = new LineWrapper(this, options);\n wrapper.on('line', lineCallback);\n wrapper.on('firstLine', addStructure);\n }\n this._wrapper = options.continued ? wrapper : null;\n this._textOptions = options.continued ? options : null;\n wrapper.wrap(text, options); // render paragraphs as single lines\n } else {\n var _iterator = _createForOfIteratorHelper(text.split('\\n')),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var line = _step.value;\n addStructure();\n lineCallback(line, options);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return this;\n },\n text: function text(_text2, x, y, options) {\n return this._text(_text2, x, y, options, this._line);\n },\n widthOfString: function widthOfString(string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this._font.widthOfString(string, this._fontSize, options.features) + (options.characterSpacing || 0) * (string.length - 1);\n },\n heightOfString: function heightOfString(text, options) {\n var _this2 = this;\n var x = this.x,\n y = this.y;\n options = this._initOptions(options);\n options.height = Infinity; // don't break pages\n\n var lineGap = options.lineGap || this._lineGap || 0;\n this._text(text, this.x, this.y, options, function () {\n return _this2.y += _this2.currentLineHeight(true) + lineGap;\n });\n var height = this.y - y;\n this.x = x;\n this.y = y;\n return height;\n },\n list: function list(_list, x, y, options, wrapper) {\n var _this3 = this;\n options = this._initOptions(x, y, options);\n var listType = options.listType || 'bullet';\n var unit = Math.round(this._font.ascender / 1000 * this._fontSize);\n var midLine = unit / 2;\n var r = options.bulletRadius || unit / 3;\n var indent = options.textIndent || (listType === 'bullet' ? r * 5 : unit * 2);\n var itemIndent = options.bulletIndent || (listType === 'bullet' ? r * 8 : unit * 2);\n var level = 1;\n var items = [];\n var levels = [];\n var numbers = [];\n var flatten = function flatten(list) {\n var n = 1;\n for (var _i = 0; _i < list.length; _i++) {\n var item = list[_i];\n if (Array.isArray(item)) {\n level++;\n flatten(item);\n level--;\n } else {\n items.push(item);\n levels.push(level);\n if (listType !== 'bullet') {\n numbers.push(n++);\n }\n }\n }\n };\n flatten(_list);\n var label = function label(n) {\n switch (listType) {\n case 'numbered':\n return \"\".concat(n, \".\");\n case 'lettered':\n var letter = String.fromCharCode((n - 1) % 26 + 65);\n var times = Math.floor((n - 1) / 26 + 1);\n var text = Array(times + 1).join(letter);\n return \"\".concat(text, \".\");\n }\n };\n wrapper = new LineWrapper(this, options);\n wrapper.on('line', this._line);\n level = 1;\n var i = 0;\n wrapper.on('firstLine', function () {\n var item, itemType, labelType, bodyType;\n if (options.structParent) {\n if (options.structTypes) {\n var _options$structTypes = _slicedToArray(options.structTypes, 3);\n itemType = _options$structTypes[0];\n labelType = _options$structTypes[1];\n bodyType = _options$structTypes[2];\n } else {\n itemType = 'LI';\n labelType = 'Lbl';\n bodyType = 'LBody';\n }\n }\n if (itemType) {\n item = _this3.struct(itemType);\n options.structParent.add(item);\n } else if (options.structParent) {\n item = options.structParent;\n }\n var l;\n if ((l = levels[i++]) !== level) {\n var diff = itemIndent * (l - level);\n _this3.x += diff;\n wrapper.lineWidth -= diff;\n level = l;\n }\n if (item && (labelType || bodyType)) {\n item.add(_this3.struct(labelType || bodyType, [_this3.markStructureContent(labelType || bodyType)]));\n }\n switch (listType) {\n case 'bullet':\n _this3.circle(_this3.x - indent + r, _this3.y + midLine, r);\n _this3.fill();\n break;\n case 'numbered':\n case 'lettered':\n var text = label(numbers[i - 1]);\n _this3._fragment(text, _this3.x - indent, _this3.y, options);\n break;\n }\n if (item && labelType && bodyType) {\n item.add(_this3.struct(bodyType, [_this3.markStructureContent(bodyType)]));\n }\n if (item && item !== options.structParent) {\n item.end();\n }\n });\n wrapper.on('sectionStart', function () {\n var pos = indent + itemIndent * (level - 1);\n _this3.x += pos;\n return wrapper.lineWidth -= pos;\n });\n wrapper.on('sectionEnd', function () {\n var pos = indent + itemIndent * (level - 1);\n _this3.x -= pos;\n return wrapper.lineWidth += pos;\n });\n wrapper.wrap(items.join('\\n'), options);\n return this;\n },\n _initOptions: function _initOptions() {\n var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var y = arguments.length > 1 ? arguments[1] : undefined;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (typeof x === 'object') {\n options = x;\n x = null;\n } // clone options object\n\n var result = Object.assign({}, options); // extend options with previous values for continued text\n\n if (this._textOptions) {\n for (var key in this._textOptions) {\n var val = this._textOptions[key];\n if (key !== 'continued') {\n if (result[key] === undefined) {\n result[key] = val;\n }\n }\n }\n } // Update the current position\n\n if (x != null) {\n this.x = x;\n }\n if (y != null) {\n this.y = y;\n } // wrap to margins if no x or y position passed\n\n if (result.lineBreak !== false) {\n if (result.width == null) {\n result.width = this.page.width - this.x - this.page.margins.right;\n }\n result.width = Math.max(result.width, 0);\n }\n if (!result.columns) {\n result.columns = 0;\n }\n if (result.columnGap == null) {\n result.columnGap = 18;\n } // 1/4 inch\n\n return result;\n },\n _line: function _line(text) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var wrapper = arguments.length > 2 ? arguments[2] : undefined;\n this._fragment(text, this.x, this.y, options);\n var lineGap = options.lineGap || this._lineGap || 0;\n if (!wrapper) {\n return this.x += this.widthOfString(text);\n } else {\n return this.y += this.currentLineHeight(true) + lineGap;\n }\n },\n _fragment: function _fragment(text, x, y, options) {\n var _this4 = this;\n var dy, encoded, i, positions, textWidth, words;\n text = \"\".concat(text).replace(/\\n/g, '');\n if (text.length === 0) {\n return;\n } // handle options\n\n var align = options.align || 'left';\n var wordSpacing = options.wordSpacing || 0;\n var characterSpacing = options.characterSpacing || 0; // text alignments\n\n if (options.width) {\n switch (align) {\n case 'right':\n textWidth = this.widthOfString(text.replace(/\\s+$/, ''), options);\n x += options.lineWidth - textWidth;\n break;\n case 'center':\n x += options.lineWidth / 2 - options.textWidth / 2;\n break;\n case 'justify':\n // calculate the word spacing value\n words = text.trim().split(/\\s+/);\n textWidth = this.widthOfString(text.replace(/\\s+/g, ''), options);\n var spaceWidth = this.widthOfString(' ') + characterSpacing;\n wordSpacing = Math.max(0, (options.lineWidth - textWidth) / Math.max(1, words.length - 1) - spaceWidth);\n break;\n }\n } // text baseline alignments based on http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling\n\n if (typeof options.baseline === 'number') {\n dy = -options.baseline;\n } else {\n switch (options.baseline) {\n case 'svg-middle':\n dy = 0.5 * this._font.xHeight;\n break;\n case 'middle':\n case 'svg-central':\n dy = 0.5 * (this._font.descender + this._font.ascender);\n break;\n case 'bottom':\n case 'ideographic':\n dy = this._font.descender;\n break;\n case 'alphabetic':\n dy = 0;\n break;\n case 'mathematical':\n dy = 0.5 * this._font.ascender;\n break;\n case 'hanging':\n dy = 0.8 * this._font.ascender;\n break;\n case 'top':\n dy = this._font.ascender;\n break;\n default:\n dy = this._font.ascender;\n }\n dy = dy / 1000 * this._fontSize;\n } // calculate the actual rendered width of the string after word and character spacing\n\n var renderedWidth = options.textWidth + wordSpacing * (options.wordCount - 1) + characterSpacing * (text.length - 1); // create link annotations if the link option is given\n\n if (options.link != null) {\n this.link(x, y, renderedWidth, this.currentLineHeight(), options.link);\n }\n if (options.goTo != null) {\n this.goTo(x, y, renderedWidth, this.currentLineHeight(), options.goTo);\n }\n if (options.destination != null) {\n this.addNamedDestination(options.destination, 'XYZ', x, y, null);\n } // create underline\n\n if (options.underline) {\n this.save();\n if (!options.stroke) {\n this.strokeColor.apply(this, _toConsumableArray(this._fillColor || []));\n }\n var lineWidth = this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\n this.lineWidth(lineWidth);\n var lineY = y + this.currentLineHeight() - lineWidth;\n this.moveTo(x, lineY);\n this.lineTo(x + renderedWidth, lineY);\n this.stroke();\n this.restore();\n } // create strikethrough line\n\n if (options.strike) {\n this.save();\n if (!options.stroke) {\n this.strokeColor.apply(this, _toConsumableArray(this._fillColor || []));\n }\n var _lineWidth = this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\n this.lineWidth(_lineWidth);\n var _lineY = y + this.currentLineHeight() / 2;\n this.moveTo(x, _lineY);\n this.lineTo(x + renderedWidth, _lineY);\n this.stroke();\n this.restore();\n }\n this.save(); // oblique (angle in degrees or boolean)\n\n if (options.oblique) {\n var skew;\n if (typeof options.oblique === 'number') {\n skew = -Math.tan(options.oblique * Math.PI / 180);\n } else {\n skew = -0.25;\n }\n this.transform(1, 0, 0, 1, x, y);\n this.transform(1, 0, skew, 1, -skew * dy, 0);\n this.transform(1, 0, 0, 1, -x, -y);\n } // flip coordinate system\n\n this.transform(1, 0, 0, -1, 0, this.page.height);\n y = this.page.height - y - dy; // add current font to page if necessary\n\n if (this.page.fonts[this._font.id] == null) {\n this.page.fonts[this._font.id] = this._font.ref();\n } // begin the text object\n\n this.addContent('BT'); // text position\n\n this.addContent(\"1 0 0 1 \".concat(number$2(x), \" \").concat(number$2(y), \" Tm\")); // font and font size\n\n this.addContent(\"/\".concat(this._font.id, \" \").concat(number$2(this._fontSize), \" Tf\")); // rendering mode\n\n var mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;\n if (mode) {\n this.addContent(\"\".concat(mode, \" Tr\"));\n } // Character spacing\n\n if (characterSpacing) {\n this.addContent(\"\".concat(number$2(characterSpacing), \" Tc\"));\n } // Add the actual text\n // If we have a word spacing value, we need to encode each word separately\n // since the normal Tw operator only works on character code 32, which isn't\n // used for embedded fonts.\n\n if (wordSpacing) {\n words = text.trim().split(/\\s+/);\n wordSpacing += this.widthOfString(' ') + characterSpacing;\n wordSpacing *= 1000 / this._fontSize;\n encoded = [];\n positions = [];\n var _iterator2 = _createForOfIteratorHelper(words),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var word = _step2.value;\n var _this$_font$encode = this._font.encode(word, options.features),\n _this$_font$encode2 = _slicedToArray(_this$_font$encode, 2),\n encodedWord = _this$_font$encode2[0],\n positionsWord = _this$_font$encode2[1];\n encoded = encoded.concat(encodedWord);\n positions = positions.concat(positionsWord); // add the word spacing to the end of the word\n // clone object because of cache\n\n var space = {};\n var object = positions[positions.length - 1];\n for (var key in object) {\n var val = object[key];\n space[key] = val;\n }\n space.xAdvance += wordSpacing;\n positions[positions.length - 1] = space;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else {\n var _this$_font$encode3 = this._font.encode(text, options.features);\n var _this$_font$encode4 = _slicedToArray(_this$_font$encode3, 2);\n encoded = _this$_font$encode4[0];\n positions = _this$_font$encode4[1];\n }\n var scale = this._fontSize / 1000;\n var commands = [];\n var last = 0;\n var hadOffset = false; // Adds a segment of text to the TJ command buffer\n\n var addSegment = function addSegment(cur) {\n if (last < cur) {\n var hex = encoded.slice(last, cur).join('');\n var advance = positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;\n commands.push(\"<\".concat(hex, \"> \").concat(number$2(-advance)));\n }\n return last = cur;\n }; // Flushes the current TJ commands to the output stream\n\n var flush = function flush(i) {\n addSegment(i);\n if (commands.length > 0) {\n _this4.addContent(\"[\".concat(commands.join(' '), \"] TJ\"));\n return commands.length = 0;\n }\n };\n for (i = 0; i < positions.length; i++) {\n // If we have an x or y offset, we have to break out of the current TJ command\n // so we can move the text position.\n var pos = positions[i];\n if (pos.xOffset || pos.yOffset) {\n // Flush the current buffer\n flush(i); // Move the text position and flush just the current character\n\n this.addContent(\"1 0 0 1 \".concat(number$2(x + pos.xOffset * scale), \" \").concat(number$2(y + pos.yOffset * scale), \" Tm\"));\n flush(i + 1);\n hadOffset = true;\n } else {\n // If the last character had an offset, reset the text position\n if (hadOffset) {\n this.addContent(\"1 0 0 1 \".concat(number$2(x), \" \").concat(number$2(y), \" Tm\"));\n hadOffset = false;\n } // Group segments that don't have any advance adjustments\n\n if (pos.xAdvance - pos.advanceWidth !== 0) {\n addSegment(i + 1);\n }\n }\n x += pos.xAdvance * scale;\n } // Flush any remaining commands\n\n flush(i); // end the text object\n\n this.addContent('ET'); // restore flipped coordinate system\n\n return this.restore();\n }\n};\nvar MARKERS = [0xffc0, 0xffc1, 0xffc2, 0xffc3, 0xffc5, 0xffc6, 0xffc7, 0xffc8, 0xffc9, 0xffca, 0xffcb, 0xffcc, 0xffcd, 0xffce, 0xffcf];\nvar COLOR_SPACE_MAP = {\n 1: 'DeviceGray',\n 3: 'DeviceRGB',\n 4: 'DeviceCMYK'\n};\nvar JPEG = /*#__PURE__*/function () {\n function JPEG(data, label) {\n _classCallCheck(this, JPEG);\n var marker;\n this.data = data;\n this.label = label;\n if (this.data.readUInt16BE(0) !== 0xffd8) {\n throw 'SOI not found in JPEG';\n }\n var pos = 2;\n while (pos < this.data.length) {\n marker = this.data.readUInt16BE(pos);\n pos += 2;\n if (MARKERS.includes(marker)) {\n break;\n }\n pos += this.data.readUInt16BE(pos);\n }\n if (!MARKERS.includes(marker)) {\n throw 'Invalid JPEG.';\n }\n pos += 2;\n this.bits = this.data[pos++];\n this.height = this.data.readUInt16BE(pos);\n pos += 2;\n this.width = this.data.readUInt16BE(pos);\n pos += 2;\n var channels = this.data[pos++];\n this.colorSpace = COLOR_SPACE_MAP[channels];\n this.obj = null;\n }\n _createClass(JPEG, [{\n key: \"embed\",\n value: function embed(document) {\n if (this.obj) {\n return;\n }\n this.obj = document.ref({\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: this.bits,\n Width: this.width,\n Height: this.height,\n ColorSpace: this.colorSpace,\n Filter: 'DCTDecode'\n }); // add extra decode params for CMYK images. By swapping the\n // min and max values from the default, we invert the colors. See\n // section 4.8.4 of the spec.\n\n if (this.colorSpace === 'DeviceCMYK') {\n this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0];\n }\n this.obj.end(this.data); // free memory\n\n return this.data = null;\n }\n }]);\n return JPEG;\n}();\nvar PNGImage = /*#__PURE__*/function () {\n function PNGImage(data, label) {\n _classCallCheck(this, PNGImage);\n this.label = label;\n this.image = new _pngJs.default(data);\n this.width = this.image.width;\n this.height = this.image.height;\n this.imgData = this.image.imgData;\n this.obj = null;\n }\n _createClass(PNGImage, [{\n key: \"embed\",\n value: function embed(document) {\n var dataDecoded = false;\n this.document = document;\n if (this.obj) {\n return;\n }\n var hasAlphaChannel = this.image.hasAlphaChannel;\n var isInterlaced = this.image.interlaceMethod === 1;\n this.obj = this.document.ref({\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: hasAlphaChannel ? 8 : this.image.bits,\n Width: this.width,\n Height: this.height,\n Filter: 'FlateDecode'\n });\n if (!hasAlphaChannel) {\n var params = this.document.ref({\n Predictor: isInterlaced ? 1 : 15,\n Colors: this.image.colors,\n BitsPerComponent: this.image.bits,\n Columns: this.width\n });\n this.obj.data['DecodeParms'] = params;\n params.end();\n }\n if (this.image.palette.length === 0) {\n this.obj.data['ColorSpace'] = this.image.colorSpace;\n } else {\n // embed the color palette in the PDF as an object stream\n var palette = this.document.ref();\n palette.end(Buffer.from(this.image.palette)); // build the color space array for the image\n\n this.obj.data['ColorSpace'] = ['Indexed', 'DeviceRGB', this.image.palette.length / 3 - 1, palette];\n } // For PNG color types 0, 2 and 3, the transparency data is stored in\n // a dedicated PNG chunk.\n\n if (this.image.transparency.grayscale != null) {\n // Use Color Key Masking (spec section 4.8.5)\n // An array with N elements, where N is two times the number of color components.\n var val = this.image.transparency.grayscale;\n this.obj.data['Mask'] = [val, val];\n } else if (this.image.transparency.rgb) {\n // Use Color Key Masking (spec section 4.8.5)\n // An array with N elements, where N is two times the number of color components.\n var rgb = this.image.transparency.rgb;\n var mask = [];\n var _iterator = _createForOfIteratorHelper(rgb),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var x = _step.value;\n mask.push(x, x);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n this.obj.data['Mask'] = mask;\n } else if (this.image.transparency.indexed) {\n // Create a transparency SMask for the image based on the data\n // in the PLTE and tRNS sections. See below for details on SMasks.\n dataDecoded = true;\n return this.loadIndexedAlphaChannel();\n } else if (hasAlphaChannel) {\n // For PNG color types 4 and 6, the transparency data is stored as a alpha\n // channel mixed in with the main image data. Separate this data out into an\n // SMask object and store it separately in the PDF.\n dataDecoded = true;\n return this.splitAlphaChannel();\n }\n if (isInterlaced && !dataDecoded) {\n return this.decodeData();\n }\n this.finalize();\n }\n }, {\n key: \"finalize\",\n value: function finalize() {\n if (this.alphaChannel) {\n var sMask = this.document.ref({\n Type: 'XObject',\n Subtype: 'Image',\n Height: this.height,\n Width: this.width,\n BitsPerComponent: 8,\n Filter: 'FlateDecode',\n ColorSpace: 'DeviceGray',\n Decode: [0, 1]\n });\n sMask.end(this.alphaChannel);\n this.obj.data['SMask'] = sMask;\n } // add the actual image data\n\n this.obj.end(this.imgData); // free memory\n\n this.image = null;\n return this.imgData = null;\n }\n }, {\n key: \"splitAlphaChannel\",\n value: function splitAlphaChannel() {\n var _this = this;\n return this.image.decodePixels(function (pixels) {\n var a, p;\n var colorCount = _this.image.colors;\n var pixelCount = _this.width * _this.height;\n var imgData = Buffer.alloc(pixelCount * colorCount);\n var alphaChannel = Buffer.alloc(pixelCount);\n var i = p = a = 0;\n var len = pixels.length; // For 16bit images copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first)\n\n var skipByteCount = _this.image.bits === 16 ? 1 : 0;\n while (i < len) {\n for (var colorIndex = 0; colorIndex < colorCount; colorIndex++) {\n imgData[p++] = pixels[i++];\n i += skipByteCount;\n }\n alphaChannel[a++] = pixels[i++];\n i += skipByteCount;\n }\n _this.imgData = _zlib.default.deflateSync(imgData);\n _this.alphaChannel = _zlib.default.deflateSync(alphaChannel);\n return _this.finalize();\n });\n }\n }, {\n key: \"loadIndexedAlphaChannel\",\n value: function loadIndexedAlphaChannel() {\n var _this2 = this;\n var transparency = this.image.transparency.indexed;\n return this.image.decodePixels(function (pixels) {\n var alphaChannel = Buffer.alloc(_this2.width * _this2.height);\n var i = 0;\n for (var j = 0, end = pixels.length; j < end; j++) {\n alphaChannel[i++] = transparency[pixels[j]];\n }\n _this2.alphaChannel = _zlib.default.deflateSync(alphaChannel);\n return _this2.finalize();\n });\n }\n }, {\n key: \"decodeData\",\n value: function decodeData() {\n var _this3 = this;\n this.image.decodePixels(function (pixels) {\n _this3.imgData = _zlib.default.deflateSync(pixels);\n _this3.finalize();\n });\n }\n }]);\n return PNGImage;\n}();\nvar PDFImage = /*#__PURE__*/function () {\n function PDFImage() {\n _classCallCheck(this, PDFImage);\n }\n _createClass(PDFImage, null, [{\n key: \"open\",\n value: function open(src, label) {\n var data;\n if (Buffer.isBuffer(src)) {\n data = src;\n } else if (src instanceof ArrayBuffer) {\n data = Buffer.from(new Uint8Array(src));\n } else {\n var match;\n if (match = /^data:.+;base64,(.*)$/.exec(src)) {\n data = Buffer.from(match[1], 'base64');\n } else {\n data = fs.readFileSync(src);\n if (!data) {\n return;\n }\n }\n }\n if (data[0] === 0xff && data[1] === 0xd8) {\n return new JPEG(data, label);\n } else if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') {\n return new PNGImage(data, label);\n } else {\n throw new Error('Unknown image format.');\n }\n }\n }]);\n return PDFImage;\n}();\nvar ImagesMixin = {\n initImages: function initImages() {\n this._imageRegistry = {};\n return this._imageCount = 0;\n },\n image: function image(src, x, y) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var bh, bp, bw, image, ip, left, left1;\n if (typeof x === 'object') {\n options = x;\n x = null;\n }\n x = (left = x != null ? x : options.x) != null ? left : this.x;\n y = (left1 = y != null ? y : options.y) != null ? left1 : this.y;\n if (typeof src === 'string') {\n image = this._imageRegistry[src];\n }\n if (!image) {\n if (src.width && src.height) {\n image = src;\n } else {\n image = this.openImage(src);\n }\n }\n if (!image.obj) {\n image.embed(this);\n }\n if (this.page.xobjects[image.label] == null) {\n this.page.xobjects[image.label] = image.obj;\n }\n var w = options.width || image.width;\n var h = options.height || image.height;\n if (options.width && !options.height) {\n var wp = w / image.width;\n w = image.width * wp;\n h = image.height * wp;\n } else if (options.height && !options.width) {\n var hp = h / image.height;\n w = image.width * hp;\n h = image.height * hp;\n } else if (options.scale) {\n w = image.width * options.scale;\n h = image.height * options.scale;\n } else if (options.fit) {\n var _options$fit = _slicedToArray(options.fit, 2);\n bw = _options$fit[0];\n bh = _options$fit[1];\n bp = bw / bh;\n ip = image.width / image.height;\n if (ip > bp) {\n w = bw;\n h = bw / ip;\n } else {\n h = bh;\n w = bh * ip;\n }\n } else if (options.cover) {\n var _options$cover = _slicedToArray(options.cover, 2);\n bw = _options$cover[0];\n bh = _options$cover[1];\n bp = bw / bh;\n ip = image.width / image.height;\n if (ip > bp) {\n h = bh;\n w = bh * ip;\n } else {\n w = bw;\n h = bw / ip;\n }\n }\n if (options.fit || options.cover) {\n if (options.align === 'center') {\n x = x + bw / 2 - w / 2;\n } else if (options.align === 'right') {\n x = x + bw - w;\n }\n if (options.valign === 'center') {\n y = y + bh / 2 - h / 2;\n } else if (options.valign === 'bottom') {\n y = y + bh - h;\n }\n } // create link annotations if the link option is given\n\n if (options.link != null) {\n this.link(x, y, w, h, options.link);\n }\n if (options.goTo != null) {\n this.goTo(x, y, w, h, options.goTo);\n }\n if (options.destination != null) {\n this.addNamedDestination(options.destination, 'XYZ', x, y, null);\n } // Set the current y position to below the image if it is in the document flow\n\n if (this.y === y) {\n this.y += h;\n }\n this.save();\n this.transform(w, 0, 0, -h, x, y + h);\n this.addContent(\"/\".concat(image.label, \" Do\"));\n this.restore();\n return this;\n },\n openImage: function openImage(src) {\n var image;\n if (typeof src === 'string') {\n image = this._imageRegistry[src];\n }\n if (!image) {\n image = PDFImage.open(src, \"I\".concat(++this._imageCount));\n if (typeof src === 'string') {\n this._imageRegistry[src] = image;\n }\n }\n return image;\n }\n};\nvar AnnotationsMixin = {\n annotate: function annotate(x, y, w, h, options) {\n options.Type = 'Annot';\n options.Rect = this._convertRect(x, y, w, h);\n options.Border = [0, 0, 0];\n if (options.Subtype === 'Link' && typeof options.F === 'undefined') {\n options.F = 1 << 2; // Print Annotation Flag\n }\n if (options.Subtype !== 'Link') {\n if (options.C == null) {\n options.C = this._normalizeColor(options.color || [0, 0, 0]);\n }\n } // convert colors\n\n delete options.color;\n if (typeof options.Dest === 'string') {\n options.Dest = new String(options.Dest);\n } // Capitalize keys\n\n for (var key in options) {\n var val = options[key];\n options[key[0].toUpperCase() + key.slice(1)] = val;\n }\n var ref = this.ref(options);\n this.page.annotations.push(ref);\n ref.end();\n return this;\n },\n note: function note(x, y, w, h, contents) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n options.Subtype = 'Text';\n options.Contents = new String(contents);\n options.Name = 'Comment';\n if (options.color == null) {\n options.color = [243, 223, 92];\n }\n return this.annotate(x, y, w, h, options);\n },\n goTo: function goTo(x, y, w, h, name) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n options.Subtype = 'Link';\n options.A = this.ref({\n S: 'GoTo',\n D: new String(name)\n });\n options.A.end();\n return this.annotate(x, y, w, h, options);\n },\n link: function link(x, y, w, h, url) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n options.Subtype = 'Link';\n if (typeof url === 'number') {\n // Link to a page in the document (the page must already exist)\n var pages = this._root.data.Pages.data;\n if (url >= 0 && url < pages.Kids.length) {\n options.A = this.ref({\n S: 'GoTo',\n D: [pages.Kids[url], 'XYZ', null, null, null]\n });\n options.A.end();\n } else {\n throw new Error(\"The document has no page \".concat(url));\n }\n } else {\n // Link to an external url\n options.A = this.ref({\n S: 'URI',\n URI: new String(url)\n });\n options.A.end();\n }\n return this.annotate(x, y, w, h, options);\n },\n _markup: function _markup(x, y, w, h) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var _this$_convertRect = this._convertRect(x, y, w, h),\n _this$_convertRect2 = _slicedToArray(_this$_convertRect, 4),\n x1 = _this$_convertRect2[0],\n y1 = _this$_convertRect2[1],\n x2 = _this$_convertRect2[2],\n y2 = _this$_convertRect2[3];\n options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n highlight: function highlight(x, y, w, h) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n options.Subtype = 'Highlight';\n if (options.color == null) {\n options.color = [241, 238, 148];\n }\n return this._markup(x, y, w, h, options);\n },\n underline: function underline(x, y, w, h) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n options.Subtype = 'Underline';\n return this._markup(x, y, w, h, options);\n },\n strike: function strike(x, y, w, h) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n options.Subtype = 'StrikeOut';\n return this._markup(x, y, w, h, options);\n },\n lineAnnotation: function lineAnnotation(x1, y1, x2, y2) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n options.Subtype = 'Line';\n options.Contents = new String();\n options.L = [x1, this.page.height - y1, x2, this.page.height - y2];\n return this.annotate(x1, y1, x2, y2, options);\n },\n rectAnnotation: function rectAnnotation(x, y, w, h) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n options.Subtype = 'Square';\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n ellipseAnnotation: function ellipseAnnotation(x, y, w, h) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n options.Subtype = 'Circle';\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n textAnnotation: function textAnnotation(x, y, w, h, text) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n options.Subtype = 'FreeText';\n options.Contents = new String(text);\n options.DA = new String();\n return this.annotate(x, y, w, h, options);\n },\n fileAnnotation: function fileAnnotation(x, y, w, h) {\n var file = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n // create hidden file\n var filespec = this.file(file.src, Object.assign({\n hidden: true\n }, file));\n options.Subtype = 'FileAttachment';\n options.FS = filespec; // add description from filespec unless description (Contents) has already been set\n\n if (options.Contents) {\n options.Contents = new String(options.Contents);\n } else if (filespec.data.Desc) {\n options.Contents = filespec.data.Desc;\n }\n return this.annotate(x, y, w, h, options);\n },\n _convertRect: function _convertRect(x1, y1, w, h) {\n // flip y1 and y2\n var y2 = y1;\n y1 += h; // make x2\n\n var x2 = x1 + w; // apply current transformation matrix to points\n\n var _this$_ctm = _slicedToArray(this._ctm, 6),\n m0 = _this$_ctm[0],\n m1 = _this$_ctm[1],\n m2 = _this$_ctm[2],\n m3 = _this$_ctm[3],\n m4 = _this$_ctm[4],\n m5 = _this$_ctm[5];\n x1 = m0 * x1 + m2 * y1 + m4;\n y1 = m1 * x1 + m3 * y1 + m5;\n x2 = m0 * x2 + m2 * y2 + m4;\n y2 = m1 * x2 + m3 * y2 + m5;\n return [x1, y1, x2, y2];\n }\n};\nvar PDFOutline = /*#__PURE__*/function () {\n function PDFOutline(document, parent, title, dest) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n expanded: false\n };\n _classCallCheck(this, PDFOutline);\n this.document = document;\n this.options = options;\n this.outlineData = {};\n if (dest !== null) {\n this.outlineData['Dest'] = [dest.dictionary, 'Fit'];\n }\n if (parent !== null) {\n this.outlineData['Parent'] = parent;\n }\n if (title !== null) {\n this.outlineData['Title'] = new String(title);\n }\n this.dictionary = this.document.ref(this.outlineData);\n this.children = [];\n }\n _createClass(PDFOutline, [{\n key: \"addItem\",\n value: function addItem(title) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n expanded: false\n };\n var result = new PDFOutline(this.document, this.dictionary, title, this.document.page, options);\n this.children.push(result);\n return result;\n }\n }, {\n key: \"endOutline\",\n value: function endOutline() {\n if (this.children.length > 0) {\n if (this.options.expanded) {\n this.outlineData.Count = this.children.length;\n }\n var first = this.children[0],\n last = this.children[this.children.length - 1];\n this.outlineData.First = first.dictionary;\n this.outlineData.Last = last.dictionary;\n for (var i = 0, len = this.children.length; i < len; i++) {\n var child = this.children[i];\n if (i > 0) {\n child.outlineData.Prev = this.children[i - 1].dictionary;\n }\n if (i < this.children.length - 1) {\n child.outlineData.Next = this.children[i + 1].dictionary;\n }\n child.endOutline();\n }\n }\n return this.dictionary.end();\n }\n }]);\n return PDFOutline;\n}();\nvar OutlineMixin = {\n initOutline: function initOutline() {\n return this.outline = new PDFOutline(this, null, null, null);\n },\n endOutline: function endOutline() {\n this.outline.endOutline();\n if (this.outline.children.length > 0) {\n this._root.data.Outlines = this.outline.dictionary;\n return this._root.data.PageMode = 'UseOutlines';\n }\n }\n};\n\n/*\r\nPDFStructureContent - a reference to a marked structure content\r\nBy Ben Schmidt\r\n*/\nvar PDFStructureContent = /*#__PURE__*/function () {\n function PDFStructureContent(pageRef, mcid) {\n _classCallCheck(this, PDFStructureContent);\n this.refs = [{\n pageRef: pageRef,\n mcid: mcid\n }];\n }\n _createClass(PDFStructureContent, [{\n key: \"push\",\n value: function push(structContent) {\n var _this = this;\n structContent.refs.forEach(function (ref) {\n return _this.refs.push(ref);\n });\n }\n }]);\n return PDFStructureContent;\n}();\nvar PDFStructureElement = /*#__PURE__*/function () {\n function PDFStructureElement(document, type) {\n var _this = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n _classCallCheck(this, PDFStructureElement);\n this.document = document;\n this._attached = false;\n this._ended = false;\n this._flushed = false;\n this.dictionary = document.ref({\n // Type: \"StructElem\",\n S: type\n });\n var data = this.dictionary.data;\n if (Array.isArray(options) || this._isValidChild(options)) {\n children = options;\n options = {};\n }\n if (typeof options.title !== 'undefined') {\n data.T = new String(options.title);\n }\n if (typeof options.lang !== 'undefined') {\n data.Lang = new String(options.lang);\n }\n if (typeof options.alt !== 'undefined') {\n data.Alt = new String(options.alt);\n }\n if (typeof options.expanded !== 'undefined') {\n data.E = new String(options.expanded);\n }\n if (typeof options.actual !== 'undefined') {\n data.ActualText = new String(options.actual);\n }\n this._children = [];\n if (children) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n children.forEach(function (child) {\n return _this.add(child);\n });\n this.end();\n }\n }\n _createClass(PDFStructureElement, [{\n key: \"add\",\n value: function add(child) {\n if (this._ended) {\n throw new Error(\"Cannot add child to already-ended structure element\");\n }\n if (!this._isValidChild(child)) {\n throw new Error(\"Invalid structure element child\");\n }\n if (child instanceof PDFStructureElement) {\n child.setParent(this.dictionary);\n if (this._attached) {\n child.setAttached();\n }\n }\n if (child instanceof PDFStructureContent) {\n this._addContentToParentTree(child);\n }\n if (typeof child === 'function' && this._attached) {\n // _contentForClosure() adds the content to the parent tree\n child = this._contentForClosure(child);\n }\n this._children.push(child);\n return this;\n }\n }, {\n key: \"_addContentToParentTree\",\n value: function _addContentToParentTree(content) {\n var _this2 = this;\n content.refs.forEach(function (_ref) {\n var pageRef = _ref.pageRef,\n mcid = _ref.mcid;\n var pageStructParents = _this2.document.getStructParentTree().get(pageRef.data.StructParents);\n pageStructParents[mcid] = _this2.dictionary;\n });\n }\n }, {\n key: \"setParent\",\n value: function setParent(parentRef) {\n if (this.dictionary.data.P) {\n throw new Error(\"Structure element added to more than one parent\");\n }\n this.dictionary.data.P = parentRef;\n this._flush();\n }\n }, {\n key: \"setAttached\",\n value: function setAttached() {\n var _this3 = this;\n if (this._attached) {\n return;\n }\n this._children.forEach(function (child, index) {\n if (child instanceof PDFStructureElement) {\n child.setAttached();\n }\n if (typeof child === 'function') {\n _this3._children[index] = _this3._contentForClosure(child);\n }\n });\n this._attached = true;\n this._flush();\n }\n }, {\n key: \"end\",\n value: function end() {\n if (this._ended) {\n return;\n }\n this._children.filter(function (child) {\n return child instanceof PDFStructureElement;\n }).forEach(function (child) {\n return child.end();\n });\n this._ended = true;\n this._flush();\n }\n }, {\n key: \"_isValidChild\",\n value: function _isValidChild(child) {\n return child instanceof PDFStructureElement || child instanceof PDFStructureContent || typeof child === 'function';\n }\n }, {\n key: \"_contentForClosure\",\n value: function _contentForClosure(closure) {\n var content = this.document.markStructureContent(this.dictionary.data.S);\n closure();\n this.document.endMarkedContent();\n this._addContentToParentTree(content);\n return content;\n }\n }, {\n key: \"_isFlushable\",\n value: function _isFlushable() {\n if (!this.dictionary.data.P || !this._ended) {\n return false;\n }\n return this._children.every(function (child) {\n if (typeof child === 'function') {\n return false;\n }\n if (child instanceof PDFStructureElement) {\n return child._isFlushable();\n }\n return true;\n });\n }\n }, {\n key: \"_flush\",\n value: function _flush() {\n var _this4 = this;\n if (this._flushed || !this._isFlushable()) {\n return;\n }\n this.dictionary.data.K = [];\n this._children.forEach(function (child) {\n return _this4._flushChild(child);\n });\n this.dictionary.end(); // free memory used by children; the dictionary itself may still be\n // referenced by a parent structure element or root, but we can\n // at least trim the tree here\n\n this._children = [];\n this.dictionary.data.K = null;\n this._flushed = true;\n }\n }, {\n key: \"_flushChild\",\n value: function _flushChild(child) {\n var _this5 = this;\n if (child instanceof PDFStructureElement) {\n this.dictionary.data.K.push(child.dictionary);\n }\n if (child instanceof PDFStructureContent) {\n child.refs.forEach(function (_ref2) {\n var pageRef = _ref2.pageRef,\n mcid = _ref2.mcid;\n if (!_this5.dictionary.data.Pg) {\n _this5.dictionary.data.Pg = pageRef;\n }\n if (_this5.dictionary.data.Pg === pageRef) {\n _this5.dictionary.data.K.push(mcid);\n } else {\n _this5.dictionary.data.K.push({\n Type: \"MCR\",\n Pg: pageRef,\n MCID: mcid\n });\n }\n });\n }\n }\n }]);\n return PDFStructureElement;\n}();\nvar PDFNumberTree = /*#__PURE__*/function (_PDFTree) {\n _inherits(PDFNumberTree, _PDFTree);\n var _super = _createSuper(PDFNumberTree);\n function PDFNumberTree() {\n _classCallCheck(this, PDFNumberTree);\n return _super.apply(this, arguments);\n }\n _createClass(PDFNumberTree, [{\n key: \"_compareKeys\",\n value: function _compareKeys(a, b) {\n return parseInt(a) - parseInt(b);\n }\n }, {\n key: \"_keysName\",\n value: function _keysName() {\n return \"Nums\";\n }\n }, {\n key: \"_dataForKey\",\n value: function _dataForKey(k) {\n return parseInt(k);\n }\n }]);\n return PDFNumberTree;\n}(PDFTree);\nvar MarkingsMixin = {\n initMarkings: function initMarkings(options) {\n this.structChildren = [];\n if (options.tagged) {\n this.getMarkInfoDictionary().data.Marked = true;\n this.getStructTreeRoot();\n }\n },\n markContent: function markContent(tag) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (tag === 'Artifact' || options && options.mcid) {\n var toClose = 0;\n this.page.markings.forEach(function (marking) {\n if (toClose || marking.structContent || marking.tag === 'Artifact') {\n toClose++;\n }\n });\n while (toClose--) {\n this.endMarkedContent();\n }\n }\n if (!options) {\n this.page.markings.push({\n tag: tag\n });\n this.addContent(\"/\".concat(tag, \" BMC\"));\n return this;\n }\n this.page.markings.push({\n tag: tag,\n options: options\n });\n var dictionary = {};\n if (typeof options.mcid !== 'undefined') {\n dictionary.MCID = options.mcid;\n }\n if (tag === 'Artifact') {\n if (typeof options.type === 'string') {\n dictionary.Type = options.type;\n }\n if (Array.isArray(options.bbox)) {\n dictionary.BBox = [options.bbox[0], this.page.height - options.bbox[3], options.bbox[2], this.page.height - options.bbox[1]];\n }\n if (Array.isArray(options.attached) && options.attached.every(function (val) {\n return typeof val === 'string';\n })) {\n dictionary.Attached = options.attached;\n }\n }\n if (tag === 'Span') {\n if (options.lang) {\n dictionary.Lang = new String(options.lang);\n }\n if (options.alt) {\n dictionary.Alt = new String(options.alt);\n }\n if (options.expanded) {\n dictionary.E = new String(options.expanded);\n }\n if (options.actual) {\n dictionary.ActualText = new String(options.actual);\n }\n }\n this.addContent(\"/\".concat(tag, \" \").concat(PDFObject.convert(dictionary), \" BDC\"));\n return this;\n },\n markStructureContent: function markStructureContent(tag) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var pageStructParents = this.getStructParentTree().get(this.page.structParentTreeKey);\n var mcid = pageStructParents.length;\n pageStructParents.push(null);\n this.markContent(tag, _objectSpread2(_objectSpread2({}, options), {}, {\n mcid: mcid\n }));\n var structContent = new PDFStructureContent(this.page.dictionary, mcid);\n this.page.markings.slice(-1)[0].structContent = structContent;\n return structContent;\n },\n endMarkedContent: function endMarkedContent() {\n this.page.markings.pop();\n this.addContent('EMC');\n return this;\n },\n struct: function struct(type) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var children = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n return new PDFStructureElement(this, type, options, children);\n },\n addStructure: function addStructure(structElem) {\n var structTreeRoot = this.getStructTreeRoot();\n structElem.setParent(structTreeRoot);\n structElem.setAttached();\n this.structChildren.push(structElem);\n if (!structTreeRoot.data.K) {\n structTreeRoot.data.K = [];\n }\n structTreeRoot.data.K.push(structElem.dictionary);\n return this;\n },\n initPageMarkings: function initPageMarkings(pageMarkings) {\n var _this = this;\n pageMarkings.forEach(function (marking) {\n if (marking.structContent) {\n var structContent = marking.structContent;\n var newStructContent = _this.markStructureContent(marking.tag, marking.options);\n structContent.push(newStructContent);\n _this.page.markings.slice(-1)[0].structContent = structContent;\n } else {\n _this.markContent(marking.tag, marking.options);\n }\n });\n },\n endPageMarkings: function endPageMarkings(page) {\n var pageMarkings = page.markings;\n pageMarkings.forEach(function () {\n return page.write('EMC');\n });\n page.markings = [];\n return pageMarkings;\n },\n getMarkInfoDictionary: function getMarkInfoDictionary() {\n if (!this._root.data.MarkInfo) {\n this._root.data.MarkInfo = this.ref({});\n }\n return this._root.data.MarkInfo;\n },\n getStructTreeRoot: function getStructTreeRoot() {\n if (!this._root.data.StructTreeRoot) {\n this._root.data.StructTreeRoot = this.ref({\n Type: 'StructTreeRoot',\n ParentTree: new PDFNumberTree(),\n ParentTreeNextKey: 0\n });\n }\n return this._root.data.StructTreeRoot;\n },\n getStructParentTree: function getStructParentTree() {\n return this.getStructTreeRoot().data.ParentTree;\n },\n createStructParentTreeNextKey: function createStructParentTreeNextKey() {\n // initialise the MarkInfo dictionary\n this.getMarkInfoDictionary();\n var structTreeRoot = this.getStructTreeRoot();\n var key = structTreeRoot.data.ParentTreeNextKey++;\n structTreeRoot.data.ParentTree.add(key, []);\n return key;\n },\n endMarkings: function endMarkings() {\n var structTreeRoot = this._root.data.StructTreeRoot;\n if (structTreeRoot) {\n structTreeRoot.end();\n this.structChildren.forEach(function (structElem) {\n return structElem.end();\n });\n }\n if (this._root.data.MarkInfo) {\n this._root.data.MarkInfo.end();\n }\n }\n};\nvar FIELD_FLAGS = {\n readOnly: 1,\n required: 2,\n noExport: 4,\n multiline: 0x1000,\n password: 0x2000,\n toggleToOffButton: 0x4000,\n radioButton: 0x8000,\n pushButton: 0x10000,\n combo: 0x20000,\n edit: 0x40000,\n sort: 0x80000,\n multiSelect: 0x200000,\n noSpell: 0x400000\n};\nvar FIELD_JUSTIFY = {\n left: 0,\n center: 1,\n right: 2\n};\nvar VALUE_MAP = {\n value: 'V',\n defaultValue: 'DV'\n};\nvar FORMAT_SPECIAL = {\n zip: '0',\n zipPlus4: '1',\n zip4: '1',\n phone: '2',\n ssn: '3'\n};\nvar FORMAT_DEFAULT = {\n number: {\n nDec: 0,\n sepComma: false,\n negStyle: 'MinusBlack',\n currency: '',\n currencyPrepend: true\n },\n percent: {\n nDec: 0,\n sepComma: false\n }\n};\nvar AcroFormMixin = {\n /**\r\n * Must call if adding AcroForms to a document. Must also call font() before\r\n * this method to set the default font.\r\n */\n initForm: function initForm() {\n if (!this._font) {\n throw new Error('Must set a font before calling initForm method');\n }\n this._acroform = {\n fonts: {},\n defaultFont: this._font.name\n };\n this._acroform.fonts[this._font.id] = this._font.ref();\n var data = {\n Fields: [],\n NeedAppearances: true,\n DA: new String(\"/\".concat(this._font.id, \" 0 Tf 0 g\")),\n DR: {\n Font: {}\n }\n };\n data.DR.Font[this._font.id] = this._font.ref();\n var AcroForm = this.ref(data);\n this._root.data.AcroForm = AcroForm;\n return this;\n },\n /**\r\n * Called automatically by document.js\r\n */\n endAcroForm: function endAcroForm() {\n var _this = this;\n if (this._root.data.AcroForm) {\n if (!Object.keys(this._acroform.fonts).length && !this._acroform.defaultFont) {\n throw new Error('No fonts specified for PDF form');\n }\n var fontDict = this._root.data.AcroForm.data.DR.Font;\n Object.keys(this._acroform.fonts).forEach(function (name) {\n fontDict[name] = _this._acroform.fonts[name];\n });\n this._root.data.AcroForm.data.Fields.forEach(function (fieldRef) {\n _this._endChild(fieldRef);\n });\n this._root.data.AcroForm.end();\n }\n return this;\n },\n _endChild: function _endChild(ref) {\n var _this2 = this;\n if (Array.isArray(ref.data.Kids)) {\n ref.data.Kids.forEach(function (childRef) {\n _this2._endChild(childRef);\n });\n ref.end();\n }\n return this;\n },\n /**\r\n * Creates and adds a form field to the document. Form fields are intermediate\r\n * nodes in a PDF form that are used to specify form name heirarchy and form\r\n * value defaults.\r\n * @param {string} name - field name (T attribute in field dictionary)\r\n * @param {object} options - other attributes to include in field dictionary\r\n */\n formField: function formField(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var fieldDict = this._fieldDict(name, null, options);\n var fieldRef = this.ref(fieldDict);\n this._addToParent(fieldRef);\n return fieldRef;\n },\n /**\r\n * Creates and adds a Form Annotation to the document. Form annotations are\r\n * called Widget annotations internally within a PDF file.\r\n * @param {string} name - form field name (T attribute of widget annotation\r\n * dictionary)\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} w\r\n * @param {number} h\r\n * @param {object} options\r\n */\n formAnnotation: function formAnnotation(name, type, x, y, w, h) {\n var options = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};\n var fieldDict = this._fieldDict(name, type, options);\n fieldDict.Subtype = 'Widget';\n if (fieldDict.F === undefined) {\n fieldDict.F = 4; // print the annotation\n } // Add Field annot to page, and get it's ref\n\n this.annotate(x, y, w, h, fieldDict);\n var annotRef = this.page.annotations[this.page.annotations.length - 1];\n return this._addToParent(annotRef);\n },\n formText: function formText(name, x, y, w, h) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n return this.formAnnotation(name, 'text', x, y, w, h, options);\n },\n formPushButton: function formPushButton(name, x, y, w, h) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n return this.formAnnotation(name, 'pushButton', x, y, w, h, options);\n },\n formCombo: function formCombo(name, x, y, w, h) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n return this.formAnnotation(name, 'combo', x, y, w, h, options);\n },\n formList: function formList(name, x, y, w, h) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n return this.formAnnotation(name, 'list', x, y, w, h, options);\n },\n formRadioButton: function formRadioButton(name, x, y, w, h) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n return this.formAnnotation(name, 'radioButton', x, y, w, h, options);\n },\n formCheckbox: function formCheckbox(name, x, y, w, h) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n return this.formAnnotation(name, 'checkbox', x, y, w, h, options);\n },\n _addToParent: function _addToParent(fieldRef) {\n var parent = fieldRef.data.Parent;\n if (parent) {\n if (!parent.data.Kids) {\n parent.data.Kids = [];\n }\n parent.data.Kids.push(fieldRef);\n } else {\n this._root.data.AcroForm.data.Fields.push(fieldRef);\n }\n return this;\n },\n _fieldDict: function _fieldDict(name, type) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!this._acroform) {\n throw new Error('Call document.initForms() method before adding form elements to document');\n }\n var opts = Object.assign({}, options);\n if (type !== null) {\n opts = this._resolveType(type, options);\n }\n opts = this._resolveFlags(opts);\n opts = this._resolveJustify(opts);\n opts = this._resolveFont(opts);\n opts = this._resolveStrings(opts);\n opts = this._resolveColors(opts);\n opts = this._resolveFormat(opts);\n opts.T = new String(name);\n if (opts.parent) {\n opts.Parent = opts.parent;\n delete opts.parent;\n }\n return opts;\n },\n _resolveType: function _resolveType(type, opts) {\n if (type === 'text') {\n opts.FT = 'Tx';\n } else if (type === 'pushButton') {\n opts.FT = 'Btn';\n opts.pushButton = true;\n } else if (type === 'radioButton') {\n opts.FT = 'Btn';\n opts.radioButton = true;\n } else if (type === 'checkbox') {\n opts.FT = 'Btn';\n } else if (type === 'combo') {\n opts.FT = 'Ch';\n opts.combo = true;\n } else if (type === 'list') {\n opts.FT = 'Ch';\n } else {\n throw new Error(\"Invalid form annotation type '\".concat(type, \"'\"));\n }\n return opts;\n },\n _resolveFormat: function _resolveFormat(opts) {\n var f = opts.format;\n if (f && f.type) {\n var fnKeystroke;\n var fnFormat;\n var params = '';\n if (FORMAT_SPECIAL[f.type] !== undefined) {\n fnKeystroke = \"AFSpecial_Keystroke\";\n fnFormat = \"AFSpecial_Format\";\n params = FORMAT_SPECIAL[f.type];\n } else {\n var format = f.type.charAt(0).toUpperCase() + f.type.slice(1);\n fnKeystroke = \"AF\".concat(format, \"_Keystroke\");\n fnFormat = \"AF\".concat(format, \"_Format\");\n if (f.type === 'date') {\n fnKeystroke += 'Ex';\n params = String(f.param);\n } else if (f.type === 'time') {\n params = String(f.param);\n } else if (f.type === 'number') {\n var p = Object.assign({}, FORMAT_DEFAULT.number, f);\n params = String([String(p.nDec), p.sepComma ? '0' : '1', '\"' + p.negStyle + '\"', 'null', '\"' + p.currency + '\"', String(p.currencyPrepend)].join(','));\n } else if (f.type === 'percent') {\n var _p = Object.assign({}, FORMAT_DEFAULT.percent, f);\n params = String([String(_p.nDec), _p.sepComma ? '0' : '1'].join(','));\n }\n }\n opts.AA = opts.AA ? opts.AA : {};\n opts.AA.K = {\n S: 'JavaScript',\n JS: new String(\"\".concat(fnKeystroke, \"(\").concat(params, \");\"))\n };\n opts.AA.F = {\n S: 'JavaScript',\n JS: new String(\"\".concat(fnFormat, \"(\").concat(params, \");\"))\n };\n }\n delete opts.format;\n return opts;\n },\n _resolveColors: function _resolveColors(opts) {\n var color = this._normalizeColor(opts.backgroundColor);\n if (color) {\n if (!opts.MK) {\n opts.MK = {};\n }\n opts.MK.BG = color;\n }\n color = this._normalizeColor(opts.borderColor);\n if (color) {\n if (!opts.MK) {\n opts.MK = {};\n }\n opts.MK.BC = color;\n }\n delete opts.backgroundColor;\n delete opts.borderColor;\n return opts;\n },\n _resolveFlags: function _resolveFlags(options) {\n var result = 0;\n Object.keys(options).forEach(function (key) {\n if (FIELD_FLAGS[key]) {\n result |= FIELD_FLAGS[key];\n delete options[key];\n }\n });\n if (result !== 0) {\n options.Ff = options.Ff ? options.Ff : 0;\n options.Ff |= result;\n }\n return options;\n },\n _resolveJustify: function _resolveJustify(options) {\n var result = 0;\n if (options.align !== undefined) {\n if (typeof FIELD_JUSTIFY[options.align] === 'number') {\n result = FIELD_JUSTIFY[options.align];\n }\n delete options.align;\n }\n if (result !== 0) {\n options.Q = result; // default\n }\n return options;\n },\n _resolveFont: function _resolveFont(options) {\n // add current font to document-level AcroForm dict if necessary\n if (this._acroform.fonts[this._font.id] === null) {\n this._acroform.fonts[this._font.id] = this._font.ref();\n } // add current font to field's resource dict (RD) if not the default acroform font\n\n if (this._acroform.defaultFont !== this._font.name) {\n options.DR = {\n Font: {}\n }; // Get the fontSize option. If not set use auto sizing\n\n var fontSize = options.fontSize || 0;\n options.DR.Font[this._font.id] = this._font.ref();\n options.DA = new String(\"/\".concat(this._font.id, \" \").concat(fontSize, \" Tf 0 g\"));\n }\n return options;\n },\n _resolveStrings: function _resolveStrings(options) {\n var select = [];\n function appendChoices(a) {\n if (Array.isArray(a)) {\n for (var idx = 0; idx < a.length; idx++) {\n if (typeof a[idx] === 'string') {\n select.push(new String(a[idx]));\n } else {\n select.push(a[idx]);\n }\n }\n }\n }\n appendChoices(options.Opt);\n if (options.select) {\n appendChoices(options.select);\n delete options.select;\n }\n if (select.length) {\n options.Opt = select;\n }\n Object.keys(VALUE_MAP).forEach(function (key) {\n if (options[key] !== undefined) {\n options[VALUE_MAP[key]] = options[key];\n delete options[key];\n }\n });\n ['V', 'DV'].forEach(function (key) {\n if (typeof options[key] === 'string') {\n options[key] = new String(options[key]);\n }\n });\n if (options.MK && options.MK.CA) {\n options.MK.CA = new String(options.MK.CA);\n }\n if (options.label) {\n options.MK = options.MK ? options.MK : {};\n options.MK.CA = new String(options.label);\n delete options.label;\n }\n return options;\n }\n};\nvar AttachmentsMixin = {\n /**\r\n * Embed contents of `src` in PDF\r\n * @param {Buffer | ArrayBuffer | string} src input Buffer, ArrayBuffer, base64 encoded string or path to file\r\n * @param {object} options\r\n * * options.name: filename to be shown in PDF, will use `src` if none set\r\n * * options.type: filetype to be shown in PDF\r\n * * options.description: description to be shown in PDF\r\n * * options.hidden: if true, do not add attachment to EmbeddedFiles dictionary. Useful for file attachment annotations\r\n * * options.creationDate: override creation date\r\n * * options.modifiedDate: override modified date\r\n * @returns filespec reference\r\n */\n file: function file(src) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options.name = options.name || src;\n var refBody = {\n Type: 'EmbeddedFile',\n Params: {}\n };\n var data;\n if (!src) {\n throw new Error('No src specified');\n }\n if (Buffer.isBuffer(src)) {\n data = src;\n } else if (src instanceof ArrayBuffer) {\n data = Buffer.from(new Uint8Array(src));\n } else {\n var match;\n if (match = /^data:(.*);base64,(.*)$/.exec(src)) {\n if (match[1]) {\n refBody.Subtype = match[1].replace('/', '#2F');\n }\n data = Buffer.from(match[2], 'base64');\n } else {\n data = fs.readFileSync(src);\n if (!data) {\n throw new Error(\"Could not read contents of file at filepath \".concat(src));\n } // update CreationDate and ModDate\n\n var _fs$statSync = fs.statSync(src),\n birthtime = _fs$statSync.birthtime,\n ctime = _fs$statSync.ctime;\n refBody.Params.CreationDate = birthtime;\n refBody.Params.ModDate = ctime;\n }\n } // override creation date and modified date\n\n if (options.creationDate instanceof Date) {\n refBody.Params.CreationDate = options.creationDate;\n }\n if (options.modifiedDate instanceof Date) {\n refBody.Params.ModDate = options.modifiedDate;\n } // add optional subtype\n\n if (options.type) {\n refBody.Subtype = options.type.replace('/', '#2F');\n } // add checksum and size information\n\n var checksum = _cryptoJs.default.MD5(_cryptoJs.default.lib.WordArray.create(new Uint8Array(data)));\n refBody.Params.CheckSum = new String(checksum);\n refBody.Params.Size = data.byteLength; // save some space when embedding the same file again\n // if a file with the same name and metadata exists, reuse its reference\n\n var ref;\n if (!this._fileRegistry) this._fileRegistry = {};\n var file = this._fileRegistry[options.name];\n if (file && isEqual(refBody, file)) {\n ref = file.ref;\n } else {\n ref = this.ref(refBody);\n ref.end(data);\n this._fileRegistry[options.name] = _objectSpread2(_objectSpread2({}, refBody), {}, {\n ref: ref\n });\n } // add filespec for embedded file\n\n var fileSpecBody = {\n Type: 'Filespec',\n F: new String(options.name),\n EF: {\n F: ref\n },\n UF: new String(options.name)\n };\n if (options.description) {\n fileSpecBody.Desc = new String(options.description);\n }\n var filespec = this.ref(fileSpecBody);\n filespec.end();\n if (!options.hidden) {\n this.addNamedEmbeddedFile(options.name, filespec);\n }\n return filespec;\n }\n};\n/** check two embedded file metadata objects for equality */\n\nfunction isEqual(a, b) {\n return a.Subtype === b.Subtype && a.Params.CheckSum.toString() === b.Params.CheckSum.toString() && a.Params.Size === b.Params.Size && a.Params.CreationDate === b.Params.CreationDate && a.Params.ModDate === b.Params.ModDate;\n}\nvar PDFA = {\n initPDFA: function initPDFA(pSubset) {\n if (pSubset.charAt(pSubset.length - 3) === '-') {\n this.subset_conformance = pSubset.charAt(pSubset.length - 1).toUpperCase();\n this.subset = parseInt(pSubset.charAt(pSubset.length - 2));\n } else {\n // Default to Basic conformance when user doesn't specify\n this.subset_conformance = 'B';\n this.subset = parseInt(pSubset.charAt(pSubset.length - 1));\n }\n },\n endSubset: function endSubset() {\n this._addPdfaMetadata();\n var jsPath = \"\".concat(__dirname, \"/data/sRGB_IEC61966_2_1.icc\");\n var jestPath = \"\".concat(__dirname, \"/../color_profiles/sRGB_IEC61966_2_1.icc\");\n this._addColorOutputIntent(fs.existsSync(jsPath) ? jsPath : jestPath);\n },\n _addColorOutputIntent: function _addColorOutputIntent(pICCPath) {\n var iccProfile = fs.readFileSync(pICCPath);\n var colorProfileRef = this.ref({\n Length: iccProfile.length,\n N: 3\n });\n colorProfileRef.write(iccProfile);\n colorProfileRef.end();\n var intentRef = this.ref({\n Type: 'OutputIntent',\n S: 'GTS_PDFA1',\n Info: new String('sRGB IEC61966-2.1'),\n OutputConditionIdentifier: new String('sRGB IEC61966-2.1'),\n DestOutputProfile: colorProfileRef\n });\n intentRef.end();\n this._root.data.OutputIntents = [intentRef];\n },\n _getPdfaid: function _getPdfaid() {\n return \"\\n <rdf:Description xmlns:pdfaid=\\\"http://www.aiim.org/pdfa/ns/id/\\\" rdf:about=\\\"\\\">\\n <pdfaid:part>\".concat(this.subset, \"</pdfaid:part>\\n <pdfaid:conformance>\").concat(this.subset_conformance, \"</pdfaid:conformance>\\n </rdf:Description>\\n \");\n },\n _addPdfaMetadata: function _addPdfaMetadata() {\n this.appendXML(this._getPdfaid());\n }\n};\nvar SubsetMixin = {\n _importSubset: function _importSubset(subset) {\n Object.assign(this, subset);\n },\n initSubset: function initSubset(options) {\n switch (options.subset) {\n case 'PDF/A-1':\n case 'PDF/A-1a':\n case 'PDF/A-1b':\n case 'PDF/A-2':\n case 'PDF/A-2a':\n case 'PDF/A-2b':\n case 'PDF/A-3':\n case 'PDF/A-3a':\n case 'PDF/A-3b':\n this._importSubset(PDFA);\n this.initPDFA(options.subset);\n break;\n }\n }\n};\nvar PDFMetadata = /*#__PURE__*/function () {\n function PDFMetadata() {\n _classCallCheck(this, PDFMetadata);\n this._metadata = \"\\n <?xpacket begin=\\\"\\uFEFF\\\" id=\\\"W5M0MpCehiHzreSzNTczkc9d\\\"?>\\n <x:xmpmeta xmlns:x=\\\"adobe:ns:meta/\\\">\\n <rdf:RDF xmlns:rdf=\\\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\\\">\\n \";\n }\n _createClass(PDFMetadata, [{\n key: \"_closeTags\",\n value: function _closeTags() {\n this._metadata = this._metadata.concat(\"\\n </rdf:RDF>\\n </x:xmpmeta>\\n <?xpacket end=\\\"w\\\"?>\\n \");\n }\n }, {\n key: \"append\",\n value: function append(xml) {\n var newline = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this._metadata = this._metadata.concat(xml);\n if (newline) this._metadata = this._metadata.concat('\\n');\n }\n }, {\n key: \"getXML\",\n value: function getXML() {\n return this._metadata;\n }\n }, {\n key: \"getLength\",\n value: function getLength() {\n return this._metadata.length;\n }\n }, {\n key: \"end\",\n value: function end() {\n this._closeTags();\n this._metadata = this._metadata.trim();\n }\n }]);\n return PDFMetadata;\n}();\nvar MetadataMixin = {\n initMetadata: function initMetadata() {\n this.metadata = new PDFMetadata();\n },\n appendXML: function appendXML(xml) {\n var newline = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.metadata.append(xml, newline);\n },\n _addInfo: function _addInfo() {\n this.appendXML(\"\\n <rdf:Description rdf:about=\\\"\\\" xmlns:xmp=\\\"http://ns.adobe.com/xap/1.0/\\\">\\n <xmp:CreateDate>\".concat(this.info.CreationDate.toISOString().split('.')[0] + \"Z\", \"</xmp:CreateDate>\\n <xmp:CreatorTool>\").concat(this.info.Creator, \"</xmp:CreatorTool>\\n </rdf:Description>\\n \"));\n if (this.info.Title || this.info.Author || this.info.Subject) {\n this.appendXML(\"\\n <rdf:Description rdf:about=\\\"\\\" xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\">\\n \");\n if (this.info.Title) {\n this.appendXML(\"\\n <dc:title>\\n <rdf:Alt>\\n <rdf:li xml:lang=\\\"x-default\\\">\".concat(this.info.Title, \"</rdf:li>\\n </rdf:Alt>\\n </dc:title>\\n \"));\n }\n if (this.info.Author) {\n this.appendXML(\"\\n <dc:creator>\\n <rdf:Seq>\\n <rdf:li>\".concat(this.info.Author, \"</rdf:li>\\n </rdf:Seq>\\n </dc:creator>\\n \"));\n }\n if (this.info.Subject) {\n this.appendXML(\"\\n <dc:description>\\n <rdf:Alt>\\n <rdf:li xml:lang=\\\"x-default\\\">\".concat(this.info.Subject, \"</rdf:li>\\n </rdf:Alt>\\n </dc:description>\\n \"));\n }\n this.appendXML(\"\\n </rdf:Description>\\n \");\n }\n this.appendXML(\"\\n <rdf:Description rdf:about=\\\"\\\" xmlns:pdf=\\\"http://ns.adobe.com/pdf/1.3/\\\">\\n <pdf:Producer>\".concat(this.info.Creator, \"</pdf:Producer>\"), false);\n if (this.info.Keywords) {\n this.appendXML(\"\\n <pdf:Keywords>\".concat(this.info.Keywords, \"</pdf:Keywords>\"), false);\n }\n this.appendXML(\"\\n </rdf:Description>\\n \");\n },\n endMetadata: function endMetadata() {\n this._addInfo();\n this.metadata.end();\n /*\r\n Metadata was introduced in PDF 1.4, so adding it to 1.3 \r\n will likely only take up more space.\r\n */\n\n if (this.version != 1.3) {\n this.metadataRef = this.ref({\n length: this.metadata.getLength(),\n Type: 'Metadata',\n Subtype: 'XML'\n });\n this.metadataRef.compress = false;\n this.metadataRef.write(Buffer.from(this.metadata.getXML(), 'utf-8'));\n this.metadataRef.end();\n this._root.data.Metadata = this.metadataRef;\n }\n }\n};\nvar PDFDocument = /*#__PURE__*/function (_stream$Readable) {\n _inherits(PDFDocument, _stream$Readable);\n var _super = _createSuper(PDFDocument);\n function PDFDocument() {\n var _this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, PDFDocument);\n _this = _super.call(this, options);\n _this.options = options; // PDF version\n\n switch (options.pdfVersion) {\n case '1.4':\n _this.version = 1.4;\n break;\n case '1.5':\n _this.version = 1.5;\n break;\n case '1.6':\n _this.version = 1.6;\n break;\n case '1.7':\n case '1.7ext3':\n _this.version = 1.7;\n break;\n default:\n _this.version = 1.3;\n break;\n } // Whether streams should be compressed\n\n _this.compress = _this.options.compress != null ? _this.options.compress : true;\n _this._pageBuffer = [];\n _this._pageBufferStart = 0; // The PDF object store\n\n _this._offsets = [];\n _this._waiting = 0;\n _this._ended = false;\n _this._offset = 0;\n var Pages = _this.ref({\n Type: 'Pages',\n Count: 0,\n Kids: []\n });\n var Names = _this.ref({\n Dests: new PDFNameTree()\n });\n _this._root = _this.ref({\n Type: 'Catalog',\n Pages: Pages,\n Names: Names\n });\n if (_this.options.lang) {\n _this._root.data.Lang = new String(_this.options.lang);\n } // The current page\n\n _this.page = null; // Initialize mixins\n\n _this.initMetadata();\n _this.initColor();\n _this.initVector();\n _this.initFonts(options.font);\n _this.initText();\n _this.initImages();\n _this.initOutline();\n _this.initMarkings(options);\n _this.initSubset(options); // Initialize the metadata\n\n _this.info = {\n Producer: 'PDFKit',\n Creator: 'PDFKit',\n CreationDate: new Date()\n };\n if (_this.options.info) {\n for (var key in _this.options.info) {\n var val = _this.options.info[key];\n _this.info[key] = val;\n }\n }\n if (_this.options.displayTitle) {\n _this._root.data.ViewerPreferences = _this.ref({\n DisplayDocTitle: true\n });\n } // Generate file ID\n\n _this._id = PDFSecurity.generateFileID(_this.info); // Initialize security settings\n\n _this._security = PDFSecurity.create(_assertThisInitialized(_this), options); // Write the header\n // PDF version\n\n _this._write(\"%PDF-\".concat(_this.version)); // 4 binary chars, as recommended by the spec\n\n _this._write('%\\xFF\\xFF\\xFF\\xFF'); // Add the first page\n\n if (_this.options.autoFirstPage !== false) {\n _this.addPage();\n }\n return _this;\n }\n _createClass(PDFDocument, [{\n key: \"addPage\",\n value: function addPage(options) {\n if (options == null) {\n options = this.options;\n } // end the current page if needed\n\n if (!this.options.bufferPages) {\n this.flushPages();\n } // create a page object\n\n this.page = new PDFPage(this, options);\n this._pageBuffer.push(this.page); // add the page to the object store\n\n var pages = this._root.data.Pages.data;\n pages.Kids.push(this.page.dictionary);\n pages.Count++; // reset x and y coordinates\n\n this.x = this.page.margins.left;\n this.y = this.page.margins.top; // flip PDF coordinate system so that the origin is in\n // the top left rather than the bottom left\n\n this._ctm = [1, 0, 0, 1, 0, 0];\n this.transform(1, 0, 0, -1, 0, this.page.height);\n this.emit('pageAdded');\n return this;\n }\n }, {\n key: \"continueOnNewPage\",\n value: function continueOnNewPage(options) {\n var pageMarkings = this.endPageMarkings(this.page);\n this.addPage(options);\n this.initPageMarkings(pageMarkings);\n return this;\n }\n }, {\n key: \"bufferedPageRange\",\n value: function bufferedPageRange() {\n return {\n start: this._pageBufferStart,\n count: this._pageBuffer.length\n };\n }\n }, {\n key: \"switchToPage\",\n value: function switchToPage(n) {\n var page;\n if (!(page = this._pageBuffer[n - this._pageBufferStart])) {\n throw new Error(\"switchToPage(\".concat(n, \") out of bounds, current buffer covers pages \").concat(this._pageBufferStart, \" to \").concat(this._pageBufferStart + this._pageBuffer.length - 1));\n }\n return this.page = page;\n }\n }, {\n key: \"flushPages\",\n value: function flushPages() {\n // this local variable exists so we're future-proof against\n // reentrant calls to flushPages.\n var pages = this._pageBuffer;\n this._pageBuffer = [];\n this._pageBufferStart += pages.length;\n var _iterator = _createForOfIteratorHelper(pages),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var page = _step.value;\n this.endPageMarkings(page);\n page.end();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"addNamedDestination\",\n value: function addNamedDestination(name) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (args.length === 0) {\n args = ['XYZ', null, null, null];\n }\n if (args[0] === 'XYZ' && args[2] !== null) {\n args[2] = this.page.height - args[2];\n }\n args.unshift(this.page.dictionary);\n this._root.data.Names.data.Dests.add(name, args);\n }\n }, {\n key: \"addNamedEmbeddedFile\",\n value: function addNamedEmbeddedFile(name, ref) {\n if (!this._root.data.Names.data.EmbeddedFiles) {\n // disabling /Limits for this tree fixes attachments not showing in Adobe Reader\n this._root.data.Names.data.EmbeddedFiles = new PDFNameTree({\n limits: false\n });\n } // add filespec to EmbeddedFiles\n\n this._root.data.Names.data.EmbeddedFiles.add(name, ref);\n }\n }, {\n key: \"addNamedJavaScript\",\n value: function addNamedJavaScript(name, js) {\n if (!this._root.data.Names.data.JavaScript) {\n this._root.data.Names.data.JavaScript = new PDFNameTree();\n }\n var data = {\n JS: new String(js),\n S: 'JavaScript'\n };\n this._root.data.Names.data.JavaScript.add(name, data);\n }\n }, {\n key: \"ref\",\n value: function ref(data) {\n var ref = new PDFReference(this, this._offsets.length + 1, data);\n this._offsets.push(null); // placeholder for this object's offset once it is finalized\n\n this._waiting++;\n return ref;\n }\n }, {\n key: \"_read\",\n value: function _read() {} // do nothing, but this method is required by node\n }, {\n key: \"_write\",\n value: function _write(data) {\n if (!Buffer.isBuffer(data)) {\n data = Buffer.from(data + '\\n', 'binary');\n }\n this.push(data);\n return this._offset += data.length;\n }\n }, {\n key: \"addContent\",\n value: function addContent(data) {\n this.page.write(data);\n return this;\n }\n }, {\n key: \"_refEnd\",\n value: function _refEnd(ref) {\n this._offsets[ref.id - 1] = ref.offset;\n if (--this._waiting === 0 && this._ended) {\n this._finalize();\n return this._ended = false;\n }\n }\n }, {\n key: \"write\",\n value: function write(filename, fn) {\n // print a deprecation warning with a stacktrace\n var err = new Error(\"PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. Please pipe the document into a Node stream.\");\n console.warn(err.stack);\n this.pipe(fs.createWriteStream(filename));\n this.end();\n return this.once('end', fn);\n }\n }, {\n key: \"end\",\n value: function end() {\n this.flushPages();\n this._info = this.ref();\n for (var key in this.info) {\n var val = this.info[key];\n if (typeof val === 'string') {\n val = new String(val);\n }\n var entry = this.ref(val);\n entry.end();\n this._info.data[key] = entry;\n }\n this._info.end();\n for (var name in this._fontFamilies) {\n var font = this._fontFamilies[name];\n font.finalize();\n }\n this.endOutline();\n this.endMarkings();\n if (this.subset) {\n this.endSubset();\n }\n this.endMetadata();\n this._root.end();\n this._root.data.Pages.end();\n this._root.data.Names.end();\n this.endAcroForm();\n if (this._root.data.ViewerPreferences) {\n this._root.data.ViewerPreferences.end();\n }\n if (this._security) {\n this._security.end();\n }\n if (this._waiting === 0) {\n return this._finalize();\n } else {\n return this._ended = true;\n }\n }\n }, {\n key: \"_finalize\",\n value: function _finalize() {\n // generate xref\n var xRefOffset = this._offset;\n this._write('xref');\n this._write(\"0 \".concat(this._offsets.length + 1));\n this._write('0000000000 65535 f ');\n var _iterator2 = _createForOfIteratorHelper(this._offsets),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var offset = _step2.value;\n offset = \"0000000000\".concat(offset).slice(-10);\n this._write(offset + ' 00000 n ');\n } // trailer\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var trailer = {\n Size: this._offsets.length + 1,\n Root: this._root,\n Info: this._info,\n ID: [this._id, this._id]\n };\n if (this._security) {\n trailer.Encrypt = this._security.dictionary;\n }\n this._write('trailer');\n this._write(PDFObject.convert(trailer));\n this._write('startxref');\n this._write(\"\".concat(xRefOffset));\n this._write('%%EOF'); // end the stream\n\n return this.push(null);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return '[object PDFDocument]';\n }\n }]);\n return PDFDocument;\n}(_stream.default.Readable);\nvar mixin = function mixin(methods) {\n Object.assign(PDFDocument.prototype, methods);\n};\nmixin(MetadataMixin);\nmixin(ColorMixin);\nmixin(VectorMixin);\nmixin(FontsMixin);\nmixin(TextMixin);\nmixin(ImagesMixin);\nmixin(AnnotationsMixin);\nmixin(OutlineMixin);\nmixin(MarkingsMixin);\nmixin(AcroFormMixin);\nmixin(AttachmentsMixin);\nmixin(SubsetMixin);\nPDFDocument.LineWrapper = LineWrapper;\nvar _default = exports[\"default\"] = PDFDocument;\n\n/***/ }),\n\n/***/ 36164:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar ___EXPOSE_LOADER_IMPORT___ = __webpack_require__(45314);\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = __webpack_require__(72022);\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"pdfMake\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"pdfMake\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n\n\n/***/ }),\n\n/***/ 80182:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var process = __webpack_require__(9964);\n// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nvar _require = __webpack_require__(35403),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\nvar AssertionError = __webpack_require__(85416);\nvar _require2 = __webpack_require__(7187),\n inspect = _require2.inspect;\nvar _require$types = (__webpack_require__(7187).types),\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\nvar objectAssign = __webpack_require__(37596)();\nvar objectIs = __webpack_require__(89636)();\nvar RegExpPrototypeTest = __webpack_require__(67913)('RegExp.prototype.test');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\nfunction lazyLoadComparison() {\n var comparison = __webpack_require__(86781);\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n}\n\n// Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = (/* unused pure expression or super */ null && ([\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"]));\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\nvar warned = false;\n\n// The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {};\n\n// All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n if (argsLen === 2) operator = '!=';\n }\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n if (message !== undefined) {\n errArgs.message = message;\n }\n var err = new AssertionError(errArgs);\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n throw err;\n}\nassert.fail = fail;\n\n// The AssertionError is defined in internal/error.\nassert.AssertionError = AssertionError;\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\n\n// Pure assertion tests whether a value is truthy, as determined\n// by !!value.\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\nassert.ok = ok;\n\n// The equality assertion tests shallow, coercive equality with ==.\n/* eslint-disable no-restricted-properties */\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n};\n\n// The non-equality assertion tests for whether two objects are not\n// equal with !=.\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n};\n\n// The equivalence assertion tests a deep equality relation.\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n};\n\n// The non-equivalence assertion tests for any deep inequality.\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\nvar Comparison = /*#__PURE__*/_createClass(function Comparison(obj, keys, actual) {\n var _this = this;\n _classCallCheck(this, Comparison);\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && RegExpPrototypeTest(obj[key], actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n});\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return RegExpPrototypeTest(expected, actual);\n // assert.doesNotThrow does not accept objects.\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n }\n\n // Handle primitives properly.\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n var keys = Object.keys(expected);\n // Special handle errors to make sure the name and the message are compared\n // as well.\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && RegExpPrototypeTest(expected[key], actual[key])) {\n return;\n }\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n }\n // Guard instanceof against arrow functions as they don't have a prototype.\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n return expected.call({}, actual) === true;\n}\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n try {\n fn();\n } catch (e) {\n return e;\n }\n return NO_EXCEPTION_SENTINEL;\n}\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn();\n // Fail in case no promise is returned.\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n throw actual;\n}\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n });\n\n // Make sure we actually have a stack trace!\n var origStack = err.stack;\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift();\n // Filter all frames existing in err.stack.\n var tmp1 = newErr.stack.split('\\n');\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n throw newErr;\n }\n};\n\n// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a871df3dfb8ea663ef5e1f8f62701ec51384ecb\nfunction internalMatch(string, regexp, message, fn, fnName) {\n if (!isRegExp(regexp)) {\n throw new ERR_INVALID_ARG_TYPE('regexp', 'RegExp', regexp);\n }\n var match = fnName === 'match';\n if (typeof string !== 'string' || RegExpPrototypeTest(regexp, string) !== match) {\n if (message instanceof Error) {\n throw message;\n }\n var generatedMessage = !message;\n\n // 'The input was expected to not match the regular expression ' +\n message = message || (typeof string !== 'string' ? 'The \"string\" argument must be of type string. Received type ' + \"\".concat(_typeof(string), \" (\").concat(inspect(string), \")\") : (match ? 'The input did not match the regular expression ' : 'The input was expected to not match the regular expression ') + \"\".concat(inspect(regexp), \". Input:\\n\\n\").concat(inspect(string), \"\\n\"));\n var err = new AssertionError({\n actual: string,\n expected: regexp,\n message: message,\n operator: fnName,\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\nassert.match = function match(string, regexp, message) {\n internalMatch(string, regexp, message, match, 'match');\n};\nassert.doesNotMatch = function doesNotMatch(string, regexp, message) {\n internalMatch(string, regexp, message, doesNotMatch, 'doesNotMatch');\n};\n\n// Expose a strict only variant of assert\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\n/***/ }),\n\n/***/ 85416:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var process = __webpack_require__(9964);\n// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _require = __webpack_require__(7187),\n inspect = _require.inspect;\nvar _require2 = __webpack_require__(35403),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE;\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n while (count) {\n str += str;\n count--;\n }\n str += str.substring(0, maxCount - str.length);\n return str;\n}\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n};\n\n// Comparing short primitives should just show === / !== instead of using the\n// diff.\nvar kMaxShortLength = 10;\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = '';\n\n // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n }\n\n // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length;\n // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n }\n // Ignore the first characters.\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n }\n\n // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n var maxLines = Math.max(actualLines.length, expectedLines.length);\n // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n');\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the expected line to the cache.\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++;\n // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++;\n // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i];\n // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine);\n // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2;\n // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = '';\n // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n }\n // Inspected object to big (Show ~20 rows max)\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\nvar AssertionError = /*#__PURE__*/function (_Error, _inspect$custom) {\n _inherits(AssertionError, _Error);\n var _super = _createSuper(AssertionError);\n function AssertionError(options) {\n var _this;\n _classCallCheck(this, AssertionError);\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n if (message != null) {\n _this = _super.call(this, String(message));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n }\n // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _super.call(this, createErrDiff(actual, expected, operator));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n');\n\n // In case \"actual\" is an object, it should not be reference equal.\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n }\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n while (res.length > 27) {\n res.pop();\n }\n }\n\n // Only print a single input.\n if (res.length === 1) {\n _this = _super.call(this, \"\".concat(base, \" \").concat(res[0]));\n } else {\n _this = _super.call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\"));\n }\n } else {\n var _res = inspectValue(actual);\n var other = '';\n var knownOperators = kReadableOperator[operator];\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n _this = _super.call(this, \"\".concat(_res).concat(other));\n }\n }\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n }\n // Create error message including the error code in the name.\n _this.stack;\n // Reset the name.\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: _inspect$custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread(_objectSpread({}, ctx), {}, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n return AssertionError;\n}( /*#__PURE__*/_wrapNativeSuper(Error), inspect.custom);\nmodule.exports = AssertionError;\n\n/***/ }),\n\n/***/ 35403:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n/* eslint node-core/alphabetize-errors: \"error\" */\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n\n\n\n// The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nvar codes = {};\n\n// Lazy loaded\nvar assert;\nvar util;\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n var NodeError = /*#__PURE__*/function (_Base) {\n _inherits(NodeError, _Base);\n var _super = _createSuper(NodeError);\n function NodeError(arg1, arg2, arg3) {\n var _this;\n _classCallCheck(this, NodeError);\n _this = _super.call(this, getMessage(arg1, arg2, arg3));\n _this.code = code;\n return _this;\n }\n return _createClass(NodeError);\n }(Base);\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = __webpack_require__(80182);\n assert(typeof name === 'string', \"'name' must be a string\");\n\n // determiner: 'must be' or 'must not be'\n var determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n var msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n // TODO(BridgeAR): Improve the output by showing `null` and similar.\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = __webpack_require__(7187);\n var inspected = util.inspect(value);\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (assert === undefined) assert = __webpack_require__(80182);\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;\n\n/***/ }),\n\n/***/ 86781:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar regexFlagsSupported = /a/g.flags !== undefined;\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\nvar objectIs = Object.is ? Object.is : __webpack_require__(98527);\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : __webpack_require__(7051);\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\nvar _require$types = (__webpack_require__(7187).types),\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n }\n // The maximum size for an array is 2 ** 32 -1.\n return key.length === 10 && key >= Math.pow(2, 32);\n}\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n}\n\n// Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3;\n\n// Check if they have the same source and flags\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n return true;\n}\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n}\n\n// Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n }\n\n // Check more closely if val1 and val2 are equal.\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n return false;\n }\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n if (val1Tag !== val2Tag) {\n return false;\n }\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (keys1.length !== keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n }\n // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n }\n // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (_keys.length !== _keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2);\n\n // The pair must have the same number of owned properties.\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n }\n\n // Cheap key test\n var i = 0;\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n if (symbolKeysA.length !== 0) {\n var count = 0;\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n }\n\n // Use memos to handle cycles.\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n memos.position++;\n }\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n return false;\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n case 'object':\n // Only pass in null as object!\n return undefined;\n case 'symbol':\n return false;\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n }\n return true;\n}\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = b.get(altValue);\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i];\n // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n }\n // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false;\n\n // Fast path to detect missing string, symbol, undefined and null values.\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n if (set === null) {\n set = new Set();\n }\n set.add(val);\n }\n }\n if (set !== null) {\n var bValues = arrayFromSet(b);\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i];\n // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n return false;\n}\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false;\n // Fast path to detect missing string, symbol, undefined and null\n // keys.\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n }\n }\n }\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n _key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n if (_typeof(_key) === 'object' && _key !== null) {\n if (!mapHasEqualEntry(set, a, _key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(_key) || !innerDeepEqual(a.get(_key), item, false, memo)) && !mapHasEqualEntry(set, a, _key, item, false, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n return true;\n }\n }\n }\n\n // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n for (i = 0; i < keys.length; i++) {\n var _key2 = keys[i];\n if (!innerDeepEqual(a[_key2], b[_key2], strict, memos)) {\n return false;\n }\n }\n return true;\n}\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};\n\n/***/ }),\n\n/***/ 32504:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n\n/***/ }),\n\n/***/ 34097:\n/***/ (function(module) {\n\n/* Copyright 2013 Google Inc. All Rights Reserved.\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 Bit reading helpers\n*/\n\nvar BROTLI_READ_SIZE = 4096;\nvar BROTLI_IBUF_SIZE = (2 * BROTLI_READ_SIZE + 32);\nvar BROTLI_IBUF_MASK = (2 * BROTLI_READ_SIZE - 1);\n\nvar kBitMask = new Uint32Array([\n 0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,\n 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215\n]);\n\n/* Input byte buffer, consist of a ringbuffer and a \"slack\" region where */\n/* bytes from the start of the ringbuffer are copied. */\nfunction BrotliBitReader(input) {\n this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);\n this.input_ = input; /* input callback */\n \n this.reset();\n}\n\nBrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;\nBrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;\n\nBrotliBitReader.prototype.reset = function() {\n this.buf_ptr_ = 0; /* next input will write here */\n this.val_ = 0; /* pre-fetched bits */\n this.pos_ = 0; /* byte position in stream */\n this.bit_pos_ = 0; /* current bit-reading position in val_ */\n this.bit_end_pos_ = 0; /* bit-reading end position from LSB of val_ */\n this.eos_ = 0; /* input stream is finished */\n \n this.readMoreInput();\n for (var i = 0; i < 4; i++) {\n this.val_ |= this.buf_[this.pos_] << (8 * i);\n ++this.pos_;\n }\n \n return this.bit_end_pos_ > 0;\n};\n\n/* Fills up the input ringbuffer by calling the input callback.\n\n Does nothing if there are at least 32 bytes present after current position.\n\n Returns 0 if either:\n - the input callback returned an error, or\n - there is no more input and the position is past the end of the stream.\n\n After encountering the end of the input stream, 32 additional zero bytes are\n copied to the ringbuffer, therefore it is safe to call this function after\n every 32 bytes of input is read.\n*/\nBrotliBitReader.prototype.readMoreInput = function() {\n if (this.bit_end_pos_ > 256) {\n return;\n } else if (this.eos_) {\n if (this.bit_pos_ > this.bit_end_pos_)\n throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_);\n } else {\n var dst = this.buf_ptr_;\n var bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE);\n if (bytes_read < 0) {\n throw new Error('Unexpected end of input');\n }\n \n if (bytes_read < BROTLI_READ_SIZE) {\n this.eos_ = 1;\n /* Store 32 bytes of zero after the stream end. */\n for (var p = 0; p < 32; p++)\n this.buf_[dst + bytes_read + p] = 0;\n }\n \n if (dst === 0) {\n /* Copy the head of the ringbuffer to the slack region. */\n for (var p = 0; p < 32; p++)\n this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p];\n\n this.buf_ptr_ = BROTLI_READ_SIZE;\n } else {\n this.buf_ptr_ = 0;\n }\n \n this.bit_end_pos_ += bytes_read << 3;\n }\n};\n\n/* Guarantees that there are at least 24 bits in the buffer. */\nBrotliBitReader.prototype.fillBitWindow = function() { \n while (this.bit_pos_ >= 8) {\n this.val_ >>>= 8;\n this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;\n ++this.pos_;\n this.bit_pos_ = this.bit_pos_ - 8 >>> 0;\n this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;\n }\n};\n\n/* Reads the specified number of bits from Read Buffer. */\nBrotliBitReader.prototype.readBits = function(n_bits) {\n if (32 - this.bit_pos_ < n_bits) {\n this.fillBitWindow();\n }\n \n var val = ((this.val_ >>> this.bit_pos_) & kBitMask[n_bits]);\n this.bit_pos_ += n_bits;\n return val;\n};\n\nmodule.exports = BrotliBitReader;\n\n\n/***/ }),\n\n/***/ 7043:\n/***/ (function(__unused_webpack_module, exports) {\n\n/* Copyright 2013 Google Inc. All Rights Reserved.\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 Lookup table to map the previous two bytes to a context id.\n\n There are four different context modeling modes defined here:\n CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,\n CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,\n CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,\n CONTEXT_SIGNED: second-order context model tuned for signed integers.\n\n The context id for the UTF8 context model is calculated as follows. If p1\n and p2 are the previous two bytes, we calcualte the context as\n\n context = kContextLookup[p1] | kContextLookup[p2 + 256].\n\n If the previous two bytes are ASCII characters (i.e. < 128), this will be\n equivalent to\n\n context = 4 * context1(p1) + context2(p2),\n\n where context1 is based on the previous byte in the following way:\n\n 0 : non-ASCII control\n 1 : \\t, \\n, \\r\n 2 : space\n 3 : other punctuation\n 4 : \" '\n 5 : %\n 6 : ( < [ {\n 7 : ) > ] }\n 8 : , ; :\n 9 : .\n 10 : =\n 11 : number\n 12 : upper-case vowel\n 13 : upper-case consonant\n 14 : lower-case vowel\n 15 : lower-case consonant\n\n and context2 is based on the second last byte:\n\n 0 : control, space\n 1 : punctuation\n 2 : upper-case letter, number\n 3 : lower-case letter\n\n If the last byte is ASCII, and the second last byte is not (in a valid UTF8\n stream it will be a continuation byte, value between 128 and 191), the\n context is the same as if the second last byte was an ASCII control or space.\n\n If the last byte is a UTF8 lead byte (value >= 192), then the next byte will\n be a continuation byte and the context id is 2 or 3 depending on the LSB of\n the last byte and to a lesser extent on the second last byte if it is ASCII.\n\n If the last byte is a UTF8 continuation byte, the second last byte can be:\n - continuation byte: the next byte is probably ASCII or lead byte (assuming\n 4-byte UTF8 characters are rare) and the context id is 0 or 1.\n - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1\n - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3\n\n The possible value combinations of the previous two bytes, the range of\n context ids and the type of the next byte is summarized in the table below:\n\n |--------\\-----------------------------------------------------------------|\n | \\ Last byte |\n | Second \\---------------------------------------------------------------|\n | last byte \\ ASCII | cont. byte | lead byte |\n | \\ (0-127) | (128-191) | (192-) |\n |=============|===================|=====================|==================|\n | ASCII | next: ASCII/lead | not valid | next: cont. |\n | (0-127) | context: 4 - 63 | | context: 2 - 3 |\n |-------------|-------------------|---------------------|------------------|\n | cont. byte | next: ASCII/lead | next: ASCII/lead | next: cont. |\n | (128-191) | context: 4 - 63 | context: 0 - 1 | context: 2 - 3 |\n |-------------|-------------------|---------------------|------------------|\n | lead byte | not valid | next: ASCII/lead | not valid |\n | (192-207) | | context: 0 - 1 | |\n |-------------|-------------------|---------------------|------------------|\n | lead byte | not valid | next: cont. | not valid |\n | (208-) | | context: 2 - 3 | |\n |-------------|-------------------|---------------------|------------------|\n\n The context id for the signed context mode is calculated as:\n\n context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].\n\n For any context modeling modes, the context ids can be calculated by |-ing\n together two lookups from one table using context model dependent offsets:\n\n context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].\n\n where offset1 and offset2 are dependent on the context mode.\n*/\n\nvar CONTEXT_LSB6 = 0;\nvar CONTEXT_MSB6 = 1;\nvar CONTEXT_UTF8 = 2;\nvar CONTEXT_SIGNED = 3;\n\n/* Common context lookup table for all context modes. */\nexports.lookup = new Uint8Array([\n /* CONTEXT_UTF8, last byte. */\n /* ASCII range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,\n 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,\n 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,\n 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,\n 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,\n 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0,\n /* UTF8 continuation byte range. */\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n /* UTF8 lead byte range. */\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n /* CONTEXT_UTF8 second last byte. */\n /* ASCII range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,\n 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,\n 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,\n /* UTF8 continuation byte range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n /* UTF8 lead byte range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n /* CONTEXT_SIGNED, second last byte. */\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,\n /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */\n 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,\n /* CONTEXT_LSB6, last byte. */\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n /* CONTEXT_MSB6, last byte. */\n 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,\n 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,\n 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11,\n 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,\n 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,\n 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,\n 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,\n 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,\n 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,\n 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,\n 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,\n 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,\n 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,\n 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,\n 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,\n 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,\n /* CONTEXT_{M,L}SB6, second last byte, */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n]);\n\nexports.lookupOffsets = new Uint16Array([\n /* CONTEXT_LSB6 */\n 1024, 1536,\n /* CONTEXT_MSB6 */\n 1280, 1536,\n /* CONTEXT_UTF8 */\n 0, 256,\n /* CONTEXT_SIGNED */\n 768, 512,\n]);\n\n\n/***/ }),\n\n/***/ 20980:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar __webpack_unused_export__;\n/* Copyright 2013 Google Inc. All Rights Reserved.\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\nvar BrotliInput = (__webpack_require__(98197)/* .BrotliInput */ .z);\nvar BrotliOutput = (__webpack_require__(98197)/* .BrotliOutput */ .y);\nvar BrotliBitReader = __webpack_require__(34097);\nvar BrotliDictionary = __webpack_require__(80614);\nvar HuffmanCode = (__webpack_require__(81561)/* .HuffmanCode */ .z);\nvar BrotliBuildHuffmanTable = (__webpack_require__(81561)/* .BrotliBuildHuffmanTable */ .u);\nvar Context = __webpack_require__(7043);\nvar Prefix = __webpack_require__(42210);\nvar Transform = __webpack_require__(87984);\n\nvar kDefaultCodeLength = 8;\nvar kCodeLengthRepeatCode = 16;\nvar kNumLiteralCodes = 256;\nvar kNumInsertAndCopyCodes = 704;\nvar kNumBlockLengthCodes = 26;\nvar kLiteralContextBits = 6;\nvar kDistanceContextBits = 2;\n\nvar HUFFMAN_TABLE_BITS = 8;\nvar HUFFMAN_TABLE_MASK = 0xff;\n/* Maximum possible Huffman table size for an alphabet size of 704, max code\n * length 15 and root table bits 8. */\nvar HUFFMAN_MAX_TABLE_SIZE = 1080;\n\nvar CODE_LENGTH_CODES = 18;\nvar kCodeLengthCodeOrder = new Uint8Array([\n 1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n]);\n\nvar NUM_DISTANCE_SHORT_CODES = 16;\nvar kDistanceShortCodeIndexOffset = new Uint8Array([\n 3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2\n]);\n\nvar kDistanceShortCodeValueOffset = new Int8Array([\n 0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3\n]);\n\nvar kMaxHuffmanTableSize = new Uint16Array([\n 256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,\n 854, 886, 920, 952, 984, 1016, 1048, 1080\n]);\n\nfunction DecodeWindowBits(br) {\n var n;\n if (br.readBits(1) === 0) {\n return 16;\n }\n \n n = br.readBits(3);\n if (n > 0) {\n return 17 + n;\n }\n \n n = br.readBits(3);\n if (n > 0) {\n return 8 + n;\n }\n \n return 17;\n}\n\n/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */\nfunction DecodeVarLenUint8(br) {\n if (br.readBits(1)) {\n var nbits = br.readBits(3);\n if (nbits === 0) {\n return 1;\n } else {\n return br.readBits(nbits) + (1 << nbits);\n }\n }\n return 0;\n}\n\nfunction MetaBlockLength() {\n this.meta_block_length = 0;\n this.input_end = 0;\n this.is_uncompressed = 0;\n this.is_metadata = false;\n}\n\nfunction DecodeMetaBlockLength(br) {\n var out = new MetaBlockLength; \n var size_nibbles;\n var size_bytes;\n var i;\n \n out.input_end = br.readBits(1);\n if (out.input_end && br.readBits(1)) {\n return out;\n }\n \n size_nibbles = br.readBits(2) + 4;\n if (size_nibbles === 7) {\n out.is_metadata = true;\n \n if (br.readBits(1) !== 0)\n throw new Error('Invalid reserved bit');\n \n size_bytes = br.readBits(2);\n if (size_bytes === 0)\n return out;\n \n for (i = 0; i < size_bytes; i++) {\n var next_byte = br.readBits(8);\n if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)\n throw new Error('Invalid size byte');\n \n out.meta_block_length |= next_byte << (i * 8);\n }\n } else {\n for (i = 0; i < size_nibbles; ++i) {\n var next_nibble = br.readBits(4);\n if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)\n throw new Error('Invalid size nibble');\n \n out.meta_block_length |= next_nibble << (i * 4);\n }\n }\n \n ++out.meta_block_length;\n \n if (!out.input_end && !out.is_metadata) {\n out.is_uncompressed = br.readBits(1);\n }\n \n return out;\n}\n\n/* Decodes the next Huffman code from bit-stream. */\nfunction ReadSymbol(table, index, br) {\n var start_index = index;\n \n var nbits;\n br.fillBitWindow();\n index += (br.val_ >>> br.bit_pos_) & HUFFMAN_TABLE_MASK;\n nbits = table[index].bits - HUFFMAN_TABLE_BITS;\n if (nbits > 0) {\n br.bit_pos_ += HUFFMAN_TABLE_BITS;\n index += table[index].value;\n index += (br.val_ >>> br.bit_pos_) & ((1 << nbits) - 1);\n }\n br.bit_pos_ += table[index].bits;\n return table[index].value;\n}\n\nfunction ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {\n var symbol = 0;\n var prev_code_len = kDefaultCodeLength;\n var repeat = 0;\n var repeat_code_len = 0;\n var space = 32768;\n \n var table = [];\n for (var i = 0; i < 32; i++)\n table.push(new HuffmanCode(0, 0));\n \n BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES);\n\n while (symbol < num_symbols && space > 0) {\n var p = 0;\n var code_len;\n \n br.readMoreInput();\n br.fillBitWindow();\n p += (br.val_ >>> br.bit_pos_) & 31;\n br.bit_pos_ += table[p].bits;\n code_len = table[p].value & 0xff;\n if (code_len < kCodeLengthRepeatCode) {\n repeat = 0;\n code_lengths[symbol++] = code_len;\n if (code_len !== 0) {\n prev_code_len = code_len;\n space -= 32768 >> code_len;\n }\n } else {\n var extra_bits = code_len - 14;\n var old_repeat;\n var repeat_delta;\n var new_len = 0;\n if (code_len === kCodeLengthRepeatCode) {\n new_len = prev_code_len;\n }\n if (repeat_code_len !== new_len) {\n repeat = 0;\n repeat_code_len = new_len;\n }\n old_repeat = repeat;\n if (repeat > 0) {\n repeat -= 2;\n repeat <<= extra_bits;\n }\n repeat += br.readBits(extra_bits) + 3;\n repeat_delta = repeat - old_repeat;\n if (symbol + repeat_delta > num_symbols) {\n throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols');\n }\n \n for (var x = 0; x < repeat_delta; x++)\n code_lengths[symbol + x] = repeat_code_len;\n \n symbol += repeat_delta;\n \n if (repeat_code_len !== 0) {\n space -= repeat_delta << (15 - repeat_code_len);\n }\n }\n }\n if (space !== 0) {\n throw new Error(\"[ReadHuffmanCodeLengths] space = \" + space);\n }\n \n for (; symbol < num_symbols; symbol++)\n code_lengths[symbol] = 0;\n}\n\nfunction ReadHuffmanCode(alphabet_size, tables, table, br) {\n var table_size = 0;\n var simple_code_or_skip;\n var code_lengths = new Uint8Array(alphabet_size);\n \n br.readMoreInput();\n \n /* simple_code_or_skip is used as follows:\n 1 for simple code;\n 0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */\n simple_code_or_skip = br.readBits(2);\n if (simple_code_or_skip === 1) {\n /* Read symbols, codes & code lengths directly. */\n var i;\n var max_bits_counter = alphabet_size - 1;\n var max_bits = 0;\n var symbols = new Int32Array(4);\n var num_symbols = br.readBits(2) + 1;\n while (max_bits_counter) {\n max_bits_counter >>= 1;\n ++max_bits;\n }\n\n for (i = 0; i < num_symbols; ++i) {\n symbols[i] = br.readBits(max_bits) % alphabet_size;\n code_lengths[symbols[i]] = 2;\n }\n code_lengths[symbols[0]] = 1;\n switch (num_symbols) {\n case 1:\n break;\n case 3:\n if ((symbols[0] === symbols[1]) ||\n (symbols[0] === symbols[2]) ||\n (symbols[1] === symbols[2])) {\n throw new Error('[ReadHuffmanCode] invalid symbols');\n }\n break;\n case 2:\n if (symbols[0] === symbols[1]) {\n throw new Error('[ReadHuffmanCode] invalid symbols');\n }\n \n code_lengths[symbols[1]] = 1;\n break;\n case 4:\n if ((symbols[0] === symbols[1]) ||\n (symbols[0] === symbols[2]) ||\n (symbols[0] === symbols[3]) ||\n (symbols[1] === symbols[2]) ||\n (symbols[1] === symbols[3]) ||\n (symbols[2] === symbols[3])) {\n throw new Error('[ReadHuffmanCode] invalid symbols');\n }\n \n if (br.readBits(1)) {\n code_lengths[symbols[2]] = 3;\n code_lengths[symbols[3]] = 3;\n } else {\n code_lengths[symbols[0]] = 2;\n }\n break;\n }\n } else { /* Decode Huffman-coded code lengths. */\n var i;\n var code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES);\n var space = 32;\n var num_codes = 0;\n /* Static Huffman code for the code length code lengths */\n var huff = [\n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), \n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),\n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), \n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)\n ];\n for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) {\n var code_len_idx = kCodeLengthCodeOrder[i];\n var p = 0;\n var v;\n br.fillBitWindow();\n p += (br.val_ >>> br.bit_pos_) & 15;\n br.bit_pos_ += huff[p].bits;\n v = huff[p].value;\n code_length_code_lengths[code_len_idx] = v;\n if (v !== 0) {\n space -= (32 >> v);\n ++num_codes;\n }\n }\n \n if (!(num_codes === 1 || space === 0))\n throw new Error('[ReadHuffmanCode] invalid num_codes or space');\n \n ReadHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br);\n }\n \n table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size);\n \n if (table_size === 0) {\n throw new Error(\"[ReadHuffmanCode] BuildHuffmanTable failed: \");\n }\n \n return table_size;\n}\n\nfunction ReadBlockLength(table, index, br) {\n var code;\n var nbits;\n code = ReadSymbol(table, index, br);\n nbits = Prefix.kBlockLengthPrefixCode[code].nbits;\n return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);\n}\n\nfunction TranslateShortCodes(code, ringbuffer, index) {\n var val;\n if (code < NUM_DISTANCE_SHORT_CODES) {\n index += kDistanceShortCodeIndexOffset[code];\n index &= 3;\n val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];\n } else {\n val = code - NUM_DISTANCE_SHORT_CODES + 1;\n }\n return val;\n}\n\nfunction MoveToFront(v, index) {\n var value = v[index];\n var i = index;\n for (; i; --i) v[i] = v[i - 1];\n v[0] = value;\n}\n\nfunction InverseMoveToFrontTransform(v, v_len) {\n var mtf = new Uint8Array(256);\n var i;\n for (i = 0; i < 256; ++i) {\n mtf[i] = i;\n }\n for (i = 0; i < v_len; ++i) {\n var index = v[i];\n v[i] = mtf[index];\n if (index) MoveToFront(mtf, index);\n }\n}\n\n/* Contains a collection of huffman trees with the same alphabet size. */\nfunction HuffmanTreeGroup(alphabet_size, num_htrees) {\n this.alphabet_size = alphabet_size;\n this.num_htrees = num_htrees;\n this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[(alphabet_size + 31) >>> 5]); \n this.htrees = new Uint32Array(num_htrees);\n}\n\nHuffmanTreeGroup.prototype.decode = function(br) {\n var i;\n var table_size;\n var next = 0;\n for (i = 0; i < this.num_htrees; ++i) {\n this.htrees[i] = next;\n table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br);\n next += table_size;\n }\n};\n\nfunction DecodeContextMap(context_map_size, br) {\n var out = { num_htrees: null, context_map: null };\n var use_rle_for_zeros;\n var max_run_length_prefix = 0;\n var table;\n var i;\n \n br.readMoreInput();\n var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;\n\n var context_map = out.context_map = new Uint8Array(context_map_size);\n if (num_htrees <= 1) {\n return out;\n }\n\n use_rle_for_zeros = br.readBits(1);\n if (use_rle_for_zeros) {\n max_run_length_prefix = br.readBits(4) + 1;\n }\n \n table = [];\n for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {\n table[i] = new HuffmanCode(0, 0);\n }\n \n ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br);\n \n for (i = 0; i < context_map_size;) {\n var code;\n\n br.readMoreInput();\n code = ReadSymbol(table, 0, br);\n if (code === 0) {\n context_map[i] = 0;\n ++i;\n } else if (code <= max_run_length_prefix) {\n var reps = 1 + (1 << code) + br.readBits(code);\n while (--reps) {\n if (i >= context_map_size) {\n throw new Error(\"[DecodeContextMap] i >= context_map_size\");\n }\n context_map[i] = 0;\n ++i;\n }\n } else {\n context_map[i] = code - max_run_length_prefix;\n ++i;\n }\n }\n if (br.readBits(1)) {\n InverseMoveToFrontTransform(context_map, context_map_size);\n }\n \n return out;\n}\n\nfunction DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {\n var ringbuffer = tree_type * 2;\n var index = tree_type;\n var type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br);\n var block_type;\n if (type_code === 0) {\n block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];\n } else if (type_code === 1) {\n block_type = ringbuffers[ringbuffer + ((indexes[index] - 1) & 1)] + 1;\n } else {\n block_type = type_code - 2;\n }\n if (block_type >= max_block_type) {\n block_type -= max_block_type;\n }\n block_types[tree_type] = block_type;\n ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;\n ++indexes[index];\n}\n\nfunction CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {\n var rb_size = ringbuffer_mask + 1;\n var rb_pos = pos & ringbuffer_mask;\n var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;\n var nbytes;\n\n /* For short lengths copy byte-by-byte */\n if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {\n while (len-- > 0) {\n br.readMoreInput();\n ringbuffer[rb_pos++] = br.readBits(8);\n if (rb_pos === rb_size) {\n output.write(ringbuffer, rb_size);\n rb_pos = 0;\n }\n }\n return;\n }\n\n if (br.bit_end_pos_ < 32) {\n throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32');\n }\n\n /* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */\n while (br.bit_pos_ < 32) {\n ringbuffer[rb_pos] = (br.val_ >>> br.bit_pos_);\n br.bit_pos_ += 8;\n ++rb_pos;\n --len;\n }\n\n /* Copy remaining bytes from br.buf_ to ringbuffer. */\n nbytes = (br.bit_end_pos_ - br.bit_pos_) >> 3;\n if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {\n var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;\n for (var x = 0; x < tail; x++)\n ringbuffer[rb_pos + x] = br.buf_[br_pos + x];\n \n nbytes -= tail;\n rb_pos += tail;\n len -= tail;\n br_pos = 0;\n }\n\n for (var x = 0; x < nbytes; x++)\n ringbuffer[rb_pos + x] = br.buf_[br_pos + x];\n \n rb_pos += nbytes;\n len -= nbytes;\n\n /* If we wrote past the logical end of the ringbuffer, copy the tail of the\n ringbuffer to its beginning and flush the ringbuffer to the output. */\n if (rb_pos >= rb_size) {\n output.write(ringbuffer, rb_size);\n rb_pos -= rb_size; \n for (var x = 0; x < rb_pos; x++)\n ringbuffer[x] = ringbuffer[rb_size + x];\n }\n\n /* If we have more to copy than the remaining size of the ringbuffer, then we\n first fill the ringbuffer from the input and then flush the ringbuffer to\n the output */\n while (rb_pos + len >= rb_size) {\n nbytes = rb_size - rb_pos;\n if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {\n throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');\n }\n output.write(ringbuffer, rb_size);\n len -= nbytes;\n rb_pos = 0;\n }\n\n /* Copy straight from the input onto the ringbuffer. The ringbuffer will be\n flushed to the output at a later time. */\n if (br.input_.read(ringbuffer, rb_pos, len) < len) {\n throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');\n }\n\n /* Restore the state of the bit reader. */\n br.reset();\n}\n\n/* Advances the bit reader position to the next byte boundary and verifies\n that any skipped bits are set to zero. */\nfunction JumpToByteBoundary(br) {\n var new_bit_pos = (br.bit_pos_ + 7) & ~7;\n var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);\n return pad_bits == 0;\n}\n\nfunction BrotliDecompressedSize(buffer) {\n var input = new BrotliInput(buffer);\n var br = new BrotliBitReader(input);\n DecodeWindowBits(br);\n var out = DecodeMetaBlockLength(br);\n return out.meta_block_length;\n}\n\n__webpack_unused_export__ = BrotliDecompressedSize;\n\nfunction BrotliDecompressBuffer(buffer, output_size) {\n var input = new BrotliInput(buffer);\n \n if (output_size == null) {\n output_size = BrotliDecompressedSize(buffer);\n }\n \n var output_buffer = new Uint8Array(output_size);\n var output = new BrotliOutput(output_buffer);\n \n BrotliDecompress(input, output);\n \n if (output.pos < output.buffer.length) {\n output.buffer = output.buffer.subarray(0, output.pos);\n }\n \n return output.buffer;\n}\n\nexports.BrotliDecompressBuffer = BrotliDecompressBuffer;\n\nfunction BrotliDecompress(input, output) {\n var i;\n var pos = 0;\n var input_end = 0;\n var window_bits = 0;\n var max_backward_distance;\n var max_distance = 0;\n var ringbuffer_size;\n var ringbuffer_mask;\n var ringbuffer;\n var ringbuffer_end;\n /* This ring buffer holds a few past copy distances that will be used by */\n /* some special distance codes. */\n var dist_rb = [ 16, 15, 11, 4 ];\n var dist_rb_idx = 0;\n /* The previous 2 bytes used for context. */\n var prev_byte1 = 0;\n var prev_byte2 = 0;\n var hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)];\n var block_type_trees;\n var block_len_trees;\n var br;\n\n /* We need the slack region for the following reasons:\n - always doing two 8-byte copies for fast backward copying\n - transforms\n - flushing the input ringbuffer when decoding uncompressed blocks */\n var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;\n\n br = new BrotliBitReader(input);\n\n /* Decode window size. */\n window_bits = DecodeWindowBits(br);\n max_backward_distance = (1 << window_bits) - 16;\n\n ringbuffer_size = 1 << window_bits;\n ringbuffer_mask = ringbuffer_size - 1;\n ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength);\n ringbuffer_end = ringbuffer_size;\n\n block_type_trees = [];\n block_len_trees = [];\n for (var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {\n block_type_trees[x] = new HuffmanCode(0, 0);\n block_len_trees[x] = new HuffmanCode(0, 0);\n }\n\n while (!input_end) {\n var meta_block_remaining_len = 0;\n var is_uncompressed;\n var block_length = [ 1 << 28, 1 << 28, 1 << 28 ];\n var block_type = [ 0 ];\n var num_block_types = [ 1, 1, 1 ];\n var block_type_rb = [ 0, 1, 0, 1, 0, 1 ];\n var block_type_rb_index = [ 0 ];\n var distance_postfix_bits;\n var num_direct_distance_codes;\n var distance_postfix_mask;\n var num_distance_codes;\n var context_map = null;\n var context_modes = null;\n var num_literal_htrees;\n var dist_context_map = null;\n var num_dist_htrees;\n var context_offset = 0;\n var context_map_slice = null;\n var literal_htree_index = 0;\n var dist_context_offset = 0;\n var dist_context_map_slice = null;\n var dist_htree_index = 0;\n var context_lookup_offset1 = 0;\n var context_lookup_offset2 = 0;\n var context_mode;\n var htree_command;\n\n for (i = 0; i < 3; ++i) {\n hgroup[i].codes = null;\n hgroup[i].htrees = null;\n }\n\n br.readMoreInput();\n \n var _out = DecodeMetaBlockLength(br);\n meta_block_remaining_len = _out.meta_block_length;\n if (pos + meta_block_remaining_len > output.buffer.length) {\n /* We need to grow the output buffer to fit the additional data. */\n var tmp = new Uint8Array( pos + meta_block_remaining_len );\n tmp.set( output.buffer );\n output.buffer = tmp;\n } \n input_end = _out.input_end;\n is_uncompressed = _out.is_uncompressed;\n \n if (_out.is_metadata) {\n JumpToByteBoundary(br);\n \n for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {\n br.readMoreInput();\n /* Read one byte and ignore it. */\n br.readBits(8);\n }\n \n continue;\n }\n \n if (meta_block_remaining_len === 0) {\n continue;\n }\n \n if (is_uncompressed) {\n br.bit_pos_ = (br.bit_pos_ + 7) & ~7;\n CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos,\n ringbuffer, ringbuffer_mask, br);\n pos += meta_block_remaining_len;\n continue;\n }\n \n for (i = 0; i < 3; ++i) {\n num_block_types[i] = DecodeVarLenUint8(br) + 1;\n if (num_block_types[i] >= 2) {\n ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n block_type_rb_index[i] = 1;\n }\n }\n \n br.readMoreInput();\n \n distance_postfix_bits = br.readBits(2);\n num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);\n distance_postfix_mask = (1 << distance_postfix_bits) - 1;\n num_distance_codes = (num_direct_distance_codes + (48 << distance_postfix_bits));\n context_modes = new Uint8Array(num_block_types[0]);\n\n for (i = 0; i < num_block_types[0]; ++i) {\n br.readMoreInput();\n context_modes[i] = (br.readBits(2) << 1);\n }\n \n var _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br);\n num_literal_htrees = _o1.num_htrees;\n context_map = _o1.context_map;\n \n var _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br);\n num_dist_htrees = _o2.num_htrees;\n dist_context_map = _o2.context_map;\n \n hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees);\n hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]);\n hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees);\n\n for (i = 0; i < 3; ++i) {\n hgroup[i].decode(br);\n }\n\n context_map_slice = 0;\n dist_context_map_slice = 0;\n context_mode = context_modes[block_type[0]];\n context_lookup_offset1 = Context.lookupOffsets[context_mode];\n context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];\n htree_command = hgroup[1].htrees[0];\n\n while (meta_block_remaining_len > 0) {\n var cmd_code;\n var range_idx;\n var insert_code;\n var copy_code;\n var insert_length;\n var copy_length;\n var distance_code;\n var distance;\n var context;\n var j;\n var copy_dst;\n\n br.readMoreInput();\n \n if (block_length[1] === 0) {\n DecodeBlockType(num_block_types[1],\n block_type_trees, 1, block_type, block_type_rb,\n block_type_rb_index, br);\n block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br);\n htree_command = hgroup[1].htrees[block_type[1]];\n }\n --block_length[1];\n cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br);\n range_idx = cmd_code >> 6;\n if (range_idx >= 2) {\n range_idx -= 2;\n distance_code = -1;\n } else {\n distance_code = 0;\n }\n insert_code = Prefix.kInsertRangeLut[range_idx] + ((cmd_code >> 3) & 7);\n copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);\n insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset +\n br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits);\n copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset +\n br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits);\n prev_byte1 = ringbuffer[pos-1 & ringbuffer_mask];\n prev_byte2 = ringbuffer[pos-2 & ringbuffer_mask];\n for (j = 0; j < insert_length; ++j) {\n br.readMoreInput();\n\n if (block_length[0] === 0) {\n DecodeBlockType(num_block_types[0],\n block_type_trees, 0, block_type, block_type_rb,\n block_type_rb_index, br);\n block_length[0] = ReadBlockLength(block_len_trees, 0, br);\n context_offset = block_type[0] << kLiteralContextBits;\n context_map_slice = context_offset;\n context_mode = context_modes[block_type[0]];\n context_lookup_offset1 = Context.lookupOffsets[context_mode];\n context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];\n }\n context = (Context.lookup[context_lookup_offset1 + prev_byte1] |\n Context.lookup[context_lookup_offset2 + prev_byte2]);\n literal_htree_index = context_map[context_map_slice + context];\n --block_length[0];\n prev_byte2 = prev_byte1;\n prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br);\n ringbuffer[pos & ringbuffer_mask] = prev_byte1;\n if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n output.write(ringbuffer, ringbuffer_size);\n }\n ++pos;\n }\n meta_block_remaining_len -= insert_length;\n if (meta_block_remaining_len <= 0) break;\n\n if (distance_code < 0) {\n var context;\n \n br.readMoreInput();\n if (block_length[2] === 0) {\n DecodeBlockType(num_block_types[2],\n block_type_trees, 2, block_type, block_type_rb,\n block_type_rb_index, br);\n block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br);\n dist_context_offset = block_type[2] << kDistanceContextBits;\n dist_context_map_slice = dist_context_offset;\n }\n --block_length[2];\n context = (copy_length > 4 ? 3 : copy_length - 2) & 0xff;\n dist_htree_index = dist_context_map[dist_context_map_slice + context];\n distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br);\n if (distance_code >= num_direct_distance_codes) {\n var nbits;\n var postfix;\n var offset;\n distance_code -= num_direct_distance_codes;\n postfix = distance_code & distance_postfix_mask;\n distance_code >>= distance_postfix_bits;\n nbits = (distance_code >> 1) + 1;\n offset = ((2 + (distance_code & 1)) << nbits) - 4;\n distance_code = num_direct_distance_codes +\n ((offset + br.readBits(nbits)) <<\n distance_postfix_bits) + postfix;\n }\n }\n\n /* Convert the distance code to the actual distance by possibly looking */\n /* up past distnaces from the ringbuffer. */\n distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx);\n if (distance < 0) {\n throw new Error('[BrotliDecompress] invalid distance');\n }\n\n if (pos < max_backward_distance &&\n max_distance !== max_backward_distance) {\n max_distance = pos;\n } else {\n max_distance = max_backward_distance;\n }\n\n copy_dst = pos & ringbuffer_mask;\n\n if (distance > max_distance) {\n if (copy_length >= BrotliDictionary.minDictionaryWordLength &&\n copy_length <= BrotliDictionary.maxDictionaryWordLength) {\n var offset = BrotliDictionary.offsetsByLength[copy_length];\n var word_id = distance - max_distance - 1;\n var shift = BrotliDictionary.sizeBitsByLength[copy_length];\n var mask = (1 << shift) - 1;\n var word_idx = word_id & mask;\n var transform_idx = word_id >> shift;\n offset += word_idx * copy_length;\n if (transform_idx < Transform.kNumTransforms) {\n var len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx);\n copy_dst += len;\n pos += len;\n meta_block_remaining_len -= len;\n if (copy_dst >= ringbuffer_end) {\n output.write(ringbuffer, ringbuffer_size);\n \n for (var _x = 0; _x < (copy_dst - ringbuffer_end); _x++)\n ringbuffer[_x] = ringbuffer[ringbuffer_end + _x];\n }\n } else {\n throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n }\n } else {\n throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n }\n } else {\n if (distance_code > 0) {\n dist_rb[dist_rb_idx & 3] = distance;\n ++dist_rb_idx;\n }\n\n if (copy_length > meta_block_remaining_len) {\n throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n }\n\n for (j = 0; j < copy_length; ++j) {\n ringbuffer[pos & ringbuffer_mask] = ringbuffer[(pos - distance) & ringbuffer_mask];\n if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n output.write(ringbuffer, ringbuffer_size);\n }\n ++pos;\n --meta_block_remaining_len;\n }\n }\n\n /* When we get here, we must have inserted at least one literal and */\n /* made a copy of at least length two, therefore accessing the last 2 */\n /* bytes is valid. */\n prev_byte1 = ringbuffer[(pos - 1) & ringbuffer_mask];\n prev_byte2 = ringbuffer[(pos - 2) & ringbuffer_mask];\n }\n\n /* Protect pos from overflow, wrap it around at every GB of input data */\n pos &= 0x3fffffff;\n }\n\n output.write(ringbuffer, pos & ringbuffer_mask);\n}\n\n__webpack_unused_export__ = BrotliDecompress;\n\nBrotliDictionary.init();\n\n\n/***/ }),\n\n/***/ 84543:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar base64 = __webpack_require__(32504);\n\n/**\n * The normal dictionary-data.js is quite large, which makes it \n * unsuitable for browser usage. In order to make it smaller, \n * we read dictionary.bin, which is a compressed version of\n * the dictionary, and on initial load, Brotli decompresses \n * it's own dictionary. 😜\n */\nexports.init = function() {\n var BrotliDecompressBuffer = (__webpack_require__(20980).BrotliDecompressBuffer);\n var compressed = base64.toByteArray(__webpack_require__(13501));\n return BrotliDecompressBuffer(compressed);\n};\n\n\n/***/ }),\n\n/***/ 13501:\n/***/ (function(module) {\n\nmodule.exports=\"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\";\n\n\n/***/ }),\n\n/***/ 80614:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n/* Copyright 2013 Google Inc. All Rights Reserved.\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 Collection of static dictionary words.\n*/\n\nvar data = __webpack_require__(84543);\nexports.init = function() {\n exports.dictionary = data.init();\n};\n\nexports.offsetsByLength = new Uint32Array([\n 0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032,\n 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,\n 115968, 118528, 119872, 121280, 122016,\n]);\n\nexports.sizeBitsByLength = new Uint8Array([\n 0, 0, 0, 0, 10, 10, 11, 11, 10, 10,\n 10, 10, 10, 9, 9, 8, 7, 7, 8, 7,\n 7, 6, 6, 5, 5,\n]);\n\nexports.minDictionaryWordLength = 4;\nexports.maxDictionaryWordLength = 24;\n\n\n/***/ }),\n\n/***/ 81561:\n/***/ (function(__unused_webpack_module, exports) {\n\nfunction HuffmanCode(bits, value) {\n this.bits = bits; /* number of bits used for this symbol */\n this.value = value; /* symbol value or table offset */\n}\n\nexports.z = HuffmanCode;\n\nvar MAX_LENGTH = 15;\n\n/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the\n bit-wise reversal of the len least significant bits of key. */\nfunction GetNextKey(key, len) {\n var step = 1 << (len - 1);\n while (key & step) {\n step >>= 1;\n }\n return (key & (step - 1)) + step;\n}\n\n/* Stores code in table[0], table[step], table[2*step], ..., table[end] */\n/* Assumes that end is an integer multiple of step */\nfunction ReplicateValue(table, i, step, end, code) {\n do {\n end -= step;\n table[i + end] = new HuffmanCode(code.bits, code.value);\n } while (end > 0);\n}\n\n/* Returns the table width of the next 2nd level table. count is the histogram\n of bit lengths for the remaining symbols, len is the code length of the next\n processed symbol */\nfunction NextTableBitSize(count, len, root_bits) {\n var left = 1 << (len - root_bits);\n while (len < MAX_LENGTH) {\n left -= count[len];\n if (left <= 0) break;\n ++len;\n left <<= 1;\n }\n return len - root_bits;\n}\n\nexports.u = function(root_table, table, root_bits, code_lengths, code_lengths_size) {\n var start_table = table;\n var code; /* current table entry */\n var len; /* current code length */\n var symbol; /* symbol index in original or sorted table */\n var key; /* reversed prefix code */\n var step; /* step size to replicate values in current table */\n var low; /* low bits for current root entry */\n var mask; /* mask for low bits */\n var table_bits; /* key length of current table */\n var table_size; /* size of current table */\n var total_size; /* sum of root table size and 2nd level table sizes */\n var sorted; /* symbols sorted by code length */\n var count = new Int32Array(MAX_LENGTH + 1); /* number of codes of each length */\n var offset = new Int32Array(MAX_LENGTH + 1); /* offsets in sorted table for each length */\n\n sorted = new Int32Array(code_lengths_size);\n\n /* build histogram of code lengths */\n for (symbol = 0; symbol < code_lengths_size; symbol++) {\n count[code_lengths[symbol]]++;\n }\n\n /* generate offsets into sorted symbol table by code length */\n offset[1] = 0;\n for (len = 1; len < MAX_LENGTH; len++) {\n offset[len + 1] = offset[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (symbol = 0; symbol < code_lengths_size; symbol++) {\n if (code_lengths[symbol] !== 0) {\n sorted[offset[code_lengths[symbol]]++] = symbol;\n }\n }\n \n table_bits = root_bits;\n table_size = 1 << table_bits;\n total_size = table_size;\n\n /* special case code with only one value */\n if (offset[MAX_LENGTH] === 1) {\n for (key = 0; key < total_size; ++key) {\n root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff);\n }\n \n return total_size;\n }\n\n /* fill in root table */\n key = 0;\n symbol = 0;\n for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {\n for (; count[len] > 0; --count[len]) {\n code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff);\n ReplicateValue(root_table, table + key, step, table_size, code);\n key = GetNextKey(key, len);\n }\n }\n\n /* fill in 2nd level tables and add pointers to root table */\n mask = total_size - 1;\n low = -1;\n for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {\n for (; count[len] > 0; --count[len]) {\n if ((key & mask) !== low) {\n table += table_size;\n table_bits = NextTableBitSize(count, len, root_bits);\n table_size = 1 << table_bits;\n total_size += table_size;\n low = key & mask;\n root_table[start_table + low] = new HuffmanCode((table_bits + root_bits) & 0xff, ((table - start_table) - low) & 0xffff);\n }\n code = new HuffmanCode((len - root_bits) & 0xff, sorted[symbol++] & 0xffff);\n ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code);\n key = GetNextKey(key, len);\n }\n }\n \n return total_size;\n}\n\n\n/***/ }),\n\n/***/ 42210:\n/***/ (function(__unused_webpack_module, exports) {\n\n/* Copyright 2013 Google Inc. All Rights Reserved.\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 Lookup tables to map prefix codes to value ranges. This is used during\n decoding of the block lengths, literal insertion lengths and copy lengths.\n*/\n\n/* Represents the range of values belonging to a prefix code: */\n/* [offset, offset + 2^nbits) */\nfunction PrefixCodeRange(offset, nbits) {\n this.offset = offset;\n this.nbits = nbits;\n}\n\nexports.kBlockLengthPrefixCode = [\n new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),\n new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),\n new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),\n new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),\n new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),\n new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),\n new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)\n];\n\nexports.kInsertLengthPrefixCode = [\n new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),\n new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),\n new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),\n new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),\n new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),\n new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),\n];\n\nexports.kCopyLengthPrefixCode = [\n new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),\n new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),\n new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),\n new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),\n new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),\n new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),\n];\n\nexports.kInsertRangeLut = [\n 0, 0, 8, 8, 0, 16, 8, 16, 16,\n];\n\nexports.kCopyRangeLut = [\n 0, 8, 0, 8, 16, 0, 16, 8, 16,\n];\n\n\n/***/ }),\n\n/***/ 98197:\n/***/ (function(__unused_webpack_module, exports) {\n\nfunction BrotliInput(buffer) {\n this.buffer = buffer;\n this.pos = 0;\n}\n\nBrotliInput.prototype.read = function(buf, i, count) {\n if (this.pos + count > this.buffer.length) {\n count = this.buffer.length - this.pos;\n }\n \n for (var p = 0; p < count; p++)\n buf[i + p] = this.buffer[this.pos + p];\n \n this.pos += count;\n return count;\n}\n\nexports.z = BrotliInput;\n\nfunction BrotliOutput(buf) {\n this.buffer = buf;\n this.pos = 0;\n}\n\nBrotliOutput.prototype.write = function(buf, count) {\n if (this.pos + count > this.buffer.length)\n throw new Error('Output buffer is not large enough');\n \n this.buffer.set(buf.subarray(0, count), this.pos);\n this.pos += count;\n return count;\n};\n\nexports.y = BrotliOutput;\n\n\n/***/ }),\n\n/***/ 87984:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n/* Copyright 2013 Google Inc. All Rights Reserved.\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 Transformations on dictionary words.\n*/\n\nvar BrotliDictionary = __webpack_require__(80614);\n\nvar kIdentity = 0;\nvar kOmitLast1 = 1;\nvar kOmitLast2 = 2;\nvar kOmitLast3 = 3;\nvar kOmitLast4 = 4;\nvar kOmitLast5 = 5;\nvar kOmitLast6 = 6;\nvar kOmitLast7 = 7;\nvar kOmitLast8 = 8;\nvar kOmitLast9 = 9;\nvar kUppercaseFirst = 10;\nvar kUppercaseAll = 11;\nvar kOmitFirst1 = 12;\nvar kOmitFirst2 = 13;\nvar kOmitFirst3 = 14;\nvar kOmitFirst4 = 15;\nvar kOmitFirst5 = 16;\nvar kOmitFirst6 = 17;\nvar kOmitFirst7 = 18;\nvar kOmitFirst8 = 19;\nvar kOmitFirst9 = 20;\n\nfunction Transform(prefix, transform, suffix) {\n this.prefix = new Uint8Array(prefix.length);\n this.transform = transform;\n this.suffix = new Uint8Array(suffix.length);\n \n for (var i = 0; i < prefix.length; i++)\n this.prefix[i] = prefix.charCodeAt(i);\n \n for (var i = 0; i < suffix.length; i++)\n this.suffix[i] = suffix.charCodeAt(i);\n}\n\nvar kTransforms = [\n new Transform( \"\", kIdentity, \"\" ),\n new Transform( \"\", kIdentity, \" \" ),\n new Transform( \" \", kIdentity, \" \" ),\n new Transform( \"\", kOmitFirst1, \"\" ),\n new Transform( \"\", kUppercaseFirst, \" \" ),\n new Transform( \"\", kIdentity, \" the \" ),\n new Transform( \" \", kIdentity, \"\" ),\n new Transform( \"s \", kIdentity, \" \" ),\n new Transform( \"\", kIdentity, \" of \" ),\n new Transform( \"\", kUppercaseFirst, \"\" ),\n new Transform( \"\", kIdentity, \" and \" ),\n new Transform( \"\", kOmitFirst2, \"\" ),\n new Transform( \"\", kOmitLast1, \"\" ),\n new Transform( \", \", kIdentity, \" \" ),\n new Transform( \"\", kIdentity, \", \" ),\n new Transform( \" \", kUppercaseFirst, \" \" ),\n new Transform( \"\", kIdentity, \" in \" ),\n new Transform( \"\", kIdentity, \" to \" ),\n new Transform( \"e \", kIdentity, \" \" ),\n new Transform( \"\", kIdentity, \"\\\"\" ),\n new Transform( \"\", kIdentity, \".\" ),\n new Transform( \"\", kIdentity, \"\\\">\" ),\n new Transform( \"\", kIdentity, \"\\n\" ),\n new Transform( \"\", kOmitLast3, \"\" ),\n new Transform( \"\", kIdentity, \"]\" ),\n new Transform( \"\", kIdentity, \" for \" ),\n new Transform( \"\", kOmitFirst3, \"\" ),\n new Transform( \"\", kOmitLast2, \"\" ),\n new Transform( \"\", kIdentity, \" a \" ),\n new Transform( \"\", kIdentity, \" that \" ),\n new Transform( \" \", kUppercaseFirst, \"\" ),\n new Transform( \"\", kIdentity, \". \" ),\n new Transform( \".\", kIdentity, \"\" ),\n new Transform( \" \", kIdentity, \", \" ),\n new Transform( \"\", kOmitFirst4, \"\" ),\n new Transform( \"\", kIdentity, \" with \" ),\n new Transform( \"\", kIdentity, \"'\" ),\n new Transform( \"\", kIdentity, \" from \" ),\n new Transform( \"\", kIdentity, \" by \" ),\n new Transform( \"\", kOmitFirst5, \"\" ),\n new Transform( \"\", kOmitFirst6, \"\" ),\n new Transform( \" the \", kIdentity, \"\" ),\n new Transform( \"\", kOmitLast4, \"\" ),\n new Transform( \"\", kIdentity, \". The \" ),\n new Transform( \"\", kUppercaseAll, \"\" ),\n new Transform( \"\", kIdentity, \" on \" ),\n new Transform( \"\", kIdentity, \" as \" ),\n new Transform( \"\", kIdentity, \" is \" ),\n new Transform( \"\", kOmitLast7, \"\" ),\n new Transform( \"\", kOmitLast1, \"ing \" ),\n new Transform( \"\", kIdentity, \"\\n\\t\" ),\n new Transform( \"\", kIdentity, \":\" ),\n new Transform( \" \", kIdentity, \". \" ),\n new Transform( \"\", kIdentity, \"ed \" ),\n new Transform( \"\", kOmitFirst9, \"\" ),\n new Transform( \"\", kOmitFirst7, \"\" ),\n new Transform( \"\", kOmitLast6, \"\" ),\n new Transform( \"\", kIdentity, \"(\" ),\n new Transform( \"\", kUppercaseFirst, \", \" ),\n new Transform( \"\", kOmitLast8, \"\" ),\n new Transform( \"\", kIdentity, \" at \" ),\n new Transform( \"\", kIdentity, \"ly \" ),\n new Transform( \" the \", kIdentity, \" of \" ),\n new Transform( \"\", kOmitLast5, \"\" ),\n new Transform( \"\", kOmitLast9, \"\" ),\n new Transform( \" \", kUppercaseFirst, \", \" ),\n new Transform( \"\", kUppercaseFirst, \"\\\"\" ),\n new Transform( \".\", kIdentity, \"(\" ),\n new Transform( \"\", kUppercaseAll, \" \" ),\n new Transform( \"\", kUppercaseFirst, \"\\\">\" ),\n new Transform( \"\", kIdentity, \"=\\\"\" ),\n new Transform( \" \", kIdentity, \".\" ),\n new Transform( \".com/\", kIdentity, \"\" ),\n new Transform( \" the \", kIdentity, \" of the \" ),\n new Transform( \"\", kUppercaseFirst, \"'\" ),\n new Transform( \"\", kIdentity, \". This \" ),\n new Transform( \"\", kIdentity, \",\" ),\n new Transform( \".\", kIdentity, \" \" ),\n new Transform( \"\", kUppercaseFirst, \"(\" ),\n new Transform( \"\", kUppercaseFirst, \".\" ),\n new Transform( \"\", kIdentity, \" not \" ),\n new Transform( \" \", kIdentity, \"=\\\"\" ),\n new Transform( \"\", kIdentity, \"er \" ),\n new Transform( \" \", kUppercaseAll, \" \" ),\n new Transform( \"\", kIdentity, \"al \" ),\n new Transform( \" \", kUppercaseAll, \"\" ),\n new Transform( \"\", kIdentity, \"='\" ),\n new Transform( \"\", kUppercaseAll, \"\\\"\" ),\n new Transform( \"\", kUppercaseFirst, \". \" ),\n new Transform( \" \", kIdentity, \"(\" ),\n new Transform( \"\", kIdentity, \"ful \" ),\n new Transform( \" \", kUppercaseFirst, \". \" ),\n new Transform( \"\", kIdentity, \"ive \" ),\n new Transform( \"\", kIdentity, \"less \" ),\n new Transform( \"\", kUppercaseAll, \"'\" ),\n new Transform( \"\", kIdentity, \"est \" ),\n new Transform( \" \", kUppercaseFirst, \".\" ),\n new Transform( \"\", kUppercaseAll, \"\\\">\" ),\n new Transform( \" \", kIdentity, \"='\" ),\n new Transform( \"\", kUppercaseFirst, \",\" ),\n new Transform( \"\", kIdentity, \"ize \" ),\n new Transform( \"\", kUppercaseAll, \".\" ),\n new Transform( \"\\xc2\\xa0\", kIdentity, \"\" ),\n new Transform( \" \", kIdentity, \",\" ),\n new Transform( \"\", kUppercaseFirst, \"=\\\"\" ),\n new Transform( \"\", kUppercaseAll, \"=\\\"\" ),\n new Transform( \"\", kIdentity, \"ous \" ),\n new Transform( \"\", kUppercaseAll, \", \" ),\n new Transform( \"\", kUppercaseFirst, \"='\" ),\n new Transform( \" \", kUppercaseFirst, \",\" ),\n new Transform( \" \", kUppercaseAll, \"=\\\"\" ),\n new Transform( \" \", kUppercaseAll, \", \" ),\n new Transform( \"\", kUppercaseAll, \",\" ),\n new Transform( \"\", kUppercaseAll, \"(\" ),\n new Transform( \"\", kUppercaseAll, \". \" ),\n new Transform( \" \", kUppercaseAll, \".\" ),\n new Transform( \"\", kUppercaseAll, \"='\" ),\n new Transform( \" \", kUppercaseAll, \". \" ),\n new Transform( \" \", kUppercaseFirst, \"=\\\"\" ),\n new Transform( \" \", kUppercaseAll, \"='\" ),\n new Transform( \" \", kUppercaseFirst, \"='\" )\n];\n\nexports.kTransforms = kTransforms;\nexports.kNumTransforms = kTransforms.length;\n\nfunction ToUpperCase(p, i) {\n if (p[i] < 0xc0) {\n if (p[i] >= 97 && p[i] <= 122) {\n p[i] ^= 32;\n }\n return 1;\n }\n \n /* An overly simplified uppercasing model for utf-8. */\n if (p[i] < 0xe0) {\n p[i + 1] ^= 32;\n return 2;\n }\n \n /* An arbitrary transform for three byte characters. */\n p[i + 2] ^= 5;\n return 3;\n}\n\nexports.transformDictionaryWord = function(dst, idx, word, len, transform) {\n var prefix = kTransforms[transform].prefix;\n var suffix = kTransforms[transform].suffix;\n var t = kTransforms[transform].transform;\n var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1);\n var i = 0;\n var start_idx = idx;\n var uppercase;\n \n if (skip > len) {\n skip = len;\n }\n \n var prefix_pos = 0;\n while (prefix_pos < prefix.length) {\n dst[idx++] = prefix[prefix_pos++];\n }\n \n word += skip;\n len -= skip;\n \n if (t <= kOmitLast9) {\n len -= t;\n }\n \n for (i = 0; i < len; i++) {\n dst[idx++] = BrotliDictionary.dictionary[word + i];\n }\n \n uppercase = idx - len;\n \n if (t === kUppercaseFirst) {\n ToUpperCase(dst, uppercase);\n } else if (t === kUppercaseAll) {\n while (len > 0) {\n var step = ToUpperCase(dst, uppercase);\n uppercase += step;\n len -= step;\n }\n }\n \n var suffix_pos = 0;\n while (suffix_pos < suffix.length) {\n dst[idx++] = suffix[suffix_pos++];\n }\n \n return idx - start_idx;\n}\n\n\n/***/ }),\n\n/***/ 34460:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(20980).BrotliDecompressBuffer;\n\n\n/***/ }),\n\n/***/ 72908:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n/* provided dependency */ var process = __webpack_require__(9964);\n\n/* eslint camelcase: \"off\" */\n\nvar assert = __webpack_require__(80182);\n\nvar Zstream = __webpack_require__(37468);\nvar zlib_deflate = __webpack_require__(22925);\nvar zlib_inflate = __webpack_require__(2269);\nvar constants = __webpack_require__(81607);\n\nfor (var key in constants) {\n exports[key] = constants[key];\n}\n\n// zlib modes\nexports.NONE = 0;\nexports.DEFLATE = 1;\nexports.INFLATE = 2;\nexports.GZIP = 3;\nexports.GUNZIP = 4;\nexports.DEFLATERAW = 5;\nexports.INFLATERAW = 6;\nexports.UNZIP = 7;\n\nvar GZIP_HEADER_ID1 = 0x1f;\nvar GZIP_HEADER_ID2 = 0x8b;\n\n/**\n * Emulate Node's zlib C++ layer for use by the JS layer in index.js\n */\nfunction Zlib(mode) {\n if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {\n throw new TypeError('Bad argument');\n }\n\n this.dictionary = null;\n this.err = 0;\n this.flush = 0;\n this.init_done = false;\n this.level = 0;\n this.memLevel = 0;\n this.mode = mode;\n this.strategy = 0;\n this.windowBits = 0;\n this.write_in_progress = false;\n this.pending_close = false;\n this.gzip_id_bytes_read = 0;\n}\n\nZlib.prototype.close = function () {\n if (this.write_in_progress) {\n this.pending_close = true;\n return;\n }\n\n this.pending_close = false;\n\n assert(this.init_done, 'close before init');\n assert(this.mode <= exports.UNZIP);\n\n if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {\n zlib_deflate.deflateEnd(this.strm);\n } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {\n zlib_inflate.inflateEnd(this.strm);\n }\n\n this.mode = exports.NONE;\n\n this.dictionary = null;\n};\n\nZlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {\n assert.equal(arguments.length, 8);\n\n assert(this.init_done, 'write before init');\n assert(this.mode !== exports.NONE, 'already finalized');\n assert.equal(false, this.write_in_progress, 'write already in progress');\n assert.equal(false, this.pending_close, 'close is pending');\n\n this.write_in_progress = true;\n\n assert.equal(false, flush === undefined, 'must provide flush value');\n\n this.write_in_progress = true;\n\n if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {\n throw new Error('Invalid flush value');\n }\n\n if (input == null) {\n input = Buffer.alloc(0);\n in_len = 0;\n in_off = 0;\n }\n\n this.strm.avail_in = in_len;\n this.strm.input = input;\n this.strm.next_in = in_off;\n this.strm.avail_out = out_len;\n this.strm.output = out;\n this.strm.next_out = out_off;\n this.flush = flush;\n\n if (!async) {\n // sync version\n this._process();\n\n if (this._checkError()) {\n return this._afterSync();\n }\n return;\n }\n\n // async version\n var self = this;\n process.nextTick(function () {\n self._process();\n self._after();\n });\n\n return this;\n};\n\nZlib.prototype._afterSync = function () {\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n return [avail_in, avail_out];\n};\n\nZlib.prototype._process = function () {\n var next_expected_header_byte = null;\n\n // If the avail_out is left at 0, then it means that it ran out\n // of room. If there was avail_out left over, then it means\n // that all of the input was consumed.\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflate(this.strm, this.flush);\n break;\n case exports.UNZIP:\n if (this.strm.avail_in > 0) {\n next_expected_header_byte = this.strm.next_in;\n }\n\n switch (this.gzip_id_bytes_read) {\n case 0:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {\n this.gzip_id_bytes_read = 1;\n next_expected_header_byte++;\n\n if (this.strm.avail_in === 1) {\n // The only available byte was already read.\n break;\n }\n } else {\n this.mode = exports.INFLATE;\n break;\n }\n\n // fallthrough\n case 1:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {\n this.gzip_id_bytes_read = 2;\n this.mode = exports.GUNZIP;\n } else {\n // There is no actual difference between INFLATE and INFLATERAW\n // (after initialization).\n this.mode = exports.INFLATE;\n }\n\n break;\n default:\n throw new Error('invalid number of gzip magic number bytes read');\n }\n\n // fallthrough\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n this.err = zlib_inflate.inflate(this.strm, this.flush\n\n // If data was encoded with dictionary\n );if (this.err === exports.Z_NEED_DICT && this.dictionary) {\n // Load it\n this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);\n if (this.err === exports.Z_OK) {\n // And try to decode again\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n } else if (this.err === exports.Z_DATA_ERROR) {\n // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.\n // Make it possible for After() to tell a bad dictionary from bad\n // input.\n this.err = exports.Z_NEED_DICT;\n }\n }\n while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {\n // Bytes remain in input buffer. Perhaps this is another compressed\n // member in the same archive, or just trailing garbage.\n // Trailing zero bytes are okay, though, since they are frequently\n // used for padding.\n\n this.reset();\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n }\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n};\n\nZlib.prototype._checkError = function () {\n // Acceptable error states depend on the type of zlib stream.\n switch (this.err) {\n case exports.Z_OK:\n case exports.Z_BUF_ERROR:\n if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {\n this._error('unexpected end of file');\n return false;\n }\n break;\n case exports.Z_STREAM_END:\n // normal statuses, not fatal\n break;\n case exports.Z_NEED_DICT:\n if (this.dictionary == null) {\n this._error('Missing dictionary');\n } else {\n this._error('Bad dictionary');\n }\n return false;\n default:\n // something else.\n this._error('Zlib error');\n return false;\n }\n\n return true;\n};\n\nZlib.prototype._after = function () {\n if (!this._checkError()) {\n return;\n }\n\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n // call the write() cb\n this.callback(avail_in, avail_out);\n\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype._error = function (message) {\n if (this.strm.msg) {\n message = this.strm.msg;\n }\n this.onerror(message, this.err\n\n // no hope of rescue.\n );this.write_in_progress = false;\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {\n assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');\n\n assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');\n assert(level >= -1 && level <= 9, 'invalid compression level');\n\n assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');\n\n assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');\n\n this._init(level, windowBits, memLevel, strategy, dictionary);\n this._setDictionary();\n};\n\nZlib.prototype.params = function () {\n throw new Error('deflateParams Not supported');\n};\n\nZlib.prototype.reset = function () {\n this._reset();\n this._setDictionary();\n};\n\nZlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {\n this.level = level;\n this.windowBits = windowBits;\n this.memLevel = memLevel;\n this.strategy = strategy;\n\n this.flush = exports.Z_NO_FLUSH;\n\n this.err = exports.Z_OK;\n\n if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {\n this.windowBits += 16;\n }\n\n if (this.mode === exports.UNZIP) {\n this.windowBits += 32;\n }\n\n if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {\n this.windowBits = -1 * this.windowBits;\n }\n\n this.strm = new Zstream();\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);\n break;\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n case exports.UNZIP:\n this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Init error');\n }\n\n this.dictionary = dictionary;\n\n this.write_in_progress = false;\n this.init_done = true;\n};\n\nZlib.prototype._setDictionary = function () {\n if (this.dictionary == null) {\n return;\n }\n\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to set dictionary');\n }\n};\n\nZlib.prototype._reset = function () {\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n case exports.GZIP:\n this.err = zlib_deflate.deflateReset(this.strm);\n break;\n case exports.INFLATE:\n case exports.INFLATERAW:\n case exports.GUNZIP:\n this.err = zlib_inflate.inflateReset(this.strm);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to reset stream');\n }\n};\n\nexports.Zlib = Zlib;\n\n/***/ }),\n\n/***/ 6729:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var process = __webpack_require__(9964);\n\n\nvar Buffer = (__webpack_require__(50621).Buffer);\nvar Transform = (__webpack_require__(9760).Transform);\nvar binding = __webpack_require__(72908);\nvar util = __webpack_require__(7187);\nvar assert = (__webpack_require__(80182).ok);\nvar kMaxLength = (__webpack_require__(50621).kMaxLength);\nvar kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';\n\n// zlib doesn't provide these, so kludge them in following the same\n// const naming scheme zlib uses.\nbinding.Z_MIN_WINDOWBITS = 8;\nbinding.Z_MAX_WINDOWBITS = 15;\nbinding.Z_DEFAULT_WINDOWBITS = 15;\n\n// fewer than 64 bytes per chunk is stupid.\n// technically it could work with as few as 8, but even 64 bytes\n// is absurdly low. Usually a MB or more is best.\nbinding.Z_MIN_CHUNK = 64;\nbinding.Z_MAX_CHUNK = Infinity;\nbinding.Z_DEFAULT_CHUNK = 16 * 1024;\n\nbinding.Z_MIN_MEMLEVEL = 1;\nbinding.Z_MAX_MEMLEVEL = 9;\nbinding.Z_DEFAULT_MEMLEVEL = 8;\n\nbinding.Z_MIN_LEVEL = -1;\nbinding.Z_MAX_LEVEL = 9;\nbinding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;\n\n// expose all the zlib constants\nvar bkeys = Object.keys(binding);\nfor (var bk = 0; bk < bkeys.length; bk++) {\n var bkey = bkeys[bk];\n if (bkey.match(/^Z/)) {\n Object.defineProperty(exports, bkey, {\n enumerable: true, value: binding[bkey], writable: false\n });\n }\n}\n\n// translation table for return codes.\nvar codes = {\n Z_OK: binding.Z_OK,\n Z_STREAM_END: binding.Z_STREAM_END,\n Z_NEED_DICT: binding.Z_NEED_DICT,\n Z_ERRNO: binding.Z_ERRNO,\n Z_STREAM_ERROR: binding.Z_STREAM_ERROR,\n Z_DATA_ERROR: binding.Z_DATA_ERROR,\n Z_MEM_ERROR: binding.Z_MEM_ERROR,\n Z_BUF_ERROR: binding.Z_BUF_ERROR,\n Z_VERSION_ERROR: binding.Z_VERSION_ERROR\n};\n\nvar ckeys = Object.keys(codes);\nfor (var ck = 0; ck < ckeys.length; ck++) {\n var ckey = ckeys[ck];\n codes[codes[ckey]] = ckey;\n}\n\nObject.defineProperty(exports, \"codes\", ({\n enumerable: true, value: Object.freeze(codes), writable: false\n}));\n\nexports.Deflate = Deflate;\nexports.Inflate = Inflate;\nexports.Gzip = Gzip;\nexports.Gunzip = Gunzip;\nexports.DeflateRaw = DeflateRaw;\nexports.InflateRaw = InflateRaw;\nexports.Unzip = Unzip;\n\nexports.createDeflate = function (o) {\n return new Deflate(o);\n};\n\nexports.createInflate = function (o) {\n return new Inflate(o);\n};\n\nexports.createDeflateRaw = function (o) {\n return new DeflateRaw(o);\n};\n\nexports.createInflateRaw = function (o) {\n return new InflateRaw(o);\n};\n\nexports.createGzip = function (o) {\n return new Gzip(o);\n};\n\nexports.createGunzip = function (o) {\n return new Gunzip(o);\n};\n\nexports.createUnzip = function (o) {\n return new Unzip(o);\n};\n\n// Convenience methods.\n// compress/decompress a string or buffer in one step.\nexports.deflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Deflate(opts), buffer, callback);\n};\n\nexports.deflateSync = function (buffer, opts) {\n return zlibBufferSync(new Deflate(opts), buffer);\n};\n\nexports.gzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gzip(opts), buffer, callback);\n};\n\nexports.gzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gzip(opts), buffer);\n};\n\nexports.deflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new DeflateRaw(opts), buffer, callback);\n};\n\nexports.deflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new DeflateRaw(opts), buffer);\n};\n\nexports.unzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Unzip(opts), buffer, callback);\n};\n\nexports.unzipSync = function (buffer, opts) {\n return zlibBufferSync(new Unzip(opts), buffer);\n};\n\nexports.inflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Inflate(opts), buffer, callback);\n};\n\nexports.inflateSync = function (buffer, opts) {\n return zlibBufferSync(new Inflate(opts), buffer);\n};\n\nexports.gunzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gunzip(opts), buffer, callback);\n};\n\nexports.gunzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gunzip(opts), buffer);\n};\n\nexports.inflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new InflateRaw(opts), buffer, callback);\n};\n\nexports.inflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new InflateRaw(opts), buffer);\n};\n\nfunction zlibBuffer(engine, buffer, callback) {\n var buffers = [];\n var nread = 0;\n\n engine.on('error', onError);\n engine.on('end', onEnd);\n\n engine.end(buffer);\n flow();\n\n function flow() {\n var chunk;\n while (null !== (chunk = engine.read())) {\n buffers.push(chunk);\n nread += chunk.length;\n }\n engine.once('readable', flow);\n }\n\n function onError(err) {\n engine.removeListener('end', onEnd);\n engine.removeListener('readable', flow);\n callback(err);\n }\n\n function onEnd() {\n var buf;\n var err = null;\n\n if (nread >= kMaxLength) {\n err = new RangeError(kRangeErrorMessage);\n } else {\n buf = Buffer.concat(buffers, nread);\n }\n\n buffers = [];\n engine.close();\n callback(err, buf);\n }\n}\n\nfunction zlibBufferSync(engine, buffer) {\n if (typeof buffer === 'string') buffer = Buffer.from(buffer);\n\n if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');\n\n var flushFlag = engine._finishFlushFlag;\n\n return engine._processChunk(buffer, flushFlag);\n}\n\n// generic zlib\n// minimal 2-byte header\nfunction Deflate(opts) {\n if (!(this instanceof Deflate)) return new Deflate(opts);\n Zlib.call(this, opts, binding.DEFLATE);\n}\n\nfunction Inflate(opts) {\n if (!(this instanceof Inflate)) return new Inflate(opts);\n Zlib.call(this, opts, binding.INFLATE);\n}\n\n// gzip - bigger header, same deflate compression\nfunction Gzip(opts) {\n if (!(this instanceof Gzip)) return new Gzip(opts);\n Zlib.call(this, opts, binding.GZIP);\n}\n\nfunction Gunzip(opts) {\n if (!(this instanceof Gunzip)) return new Gunzip(opts);\n Zlib.call(this, opts, binding.GUNZIP);\n}\n\n// raw - no header\nfunction DeflateRaw(opts) {\n if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);\n Zlib.call(this, opts, binding.DEFLATERAW);\n}\n\nfunction InflateRaw(opts) {\n if (!(this instanceof InflateRaw)) return new InflateRaw(opts);\n Zlib.call(this, opts, binding.INFLATERAW);\n}\n\n// auto-detect header.\nfunction Unzip(opts) {\n if (!(this instanceof Unzip)) return new Unzip(opts);\n Zlib.call(this, opts, binding.UNZIP);\n}\n\nfunction isValidFlushFlag(flag) {\n return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK;\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\n\nfunction Zlib(opts, mode) {\n var _this = this;\n\n this._opts = opts = opts || {};\n this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;\n\n Transform.call(this, opts);\n\n if (opts.flush && !isValidFlushFlag(opts.flush)) {\n throw new Error('Invalid flush flag: ' + opts.flush);\n }\n if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {\n throw new Error('Invalid flush flag: ' + opts.finishFlush);\n }\n\n this._flushFlag = opts.flush || binding.Z_NO_FLUSH;\n this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH;\n\n if (opts.chunkSize) {\n if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {\n throw new Error('Invalid chunk size: ' + opts.chunkSize);\n }\n }\n\n if (opts.windowBits) {\n if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {\n throw new Error('Invalid windowBits: ' + opts.windowBits);\n }\n }\n\n if (opts.level) {\n if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {\n throw new Error('Invalid compression level: ' + opts.level);\n }\n }\n\n if (opts.memLevel) {\n if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {\n throw new Error('Invalid memLevel: ' + opts.memLevel);\n }\n }\n\n if (opts.strategy) {\n if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new Error('Invalid strategy: ' + opts.strategy);\n }\n }\n\n if (opts.dictionary) {\n if (!Buffer.isBuffer(opts.dictionary)) {\n throw new Error('Invalid dictionary: it should be a Buffer instance');\n }\n }\n\n this._handle = new binding.Zlib(mode);\n\n var self = this;\n this._hadError = false;\n this._handle.onerror = function (message, errno) {\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n _close(self);\n self._hadError = true;\n\n var error = new Error(message);\n error.errno = errno;\n error.code = exports.codes[errno];\n self.emit('error', error);\n };\n\n var level = exports.Z_DEFAULT_COMPRESSION;\n if (typeof opts.level === 'number') level = opts.level;\n\n var strategy = exports.Z_DEFAULT_STRATEGY;\n if (typeof opts.strategy === 'number') strategy = opts.strategy;\n\n this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);\n\n this._buffer = Buffer.allocUnsafe(this._chunkSize);\n this._offset = 0;\n this._level = level;\n this._strategy = strategy;\n\n this.once('end', this.close);\n\n Object.defineProperty(this, '_closed', {\n get: function () {\n return !_this._handle;\n },\n configurable: true,\n enumerable: true\n });\n}\n\nutil.inherits(Zlib, Transform);\n\nZlib.prototype.params = function (level, strategy, callback) {\n if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {\n throw new RangeError('Invalid compression level: ' + level);\n }\n if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new TypeError('Invalid strategy: ' + strategy);\n }\n\n if (this._level !== level || this._strategy !== strategy) {\n var self = this;\n this.flush(binding.Z_SYNC_FLUSH, function () {\n assert(self._handle, 'zlib binding closed');\n self._handle.params(level, strategy);\n if (!self._hadError) {\n self._level = level;\n self._strategy = strategy;\n if (callback) callback();\n }\n });\n } else {\n process.nextTick(callback);\n }\n};\n\nZlib.prototype.reset = function () {\n assert(this._handle, 'zlib binding closed');\n return this._handle.reset();\n};\n\n// This is the _flush function called by the transform class,\n// internally, when the last chunk has been written.\nZlib.prototype._flush = function (callback) {\n this._transform(Buffer.alloc(0), '', callback);\n};\n\nZlib.prototype.flush = function (kind, callback) {\n var _this2 = this;\n\n var ws = this._writableState;\n\n if (typeof kind === 'function' || kind === undefined && !callback) {\n callback = kind;\n kind = binding.Z_FULL_FLUSH;\n }\n\n if (ws.ended) {\n if (callback) process.nextTick(callback);\n } else if (ws.ending) {\n if (callback) this.once('end', callback);\n } else if (ws.needDrain) {\n if (callback) {\n this.once('drain', function () {\n return _this2.flush(kind, callback);\n });\n }\n } else {\n this._flushFlag = kind;\n this.write(Buffer.alloc(0), '', callback);\n }\n};\n\nZlib.prototype.close = function (callback) {\n _close(this, callback);\n process.nextTick(emitCloseNT, this);\n};\n\nfunction _close(engine, callback) {\n if (callback) process.nextTick(callback);\n\n // Caller may invoke .close after a zlib error (which will null _handle).\n if (!engine._handle) return;\n\n engine._handle.close();\n engine._handle = null;\n}\n\nfunction emitCloseNT(self) {\n self.emit('close');\n}\n\nZlib.prototype._transform = function (chunk, encoding, cb) {\n var flushFlag;\n var ws = this._writableState;\n var ending = ws.ending || ws.ended;\n var last = ending && (!chunk || ws.length === chunk.length);\n\n if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));\n\n if (!this._handle) return cb(new Error('zlib binding closed'));\n\n // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag\n // (or whatever flag was provided using opts.finishFlush).\n // If it's explicitly flushing at some other time, then we use\n // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression\n // goodness.\n if (last) flushFlag = this._finishFlushFlag;else {\n flushFlag = this._flushFlag;\n // once we've flushed the last of the queue, stop flushing and\n // go back to the normal behavior.\n if (chunk.length >= ws.length) {\n this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;\n }\n }\n\n this._processChunk(chunk, flushFlag, cb);\n};\n\nZlib.prototype._processChunk = function (chunk, flushFlag, cb) {\n var availInBefore = chunk && chunk.length;\n var availOutBefore = this._chunkSize - this._offset;\n var inOff = 0;\n\n var self = this;\n\n var async = typeof cb === 'function';\n\n if (!async) {\n var buffers = [];\n var nread = 0;\n\n var error;\n this.on('error', function (er) {\n error = er;\n });\n\n assert(this._handle, 'zlib binding closed');\n do {\n var res = this._handle.writeSync(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n } while (!this._hadError && callback(res[0], res[1]));\n\n if (this._hadError) {\n throw error;\n }\n\n if (nread >= kMaxLength) {\n _close(this);\n throw new RangeError(kRangeErrorMessage);\n }\n\n var buf = Buffer.concat(buffers, nread);\n _close(this);\n\n return buf;\n }\n\n assert(this._handle, 'zlib binding closed');\n var req = this._handle.write(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n\n req.buffer = chunk;\n req.callback = callback;\n\n function callback(availInAfter, availOutAfter) {\n // When the callback is used in an async write, the callback's\n // context is the `req` object that was created. The req object\n // is === this._handle, and that's why it's important to null\n // out the values after they are done being used. `this._handle`\n // can stay in memory longer than the callback and buffer are needed.\n if (this) {\n this.buffer = null;\n this.callback = null;\n }\n\n if (self._hadError) return;\n\n var have = availOutBefore - availOutAfter;\n assert(have >= 0, 'have should not go down');\n\n if (have > 0) {\n var out = self._buffer.slice(self._offset, self._offset + have);\n self._offset += have;\n // serve some output to the consumer.\n if (async) {\n self.push(out);\n } else {\n buffers.push(out);\n nread += out.length;\n }\n }\n\n // exhausted the output buffer, or used all the input create a new one.\n if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n availOutBefore = self._chunkSize;\n self._offset = 0;\n self._buffer = Buffer.allocUnsafe(self._chunkSize);\n }\n\n if (availOutAfter === 0) {\n // Not actually done. Need to reprocess.\n // Also, update the availInBefore to the availInAfter value,\n // so that if we have to hit it a third (fourth, etc.) time,\n // it'll have the correct byte counts.\n inOff += availInBefore - availInAfter;\n availInBefore = availInAfter;\n\n if (!async) return true;\n\n var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);\n newReq.callback = callback; // this same function\n newReq.buffer = chunk;\n return;\n }\n\n if (!async) return false;\n\n // finished with the chunk.\n cb();\n }\n};\n\nutil.inherits(Deflate, Zlib);\nutil.inherits(Inflate, Zlib);\nutil.inherits(Gzip, Zlib);\nutil.inherits(Gunzip, Zlib);\nutil.inherits(DeflateRaw, Zlib);\nutil.inherits(InflateRaw, Zlib);\nutil.inherits(Unzip, Zlib);\n\n/***/ }),\n\n/***/ 67913:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar GetIntrinsic = __webpack_require__(28651);\n\nvar callBind = __webpack_require__(26601);\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n\n\n/***/ }),\n\n/***/ 26601:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar bind = __webpack_require__(5049);\nvar GetIntrinsic = __webpack_require__(28651);\nvar setFunctionLength = __webpack_require__(86255);\n\nvar $TypeError = __webpack_require__(96785);\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = __webpack_require__(56649);\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n\n\n/***/ }),\n\n/***/ 41613:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\nvar clone = (function() {\n'use strict';\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n*/\nfunction clone(parent, circular, depth, prototype) {\n var filter;\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n filter = circular.filter;\n circular = circular.circular\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth == 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n};\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n};\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n};\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n};\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n};\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif ( true && module.exports) {\n module.exports = clone;\n}\n\n\n/***/ }),\n\n/***/ 83043:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n__webpack_require__(59883);\nvar path = __webpack_require__(11206);\n\nmodule.exports = path.Object.values;\n\n\n/***/ }),\n\n/***/ 42075:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n__webpack_require__(94910);\n__webpack_require__(81755);\n__webpack_require__(14032);\n__webpack_require__(68067);\n__webpack_require__(77074);\n__webpack_require__(44455);\n__webpack_require__(58605);\n__webpack_require__(58281);\nvar path = __webpack_require__(11206);\n\nmodule.exports = path.Promise;\n\n\n/***/ }),\n\n/***/ 98168:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar parent = __webpack_require__(90780);\n__webpack_require__(84151);\n// TODO: Remove from `core-js@4`\n__webpack_require__(98443);\n__webpack_require__(49261);\n__webpack_require__(67858);\n\nmodule.exports = parent;\n\n\n/***/ }),\n\n/***/ 32631:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar isCallable = __webpack_require__(94578);\nvar tryToString = __webpack_require__(68664);\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n/***/ }),\n\n/***/ 69075:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar isConstructor = __webpack_require__(20884);\nvar tryToString = __webpack_require__(68664);\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n\n\n/***/ }),\n\n/***/ 58659:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar isCallable = __webpack_require__(94578);\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n\n\n/***/ }),\n\n/***/ 71156:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(38688);\nvar create = __webpack_require__(10819);\nvar definePropertyModule = __webpack_require__(95892);\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ 36352:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = (__webpack_require__(69510).charAt);\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ 2868:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar isPrototypeOf = __webpack_require__(70176);\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw TypeError('Incorrect invocation');\n};\n\n\n/***/ }),\n\n/***/ 34984:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar isObject = __webpack_require__(24517);\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n\n\n/***/ }),\n\n/***/ 92642:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toObject = __webpack_require__(43162);\nvar toAbsoluteIndex = __webpack_require__(74841);\nvar lengthOfArrayLike = __webpack_require__(45495);\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n\n\n/***/ }),\n\n/***/ 72864:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toObject = __webpack_require__(43162);\nvar toAbsoluteIndex = __webpack_require__(74841);\nvar lengthOfArrayLike = __webpack_require__(45495);\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 82938:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $forEach = (__webpack_require__(91102).forEach);\nvar arrayMethodIsStrict = __webpack_require__(81007);\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n\n\n/***/ }),\n\n/***/ 34269:\n/***/ (function(module) {\n\nmodule.exports = function (Constructor, list) {\n var index = 0;\n var length = list.length;\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\n\n/***/ }),\n\n/***/ 95717:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(32010);\nvar bind = __webpack_require__(25567);\nvar call = __webpack_require__(2834);\nvar toObject = __webpack_require__(43162);\nvar callWithSafeIterationClosing = __webpack_require__(97738);\nvar isArrayIteratorMethod = __webpack_require__(89564);\nvar isConstructor = __webpack_require__(20884);\nvar lengthOfArrayLike = __webpack_require__(45495);\nvar createProperty = __webpack_require__(38639);\nvar getIterator = __webpack_require__(15892);\nvar getIteratorMethod = __webpack_require__(13872);\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n\n/***/ 12636:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(98086);\nvar toAbsoluteIndex = __webpack_require__(74841);\nvar lengthOfArrayLike = __webpack_require__(45495);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ 91102:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar bind = __webpack_require__(25567);\nvar uncurryThis = __webpack_require__(38347);\nvar IndexedObject = __webpack_require__(7514);\nvar toObject = __webpack_require__(43162);\nvar lengthOfArrayLike = __webpack_require__(45495);\nvar arraySpeciesCreate = __webpack_require__(45744);\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n\n\n/***/ }),\n\n/***/ 84320:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = __webpack_require__(58448);\nvar toIndexedObject = __webpack_require__(98086);\nvar toIntegerOrInfinity = __webpack_require__(26882);\nvar lengthOfArrayLike = __webpack_require__(45495);\nvar arrayMethodIsStrict = __webpack_require__(81007);\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : $lastIndexOf;\n\n\n/***/ }),\n\n/***/ 56280:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(47044);\nvar wellKnownSymbol = __webpack_require__(38688);\nvar V8_VERSION = __webpack_require__(70091);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n\n/***/ }),\n\n/***/ 81007:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(47044);\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n\n\n/***/ }),\n\n/***/ 32843:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar aCallable = __webpack_require__(32631);\nvar toObject = __webpack_require__(43162);\nvar IndexedObject = __webpack_require__(7514);\nvar lengthOfArrayLike = __webpack_require__(45495);\n\nvar TypeError = global.TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ 73163:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\n\nmodule.exports = uncurryThis([].slice);\n\n\n/***/ }),\n\n/***/ 43977:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar arraySlice = __webpack_require__(73163);\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n\n\n/***/ }),\n\n/***/ 98578:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar isArray = __webpack_require__(59113);\nvar isConstructor = __webpack_require__(20884);\nvar isObject = __webpack_require__(24517);\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n\n\n/***/ }),\n\n/***/ 45744:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar arraySpeciesConstructor = __webpack_require__(98578);\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\n\n/***/ }),\n\n/***/ 97738:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(34984);\nvar iteratorClose = __webpack_require__(50194);\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n/***/ }),\n\n/***/ 46769:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ 93975:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n/***/ }),\n\n/***/ 52564:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(24663);\nvar isCallable = __webpack_require__(94578);\nvar classofRaw = __webpack_require__(93975);\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ 34074:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\nvar arraySlice = __webpack_require__(73163);\n\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar join = uncurryThis([].join);\n\nvar TEST = (function (arg) { return String(Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\nvar IS_FIREFOX_OR_SAFARI_STACK = /@[^\\n]*\\n/.test(TEST) && !/zxcasd/.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (typeof stack != 'string') return stack;\n if (IS_V8_OR_CHAKRA_STACK) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } else if (IS_FIREFOX_OR_SAFARI_STACK) {\n return join(arraySlice(split(stack, '\\n'), dropEntries), '\\n');\n } return stack;\n};\n\n\n/***/ }),\n\n/***/ 9649:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar defineProperty = (__webpack_require__(95892).f);\nvar create = __webpack_require__(10819);\nvar redefineAll = __webpack_require__(15341);\nvar bind = __webpack_require__(25567);\nvar anInstance = __webpack_require__(2868);\nvar iterate = __webpack_require__(80383);\nvar defineIterator = __webpack_require__(97001);\nvar setSpecies = __webpack_require__(51334);\nvar DESCRIPTORS = __webpack_require__(15567);\nvar fastKey = (__webpack_require__(62148).fastKey);\nvar InternalStateModule = __webpack_require__(70172);\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n\n\n/***/ }),\n\n/***/ 36673:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\nvar isForced = __webpack_require__(39599);\nvar redefine = __webpack_require__(13711);\nvar InternalMetadataModule = __webpack_require__(62148);\nvar iterate = __webpack_require__(80383);\nvar anInstance = __webpack_require__(2868);\nvar isCallable = __webpack_require__(94578);\nvar isObject = __webpack_require__(24517);\nvar fails = __webpack_require__(47044);\nvar checkCorrectnessOfIteration = __webpack_require__(46769);\nvar setToStringTag = __webpack_require__(15216);\nvar inheritIfRequired = __webpack_require__(51868);\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n\n\n/***/ }),\n\n/***/ 2675:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar hasOwn = __webpack_require__(20340);\nvar ownKeys = __webpack_require__(21594);\nvar getOwnPropertyDescriptorModule = __webpack_require__(72062);\nvar definePropertyModule = __webpack_require__(95892);\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n\n/***/ }),\n\n/***/ 91151:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n\n\n/***/ }),\n\n/***/ 68494:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(47044);\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ 91159:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\nvar requireObjectCoercible = __webpack_require__(83943);\nvar toString = __webpack_require__(25096);\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = toString(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '"') + '\"';\n return p1 + '>' + S + '</' + tag + '>';\n};\n\n\n/***/ }),\n\n/***/ 13945:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = (__webpack_require__(5844).IteratorPrototype);\nvar create = __webpack_require__(10819);\nvar createPropertyDescriptor = __webpack_require__(97841);\nvar setToStringTag = __webpack_require__(15216);\nvar Iterators = __webpack_require__(15366);\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ 48914:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(15567);\nvar definePropertyModule = __webpack_require__(95892);\nvar createPropertyDescriptor = __webpack_require__(97841);\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ 97841:\n/***/ (function(module) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ 38639:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPropertyKey = __webpack_require__(63918);\nvar definePropertyModule = __webpack_require__(95892);\nvar createPropertyDescriptor = __webpack_require__(97841);\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ 53087:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(32010);\nvar anObject = __webpack_require__(34984);\nvar ordinaryToPrimitive = __webpack_require__(39629);\n\nvar TypeError = global.TypeError;\n\n// `Date.prototype[@@toPrimitive](hint)` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nmodule.exports = function (hint) {\n anObject(this);\n if (hint === 'string' || hint === 'default') hint = 'string';\n else if (hint !== 'number') throw TypeError('Incorrect hint');\n return ordinaryToPrimitive(this, hint);\n};\n\n\n/***/ }),\n\n/***/ 97001:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar call = __webpack_require__(2834);\nvar IS_PURE = __webpack_require__(63432);\nvar FunctionName = __webpack_require__(7081);\nvar isCallable = __webpack_require__(94578);\nvar createIteratorConstructor = __webpack_require__(13945);\nvar getPrototypeOf = __webpack_require__(69548);\nvar setPrototypeOf = __webpack_require__(3840);\nvar setToStringTag = __webpack_require__(15216);\nvar createNonEnumerableProperty = __webpack_require__(48914);\nvar redefine = __webpack_require__(13711);\nvar wellKnownSymbol = __webpack_require__(38688);\nvar Iterators = __webpack_require__(15366);\nvar IteratorsCore = __webpack_require__(5844);\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n\n\n/***/ }),\n\n/***/ 46042:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar path = __webpack_require__(11206);\nvar hasOwn = __webpack_require__(20340);\nvar wrappedWellKnownSymbolModule = __webpack_require__(75960);\nvar defineProperty = (__webpack_require__(95892).f);\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n\n\n/***/ }),\n\n/***/ 15567:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(47044);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n\n/***/ 12072:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar isObject = __webpack_require__(24517);\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ 23327:\n/***/ (function(module) {\n\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n\n/***/ }),\n\n/***/ 67797:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = __webpack_require__(12072);\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n\n\n/***/ }),\n\n/***/ 3809:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(40715);\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n\n\n/***/ }),\n\n/***/ 3157:\n/***/ (function(module) {\n\nmodule.exports = typeof window == 'object';\n\n\n/***/ }),\n\n/***/ 21983:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar UA = __webpack_require__(40715);\n\nmodule.exports = /MSIE|Trident/.test(UA);\n\n\n/***/ }),\n\n/***/ 70573:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(40715);\nvar global = __webpack_require__(32010);\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n\n\n/***/ }),\n\n/***/ 17716:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(40715);\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n\n\n/***/ }),\n\n/***/ 95053:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(93975);\nvar global = __webpack_require__(32010);\n\nmodule.exports = classof(global.process) == 'process';\n\n\n/***/ }),\n\n/***/ 664:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(40715);\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n\n\n/***/ }),\n\n/***/ 40715:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(38486);\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n\n/***/ 70091:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar userAgent = __webpack_require__(40715);\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n/***/ }),\n\n/***/ 41731:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(40715);\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n\n\n/***/ }),\n\n/***/ 2416:\n/***/ (function(module) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ 45144:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(47044);\nvar createPropertyDescriptor = __webpack_require__(97841);\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n\n\n/***/ }),\n\n/***/ 56475:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar getOwnPropertyDescriptor = (__webpack_require__(72062).f);\nvar createNonEnumerableProperty = __webpack_require__(48914);\nvar redefine = __webpack_require__(13711);\nvar setGlobal = __webpack_require__(7421);\nvar copyConstructorProperties = __webpack_require__(2675);\nvar isForced = __webpack_require__(39599);\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ 47044:\n/***/ (function(module) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 11813:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(61726);\nvar uncurryThis = __webpack_require__(38347);\nvar redefine = __webpack_require__(13711);\nvar regexpExec = __webpack_require__(49820);\nvar fails = __webpack_require__(47044);\nvar wellKnownSymbol = __webpack_require__(38688);\nvar createNonEnumerableProperty = __webpack_require__(48914);\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n\n\n/***/ }),\n\n/***/ 55481:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(47044);\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n\n\n/***/ }),\n\n/***/ 58448:\n/***/ (function(module) {\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n/***/ }),\n\n/***/ 25567:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\nvar aCallable = __webpack_require__(32631);\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 5481:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\nvar aCallable = __webpack_require__(32631);\nvar isObject = __webpack_require__(24517);\nvar hasOwn = __webpack_require__(20340);\nvar arraySlice = __webpack_require__(73163);\n\nvar Function = global.Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n\n\n/***/ }),\n\n/***/ 2834:\n/***/ (function(module) {\n\nvar call = Function.prototype.call;\n\nmodule.exports = call.bind ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n/***/ }),\n\n/***/ 7081:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(15567);\nvar hasOwn = __webpack_require__(20340);\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n/***/ }),\n\n/***/ 38347:\n/***/ (function(module) {\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call);\n\nmodule.exports = bind ? function (fn) {\n return fn && callBind(call, fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 38486:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar isCallable = __webpack_require__(94578);\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ 13872:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(52564);\nvar getMethod = __webpack_require__(51839);\nvar Iterators = __webpack_require__(15366);\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ 15892:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar call = __webpack_require__(2834);\nvar aCallable = __webpack_require__(32631);\nvar anObject = __webpack_require__(34984);\nvar tryToString = __webpack_require__(68664);\nvar getIteratorMethod = __webpack_require__(13872);\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n/***/ }),\n\n/***/ 51839:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar aCallable = __webpack_require__(32631);\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n\n\n/***/ }),\n\n/***/ 29519:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\nvar toObject = __webpack_require__(43162);\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n\n\n/***/ }),\n\n/***/ 32010:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n\n/***/ }),\n\n/***/ 20340:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\nvar toObject = __webpack_require__(43162);\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n/***/ }),\n\n/***/ 90682:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 61144:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n\n\n/***/ }),\n\n/***/ 520:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(38486);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ 18904:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(15567);\nvar fails = __webpack_require__(47044);\nvar createElement = __webpack_require__(12072);\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ 64397:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar global = __webpack_require__(32010);\n\nvar Array = global.Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n\n\n/***/ }),\n\n/***/ 7514:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\nvar fails = __webpack_require__(47044);\nvar classof = __webpack_require__(93975);\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ 51868:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(94578);\nvar isObject = __webpack_require__(24517);\nvar setPrototypeOf = __webpack_require__(3840);\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n\n/***/ }),\n\n/***/ 10447:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\nvar isCallable = __webpack_require__(94578);\nvar store = __webpack_require__(55480);\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ 87811:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(24517);\nvar createNonEnumerableProperty = __webpack_require__(48914);\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n\n\n/***/ }),\n\n/***/ 62148:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar uncurryThis = __webpack_require__(38347);\nvar hiddenKeys = __webpack_require__(90682);\nvar isObject = __webpack_require__(24517);\nvar hasOwn = __webpack_require__(20340);\nvar defineProperty = (__webpack_require__(95892).f);\nvar getOwnPropertyNamesModule = __webpack_require__(6611);\nvar getOwnPropertyNamesExternalModule = __webpack_require__(8807);\nvar uid = __webpack_require__(46859);\nvar FREEZING = __webpack_require__(55481);\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n\n\n/***/ }),\n\n/***/ 70172:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(26168);\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\nvar isObject = __webpack_require__(24517);\nvar createNonEnumerableProperty = __webpack_require__(48914);\nvar hasOwn = __webpack_require__(20340);\nvar shared = __webpack_require__(55480);\nvar sharedKey = __webpack_require__(82194);\nvar hiddenKeys = __webpack_require__(90682);\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ 89564:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(38688);\nvar Iterators = __webpack_require__(15366);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ 59113:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(93975);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ 94578:\n/***/ (function(module) {\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n\n\n/***/ }),\n\n/***/ 20884:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\nvar fails = __webpack_require__(47044);\nvar isCallable = __webpack_require__(94578);\nvar classof = __webpack_require__(52564);\nvar getBuiltIn = __webpack_require__(38486);\nvar inspectSource = __webpack_require__(10447);\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function (argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function (argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n // we can't check .prototype since constructors produced by .bind haven't it\n } return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n};\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n\n/***/ }),\n\n/***/ 39599:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(47044);\nvar isCallable = __webpack_require__(94578);\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ 17506:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(24517);\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n\n/***/ }),\n\n/***/ 24517:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(94578);\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n/***/ }),\n\n/***/ 63432:\n/***/ (function(module) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ 28831:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(24517);\nvar classof = __webpack_require__(93975);\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ 46290:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar getBuiltIn = __webpack_require__(38486);\nvar isCallable = __webpack_require__(94578);\nvar isPrototypeOf = __webpack_require__(70176);\nvar USE_SYMBOL_AS_UID = __webpack_require__(9567);\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n\n\n/***/ }),\n\n/***/ 80383:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar bind = __webpack_require__(25567);\nvar call = __webpack_require__(2834);\nvar anObject = __webpack_require__(34984);\nvar tryToString = __webpack_require__(68664);\nvar isArrayIteratorMethod = __webpack_require__(89564);\nvar lengthOfArrayLike = __webpack_require__(45495);\nvar isPrototypeOf = __webpack_require__(70176);\nvar getIterator = __webpack_require__(15892);\nvar getIteratorMethod = __webpack_require__(13872);\nvar iteratorClose = __webpack_require__(50194);\n\nvar TypeError = global.TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n/***/ }),\n\n/***/ 50194:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar call = __webpack_require__(2834);\nvar anObject = __webpack_require__(34984);\nvar getMethod = __webpack_require__(51839);\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n/***/ }),\n\n/***/ 5844:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(47044);\nvar isCallable = __webpack_require__(94578);\nvar create = __webpack_require__(10819);\nvar getPrototypeOf = __webpack_require__(69548);\nvar redefine = __webpack_require__(13711);\nvar wellKnownSymbol = __webpack_require__(38688);\nvar IS_PURE = __webpack_require__(63432);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ 15366:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 45495:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toLength = __webpack_require__(23417);\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n/***/ }),\n\n/***/ 59804:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar bind = __webpack_require__(25567);\nvar getOwnPropertyDescriptor = (__webpack_require__(72062).f);\nvar macrotask = (__webpack_require__(6616).set);\nvar IS_IOS = __webpack_require__(17716);\nvar IS_IOS_PEBBLE = __webpack_require__(70573);\nvar IS_WEBOS_WEBKIT = __webpack_require__(664);\nvar IS_NODE = __webpack_require__(95053);\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n\n\n/***/ }),\n\n/***/ 5155:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\n\nmodule.exports = global.Promise;\n\n\n/***/ }),\n\n/***/ 46887:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = __webpack_require__(70091);\nvar fails = __webpack_require__(47044);\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n/***/ }),\n\n/***/ 26168:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar isCallable = __webpack_require__(94578);\nvar inspectSource = __webpack_require__(10447);\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n\n/***/ 56614:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar aCallable = __webpack_require__(32631);\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n/***/ }),\n\n/***/ 86392:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toString = __webpack_require__(25096);\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n/***/ }),\n\n/***/ 93666:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar isRegExp = __webpack_require__(28831);\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 59805:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\n\nvar globalIsFinite = global.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n// eslint-disable-next-line es/no-number-isfinite -- safe\nmodule.exports = Number.isFinite || function isFinite(it) {\n return typeof it == 'number' && globalIsFinite(it);\n};\n\n\n/***/ }),\n\n/***/ 87146:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(15567);\nvar uncurryThis = __webpack_require__(38347);\nvar call = __webpack_require__(2834);\nvar fails = __webpack_require__(47044);\nvar objectKeys = __webpack_require__(84675);\nvar getOwnPropertySymbolsModule = __webpack_require__(61146);\nvar propertyIsEnumerableModule = __webpack_require__(55574);\nvar toObject = __webpack_require__(43162);\nvar IndexedObject = __webpack_require__(7514);\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ 10819:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = __webpack_require__(34984);\nvar defineProperties = __webpack_require__(10196);\nvar enumBugKeys = __webpack_require__(2416);\nvar hiddenKeys = __webpack_require__(90682);\nvar html = __webpack_require__(520);\nvar documentCreateElement = __webpack_require__(12072);\nvar sharedKey = __webpack_require__(82194);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ 10196:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(15567);\nvar definePropertyModule = __webpack_require__(95892);\nvar anObject = __webpack_require__(34984);\nvar toIndexedObject = __webpack_require__(98086);\nvar objectKeys = __webpack_require__(84675);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ 95892:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar DESCRIPTORS = __webpack_require__(15567);\nvar IE8_DOM_DEFINE = __webpack_require__(18904);\nvar anObject = __webpack_require__(34984);\nvar toPropertyKey = __webpack_require__(63918);\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 72062:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(15567);\nvar call = __webpack_require__(2834);\nvar propertyIsEnumerableModule = __webpack_require__(55574);\nvar createPropertyDescriptor = __webpack_require__(97841);\nvar toIndexedObject = __webpack_require__(98086);\nvar toPropertyKey = __webpack_require__(63918);\nvar hasOwn = __webpack_require__(20340);\nvar IE8_DOM_DEFINE = __webpack_require__(18904);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ 8807:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = __webpack_require__(93975);\nvar toIndexedObject = __webpack_require__(98086);\nvar $getOwnPropertyNames = (__webpack_require__(6611).f);\nvar arraySlice = __webpack_require__(73163);\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n\n/***/ }),\n\n/***/ 6611:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(64429);\nvar enumBugKeys = __webpack_require__(2416);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ 61146:\n/***/ (function(__unused_webpack_module, exports) {\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ 69548:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar hasOwn = __webpack_require__(20340);\nvar isCallable = __webpack_require__(94578);\nvar toObject = __webpack_require__(43162);\nvar sharedKey = __webpack_require__(82194);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(68494);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ 70176:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n/***/ }),\n\n/***/ 64429:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\nvar hasOwn = __webpack_require__(20340);\nvar toIndexedObject = __webpack_require__(98086);\nvar indexOf = (__webpack_require__(12636).indexOf);\nvar hiddenKeys = __webpack_require__(90682);\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 84675:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(64429);\nvar enumBugKeys = __webpack_require__(2416);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ 55574:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ 3840:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* eslint-disable no-proto -- safe */\nvar uncurryThis = __webpack_require__(38347);\nvar anObject = __webpack_require__(34984);\nvar aPossiblePrototype = __webpack_require__(58659);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ 80754:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(15567);\nvar uncurryThis = __webpack_require__(38347);\nvar objectKeys = __webpack_require__(84675);\nvar toIndexedObject = __webpack_require__(98086);\nvar $propertyIsEnumerable = (__webpack_require__(55574).f);\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ 52598:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(24663);\nvar classof = __webpack_require__(52564);\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n\n/***/ }),\n\n/***/ 39629:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar call = __webpack_require__(2834);\nvar isCallable = __webpack_require__(94578);\nvar isObject = __webpack_require__(24517);\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ 21594:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(38486);\nvar uncurryThis = __webpack_require__(38347);\nvar getOwnPropertyNamesModule = __webpack_require__(6611);\nvar getOwnPropertySymbolsModule = __webpack_require__(61146);\nvar anObject = __webpack_require__(34984);\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ 11206:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\n\nmodule.exports = global;\n\n\n/***/ }),\n\n/***/ 61900:\n/***/ (function(module) {\n\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n/***/ }),\n\n/***/ 28617:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(34984);\nvar isObject = __webpack_require__(24517);\nvar newPromiseCapability = __webpack_require__(56614);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n/***/ }),\n\n/***/ 15341:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar redefine = __webpack_require__(13711);\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n\n\n/***/ }),\n\n/***/ 13711:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar isCallable = __webpack_require__(94578);\nvar hasOwn = __webpack_require__(20340);\nvar createNonEnumerableProperty = __webpack_require__(48914);\nvar setGlobal = __webpack_require__(7421);\nvar inspectSource = __webpack_require__(10447);\nvar InternalStateModule = __webpack_require__(70172);\nvar CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(7081).CONFIGURABLE);\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n\n\n/***/ }),\n\n/***/ 66723:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar call = __webpack_require__(2834);\nvar anObject = __webpack_require__(34984);\nvar isCallable = __webpack_require__(94578);\nvar classof = __webpack_require__(93975);\nvar regexpExec = __webpack_require__(49820);\n\nvar TypeError = global.TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw TypeError('RegExp#exec called on incompatible receiver');\n};\n\n\n/***/ }),\n\n/***/ 49820:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = __webpack_require__(2834);\nvar uncurryThis = __webpack_require__(38347);\nvar toString = __webpack_require__(25096);\nvar regexpFlags = __webpack_require__(21182);\nvar stickyHelpers = __webpack_require__(74846);\nvar shared = __webpack_require__(464);\nvar create = __webpack_require__(10819);\nvar getInternalState = (__webpack_require__(70172).get);\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(84030);\nvar UNSUPPORTED_NCG = __webpack_require__(97739);\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ 21182:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar anObject = __webpack_require__(34984);\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ 74846:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(47044);\nvar global = __webpack_require__(32010);\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\n\n/***/ }),\n\n/***/ 84030:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(47044);\nvar global = __webpack_require__(32010);\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n\n\n/***/ }),\n\n/***/ 97739:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(47044);\nvar global = __webpack_require__(32010);\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?<a>b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$<a>c') !== 'bc';\n});\n\n\n/***/ }),\n\n/***/ 83943:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 7421:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ 51334:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __webpack_require__(38486);\nvar definePropertyModule = __webpack_require__(95892);\nvar wellKnownSymbol = __webpack_require__(38688);\nvar DESCRIPTORS = __webpack_require__(15567);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n\n\n/***/ }),\n\n/***/ 15216:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar defineProperty = (__webpack_require__(95892).f);\nvar hasOwn = __webpack_require__(20340);\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !hasOwn(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n\n\n/***/ }),\n\n/***/ 82194:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar shared = __webpack_require__(464);\nvar uid = __webpack_require__(46859);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ 55480:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar setGlobal = __webpack_require__(7421);\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n\n/***/ 464:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(63432);\nvar store = __webpack_require__(55480);\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.19.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ 27754:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(34984);\nvar aConstructor = __webpack_require__(69075);\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n\n\n/***/ }),\n\n/***/ 7452:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(47044);\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n\n\n/***/ }),\n\n/***/ 69510:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\nvar toIntegerOrInfinity = __webpack_require__(26882);\nvar toString = __webpack_require__(25096);\nvar requireObjectCoercible = __webpack_require__(83943);\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ 34858:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(32010);\nvar toIntegerOrInfinity = __webpack_require__(26882);\nvar toString = __webpack_require__(25096);\nvar requireObjectCoercible = __webpack_require__(83943);\n\nvar RangeError = global.RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toIntegerOrInfinity(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n\n\n/***/ }),\n\n/***/ 68899:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar PROPER_FUNCTION_NAME = (__webpack_require__(7081).PROPER);\nvar fails = __webpack_require__(47044);\nvar whitespaces = __webpack_require__(43187);\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n\n\n/***/ }),\n\n/***/ 29841:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\nvar requireObjectCoercible = __webpack_require__(83943);\nvar toString = __webpack_require__(25096);\nvar whitespaces = __webpack_require__(43187);\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n\n\n/***/ }),\n\n/***/ 6616:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar apply = __webpack_require__(58448);\nvar bind = __webpack_require__(25567);\nvar isCallable = __webpack_require__(94578);\nvar hasOwn = __webpack_require__(20340);\nvar fails = __webpack_require__(47044);\nvar html = __webpack_require__(520);\nvar arraySlice = __webpack_require__(73163);\nvar createElement = __webpack_require__(12072);\nvar IS_IOS = __webpack_require__(17716);\nvar IS_NODE = __webpack_require__(95053);\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(isCallable(fn) ? fn : Function(fn), undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n\n\n/***/ }),\n\n/***/ 16679:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n\n\n/***/ }),\n\n/***/ 74841:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toIntegerOrInfinity = __webpack_require__(26882);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ 71265:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar toIntegerOrInfinity = __webpack_require__(26882);\nvar toLength = __webpack_require__(23417);\n\nvar RangeError = global.RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n\n\n/***/ }),\n\n/***/ 98086:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(7514);\nvar requireObjectCoercible = __webpack_require__(83943);\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ 26882:\n/***/ (function(module) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n\n\n/***/ }),\n\n/***/ 23417:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toIntegerOrInfinity = __webpack_require__(26882);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ 43162:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar requireObjectCoercible = __webpack_require__(83943);\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ 80670:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar toPositiveInteger = __webpack_require__(64913);\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n\n\n/***/ }),\n\n/***/ 64913:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar toIntegerOrInfinity = __webpack_require__(26882);\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n\n\n/***/ }),\n\n/***/ 2644:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar call = __webpack_require__(2834);\nvar isObject = __webpack_require__(24517);\nvar isSymbol = __webpack_require__(46290);\nvar getMethod = __webpack_require__(51839);\nvar ordinaryToPrimitive = __webpack_require__(39629);\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n/***/ }),\n\n/***/ 63918:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toPrimitive = __webpack_require__(2644);\nvar isSymbol = __webpack_require__(46290);\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n/***/ }),\n\n/***/ 24663:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ 25096:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar classof = __webpack_require__(52564);\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n\n\n/***/ }),\n\n/***/ 68664:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n/***/ }),\n\n/***/ 98828:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\nvar call = __webpack_require__(2834);\nvar DESCRIPTORS = __webpack_require__(15567);\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(28834);\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar ArrayBufferModule = __webpack_require__(89987);\nvar anInstance = __webpack_require__(2868);\nvar createPropertyDescriptor = __webpack_require__(97841);\nvar createNonEnumerableProperty = __webpack_require__(48914);\nvar isIntegralNumber = __webpack_require__(17506);\nvar toLength = __webpack_require__(23417);\nvar toIndex = __webpack_require__(71265);\nvar toOffset = __webpack_require__(80670);\nvar toPropertyKey = __webpack_require__(63918);\nvar hasOwn = __webpack_require__(20340);\nvar classof = __webpack_require__(52564);\nvar isObject = __webpack_require__(24517);\nvar isSymbol = __webpack_require__(46290);\nvar create = __webpack_require__(10819);\nvar isPrototypeOf = __webpack_require__(70176);\nvar setPrototypeOf = __webpack_require__(3840);\nvar getOwnPropertyNames = (__webpack_require__(6611).f);\nvar typedArrayFrom = __webpack_require__(83590);\nvar forEach = (__webpack_require__(91102).forEach);\nvar setSpecies = __webpack_require__(51334);\nvar definePropertyModule = __webpack_require__(95892);\nvar getOwnPropertyDescriptorModule = __webpack_require__(72062);\nvar InternalStateModule = __webpack_require__(70172);\nvar inheritIfRequired = __webpack_require__(51868);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n aTypedArrayConstructor(C);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && !isSymbol(key)\n && key in target\n && isIntegralNumber(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\n && isObject(descriptor)\n && hasOwn(descriptor, 'value')\n && !hasOwn(descriptor, 'get')\n && !hasOwn(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructorPrototype);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructorPrototype);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR, TypedArrayConstructor);\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n\n\n/***/ }),\n\n/***/ 28834:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* eslint-disable no-new -- required for testing */\nvar global = __webpack_require__(32010);\nvar fails = __webpack_require__(47044);\nvar checkCorrectnessOfIteration = __webpack_require__(46769);\nvar NATIVE_ARRAY_BUFFER_VIEWS = (__webpack_require__(36597).NATIVE_ARRAY_BUFFER_VIEWS);\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n\n\n/***/ }),\n\n/***/ 59610:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar arrayFromConstructorAndList = __webpack_require__(34269);\nvar typedArraySpeciesConstructor = __webpack_require__(34815);\n\nmodule.exports = function (instance, list) {\n return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n\n\n/***/ }),\n\n/***/ 83590:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar bind = __webpack_require__(25567);\nvar call = __webpack_require__(2834);\nvar aConstructor = __webpack_require__(69075);\nvar toObject = __webpack_require__(43162);\nvar lengthOfArrayLike = __webpack_require__(45495);\nvar getIterator = __webpack_require__(15892);\nvar getIteratorMethod = __webpack_require__(13872);\nvar isArrayIteratorMethod = __webpack_require__(89564);\nvar aTypedArrayConstructor = (__webpack_require__(36597).aTypedArrayConstructor);\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var C = aConstructor(this);\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n O = [];\n while (!(step = call(next, iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2]);\n }\n length = lengthOfArrayLike(O);\n result = new (aTypedArrayConstructor(C))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 34815:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar speciesConstructor = __webpack_require__(27754);\n\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n return aTypedArrayConstructor(speciesConstructor(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));\n};\n\n\n/***/ }),\n\n/***/ 46859:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(38347);\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n/***/ }),\n\n/***/ 9567:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = __webpack_require__(46887);\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n\n/***/ 75960:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(38688);\n\nexports.f = wellKnownSymbol;\n\n\n/***/ }),\n\n/***/ 38688:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar shared = __webpack_require__(464);\nvar hasOwn = __webpack_require__(20340);\nvar uid = __webpack_require__(46859);\nvar NATIVE_SYMBOL = __webpack_require__(46887);\nvar USE_SYMBOL_AS_UID = __webpack_require__(9567);\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ 43187:\n/***/ (function(module) {\n\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ }),\n\n/***/ 94910:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\nvar isPrototypeOf = __webpack_require__(70176);\nvar getPrototypeOf = __webpack_require__(69548);\nvar setPrototypeOf = __webpack_require__(3840);\nvar copyConstructorProperties = __webpack_require__(2675);\nvar create = __webpack_require__(10819);\nvar createNonEnumerableProperty = __webpack_require__(48914);\nvar createPropertyDescriptor = __webpack_require__(97841);\nvar clearErrorStack = __webpack_require__(34074);\nvar installErrorCause = __webpack_require__(87811);\nvar iterate = __webpack_require__(80383);\nvar normalizeStringArgument = __webpack_require__(86392);\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(45144);\n\nvar Error = global.Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n var that = isPrototypeOf(AggregateErrorPrototype, this) ? this : create(AggregateErrorPrototype);\n var options = arguments.length > 2 ? arguments[2] : undefined;\n if (setPrototypeOf) {\n that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));\n }\n createNonEnumerableProperty(that, 'message', normalizeStringArgument(message, ''));\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n installErrorCause(that, options);\n var errorsArray = [];\n iterate(errors, push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, Error);\nelse copyConstructorProperties($AggregateError, Error);\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create(Error.prototype, {\n constructor: createPropertyDescriptor(1, $AggregateError),\n message: createPropertyDescriptor(1, ''),\n name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true }, {\n AggregateError: $AggregateError\n});\n\n\n/***/ }),\n\n/***/ 39081:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\nvar fails = __webpack_require__(47044);\nvar isArray = __webpack_require__(59113);\nvar isObject = __webpack_require__(24517);\nvar toObject = __webpack_require__(43162);\nvar lengthOfArrayLike = __webpack_require__(45495);\nvar createProperty = __webpack_require__(38639);\nvar arraySpeciesCreate = __webpack_require__(45744);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(56280);\nvar wellKnownSymbol = __webpack_require__(38688);\nvar V8_VERSION = __webpack_require__(70091);\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n\n\n/***/ }),\n\n/***/ 68626:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar copyWithin = __webpack_require__(92642);\nvar addToUnscopables = __webpack_require__(71156);\n\n// `Array.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n$({ target: 'Array', proto: true }, {\n copyWithin: copyWithin\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('copyWithin');\n\n\n/***/ }),\n\n/***/ 41584:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar fill = __webpack_require__(72864);\nvar addToUnscopables = __webpack_require__(71156);\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n\n\n/***/ }),\n\n/***/ 49063:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar $filter = (__webpack_require__(91102).filter);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(56280);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ 11765:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar from = __webpack_require__(95717);\nvar checkCorrectnessOfIteration = __webpack_require__(46769);\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n\n\n/***/ }),\n\n/***/ 58028:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar $includes = (__webpack_require__(12636).includes);\nvar addToUnscopables = __webpack_require__(71156);\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n\n\n/***/ }),\n\n/***/ 81755:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(98086);\nvar addToUnscopables = __webpack_require__(71156);\nvar Iterators = __webpack_require__(15366);\nvar InternalStateModule = __webpack_require__(70172);\nvar defineIterator = __webpack_require__(97001);\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ 94845:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar uncurryThis = __webpack_require__(38347);\nvar IndexedObject = __webpack_require__(7514);\nvar toIndexedObject = __webpack_require__(98086);\nvar arrayMethodIsStrict = __webpack_require__(81007);\n\nvar un$Join = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return un$Join(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n\n\n/***/ }),\n\n/***/ 80055:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar $map = (__webpack_require__(91102).map);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(56280);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ 20731:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\nvar isArray = __webpack_require__(59113);\nvar isConstructor = __webpack_require__(20884);\nvar isObject = __webpack_require__(24517);\nvar toAbsoluteIndex = __webpack_require__(74841);\nvar lengthOfArrayLike = __webpack_require__(45495);\nvar toIndexedObject = __webpack_require__(98086);\nvar createProperty = __webpack_require__(38639);\nvar wellKnownSymbol = __webpack_require__(38688);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(56280);\nvar un$Slice = __webpack_require__(73163);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 45337:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar uncurryThis = __webpack_require__(38347);\nvar aCallable = __webpack_require__(32631);\nvar toObject = __webpack_require__(43162);\nvar lengthOfArrayLike = __webpack_require__(45495);\nvar toString = __webpack_require__(25096);\nvar fails = __webpack_require__(47044);\nvar internalSort = __webpack_require__(43977);\nvar arrayMethodIsStrict = __webpack_require__(81007);\nvar FF = __webpack_require__(3809);\nvar IE_OR_EDGE = __webpack_require__(21983);\nvar V8 = __webpack_require__(70091);\nvar WEBKIT = __webpack_require__(41731);\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) delete array[index++];\n\n return array;\n }\n});\n\n\n/***/ }),\n\n/***/ 23913:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\nvar toAbsoluteIndex = __webpack_require__(74841);\nvar toIntegerOrInfinity = __webpack_require__(26882);\nvar lengthOfArrayLike = __webpack_require__(45495);\nvar toObject = __webpack_require__(43162);\nvar arraySpeciesCreate = __webpack_require__(45744);\nvar createProperty = __webpack_require__(38639);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(56280);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n\n\n/***/ }),\n\n/***/ 7585:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar hasOwn = __webpack_require__(20340);\nvar redefine = __webpack_require__(13711);\nvar dateToPrimitive = __webpack_require__(53087);\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!hasOwn(DatePrototype, TO_PRIMITIVE)) {\n redefine(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n\n\n/***/ }),\n\n/***/ 24863:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(15567);\nvar FUNCTION_NAME_EXISTS = (__webpack_require__(7081).EXISTS);\nvar uncurryThis = __webpack_require__(38347);\nvar defineProperty = (__webpack_require__(95892).f);\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n\n\n/***/ }),\n\n/***/ 64384:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true }, {\n globalThis: global\n});\n\n\n/***/ }),\n\n/***/ 43448:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar setToStringTag = __webpack_require__(15216);\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n/***/ }),\n\n/***/ 18828:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar collection = __webpack_require__(36673);\nvar collectionStrong = __webpack_require__(9649);\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n\n\n/***/ }),\n\n/***/ 63956:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar setToStringTag = __webpack_require__(15216);\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n\n\n/***/ }),\n\n/***/ 7283:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(15567);\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\nvar isForced = __webpack_require__(39599);\nvar redefine = __webpack_require__(13711);\nvar hasOwn = __webpack_require__(20340);\nvar inheritIfRequired = __webpack_require__(51868);\nvar isPrototypeOf = __webpack_require__(70176);\nvar isSymbol = __webpack_require__(46290);\nvar toPrimitive = __webpack_require__(2644);\nvar fails = __webpack_require__(47044);\nvar getOwnPropertyNames = (__webpack_require__(6611).f);\nvar getOwnPropertyDescriptor = (__webpack_require__(72062).f);\nvar defineProperty = (__webpack_require__(95892).f);\nvar thisNumberValue = __webpack_require__(16679);\nvar trim = (__webpack_require__(29841).trim);\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = arraySlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n var dummy = this;\n // check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n\n\n/***/ }),\n\n/***/ 58549:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\n\n// `Number.EPSILON` constant\n// https://tc39.es/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n\n\n/***/ }),\n\n/***/ 70095:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar numberIsFinite = __webpack_require__(59805);\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n\n\n/***/ }),\n\n/***/ 2876:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar isIntegralNumber = __webpack_require__(17506);\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n isInteger: isIntegralNumber\n});\n\n\n/***/ }),\n\n/***/ 10849:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\nvar toIntegerOrInfinity = __webpack_require__(26882);\nvar thisNumberValue = __webpack_require__(16679);\nvar $repeat = __webpack_require__(34858);\nvar fails = __webpack_require__(47044);\n\nvar RangeError = global.RangeError;\nvar String = global.String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar un$ToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = fails(function () {\n return un$ToFixed(0.00008, 3) !== '0.000' ||\n un$ToFixed(0.9, 0) !== '1' ||\n un$ToFixed(1.255, 2) !== '1.25' ||\n un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n un$ToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toIntegerOrInfinity(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat('0', fractDigits - k) + result\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 18756:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar assign = __webpack_require__(87146);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n\n\n/***/ }),\n\n/***/ 75174:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar FREEZING = __webpack_require__(55481);\nvar fails = __webpack_require__(47044);\nvar isObject = __webpack_require__(24517);\nvar onFreeze = (__webpack_require__(62148).onFreeze);\n\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n }\n});\n\n\n/***/ }),\n\n/***/ 57444:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar fails = __webpack_require__(47044);\nvar toIndexedObject = __webpack_require__(98086);\nvar nativeGetOwnPropertyDescriptor = (__webpack_require__(72062).f);\nvar DESCRIPTORS = __webpack_require__(15567);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n\n\n/***/ }),\n\n/***/ 28331:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar DESCRIPTORS = __webpack_require__(15567);\nvar ownKeys = __webpack_require__(21594);\nvar toIndexedObject = __webpack_require__(98086);\nvar getOwnPropertyDescriptorModule = __webpack_require__(72062);\nvar createProperty = __webpack_require__(38639);\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 71950:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar fails = __webpack_require__(47044);\nvar toObject = __webpack_require__(43162);\nvar nativeGetPrototypeOf = __webpack_require__(69548);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(68494);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n\n\n/***/ }),\n\n/***/ 37309:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar toObject = __webpack_require__(43162);\nvar nativeKeys = __webpack_require__(84675);\nvar fails = __webpack_require__(47044);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n\n\n/***/ }),\n\n/***/ 14032:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(24663);\nvar redefine = __webpack_require__(13711);\nvar toString = __webpack_require__(52598);\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 59883:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar $values = (__webpack_require__(80754).values);\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n\n\n/***/ }),\n\n/***/ 77074:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar call = __webpack_require__(2834);\nvar aCallable = __webpack_require__(32631);\nvar newPromiseCapabilityModule = __webpack_require__(56614);\nvar perform = __webpack_require__(61900);\nvar iterate = __webpack_require__(80383);\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n\n/***/ 44455:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar aCallable = __webpack_require__(32631);\nvar getBuiltIn = __webpack_require__(38486);\nvar call = __webpack_require__(2834);\nvar newPromiseCapabilityModule = __webpack_require__(56614);\nvar perform = __webpack_require__(61900);\nvar iterate = __webpack_require__(80383);\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var AggregateError = getBuiltIn('AggregateError');\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n\n/***/ 58605:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar IS_PURE = __webpack_require__(63432);\nvar NativePromise = __webpack_require__(5155);\nvar fails = __webpack_require__(47044);\nvar getBuiltIn = __webpack_require__(38486);\nvar isCallable = __webpack_require__(94578);\nvar speciesConstructor = __webpack_require__(27754);\nvar promiseResolve = __webpack_require__(28617);\nvar redefine = __webpack_require__(13711);\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromise)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromise.prototype['finally'] !== method) {\n redefine(NativePromise.prototype, 'finally', method, { unsafe: true });\n }\n}\n\n\n/***/ }),\n\n/***/ 68067:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar IS_PURE = __webpack_require__(63432);\nvar global = __webpack_require__(32010);\nvar getBuiltIn = __webpack_require__(38486);\nvar call = __webpack_require__(2834);\nvar NativePromise = __webpack_require__(5155);\nvar redefine = __webpack_require__(13711);\nvar redefineAll = __webpack_require__(15341);\nvar setPrototypeOf = __webpack_require__(3840);\nvar setToStringTag = __webpack_require__(15216);\nvar setSpecies = __webpack_require__(51334);\nvar aCallable = __webpack_require__(32631);\nvar isCallable = __webpack_require__(94578);\nvar isObject = __webpack_require__(24517);\nvar anInstance = __webpack_require__(2868);\nvar inspectSource = __webpack_require__(10447);\nvar iterate = __webpack_require__(80383);\nvar checkCorrectnessOfIteration = __webpack_require__(46769);\nvar speciesConstructor = __webpack_require__(27754);\nvar task = (__webpack_require__(6616).set);\nvar microtask = __webpack_require__(59804);\nvar promiseResolve = __webpack_require__(28617);\nvar hostReportErrors = __webpack_require__(61144);\nvar newPromiseCapabilityModule = __webpack_require__(56614);\nvar perform = __webpack_require__(61900);\nvar InternalStateModule = __webpack_require__(70172);\nvar isForced = __webpack_require__(39599);\nvar wellKnownSymbol = __webpack_require__(38688);\nvar IS_BROWSER = __webpack_require__(3157);\nvar IS_NODE = __webpack_require__(95053);\nvar V8_VERSION = __webpack_require__(70091);\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromisePrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromisePrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromisePrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reactions = state.reactions;\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n reactions[reactions.length] = reaction;\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n\n/***/ 73228:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar getBuiltIn = __webpack_require__(38486);\nvar apply = __webpack_require__(58448);\nvar bind = __webpack_require__(5481);\nvar aConstructor = __webpack_require__(69075);\nvar anObject = __webpack_require__(34984);\nvar isObject = __webpack_require__(24517);\nvar create = __webpack_require__(10819);\nvar fails = __webpack_require__(47044);\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n\n\n/***/ }),\n\n/***/ 61726:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar exec = __webpack_require__(49820);\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n\n\n/***/ }),\n\n/***/ 74516:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(15567);\nvar objectDefinePropertyModule = __webpack_require__(95892);\nvar regExpFlags = __webpack_require__(21182);\nvar fails = __webpack_require__(47044);\n\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) objectDefinePropertyModule.f(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n\n\n/***/ }),\n\n/***/ 57114:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar uncurryThis = __webpack_require__(38347);\nvar PROPER_FUNCTION_NAME = (__webpack_require__(7081).PROPER);\nvar redefine = __webpack_require__(13711);\nvar anObject = __webpack_require__(34984);\nvar isPrototypeOf = __webpack_require__(70176);\nvar $toString = __webpack_require__(25096);\nvar fails = __webpack_require__(47044);\nvar regExpFlags = __webpack_require__(21182);\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\nvar getFlags = uncurryThis(regExpFlags);\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = $toString(R.source);\n var rf = R.flags;\n var f = $toString(rf === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype) ? getFlags(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 76014:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar collection = __webpack_require__(36673);\nvar collectionStrong = __webpack_require__(9649);\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n\n\n/***/ }),\n\n/***/ 26663:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar codeAt = (__webpack_require__(69510).codeAt);\n\n// `String.prototype.codePointAt` method\n// https://tc39.es/ecma262/#sec-string.prototype.codepointat\n$({ target: 'String', proto: true }, {\n codePointAt: function codePointAt(pos) {\n return codeAt(this, pos);\n }\n});\n\n\n/***/ }),\n\n/***/ 65578:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\nvar toAbsoluteIndex = __webpack_require__(74841);\n\nvar RangeError = global.RangeError;\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing\nvar $fromCodePoint = String.fromCodePoint;\nvar join = uncurryThis([].join);\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n fromCodePoint: function fromCodePoint(x) {\n var elements = [];\n var length = arguments.length;\n var i = 0;\n var code;\n while (length > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');\n elements[i] = code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);\n } return join(elements, '');\n }\n});\n\n\n/***/ }),\n\n/***/ 47458:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar uncurryThis = __webpack_require__(38347);\nvar notARegExp = __webpack_require__(93666);\nvar requireObjectCoercible = __webpack_require__(83943);\nvar toString = __webpack_require__(25096);\nvar correctIsRegExpLogic = __webpack_require__(91151);\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n\n\n/***/ }),\n\n/***/ 62046:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar createHTML = __webpack_require__(91159);\nvar forcedStringHTMLMethod = __webpack_require__(7452);\n\n// `String.prototype.italics` method\n// https://tc39.es/ecma262/#sec-string.prototype.italics\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {\n italics: function italics() {\n return createHTML(this, 'i', '', '');\n }\n});\n\n\n/***/ }),\n\n/***/ 58281:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = (__webpack_require__(69510).charAt);\nvar toString = __webpack_require__(25096);\nvar InternalStateModule = __webpack_require__(70172);\nvar defineIterator = __webpack_require__(97001);\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ 47259:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar createHTML = __webpack_require__(91159);\nvar forcedStringHTMLMethod = __webpack_require__(7452);\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n\n\n/***/ }),\n\n/***/ 71768:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n/* eslint-disable es/no-string-prototype-matchall -- safe */\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\nvar call = __webpack_require__(2834);\nvar uncurryThis = __webpack_require__(38347);\nvar createIteratorConstructor = __webpack_require__(13945);\nvar requireObjectCoercible = __webpack_require__(83943);\nvar toLength = __webpack_require__(23417);\nvar toString = __webpack_require__(25096);\nvar anObject = __webpack_require__(34984);\nvar classof = __webpack_require__(93975);\nvar isPrototypeOf = __webpack_require__(70176);\nvar isRegExp = __webpack_require__(28831);\nvar regExpFlags = __webpack_require__(21182);\nvar getMethod = __webpack_require__(51839);\nvar redefine = __webpack_require__(13711);\nvar fails = __webpack_require__(47044);\nvar wellKnownSymbol = __webpack_require__(38688);\nvar speciesConstructor = __webpack_require__(27754);\nvar advanceStringIndex = __webpack_require__(36352);\nvar regExpExec = __webpack_require__(66723);\nvar InternalStateModule = __webpack_require__(70172);\nvar IS_PURE = __webpack_require__(63432);\n\nvar MATCH_ALL = wellKnownSymbol('matchAll');\nvar REGEXP_STRING = 'RegExp String';\nvar REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);\nvar RegExpPrototype = RegExp.prototype;\nvar TypeError = global.TypeError;\nvar getFlags = uncurryThis(regExpFlags);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar un$MatchAll = uncurryThis(''.matchAll);\n\nvar WORKS_WITH_NON_GLOBAL_REGEX = !!un$MatchAll && !fails(function () {\n un$MatchAll('a', /./);\n});\n\nvar $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) {\n setInternalState(this, {\n type: REGEXP_STRING_ITERATOR,\n regexp: regexp,\n string: string,\n global: $global,\n unicode: fullUnicode,\n done: false\n });\n}, REGEXP_STRING, function next() {\n var state = getInternalState(this);\n if (state.done) return { value: undefined, done: true };\n var R = state.regexp;\n var S = state.string;\n var match = regExpExec(R, S);\n if (match === null) return { value: undefined, done: state.done = true };\n if (state.global) {\n if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);\n return { value: match, done: false };\n }\n state.done = true;\n return { value: match, done: false };\n});\n\nvar $matchAll = function (string) {\n var R = anObject(this);\n var S = toString(string);\n var C, flagsValue, flags, matcher, $global, fullUnicode;\n C = speciesConstructor(R, RegExp);\n flagsValue = R.flags;\n if (flagsValue === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype)) {\n flagsValue = getFlags(R);\n }\n flags = flagsValue === undefined ? '' : toString(flagsValue);\n matcher = new C(C === RegExp ? R.source : R, flags);\n $global = !!~stringIndexOf(flags, 'g');\n fullUnicode = !!~stringIndexOf(flags, 'u');\n matcher.lastIndex = toLength(R.lastIndex);\n return new $RegExpStringIterator(matcher, S, $global, fullUnicode);\n};\n\n// `String.prototype.matchAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.matchall\n$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {\n matchAll: function matchAll(regexp) {\n var O = requireObjectCoercible(this);\n var flags, S, matcher, rx;\n if (regexp != null) {\n if (isRegExp(regexp)) {\n flags = toString(requireObjectCoercible('flags' in RegExpPrototype\n ? regexp.flags\n : getFlags(regexp)\n ));\n if (!~stringIndexOf(flags, 'g')) throw TypeError('`.matchAll` does not allow non-global regexes');\n }\n if (WORKS_WITH_NON_GLOBAL_REGEX) return un$MatchAll(O, regexp);\n matcher = getMethod(regexp, MATCH_ALL);\n if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll;\n if (matcher) return call(matcher, regexp, O);\n } else if (WORKS_WITH_NON_GLOBAL_REGEX) return un$MatchAll(O, regexp);\n S = toString(O);\n rx = new RegExp(regexp, 'g');\n return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S);\n }\n});\n\nIS_PURE || MATCH_ALL in RegExpPrototype || redefine(RegExpPrototype, MATCH_ALL, $matchAll);\n\n\n/***/ }),\n\n/***/ 6422:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar call = __webpack_require__(2834);\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(11813);\nvar anObject = __webpack_require__(34984);\nvar toLength = __webpack_require__(23417);\nvar toString = __webpack_require__(25096);\nvar requireObjectCoercible = __webpack_require__(83943);\nvar getMethod = __webpack_require__(51839);\nvar advanceStringIndex = __webpack_require__(36352);\nvar regExpExec = __webpack_require__(66723);\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n\n\n/***/ }),\n\n/***/ 28264:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(56475);\nvar repeat = __webpack_require__(34858);\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n repeat: repeat\n});\n\n\n/***/ }),\n\n/***/ 46467:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar apply = __webpack_require__(58448);\nvar call = __webpack_require__(2834);\nvar uncurryThis = __webpack_require__(38347);\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(11813);\nvar fails = __webpack_require__(47044);\nvar anObject = __webpack_require__(34984);\nvar isCallable = __webpack_require__(94578);\nvar toIntegerOrInfinity = __webpack_require__(26882);\nvar toLength = __webpack_require__(23417);\nvar toString = __webpack_require__(25096);\nvar requireObjectCoercible = __webpack_require__(83943);\nvar advanceStringIndex = __webpack_require__(36352);\nvar getMethod = __webpack_require__(51839);\nvar getSubstitution = __webpack_require__(29519);\nvar regExpExec = __webpack_require__(66723);\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n\n\n/***/ }),\n\n/***/ 7851:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar apply = __webpack_require__(58448);\nvar call = __webpack_require__(2834);\nvar uncurryThis = __webpack_require__(38347);\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(11813);\nvar isRegExp = __webpack_require__(28831);\nvar anObject = __webpack_require__(34984);\nvar requireObjectCoercible = __webpack_require__(83943);\nvar speciesConstructor = __webpack_require__(27754);\nvar advanceStringIndex = __webpack_require__(36352);\nvar toLength = __webpack_require__(23417);\nvar toString = __webpack_require__(25096);\nvar getMethod = __webpack_require__(51839);\nvar arraySlice = __webpack_require__(73163);\nvar callRegExpExec = __webpack_require__(66723);\nvar regexpExec = __webpack_require__(49820);\nvar stickyHelpers = __webpack_require__(74846);\nvar fails = __webpack_require__(47044);\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n\n\n/***/ }),\n\n/***/ 18425:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar createHTML = __webpack_require__(91159);\nvar forcedStringHTMLMethod = __webpack_require__(7452);\n\n// `String.prototype.strike` method\n// https://tc39.es/ecma262/#sec-string.prototype.strike\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {\n strike: function strike() {\n return createHTML(this, 'strike', '', '');\n }\n});\n\n\n/***/ }),\n\n/***/ 72095:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar $trim = (__webpack_require__(29841).trim);\nvar forcedStringTrimMethod = __webpack_require__(68899);\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n\n\n/***/ }),\n\n/***/ 35877:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(46042);\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n\n\n/***/ }),\n\n/***/ 73844:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n\nvar $ = __webpack_require__(56475);\nvar DESCRIPTORS = __webpack_require__(15567);\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\nvar hasOwn = __webpack_require__(20340);\nvar isCallable = __webpack_require__(94578);\nvar isPrototypeOf = __webpack_require__(70176);\nvar toString = __webpack_require__(25096);\nvar defineProperty = (__webpack_require__(95892).f);\nvar copyConstructorProperties = __webpack_require__(2675);\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var symbolToString = uncurryThis(SymbolPrototype.toString);\n var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = symbolValueOf(this);\n var string = symbolToString(symbol);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n\n\n/***/ }),\n\n/***/ 69330:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(46042);\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n\n/***/ }),\n\n/***/ 65292:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar global = __webpack_require__(32010);\nvar getBuiltIn = __webpack_require__(38486);\nvar apply = __webpack_require__(58448);\nvar call = __webpack_require__(2834);\nvar uncurryThis = __webpack_require__(38347);\nvar IS_PURE = __webpack_require__(63432);\nvar DESCRIPTORS = __webpack_require__(15567);\nvar NATIVE_SYMBOL = __webpack_require__(46887);\nvar fails = __webpack_require__(47044);\nvar hasOwn = __webpack_require__(20340);\nvar isArray = __webpack_require__(59113);\nvar isCallable = __webpack_require__(94578);\nvar isObject = __webpack_require__(24517);\nvar isPrototypeOf = __webpack_require__(70176);\nvar isSymbol = __webpack_require__(46290);\nvar anObject = __webpack_require__(34984);\nvar toObject = __webpack_require__(43162);\nvar toIndexedObject = __webpack_require__(98086);\nvar toPropertyKey = __webpack_require__(63918);\nvar $toString = __webpack_require__(25096);\nvar createPropertyDescriptor = __webpack_require__(97841);\nvar nativeObjectCreate = __webpack_require__(10819);\nvar objectKeys = __webpack_require__(84675);\nvar getOwnPropertyNamesModule = __webpack_require__(6611);\nvar getOwnPropertyNamesExternal = __webpack_require__(8807);\nvar getOwnPropertySymbolsModule = __webpack_require__(61146);\nvar getOwnPropertyDescriptorModule = __webpack_require__(72062);\nvar definePropertyModule = __webpack_require__(95892);\nvar propertyIsEnumerableModule = __webpack_require__(55574);\nvar arraySlice = __webpack_require__(73163);\nvar redefine = __webpack_require__(13711);\nvar shared = __webpack_require__(464);\nvar sharedKey = __webpack_require__(82194);\nvar hiddenKeys = __webpack_require__(90682);\nvar uid = __webpack_require__(46859);\nvar wellKnownSymbol = __webpack_require__(38688);\nvar wrappedWellKnownSymbolModule = __webpack_require__(75960);\nvar defineWellKnownSymbol = __webpack_require__(46042);\nvar setToStringTag = __webpack_require__(15216);\nvar InternalStateModule = __webpack_require__(70172);\nvar $forEach = (__webpack_require__(91102).forEach);\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n redefine(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = $toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!SymbolPrototype[TO_PRIMITIVE]) {\n var valueOf = SymbolPrototype.valueOf;\n // eslint-disable-next-line no-unused-vars -- required for .length\n redefine(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n // TODO: improve hint logic\n return call(valueOf, this);\n });\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n\n/***/ }),\n\n/***/ 5597:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(46042);\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n\n/***/ }),\n\n/***/ 38178:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(46042);\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n\n/***/ }),\n\n/***/ 73663:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar uncurryThis = __webpack_require__(38347);\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $ArrayCopyWithin = __webpack_require__(92642);\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 29883:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $every = (__webpack_require__(91102).every);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 35471:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar call = __webpack_require__(2834);\nvar $fill = __webpack_require__(72864);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n return call(\n $fill,\n aTypedArray(this),\n value,\n length > 1 ? arguments[1] : undefined,\n length > 2 ? arguments[2] : undefined\n );\n});\n\n\n/***/ }),\n\n/***/ 21012:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $filter = (__webpack_require__(91102).filter);\nvar fromSpeciesAndList = __webpack_require__(59610);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n\n\n/***/ }),\n\n/***/ 97464:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $findIndex = (__webpack_require__(91102).findIndex);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 88997:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $find = (__webpack_require__(91102).find);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 3131:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(98828);\n\n// `Float32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float32', function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n/***/ }),\n\n/***/ 90868:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(98828);\n\n// `Float64Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float64', function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n/***/ }),\n\n/***/ 2857:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $forEach = (__webpack_require__(91102).forEach);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 83326:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(28834);\nvar exportTypedArrayStaticMethod = (__webpack_require__(36597).exportTypedArrayStaticMethod);\nvar typedArrayFrom = __webpack_require__(83590);\n\n// `%TypedArray%.from` method\n// https://tc39.es/ecma262/#sec-%typedarray%.from\nexportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n\n\n/***/ }),\n\n/***/ 94715:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $includes = (__webpack_require__(12636).includes);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 13624:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $indexOf = (__webpack_require__(12636).indexOf);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 75626:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(98828);\n\n// `Int16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int16', function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n/***/ }),\n\n/***/ 95756:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(98828);\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n/***/ }),\n\n/***/ 65553:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(98828);\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n/***/ }),\n\n/***/ 91132:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\nvar PROPER_FUNCTION_NAME = (__webpack_require__(7081).PROPER);\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar ArrayIterators = __webpack_require__(81755);\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar PROPER_ARRAY_VALUES_NAME = !!nativeTypedArrayIterator && nativeTypedArrayIterator.name === 'values';\n\nvar typedArrayValues = function values() {\n return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);\n\n\n/***/ }),\n\n/***/ 62514:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar uncurryThis = __webpack_require__(38347);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n return $join(aTypedArray(this), separator);\n});\n\n\n/***/ }),\n\n/***/ 24597:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar apply = __webpack_require__(58448);\nvar $lastIndexOf = __webpack_require__(84320);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n var length = arguments.length;\n return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n\n\n/***/ }),\n\n/***/ 88042:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $map = (__webpack_require__(91102).map);\nvar typedArraySpeciesConstructor = __webpack_require__(34815);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (typedArraySpeciesConstructor(O))(length);\n });\n});\n\n\n/***/ }),\n\n/***/ 92451:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $reduceRight = (__webpack_require__(32843).right);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 4660:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $reduce = (__webpack_require__(32843).left);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 44206:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n\n\n/***/ }),\n\n/***/ 66288:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(32010);\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar lengthOfArrayLike = __webpack_require__(45495);\nvar toOffset = __webpack_require__(80670);\nvar toObject = __webpack_require__(43162);\nvar fails = __webpack_require__(47044);\n\nvar RangeError = global.RangeError;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 13250:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar typedArraySpeciesConstructor = __webpack_require__(34815);\nvar fails = __webpack_require__(47044);\nvar arraySlice = __webpack_require__(73163);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = arraySlice(aTypedArray(this), start, end);\n var C = typedArraySpeciesConstructor(this);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 3858:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar $some = (__webpack_require__(91102).some);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 84538:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\nvar fails = __webpack_require__(47044);\nvar aCallable = __webpack_require__(32631);\nvar internalSort = __webpack_require__(43977);\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar FF = __webpack_require__(3809);\nvar IE_OR_EDGE = __webpack_require__(21983);\nvar V8 = __webpack_require__(70091);\nvar WEBKIT = __webpack_require__(41731);\n\nvar Array = global.Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar un$Sort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!un$Sort && !(fails(function () {\n un$Sort(new Uint16Array(2), null);\n}) && fails(function () {\n un$Sort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!un$Sort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n un$Sort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return un$Sort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n\n\n/***/ }),\n\n/***/ 64793:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar toLength = __webpack_require__(23417);\nvar toAbsoluteIndex = __webpack_require__(74841);\nvar typedArraySpeciesConstructor = __webpack_require__(34815);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n var C = typedArraySpeciesConstructor(O);\n return new C(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n\n\n/***/ }),\n\n/***/ 74202:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(32010);\nvar apply = __webpack_require__(58448);\nvar ArrayBufferViewCore = __webpack_require__(36597);\nvar fails = __webpack_require__(47044);\nvar arraySlice = __webpack_require__(73163);\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 52529:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar exportTypedArrayMethod = (__webpack_require__(36597).exportTypedArrayMethod);\nvar fails = __webpack_require__(47044);\nvar global = __webpack_require__(32010);\nvar uncurryThis = __webpack_require__(38347);\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return join(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n\n\n/***/ }),\n\n/***/ 47969:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(98828);\n\n// `Uint16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint16', function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n/***/ }),\n\n/***/ 59735:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(98828);\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n/***/ }),\n\n/***/ 56912:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(98828);\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n/***/ }),\n\n/***/ 58099:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(98828);\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n\n\n/***/ }),\n\n/***/ 84151:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(94910);\n\n\n/***/ }),\n\n/***/ 49109:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(64384);\n\n\n/***/ }),\n\n/***/ 98443:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(77074);\n\n\n/***/ }),\n\n/***/ 67858:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(44455);\n\n\n/***/ }),\n\n/***/ 49261:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar newPromiseCapabilityModule = __webpack_require__(56614);\nvar perform = __webpack_require__(61900);\n\n// `Promise.try` method\n// https://github.com/tc39/proposal-promise-try\n$({ target: 'Promise', stat: true }, {\n 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapabilityModule.f(this);\n var result = perform(callbackfn);\n (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n return promiseCapability.promise;\n }\n});\n\n\n/***/ }),\n\n/***/ 1083:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(71768);\n\n\n/***/ }),\n\n/***/ 42437:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar DOMIterables = __webpack_require__(23327);\nvar DOMTokenListPrototype = __webpack_require__(67797);\nvar forEach = __webpack_require__(82938);\nvar createNonEnumerableProperty = __webpack_require__(48914);\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n\n\n/***/ }),\n\n/***/ 94712:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(32010);\nvar DOMIterables = __webpack_require__(23327);\nvar DOMTokenListPrototype = __webpack_require__(67797);\nvar ArrayIteratorMethods = __webpack_require__(81755);\nvar createNonEnumerableProperty = __webpack_require__(48914);\nvar wellKnownSymbol = __webpack_require__(38688);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n\n\n/***/ }),\n\n/***/ 41863:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(56475);\nvar call = __webpack_require__(2834);\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n toJSON: function toJSON() {\n return call(URL.prototype.toString, this);\n }\n});\n\n\n/***/ }),\n\n/***/ 90780:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar parent = __webpack_require__(42075);\n__webpack_require__(94712);\n\nmodule.exports = parent;\n\n\n/***/ }),\n\n/***/ 45728:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar objectKeys = __webpack_require__(35643);\nvar isArguments = __webpack_require__(67906);\nvar is = __webpack_require__(98527);\nvar isRegex = __webpack_require__(71689);\nvar flags = __webpack_require__(64607);\nvar isDate = __webpack_require__(71230);\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n\n\n/***/ }),\n\n/***/ 89295:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar $defineProperty = __webpack_require__(56649);\n\nvar $SyntaxError = __webpack_require__(57770);\nvar $TypeError = __webpack_require__(96785);\n\nvar gopd = __webpack_require__(68109);\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n\n\n/***/ }),\n\n/***/ 77802:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar keys = __webpack_require__(35643);\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = __webpack_require__(89295);\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = __webpack_require__(18890)();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n\n/***/ }),\n\n/***/ 56649:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar GetIntrinsic = __webpack_require__(28651);\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n\n\n/***/ }),\n\n/***/ 29055:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n\n\n/***/ }),\n\n/***/ 15293:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/** @type {import('.')} */\nmodule.exports = Error;\n\n\n/***/ }),\n\n/***/ 18888:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n\n\n/***/ }),\n\n/***/ 47900:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n\n\n/***/ }),\n\n/***/ 57770:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n\n\n/***/ }),\n\n/***/ 96785:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n\n\n/***/ }),\n\n/***/ 54055:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n\n\n/***/ }),\n\n/***/ 64785:\n/***/ (function(module) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n\n\n/***/ }),\n\n/***/ 72022:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n if (typeof globalThis === \"object\") {\n return globalThis;\n }\n\n var g;\n\n try {\n // This works if eval is allowed (see CSP)\n // eslint-disable-next-line no-new-func\n g = this || new Function(\"return this\")();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") {\n return window;\n } // This works if the self reference is available\n\n\n if (typeof self === \"object\") {\n return self;\n } // This works if the global reference is available\n\n\n if (typeof __webpack_require__.g !== \"undefined\") {\n return __webpack_require__.g;\n }\n }\n\n return g;\n}();\n\n/***/ }),\n\n/***/ 68404:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isCallable = __webpack_require__(3746);\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n\n\n/***/ }),\n\n/***/ 12719:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n\n/***/ }),\n\n/***/ 5049:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar implementation = __webpack_require__(12719);\n\nmodule.exports = Function.prototype.bind || implementation;\n\n\n/***/ }),\n\n/***/ 61084:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n\n\n/***/ }),\n\n/***/ 28651:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar undefined;\n\nvar $Error = __webpack_require__(15293);\nvar $EvalError = __webpack_require__(29055);\nvar $RangeError = __webpack_require__(18888);\nvar $ReferenceError = __webpack_require__(47900);\nvar $SyntaxError = __webpack_require__(57770);\nvar $TypeError = __webpack_require__(96785);\nvar $URIError = __webpack_require__(54055);\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = __webpack_require__(73257)();\nvar hasProto = __webpack_require__(85726)();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = __webpack_require__(5049);\nvar hasOwn = __webpack_require__(55215);\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\n\n/***/ }),\n\n/***/ 68109:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar GetIntrinsic = __webpack_require__(28651);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n\n\n/***/ }),\n\n/***/ 18890:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar $defineProperty = __webpack_require__(56649);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n\n\n/***/ }),\n\n/***/ 85726:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n\n\n/***/ }),\n\n/***/ 73257:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = __webpack_require__(12843);\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n\n\n/***/ }),\n\n/***/ 12843:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n\n\n/***/ }),\n\n/***/ 26626:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar hasSymbols = __webpack_require__(12843);\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n\n\n/***/ }),\n\n/***/ 55215:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = __webpack_require__(5049);\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n\n\n/***/ }),\n\n/***/ 35143:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar Buffer = (__webpack_require__(16696).Buffer);\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n GB18030_CODE = -2,\n SEQ_START = -10,\n NODE_START = -1000,\n UNASSIGNED_NODE = new Array(0x100),\n DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n this.encodingName = codecOptions.encodingName;\n if (!codecOptions)\n throw new Error(\"DBCS codec is called without the data.\")\n if (!codecOptions.table)\n throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n // Load tables.\n var mappingTable = codecOptions.table();\n\n\n // Decode tables: MBCS -> Unicode.\n\n // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n // Trie root is decodeTables[0].\n // Values: >= 0 -> unicode character code. can be > 0xFFFF\n // == UNASSIGNED -> unknown/unassigned sequence.\n // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n // <= NODE_START -> index of the next node in our trie to process next byte.\n // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.\n this.decodeTables = [];\n this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n this.decodeTableSeq = [];\n\n // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n for (var i = 0; i < mappingTable.length; i++)\n this._addDecodeChunk(mappingTable[i]);\n\n // Load & create GB18030 tables when needed.\n if (typeof codecOptions.gb18030 === 'function') {\n this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n // Add GB18030 common decode nodes.\n var commonThirdByteNodeIdx = this.decodeTables.length;\n this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n var commonFourthByteNodeIdx = this.decodeTables.length;\n this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n // Fill out the tree\n var firstByteNode = this.decodeTables[0];\n for (var i = 0x81; i <= 0xFE; i++) {\n var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]];\n for (var j = 0x30; j <= 0x39; j++) {\n if (secondByteNode[j] === UNASSIGNED) {\n secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;\n } else if (secondByteNode[j] > NODE_START) {\n throw new Error(\"gb18030 decode tables conflict at byte 2\");\n }\n\n var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];\n for (var k = 0x81; k <= 0xFE; k++) {\n if (thirdByteNode[k] === UNASSIGNED) {\n thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;\n } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {\n continue;\n } else if (thirdByteNode[k] > NODE_START) {\n throw new Error(\"gb18030 decode tables conflict at byte 3\");\n }\n\n var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];\n for (var l = 0x30; l <= 0x39; l++) {\n if (fourthByteNode[l] === UNASSIGNED)\n fourthByteNode[l] = GB18030_CODE;\n }\n }\n }\n }\n }\n\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n \n // Encode tables: Unicode -> DBCS.\n\n // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n // == UNASSIGNED -> no conversion found. Output a default char.\n // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n this.encodeTable = [];\n \n // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n // means end of sequence (needed when one sequence is a strict subsequence of another).\n // Objects are kept separately from encodeTable to increase performance.\n this.encodeTableSeq = [];\n\n // Some chars can be decoded, but need not be encoded.\n var skipEncodeChars = {};\n if (codecOptions.encodeSkipVals)\n for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n var val = codecOptions.encodeSkipVals[i];\n if (typeof val === 'number')\n skipEncodeChars[val] = true;\n else\n for (var j = val.from; j <= val.to; j++)\n skipEncodeChars[j] = true;\n }\n \n // Use decode trie to recursively fill out encode tables.\n this._fillEncodeTable(0, 0, skipEncodeChars);\n\n // Add more encoding pairs when needed.\n if (codecOptions.encodeAdd) {\n for (var uChar in codecOptions.encodeAdd)\n if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n }\n\n this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n var bytes = [];\n for (; addr > 0; addr >>>= 8)\n bytes.push(addr & 0xFF);\n if (bytes.length == 0)\n bytes.push(0);\n\n var node = this.decodeTables[0];\n for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n var val = node[bytes[i]];\n\n if (val == UNASSIGNED) { // Create new node.\n node[bytes[i]] = NODE_START - this.decodeTables.length;\n this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n }\n else if (val <= NODE_START) { // Existing node.\n node = this.decodeTables[NODE_START - val];\n }\n else\n throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n }\n return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n // First element of chunk is the hex mbcs code where we start.\n var curAddr = parseInt(chunk[0], 16);\n\n // Choose the decoding node where we'll write our chars.\n var writeTable = this._getDecodeTrieNode(curAddr);\n curAddr = curAddr & 0xFF;\n\n // Write all other elements of the chunk to the table.\n for (var k = 1; k < chunk.length; k++) {\n var part = chunk[k];\n if (typeof part === \"string\") { // String, write as-is.\n for (var l = 0; l < part.length;) {\n var code = part.charCodeAt(l++);\n if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n var codeTrail = part.charCodeAt(l++);\n if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n else\n throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n var len = 0xFFF - code + 2;\n var seq = [];\n for (var m = 0; m < len; m++)\n seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n this.decodeTableSeq.push(seq);\n }\n else\n writeTable[curAddr++] = code; // Basic char\n }\n } \n else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n var charCode = writeTable[curAddr - 1] + 1;\n for (var l = 0; l < part; l++)\n writeTable[curAddr++] = charCode++;\n }\n else\n throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n if (curAddr > 0xFF)\n throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n if (this.encodeTable[high] === undefined)\n this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n if (bucket[low] <= SEQ_START)\n this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n else if (bucket[low] == UNASSIGNED)\n bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n \n // Get the root of character tree according to first character of the sequence.\n var uCode = seq[0];\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n\n var node;\n if (bucket[low] <= SEQ_START) {\n // There's already a sequence with - use it.\n node = this.encodeTableSeq[SEQ_START-bucket[low]];\n }\n else {\n // There was no sequence object - allocate a new one.\n node = {};\n if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n bucket[low] = SEQ_START - this.encodeTableSeq.length;\n this.encodeTableSeq.push(node);\n }\n\n // Traverse the character tree, allocating new nodes as needed.\n for (var j = 1; j < seq.length-1; j++) {\n var oldVal = node[uCode];\n if (typeof oldVal === 'object')\n node = oldVal;\n else {\n node = node[uCode] = {}\n if (oldVal !== undefined)\n node[DEF_CHAR] = oldVal\n }\n }\n\n // Set the leaf to given dbcsCode.\n uCode = seq[seq.length-1];\n node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n var node = this.decodeTables[nodeIdx];\n var hasValues = false;\n var subNodeEmpty = {};\n for (var i = 0; i < 0x100; i++) {\n var uCode = node[i];\n var mbCode = prefix + i;\n if (skipEncodeChars[mbCode])\n continue;\n\n if (uCode >= 0) {\n this._setEncodeChar(uCode, mbCode);\n hasValues = true;\n } else if (uCode <= NODE_START) {\n var subNodeIdx = NODE_START - uCode;\n if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030).\n var newPrefix = (mbCode << 8) >>> 0; // NOTE: '>>> 0' keeps 32-bit num positive.\n if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars))\n hasValues = true;\n else\n subNodeEmpty[subNodeIdx] = true;\n }\n } else if (uCode <= SEQ_START) {\n this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n hasValues = true;\n }\n }\n return hasValues;\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n // Encoder state\n this.leadSurrogate = -1;\n this.seqObj = undefined;\n \n // Static data\n this.encodeTable = codec.encodeTable;\n this.encodeTableSeq = codec.encodeTableSeq;\n this.defaultCharSingleByte = codec.defCharSB;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n leadSurrogate = this.leadSurrogate,\n seqObj = this.seqObj, nextChar = -1,\n i = 0, j = 0;\n\n while (true) {\n // 0. Get next character.\n if (nextChar === -1) {\n if (i == str.length) break;\n var uCode = str.charCodeAt(i++);\n }\n else {\n var uCode = nextChar;\n nextChar = -1; \n }\n\n // 1. Handle surrogates.\n if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n if (uCode < 0xDC00) { // We've got lead surrogate.\n if (leadSurrogate === -1) {\n leadSurrogate = uCode;\n continue;\n } else {\n leadSurrogate = uCode;\n // Double lead surrogate found.\n uCode = UNASSIGNED;\n }\n } else { // We've got trail surrogate.\n if (leadSurrogate !== -1) {\n uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n leadSurrogate = -1;\n } else {\n // Incomplete surrogate pair - only trail surrogate found.\n uCode = UNASSIGNED;\n }\n \n }\n }\n else if (leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n leadSurrogate = -1;\n }\n\n // 2. Convert uCode character.\n var dbcsCode = UNASSIGNED;\n if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n var resCode = seqObj[uCode];\n if (typeof resCode === 'object') { // Sequence continues.\n seqObj = resCode;\n continue;\n\n } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n dbcsCode = resCode;\n\n } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n // Try default character for this sequence\n resCode = seqObj[DEF_CHAR];\n if (resCode !== undefined) {\n dbcsCode = resCode; // Found. Write it.\n nextChar = uCode; // Current character will be written too in the next iteration.\n\n } else {\n // TODO: What if we have no default? (resCode == undefined)\n // Then, we should write first char of the sequence as-is and try the rest recursively.\n // Didn't do it for now because no encoding has this situation yet.\n // Currently, just skip the sequence and write current char.\n }\n }\n seqObj = undefined;\n }\n else if (uCode >= 0) { // Regular character\n var subtable = this.encodeTable[uCode >> 8];\n if (subtable !== undefined)\n dbcsCode = subtable[uCode & 0xFF];\n \n if (dbcsCode <= SEQ_START) { // Sequence start\n seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n continue;\n }\n\n if (dbcsCode == UNASSIGNED && this.gb18030) {\n // Use GB18030 algorithm to find character(s) to write.\n var idx = findIdx(this.gb18030.uChars, uCode);\n if (idx != -1) {\n var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n newBuf[j++] = 0x30 + dbcsCode;\n continue;\n }\n }\n }\n\n // 3. Write dbcsCode character.\n if (dbcsCode === UNASSIGNED)\n dbcsCode = this.defaultCharSingleByte;\n \n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else if (dbcsCode < 0x10000) {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n else if (dbcsCode < 0x1000000) {\n newBuf[j++] = dbcsCode >> 16;\n newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n } else {\n newBuf[j++] = dbcsCode >>> 24;\n newBuf[j++] = (dbcsCode >>> 16) & 0xFF;\n newBuf[j++] = (dbcsCode >>> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n }\n }\n\n this.seqObj = seqObj;\n this.leadSurrogate = leadSurrogate;\n return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n if (this.leadSurrogate === -1 && this.seqObj === undefined)\n return; // All clean. Most often case.\n\n var newBuf = Buffer.alloc(10), j = 0;\n\n if (this.seqObj) { // We're in the sequence.\n var dbcsCode = this.seqObj[DEF_CHAR];\n if (dbcsCode !== undefined) { // Write beginning of the sequence.\n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n } else {\n // See todo above.\n }\n this.seqObj = undefined;\n }\n\n if (this.leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n newBuf[j++] = this.defaultCharSingleByte;\n this.leadSurrogate = -1;\n }\n \n return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n // Decoder state\n this.nodeIdx = 0;\n this.prevBytes = [];\n\n // Static data\n this.decodeTables = codec.decodeTables;\n this.decodeTableSeq = codec.decodeTableSeq;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n var newBuf = Buffer.alloc(buf.length*2),\n nodeIdx = this.nodeIdx, \n prevBytes = this.prevBytes, prevOffset = this.prevBytes.length,\n seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence.\n uCode;\n\n for (var i = 0, j = 0; i < buf.length; i++) {\n var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset];\n\n // Lookup in current trie node.\n var uCode = this.decodeTables[nodeIdx][curByte];\n\n if (uCode >= 0) { \n // Normal character, just use it.\n }\n else if (uCode === UNASSIGNED) { // Unknown char.\n // TODO: Callback with seq.\n uCode = this.defaultCharUnicode.charCodeAt(0);\n i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again.\n }\n else if (uCode === GB18030_CODE) {\n if (i >= 3) {\n var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30);\n } else {\n var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + \n (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + \n (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + \n (curByte-0x30);\n }\n var idx = findIdx(this.gb18030.gbChars, ptr);\n uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n }\n else if (uCode <= NODE_START) { // Go to next trie node.\n nodeIdx = NODE_START - uCode;\n continue;\n }\n else if (uCode <= SEQ_START) { // Output a sequence of chars.\n var seq = this.decodeTableSeq[SEQ_START - uCode];\n for (var k = 0; k < seq.length - 1; k++) {\n uCode = seq[k];\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n }\n uCode = seq[seq.length-1];\n }\n else\n throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n // Write the character to buffer, handling higher planes using surrogate pair.\n if (uCode >= 0x10000) { \n uCode -= 0x10000;\n var uCodeLead = 0xD800 | (uCode >> 10);\n newBuf[j++] = uCodeLead & 0xFF;\n newBuf[j++] = uCodeLead >> 8;\n\n uCode = 0xDC00 | (uCode & 0x3FF);\n }\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n\n // Reset trie node.\n nodeIdx = 0; seqStart = i+1;\n }\n\n this.nodeIdx = nodeIdx;\n this.prevBytes = (seqStart >= 0)\n ? Array.prototype.slice.call(buf, seqStart)\n : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));\n\n return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n var ret = '';\n\n // Try to parse all remaining chars.\n while (this.prevBytes.length > 0) {\n // Skip 1 character in the buffer.\n ret += this.defaultCharUnicode;\n var bytesArr = this.prevBytes.slice(1);\n\n // Parse remaining as usual.\n this.prevBytes = [];\n this.nodeIdx = 0;\n if (bytesArr.length > 0)\n ret += this.write(bytesArr);\n }\n\n this.prevBytes = [];\n this.nodeIdx = 0;\n return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n if (table[0] > val)\n return -1;\n\n var l = 0, r = table.length;\n while (l < r-1) { // always table[l] <= val < table[r]\n var mid = l + ((r-l+1) >> 1);\n if (table[mid] <= val)\n l = mid;\n else\n r = mid;\n }\n return l;\n}\n\n\n\n/***/ }),\n\n/***/ 90481:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n \n // == Japanese/ShiftJIS ====================================================\n // All japanese encodings are based on JIS X set of standards:\n // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.\n // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n // Has several variations in 1978, 1983, 1990 and 1997.\n // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n // 2 planes, first is superset of 0208, second - revised 0212.\n // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n // Byte encodings are:\n // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.\n // 0x00-0x7F - lower part of 0201\n // 0x8E, 0xA1-0xDF - upper part of 0201\n // (0xA1-0xFE)x2 - 0208 plane (94x94).\n // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n // Used as-is in ISO2022 family.\n // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n // 0201-1976 Roman, 0208-1978, 0208-1983.\n // * ISO2022-JP-1: Adds esc seq for 0212-1990.\n // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n //\n // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n //\n // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n 'shiftjis': {\n type: '_dbcs',\n table: function() { return __webpack_require__(40679) },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n },\n 'csshiftjis': 'shiftjis',\n 'mskanji': 'shiftjis',\n 'sjis': 'shiftjis',\n 'windows31j': 'shiftjis',\n 'ms31j': 'shiftjis',\n 'xsjis': 'shiftjis',\n 'windows932': 'shiftjis',\n 'ms932': 'shiftjis',\n '932': 'shiftjis',\n 'cp932': 'shiftjis',\n\n 'eucjp': {\n type: '_dbcs',\n table: function() { return __webpack_require__(56406) },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n },\n\n // TODO: KDDI extension to Shift_JIS\n // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n // == Chinese/GBK ==========================================================\n // http://en.wikipedia.org/wiki/GBK\n // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n 'gb2312': 'cp936',\n 'gb231280': 'cp936',\n 'gb23121980': 'cp936',\n 'csgb2312': 'cp936',\n 'csiso58gb231280': 'cp936',\n 'euccn': 'cp936',\n\n // Microsoft's CP936 is a subset and approximation of GBK.\n 'windows936': 'cp936',\n 'ms936': 'cp936',\n '936': 'cp936',\n 'cp936': {\n type: '_dbcs',\n table: function() { return __webpack_require__(74488) },\n },\n\n // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n 'gbk': {\n type: '_dbcs',\n table: function() { return (__webpack_require__(74488).concat)(__webpack_require__(55914)) },\n },\n 'xgbk': 'gbk',\n 'isoir58': 'gbk',\n\n // GB18030 is an algorithmic extension of GBK.\n // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n // http://icu-project.org/docs/papers/gb18030.html\n // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n 'gb18030': {\n type: '_dbcs',\n table: function() { return (__webpack_require__(74488).concat)(__webpack_require__(55914)) },\n gb18030: function() { return __webpack_require__(99129) },\n encodeSkipVals: [0x80],\n encodeAdd: {'€': 0xA2E3},\n },\n\n 'chinese': 'gb18030',\n\n\n // == Korean ===============================================================\n // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n 'windows949': 'cp949',\n 'ms949': 'cp949',\n '949': 'cp949',\n 'cp949': {\n type: '_dbcs',\n table: function() { return __webpack_require__(21166) },\n },\n\n 'cseuckr': 'cp949',\n 'csksc56011987': 'cp949',\n 'euckr': 'cp949',\n 'isoir149': 'cp949',\n 'korean': 'cp949',\n 'ksc56011987': 'cp949',\n 'ksc56011989': 'cp949',\n 'ksc5601': 'cp949',\n\n\n // == Big5/Taiwan/Hong Kong ================================================\n // There are lots of tables for Big5 and cp950. Please see the following links for history:\n // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n // Variations, in roughly number of defined chars:\n // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n // * Big5-2003 (Taiwan standard) almost superset of cp950.\n // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n // Plus, it has 4 combining sequences.\n // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n // Implementations are not consistent within browsers; sometimes labeled as just big5.\n // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n // \n // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n 'windows950': 'cp950',\n 'ms950': 'cp950',\n '950': 'cp950',\n 'cp950': {\n type: '_dbcs',\n table: function() { return __webpack_require__(72324) },\n },\n\n // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n 'big5': 'big5hkscs',\n 'big5hkscs': {\n type: '_dbcs',\n table: function() { return (__webpack_require__(72324).concat)(__webpack_require__(43267)) },\n encodeSkipVals: [\n // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,\n ],\n },\n\n 'cnbig5': 'big5hkscs',\n 'csbig5': 'big5hkscs',\n 'xxbig5': 'big5hkscs',\n};\n\n\n/***/ }),\n\n/***/ 26326:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n __webpack_require__(16793),\n __webpack_require__(24162),\n __webpack_require__(17100),\n __webpack_require__(11326),\n __webpack_require__(99948),\n __webpack_require__(99900),\n __webpack_require__(81492),\n __webpack_require__(35143),\n __webpack_require__(90481),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n var module = modules[i];\n for (var enc in module)\n if (Object.prototype.hasOwnProperty.call(module, enc))\n exports[enc] = module[enc];\n}\n\n\n/***/ }),\n\n/***/ 16793:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar Buffer = (__webpack_require__(16696).Buffer);\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n // Encodings\n utf8: { type: \"_internal\", bomAware: true},\n cesu8: { type: \"_internal\", bomAware: true},\n unicode11utf8: \"utf8\",\n\n ucs2: { type: \"_internal\", bomAware: true},\n utf16le: \"ucs2\",\n\n binary: { type: \"_internal\" },\n base64: { type: \"_internal\" },\n hex: { type: \"_internal\" },\n\n // Codec.\n _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n this.enc = codecOptions.encodingName;\n this.bomAware = codecOptions.bomAware;\n\n if (this.enc === \"base64\")\n this.encoder = InternalEncoderBase64;\n else if (this.enc === \"cesu8\") {\n this.enc = \"utf8\"; // Use utf8 for decoding.\n this.encoder = InternalEncoderCesu8;\n\n // Add decoder for versions of Node not supporting CESU-8\n if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {\n this.decoder = InternalDecoderCesu8;\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n }\n }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = (__webpack_require__(43143)/* .StringDecoder */ .I);\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n this.decoder = new StringDecoder(codec.enc);\n}\n\nInternalDecoder.prototype.write = function(buf) {\n if (!Buffer.isBuffer(buf)) {\n buf = Buffer.from(buf);\n }\n\n return this.decoder.write(buf);\n}\n\nInternalDecoder.prototype.end = function() {\n return this.decoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n str = this.prevStr + str;\n var completeQuads = str.length - (str.length % 4);\n this.prevStr = str.slice(completeQuads);\n str = str.slice(0, completeQuads);\n\n return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n // Naive implementation, but it works because CESU-8 is especially easy\n // to convert from UTF-16 (which all JS strings are encoded in).\n if (charCode < 0x80)\n buf[bufIdx++] = charCode;\n else if (charCode < 0x800) {\n buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n else { // charCode will always be < 0x10000 in javascript.\n buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n }\n return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n this.acc = 0;\n this.contBytes = 0;\n this.accBytes = 0;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n res = '';\n for (var i = 0; i < buf.length; i++) {\n var curByte = buf[i];\n if ((curByte & 0xC0) !== 0x80) { // Leading byte\n if (contBytes > 0) { // Previous code is invalid\n res += this.defaultCharUnicode;\n contBytes = 0;\n }\n\n if (curByte < 0x80) { // Single-byte code\n res += String.fromCharCode(curByte);\n } else if (curByte < 0xE0) { // Two-byte code\n acc = curByte & 0x1F;\n contBytes = 1; accBytes = 1;\n } else if (curByte < 0xF0) { // Three-byte code\n acc = curByte & 0x0F;\n contBytes = 2; accBytes = 1;\n } else { // Four or more are not supported for CESU-8.\n res += this.defaultCharUnicode;\n }\n } else { // Continuation byte\n if (contBytes > 0) { // We're waiting for it.\n acc = (acc << 6) | (curByte & 0x3f);\n contBytes--; accBytes++;\n if (contBytes === 0) {\n // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n if (accBytes === 2 && acc < 0x80 && acc > 0)\n res += this.defaultCharUnicode;\n else if (accBytes === 3 && acc < 0x800)\n res += this.defaultCharUnicode;\n else\n // Actually add character.\n res += String.fromCharCode(acc);\n }\n } else { // Unexpected continuation byte\n res += this.defaultCharUnicode;\n }\n }\n }\n this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n var res = 0;\n if (this.contBytes > 0)\n res += this.defaultCharUnicode;\n return res;\n}\n\n\n/***/ }),\n\n/***/ 99948:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar Buffer = (__webpack_require__(16696).Buffer);\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n if (!codecOptions)\n throw new Error(\"SBCS codec is called without the data.\")\n \n // Prepare char buffer for decoding.\n if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n \n if (codecOptions.chars.length === 128) {\n var asciiString = \"\";\n for (var i = 0; i < 128; i++)\n asciiString += String.fromCharCode(i);\n codecOptions.chars = asciiString + codecOptions.chars;\n }\n\n this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n \n // Encoding buffer.\n var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n for (var i = 0; i < codecOptions.chars.length; i++)\n encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length);\n for (var i = 0; i < str.length; i++)\n buf[i] = this.encodeBuf[str.charCodeAt(i)];\n \n return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n var decodeBuf = this.decodeBuf;\n var newBuf = Buffer.alloc(buf.length*2);\n var idx1 = 0, idx2 = 0;\n for (var i = 0; i < buf.length; i++) {\n idx1 = buf[i]*2; idx2 = i*2;\n newBuf[idx2] = decodeBuf[idx1];\n newBuf[idx2+1] = decodeBuf[idx1+1];\n }\n return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n\n\n/***/ }),\n\n/***/ 81492:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n \"437\": \"cp437\",\n \"737\": \"cp737\",\n \"775\": \"cp775\",\n \"850\": \"cp850\",\n \"852\": \"cp852\",\n \"855\": \"cp855\",\n \"856\": \"cp856\",\n \"857\": \"cp857\",\n \"858\": \"cp858\",\n \"860\": \"cp860\",\n \"861\": \"cp861\",\n \"862\": \"cp862\",\n \"863\": \"cp863\",\n \"864\": \"cp864\",\n \"865\": \"cp865\",\n \"866\": \"cp866\",\n \"869\": \"cp869\",\n \"874\": \"windows874\",\n \"922\": \"cp922\",\n \"1046\": \"cp1046\",\n \"1124\": \"cp1124\",\n \"1125\": \"cp1125\",\n \"1129\": \"cp1129\",\n \"1133\": \"cp1133\",\n \"1161\": \"cp1161\",\n \"1162\": \"cp1162\",\n \"1163\": \"cp1163\",\n \"1250\": \"windows1250\",\n \"1251\": \"windows1251\",\n \"1252\": \"windows1252\",\n \"1253\": \"windows1253\",\n \"1254\": \"windows1254\",\n \"1255\": \"windows1255\",\n \"1256\": \"windows1256\",\n \"1257\": \"windows1257\",\n \"1258\": \"windows1258\",\n \"28591\": \"iso88591\",\n \"28592\": \"iso88592\",\n \"28593\": \"iso88593\",\n \"28594\": \"iso88594\",\n \"28595\": \"iso88595\",\n \"28596\": \"iso88596\",\n \"28597\": \"iso88597\",\n \"28598\": \"iso88598\",\n \"28599\": \"iso88599\",\n \"28600\": \"iso885910\",\n \"28601\": \"iso885911\",\n \"28603\": \"iso885913\",\n \"28604\": \"iso885914\",\n \"28605\": \"iso885915\",\n \"28606\": \"iso885916\",\n \"windows874\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"win874\": \"windows874\",\n \"cp874\": \"windows874\",\n \"windows1250\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n },\n \"win1250\": \"windows1250\",\n \"cp1250\": \"windows1250\",\n \"windows1251\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"win1251\": \"windows1251\",\n \"cp1251\": \"windows1251\",\n \"windows1252\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"win1252\": \"windows1252\",\n \"cp1252\": \"windows1252\",\n \"windows1253\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n },\n \"win1253\": \"windows1253\",\n \"cp1253\": \"windows1253\",\n \"windows1254\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n },\n \"win1254\": \"windows1254\",\n \"cp1254\": \"windows1254\",\n \"windows1255\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\"\n },\n \"win1255\": \"windows1255\",\n \"cp1255\": \"windows1255\",\n \"windows1256\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے\"\n },\n \"win1256\": \"windows1256\",\n \"cp1256\": \"windows1256\",\n \"windows1257\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙\"\n },\n \"win1257\": \"windows1257\",\n \"cp1257\": \"windows1257\",\n \"windows1258\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"win1258\": \"windows1258\",\n \"cp1258\": \"windows1258\",\n \"iso88591\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28591\": \"iso88591\",\n \"iso88592\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n },\n \"cp28592\": \"iso88592\",\n \"iso88593\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙\"\n },\n \"cp28593\": \"iso88593\",\n \"iso88594\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙\"\n },\n \"cp28594\": \"iso88594\",\n \"iso88595\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ\"\n },\n \"cp28595\": \"iso88595\",\n \"iso88596\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������\"\n },\n \"cp28596\": \"iso88596\",\n \"iso88597\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n },\n \"cp28597\": \"iso88597\",\n \"iso88598\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\"\n },\n \"cp28598\": \"iso88598\",\n \"iso88599\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n },\n \"cp28599\": \"iso88599\",\n \"iso885910\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ\"\n },\n \"cp28600\": \"iso885910\",\n \"iso885911\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"cp28601\": \"iso885911\",\n \"iso885913\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’\"\n },\n \"cp28603\": \"iso885913\",\n \"iso885914\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ\"\n },\n \"cp28604\": \"iso885914\",\n \"iso885915\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28605\": \"iso885915\",\n \"iso885916\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ\"\n },\n \"cp28606\": \"iso885916\",\n \"cp437\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm437\": \"cp437\",\n \"csibm437\": \"cp437\",\n \"cp737\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ \"\n },\n \"ibm737\": \"cp737\",\n \"csibm737\": \"cp737\",\n \"cp775\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£ØפĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ \"\n },\n \"ibm775\": \"cp775\",\n \"csibm775\": \"cp775\",\n \"cp850\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm850\": \"cp850\",\n \"csibm850\": \"cp850\",\n \"cp852\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ \"\n },\n \"ibm852\": \"cp852\",\n \"csibm852\": \"cp852\",\n \"cp855\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ \"\n },\n \"ibm855\": \"cp855\",\n \"csibm855\": \"cp855\",\n \"cp856\": {\n \"type\": \"_sbcs\",\n \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm856\": \"cp856\",\n \"csibm856\": \"cp856\",\n \"cp857\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm857\": \"cp857\",\n \"csibm857\": \"cp857\",\n \"cp858\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm858\": \"cp858\",\n \"csibm858\": \"cp858\",\n \"cp860\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm860\": \"cp860\",\n \"csibm860\": \"cp860\",\n \"cp861\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm861\": \"cp861\",\n \"csibm861\": \"cp861\",\n \"cp862\": {\n \"type\": \"_sbcs\",\n \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm862\": \"cp862\",\n \"csibm862\": \"cp862\",\n \"cp863\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm863\": \"cp863\",\n \"csibm863\": \"cp863\",\n \"cp864\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�\"\n },\n \"ibm864\": \"cp864\",\n \"csibm864\": \"cp864\",\n \"cp865\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm865\": \"cp865\",\n \"csibm865\": \"cp865\",\n \"cp866\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ \"\n },\n \"ibm866\": \"cp866\",\n \"csibm866\": \"cp866\",\n \"cp869\": {\n \"type\": \"_sbcs\",\n \"chars\": \"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ \"\n },\n \"ibm869\": \"cp869\",\n \"csibm869\": \"cp869\",\n \"cp922\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ\"\n },\n \"ibm922\": \"cp922\",\n \"csibm922\": \"cp922\",\n \"cp1046\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�\"\n },\n \"ibm1046\": \"cp1046\",\n \"csibm1046\": \"cp1046\",\n \"cp1124\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ\"\n },\n \"ibm1124\": \"cp1124\",\n \"csibm1124\": \"cp1124\",\n \"cp1125\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ \"\n },\n \"ibm1125\": \"cp1125\",\n \"csibm1125\": \"cp1125\",\n \"cp1129\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1129\": \"cp1129\",\n \"csibm1129\": \"cp1129\",\n \"cp1133\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�\"\n },\n \"ibm1133\": \"cp1133\",\n \"csibm1133\": \"cp1133\",\n \"cp1161\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ \"\n },\n \"ibm1161\": \"cp1161\",\n \"csibm1161\": \"cp1161\",\n \"cp1162\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"ibm1162\": \"cp1162\",\n \"csibm1162\": \"cp1162\",\n \"cp1163\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1163\": \"cp1163\",\n \"csibm1163\": \"cp1163\",\n \"maccroatian\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\"\n },\n \"maccyrillic\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n },\n \"macgreek\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�\"\n },\n \"maciceland\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macroman\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macromania\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macthai\": {\n \"type\": \"_sbcs\",\n \"chars\": \"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����\"\n },\n \"macturkish\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macukraine\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n },\n \"koi8r\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8u\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8ru\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8t\": {\n \"type\": \"_sbcs\",\n \"chars\": \"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"armscii8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�\"\n },\n \"rk1048\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"tcvn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000ÚỤ\\u0003ỪỬỮ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010ỨỰỲỶỸÝỴ\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ\"\n },\n \"georgianacademy\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"georgianps\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"pt154\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"viscii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001Ẳ\\u0003\\u0004ẴẪ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Ỷ\\u0015\\u0016\\u0017\\u0018Ỹ\\u001a\\u001b\\u001c\\u001dỴ\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ\"\n },\n \"iso646cn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"iso646jp\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"hproman8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�\"\n },\n \"macintosh\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"ascii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"tis620\": {\n \"type\": \"_sbcs\",\n \"chars\": \"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n }\n}\n\n/***/ }),\n\n/***/ 99900:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n // Not supported by iconv, not sure why.\n \"10029\": \"maccenteuro\",\n \"maccenteuro\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ\"\n },\n\n \"808\": \"cp808\",\n \"ibm808\": \"cp808\",\n \"cp808\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ \"\n },\n\n \"mik\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n\n \"cp720\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\x80\\x81éâ\\x84à\\x86çêëèïî\\x8d\\x8e\\x8f\\x90\\u0651\\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650≈°∙·√ⁿ²■\\u00a0\"\n },\n\n // Aliases of generated encodings.\n \"ascii8bit\": \"ascii\",\n \"usascii\": \"ascii\",\n \"ansix34\": \"ascii\",\n \"ansix341968\": \"ascii\",\n \"ansix341986\": \"ascii\",\n \"csascii\": \"ascii\",\n \"cp367\": \"ascii\",\n \"ibm367\": \"ascii\",\n \"isoir6\": \"ascii\",\n \"iso646us\": \"ascii\",\n \"iso646irv\": \"ascii\",\n \"us\": \"ascii\",\n\n \"latin1\": \"iso88591\",\n \"latin2\": \"iso88592\",\n \"latin3\": \"iso88593\",\n \"latin4\": \"iso88594\",\n \"latin5\": \"iso88599\",\n \"latin6\": \"iso885910\",\n \"latin7\": \"iso885913\",\n \"latin8\": \"iso885914\",\n \"latin9\": \"iso885915\",\n \"latin10\": \"iso885916\",\n\n \"csisolatin1\": \"iso88591\",\n \"csisolatin2\": \"iso88592\",\n \"csisolatin3\": \"iso88593\",\n \"csisolatin4\": \"iso88594\",\n \"csisolatincyrillic\": \"iso88595\",\n \"csisolatinarabic\": \"iso88596\",\n \"csisolatingreek\" : \"iso88597\",\n \"csisolatinhebrew\": \"iso88598\",\n \"csisolatin5\": \"iso88599\",\n \"csisolatin6\": \"iso885910\",\n\n \"l1\": \"iso88591\",\n \"l2\": \"iso88592\",\n \"l3\": \"iso88593\",\n \"l4\": \"iso88594\",\n \"l5\": \"iso88599\",\n \"l6\": \"iso885910\",\n \"l7\": \"iso885913\",\n \"l8\": \"iso885914\",\n \"l9\": \"iso885915\",\n \"l10\": \"iso885916\",\n\n \"isoir14\": \"iso646jp\",\n \"isoir57\": \"iso646cn\",\n \"isoir100\": \"iso88591\",\n \"isoir101\": \"iso88592\",\n \"isoir109\": \"iso88593\",\n \"isoir110\": \"iso88594\",\n \"isoir144\": \"iso88595\",\n \"isoir127\": \"iso88596\",\n \"isoir126\": \"iso88597\",\n \"isoir138\": \"iso88598\",\n \"isoir148\": \"iso88599\",\n \"isoir157\": \"iso885910\",\n \"isoir166\": \"tis620\",\n \"isoir179\": \"iso885913\",\n \"isoir199\": \"iso885914\",\n \"isoir203\": \"iso885915\",\n \"isoir226\": \"iso885916\",\n\n \"cp819\": \"iso88591\",\n \"ibm819\": \"iso88591\",\n\n \"cyrillic\": \"iso88595\",\n\n \"arabic\": \"iso88596\",\n \"arabic8\": \"iso88596\",\n \"ecma114\": \"iso88596\",\n \"asmo708\": \"iso88596\",\n\n \"greek\" : \"iso88597\",\n \"greek8\" : \"iso88597\",\n \"ecma118\" : \"iso88597\",\n \"elot928\" : \"iso88597\",\n\n \"hebrew\": \"iso88598\",\n \"hebrew8\": \"iso88598\",\n\n \"turkish\": \"iso88599\",\n \"turkish8\": \"iso88599\",\n\n \"thai\": \"iso885911\",\n \"thai8\": \"iso885911\",\n\n \"celtic\": \"iso885914\",\n \"celtic8\": \"iso885914\",\n \"isoceltic\": \"iso885914\",\n\n \"tis6200\": \"tis620\",\n \"tis62025291\": \"tis620\",\n \"tis62025330\": \"tis620\",\n\n \"10000\": \"macroman\",\n \"10006\": \"macgreek\",\n \"10007\": \"maccyrillic\",\n \"10079\": \"maciceland\",\n \"10081\": \"macturkish\",\n\n \"cspc8codepage437\": \"cp437\",\n \"cspc775baltic\": \"cp775\",\n \"cspc850multilingual\": \"cp850\",\n \"cspcp852\": \"cp852\",\n \"cspc862latinhebrew\": \"cp862\",\n \"cpgr\": \"cp869\",\n\n \"msee\": \"cp1250\",\n \"mscyrl\": \"cp1251\",\n \"msansi\": \"cp1252\",\n \"msgreek\": \"cp1253\",\n \"msturk\": \"cp1254\",\n \"mshebr\": \"cp1255\",\n \"msarab\": \"cp1256\",\n \"winbaltrim\": \"cp1257\",\n\n \"cp20866\": \"koi8r\",\n \"20866\": \"koi8r\",\n \"ibm878\": \"koi8r\",\n \"cskoi8r\": \"koi8r\",\n\n \"cp21866\": \"koi8u\",\n \"21866\": \"koi8u\",\n \"ibm1168\": \"koi8u\",\n\n \"strk10482002\": \"rk1048\",\n\n \"tcvn5712\": \"tcvn\",\n \"tcvn57121\": \"tcvn\",\n\n \"gb198880\": \"iso646cn\",\n \"cn\": \"iso646cn\",\n\n \"csiso14jisc6220ro\": \"iso646jp\",\n \"jisc62201969ro\": \"iso646jp\",\n \"jp\": \"iso646jp\",\n\n \"cshproman8\": \"hproman8\",\n \"r8\": \"hproman8\",\n \"roman8\": \"hproman8\",\n \"xroman8\": \"hproman8\",\n \"ibm1051\": \"hproman8\",\n\n \"mac\": \"macintosh\",\n \"csmacintosh\": \"macintosh\",\n};\n\n\n\n/***/ }),\n\n/***/ 17100:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar Buffer = (__webpack_require__(16696).Buffer);\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n var buf = Buffer.from(str, 'ucs2');\n for (var i = 0; i < buf.length; i += 2) {\n var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n }\n return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n if (buf.length == 0)\n return '';\n\n var buf2 = Buffer.alloc(buf.length + 1),\n i = 0, j = 0;\n\n if (this.overflowByte !== -1) {\n buf2[0] = buf[0];\n buf2[1] = this.overflowByte;\n i = 1; j = 2;\n }\n\n for (; i < buf.length-1; i += 2, j+= 2) {\n buf2[j] = buf[i+1];\n buf2[j+1] = buf[i];\n }\n\n this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n this.overflowByte = -1;\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n options = options || {};\n if (options.addBOM === undefined)\n options.addBOM = true;\n this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n this.decoder = null;\n this.initialBufs = [];\n this.initialBufsLen = 0;\n\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBufs.push(buf);\n this.initialBufsLen += buf.length;\n \n if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n if (!this.decoder) {\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n var trail = this.decoder.end();\n if (trail)\n resStr += trail;\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n return this.decoder.end();\n}\n\nfunction detectEncoding(bufs, defaultEncoding) {\n var b = [];\n var charsProcessed = 0;\n var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE.\n\n outer_loop:\n for (var i = 0; i < bufs.length; i++) {\n var buf = bufs[i];\n for (var j = 0; j < buf.length; j++) {\n b.push(buf[j]);\n if (b.length === 2) {\n if (charsProcessed === 0) {\n // Check BOM first.\n if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le';\n if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be';\n }\n\n if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;\n if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;\n\n b.length = 0;\n charsProcessed++;\n\n if (charsProcessed >= 100) {\n break outer_loop;\n }\n }\n }\n }\n\n // Make decisions.\n // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n // So, we count ASCII as if it was LE or BE, and decide from that.\n if (asciiCharsBE > asciiCharsLE) return 'utf-16be';\n if (asciiCharsBE < asciiCharsLE) return 'utf-16le';\n\n // Couldn't decide (likely all zeros or not enough data).\n return defaultEncoding || 'utf-16le';\n}\n\n\n\n\n/***/ }),\n\n/***/ 24162:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Buffer = (__webpack_require__(16696).Buffer);\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec;\n\nfunction Utf32Codec(codecOptions, iconv) {\n this.iconv = iconv;\n this.bomAware = true;\n this.isLE = codecOptions.isLE;\n}\n\nexports.utf32le = { type: '_utf32', isLE: true };\nexports.utf32be = { type: '_utf32', isLE: false };\n\n// Aliases\nexports.ucs4le = 'utf32le';\nexports.ucs4be = 'utf32be';\n\nUtf32Codec.prototype.encoder = Utf32Encoder;\nUtf32Codec.prototype.decoder = Utf32Decoder;\n\n// -- Encoding\n\nfunction Utf32Encoder(options, codec) {\n this.isLE = codec.isLE;\n this.highSurrogate = 0;\n}\n\nUtf32Encoder.prototype.write = function(str) {\n var src = Buffer.from(str, 'ucs2');\n var dst = Buffer.alloc(src.length * 2);\n var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;\n var offset = 0;\n\n for (var i = 0; i < src.length; i += 2) {\n var code = src.readUInt16LE(i);\n var isHighSurrogate = (0xD800 <= code && code < 0xDC00);\n var isLowSurrogate = (0xDC00 <= code && code < 0xE000);\n\n if (this.highSurrogate) {\n if (isHighSurrogate || !isLowSurrogate) {\n // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n // (technically wrong, but expected by some applications, like Windows file names).\n write32.call(dst, this.highSurrogate, offset);\n offset += 4;\n }\n else {\n // Create 32-bit value from high and low surrogates;\n var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;\n\n write32.call(dst, codepoint, offset);\n offset += 4;\n this.highSurrogate = 0;\n\n continue;\n }\n }\n\n if (isHighSurrogate)\n this.highSurrogate = code;\n else {\n // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n // unpaired high surrogates.\n write32.call(dst, code, offset);\n offset += 4;\n this.highSurrogate = 0;\n }\n }\n\n if (offset < dst.length)\n dst = dst.slice(0, offset);\n\n return dst;\n};\n\nUtf32Encoder.prototype.end = function() {\n // Treat any leftover high surrogate as a semi-valid independent character.\n if (!this.highSurrogate)\n return;\n\n var buf = Buffer.alloc(4);\n\n if (this.isLE)\n buf.writeUInt32LE(this.highSurrogate, 0);\n else\n buf.writeUInt32BE(this.highSurrogate, 0);\n\n this.highSurrogate = 0;\n\n return buf;\n};\n\n// -- Decoding\n\nfunction Utf32Decoder(options, codec) {\n this.isLE = codec.isLE;\n this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);\n this.overflow = [];\n}\n\nUtf32Decoder.prototype.write = function(src) {\n if (src.length === 0)\n return '';\n\n var i = 0;\n var codepoint = 0;\n var dst = Buffer.alloc(src.length + 4);\n var offset = 0;\n var isLE = this.isLE;\n var overflow = this.overflow;\n var badChar = this.badChar;\n\n if (overflow.length > 0) {\n for (; i < src.length && overflow.length < 4; i++)\n overflow.push(src[i]);\n \n if (overflow.length === 4) {\n // NOTE: codepoint is a signed int32 and can be negative.\n // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).\n if (isLE) {\n codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24);\n } else {\n codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24);\n }\n overflow.length = 0;\n\n offset = _writeCodepoint(dst, offset, codepoint, badChar);\n }\n }\n\n // Main loop. Should be as optimized as possible.\n for (; i < src.length - 3; i += 4) {\n // NOTE: codepoint is a signed int32 and can be negative.\n if (isLE) {\n codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24);\n } else {\n codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24);\n }\n offset = _writeCodepoint(dst, offset, codepoint, badChar);\n }\n\n // Keep overflowing bytes.\n for (; i < src.length; i++) {\n overflow.push(src[i]);\n }\n\n return dst.slice(0, offset).toString('ucs2');\n};\n\nfunction _writeCodepoint(dst, offset, codepoint, badChar) {\n // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.\n if (codepoint < 0 || codepoint > 0x10FFFF) {\n // Not a valid Unicode codepoint\n codepoint = badChar;\n } \n\n // Ephemeral Planes: Write high surrogate.\n if (codepoint >= 0x10000) {\n codepoint -= 0x10000;\n\n var high = 0xD800 | (codepoint >> 10);\n dst[offset++] = high & 0xff;\n dst[offset++] = high >> 8;\n\n // Low surrogate is written below.\n var codepoint = 0xDC00 | (codepoint & 0x3FF);\n }\n\n // Write BMP char or low surrogate.\n dst[offset++] = codepoint & 0xff;\n dst[offset++] = codepoint >> 8;\n\n return offset;\n};\n\nUtf32Decoder.prototype.end = function() {\n this.overflow.length = 0;\n};\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec;\nexports.ucs4 = 'utf32';\n\nfunction Utf32AutoCodec(options, iconv) {\n this.iconv = iconv;\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder;\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder;\n\n// -- Encoding\n\nfunction Utf32AutoEncoder(options, codec) {\n options = options || {};\n\n if (options.addBOM === undefined)\n options.addBOM = true;\n\n this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);\n}\n\nUtf32AutoEncoder.prototype.write = function(str) {\n return this.encoder.write(str);\n};\n\nUtf32AutoEncoder.prototype.end = function() {\n return this.encoder.end();\n};\n\n// -- Decoding\n\nfunction Utf32AutoDecoder(options, codec) {\n this.decoder = null;\n this.initialBufs = [];\n this.initialBufsLen = 0;\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf32AutoDecoder.prototype.write = function(buf) {\n if (!this.decoder) { \n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBufs.push(buf);\n this.initialBufsLen += buf.length;\n\n if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.write(buf);\n};\n\nUtf32AutoDecoder.prototype.end = function() {\n if (!this.decoder) {\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n var trail = this.decoder.end();\n if (trail)\n resStr += trail;\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.end();\n};\n\nfunction detectEncoding(bufs, defaultEncoding) {\n var b = [];\n var charsProcessed = 0;\n var invalidLE = 0, invalidBE = 0; // Number of invalid chars when decoded as LE or BE.\n var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE.\n\n outer_loop:\n for (var i = 0; i < bufs.length; i++) {\n var buf = bufs[i];\n for (var j = 0; j < buf.length; j++) {\n b.push(buf[j]);\n if (b.length === 4) {\n if (charsProcessed === 0) {\n // Check BOM first.\n if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {\n return 'utf-32le';\n }\n if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {\n return 'utf-32be';\n }\n }\n\n if (b[0] !== 0 || b[1] > 0x10) invalidBE++;\n if (b[3] !== 0 || b[2] > 0x10) invalidLE++;\n\n if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;\n if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;\n\n b.length = 0;\n charsProcessed++;\n\n if (charsProcessed >= 100) {\n break outer_loop;\n }\n }\n }\n }\n\n // Make decisions.\n if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return 'utf-32be';\n if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return 'utf-32le';\n\n // Couldn't decide (likely all zeros or not enough data).\n return defaultEncoding || 'utf-32le';\n}\n\n\n/***/ }),\n\n/***/ 11326:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar Buffer = (__webpack_require__(16696).Buffer);\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n // Naive implementation.\n // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n return \"+\" + (chunk === '+' ? '' : \n this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n + \"-\";\n }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n minusChar = '-'.charCodeAt(0),\n andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '+'\n if (buf[i] == plusChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64Chars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n res += \"+\";\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\");\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus is absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\");\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n// * Base64 part is started by \"&\" instead of \"+\"\n// * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n// * In Base64, \",\" is used instead of \"/\"\n// * Base64 must not be used to represent direct characters.\n// * No implicit shift back from Base64 (should always end with '-')\n// * String must end in non-shifted position.\n// * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = Buffer.alloc(6);\n this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n var inBase64 = this.inBase64,\n base64Accum = this.base64Accum,\n base64AccumIdx = this.base64AccumIdx,\n buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n for (var i = 0; i < str.length; i++) {\n var uChar = str.charCodeAt(i);\n if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n if (inBase64) {\n if (base64AccumIdx > 0) {\n bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n inBase64 = false;\n }\n\n if (!inBase64) {\n buf[bufIdx++] = uChar; // Write direct character\n\n if (uChar === andChar) // Ampersand -> '&-'\n buf[bufIdx++] = minusChar;\n }\n\n } else { // Non-direct character\n if (!inBase64) {\n buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n inBase64 = true;\n }\n if (inBase64) {\n base64Accum[base64AccumIdx++] = uChar >> 8;\n base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n if (base64AccumIdx == base64Accum.length) {\n bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n base64AccumIdx = 0;\n }\n }\n }\n }\n\n this.inBase64 = inBase64;\n this.base64AccumIdx = base64AccumIdx;\n\n return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n var buf = Buffer.alloc(10), bufIdx = 0;\n if (this.inBase64) {\n if (this.base64AccumIdx > 0) {\n bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n this.base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n this.inBase64 = false;\n }\n\n return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '&'\n if (buf[i] == andChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n res += \"&\";\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\").replace(/,/g, '/');\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus may be absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\").replace(/,/g, '/');\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n\n\n/***/ }),\n\n/***/ 52331:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n this.encoder = encoder;\n this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n if (this.addBOM) {\n str = BOMChar + str;\n this.addBOM = false;\n }\n\n return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n this.decoder = decoder;\n this.pass = false;\n this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n var res = this.decoder.write(buf);\n if (this.pass || !res)\n return res;\n\n if (res[0] === BOMChar) {\n res = res.slice(1);\n if (typeof this.options.stripBOM === 'function')\n this.options.stripBOM();\n }\n\n this.pass = true;\n return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n return this.decoder.end();\n}\n\n\n\n/***/ }),\n\n/***/ 54171:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Buffer = (__webpack_require__(16696).Buffer);\n\nvar bomHandling = __webpack_require__(52331),\n iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '�';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n str = \"\" + (str || \"\"); // Ensure string.\n\n var encoder = iconv.getEncoder(encoding, options);\n\n var res = encoder.write(str);\n var trail = encoder.end();\n \n return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n if (typeof buf === 'string') {\n if (!iconv.skipDecodeWarning) {\n console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n iconv.skipDecodeWarning = true;\n }\n\n buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n }\n\n var decoder = iconv.getDecoder(encoding, options);\n\n var res = decoder.write(buf);\n var trail = decoder.end();\n\n return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n try {\n iconv.getCodec(enc);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n if (!iconv.encodings)\n iconv.encodings = __webpack_require__(26326); // Lazy load all encoding definitions.\n \n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n var enc = iconv._canonicalizeEncoding(encoding);\n\n // Traverse iconv.encodings to find actual codec.\n var codecOptions = {};\n while (true) {\n var codec = iconv._codecDataCache[enc];\n if (codec)\n return codec;\n\n var codecDef = iconv.encodings[enc];\n\n switch (typeof codecDef) {\n case \"string\": // Direct alias to other encoding.\n enc = codecDef;\n break;\n\n case \"object\": // Alias with options. Can be layered.\n for (var key in codecDef)\n codecOptions[key] = codecDef[key];\n\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n \n enc = codecDef.type;\n break;\n\n case \"function\": // Codec itself.\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n\n // The codec function must load all tables and return object with .encoder and .decoder methods.\n // It'll be called only once (for each different options object).\n codec = new codecDef(codecOptions, iconv);\n\n iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n return codec;\n\n default:\n throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n }\n }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n encoder = new codec.encoder(options, codec);\n\n if (codec.bomAware && options && options.addBOM)\n encoder = new bomHandling.PrependBOM(encoder, options);\n\n return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n decoder = new codec.decoder(options, codec);\n\n if (codec.bomAware && !(options && options.stripBOM === false))\n decoder = new bomHandling.StripBOM(decoder, options);\n\n return decoder;\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require('stream'));\niconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {\n if (iconv.supportsStreams)\n return;\n\n // Dependency-inject stream module to create IconvLite stream classes.\n var streams = __webpack_require__(34506)(stream_module);\n\n // Not public API yet, but expose the stream classes.\n iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;\n iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;\n\n // Streaming API.\n iconv.encodeStream = function encodeStream(encoding, options) {\n return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n }\n\n iconv.decodeStream = function decodeStream(encoding, options) {\n return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n }\n\n iconv.supportsStreams = true;\n}\n\n// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).\nvar stream_module;\ntry {\n stream_module = __webpack_require__(16403);\n} catch (e) {}\n\nif (stream_module && stream_module.Transform) {\n iconv.enableStreamingAPI(stream_module);\n\n} else {\n // In rare cases where 'stream' module is not available by default, throw a helpful exception.\n iconv.encodeStream = iconv.decodeStream = function() {\n throw new Error(\"iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.\");\n };\n}\n\nif (false) {}\n\n\n/***/ }),\n\n/***/ 34506:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Buffer = (__webpack_require__(16696).Buffer);\n\n// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), \n// we opt to dependency-inject it instead of creating a hard dependency.\nmodule.exports = function(stream_module) {\n var Transform = stream_module.Transform;\n\n // == Encoder stream =======================================================\n\n function IconvLiteEncoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n Transform.call(this, options);\n }\n\n IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteEncoderStream }\n });\n\n IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n if (typeof chunk != 'string')\n return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteEncoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteEncoderStream.prototype.collect = function(cb) {\n var chunks = [];\n this.on('error', cb);\n this.on('data', function(chunk) { chunks.push(chunk); });\n this.on('end', function() {\n cb(null, Buffer.concat(chunks));\n });\n return this;\n }\n\n\n // == Decoder stream =======================================================\n\n function IconvLiteDecoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.encoding = this.encoding = 'utf8'; // We output strings.\n Transform.call(this, options);\n }\n\n IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteDecoderStream }\n });\n\n IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array))\n return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res, this.encoding);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteDecoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res, this.encoding); \n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteDecoderStream.prototype.collect = function(cb) {\n var res = '';\n this.on('error', cb);\n this.on('data', function(chunk) { res += chunk; });\n this.on('end', function() {\n cb(null, res);\n });\n return this;\n }\n\n return {\n IconvLiteEncoderStream: IconvLiteEncoderStream,\n IconvLiteDecoderStream: IconvLiteDecoderStream,\n };\n};\n\n\n/***/ }),\n\n/***/ 89029:\n/***/ (function(__unused_webpack_module, exports) {\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n/***/ }),\n\n/***/ 89784:\n/***/ (function(module) {\n\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n\n/***/ }),\n\n/***/ 67906:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar hasToStringTag = __webpack_require__(26626)();\nvar callBound = __webpack_require__(67913);\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n\n\n/***/ }),\n\n/***/ 3746:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n\n\n/***/ }),\n\n/***/ 71230:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = __webpack_require__(26626)();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n\n\n/***/ }),\n\n/***/ 44610:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = __webpack_require__(26626)();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n\n\n/***/ }),\n\n/***/ 82621:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n\n\n/***/ }),\n\n/***/ 7051:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar callBind = __webpack_require__(26601);\nvar define = __webpack_require__(77802);\n\nvar implementation = __webpack_require__(82621);\nvar getPolyfill = __webpack_require__(61320);\nvar shim = __webpack_require__(35074);\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n\n\n/***/ }),\n\n/***/ 61320:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar implementation = __webpack_require__(82621);\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n\n\n/***/ }),\n\n/***/ 35074:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(77802);\nvar getPolyfill = __webpack_require__(61320);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n\n\n/***/ }),\n\n/***/ 71689:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar callBound = __webpack_require__(67913);\nvar hasToStringTag = __webpack_require__(26626)();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n\n\n/***/ }),\n\n/***/ 46094:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar whichTypedArray = __webpack_require__(43381);\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n\n\n/***/ }),\n\n/***/ 63249:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n\n\n/***/ }),\n\n/***/ 98527:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(77802);\nvar callBind = __webpack_require__(26601);\n\nvar implementation = __webpack_require__(63249);\nvar getPolyfill = __webpack_require__(89636);\nvar shim = __webpack_require__(3534);\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n\n\n/***/ }),\n\n/***/ 89636:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar implementation = __webpack_require__(63249);\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n\n\n/***/ }),\n\n/***/ 3534:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getPolyfill = __webpack_require__(89636);\nvar define = __webpack_require__(77802);\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n\n\n/***/ }),\n\n/***/ 48461:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = __webpack_require__(76515); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n\n\n/***/ }),\n\n/***/ 35643:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar slice = Array.prototype.slice;\nvar isArgs = __webpack_require__(76515);\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(48461);\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n\n/***/ }),\n\n/***/ 76515:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n\n/***/ }),\n\n/***/ 36521:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = __webpack_require__(35643);\nvar hasSymbols = __webpack_require__(12843)();\nvar callBound = __webpack_require__(67913);\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = toObject(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = toObject(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n\n\n/***/ }),\n\n/***/ 37596:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar implementation = __webpack_require__(36521);\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n\n\n/***/ }),\n\n/***/ 72519:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n\n\n/***/ }),\n\n/***/ 46911:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n\n\n/***/ }),\n\n/***/ 81607:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n\n\n/***/ }),\n\n/***/ 99049:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n\n\n/***/ }),\n\n/***/ 22925:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = __webpack_require__(72519);\nvar trees = __webpack_require__(22367);\nvar adler32 = __webpack_require__(46911);\nvar crc32 = __webpack_require__(99049);\nvar msg = __webpack_require__(56228);\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n\n/***/ }),\n\n/***/ 96395:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n\n/***/ }),\n\n/***/ 2269:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = __webpack_require__(72519);\nvar adler32 = __webpack_require__(46911);\nvar crc32 = __webpack_require__(99049);\nvar inflate_fast = __webpack_require__(96395);\nvar inflate_table = __webpack_require__(92920);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n\n/***/ }),\n\n/***/ 92920:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = __webpack_require__(72519);\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\n/***/ }),\n\n/***/ 56228:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n\n/***/ }),\n\n/***/ 22367:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = __webpack_require__(72519);\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n // \"inconsistent bit counts\");\n //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n for (n = 0; n <= max_code; n++) {\n var len = tree[n * 2 + 1]/*.Len*/;\n if (len === 0) { continue; }\n /* Now reverse the bits */\n tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n // n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n }\n}\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nfunction tr_static_init() {\n var n; /* iterates over tree elements */\n var bits; /* bit counter */\n var length; /* length value */\n var code; /* code value */\n var dist; /* distance index */\n var bl_count = new Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n\n\n/***/ }),\n\n/***/ 37468:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n\n\n/***/ }),\n\n/***/ 10884:\n/***/ (function(module) {\n\n\"use strict\";\n\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n\n\n/***/ }),\n\n/***/ 9964:\n/***/ (function(module) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n\n/***/ 83089:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar setFunctionName = __webpack_require__(95304);\nvar $TypeError = __webpack_require__(96785);\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n\n\n/***/ }),\n\n/***/ 64607:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(77802);\nvar callBind = __webpack_require__(26601);\n\nvar implementation = __webpack_require__(83089);\nvar getPolyfill = __webpack_require__(7844);\nvar shim = __webpack_require__(51374);\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n\n\n/***/ }),\n\n/***/ 7844:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar implementation = __webpack_require__(83089);\n\nvar supportsDescriptors = (__webpack_require__(77802).supportsDescriptors);\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n\n\n/***/ }),\n\n/***/ 51374:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar supportsDescriptors = (__webpack_require__(77802).supportsDescriptors);\nvar getPolyfill = __webpack_require__(7844);\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n\n\n/***/ }),\n\n/***/ 61733:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n;(function (sax) { // wrapper for non-node envs\n sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n 'procInstName', 'procInstBody', 'entity', 'attribName',\n 'attribValue', 'cdata', 'script'\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace'\n ]\n\n function SAXParser (strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F () {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers (parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers (parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () { end(this) },\n write: write,\n resume: function () { this.error = null; return this },\n close: function () { return this.write(null) },\n flush: function () { flushBuffers(this) }\n }\n\n var Stream\n try {\n Stream = (__webpack_require__(9760).Stream)\n } catch (ex) {\n Stream = function () {}\n }\n if (!Stream) Stream = function () {}\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream (strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function SAXStream (strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n })\n\n SAXStream.prototype.write = function (data) {\n if (typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = (__webpack_require__(43143)/* .StringDecoder */ .I)\n this._decoder = new SD('utf8')\n }\n data = this._decoder.write(data)\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATA = '[CDATA['\n var DOCTYPE = 'DOCTYPE'\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace (c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote (c) {\n return c === '\"' || c === '\\''\n }\n\n function isAttribEnd (c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch (regex, c) {\n return regex.test(c)\n }\n\n function notMatch (regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // & and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // <!BLARG\n SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n DOCTYPE: S++, // <!DOCTYPE\n DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n COMMENT_STARTING: S++, // <!-\n COMMENT: S++, // <!--\n COMMENT_ENDING: S++, // <!-- blah -\n COMMENT_ENDED: S++, // <!-- blah --\n CDATA: S++, // <![CDATA[ something\n CDATA_ENDING: S++, // ]\n CDATA_ENDING_2: S++, // ]]\n PROC_INST: S++, // <?hi\n PROC_INST_BODY: S++, // <?hi there\n PROC_INST_ENDING: S++, // <?hi \"there\" ?\n OPEN_TAG: S++, // <strong\n OPEN_TAG_SLASH: S++, // <strong /\n ATTRIB: S++, // <a\n ATTRIB_NAME: S++, // <a foo\n ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n ATTRIB_VALUE: S++, // <a foo=\n ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\""\"\n ATTRIB_VALUE_ENTITY_U: S++, // <foo bar="\n CLOSE_TAG: S++, // </a\n CLOSE_TAG_SAW_WHITE: S++, // </a >\n SCRIPT: S++, // <script> ...\n SCRIPT_ENDING: S++ // <script> ... <\n }\n\n sax.XML_ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\"\n }\n\n sax.ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\",\n 'AElig': 198,\n 'Aacute': 193,\n 'Acirc': 194,\n 'Agrave': 192,\n 'Aring': 197,\n 'Atilde': 195,\n 'Auml': 196,\n 'Ccedil': 199,\n 'ETH': 208,\n 'Eacute': 201,\n 'Ecirc': 202,\n 'Egrave': 200,\n 'Euml': 203,\n 'Iacute': 205,\n 'Icirc': 206,\n 'Igrave': 204,\n 'Iuml': 207,\n 'Ntilde': 209,\n 'Oacute': 211,\n 'Ocirc': 212,\n 'Ograve': 210,\n 'Oslash': 216,\n 'Otilde': 213,\n 'Ouml': 214,\n 'THORN': 222,\n 'Uacute': 218,\n 'Ucirc': 219,\n 'Ugrave': 217,\n 'Uuml': 220,\n 'Yacute': 221,\n 'aacute': 225,\n 'acirc': 226,\n 'aelig': 230,\n 'agrave': 224,\n 'aring': 229,\n 'atilde': 227,\n 'auml': 228,\n 'ccedil': 231,\n 'eacute': 233,\n 'ecirc': 234,\n 'egrave': 232,\n 'eth': 240,\n 'euml': 235,\n 'iacute': 237,\n 'icirc': 238,\n 'igrave': 236,\n 'iuml': 239,\n 'ntilde': 241,\n 'oacute': 243,\n 'ocirc': 244,\n 'ograve': 242,\n 'oslash': 248,\n 'otilde': 245,\n 'ouml': 246,\n 'szlig': 223,\n 'thorn': 254,\n 'uacute': 250,\n 'ucirc': 251,\n 'ugrave': 249,\n 'uuml': 252,\n 'yacute': 253,\n 'yuml': 255,\n 'copy': 169,\n 'reg': 174,\n 'nbsp': 160,\n 'iexcl': 161,\n 'cent': 162,\n 'pound': 163,\n 'curren': 164,\n 'yen': 165,\n 'brvbar': 166,\n 'sect': 167,\n 'uml': 168,\n 'ordf': 170,\n 'laquo': 171,\n 'not': 172,\n 'shy': 173,\n 'macr': 175,\n 'deg': 176,\n 'plusmn': 177,\n 'sup1': 185,\n 'sup2': 178,\n 'sup3': 179,\n 'acute': 180,\n 'micro': 181,\n 'para': 182,\n 'middot': 183,\n 'cedil': 184,\n 'ordm': 186,\n 'raquo': 187,\n 'frac14': 188,\n 'frac12': 189,\n 'frac34': 190,\n 'iquest': 191,\n 'times': 215,\n 'divide': 247,\n 'OElig': 338,\n 'oelig': 339,\n 'Scaron': 352,\n 'scaron': 353,\n 'Yuml': 376,\n 'fnof': 402,\n 'circ': 710,\n 'tilde': 732,\n 'Alpha': 913,\n 'Beta': 914,\n 'Gamma': 915,\n 'Delta': 916,\n 'Epsilon': 917,\n 'Zeta': 918,\n 'Eta': 919,\n 'Theta': 920,\n 'Iota': 921,\n 'Kappa': 922,\n 'Lambda': 923,\n 'Mu': 924,\n 'Nu': 925,\n 'Xi': 926,\n 'Omicron': 927,\n 'Pi': 928,\n 'Rho': 929,\n 'Sigma': 931,\n 'Tau': 932,\n 'Upsilon': 933,\n 'Phi': 934,\n 'Chi': 935,\n 'Psi': 936,\n 'Omega': 937,\n 'alpha': 945,\n 'beta': 946,\n 'gamma': 947,\n 'delta': 948,\n 'epsilon': 949,\n 'zeta': 950,\n 'eta': 951,\n 'theta': 952,\n 'iota': 953,\n 'kappa': 954,\n 'lambda': 955,\n 'mu': 956,\n 'nu': 957,\n 'xi': 958,\n 'omicron': 959,\n 'pi': 960,\n 'rho': 961,\n 'sigmaf': 962,\n 'sigma': 963,\n 'tau': 964,\n 'upsilon': 965,\n 'phi': 966,\n 'chi': 967,\n 'psi': 968,\n 'omega': 969,\n 'thetasym': 977,\n 'upsih': 978,\n 'piv': 982,\n 'ensp': 8194,\n 'emsp': 8195,\n 'thinsp': 8201,\n 'zwnj': 8204,\n 'zwj': 8205,\n 'lrm': 8206,\n 'rlm': 8207,\n 'ndash': 8211,\n 'mdash': 8212,\n 'lsquo': 8216,\n 'rsquo': 8217,\n 'sbquo': 8218,\n 'ldquo': 8220,\n 'rdquo': 8221,\n 'bdquo': 8222,\n 'dagger': 8224,\n 'Dagger': 8225,\n 'bull': 8226,\n 'hellip': 8230,\n 'permil': 8240,\n 'prime': 8242,\n 'Prime': 8243,\n 'lsaquo': 8249,\n 'rsaquo': 8250,\n 'oline': 8254,\n 'frasl': 8260,\n 'euro': 8364,\n 'image': 8465,\n 'weierp': 8472,\n 'real': 8476,\n 'trade': 8482,\n 'alefsym': 8501,\n 'larr': 8592,\n 'uarr': 8593,\n 'rarr': 8594,\n 'darr': 8595,\n 'harr': 8596,\n 'crarr': 8629,\n 'lArr': 8656,\n 'uArr': 8657,\n 'rArr': 8658,\n 'dArr': 8659,\n 'hArr': 8660,\n 'forall': 8704,\n 'part': 8706,\n 'exist': 8707,\n 'empty': 8709,\n 'nabla': 8711,\n 'isin': 8712,\n 'notin': 8713,\n 'ni': 8715,\n 'prod': 8719,\n 'sum': 8721,\n 'minus': 8722,\n 'lowast': 8727,\n 'radic': 8730,\n 'prop': 8733,\n 'infin': 8734,\n 'ang': 8736,\n 'and': 8743,\n 'or': 8744,\n 'cap': 8745,\n 'cup': 8746,\n 'int': 8747,\n 'there4': 8756,\n 'sim': 8764,\n 'cong': 8773,\n 'asymp': 8776,\n 'ne': 8800,\n 'equiv': 8801,\n 'le': 8804,\n 'ge': 8805,\n 'sub': 8834,\n 'sup': 8835,\n 'nsub': 8836,\n 'sube': 8838,\n 'supe': 8839,\n 'oplus': 8853,\n 'otimes': 8855,\n 'perp': 8869,\n 'sdot': 8901,\n 'lceil': 8968,\n 'rceil': 8969,\n 'lfloor': 8970,\n 'rfloor': 8971,\n 'lang': 9001,\n 'rang': 9002,\n 'loz': 9674,\n 'spades': 9824,\n 'clubs': 9827,\n 'hearts': 9829,\n 'diams': 9830\n }\n\n Object.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n })\n\n for (var s in sax.STATE) {\n sax.STATE[sax.STATE[s]] = s\n }\n\n // shorthand\n S = sax.STATE\n\n function emit (parser, event, data) {\n parser[event] && parser[event](data)\n }\n\n function emitNode (parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n }\n\n function closeText (parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n parser.textNode = ''\n }\n\n function textopts (opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n return text\n }\n\n function error (parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er += '\\nLine: ' + parser.line +\n '\\nColumn: ' + parser.column +\n '\\nChar: ' + parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, 'onerror', er)\n return parser\n }\n\n function end (parser) {\n if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')\n if ((parser.state !== S.BEGIN) &&\n (parser.state !== S.BEGIN_WHITESPACE) &&\n (parser.state !== S.TEXT)) {\n error(parser, 'Unexpected end')\n }\n closeText(parser)\n parser.c = ''\n parser.closed = true\n emit(parser, 'onend')\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n }\n\n function strictFail (parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n throw new Error('bad call to strictFail')\n }\n if (parser.strict) {\n error(parser, message)\n }\n }\n\n function newTag (parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n var tag = parser.tag = { name: parser.tagName, attributes: {} }\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) {\n tag.ns = parent.ns\n }\n parser.attribList.length = 0\n emitNode(parser, 'onopentagstart', tag)\n }\n\n function qname (name, attribute) {\n var i = name.indexOf(':')\n var qualName = i < 0 ? [ '', name ] : name.split(':')\n var prefix = qualName[0]\n var local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === 'xmlns') {\n prefix = 'xmlns'\n local = ''\n }\n\n return { prefix: prefix, local: local }\n }\n\n function attrib (parser) {\n if (!parser.strict) {\n parser.attribName = parser.attribName[parser.looseCase]()\n }\n\n if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n parser.attribName = parser.attribValue = ''\n return\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n var prefix = qn.prefix\n var local = qn.local\n\n if (prefix === 'xmlns') {\n // namespace binding attribute. push the binding into scope\n if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n strictFail(parser,\n 'xml: prefix must be bound to ' + XML_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {\n strictFail(parser,\n 'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else {\n var tag = parser.tag\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect. preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: parser.attribValue\n })\n }\n\n parser.attribName = parser.attribValue = ''\n }\n\n function openTag (parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || ''\n\n if (tag.prefix && !tag.uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(parser.tagName))\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode(parser, 'onopennamespace', {\n prefix: p,\n uri: tag.ns[p]\n })\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n var value = nv[1]\n var qualName = qname(name, true)\n var prefix = qualName.prefix\n var local = qualName.local\n var uri = prefix === '' ? '' : (tag.ns[prefix] || '')\n var a = {\n name: name,\n value: value,\n prefix: prefix,\n local: local,\n uri: uri\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix !== 'xmlns' && !uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(prefix))\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, 'onattribute', a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, 'onopentag', parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = ''\n }\n parser.attribName = parser.attribValue = ''\n parser.attribList.length = 0\n }\n\n function closeTag (parser) {\n if (!parser.tagName) {\n strictFail(parser, 'Weird empty close tag.')\n parser.textNode += '</>'\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== 'script') {\n parser.script += '</' + parser.tagName + '>'\n parser.tagName = ''\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) {\n tagName = tagName[parser.looseCase]()\n }\n var closeTo = tagName\n while (t--) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, 'Unexpected close tag')\n } else {\n break\n }\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n parser.textNode += '</' + parser.tagName + '>'\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s-- > t) {\n var tag = parser.tag = parser.tags.pop()\n parser.tagName = parser.tag.name\n emitNode(parser, 'onclosetag', parser.tagName)\n\n var x = {}\n for (var i in tag.ns) {\n x[i] = tag.ns[i]\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = ''\n parser.attribList.length = 0\n parser.state = S.TEXT\n }\n\n function parseEntity (parser) {\n var entity = parser.entity\n var entityLC = entity.toLowerCase()\n var num\n var numStr = ''\n\n if (parser.ENTITIES[entity]) {\n return parser.ENTITIES[entity]\n }\n if (parser.ENTITIES[entityLC]) {\n return parser.ENTITIES[entityLC]\n }\n entity = entityLC\n if (entity.charAt(0) === '#') {\n if (entity.charAt(1) === 'x') {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, '')\n if (isNaN(num) || numStr.toLowerCase() !== entity) {\n strictFail(parser, 'Invalid character entity')\n return '&' + parser.entity + ';'\n }\n\n return String.fromCodePoint(num)\n }\n\n function beginWhiteSpace (parser, c) {\n if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (!isWhitespace(c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, 'Non-whitespace before first tag.')\n parser.textNode = c\n parser.state = S.TEXT\n }\n }\n\n function charAt (chunk, i) {\n var result = ''\n if (i < chunk.length) {\n result = chunk.charAt(i)\n }\n return result\n }\n\n function write (chunk) {\n var parser = this\n if (this.error) {\n throw this.error\n }\n if (parser.closed) {\n return error(parser,\n 'Cannot write after close. Assign an onready handler.')\n }\n if (chunk === null) {\n return end(parser)\n }\n if (typeof chunk === 'object') {\n chunk = chunk.toString()\n }\n var i = 0\n var c = ''\n while (true) {\n c = charAt(chunk, i++)\n parser.c = c\n\n if (!c) {\n break\n }\n\n if (parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n\n switch (parser.state) {\n case S.BEGIN:\n parser.state = S.BEGIN_WHITESPACE\n if (c === '\\uFEFF') {\n continue\n }\n beginWhiteSpace(parser, c)\n continue\n\n case S.BEGIN_WHITESPACE:\n beginWhiteSpace(parser, c)\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i - 1\n while (c && c !== '<' && c !== '&') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.textNode += chunk.substring(starti, i - 1)\n }\n if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {\n strictFail(parser, 'Text data outside of root node.')\n }\n if (c === '&') {\n parser.state = S.TEXT_ENTITY\n } else {\n parser.textNode += c\n }\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === '<') {\n parser.state = S.SCRIPT_ENDING\n } else {\n parser.script += c\n }\n continue\n\n case S.SCRIPT_ENDING:\n if (c === '/') {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += '<' + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === '!') {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = ''\n } else if (isWhitespace(c)) {\n // wait for it...\n } else if (isMatch(nameStart, c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === '/') {\n parser.state = S.CLOSE_TAG\n parser.tagName = ''\n } else if (c === '?') {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = ''\n } else {\n strictFail(parser, 'Unencoded <')\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(' ') + c\n }\n parser.textNode += '<' + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n emitNode(parser, 'onopencdata')\n parser.state = S.CDATA\n parser.sgmlDecl = ''\n parser.cdata = ''\n } else if (parser.sgmlDecl + c === '--') {\n parser.state = S.COMMENT\n parser.comment = ''\n parser.sgmlDecl = ''\n } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) {\n strictFail(parser,\n 'Inappropriately located doctype declaration')\n }\n parser.doctype = ''\n parser.sgmlDecl = ''\n } else if (c === '>') {\n emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n parser.sgmlDecl = ''\n parser.state = S.TEXT\n } else if (isQuote(c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else {\n parser.sgmlDecl += c\n }\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = ''\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === '>') {\n parser.state = S.TEXT\n emitNode(parser, 'ondoctype', parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === '[') {\n parser.state = S.DOCTYPE_DTD\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = ''\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n parser.doctype += c\n if (c === ']') {\n parser.state = S.DOCTYPE\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = ''\n }\n continue\n\n case S.COMMENT:\n if (c === '-') {\n parser.state = S.COMMENT_ENDING\n } else {\n parser.comment += c\n }\n continue\n\n case S.COMMENT_ENDING:\n if (c === '-') {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) {\n emitNode(parser, 'oncomment', parser.comment)\n }\n parser.comment = ''\n } else {\n parser.comment += '-' + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== '>') {\n strictFail(parser, 'Malformed comment')\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += '--' + c\n parser.state = S.COMMENT\n } else {\n parser.state = S.TEXT\n }\n continue\n\n case S.CDATA:\n if (c === ']') {\n parser.state = S.CDATA_ENDING\n } else {\n parser.cdata += c\n }\n continue\n\n case S.CDATA_ENDING:\n if (c === ']') {\n parser.state = S.CDATA_ENDING_2\n } else {\n parser.cdata += ']' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === '>') {\n if (parser.cdata) {\n emitNode(parser, 'oncdata', parser.cdata)\n }\n emitNode(parser, 'onclosecdata')\n parser.cdata = ''\n parser.state = S.TEXT\n } else if (c === ']') {\n parser.cdata += ']'\n } else {\n parser.cdata += ']]' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else if (isWhitespace(c)) {\n parser.state = S.PROC_INST_BODY\n } else {\n parser.procInstName += c\n }\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && isWhitespace(c)) {\n continue\n } else if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else {\n parser.procInstBody += c\n }\n continue\n\n case S.PROC_INST_ENDING:\n if (c === '>') {\n emitNode(parser, 'onprocessinginstruction', {\n name: parser.procInstName,\n body: parser.procInstBody\n })\n parser.procInstName = parser.procInstBody = ''\n parser.state = S.TEXT\n } else {\n parser.procInstBody += '?' + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else {\n newTag(parser)\n if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid character in tag name')\n }\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === '>') {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(parser, 'Forward-slash in opening tag not followed by >')\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (isWhitespace(c)) {\n continue\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (c === '>') {\n strictFail(parser, 'Attribute without value')\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n } else if (isWhitespace(c)) {\n parser.state = S.ATTRIB_NAME_SAW_WHITE\n } else if (isMatch(nameBody, c)) {\n parser.attribName += c\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (isWhitespace(c)) {\n continue\n } else {\n strictFail(parser, 'Attribute without value')\n parser.tag.attributes[parser.attribName] = ''\n parser.attribValue = ''\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: ''\n })\n parser.attribName = ''\n if (c === '>') {\n openTag(parser)\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (isWhitespace(c)) {\n continue\n } else if (isQuote(c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n strictFail(parser, 'Unquoted attribute value')\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_Q\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n parser.q = ''\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (isWhitespace(c)) {\n parser.state = S.ATTRIB\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n strictFail(parser, 'No whitespace between attributes')\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (!isAttribEnd(c)) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_U\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n if (c === '>') {\n openTag(parser)\n } else {\n parser.state = S.ATTRIB\n }\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (isWhitespace(c)) {\n continue\n } else if (notMatch(nameStart, c)) {\n if (parser.script) {\n parser.script += '</' + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, 'Invalid tagname in closing tag.')\n }\n } else {\n parser.tagName = c\n }\n } else if (c === '>') {\n closeTag(parser)\n } else if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else if (parser.script) {\n parser.script += '</' + parser.tagName\n parser.tagName = ''\n parser.state = S.SCRIPT\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid tagname in closing tag')\n }\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (isWhitespace(c)) {\n continue\n }\n if (c === '>') {\n closeTag(parser)\n } else {\n strictFail(parser, 'Invalid characters in closing tag')\n }\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState\n var buffer\n switch (parser.state) {\n case S.TEXT_ENTITY:\n returnState = S.TEXT\n buffer = 'textNode'\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n returnState = S.ATTRIB_VALUE_QUOTED\n buffer = 'attribValue'\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n returnState = S.ATTRIB_VALUE_UNQUOTED\n buffer = 'attribValue'\n break\n }\n\n if (c === ';') {\n if (parser.opt.unparsedEntities) {\n var parsedEntity = parseEntity(parser)\n parser.entity = ''\n parser.state = returnState\n parser.write(parsedEntity)\n } else {\n parser[buffer] += parseEntity(parser)\n parser.entity = ''\n parser.state = returnState\n }\n } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {\n parser.entity += c\n } else {\n strictFail(parser, 'Invalid character in entity name')\n parser[buffer] += '&' + parser.entity + c\n parser.entity = ''\n parser.state = returnState\n }\n\n continue\n\n default: /* istanbul ignore next */ {\n throw new Error(parser, 'Unknown state: ' + parser.state)\n }\n }\n } // while\n\n if (parser.position >= parser.bufferCheckPosition) {\n checkBufferLength(parser)\n }\n return parser\n }\n\n /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n /* istanbul ignore next */\n if (!String.fromCodePoint) {\n (function () {\n var stringFromCharCode = String.fromCharCode\n var floor = Math.floor\n var fromCodePoint = function () {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint)\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xD800\n lowSurrogate = (codePoint % 0x400) + 0xDC00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n value: fromCodePoint,\n configurable: true,\n writable: true\n })\n } else {\n String.fromCodePoint = fromCodePoint\n }\n }())\n }\n})( false ? 0 : exports)\n\n\n/***/ }),\n\n/***/ 86255:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar GetIntrinsic = __webpack_require__(28651);\nvar define = __webpack_require__(89295);\nvar hasDescriptors = __webpack_require__(18890)();\nvar gOPD = __webpack_require__(68109);\n\nvar $TypeError = __webpack_require__(96785);\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @typedef {(...args: unknown[]) => unknown} Func */\n\n/** @type {<T extends Func = Func>(fn: T, length: number, loose?: boolean) => T} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n\n\n/***/ }),\n\n/***/ 95304:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(89295);\nvar hasDescriptors = __webpack_require__(18890)();\nvar functionsHaveConfigurableNames = (__webpack_require__(61084).functionsHaveConfigurableNames)();\n\nvar $TypeError = __webpack_require__(96785);\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n\n\n/***/ }),\n\n/***/ 9760:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = (__webpack_require__(64785).EventEmitter);\nvar inherits = __webpack_require__(89784);\n\ninherits(Stream, EE);\nStream.Readable = __webpack_require__(88261);\nStream.Writable = __webpack_require__(29781);\nStream.Duplex = __webpack_require__(14903);\nStream.Transform = __webpack_require__(48569);\nStream.PassThrough = __webpack_require__(17723);\nStream.finished = __webpack_require__(12167)\nStream.pipeline = __webpack_require__(43765)\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\n\n/***/ }),\n\n/***/ 83797:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.F = codes;\n\n\n/***/ }),\n\n/***/ 14903:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var process = __webpack_require__(9964);\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = __webpack_require__(88261);\nvar Writable = __webpack_require__(29781);\n__webpack_require__(89784)(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\n/***/ }),\n\n/***/ 17723:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\n\nmodule.exports = PassThrough;\nvar Transform = __webpack_require__(48569);\n__webpack_require__(89784)(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n/***/ }),\n\n/***/ 88261:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var process = __webpack_require__(9964);\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = (__webpack_require__(64785).EventEmitter);\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = __webpack_require__(99018);\n/*</replacement>*/\n\nvar Buffer = (__webpack_require__(50621).Buffer);\nvar OurUint8Array = (typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = __webpack_require__(77199);\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = __webpack_require__(57540);\nvar destroyImpl = __webpack_require__(37385);\nvar _require = __webpack_require__(68130),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = (__webpack_require__(83797)/* .codes */ .F),\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n__webpack_require__(89784)(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(14903);\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = (__webpack_require__(43143)/* .StringDecoder */ .I);\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || __webpack_require__(14903);\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = (__webpack_require__(43143)/* .StringDecoder */ .I);\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = __webpack_require__(79676);\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = __webpack_require__(60378);\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n\n/***/ }),\n\n/***/ 48569:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\n\nmodule.exports = Transform;\nvar _require$codes = (__webpack_require__(83797)/* .codes */ .F),\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = __webpack_require__(14903);\n__webpack_require__(89784)(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n\n/***/ }),\n\n/***/ 29781:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var process = __webpack_require__(9964);\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: __webpack_require__(16465)\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = __webpack_require__(99018);\n/*</replacement>*/\n\nvar Buffer = (__webpack_require__(50621).Buffer);\nvar OurUint8Array = (typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = __webpack_require__(37385);\nvar _require = __webpack_require__(68130),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = (__webpack_require__(83797)/* .codes */ .F),\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n__webpack_require__(89784)(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(14903);\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || __webpack_require__(14903);\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n/***/ }),\n\n/***/ 79676:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var process = __webpack_require__(9964);\n\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = __webpack_require__(12167);\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;\n\n/***/ }),\n\n/***/ 37385:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var process = __webpack_require__(9964);\n\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n\n/***/ }),\n\n/***/ 12167:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\n\nvar ERR_STREAM_PREMATURE_CLOSE = (__webpack_require__(83797)/* .codes */ .F).ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;\n\n/***/ }),\n\n/***/ 60378:\n/***/ (function(module) {\n\nmodule.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n\n\n/***/ }),\n\n/***/ 43765:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = (__webpack_require__(83797)/* .codes */ .F),\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = __webpack_require__(12167);\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;\n\n/***/ }),\n\n/***/ 68130:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar ERR_INVALID_OPT_VALUE = (__webpack_require__(83797)/* .codes */ .F).ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};\n\n/***/ }),\n\n/***/ 99018:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(64785).EventEmitter;\n\n\n/***/ }),\n\n/***/ 43143:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n/*<replacement>*/\n\nvar Buffer = (__webpack_require__(72361).Buffer);\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.I = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n\n/***/ }),\n\n/***/ 3483:\n/***/ (function(module) {\n\nvar TINF_OK = 0;\nvar TINF_DATA_ERROR = -3;\n\nfunction Tree() {\n this.table = new Uint16Array(16); /* table of code length counts */\n this.trans = new Uint16Array(288); /* code -> symbol translation table */\n}\n\nfunction Data(source, dest) {\n this.source = source;\n this.sourceIndex = 0;\n this.tag = 0;\n this.bitcount = 0;\n \n this.dest = dest;\n this.destLen = 0;\n \n this.ltree = new Tree(); /* dynamic length/symbol tree */\n this.dtree = new Tree(); /* dynamic distance tree */\n}\n\n/* --------------------------------------------------- *\n * -- uninitialized global data (static structures) -- *\n * --------------------------------------------------- */\n\nvar sltree = new Tree();\nvar sdtree = new Tree();\n\n/* extra bits and base tables for length codes */\nvar length_bits = new Uint8Array(30);\nvar length_base = new Uint16Array(30);\n\n/* extra bits and base tables for distance codes */\nvar dist_bits = new Uint8Array(30);\nvar dist_base = new Uint16Array(30);\n\n/* special ordering of code length codes */\nvar clcidx = new Uint8Array([\n 16, 17, 18, 0, 8, 7, 9, 6,\n 10, 5, 11, 4, 12, 3, 13, 2,\n 14, 1, 15\n]);\n\n/* used by tinf_decode_trees, avoids allocations every call */\nvar code_tree = new Tree();\nvar lengths = new Uint8Array(288 + 32);\n\n/* ----------------------- *\n * -- utility functions -- *\n * ----------------------- */\n\n/* build extra bits and base tables */\nfunction tinf_build_bits_base(bits, base, delta, first) {\n var i, sum;\n\n /* build bits table */\n for (i = 0; i < delta; ++i) bits[i] = 0;\n for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;\n\n /* build base table */\n for (sum = first, i = 0; i < 30; ++i) {\n base[i] = sum;\n sum += 1 << bits[i];\n }\n}\n\n/* build the fixed huffman trees */\nfunction tinf_build_fixed_trees(lt, dt) {\n var i;\n\n /* build fixed length tree */\n for (i = 0; i < 7; ++i) lt.table[i] = 0;\n\n lt.table[7] = 24;\n lt.table[8] = 152;\n lt.table[9] = 112;\n\n for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n\n /* build fixed distance tree */\n for (i = 0; i < 5; ++i) dt.table[i] = 0;\n\n dt.table[5] = 32;\n\n for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\n\n/* given an array of code lengths, build a tree */\nvar offs = new Uint16Array(16);\n\nfunction tinf_build_tree(t, lengths, off, num) {\n var i, sum;\n\n /* clear code length count table */\n for (i = 0; i < 16; ++i) t.table[i] = 0;\n\n /* scan symbol lengths, and sum code length counts */\n for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;\n\n t.table[0] = 0;\n\n /* compute offset table for distribution sort */\n for (sum = 0, i = 0; i < 16; ++i) {\n offs[i] = sum;\n sum += t.table[i];\n }\n\n /* create code->symbol translation table (symbols sorted by code) */\n for (i = 0; i < num; ++i) {\n if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;\n }\n}\n\n/* ---------------------- *\n * -- decode functions -- *\n * ---------------------- */\n\n/* get one bit from source stream */\nfunction tinf_getbit(d) {\n /* check if tag is empty */\n if (!d.bitcount--) {\n /* load next tag */\n d.tag = d.source[d.sourceIndex++];\n d.bitcount = 7;\n }\n\n /* shift bit out of tag */\n var bit = d.tag & 1;\n d.tag >>>= 1;\n\n return bit;\n}\n\n/* read a num bit value from a stream and add base */\nfunction tinf_read_bits(d, num, base) {\n if (!num)\n return base;\n\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n\n var val = d.tag & (0xffff >>> (16 - num));\n d.tag >>>= num;\n d.bitcount -= num;\n return val + base;\n}\n\n/* given a data stream and a tree, decode a symbol */\nfunction tinf_decode_symbol(d, t) {\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n \n var sum = 0, cur = 0, len = 0;\n var tag = d.tag;\n\n /* get more bits while code value is above sum */\n do {\n cur = 2 * cur + (tag & 1);\n tag >>>= 1;\n ++len;\n\n sum += t.table[len];\n cur -= t.table[len];\n } while (cur >= 0);\n \n d.tag = tag;\n d.bitcount -= len;\n\n return t.trans[sum + cur];\n}\n\n/* given a data stream, decode dynamic trees from it */\nfunction tinf_decode_trees(d, lt, dt) {\n var hlit, hdist, hclen;\n var i, num, length;\n\n /* get 5 bits HLIT (257-286) */\n hlit = tinf_read_bits(d, 5, 257);\n\n /* get 5 bits HDIST (1-32) */\n hdist = tinf_read_bits(d, 5, 1);\n\n /* get 4 bits HCLEN (4-19) */\n hclen = tinf_read_bits(d, 4, 4);\n\n for (i = 0; i < 19; ++i) lengths[i] = 0;\n\n /* read code lengths for code length alphabet */\n for (i = 0; i < hclen; ++i) {\n /* get 3 bits code length (0-7) */\n var clen = tinf_read_bits(d, 3, 0);\n lengths[clcidx[i]] = clen;\n }\n\n /* build code length tree */\n tinf_build_tree(code_tree, lengths, 0, 19);\n\n /* decode code lengths for the dynamic trees */\n for (num = 0; num < hlit + hdist;) {\n var sym = tinf_decode_symbol(d, code_tree);\n\n switch (sym) {\n case 16:\n /* copy previous code length 3-6 times (read 2 bits) */\n var prev = lengths[num - 1];\n for (length = tinf_read_bits(d, 2, 3); length; --length) {\n lengths[num++] = prev;\n }\n break;\n case 17:\n /* repeat code length 0 for 3-10 times (read 3 bits) */\n for (length = tinf_read_bits(d, 3, 3); length; --length) {\n lengths[num++] = 0;\n }\n break;\n case 18:\n /* repeat code length 0 for 11-138 times (read 7 bits) */\n for (length = tinf_read_bits(d, 7, 11); length; --length) {\n lengths[num++] = 0;\n }\n break;\n default:\n /* values 0-15 represent the actual code lengths */\n lengths[num++] = sym;\n break;\n }\n }\n\n /* build dynamic trees */\n tinf_build_tree(lt, lengths, 0, hlit);\n tinf_build_tree(dt, lengths, hlit, hdist);\n}\n\n/* ----------------------------- *\n * -- block inflate functions -- *\n * ----------------------------- */\n\n/* given a stream and two trees, inflate a block of data */\nfunction tinf_inflate_block_data(d, lt, dt) {\n while (1) {\n var sym = tinf_decode_symbol(d, lt);\n\n /* check for end of block */\n if (sym === 256) {\n return TINF_OK;\n }\n\n if (sym < 256) {\n d.dest[d.destLen++] = sym;\n } else {\n var length, dist, offs;\n var i;\n\n sym -= 257;\n\n /* possibly get more bits from length code */\n length = tinf_read_bits(d, length_bits[sym], length_base[sym]);\n\n dist = tinf_decode_symbol(d, dt);\n\n /* possibly get more bits from distance code */\n offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);\n\n /* copy match */\n for (i = offs; i < offs + length; ++i) {\n d.dest[d.destLen++] = d.dest[i];\n }\n }\n }\n}\n\n/* inflate an uncompressed block of data */\nfunction tinf_inflate_uncompressed_block(d) {\n var length, invlength;\n var i;\n \n /* unread from bitbuffer */\n while (d.bitcount > 8) {\n d.sourceIndex--;\n d.bitcount -= 8;\n }\n\n /* get length */\n length = d.source[d.sourceIndex + 1];\n length = 256 * length + d.source[d.sourceIndex];\n\n /* get one's complement of length */\n invlength = d.source[d.sourceIndex + 3];\n invlength = 256 * invlength + d.source[d.sourceIndex + 2];\n\n /* check length */\n if (length !== (~invlength & 0x0000ffff))\n return TINF_DATA_ERROR;\n\n d.sourceIndex += 4;\n\n /* copy block */\n for (i = length; i; --i)\n d.dest[d.destLen++] = d.source[d.sourceIndex++];\n\n /* make sure we start next block on a byte boundary */\n d.bitcount = 0;\n\n return TINF_OK;\n}\n\n/* inflate stream from source to dest */\nfunction tinf_uncompress(source, dest) {\n var d = new Data(source, dest);\n var bfinal, btype, res;\n\n do {\n /* read final block flag */\n bfinal = tinf_getbit(d);\n\n /* read block type (2 bits) */\n btype = tinf_read_bits(d, 2, 0);\n\n /* decompress block */\n switch (btype) {\n case 0:\n /* decompress uncompressed block */\n res = tinf_inflate_uncompressed_block(d);\n break;\n case 1:\n /* decompress block with fixed huffman trees */\n res = tinf_inflate_block_data(d, sltree, sdtree);\n break;\n case 2:\n /* decompress block with dynamic huffman trees */\n tinf_decode_trees(d, d.ltree, d.dtree);\n res = tinf_inflate_block_data(d, d.ltree, d.dtree);\n break;\n default:\n res = TINF_DATA_ERROR;\n }\n\n if (res !== TINF_OK)\n throw new Error('Data error');\n\n } while (!bfinal);\n\n if (d.destLen < d.dest.length) {\n if (typeof d.dest.slice === 'function')\n return d.dest.slice(0, d.destLen);\n else\n return d.dest.subarray(0, d.destLen);\n }\n \n return d.dest;\n}\n\n/* -------------------- *\n * -- initialization -- *\n * -------------------- */\n\n/* build fixed huffman trees */\ntinf_build_fixed_trees(sltree, sdtree);\n\n/* build extra bits and base tables */\ntinf_build_bits_base(length_bits, length_base, 4, 3);\ntinf_build_bits_base(dist_bits, dist_base, 2, 1);\n\n/* fix a special case */\nlength_bits[28] = 0;\nlength_base[28] = 258;\n\nmodule.exports = tinf_uncompress;\n\n\n/***/ }),\n\n/***/ 16465:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!__webpack_require__.g.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = __webpack_require__.g.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n\n\n/***/ }),\n\n/***/ 41201:\n/***/ (function(module) {\n\nmodule.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n/***/ }),\n\n/***/ 29490:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n\n\nvar isArgumentsObject = __webpack_require__(67906);\nvar isGeneratorFunction = __webpack_require__(44610);\nvar whichTypedArray = __webpack_require__(43381);\nvar isTypedArray = __webpack_require__(46094);\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n\n\n/***/ }),\n\n/***/ 7187:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n/* provided dependency */ var process = __webpack_require__(9964);\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = __webpack_require__(29490);\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = __webpack_require__(41201);\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = __webpack_require__(89784);\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n\n\n/***/ }),\n\n/***/ 43381:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar forEach = __webpack_require__(68404);\nvar availableTypedArrays = __webpack_require__(10821);\nvar callBind = __webpack_require__(26601);\nvar callBound = __webpack_require__(67913);\nvar gOPD = __webpack_require__(68109);\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = __webpack_require__(26626)();\n\nvar g = typeof globalThis === 'undefined' ? __webpack_require__.g : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || /** @type {(array: readonly unknown[], value: unknown) => keyof array} */ function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array} TypedArray */\n/** @typedef {'Int8Array' | 'Uint8Array' | 'Uint8ClampedArray' | 'Int16Array' | 'Uint16Array' | 'Int32Array' | 'Uint32Array' | 'Float32Array' | 'Float64Array' | 'BigInt64Array' | 'BigUint64Array'} TypedArrayName */\n/** @type {{ [k in `\\$${TypedArrayName}`]?: (receiver: TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {import('.')} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType<tryAllTypedArrays>} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, typeof cache>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${TypedArrayName}`) => void} */ function (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType<tryAllSlices>} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n\n\n/***/ }),\n\n/***/ 52242:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n// This file is just added for convenience so this repository can be\n// directly checked out into a project's deps folder\nmodule.exports = __webpack_require__(45349);\n\n\n/***/ }),\n\n/***/ 45349:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n(function () {\n var sax;\n\n if (\n true &&\n module.exports &&\n !__webpack_require__.g.xmldocAssumeBrowser\n ) {\n // We're being used in a Node-like environment\n sax = __webpack_require__(61733);\n } else {\n // assume it's attached to the Window object in a browser\n sax = this.sax;\n\n if (!sax) {\n // no sax for you!\n throw new Error(\n \"Expected sax to be defined. Make sure you're including sax.js before this file.\",\n );\n }\n }\n\n /**\n * XmlElement is our basic building block. Everything is an XmlElement; even XmlDocument\n * behaves like an XmlElement by inheriting its attributes and functions.\n */\n function XmlElement(tag, parser) {\n // If you didn't hand us a parser (common case) see if we can grab one\n // from the current execution stack.\n if (!parser) {\n var delegate = delegates[delegates.length - 1];\n\n if (delegate.parser) {\n parser = delegate.parser;\n }\n }\n\n this.name = tag.name;\n this.attr = tag.attributes;\n this.val = \"\";\n this.children = [];\n this.firstChild = null;\n this.lastChild = null;\n\n // Assign parse information\n this.line = parser ? parser.line : null;\n this.column = parser ? parser.column : null;\n this.position = parser ? parser.position : null;\n this.startTagPosition = parser ? parser.startTagPosition : null;\n }\n\n // Private methods\n\n XmlElement.prototype._addChild = function (child) {\n // add to our children array\n this.children.push(child);\n\n // update first/last pointers\n if (!this.firstChild) this.firstChild = child;\n this.lastChild = child;\n };\n\n // SaxParser handlers\n\n XmlElement.prototype._opentag = function (tag) {\n var child = new XmlElement(tag);\n\n this._addChild(child);\n\n delegates.unshift(child);\n };\n\n XmlElement.prototype._closetag = function () {\n delegates.shift();\n };\n\n XmlElement.prototype._text = function (text) {\n if (typeof this.children === \"undefined\") return;\n\n this.val += text;\n\n this._addChild(new XmlTextNode(text));\n };\n\n XmlElement.prototype._cdata = function (cdata) {\n this.val += cdata;\n\n this._addChild(new XmlCDataNode(cdata));\n };\n\n XmlElement.prototype._comment = function (comment) {\n if (typeof this.children === \"undefined\") return;\n\n this._addChild(new XmlCommentNode(comment));\n };\n\n XmlElement.prototype._error = function (err) {\n throw err;\n };\n\n // Useful functions\n\n XmlElement.prototype.eachChild = function (iterator, context) {\n for (var i = 0, l = this.children.length; i < l; i++)\n if (this.children[i].type === \"element\")\n if (\n iterator.call(context, this.children[i], i, this.children) === false\n )\n return;\n };\n\n XmlElement.prototype.childNamed = function (name) {\n for (var i = 0, l = this.children.length; i < l; i++) {\n var child = this.children[i];\n if (child.name === name) return child;\n }\n return undefined;\n };\n\n XmlElement.prototype.childrenNamed = function (name) {\n var matches = [];\n\n for (var i = 0, l = this.children.length; i < l; i++)\n if (this.children[i].name === name) matches.push(this.children[i]);\n\n return matches;\n };\n\n XmlElement.prototype.childWithAttribute = function (name, value) {\n for (var i = 0, l = this.children.length; i < l; i++) {\n var child = this.children[i];\n if (\n child.type === \"element\" &&\n ((value && child.attr[name] === value) || (!value && child.attr[name]))\n )\n return child;\n }\n return undefined;\n };\n\n XmlElement.prototype.descendantsNamed = function (name) {\n var matches = [];\n\n for (var i = 0, l = this.children.length; i < l; i++) {\n var child = this.children[i];\n if (child.type === \"element\") {\n if (child.name === name) matches.push(child);\n matches = matches.concat(child.descendantsNamed(name));\n }\n }\n\n return matches;\n };\n\n XmlElement.prototype.descendantWithPath = function (path) {\n var descendant = this;\n var components = path.split(\".\");\n\n for (var i = 0, l = components.length; i < l; i++)\n if (descendant && descendant.type === \"element\")\n descendant = descendant.childNamed(components[i]);\n else return undefined;\n\n return descendant;\n };\n\n XmlElement.prototype.valueWithPath = function (path) {\n var components = path.split(\"@\");\n var descendant = this.descendantWithPath(components[0]);\n if (descendant)\n return components.length > 1\n ? descendant.attr[components[1]]\n : descendant.val;\n else return undefined;\n };\n\n // String formatting (for debugging)\n\n XmlElement.prototype.toString = function (options) {\n return this.toStringWithIndent(\"\", options);\n };\n\n XmlElement.prototype.toStringWithIndent = function (indent, options) {\n var s = indent + \"<\" + this.name;\n var linebreak = options && options.compressed ? \"\" : \"\\n\";\n var preserveWhitespace = options && options.preserveWhitespace;\n\n for (var name in this.attr)\n if (Object.prototype.hasOwnProperty.call(this.attr, name))\n s += \" \" + name + '=\"' + escapeXML(this.attr[name]) + '\"';\n\n if (this.children.length === 1 && this.children[0].type !== \"element\") {\n s += \">\" + this.children[0].toString(options) + \"</\" + this.name + \">\";\n } else if (this.children.length) {\n s += \">\" + linebreak;\n\n var childIndent = indent + (options && options.compressed ? \"\" : \" \");\n\n for (var i = 0, l = this.children.length; i < l; i++) {\n s +=\n this.children[i].toStringWithIndent(childIndent, options) + linebreak;\n }\n\n s += indent + \"</\" + this.name + \">\";\n } else if (options && options.html) {\n var whiteList = [\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"keygen\",\n \"link\",\n \"menuitem\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n ];\n if (whiteList.indexOf(this.name) !== -1) s += \"/>\";\n else s += \"></\" + this.name + \">\";\n } else {\n s += \"/>\";\n }\n\n return s;\n };\n\n // Alternative XML nodes\n\n function XmlTextNode(text) {\n this.text = text;\n }\n\n XmlTextNode.prototype.toString = function (options) {\n return formatText(escapeXML(this.text), options);\n };\n\n XmlTextNode.prototype.toStringWithIndent = function (indent, options) {\n return indent + this.toString(options);\n };\n\n function XmlCDataNode(cdata) {\n this.cdata = cdata;\n }\n\n XmlCDataNode.prototype.toString = function (options) {\n return \"<![CDATA[\" + formatText(this.cdata, options) + \"]]>\";\n };\n\n XmlCDataNode.prototype.toStringWithIndent = function (indent, options) {\n return indent + this.toString(options);\n };\n\n function XmlCommentNode(comment) {\n this.comment = comment;\n }\n\n XmlCommentNode.prototype.toString = function (options) {\n return \"<!--\" + formatText(escapeXML(this.comment), options) + \"-->\";\n };\n\n XmlCommentNode.prototype.toStringWithIndent = function (indent, options) {\n return indent + this.toString(options);\n };\n\n // Node type tag\n\n XmlElement.prototype.type = \"element\";\n XmlTextNode.prototype.type = \"text\";\n XmlCDataNode.prototype.type = \"cdata\";\n XmlCommentNode.prototype.type = \"comment\";\n\n /**\n * XmlDocument is the class we expose to the user; it uses the sax parser to create a hierarchy\n * of XmlElements.\n */\n function XmlDocument(xml) {\n xml && (xml = xml.toString().trim());\n\n if (!xml) throw new Error(\"No XML to parse!\");\n\n // Stores doctype (if defined)\n this.doctype = \"\";\n\n // Expose the parser to the other delegates while the parser is running\n this.parser = sax.parser(true); // strict\n addParserEvents(this.parser);\n\n // We'll use the file-scoped \"delegates\" var to remember what elements we're currently\n // parsing; they will push and pop off the stack as we get deeper into the XML hierarchy.\n // It's safe to use a global because JS is single-threaded.\n delegates = [this];\n\n try {\n this.parser.write(xml);\n } finally {\n // Remove the parser as it is no longer needed and should not be exposed to clients\n delete this.parser;\n }\n }\n\n // make XmlDocument inherit XmlElement's methods\n extend(XmlDocument.prototype, XmlElement.prototype);\n\n XmlDocument.prototype._opentag = function (tag) {\n if (typeof this.children === \"undefined\")\n // the first tag we encounter should be the root - we'll \"become\" the root XmlElement\n XmlElement.call(this, tag);\n // all other tags will be the root element's children\n else XmlElement.prototype._opentag.apply(this, arguments);\n };\n\n XmlDocument.prototype._doctype = function (doctype) {\n this.doctype += doctype;\n };\n\n // file-scoped global stack of delegates\n var delegates = null;\n\n /*\n * Helper functions\n */\n\n function addParserEvents(parser) {\n parser.onopentag = parser_opentag;\n parser.onclosetag = parser_closetag;\n parser.ontext = parser_text;\n parser.oncdata = parser_cdata;\n parser.oncomment = parser_comment;\n parser.ondoctype = parser_doctype;\n parser.onerror = parser_error;\n }\n\n // create these closures and cache them by keeping them file-scoped\n function parser_opentag() {\n delegates[0] && delegates[0]._opentag.apply(delegates[0], arguments);\n }\n function parser_closetag() {\n delegates[0] && delegates[0]._closetag.apply(delegates[0], arguments);\n }\n function parser_text() {\n delegates[0] && delegates[0]._text.apply(delegates[0], arguments);\n }\n function parser_cdata() {\n delegates[0] && delegates[0]._cdata.apply(delegates[0], arguments);\n }\n function parser_comment() {\n delegates[0] && delegates[0]._comment.apply(delegates[0], arguments);\n }\n function parser_doctype() {\n delegates[0] && delegates[0]._doctype.apply(delegates[0], arguments);\n }\n function parser_error() {\n delegates[0] && delegates[0]._error.apply(delegates[0], arguments);\n }\n\n // a relatively standard extend method\n function extend(destination, source) {\n for (var prop in source)\n if (source.hasOwnProperty(prop)) destination[prop] = source[prop];\n }\n\n // escapes XML entities like \"<\", \"&\", etc.\n function escapeXML(value) {\n return value\n .toString()\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/'/g, \"'\")\n .replace(/\"/g, \""\");\n }\n\n // formats some text for debugging given a few options\n function formatText(text, options) {\n var finalText = text;\n\n if (options && options.trimmed && text.length > 25) {\n finalText = finalText.substring(0, 25).trim() + \"…\";\n }\n\n if (!(options && options.preserveWhitespace)) {\n finalText = finalText.trim();\n }\n\n return finalText;\n }\n\n // Are we being used in a Node-like environment?\n if (\n true &&\n module.exports &&\n !__webpack_require__.g.xmldocAssumeBrowser\n ) {\n module.exports.XmlDocument = XmlDocument;\n module.exports.XmlElement = XmlElement;\n module.exports.XmlTextNode = XmlTextNode;\n module.exports.XmlCDataNode = XmlCDataNode;\n module.exports.XmlCommentNode = XmlCommentNode;\n } else {\n this.XmlDocument = XmlDocument;\n this.XmlElement = XmlElement;\n this.XmlTextNode = XmlTextNode;\n this.XmlCDataNode = XmlCDataNode;\n this.XmlCommentNode = XmlCommentNode;\n }\n})();\n\n\n/***/ }),\n\n/***/ 7785:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n// Internet Explorer polyfills\r\nif (typeof window !== 'undefined' && !window.Promise) {\r\n\t__webpack_require__(98168);\r\n}\r\n__webpack_require__(83043);\r\n\r\nvar fetchUrl = function (url, headers) {\r\n\treturn new Promise(function (resolve, reject) {\r\n\t\tvar xhr = new XMLHttpRequest();\r\n\t\txhr.open('GET', url, true);\r\n\t\tfor (var headerName in headers) {\r\n\t\t\txhr.setRequestHeader(headerName, headers[headerName]);\r\n\t\t}\r\n\t\txhr.responseType = 'arraybuffer';\r\n\r\n\t\txhr.onreadystatechange = function () {\r\n\t\t\tif (xhr.readyState !== 4) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar ok = xhr.status >= 200 && xhr.status < 300;\r\n\t\t\tif (!ok) {\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\treject(new TypeError('Failed to fetch (url: \"' + url + '\")'));\r\n\t\t\t\t}, 0);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\txhr.onload = function () {\r\n\t\t\tvar ok = xhr.status >= 200 && xhr.status < 300;\r\n\t\t\tif (ok) {\r\n\t\t\t\tresolve(xhr.response);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\txhr.onerror = function () {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\treject(new TypeError('Network request failed (url: \"' + url + '\")'));\r\n\t\t\t}, 0);\r\n\t\t};\r\n\r\n\t\txhr.ontimeout = function () {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\treject(new TypeError('Network request failed (url: \"' + url + '\")'));\r\n\t\t\t}, 0);\r\n\t\t};\r\n\r\n\t\txhr.send();\r\n\t});\r\n};\r\n\r\nfunction URLBrowserResolver(fs) {\r\n\tthis.fs = fs;\r\n\tthis.resolving = {};\r\n}\r\n\r\nURLBrowserResolver.prototype.resolve = function (url, headers) {\r\n\tif (!this.resolving[url]) {\r\n\t\tvar _this = this;\r\n\t\tthis.resolving[url] = new Promise(function (resolve, reject) {\r\n\t\t\tif (url.toLowerCase().indexOf('https://') === 0 || url.toLowerCase().indexOf('http://') === 0) {\r\n\t\t\t\tif (_this.fs.existsSync(url)) {\r\n\t\t\t\t\t// url was downloaded earlier\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfetchUrl(url, headers).then(function (buffer) {\r\n\t\t\t\t\t\t_this.fs.writeFileSync(url, buffer);\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}, function (result) {\r\n\t\t\t\t\t\treject(result);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// cannot be resolved\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\treturn this.resolving[url];\r\n}\r\n\r\nURLBrowserResolver.prototype.resolved = function () {\r\n\tvar _this = this;\r\n\treturn new Promise(function (resolve, reject) {\r\n\t\tPromise.all(Object.values(_this.resolving)).then(function () {\r\n\t\t\tresolve();\r\n\t\t}, function (result) {\r\n\t\t\treject(result);\r\n\t\t});\r\n\t});\r\n}\r\n\r\nmodule.exports = URLBrowserResolver;\r\n\n\n/***/ }),\n\n/***/ 45314:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n\r\n\r\nvar isFunction = (__webpack_require__(91867).isFunction);\r\nvar isUndefined = (__webpack_require__(91867).isUndefined);\r\nvar isNull = (__webpack_require__(91867).isNull);\r\nvar FileSaver = __webpack_require__(44134);\r\nvar saveAs = FileSaver.saveAs;\r\n\r\nvar defaultClientFonts = {\r\n\tRoboto: {\r\n\t\tnormal: 'Roboto-Regular.ttf',\r\n\t\tbold: 'Roboto-Medium.ttf',\r\n\t\titalics: 'Roboto-Italic.ttf',\r\n\t\tbolditalics: 'Roboto-MediumItalic.ttf'\r\n\t}\r\n};\r\n\r\nfunction Document(docDefinition, tableLayouts, fonts, vfs) {\r\n\tthis.docDefinition = docDefinition;\r\n\tthis.tableLayouts = tableLayouts || null;\r\n\tthis.fonts = fonts || defaultClientFonts;\r\n\tthis.vfs = vfs;\r\n}\r\n\r\nfunction canCreatePdf() {\r\n\t// Ensure the browser provides the level of support needed\r\n\ttry {\r\n\t\tvar arr = new Uint8Array(1)\r\n\t\tvar proto = { foo: function () { return 42 } }\r\n\t\tObject.setPrototypeOf(proto, Uint8Array.prototype)\r\n\t\tObject.setPrototypeOf(arr, proto)\r\n\t\treturn arr.foo() === 42\r\n\t} catch (e) {\r\n\t\treturn false\r\n\t}\r\n}\r\n\r\nDocument.prototype._createDoc = function (options, cb) {\r\n\tvar getExtendedUrl = function (url) {\r\n\t\tif (typeof url === 'object') {\r\n\t\t\treturn { url: url.url, headers: url.headers };\r\n\t\t}\r\n\r\n\t\treturn { url: url, headers: {} };\r\n\t};\r\n\r\n\toptions = options || {};\r\n\tif (this.tableLayouts) {\r\n\t\toptions.tableLayouts = this.tableLayouts;\r\n\t}\r\n\r\n\tvar PdfPrinter = __webpack_require__(81566);\r\n\r\n\tvar printer = new PdfPrinter(this.fonts);\r\n\t(__webpack_require__(48181).bindFS)(this.vfs); // bind virtual file system to file system\r\n\r\n\tif (!isFunction(cb)) {\r\n\t\tvar doc = printer.createPdfKitDocument(this.docDefinition, options);\r\n\r\n\t\treturn doc;\r\n\t}\r\n\r\n\tvar URLBrowserResolver = __webpack_require__(7785);\r\n\tvar urlResolver = new URLBrowserResolver(__webpack_require__(48181));\r\n\r\n\tfor (var font in this.fonts) {\r\n\t\tif (this.fonts.hasOwnProperty(font)) {\r\n\t\t\tif (this.fonts[font].normal) {\r\n\t\t\t\tif (Array.isArray(this.fonts[font].normal)) { // TrueType Collection\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].normal[0]);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].normal[0] = url.url;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].normal);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].normal = url.url;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.fonts[font].bold) {\r\n\t\t\t\tif (Array.isArray(this.fonts[font].bold)) { // TrueType Collection\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].bold[0]);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].bold[0] = url.url;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].bold);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].bold = url.url;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.fonts[font].italics) {\r\n\t\t\t\tif (Array.isArray(this.fonts[font].italics)) { // TrueType Collection\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].italics[0]);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].italics[0] = url.url;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].italics);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].italics = url.url;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.fonts[font].bolditalics) {\r\n\t\t\t\tif (Array.isArray(this.fonts[font].bolditalics)) { // TrueType Collection\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].bolditalics[0]);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].bolditalics[0] = url.url;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].bolditalics);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].bolditalics = url.url;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.docDefinition.images) {\r\n\t\tfor (var image in this.docDefinition.images) {\r\n\t\t\tif (this.docDefinition.images.hasOwnProperty(image)) {\r\n\t\t\t\tvar url = getExtendedUrl(this.docDefinition.images[image]);\r\n\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\tthis.docDefinition.images[image] = url.url;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar _this = this;\r\n\r\n\turlResolver.resolved().then(function () {\r\n\t\tvar doc = printer.createPdfKitDocument(_this.docDefinition, options);\r\n\r\n\t\tcb(doc);\r\n\t}, function (result) {\r\n\t\tthrow result;\r\n\t});\r\n};\r\n\r\nDocument.prototype._flushDoc = function (doc, callback) {\r\n\tvar chunks = [];\r\n\tvar result;\r\n\r\n\tdoc.on('readable', function () {\r\n\t\tvar chunk;\r\n\t\twhile ((chunk = doc.read(9007199254740991)) !== null) {\r\n\t\t\tchunks.push(chunk);\r\n\t\t}\r\n\t});\r\n\tdoc.on('end', function () {\r\n\t\tresult = Buffer.concat(chunks);\r\n\t\tcallback(result, doc._pdfMakePages);\r\n\t});\r\n\tdoc.end();\r\n};\r\n\r\nDocument.prototype._getPages = function (options, cb) {\r\n\tif (!cb) {\r\n\t\tthrow '_getPages is an async method and needs a callback argument';\r\n\t}\r\n\tvar _this = this;\r\n\r\n\tthis._createDoc(options, function (doc) {\r\n\t\t_this._flushDoc(doc, function (ignoreBuffer, pages) {\r\n\t\t\tcb(pages);\r\n\t\t});\r\n\t});\r\n};\r\n\r\nDocument.prototype._bufferToBlob = function (buffer) {\r\n\tvar blob;\r\n\ttry {\r\n\t\tblob = new Blob([buffer], { type: 'application/pdf' });\r\n\t} catch (e) {\r\n\t\t// Old browser which can't handle it without making it an byte array (ie10)\r\n\t\tif (e.name === 'InvalidStateError') {\r\n\t\t\tvar byteArray = new Uint8Array(buffer);\r\n\t\t\tblob = new Blob([byteArray.buffer], { type: 'application/pdf' });\r\n\t\t}\r\n\t}\r\n\r\n\tif (!blob) {\r\n\t\tthrow 'Could not generate blob';\r\n\t}\r\n\r\n\treturn blob;\r\n};\r\n\r\nDocument.prototype._openWindow = function () {\r\n\t// we have to open the window immediately and store the reference\r\n\t// otherwise popup blockers will stop us\r\n\tvar win = window.open('', '_blank');\r\n\tif (win === null) {\r\n\t\tthrow 'Open PDF in new window blocked by browser';\r\n\t}\r\n\r\n\treturn win;\r\n};\r\n\r\nDocument.prototype._openPdf = function (options, win) {\r\n\tif (!win) {\r\n\t\twin = this._openWindow();\r\n\t}\r\n\ttry {\r\n\t\tthis.getBlob(function (result) {\r\n\t\t\tvar urlCreator = window.URL || window.webkitURL;\r\n\t\t\tvar pdfUrl = urlCreator.createObjectURL(result);\r\n\t\t\twin.location.href = pdfUrl;\r\n\r\n\t\t\t/* temporarily disabled\r\n\t\t\tif (win !== window) {\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tif (isNull(win.window)) { // is closed by AdBlock\r\n\t\t\t\t\t\twindow.location.href = pdfUrl; // open in actual window\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 500);\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t}, options);\r\n\t} catch (e) {\r\n\t\twin.close();\r\n\t\tthrow e;\r\n\t}\r\n};\r\n\r\nDocument.prototype.open = function (options, win) {\r\n\toptions = options || {};\r\n\toptions.autoPrint = false;\r\n\twin = win || null;\r\n\r\n\tthis._openPdf(options, win);\r\n};\r\n\r\n\r\nDocument.prototype.print = function (options, win) {\r\n\toptions = options || {};\r\n\toptions.autoPrint = true;\r\n\twin = win || null;\r\n\r\n\tthis._openPdf(options, win);\r\n};\r\n\r\n/**\r\n * download(defaultFileName = 'file.pdf', cb = null, options = {})\r\n * or\r\n * download(cb, options = {})\r\n */\r\nDocument.prototype.download = function (defaultFileName, cb, options) {\r\n\tif (isFunction(defaultFileName)) {\r\n\t\tif (!isUndefined(cb)) {\r\n\t\t\toptions = cb;\r\n\t\t}\r\n\t\tcb = defaultFileName;\r\n\t\tdefaultFileName = null;\r\n\t}\r\n\r\n\tdefaultFileName = defaultFileName || 'file.pdf';\r\n\tthis.getBlob(function (result) {\r\n\t\tsaveAs(result, defaultFileName);\r\n\r\n\t\tif (isFunction(cb)) {\r\n\t\t\tcb();\r\n\t\t}\r\n\t}, options);\r\n};\r\n\r\nDocument.prototype.getBase64 = function (cb, options) {\r\n\tif (!cb) {\r\n\t\tthrow 'getBase64 is an async method and needs a callback argument';\r\n\t}\r\n\tthis.getBuffer(function (buffer) {\r\n\t\tcb(buffer.toString('base64'));\r\n\t}, options);\r\n};\r\n\r\nDocument.prototype.getDataUrl = function (cb, options) {\r\n\tif (!cb) {\r\n\t\tthrow 'getDataUrl is an async method and needs a callback argument';\r\n\t}\r\n\tthis.getBuffer(function (buffer) {\r\n\t\tcb('data:application/pdf;base64,' + buffer.toString('base64'));\r\n\t}, options);\r\n};\r\n\r\nDocument.prototype.getBlob = function (cb, options) {\r\n\tif (!cb) {\r\n\t\tthrow 'getBlob is an async method and needs a callback argument';\r\n\t}\r\n\tvar that = this;\r\n\tthis.getBuffer(function (result) {\r\n\t\tvar blob = that._bufferToBlob(result);\r\n\t\tcb(blob);\r\n\t}, options);\r\n};\r\n\r\nDocument.prototype.getBuffer = function (cb, options) {\r\n\tif (!cb) {\r\n\t\tthrow 'getBuffer is an async method and needs a callback argument';\r\n\t}\r\n\r\n\tvar _this = this;\r\n\r\n\tthis._createDoc(options, function (doc) {\r\n\t\t_this._flushDoc(doc, function (buffer) {\r\n\t\t\tcb(buffer);\r\n\t\t});\r\n\t});\r\n};\r\n\r\nDocument.prototype.getStream = function (options, cb) {\r\n\tif (!isFunction(cb)) {\r\n\t\tvar doc = this._createDoc(options);\r\n\t\treturn doc;\r\n\t}\r\n\r\n\tthis._createDoc(options, function (doc) {\r\n\t\tcb(doc);\r\n\t});\r\n};\r\n\r\nmodule.exports = {\r\n\tcreatePdf: function (docDefinition, tableLayouts, fonts, vfs) {\r\n\t\tif (!canCreatePdf()) {\r\n\t\t\tthrow 'Your browser does not provide the level of support needed';\r\n\t\t}\r\n\t\treturn new Document(\r\n\t\t\tdocDefinition,\r\n\t\t\ttableLayouts || __webpack_require__.g.pdfMake.tableLayouts,\r\n\t\t\tfonts || __webpack_require__.g.pdfMake.fonts,\r\n\t\t\tvfs || __webpack_require__.g.pdfMake.vfs\r\n\t\t);\r\n\t}\r\n};\r\n\n\n/***/ }),\n\n/***/ 48181:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\nvar __dirname = \"/\";\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n\r\n\r\nfunction VirtualFileSystem() {\r\n\tthis.fileSystem = {};\r\n\tthis.dataSystem = {};\r\n}\r\n\r\nVirtualFileSystem.prototype.existsSync = function (filename) {\r\n\tfilename = fixFilename(filename);\r\n\treturn typeof this.fileSystem[filename] !== 'undefined'\r\n\t\t|| typeof this.dataSystem[filename] !== 'undefined';\r\n}\r\n\r\nVirtualFileSystem.prototype.readFileSync = function (filename, options) {\r\n\tfilename = fixFilename(filename);\r\n\r\n\tvar dataContent = this.dataSystem[filename];\r\n\tif (typeof dataContent === 'string' && options === 'utf8') {\r\n\t\treturn dataContent;\r\n\t}\r\n\r\n\tif (dataContent) {\r\n\t\treturn new Buffer(dataContent, typeof dataContent === 'string' ? 'base64' : undefined);\r\n\t}\r\n\r\n\tvar content = this.fileSystem[filename];\r\n\tif (content) {\r\n\t\treturn content;\r\n\t}\r\n\r\n\tthrow 'File \\'' + filename + '\\' not found in virtual file system';\r\n};\r\n\r\nVirtualFileSystem.prototype.writeFileSync = function (filename, content) {\r\n\tthis.fileSystem[fixFilename(filename)] = content;\r\n};\r\n\r\nVirtualFileSystem.prototype.bindFS = function (data) {\r\n\tthis.dataSystem = data || {};\r\n};\r\n\r\n\r\nfunction fixFilename(filename) {\r\n\tif (filename.indexOf(__dirname) === 0) {\r\n\t\tfilename = filename.substring(__dirname.length);\r\n\t}\r\n\r\n\tif (filename.indexOf('/') === 0) {\r\n\t\tfilename = filename.substring(1);\r\n\t}\r\n\r\n\treturn filename;\r\n}\r\n\r\nmodule.exports = new VirtualFileSystem();\r\n\n\n/***/ }),\n\n/***/ 77530:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar isString = (__webpack_require__(91867).isString);\r\n\r\nfunction buildColumnWidths(columns, availableWidth) {\r\n\tvar autoColumns = [],\r\n\t\tautoMin = 0, autoMax = 0,\r\n\t\tstarColumns = [],\r\n\t\tstarMaxMin = 0,\r\n\t\tstarMaxMax = 0,\r\n\t\tfixedColumns = [],\r\n\t\tinitial_availableWidth = availableWidth;\r\n\r\n\tcolumns.forEach(function (column) {\r\n\t\tif (isAutoColumn(column)) {\r\n\t\t\tautoColumns.push(column);\r\n\t\t\tautoMin += column._minWidth;\r\n\t\t\tautoMax += column._maxWidth;\r\n\t\t} else if (isStarColumn(column)) {\r\n\t\t\tstarColumns.push(column);\r\n\t\t\tstarMaxMin = Math.max(starMaxMin, column._minWidth);\r\n\t\t\tstarMaxMax = Math.max(starMaxMax, column._maxWidth);\r\n\t\t} else {\r\n\t\t\tfixedColumns.push(column);\r\n\t\t}\r\n\t});\r\n\r\n\tfixedColumns.forEach(function (col) {\r\n\t\t// width specified as %\r\n\t\tif (isString(col.width) && /\\d+%/.test(col.width)) {\r\n\t\t\tcol.width = parseFloat(col.width) * initial_availableWidth / 100;\r\n\t\t}\r\n\t\tif (col.width < (col._minWidth) && col.elasticWidth) {\r\n\t\t\tcol._calcWidth = col._minWidth;\r\n\t\t} else {\r\n\t\t\tcol._calcWidth = col.width;\r\n\t\t}\r\n\r\n\t\tavailableWidth -= col._calcWidth;\r\n\t});\r\n\r\n\t// http://www.freesoft.org/CIE/RFC/1942/18.htm\r\n\t// http://www.w3.org/TR/CSS2/tables.html#width-layout\r\n\t// http://dev.w3.org/csswg/css3-tables-algorithms/Overview.src.htm\r\n\tvar minW = autoMin + starMaxMin * starColumns.length;\r\n\tvar maxW = autoMax + starMaxMax * starColumns.length;\r\n\tif (minW >= availableWidth) {\r\n\t\t// case 1 - there's no way to fit all columns within available width\r\n\t\t// that's actually pretty bad situation with PDF as we have no horizontal scroll\r\n\t\t// no easy workaround (unless we decide, in the future, to split single words)\r\n\t\t// currently we simply use minWidths for all columns\r\n\t\tautoColumns.forEach(function (col) {\r\n\t\t\tcol._calcWidth = col._minWidth;\r\n\t\t});\r\n\r\n\t\tstarColumns.forEach(function (col) {\r\n\t\t\tcol._calcWidth = starMaxMin; // starMaxMin already contains padding\r\n\t\t});\r\n\t} else {\r\n\t\tif (maxW < availableWidth) {\r\n\t\t\t// case 2 - we can fit rest of the table within available space\r\n\t\t\tautoColumns.forEach(function (col) {\r\n\t\t\t\tcol._calcWidth = col._maxWidth;\r\n\t\t\t\tavailableWidth -= col._calcWidth;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// maxW is too large, but minW fits within available width\r\n\t\t\tvar W = availableWidth - minW;\r\n\t\t\tvar D = maxW - minW;\r\n\r\n\t\t\tautoColumns.forEach(function (col) {\r\n\t\t\t\tvar d = col._maxWidth - col._minWidth;\r\n\t\t\t\tcol._calcWidth = col._minWidth + d * W / D;\r\n\t\t\t\tavailableWidth -= col._calcWidth;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (starColumns.length > 0) {\r\n\t\t\tvar starSize = availableWidth / starColumns.length;\r\n\r\n\t\t\tstarColumns.forEach(function (col) {\r\n\t\t\t\tcol._calcWidth = starSize;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction isAutoColumn(column) {\r\n\treturn column.width === 'auto';\r\n}\r\n\r\nfunction isStarColumn(column) {\r\n\treturn column.width === null || column.width === undefined || column.width === '*' || column.width === 'star';\r\n}\r\n\r\n//TODO: refactor and reuse in measureTable\r\nfunction measureMinMax(columns) {\r\n\tvar result = { min: 0, max: 0 };\r\n\r\n\tvar maxStar = { min: 0, max: 0 };\r\n\tvar starCount = 0;\r\n\r\n\tfor (var i = 0, l = columns.length; i < l; i++) {\r\n\t\tvar c = columns[i];\r\n\r\n\t\tif (isStarColumn(c)) {\r\n\t\t\tmaxStar.min = Math.max(maxStar.min, c._minWidth);\r\n\t\t\tmaxStar.max = Math.max(maxStar.max, c._maxWidth);\r\n\t\t\tstarCount++;\r\n\t\t} else if (isAutoColumn(c)) {\r\n\t\t\tresult.min += c._minWidth;\r\n\t\t\tresult.max += c._maxWidth;\r\n\t\t} else {\r\n\t\t\tresult.min += ((c.width !== undefined && c.width) || c._minWidth);\r\n\t\t\tresult.max += ((c.width !== undefined && c.width) || c._maxWidth);\r\n\t\t}\r\n\t}\r\n\r\n\tif (starCount) {\r\n\t\tresult.min += starCount * maxStar.min;\r\n\t\tresult.max += starCount * maxStar.max;\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\n/**\r\n * Calculates column widths\r\n * @private\r\n */\r\nmodule.exports = {\r\n\tbuildColumnWidths: buildColumnWidths,\r\n\tmeasureMinMax: measureMinMax,\r\n\tisAutoColumn: isAutoColumn,\r\n\tisStarColumn: isStarColumn\r\n};\r\n\n\n/***/ }),\n\n/***/ 42526:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/*eslint no-unused-vars: [\"error\", {\"args\": \"none\"}]*/\r\n\r\n\r\n\r\nvar TextTools = __webpack_require__(11548);\r\nvar StyleContextStack = __webpack_require__(76442);\r\nvar ColumnCalculator = __webpack_require__(77530);\r\nvar isString = (__webpack_require__(91867).isString);\r\nvar isNumber = (__webpack_require__(91867).isNumber);\r\nvar isObject = (__webpack_require__(91867).isObject);\r\nvar isArray = (__webpack_require__(91867).isArray);\r\nvar fontStringify = (__webpack_require__(91867).fontStringify);\r\nvar getNodeId = (__webpack_require__(91867).getNodeId);\r\nvar pack = (__webpack_require__(91867).pack);\r\nvar qrEncoder = __webpack_require__(72155);\r\n\r\n/**\r\n * @private\r\n */\r\nfunction DocMeasure(fontProvider, styleDictionary, defaultStyle, imageMeasure, svgMeasure, tableLayouts, images) {\r\n\tthis.textTools = new TextTools(fontProvider);\r\n\tthis.styleStack = new StyleContextStack(styleDictionary, defaultStyle);\r\n\tthis.imageMeasure = imageMeasure;\r\n\tthis.svgMeasure = svgMeasure;\r\n\tthis.tableLayouts = tableLayouts;\r\n\tthis.images = images;\r\n\tthis.autoImageIndex = 1;\r\n}\r\n\r\n/**\r\n * Measures all nodes and sets min/max-width properties required for the second\r\n * layout-pass.\r\n * @param {Object} docStructure document-definition-object\r\n * @return {Object} document-measurement-object\r\n */\r\nDocMeasure.prototype.measureDocument = function (docStructure) {\r\n\treturn this.measureNode(docStructure);\r\n};\r\n\r\nDocMeasure.prototype.measureNode = function (node) {\r\n\r\n\tvar self = this;\r\n\r\n\treturn this.styleStack.auto(node, function () {\r\n\t\t// TODO: refactor + rethink whether this is the proper way to handle margins\r\n\t\tnode._margin = getNodeMargin(node);\r\n\r\n\t\tif (node.columns) {\r\n\t\t\treturn extendMargins(self.measureColumns(node));\r\n\t\t} else if (node.stack) {\r\n\t\t\treturn extendMargins(self.measureVerticalContainer(node));\r\n\t\t} else if (node.ul) {\r\n\t\t\treturn extendMargins(self.measureUnorderedList(node));\r\n\t\t} else if (node.ol) {\r\n\t\t\treturn extendMargins(self.measureOrderedList(node));\r\n\t\t} else if (node.table) {\r\n\t\t\treturn extendMargins(self.measureTable(node));\r\n\t\t} else if (node.text !== undefined) {\r\n\t\t\treturn extendMargins(self.measureLeaf(node));\r\n\t\t} else if (node.toc) {\r\n\t\t\treturn extendMargins(self.measureToc(node));\r\n\t\t} else if (node.image) {\r\n\t\t\treturn extendMargins(self.measureImage(node));\r\n\t\t} else if (node.svg) {\r\n\t\t\treturn extendMargins(self.measureSVG(node));\r\n\t\t} else if (node.canvas) {\r\n\t\t\treturn extendMargins(self.measureCanvas(node));\r\n\t\t} else if (node.qr) {\r\n\t\t\treturn extendMargins(self.measureQr(node));\r\n\t\t} else {\r\n\t\t\tthrow 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);\r\n\t\t}\r\n\t});\r\n\r\n\tfunction extendMargins(node) {\r\n\t\tvar margin = node._margin;\r\n\r\n\t\tif (margin) {\r\n\t\t\tnode._minWidth += margin[0] + margin[2];\r\n\t\t\tnode._maxWidth += margin[0] + margin[2];\r\n\t\t}\r\n\r\n\t\treturn node;\r\n\t}\r\n\r\n\tfunction getNodeMargin() {\r\n\r\n\t\tfunction processSingleMargins(node, currentMargin) {\r\n\t\t\tif (node.marginLeft || node.marginTop || node.marginRight || node.marginBottom) {\r\n\t\t\t\treturn [\r\n\t\t\t\t\tnode.marginLeft || currentMargin[0] || 0,\r\n\t\t\t\t\tnode.marginTop || currentMargin[1] || 0,\r\n\t\t\t\t\tnode.marginRight || currentMargin[2] || 0,\r\n\t\t\t\t\tnode.marginBottom || currentMargin[3] || 0\r\n\t\t\t\t];\r\n\t\t\t}\r\n\t\t\treturn currentMargin;\r\n\t\t}\r\n\r\n\t\tfunction flattenStyleArray(styleArray) {\r\n\t\t\tvar flattenedStyles = {};\r\n\t\t\tfor (var i = styleArray.length - 1; i >= 0; i--) {\r\n\t\t\t\tvar styleName = styleArray[i];\r\n\t\t\t\tvar style = self.styleStack.styleDictionary[styleName];\r\n\t\t\t\tfor (var key in style) {\r\n\t\t\t\t\tif (style.hasOwnProperty(key)) {\r\n\t\t\t\t\t\tflattenedStyles[key] = style[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn flattenedStyles;\r\n\t\t}\r\n\r\n\t\tfunction convertMargin(margin) {\r\n\t\t\tif (isNumber(margin)) {\r\n\t\t\t\tmargin = [margin, margin, margin, margin];\r\n\t\t\t} else if (isArray(margin)) {\r\n\t\t\t\tif (margin.length === 2) {\r\n\t\t\t\t\tmargin = [margin[0], margin[1], margin[0], margin[1]];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn margin;\r\n\t\t}\r\n\r\n\t\tvar margin = [undefined, undefined, undefined, undefined];\r\n\r\n\t\tif (node.style) {\r\n\t\t\tvar styleArray = isArray(node.style) ? node.style : [node.style];\r\n\t\t\tvar flattenedStyleArray = flattenStyleArray(styleArray);\r\n\r\n\t\t\tif (flattenedStyleArray) {\r\n\t\t\t\tmargin = processSingleMargins(flattenedStyleArray, margin);\r\n\t\t\t}\r\n\r\n\t\t\tif (flattenedStyleArray.margin) {\r\n\t\t\t\tmargin = convertMargin(flattenedStyleArray.margin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tmargin = processSingleMargins(node, margin);\r\n\r\n\t\tif (node.margin) {\r\n\t\t\tmargin = convertMargin(node.margin);\r\n\t\t}\r\n\r\n\t\tif (margin[0] === undefined && margin[1] === undefined && margin[2] === undefined && margin[3] === undefined) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn margin;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nDocMeasure.prototype.convertIfBase64Image = function (node) {\r\n\tif (/^data:image\\/(jpeg|jpg|png);base64,/.test(node.image)) {\r\n\t\tvar label = '$$pdfmake$$' + this.autoImageIndex++;\r\n\t\tthis.images[label] = node.image;\r\n\t\tnode.image = label;\r\n\t}\r\n};\r\n\r\nDocMeasure.prototype.measureImageWithDimensions = function (node, dimensions) {\r\n\tif (node.fit) {\r\n\t\tvar factor = (dimensions.width / dimensions.height > node.fit[0] / node.fit[1]) ? node.fit[0] / dimensions.width : node.fit[1] / dimensions.height;\r\n\t\tnode._width = node._minWidth = node._maxWidth = dimensions.width * factor;\r\n\t\tnode._height = dimensions.height * factor;\r\n\t} else if (node.cover) {\r\n\t\tnode._width = node._minWidth = node._maxWidth = node.cover.width;\r\n\t\tnode._height = node._minHeight = node._maxHeight = node.cover.height;\r\n\t} else {\r\n\t\tnode._width = node._minWidth = node._maxWidth = node.width || dimensions.width;\r\n\t\tnode._height = node.height || (dimensions.height * node._width / dimensions.width);\r\n\r\n\t\tif (isNumber(node.maxWidth) && node.maxWidth < node._width) {\r\n\t\t\tnode._width = node._minWidth = node._maxWidth = node.maxWidth;\r\n\t\t\tnode._height = node._width * dimensions.height / dimensions.width;\r\n\t\t}\r\n\r\n\t\tif (isNumber(node.maxHeight) && node.maxHeight < node._height) {\r\n\t\t\tnode._height = node.maxHeight;\r\n\t\t\tnode._width = node._minWidth = node._maxWidth = node._height * dimensions.width / dimensions.height;\r\n\t\t}\r\n\r\n\t\tif (isNumber(node.minWidth) && node.minWidth > node._width) {\r\n\t\t\tnode._width = node._minWidth = node._maxWidth = node.minWidth;\r\n\t\t\tnode._height = node._width * dimensions.height / dimensions.width;\r\n\t\t}\r\n\r\n\t\tif (isNumber(node.minHeight) && node.minHeight > node._height) {\r\n\t\t\tnode._height = node.minHeight;\r\n\t\t\tnode._width = node._minWidth = node._maxWidth = node._height * dimensions.width / dimensions.height;\r\n\t\t}\r\n\t}\r\n\r\n\tnode._alignment = this.styleStack.getProperty('alignment');\r\n};\r\n\r\nDocMeasure.prototype.measureImage = function (node) {\r\n\tif (this.images) {\r\n\t\tthis.convertIfBase64Image(node);\r\n\t}\r\n\r\n\tvar dimensions = this.imageMeasure.measureImage(node.image);\r\n\r\n\tthis.measureImageWithDimensions(node, dimensions);\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureSVG = function (node) {\r\n\r\n\tvar dimensions = this.svgMeasure.measureSVG(node.svg);\r\n\r\n\tthis.measureImageWithDimensions(node, dimensions);\r\n\r\n\tnode.font = this.styleStack.getProperty('font');\r\n\r\n\t// scale SVG based on final dimension\r\n\tnode.svg = this.svgMeasure.writeDimensions(node.svg, {\r\n\t\twidth: node._width,\r\n\t\theight: node._height\r\n\t});\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureLeaf = function (node) {\r\n\r\n\tif (node._textRef && node._textRef._textNodeRef.text) {\r\n\t\tnode.text = node._textRef._textNodeRef.text;\r\n\t}\r\n\r\n\t// Make sure style properties of the node itself are considered when building inlines.\r\n\t// We could also just pass [node] to buildInlines, but that fails for bullet points.\r\n\tvar styleStack = this.styleStack.clone();\r\n\tstyleStack.push(node);\r\n\r\n\tvar data = this.textTools.buildInlines(node.text, styleStack);\r\n\r\n\tnode._inlines = data.items;\r\n\tnode._minWidth = data.minWidth;\r\n\tnode._maxWidth = data.maxWidth;\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureToc = function (node) {\r\n\tif (node.toc.title) {\r\n\t\tnode.toc.title = this.measureNode(node.toc.title);\r\n\t}\r\n\r\n\tif (node.toc._items.length > 0) {\r\n\t\tvar body = [];\r\n\t\tvar textStyle = node.toc.textStyle || {};\r\n\t\tvar numberStyle = node.toc.numberStyle || textStyle;\r\n\t\tvar textMargin = node.toc.textMargin || [0, 0, 0, 0];\r\n\t\tfor (var i = 0, l = node.toc._items.length; i < l; i++) {\r\n\t\t\tvar item = node.toc._items[i];\r\n\t\t\tvar lineStyle = item._textNodeRef.tocStyle || textStyle;\r\n\t\t\tvar lineMargin = item._textNodeRef.tocMargin || textMargin;\r\n\t\t\tvar lineNumberStyle = item._textNodeRef.tocNumberStyle || numberStyle;\r\n\t\t\tvar destination = getNodeId(item._nodeRef);\r\n\t\t\tbody.push([\r\n\t\t\t\t{ text: item._textNodeRef.text, linkToDestination: destination, alignment: 'left', style: lineStyle, margin: lineMargin },\r\n\t\t\t\t{ text: '00000', linkToDestination: destination, alignment: 'right', _tocItemRef: item._nodeRef, style: lineNumberStyle, margin: [0, lineMargin[1], 0, lineMargin[3]] }\r\n\t\t\t]);\r\n\t\t}\r\n\r\n\r\n\t\tnode.toc._table = {\r\n\t\t\ttable: {\r\n\t\t\t\tdontBreakRows: true,\r\n\t\t\t\twidths: ['*', 'auto'],\r\n\t\t\t\tbody: body\r\n\t\t\t},\r\n\t\t\tlayout: 'noBorders'\r\n\t\t};\r\n\r\n\t\tnode.toc._table = this.measureNode(node.toc._table);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureVerticalContainer = function (node) {\r\n\tvar items = node.stack;\r\n\r\n\tnode._minWidth = 0;\r\n\tnode._maxWidth = 0;\r\n\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\titems[i] = this.measureNode(items[i]);\r\n\r\n\t\tnode._minWidth = Math.max(node._minWidth, items[i]._minWidth);\r\n\t\tnode._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.gapSizeForList = function () {\r\n\treturn this.textTools.sizeOfString('9. ', this.styleStack);\r\n};\r\n\r\nDocMeasure.prototype.buildUnorderedMarker = function (styleStack, gapSize, type) {\r\n\tfunction buildDisc(gapSize, color) {\r\n\t\t// TODO: ascender-based calculations\r\n\t\tvar radius = gapSize.fontSize / 6;\r\n\t\treturn {\r\n\t\t\tcanvas: [{\r\n\t\t\t\tx: radius,\r\n\t\t\t\ty: (gapSize.height / gapSize.lineHeight) + gapSize.descender - gapSize.fontSize / 3,\r\n\t\t\t\tr1: radius,\r\n\t\t\t\tr2: radius,\r\n\t\t\t\ttype: 'ellipse',\r\n\t\t\t\tcolor: color\r\n\t\t\t}]\r\n\t\t};\r\n\t}\r\n\r\n\tfunction buildSquare(gapSize, color) {\r\n\t\t// TODO: ascender-based calculations\r\n\t\tvar size = gapSize.fontSize / 3;\r\n\t\treturn {\r\n\t\t\tcanvas: [{\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: (gapSize.height / gapSize.lineHeight) + gapSize.descender - (gapSize.fontSize / 3) - (size / 2),\r\n\t\t\t\th: size,\r\n\t\t\t\tw: size,\r\n\t\t\t\ttype: 'rect',\r\n\t\t\t\tcolor: color\r\n\t\t\t}]\r\n\t\t};\r\n\t}\r\n\r\n\tfunction buildCircle(gapSize, color) {\r\n\t\t// TODO: ascender-based calculations\r\n\t\tvar radius = gapSize.fontSize / 6;\r\n\t\treturn {\r\n\t\t\tcanvas: [{\r\n\t\t\t\tx: radius,\r\n\t\t\t\ty: (gapSize.height / gapSize.lineHeight) + gapSize.descender - gapSize.fontSize / 3,\r\n\t\t\t\tr1: radius,\r\n\t\t\t\tr2: radius,\r\n\t\t\t\ttype: 'ellipse',\r\n\t\t\t\tlineColor: color\r\n\t\t\t}]\r\n\t\t};\r\n\t}\r\n\r\n\tvar marker;\r\n\tvar color = styleStack.getProperty('markerColor') || styleStack.getProperty('color') || 'black';\r\n\r\n\tswitch (type) {\r\n\t\tcase 'circle':\r\n\t\t\tmarker = buildCircle(gapSize, color);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'square':\r\n\t\t\tmarker = buildSquare(gapSize, color);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'none':\r\n\t\t\tmarker = {};\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'disc':\r\n\t\tdefault:\r\n\t\t\tmarker = buildDisc(gapSize, color);\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tmarker._minWidth = marker._maxWidth = gapSize.width;\r\n\tmarker._minHeight = marker._maxHeight = gapSize.height;\r\n\r\n\treturn marker;\r\n};\r\n\r\nDocMeasure.prototype.buildOrderedMarker = function (counter, styleStack, type, separator) {\r\n\tfunction prepareAlpha(counter) {\r\n\t\tfunction toAlpha(num) {\r\n\t\t\treturn (num >= 26 ? toAlpha((num / 26 >> 0) - 1) : '') + 'abcdefghijklmnopqrstuvwxyz'[num % 26 >> 0];\r\n\t\t}\r\n\r\n\t\tif (counter < 1) {\r\n\t\t\treturn counter.toString();\r\n\t\t}\r\n\r\n\t\treturn toAlpha(counter - 1);\r\n\t}\r\n\r\n\tfunction prepareRoman(counter) {\r\n\t\tif (counter < 1 || counter > 4999) {\r\n\t\t\treturn counter.toString();\r\n\t\t}\r\n\t\tvar num = counter;\r\n\t\tvar lookup = { M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1 }, roman = '', i;\r\n\t\tfor (i in lookup) {\r\n\t\t\twhile (num >= lookup[i]) {\r\n\t\t\t\troman += i;\r\n\t\t\t\tnum -= lookup[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn roman;\r\n\t}\r\n\r\n\tfunction prepareDecimal(counter) {\r\n\t\treturn counter.toString();\r\n\t}\r\n\r\n\tvar counterText;\r\n\tswitch (type) {\r\n\t\tcase 'none':\r\n\t\t\tcounterText = null;\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'upper-alpha':\r\n\t\t\tcounterText = prepareAlpha(counter).toUpperCase();\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'lower-alpha':\r\n\t\t\tcounterText = prepareAlpha(counter);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'upper-roman':\r\n\t\t\tcounterText = prepareRoman(counter);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'lower-roman':\r\n\t\t\tcounterText = prepareRoman(counter).toLowerCase();\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'decimal':\r\n\t\tdefault:\r\n\t\t\tcounterText = prepareDecimal(counter);\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (counterText === null) {\r\n\t\treturn {};\r\n\t}\r\n\r\n\tif (separator) {\r\n\t\tif (isArray(separator)) {\r\n\t\t\tif (separator[0]) {\r\n\t\t\t\tcounterText = separator[0] + counterText;\r\n\t\t\t}\r\n\r\n\t\t\tif (separator[1]) {\r\n\t\t\t\tcounterText += separator[1];\r\n\t\t\t}\r\n\t\t\tcounterText += ' ';\r\n\t\t} else {\r\n\t\t\tcounterText += separator + ' ';\r\n\t\t}\r\n\t}\r\n\r\n\tvar textArray = { text: counterText };\r\n\tvar markerColor = styleStack.getProperty('markerColor');\r\n\tif (markerColor) {\r\n\t\ttextArray.color = markerColor;\r\n\t}\r\n\r\n\treturn { _inlines: this.textTools.buildInlines(textArray, styleStack).items };\r\n};\r\n\r\nDocMeasure.prototype.measureUnorderedList = function (node) {\r\n\tvar style = this.styleStack.clone();\r\n\tvar items = node.ul;\r\n\tnode.type = node.type || 'disc';\r\n\tnode._gapSize = this.gapSizeForList();\r\n\tnode._minWidth = 0;\r\n\tnode._maxWidth = 0;\r\n\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\tvar item = items[i] = this.measureNode(items[i]);\r\n\r\n\t\tif (!item.ol && !item.ul) {\r\n\t\t\titem.listMarker = this.buildUnorderedMarker(style, node._gapSize, item.listType || node.type);\r\n\t\t}\r\n\r\n\t\tnode._minWidth = Math.max(node._minWidth, items[i]._minWidth + node._gapSize.width);\r\n\t\tnode._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth + node._gapSize.width);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureOrderedList = function (node) {\r\n\tvar style = this.styleStack.clone();\r\n\tvar items = node.ol;\r\n\tnode.type = node.type || 'decimal';\r\n\tnode.separator = node.separator || '.';\r\n\tnode.reversed = node.reversed || false;\r\n\tif (!isNumber(node.start)) {\r\n\t\tnode.start = node.reversed ? items.length : 1;\r\n\t}\r\n\tnode._gapSize = this.gapSizeForList();\r\n\tnode._minWidth = 0;\r\n\tnode._maxWidth = 0;\r\n\r\n\tvar counter = node.start;\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\tvar item = items[i] = this.measureNode(items[i]);\r\n\r\n\t\tif (!item.ol && !item.ul) {\r\n\t\t\tvar counterValue = isNumber(item.counter) ? item.counter : counter;\r\n\t\t\titem.listMarker = this.buildOrderedMarker(counterValue, style, item.listType || node.type, node.separator);\r\n\t\t\tif (item.listMarker._inlines) {\r\n\t\t\t\tnode._gapSize.width = Math.max(node._gapSize.width, item.listMarker._inlines[0].width);\r\n\t\t\t}\r\n\t\t} // TODO: else - nested lists numbering\r\n\r\n\t\tnode._minWidth = Math.max(node._minWidth, items[i]._minWidth);\r\n\t\tnode._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth);\r\n\r\n\t\tif (node.reversed) {\r\n\t\t\tcounter--;\r\n\t\t} else {\r\n\t\t\tcounter++;\r\n\t\t}\r\n\t}\r\n\r\n\tnode._minWidth += node._gapSize.width;\r\n\tnode._maxWidth += node._gapSize.width;\r\n\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\tvar item = items[i];\r\n\t\tif (!item.ol && !item.ul) {\r\n\t\t\titem.listMarker._minWidth = item.listMarker._maxWidth = node._gapSize.width;\r\n\t\t}\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureColumns = function (node) {\r\n\tvar columns = node.columns;\r\n\tnode._gap = this.styleStack.getProperty('columnGap') || 0;\r\n\r\n\tfor (var i = 0, l = columns.length; i < l; i++) {\r\n\t\tcolumns[i] = this.measureNode(columns[i]);\r\n\t}\r\n\r\n\tvar measures = ColumnCalculator.measureMinMax(columns);\r\n\r\n\tvar numGaps = (columns.length > 0) ? (columns.length - 1) : 0;\r\n\tnode._minWidth = measures.min + node._gap * numGaps;\r\n\tnode._maxWidth = measures.max + node._gap * numGaps;\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureTable = function (node) {\r\n\textendTableWidths(node);\r\n\tnode._layout = getLayout(this.tableLayouts);\r\n\tnode._offsets = getOffsets(node._layout);\r\n\r\n\tvar colSpans = [];\r\n\tvar col, row, cols, rows;\r\n\r\n\tfor (col = 0, cols = node.table.body[0].length; col < cols; col++) {\r\n\t\tvar c = node.table.widths[col];\r\n\t\tc._minWidth = 0;\r\n\t\tc._maxWidth = 0;\r\n\r\n\t\tfor (row = 0, rows = node.table.body.length; row < rows; row++) {\r\n\t\t\tvar rowData = node.table.body[row];\r\n\t\t\tvar data = rowData[col];\r\n\t\t\tif (data === undefined) {\r\n\t\t\t\tconsole.error('Malformed table row ', rowData, 'in node ', node);\r\n\t\t\t\tthrow 'Malformed table row, a cell is undefined.';\r\n\t\t\t}\r\n\t\t\tif (data === null) { // transform to object\r\n\t\t\t\tdata = '';\r\n\t\t\t}\r\n\r\n\t\t\tif (!data._span) {\r\n\t\t\t\tdata = rowData[col] = this.styleStack.auto(data, measureCb(this, data));\r\n\r\n\t\t\t\tif (data.colSpan && data.colSpan > 1) {\r\n\t\t\t\t\tmarkSpans(rowData, col, data.colSpan);\r\n\t\t\t\t\tcolSpans.push({ col: col, span: data.colSpan, minWidth: data._minWidth, maxWidth: data._maxWidth });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tc._minWidth = Math.max(c._minWidth, data._minWidth);\r\n\t\t\t\t\tc._maxWidth = Math.max(c._maxWidth, data._maxWidth);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (data.rowSpan && data.rowSpan > 1) {\r\n\t\t\t\tmarkVSpans(node.table, row, col, data.rowSpan);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\textendWidthsForColSpans();\r\n\r\n\tvar measures = ColumnCalculator.measureMinMax(node.table.widths);\r\n\r\n\tnode._minWidth = measures.min + node._offsets.total;\r\n\tnode._maxWidth = measures.max + node._offsets.total;\r\n\r\n\treturn node;\r\n\r\n\tfunction measureCb(_this, data) {\r\n\t\treturn function () {\r\n\t\t\tif (isObject(data)) {\r\n\t\t\t\tdata.fillColor = _this.styleStack.getProperty('fillColor');\r\n\t\t\t\tdata.fillOpacity = _this.styleStack.getProperty('fillOpacity');\r\n\t\t\t}\r\n\t\t\treturn _this.measureNode(data);\r\n\t\t};\r\n\t}\r\n\r\n\tfunction getLayout(tableLayouts) {\r\n\t\tvar layout = node.layout;\r\n\r\n\t\tif (isString(layout)) {\r\n\t\t\tlayout = tableLayouts[layout];\r\n\t\t}\r\n\r\n\t\tvar defaultLayout = {\r\n\t\t\thLineWidth: function (i, node) {\r\n\t\t\t\treturn 1;\r\n\t\t\t},\r\n\t\t\tvLineWidth: function (i, node) {\r\n\t\t\t\treturn 1;\r\n\t\t\t},\r\n\t\t\thLineColor: function (i, node) {\r\n\t\t\t\treturn 'black';\r\n\t\t\t},\r\n\t\t\tvLineColor: function (i, node) {\r\n\t\t\t\treturn 'black';\r\n\t\t\t},\r\n\t\t\thLineStyle: function (i, node) {\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tvLineStyle: function (i, node) {\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tpaddingLeft: function (i, node) {\r\n\t\t\t\treturn 4;\r\n\t\t\t},\r\n\t\t\tpaddingRight: function (i, node) {\r\n\t\t\t\treturn 4;\r\n\t\t\t},\r\n\t\t\tpaddingTop: function (i, node) {\r\n\t\t\t\treturn 2;\r\n\t\t\t},\r\n\t\t\tpaddingBottom: function (i, node) {\r\n\t\t\t\treturn 2;\r\n\t\t\t},\r\n\t\t\tfillColor: function (i, node) {\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tfillOpacity: function (i, node) {\r\n\t\t\t\treturn 1;\r\n\t\t\t},\r\n\t\t\tdefaultBorder: true\r\n\t\t};\r\n\r\n\t\treturn pack(defaultLayout, layout);\r\n\t}\r\n\r\n\tfunction getOffsets(layout) {\r\n\t\tvar offsets = [];\r\n\t\tvar totalOffset = 0;\r\n\t\tvar prevRightPadding = 0;\r\n\r\n\t\tfor (var i = 0, l = node.table.widths.length; i < l; i++) {\r\n\t\t\tvar lOffset = prevRightPadding + layout.vLineWidth(i, node) + layout.paddingLeft(i, node);\r\n\t\t\toffsets.push(lOffset);\r\n\t\t\ttotalOffset += lOffset;\r\n\t\t\tprevRightPadding = layout.paddingRight(i, node);\r\n\t\t}\r\n\r\n\t\ttotalOffset += prevRightPadding + layout.vLineWidth(node.table.widths.length, node);\r\n\r\n\t\treturn {\r\n\t\t\ttotal: totalOffset,\r\n\t\t\toffsets: offsets\r\n\t\t};\r\n\t}\r\n\r\n\tfunction extendWidthsForColSpans() {\r\n\t\tvar q, j;\r\n\r\n\t\tfor (var i = 0, l = colSpans.length; i < l; i++) {\r\n\t\t\tvar span = colSpans[i];\r\n\r\n\t\t\tvar currentMinMax = getMinMax(span.col, span.span, node._offsets);\r\n\t\t\tvar minDifference = span.minWidth - currentMinMax.minWidth;\r\n\t\t\tvar maxDifference = span.maxWidth - currentMinMax.maxWidth;\r\n\r\n\t\t\tif (minDifference > 0) {\r\n\t\t\t\tq = minDifference / span.span;\r\n\r\n\t\t\t\tfor (j = 0; j < span.span; j++) {\r\n\t\t\t\t\tnode.table.widths[span.col + j]._minWidth += q;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (maxDifference > 0) {\r\n\t\t\t\tq = maxDifference / span.span;\r\n\r\n\t\t\t\tfor (j = 0; j < span.span; j++) {\r\n\t\t\t\t\tnode.table.widths[span.col + j]._maxWidth += q;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getMinMax(col, span, offsets) {\r\n\t\tvar result = { minWidth: 0, maxWidth: 0 };\r\n\r\n\t\tfor (var i = 0; i < span; i++) {\r\n\t\t\tresult.minWidth += node.table.widths[col + i]._minWidth + (i ? offsets.offsets[col + i] : 0);\r\n\t\t\tresult.maxWidth += node.table.widths[col + i]._maxWidth + (i ? offsets.offsets[col + i] : 0);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction markSpans(rowData, col, span) {\r\n\t\tfor (var i = 1; i < span; i++) {\r\n\t\t\trowData[col + i] = {\r\n\t\t\t\t_span: true,\r\n\t\t\t\t_minWidth: 0,\r\n\t\t\t\t_maxWidth: 0,\r\n\t\t\t\trowSpan: rowData[col].rowSpan\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tfunction markVSpans(table, row, col, span) {\r\n\t\tfor (var i = 1; i < span; i++) {\r\n\t\t\ttable.body[row + i][col] = {\r\n\t\t\t\t_span: true,\r\n\t\t\t\t_minWidth: 0,\r\n\t\t\t\t_maxWidth: 0,\r\n\t\t\t\tfillColor: table.body[row][col].fillColor,\r\n\t\t\t\tfillOpacity: table.body[row][col].fillOpacity\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tfunction extendTableWidths(node) {\r\n\t\tif (!node.table.widths) {\r\n\t\t\tnode.table.widths = 'auto';\r\n\t\t}\r\n\r\n\t\tif (isString(node.table.widths)) {\r\n\t\t\tnode.table.widths = [node.table.widths];\r\n\r\n\t\t\twhile (node.table.widths.length < node.table.body[0].length) {\r\n\t\t\t\tnode.table.widths.push(node.table.widths[node.table.widths.length - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, l = node.table.widths.length; i < l; i++) {\r\n\t\t\tvar w = node.table.widths[i];\r\n\t\t\tif (isNumber(w) || isString(w)) {\r\n\t\t\t\tnode.table.widths[i] = { width: w };\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nDocMeasure.prototype.measureCanvas = function (node) {\r\n\tvar w = 0, h = 0;\r\n\r\n\tfor (var i = 0, l = node.canvas.length; i < l; i++) {\r\n\t\tvar vector = node.canvas[i];\r\n\r\n\t\tswitch (vector.type) {\r\n\t\t\tcase 'ellipse':\r\n\t\t\t\tw = Math.max(w, vector.x + vector.r1);\r\n\t\t\t\th = Math.max(h, vector.y + vector.r2);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'rect':\r\n\t\t\t\tw = Math.max(w, vector.x + vector.w);\r\n\t\t\t\th = Math.max(h, vector.y + vector.h);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'line':\r\n\t\t\t\tw = Math.max(w, vector.x1, vector.x2);\r\n\t\t\t\th = Math.max(h, vector.y1, vector.y2);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'polyline':\r\n\t\t\t\tfor (var i2 = 0, l2 = vector.points.length; i2 < l2; i2++) {\r\n\t\t\t\t\tw = Math.max(w, vector.points[i2].x);\r\n\t\t\t\t\th = Math.max(h, vector.points[i2].y);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tnode._minWidth = node._maxWidth = w;\r\n\tnode._minHeight = node._maxHeight = h;\r\n\tnode._alignment = this.styleStack.getProperty('alignment');\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureQr = function (node) {\r\n\tnode = qrEncoder.measure(node);\r\n\tnode._alignment = this.styleStack.getProperty('alignment');\r\n\treturn node;\r\n};\r\n\r\nmodule.exports = DocMeasure;\r\n\n\n/***/ }),\n\n/***/ 98883:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n\r\n\r\nvar isString = (__webpack_require__(91867).isString);\r\nvar isNumber = (__webpack_require__(91867).isNumber);\r\nvar isBoolean = (__webpack_require__(91867).isBoolean);\r\nvar isArray = (__webpack_require__(91867).isArray);\r\nvar isUndefined = (__webpack_require__(91867).isUndefined);\r\nvar fontStringify = (__webpack_require__(91867).fontStringify);\r\n\r\nfunction DocPreprocessor() {\r\n\r\n}\r\n\r\nDocPreprocessor.prototype.preprocessDocument = function (docStructure) {\r\n\tthis.parentNode = null;\r\n\tthis.tocs = [];\r\n\tthis.nodeReferences = [];\r\n\treturn this.preprocessNode(docStructure);\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessNode = function (node) {\r\n\t// expand shortcuts and casting values\r\n\tif (isArray(node)) {\r\n\t\tnode = { stack: node };\r\n\t} else if (isString(node)) {\r\n\t\tnode = { text: node };\r\n\t} else if (isNumber(node) || isBoolean(node)) {\r\n\t\tnode = { text: node.toString() };\r\n\t} else if (node === undefined || node === null) {\r\n\t\tnode = { text: '' };\r\n\t} else if (Object.keys(node).length === 0) { // empty object\r\n\t\tnode = { text: '' };\r\n\t} else if ('text' in node && (node.text === undefined || node.text === null)) {\r\n\t\tnode.text = '';\r\n\t}\r\n\r\n\tif (node.columns) {\r\n\t\treturn this.preprocessColumns(node);\r\n\t} else if (node.stack) {\r\n\t\treturn this.preprocessVerticalContainer(node);\r\n\t} else if (node.ul) {\r\n\t\treturn this.preprocessList(node);\r\n\t} else if (node.ol) {\r\n\t\treturn this.preprocessList(node);\r\n\t} else if (node.table) {\r\n\t\treturn this.preprocessTable(node);\r\n\t} else if (node.text !== undefined) {\r\n\t\treturn this.preprocessText(node);\r\n\t} else if (node.toc) {\r\n\t\treturn this.preprocessToc(node);\r\n\t} else if (node.image) {\r\n\t\treturn this.preprocessImage(node);\r\n\t} else if (node.svg) {\r\n\t\treturn this.preprocessSVG(node);\r\n\t} else if (node.canvas) {\r\n\t\treturn this.preprocessCanvas(node);\r\n\t} else if (node.qr) {\r\n\t\treturn this.preprocessQr(node);\r\n\t} else if (node.pageReference || node.textReference) {\r\n\t\treturn this.preprocessText(node);\r\n\t} else {\r\n\t\tthrow 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);\r\n\t}\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessColumns = function (node) {\r\n\tvar columns = node.columns;\r\n\r\n\tfor (var i = 0, l = columns.length; i < l; i++) {\r\n\t\tcolumns[i] = this.preprocessNode(columns[i]);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessVerticalContainer = function (node) {\r\n\tvar items = node.stack;\r\n\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\titems[i] = this.preprocessNode(items[i]);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessList = function (node) {\r\n\tvar items = node.ul || node.ol;\r\n\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\titems[i] = this.preprocessNode(items[i]);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessTable = function (node) {\r\n\tvar col, row, cols, rows;\r\n\r\n\tfor (col = 0, cols = node.table.body[0].length; col < cols; col++) {\r\n\t\tfor (row = 0, rows = node.table.body.length; row < rows; row++) {\r\n\t\t\tvar rowData = node.table.body[row];\r\n\t\t\tvar data = rowData[col];\r\n\t\t\tif (data !== undefined) {\r\n\t\t\t\tif (data === null) { // transform to object\r\n\t\t\t\t\tdata = '';\r\n\t\t\t\t}\r\n\t\t\t\tif (!data._span) {\r\n\t\t\t\t\trowData[col] = this.preprocessNode(data);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessText = function (node) {\r\n\tif (node.tocItem) {\r\n\t\tif (!isArray(node.tocItem)) {\r\n\t\t\tnode.tocItem = [node.tocItem];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, l = node.tocItem.length; i < l; i++) {\r\n\t\t\tif (!isString(node.tocItem[i])) {\r\n\t\t\t\tnode.tocItem[i] = '_default_';\r\n\t\t\t}\r\n\r\n\t\t\tvar tocItemId = node.tocItem[i];\r\n\r\n\t\t\tif (!this.tocs[tocItemId]) {\r\n\t\t\t\tthis.tocs[tocItemId] = { toc: { _items: [], _pseudo: true } };\r\n\t\t\t}\r\n\r\n\t\t\tif (!node.id) {\r\n\t\t\t\tnode.id = 'toc-' + tocItemId + '-' + this.tocs[tocItemId].toc._items.length;\r\n\t\t\t}\r\n\r\n\t\t\tvar tocItemRef = {\r\n\t\t\t\t_nodeRef: this._getNodeForNodeRef(node),\r\n\t\t\t\t_textNodeRef: node\r\n\t\t\t};\r\n\t\t\tthis.tocs[tocItemId].toc._items.push(tocItemRef);\r\n\t\t}\r\n\t}\r\n\r\n\tif (node.id) {\r\n\t\tif (this.nodeReferences[node.id]) {\r\n\t\t\tif (!this.nodeReferences[node.id]._pseudo) {\r\n\t\t\t\tthrow \"Node id '\" + node.id + \"' already exists\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.nodeReferences[node.id]._nodeRef = this._getNodeForNodeRef(node);\r\n\t\t\tthis.nodeReferences[node.id]._textNodeRef = node;\r\n\t\t\tthis.nodeReferences[node.id]._pseudo = false;\r\n\t\t} else {\r\n\t\t\tthis.nodeReferences[node.id] = {\r\n\t\t\t\t_nodeRef: this._getNodeForNodeRef(node),\r\n\t\t\t\t_textNodeRef: node\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tif (node.pageReference) {\r\n\t\tif (!this.nodeReferences[node.pageReference]) {\r\n\t\t\tthis.nodeReferences[node.pageReference] = {\r\n\t\t\t\t_nodeRef: {},\r\n\t\t\t\t_textNodeRef: {},\r\n\t\t\t\t_pseudo: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tnode.text = '00000';\r\n\t\tnode.linkToDestination = node.pageReference;\r\n\t\tnode._pageRef = this.nodeReferences[node.pageReference];\r\n\t}\r\n\r\n\tif (node.textReference) {\r\n\t\tif (!this.nodeReferences[node.textReference]) {\r\n\t\t\tthis.nodeReferences[node.textReference] = { _nodeRef: {}, _pseudo: true };\r\n\t\t}\r\n\r\n\t\tnode.text = '';\r\n\t\tnode.linkToDestination = node.textReference;\r\n\t\tnode._textRef = this.nodeReferences[node.textReference];\r\n\t}\r\n\r\n\tif (node.text && node.text.text) {\r\n\t\tnode.text = [this.preprocessNode(node.text)];\r\n\t} else if (isArray(node.text)) {\r\n\t\tvar isSetParentNode = false;\r\n\t\tif (this.parentNode === null) {\r\n\t\t\tthis.parentNode = node;\r\n\t\t\tisSetParentNode = true;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, l = node.text.length; i < l; i++) {\r\n\t\t\tnode.text[i] = this.preprocessNode(node.text[i]);\r\n\t\t}\r\n\r\n\t\tif (isSetParentNode) {\r\n\t\t\tthis.parentNode = null;\r\n\t\t}\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessToc = function (node) {\r\n\tif (!node.toc.id) {\r\n\t\tnode.toc.id = '_default_';\r\n\t}\r\n\r\n\tnode.toc.title = node.toc.title ? this.preprocessNode(node.toc.title) : null;\r\n\tnode.toc._items = [];\r\n\r\n\tif (this.tocs[node.toc.id]) {\r\n\t\tif (!this.tocs[node.toc.id].toc._pseudo) {\r\n\t\t\tthrow \"TOC '\" + node.toc.id + \"' already exists\";\r\n\t\t}\r\n\r\n\t\tnode.toc._items = this.tocs[node.toc.id].toc._items;\r\n\t}\r\n\r\n\tthis.tocs[node.toc.id] = node;\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessImage = function (node) {\r\n\tif (!isUndefined(node.image.type) && !isUndefined(node.image.data) && (node.image.type === 'Buffer') && isArray(node.image.data)) {\r\n\t\tnode.image = Buffer.from(node.image.data);\r\n\t}\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessSVG = function (node) {\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessCanvas = function (node) {\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessQr = function (node) {\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype._getNodeForNodeRef = function (node) {\r\n\tif (this.parentNode) {\r\n\t\treturn this.parentNode;\r\n\t}\r\n\r\n\treturn node;\r\n}\r\n\r\nmodule.exports = DocPreprocessor;\r\n\n\n/***/ }),\n\n/***/ 79178:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar TraversalTracker = __webpack_require__(2318);\r\nvar isString = (__webpack_require__(91867).isString);\r\n\r\n/**\r\n * Creates an instance of DocumentContext - a store for current x, y positions and available width/height.\r\n * It facilitates column divisions and vertical sync\r\n */\r\nfunction DocumentContext(pageSize, pageMargins) {\r\n\tthis.pages = [];\r\n\r\n\tthis.pageMargins = pageMargins;\r\n\r\n\tthis.x = pageMargins.left;\r\n\tthis.availableWidth = pageSize.width - pageMargins.left - pageMargins.right;\r\n\tthis.availableHeight = 0;\r\n\tthis.page = -1;\r\n\r\n\tthis.snapshots = [];\r\n\r\n\tthis.endingCell = null;\r\n\r\n\tthis.tracker = new TraversalTracker();\r\n\r\n\tthis.backgroundLength = [];\r\n\r\n\tthis.addPage(pageSize);\r\n}\r\n\r\nDocumentContext.prototype.beginColumnGroup = function () {\r\n\tthis.snapshots.push({\r\n\t\tx: this.x,\r\n\t\ty: this.y,\r\n\t\tavailableHeight: this.availableHeight,\r\n\t\tavailableWidth: this.availableWidth,\r\n\t\tpage: this.page,\r\n\t\tbottomMost: {\r\n\t\t\tx: this.x,\r\n\t\t\ty: this.y,\r\n\t\t\tavailableHeight: this.availableHeight,\r\n\t\t\tavailableWidth: this.availableWidth,\r\n\t\t\tpage: this.page\r\n\t\t},\r\n\t\tendingCell: this.endingCell,\r\n\t\tlastColumnWidth: this.lastColumnWidth\r\n\t});\r\n\r\n\tthis.lastColumnWidth = 0;\r\n};\r\n\r\nDocumentContext.prototype.beginColumn = function (width, offset, endingCell) {\r\n\tvar saved = this.snapshots[this.snapshots.length - 1];\r\n\r\n\tthis.calculateBottomMost(saved);\r\n\r\n\tthis.endingCell = endingCell;\r\n\tthis.page = saved.page;\r\n\tthis.x = this.x + this.lastColumnWidth + (offset || 0);\r\n\tthis.y = saved.y;\r\n\tthis.availableWidth = width;\t//saved.availableWidth - offset;\r\n\tthis.availableHeight = saved.availableHeight;\r\n\r\n\tthis.lastColumnWidth = width;\r\n};\r\n\r\nDocumentContext.prototype.calculateBottomMost = function (destContext) {\r\n\tif (this.endingCell) {\r\n\t\tthis.saveContextInEndingCell(this.endingCell);\r\n\t\tthis.endingCell = null;\r\n\t} else {\r\n\t\tdestContext.bottomMost = bottomMostContext(this, destContext.bottomMost);\r\n\t}\r\n};\r\n\r\nDocumentContext.prototype.markEnding = function (endingCell) {\r\n\tthis.page = endingCell._columnEndingContext.page;\r\n\tthis.x = endingCell._columnEndingContext.x;\r\n\tthis.y = endingCell._columnEndingContext.y;\r\n\tthis.availableWidth = endingCell._columnEndingContext.availableWidth;\r\n\tthis.availableHeight = endingCell._columnEndingContext.availableHeight;\r\n\tthis.lastColumnWidth = endingCell._columnEndingContext.lastColumnWidth;\r\n};\r\n\r\nDocumentContext.prototype.saveContextInEndingCell = function (endingCell) {\r\n\tendingCell._columnEndingContext = {\r\n\t\tpage: this.page,\r\n\t\tx: this.x,\r\n\t\ty: this.y,\r\n\t\tavailableHeight: this.availableHeight,\r\n\t\tavailableWidth: this.availableWidth,\r\n\t\tlastColumnWidth: this.lastColumnWidth\r\n\t};\r\n};\r\n\r\nDocumentContext.prototype.completeColumnGroup = function (height) {\r\n\tvar saved = this.snapshots.pop();\r\n\r\n\tthis.calculateBottomMost(saved);\r\n\r\n\tthis.endingCell = null;\r\n\tthis.x = saved.x;\r\n\r\n\tvar y = saved.bottomMost.y;\r\n\tif (height) {\r\n\t\tif (saved.page === saved.bottomMost.page) {\r\n\t\t\tif ((saved.y + height) > y) {\r\n\t\t\t\ty = saved.y + height;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ty += height;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.y = y;\r\n\tthis.page = saved.bottomMost.page;\r\n\tthis.availableWidth = saved.availableWidth;\r\n\tthis.availableHeight = saved.bottomMost.availableHeight;\r\n\tif (height) {\r\n\t\tthis.availableHeight -= (y - saved.bottomMost.y);\r\n\t}\r\n\tthis.lastColumnWidth = saved.lastColumnWidth;\r\n};\r\n\r\nDocumentContext.prototype.addMargin = function (left, right) {\r\n\tthis.x += left;\r\n\tthis.availableWidth -= left + (right || 0);\r\n};\r\n\r\nDocumentContext.prototype.moveDown = function (offset) {\r\n\tthis.y += offset;\r\n\tthis.availableHeight -= offset;\r\n\r\n\treturn this.availableHeight > 0;\r\n};\r\n\r\nDocumentContext.prototype.initializePage = function () {\r\n\tthis.y = this.pageMargins.top;\r\n\tthis.availableHeight = this.getCurrentPage().pageSize.height - this.pageMargins.top - this.pageMargins.bottom;\r\n\tthis.pageSnapshot().availableWidth = this.getCurrentPage().pageSize.width - this.pageMargins.left - this.pageMargins.right;\r\n};\r\n\r\nDocumentContext.prototype.pageSnapshot = function () {\r\n\tif (this.snapshots[0]) {\r\n\t\treturn this.snapshots[0];\r\n\t} else {\r\n\t\treturn this;\r\n\t}\r\n};\r\n\r\nDocumentContext.prototype.moveTo = function (x, y) {\r\n\tif (x !== undefined && x !== null) {\r\n\t\tthis.x = x;\r\n\t\tthis.availableWidth = this.getCurrentPage().pageSize.width - this.x - this.pageMargins.right;\r\n\t}\r\n\tif (y !== undefined && y !== null) {\r\n\t\tthis.y = y;\r\n\t\tthis.availableHeight = this.getCurrentPage().pageSize.height - this.y - this.pageMargins.bottom;\r\n\t}\r\n};\r\n\r\nDocumentContext.prototype.moveToRelative = function (x, y) {\r\n\tif (x !== undefined && x !== null) {\r\n\t\tthis.x = this.x + x;\r\n\t}\r\n\tif (y !== undefined && y !== null) {\r\n\t\tthis.y = this.y + y;\r\n\t}\r\n};\r\n\r\nDocumentContext.prototype.beginDetachedBlock = function () {\r\n\tthis.snapshots.push({\r\n\t\tx: this.x,\r\n\t\ty: this.y,\r\n\t\tavailableHeight: this.availableHeight,\r\n\t\tavailableWidth: this.availableWidth,\r\n\t\tpage: this.page,\r\n\t\tendingCell: this.endingCell,\r\n\t\tlastColumnWidth: this.lastColumnWidth\r\n\t});\r\n};\r\n\r\nDocumentContext.prototype.endDetachedBlock = function () {\r\n\tvar saved = this.snapshots.pop();\r\n\r\n\tthis.x = saved.x;\r\n\tthis.y = saved.y;\r\n\tthis.availableWidth = saved.availableWidth;\r\n\tthis.availableHeight = saved.availableHeight;\r\n\tthis.page = saved.page;\r\n\tthis.endingCell = saved.endingCell;\r\n\tthis.lastColumnWidth = saved.lastColumnWidth;\r\n};\r\n\r\nfunction pageOrientation(pageOrientationString, currentPageOrientation) {\r\n\tif (pageOrientationString === undefined) {\r\n\t\treturn currentPageOrientation;\r\n\t} else if (isString(pageOrientationString) && (pageOrientationString.toLowerCase() === 'landscape')) {\r\n\t\treturn 'landscape';\r\n\t} else {\r\n\t\treturn 'portrait';\r\n\t}\r\n}\r\n\r\nvar getPageSize = function (currentPage, newPageOrientation) {\r\n\r\n\tnewPageOrientation = pageOrientation(newPageOrientation, currentPage.pageSize.orientation);\r\n\r\n\tif (newPageOrientation !== currentPage.pageSize.orientation) {\r\n\t\treturn {\r\n\t\t\torientation: newPageOrientation,\r\n\t\t\twidth: currentPage.pageSize.height,\r\n\t\t\theight: currentPage.pageSize.width\r\n\t\t};\r\n\t} else {\r\n\t\treturn {\r\n\t\t\torientation: currentPage.pageSize.orientation,\r\n\t\t\twidth: currentPage.pageSize.width,\r\n\t\t\theight: currentPage.pageSize.height\r\n\t\t};\r\n\t}\r\n\r\n};\r\n\r\n\r\nDocumentContext.prototype.moveToNextPage = function (pageOrientation) {\r\n\tvar nextPageIndex = this.page + 1;\r\n\r\n\tvar prevPage = this.page;\r\n\tvar prevY = this.y;\r\n\r\n\tvar createNewPage = nextPageIndex >= this.pages.length;\r\n\tif (createNewPage) {\r\n\t\tvar currentAvailableWidth = this.availableWidth;\r\n\t\tvar currentPageOrientation = this.getCurrentPage().pageSize.orientation;\r\n\r\n\t\tvar pageSize = getPageSize(this.getCurrentPage(), pageOrientation);\r\n\t\tthis.addPage(pageSize);\r\n\r\n\t\tif (currentPageOrientation === pageSize.orientation) {\r\n\t\t\tthis.availableWidth = currentAvailableWidth;\r\n\t\t}\r\n\t} else {\r\n\t\tthis.page = nextPageIndex;\r\n\t\tthis.initializePage();\r\n\t}\r\n\r\n\treturn {\r\n\t\tnewPageCreated: createNewPage,\r\n\t\tprevPage: prevPage,\r\n\t\tprevY: prevY,\r\n\t\ty: this.y\r\n\t};\r\n};\r\n\r\n\r\nDocumentContext.prototype.addPage = function (pageSize) {\r\n\tvar page = { items: [], pageSize: pageSize };\r\n\tthis.pages.push(page);\r\n\tthis.backgroundLength.push(0);\r\n\tthis.page = this.pages.length - 1;\r\n\tthis.initializePage();\r\n\r\n\tthis.tracker.emit('pageAdded');\r\n\r\n\treturn page;\r\n};\r\n\r\nDocumentContext.prototype.getCurrentPage = function () {\r\n\tif (this.page < 0 || this.page >= this.pages.length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn this.pages[this.page];\r\n};\r\n\r\nDocumentContext.prototype.getCurrentPosition = function () {\r\n\tvar pageSize = this.getCurrentPage().pageSize;\r\n\tvar innerHeight = pageSize.height - this.pageMargins.top - this.pageMargins.bottom;\r\n\tvar innerWidth = pageSize.width - this.pageMargins.left - this.pageMargins.right;\r\n\r\n\treturn {\r\n\t\tpageNumber: this.page + 1,\r\n\t\tpageOrientation: pageSize.orientation,\r\n\t\tpageInnerHeight: innerHeight,\r\n\t\tpageInnerWidth: innerWidth,\r\n\t\tleft: this.x,\r\n\t\ttop: this.y,\r\n\t\tverticalRatio: ((this.y - this.pageMargins.top) / innerHeight),\r\n\t\thorizontalRatio: ((this.x - this.pageMargins.left) / innerWidth)\r\n\t};\r\n};\r\n\r\nfunction bottomMostContext(c1, c2) {\r\n\tvar r;\r\n\r\n\tif (c1.page > c2.page) {\r\n\t\tr = c1;\r\n\t} else if (c2.page > c1.page) {\r\n\t\tr = c2;\r\n\t} else {\r\n\t\tr = (c1.y > c2.y) ? c1 : c2;\r\n\t}\r\n\r\n\treturn {\r\n\t\tpage: r.page,\r\n\t\tx: r.x,\r\n\t\ty: r.y,\r\n\t\tavailableHeight: r.availableHeight,\r\n\t\tavailableWidth: r.availableWidth\r\n\t};\r\n}\r\n\r\nmodule.exports = DocumentContext;\r\n\n\n/***/ }),\n\n/***/ 54861:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar Line = __webpack_require__(70770);\r\nvar isNumber = (__webpack_require__(91867).isNumber);\r\nvar pack = (__webpack_require__(91867).pack);\r\nvar offsetVector = (__webpack_require__(91867).offsetVector);\r\nvar DocumentContext = __webpack_require__(79178);\r\n\r\n/**\r\n * Creates an instance of ElementWriter - a line/vector writer, which adds\r\n * elements to current page and sets their positions based on the context\r\n */\r\nfunction ElementWriter(context, tracker) {\r\n\tthis.context = context;\r\n\tthis.contextStack = [];\r\n\tthis.tracker = tracker;\r\n}\r\n\r\nfunction addPageItem(page, item, index) {\r\n\tif (index === null || index === undefined || index < 0 || index > page.items.length) {\r\n\t\tpage.items.push(item);\r\n\t} else {\r\n\t\tpage.items.splice(index, 0, item);\r\n\t}\r\n}\r\n\r\nElementWriter.prototype.addLine = function (line, dontUpdateContextPosition, index) {\r\n\tvar height = line.getHeight();\r\n\tvar context = this.context;\r\n\tvar page = context.getCurrentPage(),\r\n\t\tposition = this.getCurrentPositionOnPage();\r\n\r\n\tif (context.availableHeight < height || !page) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tline.x = context.x + (line.x || 0);\r\n\tline.y = context.y + (line.y || 0);\r\n\r\n\tthis.alignLine(line);\r\n\r\n\taddPageItem(page, {\r\n\t\ttype: 'line',\r\n\t\titem: line\r\n\t}, index);\r\n\tthis.tracker.emit('lineAdded', line);\r\n\r\n\tif (!dontUpdateContextPosition) {\r\n\t\tcontext.moveDown(height);\r\n\t}\r\n\r\n\treturn position;\r\n};\r\n\r\nElementWriter.prototype.alignLine = function (line) {\r\n\tvar width = this.context.availableWidth;\r\n\tvar lineWidth = line.getWidth();\r\n\r\n\tvar alignment = line.inlines && line.inlines.length > 0 && line.inlines[0].alignment;\r\n\r\n\tvar offset = 0;\r\n\tswitch (alignment) {\r\n\t\tcase 'right':\r\n\t\t\toffset = width - lineWidth;\r\n\t\t\tbreak;\r\n\t\tcase 'center':\r\n\t\t\toffset = (width - lineWidth) / 2;\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (offset) {\r\n\t\tline.x = (line.x || 0) + offset;\r\n\t}\r\n\r\n\tif (alignment === 'justify' &&\r\n\t\t!line.newLineForced &&\r\n\t\t!line.lastLineInParagraph &&\r\n\t\tline.inlines.length > 1) {\r\n\t\tvar additionalSpacing = (width - lineWidth) / (line.inlines.length - 1);\r\n\r\n\t\tfor (var i = 1, l = line.inlines.length; i < l; i++) {\r\n\t\t\toffset = i * additionalSpacing;\r\n\r\n\t\t\tline.inlines[i].x += offset;\r\n\t\t\tline.inlines[i].justifyShift = additionalSpacing;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nElementWriter.prototype.addImage = function (image, index, type) {\r\n\tvar context = this.context;\r\n\tvar page = context.getCurrentPage(),\r\n\t\tposition = this.getCurrentPositionOnPage();\r\n\r\n\tif (!page || (image.absolutePosition === undefined && context.availableHeight < image._height && page.items.length > 0)) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (image._x === undefined) {\r\n\t\timage._x = image.x || 0;\r\n\t}\r\n\r\n\timage.x = context.x + image._x;\r\n\timage.y = context.y;\r\n\r\n\tthis.alignImage(image);\r\n\r\n\taddPageItem(page, {\r\n\t\ttype: type || 'image',\r\n\t\titem: image\r\n\t}, index);\r\n\r\n\tcontext.moveDown(image._height);\r\n\r\n\treturn position;\r\n};\r\n\r\nElementWriter.prototype.addSVG = function (image, index) {\r\n\treturn this.addImage(image, index, 'svg')\r\n};\r\n\r\nElementWriter.prototype.addQr = function (qr, index) {\r\n\tvar context = this.context;\r\n\tvar page = context.getCurrentPage(),\r\n\t\tposition = this.getCurrentPositionOnPage();\r\n\r\n\tif (!page || (qr.absolutePosition === undefined && context.availableHeight < qr._height)) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (qr._x === undefined) {\r\n\t\tqr._x = qr.x || 0;\r\n\t}\r\n\r\n\tqr.x = context.x + qr._x;\r\n\tqr.y = context.y;\r\n\r\n\tthis.alignImage(qr);\r\n\r\n\tfor (var i = 0, l = qr._canvas.length; i < l; i++) {\r\n\t\tvar vector = qr._canvas[i];\r\n\t\tvector.x += qr.x;\r\n\t\tvector.y += qr.y;\r\n\t\tthis.addVector(vector, true, true, index);\r\n\t}\r\n\r\n\tcontext.moveDown(qr._height);\r\n\r\n\treturn position;\r\n};\r\n\r\nElementWriter.prototype.alignImage = function (image) {\r\n\tvar width = this.context.availableWidth;\r\n\tvar imageWidth = image._minWidth;\r\n\tvar offset = 0;\r\n\tswitch (image._alignment) {\r\n\t\tcase 'right':\r\n\t\t\toffset = width - imageWidth;\r\n\t\t\tbreak;\r\n\t\tcase 'center':\r\n\t\t\toffset = (width - imageWidth) / 2;\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (offset) {\r\n\t\timage.x = (image.x || 0) + offset;\r\n\t}\r\n};\r\n\r\nElementWriter.prototype.alignCanvas = function (node) {\r\n\tvar width = this.context.availableWidth;\r\n\tvar canvasWidth = node._minWidth;\r\n\tvar offset = 0;\r\n\tswitch (node._alignment) {\r\n\t\tcase 'right':\r\n\t\t\toffset = width - canvasWidth;\r\n\t\t\tbreak;\r\n\t\tcase 'center':\r\n\t\t\toffset = (width - canvasWidth) / 2;\r\n\t\t\tbreak;\r\n\t}\r\n\tif (offset) {\r\n\t\tnode.canvas.forEach(function (vector) {\r\n\t\t\toffsetVector(vector, offset, 0);\r\n\t\t});\r\n\t}\r\n};\r\n\r\nElementWriter.prototype.addVector = function (vector, ignoreContextX, ignoreContextY, index) {\r\n\tvar context = this.context;\r\n\tvar page = context.getCurrentPage(),\r\n\t\tposition = this.getCurrentPositionOnPage();\r\n\r\n\tif (page) {\r\n\t\toffsetVector(vector, ignoreContextX ? 0 : context.x, ignoreContextY ? 0 : context.y);\r\n\t\taddPageItem(page, {\r\n\t\t\ttype: 'vector',\r\n\t\t\titem: vector\r\n\t\t}, index);\r\n\t\treturn position;\r\n\t}\r\n};\r\n\r\nElementWriter.prototype.beginClip = function (width, height) {\r\n\tvar ctx = this.context;\r\n\tvar page = ctx.getCurrentPage();\r\n\tpage.items.push({\r\n\t\ttype: 'beginClip',\r\n\t\titem: { x: ctx.x, y: ctx.y, width: width, height: height }\r\n\t});\r\n\treturn true;\r\n};\r\n\r\nElementWriter.prototype.endClip = function () {\r\n\tvar ctx = this.context;\r\n\tvar page = ctx.getCurrentPage();\r\n\tpage.items.push({\r\n\t\ttype: 'endClip'\r\n\t});\r\n\treturn true;\r\n};\r\n\r\nfunction cloneLine(line) {\r\n\tvar result = new Line(line.maxWidth);\r\n\r\n\tfor (var key in line) {\r\n\t\tif (line.hasOwnProperty(key)) {\r\n\t\t\tresult[key] = line[key];\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\nElementWriter.prototype.addFragment = function (block, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition) {\r\n\tvar ctx = this.context;\r\n\tvar page = ctx.getCurrentPage();\r\n\r\n\tif (!useBlockXOffset && block.height > ctx.availableHeight) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tblock.items.forEach(function (item) {\r\n\t\tswitch (item.type) {\r\n\t\t\tcase 'line':\r\n\t\t\t\tvar l = cloneLine(item.item);\r\n\r\n\t\t\t\tif (l._node) {\r\n\t\t\t\t\tl._node.positions[0].pageNumber = ctx.page + 1;\r\n\t\t\t\t}\r\n\t\t\t\tl.x = (l.x || 0) + (useBlockXOffset ? (block.xOffset || 0) : ctx.x);\r\n\t\t\t\tl.y = (l.y || 0) + (useBlockYOffset ? (block.yOffset || 0) : ctx.y);\r\n\r\n\t\t\t\tpage.items.push({\r\n\t\t\t\t\ttype: 'line',\r\n\t\t\t\t\titem: l\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'vector':\r\n\t\t\t\tvar v = pack(item.item);\r\n\r\n\t\t\t\toffsetVector(v, useBlockXOffset ? (block.xOffset || 0) : ctx.x, useBlockYOffset ? (block.yOffset || 0) : ctx.y);\r\n\t\t\t\tpage.items.push({\r\n\t\t\t\t\ttype: 'vector',\r\n\t\t\t\t\titem: v\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'image':\r\n\t\t\tcase 'svg':\r\n\t\t\t\tvar img = pack(item.item);\r\n\r\n\t\t\t\timg.x = (img.x || 0) + (useBlockXOffset ? (block.xOffset || 0) : ctx.x);\r\n\t\t\t\timg.y = (img.y || 0) + (useBlockYOffset ? (block.yOffset || 0) : ctx.y);\r\n\r\n\t\t\t\tpage.items.push({\r\n\t\t\t\t\ttype: item.type,\r\n\t\t\t\t\titem: img\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif (!dontUpdateContextPosition) {\r\n\t\tctx.moveDown(block.height);\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n\r\n/**\r\n * Pushes the provided context onto the stack or creates a new one\r\n *\r\n * pushContext(context) - pushes the provided context and makes it current\r\n * pushContext(width, height) - creates and pushes a new context with the specified width and height\r\n * pushContext() - creates a new context for unbreakable blocks (with current availableWidth and full-page-height)\r\n */\r\nElementWriter.prototype.pushContext = function (contextOrWidth, height) {\r\n\tif (contextOrWidth === undefined) {\r\n\t\theight = this.context.getCurrentPage().height - this.context.pageMargins.top - this.context.pageMargins.bottom;\r\n\t\tcontextOrWidth = this.context.availableWidth;\r\n\t}\r\n\r\n\tif (isNumber(contextOrWidth)) {\r\n\t\tcontextOrWidth = new DocumentContext({ width: contextOrWidth, height: height }, { left: 0, right: 0, top: 0, bottom: 0 });\r\n\t}\r\n\r\n\tthis.contextStack.push(this.context);\r\n\tthis.context = contextOrWidth;\r\n};\r\n\r\nElementWriter.prototype.popContext = function () {\r\n\tthis.context = this.contextStack.pop();\r\n};\r\n\r\nElementWriter.prototype.getCurrentPositionOnPage = function () {\r\n\treturn (this.contextStack[0] || this.context).getCurrentPosition();\r\n};\r\n\r\n\r\nmodule.exports = ElementWriter;\r\n\n\n/***/ }),\n\n/***/ 28284:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar isArray = (__webpack_require__(91867).isArray);\r\n\r\nfunction typeName(bold, italics) {\r\n\tvar type = 'normal';\r\n\tif (bold && italics) {\r\n\t\ttype = 'bolditalics';\r\n\t} else if (bold) {\r\n\t\ttype = 'bold';\r\n\t} else if (italics) {\r\n\t\ttype = 'italics';\r\n\t}\r\n\treturn type;\r\n}\r\n\r\nfunction FontProvider(fontDescriptors, pdfKitDoc) {\r\n\tthis.fonts = {};\r\n\tthis.pdfKitDoc = pdfKitDoc;\r\n\tthis.fontCache = {};\r\n\r\n\tfor (var font in fontDescriptors) {\r\n\t\tif (fontDescriptors.hasOwnProperty(font)) {\r\n\t\t\tvar fontDef = fontDescriptors[font];\r\n\r\n\t\t\tthis.fonts[font] = {\r\n\t\t\t\tnormal: fontDef.normal,\r\n\t\t\t\tbold: fontDef.bold,\r\n\t\t\t\titalics: fontDef.italics,\r\n\t\t\t\tbolditalics: fontDef.bolditalics\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n}\r\n\r\nFontProvider.prototype.getFontType = function (bold, italics) {\r\n\treturn typeName(bold, italics);\r\n}\r\n\r\nFontProvider.prototype.getFontFile = function (familyName, bold, italics) {\r\n\tvar type = this.getFontType(bold, italics);\r\n\tif (!this.fonts[familyName] || !this.fonts[familyName][type]) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn this.fonts[familyName][type];\r\n}\r\n\r\nFontProvider.prototype.provideFont = function (familyName, bold, italics) {\r\n\tvar type = this.getFontType(bold, italics);\r\n\tif (this.getFontFile(familyName, bold, italics) === null) {\r\n\t\tthrow new Error('Font \\'' + familyName + '\\' in style \\'' + type + '\\' is not defined in the font section of the document definition.');\r\n\t}\r\n\r\n\tthis.fontCache[familyName] = this.fontCache[familyName] || {};\r\n\r\n\tif (!this.fontCache[familyName][type]) {\r\n\t\tvar def = this.fonts[familyName][type];\r\n\t\tif (!isArray(def)) {\r\n\t\t\tdef = [def];\r\n\t\t}\r\n\t\tthis.fontCache[familyName][type] = this.pdfKitDoc.font.apply(this.pdfKitDoc, def)._font;\r\n\t}\r\n\r\n\treturn this.fontCache[familyName][type];\r\n};\r\n\r\nmodule.exports = FontProvider;\r\n\n\n/***/ }),\n\n/***/ 91867:\n/***/ (function(module) {\n\n\"use strict\";\n\r\n\r\nfunction isString(variable) {\r\n\treturn typeof variable === 'string' || variable instanceof String;\r\n}\r\n\r\nfunction isNumber(variable) {\r\n\treturn typeof variable === 'number' || variable instanceof Number;\r\n}\r\n\r\nfunction isBoolean(variable) {\r\n\treturn typeof variable === 'boolean';\r\n}\r\n\r\nfunction isArray(variable) {\r\n\treturn Array.isArray(variable);\r\n}\r\n\r\nfunction isFunction(variable) {\r\n\treturn typeof variable === 'function';\r\n}\r\n\r\nfunction isObject(variable) {\r\n\treturn variable !== null && typeof variable === 'object';\r\n}\r\n\r\nfunction isNull(variable) {\r\n\treturn variable === null;\r\n}\r\n\r\nfunction isUndefined(variable) {\r\n\treturn variable === undefined;\r\n}\r\n\r\nfunction pack() {\r\n\tvar result = {};\r\n\r\n\tfor (var i = 0, l = arguments.length; i < l; i++) {\r\n\t\tvar obj = arguments[i];\r\n\r\n\t\tif (obj) {\r\n\t\t\tfor (var key in obj) {\r\n\t\t\t\tif (obj.hasOwnProperty(key)) {\r\n\t\t\t\t\tresult[key] = obj[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\nfunction offsetVector(vector, x, y) {\r\n\tswitch (vector.type) {\r\n\t\tcase 'ellipse':\r\n\t\tcase 'rect':\r\n\t\t\tvector.x += x;\r\n\t\t\tvector.y += y;\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\tvector.x1 += x;\r\n\t\t\tvector.x2 += x;\r\n\t\t\tvector.y1 += y;\r\n\t\t\tvector.y2 += y;\r\n\t\t\tbreak;\r\n\t\tcase 'polyline':\r\n\t\t\tfor (var i = 0, l = vector.points.length; i < l; i++) {\r\n\t\t\t\tvector.points[i].x += x;\r\n\t\t\t\tvector.points[i].y += y;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n}\r\n\r\nfunction fontStringify(key, val) {\r\n\tif (key === 'font') {\r\n\t\treturn 'font';\r\n\t}\r\n\treturn val;\r\n}\r\n\r\nfunction getNodeId(node) {\r\n\tif (node.id) {\r\n\t\treturn node.id;\r\n\t}\r\n\r\n\tif (isArray(node.text)) {\r\n\t\tfor (var i = 0, l = node.text.length; i < l; i++) {\r\n\t\t\tvar n = node.text[i];\r\n\t\t\tvar nodeId = getNodeId(n);\r\n\t\t\tif (nodeId) {\r\n\t\t\t\treturn nodeId;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction isPattern(color) {\r\n\treturn isArray(color) && color.length === 2;\r\n}\r\n\r\n// converts from a [<pattern name>, <color>] as used by pdfmake\r\n// into [<pattern object>, <color>] as used by pdfkit\r\n// (the pattern has to be registered in the doc definition of course)\r\nfunction getPattern(color, patterns) {\r\n\treturn [patterns[color[0]], color[1]];\r\n}\r\n\r\nmodule.exports = {\r\n\tisString: isString,\r\n\tisNumber: isNumber,\r\n\tisBoolean: isBoolean,\r\n\tisArray: isArray,\r\n\tisFunction: isFunction,\r\n\tisObject: isObject,\r\n\tisNull: isNull,\r\n\tisUndefined: isUndefined,\r\n\tpack: pack,\r\n\tfontStringify: fontStringify,\r\n\toffsetVector: offsetVector,\r\n\tgetNodeId: getNodeId,\r\n\tisPattern: isPattern,\r\n\tgetPattern: getPattern\r\n};\r\n\n\n/***/ }),\n\n/***/ 93415:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n\r\n\r\nvar fs = __webpack_require__(48181);\r\n\r\nfunction ImageMeasure(pdfKitDoc, imageDictionary) {\r\n\tthis.pdfKitDoc = pdfKitDoc;\r\n\tthis.imageDictionary = imageDictionary || {};\r\n}\r\n\r\nImageMeasure.prototype.measureImage = function (src) {\r\n\tvar image;\r\n\tvar that = this;\r\n\r\n\tif (!this.pdfKitDoc._imageRegistry[src]) {\r\n\t\ttry {\r\n\t\t\timage = this.pdfKitDoc.openImage(realImageSrc(src));\r\n\t\t\tif (!image) {\r\n\t\t\t\tthrow 'No image';\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tthrow 'Invalid image: ' + error.toString() + '\\nImages dictionary should contain dataURL entries (or local file paths in node.js)';\r\n\t\t}\r\n\t\timage.embed(this.pdfKitDoc);\r\n\t\tthis.pdfKitDoc._imageRegistry[src] = image;\r\n\t} else {\r\n\t\timage = this.pdfKitDoc._imageRegistry[src];\r\n\t}\r\n\r\n\treturn { width: image.width, height: image.height };\r\n\r\n\tfunction realImageSrc(src) {\r\n\t\tvar img = that.imageDictionary[src];\r\n\r\n\t\tif (!img) {\r\n\t\t\treturn src;\r\n\t\t}\r\n\r\n\t\tif (fs.existsSync(img)) {\r\n\t\t\treturn fs.readFileSync(img);\r\n\t\t}\r\n\r\n\t\tvar index = img.indexOf('base64,');\r\n\t\tif (index < 0) {\r\n\t\t\treturn that.imageDictionary[src];\r\n\t\t}\r\n\r\n\t\treturn Buffer.from(img.substring(index + 7), 'base64');\r\n\t}\r\n};\r\n\r\nmodule.exports = ImageMeasure;\r\n\n\n/***/ }),\n\n/***/ 25235:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar TraversalTracker = __webpack_require__(2318);\r\nvar DocPreprocessor = __webpack_require__(98883);\r\nvar DocMeasure = __webpack_require__(42526);\r\nvar DocumentContext = __webpack_require__(79178);\r\nvar PageElementWriter = __webpack_require__(11220);\r\nvar ColumnCalculator = __webpack_require__(77530);\r\nvar TableProcessor = __webpack_require__(89836);\r\nvar Line = __webpack_require__(70770);\r\nvar isString = (__webpack_require__(91867).isString);\r\nvar isArray = (__webpack_require__(91867).isArray);\r\nvar isUndefined = (__webpack_require__(91867).isUndefined);\r\nvar isNull = (__webpack_require__(91867).isNull);\r\nvar pack = (__webpack_require__(91867).pack);\r\nvar offsetVector = (__webpack_require__(91867).offsetVector);\r\nvar fontStringify = (__webpack_require__(91867).fontStringify);\r\nvar getNodeId = (__webpack_require__(91867).getNodeId);\r\nvar isFunction = (__webpack_require__(91867).isFunction);\r\nvar TextTools = __webpack_require__(11548);\r\nvar StyleContextStack = __webpack_require__(76442);\r\nvar isNumber = (__webpack_require__(91867).isNumber);\r\n\r\nfunction addAll(target, otherArray) {\r\n\totherArray.forEach(function (item) {\r\n\t\ttarget.push(item);\r\n\t});\r\n}\r\n\r\n/**\r\n * Creates an instance of LayoutBuilder - layout engine which turns document-definition-object\r\n * into a set of pages, lines, inlines and vectors ready to be rendered into a PDF\r\n *\r\n * @param {Object} pageSize - an object defining page width and height\r\n * @param {Object} pageMargins - an object defining top, left, right and bottom margins\r\n */\r\nfunction LayoutBuilder(pageSize, pageMargins, imageMeasure, svgMeasure) {\r\n\tthis.pageSize = pageSize;\r\n\tthis.pageMargins = pageMargins;\r\n\tthis.tracker = new TraversalTracker();\r\n\tthis.imageMeasure = imageMeasure;\r\n\tthis.svgMeasure = svgMeasure;\r\n\tthis.tableLayouts = {};\r\n}\r\n\r\nLayoutBuilder.prototype.registerTableLayouts = function (tableLayouts) {\r\n\tthis.tableLayouts = pack(this.tableLayouts, tableLayouts);\r\n};\r\n\r\n/**\r\n * Executes layout engine on document-definition-object and creates an array of pages\r\n * containing positioned Blocks, Lines and inlines\r\n *\r\n * @param {Object} docStructure document-definition-object\r\n * @param {Object} fontProvider font provider\r\n * @param {Object} styleDictionary dictionary with style definitions\r\n * @param {Object} defaultStyle default style definition\r\n * @return {Array} an array of pages\r\n */\r\nLayoutBuilder.prototype.layoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {\r\n\r\n\tfunction addPageBreaksIfNecessary(linearNodeList, pages) {\r\n\r\n\t\tif (!isFunction(pageBreakBeforeFct)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlinearNodeList = linearNodeList.filter(function (node) {\r\n\t\t\treturn node.positions.length > 0;\r\n\t\t});\r\n\r\n\t\tlinearNodeList.forEach(function (node) {\r\n\t\t\tvar nodeInfo = {};\r\n\t\t\t[\r\n\t\t\t\t'id', 'text', 'ul', 'ol', 'table', 'image', 'qr', 'canvas', 'svg', 'columns',\r\n\t\t\t\t'headlineLevel', 'style', 'pageBreak', 'pageOrientation',\r\n\t\t\t\t'width', 'height'\r\n\t\t\t].forEach(function (key) {\r\n\t\t\t\tif (node[key] !== undefined) {\r\n\t\t\t\t\tnodeInfo[key] = node[key];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tnodeInfo.startPosition = node.positions[0];\r\n\t\t\tnodeInfo.pageNumbers = Array.from(new Set(node.positions.map(function (node) { return node.pageNumber; })));\r\n\t\t\tnodeInfo.pages = pages.length;\r\n\t\t\tnodeInfo.stack = isArray(node.stack);\r\n\r\n\t\t\tnode.nodeInfo = nodeInfo;\r\n\t\t});\r\n\r\n\t\tfor (var index = 0; index < linearNodeList.length; index++) {\r\n\t\t\tvar node = linearNodeList[index];\r\n\t\t\tif (node.pageBreak !== 'before' && !node.pageBreakCalculated) {\r\n\t\t\t\tnode.pageBreakCalculated = true;\r\n\t\t\t\tvar pageNumber = node.nodeInfo.pageNumbers[0];\r\n\t\t\t\tvar followingNodesOnPage = [];\r\n\t\t\t\tvar nodesOnNextPage = [];\r\n\t\t\t\tvar previousNodesOnPage = [];\r\n\t\t\t\tif (pageBreakBeforeFct.length > 1) {\r\n\t\t\t\t\tfor (var ii = index + 1, l = linearNodeList.length; ii < l; ii++) {\r\n\t\t\t\t\t\tif (linearNodeList[ii].nodeInfo.pageNumbers.indexOf(pageNumber) > -1) {\r\n\t\t\t\t\t\t\tfollowingNodesOnPage.push(linearNodeList[ii].nodeInfo);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (pageBreakBeforeFct.length > 2 && linearNodeList[ii].nodeInfo.pageNumbers.indexOf(pageNumber + 1) > -1) {\r\n\t\t\t\t\t\t\tnodesOnNextPage.push(linearNodeList[ii].nodeInfo);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (pageBreakBeforeFct.length > 3) {\r\n\t\t\t\t\tfor (var ii = 0; ii < index; ii++) {\r\n\t\t\t\t\t\tif (linearNodeList[ii].nodeInfo.pageNumbers.indexOf(pageNumber) > -1) {\r\n\t\t\t\t\t\t\tpreviousNodesOnPage.push(linearNodeList[ii].nodeInfo);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (pageBreakBeforeFct(node.nodeInfo, followingNodesOnPage, nodesOnNextPage, previousNodesOnPage)) {\r\n\t\t\t\t\tnode.pageBreak = 'before';\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tthis.docPreprocessor = new DocPreprocessor();\r\n\tthis.docMeasure = new DocMeasure(fontProvider, styleDictionary, defaultStyle, this.imageMeasure, this.svgMeasure, this.tableLayouts, images);\r\n\r\n\r\n\tfunction resetXYs(result) {\r\n\t\tresult.linearNodeList.forEach(function (node) {\r\n\t\t\tnode.resetXY();\r\n\t\t});\r\n\t}\r\n\r\n\tvar result = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);\r\n\twhile (addPageBreaksIfNecessary(result.linearNodeList, result.pages)) {\r\n\t\tresetXYs(result);\r\n\t\tresult = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);\r\n\t}\r\n\r\n\treturn result.pages;\r\n};\r\n\r\nLayoutBuilder.prototype.tryLayoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {\r\n\r\n\tthis.linearNodeList = [];\r\n\tdocStructure = this.docPreprocessor.preprocessDocument(docStructure);\r\n\tdocStructure = this.docMeasure.measureDocument(docStructure);\r\n\r\n\tthis.writer = new PageElementWriter(\r\n\t\tnew DocumentContext(this.pageSize, this.pageMargins), this.tracker);\r\n\r\n\tvar _this = this;\r\n\tthis.writer.context().tracker.startTracking('pageAdded', function () {\r\n\t\t_this.addBackground(background);\r\n\t});\r\n\r\n\tthis.addBackground(background);\r\n\tthis.processNode(docStructure);\r\n\tthis.addHeadersAndFooters(header, footer);\r\n\tif (watermark != null) {\r\n\t\tthis.addWatermark(watermark, fontProvider, defaultStyle);\r\n\t}\r\n\r\n\treturn { pages: this.writer.context().pages, linearNodeList: this.linearNodeList };\r\n};\r\n\r\n\r\nLayoutBuilder.prototype.addBackground = function (background) {\r\n\tvar backgroundGetter = isFunction(background) ? background : function () {\r\n\t\treturn background;\r\n\t};\r\n\r\n\tvar context = this.writer.context();\r\n\tvar pageSize = context.getCurrentPage().pageSize;\r\n\r\n\tvar pageBackground = backgroundGetter(context.page + 1, pageSize);\r\n\r\n\tif (pageBackground) {\r\n\t\tthis.writer.beginUnbreakableBlock(pageSize.width, pageSize.height);\r\n\t\tpageBackground = this.docPreprocessor.preprocessDocument(pageBackground);\r\n\t\tthis.processNode(this.docMeasure.measureDocument(pageBackground));\r\n\t\tthis.writer.commitUnbreakableBlock(0, 0);\r\n\t\tcontext.backgroundLength[context.page] += pageBackground.positions.length;\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.addStaticRepeatable = function (headerOrFooter, sizeFunction) {\r\n\tthis.addDynamicRepeatable(function () {\r\n\t\treturn JSON.parse(JSON.stringify(headerOrFooter)); // copy to new object\r\n\t}, sizeFunction);\r\n};\r\n\r\nLayoutBuilder.prototype.addDynamicRepeatable = function (nodeGetter, sizeFunction) {\r\n\tvar pages = this.writer.context().pages;\r\n\r\n\tfor (var pageIndex = 0, l = pages.length; pageIndex < l; pageIndex++) {\r\n\t\tthis.writer.context().page = pageIndex;\r\n\r\n\t\tvar node = nodeGetter(pageIndex + 1, l, this.writer.context().pages[pageIndex].pageSize);\r\n\r\n\t\tif (node) {\r\n\t\t\tvar sizes = sizeFunction(this.writer.context().getCurrentPage().pageSize, this.pageMargins);\r\n\t\t\tthis.writer.beginUnbreakableBlock(sizes.width, sizes.height);\r\n\t\t\tnode = this.docPreprocessor.preprocessDocument(node);\r\n\t\t\tthis.processNode(this.docMeasure.measureDocument(node));\r\n\t\t\tthis.writer.commitUnbreakableBlock(sizes.x, sizes.y);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.addHeadersAndFooters = function (header, footer) {\r\n\tvar headerSizeFct = function (pageSize, pageMargins) {\r\n\t\treturn {\r\n\t\t\tx: 0,\r\n\t\t\ty: 0,\r\n\t\t\twidth: pageSize.width,\r\n\t\t\theight: pageMargins.top\r\n\t\t};\r\n\t};\r\n\r\n\tvar footerSizeFct = function (pageSize, pageMargins) {\r\n\t\treturn {\r\n\t\t\tx: 0,\r\n\t\t\ty: pageSize.height - pageMargins.bottom,\r\n\t\t\twidth: pageSize.width,\r\n\t\t\theight: pageMargins.bottom\r\n\t\t};\r\n\t};\r\n\r\n\tif (isFunction(header)) {\r\n\t\tthis.addDynamicRepeatable(header, headerSizeFct);\r\n\t} else if (header) {\r\n\t\tthis.addStaticRepeatable(header, headerSizeFct);\r\n\t}\r\n\r\n\tif (isFunction(footer)) {\r\n\t\tthis.addDynamicRepeatable(footer, footerSizeFct);\r\n\t} else if (footer) {\r\n\t\tthis.addStaticRepeatable(footer, footerSizeFct);\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.addWatermark = function (watermark, fontProvider, defaultStyle) {\r\n\tif (isString(watermark)) {\r\n\t\twatermark = { 'text': watermark };\r\n\t}\r\n\r\n\tif (!watermark.text) { // empty watermark text\r\n\t\treturn;\r\n\t}\r\n\r\n\twatermark.font = watermark.font || defaultStyle.font || 'Roboto';\r\n\twatermark.fontSize = watermark.fontSize || 'auto';\r\n\twatermark.color = watermark.color || 'black';\r\n\twatermark.opacity = isNumber(watermark.opacity) ? watermark.opacity : 0.6;\r\n\twatermark.bold = watermark.bold || false;\r\n\twatermark.italics = watermark.italics || false;\r\n\twatermark.angle = !isUndefined(watermark.angle) && !isNull(watermark.angle) ? watermark.angle : null;\r\n\r\n\tif (watermark.angle === null) {\r\n\t\twatermark.angle = Math.atan2(this.pageSize.height, this.pageSize.width) * -180 / Math.PI;\r\n\t}\r\n\r\n\tif (watermark.fontSize === 'auto') {\r\n\t\twatermark.fontSize = getWatermarkFontSize(this.pageSize, watermark, fontProvider);\r\n\t}\r\n\r\n\tvar watermarkObject = {\r\n\t\ttext: watermark.text,\r\n\t\tfont: fontProvider.provideFont(watermark.font, watermark.bold, watermark.italics),\r\n\t\tfontSize: watermark.fontSize,\r\n\t\tcolor: watermark.color,\r\n\t\topacity: watermark.opacity,\r\n\t\tangle: watermark.angle\r\n\t};\r\n\r\n\twatermarkObject._size = getWatermarkSize(watermark, fontProvider);\r\n\r\n\tvar pages = this.writer.context().pages;\r\n\tfor (var i = 0, l = pages.length; i < l; i++) {\r\n\t\tpages[i].watermark = watermarkObject;\r\n\t}\r\n\r\n\tfunction getWatermarkSize(watermark, fontProvider) {\r\n\t\tvar textTools = new TextTools(fontProvider);\r\n\t\tvar styleContextStack = new StyleContextStack(null, { font: watermark.font, bold: watermark.bold, italics: watermark.italics });\r\n\r\n\t\tstyleContextStack.push({\r\n\t\t\tfontSize: watermark.fontSize\r\n\t\t});\r\n\r\n\t\tvar size = textTools.sizeOfString(watermark.text, styleContextStack);\r\n\t\tvar rotatedSize = textTools.sizeOfRotatedText(watermark.text, watermark.angle, styleContextStack);\r\n\r\n\t\treturn { size: size, rotatedSize: rotatedSize };\r\n\t}\r\n\r\n\tfunction getWatermarkFontSize(pageSize, watermark, fontProvider) {\r\n\t\tvar textTools = new TextTools(fontProvider);\r\n\t\tvar styleContextStack = new StyleContextStack(null, { font: watermark.font, bold: watermark.bold, italics: watermark.italics });\r\n\t\tvar rotatedSize;\r\n\r\n\t\t/**\r\n\t\t * Binary search the best font size.\r\n\t\t * Initial bounds [0, 1000]\r\n\t\t * Break when range < 1\r\n\t\t */\r\n\t\tvar a = 0;\r\n\t\tvar b = 1000;\r\n\t\tvar c = (a + b) / 2;\r\n\t\twhile (Math.abs(a - b) > 1) {\r\n\t\t\tstyleContextStack.push({\r\n\t\t\t\tfontSize: c\r\n\t\t\t});\r\n\t\t\trotatedSize = textTools.sizeOfRotatedText(watermark.text, watermark.angle, styleContextStack);\r\n\t\t\tif (rotatedSize.width > pageSize.width) {\r\n\t\t\t\tb = c;\r\n\t\t\t\tc = (a + b) / 2;\r\n\t\t\t} else if (rotatedSize.width < pageSize.width) {\r\n\t\t\t\tif (rotatedSize.height > pageSize.height) {\r\n\t\t\t\t\tb = c;\r\n\t\t\t\t\tc = (a + b) / 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ta = c;\r\n\t\t\t\t\tc = (a + b) / 2;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstyleContextStack.pop();\r\n\t\t}\r\n\t\t/*\r\n\t\t End binary search\r\n\t\t */\r\n\t\treturn c;\r\n\t}\r\n};\r\n\r\nfunction decorateNode(node) {\r\n\tvar x = node.x, y = node.y;\r\n\tnode.positions = [];\r\n\r\n\tif (isArray(node.canvas)) {\r\n\t\tnode.canvas.forEach(function (vector) {\r\n\t\t\tvar x = vector.x, y = vector.y, x1 = vector.x1, y1 = vector.y1, x2 = vector.x2, y2 = vector.y2;\r\n\t\t\tvector.resetXY = function () {\r\n\t\t\t\tvector.x = x;\r\n\t\t\t\tvector.y = y;\r\n\t\t\t\tvector.x1 = x1;\r\n\t\t\t\tvector.y1 = y1;\r\n\t\t\t\tvector.x2 = x2;\r\n\t\t\t\tvector.y2 = y2;\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tnode.resetXY = function () {\r\n\t\tnode.x = x;\r\n\t\tnode.y = y;\r\n\t\tif (isArray(node.canvas)) {\r\n\t\t\tnode.canvas.forEach(function (vector) {\r\n\t\t\t\tvector.resetXY();\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\nLayoutBuilder.prototype.processNode = function (node) {\r\n\tvar self = this;\r\n\r\n\tthis.linearNodeList.push(node);\r\n\tdecorateNode(node);\r\n\r\n\tapplyMargins(function () {\r\n\t\tvar unbreakable = node.unbreakable;\r\n\t\tif (unbreakable) {\r\n\t\t\tself.writer.beginUnbreakableBlock();\r\n\t\t}\r\n\r\n\t\tvar absPosition = node.absolutePosition;\r\n\t\tif (absPosition) {\r\n\t\t\tself.writer.context().beginDetachedBlock();\r\n\t\t\tself.writer.context().moveTo(absPosition.x || 0, absPosition.y || 0);\r\n\t\t}\r\n\r\n\t\tvar relPosition = node.relativePosition;\r\n\t\tif (relPosition) {\r\n\t\t\tself.writer.context().beginDetachedBlock();\r\n\t\t\tself.writer.context().moveToRelative(relPosition.x || 0, relPosition.y || 0);\r\n\t\t}\r\n\r\n\t\tif (node.stack) {\r\n\t\t\tself.processVerticalContainer(node);\r\n\t\t} else if (node.columns) {\r\n\t\t\tself.processColumns(node);\r\n\t\t} else if (node.ul) {\r\n\t\t\tself.processList(false, node);\r\n\t\t} else if (node.ol) {\r\n\t\t\tself.processList(true, node);\r\n\t\t} else if (node.table) {\r\n\t\t\tself.processTable(node);\r\n\t\t} else if (node.text !== undefined) {\r\n\t\t\tself.processLeaf(node);\r\n\t\t} else if (node.toc) {\r\n\t\t\tself.processToc(node);\r\n\t\t} else if (node.image) {\r\n\t\t\tself.processImage(node);\r\n\t\t} else if (node.svg) {\r\n\t\t\tself.processSVG(node);\r\n\t\t} else if (node.canvas) {\r\n\t\t\tself.processCanvas(node);\r\n\t\t} else if (node.qr) {\r\n\t\t\tself.processQr(node);\r\n\t\t} else if (!node._span) {\r\n\t\t\tthrow 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);\r\n\t\t}\r\n\r\n\t\tif (absPosition || relPosition) {\r\n\t\t\tself.writer.context().endDetachedBlock();\r\n\t\t}\r\n\r\n\t\tif (unbreakable) {\r\n\t\t\tself.writer.commitUnbreakableBlock();\r\n\t\t}\r\n\t});\r\n\r\n\tfunction applyMargins(callback) {\r\n\t\tvar margin = node._margin;\r\n\r\n\t\tif (node.pageBreak === 'before') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t} else if (node.pageBreak === 'beforeOdd') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\tif ((self.writer.context().page + 1) % 2 === 1) {\r\n\t\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\t}\r\n\t\t} else if (node.pageBreak === 'beforeEven') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\tif ((self.writer.context().page + 1) % 2 === 0) {\r\n\t\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (margin) {\r\n\t\t\tself.writer.context().moveDown(margin[1]);\r\n\t\t\tself.writer.context().addMargin(margin[0], margin[2]);\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif (margin) {\r\n\t\t\tself.writer.context().addMargin(-margin[0], -margin[2]);\r\n\t\t\tself.writer.context().moveDown(margin[3]);\r\n\t\t}\r\n\r\n\t\tif (node.pageBreak === 'after') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t} else if (node.pageBreak === 'afterOdd') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\tif ((self.writer.context().page + 1) % 2 === 1) {\r\n\t\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\t}\r\n\t\t} else if (node.pageBreak === 'afterEven') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\tif ((self.writer.context().page + 1) % 2 === 0) {\r\n\t\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// vertical container\r\nLayoutBuilder.prototype.processVerticalContainer = function (node) {\r\n\tvar self = this;\r\n\tnode.stack.forEach(function (item) {\r\n\t\tself.processNode(item);\r\n\t\taddAll(node.positions, item.positions);\r\n\r\n\t\t//TODO: paragraph gap\r\n\t});\r\n};\r\n\r\n// columns\r\nLayoutBuilder.prototype.processColumns = function (columnNode) {\r\n\tvar columns = columnNode.columns;\r\n\tvar availableWidth = this.writer.context().availableWidth;\r\n\tvar gaps = gapArray(columnNode._gap);\r\n\r\n\tif (gaps) {\r\n\t\tavailableWidth -= (gaps.length - 1) * columnNode._gap;\r\n\t}\r\n\r\n\tColumnCalculator.buildColumnWidths(columns, availableWidth);\r\n\tvar result = this.processRow(columns, columns, gaps);\r\n\taddAll(columnNode.positions, result.positions);\r\n\r\n\r\n\tfunction gapArray(gap) {\r\n\t\tif (!gap) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar gaps = [];\r\n\t\tgaps.push(0);\r\n\r\n\t\tfor (var i = columns.length - 1; i > 0; i--) {\r\n\t\t\tgaps.push(gap);\r\n\t\t}\r\n\r\n\t\treturn gaps;\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.processRow = function (columns, widths, gaps, tableBody, tableRow, height) {\r\n\tvar self = this;\r\n\tvar pageBreaks = [], positions = [];\r\n\r\n\tthis.tracker.auto('pageChanged', storePageBreakData, function () {\r\n\t\twidths = widths || columns;\r\n\r\n\t\tself.writer.context().beginColumnGroup();\r\n\r\n\t\tfor (var i = 0, l = columns.length; i < l; i++) {\r\n\t\t\tvar column = columns[i];\r\n\t\t\tvar width = widths[i]._calcWidth;\r\n\t\t\tvar leftOffset = colLeftOffset(i);\r\n\r\n\t\t\tif (column.colSpan && column.colSpan > 1) {\r\n\t\t\t\tfor (var j = 1; j < column.colSpan; j++) {\r\n\t\t\t\t\twidth += widths[++i]._calcWidth + gaps[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tself.writer.context().beginColumn(width, leftOffset, getEndingCell(column, i));\r\n\t\t\tif (!column._span) {\r\n\t\t\t\tself.processNode(column);\r\n\t\t\t\taddAll(positions, column.positions);\r\n\t\t\t} else if (column._columnEndingContext) {\r\n\t\t\t\t// row-span ending\r\n\t\t\t\tself.writer.context().markEnding(column);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tself.writer.context().completeColumnGroup(height);\r\n\t});\r\n\r\n\treturn { pageBreaks: pageBreaks, positions: positions };\r\n\r\n\tfunction storePageBreakData(data) {\r\n\t\tvar pageDesc;\r\n\r\n\t\tfor (var i = 0, l = pageBreaks.length; i < l; i++) {\r\n\t\t\tvar desc = pageBreaks[i];\r\n\t\t\tif (desc.prevPage === data.prevPage) {\r\n\t\t\t\tpageDesc = desc;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!pageDesc) {\r\n\t\t\tpageDesc = data;\r\n\t\t\tpageBreaks.push(pageDesc);\r\n\t\t}\r\n\t\tpageDesc.prevY = Math.max(pageDesc.prevY, data.prevY);\r\n\t\tpageDesc.y = Math.min(pageDesc.y, data.y);\r\n\t}\r\n\r\n\tfunction colLeftOffset(i) {\r\n\t\tif (gaps && gaps.length > i) {\r\n\t\t\treturn gaps[i];\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tfunction getEndingCell(column, columnIndex) {\r\n\t\tif (column.rowSpan && column.rowSpan > 1) {\r\n\t\t\tvar endingRow = tableRow + column.rowSpan - 1;\r\n\t\t\tif (endingRow >= tableBody.length) {\r\n\t\t\t\tthrow 'Row span for column ' + columnIndex + ' (with indexes starting from 0) exceeded row count';\r\n\t\t\t}\r\n\t\t\treturn tableBody[endingRow][columnIndex];\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n};\r\n\r\n// lists\r\nLayoutBuilder.prototype.processList = function (orderedList, node) {\r\n\tvar self = this,\r\n\t\titems = orderedList ? node.ol : node.ul,\r\n\t\tgapSize = node._gapSize;\r\n\r\n\tthis.writer.context().addMargin(gapSize.width);\r\n\r\n\tvar nextMarker;\r\n\tthis.tracker.auto('lineAdded', addMarkerToFirstLeaf, function () {\r\n\t\titems.forEach(function (item) {\r\n\t\t\tnextMarker = item.listMarker;\r\n\t\t\tself.processNode(item);\r\n\t\t\taddAll(node.positions, item.positions);\r\n\t\t});\r\n\t});\r\n\r\n\tthis.writer.context().addMargin(-gapSize.width);\r\n\r\n\tfunction addMarkerToFirstLeaf(line) {\r\n\t\t// I'm not very happy with the way list processing is implemented\r\n\t\t// (both code and algorithm should be rethinked)\r\n\t\tif (nextMarker) {\r\n\t\t\tvar marker = nextMarker;\r\n\t\t\tnextMarker = null;\r\n\r\n\t\t\tif (marker.canvas) {\r\n\t\t\t\tvar vector = marker.canvas[0];\r\n\r\n\t\t\t\toffsetVector(vector, -marker._minWidth, 0);\r\n\t\t\t\tself.writer.addVector(vector);\r\n\t\t\t} else if (marker._inlines) {\r\n\t\t\t\tvar markerLine = new Line(self.pageSize.width);\r\n\t\t\t\tmarkerLine.addInline(marker._inlines[0]);\r\n\t\t\t\tmarkerLine.x = -marker._minWidth;\r\n\t\t\t\tmarkerLine.y = line.getAscenderHeight() - markerLine.getAscenderHeight();\r\n\t\t\t\tself.writer.addLine(markerLine, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// tables\r\nLayoutBuilder.prototype.processTable = function (tableNode) {\r\n\tvar processor = new TableProcessor(tableNode);\r\n\r\n\tprocessor.beginTable(this.writer);\r\n\r\n\tvar rowHeights = tableNode.table.heights;\r\n\tfor (var i = 0, l = tableNode.table.body.length; i < l; i++) {\r\n\t\tprocessor.beginRow(i, this.writer);\r\n\r\n\t\tvar height;\r\n\t\tif (isFunction(rowHeights)) {\r\n\t\t\theight = rowHeights(i);\r\n\t\t} else if (isArray(rowHeights)) {\r\n\t\t\theight = rowHeights[i];\r\n\t\t} else {\r\n\t\t\theight = rowHeights;\r\n\t\t}\r\n\r\n\t\tif (height === 'auto') {\r\n\t\t\theight = undefined;\r\n\t\t}\r\n\r\n\t\tvar result = this.processRow(tableNode.table.body[i], tableNode.table.widths, tableNode._offsets.offsets, tableNode.table.body, i, height);\r\n\t\taddAll(tableNode.positions, result.positions);\r\n\r\n\t\tprocessor.endRow(i, this.writer, result.pageBreaks);\r\n\t}\r\n\r\n\tprocessor.endTable(this.writer);\r\n};\r\n\r\n// leafs (texts)\r\nLayoutBuilder.prototype.processLeaf = function (node) {\r\n\tvar line = this.buildNextLine(node);\r\n\tif (line && (node.tocItem || node.id)) {\r\n\t\tline._node = node;\r\n\t}\r\n\tvar currentHeight = (line) ? line.getHeight() : 0;\r\n\tvar maxHeight = node.maxHeight || -1;\r\n\r\n\tif (line) {\r\n\t\tvar nodeId = getNodeId(node);\r\n\t\tif (nodeId) {\r\n\t\t\tline.id = nodeId;\r\n\t\t}\r\n\t}\r\n\r\n\tif (node._tocItemRef) {\r\n\t\tline._pageNodeRef = node._tocItemRef;\r\n\t}\r\n\r\n\tif (node._pageRef) {\r\n\t\tline._pageNodeRef = node._pageRef._nodeRef;\r\n\t}\r\n\r\n\tif (line && line.inlines && isArray(line.inlines)) {\r\n\t\tfor (var i = 0, l = line.inlines.length; i < l; i++) {\r\n\t\t\tif (line.inlines[i]._tocItemRef) {\r\n\t\t\t\tline.inlines[i]._pageNodeRef = line.inlines[i]._tocItemRef;\r\n\t\t\t}\r\n\r\n\t\t\tif (line.inlines[i]._pageRef) {\r\n\t\t\t\tline.inlines[i]._pageNodeRef = line.inlines[i]._pageRef._nodeRef;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twhile (line && (maxHeight === -1 || currentHeight < maxHeight)) {\r\n\t\tvar positions = this.writer.addLine(line);\r\n\t\tnode.positions.push(positions);\r\n\t\tline = this.buildNextLine(node);\r\n\t\tif (line) {\r\n\t\t\tcurrentHeight += line.getHeight();\r\n\t\t}\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.processToc = function (node) {\r\n\tif (node.toc.title) {\r\n\t\tthis.processNode(node.toc.title);\r\n\t}\r\n\tif (node.toc._table) {\r\n\t\tthis.processNode(node.toc._table);\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.buildNextLine = function (textNode) {\r\n\r\n\tfunction cloneInline(inline) {\r\n\t\tvar newInline = inline.constructor();\r\n\t\tfor (var key in inline) {\r\n\t\t\tnewInline[key] = inline[key];\r\n\t\t}\r\n\t\treturn newInline;\r\n\t}\r\n\r\n\tif (!textNode._inlines || textNode._inlines.length === 0) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar line = new Line(this.writer.context().availableWidth);\r\n\tvar textTools = new TextTools(null);\r\n\r\n\tvar isForceContinue = false;\r\n\twhile (textNode._inlines && textNode._inlines.length > 0 &&\r\n\t\t(line.hasEnoughSpaceForInline(textNode._inlines[0], textNode._inlines.slice(1)) || isForceContinue)) {\r\n\t\tvar isHardWrap = false;\r\n\t\tvar inline = textNode._inlines.shift();\r\n\t\tisForceContinue = false;\r\n\r\n\t\tif (!inline.noWrap && inline.text.length > 1 && inline.width > line.getAvailableWidth()) {\r\n\t\t\tvar widthPerChar = inline.width / inline.text.length;\r\n\t\t\tvar maxChars = Math.floor(line.getAvailableWidth() / widthPerChar);\r\n\t\t\tif (maxChars < 1) {\r\n\t\t\t\tmaxChars = 1;\r\n\t\t\t}\r\n\t\t\tif (maxChars < inline.text.length) {\r\n\t\t\t\tvar newInline = cloneInline(inline);\r\n\r\n\t\t\t\tnewInline.text = inline.text.substr(maxChars);\r\n\t\t\t\tinline.text = inline.text.substr(0, maxChars);\r\n\r\n\t\t\t\tnewInline.width = textTools.widthOfString(newInline.text, newInline.font, newInline.fontSize, newInline.characterSpacing, newInline.fontFeatures);\r\n\t\t\t\tinline.width = textTools.widthOfString(inline.text, inline.font, inline.fontSize, inline.characterSpacing, inline.fontFeatures);\r\n\r\n\t\t\t\ttextNode._inlines.unshift(newInline);\r\n\t\t\t\tisHardWrap = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tline.addInline(inline);\r\n\r\n\t\tisForceContinue = inline.noNewLine && !isHardWrap;\r\n\t}\r\n\r\n\tline.lastLineInParagraph = textNode._inlines.length === 0;\r\n\r\n\treturn line;\r\n};\r\n\r\n// images\r\nLayoutBuilder.prototype.processImage = function (node) {\r\n\tvar position = this.writer.addImage(node);\r\n\tnode.positions.push(position);\r\n};\r\n\r\nLayoutBuilder.prototype.processSVG = function (node) {\r\n\tvar position = this.writer.addSVG(node);\r\n\tnode.positions.push(position);\r\n};\r\n\r\nLayoutBuilder.prototype.processCanvas = function (node) {\r\n\tvar height = node._minHeight;\r\n\r\n\tif (node.absolutePosition === undefined && this.writer.context().availableHeight < height) {\r\n\t\t// TODO: support for canvas larger than a page\r\n\t\t// TODO: support for other overflow methods\r\n\r\n\t\tthis.writer.moveToNextPage();\r\n\t}\r\n\r\n\tthis.writer.alignCanvas(node);\r\n\r\n\tnode.canvas.forEach(function (vector) {\r\n\t\tvar position = this.writer.addVector(vector);\r\n\t\tnode.positions.push(position);\r\n\t}, this);\r\n\r\n\tthis.writer.context().moveDown(height);\r\n};\r\n\r\nLayoutBuilder.prototype.processQr = function (node) {\r\n\tvar position = this.writer.addQr(node);\r\n\tnode.positions.push(position);\r\n};\r\n\r\nmodule.exports = LayoutBuilder;\r\n\n\n/***/ }),\n\n/***/ 70770:\n/***/ (function(module) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * Creates an instance of Line\r\n *\r\n * @constructor\r\n * @this {Line}\r\n * @param {Number} Maximum width this line can have\r\n */\r\nfunction Line(maxWidth) {\r\n\tthis.maxWidth = maxWidth;\r\n\tthis.leadingCut = 0;\r\n\tthis.trailingCut = 0;\r\n\tthis.inlineWidths = 0;\r\n\tthis.inlines = [];\r\n}\r\n\r\nLine.prototype.getAscenderHeight = function () {\r\n\tvar y = 0;\r\n\r\n\tthis.inlines.forEach(function (inline) {\r\n\t\ty = Math.max(y, inline.font.ascender / 1000 * inline.fontSize);\r\n\t});\r\n\treturn y;\r\n};\r\n\r\nLine.prototype.hasEnoughSpaceForInline = function (inline, nextInlines) {\r\n\tnextInlines = nextInlines || [];\r\n\r\n\tif (this.inlines.length === 0) {\r\n\t\treturn true;\r\n\t}\r\n\tif (this.newLineForced) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvar inlineWidth = inline.width;\r\n\tvar inlineTrailingCut = inline.trailingCut || 0;\r\n\tif (inline.noNewLine) {\r\n\t\tfor (var i = 0, l = nextInlines.length; i < l; i++) {\r\n\t\t\tvar nextInline = nextInlines[i];\r\n\t\t\tinlineWidth += nextInline.width;\r\n\t\t\tinlineTrailingCut += nextInline.trailingCut || 0;\r\n\t\t\tif (!nextInline.noNewLine) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn (this.inlineWidths + inlineWidth - this.leadingCut - inlineTrailingCut) <= this.maxWidth;\r\n};\r\n\r\nLine.prototype.addInline = function (inline) {\r\n\tif (this.inlines.length === 0) {\r\n\t\tthis.leadingCut = inline.leadingCut || 0;\r\n\t}\r\n\tthis.trailingCut = inline.trailingCut || 0;\r\n\r\n\tinline.x = this.inlineWidths - this.leadingCut;\r\n\r\n\tthis.inlines.push(inline);\r\n\tthis.inlineWidths += inline.width;\r\n\r\n\tif (inline.lineEnd) {\r\n\t\tthis.newLineForced = true;\r\n\t}\r\n};\r\n\r\nLine.prototype.getWidth = function () {\r\n\treturn this.inlineWidths - this.leadingCut - this.trailingCut;\r\n};\r\n\r\nLine.prototype.getAvailableWidth = function () {\r\n\treturn this.maxWidth - this.getWidth();\r\n};\r\n\r\n/**\r\n * Returns line height\r\n * @return {Number}\r\n */\r\nLine.prototype.getHeight = function () {\r\n\tvar max = 0;\r\n\r\n\tthis.inlines.forEach(function (item) {\r\n\t\tmax = Math.max(max, item.height || 0);\r\n\t});\r\n\r\n\treturn max;\r\n};\r\n\r\nmodule.exports = Line;\r\n\n\n/***/ }),\n\n/***/ 11220:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar isUndefined = (__webpack_require__(91867).isUndefined);\r\nvar ElementWriter = __webpack_require__(54861);\r\n\r\n/**\r\n * Creates an instance of PageElementWriter - an extended ElementWriter\r\n * which can handle:\r\n * - page-breaks (it adds new pages when there's not enough space left),\r\n * - repeatable fragments (like table-headers, which are repeated everytime\r\n * a page-break occurs)\r\n * - transactions (used for unbreakable-blocks when we want to make sure\r\n * whole block will be rendered on the same page)\r\n */\r\nfunction PageElementWriter(context, tracker) {\r\n\tthis.transactionLevel = 0;\r\n\tthis.repeatables = [];\r\n\tthis.tracker = tracker;\r\n\tthis.writer = new ElementWriter(context, tracker);\r\n}\r\n\r\nfunction fitOnPage(self, addFct) {\r\n\tvar position = addFct(self);\r\n\tif (!position) {\r\n\t\tself.moveToNextPage();\r\n\t\tposition = addFct(self);\r\n\t}\r\n\treturn position;\r\n}\r\n\r\nPageElementWriter.prototype.addLine = function (line, dontUpdateContextPosition, index) {\r\n\treturn fitOnPage(this, function (self) {\r\n\t\treturn self.writer.addLine(line, dontUpdateContextPosition, index);\r\n\t});\r\n};\r\n\r\nPageElementWriter.prototype.addImage = function (image, index) {\r\n\treturn fitOnPage(this, function (self) {\r\n\t\treturn self.writer.addImage(image, index);\r\n\t});\r\n};\r\n\r\nPageElementWriter.prototype.addSVG = function (image, index) {\r\n\treturn fitOnPage(this, function (self) {\r\n\t\treturn self.writer.addSVG(image, index);\r\n\t});\r\n};\r\n\r\nPageElementWriter.prototype.addQr = function (qr, index) {\r\n\treturn fitOnPage(this, function (self) {\r\n\t\treturn self.writer.addQr(qr, index);\r\n\t});\r\n};\r\n\r\nPageElementWriter.prototype.addVector = function (vector, ignoreContextX, ignoreContextY, index) {\r\n\treturn this.writer.addVector(vector, ignoreContextX, ignoreContextY, index);\r\n};\r\n\r\nPageElementWriter.prototype.beginClip = function (width, height) {\r\n\treturn this.writer.beginClip(width, height);\r\n};\r\n\r\nPageElementWriter.prototype.endClip = function () {\r\n\treturn this.writer.endClip();\r\n};\r\n\r\nPageElementWriter.prototype.alignCanvas = function (node) {\r\n\tthis.writer.alignCanvas(node);\r\n};\r\n\r\nPageElementWriter.prototype.addFragment = function (fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition) {\r\n\tif (!this.writer.addFragment(fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition)) {\r\n\t\tthis.moveToNextPage();\r\n\t\tthis.writer.addFragment(fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition);\r\n\t}\r\n};\r\n\r\nPageElementWriter.prototype.moveToNextPage = function (pageOrientation) {\r\n\r\n\tvar nextPage = this.writer.context.moveToNextPage(pageOrientation);\r\n\r\n\t// moveToNextPage is called multiple times for table, because is called for each column\r\n\t// and repeatables are inserted only in the first time. If columns are used, is needed\r\n\t// call for table in first column and then for table in the second column (is other repeatables).\r\n\tthis.repeatables.forEach(function (rep) {\r\n\t\tif (isUndefined(rep.insertedOnPages[this.writer.context.page])) {\r\n\t\t\trep.insertedOnPages[this.writer.context.page] = true;\r\n\t\t\tthis.writer.addFragment(rep, true);\r\n\t\t} else {\r\n\t\t\tthis.writer.context.moveDown(rep.height);\r\n\t\t}\r\n\t}, this);\r\n\r\n\tthis.writer.tracker.emit('pageChanged', {\r\n\t\tprevPage: nextPage.prevPage,\r\n\t\tprevY: nextPage.prevY,\r\n\t\ty: this.writer.context.y\r\n\t});\r\n};\r\n\r\nPageElementWriter.prototype.beginUnbreakableBlock = function (width, height) {\r\n\tif (this.transactionLevel++ === 0) {\r\n\t\tthis.originalX = this.writer.context.x;\r\n\t\tthis.writer.pushContext(width, height);\r\n\t}\r\n};\r\n\r\nPageElementWriter.prototype.commitUnbreakableBlock = function (forcedX, forcedY) {\r\n\tif (--this.transactionLevel === 0) {\r\n\t\tvar unbreakableContext = this.writer.context;\r\n\t\tthis.writer.popContext();\r\n\r\n\t\tvar nbPages = unbreakableContext.pages.length;\r\n\t\tif (nbPages > 0) {\r\n\t\t\t// no support for multi-page unbreakableBlocks\r\n\t\t\tvar fragment = unbreakableContext.pages[0];\r\n\t\t\tfragment.xOffset = forcedX;\r\n\t\t\tfragment.yOffset = forcedY;\r\n\r\n\t\t\t//TODO: vectors can influence height in some situations\r\n\t\t\tif (nbPages > 1) {\r\n\t\t\t\t// on out-of-context blocs (headers, footers, background) height should be the whole DocumentContext height\r\n\t\t\t\tif (forcedX !== undefined || forcedY !== undefined) {\r\n\t\t\t\t\tfragment.height = unbreakableContext.getCurrentPage().pageSize.height - unbreakableContext.pageMargins.top - unbreakableContext.pageMargins.bottom;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfragment.height = this.writer.context.getCurrentPage().pageSize.height - this.writer.context.pageMargins.top - this.writer.context.pageMargins.bottom;\r\n\t\t\t\t\tfor (var i = 0, l = this.repeatables.length; i < l; i++) {\r\n\t\t\t\t\t\tfragment.height -= this.repeatables[i].height;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfragment.height = unbreakableContext.y;\r\n\t\t\t}\r\n\r\n\t\t\tif (forcedX !== undefined || forcedY !== undefined) {\r\n\t\t\t\tthis.writer.addFragment(fragment, true, true, true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.addFragment(fragment);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nPageElementWriter.prototype.currentBlockToRepeatable = function () {\r\n\tvar unbreakableContext = this.writer.context;\r\n\tvar rep = { items: [] };\r\n\r\n\tunbreakableContext.pages[0].items.forEach(function (item) {\r\n\t\trep.items.push(item);\r\n\t});\r\n\r\n\trep.xOffset = this.originalX;\r\n\r\n\t//TODO: vectors can influence height in some situations\r\n\trep.height = unbreakableContext.y;\r\n\r\n\trep.insertedOnPages = [];\r\n\r\n\treturn rep;\r\n};\r\n\r\nPageElementWriter.prototype.pushToRepeatables = function (rep) {\r\n\tthis.repeatables.push(rep);\r\n};\r\n\r\nPageElementWriter.prototype.popFromRepeatables = function () {\r\n\tthis.repeatables.pop();\r\n};\r\n\r\nPageElementWriter.prototype.context = function () {\r\n\treturn this.writer.context;\r\n};\r\n\r\nmodule.exports = PageElementWriter;\r\n\n\n/***/ }),\n\n/***/ 85208:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nfunction _interopDefault(ex) {\r\n\treturn (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex;\r\n}\r\n\r\nvar PdfKit = _interopDefault(__webpack_require__(48585));\r\n\r\nfunction getEngineInstance() {\r\n\treturn PdfKit;\r\n}\r\n\r\nfunction createPdfDocument(options) {\r\n\toptions = options || {};\r\n\treturn new PdfKit(options);\r\n}\r\n\r\nmodule.exports = {\r\n\tgetEngineInstance: getEngineInstance,\r\n\tcreatePdfDocument: createPdfDocument\r\n};\r\n\n\n/***/ }),\n\n/***/ 81566:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/*eslint no-unused-vars: [\"error\", {\"args\": \"none\"}]*/\r\n\r\n\r\nvar PdfKitEngine = __webpack_require__(85208);\r\nvar FontProvider = __webpack_require__(28284);\r\nvar LayoutBuilder = __webpack_require__(25235);\r\nvar sizes = __webpack_require__(70098);\r\nvar ImageMeasure = __webpack_require__(93415);\r\nvar SVGMeasure = __webpack_require__(89638);\r\nvar textDecorator = __webpack_require__(84786);\r\nvar TextTools = __webpack_require__(11548);\r\nvar isFunction = (__webpack_require__(91867).isFunction);\r\nvar isString = (__webpack_require__(91867).isString);\r\nvar isNumber = (__webpack_require__(91867).isNumber);\r\nvar isBoolean = (__webpack_require__(91867).isBoolean);\r\nvar isArray = (__webpack_require__(91867).isArray);\r\nvar isUndefined = (__webpack_require__(91867).isUndefined);\r\nvar isPattern = (__webpack_require__(91867).isPattern);\r\nvar getPattern = (__webpack_require__(91867).getPattern);\r\nvar SVGtoPDF = __webpack_require__(54074);\r\n\r\nvar findFont = function (fonts, requiredFonts, defaultFont) {\r\n\tfor (var i = 0; i < requiredFonts.length; i++) {\r\n\t\tvar requiredFont = requiredFonts[i].toLowerCase();\r\n\r\n\t\tfor (var font in fonts) {\r\n\t\t\tif (font.toLowerCase() === requiredFont) {\r\n\t\t\t\treturn font;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn defaultFont;\r\n};\r\n\r\n////////////////////////////////////////\r\n// PdfPrinter\r\n\r\n/**\r\n * @class Creates an instance of a PdfPrinter which turns document definition into a pdf\r\n *\r\n * @param {Object} fontDescriptors font definition dictionary\r\n *\r\n * @example\r\n * var fontDescriptors = {\r\n *\tRoboto: {\r\n *\t\tnormal: 'fonts/Roboto-Regular.ttf',\r\n *\t\tbold: 'fonts/Roboto-Medium.ttf',\r\n *\t\titalics: 'fonts/Roboto-Italic.ttf',\r\n *\t\tbolditalics: 'fonts/Roboto-MediumItalic.ttf'\r\n *\t}\r\n * };\r\n *\r\n * var printer = new PdfPrinter(fontDescriptors);\r\n */\r\nfunction PdfPrinter(fontDescriptors) {\r\n\tthis.fontDescriptors = fontDescriptors;\r\n}\r\n\r\n/**\r\n * Executes layout engine for the specified document and renders it into a pdfkit document\r\n * ready to be saved.\r\n *\r\n * @param {Object} docDefinition document definition\r\n * @param {Object} docDefinition.content an array describing the pdf structure (for more information take a look at the examples in the /examples folder)\r\n * @param {Object} [docDefinition.defaultStyle] default (implicit) style definition\r\n * @param {Object} [docDefinition.styles] dictionary defining all styles which can be used in the document\r\n * @param {Object} [docDefinition.pageSize] page size (pdfkit units, A4 dimensions by default)\r\n * @param {Number} docDefinition.pageSize.width width\r\n * @param {Number} docDefinition.pageSize.height height\r\n * @param {Object} [docDefinition.pageMargins] page margins (pdfkit units)\r\n * @param {Number} docDefinition.maxPagesNumber maximum number of pages to render\r\n *\r\n * @example\r\n *\r\n * var docDefinition = {\r\n * \tinfo: {\r\n *\t\ttitle: 'awesome Document',\r\n *\t\tauthor: 'john doe',\r\n *\t\tsubject: 'subject of document',\r\n *\t\tkeywords: 'keywords for document',\r\n * \t},\r\n *\tcontent: [\r\n *\t\t'First paragraph',\r\n *\t\t'Second paragraph, this time a little bit longer',\r\n *\t\t{ text: 'Third paragraph, slightly bigger font size', fontSize: 20 },\r\n *\t\t{ text: 'Another paragraph using a named style', style: 'header' },\r\n *\t\t{ text: ['playing with ', 'inlines' ] },\r\n *\t\t{ text: ['and ', { text: 'restyling ', bold: true }, 'them'] },\r\n *\t],\r\n *\tstyles: {\r\n *\t\theader: { fontSize: 30, bold: true }\r\n *\t},\r\n *\tpatterns: {\r\n *\t\tstripe45d: {\r\n *\t\t\tboundingBox: [1, 1, 4, 4],\r\n *\t\t\txStep: 3,\r\n *\t\t\tyStep: 3,\r\n *\t\t\tpattern: '1 w 0 1 m 4 5 l s 2 0 m 5 3 l s'\r\n *\t\t}\r\n *\t}\r\n * };\r\n *\r\n * var pdfKitDoc = printer.createPdfKitDocument(docDefinition);\r\n *\r\n * pdfKitDoc.pipe(fs.createWriteStream('sample.pdf'));\r\n * pdfKitDoc.end();\r\n *\r\n * @return {Object} a pdfKit document object which can be saved or encode to data-url\r\n */\r\nPdfPrinter.prototype.createPdfKitDocument = function (docDefinition, options) {\r\n\toptions = options || {};\r\n\r\n\tdocDefinition.version = docDefinition.version || '1.3';\r\n\tdocDefinition.compress = isBoolean(docDefinition.compress) ? docDefinition.compress : true;\r\n\tdocDefinition.images = docDefinition.images || {};\r\n\tdocDefinition.pageMargins = ((docDefinition.pageMargins !== undefined) && (docDefinition.pageMargins !== null)) ? docDefinition.pageMargins : 40;\r\n\r\n\tvar pageSize = fixPageSize(docDefinition.pageSize, docDefinition.pageOrientation);\r\n\r\n\tvar pdfOptions = {\r\n\t\tsize: [pageSize.width, pageSize.height],\r\n\t\tpdfVersion: docDefinition.version,\r\n\t\tcompress: docDefinition.compress,\r\n\t\tuserPassword: docDefinition.userPassword,\r\n\t\townerPassword: docDefinition.ownerPassword,\r\n\t\tpermissions: docDefinition.permissions,\r\n lang: docDefinition.language,\r\n\t\tfontLayoutCache: isBoolean(options.fontLayoutCache) ? options.fontLayoutCache : true,\r\n\t\tbufferPages: options.bufferPages || false,\r\n\t\tautoFirstPage: false,\r\n\t\tinfo: createMetadata(docDefinition),\r\n\t\tfont: null\r\n\t};\r\n\r\n\tthis.pdfKitDoc = PdfKitEngine.createPdfDocument(pdfOptions);\r\n\r\n\tthis.fontProvider = new FontProvider(this.fontDescriptors, this.pdfKitDoc);\r\n\r\n\tvar builder = new LayoutBuilder(pageSize, fixPageMargins(docDefinition.pageMargins), new ImageMeasure(this.pdfKitDoc, docDefinition.images), new SVGMeasure());\r\n\r\n\tregisterDefaultTableLayouts(builder);\r\n\tif (options.tableLayouts) {\r\n\t\tbuilder.registerTableLayouts(options.tableLayouts);\r\n\t}\r\n\r\n\tvar pages = builder.layoutDocument(docDefinition.content, this.fontProvider, docDefinition.styles || {}, docDefinition.defaultStyle || {\r\n\t\tfontSize: 12,\r\n\t\tfont: 'Roboto'\r\n\t}, docDefinition.background, docDefinition.header, docDefinition.footer, docDefinition.images, docDefinition.watermark, docDefinition.pageBreakBefore);\r\n\tvar maxNumberPages = docDefinition.maxPagesNumber || -1;\r\n\tif (isNumber(maxNumberPages) && maxNumberPages > -1) {\r\n\t\tpages = pages.slice(0, maxNumberPages);\r\n\t}\r\n\r\n\t// if pageSize.height is set to Infinity, calculate the actual height of the page that\r\n\t// was laid out using the height of each of the items in the page.\r\n\tif (pageSize.height === Infinity) {\r\n\t\tvar pageHeight = calculatePageHeight(pages, docDefinition.pageMargins);\r\n\t\tthis.pdfKitDoc.options.size = [pageSize.width, pageHeight];\r\n\t}\r\n\r\n\tvar patterns = createPatterns(docDefinition.patterns || {}, this.pdfKitDoc);\r\n\r\n\trenderPages(pages, this.fontProvider, this.pdfKitDoc, patterns, options.progressCallback);\r\n\r\n\tif (options.autoPrint) {\r\n\t\tvar printActionRef = this.pdfKitDoc.ref({\r\n\t\t\tType: 'Action',\r\n\t\t\tS: 'Named',\r\n\t\t\tN: 'Print'\r\n\t\t});\r\n\t\tthis.pdfKitDoc._root.data.OpenAction = printActionRef;\r\n\t\tprintActionRef.end();\r\n\t}\r\n\treturn this.pdfKitDoc;\r\n};\r\n\r\nfunction createMetadata(docDefinition) {\r\n\t// PDF standard has these properties reserved: Title, Author, Subject, Keywords,\r\n\t// Creator, Producer, CreationDate, ModDate, Trapped.\r\n\t// To keep the pdfmake api consistent, the info field are defined lowercase.\r\n\t// Custom properties don't contain a space.\r\n\tfunction standardizePropertyKey(key) {\r\n\t\tvar standardProperties = ['Title', 'Author', 'Subject', 'Keywords',\r\n\t\t\t'Creator', 'Producer', 'CreationDate', 'ModDate', 'Trapped'];\r\n\t\tvar standardizedKey = key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tif (standardProperties.indexOf(standardizedKey) !== -1) {\r\n\t\t\treturn standardizedKey;\r\n\t\t}\r\n\r\n\t\treturn key.replace(/\\s+/g, '');\r\n\t}\r\n\r\n\tvar info = {\r\n\t\tProducer: 'pdfmake',\r\n\t\tCreator: 'pdfmake'\r\n\t};\r\n\r\n\tif (docDefinition.info) {\r\n\t\tfor (var key in docDefinition.info) {\r\n\t\t\tvar value = docDefinition.info[key];\r\n\t\t\tif (value) {\r\n\t\t\t\tkey = standardizePropertyKey(key);\r\n\t\t\t\tinfo[key] = value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn info;\r\n}\r\n\r\nfunction calculatePageHeight(pages, margins) {\r\n\tfunction getItemHeight(item) {\r\n\t\tif (isFunction(item.item.getHeight)) {\r\n\t\t\treturn item.item.getHeight();\r\n\t\t} else if (item.item._height) {\r\n\t\t\treturn item.item._height;\r\n\t\t} else if (item.type === 'vector') {\r\n\t\t\tif (typeof item.item.y1 !== 'undefined') {\r\n\t\t\t\treturn item.item.y1 > item.item.y2 ? item.item.y1 : item.item.y2;\r\n\t\t\t} else {\r\n\t\t\t\treturn item.item.h;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// TODO: add support for next item types\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getBottomPosition(item) {\r\n\t\tvar top = item.item.y || 0;\r\n\t\tvar height = getItemHeight(item);\r\n\t\treturn top + height;\r\n\t}\r\n\r\n\tvar fixedMargins = fixPageMargins(margins || 40);\r\n\tvar height = fixedMargins.top;\r\n\r\n\tpages.forEach(function (page) {\r\n\t\tpage.items.forEach(function (item) {\r\n\t\t\tvar bottomPosition = getBottomPosition(item);\r\n\t\t\tif (bottomPosition > height) {\r\n\t\t\t\theight = bottomPosition;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\theight += fixedMargins.bottom;\r\n\r\n\treturn height;\r\n}\r\n\r\nfunction fixPageSize(pageSize, pageOrientation) {\r\n\tfunction isNeedSwapPageSizes(pageOrientation) {\r\n\t\tif (isString(pageOrientation)) {\r\n\t\t\tpageOrientation = pageOrientation.toLowerCase();\r\n\t\t\treturn ((pageOrientation === 'portrait') && (size.width > size.height)) ||\r\n\t\t\t\t((pageOrientation === 'landscape') && (size.width < size.height));\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// if pageSize.height is set to auto, set the height to infinity so there are no page breaks.\r\n\tif (pageSize && pageSize.height === 'auto') {\r\n\t\tpageSize.height = Infinity;\r\n\t}\r\n\r\n\tvar size = pageSize2widthAndHeight(pageSize || 'A4');\r\n\tif (isNeedSwapPageSizes(pageOrientation)) { // swap page sizes\r\n\t\tsize = { width: size.height, height: size.width };\r\n\t}\r\n\tsize.orientation = size.width > size.height ? 'landscape' : 'portrait';\r\n\treturn size;\r\n}\r\n\r\nfunction fixPageMargins(margin) {\r\n\tif (isNumber(margin)) {\r\n\t\tmargin = { left: margin, right: margin, top: margin, bottom: margin };\r\n\t} else if (isArray(margin)) {\r\n\t\tif (margin.length === 2) {\r\n\t\t\tmargin = { left: margin[0], top: margin[1], right: margin[0], bottom: margin[1] };\r\n\t\t} else if (margin.length === 4) {\r\n\t\t\tmargin = { left: margin[0], top: margin[1], right: margin[2], bottom: margin[3] };\r\n\t\t} else {\r\n\t\t\tthrow 'Invalid pageMargins definition';\r\n\t\t}\r\n\t}\r\n\r\n\treturn margin;\r\n}\r\n\r\nfunction registerDefaultTableLayouts(layoutBuilder) {\r\n\tlayoutBuilder.registerTableLayouts({\r\n\t\tnoBorders: {\r\n\t\t\thLineWidth: function (i) {\r\n\t\t\t\treturn 0;\r\n\t\t\t},\r\n\t\t\tvLineWidth: function (i) {\r\n\t\t\t\treturn 0;\r\n\t\t\t},\r\n\t\t\tpaddingLeft: function (i) {\r\n\t\t\t\treturn i && 4 || 0;\r\n\t\t\t},\r\n\t\t\tpaddingRight: function (i, node) {\r\n\t\t\t\treturn (i < node.table.widths.length - 1) ? 4 : 0;\r\n\t\t\t}\r\n\t\t},\r\n\t\theaderLineOnly: {\r\n\t\t\thLineWidth: function (i, node) {\r\n\t\t\t\tif (i === 0 || i === node.table.body.length) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\treturn (i === node.table.headerRows) ? 2 : 0;\r\n\t\t\t},\r\n\t\t\tvLineWidth: function (i) {\r\n\t\t\t\treturn 0;\r\n\t\t\t},\r\n\t\t\tpaddingLeft: function (i) {\r\n\t\t\t\treturn i === 0 ? 0 : 8;\r\n\t\t\t},\r\n\t\t\tpaddingRight: function (i, node) {\r\n\t\t\t\treturn (i === node.table.widths.length - 1) ? 0 : 8;\r\n\t\t\t}\r\n\t\t},\r\n\t\tlightHorizontalLines: {\r\n\t\t\thLineWidth: function (i, node) {\r\n\t\t\t\tif (i === 0 || i === node.table.body.length) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\treturn (i === node.table.headerRows) ? 2 : 1;\r\n\t\t\t},\r\n\t\t\tvLineWidth: function (i) {\r\n\t\t\t\treturn 0;\r\n\t\t\t},\r\n\t\t\thLineColor: function (i) {\r\n\t\t\t\treturn i === 1 ? 'black' : '#aaa';\r\n\t\t\t},\r\n\t\t\tpaddingLeft: function (i) {\r\n\t\t\t\treturn i === 0 ? 0 : 8;\r\n\t\t\t},\r\n\t\t\tpaddingRight: function (i, node) {\r\n\t\t\t\treturn (i === node.table.widths.length - 1) ? 0 : 8;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction pageSize2widthAndHeight(pageSize) {\r\n\tif (isString(pageSize)) {\r\n\t\tvar size = sizes[pageSize.toUpperCase()];\r\n\t\tif (!size) {\r\n\t\t\tthrow 'Page size ' + pageSize + ' not recognized';\r\n\t\t}\r\n\t\treturn { width: size[0], height: size[1] };\r\n\t}\r\n\r\n\treturn pageSize;\r\n}\r\n\r\nfunction updatePageOrientationInOptions(currentPage, pdfKitDoc) {\r\n\tvar previousPageOrientation = pdfKitDoc.options.size[0] > pdfKitDoc.options.size[1] ? 'landscape' : 'portrait';\r\n\r\n\tif (currentPage.pageSize.orientation !== previousPageOrientation) {\r\n\t\tvar width = pdfKitDoc.options.size[0];\r\n\t\tvar height = pdfKitDoc.options.size[1];\r\n\t\tpdfKitDoc.options.size = [height, width];\r\n\t}\r\n}\r\n\r\nfunction renderPages(pages, fontProvider, pdfKitDoc, patterns, progressCallback) {\r\n\tpdfKitDoc._pdfMakePages = pages;\r\n\tpdfKitDoc.addPage();\r\n\r\n\tvar totalItems = 0;\r\n\tif (progressCallback) {\r\n\t\tpages.forEach(function (page) {\r\n\t\t\ttotalItems += page.items.length;\r\n\t\t});\r\n\t}\r\n\r\n\tvar renderedItems = 0;\r\n\tprogressCallback = progressCallback || function () {\r\n\t};\r\n\r\n\tfor (var i = 0; i < pages.length; i++) {\r\n\t\tif (i > 0) {\r\n\t\t\tupdatePageOrientationInOptions(pages[i], pdfKitDoc);\r\n\t\t\tpdfKitDoc.addPage(pdfKitDoc.options);\r\n\t\t}\r\n\r\n\t\tvar page = pages[i];\r\n\t\tfor (var ii = 0, il = page.items.length; ii < il; ii++) {\r\n\t\t\tvar item = page.items[ii];\r\n\t\t\tswitch (item.type) {\r\n\t\t\t\tcase 'vector':\r\n\t\t\t\t\trenderVector(item.item, patterns, pdfKitDoc);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'line':\r\n\t\t\t\t\trenderLine(item.item, item.item.x, item.item.y, patterns, pdfKitDoc);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'image':\r\n\t\t\t\t\trenderImage(item.item, item.item.x, item.item.y, pdfKitDoc);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'svg':\r\n\t\t\t\t\trenderSVG(item.item, item.item.x, item.item.y, pdfKitDoc, fontProvider);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'beginClip':\r\n\t\t\t\t\tbeginClip(item.item, pdfKitDoc);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'endClip':\r\n\t\t\t\t\tendClip(pdfKitDoc);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trenderedItems++;\r\n\t\t\tprogressCallback(renderedItems / totalItems);\r\n\t\t}\r\n\t\tif (page.watermark) {\r\n\t\t\trenderWatermark(page, pdfKitDoc);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Shift the \"y\" height of the text baseline up or down (superscript or subscript,\r\n * respectively). The exact shift can / should be changed according to standard\r\n * conventions.\r\n *\r\n * @param {number} y\r\n * @param {any} inline\r\n */\r\nfunction offsetText(y, inline) {\r\n\tvar newY = y;\r\n\tif (inline.sup) {\r\n\t\tnewY -= inline.fontSize * 0.75;\r\n\t}\r\n\tif (inline.sub) {\r\n\t\tnewY += inline.fontSize * 0.35;\r\n\t}\r\n\treturn newY;\r\n}\r\n\r\nfunction renderLine(line, x, y, patterns, pdfKitDoc) {\r\n\tfunction preparePageNodeRefLine(_pageNodeRef, inline) {\r\n\t\tvar newWidth;\r\n\t\tvar diffWidth;\r\n\t\tvar textTools = new TextTools(null);\r\n\r\n\t\tif (isUndefined(_pageNodeRef.positions)) {\r\n\t\t\tthrow 'Page reference id not found';\r\n\t\t}\r\n\r\n\t\tvar pageNumber = _pageNodeRef.positions[0].pageNumber.toString();\r\n\r\n\t\tinline.text = pageNumber;\r\n\t\tnewWidth = textTools.widthOfString(inline.text, inline.font, inline.fontSize, inline.characterSpacing, inline.fontFeatures);\r\n\t\tdiffWidth = inline.width - newWidth;\r\n\t\tinline.width = newWidth;\r\n\r\n\t\tswitch (inline.alignment) {\r\n\t\t\tcase 'right':\r\n\t\t\t\tinline.x += diffWidth;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'center':\r\n\t\t\t\tinline.x += diffWidth / 2;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (line._pageNodeRef) {\r\n\t\tpreparePageNodeRefLine(line._pageNodeRef, line.inlines[0]);\r\n\t}\r\n\r\n\tx = x || 0;\r\n\ty = y || 0;\r\n\r\n\tvar lineHeight = line.getHeight();\r\n\tvar ascenderHeight = line.getAscenderHeight();\r\n\tvar descent = lineHeight - ascenderHeight;\r\n\r\n\ttextDecorator.drawBackground(line, x, y, patterns, pdfKitDoc);\r\n\r\n\t//TODO: line.optimizeInlines();\r\n\tfor (var i = 0, l = line.inlines.length; i < l; i++) {\r\n\t\tvar inline = line.inlines[i];\r\n\t\tvar shiftToBaseline = lineHeight - ((inline.font.ascender / 1000) * inline.fontSize) - descent;\r\n\r\n\t\tif (inline._pageNodeRef) {\r\n\t\t\tpreparePageNodeRefLine(inline._pageNodeRef, inline);\r\n\t\t}\r\n\r\n\t\tvar options = {\r\n\t\t\tlineBreak: false,\r\n\t\t\ttextWidth: inline.width,\r\n\t\t\tcharacterSpacing: inline.characterSpacing,\r\n\t\t\twordCount: 1,\r\n\t\t\tlink: inline.link\r\n\t\t};\r\n\r\n\t\tif (inline.linkToDestination) {\r\n\t\t\toptions.goTo = inline.linkToDestination;\r\n\t\t}\r\n\r\n\t\tif (line.id && i === 0) {\r\n\t\t\toptions.destination = line.id;\r\n\t\t}\r\n\r\n\t\tif (inline.fontFeatures) {\r\n\t\t\toptions.features = inline.fontFeatures;\r\n\t\t}\r\n\r\n\t\tvar opacity = isNumber(inline.opacity) ? inline.opacity : 1;\r\n\t\tpdfKitDoc.opacity(opacity);\r\n\t\tpdfKitDoc.fill(inline.color || 'black');\r\n\r\n\t\tpdfKitDoc._font = inline.font;\r\n\t\tpdfKitDoc.fontSize(inline.fontSize);\r\n\r\n\t\tvar shiftedY = offsetText(y + shiftToBaseline, inline);\r\n\t\tpdfKitDoc.text(inline.text, x + inline.x, shiftedY, options);\r\n\r\n\t\tif (inline.linkToPage) {\r\n\t\t\tvar _ref = pdfKitDoc.ref({ Type: 'Action', S: 'GoTo', D: [inline.linkToPage, 0, 0] }).end();\r\n\t\t\tpdfKitDoc.annotate(x + inline.x, shiftedY, inline.width, inline.height, {\r\n\t\t\t\tSubtype: 'Link',\r\n\t\t\t\tDest: [inline.linkToPage - 1, 'XYZ', null, null, null]\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\t// Decorations won't draw correctly for superscript\r\n\ttextDecorator.drawDecorations(line, x, y, pdfKitDoc);\r\n}\r\n\r\nfunction renderWatermark(page, pdfKitDoc) {\r\n\tvar watermark = page.watermark;\r\n\r\n\tpdfKitDoc.fill(watermark.color);\r\n\tpdfKitDoc.opacity(watermark.opacity);\r\n\r\n\tpdfKitDoc.save();\r\n\r\n\tpdfKitDoc.rotate(watermark.angle, { origin: [pdfKitDoc.page.width / 2, pdfKitDoc.page.height / 2] });\r\n\r\n\tvar x = pdfKitDoc.page.width / 2 - watermark._size.size.width / 2;\r\n\tvar y = pdfKitDoc.page.height / 2 - watermark._size.size.height / 2;\r\n\r\n\tpdfKitDoc._font = watermark.font;\r\n\tpdfKitDoc.fontSize(watermark.fontSize);\r\n\tpdfKitDoc.text(watermark.text, x, y, { lineBreak: false });\r\n\r\n\tpdfKitDoc.restore();\r\n}\r\n\r\nfunction renderVector(vector, patterns, pdfKitDoc) {\r\n\t//TODO: pdf optimization (there's no need to write all properties everytime)\r\n\tpdfKitDoc.lineWidth(vector.lineWidth || 1);\r\n\tif (vector.dash) {\r\n\t\tpdfKitDoc.dash(vector.dash.length, { space: vector.dash.space || vector.dash.length, phase: vector.dash.phase || 0 });\r\n\t} else {\r\n\t\tpdfKitDoc.undash();\r\n\t}\r\n\tpdfKitDoc.lineJoin(vector.lineJoin || 'miter');\r\n\tpdfKitDoc.lineCap(vector.lineCap || 'butt');\r\n\r\n\t//TODO: clipping\r\n\r\n\tvar gradient = null;\r\n\r\n\tswitch (vector.type) {\r\n\t\tcase 'ellipse':\r\n\t\t\tpdfKitDoc.ellipse(vector.x, vector.y, vector.r1, vector.r2);\r\n\r\n\t\t\tif (vector.linearGradient) {\r\n\t\t\t\tgradient = pdfKitDoc.linearGradient(vector.x - vector.r1, vector.y, vector.x + vector.r1, vector.y);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (vector.r) {\r\n\t\t\t\tpdfKitDoc.roundedRect(vector.x, vector.y, vector.w, vector.h, vector.r);\r\n\t\t\t} else {\r\n\t\t\t\tpdfKitDoc.rect(vector.x, vector.y, vector.w, vector.h);\r\n\t\t\t}\r\n\r\n\t\t\tif (vector.linearGradient) {\r\n\t\t\t\tgradient = pdfKitDoc.linearGradient(vector.x, vector.y, vector.x + vector.w, vector.y);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\tpdfKitDoc.moveTo(vector.x1, vector.y1);\r\n\t\t\tpdfKitDoc.lineTo(vector.x2, vector.y2);\r\n\t\t\tbreak;\r\n\t\tcase 'polyline':\r\n\t\t\tif (vector.points.length === 0) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tpdfKitDoc.moveTo(vector.points[0].x, vector.points[0].y);\r\n\t\t\tfor (var i = 1, l = vector.points.length; i < l; i++) {\r\n\t\t\t\tpdfKitDoc.lineTo(vector.points[i].x, vector.points[i].y);\r\n\t\t\t}\r\n\r\n\t\t\tif (vector.points.length > 1) {\r\n\t\t\t\tvar p1 = vector.points[0];\r\n\t\t\t\tvar pn = vector.points[vector.points.length - 1];\r\n\r\n\t\t\t\tif (vector.closePath || p1.x === pn.x && p1.y === pn.y) {\r\n\t\t\t\t\tpdfKitDoc.closePath();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'path':\r\n\t\t\tpdfKitDoc.path(vector.d);\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (vector.linearGradient && gradient) {\r\n\t\tvar step = 1 / (vector.linearGradient.length - 1);\r\n\r\n\t\tfor (var i = 0; i < vector.linearGradient.length; i++) {\r\n\t\t\tgradient.stop(i * step, vector.linearGradient[i]);\r\n\t\t}\r\n\r\n\t\tvector.color = gradient;\r\n\t}\r\n\r\n\tif (isPattern(vector.color)) {\r\n\t\tvector.color = getPattern(vector.color, patterns);\r\n\t}\r\n\r\n\tvar fillOpacity = isNumber(vector.fillOpacity) ? vector.fillOpacity : 1;\r\n\tvar strokeOpacity = isNumber(vector.strokeOpacity) ? vector.strokeOpacity : 1;\r\n\r\n\tif (vector.color && vector.lineColor) {\r\n\t\tpdfKitDoc.fillColor(vector.color, fillOpacity);\r\n\t\tpdfKitDoc.strokeColor(vector.lineColor, strokeOpacity);\r\n\t\tpdfKitDoc.fillAndStroke();\r\n\t} else if (vector.color) {\r\n\t\tpdfKitDoc.fillColor(vector.color, fillOpacity);\r\n\t\tpdfKitDoc.fill();\r\n\t} else {\r\n\t\tpdfKitDoc.strokeColor(vector.lineColor || 'black', strokeOpacity);\r\n\t\tpdfKitDoc.stroke();\r\n\t}\r\n}\r\n\r\nfunction renderImage(image, x, y, pdfKitDoc) {\r\n\tvar opacity = isNumber(image.opacity) ? image.opacity : 1;\r\n\tpdfKitDoc.opacity(opacity);\r\n\tif (image.cover) {\r\n\t\tvar align = image.cover.align || 'center';\r\n\t\tvar valign = image.cover.valign || 'center';\r\n\t\tvar width = image.cover.width ? image.cover.width : image.width;\r\n\t\tvar height = image.cover.height ? image.cover.height : image.height;\r\n\t\tpdfKitDoc.save();\r\n\t\tpdfKitDoc.rect(image.x, image.y, width, height).clip();\r\n\t\tpdfKitDoc.image(image.image, image.x, image.y, { cover: [width, height], align: align, valign: valign });\r\n\t\tpdfKitDoc.restore();\r\n\t} else {\r\n\t\tpdfKitDoc.image(image.image, image.x, image.y, { width: image._width, height: image._height });\r\n\t}\r\n\tif (image.link) {\r\n\t\tpdfKitDoc.link(image.x, image.y, image._width, image._height, image.link);\r\n\t}\r\n\tif (image.linkToPage) {\r\n\t\tpdfKitDoc.ref({ Type: 'Action', S: 'GoTo', D: [image.linkToPage, 0, 0] }).end();\r\n\t\tpdfKitDoc.annotate(image.x, image.y, image._width, image._height, { Subtype: 'Link', Dest: [image.linkToPage - 1, 'XYZ', null, null, null] });\r\n\t}\r\n\tif (image.linkToDestination) {\r\n\t\tpdfKitDoc.goTo(image.x, image.y, image._width, image._height, image.linkToDestination);\r\n\t}\r\n}\r\n\r\nfunction renderSVG(svg, x, y, pdfKitDoc, fontProvider) {\r\n\tvar options = Object.assign({ width: svg._width, height: svg._height, assumePt: true }, svg.options);\r\n\toptions.fontCallback = function (family, bold, italic) {\r\n\t\tvar fontsFamily = family.split(',').map(function (f) { return f.trim().replace(/('|\")/g, ''); });\r\n\t\tvar font = findFont(fontProvider.fonts, fontsFamily, svg.font || 'Roboto');\r\n\r\n\t\tvar fontFile = fontProvider.getFontFile(font, bold, italic);\r\n\t\tif (fontFile === null) {\r\n\t\t\tvar type = fontProvider.getFontType(bold, italic);\r\n\t\t\tthrow new Error('Font \\'' + font + '\\' in style \\'' + type + '\\' is not defined in the font section of the document definition.');\r\n\t\t}\r\n\r\n\t\treturn fontFile;\r\n\t};\r\n\r\n\tSVGtoPDF(pdfKitDoc, svg.svg, svg.x, svg.y, options);\r\n}\r\n\r\nfunction beginClip(rect, pdfKitDoc) {\r\n\tpdfKitDoc.save();\r\n\tpdfKitDoc.addContent('' + rect.x + ' ' + rect.y + ' ' + rect.width + ' ' + rect.height + ' re');\r\n\tpdfKitDoc.clip();\r\n}\r\n\r\nfunction endClip(pdfKitDoc) {\r\n\tpdfKitDoc.restore();\r\n}\r\n\r\nfunction createPatterns(patternDefinitions, pdfKitDoc) {\r\n\tvar patterns = {};\r\n\tObject.keys(patternDefinitions).forEach(function (p) {\r\n\t\tvar pattern = patternDefinitions[p];\r\n\t\tpatterns[p] = pdfKitDoc.pattern(pattern.boundingBox, pattern.xStep, pattern.yStep, pattern.pattern, pattern.colored);\r\n\t});\r\n\treturn patterns;\r\n}\r\n\r\nmodule.exports = PdfPrinter;\r\n\n\n/***/ }),\n\n/***/ 72155:\n/***/ (function(module) {\n\n\"use strict\";\n/*eslint no-unused-vars: [\"error\", {\"args\": \"none\"}]*/\r\n/*eslint no-redeclare: \"off\"*/\r\n\r\n\r\n/* qr.js -- QR code generator in Javascript (revision 2011-01-19)\r\n * Written by Kang Seonghoon <public+qrjs@mearie.org>.\r\n *\r\n * This source code is in the public domain; if your jurisdiction does not\r\n * recognize the public domain the terms of Creative Commons CC0 license\r\n * apply. In the other words, you can always do what you want.\r\n */\r\n\r\n\r\n// per-version information (cf. JIS X 0510:2004 pp. 30--36, 71)\r\n//\r\n// [0]: the degree of generator polynomial by ECC levels\r\n// [1]: # of code blocks by ECC levels\r\n// [2]: left-top positions of alignment patterns\r\n//\r\n// the number in this table (in particular, [0]) does not exactly match with\r\n// the numbers in the specficiation. see augumenteccs below for the reason.\r\nvar VERSIONS = [\r\n\tnull,\r\n\t[[10, 7, 17, 13], [1, 1, 1, 1], []],\r\n\t[[16, 10, 28, 22], [1, 1, 1, 1], [4, 16]],\r\n\t[[26, 15, 22, 18], [1, 1, 2, 2], [4, 20]],\r\n\t[[18, 20, 16, 26], [2, 1, 4, 2], [4, 24]],\r\n\t[[24, 26, 22, 18], [2, 1, 4, 4], [4, 28]],\r\n\t[[16, 18, 28, 24], [4, 2, 4, 4], [4, 32]],\r\n\t[[18, 20, 26, 18], [4, 2, 5, 6], [4, 20, 36]],\r\n\t[[22, 24, 26, 22], [4, 2, 6, 6], [4, 22, 40]],\r\n\t[[22, 30, 24, 20], [5, 2, 8, 8], [4, 24, 44]],\r\n\t[[26, 18, 28, 24], [5, 4, 8, 8], [4, 26, 48]],\r\n\t[[30, 20, 24, 28], [5, 4, 11, 8], [4, 28, 52]],\r\n\t[[22, 24, 28, 26], [8, 4, 11, 10], [4, 30, 56]],\r\n\t[[22, 26, 22, 24], [9, 4, 16, 12], [4, 32, 60]],\r\n\t[[24, 30, 24, 20], [9, 4, 16, 16], [4, 24, 44, 64]],\r\n\t[[24, 22, 24, 30], [10, 6, 18, 12], [4, 24, 46, 68]],\r\n\t[[28, 24, 30, 24], [10, 6, 16, 17], [4, 24, 48, 72]],\r\n\t[[28, 28, 28, 28], [11, 6, 19, 16], [4, 28, 52, 76]],\r\n\t[[26, 30, 28, 28], [13, 6, 21, 18], [4, 28, 54, 80]],\r\n\t[[26, 28, 26, 26], [14, 7, 25, 21], [4, 28, 56, 84]],\r\n\t[[26, 28, 28, 30], [16, 8, 25, 20], [4, 32, 60, 88]],\r\n\t[[26, 28, 30, 28], [17, 8, 25, 23], [4, 26, 48, 70, 92]],\r\n\t[[28, 28, 24, 30], [17, 9, 34, 23], [4, 24, 48, 72, 96]],\r\n\t[[28, 30, 30, 30], [18, 9, 30, 25], [4, 28, 52, 76, 100]],\r\n\t[[28, 30, 30, 30], [20, 10, 32, 27], [4, 26, 52, 78, 104]],\r\n\t[[28, 26, 30, 30], [21, 12, 35, 29], [4, 30, 56, 82, 108]],\r\n\t[[28, 28, 30, 28], [23, 12, 37, 34], [4, 28, 56, 84, 112]],\r\n\t[[28, 30, 30, 30], [25, 12, 40, 34], [4, 32, 60, 88, 116]],\r\n\t[[28, 30, 30, 30], [26, 13, 42, 35], [4, 24, 48, 72, 96, 120]],\r\n\t[[28, 30, 30, 30], [28, 14, 45, 38], [4, 28, 52, 76, 100, 124]],\r\n\t[[28, 30, 30, 30], [29, 15, 48, 40], [4, 24, 50, 76, 102, 128]],\r\n\t[[28, 30, 30, 30], [31, 16, 51, 43], [4, 28, 54, 80, 106, 132]],\r\n\t[[28, 30, 30, 30], [33, 17, 54, 45], [4, 32, 58, 84, 110, 136]],\r\n\t[[28, 30, 30, 30], [35, 18, 57, 48], [4, 28, 56, 84, 112, 140]],\r\n\t[[28, 30, 30, 30], [37, 19, 60, 51], [4, 32, 60, 88, 116, 144]],\r\n\t[[28, 30, 30, 30], [38, 19, 63, 53], [4, 28, 52, 76, 100, 124, 148]],\r\n\t[[28, 30, 30, 30], [40, 20, 66, 56], [4, 22, 48, 74, 100, 126, 152]],\r\n\t[[28, 30, 30, 30], [43, 21, 70, 59], [4, 26, 52, 78, 104, 130, 156]],\r\n\t[[28, 30, 30, 30], [45, 22, 74, 62], [4, 30, 56, 82, 108, 134, 160]],\r\n\t[[28, 30, 30, 30], [47, 24, 77, 65], [4, 24, 52, 80, 108, 136, 164]],\r\n\t[[28, 30, 30, 30], [49, 25, 81, 68], [4, 28, 56, 84, 112, 140, 168]]];\r\n\r\n// mode constants (cf. Table 2 in JIS X 0510:2004 p. 16)\r\nvar MODE_TERMINATOR = 0;\r\nvar MODE_NUMERIC = 1, MODE_ALPHANUMERIC = 2, MODE_OCTET = 4, MODE_KANJI = 8;\r\n\r\n// validation regexps\r\nvar NUMERIC_REGEXP = /^\\d*$/;\r\nvar ALPHANUMERIC_REGEXP = /^[A-Za-z0-9 $%*+\\-./:]*$/;\r\nvar ALPHANUMERIC_OUT_REGEXP = /^[A-Z0-9 $%*+\\-./:]*$/;\r\n\r\n// ECC levels (cf. Table 22 in JIS X 0510:2004 p. 45)\r\nvar ECCLEVEL_L = 1, ECCLEVEL_M = 0, ECCLEVEL_Q = 3, ECCLEVEL_H = 2;\r\n\r\n// GF(2^8)-to-integer mapping with a reducing polynomial x^8+x^4+x^3+x^2+1\r\n// invariant: GF256_MAP[GF256_INVMAP[i]] == i for all i in [1,256)\r\nvar GF256_MAP = [], GF256_INVMAP = [-1];\r\nfor (var i = 0, v = 1; i < 255; ++i) {\r\n\tGF256_MAP.push(v);\r\n\tGF256_INVMAP[v] = i;\r\n\tv = (v * 2) ^ (v >= 128 ? 0x11d : 0);\r\n}\r\n\r\n// generator polynomials up to degree 30\r\n// (should match with polynomials in JIS X 0510:2004 Appendix A)\r\n//\r\n// generator polynomial of degree K is product of (x-\\alpha^0), (x-\\alpha^1),\r\n// ..., (x-\\alpha^(K-1)). by convention, we omit the K-th coefficient (always 1)\r\n// from the result; also other coefficients are written in terms of the exponent\r\n// to \\alpha to avoid the redundant calculation. (see also calculateecc below.)\r\nvar GF256_GENPOLY = [[]];\r\nfor (var i = 0; i < 30; ++i) {\r\n\tvar prevpoly = GF256_GENPOLY[i], poly = [];\r\n\tfor (var j = 0; j <= i; ++j) {\r\n\t\tvar a = (j < i ? GF256_MAP[prevpoly[j]] : 0);\r\n\t\tvar b = GF256_MAP[(i + (prevpoly[j - 1] || 0)) % 255];\r\n\t\tpoly.push(GF256_INVMAP[a ^ b]);\r\n\t}\r\n\tGF256_GENPOLY.push(poly);\r\n}\r\n\r\n// alphanumeric character mapping (cf. Table 5 in JIS X 0510:2004 p. 19)\r\nvar ALPHANUMERIC_MAP = {};\r\nfor (var i = 0; i < 45; ++i) {\r\n\tALPHANUMERIC_MAP['0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'.charAt(i)] = i;\r\n}\r\n\r\n// mask functions in terms of row # and column #\r\n// (cf. Table 20 in JIS X 0510:2004 p. 42)\r\n/*jshint unused: false */\r\nvar MASKFUNCS = [\r\n\tfunction (i, j) {\r\n\t\treturn (i + j) % 2 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn i % 2 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn j % 3 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn (i + j) % 3 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn (((i / 2) | 0) + ((j / 3) | 0)) % 2 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn (i * j) % 2 + (i * j) % 3 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn ((i * j) % 2 + (i * j) % 3) % 2 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn ((i + j) % 2 + (i * j) % 3) % 2 === 0;\r\n\t}];\r\n\r\n// returns true when the version information has to be embeded.\r\nvar needsverinfo = function (ver) {\r\n\treturn ver > 6;\r\n};\r\n\r\n// returns the size of entire QR code for given version.\r\nvar getsizebyver = function (ver) {\r\n\treturn 4 * ver + 17;\r\n};\r\n\r\n// returns the number of bits available for code words in this version.\r\nvar nfullbits = function (ver) {\r\n\t/*\r\n\t * |<--------------- n --------------->|\r\n\t * | |<----- n-17 ---->| |\r\n\t * +-------+ ///+-------+ ----\r\n\t * | | ///| | ^\r\n\t * | 9x9 | @@@@@ ///| 9x8 | |\r\n\t * | | # # # @5x5@ # # # | | |\r\n\t * +-------+ @@@@@ +-------+ |\r\n\t * # ---|\r\n\t * ^ |\r\n\t * # |\r\n\t * @@@@@ @@@@@ @@@@@ | n\r\n\t * @5x5@ @5x5@ @5x5@ n-17\r\n\t * @@@@@ @@@@@ @@@@@ | |\r\n\t * # | |\r\n\t * ////// v |\r\n\t * //////# ---|\r\n\t * +-------+ @@@@@ @@@@@ |\r\n\t * | | @5x5@ @5x5@ |\r\n\t * | 8x9 | @@@@@ @@@@@ |\r\n\t * | | v\r\n\t * +-------+ ----\r\n\t *\r\n\t * when the entire code has n^2 modules and there are m^2-3 alignment\r\n\t * patterns, we have:\r\n\t * - 225 (= 9x9 + 9x8 + 8x9) modules for finder patterns and\r\n\t * format information;\r\n\t * - 2n-34 (= 2(n-17)) modules for timing patterns;\r\n\t * - 36 (= 3x6 + 6x3) modules for version information, if any;\r\n\t * - 25m^2-75 (= (m^2-3)(5x5)) modules for alignment patterns\r\n\t * if any, but 10m-20 (= 2(m-2)x5) of them overlaps with\r\n\t * timing patterns.\r\n\t */\r\n\tvar v = VERSIONS[ver];\r\n\tvar nbits = 16 * ver * ver + 128 * ver + 64; // finder, timing and format info.\r\n\tif (needsverinfo(ver))\r\n\t\tnbits -= 36; // version information\r\n\tif (v[2].length) { // alignment patterns\r\n\t\tnbits -= 25 * v[2].length * v[2].length - 10 * v[2].length - 55;\r\n\t}\r\n\treturn nbits;\r\n};\r\n\r\n// returns the number of bits available for data portions (i.e. excludes ECC\r\n// bits but includes mode and length bits) in this version and ECC level.\r\nvar ndatabits = function (ver, ecclevel) {\r\n\tvar nbits = nfullbits(ver) & ~7; // no sub-octet code words\r\n\tvar v = VERSIONS[ver];\r\n\tnbits -= 8 * v[0][ecclevel] * v[1][ecclevel]; // ecc bits\r\n\treturn nbits;\r\n};\r\n\r\n// returns the number of bits required for the length of data.\r\n// (cf. Table 3 in JIS X 0510:2004 p. 16)\r\nvar ndatalenbits = function (ver, mode) {\r\n\tswitch (mode) {\r\n\t\tcase MODE_NUMERIC:\r\n\t\t\treturn (ver < 10 ? 10 : ver < 27 ? 12 : 14);\r\n\t\tcase MODE_ALPHANUMERIC:\r\n\t\t\treturn (ver < 10 ? 9 : ver < 27 ? 11 : 13);\r\n\t\tcase MODE_OCTET:\r\n\t\t\treturn (ver < 10 ? 8 : 16);\r\n\t\tcase MODE_KANJI:\r\n\t\t\treturn (ver < 10 ? 8 : ver < 27 ? 10 : 12);\r\n\t}\r\n};\r\n\r\n// returns the maximum length of data possible in given configuration.\r\nvar getmaxdatalen = function (ver, mode, ecclevel) {\r\n\tvar nbits = ndatabits(ver, ecclevel) - 4 - ndatalenbits(ver, mode); // 4 for mode bits\r\n\tswitch (mode) {\r\n\t\tcase MODE_NUMERIC:\r\n\t\t\treturn ((nbits / 10) | 0) * 3 + (nbits % 10 < 4 ? 0 : nbits % 10 < 7 ? 1 : 2);\r\n\t\tcase MODE_ALPHANUMERIC:\r\n\t\t\treturn ((nbits / 11) | 0) * 2 + (nbits % 11 < 6 ? 0 : 1);\r\n\t\tcase MODE_OCTET:\r\n\t\t\treturn (nbits / 8) | 0;\r\n\t\tcase MODE_KANJI:\r\n\t\t\treturn (nbits / 13) | 0;\r\n\t}\r\n};\r\n\r\n// checks if the given data can be encoded in given mode, and returns\r\n// the converted data for the further processing if possible. otherwise\r\n// returns null.\r\n//\r\n// this function does not check the length of data; it is a duty of\r\n// encode function below (as it depends on the version and ECC level too).\r\nvar validatedata = function (mode, data) {\r\n\tswitch (mode) {\r\n\t\tcase MODE_NUMERIC:\r\n\t\t\tif (!data.match(NUMERIC_REGEXP))\r\n\t\t\t\treturn null;\r\n\t\t\treturn data;\r\n\r\n\t\tcase MODE_ALPHANUMERIC:\r\n\t\t\tif (!data.match(ALPHANUMERIC_REGEXP))\r\n\t\t\t\treturn null;\r\n\t\t\treturn data.toUpperCase();\r\n\r\n\t\tcase MODE_OCTET:\r\n\t\t\tif (typeof data === 'string') { // encode as utf-8 string\r\n\t\t\t\tvar newdata = [];\r\n\t\t\t\tfor (var i = 0; i < data.length; ++i) {\r\n\t\t\t\t\tvar ch = data.charCodeAt(i);\r\n\t\t\t\t\tif (ch < 0x80) {\r\n\t\t\t\t\t\tnewdata.push(ch);\r\n\t\t\t\t\t} else if (ch < 0x800) {\r\n\t\t\t\t\t\tnewdata.push(0xc0 | (ch >> 6),\r\n\t\t\t\t\t\t\t0x80 | (ch & 0x3f));\r\n\t\t\t\t\t} else if (ch < 0x10000) {\r\n\t\t\t\t\t\tnewdata.push(0xe0 | (ch >> 12),\r\n\t\t\t\t\t\t\t0x80 | ((ch >> 6) & 0x3f),\r\n\t\t\t\t\t\t\t0x80 | (ch & 0x3f));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnewdata.push(0xf0 | (ch >> 18),\r\n\t\t\t\t\t\t\t0x80 | ((ch >> 12) & 0x3f),\r\n\t\t\t\t\t\t\t0x80 | ((ch >> 6) & 0x3f),\r\n\t\t\t\t\t\t\t0x80 | (ch & 0x3f));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn newdata;\r\n\t\t\t} else {\r\n\t\t\t\treturn data;\r\n\t\t\t}\r\n\t}\r\n};\r\n\r\n// returns the code words (sans ECC bits) for given data and configurations.\r\n// requires data to be preprocessed by validatedata. no length check is\r\n// performed, and everything has to be checked before calling this function.\r\nvar encode = function (ver, mode, data, maxbuflen) {\r\n\tvar buf = [];\r\n\tvar bits = 0, remaining = 8;\r\n\tvar datalen = data.length;\r\n\r\n\t// this function is intentionally no-op when n=0.\r\n\tvar pack = function (x, n) {\r\n\t\tif (n >= remaining) {\r\n\t\t\tbuf.push(bits | (x >> (n -= remaining)));\r\n\t\t\twhile (n >= 8)\r\n\t\t\t\tbuf.push((x >> (n -= 8)) & 255);\r\n\t\t\tbits = 0;\r\n\t\t\tremaining = 8;\r\n\t\t}\r\n\t\tif (n > 0)\r\n\t\t\tbits |= (x & ((1 << n) - 1)) << (remaining -= n);\r\n\t};\r\n\r\n\tvar nlenbits = ndatalenbits(ver, mode);\r\n\tpack(mode, 4);\r\n\tpack(datalen, nlenbits);\r\n\r\n\tswitch (mode) {\r\n\t\tcase MODE_NUMERIC:\r\n\t\t\tfor (var i = 2; i < datalen; i += 3) {\r\n\t\t\t\tpack(parseInt(data.substring(i - 2, i + 1), 10), 10);\r\n\t\t\t}\r\n\t\t\tpack(parseInt(data.substring(i - 2), 10), [0, 4, 7][datalen % 3]);\r\n\t\t\tbreak;\r\n\r\n\t\tcase MODE_ALPHANUMERIC:\r\n\t\t\tfor (var i = 1; i < datalen; i += 2) {\r\n\t\t\t\tpack(ALPHANUMERIC_MAP[data.charAt(i - 1)] * 45 +\r\n\t\t\t\t\tALPHANUMERIC_MAP[data.charAt(i)], 11);\r\n\t\t\t}\r\n\t\t\tif (datalen % 2 == 1) {\r\n\t\t\t\tpack(ALPHANUMERIC_MAP[data.charAt(i - 1)], 6);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase MODE_OCTET:\r\n\t\t\tfor (var i = 0; i < datalen; ++i) {\r\n\t\t\t\tpack(data[i], 8);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\t// final bits. it is possible that adding terminator causes the buffer\r\n\t// to overflow, but then the buffer truncated to the maximum size will\r\n\t// be valid as the truncated terminator mode bits and padding is\r\n\t// identical in appearance (cf. JIS X 0510:2004 sec 8.4.8).\r\n\tpack(MODE_TERMINATOR, 4);\r\n\tif (remaining < 8)\r\n\t\tbuf.push(bits);\r\n\r\n\t// the padding to fill up the remaining space. we should not add any\r\n\t// words when the overflow already occurred.\r\n\twhile (buf.length + 1 < maxbuflen)\r\n\t\tbuf.push(0xec, 0x11);\r\n\tif (buf.length < maxbuflen)\r\n\t\tbuf.push(0xec);\r\n\treturn buf;\r\n};\r\n\r\n// calculates ECC code words for given code words and generator polynomial.\r\n//\r\n// this is quite similar to CRC calculation as both Reed-Solomon and CRC use\r\n// the certain kind of cyclic codes, which is effectively the division of\r\n// zero-augumented polynomial by the generator polynomial. the only difference\r\n// is that Reed-Solomon uses GF(2^8), instead of CRC's GF(2), and Reed-Solomon\r\n// uses the different generator polynomial than CRC's.\r\nvar calculateecc = function (poly, genpoly) {\r\n\tvar modulus = poly.slice(0);\r\n\tvar polylen = poly.length, genpolylen = genpoly.length;\r\n\tfor (var i = 0; i < genpolylen; ++i)\r\n\t\tmodulus.push(0);\r\n\tfor (var i = 0; i < polylen; ) {\r\n\t\tvar quotient = GF256_INVMAP[modulus[i++]];\r\n\t\tif (quotient >= 0) {\r\n\t\t\tfor (var j = 0; j < genpolylen; ++j) {\r\n\t\t\t\tmodulus[i + j] ^= GF256_MAP[(quotient + genpoly[j]) % 255];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn modulus.slice(polylen);\r\n};\r\n\r\n// auguments ECC code words to given code words. the resulting words are\r\n// ready to be encoded in the matrix.\r\n//\r\n// the much of actual augumenting procedure follows JIS X 0510:2004 sec 8.7.\r\n// the code is simplified using the fact that the size of each code & ECC\r\n// blocks is almost same; for example, when we have 4 blocks and 46 data words\r\n// the number of code words in those blocks are 11, 11, 12, 12 respectively.\r\nvar augumenteccs = function (poly, nblocks, genpoly) {\r\n\tvar subsizes = [];\r\n\tvar subsize = (poly.length / nblocks) | 0, subsize0 = 0;\r\n\tvar pivot = nblocks - poly.length % nblocks;\r\n\tfor (var i = 0; i < pivot; ++i) {\r\n\t\tsubsizes.push(subsize0);\r\n\t\tsubsize0 += subsize;\r\n\t}\r\n\tfor (var i = pivot; i < nblocks; ++i) {\r\n\t\tsubsizes.push(subsize0);\r\n\t\tsubsize0 += subsize + 1;\r\n\t}\r\n\tsubsizes.push(subsize0);\r\n\r\n\tvar eccs = [];\r\n\tfor (var i = 0; i < nblocks; ++i) {\r\n\t\teccs.push(calculateecc(poly.slice(subsizes[i], subsizes[i + 1]), genpoly));\r\n\t}\r\n\r\n\tvar result = [];\r\n\tvar nitemsperblock = (poly.length / nblocks) | 0;\r\n\tfor (var i = 0; i < nitemsperblock; ++i) {\r\n\t\tfor (var j = 0; j < nblocks; ++j) {\r\n\t\t\tresult.push(poly[subsizes[j] + i]);\r\n\t\t}\r\n\t}\r\n\tfor (var j = pivot; j < nblocks; ++j) {\r\n\t\tresult.push(poly[subsizes[j + 1] - 1]);\r\n\t}\r\n\tfor (var i = 0; i < genpoly.length; ++i) {\r\n\t\tfor (var j = 0; j < nblocks; ++j) {\r\n\t\t\tresult.push(eccs[j][i]);\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\n// auguments BCH(p+q,q) code to the polynomial over GF(2), given the proper\r\n// genpoly. the both input and output are in binary numbers, and unlike\r\n// calculateecc genpoly should include the 1 bit for the highest degree.\r\n//\r\n// actual polynomials used for this procedure are as follows:\r\n// - p=10, q=5, genpoly=x^10+x^8+x^5+x^4+x^2+x+1 (JIS X 0510:2004 Appendix C)\r\n// - p=18, q=6, genpoly=x^12+x^11+x^10+x^9+x^8+x^5+x^2+1 (ibid. Appendix D)\r\nvar augumentbch = function (poly, p, genpoly, q) {\r\n\tvar modulus = poly << q;\r\n\tfor (var i = p - 1; i >= 0; --i) {\r\n\t\tif ((modulus >> (q + i)) & 1)\r\n\t\t\tmodulus ^= genpoly << i;\r\n\t}\r\n\treturn (poly << q) | modulus;\r\n};\r\n\r\n// creates the base matrix for given version. it returns two matrices, one of\r\n// them is the actual one and the another represents the \"reserved\" portion\r\n// (e.g. finder and timing patterns) of the matrix.\r\n//\r\n// some entries in the matrix may be undefined, rather than 0 or 1. this is\r\n// intentional (no initialization needed!), and putdata below will fill\r\n// the remaining ones.\r\nvar makebasematrix = function (ver) {\r\n\tvar v = VERSIONS[ver], n = getsizebyver(ver);\r\n\tvar matrix = [], reserved = [];\r\n\tfor (var i = 0; i < n; ++i) {\r\n\t\tmatrix.push([]);\r\n\t\treserved.push([]);\r\n\t}\r\n\r\n\tvar blit = function (y, x, h, w, bits) {\r\n\t\tfor (var i = 0; i < h; ++i) {\r\n\t\t\tfor (var j = 0; j < w; ++j) {\r\n\t\t\t\tmatrix[y + i][x + j] = (bits[i] >> j) & 1;\r\n\t\t\t\treserved[y + i][x + j] = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// finder patterns and a part of timing patterns\r\n\t// will also mark the format information area (not yet written) as reserved.\r\n\tblit(0, 0, 9, 9, [0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x17f, 0x00, 0x40]);\r\n\tblit(n - 8, 0, 8, 9, [0x100, 0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x7f]);\r\n\tblit(0, n - 8, 9, 8, [0xfe, 0x82, 0xba, 0xba, 0xba, 0x82, 0xfe, 0x00, 0x00]);\r\n\r\n\t// the rest of timing patterns\r\n\tfor (var i = 9; i < n - 8; ++i) {\r\n\t\tmatrix[6][i] = matrix[i][6] = ~i & 1;\r\n\t\treserved[6][i] = reserved[i][6] = 1;\r\n\t}\r\n\r\n\t// alignment patterns\r\n\tvar aligns = v[2], m = aligns.length;\r\n\tfor (var i = 0; i < m; ++i) {\r\n\t\tvar minj = (i === 0 || i === m - 1 ? 1 : 0), maxj = (i === 0 ? m - 1 : m);\r\n\t\tfor (var j = minj; j < maxj; ++j) {\r\n\t\t\tblit(aligns[i], aligns[j], 5, 5, [0x1f, 0x11, 0x15, 0x11, 0x1f]);\r\n\t\t}\r\n\t}\r\n\r\n\t// version information\r\n\tif (needsverinfo(ver)) {\r\n\t\tvar code = augumentbch(ver, 6, 0x1f25, 12);\r\n\t\tvar k = 0;\r\n\t\tfor (var i = 0; i < 6; ++i) {\r\n\t\t\tfor (var j = 0; j < 3; ++j) {\r\n\t\t\t\tmatrix[i][(n - 11) + j] = matrix[(n - 11) + j][i] = (code >> k++) & 1;\r\n\t\t\t\treserved[i][(n - 11) + j] = reserved[(n - 11) + j][i] = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn {matrix: matrix, reserved: reserved};\r\n};\r\n\r\n// fills the data portion (i.e. unmarked in reserved) of the matrix with given\r\n// code words. the size of code words should be no more than available bits,\r\n// and remaining bits are padded to 0 (cf. JIS X 0510:2004 sec 8.7.3).\r\nvar putdata = function (matrix, reserved, buf) {\r\n\tvar n = matrix.length;\r\n\tvar k = 0, dir = -1;\r\n\tfor (var i = n - 1; i >= 0; i -= 2) {\r\n\t\tif (i == 6)\r\n\t\t\t--i; // skip the entire timing pattern column\r\n\t\tvar jj = (dir < 0 ? n - 1 : 0);\r\n\t\tfor (var j = 0; j < n; ++j) {\r\n\t\t\tfor (var ii = i; ii > i - 2; --ii) {\r\n\t\t\t\tif (!reserved[jj][ii]) {\r\n\t\t\t\t\t// may overflow, but (undefined >> x)\r\n\t\t\t\t\t// is 0 so it will auto-pad to zero.\r\n\t\t\t\t\tmatrix[jj][ii] = (buf[k >> 3] >> (~k & 7)) & 1;\r\n\t\t\t\t\t++k;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tjj += dir;\r\n\t\t}\r\n\t\tdir = -dir;\r\n\t}\r\n\treturn matrix;\r\n};\r\n\r\n// XOR-masks the data portion of the matrix. repeating the call with the same\r\n// arguments will revert the prior call (convenient in the matrix evaluation).\r\nvar maskdata = function (matrix, reserved, mask) {\r\n\tvar maskf = MASKFUNCS[mask];\r\n\tvar n = matrix.length;\r\n\tfor (var i = 0; i < n; ++i) {\r\n\t\tfor (var j = 0; j < n; ++j) {\r\n\t\t\tif (!reserved[i][j])\r\n\t\t\t\tmatrix[i][j] ^= maskf(i, j);\r\n\t\t}\r\n\t}\r\n\treturn matrix;\r\n};\r\n\r\n// puts the format information.\r\nvar putformatinfo = function (matrix, reserved, ecclevel, mask) {\r\n\tvar n = matrix.length;\r\n\tvar code = augumentbch((ecclevel << 3) | mask, 5, 0x537, 10) ^ 0x5412;\r\n\tfor (var i = 0; i < 15; ++i) {\r\n\t\tvar r = [0, 1, 2, 3, 4, 5, 7, 8, n - 7, n - 6, n - 5, n - 4, n - 3, n - 2, n - 1][i];\r\n\t\tvar c = [n - 1, n - 2, n - 3, n - 4, n - 5, n - 6, n - 7, n - 8, 7, 5, 4, 3, 2, 1, 0][i];\r\n\t\tmatrix[r][8] = matrix[8][c] = (code >> i) & 1;\r\n\t\t// we don't have to mark those bits reserved; always done\r\n\t\t// in makebasematrix above.\r\n\t}\r\n\treturn matrix;\r\n};\r\n\r\n// evaluates the resulting matrix and returns the score (lower is better).\r\n// (cf. JIS X 0510:2004 sec 8.8.2)\r\n//\r\n// the evaluation procedure tries to avoid the problematic patterns naturally\r\n// occuring from the original matrix. for example, it penaltizes the patterns\r\n// which just look like the finder pattern which will confuse the decoder.\r\n// we choose the mask which results in the lowest score among 8 possible ones.\r\n//\r\n// note: zxing seems to use the same procedure and in many cases its choice\r\n// agrees to ours, but sometimes it does not. practically it doesn't matter.\r\nvar evaluatematrix = function (matrix) {\r\n\t// N1+(k-5) points for each consecutive row of k same-colored modules,\r\n\t// where k >= 5. no overlapping row counts.\r\n\tvar PENALTY_CONSECUTIVE = 3;\r\n\t// N2 points for each 2x2 block of same-colored modules.\r\n\t// overlapping block does count.\r\n\tvar PENALTY_TWOBYTWO = 3;\r\n\t// N3 points for each pattern with >4W:1B:1W:3B:1W:1B or\r\n\t// 1B:1W:3B:1W:1B:>4W, or their multiples (e.g. highly unlikely,\r\n\t// but 13W:3B:3W:9B:3W:3B counts).\r\n\tvar PENALTY_FINDERLIKE = 40;\r\n\t// N4*k points for every (5*k)% deviation from 50% black density.\r\n\t// i.e. k=1 for 55~60% and 40~45%, k=2 for 60~65% and 35~40%, etc.\r\n\tvar PENALTY_DENSITY = 10;\r\n\r\n\tvar evaluategroup = function (groups) { // assumes [W,B,W,B,W,...,B,W]\r\n\t\tvar score = 0;\r\n\t\tfor (var i = 0; i < groups.length; ++i) {\r\n\t\t\tif (groups[i] >= 5)\r\n\t\t\t\tscore += PENALTY_CONSECUTIVE + (groups[i] - 5);\r\n\t\t}\r\n\t\tfor (var i = 5; i < groups.length; i += 2) {\r\n\t\t\tvar p = groups[i];\r\n\t\t\tif (groups[i - 1] == p && groups[i - 2] == 3 * p && groups[i - 3] == p &&\r\n\t\t\t\tgroups[i - 4] == p && (groups[i - 5] >= 4 * p || groups[i + 1] >= 4 * p)) {\r\n\t\t\t\t// this part differs from zxing...\r\n\t\t\t\tscore += PENALTY_FINDERLIKE;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn score;\r\n\t};\r\n\r\n\tvar n = matrix.length;\r\n\tvar score = 0, nblacks = 0;\r\n\tfor (var i = 0; i < n; ++i) {\r\n\t\tvar row = matrix[i];\r\n\t\tvar groups;\r\n\r\n\t\t// evaluate the current row\r\n\t\tgroups = [0]; // the first empty group of white\r\n\t\tfor (var j = 0; j < n; ) {\r\n\t\t\tvar k;\r\n\t\t\tfor (k = 0; j < n && row[j]; ++k)\r\n\t\t\t\t++j;\r\n\t\t\tgroups.push(k);\r\n\t\t\tfor (k = 0; j < n && !row[j]; ++k)\r\n\t\t\t\t++j;\r\n\t\t\tgroups.push(k);\r\n\t\t}\r\n\t\tscore += evaluategroup(groups);\r\n\r\n\t\t// evaluate the current column\r\n\t\tgroups = [0];\r\n\t\tfor (var j = 0; j < n; ) {\r\n\t\t\tvar k;\r\n\t\t\tfor (k = 0; j < n && matrix[j][i]; ++k)\r\n\t\t\t\t++j;\r\n\t\t\tgroups.push(k);\r\n\t\t\tfor (k = 0; j < n && !matrix[j][i]; ++k)\r\n\t\t\t\t++j;\r\n\t\t\tgroups.push(k);\r\n\t\t}\r\n\t\tscore += evaluategroup(groups);\r\n\r\n\t\t// check the 2x2 box and calculate the density\r\n\t\tvar nextrow = matrix[i + 1] || [];\r\n\t\tnblacks += row[0];\r\n\t\tfor (var j = 1; j < n; ++j) {\r\n\t\t\tvar p = row[j];\r\n\t\t\tnblacks += p;\r\n\t\t\t// at least comparison with next row should be strict...\r\n\t\t\tif (row[j - 1] == p && nextrow[j] === p && nextrow[j - 1] === p) {\r\n\t\t\t\tscore += PENALTY_TWOBYTWO;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscore += PENALTY_DENSITY * ((Math.abs(nblacks / n / n - 0.5) / 0.05) | 0);\r\n\treturn score;\r\n};\r\n\r\n// returns the fully encoded QR code matrix which contains given data.\r\n// it also chooses the best mask automatically when mask is -1.\r\nvar generate = function (data, ver, mode, ecclevel, mask) {\r\n\tvar v = VERSIONS[ver];\r\n\tvar buf = encode(ver, mode, data, ndatabits(ver, ecclevel) >> 3);\r\n\tbuf = augumenteccs(buf, v[1][ecclevel], GF256_GENPOLY[v[0][ecclevel]]);\r\n\r\n\tvar result = makebasematrix(ver);\r\n\tvar matrix = result.matrix, reserved = result.reserved;\r\n\tputdata(matrix, reserved, buf);\r\n\r\n\tif (mask < 0) {\r\n\t\t// find the best mask\r\n\t\tmaskdata(matrix, reserved, 0);\r\n\t\tputformatinfo(matrix, reserved, ecclevel, 0);\r\n\t\tvar bestmask = 0, bestscore = evaluatematrix(matrix);\r\n\t\tmaskdata(matrix, reserved, 0);\r\n\t\tfor (mask = 1; mask < 8; ++mask) {\r\n\t\t\tmaskdata(matrix, reserved, mask);\r\n\t\t\tputformatinfo(matrix, reserved, ecclevel, mask);\r\n\t\t\tvar score = evaluatematrix(matrix);\r\n\t\t\tif (bestscore > score) {\r\n\t\t\t\tbestscore = score;\r\n\t\t\t\tbestmask = mask;\r\n\t\t\t}\r\n\t\t\tmaskdata(matrix, reserved, mask);\r\n\t\t}\r\n\t\tmask = bestmask;\r\n\t}\r\n\r\n\tmaskdata(matrix, reserved, mask);\r\n\tputformatinfo(matrix, reserved, ecclevel, mask);\r\n\treturn matrix;\r\n};\r\n\r\n// the public interface is trivial; the options available are as follows:\r\n//\r\n// - version: an integer in [1,40]. when omitted (or -1) the smallest possible\r\n// version is chosen.\r\n// - mode: one of 'numeric', 'alphanumeric', 'octet'. when omitted the smallest\r\n// possible mode is chosen.\r\n// - eccLevel: one of 'L', 'M', 'Q', 'H'. defaults to 'L'.\r\n// - mask: an integer in [0,7]. when omitted (or -1) the best mask is chosen.\r\n//\r\n\r\nfunction generateFrame(data, options) {\r\n\tvar MODES = {'numeric': MODE_NUMERIC, 'alphanumeric': MODE_ALPHANUMERIC,\r\n\t\t'octet': MODE_OCTET};\r\n\tvar ECCLEVELS = {'L': ECCLEVEL_L, 'M': ECCLEVEL_M, 'Q': ECCLEVEL_Q,\r\n\t\t'H': ECCLEVEL_H};\r\n\r\n\toptions = options || {};\r\n\tvar ver = options.version || -1;\r\n\tvar ecclevel = ECCLEVELS[(options.eccLevel || 'L').toUpperCase()];\r\n\tvar mode = options.mode ? MODES[options.mode.toLowerCase()] : -1;\r\n\tvar mask = 'mask' in options ? options.mask : -1;\r\n\r\n\tif (mode < 0) {\r\n\t\tif (typeof data === 'string') {\r\n\t\t\tif (data.match(NUMERIC_REGEXP)) {\r\n\t\t\t\tmode = MODE_NUMERIC;\r\n\t\t\t} else if (data.match(ALPHANUMERIC_OUT_REGEXP)) {\r\n\t\t\t\t// while encode supports case-insensitive encoding, we restrict the data to be uppercased when auto-selecting the mode.\r\n\t\t\t\tmode = MODE_ALPHANUMERIC;\r\n\t\t\t} else {\r\n\t\t\t\tmode = MODE_OCTET;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tmode = MODE_OCTET;\r\n\t\t}\r\n\t} else if (!(mode == MODE_NUMERIC || mode == MODE_ALPHANUMERIC ||\r\n\t\tmode == MODE_OCTET)) {\r\n\t\tthrow 'invalid or unsupported mode';\r\n\t}\r\n\r\n\tdata = validatedata(mode, data);\r\n\tif (data === null)\r\n\t\tthrow 'invalid data format';\r\n\r\n\tif (ecclevel < 0 || ecclevel > 3)\r\n\t\tthrow 'invalid ECC level';\r\n\r\n\tif (ver < 0) {\r\n\t\tfor (ver = 1; ver <= 40; ++ver) {\r\n\t\t\tif (data.length <= getmaxdatalen(ver, mode, ecclevel))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif (ver > 40)\r\n\t\t\tthrow 'too large data for the Qr format';\r\n\t} else if (ver < 1 || ver > 40) {\r\n\t\tthrow 'invalid Qr version! should be between 1 and 40';\r\n\t}\r\n\r\n\tif (mask != -1 && (mask < 0 || mask > 8))\r\n\t\tthrow 'invalid mask';\r\n\t//console.log('version:', ver, 'mode:', mode, 'ECC:', ecclevel, 'mask:', mask )\r\n\treturn generate(data, ver, mode, ecclevel, mask);\r\n}\r\n\r\n\r\n// options\r\n// - modulesize: a number. this is a size of each modules in pixels, and\r\n// defaults to 5px.\r\n// - margin: a number. this is a size of margin in *modules*, and defaults to\r\n// 4 (white modules). the specficiation mandates the margin no less than 4\r\n// modules, so it is better not to alter this value unless you know what\r\n// you're doing.\r\nfunction buildCanvas(data, options) {\r\n\r\n\tvar canvas = [];\r\n\tvar background = options.background || '#fff';\r\n\tvar foreground = options.foreground || '#000';\r\n\tvar padding = options.padding || 0;\r\n\t//var margin = options.margin || 4;\r\n\tvar matrix = generateFrame(data, options);\r\n\tvar n = matrix.length;\r\n\tvar modSize = Math.floor(options.fit ? options.fit / n : 5);\r\n\tvar size = (n * modSize) + (modSize * padding * 2);\r\n\tvar paddingXY = modSize * padding;\r\n\r\n\tcanvas.push({\r\n\t\ttype: 'rect',\r\n\t\tx: 0, y: 0, w: size, h: size, lineWidth: 0, color: background\r\n\t});\r\n\r\n\tfor (var i = 0; i < n; ++i) {\r\n\t\tfor (var j = 0; j < n; ++j) {\r\n\t\t\tif (matrix[i][j]) {\r\n\t\t\t\tcanvas.push({\r\n\t\t\t\t\ttype: 'rect',\r\n\t\t\t\t\tx: modSize * j + paddingXY,\r\n\t\t\t\t\ty: modSize * i + paddingXY,\r\n\t\t\t\t\tw: modSize,\r\n\t\t\t\t\th: modSize,\r\n\t\t\t\t\tlineWidth: 0,\r\n\t\t\t\t\tcolor: foreground\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcanvas: canvas,\r\n\t\tsize: size\r\n\t};\r\n\r\n}\r\n\r\nfunction measure(node) {\r\n\tvar cd = buildCanvas(node.qr, node);\r\n\tnode._canvas = cd.canvas;\r\n\tnode._width = node._height = node._minWidth = node._maxWidth = node._minHeight = node._maxHeight = cd.size;\r\n\treturn node;\r\n}\r\n\r\nmodule.exports = {\r\n\tmeasure: measure\r\n};\n\n/***/ }),\n\n/***/ 70098:\n/***/ (function(module) {\n\n\"use strict\";\n\r\n\r\nmodule.exports = {\r\n\t'4A0': [4767.87, 6740.79],\r\n\t'2A0': [3370.39, 4767.87],\r\n\tA0: [2383.94, 3370.39],\r\n\tA1: [1683.78, 2383.94],\r\n\tA2: [1190.55, 1683.78],\r\n\tA3: [841.89, 1190.55],\r\n\tA4: [595.28, 841.89],\r\n\tA5: [419.53, 595.28],\r\n\tA6: [297.64, 419.53],\r\n\tA7: [209.76, 297.64],\r\n\tA8: [147.40, 209.76],\r\n\tA9: [104.88, 147.40],\r\n\tA10: [73.70, 104.88],\r\n\tB0: [2834.65, 4008.19],\r\n\tB1: [2004.09, 2834.65],\r\n\tB2: [1417.32, 2004.09],\r\n\tB3: [1000.63, 1417.32],\r\n\tB4: [708.66, 1000.63],\r\n\tB5: [498.90, 708.66],\r\n\tB6: [354.33, 498.90],\r\n\tB7: [249.45, 354.33],\r\n\tB8: [175.75, 249.45],\r\n\tB9: [124.72, 175.75],\r\n\tB10: [87.87, 124.72],\r\n\tC0: [2599.37, 3676.54],\r\n\tC1: [1836.85, 2599.37],\r\n\tC2: [1298.27, 1836.85],\r\n\tC3: [918.43, 1298.27],\r\n\tC4: [649.13, 918.43],\r\n\tC5: [459.21, 649.13],\r\n\tC6: [323.15, 459.21],\r\n\tC7: [229.61, 323.15],\r\n\tC8: [161.57, 229.61],\r\n\tC9: [113.39, 161.57],\r\n\tC10: [79.37, 113.39],\r\n\tRA0: [2437.80, 3458.27],\r\n\tRA1: [1729.13, 2437.80],\r\n\tRA2: [1218.90, 1729.13],\r\n\tRA3: [864.57, 1218.90],\r\n\tRA4: [609.45, 864.57],\r\n\tSRA0: [2551.18, 3628.35],\r\n\tSRA1: [1814.17, 2551.18],\r\n\tSRA2: [1275.59, 1814.17],\r\n\tSRA3: [907.09, 1275.59],\r\n\tSRA4: [637.80, 907.09],\r\n\tEXECUTIVE: [521.86, 756.00],\r\n\tFOLIO: [612.00, 936.00],\r\n\tLEGAL: [612.00, 1008.00],\r\n\tLETTER: [612.00, 792.00],\r\n\tTABLOID: [792.00, 1224.00]\r\n};\r\n\n\n/***/ }),\n\n/***/ 76442:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar isString = (__webpack_require__(91867).isString);\r\nvar isArray = (__webpack_require__(91867).isArray);\r\nvar isUndefined = (__webpack_require__(91867).isUndefined);\r\nvar isNull = (__webpack_require__(91867).isNull);\r\n\r\n/**\r\n * Creates an instance of StyleContextStack used for style inheritance and style overrides\r\n *\r\n * @constructor\r\n * @this {StyleContextStack}\r\n * @param {Object} named styles dictionary\r\n * @param {Object} optional default style definition\r\n */\r\nfunction StyleContextStack(styleDictionary, defaultStyle) {\r\n\tthis.defaultStyle = defaultStyle || {};\r\n\tthis.styleDictionary = styleDictionary;\r\n\tthis.styleOverrides = [];\r\n}\r\n\r\n/**\r\n * Creates cloned version of current stack\r\n * @return {StyleContextStack} current stack snapshot\r\n */\r\nStyleContextStack.prototype.clone = function () {\r\n\tvar stack = new StyleContextStack(this.styleDictionary, this.defaultStyle);\r\n\r\n\tthis.styleOverrides.forEach(function (item) {\r\n\t\tstack.styleOverrides.push(item);\r\n\t});\r\n\r\n\treturn stack;\r\n};\r\n\r\n/**\r\n * Pushes style-name or style-overrides-object onto the stack for future evaluation\r\n *\r\n * @param {String|Object} styleNameOrOverride style-name (referring to styleDictionary) or\r\n * a new dictionary defining overriding properties\r\n */\r\nStyleContextStack.prototype.push = function (styleNameOrOverride) {\r\n\tthis.styleOverrides.push(styleNameOrOverride);\r\n};\r\n\r\n/**\r\n * Removes last style-name or style-overrides-object from the stack\r\n *\r\n * @param {Number} howMany - optional number of elements to be popped (if not specified,\r\n * one element will be removed from the stack)\r\n */\r\nStyleContextStack.prototype.pop = function (howMany) {\r\n\thowMany = howMany || 1;\r\n\r\n\twhile (howMany-- > 0) {\r\n\t\tthis.styleOverrides.pop();\r\n\t}\r\n};\r\n\r\n/**\r\n * Creates a set of named styles or/and a style-overrides-object based on the item,\r\n * pushes those elements onto the stack for future evaluation and returns the number\r\n * of elements pushed, so they can be easily poped then.\r\n *\r\n * @param {Object} item - an object with optional style property and/or style overrides\r\n * @return the number of items pushed onto the stack\r\n */\r\nStyleContextStack.prototype.autopush = function (item) {\r\n\tif (isString(item)) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tvar styleNames = [];\r\n\r\n\tif (item.style) {\r\n\t\tif (isArray(item.style)) {\r\n\t\t\tstyleNames = item.style;\r\n\t\t} else {\r\n\t\t\tstyleNames = [item.style];\r\n\t\t}\r\n\t}\r\n\r\n\tfor (var i = 0, l = styleNames.length; i < l; i++) {\r\n\t\tthis.push(styleNames[i]);\r\n\t}\r\n\r\n\tvar styleProperties = [\r\n\t\t'font',\r\n\t\t'fontSize',\r\n\t\t'fontFeatures',\r\n\t\t'bold',\r\n\t\t'italics',\r\n\t\t'alignment',\r\n\t\t'color',\r\n\t\t'columnGap',\r\n\t\t'fillColor',\r\n\t\t'fillOpacity',\r\n\t\t'decoration',\r\n\t\t'decorationStyle',\r\n\t\t'decorationColor',\r\n\t\t'background',\r\n\t\t'lineHeight',\r\n\t\t'characterSpacing',\r\n\t\t'noWrap',\r\n\t\t'markerColor',\r\n\t\t'leadingIndent',\r\n\t\t'sup',\r\n\t\t'sub'\r\n\t\t//'tableCellPadding'\r\n\t\t// 'cellBorder',\r\n\t\t// 'headerCellBorder',\r\n\t\t// 'oddRowCellBorder',\r\n\t\t// 'evenRowCellBorder',\r\n\t\t// 'tableBorder'\r\n\t];\r\n\tvar styleOverrideObject = {};\r\n\tvar pushStyleOverrideObject = false;\r\n\r\n\tstyleProperties.forEach(function (key) {\r\n\t\tif (!isUndefined(item[key]) && !isNull(item[key])) {\r\n\t\t\tstyleOverrideObject[key] = item[key];\r\n\t\t\tpushStyleOverrideObject = true;\r\n\t\t}\r\n\t});\r\n\r\n\tif (pushStyleOverrideObject) {\r\n\t\tthis.push(styleOverrideObject);\r\n\t}\r\n\r\n\treturn styleNames.length + (pushStyleOverrideObject ? 1 : 0);\r\n};\r\n\r\n/**\r\n * Automatically pushes elements onto the stack, using autopush based on item,\r\n * executes callback and then pops elements back. Returns value returned by callback\r\n *\r\n * @param {Object} item - an object with optional style property and/or style overrides\r\n * @param {Function} function to be called between autopush and pop\r\n * @return {Object} value returned by callback\r\n */\r\nStyleContextStack.prototype.auto = function (item, callback) {\r\n\tvar pushedItems = this.autopush(item);\r\n\tvar result = callback();\r\n\r\n\tif (pushedItems > 0) {\r\n\t\tthis.pop(pushedItems);\r\n\t}\r\n\r\n\treturn result;\r\n};\r\n\r\n/**\r\n * Evaluates stack and returns value of a named property\r\n *\r\n * @param {String} property - property name\r\n * @return property value or null if not found\r\n */\r\nStyleContextStack.prototype.getProperty = function (property) {\r\n\tif (this.styleOverrides) {\r\n\t\tfor (var i = this.styleOverrides.length - 1; i >= 0; i--) {\r\n\t\t\tvar item = this.styleOverrides[i];\r\n\r\n\t\t\tif (isString(item)) {\r\n\t\t\t\t// named-style-override\r\n\t\t\t\tvar style = this.styleDictionary[item];\r\n\t\t\t\tif (style && !isUndefined(style[property]) && !isNull(style[property])) {\r\n\t\t\t\t\treturn style[property];\r\n\t\t\t\t}\r\n\t\t\t} else if (!isUndefined(item[property]) && !isNull(item[property])) {\r\n\t\t\t\t// style-overrides-object\r\n\t\t\t\treturn item[property];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn this.defaultStyle && this.defaultStyle[property];\r\n};\r\n\r\nmodule.exports = StyleContextStack;\r\n\n\n/***/ }),\n\n/***/ 89638:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar xmldoc = __webpack_require__(52242);\r\n\r\n/** Strip unit postfix, parse number, but return undefined instead of NaN for bad input */\r\nfunction stripUnits(textVal) {\r\n\tvar n = parseFloat(textVal);\r\n\tif (typeof n !== 'number' || isNaN(n)) {\r\n\t\treturn undefined;\r\n\t}\r\n\treturn n;\r\n}\r\n\r\n/** Make sure it's valid XML and the root tage is <svg/>, returns xmldoc DOM */\r\nfunction parseSVG(svgString) {\r\n\tvar doc;\r\n\r\n\ttry {\r\n\t\tdoc = new xmldoc.XmlDocument(svgString);\r\n\t} catch (err) {\r\n\t\tthrow new Error('SVGMeasure: ' + err);\r\n\t}\r\n\r\n\tif (doc.name !== \"svg\") {\r\n\t\tthrow new Error('SVGMeasure: expected <svg> document');\r\n\t}\r\n\r\n\treturn doc;\r\n}\r\n\r\nfunction SVGMeasure() {\r\n}\r\n\r\nSVGMeasure.prototype.measureSVG = function (svgString) {\r\n\r\n\tvar doc = parseSVG(svgString);\r\n\r\n\tvar docWidth = stripUnits(doc.attr.width);\r\n\tvar docHeight = stripUnits(doc.attr.height);\r\n\r\n\tif ((docWidth == undefined || docHeight == undefined) && typeof doc.attr.viewBox == 'string') {\r\n\t\tvar viewBoxParts = doc.attr.viewBox.split(/[,\\s]+/);\r\n\t\tif (viewBoxParts.length !== 4) {\r\n\t\t\tthrow new Error(\"Unexpected svg viewbox format, should have 4 entries but found: '\" + doc.attr.viewBox + \"'\");\r\n\t\t}\r\n\t\tif (docWidth == undefined) {\r\n\t\t\tdocWidth = stripUnits(viewBoxParts[2]);\r\n\t\t}\r\n\t\tif (docHeight == undefined) {\r\n\t\t\tdocHeight = stripUnits(viewBoxParts[3]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\twidth: docWidth,\r\n\t\theight: docHeight\r\n\t};\r\n};\r\n\r\nSVGMeasure.prototype.writeDimensions = function (svgString, dimensions) {\r\n\r\n\tvar doc = parseSVG(svgString);\r\n\r\n\tdoc.attr.width = \"\" + dimensions.width;\r\n\tdoc.attr.height = \"\" + dimensions.height;\r\n\r\n\treturn doc.toString();\r\n};\r\n\r\nmodule.exports = SVGMeasure;\r\n\n\n/***/ }),\n\n/***/ 89836:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar ColumnCalculator = __webpack_require__(77530);\r\nvar isFunction = (__webpack_require__(91867).isFunction);\r\nvar isNumber = (__webpack_require__(91867).isNumber);\r\n\r\nfunction TableProcessor(tableNode) {\r\n\tthis.tableNode = tableNode;\r\n}\r\n\r\nTableProcessor.prototype.beginTable = function (writer) {\r\n\tvar tableNode;\r\n\tvar availableWidth;\r\n\tvar self = this;\r\n\r\n\ttableNode = this.tableNode;\r\n\tthis.offsets = tableNode._offsets;\r\n\tthis.layout = tableNode._layout;\r\n\r\n\tavailableWidth = writer.context().availableWidth - this.offsets.total;\r\n\tColumnCalculator.buildColumnWidths(tableNode.table.widths, availableWidth);\r\n\r\n\tthis.tableWidth = tableNode._offsets.total + getTableInnerContentWidth();\r\n\tthis.rowSpanData = prepareRowSpanData();\r\n\tthis.cleanUpRepeatables = false;\r\n\r\n\tthis.headerRows = tableNode.table.headerRows || 0;\r\n\tif (this.headerRows > tableNode.table.body.length) {\r\n\t\tthrow new Error(`Too few rows in the table. Property headerRows requires at least ${this.headerRows}, contains only ${tableNode.table.body.length}`);\r\n\t}\r\n\r\n\tthis.rowsWithoutPageBreak = this.headerRows + (tableNode.table.keepWithHeaderRows || 0);\r\n\tthis.dontBreakRows = tableNode.table.dontBreakRows || false;\r\n\r\n\tif (this.rowsWithoutPageBreak) {\r\n\t\twriter.beginUnbreakableBlock();\r\n\t}\r\n\r\n\t// update the border properties of all cells before drawing any lines\r\n\tprepareCellBorders(this.tableNode.table.body);\r\n\r\n\tthis.drawHorizontalLine(0, writer);\r\n\r\n\tfunction getTableInnerContentWidth() {\r\n\t\tvar width = 0;\r\n\r\n\t\ttableNode.table.widths.forEach(function (w) {\r\n\t\t\twidth += w._calcWidth;\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tfunction prepareRowSpanData() {\r\n\t\tvar rsd = [];\r\n\t\tvar x = 0;\r\n\t\tvar lastWidth = 0;\r\n\r\n\t\trsd.push({ left: 0, rowSpan: 0 });\r\n\r\n\t\tfor (var i = 0, l = self.tableNode.table.body[0].length; i < l; i++) {\r\n\t\t\tvar paddings = self.layout.paddingLeft(i, self.tableNode) + self.layout.paddingRight(i, self.tableNode);\r\n\t\t\tvar lBorder = self.layout.vLineWidth(i, self.tableNode);\r\n\t\t\tlastWidth = paddings + lBorder + self.tableNode.table.widths[i]._calcWidth;\r\n\t\t\trsd[rsd.length - 1].width = lastWidth;\r\n\t\t\tx += lastWidth;\r\n\t\t\trsd.push({ left: x, rowSpan: 0, width: 0 });\r\n\t\t}\r\n\r\n\t\treturn rsd;\r\n\t}\r\n\r\n\t// Iterate through all cells. If the current cell is the start of a\r\n\t// rowSpan/colSpan, update the border property of the cells on its\r\n\t// bottom/right accordingly. This is needed since each iteration of the\r\n\t// line-drawing loops draws lines for a single cell, not for an entire\r\n\t// rowSpan/colSpan.\r\n\tfunction prepareCellBorders(body) {\r\n\t\tfor (var rowIndex = 0; rowIndex < body.length; rowIndex++) {\r\n\t\t\tvar row = body[rowIndex];\r\n\r\n\t\t\tfor (var colIndex = 0; colIndex < row.length; colIndex++) {\r\n\t\t\t\tvar cell = row[colIndex];\r\n\r\n\t\t\t\tif (cell.border) {\r\n\t\t\t\t\tvar rowSpan = cell.rowSpan || 1;\r\n\t\t\t\t\tvar colSpan = cell.colSpan || 1;\r\n\r\n\t\t\t\t\tfor (var rowOffset = 0; rowOffset < rowSpan; rowOffset++) {\r\n\t\t\t\t\t\t// set left border\r\n\t\t\t\t\t\tif (cell.border[0] !== undefined && rowOffset > 0) {\r\n\t\t\t\t\t\t\tsetBorder(rowIndex + rowOffset, colIndex, 0, cell.border[0]);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// set right border\r\n\t\t\t\t\t\tif (cell.border[2] !== undefined) {\r\n\t\t\t\t\t\t\tsetBorder(rowIndex + rowOffset, colIndex + colSpan - 1, 2, cell.border[2]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (var colOffset = 0; colOffset < colSpan; colOffset++) {\r\n\t\t\t\t\t\t// set top border\r\n\t\t\t\t\t\tif (cell.border[1] !== undefined && colOffset > 0) {\r\n\t\t\t\t\t\t\tsetBorder(rowIndex, colIndex + colOffset, 1, cell.border[1]);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// set bottom border\r\n\t\t\t\t\t\tif (cell.border[3] !== undefined) {\r\n\t\t\t\t\t\t\tsetBorder(rowIndex + rowSpan - 1, colIndex + colOffset, 3, cell.border[3]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// helper function to set the border for a given cell\r\n\t\tfunction setBorder(rowIndex, colIndex, borderIndex, borderValue) {\r\n\t\t\tvar cell = body[rowIndex][colIndex];\r\n\t\t\tcell.border = cell.border || {};\r\n\t\t\tcell.border[borderIndex] = borderValue;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nTableProcessor.prototype.onRowBreak = function (rowIndex, writer) {\r\n\tvar self = this;\r\n\treturn function () {\r\n\t\tvar offset = self.rowPaddingTop + (!self.headerRows ? self.topLineWidth : 0);\r\n\t\twriter.context().availableHeight -= self.reservedAtBottom;\r\n\t\twriter.context().moveDown(offset);\r\n\t};\r\n};\r\n\r\nTableProcessor.prototype.beginRow = function (rowIndex, writer) {\r\n\tthis.topLineWidth = this.layout.hLineWidth(rowIndex, this.tableNode);\r\n\tthis.rowPaddingTop = this.layout.paddingTop(rowIndex, this.tableNode);\r\n\tthis.bottomLineWidth = this.layout.hLineWidth(rowIndex + 1, this.tableNode);\r\n\tthis.rowPaddingBottom = this.layout.paddingBottom(rowIndex, this.tableNode);\r\n\r\n\tthis.rowCallback = this.onRowBreak(rowIndex, writer);\r\n\twriter.tracker.startTracking('pageChanged', this.rowCallback);\r\n\tif (this.dontBreakRows) {\r\n\t\twriter.beginUnbreakableBlock();\r\n\t}\r\n\tthis.rowTopY = writer.context().y;\r\n\tthis.reservedAtBottom = this.bottomLineWidth + this.rowPaddingBottom;\r\n\r\n\twriter.context().availableHeight -= this.reservedAtBottom;\r\n\r\n\twriter.context().moveDown(this.rowPaddingTop);\r\n};\r\n\r\nTableProcessor.prototype.drawHorizontalLine = function (lineIndex, writer, overrideY) {\r\n\tvar lineWidth = this.layout.hLineWidth(lineIndex, this.tableNode);\r\n\tif (lineWidth) {\r\n\t\tvar style = this.layout.hLineStyle(lineIndex, this.tableNode);\r\n\t\tvar dash;\r\n\t\tif (style && style.dash) {\r\n\t\t\tdash = style.dash;\r\n\t\t}\r\n\r\n\t\tvar offset = lineWidth / 2;\r\n\t\tvar currentLine = null;\r\n\t\tvar body = this.tableNode.table.body;\r\n\t\tvar cellAbove;\r\n\t\tvar currentCell;\r\n\t\tvar rowCellAbove;\r\n\r\n\t\tfor (var i = 0, l = this.rowSpanData.length; i < l; i++) {\r\n\t\t\tvar data = this.rowSpanData[i];\r\n\t\t\tvar shouldDrawLine = !data.rowSpan;\r\n\t\t\tvar borderColor = null;\r\n\r\n\t\t\t// draw only if the current cell requires a top border or the cell in the\r\n\t\t\t// row above requires a bottom border\r\n\t\t\tif (shouldDrawLine && i < l - 1) {\r\n\t\t\t\tvar topBorder = false, bottomBorder = false, rowBottomBorder = false;\r\n\r\n\t\t\t\t// the cell in the row above\r\n\t\t\t\tif (lineIndex > 0) {\r\n\t\t\t\t\tcellAbove = body[lineIndex - 1][i];\r\n\t\t\t\t\tbottomBorder = cellAbove.border ? cellAbove.border[3] : this.layout.defaultBorder;\r\n\t\t\t\t\tif (bottomBorder && cellAbove.borderColor) {\r\n\t\t\t\t\t\tborderColor = cellAbove.borderColor[3];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// the current cell\r\n\t\t\t\tif (lineIndex < body.length) {\r\n\t\t\t\t\tcurrentCell = body[lineIndex][i];\r\n\t\t\t\t\ttopBorder = currentCell.border ? currentCell.border[1] : this.layout.defaultBorder;\r\n\t\t\t\t\tif (topBorder && borderColor == null && currentCell.borderColor) {\r\n\t\t\t\t\t\tborderColor = currentCell.borderColor[1];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tshouldDrawLine = topBorder || bottomBorder;\r\n\t\t\t}\r\n\r\n\t\t\tif (cellAbove && cellAbove._rowSpanCurrentOffset) {\r\n\t\t\t\trowCellAbove = body[lineIndex - 1 - cellAbove._rowSpanCurrentOffset][i];\r\n\t\t\t\trowBottomBorder = rowCellAbove && rowCellAbove.border ? rowCellAbove.border[3] : this.layout.defaultBorder;\r\n\t\t\t\tif (rowBottomBorder && rowCellAbove && rowCellAbove.borderColor) {\r\n\t\t\t\t\tborderColor = rowCellAbove.borderColor[3];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (borderColor == null) {\r\n\t\t\t\tborderColor = isFunction(this.layout.hLineColor) ? this.layout.hLineColor(lineIndex, this.tableNode, i) : this.layout.hLineColor;\r\n\t\t\t}\r\n\r\n\t\t\tif (!currentLine && shouldDrawLine) {\r\n\t\t\t\tcurrentLine = { left: data.left, width: 0 };\r\n\t\t\t}\r\n\r\n\t\t\tif (shouldDrawLine) {\r\n\t\t\t\tvar colSpanIndex = 0;\r\n\t\t\t\tif (rowCellAbove && rowCellAbove.colSpan && rowBottomBorder) {\r\n\t\t\t\t\twhile (rowCellAbove.colSpan > colSpanIndex) {\r\n\t\t\t\t\t\tcurrentLine.width += (this.rowSpanData[i + colSpanIndex++].width || 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti += colSpanIndex - 1;\r\n\t\t\t\t} else if (cellAbove && cellAbove.colSpan && bottomBorder) {\r\n\t\t\t\t\twhile (cellAbove.colSpan > colSpanIndex) {\r\n\t\t\t\t\t\tcurrentLine.width += (this.rowSpanData[i + colSpanIndex++].width || 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti += colSpanIndex - 1;\r\n\t\t\t\t} else if (currentCell && currentCell.colSpan && topBorder) {\r\n\t\t\t\t\twhile (currentCell.colSpan > colSpanIndex) {\r\n\t\t\t\t\t\tcurrentLine.width += (this.rowSpanData[i + colSpanIndex++].width || 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti += colSpanIndex - 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcurrentLine.width += (this.rowSpanData[i].width || 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar y = (overrideY || 0) + offset;\r\n\r\n\r\n\t\t\tif (shouldDrawLine) {\r\n\t\t\t\tif (currentLine && currentLine.width) {\r\n\t\t\t\t\twriter.addVector({\r\n\t\t\t\t\t\ttype: 'line',\r\n\t\t\t\t\t\tx1: currentLine.left,\r\n\t\t\t\t\t\tx2: currentLine.left + currentLine.width,\r\n\t\t\t\t\t\ty1: y,\r\n\t\t\t\t\t\ty2: y,\r\n\t\t\t\t\t\tlineWidth: lineWidth,\r\n\t\t\t\t\t\tdash: dash,\r\n\t\t\t\t\t\tlineColor: borderColor\r\n\t\t\t\t\t}, false, overrideY);\r\n\t\t\t\t\tcurrentLine = null;\r\n\t\t\t\t\tborderColor = null;\r\n\t\t\t\t\tcellAbove = null;\r\n\t\t\t\t\tcurrentCell = null;\r\n\t\t\t\t\trowCellAbove = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twriter.context().moveDown(lineWidth);\r\n\t}\r\n};\r\n\r\nTableProcessor.prototype.drawVerticalLine = function (x, y0, y1, vLineColIndex, writer, vLineRowIndex, beforeVLineColIndex) {\r\n\tvar width = this.layout.vLineWidth(vLineColIndex, this.tableNode);\r\n\tif (width === 0) {\r\n\t\treturn;\r\n\t}\r\n\tvar style = this.layout.vLineStyle(vLineColIndex, this.tableNode);\r\n\tvar dash;\r\n\tif (style && style.dash) {\r\n\t\tdash = style.dash;\r\n\t}\r\n\r\n\tvar body = this.tableNode.table.body;\r\n\tvar cellBefore;\r\n\tvar currentCell;\r\n\tvar borderColor;\r\n\r\n\t// the cell in the col before\r\n\tif (vLineColIndex > 0) {\r\n\t\tcellBefore = body[vLineRowIndex][beforeVLineColIndex];\r\n\t\tif (cellBefore && cellBefore.borderColor) {\r\n\t\t\tif (cellBefore.border ? cellBefore.border[2] : this.layout.defaultBorder) {\r\n\t\t\t\tborderColor = cellBefore.borderColor[2];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// the current cell\r\n\tif (borderColor == null && vLineColIndex < body.length) {\r\n\t\tcurrentCell = body[vLineRowIndex][vLineColIndex];\r\n\t\tif (currentCell && currentCell.borderColor) {\r\n\t\t\tif (currentCell.border ? currentCell.border[0] : this.layout.defaultBorder) {\r\n\t\t\t\tborderColor = currentCell.borderColor[0];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (borderColor == null && cellBefore && cellBefore._rowSpanCurrentOffset) {\r\n\t\tvar rowCellBeforeAbove = body[vLineRowIndex - cellBefore._rowSpanCurrentOffset][beforeVLineColIndex];\r\n\t\tif (rowCellBeforeAbove.borderColor) {\r\n\t\t\tif (rowCellBeforeAbove.border ? rowCellBeforeAbove.border[2] : this.layout.defaultBorder) {\r\n\t\t\t\tborderColor = rowCellBeforeAbove.borderColor[2];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (borderColor == null && currentCell && currentCell._rowSpanCurrentOffset) {\r\n\t\tvar rowCurrentCellAbove = body[vLineRowIndex - currentCell._rowSpanCurrentOffset][vLineColIndex];\r\n\t\tif (rowCurrentCellAbove.borderColor) {\r\n\t\t\tif (rowCurrentCellAbove.border ? rowCurrentCellAbove.border[2] : this.layout.defaultBorder) {\r\n\t\t\t\tborderColor = rowCurrentCellAbove.borderColor[2];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (borderColor == null) {\r\n\t\tborderColor = isFunction(this.layout.vLineColor) ? this.layout.vLineColor(vLineColIndex, this.tableNode, vLineRowIndex) : this.layout.vLineColor;\r\n\t}\r\n\twriter.addVector({\r\n\t\ttype: 'line',\r\n\t\tx1: x + width / 2,\r\n\t\tx2: x + width / 2,\r\n\t\ty1: y0,\r\n\t\ty2: y1,\r\n\t\tlineWidth: width,\r\n\t\tdash: dash,\r\n\t\tlineColor: borderColor\r\n\t}, false, true);\r\n\tcellBefore = null;\r\n\tcurrentCell = null;\r\n\tborderColor = null;\r\n};\r\n\r\nTableProcessor.prototype.endTable = function (writer) {\r\n\tif (this.cleanUpRepeatables) {\r\n\t\twriter.popFromRepeatables();\r\n\t}\r\n};\r\n\r\nTableProcessor.prototype.endRow = function (rowIndex, writer, pageBreaks) {\r\n\tvar l, i;\r\n\tvar self = this;\r\n\twriter.tracker.stopTracking('pageChanged', this.rowCallback);\r\n\twriter.context().moveDown(this.layout.paddingBottom(rowIndex, this.tableNode));\r\n\twriter.context().availableHeight += this.reservedAtBottom;\r\n\r\n\tvar endingPage = writer.context().page;\r\n\tvar endingY = writer.context().y;\r\n\r\n\tvar xs = getLineXs();\r\n\r\n\tvar ys = [];\r\n\r\n\tvar hasBreaks = pageBreaks && pageBreaks.length > 0;\r\n\tvar body = this.tableNode.table.body;\r\n\r\n\tys.push({\r\n\t\ty0: this.rowTopY,\r\n\t\tpage: hasBreaks ? pageBreaks[0].prevPage : endingPage\r\n\t});\r\n\r\n\tif (hasBreaks) {\r\n\t\tfor (i = 0, l = pageBreaks.length; i < l; i++) {\r\n\t\t\tvar pageBreak = pageBreaks[i];\r\n\t\t\tys[ys.length - 1].y1 = pageBreak.prevY;\r\n\r\n\t\t\tys.push({ y0: pageBreak.y, page: pageBreak.prevPage + 1 });\r\n\t\t}\r\n\t}\r\n\r\n\tys[ys.length - 1].y1 = endingY;\r\n\r\n\tvar skipOrphanePadding = (ys[0].y1 - ys[0].y0 === this.rowPaddingTop);\r\n\tfor (var yi = (skipOrphanePadding ? 1 : 0), yl = ys.length; yi < yl; yi++) {\r\n\t\tvar willBreak = yi < ys.length - 1;\r\n\t\tvar rowBreakWithoutHeader = (yi > 0 && !this.headerRows);\r\n\t\tvar hzLineOffset = rowBreakWithoutHeader ? 0 : this.topLineWidth;\r\n\t\tvar y1 = ys[yi].y0;\r\n\t\tvar y2 = ys[yi].y1;\r\n\r\n\t\tif (willBreak) {\r\n\t\t\ty2 = y2 + this.rowPaddingBottom;\r\n\t\t}\r\n\r\n\t\tif (writer.context().page != ys[yi].page) {\r\n\t\t\twriter.context().page = ys[yi].page;\r\n\r\n\t\t\t//TODO: buggy, availableHeight should be updated on every pageChanged event\r\n\t\t\t// TableProcessor should be pageChanged listener, instead of processRow\r\n\t\t\tthis.reservedAtBottom = 0;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, l = xs.length; i < l; i++) {\r\n\t\t\tvar leftCellBorder = false;\r\n\t\t\tvar rightCellBorder = false;\r\n\t\t\tvar colIndex = xs[i].index;\r\n\r\n\t\t\t// current cell\r\n\t\t\tif (colIndex < body[rowIndex].length) {\r\n\t\t\t\tvar cell = body[rowIndex][colIndex];\r\n\t\t\t\tleftCellBorder = cell.border ? cell.border[0] : this.layout.defaultBorder;\r\n\t\t\t\trightCellBorder = cell.border ? cell.border[2] : this.layout.defaultBorder;\r\n\t\t\t}\r\n\r\n\t\t\t// before cell\r\n\t\t\tif (colIndex > 0 && !leftCellBorder) {\r\n\t\t\t\tvar cell = body[rowIndex][colIndex - 1];\r\n\t\t\t\tleftCellBorder = cell.border ? cell.border[2] : this.layout.defaultBorder;\r\n\t\t\t}\r\n\r\n\t\t\t// after cell\r\n\t\t\tif (colIndex + 1 < body[rowIndex].length && !rightCellBorder) {\r\n\t\t\t\tvar cell = body[rowIndex][colIndex + 1];\r\n\t\t\t\trightCellBorder = cell.border ? cell.border[0] : this.layout.defaultBorder;\r\n\t\t\t}\r\n\r\n\t\t\tif (leftCellBorder) {\r\n\t\t\t\tthis.drawVerticalLine(xs[i].x, y1 - hzLineOffset, y2 + this.bottomLineWidth, xs[i].index, writer, rowIndex, xs[i - 1] ? xs[i - 1].index : null);\r\n\t\t\t}\r\n\r\n\t\t\tif (i < l - 1) {\r\n\t\t\t\tvar fillColor = body[rowIndex][colIndex].fillColor;\r\n\t\t\t\tvar fillOpacity = body[rowIndex][colIndex].fillOpacity;\r\n\t\t\t\tif (!fillColor) {\r\n\t\t\t\t\tfillColor = isFunction(this.layout.fillColor) ? this.layout.fillColor(rowIndex, this.tableNode, colIndex) : this.layout.fillColor;\r\n\t\t\t\t}\r\n\t\t\t\tif (!isNumber(fillOpacity)) {\r\n\t\t\t\t\tfillOpacity = isFunction(this.layout.fillOpacity) ? this.layout.fillOpacity(rowIndex, this.tableNode, colIndex) : this.layout.fillOpacity;\r\n\t\t\t\t}\r\n\t\t\t\tvar overlayPattern = body[rowIndex][colIndex].overlayPattern;\r\n\t\t\t\tvar overlayOpacity = body[rowIndex][colIndex].overlayOpacity;\r\n\t\t\t\tif (fillColor || overlayPattern) {\r\n\t\t\t\t\tvar widthLeftBorder = leftCellBorder ? this.layout.vLineWidth(colIndex, this.tableNode) : 0;\r\n\t\t\t\t\tvar widthRightBorder;\r\n\t\t\t\t\tif ((colIndex === 0 || colIndex + 1 == body[rowIndex].length) && !rightCellBorder) {\r\n\t\t\t\t\t\twidthRightBorder = this.layout.vLineWidth(colIndex + 1, this.tableNode);\r\n\t\t\t\t\t} else if (rightCellBorder) {\r\n\t\t\t\t\t\twidthRightBorder = this.layout.vLineWidth(colIndex + 1, this.tableNode) / 2;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twidthRightBorder = 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar x1f = this.dontBreakRows ? xs[i].x + widthLeftBorder : xs[i].x + (widthLeftBorder / 2);\r\n\t\t\t\t\tvar y1f = this.dontBreakRows ? y1 : y1 - (hzLineOffset / 2);\r\n\t\t\t\t\tvar x2f = xs[i + 1].x + widthRightBorder;\r\n\t\t\t\t\tvar y2f = this.dontBreakRows ? y2 + this.bottomLineWidth : y2 + (this.bottomLineWidth / 2);\r\n\t\t\t\t\tvar bgWidth = x2f - x1f;\r\n\t\t\t\t\tvar bgHeight = y2f - y1f;\r\n\t\t\t\t\tif (fillColor) {\r\n\t\t\t\t\t\twriter.addVector({\r\n\t\t\t\t\t\t\ttype: 'rect',\r\n\t\t\t\t\t\t\tx: x1f,\r\n\t\t\t\t\t\t\ty: y1f,\r\n\t\t\t\t\t\t\tw: bgWidth,\r\n\t\t\t\t\t\t\th: bgHeight,\r\n\t\t\t\t\t\t\tlineWidth: 0,\r\n\t\t\t\t\t\t\tcolor: fillColor,\r\n\t\t\t\t\t\t\tfillOpacity: fillOpacity\r\n\t\t\t\t\t\t}, false, true, writer.context().backgroundLength[writer.context().page]);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (overlayPattern) {\r\n\t\t\t\t\t\twriter.addVector({\r\n\t\t\t\t\t\t\ttype: 'rect',\r\n\t\t\t\t\t\t\tx: x1f,\r\n\t\t\t\t\t\t\ty: y1f,\r\n\t\t\t\t\t\t\tw: bgWidth,\r\n\t\t\t\t\t\t\th: bgHeight,\r\n\t\t\t\t\t\t\tlineWidth: 0,\r\n\t\t\t\t\t\t\tcolor: overlayPattern,\r\n\t\t\t\t\t\t\tfillOpacity: overlayOpacity\r\n\t\t\t\t\t\t}, false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (willBreak && this.layout.hLineWhenBroken !== false) {\r\n\t\t\tthis.drawHorizontalLine(rowIndex + 1, writer, y2);\r\n\t\t}\r\n\t\tif (rowBreakWithoutHeader && this.layout.hLineWhenBroken !== false) {\r\n\t\t\tthis.drawHorizontalLine(rowIndex, writer, y1);\r\n\t\t}\r\n\t}\r\n\r\n\twriter.context().page = endingPage;\r\n\twriter.context().y = endingY;\r\n\r\n\tvar row = this.tableNode.table.body[rowIndex];\r\n\tfor (i = 0, l = row.length; i < l; i++) {\r\n\t\tif (row[i].rowSpan) {\r\n\t\t\tthis.rowSpanData[i].rowSpan = row[i].rowSpan;\r\n\r\n\t\t\t// fix colSpans\r\n\t\t\tif (row[i].colSpan && row[i].colSpan > 1) {\r\n\t\t\t\tfor (var j = 1; j < row[i].rowSpan; j++) {\r\n\t\t\t\t\tthis.tableNode.table.body[rowIndex + j][i]._colSpan = row[i].colSpan;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// fix rowSpans\r\n\t\t\tif (row[i].rowSpan && row[i].rowSpan > 1) {\r\n\t\t\t\tfor (var j = 1; j < row[i].rowSpan; j++) {\r\n\t\t\t\t\tthis.tableNode.table.body[rowIndex + j][i]._rowSpanCurrentOffset = j;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.rowSpanData[i].rowSpan > 0) {\r\n\t\t\tthis.rowSpanData[i].rowSpan--;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.drawHorizontalLine(rowIndex + 1, writer);\r\n\r\n\tif (this.headerRows && rowIndex === this.headerRows - 1) {\r\n\t\tthis.headerRepeatable = writer.currentBlockToRepeatable();\r\n\t}\r\n\r\n\tif (this.dontBreakRows) {\r\n\t\twriter.tracker.auto('pageChanged',\r\n\t\t\tfunction () {\r\n\t\t\t\tif (!self.headerRows && self.layout.hLineWhenBroken !== false) {\r\n\t\t\t\t\tself.drawHorizontalLine(rowIndex, writer);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfunction () {\r\n\t\t\t\twriter.commitUnbreakableBlock();\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tif (this.headerRepeatable && (rowIndex === (this.rowsWithoutPageBreak - 1) || rowIndex === this.tableNode.table.body.length - 1)) {\r\n\t\twriter.commitUnbreakableBlock();\r\n\t\twriter.pushToRepeatables(this.headerRepeatable);\r\n\t\tthis.cleanUpRepeatables = true;\r\n\t\tthis.headerRepeatable = null;\r\n\t}\r\n\r\n\tfunction getLineXs() {\r\n\t\tvar result = [];\r\n\t\tvar cols = 0;\r\n\r\n\t\tfor (var i = 0, l = self.tableNode.table.body[rowIndex].length; i < l; i++) {\r\n\t\t\tif (!cols) {\r\n\t\t\t\tresult.push({ x: self.rowSpanData[i].left, index: i });\r\n\r\n\t\t\t\tvar item = self.tableNode.table.body[rowIndex][i];\r\n\t\t\t\tcols = (item._colSpan || item.colSpan || 0);\r\n\t\t\t}\r\n\t\t\tif (cols > 0) {\r\n\t\t\t\tcols--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresult.push({ x: self.rowSpanData[self.rowSpanData.length - 1].left, index: self.rowSpanData.length - 1 });\r\n\r\n\t\treturn result;\r\n\t}\r\n};\r\n\r\nmodule.exports = TableProcessor;\r\n\n\n/***/ }),\n\n/***/ 84786:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar isArray = (__webpack_require__(91867).isArray);\r\nvar isPattern = (__webpack_require__(91867).isPattern);\r\nvar getPattern = (__webpack_require__(91867).getPattern);\r\n\r\nfunction groupDecorations(line) {\r\n\tvar groups = [], currentGroup = null;\r\n\tfor (var i = 0, l = line.inlines.length; i < l; i++) {\r\n\t\tvar inline = line.inlines[i];\r\n\t\tvar decoration = inline.decoration;\r\n\t\tif (!decoration) {\r\n\t\t\tcurrentGroup = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tif (!isArray(decoration)) {\r\n\t\t\tdecoration = [decoration];\r\n\t\t}\r\n\t\tvar color = inline.decorationColor || inline.color || 'black';\r\n\t\tvar style = inline.decorationStyle || 'solid';\r\n\t\tfor (var ii = 0, ll = decoration.length; ii < ll; ii++) {\r\n\t\t\tvar decorationItem = decoration[ii];\r\n\t\t\tif (!currentGroup || decorationItem !== currentGroup.decoration ||\r\n\t\t\t\tstyle !== currentGroup.decorationStyle || color !== currentGroup.decorationColor) {\r\n\r\n\t\t\t\tcurrentGroup = {\r\n\t\t\t\t\tline: line,\r\n\t\t\t\t\tdecoration: decorationItem,\r\n\t\t\t\t\tdecorationColor: color,\r\n\t\t\t\t\tdecorationStyle: style,\r\n\t\t\t\t\tinlines: [inline]\r\n\t\t\t\t};\r\n\t\t\t\tgroups.push(currentGroup);\r\n\t\t\t} else {\r\n\t\t\t\tcurrentGroup.inlines.push(inline);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn groups;\r\n}\r\n\r\nfunction drawDecoration(group, x, y, pdfKitDoc) {\r\n\tfunction maxInline() {\r\n\t\tvar max = 0;\r\n\t\tfor (var i = 0, l = group.inlines.length; i < l; i++) {\r\n\t\t\tvar inline = group.inlines[i];\r\n\t\t\tmax = inline.fontSize > max ? i : max;\r\n\t\t}\r\n\t\treturn group.inlines[max];\r\n\t}\r\n\tfunction width() {\r\n\t\tvar sum = 0;\r\n\t\tfor (var i = 0, l = group.inlines.length; i < l; i++) {\r\n\t\t\tvar justifyShift = (group.inlines[i].justifyShift || 0);\r\n\t\t\tsum += group.inlines[i].width + justifyShift;\r\n\t\t}\r\n\t\treturn sum;\r\n\t}\r\n\tvar firstInline = group.inlines[0],\r\n\t\tbiggerInline = maxInline(),\r\n\t\ttotalWidth = width(),\r\n\t\tlineAscent = group.line.getAscenderHeight(),\r\n\t\tascent = biggerInline.font.ascender / 1000 * biggerInline.fontSize,\r\n\t\theight = biggerInline.height,\r\n\t\tdescent = height - ascent;\r\n\r\n\tvar lw = 0.5 + Math.floor(Math.max(biggerInline.fontSize - 8, 0) / 2) * 0.12;\r\n\r\n\tswitch (group.decoration) {\r\n\t\tcase 'underline':\r\n\t\t\ty += lineAscent + descent * 0.45;\r\n\t\t\tbreak;\r\n\t\tcase 'overline':\r\n\t\t\ty += lineAscent - (ascent * 0.85);\r\n\t\t\tbreak;\r\n\t\tcase 'lineThrough':\r\n\t\t\ty += lineAscent - (ascent * 0.25);\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tthrow 'Unknown decoration : ' + group.decoration;\r\n\t}\r\n\tpdfKitDoc.save();\r\n\r\n\tif (group.decorationStyle === 'double') {\r\n\t\tvar gap = Math.max(0.5, lw * 2);\r\n\t\tpdfKitDoc.fillColor(group.decorationColor)\r\n\t\t\t.rect(x + firstInline.x, y - lw / 2, totalWidth, lw / 2).fill()\r\n\t\t\t.rect(x + firstInline.x, y + gap - lw / 2, totalWidth, lw / 2).fill();\r\n\t} else if (group.decorationStyle === 'dashed') {\r\n\t\tvar nbDashes = Math.ceil(totalWidth / (3.96 + 2.84));\r\n\t\tvar rdx = x + firstInline.x;\r\n\t\tpdfKitDoc.rect(rdx, y, totalWidth, lw).clip();\r\n\t\tpdfKitDoc.fillColor(group.decorationColor);\r\n\t\tfor (var i = 0; i < nbDashes; i++) {\r\n\t\t\tpdfKitDoc.rect(rdx, y - lw / 2, 3.96, lw).fill();\r\n\t\t\trdx += 3.96 + 2.84;\r\n\t\t}\r\n\t} else if (group.decorationStyle === 'dotted') {\r\n\t\tvar nbDots = Math.ceil(totalWidth / (lw * 3));\r\n\t\tvar rx = x + firstInline.x;\r\n\t\tpdfKitDoc.rect(rx, y, totalWidth, lw).clip();\r\n\t\tpdfKitDoc.fillColor(group.decorationColor);\r\n\t\tfor (var ii = 0; ii < nbDots; ii++) {\r\n\t\t\tpdfKitDoc.rect(rx, y - lw / 2, lw, lw).fill();\r\n\t\t\trx += (lw * 3);\r\n\t\t}\r\n\t} else if (group.decorationStyle === 'wavy') {\r\n\t\tvar sh = 0.7, sv = 1;\r\n\t\tvar nbWaves = Math.ceil(totalWidth / (sh * 2)) + 1;\r\n\t\tvar rwx = x + firstInline.x - 1;\r\n\t\tpdfKitDoc.rect(x + firstInline.x, y - sv, totalWidth, y + sv).clip();\r\n\t\tpdfKitDoc.lineWidth(0.24);\r\n\t\tpdfKitDoc.moveTo(rwx, y);\r\n\t\tfor (var iii = 0; iii < nbWaves; iii++) {\r\n\t\t\tpdfKitDoc.bezierCurveTo(rwx + sh, y - sv, rwx + sh * 2, y - sv, rwx + sh * 3, y)\r\n\t\t\t\t.bezierCurveTo(rwx + sh * 4, y + sv, rwx + sh * 5, y + sv, rwx + sh * 6, y);\r\n\t\t\trwx += sh * 6;\r\n\t\t}\r\n\t\tpdfKitDoc.stroke(group.decorationColor);\r\n\t} else {\r\n\t\tpdfKitDoc.fillColor(group.decorationColor)\r\n\t\t\t.rect(x + firstInline.x, y - lw / 2, totalWidth, lw)\r\n\t\t\t.fill();\r\n\t}\r\n\tpdfKitDoc.restore();\r\n}\r\n\r\nfunction drawDecorations(line, x, y, pdfKitDoc) {\r\n\tvar groups = groupDecorations(line);\r\n\tfor (var i = 0, l = groups.length; i < l; i++) {\r\n\t\tdrawDecoration(groups[i], x, y, pdfKitDoc);\r\n\t}\r\n}\r\n\r\nfunction drawBackground(line, x, y, patterns, pdfKitDoc) {\r\n\tvar height = line.getHeight();\r\n\tfor (var i = 0, l = line.inlines.length; i < l; i++) {\r\n\t\tvar inline = line.inlines[i];\r\n\t\tif (!inline.background) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tvar color = inline.background;\r\n\t\tif (isPattern(inline.background)) {\r\n\t\t\tcolor = getPattern(inline.background, patterns);\r\n\t\t}\r\n\t\tvar justifyShift = (inline.justifyShift || 0);\r\n\t\tpdfKitDoc.fillColor(color)\r\n\t\t\t.rect(x + inline.x - justifyShift, y, inline.width + justifyShift, height)\r\n\t\t\t.fill();\r\n\t}\r\n}\r\n\r\nmodule.exports = {\r\n\tdrawBackground: drawBackground,\r\n\tdrawDecorations: drawDecorations\r\n};\r\n\n\n/***/ }),\n\n/***/ 11548:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar isString = (__webpack_require__(91867).isString);\r\nvar isNumber = (__webpack_require__(91867).isNumber);\r\nvar isObject = (__webpack_require__(91867).isObject);\r\nvar isArray = (__webpack_require__(91867).isArray);\r\nvar isUndefined = (__webpack_require__(91867).isUndefined);\r\nvar LineBreaker = __webpack_require__(19304);\r\n\r\nvar LEADING = /^(\\s)+/g;\r\nvar TRAILING = /(\\s)+$/g;\r\n\r\n/**\r\n * Creates an instance of TextTools - text measurement utility\r\n *\r\n * @constructor\r\n * @param {FontProvider} fontProvider\r\n */\r\nfunction TextTools(fontProvider) {\r\n\tthis.fontProvider = fontProvider;\r\n}\r\n\r\n/**\r\n * Converts an array of strings (or inline-definition-objects) into a collection\r\n * of inlines and calculated minWidth/maxWidth.\r\n * and their min/max widths\r\n * @param {Object} textArray - an array of inline-definition-objects (or strings)\r\n * @param {Object} styleContextStack current style stack\r\n * @return {Object} collection of inlines, minWidth, maxWidth\r\n */\r\nTextTools.prototype.buildInlines = function (textArray, styleContextStack) {\r\n\tvar measured = measure(this.fontProvider, textArray, styleContextStack);\r\n\r\n\tvar minWidth = 0,\r\n\t\tmaxWidth = 0,\r\n\t\tcurrentLineWidth;\r\n\r\n\tmeasured.forEach(function (inline) {\r\n\t\tminWidth = Math.max(minWidth, inline.width - inline.leadingCut - inline.trailingCut);\r\n\r\n\t\tif (!currentLineWidth) {\r\n\t\t\tcurrentLineWidth = { width: 0, leadingCut: inline.leadingCut, trailingCut: 0 };\r\n\t\t}\r\n\r\n\t\tcurrentLineWidth.width += inline.width;\r\n\t\tcurrentLineWidth.trailingCut = inline.trailingCut;\r\n\r\n\t\tmaxWidth = Math.max(maxWidth, getTrimmedWidth(currentLineWidth));\r\n\r\n\t\tif (inline.lineEnd) {\r\n\t\t\tcurrentLineWidth = null;\r\n\t\t}\r\n\t});\r\n\r\n\tif (getStyleProperty({}, styleContextStack, 'noWrap', false)) {\r\n\t\tminWidth = maxWidth;\r\n\t}\r\n\r\n\treturn {\r\n\t\titems: measured,\r\n\t\tminWidth: minWidth,\r\n\t\tmaxWidth: maxWidth\r\n\t};\r\n\r\n\tfunction getTrimmedWidth(item) {\r\n\t\treturn Math.max(0, item.width - item.leadingCut - item.trailingCut);\r\n\t}\r\n};\r\n\r\n/**\r\n * Returns size of the specified string (without breaking it) using the current style\r\n * @param {String} text text to be measured\r\n * @param {Object} styleContextStack current style stack\r\n * @return {Object} size of the specified string\r\n */\r\nTextTools.prototype.sizeOfString = function (text, styleContextStack) {\r\n\ttext = text ? text.toString().replace(/\\t/g, ' ') : '';\r\n\r\n\t//TODO: refactor - extract from measure\r\n\tvar fontName = getStyleProperty({}, styleContextStack, 'font', 'Roboto');\r\n\tvar fontSize = getStyleProperty({}, styleContextStack, 'fontSize', 12);\r\n\tvar fontFeatures = getStyleProperty({}, styleContextStack, 'fontFeatures', null);\r\n\tvar bold = getStyleProperty({}, styleContextStack, 'bold', false);\r\n\tvar italics = getStyleProperty({}, styleContextStack, 'italics', false);\r\n\tvar lineHeight = getStyleProperty({}, styleContextStack, 'lineHeight', 1);\r\n\tvar characterSpacing = getStyleProperty({}, styleContextStack, 'characterSpacing', 0);\r\n\r\n\tvar font = this.fontProvider.provideFont(fontName, bold, italics);\r\n\r\n\treturn {\r\n\t\twidth: widthOfString(text, font, fontSize, characterSpacing, fontFeatures),\r\n\t\theight: font.lineHeight(fontSize) * lineHeight,\r\n\t\tfontSize: fontSize,\r\n\t\tlineHeight: lineHeight,\r\n\t\tascender: font.ascender / 1000 * fontSize,\r\n\t\tdescender: font.descender / 1000 * fontSize\r\n\t};\r\n};\r\n\r\n/**\r\n * Returns size of the specified rotated string (without breaking it) using the current style\r\n *\r\n * @param {string} text text to be measured\r\n * @param {number} angle\r\n * @param {object} styleContextStack current style stack\r\n * @returns {object} size of the specified string\r\n */\r\nTextTools.prototype.sizeOfRotatedText = function (text, angle, styleContextStack) {\r\n\tvar angleRad = angle * Math.PI / -180;\r\n\tvar size = this.sizeOfString(text, styleContextStack);\r\n\treturn {\r\n\t\twidth: Math.abs(size.height * Math.sin(angleRad)) + Math.abs(size.width * Math.cos(angleRad)),\r\n\t\theight: Math.abs(size.width * Math.sin(angleRad)) + Math.abs(size.height * Math.cos(angleRad))\r\n\t};\r\n}\r\n\r\nTextTools.prototype.widthOfString = function (text, font, fontSize, characterSpacing, fontFeatures) {\r\n\treturn widthOfString(text, font, fontSize, characterSpacing, fontFeatures);\r\n};\r\n\r\nfunction splitWords(text, noWrap) {\r\n\tvar results = [];\r\n\ttext = text.replace(/\\t/g, ' ');\r\n\r\n\tif (noWrap) {\r\n\t\tresults.push({ text: text });\r\n\t\treturn results;\r\n\t}\r\n\r\n\tvar breaker = new LineBreaker(text);\r\n\tvar last = 0;\r\n\tvar bk;\r\n\r\n\twhile (bk = breaker.nextBreak()) {\r\n\t\tvar word = text.slice(last, bk.position);\r\n\r\n\t\tif (bk.required || word.match(/\\r?\\n$|\\r$/)) { // new line\r\n\t\t\tword = word.replace(/\\r?\\n$|\\r$/, '');\r\n\t\t\tresults.push({ text: word, lineEnd: true });\r\n\t\t} else {\r\n\t\t\tresults.push({ text: word });\r\n\t\t}\r\n\r\n\t\tlast = bk.position;\r\n\t}\r\n\r\n\treturn results;\r\n}\r\n\r\nfunction copyStyle(source, destination) {\r\n\tdestination = destination || {};\r\n\tsource = source || {}; //TODO: default style\r\n\r\n\tfor (var key in source) {\r\n\t\tif (key != 'text' && source.hasOwnProperty(key)) {\r\n\t\t\tdestination[key] = source[key];\r\n\t\t}\r\n\t}\r\n\r\n\treturn destination;\r\n}\r\n\r\nfunction normalizeTextArray(array, styleContextStack) {\r\n\tfunction flatten(array) {\r\n\t\treturn array.reduce(function (prev, cur) {\r\n\t\t\tvar current = isArray(cur.text) ? flatten(cur.text) : cur;\r\n\t\t\tvar more = [].concat(current).some(Array.isArray);\r\n\t\t\treturn prev.concat(more ? flatten(current) : current);\r\n\t\t}, []);\r\n\t}\r\n\r\n\tfunction getOneWord(index, words, noWrap) {\r\n\t\tif (isUndefined(words[index])) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (words[index].lineEnd) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar word = words[index].text;\r\n\r\n\t\tif (noWrap) {\r\n\t\t\tvar tmpWords = splitWords(normalizeString(word), false);\r\n\t\t\tif (isUndefined(tmpWords[tmpWords.length - 1])) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tword = tmpWords[tmpWords.length - 1].text;\r\n\t\t}\r\n\r\n\t\treturn word;\r\n\t}\r\n\r\n\tvar results = [];\r\n\r\n\tif (!isArray(array)) {\r\n\t\tarray = [array];\r\n\t}\r\n\r\n\tarray = flatten(array);\r\n\r\n\tvar lastWord = null;\r\n\tfor (var i = 0, l = array.length; i < l; i++) {\r\n\t\tvar item = array[i];\r\n\t\tvar style = null;\r\n\t\tvar words;\r\n\r\n\t\tvar noWrap = getStyleProperty(item || {}, styleContextStack, 'noWrap', false);\r\n\t\tif (isObject(item)) {\r\n\t\t\tif (item._textRef && item._textRef._textNodeRef.text) {\r\n\t\t\t\titem.text = item._textRef._textNodeRef.text;\r\n\t\t\t}\r\n\t\t\twords = splitWords(normalizeString(item.text), noWrap);\r\n\t\t\tstyle = copyStyle(item);\r\n\t\t} else {\r\n\t\t\twords = splitWords(normalizeString(item), noWrap);\r\n\t\t}\r\n\r\n\t\tif (lastWord && words.length) {\r\n\t\t\tvar firstWord = getOneWord(0, words, noWrap);\r\n\r\n\t\t\tvar wrapWords = splitWords(normalizeString(lastWord + firstWord), false);\r\n\t\t\tif (wrapWords.length === 1) {\r\n\t\t\t\tresults[results.length - 1].noNewLine = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i2 = 0, l2 = words.length; i2 < l2; i2++) {\r\n\t\t\tvar result = {\r\n\t\t\t\ttext: words[i2].text\r\n\t\t\t};\r\n\r\n\t\t\tif (words[i2].lineEnd) {\r\n\t\t\t\tresult.lineEnd = true;\r\n\t\t\t}\r\n\r\n\t\t\tcopyStyle(style, result);\r\n\r\n\t\t\tresults.push(result);\r\n\t\t}\r\n\r\n\t\tlastWord = null;\r\n\t\tif (i + 1 < l) {\r\n\t\t\tlastWord = getOneWord(words.length - 1, words, noWrap);\r\n\t\t}\r\n\t}\r\n\r\n\treturn results;\r\n}\r\n\r\nfunction normalizeString(value) {\r\n\tif (value === undefined || value === null) {\r\n\t\treturn '';\r\n\t} else if (isNumber(value)) {\r\n\t\treturn value.toString();\r\n\t} else if (isString(value)) {\r\n\t\treturn value;\r\n\t} else {\r\n\t\treturn value.toString();\r\n\t}\r\n}\r\n\r\nfunction getStyleProperty(item, styleContextStack, property, defaultValue) {\r\n\tvar value;\r\n\r\n\tif (item[property] !== undefined && item[property] !== null) {\r\n\t\t// item defines this property\r\n\t\treturn item[property];\r\n\t}\r\n\r\n\tif (!styleContextStack) {\r\n\t\treturn defaultValue;\r\n\t}\r\n\r\n\tstyleContextStack.auto(item, function () {\r\n\t\tvalue = styleContextStack.getProperty(property);\r\n\t});\r\n\r\n\tif (value !== null && value !== undefined) {\r\n\t\treturn value;\r\n\t} else {\r\n\t\treturn defaultValue;\r\n\t}\r\n}\r\n\r\nfunction measure(fontProvider, textArray, styleContextStack) {\r\n\tvar normalized = normalizeTextArray(textArray, styleContextStack);\r\n\r\n\tif (normalized.length) {\r\n\t\tvar leadingIndent = getStyleProperty(normalized[0], styleContextStack, 'leadingIndent', 0);\r\n\r\n\t\tif (leadingIndent) {\r\n\t\t\tnormalized[0].leadingCut = -leadingIndent;\r\n\t\t\tnormalized[0].leadingIndent = leadingIndent;\r\n\t\t}\r\n\t}\r\n\r\n\tnormalized.forEach(function (item) {\r\n\t\tvar fontName = getStyleProperty(item, styleContextStack, 'font', 'Roboto');\r\n\t\tvar fontSize = getStyleProperty(item, styleContextStack, 'fontSize', 12);\r\n\t\tvar fontFeatures = getStyleProperty(item, styleContextStack, 'fontFeatures', null);\r\n\t\tvar bold = getStyleProperty(item, styleContextStack, 'bold', false);\r\n\t\tvar italics = getStyleProperty(item, styleContextStack, 'italics', false);\r\n\t\tvar color = getStyleProperty(item, styleContextStack, 'color', 'black');\r\n\t\tvar decoration = getStyleProperty(item, styleContextStack, 'decoration', null);\r\n\t\tvar decorationColor = getStyleProperty(item, styleContextStack, 'decorationColor', null);\r\n\t\tvar decorationStyle = getStyleProperty(item, styleContextStack, 'decorationStyle', null);\r\n\t\tvar background = getStyleProperty(item, styleContextStack, 'background', null);\r\n\t\tvar lineHeight = getStyleProperty(item, styleContextStack, 'lineHeight', 1);\r\n\t\tvar characterSpacing = getStyleProperty(item, styleContextStack, 'characterSpacing', 0);\r\n\t\tvar link = getStyleProperty(item, styleContextStack, 'link', null);\r\n\t\tvar linkToPage = getStyleProperty(item, styleContextStack, 'linkToPage', null);\r\n\t\tvar linkToDestination = getStyleProperty(item, styleContextStack, 'linkToDestination', null);\r\n\t\tvar noWrap = getStyleProperty(item, styleContextStack, 'noWrap', null);\r\n\t\tvar preserveLeadingSpaces = getStyleProperty(item, styleContextStack, 'preserveLeadingSpaces', false);\r\n\t\tvar preserveTrailingSpaces = getStyleProperty(item, styleContextStack, 'preserveTrailingSpaces', false);\r\n\t\tvar opacity = getStyleProperty(item, styleContextStack, 'opacity', 1);\r\n\t\tvar sup = getStyleProperty(item, styleContextStack, 'sup', false);\r\n\t\tvar sub = getStyleProperty(item, styleContextStack, 'sub', false);\r\n\r\n\t\tif ((sup || sub) && item.fontSize === undefined) {\r\n\t\t\t// font size reduction taken from here: https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing\r\n\t\t\tfontSize *= 0.58\r\n\t\t}\r\n\r\n\t\tvar font = fontProvider.provideFont(fontName, bold, italics);\r\n\r\n\t\titem.width = widthOfString(item.text, font, fontSize, characterSpacing, fontFeatures);\r\n\t\titem.height = font.lineHeight(fontSize) * lineHeight;\r\n\r\n\t\tif (!item.leadingCut) {\r\n\t\t\titem.leadingCut = 0;\r\n\t\t}\r\n\r\n\t\tvar leadingSpaces;\r\n\t\tif (!preserveLeadingSpaces && (leadingSpaces = item.text.match(LEADING))) {\r\n\t\t\titem.leadingCut += widthOfString(leadingSpaces[0], font, fontSize, characterSpacing, fontFeatures);\r\n\t\t}\r\n\r\n\t\tvar trailingSpaces;\r\n\t\tif (!preserveTrailingSpaces && (trailingSpaces = item.text.match(TRAILING))) {\r\n\t\t\titem.trailingCut = widthOfString(trailingSpaces[0], font, fontSize, characterSpacing, fontFeatures);\r\n\t\t} else {\r\n\t\t\titem.trailingCut = 0;\r\n\t\t}\r\n\r\n\t\titem.alignment = getStyleProperty(item, styleContextStack, 'alignment', 'left');\r\n\t\titem.font = font;\r\n\t\titem.fontSize = fontSize;\r\n\t\titem.fontFeatures = fontFeatures;\r\n\t\titem.characterSpacing = characterSpacing;\r\n\t\titem.color = color;\r\n\t\titem.decoration = decoration;\r\n\t\titem.decorationColor = decorationColor;\r\n\t\titem.decorationStyle = decorationStyle;\r\n\t\titem.background = background;\r\n\t\titem.link = link;\r\n\t\titem.linkToPage = linkToPage;\r\n\t\titem.linkToDestination = linkToDestination;\r\n\t\titem.noWrap = noWrap;\r\n\t\titem.opacity = opacity;\r\n\t\titem.sup = sup;\r\n\t\titem.sub = sub;\r\n\t});\r\n\r\n\treturn normalized;\r\n}\r\n\r\nfunction widthOfString(text, font, fontSize, characterSpacing, fontFeatures) {\r\n\treturn font.widthOfString(text, fontSize, fontFeatures) + ((characterSpacing || 0) * (text.length - 1));\r\n}\r\n\r\nmodule.exports = TextTools;\r\n\n\n/***/ }),\n\n/***/ 2318:\n/***/ (function(module) {\n\n\"use strict\";\n\r\n\r\nfunction TraversalTracker() {\r\n\tthis.events = {};\r\n}\r\n\r\nTraversalTracker.prototype.startTracking = function (event, callback) {\r\n\tvar callbacks = this.events[event] || (this.events[event] = []);\r\n\r\n\tif (callbacks.indexOf(callback) < 0) {\r\n\t\tcallbacks.push(callback);\r\n\t}\r\n};\r\n\r\nTraversalTracker.prototype.stopTracking = function (event, callback) {\r\n\tvar callbacks = this.events[event];\r\n\r\n\tif (!callbacks) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar index = callbacks.indexOf(callback);\r\n\tif (index >= 0) {\r\n\t\tcallbacks.splice(index, 1);\r\n\t}\r\n};\r\n\r\nTraversalTracker.prototype.emit = function (event) {\r\n\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\tvar callbacks = this.events[event];\r\n\r\n\tif (!callbacks) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tcallbacks.forEach(function (callback) {\r\n\t\tcallback.apply(this, args);\r\n\t});\r\n};\r\n\r\nTraversalTracker.prototype.auto = function (event, callback, innerFunction) {\r\n\tthis.startTracking(event, callback);\r\n\tinnerFunction();\r\n\tthis.stopTracking(event, callback);\r\n};\r\n\r\nmodule.exports = TraversalTracker;\r\n\n\n/***/ }),\n\n/***/ 44134:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (b),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof __webpack_require__.g&&__webpack_require__.g.global===__webpack_require__.g?__webpack_require__.g:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:(typeof HTMLAnchorElement !== \"undefined\" && \"download\" in HTMLAnchorElement.prototype)&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g, true&&(module.exports=g)});\n\n\n\n/***/ }),\n\n/***/ 60421:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n/* provided dependency */ var Buffer = __webpack_require__(50621)[\"Buffer\"];\n\n\n__webpack_require__(65292);\n__webpack_require__(73844);\n__webpack_require__(69330);\n__webpack_require__(5597);\n__webpack_require__(7585);\n__webpack_require__(39081);\n__webpack_require__(41584);\n__webpack_require__(11765);\n__webpack_require__(81755);\n__webpack_require__(94845);\n__webpack_require__(80055);\n__webpack_require__(20731);\n__webpack_require__(45337);\n__webpack_require__(23913);\n__webpack_require__(24863);\n__webpack_require__(18828);\n__webpack_require__(7283);\n__webpack_require__(58549);\n__webpack_require__(18756);\n__webpack_require__(75174);\n__webpack_require__(57444);\n__webpack_require__(37309);\n__webpack_require__(14032);\n__webpack_require__(68067);\n__webpack_require__(61726);\n__webpack_require__(74516);\n__webpack_require__(57114);\n__webpack_require__(76014);\n__webpack_require__(65578);\n__webpack_require__(58281);\n__webpack_require__(6422);\n__webpack_require__(28264);\n__webpack_require__(72095);\n__webpack_require__(75626);\n__webpack_require__(47969);\n__webpack_require__(73663);\n__webpack_require__(29883);\n__webpack_require__(35471);\n__webpack_require__(21012);\n__webpack_require__(88997);\n__webpack_require__(97464);\n__webpack_require__(2857);\n__webpack_require__(94715);\n__webpack_require__(13624);\n__webpack_require__(91132);\n__webpack_require__(62514);\n__webpack_require__(24597);\n__webpack_require__(88042);\n__webpack_require__(4660);\n__webpack_require__(92451);\n__webpack_require__(44206);\n__webpack_require__(66288);\n__webpack_require__(13250);\n__webpack_require__(3858);\n__webpack_require__(84538);\n__webpack_require__(64793);\n__webpack_require__(74202);\n__webpack_require__(52529);\n__webpack_require__(42437);\n__webpack_require__(94712);\nvar _;\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\nvar r = _interopDefault(__webpack_require__(57013));\nvar utils = __webpack_require__(76949);\nvar isEqual = _interopDefault(__webpack_require__(45728));\nvar unicode = _interopDefault(__webpack_require__(24766));\nvar UnicodeTrie = _interopDefault(__webpack_require__(41209));\nvar StateMachine = _interopDefault(__webpack_require__(91836));\nvar cloneDeep = _interopDefault(__webpack_require__(41613));\nvar inflate = _interopDefault(__webpack_require__(3483));\nvar brotli = _interopDefault(__webpack_require__(34460));\nvar fs = __webpack_require__(48181);\nvar fontkit = {};\nfontkit.logErrors = false;\nvar formats = [];\nfontkit.registerFormat = function (format) {\n formats.push(format);\n};\nfontkit.openSync = function (filename, postscriptName) {\n var buffer = fs.readFileSync(filename);\n return fontkit.create(buffer, postscriptName);\n};\nfontkit.open = function (filename, postscriptName, callback) {\n if (typeof postscriptName === 'function') {\n callback = postscriptName;\n postscriptName = null;\n }\n fs.readFile(filename, function (err, buffer) {\n if (err) {\n return callback(err);\n }\n try {\n var font = fontkit.create(buffer, postscriptName);\n } catch (e) {\n return callback(e);\n }\n return callback(null, font);\n });\n return;\n};\nfontkit.create = function (buffer, postscriptName) {\n for (var i = 0; i < formats.length; i++) {\n var format = formats[i];\n if (format.probe(buffer)) {\n var font = new format(new r.DecodeStream(buffer));\n if (postscriptName) {\n return font.getFont(postscriptName);\n }\n return font;\n }\n }\n throw new Error('Unknown font format');\n};\nfontkit.defaultLanguage = 'en';\nfontkit.setDefaultLanguage = function (lang) {\n if (lang === void 0) {\n lang = 'en';\n }\n fontkit.defaultLanguage = lang;\n};\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n return desc;\n}\n\n/**\r\n * This decorator caches the results of a getter or method such that\r\n * the results are lazily computed once, and then cached.\r\n * @private\r\n */\nfunction cache(target, key, descriptor) {\n if (descriptor.get) {\n var get = descriptor.get;\n descriptor.get = function () {\n var value = get.call(this);\n Object.defineProperty(this, key, {\n value: value\n });\n return value;\n };\n } else if (typeof descriptor.value === 'function') {\n var fn = descriptor.value;\n return {\n get: function get() {\n var cache = new Map();\n function memoized() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var key = args.length > 0 ? args[0] : 'value';\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = fn.apply(this, args);\n cache.set(key, result);\n return result;\n }\n Object.defineProperty(this, key, {\n value: memoized\n });\n return memoized;\n }\n };\n }\n}\nvar SubHeader = new r.Struct({\n firstCode: r.uint16,\n entryCount: r.uint16,\n idDelta: r.int16,\n idRangeOffset: r.uint16\n});\nvar CmapGroup = new r.Struct({\n startCharCode: r.uint32,\n endCharCode: r.uint32,\n glyphID: r.uint32\n});\nvar UnicodeValueRange = new r.Struct({\n startUnicodeValue: r.uint24,\n additionalCount: r.uint8\n});\nvar UVSMapping = new r.Struct({\n unicodeValue: r.uint24,\n glyphID: r.uint16\n});\nvar DefaultUVS = new r.Array(UnicodeValueRange, r.uint32);\nvar NonDefaultUVS = new r.Array(UVSMapping, r.uint32);\nvar VarSelectorRecord = new r.Struct({\n varSelector: r.uint24,\n defaultUVS: new r.Pointer(r.uint32, DefaultUVS, {\n type: 'parent'\n }),\n nonDefaultUVS: new r.Pointer(r.uint32, NonDefaultUVS, {\n type: 'parent'\n })\n});\nvar CmapSubtable = new r.VersionedStruct(r.uint16, {\n 0: {\n // Byte encoding\n length: r.uint16,\n // Total table length in bytes (set to 262 for format 0)\n language: r.uint16,\n // Language code for this encoding subtable, or zero if language-independent\n codeMap: new r.LazyArray(r.uint8, 256)\n },\n 2: {\n // High-byte mapping (CJK)\n length: r.uint16,\n language: r.uint16,\n subHeaderKeys: new r.Array(r.uint16, 256),\n subHeaderCount: function subHeaderCount(t) {\n return Math.max.apply(Math, t.subHeaderKeys);\n },\n subHeaders: new r.LazyArray(SubHeader, 'subHeaderCount'),\n glyphIndexArray: new r.LazyArray(r.uint16, 'subHeaderCount')\n },\n 4: {\n // Segment mapping to delta values\n length: r.uint16,\n // Total table length in bytes\n language: r.uint16,\n // Language code\n segCountX2: r.uint16,\n segCount: function segCount(t) {\n return t.segCountX2 >> 1;\n },\n searchRange: r.uint16,\n entrySelector: r.uint16,\n rangeShift: r.uint16,\n endCode: new r.LazyArray(r.uint16, 'segCount'),\n reservedPad: new r.Reserved(r.uint16),\n // This value should be zero\n startCode: new r.LazyArray(r.uint16, 'segCount'),\n idDelta: new r.LazyArray(r.int16, 'segCount'),\n idRangeOffset: new r.LazyArray(r.uint16, 'segCount'),\n glyphIndexArray: new r.LazyArray(r.uint16, function (t) {\n return (t.length - t._currentOffset) / 2;\n })\n },\n 6: {\n // Trimmed table\n length: r.uint16,\n language: r.uint16,\n firstCode: r.uint16,\n entryCount: r.uint16,\n glyphIndices: new r.LazyArray(r.uint16, 'entryCount')\n },\n 8: {\n // mixed 16-bit and 32-bit coverage\n reserved: new r.Reserved(r.uint16),\n length: r.uint32,\n language: r.uint16,\n is32: new r.LazyArray(r.uint8, 8192),\n nGroups: r.uint32,\n groups: new r.LazyArray(CmapGroup, 'nGroups')\n },\n 10: {\n // Trimmed Array\n reserved: new r.Reserved(r.uint16),\n length: r.uint32,\n language: r.uint32,\n firstCode: r.uint32,\n entryCount: r.uint32,\n glyphIndices: new r.LazyArray(r.uint16, 'numChars')\n },\n 12: {\n // Segmented coverage\n reserved: new r.Reserved(r.uint16),\n length: r.uint32,\n language: r.uint32,\n nGroups: r.uint32,\n groups: new r.LazyArray(CmapGroup, 'nGroups')\n },\n 13: {\n // Many-to-one range mappings (same as 12 except for group.startGlyphID)\n reserved: new r.Reserved(r.uint16),\n length: r.uint32,\n language: r.uint32,\n nGroups: r.uint32,\n groups: new r.LazyArray(CmapGroup, 'nGroups')\n },\n 14: {\n // Unicode Variation Sequences\n length: r.uint32,\n numRecords: r.uint32,\n varSelectors: new r.LazyArray(VarSelectorRecord, 'numRecords')\n }\n});\nvar CmapEntry = new r.Struct({\n platformID: r.uint16,\n // Platform identifier\n encodingID: r.uint16,\n // Platform-specific encoding identifier\n table: new r.Pointer(r.uint32, CmapSubtable, {\n type: 'parent',\n lazy: true\n })\n}); // character to glyph mapping\n\nvar cmap = new r.Struct({\n version: r.uint16,\n numSubtables: r.uint16,\n tables: new r.Array(CmapEntry, 'numSubtables')\n});\nvar head = new r.Struct({\n version: r.int32,\n // 0x00010000 (version 1.0)\n revision: r.int32,\n // set by font manufacturer\n checkSumAdjustment: r.uint32,\n magicNumber: r.uint32,\n // set to 0x5F0F3CF5\n flags: r.uint16,\n unitsPerEm: r.uint16,\n // range from 64 to 16384\n created: new r.Array(r.int32, 2),\n modified: new r.Array(r.int32, 2),\n xMin: r.int16,\n // for all glyph bounding boxes\n yMin: r.int16,\n // for all glyph bounding boxes\n xMax: r.int16,\n // for all glyph bounding boxes\n yMax: r.int16,\n // for all glyph bounding boxes\n macStyle: new r.Bitfield(r.uint16, ['bold', 'italic', 'underline', 'outline', 'shadow', 'condensed', 'extended']),\n lowestRecPPEM: r.uint16,\n // smallest readable size in pixels\n fontDirectionHint: r.int16,\n indexToLocFormat: r.int16,\n // 0 for short offsets, 1 for long\n glyphDataFormat: r.int16 // 0 for current format\n});\nvar hhea = new r.Struct({\n version: r.int32,\n ascent: r.int16,\n // Distance from baseline of highest ascender\n descent: r.int16,\n // Distance from baseline of lowest descender\n lineGap: r.int16,\n // Typographic line gap\n advanceWidthMax: r.uint16,\n // Maximum advance width value in 'hmtx' table\n minLeftSideBearing: r.int16,\n // Maximum advance width value in 'hmtx' table\n minRightSideBearing: r.int16,\n // Minimum right sidebearing value\n xMaxExtent: r.int16,\n caretSlopeRise: r.int16,\n // Used to calculate the slope of the cursor (rise/run); 1 for vertical\n caretSlopeRun: r.int16,\n // 0 for vertical\n caretOffset: r.int16,\n // Set to 0 for non-slanted fonts\n reserved: new r.Reserved(r.int16, 4),\n metricDataFormat: r.int16,\n // 0 for current format\n numberOfMetrics: r.uint16 // Number of advance widths in 'hmtx' table\n});\nvar HmtxEntry = new r.Struct({\n advance: r.uint16,\n bearing: r.int16\n});\nvar hmtx = new r.Struct({\n metrics: new r.LazyArray(HmtxEntry, function (t) {\n return t.parent.hhea.numberOfMetrics;\n }),\n bearings: new r.LazyArray(r.int16, function (t) {\n return t.parent.maxp.numGlyphs - t.parent.hhea.numberOfMetrics;\n })\n});\nvar maxp = new r.Struct({\n version: r.int32,\n numGlyphs: r.uint16,\n // The number of glyphs in the font\n maxPoints: r.uint16,\n // Maximum points in a non-composite glyph\n maxContours: r.uint16,\n // Maximum contours in a non-composite glyph\n maxComponentPoints: r.uint16,\n // Maximum points in a composite glyph\n maxComponentContours: r.uint16,\n // Maximum contours in a composite glyph\n maxZones: r.uint16,\n // 1 if instructions do not use the twilight zone, 2 otherwise\n maxTwilightPoints: r.uint16,\n // Maximum points used in Z0\n maxStorage: r.uint16,\n // Number of Storage Area locations\n maxFunctionDefs: r.uint16,\n // Number of FDEFs\n maxInstructionDefs: r.uint16,\n // Number of IDEFs\n maxStackElements: r.uint16,\n // Maximum stack depth\n maxSizeOfInstructions: r.uint16,\n // Maximum byte count for glyph instructions\n maxComponentElements: r.uint16,\n // Maximum number of components referenced at “top level” for any composite glyph\n maxComponentDepth: r.uint16 // Maximum levels of recursion; 1 for simple components\n});\n\n/**\r\n * Gets an encoding name from platform, encoding, and language ids.\r\n * Returned encoding names can be used in iconv-lite to decode text.\r\n */\nfunction getEncoding(platformID, encodingID, languageID) {\n if (languageID === void 0) {\n languageID = 0;\n }\n if (platformID === 1 && MAC_LANGUAGE_ENCODINGS[languageID]) {\n return MAC_LANGUAGE_ENCODINGS[languageID];\n }\n return ENCODINGS[platformID][encodingID];\n} // Map of platform ids to encoding ids.\n\nvar ENCODINGS = [\n// unicode\n['utf16be', 'utf16be', 'utf16be', 'utf16be', 'utf16be', 'utf16be'],\n// macintosh\n// Mappings available at http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/\n// 0\tRoman 17\tMalayalam\n// 1\tJapanese\t 18\tSinhalese\n// 2\tTraditional Chinese\t 19\tBurmese\n// 3\tKorean\t 20\tKhmer\n// 4\tArabic\t 21\tThai\n// 5\tHebrew\t 22\tLaotian\n// 6\tGreek\t 23\tGeorgian\n// 7\tRussian\t 24\tArmenian\n// 8\tRSymbol\t 25\tSimplified Chinese\n// 9\tDevanagari\t 26\tTibetan\n// 10\tGurmukhi\t 27\tMongolian\n// 11\tGujarati\t 28\tGeez\n// 12\tOriya\t 29\tSlavic\n// 13\tBengali\t 30\tVietnamese\n// 14\tTamil\t 31\tSindhi\n// 15\tTelugu\t 32\t(Uninterpreted)\n// 16\tKannada\n['macroman', 'shift-jis', 'big5', 'euc-kr', 'iso-8859-6', 'iso-8859-8', 'macgreek', 'maccyrillic', 'symbol', 'Devanagari', 'Gurmukhi', 'Gujarati', 'Oriya', 'Bengali', 'Tamil', 'Telugu', 'Kannada', 'Malayalam', 'Sinhalese', 'Burmese', 'Khmer', 'macthai', 'Laotian', 'Georgian', 'Armenian', 'gb-2312-80', 'Tibetan', 'Mongolian', 'Geez', 'maccenteuro', 'Vietnamese', 'Sindhi'],\n// ISO (deprecated)\n['ascii'],\n// windows\n// Docs here: http://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx\n['symbol', 'utf16be', 'shift-jis', 'gb18030', 'big5', 'wansung', 'johab', null, null, null, 'utf16be']]; // Overrides for Mac scripts by language id.\n// See http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt\n\nvar MAC_LANGUAGE_ENCODINGS = {\n 15: 'maciceland',\n 17: 'macturkish',\n 18: 'maccroatian',\n 24: 'maccenteuro',\n 25: 'maccenteuro',\n 26: 'maccenteuro',\n 27: 'maccenteuro',\n 28: 'maccenteuro',\n 30: 'maciceland',\n 37: 'macromania',\n 38: 'maccenteuro',\n 39: 'maccenteuro',\n 40: 'maccenteuro',\n 143: 'macinuit',\n // Unsupported by iconv-lite\n 146: 'macgaelic' // Unsupported by iconv-lite\n}; // Map of platform ids to BCP-47 language codes.\n\nvar LANGUAGES = [\n// unicode\n[], {\n // macintosh\n 0: 'en',\n 30: 'fo',\n 60: 'ks',\n 90: 'rw',\n 1: 'fr',\n 31: 'fa',\n 61: 'ku',\n 91: 'rn',\n 2: 'de',\n 32: 'ru',\n 62: 'sd',\n 92: 'ny',\n 3: 'it',\n 33: 'zh',\n 63: 'bo',\n 93: 'mg',\n 4: 'nl',\n 34: 'nl-BE',\n 64: 'ne',\n 94: 'eo',\n 5: 'sv',\n 35: 'ga',\n 65: 'sa',\n 128: 'cy',\n 6: 'es',\n 36: 'sq',\n 66: 'mr',\n 129: 'eu',\n 7: 'da',\n 37: 'ro',\n 67: 'bn',\n 130: 'ca',\n 8: 'pt',\n 38: 'cz',\n 68: 'as',\n 131: 'la',\n 9: 'no',\n 39: 'sk',\n 69: 'gu',\n 132: 'qu',\n 10: 'he',\n 40: 'si',\n 70: 'pa',\n 133: 'gn',\n 11: 'ja',\n 41: 'yi',\n 71: 'or',\n 134: 'ay',\n 12: 'ar',\n 42: 'sr',\n 72: 'ml',\n 135: 'tt',\n 13: 'fi',\n 43: 'mk',\n 73: 'kn',\n 136: 'ug',\n 14: 'el',\n 44: 'bg',\n 74: 'ta',\n 137: 'dz',\n 15: 'is',\n 45: 'uk',\n 75: 'te',\n 138: 'jv',\n 16: 'mt',\n 46: 'be',\n 76: 'si',\n 139: 'su',\n 17: 'tr',\n 47: 'uz',\n 77: 'my',\n 140: 'gl',\n 18: 'hr',\n 48: 'kk',\n 78: 'km',\n 141: 'af',\n 19: 'zh-Hant',\n 49: 'az-Cyrl',\n 79: 'lo',\n 142: 'br',\n 20: 'ur',\n 50: 'az-Arab',\n 80: 'vi',\n 143: 'iu',\n 21: 'hi',\n 51: 'hy',\n 81: 'id',\n 144: 'gd',\n 22: 'th',\n 52: 'ka',\n 82: 'tl',\n 145: 'gv',\n 23: 'ko',\n 53: 'mo',\n 83: 'ms',\n 146: 'ga',\n 24: 'lt',\n 54: 'ky',\n 84: 'ms-Arab',\n 147: 'to',\n 25: 'pl',\n 55: 'tg',\n 85: 'am',\n 148: 'el-polyton',\n 26: 'hu',\n 56: 'tk',\n 86: 'ti',\n 149: 'kl',\n 27: 'es',\n 57: 'mn-CN',\n 87: 'om',\n 150: 'az',\n 28: 'lv',\n 58: 'mn',\n 88: 'so',\n 151: 'nn',\n 29: 'se',\n 59: 'ps',\n 89: 'sw'\n},\n// ISO (deprecated)\n[], {\n // windows \n 0x0436: 'af',\n 0x4009: 'en-IN',\n 0x0487: 'rw',\n 0x0432: 'tn',\n 0x041C: 'sq',\n 0x1809: 'en-IE',\n 0x0441: 'sw',\n 0x045B: 'si',\n 0x0484: 'gsw',\n 0x2009: 'en-JM',\n 0x0457: 'kok',\n 0x041B: 'sk',\n 0x045E: 'am',\n 0x4409: 'en-MY',\n 0x0412: 'ko',\n 0x0424: 'sl',\n 0x1401: 'ar-DZ',\n 0x1409: 'en-NZ',\n 0x0440: 'ky',\n 0x2C0A: 'es-AR',\n 0x3C01: 'ar-BH',\n 0x3409: 'en-PH',\n 0x0454: 'lo',\n 0x400A: 'es-BO',\n 0x0C01: 'ar',\n 0x4809: 'en-SG',\n 0x0426: 'lv',\n 0x340A: 'es-CL',\n 0x0801: 'ar-IQ',\n 0x1C09: 'en-ZA',\n 0x0427: 'lt',\n 0x240A: 'es-CO',\n 0x2C01: 'ar-JO',\n 0x2C09: 'en-TT',\n 0x082E: 'dsb',\n 0x140A: 'es-CR',\n 0x3401: 'ar-KW',\n 0x0809: 'en-GB',\n 0x046E: 'lb',\n 0x1C0A: 'es-DO',\n 0x3001: 'ar-LB',\n 0x0409: 'en',\n 0x042F: 'mk',\n 0x300A: 'es-EC',\n 0x1001: 'ar-LY',\n 0x3009: 'en-ZW',\n 0x083E: 'ms-BN',\n 0x440A: 'es-SV',\n 0x1801: 'ary',\n 0x0425: 'et',\n 0x043E: 'ms',\n 0x100A: 'es-GT',\n 0x2001: 'ar-OM',\n 0x0438: 'fo',\n 0x044C: 'ml',\n 0x480A: 'es-HN',\n 0x4001: 'ar-QA',\n 0x0464: 'fil',\n 0x043A: 'mt',\n 0x080A: 'es-MX',\n 0x0401: 'ar-SA',\n 0x040B: 'fi',\n 0x0481: 'mi',\n 0x4C0A: 'es-NI',\n 0x2801: 'ar-SY',\n 0x080C: 'fr-BE',\n 0x047A: 'arn',\n 0x180A: 'es-PA',\n 0x1C01: 'aeb',\n 0x0C0C: 'fr-CA',\n 0x044E: 'mr',\n 0x3C0A: 'es-PY',\n 0x3801: 'ar-AE',\n 0x040C: 'fr',\n 0x047C: 'moh',\n 0x280A: 'es-PE',\n 0x2401: 'ar-YE',\n 0x140C: 'fr-LU',\n 0x0450: 'mn',\n 0x500A: 'es-PR',\n 0x042B: 'hy',\n 0x180C: 'fr-MC',\n 0x0850: 'mn-CN',\n 0x0C0A: 'es',\n 0x044D: 'as',\n 0x100C: 'fr-CH',\n 0x0461: 'ne',\n 0x040A: 'es',\n 0x082C: 'az-Cyrl',\n 0x0462: 'fy',\n 0x0414: 'nb',\n 0x540A: 'es-US',\n 0x042C: 'az',\n 0x0456: 'gl',\n 0x0814: 'nn',\n 0x380A: 'es-UY',\n 0x046D: 'ba',\n 0x0437: 'ka',\n 0x0482: 'oc',\n 0x200A: 'es-VE',\n 0x042D: 'eu',\n 0x0C07: 'de-AT',\n 0x0448: 'or',\n 0x081D: 'sv-FI',\n 0x0423: 'be',\n 0x0407: 'de',\n 0x0463: 'ps',\n 0x041D: 'sv',\n 0x0845: 'bn',\n 0x1407: 'de-LI',\n 0x0415: 'pl',\n 0x045A: 'syr',\n 0x0445: 'bn-IN',\n 0x1007: 'de-LU',\n 0x0416: 'pt',\n 0x0428: 'tg',\n 0x201A: 'bs-Cyrl',\n 0x0807: 'de-CH',\n 0x0816: 'pt-PT',\n 0x085F: 'tzm',\n 0x141A: 'bs',\n 0x0408: 'el',\n 0x0446: 'pa',\n 0x0449: 'ta',\n 0x047E: 'br',\n 0x046F: 'kl',\n 0x046B: 'qu-BO',\n 0x0444: 'tt',\n 0x0402: 'bg',\n 0x0447: 'gu',\n 0x086B: 'qu-EC',\n 0x044A: 'te',\n 0x0403: 'ca',\n 0x0468: 'ha',\n 0x0C6B: 'qu',\n 0x041E: 'th',\n 0x0C04: 'zh-HK',\n 0x040D: 'he',\n 0x0418: 'ro',\n 0x0451: 'bo',\n 0x1404: 'zh-MO',\n 0x0439: 'hi',\n 0x0417: 'rm',\n 0x041F: 'tr',\n 0x0804: 'zh',\n 0x040E: 'hu',\n 0x0419: 'ru',\n 0x0442: 'tk',\n 0x1004: 'zh-SG',\n 0x040F: 'is',\n 0x243B: 'smn',\n 0x0480: 'ug',\n 0x0404: 'zh-TW',\n 0x0470: 'ig',\n 0x103B: 'smj-NO',\n 0x0422: 'uk',\n 0x0483: 'co',\n 0x0421: 'id',\n 0x143B: 'smj',\n 0x042E: 'hsb',\n 0x041A: 'hr',\n 0x045D: 'iu',\n 0x0C3B: 'se-FI',\n 0x0420: 'ur',\n 0x101A: 'hr-BA',\n 0x085D: 'iu-Latn',\n 0x043B: 'se',\n 0x0843: 'uz-Cyrl',\n 0x0405: 'cs',\n 0x083C: 'ga',\n 0x083B: 'se-SE',\n 0x0443: 'uz',\n 0x0406: 'da',\n 0x0434: 'xh',\n 0x203B: 'sms',\n 0x042A: 'vi',\n 0x048C: 'prs',\n 0x0435: 'zu',\n 0x183B: 'sma-NO',\n 0x0452: 'cy',\n 0x0465: 'dv',\n 0x0410: 'it',\n 0x1C3B: 'sms',\n 0x0488: 'wo',\n 0x0813: 'nl-BE',\n 0x0810: 'it-CH',\n 0x044F: 'sa',\n 0x0485: 'sah',\n 0x0413: 'nl',\n 0x0411: 'ja',\n 0x1C1A: 'sr-Cyrl-BA',\n 0x0478: 'ii',\n 0x0C09: 'en-AU',\n 0x044B: 'kn',\n 0x0C1A: 'sr',\n 0x046A: 'yo',\n 0x2809: 'en-BZ',\n 0x043F: 'kk',\n 0x181A: 'sr-Latn-BA',\n 0x1009: 'en-CA',\n 0x0453: 'km',\n 0x081A: 'sr-Latn',\n 0x2409: 'en-029',\n 0x0486: 'quc',\n 0x046C: 'nso'\n}];\nvar NameRecord = new r.Struct({\n platformID: r.uint16,\n encodingID: r.uint16,\n languageID: r.uint16,\n nameID: r.uint16,\n length: r.uint16,\n string: new r.Pointer(r.uint16, new r.String('length', function (t) {\n return getEncoding(t.platformID, t.encodingID, t.languageID);\n }), {\n type: 'parent',\n relativeTo: function relativeTo(ctx) {\n return ctx.parent.stringOffset;\n },\n allowNull: false\n })\n});\nvar LangTagRecord = new r.Struct({\n length: r.uint16,\n tag: new r.Pointer(r.uint16, new r.String('length', 'utf16be'), {\n type: 'parent',\n relativeTo: function relativeTo(ctx) {\n return ctx.stringOffset;\n }\n })\n});\nvar NameTable = new r.VersionedStruct(r.uint16, {\n 0: {\n count: r.uint16,\n stringOffset: r.uint16,\n records: new r.Array(NameRecord, 'count')\n },\n 1: {\n count: r.uint16,\n stringOffset: r.uint16,\n records: new r.Array(NameRecord, 'count'),\n langTagCount: r.uint16,\n langTags: new r.Array(LangTagRecord, 'langTagCount')\n }\n});\nvar NAMES = ['copyright', 'fontFamily', 'fontSubfamily', 'uniqueSubfamily', 'fullName', 'version', 'postscriptName',\n// Note: A font may have only one PostScript name and that name must be ASCII.\n'trademark', 'manufacturer', 'designer', 'description', 'vendorURL', 'designerURL', 'license', 'licenseURL', null,\n// reserved\n'preferredFamily', 'preferredSubfamily', 'compatibleFull', 'sampleText', 'postscriptCIDFontName', 'wwsFamilyName', 'wwsSubfamilyName'];\nNameTable.process = function (stream) {\n var records = {};\n for (var _iterator = _createForOfIteratorHelperLoose(this.records), _step; !(_step = _iterator()).done;) {\n var record = _step.value;\n // find out what language this is for\n var language = LANGUAGES[record.platformID][record.languageID];\n if (language == null && this.langTags != null && record.languageID >= 0x8000) {\n language = this.langTags[record.languageID - 0x8000].tag;\n }\n if (language == null) {\n language = record.platformID + '-' + record.languageID;\n } // if the nameID is >= 256, it is a font feature record (AAT)\n\n var key = record.nameID >= 256 ? 'fontFeatures' : NAMES[record.nameID] || record.nameID;\n if (records[key] == null) {\n records[key] = {};\n }\n var obj = records[key];\n if (record.nameID >= 256) {\n obj = obj[record.nameID] || (obj[record.nameID] = {});\n }\n if (typeof record.string === 'string' || typeof obj[language] !== 'string') {\n obj[language] = record.string;\n }\n }\n this.records = records;\n};\nNameTable.preEncode = function () {\n if (Array.isArray(this.records)) return;\n this.version = 0;\n var records = [];\n for (var key in this.records) {\n var val = this.records[key];\n if (key === 'fontFeatures') continue;\n records.push({\n platformID: 3,\n encodingID: 1,\n languageID: 0x409,\n nameID: NAMES.indexOf(key),\n length: Buffer.byteLength(val.en, 'utf16le'),\n string: val.en\n });\n if (key === 'postscriptName') {\n records.push({\n platformID: 1,\n encodingID: 0,\n languageID: 0,\n nameID: NAMES.indexOf(key),\n length: val.en.length,\n string: val.en\n });\n }\n }\n this.records = records;\n this.count = records.length;\n this.stringOffset = NameTable.size(this, null, false);\n};\nvar OS2 = new r.VersionedStruct(r.uint16, {\n header: {\n xAvgCharWidth: r.int16,\n // average weighted advance width of lower case letters and space\n usWeightClass: r.uint16,\n // visual weight of stroke in glyphs\n usWidthClass: r.uint16,\n // relative change from the normal aspect ratio (width to height ratio)\n fsType: new r.Bitfield(r.uint16, [\n // Indicates font embedding licensing rights\n null, 'noEmbedding', 'viewOnly', 'editable', null, null, null, null, 'noSubsetting', 'bitmapOnly']),\n ySubscriptXSize: r.int16,\n // recommended horizontal size in pixels for subscripts\n ySubscriptYSize: r.int16,\n // recommended vertical size in pixels for subscripts\n ySubscriptXOffset: r.int16,\n // recommended horizontal offset for subscripts\n ySubscriptYOffset: r.int16,\n // recommended vertical offset form the baseline for subscripts\n ySuperscriptXSize: r.int16,\n // recommended horizontal size in pixels for superscripts\n ySuperscriptYSize: r.int16,\n // recommended vertical size in pixels for superscripts\n ySuperscriptXOffset: r.int16,\n // recommended horizontal offset for superscripts\n ySuperscriptYOffset: r.int16,\n // recommended vertical offset from the baseline for superscripts\n yStrikeoutSize: r.int16,\n // width of the strikeout stroke\n yStrikeoutPosition: r.int16,\n // position of the strikeout stroke relative to the baseline\n sFamilyClass: r.int16,\n // classification of font-family design\n panose: new r.Array(r.uint8, 10),\n // describe the visual characteristics of a given typeface\n ulCharRange: new r.Array(r.uint32, 4),\n vendorID: new r.String(4),\n // four character identifier for the font vendor\n fsSelection: new r.Bitfield(r.uint16, [\n // bit field containing information about the font\n 'italic', 'underscore', 'negative', 'outlined', 'strikeout', 'bold', 'regular', 'useTypoMetrics', 'wws', 'oblique']),\n usFirstCharIndex: r.uint16,\n // The minimum Unicode index in this font\n usLastCharIndex: r.uint16 // The maximum Unicode index in this font\n },\n // The Apple version of this table ends here, but the Microsoft one continues on...\n 0: {},\n 1: {\n typoAscender: r.int16,\n typoDescender: r.int16,\n typoLineGap: r.int16,\n winAscent: r.uint16,\n winDescent: r.uint16,\n codePageRange: new r.Array(r.uint32, 2)\n },\n 2: {\n // these should be common with version 1 somehow\n typoAscender: r.int16,\n typoDescender: r.int16,\n typoLineGap: r.int16,\n winAscent: r.uint16,\n winDescent: r.uint16,\n codePageRange: new r.Array(r.uint32, 2),\n xHeight: r.int16,\n capHeight: r.int16,\n defaultChar: r.uint16,\n breakChar: r.uint16,\n maxContent: r.uint16\n },\n 5: {\n typoAscender: r.int16,\n typoDescender: r.int16,\n typoLineGap: r.int16,\n winAscent: r.uint16,\n winDescent: r.uint16,\n codePageRange: new r.Array(r.uint32, 2),\n xHeight: r.int16,\n capHeight: r.int16,\n defaultChar: r.uint16,\n breakChar: r.uint16,\n maxContent: r.uint16,\n usLowerOpticalPointSize: r.uint16,\n usUpperOpticalPointSize: r.uint16\n }\n});\nvar versions = OS2.versions;\nversions[3] = versions[4] = versions[2];\nvar post = new r.VersionedStruct(r.fixed32, {\n header: {\n // these fields exist at the top of all versions\n italicAngle: r.fixed32,\n // Italic angle in counter-clockwise degrees from the vertical.\n underlinePosition: r.int16,\n // Suggested distance of the top of the underline from the baseline\n underlineThickness: r.int16,\n // Suggested values for the underline thickness\n isFixedPitch: r.uint32,\n // Whether the font is monospaced\n minMemType42: r.uint32,\n // Minimum memory usage when a TrueType font is downloaded as a Type 42 font\n maxMemType42: r.uint32,\n // Maximum memory usage when a TrueType font is downloaded as a Type 42 font\n minMemType1: r.uint32,\n // Minimum memory usage when a TrueType font is downloaded as a Type 1 font\n maxMemType1: r.uint32 // Maximum memory usage when a TrueType font is downloaded as a Type 1 font\n },\n 1: {},\n // version 1 has no additional fields\n 2: {\n numberOfGlyphs: r.uint16,\n glyphNameIndex: new r.Array(r.uint16, 'numberOfGlyphs'),\n names: new r.Array(new r.String(r.uint8))\n },\n 2.5: {\n numberOfGlyphs: r.uint16,\n offsets: new r.Array(r.uint8, 'numberOfGlyphs')\n },\n 3: {},\n // version 3 has no additional fields\n 4: {\n map: new r.Array(r.uint32, function (t) {\n return t.parent.maxp.numGlyphs;\n })\n }\n});\nvar cvt = new r.Struct({\n controlValues: new r.Array(r.int16)\n});\n\n// These instructions are known as the font program. The main use of this table\n// is for the definition of functions that are used in many different glyph programs.\n\nvar fpgm = new r.Struct({\n instructions: new r.Array(r.uint8)\n});\nvar loca = new r.VersionedStruct('head.indexToLocFormat', {\n 0: {\n offsets: new r.Array(r.uint16)\n },\n 1: {\n offsets: new r.Array(r.uint32)\n }\n});\nloca.process = function () {\n if (this.version === 0) {\n for (var i = 0; i < this.offsets.length; i++) {\n this.offsets[i] <<= 1;\n }\n }\n};\nloca.preEncode = function () {\n if (this.version === 0) {\n for (var i = 0; i < this.offsets.length; i++) {\n this.offsets[i] >>>= 1;\n }\n }\n};\nvar prep = new r.Struct({\n controlValueProgram: new r.Array(r.uint8)\n});\nvar glyf = new r.Array(new r.Buffer());\nvar CFFIndex = /*#__PURE__*/function () {\n function CFFIndex(type) {\n this.type = type;\n }\n var _proto = CFFIndex.prototype;\n _proto.getCFFVersion = function getCFFVersion(ctx) {\n while (ctx && !ctx.hdrSize) {\n ctx = ctx.parent;\n }\n return ctx ? ctx.version : -1;\n };\n _proto.decode = function decode(stream, parent) {\n var version = this.getCFFVersion(parent);\n var count = version >= 2 ? stream.readUInt32BE() : stream.readUInt16BE();\n if (count === 0) {\n return [];\n }\n var offSize = stream.readUInt8();\n var offsetType;\n if (offSize === 1) {\n offsetType = r.uint8;\n } else if (offSize === 2) {\n offsetType = r.uint16;\n } else if (offSize === 3) {\n offsetType = r.uint24;\n } else if (offSize === 4) {\n offsetType = r.uint32;\n } else {\n throw new Error(\"Bad offset size in CFFIndex: \".concat(offSize, \" \").concat(stream.pos));\n }\n var ret = [];\n var startPos = stream.pos + (count + 1) * offSize - 1;\n var start = offsetType.decode(stream);\n for (var i = 0; i < count; i++) {\n var end = offsetType.decode(stream);\n if (this.type != null) {\n var pos = stream.pos;\n stream.pos = startPos + start;\n parent.length = end - start;\n ret.push(this.type.decode(stream, parent));\n stream.pos = pos;\n } else {\n ret.push({\n offset: startPos + start,\n length: end - start\n });\n }\n start = end;\n }\n stream.pos = startPos + start;\n return ret;\n };\n _proto.size = function size(arr, parent) {\n var size = 2;\n if (arr.length === 0) {\n return size;\n }\n var type = this.type || new r.Buffer(); // find maximum offset to detminine offset type\n\n var offset = 1;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n offset += type.size(item, parent);\n }\n var offsetType;\n if (offset <= 0xff) {\n offsetType = r.uint8;\n } else if (offset <= 0xffff) {\n offsetType = r.uint16;\n } else if (offset <= 0xffffff) {\n offsetType = r.uint24;\n } else if (offset <= 0xffffffff) {\n offsetType = r.uint32;\n } else {\n throw new Error(\"Bad offset in CFFIndex\");\n }\n size += 1 + offsetType.size() * (arr.length + 1);\n size += offset - 1;\n return size;\n };\n _proto.encode = function encode(stream, arr, parent) {\n stream.writeUInt16BE(arr.length);\n if (arr.length === 0) {\n return;\n }\n var type = this.type || new r.Buffer(); // find maximum offset to detminine offset type\n\n var sizes = [];\n var offset = 1;\n for (var _iterator2 = _createForOfIteratorHelperLoose(arr), _step2; !(_step2 = _iterator2()).done;) {\n var item = _step2.value;\n var s = type.size(item, parent);\n sizes.push(s);\n offset += s;\n }\n var offsetType;\n if (offset <= 0xff) {\n offsetType = r.uint8;\n } else if (offset <= 0xffff) {\n offsetType = r.uint16;\n } else if (offset <= 0xffffff) {\n offsetType = r.uint24;\n } else if (offset <= 0xffffffff) {\n offsetType = r.uint32;\n } else {\n throw new Error(\"Bad offset in CFFIndex\");\n } // write offset size\n\n stream.writeUInt8(offsetType.size()); // write elements\n\n offset = 1;\n offsetType.encode(stream, offset);\n for (var _i22 = 0, _sizes = sizes; _i22 < _sizes.length; _i22++) {\n var size = _sizes[_i22];\n offset += size;\n offsetType.encode(stream, offset);\n }\n for (var _iterator3 = _createForOfIteratorHelperLoose(arr), _step3; !(_step3 = _iterator3()).done;) {\n var _item = _step3.value;\n type.encode(stream, _item, parent);\n }\n return;\n };\n return CFFIndex;\n}();\nvar FLOAT_EOF = 0xf;\nvar FLOAT_LOOKUP = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-'];\nvar FLOAT_ENCODE_LOOKUP = {\n '.': 10,\n 'E': 11,\n 'E-': 12,\n '-': 14\n};\nvar CFFOperand = /*#__PURE__*/function () {\n function CFFOperand() {}\n CFFOperand.decode = function decode(stream, value) {\n if (32 <= value && value <= 246) {\n return value - 139;\n }\n if (247 <= value && value <= 250) {\n return (value - 247) * 256 + stream.readUInt8() + 108;\n }\n if (251 <= value && value <= 254) {\n return -(value - 251) * 256 - stream.readUInt8() - 108;\n }\n if (value === 28) {\n return stream.readInt16BE();\n }\n if (value === 29) {\n return stream.readInt32BE();\n }\n if (value === 30) {\n var str = '';\n while (true) {\n var b = stream.readUInt8();\n var n1 = b >> 4;\n if (n1 === FLOAT_EOF) {\n break;\n }\n str += FLOAT_LOOKUP[n1];\n var n2 = b & 15;\n if (n2 === FLOAT_EOF) {\n break;\n }\n str += FLOAT_LOOKUP[n2];\n }\n return parseFloat(str);\n }\n return null;\n };\n CFFOperand.size = function size(value) {\n // if the value needs to be forced to the largest size (32 bit)\n // e.g. for unknown pointers, set to 32768\n if (value.forceLarge) {\n value = 32768;\n }\n if ((value | 0) !== value) {\n // floating point\n var str = '' + value;\n return 1 + Math.ceil((str.length + 1) / 2);\n } else if (-107 <= value && value <= 107) {\n return 1;\n } else if (108 <= value && value <= 1131 || -1131 <= value && value <= -108) {\n return 2;\n } else if (-32768 <= value && value <= 32767) {\n return 3;\n } else {\n return 5;\n }\n };\n CFFOperand.encode = function encode(stream, value) {\n // if the value needs to be forced to the largest size (32 bit)\n // e.g. for unknown pointers, save the old value and set to 32768\n var val = Number(value);\n if (value.forceLarge) {\n stream.writeUInt8(29);\n return stream.writeInt32BE(val);\n } else if ((val | 0) !== val) {\n // floating point\n stream.writeUInt8(30);\n var str = '' + val;\n for (var i = 0; i < str.length; i += 2) {\n var c1 = str[i];\n var n1 = FLOAT_ENCODE_LOOKUP[c1] || +c1;\n if (i === str.length - 1) {\n var n2 = FLOAT_EOF;\n } else {\n var c2 = str[i + 1];\n var n2 = FLOAT_ENCODE_LOOKUP[c2] || +c2;\n }\n stream.writeUInt8(n1 << 4 | n2 & 15);\n }\n if (n2 !== FLOAT_EOF) {\n return stream.writeUInt8(FLOAT_EOF << 4);\n }\n } else if (-107 <= val && val <= 107) {\n return stream.writeUInt8(val + 139);\n } else if (108 <= val && val <= 1131) {\n val -= 108;\n stream.writeUInt8((val >> 8) + 247);\n return stream.writeUInt8(val & 0xff);\n } else if (-1131 <= val && val <= -108) {\n val = -val - 108;\n stream.writeUInt8((val >> 8) + 251);\n return stream.writeUInt8(val & 0xff);\n } else if (-32768 <= val && val <= 32767) {\n stream.writeUInt8(28);\n return stream.writeInt16BE(val);\n } else {\n stream.writeUInt8(29);\n return stream.writeInt32BE(val);\n }\n };\n return CFFOperand;\n}();\nvar CFFDict = /*#__PURE__*/function () {\n function CFFDict(ops) {\n if (ops === void 0) {\n ops = [];\n }\n this.ops = ops;\n this.fields = {};\n for (var _iterator4 = _createForOfIteratorHelperLoose(ops), _step4; !(_step4 = _iterator4()).done;) {\n var field = _step4.value;\n var key = Array.isArray(field[0]) ? field[0][0] << 8 | field[0][1] : field[0];\n this.fields[key] = field;\n }\n }\n var _proto2 = CFFDict.prototype;\n _proto2.decodeOperands = function decodeOperands(type, stream, ret, operands) {\n var _this = this;\n if (Array.isArray(type)) {\n return operands.map(function (op, i) {\n return _this.decodeOperands(type[i], stream, ret, [op]);\n });\n } else if (type.decode != null) {\n return type.decode(stream, ret, operands);\n } else {\n switch (type) {\n case 'number':\n case 'offset':\n case 'sid':\n return operands[0];\n case 'boolean':\n return !!operands[0];\n default:\n return operands;\n }\n }\n };\n _proto2.encodeOperands = function encodeOperands(type, stream, ctx, operands) {\n var _this2 = this;\n if (Array.isArray(type)) {\n return operands.map(function (op, i) {\n return _this2.encodeOperands(type[i], stream, ctx, op)[0];\n });\n } else if (type.encode != null) {\n return type.encode(stream, operands, ctx);\n } else if (typeof operands === 'number') {\n return [operands];\n } else if (typeof operands === 'boolean') {\n return [+operands];\n } else if (Array.isArray(operands)) {\n return operands;\n } else {\n return [operands];\n }\n };\n _proto2.decode = function decode(stream, parent) {\n var end = stream.pos + parent.length;\n var ret = {};\n var operands = []; // define hidden properties\n\n Object.defineProperties(ret, {\n parent: {\n value: parent\n },\n _startOffset: {\n value: stream.pos\n }\n }); // fill in defaults\n\n for (var key in this.fields) {\n var field = this.fields[key];\n ret[field[1]] = field[3];\n }\n while (stream.pos < end) {\n var b = stream.readUInt8();\n if (b < 28) {\n if (b === 12) {\n b = b << 8 | stream.readUInt8();\n }\n var _field = this.fields[b];\n if (!_field) {\n throw new Error(\"Unknown operator \".concat(b));\n }\n var val = this.decodeOperands(_field[2], stream, ret, operands);\n if (val != null) {\n if (val instanceof utils.PropertyDescriptor) {\n Object.defineProperty(ret, _field[1], val);\n } else {\n ret[_field[1]] = val;\n }\n }\n operands = [];\n } else {\n operands.push(CFFOperand.decode(stream, b));\n }\n }\n return ret;\n };\n _proto2.size = function size(dict, parent, includePointers) {\n if (includePointers === void 0) {\n includePointers = true;\n }\n var ctx = {\n parent: parent,\n val: dict,\n pointerSize: 0,\n startOffset: parent.startOffset || 0\n };\n var len = 0;\n for (var k in this.fields) {\n var field = this.fields[k];\n var val = dict[field[1]];\n if (val == null || isEqual(val, field[3])) {\n continue;\n }\n var operands = this.encodeOperands(field[2], null, ctx, val);\n for (var _iterator5 = _createForOfIteratorHelperLoose(operands), _step5; !(_step5 = _iterator5()).done;) {\n var op = _step5.value;\n len += CFFOperand.size(op);\n }\n var key = Array.isArray(field[0]) ? field[0] : [field[0]];\n len += key.length;\n }\n if (includePointers) {\n len += ctx.pointerSize;\n }\n return len;\n };\n _proto2.encode = function encode(stream, dict, parent) {\n var ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent: parent,\n val: dict,\n pointerSize: 0\n };\n ctx.pointerOffset = stream.pos + this.size(dict, ctx, false);\n for (var _iterator6 = _createForOfIteratorHelperLoose(this.ops), _step6; !(_step6 = _iterator6()).done;) {\n var field = _step6.value;\n var val = dict[field[1]];\n if (val == null || isEqual(val, field[3])) {\n continue;\n }\n var operands = this.encodeOperands(field[2], stream, ctx, val);\n for (var _iterator7 = _createForOfIteratorHelperLoose(operands), _step7; !(_step7 = _iterator7()).done;) {\n var op = _step7.value;\n CFFOperand.encode(stream, op);\n }\n var key = Array.isArray(field[0]) ? field[0] : [field[0]];\n for (var _iterator8 = _createForOfIteratorHelperLoose(key), _step8; !(_step8 = _iterator8()).done;) {\n var _op = _step8.value;\n stream.writeUInt8(_op);\n }\n }\n var i = 0;\n while (i < ctx.pointers.length) {\n var ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val, ptr.parent);\n }\n return;\n };\n return CFFDict;\n}();\nvar CFFPointer = /*#__PURE__*/function (_r$Pointer) {\n _inheritsLoose(CFFPointer, _r$Pointer);\n function CFFPointer(type, options) {\n if (options === void 0) {\n options = {};\n }\n if (options.type == null) {\n options.type = 'global';\n }\n return _r$Pointer.call(this, null, type, options) || this;\n }\n var _proto3 = CFFPointer.prototype;\n _proto3.decode = function decode(stream, parent, operands) {\n this.offsetType = {\n decode: function decode() {\n return operands[0];\n }\n };\n return _r$Pointer.prototype.decode.call(this, stream, parent, operands);\n };\n _proto3.encode = function encode(stream, value, ctx) {\n if (!stream) {\n // compute the size (so ctx.pointerSize is correct)\n this.offsetType = {\n size: function size() {\n return 0;\n }\n };\n this.size(value, ctx);\n return [new Ptr(0)];\n }\n var ptr = null;\n this.offsetType = {\n encode: function encode(stream, val) {\n return ptr = val;\n }\n };\n _r$Pointer.prototype.encode.call(this, stream, value, ctx);\n return [new Ptr(ptr)];\n };\n return CFFPointer;\n}(r.Pointer);\nvar Ptr = /*#__PURE__*/function () {\n function Ptr(val) {\n this.val = val;\n this.forceLarge = true;\n }\n var _proto4 = Ptr.prototype;\n _proto4.valueOf = function valueOf() {\n return this.val;\n };\n return Ptr;\n}();\nvar CFFBlendOp = /*#__PURE__*/function () {\n function CFFBlendOp() {}\n CFFBlendOp.decode = function decode(stream, parent, operands) {\n var numBlends = operands.pop(); // TODO: actually blend. For now just consume the deltas\n // since we don't use any of the values anyway.\n\n while (operands.length > numBlends) {\n operands.pop();\n }\n };\n return CFFBlendOp;\n}();\nvar CFFPrivateDict = new CFFDict([\n// key name type default\n[6, 'BlueValues', 'delta', null], [7, 'OtherBlues', 'delta', null], [8, 'FamilyBlues', 'delta', null], [9, 'FamilyOtherBlues', 'delta', null], [[12, 9], 'BlueScale', 'number', 0.039625], [[12, 10], 'BlueShift', 'number', 7], [[12, 11], 'BlueFuzz', 'number', 1], [10, 'StdHW', 'number', null], [11, 'StdVW', 'number', null], [[12, 12], 'StemSnapH', 'delta', null], [[12, 13], 'StemSnapV', 'delta', null], [[12, 14], 'ForceBold', 'boolean', false], [[12, 17], 'LanguageGroup', 'number', 0], [[12, 18], 'ExpansionFactor', 'number', 0.06], [[12, 19], 'initialRandomSeed', 'number', 0], [20, 'defaultWidthX', 'number', 0], [21, 'nominalWidthX', 'number', 0], [22, 'vsindex', 'number', 0], [23, 'blend', CFFBlendOp, null], [19, 'Subrs', new CFFPointer(new CFFIndex(), {\n type: 'local'\n}), null]]);\n\n// Automatically generated from Appendix A of the CFF specification; do\n// not edit. Length should be 391.\nvar standardStrings = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\", \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"];\nvar StandardEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls'];\nvar ExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];\nvar ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron'];\nvar ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];\nvar ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior'];\n\n// Scripts and Languages #\n//########################\n\nvar LangSysTable = new r.Struct({\n reserved: new r.Reserved(r.uint16),\n reqFeatureIndex: r.uint16,\n featureCount: r.uint16,\n featureIndexes: new r.Array(r.uint16, 'featureCount')\n});\nvar LangSysRecord = new r.Struct({\n tag: new r.String(4),\n langSys: new r.Pointer(r.uint16, LangSysTable, {\n type: 'parent'\n })\n});\nvar Script = new r.Struct({\n defaultLangSys: new r.Pointer(r.uint16, LangSysTable),\n count: r.uint16,\n langSysRecords: new r.Array(LangSysRecord, 'count')\n});\nvar ScriptRecord = new r.Struct({\n tag: new r.String(4),\n script: new r.Pointer(r.uint16, Script, {\n type: 'parent'\n })\n});\nvar ScriptList = new r.Array(ScriptRecord, r.uint16); //#######################\n// Features and Lookups #\n//#######################\n\nvar Feature = new r.Struct({\n featureParams: r.uint16,\n // pointer\n lookupCount: r.uint16,\n lookupListIndexes: new r.Array(r.uint16, 'lookupCount')\n});\nvar FeatureRecord = new r.Struct({\n tag: new r.String(4),\n feature: new r.Pointer(r.uint16, Feature, {\n type: 'parent'\n })\n});\nvar FeatureList = new r.Array(FeatureRecord, r.uint16);\nvar LookupFlags = new r.Struct({\n markAttachmentType: r.uint8,\n flags: new r.Bitfield(r.uint8, ['rightToLeft', 'ignoreBaseGlyphs', 'ignoreLigatures', 'ignoreMarks', 'useMarkFilteringSet'])\n});\nfunction LookupList(SubTable) {\n var Lookup = new r.Struct({\n lookupType: r.uint16,\n flags: LookupFlags,\n subTableCount: r.uint16,\n subTables: new r.Array(new r.Pointer(r.uint16, SubTable), 'subTableCount'),\n markFilteringSet: new r.Optional(r.uint16, function (t) {\n return t.flags.flags.useMarkFilteringSet;\n })\n });\n return new r.LazyArray(new r.Pointer(r.uint16, Lookup), r.uint16);\n} //#################\n// Coverage Table #\n//#################\n\nvar RangeRecord = new r.Struct({\n start: r.uint16,\n end: r.uint16,\n startCoverageIndex: r.uint16\n});\nvar Coverage = new r.VersionedStruct(r.uint16, {\n 1: {\n glyphCount: r.uint16,\n glyphs: new r.Array(r.uint16, 'glyphCount')\n },\n 2: {\n rangeCount: r.uint16,\n rangeRecords: new r.Array(RangeRecord, 'rangeCount')\n }\n}); //#########################\n// Class Definition Table #\n//#########################\n\nvar ClassRangeRecord = new r.Struct({\n start: r.uint16,\n end: r.uint16,\n class: r.uint16\n});\nvar ClassDef = new r.VersionedStruct(r.uint16, {\n 1: {\n // Class array\n startGlyph: r.uint16,\n glyphCount: r.uint16,\n classValueArray: new r.Array(r.uint16, 'glyphCount')\n },\n 2: {\n // Class ranges\n classRangeCount: r.uint16,\n classRangeRecord: new r.Array(ClassRangeRecord, 'classRangeCount')\n }\n}); //###############\n// Device Table #\n//###############\n\nvar Device = new r.Struct({\n a: r.uint16,\n // startSize for hinting Device, outerIndex for VariationIndex\n b: r.uint16,\n // endSize for Device, innerIndex for VariationIndex\n deltaFormat: r.uint16\n}); //#############################################\n// Contextual Substitution/Positioning Tables #\n//#############################################\n\nvar LookupRecord = new r.Struct({\n sequenceIndex: r.uint16,\n lookupListIndex: r.uint16\n});\nvar Rule = new r.Struct({\n glyphCount: r.uint16,\n lookupCount: r.uint16,\n input: new r.Array(r.uint16, function (t) {\n return t.glyphCount - 1;\n }),\n lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n});\nvar RuleSet = new r.Array(new r.Pointer(r.uint16, Rule), r.uint16);\nvar ClassRule = new r.Struct({\n glyphCount: r.uint16,\n lookupCount: r.uint16,\n classes: new r.Array(r.uint16, function (t) {\n return t.glyphCount - 1;\n }),\n lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n});\nvar ClassSet = new r.Array(new r.Pointer(r.uint16, ClassRule), r.uint16);\nvar Context = new r.VersionedStruct(r.uint16, {\n 1: {\n // Simple context\n coverage: new r.Pointer(r.uint16, Coverage),\n ruleSetCount: r.uint16,\n ruleSets: new r.Array(new r.Pointer(r.uint16, RuleSet), 'ruleSetCount')\n },\n 2: {\n // Class-based context\n coverage: new r.Pointer(r.uint16, Coverage),\n classDef: new r.Pointer(r.uint16, ClassDef),\n classSetCnt: r.uint16,\n classSet: new r.Array(new r.Pointer(r.uint16, ClassSet), 'classSetCnt')\n },\n 3: {\n glyphCount: r.uint16,\n lookupCount: r.uint16,\n coverages: new r.Array(new r.Pointer(r.uint16, Coverage), 'glyphCount'),\n lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n }\n}); //######################################################\n// Chaining Contextual Substitution/Positioning Tables #\n//######################################################\n\nvar ChainRule = new r.Struct({\n backtrackGlyphCount: r.uint16,\n backtrack: new r.Array(r.uint16, 'backtrackGlyphCount'),\n inputGlyphCount: r.uint16,\n input: new r.Array(r.uint16, function (t) {\n return t.inputGlyphCount - 1;\n }),\n lookaheadGlyphCount: r.uint16,\n lookahead: new r.Array(r.uint16, 'lookaheadGlyphCount'),\n lookupCount: r.uint16,\n lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n});\nvar ChainRuleSet = new r.Array(new r.Pointer(r.uint16, ChainRule), r.uint16);\nvar ChainingContext = new r.VersionedStruct(r.uint16, {\n 1: {\n // Simple context glyph substitution\n coverage: new r.Pointer(r.uint16, Coverage),\n chainCount: r.uint16,\n chainRuleSets: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')\n },\n 2: {\n // Class-based chaining context\n coverage: new r.Pointer(r.uint16, Coverage),\n backtrackClassDef: new r.Pointer(r.uint16, ClassDef),\n inputClassDef: new r.Pointer(r.uint16, ClassDef),\n lookaheadClassDef: new r.Pointer(r.uint16, ClassDef),\n chainCount: r.uint16,\n chainClassSet: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')\n },\n 3: {\n // Coverage-based chaining context\n backtrackGlyphCount: r.uint16,\n backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),\n inputGlyphCount: r.uint16,\n inputCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'inputGlyphCount'),\n lookaheadGlyphCount: r.uint16,\n lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),\n lookupCount: r.uint16,\n lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n }\n});\n\n/*******************\r\n * Variation Store *\r\n *******************/\n\nvar F2DOT14 = new r.Fixed(16, 'BE', 14);\nvar RegionAxisCoordinates = new r.Struct({\n startCoord: F2DOT14,\n peakCoord: F2DOT14,\n endCoord: F2DOT14\n});\nvar VariationRegionList = new r.Struct({\n axisCount: r.uint16,\n regionCount: r.uint16,\n variationRegions: new r.Array(new r.Array(RegionAxisCoordinates, 'axisCount'), 'regionCount')\n});\nvar DeltaSet = new r.Struct({\n shortDeltas: new r.Array(r.int16, function (t) {\n return t.parent.shortDeltaCount;\n }),\n regionDeltas: new r.Array(r.int8, function (t) {\n return t.parent.regionIndexCount - t.parent.shortDeltaCount;\n }),\n deltas: function deltas(t) {\n return t.shortDeltas.concat(t.regionDeltas);\n }\n});\nvar ItemVariationData = new r.Struct({\n itemCount: r.uint16,\n shortDeltaCount: r.uint16,\n regionIndexCount: r.uint16,\n regionIndexes: new r.Array(r.uint16, 'regionIndexCount'),\n deltaSets: new r.Array(DeltaSet, 'itemCount')\n});\nvar ItemVariationStore = new r.Struct({\n format: r.uint16,\n variationRegionList: new r.Pointer(r.uint32, VariationRegionList),\n variationDataCount: r.uint16,\n itemVariationData: new r.Array(new r.Pointer(r.uint32, ItemVariationData), 'variationDataCount')\n});\n/**********************\r\n * Feature Variations *\r\n **********************/\n\nvar ConditionTable = new r.VersionedStruct(r.uint16, {\n 1: (_ = {\n axisIndex: r.uint16\n }, _[\"axisIndex\"] = r.uint16, _.filterRangeMinValue = F2DOT14, _.filterRangeMaxValue = F2DOT14, _)\n});\nvar ConditionSet = new r.Struct({\n conditionCount: r.uint16,\n conditionTable: new r.Array(new r.Pointer(r.uint32, ConditionTable), 'conditionCount')\n});\nvar FeatureTableSubstitutionRecord = new r.Struct({\n featureIndex: r.uint16,\n alternateFeatureTable: new r.Pointer(r.uint32, Feature, {\n type: 'parent'\n })\n});\nvar FeatureTableSubstitution = new r.Struct({\n version: r.fixed32,\n substitutionCount: r.uint16,\n substitutions: new r.Array(FeatureTableSubstitutionRecord, 'substitutionCount')\n});\nvar FeatureVariationRecord = new r.Struct({\n conditionSet: new r.Pointer(r.uint32, ConditionSet, {\n type: 'parent'\n }),\n featureTableSubstitution: new r.Pointer(r.uint32, FeatureTableSubstitution, {\n type: 'parent'\n })\n});\nvar FeatureVariations = new r.Struct({\n majorVersion: r.uint16,\n minorVersion: r.uint16,\n featureVariationRecordCount: r.uint32,\n featureVariationRecords: new r.Array(FeatureVariationRecord, 'featureVariationRecordCount')\n});\n\n// otherwise delegates to the provided type.\nvar PredefinedOp = /*#__PURE__*/function () {\n function PredefinedOp(predefinedOps, type) {\n this.predefinedOps = predefinedOps;\n this.type = type;\n }\n var _proto5 = PredefinedOp.prototype;\n _proto5.decode = function decode(stream, parent, operands) {\n if (this.predefinedOps[operands[0]]) {\n return this.predefinedOps[operands[0]];\n }\n return this.type.decode(stream, parent, operands);\n };\n _proto5.size = function size(value, ctx) {\n return this.type.size(value, ctx);\n };\n _proto5.encode = function encode(stream, value, ctx) {\n var index = this.predefinedOps.indexOf(value);\n if (index !== -1) {\n return index;\n }\n return this.type.encode(stream, value, ctx);\n };\n return PredefinedOp;\n}();\nvar CFFEncodingVersion = /*#__PURE__*/function (_r$Number) {\n _inheritsLoose(CFFEncodingVersion, _r$Number);\n function CFFEncodingVersion() {\n return _r$Number.call(this, 'UInt8') || this;\n }\n var _proto6 = CFFEncodingVersion.prototype;\n _proto6.decode = function decode(stream) {\n return r.uint8.decode(stream) & 0x7f;\n };\n return CFFEncodingVersion;\n}(r.Number);\nvar Range1 = new r.Struct({\n first: r.uint16,\n nLeft: r.uint8\n});\nvar Range2 = new r.Struct({\n first: r.uint16,\n nLeft: r.uint16\n});\nvar CFFCustomEncoding = new r.VersionedStruct(new CFFEncodingVersion(), {\n 0: {\n nCodes: r.uint8,\n codes: new r.Array(r.uint8, 'nCodes')\n },\n 1: {\n nRanges: r.uint8,\n ranges: new r.Array(Range1, 'nRanges')\n } // TODO: supplement?\n});\nvar CFFEncoding = new PredefinedOp([StandardEncoding, ExpertEncoding], new CFFPointer(CFFCustomEncoding, {\n lazy: true\n})); // Decodes an array of ranges until the total\n// length is equal to the provided length.\nvar RangeArray = /*#__PURE__*/function (_r$Array) {\n _inheritsLoose(RangeArray, _r$Array);\n function RangeArray() {\n return _r$Array.apply(this, arguments) || this;\n }\n var _proto7 = RangeArray.prototype;\n _proto7.decode = function decode(stream, parent) {\n var length = utils.resolveLength(this.length, stream, parent);\n var count = 0;\n var res = [];\n while (count < length) {\n var range = this.type.decode(stream, parent);\n range.offset = count;\n count += range.nLeft + 1;\n res.push(range);\n }\n return res;\n };\n return RangeArray;\n}(r.Array);\nvar CFFCustomCharset = new r.VersionedStruct(r.uint8, {\n 0: {\n glyphs: new r.Array(r.uint16, function (t) {\n return t.parent.CharStrings.length - 1;\n })\n },\n 1: {\n ranges: new RangeArray(Range1, function (t) {\n return t.parent.CharStrings.length - 1;\n })\n },\n 2: {\n ranges: new RangeArray(Range2, function (t) {\n return t.parent.CharStrings.length - 1;\n })\n }\n});\nvar CFFCharset = new PredefinedOp([ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset], new CFFPointer(CFFCustomCharset, {\n lazy: true\n}));\nvar FDRange3 = new r.Struct({\n first: r.uint16,\n fd: r.uint8\n});\nvar FDRange4 = new r.Struct({\n first: r.uint32,\n fd: r.uint16\n});\nvar FDSelect = new r.VersionedStruct(r.uint8, {\n 0: {\n fds: new r.Array(r.uint8, function (t) {\n return t.parent.CharStrings.length;\n })\n },\n 3: {\n nRanges: r.uint16,\n ranges: new r.Array(FDRange3, 'nRanges'),\n sentinel: r.uint16\n },\n 4: {\n nRanges: r.uint32,\n ranges: new r.Array(FDRange4, 'nRanges'),\n sentinel: r.uint32\n }\n});\nvar ptr = new CFFPointer(CFFPrivateDict);\nvar CFFPrivateOp = /*#__PURE__*/function () {\n function CFFPrivateOp() {}\n var _proto8 = CFFPrivateOp.prototype;\n _proto8.decode = function decode(stream, parent, operands) {\n parent.length = operands[0];\n return ptr.decode(stream, parent, [operands[1]]);\n };\n _proto8.size = function size(dict, ctx) {\n return [CFFPrivateDict.size(dict, ctx, false), ptr.size(dict, ctx)[0]];\n };\n _proto8.encode = function encode(stream, dict, ctx) {\n return [CFFPrivateDict.size(dict, ctx, false), ptr.encode(stream, dict, ctx)[0]];\n };\n return CFFPrivateOp;\n}();\nvar FontDict = new CFFDict([\n// key name type(s) default\n[18, 'Private', new CFFPrivateOp(), null], [[12, 38], 'FontName', 'sid', null], [[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [[12, 5], 'PaintType', 'number', 0]]);\nvar CFFTopDict = new CFFDict([\n// key name type(s) default\n[[12, 30], 'ROS', ['sid', 'sid', 'number'], null], [0, 'version', 'sid', null], [1, 'Notice', 'sid', null], [[12, 0], 'Copyright', 'sid', null], [2, 'FullName', 'sid', null], [3, 'FamilyName', 'sid', null], [4, 'Weight', 'sid', null], [[12, 1], 'isFixedPitch', 'boolean', false], [[12, 2], 'ItalicAngle', 'number', 0], [[12, 3], 'UnderlinePosition', 'number', -100], [[12, 4], 'UnderlineThickness', 'number', 50], [[12, 5], 'PaintType', 'number', 0], [[12, 6], 'CharstringType', 'number', 2], [[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [13, 'UniqueID', 'number', null], [5, 'FontBBox', 'array', [0, 0, 0, 0]], [[12, 8], 'StrokeWidth', 'number', 0], [14, 'XUID', 'array', null], [15, 'charset', CFFCharset, ISOAdobeCharset], [16, 'Encoding', CFFEncoding, StandardEncoding], [17, 'CharStrings', new CFFPointer(new CFFIndex()), null], [18, 'Private', new CFFPrivateOp(), null], [[12, 20], 'SyntheticBase', 'number', null], [[12, 21], 'PostScript', 'sid', null], [[12, 22], 'BaseFontName', 'sid', null], [[12, 23], 'BaseFontBlend', 'delta', null],\n// CID font specific\n[[12, 31], 'CIDFontVersion', 'number', 0], [[12, 32], 'CIDFontRevision', 'number', 0], [[12, 33], 'CIDFontType', 'number', 0], [[12, 34], 'CIDCount', 'number', 8720], [[12, 35], 'UIDBase', 'number', null], [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null], [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null], [[12, 38], 'FontName', 'sid', null]]);\nvar VariationStore = new r.Struct({\n length: r.uint16,\n itemVariationStore: ItemVariationStore\n});\nvar CFF2TopDict = new CFFDict([[[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [17, 'CharStrings', new CFFPointer(new CFFIndex()), null], [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null], [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null], [24, 'vstore', new CFFPointer(VariationStore), null], [25, 'maxstack', 'number', 193]]);\nvar CFFTop = new r.VersionedStruct(r.fixed16, {\n 1: {\n hdrSize: r.uint8,\n offSize: r.uint8,\n nameIndex: new CFFIndex(new r.String('length')),\n topDictIndex: new CFFIndex(CFFTopDict),\n stringIndex: new CFFIndex(new r.String('length')),\n globalSubrIndex: new CFFIndex()\n },\n 2: {\n hdrSize: r.uint8,\n length: r.uint16,\n topDict: CFF2TopDict,\n globalSubrIndex: new CFFIndex()\n }\n});\nvar CFFFont = /*#__PURE__*/function () {\n function CFFFont(stream) {\n this.stream = stream;\n this.decode();\n }\n CFFFont.decode = function decode(stream) {\n return new CFFFont(stream);\n };\n var _proto9 = CFFFont.prototype;\n _proto9.decode = function decode() {\n var start = this.stream.pos;\n var top = CFFTop.decode(this.stream);\n for (var key in top) {\n var val = top[key];\n this[key] = val;\n }\n if (this.version < 2) {\n if (this.topDictIndex.length !== 1) {\n throw new Error(\"Only a single font is allowed in CFF\");\n }\n this.topDict = this.topDictIndex[0];\n }\n this.isCIDFont = this.topDict.ROS != null;\n return this;\n };\n _proto9.string = function string(sid) {\n if (this.version >= 2) {\n return null;\n }\n if (sid < standardStrings.length) {\n return standardStrings[sid];\n }\n return this.stringIndex[sid - standardStrings.length];\n };\n _proto9.getCharString = function getCharString(glyph) {\n this.stream.pos = this.topDict.CharStrings[glyph].offset;\n return this.stream.readBuffer(this.topDict.CharStrings[glyph].length);\n };\n _proto9.getGlyphName = function getGlyphName(gid) {\n // CFF2 glyph names are in the post table.\n if (this.version >= 2) {\n return null;\n } // CID-keyed fonts don't have glyph names\n\n if (this.isCIDFont) {\n return null;\n }\n var charset = this.topDict.charset;\n if (Array.isArray(charset)) {\n return charset[gid];\n }\n if (gid === 0) {\n return '.notdef';\n }\n gid -= 1;\n switch (charset.version) {\n case 0:\n return this.string(charset.glyphs[gid]);\n case 1:\n case 2:\n for (var i = 0; i < charset.ranges.length; i++) {\n var range = charset.ranges[i];\n if (range.offset <= gid && gid <= range.offset + range.nLeft) {\n return this.string(range.first + (gid - range.offset));\n }\n }\n break;\n }\n return null;\n };\n _proto9.fdForGlyph = function fdForGlyph(gid) {\n if (!this.topDict.FDSelect) {\n return null;\n }\n switch (this.topDict.FDSelect.version) {\n case 0:\n return this.topDict.FDSelect.fds[gid];\n case 3:\n case 4:\n var ranges = this.topDict.FDSelect.ranges;\n var low = 0;\n var high = ranges.length - 1;\n while (low <= high) {\n var mid = low + high >> 1;\n if (gid < ranges[mid].first) {\n high = mid - 1;\n } else if (mid < high && gid >= ranges[mid + 1].first) {\n low = mid + 1;\n } else {\n return ranges[mid].fd;\n }\n }\n default:\n throw new Error(\"Unknown FDSelect version: \".concat(this.topDict.FDSelect.version));\n }\n };\n _proto9.privateDictForGlyph = function privateDictForGlyph(gid) {\n if (this.topDict.FDSelect) {\n var fd = this.fdForGlyph(gid);\n if (this.topDict.FDArray[fd]) {\n return this.topDict.FDArray[fd].Private;\n }\n return null;\n }\n if (this.version < 2) {\n return this.topDict.Private;\n }\n return this.topDict.FDArray[0].Private;\n };\n _createClass(CFFFont, [{\n key: \"postscriptName\",\n get: function get() {\n if (this.version < 2) {\n return this.nameIndex[0];\n }\n return null;\n }\n }, {\n key: \"fullName\",\n get: function get() {\n return this.string(this.topDict.FullName);\n }\n }, {\n key: \"familyName\",\n get: function get() {\n return this.string(this.topDict.FamilyName);\n }\n }]);\n return CFFFont;\n}();\nvar VerticalOrigin = new r.Struct({\n glyphIndex: r.uint16,\n vertOriginY: r.int16\n});\nvar VORG = new r.Struct({\n majorVersion: r.uint16,\n minorVersion: r.uint16,\n defaultVertOriginY: r.int16,\n numVertOriginYMetrics: r.uint16,\n metrics: new r.Array(VerticalOrigin, 'numVertOriginYMetrics')\n});\nvar BigMetrics = new r.Struct({\n height: r.uint8,\n width: r.uint8,\n horiBearingX: r.int8,\n horiBearingY: r.int8,\n horiAdvance: r.uint8,\n vertBearingX: r.int8,\n vertBearingY: r.int8,\n vertAdvance: r.uint8\n});\nvar SmallMetrics = new r.Struct({\n height: r.uint8,\n width: r.uint8,\n bearingX: r.int8,\n bearingY: r.int8,\n advance: r.uint8\n});\nvar EBDTComponent = new r.Struct({\n glyph: r.uint16,\n xOffset: r.int8,\n yOffset: r.int8\n});\nvar ByteAligned = function ByteAligned() {};\nvar BitAligned = function BitAligned() {};\nvar glyph = new r.VersionedStruct('version', {\n 1: {\n metrics: SmallMetrics,\n data: ByteAligned\n },\n 2: {\n metrics: SmallMetrics,\n data: BitAligned\n },\n // format 3 is deprecated\n // format 4 is not supported by Microsoft\n 5: {\n data: BitAligned\n },\n 6: {\n metrics: BigMetrics,\n data: ByteAligned\n },\n 7: {\n metrics: BigMetrics,\n data: BitAligned\n },\n 8: {\n metrics: SmallMetrics,\n pad: new r.Reserved(r.uint8),\n numComponents: r.uint16,\n components: new r.Array(EBDTComponent, 'numComponents')\n },\n 9: {\n metrics: BigMetrics,\n pad: new r.Reserved(r.uint8),\n numComponents: r.uint16,\n components: new r.Array(EBDTComponent, 'numComponents')\n },\n 17: {\n metrics: SmallMetrics,\n dataLen: r.uint32,\n data: new r.Buffer('dataLen')\n },\n 18: {\n metrics: BigMetrics,\n dataLen: r.uint32,\n data: new r.Buffer('dataLen')\n },\n 19: {\n dataLen: r.uint32,\n data: new r.Buffer('dataLen')\n }\n});\nvar SBitLineMetrics = new r.Struct({\n ascender: r.int8,\n descender: r.int8,\n widthMax: r.uint8,\n caretSlopeNumerator: r.int8,\n caretSlopeDenominator: r.int8,\n caretOffset: r.int8,\n minOriginSB: r.int8,\n minAdvanceSB: r.int8,\n maxBeforeBL: r.int8,\n minAfterBL: r.int8,\n pad: new r.Reserved(r.int8, 2)\n});\nvar CodeOffsetPair = new r.Struct({\n glyphCode: r.uint16,\n offset: r.uint16\n});\nvar IndexSubtable = new r.VersionedStruct(r.uint16, {\n header: {\n imageFormat: r.uint16,\n imageDataOffset: r.uint32\n },\n 1: {\n offsetArray: new r.Array(r.uint32, function (t) {\n return t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1;\n })\n },\n 2: {\n imageSize: r.uint32,\n bigMetrics: BigMetrics\n },\n 3: {\n offsetArray: new r.Array(r.uint16, function (t) {\n return t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1;\n })\n },\n 4: {\n numGlyphs: r.uint32,\n glyphArray: new r.Array(CodeOffsetPair, function (t) {\n return t.numGlyphs + 1;\n })\n },\n 5: {\n imageSize: r.uint32,\n bigMetrics: BigMetrics,\n numGlyphs: r.uint32,\n glyphCodeArray: new r.Array(r.uint16, 'numGlyphs')\n }\n});\nvar IndexSubtableArray = new r.Struct({\n firstGlyphIndex: r.uint16,\n lastGlyphIndex: r.uint16,\n subtable: new r.Pointer(r.uint32, IndexSubtable)\n});\nvar BitmapSizeTable = new r.Struct({\n indexSubTableArray: new r.Pointer(r.uint32, new r.Array(IndexSubtableArray, 1), {\n type: 'parent'\n }),\n indexTablesSize: r.uint32,\n numberOfIndexSubTables: r.uint32,\n colorRef: r.uint32,\n hori: SBitLineMetrics,\n vert: SBitLineMetrics,\n startGlyphIndex: r.uint16,\n endGlyphIndex: r.uint16,\n ppemX: r.uint8,\n ppemY: r.uint8,\n bitDepth: r.uint8,\n flags: new r.Bitfield(r.uint8, ['horizontal', 'vertical'])\n});\nvar EBLC = new r.Struct({\n version: r.uint32,\n // 0x00020000\n numSizes: r.uint32,\n sizes: new r.Array(BitmapSizeTable, 'numSizes')\n});\nvar ImageTable = new r.Struct({\n ppem: r.uint16,\n resolution: r.uint16,\n imageOffsets: new r.Array(new r.Pointer(r.uint32, 'void'), function (t) {\n return t.parent.parent.maxp.numGlyphs + 1;\n })\n}); // This is the Apple sbix table, used by the \"Apple Color Emoji\" font.\n// It includes several image tables with images for each bitmap glyph\n// of several different sizes.\n\nvar sbix = new r.Struct({\n version: r.uint16,\n flags: new r.Bitfield(r.uint16, ['renderOutlines']),\n numImgTables: r.uint32,\n imageTables: new r.Array(new r.Pointer(r.uint32, ImageTable), 'numImgTables')\n});\nvar LayerRecord = new r.Struct({\n gid: r.uint16,\n // Glyph ID of layer glyph (must be in z-order from bottom to top).\n paletteIndex: r.uint16 // Index value to use in the appropriate palette. This value must\n}); // be less than numPaletteEntries in the CPAL table, except for\n// the special case noted below. Each palette entry is 16 bits.\n// A palette index of 0xFFFF is a special case indicating that\n// the text foreground color should be used.\n\nvar BaseGlyphRecord = new r.Struct({\n gid: r.uint16,\n // Glyph ID of reference glyph. This glyph is for reference only\n // and is not rendered for color.\n firstLayerIndex: r.uint16,\n // Index (from beginning of the Layer Records) to the layer record.\n // There will be numLayers consecutive entries for this base glyph.\n numLayers: r.uint16\n});\nvar COLR = new r.Struct({\n version: r.uint16,\n numBaseGlyphRecords: r.uint16,\n baseGlyphRecord: new r.Pointer(r.uint32, new r.Array(BaseGlyphRecord, 'numBaseGlyphRecords')),\n layerRecords: new r.Pointer(r.uint32, new r.Array(LayerRecord, 'numLayerRecords'), {\n lazy: true\n }),\n numLayerRecords: r.uint16\n});\nvar ColorRecord = new r.Struct({\n blue: r.uint8,\n green: r.uint8,\n red: r.uint8,\n alpha: r.uint8\n});\nvar CPAL = new r.VersionedStruct(r.uint16, {\n header: {\n numPaletteEntries: r.uint16,\n numPalettes: r.uint16,\n numColorRecords: r.uint16,\n colorRecords: new r.Pointer(r.uint32, new r.Array(ColorRecord, 'numColorRecords')),\n colorRecordIndices: new r.Array(r.uint16, 'numPalettes')\n },\n 0: {},\n 1: {\n offsetPaletteTypeArray: new r.Pointer(r.uint32, new r.Array(r.uint32, 'numPalettes')),\n offsetPaletteLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPalettes')),\n offsetPaletteEntryLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPaletteEntries'))\n }\n});\nvar BaseCoord = new r.VersionedStruct(r.uint16, {\n 1: {\n // Design units only\n coordinate: r.int16 // X or Y value, in design units\n },\n 2: {\n // Design units plus contour point\n coordinate: r.int16,\n // X or Y value, in design units\n referenceGlyph: r.uint16,\n // GlyphID of control glyph\n baseCoordPoint: r.uint16 // Index of contour point on the referenceGlyph\n },\n 3: {\n // Design units plus Device table\n coordinate: r.int16,\n // X or Y value, in design units\n deviceTable: new r.Pointer(r.uint16, Device) // Device table for X or Y value\n }\n});\nvar BaseValues = new r.Struct({\n defaultIndex: r.uint16,\n // Index of default baseline for this script-same index in the BaseTagList\n baseCoordCount: r.uint16,\n baseCoords: new r.Array(new r.Pointer(r.uint16, BaseCoord), 'baseCoordCount')\n});\nvar FeatMinMaxRecord = new r.Struct({\n tag: new r.String(4),\n // 4-byte feature identification tag-must match FeatureTag in FeatureList\n minCoord: new r.Pointer(r.uint16, BaseCoord, {\n type: 'parent'\n }),\n // May be NULL\n maxCoord: new r.Pointer(r.uint16, BaseCoord, {\n type: 'parent'\n }) // May be NULL\n});\nvar MinMax = new r.Struct({\n minCoord: new r.Pointer(r.uint16, BaseCoord),\n // May be NULL\n maxCoord: new r.Pointer(r.uint16, BaseCoord),\n // May be NULL\n featMinMaxCount: r.uint16,\n // May be 0\n featMinMaxRecords: new r.Array(FeatMinMaxRecord, 'featMinMaxCount') // In alphabetical order\n});\nvar BaseLangSysRecord = new r.Struct({\n tag: new r.String(4),\n // 4-byte language system identification tag\n minMax: new r.Pointer(r.uint16, MinMax, {\n type: 'parent'\n })\n});\nvar BaseScript = new r.Struct({\n baseValues: new r.Pointer(r.uint16, BaseValues),\n // May be NULL\n defaultMinMax: new r.Pointer(r.uint16, MinMax),\n // May be NULL\n baseLangSysCount: r.uint16,\n // May be 0\n baseLangSysRecords: new r.Array(BaseLangSysRecord, 'baseLangSysCount') // in alphabetical order by BaseLangSysTag\n});\nvar BaseScriptRecord = new r.Struct({\n tag: new r.String(4),\n // 4-byte script identification tag\n script: new r.Pointer(r.uint16, BaseScript, {\n type: 'parent'\n })\n});\nvar BaseScriptList = new r.Array(BaseScriptRecord, r.uint16); // Array of 4-byte baseline identification tags-must be in alphabetical order\n\nvar BaseTagList = new r.Array(new r.String(4), r.uint16);\nvar Axis = new r.Struct({\n baseTagList: new r.Pointer(r.uint16, BaseTagList),\n // May be NULL\n baseScriptList: new r.Pointer(r.uint16, BaseScriptList)\n});\nvar BASE = new r.VersionedStruct(r.uint32, {\n header: {\n horizAxis: new r.Pointer(r.uint16, Axis),\n // May be NULL\n vertAxis: new r.Pointer(r.uint16, Axis) // May be NULL\n },\n 0x00010000: {},\n 0x00010001: {\n itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)\n }\n});\nvar AttachPoint = new r.Array(r.uint16, r.uint16);\nvar AttachList = new r.Struct({\n coverage: new r.Pointer(r.uint16, Coverage),\n glyphCount: r.uint16,\n attachPoints: new r.Array(new r.Pointer(r.uint16, AttachPoint), 'glyphCount')\n});\nvar CaretValue = new r.VersionedStruct(r.uint16, {\n 1: {\n // Design units only\n coordinate: r.int16\n },\n 2: {\n // Contour point\n caretValuePoint: r.uint16\n },\n 3: {\n // Design units plus Device table\n coordinate: r.int16,\n deviceTable: new r.Pointer(r.uint16, Device)\n }\n});\nvar LigGlyph = new r.Array(new r.Pointer(r.uint16, CaretValue), r.uint16);\nvar LigCaretList = new r.Struct({\n coverage: new r.Pointer(r.uint16, Coverage),\n ligGlyphCount: r.uint16,\n ligGlyphs: new r.Array(new r.Pointer(r.uint16, LigGlyph), 'ligGlyphCount')\n});\nvar MarkGlyphSetsDef = new r.Struct({\n markSetTableFormat: r.uint16,\n markSetCount: r.uint16,\n coverage: new r.Array(new r.Pointer(r.uint32, Coverage), 'markSetCount')\n});\nvar GDEF = new r.VersionedStruct(r.uint32, {\n header: {\n glyphClassDef: new r.Pointer(r.uint16, ClassDef),\n attachList: new r.Pointer(r.uint16, AttachList),\n ligCaretList: new r.Pointer(r.uint16, LigCaretList),\n markAttachClassDef: new r.Pointer(r.uint16, ClassDef)\n },\n 0x00010000: {},\n 0x00010002: {\n markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef)\n },\n 0x00010003: {\n markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef),\n itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)\n }\n});\nvar ValueFormat = new r.Bitfield(r.uint16, ['xPlacement', 'yPlacement', 'xAdvance', 'yAdvance', 'xPlaDevice', 'yPlaDevice', 'xAdvDevice', 'yAdvDevice']);\nvar types = {\n xPlacement: r.int16,\n yPlacement: r.int16,\n xAdvance: r.int16,\n yAdvance: r.int16,\n xPlaDevice: new r.Pointer(r.uint16, Device, {\n type: 'global',\n relativeTo: function relativeTo(ctx) {\n return ctx.rel;\n }\n }),\n yPlaDevice: new r.Pointer(r.uint16, Device, {\n type: 'global',\n relativeTo: function relativeTo(ctx) {\n return ctx.rel;\n }\n }),\n xAdvDevice: new r.Pointer(r.uint16, Device, {\n type: 'global',\n relativeTo: function relativeTo(ctx) {\n return ctx.rel;\n }\n }),\n yAdvDevice: new r.Pointer(r.uint16, Device, {\n type: 'global',\n relativeTo: function relativeTo(ctx) {\n return ctx.rel;\n }\n })\n};\nvar ValueRecord = /*#__PURE__*/function () {\n function ValueRecord(key) {\n if (key === void 0) {\n key = 'valueFormat';\n }\n this.key = key;\n }\n var _proto10 = ValueRecord.prototype;\n _proto10.buildStruct = function buildStruct(parent) {\n var struct = parent;\n while (!struct[this.key] && struct.parent) {\n struct = struct.parent;\n }\n if (!struct[this.key]) return;\n var fields = {};\n fields.rel = function () {\n return struct._startOffset;\n };\n var format = struct[this.key];\n for (var key in format) {\n if (format[key]) {\n fields[key] = types[key];\n }\n }\n return new r.Struct(fields);\n };\n _proto10.size = function size(val, ctx) {\n return this.buildStruct(ctx).size(val, ctx);\n };\n _proto10.decode = function decode(stream, parent) {\n var res = this.buildStruct(parent).decode(stream, parent);\n delete res.rel;\n return res;\n };\n return ValueRecord;\n}();\nvar PairValueRecord = new r.Struct({\n secondGlyph: r.uint16,\n value1: new ValueRecord('valueFormat1'),\n value2: new ValueRecord('valueFormat2')\n});\nvar PairSet = new r.Array(PairValueRecord, r.uint16);\nvar Class2Record = new r.Struct({\n value1: new ValueRecord('valueFormat1'),\n value2: new ValueRecord('valueFormat2')\n});\nvar Anchor = new r.VersionedStruct(r.uint16, {\n 1: {\n // Design units only\n xCoordinate: r.int16,\n yCoordinate: r.int16\n },\n 2: {\n // Design units plus contour point\n xCoordinate: r.int16,\n yCoordinate: r.int16,\n anchorPoint: r.uint16\n },\n 3: {\n // Design units plus Device tables\n xCoordinate: r.int16,\n yCoordinate: r.int16,\n xDeviceTable: new r.Pointer(r.uint16, Device),\n yDeviceTable: new r.Pointer(r.uint16, Device)\n }\n});\nvar EntryExitRecord = new r.Struct({\n entryAnchor: new r.Pointer(r.uint16, Anchor, {\n type: 'parent'\n }),\n exitAnchor: new r.Pointer(r.uint16, Anchor, {\n type: 'parent'\n })\n});\nvar MarkRecord = new r.Struct({\n class: r.uint16,\n markAnchor: new r.Pointer(r.uint16, Anchor, {\n type: 'parent'\n })\n});\nvar MarkArray = new r.Array(MarkRecord, r.uint16);\nvar BaseRecord = new r.Array(new r.Pointer(r.uint16, Anchor), function (t) {\n return t.parent.classCount;\n});\nvar BaseArray = new r.Array(BaseRecord, r.uint16);\nvar ComponentRecord = new r.Array(new r.Pointer(r.uint16, Anchor), function (t) {\n return t.parent.parent.classCount;\n});\nvar LigatureAttach = new r.Array(ComponentRecord, r.uint16);\nvar LigatureArray = new r.Array(new r.Pointer(r.uint16, LigatureAttach), r.uint16);\nvar GPOSLookup = new r.VersionedStruct('lookupType', {\n 1: new r.VersionedStruct(r.uint16, {\n // Single Adjustment\n 1: {\n // Single positioning value\n coverage: new r.Pointer(r.uint16, Coverage),\n valueFormat: ValueFormat,\n value: new ValueRecord()\n },\n 2: {\n coverage: new r.Pointer(r.uint16, Coverage),\n valueFormat: ValueFormat,\n valueCount: r.uint16,\n values: new r.LazyArray(new ValueRecord(), 'valueCount')\n }\n }),\n 2: new r.VersionedStruct(r.uint16, {\n // Pair Adjustment Positioning\n 1: {\n // Adjustments for glyph pairs\n coverage: new r.Pointer(r.uint16, Coverage),\n valueFormat1: ValueFormat,\n valueFormat2: ValueFormat,\n pairSetCount: r.uint16,\n pairSets: new r.LazyArray(new r.Pointer(r.uint16, PairSet), 'pairSetCount')\n },\n 2: {\n // Class pair adjustment\n coverage: new r.Pointer(r.uint16, Coverage),\n valueFormat1: ValueFormat,\n valueFormat2: ValueFormat,\n classDef1: new r.Pointer(r.uint16, ClassDef),\n classDef2: new r.Pointer(r.uint16, ClassDef),\n class1Count: r.uint16,\n class2Count: r.uint16,\n classRecords: new r.LazyArray(new r.LazyArray(Class2Record, 'class2Count'), 'class1Count')\n }\n }),\n 3: {\n // Cursive Attachment Positioning\n format: r.uint16,\n coverage: new r.Pointer(r.uint16, Coverage),\n entryExitCount: r.uint16,\n entryExitRecords: new r.Array(EntryExitRecord, 'entryExitCount')\n },\n 4: {\n // MarkToBase Attachment Positioning\n format: r.uint16,\n markCoverage: new r.Pointer(r.uint16, Coverage),\n baseCoverage: new r.Pointer(r.uint16, Coverage),\n classCount: r.uint16,\n markArray: new r.Pointer(r.uint16, MarkArray),\n baseArray: new r.Pointer(r.uint16, BaseArray)\n },\n 5: {\n // MarkToLigature Attachment Positioning\n format: r.uint16,\n markCoverage: new r.Pointer(r.uint16, Coverage),\n ligatureCoverage: new r.Pointer(r.uint16, Coverage),\n classCount: r.uint16,\n markArray: new r.Pointer(r.uint16, MarkArray),\n ligatureArray: new r.Pointer(r.uint16, LigatureArray)\n },\n 6: {\n // MarkToMark Attachment Positioning\n format: r.uint16,\n mark1Coverage: new r.Pointer(r.uint16, Coverage),\n mark2Coverage: new r.Pointer(r.uint16, Coverage),\n classCount: r.uint16,\n mark1Array: new r.Pointer(r.uint16, MarkArray),\n mark2Array: new r.Pointer(r.uint16, BaseArray)\n },\n 7: Context,\n // Contextual positioning\n 8: ChainingContext,\n // Chaining contextual positioning\n 9: {\n // Extension Positioning\n posFormat: r.uint16,\n lookupType: r.uint16,\n // cannot also be 9\n extension: new r.Pointer(r.uint32, GPOSLookup)\n }\n}); // Fix circular reference\n\nGPOSLookup.versions[9].extension.type = GPOSLookup;\nvar GPOS = new r.VersionedStruct(r.uint32, {\n header: {\n scriptList: new r.Pointer(r.uint16, ScriptList),\n featureList: new r.Pointer(r.uint16, FeatureList),\n lookupList: new r.Pointer(r.uint16, new LookupList(GPOSLookup))\n },\n 0x00010000: {},\n 0x00010001: {\n featureVariations: new r.Pointer(r.uint32, FeatureVariations)\n }\n}); // export GPOSLookup for JSTF table\n\nvar Sequence = new r.Array(r.uint16, r.uint16);\nvar AlternateSet = Sequence;\nvar Ligature = new r.Struct({\n glyph: r.uint16,\n compCount: r.uint16,\n components: new r.Array(r.uint16, function (t) {\n return t.compCount - 1;\n })\n});\nvar LigatureSet = new r.Array(new r.Pointer(r.uint16, Ligature), r.uint16);\nvar GSUBLookup = new r.VersionedStruct('lookupType', {\n 1: new r.VersionedStruct(r.uint16, {\n // Single Substitution\n 1: {\n coverage: new r.Pointer(r.uint16, Coverage),\n deltaGlyphID: r.int16\n },\n 2: {\n coverage: new r.Pointer(r.uint16, Coverage),\n glyphCount: r.uint16,\n substitute: new r.LazyArray(r.uint16, 'glyphCount')\n }\n }),\n 2: {\n // Multiple Substitution\n substFormat: r.uint16,\n coverage: new r.Pointer(r.uint16, Coverage),\n count: r.uint16,\n sequences: new r.LazyArray(new r.Pointer(r.uint16, Sequence), 'count')\n },\n 3: {\n // Alternate Substitution\n substFormat: r.uint16,\n coverage: new r.Pointer(r.uint16, Coverage),\n count: r.uint16,\n alternateSet: new r.LazyArray(new r.Pointer(r.uint16, AlternateSet), 'count')\n },\n 4: {\n // Ligature Substitution\n substFormat: r.uint16,\n coverage: new r.Pointer(r.uint16, Coverage),\n count: r.uint16,\n ligatureSets: new r.LazyArray(new r.Pointer(r.uint16, LigatureSet), 'count')\n },\n 5: Context,\n // Contextual Substitution\n 6: ChainingContext,\n // Chaining Contextual Substitution\n 7: {\n // Extension Substitution\n substFormat: r.uint16,\n lookupType: r.uint16,\n // cannot also be 7\n extension: new r.Pointer(r.uint32, GSUBLookup)\n },\n 8: {\n // Reverse Chaining Contextual Single Substitution\n substFormat: r.uint16,\n coverage: new r.Pointer(r.uint16, Coverage),\n backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),\n lookaheadGlyphCount: r.uint16,\n lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),\n glyphCount: r.uint16,\n substitutes: new r.Array(r.uint16, 'glyphCount')\n }\n}); // Fix circular reference\n\nGSUBLookup.versions[7].extension.type = GSUBLookup;\nvar GSUB = new r.VersionedStruct(r.uint32, {\n header: {\n scriptList: new r.Pointer(r.uint16, ScriptList),\n featureList: new r.Pointer(r.uint16, FeatureList),\n lookupList: new r.Pointer(r.uint16, new LookupList(GSUBLookup))\n },\n 0x00010000: {},\n 0x00010001: {\n featureVariations: new r.Pointer(r.uint32, FeatureVariations)\n }\n});\nvar JstfGSUBModList = new r.Array(r.uint16, r.uint16);\nvar JstfPriority = new r.Struct({\n shrinkageEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n shrinkageDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n shrinkageEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n shrinkageDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n shrinkageJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup)),\n extensionEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n extensionDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n extensionEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n extensionDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n extensionJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup))\n});\nvar JstfLangSys = new r.Array(new r.Pointer(r.uint16, JstfPriority), r.uint16);\nvar JstfLangSysRecord = new r.Struct({\n tag: new r.String(4),\n jstfLangSys: new r.Pointer(r.uint16, JstfLangSys)\n});\nvar JstfScript = new r.Struct({\n extenderGlyphs: new r.Pointer(r.uint16, new r.Array(r.uint16, r.uint16)),\n // array of glyphs to extend line length\n defaultLangSys: new r.Pointer(r.uint16, JstfLangSys),\n langSysCount: r.uint16,\n langSysRecords: new r.Array(JstfLangSysRecord, 'langSysCount')\n});\nvar JstfScriptRecord = new r.Struct({\n tag: new r.String(4),\n script: new r.Pointer(r.uint16, JstfScript, {\n type: 'parent'\n })\n});\nvar JSTF = new r.Struct({\n version: r.uint32,\n // should be 0x00010000\n scriptCount: r.uint16,\n scriptList: new r.Array(JstfScriptRecord, 'scriptCount')\n});\nvar VariableSizeNumber = /*#__PURE__*/function () {\n function VariableSizeNumber(size) {\n this._size = size;\n }\n var _proto11 = VariableSizeNumber.prototype;\n _proto11.decode = function decode(stream, parent) {\n switch (this.size(0, parent)) {\n case 1:\n return stream.readUInt8();\n case 2:\n return stream.readUInt16BE();\n case 3:\n return stream.readUInt24BE();\n case 4:\n return stream.readUInt32BE();\n }\n };\n _proto11.size = function size(val, parent) {\n return utils.resolveLength(this._size, null, parent);\n };\n return VariableSizeNumber;\n}();\nvar MapDataEntry = new r.Struct({\n entry: new VariableSizeNumber(function (t) {\n return ((t.parent.entryFormat & 0x0030) >> 4) + 1;\n }),\n outerIndex: function outerIndex(t) {\n return t.entry >> (t.parent.entryFormat & 0x000F) + 1;\n },\n innerIndex: function innerIndex(t) {\n return t.entry & (1 << (t.parent.entryFormat & 0x000F) + 1) - 1;\n }\n});\nvar DeltaSetIndexMap = new r.Struct({\n entryFormat: r.uint16,\n mapCount: r.uint16,\n mapData: new r.Array(MapDataEntry, 'mapCount')\n});\nvar HVAR = new r.Struct({\n majorVersion: r.uint16,\n minorVersion: r.uint16,\n itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore),\n advanceWidthMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),\n LSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),\n RSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap)\n});\nvar Signature = new r.Struct({\n format: r.uint32,\n length: r.uint32,\n offset: r.uint32\n});\nvar SignatureBlock = new r.Struct({\n reserved: new r.Reserved(r.uint16, 2),\n cbSignature: r.uint32,\n // Length (in bytes) of the PKCS#7 packet in pbSignature\n signature: new r.Buffer('cbSignature')\n});\nvar DSIG = new r.Struct({\n ulVersion: r.uint32,\n // Version number of the DSIG table (0x00000001)\n usNumSigs: r.uint16,\n // Number of signatures in the table\n usFlag: r.uint16,\n // Permission flags\n signatures: new r.Array(Signature, 'usNumSigs'),\n signatureBlocks: new r.Array(SignatureBlock, 'usNumSigs')\n});\nvar GaspRange = new r.Struct({\n rangeMaxPPEM: r.uint16,\n // Upper limit of range, in ppem\n rangeGaspBehavior: new r.Bitfield(r.uint16, [\n // Flags describing desired rasterizer behavior\n 'grayscale', 'gridfit', 'symmetricSmoothing', 'symmetricGridfit' // only in version 1, for ClearType\n ])\n});\nvar gasp = new r.Struct({\n version: r.uint16,\n // set to 0\n numRanges: r.uint16,\n gaspRanges: new r.Array(GaspRange, 'numRanges') // Sorted by ppem\n});\nvar DeviceRecord = new r.Struct({\n pixelSize: r.uint8,\n maximumWidth: r.uint8,\n widths: new r.Array(r.uint8, function (t) {\n return t.parent.parent.maxp.numGlyphs;\n })\n}); // The Horizontal Device Metrics table stores integer advance widths scaled to particular pixel sizes\n\nvar hdmx = new r.Struct({\n version: r.uint16,\n numRecords: r.int16,\n sizeDeviceRecord: r.int32,\n records: new r.Array(DeviceRecord, 'numRecords')\n});\nvar KernPair = new r.Struct({\n left: r.uint16,\n right: r.uint16,\n value: r.int16\n});\nvar ClassTable = new r.Struct({\n firstGlyph: r.uint16,\n nGlyphs: r.uint16,\n offsets: new r.Array(r.uint16, 'nGlyphs'),\n max: function max(t) {\n return t.offsets.length && Math.max.apply(Math, t.offsets);\n }\n});\nvar Kern2Array = new r.Struct({\n off: function off(t) {\n return t._startOffset - t.parent.parent._startOffset;\n },\n len: function len(t) {\n return ((t.parent.leftTable.max - t.off) / t.parent.rowWidth + 1) * (t.parent.rowWidth / 2);\n },\n values: new r.LazyArray(r.int16, 'len')\n});\nvar KernSubtable = new r.VersionedStruct('format', {\n 0: {\n nPairs: r.uint16,\n searchRange: r.uint16,\n entrySelector: r.uint16,\n rangeShift: r.uint16,\n pairs: new r.Array(KernPair, 'nPairs')\n },\n 2: {\n rowWidth: r.uint16,\n leftTable: new r.Pointer(r.uint16, ClassTable, {\n type: 'parent'\n }),\n rightTable: new r.Pointer(r.uint16, ClassTable, {\n type: 'parent'\n }),\n array: new r.Pointer(r.uint16, Kern2Array, {\n type: 'parent'\n })\n },\n 3: {\n glyphCount: r.uint16,\n kernValueCount: r.uint8,\n leftClassCount: r.uint8,\n rightClassCount: r.uint8,\n flags: r.uint8,\n kernValue: new r.Array(r.int16, 'kernValueCount'),\n leftClass: new r.Array(r.uint8, 'glyphCount'),\n rightClass: new r.Array(r.uint8, 'glyphCount'),\n kernIndex: new r.Array(r.uint8, function (t) {\n return t.leftClassCount * t.rightClassCount;\n })\n }\n});\nvar KernTable = new r.VersionedStruct('version', {\n 0: {\n // Microsoft uses this format\n subVersion: r.uint16,\n // Microsoft has an extra sub-table version number\n length: r.uint16,\n // Length of the subtable, in bytes\n format: r.uint8,\n // Format of subtable\n coverage: new r.Bitfield(r.uint8, ['horizontal',\n // 1 if table has horizontal data, 0 if vertical\n 'minimum',\n // If set to 1, the table has minimum values. If set to 0, the table has kerning values.\n 'crossStream',\n // If set to 1, kerning is perpendicular to the flow of the text\n 'override' // If set to 1 the value in this table replaces the accumulated value\n ]),\n subtable: KernSubtable,\n padding: new r.Reserved(r.uint8, function (t) {\n return t.length - t._currentOffset;\n })\n },\n 1: {\n // Apple uses this format\n length: r.uint32,\n coverage: new r.Bitfield(r.uint8, [null, null, null, null, null, 'variation',\n // Set if table has variation kerning values\n 'crossStream',\n // Set if table has cross-stream kerning values\n 'vertical' // Set if table has vertical kerning values\n ]),\n format: r.uint8,\n tupleIndex: r.uint16,\n subtable: KernSubtable,\n padding: new r.Reserved(r.uint8, function (t) {\n return t.length - t._currentOffset;\n })\n }\n});\nvar kern = new r.VersionedStruct(r.uint16, {\n 0: {\n // Microsoft Version\n nTables: r.uint16,\n tables: new r.Array(KernTable, 'nTables')\n },\n 1: {\n // Apple Version\n reserved: new r.Reserved(r.uint16),\n // the other half of the version number\n nTables: r.uint32,\n tables: new r.Array(KernTable, 'nTables')\n }\n});\n\n// Records the ppem for each glyph at which the scaling becomes linear again,\n// despite instructions effecting the advance width\n\nvar LTSH = new r.Struct({\n version: r.uint16,\n numGlyphs: r.uint16,\n yPels: new r.Array(r.uint8, 'numGlyphs')\n});\n\n// NOTE: The PCLT table is strongly discouraged for OpenType fonts with TrueType outlines\n\nvar PCLT = new r.Struct({\n version: r.uint16,\n fontNumber: r.uint32,\n pitch: r.uint16,\n xHeight: r.uint16,\n style: r.uint16,\n typeFamily: r.uint16,\n capHeight: r.uint16,\n symbolSet: r.uint16,\n typeface: new r.String(16),\n characterComplement: new r.String(8),\n fileName: new r.String(6),\n strokeWeight: new r.String(1),\n widthType: new r.String(1),\n serifStyle: r.uint8,\n reserved: new r.Reserved(r.uint8)\n});\n\n// sizes. This is needed in order to match font metrics on Windows.\n\nvar Ratio = new r.Struct({\n bCharSet: r.uint8,\n // Character set\n xRatio: r.uint8,\n // Value to use for x-Ratio\n yStartRatio: r.uint8,\n // Starting y-Ratio value\n yEndRatio: r.uint8 // Ending y-Ratio value\n});\nvar vTable = new r.Struct({\n yPelHeight: r.uint16,\n // yPelHeight to which values apply\n yMax: r.int16,\n // Maximum value (in pels) for this yPelHeight\n yMin: r.int16 // Minimum value (in pels) for this yPelHeight\n});\nvar VdmxGroup = new r.Struct({\n recs: r.uint16,\n // Number of height records in this group\n startsz: r.uint8,\n // Starting yPelHeight\n endsz: r.uint8,\n // Ending yPelHeight\n entries: new r.Array(vTable, 'recs') // The VDMX records\n});\nvar VDMX = new r.Struct({\n version: r.uint16,\n // Version number (0 or 1)\n numRecs: r.uint16,\n // Number of VDMX groups present\n numRatios: r.uint16,\n // Number of aspect ratio groupings\n ratioRanges: new r.Array(Ratio, 'numRatios'),\n // Ratio ranges\n offsets: new r.Array(r.uint16, 'numRatios'),\n // Offset to the VDMX group for this ratio range\n groups: new r.Array(VdmxGroup, 'numRecs') // The actual VDMX groupings\n});\nvar vhea = new r.Struct({\n version: r.uint16,\n // Version number of the Vertical Header Table\n ascent: r.int16,\n // The vertical typographic ascender for this font\n descent: r.int16,\n // The vertical typographic descender for this font\n lineGap: r.int16,\n // The vertical typographic line gap for this font\n advanceHeightMax: r.int16,\n // The maximum advance height measurement found in the font\n minTopSideBearing: r.int16,\n // The minimum top side bearing measurement found in the font\n minBottomSideBearing: r.int16,\n // The minimum bottom side bearing measurement found in the font\n yMaxExtent: r.int16,\n caretSlopeRise: r.int16,\n // Caret slope (rise/run)\n caretSlopeRun: r.int16,\n caretOffset: r.int16,\n // Set value equal to 0 for nonslanted fonts\n reserved: new r.Reserved(r.int16, 4),\n metricDataFormat: r.int16,\n // Set to 0\n numberOfMetrics: r.uint16 // Number of advance heights in the Vertical Metrics table\n});\nvar VmtxEntry = new r.Struct({\n advance: r.uint16,\n // The advance height of the glyph\n bearing: r.int16 // The top sidebearing of the glyph\n}); // Vertical Metrics Table\n\nvar vmtx = new r.Struct({\n metrics: new r.LazyArray(VmtxEntry, function (t) {\n return t.parent.vhea.numberOfMetrics;\n }),\n bearings: new r.LazyArray(r.int16, function (t) {\n return t.parent.maxp.numGlyphs - t.parent.vhea.numberOfMetrics;\n })\n});\nvar shortFrac = new r.Fixed(16, 'BE', 14);\nvar Correspondence = new r.Struct({\n fromCoord: shortFrac,\n toCoord: shortFrac\n});\nvar Segment = new r.Struct({\n pairCount: r.uint16,\n correspondence: new r.Array(Correspondence, 'pairCount')\n});\nvar avar = new r.Struct({\n version: r.fixed32,\n axisCount: r.uint32,\n segment: new r.Array(Segment, 'axisCount')\n});\nvar UnboundedArrayAccessor = /*#__PURE__*/function () {\n function UnboundedArrayAccessor(type, stream, parent) {\n this.type = type;\n this.stream = stream;\n this.parent = parent;\n this.base = this.stream.pos;\n this._items = [];\n }\n var _proto12 = UnboundedArrayAccessor.prototype;\n _proto12.getItem = function getItem(index) {\n if (this._items[index] == null) {\n var pos = this.stream.pos;\n this.stream.pos = this.base + this.type.size(null, this.parent) * index;\n this._items[index] = this.type.decode(this.stream, this.parent);\n this.stream.pos = pos;\n }\n return this._items[index];\n };\n _proto12.inspect = function inspect() {\n return \"[UnboundedArray \".concat(this.type.constructor.name, \"]\");\n };\n return UnboundedArrayAccessor;\n}();\nvar UnboundedArray = /*#__PURE__*/function (_r$Array2) {\n _inheritsLoose(UnboundedArray, _r$Array2);\n function UnboundedArray(type) {\n return _r$Array2.call(this, type, 0) || this;\n }\n var _proto13 = UnboundedArray.prototype;\n _proto13.decode = function decode(stream, parent) {\n return new UnboundedArrayAccessor(this.type, stream, parent);\n };\n return UnboundedArray;\n}(r.Array);\nvar LookupTable = function LookupTable(ValueType) {\n if (ValueType === void 0) {\n ValueType = r.uint16;\n }\n // Helper class that makes internal structures invisible to pointers\n var Shadow = /*#__PURE__*/function () {\n function Shadow(type) {\n this.type = type;\n }\n var _proto14 = Shadow.prototype;\n _proto14.decode = function decode(stream, ctx) {\n ctx = ctx.parent.parent;\n return this.type.decode(stream, ctx);\n };\n _proto14.size = function size(val, ctx) {\n ctx = ctx.parent.parent;\n return this.type.size(val, ctx);\n };\n _proto14.encode = function encode(stream, val, ctx) {\n ctx = ctx.parent.parent;\n return this.type.encode(stream, val, ctx);\n };\n return Shadow;\n }();\n ValueType = new Shadow(ValueType);\n var BinarySearchHeader = new r.Struct({\n unitSize: r.uint16,\n nUnits: r.uint16,\n searchRange: r.uint16,\n entrySelector: r.uint16,\n rangeShift: r.uint16\n });\n var LookupSegmentSingle = new r.Struct({\n lastGlyph: r.uint16,\n firstGlyph: r.uint16,\n value: ValueType\n });\n var LookupSegmentArray = new r.Struct({\n lastGlyph: r.uint16,\n firstGlyph: r.uint16,\n values: new r.Pointer(r.uint16, new r.Array(ValueType, function (t) {\n return t.lastGlyph - t.firstGlyph + 1;\n }), {\n type: 'parent'\n })\n });\n var LookupSingle = new r.Struct({\n glyph: r.uint16,\n value: ValueType\n });\n return new r.VersionedStruct(r.uint16, {\n 0: {\n values: new UnboundedArray(ValueType) // length == number of glyphs maybe?\n },\n 2: {\n binarySearchHeader: BinarySearchHeader,\n segments: new r.Array(LookupSegmentSingle, function (t) {\n return t.binarySearchHeader.nUnits;\n })\n },\n 4: {\n binarySearchHeader: BinarySearchHeader,\n segments: new r.Array(LookupSegmentArray, function (t) {\n return t.binarySearchHeader.nUnits;\n })\n },\n 6: {\n binarySearchHeader: BinarySearchHeader,\n segments: new r.Array(LookupSingle, function (t) {\n return t.binarySearchHeader.nUnits;\n })\n },\n 8: {\n firstGlyph: r.uint16,\n count: r.uint16,\n values: new r.Array(ValueType, 'count')\n }\n });\n};\nfunction StateTable(entryData, lookupType) {\n if (entryData === void 0) {\n entryData = {};\n }\n if (lookupType === void 0) {\n lookupType = r.uint16;\n }\n var entry = Object.assign({\n newState: r.uint16,\n flags: r.uint16\n }, entryData);\n var Entry = new r.Struct(entry);\n var StateArray = new UnboundedArray(new r.Array(r.uint16, function (t) {\n return t.nClasses;\n }));\n var StateHeader = new r.Struct({\n nClasses: r.uint32,\n classTable: new r.Pointer(r.uint32, new LookupTable(lookupType)),\n stateArray: new r.Pointer(r.uint32, StateArray),\n entryTable: new r.Pointer(r.uint32, new UnboundedArray(Entry))\n });\n return StateHeader;\n} // This is the old version of the StateTable structure\n\nfunction StateTable1(entryData, lookupType) {\n if (entryData === void 0) {\n entryData = {};\n }\n if (lookupType === void 0) {\n lookupType = r.uint16;\n }\n var ClassLookupTable = new r.Struct({\n version: function version() {\n return 8;\n },\n // simulate LookupTable\n firstGlyph: r.uint16,\n values: new r.Array(r.uint8, r.uint16)\n });\n var entry = Object.assign({\n newStateOffset: r.uint16,\n // convert offset to stateArray index\n newState: function newState(t) {\n return (t.newStateOffset - (t.parent.stateArray.base - t.parent._startOffset)) / t.parent.nClasses;\n },\n flags: r.uint16\n }, entryData);\n var Entry = new r.Struct(entry);\n var StateArray = new UnboundedArray(new r.Array(r.uint8, function (t) {\n return t.nClasses;\n }));\n var StateHeader1 = new r.Struct({\n nClasses: r.uint16,\n classTable: new r.Pointer(r.uint16, ClassLookupTable),\n stateArray: new r.Pointer(r.uint16, StateArray),\n entryTable: new r.Pointer(r.uint16, new UnboundedArray(Entry))\n });\n return StateHeader1;\n}\nvar BslnSubtable = new r.VersionedStruct('format', {\n 0: {\n // Distance-based, no mapping\n deltas: new r.Array(r.int16, 32)\n },\n 1: {\n // Distance-based, with mapping\n deltas: new r.Array(r.int16, 32),\n mappingData: new LookupTable(r.uint16)\n },\n 2: {\n // Control point-based, no mapping\n standardGlyph: r.uint16,\n controlPoints: new r.Array(r.uint16, 32)\n },\n 3: {\n // Control point-based, with mapping\n standardGlyph: r.uint16,\n controlPoints: new r.Array(r.uint16, 32),\n mappingData: new LookupTable(r.uint16)\n }\n});\nvar bsln = new r.Struct({\n version: r.fixed32,\n format: r.uint16,\n defaultBaseline: r.uint16,\n subtable: BslnSubtable\n});\nvar Setting = new r.Struct({\n setting: r.uint16,\n nameIndex: r.int16,\n name: function name(t) {\n return t.parent.parent.parent.name.records.fontFeatures[t.nameIndex];\n }\n});\nvar FeatureName = new r.Struct({\n feature: r.uint16,\n nSettings: r.uint16,\n settingTable: new r.Pointer(r.uint32, new r.Array(Setting, 'nSettings'), {\n type: 'parent'\n }),\n featureFlags: new r.Bitfield(r.uint8, [null, null, null, null, null, null, 'hasDefault', 'exclusive']),\n defaultSetting: r.uint8,\n nameIndex: r.int16,\n name: function name(t) {\n return t.parent.parent.name.records.fontFeatures[t.nameIndex];\n }\n});\nvar feat = new r.Struct({\n version: r.fixed32,\n featureNameCount: r.uint16,\n reserved1: new r.Reserved(r.uint16),\n reserved2: new r.Reserved(r.uint32),\n featureNames: new r.Array(FeatureName, 'featureNameCount')\n});\nvar Axis$1 = new r.Struct({\n axisTag: new r.String(4),\n minValue: r.fixed32,\n defaultValue: r.fixed32,\n maxValue: r.fixed32,\n flags: r.uint16,\n nameID: r.uint16,\n name: function name(t) {\n return t.parent.parent.name.records.fontFeatures[t.nameID];\n }\n});\nvar Instance = new r.Struct({\n nameID: r.uint16,\n name: function name(t) {\n return t.parent.parent.name.records.fontFeatures[t.nameID];\n },\n flags: r.uint16,\n coord: new r.Array(r.fixed32, function (t) {\n return t.parent.axisCount;\n }),\n postscriptNameID: new r.Optional(r.uint16, function (t) {\n return t.parent.instanceSize - t._currentOffset > 0;\n })\n});\nvar fvar = new r.Struct({\n version: r.fixed32,\n offsetToData: r.uint16,\n countSizePairs: r.uint16,\n axisCount: r.uint16,\n axisSize: r.uint16,\n instanceCount: r.uint16,\n instanceSize: r.uint16,\n axis: new r.Array(Axis$1, 'axisCount'),\n instance: new r.Array(Instance, 'instanceCount')\n});\nvar shortFrac$1 = new r.Fixed(16, 'BE', 14);\nvar Offset = /*#__PURE__*/function () {\n function Offset() {}\n Offset.decode = function decode(stream, parent) {\n // In short format, offsets are multiplied by 2.\n // This doesn't seem to be documented by Apple, but it\n // is implemented this way in Freetype.\n return parent.flags ? stream.readUInt32BE() : stream.readUInt16BE() * 2;\n };\n return Offset;\n}();\nvar gvar = new r.Struct({\n version: r.uint16,\n reserved: new r.Reserved(r.uint16),\n axisCount: r.uint16,\n globalCoordCount: r.uint16,\n globalCoords: new r.Pointer(r.uint32, new r.Array(new r.Array(shortFrac$1, 'axisCount'), 'globalCoordCount')),\n glyphCount: r.uint16,\n flags: r.uint16,\n offsetToData: r.uint32,\n offsets: new r.Array(new r.Pointer(Offset, 'void', {\n relativeTo: function relativeTo(ctx) {\n return ctx.offsetToData;\n },\n allowNull: false\n }), function (t) {\n return t.glyphCount + 1;\n })\n});\nvar ClassTable$1 = new r.Struct({\n length: r.uint16,\n coverage: r.uint16,\n subFeatureFlags: r.uint32,\n stateTable: new StateTable1()\n});\nvar WidthDeltaRecord = new r.Struct({\n justClass: r.uint32,\n beforeGrowLimit: r.fixed32,\n beforeShrinkLimit: r.fixed32,\n afterGrowLimit: r.fixed32,\n afterShrinkLimit: r.fixed32,\n growFlags: r.uint16,\n shrinkFlags: r.uint16\n});\nvar WidthDeltaCluster = new r.Array(WidthDeltaRecord, r.uint32);\nvar ActionData = new r.VersionedStruct('actionType', {\n 0: {\n // Decomposition action\n lowerLimit: r.fixed32,\n upperLimit: r.fixed32,\n order: r.uint16,\n glyphs: new r.Array(r.uint16, r.uint16)\n },\n 1: {\n // Unconditional add glyph action\n addGlyph: r.uint16\n },\n 2: {\n // Conditional add glyph action\n substThreshold: r.fixed32,\n addGlyph: r.uint16,\n substGlyph: r.uint16\n },\n 3: {},\n // Stretch glyph action (no data, not supported by CoreText)\n 4: {\n // Ductile glyph action (not supported by CoreText)\n variationAxis: r.uint32,\n minimumLimit: r.fixed32,\n noStretchValue: r.fixed32,\n maximumLimit: r.fixed32\n },\n 5: {\n // Repeated add glyph action\n flags: r.uint16,\n glyph: r.uint16\n }\n});\nvar Action = new r.Struct({\n actionClass: r.uint16,\n actionType: r.uint16,\n actionLength: r.uint32,\n actionData: ActionData,\n padding: new r.Reserved(r.uint8, function (t) {\n return t.actionLength - t._currentOffset;\n })\n});\nvar PostcompensationAction = new r.Array(Action, r.uint32);\nvar PostCompensationTable = new r.Struct({\n lookupTable: new LookupTable(new r.Pointer(r.uint16, PostcompensationAction))\n});\nvar JustificationTable = new r.Struct({\n classTable: new r.Pointer(r.uint16, ClassTable$1, {\n type: 'parent'\n }),\n wdcOffset: r.uint16,\n postCompensationTable: new r.Pointer(r.uint16, PostCompensationTable, {\n type: 'parent'\n }),\n widthDeltaClusters: new LookupTable(new r.Pointer(r.uint16, WidthDeltaCluster, {\n type: 'parent',\n relativeTo: function relativeTo(ctx) {\n return ctx.wdcOffset;\n }\n }))\n});\nvar just = new r.Struct({\n version: r.uint32,\n format: r.uint16,\n horizontal: new r.Pointer(r.uint16, JustificationTable),\n vertical: new r.Pointer(r.uint16, JustificationTable)\n});\nvar LigatureData = {\n action: r.uint16\n};\nvar ContextualData = {\n markIndex: r.uint16,\n currentIndex: r.uint16\n};\nvar InsertionData = {\n currentInsertIndex: r.uint16,\n markedInsertIndex: r.uint16\n};\nvar SubstitutionTable = new r.Struct({\n items: new UnboundedArray(new r.Pointer(r.uint32, new LookupTable()))\n});\nvar SubtableData = new r.VersionedStruct('type', {\n 0: {\n // Indic Rearrangement Subtable\n stateTable: new StateTable()\n },\n 1: {\n // Contextual Glyph Substitution Subtable\n stateTable: new StateTable(ContextualData),\n substitutionTable: new r.Pointer(r.uint32, SubstitutionTable)\n },\n 2: {\n // Ligature subtable\n stateTable: new StateTable(LigatureData),\n ligatureActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint32)),\n components: new r.Pointer(r.uint32, new UnboundedArray(r.uint16)),\n ligatureList: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))\n },\n 4: {\n // Non-contextual Glyph Substitution Subtable\n lookupTable: new LookupTable()\n },\n 5: {\n // Glyph Insertion Subtable\n stateTable: new StateTable(InsertionData),\n insertionActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))\n }\n});\nvar Subtable = new r.Struct({\n length: r.uint32,\n coverage: r.uint24,\n type: r.uint8,\n subFeatureFlags: r.uint32,\n table: SubtableData,\n padding: new r.Reserved(r.uint8, function (t) {\n return t.length - t._currentOffset;\n })\n});\nvar FeatureEntry = new r.Struct({\n featureType: r.uint16,\n featureSetting: r.uint16,\n enableFlags: r.uint32,\n disableFlags: r.uint32\n});\nvar MorxChain = new r.Struct({\n defaultFlags: r.uint32,\n chainLength: r.uint32,\n nFeatureEntries: r.uint32,\n nSubtables: r.uint32,\n features: new r.Array(FeatureEntry, 'nFeatureEntries'),\n subtables: new r.Array(Subtable, 'nSubtables')\n});\nvar morx = new r.Struct({\n version: r.uint16,\n unused: new r.Reserved(r.uint16),\n nChains: r.uint32,\n chains: new r.Array(MorxChain, 'nChains')\n});\nvar OpticalBounds = new r.Struct({\n left: r.int16,\n top: r.int16,\n right: r.int16,\n bottom: r.int16\n});\nvar opbd = new r.Struct({\n version: r.fixed32,\n format: r.uint16,\n lookupTable: new LookupTable(OpticalBounds)\n});\nvar tables = {};\ntables.cmap = cmap;\ntables.head = head;\ntables.hhea = hhea;\ntables.hmtx = hmtx;\ntables.maxp = maxp;\ntables.name = NameTable;\ntables['OS/2'] = OS2;\ntables.post = post; // TrueType Outlines\ntables.fpgm = fpgm;\ntables.loca = loca;\ntables.prep = prep;\ntables['cvt '] = cvt;\ntables.glyf = glyf; // PostScript Outlines\ntables['CFF '] = CFFFont;\ntables['CFF2'] = CFFFont;\ntables.VORG = VORG; // Bitmap Glyphs\ntables.EBLC = EBLC;\ntables.CBLC = tables.EBLC;\ntables.sbix = sbix;\ntables.COLR = COLR;\ntables.CPAL = CPAL; // Advanced OpenType Tables\ntables.BASE = BASE;\ntables.GDEF = GDEF;\ntables.GPOS = GPOS;\ntables.GSUB = GSUB;\ntables.JSTF = JSTF; // OpenType variations tables\ntables.HVAR = HVAR; // Other OpenType Tables\ntables.DSIG = DSIG;\ntables.gasp = gasp;\ntables.hdmx = hdmx;\ntables.kern = kern;\ntables.LTSH = LTSH;\ntables.PCLT = PCLT;\ntables.VDMX = VDMX;\ntables.vhea = vhea;\ntables.vmtx = vmtx; // Apple Advanced Typography Tables\ntables.avar = avar;\ntables.bsln = bsln;\ntables.feat = feat;\ntables.fvar = fvar;\ntables.gvar = gvar;\ntables.just = just;\ntables.morx = morx;\ntables.opbd = opbd;\nvar TableEntry = new r.Struct({\n tag: new r.String(4),\n checkSum: r.uint32,\n offset: new r.Pointer(r.uint32, 'void', {\n type: 'global'\n }),\n length: r.uint32\n});\nvar Directory = new r.Struct({\n tag: new r.String(4),\n numTables: r.uint16,\n searchRange: r.uint16,\n entrySelector: r.uint16,\n rangeShift: r.uint16,\n tables: new r.Array(TableEntry, 'numTables')\n});\nDirectory.process = function () {\n var tables = {};\n for (var _iterator9 = _createForOfIteratorHelperLoose(this.tables), _step9; !(_step9 = _iterator9()).done;) {\n var table = _step9.value;\n tables[table.tag] = table;\n }\n this.tables = tables;\n};\nDirectory.preEncode = function (stream) {\n var tables$1 = [];\n for (var tag in this.tables) {\n var table = this.tables[tag];\n if (table) {\n tables$1.push({\n tag: tag,\n checkSum: 0,\n offset: new r.VoidPointer(tables[tag], table),\n length: tables[tag].size(table)\n });\n }\n }\n this.tag = 'true';\n this.numTables = tables$1.length;\n this.tables = tables$1;\n var maxExponentFor2 = Math.floor(Math.log(this.numTables) / Math.LN2);\n var maxPowerOf2 = Math.pow(2, maxExponentFor2);\n this.searchRange = maxPowerOf2 * 16;\n this.entrySelector = Math.log(maxPowerOf2) / Math.LN2;\n this.rangeShift = this.numTables * 16 - this.searchRange;\n};\nfunction binarySearch(arr, cmp) {\n var min = 0;\n var max = arr.length - 1;\n while (min <= max) {\n var mid = min + max >> 1;\n var res = cmp(arr[mid]);\n if (res < 0) {\n max = mid - 1;\n } else if (res > 0) {\n min = mid + 1;\n } else {\n return mid;\n }\n }\n return -1;\n}\nfunction range(index, end) {\n var range = [];\n while (index < end) {\n range.push(index++);\n }\n return range;\n}\nvar _class;\ntry {\n var iconv = __webpack_require__(54171);\n} catch (err) {}\nvar CmapProcessor = (_class = /*#__PURE__*/function () {\n function CmapProcessor(cmapTable) {\n // Attempt to find a Unicode cmap first\n this.encoding = null;\n this.cmap = this.findSubtable(cmapTable, [\n // 32-bit subtables\n [3, 10], [0, 6], [0, 4],\n // 16-bit subtables\n [3, 1], [0, 3], [0, 2], [0, 1], [0, 0]]); // If not unicode cmap was found, and iconv-lite is installed,\n // take the first table with a supported encoding.\n\n if (!this.cmap && iconv) {\n for (var _iterator10 = _createForOfIteratorHelperLoose(cmapTable.tables), _step10; !(_step10 = _iterator10()).done;) {\n var cmap = _step10.value;\n var encoding = getEncoding(cmap.platformID, cmap.encodingID, cmap.table.language - 1);\n if (iconv.encodingExists(encoding)) {\n this.cmap = cmap.table;\n this.encoding = encoding;\n }\n }\n }\n if (!this.cmap) {\n throw new Error(\"Could not find a supported cmap table\");\n }\n this.uvs = this.findSubtable(cmapTable, [[0, 5]]);\n if (this.uvs && this.uvs.version !== 14) {\n this.uvs = null;\n }\n }\n var _proto15 = CmapProcessor.prototype;\n _proto15.findSubtable = function findSubtable(cmapTable, pairs) {\n for (var _iterator11 = _createForOfIteratorHelperLoose(pairs), _step11; !(_step11 = _iterator11()).done;) {\n var _step11$value = _step11.value,\n platformID = _step11$value[0],\n encodingID = _step11$value[1];\n for (var _iterator12 = _createForOfIteratorHelperLoose(cmapTable.tables), _step12; !(_step12 = _iterator12()).done;) {\n var cmap = _step12.value;\n if (cmap.platformID === platformID && cmap.encodingID === encodingID) {\n return cmap.table;\n }\n }\n }\n return null;\n };\n _proto15.lookup = function lookup(codepoint, variationSelector) {\n // If there is no Unicode cmap in this font, we need to re-encode\n // the codepoint in the encoding that the cmap supports.\n if (this.encoding) {\n var buf = iconv.encode(String.fromCodePoint(codepoint), this.encoding);\n codepoint = 0;\n for (var i = 0; i < buf.length; i++) {\n codepoint = codepoint << 8 | buf[i];\n } // Otherwise, try to get a Unicode variation selector for this codepoint if one is provided.\n } else if (variationSelector) {\n var gid = this.getVariationSelector(codepoint, variationSelector);\n if (gid) {\n return gid;\n }\n }\n var cmap = this.cmap;\n switch (cmap.version) {\n case 0:\n return cmap.codeMap.get(codepoint) || 0;\n case 4:\n {\n var min = 0;\n var max = cmap.segCount - 1;\n while (min <= max) {\n var mid = min + max >> 1;\n if (codepoint < cmap.startCode.get(mid)) {\n max = mid - 1;\n } else if (codepoint > cmap.endCode.get(mid)) {\n min = mid + 1;\n } else {\n var rangeOffset = cmap.idRangeOffset.get(mid);\n var _gid = void 0;\n if (rangeOffset === 0) {\n _gid = codepoint + cmap.idDelta.get(mid);\n } else {\n var index = rangeOffset / 2 + (codepoint - cmap.startCode.get(mid)) - (cmap.segCount - mid);\n _gid = cmap.glyphIndexArray.get(index) || 0;\n if (_gid !== 0) {\n _gid += cmap.idDelta.get(mid);\n }\n }\n return _gid & 0xffff;\n }\n }\n return 0;\n }\n case 8:\n throw new Error('TODO: cmap format 8');\n case 6:\n case 10:\n return cmap.glyphIndices.get(codepoint - cmap.firstCode) || 0;\n case 12:\n case 13:\n {\n var _min = 0;\n var _max = cmap.nGroups - 1;\n while (_min <= _max) {\n var _mid = _min + _max >> 1;\n var group = cmap.groups.get(_mid);\n if (codepoint < group.startCharCode) {\n _max = _mid - 1;\n } else if (codepoint > group.endCharCode) {\n _min = _mid + 1;\n } else {\n if (cmap.version === 12) {\n return group.glyphID + (codepoint - group.startCharCode);\n } else {\n return group.glyphID;\n }\n }\n }\n return 0;\n }\n case 14:\n throw new Error('TODO: cmap format 14');\n default:\n throw new Error(\"Unknown cmap format \".concat(cmap.version));\n }\n };\n _proto15.getVariationSelector = function getVariationSelector(codepoint, variationSelector) {\n if (!this.uvs) {\n return 0;\n }\n var selectors = this.uvs.varSelectors.toArray();\n var i = binarySearch(selectors, function (x) {\n return variationSelector - x.varSelector;\n });\n var sel = selectors[i];\n if (i !== -1 && sel.defaultUVS) {\n i = binarySearch(sel.defaultUVS, function (x) {\n return codepoint < x.startUnicodeValue ? -1 : codepoint > x.startUnicodeValue + x.additionalCount ? +1 : 0;\n });\n }\n if (i !== -1 && sel.nonDefaultUVS) {\n i = binarySearch(sel.nonDefaultUVS, function (x) {\n return codepoint - x.unicodeValue;\n });\n if (i !== -1) {\n return sel.nonDefaultUVS[i].glyphID;\n }\n }\n return 0;\n };\n _proto15.getCharacterSet = function getCharacterSet() {\n var cmap = this.cmap;\n switch (cmap.version) {\n case 0:\n return range(0, cmap.codeMap.length);\n case 4:\n {\n var res = [];\n var endCodes = cmap.endCode.toArray();\n for (var i = 0; i < endCodes.length; i++) {\n var tail = endCodes[i] + 1;\n var start = cmap.startCode.get(i);\n res.push.apply(res, range(start, tail));\n }\n return res;\n }\n case 8:\n throw new Error('TODO: cmap format 8');\n case 6:\n case 10:\n return range(cmap.firstCode, cmap.firstCode + cmap.glyphIndices.length);\n case 12:\n case 13:\n {\n var _res = [];\n for (var _iterator13 = _createForOfIteratorHelperLoose(cmap.groups.toArray()), _step13; !(_step13 = _iterator13()).done;) {\n var group = _step13.value;\n _res.push.apply(_res, range(group.startCharCode, group.endCharCode + 1));\n }\n return _res;\n }\n case 14:\n throw new Error('TODO: cmap format 14');\n default:\n throw new Error(\"Unknown cmap format \".concat(cmap.version));\n }\n };\n _proto15.codePointsForGlyph = function codePointsForGlyph(gid) {\n var cmap = this.cmap;\n switch (cmap.version) {\n case 0:\n {\n var res = [];\n for (var i = 0; i < 256; i++) {\n if (cmap.codeMap.get(i) === gid) {\n res.push(i);\n }\n }\n return res;\n }\n case 4:\n {\n var _res2 = [];\n for (var _i = 0; _i < cmap.segCount; _i++) {\n var end = cmap.endCode.get(_i);\n var start = cmap.startCode.get(_i);\n var rangeOffset = cmap.idRangeOffset.get(_i);\n var delta = cmap.idDelta.get(_i);\n for (var c = start; c <= end; c++) {\n var g = 0;\n if (rangeOffset === 0) {\n g = c + delta;\n } else {\n var index = rangeOffset / 2 + (c - start) - (cmap.segCount - _i);\n g = cmap.glyphIndexArray.get(index) || 0;\n if (g !== 0) {\n g += delta;\n }\n }\n if (g === gid) {\n _res2.push(c);\n }\n }\n }\n return _res2;\n }\n case 12:\n {\n var _res3 = [];\n for (var _iterator14 = _createForOfIteratorHelperLoose(cmap.groups.toArray()), _step14; !(_step14 = _iterator14()).done;) {\n var group = _step14.value;\n if (gid >= group.glyphID && gid <= group.glyphID + (group.endCharCode - group.startCharCode)) {\n _res3.push(group.startCharCode + (gid - group.glyphID));\n }\n }\n return _res3;\n }\n case 13:\n {\n var _res4 = [];\n for (var _iterator15 = _createForOfIteratorHelperLoose(cmap.groups.toArray()), _step15; !(_step15 = _iterator15()).done;) {\n var _group = _step15.value;\n if (gid === _group.glyphID) {\n _res4.push.apply(_res4, range(_group.startCharCode, _group.endCharCode + 1));\n }\n }\n return _res4;\n }\n default:\n throw new Error(\"Unknown cmap format \".concat(cmap.version));\n }\n };\n return CmapProcessor;\n}(), (_applyDecoratedDescriptor(_class.prototype, \"getCharacterSet\", [cache], Object.getOwnPropertyDescriptor(_class.prototype, \"getCharacterSet\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"codePointsForGlyph\", [cache], Object.getOwnPropertyDescriptor(_class.prototype, \"codePointsForGlyph\"), _class.prototype)), _class);\nvar KernProcessor = /*#__PURE__*/function () {\n function KernProcessor(font) {\n this.kern = font.kern;\n }\n var _proto16 = KernProcessor.prototype;\n _proto16.process = function process(glyphs, positions) {\n for (var glyphIndex = 0; glyphIndex < glyphs.length - 1; glyphIndex++) {\n var left = glyphs[glyphIndex].id;\n var right = glyphs[glyphIndex + 1].id;\n positions[glyphIndex].xAdvance += this.getKerning(left, right);\n }\n };\n _proto16.getKerning = function getKerning(left, right) {\n var res = 0;\n for (var _iterator16 = _createForOfIteratorHelperLoose(this.kern.tables), _step16; !(_step16 = _iterator16()).done;) {\n var table = _step16.value;\n if (table.coverage.crossStream) {\n continue;\n }\n switch (table.version) {\n case 0:\n if (!table.coverage.horizontal) {\n continue;\n }\n break;\n case 1:\n if (table.coverage.vertical || table.coverage.variation) {\n continue;\n }\n break;\n default:\n throw new Error(\"Unsupported kerning table version \".concat(table.version));\n }\n var val = 0;\n var s = table.subtable;\n switch (table.format) {\n case 0:\n var pairIdx = binarySearch(s.pairs, function (pair) {\n return left - pair.left || right - pair.right;\n });\n if (pairIdx >= 0) {\n val = s.pairs[pairIdx].value;\n }\n break;\n case 2:\n var leftOffset = 0,\n rightOffset = 0;\n if (left >= s.leftTable.firstGlyph && left < s.leftTable.firstGlyph + s.leftTable.nGlyphs) {\n leftOffset = s.leftTable.offsets[left - s.leftTable.firstGlyph];\n } else {\n leftOffset = s.array.off;\n }\n if (right >= s.rightTable.firstGlyph && right < s.rightTable.firstGlyph + s.rightTable.nGlyphs) {\n rightOffset = s.rightTable.offsets[right - s.rightTable.firstGlyph];\n }\n var index = (leftOffset + rightOffset - s.array.off) / 2;\n val = s.array.values.get(index);\n break;\n case 3:\n if (left >= s.glyphCount || right >= s.glyphCount) {\n return 0;\n }\n val = s.kernValue[s.kernIndex[s.leftClass[left] * s.rightClassCount + s.rightClass[right]]];\n break;\n default:\n throw new Error(\"Unsupported kerning sub-table format \".concat(table.format));\n } // Microsoft supports the override flag, which resets the result\n // Otherwise, the sum of the results from all subtables is returned\n\n if (table.coverage.override) {\n res = val;\n } else {\n res += val;\n }\n }\n return res;\n };\n return KernProcessor;\n}();\n/**\r\n * This class is used when GPOS does not define 'mark' or 'mkmk' features\r\n * for positioning marks relative to base glyphs. It uses the unicode\r\n * combining class property to position marks.\r\n *\r\n * Based on code from Harfbuzz, thanks!\r\n * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-fallback.cc\r\n */\nvar UnicodeLayoutEngine = /*#__PURE__*/function () {\n function UnicodeLayoutEngine(font) {\n this.font = font;\n }\n var _proto17 = UnicodeLayoutEngine.prototype;\n _proto17.positionGlyphs = function positionGlyphs(glyphs, positions) {\n // find each base + mark cluster, and position the marks relative to the base\n var clusterStart = 0;\n var clusterEnd = 0;\n for (var index = 0; index < glyphs.length; index++) {\n var glyph = glyphs[index];\n if (glyph.isMark) {\n // TODO: handle ligatures\n clusterEnd = index;\n } else {\n if (clusterStart !== clusterEnd) {\n this.positionCluster(glyphs, positions, clusterStart, clusterEnd);\n }\n clusterStart = clusterEnd = index;\n }\n }\n if (clusterStart !== clusterEnd) {\n this.positionCluster(glyphs, positions, clusterStart, clusterEnd);\n }\n return positions;\n };\n _proto17.positionCluster = function positionCluster(glyphs, positions, clusterStart, clusterEnd) {\n var base = glyphs[clusterStart];\n var baseBox = base.cbox.copy(); // adjust bounding box for ligature glyphs\n\n if (base.codePoints.length > 1) {\n // LTR. TODO: RTL support.\n baseBox.minX += (base.codePoints.length - 1) * baseBox.width / base.codePoints.length;\n }\n var xOffset = -positions[clusterStart].xAdvance;\n var yOffset = 0;\n var yGap = this.font.unitsPerEm / 16; // position each of the mark glyphs relative to the base glyph\n\n for (var index = clusterStart + 1; index <= clusterEnd; index++) {\n var mark = glyphs[index];\n var markBox = mark.cbox;\n var position = positions[index];\n var combiningClass = this.getCombiningClass(mark.codePoints[0]);\n if (combiningClass !== 'Not_Reordered') {\n position.xOffset = position.yOffset = 0; // x positioning\n\n switch (combiningClass) {\n case 'Double_Above':\n case 'Double_Below':\n // LTR. TODO: RTL support.\n position.xOffset += baseBox.minX - markBox.width / 2 - markBox.minX;\n break;\n case 'Attached_Below_Left':\n case 'Below_Left':\n case 'Above_Left':\n // left align\n position.xOffset += baseBox.minX - markBox.minX;\n break;\n case 'Attached_Above_Right':\n case 'Below_Right':\n case 'Above_Right':\n // right align\n position.xOffset += baseBox.maxX - markBox.width - markBox.minX;\n break;\n default:\n // Attached_Below, Attached_Above, Below, Above, other\n // center align\n position.xOffset += baseBox.minX + (baseBox.width - markBox.width) / 2 - markBox.minX;\n } // y positioning\n\n switch (combiningClass) {\n case 'Double_Below':\n case 'Below_Left':\n case 'Below':\n case 'Below_Right':\n case 'Attached_Below_Left':\n case 'Attached_Below':\n // add a small gap between the glyphs if they are not attached\n if (combiningClass === 'Attached_Below_Left' || combiningClass === 'Attached_Below') {\n baseBox.minY += yGap;\n }\n position.yOffset = -baseBox.minY - markBox.maxY;\n baseBox.minY += markBox.height;\n break;\n case 'Double_Above':\n case 'Above_Left':\n case 'Above':\n case 'Above_Right':\n case 'Attached_Above':\n case 'Attached_Above_Right':\n // add a small gap between the glyphs if they are not attached\n if (combiningClass === 'Attached_Above' || combiningClass === 'Attached_Above_Right') {\n baseBox.maxY += yGap;\n }\n position.yOffset = baseBox.maxY - markBox.minY;\n baseBox.maxY += markBox.height;\n break;\n }\n position.xAdvance = position.yAdvance = 0;\n position.xOffset += xOffset;\n position.yOffset += yOffset;\n } else {\n xOffset -= position.xAdvance;\n yOffset -= position.yAdvance;\n }\n }\n return;\n };\n _proto17.getCombiningClass = function getCombiningClass(codePoint) {\n var combiningClass = unicode.getCombiningClass(codePoint); // Thai / Lao need some per-character work\n\n if ((codePoint & ~0xff) === 0x0e00) {\n if (combiningClass === 'Not_Reordered') {\n switch (codePoint) {\n case 0x0e31:\n case 0x0e34:\n case 0x0e35:\n case 0x0e36:\n case 0x0e37:\n case 0x0e47:\n case 0x0e4c:\n case 0x0e3d:\n case 0x0e4e:\n return 'Above_Right';\n case 0x0eb1:\n case 0x0eb4:\n case 0x0eb5:\n case 0x0eb6:\n case 0x0eb7:\n case 0x0ebb:\n case 0x0ecc:\n case 0x0ecd:\n return 'Above';\n case 0x0ebc:\n return 'Below';\n }\n } else if (codePoint === 0x0e3a) {\n // virama\n return 'Below_Right';\n }\n }\n switch (combiningClass) {\n // Hebrew\n case 'CCC10': // sheva\n\n case 'CCC11': // hataf segol\n\n case 'CCC12': // hataf patah\n\n case 'CCC13': // hataf qamats\n\n case 'CCC14': // hiriq\n\n case 'CCC15': // tsere\n\n case 'CCC16': // segol\n\n case 'CCC17': // patah\n\n case 'CCC18': // qamats\n\n case 'CCC20': // qubuts\n\n case 'CCC22':\n // meteg\n return 'Below';\n case 'CCC23':\n // rafe\n return 'Attached_Above';\n case 'CCC24':\n // shin dot\n return 'Above_Right';\n case 'CCC25': // sin dot\n\n case 'CCC19':\n // holam\n return 'Above_Left';\n case 'CCC26':\n // point varika\n return 'Above';\n case 'CCC21':\n // dagesh\n break;\n // Arabic and Syriac\n\n case 'CCC27': // fathatan\n\n case 'CCC28': // dammatan\n\n case 'CCC30': // fatha\n\n case 'CCC31': // damma\n\n case 'CCC33': // shadda\n\n case 'CCC34': // sukun\n\n case 'CCC35': // superscript alef\n\n case 'CCC36':\n // superscript alaph\n return 'Above';\n case 'CCC29': // kasratan\n\n case 'CCC32':\n // kasra\n return 'Below';\n // Thai\n\n case 'CCC103':\n // sara u / sara uu\n return 'Below_Right';\n case 'CCC107':\n // mai\n return 'Above_Right';\n // Lao\n\n case 'CCC118':\n // sign u / sign uu\n return 'Below';\n case 'CCC122':\n // mai\n return 'Above';\n // Tibetan\n\n case 'CCC129': // sign aa\n\n case 'CCC132':\n // sign u\n return 'Below';\n case 'CCC130':\n // sign i\n return 'Above';\n }\n return combiningClass;\n };\n return UnicodeLayoutEngine;\n}();\n/**\r\n * Represents a glyph bounding box\r\n */\nvar BBox = /*#__PURE__*/function () {\n function BBox(minX, minY, maxX, maxY) {\n if (minX === void 0) {\n minX = Infinity;\n }\n if (minY === void 0) {\n minY = Infinity;\n }\n if (maxX === void 0) {\n maxX = -Infinity;\n }\n if (maxY === void 0) {\n maxY = -Infinity;\n }\n /**\r\n * The minimum X position in the bounding box\r\n * @type {number}\r\n */\n this.minX = minX;\n /**\r\n * The minimum Y position in the bounding box\r\n * @type {number}\r\n */\n\n this.minY = minY;\n /**\r\n * The maxmimum X position in the bounding box\r\n * @type {number}\r\n */\n\n this.maxX = maxX;\n /**\r\n * The maxmimum Y position in the bounding box\r\n * @type {number}\r\n */\n\n this.maxY = maxY;\n }\n /**\r\n * The width of the bounding box\r\n * @type {number}\r\n */\n var _proto18 = BBox.prototype;\n _proto18.addPoint = function addPoint(x, y) {\n if (Math.abs(x) !== Infinity) {\n if (x < this.minX) {\n this.minX = x;\n }\n if (x > this.maxX) {\n this.maxX = x;\n }\n }\n if (Math.abs(y) !== Infinity) {\n if (y < this.minY) {\n this.minY = y;\n }\n if (y > this.maxY) {\n this.maxY = y;\n }\n }\n };\n _proto18.copy = function copy() {\n return new BBox(this.minX, this.minY, this.maxX, this.maxY);\n };\n _createClass(BBox, [{\n key: \"width\",\n get: function get() {\n return this.maxX - this.minX;\n }\n /**\r\n * The height of the bounding box\r\n * @type {number}\r\n */\n }, {\n key: \"height\",\n get: function get() {\n return this.maxY - this.minY;\n }\n }]);\n return BBox;\n}(); // Data from http://www.microsoft.com/typography/otspec/scripttags.htm\n// and http://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt.\nvar UNICODE_SCRIPTS = {\n Caucasian_Albanian: 'aghb',\n Arabic: 'arab',\n Imperial_Aramaic: 'armi',\n Armenian: 'armn',\n Avestan: 'avst',\n Balinese: 'bali',\n Bamum: 'bamu',\n Bassa_Vah: 'bass',\n Batak: 'batk',\n Bengali: ['bng2', 'beng'],\n Bopomofo: 'bopo',\n Brahmi: 'brah',\n Braille: 'brai',\n Buginese: 'bugi',\n Buhid: 'buhd',\n Chakma: 'cakm',\n Canadian_Aboriginal: 'cans',\n Carian: 'cari',\n Cham: 'cham',\n Cherokee: 'cher',\n Coptic: 'copt',\n Cypriot: 'cprt',\n Cyrillic: 'cyrl',\n Devanagari: ['dev2', 'deva'],\n Deseret: 'dsrt',\n Duployan: 'dupl',\n Egyptian_Hieroglyphs: 'egyp',\n Elbasan: 'elba',\n Ethiopic: 'ethi',\n Georgian: 'geor',\n Glagolitic: 'glag',\n Gothic: 'goth',\n Grantha: 'gran',\n Greek: 'grek',\n Gujarati: ['gjr2', 'gujr'],\n Gurmukhi: ['gur2', 'guru'],\n Hangul: 'hang',\n Han: 'hani',\n Hanunoo: 'hano',\n Hebrew: 'hebr',\n Hiragana: 'hira',\n Pahawh_Hmong: 'hmng',\n Katakana_Or_Hiragana: 'hrkt',\n Old_Italic: 'ital',\n Javanese: 'java',\n Kayah_Li: 'kali',\n Katakana: 'kana',\n Kharoshthi: 'khar',\n Khmer: 'khmr',\n Khojki: 'khoj',\n Kannada: ['knd2', 'knda'],\n Kaithi: 'kthi',\n Tai_Tham: 'lana',\n Lao: 'lao ',\n Latin: 'latn',\n Lepcha: 'lepc',\n Limbu: 'limb',\n Linear_A: 'lina',\n Linear_B: 'linb',\n Lisu: 'lisu',\n Lycian: 'lyci',\n Lydian: 'lydi',\n Mahajani: 'mahj',\n Mandaic: 'mand',\n Manichaean: 'mani',\n Mende_Kikakui: 'mend',\n Meroitic_Cursive: 'merc',\n Meroitic_Hieroglyphs: 'mero',\n Malayalam: ['mlm2', 'mlym'],\n Modi: 'modi',\n Mongolian: 'mong',\n Mro: 'mroo',\n Meetei_Mayek: 'mtei',\n Myanmar: ['mym2', 'mymr'],\n Old_North_Arabian: 'narb',\n Nabataean: 'nbat',\n Nko: 'nko ',\n Ogham: 'ogam',\n Ol_Chiki: 'olck',\n Old_Turkic: 'orkh',\n Oriya: ['ory2', 'orya'],\n Osmanya: 'osma',\n Palmyrene: 'palm',\n Pau_Cin_Hau: 'pauc',\n Old_Permic: 'perm',\n Phags_Pa: 'phag',\n Inscriptional_Pahlavi: 'phli',\n Psalter_Pahlavi: 'phlp',\n Phoenician: 'phnx',\n Miao: 'plrd',\n Inscriptional_Parthian: 'prti',\n Rejang: 'rjng',\n Runic: 'runr',\n Samaritan: 'samr',\n Old_South_Arabian: 'sarb',\n Saurashtra: 'saur',\n Shavian: 'shaw',\n Sharada: 'shrd',\n Siddham: 'sidd',\n Khudawadi: 'sind',\n Sinhala: 'sinh',\n Sora_Sompeng: 'sora',\n Sundanese: 'sund',\n Syloti_Nagri: 'sylo',\n Syriac: 'syrc',\n Tagbanwa: 'tagb',\n Takri: 'takr',\n Tai_Le: 'tale',\n New_Tai_Lue: 'talu',\n Tamil: ['tml2', 'taml'],\n Tai_Viet: 'tavt',\n Telugu: ['tel2', 'telu'],\n Tifinagh: 'tfng',\n Tagalog: 'tglg',\n Thaana: 'thaa',\n Thai: 'thai',\n Tibetan: 'tibt',\n Tirhuta: 'tirh',\n Ugaritic: 'ugar',\n Vai: 'vai ',\n Warang_Citi: 'wara',\n Old_Persian: 'xpeo',\n Cuneiform: 'xsux',\n Yi: 'yi ',\n Inherited: 'zinh',\n Common: 'zyyy',\n Unknown: 'zzzz'\n};\nvar OPENTYPE_SCRIPTS = {};\nfor (var script in UNICODE_SCRIPTS) {\n var tag = UNICODE_SCRIPTS[script];\n if (Array.isArray(tag)) {\n for (var _iterator17 = _createForOfIteratorHelperLoose(tag), _step17; !(_step17 = _iterator17()).done;) {\n var t = _step17.value;\n OPENTYPE_SCRIPTS[t] = script;\n }\n } else {\n OPENTYPE_SCRIPTS[tag] = script;\n }\n}\nfunction fromOpenType(tag) {\n return OPENTYPE_SCRIPTS[tag];\n}\nfunction forString(string) {\n var len = string.length;\n var idx = 0;\n while (idx < len) {\n var code = string.charCodeAt(idx++); // Check if this is a high surrogate\n\n if (0xd800 <= code && code <= 0xdbff && idx < len) {\n var next = string.charCodeAt(idx); // Check if this is a low surrogate\n\n if (0xdc00 <= next && next <= 0xdfff) {\n idx++;\n code = ((code & 0x3FF) << 10) + (next & 0x3FF) + 0x10000;\n }\n }\n var _script = unicode.getScript(code);\n if (_script !== 'Common' && _script !== 'Inherited' && _script !== 'Unknown') {\n return UNICODE_SCRIPTS[_script];\n }\n }\n return UNICODE_SCRIPTS.Unknown;\n}\nfunction forCodePoints(codePoints) {\n for (var i = 0; i < codePoints.length; i++) {\n var codePoint = codePoints[i];\n var _script2 = unicode.getScript(codePoint);\n if (_script2 !== 'Common' && _script2 !== 'Inherited' && _script2 !== 'Unknown') {\n return UNICODE_SCRIPTS[_script2];\n }\n }\n return UNICODE_SCRIPTS.Unknown;\n} // The scripts in this map are written from right to left\n\nvar RTL = {\n arab: true,\n // Arabic\n hebr: true,\n // Hebrew\n syrc: true,\n // Syriac\n thaa: true,\n // Thaana\n cprt: true,\n // Cypriot Syllabary\n khar: true,\n // Kharosthi\n phnx: true,\n // Phoenician\n 'nko ': true,\n // N'Ko\n lydi: true,\n // Lydian\n avst: true,\n // Avestan\n armi: true,\n // Imperial Aramaic\n phli: true,\n // Inscriptional Pahlavi\n prti: true,\n // Inscriptional Parthian\n sarb: true,\n // Old South Arabian\n orkh: true,\n // Old Turkic, Orkhon Runic\n samr: true,\n // Samaritan\n mand: true,\n // Mandaic, Mandaean\n merc: true,\n // Meroitic Cursive\n mero: true,\n // Meroitic Hieroglyphs\n // Unicode 7.0 (not listed on http://www.microsoft.com/typography/otspec/scripttags.htm)\n mani: true,\n // Manichaean\n mend: true,\n // Mende Kikakui\n nbat: true,\n // Nabataean\n narb: true,\n // Old North Arabian\n palm: true,\n // Palmyrene\n phlp: true // Psalter Pahlavi\n};\nfunction direction(script) {\n if (RTL[script]) {\n return 'rtl';\n }\n return 'ltr';\n}\n\n/**\r\n * Represents a run of Glyph and GlyphPosition objects.\r\n * Returned by the font layout method.\r\n */\nvar GlyphRun = /*#__PURE__*/function () {\n function GlyphRun(glyphs, features, script, language, direction$1) {\n /**\r\n * An array of Glyph objects in the run\r\n * @type {Glyph[]}\r\n */\n this.glyphs = glyphs;\n /**\r\n * An array of GlyphPosition objects for each glyph in the run\r\n * @type {GlyphPosition[]}\r\n */\n\n this.positions = null;\n /**\r\n * The script that was requested for shaping. This was either passed in or detected automatically.\r\n * @type {string}\r\n */\n\n this.script = script;\n /**\r\n * The language requested for shaping, as passed in. If `null`, the default language for the\r\n * script was used.\r\n * @type {string}\r\n */\n\n this.language = language || null;\n /**\r\n * The direction requested for shaping, as passed in (either ltr or rtl).\r\n * If `null`, the default direction of the script is used.\r\n * @type {string}\r\n */\n\n this.direction = direction$1 || direction(script);\n /**\r\n * The features requested during shaping. This is a combination of user\r\n * specified features and features chosen by the shaper.\r\n * @type {object}\r\n */\n\n this.features = {}; // Convert features to an object\n\n if (Array.isArray(features)) {\n for (var _iterator18 = _createForOfIteratorHelperLoose(features), _step18; !(_step18 = _iterator18()).done;) {\n var tag = _step18.value;\n this.features[tag] = true;\n }\n } else if (typeof features === 'object') {\n this.features = features;\n }\n }\n /**\r\n * The total advance width of the run.\r\n * @type {number}\r\n */\n _createClass(GlyphRun, [{\n key: \"advanceWidth\",\n get: function get() {\n var width = 0;\n for (var _iterator19 = _createForOfIteratorHelperLoose(this.positions), _step19; !(_step19 = _iterator19()).done;) {\n var position = _step19.value;\n width += position.xAdvance;\n }\n return width;\n }\n /**\r\n * The total advance height of the run.\r\n * @type {number}\r\n */\n }, {\n key: \"advanceHeight\",\n get: function get() {\n var height = 0;\n for (var _iterator20 = _createForOfIteratorHelperLoose(this.positions), _step20; !(_step20 = _iterator20()).done;) {\n var position = _step20.value;\n height += position.yAdvance;\n }\n return height;\n }\n /**\r\n * The bounding box containing all glyphs in the run.\r\n * @type {BBox}\r\n */\n }, {\n key: \"bbox\",\n get: function get() {\n var bbox = new BBox();\n var x = 0;\n var y = 0;\n for (var index = 0; index < this.glyphs.length; index++) {\n var glyph = this.glyphs[index];\n var p = this.positions[index];\n var b = glyph.bbox;\n bbox.addPoint(b.minX + x + p.xOffset, b.minY + y + p.yOffset);\n bbox.addPoint(b.maxX + x + p.xOffset, b.maxY + y + p.yOffset);\n x += p.xAdvance;\n y += p.yAdvance;\n }\n return bbox;\n }\n }]);\n return GlyphRun;\n}();\n/**\r\n * Represents positioning information for a glyph in a GlyphRun.\r\n */\nvar GlyphPosition = function GlyphPosition(xAdvance, yAdvance, xOffset, yOffset) {\n if (xAdvance === void 0) {\n xAdvance = 0;\n }\n if (yAdvance === void 0) {\n yAdvance = 0;\n }\n if (xOffset === void 0) {\n xOffset = 0;\n }\n if (yOffset === void 0) {\n yOffset = 0;\n }\n /**\r\n * The amount to move the virtual pen in the X direction after rendering this glyph.\r\n * @type {number}\r\n */\n this.xAdvance = xAdvance;\n /**\r\n * The amount to move the virtual pen in the Y direction after rendering this glyph.\r\n * @type {number}\r\n */\n\n this.yAdvance = yAdvance;\n /**\r\n * The offset from the pen position in the X direction at which to render this glyph.\r\n * @type {number}\r\n */\n\n this.xOffset = xOffset;\n /**\r\n * The offset from the pen position in the Y direction at which to render this glyph.\r\n * @type {number}\r\n */\n\n this.yOffset = yOffset;\n}; // see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html\n// and /System/Library/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h on a Mac\nvar features = {\n allTypographicFeatures: {\n code: 0,\n exclusive: false,\n allTypeFeatures: 0\n },\n ligatures: {\n code: 1,\n exclusive: false,\n requiredLigatures: 0,\n commonLigatures: 2,\n rareLigatures: 4,\n // logos: 6\n rebusPictures: 8,\n diphthongLigatures: 10,\n squaredLigatures: 12,\n abbrevSquaredLigatures: 14,\n symbolLigatures: 16,\n contextualLigatures: 18,\n historicalLigatures: 20\n },\n cursiveConnection: {\n code: 2,\n exclusive: true,\n unconnected: 0,\n partiallyConnected: 1,\n cursive: 2\n },\n letterCase: {\n code: 3,\n exclusive: true\n },\n // upperAndLowerCase: 0 # deprecated\n // allCaps: 1 # deprecated\n // allLowerCase: 2 # deprecated\n // smallCaps: 3 # deprecated\n // initialCaps: 4 # deprecated\n // initialCapsAndSmallCaps: 5 # deprecated\n verticalSubstitution: {\n code: 4,\n exclusive: false,\n substituteVerticalForms: 0\n },\n linguisticRearrangement: {\n code: 5,\n exclusive: false,\n linguisticRearrangement: 0\n },\n numberSpacing: {\n code: 6,\n exclusive: true,\n monospacedNumbers: 0,\n proportionalNumbers: 1,\n thirdWidthNumbers: 2,\n quarterWidthNumbers: 3\n },\n smartSwash: {\n code: 8,\n exclusive: false,\n wordInitialSwashes: 0,\n wordFinalSwashes: 2,\n // lineInitialSwashes: 4\n // lineFinalSwashes: 6\n nonFinalSwashes: 8\n },\n diacritics: {\n code: 9,\n exclusive: true,\n showDiacritics: 0,\n hideDiacritics: 1,\n decomposeDiacritics: 2\n },\n verticalPosition: {\n code: 10,\n exclusive: true,\n normalPosition: 0,\n superiors: 1,\n inferiors: 2,\n ordinals: 3,\n scientificInferiors: 4\n },\n fractions: {\n code: 11,\n exclusive: true,\n noFractions: 0,\n verticalFractions: 1,\n diagonalFractions: 2\n },\n overlappingCharacters: {\n code: 13,\n exclusive: false,\n preventOverlap: 0\n },\n typographicExtras: {\n code: 14,\n exclusive: false,\n // hyphensToEmDash: 0\n // hyphenToEnDash: 2\n slashedZero: 4\n },\n // formInterrobang: 6\n // smartQuotes: 8\n // periodsToEllipsis: 10\n mathematicalExtras: {\n code: 15,\n exclusive: false,\n // hyphenToMinus: 0\n // asteristoMultiply: 2\n // slashToDivide: 4\n // inequalityLigatures: 6\n // exponents: 8\n mathematicalGreek: 10\n },\n ornamentSets: {\n code: 16,\n exclusive: true,\n noOrnaments: 0,\n dingbats: 1,\n piCharacters: 2,\n fleurons: 3,\n decorativeBorders: 4,\n internationalSymbols: 5,\n mathSymbols: 6\n },\n characterAlternatives: {\n code: 17,\n exclusive: true,\n noAlternates: 0\n },\n // user defined options\n designComplexity: {\n code: 18,\n exclusive: true,\n designLevel1: 0,\n designLevel2: 1,\n designLevel3: 2,\n designLevel4: 3,\n designLevel5: 4\n },\n styleOptions: {\n code: 19,\n exclusive: true,\n noStyleOptions: 0,\n displayText: 1,\n engravedText: 2,\n illuminatedCaps: 3,\n titlingCaps: 4,\n tallCaps: 5\n },\n characterShape: {\n code: 20,\n exclusive: true,\n traditionalCharacters: 0,\n simplifiedCharacters: 1,\n JIS1978Characters: 2,\n JIS1983Characters: 3,\n JIS1990Characters: 4,\n traditionalAltOne: 5,\n traditionalAltTwo: 6,\n traditionalAltThree: 7,\n traditionalAltFour: 8,\n traditionalAltFive: 9,\n expertCharacters: 10,\n JIS2004Characters: 11,\n hojoCharacters: 12,\n NLCCharacters: 13,\n traditionalNamesCharacters: 14\n },\n numberCase: {\n code: 21,\n exclusive: true,\n lowerCaseNumbers: 0,\n upperCaseNumbers: 1\n },\n textSpacing: {\n code: 22,\n exclusive: true,\n proportionalText: 0,\n monospacedText: 1,\n halfWidthText: 2,\n thirdWidthText: 3,\n quarterWidthText: 4,\n altProportionalText: 5,\n altHalfWidthText: 6\n },\n transliteration: {\n code: 23,\n exclusive: true,\n noTransliteration: 0\n },\n // hanjaToHangul: 1\n // hiraganaToKatakana: 2\n // katakanaToHiragana: 3\n // kanaToRomanization: 4\n // romanizationToHiragana: 5\n // romanizationToKatakana: 6\n // hanjaToHangulAltOne: 7\n // hanjaToHangulAltTwo: 8\n // hanjaToHangulAltThree: 9\n annotation: {\n code: 24,\n exclusive: true,\n noAnnotation: 0,\n boxAnnotation: 1,\n roundedBoxAnnotation: 2,\n circleAnnotation: 3,\n invertedCircleAnnotation: 4,\n parenthesisAnnotation: 5,\n periodAnnotation: 6,\n romanNumeralAnnotation: 7,\n diamondAnnotation: 8,\n invertedBoxAnnotation: 9,\n invertedRoundedBoxAnnotation: 10\n },\n kanaSpacing: {\n code: 25,\n exclusive: true,\n fullWidthKana: 0,\n proportionalKana: 1\n },\n ideographicSpacing: {\n code: 26,\n exclusive: true,\n fullWidthIdeographs: 0,\n proportionalIdeographs: 1,\n halfWidthIdeographs: 2\n },\n unicodeDecomposition: {\n code: 27,\n exclusive: false,\n canonicalComposition: 0,\n compatibilityComposition: 2,\n transcodingComposition: 4\n },\n rubyKana: {\n code: 28,\n exclusive: false,\n // noRubyKana: 0 # deprecated - use rubyKanaOff instead\n // rubyKana: 1 # deprecated - use rubyKanaOn instead\n rubyKana: 2\n },\n CJKSymbolAlternatives: {\n code: 29,\n exclusive: true,\n noCJKSymbolAlternatives: 0,\n CJKSymbolAltOne: 1,\n CJKSymbolAltTwo: 2,\n CJKSymbolAltThree: 3,\n CJKSymbolAltFour: 4,\n CJKSymbolAltFive: 5\n },\n ideographicAlternatives: {\n code: 30,\n exclusive: true,\n noIdeographicAlternatives: 0,\n ideographicAltOne: 1,\n ideographicAltTwo: 2,\n ideographicAltThree: 3,\n ideographicAltFour: 4,\n ideographicAltFive: 5\n },\n CJKVerticalRomanPlacement: {\n code: 31,\n exclusive: true,\n CJKVerticalRomanCentered: 0,\n CJKVerticalRomanHBaseline: 1\n },\n italicCJKRoman: {\n code: 32,\n exclusive: false,\n // noCJKItalicRoman: 0 # deprecated - use CJKItalicRomanOff instead\n // CJKItalicRoman: 1 # deprecated - use CJKItalicRomanOn instead\n CJKItalicRoman: 2\n },\n caseSensitiveLayout: {\n code: 33,\n exclusive: false,\n caseSensitiveLayout: 0,\n caseSensitiveSpacing: 2\n },\n alternateKana: {\n code: 34,\n exclusive: false,\n alternateHorizKana: 0,\n alternateVertKana: 2\n },\n stylisticAlternatives: {\n code: 35,\n exclusive: false,\n noStylisticAlternates: 0,\n stylisticAltOne: 2,\n stylisticAltTwo: 4,\n stylisticAltThree: 6,\n stylisticAltFour: 8,\n stylisticAltFive: 10,\n stylisticAltSix: 12,\n stylisticAltSeven: 14,\n stylisticAltEight: 16,\n stylisticAltNine: 18,\n stylisticAltTen: 20,\n stylisticAltEleven: 22,\n stylisticAltTwelve: 24,\n stylisticAltThirteen: 26,\n stylisticAltFourteen: 28,\n stylisticAltFifteen: 30,\n stylisticAltSixteen: 32,\n stylisticAltSeventeen: 34,\n stylisticAltEighteen: 36,\n stylisticAltNineteen: 38,\n stylisticAltTwenty: 40\n },\n contextualAlternates: {\n code: 36,\n exclusive: false,\n contextualAlternates: 0,\n swashAlternates: 2,\n contextualSwashAlternates: 4\n },\n lowerCase: {\n code: 37,\n exclusive: true,\n defaultLowerCase: 0,\n lowerCaseSmallCaps: 1,\n lowerCasePetiteCaps: 2\n },\n upperCase: {\n code: 38,\n exclusive: true,\n defaultUpperCase: 0,\n upperCaseSmallCaps: 1,\n upperCasePetiteCaps: 2\n },\n languageTag: {\n // indices into ltag table\n code: 39,\n exclusive: true\n },\n CJKRomanSpacing: {\n code: 103,\n exclusive: true,\n halfWidthCJKRoman: 0,\n proportionalCJKRoman: 1,\n defaultCJKRoman: 2,\n fullWidthCJKRoman: 3\n }\n};\nvar feature = function feature(name, selector) {\n return [features[name].code, features[name][selector]];\n};\nvar OTMapping = {\n rlig: feature('ligatures', 'requiredLigatures'),\n clig: feature('ligatures', 'contextualLigatures'),\n dlig: feature('ligatures', 'rareLigatures'),\n hlig: feature('ligatures', 'historicalLigatures'),\n liga: feature('ligatures', 'commonLigatures'),\n hist: feature('ligatures', 'historicalLigatures'),\n // ??\n smcp: feature('lowerCase', 'lowerCaseSmallCaps'),\n pcap: feature('lowerCase', 'lowerCasePetiteCaps'),\n frac: feature('fractions', 'diagonalFractions'),\n dnom: feature('fractions', 'diagonalFractions'),\n // ??\n numr: feature('fractions', 'diagonalFractions'),\n // ??\n afrc: feature('fractions', 'verticalFractions'),\n // aalt\n // abvf, abvm, abvs, akhn, blwf, blwm, blws, cfar, cjct, cpsp, falt, isol, jalt, ljmo, mset?\n // ltra, ltrm, nukt, pref, pres, pstf, psts, rand, rkrf, rphf, rtla, rtlm, size, tjmo, tnum?\n // unic, vatu, vhal, vjmo, vpal, vrt2\n // dist -> trak table?\n // kern, vkrn -> kern table\n // lfbd + opbd + rtbd -> opbd table?\n // mark, mkmk -> acnt table?\n // locl -> languageTag + ltag table\n case: feature('caseSensitiveLayout', 'caseSensitiveLayout'),\n // also caseSensitiveSpacing\n ccmp: feature('unicodeDecomposition', 'canonicalComposition'),\n // compatibilityComposition?\n cpct: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),\n // guess..., probably not given below\n valt: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),\n swsh: feature('contextualAlternates', 'swashAlternates'),\n cswh: feature('contextualAlternates', 'contextualSwashAlternates'),\n curs: feature('cursiveConnection', 'cursive'),\n // ??\n c2pc: feature('upperCase', 'upperCasePetiteCaps'),\n c2sc: feature('upperCase', 'upperCaseSmallCaps'),\n init: feature('smartSwash', 'wordInitialSwashes'),\n // ??\n fin2: feature('smartSwash', 'wordFinalSwashes'),\n // ??\n medi: feature('smartSwash', 'nonFinalSwashes'),\n // ??\n med2: feature('smartSwash', 'nonFinalSwashes'),\n // ??\n fin3: feature('smartSwash', 'wordFinalSwashes'),\n // ??\n fina: feature('smartSwash', 'wordFinalSwashes'),\n // ??\n pkna: feature('kanaSpacing', 'proportionalKana'),\n half: feature('textSpacing', 'halfWidthText'),\n // also HalfWidthCJKRoman, HalfWidthIdeographs?\n halt: feature('textSpacing', 'altHalfWidthText'),\n hkna: feature('alternateKana', 'alternateHorizKana'),\n vkna: feature('alternateKana', 'alternateVertKana'),\n // hngl: feature 'transliteration', 'hanjaToHangulSelector' # deprecated\n ital: feature('italicCJKRoman', 'CJKItalicRoman'),\n lnum: feature('numberCase', 'upperCaseNumbers'),\n onum: feature('numberCase', 'lowerCaseNumbers'),\n mgrk: feature('mathematicalExtras', 'mathematicalGreek'),\n // nalt: not enough info. what type of annotation?\n // ornm: ditto, which ornament style?\n calt: feature('contextualAlternates', 'contextualAlternates'),\n // or more?\n vrt2: feature('verticalSubstitution', 'substituteVerticalForms'),\n // oh... below?\n vert: feature('verticalSubstitution', 'substituteVerticalForms'),\n tnum: feature('numberSpacing', 'monospacedNumbers'),\n pnum: feature('numberSpacing', 'proportionalNumbers'),\n sups: feature('verticalPosition', 'superiors'),\n subs: feature('verticalPosition', 'inferiors'),\n ordn: feature('verticalPosition', 'ordinals'),\n pwid: feature('textSpacing', 'proportionalText'),\n hwid: feature('textSpacing', 'halfWidthText'),\n qwid: feature('textSpacing', 'quarterWidthText'),\n // also QuarterWidthNumbers?\n twid: feature('textSpacing', 'thirdWidthText'),\n // also ThirdWidthNumbers?\n fwid: feature('textSpacing', 'proportionalText'),\n //??\n palt: feature('textSpacing', 'altProportionalText'),\n trad: feature('characterShape', 'traditionalCharacters'),\n smpl: feature('characterShape', 'simplifiedCharacters'),\n jp78: feature('characterShape', 'JIS1978Characters'),\n jp83: feature('characterShape', 'JIS1983Characters'),\n jp90: feature('characterShape', 'JIS1990Characters'),\n jp04: feature('characterShape', 'JIS2004Characters'),\n expt: feature('characterShape', 'expertCharacters'),\n hojo: feature('characterShape', 'hojoCharacters'),\n nlck: feature('characterShape', 'NLCCharacters'),\n tnam: feature('characterShape', 'traditionalNamesCharacters'),\n ruby: feature('rubyKana', 'rubyKana'),\n titl: feature('styleOptions', 'titlingCaps'),\n zero: feature('typographicExtras', 'slashedZero'),\n ss01: feature('stylisticAlternatives', 'stylisticAltOne'),\n ss02: feature('stylisticAlternatives', 'stylisticAltTwo'),\n ss03: feature('stylisticAlternatives', 'stylisticAltThree'),\n ss04: feature('stylisticAlternatives', 'stylisticAltFour'),\n ss05: feature('stylisticAlternatives', 'stylisticAltFive'),\n ss06: feature('stylisticAlternatives', 'stylisticAltSix'),\n ss07: feature('stylisticAlternatives', 'stylisticAltSeven'),\n ss08: feature('stylisticAlternatives', 'stylisticAltEight'),\n ss09: feature('stylisticAlternatives', 'stylisticAltNine'),\n ss10: feature('stylisticAlternatives', 'stylisticAltTen'),\n ss11: feature('stylisticAlternatives', 'stylisticAltEleven'),\n ss12: feature('stylisticAlternatives', 'stylisticAltTwelve'),\n ss13: feature('stylisticAlternatives', 'stylisticAltThirteen'),\n ss14: feature('stylisticAlternatives', 'stylisticAltFourteen'),\n ss15: feature('stylisticAlternatives', 'stylisticAltFifteen'),\n ss16: feature('stylisticAlternatives', 'stylisticAltSixteen'),\n ss17: feature('stylisticAlternatives', 'stylisticAltSeventeen'),\n ss18: feature('stylisticAlternatives', 'stylisticAltEighteen'),\n ss19: feature('stylisticAlternatives', 'stylisticAltNineteen'),\n ss20: feature('stylisticAlternatives', 'stylisticAltTwenty')\n}; // salt: feature 'stylisticAlternatives', 'stylisticAltOne' # hmm, which one to choose\n// Add cv01-cv99 features\n\nfor (var i = 1; i <= 99; i++) {\n OTMapping[\"cv\".concat(\"00\".concat(i).slice(-2))] = [features.characterAlternatives.code, i];\n} // create inverse mapping\n\nvar AATMapping = {};\nfor (var ot in OTMapping) {\n var aat = OTMapping[ot];\n if (AATMapping[aat[0]] == null) {\n AATMapping[aat[0]] = {};\n }\n AATMapping[aat[0]][aat[1]] = ot;\n} // Maps an array of OpenType features to AAT features\n// in the form of {featureType:{featureSetting:true}}\n\nfunction mapOTToAAT(features) {\n var res = {};\n for (var k in features) {\n var r = void 0;\n if (r = OTMapping[k]) {\n if (res[r[0]] == null) {\n res[r[0]] = {};\n }\n res[r[0]][r[1]] = features[k];\n }\n }\n return res;\n} // Maps strings in a [featureType, featureSetting]\n// to their equivalent number codes\n\nfunction mapFeatureStrings(f) {\n var type = f[0],\n setting = f[1];\n if (isNaN(type)) {\n var typeCode = features[type] && features[type].code;\n } else {\n var typeCode = type;\n }\n if (isNaN(setting)) {\n var settingCode = features[type] && features[type][setting];\n } else {\n var settingCode = setting;\n }\n return [typeCode, settingCode];\n} // Maps AAT features to an array of OpenType features\n// Supports both arrays in the form of [[featureType, featureSetting]]\n// and objects in the form of {featureType:{featureSetting:true}}\n// featureTypes and featureSettings can be either strings or number codes\n\nfunction mapAATToOT(features) {\n var res = {};\n if (Array.isArray(features)) {\n for (var k = 0; k < features.length; k++) {\n var r = void 0;\n var f = mapFeatureStrings(features[k]);\n if (r = AATMapping[f[0]] && AATMapping[f[0]][f[1]]) {\n res[r] = true;\n }\n }\n } else if (typeof features === 'object') {\n for (var type in features) {\n var _feature = features[type];\n for (var setting in _feature) {\n var _r = void 0;\n var _f = mapFeatureStrings([type, setting]);\n if (_feature[setting] && (_r = AATMapping[_f[0]] && AATMapping[_f[0]][_f[1]])) {\n res[_r] = true;\n }\n }\n }\n }\n return Object.keys(res);\n}\nvar _class$1;\nvar AATLookupTable = (_class$1 = /*#__PURE__*/function () {\n function AATLookupTable(table) {\n this.table = table;\n }\n var _proto19 = AATLookupTable.prototype;\n _proto19.lookup = function lookup(glyph) {\n switch (this.table.version) {\n case 0:\n // simple array format\n return this.table.values.getItem(glyph);\n case 2: // segment format\n\n case 4:\n {\n var min = 0;\n var max = this.table.binarySearchHeader.nUnits - 1;\n while (min <= max) {\n var mid = min + max >> 1;\n var seg = this.table.segments[mid]; // special end of search value\n\n if (seg.firstGlyph === 0xffff) {\n return null;\n }\n if (glyph < seg.firstGlyph) {\n max = mid - 1;\n } else if (glyph > seg.lastGlyph) {\n min = mid + 1;\n } else {\n if (this.table.version === 2) {\n return seg.value;\n } else {\n return seg.values[glyph - seg.firstGlyph];\n }\n }\n }\n return null;\n }\n case 6:\n {\n // lookup single\n var _min = 0;\n var _max = this.table.binarySearchHeader.nUnits - 1;\n while (_min <= _max) {\n var mid = _min + _max >> 1;\n var seg = this.table.segments[mid]; // special end of search value\n\n if (seg.glyph === 0xffff) {\n return null;\n }\n if (glyph < seg.glyph) {\n _max = mid - 1;\n } else if (glyph > seg.glyph) {\n _min = mid + 1;\n } else {\n return seg.value;\n }\n }\n return null;\n }\n case 8:\n // lookup trimmed\n return this.table.values[glyph - this.table.firstGlyph];\n default:\n throw new Error(\"Unknown lookup table format: \".concat(this.table.version));\n }\n };\n _proto19.glyphsForValue = function glyphsForValue(classValue) {\n var res = [];\n switch (this.table.version) {\n case 2: // segment format\n\n case 4:\n {\n for (var _iterator21 = _createForOfIteratorHelperLoose(this.table.segments), _step21; !(_step21 = _iterator21()).done;) {\n var segment = _step21.value;\n if (this.table.version === 2 && segment.value === classValue) {\n res.push.apply(res, range(segment.firstGlyph, segment.lastGlyph + 1));\n } else {\n for (var index = 0; index < segment.values.length; index++) {\n if (segment.values[index] === classValue) {\n res.push(segment.firstGlyph + index);\n }\n }\n }\n }\n break;\n }\n case 6:\n {\n // lookup single\n for (var _iterator22 = _createForOfIteratorHelperLoose(this.table.segments), _step22; !(_step22 = _iterator22()).done;) {\n var _segment = _step22.value;\n if (_segment.value === classValue) {\n res.push(_segment.glyph);\n }\n }\n break;\n }\n case 8:\n {\n // lookup trimmed\n for (var i = 0; i < this.table.values.length; i++) {\n if (this.table.values[i] === classValue) {\n res.push(this.table.firstGlyph + i);\n }\n }\n break;\n }\n default:\n throw new Error(\"Unknown lookup table format: \".concat(this.table.version));\n }\n return res;\n };\n return AATLookupTable;\n}(), _applyDecoratedDescriptor(_class$1.prototype, \"glyphsForValue\", [cache], Object.getOwnPropertyDescriptor(_class$1.prototype, \"glyphsForValue\"), _class$1.prototype), _class$1);\nvar START_OF_TEXT_STATE = 0;\nvar END_OF_TEXT_CLASS = 0;\nvar OUT_OF_BOUNDS_CLASS = 1;\nvar DELETED_GLYPH_CLASS = 2;\nvar DONT_ADVANCE = 0x4000;\nvar AATStateMachine = /*#__PURE__*/function () {\n function AATStateMachine(stateTable) {\n this.stateTable = stateTable;\n this.lookupTable = new AATLookupTable(stateTable.classTable);\n }\n var _proto20 = AATStateMachine.prototype;\n _proto20.process = function process(glyphs, reverse, processEntry) {\n var currentState = START_OF_TEXT_STATE; // START_OF_LINE_STATE is used for kashida glyph insertions sometimes I think?\n\n var index = reverse ? glyphs.length - 1 : 0;\n var dir = reverse ? -1 : 1;\n while (dir === 1 && index <= glyphs.length || dir === -1 && index >= -1) {\n var glyph = null;\n var classCode = OUT_OF_BOUNDS_CLASS;\n var shouldAdvance = true;\n if (index === glyphs.length || index === -1) {\n classCode = END_OF_TEXT_CLASS;\n } else {\n glyph = glyphs[index];\n if (glyph.id === 0xffff) {\n // deleted glyph\n classCode = DELETED_GLYPH_CLASS;\n } else {\n classCode = this.lookupTable.lookup(glyph.id);\n if (classCode == null) {\n classCode = OUT_OF_BOUNDS_CLASS;\n }\n }\n }\n var row = this.stateTable.stateArray.getItem(currentState);\n var entryIndex = row[classCode];\n var entry = this.stateTable.entryTable.getItem(entryIndex);\n if (classCode !== END_OF_TEXT_CLASS && classCode !== DELETED_GLYPH_CLASS) {\n processEntry(glyph, entry, index);\n shouldAdvance = !(entry.flags & DONT_ADVANCE);\n }\n currentState = entry.newState;\n if (shouldAdvance) {\n index += dir;\n }\n }\n return glyphs;\n }\n /**\r\n * Performs a depth-first traversal of the glyph strings\r\n * represented by the state machine.\r\n */;\n _proto20.traverse = function traverse(opts, state, visited) {\n if (state === void 0) {\n state = 0;\n }\n if (visited === void 0) {\n visited = new Set();\n }\n if (visited.has(state)) {\n return;\n }\n visited.add(state);\n var _this$stateTable = this.stateTable,\n nClasses = _this$stateTable.nClasses,\n stateArray = _this$stateTable.stateArray,\n entryTable = _this$stateTable.entryTable;\n var row = stateArray.getItem(state); // Skip predefined classes\n\n for (var classCode = 4; classCode < nClasses; classCode++) {\n var entryIndex = row[classCode];\n var entry = entryTable.getItem(entryIndex); // Try all glyphs in the class\n\n for (var _iterator23 = _createForOfIteratorHelperLoose(this.lookupTable.glyphsForValue(classCode)), _step23; !(_step23 = _iterator23()).done;) {\n var glyph = _step23.value;\n if (opts.enter) {\n opts.enter(glyph, entry);\n }\n if (entry.newState !== 0) {\n this.traverse(opts, entry.newState, visited);\n }\n if (opts.exit) {\n opts.exit(glyph, entry);\n }\n }\n }\n };\n return AATStateMachine;\n}();\nvar _class$2;\nvar MARK_FIRST = 0x8000;\nvar MARK_LAST = 0x2000;\nvar VERB = 0x000F; // contextual substitution and glyph insertion flag\n\nvar SET_MARK = 0x8000; // ligature entry flags\n\nvar SET_COMPONENT = 0x8000;\nvar PERFORM_ACTION = 0x2000; // ligature action masks\n\nvar LAST_MASK = 0x80000000;\nvar STORE_MASK = 0x40000000;\nvar OFFSET_MASK = 0x3FFFFFFF;\nvar REVERSE_DIRECTION = 0x400000;\nvar CURRENT_INSERT_BEFORE = 0x0800;\nvar MARKED_INSERT_BEFORE = 0x0400;\nvar CURRENT_INSERT_COUNT = 0x03E0;\nvar MARKED_INSERT_COUNT = 0x001F;\nvar AATMorxProcessor = (_class$2 = /*#__PURE__*/function () {\n function AATMorxProcessor(font) {\n this.processIndicRearragement = this.processIndicRearragement.bind(this);\n this.processContextualSubstitution = this.processContextualSubstitution.bind(this);\n this.processLigature = this.processLigature.bind(this);\n this.processNoncontextualSubstitutions = this.processNoncontextualSubstitutions.bind(this);\n this.processGlyphInsertion = this.processGlyphInsertion.bind(this);\n this.font = font;\n this.morx = font.morx;\n this.inputCache = null;\n } // Processes an array of glyphs and applies the specified features\n // Features should be in the form of {featureType:{featureSetting:boolean}}\n var _proto21 = AATMorxProcessor.prototype;\n _proto21.process = function process(glyphs, features) {\n if (features === void 0) {\n features = {};\n }\n for (var _iterator24 = _createForOfIteratorHelperLoose(this.morx.chains), _step24; !(_step24 = _iterator24()).done;) {\n var chain = _step24.value;\n var flags = chain.defaultFlags; // enable/disable the requested features\n\n for (var _iterator25 = _createForOfIteratorHelperLoose(chain.features), _step25; !(_step25 = _iterator25()).done;) {\n var feature = _step25.value;\n var f = void 0;\n if (f = features[feature.featureType]) {\n if (f[feature.featureSetting]) {\n flags &= feature.disableFlags;\n flags |= feature.enableFlags;\n } else if (f[feature.featureSetting] === false) {\n flags |= ~feature.disableFlags;\n flags &= ~feature.enableFlags;\n }\n }\n }\n for (var _iterator26 = _createForOfIteratorHelperLoose(chain.subtables), _step26; !(_step26 = _iterator26()).done;) {\n var subtable = _step26.value;\n if (subtable.subFeatureFlags & flags) {\n this.processSubtable(subtable, glyphs);\n }\n }\n } // remove deleted glyphs\n\n var index = glyphs.length - 1;\n while (index >= 0) {\n if (glyphs[index].id === 0xffff) {\n glyphs.splice(index, 1);\n }\n index--;\n }\n return glyphs;\n };\n _proto21.processSubtable = function processSubtable(subtable, glyphs) {\n this.subtable = subtable;\n this.glyphs = glyphs;\n if (this.subtable.type === 4) {\n this.processNoncontextualSubstitutions(this.subtable, this.glyphs);\n return;\n }\n this.ligatureStack = [];\n this.markedGlyph = null;\n this.firstGlyph = null;\n this.lastGlyph = null;\n this.markedIndex = null;\n var stateMachine = this.getStateMachine(subtable);\n var process = this.getProcessor();\n var reverse = !!(this.subtable.coverage & REVERSE_DIRECTION);\n return stateMachine.process(this.glyphs, reverse, process);\n };\n _proto21.getStateMachine = function getStateMachine(subtable) {\n return new AATStateMachine(subtable.table.stateTable);\n };\n _proto21.getProcessor = function getProcessor() {\n switch (this.subtable.type) {\n case 0:\n return this.processIndicRearragement;\n case 1:\n return this.processContextualSubstitution;\n case 2:\n return this.processLigature;\n case 4:\n return this.processNoncontextualSubstitutions;\n case 5:\n return this.processGlyphInsertion;\n default:\n throw new Error(\"Invalid morx subtable type: \".concat(this.subtable.type));\n }\n };\n _proto21.processIndicRearragement = function processIndicRearragement(glyph, entry, index) {\n if (entry.flags & MARK_FIRST) {\n this.firstGlyph = index;\n }\n if (entry.flags & MARK_LAST) {\n this.lastGlyph = index;\n }\n reorderGlyphs(this.glyphs, entry.flags & VERB, this.firstGlyph, this.lastGlyph);\n };\n _proto21.processContextualSubstitution = function processContextualSubstitution(glyph, entry, index) {\n var subsitutions = this.subtable.table.substitutionTable.items;\n if (entry.markIndex !== 0xffff) {\n var lookup = subsitutions.getItem(entry.markIndex);\n var lookupTable = new AATLookupTable(lookup);\n glyph = this.glyphs[this.markedGlyph];\n var gid = lookupTable.lookup(glyph.id);\n if (gid) {\n this.glyphs[this.markedGlyph] = this.font.getGlyph(gid, glyph.codePoints);\n }\n }\n if (entry.currentIndex !== 0xffff) {\n var _lookup = subsitutions.getItem(entry.currentIndex);\n var _lookupTable = new AATLookupTable(_lookup);\n glyph = this.glyphs[index];\n var gid = _lookupTable.lookup(glyph.id);\n if (gid) {\n this.glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);\n }\n }\n if (entry.flags & SET_MARK) {\n this.markedGlyph = index;\n }\n };\n _proto21.processLigature = function processLigature(glyph, entry, index) {\n if (entry.flags & SET_COMPONENT) {\n this.ligatureStack.push(index);\n }\n if (entry.flags & PERFORM_ACTION) {\n var _this$ligatureStack;\n var actions = this.subtable.table.ligatureActions;\n var components = this.subtable.table.components;\n var ligatureList = this.subtable.table.ligatureList;\n var actionIndex = entry.action;\n var last = false;\n var ligatureIndex = 0;\n var codePoints = [];\n var ligatureGlyphs = [];\n while (!last) {\n var _codePoints;\n var componentGlyph = this.ligatureStack.pop();\n (_codePoints = codePoints).unshift.apply(_codePoints, this.glyphs[componentGlyph].codePoints);\n var action = actions.getItem(actionIndex++);\n last = !!(action & LAST_MASK);\n var store = !!(action & STORE_MASK);\n var offset = (action & OFFSET_MASK) << 2 >> 2; // sign extend 30 to 32 bits\n\n offset += this.glyphs[componentGlyph].id;\n var component = components.getItem(offset);\n ligatureIndex += component;\n if (last || store) {\n var ligatureEntry = ligatureList.getItem(ligatureIndex);\n this.glyphs[componentGlyph] = this.font.getGlyph(ligatureEntry, codePoints);\n ligatureGlyphs.push(componentGlyph);\n ligatureIndex = 0;\n codePoints = [];\n } else {\n this.glyphs[componentGlyph] = this.font.getGlyph(0xffff);\n }\n } // Put ligature glyph indexes back on the stack\n\n (_this$ligatureStack = this.ligatureStack).push.apply(_this$ligatureStack, ligatureGlyphs);\n }\n };\n _proto21.processNoncontextualSubstitutions = function processNoncontextualSubstitutions(subtable, glyphs, index) {\n var lookupTable = new AATLookupTable(subtable.table.lookupTable);\n for (index = 0; index < glyphs.length; index++) {\n var glyph = glyphs[index];\n if (glyph.id !== 0xffff) {\n var gid = lookupTable.lookup(glyph.id);\n if (gid) {\n // 0 means do nothing\n glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);\n }\n }\n }\n };\n _proto21._insertGlyphs = function _insertGlyphs(glyphIndex, insertionActionIndex, count, isBefore) {\n var _this$glyphs;\n var insertions = [];\n while (count--) {\n var gid = this.subtable.table.insertionActions.getItem(insertionActionIndex++);\n insertions.push(this.font.getGlyph(gid));\n }\n if (!isBefore) {\n glyphIndex++;\n }\n (_this$glyphs = this.glyphs).splice.apply(_this$glyphs, [glyphIndex, 0].concat(insertions));\n };\n _proto21.processGlyphInsertion = function processGlyphInsertion(glyph, entry, index) {\n if (entry.flags & SET_MARK) {\n this.markedIndex = index;\n }\n if (entry.markedInsertIndex !== 0xffff) {\n var count = (entry.flags & MARKED_INSERT_COUNT) >>> 5;\n var isBefore = !!(entry.flags & MARKED_INSERT_BEFORE);\n this._insertGlyphs(this.markedIndex, entry.markedInsertIndex, count, isBefore);\n }\n if (entry.currentInsertIndex !== 0xffff) {\n var _count = (entry.flags & CURRENT_INSERT_COUNT) >>> 5;\n var _isBefore = !!(entry.flags & CURRENT_INSERT_BEFORE);\n this._insertGlyphs(index, entry.currentInsertIndex, _count, _isBefore);\n }\n };\n _proto21.getSupportedFeatures = function getSupportedFeatures() {\n var features = [];\n for (var _iterator27 = _createForOfIteratorHelperLoose(this.morx.chains), _step27; !(_step27 = _iterator27()).done;) {\n var chain = _step27.value;\n for (var _iterator28 = _createForOfIteratorHelperLoose(chain.features), _step28; !(_step28 = _iterator28()).done;) {\n var feature = _step28.value;\n features.push([feature.featureType, feature.featureSetting]);\n }\n }\n return features;\n };\n _proto21.generateInputs = function generateInputs(gid) {\n if (!this.inputCache) {\n this.generateInputCache();\n }\n return this.inputCache[gid] || [];\n };\n _proto21.generateInputCache = function generateInputCache() {\n this.inputCache = {};\n for (var _iterator29 = _createForOfIteratorHelperLoose(this.morx.chains), _step29; !(_step29 = _iterator29()).done;) {\n var chain = _step29.value;\n var flags = chain.defaultFlags;\n for (var _iterator30 = _createForOfIteratorHelperLoose(chain.subtables), _step30; !(_step30 = _iterator30()).done;) {\n var subtable = _step30.value;\n if (subtable.subFeatureFlags & flags) {\n this.generateInputsForSubtable(subtable);\n }\n }\n }\n };\n _proto21.generateInputsForSubtable = function generateInputsForSubtable(subtable) {\n var _this3 = this;\n // Currently, only supporting ligature subtables.\n if (subtable.type !== 2) {\n return;\n }\n var reverse = !!(subtable.coverage & REVERSE_DIRECTION);\n if (reverse) {\n throw new Error('Reverse subtable, not supported.');\n }\n this.subtable = subtable;\n this.ligatureStack = [];\n var stateMachine = this.getStateMachine(subtable);\n var process = this.getProcessor();\n var input = [];\n var stack = [];\n this.glyphs = [];\n stateMachine.traverse({\n enter: function enter(glyph, entry) {\n var glyphs = _this3.glyphs;\n stack.push({\n glyphs: glyphs.slice(),\n ligatureStack: _this3.ligatureStack.slice()\n }); // Add glyph to input and glyphs to process.\n\n var g = _this3.font.getGlyph(glyph);\n input.push(g);\n glyphs.push(input[input.length - 1]); // Process ligature substitution\n\n process(glyphs[glyphs.length - 1], entry, glyphs.length - 1); // Add input to result if only one matching (non-deleted) glyph remains.\n\n var count = 0;\n var found = 0;\n for (var i = 0; i < glyphs.length && count <= 1; i++) {\n if (glyphs[i].id !== 0xffff) {\n count++;\n found = glyphs[i].id;\n }\n }\n if (count === 1) {\n var result = input.map(function (g) {\n return g.id;\n });\n var _cache = _this3.inputCache[found];\n if (_cache) {\n _cache.push(result);\n } else {\n _this3.inputCache[found] = [result];\n }\n }\n },\n exit: function exit() {\n var _stack$pop = stack.pop();\n _this3.glyphs = _stack$pop.glyphs;\n _this3.ligatureStack = _stack$pop.ligatureStack;\n input.pop();\n }\n });\n };\n return AATMorxProcessor;\n}(), _applyDecoratedDescriptor(_class$2.prototype, \"getStateMachine\", [cache], Object.getOwnPropertyDescriptor(_class$2.prototype, \"getStateMachine\"), _class$2.prototype), _class$2);\n// reverse the glyphs inside those ranges if specified\n// ranges are in [offset, length] format\n\nfunction swap(glyphs, rangeA, rangeB, reverseA, reverseB) {\n if (reverseA === void 0) {\n reverseA = false;\n }\n if (reverseB === void 0) {\n reverseB = false;\n }\n var end = glyphs.splice(rangeB[0] - (rangeB[1] - 1), rangeB[1]);\n if (reverseB) {\n end.reverse();\n }\n var start = glyphs.splice.apply(glyphs, [rangeA[0], rangeA[1]].concat(end));\n if (reverseA) {\n start.reverse();\n }\n glyphs.splice.apply(glyphs, [rangeB[0] - (rangeA[1] - 1), 0].concat(start));\n return glyphs;\n}\nfunction reorderGlyphs(glyphs, verb, firstGlyph, lastGlyph) {\n switch (verb) {\n case 0:\n // no change\n return glyphs;\n case 1:\n // Ax => xA\n return swap(glyphs, [firstGlyph, 1], [lastGlyph, 0]);\n case 2:\n // xD => Dx\n return swap(glyphs, [firstGlyph, 0], [lastGlyph, 1]);\n case 3:\n // AxD => DxA\n return swap(glyphs, [firstGlyph, 1], [lastGlyph, 1]);\n case 4:\n // ABx => xAB\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0]);\n case 5:\n // ABx => xBA\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0], true, false);\n case 6:\n // xCD => CDx\n return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2]);\n case 7:\n // xCD => DCx\n return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2], false, true);\n case 8:\n // AxCD => CDxA\n return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2]);\n case 9:\n // AxCD => DCxA\n return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2], false, true);\n case 10:\n // ABxD => DxAB\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1]);\n case 11:\n // ABxD => DxBA\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1], true, false);\n case 12:\n // ABxCD => CDxAB\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2]);\n case 13:\n // ABxCD => CDxBA\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, false);\n case 14:\n // ABxCD => DCxAB\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], false, true);\n case 15:\n // ABxCD => DCxBA\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, true);\n default:\n throw new Error(\"Unknown verb: \".concat(verb));\n }\n}\nvar AATLayoutEngine = /*#__PURE__*/function () {\n function AATLayoutEngine(font) {\n this.font = font;\n this.morxProcessor = new AATMorxProcessor(font);\n this.fallbackPosition = false;\n }\n var _proto22 = AATLayoutEngine.prototype;\n _proto22.substitute = function substitute(glyphRun) {\n // AAT expects the glyphs to be in visual order prior to morx processing,\n // so reverse the glyphs if the script is right-to-left.\n if (glyphRun.direction === 'rtl') {\n glyphRun.glyphs.reverse();\n }\n this.morxProcessor.process(glyphRun.glyphs, mapOTToAAT(glyphRun.features));\n };\n _proto22.getAvailableFeatures = function getAvailableFeatures(script, language) {\n return mapAATToOT(this.morxProcessor.getSupportedFeatures());\n };\n _proto22.stringsForGlyph = function stringsForGlyph(gid) {\n var glyphStrings = this.morxProcessor.generateInputs(gid);\n var result = new Set();\n for (var _iterator31 = _createForOfIteratorHelperLoose(glyphStrings), _step31; !(_step31 = _iterator31()).done;) {\n var glyphs = _step31.value;\n this._addStrings(glyphs, 0, result, '');\n }\n return result;\n };\n _proto22._addStrings = function _addStrings(glyphs, index, strings, string) {\n var codePoints = this.font._cmapProcessor.codePointsForGlyph(glyphs[index]);\n for (var _iterator32 = _createForOfIteratorHelperLoose(codePoints), _step32; !(_step32 = _iterator32()).done;) {\n var codePoint = _step32.value;\n var s = string + String.fromCodePoint(codePoint);\n if (index < glyphs.length - 1) {\n this._addStrings(glyphs, index + 1, strings, s);\n } else {\n strings.add(s);\n }\n }\n };\n return AATLayoutEngine;\n}();\n/**\r\n * ShapingPlans are used by the OpenType shapers to store which\r\n * features should by applied, and in what order to apply them.\r\n * The features are applied in groups called stages. A feature\r\n * can be applied globally to all glyphs, or locally to only\r\n * specific glyphs.\r\n *\r\n * @private\r\n */\nvar ShapingPlan = /*#__PURE__*/function () {\n function ShapingPlan(font, script, direction) {\n this.font = font;\n this.script = script;\n this.direction = direction;\n this.stages = [];\n this.globalFeatures = {};\n this.allFeatures = {};\n }\n /**\r\n * Adds the given features to the last stage.\r\n * Ignores features that have already been applied.\r\n */\n var _proto23 = ShapingPlan.prototype;\n _proto23._addFeatures = function _addFeatures(features, global) {\n var stageIndex = this.stages.length - 1;\n var stage = this.stages[stageIndex];\n for (var _iterator33 = _createForOfIteratorHelperLoose(features), _step33; !(_step33 = _iterator33()).done;) {\n var feature = _step33.value;\n if (this.allFeatures[feature] == null) {\n stage.push(feature);\n this.allFeatures[feature] = stageIndex;\n if (global) {\n this.globalFeatures[feature] = true;\n }\n }\n }\n }\n /**\r\n * Add features to the last stage\r\n */;\n _proto23.add = function add(arg, global) {\n if (global === void 0) {\n global = true;\n }\n if (this.stages.length === 0) {\n this.stages.push([]);\n }\n if (typeof arg === 'string') {\n arg = [arg];\n }\n if (Array.isArray(arg)) {\n this._addFeatures(arg, global);\n } else if (typeof arg === 'object') {\n this._addFeatures(arg.global || [], true);\n this._addFeatures(arg.local || [], false);\n } else {\n throw new Error(\"Unsupported argument to ShapingPlan#add\");\n }\n }\n /**\r\n * Add a new stage\r\n */;\n _proto23.addStage = function addStage(arg, global) {\n if (typeof arg === 'function') {\n this.stages.push(arg, []);\n } else {\n this.stages.push([]);\n this.add(arg, global);\n }\n };\n _proto23.setFeatureOverrides = function setFeatureOverrides(features) {\n if (Array.isArray(features)) {\n this.add(features);\n } else if (typeof features === 'object') {\n for (var tag in features) {\n if (features[tag]) {\n this.add(tag);\n } else if (this.allFeatures[tag] != null) {\n var stage = this.stages[this.allFeatures[tag]];\n stage.splice(stage.indexOf(tag), 1);\n delete this.allFeatures[tag];\n delete this.globalFeatures[tag];\n }\n }\n }\n }\n /**\r\n * Assigns the global features to the given glyphs\r\n */;\n _proto23.assignGlobalFeatures = function assignGlobalFeatures(glyphs) {\n for (var _iterator34 = _createForOfIteratorHelperLoose(glyphs), _step34; !(_step34 = _iterator34()).done;) {\n var glyph = _step34.value;\n for (var feature in this.globalFeatures) {\n glyph.features[feature] = true;\n }\n }\n }\n /**\r\n * Executes the planned stages using the given OTProcessor\r\n */;\n _proto23.process = function process(processor, glyphs, positions) {\n for (var _iterator35 = _createForOfIteratorHelperLoose(this.stages), _step35; !(_step35 = _iterator35()).done;) {\n var stage = _step35.value;\n if (typeof stage === 'function') {\n if (!positions) {\n stage(this.font, glyphs, this);\n }\n } else if (stage.length > 0) {\n processor.applyFeatures(stage, glyphs, positions);\n }\n }\n };\n return ShapingPlan;\n}();\nvar VARIATION_FEATURES = ['rvrn'];\nvar COMMON_FEATURES = ['ccmp', 'locl', 'rlig', 'mark', 'mkmk'];\nvar FRACTIONAL_FEATURES = ['frac', 'numr', 'dnom'];\nvar HORIZONTAL_FEATURES = ['calt', 'clig', 'liga', 'rclt', 'curs', 'kern'];\nvar DIRECTIONAL_FEATURES = {\n ltr: ['ltra', 'ltrm'],\n rtl: ['rtla', 'rtlm']\n};\nvar DefaultShaper = /*#__PURE__*/function () {\n function DefaultShaper() {}\n DefaultShaper.plan = function plan(_plan, glyphs, features) {\n // Plan the features we want to apply\n this.planPreprocessing(_plan);\n this.planFeatures(_plan);\n this.planPostprocessing(_plan, features); // Assign the global features to all the glyphs\n\n _plan.assignGlobalFeatures(glyphs); // Assign local features to glyphs\n\n this.assignFeatures(_plan, glyphs);\n };\n DefaultShaper.planPreprocessing = function planPreprocessing(plan) {\n plan.add({\n global: [].concat(VARIATION_FEATURES, DIRECTIONAL_FEATURES[plan.direction]),\n local: FRACTIONAL_FEATURES\n });\n };\n DefaultShaper.planFeatures = function planFeatures(plan) {// Do nothing by default. Let subclasses override this.\n };\n DefaultShaper.planPostprocessing = function planPostprocessing(plan, userFeatures) {\n plan.add([].concat(COMMON_FEATURES, HORIZONTAL_FEATURES));\n plan.setFeatureOverrides(userFeatures);\n };\n DefaultShaper.assignFeatures = function assignFeatures(plan, glyphs) {\n // Enable contextual fractions\n for (var i = 0; i < glyphs.length; i++) {\n var glyph = glyphs[i];\n if (glyph.codePoints[0] === 0x2044) {\n // fraction slash\n var start = i;\n var end = i + 1; // Apply numerator\n\n while (start > 0 && unicode.isDigit(glyphs[start - 1].codePoints[0])) {\n glyphs[start - 1].features.numr = true;\n glyphs[start - 1].features.frac = true;\n start--;\n } // Apply denominator\n\n while (end < glyphs.length && unicode.isDigit(glyphs[end].codePoints[0])) {\n glyphs[end].features.dnom = true;\n glyphs[end].features.frac = true;\n end++;\n } // Apply fraction slash\n\n glyph.features.frac = true;\n i = end - 1;\n }\n }\n };\n return DefaultShaper;\n}();\n_defineProperty(DefaultShaper, \"zeroMarkWidths\", 'AFTER_GPOS');\nvar trie = new UnicodeTrie(Buffer(\"APABAAAAAAAAOAAAAf0BAv7tmi1MxDAUx7vtvjhAgcDgkEgEAnmXEBIMCYaEcygEiqBQ4FAkCE4ikUgMiiBJSAgSiUQSDMn9L9eSl6bddddug9t7yS/trevre+3r27pcNxZiG+yCfdCVv/9LeQxOwRm4AJegD27ALbgD9+ABPJF+z+BN/h7yDj5k/VOWX6SdmU5+wLWknggxDxaS8u0qiiX4uiz9XamQ3wzDMAzDMAzDMAzDVI/h959V/v7BMAzDMAzDMLlyNTNiMSdewVxbiA44B4/guz1qW58VYlMI0WsJ0W+N6kXw0spvPtdwhtkwnGM6uLaV4Xyzg3v3PM9DPfQ/sOg4xPWjipy31P8LTqbU304c/cLCUmWJLNB2Uz2U1KTeRKNmKHVMfbJC+/0loTZRH/W5cvEvBJPMbREkWt3FD1NcqXZBSpuE2Ad0PBehPtNrPtIEdYP+hiRt/V1jIiE69X4NT/uVZI3PUHE9bm5M7ePGdZWy951v7Nn6j8v1WWKP3mt6ttnsigx6VN7Vc0VomSSGqW2mGNP1muZPl7LfjNUaKNFtDGVf2fvE9O7VlBS5j333c5p/eeoOqcs1R/hIqDWLJ7TTlksirVT1SI7l8k4Yp+g3jafGcrU1RM6l9th80XOpnlN97bDNY4i4s61B0Si/ipa0uHMl6zqEjlFfCZm/TM8KmzQDjmuTAQ==\",\"base64\"));\nvar FEATURES = ['isol', 'fina', 'fin2', 'fin3', 'medi', 'med2', 'init'];\nvar ShapingClasses = {\n Non_Joining: 0,\n Left_Joining: 1,\n Right_Joining: 2,\n Dual_Joining: 3,\n Join_Causing: 3,\n ALAPH: 4,\n 'DALATH RISH': 5,\n Transparent: 6\n};\nvar ISOL = 'isol';\nvar FINA = 'fina';\nvar FIN2 = 'fin2';\nvar FIN3 = 'fin3';\nvar MEDI = 'medi';\nvar MED2 = 'med2';\nvar INIT = 'init';\nvar NONE = null; // Each entry is [prevAction, curAction, nextState]\n\nvar STATE_TABLE = [\n// Non_Joining, Left_Joining, Right_Joining, Dual_Joining, ALAPH, DALATH RISH\n// State 0: prev was U, not willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 6]],\n// State 1: prev was R or ISOL/ALAPH, not willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, FIN2, 5], [NONE, ISOL, 6]],\n// State 2: prev was D/L in ISOL form, willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [INIT, FINA, 1], [INIT, FINA, 3], [INIT, FINA, 4], [INIT, FINA, 6]],\n// State 3: prev was D in FINA form, willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [MEDI, FINA, 1], [MEDI, FINA, 3], [MEDI, FINA, 4], [MEDI, FINA, 6]],\n// State 4: prev was FINA ALAPH, not willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [MED2, ISOL, 1], [MED2, ISOL, 2], [MED2, FIN2, 5], [MED2, ISOL, 6]],\n// State 5: prev was FIN2/FIN3 ALAPH, not willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [ISOL, ISOL, 1], [ISOL, ISOL, 2], [ISOL, FIN2, 5], [ISOL, ISOL, 6]],\n// State 6: prev was DALATH/RISH, not willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, FIN3, 5], [NONE, ISOL, 6]]];\n/**\r\n * This is a shaper for Arabic, and other cursive scripts.\r\n * It uses data from ArabicShaping.txt in the Unicode database,\r\n * compiled to a UnicodeTrie by generate-data.coffee.\r\n *\r\n * The shaping state machine was ported from Harfbuzz.\r\n * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-arabic.cc\r\n */\nvar ArabicShaper = /*#__PURE__*/function (_DefaultShaper) {\n _inheritsLoose(ArabicShaper, _DefaultShaper);\n function ArabicShaper() {\n return _DefaultShaper.apply(this, arguments) || this;\n }\n ArabicShaper.planFeatures = function planFeatures(plan) {\n plan.add(['ccmp', 'locl']);\n for (var i = 0; i < FEATURES.length; i++) {\n var feature = FEATURES[i];\n plan.addStage(feature, false);\n }\n plan.addStage('mset');\n };\n ArabicShaper.assignFeatures = function assignFeatures(plan, glyphs) {\n _DefaultShaper.assignFeatures.call(this, plan, glyphs);\n var prev = -1;\n var state = 0;\n var actions = []; // Apply the state machine to map glyphs to features\n\n for (var i = 0; i < glyphs.length; i++) {\n var curAction = void 0,\n prevAction = void 0;\n var glyph = glyphs[i];\n var type = getShapingClass(glyph.codePoints[0]);\n if (type === ShapingClasses.Transparent) {\n actions[i] = NONE;\n continue;\n }\n var _STATE_TABLE$state$ty = STATE_TABLE[state][type];\n prevAction = _STATE_TABLE$state$ty[0];\n curAction = _STATE_TABLE$state$ty[1];\n state = _STATE_TABLE$state$ty[2];\n if (prevAction !== NONE && prev !== -1) {\n actions[prev] = prevAction;\n }\n actions[i] = curAction;\n prev = i;\n } // Apply the chosen features to their respective glyphs\n\n for (var index = 0; index < glyphs.length; index++) {\n var feature = void 0;\n var glyph = glyphs[index];\n if (feature = actions[index]) {\n glyph.features[feature] = true;\n }\n }\n };\n return ArabicShaper;\n}(DefaultShaper);\nfunction getShapingClass(codePoint) {\n var res = trie.get(codePoint);\n if (res) {\n return res - 1;\n }\n var category = unicode.getCategory(codePoint);\n if (category === 'Mn' || category === 'Me' || category === 'Cf') {\n return ShapingClasses.Transparent;\n }\n return ShapingClasses.Non_Joining;\n}\nvar GlyphIterator = /*#__PURE__*/function () {\n function GlyphIterator(glyphs, options) {\n this.glyphs = glyphs;\n this.reset(options);\n }\n var _proto24 = GlyphIterator.prototype;\n _proto24.reset = function reset(options, index) {\n if (options === void 0) {\n options = {};\n }\n if (index === void 0) {\n index = 0;\n }\n this.options = options;\n this.flags = options.flags || {};\n this.markAttachmentType = options.markAttachmentType || 0;\n this.index = index;\n };\n _proto24.shouldIgnore = function shouldIgnore(glyph) {\n return this.flags.ignoreMarks && glyph.isMark || this.flags.ignoreBaseGlyphs && glyph.isBase || this.flags.ignoreLigatures && glyph.isLigature || this.markAttachmentType && glyph.isMark && glyph.markAttachmentType !== this.markAttachmentType;\n };\n _proto24.move = function move(dir) {\n this.index += dir;\n while (0 <= this.index && this.index < this.glyphs.length && this.shouldIgnore(this.glyphs[this.index])) {\n this.index += dir;\n }\n if (0 > this.index || this.index >= this.glyphs.length) {\n return null;\n }\n return this.glyphs[this.index];\n };\n _proto24.next = function next() {\n return this.move(+1);\n };\n _proto24.prev = function prev() {\n return this.move(-1);\n };\n _proto24.peek = function peek(count) {\n if (count === void 0) {\n count = 1;\n }\n var idx = this.index;\n var res = this.increment(count);\n this.index = idx;\n return res;\n };\n _proto24.peekIndex = function peekIndex(count) {\n if (count === void 0) {\n count = 1;\n }\n var idx = this.index;\n this.increment(count);\n var res = this.index;\n this.index = idx;\n return res;\n };\n _proto24.increment = function increment(count) {\n if (count === void 0) {\n count = 1;\n }\n var dir = count < 0 ? -1 : 1;\n count = Math.abs(count);\n while (count--) {\n this.move(dir);\n }\n return this.glyphs[this.index];\n };\n _createClass(GlyphIterator, [{\n key: \"cur\",\n get: function get() {\n return this.glyphs[this.index] || null;\n }\n }]);\n return GlyphIterator;\n}();\nvar DEFAULT_SCRIPTS = ['DFLT', 'dflt', 'latn'];\nvar OTProcessor = /*#__PURE__*/function () {\n function OTProcessor(font, table) {\n this.font = font;\n this.table = table;\n this.script = null;\n this.scriptTag = null;\n this.language = null;\n this.languageTag = null;\n this.features = {};\n this.lookups = {}; // Setup variation substitutions\n\n this.variationsIndex = font._variationProcessor ? this.findVariationsIndex(font._variationProcessor.normalizedCoords) : -1; // initialize to default script + language\n\n this.selectScript(); // current context (set by applyFeatures)\n\n this.glyphs = [];\n this.positions = []; // only used by GPOS\n\n this.ligatureID = 1;\n this.currentFeature = null;\n }\n var _proto25 = OTProcessor.prototype;\n _proto25.findScript = function findScript(script) {\n if (this.table.scriptList == null) {\n return null;\n }\n if (!Array.isArray(script)) {\n script = [script];\n }\n for (var _iterator36 = _createForOfIteratorHelperLoose(script), _step36; !(_step36 = _iterator36()).done;) {\n var s = _step36.value;\n for (var _iterator37 = _createForOfIteratorHelperLoose(this.table.scriptList), _step37; !(_step37 = _iterator37()).done;) {\n var entry = _step37.value;\n if (entry.tag === s) {\n return entry;\n }\n }\n }\n return null;\n };\n _proto25.selectScript = function selectScript(script, language, direction$1) {\n var changed = false;\n var entry;\n if (!this.script || script !== this.scriptTag) {\n entry = this.findScript(script);\n if (!entry) {\n entry = this.findScript(DEFAULT_SCRIPTS);\n }\n if (!entry) {\n return this.scriptTag;\n }\n this.scriptTag = entry.tag;\n this.script = entry.script;\n this.language = null;\n this.languageTag = null;\n changed = true;\n }\n if (!direction$1 || direction$1 !== this.direction) {\n this.direction = direction$1 || direction(script);\n }\n if (language && language.length < 4) {\n language += ' '.repeat(4 - language.length);\n }\n if (!language || language !== this.languageTag) {\n this.language = null;\n for (var _iterator38 = _createForOfIteratorHelperLoose(this.script.langSysRecords), _step38; !(_step38 = _iterator38()).done;) {\n var lang = _step38.value;\n if (lang.tag === language) {\n this.language = lang.langSys;\n this.languageTag = lang.tag;\n break;\n }\n }\n if (!this.language) {\n this.language = this.script.defaultLangSys;\n this.languageTag = null;\n }\n changed = true;\n } // Build a feature lookup table\n\n if (changed) {\n this.features = {};\n if (this.language) {\n for (var _iterator39 = _createForOfIteratorHelperLoose(this.language.featureIndexes), _step39; !(_step39 = _iterator39()).done;) {\n var featureIndex = _step39.value;\n var record = this.table.featureList[featureIndex];\n var substituteFeature = this.substituteFeatureForVariations(featureIndex);\n this.features[record.tag] = substituteFeature || record.feature;\n }\n }\n }\n return this.scriptTag;\n };\n _proto25.lookupsForFeatures = function lookupsForFeatures(userFeatures, exclude) {\n if (userFeatures === void 0) {\n userFeatures = [];\n }\n var lookups = [];\n for (var _iterator40 = _createForOfIteratorHelperLoose(userFeatures), _step40; !(_step40 = _iterator40()).done;) {\n var tag = _step40.value;\n var feature = this.features[tag];\n if (!feature) {\n continue;\n }\n for (var _iterator41 = _createForOfIteratorHelperLoose(feature.lookupListIndexes), _step41; !(_step41 = _iterator41()).done;) {\n var lookupIndex = _step41.value;\n if (exclude && exclude.indexOf(lookupIndex) !== -1) {\n continue;\n }\n lookups.push({\n feature: tag,\n index: lookupIndex,\n lookup: this.table.lookupList.get(lookupIndex)\n });\n }\n }\n lookups.sort(function (a, b) {\n return a.index - b.index;\n });\n return lookups;\n };\n _proto25.substituteFeatureForVariations = function substituteFeatureForVariations(featureIndex) {\n if (this.variationsIndex === -1) {\n return null;\n }\n var record = this.table.featureVariations.featureVariationRecords[this.variationsIndex];\n var substitutions = record.featureTableSubstitution.substitutions;\n for (var _iterator42 = _createForOfIteratorHelperLoose(substitutions), _step42; !(_step42 = _iterator42()).done;) {\n var substitution = _step42.value;\n if (substitution.featureIndex === featureIndex) {\n return substitution.alternateFeatureTable;\n }\n }\n return null;\n };\n _proto25.findVariationsIndex = function findVariationsIndex(coords) {\n var variations = this.table.featureVariations;\n if (!variations) {\n return -1;\n }\n var records = variations.featureVariationRecords;\n for (var i = 0; i < records.length; i++) {\n var conditions = records[i].conditionSet.conditionTable;\n if (this.variationConditionsMatch(conditions, coords)) {\n return i;\n }\n }\n return -1;\n };\n _proto25.variationConditionsMatch = function variationConditionsMatch(conditions, coords) {\n return conditions.every(function (condition) {\n var coord = condition.axisIndex < coords.length ? coords[condition.axisIndex] : 0;\n return condition.filterRangeMinValue <= coord && coord <= condition.filterRangeMaxValue;\n });\n };\n _proto25.applyFeatures = function applyFeatures(userFeatures, glyphs, advances) {\n var lookups = this.lookupsForFeatures(userFeatures);\n this.applyLookups(lookups, glyphs, advances);\n };\n _proto25.applyLookups = function applyLookups(lookups, glyphs, positions) {\n this.glyphs = glyphs;\n this.positions = positions;\n this.glyphIterator = new GlyphIterator(glyphs);\n for (var _iterator43 = _createForOfIteratorHelperLoose(lookups), _step43; !(_step43 = _iterator43()).done;) {\n var _step43$value = _step43.value,\n feature = _step43$value.feature,\n lookup = _step43$value.lookup;\n this.currentFeature = feature;\n this.glyphIterator.reset(lookup.flags);\n while (this.glyphIterator.index < glyphs.length) {\n if (!(feature in this.glyphIterator.cur.features)) {\n this.glyphIterator.next();\n continue;\n }\n for (var _iterator44 = _createForOfIteratorHelperLoose(lookup.subTables), _step44; !(_step44 = _iterator44()).done;) {\n var table = _step44.value;\n var res = this.applyLookup(lookup.lookupType, table);\n if (res) {\n break;\n }\n }\n this.glyphIterator.next();\n }\n }\n };\n _proto25.applyLookup = function applyLookup(lookup, table) {\n throw new Error(\"applyLookup must be implemented by subclasses\");\n };\n _proto25.applyLookupList = function applyLookupList(lookupRecords) {\n var options = this.glyphIterator.options;\n var glyphIndex = this.glyphIterator.index;\n for (var _iterator45 = _createForOfIteratorHelperLoose(lookupRecords), _step45; !(_step45 = _iterator45()).done;) {\n var lookupRecord = _step45.value;\n // Reset flags and find glyph index for this lookup record\n this.glyphIterator.reset(options, glyphIndex);\n this.glyphIterator.increment(lookupRecord.sequenceIndex); // Get the lookup and setup flags for subtables\n\n var lookup = this.table.lookupList.get(lookupRecord.lookupListIndex);\n this.glyphIterator.reset(lookup.flags, this.glyphIterator.index); // Apply lookup subtables until one matches\n\n for (var _iterator46 = _createForOfIteratorHelperLoose(lookup.subTables), _step46; !(_step46 = _iterator46()).done;) {\n var table = _step46.value;\n if (this.applyLookup(lookup.lookupType, table)) {\n break;\n }\n }\n }\n this.glyphIterator.reset(options, glyphIndex);\n return true;\n };\n _proto25.coverageIndex = function coverageIndex(coverage, glyph) {\n if (glyph == null) {\n glyph = this.glyphIterator.cur.id;\n }\n switch (coverage.version) {\n case 1:\n return coverage.glyphs.indexOf(glyph);\n case 2:\n for (var _iterator47 = _createForOfIteratorHelperLoose(coverage.rangeRecords), _step47; !(_step47 = _iterator47()).done;) {\n var range = _step47.value;\n if (range.start <= glyph && glyph <= range.end) {\n return range.startCoverageIndex + glyph - range.start;\n }\n }\n break;\n }\n return -1;\n };\n _proto25.match = function match(sequenceIndex, sequence, fn, matched) {\n var pos = this.glyphIterator.index;\n var glyph = this.glyphIterator.increment(sequenceIndex);\n var idx = 0;\n while (idx < sequence.length && glyph && fn(sequence[idx], glyph)) {\n if (matched) {\n matched.push(this.glyphIterator.index);\n }\n idx++;\n glyph = this.glyphIterator.next();\n }\n this.glyphIterator.index = pos;\n if (idx < sequence.length) {\n return false;\n }\n return matched || true;\n };\n _proto25.sequenceMatches = function sequenceMatches(sequenceIndex, sequence) {\n return this.match(sequenceIndex, sequence, function (component, glyph) {\n return component === glyph.id;\n });\n };\n _proto25.sequenceMatchIndices = function sequenceMatchIndices(sequenceIndex, sequence) {\n var _this4 = this;\n return this.match(sequenceIndex, sequence, function (component, glyph) {\n // If the current feature doesn't apply to this glyph,\n if (!(_this4.currentFeature in glyph.features)) {\n return false;\n }\n return component === glyph.id;\n }, []);\n };\n _proto25.coverageSequenceMatches = function coverageSequenceMatches(sequenceIndex, sequence) {\n var _this5 = this;\n return this.match(sequenceIndex, sequence, function (coverage, glyph) {\n return _this5.coverageIndex(coverage, glyph.id) >= 0;\n });\n };\n _proto25.getClassID = function getClassID(glyph, classDef) {\n switch (classDef.version) {\n case 1:\n // Class array\n var i = glyph - classDef.startGlyph;\n if (i >= 0 && i < classDef.classValueArray.length) {\n return classDef.classValueArray[i];\n }\n break;\n case 2:\n for (var _iterator48 = _createForOfIteratorHelperLoose(classDef.classRangeRecord), _step48; !(_step48 = _iterator48()).done;) {\n var range = _step48.value;\n if (range.start <= glyph && glyph <= range.end) {\n return range.class;\n }\n }\n break;\n }\n return 0;\n };\n _proto25.classSequenceMatches = function classSequenceMatches(sequenceIndex, sequence, classDef) {\n var _this6 = this;\n return this.match(sequenceIndex, sequence, function (classID, glyph) {\n return classID === _this6.getClassID(glyph.id, classDef);\n });\n };\n _proto25.applyContext = function applyContext(table) {\n switch (table.version) {\n case 1:\n var index = this.coverageIndex(table.coverage);\n if (index === -1) {\n return false;\n }\n var set = table.ruleSets[index];\n for (var _iterator49 = _createForOfIteratorHelperLoose(set), _step49; !(_step49 = _iterator49()).done;) {\n var rule = _step49.value;\n if (this.sequenceMatches(1, rule.input)) {\n return this.applyLookupList(rule.lookupRecords);\n }\n }\n break;\n case 2:\n if (this.coverageIndex(table.coverage) === -1) {\n return false;\n }\n index = this.getClassID(this.glyphIterator.cur.id, table.classDef);\n if (index === -1) {\n return false;\n }\n set = table.classSet[index];\n for (var _iterator50 = _createForOfIteratorHelperLoose(set), _step50; !(_step50 = _iterator50()).done;) {\n var _rule = _step50.value;\n if (this.classSequenceMatches(1, _rule.classes, table.classDef)) {\n return this.applyLookupList(_rule.lookupRecords);\n }\n }\n break;\n case 3:\n if (this.coverageSequenceMatches(0, table.coverages)) {\n return this.applyLookupList(table.lookupRecords);\n }\n break;\n }\n return false;\n };\n _proto25.applyChainingContext = function applyChainingContext(table) {\n switch (table.version) {\n case 1:\n var index = this.coverageIndex(table.coverage);\n if (index === -1) {\n return false;\n }\n var set = table.chainRuleSets[index];\n for (var _iterator51 = _createForOfIteratorHelperLoose(set), _step51; !(_step51 = _iterator51()).done;) {\n var rule = _step51.value;\n if (this.sequenceMatches(-rule.backtrack.length, rule.backtrack) && this.sequenceMatches(1, rule.input) && this.sequenceMatches(1 + rule.input.length, rule.lookahead)) {\n return this.applyLookupList(rule.lookupRecords);\n }\n }\n break;\n case 2:\n if (this.coverageIndex(table.coverage) === -1) {\n return false;\n }\n index = this.getClassID(this.glyphIterator.cur.id, table.inputClassDef);\n var rules = table.chainClassSet[index];\n if (!rules) {\n return false;\n }\n for (var _iterator52 = _createForOfIteratorHelperLoose(rules), _step52; !(_step52 = _iterator52()).done;) {\n var _rule2 = _step52.value;\n if (this.classSequenceMatches(-_rule2.backtrack.length, _rule2.backtrack, table.backtrackClassDef) && this.classSequenceMatches(1, _rule2.input, table.inputClassDef) && this.classSequenceMatches(1 + _rule2.input.length, _rule2.lookahead, table.lookaheadClassDef)) {\n return this.applyLookupList(_rule2.lookupRecords);\n }\n }\n break;\n case 3:\n if (this.coverageSequenceMatches(-table.backtrackGlyphCount, table.backtrackCoverage) && this.coverageSequenceMatches(0, table.inputCoverage) && this.coverageSequenceMatches(table.inputGlyphCount, table.lookaheadCoverage)) {\n return this.applyLookupList(table.lookupRecords);\n }\n break;\n }\n return false;\n };\n return OTProcessor;\n}();\nvar GlyphInfo = /*#__PURE__*/function () {\n function GlyphInfo(font, id, codePoints, features) {\n if (codePoints === void 0) {\n codePoints = [];\n }\n this._font = font;\n this.codePoints = codePoints;\n this.id = id;\n this.features = {};\n if (Array.isArray(features)) {\n for (var i = 0; i < features.length; i++) {\n var feature = features[i];\n this.features[feature] = true;\n }\n } else if (typeof features === 'object') {\n Object.assign(this.features, features);\n }\n this.ligatureID = null;\n this.ligatureComponent = null;\n this.isLigated = false;\n this.cursiveAttachment = null;\n this.markAttachment = null;\n this.shaperInfo = null;\n this.substituted = false;\n this.isMultiplied = false;\n }\n var _proto26 = GlyphInfo.prototype;\n _proto26.copy = function copy() {\n return new GlyphInfo(this._font, this.id, this.codePoints, this.features);\n };\n _createClass(GlyphInfo, [{\n key: \"id\",\n get: function get() {\n return this._id;\n },\n set: function set(id) {\n this._id = id;\n this.substituted = true;\n var GDEF = this._font.GDEF;\n if (GDEF && GDEF.glyphClassDef) {\n // TODO: clean this up\n var classID = OTProcessor.prototype.getClassID(id, GDEF.glyphClassDef);\n this.isBase = classID === 1;\n this.isLigature = classID === 2;\n this.isMark = classID === 3;\n this.markAttachmentType = GDEF.markAttachClassDef ? OTProcessor.prototype.getClassID(id, GDEF.markAttachClassDef) : 0;\n } else {\n this.isMark = this.codePoints.length > 0 && this.codePoints.every(unicode.isMark);\n this.isBase = !this.isMark;\n this.isLigature = this.codePoints.length > 1;\n this.markAttachmentType = 0;\n }\n }\n }]);\n return GlyphInfo;\n}();\n/**\r\n * This is a shaper for the Hangul script, used by the Korean language.\r\n * It does the following:\r\n * - decompose if unsupported by the font:\r\n * <LV> -> <L,V>\r\n * <LVT> -> <L,V,T>\r\n * <LV,T> -> <L,V,T>\r\n *\r\n * - compose if supported by the font:\r\n * <L,V> -> <LV>\r\n * <L,V,T> -> <LVT>\r\n * <LV,T> -> <LVT>\r\n *\r\n * - reorder tone marks (S is any valid syllable):\r\n * <S, M> -> <M, S>\r\n *\r\n * - apply ljmo, vjmo, and tjmo OpenType features to decomposed Jamo sequences.\r\n *\r\n * This logic is based on the following documents:\r\n * - http://www.microsoft.com/typography/OpenTypeDev/hangul/intro.htm\r\n * - http://ktug.org/~nomos/harfbuzz-hangul/hangulshaper.pdf\r\n */\nvar HangulShaper = /*#__PURE__*/function (_DefaultShaper2) {\n _inheritsLoose(HangulShaper, _DefaultShaper2);\n function HangulShaper() {\n return _DefaultShaper2.apply(this, arguments) || this;\n }\n HangulShaper.planFeatures = function planFeatures(plan) {\n plan.add(['ljmo', 'vjmo', 'tjmo'], false);\n };\n HangulShaper.assignFeatures = function assignFeatures(plan, glyphs) {\n var state = 0;\n var i = 0;\n while (i < glyphs.length) {\n var action = void 0;\n var glyph = glyphs[i];\n var code = glyph.codePoints[0];\n var type = getType(code);\n var _STATE_TABLE$1$state$ = STATE_TABLE$1[state][type];\n action = _STATE_TABLE$1$state$[0];\n state = _STATE_TABLE$1$state$[1];\n switch (action) {\n case DECOMPOSE:\n // Decompose the composed syllable if it is not supported by the font.\n if (!plan.font.hasGlyphForCodePoint(code)) {\n i = decompose(glyphs, i, plan.font);\n }\n break;\n case COMPOSE:\n // Found a decomposed syllable. Try to compose if supported by the font.\n i = compose(glyphs, i, plan.font);\n break;\n case TONE_MARK:\n // Got a valid syllable, followed by a tone mark. Move the tone mark to the beginning of the syllable.\n reorderToneMark(glyphs, i, plan.font);\n break;\n case INVALID:\n // Tone mark has no valid syllable to attach to, so insert a dotted circle\n i = insertDottedCircle(glyphs, i, plan.font);\n break;\n }\n i++;\n }\n };\n return HangulShaper;\n}(DefaultShaper);\n_defineProperty(HangulShaper, \"zeroMarkWidths\", 'NONE');\nvar HANGUL_BASE = 0xac00;\nvar HANGUL_END = 0xd7a4;\nvar HANGUL_COUNT = HANGUL_END - HANGUL_BASE + 1;\nvar L_BASE = 0x1100; // lead\n\nvar V_BASE = 0x1161; // vowel\n\nvar T_BASE = 0x11a7; // trail\n\nvar L_COUNT = 19;\nvar V_COUNT = 21;\nvar T_COUNT = 28;\nvar L_END = L_BASE + L_COUNT - 1;\nvar V_END = V_BASE + V_COUNT - 1;\nvar T_END = T_BASE + T_COUNT - 1;\nvar DOTTED_CIRCLE = 0x25cc;\nvar isL = function isL(code) {\n return 0x1100 <= code && code <= 0x115f || 0xa960 <= code && code <= 0xa97c;\n};\nvar isV = function isV(code) {\n return 0x1160 <= code && code <= 0x11a7 || 0xd7b0 <= code && code <= 0xd7c6;\n};\nvar isT = function isT(code) {\n return 0x11a8 <= code && code <= 0x11ff || 0xd7cb <= code && code <= 0xd7fb;\n};\nvar isTone = function isTone(code) {\n return 0x302e <= code && code <= 0x302f;\n};\nvar isLVT = function isLVT(code) {\n return HANGUL_BASE <= code && code <= HANGUL_END;\n};\nvar isLV = function isLV(code) {\n return code - HANGUL_BASE < HANGUL_COUNT && (code - HANGUL_BASE) % T_COUNT === 0;\n};\nvar isCombiningL = function isCombiningL(code) {\n return L_BASE <= code && code <= L_END;\n};\nvar isCombiningV = function isCombiningV(code) {\n return V_BASE <= code && code <= V_END;\n};\nvar isCombiningT = function isCombiningT(code) {\n return 1 <= code && code <= T_END;\n}; // Character categories\n\nvar X = 0; // Other character\n\nvar L = 1; // Leading consonant\n\nvar V = 2; // Medial vowel\n\nvar T = 3; // Trailing consonant\n\nvar LV = 4; // Composed <LV> syllable\n\nvar LVT = 5; // Composed <LVT> syllable\n\nvar M = 6; // Tone mark\n// This function classifies a character using the above categories.\n\nfunction getType(code) {\n if (isL(code)) {\n return L;\n }\n if (isV(code)) {\n return V;\n }\n if (isT(code)) {\n return T;\n }\n if (isLV(code)) {\n return LV;\n }\n if (isLVT(code)) {\n return LVT;\n }\n if (isTone(code)) {\n return M;\n }\n return X;\n} // State machine actions\n\nvar NO_ACTION = 0;\nvar DECOMPOSE = 1;\nvar COMPOSE = 2;\nvar TONE_MARK = 4;\nvar INVALID = 5; // Build a state machine that accepts valid syllables, and applies actions along the way.\n// The logic this is implementing is documented at the top of the file.\n\nvar STATE_TABLE$1 = [\n// X L V T LV LVT M\n// State 0: start state\n[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [INVALID, 0]],\n// State 1: <L>\n[[NO_ACTION, 0], [NO_ACTION, 1], [COMPOSE, 2], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [INVALID, 0]],\n// State 2: <L,V> or <LV>\n[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [COMPOSE, 3], [DECOMPOSE, 2], [DECOMPOSE, 3], [TONE_MARK, 0]],\n// State 3: <L,V,T> or <LVT>\n[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [TONE_MARK, 0]]];\nfunction getGlyph(font, code, features) {\n return new GlyphInfo(font, font.glyphForCodePoint(code).id, [code], features);\n}\nfunction decompose(glyphs, i, font) {\n var glyph = glyphs[i];\n var code = glyph.codePoints[0];\n var s = code - HANGUL_BASE;\n var t = T_BASE + s % T_COUNT;\n s = s / T_COUNT | 0;\n var l = L_BASE + s / V_COUNT | 0;\n var v = V_BASE + s % V_COUNT; // Don't decompose if all of the components are not available\n\n if (!font.hasGlyphForCodePoint(l) || !font.hasGlyphForCodePoint(v) || t !== T_BASE && !font.hasGlyphForCodePoint(t)) {\n return i;\n } // Replace the current glyph with decomposed L, V, and T glyphs,\n // and apply the proper OpenType features to each component.\n\n var ljmo = getGlyph(font, l, glyph.features);\n ljmo.features.ljmo = true;\n var vjmo = getGlyph(font, v, glyph.features);\n vjmo.features.vjmo = true;\n var insert = [ljmo, vjmo];\n if (t > T_BASE) {\n var tjmo = getGlyph(font, t, glyph.features);\n tjmo.features.tjmo = true;\n insert.push(tjmo);\n }\n glyphs.splice.apply(glyphs, [i, 1].concat(insert));\n return i + insert.length - 1;\n}\nfunction compose(glyphs, i, font) {\n var glyph = glyphs[i];\n var code = glyphs[i].codePoints[0];\n var type = getType(code);\n var prev = glyphs[i - 1].codePoints[0];\n var prevType = getType(prev); // Figure out what type of syllable we're dealing with\n\n var lv, ljmo, vjmo, tjmo;\n if (prevType === LV && type === T) {\n // <LV,T>\n lv = prev;\n tjmo = glyph;\n } else {\n if (type === V) {\n // <L,V>\n ljmo = glyphs[i - 1];\n vjmo = glyph;\n } else {\n // <L,V,T>\n ljmo = glyphs[i - 2];\n vjmo = glyphs[i - 1];\n tjmo = glyph;\n }\n var l = ljmo.codePoints[0];\n var v = vjmo.codePoints[0]; // Make sure L and V are combining characters\n\n if (isCombiningL(l) && isCombiningV(v)) {\n lv = HANGUL_BASE + ((l - L_BASE) * V_COUNT + (v - V_BASE)) * T_COUNT;\n }\n }\n var t = tjmo && tjmo.codePoints[0] || T_BASE;\n if (lv != null && (t === T_BASE || isCombiningT(t))) {\n var s = lv + (t - T_BASE); // Replace with a composed glyph if supported by the font,\n // otherwise apply the proper OpenType features to each component.\n\n if (font.hasGlyphForCodePoint(s)) {\n var del = prevType === V ? 3 : 2;\n glyphs.splice(i - del + 1, del, getGlyph(font, s, glyph.features));\n return i - del + 1;\n }\n } // Didn't compose (either a non-combining component or unsupported by font).\n\n if (ljmo) {\n ljmo.features.ljmo = true;\n }\n if (vjmo) {\n vjmo.features.vjmo = true;\n }\n if (tjmo) {\n tjmo.features.tjmo = true;\n }\n if (prevType === LV) {\n // Sequence was originally <L,V>, which got combined earlier.\n // Either the T was non-combining, or the LVT glyph wasn't supported.\n // Decompose the glyph again and apply OT features.\n decompose(glyphs, i - 1, font);\n return i + 1;\n }\n return i;\n}\nfunction getLength(code) {\n switch (getType(code)) {\n case LV:\n case LVT:\n return 1;\n case V:\n return 2;\n case T:\n return 3;\n }\n}\nfunction reorderToneMark(glyphs, i, font) {\n var glyph = glyphs[i];\n var code = glyphs[i].codePoints[0]; // Move tone mark to the beginning of the previous syllable, unless it is zero width\n\n if (font.glyphForCodePoint(code).advanceWidth === 0) {\n return;\n }\n var prev = glyphs[i - 1].codePoints[0];\n var len = getLength(prev);\n glyphs.splice(i, 1);\n return glyphs.splice(i - len, 0, glyph);\n}\nfunction insertDottedCircle(glyphs, i, font) {\n var glyph = glyphs[i];\n var code = glyphs[i].codePoints[0];\n if (font.hasGlyphForCodePoint(DOTTED_CIRCLE)) {\n var dottedCircle = getGlyph(font, DOTTED_CIRCLE, glyph.features); // If the tone mark is zero width, insert the dotted circle before, otherwise after\n\n var idx = font.glyphForCodePoint(code).advanceWidth === 0 ? i : i + 1;\n glyphs.splice(idx, 0, dottedCircle);\n i++;\n }\n return i;\n}\nvar stateTable = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 11, 12, 13, 14, 15, 16, 17], [0, 0, 0, 18, 19, 20, 21, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 28, 29, 30, 31, 32, 33, 0, 34, 0, 0, 35, 36, 0, 0, 37, 0], [0, 0, 0, 38, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 39, 0, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 43, 44, 44, 8, 9, 0, 0, 0, 0, 12, 43, 0, 0, 0, 0], [0, 0, 0, 0, 43, 44, 44, 8, 9, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0], [0, 0, 0, 45, 46, 47, 48, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 50, 0, 0, 51, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 53, 54, 55, 56, 57, 58, 0, 59, 0, 0, 60, 61, 0, 0, 62, 0], [0, 0, 0, 4, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 63, 64, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 63, 0, 0], [0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 11, 12, 13, 0, 2, 16, 0], [0, 0, 0, 18, 65, 20, 21, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 0, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 0, 0], [0, 0, 0, 69, 0, 70, 70, 0, 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 73, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 75, 0, 0, 0, 76, 77, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 79, 80, 80, 22, 23, 0, 0, 0, 0, 25, 79, 0, 0, 0, 0], [0, 0, 0, 18, 19, 20, 74, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 81, 82, 83, 84, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 86, 0, 0, 87, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 18, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 89, 90, 0, 0, 76, 77, 0, 23, 0, 24, 0, 0, 0, 78, 0, 89, 0, 0], [0, 0, 0, 0, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 0, 0], [0, 0, 0, 94, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 96, 0, 0, 0, 97, 98, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 35, 100, 0, 0, 0, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0], [0, 0, 0, 102, 103, 104, 105, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 107, 0, 0, 108, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 28, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 110, 111, 0, 0, 97, 98, 0, 33, 0, 34, 0, 0, 0, 99, 0, 110, 0, 0], [0, 0, 0, 0, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 0, 0], [0, 0, 0, 0, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 0, 0, 115, 116, 117, 118, 8, 9, 0, 10, 0, 0, 119, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 39, 0, 122, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 124, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0], [0, 39, 0, 0, 0, 121, 125, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 126, 126, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 46, 47, 48, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 47, 47, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 127, 127, 49, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 128, 127, 127, 49, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 129, 130, 131, 132, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 135, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 136, 0, 0, 0, 137, 138, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 140, 141, 141, 57, 58, 0, 0, 0, 0, 60, 140, 0, 0, 0, 0], [0, 0, 0, 0, 140, 141, 141, 57, 58, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0], [0, 0, 0, 142, 143, 144, 145, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 147, 0, 0, 148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 53, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 150, 151, 0, 0, 137, 138, 0, 58, 0, 59, 0, 0, 0, 139, 0, 150, 0, 0], [0, 0, 0, 0, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 0, 0], [0, 0, 0, 155, 116, 156, 157, 8, 9, 0, 10, 0, 0, 158, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 75, 3, 4, 5, 159, 160, 8, 161, 0, 162, 0, 11, 12, 163, 0, 75, 16, 0], [0, 0, 0, 0, 0, 40, 164, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0], [0, 124, 64, 0, 0, 40, 164, 0, 9, 0, 10, 0, 0, 0, 42, 0, 124, 0, 0], [0, 0, 0, 0, 0, 70, 70, 0, 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 166, 0, 0, 167, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 0, 0, 0, 79, 80, 80, 22, 23, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0], [0, 0, 0, 169, 170, 171, 172, 22, 23, 0, 24, 0, 0, 173, 174, 0, 0, 27, 0], [0, 0, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 75, 0, 176, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 178, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0], [0, 75, 0, 0, 0, 175, 179, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 180, 180, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 82, 83, 84, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 83, 83, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 181, 181, 85, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 182, 181, 181, 85, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 183, 184, 185, 186, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 189, 170, 190, 191, 22, 23, 0, 24, 0, 0, 192, 174, 0, 0, 27, 0], [0, 0, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 76, 193, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 0, 194, 0, 0, 0, 0], [0, 178, 90, 0, 0, 76, 193, 0, 23, 0, 24, 0, 0, 0, 78, 0, 178, 0, 0], [0, 0, 0, 0, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0], [0, 0, 0, 195, 196, 197, 198, 32, 33, 0, 34, 0, 0, 199, 200, 0, 0, 37, 0], [0, 0, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 96, 0, 202, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 204, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0], [0, 96, 0, 0, 0, 201, 205, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 206, 206, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 103, 104, 105, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 104, 104, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 207, 207, 106, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 208, 207, 207, 106, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 209, 210, 211, 212, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 215, 196, 216, 217, 32, 33, 0, 34, 0, 0, 218, 200, 0, 0, 37, 0], [0, 0, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 97, 219, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0], [0, 204, 111, 0, 0, 97, 219, 0, 33, 0, 34, 0, 0, 0, 99, 0, 204, 0, 0], [0, 0, 0, 221, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 223, 0, 0, 0, 40, 224, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 119, 225, 0, 0, 0, 0], [0, 0, 0, 115, 116, 117, 222, 8, 9, 0, 10, 0, 0, 119, 120, 0, 0, 16, 0], [0, 0, 0, 115, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 226, 64, 0, 0, 40, 224, 0, 9, 0, 10, 0, 0, 0, 42, 0, 226, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 39, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 44, 44, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 228, 229, 0, 9, 0, 10, 0, 0, 230, 0, 0, 0, 0, 0], [0, 39, 0, 122, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 231, 231, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 130, 131, 132, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 131, 131, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 233, 233, 133, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 234, 233, 233, 133, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 235, 236, 237, 238, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 0, 0, 240, 241, 242, 243, 57, 58, 0, 59, 0, 0, 244, 245, 0, 0, 62, 0], [0, 0, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 136, 0, 247, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 249, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0], [0, 136, 0, 0, 0, 246, 250, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 251, 251, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 143, 144, 145, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 144, 144, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 252, 252, 146, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 253, 252, 252, 146, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 254, 255, 256, 257, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 260, 241, 261, 262, 57, 58, 0, 59, 0, 0, 263, 245, 0, 0, 62, 0], [0, 0, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 137, 264, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0], [0, 249, 151, 0, 0, 137, 264, 0, 58, 0, 59, 0, 0, 0, 139, 0, 249, 0, 0], [0, 0, 0, 221, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 158, 225, 0, 0, 0, 0], [0, 0, 0, 155, 116, 156, 222, 8, 9, 0, 10, 0, 0, 158, 120, 0, 0, 16, 0], [0, 0, 0, 155, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 43, 266, 266, 8, 161, 0, 24, 0, 0, 12, 267, 0, 0, 0, 0], [0, 75, 0, 176, 43, 268, 268, 269, 161, 0, 24, 0, 0, 0, 267, 0, 75, 0, 0], [0, 0, 0, 0, 0, 270, 0, 0, 271, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0], [0, 273, 274, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 273, 0, 0], [0, 0, 0, 40, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 121, 275, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 277, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 279, 0, 0, 0, 76, 280, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 173, 281, 0, 0, 0, 0], [0, 0, 0, 169, 170, 171, 278, 22, 23, 0, 24, 0, 0, 173, 174, 0, 0, 27, 0], [0, 0, 0, 169, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 282, 90, 0, 0, 76, 280, 0, 23, 0, 24, 0, 0, 0, 78, 0, 282, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 75, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 80, 80, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 284, 285, 0, 23, 0, 24, 0, 0, 286, 0, 0, 0, 0, 0], [0, 75, 0, 176, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 287, 287, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 184, 185, 186, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 185, 185, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 289, 289, 187, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 290, 289, 289, 187, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 291, 292, 293, 294, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 277, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 192, 281, 0, 0, 0, 0], [0, 0, 0, 189, 170, 190, 278, 22, 23, 0, 24, 0, 0, 192, 174, 0, 0, 27, 0], [0, 0, 0, 189, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 76, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 175, 296, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 297, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 299, 0, 0, 0, 97, 300, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 199, 301, 0, 0, 0, 0], [0, 0, 0, 195, 196, 197, 298, 32, 33, 0, 34, 0, 0, 199, 200, 0, 0, 37, 0], [0, 0, 0, 195, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 302, 111, 0, 0, 97, 300, 0, 33, 0, 34, 0, 0, 0, 99, 0, 302, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 96, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 101, 101, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 304, 305, 0, 33, 0, 34, 0, 0, 306, 0, 0, 0, 0, 0], [0, 96, 0, 202, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 307, 307, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 210, 211, 212, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 211, 211, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 309, 309, 213, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 310, 309, 309, 213, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 311, 312, 313, 314, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 297, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 218, 301, 0, 0, 0, 0], [0, 0, 0, 215, 196, 216, 298, 32, 33, 0, 34, 0, 0, 218, 200, 0, 0, 37, 0], [0, 0, 0, 215, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 97, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 201, 316, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0], [0, 0, 0, 317, 318, 319, 320, 8, 9, 0, 10, 0, 0, 321, 322, 0, 0, 16, 0], [0, 223, 0, 323, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 223, 0, 0, 0, 121, 324, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 325, 318, 326, 327, 8, 9, 0, 10, 0, 0, 328, 322, 0, 0, 16, 0], [0, 0, 0, 64, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 228, 121, 0, 9, 0, 10, 0, 0, 230, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0], [0, 0, 0, 0, 0, 329, 329, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 236, 237, 238, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 237, 237, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 331, 331, 239, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 332, 331, 331, 239, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 333, 40, 121, 334, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 335, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 337, 0, 0, 0, 137, 338, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 244, 339, 0, 0, 0, 0], [0, 0, 0, 240, 241, 242, 336, 57, 58, 0, 59, 0, 0, 244, 245, 0, 0, 62, 0], [0, 0, 0, 240, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 340, 151, 0, 0, 137, 338, 0, 58, 0, 59, 0, 0, 0, 139, 0, 340, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 136, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 141, 141, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 342, 343, 0, 58, 0, 59, 0, 0, 344, 0, 0, 0, 0, 0], [0, 136, 0, 247, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 345, 345, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 255, 256, 257, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 256, 256, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 347, 347, 258, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 348, 347, 347, 258, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 349, 350, 351, 352, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 335, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 263, 339, 0, 0, 0, 0], [0, 0, 0, 260, 241, 261, 336, 57, 58, 0, 59, 0, 0, 263, 245, 0, 0, 62, 0], [0, 0, 0, 260, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 137, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 246, 354, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 126, 126, 8, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 355, 90, 0, 0, 121, 125, 0, 9, 0, 10, 0, 0, 0, 42, 0, 355, 0, 0], [0, 0, 0, 0, 0, 356, 356, 269, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 357, 358, 359, 360, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 270, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 364, 116, 365, 366, 8, 161, 0, 162, 0, 0, 367, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 40, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 0, 281, 0, 0, 0, 0], [0, 0, 0, 369, 370, 371, 372, 22, 23, 0, 24, 0, 0, 373, 374, 0, 0, 27, 0], [0, 279, 0, 375, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 279, 0, 0, 0, 175, 376, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 377, 370, 378, 379, 22, 23, 0, 24, 0, 0, 380, 374, 0, 0, 27, 0], [0, 0, 0, 90, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 286, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 284, 175, 0, 23, 0, 24, 0, 0, 286, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0], [0, 0, 0, 0, 0, 381, 381, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 292, 293, 294, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 293, 293, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 383, 383, 295, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 384, 383, 383, 295, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 385, 76, 175, 386, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 76, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 0, 301, 0, 0, 0, 0], [0, 0, 0, 387, 388, 389, 390, 32, 33, 0, 34, 0, 0, 391, 392, 0, 0, 37, 0], [0, 299, 0, 393, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 299, 0, 0, 0, 201, 394, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 395, 388, 396, 397, 32, 33, 0, 34, 0, 0, 398, 392, 0, 0, 37, 0], [0, 0, 0, 111, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 304, 201, 0, 33, 0, 34, 0, 0, 306, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0], [0, 0, 0, 0, 0, 399, 399, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 312, 313, 314, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 313, 313, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 401, 401, 315, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 402, 401, 401, 315, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 403, 97, 201, 404, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 97, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 405, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 407, 0, 0, 0, 40, 408, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 321, 409, 0, 0, 0, 0], [0, 0, 0, 317, 318, 319, 406, 8, 9, 0, 10, 0, 0, 321, 322, 0, 0, 16, 0], [0, 0, 0, 317, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 410, 64, 0, 0, 40, 408, 0, 9, 0, 10, 0, 0, 0, 42, 0, 410, 0, 0], [0, 223, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 223, 0, 323, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 405, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 328, 409, 0, 0, 0, 0], [0, 0, 0, 325, 318, 326, 406, 8, 9, 0, 10, 0, 0, 328, 322, 0, 0, 16, 0], [0, 0, 0, 325, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0], [0, 0, 0, 0, 0, 411, 411, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 40, 121, 334, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 413, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 0, 339, 0, 0, 0, 0], [0, 0, 0, 414, 415, 416, 417, 57, 58, 0, 59, 0, 0, 418, 419, 0, 0, 62, 0], [0, 337, 0, 420, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 337, 0, 0, 0, 246, 421, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 422, 415, 423, 424, 57, 58, 0, 59, 0, 0, 425, 419, 0, 0, 62, 0], [0, 0, 0, 151, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 344, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 342, 246, 0, 58, 0, 59, 0, 0, 344, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0], [0, 0, 0, 0, 0, 426, 426, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 350, 351, 352, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 351, 351, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 428, 428, 353, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 429, 428, 428, 353, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 430, 137, 246, 431, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 137, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 432, 116, 433, 434, 8, 161, 0, 162, 0, 0, 435, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 180, 180, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 358, 359, 360, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 359, 359, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 436, 436, 361, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 437, 436, 436, 361, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 438, 439, 440, 441, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 443, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 443, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 444, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 367, 225, 0, 0, 0, 0], [0, 0, 0, 364, 116, 365, 445, 8, 161, 0, 162, 0, 0, 367, 120, 0, 0, 16, 0], [0, 0, 0, 364, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 446, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 448, 0, 0, 0, 76, 449, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 373, 450, 0, 0, 0, 0], [0, 0, 0, 369, 370, 371, 447, 22, 23, 0, 24, 0, 0, 373, 374, 0, 0, 27, 0], [0, 0, 0, 369, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 451, 90, 0, 0, 76, 449, 0, 23, 0, 24, 0, 0, 0, 78, 0, 451, 0, 0], [0, 279, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 279, 0, 375, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 446, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 380, 450, 0, 0, 0, 0], [0, 0, 0, 377, 370, 378, 447, 22, 23, 0, 24, 0, 0, 380, 374, 0, 0, 27, 0], [0, 0, 0, 377, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0], [0, 0, 0, 0, 0, 452, 452, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 76, 175, 386, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 454, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 455, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 457, 0, 0, 0, 97, 458, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 391, 459, 0, 0, 0, 0], [0, 0, 0, 387, 388, 389, 456, 32, 33, 0, 34, 0, 0, 391, 392, 0, 0, 37, 0], [0, 0, 0, 387, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 460, 111, 0, 0, 97, 458, 0, 33, 0, 34, 0, 0, 0, 99, 0, 460, 0, 0], [0, 299, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 299, 0, 393, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 455, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 398, 459, 0, 0, 0, 0], [0, 0, 0, 395, 388, 396, 456, 32, 33, 0, 34, 0, 0, 398, 392, 0, 0, 37, 0], [0, 0, 0, 395, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0], [0, 0, 0, 0, 0, 461, 461, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 97, 201, 404, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 463, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 0, 409, 0, 0, 0, 0], [0, 0, 0, 464, 465, 466, 467, 8, 9, 0, 10, 0, 0, 468, 469, 0, 0, 16, 0], [0, 407, 0, 470, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 407, 0, 0, 0, 121, 471, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 472, 465, 473, 474, 8, 9, 0, 10, 0, 0, 475, 469, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0], [0, 0, 0, 0, 0, 0, 476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 477, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 479, 0, 0, 0, 137, 480, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 418, 481, 0, 0, 0, 0], [0, 0, 0, 414, 415, 416, 478, 57, 58, 0, 59, 0, 0, 418, 419, 0, 0, 62, 0], [0, 0, 0, 414, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 482, 151, 0, 0, 137, 480, 0, 58, 0, 59, 0, 0, 0, 139, 0, 482, 0, 0], [0, 337, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 337, 0, 420, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 477, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 425, 481, 0, 0, 0, 0], [0, 0, 0, 422, 415, 423, 478, 57, 58, 0, 59, 0, 0, 425, 419, 0, 0, 62, 0], [0, 0, 0, 422, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0], [0, 0, 0, 0, 0, 483, 483, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 137, 246, 431, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 485, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 444, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 435, 225, 0, 0, 0, 0], [0, 0, 0, 432, 116, 433, 445, 8, 161, 0, 162, 0, 0, 435, 120, 0, 0, 16, 0], [0, 0, 0, 432, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 486, 486, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 439, 440, 441, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 440, 440, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 488, 488, 442, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 489, 488, 488, 442, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 490, 491, 492, 493, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 495, 0, 496, 497, 0, 161, 0, 162, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 0, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0], [0, 0, 0, 0, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 0, 450, 0, 0, 0, 0], [0, 0, 0, 499, 500, 501, 502, 22, 23, 0, 24, 0, 0, 503, 504, 0, 0, 27, 0], [0, 448, 0, 505, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 448, 0, 0, 0, 175, 506, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 507, 500, 508, 509, 22, 23, 0, 24, 0, 0, 510, 504, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 292, 0, 0], [0, 0, 0, 0, 0, 0, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 0, 459, 0, 0, 0, 0], [0, 0, 0, 512, 513, 514, 515, 32, 33, 0, 34, 0, 0, 516, 517, 0, 0, 37, 0], [0, 457, 0, 518, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 457, 0, 0, 0, 201, 519, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 520, 513, 521, 522, 32, 33, 0, 34, 0, 0, 523, 517, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0], [0, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 525, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 527, 0, 0, 0, 40, 528, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 468, 529, 0, 0, 0, 0], [0, 0, 0, 464, 465, 466, 526, 8, 9, 0, 10, 0, 0, 468, 469, 0, 0, 16, 0], [0, 0, 0, 464, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 530, 64, 0, 0, 40, 528, 0, 9, 0, 10, 0, 0, 0, 42, 0, 530, 0, 0], [0, 407, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 407, 0, 470, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 525, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 475, 529, 0, 0, 0, 0], [0, 0, 0, 472, 465, 473, 526, 8, 9, 0, 10, 0, 0, 475, 469, 0, 0, 16, 0], [0, 0, 0, 472, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0], [0, 0, 0, 0, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 0, 481, 0, 0, 0, 0], [0, 0, 0, 531, 532, 533, 534, 57, 58, 0, 59, 0, 0, 535, 536, 0, 0, 62, 0], [0, 479, 0, 537, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 479, 0, 0, 0, 246, 538, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 539, 532, 540, 541, 57, 58, 0, 59, 0, 0, 542, 536, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 0, 0], [0, 0, 0, 0, 0, 0, 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 0, 0], [0, 0, 0, 0, 0, 544, 544, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 491, 492, 493, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 492, 492, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 546, 546, 494, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 547, 546, 546, 494, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 548, 549, 368, 550, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 274, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 495, 0, 496, 368, 0, 161, 0, 162, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 495, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 551, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 553, 0, 0, 0, 76, 554, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 503, 555, 0, 0, 0, 0], [0, 0, 0, 499, 500, 501, 552, 22, 23, 0, 24, 0, 0, 503, 504, 0, 0, 27, 0], [0, 0, 0, 499, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 556, 90, 0, 0, 76, 554, 0, 23, 0, 24, 0, 0, 0, 78, 0, 556, 0, 0], [0, 448, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 448, 0, 505, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 551, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 510, 555, 0, 0, 0, 0], [0, 0, 0, 507, 500, 508, 552, 22, 23, 0, 24, 0, 0, 510, 504, 0, 0, 27, 0], [0, 0, 0, 507, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0], [0, 0, 0, 557, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 559, 0, 0, 0, 97, 560, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 516, 561, 0, 0, 0, 0], [0, 0, 0, 512, 513, 514, 558, 32, 33, 0, 34, 0, 0, 516, 517, 0, 0, 37, 0], [0, 0, 0, 512, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 562, 111, 0, 0, 97, 560, 0, 33, 0, 34, 0, 0, 0, 99, 0, 562, 0, 0], [0, 457, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 457, 0, 518, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 557, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 523, 561, 0, 0, 0, 0], [0, 0, 0, 520, 513, 521, 558, 32, 33, 0, 34, 0, 0, 523, 517, 0, 0, 37, 0], [0, 0, 0, 520, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0], [0, 0, 0, 0, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 0, 529, 0, 0, 0, 0], [0, 0, 0, 563, 66, 564, 565, 8, 9, 0, 10, 0, 0, 566, 68, 0, 0, 16, 0], [0, 527, 0, 567, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 527, 0, 0, 0, 121, 568, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 569, 66, 570, 571, 8, 9, 0, 10, 0, 0, 572, 68, 0, 0, 16, 0], [0, 0, 0, 573, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 575, 0, 0, 0, 137, 576, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 535, 577, 0, 0, 0, 0], [0, 0, 0, 531, 532, 533, 574, 57, 58, 0, 59, 0, 0, 535, 536, 0, 0, 62, 0], [0, 0, 0, 531, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 578, 151, 0, 0, 137, 576, 0, 58, 0, 59, 0, 0, 0, 139, 0, 578, 0, 0], [0, 479, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 479, 0, 537, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 573, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 542, 577, 0, 0, 0, 0], [0, 0, 0, 539, 532, 540, 574, 57, 58, 0, 59, 0, 0, 542, 536, 0, 0, 62, 0], [0, 0, 0, 539, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0], [0, 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 439, 0, 0], [0, 0, 0, 0, 0, 579, 579, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 549, 368, 550, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 581, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 0, 555, 0, 0, 0, 0], [0, 0, 0, 582, 91, 583, 584, 22, 23, 0, 24, 0, 0, 585, 93, 0, 0, 27, 0], [0, 553, 0, 586, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 553, 0, 0, 0, 175, 587, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 588, 91, 589, 590, 22, 23, 0, 24, 0, 0, 591, 93, 0, 0, 27, 0], [0, 0, 0, 0, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 0, 561, 0, 0, 0, 0], [0, 0, 0, 592, 112, 593, 594, 32, 33, 0, 34, 0, 0, 595, 114, 0, 0, 37, 0], [0, 559, 0, 596, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 559, 0, 0, 0, 201, 597, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 598, 112, 599, 600, 32, 33, 0, 34, 0, 0, 601, 114, 0, 0, 37, 0], [0, 0, 0, 602, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 566, 165, 0, 0, 0, 0], [0, 0, 0, 563, 66, 564, 67, 8, 9, 0, 10, 0, 0, 566, 68, 0, 0, 16, 0], [0, 0, 0, 563, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 527, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 527, 0, 567, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 602, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 572, 165, 0, 0, 0, 0], [0, 0, 0, 569, 66, 570, 67, 8, 9, 0, 10, 0, 0, 572, 68, 0, 0, 16, 0], [0, 0, 0, 569, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 0, 577, 0, 0, 0, 0], [0, 0, 0, 603, 152, 604, 605, 57, 58, 0, 59, 0, 0, 606, 154, 0, 0, 62, 0], [0, 575, 0, 607, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 575, 0, 0, 0, 246, 608, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 609, 152, 610, 611, 57, 58, 0, 59, 0, 0, 612, 154, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 491, 0, 0], [0, 0, 0, 0, 0, 0, 613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 614, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 585, 194, 0, 0, 0, 0], [0, 0, 0, 582, 91, 583, 92, 22, 23, 0, 24, 0, 0, 585, 93, 0, 0, 27, 0], [0, 0, 0, 582, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 553, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 553, 0, 586, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 614, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 591, 194, 0, 0, 0, 0], [0, 0, 0, 588, 91, 589, 92, 22, 23, 0, 24, 0, 0, 591, 93, 0, 0, 27, 0], [0, 0, 0, 588, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 615, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 595, 220, 0, 0, 0, 0], [0, 0, 0, 592, 112, 593, 113, 32, 33, 0, 34, 0, 0, 595, 114, 0, 0, 37, 0], [0, 0, 0, 592, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 559, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 559, 0, 596, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 615, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 601, 220, 0, 0, 0, 0], [0, 0, 0, 598, 112, 599, 113, 32, 33, 0, 34, 0, 0, 601, 114, 0, 0, 37, 0], [0, 0, 0, 598, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 616, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 606, 265, 0, 0, 0, 0], [0, 0, 0, 603, 152, 604, 153, 57, 58, 0, 59, 0, 0, 606, 154, 0, 0, 62, 0], [0, 0, 0, 603, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 575, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 575, 0, 607, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 616, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 612, 265, 0, 0, 0, 0], [0, 0, 0, 609, 152, 610, 153, 57, 58, 0, 59, 0, 0, 612, 154, 0, 0, 62, 0], [0, 0, 0, 609, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 549, 0, 0], [0, 0, 0, 0, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0]];\nvar accepting = [false, true, true, true, true, true, false, false, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, false, false, true, true, true, true, true, true, true, true, true, true, false, true, true, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, false, false, true, false, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, true, true, false, false, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, false, false, true, true, false, false, true, true, true, false, true, false, true, true, true, true, false, false, false, true, false, true, true, true, true, false, false, false, true, true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, true, true, true, false, false, false, false, false, false, false, true, true, false, false, true, true, false, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, true, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, false, true, true, false, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, true, false, true, true, true, true, false, false, false, true, false, true, true, true, true, true, false, true, true, true, false, true, true, true, true, true, false, true, true, true, true, false, true, true, true, true, true, false, true, true, false, true, true, true];\nvar tags = [[], [\"broken_cluster\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"standalone_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"consonant_syllable\"], [\"broken_cluster\"], [\"symbol_cluster\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"symbol_cluster\"], [], [\"symbol_cluster\"], [\"symbol_cluster\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"symbol_cluster\"], [\"symbol_cluster\"], [\"symbol_cluster\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [\"broken_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"broken_cluster\"], [\"symbol_cluster\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [], [], [\"broken_cluster\"], [], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [], [], [\"consonant_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [], [], [\"vowel_syllable\"], [], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [], [\"standalone_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [], [], [], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"consonant_syllable\"], [\"vowel_syllable\"], [\"standalone_cluster\"]];\nvar indicMachine = {\n stateTable: stateTable,\n accepting: accepting,\n tags: tags\n};\nvar categories = [\"O\", \"IND\", \"S\", \"GB\", \"B\", \"FM\", \"CGJ\", \"VMAbv\", \"VMPst\", \"VAbv\", \"VPst\", \"CMBlw\", \"VPre\", \"VBlw\", \"H\", \"VMBlw\", \"CMAbv\", \"MBlw\", \"CS\", \"R\", \"SUB\", \"MPst\", \"MPre\", \"FAbv\", \"FPst\", \"FBlw\", \"null\", \"SMAbv\", \"SMBlw\", \"VMPre\", \"ZWNJ\", \"ZWJ\", \"WJ\", \"M\", \"VS\", \"N\", \"HN\", \"MAbv\"];\nvar decompositions = {\n \"2507\": [2503, 2494],\n \"2508\": [2503, 2519],\n \"2888\": [2887, 2902],\n \"2891\": [2887, 2878],\n \"2892\": [2887, 2903],\n \"3018\": [3014, 3006],\n \"3019\": [3015, 3006],\n \"3020\": [3014, 3031],\n \"3144\": [3142, 3158],\n \"3264\": [3263, 3285],\n \"3271\": [3270, 3285],\n \"3272\": [3270, 3286],\n \"3274\": [3270, 3266],\n \"3275\": [3270, 3266, 3285],\n \"3402\": [3398, 3390],\n \"3403\": [3399, 3390],\n \"3404\": [3398, 3415],\n \"3546\": [3545, 3530],\n \"3548\": [3545, 3535],\n \"3549\": [3545, 3535, 3530],\n \"3550\": [3545, 3551],\n \"3635\": [3661, 3634],\n \"3763\": [3789, 3762],\n \"3955\": [3953, 3954],\n \"3957\": [3953, 3956],\n \"3958\": [4018, 3968],\n \"3959\": [4018, 3953, 3968],\n \"3960\": [4019, 3968],\n \"3961\": [4019, 3953, 3968],\n \"3969\": [3953, 3968],\n \"6971\": [6970, 6965],\n \"6973\": [6972, 6965],\n \"6976\": [6974, 6965],\n \"6977\": [6975, 6965],\n \"6979\": [6978, 6965],\n \"69934\": [69937, 69927],\n \"69935\": [69938, 69927],\n \"70475\": [70471, 70462],\n \"70476\": [70471, 70487],\n \"70843\": [70841, 70842],\n \"70844\": [70841, 70832],\n \"70846\": [70841, 70845],\n \"71098\": [71096, 71087],\n \"71099\": [71097, 71087]\n};\nvar stateTable$1 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [2, 2, 3, 4, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 17, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 2, 0, 0, 24, 0, 25], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 0, 0, 0, 27, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 39, 0, 0, 47], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 9, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 9, 0, 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 0, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 4, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 48, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 49, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 16, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 16, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 0, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 33, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 0, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 33, 0, 0, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 0, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 52, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 53, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 40, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 40, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 0, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 48, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 0, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 52, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0]];\nvar accepting$1 = [false, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true];\nvar tags$1 = [[], [\"broken_cluster\"], [\"independent_cluster\"], [\"symbol_cluster\"], [\"standard_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"numeral_cluster\"], [\"broken_cluster\"], [\"independent_cluster\"], [\"symbol_cluster\"], [\"symbol_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"virama_terminated_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"numeral_cluster\"], [\"number_joiner_terminated_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"numeral_cluster\"]];\nvar useData = {\n categories: categories,\n decompositions: decompositions,\n stateTable: stateTable$1,\n accepting: accepting$1,\n tags: tags$1\n};\n\n// Cateories used in the OpenType spec:\n// https://www.microsoft.com/typography/otfntdev/devanot/shaping.aspx\nvar CATEGORIES = {\n X: 1 << 0,\n C: 1 << 1,\n V: 1 << 2,\n N: 1 << 3,\n H: 1 << 4,\n ZWNJ: 1 << 5,\n ZWJ: 1 << 6,\n M: 1 << 7,\n SM: 1 << 8,\n VD: 1 << 9,\n A: 1 << 10,\n Placeholder: 1 << 11,\n Dotted_Circle: 1 << 12,\n RS: 1 << 13,\n // Register Shifter, used in Khmer OT spec.\n Coeng: 1 << 14,\n // Khmer-style Virama.\n Repha: 1 << 15,\n // Atomically-encoded logical or visual repha.\n Ra: 1 << 16,\n CM: 1 << 17,\n // Consonant-Medial.\n Symbol: 1 << 18 // Avagraha, etc that take marks (SM,A,VD).\n}; // Visual positions in a syllable from left to right.\n\nvar POSITIONS = {\n Start: 1 << 0,\n Ra_To_Become_Reph: 1 << 1,\n Pre_M: 1 << 2,\n Pre_C: 1 << 3,\n Base_C: 1 << 4,\n After_Main: 1 << 5,\n Above_C: 1 << 6,\n Before_Sub: 1 << 7,\n Below_C: 1 << 8,\n After_Sub: 1 << 9,\n Before_Post: 1 << 10,\n Post_C: 1 << 11,\n After_Post: 1 << 12,\n Final_C: 1 << 13,\n SMVD: 1 << 14,\n End: 1 << 15\n};\nvar CONSONANT_FLAGS = CATEGORIES.C | CATEGORIES.Ra | CATEGORIES.CM | CATEGORIES.V | CATEGORIES.Placeholder | CATEGORIES.Dotted_Circle;\nvar JOINER_FLAGS = CATEGORIES.ZWJ | CATEGORIES.ZWNJ;\nvar HALANT_OR_COENG_FLAGS = CATEGORIES.H | CATEGORIES.Coeng;\nvar INDIC_CONFIGS = {\n Default: {\n hasOldSpec: false,\n virama: 0,\n basePos: 'Last',\n rephPos: POSITIONS.Before_Post,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Devanagari: {\n hasOldSpec: true,\n virama: 0x094D,\n basePos: 'Last',\n rephPos: POSITIONS.Before_Post,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Bengali: {\n hasOldSpec: true,\n virama: 0x09CD,\n basePos: 'Last',\n rephPos: POSITIONS.After_Sub,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Gurmukhi: {\n hasOldSpec: true,\n virama: 0x0A4D,\n basePos: 'Last',\n rephPos: POSITIONS.Before_Sub,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Gujarati: {\n hasOldSpec: true,\n virama: 0x0ACD,\n basePos: 'Last',\n rephPos: POSITIONS.Before_Post,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Oriya: {\n hasOldSpec: true,\n virama: 0x0B4D,\n basePos: 'Last',\n rephPos: POSITIONS.After_Main,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Tamil: {\n hasOldSpec: true,\n virama: 0x0BCD,\n basePos: 'Last',\n rephPos: POSITIONS.After_Post,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Telugu: {\n hasOldSpec: true,\n virama: 0x0C4D,\n basePos: 'Last',\n rephPos: POSITIONS.After_Post,\n rephMode: 'Explicit',\n blwfMode: 'Post_Only'\n },\n Kannada: {\n hasOldSpec: true,\n virama: 0x0CCD,\n basePos: 'Last',\n rephPos: POSITIONS.After_Post,\n rephMode: 'Implicit',\n blwfMode: 'Post_Only'\n },\n Malayalam: {\n hasOldSpec: true,\n virama: 0x0D4D,\n basePos: 'Last',\n rephPos: POSITIONS.After_Main,\n rephMode: 'Log_Repha',\n blwfMode: 'Pre_And_Post'\n },\n // Handled by UniversalShaper\n // Sinhala: {\n // hasOldSpec: false,\n // virama: 0x0DCA,\n // basePos: 'Last_Sinhala',\n // rephPos: POSITIONS.After_Main,\n // rephMode: 'Explicit',\n // blwfMode: 'Pre_And_Post'\n // },\n Khmer: {\n hasOldSpec: false,\n virama: 0x17D2,\n basePos: 'First',\n rephPos: POSITIONS.Ra_To_Become_Reph,\n rephMode: 'Vis_Repha',\n blwfMode: 'Pre_And_Post'\n }\n}; // Additional decompositions that aren't in Unicode\n\nvar INDIC_DECOMPOSITIONS = {\n // Khmer\n 0x17BE: [0x17C1, 0x17BE],\n 0x17BF: [0x17C1, 0x17BF],\n 0x17C0: [0x17C1, 0x17C0],\n 0x17C4: [0x17C1, 0x17C4],\n 0x17C5: [0x17C1, 0x17C5]\n};\nvar decompositions$1 = useData.decompositions;\nvar trie$1 = new UnicodeTrie(Buffer(\"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\",\"base64\"));\nvar stateMachine = new StateMachine(indicMachine);\n/**\r\n * The IndicShaper supports indic scripts e.g. Devanagari, Kannada, etc.\r\n * Based on code from Harfbuzz: https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-indic.cc\r\n */\nvar IndicShaper = /*#__PURE__*/function (_DefaultShaper3) {\n _inheritsLoose(IndicShaper, _DefaultShaper3);\n function IndicShaper() {\n return _DefaultShaper3.apply(this, arguments) || this;\n }\n IndicShaper.planFeatures = function planFeatures(plan) {\n plan.addStage(setupSyllables);\n plan.addStage(['locl', 'ccmp']);\n plan.addStage(initialReordering);\n plan.addStage('nukt');\n plan.addStage('akhn');\n plan.addStage('rphf', false);\n plan.addStage('rkrf');\n plan.addStage('pref', false);\n plan.addStage('blwf', false);\n plan.addStage('abvf', false);\n plan.addStage('half', false);\n plan.addStage('pstf', false);\n plan.addStage('vatu');\n plan.addStage('cjct');\n plan.addStage('cfar', false);\n plan.addStage(finalReordering);\n plan.addStage({\n local: ['init'],\n global: ['pres', 'abvs', 'blws', 'psts', 'haln', 'dist', 'abvm', 'blwm', 'calt', 'clig']\n }); // Setup the indic config for the selected script\n\n plan.unicodeScript = fromOpenType(plan.script);\n plan.indicConfig = INDIC_CONFIGS[plan.unicodeScript] || INDIC_CONFIGS.Default;\n plan.isOldSpec = plan.indicConfig.hasOldSpec && plan.script[plan.script.length - 1] !== '2'; // TODO: turn off kern (Khmer) and liga features.\n };\n IndicShaper.assignFeatures = function assignFeatures(plan, glyphs) {\n var _loop = function _loop(i) {\n var codepoint = glyphs[i].codePoints[0];\n var d = INDIC_DECOMPOSITIONS[codepoint] || decompositions$1[codepoint];\n if (d) {\n var decomposed = d.map(function (c) {\n var g = plan.font.glyphForCodePoint(c);\n return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);\n });\n glyphs.splice.apply(glyphs, [i, 1].concat(decomposed));\n }\n };\n\n // Decompose split matras\n // TODO: do this in a more general unicode normalizer\n for (var i = glyphs.length - 1; i >= 0; i--) {\n _loop(i);\n }\n };\n return IndicShaper;\n}(DefaultShaper);\n_defineProperty(IndicShaper, \"zeroMarkWidths\", 'NONE');\nfunction indicCategory(glyph) {\n return trie$1.get(glyph.codePoints[0]) >> 8;\n}\nfunction indicPosition(glyph) {\n return 1 << (trie$1.get(glyph.codePoints[0]) & 0xff);\n}\nvar IndicInfo = function IndicInfo(category, position, syllableType, syllable) {\n this.category = category;\n this.position = position;\n this.syllableType = syllableType;\n this.syllable = syllable;\n};\nfunction setupSyllables(font, glyphs) {\n var syllable = 0;\n var last = 0;\n for (var _iterator53 = _createForOfIteratorHelperLoose(stateMachine.match(glyphs.map(indicCategory))), _step53; !(_step53 = _iterator53()).done;) {\n var _step53$value = _step53.value,\n start = _step53$value[0],\n end = _step53$value[1],\n tags = _step53$value[2];\n if (start > last) {\n ++syllable;\n for (var i = last; i < start; i++) {\n glyphs[i].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);\n }\n }\n ++syllable; // Create shaper info\n\n for (var _i = start; _i <= end; _i++) {\n glyphs[_i].shaperInfo = new IndicInfo(1 << indicCategory(glyphs[_i]), indicPosition(glyphs[_i]), tags[0], syllable);\n }\n last = end + 1;\n }\n if (last < glyphs.length) {\n ++syllable;\n for (var _i2 = last; _i2 < glyphs.length; _i2++) {\n glyphs[_i2].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);\n }\n }\n}\nfunction isConsonant(glyph) {\n return glyph.shaperInfo.category & CONSONANT_FLAGS;\n}\nfunction isJoiner(glyph) {\n return glyph.shaperInfo.category & JOINER_FLAGS;\n}\nfunction isHalantOrCoeng(glyph) {\n return glyph.shaperInfo.category & HALANT_OR_COENG_FLAGS;\n}\nfunction wouldSubstitute(glyphs, feature) {\n for (var _iterator54 = _createForOfIteratorHelperLoose(glyphs), _step54; !(_step54 = _iterator54()).done;) {\n var _glyph$features;\n var glyph = _step54.value;\n glyph.features = (_glyph$features = {}, _glyph$features[feature] = true, _glyph$features);\n }\n var GSUB = glyphs[0]._font._layoutEngine.engine.GSUBProcessor;\n GSUB.applyFeatures([feature], glyphs);\n return glyphs.length === 1;\n}\nfunction consonantPosition(font, consonant, virama) {\n var glyphs = [virama, consonant, virama];\n if (wouldSubstitute(glyphs.slice(0, 2), 'blwf') || wouldSubstitute(glyphs.slice(1, 3), 'blwf')) {\n return POSITIONS.Below_C;\n } else if (wouldSubstitute(glyphs.slice(0, 2), 'pstf') || wouldSubstitute(glyphs.slice(1, 3), 'pstf')) {\n return POSITIONS.Post_C;\n } else if (wouldSubstitute(glyphs.slice(0, 2), 'pref') || wouldSubstitute(glyphs.slice(1, 3), 'pref')) {\n return POSITIONS.Post_C;\n }\n return POSITIONS.Base_C;\n}\nfunction initialReordering(font, glyphs, plan) {\n var indicConfig = plan.indicConfig;\n var features = font._layoutEngine.engine.GSUBProcessor.features;\n var dottedCircle = font.glyphForCodePoint(0x25cc).id;\n var virama = font.glyphForCodePoint(indicConfig.virama).id;\n if (virama) {\n var info = new GlyphInfo(font, virama, [indicConfig.virama]);\n for (var i = 0; i < glyphs.length; i++) {\n if (glyphs[i].shaperInfo.position === POSITIONS.Base_C) {\n glyphs[i].shaperInfo.position = consonantPosition(font, glyphs[i].copy(), info);\n }\n }\n }\n for (var start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {\n var _glyphs$start$shaperI = glyphs[start].shaperInfo,\n category = _glyphs$start$shaperI.category,\n syllableType = _glyphs$start$shaperI.syllableType;\n if (syllableType === 'symbol_cluster' || syllableType === 'non_indic_cluster') {\n continue;\n }\n if (syllableType === 'broken_cluster' && dottedCircle) {\n var g = new GlyphInfo(font, dottedCircle, [0x25cc]);\n g.shaperInfo = new IndicInfo(1 << indicCategory(g), indicPosition(g), glyphs[start].shaperInfo.syllableType, glyphs[start].shaperInfo.syllable); // Insert after possible Repha.\n\n var _i3 = start;\n while (_i3 < end && glyphs[_i3].shaperInfo.category === CATEGORIES.Repha) {\n _i3++;\n }\n glyphs.splice(_i3++, 0, g);\n end++;\n } // 1. Find base consonant:\n //\n // The shaping engine finds the base consonant of the syllable, using the\n // following algorithm: starting from the end of the syllable, move backwards\n // until a consonant is found that does not have a below-base or post-base\n // form (post-base forms have to follow below-base forms), or that is not a\n // pre-base reordering Ra, or arrive at the first consonant. The consonant\n // stopped at will be the base.\n\n var base = end;\n var limit = start;\n var hasReph = false; // If the syllable starts with Ra + Halant (in a script that has Reph)\n // and has more than one consonant, Ra is excluded from candidates for\n // base consonants.\n\n if (indicConfig.rephPos !== POSITIONS.Ra_To_Become_Reph && features.rphf && start + 3 <= end && (indicConfig.rephMode === 'Implicit' && !isJoiner(glyphs[start + 2]) || indicConfig.rephMode === 'Explicit' && glyphs[start + 2].shaperInfo.category === CATEGORIES.ZWJ)) {\n // See if it matches the 'rphf' feature.\n var _g = [glyphs[start].copy(), glyphs[start + 1].copy(), glyphs[start + 2].copy()];\n if (wouldSubstitute(_g.slice(0, 2), 'rphf') || indicConfig.rephMode === 'Explicit' && wouldSubstitute(_g, 'rphf')) {\n limit += 2;\n while (limit < end && isJoiner(glyphs[limit])) {\n limit++;\n }\n base = start;\n hasReph = true;\n }\n } else if (indicConfig.rephMode === 'Log_Repha' && glyphs[start].shaperInfo.category === CATEGORIES.Repha) {\n limit++;\n while (limit < end && isJoiner(glyphs[limit])) {\n limit++;\n }\n base = start;\n hasReph = true;\n }\n switch (indicConfig.basePos) {\n case 'Last':\n {\n // starting from the end of the syllable, move backwards\n var _i4 = end;\n var seenBelow = false;\n do {\n var _info = glyphs[--_i4].shaperInfo; // until a consonant is found\n\n if (isConsonant(glyphs[_i4])) {\n // that does not have a below-base or post-base form\n // (post-base forms have to follow below-base forms),\n if (_info.position !== POSITIONS.Below_C && (_info.position !== POSITIONS.Post_C || seenBelow)) {\n base = _i4;\n break;\n } // or that is not a pre-base reordering Ra,\n //\n // IMPLEMENTATION NOTES:\n //\n // Our pre-base reordering Ra's are marked POS_POST_C, so will be skipped\n // by the logic above already.\n //\n // or arrive at the first consonant. The consonant stopped at will\n // be the base.\n\n if (_info.position === POSITIONS.Below_C) {\n seenBelow = true;\n }\n base = _i4;\n } else if (start < _i4 && _info.category === CATEGORIES.ZWJ && glyphs[_i4 - 1].shaperInfo.category === CATEGORIES.H) {\n // A ZWJ after a Halant stops the base search, and requests an explicit\n // half form.\n // A ZWJ before a Halant, requests a subjoined form instead, and hence\n // search continues. This is particularly important for Bengali\n // sequence Ra,H,Ya that should form Ya-Phalaa by subjoining Ya.\n break;\n }\n } while (_i4 > limit);\n break;\n }\n case 'First':\n {\n // The first consonant is always the base.\n base = start; // Mark all subsequent consonants as below.\n\n for (var _i5 = base + 1; _i5 < end; _i5++) {\n if (isConsonant(glyphs[_i5])) {\n glyphs[_i5].shaperInfo.position = POSITIONS.Below_C;\n }\n }\n }\n } // If the syllable starts with Ra + Halant (in a script that has Reph)\n // and has more than one consonant, Ra is excluded from candidates for\n // base consonants.\n //\n // Only do this for unforced Reph. (ie. not for Ra,H,ZWJ)\n\n if (hasReph && base === start && limit - base <= 2) {\n hasReph = false;\n } // 2. Decompose and reorder Matras:\n //\n // Each matra and any syllable modifier sign in the cluster are moved to the\n // appropriate position relative to the consonant(s) in the cluster. The\n // shaping engine decomposes two- or three-part matras into their constituent\n // parts before any repositioning. Matra characters are classified by which\n // consonant in a conjunct they have affinity for and are reordered to the\n // following positions:\n //\n // o Before first half form in the syllable\n // o After subjoined consonants\n // o After post-form consonant\n // o After main consonant (for above marks)\n //\n // IMPLEMENTATION NOTES:\n //\n // The normalize() routine has already decomposed matras for us, so we don't\n // need to worry about that.\n // 3. Reorder marks to canonical order:\n //\n // Adjacent nukta and halant or nukta and vedic sign are always repositioned\n // if necessary, so that the nukta is first.\n //\n // IMPLEMENTATION NOTES:\n //\n // We don't need to do this: the normalize() routine already did this for us.\n // Reorder characters\n\n for (var _i6 = start; _i6 < base; _i6++) {\n var _info2 = glyphs[_i6].shaperInfo;\n _info2.position = Math.min(POSITIONS.Pre_C, _info2.position);\n }\n if (base < end) {\n glyphs[base].shaperInfo.position = POSITIONS.Base_C;\n } // Mark final consonants. A final consonant is one appearing after a matra,\n // like in Khmer.\n\n for (var _i7 = base + 1; _i7 < end; _i7++) {\n if (glyphs[_i7].shaperInfo.category === CATEGORIES.M) {\n for (var j = _i7 + 1; j < end; j++) {\n if (isConsonant(glyphs[j])) {\n glyphs[j].shaperInfo.position = POSITIONS.Final_C;\n break;\n }\n }\n break;\n }\n } // Handle beginning Ra\n\n if (hasReph) {\n glyphs[start].shaperInfo.position = POSITIONS.Ra_To_Become_Reph;\n } // For old-style Indic script tags, move the first post-base Halant after\n // last consonant.\n //\n // Reports suggest that in some scripts Uniscribe does this only if there\n // is *not* a Halant after last consonant already (eg. Kannada), while it\n // does it unconditionally in other scripts (eg. Malayalam). We don't\n // currently know about other scripts, so we single out Malayalam for now.\n //\n // Kannada test case:\n // U+0C9A,U+0CCD,U+0C9A,U+0CCD\n // With some versions of Lohit Kannada.\n // https://bugs.freedesktop.org/show_bug.cgi?id=59118\n //\n // Malayalam test case:\n // U+0D38,U+0D4D,U+0D31,U+0D4D,U+0D31,U+0D4D\n // With lohit-ttf-20121122/Lohit-Malayalam.ttf\n\n if (plan.isOldSpec) {\n var disallowDoubleHalants = plan.unicodeScript !== 'Malayalam';\n for (var _i8 = base + 1; _i8 < end; _i8++) {\n if (glyphs[_i8].shaperInfo.category === CATEGORIES.H) {\n var _j = void 0;\n for (_j = end - 1; _j > _i8; _j--) {\n if (isConsonant(glyphs[_j]) || disallowDoubleHalants && glyphs[_j].shaperInfo.category === CATEGORIES.H) {\n break;\n }\n }\n if (glyphs[_j].shaperInfo.category !== CATEGORIES.H && _j > _i8) {\n // Move Halant to after last consonant.\n var t = glyphs[_i8];\n glyphs.splice.apply(glyphs, [_i8, 0].concat(glyphs.splice(_i8 + 1, _j - _i8)));\n glyphs[_j] = t;\n }\n break;\n }\n }\n } // Attach misc marks to previous char to move with them.\n\n var lastPos = POSITIONS.Start;\n for (var _i9 = start; _i9 < end; _i9++) {\n var _info3 = glyphs[_i9].shaperInfo;\n if (_info3.category & (JOINER_FLAGS | CATEGORIES.N | CATEGORIES.RS | CATEGORIES.CM | HALANT_OR_COENG_FLAGS & _info3.category)) {\n _info3.position = lastPos;\n if (_info3.category === CATEGORIES.H && _info3.position === POSITIONS.Pre_M) {\n // Uniscribe doesn't move the Halant with Left Matra.\n // TEST: U+092B,U+093F,U+094DE\n // We follow. This is important for the Sinhala\n // U+0DDA split matra since it decomposes to U+0DD9,U+0DCA\n // where U+0DD9 is a left matra and U+0DCA is the virama.\n // We don't want to move the virama with the left matra.\n // TEST: U+0D9A,U+0DDA\n for (var _j2 = _i9; _j2 > start; _j2--) {\n if (glyphs[_j2 - 1].shaperInfo.position !== POSITIONS.Pre_M) {\n _info3.position = glyphs[_j2 - 1].shaperInfo.position;\n break;\n }\n }\n }\n } else if (_info3.position !== POSITIONS.SMVD) {\n lastPos = _info3.position;\n }\n } // For post-base consonants let them own anything before them\n // since the last consonant or matra.\n\n var last = base;\n for (var _i10 = base + 1; _i10 < end; _i10++) {\n if (isConsonant(glyphs[_i10])) {\n for (var _j3 = last + 1; _j3 < _i10; _j3++) {\n if (glyphs[_j3].shaperInfo.position < POSITIONS.SMVD) {\n glyphs[_j3].shaperInfo.position = glyphs[_i10].shaperInfo.position;\n }\n }\n last = _i10;\n } else if (glyphs[_i10].shaperInfo.category === CATEGORIES.M) {\n last = _i10;\n }\n }\n var arr = glyphs.slice(start, end);\n arr.sort(function (a, b) {\n return a.shaperInfo.position - b.shaperInfo.position;\n });\n glyphs.splice.apply(glyphs, [start, arr.length].concat(arr)); // Find base again\n\n for (var _i11 = start; _i11 < end; _i11++) {\n if (glyphs[_i11].shaperInfo.position === POSITIONS.Base_C) {\n base = _i11;\n break;\n }\n } // Setup features now\n // Reph\n\n for (var _i12 = start; _i12 < end && glyphs[_i12].shaperInfo.position === POSITIONS.Ra_To_Become_Reph; _i12++) {\n glyphs[_i12].features.rphf = true;\n } // Pre-base\n\n var blwf = !plan.isOldSpec && indicConfig.blwfMode === 'Pre_And_Post';\n for (var _i13 = start; _i13 < base; _i13++) {\n glyphs[_i13].features.half = true;\n if (blwf) {\n glyphs[_i13].features.blwf = true;\n }\n } // Post-base\n\n for (var _i14 = base + 1; _i14 < end; _i14++) {\n glyphs[_i14].features.abvf = true;\n glyphs[_i14].features.pstf = true;\n glyphs[_i14].features.blwf = true;\n }\n if (plan.isOldSpec && plan.unicodeScript === 'Devanagari') {\n // Old-spec eye-lash Ra needs special handling. From the\n // spec:\n //\n // \"The feature 'below-base form' is applied to consonants\n // having below-base forms and following the base consonant.\n // The exception is vattu, which may appear below half forms\n // as well as below the base glyph. The feature 'below-base\n // form' will be applied to all such occurrences of Ra as well.\"\n //\n // Test case: U+0924,U+094D,U+0930,U+094d,U+0915\n // with Sanskrit 2003 font.\n //\n // However, note that Ra,Halant,ZWJ is the correct way to\n // request eyelash form of Ra, so we wouldbn't inhibit it\n // in that sequence.\n //\n // Test case: U+0924,U+094D,U+0930,U+094d,U+200D,U+0915\n for (var _i15 = start; _i15 + 1 < base; _i15++) {\n if (glyphs[_i15].shaperInfo.category === CATEGORIES.Ra && glyphs[_i15 + 1].shaperInfo.category === CATEGORIES.H && (_i15 + 1 === base || glyphs[_i15 + 2].shaperInfo.category === CATEGORIES.ZWJ)) {\n glyphs[_i15].features.blwf = true;\n glyphs[_i15 + 1].features.blwf = true;\n }\n }\n }\n var prefLen = 2;\n if (features.pref && base + prefLen < end) {\n // Find a Halant,Ra sequence and mark it for pre-base reordering processing.\n for (var _i16 = base + 1; _i16 + prefLen - 1 < end; _i16++) {\n var _g2 = [glyphs[_i16].copy(), glyphs[_i16 + 1].copy()];\n if (wouldSubstitute(_g2, 'pref')) {\n for (var _j4 = 0; _j4 < prefLen; _j4++) {\n glyphs[_i16++].features.pref = true;\n } // Mark the subsequent stuff with 'cfar'. Used in Khmer.\n // Read the feature spec.\n // This allows distinguishing the following cases with MS Khmer fonts:\n // U+1784,U+17D2,U+179A,U+17D2,U+1782\n // U+1784,U+17D2,U+1782,U+17D2,U+179A\n\n if (features.cfar) {\n for (; _i16 < end; _i16++) {\n glyphs[_i16].features.cfar = true;\n }\n }\n break;\n }\n }\n } // Apply ZWJ/ZWNJ effects\n\n for (var _i17 = start + 1; _i17 < end; _i17++) {\n if (isJoiner(glyphs[_i17])) {\n var nonJoiner = glyphs[_i17].shaperInfo.category === CATEGORIES.ZWNJ;\n var _j5 = _i17;\n do {\n _j5--; // ZWJ/ZWNJ should disable CJCT. They do that by simply\n // being there, since we don't skip them for the CJCT\n // feature (ie. F_MANUAL_ZWJ)\n // A ZWNJ disables HALF.\n\n if (nonJoiner) {\n delete glyphs[_j5].features.half;\n }\n } while (_j5 > start && !isConsonant(glyphs[_j5]));\n }\n }\n }\n}\nfunction finalReordering(font, glyphs, plan) {\n var indicConfig = plan.indicConfig;\n var features = font._layoutEngine.engine.GSUBProcessor.features;\n for (var start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {\n // 4. Final reordering:\n //\n // After the localized forms and basic shaping forms GSUB features have been\n // applied (see below), the shaping engine performs some final glyph\n // reordering before applying all the remaining font features to the entire\n // cluster.\n var tryPref = !!features.pref; // Find base again\n\n var base = start;\n for (; base < end; base++) {\n if (glyphs[base].shaperInfo.position >= POSITIONS.Base_C) {\n if (tryPref && base + 1 < end) {\n for (var i = base + 1; i < end; i++) {\n if (glyphs[i].features.pref) {\n if (!(glyphs[i].substituted && glyphs[i].isLigated && !glyphs[i].isMultiplied)) {\n // Ok, this was a 'pref' candidate but didn't form any.\n // Base is around here...\n base = i;\n while (base < end && isHalantOrCoeng(glyphs[base])) {\n base++;\n }\n glyphs[base].shaperInfo.position = POSITIONS.BASE_C;\n tryPref = false;\n }\n break;\n }\n }\n } // For Malayalam, skip over unformed below- (but NOT post-) forms.\n\n if (plan.unicodeScript === 'Malayalam') {\n for (var _i18 = base + 1; _i18 < end; _i18++) {\n while (_i18 < end && isJoiner(glyphs[_i18])) {\n _i18++;\n }\n if (_i18 === end || !isHalantOrCoeng(glyphs[_i18])) {\n break;\n }\n _i18++; // Skip halant.\n\n while (_i18 < end && isJoiner(glyphs[_i18])) {\n _i18++;\n }\n if (_i18 < end && isConsonant(glyphs[_i18]) && glyphs[_i18].shaperInfo.position === POSITIONS.Below_C) {\n base = _i18;\n glyphs[base].shaperInfo.position = POSITIONS.Base_C;\n }\n }\n }\n if (start < base && glyphs[base].shaperInfo.position > POSITIONS.Base_C) {\n base--;\n }\n break;\n }\n }\n if (base === end && start < base && glyphs[base - 1].shaperInfo.category === CATEGORIES.ZWJ) {\n base--;\n }\n if (base < end) {\n while (start < base && glyphs[base].shaperInfo.category & (CATEGORIES.N | HALANT_OR_COENG_FLAGS)) {\n base--;\n }\n } // o Reorder matras:\n //\n // If a pre-base matra character had been reordered before applying basic\n // features, the glyph can be moved closer to the main consonant based on\n // whether half-forms had been formed. Actual position for the matra is\n // defined as “after last standalone halant glyph, after initial matra\n // position and before the main consonant”. If ZWJ or ZWNJ follow this\n // halant, position is moved after it.\n //\n\n if (start + 1 < end && start < base) {\n // Otherwise there can't be any pre-base matra characters.\n // If we lost track of base, alas, position before last thingy.\n var newPos = base === end ? base - 2 : base - 1; // Malayalam / Tamil do not have \"half\" forms or explicit virama forms.\n // The glyphs formed by 'half' are Chillus or ligated explicit viramas.\n // We want to position matra after them.\n\n if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {\n while (newPos > start && !(glyphs[newPos].shaperInfo.category & (CATEGORIES.M | HALANT_OR_COENG_FLAGS))) {\n newPos--;\n } // If we found no Halant we are done.\n // Otherwise only proceed if the Halant does\n // not belong to the Matra itself!\n\n if (isHalantOrCoeng(glyphs[newPos]) && glyphs[newPos].shaperInfo.position !== POSITIONS.Pre_M) {\n // If ZWJ or ZWNJ follow this halant, position is moved after it.\n if (newPos + 1 < end && isJoiner(glyphs[newPos + 1])) {\n newPos++;\n }\n } else {\n newPos = start; // No move.\n }\n }\n if (start < newPos && glyphs[newPos].shaperInfo.position !== POSITIONS.Pre_M) {\n // Now go see if there's actually any matras...\n for (var _i19 = newPos; _i19 > start; _i19--) {\n if (glyphs[_i19 - 1].shaperInfo.position === POSITIONS.Pre_M) {\n var oldPos = _i19 - 1;\n if (oldPos < base && base <= newPos) {\n // Shouldn't actually happen.\n base--;\n }\n var tmp = glyphs[oldPos];\n glyphs.splice.apply(glyphs, [oldPos, 0].concat(glyphs.splice(oldPos + 1, newPos - oldPos)));\n glyphs[newPos] = tmp;\n newPos--;\n }\n }\n }\n } // o Reorder reph:\n //\n // Reph’s original position is always at the beginning of the syllable,\n // (i.e. it is not reordered at the character reordering stage). However,\n // it will be reordered according to the basic-forms shaping results.\n // Possible positions for reph, depending on the script, are; after main,\n // before post-base consonant forms, and after post-base consonant forms.\n // Two cases:\n //\n // - If repha is encoded as a sequence of characters (Ra,H or Ra,H,ZWJ), then\n // we should only move it if the sequence ligated to the repha form.\n //\n // - If repha is encoded separately and in the logical position, we should only\n // move it if it did NOT ligate. If it ligated, it's probably the font trying\n // to make it work without the reordering.\n\n if (start + 1 < end && glyphs[start].shaperInfo.position === POSITIONS.Ra_To_Become_Reph && glyphs[start].shaperInfo.category === CATEGORIES.Repha !== (glyphs[start].isLigated && !glyphs[start].isMultiplied)) {\n var newRephPos = void 0;\n var rephPos = indicConfig.rephPos;\n var found = false; // 1. If reph should be positioned after post-base consonant forms,\n // proceed to step 5.\n\n if (rephPos !== POSITIONS.After_Post) {\n // 2. If the reph repositioning class is not after post-base: target\n // position is after the first explicit halant glyph between the\n // first post-reph consonant and last main consonant. If ZWJ or ZWNJ\n // are following this halant, position is moved after it. If such\n // position is found, this is the target position. Otherwise,\n // proceed to the next step.\n //\n // Note: in old-implementation fonts, where classifications were\n // fixed in shaping engine, there was no case where reph position\n // will be found on this step.\n newRephPos = start + 1;\n while (newRephPos < base && !isHalantOrCoeng(glyphs[newRephPos])) {\n newRephPos++;\n }\n if (newRephPos < base && isHalantOrCoeng(glyphs[newRephPos])) {\n // ->If ZWJ or ZWNJ are following this halant, position is moved after it.\n if (newRephPos + 1 < base && isJoiner(glyphs[newRephPos + 1])) {\n newRephPos++;\n }\n found = true;\n } // 3. If reph should be repositioned after the main consonant: find the\n // first consonant not ligated with main, or find the first\n // consonant that is not a potential pre-base reordering Ra.\n\n if (!found && rephPos === POSITIONS.After_Main) {\n newRephPos = base;\n while (newRephPos + 1 < end && glyphs[newRephPos + 1].shaperInfo.position <= POSITIONS.After_Main) {\n newRephPos++;\n }\n found = newRephPos < end;\n } // 4. If reph should be positioned before post-base consonant, find\n // first post-base classified consonant not ligated with main. If no\n // consonant is found, the target position should be before the\n // first matra, syllable modifier sign or vedic sign.\n //\n // This is our take on what step 4 is trying to say (and failing, BADLY).\n\n if (!found && rephPos === POSITIONS.After_Sub) {\n newRephPos = base;\n while (newRephPos + 1 < end && !(glyphs[newRephPos + 1].shaperInfo.position & (POSITIONS.Post_C | POSITIONS.After_Post | POSITIONS.SMVD))) {\n newRephPos++;\n }\n found = newRephPos < end;\n }\n } // 5. If no consonant is found in steps 3 or 4, move reph to a position\n // immediately before the first post-base matra, syllable modifier\n // sign or vedic sign that has a reordering class after the intended\n // reph position. For example, if the reordering position for reph\n // is post-main, it will skip above-base matras that also have a\n // post-main position.\n\n if (!found) {\n // Copied from step 2.\n newRephPos = start + 1;\n while (newRephPos < base && !isHalantOrCoeng(glyphs[newRephPos])) {\n newRephPos++;\n }\n if (newRephPos < base && isHalantOrCoeng(glyphs[newRephPos])) {\n // ->If ZWJ or ZWNJ are following this halant, position is moved after it.\n if (newRephPos + 1 < base && isJoiner(glyphs[newRephPos + 1])) {\n newRephPos++;\n }\n found = true;\n }\n } // 6. Otherwise, reorder reph to the end of the syllable.\n\n if (!found) {\n newRephPos = end - 1;\n while (newRephPos > start && glyphs[newRephPos].shaperInfo.position === POSITIONS.SMVD) {\n newRephPos--;\n } // If the Reph is to be ending up after a Matra,Halant sequence,\n // position it before that Halant so it can interact with the Matra.\n // However, if it's a plain Consonant,Halant we shouldn't do that.\n // Uniscribe doesn't do this.\n // TEST: U+0930,U+094D,U+0915,U+094B,U+094D\n\n if (isHalantOrCoeng(glyphs[newRephPos])) {\n for (var _i20 = base + 1; _i20 < newRephPos; _i20++) {\n if (glyphs[_i20].shaperInfo.category === CATEGORIES.M) {\n newRephPos--;\n }\n }\n }\n }\n var reph = glyphs[start];\n glyphs.splice.apply(glyphs, [start, 0].concat(glyphs.splice(start + 1, newRephPos - start)));\n glyphs[newRephPos] = reph;\n if (start < base && base <= newRephPos) {\n base--;\n }\n } // o Reorder pre-base reordering consonants:\n //\n // If a pre-base reordering consonant is found, reorder it according to\n // the following rules:\n\n if (tryPref && base + 1 < end) {\n for (var _i21 = base + 1; _i21 < end; _i21++) {\n if (glyphs[_i21].features.pref) {\n // 1. Only reorder a glyph produced by substitution during application\n // of the <pref> feature. (Note that a font may shape a Ra consonant with\n // the feature generally but block it in certain contexts.)\n // Note: We just check that something got substituted. We don't check that\n // the <pref> feature actually did it...\n //\n // Reorder pref only if it ligated.\n if (glyphs[_i21].isLigated && !glyphs[_i21].isMultiplied) {\n // 2. Try to find a target position the same way as for pre-base matra.\n // If it is found, reorder pre-base consonant glyph.\n //\n // 3. If position is not found, reorder immediately before main\n // consonant.\n var _newPos = base; // Malayalam / Tamil do not have \"half\" forms or explicit virama forms.\n // The glyphs formed by 'half' are Chillus or ligated explicit viramas.\n // We want to position matra after them.\n\n if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {\n while (_newPos > start && !(glyphs[_newPos - 1].shaperInfo.category & (CATEGORIES.M | HALANT_OR_COENG_FLAGS))) {\n _newPos--;\n } // In Khmer coeng model, a H,Ra can go *after* matras. If it goes after a\n // split matra, it should be reordered to *before* the left part of such matra.\n\n if (_newPos > start && glyphs[_newPos - 1].shaperInfo.category === CATEGORIES.M) {\n var _oldPos2 = _i21;\n for (var j = base + 1; j < _oldPos2; j++) {\n if (glyphs[j].shaperInfo.category === CATEGORIES.M) {\n _newPos--;\n break;\n }\n }\n }\n }\n if (_newPos > start && isHalantOrCoeng(glyphs[_newPos - 1])) {\n // -> If ZWJ or ZWNJ follow this halant, position is moved after it.\n if (_newPos < end && isJoiner(glyphs[_newPos])) {\n _newPos++;\n }\n }\n var _oldPos = _i21;\n var _tmp = glyphs[_oldPos];\n glyphs.splice.apply(glyphs, [_newPos + 1, 0].concat(glyphs.splice(_newPos, _oldPos - _newPos)));\n glyphs[_newPos] = _tmp;\n if (_newPos <= base && base < _oldPos) {\n base++;\n }\n }\n break;\n }\n }\n } // Apply 'init' to the Left Matra if it's a word start.\n\n if (glyphs[start].shaperInfo.position === POSITIONS.Pre_M && (!start || !/Cf|Mn/.test(unicode.getCategory(glyphs[start - 1].codePoints[0])))) {\n glyphs[start].features.init = true;\n }\n }\n}\nfunction nextSyllable(glyphs, start) {\n if (start >= glyphs.length) return start;\n var syllable = glyphs[start].shaperInfo.syllable;\n while (++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable) {}\n return start;\n}\nvar categories$1 = useData.categories,\n decompositions$2 = useData.decompositions;\nvar trie$2 = new UnicodeTrie(Buffer(\"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\",\"base64\"));\nvar stateMachine$1 = new StateMachine(useData);\n/**\r\n * This shaper is an implementation of the Universal Shaping Engine, which\r\n * uses Unicode data to shape a number of scripts without a dedicated shaping engine.\r\n * See https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm.\r\n */\nvar UniversalShaper = /*#__PURE__*/function (_DefaultShaper4) {\n _inheritsLoose(UniversalShaper, _DefaultShaper4);\n function UniversalShaper() {\n return _DefaultShaper4.apply(this, arguments) || this;\n }\n UniversalShaper.planFeatures = function planFeatures(plan) {\n plan.addStage(setupSyllables$1); // Default glyph pre-processing group\n\n plan.addStage(['locl', 'ccmp', 'nukt', 'akhn']); // Reordering group\n\n plan.addStage(clearSubstitutionFlags);\n plan.addStage(['rphf'], false);\n plan.addStage(recordRphf);\n plan.addStage(clearSubstitutionFlags);\n plan.addStage(['pref']);\n plan.addStage(recordPref); // Orthographic unit shaping group\n\n plan.addStage(['rkrf', 'abvf', 'blwf', 'half', 'pstf', 'vatu', 'cjct']);\n plan.addStage(reorder); // Topographical features\n // Scripts that need this are handled by the Arabic shaper, not implemented here for now.\n // plan.addStage(['isol', 'init', 'medi', 'fina', 'med2', 'fin2', 'fin3'], false);\n // Standard topographic presentation and positional feature application\n\n plan.addStage(['abvs', 'blws', 'pres', 'psts', 'dist', 'abvm', 'blwm']);\n };\n UniversalShaper.assignFeatures = function assignFeatures(plan, glyphs) {\n var _loop = function _loop(i) {\n var codepoint = glyphs[i].codePoints[0];\n if (decompositions$2[codepoint]) {\n var decomposed = decompositions$2[codepoint].map(function (c) {\n var g = plan.font.glyphForCodePoint(c);\n return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);\n });\n glyphs.splice.apply(glyphs, [i, 1].concat(decomposed));\n }\n };\n\n // Decompose split vowels\n // TODO: do this in a more general unicode normalizer\n for (var i = glyphs.length - 1; i >= 0; i--) {\n _loop(i);\n }\n };\n return UniversalShaper;\n}(DefaultShaper);\n_defineProperty(UniversalShaper, \"zeroMarkWidths\", 'BEFORE_GPOS');\nfunction useCategory(glyph) {\n return trie$2.get(glyph.codePoints[0]);\n}\nvar USEInfo = function USEInfo(category, syllableType, syllable) {\n this.category = category;\n this.syllableType = syllableType;\n this.syllable = syllable;\n};\nfunction setupSyllables$1(font, glyphs) {\n var syllable = 0;\n for (var _iterator55 = _createForOfIteratorHelperLoose(stateMachine$1.match(glyphs.map(useCategory))), _step55; !(_step55 = _iterator55()).done;) {\n var _step55$value = _step55.value,\n start = _step55$value[0],\n end = _step55$value[1],\n tags = _step55$value[2];\n ++syllable; // Create shaper info\n\n for (var i = start; i <= end; i++) {\n glyphs[i].shaperInfo = new USEInfo(categories$1[useCategory(glyphs[i])], tags[0], syllable);\n } // Assign rphf feature\n\n var limit = glyphs[start].shaperInfo.category === 'R' ? 1 : Math.min(3, end - start);\n for (var _i = start; _i < start + limit; _i++) {\n glyphs[_i].features.rphf = true;\n }\n }\n}\nfunction clearSubstitutionFlags(font, glyphs) {\n for (var _iterator56 = _createForOfIteratorHelperLoose(glyphs), _step56; !(_step56 = _iterator56()).done;) {\n var glyph = _step56.value;\n glyph.substituted = false;\n }\n}\nfunction recordRphf(font, glyphs) {\n for (var _iterator57 = _createForOfIteratorHelperLoose(glyphs), _step57; !(_step57 = _iterator57()).done;) {\n var glyph = _step57.value;\n if (glyph.substituted && glyph.features.rphf) {\n // Mark a substituted repha.\n glyph.shaperInfo.category = 'R';\n }\n }\n}\nfunction recordPref(font, glyphs) {\n for (var _iterator58 = _createForOfIteratorHelperLoose(glyphs), _step58; !(_step58 = _iterator58()).done;) {\n var glyph = _step58.value;\n if (glyph.substituted) {\n // Mark a substituted pref as VPre, as they behave the same way.\n glyph.shaperInfo.category = 'VPre';\n }\n }\n}\nfunction reorder(font, glyphs) {\n var dottedCircle = font.glyphForCodePoint(0x25cc).id;\n for (var start = 0, end = nextSyllable$1(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable$1(glyphs, start)) {\n var i = void 0,\n j = void 0;\n var info = glyphs[start].shaperInfo;\n var type = info.syllableType; // Only a few syllable types need reordering.\n\n if (type !== 'virama_terminated_cluster' && type !== 'standard_cluster' && type !== 'broken_cluster') {\n continue;\n } // Insert a dotted circle glyph in broken clusters.\n\n if (type === 'broken_cluster' && dottedCircle) {\n var g = new GlyphInfo(font, dottedCircle, [0x25cc]);\n g.shaperInfo = info; // Insert after possible Repha.\n\n for (i = start; i < end && glyphs[i].shaperInfo.category === 'R'; i++) {}\n glyphs.splice(++i, 0, g);\n end++;\n } // Move things forward.\n\n if (info.category === 'R' && end - start > 1) {\n // Got a repha. Reorder it to after first base, before first halant.\n for (i = start + 1; i < end; i++) {\n info = glyphs[i].shaperInfo;\n if (isBase(info) || isHalant(glyphs[i])) {\n // If we hit a halant, move before it; otherwise it's a base: move to it's\n // place, and shift things in between backward.\n if (isHalant(glyphs[i])) {\n i--;\n }\n glyphs.splice.apply(glyphs, [start, 0].concat(glyphs.splice(start + 1, i - start), [glyphs[i]]));\n break;\n }\n }\n } // Move things back.\n\n for (i = start, j = end; i < end; i++) {\n info = glyphs[i].shaperInfo;\n if (isBase(info) || isHalant(glyphs[i])) {\n // If we hit a halant, move after it; otherwise it's a base: move to it's\n // place, and shift things in between backward.\n j = isHalant(glyphs[i]) ? i + 1 : i;\n } else if ((info.category === 'VPre' || info.category === 'VMPre') && j < i) {\n glyphs.splice.apply(glyphs, [j, 1, glyphs[i]].concat(glyphs.splice(j, i - j)));\n }\n }\n }\n}\nfunction nextSyllable$1(glyphs, start) {\n if (start >= glyphs.length) return start;\n var syllable = glyphs[start].shaperInfo.syllable;\n while (++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable) {}\n return start;\n}\nfunction isHalant(glyph) {\n return glyph.shaperInfo.category === 'H' && !glyph.isLigated;\n}\nfunction isBase(info) {\n return info.category === 'B' || info.category === 'GB';\n}\nvar SHAPERS = {\n arab: ArabicShaper,\n // Arabic\n mong: ArabicShaper,\n // Mongolian\n syrc: ArabicShaper,\n // Syriac\n 'nko ': ArabicShaper,\n // N'Ko\n phag: ArabicShaper,\n // Phags Pa\n mand: ArabicShaper,\n // Mandaic\n mani: ArabicShaper,\n // Manichaean\n phlp: ArabicShaper,\n // Psalter Pahlavi\n hang: HangulShaper,\n // Hangul\n bng2: IndicShaper,\n // Bengali\n beng: IndicShaper,\n // Bengali\n dev2: IndicShaper,\n // Devanagari\n deva: IndicShaper,\n // Devanagari\n gjr2: IndicShaper,\n // Gujarati\n gujr: IndicShaper,\n // Gujarati\n guru: IndicShaper,\n // Gurmukhi\n gur2: IndicShaper,\n // Gurmukhi\n knda: IndicShaper,\n // Kannada\n knd2: IndicShaper,\n // Kannada\n mlm2: IndicShaper,\n // Malayalam\n mlym: IndicShaper,\n // Malayalam\n ory2: IndicShaper,\n // Oriya\n orya: IndicShaper,\n // Oriya\n taml: IndicShaper,\n // Tamil\n tml2: IndicShaper,\n // Tamil\n telu: IndicShaper,\n // Telugu\n tel2: IndicShaper,\n // Telugu\n khmr: IndicShaper,\n // Khmer\n bali: UniversalShaper,\n // Balinese\n batk: UniversalShaper,\n // Batak\n brah: UniversalShaper,\n // Brahmi\n bugi: UniversalShaper,\n // Buginese\n buhd: UniversalShaper,\n // Buhid\n cakm: UniversalShaper,\n // Chakma\n cham: UniversalShaper,\n // Cham\n dupl: UniversalShaper,\n // Duployan\n egyp: UniversalShaper,\n // Egyptian Hieroglyphs\n gran: UniversalShaper,\n // Grantha\n hano: UniversalShaper,\n // Hanunoo\n java: UniversalShaper,\n // Javanese\n kthi: UniversalShaper,\n // Kaithi\n kali: UniversalShaper,\n // Kayah Li\n khar: UniversalShaper,\n // Kharoshthi\n khoj: UniversalShaper,\n // Khojki\n sind: UniversalShaper,\n // Khudawadi\n lepc: UniversalShaper,\n // Lepcha\n limb: UniversalShaper,\n // Limbu\n mahj: UniversalShaper,\n // Mahajani\n // mand: UniversalShaper, // Mandaic\n // mani: UniversalShaper, // Manichaean\n mtei: UniversalShaper,\n // Meitei Mayek\n modi: UniversalShaper,\n // Modi\n // mong: UniversalShaper, // Mongolian\n // 'nko ': UniversalShaper, // N’Ko\n hmng: UniversalShaper,\n // Pahawh Hmong\n // phag: UniversalShaper, // Phags-pa\n // phlp: UniversalShaper, // Psalter Pahlavi\n rjng: UniversalShaper,\n // Rejang\n saur: UniversalShaper,\n // Saurashtra\n shrd: UniversalShaper,\n // Sharada\n sidd: UniversalShaper,\n // Siddham\n sinh: UniversalShaper,\n // Sinhala\n sund: UniversalShaper,\n // Sundanese\n sylo: UniversalShaper,\n // Syloti Nagri\n tglg: UniversalShaper,\n // Tagalog\n tagb: UniversalShaper,\n // Tagbanwa\n tale: UniversalShaper,\n // Tai Le\n lana: UniversalShaper,\n // Tai Tham\n tavt: UniversalShaper,\n // Tai Viet\n takr: UniversalShaper,\n // Takri\n tibt: UniversalShaper,\n // Tibetan\n tfng: UniversalShaper,\n // Tifinagh\n tirh: UniversalShaper,\n // Tirhuta\n latn: DefaultShaper,\n // Latin\n DFLT: DefaultShaper // Default\n};\nfunction choose(script) {\n if (!Array.isArray(script)) {\n script = [script];\n }\n for (var _iterator59 = _createForOfIteratorHelperLoose(script), _step59; !(_step59 = _iterator59()).done;) {\n var s = _step59.value;\n var shaper = SHAPERS[s];\n if (shaper) {\n return shaper;\n }\n }\n return DefaultShaper;\n}\nvar GSUBProcessor = /*#__PURE__*/function (_OTProcessor) {\n _inheritsLoose(GSUBProcessor, _OTProcessor);\n function GSUBProcessor() {\n return _OTProcessor.apply(this, arguments) || this;\n }\n var _proto27 = GSUBProcessor.prototype;\n _proto27.applyLookup = function applyLookup(lookupType, table) {\n var _this7 = this;\n switch (lookupType) {\n case 1:\n {\n // Single Substitution\n var index = this.coverageIndex(table.coverage);\n if (index === -1) {\n return false;\n }\n var glyph = this.glyphIterator.cur;\n switch (table.version) {\n case 1:\n glyph.id = glyph.id + table.deltaGlyphID & 0xffff;\n break;\n case 2:\n glyph.id = table.substitute.get(index);\n break;\n }\n return true;\n }\n case 2:\n {\n // Multiple Substitution\n var _index = this.coverageIndex(table.coverage);\n if (_index !== -1) {\n var _this$glyphs2;\n var sequence = table.sequences.get(_index);\n if (sequence.length === 0) {\n // If the sequence length is zero, delete the glyph.\n // The OpenType spec disallows this, but seems like Harfbuzz and Uniscribe allow it.\n this.glyphs.splice(this.glyphIterator.index, 1);\n return true;\n }\n this.glyphIterator.cur.id = sequence[0];\n this.glyphIterator.cur.ligatureComponent = 0;\n var features = this.glyphIterator.cur.features;\n var curGlyph = this.glyphIterator.cur;\n var replacement = sequence.slice(1).map(function (gid, i) {\n var glyph = new GlyphInfo(_this7.font, gid, undefined, features);\n glyph.shaperInfo = curGlyph.shaperInfo;\n glyph.isLigated = curGlyph.isLigated;\n glyph.ligatureComponent = i + 1;\n glyph.substituted = true;\n glyph.isMultiplied = true;\n return glyph;\n });\n (_this$glyphs2 = this.glyphs).splice.apply(_this$glyphs2, [this.glyphIterator.index + 1, 0].concat(replacement));\n return true;\n }\n return false;\n }\n case 3:\n {\n // Alternate Substitution\n var _index2 = this.coverageIndex(table.coverage);\n if (_index2 !== -1) {\n var USER_INDEX = 0; // TODO\n\n this.glyphIterator.cur.id = table.alternateSet.get(_index2)[USER_INDEX];\n return true;\n }\n return false;\n }\n case 4:\n {\n // Ligature Substitution\n var _index3 = this.coverageIndex(table.coverage);\n if (_index3 === -1) {\n return false;\n }\n for (var _iterator60 = _createForOfIteratorHelperLoose(table.ligatureSets.get(_index3)), _step60; !(_step60 = _iterator60()).done;) {\n var ligature = _step60.value;\n var matched = this.sequenceMatchIndices(1, ligature.components);\n if (!matched) {\n continue;\n }\n var _curGlyph = this.glyphIterator.cur; // Concatenate all of the characters the new ligature will represent\n\n var characters = _curGlyph.codePoints.slice();\n for (var _iterator61 = _createForOfIteratorHelperLoose(matched), _step61; !(_step61 = _iterator61()).done;) {\n var _characters;\n var _index4 = _step61.value;\n (_characters = characters).push.apply(_characters, this.glyphs[_index4].codePoints);\n } // Create the replacement ligature glyph\n\n var ligatureGlyph = new GlyphInfo(this.font, ligature.glyph, characters, _curGlyph.features);\n ligatureGlyph.shaperInfo = _curGlyph.shaperInfo;\n ligatureGlyph.isLigated = true;\n ligatureGlyph.substituted = true; // From Harfbuzz:\n // - If it *is* a mark ligature, we don't allocate a new ligature id, and leave\n // the ligature to keep its old ligature id. This will allow it to attach to\n // a base ligature in GPOS. Eg. if the sequence is: LAM,LAM,SHADDA,FATHA,HEH,\n // and LAM,LAM,HEH for a ligature, they will leave SHADDA and FATHA with a\n // ligature id and component value of 2. Then if SHADDA,FATHA form a ligature\n // later, we don't want them to lose their ligature id/component, otherwise\n // GPOS will fail to correctly position the mark ligature on top of the\n // LAM,LAM,HEH ligature. See https://bugzilla.gnome.org/show_bug.cgi?id=676343\n //\n // - If a ligature is formed of components that some of which are also ligatures\n // themselves, and those ligature components had marks attached to *their*\n // components, we have to attach the marks to the new ligature component\n // positions! Now *that*'s tricky! And these marks may be following the\n // last component of the whole sequence, so we should loop forward looking\n // for them and update them.\n //\n // Eg. the sequence is LAM,LAM,SHADDA,FATHA,HEH, and the font first forms a\n // 'calt' ligature of LAM,HEH, leaving the SHADDA and FATHA with a ligature\n // id and component == 1. Now, during 'liga', the LAM and the LAM-HEH ligature\n // form a LAM-LAM-HEH ligature. We need to reassign the SHADDA and FATHA to\n // the new ligature with a component value of 2.\n //\n // This in fact happened to a font... See https://bugzilla.gnome.org/show_bug.cgi?id=437633\n\n var isMarkLigature = _curGlyph.isMark;\n for (var i = 0; i < matched.length && isMarkLigature; i++) {\n isMarkLigature = this.glyphs[matched[i]].isMark;\n }\n ligatureGlyph.ligatureID = isMarkLigature ? null : this.ligatureID++;\n var lastLigID = _curGlyph.ligatureID;\n var lastNumComps = _curGlyph.codePoints.length;\n var curComps = lastNumComps;\n var idx = this.glyphIterator.index + 1; // Set ligatureID and ligatureComponent on glyphs that were skipped in the matched sequence.\n // This allows GPOS to attach marks to the correct ligature components.\n\n for (var _iterator62 = _createForOfIteratorHelperLoose(matched), _step62; !(_step62 = _iterator62()).done;) {\n var matchIndex = _step62.value;\n // Don't assign new ligature components for mark ligatures (see above)\n if (isMarkLigature) {\n idx = matchIndex;\n } else {\n while (idx < matchIndex) {\n var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[idx].ligatureComponent || 1, lastNumComps);\n this.glyphs[idx].ligatureID = ligatureGlyph.ligatureID;\n this.glyphs[idx].ligatureComponent = ligatureComponent;\n idx++;\n }\n }\n lastLigID = this.glyphs[idx].ligatureID;\n lastNumComps = this.glyphs[idx].codePoints.length;\n curComps += lastNumComps;\n idx++; // skip base glyph\n } // Adjust ligature components for any marks following\n\n if (lastLigID && !isMarkLigature) {\n for (var _i = idx; _i < this.glyphs.length; _i++) {\n if (this.glyphs[_i].ligatureID === lastLigID) {\n var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[_i].ligatureComponent || 1, lastNumComps);\n this.glyphs[_i].ligatureComponent = ligatureComponent;\n } else {\n break;\n }\n }\n } // Delete the matched glyphs, and replace the current glyph with the ligature glyph\n\n for (var _i2 = matched.length - 1; _i2 >= 0; _i2--) {\n this.glyphs.splice(matched[_i2], 1);\n }\n this.glyphs[this.glyphIterator.index] = ligatureGlyph;\n return true;\n }\n return false;\n }\n case 5:\n // Contextual Substitution\n return this.applyContext(table);\n case 6:\n // Chaining Contextual Substitution\n return this.applyChainingContext(table);\n case 7:\n // Extension Substitution\n return this.applyLookup(table.lookupType, table.extension);\n default:\n throw new Error(\"GSUB lookupType \".concat(lookupType, \" is not supported\"));\n }\n };\n return GSUBProcessor;\n}(OTProcessor);\nvar GPOSProcessor = /*#__PURE__*/function (_OTProcessor2) {\n _inheritsLoose(GPOSProcessor, _OTProcessor2);\n function GPOSProcessor() {\n return _OTProcessor2.apply(this, arguments) || this;\n }\n var _proto28 = GPOSProcessor.prototype;\n _proto28.applyPositionValue = function applyPositionValue(sequenceIndex, value) {\n var position = this.positions[this.glyphIterator.peekIndex(sequenceIndex)];\n if (value.xAdvance != null) {\n position.xAdvance += value.xAdvance;\n }\n if (value.yAdvance != null) {\n position.yAdvance += value.yAdvance;\n }\n if (value.xPlacement != null) {\n position.xOffset += value.xPlacement;\n }\n if (value.yPlacement != null) {\n position.yOffset += value.yPlacement;\n } // Adjustments for font variations\n\n var variationProcessor = this.font._variationProcessor;\n var variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;\n if (variationProcessor && variationStore) {\n if (value.xPlaDevice) {\n position.xOffset += variationProcessor.getDelta(variationStore, value.xPlaDevice.a, value.xPlaDevice.b);\n }\n if (value.yPlaDevice) {\n position.yOffset += variationProcessor.getDelta(variationStore, value.yPlaDevice.a, value.yPlaDevice.b);\n }\n if (value.xAdvDevice) {\n position.xAdvance += variationProcessor.getDelta(variationStore, value.xAdvDevice.a, value.xAdvDevice.b);\n }\n if (value.yAdvDevice) {\n position.yAdvance += variationProcessor.getDelta(variationStore, value.yAdvDevice.a, value.yAdvDevice.b);\n }\n } // TODO: device tables\n };\n _proto28.applyLookup = function applyLookup(lookupType, table) {\n switch (lookupType) {\n case 1:\n {\n // Single positioning value\n var index = this.coverageIndex(table.coverage);\n if (index === -1) {\n return false;\n }\n switch (table.version) {\n case 1:\n this.applyPositionValue(0, table.value);\n break;\n case 2:\n this.applyPositionValue(0, table.values.get(index));\n break;\n }\n return true;\n }\n case 2:\n {\n // Pair Adjustment Positioning\n var nextGlyph = this.glyphIterator.peek();\n if (!nextGlyph) {\n return false;\n }\n var _index = this.coverageIndex(table.coverage);\n if (_index === -1) {\n return false;\n }\n switch (table.version) {\n case 1:\n // Adjustments for glyph pairs\n var set = table.pairSets.get(_index);\n for (var _iterator63 = _createForOfIteratorHelperLoose(set), _step63; !(_step63 = _iterator63()).done;) {\n var _pair = _step63.value;\n if (_pair.secondGlyph === nextGlyph.id) {\n this.applyPositionValue(0, _pair.value1);\n this.applyPositionValue(1, _pair.value2);\n return true;\n }\n }\n return false;\n case 2:\n // Class pair adjustment\n var class1 = this.getClassID(this.glyphIterator.cur.id, table.classDef1);\n var class2 = this.getClassID(nextGlyph.id, table.classDef2);\n if (class1 === -1 || class2 === -1) {\n return false;\n }\n var pair = table.classRecords.get(class1).get(class2);\n this.applyPositionValue(0, pair.value1);\n this.applyPositionValue(1, pair.value2);\n return true;\n }\n }\n case 3:\n {\n // Cursive Attachment Positioning\n var nextIndex = this.glyphIterator.peekIndex();\n var _nextGlyph = this.glyphs[nextIndex];\n if (!_nextGlyph) {\n return false;\n }\n var curRecord = table.entryExitRecords[this.coverageIndex(table.coverage)];\n if (!curRecord || !curRecord.exitAnchor) {\n return false;\n }\n var nextRecord = table.entryExitRecords[this.coverageIndex(table.coverage, _nextGlyph.id)];\n if (!nextRecord || !nextRecord.entryAnchor) {\n return false;\n }\n var entry = this.getAnchor(nextRecord.entryAnchor);\n var exit = this.getAnchor(curRecord.exitAnchor);\n var cur = this.positions[this.glyphIterator.index];\n var next = this.positions[nextIndex];\n switch (this.direction) {\n case 'ltr':\n cur.xAdvance = exit.x + cur.xOffset;\n var d = entry.x + next.xOffset;\n next.xAdvance -= d;\n next.xOffset -= d;\n break;\n case 'rtl':\n d = exit.x + cur.xOffset;\n cur.xAdvance -= d;\n cur.xOffset -= d;\n next.xAdvance = entry.x + next.xOffset;\n break;\n }\n if (this.glyphIterator.flags.rightToLeft) {\n this.glyphIterator.cur.cursiveAttachment = nextIndex;\n cur.yOffset = entry.y - exit.y;\n } else {\n _nextGlyph.cursiveAttachment = this.glyphIterator.index;\n cur.yOffset = exit.y - entry.y;\n }\n return true;\n }\n case 4:\n {\n // Mark to base positioning\n var markIndex = this.coverageIndex(table.markCoverage);\n if (markIndex === -1) {\n return false;\n } // search backward for a base glyph\n\n var baseGlyphIndex = this.glyphIterator.index;\n while (--baseGlyphIndex >= 0 && (this.glyphs[baseGlyphIndex].isMark || this.glyphs[baseGlyphIndex].ligatureComponent > 0)) {}\n if (baseGlyphIndex < 0) {\n return false;\n }\n var baseIndex = this.coverageIndex(table.baseCoverage, this.glyphs[baseGlyphIndex].id);\n if (baseIndex === -1) {\n return false;\n }\n var markRecord = table.markArray[markIndex];\n var baseAnchor = table.baseArray[baseIndex][markRecord.class];\n this.applyAnchor(markRecord, baseAnchor, baseGlyphIndex);\n return true;\n }\n case 5:\n {\n // Mark to ligature positioning\n var _markIndex = this.coverageIndex(table.markCoverage);\n if (_markIndex === -1) {\n return false;\n } // search backward for a base glyph\n\n var _baseGlyphIndex = this.glyphIterator.index;\n while (--_baseGlyphIndex >= 0 && this.glyphs[_baseGlyphIndex].isMark) {}\n if (_baseGlyphIndex < 0) {\n return false;\n }\n var ligIndex = this.coverageIndex(table.ligatureCoverage, this.glyphs[_baseGlyphIndex].id);\n if (ligIndex === -1) {\n return false;\n }\n var ligAttach = table.ligatureArray[ligIndex];\n var markGlyph = this.glyphIterator.cur;\n var ligGlyph = this.glyphs[_baseGlyphIndex];\n var compIndex = ligGlyph.ligatureID && ligGlyph.ligatureID === markGlyph.ligatureID && markGlyph.ligatureComponent > 0 ? Math.min(markGlyph.ligatureComponent, ligGlyph.codePoints.length) - 1 : ligGlyph.codePoints.length - 1;\n var _markRecord = table.markArray[_markIndex];\n var _baseAnchor = ligAttach[compIndex][_markRecord.class];\n this.applyAnchor(_markRecord, _baseAnchor, _baseGlyphIndex);\n return true;\n }\n case 6:\n {\n // Mark to mark positioning\n var mark1Index = this.coverageIndex(table.mark1Coverage);\n if (mark1Index === -1) {\n return false;\n } // get the previous mark to attach to\n\n var prevIndex = this.glyphIterator.peekIndex(-1);\n var prev = this.glyphs[prevIndex];\n if (!prev || !prev.isMark) {\n return false;\n }\n var _cur = this.glyphIterator.cur; // The following logic was borrowed from Harfbuzz\n\n var good = false;\n if (_cur.ligatureID === prev.ligatureID) {\n if (!_cur.ligatureID) {\n // Marks belonging to the same base\n good = true;\n } else if (_cur.ligatureComponent === prev.ligatureComponent) {\n // Marks belonging to the same ligature component\n good = true;\n }\n } else {\n // If ligature ids don't match, it may be the case that one of the marks\n // itself is a ligature, in which case match.\n if (_cur.ligatureID && !_cur.ligatureComponent || prev.ligatureID && !prev.ligatureComponent) {\n good = true;\n }\n }\n if (!good) {\n return false;\n }\n var mark2Index = this.coverageIndex(table.mark2Coverage, prev.id);\n if (mark2Index === -1) {\n return false;\n }\n var _markRecord2 = table.mark1Array[mark1Index];\n var _baseAnchor2 = table.mark2Array[mark2Index][_markRecord2.class];\n this.applyAnchor(_markRecord2, _baseAnchor2, prevIndex);\n return true;\n }\n case 7:\n // Contextual positioning\n return this.applyContext(table);\n case 8:\n // Chaining contextual positioning\n return this.applyChainingContext(table);\n case 9:\n // Extension positioning\n return this.applyLookup(table.lookupType, table.extension);\n default:\n throw new Error(\"Unsupported GPOS table: \".concat(lookupType));\n }\n };\n _proto28.applyAnchor = function applyAnchor(markRecord, baseAnchor, baseGlyphIndex) {\n var baseCoords = this.getAnchor(baseAnchor);\n var markCoords = this.getAnchor(markRecord.markAnchor);\n var basePos = this.positions[baseGlyphIndex];\n var markPos = this.positions[this.glyphIterator.index];\n markPos.xOffset = baseCoords.x - markCoords.x;\n markPos.yOffset = baseCoords.y - markCoords.y;\n this.glyphIterator.cur.markAttachment = baseGlyphIndex;\n };\n _proto28.getAnchor = function getAnchor(anchor) {\n // TODO: contour point, device tables\n var x = anchor.xCoordinate;\n var y = anchor.yCoordinate; // Adjustments for font variations\n\n var variationProcessor = this.font._variationProcessor;\n var variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;\n if (variationProcessor && variationStore) {\n if (anchor.xDeviceTable) {\n x += variationProcessor.getDelta(variationStore, anchor.xDeviceTable.a, anchor.xDeviceTable.b);\n }\n if (anchor.yDeviceTable) {\n y += variationProcessor.getDelta(variationStore, anchor.yDeviceTable.a, anchor.yDeviceTable.b);\n }\n }\n return {\n x: x,\n y: y\n };\n };\n _proto28.applyFeatures = function applyFeatures(userFeatures, glyphs, advances) {\n _OTProcessor2.prototype.applyFeatures.call(this, userFeatures, glyphs, advances);\n for (var i = 0; i < this.glyphs.length; i++) {\n this.fixCursiveAttachment(i);\n }\n this.fixMarkAttachment();\n };\n _proto28.fixCursiveAttachment = function fixCursiveAttachment(i) {\n var glyph = this.glyphs[i];\n if (glyph.cursiveAttachment != null) {\n var j = glyph.cursiveAttachment;\n glyph.cursiveAttachment = null;\n this.fixCursiveAttachment(j);\n this.positions[i].yOffset += this.positions[j].yOffset;\n }\n };\n _proto28.fixMarkAttachment = function fixMarkAttachment() {\n for (var i = 0; i < this.glyphs.length; i++) {\n var glyph = this.glyphs[i];\n if (glyph.markAttachment != null) {\n var j = glyph.markAttachment;\n this.positions[i].xOffset += this.positions[j].xOffset;\n this.positions[i].yOffset += this.positions[j].yOffset;\n if (this.direction === 'ltr') {\n for (var k = j; k < i; k++) {\n this.positions[i].xOffset -= this.positions[k].xAdvance;\n this.positions[i].yOffset -= this.positions[k].yAdvance;\n }\n } else {\n for (var _k = j + 1; _k < i + 1; _k++) {\n this.positions[i].xOffset += this.positions[_k].xAdvance;\n this.positions[i].yOffset += this.positions[_k].yAdvance;\n }\n }\n }\n }\n };\n return GPOSProcessor;\n}(OTProcessor);\nvar OTLayoutEngine = /*#__PURE__*/function () {\n function OTLayoutEngine(font) {\n this.font = font;\n this.glyphInfos = null;\n this.plan = null;\n this.GSUBProcessor = null;\n this.GPOSProcessor = null;\n this.fallbackPosition = true;\n if (font.GSUB) {\n this.GSUBProcessor = new GSUBProcessor(font, font.GSUB);\n }\n if (font.GPOS) {\n this.GPOSProcessor = new GPOSProcessor(font, font.GPOS);\n }\n }\n var _proto29 = OTLayoutEngine.prototype;\n _proto29.setup = function setup(glyphRun) {\n var _this8 = this;\n // Map glyphs to GlyphInfo objects so data can be passed between\n // GSUB and GPOS without mutating the real (shared) Glyph objects.\n this.glyphInfos = glyphRun.glyphs.map(function (glyph) {\n return new GlyphInfo(_this8.font, glyph.id, [].concat(glyph.codePoints));\n }); // Select a script based on what is available in GSUB/GPOS.\n\n var script = null;\n if (this.GPOSProcessor) {\n script = this.GPOSProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);\n }\n if (this.GSUBProcessor) {\n script = this.GSUBProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);\n } // Choose a shaper based on the script, and setup a shaping plan.\n // This determines which features to apply to which glyphs.\n\n this.shaper = choose(script);\n this.plan = new ShapingPlan(this.font, script, glyphRun.direction);\n this.shaper.plan(this.plan, this.glyphInfos, glyphRun.features); // Assign chosen features to output glyph run\n\n for (var key in this.plan.allFeatures) {\n glyphRun.features[key] = true;\n }\n };\n _proto29.substitute = function substitute(glyphRun) {\n var _this9 = this;\n if (this.GSUBProcessor) {\n this.plan.process(this.GSUBProcessor, this.glyphInfos); // Map glyph infos back to normal Glyph objects\n\n glyphRun.glyphs = this.glyphInfos.map(function (glyphInfo) {\n return _this9.font.getGlyph(glyphInfo.id, glyphInfo.codePoints);\n });\n }\n };\n _proto29.position = function position(glyphRun) {\n if (this.shaper.zeroMarkWidths === 'BEFORE_GPOS') {\n this.zeroMarkAdvances(glyphRun.positions);\n }\n if (this.GPOSProcessor) {\n this.plan.process(this.GPOSProcessor, this.glyphInfos, glyphRun.positions);\n }\n if (this.shaper.zeroMarkWidths === 'AFTER_GPOS') {\n this.zeroMarkAdvances(glyphRun.positions);\n } // Reverse the glyphs and positions if the script is right-to-left\n\n if (glyphRun.direction === 'rtl') {\n glyphRun.glyphs.reverse();\n glyphRun.positions.reverse();\n }\n return this.GPOSProcessor && this.GPOSProcessor.features;\n };\n _proto29.zeroMarkAdvances = function zeroMarkAdvances(positions) {\n for (var i = 0; i < this.glyphInfos.length; i++) {\n if (this.glyphInfos[i].isMark) {\n positions[i].xAdvance = 0;\n positions[i].yAdvance = 0;\n }\n }\n };\n _proto29.cleanup = function cleanup() {\n this.glyphInfos = null;\n this.plan = null;\n this.shaper = null;\n };\n _proto29.getAvailableFeatures = function getAvailableFeatures(script, language) {\n var features = [];\n if (this.GSUBProcessor) {\n this.GSUBProcessor.selectScript(script, language);\n features.push.apply(features, Object.keys(this.GSUBProcessor.features));\n }\n if (this.GPOSProcessor) {\n this.GPOSProcessor.selectScript(script, language);\n features.push.apply(features, Object.keys(this.GPOSProcessor.features));\n }\n return features;\n };\n return OTLayoutEngine;\n}();\nvar LayoutEngine = /*#__PURE__*/function () {\n function LayoutEngine(font) {\n this.font = font;\n this.unicodeLayoutEngine = null;\n this.kernProcessor = null; // Choose an advanced layout engine. We try the AAT morx table first since more\n // scripts are currently supported because the shaping logic is built into the font.\n\n if (this.font.morx) {\n this.engine = new AATLayoutEngine(this.font);\n } else if (this.font.GSUB || this.font.GPOS) {\n this.engine = new OTLayoutEngine(this.font);\n }\n }\n var _proto30 = LayoutEngine.prototype;\n _proto30.layout = function layout(string, features, script, language, direction) {\n // Make the features parameter optional\n if (typeof features === 'string') {\n direction = language;\n language = script;\n script = features;\n features = [];\n } // Map string to glyphs if needed\n\n if (typeof string === 'string') {\n // Attempt to detect the script from the string if not provided.\n if (script == null) {\n script = forString(string);\n }\n var glyphs = this.font.glyphsForString(string);\n } else {\n // Attempt to detect the script from the glyph code points if not provided.\n if (script == null) {\n var codePoints = [];\n for (var _iterator64 = _createForOfIteratorHelperLoose(string), _step64; !(_step64 = _iterator64()).done;) {\n var glyph = _step64.value;\n codePoints.push.apply(codePoints, glyph.codePoints);\n }\n script = forCodePoints(codePoints);\n }\n var glyphs = string;\n }\n var glyphRun = new GlyphRun(glyphs, features, script, language, direction); // Return early if there are no glyphs\n\n if (glyphs.length === 0) {\n glyphRun.positions = [];\n return glyphRun;\n } // Setup the advanced layout engine\n\n if (this.engine && this.engine.setup) {\n this.engine.setup(glyphRun);\n } // Substitute and position the glyphs\n\n this.substitute(glyphRun);\n this.position(glyphRun);\n this.hideDefaultIgnorables(glyphRun.glyphs, glyphRun.positions); // Let the layout engine clean up any state it might have\n\n if (this.engine && this.engine.cleanup) {\n this.engine.cleanup();\n }\n return glyphRun;\n };\n _proto30.substitute = function substitute(glyphRun) {\n // Call the advanced layout engine to make substitutions\n if (this.engine && this.engine.substitute) {\n this.engine.substitute(glyphRun);\n }\n };\n _proto30.position = function position(glyphRun) {\n // Get initial glyph positions\n glyphRun.positions = glyphRun.glyphs.map(function (glyph) {\n return new GlyphPosition(glyph.advanceWidth);\n });\n var positioned = null; // Call the advanced layout engine. Returns the features applied.\n\n if (this.engine && this.engine.position) {\n positioned = this.engine.position(glyphRun);\n } // if there is no GPOS table, use unicode properties to position marks.\n\n if (!positioned && (!this.engine || this.engine.fallbackPosition)) {\n if (!this.unicodeLayoutEngine) {\n this.unicodeLayoutEngine = new UnicodeLayoutEngine(this.font);\n }\n this.unicodeLayoutEngine.positionGlyphs(glyphRun.glyphs, glyphRun.positions);\n } // if kerning is not supported by GPOS, do kerning with the TrueType/AAT kern table\n\n if ((!positioned || !positioned.kern) && glyphRun.features.kern !== false && this.font.kern) {\n if (!this.kernProcessor) {\n this.kernProcessor = new KernProcessor(this.font);\n }\n this.kernProcessor.process(glyphRun.glyphs, glyphRun.positions);\n glyphRun.features.kern = true;\n }\n };\n _proto30.hideDefaultIgnorables = function hideDefaultIgnorables(glyphs, positions) {\n var space = this.font.glyphForCodePoint(0x20);\n for (var i = 0; i < glyphs.length; i++) {\n if (this.isDefaultIgnorable(glyphs[i].codePoints[0])) {\n glyphs[i] = space;\n positions[i].xAdvance = 0;\n positions[i].yAdvance = 0;\n }\n }\n };\n _proto30.isDefaultIgnorable = function isDefaultIgnorable(ch) {\n // From DerivedCoreProperties.txt in the Unicode database,\n // minus U+115F, U+1160, U+3164 and U+FFA0, which is what\n // Harfbuzz and Uniscribe do.\n var plane = ch >> 16;\n if (plane === 0) {\n // BMP\n switch (ch >> 8) {\n case 0x00:\n return ch === 0x00AD;\n case 0x03:\n return ch === 0x034F;\n case 0x06:\n return ch === 0x061C;\n case 0x17:\n return 0x17B4 <= ch && ch <= 0x17B5;\n case 0x18:\n return 0x180B <= ch && ch <= 0x180E;\n case 0x20:\n return 0x200B <= ch && ch <= 0x200F || 0x202A <= ch && ch <= 0x202E || 0x2060 <= ch && ch <= 0x206F;\n case 0xFE:\n return 0xFE00 <= ch && ch <= 0xFE0F || ch === 0xFEFF;\n case 0xFF:\n return 0xFFF0 <= ch && ch <= 0xFFF8;\n default:\n return false;\n }\n } else {\n // Other planes\n switch (plane) {\n case 0x01:\n return 0x1BCA0 <= ch && ch <= 0x1BCA3 || 0x1D173 <= ch && ch <= 0x1D17A;\n case 0x0E:\n return 0xE0000 <= ch && ch <= 0xE0FFF;\n default:\n return false;\n }\n }\n };\n _proto30.getAvailableFeatures = function getAvailableFeatures(script, language) {\n var features = [];\n if (this.engine) {\n features.push.apply(features, this.engine.getAvailableFeatures(script, language));\n }\n if (this.font.kern && features.indexOf('kern') === -1) {\n features.push('kern');\n }\n return features;\n };\n _proto30.stringsForGlyph = function stringsForGlyph(gid) {\n var result = new Set();\n var codePoints = this.font._cmapProcessor.codePointsForGlyph(gid);\n for (var _iterator65 = _createForOfIteratorHelperLoose(codePoints), _step65; !(_step65 = _iterator65()).done;) {\n var codePoint = _step65.value;\n result.add(String.fromCodePoint(codePoint));\n }\n if (this.engine && this.engine.stringsForGlyph) {\n for (var _iterator66 = _createForOfIteratorHelperLoose(this.engine.stringsForGlyph(gid)), _step66; !(_step66 = _iterator66()).done;) {\n var string = _step66.value;\n result.add(string);\n }\n }\n return Array.from(result);\n };\n return LayoutEngine;\n}();\nvar SVG_COMMANDS = {\n moveTo: 'M',\n lineTo: 'L',\n quadraticCurveTo: 'Q',\n bezierCurveTo: 'C',\n closePath: 'Z'\n};\n/**\r\n * Path objects are returned by glyphs and represent the actual\r\n * vector outlines for each glyph in the font. Paths can be converted\r\n * to SVG path data strings, or to functions that can be applied to\r\n * render the path to a graphics context.\r\n */\nvar Path = /*#__PURE__*/function () {\n function Path() {\n this.commands = [];\n this._bbox = null;\n this._cbox = null;\n }\n /**\r\n * Compiles the path to a JavaScript function that can be applied with\r\n * a graphics context in order to render the path.\r\n * @return {string}\r\n */\n var _proto31 = Path.prototype;\n _proto31.toFunction = function toFunction() {\n var _this10 = this;\n return function (ctx) {\n _this10.commands.forEach(function (c) {\n return ctx[c.command].apply(ctx, c.args);\n });\n };\n }\n /**\r\n * Converts the path to an SVG path data string\r\n * @return {string}\r\n */;\n _proto31.toSVG = function toSVG() {\n var cmds = this.commands.map(function (c) {\n var args = c.args.map(function (arg) {\n return Math.round(arg * 100) / 100;\n });\n return \"\".concat(SVG_COMMANDS[c.command]).concat(args.join(' '));\n });\n return cmds.join('');\n }\n /**\r\n * Gets the \"control box\" of a path.\r\n * This is like the bounding box, but it includes all points including\r\n * control points of bezier segments and is much faster to compute than\r\n * the real bounding box.\r\n * @type {BBox}\r\n */;\n /**\r\n * Applies a mapping function to each point in the path.\r\n * @param {function} fn\r\n * @return {Path}\r\n */\n _proto31.mapPoints = function mapPoints(fn) {\n var path = new Path();\n for (var _iterator67 = _createForOfIteratorHelperLoose(this.commands), _step67; !(_step67 = _iterator67()).done;) {\n var c = _step67.value;\n var args = [];\n for (var i = 0; i < c.args.length; i += 2) {\n var _fn = fn(c.args[i], c.args[i + 1]),\n x = _fn[0],\n y = _fn[1];\n args.push(x, y);\n }\n path[c.command].apply(path, args);\n }\n return path;\n }\n /**\r\n * Transforms the path by the given matrix.\r\n */;\n _proto31.transform = function transform(m0, m1, m2, m3, m4, m5) {\n return this.mapPoints(function (x, y) {\n x = m0 * x + m2 * y + m4;\n y = m1 * x + m3 * y + m5;\n return [x, y];\n });\n }\n /**\r\n * Translates the path by the given offset.\r\n */;\n _proto31.translate = function translate(x, y) {\n return this.transform(1, 0, 0, 1, x, y);\n }\n /**\r\n * Rotates the path by the given angle (in radians).\r\n */;\n _proto31.rotate = function rotate(angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return this.transform(cos, sin, -sin, cos, 0, 0);\n }\n /**\r\n * Scales the path.\r\n */;\n _proto31.scale = function scale(scaleX, scaleY) {\n if (scaleY === void 0) {\n scaleY = scaleX;\n }\n return this.transform(scaleX, 0, 0, scaleY, 0, 0);\n };\n _createClass(Path, [{\n key: \"cbox\",\n get: function get() {\n if (!this._cbox) {\n var cbox = new BBox();\n for (var _iterator68 = _createForOfIteratorHelperLoose(this.commands), _step68; !(_step68 = _iterator68()).done;) {\n var command = _step68.value;\n for (var i = 0; i < command.args.length; i += 2) {\n cbox.addPoint(command.args[i], command.args[i + 1]);\n }\n }\n this._cbox = Object.freeze(cbox);\n }\n return this._cbox;\n }\n /**\r\n * Gets the exact bounding box of the path by evaluating curve segments.\r\n * Slower to compute than the control box, but more accurate.\r\n * @type {BBox}\r\n */\n }, {\n key: \"bbox\",\n get: function get() {\n if (this._bbox) {\n return this._bbox;\n }\n var bbox = new BBox();\n var cx = 0,\n cy = 0;\n var f = function f(t) {\n return Math.pow(1 - t, 3) * p0[i] + 3 * Math.pow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + Math.pow(t, 3) * p3[i];\n };\n for (var _iterator69 = _createForOfIteratorHelperLoose(this.commands), _step69; !(_step69 = _iterator69()).done;) {\n var c = _step69.value;\n switch (c.command) {\n case 'moveTo':\n case 'lineTo':\n var _c$args = c.args,\n x = _c$args[0],\n y = _c$args[1];\n bbox.addPoint(x, y);\n cx = x;\n cy = y;\n break;\n case 'quadraticCurveTo':\n case 'bezierCurveTo':\n if (c.command === 'quadraticCurveTo') {\n // http://fontforge.org/bezier.html\n var _c$args2 = c.args,\n qp1x = _c$args2[0],\n qp1y = _c$args2[1],\n p3x = _c$args2[2],\n p3y = _c$args2[3];\n var cp1x = cx + 2 / 3 * (qp1x - cx); // CP1 = QP0 + 2/3 * (QP1-QP0)\n\n var cp1y = cy + 2 / 3 * (qp1y - cy);\n var cp2x = p3x + 2 / 3 * (qp1x - p3x); // CP2 = QP2 + 2/3 * (QP1-QP2)\n\n var cp2y = p3y + 2 / 3 * (qp1y - p3y);\n } else {\n var _c$args3 = c.args,\n cp1x = _c$args3[0],\n cp1y = _c$args3[1],\n cp2x = _c$args3[2],\n cp2y = _c$args3[3],\n p3x = _c$args3[4],\n p3y = _c$args3[5];\n } // http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n bbox.addPoint(p3x, p3y);\n var p0 = [cx, cy];\n var p1 = [cp1x, cp1y];\n var p2 = [cp2x, cp2y];\n var p3 = [p3x, p3y];\n for (var i = 0; i <= 1; i++) {\n var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0) {\n continue;\n }\n var t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0) {\n bbox.addPoint(f(t), bbox.maxY);\n } else if (i === 1) {\n bbox.addPoint(bbox.maxX, f(t));\n }\n }\n continue;\n }\n var b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0) {\n continue;\n }\n var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0) {\n bbox.addPoint(f(t1), bbox.maxY);\n } else if (i === 1) {\n bbox.addPoint(bbox.maxX, f(t1));\n }\n }\n var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0) {\n bbox.addPoint(f(t2), bbox.maxY);\n } else if (i === 1) {\n bbox.addPoint(bbox.maxX, f(t2));\n }\n }\n }\n cx = p3x;\n cy = p3y;\n break;\n }\n }\n return this._bbox = Object.freeze(bbox);\n }\n }]);\n return Path;\n}();\nvar _loop = function _loop(command) {\n Path.prototype[command] = function () {\n this._bbox = this._cbox = null;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n this.commands.push({\n command: command,\n args: args\n });\n return this;\n };\n};\nfor (var _i23 = 0, _arr = ['moveTo', 'lineTo', 'quadraticCurveTo', 'bezierCurveTo', 'closePath']; _i23 < _arr.length; _i23++) {\n var command = _arr[_i23];\n _loop(command);\n}\nvar StandardNames = ['.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];\nvar _class$3;\n/**\r\n * Glyph objects represent a glyph in the font. They have various properties for accessing metrics and\r\n * the actual vector path the glyph represents, and methods for rendering the glyph to a graphics context.\r\n *\r\n * You do not create glyph objects directly. They are created by various methods on the font object.\r\n * There are several subclasses of the base Glyph class internally that may be returned depending\r\n * on the font format, but they all inherit from this class.\r\n */\n\nvar Glyph = (_class$3 = /*#__PURE__*/function () {\n function Glyph(id, codePoints, font) {\n /**\r\n * The glyph id in the font\r\n * @type {number}\r\n */\n this.id = id;\n /**\r\n * An array of unicode code points that are represented by this glyph.\r\n * There can be multiple code points in the case of ligatures and other glyphs\r\n * that represent multiple visual characters.\r\n * @type {number[]}\r\n */\n\n this.codePoints = codePoints;\n this._font = font; // TODO: get this info from GDEF if available\n\n this.isMark = this.codePoints.length > 0 && this.codePoints.every(unicode.isMark);\n this.isLigature = this.codePoints.length > 1;\n }\n var _proto32 = Glyph.prototype;\n _proto32._getPath = function _getPath() {\n return new Path();\n };\n _proto32._getCBox = function _getCBox() {\n return this.path.cbox;\n };\n _proto32._getBBox = function _getBBox() {\n return this.path.bbox;\n };\n _proto32._getTableMetrics = function _getTableMetrics(table) {\n if (this.id < table.metrics.length) {\n return table.metrics.get(this.id);\n }\n var metric = table.metrics.get(table.metrics.length - 1);\n var res = {\n advance: metric ? metric.advance : 0,\n bearing: table.bearings.get(this.id - table.metrics.length) || 0\n };\n return res;\n };\n _proto32._getMetrics = function _getMetrics(cbox) {\n if (this._metrics) {\n return this._metrics;\n }\n var _this$_getTableMetric = this._getTableMetrics(this._font.hmtx),\n advanceWidth = _this$_getTableMetric.advance,\n leftBearing = _this$_getTableMetric.bearing; // For vertical metrics, use vmtx if available, or fall back to global data from OS/2 or hhea\n\n if (this._font.vmtx) {\n var _this$_getTableMetric2 = this._getTableMetrics(this._font.vmtx),\n advanceHeight = _this$_getTableMetric2.advance,\n topBearing = _this$_getTableMetric2.bearing;\n } else {\n var os2;\n if (typeof cbox === 'undefined' || cbox === null) {\n cbox = this.cbox;\n }\n if ((os2 = this._font['OS/2']) && os2.version > 0) {\n var advanceHeight = Math.abs(os2.typoAscender - os2.typoDescender);\n var topBearing = os2.typoAscender - cbox.maxY;\n } else {\n var hhea = this._font.hhea;\n var advanceHeight = Math.abs(hhea.ascent - hhea.descent);\n var topBearing = hhea.ascent - cbox.maxY;\n }\n }\n if (this._font._variationProcessor && this._font.HVAR) {\n advanceWidth += this._font._variationProcessor.getAdvanceAdjustment(this.id, this._font.HVAR);\n }\n return this._metrics = {\n advanceWidth: advanceWidth,\n advanceHeight: advanceHeight,\n leftBearing: leftBearing,\n topBearing: topBearing\n };\n }\n /**\r\n * The glyph’s control box.\r\n * This is often the same as the bounding box, but is faster to compute.\r\n * Because of the way bezier curves are defined, some of the control points\r\n * can be outside of the bounding box. Where `bbox` takes this into account,\r\n * `cbox` does not. Thus, cbox is less accurate, but faster to compute.\r\n * See [here](http://www.freetype.org/freetype2/docs/glyphs/glyphs-6.html#section-2)\r\n * for a more detailed description.\r\n *\r\n * @type {BBox}\r\n */;\n /**\r\n * Returns a path scaled to the given font size.\r\n * @param {number} size\r\n * @return {Path}\r\n */\n _proto32.getScaledPath = function getScaledPath(size) {\n var scale = 1 / this._font.unitsPerEm * size;\n return this.path.scale(scale);\n }\n /**\r\n * The glyph's advance width.\r\n * @type {number}\r\n */;\n _proto32._getName = function _getName() {\n var post = this._font.post;\n if (!post) {\n return null;\n }\n switch (post.version) {\n case 1:\n return StandardNames[this.id];\n case 2:\n var id = post.glyphNameIndex[this.id];\n if (id < StandardNames.length) {\n return StandardNames[id];\n }\n return post.names[id - StandardNames.length];\n case 2.5:\n return StandardNames[this.id + post.offsets[this.id]];\n case 4:\n return String.fromCharCode(post.map[this.id]);\n }\n }\n /**\r\n * The glyph's name\r\n * @type {string}\r\n */;\n /**\r\n * Renders the glyph to the given graphics context, at the specified font size.\r\n * @param {CanvasRenderingContext2d} ctx\r\n * @param {number} size\r\n */\n _proto32.render = function render(ctx, size) {\n ctx.save();\n var scale = 1 / this._font.head.unitsPerEm * size;\n ctx.scale(scale, scale);\n var fn = this.path.toFunction();\n fn(ctx);\n ctx.fill();\n ctx.restore();\n };\n _createClass(Glyph, [{\n key: \"cbox\",\n get: function get() {\n return this._getCBox();\n }\n /**\r\n * The glyph’s bounding box, i.e. the rectangle that encloses the\r\n * glyph outline as tightly as possible.\r\n * @type {BBox}\r\n */\n }, {\n key: \"bbox\",\n get: function get() {\n return this._getBBox();\n }\n /**\r\n * A vector Path object representing the glyph outline.\r\n * @type {Path}\r\n */\n }, {\n key: \"path\",\n get: function get() {\n // Cache the path so we only decode it once\n // Decoding is actually performed by subclasses\n return this._getPath();\n }\n }, {\n key: \"advanceWidth\",\n get: function get() {\n return this._getMetrics().advanceWidth;\n }\n /**\r\n * The glyph's advance height.\r\n * @type {number}\r\n */\n }, {\n key: \"advanceHeight\",\n get: function get() {\n return this._getMetrics().advanceHeight;\n }\n }, {\n key: \"ligatureCaretPositions\",\n get: function get() {}\n }, {\n key: \"name\",\n get: function get() {\n return this._getName();\n }\n }]);\n return Glyph;\n}(), (_applyDecoratedDescriptor(_class$3.prototype, \"cbox\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"cbox\"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, \"bbox\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"bbox\"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, \"path\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"path\"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, \"advanceWidth\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"advanceWidth\"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, \"advanceHeight\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"advanceHeight\"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, \"name\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"name\"), _class$3.prototype)), _class$3);\nvar GlyfHeader = new r.Struct({\n numberOfContours: r.int16,\n // if negative, this is a composite glyph\n xMin: r.int16,\n yMin: r.int16,\n xMax: r.int16,\n yMax: r.int16\n}); // Flags for simple glyphs\n\nvar ON_CURVE = 1 << 0;\nvar X_SHORT_VECTOR = 1 << 1;\nvar Y_SHORT_VECTOR = 1 << 2;\nvar REPEAT = 1 << 3;\nvar SAME_X = 1 << 4;\nvar SAME_Y = 1 << 5; // Flags for composite glyphs\n\nvar ARG_1_AND_2_ARE_WORDS = 1 << 0;\nvar WE_HAVE_A_SCALE = 1 << 3;\nvar MORE_COMPONENTS = 1 << 5;\nvar WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nvar WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nvar WE_HAVE_INSTRUCTIONS = 1 << 8;\nvar Point = /*#__PURE__*/function () {\n function Point(onCurve, endContour, x, y) {\n if (x === void 0) {\n x = 0;\n }\n if (y === void 0) {\n y = 0;\n }\n this.onCurve = onCurve;\n this.endContour = endContour;\n this.x = x;\n this.y = y;\n }\n var _proto33 = Point.prototype;\n _proto33.copy = function copy() {\n return new Point(this.onCurve, this.endContour, this.x, this.y);\n };\n return Point;\n}(); // Represents a component in a composite glyph\nvar Component = function Component(glyphID, dx, dy) {\n this.glyphID = glyphID;\n this.dx = dx;\n this.dy = dy;\n this.pos = 0;\n this.scaleX = this.scaleY = 1;\n this.scale01 = this.scale10 = 0;\n};\n/**\r\n * Represents a TrueType glyph.\r\n */\nvar TTFGlyph = /*#__PURE__*/function (_Glyph) {\n _inheritsLoose(TTFGlyph, _Glyph);\n function TTFGlyph() {\n return _Glyph.apply(this, arguments) || this;\n }\n var _proto34 = TTFGlyph.prototype;\n // Parses just the glyph header and returns the bounding box\n _proto34._getCBox = function _getCBox(internal) {\n // We need to decode the glyph if variation processing is requested,\n // so it's easier just to recompute the path's cbox after decoding.\n if (this._font._variationProcessor && !internal) {\n return this.path.cbox;\n }\n var stream = this._font._getTableStream('glyf');\n stream.pos += this._font.loca.offsets[this.id];\n var glyph = GlyfHeader.decode(stream);\n var cbox = new BBox(glyph.xMin, glyph.yMin, glyph.xMax, glyph.yMax);\n return Object.freeze(cbox);\n } // Parses a single glyph coordinate\n ;\n _proto34._parseGlyphCoord = function _parseGlyphCoord(stream, prev, short, same) {\n if (short) {\n var val = stream.readUInt8();\n if (!same) {\n val = -val;\n }\n val += prev;\n } else {\n if (same) {\n var val = prev;\n } else {\n var val = prev + stream.readInt16BE();\n }\n }\n return val;\n } // Decodes the glyph data into points for simple glyphs,\n // or components for composite glyphs\n ;\n _proto34._decode = function _decode() {\n var glyfPos = this._font.loca.offsets[this.id];\n var nextPos = this._font.loca.offsets[this.id + 1]; // Nothing to do if there is no data for this glyph\n\n if (glyfPos === nextPos) {\n return null;\n }\n var stream = this._font._getTableStream('glyf');\n stream.pos += glyfPos;\n var startPos = stream.pos;\n var glyph = GlyfHeader.decode(stream);\n if (glyph.numberOfContours > 0) {\n this._decodeSimple(glyph, stream);\n } else if (glyph.numberOfContours < 0) {\n this._decodeComposite(glyph, stream, startPos);\n }\n return glyph;\n };\n _proto34._decodeSimple = function _decodeSimple(glyph, stream) {\n // this is a simple glyph\n glyph.points = [];\n var endPtsOfContours = new r.Array(r.uint16, glyph.numberOfContours).decode(stream);\n glyph.instructions = new r.Array(r.uint8, r.uint16).decode(stream);\n var flags = [];\n var numCoords = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n while (flags.length < numCoords) {\n var flag = stream.readUInt8();\n flags.push(flag); // check for repeat flag\n\n if (flag & REPEAT) {\n var count = stream.readUInt8();\n for (var j = 0; j < count; j++) {\n flags.push(flag);\n }\n }\n }\n for (var i = 0; i < flags.length; i++) {\n var flag = flags[i];\n var point = new Point(!!(flag & ON_CURVE), endPtsOfContours.indexOf(i) >= 0, 0, 0);\n glyph.points.push(point);\n }\n var px = 0;\n for (var i = 0; i < flags.length; i++) {\n var flag = flags[i];\n glyph.points[i].x = px = this._parseGlyphCoord(stream, px, flag & X_SHORT_VECTOR, flag & SAME_X);\n }\n var py = 0;\n for (var i = 0; i < flags.length; i++) {\n var flag = flags[i];\n glyph.points[i].y = py = this._parseGlyphCoord(stream, py, flag & Y_SHORT_VECTOR, flag & SAME_Y);\n }\n if (this._font._variationProcessor) {\n var points = glyph.points.slice();\n points.push.apply(points, this._getPhantomPoints(glyph));\n this._font._variationProcessor.transformPoints(this.id, points);\n glyph.phantomPoints = points.slice(-4);\n }\n return;\n };\n _proto34._decodeComposite = function _decodeComposite(glyph, stream, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n // this is a composite glyph\n glyph.components = [];\n var haveInstructions = false;\n var flags = MORE_COMPONENTS;\n while (flags & MORE_COMPONENTS) {\n flags = stream.readUInt16BE();\n var gPos = stream.pos - offset;\n var glyphID = stream.readUInt16BE();\n if (!haveInstructions) {\n haveInstructions = (flags & WE_HAVE_INSTRUCTIONS) !== 0;\n }\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n var dx = stream.readInt16BE();\n var dy = stream.readInt16BE();\n } else {\n var dx = stream.readInt8();\n var dy = stream.readInt8();\n }\n var component = new Component(glyphID, dx, dy);\n component.pos = gPos;\n if (flags & WE_HAVE_A_SCALE) {\n // fixed number with 14 bits of fraction\n component.scaleX = component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n component.scale01 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n component.scale10 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n }\n glyph.components.push(component);\n }\n if (this._font._variationProcessor) {\n var points = [];\n for (var j = 0; j < glyph.components.length; j++) {\n var component = glyph.components[j];\n points.push(new Point(true, true, component.dx, component.dy));\n }\n points.push.apply(points, this._getPhantomPoints(glyph));\n this._font._variationProcessor.transformPoints(this.id, points);\n glyph.phantomPoints = points.splice(-4, 4);\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n glyph.components[i].dx = point.x;\n glyph.components[i].dy = point.y;\n }\n }\n return haveInstructions;\n };\n _proto34._getPhantomPoints = function _getPhantomPoints(glyph) {\n var cbox = this._getCBox(true);\n if (this._metrics == null) {\n this._metrics = Glyph.prototype._getMetrics.call(this, cbox);\n }\n var _this$_metrics = this._metrics,\n advanceWidth = _this$_metrics.advanceWidth,\n advanceHeight = _this$_metrics.advanceHeight,\n leftBearing = _this$_metrics.leftBearing,\n topBearing = _this$_metrics.topBearing;\n return [new Point(false, true, glyph.xMin - leftBearing, 0), new Point(false, true, glyph.xMin - leftBearing + advanceWidth, 0), new Point(false, true, 0, glyph.yMax + topBearing), new Point(false, true, 0, glyph.yMax + topBearing + advanceHeight)];\n } // Decodes font data, resolves composite glyphs, and returns an array of contours\n ;\n _proto34._getContours = function _getContours() {\n var glyph = this._decode();\n if (!glyph) {\n return [];\n }\n var points = [];\n if (glyph.numberOfContours < 0) {\n // resolve composite glyphs\n for (var _iterator70 = _createForOfIteratorHelperLoose(glyph.components), _step70; !(_step70 = _iterator70()).done;) {\n var component = _step70.value;\n var _contours = this._font.getGlyph(component.glyphID)._getContours();\n for (var i = 0; i < _contours.length; i++) {\n var contour = _contours[i];\n for (var j = 0; j < contour.length; j++) {\n var _point = contour[j];\n var x = _point.x * component.scaleX + _point.y * component.scale01 + component.dx;\n var y = _point.y * component.scaleY + _point.x * component.scale10 + component.dy;\n points.push(new Point(_point.onCurve, _point.endContour, x, y));\n }\n }\n }\n } else {\n points = glyph.points || [];\n } // Recompute and cache metrics if we performed variation processing, and don't have an HVAR table\n\n if (glyph.phantomPoints && !this._font.directory.tables.HVAR) {\n this._metrics.advanceWidth = glyph.phantomPoints[1].x - glyph.phantomPoints[0].x;\n this._metrics.advanceHeight = glyph.phantomPoints[3].y - glyph.phantomPoints[2].y;\n this._metrics.leftBearing = glyph.xMin - glyph.phantomPoints[0].x;\n this._metrics.topBearing = glyph.phantomPoints[2].y - glyph.yMax;\n }\n var contours = [];\n var cur = [];\n for (var k = 0; k < points.length; k++) {\n var point = points[k];\n cur.push(point);\n if (point.endContour) {\n contours.push(cur);\n cur = [];\n }\n }\n return contours;\n };\n _proto34._getMetrics = function _getMetrics() {\n if (this._metrics) {\n return this._metrics;\n }\n var cbox = this._getCBox(true);\n _Glyph.prototype._getMetrics.call(this, cbox);\n if (this._font._variationProcessor && !this._font.HVAR) {\n // No HVAR table, decode the glyph. This triggers recomputation of metrics.\n this.path;\n }\n return this._metrics;\n } // Converts contours to a Path object that can be rendered\n ;\n _proto34._getPath = function _getPath() {\n var contours = this._getContours();\n var path = new Path();\n for (var i = 0; i < contours.length; i++) {\n var contour = contours[i];\n var firstPt = contour[0];\n var lastPt = contour[contour.length - 1];\n var start = 0;\n if (firstPt.onCurve) {\n // The first point will be consumed by the moveTo command, so skip in the loop\n var curvePt = null;\n start = 1;\n } else {\n if (lastPt.onCurve) {\n // Start at the last point if the first point is off curve and the last point is on curve\n firstPt = lastPt;\n } else {\n // Start at the middle if both the first and last points are off curve\n firstPt = new Point(false, false, (firstPt.x + lastPt.x) / 2, (firstPt.y + lastPt.y) / 2);\n }\n var curvePt = firstPt;\n }\n path.moveTo(firstPt.x, firstPt.y);\n for (var j = start; j < contour.length; j++) {\n var pt = contour[j];\n var prevPt = j === 0 ? firstPt : contour[j - 1];\n if (prevPt.onCurve && pt.onCurve) {\n path.lineTo(pt.x, pt.y);\n } else if (prevPt.onCurve && !pt.onCurve) {\n var curvePt = pt;\n } else if (!prevPt.onCurve && !pt.onCurve) {\n var midX = (prevPt.x + pt.x) / 2;\n var midY = (prevPt.y + pt.y) / 2;\n path.quadraticCurveTo(prevPt.x, prevPt.y, midX, midY);\n var curvePt = pt;\n } else if (!prevPt.onCurve && pt.onCurve) {\n path.quadraticCurveTo(curvePt.x, curvePt.y, pt.x, pt.y);\n var curvePt = null;\n } else {\n throw new Error(\"Unknown TTF path state\");\n }\n } // Connect the first and last points\n\n if (curvePt) {\n path.quadraticCurveTo(curvePt.x, curvePt.y, firstPt.x, firstPt.y);\n }\n path.closePath();\n }\n return path;\n };\n return TTFGlyph;\n}(Glyph);\n/**\r\n * Represents an OpenType PostScript glyph, in the Compact Font Format.\r\n */\nvar CFFGlyph = /*#__PURE__*/function (_Glyph2) {\n _inheritsLoose(CFFGlyph, _Glyph2);\n function CFFGlyph() {\n return _Glyph2.apply(this, arguments) || this;\n }\n var _proto35 = CFFGlyph.prototype;\n _proto35._getName = function _getName() {\n if (this._font.CFF2) {\n return _Glyph2.prototype._getName.call(this);\n }\n return this._font['CFF '].getGlyphName(this.id);\n };\n _proto35.bias = function bias(s) {\n if (s.length < 1240) {\n return 107;\n } else if (s.length < 33900) {\n return 1131;\n } else {\n return 32768;\n }\n };\n _proto35._getPath = function _getPath() {\n var cff = this._font.CFF2 || this._font['CFF '];\n var stream = cff.stream;\n var str = cff.topDict.CharStrings[this.id];\n var end = str.offset + str.length;\n stream.pos = str.offset;\n var path = new Path();\n var stack = [];\n var trans = [];\n var width = null;\n var nStems = 0;\n var x = 0,\n y = 0;\n var usedGsubrs;\n var usedSubrs;\n var open = false;\n this._usedGsubrs = usedGsubrs = {};\n this._usedSubrs = usedSubrs = {};\n var gsubrs = cff.globalSubrIndex || [];\n var gsubrsBias = this.bias(gsubrs);\n var privateDict = cff.privateDictForGlyph(this.id) || {};\n var subrs = privateDict.Subrs || [];\n var subrsBias = this.bias(subrs);\n var vstore = cff.topDict.vstore && cff.topDict.vstore.itemVariationStore;\n var vsindex = privateDict.vsindex;\n var variationProcessor = this._font._variationProcessor;\n function checkWidth() {\n if (width == null) {\n width = stack.shift() + privateDict.nominalWidthX;\n }\n }\n function parseStems() {\n if (stack.length % 2 !== 0) {\n checkWidth();\n }\n nStems += stack.length >> 1;\n return stack.length = 0;\n }\n function moveTo(x, y) {\n if (open) {\n path.closePath();\n }\n path.moveTo(x, y);\n open = true;\n }\n var parse = function parse() {\n while (stream.pos < end) {\n var op = stream.readUInt8();\n if (op < 32) {\n switch (op) {\n case 1: // hstem\n\n case 3: // vstem\n\n case 18: // hstemhm\n\n case 23:\n // vstemhm\n parseStems();\n break;\n case 4:\n // vmoveto\n if (stack.length > 1) {\n checkWidth();\n }\n y += stack.shift();\n moveTo(x, y);\n break;\n case 5:\n // rlineto\n while (stack.length >= 2) {\n x += stack.shift();\n y += stack.shift();\n path.lineTo(x, y);\n }\n break;\n case 6: // hlineto\n\n case 7:\n // vlineto\n var phase = op === 6;\n while (stack.length >= 1) {\n if (phase) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n path.lineTo(x, y);\n phase = !phase;\n }\n break;\n case 8:\n // rrcurveto\n while (stack.length > 0) {\n var c1x = x + stack.shift();\n var c1y = y + stack.shift();\n var c2x = c1x + stack.shift();\n var c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 10:\n // callsubr\n var index = stack.pop() + subrsBias;\n var subr = subrs[index];\n if (subr) {\n usedSubrs[index] = true;\n var p = stream.pos;\n var e = end;\n stream.pos = subr.offset;\n end = subr.offset + subr.length;\n parse();\n stream.pos = p;\n end = e;\n }\n break;\n case 11:\n // return\n if (cff.version >= 2) {\n break;\n }\n return;\n case 14:\n // endchar\n if (cff.version >= 2) {\n break;\n }\n if (stack.length > 0) {\n checkWidth();\n }\n if (open) {\n path.closePath();\n open = false;\n }\n break;\n case 15:\n {\n // vsindex\n if (cff.version < 2) {\n throw new Error('vsindex operator not supported in CFF v1');\n }\n vsindex = stack.pop();\n break;\n }\n case 16:\n {\n // blend\n if (cff.version < 2) {\n throw new Error('blend operator not supported in CFF v1');\n }\n if (!variationProcessor) {\n throw new Error('blend operator in non-variation font');\n }\n var blendVector = variationProcessor.getBlendVector(vstore, vsindex);\n var numBlends = stack.pop();\n var numOperands = numBlends * blendVector.length;\n var delta = stack.length - numOperands;\n var base = delta - numBlends;\n for (var i = 0; i < numBlends; i++) {\n var sum = stack[base + i];\n for (var j = 0; j < blendVector.length; j++) {\n sum += blendVector[j] * stack[delta++];\n }\n stack[base + i] = sum;\n }\n while (numOperands--) {\n stack.pop();\n }\n break;\n }\n case 19: // hintmask\n\n case 20:\n // cntrmask\n parseStems();\n stream.pos += nStems + 7 >> 3;\n break;\n case 21:\n // rmoveto\n if (stack.length > 2) {\n checkWidth();\n }\n x += stack.shift();\n y += stack.shift();\n moveTo(x, y);\n break;\n case 22:\n // hmoveto\n if (stack.length > 1) {\n checkWidth();\n }\n x += stack.shift();\n moveTo(x, y);\n break;\n case 24:\n // rcurveline\n while (stack.length >= 8) {\n var c1x = x + stack.shift();\n var c1y = y + stack.shift();\n var c2x = c1x + stack.shift();\n var c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n path.lineTo(x, y);\n break;\n case 25:\n // rlinecurve\n while (stack.length >= 8) {\n x += stack.shift();\n y += stack.shift();\n path.lineTo(x, y);\n }\n var c1x = x + stack.shift();\n var c1y = y + stack.shift();\n var c2x = c1x + stack.shift();\n var c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n break;\n case 26:\n // vvcurveto\n if (stack.length % 2) {\n x += stack.shift();\n }\n while (stack.length >= 4) {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x;\n y = c2y + stack.shift();\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 27:\n // hhcurveto\n if (stack.length % 2) {\n y += stack.shift();\n }\n while (stack.length >= 4) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y;\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 28:\n // shortint\n stack.push(stream.readInt16BE());\n break;\n case 29:\n // callgsubr\n index = stack.pop() + gsubrsBias;\n subr = gsubrs[index];\n if (subr) {\n usedGsubrs[index] = true;\n var p = stream.pos;\n var e = end;\n stream.pos = subr.offset;\n end = subr.offset + subr.length;\n parse();\n stream.pos = p;\n end = e;\n }\n break;\n case 30: // vhcurveto\n\n case 31:\n // hvcurveto\n phase = op === 31;\n while (stack.length >= 4) {\n if (phase) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n } else {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n }\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n phase = !phase;\n }\n break;\n case 12:\n op = stream.readUInt8();\n switch (op) {\n case 3:\n // and\n var a = stack.pop();\n var b = stack.pop();\n stack.push(a && b ? 1 : 0);\n break;\n case 4:\n // or\n a = stack.pop();\n b = stack.pop();\n stack.push(a || b ? 1 : 0);\n break;\n case 5:\n // not\n a = stack.pop();\n stack.push(a ? 0 : 1);\n break;\n case 9:\n // abs\n a = stack.pop();\n stack.push(Math.abs(a));\n break;\n case 10:\n // add\n a = stack.pop();\n b = stack.pop();\n stack.push(a + b);\n break;\n case 11:\n // sub\n a = stack.pop();\n b = stack.pop();\n stack.push(a - b);\n break;\n case 12:\n // div\n a = stack.pop();\n b = stack.pop();\n stack.push(a / b);\n break;\n case 14:\n // neg\n a = stack.pop();\n stack.push(-a);\n break;\n case 15:\n // eq\n a = stack.pop();\n b = stack.pop();\n stack.push(a === b ? 1 : 0);\n break;\n case 18:\n // drop\n stack.pop();\n break;\n case 20:\n // put\n var val = stack.pop();\n var idx = stack.pop();\n trans[idx] = val;\n break;\n case 21:\n // get\n idx = stack.pop();\n stack.push(trans[idx] || 0);\n break;\n case 22:\n // ifelse\n var s1 = stack.pop();\n var s2 = stack.pop();\n var v1 = stack.pop();\n var v2 = stack.pop();\n stack.push(v1 <= v2 ? s1 : s2);\n break;\n case 23:\n // random\n stack.push(Math.random());\n break;\n case 24:\n // mul\n a = stack.pop();\n b = stack.pop();\n stack.push(a * b);\n break;\n case 26:\n // sqrt\n a = stack.pop();\n stack.push(Math.sqrt(a));\n break;\n case 27:\n // dup\n a = stack.pop();\n stack.push(a, a);\n break;\n case 28:\n // exch\n a = stack.pop();\n b = stack.pop();\n stack.push(b, a);\n break;\n case 29:\n // index\n idx = stack.pop();\n if (idx < 0) {\n idx = 0;\n } else if (idx > stack.length - 1) {\n idx = stack.length - 1;\n }\n stack.push(stack[idx]);\n break;\n case 30:\n // roll\n var n = stack.pop();\n var _j = stack.pop();\n if (_j >= 0) {\n while (_j > 0) {\n var t = stack[n - 1];\n for (var _i = n - 2; _i >= 0; _i--) {\n stack[_i + 1] = stack[_i];\n }\n stack[0] = t;\n _j--;\n }\n } else {\n while (_j < 0) {\n var t = stack[0];\n for (var _i2 = 0; _i2 <= n; _i2++) {\n stack[_i2] = stack[_i2 + 1];\n }\n stack[n - 1] = t;\n _j++;\n }\n }\n break;\n case 34:\n // hflex\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n var c3x = c2x + stack.shift();\n var c3y = c2y;\n var c4x = c3x + stack.shift();\n var c4y = c3y;\n var c5x = c4x + stack.shift();\n var c5y = c4y;\n var c6x = c5x + stack.shift();\n var c6y = c5y;\n x = c6x;\n y = c6y;\n path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);\n path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);\n break;\n case 35:\n // flex\n var pts = [];\n for (var _i3 = 0; _i3 <= 5; _i3++) {\n x += stack.shift();\n y += stack.shift();\n pts.push(x, y);\n }\n path.bezierCurveTo.apply(path, pts.slice(0, 6));\n path.bezierCurveTo.apply(path, pts.slice(6));\n stack.shift(); // fd\n\n break;\n case 36:\n // hflex1\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n c3x = c2x + stack.shift();\n c3y = c2y;\n c4x = c3x + stack.shift();\n c4y = c3y;\n c5x = c4x + stack.shift();\n c5y = c4y + stack.shift();\n c6x = c5x + stack.shift();\n c6y = c5y;\n x = c6x;\n y = c6y;\n path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);\n path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);\n break;\n case 37:\n // flex1\n var startx = x;\n var starty = y;\n pts = [];\n for (var _i4 = 0; _i4 <= 4; _i4++) {\n x += stack.shift();\n y += stack.shift();\n pts.push(x, y);\n }\n if (Math.abs(x - startx) > Math.abs(y - starty)) {\n // horizontal\n x += stack.shift();\n y = starty;\n } else {\n x = startx;\n y += stack.shift();\n }\n pts.push(x, y);\n path.bezierCurveTo.apply(path, pts.slice(0, 6));\n path.bezierCurveTo.apply(path, pts.slice(6));\n break;\n default:\n throw new Error(\"Unknown op: 12 \".concat(op));\n }\n break;\n default:\n throw new Error(\"Unknown op: \".concat(op));\n }\n } else if (op < 247) {\n stack.push(op - 139);\n } else if (op < 251) {\n var b1 = stream.readUInt8();\n stack.push((op - 247) * 256 + b1 + 108);\n } else if (op < 255) {\n var b1 = stream.readUInt8();\n stack.push(-(op - 251) * 256 - b1 - 108);\n } else {\n stack.push(stream.readInt32BE() / 65536);\n }\n }\n };\n parse();\n if (open) {\n path.closePath();\n }\n return path;\n };\n return CFFGlyph;\n}(Glyph);\nvar SBIXImage = new r.Struct({\n originX: r.uint16,\n originY: r.uint16,\n type: new r.String(4),\n data: new r.Buffer(function (t) {\n return t.parent.buflen - t._currentOffset;\n })\n});\n/**\r\n * Represents a color (e.g. emoji) glyph in Apple's SBIX format.\r\n */\nvar SBIXGlyph = /*#__PURE__*/function (_TTFGlyph) {\n _inheritsLoose(SBIXGlyph, _TTFGlyph);\n function SBIXGlyph() {\n return _TTFGlyph.apply(this, arguments) || this;\n }\n var _proto36 = SBIXGlyph.prototype;\n /**\r\n * Returns an object representing a glyph image at the given point size.\r\n * The object has a data property with a Buffer containing the actual image data,\r\n * along with the image type, and origin.\r\n *\r\n * @param {number} size\r\n * @return {object}\r\n */\n _proto36.getImageForSize = function getImageForSize(size) {\n for (var i = 0; i < this._font.sbix.imageTables.length; i++) {\n var table = this._font.sbix.imageTables[i];\n if (table.ppem >= size) {\n break;\n }\n }\n var offsets = table.imageOffsets;\n var start = offsets[this.id];\n var end = offsets[this.id + 1];\n if (start === end) {\n return null;\n }\n this._font.stream.pos = start;\n return SBIXImage.decode(this._font.stream, {\n buflen: end - start\n });\n };\n _proto36.render = function render(ctx, size) {\n var img = this.getImageForSize(size);\n if (img != null) {\n var scale = size / this._font.unitsPerEm;\n ctx.image(img.data, {\n height: size,\n x: img.originX,\n y: (this.bbox.minY - img.originY) * scale\n });\n }\n if (this._font.sbix.flags.renderOutlines) {\n _TTFGlyph.prototype.render.call(this, ctx, size);\n }\n };\n return SBIXGlyph;\n}(TTFGlyph);\nvar COLRLayer = function COLRLayer(glyph, color) {\n this.glyph = glyph;\n this.color = color;\n};\n/**\r\n * Represents a color (e.g. emoji) glyph in Microsoft's COLR format.\r\n * Each glyph in this format contain a list of colored layers, each\r\n * of which is another vector glyph.\r\n */\nvar COLRGlyph = /*#__PURE__*/function (_Glyph3) {\n _inheritsLoose(COLRGlyph, _Glyph3);\n function COLRGlyph() {\n return _Glyph3.apply(this, arguments) || this;\n }\n var _proto37 = COLRGlyph.prototype;\n _proto37._getBBox = function _getBBox() {\n var bbox = new BBox();\n for (var i = 0; i < this.layers.length; i++) {\n var layer = this.layers[i];\n var b = layer.glyph.bbox;\n bbox.addPoint(b.minX, b.minY);\n bbox.addPoint(b.maxX, b.maxY);\n }\n return bbox;\n }\n /**\r\n * Returns an array of objects containing the glyph and color for\r\n * each layer in the composite color glyph.\r\n * @type {object[]}\r\n */;\n _proto37.render = function render(ctx, size) {\n for (var _iterator71 = _createForOfIteratorHelperLoose(this.layers), _step71; !(_step71 = _iterator71()).done;) {\n var _step71$value = _step71.value,\n glyph = _step71$value.glyph,\n color = _step71$value.color;\n ctx.fillColor([color.red, color.green, color.blue], color.alpha / 255 * 100);\n glyph.render(ctx, size);\n }\n return;\n };\n _createClass(COLRGlyph, [{\n key: \"layers\",\n get: function get() {\n var cpal = this._font.CPAL;\n var colr = this._font.COLR;\n var low = 0;\n var high = colr.baseGlyphRecord.length - 1;\n while (low <= high) {\n var mid = low + high >> 1;\n var rec = colr.baseGlyphRecord[mid];\n if (this.id < rec.gid) {\n high = mid - 1;\n } else if (this.id > rec.gid) {\n low = mid + 1;\n } else {\n var baseLayer = rec;\n break;\n }\n } // if base glyph not found in COLR table,\n // default to normal glyph from glyf or CFF\n\n if (baseLayer == null) {\n var g = this._font._getBaseGlyph(this.id);\n var color = {\n red: 0,\n green: 0,\n blue: 0,\n alpha: 255\n };\n return [new COLRLayer(g, color)];\n } // otherwise, return an array of all the layers\n\n var layers = [];\n for (var i = baseLayer.firstLayerIndex; i < baseLayer.firstLayerIndex + baseLayer.numLayers; i++) {\n var rec = colr.layerRecords[i];\n var color = cpal.colorRecords[rec.paletteIndex];\n var g = this._font._getBaseGlyph(rec.gid);\n layers.push(new COLRLayer(g, color));\n }\n return layers;\n }\n }]);\n return COLRGlyph;\n}(Glyph);\nvar TUPLES_SHARE_POINT_NUMBERS = 0x8000;\nvar TUPLE_COUNT_MASK = 0x0fff;\nvar EMBEDDED_TUPLE_COORD = 0x8000;\nvar INTERMEDIATE_TUPLE = 0x4000;\nvar PRIVATE_POINT_NUMBERS = 0x2000;\nvar TUPLE_INDEX_MASK = 0x0fff;\nvar POINTS_ARE_WORDS = 0x80;\nvar POINT_RUN_COUNT_MASK = 0x7f;\nvar DELTAS_ARE_ZERO = 0x80;\nvar DELTAS_ARE_WORDS = 0x40;\nvar DELTA_RUN_COUNT_MASK = 0x3f;\n/**\r\n * This class is transforms TrueType glyphs according to the data from\r\n * the Apple Advanced Typography variation tables (fvar, gvar, and avar).\r\n * These tables allow infinite adjustments to glyph weight, width, slant,\r\n * and optical size without the designer needing to specify every exact style.\r\n *\r\n * Apple's documentation for these tables is not great, so thanks to the\r\n * Freetype project for figuring much of this out.\r\n *\r\n * @private\r\n */\nvar GlyphVariationProcessor = /*#__PURE__*/function () {\n function GlyphVariationProcessor(font, coords) {\n this.font = font;\n this.normalizedCoords = this.normalizeCoords(coords);\n this.blendVectors = new Map();\n }\n var _proto38 = GlyphVariationProcessor.prototype;\n _proto38.normalizeCoords = function normalizeCoords(coords) {\n // the default mapping is linear along each axis, in two segments:\n // from the minValue to defaultValue, and from defaultValue to maxValue.\n var normalized = [];\n for (var i = 0; i < this.font.fvar.axis.length; i++) {\n var axis = this.font.fvar.axis[i];\n if (coords[i] < axis.defaultValue) {\n normalized.push((coords[i] - axis.defaultValue + Number.EPSILON) / (axis.defaultValue - axis.minValue + Number.EPSILON));\n } else {\n normalized.push((coords[i] - axis.defaultValue + Number.EPSILON) / (axis.maxValue - axis.defaultValue + Number.EPSILON));\n }\n } // if there is an avar table, the normalized value is calculated\n // by interpolating between the two nearest mapped values.\n\n if (this.font.avar) {\n for (var i = 0; i < this.font.avar.segment.length; i++) {\n var segment = this.font.avar.segment[i];\n for (var j = 0; j < segment.correspondence.length; j++) {\n var pair = segment.correspondence[j];\n if (j >= 1 && normalized[i] < pair.fromCoord) {\n var prev = segment.correspondence[j - 1];\n normalized[i] = ((normalized[i] - prev.fromCoord) * (pair.toCoord - prev.toCoord) + Number.EPSILON) / (pair.fromCoord - prev.fromCoord + Number.EPSILON) + prev.toCoord;\n break;\n }\n }\n }\n }\n return normalized;\n };\n _proto38.transformPoints = function transformPoints(gid, glyphPoints) {\n if (!this.font.fvar || !this.font.gvar) {\n return;\n }\n var gvar = this.font.gvar;\n if (gid >= gvar.glyphCount) {\n return;\n }\n var offset = gvar.offsets[gid];\n if (offset === gvar.offsets[gid + 1]) {\n return;\n } // Read the gvar data for this glyph\n\n var stream = this.font.stream;\n stream.pos = offset;\n if (stream.pos >= stream.length) {\n return;\n }\n var tupleCount = stream.readUInt16BE();\n var offsetToData = offset + stream.readUInt16BE();\n if (tupleCount & TUPLES_SHARE_POINT_NUMBERS) {\n var here = stream.pos;\n stream.pos = offsetToData;\n var sharedPoints = this.decodePoints();\n offsetToData = stream.pos;\n stream.pos = here;\n }\n var origPoints = glyphPoints.map(function (pt) {\n return pt.copy();\n });\n tupleCount &= TUPLE_COUNT_MASK;\n for (var i = 0; i < tupleCount; i++) {\n var tupleDataSize = stream.readUInt16BE();\n var tupleIndex = stream.readUInt16BE();\n if (tupleIndex & EMBEDDED_TUPLE_COORD) {\n var tupleCoords = [];\n for (var a = 0; a < gvar.axisCount; a++) {\n tupleCoords.push(stream.readInt16BE() / 16384);\n }\n } else {\n if ((tupleIndex & TUPLE_INDEX_MASK) >= gvar.globalCoordCount) {\n throw new Error('Invalid gvar table');\n }\n var tupleCoords = gvar.globalCoords[tupleIndex & TUPLE_INDEX_MASK];\n }\n if (tupleIndex & INTERMEDIATE_TUPLE) {\n var startCoords = [];\n for (var _a = 0; _a < gvar.axisCount; _a++) {\n startCoords.push(stream.readInt16BE() / 16384);\n }\n var endCoords = [];\n for (var _a2 = 0; _a2 < gvar.axisCount; _a2++) {\n endCoords.push(stream.readInt16BE() / 16384);\n }\n } // Get the factor at which to apply this tuple\n\n var factor = this.tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords);\n if (factor === 0) {\n offsetToData += tupleDataSize;\n continue;\n }\n var here = stream.pos;\n stream.pos = offsetToData;\n if (tupleIndex & PRIVATE_POINT_NUMBERS) {\n var points = this.decodePoints();\n } else {\n var points = sharedPoints;\n } // points.length = 0 means there are deltas for all points\n\n var nPoints = points.length === 0 ? glyphPoints.length : points.length;\n var xDeltas = this.decodeDeltas(nPoints);\n var yDeltas = this.decodeDeltas(nPoints);\n if (points.length === 0) {\n // all points\n for (var _i = 0; _i < glyphPoints.length; _i++) {\n var point = glyphPoints[_i];\n point.x += Math.round(xDeltas[_i] * factor);\n point.y += Math.round(yDeltas[_i] * factor);\n }\n } else {\n var outPoints = origPoints.map(function (pt) {\n return pt.copy();\n });\n var hasDelta = glyphPoints.map(function () {\n return false;\n });\n for (var _i2 = 0; _i2 < points.length; _i2++) {\n var idx = points[_i2];\n if (idx < glyphPoints.length) {\n var _point = outPoints[idx];\n hasDelta[idx] = true;\n _point.x += Math.round(xDeltas[_i2] * factor);\n _point.y += Math.round(yDeltas[_i2] * factor);\n }\n }\n this.interpolateMissingDeltas(outPoints, origPoints, hasDelta);\n for (var _i3 = 0; _i3 < glyphPoints.length; _i3++) {\n var deltaX = outPoints[_i3].x - origPoints[_i3].x;\n var deltaY = outPoints[_i3].y - origPoints[_i3].y;\n glyphPoints[_i3].x += deltaX;\n glyphPoints[_i3].y += deltaY;\n }\n }\n offsetToData += tupleDataSize;\n stream.pos = here;\n }\n };\n _proto38.decodePoints = function decodePoints() {\n var stream = this.font.stream;\n var count = stream.readUInt8();\n if (count & POINTS_ARE_WORDS) {\n count = (count & POINT_RUN_COUNT_MASK) << 8 | stream.readUInt8();\n }\n var points = new Uint16Array(count);\n var i = 0;\n var point = 0;\n while (i < count) {\n var run = stream.readUInt8();\n var runCount = (run & POINT_RUN_COUNT_MASK) + 1;\n var fn = run & POINTS_ARE_WORDS ? stream.readUInt16 : stream.readUInt8;\n for (var j = 0; j < runCount && i < count; j++) {\n point += fn.call(stream);\n points[i++] = point;\n }\n }\n return points;\n };\n _proto38.decodeDeltas = function decodeDeltas(count) {\n var stream = this.font.stream;\n var i = 0;\n var deltas = new Int16Array(count);\n while (i < count) {\n var run = stream.readUInt8();\n var runCount = (run & DELTA_RUN_COUNT_MASK) + 1;\n if (run & DELTAS_ARE_ZERO) {\n i += runCount;\n } else {\n var fn = run & DELTAS_ARE_WORDS ? stream.readInt16BE : stream.readInt8;\n for (var j = 0; j < runCount && i < count; j++) {\n deltas[i++] = fn.call(stream);\n }\n }\n }\n return deltas;\n };\n _proto38.tupleFactor = function tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords) {\n var normalized = this.normalizedCoords;\n var gvar = this.font.gvar;\n var factor = 1;\n for (var i = 0; i < gvar.axisCount; i++) {\n if (tupleCoords[i] === 0) {\n continue;\n }\n if (normalized[i] === 0) {\n return 0;\n }\n if ((tupleIndex & INTERMEDIATE_TUPLE) === 0) {\n if (normalized[i] < Math.min(0, tupleCoords[i]) || normalized[i] > Math.max(0, tupleCoords[i])) {\n return 0;\n }\n factor = (factor * normalized[i] + Number.EPSILON) / (tupleCoords[i] + Number.EPSILON);\n } else {\n if (normalized[i] < startCoords[i] || normalized[i] > endCoords[i]) {\n return 0;\n } else if (normalized[i] < tupleCoords[i]) {\n factor = factor * (normalized[i] - startCoords[i] + Number.EPSILON) / (tupleCoords[i] - startCoords[i] + Number.EPSILON);\n } else {\n factor = factor * (endCoords[i] - normalized[i] + Number.EPSILON) / (endCoords[i] - tupleCoords[i] + Number.EPSILON);\n }\n }\n }\n return factor;\n } // Interpolates points without delta values.\n // Needed for the Ø and Q glyphs in Skia.\n // Algorithm from Freetype.\n ;\n _proto38.interpolateMissingDeltas = function interpolateMissingDeltas(points, inPoints, hasDelta) {\n if (points.length === 0) {\n return;\n }\n var point = 0;\n while (point < points.length) {\n var firstPoint = point; // find the end point of the contour\n\n var endPoint = point;\n var pt = points[endPoint];\n while (!pt.endContour) {\n pt = points[++endPoint];\n } // find the first point that has a delta\n\n while (point <= endPoint && !hasDelta[point]) {\n point++;\n }\n if (point > endPoint) {\n continue;\n }\n var firstDelta = point;\n var curDelta = point;\n point++;\n while (point <= endPoint) {\n // find the next point with a delta, and interpolate intermediate points\n if (hasDelta[point]) {\n this.deltaInterpolate(curDelta + 1, point - 1, curDelta, point, inPoints, points);\n curDelta = point;\n }\n point++;\n } // shift contour if we only have a single delta\n\n if (curDelta === firstDelta) {\n this.deltaShift(firstPoint, endPoint, curDelta, inPoints, points);\n } else {\n // otherwise, handle the remaining points at the end and beginning of the contour\n this.deltaInterpolate(curDelta + 1, endPoint, curDelta, firstDelta, inPoints, points);\n if (firstDelta > 0) {\n this.deltaInterpolate(firstPoint, firstDelta - 1, curDelta, firstDelta, inPoints, points);\n }\n }\n point = endPoint + 1;\n }\n };\n _proto38.deltaInterpolate = function deltaInterpolate(p1, p2, ref1, ref2, inPoints, outPoints) {\n if (p1 > p2) {\n return;\n }\n var iterable = ['x', 'y'];\n for (var i = 0; i < iterable.length; i++) {\n var k = iterable[i];\n if (inPoints[ref1][k] > inPoints[ref2][k]) {\n var p = ref1;\n ref1 = ref2;\n ref2 = p;\n }\n var in1 = inPoints[ref1][k];\n var in2 = inPoints[ref2][k];\n var out1 = outPoints[ref1][k];\n var out2 = outPoints[ref2][k]; // If the reference points have the same coordinate but different\n // delta, inferred delta is zero. Otherwise interpolate.\n\n if (in1 !== in2 || out1 === out2) {\n var scale = in1 === in2 ? 0 : (out2 - out1) / (in2 - in1);\n for (var _p = p1; _p <= p2; _p++) {\n var out = inPoints[_p][k];\n if (out <= in1) {\n out += out1 - in1;\n } else if (out >= in2) {\n out += out2 - in2;\n } else {\n out = out1 + (out - in1) * scale;\n }\n outPoints[_p][k] = out;\n }\n }\n }\n };\n _proto38.deltaShift = function deltaShift(p1, p2, ref, inPoints, outPoints) {\n var deltaX = outPoints[ref].x - inPoints[ref].x;\n var deltaY = outPoints[ref].y - inPoints[ref].y;\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n for (var p = p1; p <= p2; p++) {\n if (p !== ref) {\n outPoints[p].x += deltaX;\n outPoints[p].y += deltaY;\n }\n }\n };\n _proto38.getAdvanceAdjustment = function getAdvanceAdjustment(gid, table) {\n var outerIndex, innerIndex;\n if (table.advanceWidthMapping) {\n var idx = gid;\n if (idx >= table.advanceWidthMapping.mapCount) {\n idx = table.advanceWidthMapping.mapCount - 1;\n }\n var entryFormat = table.advanceWidthMapping.entryFormat;\n var _table$advanceWidthMa = table.advanceWidthMapping.mapData[idx];\n outerIndex = _table$advanceWidthMa.outerIndex;\n innerIndex = _table$advanceWidthMa.innerIndex;\n } else {\n outerIndex = 0;\n innerIndex = gid;\n }\n return this.getDelta(table.itemVariationStore, outerIndex, innerIndex);\n } // See pseudo code from `Font Variations Overview'\n // in the OpenType specification.\n ;\n _proto38.getDelta = function getDelta(itemStore, outerIndex, innerIndex) {\n if (outerIndex >= itemStore.itemVariationData.length) {\n return 0;\n }\n var varData = itemStore.itemVariationData[outerIndex];\n if (innerIndex >= varData.deltaSets.length) {\n return 0;\n }\n var deltaSet = varData.deltaSets[innerIndex];\n var blendVector = this.getBlendVector(itemStore, outerIndex);\n var netAdjustment = 0;\n for (var master = 0; master < varData.regionIndexCount; master++) {\n netAdjustment += deltaSet.deltas[master] * blendVector[master];\n }\n return netAdjustment;\n };\n _proto38.getBlendVector = function getBlendVector(itemStore, outerIndex) {\n var varData = itemStore.itemVariationData[outerIndex];\n if (this.blendVectors.has(varData)) {\n return this.blendVectors.get(varData);\n }\n var normalizedCoords = this.normalizedCoords;\n var blendVector = []; // outer loop steps through master designs to be blended\n\n for (var master = 0; master < varData.regionIndexCount; master++) {\n var scalar = 1;\n var regionIndex = varData.regionIndexes[master];\n var axes = itemStore.variationRegionList.variationRegions[regionIndex]; // inner loop steps through axes in this region\n\n for (var j = 0; j < axes.length; j++) {\n var axis = axes[j];\n var axisScalar = void 0; // compute the scalar contribution of this axis\n // ignore invalid ranges\n\n if (axis.startCoord > axis.peakCoord || axis.peakCoord > axis.endCoord) {\n axisScalar = 1;\n } else if (axis.startCoord < 0 && axis.endCoord > 0 && axis.peakCoord !== 0) {\n axisScalar = 1; // peak of 0 means ignore this axis\n } else if (axis.peakCoord === 0) {\n axisScalar = 1; // ignore this region if coords are out of range\n } else if (normalizedCoords[j] < axis.startCoord || normalizedCoords[j] > axis.endCoord) {\n axisScalar = 0; // calculate a proportional factor\n } else {\n if (normalizedCoords[j] === axis.peakCoord) {\n axisScalar = 1;\n } else if (normalizedCoords[j] < axis.peakCoord) {\n axisScalar = (normalizedCoords[j] - axis.startCoord + Number.EPSILON) / (axis.peakCoord - axis.startCoord + Number.EPSILON);\n } else {\n axisScalar = (axis.endCoord - normalizedCoords[j] + Number.EPSILON) / (axis.endCoord - axis.peakCoord + Number.EPSILON);\n }\n } // take product of all the axis scalars\n\n scalar *= axisScalar;\n }\n blendVector[master] = scalar;\n }\n this.blendVectors.set(varData, blendVector);\n return blendVector;\n };\n return GlyphVariationProcessor;\n}();\nvar resolved = Promise.resolve();\nvar Subset = /*#__PURE__*/function () {\n function Subset(font) {\n this.font = font;\n this.glyphs = [];\n this.mapping = {}; // always include the missing glyph\n\n this.includeGlyph(0);\n }\n var _proto39 = Subset.prototype;\n _proto39.includeGlyph = function includeGlyph(glyph) {\n if (typeof glyph === 'object') {\n glyph = glyph.id;\n }\n if (this.mapping[glyph] == null) {\n this.glyphs.push(glyph);\n this.mapping[glyph] = this.glyphs.length - 1;\n }\n return this.mapping[glyph];\n };\n _proto39.encodeStream = function encodeStream() {\n var _this11 = this;\n var s = new r.EncodeStream();\n resolved.then(function () {\n _this11.encode(s);\n return s.end();\n });\n return s;\n };\n return Subset;\n}();\nvar ON_CURVE$1 = 1 << 0;\nvar X_SHORT_VECTOR$1 = 1 << 1;\nvar Y_SHORT_VECTOR$1 = 1 << 2;\nvar REPEAT$1 = 1 << 3;\nvar SAME_X$1 = 1 << 4;\nvar SAME_Y$1 = 1 << 5;\nvar Point$1 = /*#__PURE__*/function () {\n function Point$1() {}\n Point$1.size = function size(val) {\n return val >= 0 && val <= 255 ? 1 : 2;\n };\n Point$1.encode = function encode(stream, value) {\n if (value >= 0 && value <= 255) {\n stream.writeUInt8(value);\n } else {\n stream.writeInt16BE(value);\n }\n };\n return Point$1;\n}();\nvar Glyf = new r.Struct({\n numberOfContours: r.int16,\n // if negative, this is a composite glyph\n xMin: r.int16,\n yMin: r.int16,\n xMax: r.int16,\n yMax: r.int16,\n endPtsOfContours: new r.Array(r.uint16, 'numberOfContours'),\n instructions: new r.Array(r.uint8, r.uint16),\n flags: new r.Array(r.uint8, 0),\n xPoints: new r.Array(Point$1, 0),\n yPoints: new r.Array(Point$1, 0)\n});\n/**\r\n * Encodes TrueType glyph outlines\r\n */\nvar TTFGlyphEncoder = /*#__PURE__*/function () {\n function TTFGlyphEncoder() {}\n var _proto40 = TTFGlyphEncoder.prototype;\n _proto40.encodeSimple = function encodeSimple(path, instructions) {\n if (instructions === void 0) {\n instructions = [];\n }\n var endPtsOfContours = [];\n var xPoints = [];\n var yPoints = [];\n var flags = [];\n var same = 0;\n var lastX = 0,\n lastY = 0,\n lastFlag = 0;\n var pointCount = 0;\n for (var i = 0; i < path.commands.length; i++) {\n var c = path.commands[i];\n for (var j = 0; j < c.args.length; j += 2) {\n var x = c.args[j];\n var y = c.args[j + 1];\n var flag = 0; // If the ending point of a quadratic curve is the midpoint\n // between the control point and the control point of the next\n // quadratic curve, we can omit the ending point.\n\n if (c.command === 'quadraticCurveTo' && j === 2) {\n var next = path.commands[i + 1];\n if (next && next.command === 'quadraticCurveTo') {\n var midX = (lastX + next.args[0]) / 2;\n var midY = (lastY + next.args[1]) / 2;\n if (x === midX && y === midY) {\n continue;\n }\n }\n } // All points except control points are on curve.\n\n if (!(c.command === 'quadraticCurveTo' && j === 0)) {\n flag |= ON_CURVE$1;\n }\n flag = this._encodePoint(x, lastX, xPoints, flag, X_SHORT_VECTOR$1, SAME_X$1);\n flag = this._encodePoint(y, lastY, yPoints, flag, Y_SHORT_VECTOR$1, SAME_Y$1);\n if (flag === lastFlag && same < 255) {\n flags[flags.length - 1] |= REPEAT$1;\n same++;\n } else {\n if (same > 0) {\n flags.push(same);\n same = 0;\n }\n flags.push(flag);\n lastFlag = flag;\n }\n lastX = x;\n lastY = y;\n pointCount++;\n }\n if (c.command === 'closePath') {\n endPtsOfContours.push(pointCount - 1);\n }\n } // Close the path if the last command didn't already\n\n if (path.commands.length > 1 && path.commands[path.commands.length - 1].command !== 'closePath') {\n endPtsOfContours.push(pointCount - 1);\n }\n var bbox = path.bbox;\n var glyf = {\n numberOfContours: endPtsOfContours.length,\n xMin: bbox.minX,\n yMin: bbox.minY,\n xMax: bbox.maxX,\n yMax: bbox.maxY,\n endPtsOfContours: endPtsOfContours,\n instructions: instructions,\n flags: flags,\n xPoints: xPoints,\n yPoints: yPoints\n };\n var size = Glyf.size(glyf);\n var tail = 4 - size % 4;\n var stream = new r.EncodeStream(size + tail);\n Glyf.encode(stream, glyf); // Align to 4-byte length\n\n if (tail !== 0) {\n stream.fill(0, tail);\n }\n return stream.buffer;\n };\n _proto40._encodePoint = function _encodePoint(value, last, points, flag, shortFlag, sameFlag) {\n var diff = value - last;\n if (value === last) {\n flag |= sameFlag;\n } else {\n if (-255 <= diff && diff <= 255) {\n flag |= shortFlag;\n if (diff < 0) {\n diff = -diff;\n } else {\n flag |= sameFlag;\n }\n }\n points.push(diff);\n }\n return flag;\n };\n return TTFGlyphEncoder;\n}();\nvar TTFSubset = /*#__PURE__*/function (_Subset) {\n _inheritsLoose(TTFSubset, _Subset);\n function TTFSubset(font) {\n var _this12;\n _this12 = _Subset.call(this, font) || this;\n _this12.glyphEncoder = new TTFGlyphEncoder();\n return _this12;\n }\n var _proto41 = TTFSubset.prototype;\n _proto41._addGlyph = function _addGlyph(gid) {\n var glyph = this.font.getGlyph(gid);\n var glyf = glyph._decode(); // get the offset to the glyph from the loca table\n\n var curOffset = this.font.loca.offsets[gid];\n var nextOffset = this.font.loca.offsets[gid + 1];\n var stream = this.font._getTableStream('glyf');\n stream.pos += curOffset;\n var buffer = stream.readBuffer(nextOffset - curOffset); // if it is a compound glyph, include its components\n\n if (glyf && glyf.numberOfContours < 0) {\n buffer = Buffer.from(buffer);\n for (var _iterator72 = _createForOfIteratorHelperLoose(glyf.components), _step72; !(_step72 = _iterator72()).done;) {\n var component = _step72.value;\n gid = this.includeGlyph(component.glyphID);\n buffer.writeUInt16BE(gid, component.pos);\n }\n } else if (glyf && this.font._variationProcessor) {\n // If this is a TrueType variation glyph, re-encode the path\n buffer = this.glyphEncoder.encodeSimple(glyph.path, glyf.instructions);\n }\n this.glyf.push(buffer);\n this.loca.offsets.push(this.offset);\n this.hmtx.metrics.push({\n advance: glyph.advanceWidth,\n bearing: glyph._getMetrics().leftBearing\n });\n this.offset += buffer.length;\n return this.glyf.length - 1;\n };\n _proto41.encode = function encode(stream) {\n // tables required by PDF spec:\n // head, hhea, loca, maxp, cvt , prep, glyf, hmtx, fpgm\n //\n // additional tables required for standalone fonts:\n // name, cmap, OS/2, post\n this.glyf = [];\n this.offset = 0;\n this.loca = {\n offsets: [],\n version: this.font.loca.version\n };\n this.hmtx = {\n metrics: [],\n bearings: []\n }; // include all the glyphs\n // not using a for loop because we need to support adding more\n // glyphs to the array as we go, and CoffeeScript caches the length.\n\n var i = 0;\n while (i < this.glyphs.length) {\n this._addGlyph(this.glyphs[i++]);\n }\n var maxp = cloneDeep(this.font.maxp);\n maxp.numGlyphs = this.glyf.length;\n this.loca.offsets.push(this.offset);\n var head = cloneDeep(this.font.head);\n head.indexToLocFormat = this.loca.version;\n var hhea = cloneDeep(this.font.hhea);\n hhea.numberOfMetrics = this.hmtx.metrics.length; // map = []\n // for index in [0...256]\n // if index < @numGlyphs\n // map[index] = index\n // else\n // map[index] = 0\n //\n // cmapTable =\n // version: 0\n // length: 262\n // language: 0\n // codeMap: map\n //\n // cmap =\n // version: 0\n // numSubtables: 1\n // tables: [\n // platformID: 1\n // encodingID: 0\n // table: cmapTable\n // ]\n // TODO: subset prep, cvt, fpgm?\n\n Directory.encode(stream, {\n tables: {\n head: head,\n hhea: hhea,\n loca: this.loca,\n maxp: maxp,\n 'cvt ': this.font['cvt '],\n prep: this.font.prep,\n glyf: this.glyf,\n hmtx: this.hmtx,\n fpgm: this.font.fpgm // name: clone @font.name\n // 'OS/2': clone @font['OS/2']\n // post: clone @font.post\n // cmap: cmap\n }\n });\n };\n return TTFSubset;\n}(Subset);\nvar CFFSubset = /*#__PURE__*/function (_Subset2) {\n _inheritsLoose(CFFSubset, _Subset2);\n function CFFSubset(font) {\n var _this13;\n _this13 = _Subset2.call(this, font) || this;\n _this13.cff = _this13.font['CFF '];\n if (!_this13.cff) {\n throw new Error('Not a CFF Font');\n }\n return _this13;\n }\n var _proto42 = CFFSubset.prototype;\n _proto42.subsetCharstrings = function subsetCharstrings() {\n this.charstrings = [];\n var gsubrs = {};\n for (var _iterator73 = _createForOfIteratorHelperLoose(this.glyphs), _step73; !(_step73 = _iterator73()).done;) {\n var gid = _step73.value;\n this.charstrings.push(this.cff.getCharString(gid));\n var glyph = this.font.getGlyph(gid);\n var path = glyph.path; // this causes the glyph to be parsed\n\n for (var subr in glyph._usedGsubrs) {\n gsubrs[subr] = true;\n }\n }\n this.gsubrs = this.subsetSubrs(this.cff.globalSubrIndex, gsubrs);\n };\n _proto42.subsetSubrs = function subsetSubrs(subrs, used) {\n var res = [];\n for (var i = 0; i < subrs.length; i++) {\n var subr = subrs[i];\n if (used[i]) {\n this.cff.stream.pos = subr.offset;\n res.push(this.cff.stream.readBuffer(subr.length));\n } else {\n res.push(Buffer.from([11])); // return\n }\n }\n return res;\n };\n _proto42.subsetFontdict = function subsetFontdict(topDict) {\n topDict.FDArray = [];\n topDict.FDSelect = {\n version: 0,\n fds: []\n };\n var used_fds = {};\n var used_subrs = [];\n var fd_select = {};\n for (var _iterator74 = _createForOfIteratorHelperLoose(this.glyphs), _step74; !(_step74 = _iterator74()).done;) {\n var gid = _step74.value;\n var fd = this.cff.fdForGlyph(gid);\n if (fd == null) {\n continue;\n }\n if (!used_fds[fd]) {\n topDict.FDArray.push(Object.assign({}, this.cff.topDict.FDArray[fd]));\n used_subrs.push({});\n fd_select[fd] = topDict.FDArray.length - 1;\n }\n used_fds[fd] = true;\n topDict.FDSelect.fds.push(fd_select[fd]);\n var glyph = this.font.getGlyph(gid);\n var path = glyph.path; // this causes the glyph to be parsed\n\n for (var subr in glyph._usedSubrs) {\n used_subrs[fd_select[fd]][subr] = true;\n }\n }\n for (var i = 0; i < topDict.FDArray.length; i++) {\n var dict = topDict.FDArray[i];\n delete dict.FontName;\n if (dict.Private && dict.Private.Subrs) {\n dict.Private = Object.assign({}, dict.Private);\n dict.Private.Subrs = this.subsetSubrs(dict.Private.Subrs, used_subrs[i]);\n }\n }\n return;\n };\n _proto42.createCIDFontdict = function createCIDFontdict(topDict) {\n var used_subrs = {};\n for (var _iterator75 = _createForOfIteratorHelperLoose(this.glyphs), _step75; !(_step75 = _iterator75()).done;) {\n var gid = _step75.value;\n var glyph = this.font.getGlyph(gid);\n var path = glyph.path; // this causes the glyph to be parsed\n\n for (var subr in glyph._usedSubrs) {\n used_subrs[subr] = true;\n }\n }\n var privateDict = Object.assign({}, this.cff.topDict.Private);\n if (this.cff.topDict.Private && this.cff.topDict.Private.Subrs) {\n privateDict.Subrs = this.subsetSubrs(this.cff.topDict.Private.Subrs, used_subrs);\n }\n topDict.FDArray = [{\n Private: privateDict\n }];\n return topDict.FDSelect = {\n version: 3,\n nRanges: 1,\n ranges: [{\n first: 0,\n fd: 0\n }],\n sentinel: this.charstrings.length\n };\n };\n _proto42.addString = function addString(string) {\n if (!string) {\n return null;\n }\n if (!this.strings) {\n this.strings = [];\n }\n this.strings.push(string);\n return standardStrings.length + this.strings.length - 1;\n };\n _proto42.encode = function encode(stream) {\n this.subsetCharstrings();\n var charset = {\n version: this.charstrings.length > 255 ? 2 : 1,\n ranges: [{\n first: 1,\n nLeft: this.charstrings.length - 2\n }]\n };\n var topDict = Object.assign({}, this.cff.topDict);\n topDict.Private = null;\n topDict.charset = charset;\n topDict.Encoding = null;\n topDict.CharStrings = this.charstrings;\n for (var _i24 = 0, _arr2 = ['version', 'Notice', 'Copyright', 'FullName', 'FamilyName', 'Weight', 'PostScript', 'BaseFontName', 'FontName']; _i24 < _arr2.length; _i24++) {\n var key = _arr2[_i24];\n topDict[key] = this.addString(this.cff.string(topDict[key]));\n }\n topDict.ROS = [this.addString('Adobe'), this.addString('Identity'), 0];\n topDict.CIDCount = this.charstrings.length;\n if (this.cff.isCIDFont) {\n this.subsetFontdict(topDict);\n } else {\n this.createCIDFontdict(topDict);\n }\n var top = {\n version: 1,\n hdrSize: this.cff.hdrSize,\n offSize: 4,\n header: this.cff.header,\n nameIndex: [this.cff.postscriptName],\n topDictIndex: [topDict],\n stringIndex: this.strings,\n globalSubrIndex: this.gsubrs\n };\n CFFTop.encode(stream, top);\n };\n return CFFSubset;\n}(Subset);\nvar _class$4;\n/**\r\n * This is the base class for all SFNT-based font formats in fontkit.\r\n * It supports TrueType, and PostScript glyphs, and several color glyph formats.\r\n */\n\nvar TTFFont = (_class$4 = /*#__PURE__*/function () {\n TTFFont.probe = function probe(buffer) {\n var format = buffer.toString('ascii', 0, 4);\n return format === 'true' || format === 'OTTO' || format === String.fromCharCode(0, 1, 0, 0);\n };\n function TTFFont(stream, variationCoords) {\n if (variationCoords === void 0) {\n variationCoords = null;\n }\n this.defaultLanguage = null;\n this.stream = stream;\n this.variationCoords = variationCoords;\n this._directoryPos = this.stream.pos;\n this._tables = {};\n this._glyphs = {};\n this._decodeDirectory(); // define properties for each table to lazily parse\n\n for (var tag in this.directory.tables) {\n var table = this.directory.tables[tag];\n if (tables[tag] && table.length > 0) {\n Object.defineProperty(this, tag, {\n get: this._getTable.bind(this, table)\n });\n }\n }\n }\n var _proto43 = TTFFont.prototype;\n _proto43.setDefaultLanguage = function setDefaultLanguage(lang) {\n if (lang === void 0) {\n lang = null;\n }\n this.defaultLanguage = lang;\n };\n _proto43._getTable = function _getTable(table) {\n if (!(table.tag in this._tables)) {\n try {\n this._tables[table.tag] = this._decodeTable(table);\n } catch (e) {\n if (fontkit.logErrors) {\n console.error(\"Error decoding table \".concat(table.tag));\n console.error(e.stack);\n }\n }\n }\n return this._tables[table.tag];\n };\n _proto43._getTableStream = function _getTableStream(tag) {\n var table = this.directory.tables[tag];\n if (table) {\n this.stream.pos = table.offset;\n return this.stream;\n }\n return null;\n };\n _proto43._decodeDirectory = function _decodeDirectory() {\n return this.directory = Directory.decode(this.stream, {\n _startOffset: 0\n });\n };\n _proto43._decodeTable = function _decodeTable(table) {\n var pos = this.stream.pos;\n var stream = this._getTableStream(table.tag);\n var result = tables[table.tag].decode(stream, this, table.length);\n this.stream.pos = pos;\n return result;\n }\n /**\r\n * Gets a string from the font's `name` table\r\n * `lang` is a BCP-47 language code.\r\n * @return {string}\r\n */;\n _proto43.getName = function getName(key, lang) {\n if (lang === void 0) {\n lang = this.defaultLanguage || fontkit.defaultLanguage;\n }\n var record = this.name && this.name.records[key];\n if (record) {\n // Attempt to retrieve the entry, depending on which translation is available:\n return record[lang] || record[this.defaultLanguage] || record[fontkit.defaultLanguage] || record['en'] || record[Object.keys(record)[0]] // Seriously, ANY language would be fine\n || null;\n }\n return null;\n }\n /**\r\n * The unique PostScript name for this font, e.g. \"Helvetica-Bold\"\r\n * @type {string}\r\n */;\n /**\r\n * Returns whether there is glyph in the font for the given unicode code point.\r\n *\r\n * @param {number} codePoint\r\n * @return {boolean}\r\n */\n _proto43.hasGlyphForCodePoint = function hasGlyphForCodePoint(codePoint) {\n return !!this._cmapProcessor.lookup(codePoint);\n }\n /**\r\n * Maps a single unicode code point to a Glyph object.\r\n * Does not perform any advanced substitutions (there is no context to do so).\r\n *\r\n * @param {number} codePoint\r\n * @return {Glyph}\r\n */;\n _proto43.glyphForCodePoint = function glyphForCodePoint(codePoint) {\n return this.getGlyph(this._cmapProcessor.lookup(codePoint), [codePoint]);\n }\n /**\r\n * Returns an array of Glyph objects for the given string.\r\n * This is only a one-to-one mapping from characters to glyphs.\r\n * For most uses, you should use font.layout (described below), which\r\n * provides a much more advanced mapping supporting AAT and OpenType shaping.\r\n *\r\n * @param {string} string\r\n * @return {Glyph[]}\r\n */;\n _proto43.glyphsForString = function glyphsForString(string) {\n var glyphs = [];\n var len = string.length;\n var idx = 0;\n var last = -1;\n var state = -1;\n while (idx <= len) {\n var code = 0;\n var nextState = 0;\n if (idx < len) {\n // Decode the next codepoint from UTF 16\n code = string.charCodeAt(idx++);\n if (0xd800 <= code && code <= 0xdbff && idx < len) {\n var next = string.charCodeAt(idx);\n if (0xdc00 <= next && next <= 0xdfff) {\n idx++;\n code = ((code & 0x3ff) << 10) + (next & 0x3ff) + 0x10000;\n }\n } // Compute the next state: 1 if the next codepoint is a variation selector, 0 otherwise.\n\n nextState = 0xfe00 <= code && code <= 0xfe0f || 0xe0100 <= code && code <= 0xe01ef ? 1 : 0;\n } else {\n idx++;\n }\n if (state === 0 && nextState === 1) {\n // Variation selector following normal codepoint.\n glyphs.push(this.getGlyph(this._cmapProcessor.lookup(last, code), [last, code]));\n } else if (state === 0 && nextState === 0) {\n // Normal codepoint following normal codepoint.\n glyphs.push(this.glyphForCodePoint(last));\n }\n last = code;\n state = nextState;\n }\n return glyphs;\n };\n /**\r\n * Returns a GlyphRun object, which includes an array of Glyphs and GlyphPositions for the given string.\r\n *\r\n * @param {string} string\r\n * @param {string[]} [userFeatures]\r\n * @param {string} [script]\r\n * @param {string} [language]\r\n * @param {string} [direction]\r\n * @return {GlyphRun}\r\n */\n _proto43.layout = function layout(string, userFeatures, script, language, direction) {\n return this._layoutEngine.layout(string, userFeatures, script, language, direction);\n }\n /**\r\n * Returns an array of strings that map to the given glyph id.\r\n * @param {number} gid - glyph id\r\n */;\n _proto43.stringsForGlyph = function stringsForGlyph(gid) {\n return this._layoutEngine.stringsForGlyph(gid);\n }\n /**\r\n * An array of all [OpenType feature tags](https://www.microsoft.com/typography/otspec/featuretags.htm)\r\n * (or mapped AAT tags) supported by the font.\r\n * The features parameter is an array of OpenType feature tags to be applied in addition to the default set.\r\n * If this is an AAT font, the OpenType feature tags are mapped to AAT features.\r\n *\r\n * @type {string[]}\r\n */;\n _proto43.getAvailableFeatures = function getAvailableFeatures(script, language) {\n return this._layoutEngine.getAvailableFeatures(script, language);\n };\n _proto43._getBaseGlyph = function _getBaseGlyph(glyph, characters) {\n if (characters === void 0) {\n characters = [];\n }\n if (!this._glyphs[glyph]) {\n if (this.directory.tables.glyf) {\n this._glyphs[glyph] = new TTFGlyph(glyph, characters, this);\n } else if (this.directory.tables['CFF '] || this.directory.tables.CFF2) {\n this._glyphs[glyph] = new CFFGlyph(glyph, characters, this);\n }\n }\n return this._glyphs[glyph] || null;\n }\n /**\r\n * Returns a glyph object for the given glyph id.\r\n * You can pass the array of code points this glyph represents for\r\n * your use later, and it will be stored in the glyph object.\r\n *\r\n * @param {number} glyph\r\n * @param {number[]} characters\r\n * @return {Glyph}\r\n */;\n _proto43.getGlyph = function getGlyph(glyph, characters) {\n if (characters === void 0) {\n characters = [];\n }\n if (!this._glyphs[glyph]) {\n if (this.directory.tables.sbix) {\n this._glyphs[glyph] = new SBIXGlyph(glyph, characters, this);\n } else if (this.directory.tables.COLR && this.directory.tables.CPAL) {\n this._glyphs[glyph] = new COLRGlyph(glyph, characters, this);\n } else {\n this._getBaseGlyph(glyph, characters);\n }\n }\n return this._glyphs[glyph] || null;\n }\n /**\r\n * Returns a Subset for this font.\r\n * @return {Subset}\r\n */;\n _proto43.createSubset = function createSubset() {\n if (this.directory.tables['CFF ']) {\n return new CFFSubset(this);\n }\n return new TTFSubset(this);\n }\n /**\r\n * Returns an object describing the available variation axes\r\n * that this font supports. Keys are setting tags, and values\r\n * contain the axis name, range, and default value.\r\n *\r\n * @type {object}\r\n */;\n /**\r\n * Returns a new font with the given variation settings applied.\r\n * Settings can either be an instance name, or an object containing\r\n * variation tags as specified by the `variationAxes` property.\r\n *\r\n * @param {object} settings\r\n * @return {TTFFont}\r\n */\n _proto43.getVariation = function getVariation(settings) {\n if (!(this.directory.tables.fvar && (this.directory.tables.gvar && this.directory.tables.glyf || this.directory.tables.CFF2))) {\n throw new Error('Variations require a font with the fvar, gvar and glyf, or CFF2 tables.');\n }\n if (typeof settings === 'string') {\n settings = this.namedVariations[settings];\n }\n if (typeof settings !== 'object') {\n throw new Error('Variation settings must be either a variation name or settings object.');\n } // normalize the coordinates\n\n var coords = this.fvar.axis.map(function (axis, i) {\n var axisTag = axis.axisTag.trim();\n if (axisTag in settings) {\n return Math.max(axis.minValue, Math.min(axis.maxValue, settings[axisTag]));\n } else {\n return axis.defaultValue;\n }\n });\n var stream = new r.DecodeStream(this.stream.buffer);\n stream.pos = this._directoryPos;\n var font = new TTFFont(stream, coords);\n font._tables = this._tables;\n return font;\n };\n // Standardized format plugin API\n _proto43.getFont = function getFont(name) {\n return this.getVariation(name);\n };\n _createClass(TTFFont, [{\n key: \"postscriptName\",\n get: function get() {\n return this.getName('postscriptName');\n }\n /**\r\n * The font's full name, e.g. \"Helvetica Bold\"\r\n * @type {string}\r\n */\n }, {\n key: \"fullName\",\n get: function get() {\n return this.getName('fullName');\n }\n /**\r\n * The font's family name, e.g. \"Helvetica\"\r\n * @type {string}\r\n */\n }, {\n key: \"familyName\",\n get: function get() {\n return this.getName('fontFamily');\n }\n /**\r\n * The font's sub-family, e.g. \"Bold\".\r\n * @type {string}\r\n */\n }, {\n key: \"subfamilyName\",\n get: function get() {\n return this.getName('fontSubfamily');\n }\n /**\r\n * The font's copyright information\r\n * @type {string}\r\n */\n }, {\n key: \"copyright\",\n get: function get() {\n return this.getName('copyright');\n }\n /**\r\n * The font's version number\r\n * @type {string}\r\n */\n }, {\n key: \"version\",\n get: function get() {\n return this.getName('version');\n }\n /**\r\n * The font’s [ascender](https://en.wikipedia.org/wiki/Ascender_(typography))\r\n * @type {number}\r\n */\n }, {\n key: \"ascent\",\n get: function get() {\n return this.hhea.ascent;\n }\n /**\r\n * The font’s [descender](https://en.wikipedia.org/wiki/Descender)\r\n * @type {number}\r\n */\n }, {\n key: \"descent\",\n get: function get() {\n return this.hhea.descent;\n }\n /**\r\n * The amount of space that should be included between lines\r\n * @type {number}\r\n */\n }, {\n key: \"lineGap\",\n get: function get() {\n return this.hhea.lineGap;\n }\n /**\r\n * The offset from the normal underline position that should be used\r\n * @type {number}\r\n */\n }, {\n key: \"underlinePosition\",\n get: function get() {\n return this.post.underlinePosition;\n }\n /**\r\n * The weight of the underline that should be used\r\n * @type {number}\r\n */\n }, {\n key: \"underlineThickness\",\n get: function get() {\n return this.post.underlineThickness;\n }\n /**\r\n * If this is an italic font, the angle the cursor should be drawn at to match the font design\r\n * @type {number}\r\n */\n }, {\n key: \"italicAngle\",\n get: function get() {\n return this.post.italicAngle;\n }\n /**\r\n * The height of capital letters above the baseline.\r\n * See [here](https://en.wikipedia.org/wiki/Cap_height) for more details.\r\n * @type {number}\r\n */\n }, {\n key: \"capHeight\",\n get: function get() {\n var os2 = this['OS/2'];\n return os2 ? os2.capHeight : this.ascent;\n }\n /**\r\n * The height of lower case letters in the font.\r\n * See [here](https://en.wikipedia.org/wiki/X-height) for more details.\r\n * @type {number}\r\n */\n }, {\n key: \"xHeight\",\n get: function get() {\n var os2 = this['OS/2'];\n return os2 ? os2.xHeight : 0;\n }\n /**\r\n * The number of glyphs in the font.\r\n * @type {number}\r\n */\n }, {\n key: \"numGlyphs\",\n get: function get() {\n return this.maxp.numGlyphs;\n }\n /**\r\n * The size of the font’s internal coordinate grid\r\n * @type {number}\r\n */\n }, {\n key: \"unitsPerEm\",\n get: function get() {\n return this.head.unitsPerEm;\n }\n /**\r\n * The font’s bounding box, i.e. the box that encloses all glyphs in the font.\r\n * @type {BBox}\r\n */\n }, {\n key: \"bbox\",\n get: function get() {\n return Object.freeze(new BBox(this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax));\n }\n }, {\n key: \"_cmapProcessor\",\n get: function get() {\n return new CmapProcessor(this.cmap);\n }\n /**\r\n * An array of all of the unicode code points supported by the font.\r\n * @type {number[]}\r\n */\n }, {\n key: \"characterSet\",\n get: function get() {\n return this._cmapProcessor.getCharacterSet();\n }\n }, {\n key: \"_layoutEngine\",\n get: function get() {\n return new LayoutEngine(this);\n }\n }, {\n key: \"availableFeatures\",\n get: function get() {\n return this._layoutEngine.getAvailableFeatures();\n }\n }, {\n key: \"variationAxes\",\n get: function get() {\n var res = {};\n if (!this.fvar) {\n return res;\n }\n for (var _iterator76 = _createForOfIteratorHelperLoose(this.fvar.axis), _step76; !(_step76 = _iterator76()).done;) {\n var axis = _step76.value;\n res[axis.axisTag.trim()] = {\n name: axis.name.en,\n min: axis.minValue,\n default: axis.defaultValue,\n max: axis.maxValue\n };\n }\n return res;\n }\n /**\r\n * Returns an object describing the named variation instances\r\n * that the font designer has specified. Keys are variation names\r\n * and values are the variation settings for this instance.\r\n *\r\n * @type {object}\r\n */\n }, {\n key: \"namedVariations\",\n get: function get() {\n var res = {};\n if (!this.fvar) {\n return res;\n }\n for (var _iterator77 = _createForOfIteratorHelperLoose(this.fvar.instance), _step77; !(_step77 = _iterator77()).done;) {\n var instance = _step77.value;\n var settings = {};\n for (var i = 0; i < this.fvar.axis.length; i++) {\n var axis = this.fvar.axis[i];\n settings[axis.axisTag.trim()] = instance.coord[i];\n }\n res[instance.name.en] = settings;\n }\n return res;\n }\n }, {\n key: \"_variationProcessor\",\n get: function get() {\n if (!this.fvar) {\n return null;\n }\n var variationCoords = this.variationCoords; // Ignore if no variation coords and not CFF2\n\n if (!variationCoords && !this.CFF2) {\n return null;\n }\n if (!variationCoords) {\n variationCoords = this.fvar.axis.map(function (axis) {\n return axis.defaultValue;\n });\n }\n return new GlyphVariationProcessor(this, variationCoords);\n }\n }]);\n return TTFFont;\n}(), (_applyDecoratedDescriptor(_class$4.prototype, \"bbox\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"bbox\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"_cmapProcessor\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"_cmapProcessor\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"characterSet\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"characterSet\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"_layoutEngine\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"_layoutEngine\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"variationAxes\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"variationAxes\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"namedVariations\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"namedVariations\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"_variationProcessor\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"_variationProcessor\"), _class$4.prototype)), _class$4);\nvar WOFFDirectoryEntry = new r.Struct({\n tag: new r.String(4),\n offset: new r.Pointer(r.uint32, 'void', {\n type: 'global'\n }),\n compLength: r.uint32,\n length: r.uint32,\n origChecksum: r.uint32\n});\nvar WOFFDirectory = new r.Struct({\n tag: new r.String(4),\n // should be 'wOFF'\n flavor: r.uint32,\n length: r.uint32,\n numTables: r.uint16,\n reserved: new r.Reserved(r.uint16),\n totalSfntSize: r.uint32,\n majorVersion: r.uint16,\n minorVersion: r.uint16,\n metaOffset: r.uint32,\n metaLength: r.uint32,\n metaOrigLength: r.uint32,\n privOffset: r.uint32,\n privLength: r.uint32,\n tables: new r.Array(WOFFDirectoryEntry, 'numTables')\n});\nWOFFDirectory.process = function () {\n var tables = {};\n for (var _iterator78 = _createForOfIteratorHelperLoose(this.tables), _step78; !(_step78 = _iterator78()).done;) {\n var table = _step78.value;\n tables[table.tag] = table;\n }\n this.tables = tables;\n};\nvar WOFFFont = /*#__PURE__*/function (_TTFFont) {\n _inheritsLoose(WOFFFont, _TTFFont);\n function WOFFFont() {\n return _TTFFont.apply(this, arguments) || this;\n }\n WOFFFont.probe = function probe(buffer) {\n return buffer.toString('ascii', 0, 4) === 'wOFF';\n };\n var _proto44 = WOFFFont.prototype;\n _proto44._decodeDirectory = function _decodeDirectory() {\n this.directory = WOFFDirectory.decode(this.stream, {\n _startOffset: 0\n });\n };\n _proto44._getTableStream = function _getTableStream(tag) {\n var table = this.directory.tables[tag];\n if (table) {\n this.stream.pos = table.offset;\n if (table.compLength < table.length) {\n this.stream.pos += 2; // skip deflate header\n\n var outBuffer = Buffer.alloc(table.length);\n var buf = inflate(this.stream.readBuffer(table.compLength - 2), outBuffer);\n return new r.DecodeStream(buf);\n } else {\n return this.stream;\n }\n }\n return null;\n };\n return WOFFFont;\n}(TTFFont);\n/**\r\n * Represents a TrueType glyph in the WOFF2 format, which compresses glyphs differently.\r\n */\nvar WOFF2Glyph = /*#__PURE__*/function (_TTFGlyph2) {\n _inheritsLoose(WOFF2Glyph, _TTFGlyph2);\n function WOFF2Glyph() {\n return _TTFGlyph2.apply(this, arguments) || this;\n }\n var _proto45 = WOFF2Glyph.prototype;\n _proto45._decode = function _decode() {\n // We have to decode in advance (in WOFF2Font), so just return the pre-decoded data.\n return this._font._transformedGlyphs[this.id];\n };\n _proto45._getCBox = function _getCBox() {\n return this.path.bbox;\n };\n return WOFF2Glyph;\n}(TTFGlyph);\nvar Base128 = {\n decode: function decode(stream) {\n var result = 0;\n var iterable = [0, 1, 2, 3, 4];\n for (var j = 0; j < iterable.length; j++) {\n var code = stream.readUInt8(); // If any of the top seven bits are set then we're about to overflow.\n\n if (result & 0xe0000000) {\n throw new Error('Overflow');\n }\n result = result << 7 | code & 0x7f;\n if ((code & 0x80) === 0) {\n return result;\n }\n }\n throw new Error('Bad base 128 number');\n }\n};\nvar knownTags = ['cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'OS/2', 'post', 'cvt ', 'fpgm', 'glyf', 'loca', 'prep', 'CFF ', 'VORG', 'EBDT', 'EBLC', 'gasp', 'hdmx', 'kern', 'LTSH', 'PCLT', 'VDMX', 'vhea', 'vmtx', 'BASE', 'GDEF', 'GPOS', 'GSUB', 'EBSC', 'JSTF', 'MATH', 'CBDT', 'CBLC', 'COLR', 'CPAL', 'SVG ', 'sbix', 'acnt', 'avar', 'bdat', 'bloc', 'bsln', 'cvar', 'fdsc', 'feat', 'fmtx', 'fvar', 'gvar', 'hsty', 'just', 'lcar', 'mort', 'morx', 'opbd', 'prop', 'trak', 'Zapf', 'Silf', 'Glat', 'Gloc', 'Feat', 'Sill'];\nvar WOFF2DirectoryEntry = new r.Struct({\n flags: r.uint8,\n customTag: new r.Optional(new r.String(4), function (t) {\n return (t.flags & 0x3f) === 0x3f;\n }),\n tag: function tag(t) {\n return t.customTag || knownTags[t.flags & 0x3f];\n },\n // || (() => { throw new Error(`Bad tag: ${flags & 0x3f}`); })(); },\n length: Base128,\n transformVersion: function transformVersion(t) {\n return t.flags >>> 6 & 0x03;\n },\n transformed: function transformed(t) {\n return t.tag === 'glyf' || t.tag === 'loca' ? t.transformVersion === 0 : t.transformVersion !== 0;\n },\n transformLength: new r.Optional(Base128, function (t) {\n return t.transformed;\n })\n});\nvar WOFF2Directory = new r.Struct({\n tag: new r.String(4),\n // should be 'wOF2'\n flavor: r.uint32,\n length: r.uint32,\n numTables: r.uint16,\n reserved: new r.Reserved(r.uint16),\n totalSfntSize: r.uint32,\n totalCompressedSize: r.uint32,\n majorVersion: r.uint16,\n minorVersion: r.uint16,\n metaOffset: r.uint32,\n metaLength: r.uint32,\n metaOrigLength: r.uint32,\n privOffset: r.uint32,\n privLength: r.uint32,\n tables: new r.Array(WOFF2DirectoryEntry, 'numTables')\n});\nWOFF2Directory.process = function () {\n var tables = {};\n for (var i = 0; i < this.tables.length; i++) {\n var table = this.tables[i];\n tables[table.tag] = table;\n }\n return this.tables = tables;\n};\n\n/**\r\n * Subclass of TTFFont that represents a TTF/OTF font compressed by WOFF2\r\n * See spec here: http://www.w3.org/TR/WOFF2/\r\n */\nvar WOFF2Font = /*#__PURE__*/function (_TTFFont2) {\n _inheritsLoose(WOFF2Font, _TTFFont2);\n function WOFF2Font() {\n return _TTFFont2.apply(this, arguments) || this;\n }\n WOFF2Font.probe = function probe(buffer) {\n return buffer.toString('ascii', 0, 4) === 'wOF2';\n };\n var _proto46 = WOFF2Font.prototype;\n _proto46._decodeDirectory = function _decodeDirectory() {\n this.directory = WOFF2Directory.decode(this.stream);\n this._dataPos = this.stream.pos;\n };\n _proto46._decompress = function _decompress() {\n // decompress data and setup table offsets if we haven't already\n if (!this._decompressed) {\n this.stream.pos = this._dataPos;\n var buffer = this.stream.readBuffer(this.directory.totalCompressedSize);\n var decompressedSize = 0;\n for (var tag in this.directory.tables) {\n var entry = this.directory.tables[tag];\n entry.offset = decompressedSize;\n decompressedSize += entry.transformLength != null ? entry.transformLength : entry.length;\n }\n var decompressed = brotli(buffer, decompressedSize);\n if (!decompressed) {\n throw new Error('Error decoding compressed data in WOFF2');\n }\n this.stream = new r.DecodeStream(Buffer.from(decompressed));\n this._decompressed = true;\n }\n };\n _proto46._decodeTable = function _decodeTable(table) {\n this._decompress();\n return _TTFFont2.prototype._decodeTable.call(this, table);\n } // Override this method to get a glyph and return our\n // custom subclass if there is a glyf table.\n ;\n _proto46._getBaseGlyph = function _getBaseGlyph(glyph, characters) {\n if (characters === void 0) {\n characters = [];\n }\n if (!this._glyphs[glyph]) {\n if (this.directory.tables.glyf && this.directory.tables.glyf.transformed) {\n if (!this._transformedGlyphs) {\n this._transformGlyfTable();\n }\n return this._glyphs[glyph] = new WOFF2Glyph(glyph, characters, this);\n } else {\n return _TTFFont2.prototype._getBaseGlyph.call(this, glyph, characters);\n }\n }\n };\n _proto46._transformGlyfTable = function _transformGlyfTable() {\n this._decompress();\n this.stream.pos = this.directory.tables.glyf.offset;\n var table = GlyfTable.decode(this.stream);\n var glyphs = [];\n for (var index = 0; index < table.numGlyphs; index++) {\n var glyph = {};\n var nContours = table.nContours.readInt16BE();\n glyph.numberOfContours = nContours;\n if (nContours > 0) {\n // simple glyph\n var nPoints = [];\n var totalPoints = 0;\n for (var i = 0; i < nContours; i++) {\n var _r = read255UInt16(table.nPoints);\n totalPoints += _r;\n nPoints.push(totalPoints);\n }\n glyph.points = decodeTriplet(table.flags, table.glyphs, totalPoints);\n for (var _i = 0; _i < nContours; _i++) {\n glyph.points[nPoints[_i] - 1].endContour = true;\n }\n var instructionSize = read255UInt16(table.glyphs);\n } else if (nContours < 0) {\n // composite glyph\n var haveInstructions = TTFGlyph.prototype._decodeComposite.call({\n _font: this\n }, glyph, table.composites);\n if (haveInstructions) {\n var instructionSize = read255UInt16(table.glyphs);\n }\n }\n glyphs.push(glyph);\n }\n this._transformedGlyphs = glyphs;\n };\n return WOFF2Font;\n}(TTFFont); // Special class that accepts a length and returns a sub-stream for that data\nvar Substream = /*#__PURE__*/function () {\n function Substream(length) {\n this.length = length;\n this._buf = new r.Buffer(length);\n }\n var _proto47 = Substream.prototype;\n _proto47.decode = function decode(stream, parent) {\n return new r.DecodeStream(this._buf.decode(stream, parent));\n };\n return Substream;\n}(); // This struct represents the entire glyf table\nvar GlyfTable = new r.Struct({\n version: r.uint32,\n numGlyphs: r.uint16,\n indexFormat: r.uint16,\n nContourStreamSize: r.uint32,\n nPointsStreamSize: r.uint32,\n flagStreamSize: r.uint32,\n glyphStreamSize: r.uint32,\n compositeStreamSize: r.uint32,\n bboxStreamSize: r.uint32,\n instructionStreamSize: r.uint32,\n nContours: new Substream('nContourStreamSize'),\n nPoints: new Substream('nPointsStreamSize'),\n flags: new Substream('flagStreamSize'),\n glyphs: new Substream('glyphStreamSize'),\n composites: new Substream('compositeStreamSize'),\n bboxes: new Substream('bboxStreamSize'),\n instructions: new Substream('instructionStreamSize')\n});\nvar WORD_CODE = 253;\nvar ONE_MORE_BYTE_CODE2 = 254;\nvar ONE_MORE_BYTE_CODE1 = 255;\nvar LOWEST_U_CODE = 253;\nfunction read255UInt16(stream) {\n var code = stream.readUInt8();\n if (code === WORD_CODE) {\n return stream.readUInt16BE();\n }\n if (code === ONE_MORE_BYTE_CODE1) {\n return stream.readUInt8() + LOWEST_U_CODE;\n }\n if (code === ONE_MORE_BYTE_CODE2) {\n return stream.readUInt8() + LOWEST_U_CODE * 2;\n }\n return code;\n}\nfunction withSign(flag, baseval) {\n return flag & 1 ? baseval : -baseval;\n}\nfunction decodeTriplet(flags, glyphs, nPoints) {\n var y;\n var x = y = 0;\n var res = [];\n for (var i = 0; i < nPoints; i++) {\n var dx = 0,\n dy = 0;\n var flag = flags.readUInt8();\n var onCurve = !(flag >> 7);\n flag &= 0x7f;\n if (flag < 10) {\n dx = 0;\n dy = withSign(flag, ((flag & 14) << 7) + glyphs.readUInt8());\n } else if (flag < 20) {\n dx = withSign(flag, ((flag - 10 & 14) << 7) + glyphs.readUInt8());\n dy = 0;\n } else if (flag < 84) {\n var b0 = flag - 20;\n var b1 = glyphs.readUInt8();\n dx = withSign(flag, 1 + (b0 & 0x30) + (b1 >> 4));\n dy = withSign(flag >> 1, 1 + ((b0 & 0x0c) << 2) + (b1 & 0x0f));\n } else if (flag < 120) {\n var b0 = flag - 84;\n dx = withSign(flag, 1 + (b0 / 12 << 8) + glyphs.readUInt8());\n dy = withSign(flag >> 1, 1 + (b0 % 12 >> 2 << 8) + glyphs.readUInt8());\n } else if (flag < 124) {\n var b1 = glyphs.readUInt8();\n var b2 = glyphs.readUInt8();\n dx = withSign(flag, (b1 << 4) + (b2 >> 4));\n dy = withSign(flag >> 1, ((b2 & 0x0f) << 8) + glyphs.readUInt8());\n } else {\n dx = withSign(flag, glyphs.readUInt16BE());\n dy = withSign(flag >> 1, glyphs.readUInt16BE());\n }\n x += dx;\n y += dy;\n res.push(new Point(onCurve, false, x, y));\n }\n return res;\n}\nvar TTCHeader = new r.VersionedStruct(r.uint32, {\n 0x00010000: {\n numFonts: r.uint32,\n offsets: new r.Array(r.uint32, 'numFonts')\n },\n 0x00020000: {\n numFonts: r.uint32,\n offsets: new r.Array(r.uint32, 'numFonts'),\n dsigTag: r.uint32,\n dsigLength: r.uint32,\n dsigOffset: r.uint32\n }\n});\nvar TrueTypeCollection = /*#__PURE__*/function () {\n TrueTypeCollection.probe = function probe(buffer) {\n return buffer.toString('ascii', 0, 4) === 'ttcf';\n };\n function TrueTypeCollection(stream) {\n this.stream = stream;\n if (stream.readString(4) !== 'ttcf') {\n throw new Error('Not a TrueType collection');\n }\n this.header = TTCHeader.decode(stream);\n }\n var _proto48 = TrueTypeCollection.prototype;\n _proto48.getFont = function getFont(name) {\n for (var _iterator79 = _createForOfIteratorHelperLoose(this.header.offsets), _step79; !(_step79 = _iterator79()).done;) {\n var offset = _step79.value;\n var stream = new r.DecodeStream(this.stream.buffer);\n stream.pos = offset;\n var font = new TTFFont(stream);\n if (font.postscriptName === name) {\n return font;\n }\n }\n return null;\n };\n _createClass(TrueTypeCollection, [{\n key: \"fonts\",\n get: function get() {\n var fonts = [];\n for (var _iterator80 = _createForOfIteratorHelperLoose(this.header.offsets), _step80; !(_step80 = _iterator80()).done;) {\n var offset = _step80.value;\n var stream = new r.DecodeStream(this.stream.buffer);\n stream.pos = offset;\n fonts.push(new TTFFont(stream));\n }\n return fonts;\n }\n }]);\n return TrueTypeCollection;\n}();\nvar DFontName = new r.String(r.uint8);\nvar DFontData = new r.Struct({\n len: r.uint32,\n buf: new r.Buffer('len')\n});\nvar Ref = new r.Struct({\n id: r.uint16,\n nameOffset: r.int16,\n attr: r.uint8,\n dataOffset: r.uint24,\n handle: r.uint32\n});\nvar Type = new r.Struct({\n name: new r.String(4),\n maxTypeIndex: r.uint16,\n refList: new r.Pointer(r.uint16, new r.Array(Ref, function (t) {\n return t.maxTypeIndex + 1;\n }), {\n type: 'parent'\n })\n});\nvar TypeList = new r.Struct({\n length: r.uint16,\n types: new r.Array(Type, function (t) {\n return t.length + 1;\n })\n});\nvar DFontMap = new r.Struct({\n reserved: new r.Reserved(r.uint8, 24),\n typeList: new r.Pointer(r.uint16, TypeList),\n nameListOffset: new r.Pointer(r.uint16, 'void')\n});\nvar DFontHeader = new r.Struct({\n dataOffset: r.uint32,\n map: new r.Pointer(r.uint32, DFontMap),\n dataLength: r.uint32,\n mapLength: r.uint32\n});\nvar DFont = /*#__PURE__*/function () {\n DFont.probe = function probe(buffer) {\n var stream = new r.DecodeStream(buffer);\n try {\n var header = DFontHeader.decode(stream);\n } catch (e) {\n return false;\n }\n for (var _iterator81 = _createForOfIteratorHelperLoose(header.map.typeList.types), _step81; !(_step81 = _iterator81()).done;) {\n var type = _step81.value;\n if (type.name === 'sfnt') {\n return true;\n }\n }\n return false;\n };\n function DFont(stream) {\n this.stream = stream;\n this.header = DFontHeader.decode(this.stream);\n for (var _iterator82 = _createForOfIteratorHelperLoose(this.header.map.typeList.types), _step82; !(_step82 = _iterator82()).done;) {\n var type = _step82.value;\n for (var _iterator83 = _createForOfIteratorHelperLoose(type.refList), _step83; !(_step83 = _iterator83()).done;) {\n var ref = _step83.value;\n if (ref.nameOffset >= 0) {\n this.stream.pos = ref.nameOffset + this.header.map.nameListOffset;\n ref.name = DFontName.decode(this.stream);\n } else {\n ref.name = null;\n }\n }\n if (type.name === 'sfnt') {\n this.sfnt = type;\n }\n }\n }\n var _proto49 = DFont.prototype;\n _proto49.getFont = function getFont(name) {\n if (!this.sfnt) {\n return null;\n }\n for (var _iterator84 = _createForOfIteratorHelperLoose(this.sfnt.refList), _step84; !(_step84 = _iterator84()).done;) {\n var ref = _step84.value;\n var pos = this.header.dataOffset + ref.dataOffset + 4;\n var stream = new r.DecodeStream(this.stream.buffer.slice(pos));\n var font = new TTFFont(stream);\n if (font.postscriptName === name) {\n return font;\n }\n }\n return null;\n };\n _createClass(DFont, [{\n key: \"fonts\",\n get: function get() {\n var fonts = [];\n for (var _iterator85 = _createForOfIteratorHelperLoose(this.sfnt.refList), _step85; !(_step85 = _iterator85()).done;) {\n var ref = _step85.value;\n var pos = this.header.dataOffset + ref.dataOffset + 4;\n var stream = new r.DecodeStream(this.stream.buffer.slice(pos));\n fonts.push(new TTFFont(stream));\n }\n return fonts;\n }\n }]);\n return DFont;\n}();\nfontkit.registerFormat(TTFFont);\nfontkit.registerFormat(WOFFFont);\nfontkit.registerFormat(WOFF2Font);\nfontkit.registerFormat(TrueTypeCollection);\nfontkit.registerFormat(DFont);\nmodule.exports = fontkit;\n\n/***/ }),\n\n/***/ 19304:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UnicodeTrie = __webpack_require__(41209);\n\nvar base64 = __webpack_require__(32504);\nvar _require = __webpack_require__(41783),\n BK = _require.BK,\n CR = _require.CR,\n LF = _require.LF,\n NL = _require.NL,\n SG = _require.SG,\n WJ = _require.WJ,\n SP = _require.SP,\n ZWJ = _require.ZWJ,\n BA = _require.BA,\n HY = _require.HY,\n NS = _require.NS,\n AI = _require.AI,\n AL = _require.AL,\n CJ = _require.CJ,\n HL = _require.HL,\n RI = _require.RI,\n SA = _require.SA,\n XX = _require.XX;\nvar _require2 = __webpack_require__(98282),\n DI_BRK = _require2.DI_BRK,\n IN_BRK = _require2.IN_BRK,\n CI_BRK = _require2.CI_BRK,\n CP_BRK = _require2.CP_BRK,\n PR_BRK = _require2.PR_BRK,\n pairTable = _require2.pairTable;\nvar data = base64.toByteArray(\"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\");\nvar classTrie = new UnicodeTrie(data);\nvar mapClass = function mapClass(c) {\n switch (c) {\n case AI:\n return AL;\n case SA:\n case SG:\n case XX:\n return AL;\n case CJ:\n return NS;\n default:\n return c;\n }\n};\nvar mapFirst = function mapFirst(c) {\n switch (c) {\n case LF:\n case NL:\n return BK;\n case SP:\n return WJ;\n default:\n return c;\n }\n};\nvar Break = function Break(position, required) {\n if (required === void 0) {\n required = false;\n }\n this.position = position;\n this.required = required;\n};\nvar LineBreaker = /*#__PURE__*/function () {\n function LineBreaker(string) {\n this.string = string;\n this.pos = 0;\n this.lastPos = 0;\n this.curClass = null;\n this.nextClass = null;\n this.LB8a = false;\n this.LB21a = false;\n this.LB30a = 0;\n }\n var _proto = LineBreaker.prototype;\n _proto.nextCodePoint = function nextCodePoint() {\n var code = this.string.charCodeAt(this.pos++);\n var next = this.string.charCodeAt(this.pos);\n\n // If a surrogate pair\n if (0xd800 <= code && code <= 0xdbff && 0xdc00 <= next && next <= 0xdfff) {\n this.pos++;\n return (code - 0xd800) * 0x400 + (next - 0xdc00) + 0x10000;\n }\n return code;\n };\n _proto.nextCharClass = function nextCharClass() {\n return mapClass(classTrie.get(this.nextCodePoint()));\n };\n _proto.getSimpleBreak = function getSimpleBreak() {\n // handle classes not handled by the pair table\n switch (this.nextClass) {\n case SP:\n return false;\n case BK:\n case LF:\n case NL:\n this.curClass = BK;\n return false;\n case CR:\n this.curClass = CR;\n return false;\n }\n return null;\n };\n _proto.getPairTableBreak = function getPairTableBreak(lastClass) {\n // if not handled already, use the pair table\n var shouldBreak = false;\n switch (pairTable[this.curClass][this.nextClass]) {\n case DI_BRK:\n // Direct break\n shouldBreak = true;\n break;\n case IN_BRK:\n // possible indirect break\n shouldBreak = lastClass === SP;\n break;\n case CI_BRK:\n shouldBreak = lastClass === SP;\n if (!shouldBreak) {\n shouldBreak = false;\n return shouldBreak;\n }\n break;\n case CP_BRK:\n // prohibited for combining marks\n if (lastClass !== SP) {\n return shouldBreak;\n }\n break;\n case PR_BRK:\n break;\n }\n if (this.LB8a) {\n shouldBreak = false;\n }\n\n // Rule LB21a\n if (this.LB21a && (this.curClass === HY || this.curClass === BA)) {\n shouldBreak = false;\n this.LB21a = false;\n } else {\n this.LB21a = this.curClass === HL;\n }\n\n // Rule LB30a\n if (this.curClass === RI) {\n this.LB30a++;\n if (this.LB30a == 2 && this.nextClass === RI) {\n shouldBreak = true;\n this.LB30a = 0;\n }\n } else {\n this.LB30a = 0;\n }\n this.curClass = this.nextClass;\n return shouldBreak;\n };\n _proto.nextBreak = function nextBreak() {\n // get the first char if we're at the beginning of the string\n if (this.curClass == null) {\n var firstClass = this.nextCharClass();\n this.curClass = mapFirst(firstClass);\n this.nextClass = firstClass;\n this.LB8a = firstClass === ZWJ;\n this.LB30a = 0;\n }\n while (this.pos < this.string.length) {\n this.lastPos = this.pos;\n var lastClass = this.nextClass;\n this.nextClass = this.nextCharClass();\n\n // explicit newline\n if (this.curClass === BK || this.curClass === CR && this.nextClass !== LF) {\n this.curClass = mapFirst(mapClass(this.nextClass));\n return new Break(this.lastPos, true);\n }\n var shouldBreak = this.getSimpleBreak();\n if (shouldBreak === null) {\n shouldBreak = this.getPairTableBreak(lastClass);\n }\n\n // Rule LB8a\n this.LB8a = this.nextClass === ZWJ;\n if (shouldBreak) {\n return new Break(this.lastPos);\n }\n }\n if (this.lastPos < this.string.length) {\n this.lastPos = this.string.length;\n return new Break(this.string.length);\n }\n return null;\n };\n return LineBreaker;\n}();\nmodule.exports = LineBreaker;\n\n/***/ }),\n\n/***/ 50477:\n/***/ (function() {\n\n/* (ignored) */\n\n/***/ }),\n\n/***/ 16403:\n/***/ (function() {\n\n/* (ignored) */\n\n/***/ }),\n\n/***/ 63779:\n/***/ (function() {\n\n/* (ignored) */\n\n/***/ }),\n\n/***/ 77199:\n/***/ (function() {\n\n/* (ignored) */\n\n/***/ }),\n\n/***/ 10821:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar possibleNames = __webpack_require__(10884);\n\nvar g = typeof globalThis === 'undefined' ? __webpack_require__.g : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n\n\n/***/ }),\n\n/***/ 24766:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar $c5L0i$base64js = __webpack_require__(32504);\nvar $c5L0i$unicodetrie = __webpack_require__(41209);\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true, configurable: true});\n}\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"getCategory\", () => $43d7963e56408b24$export$410364bbb673ddbc);\n$parcel$export(module.exports, \"getCombiningClass\", () => $43d7963e56408b24$export$c03b919c6651ed55);\n$parcel$export(module.exports, \"getScript\", () => $43d7963e56408b24$export$941569448d136665);\n$parcel$export(module.exports, \"getEastAsianWidth\", () => $43d7963e56408b24$export$92f6187db8ca6d26);\n$parcel$export(module.exports, \"getNumericValue\", () => $43d7963e56408b24$export$7d1258ebb7625a0d);\n$parcel$export(module.exports, \"isAlphabetic\", () => $43d7963e56408b24$export$52c8ea63abd07594);\n$parcel$export(module.exports, \"isDigit\", () => $43d7963e56408b24$export$727d9dbc4fbb948f);\n$parcel$export(module.exports, \"isPunctuation\", () => $43d7963e56408b24$export$a5b49f4dc6a07d2c);\n$parcel$export(module.exports, \"isLowerCase\", () => $43d7963e56408b24$export$7b6804e8df61fcf5);\n$parcel$export(module.exports, \"isUpperCase\", () => $43d7963e56408b24$export$aebd617640818cda);\n$parcel$export(module.exports, \"isTitleCase\", () => $43d7963e56408b24$export$de8b4ee23b2cf823);\n$parcel$export(module.exports, \"isWhiteSpace\", () => $43d7963e56408b24$export$3c52dd84024ae72c);\n$parcel$export(module.exports, \"isBaseForm\", () => $43d7963e56408b24$export$a11bdcffe109e74b);\n$parcel$export(module.exports, \"isMark\", () => $43d7963e56408b24$export$e33ad6871e762338);\n$parcel$export(module.exports, \"default\", () => $43d7963e56408b24$export$2e2bcd8739ae039);\n\n\nvar $29668e65f2091c2c$exports = {};\n$29668e65f2091c2c$exports = JSON.parse('{\"categories\":[\"Cc\",\"Zs\",\"Po\",\"Sc\",\"Ps\",\"Pe\",\"Sm\",\"Pd\",\"Nd\",\"Lu\",\"Sk\",\"Pc\",\"Ll\",\"So\",\"Lo\",\"Pi\",\"Cf\",\"No\",\"Pf\",\"Lt\",\"Lm\",\"Mn\",\"Me\",\"Mc\",\"Nl\",\"Zl\",\"Zp\",\"Cs\",\"Co\"],\"combiningClasses\":[\"Not_Reordered\",\"Above\",\"Above_Right\",\"Below\",\"Attached_Above_Right\",\"Attached_Below\",\"Overlay\",\"Iota_Subscript\",\"Double_Below\",\"Double_Above\",\"Below_Right\",\"Above_Left\",\"CCC10\",\"CCC11\",\"CCC12\",\"CCC13\",\"CCC14\",\"CCC15\",\"CCC16\",\"CCC17\",\"CCC18\",\"CCC19\",\"CCC20\",\"CCC21\",\"CCC22\",\"CCC23\",\"CCC24\",\"CCC25\",\"CCC30\",\"CCC31\",\"CCC32\",\"CCC27\",\"CCC28\",\"CCC29\",\"CCC33\",\"CCC34\",\"CCC35\",\"CCC36\",\"Nukta\",\"Virama\",\"CCC84\",\"CCC91\",\"CCC103\",\"CCC107\",\"CCC118\",\"CCC122\",\"CCC129\",\"CCC130\",\"CCC132\",\"Attached_Above\",\"Below_Left\",\"Left\",\"Kana_Voicing\",\"CCC26\",\"Right\"],\"scripts\":[\"Common\",\"Latin\",\"Bopomofo\",\"Inherited\",\"Greek\",\"Coptic\",\"Cyrillic\",\"Armenian\",\"Hebrew\",\"Arabic\",\"Syriac\",\"Thaana\",\"Nko\",\"Samaritan\",\"Mandaic\",\"Devanagari\",\"Bengali\",\"Gurmukhi\",\"Gujarati\",\"Oriya\",\"Tamil\",\"Telugu\",\"Kannada\",\"Malayalam\",\"Sinhala\",\"Thai\",\"Lao\",\"Tibetan\",\"Myanmar\",\"Georgian\",\"Hangul\",\"Ethiopic\",\"Cherokee\",\"Canadian_Aboriginal\",\"Ogham\",\"Runic\",\"Tagalog\",\"Hanunoo\",\"Buhid\",\"Tagbanwa\",\"Khmer\",\"Mongolian\",\"Limbu\",\"Tai_Le\",\"New_Tai_Lue\",\"Buginese\",\"Tai_Tham\",\"Balinese\",\"Sundanese\",\"Batak\",\"Lepcha\",\"Ol_Chiki\",\"Braille\",\"Glagolitic\",\"Tifinagh\",\"Han\",\"Hiragana\",\"Katakana\",\"Yi\",\"Lisu\",\"Vai\",\"Bamum\",\"Syloti_Nagri\",\"Phags_Pa\",\"Saurashtra\",\"Kayah_Li\",\"Rejang\",\"Javanese\",\"Cham\",\"Tai_Viet\",\"Meetei_Mayek\",\"null\",\"Linear_B\",\"Lycian\",\"Carian\",\"Old_Italic\",\"Gothic\",\"Old_Permic\",\"Ugaritic\",\"Old_Persian\",\"Deseret\",\"Shavian\",\"Osmanya\",\"Osage\",\"Elbasan\",\"Caucasian_Albanian\",\"Linear_A\",\"Cypriot\",\"Imperial_Aramaic\",\"Palmyrene\",\"Nabataean\",\"Hatran\",\"Phoenician\",\"Lydian\",\"Meroitic_Hieroglyphs\",\"Meroitic_Cursive\",\"Kharoshthi\",\"Old_South_Arabian\",\"Old_North_Arabian\",\"Manichaean\",\"Avestan\",\"Inscriptional_Parthian\",\"Inscriptional_Pahlavi\",\"Psalter_Pahlavi\",\"Old_Turkic\",\"Old_Hungarian\",\"Hanifi_Rohingya\",\"Old_Sogdian\",\"Sogdian\",\"Elymaic\",\"Brahmi\",\"Kaithi\",\"Sora_Sompeng\",\"Chakma\",\"Mahajani\",\"Sharada\",\"Khojki\",\"Multani\",\"Khudawadi\",\"Grantha\",\"Newa\",\"Tirhuta\",\"Siddham\",\"Modi\",\"Takri\",\"Ahom\",\"Dogra\",\"Warang_Citi\",\"Nandinagari\",\"Zanabazar_Square\",\"Soyombo\",\"Pau_Cin_Hau\",\"Bhaiksuki\",\"Marchen\",\"Masaram_Gondi\",\"Gunjala_Gondi\",\"Makasar\",\"Cuneiform\",\"Egyptian_Hieroglyphs\",\"Anatolian_Hieroglyphs\",\"Mro\",\"Bassa_Vah\",\"Pahawh_Hmong\",\"Medefaidrin\",\"Miao\",\"Tangut\",\"Nushu\",\"Duployan\",\"SignWriting\",\"Nyiakeng_Puachue_Hmong\",\"Wancho\",\"Mende_Kikakui\",\"Adlam\"],\"eaw\":[\"N\",\"Na\",\"A\",\"W\",\"H\",\"F\"]}');\n\n\nconst $43d7963e56408b24$var$trie = new (0, ($parcel$interopDefault($c5L0i$unicodetrie)))((0, ($parcel$interopDefault($c5L0i$base64js))).toByteArray(\"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\"));\nconst $43d7963e56408b24$var$log2 = Math.log2 || ((n)=>Math.log(n) / Math.LN2);\nconst $43d7963e56408b24$var$bits = (n)=>$43d7963e56408b24$var$log2(n) + 1 | 0;\n// compute the number of bits stored for each field\nconst $43d7963e56408b24$var$CATEGORY_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).categories.length - 1);\nconst $43d7963e56408b24$var$COMBINING_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).combiningClasses.length - 1);\nconst $43d7963e56408b24$var$SCRIPT_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).scripts.length - 1);\nconst $43d7963e56408b24$var$EAW_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).eaw.length - 1);\nconst $43d7963e56408b24$var$NUMBER_BITS = 10;\n// compute shift and mask values for each field\nconst $43d7963e56408b24$var$CATEGORY_SHIFT = $43d7963e56408b24$var$COMBINING_BITS + $43d7963e56408b24$var$SCRIPT_BITS + $43d7963e56408b24$var$EAW_BITS + $43d7963e56408b24$var$NUMBER_BITS;\nconst $43d7963e56408b24$var$COMBINING_SHIFT = $43d7963e56408b24$var$SCRIPT_BITS + $43d7963e56408b24$var$EAW_BITS + $43d7963e56408b24$var$NUMBER_BITS;\nconst $43d7963e56408b24$var$SCRIPT_SHIFT = $43d7963e56408b24$var$EAW_BITS + $43d7963e56408b24$var$NUMBER_BITS;\nconst $43d7963e56408b24$var$EAW_SHIFT = $43d7963e56408b24$var$NUMBER_BITS;\nconst $43d7963e56408b24$var$CATEGORY_MASK = (1 << $43d7963e56408b24$var$CATEGORY_BITS) - 1;\nconst $43d7963e56408b24$var$COMBINING_MASK = (1 << $43d7963e56408b24$var$COMBINING_BITS) - 1;\nconst $43d7963e56408b24$var$SCRIPT_MASK = (1 << $43d7963e56408b24$var$SCRIPT_BITS) - 1;\nconst $43d7963e56408b24$var$EAW_MASK = (1 << $43d7963e56408b24$var$EAW_BITS) - 1;\nconst $43d7963e56408b24$var$NUMBER_MASK = (1 << $43d7963e56408b24$var$NUMBER_BITS) - 1;\nfunction $43d7963e56408b24$export$410364bbb673ddbc(codePoint) {\n const val = $43d7963e56408b24$var$trie.get(codePoint);\n return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).categories[val >> $43d7963e56408b24$var$CATEGORY_SHIFT & $43d7963e56408b24$var$CATEGORY_MASK];\n}\nfunction $43d7963e56408b24$export$c03b919c6651ed55(codePoint) {\n const val = $43d7963e56408b24$var$trie.get(codePoint);\n return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).combiningClasses[val >> $43d7963e56408b24$var$COMBINING_SHIFT & $43d7963e56408b24$var$COMBINING_MASK];\n}\nfunction $43d7963e56408b24$export$941569448d136665(codePoint) {\n const val = $43d7963e56408b24$var$trie.get(codePoint);\n return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).scripts[val >> $43d7963e56408b24$var$SCRIPT_SHIFT & $43d7963e56408b24$var$SCRIPT_MASK];\n}\nfunction $43d7963e56408b24$export$92f6187db8ca6d26(codePoint) {\n const val = $43d7963e56408b24$var$trie.get(codePoint);\n return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).eaw[val >> $43d7963e56408b24$var$EAW_SHIFT & $43d7963e56408b24$var$EAW_MASK];\n}\nfunction $43d7963e56408b24$export$7d1258ebb7625a0d(codePoint) {\n let val = $43d7963e56408b24$var$trie.get(codePoint);\n let num = val & $43d7963e56408b24$var$NUMBER_MASK;\n if (num === 0) return null;\n else if (num <= 50) return num - 1;\n else if (num < 0x1e0) {\n const numerator = (num >> 4) - 12;\n const denominator = (num & 0xf) + 1;\n return numerator / denominator;\n } else if (num < 0x300) {\n val = (num >> 5) - 14;\n let exp = (num & 0x1f) + 2;\n while(exp > 0){\n val *= 10;\n exp--;\n }\n return val;\n } else {\n val = (num >> 2) - 0xbf;\n let exp = (num & 3) + 1;\n while(exp > 0){\n val *= 60;\n exp--;\n }\n return val;\n }\n}\nfunction $43d7963e56408b24$export$52c8ea63abd07594(codePoint) {\n const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);\n return category === \"Lu\" || category === \"Ll\" || category === \"Lt\" || category === \"Lm\" || category === \"Lo\" || category === \"Nl\";\n}\nfunction $43d7963e56408b24$export$727d9dbc4fbb948f(codePoint) {\n return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === \"Nd\";\n}\nfunction $43d7963e56408b24$export$a5b49f4dc6a07d2c(codePoint) {\n const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);\n return category === \"Pc\" || category === \"Pd\" || category === \"Pe\" || category === \"Pf\" || category === \"Pi\" || category === \"Po\" || category === \"Ps\";\n}\nfunction $43d7963e56408b24$export$7b6804e8df61fcf5(codePoint) {\n return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === \"Ll\";\n}\nfunction $43d7963e56408b24$export$aebd617640818cda(codePoint) {\n return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === \"Lu\";\n}\nfunction $43d7963e56408b24$export$de8b4ee23b2cf823(codePoint) {\n return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === \"Lt\";\n}\nfunction $43d7963e56408b24$export$3c52dd84024ae72c(codePoint) {\n const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);\n return category === \"Zs\" || category === \"Zl\" || category === \"Zp\";\n}\nfunction $43d7963e56408b24$export$a11bdcffe109e74b(codePoint) {\n const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);\n return category === \"Nd\" || category === \"No\" || category === \"Nl\" || category === \"Lu\" || category === \"Ll\" || category === \"Lt\" || category === \"Lm\" || category === \"Lo\" || category === \"Me\" || category === \"Mc\";\n}\nfunction $43d7963e56408b24$export$e33ad6871e762338(codePoint) {\n const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);\n return category === \"Mn\" || category === \"Me\" || category === \"Mc\";\n}\nvar // Backwards compatibility.\n$43d7963e56408b24$export$2e2bcd8739ae039 = {\n getCategory: $43d7963e56408b24$export$410364bbb673ddbc,\n getCombiningClass: $43d7963e56408b24$export$c03b919c6651ed55,\n getScript: $43d7963e56408b24$export$941569448d136665,\n getEastAsianWidth: $43d7963e56408b24$export$92f6187db8ca6d26,\n getNumericValue: $43d7963e56408b24$export$7d1258ebb7625a0d,\n isAlphabetic: $43d7963e56408b24$export$52c8ea63abd07594,\n isDigit: $43d7963e56408b24$export$727d9dbc4fbb948f,\n isPunctuation: $43d7963e56408b24$export$a5b49f4dc6a07d2c,\n isLowerCase: $43d7963e56408b24$export$7b6804e8df61fcf5,\n isUpperCase: $43d7963e56408b24$export$aebd617640818cda,\n isTitleCase: $43d7963e56408b24$export$de8b4ee23b2cf823,\n isWhiteSpace: $43d7963e56408b24$export$3c52dd84024ae72c,\n isBaseForm: $43d7963e56408b24$export$a11bdcffe109e74b,\n isMark: $43d7963e56408b24$export$e33ad6871e762338\n};\n\n\n\n\n/***/ }),\n\n/***/ 43267:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = /*#__PURE__*/JSON.parse('[[\"8740\",\"䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻\"],[\"8767\",\"綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬\"],[\"87a1\",\"𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋\"],[\"8840\",\"㇀\",4,\"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ\"],[\"88a1\",\"ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛\"],[\"8940\",\"𪎩𡅅\"],[\"8943\",\"攊\"],[\"8946\",\"丽滝鵎釟\"],[\"894c\",\"𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮\"],[\"89a1\",\"琑糼緍楆竉刧\"],[\"89ab\",\"醌碸酞肼\"],[\"89b0\",\"贋胶𠧧\"],[\"89b5\",\"肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁\"],[\"89c1\",\"溚舾甙\"],[\"89c5\",\"䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅\"],[\"8a40\",\"𧶄唥\"],[\"8a43\",\"𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓\"],[\"8a64\",\"𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕\"],[\"8a76\",\"䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯\"],[\"8aa1\",\"𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱\"],[\"8aac\",\"䠋𠆩㿺塳𢶍\"],[\"8ab2\",\"𤗈𠓼𦂗𠽌𠶖啹䂻䎺\"],[\"8abb\",\"䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃\"],[\"8ac9\",\"𪘁𠸉𢫏𢳉\"],[\"8ace\",\"𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻\"],[\"8adf\",\"𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌\"],[\"8af6\",\"𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭\"],[\"8b40\",\"𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹\"],[\"8b55\",\"𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑\"],[\"8ba1\",\"𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁\"],[\"8bde\",\"𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢\"],[\"8c40\",\"倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋\"],[\"8ca1\",\"𣏹椙橃𣱣泿\"],[\"8ca7\",\"爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚\"],[\"8cc9\",\"顨杫䉶圽\"],[\"8cce\",\"藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶\"],[\"8ce6\",\"峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻\"],[\"8d40\",\"𠮟\"],[\"8d42\",\"𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱\"],[\"8da1\",\"㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘\"],[\"8e40\",\"𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎\"],[\"8ea1\",\"繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛\"],[\"8f40\",\"蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖\"],[\"8fa1\",\"𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起\"],[\"9040\",\"趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛\"],[\"90a1\",\"𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜\"],[\"9140\",\"𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈\"],[\"91a1\",\"鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨\"],[\"9240\",\"𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘\"],[\"92a1\",\"働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃\"],[\"9340\",\"媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍\"],[\"93a1\",\"摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋\"],[\"9440\",\"銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻\"],[\"94a1\",\"㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡\"],[\"9540\",\"𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂\"],[\"95a1\",\"衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰\"],[\"9640\",\"桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸\"],[\"96a1\",\"𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉\"],[\"9740\",\"愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫\"],[\"97a1\",\"𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎\"],[\"9840\",\"𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦\"],[\"98a1\",\"咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃\"],[\"9940\",\"䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚\"],[\"99a1\",\"䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿\"],[\"9a40\",\"鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺\"],[\"9aa1\",\"黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪\"],[\"9b40\",\"𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌\"],[\"9b62\",\"𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎\"],[\"9ba1\",\"椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊\"],[\"9c40\",\"嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶\"],[\"9ca1\",\"㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏\"],[\"9d40\",\"𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁\"],[\"9da1\",\"辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢\"],[\"9e40\",\"𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺\"],[\"9ea1\",\"鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭\"],[\"9ead\",\"𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹\"],[\"9ec5\",\"㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲\"],[\"9ef5\",\"噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼\"],[\"9f40\",\"籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱\"],[\"9f4f\",\"凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰\"],[\"9fa1\",\"椬叚鰊鴂䰻陁榀傦畆𡝭駚剳\"],[\"9fae\",\"酙隁酜\"],[\"9fb2\",\"酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽\"],[\"9fc1\",\"𤤙盖鮝个𠳔莾衂\"],[\"9fc9\",\"届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳\"],[\"9fdb\",\"歒酼龥鮗頮颴骺麨麄煺笔\"],[\"9fe7\",\"毺蠘罸\"],[\"9feb\",\"嘠𪙊蹷齓\"],[\"9ff0\",\"跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇\"],[\"a040\",\"𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷\"],[\"a055\",\"𡠻𦸅\"],[\"a058\",\"詾𢔛\"],[\"a05b\",\"惽癧髗鵄鍮鮏蟵\"],[\"a063\",\"蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽\"],[\"a073\",\"坟慯抦戹拎㩜懢厪𣏵捤栂㗒\"],[\"a0a1\",\"嵗𨯂迚𨸹\"],[\"a0a6\",\"僙𡵆礆匲阸𠼻䁥\"],[\"a0ae\",\"矾\"],[\"a0b0\",\"糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦\"],[\"a0d4\",\"覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷\"],[\"a0e2\",\"罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫\"],[\"a3c0\",\"␀\",31,\"␡\"],[\"c6a1\",\"①\",9,\"⑴\",9,\"ⅰ\",9,\"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ\",23],[\"c740\",\"す\",58,\"ァアィイ\"],[\"c7a1\",\"ゥ\",81,\"А\",5,\"ЁЖ\",4],[\"c840\",\"Л\",26,\"ёж\",25,\"⇧↸↹㇏𠃌乚𠂊刂䒑\"],[\"c8a1\",\"龰冈龱𧘇\"],[\"c8cd\",\"¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣\"],[\"c8f5\",\"ʃɐɛɔɵœøŋʊɪ\"],[\"f9fe\",\"■\"],[\"fa40\",\"𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸\"],[\"faa1\",\"鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍\"],[\"fb40\",\"𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙\"],[\"fba1\",\"𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂\"],[\"fc40\",\"廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷\"],[\"fca1\",\"𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝\"],[\"fd40\",\"𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀\"],[\"fda1\",\"𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎\"],[\"fe40\",\"鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌\"],[\"fea1\",\"𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔\"]]');\n\n/***/ }),\n\n/***/ 74488:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = /*#__PURE__*/JSON.parse('[[\"0\",\"\\\\u0000\",127,\"€\"],[\"8140\",\"丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪\",5,\"乲乴\",9,\"乿\",6,\"亇亊\"],[\"8180\",\"亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂\",6,\"伋伌伒\",4,\"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾\",4,\"佄佅佇\",5,\"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢\"],[\"8240\",\"侤侫侭侰\",4,\"侶\",8,\"俀俁係俆俇俈俉俋俌俍俒\",4,\"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿\",11],[\"8280\",\"個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯\",10,\"倻倽倿偀偁偂偄偅偆偉偊偋偍偐\",4,\"偖偗偘偙偛偝\",7,\"偦\",5,\"偭\",8,\"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎\",20,\"傤傦傪傫傭\",4,\"傳\",6,\"傼\"],[\"8340\",\"傽\",17,\"僐\",5,\"僗僘僙僛\",10,\"僨僩僪僫僯僰僱僲僴僶\",4,\"僼\",9,\"儈\"],[\"8380\",\"儉儊儌\",5,\"儓\",13,\"儢\",28,\"兂兇兊兌兎兏児兒兓兗兘兙兛兝\",4,\"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦\",4,\"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒\",5],[\"8440\",\"凘凙凚凜凞凟凢凣凥\",5,\"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄\",5,\"剋剎剏剒剓剕剗剘\"],[\"8480\",\"剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳\",9,\"剾劀劃\",4,\"劉\",6,\"劑劒劔\",6,\"劜劤劥劦劧劮劯劰労\",9,\"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務\",5,\"勠勡勢勣勥\",10,\"勱\",7,\"勻勼勽匁匂匃匄匇匉匊匋匌匎\"],[\"8540\",\"匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯\",9,\"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏\"],[\"8580\",\"厐\",4,\"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯\",6,\"厷厸厹厺厼厽厾叀參\",4,\"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝\",4,\"呣呥呧呩\",7,\"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡\"],[\"8640\",\"咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠\",4,\"哫哬哯哰哱哴\",5,\"哻哾唀唂唃唄唅唈唊\",4,\"唒唓唕\",5,\"唜唝唞唟唡唥唦\"],[\"8680\",\"唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋\",4,\"啑啒啓啔啗\",4,\"啝啞啟啠啢啣啨啩啫啯\",5,\"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠\",6,\"喨\",8,\"喲喴営喸喺喼喿\",4,\"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗\",4,\"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸\",4,\"嗿嘂嘃嘄嘅\"],[\"8740\",\"嘆嘇嘊嘋嘍嘐\",7,\"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀\",11,\"噏\",4,\"噕噖噚噛噝\",4],[\"8780\",\"噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽\",7,\"嚇\",6,\"嚐嚑嚒嚔\",14,\"嚤\",10,\"嚰\",6,\"嚸嚹嚺嚻嚽\",12,\"囋\",8,\"囕囖囘囙囜団囥\",5,\"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國\",6],[\"8840\",\"園\",9,\"圝圞圠圡圢圤圥圦圧圫圱圲圴\",4,\"圼圽圿坁坃坄坅坆坈坉坋坒\",4,\"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀\"],[\"8880\",\"垁垇垈垉垊垍\",4,\"垔\",6,\"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹\",8,\"埄\",6,\"埌埍埐埑埓埖埗埛埜埞埡埢埣埥\",7,\"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥\",4,\"堫\",4,\"報堲堳場堶\",7],[\"8940\",\"堾\",5,\"塅\",6,\"塎塏塐塒塓塕塖塗塙\",4,\"塟\",5,\"塦\",4,\"塭\",16,\"塿墂墄墆墇墈墊墋墌\"],[\"8980\",\"墍\",4,\"墔\",4,\"墛墜墝墠\",7,\"墪\",17,\"墽墾墿壀壂壃壄壆\",10,\"壒壓壔壖\",13,\"壥\",5,\"壭壯壱売壴壵壷壸壺\",7,\"夃夅夆夈\",4,\"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻\"],[\"8a40\",\"夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛\",4,\"奡奣奤奦\",12,\"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦\"],[\"8a80\",\"妧妬妭妰妱妳\",5,\"妺妼妽妿\",6,\"姇姈姉姌姍姎姏姕姖姙姛姞\",4,\"姤姦姧姩姪姫姭\",11,\"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪\",6,\"娳娵娷\",4,\"娽娾娿婁\",4,\"婇婈婋\",9,\"婖婗婘婙婛\",5],[\"8b40\",\"婡婣婤婥婦婨婩婫\",8,\"婸婹婻婼婽婾媀\",17,\"媓\",6,\"媜\",13,\"媫媬\"],[\"8b80\",\"媭\",4,\"媴媶媷媹\",4,\"媿嫀嫃\",5,\"嫊嫋嫍\",4,\"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬\",4,\"嫲\",22,\"嬊\",11,\"嬘\",25,\"嬳嬵嬶嬸\",7,\"孁\",6],[\"8c40\",\"孈\",7,\"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏\"],[\"8c80\",\"寑寔\",8,\"寠寢寣實寧審\",4,\"寯寱\",6,\"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧\",6,\"屰屲\",6,\"屻屼屽屾岀岃\",4,\"岉岊岋岎岏岒岓岕岝\",4,\"岤\",4],[\"8d40\",\"岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅\",5,\"峌\",5,\"峓\",5,\"峚\",6,\"峢峣峧峩峫峬峮峯峱\",9,\"峼\",4],[\"8d80\",\"崁崄崅崈\",5,\"崏\",4,\"崕崗崘崙崚崜崝崟\",4,\"崥崨崪崫崬崯\",4,\"崵\",7,\"崿\",7,\"嵈嵉嵍\",10,\"嵙嵚嵜嵞\",10,\"嵪嵭嵮嵰嵱嵲嵳嵵\",12,\"嶃\",21,\"嶚嶛嶜嶞嶟嶠\"],[\"8e40\",\"嶡\",21,\"嶸\",12,\"巆\",6,\"巎\",12,\"巜巟巠巣巤巪巬巭\"],[\"8e80\",\"巰巵巶巸\",4,\"巿帀帄帇帉帊帋帍帎帒帓帗帞\",7,\"帨\",4,\"帯帰帲\",4,\"帹帺帾帿幀幁幃幆\",5,\"幍\",6,\"幖\",4,\"幜幝幟幠幣\",14,\"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨\",4,\"庮\",4,\"庴庺庻庼庽庿\",6],[\"8f40\",\"廆廇廈廋\",5,\"廔廕廗廘廙廚廜\",11,\"廩廫\",8,\"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤\"],[\"8f80\",\"弨弫弬弮弰弲\",6,\"弻弽弾弿彁\",14,\"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢\",5,\"復徫徬徯\",5,\"徶徸徹徺徻徾\",4,\"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇\"],[\"9040\",\"怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰\",4,\"怶\",4,\"怽怾恀恄\",6,\"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀\"],[\"9080\",\"悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽\",7,\"惇惈惉惌\",4,\"惒惓惔惖惗惙惛惞惡\",4,\"惪惱惲惵惷惸惻\",4,\"愂愃愄愅愇愊愋愌愐\",4,\"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬\",18,\"慀\",6],[\"9140\",\"慇慉態慍慏慐慒慓慔慖\",6,\"慞慟慠慡慣慤慥慦慩\",6,\"慱慲慳慴慶慸\",18,\"憌憍憏\",4,\"憕\"],[\"9180\",\"憖\",6,\"憞\",8,\"憪憫憭\",9,\"憸\",5,\"憿懀懁懃\",4,\"應懌\",4,\"懓懕\",16,\"懧\",13,\"懶\",8,\"戀\",5,\"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸\",4,\"扂扄扅扆扊\"],[\"9240\",\"扏扐払扖扗扙扚扜\",6,\"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋\",5,\"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁\"],[\"9280\",\"拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳\",5,\"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖\",7,\"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙\",6,\"採掤掦掫掯掱掲掵掶掹掻掽掿揀\"],[\"9340\",\"揁揂揃揅揇揈揊揋揌揑揓揔揕揗\",6,\"揟揢揤\",4,\"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆\",4,\"損搎搑搒搕\",5,\"搝搟搢搣搤\"],[\"9380\",\"搥搧搨搩搫搮\",5,\"搵\",4,\"搻搼搾摀摂摃摉摋\",6,\"摓摕摖摗摙\",4,\"摟\",7,\"摨摪摫摬摮\",9,\"摻\",6,\"撃撆撈\",8,\"撓撔撗撘撚撛撜撝撟\",4,\"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆\",6,\"擏擑擓擔擕擖擙據\"],[\"9440\",\"擛擜擝擟擠擡擣擥擧\",24,\"攁\",7,\"攊\",7,\"攓\",4,\"攙\",8],[\"9480\",\"攢攣攤攦\",4,\"攬攭攰攱攲攳攷攺攼攽敀\",4,\"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數\",14,\"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱\",7,\"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘\",7,\"旡旣旤旪旫\"],[\"9540\",\"旲旳旴旵旸旹旻\",4,\"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷\",4,\"昽昿晀時晄\",6,\"晍晎晐晑晘\"],[\"9580\",\"晙晛晜晝晞晠晢晣晥晧晩\",4,\"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘\",4,\"暞\",8,\"暩\",4,\"暯\",4,\"暵暶暷暸暺暻暼暽暿\",25,\"曚曞\",7,\"曧曨曪\",5,\"曱曵曶書曺曻曽朁朂會\"],[\"9640\",\"朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠\",5,\"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗\",4,\"杝杢杣杤杦杧杫杬杮東杴杶\"],[\"9680\",\"杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹\",7,\"柂柅\",9,\"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵\",7,\"柾栁栂栃栄栆栍栐栒栔栕栘\",4,\"栞栟栠栢\",6,\"栫\",6,\"栴栵栶栺栻栿桇桋桍桏桒桖\",5],[\"9740\",\"桜桝桞桟桪桬\",7,\"桵桸\",8,\"梂梄梇\",7,\"梐梑梒梔梕梖梘\",9,\"梣梤梥梩梪梫梬梮梱梲梴梶梷梸\"],[\"9780\",\"梹\",6,\"棁棃\",5,\"棊棌棎棏棐棑棓棔棖棗棙棛\",4,\"棡棢棤\",9,\"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆\",4,\"椌椏椑椓\",11,\"椡椢椣椥\",7,\"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃\",16,\"楕楖楘楙楛楜楟\"],[\"9840\",\"楡楢楤楥楧楨楩楪楬業楯楰楲\",4,\"楺楻楽楾楿榁榃榅榊榋榌榎\",5,\"榖榗榙榚榝\",9,\"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽\"],[\"9880\",\"榾榿槀槂\",7,\"構槍槏槑槒槓槕\",5,\"槜槝槞槡\",11,\"槮槯槰槱槳\",9,\"槾樀\",9,\"樋\",11,\"標\",5,\"樠樢\",5,\"権樫樬樭樮樰樲樳樴樶\",6,\"樿\",4,\"橅橆橈\",7,\"橑\",6,\"橚\"],[\"9940\",\"橜\",4,\"橢橣橤橦\",10,\"橲\",6,\"橺橻橽橾橿檁檂檃檅\",8,\"檏檒\",4,\"檘\",7,\"檡\",5],[\"9980\",\"檧檨檪檭\",114,\"欥欦欨\",6],[\"9a40\",\"欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍\",11,\"歚\",7,\"歨歩歫\",13,\"歺歽歾歿殀殅殈\"],[\"9a80\",\"殌殎殏殐殑殔殕殗殘殙殜\",4,\"殢\",7,\"殫\",7,\"殶殸\",6,\"毀毃毄毆\",4,\"毌毎毐毑毘毚毜\",4,\"毢\",7,\"毬毭毮毰毱毲毴毶毷毸毺毻毼毾\",6,\"氈\",4,\"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋\",4,\"汑汒汓汖汘\"],[\"9b40\",\"汙汚汢汣汥汦汧汫\",4,\"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘\"],[\"9b80\",\"泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟\",5,\"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽\",4,\"涃涄涆涇涊涋涍涏涐涒涖\",4,\"涜涢涥涬涭涰涱涳涴涶涷涹\",5,\"淁淂淃淈淉淊\"],[\"9c40\",\"淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽\",7,\"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵\"],[\"9c80\",\"渶渷渹渻\",7,\"湅\",7,\"湏湐湑湒湕湗湙湚湜湝湞湠\",10,\"湬湭湯\",14,\"満溁溂溄溇溈溊\",4,\"溑\",6,\"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪\",5],[\"9d40\",\"滰滱滲滳滵滶滷滸滺\",7,\"漃漄漅漇漈漊\",4,\"漐漑漒漖\",9,\"漡漢漣漥漦漧漨漬漮漰漲漴漵漷\",6,\"漿潀潁潂\"],[\"9d80\",\"潃潄潅潈潉潊潌潎\",9,\"潙潚潛潝潟潠潡潣潤潥潧\",5,\"潯潰潱潳潵潶潷潹潻潽\",6,\"澅澆澇澊澋澏\",12,\"澝澞澟澠澢\",4,\"澨\",10,\"澴澵澷澸澺\",5,\"濁濃\",5,\"濊\",6,\"濓\",10,\"濟濢濣濤濥\"],[\"9e40\",\"濦\",7,\"濰\",32,\"瀒\",7,\"瀜\",6,\"瀤\",6],[\"9e80\",\"瀫\",9,\"瀶瀷瀸瀺\",17,\"灍灎灐\",13,\"灟\",11,\"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞\",12,\"炰炲炴炵炶為炾炿烄烅烆烇烉烋\",12,\"烚\"],[\"9f40\",\"烜烝烞烠烡烢烣烥烪烮烰\",6,\"烸烺烻烼烾\",10,\"焋\",4,\"焑焒焔焗焛\",10,\"焧\",7,\"焲焳焴\"],[\"9f80\",\"焵焷\",13,\"煆煇煈煉煋煍煏\",12,\"煝煟\",4,\"煥煩\",4,\"煯煰煱煴煵煶煷煹煻煼煾\",5,\"熅\",4,\"熋熌熍熎熐熑熒熓熕熖熗熚\",4,\"熡\",6,\"熩熪熫熭\",5,\"熴熶熷熸熺\",8,\"燄\",9,\"燏\",4],[\"a040\",\"燖\",9,\"燡燢燣燤燦燨\",5,\"燯\",9,\"燺\",11,\"爇\",19],[\"a080\",\"爛爜爞\",9,\"爩爫爭爮爯爲爳爴爺爼爾牀\",6,\"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅\",4,\"犌犎犐犑犓\",11,\"犠\",11,\"犮犱犲犳犵犺\",6,\"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛\"],[\"a1a1\",\" 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈\",7,\"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓\"],[\"a2a1\",\"ⅰ\",9],[\"a2b1\",\"⒈\",19,\"⑴\",19,\"①\",9],[\"a2e5\",\"㈠\",9],[\"a2f1\",\"Ⅰ\",11],[\"a3a1\",\"!"#¥%\",88,\" ̄\"],[\"a4a1\",\"ぁ\",82],[\"a5a1\",\"ァ\",85],[\"a6a1\",\"Α\",16,\"Σ\",6],[\"a6c1\",\"α\",16,\"σ\",6],[\"a6e0\",\"︵︶︹︺︿﹀︽︾﹁﹂﹃﹄\"],[\"a6ee\",\"︻︼︷︸︱\"],[\"a6f4\",\"︳︴\"],[\"a7a1\",\"А\",5,\"ЁЖ\",25],[\"a7d1\",\"а\",5,\"ёж\",25],[\"a840\",\"ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═\",35,\"▁\",6],[\"a880\",\"█\",7,\"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞\"],[\"a8a1\",\"āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ\"],[\"a8bd\",\"ńň\"],[\"a8c0\",\"ɡ\"],[\"a8c5\",\"ㄅ\",36],[\"a940\",\"〡\",8,\"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦\"],[\"a959\",\"℡㈱\"],[\"a95c\",\"‐\"],[\"a960\",\"ー゛゜ヽヾ〆ゝゞ﹉\",9,\"﹔﹕﹖﹗﹙\",8],[\"a980\",\"﹢\",4,\"﹨﹩﹪﹫\"],[\"a996\",\"〇\"],[\"a9a4\",\"─\",75],[\"aa40\",\"狜狝狟狢\",5,\"狪狫狵狶狹狽狾狿猀猂猄\",5,\"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀\",8],[\"aa80\",\"獉獊獋獌獎獏獑獓獔獕獖獘\",7,\"獡\",10,\"獮獰獱\"],[\"ab40\",\"獲\",11,\"獿\",4,\"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣\",5,\"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃\",4],[\"ab80\",\"珋珌珎珒\",6,\"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳\",4],[\"ac40\",\"珸\",10,\"琄琇琈琋琌琍琎琑\",8,\"琜\",5,\"琣琤琧琩琫琭琯琱琲琷\",4,\"琽琾琿瑀瑂\",11],[\"ac80\",\"瑎\",6,\"瑖瑘瑝瑠\",12,\"瑮瑯瑱\",4,\"瑸瑹瑺\"],[\"ad40\",\"瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑\",10,\"璝璟\",7,\"璪\",15,\"璻\",12],[\"ad80\",\"瓈\",9,\"瓓\",8,\"瓝瓟瓡瓥瓧\",6,\"瓰瓱瓲\"],[\"ae40\",\"瓳瓵瓸\",6,\"甀甁甂甃甅\",7,\"甎甐甒甔甕甖甗甛甝甞甠\",4,\"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘\"],[\"ae80\",\"畝\",7,\"畧畨畩畫\",6,\"畳畵當畷畺\",4,\"疀疁疂疄疅疇\"],[\"af40\",\"疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦\",4,\"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇\"],[\"af80\",\"瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄\"],[\"b040\",\"癅\",6,\"癎\",5,\"癕癗\",4,\"癝癟癠癡癢癤\",6,\"癬癭癮癰\",7,\"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛\"],[\"b080\",\"皜\",7,\"皥\",8,\"皯皰皳皵\",9,\"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥\"],[\"b140\",\"盄盇盉盋盌盓盕盙盚盜盝盞盠\",4,\"盦\",7,\"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎\",10,\"眛眜眝眞眡眣眤眥眧眪眫\"],[\"b180\",\"眬眮眰\",4,\"眹眻眽眾眿睂睄睅睆睈\",7,\"睒\",7,\"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳\"],[\"b240\",\"睝睞睟睠睤睧睩睪睭\",11,\"睺睻睼瞁瞂瞃瞆\",5,\"瞏瞐瞓\",11,\"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶\",4],[\"b280\",\"瞼瞾矀\",12,\"矎\",8,\"矘矙矚矝\",4,\"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖\"],[\"b340\",\"矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃\",5,\"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚\"],[\"b380\",\"硛硜硞\",11,\"硯\",7,\"硸硹硺硻硽\",6,\"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚\"],[\"b440\",\"碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨\",7,\"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚\",9],[\"b480\",\"磤磥磦磧磩磪磫磭\",4,\"磳磵磶磸磹磻\",5,\"礂礃礄礆\",6,\"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮\"],[\"b540\",\"礍\",5,\"礔\",9,\"礟\",4,\"礥\",14,\"礵\",4,\"礽礿祂祃祄祅祇祊\",8,\"祔祕祘祙祡祣\"],[\"b580\",\"祤祦祩祪祫祬祮祰\",6,\"祹祻\",4,\"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠\"],[\"b640\",\"禓\",6,\"禛\",11,\"禨\",10,\"禴\",4,\"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙\",5,\"秠秡秢秥秨秪\"],[\"b680\",\"秬秮秱\",6,\"秹秺秼秾秿稁稄稅稇稈稉稊稌稏\",4,\"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二\"],[\"b740\",\"稝稟稡稢稤\",14,\"稴稵稶稸稺稾穀\",5,\"穇\",9,\"穒\",4,\"穘\",16],[\"b780\",\"穩\",6,\"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服\"],[\"b840\",\"窣窤窧窩窪窫窮\",4,\"窴\",10,\"竀\",10,\"竌\",9,\"竗竘竚竛竜竝竡竢竤竧\",5,\"竮竰竱竲竳\"],[\"b880\",\"竴\",4,\"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹\"],[\"b940\",\"笯笰笲笴笵笶笷笹笻笽笿\",5,\"筆筈筊筍筎筓筕筗筙筜筞筟筡筣\",10,\"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆\",6,\"箎箏\"],[\"b980\",\"箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹\",7,\"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈\"],[\"ba40\",\"篅篈築篊篋篍篎篏篐篒篔\",4,\"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲\",4,\"篸篹篺篻篽篿\",7,\"簈簉簊簍簎簐\",5,\"簗簘簙\"],[\"ba80\",\"簚\",4,\"簠\",5,\"簨簩簫\",12,\"簹\",5,\"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖\"],[\"bb40\",\"籃\",9,\"籎\",36,\"籵\",5,\"籾\",9],[\"bb80\",\"粈粊\",6,\"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴\",4,\"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕\"],[\"bc40\",\"粿糀糂糃糄糆糉糋糎\",6,\"糘糚糛糝糞糡\",6,\"糩\",5,\"糰\",7,\"糹糺糼\",13,\"紋\",5],[\"bc80\",\"紑\",14,\"紡紣紤紥紦紨紩紪紬紭紮細\",6,\"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件\"],[\"bd40\",\"紷\",54,\"絯\",7],[\"bd80\",\"絸\",32,\"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸\"],[\"be40\",\"継\",12,\"綧\",6,\"綯\",42],[\"be80\",\"線\",32,\"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻\"],[\"bf40\",\"緻\",62],[\"bf80\",\"縺縼\",4,\"繂\",4,\"繈\",21,\"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀\"],[\"c040\",\"繞\",35,\"纃\",23,\"纜纝纞\"],[\"c080\",\"纮纴纻纼绖绤绬绹缊缐缞缷缹缻\",6,\"罃罆\",9,\"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐\"],[\"c140\",\"罖罙罛罜罝罞罠罣\",4,\"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂\",7,\"羋羍羏\",4,\"羕\",4,\"羛羜羠羢羣羥羦羨\",6,\"羱\"],[\"c180\",\"羳\",4,\"羺羻羾翀翂翃翄翆翇翈翉翋翍翏\",4,\"翖翗翙\",5,\"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿\"],[\"c240\",\"翤翧翨翪翫翬翭翯翲翴\",6,\"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫\",5,\"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗\"],[\"c280\",\"聙聛\",13,\"聫\",5,\"聲\",11,\"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫\"],[\"c340\",\"聾肁肂肅肈肊肍\",5,\"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇\",4,\"胏\",6,\"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋\"],[\"c380\",\"脌脕脗脙脛脜脝脟\",12,\"脭脮脰脳脴脵脷脹\",4,\"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸\"],[\"c440\",\"腀\",5,\"腇腉腍腎腏腒腖腗腘腛\",4,\"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃\",4,\"膉膋膌膍膎膐膒\",5,\"膙膚膞\",4,\"膤膥\"],[\"c480\",\"膧膩膫\",7,\"膴\",5,\"膼膽膾膿臄臅臇臈臉臋臍\",6,\"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁\"],[\"c540\",\"臔\",14,\"臤臥臦臨臩臫臮\",4,\"臵\",5,\"臽臿舃與\",4,\"舎舏舑舓舕\",5,\"舝舠舤舥舦舧舩舮舲舺舼舽舿\"],[\"c580\",\"艀艁艂艃艅艆艈艊艌艍艎艐\",7,\"艙艛艜艝艞艠\",7,\"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗\"],[\"c640\",\"艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸\"],[\"c680\",\"苺苼\",4,\"茊茋茍茐茒茓茖茘茙茝\",9,\"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐\"],[\"c740\",\"茾茿荁荂荄荅荈荊\",4,\"荓荕\",4,\"荝荢荰\",6,\"荹荺荾\",6,\"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡\",6,\"莬莭莮\"],[\"c780\",\"莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠\"],[\"c840\",\"菮華菳\",4,\"菺菻菼菾菿萀萂萅萇萈萉萊萐萒\",5,\"萙萚萛萞\",5,\"萩\",7,\"萲\",5,\"萹萺萻萾\",7,\"葇葈葉\"],[\"c880\",\"葊\",6,\"葒\",4,\"葘葝葞葟葠葢葤\",4,\"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁\"],[\"c940\",\"葽\",4,\"蒃蒄蒅蒆蒊蒍蒏\",7,\"蒘蒚蒛蒝蒞蒟蒠蒢\",12,\"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗\"],[\"c980\",\"蓘\",4,\"蓞蓡蓢蓤蓧\",4,\"蓭蓮蓯蓱\",10,\"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳\"],[\"ca40\",\"蔃\",8,\"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢\",8,\"蔭\",9,\"蔾\",4,\"蕄蕅蕆蕇蕋\",10],[\"ca80\",\"蕗蕘蕚蕛蕜蕝蕟\",4,\"蕥蕦蕧蕩\",8,\"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱\"],[\"cb40\",\"薂薃薆薈\",6,\"薐\",10,\"薝\",6,\"薥薦薧薩薫薬薭薱\",5,\"薸薺\",6,\"藂\",6,\"藊\",4,\"藑藒\"],[\"cb80\",\"藔藖\",5,\"藝\",6,\"藥藦藧藨藪\",14,\"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔\"],[\"cc40\",\"藹藺藼藽藾蘀\",4,\"蘆\",10,\"蘒蘓蘔蘕蘗\",15,\"蘨蘪\",13,\"蘹蘺蘻蘽蘾蘿虀\"],[\"cc80\",\"虁\",11,\"虒虓處\",4,\"虛虜虝號虠虡虣\",7,\"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃\"],[\"cd40\",\"虭虯虰虲\",6,\"蚃\",6,\"蚎\",4,\"蚔蚖\",5,\"蚞\",4,\"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻\",4,\"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜\"],[\"cd80\",\"蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威\"],[\"ce40\",\"蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀\",6,\"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚\",5,\"蝡蝢蝦\",7,\"蝯蝱蝲蝳蝵\"],[\"ce80\",\"蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎\",4,\"螔螕螖螘\",6,\"螠\",4,\"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺\"],[\"cf40\",\"螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁\",4,\"蟇蟈蟉蟌\",4,\"蟔\",6,\"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯\",9],[\"cf80\",\"蟺蟻蟼蟽蟿蠀蠁蠂蠄\",5,\"蠋\",7,\"蠔蠗蠘蠙蠚蠜\",4,\"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓\"],[\"d040\",\"蠤\",13,\"蠳\",5,\"蠺蠻蠽蠾蠿衁衂衃衆\",5,\"衎\",5,\"衕衖衘衚\",6,\"衦衧衪衭衯衱衳衴衵衶衸衹衺\"],[\"d080\",\"衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗\",4,\"袝\",4,\"袣袥\",5,\"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄\"],[\"d140\",\"袬袮袯袰袲\",4,\"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚\",4,\"裠裡裦裧裩\",6,\"裲裵裶裷裺裻製裿褀褁褃\",5],[\"d180\",\"褉褋\",4,\"褑褔\",4,\"褜\",4,\"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶\"],[\"d240\",\"褸\",8,\"襂襃襅\",24,\"襠\",5,\"襧\",19,\"襼\"],[\"d280\",\"襽襾覀覂覄覅覇\",26,\"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐\"],[\"d340\",\"覢\",30,\"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴\",6],[\"d380\",\"觻\",4,\"訁\",5,\"計\",21,\"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉\"],[\"d440\",\"訞\",31,\"訿\",8,\"詉\",21],[\"d480\",\"詟\",25,\"詺\",6,\"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧\"],[\"d540\",\"誁\",7,\"誋\",7,\"誔\",46],[\"d580\",\"諃\",32,\"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政\"],[\"d640\",\"諤\",34,\"謈\",27],[\"d680\",\"謤謥謧\",30,\"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑\"],[\"d740\",\"譆\",31,\"譧\",4,\"譭\",25],[\"d780\",\"讇\",24,\"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座\"],[\"d840\",\"谸\",8,\"豂豃豄豅豈豊豋豍\",7,\"豖豗豘豙豛\",5,\"豣\",6,\"豬\",6,\"豴豵豶豷豻\",6,\"貃貄貆貇\"],[\"d880\",\"貈貋貍\",6,\"貕貖貗貙\",20,\"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝\"],[\"d940\",\"貮\",62],[\"d980\",\"賭\",32,\"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼\"],[\"da40\",\"贎\",14,\"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸\",8,\"趂趃趆趇趈趉趌\",4,\"趒趓趕\",9,\"趠趡\"],[\"da80\",\"趢趤\",12,\"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺\"],[\"db40\",\"跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾\",6,\"踆踇踈踋踍踎踐踑踒踓踕\",7,\"踠踡踤\",4,\"踫踭踰踲踳踴踶踷踸踻踼踾\"],[\"db80\",\"踿蹃蹅蹆蹌\",4,\"蹓\",5,\"蹚\",11,\"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝\"],[\"dc40\",\"蹳蹵蹷\",4,\"蹽蹾躀躂躃躄躆躈\",6,\"躑躒躓躕\",6,\"躝躟\",11,\"躭躮躰躱躳\",6,\"躻\",7],[\"dc80\",\"軃\",10,\"軏\",21,\"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥\"],[\"dd40\",\"軥\",62],[\"dd80\",\"輤\",32,\"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺\"],[\"de40\",\"轅\",32,\"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆\"],[\"de80\",\"迉\",4,\"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖\"],[\"df40\",\"這逜連逤逥逧\",5,\"逰\",4,\"逷逹逺逽逿遀遃遅遆遈\",4,\"過達違遖遙遚遜\",5,\"遤遦遧適遪遫遬遯\",4,\"遶\",6,\"遾邁\"],[\"df80\",\"還邅邆邇邉邊邌\",4,\"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼\"],[\"e040\",\"郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅\",19,\"鄚鄛鄜\"],[\"e080\",\"鄝鄟鄠鄡鄤\",10,\"鄰鄲\",6,\"鄺\",8,\"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼\"],[\"e140\",\"酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀\",4,\"醆醈醊醎醏醓\",6,\"醜\",5,\"醤\",5,\"醫醬醰醱醲醳醶醷醸醹醻\"],[\"e180\",\"醼\",10,\"釈釋釐釒\",9,\"針\",8,\"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺\"],[\"e240\",\"釦\",62],[\"e280\",\"鈥\",32,\"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧\",5,\"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂\"],[\"e340\",\"鉆\",45,\"鉵\",16],[\"e380\",\"銆\",7,\"銏\",24,\"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾\"],[\"e440\",\"銨\",5,\"銯\",24,\"鋉\",31],[\"e480\",\"鋩\",32,\"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑\"],[\"e540\",\"錊\",51,\"錿\",10],[\"e580\",\"鍊\",31,\"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣\"],[\"e640\",\"鍬\",34,\"鎐\",27],[\"e680\",\"鎬\",29,\"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩\"],[\"e740\",\"鏎\",7,\"鏗\",54],[\"e780\",\"鐎\",32,\"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡\",6,\"缪缫缬缭缯\",4,\"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬\"],[\"e840\",\"鐯\",14,\"鐿\",43,\"鑬鑭鑮鑯\"],[\"e880\",\"鑰\",20,\"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹\"],[\"e940\",\"锧锳锽镃镈镋镕镚镠镮镴镵長\",7,\"門\",42],[\"e980\",\"閫\",32,\"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋\"],[\"ea40\",\"闌\",27,\"闬闿阇阓阘阛阞阠阣\",6,\"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗\"],[\"ea80\",\"陘陙陚陜陝陞陠陣陥陦陫陭\",4,\"陳陸\",12,\"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰\"],[\"eb40\",\"隌階隑隒隓隕隖隚際隝\",9,\"隨\",7,\"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖\",9,\"雡\",6,\"雫\"],[\"eb80\",\"雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗\",4,\"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻\"],[\"ec40\",\"霡\",8,\"霫霬霮霯霱霳\",4,\"霺霻霼霽霿\",18,\"靔靕靗靘靚靜靝靟靣靤靦靧靨靪\",7],[\"ec80\",\"靲靵靷\",4,\"靽\",7,\"鞆\",4,\"鞌鞎鞏鞐鞓鞕鞖鞗鞙\",4,\"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐\"],[\"ed40\",\"鞞鞟鞡鞢鞤\",6,\"鞬鞮鞰鞱鞳鞵\",46],[\"ed80\",\"韤韥韨韮\",4,\"韴韷\",23,\"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨\"],[\"ee40\",\"頏\",62],[\"ee80\",\"顎\",32,\"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶\",4,\"钼钽钿铄铈\",6,\"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪\"],[\"ef40\",\"顯\",5,\"颋颎颒颕颙颣風\",37,\"飏飐飔飖飗飛飜飝飠\",4],[\"ef80\",\"飥飦飩\",30,\"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒\",4,\"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤\",8,\"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔\"],[\"f040\",\"餈\",4,\"餎餏餑\",28,\"餯\",26],[\"f080\",\"饊\",9,\"饖\",12,\"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨\",4,\"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦\",6,\"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙\"],[\"f140\",\"馌馎馚\",10,\"馦馧馩\",47],[\"f180\",\"駙\",32,\"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃\"],[\"f240\",\"駺\",62],[\"f280\",\"騹\",32,\"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒\"],[\"f340\",\"驚\",17,\"驲骃骉骍骎骔骕骙骦骩\",6,\"骲骳骴骵骹骻骽骾骿髃髄髆\",4,\"髍髎髏髐髒體髕髖髗髙髚髛髜\"],[\"f380\",\"髝髞髠髢髣髤髥髧髨髩髪髬髮髰\",8,\"髺髼\",6,\"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋\"],[\"f440\",\"鬇鬉\",5,\"鬐鬑鬒鬔\",10,\"鬠鬡鬢鬤\",10,\"鬰鬱鬳\",7,\"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕\",5],[\"f480\",\"魛\",32,\"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤\"],[\"f540\",\"魼\",62],[\"f580\",\"鮻\",32,\"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜\"],[\"f640\",\"鯜\",62],[\"f680\",\"鰛\",32,\"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅\",5,\"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞\",5,\"鲥\",4,\"鲫鲭鲮鲰\",7,\"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋\"],[\"f740\",\"鰼\",62],[\"f780\",\"鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾\",4,\"鳈鳉鳑鳒鳚鳛鳠鳡鳌\",4,\"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄\"],[\"f840\",\"鳣\",62],[\"f880\",\"鴢\",32],[\"f940\",\"鵃\",62],[\"f980\",\"鶂\",32],[\"fa40\",\"鶣\",62],[\"fa80\",\"鷢\",32],[\"fb40\",\"鸃\",27,\"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴\",9,\"麀\"],[\"fb80\",\"麁麃麄麅麆麉麊麌\",5,\"麔\",8,\"麞麠\",5,\"麧麨麩麪\"],[\"fc40\",\"麫\",8,\"麵麶麷麹麺麼麿\",4,\"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰\",8,\"黺黽黿\",6],[\"fc80\",\"鼆\",4,\"鼌鼏鼑鼒鼔鼕鼖鼘鼚\",5,\"鼡鼣\",8,\"鼭鼮鼰鼱\"],[\"fd40\",\"鼲\",4,\"鼸鼺鼼鼿\",4,\"齅\",10,\"齒\",38],[\"fd80\",\"齹\",5,\"龁龂龍\",11,\"龜龝龞龡\",4,\"郎凉秊裏隣\"],[\"fe40\",\"兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩\"]]');\n\n/***/ }),\n\n/***/ 21166:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = /*#__PURE__*/JSON.parse('[[\"0\",\"\\\\u0000\",127],[\"8141\",\"갂갃갅갆갋\",4,\"갘갞갟갡갢갣갥\",6,\"갮갲갳갴\"],[\"8161\",\"갵갶갷갺갻갽갾갿걁\",9,\"걌걎\",5,\"걕\"],[\"8181\",\"걖걗걙걚걛걝\",18,\"걲걳걵걶걹걻\",4,\"겂겇겈겍겎겏겑겒겓겕\",6,\"겞겢\",5,\"겫겭겮겱\",6,\"겺겾겿곀곂곃곅곆곇곉곊곋곍\",7,\"곖곘\",7,\"곢곣곥곦곩곫곭곮곲곴곷\",4,\"곾곿괁괂괃괅괇\",4,\"괎괐괒괓\"],[\"8241\",\"괔괕괖괗괙괚괛괝괞괟괡\",7,\"괪괫괮\",5],[\"8261\",\"괶괷괹괺괻괽\",6,\"굆굈굊\",5,\"굑굒굓굕굖굗\"],[\"8281\",\"굙\",7,\"굢굤\",7,\"굮굯굱굲굷굸굹굺굾궀궃\",4,\"궊궋궍궎궏궑\",10,\"궞\",5,\"궥\",17,\"궸\",7,\"귂귃귅귆귇귉\",6,\"귒귔\",7,\"귝귞귟귡귢귣귥\",18],[\"8341\",\"귺귻귽귾긂\",5,\"긊긌긎\",5,\"긕\",7],[\"8361\",\"긝\",18,\"긲긳긵긶긹긻긼\"],[\"8381\",\"긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗\",4,\"깞깢깣깤깦깧깪깫깭깮깯깱\",6,\"깺깾\",5,\"꺆\",5,\"꺍\",46,\"꺿껁껂껃껅\",6,\"껎껒\",5,\"껚껛껝\",8],[\"8441\",\"껦껧껩껪껬껮\",5,\"껵껶껷껹껺껻껽\",8],[\"8461\",\"꼆꼉꼊꼋꼌꼎꼏꼑\",18],[\"8481\",\"꼤\",7,\"꼮꼯꼱꼳꼵\",6,\"꼾꽀꽄꽅꽆꽇꽊\",5,\"꽑\",10,\"꽞\",5,\"꽦\",18,\"꽺\",5,\"꾁꾂꾃꾅꾆꾇꾉\",6,\"꾒꾓꾔꾖\",5,\"꾝\",26,\"꾺꾻꾽꾾\"],[\"8541\",\"꾿꿁\",5,\"꿊꿌꿏\",4,\"꿕\",6,\"꿝\",4],[\"8561\",\"꿢\",5,\"꿪\",5,\"꿲꿳꿵꿶꿷꿹\",6,\"뀂뀃\"],[\"8581\",\"뀅\",6,\"뀍뀎뀏뀑뀒뀓뀕\",6,\"뀞\",9,\"뀩\",26,\"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞\",29,\"끾끿낁낂낃낅\",6,\"낎낐낒\",5,\"낛낝낞낣낤\"],[\"8641\",\"낥낦낧낪낰낲낶낷낹낺낻낽\",6,\"냆냊\",5,\"냒\"],[\"8661\",\"냓냕냖냗냙\",6,\"냡냢냣냤냦\",10],[\"8681\",\"냱\",22,\"넊넍넎넏넑넔넕넖넗넚넞\",4,\"넦넧넩넪넫넭\",6,\"넶넺\",5,\"녂녃녅녆녇녉\",6,\"녒녓녖녗녙녚녛녝녞녟녡\",22,\"녺녻녽녾녿놁놃\",4,\"놊놌놎놏놐놑놕놖놗놙놚놛놝\"],[\"8741\",\"놞\",9,\"놩\",15],[\"8761\",\"놹\",18,\"뇍뇎뇏뇑뇒뇓뇕\"],[\"8781\",\"뇖\",5,\"뇞뇠\",7,\"뇪뇫뇭뇮뇯뇱\",7,\"뇺뇼뇾\",5,\"눆눇눉눊눍\",6,\"눖눘눚\",5,\"눡\",18,\"눵\",6,\"눽\",26,\"뉙뉚뉛뉝뉞뉟뉡\",6,\"뉪\",4],[\"8841\",\"뉯\",4,\"뉶\",5,\"뉽\",6,\"늆늇늈늊\",4],[\"8861\",\"늏늒늓늕늖늗늛\",4,\"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷\"],[\"8881\",\"늸\",15,\"닊닋닍닎닏닑닓\",4,\"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉\",6,\"댒댖\",5,\"댝\",54,\"덗덙덚덝덠덡덢덣\"],[\"8941\",\"덦덨덪덬덭덯덲덳덵덶덷덹\",6,\"뎂뎆\",5,\"뎍\"],[\"8961\",\"뎎뎏뎑뎒뎓뎕\",10,\"뎢\",5,\"뎩뎪뎫뎭\"],[\"8981\",\"뎮\",21,\"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩\",18,\"돽\",18,\"됑\",6,\"됙됚됛됝됞됟됡\",6,\"됪됬\",7,\"됵\",15],[\"8a41\",\"둅\",10,\"둒둓둕둖둗둙\",6,\"둢둤둦\"],[\"8a61\",\"둧\",4,\"둭\",18,\"뒁뒂\"],[\"8a81\",\"뒃\",4,\"뒉\",19,\"뒞\",5,\"뒥뒦뒧뒩뒪뒫뒭\",7,\"뒶뒸뒺\",5,\"듁듂듃듅듆듇듉\",6,\"듑듒듓듔듖\",5,\"듞듟듡듢듥듧\",4,\"듮듰듲\",5,\"듹\",26,\"딖딗딙딚딝\"],[\"8b41\",\"딞\",5,\"딦딫\",4,\"딲딳딵딶딷딹\",6,\"땂땆\"],[\"8b61\",\"땇땈땉땊땎땏땑땒땓땕\",6,\"땞땢\",8],[\"8b81\",\"땫\",52,\"떢떣떥떦떧떩떬떭떮떯떲떶\",4,\"떾떿뗁뗂뗃뗅\",6,\"뗎뗒\",5,\"뗙\",18,\"뗭\",18],[\"8c41\",\"똀\",15,\"똒똓똕똖똗똙\",4],[\"8c61\",\"똞\",6,\"똦\",5,\"똭\",6,\"똵\",5],[\"8c81\",\"똻\",12,\"뙉\",26,\"뙥뙦뙧뙩\",50,\"뚞뚟뚡뚢뚣뚥\",5,\"뚭뚮뚯뚰뚲\",16],[\"8d41\",\"뛃\",16,\"뛕\",8],[\"8d61\",\"뛞\",17,\"뛱뛲뛳뛵뛶뛷뛹뛺\"],[\"8d81\",\"뛻\",4,\"뜂뜃뜄뜆\",33,\"뜪뜫뜭뜮뜱\",6,\"뜺뜼\",7,\"띅띆띇띉띊띋띍\",6,\"띖\",9,\"띡띢띣띥띦띧띩\",6,\"띲띴띶\",5,\"띾띿랁랂랃랅\",6,\"랎랓랔랕랚랛랝랞\"],[\"8e41\",\"랟랡\",6,\"랪랮\",5,\"랶랷랹\",8],[\"8e61\",\"럂\",4,\"럈럊\",19],[\"8e81\",\"럞\",13,\"럮럯럱럲럳럵\",6,\"럾렂\",4,\"렊렋렍렎렏렑\",6,\"렚렜렞\",5,\"렦렧렩렪렫렭\",6,\"렶렺\",5,\"롁롂롃롅\",11,\"롒롔\",7,\"롞롟롡롢롣롥\",6,\"롮롰롲\",5,\"롹롺롻롽\",7],[\"8f41\",\"뢅\",7,\"뢎\",17],[\"8f61\",\"뢠\",7,\"뢩\",6,\"뢱뢲뢳뢵뢶뢷뢹\",4],[\"8f81\",\"뢾뢿룂룄룆\",5,\"룍룎룏룑룒룓룕\",7,\"룞룠룢\",5,\"룪룫룭룮룯룱\",6,\"룺룼룾\",5,\"뤅\",18,\"뤙\",6,\"뤡\",26,\"뤾뤿륁륂륃륅\",6,\"륍륎륐륒\",5],[\"9041\",\"륚륛륝륞륟륡\",6,\"륪륬륮\",5,\"륶륷륹륺륻륽\"],[\"9061\",\"륾\",5,\"릆릈릋릌릏\",15],[\"9081\",\"릟\",12,\"릮릯릱릲릳릵\",6,\"릾맀맂\",5,\"맊맋맍맓\",4,\"맚맜맟맠맢맦맧맩맪맫맭\",6,\"맶맻\",4,\"먂\",5,\"먉\",11,\"먖\",33,\"먺먻먽먾먿멁멃멄멅멆\"],[\"9141\",\"멇멊멌멏멐멑멒멖멗멙멚멛멝\",6,\"멦멪\",5],[\"9161\",\"멲멳멵멶멷멹\",9,\"몆몈몉몊몋몍\",5],[\"9181\",\"몓\",20,\"몪몭몮몯몱몳\",4,\"몺몼몾\",5,\"뫅뫆뫇뫉\",14,\"뫚\",33,\"뫽뫾뫿묁묂묃묅\",7,\"묎묐묒\",5,\"묙묚묛묝묞묟묡\",6],[\"9241\",\"묨묪묬\",7,\"묷묹묺묿\",4,\"뭆뭈뭊뭋뭌뭎뭑뭒\"],[\"9261\",\"뭓뭕뭖뭗뭙\",7,\"뭢뭤\",7,\"뭭\",4],[\"9281\",\"뭲\",21,\"뮉뮊뮋뮍뮎뮏뮑\",18,\"뮥뮦뮧뮩뮪뮫뮭\",6,\"뮵뮶뮸\",7,\"믁믂믃믅믆믇믉\",6,\"믑믒믔\",35,\"믺믻믽믾밁\"],[\"9341\",\"밃\",4,\"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵\"],[\"9361\",\"밶밷밹\",6,\"뱂뱆뱇뱈뱊뱋뱎뱏뱑\",8],[\"9381\",\"뱚뱛뱜뱞\",37,\"벆벇벉벊벍벏\",4,\"벖벘벛\",4,\"벢벣벥벦벩\",6,\"벲벶\",5,\"벾벿볁볂볃볅\",7,\"볎볒볓볔볖볗볙볚볛볝\",22,\"볷볹볺볻볽\"],[\"9441\",\"볾\",5,\"봆봈봊\",5,\"봑봒봓봕\",8],[\"9461\",\"봞\",5,\"봥\",6,\"봭\",12],[\"9481\",\"봺\",5,\"뵁\",6,\"뵊뵋뵍뵎뵏뵑\",6,\"뵚\",9,\"뵥뵦뵧뵩\",22,\"붂붃붅붆붋\",4,\"붒붔붖붗붘붛붝\",6,\"붥\",10,\"붱\",6,\"붹\",24],[\"9541\",\"뷒뷓뷖뷗뷙뷚뷛뷝\",11,\"뷪\",5,\"뷱\"],[\"9561\",\"뷲뷳뷵뷶뷷뷹\",6,\"븁븂븄븆\",5,\"븎븏븑븒븓\"],[\"9581\",\"븕\",6,\"븞븠\",35,\"빆빇빉빊빋빍빏\",4,\"빖빘빜빝빞빟빢빣빥빦빧빩빫\",4,\"빲빶\",4,\"빾빿뺁뺂뺃뺅\",6,\"뺎뺒\",5,\"뺚\",13,\"뺩\",14],[\"9641\",\"뺸\",23,\"뻒뻓\"],[\"9661\",\"뻕뻖뻙\",6,\"뻡뻢뻦\",5,\"뻭\",8],[\"9681\",\"뻶\",10,\"뼂\",5,\"뼊\",13,\"뼚뼞\",33,\"뽂뽃뽅뽆뽇뽉\",6,\"뽒뽓뽔뽖\",44],[\"9741\",\"뾃\",16,\"뾕\",8],[\"9761\",\"뾞\",17,\"뾱\",7],[\"9781\",\"뾹\",11,\"뿆\",5,\"뿎뿏뿑뿒뿓뿕\",6,\"뿝뿞뿠뿢\",89,\"쀽쀾쀿\"],[\"9841\",\"쁀\",16,\"쁒\",5,\"쁙쁚쁛\"],[\"9861\",\"쁝쁞쁟쁡\",6,\"쁪\",15],[\"9881\",\"쁺\",21,\"삒삓삕삖삗삙\",6,\"삢삤삦\",5,\"삮삱삲삷\",4,\"삾샂샃샄샆샇샊샋샍샎샏샑\",6,\"샚샞\",5,\"샦샧샩샪샫샭\",6,\"샶샸샺\",5,\"섁섂섃섅섆섇섉\",6,\"섑섒섓섔섖\",5,\"섡섢섥섨섩섪섫섮\"],[\"9941\",\"섲섳섴섵섷섺섻섽섾섿셁\",6,\"셊셎\",5,\"셖셗\"],[\"9961\",\"셙셚셛셝\",6,\"셦셪\",5,\"셱셲셳셵셶셷셹셺셻\"],[\"9981\",\"셼\",8,\"솆\",5,\"솏솑솒솓솕솗\",4,\"솞솠솢솣솤솦솧솪솫솭솮솯솱\",11,\"솾\",5,\"쇅쇆쇇쇉쇊쇋쇍\",6,\"쇕쇖쇙\",6,\"쇡쇢쇣쇥쇦쇧쇩\",6,\"쇲쇴\",7,\"쇾쇿숁숂숃숅\",6,\"숎숐숒\",5,\"숚숛숝숞숡숢숣\"],[\"9a41\",\"숤숥숦숧숪숬숮숰숳숵\",16],[\"9a61\",\"쉆쉇쉉\",6,\"쉒쉓쉕쉖쉗쉙\",6,\"쉡쉢쉣쉤쉦\"],[\"9a81\",\"쉧\",4,\"쉮쉯쉱쉲쉳쉵\",6,\"쉾슀슂\",5,\"슊\",5,\"슑\",6,\"슙슚슜슞\",5,\"슦슧슩슪슫슮\",5,\"슶슸슺\",33,\"싞싟싡싢싥\",5,\"싮싰싲싳싴싵싷싺싽싾싿쌁\",6,\"쌊쌋쌎쌏\"],[\"9b41\",\"쌐쌑쌒쌖쌗쌙쌚쌛쌝\",6,\"쌦쌧쌪\",8],[\"9b61\",\"쌳\",17,\"썆\",7],[\"9b81\",\"썎\",25,\"썪썫썭썮썯썱썳\",4,\"썺썻썾\",5,\"쎅쎆쎇쎉쎊쎋쎍\",50,\"쏁\",22,\"쏚\"],[\"9c41\",\"쏛쏝쏞쏡쏣\",4,\"쏪쏫쏬쏮\",5,\"쏶쏷쏹\",5],[\"9c61\",\"쏿\",8,\"쐉\",6,\"쐑\",9],[\"9c81\",\"쐛\",8,\"쐥\",6,\"쐭쐮쐯쐱쐲쐳쐵\",6,\"쐾\",9,\"쑉\",26,\"쑦쑧쑩쑪쑫쑭\",6,\"쑶쑷쑸쑺\",5,\"쒁\",18,\"쒕\",6,\"쒝\",12],[\"9d41\",\"쒪\",13,\"쒹쒺쒻쒽\",8],[\"9d61\",\"쓆\",25],[\"9d81\",\"쓠\",8,\"쓪\",5,\"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂\",9,\"씍씎씏씑씒씓씕\",6,\"씝\",10,\"씪씫씭씮씯씱\",6,\"씺씼씾\",5,\"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩\",6,\"앲앶\",5,\"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔\"],[\"9e41\",\"얖얙얚얛얝얞얟얡\",7,\"얪\",9,\"얶\"],[\"9e61\",\"얷얺얿\",4,\"엋엍엏엒엓엕엖엗엙\",6,\"엢엤엦엧\"],[\"9e81\",\"엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑\",6,\"옚옝\",6,\"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉\",6,\"왒왖\",5,\"왞왟왡\",10,\"왭왮왰왲\",5,\"왺왻왽왾왿욁\",6,\"욊욌욎\",5,\"욖욗욙욚욛욝\",6,\"욦\"],[\"9f41\",\"욨욪\",5,\"욲욳욵욶욷욻\",4,\"웂웄웆\",5,\"웎\"],[\"9f61\",\"웏웑웒웓웕\",6,\"웞웟웢\",5,\"웪웫웭웮웯웱웲\"],[\"9f81\",\"웳\",4,\"웺웻웼웾\",5,\"윆윇윉윊윋윍\",6,\"윖윘윚\",5,\"윢윣윥윦윧윩\",6,\"윲윴윶윸윹윺윻윾윿읁읂읃읅\",4,\"읋읎읐읙읚읛읝읞읟읡\",6,\"읩읪읬\",7,\"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛\",4,\"잢잧\",4,\"잮잯잱잲잳잵잶잷\"],[\"a041\",\"잸잹잺잻잾쟂\",5,\"쟊쟋쟍쟏쟑\",6,\"쟙쟚쟛쟜\"],[\"a061\",\"쟞\",5,\"쟥쟦쟧쟩쟪쟫쟭\",13],[\"a081\",\"쟻\",4,\"젂젃젅젆젇젉젋\",4,\"젒젔젗\",4,\"젞젟젡젢젣젥\",6,\"젮젰젲\",5,\"젹젺젻젽젾젿졁\",6,\"졊졋졎\",5,\"졕\",26,\"졲졳졵졶졷졹졻\",4,\"좂좄좈좉좊좎\",5,\"좕\",7,\"좞좠좢좣좤\"],[\"a141\",\"좥좦좧좩\",18,\"좾좿죀죁\"],[\"a161\",\"죂죃죅죆죇죉죊죋죍\",6,\"죖죘죚\",5,\"죢죣죥\"],[\"a181\",\"죦\",14,\"죶\",5,\"죾죿줁줂줃줇\",4,\"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈\",9,\"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬\"],[\"a241\",\"줐줒\",5,\"줙\",18],[\"a261\",\"줭\",6,\"줵\",18],[\"a281\",\"쥈\",7,\"쥒쥓쥕쥖쥗쥙\",6,\"쥢쥤\",7,\"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®\"],[\"a341\",\"쥱쥲쥳쥵\",6,\"쥽\",10,\"즊즋즍즎즏\"],[\"a361\",\"즑\",6,\"즚즜즞\",16],[\"a381\",\"즯\",16,\"짂짃짅짆짉짋\",4,\"짒짔짗짘짛!\",58,\"₩]\",32,\" ̄\"],[\"a441\",\"짞짟짡짣짥짦짨짩짪짫짮짲\",5,\"짺짻짽짾짿쨁쨂쨃쨄\"],[\"a461\",\"쨅쨆쨇쨊쨎\",5,\"쨕쨖쨗쨙\",12],[\"a481\",\"쨦쨧쨨쨪\",28,\"ㄱ\",93],[\"a541\",\"쩇\",4,\"쩎쩏쩑쩒쩓쩕\",6,\"쩞쩢\",5,\"쩩쩪\"],[\"a561\",\"쩫\",17,\"쩾\",5,\"쪅쪆\"],[\"a581\",\"쪇\",16,\"쪙\",14,\"ⅰ\",9],[\"a5b0\",\"Ⅰ\",9],[\"a5c1\",\"Α\",16,\"Σ\",6],[\"a5e1\",\"α\",16,\"σ\",6],[\"a641\",\"쪨\",19,\"쪾쪿쫁쫂쫃쫅\"],[\"a661\",\"쫆\",5,\"쫎쫐쫒쫔쫕쫖쫗쫚\",5,\"쫡\",6],[\"a681\",\"쫨쫩쫪쫫쫭\",6,\"쫵\",18,\"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃\",7],[\"a741\",\"쬋\",4,\"쬑쬒쬓쬕쬖쬗쬙\",6,\"쬢\",7],[\"a761\",\"쬪\",22,\"쭂쭃쭄\"],[\"a781\",\"쭅쭆쭇쭊쭋쭍쭎쭏쭑\",6,\"쭚쭛쭜쭞\",5,\"쭥\",7,\"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙\",9,\"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰\",9,\"㎀\",4,\"㎺\",5,\"㎐\",4,\"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆\"],[\"a841\",\"쭭\",10,\"쭺\",14],[\"a861\",\"쮉\",18,\"쮝\",6],[\"a881\",\"쮤\",19,\"쮹\",11,\"ÆЪĦ\"],[\"a8a6\",\"IJ\"],[\"a8a8\",\"ĿŁØŒºÞŦŊ\"],[\"a8b1\",\"㉠\",27,\"ⓐ\",25,\"①\",14,\"½⅓⅔¼¾⅛⅜⅝⅞\"],[\"a941\",\"쯅\",14,\"쯕\",10],[\"a961\",\"쯠쯡쯢쯣쯥쯦쯨쯪\",18],[\"a981\",\"쯽\",14,\"찎찏찑찒찓찕\",6,\"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀\",27,\"⒜\",25,\"⑴\",14,\"¹²³⁴ⁿ₁₂₃₄\"],[\"aa41\",\"찥찦찪찫찭찯찱\",6,\"찺찿\",4,\"챆챇챉챊챋챍챎\"],[\"aa61\",\"챏\",4,\"챖챚\",5,\"챡챢챣챥챧챩\",6,\"챱챲\"],[\"aa81\",\"챳챴챶\",29,\"ぁ\",82],[\"ab41\",\"첔첕첖첗첚첛첝첞첟첡\",6,\"첪첮\",5,\"첶첷첹\"],[\"ab61\",\"첺첻첽\",6,\"쳆쳈쳊\",5,\"쳑쳒쳓쳕\",5],[\"ab81\",\"쳛\",8,\"쳥\",6,\"쳭쳮쳯쳱\",12,\"ァ\",85],[\"ac41\",\"쳾쳿촀촂\",5,\"촊촋촍촎촏촑\",6,\"촚촜촞촟촠\"],[\"ac61\",\"촡촢촣촥촦촧촩촪촫촭\",11,\"촺\",4],[\"ac81\",\"촿\",28,\"쵝쵞쵟А\",5,\"ЁЖ\",25],[\"acd1\",\"а\",5,\"ёж\",25],[\"ad41\",\"쵡쵢쵣쵥\",6,\"쵮쵰쵲\",5,\"쵹\",7],[\"ad61\",\"춁\",6,\"춉\",10,\"춖춗춙춚춛춝춞춟\"],[\"ad81\",\"춠춡춢춣춦춨춪\",5,\"춱\",18,\"췅\"],[\"ae41\",\"췆\",5,\"췍췎췏췑\",16],[\"ae61\",\"췢\",5,\"췩췪췫췭췮췯췱\",6,\"췺췼췾\",4],[\"ae81\",\"츃츅츆츇츉츊츋츍\",6,\"츕츖츗츘츚\",5,\"츢츣츥츦츧츩츪츫\"],[\"af41\",\"츬츭츮츯츲츴츶\",19],[\"af61\",\"칊\",13,\"칚칛칝칞칢\",5,\"칪칬\"],[\"af81\",\"칮\",5,\"칶칷칹칺칻칽\",6,\"캆캈캊\",5,\"캒캓캕캖캗캙\"],[\"b041\",\"캚\",5,\"캢캦\",5,\"캮\",12],[\"b061\",\"캻\",5,\"컂\",19],[\"b081\",\"컖\",13,\"컦컧컩컪컭\",6,\"컶컺\",5,\"가각간갇갈갉갊감\",7,\"같\",4,\"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆\"],[\"b141\",\"켂켃켅켆켇켉\",6,\"켒켔켖\",5,\"켝켞켟켡켢켣\"],[\"b161\",\"켥\",6,\"켮켲\",5,\"켹\",11],[\"b181\",\"콅\",14,\"콖콗콙콚콛콝\",6,\"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸\"],[\"b241\",\"콭콮콯콲콳콵콶콷콹\",6,\"쾁쾂쾃쾄쾆\",5,\"쾍\"],[\"b261\",\"쾎\",18,\"쾢\",5,\"쾩\"],[\"b281\",\"쾪\",5,\"쾱\",18,\"쿅\",6,\"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙\"],[\"b341\",\"쿌\",19,\"쿢쿣쿥쿦쿧쿩\"],[\"b361\",\"쿪\",5,\"쿲쿴쿶\",5,\"쿽쿾쿿퀁퀂퀃퀅\",5],[\"b381\",\"퀋\",5,\"퀒\",5,\"퀙\",19,\"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫\",4,\"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝\"],[\"b441\",\"퀮\",5,\"퀶퀷퀹퀺퀻퀽\",6,\"큆큈큊\",5],[\"b461\",\"큑큒큓큕큖큗큙\",6,\"큡\",10,\"큮큯\"],[\"b481\",\"큱큲큳큵\",6,\"큾큿킀킂\",18,\"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫\",4,\"닳담답닷\",4,\"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥\"],[\"b541\",\"킕\",14,\"킦킧킩킪킫킭\",5],[\"b561\",\"킳킶킸킺\",5,\"탂탃탅탆탇탊\",5,\"탒탖\",4],[\"b581\",\"탛탞탟탡탢탣탥\",6,\"탮탲\",5,\"탹\",11,\"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸\"],[\"b641\",\"턅\",7,\"턎\",17],[\"b661\",\"턠\",15,\"턲턳턵턶턷턹턻턼턽턾\"],[\"b681\",\"턿텂텆\",5,\"텎텏텑텒텓텕\",6,\"텞텠텢\",5,\"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗\"],[\"b741\",\"텮\",13,\"텽\",6,\"톅톆톇톉톊\"],[\"b761\",\"톋\",20,\"톢톣톥톦톧\"],[\"b781\",\"톩\",6,\"톲톴톶톷톸톹톻톽톾톿퇁\",14,\"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩\"],[\"b841\",\"퇐\",7,\"퇙\",17],[\"b861\",\"퇫\",8,\"퇵퇶퇷퇹\",13],[\"b881\",\"툈툊\",5,\"툑\",24,\"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많\",4,\"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼\"],[\"b941\",\"툪툫툮툯툱툲툳툵\",6,\"툾퉀퉂\",5,\"퉉퉊퉋퉌\"],[\"b961\",\"퉍\",14,\"퉝\",6,\"퉥퉦퉧퉨\"],[\"b981\",\"퉩\",22,\"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바\",4,\"받\",4,\"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗\"],[\"ba41\",\"튍튎튏튒튓튔튖\",5,\"튝튞튟튡튢튣튥\",6,\"튭\"],[\"ba61\",\"튮튯튰튲\",5,\"튺튻튽튾틁틃\",4,\"틊틌\",5],[\"ba81\",\"틒틓틕틖틗틙틚틛틝\",6,\"틦\",9,\"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤\"],[\"bb41\",\"틻\",4,\"팂팄팆\",5,\"팏팑팒팓팕팗\",4,\"팞팢팣\"],[\"bb61\",\"팤팦팧팪팫팭팮팯팱\",6,\"팺팾\",5,\"퍆퍇퍈퍉\"],[\"bb81\",\"퍊\",31,\"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤\"],[\"bc41\",\"퍪\",17,\"퍾퍿펁펂펃펅펆펇\"],[\"bc61\",\"펈펉펊펋펎펒\",5,\"펚펛펝펞펟펡\",6,\"펪펬펮\"],[\"bc81\",\"펯\",4,\"펵펶펷펹펺펻펽\",6,\"폆폇폊\",5,\"폑\",5,\"샥샨샬샴샵샷샹섀섄섈섐섕서\",4,\"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭\"],[\"bd41\",\"폗폙\",7,\"폢폤\",7,\"폮폯폱폲폳폵폶폷\"],[\"bd61\",\"폸폹폺폻폾퐀퐂\",5,\"퐉\",13],[\"bd81\",\"퐗\",5,\"퐞\",25,\"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰\"],[\"be41\",\"퐸\",7,\"푁푂푃푅\",14],[\"be61\",\"푔\",7,\"푝푞푟푡푢푣푥\",7,\"푮푰푱푲\"],[\"be81\",\"푳\",4,\"푺푻푽푾풁풃\",4,\"풊풌풎\",5,\"풕\",8,\"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄\",6,\"엌엎\"],[\"bf41\",\"풞\",10,\"풪\",14],[\"bf61\",\"풹\",18,\"퓍퓎퓏퓑퓒퓓퓕\"],[\"bf81\",\"퓖\",5,\"퓝퓞퓠\",7,\"퓩퓪퓫퓭퓮퓯퓱\",6,\"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염\",5,\"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨\"],[\"c041\",\"퓾\",5,\"픅픆픇픉픊픋픍\",6,\"픖픘\",5],[\"c061\",\"픞\",25],[\"c081\",\"픸픹픺픻픾픿핁핂핃핅\",6,\"핎핐핒\",5,\"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응\",7,\"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊\"],[\"c141\",\"핤핦핧핪핬핮\",5,\"핶핷핹핺핻핽\",6,\"햆햊햋\"],[\"c161\",\"햌햍햎햏햑\",19,\"햦햧\"],[\"c181\",\"햨\",31,\"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓\"],[\"c241\",\"헊헋헍헎헏헑헓\",4,\"헚헜헞\",5,\"헦헧헩헪헫헭헮\"],[\"c261\",\"헯\",4,\"헶헸헺\",5,\"혂혃혅혆혇혉\",6,\"혒\"],[\"c281\",\"혖\",5,\"혝혞혟혡혢혣혥\",7,\"혮\",9,\"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻\"],[\"c341\",\"혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝\",4],[\"c361\",\"홢\",4,\"홨홪\",5,\"홲홳홵\",11],[\"c381\",\"횁횂횄횆\",5,\"횎횏횑횒횓횕\",7,\"횞횠횢\",5,\"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층\"],[\"c441\",\"횫횭횮횯횱\",7,\"횺횼\",7,\"훆훇훉훊훋\"],[\"c461\",\"훍훎훏훐훒훓훕훖훘훚\",5,\"훡훢훣훥훦훧훩\",4],[\"c481\",\"훮훯훱훲훳훴훶\",5,\"훾훿휁휂휃휅\",11,\"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼\"],[\"c541\",\"휕휖휗휚휛휝휞휟휡\",6,\"휪휬휮\",5,\"휶휷휹\"],[\"c561\",\"휺휻휽\",6,\"흅흆흈흊\",5,\"흒흓흕흚\",4],[\"c581\",\"흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵\",6,\"흾흿힀힂\",5,\"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜\"],[\"c641\",\"힍힎힏힑\",6,\"힚힜힞\",5],[\"c6a1\",\"퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁\"],[\"c7a1\",\"퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠\"],[\"c8a1\",\"혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝\"],[\"caa1\",\"伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕\"],[\"cba1\",\"匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢\"],[\"cca1\",\"瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械\"],[\"cda1\",\"棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜\"],[\"cea1\",\"科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾\"],[\"cfa1\",\"區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴\"],[\"d0a1\",\"鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣\"],[\"d1a1\",\"朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩\",5,\"那樂\",4,\"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉\"],[\"d2a1\",\"納臘蠟衲囊娘廊\",4,\"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧\",5,\"駑魯\",10,\"濃籠聾膿農惱牢磊腦賂雷尿壘\",7,\"嫩訥杻紐勒\",5,\"能菱陵尼泥匿溺多茶\"],[\"d3a1\",\"丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃\"],[\"d4a1\",\"棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅\"],[\"d5a1\",\"蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣\"],[\"d6a1\",\"煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼\"],[\"d7a1\",\"遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬\"],[\"d8a1\",\"立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅\"],[\"d9a1\",\"蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文\"],[\"daa1\",\"汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑\"],[\"dba1\",\"發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖\"],[\"dca1\",\"碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦\"],[\"dda1\",\"孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥\"],[\"dea1\",\"脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索\"],[\"dfa1\",\"傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署\"],[\"e0a1\",\"胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬\"],[\"e1a1\",\"聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁\"],[\"e2a1\",\"戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧\"],[\"e3a1\",\"嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁\"],[\"e4a1\",\"沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額\"],[\"e5a1\",\"櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬\"],[\"e6a1\",\"旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒\"],[\"e7a1\",\"簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳\"],[\"e8a1\",\"烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療\"],[\"e9a1\",\"窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓\"],[\"eaa1\",\"運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜\"],[\"eba1\",\"濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼\"],[\"eca1\",\"議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄\"],[\"eda1\",\"立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長\"],[\"eea1\",\"障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱\"],[\"efa1\",\"煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖\"],[\"f0a1\",\"靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫\"],[\"f1a1\",\"踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只\"],[\"f2a1\",\"咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯\"],[\"f3a1\",\"鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策\"],[\"f4a1\",\"責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢\"],[\"f5a1\",\"椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃\"],[\"f6a1\",\"贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託\"],[\"f7a1\",\"鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑\"],[\"f8a1\",\"阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃\"],[\"f9a1\",\"品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航\"],[\"faa1\",\"行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型\"],[\"fba1\",\"形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵\"],[\"fca1\",\"禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆\"],[\"fda1\",\"爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰\"]]');\n\n/***/ }),\n\n/***/ 72324:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = /*#__PURE__*/JSON.parse('[[\"0\",\"\\\\u0000\",127],[\"a140\",\" ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚\"],[\"a1a1\",\"﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢\",4,\"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/\"],[\"a240\",\"\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁\",7,\"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭\"],[\"a2a1\",\"╮╰╯═╞╪╡◢◣◥◤╱╲╳0\",9,\"Ⅰ\",9,\"〡\",8,\"十卄卅A\",25,\"a\",21],[\"a340\",\"wxyzΑ\",16,\"Σ\",6,\"α\",16,\"σ\",6,\"ㄅ\",10],[\"a3a1\",\"ㄐ\",25,\"˙ˉˊˇˋ\"],[\"a3e1\",\"€\"],[\"a440\",\"一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才\"],[\"a4a1\",\"丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙\"],[\"a540\",\"世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外\"],[\"a5a1\",\"央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全\"],[\"a640\",\"共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年\"],[\"a6a1\",\"式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣\"],[\"a740\",\"作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍\"],[\"a7a1\",\"均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠\"],[\"a840\",\"杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒\"],[\"a8a1\",\"芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵\"],[\"a940\",\"咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居\"],[\"a9a1\",\"屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊\"],[\"aa40\",\"昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠\"],[\"aaa1\",\"炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附\"],[\"ab40\",\"陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品\"],[\"aba1\",\"哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷\"],[\"ac40\",\"拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗\"],[\"aca1\",\"活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄\"],[\"ad40\",\"耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥\"],[\"ada1\",\"迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪\"],[\"ae40\",\"哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙\"],[\"aea1\",\"恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓\"],[\"af40\",\"浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷\"],[\"afa1\",\"砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃\"],[\"b040\",\"虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡\"],[\"b0a1\",\"陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀\"],[\"b140\",\"娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽\"],[\"b1a1\",\"情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺\"],[\"b240\",\"毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶\"],[\"b2a1\",\"瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼\"],[\"b340\",\"莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途\"],[\"b3a1\",\"部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠\"],[\"b440\",\"婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍\"],[\"b4a1\",\"插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋\"],[\"b540\",\"溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘\"],[\"b5a1\",\"窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁\"],[\"b640\",\"詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑\"],[\"b6a1\",\"間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼\"],[\"b740\",\"媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業\"],[\"b7a1\",\"楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督\"],[\"b840\",\"睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫\"],[\"b8a1\",\"腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊\"],[\"b940\",\"辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴\"],[\"b9a1\",\"飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇\"],[\"ba40\",\"愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢\"],[\"baa1\",\"滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬\"],[\"bb40\",\"罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤\"],[\"bba1\",\"說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜\"],[\"bc40\",\"劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂\"],[\"bca1\",\"慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃\"],[\"bd40\",\"瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯\"],[\"bda1\",\"翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞\"],[\"be40\",\"輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉\"],[\"bea1\",\"鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡\"],[\"bf40\",\"濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊\"],[\"bfa1\",\"縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚\"],[\"c040\",\"錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇\"],[\"c0a1\",\"嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬\"],[\"c140\",\"瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪\"],[\"c1a1\",\"薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁\"],[\"c240\",\"駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘\"],[\"c2a1\",\"癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦\"],[\"c340\",\"鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸\"],[\"c3a1\",\"獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類\"],[\"c440\",\"願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼\"],[\"c4a1\",\"纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴\"],[\"c540\",\"護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬\"],[\"c5a1\",\"禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒\"],[\"c640\",\"讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲\"],[\"c940\",\"乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕\"],[\"c9a1\",\"氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋\"],[\"ca40\",\"汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘\"],[\"caa1\",\"吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇\"],[\"cb40\",\"杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓\"],[\"cba1\",\"芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢\"],[\"cc40\",\"坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋\"],[\"cca1\",\"怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲\"],[\"cd40\",\"泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺\"],[\"cda1\",\"矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏\"],[\"ce40\",\"哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛\"],[\"cea1\",\"峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺\"],[\"cf40\",\"柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂\"],[\"cfa1\",\"洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀\"],[\"d040\",\"穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪\"],[\"d0a1\",\"苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱\"],[\"d140\",\"唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧\"],[\"d1a1\",\"恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤\"],[\"d240\",\"毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸\"],[\"d2a1\",\"牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐\"],[\"d340\",\"笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢\"],[\"d3a1\",\"荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐\"],[\"d440\",\"酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅\"],[\"d4a1\",\"唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏\"],[\"d540\",\"崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟\"],[\"d5a1\",\"捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉\"],[\"d640\",\"淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏\"],[\"d6a1\",\"痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟\"],[\"d740\",\"耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷\"],[\"d7a1\",\"蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪\"],[\"d840\",\"釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷\"],[\"d8a1\",\"堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔\"],[\"d940\",\"惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒\"],[\"d9a1\",\"晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞\"],[\"da40\",\"湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖\"],[\"daa1\",\"琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥\"],[\"db40\",\"罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳\"],[\"dba1\",\"菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺\"],[\"dc40\",\"軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈\"],[\"dca1\",\"隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆\"],[\"dd40\",\"媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤\"],[\"dda1\",\"搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼\"],[\"de40\",\"毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓\"],[\"dea1\",\"煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓\"],[\"df40\",\"稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯\"],[\"dfa1\",\"腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤\"],[\"e040\",\"觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿\"],[\"e0a1\",\"遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠\"],[\"e140\",\"凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠\"],[\"e1a1\",\"寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉\"],[\"e240\",\"榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊\"],[\"e2a1\",\"漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓\"],[\"e340\",\"禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞\"],[\"e3a1\",\"耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻\"],[\"e440\",\"裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍\"],[\"e4a1\",\"銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘\"],[\"e540\",\"噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉\"],[\"e5a1\",\"憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒\"],[\"e640\",\"澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙\"],[\"e6a1\",\"獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟\"],[\"e740\",\"膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢\"],[\"e7a1\",\"蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧\"],[\"e840\",\"踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓\"],[\"e8a1\",\"銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮\"],[\"e940\",\"噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺\"],[\"e9a1\",\"憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸\"],[\"ea40\",\"澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙\"],[\"eaa1\",\"瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘\"],[\"eb40\",\"蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠\"],[\"eba1\",\"諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌\"],[\"ec40\",\"錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕\"],[\"eca1\",\"魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎\"],[\"ed40\",\"檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶\"],[\"eda1\",\"瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞\"],[\"ee40\",\"蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞\"],[\"eea1\",\"謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜\"],[\"ef40\",\"鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰\"],[\"efa1\",\"鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶\"],[\"f040\",\"璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒\"],[\"f0a1\",\"臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧\"],[\"f140\",\"蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪\"],[\"f1a1\",\"鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰\"],[\"f240\",\"徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛\"],[\"f2a1\",\"礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕\"],[\"f340\",\"譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦\"],[\"f3a1\",\"鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲\"],[\"f440\",\"嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩\"],[\"f4a1\",\"禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿\"],[\"f540\",\"鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛\"],[\"f5a1\",\"鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥\"],[\"f640\",\"蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺\"],[\"f6a1\",\"騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚\"],[\"f740\",\"糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊\"],[\"f7a1\",\"驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾\"],[\"f840\",\"讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏\"],[\"f8a1\",\"齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚\"],[\"f940\",\"纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊\"],[\"f9a1\",\"龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓\"]]');\n\n/***/ }),\n\n/***/ 56406:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = /*#__PURE__*/JSON.parse('[[\"0\",\"\\\\u0000\",127],[\"8ea1\",\"。\",62],[\"a1a1\",\" 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈\",9,\"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇\"],[\"a2a1\",\"◆□■△▲▽▼※〒→←↑↓〓\"],[\"a2ba\",\"∈∋⊆⊇⊂⊃∪∩\"],[\"a2ca\",\"∧∨¬⇒⇔∀∃\"],[\"a2dc\",\"∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬\"],[\"a2f2\",\"ʼn♯♭♪†‡¶\"],[\"a2fe\",\"◯\"],[\"a3b0\",\"0\",9],[\"a3c1\",\"A\",25],[\"a3e1\",\"a\",25],[\"a4a1\",\"ぁ\",82],[\"a5a1\",\"ァ\",85],[\"a6a1\",\"Α\",16,\"Σ\",6],[\"a6c1\",\"α\",16,\"σ\",6],[\"a7a1\",\"А\",5,\"ЁЖ\",25],[\"a7d1\",\"а\",5,\"ёж\",25],[\"a8a1\",\"─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂\"],[\"ada1\",\"①\",19,\"Ⅰ\",9],[\"adc0\",\"㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡\"],[\"addf\",\"㍻〝〟№㏍℡㊤\",4,\"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪\"],[\"b0a1\",\"亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭\"],[\"b1a1\",\"院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応\"],[\"b2a1\",\"押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改\"],[\"b3a1\",\"魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱\"],[\"b4a1\",\"粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄\"],[\"b5a1\",\"機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京\"],[\"b6a1\",\"供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈\"],[\"b7a1\",\"掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲\"],[\"b8a1\",\"検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向\"],[\"b9a1\",\"后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込\"],[\"baa1\",\"此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷\"],[\"bba1\",\"察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時\"],[\"bca1\",\"次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周\"],[\"bda1\",\"宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償\"],[\"bea1\",\"勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾\"],[\"bfa1\",\"拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾\"],[\"c0a1\",\"澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線\"],[\"c1a1\",\"繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎\"],[\"c2a1\",\"臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只\"],[\"c3a1\",\"叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵\"],[\"c4a1\",\"帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓\"],[\"c5a1\",\"邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到\"],[\"c6a1\",\"董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入\"],[\"c7a1\",\"如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦\"],[\"c8a1\",\"函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美\"],[\"c9a1\",\"鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服\"],[\"caa1\",\"福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋\"],[\"cba1\",\"法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満\"],[\"cca1\",\"漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒\"],[\"cda1\",\"諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃\"],[\"cea1\",\"痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯\"],[\"cfa1\",\"蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕\"],[\"d0a1\",\"弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲\"],[\"d1a1\",\"僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨\"],[\"d2a1\",\"辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨\"],[\"d3a1\",\"咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉\"],[\"d4a1\",\"圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩\"],[\"d5a1\",\"奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓\"],[\"d6a1\",\"屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏\"],[\"d7a1\",\"廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚\"],[\"d8a1\",\"悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛\"],[\"d9a1\",\"戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼\"],[\"daa1\",\"據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼\"],[\"dba1\",\"曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍\"],[\"dca1\",\"棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣\"],[\"dda1\",\"檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾\"],[\"dea1\",\"沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌\"],[\"dfa1\",\"漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼\"],[\"e0a1\",\"燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱\"],[\"e1a1\",\"瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰\"],[\"e2a1\",\"癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬\"],[\"e3a1\",\"磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐\"],[\"e4a1\",\"筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆\"],[\"e5a1\",\"紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺\"],[\"e6a1\",\"罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋\"],[\"e7a1\",\"隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙\"],[\"e8a1\",\"茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈\"],[\"e9a1\",\"蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙\"],[\"eaa1\",\"蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞\"],[\"eba1\",\"襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫\"],[\"eca1\",\"譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊\"],[\"eda1\",\"蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸\"],[\"eea1\",\"遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮\"],[\"efa1\",\"錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞\"],[\"f0a1\",\"陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰\"],[\"f1a1\",\"顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷\"],[\"f2a1\",\"髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈\"],[\"f3a1\",\"鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠\"],[\"f4a1\",\"堯槇遙瑤凜熙\"],[\"f9a1\",\"纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德\"],[\"faa1\",\"忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱\"],[\"fba1\",\"犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚\"],[\"fca1\",\"釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑\"],[\"fcf1\",\"ⅰ\",9,\"¬¦'"\"],[\"8fa2af\",\"˘ˇ¸˙˝¯˛˚~΄΅\"],[\"8fa2c2\",\"¡¦¿\"],[\"8fa2eb\",\"ºª©®™¤№\"],[\"8fa6e1\",\"ΆΈΉΊΪ\"],[\"8fa6e7\",\"Ό\"],[\"8fa6e9\",\"ΎΫ\"],[\"8fa6ec\",\"Ώ\"],[\"8fa6f1\",\"άέήίϊΐόςύϋΰώ\"],[\"8fa7c2\",\"Ђ\",10,\"ЎЏ\"],[\"8fa7f2\",\"ђ\",10,\"ўџ\"],[\"8fa9a1\",\"ÆĐ\"],[\"8fa9a4\",\"Ħ\"],[\"8fa9a6\",\"IJ\"],[\"8fa9a8\",\"ŁĿ\"],[\"8fa9ab\",\"ŊØŒ\"],[\"8fa9af\",\"ŦÞ\"],[\"8fa9c1\",\"æđðħıijĸłŀʼnŋøœßŧþ\"],[\"8faaa1\",\"ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ\"],[\"8faaba\",\"ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ\"],[\"8faba1\",\"áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ\"],[\"8fabbd\",\"ġĥíìïîǐ\"],[\"8fabc5\",\"īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż\"],[\"8fb0a1\",\"丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄\"],[\"8fb1a1\",\"侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐\"],[\"8fb2a1\",\"傒傓傔傖傛傜傞\",4,\"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂\"],[\"8fb3a1\",\"凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋\"],[\"8fb4a1\",\"匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿\"],[\"8fb5a1\",\"咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒\"],[\"8fb6a1\",\"嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍\",5,\"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤\",4,\"囱囫园\"],[\"8fb7a1\",\"囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭\",4,\"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡\"],[\"8fb8a1\",\"堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭\"],[\"8fb9a1\",\"奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿\"],[\"8fbaa1\",\"嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖\",4,\"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩\"],[\"8fbba1\",\"屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤\"],[\"8fbca1\",\"巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪\",4,\"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧\"],[\"8fbda1\",\"彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐\",4,\"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷\"],[\"8fbea1\",\"悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐\",4,\"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥\"],[\"8fbfa1\",\"懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵\"],[\"8fc0a1\",\"捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿\"],[\"8fc1a1\",\"擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝\"],[\"8fc2a1\",\"昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝\"],[\"8fc3a1\",\"杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮\",4,\"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏\"],[\"8fc4a1\",\"棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲\"],[\"8fc5a1\",\"樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽\"],[\"8fc6a1\",\"歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖\"],[\"8fc7a1\",\"泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞\"],[\"8fc8a1\",\"湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊\"],[\"8fc9a1\",\"濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔\",4,\"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃\",4,\"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠\"],[\"8fcaa1\",\"煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻\"],[\"8fcba1\",\"狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽\"],[\"8fcca1\",\"珿琀琁琄琇琊琑琚琛琤琦琨\",9,\"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆\"],[\"8fcda1\",\"甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹\",5,\"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹\"],[\"8fcea1\",\"瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢\",6,\"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢\"],[\"8fcfa1\",\"睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳\"],[\"8fd0a1\",\"碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞\"],[\"8fd1a1\",\"秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰\"],[\"8fd2a1\",\"笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙\",5],[\"8fd3a1\",\"籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝\"],[\"8fd4a1\",\"綞綦綧綪綳綶綷綹緂\",4,\"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭\"],[\"8fd5a1\",\"罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮\"],[\"8fd6a1\",\"胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆\"],[\"8fd7a1\",\"艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸\"],[\"8fd8a1\",\"荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓\"],[\"8fd9a1\",\"蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏\",4,\"蕖蕙蕜\",6,\"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼\"],[\"8fdaa1\",\"藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠\",4,\"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣\"],[\"8fdba1\",\"蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃\",6,\"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵\"],[\"8fdca1\",\"蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊\",4,\"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺\"],[\"8fdda1\",\"襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔\",4,\"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳\"],[\"8fdea1\",\"誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂\",4,\"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆\"],[\"8fdfa1\",\"貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢\"],[\"8fe0a1\",\"踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁\"],[\"8fe1a1\",\"轃轇轏轑\",4,\"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃\"],[\"8fe2a1\",\"郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿\"],[\"8fe3a1\",\"釂釃釅釓釔釗釙釚釞釤釥釩釪釬\",5,\"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵\",4,\"鉻鉼鉽鉿銈銉銊銍銎銒銗\"],[\"8fe4a1\",\"銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿\",4,\"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶\"],[\"8fe5a1\",\"鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉\",4,\"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹\"],[\"8fe6a1\",\"镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂\"],[\"8fe7a1\",\"霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦\"],[\"8fe8a1\",\"頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱\",4,\"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵\"],[\"8fe9a1\",\"馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿\",4],[\"8feaa1\",\"鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪\",4,\"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸\"],[\"8feba1\",\"鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦\",4,\"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻\"],[\"8feca1\",\"鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵\"],[\"8feda1\",\"黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃\",4,\"齓齕齖齗齘齚齝齞齨齩齭\",4,\"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥\"]]');\n\n/***/ }),\n\n/***/ 99129:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = /*#__PURE__*/JSON.parse('{\"uChars\":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],\"gbChars\":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}');\n\n/***/ }),\n\n/***/ 55914:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = /*#__PURE__*/JSON.parse('[[\"a140\",\"\",62],[\"a180\",\"\",32],[\"a240\",\"\",62],[\"a280\",\"\",32],[\"a2ab\",\"\",5],[\"a2e3\",\"€\"],[\"a2ef\",\"\"],[\"a2fd\",\"\"],[\"a340\",\"\",62],[\"a380\",\"\",31,\" \"],[\"a440\",\"\",62],[\"a480\",\"\",32],[\"a4f4\",\"\",10],[\"a540\",\"\",62],[\"a580\",\"\",32],[\"a5f7\",\"\",7],[\"a640\",\"\",62],[\"a680\",\"\",32],[\"a6b9\",\"\",7],[\"a6d9\",\"\",6],[\"a6ec\",\"\"],[\"a6f3\",\"\"],[\"a6f6\",\"\",8],[\"a740\",\"\",62],[\"a780\",\"\",32],[\"a7c2\",\"\",14],[\"a7f2\",\"\",12],[\"a896\",\"\",10],[\"a8bc\",\"ḿ\"],[\"a8bf\",\"ǹ\"],[\"a8c1\",\"\"],[\"a8ea\",\"\",20],[\"a958\",\"\"],[\"a95b\",\"\"],[\"a95d\",\"\"],[\"a989\",\"〾⿰\",11],[\"a997\",\"\",12],[\"a9f0\",\"\",14],[\"aaa1\",\"\",93],[\"aba1\",\"\",93],[\"aca1\",\"\",93],[\"ada1\",\"\",93],[\"aea1\",\"\",93],[\"afa1\",\"\",93],[\"d7fa\",\"\",4],[\"f8a1\",\"\",93],[\"f9a1\",\"\",93],[\"faa1\",\"\",93],[\"fba1\",\"\",93],[\"fca1\",\"\",93],[\"fda1\",\"\",93],[\"fe50\",\"⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌\"],[\"fe80\",\"䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓\",6,\"䶮\",93],[\"8135f437\",\"\"]]');\n\n/***/ }),\n\n/***/ 40679:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = /*#__PURE__*/JSON.parse('[[\"0\",\"\\\\u0000\",128],[\"a1\",\"。\",62],[\"8140\",\" 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈\",9,\"+-±×\"],[\"8180\",\"÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓\"],[\"81b8\",\"∈∋⊆⊇⊂⊃∪∩\"],[\"81c8\",\"∧∨¬⇒⇔∀∃\"],[\"81da\",\"∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬\"],[\"81f0\",\"ʼn♯♭♪†‡¶\"],[\"81fc\",\"◯\"],[\"824f\",\"0\",9],[\"8260\",\"A\",25],[\"8281\",\"a\",25],[\"829f\",\"ぁ\",82],[\"8340\",\"ァ\",62],[\"8380\",\"ム\",22],[\"839f\",\"Α\",16,\"Σ\",6],[\"83bf\",\"α\",16,\"σ\",6],[\"8440\",\"А\",5,\"ЁЖ\",25],[\"8470\",\"а\",5,\"ёж\",7],[\"8480\",\"о\",17],[\"849f\",\"─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂\"],[\"8740\",\"①\",19,\"Ⅰ\",9],[\"875f\",\"㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡\"],[\"877e\",\"㍻\"],[\"8780\",\"〝〟№㏍℡㊤\",4,\"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪\"],[\"889f\",\"亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭\"],[\"8940\",\"院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円\"],[\"8980\",\"園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改\"],[\"8a40\",\"魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫\"],[\"8a80\",\"橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄\"],[\"8b40\",\"機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救\"],[\"8b80\",\"朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈\"],[\"8c40\",\"掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨\"],[\"8c80\",\"劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向\"],[\"8d40\",\"后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降\"],[\"8d80\",\"項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷\"],[\"8e40\",\"察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止\"],[\"8e80\",\"死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周\"],[\"8f40\",\"宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳\"],[\"8f80\",\"準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾\"],[\"9040\",\"拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨\"],[\"9080\",\"逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線\"],[\"9140\",\"繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻\"],[\"9180\",\"操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只\"],[\"9240\",\"叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄\"],[\"9280\",\"逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓\"],[\"9340\",\"邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬\"],[\"9380\",\"凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入\"],[\"9440\",\"如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅\"],[\"9480\",\"楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美\"],[\"9540\",\"鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷\"],[\"9580\",\"斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋\"],[\"9640\",\"法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆\"],[\"9680\",\"摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒\"],[\"9740\",\"諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲\"],[\"9780\",\"沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯\"],[\"9840\",\"蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕\"],[\"989f\",\"弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲\"],[\"9940\",\"僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭\"],[\"9980\",\"凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨\"],[\"9a40\",\"咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸\"],[\"9a80\",\"噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩\"],[\"9b40\",\"奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀\"],[\"9b80\",\"它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏\"],[\"9c40\",\"廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠\"],[\"9c80\",\"怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛\"],[\"9d40\",\"戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫\"],[\"9d80\",\"捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼\"],[\"9e40\",\"曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎\"],[\"9e80\",\"梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣\"],[\"9f40\",\"檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯\"],[\"9f80\",\"麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌\"],[\"e040\",\"漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝\"],[\"e080\",\"烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱\"],[\"e140\",\"瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿\"],[\"e180\",\"痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬\"],[\"e240\",\"磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰\"],[\"e280\",\"窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆\"],[\"e340\",\"紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷\"],[\"e380\",\"縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋\"],[\"e440\",\"隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤\"],[\"e480\",\"艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈\"],[\"e540\",\"蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬\"],[\"e580\",\"蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞\"],[\"e640\",\"襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧\"],[\"e680\",\"諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊\"],[\"e740\",\"蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜\"],[\"e780\",\"轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮\"],[\"e840\",\"錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙\"],[\"e880\",\"閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰\"],[\"e940\",\"顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃\"],[\"e980\",\"騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈\"],[\"ea40\",\"鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯\"],[\"ea80\",\"黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙\"],[\"ed40\",\"纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏\"],[\"ed80\",\"塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱\"],[\"ee40\",\"犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙\"],[\"ee80\",\"蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑\"],[\"eeef\",\"ⅰ\",9,\"¬¦'"\"],[\"f040\",\"\",62],[\"f080\",\"\",124],[\"f140\",\"\",62],[\"f180\",\"\",124],[\"f240\",\"\",62],[\"f280\",\"\",124],[\"f340\",\"\",62],[\"f380\",\"\",124],[\"f440\",\"\",62],[\"f480\",\"\",124],[\"f540\",\"\",62],[\"f580\",\"\",124],[\"f640\",\"\",62],[\"f680\",\"\",124],[\"f740\",\"\",62],[\"f780\",\"\",124],[\"f840\",\"\",62],[\"f880\",\"\",124],[\"f940\",\"\"],[\"fa40\",\"ⅰ\",9,\"Ⅰ\",9,\"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊\"],[\"fa80\",\"兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯\"],[\"fb40\",\"涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神\"],[\"fb80\",\"祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙\"],[\"fc40\",\"髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑\"]]');\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/global */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.g = (function() {\n/******/ \t\t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\t\ttry {\n/******/ \t\t\t\treturn this || new Function('return this')();\n/******/ \t\t\t} catch (e) {\n/******/ \t\t\t\tif (typeof window === 'object') return window;\n/******/ \t\t\t}\n/******/ \t\t})();\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/node module decorator */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.nmd = function(module) {\n/******/ \t\t\tmodule.paths = [];\n/******/ \t\t\tif (!module.children) module.children = [];\n/******/ \t\t\treturn module;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(36164);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n","this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = {\r\n \"Roboto-Italic.ttf\": \"AAEAAAARAQAABAAQR0RFRqbzo4gAAddgAAACWEdQT1N/jKrdAAHZuAAAWMBHU1VCm18k/AACMngAABX2T1MvMpeDsUwAAAGYAAAAYGNtYXDTfF9iAAAWnAAABoJjdnQgO/gmfQAAL3gAAAD+ZnBnbagFhDIAAB0gAAAPhmdhc3AACAAZAAHXVAAAAAxnbHlmNN3JWAAAOswAAZmmaGVhZAh9pEIAAAEcAAAANmhoZWEMnBKkAAABVAAAACRobXR4VUzdowAAAfgAABSkbG9jYV8SwLgAADB4AAAKVG1heHAI2RDGAAABeAAAACBuYW1lOSJt5gAB1HQAAALAcG9zdP9hAGQAAdc0AAAAIHByZXB5WM7TAAAsqAAAAs4AAQAAAAMCDJn8J2NfDzz1ABsIAAAAAADE8BEuAAAAAODgRcL6N/3VCUMIcwACAAkAAgAAAAAAAAABAAAHbP4MAAAJA/o3/mwJQwgAAbMAAAAAAAAAAAAAAAAFKQABAAAFKQCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAAQAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA5YAZAAAAAAAAAAAAfcAAAH3AAACAABEAnwAyQTHAFIEXABJBa8AugTUADkBWwCsAqgAbQK0/5ADWABrBGcATAGH/48CJQAaAgwANAM0/5AEXABqBFwA+gRcABgEXAA1BFwABQRcAHIEXABtBFwAnQRcAEAEXACUAesAKQGu/5sD8gBCBEIAcAQPADsDqwClBvgAQQUQ/68E1gA7BQ0AcAUYADsEaQA7BEoAOwVJAHQFiQA7AhwASQRIAAcE3gA7BC4AOwbGADsFiQA7BVcAcwTlADsFVwBrBMgAOwScACkEoQCpBQgAYwTxAKUG4gDDBN3/1ASpAKgEpv/sAg8AAAMwAMACD/97Az4ATwOA/4ECZgDQBDkAMQRcAB8EEABGBGAARwQdAEUCswB1BFwAAwRGACAB4wAvAdv/EwPvACAB4wAvBs4AHgRJACAEbQBGBFz/1wRpAEYCoQAgBAEALgKKAEMERwBbA8IAbgXVAIAD2v/FA6z/qgPa/+4CoAA3AeUAIgKg/40FRwBpAeX/8QQ/AFAEg//zBYkAEgQUAEMB3f/4BML/2gM/ANoGGQBeA3kAwwOuAFYETACBBhoAXQOPAPgC5gDoBCYAJgLiAF0C4gBvAm8A1QRm/+YDzAB4AgcApQHt/8gC4gDgA4gAvwOtABEFuQC6Bg8AtQYTAJ4Drf/RB0H/gwQkACgFVwAgBJYAOQSdAB8GjgATBI0AXARvAEQEZgA6BHn/4ASjAEYFcAA2AewALwRSAC4ELgAjAhkAJAVgADUEZgAlB2YAVQcMAEcB7QA0BV0AUgKl/0cFVQBmBHAAQwVlAGMEzQBbAfX/CQQYAD8DpwEYA3MBKAOZAPgDUQEHAeMBDgKZAQECGv+uA6kA3gLlAMMCSP/pAAD9agAA/eoAAP0LAAD99AAA/NsAAPy6Af4BIwPtAPQCEQClBFEARAV5/7IFSABnBRf/xARvAAwFiQBEBG//2wWPAFYFXgCFBSkACgRjAEgEmf/xA+QAhQRmAEUEMAApBAUAigRmACUEawB1AoQAhARN/7gDzgBABKAAYARm/90ELQBKBGUASAQMAIcEPABoBXgAQAVvAE4GZABnBH4AUgQiAGcGGABoBdIAogU8AHMIUP/NCGMARAZRALQFiABCBO4ANgXW/4wHC/+rBJwAJQWJAEQFf//LBOEAlAX+AFsFrQBBBVAAywdNAEIHhABCBeMAigbAAEQE3gA2BTwAdgb6AEkE8f/pBEsARwRwADEDQgAuBK//jQXy/6cD8QAgBHsAMAQyADAEfP/IBcEAMQR6ADAEewAwA7sAYAWhAEkEmgAwBDkAeQZHADAGbAAlBNEAVgYQADEENwAxBC0AMgZWADEEQv+/BEYAIAQtAE4Glf/DBq8AMARwACAEewAwBtMAbgX9AE8ENgAvBvUASgXLAC0Erv+6BCb/ogbWAFsF3gBPBp4AJgW1ACoIwABJB5UALwQE/80Dvf/JBUgAZwRpAEME5ACtA+UAhQVIAGcEZgBDBssAdAX1AFIG0wBuBf0ATwUKAGkEJwBMBNgAQAAA/OcAAP0KAAD+FgAA/jsAAPo3AAD6TgXlAEQE0QAwBDYALwT0ADsEZ//XBEIANQN2ACUEwABEA+cAJQdx/6sGOv+nBXkARASeADAE4wA2BFwALgZaALwFWgB2BdsAOwS+ADAHkwA7BYgAJQf8AEIGvwAlBcEAawSvAFwE+//UBBT/xQb2AKwFNABXBZoAywR9AHkFRgDKBEkAlAVGABwGAACIBJoABATjADYEOQAuBdr/ywTT/8gFhwBEBGYAJQXtADsE0AAwByEAOwYYADEFXQBSBIQAPASE//0Env/5A5n/6QUQ/9QEKf/FBNEALgZiADEGsABIBiYArQUEAGgEKQCwA+kAoAeG/+AGRP/aB74APAZvACME0QBlA/4ATQWCAJsE+gB9BTwAaAXe/8sE1//IAwkA8wP/AAAH9AAAA/8AAAf0AAACrgAAAgQAAAFcAAAEZgAAAikAAAGfAAABAgAAANUAAAAAAAACLQAaAi0AGgUiAKYGGQCYA4r/XgGOALABjgCJAYz/lwGOANICyAC4AtAAlQKt/5QESAB3BG3/9gKeAKEDsQA4BTsAOAF0AFIHbwCWAlUAXQJVAAQDh//wAuIAjwLiAGQC4gCKAuIAkALiAKIC4gB7AuIAqgMfAIgC4QCJAuEAcwHiAI8B4gA+A0cAfgLi/9wC4gAtAuL/qwLi/7wC4v+yAuL/2ALi/94C4v/wAuL/yQLi//gDKf/cAuv/3QLr/8cB4v/oAeL/nQSD//MGJQAKBl8AOQg/ADsFvgAJBfwAHwRcAFEFrQBDBAMASgRSAAsFH//yBSb/5QW7AMwDsQBLB/sANQTbAOsE8QB/BgEAtgasAJIGpQCQBkMAvgRtAE0FZAAkBIv/rQRwAKsEoABBB/sASwH9/xUEXwAzBEIAcAP8/9MEGQAYA+kAQgJEAHcCfABxAfX/5ATXAHUETQBZBGgAdQagAHUGoAB1BMgAdQZoACgAAAAAB/X/qwg1AFwC2P/qAtgAbALYABwD8QBpA/EAJwPxAHAD8ABLA/EASgPx//cD8QAXA/H//QPxAL0D8QBGBAP/3QQLAHUEM/+3BeYAlARGAHkEWwBCBAcAbgQAABIEKQAdBJgARgQ7AB4EmABMBL0AHgXUAB4DmQAeBDQAHgOy//YB2gArBL4AHgSIAEwDrwAeBAAAEgQUAAYDhQAZA5MAHgRG/7AEmABMBEb/sANu/9MEqgAeA9L/1gU+AFIE8AB9BM0ADgVJAG0EWgBIBwr/wwcYAB4FSgBuBKkAHgQ5ACAE/f+JBd3/rwQfABIExgAgBC0AHwSc/8QEAABaBQEAHgRIAFYGIAAeBnkAHgT2AFEFzQAgBC4AIARaACAGRQAeBGT/4APz//oGGP+vBFcAHwTjAB8FDwBqBZcAUARHAHUEhP+3BjEAbQRIAFUESAAeBZgALgSmAEAEHwASBJwARgQUAAADxgAfB+QAHgSH/94C2P/7Atj/8QLYABcC2AAdAtgALwLYAAgC2AA3A3sAkwKgAQsDyAAeBBr/mQSfAEgFIwBEBP0ARAP1ACYFFQBEA/AAJgRdAB4EWgBIBDAAHgRj/6YB7wD8A4kBEgAA/SoD0gDTA9YAIgPwAM4D1wDNA5MAHgOEARIDgwETAuIAjwLiAGQC4gCKAuIAkALiAKIC4gB7AuIAqgVYAIAFgwCBBWgARAWzAIMFtgCDA7gAvARfADkEN/+BBKr/0wRJ/9UEDgArA4kBFAGG/74GcQBMBJYAPgHt/w8EZv+sBGb/4wRm/7gEZgAsBGYAVgRmACQEZgBmBGYAGwRmAEAEZgENAgD/CQH//wkB9gAvAfb/eAH2AC8EMAAeBNoAZAQBAGIEXAAfBBMARARwAEMEaQAjBHwAQgRr/9cEeQBCBB0ARgRcADUETv+/A2gAqQSxACwDmf/pBgr/mgPaAB4EmP/0BL0AHgS9AB4B9wAAAiUAGgU2AC8FNgAvBGQAPgShAKkCiv/0BRD/rwUQ/68FEP+vBRD/rwUQ/68FEP+vBRD/rwUNAHAEaQA7BGkAOwRpADsEaQA7AhwASQIcAEkCHABJAhwASQWJADsFVwBzBVcAcwVXAHMFVwBzBVcAcwUIAGMFCABjBQgAYwUIAGMEqQCoBDkAMQQ5ADEEOQAxBDkAMQQ5ADEEOQAxBDkAMQQQAEYEHQBFBB0ARQQdAEUEHQBFAewALwHsAC8B7AAvAewALwRJACAEbQBGBG0ARgRtAEYEbQBGBG0ARgRHAFsERwBbBEcAWwRHAFsDrP+qA6z/qgUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUNAHAEEABGBQ0AcAQQAEYFDQBwBBAARgUNAHAEEABGBRgAOwT2AEcEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBUkAdARcAAMFSQB0BFwAAwVJAHQEXAADBUkAdARcAAMFiQA7BEYAIAIcAEkB7AARAhwASQHsAC4CHABJAewALwIc/4sB4/9tAhwASQZkAEkDvgAvBEgABwH1/wkE3gA7A+8AIAQuADsB4wAvBC4AOwHj/6IELgA7AnkALwQuADsCvwAvBYkAOwRJACAFiQA7BEkAIAWJADsESQAgBEkAIAVXAHMEbQBGBVcAcwRtAEYFVwBzBG0ARgTIADsCoQAgBMgAOwKh/58EyAA7AqEAIAScACkEAQAuBJwAKQQBAC4EnAApBAEALgScACkEAQAuBJwAKQQBAC4EoQCpAooAQwShAKkCigBDBKEAqQKyAEMFCABjBEcAWwUIAGMERwBbBQgAYwRHAFsFCABjBEcAWwUIAGMERwBbBQgAYwRHAFsG4gDDBdUAgASpAKgDrP+qBKkAqASm/+wD2v/uBKb/7APa/+4Epv/sA9r/7gdB/4MGjgATBVcAIARmADoEXf+vBF3/rwQHAG4EY/+mBGP/pgRj/6YEY/+mBGP/pgRj/6YEY/+mBFoASAPIAB4DyAAeA8gAHgPIAB4B2gArAdoAKwHaACsB2gArBL0AHgSYAEwEmABMBJgATASYAEwEmABMBFsAQgRbAEIEWwBCBFsAQgQLAHUEY/+mBGP/pgRj/6YEWgBIBFoASARaAEgEWgBIBF0AHgPIAB4DyAAeA8gAHgPIAB4DyAAeBIgATASIAEwEiABMBIgATAS+AB4B2gAOAdoAKwHaACsB5P+CAdoAKwOy//YENAAeA5kAHgOZAB4DmQAeA5kAHgS9AB4EvQAeBL0AHgSYAEwEmABMBJgATAQpAB0EKQAdBCkAHQQAABIEAAASBAAAEgQAABIEBwBuBAcAbgQHAG4EWwBCBFsAQgRbAEIEWwBCBFsAQgRbAEIF5gCUBAsAdQQLAHUEA//dBAP/3QQD/90FEP+vBM0AAwXtABECgAAXBWsAawUN/+0FPQAeAoQAIAUQ/68E1gA7BGkAOwSm/+wFiQA7AhwASQTeADsGxgA7BYkAOwVXAHME5QA7BKEAqQSpAKgE3f/UAhwASQSpAKgEYwBIBDAAKQRmACUChACEBDwAaARSAC4EbQBGBGb/5gPCAG4ETv+/AoQAZQQ8AGgEbQBGBDwAaAZkAGcEaQA7BFEARAScACkCHABJAhwASQRIAAcE/QBEBN4AOwThAJQFEP+vBNYAOwRRAEQEaQA7BYkARAbGADsFiQA7BVcAcwWJAEQE5QA7BQ0AcAShAKkE3f/UBDkAMQQdAEUEewAwBG0ARgRc/9cEEABGA6z/qgPa/8UEHQBFA0IALgQBAC4B4wAvAewALwHb/xMEMgAwA6z/qgbiAMMF1QCABuIAwwXVAIAG4gDDBdUAgASpAKgDrP+qAVsArAJ8AMkEAABEAfX/CQGOAIkGxgA7Bs4AHgUQ/68EOQAxBGkAOwWJAEQEHQBFBHsAMAVeAIUFbwBOBOQArQPlAIUIGQBGCQMAcwScACUD8QAgBQ0AcAQQAEYEqQCoA+QAhQIcAEkHC/+rBfL/pwIcAEkFEP+vBDkAMQUQ/68EOQAxB0H/gwaOABMEaQA7BB0ARQVdAFIEGAA/BBgAPwcL/6sF8v+nBJwAJQPxACAFiQBEBHsAMAWJAEQEewAwBVcAcwRtAEYFSABnBGkAQwVIAGcEaQBDBTwAdgQtADIE4QCUA6z/qgThAJQDrP+qBOEAlAOs/6oFUADLBDkAeQbAAEQGEAAxBGAARwUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUCHABJAewALwIcAA0B4//wBVcAcwRtAEYFVwBzBG0ARgVXAHMEbQBGBVcAcwRtAEYFVwBzBG0ARgVXAHMEbQBGBVcAcwRtAEYFVQBmBHAAQwVVAGYEcABDBVUAZgRwAEMFVQBmBHAAQwVVAGYEcABDBQgAYwRHAFsFCABjBEcAWwVlAGMEzQBbBWUAYwTNAFsFZQBjBM0AWwVlAGMEzQBbBWUAYwTNAFsEqQCoA6z/qgSpAKgDrP+qBKkAqAOs/6oEfgAABKEAqQO7AGAFUADLBDkAeQRRAEQDQgAuBgAAiASaAAQERgAgBN4ALATeACwEUQARA0L/5wURAFgECQA6BKkAqAPkAF4E3f/UA9r/xQQwACkESv/XBhkAmARcABgEXAA1BFwABQRcAHIEcACBBIQAVARwAJQEhAB+BUkAdARcAAMFiQA7BEkAIAUQ/68EOQAxBGkAOwQdAEUCHP/gAez/jQVXAHMEbQBGBMgAOwKhACAFCABjBEcAWwSG/7EE1gA7BFwAHwUYADsEYABHBRgAOwRgAEcFiQA7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AGUAcwAvAEwASQBDAEUATgBTAEUALQAyAC4AMAADAAD/9AAA/2oAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgAIAAj//wAPAAEAAgAOAAAAAAAAAigAAgBZACUAPgABAEQAXgABAGoAagABAHAAcAABAHUAdQABAIEAgQABAIMAgwABAIYAhgABAIkAiQABAIsAlgABAJgAnwABAKEAowABAKUApgABAKgArQADALEAsQABALoAuwABAL8AvwABAMEAwQABAMMAxAABAMcAxwABAMsAywABAM0AzgABANAA0QABANMA0wABANoA3gABAOEA4QABAOUA5QABAOcA6QABAOsA+wABAP0A/QABAP8BAQABAQMBAwABAQgBCQABARYBGgABARwBHAABASABIgABASQBJwADASoBKwABATMBNAABATYBNgABATsBPAABAUEBRAABAUcBSAABAUsBTQABAVEBUQABAVQBWAABAV0BXgABAWIBYgABAWQBZAABAWgBaAABAWoBbAABAW4BbgABAXABcAABAdUB2wACAewCAAABAgQCBAABAg0CDQABAg8CDwABAhYCGAABAhoCGwABAh0CHQABAiECIQABAiMCJQABAisCKwABAjACMgABAjQCNAABAkICQgABAkUCRQABAkcCRwABAkoCTQABAnkCfQABAo0CkgABApUC/QABAwADvwABA8EDwQABA8MDzQABA88D2AABA9oD9QABA/kD+QABA/sEAgABBAQEBgABBAkEDQABBA8EmgABBJ0EngABBKAEoQABBKMEpgABBLAFDAABBQ4FGAABBRsFKAABAAEAAwAAABAAAAAWAAAAIAABAAEArQACAAEAqACsAAAAAgACAKgArAAAASQBJwAFAAEAAAAWADAACgAFAEYATgBYAGIAbAAEREZMVABqY3lybABuZ3JlawBybGF0bgB2AAVjcHNwAGBrZXJuAGxrZXJuAGZrZXJuAHRrZXJuAHwAAQAAAAEAZAACAAgAAgEyCAgAAgAIAAIAzAQuAAIACAACAjIP/AACAAgAAgBIAIAATgAAAFQAAABaAAAAYAAAAAAAAQAAAAAAAQAEAAAAAgAEAAMAAAACAAQAAQAAAAIABAACAAErTAAFACQASAABGRIABAAAAAMZBhkcGQwAAP//AAIAAAACAAD//wACAAAAAwAA//8AAgAAAAQAAP//AAIAAAABAAIZDgAEAAAZVBt4AAQABQAA/5UAAAAA/4gAAP9WAAAAAAAAAAAAAAAAAAAAAAAA/4gAAAAAAAAAARv2AAQAAAApGXwZihlKGtgZ2BmmGgQZtBnuGlYafBj+GcYZBByiGRYdBBukGqoZChkQHWoZVBoaGgQZphxMGgQZXhloGaYZmBsKHEwaNBxMGRYZchnGGXIZpgABLrQABAAAAIUeQh4IHYwdkh3QHwYgAjbCMNQ08ih8Hn4x6izCH9AlEB5+Hn4hHB5+Hn4efimMJBQefh+mJJIjJB5cJ9IiZB28JzQdmB98I5ovwh4sIN4lkiG4HyweLCIOH1IhZiA4HywgpB7CHewdsh98HiwmHB28H9AdmCBuIG4gbh5+H9AdmB5+Hn4d+h28H9AdmCLCJhwefh5+IG4gbiEcIKQdniYcHn4efh36Hd4eGiamH9AeoB2oHsIeLB2yHZgdqB28HbIdqB3sHbIeGh7kHbIefh/QHZgefiCkHqAgpB6gHagdqB2oH9AdmB36HsIewh4sIRwdsiEcHbIhHB2yJqYmHB28HcYfpiYcIG4e5AABOcYABAAAAPQswChIKEgy9CzWK2goTit2PCArhCzsKE4objUkMi4tMiyuLQIoWjHwK6AycBemN8IXpjccF6YXphemK5IzOihULRgoVDKyKE4ziCycKEg4nChIKEgoSChCLVQteig8KGQoNitaKDYraChOKE4oTihOLTIs1izWLNYs1izWLNYs1itoK3Yrdit2K3YoTihOKE4oTihOMfAXphemF6YXphemF6YXphemF6YXpihUKFQs1izWLNYraCtoK2graChOK3YXpit2F6YrdhemK3YXpit2F6YXpiuELOws7CzsLOwXphemF6YXpihOF6YoThemKE4XpiuSK5Irki0yLTItMi0CMfAoVDHwK6AroCugKDwoPChCKDYoNig2KDYoNig2KDYoPCg8KDwoPCg8KDYoNig2KDwoZChkKGQoZCg8KDwoPChCLQItAi0CMfAoVChIKEgoSBemLNYs1izWLNYs1izWLNYs1izWLNYs1izWLNYrdhemK3YXpit2F6YrdhemK3YXpit2F6YrdhemK3YXpihOF6YoThemKE4XpihOF6YoThemKE4XpihOF6YXpjHwKFQx8ChUMfAoVBemLNYrdihO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/58AOgCyAA8A0v/mANQADgDW/+YA2QATANoADgDdAA4A3gALAOH/5QDm/+YA5//0AO0AEgDyAA8A9v/nAPn/6AD+AAABBAAPAQ0ADwEZ/+YBMwAOATn/5gE6/+cBQwAOAUX/5gFH/+UBSP/oAUn/5QFK/+gBTP/kAVAADgFRAA8BXQAOAWL/5gFk/+YBZgAOAWz/5gFt/+cBbwAOAXAADwPQAAsD0QAPA9z/5gPdAA4EBf/mBA3/5gQQAA4EEwAPBBUADwQeAA4ELgALBDAACwQyAAsENP/lBDX/6ASS/+YElP/lBJX/6ASh/+YAAQD6AAgACgAUABUAFgAXABgAGQAaABsAHAAdACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAgQCDAIQAjACPAJEAkwCxALIAswC0ALUAtgC3ALgAuQC6ANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAS8BMwE1ATcBOQE7AUEBQwFFAUkBSwFMAVgBWQGxAbcBvAG/ApUClgKYApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0AtEC0wLVAtcC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8QLzAvUC9wL5AvsC/QL+AwADAgMEAwYDCAMKAwwDDgMQAxMDFQMXAxkDGwMdAx8DIQMjAyUDJwMpAysDLQMvAzEDMwM1AzcDOQM7Az0DPwNAA0IDRANGA0gDoQOiA6MDpAOlA6YDpwOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D7gPwA/ID9AQJBAsEDQQiBCgELgSYBJ0EoQUiBSQAAwHv//UB8P/uA5v/9QADAA3/5gBB//QAYf/vAAMASv/uAFv/6gHw//AAAwBb/8EB///mAkv/6AADAEoADwBYADIAWwARAAMAW//lAf//6wJL/+0AOwCyABAA0v/gANP/6ADUABAA1v/gANkAFADdABAA4f/hAOb/4ADtABMA8gAQAPn/4AEEABABCP/oAQ0AEAEX/+gBGf/gARv/6AEd/+gBH//oASH/6AE5/+ABQf/oAUX/4AFH/+EBSP/gAUn/4QFK/+ABTf/hAVAAEAFRABABWP/pAWL/3wFk/94BZgAQAWr/6AFs/98Bbv/yAW8AEAFwABAD0QAQA9j/6APb/+gD3P/gBAX/4AQI/+gEC//oBA3/3wQTABAEFQAQBCb/6AQo/+gEKv/oBDT/4QQ1/+AEkv/gBJT/4QSV/+AEof/fAAQAWP/vAFv/3wCa/+4B8P/NAAQADQAUAEEAEQBW/+IAYQATAAUAOP/YAyn/2AMr/9gDLf/YBNr/2AAFACP/wwBY/+8AW//fAJr/7gHw/80ABQBb/6QB8P9UAfX/8QH///ECS//zAAUADQAPAEEADABW/+sAYQAOAkv/6QAGABD/hAAS/4QBhv+EAYr/hAGO/4QBj/+EAAgABP/YAFb/tQBb/8cAbf64AHz/KACB/00Ahv+OAIn/oQAJAe3/7gHv//UB8P/xAfL/8gNn/+4Dk//yA5v/9QOc/+4Dnf/uAAkB7f/lAe//8QHw/+sB8v/pA2f/5QOT/+kDm//xA5z/5QOd/+UAAQCFAAQADAA/AF8AlgCdALIA0gDUANUA1gDXANgA2QDaANsA3ADdAN4A4ADhAOIA4wDkAOUA5gDnAOgA6QDqAOsA7ADtAO4A7wDxAPYA9wD4APsA/AD+AP8BAAEDAQQBBQEKAQ0BGAEZARoBIgEuAS8BMAEzATQBNQE3ATkBOwFDAUQBVAFWAVgBXAFdAV4BhQPJA8sDzAPOA88D0APRA9ID0wPWA9cD2APaA9sD3APdA94D3wPhA+ID5APlA+YD5wPtBAEEBQQGBAsEDQQOBA8EEAQRBBIEEwQUBBUEFgQaBBwEHQQeBB8EJgQnBCsELQQuBC8EMAQxBDIEMwSSBJYElwSaBJwEnQSfBKEARAAGAA0ACwANAO3/qgDy/68A9/+wAQP/sAEE/68BGP/WARoACwEc/+IBHv+wASAADAEi/7ABQv+wAVH/rwFg/7ABYf+wAWMACwFlAAsBa/+wAXD/rwGEAA0BhQANAYcADQGIAA0BiQANAgX/vwIOAA4CD//tAhIADgIqAA4CK//tAiwADQIuAA4CNP/tA97/8APf/7AD4f/WA+P/sAPkAAsD5v+wA+0ACwP2AA0D9wANA/oADQQB/7AEBgALBAf/sAQM/7AEDgALBBT/8AQW//AEGv+wBBz/sAQd/7AEJ//WBCn/sAQr/9YELwALBDEACwQzAAsEOP+wBQX/vwUM/+0FD//tBRAADgUU/+0FFQANAEUA0v71ANT/9QDW/vUA2v/wAN3/9QDe/+sA4f/nAOb/wwDsAAAA8AAAAPEAAADzAAAA9AAAAPUAAAD2/88A+AAAAPoAAAD7AAAA/gAAAQAAAAEFAAABGf/IASsAAAEz//ABNgAAATn+9QE6/84BPAAAAT4AAAFD//ABRf71AUf/5wFJ/+cBTP/fAVD/9QFTAAABVQAAAVcAAAFcAAABXf/wAWL/0QFk/+wBZv/1AWz/oAFt/9EBb//1A9D/6wPc/vUD3f/wA+AAAAPiAAAD5wAAA+wAAAQCAAAEBf/IBA3/rQQQ//AEHv/wBCMAAAQlAAAELv/rBDD/6wQy/+sENP/nBDcAAASS/vUElP/nBJcAAASh/60ARgDS/+YA1v/mANr/8gDe/+4A4f/oAOb/5gDsAAAA7v/xAPAAAADxAAAA8wAAAPQAAAD1AAAA9v/QAPgAAAD6AAAA+wAAAP4AAAEAAAABBQAAARn/5wErAAABM//yATT/8QE2AAABOf/mATr/zgE8AAABPgAAAUP/8gFE//EBRf/mAUf/6AFJ/+gBUwAAAVUAAAFXAAABXAAAAV3/8gFe//EBYv/nAWT/7QFs/+YBbf/QA9D/7gPc/+YD3f/yA+AAAAPiAAAD5f/xA+cAAAPsAAAEAgAABAX/5wQN/+cEEP/yBBH/8QQe//IEH//xBCMAAAQlAAAELv/uBDD/7gQy/+4ENP/oBDcAAASS/+YElP/oBJcAAASh/+cADwAK/+IADQAUAA7/zwBBABIASv/qAFb/2ABY/+oAYQATAG3/rgB8/80Agf+gAIb/wQCJ/8ABjf/TAkv/zQAQADj/sAA6/+0APf/QArT/0AMp/7ADK/+wAy3/sAM9/9ADP//QA/T/0ASL/9AEjf/QBI//0ATa/7AE3f/tBN//7QAQAC7/7gA5/+4CsP/uArH/7gKy/+4Cs//uAwD/7gMv/+4DMf/uAzP/7gM1/+4DN//uAzn/7gR9/+4Ef//uBNz/7gAQAC7/7AA5/+wCsP/sArH/7AKy/+wCs//sAwD/7AMv/+wDMf/sAzP/7AM1/+wDN//sAzn/7AR9/+wEf//sBNz/7AARADoAFAA7ABIAPQAWArQAFgM7ABIDPQAWAz8AFgPuABID8AASA/IAEgP0ABYEiwAWBI0AFgSPABYE3QAUBN8AFAThABIAEwBT/+wBhQAAAsb/7ALH/+wCyP/sAsn/7ALK/+wDFP/sAxb/7AMY/+wEZv/sBGj/7ARq/+wEbP/sBG7/7ARw/+wEcv/sBHr/7AS7/+wAFQAG//IAC//yAFr/8wBd//MBhP/yAYX/8gGH//IBiP/yAYn/8gLP//MC0P/zAz7/8wP1//MD9v/yA/f/8gP6//IEjP/zBI7/8wSQ//ME3v/zBOD/8wBRAAb/wAAL/8AA0v71ANb+9QDa//AA3v/rAOH/5wDm/8MA7AAAAO7/yQDwAAAA8QAAAPMAAAD0AAAA9QAAAPb/zwD4AAAA+gAAAPsAAAD+AAABAAAAAQUAAAEZ/8gBKwAAATP/8AE0/8kBNgAAATn+9QE6/84BPAAAAT4AAAFD//ABRP/JAUX+9QFH/+cBSf/nAUz/3wFTAAABVQAAAVcAAAFcAAABXf/wAV7/yQFi/9EBZP/sAWz/oAFt/9EBhP/AAYX/wAGH/8ABiP/AAYn/wAPQ/+sD3P71A93/8APgAAAD4gAAA+X/yQPnAAAD7AAAA/b/wAP3/8AD+v/ABAIAAAQF/8gEDf+tBBD/8AQR/8kEHv/wBB//yQQjAAAEJQAABC7/6wQw/+sEMv/rBDT/5wQ3AAAEkv71BJT/5wSXAAAEof+tACIAOP/VADr/5AA7/+wAPf/dAgUADgJNAA4CtP/dAyn/1QMr/9UDLf/VAzv/7AM9/90DP//dA00ADgNOAA4DTwAOA1AADgNRAA4DUgAOA1MADgNoAA4DaQAOA2oADgPu/+wD8P/sA/L/7AP0/90Ei//dBI3/3QSP/90E2v/VBN3/5ATf/+QE4f/sAFsABv/KAAv/ygDS/9IA1v/SANr/9ADe/+0A4f/hAOb/1ADs/9EA7v/vAPD/0QDx/9EA8//RAPT/0QD1/9EA9v/JAPj/0QD6/9EA+//RAP7/0QEA/9EBBf/RAQn/5QEZ/9QBGv/mASD/4wEr/9EBM//0ATT/7wE2/9EBOf/SATr/xAE8/9EBPv/RAUP/9AFE/+8BRf/SAUf/4QFJ/+EBU//RAVX/0QFX/9EBXP/RAV3/9AFe/+8BYv/UAWP/9QFk/+cBbP/SAW3/yQGE/8oBhf/KAYf/ygGI/8oBif/KA9D/7QPc/9ID3f/0A+D/0QPi/9ED5P/mA+X/7wPn/9ED7P/RA+3/5gP2/8oD9//KA/r/ygQC/9EEBf/UBAb/5gQN/9MEDv/mBBD/9AQR/+8EHv/0BB//7wQj/9EEJf/RBC7/7QQv/+YEMP/tBDH/5gQy/+0EM//mBDT/4QQ3/9EEkv/SBJT/4QSX/9EEof/TACkAR//sAEj/7ABJ/+wAS//sAFX/7ACU/+wAmf/sArz/7AK9/+wCvv/sAr//7ALA/+wC2P/sAtr/7ALc/+wC3v/sAuD/7ALi/+wC5P/sAub/7ALo/+wC6v/sAuz/7ALu/+wC8P/sAvL/7ARS/+wEVP/sBFb/7ARY/+wEWv/sBFz/7ARe/+wEYP/sBHT/7AR2/+wEeP/sBHz/7AS3/+wExP/sBMb/7AA2AAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCU/+gAmf/oAYQAEAGFABABhwAQAYgAEAGJABACvP/oAr3/6AK+/+gCv//oAsD/6ALY/+gC2v/oAtz/6ALe/+gC4P/oAuL/6ALk/+gC5v/oAuj/6ALq/+gC7P/oAu7/6ALw/+gC8v/oA/YAEAP3ABAD+gAQBFL/6ARU/+gEVv/oBFj/6ARa/+gEXP/oBF7/6ARg/+gEdP/oBHb/6AR4/+gEfP/oBLf/6ATE/+gExv/oAEoAR//FAEj/xQBJ/8UAS//FAEwAIABPACAAUAAgAFP/gABV/8UAV/+QAFsACwCU/8UAmf/FAdv/kAK8/8UCvf/FAr7/xQK//8UCwP/FAsb/gALH/4ACyP+AAsn/gALK/4AC2P/FAtr/xQLc/8UC3v/FAuD/xQLi/8UC5P/FAub/xQLo/8UC6v/FAuz/xQLu/8UC8P/FAvL/xQMU/4ADFv+AAxj/gAMg/5ADIv+QAyT/kAMm/5ADKP+QBFL/xQRU/8UEVv/FBFj/xQRa/8UEXP/FBF7/xQRg/8UEZv+ABGj/gARq/4AEbP+ABG7/gARw/4AEcv+ABHT/xQR2/8UEeP/FBHr/gAR8/8UEt//FBLv/gATE/8UExv/FBMgAIATKACAEzAAgBNn/kAABAPQABAAGAAsADAAlACcAKAApACoALwAwADMANAA1ADYAOAA6ADsAPAA9AD4APwBJAEoATABPAFEAUgBTAFYAWABaAFsAXQBfAJYAnQCyAYQBhQGHAYgBiQHyAfQB9QH3AfoCBQJKAk0CXwJhAmIClQKWApgCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCqwKsAq0CrgKvArQCvQK+Ar8CwALFAsYCxwLIAskCygLPAtAC0QLTAtUC1wLZAtsC3QLfAuEC4gLjAuQC5QLmAucC6ALpAuoC9AMCAwQDBgMIAwoDDQMPAxEDEgMTAxQDFQMWAxcDGAMaAxwDHgMpAysDLQM7Az0DPgM/A0ADQgNEA0oDSwNMA00DTgNPA1ADUQNSA1MDXgNfA2ADYQNiA2gDaQNqA28DgQOCA4MDhAOIA4kDigOTA+4D8APyA/QD9QP2A/cD+gP8A/0EOQQ7BD0EPwRBBEMERQRHBEkESwRNBE8EUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEegSLBIwEjQSOBI8EkASzBLQEtgS6BLsEvQTDBMUEyATJBMsEzQTQBNIE0wTUBNcE2gTdBN4E3wTgBOEE4wABADUABgALAJYAsQCyALMAtAC9AMEAxwGEAYUBhwGIAYkCBQIGAgcDoQOiA6MDpAOlA6YDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO7A78DwQPFA/YD9wP6BOUE5gTqBO0E8wT4AKcAEP8WABL/FgAl/1YALv74ADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qALL/VgGG/xYBiv8WAY7/FgGP/xYCBf/AAk3/wAKa/1YCm/9WApz/VgKd/1YCnv9WAp//VgKg/1YCtf/eArb/3gK3/94CuP/eArn/3gK6/94Cu//eArz/6wK9/+sCvv/rAr//6wLA/+sCxv/rAsf/6wLI/+sCyf/rAsr/6wLL/+oCzP/qAs3/6gLO/+oCz//oAtD/6ALR/1YC0v/eAtP/VgLU/94C1f9WAtb/3gLY/+sC2v/rAtz/6wLe/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wLq/+sC7P/rAu7/6wLw/+sC8v/rAwD++AMU/+sDFv/rAxj/6wMpABQDKwAUAy0AFAMw/+oDMv/qAzT/6gM2/+oDOP/qAzr/6gM+/+gDTf/A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AiQCJQIOAg8CEAIRAhICEwJVAicCKAIpAioFEwIrAi0CLgIvAjECMwKRA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDnQNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9BRoDfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5AFHQORA5IDlAOTA5UDlgOXA5gDmQOaA5sDnAOeA58DoAUbBRwE5gTnBOgE6QTzBPYE9AT1BPoE+wT8BOoE6wTsBQUFCAUJBQwFDgUPAhsFEQT9BP4E/wUABQEFAgUDBQQFHgUfBSAFIQUSBRQFFQIyBRcCNAUYBRYCMAImAiwFJgUnAAIHAAD6AgECjAHrAeoB6QHoAecB5gHlAeQB4wHiAk0CTAJLAkoCQgIAAf8B/gH9AfwB+wH6AfkB+AH3AfYB9QH0AfMB8gHxAfAB7wHuAe0B7AICAgMCjgKQAo8CkQKNApICbAIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgITAhQCFQIWAhcCGAIaAhsFGQIcAh0CHgIfAiACIQIiAiMCJAIlAlUCJwIoAikCKgUTAisCLQIuAi8CMAIxAjICMwI1AjYCOAI3A0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgUaA38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQBR0DkQOSA5QDkwOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAUbBRwE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCAhkFAwUEBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBREFHgUfBSAFIQUSBRQFFQUXAjQFGAUWAiYCLAUmBScAAQABAXsAAQABAEsAAQABALsAAQABADYAAQABABMAAQACAyMDJAACBuQG2AACBuYG2AABBu4AAQbwAAEG8gACAAEAFAAdAAAAAQACAC8ATwABAAMASQBLAoQAAgAAAAEG3gABAAYC1QLWAucC6ANqA3MAAQAGAE0ATgL8A+kD6wRkAAIAAwGUAZQAAAHfAeEAAQI5Aj8ABAACAAIAqACsAAEBJAEnAAEAAQAMACcAKAArADMANQBGAEcASABLAFMAVABVAAIAAgAUAB0AAAJvAngACgACAAYATQBNAAYATgBOAAQC/AL8AAUD6QPpAAMD6wPrAAIEZARkAAEAAgAEABQAHQAAAoACgAAKAosCiwALBKgErwAMAAIABgAaABoAAAAcABwAAQJkAmkAAgJtAm0ACAJvAngACQJ/An8AEwABABQAGgAcAmQCZQJmAmcCaAJpAm0CfwKAAosEqASpBKoEqwSsBK0ErgSvAAEF3gABBeAAAQXiAAEF5AABBeYAAQXoAAEF6gABBewAAQXuAAEF8AABBfIAAQX0AAEF9gABBfgAAQX6AAIF/AYCAAIGAgYIAAIGCAYOAAIGDgYUAAIGFAYaAAIGGgYgAAIGIAYmAAIGJgYsAAIGLAYyAAIGMgY4AAIGOAY+AAMGPgZEBkoAAwZIBk4GVAADBlIGWAZeAAMGXAZiBmgAAwZmBmwGcgADBnAGdgZ8AAMGegaABoYAAwaEBooGkAAEBo4GlAaaBqAABAacBqIGqAauAAUGqgawBrYGvAbCAAUGvAbCBsgGzgbUAAUGzgbUBtoG4AbmAAUG4AbmBuwG8gb4AAUG8gb4Bv4HBAcKAAUHBAcKBxAHFgccAAUHFgccByIHKAcuAAUHKAcuBzQHOgdAAAUHOgdAB0YHTAdSAAYHTAdSB1gHXgdkB2oABgdiB2gHbgd0B3oHgAAGB3gHfgeEB4oHkAeWAAYHjgeUB5oHoAemB6wABgekB6oHsAe2B7wHwgAGB7oHwAfGB8wH0gfYAAYH0AfWB9wH4gfoB+4ABwguB+YH7AfyB/gH/ggEAAcIJgf6CAAIBggMCBIIGAABAOsACgBFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AhQCGAIcAiQCKAIsAjQCQAJIAlAC7ALwAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4A6gDrAOwA7QDuAO8A8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A/wEAAQEBAgEDAQQBBQEGAQcBMAE0ATYBOAE6ATwBQgFEAUYBSgFNAVoClwKZArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0gLUAtYC2ALaAtwC3gLgAuIC5ALmAugC6gLsAu4C8ALyAvQC9gL4AvoC/AL/AwEDAwMFAwcDCQMLAw0DDwMRAxQDFgMYAxoDHAMeAyADIgMkAyYDKAMqAywDLgMwAzIDNAM2AzgDOgM8Az4DQQNDA0UDRwNJA7kDugO7A7wDvgO/A8ADwQPCA8MDxAPFA8YDxwPeA98D4APhA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+8D8QPzA/UECgQMBA4EHAQjBCkELwSZBJoEngSiBSMFJQABAPoACAAKABQAFQAWABcAGAAZABoAGwAcAB0AJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AGUAZwCBAIMAhACMAI8AkQCTALEAsgCzALQAtQC2ALcAuAC5ALoA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkBLwEzATUBNwE5ATsBQQFDAUUBSQFLAUwBWAFZAbEBtwG8Ab8ClQKWApgCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQC0QLTAtUC1wLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvMC9QL3AvkC+wL9Av4DAAMCAwQDBgMIAwoDDAMOAxADEwMVAxcDGQMbAx0DHwMhAyMDJQMnAykDKwMtAy8DMQMzAzUDNwM5AzsDPQM/A0ADQgNEA0YDSAOhA6IDowOkA6UDpgOnA6kDqgOrA6wDrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD1APVA9YD1wPYA9kD2gPbA9wD3QPuA/AD8gP0BAkECwQNBCIEKAQuBJgEnQShBSIFJAHWAAIATQHXAAIAUAHYAAMASgBNAdkAAwBKAFAAAQABAEoB1QACAEoB2wACAFgB2gACAFgAAQADAEoAVwCVAAAAAQABAAEAAQAAAAMEwQACAK0C1wACAKkExwACAK0E1AACAKkEwgACAK0C2AACAKkEsQACAKkEyAACAK0EZAACAK0E1QACAKkDRgACAKkDSAACAKkDRwACAKkDSQACAKkEwAACAKkExQACAdQEwwACAK0EsAACAKkC8QACAdQD+wACAKkEzwACAK0DKQACAdQE2gACAK0E3wACAK0E3QACAKoDQAACAKkE4wACAK0ExgACAdQExAACAK0D/AACAKkE0AACAK0DKgACAdQE2wACAK0E4AACAK0E3gACAKoDQQACAKkE5AACAK0EyQACAKkDAgACAdQEywACAK0DBAACAKkDBgACAdQEzQACAK0DHwACAKkDJQACAdQE2AACAK0D8AACAKkE4QACAK0D7gACAKgEygACAKkDAwACAdQEzAACAK0DBQACAKkDBwACAdQEzgACAK0DIAACAKkDJgACAdQE2QACAK0D8QACAKkE4gACAK0D7wACAKgDGQACAKkDGwACAdQE1gACAK0EvAACAKwDGgACAKkDHAACAdQE1wACAK0EvQACAKwDDAACAKkDDgACAdQE0QACAK0EsgACAKgCqgACAKoCtAACAKkEiwACAK0D9AACAKgEjQACAKsEjwACAKoDDQACAKkDDwACAdQE0gACAK0EswACAKgCxQACAKoCzwACAKkEjAACAK0D9QACAKgEjgACAKsEkAACAKoCwgACAKkCwQACAKgEYgACAKsC9gACAKoEuQACAKwEcwACAKkEewACAK0EdQACAKgEdwACAKsEeQACAKoEdAACAKkEfAACAK0EdgACAKgEeAACAKsEegACAKoEgQACAKkEiQACAK0EgwACAKgEhQACAKsEhwACAKoEggACAKkEigACAK0EhAACAKgEhgACAKsEiAACAKoCmwACAKkEOQACAK0CmgACAKgEOwACAKsCnQACAKoEtAACAKwCowACAKkEUQACAK0CogACAKgEUwACAKsEVQACAKoEtgACAKwCpwACAKkEYwACAK0CpgACAKgEYQACAKsC9QACAKoEuAACAKwCtgACAKkEOgACAK0CtQACAKgEPAACAKsCuAACAKoEtQACAKwCvgACAKkEUgACAK0CvQACAKgEVAACAKsEVgACAKoEtwACAKwCxwACAKkEZgACAK0CxgACAKgEaAACAKsCyQACAKoEuwACAKwCzAACAKkEfgACAK0CywACAKgEgAACAKsDMAACAKoEvwACAKwCrAACAKkEZQACAK0CqwACAKgEZwACAKsCrgACAKoEugACAKwCsQACAKkEfQACAK0CsAACAKgEfwACAKsDLwACAKoEvgACAKwE0wADAKoAqQTcAAMAqgCpAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCNAI0AMACYAJsAMQDQANAANQAA\",\r\n \"Roboto-Medium.ttf\": \"AAEAAAARAQAABAAQR0RFRqbzo4gAAcGUAAACWEdQT1OYN0PaAAHD7AAAWPxHU1VCm18k/AACHOgAABX2T1MvMpfnsYsAAAGYAAAAYGNtYXDTfF9iAAAWnAAABoJjdnQgO/gmfQAAL3gAAAD+ZnBnbagFhDIAAB0gAAAPhmdhc3AACAAZAAHBiAAAAAxnbHlml3ag9QAAOswAAYOyaGVhZAiGpEQAAAEcAAAANmhoZWEK9griAAABVAAAACRobXR4QNtY9AAAAfgAABSkbG9jYcJrHvoAADB4AAAKVG1heHAI2RDGAAABeAAAACBuYW1lQmB1PgABvoAAAALmcG9zdP9tAGQAAcFoAAAAIHByZXB5WM7TAAAsqAAAAs4AAQAAAAMCDPWGK6FfDzz1ABkIAAAAAADE8BEuAAAAAODgRcT6Jv3VCWEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJbvom/j4JYQABAAAAAAAAAAAAAAAAAAAFKQABAAAFKQCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAf0AAAH9AAACHgCMAo4AYATTAFYEjABkBeQAZAUhAFUBVwBSAsUAgQLMACcDjAAcBHEAQgHKACICuABQAjkAhgMfAAEEjABoBIwAqgSMAFIEjABOBIwANwSMAH8EjABzBIwARASMAGcEjABdAhwAfwHrADMEEgA+BIAAjwQoAH4D5AA7By0AWwVOABEFDQCUBTkAZgU5AJQEhQCUBGgAlAVzAGsFrQCUAkQApQRyAC8FDgCUBFIAlAb/AJQFrQCUBYMAZQUbAJQFgwBgBQkAlATYAEsE4AAtBTwAgAUqABEHCwAvBQ0AJgTjAAgE0wBQAiwAhQNVABICLAALA24ANgOVAAICkAA4BFAAVgR/AH0ELQBOBIIAUARJAFEC0wArBIkAUgRyAHoCCgB8AgL/qwQsAH0CCgCMBvgAfAR0AHoEigBOBH8AfQSHAFAC1AB9BB4ASQKqAAoEcwB3A/gAFgXwACMEBgAfA+sADAQGAFECqwA4Af0ArwKrABwFTQB1Ah8AhQSCAGcEtQBfBZ4AXARAAA0B+ACJBPkAXAOSAGMGSQBaA5AAjgPjAFcEawB/BkoAWQPaAJ0DDwCBBEoAXAL1AD0C9QA3ApQAbwTBAJMD6gBJAkQAkAITAGwC9QCCA6cAeQPjAF4FygBfBiIAUwZcAGYD5QBGB37//ARCAEwFgQBpBM8AlQTrAIoGwgBIBKQAaASRAEMEhgBOBJEAgQTsAFAFsAAfAhcAkASaAI0EZAAgAlIAIAWXAJAEhgB9B7AAZQc+AFkCBwCJBY0AVQLQ/94FkQBbBJ0ATQWjAIAE5gB3AiX/rgQ5AFcD3gCQA6oAbgPaAJ0DfgB1AgoAgQKqAHgCTAApA84AdwMoAEsCcwCJAAD8kwAA/WIAAPx0AAD9OgAA/AgAAP0eAmsAzQQ7AG4CRACQBHQAmQXCABoFegBcBTUAIASMAGoFrgCZBIwARwX5AEwFsQBGBVkAbASEAFYEyACXBA0AHgSGAFEEZQBiBA8AWQSGAH0EpwB2AqUAowRoABUEGgBnBPwAMASGAIAEMwBQBI4AUAQqADwEXQB/BdEARgXMAFIGlABlBLQAeASH/+EGeQArBf0AJAVTAGcIgQAtCIwAmQZRAC0FpQCPBQcAkAX9ACYHqQAVBNsASQWmAJIFqAAsBQsAMgZfAE4F+ACOBYUAkQeaAJUH+gCVBiEAFQbwAJkFAgCQBUgAYwdiAKEE6AAXBIAAWgSLAI8DWwCDBPIAJwaHACAEFwBOBJIAhARsAI8ElAAgBgIAjwSRAIQEkgCEA/oAIwXUAFMEzwCEBGUAYAaNAIQG8QB9BSEAIAZvAI8EaQCPBDkAUAaCAJIEcAAuBHL/1wQ5AFIG1gAdBuQAhASG/+gEkgCEB1gAiAZqAHIEaP/hBygAmAYCAIYFFgAaBGMACwdLAKwGPQCaBuUAfgXdAIEJKgClB+4AkAQgACgD9QAyBXoAYASIAE0FGAAQBA0AHgV6AGAEhgBOB1QAiAZWAHUHWACIBmoAcgUQAGcERwBdBPsAcAAA/HAAAPx1AAD9gQAA/aYAAPomAAD6UQYgAJIFEwCEBGj/4QUQAJQEhgB9BGsAjwOjAH0E6gCZBCQAfQgjABUG4AAgBckAmQT7AI8FLgCRBKwAjQaUADQFoAA8BiAAlAUHAIQH3QCUBa0AfQhJAJcG7wB9BjcAZwUEAGAFOQAmBEEAHwcoACkFbwAnBfIAkQTcAGAFcACBBHQAdQWFAIkGGwAKBMT/ywUgAJEEeACNBh8ALAUUACAFrQCZBIYAfQYqAJQFEQCEB3UAlAZ0AI8FjQBVBKMAWwSkAF0EwwAsA6oAJAVpACYEcQAfBPkATwbzAGgG2wBfBlEAPQUoAC8EgwBKBEgAcwe8AEIGpAA/B/UAlAaeAHQFBgBcBC8AVQWoACEFHQBEBU4AfQZGACwFOwAgAxsAZAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACtwBQArcAUAUjAJwGKgB7A5oACAG/AGUBugA3Ac4ANQGjAEsDCwBtAxMAQwMAADUEWwA/BJoAXQLMAIoD/QCNBaoAjQHPAF4HrgBQAnQAbAJpAFUDmQArAvUATAL1ADYC9QBQAvUATgL1ADcC9QBLAvUARwM5AFAC8wBQAvMAUAIDAFMCAwBQA1wAZwL1AEwC9QCCAvUAPQL1ADcC9QA2AvUAUAL1AE4C9QA3AvUASwL1AEcDOQBQAvMAUALzAFACAwBTAgMAUAS1AGIGbgAjBr8AmQiVAJQGOwAjBpsAfQSMAFwF6gAjBC0AKgSbACQFYgBPBX4AKwXkAG4D4wBFCCkAkAUIAG8FFACWBjcAXAbeAFYG0ABeBqwAXASTAGEFigCmBN4APwSAAJwEnQA7CFIAYQIy/6cEkQBlBIAAjwQSAD0EKAB9BA4AJQJRAJwCjgBkAekARwUZACsErQAaBL0AKwcoACsHKAArBQ8AKwa3AEkAAAAACDAAWQg1AFwC9QA9AvUAggL1AEwEHQBPBB0AVwQdADgEHQBfBB0AZgQdADMEHQA9BB0AQwQdAJgEHQBYBCsAQQQ+AAYEXAATBgkAJwR5AAgEiABpBD8AJQQ3AD8EZAB1BL0ATQRrAHYEvQBOBNwAdgYFAHYDtwB2BF4AdgPWACYB/gCGBN0AdgSnAFYDyAB2BDcAPwRoADoDpQAKA7wAdgR5AAgEvQBOBHkACAOdAEYE2QB2BB4ARAWmAE8FWABPBOAAXgWSACMEgABPB1YAJAdYAHYFmQAlBNgAdgRyAHYFXgAnBkUAGwRGAEME4gB2BF0AdgTLACQETAAfBWIAdgSNAEMGhAB2Bw4AdgVhAAkGFgB2BGcAdgSAAD0GjwB2BIQAQgQoAAsGowAbBKAAdgUNAHYFdAAhBfgATgRWAAYExAATBpcAIwSNAEMEjQB2BgAADgTOAE0ERwBDBL0ATgRoADoD9ABFCC0AdgT0ACgC9QA3AvUANgL1AFAC9QBOAvUANwL1AEsC9QBHA7YAjQKuAJgD4AB2BDoADAS2AFYFQQCZBSgAmQQwAIEFNQCZBCgAgQR6AHYEgABPBGAAdgSaAAgB/gCQA6EAdQAA/J4D9wB6A/r/UQQLAHkD+gB5A7wAdgOdAHUDnQB1AvUATAL1ADYC9QBQAvUATgL1ADcC9QBLAvUARwVzAGkFngBpBX8AmQXZAGkF2gBpBCgAlgSCAGsEWAAPBLsANARrAGcELgBCA6EAdgG6AGIGmABOBK8AbgIM/6cEjAA4BIwAaASMACwEjABiBIwAXwSMADQEjABsBIwAWQSMAGcEjADmAib/rgIl/64CFwCQAhf/+gIXAJAEYAB2BOYAYAQwADkEiAB9BD4ATwSVAE4EkQBOBJ0ASQSSAH0EmgBOBEkAUQSJAFAEWQA0A60AYQUMAF8DxAAFBkb/7AQHAHYEvQBOBQ4ANATcAHYB/QAAArgAUAVXABcFVwAXBJD/9QTgAC0Cqv/rBU4AEQVOABEFTgARBU4AEQVOABEFTgARBU4AEQU5AGYEhQCUBIUAlASFAJQEhQCUAkT/ywJEAKUCRP/KAkT/vgWtAJQFgwBlBYMAZQWDAGUFgwBlBYMAZQU8AIAFPACABTwAgAU8AIAE4wAIBFAAVgRQAFYEUABWBFAAVgRQAFYEUABWBFAAVgQtAE4ESQBRBEkAUQRJAFEESQBRAhf/tQIXAJACF/+zAhf/qAR0AHoEigBOBIoATgSKAE4EigBOBIoATgRzAHcEcwB3BHMAdwRzAHcD6wAMA+sADAVOABEEUABWBU4AEQRQAFYFTgARBFAAVgU5AGYELQBOBTkAZgQtAE4FOQBmBC0ATgU5AGYELQBOBTkAlAUYAFAEhQCUBEkAUQSFAJQESQBRBIUAlARJAFEEhQCUBEkAUQSFAJQESQBRBXMAawSJAFIFcwBrBIkAUgVzAGsEiQBSBXMAawSJAFIFrQCUBHIAegJE/7QCF/+dAkT/0QIX/7sCRP/dAhf/xgJEABgCCv//AkQAnwa1AKUECwB8BHIALwIl/64FDgCUBCwAfQRSAJQCCgCMBFIAlAIKAFkEUgCUAqAAjARSAJQC5gCMBa0AlAR0AHoFrQCUBHQAegWtAJQEdAB6BHT/owWDAGUEigBOBYMAZQSKAE4FgwBlBIoATgUJAJQC1AB9BQkAlALUAFIFCQCUAtQANwTYAEsEHgBJBNgASwQeAEkE2ABLBB4ASQTYAEsEHgBJBNgASwQeAEkE4AAtAqoACgTgAC0CqgAKBOAALQLSAAoFPACABHMAdwU8AIAEcwB3BTwAgARzAHcFPACABHMAdwU8AIAEcwB3BTwAgARzAHcHCwAvBfAAIwTjAAgD6wAMBOMACATTAFAEBgBRBNMAUAQGAFEE0wBQBAYAUQd+//wGwgBIBYEAaQSGAE4Eev+lBHr/pQQ/ACUEmgAIBJoACASaAAgEmgAIBJoACASaAAgEmgAIBIAATwPgAHYD4AB2A+AAdgPgAHYB/v+pAf4AhgH+/6cB/v+cBNwAdgS9AE4EvQBOBL0ATgS9AE4EvQBOBIgAaQSIAGkEiABpBIgAaQQ+AAYEmgAIBJoACASaAAgEgABPBIAATwSAAE8EgABPBHoAYQPgAHYD4AB2A+AAdgPgAHYD4AB2BKcAVgSnAFYEpwBWBKcAVgTdAHYB/v+RAf7/rwH+/7oB/gAXAf4AfQPWACYEXgB2A7cAdgO3AHYDtwB2A7cAdgTcAHYE3AB2BNwAdgS9AE4EvQBOBL0ATgRkAHUEZAB1BGQAdQQ3AD8ENwA/BDcAPwQ3AD8EPwAlBD8AJQQ/ACUEiABpBIgAaQSIAGkEiABpBIgAaQSIAGkGCQAnBD4ABgQ+AAYEKwBBBCsAQQQrAEEFTgARBOn/QgYR/0oCqP9OBZf/tAVH/0EFbf/CAqX/hQVOABEFDQCUBIUAlATTAFAFrQCUAkQApQUOAJQG/wCUBa0AlAWDAGUFGwCUBOAALQTjAAgFDQAmAkT/vgTjAAgEhABWBGUAYgSGAH0CpQCjBF0AfwSaAI0EigBOBMEAkwP4ABYEWQA0AqX/wwRdAH8EigBOBF0AfwaUAGUEhQCUBHQAmQTYAEsCRAClAkT/vgRyAC8FKACZBQ4AlAULADIFTgARBQ0AlAR0AJkEhQCUBaYAkgb/AJQFrQCUBYMAZQWuAJkFGwCUBTkAZgTgAC0FDQAmBFAAVgRJAFEEkgCEBIoATgR/AH0ELQBOA+sADAQGAB8ESQBR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ALoAuwABAL8AvwABAMEAwQABAMMAxAABAMcAxwABAMsAywABAM0AzgABANAA0QABANMA0wABANoA3gABAOEA4QABAOUA5QABAOcA6QABAOsA+wABAP0A/QABAP8BAQABAQMBAwABAQgBCQABARYBGgABARwBHAABASABIgABASQBJwADASoBKwABATMBNAABATYBNgABATsBPAABAUEBRAABAUcBSAABAUsBTQABAVEBUQABAVQBWAABAV0BXgABAWIBYgABAWQBZAABAWgBaAABAWoBbAABAW4BbgABAXABcAABAdUB2wACAewCAAABAgQCBAABAg0CDQABAg8CDwABAhYCGAABAhoCGwABAh0CHQABAiECIQABAiMCJQABAisCKwABAjACMgABAjQCNAABAkICQgABAkUCRQABAkcCRwABAkoCTQABAnkCfQABAo0CkgABApUC/QABAwADvwABA8EDwQABA8MDzQABA88D2AABA9oD9QABA/kD+QABA/sEAgABBAQEBgABBAkEDQABBA8EmgABBJ0EngABBKAEoQABBKMEpgABBLAFDAABBQ4FGAABBRsFKAABAAEAAwAAABAAAAAWAAAAIAABAAEArQACAAEAqACsAAAAAgACAKgArAAAASQBJwAFAAEAAAAWADAACgAFAEYATgBYAGIAbAAEREZMVABqY3lybABuZ3JlawBybGF0bgB2AAVjcHNwAGBrZXJuAGxrZXJuAGZrZXJuAHRrZXJuAHwAAQAAAAEAZAACAAgAAgEyCAgAAgAIAAIAzAQuAAIACAACAjIP/AACAAgAAgBIAIAATgAAAFQAAABaAAAAYAAAAAAAAQAAAAAAAQAEAAAAAgAEAAMAAAACAAQAAQAAAAIABAACAAEriAAFACQASAABGRIABAAAAAMZBhkcGQwAAP//AAIAAAACAAD//wACAAAAAwAA//8AAgAAAAQAAP//AAIAAAABAAIZDgAEAAAZVBt4AAQABQAA/68AAAAA/4gAAP8sAAAAAAAAAAAAAAAAAAAAAAAA/4gAAAAAAAAAARv2AAQAAAApGXwZihlKGtgZ2BmmGgQZtBnuGlYafBj+GcYZBByiGRYdBBukGqoZChkQHWoZVBoaGgQZphxMGgQZXhloGaYZmBsKHEwaNBxMGRYZchnGGXIZpgABLvAABAAAAIUeQh4I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AVAADgFRAA8BXQAOAWL/5gFk/+YBZgAOAWz/5gFt/+cBbwAOAXAADwPQAAsD0QAPA9z/5gPdAA4EBf/mBA3/5gQQAA4EEwAPBBUADwQeAA4ELgALBDAACwQyAAsENP/lBDX/6ASS/+YElP/lBJX/6ASh/+YAAQD6AAgACgAUABUAFgAXABgAGQAaABsAHAAdACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAgQCDAIQAjACPAJEAkwCxALIAswC0ALUAtgC3ALgAuQC6ANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAS8BMwE1ATcBOQE7AUEBQwFFAUkBSwFMAVgBWQGxAbcBvAG/ApUClgKYApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0AtEC0wLVAtcC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8QLzAvUC9wL5AvsC/QL+AwADAgMEAwYDCAMKAwwDDgMQAxMDFQMXAxkDGwMdAx8DIQMjAyUDJwMpAysDLQMvAzEDMwM1AzcDOQM7Az0DPwNAA0IDRANGA0gDoQOiA6MDpAOlA6YDpwOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D7gPwA/ID9AQJBAsEDQQiBCgELgSYBJ0EoQUiBSQAAwHv//UB8P/uA5v/9QADAA3/5gBB//QAYf/vAAMASv/uAFv/6gHw//AAAwBb/8EB///mAkv/6AADAEoAEQBYADIAWwARAAMAW//lAf//6wJL/+0AOwCyABAA0v/gANP/6ADUABAA1v/gANkAFADdABAA4f/hAOb/4ADtABMA8gAQAPn/4AEEABABCP/oAQ0AEAEX/+gBGf/gARv/6AEd/+gBH//oASH/6AE5/+ABQf/oAUX/4AFH/+EBSP/gAUn/4QFK/+ABTf/hAVAAEAFRABABWP/pAWL/3wFk/94BZgAQAWr/6AFs/98Bbv/yAW8AEAFwABAD0QAQA9j/6APb/+gD3P/gBAX/4AQI/+gEC//oBA3/3wQT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/+0EM//mBDT/4QQ3/+IEkv/SBJT/4QSX/+IEof/TACkAR//sAEj/7ABJ/+wAS//sAFX/7ACU/+wAmf/sArz/7AK9/+wCvv/sAr//7ALA/+wC2P/sAtr/7ALc/+wC3v/sAuD/7ALi/+wC5P/sAub/7ALo/+wC6v/sAuz/7ALu/+wC8P/sAvL/7ARS/+wEVP/sBFb/7ARY/+wEWv/sBFz/7ARe/+wEYP/sBHT/7AR2/+wEeP/sBHz/7AS3/+wExP/sBMb/7AA2AAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCU/+gAmf/oAYQAEAGFABABhwAQAYgAEAGJABACvP/oAr3/6AK+/+gCv//oAsD/6ALY/+gC2v/oAtz/6ALe/+gC4P/oAuL/6ALk/+gC5v/oAuj/6ALq/+gC7P/oAu7/6ALw/+gC8v/oA/YAEAP3ABAD+gAQBFL/6ARU/+gEVv/oBFj/6ARa/+gEXP/oBF7/6ARg/+gEdP/oBHb/6AR4/+gEfP/oBLf/6ATE/+gExv/oAEoAR/+0AEj/tABJ/7QAS/+0AEwAFABPABQAUAAUAFP/egBV/7QAV/9kAFsACwCU/7QAmf+0Adv/ZAK8/7QCvf+0Ar7/tAK//7QCwP+0Asb/egLH/3oCyP96Asn/egLK/3oC2P+0Atr/tALc/7QC3v+0AuD/tALi/7QC5P+0Aub/tALo/7QC6v+0Auz/tALu/7QC8P+0AvL/tAMU/3oDFv96Axj/egMg/2QDIv9kAyT/ZAMm/2QDKP9kBFL/tARU/7QEVv+0BFj/tARa/7QEXP+0BF7/tARg/7QEZv96BGj/egRq/3oEbP96BG7/egRw/3oEcv96BHT/tAR2/7QEeP+0BHr/egR8/7QEt/+0BLv/egTE/7QExv+0BMgAFATKABQEzAAUBNn/ZAABAPQABAAGAAsADAAlACcAKAApACoALwAwADMANAA1ADYAOAA6ADsAPAA9AD4APwBJAEoATABPAFEAUgBTAFYAWABaAFsAXQBfAJYAnQCyAYQBhQGHAYgBiQHyAfQB9QH3AfoCBQJKAk0CXwJhAmIClQKWApgCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCqwKsAq0CrgKvArQCvQK+Ar8CwALFAsYCxwLIAskCygLPAtAC0QLTAtUC1wLZAtsC3QLfAuEC4gLjAuQC5QLmAucC6ALpAuoC9AMCAwQDBgMIAwoDDQMPAxEDEgMTAxQDFQMWAxcDGAMaAxwDHgMpAysDLQM7Az0DPgM/A0ADQgNEA0oDSwNMA00DTgNPA1ADUQNSA1MDXgNfA2ADYQNiA2gDaQNqA28DgQOCA4MDhAOIA4kDigOTA+4D8APyA/QD9QP2A/cD+gP8A/0EOQQ7BD0EPwRBBEMERQRHBEkESwRNBE8EUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEegSLBIwEjQSOBI8EkASzBLQEtgS6BLsEvQTDBMUEyATJBMsEzQTQBNIE0wTUBNcE2gTdBN4E3wTgBOEE4wABADUABgALAJYAsQCyALMAtAC9AMEAxwGEAYUBhwGIAYkCBQIGAgcDoQOiA6MDpAOlA6YDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO7A78DwQPFA/YD9wP6BOUE5gTqBO0E8wT4AKcAEP8HABL/BwAl/04ALv8NADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qALL/TgGG/wcBiv8HAY7/BwGP/wcCBf/AAk3/wAKa/04Cm/9OApz/TgKd/04Cnv9OAp//TgKg/04Ctf/eArb/3gK3/94CuP/eArn/3gK6/94Cu//eArz/6wK9/+sCvv/rAr//6wLA/+sCxv/rAsf/6wLI/+sCyf/rAsr/6wLL/+oCzP/qAs3/6gLO/+oCz//oAtD/6ALR/04C0v/eAtP/TgLU/94C1f9OAtb/3gLY/+sC2v/rAtz/6wLe/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wLq/+sC7P/rAu7/6wLw/+sC8v/rAwD/DQMU/+sDFv/rAxj/6wMpABQDKwAUAy0AFAMw/+oDMv/qAzT/6gM2/+oDOP/qAzr/6gM+/+gDTf/AA07/wANP/8ADUP/AA1H/wANS/8ADU//AA2j/wANp/8ADav/AA/X/6AP9/04D/v/eBDn/TgQ6/94EO/9OBDz/3gQ9/04EPv/eBD//TgRA/94EQf9OBEL/3gRD/04ERP/eBEX/TgRG/94ER/9OBEj/3gRJ/04ESv/e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AK0E3wACAK0E3QACAKoDQAACAKkE4wACAK0ExgACAdQExAACAK0D/AACAKkE0AACAK0DKgACAdQE2wACAK0E4AACAK0E3gACAKoDQQACAKkE5AACAK0EyQACAKkDAgACAdQEywACAK0DBAACAKkDBgACAdQEzQACAK0DHwACAKkDJQACAdQE2AACAK0D8AACAKkE4QACAK0D7gACAKgEygACAKkDAwACAdQEzAACAK0DBQACAKkDBwACAdQEzgACAK0DIAACAKkDJgACAdQE2QACAK0D8QACAKkE4gACAK0D7wACAKgDGQACAKkDGwACAdQE1gACAK0EvAACAKwDGgACAKkDHAACAdQE1wACAK0EvQACAKwDDAACAKkDDgACAdQE0QACAK0EsgACAKgCqgACAKoCtAACAKkEiwACAK0D9AACAKgEjQACAKsEjwACAKoDDQACAKkDDwACAdQE0gACAK0EswACAKgCxQACAKoCzwACAKkEjAACAK0D9QACAKgEjgACAKsEkAACAKoCwgACAKkCwQACAKgEYgACAKsC9gACAKoEuQACAKwEcwACAKkEewACAK0EdQACAKgEdwACAKsEeQACAKoEdAACAKkEfAACAK0EdgACAKgEeAACAKsEegACAKoEgQACAKkEiQACAK0EgwACAKgEhQACAKsEhwACAKoEggACAKkEigACAK0EhAACAKgEhgACAKsEiAACAKoCmwACAKkEOQACAK0CmgACAKgEOwACAKsCnQACAKoEtAACAKwCowACAKkEUQACAK0CogACAKgEUwACAKsEVQACAKoEtgACAKwCpwACAKkEYwACAK0CpgACAKgEYQACAKsC9QACAKoEuAACAKwCtgACAKkEOgACAK0CtQACAKgEPAACAKsCuAACAKoEtQACAKwCvgACAKkEUgACAK0CvQACAKgEVAACAKsEVgACAKoEtwACAKwCxwACAKkEZgACAK0CxgACAKgEaAACAKsCyQACAKoEuwACAKwCzAACAKkEfgACAK0CywACAKgEgAACAKsDMAACAKoEvwACAKwCrAACAKkEZQACAK0CqwACAKgEZwACAKsCrgACAKoEugACAKwCsQACAKkEfQACAK0CsAACAKgEfwACAKsDLwACAKoEvgACAKwE0wADAKoAqQTcAAMAqgCpAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCNAI0AMACYAJsAMQDQANAANQAA\",\r\n \"Roboto-MediumItalic.ttf\": \"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BGH/0QQI//YGcP+qBHwACgTmAAoFSgBgBcoAPgQ/AGwEn/+iBmUAYgRqAFsEagAJBdIAOwSpADIEJgAOBJwANARGAAcD1gAeB+8ACQTO/9oC3v/1At7/8wLeAAsC3gAWAt4AJQLeAAUC3gA0A5kAkQKaAQgDwgAJBBr/hwSSADsFGQArBQAAKwQQABQFDQArBAkAFARXAAkEXgA5BD8ACQR2/5oB7wDoA4UBBAAA/ScD2QDcA9sAFgPsANwD3ADbA58ACQOBAQQDgQEFAugAiQLoAGYC6AB+AugAiQLoAJgC6AB4AugApwVKAGwFcwBrBVUAKwWsAG4FrgBtBAkAqwRfABwEN/+BBJf/0QRJ/9gEDgAxA4UBBQGt/7gGZgA7BIsARQH8/wAEc/+pBHP/2QRz/8kEcwATBHMATARzACIEcwBXBHMAMQRzADcEcwD4Ah//BAIf/wQCEQAjAhH/fAIRACMEPwAJBMEATAQQAFYEZgAQBB4ANgRyADcEbgAtBHoAMgRv/8gEdwA2BCgAOgRmAC4EOP+fA5sAqwTmACQDp//vBhX/fgPoAAkEmf/bBOcAIgS2AAkB+AAAAqMAQAUvACAFLwAgBG4AKwS6AJ0Clv/lBSX/owUl/6MFJf+jBSX/owUl/6MFJf+jBSX/owURAF8EYwAmBGMAJgRjACYEYwAmAjIANwIyADcCMgA3AjIANwWBACYFWQBiBVkAYgVZAGIFWQBiBVkAYgUUAFgFFABYBRQAWAUUAFgEvQChBC8AHAQvABwELwAcBC8AHAQvABwELwAcBC8AHAQNADcEKAA6BCgAOgQoADoEKAA6AgcAIwIHACMCBwAjAgcAIwRSAA0EZwA4BGcAOARnADgEZwA4BGcAOARRAEoEUQBKBFEASgRRAEoDzf+8A83/vAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAURAF8EDQA3BREAXwQNADcFEQBfBA0ANwURAF8EDQA3BREAJgT1ADgEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BUkAZgRm//kFSQBmBGb/+QVJAGYEZv/5BUkAZgRm//kFgQAmBFAADQIyADcCBwATAjIANwIHACMCMgA3AgcAIwIy/44B+v91AjIANwaCADcD7AAgBE8ABAIV/wQE5wAmBAwAEQQxACYB+gAgBDEAJgH6/6YEMQAmApAAIAQxACYC1gAgBYEAJgRSAA0FgQAmBFIADQWBACYEUgANBFIADQVZAGIEZwA4BVkAYgRnADgFWQBiBGcAOATiACYCvgARBOIAJgK+/58E4gAmAr4AEQS0ACYD/wAbBLQAJgP/ABsEtAAmA/8AGwS0ACYD/wAbBLQAJgP/ABsEugCdApYAPwS6AJ0ClgA/BLoAnQK+AD8FFABYBFEASgUUAFgEUQBKBRQAWARRAEoFFABYBFEASgUUAFgEUQBKBRQAWARRAEoG1QC1BcIAeQS9AKEDzf+8BL0AoQSu/+UD6P/mBK7/5QPo/+YErv/lA+j/5gdF/40GjgAOBVcAFgRjACoEV/+WBFf/lgQeAGMEdv+aBHb/mgR2/5oEdv+aBHb/mgR2/5oEdv+aBF4AOQPCAAkDwgAJA8IACQPCAAkB7wAaAe8AGgHvABoB7wAaBLYACQSZADsEmQA7BJkAOwSZADsEmQA7BGYAOARmADgEZgA4BGYAOAQeAGwEdv+aBHb/mgR2/5oEXgA5BF4AOQReADkEXgA5BFcACQPCAAkDwgAJA8IACQPCAAkDwgAJBIMAPwSDAD8EgwA/BIMAPwS3AAkB7wAOAe8AGgHvABoB+f+XAe8AGgO5//MEPAAJA5sACQObAAkDmwAJA5sACQS2AAkEtgAJBLYACQSZADsEmQA7BJkAOwRDAAkEQwAJBEMACQQWAA8EFgAPBBYADwQWAA8EHgBjBB4AYwQeAGMEZgA4BGYAOARmADgEZgA4BGYAOARmADgF2gCLBB4AbAQeAGwEC//WBAv/1gQL/9YFJf+jBMf/ugXl/8IClv/GBW0AJgUh/7gFRAAeApAACQUl/6ME5gAmBGMAJgSu/+UFgQAmAjIANwTnACYGyQAmBYEAJgVZAGIE9AAmBLoAnQS9AKEE5v/AAjIANwS9AKEEYQA7BEMAKARjABECkABmBDwAVwR3ACEEZwA4BJ3/3gPaAGQEOP+fApAARAQ8AFcEZwA4BDwAVwZhAFIEYwAmBFIAKwS0ACYCMgA3AjIANwRPAAQFAAArBOcAJgTkAJkFJf+jBOYAJgRSACsEYwAmBXoAJQbJACYFgQAmBVkAYgWCACsE9AAmBREAXwS6AJ0E5v/ABC8AHAQoADoEbwAXBGcAOARd/8gEDQA3A83/vAPo/7oEKAA6A0EAFgP/ABsB+gAgAgcAIwHy/wIESgAiA83/vAbVALUFwgB5BtUAtQXCAHkG1QC1BcIAeQS9AKEDzf+8AUwAkQJ6AJ0EGwAzAhX/BAGtAI0GyQAmBsMADwUl/6MELwAcBGMAJgV6ACUEKAA6BG8AFwWFAHYFnwA/BPEAqAPuAHUINAA4CSYAYgS2AB8D+AAXBREAXwQNADcEvQChA+0AdQIyADcHbv+kBlX/sAIyADcFJf+jBC8AHAUl/6MELwAcB0X/jQaOAA4EYwAmBCgAOgViAEsEGQA0BBkANAdu/6QGVf+wBLYAHwP4ABcFegAlBG8AFwV6ACUEbwAXBVkAYgRnADgFUABhBGUANAVQAGEEZQA0BSAASAQZACAE5ACZA83/vATkAJkDzf+8BOQAmQPN/7wFWgDEBEMAbQbFACwGSAAjBF8AOAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHARjACYEKAA6BGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoCMgA3AgcAIwIy//8B+v/jBVkAYgRnADgFWQBiBGcAOAVZAGIEZwA4BVkAYgRnADgFWQBiBGcAOAVZAGIEZwA4BVkAYgRnADgFZgBcBHoANAVmAFwEegA0BWYAXAR6ADQFZgBcBHoANAVmAFwEegA0BRQAWARRAEoFFABYBFEASgV3AFgEwABKBXcAWATAAEoFdwBYBMAASgV3AFgEwABKBXcAWATAAEoEvQChA83/vAS9AKEDzf+8BL0AoQPN/7wEff/0BLoAnQPbAFQFWgDEBEMAbQRSACsDQQAWBewAVQSg//IEUAANBNsAJATbACQEUgAAA0H/xwUUAD8EJAAoBL0AoQPtAFIE5v/AA+j/ugRDACgERv/CBgQAfARpAA0EaQAmBGkADQRpAFgEfQBxBJEASwR9AIwEkQBzBUkAZgRm//kFgQAmBFIADQUl/6MELwAcBGMAJgQoADoCMv/PAgf/gAVZAGIEZwA4BOIAJgK+AAwFFABYBFEASgTI/4UE5gAmBF0AEAURACYEXwA4BREAJgRfADgFgQAm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BiYB7QAAAAcARACXAB7///+j/lgEqwWwBiYAJQAAAQcApAFrAAMAC7YDDgUBATlWACs0AP//ABz+XQPRBFAGJgBFAAABBwCkAKYACAALtgI7MQAATVYAKzQA//8AJv5fBLwFsAYmACkAAAEHAKQBMAAKAAu2BBACAABDVgArNAD//wA6/lUD8ARRBiYASQAAAQcApAD9AAAAC7YBLAAAAE1WACs0AP///5r+VQQBBI0GJgJNAAAABwCkAQ8AAP//AAn+XQP7BI0GJgJCAAAABwCkAOAACP///+P+nwHKBDoGJgCNAAABBwCtA0IACgAOtAEHAgEBuP9/sFYAKzQAAAAAABEA0gADAAEECQAAAF4AAAADAAEECQABABoAXgADAAEECQACAAwAeAADAAEECQADACgAhAADAAEECQAEACgAhAADAAEECQAFACYArAADAAEECQAGACYA0gADAAEECQAHAEAA+AADAAEECQAIAAwBOAADAAEECQAJACYBRAADAAEECQALABQBagADAAEECQAMABQBagADAAEECQANAFwBfgADAAEECQAOAFQB2gADAAEECQAQAAwCLgADAAEECQARABoCOgADAAEECQAZAAwCLgBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADEAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AUgBvAGIAbwB0AG8AIABNAGUAZABpAHUAbQBJAHQAYQBsAGkAYwBSAG8AYgBvAHQAbwAgAE0AZQBkAGkAdQBtACAASQB0AGEAbABpAGMAVgBlAHIAcwBpAG8AbgAgADMALgAwADAAOAA7ACAAMgAwADIAMwBSAG8AYgBvAHQAbwAtAE0AZQBkAGkAdQBtAEkAdABhAGwAaQBjAFIAbwBiAG8AdABvACAAaQBzACAAYQAgAHQAcgBhAGQAZQBtAGEAcgBrACAAbwBmACAARwBvAG8AZwBsAGUALgBHAG8AbwBnAGwAZQBDAGgAcgBpAHMAdABpAGEAbgAgAFIAbwBiAGUAcgB0AHMAbwBuAEcAbwBvAGcAbABlAC4AYwBvAG0ATABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABBAHAAYQBjAGgAZQAg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//QA3v/tAOH/4QDm/9QA7P/iAO7/7wDw/+IA8f/iAPP/4gD0/+IA9f/iAPb/yQD4/+IA+v/iAPv/4gD+/9EBAP/iAQX/4gEJ/+UBGf/UARr/5gEg/+MBK//iATP/9AE0/+8BNv/iATn/0gE6/8QBPP/iAT7/4gFD//QBRP/vAUX/0gFH/+EBSf/hAVP/4gFV/+IBV//iAVz/4gFd//QBXv/vAWL/1AFj//UBZP/nAWz/qgFt/8kBhP/KAYX/ygGH/8oBiP/KAYn/ygPQ/+0D3P/SA93/9APg/+ID4v/iA+T/5gPl/+8D5//iA+z/4gPt/+YD9v/KA/f/ygP6/8oEAv/iBAX/1AQG/+YEDf/TBA7/5gQQ//QEEf/vBB7/9AQf/+8EI//iBCX/4gQu/+0EL//mBDD/7QQx/+YEMv/tBDP/5gQ0/+EEN//iBJL/0gSU/+EEl//iBKH/0wApAEf/7ABI/+wASf/sAEv/7ABV/+wAlP/sAJn/7AK8/+wCvf/sAr7/7AK//+wCwP/sAtj/7ALa/+wC3P/sAt7/7ALg/+wC4v/sAuT/7ALm/+wC6P/sAur/7ALs/+wC7v/sAvD/7ALy/+wEUv/sBFT/7ARW/+wEWP/sBFr/7ARc/+wEXv/sBGD/7AR0/+wEdv/sBHj/7AR8/+wEt//sBMT/7ATG/+wANgAGABAACwAQAA0AFABBABIAR//oAEj/6ABJ/+gAS//oAFX/6ABhABMAlP/oAJn/6AGEABABhQAQAYcAEAGIABABiQAQArz/6AK9/+gCvv/oAr//6ALA/+gC2P/oAtr/6ALc/+gC3v/oAuD/6ALi/+gC5P/oAub/6ALo/+gC6v/oAuz/6ALu/+gC8P/oAvL/6AP2ABAD9wAQA/oAEARS/+gEVP/oBFb/6ARY/+gEWv/oBFz/6ARe/+gEYP/oBHT/6AR2/+gEeP/oBHz/6AS3/+gExP/oBMb/6ABKAEf/tABI/7QASf+0AEv/tABMABQATwAUAFAAFABT/3oAVf+0AFf/ZABbAAsAlP+0AJn/tAHb/2QCvP+0Ar3/tAK+/7QCv/+0AsD/tALG/3oCx/96Asj/egLJ/3oCyv96Atj/tALa/7QC3P+0At7/tALg/7QC4v+0AuT/tALm/7QC6P+0Aur/tALs/7QC7v+0AvD/tALy/7QDFP96Axb/egMY/3oDIP9kAyL/ZAMk/2QDJv9kAyj/ZARS/7QEVP+0BFb/tARY/7QEWv+0BFz/tARe/7QEYP+0BGb/egRo/3oEav96BGz/egRu/3oEcP96BHL/egR0/7QEdv+0BHj/tAR6/3oEfP+0BLf/tAS7/3oExP+0BMb/tATIABQEygAUBMwAFATZ/2QAAQD0AAQABgALAAwAJQAnACgAKQAqAC8AMAAzADQANQA2ADgAOgA7ADwAPQA+AD8ASQBKAEwATwBRAFIAUwBWAFgAWgBbAF0AXwCWAJ0AsgGEAYUBhwGIAYkB8gH0AfUB9wH6AgUCSgJNAl8CYQJiApUClgKYApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqsCrAKtAq4CrwK0Ar0CvgK/AsACxQLGAscCyALJAsoCzwLQAtEC0wLVAtcC2QLbAt0C3wLhAuIC4wLkAuUC5gLnAugC6QLqAvQDAgMEAwYDCAMKAw0DDwMRAxIDEwMUAxUDFgMXAxgDGgMcAx4DKQMrAy0DOwM9Az4DPwNAA0IDRANKA0sDTANNA04DTwNQA1EDUgNTA14DXwNgA2EDYgNoA2kDagNvA4EDggODA4QDiAOJA4oDkwPuA/AD8gP0A/UD9gP3A/oD/AP9BDkEOwQ9BD8EQQRDBEUERwRJBEsETQRPBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHoEiwSMBI0EjgSPBJAEswS0BLYEugS7BL0EwwTFBMgEyQTLBM0E0ATSBNME1ATXBNoE3QTeBN8E4AThBOMAAQA1AAYACwCWALEAsgCzALQAvQDBAMcBhAGFAYcBiAGJAgUCBgIHA6EDogOjA6QDpQOmA6kDqgOrA6wDrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuwO/A8EDxQP2A/cD+gTlBOYE6gTtBPME+ACnABD/BwAS/wcAJf9OAC7/DQA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFb/5gBZ/+oAWv/oAF3/6ACU/+sAmf/rAJv/6gCy/04Bhv8HAYr/BwGO/wcBj/8HAgX/wAJN/8ACmv9OApv/TgKc/04Cnf9OAp7/TgKf/04CoP9OArX/3gK2/94Ct//eArj/3gK5/94Cuv/eArv/3gK8/+sCvf/r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ARgBGAATARkBGQAXARoBGgAFARsBGwADAR0BHQADAR4BHgACAR8BHwADASEBIQADASIBIgACASsBKwABATMBMwAGATQBNAAHATYBNgABATkBOQAKATwBPAABAT4BPgABAUEBQQADAUIBQgACAUMBQwAGAUQBRAAHAUUBRQAKAUcBRwARAUgBSAAUAVABUAANAVEBUQASAVMBUwABAVUBVQABAVcBVwABAVwBXAABAV0BXQAGAV4BXgAHAWABYQACAWYBZgANAWoBagADAWsBawACAW8BbwANAXABcAASAYEBggALAYQBhQAEAYYBhgAIAYcBiQAEAYoBigAIAY4BjwAIAgUCBQAZAg4CDgAMAg8CDwAJAhICEgAMAhYCFgAPAicCJwAPAioCKgAMAisCKwAJAiwCLAAWAi0CLQAPAi4CLgAMAjQCNAAJApQClAALA80DzQAcA9AD0AAOA9ED0QAQA9gD2AADA9sD2wADA9wD3AAKA90D3QAGA94D3gAVA98D3wACA+AD4AABA+ED4QATA+ID4gABA+MD4wACA+QD5AAFA+UD5QAHA+YD5gACA+cD5wABA+gD6AAdA+wD7AABA+0D7QAFA/YD9wAEA/oD+gAEBAEEAQACBAIEAgABBAUEBQAXBAYEBgAFBAcEBwACBAgECAADBAsECwADBAwEDAACBA0EDQAYBA4EDgAFBBAEEAAGBBEEEQAHBBMEEwAQBBQEFAAVBBUEFQAQBBYEFgAVBBoEGgACBBwEHQACBB4EHgAGBB8EHwAHBCMEIwABBCUEJQABBCYEJgADBCcEJwATBCgEKAADBCkEKQACBCoEKgADBCsEKwATBC4ELgAOBC8ELwAFBDAEMAAOBDEEMQAFBDIEMgAOBDMEMwAFBDQENAARBDUENQAUBDcENwABBDgEOAACBJIEkgAKBJQElAARBJUElQAUBJcElwABBKEEoQAYBKcEpwALBQUFBQAaBQwFDAAJBQ8FDwAJBRAFEAAMBREFEQAPBRQFFAAJBRUFFQAWAAIA7AAGAAYADAALAAsADAAlACUAAgAmACYAGwAnACcADgApACkABAAsAC0AAQAuAC4ABwAvAC8AGAAwADAADwAxADIAAQA0ADQAHAA4ADgAEAA5ADkABwA6ADoAGQA7ADsAEQA8ADwAHgA9AD0ADQA+AD4AFABFAEUAAwBG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BiAHRgYmBmoGqgYsBdwF4AXkBegGtgbCBs4G2gbmBewAAgcCAOsCjAJNAkwCSwJKAkICAAH/Af4B/QH8AfsB+gH5AfgB9wH2AfUB9AHzAfIB8QHwAe8B7gHtAewCfgKOA0sCkAKPA0oB/QKNApICbATtBO4CBAIFBO8E8ATxAgYE8gIHAggCCQT3AgoCCgT4BPkCCwIMAg0CFAUGBQcCFQIWAhcCGAIZAhoFCgULBQ0FEAUZAhwCHQIeAh8CIAIhAiICIwIkAiUCDgIPAhACEQISAhMCVQInAigCKQIqBRMCKwItAi4CLwIxAjMCkQNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA50DaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQUaA38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQBR0DkQOSA5QDkwOVA5YDlwOYA5kDmgObA5wDngOfA6AFGwUcBOYE5wToBOkE8wT2BPQE9QT6BPsE/ATqBOsE7AUFBQgFCQUMBQ4FDwIbBREE/QT+BP8FAAUBBQIFAwUEBR4FHwUgBSEFEgUUBRUCMgUXAjQFGAUWAjACJgIsBSYFJwACBwAA+gIBAowB6wHqAekB6AHnAeYB5QHkAeMB4gJNAkwCSwJKAkICAAH/Af4B/QH8AfsB+gH5AfgB9wH2AfUB9AHzAfIB8QHwAe8B7gHtAewCAgIDAo4CkAKPApECjQKSAmwCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGgIbBRkCHAIdAh4CHwIgAiECIgIjAiQCJQJVAicCKAIpAioFEwIrAi0CLgIvAjACMQIyAjMCNQI2AjgCNwNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34FGgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAUdA5EDkgOUA5MDlQOWA5cDmAOZA5oDmwOcA50DngOfA6AFGwUcBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wUABQEFAgIZBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBR4FHwUgBSEFEgUUBRUFFwI0BRgFFgImAiwFJgUnAAEAAQF7AAEAAQBLAAEAAQC7AAEAAQA2AAEAAQATAAEAAgMjAyQAAgbkBtgAAgbmBtgAAQbuAAEG8AABBvIAAgABABQAHQAAAAEAAgAvAE8AAQADAEkASwKEAAIAAAABBt4AAQAGAtUC1gLnAugDagNzAAEABgBNAE4C/APpA+sEZAACAAMBlAGUAAAB3wHhAAECOQI/AAQAAgACAKgArAABASQBJwABAAEADAAnACgAKwAzADUARgBHAEgASwBTAFQAVQACAAIAFAAdAAACbwJ4AAoAAgAGAE0ATQAGAE4ATgAEAvwC/AAFA+kD6QADA+sD6wACBGQEZAABAAIABAAUAB0AAAKAAoAACgKLAosACwSoBK8ADAACAAYAGgAaAAAAHAAcAAECZAJpAAICbQJtAAgCbwJ4AAkCfwJ/ABMAAQAUABoAHAJkAmUCZgJnAmgCaQJtAn8CgAKLBKgEqQSqBKsErAStBK4ErwABBd4AAQXgAAEF4gABBeQAAQXmAAEF6AABBeoAAQXsAAEF7gABBfAAAQXyAAEF9AABBfYAAQX4AAEF+gACBfwGAgACBgIGCAACBggGDgACBg4GFAACBhQGGgACBhoGIAACBiAGJgACBiYGLAACBiwGMgACBjIGOAACBjgGPgADBj4GRAZKAAMGSAZOBlQAAwZSBlgGXgADBlwGYgZoAAMGZgZsBnIAAwZwBnYGfAADBnoGgAaGAAMGhAaKBpAABAaOBpQGmgagAAQGnAaiBqgGrgAFBqoGsAa2BrwGwgAFBrwGwgbIBs4G1AAFBs4G1AbaBuAG5gAFBuAG5gbsBvIG+AAFBvIG+Ab+BwQHCgAFBwQHCgcQBxYHHAAFBxYHHAciBygHLgAFBygHLgc0BzoHQAAFBzoHQAdGB0wHUgAGB0wHUgdYB14HZAdqAAYHYgdoB24HdAd6B4AABgd4B34HhAeKB5AHlgAGB44HlAeaB6AHpgesAAYHpAeqB7AHtge8B8IABge6B8AHxgfMB9IH2AAGB9AH1gfcB+IH6AfuAAcILgfmB+wH8gf4B/4IBAAHCCYH+ggACAYIDAgSCBgAAQDrAAoARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAIUAhgCHAIkAigCLAI0AkACSAJQAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEHATABNAE2ATgBOgE8AUIBRAFGAUoBTQFaApcCmQK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtIC1ALWAtgC2gLcAt4C4ALiAuQC5gLoAuoC7ALuAvAC8gL0AvYC+AL6AvwC/wMBAwMDBQMHAwkDCwMNAw8DEQMUAxYDGAMaAxwDHgMgAyIDJAMmAygDKgMsAy4DMAMyAzQDNgM4AzoDPAM+A0EDQwNFA0cDSQO5A7oDuwO8A74DvwPAA8EDwgPDA8QDxQPGA8cD3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPrA+wD7QPvA/ED8wP1BAoEDAQOBBwEIwQpBC8EmQSaBJ4EogUjBSUAAQD6AAgACgAUABUAFgAXABgAGQAaABsAHAAdACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAgQCDAIQAjACPAJEAkwCxALIAswC0ALUAtgC3ALgAuQC6ANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAS8BMwE1ATcBOQE7AUEBQwFFAUkBSwFMAVgBWQGxAbcBvAG/ApUClgKYApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0AtEC0wLVAtcC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8QLzAvUC9wL5AvsC/QL+AwADAgMEAwYDCAMKAwwDDgMQAxMDFQMXAxkDGwMdAx8DIQMjAyUDJwMpAysDLQMvAzEDMwM1AzcDOQM7Az0DPwNAA0IDRANGA0gDoQOiA6MDpAOlA6YDpwOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D7gPwA/ID9AQJBAsEDQQiBCgELgSYBJ0EoQUiBSQB1gACAE0B1wACAFAB2AADAEoATQHZAAMASgBQAAEAAQBKAdUAAgBKAdsAAgBYAdoAAgBYAAEAAwBKAFcAlQAAAAEAAQABAAEAAAADBMEAAgCtAtcAAgCpBMcAAgCtBNQAAgCpBMIAAgCtAtgAAgCpBLEAAgCpBMgAAgCtBGQAAgCtBNUAAgCpA0YAAgCpA0gAAgCpA0cAAgCpA0kAAgCpBMAAAgCpBMUAAgHUBMMAAgCtBLAAAgCpAvEAAgHUA/sAAgCpBM8AAgCtAykAAgHUBNoAAgCtBN8AAgCtBN0AAgCqA0AAAgCpBOMAAgCtBMYAAgHUBMQAAgCtA/wAAgCpBNAAAgCtAyoAAgHUBNsAAgCtBOAAAgCtBN4AAgCqA0EAAgCpBOQAAgCtBMkAAgCpAwIAAgHUBMsAAgCtAwQAAgCpAwYAAgHUBM0AAgCtAx8AAgCpAyUAAgHUBNgAAgCtA/AAAgCpBOEAAgCtA+4AAgCoBMoAAgCpAwMAAgHUBMwAAgCtAwUAAgCpAwcAAgHUBM4AAgCtAyAAAgCpAyYAAgHUBNkAAgCtA/EAAgCpBOIAAgCtA+8AAgCoAxkAAgCpAxsAAgHUBNYAAgCtBLwAAgCsAxoAAgCpAxwAAgHUBNcAAgCtBL0AAgCsAwwAAgCpAw4AAgHUBNEAAgCtBLIAAgCoAqoAAgCqArQAAgCpBIsAAgCtA/QAAgCoBI0AAgCrBI8AAgCqAw0AAgCpAw8AAgHUBNIAAgCtBLMAAgCoAsUAAgCqAs8AAgCpBIwAAgCtA/UAAgCoBI4AAgCrBJAAAgCqAsIAAgCpAsEAAgCoBGIAAgCrAvYAAgCqBLkAAgCsBHMAAgCpBHsAAgCtBHUAAgCoBHcAAgCrBHkAAgCqBHQAAgCpBHwAAgCtBHYAAgCoBHgAAgCrBHoAAgCqBIEAAgCpBIkAAgCtBIMAAgCoBIUAAgCrBIcAAgCqBIIAAgCpBIoAAgCtBIQAAgCoBIYAAgCrBIgAAgCqApsAAgCpBDkAAgCtApoAAgCoBDsAAgCrAp0AAgCqBLQAAgCsAqMAAgCpBFEAAgCtAqIAAgCoBFMAAgCrBFUAAgCqBLYAAgCsAqcAAgCpBGMAAgCtAqYAAgCoBGEAAgCrAvUAAgCqBLgAAgCsArYAAgCpBDoAAgCtArUAAgCoBDwAAgCrArgAAgCqBLUAAgCsAr4AAgCpBFIAAgCtAr0AAgCoBFQAAgCrBFYAAgCqBLcAAgCsAscAAgCpBGYAAgCtAsYAAgCoBGgAAgCrAskAAgCqBLsAAgCsAswAAgCpBH4AAgCtAssAAgCoBIAAAgCrAzAAAgCqBL8AAgCsAqwAAgCpBGUAAgCtAqsAAgCoBGcAAgCrAq4AAgCqBLoAAgCsArEAAgCpBH0AAgCtArAAAgCoBH8AAgCrAy8AAgCqBL4AAgCsBNMAAwCqAKkE3AADAKoAqQACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAgQCBACwAgwCDAC0AhgCGAC4AiQCJAC8AjQCNADAAmACbADEA0ADQADUAAA==\",\r\n \"Roboto-Regular.ttf\": \"AAEAAAARAQAABAAQR0RFRqbzo4gAAcFUAAACWEdQT1N/jKrdAAHDrAAAWMBHU1VCm18k/AACHGwAABX2T1MvMpeDsYsAAAGYAAAAYGNtYXDTfF9iAAAWnAAABoJjdnQgO/gmfQAAL3gAAAD+ZnBnbagFhDIAAB0gAAAPhmdhc3AACAAZAAHBSAAAAAxnbHlm5vV0AgAAOswAAYOwaGVhZAhMpEUAAAEcAAAANmhoZWEKugrKAAABVAAAACRobXR4//meUgAAAfgAABSkbG9jYadOA+EAADB4AAAKVG1heHAI2RDGAAABeAAAACBuYW1lOEJpwQABvnwAAAKqcG9zdP9tAGQAAcEoAAAAIHByZXB5WM7TAAAsqAAAAs4AAQAAAAMCDFXLfBlfDzz1ABsIAAAAAADE8BEuAAAAAODgRcX6Gv3VCTEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJSvoa/koJMQABAAAAAAAAAAAAAAAAAAAFKQABAAAFKQCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAfwAAAH8AAACEAChApAAiQTtAHcEfwBuBdwAaQT6AGYBZgBoAr0AhgLJACcDcgAcBIoATgGTAB0CNgAmAhwAkANNABMEfwBzBH8AqwR/AF4EfwBfBH8ANQR/AJoEfwCFBH8ATgR/AHEEfwBkAfAAhQGxACkEEQBIBGQAmAQvAIcDyABLBy8AbQU4AB0E/ACpBTUAeAVAAKkEjACpBGwAqQVzAHoFtQCpAi0AtwRqADUFBQCpBE8AqQb8AKkFtQCpBYEAdwUMAKkFgQBuBO4AqQTAAFEExgAyBTAAjAUYAB0HGQA9BQQAOgTOAA8EywBXAh8AkwNJACkCHwAKA1gAQAOcAAQCeQA5BFoAbQR+AIwEMABdBIMAXwQ+AF0CyAA9BH4AYQRoAI0B8gCOAer/vgQOAI0B8gCcBwQAiwRrAI0EkABcBH4AjASMAF8CtgCNBCEAXwKeAAkEaQCJA+AAIQYDACsD+AAqA8kAFgP4AFkCtQBAAfQAsAK1ABQFcQCDAfQAiwRhAGkEpwBbBbUAaQQ0AA8B7ACUBOgAWwNZAGUGSQBcA5QAkwPBAGUEbgB/BkoAWwOrAI8C/QCDBEcAYQLvAEIC7wA/AoIAewSJAJsD6gBEAhcAlAH8AHQC7wB7A6QAewPAAGcF3ABVBjUAUAY5AHADygBEB3r/8QRFAFkFgQB3BLoApwTCAIwGwgBPBLEAfgSSAEcEiQBcBJwAlQTIAF8FmwAeAfsAnAR0AJsETwAjAioAIwWLAKIEiQCSB6EAaQdEAGEB/AChBYcAXgK6/+MFfwBmBJMAXAWQAIwE8wCJAgT/tAQ4AGMDxACqA44AjgOrAI8DawCCAfIAjgKuAHkCKwAyA8YAewL8AF8CWgB/AAD8pwAA/W4AAPyKAAD9XQAA/CcAAP04Ag4AuAQMAHICFwCUBHMAsgWkACAFcgBnBT8AMgSSAHgFtQCyBJIARgW7AE4FiQBaBVIAcgSGAGQEvQChBAMALwSJAGEEUQBkBCUAbQSJAJIEjwB7ApgAwwRvACYD7ABmBMUAKQSJAJIETgBlBIgAYQQsAFEEXgCQBaMAWAWaAGAGlwB6BKIAegRD/9oGSABLBgAAKwVlAHsIkgAyCKUAsgaDAD4FtACwBQsAowYEADMHQwAbBMAAUAW1ALIFqgAwBQgATQYtAFQF2gCvBXoAlweHALAHwACwBhIAEQbrALIFBQCjBWUAlAcnALcFGABaBG0AYgSTAJ4DXACbBNQALgYhABYEEABYBJ4AnQRTAJ0EoAAsBe8AngSdAJ0EngCdA9kAKAXOAGQEvgCdBFoAaAZ5AJ0GnwCSBPcAHgY2AJ4EWACeBE4AZAaIAJ4EZAAvBGj/5wROAGcGyQAnBuQAnQSJ//0EngCdBwkAnAYsAIEEV//bBywAuAX5AJoE0wAoBEcADwcMAMoGDAC9BtIAkwXiAJcJBQC3B9EAnAQkAFAD2wBMBXIAZwSMAFwFCwAWBAQALwVyAGcEiQBcBwEAnAYkAH4HCQCcBiwAgQUyAHYESABkBP4AdAAA/GYAAPxwAAD9ZQAA/aQAAPoaAAD6KwYJALIE7QCdBFf/2wUbAKkEigCMBGQAogORAJIE2wCyBAYAkgeiABsGYQAWBZoAsgS4AJ0FCgCkBH4AmwaMAEUFhAA/Bf8AqQTZAJ0HzwCpBbQAkggxALAG9ACSBe8AcQTUAG4FGAA6BCoAKgctADQFXQAfBbwAlwSWAGgFcACXBGsAhAVwAIkGMAA/BL7/3QUKAKQEWgCbBf4AMATvACwFswCyBIkAkgYSAKkE7ACdB08AqQY+AJ4FhwBeBKgAaASoAGoEuAA5A6sAOgUuADoEQAAqBPcAVwaVAFoG5QBkBlcANgUsADEESgBTBAgAeQfCAEUGdgA/B/sAqgaiAJAE9wB2BB4AZgWuACQFIQBGBWUAlwYCADAE8wAsAyEAcAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACNAAmAjQAJgVAAKIGPwCQA6YADQGaAGEBmgAwAZgAJAGaAE8C1ABpAtwAPALCACQEagBGBJAAVwKzAIsDxACUBVoAlAF/AFIHqgBEAmcAbAJnAFoDowA8Au8AUQLvADYC7wBcAu8AVgLvADsC7wBPAu8ASgM4AFAC+ABQAvgAUAHxAFQB8QBQA2EAegLvAFEC7wB7Au8AQgLvAD8C7wA2Au8AXALvAFYC7wA7Au8ATwLvAEoDOABQAvgAUAL4AFAB8QBUAfEAUASnAFsGVgAfBpEApwh2AKkF6wAfBisAjAR/AF8F2gAfBCMAKwR0ACEFSABdBU8AHwXoAHsDzgBoCDoAogUBAGgFGACYBiYAVAbXAGUGzwBkBmoAWgSQAGoFjwCpBK8ARgSTAKgExQA/CDoAYwIN/68EggBlBGQAmAQRAD0ELwCEBAgALAJMALUCkABvAgQAXQTzAD0EbwAgBIsAPQbUAD0G1AA9BO4APQabAF8AAAAACDQAWwg1AFwC7wBCAu8AewLvAFEEEABWBBAAYQQQAEIEDwByBBAAgQQQADEEEABPBBAATwQQAJkEEABjBCMASAQrAA4EVAAnBhUAMQRoABQEfQB1BCcAKQQgAEQESgCKBLwAWgRdAIsEvABgBOMAiwYCAIsDtQCLBFUAiwPPACwB6QCYBOQAiwSsAGQDzACLBCAARAQ0ADEDoQAOA68AiwRoABQEvABgBGgAFAOJAD4EzwCLA/AAQAVnAGEFFwBhBPMAdgVzACcEfABhB0IAKAdQAIsFdAApBM4AiwRaAIsFJQAuBgsAHwRAAEgE7ACLBE4AjATBACgEIAAjBSkAiwRqAD0GUQCLBqwAiwUdAAkF8QCLBE8AiwR8AEsGdwCLBIcAUAQSAAsGSAAfBHkAjAUKAIwFNwAkBcMAYARfAA4EqAAnBmIAJwRqAD0EagCLBcQAAgTLAF4EQABIBLwAYAQ0ADED5ABDCCIAiwSrACgC7wA/Au8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKA5cAjwK1AJ8D5gCLBDoAHwTEAGQFTACyBSQAsgQUAJMFPQCyBA8AkwSAAIsEfABhBFEAiwSGABQB/gCfA6UAggAA/KMD8ABvA/T/XQQPAGkD9QBpA68AiwOgAIIDnwCCAu8AUQLvADYC7wBcAu8AVgLvADsC7wBPAu8ASgWCAH4FrwB+BZMAsgXgAH4F4wB+A9UAoASCAIMEWAAPBM8APgRrAGUELgBKA6UAhAGSAGgGpABgBLoAggH8/7YEfwA7BH8AcwR/ACIEfwB2BH8AdgR/ADYEfwB+BH8AXgR/AHEEfwD0Agb/tAIE/7QB+wCcAfv/+QH7AJwEUQCLBQAAeAQhADsEfgCMBDMAXQSTAFsEjABbBJ8AWgSOAIwEnABbBD4AXQR+AGEEcABaA3kAVwTWAGgDtQABBjoACQP5AIsEvABgBOMAMATjAIsB/AAAAjYAJgVeACUFXgAlBIYAAQTGADICnv/0BTgAHQU4AB0FOAAdBTgAHQU4AB0FOAAdBTgAHQU1AHgEjACpBIwAqQSMAKkEjACpAi3/3wItALECLf/qAi3/1QW1AKkFgQB3BYEAdwWBAHcFgQB3BYEAdwUwAIwFMACMBTAAjAUwAIwEzgAPBFoAbQRaAG0EWgBtBFoAbQRaAG0EWgBtBFoAbQQwAF0EPgBdBD4AXQQ+AF0EPgBdAfv/xAH7AJYB+//PAfv/ugRrAI0EkABcBJAAXASQAFwEkABcBJAAXARpAIkEaQCJBGkAiQRpAIkDyQAWA8kAFgU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU1AHgEMABdBTUAeAQwAF0FNQB4BDAAXQU1AHgEMABdBUAAqQUZAF8EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBXMAegR+AGEFcwB6BH4AYQVzAHoEfgBhBXMAegR+AGEFtQCpBGgAjQIt/7YB+/+bAi3/zQH7/7ICLf/sAfv/0QItABcB8v/6Ai0AqgaXALcD3ACOBGoANQIE/7QFBQCpBA4AjQRPAKIB8gCTBE8AqQHyAFYETwCpAogAnARPAKkCzgCcBbUAqQRrAI0FtQCpBGsAjQW1AKkEawCNBGv/uwWBAHcEkABcBYEAdwSQAFwFgQB3BJAAXATuAKkCtgCNBO4AqQK2AFME7gCpArYAZATAAFEEIQBfBMAAUQQhAF8EwABRBCEAXwTAAFEEIQBfBMAAUQQhAF8ExgAyAp4ACQTGADICngAJBMYAMgLGAAkFMACMBGkAiQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQUwAIwEaQCJBTAAjARpAIkHGQA9BgMAKwTOAA8DyQAWBM4ADwTLAFcD+ABZBMsAVwP4AFkEywBXA/gAWQd6//EGwgBPBYEAdwSJAFwEgP+9BID/vQQnACkEhgAUBIYAFASGABQEhgAUBIYAFASGABQEhgAUBHwAYQPmAIsD5gCLA+YAiwPmAIsB6f+8AekAjgHp/8cB6f+yBOMAiwS8AGAEvABgBLwAYAS8AGAEvABgBH0AdQR9AHUEfQB1BH0AdQQrAA4EhgAUBIYAFASGABQEfABhBHwAYQR8AGEEfABhBIAAiwPmAIsD5gCLA+YAiwPmAIsD5gCLBKwAZASsAGQErABkBKwAZATkAIsB6f+TAen/qgHp/8kB6QAFAekAhwPPACwEVQCLA7UAgwO1AIsDtQCLA7UAiwTjAIsE4wCLBOMAiwS8AGAEvABgBLwAYARKAIoESgCKBEoAigQgAEQEIABEBCAARAQgAEQEJwApBCcAKQQnACkEfQB1BH0AdQR9AHUEfQB1BH0AdQR9AHUGFQAxBCsADgQrAA4EIwBIBCMASAQjAEgFOAAdBPD/jAYZ/5oCkf+gBZX/+gUy/3YFZv/8Apj/mwU4AB0E/ACpBIwAqQTLAFcFtQCpAi0AtwUFAKkG/ACpBbUAqQWBAHcFDACpBMYAMgTOAA8FBAA6Ai3/1QTOAA8EhgBkBFEAZASJAJICmADDBF4AkAR0AJsEkABcBIkAmwPgACEEcABaApj/5AReAJAEkABcBF4AkAaXAHoEjACpBHMAsgTAAFECLQC3Ai3/1QRqADUFJACyBQUAqQUIAE0FOAAdBPwAqQRzALIEjACpBbUAsgb8AKkFtQCpBYEAdwW1ALIFDACpBTUAeATGADIFBAA6BFoAbQQ+AF0EngCdBJAAXAR+AIwEMABdA8kAFgP4ACoEPgBdA1wAmwQhAF8B8gCOAfv/ugHq/74EUwCdA8kAFgcZAD0GAwArBxkAPQYDACsHGQA9BgMAKwTOAA8DyQAWAWYAaAKQAIkEIAChAgT/tAGaADAG/ACpBwQAiwU4AB0EWgBtBIwAqQW1ALIEPgBdBJ4AnQWJAFoFmgBgBQsAFgQE//sIWQBcCUoAdwTAAFAEEABYBTUAeAQwAF0EzgAPBAMALwItALcHQwAbBiEAFgItALcFOAAdBFoAbQU4AB0EWgBtB3r/8QbCAE8EjACpBD4AXQWHAF4EOABjBDgAYwdDABsGIQAWBMAAUAQQAFgFtQCyBJ4AnQW1ALIEngCdBYEAdwSQAFwFcgBnBIwAXAVyAGcEjABcBWUAlAROAGQFCABNA8kAFgUIAE0DyQAWBQgATQPJABYFegCXBFoAaAbrALIGNgCeBIMAXwU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWv/JBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQSMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIz/7gQ+/7gEjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0CLQC3AfsAnAItAKQB8gCGBYEAdwSQAFwFgQB3BJAAXAWBAHcEkABcBYEARgSQ/8IFgQB3BJAAXAWBAHcEkABcBYEAdwSQAFwFfwBmBJMAXAV/AGYEkwBcBX8AZgSTAFwFfwBmBJMAXAV/AGYEkwBcBTAAjARpAIkFMACMBGkAiQWQAIwE8wCJBZAAjATzAIkFkACMBPMAiQWQAIwE8wCJBZAAjATzAIkEzgAPA8kAFgTOAA8DyQAWBM4ADwPJABYEoQBfBMYAMgPZACgFegCXBFoAaARzALIDXACbBjAAPwS+/90EaACNBQX/1AUF/9QEcwADA1z//QU4AAsEKP/TBM4ADwQDAC8FBAA6A/gAKgRRAGQEbAASBj8AkAR/AF4EfwBfBH8ANQR/AJoEkwCZBKcAhQSTAGQEpwCHBXMAegR+AGEFtQCpBGsAjQU4AB0EWgA6BIwAXwQ+ACkCLf8LAfv+8AWBAHcEkAAzBO4AVgK2/4wFMACMBGkAKwSn/zgE/ACpBH4AjAVAAKkEgwBfBUAAqQSDAF8FtQCp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ABQAFQAWABcAGAAZABoAGwAcAB0AJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AGUAZwCBAIMAhACMAI8AkQCTALEAsgCzALQAtQC2ALcAuAC5ALoA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkBLwEzATUBNwE5ATsBQQFDAUUBSQFLAUwBWAFZAbEBtwG8Ab8ClQKWApgCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQC0QLTAtUC1wLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvMC9QL3AvkC+wL9Av4DAAMCAwQDBgMIAwoDDAMOAxADEwMVAxcDGQMbAx0DHwMhAyMDJQMnAykDKwMtAy8DMQMzAzUDNwM5AzsDPQM/A0ADQgNEA0YDSAOhA6IDowOkA6UDpgOnA6kDqgOrA6wDrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD1APVA9YD1wPYA9kD2gPbA9wD3QPuA/AD8gP0BAkECwQNBCIEKAQuBJgEnQShBSIFJAADAe//9QHw/+4Dm//1AAMADf/mAEH/9ABh/+8AAwBK/+4AW//qAfD/8AADAFv/wQH//+YCS//oAAMASgAPAFgAMgBbABEAAwBb/+UB///rAkv/7QA7ALIAEADS/+AA0//oANQAEADW/+AA2QAUAN0AEADh/+EA5v/gAO0AEwDyABAA+f/gAQQAEAEI/+gBDQAQARf/6AEZ/+ABG//oAR3/6AEf/+gBIf/oATn/4AFB/+gBRf/gAUf/4QFI/+ABSf/hAUr/4AFN/+EBUAAQAVEAEAFY/+kBYv/fAWT/3gFmABABav/oAWz/3wFu//IBbwAQAXAAEAPRABAD2P/oA9v/6APc/+AEBf/gBAj/6AQL/+gEDf/fBBMAEAQVABAEJv/oBCj/6AQq/+gENP/hBDX/4ASS/+AElP/hBJX/4ASh/98ABABY/+8AW//fAJr/7gHw/80ABAANABQAQQARAFb/4gBhABMABQA4/9gDKf/YAyv/2AMt/9gE2v/YAAUAI//DAFj/7wBb/98Amv/uAfD/zQAF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Au7/7ALw/+wC8v/sBFL/7ARU/+wEVv/sBFj/7ARa/+wEXP/sBF7/7ARg/+wEdP/sBHb/7AR4/+wEfP/sBLf/7ATE/+wExv/sADYABgAQAAsAEAANABQAQQASAEf/6ABI/+gASf/oAEv/6ABV/+gAYQATAJT/6ACZ/+gBhAAQAYUAEAGHABABiAAQAYkAEAK8/+gCvf/oAr7/6AK//+gCwP/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/oAuT/6ALm/+gC6P/oAur/6ALs/+gC7v/oAvD/6ALy/+gD9gAQA/cAEAP6ABAEUv/oBFT/6ARW/+gEWP/oBFr/6ARc/+gEXv/oBGD/6AR0/+gEdv/oBHj/6AR8/+gEt//oBMT/6ATG/+gASgBH/8UASP/FAEn/xQBL/8UATAAgAE8AIABQACAAU/+AAFX/xQBX/5AAWwALAJT/xQCZ/8UB2/+QArz/xQK9/8UCvv/FAr//xQLA/8UCxv+AAsf/gALI/4ACyf+AAsr/gALY/8UC2v/FAtz/xQLe/8UC4P/FAuL/xQLk/8UC5v/FAuj/xQLq/8UC7P/FAu7/xQLw/8UC8v/FAxT/gAMW/4ADGP+AAyD/kAMi/5ADJP+QAyb/kAMo/5AEUv/FBFT/xQRW/8UEWP/FBFr/xQRc/8UEXv/FBGD/xQRm/4AEaP+ABGr/gARs/4AEbv+ABHD/gARy/4AEdP/FBHb/xQR4/8UEev+ABHz/xQS3/8UEu/+ABMT/xQTG/8UEyAAgBMoAIATMACAE2f+QAAEA9AAEAAYACwAMACUAJwAoACkAKgAvADAAMwA0ADUANgA4ADoAOwA8AD0APgA/AEkASgBMAE8AUQBSAFMAVgBYAFoAWwBdAF8AlgCdALIBhAGFAYcBiAGJAfIB9AH1AfcB+gIFAkoCTQJfAmECYgKVApYCmAKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKrAqwCrQKuAq8CtAK9Ar4CvwLAAsUCxgLHAsgCyQLKAs8C0ALRAtMC1QLXAtkC2wLdAt8C4QLiAuMC5ALlAuYC5wLoAukC6gL0AwIDBAMGAwgDCgMNAw8DEQMSAxMDFAMVAxYDFwMYAxoDHAMeAykDKwMtAzsDPQM+Az8DQANCA0QDSgNLA0wDTQNOA08DUANRA1IDUwNeA18DYANhA2IDaANpA2oDbwOBA4IDgwOEA4gDiQOKA5MD7gPwA/ID9AP1A/YD9wP6A/wD/QQ5BDsEPQQ/BEEEQwRFBEcESQRLBE0ETwRRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgR6BIsEjASNBI4EjwSQBLMEtAS2BLoEuwS9BMMExQTIBMkEywTNBNAE0gTTBNQE1wTaBN0E3gTfBOAE4QTjAAEANQAGAAsAlgCxALIAswC0AL0AwQDHAYQBhQGHAYgBiQIFAgYCBwOhA6IDowOkA6UDpgOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7sDvwPBA8UD9gP3A/oE5QTmBOoE7QTzBPgApwAQ/xYAEv8WACX/VgAu/vgAOAAUAEX/3gBH/+sASP/rAEn/6wBL/+sAU//rAFX/6wBW/+YAWf/qAFr/6ABd/+gAlP/rAJn/6wCb/+oAsv9WAYb/FgGK/xYBjv8WAY//FgIF/8ACTf/AApr/VgKb/1YCnP9WAp3/VgKe/1YCn/9WAqD/VgK1/94Ctv/eArf/3gK4/94Cuf/eArr/3gK7/94CvP/rAr3/6wK+/+sCv//rAsD/6wLG/+sCx//rAsj/6wLJ/+sCyv/rAsv/6gLM/+oCzf/qAs7/6gLP/+gC0P/oAtH/VgLS/94C0/9WAtT/3gLV/1YC1v/eAtj/6wLa/+sC3P/rAt7/6wLg/+sC4v/rAuT/6wLm/+sC6P/rAur/6wLs/+sC7v/rAvD/6wLy/+sDAP74AxT/6wMW/+sDGP/rAykAFAMrABQDLQAUAzD/6gMy/+oDNP/qAzb/6gM4/+oDOv/qAz7/6ANN/8ADTv/AA0//wANQ/8ADUf/AA1L/wANT/8ADaP/AA2n/wANq/8AD9f/oA/3/VgP+/94EOf9WBDr/3gQ7/1YEPP/eBD3/VgQ+/94EP/9WBED/3gRB/1YEQv/eBEP/VgRE/94ERf9WBEb/3gRH/1YESP/eBEn/VgRK/94ES/9WBEz/3gRN/1YETv/eBE//VgRQ/94EUv/rBFT/6wRW/+sEWP/rBFr/6wRc/+sEXv/rBGD/6wRm/+sEaP/rBGr/6wRs/+sEbv/rBHD/6wRy/+sEdP/rBHb/6wR4/+sEev/rBHz/6wR+/+oEgP/qBIL/6gSE/+oEhv/qBIj/6gSK/+oEjP/oBI7/6ASQ/+gEtP9WBLX/3gS3/+sEu//rBL//6gTE/+sExv/rBNoAFATe/+gE4P/oAAIAKACWAJYAFgCxALEADQCyALIAFwCzALMAAgC0ALQAAwC9AL0ACADBAMEABwDHAMcAFQIFAgUAEgIGAgYACQIHAgcABQOhA6EAAwOiA6IABgOjA6QAAQOlA6UAAgOmA6YABAOpA6kAAwOqA6oACwOrA6sABgOsA6wAEQOtA64AAQOvA68ADgOwA7EAAQOyA7IAAgOzA7MADwO0A7QAEAO1A7UABAO2A7YADAO3A7cAAQO4A7gABAO7A7sABwO/A78ACgPBA8EACAPFA8UACgTlBOUAAgTmBOYABQTqBOoACQTtBO0ABQTzBPMAEwT4BPgAFAACADIABgAGAAEACwALAAEAEAAQAAIAEQARAAMAEgASAAIAsgCyABMAswCzAAcAtAC0AAYAuwC7AAQAvQC9AAwAwQDBAAsAyADJAAQAywDLAAUBgQGCAAMBhAGFAAEBhgGGAAIBhwGJAAEBigGKAAIBjgGPAAICBQIFABECBgIGAA0CBwIHAAkClAKUAAMDoQOhAAYDpQOlAAcDpgOmAAgDqQOpAAYDrAOsABADsgOyAAcDtQO1AAgDtgO2AA8DuAO4AAgDuQO5AAQDuwO7AAsDvQO9AAUDvwO/AA4DwQPBAAwDxAPEAAUDxQPFAA4DxgPGAAUD9gP3AAED+gP6AAEEpwSnAAME5gTmAAkE6gTqAA0E6wTrAAoE7QTtAAkE+QT5AAoE+gT6ABIE/AT8AAoAAQCGAAYACwCWALIA1ADVANcA2gDcAN0A3gDgAOEA4gDjAOQA5QDmAOwA7gD3APwA/gD/AQQBBQEKAQ0BGAEZARoBLgEvATABMwE0ATUBNwE5ATsBQwFEAVQBVgFYAVwBXQFeAYQBhQGHAYgBiQIFAhkCKAIpAioDyAPJA8sDzAPNA84DzwPQA9ED0gPTA9QD1gPXA9gD2gPbA9wD3QPeA98D4QPiA+MD5APlA+YD5wPtA/YD9wP6A/8EAQQFBAYECwQMBA0EDgQPBBAEEQQSBBMEFAQVBBYEGQQaBBwEHQQeBB8EJgQnBCsELQQuBC8EMAQxBDIEMwSSBJYElwSaBJwEnQSfBKEFAwUFBQwFEAACAGsABgAGAAEACwALAAEAlgCWABwAsgCyAB0A1ADVAAkA2gDaAAMA3gDeAAoA5ADkAAkA5gDmAAkA7ADsAAsA7gDuAAQA9wD3AAwA/AD8AA0A/gD+AA0A/wD/AAwBBAEFAA0BCgEKAA0BDQENAA8BGAEYABABGQEZABYBGgEaAAIBLgEuAAwBLwEvAAgBMAEwAAsBMwEzAAMBNAE0AAQBNQE1AAUBNwE3AAUBOQE5AAUBQwFDAAMBRAFEAAQBWAFYABEBXAFcAAsBXQFdAAMBXgFeAAQBhAGFAAEBhwGJAAECBQIFABgCGQIZAAcCKAIqAAcDyAPIAA4DyQPJAAgDzQPNAB4DzgPPAAUD0APQAAoD0QPRAA8D0gPSAB8D0wPTAAgD1APUAA4D2APYABED2gPaACAD2wPbABMD3APcABQD3QPdAAMD3gPeABID3wPfAAYD4QPhABAD4gPiAAwD4wPjABUD5APkAAID5QPlAAQD5gPmAAYD5wPnAAsD7QPtAAID9gP3AAED+gP6AAED/wP/AA4EAQQBAAYEBQQFABYEBgQGAAIECwQLABMEDAQMABUEDQQNABcEDgQOAAIEEAQQAAMEEQQRAAQEEwQTAA8EFAQUABIEFQQVAA8EFgQWABIEGQQZAA4EGgQaAAYEHAQdAAYEHgQeAAMEHwQfAAQEJgQmABEEJwQnABAEKwQrABAELQQtAAwELgQuAAoELwQvAAIEMAQwAAoEMQQxAAIEMgQyAAoEMwQzAAIEkgSSABQElgSWAAgElwSXAAsEmgSaACEEnAScAAkEnQSdAAgEnwSfAAUEoQShABcFAwUDAAcFBQUFABkFDAUMABoFEAUQABsAAgBaAAYABgAAAAsACwABACUAKQACACwANAAHADgAPgAQAEUARwAXAEkASQAaAEwATAAbAFEAVAAcAFYAVgAgAFoAWgAhAFwAXgAiAIoAigAlAJYAlgAmALIAsgAnAYQBhQAoAYcBiQAqAfIB8gAtAfcB9wAuAfoB+wAvAgUCBQAxAkoCSgAyAk0CTQAzAl8CXwA0AmECYgA1ApUClgA3ApgCmAA5ApoCwAA6AsUCygBhAs8C3wBnAuEC6gB4AvMC9QCCAvcC9wCFAvkC+QCGAvsC+wCHAv0C/QCIAwADAACJAwIDAgCKAwQDBACLAwYDBgCMAwgDCACNAwoDCgCOAwwDGACPAxoDGgCcAxwDHACdAx4DHgCeAykDKQCfAysDKwCgAy0DLQChAy8DLwCiAzEDMQCjAzMDMwCkAzUDNQClAzcDNwCmAzkDOQCnAzsDOwCoAz0DRQCpA0oDUwCyA14DYgC8A2gDagDBA28DbwDEA4ADhADFA4gDigDKA5MDkwDNA+4D7gDOA/AD8ADPA/ID8gDQA/QD9wDRA/oD/gDVBDkEYQDaBGMEYwEDBGUEcgEEBHoEegESBH0EfQETBH8EfwEUBIsEkAEVBLIEtgEbBLgEuAEgBLoEuwEhBL0EvQEjBMEEwwEkBMUExQEnBMcEyQEoBMsEywErBM0EzQEsBM8E1QEtBNcE1wE0BNoE2gE1BNwE4QE2BOME5AE8AAIAoAAGAAYABAALAAsABAAQABAACAARABEACwASABIACACyALIAGwDSANIACgDTANMAAwDUANQADQDWANYACgDaANoABgDdAN0ADQDeAN4ADgDhAOEAEQDsAOwAAQDuAO4ABwDwAPEAAQDyAPIAEgDzAPUAAQD3APcAAgD4APgAAQD5APkAFAD6APsAAQD+AP4AAQEAAQAAAQEDAQMAAgEEAQQAEgEFAQUAAQEIAQgAAwENAQ0AEAEXARcAAwEYARgAEwEZARkAFwEaARoABQEbARsAAwEdAR0AAwEeAR4AAgEfAR8AAwEhASEAAwEiASIAAgErASsAAQEzATMABgE0ATQABwE2ATYAAQE5ATkACgE8ATwAAQE+AT4AAQFBAUEAAwFCAUIAAgFDAUMABgFEAUQABwFFAUUACgFHAUcAEQFIAUgAFAFQAVAADQFRAVEAEgFTAVMAAQFVAVUAAQFXAVcAAQFcAVwAAQFdAV0ABgFeAV4ABwFgAWEAAgFmAWYADQFqAWoAAwFrAWsAAgFvAW8ADQFwAXAAEgGBAYIACwGEAYUABAGGAYYACAGHAYkABAGKAYoACAGOAY8ACAIFAgUAGQIOAg4ADAIPAg8ACQISAhIADAIWAhYADwInAicADwIqAioADAIrAisACQIsAiwAFgItAi0ADwIuAi4ADAI0AjQACQKUApQACwPNA80AHAPQA9AADgPRA9EAEAPYA9gAAwPbA9sAAwPcA9wACgPdA90ABgPeA94AFQPfA98AAgPgA+AAAQPhA+EAEwPiA+IAAQPjA+MAAgPkA+QABQPlA+UABwPmA+YAAgPnA+cAAQPoA+gAHQPsA+wAAQPtA+0ABQP2A/cABAP6A/oABAQBBAEAAgQCBAIAAQQFBAUAFwQGBAYABQQHBAcAAgQIBAgAAwQLBAsAAwQMBAwAAgQNBA0AGAQOBA4ABQQQBBAABgQRBBEABwQTBBMAEAQUBBQAFQQVBBUAEAQWBBYAFQQaBBoAAgQcBB0AAgQeBB4ABgQfBB8ABwQjBCMAAQQlBCUAAQQmBCYAAwQnBCcAEwQoBCgAAwQpBCkAAgQqBCoAAwQrBCsAEwQuBC4ADgQvBC8ABQQwBDAADgQxBDEABQQyBDIADgQzBDMABQQ0BDQAEQQ1BDUAFAQ3BDcAAQQ4BDgAAgSSBJIACgSUBJQAEQSVBJUAFASXBJcAAQShBKEAGASnBKcACwUFBQUAGgUMBQwACQUPBQ8ACQUQBRAADAURBREADwUUBRQACQUVBRUAFgACAOwABgAGAAwACwALAAwAJQAlAAIAJgAmABsAJwAnAA4AKQApAAQALAAtAAEALgAuAAcALwAvABgAMAAwAA8AMQAyAAEANAA0ABwAOAA4ABAAOQA5AAcAOgA6ABkAOwA7ABEAPAA8AB4APQA9AA0APgA+ABQARQBFAAMARgBGABUARwBHABIASQBJAAUATABMAAgAUQBSAAgAUwBTAAYAVABUABUAVgBWABMAWgBaAAsAXABcACIAXQBdAAsAXgBeABcAigCKABUAlgCWACAAsgCyACEBhAGFAAwBhwGJAAwB8gHyABoB9wH3AAkB+gH6ABYB+wH7AB0CBQIFAB8CSgJKAAkCTQJNAAoCXwJfAA4CmAKYABACmgKgAAICoQKhAA4CogKlAAQCpgKqAAECsAKzAAcCtAK0AA0CtQK7AAMCvAK8ABICvQLAAAUCxQLFAAgCxgLKAAYCzwLQAAsC0QLRAAIC0gLSAAMC0wLTAAIC1ALUAAMC1QLVAAIC1gLWAAMC1wLXAA4C2ALYABIC2QLZAA4C2gLaABIC2wLbAA4C3ALcABIC3QLdAA4C3gLeABIC4QLhAAQC4gLiAAUC4wLjAAQC5ALkAAUC5QLlAAQC5gLmAAUC5wLnAAQC6ALoAAUC6QLpAAQC6gLqAAUC8wLzAAEC9AL0AAgC9QL1AAEC9wL3AAEC+QL5AAEC+wL7AAEC/QL9AAEDAAMAAAcDAgMCABgDBAMEAA8DBgMGAA8DCAMIAA8DCgMKAA8DDAMMAAEDDQMNAAgDDgMOAAEDDwMPAAgDEAMQAAEDEQMSAAgDFAMUAAYDFgMWAAYDGAMYAAYDGgMaABMDHAMcABMDHgMeABMDKQMpABADKwMrABADLQMtABADLwMvAAcDMQMxAAcDMwMzAAcDNQM1AAcDNwM3AAcDOQM5AAcDOwM7ABEDPQM9AA0DPgM+AAsDPwM/AA0DQANAABQDQQNBABcDQgNCABQDQwNDABcDRANEABQDRQNFABcDSgNLAAkDTANMABoDTQNTAAoDXgNiAAkDaANqAAoDbwNvAAkDgAOAAB0DgQOEABYDiAOKAAkDkwOTABoD7gPuABED8APwABED8gPyABED9AP0AA0D9QP1AAsD9gP3AAwD+gP6AAwD+wP7AAED/AP8AAgD/QP9AAID/gP+AAMEOQQ5AAIEOgQ6AAMEOwQ7AAIEPAQ8AAMEPQQ9AAIEPgQ+AAMEPwQ/AAIEQARAAAMEQQRBAAIEQgRCAAMEQwRDAAIERAREAAMERQRFAAIERgRGAAMERwRHAAIESARIAAMESQRJAAIESgRKAAMESwRLAAIETARMAAMETQRNAAIETgROAAMETwRPAAIEUARQAAMEUQRRAAQEUgRSAAUEUwRTAAQEVARUAAUEVQRVAAQEVgRWAAUEVwRXAAQEWARYAAUEWQRZAAQEWgRaAAUEWwRbAAQEXARcAAUEXQRdAAQEXgReAAUEXwRfAAQEYARgAAUEYQRhAAEEYwRjAAEEZgRmAAYEaARoAAYEagRqAAYEbARsAAYEbgRuAAYEcARwAAYEcgRyAAYEegR6AAYEfQR9AAcEfwR/AAcEiwSLAA0EjASMAAsEjQSNAA0EjgSOAAsEjwSPAA0EkASQAAsEsgSyAAEEswSzAAgEtAS0AAIEtQS1AAMEtgS2AAQEuAS4AAEEuwS7AAYEvQS9ABMEwQTBABsEwgTCABUExwTHAAEEyATIAAgEyQTJABgEywTLABgEzQTNAA8EzwTPAAEE0ATQAAgE0QTRAAEE0gTSAAgE1ATUABwE1QTVABUE1wTXABME2gTaABAE3ATcAAcE3QTdABkE3gTeAAsE3wTfABkE4ATgAAsE4QThABEE4wTjABQE5ATkABcAAgEJAAYABgANAAsACwANABAAEAASABEAEQAVABIAEgASACUAJQADACcAJwABACsAKwABAC4ALgAaADMAMwABADUANQABADcANwAQADgAOAATADkAOQAIADoAOgAZADsAOwARADwAPAAdAD0APQAOAD4APgAUAEUARQAEAEcASQACAEsASwACAFEAUgAJAFMAUwAHAFQAVAAJAFUAVQACAFcAVwAPAFkAWQAGAFoAWgAMAFwAXAAhAF0AXQAMAF4AXgAXAIMAgwABAJMAkwABAJQAlAACAJgAmAABAJkAmQACAJsAmwAGALIAsgAgAYEBggAVAYQBhQANAYYBhgASAYcBiQANAYoBigASAY4BjwASAdsB2wAPAe0B7QAYAe4B7gAeAe8B7wAbAfEB8QAKAfIB8gAcAfMB8wAWAfUB9QAFAfcB9wAFAf8B/wAFAgUCBQAfAksCSwAFAk0CTQALAl8CYAABAmICYwABApQClAAVApoCoAADAqECoQABAqsCrwABArACswAIArQCtAAOArUCuwAEArwCwAACAsUCxQAJAsYCygAHAssCzgAGAs8C0AAMAtEC0QADAtIC0gAEAtMC0wADAtQC1AAEAtUC1QADAtYC1gAEAtcC1wABAtgC2AACAtkC2QABAtoC2gACAtsC2wABAtwC3AACAt0C3QABAt4C3gACAuAC4AACAuIC4gACAuQC5AACAuYC5gACAugC6AACAuoC6gACAusC6wABAuwC7AACAu0C7QABAu4C7gACAu8C7wABAvAC8AACAvEC8QABAvIC8gACAwADAAAaAw0DDQAJAw8DDwAJAxEDEgAJAxMDEwABAxQDFAAHAxUDFQABAxYDFgAHAxcDFwABAxgDGAAHAx8DHwAQAyADIAAPAyEDIQAQAyIDIgAPAyMDIwAQAyQDJAAPAyUDJQAQAyYDJgAPAycDJwAQAygDKAAPAykDKQATAysDKwATAy0DLQATAy8DLwAIAzADMAAGAzEDMQAIAzIDMgAGAzMDMwAIAzQDNAAGAzUDNQAIAzYDNgAGAzcDNwAIAzgDOAAGAzkDOQAIAzoDOgAGAzsDOwARAz0DPQAOAz4DPgAMAz8DPwAOA0ADQAAUA0EDQQAXA0IDQgAUA0MDQwAXA0QDRAAUA0UDRQAXA0gDSAABA00DUwALA1QDVAAFA14DYgAFA2MDZgAKA2cDZwAYA2gDagALA2sDbgAFA3UDeAAFA4gDigAFA44DkQAWA5MDkwAcA5UDmgAKA5sDmwAbA5wDnQAYA+4D7gARA/AD8AARA/ID8gARA/QD9AAOA/UD9QAMA/YD9wANA/oD+gANA/wD/AAJA/0D/QADA/4D/gAEBDkEOQADBDoEOgAEBDsEOwADBDwEPAAEBD0EPQADBD4EPgAEBD8EPwADBEAEQAAEBEEEQQADBEIEQgAEBEMEQwADBEQERAAEBEUERQADBEYERgAEBEcERwADBEgESAAEBEkESQADBEoESgAEBEsESwADBEwETAAEBE0ETQADBE4ETgAEBE8ETwADBFAEUAAEBFIEUgACBFQEVAACBFYEVgACBFgEWAACBFoEWgACBFwEXAACBF4EXgACBGAEYAACBGUEZQABBGYEZgAHBGcEZwABBGgEaAAHBGkEaQABBGoEagAHBGsEawABBGwEbAAHBG0EbQABBG4EbgAHBG8EbwABBHAEcAAHBHEEcQABBHIEcgAHBHMEcwABBHQEdAACBHUEdQABBHYEdgACBHcEdwABBHgEeAACBHkEeQABBHoEegAHBHsEewABBHwEfAACBH0EfQAIBH4EfgAGBH8EfwAIBIAEgAAGBIIEggAGBIQEhAAGBIYEhgAGBIgEiAAGBIoEigAGBIsEiwAOBIwEjAAMBI0EjQAOBI4EjgAMBI8EjwAOBJAEkAAMBKcEpwAVBLMEswAJBLQEtAADBLUEtQAEBLcEtwACBLoEugABBLsEuwAHBL8EvwAGBMQExAACBMYExgACBNAE0AAJBNIE0gAJBNME0wABBNgE2AAQBNkE2QAPBNoE2gATBNwE3AAIBN0E3QAZBN4E3gAMBN8E3wAZBOAE4AAMBOEE4QARBOME4wAUBOQE5AAXAAEAAAAKAGQAJAAEREZMVAD+Y3lybAD+Z3JlawD+bGF0bgECAB8BFgEeASYBLgE2AT4BPgFGAU4BVgFeAWYBbgF2AX4BhgGOAZYBngGmAa4BtgG+AcYBzgHWAd4B1gHeAeYB7gAbYzJzYwG2Y2NtcAJAZGxpZwG8ZG5vbQHCZnJhYwJQbGlnYQHIbGlnYQJabGlnYQJIbG51bQHObG9jbAHUbG9jbAHabG9jbAHgbG9jbAHmbnVtcgHsb251bQHycG51bQH4c21jcAH+c3MwMQIEc3MwMgIKc3MwMwIQc3MwNAIWc3MwNQIcc3MwNgIic3MwNwIoc3VicwIuc3VwcwI0dG51bQI6AcIAAAPGAAdBWkUgA/ZDUlQgA/ZGUkEgBCZNT0wgBFhOQVYgBIpST00gBLxUUksgA/YAAQAAAAEHDgABAAAAAQUqAAYAAAABAkoAAQAAAAECDAAEAAAAAQSgAAEAAAABAZYAAQAAAAECBgABAAAAAQGMAAQAAAABAagABAAAAAEBqAAEAAAAAQG8AAEAAAABAXIAAQAAAAEBcAABAAAAAQFuAAEAAAABAYgAAQAAAAEBigABAAAAAQJCAAEAAAABAZAAAQAAAAECUAABAAAAAQJ2AAEAAAABApwAAQAAAAECwgABAAAAAQEsAAYAAAABAZAAAQAAAAEBtAABAAAAAQHGAAEAAAABAdgAAQAAAAEBCgAAAAEAAAAAAAEACwAAAAEAGwAAAAEACgAAAAEAFgAAAAEACAAAAAEABQAAAAEABwAAAAEABgAAAAEAHAAAAAEAEwAAAAEAFAAAAAEAAQAAAAEADAAAAAEADQAAAAEADgAAAAEADwAAAAEAEAAAAAEAEQAAAAEAEgAAAAEAHgAAAAEAHQAAAAEAFQAAAAIAAgAEAAAAAgAJAAoAAAADABcAGAAaAAAABAAJAAoACQAKAAD//wAUAAAAAQACAAMABAAIAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgABB2gAAgABB0QAAQABB0QB+AABB0QBiQABB0QCDwABB0QBgQABB2QBjgABDjoAAQdGAAEOMgABB0QAAgdYAAICRgJHAAIHTgACAkgCSQABDi4AAwcuBzIHNgACB0AAAwKIAokCiQACB1YABgJ7AnkCfAJ9AnoFKAACBzQABgUiBSMFJAUlBSYFJwADAAEHQgABBv4AAAABAAAAGQACByAHCAeCB0YABwAABwwHDAcMBwwHDAcMAAIG0gAKAeEB4AHfAjkCOgI7AjwCPQI+Aj8AAga4AAoCWAB6AHMAdAJZAloCWwJcAl0CXgACBp4ACgGVAHoAcwB0AZYBlwGYAZkBmgGbAAIG7gAMAl8CYQJgAmICYwKBAoICgwKEAoUChgKHAAIHJAAUAnQCeAJyAm8CcQJwAnUCcwJ3AnYCaQJkAmUCZgJnAmgAGgAcAm0CfwACBr4AFASvAosEqASpBKoEqwSsAoAErQSuAmYCaAJnAmUCaQJ/ABoCbQAcAmQAAgcMABQCdQJ3AngCcgJvAnECcAJzAnYCdAAbABUAFgAXABgAGQAaABwAHQAUAAIGtgAUBKwErQKLBKgEqQSqBKsCgASuABcAGQAYABYAGwAUABoAHQAcABUErwAA//8AFQAAAAEAAgADAAQABwAIAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAA//8AFQAAAAEAAgADAAQABQAIAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAA//8AFgAAAAEAAgADAAQABgAIAAkADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaAAD//wAWAAAAAQACAAMABAAGAAgACgANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAAP//ABYAAAABAAIAAwAEAAYACAALAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAA//8AFgAAAAEAAgADAAQABgAIAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaAAEPkgA2BvIFtAW4BfAHAAX2BbwHDgYyBjoF/AaGB1QFwAZyBkIGAgdkBggGSgaSBg4HHAXEBcgGFAcqBcwF0AXUBlIGWgYaBp4HOAXYBnwGYgYgB0YGJgZqBqoGLAXcBeAF5AXoBrYGwgbOBtoG5gXsAAIHAgDrAowCTQJMAksCSgJCAgAB/wH+Af0B/AH7AfoB+QH4AfcB9gH1AfQB8wHyAfEB8AHvAe4B7QHsAn4CjgNLApACjwNKAf0CjQKSAmwE7QTuAgQCBQTvBPAE8QIGBPICBwIIAgkE9wIKAgoE+AT5AgsCDAINAhQFBgUHAhUCFgIXAhgCGQIaBQoFCwUNBRAFGQIcAh0CHgIfAiACIQIiAiMCJAIlAg4CDwIQAhECEgITAlUCJwIoAikCKgUTAisCLQIuAi8CMQIzApEDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwOdA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30FGgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAUdA5EDkgOUA5MDlQOWA5cDmAOZA5oDmwOcA54DnwOgBRsFHATmBOcE6ATpBPME9gT0BPUE+gT7BPwE6gTrBOwFBQUIBQkFDAUOBQ8CGwURBP0E/gT/BQAFAQUCBQMFBAUeBR8FIAUhBRIFFAUVAjIFFwI0BRgFFgIwAiYCLAUmBScAAgcAAPoCAQKMAesB6gHpAegB5wHmAeUB5AHjAeICTQJMAksCSgJCAgAB/wH+Af0B/AH7AfoB+QH4AfcB9gH1AfQB8wHyAfEB8AHvAe4B7QHsAgICAwKOApACjwKRAo0CkgJsAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhoCGwUZAhwCHQIeAh8CIAIhAiICIwIkAiUCVQInAigCKQIqBRMCKwItAi4CLwIwAjECMgIzAjUCNgI4AjcDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+BRoDfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5AFHQORA5IDlAOTA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgBRsFHATmBOcE6ATpBOoE6wTsBO0E7gTvBPAE8QTyBPME9AT1BPYE9wT4BPkE+gT7BPwE/QT+BP8FAAUBBQICGQUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUeBR8FIAUhBRIFFAUVBRcCNAUYBRYCJgIsBSYFJwABAAEBewABAAEASwABAAEAuwABAAEANgABAAEAEwABAAIDIwMkAAIG5AbYAAIG5gbYAAEG7gABBvAAAQbyAAIAAQAUAB0AAAABAAIALwBPAAEAAwBJAEsChAACAAAAAQbeAAEABgLVAtYC5wLoA2oDcwABAAYATQBOAvwD6QPrBGQAAgADAZQBlAAAAd8B4QABAjkCPwAEAAIAAgCoAKwAAQEkAScAAQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAgACABQAHQAAAm8CeAAKAAIABgBNAE0ABgBOAE4ABAL8AvwABQPpA+kAAwPrA+sAAgRkBGQAAQACAAQAFAAdAAACgAKAAAoCiwKLAAsEqASvAAwAAgAGABoAGgAAABwAHAABAmQCaQACAm0CbQAIAm8CeAAJAn8CfwATAAEAFAAaABwCZAJlAmYCZwJoAmkCbQJ/AoACiwSoBKkEqgSrBKwErQSuBK8AAQXeAAEF4AABBeIAAQXkAAEF5gABBegAAQXqAAEF7AABBe4AAQXwAAEF8gABBfQAAQX2AAEF+AABBfoAAgX8BgIAAgYCBggAAgYIBg4AAgYOBhQAAgYUBhoAAgYaBiAAAgYgBiYAAgYmBiwAAgYsBjIAAgYyBjgAAgY4Bj4AAwY+BkQGSgADBkgGTgZUAAMGUgZYBl4AAwZcBmIGaAADBmYGbAZyAAMGcAZ2BnwAAwZ6BoAGhgADBoQGigaQAAQGjgaUBpoGoAAEBpwGogaoBq4ABQaqBrAGtga8BsIABQa8BsIGyAbOBtQABQbOBtQG2gbgBuYABQbgBuYG7AbyBvgABQbyBvgG/gcEBwoABQcEBwoHEAcWBxwABQcWBxwHIgcoBy4ABQcoBy4HNAc6B0AABQc6B0AHRgdMB1IABgdMB1IHWAdeB2QHagAGB2IHaAduB3QHegeAAAYHeAd+B4QHigeQB5YABgeOB5QHmgegB6YHrAAGB6QHqgewB7YHvAfCAAYHugfAB8YHzAfSB9gABgfQB9YH3AfiB+gH7gAHCC4H5gfsB/IH+Af+CAQABwgmB/oIAAgGCAwIEggYAAEA6wAKAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCFAIYAhwCJAIoAiwCNAJAAkgCUALsAvAC9AL4AvwDAAMEAwgDDAMQAxQDGAMcAyADJAMoAywDMAM0AzgDqAOsA7ADtAO4A7wDwAPEA8gDzAPQA9QD2APcA+AD5APoA+wD8AP0A/gD/AQABAQECAQMBBAEFAQYBBwEwATQBNgE4AToBPAFCAUQBRgFKAU0BWgKXApkCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALSAtQC1gLYAtoC3ALeAuAC4gLkAuYC6ALqAuwC7gLwAvIC9AL2AvgC+gL8Av8DAQMDAwUDBwMJAwsDDQMPAxEDFAMWAxgDGgMcAx4DIAMiAyQDJgMoAyoDLAMuAzADMgM0AzYDOAM6AzwDPgNBA0MDRQNHA0kDuQO6A7sDvAO+A78DwAPBA8IDwwPEA8UDxgPHA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7wPxA/MD9QQKBAwEDgQcBCMEKQQvBJkEmgSeBKIFIwUlAAEA+gAIAAoAFAAVABYAFwAYABkAGgAbABwAHQAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AZQBnAIEAgwCEAIwAjwCRAJMAsQCyALMAtAC1ALYAtwC4ALkAugDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgA6QEvATMBNQE3ATkBOwFBAUMBRQFJAUsBTAFYAVkBsQG3AbwBvwKVApYCmAKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtALRAtMC1QLXAtkC2wLdAt8C4QLjAuUC5wLpAusC7QLvAvEC8wL1AvcC+QL7Av0C/gMAAwIDBAMGAwgDCgMMAw4DEAMTAxUDFwMZAxsDHQMfAyEDIwMlAycDKQMrAy0DLwMxAzMDNQM3AzkDOwM9Az8DQANCA0QDRgNIA6EDogOjA6QDpQOmA6cDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA+4D8APyA/QECQQLBA0EIgQoBC4EmASdBKEFIgUkAdYAAgBNAdcAAgBQAdgAAwBKAE0B2QADAEoAUAABAAEASgHVAAIASgHbAAIAWAHaAAIAWAABAAMASgBXAJUAAAABAAEAAQABAAAAAwTBAAIArQLXAAIAqQTHAAIArQTUAAIAqQTCAAIArQLYAAIAqQSxAAIAqQTIAAIArQRkAAIArQTVAAIAqQNGAAIAqQNIAAIAqQNHAAIAqQNJAAIAqQTAAAIAqQTFAAIB1ATDAAIArQSwAAIAqQLxAAIB1AP7AAIAqQTPAAIArQMpAAIB1ATaAAIArQTfAAIArQTdAAIAqgNAAAIAqQTjAAIArQTGAAIB1ATEAAIArQP8AAIAqQTQAAIArQMqAAIB1ATbAAIArQTgAAIArQTeAAIAqgNBAAIAqQTkAAIArQTJAAIAqQMCAAIB1ATLAAIArQMEAAIAqQMGAAIB1ATNAAIArQMfAAIAqQMlAAIB1ATYAAIArQPwAAIAqQThAAIArQPuAAIAqATKAAIAqQMDAAIB1ATMAAIArQMFAAIAqQMHAAIB1ATOAAIArQMgAAIAqQMmAAIB1ATZAAIArQPxAAIAqQTiAAIArQPvAAIAqAMZAAIAqQMbAAIB1ATWAAIArQS8AAIArAMaAAIAqQMcAAIB1ATXAAIArQS9AAIArAMMAAIAqQMOAAIB1ATRAAIArQSyAAIAqAKqAAIAqgK0AAIAqQSLAAIArQP0AAIAqASNAAIAqwSPAAIAqgMNAAIAqQMPAAIB1ATSAAIArQSzAAIAqALFAAIAqgLPAAIAqQSMAAIArQP1AAIAqASOAAIAqwSQAAIAqgLCAAIAqQLBAAIAqARiAAIAqwL2AAIAqgS5AAIArARzAAIAqQR7AAIArQR1AAIAqAR3AAIAqwR5AAIAqgR0AAIAqQR8AAIArQR2AAIAqAR4AAIAqwR6AAIAqgSBAAIAqQSJAAIArQSDAAIAqASFAAIAqwSHAAIAqgSCAAIAqQSKAAIArQSEAAIAqASGAAIAqwSIAAIAqgKbAAIAqQQ5AAIArQKaAAIAqAQ7AAIAqwKdAAIAqgS0AAIArAKjAAIAqQRRAAIArQKiAAIAqARTAAIAqwRVAAIAqgS2AAIArAKnAAIAqQRjAAIArQKmAAIAqARhAAIAqwL1AAIAqgS4AAIArAK2AAIAqQQ6AAIArQK1AAIAqAQ8AAIAqwK4AAIAqgS1AAIArAK+AAIAqQRSAAIArQK9AAIAqARUAAIAqwRWAAIAqgS3AAIArALHAAIAqQRmAAIArQLGAAIAqARoAAIAqwLJAAIAqgS7AAIArALMAAIAqQR+AAIArQLLAAIAqASAAAIAqwMwAAIAqgS/AAIArAKsAAIAqQRlAAIArQKrAAIAqARnAAIAqwKuAAIAqgS6AAIArAKxAAIAqQR9AAIArQKwAAIAqAR/AAIAqwMvAAIAqgS+AAIArATTAAMAqgCpBNwAAwCqAKkAAgARACUAKQAAACsALQAFAC8ANAAIADYAOwAOAD0APgAUAEUASQAWAEsATQAbAE8AVAAeAFYAWwAkAF0AXgAqAIEAgQAsAIMAgwAtAIYAhgAuAIkAiQAvAI0AjQAwAJgAmwAxANAA0AA1AAA=\"\r\n};","// powerbi-client v2.23.1\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"powerbi-client\"] = factory();\n\telse\n\t\troot[\"powerbi-client\"] = factory();\n})(this, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./node_modules/http-post-message/dist/httpPostMessage.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/http-post-message/dist/httpPostMessage.js ***!\n \\****************************************************************/\n/***/ (function(module) {\n\n/*! http-post-message v0.2.3 | (c) 2016 Microsoft Corporation MIT */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_626__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_626__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__nested_webpack_require_626__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_626__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_626__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_626__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tvar HttpPostMessage = (function () {\n\t function HttpPostMessage(windowPostMessageProxy, defaultHeaders, defaultTargetWindow) {\n\t if (defaultHeaders === void 0) { defaultHeaders = {}; }\n\t this.defaultHeaders = defaultHeaders;\n\t this.defaultTargetWindow = defaultTargetWindow;\n\t this.windowPostMessageProxy = windowPostMessageProxy;\n\t }\n\t // TODO: See if it's possible to share tracking properties interface?\n\t // The responsibility of knowing how to configure windowPostMessageProxy for http should\n\t // live in this http class, but the configuration would need ITrackingProperties\n\t // interface which lives in WindowPostMessageProxy. Use <any> type as workaround\n\t HttpPostMessage.addTrackingProperties = function (message, trackingProperties) {\n\t message.headers = message.headers || {};\n\t if (trackingProperties && trackingProperties.id) {\n\t message.headers.id = trackingProperties.id;\n\t }\n\t return message;\n\t };\n\t HttpPostMessage.getTrackingProperties = function (message) {\n\t return {\n\t id: message.headers && message.headers.id\n\t };\n\t };\n\t HttpPostMessage.isErrorMessage = function (message) {\n\t if (typeof (message && message.statusCode) !== 'number') {\n\t return false;\n\t }\n\t return !(200 <= message.statusCode && message.statusCode < 300);\n\t };\n\t HttpPostMessage.prototype.get = function (url, headers, targetWindow) {\n\t if (headers === void 0) { headers = {}; }\n\t if (targetWindow === void 0) { targetWindow = this.defaultTargetWindow; }\n\t return this.send({\n\t method: \"GET\",\n\t url: url,\n\t headers: headers\n\t }, targetWindow);\n\t };\n\t HttpPostMessage.prototype.post = function (url, body, headers, targetWindow) {\n\t if (headers === void 0) { headers = {}; }\n\t if (targetWindow === void 0) { targetWindow = this.defaultTargetWindow; }\n\t return this.send({\n\t method: \"POST\",\n\t url: url,\n\t headers: headers,\n\t body: body\n\t }, targetWindow);\n\t };\n\t HttpPostMessage.prototype.put = function (url, body, headers, targetWindow) {\n\t if (headers === void 0) { headers = {}; }\n\t if (targetWindow === void 0) { targetWindow = this.defaultTargetWindow; }\n\t return this.send({\n\t method: \"PUT\",\n\t url: url,\n\t headers: headers,\n\t body: body\n\t }, targetWindow);\n\t };\n\t HttpPostMessage.prototype.patch = function (url, body, headers, targetWindow) {\n\t if (headers === void 0) { headers = {}; }\n\t if (targetWindow === void 0) { targetWindow = this.defaultTargetWindow; }\n\t return this.send({\n\t method: \"PATCH\",\n\t url: url,\n\t headers: headers,\n\t body: body\n\t }, targetWindow);\n\t };\n\t HttpPostMessage.prototype.delete = function (url, body, headers, targetWindow) {\n\t if (body === void 0) { body = null; }\n\t if (headers === void 0) { headers = {}; }\n\t if (targetWindow === void 0) { targetWindow = this.defaultTargetWindow; }\n\t return this.send({\n\t method: \"DELETE\",\n\t url: url,\n\t headers: headers,\n\t body: body\n\t }, targetWindow);\n\t };\n\t HttpPostMessage.prototype.send = function (request, targetWindow) {\n\t if (targetWindow === void 0) { targetWindow = this.defaultTargetWindow; }\n\t request.headers = this.assign({}, this.defaultHeaders, request.headers);\n\t if (!targetWindow) {\n\t throw new Error(\"target window is not provided. You must either provide the target window explicitly as argument to request, or specify default target window when constructing instance of this class.\");\n\t }\n\t return this.windowPostMessageProxy.postMessage(targetWindow, request);\n\t };\n\t /**\n\t * Object.assign() polyfill\n\t * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\t */\n\t HttpPostMessage.prototype.assign = function (target) {\n\t var sources = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t sources[_i - 1] = arguments[_i];\n\t }\n\t if (target === undefined || target === null) {\n\t throw new TypeError('Cannot convert undefined or null to object');\n\t }\n\t var output = Object(target);\n\t sources.forEach(function (source) {\n\t if (source !== undefined && source !== null) {\n\t for (var nextKey in source) {\n\t if (Object.prototype.hasOwnProperty.call(source, nextKey)) {\n\t output[nextKey] = source[nextKey];\n\t }\n\t }\n\t }\n\t });\n\t return output;\n\t };\n\t return HttpPostMessage;\n\t}());\n\texports.HttpPostMessage = HttpPostMessage;\n\n\n/***/ }\n/******/ ])\n});\n;\n//# sourceMappingURL=httpPostMessage.js.map\n\n/***/ }),\n\n/***/ \"./node_modules/powerbi-models/dist/models.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/powerbi-models/dist/models.js ***!\n \\****************************************************/\n/***/ (function(module) {\n\n// powerbi-models v1.15.2\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})(this, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_612__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CommonErrorCodes = exports.BookmarksPlayMode = exports.ExportDataType = exports.QnaMode = exports.PageNavigationPosition = exports.BrowserPrintAdjustmentsMode = exports.AggregateFunction = exports.DataCacheMode = exports.CredentialType = exports.isPercentOfGrandTotal = exports.isColumnAggr = exports.isHierarchyLevelAggr = exports.isHierarchyLevel = exports.isColumn = exports.isMeasure = exports.getFilterType = exports.isBasicFilterWithKeys = exports.isFilterKeyColumnsTarget = exports.HierarchyIdentityFilter = exports.HierarchyFilter = exports.AdvancedFilter = exports.TupleFilter = exports.IdentityFilter = exports.BasicFilterWithKeys = exports.BasicFilter = exports.RelativeTimeFilter = exports.RelativeDateFilter = exports.TopNFilter = exports.IncludeExcludeFilter = exports.NotSupportedFilter = exports.Filter = exports.RelativeDateOperators = exports.RelativeDateFilterTimeUnit = exports.FilterType = exports.FiltersLevel = exports.FiltersOperations = exports.MenuLocation = exports.ContrastMode = exports.TokenType = exports.ViewMode = exports.Permissions = exports.SectionVisibility = exports.ReportAlignment = exports.HyperlinkClickBehavior = exports.LayoutType = exports.VisualContainerDisplayMode = exports.BackgroundType = exports.DisplayOption = exports.PageSizeType = exports.TraceType = void 0;\r\nexports.validateExportDataRequest = exports.validateQnaInterpretInputData = exports.validateLoadQnaConfiguration = exports.validateSaveAsParameters = exports.validateUpdateFiltersRequest = exports.validateFilter = exports.validatePage = exports.validateTileLoad = exports.validateDashboardLoad = exports.validateQuickCreate = exports.validateCreateReport = exports.validatePaginatedReportLoad = exports.validateReportLoad = exports.validateMenuGroupExtension = exports.validateExtension = exports.validateCustomPageSize = exports.validateVisualizationsPane = exports.validateSyncSlicersPane = exports.validateSelectionPane = exports.validatePageNavigationPane = exports.validateFieldsPane = exports.validateFiltersPane = exports.validateBookmarksPane = exports.validatePanes = exports.validateSettings = exports.validateCaptureBookmarkRequest = exports.validateApplyBookmarkStateRequest = exports.validateApplyBookmarkByNameRequest = exports.validateAddBookmarkRequest = exports.validatePlayBookmarkRequest = exports.validateSlicerState = exports.validateSlicer = exports.validateVisualSelector = exports.isIExtensionArray = exports.isIExtensions = exports.isGroupedMenuExtension = exports.isFlatMenuExtension = exports.isReportFiltersArray = exports.isOnLoadFilters = exports.VisualDataRoleKindPreference = exports.VisualDataRoleKind = exports.CommandDisplayOption = exports.SlicerTargetSelector = exports.VisualTypeSelector = exports.VisualSelector = exports.PageSelector = exports.Selector = exports.SortDirection = exports.LegendPosition = exports.TextAlignment = void 0;\r\nexports.validatePrintSettings = exports.validateZoomLevel = exports.validateCustomTheme = exports.validateCommandsSettings = exports.validateVisualSettings = exports.validateVisualHeader = void 0;\r\nvar validator_1 = __nested_webpack_require_612__(1);\r\nvar TraceType;\r\n(function (TraceType) {\r\n TraceType[TraceType[\"Information\"] = 0] = \"Information\";\r\n TraceType[TraceType[\"Verbose\"] = 1] = \"Verbose\";\r\n TraceType[TraceType[\"Warning\"] = 2] = \"Warning\";\r\n TraceType[TraceType[\"Error\"] = 3] = \"Error\";\r\n TraceType[TraceType[\"ExpectedError\"] = 4] = \"ExpectedError\";\r\n TraceType[TraceType[\"UnexpectedError\"] = 5] = \"UnexpectedError\";\r\n TraceType[TraceType[\"Fatal\"] = 6] = \"Fatal\";\r\n})(TraceType = exports.TraceType || (exports.TraceType = {}));\r\nvar PageSizeType;\r\n(function (PageSizeType) {\r\n PageSizeType[PageSizeType[\"Widescreen\"] = 0] = \"Widescreen\";\r\n PageSizeType[PageSizeType[\"Standard\"] = 1] = \"Standard\";\r\n PageSizeType[PageSizeType[\"Cortana\"] = 2] = \"Cortana\";\r\n PageSizeType[PageSizeType[\"Letter\"] = 3] = \"Letter\";\r\n PageSizeType[PageSizeType[\"Custom\"] = 4] = \"Custom\";\r\n PageSizeType[PageSizeType[\"Mobile\"] = 5] = \"Mobile\";\r\n})(PageSizeType = exports.PageSizeType || (exports.PageSizeType = {}));\r\nvar DisplayOption;\r\n(function (DisplayOption) {\r\n DisplayOption[DisplayOption[\"FitToPage\"] = 0] = \"FitToPage\";\r\n DisplayOption[DisplayOption[\"FitToWidth\"] = 1] = \"FitToWidth\";\r\n DisplayOption[DisplayOption[\"ActualSize\"] = 2] = \"ActualSize\";\r\n})(DisplayOption = exports.DisplayOption || (exports.DisplayOption = {}));\r\nvar BackgroundType;\r\n(function (BackgroundType) {\r\n BackgroundType[BackgroundType[\"Default\"] = 0] = \"Default\";\r\n BackgroundType[BackgroundType[\"Transparent\"] = 1] = \"Transparent\";\r\n})(BackgroundType = exports.BackgroundType || (exports.BackgroundType = {}));\r\nvar VisualContainerDisplayMode;\r\n(function (VisualContainerDisplayMode) {\r\n VisualContainerDisplayMode[VisualContainerDisplayMode[\"Visible\"] = 0] = \"Visible\";\r\n VisualContainerDisplayMode[VisualContainerDisplayMode[\"Hidden\"] = 1] = \"Hidden\";\r\n})(VisualContainerDisplayMode = exports.VisualContainerDisplayMode || (exports.VisualContainerDisplayMode = {}));\r\nvar LayoutType;\r\n(function (LayoutType) {\r\n LayoutType[LayoutType[\"Master\"] = 0] = \"Master\";\r\n LayoutType[LayoutType[\"Custom\"] = 1] = \"Custom\";\r\n LayoutType[LayoutType[\"MobilePortrait\"] = 2] = \"MobilePortrait\";\r\n LayoutType[LayoutType[\"MobileLandscape\"] = 3] = \"MobileLandscape\";\r\n})(LayoutType = exports.LayoutType || (exports.LayoutType = {}));\r\nvar HyperlinkClickBehavior;\r\n(function (HyperlinkClickBehavior) {\r\n HyperlinkClickBehavior[HyperlinkClickBehavior[\"Navigate\"] = 0] = \"Navigate\";\r\n HyperlinkClickBehavior[HyperlinkClickBehavior[\"NavigateAndRaiseEvent\"] = 1] = \"NavigateAndRaiseEvent\";\r\n HyperlinkClickBehavior[HyperlinkClickBehavior[\"RaiseEvent\"] = 2] = \"RaiseEvent\";\r\n})(HyperlinkClickBehavior = exports.HyperlinkClickBehavior || (exports.HyperlinkClickBehavior = {}));\r\nvar ReportAlignment;\r\n(function (ReportAlignment) {\r\n ReportAlignment[ReportAlignment[\"Left\"] = 0] = \"Left\";\r\n ReportAlignment[ReportAlignment[\"Center\"] = 1] = \"Center\";\r\n ReportAlignment[ReportAlignment[\"Right\"] = 2] = \"Right\";\r\n ReportAlignment[ReportAlignment[\"None\"] = 3] = \"None\";\r\n})(ReportAlignment = exports.ReportAlignment || (exports.ReportAlignment = {}));\r\nvar SectionVisibility;\r\n(function (SectionVisibility) {\r\n SectionVisibility[SectionVisibility[\"AlwaysVisible\"] = 0] = \"AlwaysVisible\";\r\n SectionVisibility[SectionVisibility[\"HiddenInViewMode\"] = 1] = \"HiddenInViewMode\";\r\n})(SectionVisibility = exports.SectionVisibility || (exports.SectionVisibility = {}));\r\nvar Permissions;\r\n(function (Permissions) {\r\n Permissions[Permissions[\"Read\"] = 0] = \"Read\";\r\n Permissions[Permissions[\"ReadWrite\"] = 1] = \"ReadWrite\";\r\n Permissions[Permissions[\"Copy\"] = 2] = \"Copy\";\r\n Permissions[Permissions[\"Create\"] = 4] = \"Create\";\r\n Permissions[Permissions[\"All\"] = 7] = \"All\";\r\n})(Permissions = exports.Permissions || (exports.Permissions = {}));\r\nvar ViewMode;\r\n(function (ViewMode) {\r\n ViewMode[ViewMode[\"View\"] = 0] = \"View\";\r\n ViewMode[ViewMode[\"Edit\"] = 1] = \"Edit\";\r\n})(ViewMode = exports.ViewMode || (exports.ViewMode = {}));\r\nvar TokenType;\r\n(function (TokenType) {\r\n TokenType[TokenType[\"Aad\"] = 0] = \"Aad\";\r\n TokenType[TokenType[\"Embed\"] = 1] = \"Embed\";\r\n})(TokenType = exports.TokenType || (exports.TokenType = {}));\r\nvar ContrastMode;\r\n(function (ContrastMode) {\r\n ContrastMode[ContrastMode[\"None\"] = 0] = \"None\";\r\n ContrastMode[ContrastMode[\"HighContrast1\"] = 1] = \"HighContrast1\";\r\n ContrastMode[ContrastMode[\"HighContrast2\"] = 2] = \"HighContrast2\";\r\n ContrastMode[ContrastMode[\"HighContrastBlack\"] = 3] = \"HighContrastBlack\";\r\n ContrastMode[ContrastMode[\"HighContrastWhite\"] = 4] = \"HighContrastWhite\";\r\n})(ContrastMode = exports.ContrastMode || (exports.ContrastMode = {}));\r\nvar MenuLocation;\r\n(function (MenuLocation) {\r\n MenuLocation[MenuLocation[\"Bottom\"] = 0] = \"Bottom\";\r\n MenuLocation[MenuLocation[\"Top\"] = 1] = \"Top\";\r\n})(MenuLocation = exports.MenuLocation || (exports.MenuLocation = {}));\r\nvar FiltersOperations;\r\n(function (FiltersOperations) {\r\n FiltersOperations[FiltersOperations[\"RemoveAll\"] = 0] = \"RemoveAll\";\r\n FiltersOperations[FiltersOperations[\"ReplaceAll\"] = 1] = \"ReplaceAll\";\r\n FiltersOperations[FiltersOperations[\"Add\"] = 2] = \"Add\";\r\n FiltersOperations[FiltersOperations[\"Replace\"] = 3] = \"Replace\";\r\n})(FiltersOperations = exports.FiltersOperations || (exports.FiltersOperations = {}));\r\nvar FiltersLevel;\r\n(function (FiltersLevel) {\r\n FiltersLevel[FiltersLevel[\"Report\"] = 0] = \"Report\";\r\n FiltersLevel[FiltersLevel[\"Page\"] = 1] = \"Page\";\r\n FiltersLevel[FiltersLevel[\"Visual\"] = 2] = \"Visual\";\r\n})(FiltersLevel = exports.FiltersLevel || (exports.FiltersLevel = {}));\r\nvar FilterType;\r\n(function (FilterType) {\r\n FilterType[FilterType[\"Advanced\"] = 0] = \"Advanced\";\r\n FilterType[FilterType[\"Basic\"] = 1] = \"Basic\";\r\n FilterType[FilterType[\"Unknown\"] = 2] = \"Unknown\";\r\n FilterType[FilterType[\"IncludeExclude\"] = 3] = \"IncludeExclude\";\r\n FilterType[FilterType[\"RelativeDate\"] = 4] = \"RelativeDate\";\r\n FilterType[FilterType[\"TopN\"] = 5] = \"TopN\";\r\n FilterType[FilterType[\"Tuple\"] = 6] = \"Tuple\";\r\n FilterType[FilterType[\"RelativeTime\"] = 7] = \"RelativeTime\";\r\n FilterType[FilterType[\"Identity\"] = 8] = \"Identity\";\r\n FilterType[FilterType[\"Hierarchy\"] = 9] = \"Hierarchy\";\r\n FilterType[FilterType[\"HierarchyIdentity\"] = 10] = \"HierarchyIdentity\";\r\n})(FilterType = exports.FilterType || (exports.FilterType = {}));\r\nvar RelativeDateFilterTimeUnit;\r\n(function (RelativeDateFilterTimeUnit) {\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Days\"] = 0] = \"Days\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Weeks\"] = 1] = \"Weeks\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"CalendarWeeks\"] = 2] = \"CalendarWeeks\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Months\"] = 3] = \"Months\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"CalendarMonths\"] = 4] = \"CalendarMonths\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Years\"] = 5] = \"Years\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"CalendarYears\"] = 6] = \"CalendarYears\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Minutes\"] = 7] = \"Minutes\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Hours\"] = 8] = \"Hours\";\r\n})(RelativeDateFilterTimeUnit = exports.RelativeDateFilterTimeUnit || (exports.RelativeDateFilterTimeUnit = {}));\r\nvar RelativeDateOperators;\r\n(function (RelativeDateOperators) {\r\n RelativeDateOperators[RelativeDateOperators[\"InLast\"] = 0] = \"InLast\";\r\n RelativeDateOperators[RelativeDateOperators[\"InThis\"] = 1] = \"InThis\";\r\n RelativeDateOperators[RelativeDateOperators[\"InNext\"] = 2] = \"InNext\";\r\n})(RelativeDateOperators = exports.RelativeDateOperators || (exports.RelativeDateOperators = {}));\r\nvar Filter = /** @class */ (function () {\r\n function Filter(target, filterType) {\r\n this.target = target;\r\n this.filterType = filterType;\r\n }\r\n Filter.prototype.toJSON = function () {\r\n var filter = {\r\n $schema: this.schemaUrl,\r\n target: this.target,\r\n filterType: this.filterType\r\n };\r\n // Add displaySettings only when defined\r\n if (this.displaySettings !== undefined) {\r\n filter.displaySettings = this.displaySettings;\r\n }\r\n return filter;\r\n };\r\n return Filter;\r\n}());\r\nexports.Filter = Filter;\r\nvar NotSupportedFilter = /** @class */ (function (_super) {\r\n __extends(NotSupportedFilter, _super);\r\n function NotSupportedFilter(target, message, notSupportedTypeName) {\r\n var _this = _super.call(this, target, FilterType.Unknown) || this;\r\n _this.message = message;\r\n _this.notSupportedTypeName = notSupportedTypeName;\r\n _this.schemaUrl = NotSupportedFilter.schemaUrl;\r\n return _this;\r\n }\r\n NotSupportedFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.message = this.message;\r\n filter.notSupportedTypeName = this.notSupportedTypeName;\r\n return filter;\r\n };\r\n NotSupportedFilter.schemaUrl = \"http://powerbi.com/product/schema#notSupported\";\r\n return NotSupportedFilter;\r\n}(Filter));\r\nexports.NotSupportedFilter = NotSupportedFilter;\r\nvar IncludeExcludeFilter = /** @class */ (function (_super) {\r\n __extends(IncludeExcludeFilter, _super);\r\n function IncludeExcludeFilter(target, isExclude, values) {\r\n var _this = _super.call(this, target, FilterType.IncludeExclude) || this;\r\n _this.target = target;\r\n _this.values = values;\r\n _this.isExclude = isExclude;\r\n _this.schemaUrl = IncludeExcludeFilter.schemaUrl;\r\n return _this;\r\n }\r\n IncludeExcludeFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.isExclude = this.isExclude;\r\n filter.values = this.values;\r\n return filter;\r\n };\r\n IncludeExcludeFilter.schemaUrl = \"http://powerbi.com/product/schema#includeExclude\";\r\n return IncludeExcludeFilter;\r\n}(Filter));\r\nexports.IncludeExcludeFilter = IncludeExcludeFilter;\r\nvar TopNFilter = /** @class */ (function (_super) {\r\n __extends(TopNFilter, _super);\r\n function TopNFilter(target, operator, itemCount, orderBy) {\r\n var _this = _super.call(this, target, FilterType.TopN) || this;\r\n _this.operator = operator;\r\n _this.itemCount = itemCount;\r\n _this.schemaUrl = TopNFilter.schemaUrl;\r\n _this.orderBy = orderBy;\r\n return _this;\r\n }\r\n TopNFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.itemCount = this.itemCount;\r\n filter.orderBy = this.orderBy;\r\n return filter;\r\n };\r\n TopNFilter.schemaUrl = \"http://powerbi.com/product/schema#topN\";\r\n return TopNFilter;\r\n}(Filter));\r\nexports.TopNFilter = TopNFilter;\r\nvar RelativeDateFilter = /** @class */ (function (_super) {\r\n __extends(RelativeDateFilter, _super);\r\n function RelativeDateFilter(target, operator, timeUnitsCount, timeUnitType, includeToday) {\r\n var _this = _super.call(this, target, FilterType.RelativeDate) || this;\r\n _this.operator = operator;\r\n _this.timeUnitsCount = timeUnitsCount;\r\n _this.timeUnitType = timeUnitType;\r\n _this.includeToday = includeToday;\r\n _this.schemaUrl = RelativeDateFilter.schemaUrl;\r\n return _this;\r\n }\r\n RelativeDateFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.timeUnitsCount = this.timeUnitsCount;\r\n filter.timeUnitType = this.timeUnitType;\r\n filter.includeToday = this.includeToday;\r\n return filter;\r\n };\r\n RelativeDateFilter.schemaUrl = \"http://powerbi.com/product/schema#relativeDate\";\r\n return RelativeDateFilter;\r\n}(Filter));\r\nexports.RelativeDateFilter = RelativeDateFilter;\r\nvar RelativeTimeFilter = /** @class */ (function (_super) {\r\n __extends(RelativeTimeFilter, _super);\r\n function RelativeTimeFilter(target, operator, timeUnitsCount, timeUnitType) {\r\n var _this = _super.call(this, target, FilterType.RelativeTime) || this;\r\n _this.operator = operator;\r\n _this.timeUnitsCount = timeUnitsCount;\r\n _this.timeUnitType = timeUnitType;\r\n _this.schemaUrl = RelativeTimeFilter.schemaUrl;\r\n return _this;\r\n }\r\n RelativeTimeFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.timeUnitsCount = this.timeUnitsCount;\r\n filter.timeUnitType = this.timeUnitType;\r\n return filter;\r\n };\r\n RelativeTimeFilter.schemaUrl = \"http://powerbi.com/product/schema#relativeTime\";\r\n return RelativeTimeFilter;\r\n}(Filter));\r\nexports.RelativeTimeFilter = RelativeTimeFilter;\r\nvar BasicFilter = /** @class */ (function (_super) {\r\n __extends(BasicFilter, _super);\r\n function BasicFilter(target, operator) {\r\n var values = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n values[_i - 2] = arguments[_i];\r\n }\r\n var _this = _super.call(this, target, FilterType.Basic) || this;\r\n _this.operator = operator;\r\n _this.schemaUrl = BasicFilter.schemaUrl;\r\n if (values.length === 0 && operator !== \"All\") {\r\n throw new Error(\"values must be a non-empty array unless your operator is \\\"All\\\".\");\r\n }\r\n /**\r\n * Accept values as array instead of as individual arguments\r\n * new BasicFilter('a', 'b', 1, 2);\r\n * new BasicFilter('a', 'b', [1,2]);\r\n */\r\n if (Array.isArray(values[0])) {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\r\n _this.values = values[0];\r\n }\r\n else {\r\n _this.values = values;\r\n }\r\n return _this;\r\n }\r\n BasicFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.values = this.values;\r\n filter.requireSingleSelection = !!this.requireSingleSelection;\r\n return filter;\r\n };\r\n BasicFilter.schemaUrl = \"http://powerbi.com/product/schema#basic\";\r\n return BasicFilter;\r\n}(Filter));\r\nexports.BasicFilter = BasicFilter;\r\nvar BasicFilterWithKeys = /** @class */ (function (_super) {\r\n __extends(BasicFilterWithKeys, _super);\r\n function BasicFilterWithKeys(target, operator, values, keyValues) {\r\n var _this = _super.call(this, target, operator, values) || this;\r\n _this.keyValues = keyValues;\r\n _this.target = target;\r\n var numberOfKeys = target.keys ? target.keys.length : 0;\r\n if (numberOfKeys > 0 && !keyValues) {\r\n throw new Error(\"You should pass the values to be filtered for each key. You passed: no values and \".concat(numberOfKeys, \" keys\"));\r\n }\r\n if (numberOfKeys === 0 && keyValues && keyValues.length > 0) {\r\n throw new Error(\"You passed key values but your target object doesn't contain the keys to be filtered\");\r\n }\r\n for (var _i = 0, _a = _this.keyValues; _i < _a.length; _i++) {\r\n var keyValue = _a[_i];\r\n if (keyValue) {\r\n var lengthOfArray = keyValue.length;\r\n if (lengthOfArray !== numberOfKeys) {\r\n throw new Error(\"Each tuple of key values should contain a value for each of the keys. You passed: \".concat(lengthOfArray, \" values and \").concat(numberOfKeys, \" keys\"));\r\n }\r\n }\r\n }\r\n return _this;\r\n }\r\n BasicFilterWithKeys.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.keyValues = this.keyValues;\r\n return filter;\r\n };\r\n return BasicFilterWithKeys;\r\n}(BasicFilter));\r\nexports.BasicFilterWithKeys = BasicFilterWithKeys;\r\nvar IdentityFilter = /** @class */ (function (_super) {\r\n __extends(IdentityFilter, _super);\r\n function IdentityFilter(target, operator) {\r\n var _this = _super.call(this, target, FilterType.Identity) || this;\r\n _this.operator = operator;\r\n _this.schemaUrl = IdentityFilter.schemaUrl;\r\n return _this;\r\n }\r\n IdentityFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.target = this.target;\r\n return filter;\r\n };\r\n IdentityFilter.schemaUrl = \"http://powerbi.com/product/schema#identity\";\r\n return IdentityFilter;\r\n}(Filter));\r\nexports.IdentityFilter = IdentityFilter;\r\nvar TupleFilter = /** @class */ (function (_super) {\r\n __extends(TupleFilter, _super);\r\n function TupleFilter(target, operator, values) {\r\n var _this = _super.call(this, target, FilterType.Tuple) || this;\r\n _this.operator = operator;\r\n _this.schemaUrl = TupleFilter.schemaUrl;\r\n _this.values = values;\r\n return _this;\r\n }\r\n TupleFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.values = this.values;\r\n filter.target = this.target;\r\n return filter;\r\n };\r\n TupleFilter.schemaUrl = \"http://powerbi.com/product/schema#tuple\";\r\n return TupleFilter;\r\n}(Filter));\r\nexports.TupleFilter = TupleFilter;\r\nvar AdvancedFilter = /** @class */ (function (_super) {\r\n __extends(AdvancedFilter, _super);\r\n function AdvancedFilter(target, logicalOperator) {\r\n var conditions = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n conditions[_i - 2] = arguments[_i];\r\n }\r\n var _this = _super.call(this, target, FilterType.Advanced) || this;\r\n _this.schemaUrl = AdvancedFilter.schemaUrl;\r\n // Guard statements\r\n if (typeof logicalOperator !== \"string\" || logicalOperator.length === 0) {\r\n // TODO: It would be nicer to list out the possible logical operators.\r\n throw new Error(\"logicalOperator must be a valid operator, You passed: \".concat(logicalOperator));\r\n }\r\n _this.logicalOperator = logicalOperator;\r\n var extractedConditions;\r\n /**\r\n * Accept conditions as array instead of as individual arguments\r\n * new AdvancedFilter('a', 'b', \"And\", { value: 1, operator: \"Equals\" }, { value: 2, operator: \"IsGreaterThan\" });\r\n * new AdvancedFilter('a', 'b', \"And\", [{ value: 1, operator: \"Equals\" }, { value: 2, operator: \"IsGreaterThan\" }]);\r\n */\r\n if (Array.isArray(conditions[0])) {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\r\n extractedConditions = conditions[0];\r\n }\r\n else {\r\n extractedConditions = conditions;\r\n }\r\n if (extractedConditions.length > 2) {\r\n throw new Error(\"AdvancedFilters may not have more than two conditions. You passed: \".concat(conditions.length));\r\n }\r\n if (extractedConditions.length === 1 && logicalOperator !== \"And\") {\r\n throw new Error(\"Logical Operator must be \\\"And\\\" when there is only one condition provided\");\r\n }\r\n _this.conditions = extractedConditions;\r\n return _this;\r\n }\r\n AdvancedFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.logicalOperator = this.logicalOperator;\r\n filter.conditions = this.conditions;\r\n return filter;\r\n };\r\n AdvancedFilter.schemaUrl = \"http://powerbi.com/product/schema#advanced\";\r\n return AdvancedFilter;\r\n}(Filter));\r\nexports.AdvancedFilter = AdvancedFilter;\r\nvar HierarchyFilter = /** @class */ (function (_super) {\r\n __extends(HierarchyFilter, _super);\r\n function HierarchyFilter(target, hierarchyData) {\r\n var _this = _super.call(this, target, FilterType.Hierarchy) || this;\r\n _this.schemaUrl = HierarchyFilter.schemaUrl;\r\n _this.hierarchyData = hierarchyData;\r\n return _this;\r\n }\r\n HierarchyFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.hierarchyData = this.hierarchyData;\r\n filter.target = this.target;\r\n return filter;\r\n };\r\n HierarchyFilter.schemaUrl = \"http://powerbi.com/product/schema#hierarchy\";\r\n return HierarchyFilter;\r\n}(Filter));\r\nexports.HierarchyFilter = HierarchyFilter;\r\nvar HierarchyIdentityFilter = /** @class */ (function (_super) {\r\n __extends(HierarchyIdentityFilter, _super);\r\n function HierarchyIdentityFilter(target, hierarchyData) {\r\n var _this = _super.call(this, target, FilterType.HierarchyIdentity) || this;\r\n _this.schemaUrl = HierarchyIdentityFilter.schemaUrl;\r\n _this.hierarchyData = hierarchyData;\r\n return _this;\r\n }\r\n HierarchyIdentityFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.hierarchyData = this.hierarchyData;\r\n filter.target = this.target;\r\n return filter;\r\n };\r\n HierarchyIdentityFilter.schemaUrl = \"http://powerbi.com/product/schema#hierarchyIdentity\";\r\n return HierarchyIdentityFilter;\r\n}(Filter));\r\nexports.HierarchyIdentityFilter = HierarchyIdentityFilter;\r\nfunction isFilterKeyColumnsTarget(target) {\r\n return isColumn(target) && !!target.keys;\r\n}\r\nexports.isFilterKeyColumnsTarget = isFilterKeyColumnsTarget;\r\nfunction isBasicFilterWithKeys(filter) {\r\n return getFilterType(filter) === FilterType.Basic && !!filter.keyValues;\r\n}\r\nexports.isBasicFilterWithKeys = isBasicFilterWithKeys;\r\nfunction getFilterType(filter) {\r\n if (filter.filterType) {\r\n return filter.filterType;\r\n }\r\n var basicFilter = filter;\r\n var advancedFilter = filter;\r\n if ((typeof basicFilter.operator === \"string\")\r\n && (Array.isArray(basicFilter.values))) {\r\n return FilterType.Basic;\r\n }\r\n else if ((typeof advancedFilter.logicalOperator === \"string\")\r\n && (Array.isArray(advancedFilter.conditions))) {\r\n return FilterType.Advanced;\r\n }\r\n else {\r\n return FilterType.Unknown;\r\n }\r\n}\r\nexports.getFilterType = getFilterType;\r\nfunction isMeasure(arg) {\r\n return arg.table !== undefined && arg.measure !== undefined;\r\n}\r\nexports.isMeasure = isMeasure;\r\nfunction isColumn(arg) {\r\n return !!(arg.table && arg.column && !arg.aggregationFunction);\r\n}\r\nexports.isColumn = isColumn;\r\nfunction isHierarchyLevel(arg) {\r\n return !!(arg.table && arg.hierarchy && arg.hierarchyLevel && !arg.aggregationFunction);\r\n}\r\nexports.isHierarchyLevel = isHierarchyLevel;\r\nfunction isHierarchyLevelAggr(arg) {\r\n return !!(arg.table && arg.hierarchy && arg.hierarchyLevel && arg.aggregationFunction);\r\n}\r\nexports.isHierarchyLevelAggr = isHierarchyLevelAggr;\r\nfunction isColumnAggr(arg) {\r\n return !!(arg.table && arg.column && arg.aggregationFunction);\r\n}\r\nexports.isColumnAggr = isColumnAggr;\r\nfunction isPercentOfGrandTotal(arg) {\r\n return !!arg.percentOfGrandTotal;\r\n}\r\nexports.isPercentOfGrandTotal = isPercentOfGrandTotal;\r\nvar CredentialType;\r\n(function (CredentialType) {\r\n CredentialType[CredentialType[\"NoConnection\"] = 0] = \"NoConnection\";\r\n CredentialType[CredentialType[\"OnBehalfOf\"] = 1] = \"OnBehalfOf\";\r\n CredentialType[CredentialType[\"Anonymous\"] = 2] = \"Anonymous\";\r\n})(CredentialType = exports.CredentialType || (exports.CredentialType = {}));\r\nvar DataCacheMode;\r\n(function (DataCacheMode) {\r\n DataCacheMode[DataCacheMode[\"Import\"] = 0] = \"Import\";\r\n DataCacheMode[DataCacheMode[\"DirectQuery\"] = 1] = \"DirectQuery\";\r\n})(DataCacheMode = exports.DataCacheMode || (exports.DataCacheMode = {}));\r\nvar AggregateFunction;\r\n(function (AggregateFunction) {\r\n AggregateFunction[AggregateFunction[\"Default\"] = 1] = \"Default\";\r\n AggregateFunction[AggregateFunction[\"None\"] = 2] = \"None\";\r\n AggregateFunction[AggregateFunction[\"Sum\"] = 3] = \"Sum\";\r\n AggregateFunction[AggregateFunction[\"Min\"] = 4] = \"Min\";\r\n AggregateFunction[AggregateFunction[\"Max\"] = 5] = \"Max\";\r\n AggregateFunction[AggregateFunction[\"Count\"] = 6] = \"Count\";\r\n AggregateFunction[AggregateFunction[\"Average\"] = 7] = \"Average\";\r\n AggregateFunction[AggregateFunction[\"DistinctCount\"] = 8] = \"DistinctCount\";\r\n})(AggregateFunction = exports.AggregateFunction || (exports.AggregateFunction = {}));\r\nvar BrowserPrintAdjustmentsMode;\r\n(function (BrowserPrintAdjustmentsMode) {\r\n BrowserPrintAdjustmentsMode[BrowserPrintAdjustmentsMode[\"Default\"] = 0] = \"Default\";\r\n BrowserPrintAdjustmentsMode[BrowserPrintAdjustmentsMode[\"NoAdjustments\"] = 1] = \"NoAdjustments\";\r\n})(BrowserPrintAdjustmentsMode = exports.BrowserPrintAdjustmentsMode || (exports.BrowserPrintAdjustmentsMode = {}));\r\nvar PageNavigationPosition;\r\n(function (PageNavigationPosition) {\r\n PageNavigationPosition[PageNavigationPosition[\"Bottom\"] = 0] = \"Bottom\";\r\n PageNavigationPosition[PageNavigationPosition[\"Left\"] = 1] = \"Left\";\r\n})(PageNavigationPosition = exports.PageNavigationPosition || (exports.PageNavigationPosition = {}));\r\nvar QnaMode;\r\n(function (QnaMode) {\r\n QnaMode[QnaMode[\"Interactive\"] = 0] = \"Interactive\";\r\n QnaMode[QnaMode[\"ResultOnly\"] = 1] = \"ResultOnly\";\r\n})(QnaMode = exports.QnaMode || (exports.QnaMode = {}));\r\nvar ExportDataType;\r\n(function (ExportDataType) {\r\n ExportDataType[ExportDataType[\"Summarized\"] = 0] = \"Summarized\";\r\n ExportDataType[ExportDataType[\"Underlying\"] = 1] = \"Underlying\";\r\n})(ExportDataType = exports.ExportDataType || (exports.ExportDataType = {}));\r\nvar BookmarksPlayMode;\r\n(function (BookmarksPlayMode) {\r\n BookmarksPlayMode[BookmarksPlayMode[\"Off\"] = 0] = \"Off\";\r\n BookmarksPlayMode[BookmarksPlayMode[\"Presentation\"] = 1] = \"Presentation\";\r\n})(BookmarksPlayMode = exports.BookmarksPlayMode || (exports.BookmarksPlayMode = {}));\r\n// This is not an enum because enum strings require\r\n// us to upgrade typeScript version and change SDK build definition\r\nexports.CommonErrorCodes = {\r\n TokenExpired: 'TokenExpired',\r\n NotFound: 'PowerBIEntityNotFound',\r\n InvalidParameters: 'Invalid parameters',\r\n LoadReportFailed: 'LoadReportFailed',\r\n NotAuthorized: 'PowerBINotAuthorizedException',\r\n FailedToLoadModel: 'ExplorationContainer_FailedToLoadModel_DefaultDetails',\r\n};\r\nexports.TextAlignment = {\r\n Left: 'left',\r\n Center: 'center',\r\n Right: 'right',\r\n};\r\nexports.LegendPosition = {\r\n Top: 'Top',\r\n Bottom: 'Bottom',\r\n Right: 'Right',\r\n Left: 'Left',\r\n TopCenter: 'TopCenter',\r\n BottomCenter: 'BottomCenter',\r\n RightCenter: 'RightCenter',\r\n LeftCenter: 'LeftCenter',\r\n};\r\nvar SortDirection;\r\n(function (SortDirection) {\r\n SortDirection[SortDirection[\"Ascending\"] = 1] = \"Ascending\";\r\n SortDirection[SortDirection[\"Descending\"] = 2] = \"Descending\";\r\n})(SortDirection = exports.SortDirection || (exports.SortDirection = {}));\r\nvar Selector = /** @class */ (function () {\r\n function Selector(schema) {\r\n this.$schema = schema;\r\n }\r\n Selector.prototype.toJSON = function () {\r\n return {\r\n $schema: this.$schema\r\n };\r\n };\r\n return Selector;\r\n}());\r\nexports.Selector = Selector;\r\nvar PageSelector = /** @class */ (function (_super) {\r\n __extends(PageSelector, _super);\r\n function PageSelector(pageName) {\r\n var _this = _super.call(this, PageSelector.schemaUrl) || this;\r\n _this.pageName = pageName;\r\n return _this;\r\n }\r\n PageSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.pageName = this.pageName;\r\n return selector;\r\n };\r\n PageSelector.schemaUrl = \"http://powerbi.com/product/schema#pageSelector\";\r\n return PageSelector;\r\n}(Selector));\r\nexports.PageSelector = PageSelector;\r\nvar VisualSelector = /** @class */ (function (_super) {\r\n __extends(VisualSelector, _super);\r\n function VisualSelector(visualName) {\r\n var _this = _super.call(this, VisualSelector.schemaUrl) || this;\r\n _this.visualName = visualName;\r\n return _this;\r\n }\r\n VisualSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.visualName = this.visualName;\r\n return selector;\r\n };\r\n VisualSelector.schemaUrl = \"http://powerbi.com/product/schema#visualSelector\";\r\n return VisualSelector;\r\n}(Selector));\r\nexports.VisualSelector = VisualSelector;\r\nvar VisualTypeSelector = /** @class */ (function (_super) {\r\n __extends(VisualTypeSelector, _super);\r\n function VisualTypeSelector(visualType) {\r\n var _this = _super.call(this, VisualSelector.schemaUrl) || this;\r\n _this.visualType = visualType;\r\n return _this;\r\n }\r\n VisualTypeSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.visualType = this.visualType;\r\n return selector;\r\n };\r\n VisualTypeSelector.schemaUrl = \"http://powerbi.com/product/schema#visualTypeSelector\";\r\n return VisualTypeSelector;\r\n}(Selector));\r\nexports.VisualTypeSelector = VisualTypeSelector;\r\nvar SlicerTargetSelector = /** @class */ (function (_super) {\r\n __extends(SlicerTargetSelector, _super);\r\n function SlicerTargetSelector(target) {\r\n var _this = _super.call(this, VisualSelector.schemaUrl) || this;\r\n _this.target = target;\r\n return _this;\r\n }\r\n SlicerTargetSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.target = this.target;\r\n return selector;\r\n };\r\n SlicerTargetSelector.schemaUrl = \"http://powerbi.com/product/schema#slicerTargetSelector\";\r\n return SlicerTargetSelector;\r\n}(Selector));\r\nexports.SlicerTargetSelector = SlicerTargetSelector;\r\nvar CommandDisplayOption;\r\n(function (CommandDisplayOption) {\r\n CommandDisplayOption[CommandDisplayOption[\"Enabled\"] = 0] = \"Enabled\";\r\n CommandDisplayOption[CommandDisplayOption[\"Disabled\"] = 1] = \"Disabled\";\r\n CommandDisplayOption[CommandDisplayOption[\"Hidden\"] = 2] = \"Hidden\";\r\n})(CommandDisplayOption = exports.CommandDisplayOption || (exports.CommandDisplayOption = {}));\r\n/*\r\n * Visual CRUD\r\n */\r\nvar VisualDataRoleKind;\r\n(function (VisualDataRoleKind) {\r\n // Indicates that the role should be bound to something that evaluates to a grouping of values.\r\n VisualDataRoleKind[VisualDataRoleKind[\"Grouping\"] = 0] = \"Grouping\";\r\n // Indicates that the role should be bound to something that evaluates to a single value in a scope.\r\n VisualDataRoleKind[VisualDataRoleKind[\"Measure\"] = 1] = \"Measure\";\r\n // Indicates that the role can be bound to either Grouping or Measure.\r\n VisualDataRoleKind[VisualDataRoleKind[\"GroupingOrMeasure\"] = 2] = \"GroupingOrMeasure\";\r\n})(VisualDataRoleKind = exports.VisualDataRoleKind || (exports.VisualDataRoleKind = {}));\r\n// Indicates the visual preference on Grouping or Measure. Only applicable if kind is GroupingOrMeasure.\r\nvar VisualDataRoleKindPreference;\r\n(function (VisualDataRoleKindPreference) {\r\n VisualDataRoleKindPreference[VisualDataRoleKindPreference[\"Measure\"] = 0] = \"Measure\";\r\n VisualDataRoleKindPreference[VisualDataRoleKindPreference[\"Grouping\"] = 1] = \"Grouping\";\r\n})(VisualDataRoleKindPreference = exports.VisualDataRoleKindPreference || (exports.VisualDataRoleKindPreference = {}));\r\nfunction isOnLoadFilters(filters) {\r\n return filters && !isReportFiltersArray(filters);\r\n}\r\nexports.isOnLoadFilters = isOnLoadFilters;\r\nfunction isReportFiltersArray(filters) {\r\n return Array.isArray(filters);\r\n}\r\nexports.isReportFiltersArray = isReportFiltersArray;\r\nfunction isFlatMenuExtension(menuExtension) {\r\n return menuExtension && !isGroupedMenuExtension(menuExtension);\r\n}\r\nexports.isFlatMenuExtension = isFlatMenuExtension;\r\nfunction isGroupedMenuExtension(menuExtension) {\r\n return menuExtension && !!menuExtension.groupName;\r\n}\r\nexports.isGroupedMenuExtension = isGroupedMenuExtension;\r\nfunction isIExtensions(extensions) {\r\n return extensions && !isIExtensionArray(extensions);\r\n}\r\nexports.isIExtensions = isIExtensions;\r\nfunction isIExtensionArray(extensions) {\r\n return Array.isArray(extensions);\r\n}\r\nexports.isIExtensionArray = isIExtensionArray;\r\nfunction normalizeError(error) {\r\n var message = error.message;\r\n if (!message) {\r\n message = \"\".concat(error.path, \" is invalid. Not meeting \").concat(error.keyword, \" constraint\");\r\n }\r\n return {\r\n message: message\r\n };\r\n}\r\nfunction validateVisualSelector(input) {\r\n var errors = validator_1.Validators.visualSelectorValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualSelector = validateVisualSelector;\r\nfunction validateSlicer(input) {\r\n var errors = validator_1.Validators.slicerValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSlicer = validateSlicer;\r\nfunction validateSlicerState(input) {\r\n var errors = validator_1.Validators.slicerStateValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSlicerState = validateSlicerState;\r\nfunction validatePlayBookmarkRequest(input) {\r\n var errors = validator_1.Validators.playBookmarkRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePlayBookmarkRequest = validatePlayBookmarkRequest;\r\nfunction validateAddBookmarkRequest(input) {\r\n var errors = validator_1.Validators.addBookmarkRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateAddBookmarkRequest = validateAddBookmarkRequest;\r\nfunction validateApplyBookmarkByNameRequest(input) {\r\n var errors = validator_1.Validators.applyBookmarkByNameRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateApplyBookmarkByNameRequest = validateApplyBookmarkByNameRequest;\r\nfunction validateApplyBookmarkStateRequest(input) {\r\n var errors = validator_1.Validators.applyBookmarkStateRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateApplyBookmarkStateRequest = validateApplyBookmarkStateRequest;\r\nfunction validateCaptureBookmarkRequest(input) {\r\n var errors = validator_1.Validators.captureBookmarkRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCaptureBookmarkRequest = validateCaptureBookmarkRequest;\r\nfunction validateSettings(input) {\r\n var errors = validator_1.Validators.settingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSettings = validateSettings;\r\nfunction validatePanes(input) {\r\n var errors = validator_1.Validators.reportPanesValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePanes = validatePanes;\r\nfunction validateBookmarksPane(input) {\r\n var errors = validator_1.Validators.bookmarksPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateBookmarksPane = validateBookmarksPane;\r\nfunction validateFiltersPane(input) {\r\n var errors = validator_1.Validators.filtersPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateFiltersPane = validateFiltersPane;\r\nfunction validateFieldsPane(input) {\r\n var errors = validator_1.Validators.fieldsPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateFieldsPane = validateFieldsPane;\r\nfunction validatePageNavigationPane(input) {\r\n var errors = validator_1.Validators.pageNavigationPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePageNavigationPane = validatePageNavigationPane;\r\nfunction validateSelectionPane(input) {\r\n var errors = validator_1.Validators.selectionPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSelectionPane = validateSelectionPane;\r\nfunction validateSyncSlicersPane(input) {\r\n var errors = validator_1.Validators.syncSlicersPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSyncSlicersPane = validateSyncSlicersPane;\r\nfunction validateVisualizationsPane(input) {\r\n var errors = validator_1.Validators.visualizationsPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualizationsPane = validateVisualizationsPane;\r\nfunction validateCustomPageSize(input) {\r\n var errors = validator_1.Validators.customPageSizeValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCustomPageSize = validateCustomPageSize;\r\nfunction validateExtension(input) {\r\n var errors = validator_1.Validators.extensionValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateExtension = validateExtension;\r\nfunction validateMenuGroupExtension(input) {\r\n var errors = validator_1.Validators.menuGroupExtensionValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateMenuGroupExtension = validateMenuGroupExtension;\r\nfunction validateReportLoad(input) {\r\n var errors = validator_1.Validators.reportLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateReportLoad = validateReportLoad;\r\nfunction validatePaginatedReportLoad(input) {\r\n var errors = validator_1.Validators.paginatedReportLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePaginatedReportLoad = validatePaginatedReportLoad;\r\nfunction validateCreateReport(input) {\r\n var errors = validator_1.Validators.reportCreateValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCreateReport = validateCreateReport;\r\nfunction validateQuickCreate(input) {\r\n var errors = validator_1.Validators.quickCreateValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateQuickCreate = validateQuickCreate;\r\nfunction validateDashboardLoad(input) {\r\n var errors = validator_1.Validators.dashboardLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateDashboardLoad = validateDashboardLoad;\r\nfunction validateTileLoad(input) {\r\n var errors = validator_1.Validators.tileLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateTileLoad = validateTileLoad;\r\nfunction validatePage(input) {\r\n var errors = validator_1.Validators.pageValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePage = validatePage;\r\nfunction validateFilter(input) {\r\n var errors = validator_1.Validators.filterValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateFilter = validateFilter;\r\nfunction validateUpdateFiltersRequest(input) {\r\n var errors = validator_1.Validators.updateFiltersRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateUpdateFiltersRequest = validateUpdateFiltersRequest;\r\nfunction validateSaveAsParameters(input) {\r\n var errors = validator_1.Validators.saveAsParametersValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSaveAsParameters = validateSaveAsParameters;\r\nfunction validateLoadQnaConfiguration(input) {\r\n var errors = validator_1.Validators.loadQnaValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateLoadQnaConfiguration = validateLoadQnaConfiguration;\r\nfunction validateQnaInterpretInputData(input) {\r\n var errors = validator_1.Validators.qnaInterpretInputDataValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateQnaInterpretInputData = validateQnaInterpretInputData;\r\nfunction validateExportDataRequest(input) {\r\n var errors = validator_1.Validators.exportDataRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateExportDataRequest = validateExportDataRequest;\r\nfunction validateVisualHeader(input) {\r\n var errors = validator_1.Validators.visualHeaderValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualHeader = validateVisualHeader;\r\nfunction validateVisualSettings(input) {\r\n var errors = validator_1.Validators.visualSettingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualSettings = validateVisualSettings;\r\nfunction validateCommandsSettings(input) {\r\n var errors = validator_1.Validators.commandsSettingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCommandsSettings = validateCommandsSettings;\r\nfunction validateCustomTheme(input) {\r\n var errors = validator_1.Validators.customThemeValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCustomTheme = validateCustomTheme;\r\nfunction validateZoomLevel(input) {\r\n var errors = validator_1.Validators.zoomLevelValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateZoomLevel = validateZoomLevel;\r\nfunction validatePrintSettings(input) {\r\n var errors = validator_1.Validators.printSettingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePrintSettings = validatePrintSettings;\r\n\n\n/***/ }),\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __nested_webpack_require_47160__) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Validators = void 0;\r\nvar barsValidator_1 = __nested_webpack_require_47160__(2);\r\nvar bookmarkValidator_1 = __nested_webpack_require_47160__(5);\r\nvar commandsSettingsValidator_1 = __nested_webpack_require_47160__(6);\r\nvar customThemeValidator_1 = __nested_webpack_require_47160__(7);\r\nvar dashboardLoadValidator_1 = __nested_webpack_require_47160__(8);\r\nvar datasetBindingValidator_1 = __nested_webpack_require_47160__(9);\r\nvar exportDataValidator_1 = __nested_webpack_require_47160__(10);\r\nvar extensionsValidator_1 = __nested_webpack_require_47160__(11);\r\nvar filtersValidator_1 = __nested_webpack_require_47160__(12);\r\nvar layoutValidator_1 = __nested_webpack_require_47160__(13);\r\nvar pageValidator_1 = __nested_webpack_require_47160__(14);\r\nvar panesValidator_1 = __nested_webpack_require_47160__(15);\r\nvar qnaValidator_1 = __nested_webpack_require_47160__(16);\r\nvar reportCreateValidator_1 = __nested_webpack_require_47160__(17);\r\nvar reportLoadValidator_1 = __nested_webpack_require_47160__(18);\r\nvar paginatedReportLoadValidator_1 = __nested_webpack_require_47160__(19);\r\nvar saveAsParametersValidator_1 = __nested_webpack_require_47160__(20);\r\nvar selectorsValidator_1 = __nested_webpack_require_47160__(21);\r\nvar settingsValidator_1 = __nested_webpack_require_47160__(22);\r\nvar slicersValidator_1 = __nested_webpack_require_47160__(23);\r\nvar tileLoadValidator_1 = __nested_webpack_require_47160__(24);\r\nvar visualSettingsValidator_1 = __nested_webpack_require_47160__(25);\r\nvar anyOfValidator_1 = __nested_webpack_require_47160__(26);\r\nvar fieldForbiddenValidator_1 = __nested_webpack_require_47160__(27);\r\nvar fieldRequiredValidator_1 = __nested_webpack_require_47160__(28);\r\nvar mapValidator_1 = __nested_webpack_require_47160__(29);\r\nvar typeValidator_1 = __nested_webpack_require_47160__(4);\r\nvar parameterPanelValidator_1 = __nested_webpack_require_47160__(30);\r\nvar datasetCreateConfigValidator_1 = __nested_webpack_require_47160__(31);\r\nvar quickCreateValidator_1 = __nested_webpack_require_47160__(32);\r\nvar printSettingsValidator_1 = __nested_webpack_require_47160__(33);\r\nvar paginatedReportDatasetBindingValidator_1 = __nested_webpack_require_47160__(34);\r\nexports.Validators = {\r\n addBookmarkRequestValidator: new bookmarkValidator_1.AddBookmarkRequestValidator(),\r\n advancedFilterTypeValidator: new typeValidator_1.EnumValidator([0]),\r\n advancedFilterValidator: new filtersValidator_1.AdvancedFilterValidator(),\r\n anyArrayValidator: new typeValidator_1.ArrayValidator([new anyOfValidator_1.AnyOfValidator([new typeValidator_1.StringValidator(), new typeValidator_1.NumberValidator(), new typeValidator_1.BooleanValidator()])]),\r\n anyFilterValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.BasicFilterValidator(), new filtersValidator_1.AdvancedFilterValidator(), new filtersValidator_1.IncludeExcludeFilterValidator(), new filtersValidator_1.NotSupportedFilterValidator(), new filtersValidator_1.RelativeDateFilterValidator(), new filtersValidator_1.TopNFilterValidator(), new filtersValidator_1.RelativeTimeFilterValidator(), new filtersValidator_1.HierarchyFilterValidator()]),\r\n anyValueValidator: new anyOfValidator_1.AnyOfValidator([new typeValidator_1.StringValidator(), new typeValidator_1.NumberValidator(), new typeValidator_1.BooleanValidator()]),\r\n actionBarValidator: new barsValidator_1.ActionBarValidator(),\r\n statusBarValidator: new barsValidator_1.StatusBarValidator(),\r\n applyBookmarkByNameRequestValidator: new bookmarkValidator_1.ApplyBookmarkByNameRequestValidator(),\r\n applyBookmarkStateRequestValidator: new bookmarkValidator_1.ApplyBookmarkStateRequestValidator(),\r\n applyBookmarkValidator: new anyOfValidator_1.AnyOfValidator([new bookmarkValidator_1.ApplyBookmarkByNameRequestValidator(), new bookmarkValidator_1.ApplyBookmarkStateRequestValidator()]),\r\n backgroundValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n basicFilterTypeValidator: new typeValidator_1.EnumValidator([1]),\r\n basicFilterValidator: new filtersValidator_1.BasicFilterValidator(),\r\n booleanArrayValidator: new typeValidator_1.BooleanArrayValidator(),\r\n booleanValidator: new typeValidator_1.BooleanValidator(),\r\n bookmarksPaneValidator: new panesValidator_1.BookmarksPaneValidator(),\r\n captureBookmarkOptionsValidator: new bookmarkValidator_1.CaptureBookmarkOptionsValidator(),\r\n captureBookmarkRequestValidator: new bookmarkValidator_1.CaptureBookmarkRequestValidator(),\r\n columnSchemaArrayValidator: new typeValidator_1.ArrayValidator([new datasetCreateConfigValidator_1.ColumnSchemaValidator()]),\r\n commandDisplayOptionValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n commandExtensionSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.VisualTypeSelectorValidator()]),\r\n commandExtensionArrayValidator: new typeValidator_1.ArrayValidator([new extensionsValidator_1.CommandExtensionValidator()]),\r\n commandExtensionValidator: new extensionsValidator_1.CommandExtensionValidator(),\r\n commandsSettingsArrayValidator: new typeValidator_1.ArrayValidator([new commandsSettingsValidator_1.CommandsSettingsValidator()]),\r\n commandsSettingsValidator: new commandsSettingsValidator_1.CommandsSettingsValidator(),\r\n conditionItemValidator: new filtersValidator_1.ConditionItemValidator(),\r\n contrastModeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4]),\r\n credentialDetailsValidator: new mapValidator_1.MapValidator([new typeValidator_1.StringValidator()], [new typeValidator_1.StringValidator()]),\r\n credentialsValidator: new datasetCreateConfigValidator_1.CredentialsValidator(),\r\n credentialTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n customLayoutDisplayOptionValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n customLayoutValidator: new layoutValidator_1.CustomLayoutValidator(),\r\n customPageSizeValidator: new pageValidator_1.CustomPageSizeValidator(),\r\n customThemeValidator: new customThemeValidator_1.CustomThemeValidator(),\r\n dashboardLoadValidator: new dashboardLoadValidator_1.DashboardLoadValidator(),\r\n dataCacheModeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n datasetBindingValidator: new datasetBindingValidator_1.DatasetBindingValidator(),\r\n datasetCreateConfigValidator: new datasetCreateConfigValidator_1.DatasetCreateConfigValidator(),\r\n datasourceConnectionConfigValidator: new datasetCreateConfigValidator_1.DatasourceConnectionConfigValidator(),\r\n displayStateModeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n displayStateValidator: new layoutValidator_1.DisplayStateValidator(),\r\n exportDataRequestValidator: new exportDataValidator_1.ExportDataRequestValidator(),\r\n extensionArrayValidator: new typeValidator_1.ArrayValidator([new extensionsValidator_1.ExtensionValidator()]),\r\n extensionsValidator: new anyOfValidator_1.AnyOfValidator([new typeValidator_1.ArrayValidator([new extensionsValidator_1.ExtensionValidator()]), new extensionsValidator_1.ExtensionsValidator()]),\r\n extensionPointsValidator: new extensionsValidator_1.ExtensionPointsValidator(),\r\n extensionValidator: new extensionsValidator_1.ExtensionValidator(),\r\n fieldForbiddenValidator: new fieldForbiddenValidator_1.FieldForbiddenValidator(),\r\n fieldRequiredValidator: new fieldRequiredValidator_1.FieldRequiredValidator(),\r\n fieldsPaneValidator: new panesValidator_1.FieldsPaneValidator(),\r\n filterColumnTargetValidator: new filtersValidator_1.FilterColumnTargetValidator(),\r\n filterDisplaySettingsValidator: new filtersValidator_1.FilterDisplaySettingsValidator(),\r\n filterConditionsValidator: new typeValidator_1.ArrayValidator([new filtersValidator_1.ConditionItemValidator()]),\r\n filterHierarchyTargetValidator: new filtersValidator_1.FilterHierarchyTargetValidator(),\r\n filterMeasureTargetValidator: new filtersValidator_1.FilterMeasureTargetValidator(),\r\n filterTargetValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.FilterColumnTargetValidator(), new filtersValidator_1.FilterHierarchyTargetValidator(), new filtersValidator_1.FilterMeasureTargetValidator(), new typeValidator_1.ArrayValidator([new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.FilterColumnTargetValidator(), new filtersValidator_1.FilterHierarchyTargetValidator(), new filtersValidator_1.FilterMeasureTargetValidator(), new filtersValidator_1.FilterKeyColumnsTargetValidator(), new filtersValidator_1.FilterKeyHierarchyTargetValidator(), new typeValidator_1.ArrayValidator([new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.FilterColumnTargetValidator(), new filtersValidator_1.FilterHierarchyTargetValidator(), new filtersValidator_1.FilterMeasureTargetValidator(), new filtersValidator_1.FilterKeyColumnsTargetValidator(), new filtersValidator_1.FilterKeyHierarchyTargetValidator()])])])])]),\r\n filterValidator: new filtersValidator_1.FilterValidator(),\r\n filterTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5, 6, 7, 9]),\r\n filtersArrayValidator: new typeValidator_1.ArrayValidator([new filtersValidator_1.FilterValidator()]),\r\n filtersOperationsUpdateValidator: new typeValidator_1.EnumValidator([1, 2, 3]),\r\n filtersOperationsRemoveAllValidator: new typeValidator_1.EnumValidator([0]),\r\n filtersPaneValidator: new panesValidator_1.FiltersPaneValidator(),\r\n hyperlinkClickBehaviorValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n includeExcludeFilterValidator: new filtersValidator_1.IncludeExcludeFilterValidator(),\r\n includeExludeFilterTypeValidator: new typeValidator_1.EnumValidator([3]),\r\n includeExcludeFilterValuesValidator: new typeValidator_1.ArrayValidator([new anyOfValidator_1.AnyOfValidator([new typeValidator_1.StringValidator(), new typeValidator_1.NumberValidator(), new typeValidator_1.BooleanValidator(), new typeValidator_1.ArrayValidator([new typeValidator_1.ArrayValidator([new filtersValidator_1.IncludeExcludePointValueValidator()])])])]),\r\n hierarchyFilterTypeValidator: new typeValidator_1.EnumValidator([9]),\r\n hierarchyFilterValuesValidator: new typeValidator_1.ArrayValidator([new filtersValidator_1.HierarchyFilterNodeValidator()]),\r\n layoutTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3]),\r\n loadQnaValidator: new qnaValidator_1.LoadQnaValidator(),\r\n menuExtensionValidator: new anyOfValidator_1.AnyOfValidator([new extensionsValidator_1.FlatMenuExtensionValidator(), new extensionsValidator_1.GroupedMenuExtensionValidator()]),\r\n menuGroupExtensionArrayValidator: new typeValidator_1.ArrayValidator([new extensionsValidator_1.MenuGroupExtensionValidator()]),\r\n menuGroupExtensionValidator: new extensionsValidator_1.MenuGroupExtensionValidator(),\r\n menuLocationValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n notSupportedFilterTypeValidator: new typeValidator_1.EnumValidator([2]),\r\n notSupportedFilterValidator: new filtersValidator_1.NotSupportedFilterValidator(),\r\n numberArrayValidator: new typeValidator_1.NumberArrayValidator(),\r\n numberValidator: new typeValidator_1.NumberValidator(),\r\n onLoadFiltersBaseValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.OnLoadFiltersBaseValidator(), new filtersValidator_1.OnLoadFiltersBaseRemoveOperationValidator()]),\r\n pageLayoutValidator: new mapValidator_1.MapValidator([new typeValidator_1.StringValidator()], [new layoutValidator_1.VisualLayoutValidator()]),\r\n pageNavigationPaneValidator: new panesValidator_1.PageNavigationPaneValidator(),\r\n pageNavigationPositionValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n pageSizeTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5]),\r\n pageSizeValidator: new pageValidator_1.PageSizeValidator(),\r\n pageValidator: new pageValidator_1.PageValidator(),\r\n pageViewFieldValidator: new pageValidator_1.PageViewFieldValidator(),\r\n pagesLayoutValidator: new mapValidator_1.MapValidator([new typeValidator_1.StringValidator()], [new layoutValidator_1.PageLayoutValidator()]),\r\n paginatedReportCommandsValidator: new commandsSettingsValidator_1.PaginatedReportCommandsValidator(),\r\n paginatedReportDatasetBindingArrayValidator: new typeValidator_1.ArrayValidator([new paginatedReportDatasetBindingValidator_1.PaginatedReportDatasetBindingValidator()]),\r\n paginatedReportLoadValidator: new paginatedReportLoadValidator_1.PaginatedReportLoadValidator(),\r\n paginatedReportsettingsValidator: new settingsValidator_1.PaginatedReportSettingsValidator(),\r\n parameterValuesArrayValidator: new typeValidator_1.ArrayValidator([new paginatedReportLoadValidator_1.ReportParameterFieldsValidator()]),\r\n parametersPanelValidator: new parameterPanelValidator_1.ParametersPanelValidator(),\r\n permissionsValidator: new typeValidator_1.EnumValidator([0, 1, 2, 4, 7]),\r\n playBookmarkRequestValidator: new bookmarkValidator_1.PlayBookmarkRequestValidator(),\r\n printSettingsValidator: new printSettingsValidator_1.PrintSettingsValidator(),\r\n qnaInterpretInputDataValidator: new qnaValidator_1.QnaInterpretInputDataValidator(),\r\n qnaPanesValidator: new panesValidator_1.QnaPanesValidator(),\r\n qnaSettingValidator: new qnaValidator_1.QnaSettingsValidator(),\r\n quickCreateValidator: new quickCreateValidator_1.QuickCreateValidator(),\r\n rawDataValidator: new typeValidator_1.ArrayValidator([new typeValidator_1.ArrayValidator([new typeValidator_1.StringValidator()])]),\r\n relativeDateFilterOperatorValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n relativeDateFilterTimeUnitTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5, 6]),\r\n relativeDateFilterTypeValidator: new typeValidator_1.EnumValidator([4]),\r\n relativeDateFilterValidator: new filtersValidator_1.RelativeDateFilterValidator(),\r\n relativeDateTimeFilterTypeValidator: new typeValidator_1.EnumValidator([4, 7]),\r\n relativeDateTimeFilterUnitTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5, 6, 7, 8]),\r\n relativeTimeFilterTimeUnitTypeValidator: new typeValidator_1.EnumValidator([7, 8]),\r\n relativeTimeFilterTypeValidator: new typeValidator_1.EnumValidator([7]),\r\n relativeTimeFilterValidator: new filtersValidator_1.RelativeTimeFilterValidator(),\r\n reportBarsValidator: new barsValidator_1.ReportBarsValidator(),\r\n reportCreateValidator: new reportCreateValidator_1.ReportCreateValidator(),\r\n reportLoadFiltersValidator: new anyOfValidator_1.AnyOfValidator([new typeValidator_1.ArrayValidator([new filtersValidator_1.FilterValidator()]), new filtersValidator_1.OnLoadFiltersValidator()]),\r\n reportLoadValidator: new reportLoadValidator_1.ReportLoadValidator(),\r\n reportPanesValidator: new panesValidator_1.ReportPanesValidator(),\r\n saveAsParametersValidator: new saveAsParametersValidator_1.SaveAsParametersValidator(),\r\n selectionPaneValidator: new panesValidator_1.SelectionPaneValidator(),\r\n settingsValidator: new settingsValidator_1.SettingsValidator(),\r\n singleCommandSettingsValidator: new commandsSettingsValidator_1.SingleCommandSettingsValidator(),\r\n slicerSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.SlicerTargetSelectorValidator()]),\r\n slicerStateValidator: new slicersValidator_1.SlicerStateValidator(),\r\n slicerTargetValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.FilterColumnTargetValidator(), new filtersValidator_1.FilterHierarchyTargetValidator(), new filtersValidator_1.FilterMeasureTargetValidator(), new filtersValidator_1.FilterKeyColumnsTargetValidator(), new filtersValidator_1.FilterKeyHierarchyTargetValidator()]),\r\n slicerValidator: new slicersValidator_1.SlicerValidator(),\r\n stringArrayValidator: new typeValidator_1.StringArrayValidator(),\r\n stringValidator: new typeValidator_1.StringValidator(),\r\n syncSlicersPaneValidator: new panesValidator_1.SyncSlicersPaneValidator(),\r\n tableDataArrayValidator: new typeValidator_1.ArrayValidator([new datasetCreateConfigValidator_1.TableDataValidator()]),\r\n tableSchemaListValidator: new typeValidator_1.ArrayValidator([new datasetCreateConfigValidator_1.TableSchemaValidator()]),\r\n tileLoadValidator: new tileLoadValidator_1.TileLoadValidator(),\r\n tokenTypeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n topNFilterTypeValidator: new typeValidator_1.EnumValidator([5]),\r\n topNFilterValidator: new filtersValidator_1.TopNFilterValidator(),\r\n updateFiltersRequestValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.UpdateFiltersRequestValidator(), new filtersValidator_1.RemoveFiltersRequestValidator()]),\r\n viewModeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n visualCommandSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.VisualTypeSelectorValidator()]),\r\n visualHeaderSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.VisualTypeSelectorValidator()]),\r\n visualHeaderSettingsValidator: new visualSettingsValidator_1.VisualHeaderSettingsValidator(),\r\n visualHeaderValidator: new visualSettingsValidator_1.VisualHeaderValidator(),\r\n visualHeadersValidator: new typeValidator_1.ArrayValidator([new visualSettingsValidator_1.VisualHeaderValidator()]),\r\n visualizationsPaneValidator: new panesValidator_1.VisualizationsPaneValidator(),\r\n visualLayoutValidator: new layoutValidator_1.VisualLayoutValidator(),\r\n visualSelectorValidator: new selectorsValidator_1.VisualSelectorValidator(),\r\n visualSettingsValidator: new visualSettingsValidator_1.VisualSettingsValidator(),\r\n visualTypeSelectorValidator: new selectorsValidator_1.VisualTypeSelectorValidator(),\r\n zoomLevelValidator: new typeValidator_1.RangeValidator(0.25, 4),\r\n};\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_65027__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.StatusBarValidator = exports.ActionBarValidator = exports.ReportBarsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_65027__(3);\r\nvar typeValidator_1 = __nested_webpack_require_65027__(4);\r\nvar validator_1 = __nested_webpack_require_65027__(1);\r\nvar ReportBarsValidator = /** @class */ (function (_super) {\r\n __extends(ReportBarsValidator, _super);\r\n function ReportBarsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportBarsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"actionBar\",\r\n validators: [validator_1.Validators.actionBarValidator]\r\n },\r\n {\r\n field: \"statusBar\",\r\n validators: [validator_1.Validators.statusBarValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportBarsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportBarsValidator = ReportBarsValidator;\r\nvar ActionBarValidator = /** @class */ (function (_super) {\r\n __extends(ActionBarValidator, _super);\r\n function ActionBarValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ActionBarValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ActionBarValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ActionBarValidator = ActionBarValidator;\r\nvar StatusBarValidator = /** @class */ (function (_super) {\r\n __extends(StatusBarValidator, _super);\r\n function StatusBarValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n StatusBarValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return StatusBarValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.StatusBarValidator = StatusBarValidator;\r\n\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.MultipleFieldsValidator = void 0;\r\nvar MultipleFieldsValidator = /** @class */ (function () {\r\n function MultipleFieldsValidator(fieldValidatorsPairs) {\r\n this.fieldValidatorsPairs = fieldValidatorsPairs;\r\n }\r\n MultipleFieldsValidator.prototype.validate = function (input, path, field) {\r\n if (!this.fieldValidatorsPairs) {\r\n return null;\r\n }\r\n var fieldsPath = path ? path + \".\" + field : field;\r\n for (var _i = 0, _a = this.fieldValidatorsPairs; _i < _a.length; _i++) {\r\n var fieldValidators = _a[_i];\r\n for (var _b = 0, _c = fieldValidators.validators; _b < _c.length; _b++) {\r\n var validator = _c[_b];\r\n var errors = validator.validate(input[fieldValidators.field], fieldsPath, fieldValidators.field);\r\n if (errors) {\r\n return errors;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n return MultipleFieldsValidator;\r\n}());\r\nexports.MultipleFieldsValidator = MultipleFieldsValidator;\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(__unused_webpack_module, exports) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.RangeValidator = exports.NumberArrayValidator = exports.BooleanArrayValidator = exports.StringArrayValidator = exports.EnumValidator = exports.SchemaValidator = exports.ValueValidator = exports.NumberValidator = exports.BooleanValidator = exports.StringValidator = exports.TypeValidator = exports.ArrayValidator = exports.ObjectValidator = void 0;\r\nvar ObjectValidator = /** @class */ (function () {\r\n function ObjectValidator() {\r\n }\r\n ObjectValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (typeof input !== \"object\" || Array.isArray(input)) {\r\n return [{\r\n message: field !== undefined ? field + \" must be an object\" : \"input must be an object\",\r\n path: path,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return ObjectValidator;\r\n}());\r\nexports.ObjectValidator = ObjectValidator;\r\nvar ArrayValidator = /** @class */ (function () {\r\n function ArrayValidator(itemValidators) {\r\n this.itemValidators = itemValidators;\r\n }\r\n ArrayValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (!(Array.isArray(input))) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n for (var i = 0; i < input.length; i++) {\r\n var fieldsPath = (path ? path + \".\" : \"\") + field + \".\" + i.toString();\r\n for (var _i = 0, _a = this.itemValidators; _i < _a.length; _i++) {\r\n var validator = _a[_i];\r\n var errors = validator.validate(input[i], fieldsPath, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n return ArrayValidator;\r\n}());\r\nexports.ArrayValidator = ArrayValidator;\r\nvar TypeValidator = /** @class */ (function () {\r\n function TypeValidator(expectedType) {\r\n this.expectedType = expectedType;\r\n }\r\n TypeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (!(typeof input === this.expectedType)) {\r\n return [{\r\n message: field + \" must be a \" + this.expectedType,\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return TypeValidator;\r\n}());\r\nexports.TypeValidator = TypeValidator;\r\nvar StringValidator = /** @class */ (function (_super) {\r\n __extends(StringValidator, _super);\r\n function StringValidator() {\r\n return _super.call(this, \"string\") || this;\r\n }\r\n return StringValidator;\r\n}(TypeValidator));\r\nexports.StringValidator = StringValidator;\r\nvar BooleanValidator = /** @class */ (function (_super) {\r\n __extends(BooleanValidator, _super);\r\n function BooleanValidator() {\r\n return _super.call(this, \"boolean\") || this;\r\n }\r\n return BooleanValidator;\r\n}(TypeValidator));\r\nexports.BooleanValidator = BooleanValidator;\r\nvar NumberValidator = /** @class */ (function (_super) {\r\n __extends(NumberValidator, _super);\r\n function NumberValidator() {\r\n return _super.call(this, \"number\") || this;\r\n }\r\n return NumberValidator;\r\n}(TypeValidator));\r\nexports.NumberValidator = NumberValidator;\r\nvar ValueValidator = /** @class */ (function () {\r\n function ValueValidator(possibleValues) {\r\n this.possibleValues = possibleValues;\r\n }\r\n ValueValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (this.possibleValues.indexOf(input) < 0) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"invalid\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return ValueValidator;\r\n}());\r\nexports.ValueValidator = ValueValidator;\r\nvar SchemaValidator = /** @class */ (function (_super) {\r\n __extends(SchemaValidator, _super);\r\n function SchemaValidator(schemaValue) {\r\n var _this = _super.call(this, [schemaValue]) || this;\r\n _this.schemaValue = schemaValue;\r\n return _this;\r\n }\r\n SchemaValidator.prototype.validate = function (input, path, field) {\r\n return _super.prototype.validate.call(this, input, path, field);\r\n };\r\n return SchemaValidator;\r\n}(ValueValidator));\r\nexports.SchemaValidator = SchemaValidator;\r\nvar EnumValidator = /** @class */ (function (_super) {\r\n __extends(EnumValidator, _super);\r\n function EnumValidator(possibleValues) {\r\n var _this = _super.call(this) || this;\r\n _this.possibleValues = possibleValues;\r\n return _this;\r\n }\r\n EnumValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var valueValidator = new ValueValidator(this.possibleValues);\r\n return valueValidator.validate(input, path, field);\r\n };\r\n return EnumValidator;\r\n}(NumberValidator));\r\nexports.EnumValidator = EnumValidator;\r\nvar StringArrayValidator = /** @class */ (function (_super) {\r\n __extends(StringArrayValidator, _super);\r\n function StringArrayValidator() {\r\n return _super.call(this, [new StringValidator()]) || this;\r\n }\r\n StringArrayValidator.prototype.validate = function (input, path, field) {\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" must be an array of strings\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return StringArrayValidator;\r\n}(ArrayValidator));\r\nexports.StringArrayValidator = StringArrayValidator;\r\nvar BooleanArrayValidator = /** @class */ (function (_super) {\r\n __extends(BooleanArrayValidator, _super);\r\n function BooleanArrayValidator() {\r\n return _super.call(this, [new BooleanValidator()]) || this;\r\n }\r\n BooleanArrayValidator.prototype.validate = function (input, path, field) {\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" must be an array of booleans\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return BooleanArrayValidator;\r\n}(ArrayValidator));\r\nexports.BooleanArrayValidator = BooleanArrayValidator;\r\nvar NumberArrayValidator = /** @class */ (function (_super) {\r\n __extends(NumberArrayValidator, _super);\r\n function NumberArrayValidator() {\r\n return _super.call(this, [new NumberValidator()]) || this;\r\n }\r\n NumberArrayValidator.prototype.validate = function (input, path, field) {\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" must be an array of numbers\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return NumberArrayValidator;\r\n}(ArrayValidator));\r\nexports.NumberArrayValidator = NumberArrayValidator;\r\nvar RangeValidator = /** @class */ (function (_super) {\r\n __extends(RangeValidator, _super);\r\n function RangeValidator(minValue, maxValue) {\r\n var _this = _super.call(this) || this;\r\n _this.minValue = minValue;\r\n _this.maxValue = maxValue;\r\n return _this;\r\n }\r\n RangeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n // input is a number, now check if it's in the given range\r\n if (input > this.maxValue || input < this.minValue) {\r\n return [{\r\n message: field + \" must be a number between \" + this.minValue.toString() + \" and \" + this.maxValue.toString(),\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"range\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return RangeValidator;\r\n}(NumberValidator));\r\nexports.RangeValidator = RangeValidator;\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_80906__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CaptureBookmarkRequestValidator = exports.CaptureBookmarkOptionsValidator = exports.ApplyBookmarkStateRequestValidator = exports.ApplyBookmarkByNameRequestValidator = exports.AddBookmarkRequestValidator = exports.PlayBookmarkRequestValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_80906__(3);\r\nvar typeValidator_1 = __nested_webpack_require_80906__(4);\r\nvar validator_1 = __nested_webpack_require_80906__(1);\r\nvar PlayBookmarkRequestValidator = /** @class */ (function (_super) {\r\n __extends(PlayBookmarkRequestValidator, _super);\r\n function PlayBookmarkRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PlayBookmarkRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"playMode\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, new typeValidator_1.EnumValidator([0, 1])]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PlayBookmarkRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PlayBookmarkRequestValidator = PlayBookmarkRequestValidator;\r\nvar AddBookmarkRequestValidator = /** @class */ (function (_super) {\r\n __extends(AddBookmarkRequestValidator, _super);\r\n function AddBookmarkRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AddBookmarkRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"state\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"displayName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"apply\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return AddBookmarkRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.AddBookmarkRequestValidator = AddBookmarkRequestValidator;\r\nvar ApplyBookmarkByNameRequestValidator = /** @class */ (function (_super) {\r\n __extends(ApplyBookmarkByNameRequestValidator, _super);\r\n function ApplyBookmarkByNameRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ApplyBookmarkByNameRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ApplyBookmarkByNameRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ApplyBookmarkByNameRequestValidator = ApplyBookmarkByNameRequestValidator;\r\nvar ApplyBookmarkStateRequestValidator = /** @class */ (function (_super) {\r\n __extends(ApplyBookmarkStateRequestValidator, _super);\r\n function ApplyBookmarkStateRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ApplyBookmarkStateRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"state\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ApplyBookmarkStateRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ApplyBookmarkStateRequestValidator = ApplyBookmarkStateRequestValidator;\r\nvar CaptureBookmarkOptionsValidator = /** @class */ (function (_super) {\r\n __extends(CaptureBookmarkOptionsValidator, _super);\r\n function CaptureBookmarkOptionsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CaptureBookmarkOptionsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"personalizeVisuals\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"allPages\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CaptureBookmarkOptionsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CaptureBookmarkOptionsValidator = CaptureBookmarkOptionsValidator;\r\nvar CaptureBookmarkRequestValidator = /** @class */ (function (_super) {\r\n __extends(CaptureBookmarkRequestValidator, _super);\r\n function CaptureBookmarkRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CaptureBookmarkRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"options\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.captureBookmarkOptionsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CaptureBookmarkRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CaptureBookmarkRequestValidator = CaptureBookmarkRequestValidator;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_89382__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PaginatedReportCommandsValidator = exports.SingleCommandSettingsValidator = exports.CommandsSettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_89382__(3);\r\nvar typeValidator_1 = __nested_webpack_require_89382__(4);\r\nvar validator_1 = __nested_webpack_require_89382__(1);\r\nvar CommandsSettingsValidator = /** @class */ (function (_super) {\r\n __extends(CommandsSettingsValidator, _super);\r\n function CommandsSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CommandsSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"copy\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"drill\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"drillthrough\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"expandCollapse\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"exportData\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"includeExclude\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"removeVisual\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"search\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"seeData\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"sort\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"spotlight\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"insightsAnalysis\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"addComment\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"groupVisualContainers\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"summarize\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"clearSelection\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CommandsSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CommandsSettingsValidator = CommandsSettingsValidator;\r\nvar SingleCommandSettingsValidator = /** @class */ (function (_super) {\r\n __extends(SingleCommandSettingsValidator, _super);\r\n function SingleCommandSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SingleCommandSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"displayOption\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.commandDisplayOptionValidator]\r\n },\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.visualCommandSelectorValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SingleCommandSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SingleCommandSettingsValidator = SingleCommandSettingsValidator;\r\nvar PaginatedReportCommandsValidator = /** @class */ (function (_super) {\r\n __extends(PaginatedReportCommandsValidator, _super);\r\n function PaginatedReportCommandsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PaginatedReportCommandsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"parameterPanel\",\r\n validators: [validator_1.Validators.parametersPanelValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PaginatedReportCommandsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PaginatedReportCommandsValidator = PaginatedReportCommandsValidator;\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_96415__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CustomThemeValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_96415__(3);\r\nvar typeValidator_1 = __nested_webpack_require_96415__(4);\r\nvar CustomThemeValidator = /** @class */ (function (_super) {\r\n __extends(CustomThemeValidator, _super);\r\n function CustomThemeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CustomThemeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"themeJson\",\r\n validators: [new typeValidator_1.ObjectValidator()]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CustomThemeValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CustomThemeValidator = CustomThemeValidator;\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_98569__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DashboardLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_98569__(3);\r\nvar typeValidator_1 = __nested_webpack_require_98569__(4);\r\nvar validator_1 = __nested_webpack_require_98569__(1);\r\nvar DashboardLoadValidator = /** @class */ (function (_super) {\r\n __extends(DashboardLoadValidator, _super);\r\n function DashboardLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DashboardLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"pageView\",\r\n validators: [validator_1.Validators.pageViewFieldValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"embedUrl\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DashboardLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DashboardLoadValidator = DashboardLoadValidator;\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_101568__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DatasetBindingValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_101568__(3);\r\nvar typeValidator_1 = __nested_webpack_require_101568__(4);\r\nvar validator_1 = __nested_webpack_require_101568__(1);\r\nvar DatasetBindingValidator = /** @class */ (function (_super) {\r\n __extends(DatasetBindingValidator, _super);\r\n function DatasetBindingValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DatasetBindingValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n if (!input[\"datasetId\"] && !input[\"paginatedReportBindings\"]) {\r\n return [{\r\n message: \"datasetBinding cannot be empty\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"invalid\"\r\n }];\r\n }\r\n var fields = [\r\n {\r\n field: \"datasetId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"paginatedReportBindings\",\r\n validators: [validator_1.Validators.paginatedReportDatasetBindingArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DatasetBindingValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DatasetBindingValidator = DatasetBindingValidator;\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_104264__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ExportDataRequestValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_104264__(3);\r\nvar typeValidator_1 = __nested_webpack_require_104264__(4);\r\nvar ExportDataRequestValidator = /** @class */ (function (_super) {\r\n __extends(ExportDataRequestValidator, _super);\r\n function ExportDataRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExportDataRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"rows\",\r\n validators: [new typeValidator_1.NumberValidator()]\r\n },\r\n {\r\n field: \"exportDataType\",\r\n validators: [new typeValidator_1.EnumValidator([0, 1])]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExportDataRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExportDataRequestValidator = ExportDataRequestValidator;\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_106608__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ExtensionsValidator = exports.MenuGroupExtensionValidator = exports.ExtensionValidator = exports.CommandExtensionValidator = exports.ExtensionItemValidator = exports.ExtensionPointsValidator = exports.GroupedMenuExtensionValidator = exports.FlatMenuExtensionValidator = exports.MenuExtensionBaseValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_106608__(3);\r\nvar typeValidator_1 = __nested_webpack_require_106608__(4);\r\nvar validator_1 = __nested_webpack_require_106608__(1);\r\nvar MenuExtensionBaseValidator = /** @class */ (function (_super) {\r\n __extends(MenuExtensionBaseValidator, _super);\r\n function MenuExtensionBaseValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MenuExtensionBaseValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"title\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"icon\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return MenuExtensionBaseValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.MenuExtensionBaseValidator = MenuExtensionBaseValidator;\r\nvar FlatMenuExtensionValidator = /** @class */ (function (_super) {\r\n __extends(FlatMenuExtensionValidator, _super);\r\n function FlatMenuExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FlatMenuExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"menuLocation\",\r\n validators: [validator_1.Validators.menuLocationValidator]\r\n },\r\n {\r\n field: \"groupName\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FlatMenuExtensionValidator;\r\n}(MenuExtensionBaseValidator));\r\nexports.FlatMenuExtensionValidator = FlatMenuExtensionValidator;\r\nvar GroupedMenuExtensionValidator = /** @class */ (function (_super) {\r\n __extends(GroupedMenuExtensionValidator, _super);\r\n function GroupedMenuExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n GroupedMenuExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"groupName\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"menuLocation\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return GroupedMenuExtensionValidator;\r\n}(MenuExtensionBaseValidator));\r\nexports.GroupedMenuExtensionValidator = GroupedMenuExtensionValidator;\r\nvar ExtensionPointsValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionPointsValidator, _super);\r\n function ExtensionPointsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionPointsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visualContextMenu\",\r\n validators: [validator_1.Validators.menuExtensionValidator]\r\n },\r\n {\r\n field: \"visualOptionsMenu\",\r\n validators: [validator_1.Validators.menuExtensionValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionPointsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionPointsValidator = ExtensionPointsValidator;\r\nvar ExtensionItemValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionItemValidator, _super);\r\n function ExtensionItemValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionItemValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"extend\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.extensionPointsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionItemValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionItemValidator = ExtensionItemValidator;\r\nvar CommandExtensionValidator = /** @class */ (function (_super) {\r\n __extends(CommandExtensionValidator, _super);\r\n function CommandExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CommandExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"title\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"icon\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.commandExtensionSelectorValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CommandExtensionValidator;\r\n}(ExtensionItemValidator));\r\nexports.CommandExtensionValidator = CommandExtensionValidator;\r\nvar ExtensionValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionValidator, _super);\r\n function ExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"command\",\r\n validators: [validator_1.Validators.commandExtensionValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionValidator = ExtensionValidator;\r\nvar MenuGroupExtensionValidator = /** @class */ (function (_super) {\r\n __extends(MenuGroupExtensionValidator, _super);\r\n function MenuGroupExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MenuGroupExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"title\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"menuLocation\",\r\n validators: [validator_1.Validators.menuLocationValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return MenuGroupExtensionValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.MenuGroupExtensionValidator = MenuGroupExtensionValidator;\r\nvar ExtensionsValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionsValidator, _super);\r\n function ExtensionsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"commands\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.commandExtensionArrayValidator]\r\n },\r\n {\r\n field: \"groups\",\r\n validators: [validator_1.Validators.menuGroupExtensionArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionsValidator = ExtensionsValidator;\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_119099__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.OnLoadFiltersValidator = exports.OnLoadFiltersBaseRemoveOperationValidator = exports.OnLoadFiltersBaseValidator = exports.ConditionItemValidator = exports.RemoveFiltersRequestValidator = exports.UpdateFiltersRequestValidator = exports.FilterValidator = exports.IncludeExcludePointValueValidator = exports.HierarchyFilterNodeValidator = exports.HierarchyFilterValidator = exports.IncludeExcludeFilterValidator = exports.NotSupportedFilterValidator = exports.TopNFilterValidator = exports.RelativeTimeFilterValidator = exports.RelativeDateFilterValidator = exports.RelativeDateTimeFilterValidator = exports.AdvancedFilterValidator = exports.BasicFilterValidator = exports.FilterValidatorBase = exports.FilterDisplaySettingsValidator = exports.FilterMeasureTargetValidator = exports.FilterKeyHierarchyTargetValidator = exports.FilterHierarchyTargetValidator = exports.FilterKeyColumnsTargetValidator = exports.FilterColumnTargetValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_119099__(3);\r\nvar typeValidator_1 = __nested_webpack_require_119099__(4);\r\nvar validator_1 = __nested_webpack_require_119099__(1);\r\nvar FilterColumnTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterColumnTargetValidator, _super);\r\n function FilterColumnTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterColumnTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"table\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"column\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterColumnTargetValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterColumnTargetValidator = FilterColumnTargetValidator;\r\nvar FilterKeyColumnsTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterKeyColumnsTargetValidator, _super);\r\n function FilterKeyColumnsTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterKeyColumnsTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"keys\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringArrayValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterKeyColumnsTargetValidator;\r\n}(FilterColumnTargetValidator));\r\nexports.FilterKeyColumnsTargetValidator = FilterKeyColumnsTargetValidator;\r\nvar FilterHierarchyTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterHierarchyTargetValidator, _super);\r\n function FilterHierarchyTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterHierarchyTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"table\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"hierarchy\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"hierarchyLevel\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterHierarchyTargetValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterHierarchyTargetValidator = FilterHierarchyTargetValidator;\r\nvar FilterKeyHierarchyTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterKeyHierarchyTargetValidator, _super);\r\n function FilterKeyHierarchyTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterKeyHierarchyTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"keys\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringArrayValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterKeyHierarchyTargetValidator;\r\n}(FilterHierarchyTargetValidator));\r\nexports.FilterKeyHierarchyTargetValidator = FilterKeyHierarchyTargetValidator;\r\nvar FilterMeasureTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterMeasureTargetValidator, _super);\r\n function FilterMeasureTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterMeasureTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"table\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"measure\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterMeasureTargetValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterMeasureTargetValidator = FilterMeasureTargetValidator;\r\nvar FilterDisplaySettingsValidator = /** @class */ (function (_super) {\r\n __extends(FilterDisplaySettingsValidator, _super);\r\n function FilterDisplaySettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterDisplaySettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"isLockedInViewMode\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"isHiddenInViewMode\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"displayName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterDisplaySettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterDisplaySettingsValidator = FilterDisplaySettingsValidator;\r\nvar FilterValidatorBase = /** @class */ (function (_super) {\r\n __extends(FilterValidatorBase, _super);\r\n function FilterValidatorBase() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterValidatorBase.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"target\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filterTargetValidator]\r\n },\r\n {\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.filterTypeValidator]\r\n },\r\n {\r\n field: \"displaySettings\",\r\n validators: [validator_1.Validators.filterDisplaySettingsValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterValidatorBase;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterValidatorBase = FilterValidatorBase;\r\nvar BasicFilterValidator = /** @class */ (function (_super) {\r\n __extends(BasicFilterValidator, _super);\r\n function BasicFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n BasicFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"values\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.anyArrayValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.basicFilterTypeValidator]\r\n },\r\n {\r\n field: \"requireSingleSelection\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return BasicFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.BasicFilterValidator = BasicFilterValidator;\r\nvar AdvancedFilterValidator = /** @class */ (function (_super) {\r\n __extends(AdvancedFilterValidator, _super);\r\n function AdvancedFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AdvancedFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"logicalOperator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"conditions\",\r\n validators: [validator_1.Validators.filterConditionsValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.advancedFilterTypeValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return AdvancedFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.AdvancedFilterValidator = AdvancedFilterValidator;\r\nvar RelativeDateTimeFilterValidator = /** @class */ (function (_super) {\r\n __extends(RelativeDateTimeFilterValidator, _super);\r\n function RelativeDateTimeFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RelativeDateTimeFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeDateFilterOperatorValidator]\r\n },\r\n {\r\n field: \"timeUnitsCount\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"timeUnitType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeDateTimeFilterUnitTypeValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.relativeDateTimeFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RelativeDateTimeFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.RelativeDateTimeFilterValidator = RelativeDateTimeFilterValidator;\r\nvar RelativeDateFilterValidator = /** @class */ (function (_super) {\r\n __extends(RelativeDateFilterValidator, _super);\r\n function RelativeDateFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RelativeDateFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"includeToday\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"timeUnitType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeDateFilterTimeUnitTypeValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.relativeDateFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RelativeDateFilterValidator;\r\n}(RelativeDateTimeFilterValidator));\r\nexports.RelativeDateFilterValidator = RelativeDateFilterValidator;\r\nvar RelativeTimeFilterValidator = /** @class */ (function (_super) {\r\n __extends(RelativeTimeFilterValidator, _super);\r\n function RelativeTimeFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RelativeTimeFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"timeUnitType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeTimeFilterTimeUnitTypeValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.relativeTimeFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RelativeTimeFilterValidator;\r\n}(RelativeDateTimeFilterValidator));\r\nexports.RelativeTimeFilterValidator = RelativeTimeFilterValidator;\r\nvar TopNFilterValidator = /** @class */ (function (_super) {\r\n __extends(TopNFilterValidator, _super);\r\n function TopNFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TopNFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"itemCount\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.topNFilterTypeValidator]\r\n },\r\n {\r\n field: \"orderBy\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filterTargetValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TopNFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.TopNFilterValidator = TopNFilterValidator;\r\nvar NotSupportedFilterValidator = /** @class */ (function (_super) {\r\n __extends(NotSupportedFilterValidator, _super);\r\n function NotSupportedFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n NotSupportedFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"message\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"notSupportedTypeName\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.notSupportedFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return NotSupportedFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.NotSupportedFilterValidator = NotSupportedFilterValidator;\r\nvar IncludeExcludeFilterValidator = /** @class */ (function (_super) {\r\n __extends(IncludeExcludeFilterValidator, _super);\r\n function IncludeExcludeFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n IncludeExcludeFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"isExclude\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"values\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.includeExcludeFilterValuesValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.includeExludeFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return IncludeExcludeFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.IncludeExcludeFilterValidator = IncludeExcludeFilterValidator;\r\nvar HierarchyFilterValidator = /** @class */ (function (_super) {\r\n __extends(HierarchyFilterValidator, _super);\r\n function HierarchyFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n HierarchyFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"hierarchyData\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.hierarchyFilterValuesValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.hierarchyFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return HierarchyFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.HierarchyFilterValidator = HierarchyFilterValidator;\r\nvar HierarchyFilterNodeValidator = /** @class */ (function (_super) {\r\n __extends(HierarchyFilterNodeValidator, _super);\r\n function HierarchyFilterNodeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n HierarchyFilterNodeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"value\",\r\n validators: [validator_1.Validators.anyValueValidator]\r\n },\r\n {\r\n field: \"keyValues\",\r\n validators: [validator_1.Validators.anyArrayValidator]\r\n },\r\n {\r\n field: \"children\",\r\n validators: [validator_1.Validators.hierarchyFilterValuesValidator]\r\n },\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return HierarchyFilterNodeValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.HierarchyFilterNodeValidator = HierarchyFilterNodeValidator;\r\nvar IncludeExcludePointValueValidator = /** @class */ (function (_super) {\r\n __extends(IncludeExcludePointValueValidator, _super);\r\n function IncludeExcludePointValueValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n IncludeExcludePointValueValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"value\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.anyValueValidator]\r\n },\r\n {\r\n field: \"keyValues\",\r\n validators: [validator_1.Validators.anyArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return IncludeExcludePointValueValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.IncludeExcludePointValueValidator = IncludeExcludePointValueValidator;\r\nvar FilterValidator = /** @class */ (function (_super) {\r\n __extends(FilterValidator, _super);\r\n function FilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n return validator_1.Validators.anyFilterValidator.validate(input, path, field);\r\n };\r\n return FilterValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterValidator = FilterValidator;\r\nvar UpdateFiltersRequestValidator = /** @class */ (function (_super) {\r\n __extends(UpdateFiltersRequestValidator, _super);\r\n function UpdateFiltersRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n UpdateFiltersRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filtersOperation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsUpdateValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return UpdateFiltersRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.UpdateFiltersRequestValidator = UpdateFiltersRequestValidator;\r\nvar RemoveFiltersRequestValidator = /** @class */ (function (_super) {\r\n __extends(RemoveFiltersRequestValidator, _super);\r\n function RemoveFiltersRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RemoveFiltersRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filtersOperation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsRemoveAllValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RemoveFiltersRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.RemoveFiltersRequestValidator = RemoveFiltersRequestValidator;\r\nvar ConditionItemValidator = /** @class */ (function (_super) {\r\n __extends(ConditionItemValidator, _super);\r\n function ConditionItemValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ConditionItemValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"value\",\r\n validators: [validator_1.Validators.anyValueValidator]\r\n },\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ConditionItemValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ConditionItemValidator = ConditionItemValidator;\r\nvar OnLoadFiltersBaseValidator = /** @class */ (function (_super) {\r\n __extends(OnLoadFiltersBaseValidator, _super);\r\n function OnLoadFiltersBaseValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n OnLoadFiltersBaseValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsUpdateValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return OnLoadFiltersBaseValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.OnLoadFiltersBaseValidator = OnLoadFiltersBaseValidator;\r\nvar OnLoadFiltersBaseRemoveOperationValidator = /** @class */ (function (_super) {\r\n __extends(OnLoadFiltersBaseRemoveOperationValidator, _super);\r\n function OnLoadFiltersBaseRemoveOperationValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n OnLoadFiltersBaseRemoveOperationValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsRemoveAllValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return OnLoadFiltersBaseRemoveOperationValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.OnLoadFiltersBaseRemoveOperationValidator = OnLoadFiltersBaseRemoveOperationValidator;\r\nvar OnLoadFiltersValidator = /** @class */ (function (_super) {\r\n __extends(OnLoadFiltersValidator, _super);\r\n function OnLoadFiltersValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n OnLoadFiltersValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"allPages\",\r\n validators: [validator_1.Validators.onLoadFiltersBaseValidator]\r\n },\r\n {\r\n field: \"currentPage\",\r\n validators: [validator_1.Validators.onLoadFiltersBaseValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return OnLoadFiltersValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.OnLoadFiltersValidator = OnLoadFiltersValidator;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_154405__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PageLayoutValidator = exports.DisplayStateValidator = exports.VisualLayoutValidator = exports.CustomLayoutValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_154405__(3);\r\nvar typeValidator_1 = __nested_webpack_require_154405__(4);\r\nvar validator_1 = __nested_webpack_require_154405__(1);\r\nvar CustomLayoutValidator = /** @class */ (function (_super) {\r\n __extends(CustomLayoutValidator, _super);\r\n function CustomLayoutValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CustomLayoutValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"pageSize\",\r\n validators: [validator_1.Validators.pageSizeValidator]\r\n },\r\n {\r\n field: \"displayOption\",\r\n validators: [validator_1.Validators.customLayoutDisplayOptionValidator]\r\n },\r\n {\r\n field: \"pagesLayout\",\r\n validators: [validator_1.Validators.pagesLayoutValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CustomLayoutValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CustomLayoutValidator = CustomLayoutValidator;\r\nvar VisualLayoutValidator = /** @class */ (function (_super) {\r\n __extends(VisualLayoutValidator, _super);\r\n function VisualLayoutValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualLayoutValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"x\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"y\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"z\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"width\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"height\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"displayState\",\r\n validators: [validator_1.Validators.displayStateValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualLayoutValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualLayoutValidator = VisualLayoutValidator;\r\nvar DisplayStateValidator = /** @class */ (function (_super) {\r\n __extends(DisplayStateValidator, _super);\r\n function DisplayStateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DisplayStateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"mode\",\r\n validators: [validator_1.Validators.displayStateModeValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DisplayStateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DisplayStateValidator = DisplayStateValidator;\r\nvar PageLayoutValidator = /** @class */ (function (_super) {\r\n __extends(PageLayoutValidator, _super);\r\n function PageLayoutValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageLayoutValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visualsLayout\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.pageLayoutValidator]\r\n },\r\n {\r\n field: \"defaultLayout\",\r\n validators: [validator_1.Validators.visualLayoutValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageLayoutValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageLayoutValidator = PageLayoutValidator;\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_160884__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PageViewFieldValidator = exports.PageValidator = exports.CustomPageSizeValidator = exports.PageSizeValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_160884__(3);\r\nvar typeValidator_1 = __nested_webpack_require_160884__(4);\r\nvar validator_1 = __nested_webpack_require_160884__(1);\r\nvar PageSizeValidator = /** @class */ (function (_super) {\r\n __extends(PageSizeValidator, _super);\r\n function PageSizeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageSizeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"type\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.pageSizeTypeValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageSizeValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageSizeValidator = PageSizeValidator;\r\nvar CustomPageSizeValidator = /** @class */ (function (_super) {\r\n __extends(CustomPageSizeValidator, _super);\r\n function CustomPageSizeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CustomPageSizeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"width\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"height\",\r\n validators: [validator_1.Validators.numberValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CustomPageSizeValidator;\r\n}(PageSizeValidator));\r\nexports.CustomPageSizeValidator = CustomPageSizeValidator;\r\nvar PageValidator = /** @class */ (function (_super) {\r\n __extends(PageValidator, _super);\r\n function PageValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageValidator = PageValidator;\r\nvar PageViewFieldValidator = /** @class */ (function (_super) {\r\n __extends(PageViewFieldValidator, _super);\r\n function PageViewFieldValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageViewFieldValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var possibleValues = [\"actualSize\", \"fitToWidth\", \"oneColumn\"];\r\n if (possibleValues.indexOf(input) < 0) {\r\n return [{\r\n message: \"pageView must be a string with one of the following values: \\\"actualSize\\\", \\\"fitToWidth\\\", \\\"oneColumn\\\"\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return PageViewFieldValidator;\r\n}(typeValidator_1.StringValidator));\r\nexports.PageViewFieldValidator = PageViewFieldValidator;\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_166324__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.VisualizationsPaneValidator = exports.SyncSlicersPaneValidator = exports.SelectionPaneValidator = exports.PageNavigationPaneValidator = exports.FiltersPaneValidator = exports.FieldsPaneValidator = exports.BookmarksPaneValidator = exports.QnaPanesValidator = exports.ReportPanesValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_166324__(3);\r\nvar typeValidator_1 = __nested_webpack_require_166324__(4);\r\nvar validator_1 = __nested_webpack_require_166324__(1);\r\nvar ReportPanesValidator = /** @class */ (function (_super) {\r\n __extends(ReportPanesValidator, _super);\r\n function ReportPanesValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportPanesValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"bookmarks\",\r\n validators: [validator_1.Validators.bookmarksPaneValidator]\r\n },\r\n {\r\n field: \"fields\",\r\n validators: [validator_1.Validators.fieldsPaneValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.filtersPaneValidator]\r\n },\r\n {\r\n field: \"pageNavigation\",\r\n validators: [validator_1.Validators.pageNavigationPaneValidator]\r\n },\r\n {\r\n field: \"selection\",\r\n validators: [validator_1.Validators.selectionPaneValidator]\r\n },\r\n {\r\n field: \"syncSlicers\",\r\n validators: [validator_1.Validators.syncSlicersPaneValidator]\r\n },\r\n {\r\n field: \"visualizations\",\r\n validators: [validator_1.Validators.visualizationsPaneValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportPanesValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportPanesValidator = ReportPanesValidator;\r\nvar QnaPanesValidator = /** @class */ (function (_super) {\r\n __extends(QnaPanesValidator, _super);\r\n function QnaPanesValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QnaPanesValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.filtersPaneValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QnaPanesValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QnaPanesValidator = QnaPanesValidator;\r\nvar BookmarksPaneValidator = /** @class */ (function (_super) {\r\n __extends(BookmarksPaneValidator, _super);\r\n function BookmarksPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n BookmarksPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return BookmarksPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.BookmarksPaneValidator = BookmarksPaneValidator;\r\nvar FieldsPaneValidator = /** @class */ (function (_super) {\r\n __extends(FieldsPaneValidator, _super);\r\n function FieldsPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FieldsPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FieldsPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FieldsPaneValidator = FieldsPaneValidator;\r\nvar FiltersPaneValidator = /** @class */ (function (_super) {\r\n __extends(FiltersPaneValidator, _super);\r\n function FiltersPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FiltersPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FiltersPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FiltersPaneValidator = FiltersPaneValidator;\r\nvar PageNavigationPaneValidator = /** @class */ (function (_super) {\r\n __extends(PageNavigationPaneValidator, _super);\r\n function PageNavigationPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageNavigationPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"position\",\r\n validators: [validator_1.Validators.pageNavigationPositionValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageNavigationPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageNavigationPaneValidator = PageNavigationPaneValidator;\r\nvar SelectionPaneValidator = /** @class */ (function (_super) {\r\n __extends(SelectionPaneValidator, _super);\r\n function SelectionPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SelectionPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SelectionPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SelectionPaneValidator = SelectionPaneValidator;\r\nvar SyncSlicersPaneValidator = /** @class */ (function (_super) {\r\n __extends(SyncSlicersPaneValidator, _super);\r\n function SyncSlicersPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SyncSlicersPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SyncSlicersPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SyncSlicersPaneValidator = SyncSlicersPaneValidator;\r\nvar VisualizationsPaneValidator = /** @class */ (function (_super) {\r\n __extends(VisualizationsPaneValidator, _super);\r\n function VisualizationsPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualizationsPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualizationsPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualizationsPaneValidator = VisualizationsPaneValidator;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_178070__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.QnaInterpretInputDataValidator = exports.QnaSettingsValidator = exports.LoadQnaValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_178070__(3);\r\nvar typeValidator_1 = __nested_webpack_require_178070__(4);\r\nvar validator_1 = __nested_webpack_require_178070__(1);\r\nvar LoadQnaValidator = /** @class */ (function (_super) {\r\n __extends(LoadQnaValidator, _super);\r\n function LoadQnaValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n LoadQnaValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasetIds\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringArrayValidator]\r\n },\r\n {\r\n field: \"question\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"viewMode\",\r\n validators: [validator_1.Validators.viewModeValidator]\r\n },\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.qnaSettingValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return LoadQnaValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.LoadQnaValidator = LoadQnaValidator;\r\nvar QnaSettingsValidator = /** @class */ (function (_super) {\r\n __extends(QnaSettingsValidator, _super);\r\n function QnaSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QnaSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filterPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"hideErrors\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"panes\",\r\n validators: [validator_1.Validators.qnaPanesValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QnaSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QnaSettingsValidator = QnaSettingsValidator;\r\nvar QnaInterpretInputDataValidator = /** @class */ (function (_super) {\r\n __extends(QnaInterpretInputDataValidator, _super);\r\n function QnaInterpretInputDataValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QnaInterpretInputDataValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"datasetIds\",\r\n validators: [validator_1.Validators.stringArrayValidator]\r\n },\r\n {\r\n field: \"question\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QnaInterpretInputDataValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QnaInterpretInputDataValidator = QnaInterpretInputDataValidator;\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_183781__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReportCreateValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_183781__(3);\r\nvar typeValidator_1 = __nested_webpack_require_183781__(4);\r\nvar validator_1 = __nested_webpack_require_183781__(1);\r\nvar ReportCreateValidator = /** @class */ (function (_super) {\r\n __extends(ReportCreateValidator, _super);\r\n function ReportCreateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportCreateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasetId\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"theme\",\r\n validators: [validator_1.Validators.customThemeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportCreateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportCreateValidator = ReportCreateValidator;\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_186639__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReportLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_186639__(3);\r\nvar typeValidator_1 = __nested_webpack_require_186639__(4);\r\nvar validator_1 = __nested_webpack_require_186639__(1);\r\nvar ReportLoadValidator = /** @class */ (function (_super) {\r\n __extends(ReportLoadValidator, _super);\r\n function ReportLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.settingsValidator]\r\n },\r\n {\r\n field: \"pageName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.reportLoadFiltersValidator]\r\n },\r\n {\r\n field: \"permissions\",\r\n validators: [validator_1.Validators.permissionsValidator]\r\n },\r\n {\r\n field: \"viewMode\",\r\n validators: [validator_1.Validators.viewModeValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"bookmark\",\r\n validators: [validator_1.Validators.applyBookmarkValidator]\r\n },\r\n {\r\n field: \"theme\",\r\n validators: [validator_1.Validators.customThemeValidator]\r\n },\r\n {\r\n field: \"embedUrl\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasetBinding\",\r\n validators: [validator_1.Validators.datasetBindingValidator]\r\n },\r\n {\r\n field: \"contrastMode\",\r\n validators: [validator_1.Validators.contrastModeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportLoadValidator = ReportLoadValidator;\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_190760__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReportParameterFieldsValidator = exports.PaginatedReportLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_190760__(3);\r\nvar typeValidator_1 = __nested_webpack_require_190760__(4);\r\nvar validator_1 = __nested_webpack_require_190760__(1);\r\nvar PaginatedReportLoadValidator = /** @class */ (function (_super) {\r\n __extends(PaginatedReportLoadValidator, _super);\r\n function PaginatedReportLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PaginatedReportLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.paginatedReportsettingsValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"embedUrl\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"type\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"parameterValues\",\r\n validators: [validator_1.Validators.parameterValuesArrayValidator]\r\n },\r\n {\r\n field: \"datasetBindings\",\r\n validators: [validator_1.Validators.paginatedReportDatasetBindingArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PaginatedReportLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PaginatedReportLoadValidator = PaginatedReportLoadValidator;\r\nvar ReportParameterFieldsValidator = /** @class */ (function () {\r\n function ReportParameterFieldsValidator() {\r\n }\r\n ReportParameterFieldsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"value\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportParameterFieldsValidator;\r\n}());\r\nexports.ReportParameterFieldsValidator = ReportParameterFieldsValidator;\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_195256__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SaveAsParametersValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_195256__(3);\r\nvar typeValidator_1 = __nested_webpack_require_195256__(4);\r\nvar validator_1 = __nested_webpack_require_195256__(1);\r\nvar SaveAsParametersValidator = /** @class */ (function (_super) {\r\n __extends(SaveAsParametersValidator, _super);\r\n function SaveAsParametersValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SaveAsParametersValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SaveAsParametersValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SaveAsParametersValidator = SaveAsParametersValidator;\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_197537__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SlicerTargetSelectorValidator = exports.VisualTypeSelectorValidator = exports.VisualSelectorValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_197537__(3);\r\nvar typeValidator_1 = __nested_webpack_require_197537__(4);\r\nvar typeValidator_2 = __nested_webpack_require_197537__(4);\r\nvar validator_1 = __nested_webpack_require_197537__(1);\r\nvar VisualSelectorValidator = /** @class */ (function (_super) {\r\n __extends(VisualSelectorValidator, _super);\r\n function VisualSelectorValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualSelectorValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n // Not required for this selector only - Backward compatibility\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.stringValidator, new typeValidator_2.SchemaValidator(\"http://powerbi.com/product/schema#visualSelector\")]\r\n },\r\n {\r\n field: \"visualName\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualSelectorValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualSelectorValidator = VisualSelectorValidator;\r\nvar VisualTypeSelectorValidator = /** @class */ (function (_super) {\r\n __extends(VisualTypeSelectorValidator, _super);\r\n function VisualTypeSelectorValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualTypeSelectorValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator, new typeValidator_2.SchemaValidator(\"http://powerbi.com/product/schema#visualTypeSelector\")]\r\n },\r\n {\r\n field: \"visualType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualTypeSelectorValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualTypeSelectorValidator = VisualTypeSelectorValidator;\r\nvar SlicerTargetSelectorValidator = /** @class */ (function (_super) {\r\n __extends(SlicerTargetSelectorValidator, _super);\r\n function SlicerTargetSelectorValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SlicerTargetSelectorValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator, new typeValidator_2.SchemaValidator(\"http://powerbi.com/product/schema#slicerTargetSelector\")]\r\n },\r\n {\r\n field: \"target\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.slicerTargetValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SlicerTargetSelectorValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SlicerTargetSelectorValidator = SlicerTargetSelectorValidator;\r\n\n\n/***/ }),\n/* 22 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_202995__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PaginatedReportSettingsValidator = exports.SettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_202995__(3);\r\nvar typeValidator_1 = __nested_webpack_require_202995__(4);\r\nvar validator_1 = __nested_webpack_require_202995__(1);\r\nvar SettingsValidator = /** @class */ (function (_super) {\r\n __extends(SettingsValidator, _super);\r\n function SettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filterPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"navContentPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"bookmarksPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"useCustomSaveAsDialog\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"extensions\",\r\n validators: [validator_1.Validators.extensionsValidator]\r\n },\r\n {\r\n field: \"layoutType\",\r\n validators: [validator_1.Validators.layoutTypeValidator]\r\n },\r\n {\r\n field: \"customLayout\",\r\n validators: [validator_1.Validators.customLayoutValidator]\r\n },\r\n {\r\n field: \"background\",\r\n validators: [validator_1.Validators.backgroundValidator]\r\n },\r\n {\r\n field: \"visualSettings\",\r\n validators: [validator_1.Validators.visualSettingsValidator]\r\n },\r\n {\r\n field: \"hideErrors\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"commands\",\r\n validators: [validator_1.Validators.commandsSettingsArrayValidator]\r\n },\r\n {\r\n field: \"hyperlinkClickBehavior\",\r\n validators: [validator_1.Validators.hyperlinkClickBehaviorValidator]\r\n },\r\n {\r\n field: \"bars\",\r\n validators: [validator_1.Validators.reportBarsValidator]\r\n },\r\n {\r\n field: \"panes\",\r\n validators: [validator_1.Validators.reportPanesValidator]\r\n },\r\n {\r\n field: \"personalBookmarksEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"persistentFiltersEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"visualRenderedEvents\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"authoringHintsEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"printSettings\",\r\n validators: [validator_1.Validators.printSettingsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SettingsValidator = SettingsValidator;\r\nvar PaginatedReportSettingsValidator = /** @class */ (function (_super) {\r\n __extends(PaginatedReportSettingsValidator, _super);\r\n function PaginatedReportSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PaginatedReportSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"commands\",\r\n validators: [validator_1.Validators.paginatedReportCommandsValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PaginatedReportSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PaginatedReportSettingsValidator = PaginatedReportSettingsValidator;\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_208991__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SlicerStateValidator = exports.SlicerValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_208991__(3);\r\nvar typeValidator_1 = __nested_webpack_require_208991__(4);\r\nvar validator_1 = __nested_webpack_require_208991__(1);\r\nvar SlicerValidator = /** @class */ (function (_super) {\r\n __extends(SlicerValidator, _super);\r\n function SlicerValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SlicerValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.slicerSelectorValidator]\r\n },\r\n {\r\n field: \"state\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.slicerStateValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SlicerValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SlicerValidator = SlicerValidator;\r\nvar SlicerStateValidator = /** @class */ (function (_super) {\r\n __extends(SlicerStateValidator, _super);\r\n function SlicerStateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SlicerStateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SlicerStateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SlicerStateValidator = SlicerStateValidator;\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_212421__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.TileLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_212421__(3);\r\nvar typeValidator_1 = __nested_webpack_require_212421__(4);\r\nvar validator_1 = __nested_webpack_require_212421__(1);\r\nvar TileLoadValidator = /** @class */ (function (_super) {\r\n __extends(TileLoadValidator, _super);\r\n function TileLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TileLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"dashboardId\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"pageView\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"width\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"height\",\r\n validators: [validator_1.Validators.numberValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TileLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.TileLoadValidator = TileLoadValidator;\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_215693__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.VisualHeaderValidator = exports.VisualHeaderSettingsValidator = exports.VisualSettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_215693__(3);\r\nvar typeValidator_1 = __nested_webpack_require_215693__(4);\r\nvar validator_1 = __nested_webpack_require_215693__(1);\r\nvar VisualSettingsValidator = /** @class */ (function (_super) {\r\n __extends(VisualSettingsValidator, _super);\r\n function VisualSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visualHeaders\",\r\n validators: [validator_1.Validators.visualHeadersValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualSettingsValidator = VisualSettingsValidator;\r\nvar VisualHeaderSettingsValidator = /** @class */ (function (_super) {\r\n __extends(VisualHeaderSettingsValidator, _super);\r\n function VisualHeaderSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualHeaderSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualHeaderSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualHeaderSettingsValidator = VisualHeaderSettingsValidator;\r\nvar VisualHeaderValidator = /** @class */ (function (_super) {\r\n __extends(VisualHeaderValidator, _super);\r\n function VisualHeaderValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualHeaderValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.visualHeaderSettingsValidator]\r\n },\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.visualHeaderSelectorValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualHeaderValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualHeaderValidator = VisualHeaderValidator;\r\n\n\n/***/ }),\n/* 26 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.AnyOfValidator = void 0;\r\nvar AnyOfValidator = /** @class */ (function () {\r\n function AnyOfValidator(validators) {\r\n this.validators = validators;\r\n }\r\n AnyOfValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var valid = false;\r\n for (var _i = 0, _a = this.validators; _i < _a.length; _i++) {\r\n var validator = _a[_i];\r\n var errors = validator.validate(input, path, field);\r\n if (!errors) {\r\n valid = true;\r\n break;\r\n }\r\n }\r\n if (!valid) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"invalid\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return AnyOfValidator;\r\n}());\r\nexports.AnyOfValidator = AnyOfValidator;\r\n\n\n/***/ }),\n/* 27 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.FieldForbiddenValidator = void 0;\r\nvar FieldForbiddenValidator = /** @class */ (function () {\r\n function FieldForbiddenValidator() {\r\n }\r\n FieldForbiddenValidator.prototype.validate = function (input, path, field) {\r\n if (input !== undefined) {\r\n return [{\r\n message: field + \" is forbidden\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"forbidden\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return FieldForbiddenValidator;\r\n}());\r\nexports.FieldForbiddenValidator = FieldForbiddenValidator;\r\n\n\n/***/ }),\n/* 28 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.FieldRequiredValidator = void 0;\r\nvar FieldRequiredValidator = /** @class */ (function () {\r\n function FieldRequiredValidator() {\r\n }\r\n FieldRequiredValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return [{\r\n message: field + \" is required\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"required\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return FieldRequiredValidator;\r\n}());\r\nexports.FieldRequiredValidator = FieldRequiredValidator;\r\n\n\n/***/ }),\n/* 29 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_223102__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.MapValidator = void 0;\r\nvar typeValidator_1 = __nested_webpack_require_223102__(4);\r\nvar MapValidator = /** @class */ (function (_super) {\r\n __extends(MapValidator, _super);\r\n function MapValidator(keyValidators, valueValidators) {\r\n var _this = _super.call(this) || this;\r\n _this.keyValidators = keyValidators;\r\n _this.valueValidators = valueValidators;\r\n return _this;\r\n }\r\n MapValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n for (var key in input) {\r\n if (input.hasOwnProperty(key)) {\r\n var fieldsPath = (path ? path + \".\" : \"\") + field + \".\" + key;\r\n for (var _i = 0, _a = this.keyValidators; _i < _a.length; _i++) {\r\n var keyValidator = _a[_i];\r\n errors = keyValidator.validate(key, fieldsPath, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n }\r\n for (var _b = 0, _c = this.valueValidators; _b < _c.length; _b++) {\r\n var valueValidator = _c[_b];\r\n errors = valueValidator.validate(input[key], fieldsPath, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n return MapValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.MapValidator = MapValidator;\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_225786__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ParametersPanelValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_225786__(3);\r\nvar typeValidator_1 = __nested_webpack_require_225786__(4);\r\nvar validator_1 = __nested_webpack_require_225786__(1);\r\nvar ParametersPanelValidator = /** @class */ (function (_super) {\r\n __extends(ParametersPanelValidator, _super);\r\n function ParametersPanelValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ParametersPanelValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"enabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ParametersPanelValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ParametersPanelValidator = ParametersPanelValidator;\r\n\n\n/***/ }),\n/* 31 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_228154__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.TableDataValidator = exports.TableSchemaValidator = exports.ColumnSchemaValidator = exports.CredentialsValidator = exports.DatasourceConnectionConfigValidator = exports.DatasetCreateConfigValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_228154__(3);\r\nvar typeValidator_1 = __nested_webpack_require_228154__(4);\r\nvar validator_1 = __nested_webpack_require_228154__(1);\r\nvar DatasetCreateConfigValidator = /** @class */ (function (_super) {\r\n __extends(DatasetCreateConfigValidator, _super);\r\n function DatasetCreateConfigValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DatasetCreateConfigValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"locale\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"mashupDocument\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasourceConnectionConfig\",\r\n validators: [validator_1.Validators.datasourceConnectionConfigValidator]\r\n },\r\n {\r\n field: \"tableSchemaList\",\r\n validators: [validator_1.Validators.tableSchemaListValidator]\r\n },\r\n {\r\n field: \"data\",\r\n validators: [validator_1.Validators.tableDataArrayValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n errors = multipleFieldsValidator.validate(input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n if (input[\"datasourceConnectionConfig\"] && input[\"mashupDocument\"] == null) {\r\n return [{\r\n message: \"mashupDocument cannot be empty when datasourceConnectionConfig is presented\"\r\n }];\r\n }\r\n if (input[\"data\"] && input[\"tableSchemaList\"] == null) {\r\n return [{\r\n message: \"tableSchemaList cannot be empty when data is provided\"\r\n }];\r\n }\r\n if (input[\"data\"] == null && input[\"mashupDocument\"] == null) {\r\n return [{\r\n message: \"At least one of data or mashupDocument must be provided\"\r\n }];\r\n }\r\n };\r\n return DatasetCreateConfigValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DatasetCreateConfigValidator = DatasetCreateConfigValidator;\r\nvar DatasourceConnectionConfigValidator = /** @class */ (function (_super) {\r\n __extends(DatasourceConnectionConfigValidator, _super);\r\n function DatasourceConnectionConfigValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DatasourceConnectionConfigValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"dataCacheMode\",\r\n validators: [validator_1.Validators.dataCacheModeValidator]\r\n },\r\n {\r\n field: \"credentials\",\r\n validators: [validator_1.Validators.credentialsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DatasourceConnectionConfigValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DatasourceConnectionConfigValidator = DatasourceConnectionConfigValidator;\r\nvar CredentialsValidator = /** @class */ (function (_super) {\r\n __extends(CredentialsValidator, _super);\r\n function CredentialsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CredentialsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"credentialType\",\r\n validators: [validator_1.Validators.credentialTypeValidator]\r\n },\r\n {\r\n field: \"credentialDetails\",\r\n validators: [validator_1.Validators.credentialDetailsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CredentialsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CredentialsValidator = CredentialsValidator;\r\nvar ColumnSchemaValidator = /** @class */ (function (_super) {\r\n __extends(ColumnSchemaValidator, _super);\r\n function ColumnSchemaValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ColumnSchemaValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"displayName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"dataType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ColumnSchemaValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ColumnSchemaValidator = ColumnSchemaValidator;\r\nvar TableSchemaValidator = /** @class */ (function (_super) {\r\n __extends(TableSchemaValidator, _super);\r\n function TableSchemaValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TableSchemaValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"columns\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.columnSchemaArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TableSchemaValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.TableSchemaValidator = TableSchemaValidator;\r\nvar TableDataValidator = /** @class */ (function (_super) {\r\n __extends(TableDataValidator, _super);\r\n function TableDataValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TableDataValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"rows\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.rawDataValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TableDataValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.TableDataValidator = TableDataValidator;\r\n\n\n/***/ }),\n/* 32 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_238209__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.QuickCreateValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_238209__(3);\r\nvar typeValidator_1 = __nested_webpack_require_238209__(4);\r\nvar validator_1 = __nested_webpack_require_238209__(1);\r\nvar QuickCreateValidator = /** @class */ (function (_super) {\r\n __extends(QuickCreateValidator, _super);\r\n function QuickCreateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QuickCreateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"theme\",\r\n validators: [validator_1.Validators.customThemeValidator]\r\n },\r\n {\r\n field: \"datasetCreateConfig\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.datasetCreateConfigValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QuickCreateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QuickCreateValidator = QuickCreateValidator;\r\n\n\n/***/ }),\n/* 33 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_241082__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PrintSettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_241082__(3);\r\nvar typeValidator_1 = __nested_webpack_require_241082__(4);\r\nvar PrintSettingsValidator = /** @class */ (function (_super) {\r\n __extends(PrintSettingsValidator, _super);\r\n function PrintSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PrintSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"browserPrintAdjustmentsMode\",\r\n validators: [new typeValidator_1.EnumValidator([0, 1])]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PrintSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PrintSettingsValidator = PrintSettingsValidator;\r\n\n\n/***/ }),\n/* 34 */\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_243275__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PaginatedReportDatasetBindingValidator = void 0;\r\nvar multipleFieldsValidator_1 = __nested_webpack_require_243275__(3);\r\nvar typeValidator_1 = __nested_webpack_require_243275__(4);\r\nvar validator_1 = __nested_webpack_require_243275__(1);\r\nvar PaginatedReportDatasetBindingValidator = /** @class */ (function (_super) {\r\n __extends(PaginatedReportDatasetBindingValidator, _super);\r\n function PaginatedReportDatasetBindingValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PaginatedReportDatasetBindingValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"sourceDatasetId\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"targetDatasetId\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PaginatedReportDatasetBindingValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PaginatedReportDatasetBindingValidator = PaginatedReportDatasetBindingValidator;\r\n\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_246021__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_246021__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __nested_webpack_exports__ = __nested_webpack_require_246021__(0);\n/******/ \t\n/******/ \treturn __nested_webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=models.js.map\n\n/***/ }),\n\n/***/ \"./node_modules/powerbi-router/dist/router.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/powerbi-router/dist/router.js ***!\n \\****************************************************/\n/***/ (function(module) {\n\n/*! powerbi-router v0.1.5 | (c) 2016 Microsoft Corporation MIT */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_617__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_617__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__nested_webpack_require_617__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_617__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_617__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_617__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __nested_webpack_require_1897__) {\n\n\t\"use strict\";\n\tvar RouteRecognizer = __nested_webpack_require_1897__(1);\n\tvar Router = (function () {\n\t function Router(handlers) {\n\t this.handlers = handlers;\n\t /**\n\t * TODO: look at generating the router dynamically based on list of supported http methods\n\t * instead of hardcoding the creation of these and the methods.\n\t */\n\t this.getRouteRecognizer = new RouteRecognizer();\n\t this.patchRouteRecognizer = new RouteRecognizer();\n\t this.postRouteRecognizer = new RouteRecognizer();\n\t this.putRouteRecognizer = new RouteRecognizer();\n\t this.deleteRouteRecognizer = new RouteRecognizer();\n\t }\n\t Router.prototype.get = function (url, handler) {\n\t this.registerHandler(this.getRouteRecognizer, \"GET\", url, handler);\n\t return this;\n\t };\n\t Router.prototype.patch = function (url, handler) {\n\t this.registerHandler(this.patchRouteRecognizer, \"PATCH\", url, handler);\n\t return this;\n\t };\n\t Router.prototype.post = function (url, handler) {\n\t this.registerHandler(this.postRouteRecognizer, \"POST\", url, handler);\n\t return this;\n\t };\n\t Router.prototype.put = function (url, handler) {\n\t this.registerHandler(this.putRouteRecognizer, \"PUT\", url, handler);\n\t return this;\n\t };\n\t Router.prototype.delete = function (url, handler) {\n\t this.registerHandler(this.deleteRouteRecognizer, \"DELETE\", url, handler);\n\t return this;\n\t };\n\t /**\n\t * TODO: This method could use some refactoring. There is conflict of interest between keeping clean separation of test and handle method\n\t * Test method only returns boolean indicating if request can be handled, and handle method has opportunity to modify response and return promise of it.\n\t * In the case of the router with route-recognizer where handlers are associated with routes, this already guarantees that only one handler is selected and makes the test method feel complicated\n\t * Will leave as is an investigate cleaner ways at later time.\n\t */\n\t Router.prototype.registerHandler = function (routeRecognizer, method, url, handler) {\n\t var routeRecognizerHandler = function (request) {\n\t var response = new Response();\n\t return Promise.resolve(handler(request, response))\n\t .then(function (x) { return response; });\n\t };\n\t routeRecognizer.add([\n\t { path: url, handler: routeRecognizerHandler }\n\t ]);\n\t var internalHandler = {\n\t test: function (request) {\n\t if (request.method !== method) {\n\t return false;\n\t }\n\t var matchingRoutes = routeRecognizer.recognize(request.url);\n\t if (matchingRoutes === undefined) {\n\t return false;\n\t }\n\t /**\n\t * Copy parameters from recognized route to the request so they can be used within the handler function\n\t * This isn't ideal because it is side affect which modifies the request instead of strictly testing for true or false\n\t * but I don't see a better place to put this. If we move it between the call to test and the handle it becomes part of the window post message proxy\n\t * even though it's responsibility is related to routing.\n\t */\n\t var route = matchingRoutes[0];\n\t request.params = route.params;\n\t request.queryParams = matchingRoutes.queryParams;\n\t request.handler = route.handler;\n\t return true;\n\t },\n\t handle: function (request) {\n\t return request.handler(request);\n\t }\n\t };\n\t this.handlers.addHandler(internalHandler);\n\t };\n\t return Router;\n\t}());\n\texports.Router = Router;\n\tvar Response = (function () {\n\t function Response() {\n\t this.statusCode = 200;\n\t this.headers = {};\n\t this.body = null;\n\t }\n\t Response.prototype.send = function (statusCode, body) {\n\t this.statusCode = statusCode;\n\t this.body = body;\n\t };\n\t return Response;\n\t}());\n\texports.Response = Response;\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __nested_webpack_require_6218__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module) {(function() {\n\t \"use strict\";\n\t function $$route$recognizer$dsl$$Target(path, matcher, delegate) {\n\t this.path = path;\n\t this.matcher = matcher;\n\t this.delegate = delegate;\n\t }\n\t\n\t $$route$recognizer$dsl$$Target.prototype = {\n\t to: function(target, callback) {\n\t var delegate = this.delegate;\n\t\n\t if (delegate && delegate.willAddRoute) {\n\t target = delegate.willAddRoute(this.matcher.target, target);\n\t }\n\t\n\t this.matcher.add(this.path, target);\n\t\n\t if (callback) {\n\t if (callback.length === 0) { throw new Error(\"You must have an argument in the function passed to `to`\"); }\n\t this.matcher.addChild(this.path, target, callback, this.delegate);\n\t }\n\t return this;\n\t }\n\t };\n\t\n\t function $$route$recognizer$dsl$$Matcher(target) {\n\t this.routes = {};\n\t this.children = {};\n\t this.target = target;\n\t }\n\t\n\t $$route$recognizer$dsl$$Matcher.prototype = {\n\t add: function(path, handler) {\n\t this.routes[path] = handler;\n\t },\n\t\n\t addChild: function(path, target, callback, delegate) {\n\t var matcher = new $$route$recognizer$dsl$$Matcher(target);\n\t this.children[path] = matcher;\n\t\n\t var match = $$route$recognizer$dsl$$generateMatch(path, matcher, delegate);\n\t\n\t if (delegate && delegate.contextEntered) {\n\t delegate.contextEntered(target, match);\n\t }\n\t\n\t callback(match);\n\t }\n\t };\n\t\n\t function $$route$recognizer$dsl$$generateMatch(startingPath, matcher, delegate) {\n\t return function(path, nestedCallback) {\n\t var fullPath = startingPath + path;\n\t\n\t if (nestedCallback) {\n\t nestedCallback($$route$recognizer$dsl$$generateMatch(fullPath, matcher, delegate));\n\t } else {\n\t return new $$route$recognizer$dsl$$Target(startingPath + path, matcher, delegate);\n\t }\n\t };\n\t }\n\t\n\t function $$route$recognizer$dsl$$addRoute(routeArray, path, handler) {\n\t var len = 0;\n\t for (var i=0; i<routeArray.length; i++) {\n\t len += routeArray[i].path.length;\n\t }\n\t\n\t path = path.substr(len);\n\t var route = { path: path, handler: handler };\n\t routeArray.push(route);\n\t }\n\t\n\t function $$route$recognizer$dsl$$eachRoute(baseRoute, matcher, callback, binding) {\n\t var routes = matcher.routes;\n\t\n\t for (var path in routes) {\n\t if (routes.hasOwnProperty(path)) {\n\t var routeArray = baseRoute.slice();\n\t $$route$recognizer$dsl$$addRoute(routeArray, path, routes[path]);\n\t\n\t if (matcher.children[path]) {\n\t $$route$recognizer$dsl$$eachRoute(routeArray, matcher.children[path], callback, binding);\n\t } else {\n\t callback.call(binding, routeArray);\n\t }\n\t }\n\t }\n\t }\n\t\n\t var $$route$recognizer$dsl$$default = function(callback, addRouteCallback) {\n\t var matcher = new $$route$recognizer$dsl$$Matcher();\n\t\n\t callback($$route$recognizer$dsl$$generateMatch(\"\", matcher, this.delegate));\n\t\n\t $$route$recognizer$dsl$$eachRoute([], matcher, function(route) {\n\t if (addRouteCallback) { addRouteCallback(this, route); }\n\t else { this.add(route); }\n\t }, this);\n\t };\n\t\n\t var $$route$recognizer$$specials = [\n\t '/', '.', '*', '+', '?', '|',\n\t '(', ')', '[', ']', '{', '}', '\\\\'\n\t ];\n\t\n\t var $$route$recognizer$$escapeRegex = new RegExp('(\\\\' + $$route$recognizer$$specials.join('|\\\\') + ')', 'g');\n\t\n\t function $$route$recognizer$$isArray(test) {\n\t return Object.prototype.toString.call(test) === \"[object Array]\";\n\t }\n\t\n\t // A Segment represents a segment in the original route description.\n\t // Each Segment type provides an `eachChar` and `regex` method.\n\t //\n\t // The `eachChar` method invokes the callback with one or more character\n\t // specifications. A character specification consumes one or more input\n\t // characters.\n\t //\n\t // The `regex` method returns a regex fragment for the segment. If the\n\t // segment is a dynamic of star segment, the regex fragment also includes\n\t // a capture.\n\t //\n\t // A character specification contains:\n\t //\n\t // * `validChars`: a String with a list of all valid characters, or\n\t // * `invalidChars`: a String with a list of all invalid characters\n\t // * `repeat`: true if the character specification can repeat\n\t\n\t function $$route$recognizer$$StaticSegment(string) { this.string = string; }\n\t $$route$recognizer$$StaticSegment.prototype = {\n\t eachChar: function(currentState) {\n\t var string = this.string, ch;\n\t\n\t for (var i=0; i<string.length; i++) {\n\t ch = string.charAt(i);\n\t currentState = currentState.put({ invalidChars: undefined, repeat: false, validChars: ch });\n\t }\n\t\n\t return currentState;\n\t },\n\t\n\t regex: function() {\n\t return this.string.replace($$route$recognizer$$escapeRegex, '\\\\$1');\n\t },\n\t\n\t generate: function() {\n\t return this.string;\n\t }\n\t };\n\t\n\t function $$route$recognizer$$DynamicSegment(name) { this.name = name; }\n\t $$route$recognizer$$DynamicSegment.prototype = {\n\t eachChar: function(currentState) {\n\t return currentState.put({ invalidChars: \"/\", repeat: true, validChars: undefined });\n\t },\n\t\n\t regex: function() {\n\t return \"([^/]+)\";\n\t },\n\t\n\t generate: function(params) {\n\t return params[this.name];\n\t }\n\t };\n\t\n\t function $$route$recognizer$$StarSegment(name) { this.name = name; }\n\t $$route$recognizer$$StarSegment.prototype = {\n\t eachChar: function(currentState) {\n\t return currentState.put({ invalidChars: \"\", repeat: true, validChars: undefined });\n\t },\n\t\n\t regex: function() {\n\t return \"(.+)\";\n\t },\n\t\n\t generate: function(params) {\n\t return params[this.name];\n\t }\n\t };\n\t\n\t function $$route$recognizer$$EpsilonSegment() {}\n\t $$route$recognizer$$EpsilonSegment.prototype = {\n\t eachChar: function(currentState) {\n\t return currentState;\n\t },\n\t regex: function() { return \"\"; },\n\t generate: function() { return \"\"; }\n\t };\n\t\n\t function $$route$recognizer$$parse(route, names, specificity) {\n\t // normalize route as not starting with a \"/\". Recognition will\n\t // also normalize.\n\t if (route.charAt(0) === \"/\") { route = route.substr(1); }\n\t\n\t var segments = route.split(\"/\");\n\t var results = new Array(segments.length);\n\t\n\t // A routes has specificity determined by the order that its different segments\n\t // appear in. This system mirrors how the magnitude of numbers written as strings\n\t // works.\n\t // Consider a number written as: \"abc\". An example would be \"200\". Any other number written\n\t // \"xyz\" will be smaller than \"abc\" so long as `a > z`. For instance, \"199\" is smaller\n\t // then \"200\", even though \"y\" and \"z\" (which are both 9) are larger than \"0\" (the value\n\t // of (`b` and `c`). This is because the leading symbol, \"2\", is larger than the other\n\t // leading symbol, \"1\".\n\t // The rule is that symbols to the left carry more weight than symbols to the right\n\t // when a number is written out as a string. In the above strings, the leading digit\n\t // represents how many 100's are in the number, and it carries more weight than the middle\n\t // number which represents how many 10's are in the number.\n\t // This system of number magnitude works well for route specificity, too. A route written as\n\t // `a/b/c` will be more specific than `x/y/z` as long as `a` is more specific than\n\t // `x`, irrespective of the other parts.\n\t // Because of this similarity, we assign each type of segment a number value written as a\n\t // string. We can find the specificity of compound routes by concatenating these strings\n\t // together, from left to right. After we have looped through all of the segments,\n\t // we convert the string to a number.\n\t specificity.val = '';\n\t\n\t for (var i=0; i<segments.length; i++) {\n\t var segment = segments[i], match;\n\t\n\t if (match = segment.match(/^:([^\\/]+)$/)) {\n\t results[i] = new $$route$recognizer$$DynamicSegment(match[1]);\n\t names.push(match[1]);\n\t specificity.val += '3';\n\t } else if (match = segment.match(/^\\*([^\\/]+)$/)) {\n\t results[i] = new $$route$recognizer$$StarSegment(match[1]);\n\t specificity.val += '1';\n\t names.push(match[1]);\n\t } else if(segment === \"\") {\n\t results[i] = new $$route$recognizer$$EpsilonSegment();\n\t specificity.val += '2';\n\t } else {\n\t results[i] = new $$route$recognizer$$StaticSegment(segment);\n\t specificity.val += '4';\n\t }\n\t }\n\t\n\t specificity.val = +specificity.val;\n\t\n\t return results;\n\t }\n\t\n\t // A State has a character specification and (`charSpec`) and a list of possible\n\t // subsequent states (`nextStates`).\n\t //\n\t // If a State is an accepting state, it will also have several additional\n\t // properties:\n\t //\n\t // * `regex`: A regular expression that is used to extract parameters from paths\n\t // that reached this accepting state.\n\t // * `handlers`: Information on how to convert the list of captures into calls\n\t // to registered handlers with the specified parameters\n\t // * `types`: How many static, dynamic or star segments in this route. Used to\n\t // decide which route to use if multiple registered routes match a path.\n\t //\n\t // Currently, State is implemented naively by looping over `nextStates` and\n\t // comparing a character specification against a character. A more efficient\n\t // implementation would use a hash of keys pointing at one or more next states.\n\t\n\t function $$route$recognizer$$State(charSpec) {\n\t this.charSpec = charSpec;\n\t this.nextStates = [];\n\t this.charSpecs = {};\n\t this.regex = undefined;\n\t this.handlers = undefined;\n\t this.specificity = undefined;\n\t }\n\t\n\t $$route$recognizer$$State.prototype = {\n\t get: function(charSpec) {\n\t if (this.charSpecs[charSpec.validChars]) {\n\t return this.charSpecs[charSpec.validChars];\n\t }\n\t\n\t var nextStates = this.nextStates;\n\t\n\t for (var i=0; i<nextStates.length; i++) {\n\t var child = nextStates[i];\n\t\n\t var isEqual = child.charSpec.validChars === charSpec.validChars;\n\t isEqual = isEqual && child.charSpec.invalidChars === charSpec.invalidChars;\n\t\n\t if (isEqual) {\n\t this.charSpecs[charSpec.validChars] = child;\n\t return child;\n\t }\n\t }\n\t },\n\t\n\t put: function(charSpec) {\n\t var state;\n\t\n\t // If the character specification already exists in a child of the current\n\t // state, just return that state.\n\t if (state = this.get(charSpec)) { return state; }\n\t\n\t // Make a new state for the character spec\n\t state = new $$route$recognizer$$State(charSpec);\n\t\n\t // Insert the new state as a child of the current state\n\t this.nextStates.push(state);\n\t\n\t // If this character specification repeats, insert the new state as a child\n\t // of itself. Note that this will not trigger an infinite loop because each\n\t // transition during recognition consumes a character.\n\t if (charSpec.repeat) {\n\t state.nextStates.push(state);\n\t }\n\t\n\t // Return the new state\n\t return state;\n\t },\n\t\n\t // Find a list of child states matching the next character\n\t match: function(ch) {\n\t var nextStates = this.nextStates,\n\t child, charSpec, chars;\n\t\n\t var returned = [];\n\t\n\t for (var i=0; i<nextStates.length; i++) {\n\t child = nextStates[i];\n\t\n\t charSpec = child.charSpec;\n\t\n\t if (typeof (chars = charSpec.validChars) !== 'undefined') {\n\t if (chars.indexOf(ch) !== -1) { returned.push(child); }\n\t } else if (typeof (chars = charSpec.invalidChars) !== 'undefined') {\n\t if (chars.indexOf(ch) === -1) { returned.push(child); }\n\t }\n\t }\n\t\n\t return returned;\n\t }\n\t };\n\t\n\t // Sort the routes by specificity\n\t function $$route$recognizer$$sortSolutions(states) {\n\t return states.sort(function(a, b) {\n\t return b.specificity.val - a.specificity.val;\n\t });\n\t }\n\t\n\t function $$route$recognizer$$recognizeChar(states, ch) {\n\t var nextStates = [];\n\t\n\t for (var i=0, l=states.length; i<l; i++) {\n\t var state = states[i];\n\t\n\t nextStates = nextStates.concat(state.match(ch));\n\t }\n\t\n\t return nextStates;\n\t }\n\t\n\t var $$route$recognizer$$oCreate = Object.create || function(proto) {\n\t function F() {}\n\t F.prototype = proto;\n\t return new F();\n\t };\n\t\n\t function $$route$recognizer$$RecognizeResults(queryParams) {\n\t this.queryParams = queryParams || {};\n\t }\n\t $$route$recognizer$$RecognizeResults.prototype = $$route$recognizer$$oCreate({\n\t splice: Array.prototype.splice,\n\t slice: Array.prototype.slice,\n\t push: Array.prototype.push,\n\t length: 0,\n\t queryParams: null\n\t });\n\t\n\t function $$route$recognizer$$findHandler(state, path, queryParams) {\n\t var handlers = state.handlers, regex = state.regex;\n\t var captures = path.match(regex), currentCapture = 1;\n\t var result = new $$route$recognizer$$RecognizeResults(queryParams);\n\t\n\t result.length = handlers.length;\n\t\n\t for (var i=0; i<handlers.length; i++) {\n\t var handler = handlers[i], names = handler.names, params = {};\n\t\n\t for (var j=0; j<names.length; j++) {\n\t params[names[j]] = captures[currentCapture++];\n\t }\n\t\n\t result[i] = { handler: handler.handler, params: params, isDynamic: !!names.length };\n\t }\n\t\n\t return result;\n\t }\n\t\n\t function $$route$recognizer$$decodeQueryParamPart(part) {\n\t // http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1\n\t part = part.replace(/\\+/gm, '%20');\n\t var result;\n\t try {\n\t result = decodeURIComponent(part);\n\t } catch(error) {result = '';}\n\t return result;\n\t }\n\t\n\t // The main interface\n\t\n\t var $$route$recognizer$$RouteRecognizer = function() {\n\t this.rootState = new $$route$recognizer$$State();\n\t this.names = {};\n\t };\n\t\n\t\n\t $$route$recognizer$$RouteRecognizer.prototype = {\n\t add: function(routes, options) {\n\t var currentState = this.rootState, regex = \"^\",\n\t specificity = {},\n\t handlers = new Array(routes.length), allSegments = [], name;\n\t\n\t var isEmpty = true;\n\t\n\t for (var i=0; i<routes.length; i++) {\n\t var route = routes[i], names = [];\n\t\n\t var segments = $$route$recognizer$$parse(route.path, names, specificity);\n\t\n\t allSegments = allSegments.concat(segments);\n\t\n\t for (var j=0; j<segments.length; j++) {\n\t var segment = segments[j];\n\t\n\t if (segment instanceof $$route$recognizer$$EpsilonSegment) { continue; }\n\t\n\t isEmpty = false;\n\t\n\t // Add a \"/\" for the new segment\n\t currentState = currentState.put({ invalidChars: undefined, repeat: false, validChars: \"/\" });\n\t regex += \"/\";\n\t\n\t // Add a representation of the segment to the NFA and regex\n\t currentState = segment.eachChar(currentState);\n\t regex += segment.regex();\n\t }\n\t var handler = { handler: route.handler, names: names };\n\t handlers[i] = handler;\n\t }\n\t\n\t if (isEmpty) {\n\t currentState = currentState.put({ invalidChars: undefined, repeat: false, validChars: \"/\" });\n\t regex += \"/\";\n\t }\n\t\n\t currentState.handlers = handlers;\n\t currentState.regex = new RegExp(regex + \"$\");\n\t currentState.specificity = specificity;\n\t\n\t if (name = options && options.as) {\n\t this.names[name] = {\n\t segments: allSegments,\n\t handlers: handlers\n\t };\n\t }\n\t },\n\t\n\t handlersFor: function(name) {\n\t var route = this.names[name];\n\t\n\t if (!route) { throw new Error(\"There is no route named \" + name); }\n\t\n\t var result = new Array(route.handlers.length);\n\t\n\t for (var i=0; i<route.handlers.length; i++) {\n\t result[i] = route.handlers[i];\n\t }\n\t\n\t return result;\n\t },\n\t\n\t hasRoute: function(name) {\n\t return !!this.names[name];\n\t },\n\t\n\t generate: function(name, params) {\n\t var route = this.names[name], output = \"\";\n\t if (!route) { throw new Error(\"There is no route named \" + name); }\n\t\n\t var segments = route.segments;\n\t\n\t for (var i=0; i<segments.length; i++) {\n\t var segment = segments[i];\n\t\n\t if (segment instanceof $$route$recognizer$$EpsilonSegment) { continue; }\n\t\n\t output += \"/\";\n\t output += segment.generate(params);\n\t }\n\t\n\t if (output.charAt(0) !== '/') { output = '/' + output; }\n\t\n\t if (params && params.queryParams) {\n\t output += this.generateQueryString(params.queryParams, route.handlers);\n\t }\n\t\n\t return output;\n\t },\n\t\n\t generateQueryString: function(params, handlers) {\n\t var pairs = [];\n\t var keys = [];\n\t for(var key in params) {\n\t if (params.hasOwnProperty(key)) {\n\t keys.push(key);\n\t }\n\t }\n\t keys.sort();\n\t for (var i = 0; i < keys.length; i++) {\n\t key = keys[i];\n\t var value = params[key];\n\t if (value == null) {\n\t continue;\n\t }\n\t var pair = encodeURIComponent(key);\n\t if ($$route$recognizer$$isArray(value)) {\n\t for (var j = 0; j < value.length; j++) {\n\t var arrayPair = key + '[]' + '=' + encodeURIComponent(value[j]);\n\t pairs.push(arrayPair);\n\t }\n\t } else {\n\t pair += \"=\" + encodeURIComponent(value);\n\t pairs.push(pair);\n\t }\n\t }\n\t\n\t if (pairs.length === 0) { return ''; }\n\t\n\t return \"?\" + pairs.join(\"&\");\n\t },\n\t\n\t parseQueryString: function(queryString) {\n\t var pairs = queryString.split(\"&\"), queryParams = {};\n\t for(var i=0; i < pairs.length; i++) {\n\t var pair = pairs[i].split('='),\n\t key = $$route$recognizer$$decodeQueryParamPart(pair[0]),\n\t keyLength = key.length,\n\t isArray = false,\n\t value;\n\t if (pair.length === 1) {\n\t value = 'true';\n\t } else {\n\t //Handle arrays\n\t if (keyLength > 2 && key.slice(keyLength -2) === '[]') {\n\t isArray = true;\n\t key = key.slice(0, keyLength - 2);\n\t if(!queryParams[key]) {\n\t queryParams[key] = [];\n\t }\n\t }\n\t value = pair[1] ? $$route$recognizer$$decodeQueryParamPart(pair[1]) : '';\n\t }\n\t if (isArray) {\n\t queryParams[key].push(value);\n\t } else {\n\t queryParams[key] = value;\n\t }\n\t }\n\t return queryParams;\n\t },\n\t\n\t recognize: function(path) {\n\t var states = [ this.rootState ],\n\t pathLen, i, l, queryStart, queryParams = {},\n\t isSlashDropped = false;\n\t\n\t queryStart = path.indexOf('?');\n\t if (queryStart !== -1) {\n\t var queryString = path.substr(queryStart + 1, path.length);\n\t path = path.substr(0, queryStart);\n\t queryParams = this.parseQueryString(queryString);\n\t }\n\t\n\t path = decodeURI(path);\n\t\n\t if (path.charAt(0) !== \"/\") { path = \"/\" + path; }\n\t\n\t pathLen = path.length;\n\t if (pathLen > 1 && path.charAt(pathLen - 1) === \"/\") {\n\t path = path.substr(0, pathLen - 1);\n\t isSlashDropped = true;\n\t }\n\t\n\t for (i=0; i<path.length; i++) {\n\t states = $$route$recognizer$$recognizeChar(states, path.charAt(i));\n\t if (!states.length) { break; }\n\t }\n\t\n\t var solutions = [];\n\t for (i=0; i<states.length; i++) {\n\t if (states[i].handlers) { solutions.push(states[i]); }\n\t }\n\t\n\t states = $$route$recognizer$$sortSolutions(solutions);\n\t\n\t var state = solutions[0];\n\t\n\t if (state && state.handlers) {\n\t // if a trailing slash was dropped and a star segment is the last segment\n\t // specified, put the trailing slash back\n\t if (isSlashDropped && state.regex.source.slice(-5) === \"(.+)$\") {\n\t path = path + \"/\";\n\t }\n\t return $$route$recognizer$$findHandler(state, path, queryParams);\n\t }\n\t }\n\t };\n\t\n\t $$route$recognizer$$RouteRecognizer.prototype.map = $$route$recognizer$dsl$$default;\n\t\n\t $$route$recognizer$$RouteRecognizer.VERSION = '0.1.11';\n\t\n\t var $$route$recognizer$$default = $$route$recognizer$$RouteRecognizer;\n\t\n\t /* global define:true module:true window: true */\n\t if ( true && __nested_webpack_require_6218__(3)['amd']) {\n\t !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { return $$route$recognizer$$default; }.call(exports, __nested_webpack_require_6218__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t } else if (typeof module !== 'undefined' && module['exports']) {\n\t module['exports'] = $$route$recognizer$$default;\n\t } else if (typeof this !== 'undefined') {\n\t this['RouteRecognizer'] = $$route$recognizer$$default;\n\t }\n\t}).call(this);\n\t\n\t//# sourceMappingURL=route-recognizer.js.map\n\t/* WEBPACK VAR INJECTION */}.call(exports, __nested_webpack_require_6218__(2)(module)))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(module) {\r\n\t\tif(!module.webpackPolyfill) {\r\n\t\t\tmodule.deprecate = function() {};\r\n\t\t\tmodule.paths = [];\r\n\t\t\t// module.parent = undefined by default\r\n\t\t\tmodule.children = [];\r\n\t\t\tmodule.webpackPolyfill = 1;\r\n\t\t}\r\n\t\treturn module;\r\n\t}\r\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }\n/******/ ])\n});\n;\n//# sourceMappingURL=router.js.map\n\n/***/ }),\n\n/***/ \"./src/FilterBuilders/advancedFilterBuilder.ts\":\n/*!*****************************************************!*\\\n !*** ./src/FilterBuilders/advancedFilterBuilder.ts ***!\n \\*****************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.AdvancedFilterBuilder = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar filterBuilder_1 = __webpack_require__(/*! ./filterBuilder */ \"./src/FilterBuilders/filterBuilder.ts\");\r\n/**\r\n * Power BI Advanced filter builder component\r\n *\r\n * @export\r\n * @class AdvancedFilterBuilder\r\n * @extends {FilterBuilder}\r\n */\r\nvar AdvancedFilterBuilder = /** @class */ (function (_super) {\r\n __extends(AdvancedFilterBuilder, _super);\r\n function AdvancedFilterBuilder() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.conditions = [];\r\n return _this;\r\n }\r\n /**\r\n * Sets And as logical operator for Advanced filter\r\n *\r\n * ```javascript\r\n *\r\n * const advancedFilterBuilder = new AdvancedFilterBuilder().and();\r\n * ```\r\n *\r\n * @returns {AdvancedFilterBuilder}\r\n */\r\n AdvancedFilterBuilder.prototype.and = function () {\r\n this.logicalOperator = \"And\";\r\n return this;\r\n };\r\n /**\r\n * Sets Or as logical operator for Advanced filter\r\n *\r\n * ```javascript\r\n *\r\n * const advancedFilterBuilder = new AdvancedFilterBuilder().or();\r\n * ```\r\n *\r\n * @returns {AdvancedFilterBuilder}\r\n */\r\n AdvancedFilterBuilder.prototype.or = function () {\r\n this.logicalOperator = \"Or\";\r\n return this;\r\n };\r\n /**\r\n * Adds a condition in Advanced filter\r\n *\r\n * ```javascript\r\n *\r\n * // Add two conditions\r\n * const advancedFilterBuilder = new AdvancedFilterBuilder().addCondition(\"Contains\", \"Wash\").addCondition(\"Contains\", \"Park\");\r\n * ```\r\n *\r\n * @returns {AdvancedFilterBuilder}\r\n */\r\n AdvancedFilterBuilder.prototype.addCondition = function (operator, value) {\r\n var condition = {\r\n operator: operator,\r\n value: value\r\n };\r\n this.conditions.push(condition);\r\n return this;\r\n };\r\n /**\r\n * Creates Advanced filter\r\n *\r\n * ```javascript\r\n *\r\n * const advancedFilterBuilder = new AdvancedFilterBuilder().build();\r\n * ```\r\n *\r\n * @returns {AdvancedFilter}\r\n */\r\n AdvancedFilterBuilder.prototype.build = function () {\r\n var advancedFilter = new powerbi_models_1.AdvancedFilter(this.target, this.logicalOperator, this.conditions);\r\n return advancedFilter;\r\n };\r\n return AdvancedFilterBuilder;\r\n}(filterBuilder_1.FilterBuilder));\r\nexports.AdvancedFilterBuilder = AdvancedFilterBuilder;\r\n\n\n/***/ }),\n\n/***/ \"./src/FilterBuilders/basicFilterBuilder.ts\":\n/*!**************************************************!*\\\n !*** ./src/FilterBuilders/basicFilterBuilder.ts ***!\n \\**************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.BasicFilterBuilder = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar filterBuilder_1 = __webpack_require__(/*! ./filterBuilder */ \"./src/FilterBuilders/filterBuilder.ts\");\r\n/**\r\n * Power BI Basic filter builder component\r\n *\r\n * @export\r\n * @class BasicFilterBuilder\r\n * @extends {FilterBuilder}\r\n */\r\nvar BasicFilterBuilder = /** @class */ (function (_super) {\r\n __extends(BasicFilterBuilder, _super);\r\n function BasicFilterBuilder() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.isRequireSingleSelection = false;\r\n return _this;\r\n }\r\n /**\r\n * Sets In as operator for Basic filter\r\n *\r\n * ```javascript\r\n *\r\n * const basicFilterBuilder = new BasicFilterBuilder().in([values]);\r\n * ```\r\n *\r\n * @returns {BasicFilterBuilder}\r\n */\r\n BasicFilterBuilder.prototype.in = function (values) {\r\n this.operator = \"In\";\r\n this.values = values;\r\n return this;\r\n };\r\n /**\r\n * Sets NotIn as operator for Basic filter\r\n *\r\n * ```javascript\r\n *\r\n * const basicFilterBuilder = new BasicFilterBuilder().notIn([values]);\r\n * ```\r\n *\r\n * @returns {BasicFilterBuilder}\r\n */\r\n BasicFilterBuilder.prototype.notIn = function (values) {\r\n this.operator = \"NotIn\";\r\n this.values = values;\r\n return this;\r\n };\r\n /**\r\n * Sets All as operator for Basic filter\r\n *\r\n * ```javascript\r\n *\r\n * const basicFilterBuilder = new BasicFilterBuilder().all();\r\n * ```\r\n *\r\n * @returns {BasicFilterBuilder}\r\n */\r\n BasicFilterBuilder.prototype.all = function () {\r\n this.operator = \"All\";\r\n this.values = [];\r\n return this;\r\n };\r\n /**\r\n * Sets required single selection property for Basic filter\r\n *\r\n * ```javascript\r\n *\r\n * const basicFilterBuilder = new BasicFilterBuilder().requireSingleSelection(isRequireSingleSelection);\r\n * ```\r\n *\r\n * @returns {BasicFilterBuilder}\r\n */\r\n BasicFilterBuilder.prototype.requireSingleSelection = function (isRequireSingleSelection) {\r\n if (isRequireSingleSelection === void 0) { isRequireSingleSelection = false; }\r\n this.isRequireSingleSelection = isRequireSingleSelection;\r\n return this;\r\n };\r\n /**\r\n * Creates Basic filter\r\n *\r\n * ```javascript\r\n *\r\n * const basicFilterBuilder = new BasicFilterBuilder().build();\r\n * ```\r\n *\r\n * @returns {BasicFilter}\r\n */\r\n BasicFilterBuilder.prototype.build = function () {\r\n var basicFilter = new powerbi_models_1.BasicFilter(this.target, this.operator, this.values);\r\n basicFilter.requireSingleSelection = this.isRequireSingleSelection;\r\n return basicFilter;\r\n };\r\n return BasicFilterBuilder;\r\n}(filterBuilder_1.FilterBuilder));\r\nexports.BasicFilterBuilder = BasicFilterBuilder;\r\n\n\n/***/ }),\n\n/***/ \"./src/FilterBuilders/filterBuilder.ts\":\n/*!*********************************************!*\\\n !*** ./src/FilterBuilders/filterBuilder.ts ***!\n \\*********************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.FilterBuilder = void 0;\r\n/**\r\n * Generic filter builder for BasicFilter, AdvancedFilter, RelativeDate, RelativeTime and TopN\r\n *\r\n * @class\r\n */\r\nvar FilterBuilder = /** @class */ (function () {\r\n function FilterBuilder() {\r\n }\r\n /**\r\n * Sets target property for filter with target object\r\n *\r\n * ```javascript\r\n * const target = {\r\n * table: 'table1',\r\n * column: 'column1'\r\n * };\r\n *\r\n * const filterBuilder = new FilterBuilder().withTargetObject(target);\r\n * ```\r\n *\r\n * @returns {FilterBuilder}\r\n */\r\n FilterBuilder.prototype.withTargetObject = function (target) {\r\n this.target = target;\r\n return this;\r\n };\r\n /**\r\n * Sets target property for filter with column target object\r\n *\r\n * ```\r\n * const filterBuilder = new FilterBuilder().withColumnTarget(tableName, columnName);\r\n * ```\r\n *\r\n * @returns {FilterBuilder}\r\n */\r\n FilterBuilder.prototype.withColumnTarget = function (tableName, columnName) {\r\n this.target = { table: tableName, column: columnName };\r\n return this;\r\n };\r\n /**\r\n * Sets target property for filter with measure target object\r\n *\r\n * ```\r\n * const filterBuilder = new FilterBuilder().withMeasureTarget(tableName, measure);\r\n * ```\r\n *\r\n * @returns {FilterBuilder}\r\n */\r\n FilterBuilder.prototype.withMeasureTarget = function (tableName, measure) {\r\n this.target = { table: tableName, measure: measure };\r\n return this;\r\n };\r\n /**\r\n * Sets target property for filter with hierarchy level target object\r\n *\r\n * ```\r\n * const filterBuilder = new FilterBuilder().withHierarchyLevelTarget(tableName, hierarchy, hierarchyLevel);\r\n * ```\r\n *\r\n * @returns {FilterBuilder}\r\n */\r\n FilterBuilder.prototype.withHierarchyLevelTarget = function (tableName, hierarchy, hierarchyLevel) {\r\n this.target = { table: tableName, hierarchy: hierarchy, hierarchyLevel: hierarchyLevel };\r\n return this;\r\n };\r\n /**\r\n * Sets target property for filter with column aggregation target object\r\n *\r\n * ```\r\n * const filterBuilder = new FilterBuilder().withColumnAggregation(tableName, columnName, aggregationFunction);\r\n * ```\r\n *\r\n * @returns {FilterBuilder}\r\n */\r\n FilterBuilder.prototype.withColumnAggregation = function (tableName, columnName, aggregationFunction) {\r\n this.target = { table: tableName, column: columnName, aggregationFunction: aggregationFunction };\r\n return this;\r\n };\r\n /**\r\n * Sets target property for filter with hierarchy level aggregation target object\r\n *\r\n * ```\r\n * const filterBuilder = new FilterBuilder().withHierarchyLevelAggregationTarget(tableName, hierarchy, hierarchyLevel, aggregationFunction);\r\n * ```\r\n *\r\n * @returns {FilterBuilder}\r\n */\r\n FilterBuilder.prototype.withHierarchyLevelAggregationTarget = function (tableName, hierarchy, hierarchyLevel, aggregationFunction) {\r\n this.target = { table: tableName, hierarchy: hierarchy, hierarchyLevel: hierarchyLevel, aggregationFunction: aggregationFunction };\r\n return this;\r\n };\r\n return FilterBuilder;\r\n}());\r\nexports.FilterBuilder = FilterBuilder;\r\n\n\n/***/ }),\n\n/***/ \"./src/FilterBuilders/index.ts\":\n/*!*************************************!*\\\n !*** ./src/FilterBuilders/index.ts ***!\n \\*************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.RelativeTimeFilterBuilder = exports.RelativeDateFilterBuilder = exports.TopNFilterBuilder = exports.AdvancedFilterBuilder = exports.BasicFilterBuilder = void 0;\r\nvar basicFilterBuilder_1 = __webpack_require__(/*! ./basicFilterBuilder */ \"./src/FilterBuilders/basicFilterBuilder.ts\");\r\nObject.defineProperty(exports, \"BasicFilterBuilder\", ({ enumerable: true, get: function () { return basicFilterBuilder_1.BasicFilterBuilder; } }));\r\nvar advancedFilterBuilder_1 = __webpack_require__(/*! ./advancedFilterBuilder */ \"./src/FilterBuilders/advancedFilterBuilder.ts\");\r\nObject.defineProperty(exports, \"AdvancedFilterBuilder\", ({ enumerable: true, get: function () { return advancedFilterBuilder_1.AdvancedFilterBuilder; } }));\r\nvar topNFilterBuilder_1 = __webpack_require__(/*! ./topNFilterBuilder */ \"./src/FilterBuilders/topNFilterBuilder.ts\");\r\nObject.defineProperty(exports, \"TopNFilterBuilder\", ({ enumerable: true, get: function () { return topNFilterBuilder_1.TopNFilterBuilder; } }));\r\nvar relativeDateFilterBuilder_1 = __webpack_require__(/*! ./relativeDateFilterBuilder */ \"./src/FilterBuilders/relativeDateFilterBuilder.ts\");\r\nObject.defineProperty(exports, \"RelativeDateFilterBuilder\", ({ enumerable: true, get: function () { return relativeDateFilterBuilder_1.RelativeDateFilterBuilder; } }));\r\nvar relativeTimeFilterBuilder_1 = __webpack_require__(/*! ./relativeTimeFilterBuilder */ \"./src/FilterBuilders/relativeTimeFilterBuilder.ts\");\r\nObject.defineProperty(exports, \"RelativeTimeFilterBuilder\", ({ enumerable: true, get: function () { return relativeTimeFilterBuilder_1.RelativeTimeFilterBuilder; } }));\r\n\n\n/***/ }),\n\n/***/ \"./src/FilterBuilders/relativeDateFilterBuilder.ts\":\n/*!*********************************************************!*\\\n !*** ./src/FilterBuilders/relativeDateFilterBuilder.ts ***!\n \\*********************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.RelativeDateFilterBuilder = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar filterBuilder_1 = __webpack_require__(/*! ./filterBuilder */ \"./src/FilterBuilders/filterBuilder.ts\");\r\n/**\r\n * Power BI Relative Date filter builder component\r\n *\r\n * @export\r\n * @class RelativeDateFilterBuilder\r\n * @extends {FilterBuilder}\r\n */\r\nvar RelativeDateFilterBuilder = /** @class */ (function (_super) {\r\n __extends(RelativeDateFilterBuilder, _super);\r\n function RelativeDateFilterBuilder() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.isTodayIncluded = true;\r\n return _this;\r\n }\r\n /**\r\n * Sets inLast as operator for Relative Date filter\r\n *\r\n * ```javascript\r\n *\r\n * const relativeDateFilterBuilder = new RelativeDateFilterBuilder().inLast(timeUnitsCount, timeUnitType);\r\n * ```\r\n *\r\n * @param {number} timeUnitsCount - The amount of time units\r\n * @param {RelativeDateFilterTimeUnit} timeUnitType - Defines the unit of time the filter is using\r\n * @returns {RelativeDateFilterBuilder}\r\n */\r\n RelativeDateFilterBuilder.prototype.inLast = function (timeUnitsCount, timeUnitType) {\r\n this.operator = powerbi_models_1.RelativeDateOperators.InLast;\r\n this.timeUnitsCount = timeUnitsCount;\r\n this.timeUnitType = timeUnitType;\r\n return this;\r\n };\r\n /**\r\n * Sets inThis as operator for Relative Date filter\r\n *\r\n * ```javascript\r\n *\r\n * const relativeDateFilterBuilder = new RelativeDateFilterBuilder().inThis(timeUnitsCount, timeUnitType);\r\n * ```\r\n *\r\n * @param {number} timeUnitsCount - The amount of time units\r\n * @param {RelativeDateFilterTimeUnit} timeUnitType - Defines the unit of time the filter is using\r\n * @returns {RelativeDateFilterBuilder}\r\n */\r\n RelativeDateFilterBuilder.prototype.inThis = function (timeUnitsCount, timeUnitType) {\r\n this.operator = powerbi_models_1.RelativeDateOperators.InThis;\r\n this.timeUnitsCount = timeUnitsCount;\r\n this.timeUnitType = timeUnitType;\r\n return this;\r\n };\r\n /**\r\n * Sets inNext as operator for Relative Date filter\r\n *\r\n * ```javascript\r\n *\r\n * const relativeDateFilterBuilder = new RelativeDateFilterBuilder().inNext(timeUnitsCount, timeUnitType);\r\n * ```\r\n *\r\n * @param {number} timeUnitsCount - The amount of time units\r\n * @param {RelativeDateFilterTimeUnit} timeUnitType - Defines the unit of time the filter is using\r\n * @returns {RelativeDateFilterBuilder}\r\n */\r\n RelativeDateFilterBuilder.prototype.inNext = function (timeUnitsCount, timeUnitType) {\r\n this.operator = powerbi_models_1.RelativeDateOperators.InNext;\r\n this.timeUnitsCount = timeUnitsCount;\r\n this.timeUnitType = timeUnitType;\r\n return this;\r\n };\r\n /**\r\n * Sets includeToday for Relative Date filter\r\n *\r\n * ```javascript\r\n *\r\n * const relativeDateFilterBuilder = new RelativeDateFilterBuilder().includeToday(includeToday);\r\n * ```\r\n *\r\n * @param {boolean} includeToday - Denotes if today is included or not\r\n * @returns {RelativeDateFilterBuilder}\r\n */\r\n RelativeDateFilterBuilder.prototype.includeToday = function (includeToday) {\r\n this.isTodayIncluded = includeToday;\r\n return this;\r\n };\r\n /**\r\n * Creates Relative Date filter\r\n *\r\n * ```javascript\r\n *\r\n * const relativeDateFilterBuilder = new RelativeDateFilterBuilder().build();\r\n * ```\r\n *\r\n * @returns {RelativeDateFilter}\r\n */\r\n RelativeDateFilterBuilder.prototype.build = function () {\r\n var relativeDateFilter = new powerbi_models_1.RelativeDateFilter(this.target, this.operator, this.timeUnitsCount, this.timeUnitType, this.isTodayIncluded);\r\n return relativeDateFilter;\r\n };\r\n return RelativeDateFilterBuilder;\r\n}(filterBuilder_1.FilterBuilder));\r\nexports.RelativeDateFilterBuilder = RelativeDateFilterBuilder;\r\n\n\n/***/ }),\n\n/***/ \"./src/FilterBuilders/relativeTimeFilterBuilder.ts\":\n/*!*********************************************************!*\\\n !*** ./src/FilterBuilders/relativeTimeFilterBuilder.ts ***!\n \\*********************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.RelativeTimeFilterBuilder = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar filterBuilder_1 = __webpack_require__(/*! ./filterBuilder */ \"./src/FilterBuilders/filterBuilder.ts\");\r\n/**\r\n * Power BI Relative Time filter builder component\r\n *\r\n * @export\r\n * @class RelativeTimeFilterBuilder\r\n * @extends {FilterBuilder}\r\n */\r\nvar RelativeTimeFilterBuilder = /** @class */ (function (_super) {\r\n __extends(RelativeTimeFilterBuilder, _super);\r\n function RelativeTimeFilterBuilder() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Sets inLast as operator for Relative Time filter\r\n *\r\n * ```javascript\r\n *\r\n * const relativeTimeFilterBuilder = new RelativeTimeFilterBuilder().inLast(timeUnitsCount, timeUnitType);\r\n * ```\r\n *\r\n * @param {number} timeUnitsCount - The amount of time units\r\n * @param {RelativeDateFilterTimeUnit} timeUnitType - Defines the unit of time the filter is using\r\n * @returns {RelativeTimeFilterBuilder}\r\n */\r\n RelativeTimeFilterBuilder.prototype.inLast = function (timeUnitsCount, timeUnitType) {\r\n this.operator = powerbi_models_1.RelativeDateOperators.InLast;\r\n this.timeUnitsCount = timeUnitsCount;\r\n this.timeUnitType = timeUnitType;\r\n return this;\r\n };\r\n /**\r\n * Sets inThis as operator for Relative Time filter\r\n *\r\n * ```javascript\r\n *\r\n * const relativeTimeFilterBuilder = new RelativeTimeFilterBuilder().inThis(timeUnitsCount, timeUnitType);\r\n * ```\r\n *\r\n * @param {number} timeUnitsCount - The amount of time units\r\n * @param {RelativeDateFilterTimeUnit} timeUnitType - Defines the unit of time the filter is using\r\n * @returns {RelativeTimeFilterBuilder}\r\n */\r\n RelativeTimeFilterBuilder.prototype.inThis = function (timeUnitsCount, timeUnitType) {\r\n this.operator = powerbi_models_1.RelativeDateOperators.InThis;\r\n this.timeUnitsCount = timeUnitsCount;\r\n this.timeUnitType = timeUnitType;\r\n return this;\r\n };\r\n /**\r\n * Sets inNext as operator for Relative Time filter\r\n *\r\n * ```javascript\r\n *\r\n * const relativeTimeFilterBuilder = new RelativeTimeFilterBuilder().inNext(timeUnitsCount, timeUnitType);\r\n * ```\r\n *\r\n * @param {number} timeUnitsCount - The amount of time units\r\n * @param {RelativeDateFilterTimeUnit} timeUnitType - Defines the unit of time the filter is using\r\n * @returns {RelativeTimeFilterBuilder}\r\n */\r\n RelativeTimeFilterBuilder.prototype.inNext = function (timeUnitsCount, timeUnitType) {\r\n this.operator = powerbi_models_1.RelativeDateOperators.InNext;\r\n this.timeUnitsCount = timeUnitsCount;\r\n this.timeUnitType = timeUnitType;\r\n return this;\r\n };\r\n /**\r\n * Creates Relative Time filter\r\n *\r\n * ```javascript\r\n *\r\n * const relativeTimeFilterBuilder = new RelativeTimeFilterBuilder().build();\r\n * ```\r\n *\r\n * @returns {RelativeTimeFilter}\r\n */\r\n RelativeTimeFilterBuilder.prototype.build = function () {\r\n var relativeTimeFilter = new powerbi_models_1.RelativeTimeFilter(this.target, this.operator, this.timeUnitsCount, this.timeUnitType);\r\n return relativeTimeFilter;\r\n };\r\n return RelativeTimeFilterBuilder;\r\n}(filterBuilder_1.FilterBuilder));\r\nexports.RelativeTimeFilterBuilder = RelativeTimeFilterBuilder;\r\n\n\n/***/ }),\n\n/***/ \"./src/FilterBuilders/topNFilterBuilder.ts\":\n/*!*************************************************!*\\\n !*** ./src/FilterBuilders/topNFilterBuilder.ts ***!\n \\*************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.TopNFilterBuilder = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar filterBuilder_1 = __webpack_require__(/*! ./filterBuilder */ \"./src/FilterBuilders/filterBuilder.ts\");\r\n/**\r\n * Power BI Top N filter builder component\r\n *\r\n * @export\r\n * @class TopNFilterBuilder\r\n * @extends {FilterBuilder}\r\n */\r\nvar TopNFilterBuilder = /** @class */ (function (_super) {\r\n __extends(TopNFilterBuilder, _super);\r\n function TopNFilterBuilder() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Sets Top as operator for Top N filter\r\n *\r\n * ```javascript\r\n *\r\n * const topNFilterBuilder = new TopNFilterBuilder().top(itemCount);\r\n * ```\r\n *\r\n * @returns {TopNFilterBuilder}\r\n */\r\n TopNFilterBuilder.prototype.top = function (itemCount) {\r\n this.operator = \"Top\";\r\n this.itemCount = itemCount;\r\n return this;\r\n };\r\n /**\r\n * Sets Bottom as operator for Top N filter\r\n *\r\n * ```javascript\r\n *\r\n * const topNFilterBuilder = new TopNFilterBuilder().bottom(itemCount);\r\n * ```\r\n *\r\n * @returns {TopNFilterBuilder}\r\n */\r\n TopNFilterBuilder.prototype.bottom = function (itemCount) {\r\n this.operator = \"Bottom\";\r\n this.itemCount = itemCount;\r\n return this;\r\n };\r\n /**\r\n * Sets order by for Top N filter\r\n *\r\n * ```javascript\r\n *\r\n * const topNFilterBuilder = new TopNFilterBuilder().orderByTarget(target);\r\n * ```\r\n *\r\n * @returns {TopNFilterBuilder}\r\n */\r\n TopNFilterBuilder.prototype.orderByTarget = function (target) {\r\n this.orderByTargetValue = target;\r\n return this;\r\n };\r\n /**\r\n * Creates Top N filter\r\n *\r\n * ```javascript\r\n *\r\n * const topNFilterBuilder = new TopNFilterBuilder().build();\r\n * ```\r\n *\r\n * @returns {TopNFilter}\r\n */\r\n TopNFilterBuilder.prototype.build = function () {\r\n var topNFilter = new powerbi_models_1.TopNFilter(this.target, this.operator, this.itemCount, this.orderByTargetValue);\r\n return topNFilter;\r\n };\r\n return TopNFilterBuilder;\r\n}(filterBuilder_1.FilterBuilder));\r\nexports.TopNFilterBuilder = TopNFilterBuilder;\r\n\n\n/***/ }),\n\n/***/ \"./src/bookmarksManager.ts\":\n/*!*********************************!*\\\n !*** ./src/bookmarksManager.ts ***!\n \\*********************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.BookmarksManager = void 0;\r\nvar util_1 = __webpack_require__(/*! ./util */ \"./src/util.ts\");\r\nvar errors_1 = __webpack_require__(/*! ./errors */ \"./src/errors.ts\");\r\n/**\r\n * Manages report bookmarks.\r\n *\r\n * @export\r\n * @class BookmarksManager\r\n * @implements {IBookmarksManager}\r\n */\r\nvar BookmarksManager = /** @class */ (function () {\r\n /**\r\n * @hidden\r\n */\r\n function BookmarksManager(service, config, iframe) {\r\n this.service = service;\r\n this.config = config;\r\n this.iframe = iframe;\r\n }\r\n /**\r\n * Gets bookmarks that are defined in the report.\r\n *\r\n * ```javascript\r\n * // Gets bookmarks that are defined in the report\r\n * bookmarksManager.getBookmarks()\r\n * .then(bookmarks => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @returns {Promise<IReportBookmark[]>}\r\n */\r\n BookmarksManager.prototype.getBookmarks = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.get(\"/report/bookmarks\", { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_1 = _a.sent();\r\n throw response_1.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Apply bookmark by name.\r\n *\r\n * ```javascript\r\n * bookmarksManager.apply(bookmarkName)\r\n * ```\r\n *\r\n * @param {string} bookmarkName The name of the bookmark to be applied\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n BookmarksManager.prototype.apply = function (bookmarkName) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var request, response_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n request = {\r\n name: bookmarkName\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post(\"/report/bookmarks/applyByName\", request, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_2 = _a.sent();\r\n throw response_2.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Play bookmarks: Enter or Exit bookmarks presentation mode.\r\n *\r\n * ```javascript\r\n * // Enter presentation mode.\r\n * bookmarksManager.play(BookmarksPlayMode.Presentation)\r\n * ```\r\n *\r\n * @param {BookmarksPlayMode} playMode Play mode can be either `Presentation` or `Off`\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n BookmarksManager.prototype.play = function (playMode) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var playBookmarkRequest, response_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n playBookmarkRequest = {\r\n playMode: playMode\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post(\"/report/bookmarks/play\", playBookmarkRequest, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_3 = _a.sent();\r\n throw response_3.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Capture bookmark from current state.\r\n *\r\n * ```javascript\r\n * bookmarksManager.capture(options)\r\n * ```\r\n *\r\n * @param {ICaptureBookmarkOptions} [options] Options for bookmark capturing\r\n * @returns {Promise<IReportBookmark>}\r\n */\r\n BookmarksManager.prototype.capture = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var request, response, response_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n request = {\r\n options: options || {}\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post(\"/report/bookmarks/capture\", request, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_4 = _a.sent();\r\n throw response_4.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Apply bookmark state.\r\n *\r\n * ```javascript\r\n * bookmarksManager.applyState(bookmarkState)\r\n * ```\r\n *\r\n * @param {string} state A base64 bookmark state to be applied\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n BookmarksManager.prototype.applyState = function (state) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var request, response_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n request = {\r\n state: state\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post(\"/report/bookmarks/applyState\", request, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_5 = _a.sent();\r\n throw response_5.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return BookmarksManager;\r\n}());\r\nexports.BookmarksManager = BookmarksManager;\r\n\n\n/***/ }),\n\n/***/ \"./src/config.ts\":\n/*!***********************!*\\\n !*** ./src/config.ts ***!\n \\***********************/\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/** @ignore */ /** */\r\nvar config = {\r\n version: '2.23.1',\r\n type: 'js'\r\n};\r\nexports[\"default\"] = config;\r\n\n\n/***/ }),\n\n/***/ \"./src/create.ts\":\n/*!***********************!*\\\n !*** ./src/create.ts ***!\n \\***********************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Create = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar embed_1 = __webpack_require__(/*! ./embed */ \"./src/embed.ts\");\r\nvar utils = __webpack_require__(/*! ./util */ \"./src/util.ts\");\r\n/**\r\n * A Power BI Report creator component\r\n *\r\n * @export\r\n * @class Create\r\n * @extends {Embed}\r\n */\r\nvar Create = /** @class */ (function (_super) {\r\n __extends(Create, _super);\r\n /*\r\n * @hidden\r\n */\r\n function Create(service, element, config, phasedRender, isBootstrap) {\r\n return _super.call(this, service, element, config, /* iframe */ undefined, phasedRender, isBootstrap) || this;\r\n }\r\n /**\r\n * Gets the dataset ID from the first available location: createConfig or embed url.\r\n *\r\n * @returns {string}\r\n */\r\n Create.prototype.getId = function () {\r\n var datasetId = (this.createConfig && this.createConfig.datasetId) ? this.createConfig.datasetId : Create.findIdFromEmbedUrl(this.config.embedUrl);\r\n if (typeof datasetId !== 'string' || datasetId.length === 0) {\r\n throw new Error('Dataset id is required, but it was not found. You must provide an id either as part of embed configuration.');\r\n }\r\n return datasetId;\r\n };\r\n /**\r\n * Validate create report configuration.\r\n */\r\n Create.prototype.validate = function (config) {\r\n return (0, powerbi_models_1.validateCreateReport)(config);\r\n };\r\n /**\r\n * Handle config changes.\r\n *\r\n * @hidden\r\n * @returns {void}\r\n */\r\n Create.prototype.configChanged = function (isBootstrap) {\r\n if (isBootstrap) {\r\n return;\r\n }\r\n var config = this.config;\r\n this.createConfig = {\r\n accessToken: config.accessToken,\r\n datasetId: config.datasetId || this.getId(),\r\n groupId: config.groupId,\r\n settings: config.settings,\r\n tokenType: config.tokenType,\r\n theme: config.theme\r\n };\r\n };\r\n /**\r\n * @hidden\r\n * @returns {string}\r\n */\r\n Create.prototype.getDefaultEmbedUrlEndpoint = function () {\r\n return \"reportEmbed\";\r\n };\r\n /**\r\n * checks if the report is saved.\r\n *\r\n * ```javascript\r\n * report.isSaved()\r\n * ```\r\n *\r\n * @returns {Promise<boolean>}\r\n */\r\n Create.prototype.isSaved = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, utils.isSavedInternal(this.service.hpm, this.config.uniqueId, this.iframe.contentWindow)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Adds the ability to get datasetId from url.\r\n * (e.g. http://embedded.powerbi.com/appTokenReportEmbed?datasetId=854846ed-2106-4dc2-bc58-eb77533bf2f1).\r\n *\r\n * By extracting the ID we can ensure that the ID is always explicitly provided as part of the create configuration.\r\n *\r\n * @static\r\n * @param {string} url\r\n * @returns {string}\r\n * @hidden\r\n */\r\n Create.findIdFromEmbedUrl = function (url) {\r\n var datasetIdRegEx = /datasetId=\"?([^&]+)\"?/;\r\n var datasetIdMatch = url.match(datasetIdRegEx);\r\n var datasetId;\r\n if (datasetIdMatch) {\r\n datasetId = datasetIdMatch[1];\r\n }\r\n return datasetId;\r\n };\r\n /**\r\n * Sends create configuration data.\r\n *\r\n * ```javascript\r\n * create ({\r\n * datasetId: '5dac7a4a-4452-46b3-99f6-a25915e0fe55',\r\n * accessToken: 'eyJ0eXA ... TaE2rTSbmg',\r\n * ```\r\n *\r\n * @hidden\r\n * @returns {Promise<void>}\r\n */\r\n Create.prototype.create = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var errors, headers, response, response_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n errors = (0, powerbi_models_1.validateCreateReport)(this.createConfig);\r\n if (errors) {\r\n throw errors;\r\n }\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n headers = {\r\n uid: this.config.uniqueId,\r\n sdkSessionId: this.service.getSdkSessionId()\r\n };\r\n if (!!((_a = this.eventHooks) === null || _a === void 0 ? void 0 : _a.accessTokenProvider)) {\r\n headers.tokenProviderSupplied = true;\r\n }\r\n return [4 /*yield*/, this.service.hpm.post(\"/report/create\", this.createConfig, headers, this.iframe.contentWindow)];\r\n case 2:\r\n response = _b.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_1 = _b.sent();\r\n throw response_1.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return Create;\r\n}(embed_1.Embed));\r\nexports.Create = Create;\r\n\n\n/***/ }),\n\n/***/ \"./src/dashboard.ts\":\n/*!**************************!*\\\n !*** ./src/dashboard.ts ***!\n \\**************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Dashboard = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar embed_1 = __webpack_require__(/*! ./embed */ \"./src/embed.ts\");\r\n/**\r\n * A Power BI Dashboard embed component\r\n *\r\n * @export\r\n * @class Dashboard\r\n * @extends {Embed}\r\n * @implements {IDashboardNode}\r\n */\r\nvar Dashboard = /** @class */ (function (_super) {\r\n __extends(Dashboard, _super);\r\n /**\r\n * Creates an instance of a Power BI Dashboard.\r\n *\r\n * @param {service.Service} service\r\n * @hidden\r\n * @param {HTMLElement} element\r\n */\r\n function Dashboard(service, element, config, phasedRender, isBootstrap) {\r\n var _this = _super.call(this, service, element, config, /* iframe */ undefined, phasedRender, isBootstrap) || this;\r\n _this.loadPath = \"/dashboard/load\";\r\n _this.phasedLoadPath = \"/dashboard/prepare\";\r\n Array.prototype.push.apply(_this.allowedEvents, Dashboard.allowedEvents);\r\n return _this;\r\n }\r\n /**\r\n * This adds backwards compatibility for older config which used the dashboardId query param to specify dashboard id.\r\n * E.g. https://powerbi-df.analysis-df.windows.net/dashboardEmbedHost?dashboardId=e9363c62-edb6-4eac-92d3-2199c5ca2a9e\r\n *\r\n * By extracting the id we can ensure id is always explicitly provided as part of the load configuration.\r\n *\r\n * @hidden\r\n * @static\r\n * @param {string} url\r\n * @returns {string}\r\n */\r\n Dashboard.findIdFromEmbedUrl = function (url) {\r\n var dashboardIdRegEx = /dashboardId=\"?([^&]+)\"?/;\r\n var dashboardIdMatch = url.match(dashboardIdRegEx);\r\n var dashboardId;\r\n if (dashboardIdMatch) {\r\n dashboardId = dashboardIdMatch[1];\r\n }\r\n return dashboardId;\r\n };\r\n /**\r\n * Get dashboard id from first available location: options, attribute, embed url.\r\n *\r\n * @returns {string}\r\n */\r\n Dashboard.prototype.getId = function () {\r\n var config = this.config;\r\n var dashboardId = config.id || this.element.getAttribute(Dashboard.dashboardIdAttribute) || Dashboard.findIdFromEmbedUrl(config.embedUrl);\r\n if (typeof dashboardId !== 'string' || dashboardId.length === 0) {\r\n throw new Error(\"Dashboard id is required, but it was not found. You must provide an id either as part of embed configuration or as attribute '\".concat(Dashboard.dashboardIdAttribute, \"'.\"));\r\n }\r\n return dashboardId;\r\n };\r\n /**\r\n * Validate load configuration.\r\n *\r\n * @hidden\r\n */\r\n Dashboard.prototype.validate = function (baseConfig) {\r\n var config = baseConfig;\r\n var error = (0, powerbi_models_1.validateDashboardLoad)(config);\r\n return error ? error : this.validatePageView(config.pageView);\r\n };\r\n /**\r\n * Handle config changes.\r\n *\r\n * @hidden\r\n * @returns {void}\r\n */\r\n Dashboard.prototype.configChanged = function (isBootstrap) {\r\n if (isBootstrap) {\r\n return;\r\n }\r\n // Populate dashboard id into config object.\r\n this.config.id = this.getId();\r\n };\r\n /**\r\n * @hidden\r\n * @returns {string}\r\n */\r\n Dashboard.prototype.getDefaultEmbedUrlEndpoint = function () {\r\n return \"dashboardEmbed\";\r\n };\r\n /**\r\n * Validate that pageView has a legal value: if page view is defined it must have one of the values defined in PageView\r\n *\r\n * @hidden\r\n */\r\n Dashboard.prototype.validatePageView = function (pageView) {\r\n if (pageView && pageView !== \"fitToWidth\" && pageView !== \"oneColumn\" && pageView !== \"actualSize\") {\r\n return [{ message: \"pageView must be one of the followings: fitToWidth, oneColumn, actualSize\" }];\r\n }\r\n };\r\n /** @hidden */\r\n Dashboard.allowedEvents = [\"tileClicked\", \"error\"];\r\n /** @hidden */\r\n Dashboard.dashboardIdAttribute = 'powerbi-dashboard-id';\r\n /** @hidden */\r\n Dashboard.typeAttribute = 'powerbi-type';\r\n /** @hidden */\r\n Dashboard.type = \"Dashboard\";\r\n return Dashboard;\r\n}(embed_1.Embed));\r\nexports.Dashboard = Dashboard;\r\n\n\n/***/ }),\n\n/***/ \"./src/embed.ts\":\n/*!**********************!*\\\n !*** ./src/embed.ts ***!\n \\**********************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Embed = void 0;\r\nvar models = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar sdkConfig = __webpack_require__(/*! ./config */ \"./src/config.ts\");\r\nvar errors_1 = __webpack_require__(/*! ./errors */ \"./src/errors.ts\");\r\nvar util_1 = __webpack_require__(/*! ./util */ \"./src/util.ts\");\r\n/**\r\n * Base class for all Power BI embed components\r\n *\r\n * @export\r\n * @abstract\r\n * @hidden\r\n * @class Embed\r\n */\r\nvar Embed = /** @class */ (function () {\r\n /**\r\n * Creates an instance of Embed.\r\n *\r\n * Note: there is circular reference between embeds and the service, because\r\n * the service has a list of all embeds on the host page, and each embed has a reference to the service that created it.\r\n *\r\n * @param {service.Service} service\r\n * @param {HTMLElement} element\r\n * @param {IEmbedConfigurationBase} config\r\n * @hidden\r\n */\r\n function Embed(service, element, config, iframe, phasedRender, isBootstrap) {\r\n /** @hidden */\r\n this.allowedEvents = [];\r\n if ((0, util_1.autoAuthInEmbedUrl)(config.embedUrl)) {\r\n throw new Error(errors_1.EmbedUrlNotSupported);\r\n }\r\n Array.prototype.push.apply(this.allowedEvents, Embed.allowedEvents);\r\n this.eventHandlers = [];\r\n this.service = service;\r\n this.element = element;\r\n this.iframe = iframe;\r\n this.iframeLoaded = false;\r\n this.embedtype = config.type.toLowerCase();\r\n this.commands = [];\r\n this.groups = [];\r\n this.populateConfig(config, isBootstrap);\r\n if ((0, util_1.isCreate)(this.embedtype)) {\r\n this.setIframe(false /* set EventListener to call create() on 'load' event*/, phasedRender, isBootstrap);\r\n }\r\n else {\r\n this.setIframe(true /* set EventListener to call load() on 'load' event*/, phasedRender, isBootstrap);\r\n }\r\n }\r\n /**\r\n * Create is not supported by default\r\n *\r\n * @hidden\r\n * @returns {Promise<void>}\r\n */\r\n Embed.prototype.create = function () {\r\n throw new Error(\"no create support\");\r\n };\r\n /**\r\n * Saves Report.\r\n *\r\n * @returns {Promise<void>}\r\n */\r\n Embed.prototype.save = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.service.hpm.post('/report/save', null, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_1 = _a.sent();\r\n throw response_1.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * SaveAs Report.\r\n *\r\n * @returns {Promise<void>}\r\n */\r\n Embed.prototype.saveAs = function (saveAsParameters) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.service.hpm.post('/report/saveAs', saveAsParameters, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_2 = _a.sent();\r\n throw response_2.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get the correlationId for the current embed session.\r\n *\r\n * ```javascript\r\n * // Get the correlationId for the current embed session\r\n * report.getCorrelationId()\r\n * .then(correlationId => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @returns {Promise<string>}\r\n */\r\n Embed.prototype.getCorrelationId = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.service.hpm.get(\"/getCorrelationId\", { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_3 = _a.sent();\r\n throw response_3.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sends load configuration data.\r\n *\r\n * ```javascript\r\n * report.load({\r\n * type: 'report',\r\n * id: '5dac7a4a-4452-46b3-99f6-a25915e0fe55',\r\n * accessToken: 'eyJ0eXA ... TaE2rTSbmg',\r\n * settings: {\r\n * navContentPaneEnabled: false\r\n * },\r\n * pageName: \"DefaultPage\",\r\n * filters: [\r\n * {\r\n * ... DefaultReportFilter ...\r\n * }\r\n * ]\r\n * })\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @hidden\r\n * @param {models.ILoadConfiguration} config\r\n * @param {boolean} phasedRender\r\n * @returns {Promise<void>}\r\n */\r\n Embed.prototype.load = function (phasedRender) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var path, headers, timeNow, response, response_4;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.config.accessToken) {\r\n console.debug(\"Power BI SDK iframe is loaded but powerbi.embed is not called yet.\");\r\n return [2 /*return*/];\r\n }\r\n if (!this.iframeLoaded) {\r\n console.debug(\"Power BI SDK is trying to post /report/load before iframe is ready.\");\r\n return [2 /*return*/];\r\n }\r\n path = phasedRender && this.config.type === 'report' ? this.phasedLoadPath : this.loadPath;\r\n headers = {\r\n uid: this.config.uniqueId,\r\n sdkSessionId: this.service.getSdkSessionId(),\r\n bootstrapped: this.config.bootstrapped,\r\n sdkVersion: sdkConfig.default.version\r\n };\r\n if (!!((_a = this.eventHooks) === null || _a === void 0 ? void 0 : _a.accessTokenProvider)) {\r\n headers.tokenProviderSupplied = true;\r\n }\r\n timeNow = new Date();\r\n if (this.lastLoadRequest && (0, util_1.getTimeDiffInMilliseconds)(this.lastLoadRequest, timeNow) < 100) {\r\n console.debug(\"Power BI SDK sent more than two /report/load requests in the last 100ms interval.\");\r\n return [2 /*return*/];\r\n }\r\n this.lastLoadRequest = timeNow;\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post(path, this.config, headers, this.iframe.contentWindow)];\r\n case 2:\r\n response = _b.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_4 = _b.sent();\r\n throw response_4.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes one or more event handlers from the list of handlers.\r\n * If a reference to the existing handle function is specified, remove the specific handler.\r\n * If the handler is not specified, remove all handlers for the event name specified.\r\n *\r\n * ```javascript\r\n * report.off('pageChanged')\r\n *\r\n * or\r\n *\r\n * const logHandler = function (event) {\r\n * console.log(event);\r\n * };\r\n *\r\n * report.off('pageChanged', logHandler);\r\n * ```\r\n *\r\n * @template T\r\n * @param {string} eventName\r\n * @param {IEventHandler<T>} [handler]\r\n */\r\n Embed.prototype.off = function (eventName, handler) {\r\n var _this = this;\r\n var fakeEvent = { name: eventName, type: null, id: null, value: null };\r\n if (handler) {\r\n (0, util_1.remove)(function (eventHandler) { return eventHandler.test(fakeEvent) && (eventHandler.handle === handler); }, this.eventHandlers);\r\n this.element.removeEventListener(eventName, handler);\r\n }\r\n else {\r\n var eventHandlersToRemove = this.eventHandlers\r\n .filter(function (eventHandler) { return eventHandler.test(fakeEvent); });\r\n eventHandlersToRemove\r\n .forEach(function (eventHandlerToRemove) {\r\n (0, util_1.remove)(function (eventHandler) { return eventHandler === eventHandlerToRemove; }, _this.eventHandlers);\r\n _this.element.removeEventListener(eventName, eventHandlerToRemove.handle);\r\n });\r\n }\r\n };\r\n /**\r\n * Adds an event handler for a specific event.\r\n *\r\n * ```javascript\r\n * report.on('pageChanged', (event) => {\r\n * console.log('PageChanged: ', event.page.name);\r\n * });\r\n * ```\r\n *\r\n * @template T\r\n * @param {string} eventName\r\n * @param {service.IEventHandler<T>} handler\r\n */\r\n Embed.prototype.on = function (eventName, handler) {\r\n if (this.allowedEvents.indexOf(eventName) === -1) {\r\n throw new Error(\"eventName must be one of \".concat(this.allowedEvents, \". You passed: \").concat(eventName));\r\n }\r\n this.eventHandlers.push({\r\n test: function (event) { return event.name === eventName; },\r\n handle: handler\r\n });\r\n this.element.addEventListener(eventName, handler);\r\n };\r\n /**\r\n * Reloads embed using existing configuration.\r\n * E.g. For reports this effectively clears all filters and makes the first page active which simulates resetting a report back to loaded state.\r\n *\r\n * ```javascript\r\n * report.reload();\r\n * ```\r\n */\r\n Embed.prototype.reload = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.load()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Set accessToken.\r\n *\r\n * @returns {Promise<void>}\r\n */\r\n Embed.prototype.setAccessToken = function (accessToken) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var embedType, response, response_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!accessToken) {\r\n throw new Error(\"Access token cannot be empty\");\r\n }\r\n embedType = this.config.type;\r\n embedType = (embedType === 'create' || embedType === 'visual' || embedType === 'qna' || embedType === 'quickCreate') ? 'report' : embedType;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post('/' + embedType + '/token', accessToken, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n this.config.accessToken = accessToken;\r\n this.element.setAttribute(Embed.accessTokenAttribute, accessToken);\r\n this.service.accessToken = accessToken;\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_5 = _a.sent();\r\n throw response_5.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets an access token from the first available location: config, attribute, global.\r\n *\r\n * @private\r\n * @param {string} globalAccessToken\r\n * @returns {string}\r\n * @hidden\r\n */\r\n Embed.prototype.getAccessToken = function (globalAccessToken) {\r\n var accessToken = this.config.accessToken || this.element.getAttribute(Embed.accessTokenAttribute) || globalAccessToken;\r\n if (!accessToken) {\r\n throw new Error(\"No access token was found for element. You must specify an access token directly on the element using attribute '\".concat(Embed.accessTokenAttribute, \"' or specify a global token at: powerbi.accessToken.\"));\r\n }\r\n return accessToken;\r\n };\r\n /**\r\n * Populate config for create and load\r\n *\r\n * @hidden\r\n * @param {IEmbedConfiguration}\r\n * @returns {void}\r\n */\r\n Embed.prototype.populateConfig = function (config, isBootstrap) {\r\n var _this = this;\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\r\n if (this.bootstrapConfig) {\r\n this.config = (0, util_1.assign)({}, this.bootstrapConfig, config);\r\n // reset bootstrapConfig because we do not want to merge it in re-embed scenario.\r\n this.bootstrapConfig = null;\r\n }\r\n else {\r\n // Copy config - important for multiple iframe scenario.\r\n // Otherwise, if a user uses the same config twice, same unique Id which will be used in different iframes.\r\n this.config = (0, util_1.assign)({}, config);\r\n }\r\n this.config.embedUrl = this.getEmbedUrl(isBootstrap);\r\n this.config.groupId = this.getGroupId();\r\n this.addLocaleToEmbedUrl(config);\r\n this.config.uniqueId = this.getUniqueId();\r\n var extensions = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.extensions;\r\n this.commands = (_c = extensions === null || extensions === void 0 ? void 0 : extensions.commands) !== null && _c !== void 0 ? _c : [];\r\n this.groups = (_d = extensions === null || extensions === void 0 ? void 0 : extensions.groups) !== null && _d !== void 0 ? _d : [];\r\n this.initialLayoutType = (_g = (_f = (_e = this.config) === null || _e === void 0 ? void 0 : _e.settings) === null || _f === void 0 ? void 0 : _f.layoutType) !== null && _g !== void 0 ? _g : models.LayoutType.Master;\r\n // Adding commands in extensions array to this.commands\r\n var extensionsArray = (_j = (_h = this.config) === null || _h === void 0 ? void 0 : _h.settings) === null || _j === void 0 ? void 0 : _j.extensions;\r\n if (Array.isArray(extensionsArray)) {\r\n this.commands = [];\r\n extensionsArray.map(function (extension) { if (extension === null || extension === void 0 ? void 0 : extension.command) {\r\n _this.commands.push(extension.command);\r\n } });\r\n }\r\n if (isBootstrap) {\r\n // save current config in bootstrapConfig to be able to merge it on next call to powerbi.embed\r\n this.bootstrapConfig = this.config;\r\n this.bootstrapConfig.bootstrapped = true;\r\n }\r\n else {\r\n this.config.accessToken = this.getAccessToken(this.service.accessToken);\r\n }\r\n this.eventHooks = this.config.eventHooks;\r\n this.validateEventHooks(this.eventHooks);\r\n delete this.config.eventHooks;\r\n this.configChanged(isBootstrap);\r\n };\r\n /**\r\n * Validate EventHooks\r\n *\r\n * @private\r\n * @param {models.EventHooks} eventHooks\r\n * @hidden\r\n */\r\n Embed.prototype.validateEventHooks = function (eventHooks) {\r\n if (!eventHooks) {\r\n return;\r\n }\r\n for (var key in eventHooks) {\r\n if (eventHooks.hasOwnProperty(key) && typeof eventHooks[key] !== 'function') {\r\n throw new Error(key + \" must be a function\");\r\n }\r\n }\r\n var applicationContextProvider = eventHooks.applicationContextProvider;\r\n if (!!applicationContextProvider) {\r\n if (this.embedtype.toLowerCase() !== \"report\") {\r\n throw new Error(\"applicationContextProvider is only supported in report embed\");\r\n }\r\n this.config.embedUrl = (0, util_1.addParamToUrl)(this.config.embedUrl, \"registerQueryCallback\", \"true\");\r\n }\r\n var accessTokenProvider = eventHooks.accessTokenProvider;\r\n if (!!accessTokenProvider) {\r\n if ((['create', 'quickcreate', 'report'].indexOf(this.embedtype.toLowerCase()) === -1) || this.config.tokenType !== models.TokenType.Aad) {\r\n throw new Error(\"accessTokenProvider is only supported in report SaaS embed\");\r\n }\r\n }\r\n };\r\n /**\r\n * Adds locale parameters to embedUrl\r\n *\r\n * @private\r\n * @param {IEmbedConfiguration | models.ICommonEmbedConfiguration} config\r\n * @hidden\r\n */\r\n Embed.prototype.addLocaleToEmbedUrl = function (config) {\r\n if (!config.settings) {\r\n return;\r\n }\r\n var localeSettings = config.settings.localeSettings;\r\n if (localeSettings && localeSettings.language) {\r\n this.config.embedUrl = (0, util_1.addParamToUrl)(this.config.embedUrl, 'language', localeSettings.language);\r\n }\r\n if (localeSettings && localeSettings.formatLocale) {\r\n this.config.embedUrl = (0, util_1.addParamToUrl)(this.config.embedUrl, 'formatLocale', localeSettings.formatLocale);\r\n }\r\n };\r\n /**\r\n * Gets an embed url from the first available location: options, attribute.\r\n *\r\n * @private\r\n * @returns {string}\r\n * @hidden\r\n */\r\n Embed.prototype.getEmbedUrl = function (isBootstrap) {\r\n var embedUrl = this.config.embedUrl || this.element.getAttribute(Embed.embedUrlAttribute);\r\n if (isBootstrap && !embedUrl) {\r\n // Prepare flow, embed url was not provided, use hostname to build embed url.\r\n embedUrl = this.getDefaultEmbedUrl(this.config.hostname);\r\n }\r\n if (typeof embedUrl !== 'string' || embedUrl.length === 0) {\r\n throw new Error(\"Embed Url is required, but it was not found. You must provide an embed url either as part of embed configuration or as attribute '\".concat(Embed.embedUrlAttribute, \"'.\"));\r\n }\r\n return embedUrl;\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Embed.prototype.getDefaultEmbedUrl = function (hostname) {\r\n if (!hostname) {\r\n hostname = Embed.defaultEmbedHostName;\r\n }\r\n var endpoint = this.getDefaultEmbedUrlEndpoint();\r\n // Trim spaces to fix user mistakes.\r\n hostname = hostname.toLowerCase().trim();\r\n if (hostname.indexOf(\"https://\") === 0) {\r\n return \"\".concat(hostname, \"/\").concat(endpoint);\r\n }\r\n return \"https://\".concat(hostname, \"/\").concat(endpoint);\r\n };\r\n /**\r\n * Gets a unique ID from the first available location: options, attribute.\r\n * If neither is provided generate a unique string.\r\n *\r\n * @private\r\n * @returns {string}\r\n * @hidden\r\n */\r\n Embed.prototype.getUniqueId = function () {\r\n return this.config.uniqueId || this.element.getAttribute(Embed.nameAttribute) || (0, util_1.createRandomString)();\r\n };\r\n /**\r\n * Gets the group ID from the first available location: options, embeddedUrl.\r\n *\r\n * @private\r\n * @returns {string}\r\n * @hidden\r\n */\r\n Embed.prototype.getGroupId = function () {\r\n return this.config.groupId || Embed.findGroupIdFromEmbedUrl(this.config.embedUrl);\r\n };\r\n /**\r\n * Requests the browser to render the component's iframe in fullscreen mode.\r\n */\r\n Embed.prototype.fullscreen = function () {\r\n var requestFullScreen = this.iframe.requestFullscreen || this.iframe.msRequestFullscreen || this.iframe.mozRequestFullScreen || this.iframe.webkitRequestFullscreen;\r\n requestFullScreen.call(this.iframe);\r\n };\r\n /**\r\n * Requests the browser to exit fullscreen mode.\r\n */\r\n Embed.prototype.exitFullscreen = function () {\r\n if (!this.isFullscreen(this.iframe)) {\r\n return;\r\n }\r\n var exitFullscreen = document.exitFullscreen || document.mozCancelFullScreen || document.webkitExitFullscreen || document.msExitFullscreen;\r\n exitFullscreen.call(document);\r\n };\r\n /**\r\n * Returns true if the iframe is rendered in fullscreen mode,\r\n * otherwise returns false.\r\n *\r\n * @private\r\n * @param {HTMLIFrameElement} iframe\r\n * @returns {boolean}\r\n * @hidden\r\n */\r\n Embed.prototype.isFullscreen = function (iframe) {\r\n var options = ['fullscreenElement', 'webkitFullscreenElement', 'mozFullscreenScreenElement', 'msFullscreenElement'];\r\n return options.some(function (option) { return document[option] === iframe; });\r\n };\r\n /**\r\n * Sets Iframe for embed\r\n *\r\n * @hidden\r\n */\r\n Embed.prototype.setIframe = function (isLoad, phasedRender, isBootstrap) {\r\n var _this = this;\r\n if (!this.iframe) {\r\n var iframeContent = document.createElement(\"iframe\");\r\n var embedUrl = this.config.uniqueId ? (0, util_1.addParamToUrl)(this.config.embedUrl, 'uid', this.config.uniqueId) : this.config.embedUrl;\r\n if (!(0, util_1.validateEmbedUrl)(embedUrl)) {\r\n throw new Error(errors_1.invalidEmbedUrlErrorMessage);\r\n }\r\n iframeContent.style.width = '100%';\r\n iframeContent.style.height = '100%';\r\n iframeContent.setAttribute(\"src\", embedUrl);\r\n iframeContent.setAttribute(\"scrolling\", \"no\");\r\n iframeContent.setAttribute(\"allowfullscreen\", \"true\");\r\n var node = this.element;\r\n while (node.firstChild) {\r\n node.removeChild(node.firstChild);\r\n }\r\n node.appendChild(iframeContent);\r\n this.iframe = node.firstChild;\r\n }\r\n if (isLoad) {\r\n if (!isBootstrap) {\r\n // Validate config if it's not a bootstrap case.\r\n var errors = this.validate(this.config);\r\n if (errors) {\r\n throw errors;\r\n }\r\n }\r\n this.iframe.addEventListener('load', function () {\r\n _this.iframeLoaded = true;\r\n _this.load(phasedRender);\r\n }, false);\r\n if (this.service.getNumberOfComponents() <= Embed.maxFrontLoadTimes) {\r\n this.frontLoadHandler = function () {\r\n _this.frontLoadSendConfig(_this.config);\r\n };\r\n // 'ready' event is fired by the embedded element (not by the iframe)\r\n this.element.addEventListener('ready', this.frontLoadHandler, false);\r\n }\r\n }\r\n else {\r\n this.iframe.addEventListener('load', function () { return _this.create(); }, false);\r\n }\r\n };\r\n /**\r\n * Set the component title for accessibility. In case of iframes, this method will change the iframe title.\r\n */\r\n Embed.prototype.setComponentTitle = function (title) {\r\n if (!this.iframe) {\r\n return;\r\n }\r\n if (title == null) {\r\n this.iframe.removeAttribute(\"title\");\r\n }\r\n else {\r\n this.iframe.setAttribute(\"title\", title);\r\n }\r\n };\r\n /**\r\n * Sets element's tabindex attribute\r\n */\r\n Embed.prototype.setComponentTabIndex = function (tabIndex) {\r\n if (!this.element) {\r\n return;\r\n }\r\n this.element.setAttribute(\"tabindex\", (tabIndex == null) ? \"0\" : tabIndex.toString());\r\n };\r\n /**\r\n * Removes element's tabindex attribute\r\n */\r\n Embed.prototype.removeComponentTabIndex = function (_tabIndex) {\r\n if (!this.element) {\r\n return;\r\n }\r\n this.element.removeAttribute(\"tabindex\");\r\n };\r\n /**\r\n * Adds the ability to get groupId from url.\r\n * By extracting the ID we can ensure that the ID is always explicitly provided as part of the load configuration.\r\n *\r\n * @hidden\r\n * @static\r\n * @param {string} url\r\n * @returns {string}\r\n */\r\n Embed.findGroupIdFromEmbedUrl = function (url) {\r\n var groupIdRegEx = /groupId=\"?([^&]+)\"?/;\r\n var groupIdMatch = url.match(groupIdRegEx);\r\n var groupId;\r\n if (groupIdMatch) {\r\n groupId = groupIdMatch[1];\r\n }\r\n return groupId;\r\n };\r\n /**\r\n * Sends the config for front load calls, after 'ready' message is received from the iframe\r\n *\r\n * @hidden\r\n */\r\n Embed.prototype.frontLoadSendConfig = function (config) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var errors, response, response_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!config.accessToken) {\r\n return [2 /*return*/];\r\n }\r\n errors = this.validate(config);\r\n if (errors) {\r\n throw errors;\r\n }\r\n // contentWindow must be initialized\r\n if (this.iframe.contentWindow == null) {\r\n return [2 /*return*/];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post(\"/frontload/config\", config, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_6 = _a.sent();\r\n throw response_6.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /** @hidden */\r\n Embed.allowedEvents = [\"loaded\", \"saved\", \"rendered\", \"saveAsTriggered\", \"error\", \"dataSelected\", \"buttonClicked\", \"info\"];\r\n /** @hidden */\r\n Embed.accessTokenAttribute = 'powerbi-access-token';\r\n /** @hidden */\r\n Embed.embedUrlAttribute = 'powerbi-embed-url';\r\n /** @hidden */\r\n Embed.nameAttribute = 'powerbi-name';\r\n /** @hidden */\r\n Embed.typeAttribute = 'powerbi-type';\r\n /** @hidden */\r\n Embed.defaultEmbedHostName = \"https://app.powerbi.com\";\r\n /** @hidden */\r\n Embed.maxFrontLoadTimes = 2;\r\n return Embed;\r\n}());\r\nexports.Embed = Embed;\r\n\n\n/***/ }),\n\n/***/ \"./src/errors.ts\":\n/*!***********************!*\\\n !*** ./src/errors.ts ***!\n \\***********************/\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.invalidEmbedUrlErrorMessage = exports.EmbedUrlNotSupported = exports.APINotSupportedForRDLError = void 0;\r\nexports.APINotSupportedForRDLError = \"This API is currently not supported for RDL reports\";\r\nexports.EmbedUrlNotSupported = \"Embed URL is invalid for this scenario. Please use Power BI REST APIs to get the valid URL\";\r\nexports.invalidEmbedUrlErrorMessage = \"Invalid embed URL detected. Either URL hostname or protocol are invalid. Please use Power BI REST APIs to get the valid URL\";\r\n\n\n/***/ }),\n\n/***/ \"./src/factories.ts\":\n/*!**************************!*\\\n !*** ./src/factories.ts ***!\n \\**************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.routerFactory = exports.wpmpFactory = exports.hpmFactory = void 0;\r\n/**\r\n * TODO: Need to find better place for these factory functions or refactor how we handle dependency injection\r\n */\r\nvar window_post_message_proxy_1 = __webpack_require__(/*! window-post-message-proxy */ \"./node_modules/window-post-message-proxy/dist/windowPostMessageProxy.js\");\r\nvar http_post_message_1 = __webpack_require__(/*! http-post-message */ \"./node_modules/http-post-message/dist/httpPostMessage.js\");\r\nvar powerbi_router_1 = __webpack_require__(/*! powerbi-router */ \"./node_modules/powerbi-router/dist/router.js\");\r\nvar config_1 = __webpack_require__(/*! ./config */ \"./src/config.ts\");\r\nvar hpmFactory = function (wpmp, defaultTargetWindow, sdkVersion, sdkType, sdkWrapperVersion) {\r\n if (sdkVersion === void 0) { sdkVersion = config_1.default.version; }\r\n if (sdkType === void 0) { sdkType = config_1.default.type; }\r\n return new http_post_message_1.HttpPostMessage(wpmp, {\r\n 'x-sdk-type': sdkType,\r\n 'x-sdk-version': sdkVersion,\r\n 'x-sdk-wrapper-version': sdkWrapperVersion,\r\n }, defaultTargetWindow);\r\n};\r\nexports.hpmFactory = hpmFactory;\r\nvar wpmpFactory = function (name, logMessages, eventSourceOverrideWindow) {\r\n return new window_post_message_proxy_1.WindowPostMessageProxy({\r\n processTrackingProperties: {\r\n addTrackingProperties: http_post_message_1.HttpPostMessage.addTrackingProperties,\r\n getTrackingProperties: http_post_message_1.HttpPostMessage.getTrackingProperties,\r\n },\r\n isErrorMessage: http_post_message_1.HttpPostMessage.isErrorMessage,\r\n suppressWarnings: true,\r\n name: name,\r\n logMessages: logMessages,\r\n eventSourceOverrideWindow: eventSourceOverrideWindow\r\n });\r\n};\r\nexports.wpmpFactory = wpmpFactory;\r\nvar routerFactory = function (wpmp) {\r\n return new powerbi_router_1.Router(wpmp);\r\n};\r\nexports.routerFactory = routerFactory;\r\n\n\n/***/ }),\n\n/***/ \"./src/page.ts\":\n/*!*********************!*\\\n !*** ./src/page.ts ***!\n \\*********************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Page = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar visualDescriptor_1 = __webpack_require__(/*! ./visualDescriptor */ \"./src/visualDescriptor.ts\");\r\nvar util_1 = __webpack_require__(/*! ./util */ \"./src/util.ts\");\r\nvar errors_1 = __webpack_require__(/*! ./errors */ \"./src/errors.ts\");\r\n/**\r\n * A Power BI report page\r\n *\r\n * @export\r\n * @class Page\r\n * @implements {IPageNode}\r\n * @implements {IFilterable}\r\n */\r\nvar Page = /** @class */ (function () {\r\n /**\r\n * Creates an instance of a Power BI report page.\r\n *\r\n * @param {IReportNode} report\r\n * @param {string} name\r\n * @param {string} [displayName]\r\n * @param {boolean} [isActivePage]\r\n * @param {SectionVisibility} [visibility]\r\n * @hidden\r\n */\r\n function Page(report, name, displayName, isActivePage, visibility, defaultSize, defaultDisplayOption, mobileSize, background, wallpaper) {\r\n this.report = report;\r\n this.name = name;\r\n this.displayName = displayName;\r\n this.isActive = isActivePage;\r\n this.visibility = visibility;\r\n this.defaultSize = defaultSize;\r\n this.mobileSize = mobileSize;\r\n this.defaultDisplayOption = defaultDisplayOption;\r\n this.background = background;\r\n this.wallpaper = wallpaper;\r\n }\r\n /**\r\n * Get insights for report page\r\n *\r\n * ```javascript\r\n * page.getSmartNarrativeInsights();\r\n * ```\r\n *\r\n * @returns {Promise<ISmartNarratives>}\r\n */\r\n Page.prototype.getSmartNarrativeInsights = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.report.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.report.service.hpm.get(\"/report/pages/\".concat(this.name, \"/smartNarrativeInsights\"), { uid: this.report.config.uniqueId }, this.report.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_1 = _a.sent();\r\n throw response_1.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets all page level filters within the report.\r\n *\r\n * ```javascript\r\n * page.getFilters()\r\n * .then(filters => { ... });\r\n * ```\r\n *\r\n * @returns {(Promise<IFilter[]>)}\r\n */\r\n Page.prototype.getFilters = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.report.service.hpm.get(\"/report/pages/\".concat(this.name, \"/filters\"), { uid: this.report.config.uniqueId }, this.report.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_2 = _a.sent();\r\n throw response_2.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Update the filters for the current page according to the operation: Add, replace all, replace by target or remove.\r\n *\r\n * ```javascript\r\n * page.updateFilters(FiltersOperations.Add, filters)\r\n * .catch(errors => { ... });\r\n * ```\r\n *\r\n * @param {(IFilter[])} filters\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Page.prototype.updateFilters = function (operation, filters) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var updateFiltersRequest, response_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n updateFiltersRequest = {\r\n filtersOperation: operation,\r\n filters: filters\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.report.service.hpm.post(\"/report/pages/\".concat(this.name, \"/filters\"), updateFiltersRequest, { uid: this.report.config.uniqueId }, this.report.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_3 = _a.sent();\r\n throw response_3.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all filters from this page of the report.\r\n *\r\n * ```javascript\r\n * page.removeFilters();\r\n * ```\r\n *\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Page.prototype.removeFilters = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.updateFilters(powerbi_models_1.FiltersOperations.RemoveAll)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sets all filters on the current page.\r\n *\r\n * ```javascript\r\n * page.setFilters(filters)\r\n * .catch(errors => { ... });\r\n * ```\r\n *\r\n * @param {(IFilter[])} filters\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Page.prototype.setFilters = function (filters) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.report.service.hpm.put(\"/report/pages/\".concat(this.name, \"/filters\"), filters, { uid: this.report.config.uniqueId }, this.report.iframe.contentWindow)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n response_4 = _a.sent();\r\n throw response_4.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Delete the page from the report\r\n *\r\n * ```javascript\r\n * // Delete the page from the report\r\n * page.delete();\r\n * ```\r\n *\r\n * @returns {Promise<void>}\r\n */\r\n Page.prototype.delete = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.report.service.hpm.delete(\"/report/pages/\".concat(this.name), {}, { uid: this.report.config.uniqueId }, this.report.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_5 = _a.sent();\r\n throw response_5.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Makes the current page the active page of the report.\r\n *\r\n * ```javascript\r\n * page.setActive();\r\n * ```\r\n *\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Page.prototype.setActive = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var page, response_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n page = {\r\n name: this.name,\r\n displayName: null,\r\n isActive: true\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.report.service.hpm.put('/report/pages/active', page, { uid: this.report.config.uniqueId }, this.report.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_6 = _a.sent();\r\n throw response_6.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Set displayName to the current page.\r\n *\r\n * ```javascript\r\n * page.setName(displayName);\r\n * ```\r\n *\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Page.prototype.setDisplayName = function (displayName) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var page, response_7;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n page = {\r\n name: this.name,\r\n displayName: displayName,\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.report.service.hpm.put(\"/report/pages/\".concat(this.name, \"/name\"), page, { uid: this.report.config.uniqueId }, this.report.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_7 = _a.sent();\r\n throw response_7.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets all the visuals on the page.\r\n *\r\n * ```javascript\r\n * page.getVisuals()\r\n * .then(visuals => { ... });\r\n * ```\r\n *\r\n * @returns {Promise<VisualDescriptor[]>}\r\n */\r\n Page.prototype.getVisuals = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_8;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.report.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.report.service.hpm.get(\"/report/pages/\".concat(this.name, \"/visuals\"), { uid: this.report.config.uniqueId }, this.report.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body\r\n .map(function (visual) { return new visualDescriptor_1.VisualDescriptor(_this, visual.name, visual.title, visual.type, visual.layout); })];\r\n case 3:\r\n response_8 = _a.sent();\r\n throw response_8.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets a visual by name on the page.\r\n *\r\n * ```javascript\r\n * page.getVisualByName(visualName: string)\r\n * .then(visual => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @param {string} visualName\r\n * @returns {Promise<VisualDescriptor>}\r\n */\r\n Page.prototype.getVisualByName = function (visualName) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, visual, response_9;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.report.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.report.service.hpm.get(\"/report/pages/\".concat(this.name, \"/visuals\"), { uid: this.report.config.uniqueId }, this.report.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n visual = response.body.find(function (v) { return v.name === visualName; });\r\n if (!visual) {\r\n return [2 /*return*/, Promise.reject(powerbi_models_1.CommonErrorCodes.NotFound)];\r\n }\r\n return [2 /*return*/, new visualDescriptor_1.VisualDescriptor(this, visual.name, visual.title, visual.type, visual.layout)];\r\n case 3:\r\n response_9 = _a.sent();\r\n throw response_9.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the display state of a visual in a page.\r\n *\r\n * ```javascript\r\n * page.setVisualDisplayState(visualName, displayState)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {string} visualName\r\n * @param {VisualContainerDisplayMode} displayState\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Page.prototype.setVisualDisplayState = function (visualName, displayState) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pageName, report;\r\n return __generator(this, function (_a) {\r\n pageName = this.name;\r\n report = this.report;\r\n return [2 /*return*/, report.setVisualDisplayState(pageName, visualName, displayState)];\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the position of a visual in a page.\r\n *\r\n * ```javascript\r\n * page.moveVisual(visualName, x, y, z)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {string} visualName\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} z\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Page.prototype.moveVisual = function (visualName, x, y, z) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pageName, report;\r\n return __generator(this, function (_a) {\r\n pageName = this.name;\r\n report = this.report;\r\n return [2 /*return*/, report.moveVisual(pageName, visualName, x, y, z)];\r\n });\r\n });\r\n };\r\n /**\r\n * Resize a visual in a page.\r\n *\r\n * ```javascript\r\n * page.resizeVisual(visualName, width, height)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {string} visualName\r\n * @param {number} width\r\n * @param {number} height\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Page.prototype.resizeVisual = function (visualName, width, height) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pageName, report;\r\n return __generator(this, function (_a) {\r\n pageName = this.name;\r\n report = this.report;\r\n return [2 /*return*/, report.resizeVisual(pageName, visualName, width, height)];\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the size of active page.\r\n *\r\n * ```javascript\r\n * page.resizePage(pageSizeType, width, height)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {PageSizeType} pageSizeType\r\n * @param {number} width\r\n * @param {number} height\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Page.prototype.resizePage = function (pageSizeType, width, height) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var report;\r\n return __generator(this, function (_a) {\r\n if (!this.isActive) {\r\n return [2 /*return*/, Promise.reject('Cannot resize the page. Only the active page can be resized')];\r\n }\r\n report = this.report;\r\n return [2 /*return*/, report.resizeActivePage(pageSizeType, width, height)];\r\n });\r\n });\r\n };\r\n /**\r\n * Gets the list of slicer visuals on the page.\r\n *\r\n * ```javascript\r\n * page.getSlicers()\r\n * .then(slicers => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @returns {Promise<IVisual[]>}\r\n */\r\n Page.prototype.getSlicers = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_10;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.report.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.report.service.hpm.get(\"/report/pages/\".concat(this.name, \"/visuals\"), { uid: this.report.config.uniqueId }, this.report.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body\r\n .filter(function (visual) { return visual.type === 'slicer'; })\r\n .map(function (visual) { return new visualDescriptor_1.VisualDescriptor(_this, visual.name, visual.title, visual.type, visual.layout); })];\r\n case 3:\r\n response_10 = _a.sent();\r\n throw response_10.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Checks if page has layout.\r\n *\r\n * ```javascript\r\n * page.hasLayout(layoutType)\r\n * .then(hasLayout: boolean => { ... });\r\n * ```\r\n *\r\n * @returns {(Promise<boolean>)}\r\n */\r\n Page.prototype.hasLayout = function (layoutType) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var layoutTypeEnum, response, response_11;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.report.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n layoutTypeEnum = powerbi_models_1.LayoutType[layoutType];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.report.service.hpm.get(\"/report/pages/\".concat(this.name, \"/layoutTypes/\").concat(layoutTypeEnum), { uid: this.report.config.uniqueId }, this.report.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_11 = _a.sent();\r\n throw response_11.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return Page;\r\n}());\r\nexports.Page = Page;\r\n\n\n/***/ }),\n\n/***/ \"./src/qna.ts\":\n/*!********************!*\\\n !*** ./src/qna.ts ***!\n \\********************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Qna = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar embed_1 = __webpack_require__(/*! ./embed */ \"./src/embed.ts\");\r\n/**\r\n * The Power BI Q&A embed component\r\n *\r\n * @export\r\n * @class Qna\r\n * @extends {Embed}\r\n */\r\nvar Qna = /** @class */ (function (_super) {\r\n __extends(Qna, _super);\r\n /**\r\n * @hidden\r\n */\r\n function Qna(service, element, config, phasedRender, isBootstrap) {\r\n var _this = _super.call(this, service, element, config, /* iframe */ undefined, phasedRender, isBootstrap) || this;\r\n _this.loadPath = \"/qna/load\";\r\n _this.phasedLoadPath = \"/qna/prepare\";\r\n Array.prototype.push.apply(_this.allowedEvents, Qna.allowedEvents);\r\n return _this;\r\n }\r\n /**\r\n * The ID of the Q&A embed component\r\n *\r\n * @returns {string}\r\n */\r\n Qna.prototype.getId = function () {\r\n return null;\r\n };\r\n /**\r\n * Change the question of the Q&A embed component\r\n *\r\n * @param {string} question - question which will render Q&A data\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Qna.prototype.setQuestion = function (question) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var qnaData, response_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n qnaData = {\r\n question: question\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post('/qna/interpret', qnaData, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_1 = _a.sent();\r\n throw response_1.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Handle config changes.\r\n *\r\n * @returns {void}\r\n */\r\n Qna.prototype.configChanged = function (_isBootstrap) {\r\n // Nothing to do in Q&A embed.\r\n };\r\n /**\r\n * @hidden\r\n * @returns {string}\r\n */\r\n Qna.prototype.getDefaultEmbedUrlEndpoint = function () {\r\n return \"qnaEmbed\";\r\n };\r\n /**\r\n * Validate load configuration.\r\n */\r\n Qna.prototype.validate = function (config) {\r\n return (0, powerbi_models_1.validateLoadQnaConfiguration)(config);\r\n };\r\n /** @hidden */\r\n Qna.type = \"Qna\";\r\n /** @hidden */\r\n Qna.allowedEvents = [\"loaded\", \"visualRendered\"];\r\n return Qna;\r\n}(embed_1.Embed));\r\nexports.Qna = Qna;\r\n\n\n/***/ }),\n\n/***/ \"./src/quickCreate.ts\":\n/*!****************************!*\\\n !*** ./src/quickCreate.ts ***!\n \\****************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.QuickCreate = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar embed_1 = __webpack_require__(/*! ./embed */ \"./src/embed.ts\");\r\n/**\r\n * A Power BI Quick Create component\r\n *\r\n * @export\r\n * @class QuickCreate\r\n * @extends {Embed}\r\n */\r\nvar QuickCreate = /** @class */ (function (_super) {\r\n __extends(QuickCreate, _super);\r\n /*\r\n * @hidden\r\n */\r\n function QuickCreate(service, element, config, phasedRender, isBootstrap) {\r\n var _this = _super.call(this, service, element, config, /* iframe */ undefined, phasedRender, isBootstrap) || this;\r\n service.router.post(\"/reports/\".concat(_this.config.uniqueId, \"/eventHooks/:eventName\"), function (req, _res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n var _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _a = req.params.eventName;\r\n switch (_a) {\r\n case \"newAccessToken\": return [3 /*break*/, 1];\r\n }\r\n return [3 /*break*/, 3];\r\n case 1:\r\n req.body = req.body || {};\r\n req.body.report = this;\r\n return [4 /*yield*/, service.invokeSDKHook((_b = this.eventHooks) === null || _b === void 0 ? void 0 : _b.accessTokenProvider, req, _res)];\r\n case 2:\r\n _c.sent();\r\n return [3 /*break*/, 4];\r\n case 3: return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n return _this;\r\n }\r\n /**\r\n * Override the getId abstract function\r\n * QuickCreate does not need any ID\r\n *\r\n * @returns {string}\r\n */\r\n QuickCreate.prototype.getId = function () {\r\n return null;\r\n };\r\n /**\r\n * Validate create report configuration.\r\n */\r\n QuickCreate.prototype.validate = function (config) {\r\n return (0, powerbi_models_1.validateQuickCreate)(config);\r\n };\r\n /**\r\n * Handle config changes.\r\n *\r\n * @hidden\r\n * @returns {void}\r\n */\r\n QuickCreate.prototype.configChanged = function (isBootstrap) {\r\n if (isBootstrap) {\r\n return;\r\n }\r\n this.createConfig = this.config;\r\n };\r\n /**\r\n * @hidden\r\n * @returns {string}\r\n */\r\n QuickCreate.prototype.getDefaultEmbedUrlEndpoint = function () {\r\n return \"quickCreate\";\r\n };\r\n /**\r\n * Sends quickCreate configuration data.\r\n *\r\n * ```javascript\r\n * quickCreate({\r\n * accessToken: 'eyJ0eXA ... TaE2rTSbmg',\r\n * datasetCreateConfig: {}})\r\n * ```\r\n *\r\n * @hidden\r\n * @param {IQuickCreateConfiguration} createConfig\r\n * @returns {Promise<void>}\r\n */\r\n QuickCreate.prototype.create = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var errors, headers, response, response_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n errors = (0, powerbi_models_1.validateQuickCreate)(this.createConfig);\r\n if (errors) {\r\n throw errors;\r\n }\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n headers = {\r\n uid: this.config.uniqueId,\r\n sdkSessionId: this.service.getSdkSessionId()\r\n };\r\n if (!!((_a = this.eventHooks) === null || _a === void 0 ? void 0 : _a.accessTokenProvider)) {\r\n headers.tokenProviderSupplied = true;\r\n }\r\n return [4 /*yield*/, this.service.hpm.post(\"/quickcreate\", this.createConfig, headers, this.iframe.contentWindow)];\r\n case 2:\r\n response = _b.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_1 = _b.sent();\r\n throw response_1.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return QuickCreate;\r\n}(embed_1.Embed));\r\nexports.QuickCreate = QuickCreate;\r\n\n\n/***/ }),\n\n/***/ \"./src/report.ts\":\n/*!***********************!*\\\n !*** ./src/report.ts ***!\n \\***********************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Report = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar embed_1 = __webpack_require__(/*! ./embed */ \"./src/embed.ts\");\r\nvar util_1 = __webpack_require__(/*! ./util */ \"./src/util.ts\");\r\nvar errors_1 = __webpack_require__(/*! ./errors */ \"./src/errors.ts\");\r\nvar page_1 = __webpack_require__(/*! ./page */ \"./src/page.ts\");\r\nvar bookmarksManager_1 = __webpack_require__(/*! ./bookmarksManager */ \"./src/bookmarksManager.ts\");\r\n/**\r\n * The Power BI Report embed component\r\n *\r\n * @export\r\n * @class Report\r\n * @extends {Embed}\r\n * @implements {IReportNode}\r\n * @implements {IFilterable}\r\n */\r\nvar Report = /** @class */ (function (_super) {\r\n __extends(Report, _super);\r\n /**\r\n * Creates an instance of a Power BI Report.\r\n *\r\n * @param {Service} service\r\n * @param {HTMLElement} element\r\n * @param {IEmbedConfiguration} config\r\n * @hidden\r\n */\r\n function Report(service, element, baseConfig, phasedRender, isBootstrap, iframe) {\r\n var _this = this;\r\n var config = baseConfig;\r\n _this = _super.call(this, service, element, config, iframe, phasedRender, isBootstrap) || this;\r\n _this.loadPath = \"/report/load\";\r\n _this.phasedLoadPath = \"/report/prepare\";\r\n Array.prototype.push.apply(_this.allowedEvents, Report.allowedEvents);\r\n _this.bookmarksManager = new bookmarksManager_1.BookmarksManager(service, config, _this.iframe);\r\n service.router.post(\"/reports/\".concat(_this.config.uniqueId, \"/eventHooks/:eventName\"), function (req, _res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n var _b, _c;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n _a = req.params.eventName;\r\n switch (_a) {\r\n case \"preQuery\": return [3 /*break*/, 1];\r\n case \"newAccessToken\": return [3 /*break*/, 3];\r\n }\r\n return [3 /*break*/, 5];\r\n case 1:\r\n req.body = req.body || {};\r\n req.body.report = this;\r\n return [4 /*yield*/, service.invokeSDKHook((_b = this.eventHooks) === null || _b === void 0 ? void 0 : _b.applicationContextProvider, req, _res)];\r\n case 2:\r\n _d.sent();\r\n return [3 /*break*/, 6];\r\n case 3:\r\n req.body = req.body || {};\r\n req.body.report = this;\r\n return [4 /*yield*/, service.invokeSDKHook((_c = this.eventHooks) === null || _c === void 0 ? void 0 : _c.accessTokenProvider, req, _res)];\r\n case 4:\r\n _d.sent();\r\n return [3 /*break*/, 6];\r\n case 5: return [3 /*break*/, 6];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n return _this;\r\n }\r\n /**\r\n * Adds backwards compatibility for the previous load configuration, which used the reportId query parameter to specify the report ID\r\n * (e.g. http://embedded.powerbi.com/appTokenReportEmbed?reportId=854846ed-2106-4dc2-bc58-eb77533bf2f1).\r\n *\r\n * By extracting the ID we can ensure that the ID is always explicitly provided as part of the load configuration.\r\n *\r\n * @hidden\r\n * @static\r\n * @param {string} url\r\n * @returns {string}\r\n */\r\n Report.findIdFromEmbedUrl = function (url) {\r\n var reportIdRegEx = /reportId=\"?([^&]+)\"?/;\r\n var reportIdMatch = url.match(reportIdRegEx);\r\n var reportId;\r\n if (reportIdMatch) {\r\n reportId = reportIdMatch[1];\r\n }\r\n return reportId;\r\n };\r\n /**\r\n * Render a preloaded report, using phased embedding API\r\n *\r\n * ```javascript\r\n * // Load report\r\n * var report = powerbi.load(element, config);\r\n *\r\n * ...\r\n *\r\n * // Render report\r\n * report.render()\r\n * ```\r\n *\r\n * @returns {Promise<void>}\r\n */\r\n Report.prototype.render = function (config) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.service.hpm.post(\"/report/render\", config, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_1 = _a.sent();\r\n throw response_1.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Add an empty page to the report\r\n *\r\n * ```javascript\r\n * // Add a page to the report with \"Sales\" as the page display name\r\n * report.addPage(\"Sales\");\r\n * ```\r\n *\r\n * @returns {Promise<Page>}\r\n */\r\n Report.prototype.addPage = function (displayName) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var request, response, page, response_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n request = {\r\n displayName: displayName\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post(\"/report/addPage\", request, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n page = response.body;\r\n return [2 /*return*/, new page_1.Page(this, page.name, page.displayName, page.isActive, page.visibility, page.defaultSize, page.defaultDisplayOption)];\r\n case 3:\r\n response_2 = _a.sent();\r\n throw response_2.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Delete a page from a report\r\n *\r\n * ```javascript\r\n * // Delete a page from a report by pageName (PageName is different than the display name and can be acquired from the getPages API)\r\n * report.deletePage(\"ReportSection145\");\r\n * ```\r\n *\r\n * @returns {Promise<void>}\r\n */\r\n Report.prototype.deletePage = function (pageName) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.service.hpm.delete(\"/report/pages/\".concat(pageName), {}, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_3 = _a.sent();\r\n throw response_3.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Rename a page from a report\r\n *\r\n * ```javascript\r\n * // Rename a page from a report by changing displayName (pageName is different from the display name and can be acquired from the getPages API)\r\n * report.renamePage(\"ReportSection145\", \"Sales\");\r\n * ```\r\n *\r\n * @returns {Promise<void>}\r\n */\r\n Report.prototype.renamePage = function (pageName, displayName) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var page, response, response_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n page = {\r\n name: pageName,\r\n displayName: displayName,\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.put(\"/report/pages/\".concat(pageName, \"/name\"), page, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_4 = _a.sent();\r\n throw response_4.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets filters that are applied at the report level.\r\n *\r\n * ```javascript\r\n * // Get filters applied at report level\r\n * report.getFilters()\r\n * .then(filters => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @returns {Promise<IFilter[]>}\r\n */\r\n Report.prototype.getFilters = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.get(\"/report/filters\", { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_5 = _a.sent();\r\n throw response_5.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Update the filters at the report level according to the operation: Add, replace all, replace by target or remove.\r\n *\r\n * ```javascript\r\n * report.updateFilters(FiltersOperations.Add, filters)\r\n * .catch(errors => { ... });\r\n * ```\r\n *\r\n * @param {(IFilter[])} filters\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.updateFilters = function (operation, filters) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var updateFiltersRequest, response_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n updateFiltersRequest = {\r\n filtersOperation: operation,\r\n filters: filters\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post(\"/report/filters\", updateFiltersRequest, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_6 = _a.sent();\r\n throw response_6.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all filters at the report level.\r\n *\r\n * ```javascript\r\n * report.removeFilters();\r\n * ```\r\n *\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.removeFilters = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n return [2 /*return*/, this.updateFilters(powerbi_models_1.FiltersOperations.RemoveAll)];\r\n });\r\n });\r\n };\r\n /**\r\n * Sets filters at the report level.\r\n *\r\n * ```javascript\r\n * const filters: [\r\n * ...\r\n * ];\r\n *\r\n * report.setFilters(filters)\r\n * .catch(errors => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @param {(IFilter[])} filters\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.setFilters = function (filters) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response_7;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.put(\"/report/filters\", filters, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_7 = _a.sent();\r\n throw response_7.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets the report ID from the first available location: options, attribute, embed url.\r\n *\r\n * @returns {string}\r\n */\r\n Report.prototype.getId = function () {\r\n var config = this.config;\r\n var reportId = config.id || this.element.getAttribute(Report.reportIdAttribute) || Report.findIdFromEmbedUrl(config.embedUrl);\r\n if (typeof reportId !== 'string' || reportId.length === 0) {\r\n throw new Error(\"Report id is required, but it was not found. You must provide an id either as part of embed configuration or as attribute '\".concat(Report.reportIdAttribute, \"'.\"));\r\n }\r\n return reportId;\r\n };\r\n /**\r\n * Gets the list of pages within the report.\r\n *\r\n * ```javascript\r\n * report.getPages()\r\n * .then(pages => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @returns {Promise<Page[]>}\r\n */\r\n Report.prototype.getPages = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_8;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.get('/report/pages', { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body\r\n .map(function (page) { return new page_1.Page(_this, page.name, page.displayName, page.isActive, page.visibility, page.defaultSize, page.defaultDisplayOption, page.mobileSize, page.background, page.wallpaper); })];\r\n case 3:\r\n response_8 = _a.sent();\r\n throw response_8.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets a report page by its name.\r\n *\r\n * ```javascript\r\n * report.getPageByName(pageName)\r\n * .then(page => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @param {string} pageName\r\n * @returns {Promise<Page>}\r\n */\r\n Report.prototype.getPageByName = function (pageName) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, page, response_9;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.get(\"/report/pages\", { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n page = response.body.find(function (p) { return p.name === pageName; });\r\n if (!page) {\r\n return [2 /*return*/, Promise.reject(powerbi_models_1.CommonErrorCodes.NotFound)];\r\n }\r\n return [2 /*return*/, new page_1.Page(this, page.name, page.displayName, page.isActive, page.visibility, page.defaultSize, page.defaultDisplayOption, page.mobileSize, page.background, page.wallpaper)];\r\n case 3:\r\n response_9 = _a.sent();\r\n throw response_9.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets the active report page.\r\n *\r\n * ```javascript\r\n * report.getActivePage()\r\n * .then(activePage => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @returns {Promise<Page>}\r\n */\r\n Report.prototype.getActivePage = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, activePage, response_10;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.get('/report/pages', { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n activePage = response.body.find(function (page) { return page.isActive; });\r\n return [2 /*return*/, new page_1.Page(this, activePage.name, activePage.displayName, activePage.isActive, activePage.visibility, activePage.defaultSize, activePage.defaultDisplayOption, activePage.mobileSize, activePage.background, activePage.wallpaper)];\r\n case 3:\r\n response_10 = _a.sent();\r\n throw response_10.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates an instance of a Page.\r\n *\r\n * Normally you would get Page objects by calling `report.getPages()`, but in the case\r\n * that the page name is known and you want to perform an action on a page without having to retrieve it\r\n * you can create it directly.\r\n *\r\n * Note: Because you are creating the page manually there is no guarantee that the page actually exists in the report, and subsequent requests could fail.\r\n *\r\n * @param {string} name\r\n * @param {string} [displayName]\r\n * @param {boolean} [isActive]\r\n * @returns {Page}\r\n * @hidden\r\n */\r\n Report.prototype.page = function (name, displayName, isActive, visibility) {\r\n return new page_1.Page(this, name, displayName, isActive, visibility);\r\n };\r\n /**\r\n * Prints the active page of the report by invoking `window.print()` on the embed iframe component.\r\n */\r\n Report.prototype.print = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_11;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post('/report/print', null, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_11 = _a.sent();\r\n throw response_11.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sets the active page of the report.\r\n *\r\n * ```javascript\r\n * report.setPage(\"page2\")\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {string} pageName\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.setPage = function (pageName) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var page, response_12;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n page = {\r\n name: pageName,\r\n displayName: null,\r\n isActive: true\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.put('/report/pages/active', page, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_12 = _a.sent();\r\n throw response_12.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates visibility settings for the filter pane and the page navigation pane.\r\n *\r\n * ```javascript\r\n * const newSettings = {\r\n * panes: {\r\n * filters: {\r\n * visible: false\r\n * }\r\n * }\r\n * };\r\n *\r\n * report.updateSettings(newSettings)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {ISettings} settings\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.updateSettings = function (settings) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, extension, extensionsArray, response_13;\r\n var _this = this;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl) && settings.customLayout != null) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.patch('/report/settings', settings, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _c.sent();\r\n extension = settings === null || settings === void 0 ? void 0 : settings.extensions;\r\n this.commands = (_a = extension === null || extension === void 0 ? void 0 : extension.commands) !== null && _a !== void 0 ? _a : this.commands;\r\n this.groups = (_b = extension === null || extension === void 0 ? void 0 : extension.groups) !== null && _b !== void 0 ? _b : this.groups;\r\n extensionsArray = settings === null || settings === void 0 ? void 0 : settings.extensions;\r\n if (Array.isArray(extensionsArray)) {\r\n this.commands = [];\r\n extensionsArray.map(function (extensionElement) { if (extensionElement === null || extensionElement === void 0 ? void 0 : extensionElement.command) {\r\n _this.commands.push(extensionElement.command);\r\n } });\r\n }\r\n return [2 /*return*/, response];\r\n case 3:\r\n response_13 = _c.sent();\r\n throw response_13.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Validate load configuration.\r\n *\r\n * @hidden\r\n */\r\n Report.prototype.validate = function (config) {\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return (0, powerbi_models_1.validatePaginatedReportLoad)(config);\r\n }\r\n return (0, powerbi_models_1.validateReportLoad)(config);\r\n };\r\n /**\r\n * Handle config changes.\r\n *\r\n * @returns {void}\r\n */\r\n Report.prototype.configChanged = function (isBootstrap) {\r\n var config = this.config;\r\n if (this.isMobileSettings(config.settings)) {\r\n config.embedUrl = (0, util_1.addParamToUrl)(config.embedUrl, \"isMobile\", \"true\");\r\n }\r\n // Calculate settings from HTML element attributes if available.\r\n var filterPaneEnabledAttribute = this.element.getAttribute(Report.filterPaneEnabledAttribute);\r\n var navContentPaneEnabledAttribute = this.element.getAttribute(Report.navContentPaneEnabledAttribute);\r\n var elementAttrSettings = {\r\n filterPaneEnabled: (filterPaneEnabledAttribute == null) ? undefined : (filterPaneEnabledAttribute !== \"false\"),\r\n navContentPaneEnabled: (navContentPaneEnabledAttribute == null) ? undefined : (navContentPaneEnabledAttribute !== \"false\")\r\n };\r\n // Set the settings back into the config.\r\n this.config.settings = (0, util_1.assign)({}, elementAttrSettings, config.settings);\r\n if (isBootstrap) {\r\n return;\r\n }\r\n config.id = this.getId();\r\n };\r\n /**\r\n * @hidden\r\n * @returns {string}\r\n */\r\n Report.prototype.getDefaultEmbedUrlEndpoint = function () {\r\n return \"reportEmbed\";\r\n };\r\n /**\r\n * Switch Report view mode.\r\n *\r\n * @returns {Promise<void>}\r\n */\r\n Report.prototype.switchMode = function (viewMode) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newMode, url, response, response_14;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (typeof viewMode === \"string\") {\r\n newMode = viewMode;\r\n }\r\n else {\r\n newMode = this.viewModeToString(viewMode);\r\n }\r\n url = '/report/switchMode/' + newMode;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post(url, null, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_14 = _a.sent();\r\n throw response_14.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Refreshes data sources for the report.\r\n *\r\n * ```javascript\r\n * report.refresh();\r\n * ```\r\n */\r\n Report.prototype.refresh = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_15;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post('/report/refresh', null, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_15 = _a.sent();\r\n throw response_15.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * checks if the report is saved.\r\n *\r\n * ```javascript\r\n * report.isSaved()\r\n * ```\r\n *\r\n * @returns {Promise<boolean>}\r\n */\r\n Report.prototype.isSaved = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n return [4 /*yield*/, (0, util_1.isSavedInternal)(this.service.hpm, this.config.uniqueId, this.iframe.contentWindow)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Apply a theme to the report\r\n *\r\n * ```javascript\r\n * report.applyTheme(theme);\r\n * ```\r\n */\r\n Report.prototype.applyTheme = function (theme) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n return [4 /*yield*/, this.applyThemeInternal(theme)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Reset and apply the default theme of the report\r\n *\r\n * ```javascript\r\n * report.resetTheme();\r\n * ```\r\n */\r\n Report.prototype.resetTheme = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n return [4 /*yield*/, this.applyThemeInternal({})];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * get the theme of the report\r\n *\r\n * ```javascript\r\n * report.getTheme();\r\n * ```\r\n */\r\n Report.prototype.getTheme = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_16;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.get(\"/report/theme\", { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_16 = _a.sent();\r\n throw response_16.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Reset user's filters, slicers, and other data view changes to the default state of the report\r\n *\r\n * ```javascript\r\n * report.resetPersistentFilters();\r\n * ```\r\n */\r\n Report.prototype.resetPersistentFilters = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response_17;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.service.hpm.delete(\"/report/userState\", null, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n response_17 = _a.sent();\r\n throw response_17.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Save user's filters, slicers, and other data view changes of the report\r\n *\r\n * ```javascript\r\n * report.savePersistentFilters();\r\n * ```\r\n */\r\n Report.prototype.savePersistentFilters = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response_18;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.service.hpm.post(\"/report/userState\", null, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n response_18 = _a.sent();\r\n throw response_18.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns if there are user's filters, slicers, or other data view changes applied on the report.\r\n * If persistent filters is disable, returns false.\r\n *\r\n * ```javascript\r\n * report.arePersistentFiltersApplied();\r\n * ```\r\n *\r\n * @returns {Promise<boolean>}\r\n */\r\n Report.prototype.arePersistentFiltersApplied = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_19;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.service.hpm.get(\"/report/isUserStateApplied\", { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_19 = _a.sent();\r\n throw response_19.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Remove context menu extension command.\r\n *\r\n * ```javascript\r\n * report.removeContextMenuCommand(commandName, contextMenuTitle)\r\n * .catch(error => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @param {string} commandName\r\n * @param {string} contextMenuTitle\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.removeContextMenuCommand = function (commandName, contextMenuTitle) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var commandCopy, indexOfCommand, newSetting;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n commandCopy = JSON.parse(JSON.stringify(this.commands));\r\n indexOfCommand = this.findCommandMenuIndex(\"visualContextMenu\", commandCopy, commandName, contextMenuTitle);\r\n if (indexOfCommand === -1) {\r\n throw powerbi_models_1.CommonErrorCodes.NotFound;\r\n }\r\n // Delete the context menu and not the entire command, since command can have option menu as well.\r\n delete commandCopy[indexOfCommand].extend.visualContextMenu;\r\n newSetting = {\r\n extensions: {\r\n commands: commandCopy,\r\n groups: this.groups\r\n }\r\n };\r\n return [4 /*yield*/, this.updateSettings(newSetting)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Add context menu extension command.\r\n *\r\n * ```javascript\r\n * report.addContextMenuCommand(commandName, commandTitle, contextMenuTitle, menuLocation, visualName, visualType, groupName)\r\n * .catch(error => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @param {string} commandName\r\n * @param {string} commandTitle\r\n * @param {string} contextMenuTitle\r\n * @param {MenuLocation} menuLocation\r\n * @param {string} visualName\r\n * @param {string} visualType\r\n * @param {string} groupName\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.addContextMenuCommand = function (commandName, commandTitle, contextMenuTitle, menuLocation, visualName, visualType, groupName) {\r\n if (contextMenuTitle === void 0) { contextMenuTitle = commandTitle; }\r\n if (menuLocation === void 0) { menuLocation = powerbi_models_1.MenuLocation.Bottom; }\r\n if (visualName === void 0) { visualName = undefined; }\r\n if (groupName === void 0) { groupName = undefined; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newCommands, newSetting;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n newCommands = this.createMenuCommand(\"visualContextMenu\", commandName, commandTitle, contextMenuTitle, menuLocation, visualName, visualType, groupName);\r\n newSetting = {\r\n extensions: {\r\n commands: newCommands,\r\n groups: this.groups\r\n }\r\n };\r\n return [4 /*yield*/, this.updateSettings(newSetting)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Remove options menu extension command.\r\n *\r\n * ```javascript\r\n * report.removeOptionsMenuCommand(commandName, optionsMenuTitle)\r\n * .then({\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @param {string} commandName\r\n * @param {string} optionsMenuTitle\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.removeOptionsMenuCommand = function (commandName, optionsMenuTitle) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var commandCopy, indexOfCommand, newSetting;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n commandCopy = JSON.parse(JSON.stringify(this.commands));\r\n indexOfCommand = this.findCommandMenuIndex(\"visualOptionsMenu\", commandCopy, commandName, optionsMenuTitle);\r\n if (indexOfCommand === -1) {\r\n throw powerbi_models_1.CommonErrorCodes.NotFound;\r\n }\r\n // Delete the context options and not the entire command, since command can have context menu as well.\r\n delete commandCopy[indexOfCommand].extend.visualOptionsMenu;\r\n delete commandCopy[indexOfCommand].icon;\r\n newSetting = {\r\n extensions: {\r\n commands: commandCopy,\r\n groups: this.groups\r\n }\r\n };\r\n return [4 /*yield*/, this.updateSettings(newSetting)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Add options menu extension command.\r\n *\r\n * ```javascript\r\n * report.addOptionsMenuCommand(commandName, commandTitle, optionsMenuTitle, menuLocation, visualName, visualType, groupName, commandIcon)\r\n * .catch(error => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @param {string} commandName\r\n * @param {string} commandTitle\r\n * @param {string} optionMenuTitle\r\n * @param {MenuLocation} menuLocation\r\n * @param {string} visualName\r\n * @param {string} visualType\r\n * @param {string} groupName\r\n * @param {string} commandIcon\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.addOptionsMenuCommand = function (commandName, commandTitle, optionsMenuTitle, menuLocation, visualName, visualType, groupName, commandIcon) {\r\n if (optionsMenuTitle === void 0) { optionsMenuTitle = commandTitle; }\r\n if (menuLocation === void 0) { menuLocation = powerbi_models_1.MenuLocation.Bottom; }\r\n if (visualName === void 0) { visualName = undefined; }\r\n if (visualType === void 0) { visualType = undefined; }\r\n if (groupName === void 0) { groupName = undefined; }\r\n if (commandIcon === void 0) { commandIcon = undefined; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newCommands, newSetting;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n newCommands = this.createMenuCommand(\"visualOptionsMenu\", commandName, commandTitle, optionsMenuTitle, menuLocation, visualName, visualType, groupName, commandIcon);\r\n newSetting = {\r\n extensions: {\r\n commands: newCommands,\r\n groups: this.groups\r\n }\r\n };\r\n return [4 /*yield*/, this.updateSettings(newSetting)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the display state of a visual in a page.\r\n *\r\n * ```javascript\r\n * report.setVisualDisplayState(pageName, visualName, displayState)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {string} pageName\r\n * @param {string} visualName\r\n * @param {VisualContainerDisplayMode} displayState\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.setVisualDisplayState = function (pageName, visualName, displayState) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var visualLayout, newSettings;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: \r\n // Check if page name and visual name are valid\r\n return [4 /*yield*/, this.validateVisual(pageName, visualName)];\r\n case 1:\r\n // Check if page name and visual name are valid\r\n _a.sent();\r\n visualLayout = {\r\n displayState: {\r\n mode: displayState\r\n }\r\n };\r\n newSettings = this.buildLayoutSettingsObject(pageName, visualName, visualLayout);\r\n return [2 /*return*/, this.updateSettings(newSettings)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Resize a visual in a page.\r\n *\r\n * ```javascript\r\n * report.resizeVisual(pageName, visualName, width, height)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {string} pageName\r\n * @param {string} visualName\r\n * @param {number} width\r\n * @param {number} height\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.resizeVisual = function (pageName, visualName, width, height) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var visualLayout, newSettings;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: \r\n // Check if page name and visual name are valid\r\n return [4 /*yield*/, this.validateVisual(pageName, visualName)];\r\n case 1:\r\n // Check if page name and visual name are valid\r\n _a.sent();\r\n visualLayout = {\r\n width: width,\r\n height: height,\r\n };\r\n newSettings = this.buildLayoutSettingsObject(pageName, visualName, visualLayout);\r\n return [2 /*return*/, this.updateSettings(newSettings)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the size of active page in report.\r\n *\r\n * ```javascript\r\n * report.resizeActivePage(pageSizeType, width, height)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {PageSizeType} pageSizeType\r\n * @param {number} width\r\n * @param {number} height\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.resizeActivePage = function (pageSizeType, width, height) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pageSize, newSettings;\r\n return __generator(this, function (_a) {\r\n pageSize = {\r\n type: pageSizeType,\r\n width: width,\r\n height: height\r\n };\r\n newSettings = {\r\n layoutType: powerbi_models_1.LayoutType.Custom,\r\n customLayout: {\r\n pageSize: pageSize\r\n }\r\n };\r\n return [2 /*return*/, this.updateSettings(newSettings)];\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the position of a visual in a page.\r\n *\r\n * ```javascript\r\n * report.moveVisual(pageName, visualName, x, y, z)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {string} pageName\r\n * @param {string} visualName\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} z\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.moveVisual = function (pageName, visualName, x, y, z) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var visualLayout, newSettings;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: \r\n // Check if page name and visual name are valid\r\n return [4 /*yield*/, this.validateVisual(pageName, visualName)];\r\n case 1:\r\n // Check if page name and visual name are valid\r\n _a.sent();\r\n visualLayout = {\r\n x: x,\r\n y: y,\r\n z: z\r\n };\r\n newSettings = this.buildLayoutSettingsObject(pageName, visualName, visualLayout);\r\n return [2 /*return*/, this.updateSettings(newSettings)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the report layout\r\n *\r\n * ```javascript\r\n * report.switchLayout(layoutType);\r\n * ```\r\n *\r\n * @param {LayoutType} layoutType\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Report.prototype.switchLayout = function (layoutType) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isInitialMobileSettings, isPassedMobileSettings, newSetting, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n isInitialMobileSettings = this.isMobileSettings({ layoutType: this.initialLayoutType });\r\n isPassedMobileSettings = this.isMobileSettings({ layoutType: layoutType });\r\n // Check if both passed layout and initial layout are of same type.\r\n if (isInitialMobileSettings !== isPassedMobileSettings) {\r\n throw \"Switching between mobile and desktop layouts is not supported. Please reset the embed container and re-embed with required layout.\";\r\n }\r\n newSetting = {\r\n layoutType: layoutType\r\n };\r\n return [4 /*yield*/, this.updateSettings(newSetting)];\r\n case 1:\r\n response = _a.sent();\r\n this.initialLayoutType = layoutType;\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Report.prototype.createMenuCommand = function (type, commandName, commandTitle, menuTitle, menuLocation, visualName, visualType, groupName, icon) {\r\n var newCommandObj = {\r\n name: commandName,\r\n title: commandTitle,\r\n extend: {}\r\n };\r\n newCommandObj.extend[type] = {\r\n title: menuTitle,\r\n menuLocation: menuLocation,\r\n };\r\n if (type === \"visualOptionsMenu\") {\r\n newCommandObj.icon = icon;\r\n }\r\n if (groupName) {\r\n var extend = newCommandObj.extend[type];\r\n delete extend.menuLocation;\r\n var groupExtend = newCommandObj.extend[type];\r\n groupExtend.groupName = groupName;\r\n }\r\n if (visualName) {\r\n newCommandObj.selector = {\r\n $schema: \"http://powerbi.com/product/schema#visualSelector\",\r\n visualName: visualName\r\n };\r\n }\r\n if (visualType) {\r\n newCommandObj.selector = {\r\n $schema: \"http://powerbi.com/product/schema#visualTypeSelector\",\r\n visualType: visualType\r\n };\r\n }\r\n return __spreadArray(__spreadArray([], this.commands, true), [newCommandObj], false);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Report.prototype.findCommandMenuIndex = function (type, commands, commandName, menuTitle) {\r\n var indexOfCommand = -1;\r\n commands.some(function (activeMenuCommand, index) {\r\n return (activeMenuCommand.name === commandName && activeMenuCommand.extend[type] && activeMenuCommand.extend[type].title === menuTitle) ? (indexOfCommand = index, true) : false;\r\n });\r\n return indexOfCommand;\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Report.prototype.buildLayoutSettingsObject = function (pageName, visualName, visualLayout) {\r\n // Create new settings object with custom layout type\r\n var newSettings = {\r\n layoutType: powerbi_models_1.LayoutType.Custom,\r\n customLayout: {\r\n pagesLayout: {}\r\n }\r\n };\r\n newSettings.customLayout.pagesLayout[pageName] = {\r\n visualsLayout: {}\r\n };\r\n newSettings.customLayout.pagesLayout[pageName].visualsLayout[visualName] = visualLayout;\r\n return newSettings;\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Report.prototype.validateVisual = function (pageName, visualName) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var page;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getPageByName(pageName)];\r\n case 1:\r\n page = _a.sent();\r\n return [4 /*yield*/, page.getVisualByName(visualName)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Report.prototype.applyThemeInternal = function (theme) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_20;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.service.hpm.put('/report/theme', theme, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_20 = _a.sent();\r\n throw response_20.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Report.prototype.viewModeToString = function (viewMode) {\r\n var mode;\r\n switch (viewMode) {\r\n case powerbi_models_1.ViewMode.Edit:\r\n mode = \"edit\";\r\n break;\r\n case powerbi_models_1.ViewMode.View:\r\n mode = \"view\";\r\n break;\r\n }\r\n return mode;\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Report.prototype.isMobileSettings = function (settings) {\r\n return settings && (settings.layoutType === powerbi_models_1.LayoutType.MobileLandscape || settings.layoutType === powerbi_models_1.LayoutType.MobilePortrait);\r\n };\r\n /**\r\n * Return the current zoom level of the report.\r\n *\r\n * @returns {Promise<number>}\r\n */\r\n Report.prototype.getZoom = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_21;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.service.hpm.get(\"/report/zoom\", { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_21 = _a.sent();\r\n throw response_21.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sets the report's zoom level.\r\n *\r\n * @param zoomLevel zoom level to set\r\n */\r\n Report.prototype.setZoom = function (zoomLevel) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.updateSettings({ zoomLevel: zoomLevel })];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Closes all open context menus and tooltips.\r\n *\r\n * ```javascript\r\n * report.closeAllOverlays()\r\n * .then(() => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @returns {Promise<void>}\r\n */\r\n Report.prototype.closeAllOverlays = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post('/report/closeAllOverlays', null, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n error_1 = _a.sent();\r\n return [2 /*return*/, Promise.reject(error_1)];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Clears selected not popped out visuals, if flag is passed, all visuals selections will be cleared.\r\n *\r\n * ```javascript\r\n * report.clearSelectedVisuals()\r\n * .then(() => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @param {Boolean} [clearPopOutState=false]\r\n * If false / undefined visuals selection will not be cleared if one of visuals\r\n * is in popped out state (in focus, show as table, spotlight...)\r\n * @returns {Promise<void>}\r\n */\r\n Report.prototype.clearSelectedVisuals = function (clearPopOutState) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clearPopOutState = clearPopOutState === true;\r\n if ((0, util_1.isRDLEmbed)(this.config.embedUrl)) {\r\n return [2 /*return*/, Promise.reject(errors_1.APINotSupportedForRDLError)];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post(\"/report/clearSelectedVisuals/\".concat(clearPopOutState.toString()), null, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n error_2 = _a.sent();\r\n return [2 /*return*/, Promise.reject(error_2)];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /** @hidden */\r\n Report.allowedEvents = [\"filtersApplied\", \"pageChanged\", \"commandTriggered\", \"swipeStart\", \"swipeEnd\", \"bookmarkApplied\", \"dataHyperlinkClicked\", \"visualRendered\", \"visualClicked\", \"selectionChanged\", \"renderingStarted\", \"blur\"];\r\n /** @hidden */\r\n Report.reportIdAttribute = 'powerbi-report-id';\r\n /** @hidden */\r\n Report.filterPaneEnabledAttribute = 'powerbi-settings-filter-pane-enabled';\r\n /** @hidden */\r\n Report.navContentPaneEnabledAttribute = 'powerbi-settings-nav-content-pane-enabled';\r\n /** @hidden */\r\n Report.typeAttribute = 'powerbi-type';\r\n /** @hidden */\r\n Report.type = \"Report\";\r\n return Report;\r\n}(embed_1.Embed));\r\nexports.Report = Report;\r\n\n\n/***/ }),\n\n/***/ \"./src/service.ts\":\n/*!************************!*\\\n !*** ./src/service.ts ***!\n \\************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Service = void 0;\r\nvar embed_1 = __webpack_require__(/*! ./embed */ \"./src/embed.ts\");\r\nvar report_1 = __webpack_require__(/*! ./report */ \"./src/report.ts\");\r\nvar create_1 = __webpack_require__(/*! ./create */ \"./src/create.ts\");\r\nvar dashboard_1 = __webpack_require__(/*! ./dashboard */ \"./src/dashboard.ts\");\r\nvar tile_1 = __webpack_require__(/*! ./tile */ \"./src/tile.ts\");\r\nvar page_1 = __webpack_require__(/*! ./page */ \"./src/page.ts\");\r\nvar qna_1 = __webpack_require__(/*! ./qna */ \"./src/qna.ts\");\r\nvar visual_1 = __webpack_require__(/*! ./visual */ \"./src/visual.ts\");\r\nvar utils = __webpack_require__(/*! ./util */ \"./src/util.ts\");\r\nvar quickCreate_1 = __webpack_require__(/*! ./quickCreate */ \"./src/quickCreate.ts\");\r\nvar sdkConfig = __webpack_require__(/*! ./config */ \"./src/config.ts\");\r\nvar errors_1 = __webpack_require__(/*! ./errors */ \"./src/errors.ts\");\r\n/**\r\n * The Power BI Service embed component, which is the entry point to embed all other Power BI components into your application\r\n *\r\n * @export\r\n * @class Service\r\n * @implements {IService}\r\n */\r\nvar Service = /** @class */ (function () {\r\n /**\r\n * Creates an instance of a Power BI Service.\r\n *\r\n * @param {IHpmFactory} hpmFactory The http post message factory used in the postMessage communication layer\r\n * @param {IWpmpFactory} wpmpFactory The window post message factory used in the postMessage communication layer\r\n * @param {IRouterFactory} routerFactory The router factory used in the postMessage communication layer\r\n * @param {IServiceConfiguration} [config={}]\r\n * @hidden\r\n */\r\n function Service(hpmFactory, wpmpFactory, routerFactory, config) {\r\n if (config === void 0) { config = {}; }\r\n var _this = this;\r\n /**\r\n * @hidden\r\n */\r\n this.registeredComponents = {};\r\n this.wpmp = wpmpFactory(config.wpmpName, config.logMessages);\r\n this.hpm = hpmFactory(this.wpmp, null, config.version, config.type, config.sdkWrapperVersion);\r\n this.router = routerFactory(this.wpmp);\r\n this.uniqueSessionId = utils.generateUUID();\r\n /**\r\n * Adds handler for report events.\r\n */\r\n this.router.post(\"/reports/:uniqueId/events/:eventName\", function (req, _res) {\r\n var event = {\r\n type: 'report',\r\n id: req.params.uniqueId,\r\n name: req.params.eventName,\r\n value: req.body\r\n };\r\n _this.handleEvent(event);\r\n });\r\n this.router.post(\"/reports/:uniqueId/pages/:pageName/events/:eventName\", function (req, _res) {\r\n var event = {\r\n type: 'report',\r\n id: req.params.uniqueId,\r\n name: req.params.eventName,\r\n value: req.body\r\n };\r\n _this.handleEvent(event);\r\n });\r\n this.router.post(\"/reports/:uniqueId/pages/:pageName/visuals/:visualName/events/:eventName\", function (req, _res) {\r\n var event = {\r\n type: 'report',\r\n id: req.params.uniqueId,\r\n name: req.params.eventName,\r\n value: req.body\r\n };\r\n _this.handleEvent(event);\r\n });\r\n this.router.post(\"/dashboards/:uniqueId/events/:eventName\", function (req, _res) {\r\n var event = {\r\n type: 'dashboard',\r\n id: req.params.uniqueId,\r\n name: req.params.eventName,\r\n value: req.body\r\n };\r\n _this.handleEvent(event);\r\n });\r\n this.router.post(\"/tile/:uniqueId/events/:eventName\", function (req, _res) {\r\n var event = {\r\n type: 'tile',\r\n id: req.params.uniqueId,\r\n name: req.params.eventName,\r\n value: req.body\r\n };\r\n _this.handleEvent(event);\r\n });\r\n /**\r\n * Adds handler for Q&A events.\r\n */\r\n this.router.post(\"/qna/:uniqueId/events/:eventName\", function (req, _res) {\r\n var event = {\r\n type: 'qna',\r\n id: req.params.uniqueId,\r\n name: req.params.eventName,\r\n value: req.body\r\n };\r\n _this.handleEvent(event);\r\n });\r\n /**\r\n * Adds handler for front load 'ready' message.\r\n */\r\n this.router.post(\"/ready/:uniqueId\", function (req, _res) {\r\n var event = {\r\n type: 'report',\r\n id: req.params.uniqueId,\r\n name: 'ready',\r\n value: req.body\r\n };\r\n _this.handleEvent(event);\r\n });\r\n this.embeds = [];\r\n // TODO: Change when Object.assign is available.\r\n this.config = utils.assign({}, Service.defaultConfig, config);\r\n if (this.config.autoEmbedOnContentLoaded) {\r\n this.enableAutoEmbed();\r\n }\r\n }\r\n /**\r\n * Creates new report\r\n *\r\n * @param {HTMLElement} element\r\n * @param {IEmbedConfiguration} [config={}]\r\n * @returns {Embed}\r\n */\r\n Service.prototype.createReport = function (element, config) {\r\n config.type = 'create';\r\n var powerBiElement = element;\r\n var component = new create_1.Create(this, powerBiElement, config);\r\n powerBiElement.powerBiEmbed = component;\r\n this.addOrOverwriteEmbed(component, element);\r\n return component;\r\n };\r\n /**\r\n * Creates new dataset\r\n *\r\n * @param {HTMLElement} element\r\n * @param {IEmbedConfiguration} [config={}]\r\n * @returns {Embed}\r\n */\r\n Service.prototype.quickCreate = function (element, config) {\r\n config.type = 'quickCreate';\r\n var powerBiElement = element;\r\n var component = new quickCreate_1.QuickCreate(this, powerBiElement, config);\r\n powerBiElement.powerBiEmbed = component;\r\n this.addOrOverwriteEmbed(component, element);\r\n return component;\r\n };\r\n /**\r\n * TODO: Add a description here\r\n *\r\n * @param {HTMLElement} [container]\r\n * @param {IEmbedConfiguration} [config=undefined]\r\n * @returns {Embed[]}\r\n * @hidden\r\n */\r\n Service.prototype.init = function (container, config) {\r\n var _this = this;\r\n if (config === void 0) { config = undefined; }\r\n container = (container && container instanceof HTMLElement) ? container : document.body;\r\n var elements = Array.prototype.slice.call(container.querySelectorAll(\"[\".concat(embed_1.Embed.embedUrlAttribute, \"]\")));\r\n return elements.map(function (element) { return _this.embed(element, config); });\r\n };\r\n /**\r\n * Given a configuration based on an HTML element,\r\n * if the component has already been created and attached to the element, reuses the component instance and existing iframe,\r\n * otherwise creates a new component instance.\r\n *\r\n * @param {HTMLElement} element\r\n * @param {IEmbedConfigurationBase} [config={}]\r\n * @returns {Embed}\r\n */\r\n Service.prototype.embed = function (element, config) {\r\n if (config === void 0) { config = {}; }\r\n return this.embedInternal(element, config);\r\n };\r\n /**\r\n * Given a configuration based on an HTML element,\r\n * if the component has already been created and attached to the element, reuses the component instance and existing iframe,\r\n * otherwise creates a new component instance.\r\n * This is used for the phased embedding API, once element is loaded successfully, one can call 'render' on it.\r\n *\r\n * @param {HTMLElement} element\r\n * @param {IEmbedConfigurationBase} [config={}]\r\n * @returns {Embed}\r\n */\r\n Service.prototype.load = function (element, config) {\r\n if (config === void 0) { config = {}; }\r\n return this.embedInternal(element, config, /* phasedRender */ true, /* isBootstrap */ false);\r\n };\r\n /**\r\n * Given an HTML element and entityType, creates a new component instance, and bootstrap the iframe for embedding.\r\n *\r\n * @param {HTMLElement} element\r\n * @param {IBootstrapEmbedConfiguration} config: a bootstrap config which is an embed config without access token.\r\n */\r\n Service.prototype.bootstrap = function (element, config) {\r\n return this.embedInternal(element, config, /* phasedRender */ false, /* isBootstrap */ true);\r\n };\r\n /** @hidden */\r\n Service.prototype.embedInternal = function (element, config, phasedRender, isBootstrap) {\r\n if (config === void 0) { config = {}; }\r\n var component;\r\n var powerBiElement = element;\r\n if (powerBiElement.powerBiEmbed) {\r\n if (isBootstrap) {\r\n throw new Error(\"Attempted to bootstrap element \".concat(element.outerHTML, \", but the element is already a powerbi element.\"));\r\n }\r\n component = this.embedExisting(powerBiElement, config, phasedRender);\r\n }\r\n else {\r\n component = this.embedNew(powerBiElement, config, phasedRender, isBootstrap);\r\n }\r\n return component;\r\n };\r\n /** @hidden */\r\n Service.prototype.getNumberOfComponents = function () {\r\n if (!this.embeds) {\r\n return 0;\r\n }\r\n return this.embeds.length;\r\n };\r\n /** @hidden */\r\n Service.prototype.getSdkSessionId = function () {\r\n return this.uniqueSessionId;\r\n };\r\n /**\r\n * Returns the Power BI Client SDK version\r\n *\r\n * @hidden\r\n */\r\n Service.prototype.getSDKVersion = function () {\r\n return sdkConfig.default.version;\r\n };\r\n /**\r\n * Given a configuration based on a Power BI element, saves the component instance that reference the element for later lookup.\r\n *\r\n * @private\r\n * @param {IPowerBiElement} element\r\n * @param {IEmbedConfigurationBase} config\r\n * @param {boolean} phasedRender\r\n * @param {boolean} isBootstrap\r\n * @returns {Embed}\r\n * @hidden\r\n */\r\n Service.prototype.embedNew = function (element, config, phasedRender, isBootstrap) {\r\n var componentType = config.type || element.getAttribute(embed_1.Embed.typeAttribute);\r\n if (!componentType) {\r\n var scrubbedConfig = __assign(__assign({}, config), { accessToken: \"\" });\r\n throw new Error(\"Attempted to embed using config \".concat(JSON.stringify(scrubbedConfig), \" on element \").concat(element.outerHTML, \", but could not determine what type of component to embed. You must specify a type in the configuration or as an attribute such as '\").concat(embed_1.Embed.typeAttribute, \"=\\\"\").concat(report_1.Report.type.toLowerCase(), \"\\\"'.\"));\r\n }\r\n // Saves the type as part of the configuration so that it can be referenced later at a known location.\r\n config.type = componentType;\r\n var component = this.createEmbedComponent(componentType, element, config, phasedRender, isBootstrap);\r\n element.powerBiEmbed = component;\r\n this.addOrOverwriteEmbed(component, element);\r\n return component;\r\n };\r\n /**\r\n * Given component type, creates embed component instance\r\n *\r\n * @private\r\n * @param {string} componentType\r\n * @param {HTMLElement} element\r\n * @param {IEmbedConfigurationBase} config\r\n * @param {boolean} phasedRender\r\n * @param {boolean} isBootstrap\r\n * @returns {Embed}\r\n * @hidden\r\n */\r\n Service.prototype.createEmbedComponent = function (componentType, element, config, phasedRender, isBootstrap) {\r\n var Component = utils.find(function (embedComponent) { return componentType === embedComponent.type.toLowerCase(); }, Service.components);\r\n if (Component) {\r\n return new Component(this, element, config, phasedRender, isBootstrap);\r\n }\r\n // If component type is not legacy, search in registered components\r\n var registeredComponent = utils.find(function (registeredComponentType) { return componentType.toLowerCase() === registeredComponentType.toLowerCase(); }, Object.keys(this.registeredComponents));\r\n if (!registeredComponent) {\r\n throw new Error(\"Attempted to embed component of type: \".concat(componentType, \" but did not find any matching component. Please verify the type you specified is intended.\"));\r\n }\r\n return this.registeredComponents[registeredComponent](this, element, config, phasedRender, isBootstrap);\r\n };\r\n /**\r\n * Given an element that already contains an embed component, load with a new configuration.\r\n *\r\n * @private\r\n * @param {IPowerBiElement} element\r\n * @param {IEmbedConfigurationBase} config\r\n * @returns {Embed}\r\n * @hidden\r\n */\r\n Service.prototype.embedExisting = function (element, config, phasedRender) {\r\n var component = utils.find(function (x) { return x.element === element; }, this.embeds);\r\n if (!component) {\r\n var scrubbedConfig = __assign(__assign({}, config), { accessToken: \"\" });\r\n throw new Error(\"Attempted to embed using config \".concat(JSON.stringify(scrubbedConfig), \" on element \").concat(element.outerHTML, \" which already has embedded component associated, but could not find the existing component in the list of active components. This could indicate the embeds list is out of sync with the DOM, or the component is referencing the incorrect HTML element.\"));\r\n }\r\n // TODO: Multiple embedding to the same iframe is not supported in QnA\r\n if (config.type && config.type.toLowerCase() === \"qna\") {\r\n return this.embedNew(element, config);\r\n }\r\n /**\r\n * TODO: Dynamic embed type switching could be supported but there is work needed to prepare the service state and DOM cleanup.\r\n * remove all event handlers from the DOM, then reset the element to initial state which removes iframe, and removes from list of embeds\r\n * then we can call the embedNew function which would allow setting the proper embedUrl and construction of object based on the new type.\r\n */\r\n if (typeof config.type === \"string\" && config.type !== component.config.type) {\r\n /**\r\n * When loading report after create we want to use existing Iframe to optimize load period\r\n */\r\n if (config.type === \"report\" && utils.isCreate(component.config.type)) {\r\n var report = new report_1.Report(this, element, config, /* phasedRender */ false, /* isBootstrap */ false, element.powerBiEmbed.iframe);\r\n component.populateConfig(config, /* isBootstrap */ false);\r\n report.load();\r\n element.powerBiEmbed = report;\r\n this.addOrOverwriteEmbed(component, element);\r\n return report;\r\n }\r\n var scrubbedConfig = __assign(__assign({}, config), { accessToken: \"\" });\r\n throw new Error(\"Embedding on an existing element with a different type than the previous embed object is not supported. Attempted to embed using config \".concat(JSON.stringify(scrubbedConfig), \" on element \").concat(element.outerHTML, \", but the existing element contains an embed of type: \").concat(this.config.type, \" which does not match the new type: \").concat(config.type));\r\n }\r\n component.populateConfig(config, /* isBootstrap */ false);\r\n component.load(phasedRender);\r\n return component;\r\n };\r\n /**\r\n * Adds an event handler for DOMContentLoaded, which searches the DOM for elements that have the 'powerbi-embed-url' attribute,\r\n * and automatically attempts to embed a powerbi component based on information from other powerbi-* attributes.\r\n *\r\n * Note: Only runs if `config.autoEmbedOnContentLoaded` is true when the service is created.\r\n * This handler is typically useful only for applications that are rendered on the server so that all required data is available when the handler is called.\r\n *\r\n * @hidden\r\n */\r\n Service.prototype.enableAutoEmbed = function () {\r\n var _this = this;\r\n window.addEventListener('DOMContentLoaded', function (_event) { return _this.init(document.body); }, false);\r\n };\r\n /**\r\n * Returns an instance of the component associated with the element.\r\n *\r\n * @param {HTMLElement} element\r\n * @returns {(Report | Tile)}\r\n */\r\n Service.prototype.get = function (element) {\r\n var powerBiElement = element;\r\n if (!powerBiElement.powerBiEmbed) {\r\n throw new Error(\"You attempted to get an instance of powerbi component associated with element: \".concat(element.outerHTML, \" but there was no associated instance.\"));\r\n }\r\n return powerBiElement.powerBiEmbed;\r\n };\r\n /**\r\n * Finds an embed instance by the name or unique ID that is provided.\r\n *\r\n * @param {string} uniqueId\r\n * @returns {(Report | Tile)}\r\n * @hidden\r\n */\r\n Service.prototype.find = function (uniqueId) {\r\n return utils.find(function (x) { return x.config.uniqueId === uniqueId; }, this.embeds);\r\n };\r\n /**\r\n * Removes embed components whose container element is same as the given element\r\n *\r\n * @param {Embed} component\r\n * @param {HTMLElement} element\r\n * @returns {void}\r\n * @hidden\r\n */\r\n Service.prototype.addOrOverwriteEmbed = function (component, element) {\r\n // remove embeds over the same div element.\r\n this.embeds = this.embeds.filter(function (embed) {\r\n return embed.element !== element;\r\n });\r\n this.embeds.push(component);\r\n };\r\n /**\r\n * Given an HTML element that has a component embedded within it, removes the component from the list of embedded components, removes the association between the element and the component, and removes the iframe.\r\n *\r\n * @param {HTMLElement} element\r\n * @returns {void}\r\n */\r\n Service.prototype.reset = function (element) {\r\n var powerBiElement = element;\r\n if (!powerBiElement.powerBiEmbed) {\r\n return;\r\n }\r\n /** Removes the element frontLoad listener if exists. */\r\n var embedElement = powerBiElement.powerBiEmbed;\r\n if (embedElement.frontLoadHandler) {\r\n embedElement.element.removeEventListener('ready', embedElement.frontLoadHandler, false);\r\n }\r\n /** Removes all event handlers. */\r\n embedElement.allowedEvents.forEach(function (eventName) {\r\n embedElement.off(eventName);\r\n });\r\n /** Removes the component from an internal list of components. */\r\n utils.remove(function (x) { return x === powerBiElement.powerBiEmbed; }, this.embeds);\r\n /** Deletes a property from the HTML element. */\r\n delete powerBiElement.powerBiEmbed;\r\n /** Removes the iframe from the element. */\r\n var iframe = element.querySelector('iframe');\r\n if (iframe) {\r\n if (iframe.remove !== undefined) {\r\n iframe.remove();\r\n }\r\n else {\r\n /** Workaround for IE: unhandled rejection TypeError: object doesn't support property or method 'remove' */\r\n iframe.parentElement.removeChild(iframe);\r\n }\r\n }\r\n };\r\n /**\r\n * handles tile events\r\n *\r\n * @param {IEvent<any>} event\r\n * @hidden\r\n */\r\n Service.prototype.handleTileEvents = function (event) {\r\n if (event.type === 'tile') {\r\n this.handleEvent(event);\r\n }\r\n };\r\n Service.prototype.invokeSDKHook = function (hook, req, res) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var result, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!hook) {\r\n res.send(404, null);\r\n return [2 /*return*/];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, hook(req.body)];\r\n case 2:\r\n result = _a.sent();\r\n res.send(200, result);\r\n return [3 /*break*/, 4];\r\n case 3:\r\n error_1 = _a.sent();\r\n res.send(400, null);\r\n console.error(error_1);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Given an event object, finds the embed component with the matching type and ID, and invokes its handleEvent method with the event object.\r\n *\r\n * @private\r\n * @param {IEvent<any>} event\r\n * @hidden\r\n */\r\n Service.prototype.handleEvent = function (event) {\r\n var embed = utils.find(function (embed) {\r\n return (embed.config.uniqueId === event.id);\r\n }, this.embeds);\r\n if (embed) {\r\n var value = event.value;\r\n if (event.name === 'pageChanged') {\r\n var pageKey = 'newPage';\r\n var page = value[pageKey];\r\n if (!page) {\r\n throw new Error(\"Page model not found at 'event.value.\".concat(pageKey, \"'.\"));\r\n }\r\n value[pageKey] = new page_1.Page(embed, page.name, page.displayName, true /* isActive */);\r\n }\r\n utils.raiseCustomEvent(embed.element, event.name, value);\r\n }\r\n };\r\n /**\r\n * API for warm starting powerbi embedded endpoints.\r\n * Use this API to preload Power BI Embedded in the background.\r\n *\r\n * @public\r\n * @param {IEmbedConfigurationBase} [config={}]\r\n * @param {HTMLElement} [element=undefined]\r\n */\r\n Service.prototype.preload = function (config, element) {\r\n if (!utils.validateEmbedUrl(config.embedUrl)) {\r\n throw new Error(errors_1.invalidEmbedUrlErrorMessage);\r\n }\r\n var iframeContent = document.createElement(\"iframe\");\r\n iframeContent.setAttribute(\"style\", \"display:none;\");\r\n iframeContent.setAttribute(\"src\", config.embedUrl);\r\n iframeContent.setAttribute(\"scrolling\", \"no\");\r\n iframeContent.setAttribute(\"allowfullscreen\", \"false\");\r\n var node = element;\r\n if (!node) {\r\n node = document.getElementsByTagName(\"body\")[0];\r\n }\r\n node.appendChild(iframeContent);\r\n iframeContent.onload = function () {\r\n utils.raiseCustomEvent(iframeContent, \"preloaded\", {});\r\n };\r\n return iframeContent;\r\n };\r\n /**\r\n * Use this API to set SDK info\r\n *\r\n * @hidden\r\n * @param {string} type\r\n * @returns {void}\r\n */\r\n Service.prototype.setSdkInfo = function (type, version) {\r\n this.hpm.defaultHeaders['x-sdk-type'] = type;\r\n this.hpm.defaultHeaders['x-sdk-wrapper-version'] = version;\r\n };\r\n /**\r\n * API for registering external components\r\n *\r\n * @hidden\r\n * @param {string} componentType\r\n * @param {EmbedComponentFactory} embedComponentFactory\r\n * @param {string[]} routerEventUrls\r\n */\r\n Service.prototype.register = function (componentType, embedComponentFactory, routerEventUrls) {\r\n var _this = this;\r\n if (utils.find(function (embedComponent) { return componentType.toLowerCase() === embedComponent.type.toLowerCase(); }, Service.components)) {\r\n throw new Error('The component name is reserved. Cannot register a component with this name.');\r\n }\r\n if (utils.find(function (registeredComponentType) { return componentType.toLowerCase() === registeredComponentType.toLowerCase(); }, Object.keys(this.registeredComponents))) {\r\n throw new Error('A component with this type is already registered.');\r\n }\r\n this.registeredComponents[componentType] = embedComponentFactory;\r\n routerEventUrls.forEach(function (url) {\r\n if (!url.includes(':uniqueId') || !url.includes(':eventName')) {\r\n throw new Error('Invalid router event URL');\r\n }\r\n _this.router.post(url, function (req, _res) {\r\n var event = {\r\n type: componentType,\r\n id: req.params.uniqueId,\r\n name: req.params.eventName,\r\n value: req.body\r\n };\r\n _this.handleEvent(event);\r\n });\r\n });\r\n };\r\n /**\r\n * A list of components that this service can embed\r\n */\r\n Service.components = [\r\n tile_1.Tile,\r\n report_1.Report,\r\n dashboard_1.Dashboard,\r\n qna_1.Qna,\r\n visual_1.Visual\r\n ];\r\n /**\r\n * The default configuration for the service\r\n */\r\n Service.defaultConfig = {\r\n autoEmbedOnContentLoaded: false,\r\n onError: function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return console.log(args[0], args.slice(1));\r\n }\r\n };\r\n return Service;\r\n}());\r\nexports.Service = Service;\r\n\n\n/***/ }),\n\n/***/ \"./src/tile.ts\":\n/*!*********************!*\\\n !*** ./src/tile.ts ***!\n \\*********************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Tile = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar embed_1 = __webpack_require__(/*! ./embed */ \"./src/embed.ts\");\r\n/**\r\n * The Power BI tile embed component\r\n *\r\n * @export\r\n * @class Tile\r\n * @extends {Embed}\r\n */\r\nvar Tile = /** @class */ (function (_super) {\r\n __extends(Tile, _super);\r\n /**\r\n * @hidden\r\n */\r\n function Tile(service, element, baseConfig, phasedRender, isBootstrap) {\r\n var _this = this;\r\n var config = baseConfig;\r\n _this = _super.call(this, service, element, config, /* iframe */ undefined, phasedRender, isBootstrap) || this;\r\n _this.loadPath = \"/tile/load\";\r\n Array.prototype.push.apply(_this.allowedEvents, Tile.allowedEvents);\r\n return _this;\r\n }\r\n /**\r\n * The ID of the tile\r\n *\r\n * @returns {string}\r\n */\r\n Tile.prototype.getId = function () {\r\n var config = this.config;\r\n var tileId = config.id || Tile.findIdFromEmbedUrl(this.config.embedUrl);\r\n if (typeof tileId !== 'string' || tileId.length === 0) {\r\n throw new Error(\"Tile id is required, but it was not found. You must provide an id either as part of embed configuration.\");\r\n }\r\n return tileId;\r\n };\r\n /**\r\n * Validate load configuration.\r\n */\r\n Tile.prototype.validate = function (config) {\r\n var embedConfig = config;\r\n return (0, powerbi_models_1.validateTileLoad)(embedConfig);\r\n };\r\n /**\r\n * Handle config changes.\r\n *\r\n * @returns {void}\r\n */\r\n Tile.prototype.configChanged = function (isBootstrap) {\r\n if (isBootstrap) {\r\n return;\r\n }\r\n // Populate tile id into config object.\r\n this.config.id = this.getId();\r\n };\r\n /**\r\n * @hidden\r\n * @returns {string}\r\n */\r\n Tile.prototype.getDefaultEmbedUrlEndpoint = function () {\r\n return \"tileEmbed\";\r\n };\r\n /**\r\n * Adds the ability to get tileId from url.\r\n * By extracting the ID we can ensure that the ID is always explicitly provided as part of the load configuration.\r\n *\r\n * @hidden\r\n * @static\r\n * @param {string} url\r\n * @returns {string}\r\n */\r\n Tile.findIdFromEmbedUrl = function (url) {\r\n var tileIdRegEx = /tileId=\"?([^&]+)\"?/;\r\n var tileIdMatch = url.match(tileIdRegEx);\r\n var tileId;\r\n if (tileIdMatch) {\r\n tileId = tileIdMatch[1];\r\n }\r\n return tileId;\r\n };\r\n /** @hidden */\r\n Tile.type = \"Tile\";\r\n /** @hidden */\r\n Tile.allowedEvents = [\"tileClicked\", \"tileLoaded\"];\r\n return Tile;\r\n}(embed_1.Embed));\r\nexports.Tile = Tile;\r\n\n\n/***/ }),\n\n/***/ \"./src/util.ts\":\n/*!*********************!*\\\n !*** ./src/util.ts ***!\n \\*********************/\n/***/ (function(__unused_webpack_module, exports) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.validateEmbedUrl = exports.isCreate = exports.getTimeDiffInMilliseconds = exports.getRandomValue = exports.autoAuthInEmbedUrl = exports.isRDLEmbed = exports.isSavedInternal = exports.addParamToUrl = exports.generateUUID = exports.createRandomString = exports.assign = exports.remove = exports.find = exports.findIndex = exports.raiseCustomEvent = void 0;\r\n/**\r\n * @hidden\r\n */\r\nvar allowedPowerBiHostsRegex = new RegExp(/(.+\\.powerbi\\.com$)|(.+\\.fabric\\.microsoft\\.com$)|(.+\\.analysis\\.windows-int\\.net$)|(.+\\.analysis-df\\.windows\\.net$)/);\r\n/**\r\n * @hidden\r\n */\r\nvar allowedPowerBiHostsSovRegex = new RegExp(/^app\\.powerbi\\.cn$|^app(\\.mil\\.|\\.high\\.|\\.)powerbigov\\.us$|^app\\.powerbi\\.eaglex\\.ic\\.gov$|^app\\.powerbi\\.microsoft\\.scloud$/);\r\n/**\r\n * @hidden\r\n */\r\nvar expectedEmbedUrlProtocol = \"https:\";\r\n/**\r\n * Raises a custom event with event data on the specified HTML element.\r\n *\r\n * @export\r\n * @param {HTMLElement} element\r\n * @param {string} eventName\r\n * @param {*} eventData\r\n */\r\nfunction raiseCustomEvent(element, eventName, eventData) {\r\n var customEvent;\r\n if (typeof CustomEvent === 'function') {\r\n customEvent = new CustomEvent(eventName, {\r\n detail: eventData,\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n }\r\n else {\r\n customEvent = document.createEvent('CustomEvent');\r\n customEvent.initCustomEvent(eventName, true, true, eventData);\r\n }\r\n element.dispatchEvent(customEvent);\r\n}\r\nexports.raiseCustomEvent = raiseCustomEvent;\r\n/**\r\n * Finds the index of the first value in an array that matches the specified predicate.\r\n *\r\n * @export\r\n * @template T\r\n * @param {(x: T) => boolean} predicate\r\n * @param {T[]} xs\r\n * @returns {number}\r\n */\r\nfunction findIndex(predicate, xs) {\r\n if (!Array.isArray(xs)) {\r\n throw new Error(\"You attempted to call find with second parameter that was not an array. You passed: \".concat(xs));\r\n }\r\n var index;\r\n xs.some(function (x, i) {\r\n if (predicate(x)) {\r\n index = i;\r\n return true;\r\n }\r\n });\r\n return index;\r\n}\r\nexports.findIndex = findIndex;\r\n/**\r\n * Finds the first value in an array that matches the specified predicate.\r\n *\r\n * @export\r\n * @template T\r\n * @param {(x: T) => boolean} predicate\r\n * @param {T[]} xs\r\n * @returns {T}\r\n */\r\nfunction find(predicate, xs) {\r\n var index = findIndex(predicate, xs);\r\n return xs[index];\r\n}\r\nexports.find = find;\r\nfunction remove(predicate, xs) {\r\n var index = findIndex(predicate, xs);\r\n xs.splice(index, 1);\r\n}\r\nexports.remove = remove;\r\n// See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\r\n// TODO: replace in favor of using polyfill\r\n/**\r\n * Copies the values of all enumerable properties from one or more source objects to a target object, and returns the target object.\r\n *\r\n * @export\r\n * @param {any} args\r\n * @returns\r\n */\r\nfunction assign() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var target = args[0];\r\n 'use strict';\r\n if (target === undefined || target === null) {\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n var output = Object(target);\r\n for (var index = 1; index < arguments.length; index++) {\r\n var source = arguments[index];\r\n if (source !== undefined && source !== null) {\r\n for (var nextKey in source) {\r\n if (source.hasOwnProperty(nextKey)) {\r\n output[nextKey] = source[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return output;\r\n}\r\nexports.assign = assign;\r\n/**\r\n * Generates a random 5 to 6 character string.\r\n *\r\n * @export\r\n * @returns {string}\r\n */\r\nfunction createRandomString() {\r\n return getRandomValue().toString(36).substring(1);\r\n}\r\nexports.createRandomString = createRandomString;\r\n/**\r\n * Generates a 20 character uuid.\r\n *\r\n * @export\r\n * @returns {string}\r\n */\r\nfunction generateUUID() {\r\n var d = new Date().getTime();\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\r\n d += performance.now();\r\n }\r\n return 'xxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (_c) {\r\n // Generate a random number, scaled from 0 to 15.\r\n var r = (getRandomValue() % 16);\r\n // Shift 4 times to divide by 16\r\n d >>= 4;\r\n return r.toString(16);\r\n });\r\n}\r\nexports.generateUUID = generateUUID;\r\n/**\r\n * Adds a parameter to the given url\r\n *\r\n * @export\r\n * @param {string} url\r\n * @param {string} paramName\r\n * @param {string} value\r\n * @returns {string}\r\n */\r\nfunction addParamToUrl(url, paramName, value) {\r\n var parameterPrefix = url.indexOf('?') > 0 ? '&' : '?';\r\n url += parameterPrefix + paramName + '=' + value;\r\n return url;\r\n}\r\nexports.addParamToUrl = addParamToUrl;\r\n/**\r\n * Checks if the report is saved.\r\n *\r\n * @export\r\n * @param {HttpPostMessage} hpm\r\n * @param {string} uid\r\n * @param {Window} contentWindow\r\n * @returns {Promise<boolean>}\r\n */\r\nfunction isSavedInternal(hpm, uid, contentWindow) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, hpm.get('/report/hasUnsavedChanges', { uid: uid }, contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, !response.body];\r\n case 2:\r\n response_1 = _a.sent();\r\n throw response_1.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nexports.isSavedInternal = isSavedInternal;\r\n/**\r\n * Checks if the embed url is for RDL report.\r\n *\r\n * @export\r\n * @param {string} embedUrl\r\n * @returns {boolean}\r\n */\r\nfunction isRDLEmbed(embedUrl) {\r\n return embedUrl && embedUrl.toLowerCase().indexOf(\"/rdlembed?\") >= 0;\r\n}\r\nexports.isRDLEmbed = isRDLEmbed;\r\n/**\r\n * Checks if the embed url contains autoAuth=true.\r\n *\r\n * @export\r\n * @param {string} embedUrl\r\n * @returns {boolean}\r\n */\r\nfunction autoAuthInEmbedUrl(embedUrl) {\r\n return embedUrl && decodeURIComponent(embedUrl).toLowerCase().indexOf(\"autoauth=true\") >= 0;\r\n}\r\nexports.autoAuthInEmbedUrl = autoAuthInEmbedUrl;\r\n/**\r\n * Returns random number\r\n */\r\nfunction getRandomValue() {\r\n // window.msCrypto for IE\r\n var cryptoObj = window.crypto || window.msCrypto;\r\n var randomValueArray = new Uint32Array(1);\r\n cryptoObj.getRandomValues(randomValueArray);\r\n return randomValueArray[0];\r\n}\r\nexports.getRandomValue = getRandomValue;\r\n/**\r\n * Returns the time interval between two dates in milliseconds\r\n *\r\n * @export\r\n * @param {Date} start\r\n * @param {Date} end\r\n * @returns {number}\r\n */\r\nfunction getTimeDiffInMilliseconds(start, end) {\r\n return Math.abs(start.getTime() - end.getTime());\r\n}\r\nexports.getTimeDiffInMilliseconds = getTimeDiffInMilliseconds;\r\n/**\r\n * Checks if the embed type is for create\r\n *\r\n * @export\r\n * @param {string} embedType\r\n * @returns {boolean}\r\n */\r\nfunction isCreate(embedType) {\r\n return embedType === 'create' || embedType === 'quickcreate';\r\n}\r\nexports.isCreate = isCreate;\r\n/**\r\n * Checks if the embedUrl has an allowed power BI domain\r\n * @hidden\r\n */\r\nfunction validateEmbedUrl(embedUrl) {\r\n if (embedUrl) {\r\n var url = void 0;\r\n try {\r\n url = new URL(embedUrl.toLowerCase());\r\n }\r\n catch (e) {\r\n // invalid URL\r\n return false;\r\n }\r\n return url.protocol === expectedEmbedUrlProtocol &&\r\n (allowedPowerBiHostsRegex.test(url.hostname) || allowedPowerBiHostsSovRegex.test(url.hostname));\r\n }\r\n}\r\nexports.validateEmbedUrl = validateEmbedUrl;\r\n\n\n/***/ }),\n\n/***/ \"./src/visual.ts\":\n/*!***********************!*\\\n !*** ./src/visual.ts ***!\n \\***********************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Visual = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nvar report_1 = __webpack_require__(/*! ./report */ \"./src/report.ts\");\r\nvar visualDescriptor_1 = __webpack_require__(/*! ./visualDescriptor */ \"./src/visualDescriptor.ts\");\r\n/**\r\n * The Power BI Visual embed component\r\n *\r\n * @export\r\n * @class Visual\r\n */\r\nvar Visual = /** @class */ (function (_super) {\r\n __extends(Visual, _super);\r\n /**\r\n * Creates an instance of a Power BI Single Visual.\r\n *\r\n * @param {Service} service\r\n * @param {HTMLElement} element\r\n * @param {IEmbedConfiguration} config\r\n * @hidden\r\n */\r\n function Visual(service, element, baseConfig, phasedRender, isBootstrap, iframe) {\r\n return _super.call(this, service, element, baseConfig, phasedRender, isBootstrap, iframe) || this;\r\n }\r\n /**\r\n * @hidden\r\n */\r\n Visual.prototype.load = function (phasedRender) {\r\n var config = this.config;\r\n if (!config.accessToken) {\r\n // bootstrap flow.\r\n return;\r\n }\r\n if (typeof config.pageName !== 'string' || config.pageName.length === 0) {\r\n throw new Error(\"Page name is required when embedding a visual.\");\r\n }\r\n if (typeof config.visualName !== 'string' || config.visualName.length === 0) {\r\n throw new Error(\"Visual name is required, but it was not found. You must provide a visual name as part of embed configuration.\");\r\n }\r\n // calculate custom layout settings and override config.\r\n var width = config.width ? config.width : this.iframe.offsetWidth;\r\n var height = config.height ? config.height : this.iframe.offsetHeight;\r\n var pageSize = {\r\n type: powerbi_models_1.PageSizeType.Custom,\r\n width: width,\r\n height: height,\r\n };\r\n var pagesLayout = {};\r\n pagesLayout[config.pageName] = {\r\n defaultLayout: {\r\n displayState: {\r\n mode: powerbi_models_1.VisualContainerDisplayMode.Hidden\r\n }\r\n },\r\n visualsLayout: {}\r\n };\r\n pagesLayout[config.pageName].visualsLayout[config.visualName] = {\r\n displayState: {\r\n mode: powerbi_models_1.VisualContainerDisplayMode.Visible\r\n },\r\n x: 1,\r\n y: 1,\r\n z: 1,\r\n width: pageSize.width,\r\n height: pageSize.height\r\n };\r\n config.settings = config.settings || {};\r\n config.settings.filterPaneEnabled = false;\r\n config.settings.navContentPaneEnabled = false;\r\n config.settings.layoutType = powerbi_models_1.LayoutType.Custom;\r\n config.settings.customLayout = {\r\n displayOption: powerbi_models_1.DisplayOption.FitToPage,\r\n pageSize: pageSize,\r\n pagesLayout: pagesLayout\r\n };\r\n this.config = config;\r\n return _super.prototype.load.call(this, phasedRender);\r\n };\r\n /**\r\n * Gets the list of pages within the report - not supported in visual\r\n *\r\n * @returns {Promise<Page[]>}\r\n */\r\n Visual.prototype.getPages = function () {\r\n throw Visual.GetPagesNotSupportedError;\r\n };\r\n /**\r\n * Sets the active page of the report - not supported in visual\r\n *\r\n * @param {string} pageName\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Visual.prototype.setPage = function (_pageName) {\r\n throw Visual.SetPageNotSupportedError;\r\n };\r\n /**\r\n * Render a preloaded report, using phased embedding API\r\n *\r\n * @hidden\r\n * @returns {Promise<void>}\r\n */\r\n Visual.prototype.render = function (_config) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n throw Visual.RenderNotSupportedError;\r\n });\r\n });\r\n };\r\n /**\r\n * Gets the embedded visual descriptor object that contains the visual name, type, etc.\r\n *\r\n * ```javascript\r\n * visual.getVisualDescriptor()\r\n * .then(visualDetails => { ... });\r\n * ```\r\n *\r\n * @returns {Promise<VisualDescriptor>}\r\n */\r\n Visual.prototype.getVisualDescriptor = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var config, response, embeddedVisuals, visualNotFoundError, embeddedVisual, currentPage, response_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n config = this.config;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.get(\"/report/pages/\".concat(config.pageName, \"/visuals\"), { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n embeddedVisuals = response.body.filter(function (pageVisual) { return pageVisual.name === config.visualName; });\r\n if (embeddedVisuals.length === 0) {\r\n visualNotFoundError = {\r\n message: \"visualNotFound\",\r\n detailedMessage: \"Visual not found\"\r\n };\r\n throw visualNotFoundError;\r\n }\r\n embeddedVisual = embeddedVisuals[0];\r\n currentPage = this.page(config.pageName);\r\n return [2 /*return*/, new visualDescriptor_1.VisualDescriptor(currentPage, embeddedVisual.name, embeddedVisual.title, embeddedVisual.type, embeddedVisual.layout)];\r\n case 3:\r\n response_1 = _a.sent();\r\n throw response_1.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets filters that are applied to the filter level.\r\n * Default filter level is visual level.\r\n *\r\n * ```javascript\r\n * visual.getFilters(filtersLevel)\r\n * .then(filters => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @returns {Promise<IFilter[]>}\r\n */\r\n Visual.prototype.getFilters = function (filtersLevel) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, response, response_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = this.getFiltersLevelUrl(filtersLevel);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.get(url, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_2 = _a.sent();\r\n throw response_2.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates filters at the filter level.\r\n * Default filter level is visual level.\r\n *\r\n * ```javascript\r\n * const filters: [\r\n * ...\r\n * ];\r\n *\r\n * visual.updateFilters(FiltersOperations.Add, filters, filtersLevel)\r\n * .catch(errors => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @param {(IFilter[])} filters\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Visual.prototype.updateFilters = function (operation, filters, filtersLevel) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var updateFiltersRequest, url, response_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n updateFiltersRequest = {\r\n filtersOperation: operation,\r\n filters: filters\r\n };\r\n url = this.getFiltersLevelUrl(filtersLevel);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.post(url, updateFiltersRequest, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_3 = _a.sent();\r\n throw response_3.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sets filters at the filter level.\r\n * Default filter level is visual level.\r\n *\r\n * ```javascript\r\n * const filters: [\r\n * ...\r\n * ];\r\n *\r\n * visual.setFilters(filters, filtersLevel)\r\n * .catch(errors => {\r\n * ...\r\n * });\r\n * ```\r\n *\r\n * @param {(IFilter[])} filters\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Visual.prototype.setFilters = function (filters, filtersLevel) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, response_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = this.getFiltersLevelUrl(filtersLevel);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.service.hpm.put(url, filters, { uid: this.config.uniqueId }, this.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_4 = _a.sent();\r\n throw response_4.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all filters from the current filter level.\r\n * Default filter level is visual level.\r\n *\r\n * ```javascript\r\n * visual.removeFilters(filtersLevel);\r\n * ```\r\n *\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n Visual.prototype.removeFilters = function (filtersLevel) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.updateFilters(powerbi_models_1.FiltersOperations.RemoveAll, undefined, filtersLevel)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Visual.prototype.getFiltersLevelUrl = function (filtersLevel) {\r\n var config = this.config;\r\n switch (filtersLevel) {\r\n case powerbi_models_1.FiltersLevel.Report:\r\n return \"/report/filters\";\r\n case powerbi_models_1.FiltersLevel.Page:\r\n return \"/report/pages/\".concat(config.pageName, \"/filters\");\r\n default:\r\n return \"/report/pages/\".concat(config.pageName, \"/visuals/\").concat(config.visualName, \"/filters\");\r\n }\r\n };\r\n /** @hidden */\r\n Visual.type = \"visual\";\r\n /** @hidden */\r\n Visual.GetPagesNotSupportedError = \"Get pages is not supported while embedding a visual.\";\r\n /** @hidden */\r\n Visual.SetPageNotSupportedError = \"Set page is not supported while embedding a visual.\";\r\n /** @hidden */\r\n Visual.RenderNotSupportedError = \"render is not supported while embedding a visual.\";\r\n return Visual;\r\n}(report_1.Report));\r\nexports.Visual = Visual;\r\n\n\n/***/ }),\n\n/***/ \"./src/visualDescriptor.ts\":\n/*!*********************************!*\\\n !*** ./src/visualDescriptor.ts ***!\n \\*********************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.VisualDescriptor = void 0;\r\nvar powerbi_models_1 = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\n/**\r\n * A Power BI visual within a page\r\n *\r\n * @export\r\n * @class VisualDescriptor\r\n * @implements {IVisualNode}\r\n */\r\nvar VisualDescriptor = /** @class */ (function () {\r\n /**\r\n * @hidden\r\n */\r\n function VisualDescriptor(page, name, title, type, layout) {\r\n this.name = name;\r\n this.title = title;\r\n this.type = type;\r\n this.layout = layout;\r\n this.page = page;\r\n }\r\n /**\r\n * Gets all visual level filters of the current visual.\r\n *\r\n * ```javascript\r\n * visual.getFilters()\r\n * .then(filters => { ... });\r\n * ```\r\n *\r\n * @returns {(Promise<IFilter[]>)}\r\n */\r\n VisualDescriptor.prototype.getFilters = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.page.report.service.hpm.get(\"/report/pages/\".concat(this.page.name, \"/visuals/\").concat(this.name, \"/filters\"), { uid: this.page.report.config.uniqueId }, this.page.report.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_1 = _a.sent();\r\n throw response_1.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Update the filters for the current visual according to the operation: Add, replace all, replace by target or remove.\r\n *\r\n * ```javascript\r\n * visual.updateFilters(FiltersOperations.Add, filters)\r\n * .catch(errors => { ... });\r\n * ```\r\n *\r\n * @param {(IFilter[])} filters\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n VisualDescriptor.prototype.updateFilters = function (operation, filters) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var updateFiltersRequest, response_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n updateFiltersRequest = {\r\n filtersOperation: operation,\r\n filters: filters\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.page.report.service.hpm.post(\"/report/pages/\".concat(this.page.name, \"/visuals/\").concat(this.name, \"/filters\"), updateFiltersRequest, { uid: this.page.report.config.uniqueId }, this.page.report.iframe.contentWindow)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n response_2 = _a.sent();\r\n throw response_2.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all filters from the current visual.\r\n *\r\n * ```javascript\r\n * visual.removeFilters();\r\n * ```\r\n *\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n VisualDescriptor.prototype.removeFilters = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.updateFilters(powerbi_models_1.FiltersOperations.RemoveAll)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sets the filters on the current visual to 'filters'.\r\n *\r\n * ```javascript\r\n * visual.setFilters(filters);\r\n * .catch(errors => { ... });\r\n * ```\r\n *\r\n * @param {(IFilter[])} filters\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n VisualDescriptor.prototype.setFilters = function (filters) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.page.report.service.hpm.put(\"/report/pages/\".concat(this.page.name, \"/visuals/\").concat(this.name, \"/filters\"), filters, { uid: this.page.report.config.uniqueId }, this.page.report.iframe.contentWindow)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n response_3 = _a.sent();\r\n throw response_3.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Exports Visual data.\r\n * Can export up to 30K rows.\r\n *\r\n * @param rows: Optional. Default value is 30K, maximum value is 30K as well.\r\n * @param exportDataType: Optional. Default is ExportDataType.Summarized.\r\n * ```javascript\r\n * visual.exportData()\r\n * .then(data => { ... });\r\n * ```\r\n *\r\n * @returns {(Promise<IExportDataResult>)}\r\n */\r\n VisualDescriptor.prototype.exportData = function (exportDataType, rows) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var exportDataRequestBody, response, response_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n exportDataRequestBody = {\r\n rows: rows,\r\n exportDataType: exportDataType\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.page.report.service.hpm.post(\"/report/pages/\".concat(this.page.name, \"/visuals/\").concat(this.name, \"/exportData\"), exportDataRequestBody, { uid: this.page.report.config.uniqueId }, this.page.report.iframe.contentWindow)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 3:\r\n response_4 = _a.sent();\r\n throw response_4.body;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Set slicer state.\r\n * Works only for visuals of type slicer.\r\n *\r\n * @param state: A new state which contains the slicer filters.\r\n * ```javascript\r\n * visual.setSlicerState()\r\n * .then(() => { ... });\r\n * ```\r\n */\r\n VisualDescriptor.prototype.setSlicerState = function (state) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.page.report.service.hpm.put(\"/report/pages/\".concat(this.page.name, \"/visuals/\").concat(this.name, \"/slicer\"), state, { uid: this.page.report.config.uniqueId }, this.page.report.iframe.contentWindow)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n response_5 = _a.sent();\r\n throw response_5.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get slicer state.\r\n * Works only for visuals of type slicer.\r\n *\r\n * ```javascript\r\n * visual.getSlicerState()\r\n * .then(state => { ... });\r\n * ```\r\n *\r\n * @returns {(Promise<ISlicerState>)}\r\n */\r\n VisualDescriptor.prototype.getSlicerState = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.page.report.service.hpm.get(\"/report/pages/\".concat(this.page.name, \"/visuals/\").concat(this.name, \"/slicer\"), { uid: this.page.report.config.uniqueId }, this.page.report.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_6 = _a.sent();\r\n throw response_6.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Clone existing visual to a new instance.\r\n *\r\n * @returns {(Promise<ICloneVisualResponse>)}\r\n */\r\n VisualDescriptor.prototype.clone = function (request) {\r\n if (request === void 0) { request = {}; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_7;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.page.report.service.hpm.post(\"/report/pages/\".concat(this.page.name, \"/visuals/\").concat(this.name, \"/clone\"), request, { uid: this.page.report.config.uniqueId }, this.page.report.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_7 = _a.sent();\r\n throw response_7.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sort a visual by dataField and direction.\r\n *\r\n * @param request: Sort by visual request.\r\n *\r\n * ```javascript\r\n * visual.sortBy(request)\r\n * .then(() => { ... });\r\n * ```\r\n */\r\n VisualDescriptor.prototype.sortBy = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response_8;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.page.report.service.hpm.put(\"/report/pages/\".concat(this.page.name, \"/visuals/\").concat(this.name, \"/sortBy\"), request, { uid: this.page.report.config.uniqueId }, this.page.report.iframe.contentWindow)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n response_8 = _a.sent();\r\n throw response_8.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the position of a visual.\r\n *\r\n * ```javascript\r\n * visual.moveVisual(x, y, z)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} z\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n VisualDescriptor.prototype.moveVisual = function (x, y, z) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pageName, visualName, report;\r\n return __generator(this, function (_a) {\r\n pageName = this.page.name;\r\n visualName = this.name;\r\n report = this.page.report;\r\n return [2 /*return*/, report.moveVisual(pageName, visualName, x, y, z)];\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the display state of a visual.\r\n *\r\n * ```javascript\r\n * visual.setVisualDisplayState(displayState)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {VisualContainerDisplayMode} displayState\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n VisualDescriptor.prototype.setVisualDisplayState = function (displayState) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pageName, visualName, report;\r\n return __generator(this, function (_a) {\r\n pageName = this.page.name;\r\n visualName = this.name;\r\n report = this.page.report;\r\n return [2 /*return*/, report.setVisualDisplayState(pageName, visualName, displayState)];\r\n });\r\n });\r\n };\r\n /**\r\n * Resize a visual.\r\n *\r\n * ```javascript\r\n * visual.resizeVisual(width, height)\r\n * .catch(error => { ... });\r\n * ```\r\n *\r\n * @param {number} width\r\n * @param {number} height\r\n * @returns {Promise<IHttpPostMessageResponse<void>>}\r\n */\r\n VisualDescriptor.prototype.resizeVisual = function (width, height) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pageName, visualName, report;\r\n return __generator(this, function (_a) {\r\n pageName = this.page.name;\r\n visualName = this.name;\r\n report = this.page.report;\r\n return [2 /*return*/, report.resizeVisual(pageName, visualName, width, height)];\r\n });\r\n });\r\n };\r\n /**\r\n * Get insights for single visual\r\n *\r\n * ```javascript\r\n * visual.getSmartNarrativeInsights();\r\n * ```\r\n *\r\n * @returns {Promise<ISmartNarratives>}\r\n */\r\n VisualDescriptor.prototype.getSmartNarrativeInsights = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, response_9;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.page.report.service.hpm.get(\"/report/pages/\".concat(this.page.name, \"/visuals/\").concat(this.name, \"/smartNarrativeInsights\"), { uid: this.page.report.config.uniqueId }, this.page.report.iframe.contentWindow)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, response.body];\r\n case 2:\r\n response_9 = _a.sent();\r\n throw response_9.body;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return VisualDescriptor;\r\n}());\r\nexports.VisualDescriptor = VisualDescriptor;\r\n\n\n/***/ }),\n\n/***/ \"./node_modules/window-post-message-proxy/dist/windowPostMessageProxy.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/window-post-message-proxy/dist/windowPostMessageProxy.js ***!\n \\*******************************************************************************/\n/***/ ((module) => {\n\n/*! For license information please see windowPostMessageProxy.js.LICENSE.txt */\n!function(e,r){ true?module.exports=r():0}(self,(()=>(()=>{\"use strict\";var e={};return(()=>{var r=e;Object.defineProperty(r,\"__esModule\",{value:!0}),r.WindowPostMessageProxy=void 0;var s=function(){function e(r){void 0===r&&(r={processTrackingProperties:{addTrackingProperties:e.defaultAddTrackingProperties,getTrackingProperties:e.defaultGetTrackingProperties},isErrorMessage:e.defaultIsErrorMessage,receiveWindow:window,name:e.createRandomString()});var s=this;this.pendingRequestPromises={},this.addTrackingProperties=r.processTrackingProperties&&r.processTrackingProperties.addTrackingProperties||e.defaultAddTrackingProperties,this.getTrackingProperties=r.processTrackingProperties&&r.processTrackingProperties.getTrackingProperties||e.defaultGetTrackingProperties,this.isErrorMessage=r.isErrorMessage||e.defaultIsErrorMessage,this.receiveWindow=r.receiveWindow||window,this.name=r.name||e.createRandomString(),this.logMessages=r.logMessages||!1,this.eventSourceOverrideWindow=r.eventSourceOverrideWindow,this.suppressWarnings=r.suppressWarnings||!1,this.logMessages&&console.log(\"new WindowPostMessageProxy created with name: \".concat(this.name,\" receiving on window: \").concat(this.receiveWindow.document.title)),this.handlers=[],this.windowMessageHandler=function(e){return s.onMessageReceived(e)},this.start()}return e.defaultAddTrackingProperties=function(r,s){return r[e.messagePropertyName]=s,r},e.defaultGetTrackingProperties=function(r){return r[e.messagePropertyName]},e.defaultIsErrorMessage=function(e){return!!e.error},e.createDeferred=function(){var e={resolve:null,reject:null,promise:null},r=new Promise((function(r,s){e.resolve=r,e.reject=s}));return e.promise=r,e},e.createRandomString=function(){var e=window.crypto||window.msCrypto,r=new Uint32Array(1);return e.getRandomValues(r),r[0].toString(36).substring(1)},e.prototype.addHandler=function(e){this.handlers.push(e)},e.prototype.removeHandler=function(e){var r=this.handlers.indexOf(e);if(-1===r)throw new Error(\"You attempted to remove a handler but no matching handler was found.\");this.handlers.splice(r,1)},e.prototype.start=function(){this.receiveWindow.addEventListener(\"message\",this.windowMessageHandler)},e.prototype.stop=function(){this.receiveWindow.removeEventListener(\"message\",this.windowMessageHandler)},e.prototype.postMessage=function(r,s){var n={id:e.createRandomString()};this.addTrackingProperties(s,n),this.logMessages&&(console.log(\"\".concat(this.name,\" Posting message:\")),console.log(JSON.stringify(s,null,\" \"))),r.postMessage(s,\"*\");var o=e.createDeferred();return this.pendingRequestPromises[n.id]=o,o.promise},e.prototype.sendResponse=function(e,r,s){this.addTrackingProperties(r,s),this.logMessages&&(console.log(\"\".concat(this.name,\" Sending response:\")),console.log(JSON.stringify(r,null,\" \"))),e.postMessage(r,\"*\")},e.prototype.onMessageReceived=function(e){var r=this;this.logMessages&&(console.log(\"\".concat(this.name,\" Received message:\")),console.log(\"type: \".concat(e.type)),console.log(JSON.stringify(e.data,null,\" \")));var s=this.eventSourceOverrideWindow||e.source;if(s){var n=e.data;if(\"object\"==typeof n){var o,t;try{o=this.getTrackingProperties(n)}catch(e){this.suppressWarnings||console.warn(\"Proxy(\".concat(this.name,\"): Error occurred when attempting to get tracking properties from incoming message:\"),JSON.stringify(n,null,\" \"),\"Error: \",e)}if(o&&(t=this.pendingRequestPromises[o.id]),t){var i=!0;try{i=this.isErrorMessage(n)}catch(e){console.warn(\"Proxy(\".concat(this.name,\") Error occurred when trying to determine if message is consider an error response. Message: \"),JSON.stringify(n,null,\"\"),\"Error: \",e)}i?t.reject(n):t.resolve(n),delete this.pendingRequestPromises[o.id]}else this.handlers.some((function(e){var t=!1;try{t=e.test(n)}catch(e){r.suppressWarnings||console.warn(\"Proxy(\".concat(r.name,\"): Error occurred when handler was testing incoming message:\"),JSON.stringify(n,null,\" \"),\"Error: \",e)}if(t){var i=void 0;try{i=Promise.resolve(e.handle(n))}catch(e){r.suppressWarnings||console.warn(\"Proxy(\".concat(r.name,\"): Error occurred when handler was processing incoming message:\"),JSON.stringify(n,null,\" \"),\"Error: \",e),i=Promise.resolve()}return i.then((function(e){if(!e){var t=\"Handler for message: \".concat(JSON.stringify(n,null,\" \"),\" did not return a response message. The default response message will be returned instead.\");r.suppressWarnings||console.warn(\"Proxy(\".concat(r.name,\"): \").concat(t)),e={warning:t}}r.sendResponse(s,e,o)})),!0}}))||this.suppressWarnings||console.warn(\"Proxy(\".concat(this.name,\") did not handle message. Handlers: \").concat(this.handlers.length,\" Message: \").concat(JSON.stringify(n,null,\"\"),\".\"))}else this.suppressWarnings||console.warn(\"Proxy(\".concat(this.name,\"): Received message that was not an object. Discarding message\"))}},e.messagePropertyName=\"windowPostMessageProxy\",e}();r.WindowPostMessageProxy=s})(),e})()));\n//# sourceMappingURL=windowPostMessageProxy.js.map\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\nvar exports = __webpack_exports__;\n/*!*******************************!*\\\n !*** ./src/powerbi-client.ts ***!\n \\*******************************/\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.RelativeTimeFilterBuilder = exports.RelativeDateFilterBuilder = exports.TopNFilterBuilder = exports.AdvancedFilterBuilder = exports.BasicFilterBuilder = exports.Create = exports.QuickCreate = exports.VisualDescriptor = exports.Visual = exports.Qna = exports.Page = exports.Embed = exports.Tile = exports.Dashboard = exports.Report = exports.models = exports.factories = exports.service = void 0;\r\n/**\r\n * @hidden\r\n */\r\nvar models = __webpack_require__(/*! powerbi-models */ \"./node_modules/powerbi-models/dist/models.js\");\r\nexports.models = models;\r\nvar service = __webpack_require__(/*! ./service */ \"./src/service.ts\");\r\nexports.service = service;\r\nvar factories = __webpack_require__(/*! ./factories */ \"./src/factories.ts\");\r\nexports.factories = factories;\r\nvar report_1 = __webpack_require__(/*! ./report */ \"./src/report.ts\");\r\nObject.defineProperty(exports, \"Report\", ({ enumerable: true, get: function () { return report_1.Report; } }));\r\nvar dashboard_1 = __webpack_require__(/*! ./dashboard */ \"./src/dashboard.ts\");\r\nObject.defineProperty(exports, \"Dashboard\", ({ enumerable: true, get: function () { return dashboard_1.Dashboard; } }));\r\nvar tile_1 = __webpack_require__(/*! ./tile */ \"./src/tile.ts\");\r\nObject.defineProperty(exports, \"Tile\", ({ enumerable: true, get: function () { return tile_1.Tile; } }));\r\nvar embed_1 = __webpack_require__(/*! ./embed */ \"./src/embed.ts\");\r\nObject.defineProperty(exports, \"Embed\", ({ enumerable: true, get: function () { return embed_1.Embed; } }));\r\nvar page_1 = __webpack_require__(/*! ./page */ \"./src/page.ts\");\r\nObject.defineProperty(exports, \"Page\", ({ enumerable: true, get: function () { return page_1.Page; } }));\r\nvar qna_1 = __webpack_require__(/*! ./qna */ \"./src/qna.ts\");\r\nObject.defineProperty(exports, \"Qna\", ({ enumerable: true, get: function () { return qna_1.Qna; } }));\r\nvar visual_1 = __webpack_require__(/*! ./visual */ \"./src/visual.ts\");\r\nObject.defineProperty(exports, \"Visual\", ({ enumerable: true, get: function () { return visual_1.Visual; } }));\r\nvar visualDescriptor_1 = __webpack_require__(/*! ./visualDescriptor */ \"./src/visualDescriptor.ts\");\r\nObject.defineProperty(exports, \"VisualDescriptor\", ({ enumerable: true, get: function () { return visualDescriptor_1.VisualDescriptor; } }));\r\nvar quickCreate_1 = __webpack_require__(/*! ./quickCreate */ \"./src/quickCreate.ts\");\r\nObject.defineProperty(exports, \"QuickCreate\", ({ enumerable: true, get: function () { return quickCreate_1.QuickCreate; } }));\r\nvar create_1 = __webpack_require__(/*! ./create */ \"./src/create.ts\");\r\nObject.defineProperty(exports, \"Create\", ({ enumerable: true, get: function () { return create_1.Create; } }));\r\nvar FilterBuilders_1 = __webpack_require__(/*! ./FilterBuilders */ \"./src/FilterBuilders/index.ts\");\r\nObject.defineProperty(exports, \"BasicFilterBuilder\", ({ enumerable: true, get: function () { return FilterBuilders_1.BasicFilterBuilder; } }));\r\nObject.defineProperty(exports, \"AdvancedFilterBuilder\", ({ enumerable: true, get: function () { return FilterBuilders_1.AdvancedFilterBuilder; } }));\r\nObject.defineProperty(exports, \"TopNFilterBuilder\", ({ enumerable: true, get: function () { return FilterBuilders_1.TopNFilterBuilder; } }));\r\nObject.defineProperty(exports, \"RelativeDateFilterBuilder\", ({ enumerable: true, get: function () { return FilterBuilders_1.RelativeDateFilterBuilder; } }));\r\nObject.defineProperty(exports, \"RelativeTimeFilterBuilder\", ({ enumerable: true, get: function () { return FilterBuilders_1.RelativeTimeFilterBuilder; } }));\r\n/**\r\n * Makes Power BI available to the global object for use in applications that don't have module loading support.\r\n *\r\n * Note: create an instance of the class with the default configuration for normal usage, or save the class so that you can create an instance of the service.\r\n */\r\nvar powerbi = new service.Service(factories.hpmFactory, factories.wpmpFactory, factories.routerFactory);\r\n// powerBI SDK may use Power BI object under different key, in order to avoid name collisions\r\nif (window.powerbi && window.powerBISDKGlobalServiceInstanceName) {\r\n window[window.powerBISDKGlobalServiceInstanceName] = powerbi;\r\n}\r\nelse {\r\n // Default to Power BI.\r\n window.powerbi = powerbi;\r\n}\r\n\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n\n// SIG // Begin signature block\r\n// SIG // MIIr5QYJKoZIhvcNAQcCoIIr1jCCK9ICAQExDzANBglg\r\n// SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor\r\n// SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC\r\n// SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg\r\n// SIG // t5JYF1iPbd+3ZVCrBFh3RJqMcAkMZYhryNBr+nQaMxCg\r\n// SIG // ghFuMIIIfjCCB2agAwIBAgITNgAAAd9zgZcWvjL9DQAC\r\n// SIG // AAAB3zANBgkqhkiG9w0BAQsFADBBMRMwEQYKCZImiZPy\r\n// SIG // LGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRUw\r\n// SIG // EwYDVQQDEwxBTUUgQ1MgQ0EgMDEwHhcNMjQwMTIwMDEz\r\n// SIG // MzQ0WhcNMjUwMTE5MDEzMzQ0WjAkMSIwIAYDVQQDExlN\r\n// SIG // aWNyb3NvZnQgQXp1cmUgQ29kZSBTaWduMIIBIjANBgkq\r\n// SIG // hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1bnAJpGyFqbK\r\n// SIG // WMrMsnUMskYdi/KuYoGBXMtrw5PMRr1TEQYccGzrCSBH\r\n// SIG // dMGPDe1lP8YJGDJ0rDOL5nNgePQxnawI0iam7MdM3/gy\r\n// SIG // xY6wSE1HnHUYZatFShl/FG1TpINGiHxTS0bOA0qwmWId\r\n// SIG // us8gfKpC/41Jgew4XARIYYDpV0UOCx51L+6n/ol6g7sB\r\n// SIG // c/bVEwIfCRrIC0QStKErEX1AfhSRdislMc5nhVySohMp\r\n// SIG // 7Fs+JKqDPdWoNWMNFPHdHvkYACotxbdXFwPt6ijOiNR9\r\n// SIG // dXvzXSI4e6E4b6wbXxJ4MJcG0xdymTh3YSwRWdfFOL/F\r\n// SIG // Xk5W+K/eN+OgmNvkip0GuwIDAQABo4IFijCCBYYwKQYJ\r\n// SIG // KwYBBAGCNxUKBBwwGjAMBgorBgEEAYI3WwEBMAoGCCsG\r\n// SIG // AQUFBwMDMD0GCSsGAQQBgjcVBwQwMC4GJisGAQQBgjcV\r\n// SIG // CIaQ4w2E1bR4hPGLPoWb3RbOnRKBYIPdzWaGlIwyAgFk\r\n// SIG // AgEOMIICdgYIKwYBBQUHAQEEggJoMIICZDBiBggrBgEF\r\n// SIG // BQcwAoZWaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3Br\r\n// SIG // aWluZnJhL0NlcnRzL0JZMlBLSUNTQ0EwMS5BTUUuR0JM\r\n// SIG // X0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQwUgYIKwYB\r\n// SIG // BQUHMAKGRmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JZ\r\n// SIG // MlBLSUNTQ0EwMS5BTUUuR0JMX0FNRSUyMENTJTIwQ0El\r\n// SIG // MjAwMSgyKS5jcnQwUgYIKwYBBQUHMAKGRmh0dHA6Ly9j\r\n// SIG // cmwyLmFtZS5nYmwvYWlhL0JZMlBLSUNTQ0EwMS5BTUUu\r\n// SIG // R0JMX0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQwUgYI\r\n// SIG // KwYBBQUHMAKGRmh0dHA6Ly9jcmwzLmFtZS5nYmwvYWlh\r\n// SIG // L0JZMlBLSUNTQ0EwMS5BTUUuR0JMX0FNRSUyMENTJTIw\r\n// SIG // Q0ElMjAwMSgyKS5jcnQwUgYIKwYBBQUHMAKGRmh0dHA6\r\n// SIG // Ly9jcmw0LmFtZS5nYmwvYWlhL0JZMlBLSUNTQ0EwMS5B\r\n// SIG // TUUuR0JMX0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQw\r\n// SIG // ga0GCCsGAQUFBzAChoGgbGRhcDovLy9DTj1BTUUlMjBD\r\n// SIG // UyUyMENBJTIwMDEsQ049QUlBLENOPVB1YmxpYyUyMEtl\r\n// SIG // eSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZp\r\n// SIG // Z3VyYXRpb24sREM9QU1FLERDPUdCTD9jQUNlcnRpZmlj\r\n// SIG // YXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\r\n// SIG // bkF1dGhvcml0eTAdBgNVHQ4EFgQUju4tKpnu7Y7YxY8r\r\n// SIG // iI5ZhjOnGwkwDgYDVR0PAQH/BAQDAgeAMEUGA1UdEQQ+\r\n// SIG // MDykOjA4MR4wHAYDVQQLExVNaWNyb3NvZnQgQ29ycG9y\r\n// SIG // YXRpb24xFjAUBgNVBAUTDTIzNjE2Nys1MDE5NzAwggHm\r\n// SIG // BgNVHR8EggHdMIIB2TCCAdWgggHRoIIBzYY/aHR0cDov\r\n// SIG // L2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9B\r\n// SIG // TUUlMjBDUyUyMENBJTIwMDEoMikuY3JshjFodHRwOi8v\r\n// SIG // Y3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBDUyUyMENBJTIw\r\n// SIG // MDEoMikuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2Ny\r\n// SIG // bC9BTUUlMjBDUyUyMENBJTIwMDEoMikuY3JshjFodHRw\r\n// SIG // Oi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBDUyUyMENB\r\n// SIG // JTIwMDEoMikuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2Js\r\n// SIG // L2NybC9BTUUlMjBDUyUyMENBJTIwMDEoMikuY3JshoG9\r\n// SIG // bGRhcDovLy9DTj1BTUUlMjBDUyUyMENBJTIwMDEoMiks\r\n// SIG // Q049QlkyUEtJQ1NDQTAxLENOPUNEUCxDTj1QdWJsaWMl\r\n// SIG // MjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1D\r\n// SIG // b25maWd1cmF0aW9uLERDPUFNRSxEQz1HQkw/Y2VydGlm\r\n// SIG // aWNhdGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENs\r\n// SIG // YXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MB8GA1UdIwQY\r\n// SIG // MBaAFJZRhOBrb3v+2Aarw/KF5imuavnUMB8GA1UdJQQY\r\n// SIG // MBYGCisGAQQBgjdbAQEGCCsGAQUFBwMDMA0GCSqGSIb3\r\n// SIG // DQEBCwUAA4IBAQCXv2FzUgqF4rS3/1+aXyWaXqd3LI3a\r\n// SIG // pgYIPvCq/vvFzI1sHZuLYi2rCTFDwoJqeTWJ98AuBnnx\r\n// SIG // mMHxe15thTEkdoukFB44oBrugY3VkIeBMBmjaly5F5VD\r\n// SIG // O1sNmdCq0baQi9egwjkzWbghTwMrUhxbJD1q6+qtxAbo\r\n// SIG // jOj+VS4BUiogMXLp5XSaK26wa72UmYm9TiDcxRgELM1E\r\n// SIG // dMraL1uhTqfrqFYYkAqpzoXgtaaZ2T7LO7516KIMjtMY\r\n// SIG // EluNG0ZZbRn8J5TndyGf+N2To+V3nkoYOdks1RIsmK2Y\r\n// SIG // w9ezEjc0DNSSiNO/prQAuw/nmf/oNqTP/daB3Kw6vTau\r\n// SIG // EK0tMIII6DCCBtCgAwIBAgITHwAAAFHqj/accwyoOwAA\r\n// SIG // AAAAUTANBgkqhkiG9w0BAQsFADA8MRMwEQYKCZImiZPy\r\n// SIG // LGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRAw\r\n// SIG // DgYDVQQDEwdhbWVyb290MB4XDTIxMDUyMTE4NDQxNFoX\r\n// SIG // DTI2MDUyMTE4NTQxNFowQTETMBEGCgmSJomT8ixkARkW\r\n// SIG // A0dCTDETMBEGCgmSJomT8ixkARkWA0FNRTEVMBMGA1UE\r\n// SIG // AxMMQU1FIENTIENBIDAxMIIBIjANBgkqhkiG9w0BAQEF\r\n// SIG // AAOCAQ8AMIIBCgKCAQEAyZpSCX0Bno1W1yqXMhT6BUlJ\r\n// SIG // ZWpa4p3xFeiTHO4vm2Q6C/azR5xwxnyYHrkSGDtS2P9X\r\n// SIG // +KDE64V20mmEQkubxnPNeOVnE2RvdPGxgwlq+BhS3ONd\r\n// SIG // VsQPj79q7XgHM9HhzB9+qk0PC9KN1zm9p/seyiRS6JF1\r\n// SIG // dbOqRf1pUl7FAVxmgiCFgV8hHIb/rDPXig7FDi3S0yEx\r\n// SIG // 2CUDVpIq8jEhG8anUFE1WYxM+ni0S5KHwwKPKV4qyGDo\r\n// SIG // DO+9AmDoma3Chyu5WDlW5cdtqXTWsGPE3umtnX6Amlld\r\n// SIG // UFLms4OVR4guKf+n5LIBCC6bTiocfXPomqYjYTKx7AGM\r\n// SIG // faVLaaXmhQIDAQABo4IE3DCCBNgwEgYJKwYBBAGCNxUB\r\n// SIG // BAUCAwIAAjAjBgkrBgEEAYI3FQIEFgQUEmgkQiFHy9Rr\r\n// SIG // vjHPIKTACyN/P0cwHQYDVR0OBBYEFJZRhOBrb3v+2Aar\r\n// SIG // w/KF5imuavnUMIIBBAYDVR0lBIH8MIH5BgcrBgEFAgMF\r\n// SIG // BggrBgEFBQcDAQYIKwYBBQUHAwIGCisGAQQBgjcUAgEG\r\n// SIG // CSsGAQQBgjcVBgYKKwYBBAGCNwoDDAYJKwYBBAGCNxUG\r\n// SIG // BggrBgEFBQcDCQYIKwYBBQUIAgIGCisGAQQBgjdAAQEG\r\n// SIG // CysGAQQBgjcKAwQBBgorBgEEAYI3CgMEBgkrBgEEAYI3\r\n// SIG // FQUGCisGAQQBgjcUAgIGCisGAQQBgjcUAgMGCCsGAQUF\r\n// SIG // BwMDBgorBgEEAYI3WwEBBgorBgEEAYI3WwIBBgorBgEE\r\n// SIG // AYI3WwMBBgorBgEEAYI3WwUBBgorBgEEAYI3WwQBBgor\r\n// SIG // BgEEAYI3WwQCMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIA\r\n// SIG // QwBBMAsGA1UdDwQEAwIBhjASBgNVHRMBAf8ECDAGAQH/\r\n// SIG // AgEAMB8GA1UdIwQYMBaAFCleUV5krjS566ycDaeMdQHR\r\n// SIG // CQsoMIIBaAYDVR0fBIIBXzCCAVswggFXoIIBU6CCAU+G\r\n// SIG // MWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2lpbmZy\r\n// SIG // YS9jcmwvYW1lcm9vdC5jcmyGI2h0dHA6Ly9jcmwyLmFt\r\n// SIG // ZS5nYmwvY3JsL2FtZXJvb3QuY3JshiNodHRwOi8vY3Js\r\n// SIG // My5hbWUuZ2JsL2NybC9hbWVyb290LmNybIYjaHR0cDov\r\n// SIG // L2NybDEuYW1lLmdibC9jcmwvYW1lcm9vdC5jcmyGgaps\r\n// SIG // ZGFwOi8vL0NOPWFtZXJvb3QsQ049QU1FUm9vdCxDTj1D\r\n// SIG // RFAsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049\r\n// SIG // U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1BTUUs\r\n// SIG // REM9R0JMP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/\r\n// SIG // YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Q\r\n// SIG // b2ludDCCAasGCCsGAQUFBwEBBIIBnTCCAZkwRwYIKwYB\r\n// SIG // BQUHMAKGO2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9w\r\n// SIG // a2lpbmZyYS9jZXJ0cy9BTUVSb290X2FtZXJvb3QuY3J0\r\n// SIG // MDcGCCsGAQUFBzAChitodHRwOi8vY3JsMi5hbWUuZ2Js\r\n// SIG // L2FpYS9BTUVSb290X2FtZXJvb3QuY3J0MDcGCCsGAQUF\r\n// SIG // BzAChitodHRwOi8vY3JsMy5hbWUuZ2JsL2FpYS9BTUVS\r\n// SIG // b290X2FtZXJvb3QuY3J0MDcGCCsGAQUFBzAChitodHRw\r\n// SIG // Oi8vY3JsMS5hbWUuZ2JsL2FpYS9BTUVSb290X2FtZXJv\r\n// SIG // b3QuY3J0MIGiBggrBgEFBQcwAoaBlWxkYXA6Ly8vQ049\r\n// SIG // YW1lcm9vdCxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIw\r\n// SIG // U2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJh\r\n// SIG // dGlvbixEQz1BTUUsREM9R0JMP2NBQ2VydGlmaWNhdGU/\r\n// SIG // YmFzZT9vYmplY3RDbGFzcz1jZXJ0aWZpY2F0aW9uQXV0\r\n// SIG // aG9yaXR5MA0GCSqGSIb3DQEBCwUAA4ICAQBQECO3Tw/o\r\n// SIG // 317Rrd7yadqcswPx1LvIYymkaTN6KcmuRt6HKa0Xe73U\r\n// SIG // x2/AQ30TfgA9GBJngweRykKBusRzyOU17iIubJvy3gA2\r\n// SIG // 1dwtqtB0DsoEv1U/ptVu2v++doTCJ/i+GbssVXkgaX8H\r\n// SIG // +6EOGEmT4evp4GbwR4HwWlc+Dvf8HH8PdUA2Z04CvcwI\r\n// SIG // fckSipbNm84jxJ8XjmTFTWscldL9edj2NsY6iGnyJFIy\r\n// SIG // ur2PS7VRYyV3p1VAJp91gj1jRQtWEyCB8P5g9nE3z8u0\r\n// SIG // ANaU/hjwEQCrdGyravWgnf2JtG+bT26YAokbc8m+32zU\r\n// SIG // tXRO+NK3tAjhOu2FdsG3qNrF4sc7y37R/C+7Pcb/cFfh\r\n// SIG // ttqsirepZii4xStcjMODYuXzGm3IJs0b0owHG6oKd7ZO\r\n// SIG // GvHpmmh9K8/DLriD/sq8bURD10qi/wuW8zM7IpLg1vcR\r\n// SIG // 9dIK2mc0pj44pc6UX0XbttP/VEJgu3lT2eI9VjWtaKjx\r\n// SIG // 38xE9woSMyekPRtzTwgfuysF9DkJisr+yA4po/FPxpbB\r\n// SIG // w9c/hBf32DH/GFxteS2pmjgKIbMP8sDukmEq3lVvuWNJ\r\n// SIG // sybrZwQvQpvaM49fv+JKpLK5YWYEfwksYRR9wU8Hh/ID\r\n// SIG // 9hRCEkbUoQ2W7mMpsp2Nbp/kcn4ivfolUy3Q9Yf0scsQ\r\n// SIG // 6WTLYpm+AoCUJTGCGc8wghnLAgEBMFgwQTETMBEGCgmS\r\n// SIG // JomT8ixkARkWA0dCTDETMBEGCgmSJomT8ixkARkWA0FN\r\n// SIG // RTEVMBMGA1UEAxMMQU1FIENTIENBIDAxAhM2AAAB33OB\r\n// SIG // lxa+Mv0NAAIAAAHfMA0GCWCGSAFlAwQCAQUAoIGuMBkG\r\n// SIG // CSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB\r\n// SIG // gjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJ\r\n// SIG // BDEiBCCer3r1vfNnR/zZ+B4+vdKNmsF/RaLwn86Mpr1z\r\n// SIG // mSD6aDBCBgorBgEEAYI3AgEMMTQwMqAUgBIATQBpAGMA\r\n// SIG // cgBvAHMAbwBmAHShGoAYaHR0cDovL3d3dy5taWNyb3Nv\r\n// SIG // ZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBAAbc/k6jSUOa\r\n// SIG // CnAlkbT7043MLWIsix6cKZQFwZRuTPMcSBoEoOtz1gKX\r\n// SIG // gUR3TdPkT6IpjuDCIHr39ixLY2JfHvpbnjHWyKpcvaPi\r\n// SIG // 8vGRBP1UXXTFwNmkk8jP8pmL4A6wtegm+VzrDekWQHAH\r\n// SIG // kPZloumfeYSv+qJKAk4HlhOlKUXdA2mBw1Eu9mUNl4Xt\r\n// SIG // Si4Qu7vintSrJeLDyT4q+qZdqyy8Q/ziA/kDV/nVNACk\r\n// SIG // pHoU8gnTzrK3g7OT9UHw/cUUyMkp41WODs0+Sys+EEop\r\n// SIG // qVsqLpVOB08uumRq2B90r/Ir1yI0/RsKfgaLM0s/ZsZI\r\n// SIG // TRl3NQ+Y3+hMWZz6+nQnkXOhgheXMIIXkwYKKwYBBAGC\r\n// SIG // NwMDATGCF4Mwghd/BgkqhkiG9w0BBwKgghdwMIIXbAIB\r\n// SIG // AzEPMA0GCWCGSAFlAwQCAQUAMIIBUgYLKoZIhvcNAQkQ\r\n// SIG // AQSgggFBBIIBPTCCATkCAQEGCisGAQQBhFkKAwEwMTAN\r\n// SIG // BglghkgBZQMEAgEFAAQg4F2B7VzFdqdHHaCeSm3985Ji\r\n// SIG // KquTuJ0BWafHLn++Jz0CBmX8aMlS0xgTMjAyNDA0MDEw\r\n// SIG // ODM3MjUuODA1WjAEgAIB9KCB0aSBzjCByzELMAkGA1UE\r\n// SIG // BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV\r\n// SIG // BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD\r\n// SIG // b3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0IEFt\r\n// SIG // ZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVs\r\n// SIG // ZCBUU1MgRVNOOjg5MDAtMDVFMC1EOTQ3MSUwIwYDVQQD\r\n// SIG // ExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloIIR\r\n// SIG // 7TCCByAwggUIoAMCAQICEzMAAAHt4V/L1felXXMAAQAA\r\n// SIG // Ae0wDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMx\r\n// SIG // EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl\r\n// SIG // ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh\r\n// SIG // dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3Rh\r\n// SIG // bXAgUENBIDIwMTAwHhcNMjMxMjA2MTg0NTQxWhcNMjUw\r\n// SIG // MzA1MTg0NTQxWjCByzELMAkGA1UEBhMCVVMxEzARBgNV\r\n// SIG // BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx\r\n// SIG // HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEl\r\n// SIG // MCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0\r\n// SIG // aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOjg5\r\n// SIG // MDAtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQg\r\n// SIG // VGltZS1TdGFtcCBTZXJ2aWNlMIICIjANBgkqhkiG9w0B\r\n// SIG // AQEFAAOCAg8AMIICCgKCAgEAqDDCbJK66mqcnC8TwtR+\r\n// SIG // 8w+4PPDaWxGkOko3EyEW8wlcmEDbM/E2i9aahUxADy9V\r\n// SIG // +6Iy+PxGhFvlIzambP2sjMluGCKRT2T9seBQTFQnXbHh\r\n// SIG // dovmjDIwx4tC3E0GcTNrN5hTKwmQFkny2F2AyIphQc/I\r\n// SIG // 9KC1hst1YC5gUyjOMS6r+w2VM/AdkqAJmxLaetp4EpdI\r\n// SIG // TqDe90hcBPmNuErxkDFocpKRvr1w8HKVr8A3vk4J6y0e\r\n// SIG // wE0RVzeSUtunZtssukmBTEWJzBN3TBwkP1ECEEDQvJy5\r\n// SIG // iL3SpAKFhDF7SbBhKN0KzNktkgb+D6R0c0bpM07T/lAH\r\n// SIG // HhsTPScq8FED+TghJlumHIRMkQ0sD+IVPX+wdAModeD8\r\n// SIG // PbyaO43sDY3jDyJJp3si0otK7r9qMf8URrXCfcgTQuQW\r\n// SIG // kZLY8+7LT2qI0fjwwNn7gbQqPMSpZLed5lG+wGPgmRx6\r\n// SIG // oS5u+qXTBegR79k78JVQXkETdtl42lVUcAoI4CZzXsLe\r\n// SIG // z3o3K6VJ9Khy4C6vtQTdQ82LpFpE6+8E9M5dIl6/jbal\r\n// SIG // JFkjp1kX3vDdtbQerr91ZFvJxXQobW22Wc9uKXi7SRGb\r\n// SIG // jazfF3/T0zzM2VwyQSNRHIkf/dUHBqGRZlWxVW9q1CAL\r\n// SIG // NNfmZHsL24ZhlQ3n1/aGRuPyuIBlLE701vq9SWTMVE9j\r\n// SIG // MKkCAwEAAaOCAUkwggFFMB0GA1UdDgQWBBTOG/Ds994Q\r\n// SIG // KgRHypQGX9DSoeAiGTAfBgNVHSMEGDAWgBSfpxVdAF5i\r\n// SIG // XYP05dJlpxtTNRnpcjBfBgNVHR8EWDBWMFSgUqBQhk5o\r\n// SIG // dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2Ny\r\n// SIG // bC9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIw\r\n// SIG // MjAxMCgxKS5jcmwwbAYIKwYBBQUHAQEEYDBeMFwGCCsG\r\n// SIG // AQUFBzAChlBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v\r\n// SIG // cGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFRpbWUtU3Rh\r\n// SIG // bXAlMjBQQ0ElMjAyMDEwKDEpLmNydDAMBgNVHRMBAf8E\r\n// SIG // AjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMA4GA1Ud\r\n// SIG // DwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAndYC\r\n// SIG // tkXfnhi9Hh4vohOv6g2PLG27DuHpmp3KeijzfsauWQGr\r\n// SIG // YgUeI5kUYZvvVYpNBaNAy1ovzdvGxSO3V2MNPad7woqW\r\n// SIG // 48uBKIn5tDbne/+FN9Ivfu0b1u1zkN68d+/lO76vZZOs\r\n// SIG // mKRgjadI5SdfPPwrkT4KiZ36uRHXmnx9gKBuOoSlk3ge\r\n// SIG // w7l2rBrerKSTnpxnnUq3t+DFmankyENK2jiLWZxbhg8u\r\n// SIG // PsaA9akc9kFvrtoAh2hvAEI4WFDOLk4vbepLbY+nO12p\r\n// SIG // q9s61rnHg4c+7Ci7bS0ye8LOWKwNiPHE5WzAH9iltBlY\r\n// SIG // ym2Bnfi2RnbhCu/+37OBlJDKnOdRbDXRtZ/s4HO8x7tq\r\n// SIG // BhnggYOLPGUdGRcse47IJvbEhQikOQrGwL5a/+tDXZOU\r\n// SIG // 3jEfCbNpDVInLtgqmdN/N907L04JO4g9Si4H0tehxL4z\r\n// SIG // epuFSiSoIyeziSc2m7UuCUIFJyayGX8qLJOA9fK2Z4va\r\n// SIG // VMDdN1oE5nddFk8ImTruIPFJ+oinDzGP4hak7uJ7ZMxV\r\n// SIG // MQQaWxRupNQiDWZqIqxFpgrRt5cmdiHXZo7SHn05CLxl\r\n// SIG // m+Ccc8+5dpvxNpBjosQyR7GoWVZsLKDb4cuZLv4p1Pvn\r\n// SIG // Vx88PoZb6k0hU/PayBVYXJrFjwyTzUUkqTIaCd91dmWv\r\n// SIG // 5ZCnG5FDNEm0IEvarHcwggdxMIIFWaADAgECAhMzAAAA\r\n// SIG // FcXna54Cm0mZAAAAAAAVMA0GCSqGSIb3DQEBCwUAMIGI\r\n// SIG // MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv\r\n// SIG // bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj\r\n// SIG // cm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNy\r\n// SIG // b3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkg\r\n// SIG // MjAxMDAeFw0yMTA5MzAxODIyMjVaFw0zMDA5MzAxODMy\r\n// SIG // MjVaMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo\r\n// SIG // aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK\r\n// SIG // ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMT\r\n// SIG // HU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMIIC\r\n// SIG // IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5OGm\r\n// SIG // TOe0ciELeaLL1yR5vQ7VgtP97pwHB9KpbE51yMo1V/YB\r\n// SIG // f2xK4OK9uT4XYDP/XE/HZveVU3Fa4n5KWv64NmeFRiMM\r\n// SIG // tY0Tz3cywBAY6GB9alKDRLemjkZrBxTzxXb1hlDcwUTI\r\n// SIG // cVxRMTegCjhuje3XD9gmU3w5YQJ6xKr9cmmvHaus9ja+\r\n// SIG // NSZk2pg7uhp7M62AW36MEBydUv626GIl3GoPz130/o5T\r\n// SIG // z9bshVZN7928jaTjkY+yOSxRnOlwaQ3KNi1wjjHINSi9\r\n// SIG // 47SHJMPgyY9+tVSP3PoFVZhtaDuaRr3tpK56KTesy+uD\r\n// SIG // RedGbsoy1cCGMFxPLOJiss254o2I5JasAUq7vnGpF1tn\r\n// SIG // YN74kpEeHT39IM9zfUGaRnXNxF803RKJ1v2lIH1+/Nme\r\n// SIG // Rd+2ci/bfV+AutuqfjbsNkz2K26oElHovwUDo9Fzpk03\r\n// SIG // dJQcNIIP8BDyt0cY7afomXw/TNuvXsLz1dhzPUNOwTM5\r\n// SIG // TI4CvEJoLhDqhFFG4tG9ahhaYQFzymeiXtcodgLiMxhy\r\n// SIG // 16cg8ML6EgrXY28MyTZki1ugpoMhXV8wdJGUlNi5UPkL\r\n// SIG // iWHzNgY1GIRH29wb0f2y1BzFa/ZcUlFdEtsluq9QBXps\r\n// SIG // xREdcu+N+VLEhReTwDwV2xo3xwgVGD94q0W29R6HXtqP\r\n// SIG // nhZyacaue7e3PmriLq0CAwEAAaOCAd0wggHZMBIGCSsG\r\n// SIG // AQQBgjcVAQQFAgMBAAEwIwYJKwYBBAGCNxUCBBYEFCqn\r\n// SIG // Uv5kxJq+gpE8RjUpzxD/LwTuMB0GA1UdDgQWBBSfpxVd\r\n// SIG // AF5iXYP05dJlpxtTNRnpcjBcBgNVHSAEVTBTMFEGDCsG\r\n// SIG // AQQBgjdMg30BATBBMD8GCCsGAQUFBwIBFjNodHRwOi8v\r\n// SIG // d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVw\r\n// SIG // b3NpdG9yeS5odG0wEwYDVR0lBAwwCgYIKwYBBQUHAwgw\r\n// SIG // GQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0P\r\n// SIG // BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgw\r\n// SIG // FoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYDVR0fBE8w\r\n// SIG // TTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29t\r\n// SIG // L3BraS9jcmwvcHJvZHVjdHMvTWljUm9vQ2VyQXV0XzIw\r\n// SIG // MTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggr\r\n// SIG // BgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29t\r\n// SIG // L3BraS9jZXJ0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0y\r\n// SIG // My5jcnQwDQYJKoZIhvcNAQELBQADggIBAJ1VffwqreEs\r\n// SIG // H2cBMSRb4Z5yS/ypb+pcFLY+TkdkeLEGk5c9MTO1OdfC\r\n// SIG // cTY/2mRsfNB1OW27DzHkwo/7bNGhlBgi7ulmZzpTTd2Y\r\n// SIG // urYeeNg2LpypglYAA7AFvonoaeC6Ce5732pvvinLbtg/\r\n// SIG // SHUB2RjebYIM9W0jVOR4U3UkV7ndn/OOPcbzaN9l9qRW\r\n// SIG // qveVtihVJ9AkvUCgvxm2EhIRXT0n4ECWOKz3+SmJw7wX\r\n// SIG // sFSFQrP8DJ6LGYnn8AtqgcKBGUIZUnWKNsIdw2FzLixr\r\n// SIG // e24/LAl4FOmRsqlb30mjdAy87JGA0j3mSj5mO0+7hvoy\r\n// SIG // GtmW9I/2kQH2zsZ0/fZMcm8Qq3UwxTSwethQ/gpY3UA8\r\n// SIG // x1RtnWN0SCyxTkctwRQEcb9k+SS+c23Kjgm9swFXSVRk\r\n// SIG // 2XPXfx5bRAGOWhmRaw2fpCjcZxkoJLo4S5pu+yFUa2pF\r\n// SIG // EUep8beuyOiJXk+d0tBMdrVXVAmxaQFEfnyhYWxz/gq7\r\n// SIG // 7EFmPWn9y8FBSX5+k77L+DvktxW/tM4+pTFRhLy/AsGC\r\n// SIG // onsXHRWJjXD+57XQKBqJC4822rpM+Zv/Cuk0+CQ1Zyvg\r\n// SIG // DbjmjJnW4SLq8CdCPSWU5nR0W2rRnj7tfqAxM328y+l7\r\n// SIG // vzhwRNGQ8cirOoo6CGJ/2XBjU02N7oJtpQUQwXEGahC0\r\n// SIG // HVUzWLOhcGbyoYIDUDCCAjgCAQEwgfmhgdGkgc4wgcsx\r\n// SIG // CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u\r\n// SIG // MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy\r\n// SIG // b3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jv\r\n// SIG // c29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJzAlBgNVBAsT\r\n// SIG // Hm5TaGllbGQgVFNTIEVTTjo4OTAwLTA1RTAtRDk0NzEl\r\n// SIG // MCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy\r\n// SIG // dmljZaIjCgEBMAcGBSsOAwIaAxUA7h2sikwmmLGMSYfq\r\n// SIG // Fk8erlTxcPmggYMwgYCkfjB8MQswCQYDVQQGEwJVUzET\r\n// SIG // MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk\r\n// SIG // bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0\r\n// SIG // aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFt\r\n// SIG // cCBQQ0EgMjAxMDANBgkqhkiG9w0BAQsFAAIFAOm0vjYw\r\n// SIG // IhgPMjAyNDA0MDEwNTAxNDJaGA8yMDI0MDQwMjA1MDE0\r\n// SIG // MlowdzA9BgorBgEEAYRZCgQBMS8wLTAKAgUA6bS+NgIB\r\n// SIG // ADAKAgEAAgIsswIB/zAHAgEAAgIUQDAKAgUA6bYPtgIB\r\n// SIG // ADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMC\r\n// SIG // oAowCAIBAAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3\r\n// SIG // DQEBCwUAA4IBAQBtpH28I0HEsrGQSvPkm0PmZm2mUIez\r\n// SIG // RxyXL36HnWFAKO4yFNmNYv6I0+y3W+CVKZl23k7c7Rgf\r\n// SIG // CBE/TZ4VSevIr5oGz/WyShvDRvXuky2fPxrOAbMgdXu7\r\n// SIG // 3WfbE/MefrkonnKDzHITdkUJUO2bvS9HCPA6DNOBDd68\r\n// SIG // UYo65CEnFDhhOinGhshJ9CVu/25IPrpmsfLvvpLTJyID\r\n// SIG // osRsaOH8aQZ4Ar0RSf80qLs/TlhV6qHoKfCbAdExxuFb\r\n// SIG // ZXyJLIEzf2RAiR56X1wqjJHtp0KjBODMk+acuXQ40NrZ\r\n// SIG // 7KZxYxtprndybh64jY4HZOGH0lQG8WAdDa9L39zaXNb5\r\n// SIG // HKt+MYIEDTCCBAkCAQEwgZMwfDELMAkGA1UEBhMCVVMx\r\n// SIG // EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl\r\n// SIG // ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh\r\n// SIG // dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3Rh\r\n// SIG // bXAgUENBIDIwMTACEzMAAAHt4V/L1felXXMAAQAAAe0w\r\n// SIG // DQYJYIZIAWUDBAIBBQCgggFKMBoGCSqGSIb3DQEJAzEN\r\n// SIG // BgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQgMdPQ\r\n// SIG // R1PfELC+JLGZhaxfN5qA7KjhCJxmivM0F7TeHYgwgfoG\r\n// SIG // CyqGSIb3DQEJEAIvMYHqMIHnMIHkMIG9BCCNLg1oNAhb\r\n// SIG // HisStwNepdcKyMK7Eg612esUn9BeMWzKOTCBmDCBgKR+\r\n// SIG // MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n\r\n// SIG // dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN\r\n// SIG // aWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1p\r\n// SIG // Y3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAAB\r\n// SIG // 7eFfy9X3pV1zAAEAAAHtMCIEILPtHAVJ5UwJmHojQs2S\r\n// SIG // iJK33qNMza5IfJmPliDvzAQKMA0GCSqGSIb3DQEBCwUA\r\n// SIG // BIICAI8DvyPx796H8Sv1YHRhYJAF9U+v5+w0Wq9nqnPW\r\n// SIG // iFYC/Y7AeleAFrvPElRENZtr9dikp+my9wXVYs3JCu+w\r\n// SIG // o+YU4AjPZUlmAo6Bpb9wHd7SxqpMc7gcIZXGWPztkQ/j\r\n// SIG // cEZmDoXsFsb5QVMyGOGKMJW7/XF/fAiWeNruxgiIWg/v\r\n// SIG // KPEvahGbOYutXZSj5dinZwGPHqzf6py92HWOv/aBD4pX\r\n// SIG // UXV6JI0r+8VFwe09kFOBjB2dfWMoZX2MX9HzHF1esVxZ\r\n// SIG // pFjwc5sqeHP/+aNSzTlwTjmVh0JLCmTK/wm41nue5/FX\r\n// SIG // 07LnW48Qjj47yCA22QRoO0o1zKHtkXXC0qdi7BSirRgm\r\n// SIG // 8fk+Z6oMAHPoXAIGyPBOmnH1j24OBiIP/UBJlg65lbel\r\n// SIG // wRx/SP79+TuDckaG7PrTbkOchY0ONm4Xxm/QsOFoa85d\r\n// SIG // IeO/1ouwoJGBiTw2hrj/eCwPvhdWrZEsWQeDmyhOICcI\r\n// SIG // +dotONu3FLQzq7ZZyB739Jll4LOTFBz4NE3NtBq+oHtj\r\n// SIG // WbpbC36OYhSiLdUwgIyyx+po1/s7qoBYGq3gOwjlm06f\r\n// SIG // Fdmovun/1MU9+JMxZtmgfjFdl1HVQmhW6lIaSY57FNjD\r\n// SIG // KDCJ9vOtj9y1LifkOUZroSV26VRU6Vr3HhvsdIv5uz6B\r\n// SIG // QP02Ut7WoLN4M4A2X98JYZq7WSpm\r\n// SIG // End signature block\r\n","// powerbi-models v1.15.2\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"powerbi-models\"] = factory();\n\telse\n\t\troot[\"powerbi-models\"] = factory();\n})(this, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CommonErrorCodes = exports.BookmarksPlayMode = exports.ExportDataType = exports.QnaMode = exports.PageNavigationPosition = exports.BrowserPrintAdjustmentsMode = exports.AggregateFunction = exports.DataCacheMode = exports.CredentialType = exports.isPercentOfGrandTotal = exports.isColumnAggr = exports.isHierarchyLevelAggr = exports.isHierarchyLevel = exports.isColumn = exports.isMeasure = exports.getFilterType = exports.isBasicFilterWithKeys = exports.isFilterKeyColumnsTarget = exports.HierarchyIdentityFilter = exports.HierarchyFilter = exports.AdvancedFilter = exports.TupleFilter = exports.IdentityFilter = exports.BasicFilterWithKeys = exports.BasicFilter = exports.RelativeTimeFilter = exports.RelativeDateFilter = exports.TopNFilter = exports.IncludeExcludeFilter = exports.NotSupportedFilter = exports.Filter = exports.RelativeDateOperators = exports.RelativeDateFilterTimeUnit = exports.FilterType = exports.FiltersLevel = exports.FiltersOperations = exports.MenuLocation = exports.ContrastMode = exports.TokenType = exports.ViewMode = exports.Permissions = exports.SectionVisibility = exports.ReportAlignment = exports.HyperlinkClickBehavior = exports.LayoutType = exports.VisualContainerDisplayMode = exports.BackgroundType = exports.DisplayOption = exports.PageSizeType = exports.TraceType = void 0;\r\nexports.validateExportDataRequest = exports.validateQnaInterpretInputData = exports.validateLoadQnaConfiguration = exports.validateSaveAsParameters = exports.validateUpdateFiltersRequest = exports.validateFilter = exports.validatePage = exports.validateTileLoad = exports.validateDashboardLoad = exports.validateQuickCreate = exports.validateCreateReport = exports.validatePaginatedReportLoad = exports.validateReportLoad = exports.validateMenuGroupExtension = exports.validateExtension = exports.validateCustomPageSize = exports.validateVisualizationsPane = exports.validateSyncSlicersPane = exports.validateSelectionPane = exports.validatePageNavigationPane = exports.validateFieldsPane = exports.validateFiltersPane = exports.validateBookmarksPane = exports.validatePanes = exports.validateSettings = exports.validateCaptureBookmarkRequest = exports.validateApplyBookmarkStateRequest = exports.validateApplyBookmarkByNameRequest = exports.validateAddBookmarkRequest = exports.validatePlayBookmarkRequest = exports.validateSlicerState = exports.validateSlicer = exports.validateVisualSelector = exports.isIExtensionArray = exports.isIExtensions = exports.isGroupedMenuExtension = exports.isFlatMenuExtension = exports.isReportFiltersArray = exports.isOnLoadFilters = exports.VisualDataRoleKindPreference = exports.VisualDataRoleKind = exports.CommandDisplayOption = exports.SlicerTargetSelector = exports.VisualTypeSelector = exports.VisualSelector = exports.PageSelector = exports.Selector = exports.SortDirection = exports.LegendPosition = exports.TextAlignment = void 0;\r\nexports.validatePrintSettings = exports.validateZoomLevel = exports.validateCustomTheme = exports.validateCommandsSettings = exports.validateVisualSettings = exports.validateVisualHeader = void 0;\r\nvar validator_1 = __webpack_require__(1);\r\nvar TraceType;\r\n(function (TraceType) {\r\n TraceType[TraceType[\"Information\"] = 0] = \"Information\";\r\n TraceType[TraceType[\"Verbose\"] = 1] = \"Verbose\";\r\n TraceType[TraceType[\"Warning\"] = 2] = \"Warning\";\r\n TraceType[TraceType[\"Error\"] = 3] = \"Error\";\r\n TraceType[TraceType[\"ExpectedError\"] = 4] = \"ExpectedError\";\r\n TraceType[TraceType[\"UnexpectedError\"] = 5] = \"UnexpectedError\";\r\n TraceType[TraceType[\"Fatal\"] = 6] = \"Fatal\";\r\n})(TraceType = exports.TraceType || (exports.TraceType = {}));\r\nvar PageSizeType;\r\n(function (PageSizeType) {\r\n PageSizeType[PageSizeType[\"Widescreen\"] = 0] = \"Widescreen\";\r\n PageSizeType[PageSizeType[\"Standard\"] = 1] = \"Standard\";\r\n PageSizeType[PageSizeType[\"Cortana\"] = 2] = \"Cortana\";\r\n PageSizeType[PageSizeType[\"Letter\"] = 3] = \"Letter\";\r\n PageSizeType[PageSizeType[\"Custom\"] = 4] = \"Custom\";\r\n PageSizeType[PageSizeType[\"Mobile\"] = 5] = \"Mobile\";\r\n})(PageSizeType = exports.PageSizeType || (exports.PageSizeType = {}));\r\nvar DisplayOption;\r\n(function (DisplayOption) {\r\n DisplayOption[DisplayOption[\"FitToPage\"] = 0] = \"FitToPage\";\r\n DisplayOption[DisplayOption[\"FitToWidth\"] = 1] = \"FitToWidth\";\r\n DisplayOption[DisplayOption[\"ActualSize\"] = 2] = \"ActualSize\";\r\n})(DisplayOption = exports.DisplayOption || (exports.DisplayOption = {}));\r\nvar BackgroundType;\r\n(function (BackgroundType) {\r\n BackgroundType[BackgroundType[\"Default\"] = 0] = \"Default\";\r\n BackgroundType[BackgroundType[\"Transparent\"] = 1] = \"Transparent\";\r\n})(BackgroundType = exports.BackgroundType || (exports.BackgroundType = {}));\r\nvar VisualContainerDisplayMode;\r\n(function (VisualContainerDisplayMode) {\r\n VisualContainerDisplayMode[VisualContainerDisplayMode[\"Visible\"] = 0] = \"Visible\";\r\n VisualContainerDisplayMode[VisualContainerDisplayMode[\"Hidden\"] = 1] = \"Hidden\";\r\n})(VisualContainerDisplayMode = exports.VisualContainerDisplayMode || (exports.VisualContainerDisplayMode = {}));\r\nvar LayoutType;\r\n(function (LayoutType) {\r\n LayoutType[LayoutType[\"Master\"] = 0] = \"Master\";\r\n LayoutType[LayoutType[\"Custom\"] = 1] = \"Custom\";\r\n LayoutType[LayoutType[\"MobilePortrait\"] = 2] = \"MobilePortrait\";\r\n LayoutType[LayoutType[\"MobileLandscape\"] = 3] = \"MobileLandscape\";\r\n})(LayoutType = exports.LayoutType || (exports.LayoutType = {}));\r\nvar HyperlinkClickBehavior;\r\n(function (HyperlinkClickBehavior) {\r\n HyperlinkClickBehavior[HyperlinkClickBehavior[\"Navigate\"] = 0] = \"Navigate\";\r\n HyperlinkClickBehavior[HyperlinkClickBehavior[\"NavigateAndRaiseEvent\"] = 1] = \"NavigateAndRaiseEvent\";\r\n HyperlinkClickBehavior[HyperlinkClickBehavior[\"RaiseEvent\"] = 2] = \"RaiseEvent\";\r\n})(HyperlinkClickBehavior = exports.HyperlinkClickBehavior || (exports.HyperlinkClickBehavior = {}));\r\nvar ReportAlignment;\r\n(function (ReportAlignment) {\r\n ReportAlignment[ReportAlignment[\"Left\"] = 0] = \"Left\";\r\n ReportAlignment[ReportAlignment[\"Center\"] = 1] = \"Center\";\r\n ReportAlignment[ReportAlignment[\"Right\"] = 2] = \"Right\";\r\n ReportAlignment[ReportAlignment[\"None\"] = 3] = \"None\";\r\n})(ReportAlignment = exports.ReportAlignment || (exports.ReportAlignment = {}));\r\nvar SectionVisibility;\r\n(function (SectionVisibility) {\r\n SectionVisibility[SectionVisibility[\"AlwaysVisible\"] = 0] = \"AlwaysVisible\";\r\n SectionVisibility[SectionVisibility[\"HiddenInViewMode\"] = 1] = \"HiddenInViewMode\";\r\n})(SectionVisibility = exports.SectionVisibility || (exports.SectionVisibility = {}));\r\nvar Permissions;\r\n(function (Permissions) {\r\n Permissions[Permissions[\"Read\"] = 0] = \"Read\";\r\n Permissions[Permissions[\"ReadWrite\"] = 1] = \"ReadWrite\";\r\n Permissions[Permissions[\"Copy\"] = 2] = \"Copy\";\r\n Permissions[Permissions[\"Create\"] = 4] = \"Create\";\r\n Permissions[Permissions[\"All\"] = 7] = \"All\";\r\n})(Permissions = exports.Permissions || (exports.Permissions = {}));\r\nvar ViewMode;\r\n(function (ViewMode) {\r\n ViewMode[ViewMode[\"View\"] = 0] = \"View\";\r\n ViewMode[ViewMode[\"Edit\"] = 1] = \"Edit\";\r\n})(ViewMode = exports.ViewMode || (exports.ViewMode = {}));\r\nvar TokenType;\r\n(function (TokenType) {\r\n TokenType[TokenType[\"Aad\"] = 0] = \"Aad\";\r\n TokenType[TokenType[\"Embed\"] = 1] = \"Embed\";\r\n})(TokenType = exports.TokenType || (exports.TokenType = {}));\r\nvar ContrastMode;\r\n(function (ContrastMode) {\r\n ContrastMode[ContrastMode[\"None\"] = 0] = \"None\";\r\n ContrastMode[ContrastMode[\"HighContrast1\"] = 1] = \"HighContrast1\";\r\n ContrastMode[ContrastMode[\"HighContrast2\"] = 2] = \"HighContrast2\";\r\n ContrastMode[ContrastMode[\"HighContrastBlack\"] = 3] = \"HighContrastBlack\";\r\n ContrastMode[ContrastMode[\"HighContrastWhite\"] = 4] = \"HighContrastWhite\";\r\n})(ContrastMode = exports.ContrastMode || (exports.ContrastMode = {}));\r\nvar MenuLocation;\r\n(function (MenuLocation) {\r\n MenuLocation[MenuLocation[\"Bottom\"] = 0] = \"Bottom\";\r\n MenuLocation[MenuLocation[\"Top\"] = 1] = \"Top\";\r\n})(MenuLocation = exports.MenuLocation || (exports.MenuLocation = {}));\r\nvar FiltersOperations;\r\n(function (FiltersOperations) {\r\n FiltersOperations[FiltersOperations[\"RemoveAll\"] = 0] = \"RemoveAll\";\r\n FiltersOperations[FiltersOperations[\"ReplaceAll\"] = 1] = \"ReplaceAll\";\r\n FiltersOperations[FiltersOperations[\"Add\"] = 2] = \"Add\";\r\n FiltersOperations[FiltersOperations[\"Replace\"] = 3] = \"Replace\";\r\n})(FiltersOperations = exports.FiltersOperations || (exports.FiltersOperations = {}));\r\nvar FiltersLevel;\r\n(function (FiltersLevel) {\r\n FiltersLevel[FiltersLevel[\"Report\"] = 0] = \"Report\";\r\n FiltersLevel[FiltersLevel[\"Page\"] = 1] = \"Page\";\r\n FiltersLevel[FiltersLevel[\"Visual\"] = 2] = \"Visual\";\r\n})(FiltersLevel = exports.FiltersLevel || (exports.FiltersLevel = {}));\r\nvar FilterType;\r\n(function (FilterType) {\r\n FilterType[FilterType[\"Advanced\"] = 0] = \"Advanced\";\r\n FilterType[FilterType[\"Basic\"] = 1] = \"Basic\";\r\n FilterType[FilterType[\"Unknown\"] = 2] = \"Unknown\";\r\n FilterType[FilterType[\"IncludeExclude\"] = 3] = \"IncludeExclude\";\r\n FilterType[FilterType[\"RelativeDate\"] = 4] = \"RelativeDate\";\r\n FilterType[FilterType[\"TopN\"] = 5] = \"TopN\";\r\n FilterType[FilterType[\"Tuple\"] = 6] = \"Tuple\";\r\n FilterType[FilterType[\"RelativeTime\"] = 7] = \"RelativeTime\";\r\n FilterType[FilterType[\"Identity\"] = 8] = \"Identity\";\r\n FilterType[FilterType[\"Hierarchy\"] = 9] = \"Hierarchy\";\r\n FilterType[FilterType[\"HierarchyIdentity\"] = 10] = \"HierarchyIdentity\";\r\n})(FilterType = exports.FilterType || (exports.FilterType = {}));\r\nvar RelativeDateFilterTimeUnit;\r\n(function (RelativeDateFilterTimeUnit) {\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Days\"] = 0] = \"Days\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Weeks\"] = 1] = \"Weeks\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"CalendarWeeks\"] = 2] = \"CalendarWeeks\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Months\"] = 3] = \"Months\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"CalendarMonths\"] = 4] = \"CalendarMonths\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Years\"] = 5] = \"Years\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"CalendarYears\"] = 6] = \"CalendarYears\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Minutes\"] = 7] = \"Minutes\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Hours\"] = 8] = \"Hours\";\r\n})(RelativeDateFilterTimeUnit = exports.RelativeDateFilterTimeUnit || (exports.RelativeDateFilterTimeUnit = {}));\r\nvar RelativeDateOperators;\r\n(function (RelativeDateOperators) {\r\n RelativeDateOperators[RelativeDateOperators[\"InLast\"] = 0] = \"InLast\";\r\n RelativeDateOperators[RelativeDateOperators[\"InThis\"] = 1] = \"InThis\";\r\n RelativeDateOperators[RelativeDateOperators[\"InNext\"] = 2] = \"InNext\";\r\n})(RelativeDateOperators = exports.RelativeDateOperators || (exports.RelativeDateOperators = {}));\r\nvar Filter = /** @class */ (function () {\r\n function Filter(target, filterType) {\r\n this.target = target;\r\n this.filterType = filterType;\r\n }\r\n Filter.prototype.toJSON = function () {\r\n var filter = {\r\n $schema: this.schemaUrl,\r\n target: this.target,\r\n filterType: this.filterType\r\n };\r\n // Add displaySettings only when defined\r\n if (this.displaySettings !== undefined) {\r\n filter.displaySettings = this.displaySettings;\r\n }\r\n return filter;\r\n };\r\n return Filter;\r\n}());\r\nexports.Filter = Filter;\r\nvar NotSupportedFilter = /** @class */ (function (_super) {\r\n __extends(NotSupportedFilter, _super);\r\n function NotSupportedFilter(target, message, notSupportedTypeName) {\r\n var _this = _super.call(this, target, FilterType.Unknown) || this;\r\n _this.message = message;\r\n _this.notSupportedTypeName = notSupportedTypeName;\r\n _this.schemaUrl = NotSupportedFilter.schemaUrl;\r\n return _this;\r\n }\r\n NotSupportedFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.message = this.message;\r\n filter.notSupportedTypeName = this.notSupportedTypeName;\r\n return filter;\r\n };\r\n NotSupportedFilter.schemaUrl = \"http://powerbi.com/product/schema#notSupported\";\r\n return NotSupportedFilter;\r\n}(Filter));\r\nexports.NotSupportedFilter = NotSupportedFilter;\r\nvar IncludeExcludeFilter = /** @class */ (function (_super) {\r\n __extends(IncludeExcludeFilter, _super);\r\n function IncludeExcludeFilter(target, isExclude, values) {\r\n var _this = _super.call(this, target, FilterType.IncludeExclude) || this;\r\n _this.target = target;\r\n _this.values = values;\r\n _this.isExclude = isExclude;\r\n _this.schemaUrl = IncludeExcludeFilter.schemaUrl;\r\n return _this;\r\n }\r\n IncludeExcludeFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.isExclude = this.isExclude;\r\n filter.values = this.values;\r\n return filter;\r\n };\r\n IncludeExcludeFilter.schemaUrl = \"http://powerbi.com/product/schema#includeExclude\";\r\n return IncludeExcludeFilter;\r\n}(Filter));\r\nexports.IncludeExcludeFilter = IncludeExcludeFilter;\r\nvar TopNFilter = /** @class */ (function (_super) {\r\n __extends(TopNFilter, _super);\r\n function TopNFilter(target, operator, itemCount, orderBy) {\r\n var _this = _super.call(this, target, FilterType.TopN) || this;\r\n _this.operator = operator;\r\n _this.itemCount = itemCount;\r\n _this.schemaUrl = TopNFilter.schemaUrl;\r\n _this.orderBy = orderBy;\r\n return _this;\r\n }\r\n TopNFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.itemCount = this.itemCount;\r\n filter.orderBy = this.orderBy;\r\n return filter;\r\n };\r\n TopNFilter.schemaUrl = \"http://powerbi.com/product/schema#topN\";\r\n return TopNFilter;\r\n}(Filter));\r\nexports.TopNFilter = TopNFilter;\r\nvar RelativeDateFilter = /** @class */ (function (_super) {\r\n __extends(RelativeDateFilter, _super);\r\n function RelativeDateFilter(target, operator, timeUnitsCount, timeUnitType, includeToday) {\r\n var _this = _super.call(this, target, FilterType.RelativeDate) || this;\r\n _this.operator = operator;\r\n _this.timeUnitsCount = timeUnitsCount;\r\n _this.timeUnitType = timeUnitType;\r\n _this.includeToday = includeToday;\r\n _this.schemaUrl = RelativeDateFilter.schemaUrl;\r\n return _this;\r\n }\r\n RelativeDateFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.timeUnitsCount = this.timeUnitsCount;\r\n filter.timeUnitType = this.timeUnitType;\r\n filter.includeToday = this.includeToday;\r\n return filter;\r\n };\r\n RelativeDateFilter.schemaUrl = \"http://powerbi.com/product/schema#relativeDate\";\r\n return RelativeDateFilter;\r\n}(Filter));\r\nexports.RelativeDateFilter = RelativeDateFilter;\r\nvar RelativeTimeFilter = /** @class */ (function (_super) {\r\n __extends(RelativeTimeFilter, _super);\r\n function RelativeTimeFilter(target, operator, timeUnitsCount, timeUnitType) {\r\n var _this = _super.call(this, target, FilterType.RelativeTime) || this;\r\n _this.operator = operator;\r\n _this.timeUnitsCount = timeUnitsCount;\r\n _this.timeUnitType = timeUnitType;\r\n _this.schemaUrl = RelativeTimeFilter.schemaUrl;\r\n return _this;\r\n }\r\n RelativeTimeFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.timeUnitsCount = this.timeUnitsCount;\r\n filter.timeUnitType = this.timeUnitType;\r\n return filter;\r\n };\r\n RelativeTimeFilter.schemaUrl = \"http://powerbi.com/product/schema#relativeTime\";\r\n return RelativeTimeFilter;\r\n}(Filter));\r\nexports.RelativeTimeFilter = RelativeTimeFilter;\r\nvar BasicFilter = /** @class */ (function (_super) {\r\n __extends(BasicFilter, _super);\r\n function BasicFilter(target, operator) {\r\n var values = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n values[_i - 2] = arguments[_i];\r\n }\r\n var _this = _super.call(this, target, FilterType.Basic) || this;\r\n _this.operator = operator;\r\n _this.schemaUrl = BasicFilter.schemaUrl;\r\n if (values.length === 0 && operator !== \"All\") {\r\n throw new Error(\"values must be a non-empty array unless your operator is \\\"All\\\".\");\r\n }\r\n /**\r\n * Accept values as array instead of as individual arguments\r\n * new BasicFilter('a', 'b', 1, 2);\r\n * new BasicFilter('a', 'b', [1,2]);\r\n */\r\n if (Array.isArray(values[0])) {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\r\n _this.values = values[0];\r\n }\r\n else {\r\n _this.values = values;\r\n }\r\n return _this;\r\n }\r\n BasicFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.values = this.values;\r\n filter.requireSingleSelection = !!this.requireSingleSelection;\r\n return filter;\r\n };\r\n BasicFilter.schemaUrl = \"http://powerbi.com/product/schema#basic\";\r\n return BasicFilter;\r\n}(Filter));\r\nexports.BasicFilter = BasicFilter;\r\nvar BasicFilterWithKeys = /** @class */ (function (_super) {\r\n __extends(BasicFilterWithKeys, _super);\r\n function BasicFilterWithKeys(target, operator, values, keyValues) {\r\n var _this = _super.call(this, target, operator, values) || this;\r\n _this.keyValues = keyValues;\r\n _this.target = target;\r\n var numberOfKeys = target.keys ? target.keys.length : 0;\r\n if (numberOfKeys > 0 && !keyValues) {\r\n throw new Error(\"You should pass the values to be filtered for each key. You passed: no values and \".concat(numberOfKeys, \" keys\"));\r\n }\r\n if (numberOfKeys === 0 && keyValues && keyValues.length > 0) {\r\n throw new Error(\"You passed key values but your target object doesn't contain the keys to be filtered\");\r\n }\r\n for (var _i = 0, _a = _this.keyValues; _i < _a.length; _i++) {\r\n var keyValue = _a[_i];\r\n if (keyValue) {\r\n var lengthOfArray = keyValue.length;\r\n if (lengthOfArray !== numberOfKeys) {\r\n throw new Error(\"Each tuple of key values should contain a value for each of the keys. You passed: \".concat(lengthOfArray, \" values and \").concat(numberOfKeys, \" keys\"));\r\n }\r\n }\r\n }\r\n return _this;\r\n }\r\n BasicFilterWithKeys.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.keyValues = this.keyValues;\r\n return filter;\r\n };\r\n return BasicFilterWithKeys;\r\n}(BasicFilter));\r\nexports.BasicFilterWithKeys = BasicFilterWithKeys;\r\nvar IdentityFilter = /** @class */ (function (_super) {\r\n __extends(IdentityFilter, _super);\r\n function IdentityFilter(target, operator) {\r\n var _this = _super.call(this, target, FilterType.Identity) || this;\r\n _this.operator = operator;\r\n _this.schemaUrl = IdentityFilter.schemaUrl;\r\n return _this;\r\n }\r\n IdentityFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.target = this.target;\r\n return filter;\r\n };\r\n IdentityFilter.schemaUrl = \"http://powerbi.com/product/schema#identity\";\r\n return IdentityFilter;\r\n}(Filter));\r\nexports.IdentityFilter = IdentityFilter;\r\nvar TupleFilter = /** @class */ (function (_super) {\r\n __extends(TupleFilter, _super);\r\n function TupleFilter(target, operator, values) {\r\n var _this = _super.call(this, target, FilterType.Tuple) || this;\r\n _this.operator = operator;\r\n _this.schemaUrl = TupleFilter.schemaUrl;\r\n _this.values = values;\r\n return _this;\r\n }\r\n TupleFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.values = this.values;\r\n filter.target = this.target;\r\n return filter;\r\n };\r\n TupleFilter.schemaUrl = \"http://powerbi.com/product/schema#tuple\";\r\n return TupleFilter;\r\n}(Filter));\r\nexports.TupleFilter = TupleFilter;\r\nvar AdvancedFilter = /** @class */ (function (_super) {\r\n __extends(AdvancedFilter, _super);\r\n function AdvancedFilter(target, logicalOperator) {\r\n var conditions = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n conditions[_i - 2] = arguments[_i];\r\n }\r\n var _this = _super.call(this, target, FilterType.Advanced) || this;\r\n _this.schemaUrl = AdvancedFilter.schemaUrl;\r\n // Guard statements\r\n if (typeof logicalOperator !== \"string\" || logicalOperator.length === 0) {\r\n // TODO: It would be nicer to list out the possible logical operators.\r\n throw new Error(\"logicalOperator must be a valid operator, You passed: \".concat(logicalOperator));\r\n }\r\n _this.logicalOperator = logicalOperator;\r\n var extractedConditions;\r\n /**\r\n * Accept conditions as array instead of as individual arguments\r\n * new AdvancedFilter('a', 'b', \"And\", { value: 1, operator: \"Equals\" }, { value: 2, operator: \"IsGreaterThan\" });\r\n * new AdvancedFilter('a', 'b', \"And\", [{ value: 1, operator: \"Equals\" }, { value: 2, operator: \"IsGreaterThan\" }]);\r\n */\r\n if (Array.isArray(conditions[0])) {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\r\n extractedConditions = conditions[0];\r\n }\r\n else {\r\n extractedConditions = conditions;\r\n }\r\n if (extractedConditions.length > 2) {\r\n throw new Error(\"AdvancedFilters may not have more than two conditions. You passed: \".concat(conditions.length));\r\n }\r\n if (extractedConditions.length === 1 && logicalOperator !== \"And\") {\r\n throw new Error(\"Logical Operator must be \\\"And\\\" when there is only one condition provided\");\r\n }\r\n _this.conditions = extractedConditions;\r\n return _this;\r\n }\r\n AdvancedFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.logicalOperator = this.logicalOperator;\r\n filter.conditions = this.conditions;\r\n return filter;\r\n };\r\n AdvancedFilter.schemaUrl = \"http://powerbi.com/product/schema#advanced\";\r\n return AdvancedFilter;\r\n}(Filter));\r\nexports.AdvancedFilter = AdvancedFilter;\r\nvar HierarchyFilter = /** @class */ (function (_super) {\r\n __extends(HierarchyFilter, _super);\r\n function HierarchyFilter(target, hierarchyData) {\r\n var _this = _super.call(this, target, FilterType.Hierarchy) || this;\r\n _this.schemaUrl = HierarchyFilter.schemaUrl;\r\n _this.hierarchyData = hierarchyData;\r\n return _this;\r\n }\r\n HierarchyFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.hierarchyData = this.hierarchyData;\r\n filter.target = this.target;\r\n return filter;\r\n };\r\n HierarchyFilter.schemaUrl = \"http://powerbi.com/product/schema#hierarchy\";\r\n return HierarchyFilter;\r\n}(Filter));\r\nexports.HierarchyFilter = HierarchyFilter;\r\nvar HierarchyIdentityFilter = /** @class */ (function (_super) {\r\n __extends(HierarchyIdentityFilter, _super);\r\n function HierarchyIdentityFilter(target, hierarchyData) {\r\n var _this = _super.call(this, target, FilterType.HierarchyIdentity) || this;\r\n _this.schemaUrl = HierarchyIdentityFilter.schemaUrl;\r\n _this.hierarchyData = hierarchyData;\r\n return _this;\r\n }\r\n HierarchyIdentityFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.hierarchyData = this.hierarchyData;\r\n filter.target = this.target;\r\n return filter;\r\n };\r\n HierarchyIdentityFilter.schemaUrl = \"http://powerbi.com/product/schema#hierarchyIdentity\";\r\n return HierarchyIdentityFilter;\r\n}(Filter));\r\nexports.HierarchyIdentityFilter = HierarchyIdentityFilter;\r\nfunction isFilterKeyColumnsTarget(target) {\r\n return isColumn(target) && !!target.keys;\r\n}\r\nexports.isFilterKeyColumnsTarget = isFilterKeyColumnsTarget;\r\nfunction isBasicFilterWithKeys(filter) {\r\n return getFilterType(filter) === FilterType.Basic && !!filter.keyValues;\r\n}\r\nexports.isBasicFilterWithKeys = isBasicFilterWithKeys;\r\nfunction getFilterType(filter) {\r\n if (filter.filterType) {\r\n return filter.filterType;\r\n }\r\n var basicFilter = filter;\r\n var advancedFilter = filter;\r\n if ((typeof basicFilter.operator === \"string\")\r\n && (Array.isArray(basicFilter.values))) {\r\n return FilterType.Basic;\r\n }\r\n else if ((typeof advancedFilter.logicalOperator === \"string\")\r\n && (Array.isArray(advancedFilter.conditions))) {\r\n return FilterType.Advanced;\r\n }\r\n else {\r\n return FilterType.Unknown;\r\n }\r\n}\r\nexports.getFilterType = getFilterType;\r\nfunction isMeasure(arg) {\r\n return arg.table !== undefined && arg.measure !== undefined;\r\n}\r\nexports.isMeasure = isMeasure;\r\nfunction isColumn(arg) {\r\n return !!(arg.table && arg.column && !arg.aggregationFunction);\r\n}\r\nexports.isColumn = isColumn;\r\nfunction isHierarchyLevel(arg) {\r\n return !!(arg.table && arg.hierarchy && arg.hierarchyLevel && !arg.aggregationFunction);\r\n}\r\nexports.isHierarchyLevel = isHierarchyLevel;\r\nfunction isHierarchyLevelAggr(arg) {\r\n return !!(arg.table && arg.hierarchy && arg.hierarchyLevel && arg.aggregationFunction);\r\n}\r\nexports.isHierarchyLevelAggr = isHierarchyLevelAggr;\r\nfunction isColumnAggr(arg) {\r\n return !!(arg.table && arg.column && arg.aggregationFunction);\r\n}\r\nexports.isColumnAggr = isColumnAggr;\r\nfunction isPercentOfGrandTotal(arg) {\r\n return !!arg.percentOfGrandTotal;\r\n}\r\nexports.isPercentOfGrandTotal = isPercentOfGrandTotal;\r\nvar CredentialType;\r\n(function (CredentialType) {\r\n CredentialType[CredentialType[\"NoConnection\"] = 0] = \"NoConnection\";\r\n CredentialType[CredentialType[\"OnBehalfOf\"] = 1] = \"OnBehalfOf\";\r\n CredentialType[CredentialType[\"Anonymous\"] = 2] = \"Anonymous\";\r\n})(CredentialType = exports.CredentialType || (exports.CredentialType = {}));\r\nvar DataCacheMode;\r\n(function (DataCacheMode) {\r\n DataCacheMode[DataCacheMode[\"Import\"] = 0] = \"Import\";\r\n DataCacheMode[DataCacheMode[\"DirectQuery\"] = 1] = \"DirectQuery\";\r\n})(DataCacheMode = exports.DataCacheMode || (exports.DataCacheMode = {}));\r\nvar AggregateFunction;\r\n(function (AggregateFunction) {\r\n AggregateFunction[AggregateFunction[\"Default\"] = 1] = \"Default\";\r\n AggregateFunction[AggregateFunction[\"None\"] = 2] = \"None\";\r\n AggregateFunction[AggregateFunction[\"Sum\"] = 3] = \"Sum\";\r\n AggregateFunction[AggregateFunction[\"Min\"] = 4] = \"Min\";\r\n AggregateFunction[AggregateFunction[\"Max\"] = 5] = \"Max\";\r\n AggregateFunction[AggregateFunction[\"Count\"] = 6] = \"Count\";\r\n AggregateFunction[AggregateFunction[\"Average\"] = 7] = \"Average\";\r\n AggregateFunction[AggregateFunction[\"DistinctCount\"] = 8] = \"DistinctCount\";\r\n})(AggregateFunction = exports.AggregateFunction || (exports.AggregateFunction = {}));\r\nvar BrowserPrintAdjustmentsMode;\r\n(function (BrowserPrintAdjustmentsMode) {\r\n BrowserPrintAdjustmentsMode[BrowserPrintAdjustmentsMode[\"Default\"] = 0] = \"Default\";\r\n BrowserPrintAdjustmentsMode[BrowserPrintAdjustmentsMode[\"NoAdjustments\"] = 1] = \"NoAdjustments\";\r\n})(BrowserPrintAdjustmentsMode = exports.BrowserPrintAdjustmentsMode || (exports.BrowserPrintAdjustmentsMode = {}));\r\nvar PageNavigationPosition;\r\n(function (PageNavigationPosition) {\r\n PageNavigationPosition[PageNavigationPosition[\"Bottom\"] = 0] = \"Bottom\";\r\n PageNavigationPosition[PageNavigationPosition[\"Left\"] = 1] = \"Left\";\r\n})(PageNavigationPosition = exports.PageNavigationPosition || (exports.PageNavigationPosition = {}));\r\nvar QnaMode;\r\n(function (QnaMode) {\r\n QnaMode[QnaMode[\"Interactive\"] = 0] = \"Interactive\";\r\n QnaMode[QnaMode[\"ResultOnly\"] = 1] = \"ResultOnly\";\r\n})(QnaMode = exports.QnaMode || (exports.QnaMode = {}));\r\nvar ExportDataType;\r\n(function (ExportDataType) {\r\n ExportDataType[ExportDataType[\"Summarized\"] = 0] = \"Summarized\";\r\n ExportDataType[ExportDataType[\"Underlying\"] = 1] = \"Underlying\";\r\n})(ExportDataType = exports.ExportDataType || (exports.ExportDataType = {}));\r\nvar BookmarksPlayMode;\r\n(function (BookmarksPlayMode) {\r\n BookmarksPlayMode[BookmarksPlayMode[\"Off\"] = 0] = \"Off\";\r\n BookmarksPlayMode[BookmarksPlayMode[\"Presentation\"] = 1] = \"Presentation\";\r\n})(BookmarksPlayMode = exports.BookmarksPlayMode || (exports.BookmarksPlayMode = {}));\r\n// This is not an enum because enum strings require\r\n// us to upgrade typeScript version and change SDK build definition\r\nexports.CommonErrorCodes = {\r\n TokenExpired: 'TokenExpired',\r\n NotFound: 'PowerBIEntityNotFound',\r\n InvalidParameters: 'Invalid parameters',\r\n LoadReportFailed: 'LoadReportFailed',\r\n NotAuthorized: 'PowerBINotAuthorizedException',\r\n FailedToLoadModel: 'ExplorationContainer_FailedToLoadModel_DefaultDetails',\r\n};\r\nexports.TextAlignment = {\r\n Left: 'left',\r\n Center: 'center',\r\n Right: 'right',\r\n};\r\nexports.LegendPosition = {\r\n Top: 'Top',\r\n Bottom: 'Bottom',\r\n Right: 'Right',\r\n Left: 'Left',\r\n TopCenter: 'TopCenter',\r\n BottomCenter: 'BottomCenter',\r\n RightCenter: 'RightCenter',\r\n LeftCenter: 'LeftCenter',\r\n};\r\nvar SortDirection;\r\n(function (SortDirection) {\r\n SortDirection[SortDirection[\"Ascending\"] = 1] = \"Ascending\";\r\n SortDirection[SortDirection[\"Descending\"] = 2] = \"Descending\";\r\n})(SortDirection = exports.SortDirection || (exports.SortDirection = {}));\r\nvar Selector = /** @class */ (function () {\r\n function Selector(schema) {\r\n this.$schema = schema;\r\n }\r\n Selector.prototype.toJSON = function () {\r\n return {\r\n $schema: this.$schema\r\n };\r\n };\r\n return Selector;\r\n}());\r\nexports.Selector = Selector;\r\nvar PageSelector = /** @class */ (function (_super) {\r\n __extends(PageSelector, _super);\r\n function PageSelector(pageName) {\r\n var _this = _super.call(this, PageSelector.schemaUrl) || this;\r\n _this.pageName = pageName;\r\n return _this;\r\n }\r\n PageSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.pageName = this.pageName;\r\n return selector;\r\n };\r\n PageSelector.schemaUrl = \"http://powerbi.com/product/schema#pageSelector\";\r\n return PageSelector;\r\n}(Selector));\r\nexports.PageSelector = PageSelector;\r\nvar VisualSelector = /** @class */ (function (_super) {\r\n __extends(VisualSelector, _super);\r\n function VisualSelector(visualName) {\r\n var _this = _super.call(this, VisualSelector.schemaUrl) || this;\r\n _this.visualName = visualName;\r\n return _this;\r\n }\r\n VisualSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.visualName = this.visualName;\r\n return selector;\r\n };\r\n VisualSelector.schemaUrl = \"http://powerbi.com/product/schema#visualSelector\";\r\n return VisualSelector;\r\n}(Selector));\r\nexports.VisualSelector = VisualSelector;\r\nvar VisualTypeSelector = /** @class */ (function (_super) {\r\n __extends(VisualTypeSelector, _super);\r\n function VisualTypeSelector(visualType) {\r\n var _this = _super.call(this, VisualSelector.schemaUrl) || this;\r\n _this.visualType = visualType;\r\n return _this;\r\n }\r\n VisualTypeSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.visualType = this.visualType;\r\n return selector;\r\n };\r\n VisualTypeSelector.schemaUrl = \"http://powerbi.com/product/schema#visualTypeSelector\";\r\n return VisualTypeSelector;\r\n}(Selector));\r\nexports.VisualTypeSelector = VisualTypeSelector;\r\nvar SlicerTargetSelector = /** @class */ (function (_super) {\r\n __extends(SlicerTargetSelector, _super);\r\n function SlicerTargetSelector(target) {\r\n var _this = _super.call(this, VisualSelector.schemaUrl) || this;\r\n _this.target = target;\r\n return _this;\r\n }\r\n SlicerTargetSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.target = this.target;\r\n return selector;\r\n };\r\n SlicerTargetSelector.schemaUrl = \"http://powerbi.com/product/schema#slicerTargetSelector\";\r\n return SlicerTargetSelector;\r\n}(Selector));\r\nexports.SlicerTargetSelector = SlicerTargetSelector;\r\nvar CommandDisplayOption;\r\n(function (CommandDisplayOption) {\r\n CommandDisplayOption[CommandDisplayOption[\"Enabled\"] = 0] = \"Enabled\";\r\n CommandDisplayOption[CommandDisplayOption[\"Disabled\"] = 1] = \"Disabled\";\r\n CommandDisplayOption[CommandDisplayOption[\"Hidden\"] = 2] = \"Hidden\";\r\n})(CommandDisplayOption = exports.CommandDisplayOption || (exports.CommandDisplayOption = {}));\r\n/*\r\n * Visual CRUD\r\n */\r\nvar VisualDataRoleKind;\r\n(function (VisualDataRoleKind) {\r\n // Indicates that the role should be bound to something that evaluates to a grouping of values.\r\n VisualDataRoleKind[VisualDataRoleKind[\"Grouping\"] = 0] = \"Grouping\";\r\n // Indicates that the role should be bound to something that evaluates to a single value in a scope.\r\n VisualDataRoleKind[VisualDataRoleKind[\"Measure\"] = 1] = \"Measure\";\r\n // Indicates that the role can be bound to either Grouping or Measure.\r\n VisualDataRoleKind[VisualDataRoleKind[\"GroupingOrMeasure\"] = 2] = \"GroupingOrMeasure\";\r\n})(VisualDataRoleKind = exports.VisualDataRoleKind || (exports.VisualDataRoleKind = {}));\r\n// Indicates the visual preference on Grouping or Measure. Only applicable if kind is GroupingOrMeasure.\r\nvar VisualDataRoleKindPreference;\r\n(function (VisualDataRoleKindPreference) {\r\n VisualDataRoleKindPreference[VisualDataRoleKindPreference[\"Measure\"] = 0] = \"Measure\";\r\n VisualDataRoleKindPreference[VisualDataRoleKindPreference[\"Grouping\"] = 1] = \"Grouping\";\r\n})(VisualDataRoleKindPreference = exports.VisualDataRoleKindPreference || (exports.VisualDataRoleKindPreference = {}));\r\nfunction isOnLoadFilters(filters) {\r\n return filters && !isReportFiltersArray(filters);\r\n}\r\nexports.isOnLoadFilters = isOnLoadFilters;\r\nfunction isReportFiltersArray(filters) {\r\n return Array.isArray(filters);\r\n}\r\nexports.isReportFiltersArray = isReportFiltersArray;\r\nfunction isFlatMenuExtension(menuExtension) {\r\n return menuExtension && !isGroupedMenuExtension(menuExtension);\r\n}\r\nexports.isFlatMenuExtension = isFlatMenuExtension;\r\nfunction isGroupedMenuExtension(menuExtension) {\r\n return menuExtension && !!menuExtension.groupName;\r\n}\r\nexports.isGroupedMenuExtension = isGroupedMenuExtension;\r\nfunction isIExtensions(extensions) {\r\n return extensions && !isIExtensionArray(extensions);\r\n}\r\nexports.isIExtensions = isIExtensions;\r\nfunction isIExtensionArray(extensions) {\r\n return Array.isArray(extensions);\r\n}\r\nexports.isIExtensionArray = isIExtensionArray;\r\nfunction normalizeError(error) {\r\n var message = error.message;\r\n if (!message) {\r\n message = \"\".concat(error.path, \" is invalid. Not meeting \").concat(error.keyword, \" constraint\");\r\n }\r\n return {\r\n message: message\r\n };\r\n}\r\nfunction validateVisualSelector(input) {\r\n var errors = validator_1.Validators.visualSelectorValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualSelector = validateVisualSelector;\r\nfunction validateSlicer(input) {\r\n var errors = validator_1.Validators.slicerValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSlicer = validateSlicer;\r\nfunction validateSlicerState(input) {\r\n var errors = validator_1.Validators.slicerStateValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSlicerState = validateSlicerState;\r\nfunction validatePlayBookmarkRequest(input) {\r\n var errors = validator_1.Validators.playBookmarkRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePlayBookmarkRequest = validatePlayBookmarkRequest;\r\nfunction validateAddBookmarkRequest(input) {\r\n var errors = validator_1.Validators.addBookmarkRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateAddBookmarkRequest = validateAddBookmarkRequest;\r\nfunction validateApplyBookmarkByNameRequest(input) {\r\n var errors = validator_1.Validators.applyBookmarkByNameRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateApplyBookmarkByNameRequest = validateApplyBookmarkByNameRequest;\r\nfunction validateApplyBookmarkStateRequest(input) {\r\n var errors = validator_1.Validators.applyBookmarkStateRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateApplyBookmarkStateRequest = validateApplyBookmarkStateRequest;\r\nfunction validateCaptureBookmarkRequest(input) {\r\n var errors = validator_1.Validators.captureBookmarkRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCaptureBookmarkRequest = validateCaptureBookmarkRequest;\r\nfunction validateSettings(input) {\r\n var errors = validator_1.Validators.settingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSettings = validateSettings;\r\nfunction validatePanes(input) {\r\n var errors = validator_1.Validators.reportPanesValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePanes = validatePanes;\r\nfunction validateBookmarksPane(input) {\r\n var errors = validator_1.Validators.bookmarksPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateBookmarksPane = validateBookmarksPane;\r\nfunction validateFiltersPane(input) {\r\n var errors = validator_1.Validators.filtersPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateFiltersPane = validateFiltersPane;\r\nfunction validateFieldsPane(input) {\r\n var errors = validator_1.Validators.fieldsPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateFieldsPane = validateFieldsPane;\r\nfunction validatePageNavigationPane(input) {\r\n var errors = validator_1.Validators.pageNavigationPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePageNavigationPane = validatePageNavigationPane;\r\nfunction validateSelectionPane(input) {\r\n var errors = validator_1.Validators.selectionPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSelectionPane = validateSelectionPane;\r\nfunction validateSyncSlicersPane(input) {\r\n var errors = validator_1.Validators.syncSlicersPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSyncSlicersPane = validateSyncSlicersPane;\r\nfunction validateVisualizationsPane(input) {\r\n var errors = validator_1.Validators.visualizationsPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualizationsPane = validateVisualizationsPane;\r\nfunction validateCustomPageSize(input) {\r\n var errors = validator_1.Validators.customPageSizeValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCustomPageSize = validateCustomPageSize;\r\nfunction validateExtension(input) {\r\n var errors = validator_1.Validators.extensionValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateExtension = validateExtension;\r\nfunction validateMenuGroupExtension(input) {\r\n var errors = validator_1.Validators.menuGroupExtensionValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateMenuGroupExtension = validateMenuGroupExtension;\r\nfunction validateReportLoad(input) {\r\n var errors = validator_1.Validators.reportLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateReportLoad = validateReportLoad;\r\nfunction validatePaginatedReportLoad(input) {\r\n var errors = validator_1.Validators.paginatedReportLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePaginatedReportLoad = validatePaginatedReportLoad;\r\nfunction validateCreateReport(input) {\r\n var errors = validator_1.Validators.reportCreateValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCreateReport = validateCreateReport;\r\nfunction validateQuickCreate(input) {\r\n var errors = validator_1.Validators.quickCreateValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateQuickCreate = validateQuickCreate;\r\nfunction validateDashboardLoad(input) {\r\n var errors = validator_1.Validators.dashboardLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateDashboardLoad = validateDashboardLoad;\r\nfunction validateTileLoad(input) {\r\n var errors = validator_1.Validators.tileLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateTileLoad = validateTileLoad;\r\nfunction validatePage(input) {\r\n var errors = validator_1.Validators.pageValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePage = validatePage;\r\nfunction validateFilter(input) {\r\n var errors = validator_1.Validators.filterValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateFilter = validateFilter;\r\nfunction validateUpdateFiltersRequest(input) {\r\n var errors = validator_1.Validators.updateFiltersRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateUpdateFiltersRequest = validateUpdateFiltersRequest;\r\nfunction validateSaveAsParameters(input) {\r\n var errors = validator_1.Validators.saveAsParametersValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSaveAsParameters = validateSaveAsParameters;\r\nfunction validateLoadQnaConfiguration(input) {\r\n var errors = validator_1.Validators.loadQnaValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateLoadQnaConfiguration = validateLoadQnaConfiguration;\r\nfunction validateQnaInterpretInputData(input) {\r\n var errors = validator_1.Validators.qnaInterpretInputDataValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateQnaInterpretInputData = validateQnaInterpretInputData;\r\nfunction validateExportDataRequest(input) {\r\n var errors = validator_1.Validators.exportDataRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateExportDataRequest = validateExportDataRequest;\r\nfunction validateVisualHeader(input) {\r\n var errors = validator_1.Validators.visualHeaderValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualHeader = validateVisualHeader;\r\nfunction validateVisualSettings(input) {\r\n var errors = validator_1.Validators.visualSettingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualSettings = validateVisualSettings;\r\nfunction validateCommandsSettings(input) {\r\n var errors = validator_1.Validators.commandsSettingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCommandsSettings = validateCommandsSettings;\r\nfunction validateCustomTheme(input) {\r\n var errors = validator_1.Validators.customThemeValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCustomTheme = validateCustomTheme;\r\nfunction validateZoomLevel(input) {\r\n var errors = validator_1.Validators.zoomLevelValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateZoomLevel = validateZoomLevel;\r\nfunction validatePrintSettings(input) {\r\n var errors = validator_1.Validators.printSettingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePrintSettings = validatePrintSettings;\r\n\n\n/***/ }),\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Validators = void 0;\r\nvar barsValidator_1 = __webpack_require__(2);\r\nvar bookmarkValidator_1 = __webpack_require__(5);\r\nvar commandsSettingsValidator_1 = __webpack_require__(6);\r\nvar customThemeValidator_1 = __webpack_require__(7);\r\nvar dashboardLoadValidator_1 = __webpack_require__(8);\r\nvar datasetBindingValidator_1 = __webpack_require__(9);\r\nvar exportDataValidator_1 = __webpack_require__(10);\r\nvar extensionsValidator_1 = __webpack_require__(11);\r\nvar filtersValidator_1 = __webpack_require__(12);\r\nvar layoutValidator_1 = __webpack_require__(13);\r\nvar pageValidator_1 = __webpack_require__(14);\r\nvar panesValidator_1 = __webpack_require__(15);\r\nvar qnaValidator_1 = __webpack_require__(16);\r\nvar reportCreateValidator_1 = __webpack_require__(17);\r\nvar reportLoadValidator_1 = __webpack_require__(18);\r\nvar paginatedReportLoadValidator_1 = __webpack_require__(19);\r\nvar saveAsParametersValidator_1 = __webpack_require__(20);\r\nvar selectorsValidator_1 = __webpack_require__(21);\r\nvar settingsValidator_1 = __webpack_require__(22);\r\nvar slicersValidator_1 = __webpack_require__(23);\r\nvar tileLoadValidator_1 = __webpack_require__(24);\r\nvar visualSettingsValidator_1 = __webpack_require__(25);\r\nvar anyOfValidator_1 = __webpack_require__(26);\r\nvar fieldForbiddenValidator_1 = __webpack_require__(27);\r\nvar fieldRequiredValidator_1 = __webpack_require__(28);\r\nvar mapValidator_1 = __webpack_require__(29);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar parameterPanelValidator_1 = __webpack_require__(30);\r\nvar datasetCreateConfigValidator_1 = __webpack_require__(31);\r\nvar quickCreateValidator_1 = __webpack_require__(32);\r\nvar printSettingsValidator_1 = __webpack_require__(33);\r\nvar paginatedReportDatasetBindingValidator_1 = __webpack_require__(34);\r\nexports.Validators = {\r\n addBookmarkRequestValidator: new bookmarkValidator_1.AddBookmarkRequestValidator(),\r\n advancedFilterTypeValidator: new typeValidator_1.EnumValidator([0]),\r\n advancedFilterValidator: new filtersValidator_1.AdvancedFilterValidator(),\r\n anyArrayValidator: new typeValidator_1.ArrayValidator([new anyOfValidator_1.AnyOfValidator([new typeValidator_1.StringValidator(), new typeValidator_1.NumberValidator(), new typeValidator_1.BooleanValidator()])]),\r\n anyFilterValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.BasicFilterValidator(), new filtersValidator_1.AdvancedFilterValidator(), new filtersValidator_1.IncludeExcludeFilterValidator(), new filtersValidator_1.NotSupportedFilterValidator(), new filtersValidator_1.RelativeDateFilterValidator(), new filtersValidator_1.TopNFilterValidator(), new filtersValidator_1.RelativeTimeFilterValidator(), new filtersValidator_1.HierarchyFilterValidator()]),\r\n anyValueValidator: new anyOfValidator_1.AnyOfValidator([new typeValidator_1.StringValidator(), new typeValidator_1.NumberValidator(), new typeValidator_1.BooleanValidator()]),\r\n actionBarValidator: new barsValidator_1.ActionBarValidator(),\r\n statusBarValidator: new barsValidator_1.StatusBarValidator(),\r\n applyBookmarkByNameRequestValidator: new bookmarkValidator_1.ApplyBookmarkByNameRequestValidator(),\r\n applyBookmarkStateRequestValidator: new bookmarkValidator_1.ApplyBookmarkStateRequestValidator(),\r\n applyBookmarkValidator: new anyOfValidator_1.AnyOfValidator([new bookmarkValidator_1.ApplyBookmarkByNameRequestValidator(), new bookmarkValidator_1.ApplyBookmarkStateRequestValidator()]),\r\n backgroundValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n basicFilterTypeValidator: new typeValidator_1.EnumValidator([1]),\r\n basicFilterValidator: new filtersValidator_1.BasicFilterValidator(),\r\n booleanArrayValidator: new typeValidator_1.BooleanArrayValidator(),\r\n booleanValidator: new typeValidator_1.BooleanValidator(),\r\n bookmarksPaneValidator: new panesValidator_1.BookmarksPaneValidator(),\r\n captureBookmarkOptionsValidator: new bookmarkValidator_1.CaptureBookmarkOptionsValidator(),\r\n captureBookmarkRequestValidator: new bookmarkValidator_1.CaptureBookmarkRequestValidator(),\r\n columnSchemaArrayValidator: new typeValidator_1.ArrayValidator([new datasetCreateConfigValidator_1.ColumnSchemaValidator()]),\r\n commandDisplayOptionValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n commandExtensionSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.VisualTypeSelectorValidator()]),\r\n commandExtensionArrayValidator: new typeValidator_1.ArrayValidator([new extensionsValidator_1.CommandExtensionValidator()]),\r\n commandExtensionValidator: new extensionsValidator_1.CommandExtensionValidator(),\r\n commandsSettingsArrayValidator: new typeValidator_1.ArrayValidator([new commandsSettingsValidator_1.CommandsSettingsValidator()]),\r\n commandsSettingsValidator: new commandsSettingsValidator_1.CommandsSettingsValidator(),\r\n conditionItemValidator: new filtersValidator_1.ConditionItemValidator(),\r\n contrastModeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4]),\r\n credentialDetailsValidator: new mapValidator_1.MapValidator([new typeValidator_1.StringValidator()], [new typeValidator_1.StringValidator()]),\r\n credentialsValidator: new datasetCreateConfigValidator_1.CredentialsValidator(),\r\n credentialTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n customLayoutDisplayOptionValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n customLayoutValidator: new layoutValidator_1.CustomLayoutValidator(),\r\n customPageSizeValidator: new pageValidator_1.CustomPageSizeValidator(),\r\n customThemeValidator: new customThemeValidator_1.CustomThemeValidator(),\r\n dashboardLoadValidator: new dashboardLoadValidator_1.DashboardLoadValidator(),\r\n dataCacheModeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n datasetBindingValidator: new datasetBindingValidator_1.DatasetBindingValidator(),\r\n datasetCreateConfigValidator: new datasetCreateConfigValidator_1.DatasetCreateConfigValidator(),\r\n datasourceConnectionConfigValidator: new datasetCreateConfigValidator_1.DatasourceConnectionConfigValidator(),\r\n displayStateModeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n displayStateValidator: new layoutValidator_1.DisplayStateValidator(),\r\n exportDataRequestValidator: new exportDataValidator_1.ExportDataRequestValidator(),\r\n extensionArrayValidator: new typeValidator_1.ArrayValidator([new extensionsValidator_1.ExtensionValidator()]),\r\n extensionsValidator: new anyOfValidator_1.AnyOfValidator([new typeValidator_1.ArrayValidator([new extensionsValidator_1.ExtensionValidator()]), new extensionsValidator_1.ExtensionsValidator()]),\r\n extensionPointsValidator: new extensionsValidator_1.ExtensionPointsValidator(),\r\n extensionValidator: new extensionsValidator_1.ExtensionValidator(),\r\n fieldForbiddenValidator: new fieldForbiddenValidator_1.FieldForbiddenValidator(),\r\n fieldRequiredValidator: new fieldRequiredValidator_1.FieldRequiredValidator(),\r\n fieldsPaneValidator: new panesValidator_1.FieldsPaneValidator(),\r\n filterColumnTargetValidator: new filtersValidator_1.FilterColumnTargetValidator(),\r\n filterDisplaySettingsValidator: new filtersValidator_1.FilterDisplaySettingsValidator(),\r\n filterConditionsValidator: new typeValidator_1.ArrayValidator([new filtersValidator_1.ConditionItemValidator()]),\r\n filterHierarchyTargetValidator: new filtersValidator_1.FilterHierarchyTargetValidator(),\r\n filterMeasureTargetValidator: new filtersValidator_1.FilterMeasureTargetValidator(),\r\n filterTargetValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.FilterColumnTargetValidator(), new filtersValidator_1.FilterHierarchyTargetValidator(), new filtersValidator_1.FilterMeasureTargetValidator(), new typeValidator_1.ArrayValidator([new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.FilterColumnTargetValidator(), new filtersValidator_1.FilterHierarchyTargetValidator(), new filtersValidator_1.FilterMeasureTargetValidator(), new filtersValidator_1.FilterKeyColumnsTargetValidator(), new filtersValidator_1.FilterKeyHierarchyTargetValidator(), new typeValidator_1.ArrayValidator([new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.FilterColumnTargetValidator(), new filtersValidator_1.FilterHierarchyTargetValidator(), new filtersValidator_1.FilterMeasureTargetValidator(), new filtersValidator_1.FilterKeyColumnsTargetValidator(), new filtersValidator_1.FilterKeyHierarchyTargetValidator()])])])])]),\r\n filterValidator: new filtersValidator_1.FilterValidator(),\r\n filterTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5, 6, 7, 9]),\r\n filtersArrayValidator: new typeValidator_1.ArrayValidator([new filtersValidator_1.FilterValidator()]),\r\n filtersOperationsUpdateValidator: new typeValidator_1.EnumValidator([1, 2, 3]),\r\n filtersOperationsRemoveAllValidator: new typeValidator_1.EnumValidator([0]),\r\n filtersPaneValidator: new panesValidator_1.FiltersPaneValidator(),\r\n hyperlinkClickBehaviorValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n includeExcludeFilterValidator: new filtersValidator_1.IncludeExcludeFilterValidator(),\r\n includeExludeFilterTypeValidator: new typeValidator_1.EnumValidator([3]),\r\n includeExcludeFilterValuesValidator: new typeValidator_1.ArrayValidator([new anyOfValidator_1.AnyOfValidator([new typeValidator_1.StringValidator(), new typeValidator_1.NumberValidator(), new typeValidator_1.BooleanValidator(), new typeValidator_1.ArrayValidator([new typeValidator_1.ArrayValidator([new filtersValidator_1.IncludeExcludePointValueValidator()])])])]),\r\n hierarchyFilterTypeValidator: new typeValidator_1.EnumValidator([9]),\r\n hierarchyFilterValuesValidator: new typeValidator_1.ArrayValidator([new filtersValidator_1.HierarchyFilterNodeValidator()]),\r\n layoutTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3]),\r\n loadQnaValidator: new qnaValidator_1.LoadQnaValidator(),\r\n menuExtensionValidator: new anyOfValidator_1.AnyOfValidator([new extensionsValidator_1.FlatMenuExtensionValidator(), new extensionsValidator_1.GroupedMenuExtensionValidator()]),\r\n menuGroupExtensionArrayValidator: new typeValidator_1.ArrayValidator([new extensionsValidator_1.MenuGroupExtensionValidator()]),\r\n menuGroupExtensionValidator: new extensionsValidator_1.MenuGroupExtensionValidator(),\r\n menuLocationValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n notSupportedFilterTypeValidator: new typeValidator_1.EnumValidator([2]),\r\n notSupportedFilterValidator: new filtersValidator_1.NotSupportedFilterValidator(),\r\n numberArrayValidator: new typeValidator_1.NumberArrayValidator(),\r\n numberValidator: new typeValidator_1.NumberValidator(),\r\n onLoadFiltersBaseValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.OnLoadFiltersBaseValidator(), new filtersValidator_1.OnLoadFiltersBaseRemoveOperationValidator()]),\r\n pageLayoutValidator: new mapValidator_1.MapValidator([new typeValidator_1.StringValidator()], [new layoutValidator_1.VisualLayoutValidator()]),\r\n pageNavigationPaneValidator: new panesValidator_1.PageNavigationPaneValidator(),\r\n pageNavigationPositionValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n pageSizeTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5]),\r\n pageSizeValidator: new pageValidator_1.PageSizeValidator(),\r\n pageValidator: new pageValidator_1.PageValidator(),\r\n pageViewFieldValidator: new pageValidator_1.PageViewFieldValidator(),\r\n pagesLayoutValidator: new mapValidator_1.MapValidator([new typeValidator_1.StringValidator()], [new layoutValidator_1.PageLayoutValidator()]),\r\n paginatedReportCommandsValidator: new commandsSettingsValidator_1.PaginatedReportCommandsValidator(),\r\n paginatedReportDatasetBindingArrayValidator: new typeValidator_1.ArrayValidator([new paginatedReportDatasetBindingValidator_1.PaginatedReportDatasetBindingValidator()]),\r\n paginatedReportLoadValidator: new paginatedReportLoadValidator_1.PaginatedReportLoadValidator(),\r\n paginatedReportsettingsValidator: new settingsValidator_1.PaginatedReportSettingsValidator(),\r\n parameterValuesArrayValidator: new typeValidator_1.ArrayValidator([new paginatedReportLoadValidator_1.ReportParameterFieldsValidator()]),\r\n parametersPanelValidator: new parameterPanelValidator_1.ParametersPanelValidator(),\r\n permissionsValidator: new typeValidator_1.EnumValidator([0, 1, 2, 4, 7]),\r\n playBookmarkRequestValidator: new bookmarkValidator_1.PlayBookmarkRequestValidator(),\r\n printSettingsValidator: new printSettingsValidator_1.PrintSettingsValidator(),\r\n qnaInterpretInputDataValidator: new qnaValidator_1.QnaInterpretInputDataValidator(),\r\n qnaPanesValidator: new panesValidator_1.QnaPanesValidator(),\r\n qnaSettingValidator: new qnaValidator_1.QnaSettingsValidator(),\r\n quickCreateValidator: new quickCreateValidator_1.QuickCreateValidator(),\r\n rawDataValidator: new typeValidator_1.ArrayValidator([new typeValidator_1.ArrayValidator([new typeValidator_1.StringValidator()])]),\r\n relativeDateFilterOperatorValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n relativeDateFilterTimeUnitTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5, 6]),\r\n relativeDateFilterTypeValidator: new typeValidator_1.EnumValidator([4]),\r\n relativeDateFilterValidator: new filtersValidator_1.RelativeDateFilterValidator(),\r\n relativeDateTimeFilterTypeValidator: new typeValidator_1.EnumValidator([4, 7]),\r\n relativeDateTimeFilterUnitTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5, 6, 7, 8]),\r\n relativeTimeFilterTimeUnitTypeValidator: new typeValidator_1.EnumValidator([7, 8]),\r\n relativeTimeFilterTypeValidator: new typeValidator_1.EnumValidator([7]),\r\n relativeTimeFilterValidator: new filtersValidator_1.RelativeTimeFilterValidator(),\r\n reportBarsValidator: new barsValidator_1.ReportBarsValidator(),\r\n reportCreateValidator: new reportCreateValidator_1.ReportCreateValidator(),\r\n reportLoadFiltersValidator: new anyOfValidator_1.AnyOfValidator([new typeValidator_1.ArrayValidator([new filtersValidator_1.FilterValidator()]), new filtersValidator_1.OnLoadFiltersValidator()]),\r\n reportLoadValidator: new reportLoadValidator_1.ReportLoadValidator(),\r\n reportPanesValidator: new panesValidator_1.ReportPanesValidator(),\r\n saveAsParametersValidator: new saveAsParametersValidator_1.SaveAsParametersValidator(),\r\n selectionPaneValidator: new panesValidator_1.SelectionPaneValidator(),\r\n settingsValidator: new settingsValidator_1.SettingsValidator(),\r\n singleCommandSettingsValidator: new commandsSettingsValidator_1.SingleCommandSettingsValidator(),\r\n slicerSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.SlicerTargetSelectorValidator()]),\r\n slicerStateValidator: new slicersValidator_1.SlicerStateValidator(),\r\n slicerTargetValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.FilterColumnTargetValidator(), new filtersValidator_1.FilterHierarchyTargetValidator(), new filtersValidator_1.FilterMeasureTargetValidator(), new filtersValidator_1.FilterKeyColumnsTargetValidator(), new filtersValidator_1.FilterKeyHierarchyTargetValidator()]),\r\n slicerValidator: new slicersValidator_1.SlicerValidator(),\r\n stringArrayValidator: new typeValidator_1.StringArrayValidator(),\r\n stringValidator: new typeValidator_1.StringValidator(),\r\n syncSlicersPaneValidator: new panesValidator_1.SyncSlicersPaneValidator(),\r\n tableDataArrayValidator: new typeValidator_1.ArrayValidator([new datasetCreateConfigValidator_1.TableDataValidator()]),\r\n tableSchemaListValidator: new typeValidator_1.ArrayValidator([new datasetCreateConfigValidator_1.TableSchemaValidator()]),\r\n tileLoadValidator: new tileLoadValidator_1.TileLoadValidator(),\r\n tokenTypeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n topNFilterTypeValidator: new typeValidator_1.EnumValidator([5]),\r\n topNFilterValidator: new filtersValidator_1.TopNFilterValidator(),\r\n updateFiltersRequestValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.UpdateFiltersRequestValidator(), new filtersValidator_1.RemoveFiltersRequestValidator()]),\r\n viewModeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n visualCommandSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.VisualTypeSelectorValidator()]),\r\n visualHeaderSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.VisualTypeSelectorValidator()]),\r\n visualHeaderSettingsValidator: new visualSettingsValidator_1.VisualHeaderSettingsValidator(),\r\n visualHeaderValidator: new visualSettingsValidator_1.VisualHeaderValidator(),\r\n visualHeadersValidator: new typeValidator_1.ArrayValidator([new visualSettingsValidator_1.VisualHeaderValidator()]),\r\n visualizationsPaneValidator: new panesValidator_1.VisualizationsPaneValidator(),\r\n visualLayoutValidator: new layoutValidator_1.VisualLayoutValidator(),\r\n visualSelectorValidator: new selectorsValidator_1.VisualSelectorValidator(),\r\n visualSettingsValidator: new visualSettingsValidator_1.VisualSettingsValidator(),\r\n visualTypeSelectorValidator: new selectorsValidator_1.VisualTypeSelectorValidator(),\r\n zoomLevelValidator: new typeValidator_1.RangeValidator(0.25, 4),\r\n};\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.StatusBarValidator = exports.ActionBarValidator = exports.ReportBarsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar ReportBarsValidator = /** @class */ (function (_super) {\r\n __extends(ReportBarsValidator, _super);\r\n function ReportBarsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportBarsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"actionBar\",\r\n validators: [validator_1.Validators.actionBarValidator]\r\n },\r\n {\r\n field: \"statusBar\",\r\n validators: [validator_1.Validators.statusBarValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportBarsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportBarsValidator = ReportBarsValidator;\r\nvar ActionBarValidator = /** @class */ (function (_super) {\r\n __extends(ActionBarValidator, _super);\r\n function ActionBarValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ActionBarValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ActionBarValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ActionBarValidator = ActionBarValidator;\r\nvar StatusBarValidator = /** @class */ (function (_super) {\r\n __extends(StatusBarValidator, _super);\r\n function StatusBarValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n StatusBarValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return StatusBarValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.StatusBarValidator = StatusBarValidator;\r\n\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.MultipleFieldsValidator = void 0;\r\nvar MultipleFieldsValidator = /** @class */ (function () {\r\n function MultipleFieldsValidator(fieldValidatorsPairs) {\r\n this.fieldValidatorsPairs = fieldValidatorsPairs;\r\n }\r\n MultipleFieldsValidator.prototype.validate = function (input, path, field) {\r\n if (!this.fieldValidatorsPairs) {\r\n return null;\r\n }\r\n var fieldsPath = path ? path + \".\" + field : field;\r\n for (var _i = 0, _a = this.fieldValidatorsPairs; _i < _a.length; _i++) {\r\n var fieldValidators = _a[_i];\r\n for (var _b = 0, _c = fieldValidators.validators; _b < _c.length; _b++) {\r\n var validator = _c[_b];\r\n var errors = validator.validate(input[fieldValidators.field], fieldsPath, fieldValidators.field);\r\n if (errors) {\r\n return errors;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n return MultipleFieldsValidator;\r\n}());\r\nexports.MultipleFieldsValidator = MultipleFieldsValidator;\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(__unused_webpack_module, exports) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.RangeValidator = exports.NumberArrayValidator = exports.BooleanArrayValidator = exports.StringArrayValidator = exports.EnumValidator = exports.SchemaValidator = exports.ValueValidator = exports.NumberValidator = exports.BooleanValidator = exports.StringValidator = exports.TypeValidator = exports.ArrayValidator = exports.ObjectValidator = void 0;\r\nvar ObjectValidator = /** @class */ (function () {\r\n function ObjectValidator() {\r\n }\r\n ObjectValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (typeof input !== \"object\" || Array.isArray(input)) {\r\n return [{\r\n message: field !== undefined ? field + \" must be an object\" : \"input must be an object\",\r\n path: path,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return ObjectValidator;\r\n}());\r\nexports.ObjectValidator = ObjectValidator;\r\nvar ArrayValidator = /** @class */ (function () {\r\n function ArrayValidator(itemValidators) {\r\n this.itemValidators = itemValidators;\r\n }\r\n ArrayValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (!(Array.isArray(input))) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n for (var i = 0; i < input.length; i++) {\r\n var fieldsPath = (path ? path + \".\" : \"\") + field + \".\" + i.toString();\r\n for (var _i = 0, _a = this.itemValidators; _i < _a.length; _i++) {\r\n var validator = _a[_i];\r\n var errors = validator.validate(input[i], fieldsPath, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n return ArrayValidator;\r\n}());\r\nexports.ArrayValidator = ArrayValidator;\r\nvar TypeValidator = /** @class */ (function () {\r\n function TypeValidator(expectedType) {\r\n this.expectedType = expectedType;\r\n }\r\n TypeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (!(typeof input === this.expectedType)) {\r\n return [{\r\n message: field + \" must be a \" + this.expectedType,\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return TypeValidator;\r\n}());\r\nexports.TypeValidator = TypeValidator;\r\nvar StringValidator = /** @class */ (function (_super) {\r\n __extends(StringValidator, _super);\r\n function StringValidator() {\r\n return _super.call(this, \"string\") || this;\r\n }\r\n return StringValidator;\r\n}(TypeValidator));\r\nexports.StringValidator = StringValidator;\r\nvar BooleanValidator = /** @class */ (function (_super) {\r\n __extends(BooleanValidator, _super);\r\n function BooleanValidator() {\r\n return _super.call(this, \"boolean\") || this;\r\n }\r\n return BooleanValidator;\r\n}(TypeValidator));\r\nexports.BooleanValidator = BooleanValidator;\r\nvar NumberValidator = /** @class */ (function (_super) {\r\n __extends(NumberValidator, _super);\r\n function NumberValidator() {\r\n return _super.call(this, \"number\") || this;\r\n }\r\n return NumberValidator;\r\n}(TypeValidator));\r\nexports.NumberValidator = NumberValidator;\r\nvar ValueValidator = /** @class */ (function () {\r\n function ValueValidator(possibleValues) {\r\n this.possibleValues = possibleValues;\r\n }\r\n ValueValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (this.possibleValues.indexOf(input) < 0) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"invalid\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return ValueValidator;\r\n}());\r\nexports.ValueValidator = ValueValidator;\r\nvar SchemaValidator = /** @class */ (function (_super) {\r\n __extends(SchemaValidator, _super);\r\n function SchemaValidator(schemaValue) {\r\n var _this = _super.call(this, [schemaValue]) || this;\r\n _this.schemaValue = schemaValue;\r\n return _this;\r\n }\r\n SchemaValidator.prototype.validate = function (input, path, field) {\r\n return _super.prototype.validate.call(this, input, path, field);\r\n };\r\n return SchemaValidator;\r\n}(ValueValidator));\r\nexports.SchemaValidator = SchemaValidator;\r\nvar EnumValidator = /** @class */ (function (_super) {\r\n __extends(EnumValidator, _super);\r\n function EnumValidator(possibleValues) {\r\n var _this = _super.call(this) || this;\r\n _this.possibleValues = possibleValues;\r\n return _this;\r\n }\r\n EnumValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var valueValidator = new ValueValidator(this.possibleValues);\r\n return valueValidator.validate(input, path, field);\r\n };\r\n return EnumValidator;\r\n}(NumberValidator));\r\nexports.EnumValidator = EnumValidator;\r\nvar StringArrayValidator = /** @class */ (function (_super) {\r\n __extends(StringArrayValidator, _super);\r\n function StringArrayValidator() {\r\n return _super.call(this, [new StringValidator()]) || this;\r\n }\r\n StringArrayValidator.prototype.validate = function (input, path, field) {\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" must be an array of strings\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return StringArrayValidator;\r\n}(ArrayValidator));\r\nexports.StringArrayValidator = StringArrayValidator;\r\nvar BooleanArrayValidator = /** @class */ (function (_super) {\r\n __extends(BooleanArrayValidator, _super);\r\n function BooleanArrayValidator() {\r\n return _super.call(this, [new BooleanValidator()]) || this;\r\n }\r\n BooleanArrayValidator.prototype.validate = function (input, path, field) {\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" must be an array of booleans\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return BooleanArrayValidator;\r\n}(ArrayValidator));\r\nexports.BooleanArrayValidator = BooleanArrayValidator;\r\nvar NumberArrayValidator = /** @class */ (function (_super) {\r\n __extends(NumberArrayValidator, _super);\r\n function NumberArrayValidator() {\r\n return _super.call(this, [new NumberValidator()]) || this;\r\n }\r\n NumberArrayValidator.prototype.validate = function (input, path, field) {\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" must be an array of numbers\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return NumberArrayValidator;\r\n}(ArrayValidator));\r\nexports.NumberArrayValidator = NumberArrayValidator;\r\nvar RangeValidator = /** @class */ (function (_super) {\r\n __extends(RangeValidator, _super);\r\n function RangeValidator(minValue, maxValue) {\r\n var _this = _super.call(this) || this;\r\n _this.minValue = minValue;\r\n _this.maxValue = maxValue;\r\n return _this;\r\n }\r\n RangeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n // input is a number, now check if it's in the given range\r\n if (input > this.maxValue || input < this.minValue) {\r\n return [{\r\n message: field + \" must be a number between \" + this.minValue.toString() + \" and \" + this.maxValue.toString(),\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"range\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return RangeValidator;\r\n}(NumberValidator));\r\nexports.RangeValidator = RangeValidator;\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CaptureBookmarkRequestValidator = exports.CaptureBookmarkOptionsValidator = exports.ApplyBookmarkStateRequestValidator = exports.ApplyBookmarkByNameRequestValidator = exports.AddBookmarkRequestValidator = exports.PlayBookmarkRequestValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar PlayBookmarkRequestValidator = /** @class */ (function (_super) {\r\n __extends(PlayBookmarkRequestValidator, _super);\r\n function PlayBookmarkRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PlayBookmarkRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"playMode\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, new typeValidator_1.EnumValidator([0, 1])]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PlayBookmarkRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PlayBookmarkRequestValidator = PlayBookmarkRequestValidator;\r\nvar AddBookmarkRequestValidator = /** @class */ (function (_super) {\r\n __extends(AddBookmarkRequestValidator, _super);\r\n function AddBookmarkRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AddBookmarkRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"state\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"displayName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"apply\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return AddBookmarkRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.AddBookmarkRequestValidator = AddBookmarkRequestValidator;\r\nvar ApplyBookmarkByNameRequestValidator = /** @class */ (function (_super) {\r\n __extends(ApplyBookmarkByNameRequestValidator, _super);\r\n function ApplyBookmarkByNameRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ApplyBookmarkByNameRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ApplyBookmarkByNameRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ApplyBookmarkByNameRequestValidator = ApplyBookmarkByNameRequestValidator;\r\nvar ApplyBookmarkStateRequestValidator = /** @class */ (function (_super) {\r\n __extends(ApplyBookmarkStateRequestValidator, _super);\r\n function ApplyBookmarkStateRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ApplyBookmarkStateRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"state\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ApplyBookmarkStateRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ApplyBookmarkStateRequestValidator = ApplyBookmarkStateRequestValidator;\r\nvar CaptureBookmarkOptionsValidator = /** @class */ (function (_super) {\r\n __extends(CaptureBookmarkOptionsValidator, _super);\r\n function CaptureBookmarkOptionsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CaptureBookmarkOptionsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"personalizeVisuals\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"allPages\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CaptureBookmarkOptionsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CaptureBookmarkOptionsValidator = CaptureBookmarkOptionsValidator;\r\nvar CaptureBookmarkRequestValidator = /** @class */ (function (_super) {\r\n __extends(CaptureBookmarkRequestValidator, _super);\r\n function CaptureBookmarkRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CaptureBookmarkRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"options\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.captureBookmarkOptionsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CaptureBookmarkRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CaptureBookmarkRequestValidator = CaptureBookmarkRequestValidator;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PaginatedReportCommandsValidator = exports.SingleCommandSettingsValidator = exports.CommandsSettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar CommandsSettingsValidator = /** @class */ (function (_super) {\r\n __extends(CommandsSettingsValidator, _super);\r\n function CommandsSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CommandsSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"copy\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"drill\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"drillthrough\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"expandCollapse\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"exportData\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"includeExclude\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"removeVisual\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"search\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"seeData\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"sort\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"spotlight\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"insightsAnalysis\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"addComment\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"groupVisualContainers\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"summarize\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"clearSelection\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CommandsSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CommandsSettingsValidator = CommandsSettingsValidator;\r\nvar SingleCommandSettingsValidator = /** @class */ (function (_super) {\r\n __extends(SingleCommandSettingsValidator, _super);\r\n function SingleCommandSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SingleCommandSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"displayOption\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.commandDisplayOptionValidator]\r\n },\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.visualCommandSelectorValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SingleCommandSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SingleCommandSettingsValidator = SingleCommandSettingsValidator;\r\nvar PaginatedReportCommandsValidator = /** @class */ (function (_super) {\r\n __extends(PaginatedReportCommandsValidator, _super);\r\n function PaginatedReportCommandsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PaginatedReportCommandsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"parameterPanel\",\r\n validators: [validator_1.Validators.parametersPanelValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PaginatedReportCommandsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PaginatedReportCommandsValidator = PaginatedReportCommandsValidator;\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CustomThemeValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar CustomThemeValidator = /** @class */ (function (_super) {\r\n __extends(CustomThemeValidator, _super);\r\n function CustomThemeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CustomThemeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"themeJson\",\r\n validators: [new typeValidator_1.ObjectValidator()]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CustomThemeValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CustomThemeValidator = CustomThemeValidator;\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DashboardLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar DashboardLoadValidator = /** @class */ (function (_super) {\r\n __extends(DashboardLoadValidator, _super);\r\n function DashboardLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DashboardLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"pageView\",\r\n validators: [validator_1.Validators.pageViewFieldValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"embedUrl\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DashboardLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DashboardLoadValidator = DashboardLoadValidator;\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DatasetBindingValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar DatasetBindingValidator = /** @class */ (function (_super) {\r\n __extends(DatasetBindingValidator, _super);\r\n function DatasetBindingValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DatasetBindingValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n if (!input[\"datasetId\"] && !input[\"paginatedReportBindings\"]) {\r\n return [{\r\n message: \"datasetBinding cannot be empty\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"invalid\"\r\n }];\r\n }\r\n var fields = [\r\n {\r\n field: \"datasetId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"paginatedReportBindings\",\r\n validators: [validator_1.Validators.paginatedReportDatasetBindingArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DatasetBindingValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DatasetBindingValidator = DatasetBindingValidator;\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ExportDataRequestValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar ExportDataRequestValidator = /** @class */ (function (_super) {\r\n __extends(ExportDataRequestValidator, _super);\r\n function ExportDataRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExportDataRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"rows\",\r\n validators: [new typeValidator_1.NumberValidator()]\r\n },\r\n {\r\n field: \"exportDataType\",\r\n validators: [new typeValidator_1.EnumValidator([0, 1])]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExportDataRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExportDataRequestValidator = ExportDataRequestValidator;\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ExtensionsValidator = exports.MenuGroupExtensionValidator = exports.ExtensionValidator = exports.CommandExtensionValidator = exports.ExtensionItemValidator = exports.ExtensionPointsValidator = exports.GroupedMenuExtensionValidator = exports.FlatMenuExtensionValidator = exports.MenuExtensionBaseValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar MenuExtensionBaseValidator = /** @class */ (function (_super) {\r\n __extends(MenuExtensionBaseValidator, _super);\r\n function MenuExtensionBaseValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MenuExtensionBaseValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"title\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"icon\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return MenuExtensionBaseValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.MenuExtensionBaseValidator = MenuExtensionBaseValidator;\r\nvar FlatMenuExtensionValidator = /** @class */ (function (_super) {\r\n __extends(FlatMenuExtensionValidator, _super);\r\n function FlatMenuExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FlatMenuExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"menuLocation\",\r\n validators: [validator_1.Validators.menuLocationValidator]\r\n },\r\n {\r\n field: \"groupName\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FlatMenuExtensionValidator;\r\n}(MenuExtensionBaseValidator));\r\nexports.FlatMenuExtensionValidator = FlatMenuExtensionValidator;\r\nvar GroupedMenuExtensionValidator = /** @class */ (function (_super) {\r\n __extends(GroupedMenuExtensionValidator, _super);\r\n function GroupedMenuExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n GroupedMenuExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"groupName\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"menuLocation\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return GroupedMenuExtensionValidator;\r\n}(MenuExtensionBaseValidator));\r\nexports.GroupedMenuExtensionValidator = GroupedMenuExtensionValidator;\r\nvar ExtensionPointsValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionPointsValidator, _super);\r\n function ExtensionPointsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionPointsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visualContextMenu\",\r\n validators: [validator_1.Validators.menuExtensionValidator]\r\n },\r\n {\r\n field: \"visualOptionsMenu\",\r\n validators: [validator_1.Validators.menuExtensionValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionPointsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionPointsValidator = ExtensionPointsValidator;\r\nvar ExtensionItemValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionItemValidator, _super);\r\n function ExtensionItemValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionItemValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"extend\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.extensionPointsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionItemValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionItemValidator = ExtensionItemValidator;\r\nvar CommandExtensionValidator = /** @class */ (function (_super) {\r\n __extends(CommandExtensionValidator, _super);\r\n function CommandExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CommandExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"title\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"icon\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.commandExtensionSelectorValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CommandExtensionValidator;\r\n}(ExtensionItemValidator));\r\nexports.CommandExtensionValidator = CommandExtensionValidator;\r\nvar ExtensionValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionValidator, _super);\r\n function ExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"command\",\r\n validators: [validator_1.Validators.commandExtensionValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionValidator = ExtensionValidator;\r\nvar MenuGroupExtensionValidator = /** @class */ (function (_super) {\r\n __extends(MenuGroupExtensionValidator, _super);\r\n function MenuGroupExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MenuGroupExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"title\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"menuLocation\",\r\n validators: [validator_1.Validators.menuLocationValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return MenuGroupExtensionValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.MenuGroupExtensionValidator = MenuGroupExtensionValidator;\r\nvar ExtensionsValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionsValidator, _super);\r\n function ExtensionsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"commands\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.commandExtensionArrayValidator]\r\n },\r\n {\r\n field: \"groups\",\r\n validators: [validator_1.Validators.menuGroupExtensionArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionsValidator = ExtensionsValidator;\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.OnLoadFiltersValidator = exports.OnLoadFiltersBaseRemoveOperationValidator = exports.OnLoadFiltersBaseValidator = exports.ConditionItemValidator = exports.RemoveFiltersRequestValidator = exports.UpdateFiltersRequestValidator = exports.FilterValidator = exports.IncludeExcludePointValueValidator = exports.HierarchyFilterNodeValidator = exports.HierarchyFilterValidator = exports.IncludeExcludeFilterValidator = exports.NotSupportedFilterValidator = exports.TopNFilterValidator = exports.RelativeTimeFilterValidator = exports.RelativeDateFilterValidator = exports.RelativeDateTimeFilterValidator = exports.AdvancedFilterValidator = exports.BasicFilterValidator = exports.FilterValidatorBase = exports.FilterDisplaySettingsValidator = exports.FilterMeasureTargetValidator = exports.FilterKeyHierarchyTargetValidator = exports.FilterHierarchyTargetValidator = exports.FilterKeyColumnsTargetValidator = exports.FilterColumnTargetValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar FilterColumnTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterColumnTargetValidator, _super);\r\n function FilterColumnTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterColumnTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"table\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"column\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterColumnTargetValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterColumnTargetValidator = FilterColumnTargetValidator;\r\nvar FilterKeyColumnsTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterKeyColumnsTargetValidator, _super);\r\n function FilterKeyColumnsTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterKeyColumnsTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"keys\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringArrayValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterKeyColumnsTargetValidator;\r\n}(FilterColumnTargetValidator));\r\nexports.FilterKeyColumnsTargetValidator = FilterKeyColumnsTargetValidator;\r\nvar FilterHierarchyTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterHierarchyTargetValidator, _super);\r\n function FilterHierarchyTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterHierarchyTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"table\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"hierarchy\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"hierarchyLevel\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterHierarchyTargetValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterHierarchyTargetValidator = FilterHierarchyTargetValidator;\r\nvar FilterKeyHierarchyTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterKeyHierarchyTargetValidator, _super);\r\n function FilterKeyHierarchyTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterKeyHierarchyTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"keys\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringArrayValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterKeyHierarchyTargetValidator;\r\n}(FilterHierarchyTargetValidator));\r\nexports.FilterKeyHierarchyTargetValidator = FilterKeyHierarchyTargetValidator;\r\nvar FilterMeasureTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterMeasureTargetValidator, _super);\r\n function FilterMeasureTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterMeasureTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"table\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"measure\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterMeasureTargetValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterMeasureTargetValidator = FilterMeasureTargetValidator;\r\nvar FilterDisplaySettingsValidator = /** @class */ (function (_super) {\r\n __extends(FilterDisplaySettingsValidator, _super);\r\n function FilterDisplaySettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterDisplaySettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"isLockedInViewMode\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"isHiddenInViewMode\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"displayName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterDisplaySettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterDisplaySettingsValidator = FilterDisplaySettingsValidator;\r\nvar FilterValidatorBase = /** @class */ (function (_super) {\r\n __extends(FilterValidatorBase, _super);\r\n function FilterValidatorBase() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterValidatorBase.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"target\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filterTargetValidator]\r\n },\r\n {\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.filterTypeValidator]\r\n },\r\n {\r\n field: \"displaySettings\",\r\n validators: [validator_1.Validators.filterDisplaySettingsValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterValidatorBase;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterValidatorBase = FilterValidatorBase;\r\nvar BasicFilterValidator = /** @class */ (function (_super) {\r\n __extends(BasicFilterValidator, _super);\r\n function BasicFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n BasicFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"values\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.anyArrayValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.basicFilterTypeValidator]\r\n },\r\n {\r\n field: \"requireSingleSelection\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return BasicFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.BasicFilterValidator = BasicFilterValidator;\r\nvar AdvancedFilterValidator = /** @class */ (function (_super) {\r\n __extends(AdvancedFilterValidator, _super);\r\n function AdvancedFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AdvancedFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"logicalOperator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"conditions\",\r\n validators: [validator_1.Validators.filterConditionsValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.advancedFilterTypeValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return AdvancedFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.AdvancedFilterValidator = AdvancedFilterValidator;\r\nvar RelativeDateTimeFilterValidator = /** @class */ (function (_super) {\r\n __extends(RelativeDateTimeFilterValidator, _super);\r\n function RelativeDateTimeFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RelativeDateTimeFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeDateFilterOperatorValidator]\r\n },\r\n {\r\n field: \"timeUnitsCount\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"timeUnitType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeDateTimeFilterUnitTypeValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.relativeDateTimeFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RelativeDateTimeFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.RelativeDateTimeFilterValidator = RelativeDateTimeFilterValidator;\r\nvar RelativeDateFilterValidator = /** @class */ (function (_super) {\r\n __extends(RelativeDateFilterValidator, _super);\r\n function RelativeDateFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RelativeDateFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"includeToday\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"timeUnitType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeDateFilterTimeUnitTypeValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.relativeDateFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RelativeDateFilterValidator;\r\n}(RelativeDateTimeFilterValidator));\r\nexports.RelativeDateFilterValidator = RelativeDateFilterValidator;\r\nvar RelativeTimeFilterValidator = /** @class */ (function (_super) {\r\n __extends(RelativeTimeFilterValidator, _super);\r\n function RelativeTimeFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RelativeTimeFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"timeUnitType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeTimeFilterTimeUnitTypeValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.relativeTimeFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RelativeTimeFilterValidator;\r\n}(RelativeDateTimeFilterValidator));\r\nexports.RelativeTimeFilterValidator = RelativeTimeFilterValidator;\r\nvar TopNFilterValidator = /** @class */ (function (_super) {\r\n __extends(TopNFilterValidator, _super);\r\n function TopNFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TopNFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"itemCount\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.topNFilterTypeValidator]\r\n },\r\n {\r\n field: \"orderBy\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filterTargetValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TopNFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.TopNFilterValidator = TopNFilterValidator;\r\nvar NotSupportedFilterValidator = /** @class */ (function (_super) {\r\n __extends(NotSupportedFilterValidator, _super);\r\n function NotSupportedFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n NotSupportedFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"message\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"notSupportedTypeName\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.notSupportedFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return NotSupportedFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.NotSupportedFilterValidator = NotSupportedFilterValidator;\r\nvar IncludeExcludeFilterValidator = /** @class */ (function (_super) {\r\n __extends(IncludeExcludeFilterValidator, _super);\r\n function IncludeExcludeFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n IncludeExcludeFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"isExclude\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"values\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.includeExcludeFilterValuesValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.includeExludeFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return IncludeExcludeFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.IncludeExcludeFilterValidator = IncludeExcludeFilterValidator;\r\nvar HierarchyFilterValidator = /** @class */ (function (_super) {\r\n __extends(HierarchyFilterValidator, _super);\r\n function HierarchyFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n HierarchyFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"hierarchyData\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.hierarchyFilterValuesValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.hierarchyFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return HierarchyFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.HierarchyFilterValidator = HierarchyFilterValidator;\r\nvar HierarchyFilterNodeValidator = /** @class */ (function (_super) {\r\n __extends(HierarchyFilterNodeValidator, _super);\r\n function HierarchyFilterNodeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n HierarchyFilterNodeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"value\",\r\n validators: [validator_1.Validators.anyValueValidator]\r\n },\r\n {\r\n field: \"keyValues\",\r\n validators: [validator_1.Validators.anyArrayValidator]\r\n },\r\n {\r\n field: \"children\",\r\n validators: [validator_1.Validators.hierarchyFilterValuesValidator]\r\n },\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return HierarchyFilterNodeValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.HierarchyFilterNodeValidator = HierarchyFilterNodeValidator;\r\nvar IncludeExcludePointValueValidator = /** @class */ (function (_super) {\r\n __extends(IncludeExcludePointValueValidator, _super);\r\n function IncludeExcludePointValueValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n IncludeExcludePointValueValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"value\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.anyValueValidator]\r\n },\r\n {\r\n field: \"keyValues\",\r\n validators: [validator_1.Validators.anyArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return IncludeExcludePointValueValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.IncludeExcludePointValueValidator = IncludeExcludePointValueValidator;\r\nvar FilterValidator = /** @class */ (function (_super) {\r\n __extends(FilterValidator, _super);\r\n function FilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n return validator_1.Validators.anyFilterValidator.validate(input, path, field);\r\n };\r\n return FilterValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterValidator = FilterValidator;\r\nvar UpdateFiltersRequestValidator = /** @class */ (function (_super) {\r\n __extends(UpdateFiltersRequestValidator, _super);\r\n function UpdateFiltersRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n UpdateFiltersRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filtersOperation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsUpdateValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return UpdateFiltersRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.UpdateFiltersRequestValidator = UpdateFiltersRequestValidator;\r\nvar RemoveFiltersRequestValidator = /** @class */ (function (_super) {\r\n __extends(RemoveFiltersRequestValidator, _super);\r\n function RemoveFiltersRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RemoveFiltersRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filtersOperation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsRemoveAllValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RemoveFiltersRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.RemoveFiltersRequestValidator = RemoveFiltersRequestValidator;\r\nvar ConditionItemValidator = /** @class */ (function (_super) {\r\n __extends(ConditionItemValidator, _super);\r\n function ConditionItemValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ConditionItemValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"value\",\r\n validators: [validator_1.Validators.anyValueValidator]\r\n },\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ConditionItemValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ConditionItemValidator = ConditionItemValidator;\r\nvar OnLoadFiltersBaseValidator = /** @class */ (function (_super) {\r\n __extends(OnLoadFiltersBaseValidator, _super);\r\n function OnLoadFiltersBaseValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n OnLoadFiltersBaseValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsUpdateValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return OnLoadFiltersBaseValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.OnLoadFiltersBaseValidator = OnLoadFiltersBaseValidator;\r\nvar OnLoadFiltersBaseRemoveOperationValidator = /** @class */ (function (_super) {\r\n __extends(OnLoadFiltersBaseRemoveOperationValidator, _super);\r\n function OnLoadFiltersBaseRemoveOperationValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n OnLoadFiltersBaseRemoveOperationValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsRemoveAllValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return OnLoadFiltersBaseRemoveOperationValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.OnLoadFiltersBaseRemoveOperationValidator = OnLoadFiltersBaseRemoveOperationValidator;\r\nvar OnLoadFiltersValidator = /** @class */ (function (_super) {\r\n __extends(OnLoadFiltersValidator, _super);\r\n function OnLoadFiltersValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n OnLoadFiltersValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"allPages\",\r\n validators: [validator_1.Validators.onLoadFiltersBaseValidator]\r\n },\r\n {\r\n field: \"currentPage\",\r\n validators: [validator_1.Validators.onLoadFiltersBaseValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return OnLoadFiltersValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.OnLoadFiltersValidator = OnLoadFiltersValidator;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PageLayoutValidator = exports.DisplayStateValidator = exports.VisualLayoutValidator = exports.CustomLayoutValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar CustomLayoutValidator = /** @class */ (function (_super) {\r\n __extends(CustomLayoutValidator, _super);\r\n function CustomLayoutValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CustomLayoutValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"pageSize\",\r\n validators: [validator_1.Validators.pageSizeValidator]\r\n },\r\n {\r\n field: \"displayOption\",\r\n validators: [validator_1.Validators.customLayoutDisplayOptionValidator]\r\n },\r\n {\r\n field: \"pagesLayout\",\r\n validators: [validator_1.Validators.pagesLayoutValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CustomLayoutValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CustomLayoutValidator = CustomLayoutValidator;\r\nvar VisualLayoutValidator = /** @class */ (function (_super) {\r\n __extends(VisualLayoutValidator, _super);\r\n function VisualLayoutValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualLayoutValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"x\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"y\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"z\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"width\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"height\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"displayState\",\r\n validators: [validator_1.Validators.displayStateValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualLayoutValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualLayoutValidator = VisualLayoutValidator;\r\nvar DisplayStateValidator = /** @class */ (function (_super) {\r\n __extends(DisplayStateValidator, _super);\r\n function DisplayStateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DisplayStateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"mode\",\r\n validators: [validator_1.Validators.displayStateModeValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DisplayStateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DisplayStateValidator = DisplayStateValidator;\r\nvar PageLayoutValidator = /** @class */ (function (_super) {\r\n __extends(PageLayoutValidator, _super);\r\n function PageLayoutValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageLayoutValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visualsLayout\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.pageLayoutValidator]\r\n },\r\n {\r\n field: \"defaultLayout\",\r\n validators: [validator_1.Validators.visualLayoutValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageLayoutValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageLayoutValidator = PageLayoutValidator;\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PageViewFieldValidator = exports.PageValidator = exports.CustomPageSizeValidator = exports.PageSizeValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar PageSizeValidator = /** @class */ (function (_super) {\r\n __extends(PageSizeValidator, _super);\r\n function PageSizeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageSizeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"type\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.pageSizeTypeValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageSizeValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageSizeValidator = PageSizeValidator;\r\nvar CustomPageSizeValidator = /** @class */ (function (_super) {\r\n __extends(CustomPageSizeValidator, _super);\r\n function CustomPageSizeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CustomPageSizeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"width\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"height\",\r\n validators: [validator_1.Validators.numberValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CustomPageSizeValidator;\r\n}(PageSizeValidator));\r\nexports.CustomPageSizeValidator = CustomPageSizeValidator;\r\nvar PageValidator = /** @class */ (function (_super) {\r\n __extends(PageValidator, _super);\r\n function PageValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageValidator = PageValidator;\r\nvar PageViewFieldValidator = /** @class */ (function (_super) {\r\n __extends(PageViewFieldValidator, _super);\r\n function PageViewFieldValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageViewFieldValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var possibleValues = [\"actualSize\", \"fitToWidth\", \"oneColumn\"];\r\n if (possibleValues.indexOf(input) < 0) {\r\n return [{\r\n message: \"pageView must be a string with one of the following values: \\\"actualSize\\\", \\\"fitToWidth\\\", \\\"oneColumn\\\"\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return PageViewFieldValidator;\r\n}(typeValidator_1.StringValidator));\r\nexports.PageViewFieldValidator = PageViewFieldValidator;\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.VisualizationsPaneValidator = exports.SyncSlicersPaneValidator = exports.SelectionPaneValidator = exports.PageNavigationPaneValidator = exports.FiltersPaneValidator = exports.FieldsPaneValidator = exports.BookmarksPaneValidator = exports.QnaPanesValidator = exports.ReportPanesValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar ReportPanesValidator = /** @class */ (function (_super) {\r\n __extends(ReportPanesValidator, _super);\r\n function ReportPanesValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportPanesValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"bookmarks\",\r\n validators: [validator_1.Validators.bookmarksPaneValidator]\r\n },\r\n {\r\n field: \"fields\",\r\n validators: [validator_1.Validators.fieldsPaneValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.filtersPaneValidator]\r\n },\r\n {\r\n field: \"pageNavigation\",\r\n validators: [validator_1.Validators.pageNavigationPaneValidator]\r\n },\r\n {\r\n field: \"selection\",\r\n validators: [validator_1.Validators.selectionPaneValidator]\r\n },\r\n {\r\n field: \"syncSlicers\",\r\n validators: [validator_1.Validators.syncSlicersPaneValidator]\r\n },\r\n {\r\n field: \"visualizations\",\r\n validators: [validator_1.Validators.visualizationsPaneValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportPanesValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportPanesValidator = ReportPanesValidator;\r\nvar QnaPanesValidator = /** @class */ (function (_super) {\r\n __extends(QnaPanesValidator, _super);\r\n function QnaPanesValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QnaPanesValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.filtersPaneValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QnaPanesValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QnaPanesValidator = QnaPanesValidator;\r\nvar BookmarksPaneValidator = /** @class */ (function (_super) {\r\n __extends(BookmarksPaneValidator, _super);\r\n function BookmarksPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n BookmarksPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return BookmarksPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.BookmarksPaneValidator = BookmarksPaneValidator;\r\nvar FieldsPaneValidator = /** @class */ (function (_super) {\r\n __extends(FieldsPaneValidator, _super);\r\n function FieldsPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FieldsPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FieldsPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FieldsPaneValidator = FieldsPaneValidator;\r\nvar FiltersPaneValidator = /** @class */ (function (_super) {\r\n __extends(FiltersPaneValidator, _super);\r\n function FiltersPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FiltersPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FiltersPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FiltersPaneValidator = FiltersPaneValidator;\r\nvar PageNavigationPaneValidator = /** @class */ (function (_super) {\r\n __extends(PageNavigationPaneValidator, _super);\r\n function PageNavigationPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageNavigationPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"position\",\r\n validators: [validator_1.Validators.pageNavigationPositionValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageNavigationPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageNavigationPaneValidator = PageNavigationPaneValidator;\r\nvar SelectionPaneValidator = /** @class */ (function (_super) {\r\n __extends(SelectionPaneValidator, _super);\r\n function SelectionPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SelectionPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SelectionPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SelectionPaneValidator = SelectionPaneValidator;\r\nvar SyncSlicersPaneValidator = /** @class */ (function (_super) {\r\n __extends(SyncSlicersPaneValidator, _super);\r\n function SyncSlicersPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SyncSlicersPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SyncSlicersPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SyncSlicersPaneValidator = SyncSlicersPaneValidator;\r\nvar VisualizationsPaneValidator = /** @class */ (function (_super) {\r\n __extends(VisualizationsPaneValidator, _super);\r\n function VisualizationsPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualizationsPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualizationsPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualizationsPaneValidator = VisualizationsPaneValidator;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.QnaInterpretInputDataValidator = exports.QnaSettingsValidator = exports.LoadQnaValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar LoadQnaValidator = /** @class */ (function (_super) {\r\n __extends(LoadQnaValidator, _super);\r\n function LoadQnaValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n LoadQnaValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasetIds\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringArrayValidator]\r\n },\r\n {\r\n field: \"question\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"viewMode\",\r\n validators: [validator_1.Validators.viewModeValidator]\r\n },\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.qnaSettingValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return LoadQnaValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.LoadQnaValidator = LoadQnaValidator;\r\nvar QnaSettingsValidator = /** @class */ (function (_super) {\r\n __extends(QnaSettingsValidator, _super);\r\n function QnaSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QnaSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filterPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"hideErrors\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"panes\",\r\n validators: [validator_1.Validators.qnaPanesValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QnaSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QnaSettingsValidator = QnaSettingsValidator;\r\nvar QnaInterpretInputDataValidator = /** @class */ (function (_super) {\r\n __extends(QnaInterpretInputDataValidator, _super);\r\n function QnaInterpretInputDataValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QnaInterpretInputDataValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"datasetIds\",\r\n validators: [validator_1.Validators.stringArrayValidator]\r\n },\r\n {\r\n field: \"question\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QnaInterpretInputDataValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QnaInterpretInputDataValidator = QnaInterpretInputDataValidator;\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReportCreateValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar ReportCreateValidator = /** @class */ (function (_super) {\r\n __extends(ReportCreateValidator, _super);\r\n function ReportCreateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportCreateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasetId\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"theme\",\r\n validators: [validator_1.Validators.customThemeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportCreateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportCreateValidator = ReportCreateValidator;\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReportLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar ReportLoadValidator = /** @class */ (function (_super) {\r\n __extends(ReportLoadValidator, _super);\r\n function ReportLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.settingsValidator]\r\n },\r\n {\r\n field: \"pageName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.reportLoadFiltersValidator]\r\n },\r\n {\r\n field: \"permissions\",\r\n validators: [validator_1.Validators.permissionsValidator]\r\n },\r\n {\r\n field: \"viewMode\",\r\n validators: [validator_1.Validators.viewModeValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"bookmark\",\r\n validators: [validator_1.Validators.applyBookmarkValidator]\r\n },\r\n {\r\n field: \"theme\",\r\n validators: [validator_1.Validators.customThemeValidator]\r\n },\r\n {\r\n field: \"embedUrl\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasetBinding\",\r\n validators: [validator_1.Validators.datasetBindingValidator]\r\n },\r\n {\r\n field: \"contrastMode\",\r\n validators: [validator_1.Validators.contrastModeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportLoadValidator = ReportLoadValidator;\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReportParameterFieldsValidator = exports.PaginatedReportLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar PaginatedReportLoadValidator = /** @class */ (function (_super) {\r\n __extends(PaginatedReportLoadValidator, _super);\r\n function PaginatedReportLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PaginatedReportLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.paginatedReportsettingsValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"embedUrl\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"type\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"parameterValues\",\r\n validators: [validator_1.Validators.parameterValuesArrayValidator]\r\n },\r\n {\r\n field: \"datasetBindings\",\r\n validators: [validator_1.Validators.paginatedReportDatasetBindingArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PaginatedReportLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PaginatedReportLoadValidator = PaginatedReportLoadValidator;\r\nvar ReportParameterFieldsValidator = /** @class */ (function () {\r\n function ReportParameterFieldsValidator() {\r\n }\r\n ReportParameterFieldsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"value\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportParameterFieldsValidator;\r\n}());\r\nexports.ReportParameterFieldsValidator = ReportParameterFieldsValidator;\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SaveAsParametersValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar SaveAsParametersValidator = /** @class */ (function (_super) {\r\n __extends(SaveAsParametersValidator, _super);\r\n function SaveAsParametersValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SaveAsParametersValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SaveAsParametersValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SaveAsParametersValidator = SaveAsParametersValidator;\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SlicerTargetSelectorValidator = exports.VisualTypeSelectorValidator = exports.VisualSelectorValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar typeValidator_2 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar VisualSelectorValidator = /** @class */ (function (_super) {\r\n __extends(VisualSelectorValidator, _super);\r\n function VisualSelectorValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualSelectorValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n // Not required for this selector only - Backward compatibility\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.stringValidator, new typeValidator_2.SchemaValidator(\"http://powerbi.com/product/schema#visualSelector\")]\r\n },\r\n {\r\n field: \"visualName\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualSelectorValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualSelectorValidator = VisualSelectorValidator;\r\nvar VisualTypeSelectorValidator = /** @class */ (function (_super) {\r\n __extends(VisualTypeSelectorValidator, _super);\r\n function VisualTypeSelectorValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualTypeSelectorValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator, new typeValidator_2.SchemaValidator(\"http://powerbi.com/product/schema#visualTypeSelector\")]\r\n },\r\n {\r\n field: \"visualType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualTypeSelectorValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualTypeSelectorValidator = VisualTypeSelectorValidator;\r\nvar SlicerTargetSelectorValidator = /** @class */ (function (_super) {\r\n __extends(SlicerTargetSelectorValidator, _super);\r\n function SlicerTargetSelectorValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SlicerTargetSelectorValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator, new typeValidator_2.SchemaValidator(\"http://powerbi.com/product/schema#slicerTargetSelector\")]\r\n },\r\n {\r\n field: \"target\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.slicerTargetValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SlicerTargetSelectorValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SlicerTargetSelectorValidator = SlicerTargetSelectorValidator;\r\n\n\n/***/ }),\n/* 22 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PaginatedReportSettingsValidator = exports.SettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar SettingsValidator = /** @class */ (function (_super) {\r\n __extends(SettingsValidator, _super);\r\n function SettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filterPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"navContentPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"bookmarksPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"useCustomSaveAsDialog\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"extensions\",\r\n validators: [validator_1.Validators.extensionsValidator]\r\n },\r\n {\r\n field: \"layoutType\",\r\n validators: [validator_1.Validators.layoutTypeValidator]\r\n },\r\n {\r\n field: \"customLayout\",\r\n validators: [validator_1.Validators.customLayoutValidator]\r\n },\r\n {\r\n field: \"background\",\r\n validators: [validator_1.Validators.backgroundValidator]\r\n },\r\n {\r\n field: \"visualSettings\",\r\n validators: [validator_1.Validators.visualSettingsValidator]\r\n },\r\n {\r\n field: \"hideErrors\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"commands\",\r\n validators: [validator_1.Validators.commandsSettingsArrayValidator]\r\n },\r\n {\r\n field: \"hyperlinkClickBehavior\",\r\n validators: [validator_1.Validators.hyperlinkClickBehaviorValidator]\r\n },\r\n {\r\n field: \"bars\",\r\n validators: [validator_1.Validators.reportBarsValidator]\r\n },\r\n {\r\n field: \"panes\",\r\n validators: [validator_1.Validators.reportPanesValidator]\r\n },\r\n {\r\n field: \"personalBookmarksEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"persistentFiltersEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"visualRenderedEvents\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"authoringHintsEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"printSettings\",\r\n validators: [validator_1.Validators.printSettingsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SettingsValidator = SettingsValidator;\r\nvar PaginatedReportSettingsValidator = /** @class */ (function (_super) {\r\n __extends(PaginatedReportSettingsValidator, _super);\r\n function PaginatedReportSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PaginatedReportSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"commands\",\r\n validators: [validator_1.Validators.paginatedReportCommandsValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PaginatedReportSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PaginatedReportSettingsValidator = PaginatedReportSettingsValidator;\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SlicerStateValidator = exports.SlicerValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar SlicerValidator = /** @class */ (function (_super) {\r\n __extends(SlicerValidator, _super);\r\n function SlicerValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SlicerValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.slicerSelectorValidator]\r\n },\r\n {\r\n field: \"state\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.slicerStateValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SlicerValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SlicerValidator = SlicerValidator;\r\nvar SlicerStateValidator = /** @class */ (function (_super) {\r\n __extends(SlicerStateValidator, _super);\r\n function SlicerStateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SlicerStateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SlicerStateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SlicerStateValidator = SlicerStateValidator;\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.TileLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar TileLoadValidator = /** @class */ (function (_super) {\r\n __extends(TileLoadValidator, _super);\r\n function TileLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TileLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"dashboardId\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"pageView\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"width\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"height\",\r\n validators: [validator_1.Validators.numberValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TileLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.TileLoadValidator = TileLoadValidator;\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.VisualHeaderValidator = exports.VisualHeaderSettingsValidator = exports.VisualSettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar VisualSettingsValidator = /** @class */ (function (_super) {\r\n __extends(VisualSettingsValidator, _super);\r\n function VisualSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visualHeaders\",\r\n validators: [validator_1.Validators.visualHeadersValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualSettingsValidator = VisualSettingsValidator;\r\nvar VisualHeaderSettingsValidator = /** @class */ (function (_super) {\r\n __extends(VisualHeaderSettingsValidator, _super);\r\n function VisualHeaderSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualHeaderSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualHeaderSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualHeaderSettingsValidator = VisualHeaderSettingsValidator;\r\nvar VisualHeaderValidator = /** @class */ (function (_super) {\r\n __extends(VisualHeaderValidator, _super);\r\n function VisualHeaderValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualHeaderValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.visualHeaderSettingsValidator]\r\n },\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.visualHeaderSelectorValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualHeaderValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualHeaderValidator = VisualHeaderValidator;\r\n\n\n/***/ }),\n/* 26 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.AnyOfValidator = void 0;\r\nvar AnyOfValidator = /** @class */ (function () {\r\n function AnyOfValidator(validators) {\r\n this.validators = validators;\r\n }\r\n AnyOfValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var valid = false;\r\n for (var _i = 0, _a = this.validators; _i < _a.length; _i++) {\r\n var validator = _a[_i];\r\n var errors = validator.validate(input, path, field);\r\n if (!errors) {\r\n valid = true;\r\n break;\r\n }\r\n }\r\n if (!valid) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"invalid\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return AnyOfValidator;\r\n}());\r\nexports.AnyOfValidator = AnyOfValidator;\r\n\n\n/***/ }),\n/* 27 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.FieldForbiddenValidator = void 0;\r\nvar FieldForbiddenValidator = /** @class */ (function () {\r\n function FieldForbiddenValidator() {\r\n }\r\n FieldForbiddenValidator.prototype.validate = function (input, path, field) {\r\n if (input !== undefined) {\r\n return [{\r\n message: field + \" is forbidden\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"forbidden\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return FieldForbiddenValidator;\r\n}());\r\nexports.FieldForbiddenValidator = FieldForbiddenValidator;\r\n\n\n/***/ }),\n/* 28 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.FieldRequiredValidator = void 0;\r\nvar FieldRequiredValidator = /** @class */ (function () {\r\n function FieldRequiredValidator() {\r\n }\r\n FieldRequiredValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return [{\r\n message: field + \" is required\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"required\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return FieldRequiredValidator;\r\n}());\r\nexports.FieldRequiredValidator = FieldRequiredValidator;\r\n\n\n/***/ }),\n/* 29 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.MapValidator = void 0;\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar MapValidator = /** @class */ (function (_super) {\r\n __extends(MapValidator, _super);\r\n function MapValidator(keyValidators, valueValidators) {\r\n var _this = _super.call(this) || this;\r\n _this.keyValidators = keyValidators;\r\n _this.valueValidators = valueValidators;\r\n return _this;\r\n }\r\n MapValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n for (var key in input) {\r\n if (input.hasOwnProperty(key)) {\r\n var fieldsPath = (path ? path + \".\" : \"\") + field + \".\" + key;\r\n for (var _i = 0, _a = this.keyValidators; _i < _a.length; _i++) {\r\n var keyValidator = _a[_i];\r\n errors = keyValidator.validate(key, fieldsPath, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n }\r\n for (var _b = 0, _c = this.valueValidators; _b < _c.length; _b++) {\r\n var valueValidator = _c[_b];\r\n errors = valueValidator.validate(input[key], fieldsPath, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n return MapValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.MapValidator = MapValidator;\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ParametersPanelValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar ParametersPanelValidator = /** @class */ (function (_super) {\r\n __extends(ParametersPanelValidator, _super);\r\n function ParametersPanelValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ParametersPanelValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"enabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ParametersPanelValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ParametersPanelValidator = ParametersPanelValidator;\r\n\n\n/***/ }),\n/* 31 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.TableDataValidator = exports.TableSchemaValidator = exports.ColumnSchemaValidator = exports.CredentialsValidator = exports.DatasourceConnectionConfigValidator = exports.DatasetCreateConfigValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar DatasetCreateConfigValidator = /** @class */ (function (_super) {\r\n __extends(DatasetCreateConfigValidator, _super);\r\n function DatasetCreateConfigValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DatasetCreateConfigValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"locale\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"mashupDocument\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasourceConnectionConfig\",\r\n validators: [validator_1.Validators.datasourceConnectionConfigValidator]\r\n },\r\n {\r\n field: \"tableSchemaList\",\r\n validators: [validator_1.Validators.tableSchemaListValidator]\r\n },\r\n {\r\n field: \"data\",\r\n validators: [validator_1.Validators.tableDataArrayValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n errors = multipleFieldsValidator.validate(input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n if (input[\"datasourceConnectionConfig\"] && input[\"mashupDocument\"] == null) {\r\n return [{\r\n message: \"mashupDocument cannot be empty when datasourceConnectionConfig is presented\"\r\n }];\r\n }\r\n if (input[\"data\"] && input[\"tableSchemaList\"] == null) {\r\n return [{\r\n message: \"tableSchemaList cannot be empty when data is provided\"\r\n }];\r\n }\r\n if (input[\"data\"] == null && input[\"mashupDocument\"] == null) {\r\n return [{\r\n message: \"At least one of data or mashupDocument must be provided\"\r\n }];\r\n }\r\n };\r\n return DatasetCreateConfigValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DatasetCreateConfigValidator = DatasetCreateConfigValidator;\r\nvar DatasourceConnectionConfigValidator = /** @class */ (function (_super) {\r\n __extends(DatasourceConnectionConfigValidator, _super);\r\n function DatasourceConnectionConfigValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DatasourceConnectionConfigValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"dataCacheMode\",\r\n validators: [validator_1.Validators.dataCacheModeValidator]\r\n },\r\n {\r\n field: \"credentials\",\r\n validators: [validator_1.Validators.credentialsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DatasourceConnectionConfigValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DatasourceConnectionConfigValidator = DatasourceConnectionConfigValidator;\r\nvar CredentialsValidator = /** @class */ (function (_super) {\r\n __extends(CredentialsValidator, _super);\r\n function CredentialsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CredentialsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"credentialType\",\r\n validators: [validator_1.Validators.credentialTypeValidator]\r\n },\r\n {\r\n field: \"credentialDetails\",\r\n validators: [validator_1.Validators.credentialDetailsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CredentialsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CredentialsValidator = CredentialsValidator;\r\nvar ColumnSchemaValidator = /** @class */ (function (_super) {\r\n __extends(ColumnSchemaValidator, _super);\r\n function ColumnSchemaValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ColumnSchemaValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"displayName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"dataType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ColumnSchemaValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ColumnSchemaValidator = ColumnSchemaValidator;\r\nvar TableSchemaValidator = /** @class */ (function (_super) {\r\n __extends(TableSchemaValidator, _super);\r\n function TableSchemaValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TableSchemaValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"columns\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.columnSchemaArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TableSchemaValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.TableSchemaValidator = TableSchemaValidator;\r\nvar TableDataValidator = /** @class */ (function (_super) {\r\n __extends(TableDataValidator, _super);\r\n function TableDataValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TableDataValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"rows\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.rawDataValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TableDataValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.TableDataValidator = TableDataValidator;\r\n\n\n/***/ }),\n/* 32 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.QuickCreateValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar QuickCreateValidator = /** @class */ (function (_super) {\r\n __extends(QuickCreateValidator, _super);\r\n function QuickCreateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QuickCreateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"theme\",\r\n validators: [validator_1.Validators.customThemeValidator]\r\n },\r\n {\r\n field: \"datasetCreateConfig\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.datasetCreateConfigValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QuickCreateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QuickCreateValidator = QuickCreateValidator;\r\n\n\n/***/ }),\n/* 33 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PrintSettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar PrintSettingsValidator = /** @class */ (function (_super) {\r\n __extends(PrintSettingsValidator, _super);\r\n function PrintSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PrintSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"browserPrintAdjustmentsMode\",\r\n validators: [new typeValidator_1.EnumValidator([0, 1])]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PrintSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PrintSettingsValidator = PrintSettingsValidator;\r\n\n\n/***/ }),\n/* 34 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PaginatedReportDatasetBindingValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar PaginatedReportDatasetBindingValidator = /** @class */ (function (_super) {\r\n __extends(PaginatedReportDatasetBindingValidator, _super);\r\n function PaginatedReportDatasetBindingValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PaginatedReportDatasetBindingValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"sourceDatasetId\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"targetDatasetId\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PaginatedReportDatasetBindingValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PaginatedReportDatasetBindingValidator = PaginatedReportDatasetBindingValidator;\r\n\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(0);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n\n// SIG // Begin signature block\r\n// SIG // MIIreAYJKoZIhvcNAQcCoIIraTCCK2UCAQExDzANBglg\r\n// SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor\r\n// SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC\r\n// SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg\r\n// SIG // MwL/tGu4f/dhr3gVOxM8t9Nr0kVsURXdWFmzt2Tv2Syg\r\n// SIG // ghFuMIIIfjCCB2agAwIBAgITNgAAAd9zgZcWvjL9DQAC\r\n// SIG // AAAB3zANBgkqhkiG9w0BAQsFADBBMRMwEQYKCZImiZPy\r\n// SIG // LGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRUw\r\n// SIG // EwYDVQQDEwxBTUUgQ1MgQ0EgMDEwHhcNMjQwMTIwMDEz\r\n// SIG // MzQ0WhcNMjUwMTE5MDEzMzQ0WjAkMSIwIAYDVQQDExlN\r\n// SIG // aWNyb3NvZnQgQXp1cmUgQ29kZSBTaWduMIIBIjANBgkq\r\n// SIG // hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1bnAJpGyFqbK\r\n// SIG // WMrMsnUMskYdi/KuYoGBXMtrw5PMRr1TEQYccGzrCSBH\r\n// SIG // dMGPDe1lP8YJGDJ0rDOL5nNgePQxnawI0iam7MdM3/gy\r\n// SIG // xY6wSE1HnHUYZatFShl/FG1TpINGiHxTS0bOA0qwmWId\r\n// SIG // us8gfKpC/41Jgew4XARIYYDpV0UOCx51L+6n/ol6g7sB\r\n// SIG // c/bVEwIfCRrIC0QStKErEX1AfhSRdislMc5nhVySohMp\r\n// SIG // 7Fs+JKqDPdWoNWMNFPHdHvkYACotxbdXFwPt6ijOiNR9\r\n// SIG // dXvzXSI4e6E4b6wbXxJ4MJcG0xdymTh3YSwRWdfFOL/F\r\n// SIG // Xk5W+K/eN+OgmNvkip0GuwIDAQABo4IFijCCBYYwKQYJ\r\n// SIG // KwYBBAGCNxUKBBwwGjAMBgorBgEEAYI3WwEBMAoGCCsG\r\n// SIG // AQUFBwMDMD0GCSsGAQQBgjcVBwQwMC4GJisGAQQBgjcV\r\n// SIG // CIaQ4w2E1bR4hPGLPoWb3RbOnRKBYIPdzWaGlIwyAgFk\r\n// SIG // AgEOMIICdgYIKwYBBQUHAQEEggJoMIICZDBiBggrBgEF\r\n// SIG // BQcwAoZWaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3Br\r\n// SIG // aWluZnJhL0NlcnRzL0JZMlBLSUNTQ0EwMS5BTUUuR0JM\r\n// SIG // X0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQwUgYIKwYB\r\n// SIG // BQUHMAKGRmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JZ\r\n// SIG // MlBLSUNTQ0EwMS5BTUUuR0JMX0FNRSUyMENTJTIwQ0El\r\n// SIG // MjAwMSgyKS5jcnQwUgYIKwYBBQUHMAKGRmh0dHA6Ly9j\r\n// SIG // cmwyLmFtZS5nYmwvYWlhL0JZMlBLSUNTQ0EwMS5BTUUu\r\n// SIG // R0JMX0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQwUgYI\r\n// SIG // KwYBBQUHMAKGRmh0dHA6Ly9jcmwzLmFtZS5nYmwvYWlh\r\n// SIG // L0JZMlBLSUNTQ0EwMS5BTUUuR0JMX0FNRSUyMENTJTIw\r\n// SIG // Q0ElMjAwMSgyKS5jcnQwUgYIKwYBBQUHMAKGRmh0dHA6\r\n// SIG // Ly9jcmw0LmFtZS5nYmwvYWlhL0JZMlBLSUNTQ0EwMS5B\r\n// SIG // TUUuR0JMX0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQw\r\n// SIG // ga0GCCsGAQUFBzAChoGgbGRhcDovLy9DTj1BTUUlMjBD\r\n// SIG // UyUyMENBJTIwMDEsQ049QUlBLENOPVB1YmxpYyUyMEtl\r\n// SIG // eSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZp\r\n// SIG // Z3VyYXRpb24sREM9QU1FLERDPUdCTD9jQUNlcnRpZmlj\r\n// SIG // YXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\r\n// SIG // bkF1dGhvcml0eTAdBgNVHQ4EFgQUju4tKpnu7Y7YxY8r\r\n// SIG // iI5ZhjOnGwkwDgYDVR0PAQH/BAQDAgeAMEUGA1UdEQQ+\r\n// SIG // MDykOjA4MR4wHAYDVQQLExVNaWNyb3NvZnQgQ29ycG9y\r\n// SIG // YXRpb24xFjAUBgNVBAUTDTIzNjE2Nys1MDE5NzAwggHm\r\n// SIG // BgNVHR8EggHdMIIB2TCCAdWgggHRoIIBzYY/aHR0cDov\r\n// SIG // L2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9B\r\n// SIG // TUUlMjBDUyUyMENBJTIwMDEoMikuY3JshjFodHRwOi8v\r\n// SIG // Y3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBDUyUyMENBJTIw\r\n// SIG // MDEoMikuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2Ny\r\n// SIG // bC9BTUUlMjBDUyUyMENBJTIwMDEoMikuY3JshjFodHRw\r\n// SIG // Oi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBDUyUyMENB\r\n// SIG // JTIwMDEoMikuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2Js\r\n// SIG // L2NybC9BTUUlMjBDUyUyMENBJTIwMDEoMikuY3JshoG9\r\n// SIG // bGRhcDovLy9DTj1BTUUlMjBDUyUyMENBJTIwMDEoMiks\r\n// SIG // Q049QlkyUEtJQ1NDQTAxLENOPUNEUCxDTj1QdWJsaWMl\r\n// SIG // MjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1D\r\n// SIG // b25maWd1cmF0aW9uLERDPUFNRSxEQz1HQkw/Y2VydGlm\r\n// SIG // aWNhdGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENs\r\n// SIG // YXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MB8GA1UdIwQY\r\n// SIG // MBaAFJZRhOBrb3v+2Aarw/KF5imuavnUMB8GA1UdJQQY\r\n// SIG // MBYGCisGAQQBgjdbAQEGCCsGAQUFBwMDMA0GCSqGSIb3\r\n// SIG // DQEBCwUAA4IBAQCXv2FzUgqF4rS3/1+aXyWaXqd3LI3a\r\n// SIG // pgYIPvCq/vvFzI1sHZuLYi2rCTFDwoJqeTWJ98AuBnnx\r\n// SIG // mMHxe15thTEkdoukFB44oBrugY3VkIeBMBmjaly5F5VD\r\n// SIG // O1sNmdCq0baQi9egwjkzWbghTwMrUhxbJD1q6+qtxAbo\r\n// SIG // jOj+VS4BUiogMXLp5XSaK26wa72UmYm9TiDcxRgELM1E\r\n// SIG // dMraL1uhTqfrqFYYkAqpzoXgtaaZ2T7LO7516KIMjtMY\r\n// SIG // EluNG0ZZbRn8J5TndyGf+N2To+V3nkoYOdks1RIsmK2Y\r\n// SIG // w9ezEjc0DNSSiNO/prQAuw/nmf/oNqTP/daB3Kw6vTau\r\n// SIG // EK0tMIII6DCCBtCgAwIBAgITHwAAAFHqj/accwyoOwAA\r\n// SIG // AAAAUTANBgkqhkiG9w0BAQsFADA8MRMwEQYKCZImiZPy\r\n// SIG // LGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRAw\r\n// SIG // DgYDVQQDEwdhbWVyb290MB4XDTIxMDUyMTE4NDQxNFoX\r\n// SIG // DTI2MDUyMTE4NTQxNFowQTETMBEGCgmSJomT8ixkARkW\r\n// SIG // A0dCTDETMBEGCgmSJomT8ixkARkWA0FNRTEVMBMGA1UE\r\n// SIG // AxMMQU1FIENTIENBIDAxMIIBIjANBgkqhkiG9w0BAQEF\r\n// SIG // AAOCAQ8AMIIBCgKCAQEAyZpSCX0Bno1W1yqXMhT6BUlJ\r\n// SIG // ZWpa4p3xFeiTHO4vm2Q6C/azR5xwxnyYHrkSGDtS2P9X\r\n// SIG // +KDE64V20mmEQkubxnPNeOVnE2RvdPGxgwlq+BhS3ONd\r\n// SIG // VsQPj79q7XgHM9HhzB9+qk0PC9KN1zm9p/seyiRS6JF1\r\n// SIG // dbOqRf1pUl7FAVxmgiCFgV8hHIb/rDPXig7FDi3S0yEx\r\n// SIG // 2CUDVpIq8jEhG8anUFE1WYxM+ni0S5KHwwKPKV4qyGDo\r\n// SIG // DO+9AmDoma3Chyu5WDlW5cdtqXTWsGPE3umtnX6Amlld\r\n// SIG // UFLms4OVR4guKf+n5LIBCC6bTiocfXPomqYjYTKx7AGM\r\n// SIG // faVLaaXmhQIDAQABo4IE3DCCBNgwEgYJKwYBBAGCNxUB\r\n// SIG // BAUCAwIAAjAjBgkrBgEEAYI3FQIEFgQUEmgkQiFHy9Rr\r\n// SIG // vjHPIKTACyN/P0cwHQYDVR0OBBYEFJZRhOBrb3v+2Aar\r\n// SIG // w/KF5imuavnUMIIBBAYDVR0lBIH8MIH5BgcrBgEFAgMF\r\n// SIG // BggrBgEFBQcDAQYIKwYBBQUHAwIGCisGAQQBgjcUAgEG\r\n// SIG // CSsGAQQBgjcVBgYKKwYBBAGCNwoDDAYJKwYBBAGCNxUG\r\n// SIG // BggrBgEFBQcDCQYIKwYBBQUIAgIGCisGAQQBgjdAAQEG\r\n// SIG // CysGAQQBgjcKAwQBBgorBgEEAYI3CgMEBgkrBgEEAYI3\r\n// SIG // FQUGCisGAQQBgjcUAgIGCisGAQQBgjcUAgMGCCsGAQUF\r\n// SIG // BwMDBgorBgEEAYI3WwEBBgorBgEEAYI3WwIBBgorBgEE\r\n// SIG // AYI3WwMBBgorBgEEAYI3WwUBBgorBgEEAYI3WwQBBgor\r\n// SIG // BgEEAYI3WwQCMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIA\r\n// SIG // QwBBMAsGA1UdDwQEAwIBhjASBgNVHRMBAf8ECDAGAQH/\r\n// SIG // AgEAMB8GA1UdIwQYMBaAFCleUV5krjS566ycDaeMdQHR\r\n// SIG // CQsoMIIBaAYDVR0fBIIBXzCCAVswggFXoIIBU6CCAU+G\r\n// SIG // MWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2lpbmZy\r\n// SIG // YS9jcmwvYW1lcm9vdC5jcmyGI2h0dHA6Ly9jcmwyLmFt\r\n// SIG // ZS5nYmwvY3JsL2FtZXJvb3QuY3JshiNodHRwOi8vY3Js\r\n// SIG // My5hbWUuZ2JsL2NybC9hbWVyb290LmNybIYjaHR0cDov\r\n// SIG // L2NybDEuYW1lLmdibC9jcmwvYW1lcm9vdC5jcmyGgaps\r\n// SIG // ZGFwOi8vL0NOPWFtZXJvb3QsQ049QU1FUm9vdCxDTj1D\r\n// SIG // RFAsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049\r\n// SIG // U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1BTUUs\r\n// SIG // REM9R0JMP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/\r\n// SIG // YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Q\r\n// SIG // b2ludDCCAasGCCsGAQUFBwEBBIIBnTCCAZkwRwYIKwYB\r\n// SIG // BQUHMAKGO2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9w\r\n// SIG // a2lpbmZyYS9jZXJ0cy9BTUVSb290X2FtZXJvb3QuY3J0\r\n// SIG // MDcGCCsGAQUFBzAChitodHRwOi8vY3JsMi5hbWUuZ2Js\r\n// SIG // L2FpYS9BTUVSb290X2FtZXJvb3QuY3J0MDcGCCsGAQUF\r\n// SIG // BzAChitodHRwOi8vY3JsMy5hbWUuZ2JsL2FpYS9BTUVS\r\n// SIG // b290X2FtZXJvb3QuY3J0MDcGCCsGAQUFBzAChitodHRw\r\n// SIG // Oi8vY3JsMS5hbWUuZ2JsL2FpYS9BTUVSb290X2FtZXJv\r\n// SIG // b3QuY3J0MIGiBggrBgEFBQcwAoaBlWxkYXA6Ly8vQ049\r\n// SIG // YW1lcm9vdCxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIw\r\n// SIG // U2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJh\r\n// SIG // dGlvbixEQz1BTUUsREM9R0JMP2NBQ2VydGlmaWNhdGU/\r\n// SIG // YmFzZT9vYmplY3RDbGFzcz1jZXJ0aWZpY2F0aW9uQXV0\r\n// SIG // aG9yaXR5MA0GCSqGSIb3DQEBCwUAA4ICAQBQECO3Tw/o\r\n// SIG // 317Rrd7yadqcswPx1LvIYymkaTN6KcmuRt6HKa0Xe73U\r\n// SIG // x2/AQ30TfgA9GBJngweRykKBusRzyOU17iIubJvy3gA2\r\n// SIG // 1dwtqtB0DsoEv1U/ptVu2v++doTCJ/i+GbssVXkgaX8H\r\n// SIG // +6EOGEmT4evp4GbwR4HwWlc+Dvf8HH8PdUA2Z04CvcwI\r\n// SIG // fckSipbNm84jxJ8XjmTFTWscldL9edj2NsY6iGnyJFIy\r\n// SIG // ur2PS7VRYyV3p1VAJp91gj1jRQtWEyCB8P5g9nE3z8u0\r\n// SIG // ANaU/hjwEQCrdGyravWgnf2JtG+bT26YAokbc8m+32zU\r\n// SIG // tXRO+NK3tAjhOu2FdsG3qNrF4sc7y37R/C+7Pcb/cFfh\r\n// SIG // ttqsirepZii4xStcjMODYuXzGm3IJs0b0owHG6oKd7ZO\r\n// SIG // GvHpmmh9K8/DLriD/sq8bURD10qi/wuW8zM7IpLg1vcR\r\n// SIG // 9dIK2mc0pj44pc6UX0XbttP/VEJgu3lT2eI9VjWtaKjx\r\n// SIG // 38xE9woSMyekPRtzTwgfuysF9DkJisr+yA4po/FPxpbB\r\n// SIG // w9c/hBf32DH/GFxteS2pmjgKIbMP8sDukmEq3lVvuWNJ\r\n// SIG // sybrZwQvQpvaM49fv+JKpLK5YWYEfwksYRR9wU8Hh/ID\r\n// SIG // 9hRCEkbUoQ2W7mMpsp2Nbp/kcn4ivfolUy3Q9Yf0scsQ\r\n// SIG // 6WTLYpm+AoCUJTGCGWIwghleAgEBMFgwQTETMBEGCgmS\r\n// SIG // JomT8ixkARkWA0dCTDETMBEGCgmSJomT8ixkARkWA0FN\r\n// SIG // RTEVMBMGA1UEAxMMQU1FIENTIENBIDAxAhM2AAAB33OB\r\n// SIG // lxa+Mv0NAAIAAAHfMA0GCWCGSAFlAwQCAQUAoIGuMBkG\r\n// SIG // CSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB\r\n// SIG // gjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJ\r\n// SIG // BDEiBCC3oAvWj8W35XCGz6mfgvuaIDOaSXvP1W3rFrPd\r\n// SIG // AOh/bzBCBgorBgEEAYI3AgEMMTQwMqAUgBIATQBpAGMA\r\n// SIG // cgBvAHMAbwBmAHShGoAYaHR0cDovL3d3dy5taWNyb3Nv\r\n// SIG // ZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBAH+QbSXUtg4a\r\n// SIG // 1DpnczlSYMWv9IBjG6D/if62zIqGmL0+uLeJryRfcW1I\r\n// SIG // AP8F/i8LvWbtodi6cANj2DSmm3tZQ4ynfUkdQTza1zEM\r\n// SIG // tbZuCZk9w3X+ToN1tfLiWxqWnRQl+RPJ83+OrlP55pAq\r\n// SIG // Ryg1Mfm6lVs9q3FmhPRyWEaPyH8BDBIDss80A+1Hv5mt\r\n// SIG // d2fhe8rR+/+bNhdrR9AcAU1eTP4R9x/IZL0ZlxqwMP8h\r\n// SIG // e/juk00nO5gkakd6+SuHBqNOh4Sak9eBvai/3kU/Pslx\r\n// SIG // qnn/f1vDjXxx554VyA/0WkKXh1G/4yf1v5JTqNC/etNK\r\n// SIG // X8AOamhT9a08WNVMC4XQMZmhghcqMIIXJgYKKwYBBAGC\r\n// SIG // NwMDATGCFxYwghcSBgkqhkiG9w0BBwKgghcDMIIW/wIB\r\n// SIG // AzEPMA0GCWCGSAFlAwQCAQUAMIIBWQYLKoZIhvcNAQkQ\r\n// SIG // AQSgggFIBIIBRDCCAUACAQEGCisGAQQBhFkKAwEwMTAN\r\n// SIG // BglghkgBZQMEAgEFAAQgiRIZEQCbpfMTea7mD6b6LEjM\r\n// SIG // OeXK5udPpePql6WE5/MCBmXxz4wKeRgTMjAyNDAzMjEx\r\n// SIG // NTA2MzEuMzEyWjAEgAIB9KCB2KSB1TCB0jELMAkGA1UE\r\n// SIG // BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV\r\n// SIG // BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD\r\n// SIG // b3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IEly\r\n// SIG // ZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYDVQQL\r\n// SIG // Ex1UaGFsZXMgVFNTIEVTTjo4RDQxLTRCRjctQjNCNzEl\r\n// SIG // MCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy\r\n// SIG // dmljZaCCEXkwggcnMIIFD6ADAgECAhMzAAAB49+9m5oc\r\n// SIG // aIMiAAEAAAHjMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNV\r\n// SIG // BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD\r\n// SIG // VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg\r\n// SIG // Q29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBU\r\n// SIG // aW1lLVN0YW1wIFBDQSAyMDEwMB4XDTIzMTAxMjE5MDcy\r\n// SIG // OVoXDTI1MDExMDE5MDcyOVowgdIxCzAJBgNVBAYTAlVT\r\n// SIG // MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS\r\n// SIG // ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y\r\n// SIG // YXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5k\r\n// SIG // IE9wZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhh\r\n// SIG // bGVzIFRTUyBFU046OEQ0MS00QkY3LUIzQjcxJTAjBgNV\r\n// SIG // BAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2Uw\r\n// SIG // ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC+\r\n// SIG // pA1oHkafn8UgVA+jf8rhCaV4IMwXjRuSgfDPQGyFnhKJ\r\n// SIG // CYDoIZTIPCZqpDbAeFpdTRF0e3C+r5TwrFhizIcqprHE\r\n// SIG // Lt+v/Idm8ek1ODPHVWRHeleFPpfYKbXvlRfdZDiN+Xzq\r\n// SIG // ienkAzMEgUOXPRJTxVIo0wO81e2OT0WK0uBS/aePeE4n\r\n// SIG // QqQRB+TegDubvMDQP4yjveGZH44Lu7CxfElHa3NRkTRJ\r\n// SIG // NhfdS96cUft9hbLkE2YvIaraxaRDkcW8koIkAT93B+3z\r\n// SIG // 5XjdTcp4TEX+k+1wtS9D0cisvTGekwVq7th3lor5MSLn\r\n// SIG // tZy0G/zv59I9kFXeNmX9AK1wf1aueIEPCSL1B9HG78lj\r\n// SIG // PD6JoRYuqthe4XuN44a8cr59V4tacBzlbGx9umMQyk1s\r\n// SIG // ZdtIX0C3c8+EVU6PHBUTHUAsZSpEp6HD1qn1f+B+QD0j\r\n// SIG // 15NK/AnP3DJr2t4OBL7qReBK20jtFDZwkb+1A8ZUhosI\r\n// SIG // hpJp8ud5qrQGezS3j4RbcH8aegEyKI5fCV469/m50FlA\r\n// SIG // gwneTmqeeHxnhmFPCsTqIZs+tOAYE9eHt7EVgAaVvqF2\r\n// SIG // EgshUN0mUN/yzU1W8vRDbLhIdlCECllO5b+3Iawaxwg8\r\n// SIG // NIzPlsDo2FEu2MTAIWksjmoaW7nQC70VF6UIRCxaDurT\r\n// SIG // sf+uoc6oI0kzhGN6buOgRQIDAQABo4IBSTCCAUUwHQYD\r\n// SIG // VR0OBBYEFLGuDWa+NRW3oWfGPnqdptmImKkDMB8GA1Ud\r\n// SIG // IwQYMBaAFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMF8GA1Ud\r\n// SIG // HwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9zb2Z0\r\n// SIG // LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRpbWUt\r\n// SIG // U3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNybDBsBggrBgEF\r\n// SIG // BQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93d3cu\r\n// SIG // bWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9z\r\n// SIG // b2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSku\r\n// SIG // Y3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYI\r\n// SIG // KwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3\r\n// SIG // DQEBCwUAA4ICAQC3vpsuqdTTzBFtbe9GvGNoRsY+rIg0\r\n// SIG // rpRgLOFMZpH88TAInOI9Phkz2x8ZNfd5kNBUT2vXbW0W\r\n// SIG // 2ns1dBi5BLFFkxhdrT+lrA3Zef5Q+MFEO+gKxTnp3AqS\r\n// SIG // ubLxNLDtBcoayR2cTCwjnJb3erwCDzpGQGIoQR/0V3Mc\r\n// SIG // 24pYjgq//98O0RJ7C7jqf+75VyQLBs5iXrAT/9BEasYy\r\n// SIG // rnT1rgRs/6nUZSbTpeZ7/TWZMi4oOA+YcvadhHNc2qLY\r\n// SIG // i4h5yfZpbCRHFA4WI/D52JyY47Asb/sic2qNmlB4iEMz\r\n// SIG // GxavjNPHPLgRH/rN+2G2UO1wBccHthFSQFMKVo5rSd29\r\n// SIG // 80lkzJhVrpxa9mi5Or1XktLtTMhHxL/tGw5Pjd45rAsG\r\n// SIG // y5DPRWg4u6th7VJ98+pOwJxE3NvHQLy3/4qKlK1WE8Aa\r\n// SIG // 20R+F1RRL2iEPou3rA0InFltXQgwPyd8TqAhAlevOtdY\r\n// SIG // 64mo33VYPKNFqfhQoOQgFLbJYDhbomFC4HMZ6s5Jj9ou\r\n// SIG // fGRGtK5uC2cphwc7CDFNMjJrlZgJGMW3RA4uV6pWSLqT\r\n// SIG // 6apg+v3y4w+Lm9EhBLbTqYNJ6dK2vzDQn7/7VYSbc+cI\r\n// SIG // IhCCl/rOGpGsC32PtesQweuDZtB6BrPxsvNt7pSJuBsq\r\n// SIG // 1HKTWcZ17xOjmTIyP1dQIEgIPFP4XjFrmU1lVDCCB3Ew\r\n// SIG // ggVZoAMCAQICEzMAAAAVxedrngKbSZkAAAAAABUwDQYJ\r\n// SIG // KoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYD\r\n// SIG // VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k\r\n// SIG // MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x\r\n// SIG // MjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmlj\r\n// SIG // YXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4MjIy\r\n// SIG // NVoXDTMwMDkzMDE4MzIyNVowfDELMAkGA1UEBhMCVVMx\r\n// SIG // EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl\r\n// SIG // ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh\r\n// SIG // dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3Rh\r\n// SIG // bXAgUENBIDIwMTAwggIiMA0GCSqGSIb3DQEBAQUAA4IC\r\n// SIG // DwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9DtWC0/3u\r\n// SIG // nAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm95VT\r\n// SIG // cVrifkpa/rg2Z4VGIwy1jRPPdzLAEBjoYH1qUoNEt6aO\r\n// SIG // RmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP2CZTfDlh\r\n// SIG // AnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBbfowQHJ1S\r\n// SIG // /rboYiXcag/PXfT+jlPP1uyFVk3v3byNpOORj7I5LFGc\r\n// SIG // 6XBpDco2LXCOMcg1KL3jtIckw+DJj361VI/c+gVVmG1o\r\n// SIG // O5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKyzbni\r\n// SIG // jYjklqwBSru+cakXW2dg3viSkR4dPf0gz3N9QZpGdc3E\r\n// SIG // XzTdEonW/aUgfX782Z5F37ZyL9t9X4C626p+Nuw2TPYr\r\n// SIG // bqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZfD9M\r\n// SIG // 269ewvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1qGFph\r\n// SIG // AXPKZ6Je1yh2AuIzGHLXpyDwwvoSCtdjbwzJNmSLW6Cm\r\n// SIG // gyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLUHMVr\r\n// SIG // 9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXbGjfH\r\n// SIG // CBUYP3irRbb1Hode2o+eFnJpxq57t7c+auIurQIDAQAB\r\n// SIG // o4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEAATAjBgkr\r\n// SIG // BgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8vBO4w\r\n// SIG // HQYDVR0OBBYEFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMFwG\r\n// SIG // A1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEwPwYIKwYB\r\n// SIG // BQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w\r\n// SIG // a2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUE\r\n// SIG // DDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4KAFMA\r\n// SIG // dQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw\r\n// SIG // AwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX\r\n// SIG // zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3Js\r\n// SIG // Lm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9N\r\n// SIG // aWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYB\r\n// SIG // BQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3\r\n// SIG // Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0Nl\r\n// SIG // ckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsF\r\n// SIG // AAOCAgEAnVV9/Cqt4SwfZwExJFvhnnJL/Klv6lwUtj5O\r\n// SIG // R2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsPMeTCj/ts\r\n// SIG // 0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+iehp\r\n// SIG // 4LoJ7nvfam++Kctu2D9IdQHZGN5tggz1bSNU5HhTdSRX\r\n// SIG // ud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/GbYSEhFd\r\n// SIG // PSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefwC2qBwoEZ\r\n// SIG // QhlSdYo2wh3DYXMuLGt7bj8sCXgU6ZGyqVvfSaN0DLzs\r\n// SIG // kYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbOxnT99kxybxCr\r\n// SIG // dTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3BFARxv2T5\r\n// SIG // JL5zbcqOCb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+kKNxn\r\n// SIG // GSgkujhLmm77IVRrakURR6nxt67I6IleT53S0Ex2tVdU\r\n// SIG // CbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4O+S3\r\n// SIG // Fb+0zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAoGokLjzba\r\n// SIG // ukz5m/8K6TT4JDVnK+ANuOaMmdbhIurwJ0I9JZTmdHRb\r\n// SIG // atGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/ZcGNT\r\n// SIG // TY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggLVMIICPgIB\r\n// SIG // ATCCAQChgdikgdUwgdIxCzAJBgNVBAYTAlVTMRMwEQYD\r\n// SIG // VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k\r\n// SIG // MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x\r\n// SIG // LTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh\r\n// SIG // dGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVzIFRT\r\n// SIG // UyBFU046OEQ0MS00QkY3LUIzQjcxJTAjBgNVBAMTHE1p\r\n// SIG // Y3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WiIwoBATAH\r\n// SIG // BgUrDgMCGgMVAD2Il7vDkUOIbynLhOxitAjoMVp6oIGD\r\n// SIG // MIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh\r\n// SIG // c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV\r\n// SIG // BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE\r\n// SIG // AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAw\r\n// SIG // DQYJKoZIhvcNAQEFBQACBQDppi9YMCIYDzIwMjQwMzIx\r\n// SIG // MTIwMDI0WhgPMjAyNDAzMjIxMjAwMjRaMHUwOwYKKwYB\r\n// SIG // BAGEWQoEATEtMCswCgIFAOmmL1gCAQAwCAIBAAIDAIr8\r\n// SIG // MAcCAQACAlsQMAoCBQDpp4DYAgEAMDYGCisGAQQBhFkK\r\n// SIG // BAIxKDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSCh\r\n// SIG // CjAIAgEAAgMBhqAwDQYJKoZIhvcNAQEFBQADgYEAXxtC\r\n// SIG // QhsIs3i3cDZZ0AvijAZ7yDQhh2CWDwAvtI3D/b+TsXTS\r\n// SIG // gn5GiUcSBQnhgxmQPkW6B7Ad1D7f2x+pmWmlrgCZp7Jn\r\n// SIG // lvac0WwWSsdLaeVS1mCsVKobp8WZ3X/sto4bV8NQcSQQ\r\n// SIG // d67rqC2iRkbVM1PSFcT6VmHKRTfcOHatsHQxggQNMIIE\r\n// SIG // CQIBATCBkzB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMK\r\n// SIG // V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG\r\n// SIG // A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYD\r\n// SIG // VQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAx\r\n// SIG // MAITMwAAAePfvZuaHGiDIgABAAAB4zANBglghkgBZQME\r\n// SIG // AgEFAKCCAUowGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJ\r\n// SIG // EAEEMC8GCSqGSIb3DQEJBDEiBCAprdBPDwqal6VpAAOV\r\n// SIG // i+J92DiJe6lERu9UeZxt4Qn0QzCB+gYLKoZIhvcNAQkQ\r\n// SIG // Ai8xgeowgecwgeQwgb0EIDPUI6vlsP5k90SBCNa9wha4\r\n// SIG // MlxBt2Crw12PTHIy5iYqMIGYMIGApH4wfDELMAkGA1UE\r\n// SIG // BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV\r\n// SIG // BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD\r\n// SIG // b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp\r\n// SIG // bWUtU3RhbXAgUENBIDIwMTACEzMAAAHj372bmhxogyIA\r\n// SIG // AQAAAeMwIgQgfAfgbQHUyCCwG8I1CtfFUY+J5pYJIHw3\r\n// SIG // 3qm3nzXXMpEwDQYJKoZIhvcNAQELBQAEggIAOQSUw4z9\r\n// SIG // Dc/eTPbnSMOKo4RhCpQ8rBBnu5MUon6DOIpHS5E+xv/N\r\n// SIG // /AtZ9HY/VhlH6MmAJgImbvqh9+KopJwEpfOfSyQNALTM\r\n// SIG // mjgYmGErF53TeYSDPDfN7l3r4Fd3Lu237/L4niMEOKNs\r\n// SIG // LbBouy6UUKCQ78iKwiKCGMAXq9cVKba7FLiuVKNMXoBB\r\n// SIG // +imsivm6pU92eg/+/iEzHrTSgWh6nRSWK74mSd9rza8o\r\n// SIG // Idp/DKUQPOpB+m4dQEB43+ixdXBZ3+yCSZvreiGwR8vR\r\n// SIG // PfonLWxkcE425RRTLTut4yXaOs5fhDZfY5ho13mgYWAD\r\n// SIG // KbqIij2ZuvLCMugRFbL2ypMk0xHpA9DSWLuJE25EBe0y\r\n// SIG // +WPMtjDDC4Vlv9Iao58tZPkFUh0i5br2bu9J+4YPOaI0\r\n// SIG // mIi/auJA7imf1pm2y6FrDYTbp+0bAR3ePZsKgQm8hgYW\r\n// SIG // XnJ/I1Mx1NeGTuC0VSMU9/0eFNWzOwdzzGCMxG8pOO34\r\n// SIG // K9UuDaRgNpoo+RXp1vNa7NnJ3ifiaeHx8V2mEhqX5gig\r\n// SIG // QTHdGpkqPoKBdu9aLxprB+DPzHkAbb+F0Xd9ElnFU/0Z\r\n// SIG // VlyVQ8rawejf7dtVFNV+jRX4ET/2qSauKAmweOlncur7\r\n// SIG // XufbM4VHBBnZyDqQAkK+kwjsQ/2ALvgxlQDYZVfQTsCT\r\n// SIG // sI4ez1LRm+bvHRs=\r\n// SIG // End signature block\r\n","'use strict'\nmodule.exports = rfdc\n\nfunction copyBuffer (cur) {\n if (cur instanceof Buffer) {\n return Buffer.from(cur)\n }\n\n return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length)\n}\n\nfunction rfdc (opts) {\n opts = opts || {}\n if (opts.circles) return rfdcCircles(opts)\n\n const constructorHandlers = new Map()\n constructorHandlers.set(Date, (o) => new Date(o))\n constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)))\n constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)))\n if (opts.constructorHandlers) {\n for (const handler of opts.constructorHandlers) {\n constructorHandlers.set(handler[0], handler[1])\n }\n }\n\n let handler = null\n\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n const keys = Object.keys(a)\n const a2 = new Array(keys.length)\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i]\n const cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n a2[k] = handler(cur, fn)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n a2[k] = fn(cur)\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, clone)\n }\n const o2 = {}\n for (const k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n const cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, clone)\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = clone(cur)\n }\n }\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, cloneProto)\n }\n const o2 = {}\n for (const k in o) {\n const cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, cloneProto)\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n return o2\n }\n}\n\nfunction rfdcCircles (opts) {\n const refs = []\n const refsNew = []\n\n const constructorHandlers = new Map()\n constructorHandlers.set(Date, (o) => new Date(o))\n constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)))\n constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)))\n if (opts.constructorHandlers) {\n for (const handler of opts.constructorHandlers) {\n constructorHandlers.set(handler[0], handler[1])\n }\n }\n\n let handler = null\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n const keys = Object.keys(a)\n const a2 = new Array(keys.length)\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i]\n const cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n a2[k] = handler(cur, fn)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n const index = refs.indexOf(cur)\n if (index !== -1) {\n a2[k] = refsNew[index]\n } else {\n a2[k] = fn(cur)\n }\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, clone)\n }\n const o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (const k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n const cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, clone)\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n const i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = clone(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, cloneProto)\n }\n const o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (const k in o) {\n const cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, cloneProto)\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n const i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n}\n","import { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n getValue() {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n }\n next(value) {\n super.next(this._value = value);\n }\n}\n","import { Subscriber } from './Subscriber';\nexport class InnerSubscriber extends Subscriber {\n constructor(parent, outerValue, outerIndex) {\n super();\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n this.index = 0;\n }\n _next(value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n _error(error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","import { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nexport class Notification {\n constructor(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n observe(observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n do(next, error, complete) {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n accept(nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n }\n toObservable() {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n static createNext(value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n static createError(err) {\n return new Notification('E', undefined, err);\n }\n static createComplete() {\n return Notification.completeNotification;\n }\n}\nNotification.completeNotification = new Notification('C');\nNotification.undefinedValueNotification = new Notification('N', undefined);\n","import { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nexport class Observable {\n constructor(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n lift(operator) {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n subscribe(observerOrNext, error, complete) {\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n }\n _subscribe(subscriber) {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => value = x, (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n","import { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n const { closed, destination, isStopped } = observer;\n if (closed || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n","import { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport const empty = {\n closed: true,\n next(value) { },\n error(err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete() { }\n};\n","import { Subscriber } from './Subscriber';\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n }\n notifyError(error, innerSub) {\n this.destination.error(error);\n }\n notifyComplete(innerSub) {\n this.destination.complete();\n }\n}\n","import { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nexport class ReplaySubject extends Subject {\n constructor(bufferSize = Number.POSITIVE_INFINITY, windowTime = Number.POSITIVE_INFINITY, scheduler) {\n super();\n this.scheduler = scheduler;\n this._events = [];\n this._infiniteTimeWindow = false;\n this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n this._infiniteTimeWindow = true;\n this.next = this.nextInfiniteTimeWindow;\n }\n else {\n this.next = this.nextTimeWindow;\n }\n }\n nextInfiniteTimeWindow(value) {\n const _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n super.next(value);\n }\n nextTimeWindow(value) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n super.next(value);\n }\n _subscribe(subscriber) {\n const _infiniteTimeWindow = this._infiniteTimeWindow;\n const _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n const scheduler = this.scheduler;\n const len = _events.length;\n let subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n }\n _getNow() {\n return (this.scheduler || queue).now();\n }\n _trimBufferThenGetEvents() {\n const now = this._getNow();\n const _bufferSize = this._bufferSize;\n const _windowTime = this._windowTime;\n const _events = this._events;\n const eventsCount = _events.length;\n let spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n }\n}\nclass ReplayEvent {\n constructor(time, value) {\n this.time = time;\n this.value = value;\n }\n}\n","import { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nexport class SubjectSubscriber extends Subscriber {\n constructor(destination) {\n super(destination);\n this.destination = destination;\n }\n}\nexport class Subject extends Observable {\n constructor() {\n super();\n this.observers = [];\n this.closed = false;\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n next(value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n error(err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n _trySubscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return super._trySubscribe(subscriber);\n }\n }\n _subscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n error(err) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n _subscribe(subscriber) {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subscription } from './Subscription';\nexport class SubjectSubscription extends Subscription {\n constructor(subject, subscriber) {\n super();\n this.subject = subject;\n this.subscriber = subscriber;\n this.closed = false;\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const subject = this.subject;\n const observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n const subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport class Subscriber extends Subscription {\n constructor(destinationOrNext, error, complete) {\n super();\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n }\n else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n [rxSubscriberSymbol]() { return this; }\n static create(next, error, complete) {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n next(value) {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n error(err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.destination.complete();\n this.unsubscribe();\n }\n _unsubscribeAndRecycle() {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(_parentSubscriber, observerOrNext, error, complete) {\n super();\n this._parentSubscriber = _parentSubscriber;\n let next;\n let context = this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n next(value) {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n error(err) {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n complete() {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n }\n __tryOrUnsub(fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n }\n __tryOrSetError(parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n _unsubscribe() {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","const UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport const UnsubscriptionError = UnsubscriptionErrorImpl;\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nexport class Subscription {\n constructor(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n unsubscribe() {\n let errors;\n if (this.closed) {\n return;\n }\n let { _parentOrParents, _unsubscribe, _subscriptions } = this;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n add(teardown) {\n let subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n }\n remove(subscription) {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\nSubscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n}(new Subscription()));\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport const config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","import { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nexport class ConnectableObservable extends Observable {\n constructor(source, subjectFactory) {\n super();\n this.source = source;\n this.subjectFactory = subjectFactory;\n this._refCount = 0;\n this._isComplete = false;\n }\n _subscribe(subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n getSubject() {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n connect() {\n let connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n refCount() {\n return higherOrderRefCount()(this);\n }\n}\nexport const connectableObservableDescriptor = (() => {\n const connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\nclass ConnectableSubscriber extends SubjectSubscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _error(err) {\n this._unsubscribe();\n super._error(err);\n }\n _complete() {\n this.connectable._isComplete = true;\n this._unsubscribe();\n super._complete();\n }\n _unsubscribe() {\n const connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n const connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n }\n}\nclass RefCountOperator {\n constructor(connectable) {\n this.connectable = connectable;\n }\n call(subscriber, source) {\n const { connectable } = this;\n connectable._refCount++;\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n }\n}\nclass RefCountSubscriber extends Subscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _unsubscribe() {\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n const refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n const { connection } = this;\n const sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\nconst NONE = {};\nexport function combineLatest(...observables) {\n let resultSelector = null;\n let scheduler = null;\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nexport class CombineLatestOperator {\n constructor(resultSelector) {\n this.resultSelector = resultSelector;\n }\n call(subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n }\n}\nexport class CombineLatestSubscriber extends OuterSubscriber {\n constructor(destination, resultSelector) {\n super(destination);\n this.resultSelector = resultSelector;\n this.active = 0;\n this.values = [];\n this.observables = [];\n }\n _next(observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n }\n _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (let i = 0; i < len; i++) {\n const observable = observables[i];\n this.add(subscribeToResult(this, observable, observable, i));\n }\n }\n }\n notifyComplete(unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n }\n notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n const values = this.values;\n const oldVal = values[outerIndex];\n const toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n }\n _tryResultSelector(values) {\n let result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { of } from './of';\nimport { concatAll } from '../operators/concatAll';\nexport function concat(...observables) {\n return concatAll()(of(...observables));\n}\n","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nimport { from } from './from';\nimport { empty } from './empty';\nexport function defer(observableFactory) {\n return new Observable(subscriber => {\n let input;\n try {\n input = observableFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n const source = input ? from(input) : empty();\n return source.subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nexport const EMPTY = new Observable(subscriber => subscriber.complete());\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(subscriber => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { from } from './from';\nexport function forkJoin(...sources) {\n if (sources.length === 1) {\n const first = sources[0];\n if (isArray(first)) {\n return forkJoinInternal(first, null);\n }\n if (isObject(first) && Object.getPrototypeOf(first) === Object.prototype) {\n const keys = Object.keys(first);\n return forkJoinInternal(keys.map(key => first[key]), keys);\n }\n }\n if (typeof sources[sources.length - 1] === 'function') {\n const resultSelector = sources.pop();\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(map((args) => resultSelector(...args)));\n }\n return forkJoinInternal(sources, null);\n}\nfunction forkJoinInternal(sources, keys) {\n return new Observable(subscriber => {\n const len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n const values = new Array(len);\n let completed = 0;\n let emitted = 0;\n for (let i = 0; i < len; i++) {\n const source = from(sources[i]);\n let hasValue = false;\n subscriber.add(source.subscribe({\n next: value => {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: err => subscriber.error(err),\n complete: () => {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce((result, key, i) => (result[key] = values[i], result), {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n }\n });\n}\n","import { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n","import { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => {\n const observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },\n error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },\n complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => input.then(value => {\n sub.add(scheduler.schedule(() => {\n subscriber.next(value);\n sub.add(scheduler.schedule(() => subscriber.complete()));\n }));\n }, err => {\n sub.add(scheduler.schedule(() => subscriber.error(err)));\n })));\n return sub;\n });\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(subscriber => {\n const sub = new Subscription();\n let iterator;\n sub.add(() => {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(() => {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n let value;\n let done;\n try {\n const result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n }\n else {\n return scheduleArray(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nconst toString = (() => Object.prototype.toString)();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(args => isArray(args) ? resultSelector(...args) : resultSelector(args)));\n }\n return new Observable(subscriber => {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n let unsubscribe;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = () => source.removeListener(eventName, handler);\n }\n else if (sourceObj && sourceObj.length) {\n for (let i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nexport function interval(period = 0, scheduler = async) {\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n return new Observable(subscriber => {\n subscriber.add(scheduler.schedule(dispatch, period, { subscriber, counter: 0, period }));\n return subscriber;\n });\n}\nfunction dispatch(state) {\n const { subscriber, counter, period } = state;\n subscriber.next(counter);\n this.schedule({ subscriber, counter: counter + 1, period }, period);\n}\n","import { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge(...observables) {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler = null;\n let last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n","import { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of(...args) {\n let scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n","import { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(subscriber => subscriber.error(error));\n }\n else {\n return new Observable(subscriber => scheduler.schedule(dispatch, 0, { error, subscriber }));\n }\n}\nfunction dispatch({ error, subscriber }) {\n subscriber.error(error);\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime = 0, periodOrScheduler, scheduler) {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\nfunction dispatch(state) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n const operator = new CatchOperator(selector);\n const caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nclass CatchOperator {\n constructor(selector) {\n this.selector = selector;\n }\n call(subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n }\n}\nclass CatchSubscriber extends OuterSubscriber {\n constructor(destination, selector, caught) {\n super(destination);\n this.selector = selector;\n this.caught = caught;\n }\n error(err) {\n if (!this.isStopped) {\n let result;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n super.error(err2);\n return;\n }\n this._unsubscribeAndRecycle();\n const innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n this.add(innerSubscriber);\n const innerSubscription = subscribeToResult(this, result, undefined, undefined, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n }\n}\n","import { mergeMap } from './mergeMap';\nexport function concatMap(project, resultSelector) {\n return mergeMap(project, resultSelector, 1);\n}\n","import { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nexport function debounceTime(dueTime, scheduler = async) {\n return (source) => source.lift(new DebounceTimeOperator(dueTime, scheduler));\n}\nclass DebounceTimeOperator {\n constructor(dueTime, scheduler) {\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n }\n}\nclass DebounceTimeSubscriber extends Subscriber {\n constructor(destination, dueTime, scheduler) {\n super(destination);\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n this.debouncedSubscription = null;\n this.lastValue = null;\n this.hasValue = false;\n }\n _next(value) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n }\n _complete() {\n this.debouncedNext();\n this.destination.complete();\n }\n debouncedNext() {\n this.clearDebounce();\n if (this.hasValue) {\n const { lastValue } = this;\n this.lastValue = null;\n this.hasValue = false;\n this.destination.next(lastValue);\n }\n }\n clearDebounce() {\n const debouncedSubscription = this.debouncedSubscription;\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n }\n}\nfunction dispatchNext(subscriber) {\n subscriber.debouncedNext();\n}\n","import { Subscriber } from '../Subscriber';\nexport function defaultIfEmpty(defaultValue = null) {\n return (source) => source.lift(new DefaultIfEmptyOperator(defaultValue));\n}\nclass DefaultIfEmptyOperator {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n call(subscriber, source) {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n }\n}\nclass DefaultIfEmptySubscriber extends Subscriber {\n constructor(destination, defaultValue) {\n super(destination);\n this.defaultValue = defaultValue;\n this.isEmpty = true;\n }\n _next(value) {\n this.isEmpty = false;\n this.destination.next(value);\n }\n _complete() {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function distinctUntilChanged(compare, keySelector) {\n return (source) => source.lift(new DistinctUntilChangedOperator(compare, keySelector));\n}\nclass DistinctUntilChangedOperator {\n constructor(compare, keySelector) {\n this.compare = compare;\n this.keySelector = keySelector;\n }\n call(subscriber, source) {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n }\n}\nclass DistinctUntilChangedSubscriber extends Subscriber {\n constructor(destination, compare, keySelector) {\n super(destination);\n this.keySelector = keySelector;\n this.hasKey = false;\n if (typeof compare === 'function') {\n this.compare = compare;\n }\n }\n compare(x, y) {\n return x === y;\n }\n _next(value) {\n let key;\n try {\n const { keySelector } = this;\n key = keySelector ? keySelector(value) : value;\n }\n catch (err) {\n return this.destination.error(err);\n }\n let result = false;\n if (this.hasKey) {\n try {\n const { compare } = this;\n result = compare(this.key, key);\n }\n catch (err) {\n return this.destination.error(err);\n }\n }\n else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nclass FilterOperator {\n constructor(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\nclass FilterSubscriber extends Subscriber {\n constructor(destination, predicate, thisArg) {\n super(destination);\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.count = 0;\n }\n _next(value) {\n let result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nexport function finalize(callback) {\n return (source) => source.lift(new FinallyOperator(callback));\n}\nclass FinallyOperator {\n constructor(callback) {\n this.callback = callback;\n }\n call(subscriber, source) {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n }\n}\nclass FinallySubscriber extends Subscriber {\n constructor(destination, callback) {\n super(destination);\n this.add(new Subscription(callback));\n }\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n","import { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexport class MapOperator {\n constructor(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\nclass MapSubscriber extends Subscriber {\n constructor(destination, project, thisArg) {\n super(destination);\n this.project = project;\n this.count = 0;\n this.thisArg = thisArg || this;\n }\n _next(value) {\n let result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function mapTo(value) {\n return (source) => source.lift(new MapToOperator(value));\n}\nclass MapToOperator {\n constructor(value) {\n this.value = value;\n }\n call(subscriber, source) {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n }\n}\nclass MapToSubscriber extends Subscriber {\n constructor(destination, value) {\n super(destination);\n this.value = value;\n }\n _next(x) {\n this.destination.next(this.value);\n }\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Number.POSITIVE_INFINITY) {\n return mergeMap(identity, concurrent);\n}\n","import { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function mergeMap(project, resultSelector, concurrent = Number.POSITIVE_INFINITY) {\n if (typeof resultSelector === 'function') {\n return (source) => source.pipe(mergeMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii))), concurrent));\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return (source) => source.lift(new MergeMapOperator(project, concurrent));\n}\nexport class MergeMapOperator {\n constructor(project, concurrent = Number.POSITIVE_INFINITY) {\n this.project = project;\n this.concurrent = concurrent;\n }\n call(observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n }\n}\nexport class MergeMapSubscriber extends OuterSubscriber {\n constructor(destination, project, concurrent = Number.POSITIVE_INFINITY) {\n super(destination);\n this.project = project;\n this.concurrent = concurrent;\n this.hasCompleted = false;\n this.buffer = [];\n this.active = 0;\n this.index = 0;\n }\n _next(value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n }\n _tryNext(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n }\n _innerSub(ish, value, index) {\n const innerSubscriber = new InnerSubscriber(this, value, index);\n const destination = this.destination;\n destination.add(innerSubscriber);\n const innerSubscription = subscribeToResult(this, ish, undefined, undefined, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n _complete() {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n }\n notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n }\n notifyComplete(innerSub) {\n const buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n }\n}\n","import { connectableObservableDescriptor } from '../observable/ConnectableObservable';\nexport function multicast(subjectOrSubjectFactory, selector) {\n return function multicastOperatorFunction(source) {\n let subjectFactory;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = subjectOrSubjectFactory;\n }\n else {\n subjectFactory = function subjectFactory() {\n return subjectOrSubjectFactory;\n };\n }\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n const connectable = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n return connectable;\n };\n}\nexport class MulticastOperator {\n constructor(subjectFactory, selector) {\n this.subjectFactory = subjectFactory;\n this.selector = selector;\n }\n call(subscriber, source) {\n const { selector } = this;\n const subject = this.subjectFactory();\n const subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay = 0) {\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nexport class ObserveOnOperator {\n constructor(scheduler, delay = 0) {\n this.scheduler = scheduler;\n this.delay = delay;\n }\n call(subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\nexport class ObserveOnSubscriber extends Subscriber {\n constructor(destination, scheduler, delay = 0) {\n super(destination);\n this.scheduler = scheduler;\n this.delay = delay;\n }\n static dispatch(arg) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n scheduleMessage(notification) {\n const destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n }\n _next(value) {\n this.scheduleMessage(Notification.createNext(value));\n }\n _error(err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n }\n _complete() {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n }\n}\nexport class ObserveOnMessage {\n constructor(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function refCount() {\n return function refCountOperatorFunction(source) {\n return source.lift(new RefCountOperator(source));\n };\n}\nclass RefCountOperator {\n constructor(connectable) {\n this.connectable = connectable;\n }\n call(subscriber, source) {\n const { connectable } = this;\n connectable._refCount++;\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n }\n}\nclass RefCountSubscriber extends Subscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _unsubscribe() {\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n const refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n const { connection } = this;\n const sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function retry(count = -1) {\n return (source) => source.lift(new RetryOperator(count, source));\n}\nclass RetryOperator {\n constructor(count, source) {\n this.count = count;\n this.source = source;\n }\n call(subscriber, source) {\n return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));\n }\n}\nclass RetrySubscriber extends Subscriber {\n constructor(destination, count, source) {\n super(destination);\n this.count = count;\n this.source = source;\n }\n error(err) {\n if (!this.isStopped) {\n const { source, count } = this;\n if (count === 0) {\n return super.error(err);\n }\n else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function scan(accumulator, seed) {\n let hasSeed = false;\n if (arguments.length >= 2) {\n hasSeed = true;\n }\n return function scanOperatorFunction(source) {\n return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n };\n}\nclass ScanOperator {\n constructor(accumulator, seed, hasSeed = false) {\n this.accumulator = accumulator;\n this.seed = seed;\n this.hasSeed = hasSeed;\n }\n call(subscriber, source) {\n return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n }\n}\nclass ScanSubscriber extends Subscriber {\n constructor(destination, accumulator, _seed, hasSeed) {\n super(destination);\n this.accumulator = accumulator;\n this._seed = _seed;\n this.hasSeed = hasSeed;\n this.index = 0;\n }\n get seed() {\n return this._seed;\n }\n set seed(value) {\n this.hasSeed = true;\n this._seed = value;\n }\n _next(value) {\n if (!this.hasSeed) {\n this.seed = value;\n this.destination.next(value);\n }\n else {\n return this._tryNext(value);\n }\n }\n _tryNext(value) {\n const index = this.index++;\n let result;\n try {\n result = this.accumulator(this.seed, value, index);\n }\n catch (err) {\n this.destination.error(err);\n }\n this.seed = result;\n this.destination.next(result);\n }\n}\n","import { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\nfunction shareSubjectFactory() {\n return new Subject();\n}\nexport function share() {\n return (source) => refCount()(multicast(shareSubjectFactory)(source));\n}\n","import { ReplaySubject } from '../ReplaySubject';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n let config;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize;\n }\n else {\n config = {\n bufferSize: configOrBufferSize,\n windowTime,\n refCount: false,\n scheduler\n };\n }\n return (source) => source.lift(shareReplayOperator(config));\n}\nfunction shareReplayOperator({ bufferSize = Number.POSITIVE_INFINITY, windowTime = Number.POSITIVE_INFINITY, refCount: useRefCount, scheduler }) {\n let subject;\n let refCount = 0;\n let subscription;\n let hasError = false;\n let isComplete = false;\n return function shareReplayOperation(source) {\n refCount++;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n subscription = source.subscribe({\n next(value) { subject.next(value); },\n error(err) {\n hasError = true;\n subject.error(err);\n },\n complete() {\n isComplete = true;\n subscription = undefined;\n subject.complete();\n },\n });\n }\n const innerSub = subject.subscribe(this);\n this.add(() => {\n refCount--;\n innerSub.unsubscribe();\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n","import { Subscriber } from '../Subscriber';\nexport function skip(count) {\n return (source) => source.lift(new SkipOperator(count));\n}\nclass SkipOperator {\n constructor(total) {\n this.total = total;\n }\n call(subscriber, source) {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n }\n}\nclass SkipSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.count = 0;\n }\n _next(x) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function skipWhile(predicate) {\n return (source) => source.lift(new SkipWhileOperator(predicate));\n}\nclass SkipWhileOperator {\n constructor(predicate) {\n this.predicate = predicate;\n }\n call(subscriber, source) {\n return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));\n }\n}\nclass SkipWhileSubscriber extends Subscriber {\n constructor(destination, predicate) {\n super(destination);\n this.predicate = predicate;\n this.skipping = true;\n this.index = 0;\n }\n _next(value) {\n const destination = this.destination;\n if (this.skipping) {\n this.tryCallPredicate(value);\n }\n if (!this.skipping) {\n destination.next(value);\n }\n }\n tryCallPredicate(value) {\n try {\n const result = this.predicate(value, this.index++);\n this.skipping = Boolean(result);\n }\n catch (err) {\n this.destination.error(err);\n }\n }\n}\n","import { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nexport function startWith(...array) {\n const scheduler = array[array.length - 1];\n if (isScheduler(scheduler)) {\n array.pop();\n return (source) => concat(array, source, scheduler);\n }\n else {\n return (source) => concat(array, source);\n }\n}\n","import { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return (source) => source.pipe(switchMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii)))));\n }\n return (source) => source.lift(new SwitchMapOperator(project));\n}\nclass SwitchMapOperator {\n constructor(project) {\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n }\n}\nclass SwitchMapSubscriber extends OuterSubscriber {\n constructor(destination, project) {\n super(destination);\n this.project = project;\n this.index = 0;\n }\n _next(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result, value, index);\n }\n _innerSub(result, value, index) {\n const innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n const innerSubscriber = new InnerSubscriber(this, value, index);\n const destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = subscribeToResult(this, result, undefined, undefined, innerSubscriber);\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n }\n _complete() {\n const { innerSubscription } = this;\n if (!innerSubscription || innerSubscription.closed) {\n super._complete();\n }\n this.unsubscribe();\n }\n _unsubscribe() {\n this.innerSubscription = null;\n }\n notifyComplete(innerSub) {\n const destination = this.destination;\n destination.remove(innerSub);\n this.innerSubscription = null;\n if (this.isStopped) {\n super._complete();\n }\n }\n notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function take(count) {\n return (source) => {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nclass TakeOperator {\n constructor(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n call(subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n }\n}\nclass TakeSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.count = 0;\n }\n _next(value) {\n const total = this.total;\n const count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function takeLast(count) {\n return function takeLastOperatorFunction(source) {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeLastOperator(count));\n }\n };\n}\nclass TakeLastOperator {\n constructor(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n call(subscriber, source) {\n return source.subscribe(new TakeLastSubscriber(subscriber, this.total));\n }\n}\nclass TakeLastSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.ring = new Array();\n this.count = 0;\n }\n _next(value) {\n const ring = this.ring;\n const total = this.total;\n const count = this.count++;\n if (ring.length < total) {\n ring.push(value);\n }\n else {\n const index = count % total;\n ring[index] = value;\n }\n }\n _complete() {\n const destination = this.destination;\n let count = this.count;\n if (count > 0) {\n const total = this.count >= this.total ? this.total : this.count;\n const ring = this.ring;\n for (let i = 0; i < total; i++) {\n const idx = (count++) % total;\n destination.next(ring[idx]);\n }\n }\n destination.complete();\n }\n}\n","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function takeUntil(notifier) {\n return (source) => source.lift(new TakeUntilOperator(notifier));\n}\nclass TakeUntilOperator {\n constructor(notifier) {\n this.notifier = notifier;\n }\n call(subscriber, source) {\n const takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n const notifierSubscription = subscribeToResult(takeUntilSubscriber, this.notifier);\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n }\n}\nclass TakeUntilSubscriber extends OuterSubscriber {\n constructor(destination) {\n super(destination);\n this.seenValue = false;\n }\n notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.seenValue = true;\n this.complete();\n }\n notifyComplete() {\n }\n}\n","export function noop() { }\n","import { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nclass DoOperator {\n constructor(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n call(subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n }\n}\nclass TapSubscriber extends Subscriber {\n constructor(destination, observerOrNext, error, complete) {\n super(destination);\n this._tapNext = noop;\n this._tapError = noop;\n this._tapComplete = noop;\n this._tapError = error || noop;\n this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n this._context = this;\n this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n this._context = observerOrNext;\n this._tapNext = observerOrNext.next || noop;\n this._tapError = observerOrNext.error || noop;\n this._tapComplete = observerOrNext.complete || noop;\n }\n }\n _next(value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n }\n _error(err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n }\n _complete() {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n }\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { Subscriber } from '../Subscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return (source) => {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\nclass ThrowIfEmptyOperator {\n constructor(errorFactory) {\n this.errorFactory = errorFactory;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n }\n}\nclass ThrowIfEmptySubscriber extends Subscriber {\n constructor(destination, errorFactory) {\n super(destination);\n this.errorFactory = errorFactory;\n this.hasValue = false;\n }\n _next(value) {\n this.hasValue = true;\n this.destination.next(value);\n }\n _complete() {\n if (!this.hasValue) {\n let err;\n try {\n err = this.errorFactory();\n }\n catch (e) {\n err = e;\n }\n this.destination.error(err);\n }\n else {\n return this.destination.complete();\n }\n }\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n let i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n","import { Action } from './Action';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, delay) {\n let errored = false;\n let errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n _unsubscribe() {\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n }\n}\n","export class Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\nScheduler.now = () => Date.now();\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n });\n this.actions = [];\n this.active = false;\n this.scheduled = undefined;\n }\n schedule(work, delay = 0, state) {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return super.schedule(work, delay, state);\n }\n }\n flush(action) {\n const { actions } = this;\n if (this.active) {\n actions.push(action);\n return;\n }\n let error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const async = new AsyncScheduler(AsyncAction);\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport const queue = new QueueScheduler(QueueAction);\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { AsyncAction } from './AsyncAction';\nexport class QueueAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n schedule(state, delay = 0) {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n execute(state, delay) {\n return (delay > 0 || this.closed) ?\n super.execute(state, delay) :\n this._execute(state, delay);\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n return scheduler.flush(this);\n }\n}\n","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\nexport const $$iterator = iterator;\n","export const observable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n","export const rxSubscriber = (() => typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\nexport const $$rxSubscriber = rxSubscriber;\n","const ArgumentOutOfRangeErrorImpl = (() => {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport const ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n","const EmptyErrorImpl = (() => {\n function EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n EmptyErrorImpl.prototype = Object.create(Error.prototype);\n return EmptyErrorImpl;\n})();\nexport const EmptyError = EmptyErrorImpl;\n","const ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport const ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n","export function hostReportError(err) {\n setTimeout(() => { throw err; }, 0);\n}\n","export function identity(x) {\n return x;\n}\n","export const isArray = (() => Array.isArray || ((x) => x && typeof x.length === 'number'))();\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n","export function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n","export function isFunction(x) {\n return typeof x === 'function';\n}\n","import { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","export function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n","export function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n","export function isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\n","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n","import { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeTo = (result) => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n","import { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeToObservable = (obj) => (subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n};\n","import { hostReportError } from './hostReportError';\nexport const subscribeToPromise = (promise) => (subscriber) => {\n promise.then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, hostReportError);\n return subscriber;\n};\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nexport const subscribeToIterable = (iterable) => (subscriber) => {\n const iterator = iterable[Symbol_iterator]();\n do {\n const item = iterator.next();\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n};\n","export const subscribeToArray = (array) => (subscriber) => {\n for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n};\n","import { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber);\n}\n","var map = {\n\t\"./af\": 35528,\n\t\"./af.js\": 35528,\n\t\"./ar\": 1036,\n\t\"./ar-dz\": 17579,\n\t\"./ar-dz.js\": 17579,\n\t\"./ar-kw\": 69588,\n\t\"./ar-kw.js\": 69588,\n\t\"./ar-ly\": 11650,\n\t\"./ar-ly.js\": 11650,\n\t\"./ar-ma\": 93258,\n\t\"./ar-ma.js\": 93258,\n\t\"./ar-ps\": 25467,\n\t\"./ar-ps.js\": 25467,\n\t\"./ar-sa\": 54085,\n\t\"./ar-sa.js\": 54085,\n\t\"./ar-tn\": 90287,\n\t\"./ar-tn.js\": 90287,\n\t\"./ar.js\": 1036,\n\t\"./az\": 89757,\n\t\"./az.js\": 89757,\n\t\"./be\": 59620,\n\t\"./be.js\": 59620,\n\t\"./bg\": 31139,\n\t\"./bg.js\": 31139,\n\t\"./bm\": 4042,\n\t\"./bm.js\": 4042,\n\t\"./bn\": 19641,\n\t\"./bn-bd\": 19126,\n\t\"./bn-bd.js\": 19126,\n\t\"./bn.js\": 19641,\n\t\"./bo\": 494,\n\t\"./bo.js\": 494,\n\t\"./br\": 20934,\n\t\"./br.js\": 20934,\n\t\"./bs\": 26274,\n\t\"./bs.js\": 26274,\n\t\"./ca\": 45831,\n\t\"./ca.js\": 45831,\n\t\"./cs\": 92354,\n\t\"./cs.js\": 92354,\n\t\"./cv\": 79692,\n\t\"./cv.js\": 79692,\n\t\"./cy\": 58774,\n\t\"./cy.js\": 58774,\n\t\"./da\": 38955,\n\t\"./da.js\": 38955,\n\t\"./de\": 21557,\n\t\"./de-at\": 24954,\n\t\"./de-at.js\": 24954,\n\t\"./de-ch\": 81881,\n\t\"./de-ch.js\": 81881,\n\t\"./de.js\": 21557,\n\t\"./dv\": 16475,\n\t\"./dv.js\": 16475,\n\t\"./el\": 38877,\n\t\"./el.js\": 38877,\n\t\"./en-au\": 70454,\n\t\"./en-au.js\": 70454,\n\t\"./en-ca\": 67356,\n\t\"./en-ca.js\": 67356,\n\t\"./en-gb\": 10456,\n\t\"./en-gb.js\": 10456,\n\t\"./en-ie\": 28789,\n\t\"./en-ie.js\": 28789,\n\t\"./en-il\": 85471,\n\t\"./en-il.js\": 85471,\n\t\"./en-in\": 39664,\n\t\"./en-in.js\": 39664,\n\t\"./en-nz\": 97672,\n\t\"./en-nz.js\": 97672,\n\t\"./en-sg\": 80805,\n\t\"./en-sg.js\": 80805,\n\t\"./eo\": 87390,\n\t\"./eo.js\": 87390,\n\t\"./es\": 1564,\n\t\"./es-do\": 51473,\n\t\"./es-do.js\": 51473,\n\t\"./es-mx\": 92089,\n\t\"./es-mx.js\": 92089,\n\t\"./es-us\": 84156,\n\t\"./es-us.js\": 84156,\n\t\"./es.js\": 1564,\n\t\"./et\": 6513,\n\t\"./et.js\": 6513,\n\t\"./eu\": 7856,\n\t\"./eu.js\": 7856,\n\t\"./fa\": 2378,\n\t\"./fa.js\": 2378,\n\t\"./fi\": 22687,\n\t\"./fi.js\": 22687,\n\t\"./fil\": 80032,\n\t\"./fil.js\": 80032,\n\t\"./fo\": 46845,\n\t\"./fo.js\": 46845,\n\t\"./fr\": 8875,\n\t\"./fr-ca\": 56425,\n\t\"./fr-ca.js\": 56425,\n\t\"./fr-ch\": 41746,\n\t\"./fr-ch.js\": 41746,\n\t\"./fr.js\": 8875,\n\t\"./fy\": 67037,\n\t\"./fy.js\": 67037,\n\t\"./ga\": 11217,\n\t\"./ga.js\": 11217,\n\t\"./gd\": 37010,\n\t\"./gd.js\": 37010,\n\t\"./gl\": 51931,\n\t\"./gl.js\": 51931,\n\t\"./gom-deva\": 64488,\n\t\"./gom-deva.js\": 64488,\n\t\"./gom-latn\": 8032,\n\t\"./gom-latn.js\": 8032,\n\t\"./gu\": 34984,\n\t\"./gu.js\": 34984,\n\t\"./he\": 69090,\n\t\"./he.js\": 69090,\n\t\"./hi\": 42085,\n\t\"./hi.js\": 42085,\n\t\"./hr\": 38787,\n\t\"./hr.js\": 38787,\n\t\"./hu\": 2901,\n\t\"./hu.js\": 2901,\n\t\"./hy-am\": 59819,\n\t\"./hy-am.js\": 59819,\n\t\"./id\": 44074,\n\t\"./id.js\": 44074,\n\t\"./is\": 70715,\n\t\"./is.js\": 70715,\n\t\"./it\": 31746,\n\t\"./it-ch\": 77040,\n\t\"./it-ch.js\": 77040,\n\t\"./it.js\": 31746,\n\t\"./ja\": 3180,\n\t\"./ja.js\": 3180,\n\t\"./jv\": 34346,\n\t\"./jv.js\": 34346,\n\t\"./ka\": 65538,\n\t\"./ka.js\": 65538,\n\t\"./kk\": 79772,\n\t\"./kk.js\": 79772,\n\t\"./km\": 87905,\n\t\"./km.js\": 87905,\n\t\"./kn\": 79125,\n\t\"./kn.js\": 79125,\n\t\"./ko\": 69140,\n\t\"./ko.js\": 69140,\n\t\"./ku\": 2354,\n\t\"./ku-kmr\": 44662,\n\t\"./ku-kmr.js\": 44662,\n\t\"./ku.js\": 2354,\n\t\"./ky\": 63768,\n\t\"./ky.js\": 63768,\n\t\"./lb\": 14016,\n\t\"./lb.js\": 14016,\n\t\"./lo\": 83169,\n\t\"./lo.js\": 83169,\n\t\"./lt\": 62353,\n\t\"./lt.js\": 62353,\n\t\"./lv\": 83243,\n\t\"./lv.js\": 83243,\n\t\"./me\": 52338,\n\t\"./me.js\": 52338,\n\t\"./mi\": 35555,\n\t\"./mi.js\": 35555,\n\t\"./mk\": 85794,\n\t\"./mk.js\": 85794,\n\t\"./ml\": 53151,\n\t\"./ml.js\": 53151,\n\t\"./mn\": 46458,\n\t\"./mn.js\": 46458,\n\t\"./mr\": 69165,\n\t\"./mr.js\": 69165,\n\t\"./ms\": 8680,\n\t\"./ms-my\": 87477,\n\t\"./ms-my.js\": 87477,\n\t\"./ms.js\": 8680,\n\t\"./mt\": 79684,\n\t\"./mt.js\": 79684,\n\t\"./my\": 40285,\n\t\"./my.js\": 40285,\n\t\"./nb\": 45922,\n\t\"./nb.js\": 45922,\n\t\"./ne\": 29040,\n\t\"./ne.js\": 29040,\n\t\"./nl\": 5066,\n\t\"./nl-be\": 74460,\n\t\"./nl-be.js\": 74460,\n\t\"./nl.js\": 5066,\n\t\"./nn\": 53693,\n\t\"./nn.js\": 53693,\n\t\"./oc-lnc\": 88676,\n\t\"./oc-lnc.js\": 88676,\n\t\"./pa-in\": 92341,\n\t\"./pa-in.js\": 92341,\n\t\"./pl\": 57416,\n\t\"./pl.js\": 57416,\n\t\"./pt\": 84344,\n\t\"./pt-br\": 30113,\n\t\"./pt-br.js\": 30113,\n\t\"./pt.js\": 84344,\n\t\"./ro\": 72643,\n\t\"./ro.js\": 72643,\n\t\"./ru\": 61305,\n\t\"./ru.js\": 61305,\n\t\"./sd\": 96095,\n\t\"./sd.js\": 96095,\n\t\"./se\": 74486,\n\t\"./se.js\": 74486,\n\t\"./si\": 58742,\n\t\"./si.js\": 58742,\n\t\"./sk\": 96722,\n\t\"./sk.js\": 96722,\n\t\"./sl\": 3345,\n\t\"./sl.js\": 3345,\n\t\"./sq\": 52416,\n\t\"./sq.js\": 52416,\n\t\"./sr\": 39450,\n\t\"./sr-cyrl\": 50501,\n\t\"./sr-cyrl.js\": 50501,\n\t\"./sr.js\": 39450,\n\t\"./ss\": 32222,\n\t\"./ss.js\": 32222,\n\t\"./sv\": 9454,\n\t\"./sv.js\": 9454,\n\t\"./sw\": 19638,\n\t\"./sw.js\": 19638,\n\t\"./ta\": 96494,\n\t\"./ta.js\": 96494,\n\t\"./te\": 94435,\n\t\"./te.js\": 94435,\n\t\"./tet\": 25003,\n\t\"./tet.js\": 25003,\n\t\"./tg\": 13706,\n\t\"./tg.js\": 13706,\n\t\"./th\": 16025,\n\t\"./th.js\": 16025,\n\t\"./tk\": 59780,\n\t\"./tk.js\": 59780,\n\t\"./tl-ph\": 22068,\n\t\"./tl-ph.js\": 22068,\n\t\"./tlh\": 39167,\n\t\"./tlh.js\": 39167,\n\t\"./tr\": 32494,\n\t\"./tr.js\": 32494,\n\t\"./tzl\": 58707,\n\t\"./tzl.js\": 58707,\n\t\"./tzm\": 91296,\n\t\"./tzm-latn\": 34532,\n\t\"./tzm-latn.js\": 34532,\n\t\"./tzm.js\": 91296,\n\t\"./ug-cn\": 12086,\n\t\"./ug-cn.js\": 12086,\n\t\"./uk\": 85069,\n\t\"./uk.js\": 85069,\n\t\"./ur\": 29304,\n\t\"./ur.js\": 29304,\n\t\"./uz\": 95115,\n\t\"./uz-latn\": 97609,\n\t\"./uz-latn.js\": 97609,\n\t\"./uz.js\": 95115,\n\t\"./vi\": 34802,\n\t\"./vi.js\": 34802,\n\t\"./x-pseudo\": 65605,\n\t\"./x-pseudo.js\": 65605,\n\t\"./yo\": 88456,\n\t\"./yo.js\": 88456,\n\t\"./zh-cn\": 23272,\n\t\"./zh-cn.js\": 23272,\n\t\"./zh-hk\": 9402,\n\t\"./zh-hk.js\": 9402,\n\t\"./zh-mo\": 48101,\n\t\"./zh-mo.js\": 48101,\n\t\"./zh-tw\": 40262,\n\t\"./zh-tw.js\": 40262\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","var OverloadYield = require(\"./OverloadYield.js\");\nfunction AsyncGenerator(gen) {\n var front, back;\n function resume(key, arg) {\n try {\n var result = gen[key](arg),\n value = result.value,\n overloaded = value instanceof OverloadYield;\n Promise.resolve(overloaded ? value.v : value).then(function (arg) {\n if (overloaded) {\n var nextKey = \"return\" === key ? \"return\" : \"next\";\n if (!value.k || arg.done) return resume(nextKey, arg);\n arg = gen[nextKey](arg).value;\n }\n settle(result.done ? \"return\" : \"normal\", arg);\n }, function (err) {\n resume(\"throw\", err);\n });\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: !0\n });\n break;\n case \"throw\":\n front.reject(value);\n break;\n default:\n front.resolve({\n value: value,\n done: !1\n });\n }\n (front = front.next) ? resume(front.key, front.arg) : back = null;\n }\n this._invoke = function (key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n back ? back = back.next = request : (front = back = request, resume(key, arg));\n });\n }, \"function\" != typeof gen[\"return\"] && (this[\"return\"] = void 0);\n}\nAsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n}, AsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n}, AsyncGenerator.prototype[\"throw\"] = function (arg) {\n return this._invoke(\"throw\", arg);\n}, AsyncGenerator.prototype[\"return\"] = function (arg) {\n return this._invoke(\"return\", arg);\n};\nmodule.exports = AsyncGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _OverloadYield(value, kind) {\n this.v = value, this.k = kind;\n}\nmodule.exports = _OverloadYield, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _asyncIterator(iterable) {\n var method,\n async,\n sync,\n retry = 2;\n for (\"undefined\" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) {\n if (async && null != (method = iterable[async])) return method.call(iterable);\n if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable));\n async = \"@@asyncIterator\", sync = \"@@iterator\";\n }\n throw new TypeError(\"Object is not async iterable\");\n}\nfunction AsyncFromSyncIterator(s) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n var done = r.done;\n return Promise.resolve(r.value).then(function (value) {\n return {\n value: value,\n done: done\n };\n });\n }\n return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) {\n this.s = s, this.n = s.next;\n }, AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function next() {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n \"return\": function _return(value) {\n var ret = this.s[\"return\"];\n return void 0 === ret ? Promise.resolve({\n value: value,\n done: !0\n }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));\n },\n \"throw\": function _throw(value) {\n var thr = this.s[\"return\"];\n return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));\n }\n }, new AsyncFromSyncIterator(s);\n}\nmodule.exports = _asyncIterator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var OverloadYield = require(\"./OverloadYield.js\");\nfunction _awaitAsyncGenerator(value) {\n return new OverloadYield(value, 0);\n}\nmodule.exports = _awaitAsyncGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var AsyncGenerator = require(\"./AsyncGenerator.js\");\nfunction _wrapAsyncGenerator(fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n}\nmodule.exports = _wrapAsyncGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code> method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n}\n/**\n * A factory object returned from the\n * <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {\n}\n\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * <!-- somewhere inside of my-component-tpl.html -->\n * <div [@myAnimationTrigger]=\"myStatusExp\">...</div>\n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n * <div [@.disabled]=\"isDisabled\">\n * <div [@childAnimation]=\"exp\"></div>\n * </div>\n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* AnimationMetadataType.Trigger */, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: 4 /* AnimationMetadataType.Animate */, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: 3 /* AnimationMetadataType.Group */, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: 2 /* AnimationMetadataType.Sequence */, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: 6 /* AnimationMetadataType.Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: 0 /* AnimationMetadataType.State */, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: 5 /* AnimationMetadataType.Keyframes */, steps };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```typescript\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```typescript\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```typescript\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```typescript\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```typescript\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n * <div class=\"alert is-helpful\">\n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n * </div>\n *\n * ### Animating to a Final State\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no `style` data, that step is automatically considered the final animation arc,\n * for the element to reach the final state, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```HTML\n * <div [@myAnimationTrigger]=\"myStatusExp\">\n * ...\n * </div>\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```HTML\n * <div [@myAnimationTrigger]=\"{\n * value: stepName,\n * params: { target: currentTarget }\n * }\">\n * ...\n * </div>\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: 1 /* AnimationMetadataType.Transition */, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: 8 /* AnimationMetadataType.Reference */, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: 9 /* AnimationMetadataType.AnimateChild */, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: 10 /* AnimationMetadataType.AnimateRef */, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-elements))\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n *\n * ### Multiple Tokens\n *\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n * <div class=\"alert is-helpful\">\n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n * </div>\n *\n * <div class=\"alert is-important\">\n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\n * </div>\n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n * <div [@queryAnimation]=\"exp\">\n * <h1>Title</h1>\n * <div class=\"content\">\n * Blah blah blah\n * </div>\n * </div>\n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: 11 /* AnimationMetadataType.Query */, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * <!-- list.component.html -->\n * <button (click)=\"toggle()\">Show / Hide Items</button>\n * <hr />\n * <div [@listAnimation]=\"items.length\">\n * <div *ngFor=\"let item of items\">\n * {{ item }}\n * </div>\n * </div>\n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* AnimationMetadataType.Stagger */, timings, animation };\n}\n\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see {@link animate}\n * @see {@link AnimationPlayer}\n * @see {@link ɵAnimationGroupPlayer AnimationGroupPlayer}\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n queueMicrotask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n this._finished = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see {@link AnimationPlayer}\n * @see {@link animations/group group}\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n queueMicrotask(() => this._onFinish());\n }\n else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nconst ɵPRE_STYLE = '!';\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };\n","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, APP_ID, Injectable, Inject, QueryList, Directive, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot } from '@angular/cdk/platform';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, PAGE_DOWN, PAGE_UP, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\n/** IDs are delimited by an empty space, as per the spec. */\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction addAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n if (ids.some(existingId => existingId.trim() == id.trim())) {\n return;\n }\n ids.push(id.trim());\n el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction removeAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n const filteredIds = ids.filter(val => val != id.trim());\n if (filteredIds.length) {\n el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n }\n else {\n el.removeAttribute(attr);\n }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction getAriaReferenceIds(el, attr) {\n // Get string array of all individual ids (whitespace delimited) in the attribute value\n return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n\n/**\n * ID used for the body container where all messages are appended.\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/**\n * ID prefix used for each created message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/**\n * Attribute given to each host element that is described by a message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\nclass AriaDescriber {\n constructor(_document, \n /**\n * @deprecated To be turned into a required parameter.\n * @breaking-change 14.0.0\n */\n _platform) {\n this._platform = _platform;\n /** Map of all registered message elements that have been placed into the document. */\n this._messageRegistry = new Map();\n /** Container for all registered messages. */\n this._messagesContainer = null;\n /** Unique ID for the service. */\n this._id = `${nextId++}`;\n this._document = _document;\n this._id = inject(APP_ID) + '-' + nextId++;\n }\n describe(hostElement, message, role) {\n if (!this._canBeDescribed(hostElement, message)) {\n return;\n }\n const key = getKey(message, role);\n if (typeof message !== 'string') {\n // We need to ensure that the element has an ID.\n setMessageId(message, this._id);\n this._messageRegistry.set(key, { messageElement: message, referenceCount: 0 });\n }\n else if (!this._messageRegistry.has(key)) {\n this._createMessageElement(message, role);\n }\n if (!this._isElementDescribedByMessage(hostElement, key)) {\n this._addMessageReference(hostElement, key);\n }\n }\n removeDescription(hostElement, message, role) {\n if (!message || !this._isElementNode(hostElement)) {\n return;\n }\n const key = getKey(message, role);\n if (this._isElementDescribedByMessage(hostElement, key)) {\n this._removeMessageReference(hostElement, key);\n }\n // If the message is a string, it means that it's one that we created for the\n // consumer so we can remove it safely, otherwise we should leave it in place.\n if (typeof message === 'string') {\n const registeredMessage = this._messageRegistry.get(key);\n if (registeredMessage && registeredMessage.referenceCount === 0) {\n this._deleteMessageElement(key);\n }\n }\n if (this._messagesContainer?.childNodes.length === 0) {\n this._messagesContainer.remove();\n this._messagesContainer = null;\n }\n }\n /** Unregisters all created message elements and removes the message container. */\n ngOnDestroy() {\n const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}=\"${this._id}\"]`);\n for (let i = 0; i < describedElements.length; i++) {\n this._removeCdkDescribedByReferenceIds(describedElements[i]);\n describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n this._messagesContainer?.remove();\n this._messagesContainer = null;\n this._messageRegistry.clear();\n }\n /**\n * Creates a new element in the visually hidden message container element with the message\n * as its content and adds it to the message registry.\n */\n _createMessageElement(message, role) {\n const messageElement = this._document.createElement('div');\n setMessageId(messageElement, this._id);\n messageElement.textContent = message;\n if (role) {\n messageElement.setAttribute('role', role);\n }\n this._createMessagesContainer();\n this._messagesContainer.appendChild(messageElement);\n this._messageRegistry.set(getKey(message, role), { messageElement, referenceCount: 0 });\n }\n /** Deletes the message element from the global messages container. */\n _deleteMessageElement(key) {\n this._messageRegistry.get(key)?.messageElement?.remove();\n this._messageRegistry.delete(key);\n }\n /** Creates the global container for all aria-describedby messages. */\n _createMessagesContainer() {\n if (this._messagesContainer) {\n return;\n }\n const containerClassName = 'cdk-describedby-message-container';\n const serverContainers = this._document.querySelectorAll(`.${containerClassName}[platform=\"server\"]`);\n for (let i = 0; i < serverContainers.length; i++) {\n // When going from the server to the client, we may end up in a situation where there's\n // already a container on the page, but we don't have a reference to it. Clear the\n // old container so we don't get duplicates. Doing this, instead of emptying the previous\n // container, should be slightly faster.\n serverContainers[i].remove();\n }\n const messagesContainer = this._document.createElement('div');\n // We add `visibility: hidden` in order to prevent text in this container from\n // being searchable by the browser's Ctrl + F functionality.\n // Screen-readers will still read the description for elements with aria-describedby even\n // when the description element is not visible.\n messagesContainer.style.visibility = 'hidden';\n // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n // the description element doesn't impact page layout.\n messagesContainer.classList.add(containerClassName);\n messagesContainer.classList.add('cdk-visually-hidden');\n // @breaking-change 14.0.0 Remove null check for `_platform`.\n if (this._platform && !this._platform.isBrowser) {\n messagesContainer.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(messagesContainer);\n this._messagesContainer = messagesContainer;\n }\n /** Removes all cdk-describedby messages that are hosted through the element. */\n _removeCdkDescribedByReferenceIds(element) {\n // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n }\n /**\n * Adds a message reference to the element using aria-describedby and increments the registered\n * message's reference count.\n */\n _addMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n // Add the aria-describedby reference and set the\n // describedby_host attribute to mark the element.\n addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id);\n registeredMessage.referenceCount++;\n }\n /**\n * Removes a message reference from the element using aria-describedby\n * and decrements the registered message's reference count.\n */\n _removeMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n registeredMessage.referenceCount--;\n removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n /** Returns true if the element has been described by the provided message ID. */\n _isElementDescribedByMessage(element, key) {\n const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n const registeredMessage = this._messageRegistry.get(key);\n const messageId = registeredMessage && registeredMessage.messageElement.id;\n return !!messageId && referenceIds.indexOf(messageId) != -1;\n }\n /** Determines whether a message can be described on a particular element. */\n _canBeDescribed(element, message) {\n if (!this._isElementNode(element)) {\n return false;\n }\n if (message && typeof message === 'object') {\n // We'd have to make some assumptions about the description element's text, if the consumer\n // passed in an element. Assume that if an element is passed in, the consumer has verified\n // that it can be used as a description.\n return true;\n }\n const trimmedMessage = message == null ? '' : `${message}`.trim();\n const ariaLabel = element.getAttribute('aria-label');\n // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n // element, because screen readers will end up reading out the same text twice in a row.\n return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n }\n /** Checks whether a node is an Element node. */\n _isElementNode(element) {\n return element.nodeType === this._document.ELEMENT_NODE;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: AriaDescriber, deps: [{ token: DOCUMENT }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: AriaDescriber, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: AriaDescriber, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.Platform }]; } });\n/** Gets a key that can be used to look messages up in the registry. */\nfunction getKey(message, role) {\n return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\nfunction setMessageId(element, serviceId) {\n if (!element.id) {\n element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${serviceId}-${nextId++}`;\n }\n}\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n constructor(_items) {\n this._items = _items;\n this._activeItemIndex = -1;\n this._activeItem = null;\n this._wrap = false;\n this._letterKeyStream = new Subject();\n this._typeaheadSubscription = Subscription.EMPTY;\n this._vertical = true;\n this._allowedModifierKeys = [];\n this._homeAndEnd = false;\n this._pageUpAndDown = { enabled: false, delta: 10 };\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n this._skipPredicateFn = (item) => item.disabled;\n // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n this._pressedLetters = [];\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n this.tabOut = new Subject();\n /** Stream that emits whenever the active item of the list manager changes. */\n this.change = new Subject();\n // We allow for the items to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_items instanceof QueryList) {\n this._itemChangesSubscription = _items.changes.subscribe((newItems) => {\n if (this._activeItem) {\n const itemArray = newItems.toArray();\n const newIndex = itemArray.indexOf(this._activeItem);\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n }\n }\n });\n }\n }\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate) {\n this._skipPredicateFn = predicate;\n return this;\n }\n /**\n * Configures wrapping mode, which determines whether the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @param shouldWrap Whether the list should wrap when reaching the end.\n */\n withWrap(shouldWrap = true) {\n this._wrap = shouldWrap;\n return this;\n }\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled = true) {\n this._vertical = enabled;\n return this;\n }\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction) {\n this._horizontal = direction;\n return this;\n }\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys) {\n this._allowedModifierKeys = keys;\n return this;\n }\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval = 200) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n this._items.length &&\n this._items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n this._typeaheadSubscription.unsubscribe();\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n // and convert those letters back into a string. Afterwards find the first item that starts\n // with that string and select it.\n this._typeaheadSubscription = this._letterKeyStream\n .pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join('')))\n .subscribe(inputString => {\n const items = this._getItemsArray();\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (let i = 1; i < items.length + 1; i++) {\n const index = (this._activeItemIndex + i) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item) &&\n item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n this.setActiveItem(index);\n break;\n }\n }\n this._pressedLetters = [];\n });\n return this;\n }\n /** Cancels the current typeahead sequence. */\n cancelTypeahead() {\n this._pressedLetters = [];\n return this;\n }\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled = true) {\n this._homeAndEnd = enabled;\n return this;\n }\n /**\n * Configures the key manager to activate every 10th, configured or first/last element in up/down direction\n * respectively when the Page-Up or Page-Down key is pressed.\n * @param enabled Whether pressing the Page-Up or Page-Down key activates the first/last item.\n * @param delta Whether pressing the Home or End key activates the first/last item.\n */\n withPageUpDown(enabled = true, delta = 10) {\n this._pageUpAndDown = { enabled, delta };\n return this;\n }\n setActiveItem(item) {\n const previousActiveItem = this._activeItem;\n this.updateActiveItem(item);\n if (this._activeItem !== previousActiveItem) {\n this.change.next(this._activeItemIndex);\n }\n }\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event) {\n const keyCode = event.keyCode;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every(modifier => {\n return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n });\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n return;\n case DOWN_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case UP_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case RIGHT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case LEFT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case HOME:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n }\n else {\n return;\n }\n case END:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n }\n else {\n return;\n }\n case PAGE_UP:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex - this._pageUpAndDown.delta;\n this._setActiveItemByIndex(targetIndex > 0 ? targetIndex : 0, 1);\n break;\n }\n else {\n return;\n }\n case PAGE_DOWN:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex + this._pageUpAndDown.delta;\n const itemsLength = this._getItemsArray().length;\n this._setActiveItemByIndex(targetIndex < itemsLength ? targetIndex : itemsLength - 1, -1);\n break;\n }\n else {\n return;\n }\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this._letterKeyStream.next(event.key.toLocaleUpperCase());\n }\n else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this._letterKeyStream.next(String.fromCharCode(keyCode));\n }\n }\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n this._pressedLetters = [];\n event.preventDefault();\n }\n /** Index of the currently active item. */\n get activeItemIndex() {\n return this._activeItemIndex;\n }\n /** The active item. */\n get activeItem() {\n return this._activeItem;\n }\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping() {\n return this._pressedLetters.length > 0;\n }\n /** Sets the active item to the first enabled item in the list. */\n setFirstItemActive() {\n this._setActiveItemByIndex(0, 1);\n }\n /** Sets the active item to the last enabled item in the list. */\n setLastItemActive() {\n this._setActiveItemByIndex(this._items.length - 1, -1);\n }\n /** Sets the active item to the next enabled item in the list. */\n setNextItemActive() {\n this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n /** Sets the active item to a previous enabled item in the list. */\n setPreviousItemActive() {\n this._activeItemIndex < 0 && this._wrap\n ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n }\n updateActiveItem(item) {\n const itemArray = this._getItemsArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n const activeItem = itemArray[index];\n // Explicitly check for `null` and `undefined` because other falsy values are valid.\n this._activeItem = activeItem == null ? null : activeItem;\n this._activeItemIndex = index;\n }\n /** Cleans up the key manager. */\n destroy() {\n this._typeaheadSubscription.unsubscribe();\n this._itemChangesSubscription?.unsubscribe();\n this._letterKeyStream.complete();\n this.tabOut.complete();\n this.change.complete();\n this._pressedLetters = [];\n }\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n _setActiveItemByDelta(delta) {\n this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n }\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n _setActiveInWrapMode(delta) {\n const items = this._getItemsArray();\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item)) {\n this.setActiveItem(index);\n return;\n }\n }\n }\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n _setActiveInDefaultMode(delta) {\n this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n }\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n _setActiveItemByIndex(index, fallbackDelta) {\n const items = this._getItemsArray();\n if (!items[index]) {\n return;\n }\n while (this._skipPredicateFn(items[index])) {\n index += fallbackDelta;\n if (!items[index]) {\n return;\n }\n }\n this.setActiveItem(index);\n }\n /** Returns the items as an array. */\n _getItemsArray() {\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n}\n\nclass ActiveDescendantKeyManager extends ListKeyManager {\n setActiveItem(index) {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n super.setActiveItem(index);\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n }\n}\n\nclass FocusKeyManager extends ListKeyManager {\n constructor() {\n super(...arguments);\n this._origin = 'program';\n }\n /**\n * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n * @param origin Focus origin to be used when focusing items.\n */\n setFocusOrigin(origin) {\n this._origin = origin;\n return this;\n }\n setActiveItem(item) {\n super.setActiveItem(item);\n if (this.activeItem) {\n this.activeItem.focus(this._origin);\n }\n }\n}\n\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n constructor() {\n /**\n * Whether to count an element as focusable even if it is not currently visible.\n */\n this.ignoreVisibility = false;\n }\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether it is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n constructor(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return (isPotentiallyFocusable(element) &&\n !this.isDisabled(element) &&\n (config?.ignoreVisibility || this.isVisible(element)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InteractivityChecker, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InteractivityChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n }\n catch {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth ||\n element.offsetHeight ||\n (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return (nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea');\n}\n/** Gets whether an element is an `<input type=\"hidden\">`. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return (inputType === 'text' ||\n inputType === 'password' ||\n nodeName === 'select' ||\n nodeName === 'textarea');\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return (isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element));\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return (node.ownerDocument && node.ownerDocument.defaultView) || window;\n}\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrap {\n /** Whether the focus trap is active. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n this.startAnchorListener = () => this.focusLastTabbableElement();\n this.endAnchorListener = () => this.focusFirstTabbableElement();\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n startAnchor.remove();\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n endAnchor.remove();\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfully. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then focuses the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n `attribute will be removed in 8.0.0.`, markers[i]);\n }\n else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n `will be removed in 8.0.0.`, markers[i]);\n }\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length\n ? markers[markers.length - 1]\n : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement(options) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\n `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !this._checker.isFocusable(redirectToElement)) {\n console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n }\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild?.focus(options);\n return !!focusableChild;\n }\n redirectToElement.focus(options);\n return true;\n }\n return this.focusFirstTabbableElement(options);\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n const children = root.children;\n for (let i = 0; i < children.length; i++) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getFirstTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n const children = root.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getLastTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n if (this._ngZone.isStable) {\n fn();\n }\n else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap.enabled;\n }\n set enabled(value) {\n this.focusTrap.enabled = coerceBooleanProperty(value);\n }\n /**\n * Whether the directive should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n get autoCapture() {\n return this._autoCapture;\n }\n set autoCapture(value) {\n this._autoCapture = coerceBooleanProperty(value);\n }\n constructor(_elementRef, _focusTrapFactory, \n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 13.0.0\n */\n _document) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n this._previouslyFocusedElement = null;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n ngOnDestroy() {\n this.focusTrap.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (!this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange &&\n !autoCaptureChange.firstChange &&\n this.autoCapture &&\n this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n this.focusTrap.focusInitialElementWhenReady();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"cdkTrapFocus\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTrapFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { enabled: [{\n type: Input,\n args: ['cdkTrapFocus']\n }], autoCapture: [{\n type: Input,\n args: ['cdkTrapFocusAutoCapture']\n }] } });\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n /** Whether the FocusTrap is enabled. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._enabled) {\n this._focusTrapManager.register(this);\n }\n else {\n this._focusTrapManager.deregister(this);\n }\n }\n constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n super(_element, _checker, _ngZone, _document, config.defer);\n this._focusTrapManager = _focusTrapManager;\n this._inertStrategy = _inertStrategy;\n this._focusTrapManager.register(this);\n }\n /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n destroy() {\n this._focusTrapManager.deregister(this);\n super.destroy();\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _enable() {\n this._inertStrategy.preventFocus(this);\n this.toggleAnchors(true);\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _disable() {\n this._inertStrategy.allowFocus(this);\n this.toggleAnchors(false);\n }\n}\n\n/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\n\n/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n constructor() {\n /** Focus event handler. */\n this._listener = null;\n }\n /** Adds a document event listener that keeps focus inside the FocusTrap. */\n preventFocus(focusTrap) {\n // Ensure there's only one listener per document\n if (this._listener) {\n focusTrap._document.removeEventListener('focus', this._listener, true);\n }\n this._listener = (e) => this._trapFocus(focusTrap, e);\n focusTrap._ngZone.runOutsideAngular(() => {\n focusTrap._document.addEventListener('focus', this._listener, true);\n });\n }\n /** Removes the event listener added in preventFocus. */\n allowFocus(focusTrap) {\n if (!this._listener) {\n return;\n }\n focusTrap._document.removeEventListener('focus', this._listener, true);\n this._listener = null;\n }\n /**\n * Refocuses the first element in the FocusTrap if the focus event target was outside\n * the FocusTrap.\n *\n * This is an event listener callback. The event listener is added in runOutsideAngular,\n * so all this code runs outside Angular as well.\n */\n _trapFocus(focusTrap, event) {\n const target = event.target;\n const focusTrapRoot = focusTrap._element;\n // Don't refocus if target was in an overlay, because the overlay might be associated\n // with an element inside the FocusTrap, ex. mat-select.\n if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {\n // Some legacy FocusTrap usages have logic that focuses some element on the page\n // just before FocusTrap is destroyed. For backwards compatibility, wait\n // to be sure FocusTrap is still enabled before refocusing.\n setTimeout(() => {\n // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n focusTrap.focusFirstTabbableElement();\n }\n });\n }\n }\n}\n\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n constructor() {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n this._focusTrapStack = [];\n }\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusTrapManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._focusTrapManager = _focusTrapManager;\n this._document = _document;\n // TODO split up the strategies into different modules, similar to DateAdapter.\n this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n }\n create(element, config = { defer: false }) {\n let configObject;\n if (typeof config === 'boolean') {\n configObject = { defer: config };\n }\n else {\n configObject = config;\n }\n return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: FocusTrapManager }, { token: DOCUMENT }, { token: FOCUS_TRAP_INERT_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: FocusTrapManager }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_TRAP_INERT_STRATEGY]\n }] }]; } });\n\n/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n // a clickable element. We can distinguish these events when `event.buttons` is zero, or\n // `event.detail` is zero depending on the browser:\n // - `event.buttons` works on Firefox, but fails on Chrome.\n // - `detail` works on Chrome, but fails on Firefox.\n return event.buttons === 0 || event.detail === 0;\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);\n // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n return (!!touch &&\n touch.identifier === -1 &&\n (touch.radiusX == null || touch.radiusX === 1) &&\n (touch.radiusY == null || touch.radiusY === 1));\n}\n\n/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n * in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n * these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT],\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n /** The most recently detected input modality. */\n get mostRecentModality() {\n return this._modality.value;\n }\n constructor(_platform, ngZone, document, options) {\n this._platform = _platform;\n /**\n * The most recently detected input modality event target. Is null if no input modality has been\n * detected or if the associated event target is null for some unknown reason.\n */\n this._mostRecentTarget = null;\n /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n this._modality = new BehaviorSubject(null);\n /**\n * The timestamp of the last touch input modality. Used to determine whether mousedown events\n * should be attributed to mouse or touch.\n */\n this._lastTouchMs = 0;\n /**\n * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n * bound.\n */\n this._onKeydown = (event) => {\n // If this is one of the keys we should ignore, then ignore it and don't update the input\n // modality to keyboard.\n if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {\n return;\n }\n this._modality.next('keyboard');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onMousedown = (event) => {\n // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n // after the previous touch event.\n if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n return;\n }\n // Fake mousedown events are fired by some screen readers when controls are activated by the\n // screen reader. Attribute them to keyboard input modality.\n this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onTouchstart = (event) => {\n // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n // events are fired. Again, attribute to keyboard input modality.\n if (isFakeTouchstartFromScreenReader(event)) {\n this._modality.next('keyboard');\n return;\n }\n // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n // triggered via mouse vs touch.\n this._lastTouchMs = Date.now();\n this._modality.next('touch');\n this._mostRecentTarget = _getEventTarget(event);\n };\n this._options = {\n ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,\n ...options,\n };\n // Skip the first emission as it's null.\n this.modalityDetected = this._modality.pipe(skip(1));\n this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n // If we're not in a browser, this service should do nothing, as there's no relevant input\n // modality to detect.\n if (_platform.isBrowser) {\n ngZone.runOutsideAngular(() => {\n document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n });\n }\n }\n ngOnDestroy() {\n this._modality.complete();\n if (this._platform.isBrowser) {\n document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InputModalityDetector, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT }, { token: INPUT_MODALITY_DETECTOR_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InputModalityDetector, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: InputModalityDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [INPUT_MODALITY_DETECTOR_OPTIONS]\n }] }]; } });\n\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n providedIn: 'root',\n factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\n\nlet uniqueIds = 0;\nclass LiveAnnouncer {\n constructor(elementToken, _ngZone, _document, _defaultOptions) {\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n // We inject the live element and document as `any` because the constructor signature cannot\n // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n // a class decorator causes TypeScript to preserve the constructor signature types.\n this._document = _document;\n this._liveElement = elementToken || this._createLiveElement();\n }\n announce(message, ...args) {\n const defaultOptions = this._defaultOptions;\n let politeness;\n let duration;\n if (args.length === 1 && typeof args[0] === 'number') {\n duration = args[0];\n }\n else {\n [politeness, duration] = args;\n }\n this.clear();\n clearTimeout(this._previousTimeout);\n if (!politeness) {\n politeness =\n defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n }\n if (duration == null && defaultOptions) {\n duration = defaultOptions.duration;\n }\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n if (this._liveElement.id) {\n this._exposeAnnouncerToModals(this._liveElement.id);\n }\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n return this._ngZone.runOutsideAngular(() => {\n if (!this._currentPromise) {\n this._currentPromise = new Promise(resolve => (this._currentResolve = resolve));\n }\n clearTimeout(this._previousTimeout);\n this._previousTimeout = setTimeout(() => {\n this._liveElement.textContent = message;\n if (typeof duration === 'number') {\n this._previousTimeout = setTimeout(() => this.clear(), duration);\n }\n this._currentResolve();\n this._currentPromise = this._currentResolve = undefined;\n }, 100);\n return this._currentPromise;\n });\n }\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n clear() {\n if (this._liveElement) {\n this._liveElement.textContent = '';\n }\n }\n ngOnDestroy() {\n clearTimeout(this._previousTimeout);\n this._liveElement?.remove();\n this._liveElement = null;\n this._currentResolve?.();\n this._currentPromise = this._currentResolve = undefined;\n }\n _createLiveElement() {\n const elementClass = 'cdk-live-announcer-element';\n const previousElements = this._document.getElementsByClassName(elementClass);\n const liveEl = this._document.createElement('div');\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (let i = 0; i < previousElements.length; i++) {\n previousElements[i].remove();\n }\n liveEl.classList.add(elementClass);\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n liveEl.id = `cdk-live-announcer-${uniqueIds++}`;\n this._document.body.appendChild(liveEl);\n return liveEl;\n }\n /**\n * Some browsers won't expose the accessibility node of the live announcer element if there is an\n * `aria-modal` and the live announcer is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live announcer element.\n */\n _exposeAnnouncerToModals(id) {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `SnakBarContainer` and other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modals = this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n }\n else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LiveAnnouncer, deps: [{ token: LIVE_ANNOUNCER_ELEMENT_TOKEN, optional: true }, { token: i0.NgZone }, { token: DOCUMENT }, { token: LIVE_ANNOUNCER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LiveAnnouncer, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LiveAnnouncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n }] }]; } });\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n /** The aria-live politeness level to use when announcing messages. */\n get politeness() {\n return this._politeness;\n }\n set politeness(value) {\n this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n if (this._politeness === 'off') {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n else if (!this._subscription) {\n this._subscription = this._ngZone.runOutsideAngular(() => {\n return this._contentObserver.observe(this._elementRef).subscribe(() => {\n // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n const elementText = this._elementRef.nativeElement.textContent;\n // The `MutationObserver` fires also for attribute\n // changes which we don't want to announce.\n if (elementText !== this._previousAnnouncedText) {\n this._liveAnnouncer.announce(elementText, this._politeness, this.duration);\n this._previousAnnouncedText = elementText;\n }\n });\n });\n }\n }\n constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n this._elementRef = _elementRef;\n this._liveAnnouncer = _liveAnnouncer;\n this._contentObserver = _contentObserver;\n this._ngZone = _ngZone;\n this._politeness = 'polite';\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAriaLive, deps: [{ token: i0.ElementRef }, { token: LiveAnnouncer }, { token: i1$1.ContentObserver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkAriaLive, selector: \"[cdkAriaLive]\", inputs: { politeness: [\"cdkAriaLive\", \"politeness\"], duration: [\"cdkAriaLiveDuration\", \"duration\"] }, exportAs: [\"cdkAriaLive\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAriaLive, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAriaLive]',\n exportAs: 'cdkAriaLive',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: LiveAnnouncer }, { type: i1$1.ContentObserver }, { type: i0.NgZone }]; }, propDecorators: { politeness: [{\n type: Input,\n args: ['cdkAriaLive']\n }], duration: [{\n type: Input,\n args: ['cdkAriaLiveDuration']\n }] } });\n\n/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n constructor(_ngZone, _platform, _inputModalityDetector, \n /** @breaking-change 11.0.0 make document required */\n document, options) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._inputModalityDetector = _inputModalityDetector;\n /** The focus origin that the next focus event is a result of. */\n this._origin = null;\n /** Whether the window has just been focused. */\n this._windowFocused = false;\n /**\n * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n * focus events to touch interactions requires special logic.\n */\n this._originFromTouchInteraction = false;\n /** Map of elements being monitored to their info. */\n this._elementInfo = new Map();\n /** The number of elements currently being monitored. */\n this._monitoredElementCount = 0;\n /**\n * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n * as well as the number of monitored elements that they contain. We have to treat focus/blur\n * handlers differently from the rest of the events, because the browser won't emit events\n * to the document when focus moves inside of a shadow root.\n */\n this._rootNodeFocusListenerCount = new Map();\n /**\n * Event listener for `focus` events on the window.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._windowFocusListener = () => {\n // Make a note of when the window regains focus, so we can\n // restore the origin info for the focused element.\n this._windowFocused = true;\n this._windowFocusTimeoutId = window.setTimeout(() => (this._windowFocused = false));\n };\n /** Subject for stopping our InputModalityDetector subscription. */\n this._stopInputModalityDetector = new Subject();\n /**\n * Event listener for `focus` and 'blur' events on the document.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._rootNodeFocusAndBlurListener = (event) => {\n const target = _getEventTarget(event);\n // We need to walk up the ancestor chain in order to support `checkChildren`.\n for (let element = target; element; element = element.parentElement) {\n if (event.type === 'focus') {\n this._onFocus(event, element);\n }\n else {\n this._onBlur(event, element);\n }\n }\n };\n this._document = document;\n this._detectionMode = options?.detectionMode || 0 /* FocusMonitorDetectionMode.IMMEDIATE */;\n }\n monitor(element, checkChildren = false) {\n const nativeElement = coerceElement(element);\n // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n // Note: we don't want the observable to emit at all so we don't pass any parameters.\n return of();\n }\n // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n // the shadow root, rather than the `document`, because the browser won't emit focus events\n // to the `document`, if focus is moving within the same shadow root.\n const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n const cachedInfo = this._elementInfo.get(nativeElement);\n // Check if we're already monitoring this element.\n if (cachedInfo) {\n if (checkChildren) {\n // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n // observers into ones that behave as if `checkChildren` was turned on. We need a more\n // robust solution.\n cachedInfo.checkChildren = true;\n }\n return cachedInfo.subject;\n }\n // Create monitored element info.\n const info = {\n checkChildren: checkChildren,\n subject: new Subject(),\n rootNode,\n };\n this._elementInfo.set(nativeElement, info);\n this._registerGlobalListeners(info);\n return info.subject;\n }\n stopMonitoring(element) {\n const nativeElement = coerceElement(element);\n const elementInfo = this._elementInfo.get(nativeElement);\n if (elementInfo) {\n elementInfo.subject.complete();\n this._setClasses(nativeElement);\n this._elementInfo.delete(nativeElement);\n this._removeGlobalListeners(elementInfo);\n }\n }\n focusVia(element, origin, options) {\n const nativeElement = coerceElement(element);\n const focusedElement = this._getDocument().activeElement;\n // If the element is focused already, calling `focus` again won't trigger the event listener\n // which means that the focus classes won't be updated. If that's the case, update the classes\n // directly without waiting for an event.\n if (nativeElement === focusedElement) {\n this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n }\n else {\n this._setOrigin(origin);\n // `focus` isn't available on the server\n if (typeof nativeElement.focus === 'function') {\n nativeElement.focus(options);\n }\n }\n }\n ngOnDestroy() {\n this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n _getFocusOrigin(focusEventTarget) {\n if (this._origin) {\n // If the origin was realized via a touch interaction, we need to perform additional checks\n // to determine whether the focus origin should be attributed to touch or program.\n if (this._originFromTouchInteraction) {\n return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n }\n else {\n return this._origin;\n }\n }\n // If the window has just regained focus, we can restore the most recent origin from before the\n // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n // focus. This typically means one of two things happened:\n //\n // 1) The element was programmatically focused, or\n // 2) The element was focused via screen reader navigation (which generally doesn't fire\n // events).\n //\n // Because we can't distinguish between these two cases, we default to setting `program`.\n if (this._windowFocused && this._lastFocusOrigin) {\n return this._lastFocusOrigin;\n }\n // If the interaction is coming from an input label, we consider it a mouse interactions.\n // This is a special case where focus moves on `click`, rather than `mousedown` which breaks\n // our detection, because all our assumptions are for `mousedown`. We need to handle this\n // special case, because it's very common for checkboxes and radio buttons.\n if (focusEventTarget && this._isLastInteractionFromInputLabel(focusEventTarget)) {\n return 'mouse';\n }\n return 'program';\n }\n /**\n * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n * event was directly caused by the touch interaction or (2) the focus event was caused by a\n * subsequent programmatic focus call triggered by the touch interaction.\n * @param focusEventTarget The target of the focus event under examination.\n */\n _shouldBeAttributedToTouch(focusEventTarget) {\n // Please note that this check is not perfect. Consider the following edge case:\n //\n // <div #parent tabindex=\"0\">\n // <div #child tabindex=\"0\" (click)=\"#parent.focus()\"></div>\n // </div>\n //\n // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n // #child, #parent is programmatically focused. This code will attribute the focus to touch\n // instead of program. This is a relatively minor edge-case that can be worked around by using\n // focusVia(parent, 'program') to focus #parent.\n return (this._detectionMode === 1 /* FocusMonitorDetectionMode.EVENTUAL */ ||\n !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget));\n }\n /**\n * Sets the focus classes on the element based on the given focus origin.\n * @param element The element to update the classes on.\n * @param origin The focus origin.\n */\n _setClasses(element, origin) {\n element.classList.toggle('cdk-focused', !!origin);\n element.classList.toggle('cdk-touch-focused', origin === 'touch');\n element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n element.classList.toggle('cdk-program-focused', origin === 'program');\n }\n /**\n * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n * the origin being set.\n * @param origin The origin to set.\n * @param isFromInteraction Whether we are setting the origin from an interaction event.\n */\n _setOrigin(origin, isFromInteraction = false) {\n this._ngZone.runOutsideAngular(() => {\n this._origin = origin;\n this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;\n // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n // a touch event because when a touch event is fired, the associated focus event isn't yet in\n // the event queue. Before doing so, clear any pending timeouts.\n if (this._detectionMode === 0 /* FocusMonitorDetectionMode.IMMEDIATE */) {\n clearTimeout(this._originTimeoutId);\n const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n this._originTimeoutId = setTimeout(() => (this._origin = null), ms);\n }\n });\n }\n /**\n * Handles focus events on a registered element.\n * @param event The focus event.\n * @param element The monitored element.\n */\n _onFocus(event, element) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n const elementInfo = this._elementInfo.get(element);\n const focusEventTarget = _getEventTarget(event);\n if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {\n return;\n }\n this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n }\n /**\n * Handles blur events on a registered element.\n * @param event The blur event.\n * @param element The monitored element.\n */\n _onBlur(event, element) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n const elementInfo = this._elementInfo.get(element);\n if (!elementInfo ||\n (elementInfo.checkChildren &&\n event.relatedTarget instanceof Node &&\n element.contains(event.relatedTarget))) {\n return;\n }\n this._setClasses(element);\n this._emitOrigin(elementInfo, null);\n }\n _emitOrigin(info, origin) {\n if (info.subject.observers.length) {\n this._ngZone.run(() => info.subject.next(origin));\n }\n }\n _registerGlobalListeners(elementInfo) {\n if (!this._platform.isBrowser) {\n return;\n }\n const rootNode = elementInfo.rootNode;\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n if (!rootNodeFocusListeners) {\n this._ngZone.runOutsideAngular(() => {\n rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n });\n }\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n // Register global listeners when first element is monitored.\n if (++this._monitoredElementCount === 1) {\n // Note: we listen to events in the capture phase so we\n // can detect them even if the user stops propagation.\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n window.addEventListener('focus', this._windowFocusListener);\n });\n // The InputModalityDetector is also just a collection of global listeners.\n this._inputModalityDetector.modalityDetected\n .pipe(takeUntil(this._stopInputModalityDetector))\n .subscribe(modality => {\n this._setOrigin(modality, true /* isFromInteraction */);\n });\n }\n }\n _removeGlobalListeners(elementInfo) {\n const rootNode = elementInfo.rootNode;\n if (this._rootNodeFocusListenerCount.has(rootNode)) {\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n if (rootNodeFocusListeners > 1) {\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n }\n else {\n rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n this._rootNodeFocusListenerCount.delete(rootNode);\n }\n }\n // Unregister global listeners when last element is unmonitored.\n if (!--this._monitoredElementCount) {\n const window = this._getWindow();\n window.removeEventListener('focus', this._windowFocusListener);\n // Equivalently, stop our InputModalityDetector subscription.\n this._stopInputModalityDetector.next();\n // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n clearTimeout(this._windowFocusTimeoutId);\n clearTimeout(this._originTimeoutId);\n }\n }\n /** Updates all the state on an element once its focus origin has changed. */\n _originChanged(element, origin, elementInfo) {\n this._setClasses(element, origin);\n this._emitOrigin(elementInfo, origin);\n this._lastFocusOrigin = origin;\n }\n /**\n * Collects the `MonitoredElementInfo` of a particular element and\n * all of its ancestors that have enabled `checkChildren`.\n * @param element Element from which to start the search.\n */\n _getClosestElementsInfo(element) {\n const results = [];\n this._elementInfo.forEach((info, currentElement) => {\n if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {\n results.push([currentElement, info]);\n }\n });\n return results;\n }\n /**\n * Returns whether an interaction is likely to have come from the user clicking the `label` of\n * an `input` or `textarea` in order to focus it.\n * @param focusEventTarget Target currently receiving focus.\n */\n _isLastInteractionFromInputLabel(focusEventTarget) {\n const { _mostRecentTarget: mostRecentTarget, mostRecentModality } = this._inputModalityDetector;\n // If the last interaction used the mouse on an element contained by one of the labels\n // of an `input`/`textarea` that is currently focused, it is very likely that the\n // user redirected focus using the label.\n if (mostRecentModality !== 'mouse' ||\n !mostRecentTarget ||\n mostRecentTarget === focusEventTarget ||\n (focusEventTarget.nodeName !== 'INPUT' && focusEventTarget.nodeName !== 'TEXTAREA') ||\n focusEventTarget.disabled) {\n return false;\n }\n const labels = focusEventTarget.labels;\n if (labels) {\n for (let i = 0; i < labels.length; i++) {\n if (labels[i].contains(mostRecentTarget)) {\n return true;\n }\n }\n }\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusMonitor, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: InputModalityDetector }, { token: DOCUMENT, optional: true }, { token: FOCUS_MONITOR_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusMonitor, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FocusMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: InputModalityDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n }] }]; } });\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n constructor(_elementRef, _focusMonitor) {\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this._focusOrigin = null;\n this.cdkFocusChange = new EventEmitter();\n }\n get focusOrigin() {\n return this._focusOrigin;\n }\n ngAfterViewInit() {\n const element = this._elementRef.nativeElement;\n this._monitorSubscription = this._focusMonitor\n .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))\n .subscribe(origin => {\n this._focusOrigin = origin;\n this.cdkFocusChange.emit(origin);\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n if (this._monitorSubscription) {\n this._monitorSubscription.unsubscribe();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkMonitorFocus, deps: [{ token: i0.ElementRef }, { token: FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: { cdkFocusChange: \"cdkFocusChange\" }, exportAs: [\"cdkMonitorFocus\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkMonitorFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n exportAs: 'cdkMonitorFocus',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusMonitor }]; }, propDecorators: { cdkFocusChange: [{\n type: Output\n }] } });\n\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n constructor(_platform, document) {\n this._platform = _platform;\n this._document = document;\n this._breakpointSubscription = inject(BreakpointObserver)\n .observe('(forced-colors: active)')\n .subscribe(() => {\n if (this._hasCheckedHighContrastMode) {\n this._hasCheckedHighContrastMode = false;\n this._applyBodyHighContrastModeCssClasses();\n }\n });\n }\n /** Gets the current high-contrast-mode for the page. */\n getHighContrastMode() {\n if (!this._platform.isBrowser) {\n return 0 /* HighContrastMode.NONE */;\n }\n // Create a test element with an arbitrary background-color that is neither black nor\n // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n // appending the test element to the DOM does not affect layout by absolutely positioning it\n const testElement = this._document.createElement('div');\n testElement.style.backgroundColor = 'rgb(1,2,3)';\n testElement.style.position = 'absolute';\n this._document.body.appendChild(testElement);\n // Get the computed style for the background color, collapsing spaces to normalize between\n // browsers. Once we get this color, we no longer need the test element. Access the `window`\n // via the document so we can fake it in tests. Note that we have extra null checks, because\n // this logic will likely run during app bootstrap and throwing can break the entire app.\n const documentWindow = this._document.defaultView || window;\n const computedStyle = documentWindow && documentWindow.getComputedStyle\n ? documentWindow.getComputedStyle(testElement)\n : null;\n const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(/ /g, '');\n testElement.remove();\n switch (computedColor) {\n // Pre Windows 11 dark theme.\n case 'rgb(0,0,0)':\n // Windows 11 dark themes.\n case 'rgb(45,50,54)':\n case 'rgb(32,32,32)':\n return 2 /* HighContrastMode.WHITE_ON_BLACK */;\n // Pre Windows 11 light theme.\n case 'rgb(255,255,255)':\n // Windows 11 light theme.\n case 'rgb(255,250,239)':\n return 1 /* HighContrastMode.BLACK_ON_WHITE */;\n }\n return 0 /* HighContrastMode.NONE */;\n }\n ngOnDestroy() {\n this._breakpointSubscription.unsubscribe();\n }\n /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n _applyBodyHighContrastModeCssClasses() {\n if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n const bodyClasses = this._document.body.classList;\n bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n this._hasCheckedHighContrastMode = true;\n const mode = this.getHighContrastMode();\n if (mode === 1 /* HighContrastMode.BLACK_ON_WHITE */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS);\n }\n else if (mode === 2 /* HighContrastMode.WHITE_ON_BLACK */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: HighContrastModeDetector, deps: [{ token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: HighContrastModeDetector, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: HighContrastModeDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\nclass A11yModule {\n constructor(highContrastModeDetector) {\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: A11yModule, deps: [{ token: HighContrastModeDetector }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: A11yModule, declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], imports: [ObserversModule], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: A11yModule, imports: [ObserversModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: A11yModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ObserversModule],\n declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n }]\n }], ctorParameters: function () { return [{ type: HighContrastModeDetector }]; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, addAriaReferencedId, getAriaReferenceIds, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader, removeAriaReferencedId };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-browser because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n return inject(DOCUMENT);\n}\n\n/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */\nconst RTL_LOCALE_PATTERN = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;\n/** Resolves a string value to a specific direction. */\nfunction _resolveDirectionality(rawValue) {\n const value = rawValue?.toLowerCase() || '';\n if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {\n return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';\n }\n return value === 'rtl' ? 'rtl' : 'ltr';\n}\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n constructor(_document) {\n /** The current 'ltr' or 'rtl' value. */\n this.value = 'ltr';\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n this.change = new EventEmitter();\n if (_document) {\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n this.value = _resolveDirectionality(bodyDir || htmlDir || 'ltr');\n }\n }\n ngOnDestroy() {\n this.change.complete();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Directionality, deps: [{ token: DIR_DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Directionality, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Directionality, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIR_DOCUMENT]\n }] }]; } });\n\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n constructor() {\n /** Normalized direction that accounts for invalid/unsupported values. */\n this._dir = 'ltr';\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Event emitted when the direction changes. */\n this.change = new EventEmitter();\n }\n /** @docs-private */\n get dir() {\n return this._dir;\n }\n set dir(value) {\n const previousValue = this._dir;\n // Note: `_resolveDirectionality` resolves the language based on the browser's language,\n // whereas the browser does it based on the content of the element. Since doing so based\n // on the content can be expensive, for now we're doing the simpler matching.\n this._dir = _resolveDirectionality(value);\n this._rawDir = value;\n if (previousValue !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n /** Current layout direction of the element. */\n get value() {\n return this.dir;\n }\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n this.change.complete();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: Dir, selector: \"[dir]\", inputs: { dir: \"dir\" }, outputs: { change: \"dirChange\" }, host: { properties: { \"attr.dir\": \"_rawDir\" } }, providers: [{ provide: Directionality, useExisting: Dir }], exportAs: [\"dir\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Dir, decorators: [{\n type: Directive,\n args: [{\n selector: '[dir]',\n providers: [{ provide: Directionality, useExisting: Dir }],\n host: { '[attr.dir]': '_rawDir' },\n exportAs: 'dir',\n }]\n }], propDecorators: { change: [{\n type: Output,\n args: ['dirChange']\n }], dir: [{\n type: Input\n }] } });\n\nclass BidiModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BidiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: BidiModule, declarations: [Dir], exports: [Dir] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BidiModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BidiModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [Dir],\n declarations: [Dir],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality };\n","import { ElementRef } from '@angular/core';\n\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\n\nfunction coerceNumberProperty(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\n}\n\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\n}\n\n/**\n * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n}\n\n/**\n * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\n }\n return result;\n}\n\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n","const MAC_ENTER = 3;\nconst BACKSPACE = 8;\nconst TAB = 9;\nconst NUM_CENTER = 12;\nconst ENTER = 13;\nconst SHIFT = 16;\nconst CONTROL = 17;\nconst ALT = 18;\nconst PAUSE = 19;\nconst CAPS_LOCK = 20;\nconst ESCAPE = 27;\nconst SPACE = 32;\nconst PAGE_UP = 33;\nconst PAGE_DOWN = 34;\nconst END = 35;\nconst HOME = 36;\nconst LEFT_ARROW = 37;\nconst UP_ARROW = 38;\nconst RIGHT_ARROW = 39;\nconst DOWN_ARROW = 40;\nconst PLUS_SIGN = 43;\nconst PRINT_SCREEN = 44;\nconst INSERT = 45;\nconst DELETE = 46;\nconst ZERO = 48;\nconst ONE = 49;\nconst TWO = 50;\nconst THREE = 51;\nconst FOUR = 52;\nconst FIVE = 53;\nconst SIX = 54;\nconst SEVEN = 55;\nconst EIGHT = 56;\nconst NINE = 57;\nconst FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\nconst FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\nconst QUESTION_MARK = 63;\nconst AT_SIGN = 64;\nconst A = 65;\nconst B = 66;\nconst C = 67;\nconst D = 68;\nconst E = 69;\nconst F = 70;\nconst G = 71;\nconst H = 72;\nconst I = 73;\nconst J = 74;\nconst K = 75;\nconst L = 76;\nconst M = 77;\nconst N = 78;\nconst O = 79;\nconst P = 80;\nconst Q = 81;\nconst R = 82;\nconst S = 83;\nconst T = 84;\nconst U = 85;\nconst V = 86;\nconst W = 87;\nconst X = 88;\nconst Y = 89;\nconst Z = 90;\nconst META = 91; // WIN_KEY_LEFT\nconst MAC_WK_CMD_LEFT = 91;\nconst MAC_WK_CMD_RIGHT = 93;\nconst CONTEXT_MENU = 93;\nconst NUMPAD_ZERO = 96;\nconst NUMPAD_ONE = 97;\nconst NUMPAD_TWO = 98;\nconst NUMPAD_THREE = 99;\nconst NUMPAD_FOUR = 100;\nconst NUMPAD_FIVE = 101;\nconst NUMPAD_SIX = 102;\nconst NUMPAD_SEVEN = 103;\nconst NUMPAD_EIGHT = 104;\nconst NUMPAD_NINE = 105;\nconst NUMPAD_MULTIPLY = 106;\nconst NUMPAD_PLUS = 107;\nconst NUMPAD_MINUS = 109;\nconst NUMPAD_PERIOD = 110;\nconst NUMPAD_DIVIDE = 111;\nconst F1 = 112;\nconst F2 = 113;\nconst F3 = 114;\nconst F4 = 115;\nconst F5 = 116;\nconst F6 = 117;\nconst F7 = 118;\nconst F8 = 119;\nconst F9 = 120;\nconst F10 = 121;\nconst F11 = 122;\nconst F12 = 123;\nconst NUM_LOCK = 144;\nconst SCROLL_LOCK = 145;\nconst FIRST_MEDIA = 166;\nconst FF_MINUS = 173;\nconst MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\nconst VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\nconst VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\nconst FF_MUTE = 181;\nconst FF_VOLUME_DOWN = 182;\nconst LAST_MEDIA = 183;\nconst FF_VOLUME_UP = 183;\nconst SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\nconst EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\nconst COMMA = 188;\nconst DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\nconst PERIOD = 190;\nconst SLASH = 191;\nconst APOSTROPHE = 192;\nconst TILDE = 192;\nconst OPEN_SQUARE_BRACKET = 219;\nconst BACKSLASH = 220;\nconst CLOSE_SQUARE_BRACKET = 221;\nconst SINGLE_QUOTE = 222;\nconst MAC_META = 224;\n\n/**\n * Checks whether a modifier key is pressed.\n * @param event Event to be checked.\n */\nfunction hasModifierKey(event, ...modifiers) {\n if (modifiers.length) {\n return modifiers.some(modifier => event[modifier]);\n }\n return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A, ALT, APOSTROPHE, AT_SIGN, B, BACKSLASH, BACKSPACE, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, E, EIGHT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, G, H, HOME, I, INSERT, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, N, NINE, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, PRINT_SCREEN, Q, QUESTION_MARK, R, RIGHT_ARROW, S, SCROLL_LOCK, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, T, TAB, THREE, TILDE, TWO, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, hasModifierKey };\n","import * as i0 from '@angular/core';\nimport { NgModule, CSP_NONCE, Injectable, Optional, Inject } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { Subject, combineLatest, concat, Observable } from 'rxjs';\nimport { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\n\nclass LayoutModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: LayoutModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LayoutModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LayoutModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility = new Set();\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode;\n/** A utility for calling matchMedia queries. */\nclass MediaMatcher {\n constructor(_platform, _nonce) {\n this._platform = _platform;\n this._nonce = _nonce;\n this._matchMedia =\n this._platform.isBrowser && window.matchMedia\n ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window)\n : noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query) {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query, this._nonce);\n }\n return this._matchMedia(query);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MediaMatcher, deps: [{ token: i1.Platform }, { token: CSP_NONCE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MediaMatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MediaMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CSP_NONCE]\n }] }]; } });\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query, nonce) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n if (nonce) {\n mediaQueryStyleNode.nonce = nonce;\n }\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n }\n catch (e) {\n console.error(e);\n }\n}\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query) {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => { },\n removeListener: () => { },\n };\n}\n\n/** Utility for checking the matching state of @media queries. */\nclass BreakpointObserver {\n constructor(_mediaMatcher, _zone) {\n this._mediaMatcher = _mediaMatcher;\n this._zone = _zone;\n /** A map of all media queries currently being listened for. */\n this._queries = new Map();\n /** A subject for all other observables to takeUntil based on. */\n this._destroySubject = new Subject();\n }\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value) {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value) {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));\n return stateObservable.pipe(map(breakpointStates => {\n const response = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({ matches, query }) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }));\n }\n /** Registers a specific query to be listened for. */\n _registerQuery(query) {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const mql = this._mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e) => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(startWith(mql), map(({ matches }) => ({ query, matches })), takeUntil(this._destroySubject));\n // Add the MediaQueryList to the set of queries.\n const output = { observable: queryObservable, mql };\n this._queries.set(query, output);\n return output;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BreakpointObserver, deps: [{ token: MediaMatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BreakpointObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BreakpointObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MediaMatcher }, { type: i0.NgZone }]; } });\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries) {\n return queries\n .map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\n}\n\n// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nconst Breakpoints = {\n XSmall: '(max-width: 599.98px)',\n Small: '(min-width: 600px) and (max-width: 959.98px)',\n Medium: '(min-width: 960px) and (max-width: 1279.98px)',\n Large: '(min-width: 1280px) and (max-width: 1919.98px)',\n XLarge: '(min-width: 1920px)',\n Handset: '(max-width: 599.98px) and (orientation: portrait), ' +\n '(max-width: 959.98px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\n};\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BreakpointObserver, Breakpoints, LayoutModule, MediaMatcher };\n","import { Subscriber } from '../Subscriber';\nexport function takeWhile(predicate, inclusive = false) {\n return (source) => source.lift(new TakeWhileOperator(predicate, inclusive));\n}\nclass TakeWhileOperator {\n constructor(predicate, inclusive) {\n this.predicate = predicate;\n this.inclusive = inclusive;\n }\n call(subscriber, source) {\n return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n }\n}\nclass TakeWhileSubscriber extends Subscriber {\n constructor(destination, predicate, inclusive) {\n super(destination);\n this.predicate = predicate;\n this.inclusive = inclusive;\n this.index = 0;\n }\n _next(value) {\n const destination = this.destination;\n let result;\n try {\n result = this.predicate(value, this.index++);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n }\n nextOrComplete(value, predicateResult) {\n const destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n }\n else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n }\n}\n","import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, Optional, ElementRef, ApplicationRef, ANIMATION_MODULE_TYPE, InjectionToken, Directive, EventEmitter, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';\nimport { filter, take, takeUntil, takeWhile } from 'rxjs/operators';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\n\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n constructor(_viewportRuler, document) {\n this._viewportRuler = _viewportRuler;\n this._previousHTMLStyles = { top: '', left: '' };\n this._isEnabled = false;\n this._document = document;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach() { }\n /** Blocks page-level scroll while the attached overlay is open. */\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n // Cache the previous inline styles in case the user had set them.\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n // Note: we're using the `html` node, instead of the `body`, because the `body` may\n // have the user agent margin, whereas the `html` is guaranteed not to have one.\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n }\n }\n /** Unblocks page-level scroll while the attached overlay is open. */\n disable() {\n if (this._isEnabled) {\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n this._isEnabled = false;\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n // because it can throw off feature detections in `supportsScrollBehavior` which\n // checks for `'scrollBehavior' in documentElement.style`.\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n _canBeEnabled() {\n // Since the scroll strategies can't be singletons, we have to use a global CSS class\n // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n // scrolling multiple times.\n const html = this._document.documentElement;\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n const body = this._document.body;\n const viewport = this._viewportRuler.getViewportSize();\n return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n }\n}\n\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._config = _config;\n this._scrollSubscription = null;\n /** Detaches the overlay ref and disables the scroll strategy. */\n this._detach = () => {\n this.disable();\n if (this._overlayRef.hasAttached()) {\n this._ngZone.run(() => this._overlayRef.detach());\n }\n };\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables the closing of the attached overlay on scroll. */\n enable() {\n if (this._scrollSubscription) {\n return;\n }\n const stream = this._scrollDispatcher.scrolled(0).pipe(filter(scrollable => {\n return (!scrollable ||\n !this._overlayRef.overlayElement.contains(scrollable.getElementRef().nativeElement));\n }));\n if (this._config && this._config.threshold && this._config.threshold > 1) {\n this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n this._scrollSubscription = stream.subscribe(() => {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n this._detach();\n }\n else {\n this._overlayRef.updatePosition();\n }\n });\n }\n else {\n this._scrollSubscription = stream.subscribe(this._detach);\n }\n }\n /** Disables the closing the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n /** Does nothing, as this scroll strategy is a no-op. */\n enable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n disable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n attach() { }\n}\n\n/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n return scrollContainers.some(containerBounds => {\n const outsideAbove = element.bottom < containerBounds.top;\n const outsideBelow = element.top > containerBounds.bottom;\n const outsideLeft = element.right < containerBounds.left;\n const outsideRight = element.left > containerBounds.right;\n return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n return scrollContainers.some(scrollContainerRect => {\n const clippedAbove = element.top < scrollContainerRect.top;\n const clippedBelow = element.bottom > scrollContainerRect.bottom;\n const clippedLeft = element.left < scrollContainerRect.left;\n const clippedRight = element.right > scrollContainerRect.right;\n return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n });\n}\n\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n this._config = _config;\n this._scrollSubscription = null;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables repositioning of the attached overlay on scroll. */\n enable() {\n if (!this._scrollSubscription) {\n const throttle = this._config ? this._config.scrollThrottle : 0;\n this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n this._overlayRef.updatePosition();\n // TODO(crisbeto): make `close` on by default once all components can handle it.\n if (this._config && this._config.autoClose) {\n const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n const { width, height } = this._viewportRuler.getViewportSize();\n // TODO(crisbeto): include all ancestor scroll containers here once\n // we have a way of exposing the trigger element to the scroll strategy.\n const parentRects = [{ width, height, bottom: height, right: width, top: 0, left: 0 }];\n if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n this.disable();\n this._ngZone.run(() => this._overlayRef.detach());\n }\n }\n });\n }\n }\n /** Disables repositioning of the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n /** Do nothing on scroll. */\n this.noop = () => new NoopScrollStrategy();\n /**\n * Close the overlay as soon as the user scrolls.\n * @param config Configuration to be used inside the scroll strategy.\n */\n this.close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n /** Block scrolling. */\n this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n /**\n * Update the overlay's position on scroll.\n * @param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n */\n this.reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n this._document = document;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ScrollStrategyOptions, deps: [{ token: i1.ScrollDispatcher }, { token: i1.ViewportRuler }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ScrollStrategyOptions, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ScrollStrategyOptions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.ScrollDispatcher }, { type: i1.ViewportRuler }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n constructor(config) {\n /** Strategy to be used when handling scroll events while the overlay is open. */\n this.scrollStrategy = new NoopScrollStrategy();\n /** Custom class to add to the overlay pane. */\n this.panelClass = '';\n /** Whether the overlay has a backdrop. */\n this.hasBackdrop = false;\n /** Custom class to add to the backdrop */\n this.backdropClass = 'cdk-overlay-dark-backdrop';\n /**\n * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.disposeOnNavigation = false;\n if (config) {\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n const configKeys = Object.keys(config);\n for (const key of configKeys) {\n if (config[key] !== undefined) {\n // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n // as \"I don't know *which* key this is, so the only valid value is the intersection\n // of all the possible values.\" In this case, that happens to be `undefined`. TypeScript\n // is not smart enough to see that the right-hand-side is actually an access of the same\n // exact type with the same exact key, meaning that the value type must be identical.\n // So we use `any` to work around this.\n this[key] = config[key];\n }\n }\n }\n }\n}\n\n/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n constructor(origin, overlay, \n /** Offset along the X axis. */\n offsetX, \n /** Offset along the Y axis. */\n offsetY, \n /** Class(es) to be applied to the panel while this position is active. */\n panelClass) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.panelClass = panelClass;\n this.originX = origin.originX;\n this.originY = origin.originY;\n this.overlayX = overlay.overlayX;\n this.overlayY = overlay.overlayY;\n }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n * ----------- -----------\n * | outside | | clipped |\n * | view | --------------------------\n * | | | | | |\n * ---------- | ----------- |\n * -------------------------- | |\n * | | | Scrollable |\n * | | | |\n * | | --------------------------\n * | Scrollable |\n * | |\n * --------------------------\n *\n * @docs-private\n */\nclass ScrollingVisibility {\n}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n constructor(\n /** The position used as a result of this change. */\n connectionPair, \n /** @docs-private */\n scrollableViewProperties) {\n this.connectionPair = connectionPair;\n this.scrollableViewProperties = scrollableViewProperties;\n }\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"top\", \"bottom\" or \"center\".`);\n }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n if (value !== 'start' && value !== 'end' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"start\", \"end\" or \"center\".`);\n }\n}\n\n/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n constructor(document) {\n /** Currently attached overlays in the order they were attached. */\n this._attachedOverlays = [];\n this._document = document;\n }\n ngOnDestroy() {\n this.detach();\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n // Ensure that we don't get the same overlay multiple times.\n this.remove(overlayRef);\n this._attachedOverlays.push(overlayRef);\n }\n /** Remove an overlay from the list of attached overlay refs. */\n remove(overlayRef) {\n const index = this._attachedOverlays.indexOf(overlayRef);\n if (index > -1) {\n this._attachedOverlays.splice(index, 1);\n }\n // Remove the global listener once there are no more overlays.\n if (this._attachedOverlays.length === 0) {\n this.detach();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BaseOverlayDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BaseOverlayDispatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BaseOverlayDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n constructor(document, \n /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._ngZone = _ngZone;\n /** Keyboard event listener that will be attached to the body. */\n this._keydownListener = (event) => {\n const overlays = this._attachedOverlays;\n for (let i = overlays.length - 1; i > -1; i--) {\n // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n // We want to target the most recent overlay, rather than trying to match where the event came\n // from, because some components might open an overlay, but keep focus on a trigger element\n // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n // because we don't want overlays that don't handle keyboard events to block the ones below\n // them that do.\n if (overlays[i]._keydownEvents.observers.length > 0) {\n const keydownEvents = overlays[i]._keydownEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => keydownEvents.next(event));\n }\n else {\n keydownEvents.next(event);\n }\n break;\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Lazily start dispatcher once first overlay is added\n if (!this._isAttached) {\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._document.body.addEventListener('keydown', this._keydownListener));\n }\n else {\n this._document.body.addEventListener('keydown', this._keydownListener);\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n this._document.body.removeEventListener('keydown', this._keydownListener);\n this._isAttached = false;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayKeyboardDispatcher, deps: [{ token: DOCUMENT }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n constructor(document, _platform, \n /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._cursorStyleIsSet = false;\n /** Store pointerdown event target to track origin of click. */\n this._pointerDownListener = (event) => {\n this._pointerDownEventTarget = _getEventTarget(event);\n };\n /** Click event listener that will be attached to the body propagate phase. */\n this._clickListener = (event) => {\n const target = _getEventTarget(event);\n // In case of a click event, we want to check the origin of the click\n // (e.g. in case where a user starts a click inside the overlay and\n // releases the click outside of it).\n // This is done by using the event target of the preceding pointerdown event.\n // Every click event caused by a pointer device has a preceding pointerdown\n // event, unless the click was programmatically triggered (e.g. in a unit test).\n const origin = event.type === 'click' && this._pointerDownEventTarget\n ? this._pointerDownEventTarget\n : target;\n // Reset the stored pointerdown event target, to avoid having it interfere\n // in subsequent events.\n this._pointerDownEventTarget = null;\n // We copy the array because the original may be modified asynchronously if the\n // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n // the for loop.\n const overlays = this._attachedOverlays.slice();\n // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n // We want to target all overlays for which the click could be considered as outside click.\n // As soon as we reach an overlay for which the click is not outside click we break off\n // the loop.\n for (let i = overlays.length - 1; i > -1; i--) {\n const overlayRef = overlays[i];\n if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n continue;\n }\n // If it's a click inside the overlay, just break - we should do nothing\n // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n // and proceed with the next overlay\n if (overlayRef.overlayElement.contains(target) ||\n overlayRef.overlayElement.contains(origin)) {\n break;\n }\n const outsidePointerEvents = overlayRef._outsidePointerEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => outsidePointerEvents.next(event));\n }\n else {\n outsidePointerEvents.next(event);\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Safari on iOS does not generate click events for non-interactive\n // elements. However, we want to receive a click for any element outside\n // the overlay. We can force a \"clickable\" state by setting\n // `cursor: pointer` on the document body. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n if (!this._isAttached) {\n const body = this._document.body;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._addEventListeners(body));\n }\n else {\n this._addEventListeners(body);\n }\n // click event is not fired on iOS. To make element \"clickable\" we are\n // setting the cursor to pointer\n if (this._platform.IOS && !this._cursorStyleIsSet) {\n this._cursorOriginalValue = body.style.cursor;\n body.style.cursor = 'pointer';\n this._cursorStyleIsSet = true;\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n const body = this._document.body;\n body.removeEventListener('pointerdown', this._pointerDownListener, true);\n body.removeEventListener('click', this._clickListener, true);\n body.removeEventListener('auxclick', this._clickListener, true);\n body.removeEventListener('contextmenu', this._clickListener, true);\n if (this._platform.IOS && this._cursorStyleIsSet) {\n body.style.cursor = this._cursorOriginalValue;\n this._cursorStyleIsSet = false;\n }\n this._isAttached = false;\n }\n }\n _addEventListeners(body) {\n body.addEventListener('pointerdown', this._pointerDownListener, true);\n body.addEventListener('click', this._clickListener, true);\n body.addEventListener('auxclick', this._clickListener, true);\n body.addEventListener('contextmenu', this._clickListener, true);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }]; } });\n\n/** Container inside which all overlays will render. */\nclass OverlayContainer {\n constructor(document, _platform) {\n this._platform = _platform;\n this._document = document;\n }\n ngOnDestroy() {\n this._containerElement?.remove();\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const containerClass = 'cdk-overlay-container';\n // TODO(crisbeto): remove the testing check once we have an overlay testing\n // module or Angular starts tearing down the testing `NgModule`. See:\n // https://github.com/angular/angular/issues/18831\n if (this._platform.isBrowser || _isTestEnvironment()) {\n const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`);\n // Remove any old containers from the opposite platform.\n // This can happen when transitioning from the server to the client.\n for (let i = 0; i < oppositePlatformContainers.length; i++) {\n oppositePlatformContainers[i].remove();\n }\n }\n const container = this._document.createElement('div');\n container.classList.add(containerClass);\n // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n // To mitigate the problem we made it so that only containers from a different platform are\n // cleared, but the side-effect was that people started depending on the overly-aggressive\n // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n // module which does the cleanup, we try to detect that we're in a test environment and we\n // always clear the container. See #17006.\n // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n if (_isTestEnvironment()) {\n container.setAttribute('platform', 'test');\n }\n else if (!this._platform.isBrowser) {\n container.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayContainer, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }]; } });\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher, _animationsDisabled = false) {\n this._portalOutlet = _portalOutlet;\n this._host = _host;\n this._pane = _pane;\n this._config = _config;\n this._ngZone = _ngZone;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._document = _document;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._animationsDisabled = _animationsDisabled;\n this._backdropElement = null;\n this._backdropClick = new Subject();\n this._attachments = new Subject();\n this._detachments = new Subject();\n this._locationChanges = Subscription.EMPTY;\n this._backdropClickHandler = (event) => this._backdropClick.next(event);\n this._backdropTransitionendHandler = (event) => {\n this._disposeBackdrop(event.target);\n };\n /** Stream of keydown events dispatched to this overlay. */\n this._keydownEvents = new Subject();\n /** Stream of mouse outside events dispatched to this overlay. */\n this._outsidePointerEvents = new Subject();\n if (_config.scrollStrategy) {\n this._scrollStrategy = _config.scrollStrategy;\n this._scrollStrategy.attach(this);\n }\n this._positionStrategy = _config.positionStrategy;\n }\n /** The overlay's HTML element */\n get overlayElement() {\n return this._pane;\n }\n /** The overlay's backdrop HTML element. */\n get backdropElement() {\n return this._backdropElement;\n }\n /**\n * Wrapper around the panel element. Can be used for advanced\n * positioning where a wrapper with specific styling is\n * required around the overlay pane.\n */\n get hostElement() {\n return this._host;\n }\n /**\n * Attaches content, given via a Portal, to the overlay.\n * If the overlay is configured to have a backdrop, it will be created.\n *\n * @param portal Portal instance to which to attach the overlay.\n * @returns The portal attachment result.\n */\n attach(portal) {\n // Insert the host into the DOM before attaching the portal, otherwise\n // the animations module will skip animations on repeat attachments.\n if (!this._host.parentElement && this._previousHostParent) {\n this._previousHostParent.appendChild(this._host);\n }\n const attachResult = this._portalOutlet.attach(portal);\n if (this._positionStrategy) {\n this._positionStrategy.attach(this);\n }\n this._updateStackingOrder();\n this._updateElementSize();\n this._updateElementDirection();\n if (this._scrollStrategy) {\n this._scrollStrategy.enable();\n }\n // Update the position once the zone is stable so that the overlay will be fully rendered\n // before attempting to position it, as the position may depend on the size of the rendered\n // content.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n // The overlay could've been detached before the zone has stabilized.\n if (this.hasAttached()) {\n this.updatePosition();\n }\n });\n // Enable pointer events for the overlay pane element.\n this._togglePointerEvents(true);\n if (this._config.hasBackdrop) {\n this._attachBackdrop();\n }\n if (this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, true);\n }\n // Only emit the `attachments` event once all other setup is done.\n this._attachments.next();\n // Track this overlay by the keyboard dispatcher\n this._keyboardDispatcher.add(this);\n if (this._config.disposeOnNavigation) {\n this._locationChanges = this._location.subscribe(() => this.dispose());\n }\n this._outsideClickDispatcher.add(this);\n // TODO(crisbeto): the null check is here, because the portal outlet returns `any`.\n // We should be guaranteed for the result to be `ComponentRef | EmbeddedViewRef`, but\n // `instanceof EmbeddedViewRef` doesn't appear to work at the moment.\n if (typeof attachResult?.onDestroy === 'function') {\n // In most cases we control the portal and we know when it is being detached so that\n // we can finish the disposal process. The exception is if the user passes in a custom\n // `ViewContainerRef` that isn't destroyed through the overlay API. Note that we use\n // `detach` here instead of `dispose`, because we don't know if the user intends to\n // reattach the overlay at a later point. It also has the advantage of waiting for animations.\n attachResult.onDestroy(() => {\n if (this.hasAttached()) {\n // We have to delay the `detach` call, because detaching immediately prevents\n // other destroy hooks from running. This is likely a framework bug similar to\n // https://github.com/angular/angular/issues/46119\n this._ngZone.runOutsideAngular(() => Promise.resolve().then(() => this.detach()));\n }\n });\n }\n return attachResult;\n }\n /**\n * Detaches an overlay from a portal.\n * @returns The portal detachment result.\n */\n detach() {\n if (!this.hasAttached()) {\n return;\n }\n this.detachBackdrop();\n // When the overlay is detached, the pane element should disable pointer events.\n // This is necessary because otherwise the pane element will cover the page and disable\n // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n this._togglePointerEvents(false);\n if (this._positionStrategy && this._positionStrategy.detach) {\n this._positionStrategy.detach();\n }\n if (this._scrollStrategy) {\n this._scrollStrategy.disable();\n }\n const detachmentResult = this._portalOutlet.detach();\n // Only emit after everything is detached.\n this._detachments.next();\n // Remove this overlay from keyboard dispatcher tracking.\n this._keyboardDispatcher.remove(this);\n // Keeping the host element in the DOM can cause scroll jank, because it still gets\n // rendered, even though it's transparent and unclickable which is why we remove it.\n this._detachContentWhenStable();\n this._locationChanges.unsubscribe();\n this._outsideClickDispatcher.remove(this);\n return detachmentResult;\n }\n /** Cleans up the overlay from the DOM. */\n dispose() {\n const isAttached = this.hasAttached();\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._disposeScrollStrategy();\n this._disposeBackdrop(this._backdropElement);\n this._locationChanges.unsubscribe();\n this._keyboardDispatcher.remove(this);\n this._portalOutlet.dispose();\n this._attachments.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n this._outsidePointerEvents.complete();\n this._outsideClickDispatcher.remove(this);\n this._host?.remove();\n this._previousHostParent = this._pane = this._host = null;\n if (isAttached) {\n this._detachments.next();\n }\n this._detachments.complete();\n }\n /** Whether the overlay has attached content. */\n hasAttached() {\n return this._portalOutlet.hasAttached();\n }\n /** Gets an observable that emits when the backdrop has been clicked. */\n backdropClick() {\n return this._backdropClick;\n }\n /** Gets an observable that emits when the overlay has been attached. */\n attachments() {\n return this._attachments;\n }\n /** Gets an observable that emits when the overlay has been detached. */\n detachments() {\n return this._detachments;\n }\n /** Gets an observable of keydown events targeted to this overlay. */\n keydownEvents() {\n return this._keydownEvents;\n }\n /** Gets an observable of pointer events targeted outside this overlay. */\n outsidePointerEvents() {\n return this._outsidePointerEvents;\n }\n /** Gets the current overlay configuration, which is immutable. */\n getConfig() {\n return this._config;\n }\n /** Updates the position of the overlay based on the position strategy. */\n updatePosition() {\n if (this._positionStrategy) {\n this._positionStrategy.apply();\n }\n }\n /** Switches to a new position strategy and updates the overlay position. */\n updatePositionStrategy(strategy) {\n if (strategy === this._positionStrategy) {\n return;\n }\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._positionStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n this.updatePosition();\n }\n }\n /** Update the size properties of the overlay. */\n updateSize(sizeConfig) {\n this._config = { ...this._config, ...sizeConfig };\n this._updateElementSize();\n }\n /** Sets the LTR/RTL direction for the overlay. */\n setDirection(dir) {\n this._config = { ...this._config, direction: dir };\n this._updateElementDirection();\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, true);\n }\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, false);\n }\n }\n /**\n * Returns the layout direction of the overlay panel.\n */\n getDirection() {\n const direction = this._config.direction;\n if (!direction) {\n return 'ltr';\n }\n return typeof direction === 'string' ? direction : direction.value;\n }\n /** Switches to a new scroll strategy. */\n updateScrollStrategy(strategy) {\n if (strategy === this._scrollStrategy) {\n return;\n }\n this._disposeScrollStrategy();\n this._scrollStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n strategy.enable();\n }\n }\n /** Updates the text direction of the overlay panel. */\n _updateElementDirection() {\n this._host.setAttribute('dir', this.getDirection());\n }\n /** Updates the size of the overlay element based on the overlay config. */\n _updateElementSize() {\n if (!this._pane) {\n return;\n }\n const style = this._pane.style;\n style.width = coerceCssPixelValue(this._config.width);\n style.height = coerceCssPixelValue(this._config.height);\n style.minWidth = coerceCssPixelValue(this._config.minWidth);\n style.minHeight = coerceCssPixelValue(this._config.minHeight);\n style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n }\n /** Toggles the pointer events for the overlay pane element. */\n _togglePointerEvents(enablePointer) {\n this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n }\n /** Attaches a backdrop for this overlay. */\n _attachBackdrop() {\n const showingClass = 'cdk-overlay-backdrop-showing';\n this._backdropElement = this._document.createElement('div');\n this._backdropElement.classList.add('cdk-overlay-backdrop');\n if (this._animationsDisabled) {\n this._backdropElement.classList.add('cdk-overlay-backdrop-noop-animation');\n }\n if (this._config.backdropClass) {\n this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n }\n // Insert the backdrop before the pane in the DOM order,\n // in order to handle stacked overlays properly.\n this._host.parentElement.insertBefore(this._backdropElement, this._host);\n // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n // action desired when such a click occurs (usually closing the overlay).\n this._backdropElement.addEventListener('click', this._backdropClickHandler);\n // Add class to fade-in the backdrop after one frame.\n if (!this._animationsDisabled && typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (this._backdropElement) {\n this._backdropElement.classList.add(showingClass);\n }\n });\n });\n }\n else {\n this._backdropElement.classList.add(showingClass);\n }\n }\n /**\n * Updates the stacking order of the element, moving it to the top if necessary.\n * This is required in cases where one overlay was detached, while another one,\n * that should be behind it, was destroyed. The next time both of them are opened,\n * the stacking will be wrong, because the detached element's pane will still be\n * in its original DOM position.\n */\n _updateStackingOrder() {\n if (this._host.nextSibling) {\n this._host.parentNode.appendChild(this._host);\n }\n }\n /** Detaches the backdrop (if any) associated with the overlay. */\n detachBackdrop() {\n const backdropToDetach = this._backdropElement;\n if (!backdropToDetach) {\n return;\n }\n if (this._animationsDisabled) {\n this._disposeBackdrop(backdropToDetach);\n return;\n }\n backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n this._ngZone.runOutsideAngular(() => {\n backdropToDetach.addEventListener('transitionend', this._backdropTransitionendHandler);\n });\n // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n // In this case we make it unclickable and we try to remove it after a delay.\n backdropToDetach.style.pointerEvents = 'none';\n // Run this outside the Angular zone because there's nothing that Angular cares about.\n // If it were to run inside the Angular zone, every test that used Overlay would have to be\n // either async or fakeAsync.\n this._backdropTimeout = this._ngZone.runOutsideAngular(() => setTimeout(() => {\n this._disposeBackdrop(backdropToDetach);\n }, 500));\n }\n /** Toggles a single CSS class or an array of classes on an element. */\n _toggleClasses(element, cssClasses, isAdd) {\n const classes = coerceArray(cssClasses || []).filter(c => !!c);\n if (classes.length) {\n isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n }\n }\n /** Detaches the overlay content next time the zone stabilizes. */\n _detachContentWhenStable() {\n // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n // be patched to run inside the zone, which will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => {\n // We can't remove the host here immediately, because the overlay pane's content\n // might still be animating. This stream helps us avoid interrupting the animation\n // by waiting for the pane to become empty.\n const subscription = this._ngZone.onStable\n .pipe(takeUntil(merge(this._attachments, this._detachments)))\n .subscribe(() => {\n // Needs a couple of checks for the pane and host, because\n // they may have been removed by the time the zone stabilizes.\n if (!this._pane || !this._host || this._pane.children.length === 0) {\n if (this._pane && this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, false);\n }\n if (this._host && this._host.parentElement) {\n this._previousHostParent = this._host.parentElement;\n this._host.remove();\n }\n subscription.unsubscribe();\n }\n });\n });\n }\n /** Disposes of a scroll strategy. */\n _disposeScrollStrategy() {\n const scrollStrategy = this._scrollStrategy;\n if (scrollStrategy) {\n scrollStrategy.disable();\n if (scrollStrategy.detach) {\n scrollStrategy.detach();\n }\n }\n }\n /** Removes a backdrop element from the DOM. */\n _disposeBackdrop(backdrop) {\n if (backdrop) {\n backdrop.removeEventListener('click', this._backdropClickHandler);\n backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);\n backdrop.remove();\n // It is possible that a new portal has been attached to this overlay since we started\n // removing the backdrop. If that is the case, only clear the backdrop reference if it\n // is still the same instance that we started to remove.\n if (this._backdropElement === backdrop) {\n this._backdropElement = null;\n }\n }\n if (this._backdropTimeout) {\n clearTimeout(this._backdropTimeout);\n this._backdropTimeout = undefined;\n }\n }\n}\n\n// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n /** Ordered list of preferred positions, from most to least desirable. */\n get positions() {\n return this._preferredPositions;\n }\n constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n this._lastBoundingBoxSize = { width: 0, height: 0 };\n /** Whether the overlay was pushed in a previous positioning. */\n this._isPushed = false;\n /** Whether the overlay can be pushed on-screen on the initial open. */\n this._canPush = true;\n /** Whether the overlay can grow via flexible width/height after the initial open. */\n this._growAfterOpen = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this._hasFlexibleDimensions = true;\n /** Whether the overlay position is locked. */\n this._positionLocked = false;\n /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n this._viewportMargin = 0;\n /** The Scrollable containers used to check scrollable view properties on position change. */\n this._scrollables = [];\n /** Ordered list of preferred positions, from most to least desirable. */\n this._preferredPositions = [];\n /** Subject that emits whenever the position changes. */\n this._positionChanges = new Subject();\n /** Subscription to viewport size changes. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Default offset for the overlay along the x axis. */\n this._offsetX = 0;\n /** Default offset for the overlay along the y axis. */\n this._offsetY = 0;\n /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n this._appliedPanelClasses = [];\n /** Observable sequence of position changes. */\n this.positionChanges = this._positionChanges;\n this.setOrigin(connectedTo);\n }\n /** Attaches this position strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef &&\n overlayRef !== this._overlayRef &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This position strategy is already attached to an overlay');\n }\n this._validatePositions();\n overlayRef.hostElement.classList.add(boundingBoxClass);\n this._overlayRef = overlayRef;\n this._boundingBox = overlayRef.hostElement;\n this._pane = overlayRef.overlayElement;\n this._isDisposed = false;\n this._isInitialRender = true;\n this._lastPosition = null;\n this._resizeSubscription.unsubscribe();\n this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n // When the window is resized, we want to trigger the next reposition as if it\n // was an initial render, in order for the strategy to pick a new optimal position,\n // otherwise position locking will cause it to stay at the old one.\n this._isInitialRender = true;\n this.apply();\n });\n }\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin best fits on-screen.\n *\n * The selection of a position goes as follows:\n * - If any positions fit completely within the viewport as-is,\n * choose the first position that does so.\n * - If flexible dimensions are enabled and at least one satisfies the given minimum width/height,\n * choose the position with the greatest available size modified by the positions' weight.\n * - If pushing is enabled, take the position that went off-screen the least and push it\n * on-screen.\n * - If none of the previous criteria were met, use the position that goes off-screen the least.\n * @docs-private\n */\n apply() {\n // We shouldn't do anything if the strategy was disposed or we're on the server.\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n // If the position has been applied already (e.g. when the overlay was opened) and the\n // consumer opted into locking in the position, re-use the old position, in order to\n // prevent the overlay from jumping around.\n if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n this.reapplyLastPosition();\n return;\n }\n this._clearPanelClasses();\n this._resetOverlayElementStyles();\n this._resetBoundingBoxStyles();\n // We need the bounding rects for the origin, the overlay and the container to determine how to position\n // the overlay relative to the origin.\n // We use the viewport rect to determine whether a position would go off-screen.\n this._viewportRect = this._getNarrowedViewportRect();\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originRect = this._originRect;\n const overlayRect = this._overlayRect;\n const viewportRect = this._viewportRect;\n const containerRect = this._containerRect;\n // Positions where the overlay will fit with flexible dimensions.\n const flexibleFits = [];\n // Fallback if none of the preferred positions fit within the viewport.\n let fallback;\n // Go through each of the preferred positions looking for a good fit.\n // If a good fit is found, it will be applied immediately.\n for (let pos of this._preferredPositions) {\n // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n let originPoint = this._getOriginPoint(originRect, containerRect, pos);\n // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n // overlay in this position. We use the top-left corner for calculations and later translate\n // this into an appropriate (top, left, bottom, right) style.\n let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n // Calculate how well the overlay would fit into the viewport with this point.\n let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n // If the overlay, without any further work, fits into the viewport, use this position.\n if (overlayFit.isCompletelyWithinViewport) {\n this._isPushed = false;\n this._applyPosition(pos, originPoint);\n return;\n }\n // If the overlay has flexible dimensions, we can use this position\n // so long as there's enough space for the minimum dimensions.\n if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n // Save positions where the overlay will fit with flexible dimensions. We will use these\n // if none of the positions fit *without* flexible dimensions.\n flexibleFits.push({\n position: pos,\n origin: originPoint,\n overlayRect,\n boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos),\n });\n continue;\n }\n // If the current preferred position does not fit on the screen, remember the position\n // if it has more visible area on-screen than we've seen and move onto the next preferred\n // position.\n if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n fallback = { overlayFit, overlayPoint, originPoint, position: pos, overlayRect };\n }\n }\n // If there are any positions where the overlay would fit with flexible dimensions, choose the\n // one that has the greatest area available modified by the position's weight\n if (flexibleFits.length) {\n let bestFit = null;\n let bestScore = -1;\n for (const fit of flexibleFits) {\n const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n if (score > bestScore) {\n bestScore = score;\n bestFit = fit;\n }\n }\n this._isPushed = false;\n this._applyPosition(bestFit.position, bestFit.origin);\n return;\n }\n // When none of the preferred positions fit within the viewport, take the position\n // that went off-screen the least and attempt to push it on-screen.\n if (this._canPush) {\n // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n this._isPushed = true;\n this._applyPosition(fallback.position, fallback.originPoint);\n return;\n }\n // All options for getting the overlay within the viewport have been exhausted, so go with the\n // position that went off-screen the least.\n this._applyPosition(fallback.position, fallback.originPoint);\n }\n detach() {\n this._clearPanelClasses();\n this._lastPosition = null;\n this._previousPushAmount = null;\n this._resizeSubscription.unsubscribe();\n }\n /** Cleanup after the element gets destroyed. */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n // We can't use `_resetBoundingBoxStyles` here, because it resets\n // some properties to zero, rather than removing them.\n if (this._boundingBox) {\n extendStyles(this._boundingBox.style, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n if (this._pane) {\n this._resetOverlayElementStyles();\n }\n if (this._overlayRef) {\n this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n }\n this.detach();\n this._positionChanges.complete();\n this._overlayRef = this._boundingBox = null;\n this._isDisposed = true;\n }\n /**\n * This re-aligns the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n */\n reapplyLastPosition() {\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n const lastPosition = this._lastPosition;\n if (lastPosition) {\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._viewportRect = this._getNarrowedViewportRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originPoint = this._getOriginPoint(this._originRect, this._containerRect, lastPosition);\n this._applyPosition(lastPosition, originPoint);\n }\n else {\n this.apply();\n }\n }\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n */\n withScrollableContainers(scrollables) {\n this._scrollables = scrollables;\n return this;\n }\n /**\n * Adds new preferred positions.\n * @param positions List of positions options for this overlay.\n */\n withPositions(positions) {\n this._preferredPositions = positions;\n // If the last calculated position object isn't part of the positions anymore, clear\n // it in order to avoid it being picked up if the consumer tries to re-apply.\n if (positions.indexOf(this._lastPosition) === -1) {\n this._lastPosition = null;\n }\n this._validatePositions();\n return this;\n }\n /**\n * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n * @param margin Required margin between the overlay and the viewport edge in pixels.\n */\n withViewportMargin(margin) {\n this._viewportMargin = margin;\n return this;\n }\n /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n withFlexibleDimensions(flexibleDimensions = true) {\n this._hasFlexibleDimensions = flexibleDimensions;\n return this;\n }\n /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n withGrowAfterOpen(growAfterOpen = true) {\n this._growAfterOpen = growAfterOpen;\n return this;\n }\n /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n withPush(canPush = true) {\n this._canPush = canPush;\n return this;\n }\n /**\n * Sets whether the overlay's position should be locked in after it is positioned\n * initially. When an overlay is locked in, it won't attempt to reposition itself\n * when the position is re-applied (e.g. when the user scrolls away).\n * @param isLocked Whether the overlay should locked in.\n */\n withLockedPosition(isLocked = true) {\n this._positionLocked = isLocked;\n return this;\n }\n /**\n * Sets the origin, relative to which to position the overlay.\n * Using an element origin is useful for building components that need to be positioned\n * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n * used for cases like contextual menus which open relative to the user's pointer.\n * @param origin Reference to the new origin.\n */\n setOrigin(origin) {\n this._origin = origin;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the x-axis.\n * @param offset New offset in the X axis.\n */\n withDefaultOffsetX(offset) {\n this._offsetX = offset;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the y-axis.\n * @param offset New offset in the Y axis.\n */\n withDefaultOffsetY(offset) {\n this._offsetY = offset;\n return this;\n }\n /**\n * Configures that the position strategy should set a `transform-origin` on some elements\n * inside the overlay, depending on the current position that is being applied. This is\n * useful for the cases where the origin of an animation can change depending on the\n * alignment of the overlay.\n * @param selector CSS selector that will be used to find the target\n * elements onto which to set the transform origin.\n */\n withTransformOriginOn(selector) {\n this._transformOriginSelector = selector;\n return this;\n }\n /**\n * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n */\n _getOriginPoint(originRect, containerRect, pos) {\n let x;\n if (pos.originX == 'center') {\n // Note: when centering we should always use the `left`\n // offset, otherwise the position will be wrong in RTL.\n x = originRect.left + originRect.width / 2;\n }\n else {\n const startX = this._isRtl() ? originRect.right : originRect.left;\n const endX = this._isRtl() ? originRect.left : originRect.right;\n x = pos.originX == 'start' ? startX : endX;\n }\n // When zooming in Safari the container rectangle contains negative values for the position\n // and we need to re-add them to the calculated coordinates.\n if (containerRect.left < 0) {\n x -= containerRect.left;\n }\n let y;\n if (pos.originY == 'center') {\n y = originRect.top + originRect.height / 2;\n }\n else {\n y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n }\n // Normally the containerRect's top value would be zero, however when the overlay is attached to an input\n // (e.g. in an autocomplete), mobile browsers will shift everything in order to put the input in the middle\n // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n // otherwise our positioning will be thrown off.\n // Additionally, when zooming in Safari this fixes the vertical position.\n if (containerRect.top < 0) {\n y -= containerRect.top;\n }\n return { x, y };\n }\n /**\n * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n * origin point to which the overlay should be connected.\n */\n _getOverlayPoint(originPoint, overlayRect, pos) {\n // Calculate the (overlayStartX, overlayStartY), the start of the\n // potential overlay position relative to the origin point.\n let overlayStartX;\n if (pos.overlayX == 'center') {\n overlayStartX = -overlayRect.width / 2;\n }\n else if (pos.overlayX === 'start') {\n overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n }\n else {\n overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n }\n let overlayStartY;\n if (pos.overlayY == 'center') {\n overlayStartY = -overlayRect.height / 2;\n }\n else {\n overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n }\n // The (x, y) coordinates of the overlay.\n return {\n x: originPoint.x + overlayStartX,\n y: originPoint.y + overlayStartY,\n };\n }\n /** Gets how well an overlay at the given point will fit within the viewport. */\n _getOverlayFit(point, rawOverlayRect, viewport, position) {\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n let { x, y } = point;\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n // Account for the offsets since they could push the overlay out of the viewport.\n if (offsetX) {\n x += offsetX;\n }\n if (offsetY) {\n y += offsetY;\n }\n // How much the overlay would overflow at this position, on each side.\n let leftOverflow = 0 - x;\n let rightOverflow = x + overlay.width - viewport.width;\n let topOverflow = 0 - y;\n let bottomOverflow = y + overlay.height - viewport.height;\n // Visible parts of the element on each axis.\n let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n let visibleArea = visibleWidth * visibleHeight;\n return {\n visibleArea,\n isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n fitsInViewportVertically: visibleHeight === overlay.height,\n fitsInViewportHorizontally: visibleWidth == overlay.width,\n };\n }\n /**\n * Whether the overlay can fit within the viewport when it may resize either its width or height.\n * @param fit How well the overlay fits in the viewport at some position.\n * @param point The (x, y) coordinates of the overlay at some position.\n * @param viewport The geometry of the viewport.\n */\n _canFitWithFlexibleDimensions(fit, point, viewport) {\n if (this._hasFlexibleDimensions) {\n const availableHeight = viewport.bottom - point.y;\n const availableWidth = viewport.right - point.x;\n const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n const verticalFit = fit.fitsInViewportVertically || (minHeight != null && minHeight <= availableHeight);\n const horizontalFit = fit.fitsInViewportHorizontally || (minWidth != null && minWidth <= availableWidth);\n return verticalFit && horizontalFit;\n }\n return false;\n }\n /**\n * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n * the viewport, the top-left corner will be pushed on-screen (with overflow occurring on the\n * right and bottom).\n *\n * @param start Starting point from which the overlay is pushed.\n * @param rawOverlayRect Dimensions of the overlay.\n * @param scrollPosition Current viewport scroll position.\n * @returns The point at which to position the overlay after pushing. This is effectively a new\n * originPoint.\n */\n _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n // If the position is locked and we've pushed the overlay already, reuse the previous push\n // amount, rather than pushing it again. If we were to continue pushing, the element would\n // remain in the viewport, which goes against the expectations when position locking is enabled.\n if (this._previousPushAmount && this._positionLocked) {\n return {\n x: start.x + this._previousPushAmount.x,\n y: start.y + this._previousPushAmount.y,\n };\n }\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n const viewport = this._viewportRect;\n // Determine how much the overlay goes outside the viewport on each\n // side, which we'll use to decide which direction to push it.\n const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n // Amount by which to push the overlay in each axis such that it remains on-screen.\n let pushX = 0;\n let pushY = 0;\n // If the overlay fits completely within the bounds of the viewport, push it from whichever\n // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n // viewport and allow for the trailing end of the overlay to go out of bounds.\n if (overlay.width <= viewport.width) {\n pushX = overflowLeft || -overflowRight;\n }\n else {\n pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n }\n if (overlay.height <= viewport.height) {\n pushY = overflowTop || -overflowBottom;\n }\n else {\n pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n }\n this._previousPushAmount = { x: pushX, y: pushY };\n return {\n x: start.x + pushX,\n y: start.y + pushY,\n };\n }\n /**\n * Applies a computed position to the overlay and emits a position change.\n * @param position The position preference\n * @param originPoint The point on the origin element where the overlay is connected.\n */\n _applyPosition(position, originPoint) {\n this._setTransformOrigin(position);\n this._setOverlayElementStyles(originPoint, position);\n this._setBoundingBoxStyles(originPoint, position);\n if (position.panelClass) {\n this._addPanelClasses(position.panelClass);\n }\n // Save the last connected position in case the position needs to be re-calculated.\n this._lastPosition = position;\n // Notify that the position has been changed along with its change properties.\n // We only emit if we've got any subscriptions, because the scroll visibility\n // calculations can be somewhat expensive.\n if (this._positionChanges.observers.length) {\n const scrollableViewProperties = this._getScrollVisibility();\n const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n this._positionChanges.next(changeEvent);\n }\n this._isInitialRender = false;\n }\n /** Sets the transform origin based on the configured selector and the passed-in position. */\n _setTransformOrigin(position) {\n if (!this._transformOriginSelector) {\n return;\n }\n const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n let xOrigin;\n let yOrigin = position.overlayY;\n if (position.overlayX === 'center') {\n xOrigin = 'center';\n }\n else if (this._isRtl()) {\n xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n }\n else {\n xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n }\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n }\n }\n /**\n * Gets the position and size of the overlay's sizing container.\n *\n * This method does no measuring and applies no styles so that we can cheaply compute the\n * bounds for all positions and choose the best fit based on these results.\n */\n _calculateBoundingBoxRect(origin, position) {\n const viewport = this._viewportRect;\n const isRtl = this._isRtl();\n let height, top, bottom;\n if (position.overlayY === 'top') {\n // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n top = origin.y;\n height = viewport.height - top + this._viewportMargin;\n }\n else if (position.overlayY === 'bottom') {\n // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n // the viewport margin back in, because the viewport rect is narrowed down to remove the\n // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n bottom = viewport.height - origin.y + this._viewportMargin * 2;\n height = viewport.height - bottom + this._viewportMargin;\n }\n else {\n // If neither top nor bottom, it means that the overlay is vertically centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n // `origin.y - viewport.top`.\n const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n const previousHeight = this._lastBoundingBoxSize.height;\n height = smallestDistanceToViewportEdge * 2;\n top = origin.y - smallestDistanceToViewportEdge;\n if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n top = origin.y - previousHeight / 2;\n }\n }\n // The overlay is opening 'right-ward' (the content flows to the right).\n const isBoundedByRightViewportEdge = (position.overlayX === 'start' && !isRtl) || (position.overlayX === 'end' && isRtl);\n // The overlay is opening 'left-ward' (the content flows to the left).\n const isBoundedByLeftViewportEdge = (position.overlayX === 'end' && !isRtl) || (position.overlayX === 'start' && isRtl);\n let width, left, right;\n if (isBoundedByLeftViewportEdge) {\n right = viewport.width - origin.x + this._viewportMargin;\n width = origin.x - this._viewportMargin;\n }\n else if (isBoundedByRightViewportEdge) {\n left = origin.x;\n width = viewport.right - origin.x;\n }\n else {\n // If neither start nor end, it means that the overlay is horizontally centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.right - origin.x` and\n // `origin.x - viewport.left`.\n const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n const previousWidth = this._lastBoundingBoxSize.width;\n width = smallestDistanceToViewportEdge * 2;\n left = origin.x - smallestDistanceToViewportEdge;\n if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n left = origin.x - previousWidth / 2;\n }\n }\n return { top: top, left: left, bottom: bottom, right: right, width, height };\n }\n /**\n * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n * origin's connection point and stretches to the bounds of the viewport.\n *\n * @param origin The point on the origin element where the overlay is connected.\n * @param position The position preference\n */\n _setBoundingBoxStyles(origin, position) {\n const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n // when applying a new size.\n if (!this._isInitialRender && !this._growAfterOpen) {\n boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n }\n const styles = {};\n if (this._hasExactPosition()) {\n styles.top = styles.left = '0';\n styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n styles.width = styles.height = '100%';\n }\n else {\n const maxHeight = this._overlayRef.getConfig().maxHeight;\n const maxWidth = this._overlayRef.getConfig().maxWidth;\n styles.height = coerceCssPixelValue(boundingBoxRect.height);\n styles.top = coerceCssPixelValue(boundingBoxRect.top);\n styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n styles.width = coerceCssPixelValue(boundingBoxRect.width);\n styles.left = coerceCssPixelValue(boundingBoxRect.left);\n styles.right = coerceCssPixelValue(boundingBoxRect.right);\n // Push the pane content towards the proper direction.\n if (position.overlayX === 'center') {\n styles.alignItems = 'center';\n }\n else {\n styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n }\n if (position.overlayY === 'center') {\n styles.justifyContent = 'center';\n }\n else {\n styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n }\n if (maxHeight) {\n styles.maxHeight = coerceCssPixelValue(maxHeight);\n }\n if (maxWidth) {\n styles.maxWidth = coerceCssPixelValue(maxWidth);\n }\n }\n this._lastBoundingBoxSize = boundingBoxRect;\n extendStyles(this._boundingBox.style, styles);\n }\n /** Resets the styles for the bounding box so that a new positioning can be computed. */\n _resetBoundingBoxStyles() {\n extendStyles(this._boundingBox.style, {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n _resetOverlayElementStyles() {\n extendStyles(this._pane.style, {\n top: '',\n left: '',\n bottom: '',\n right: '',\n position: '',\n transform: '',\n });\n }\n /** Sets positioning styles to the overlay element. */\n _setOverlayElementStyles(originPoint, position) {\n const styles = {};\n const hasExactPosition = this._hasExactPosition();\n const hasFlexibleDimensions = this._hasFlexibleDimensions;\n const config = this._overlayRef.getConfig();\n if (hasExactPosition) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n }\n else {\n styles.position = 'static';\n }\n // Use a transform to apply the offsets. We do this because the `center` positions rely on\n // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n // off the position. We also can't use margins, because they won't have an effect in some\n // cases where the element doesn't have anything to \"push off of\". Finally, this works\n // better both with flexible and non-flexible positioning.\n let transformString = '';\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n if (offsetX) {\n transformString += `translateX(${offsetX}px) `;\n }\n if (offsetY) {\n transformString += `translateY(${offsetY}px)`;\n }\n styles.transform = transformString.trim();\n // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n // Note that this doesn't apply when we have an exact position, in which case we do want to\n // apply them because they'll be cleared from the bounding box.\n if (config.maxHeight) {\n if (hasExactPosition) {\n styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n }\n else if (hasFlexibleDimensions) {\n styles.maxHeight = '';\n }\n }\n if (config.maxWidth) {\n if (hasExactPosition) {\n styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n }\n else if (hasFlexibleDimensions) {\n styles.maxWidth = '';\n }\n }\n extendStyles(this._pane.style, styles);\n }\n /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayY(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the\n // preferred position has changed since the last `apply`.\n let styles = { top: '', bottom: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n // above or below the origin and the direction in which the element will expand.\n if (position.overlayY === 'bottom') {\n // When using `bottom`, we adjust the y position such that it is the distance\n // from the bottom of the viewport rather than the top.\n const documentHeight = this._document.documentElement.clientHeight;\n styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n }\n else {\n styles.top = coerceCssPixelValue(overlayPoint.y);\n }\n return styles;\n }\n /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayX(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the preferred position has\n // changed since the last `apply`.\n let styles = { left: '', right: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n // or \"after\" the origin, which determines the direction in which the element will expand.\n // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n // page is in RTL or LTR.\n let horizontalStyleProperty;\n if (this._isRtl()) {\n horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n }\n else {\n horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n }\n // When we're setting `right`, we adjust the x position such that it is the distance\n // from the right edge of the viewport rather than the left edge.\n if (horizontalStyleProperty === 'right') {\n const documentWidth = this._document.documentElement.clientWidth;\n styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n }\n else {\n styles.left = coerceCssPixelValue(overlayPoint.x);\n }\n return styles;\n }\n /**\n * Gets the view properties of the trigger and overlay, including whether they are clipped\n * or completely outside the view of any of the strategy's scrollables.\n */\n _getScrollVisibility() {\n // Note: needs fresh rects since the position could've changed.\n const originBounds = this._getOriginRect();\n const overlayBounds = this._pane.getBoundingClientRect();\n // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n // every time, we should be able to use the scrollTop of the containers if the size of those\n // containers hasn't changed.\n const scrollContainerBounds = this._scrollables.map(scrollable => {\n return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n });\n return {\n isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),\n };\n }\n /** Subtracts the amount that an element is overflowing on an axis from its length. */\n _subtractOverflows(length, ...overflows) {\n return overflows.reduce((currentValue, currentOverflow) => {\n return currentValue - Math.max(currentOverflow, 0);\n }, length);\n }\n /** Narrows the given viewport rect by the current _viewportMargin. */\n _getNarrowedViewportRect() {\n // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n // and `innerHeight` that do. This is necessary, because the overlay container uses\n // 100% `width` and `height` which don't include the scrollbar either.\n const width = this._document.documentElement.clientWidth;\n const height = this._document.documentElement.clientHeight;\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n return {\n top: scrollPosition.top + this._viewportMargin,\n left: scrollPosition.left + this._viewportMargin,\n right: scrollPosition.left + width - this._viewportMargin,\n bottom: scrollPosition.top + height - this._viewportMargin,\n width: width - 2 * this._viewportMargin,\n height: height - 2 * this._viewportMargin,\n };\n }\n /** Whether the we're dealing with an RTL context */\n _isRtl() {\n return this._overlayRef.getDirection() === 'rtl';\n }\n /** Determines whether the overlay uses exact or flexible positioning. */\n _hasExactPosition() {\n return !this._hasFlexibleDimensions || this._isPushed;\n }\n /** Retrieves the offset of a position along the x or y axis. */\n _getOffset(position, axis) {\n if (axis === 'x') {\n // We don't do something like `position['offset' + axis]` in\n // order to avoid breaking minifiers that rename properties.\n return position.offsetX == null ? this._offsetX : position.offsetX;\n }\n return position.offsetY == null ? this._offsetY : position.offsetY;\n }\n /** Validates that the current position match the expected values. */\n _validatePositions() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._preferredPositions.length) {\n throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n }\n // TODO(crisbeto): remove these once Angular's template type\n // checking is advanced enough to catch these cases.\n this._preferredPositions.forEach(pair => {\n validateHorizontalPosition('originX', pair.originX);\n validateVerticalPosition('originY', pair.originY);\n validateHorizontalPosition('overlayX', pair.overlayX);\n validateVerticalPosition('overlayY', pair.overlayY);\n });\n }\n }\n /** Adds a single CSS class or an array of classes on the overlay panel. */\n _addPanelClasses(cssClasses) {\n if (this._pane) {\n coerceArray(cssClasses).forEach(cssClass => {\n if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n this._appliedPanelClasses.push(cssClass);\n this._pane.classList.add(cssClass);\n }\n });\n }\n }\n /** Clears the classes that the position strategy has applied from the overlay panel. */\n _clearPanelClasses() {\n if (this._pane) {\n this._appliedPanelClasses.forEach(cssClass => {\n this._pane.classList.remove(cssClass);\n });\n this._appliedPanelClasses = [];\n }\n }\n /** Returns the ClientRect of the current origin. */\n _getOriginRect() {\n const origin = this._origin;\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width,\n };\n }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n if (typeof input !== 'number' && input != null) {\n const [value, units] = input.split(cssUnitPattern);\n return !units || units === 'px' ? parseFloat(value) : null;\n }\n return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n return {\n top: Math.floor(clientRect.top),\n right: Math.floor(clientRect.right),\n bottom: Math.floor(clientRect.bottom),\n left: Math.floor(clientRect.left),\n width: Math.floor(clientRect.width),\n height: Math.floor(clientRect.height),\n };\n}\nconst STANDARD_DROPDOWN_BELOW_POSITIONS = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\n];\nconst STANDARD_DROPDOWN_ADJACENT_POSITIONS = [\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' },\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' },\n { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' },\n];\n\n/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n constructor() {\n this._cssPosition = 'static';\n this._topOffset = '';\n this._bottomOffset = '';\n this._alignItems = '';\n this._xPosition = '';\n this._xOffset = '';\n this._width = '';\n this._height = '';\n this._isDisposed = false;\n }\n attach(overlayRef) {\n const config = overlayRef.getConfig();\n this._overlayRef = overlayRef;\n if (this._width && !config.width) {\n overlayRef.updateSize({ width: this._width });\n }\n if (this._height && !config.height) {\n overlayRef.updateSize({ height: this._height });\n }\n overlayRef.hostElement.classList.add(wrapperClass);\n this._isDisposed = false;\n }\n /**\n * Sets the top position of the overlay. Clears any previously set vertical position.\n * @param value New top offset.\n */\n top(value = '') {\n this._bottomOffset = '';\n this._topOffset = value;\n this._alignItems = 'flex-start';\n return this;\n }\n /**\n * Sets the left position of the overlay. Clears any previously set horizontal position.\n * @param value New left offset.\n */\n left(value = '') {\n this._xOffset = value;\n this._xPosition = 'left';\n return this;\n }\n /**\n * Sets the bottom position of the overlay. Clears any previously set vertical position.\n * @param value New bottom offset.\n */\n bottom(value = '') {\n this._topOffset = '';\n this._bottomOffset = value;\n this._alignItems = 'flex-end';\n return this;\n }\n /**\n * Sets the right position of the overlay. Clears any previously set horizontal position.\n * @param value New right offset.\n */\n right(value = '') {\n this._xOffset = value;\n this._xPosition = 'right';\n return this;\n }\n /**\n * Sets the overlay to the start of the viewport, depending on the overlay direction.\n * This will be to the left in LTR layouts and to the right in RTL.\n * @param offset Offset from the edge of the screen.\n */\n start(value = '') {\n this._xOffset = value;\n this._xPosition = 'start';\n return this;\n }\n /**\n * Sets the overlay to the end of the viewport, depending on the overlay direction.\n * This will be to the right in LTR layouts and to the left in RTL.\n * @param offset Offset from the edge of the screen.\n */\n end(value = '') {\n this._xOffset = value;\n this._xPosition = 'end';\n return this;\n }\n /**\n * Sets the overlay width and clears any previously set width.\n * @param value New width for the overlay\n * @deprecated Pass the `width` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n width(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ width: value });\n }\n else {\n this._width = value;\n }\n return this;\n }\n /**\n * Sets the overlay height and clears any previously set height.\n * @param value New height for the overlay\n * @deprecated Pass the `height` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n height(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ height: value });\n }\n else {\n this._height = value;\n }\n return this;\n }\n /**\n * Centers the overlay horizontally with an optional offset.\n * Clears any previously set horizontal position.\n *\n * @param offset Overlay offset from the horizontal center.\n */\n centerHorizontally(offset = '') {\n this.left(offset);\n this._xPosition = 'center';\n return this;\n }\n /**\n * Centers the overlay vertically with an optional offset.\n * Clears any previously set vertical position.\n *\n * @param offset Overlay offset from the vertical center.\n */\n centerVertically(offset = '') {\n this.top(offset);\n this._alignItems = 'center';\n return this;\n }\n /**\n * Apply the position to the element.\n * @docs-private\n */\n apply() {\n // Since the overlay ref applies the strategy asynchronously, it could\n // have been disposed before it ends up being applied. If that is the\n // case, we shouldn't do anything.\n if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parentStyles = this._overlayRef.hostElement.style;\n const config = this._overlayRef.getConfig();\n const { width, height, maxWidth, maxHeight } = config;\n const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') &&\n (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n const shouldBeFlushVertically = (height === '100%' || height === '100vh') &&\n (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n const xPosition = this._xPosition;\n const xOffset = this._xOffset;\n const isRtl = this._overlayRef.getConfig().direction === 'rtl';\n let marginLeft = '';\n let marginRight = '';\n let justifyContent = '';\n if (shouldBeFlushHorizontally) {\n justifyContent = 'flex-start';\n }\n else if (xPosition === 'center') {\n justifyContent = 'center';\n if (isRtl) {\n marginRight = xOffset;\n }\n else {\n marginLeft = xOffset;\n }\n }\n else if (isRtl) {\n if (xPosition === 'left' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginLeft = xOffset;\n }\n else if (xPosition === 'right' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginRight = xOffset;\n }\n }\n else if (xPosition === 'left' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginLeft = xOffset;\n }\n else if (xPosition === 'right' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginRight = xOffset;\n }\n styles.position = this._cssPosition;\n styles.marginLeft = shouldBeFlushHorizontally ? '0' : marginLeft;\n styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n styles.marginBottom = this._bottomOffset;\n styles.marginRight = shouldBeFlushHorizontally ? '0' : marginRight;\n parentStyles.justifyContent = justifyContent;\n parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n }\n /**\n * Cleans up the DOM changes from the position strategy.\n * @docs-private\n */\n dispose() {\n if (this._isDisposed || !this._overlayRef) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parent = this._overlayRef.hostElement;\n const parentStyles = parent.style;\n parent.classList.remove(wrapperClass);\n parentStyles.justifyContent =\n parentStyles.alignItems =\n styles.marginTop =\n styles.marginBottom =\n styles.marginLeft =\n styles.marginRight =\n styles.position =\n '';\n this._overlayRef = null;\n this._isDisposed = true;\n }\n}\n\n/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n }\n /**\n * Creates a global position strategy.\n */\n global() {\n return new GlobalPositionStrategy();\n }\n /**\n * Creates a flexible position strategy.\n * @param origin Origin relative to which to position the overlay.\n */\n flexibleConnectedTo(origin) {\n return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayPositionBuilder, deps: [{ token: i1.ViewportRuler }, { token: DOCUMENT }, { token: i1$1.Platform }, { token: OverlayContainer }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayPositionBuilder, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayPositionBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.ViewportRuler }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }, { type: OverlayContainer }]; } });\n\n/** Next overlay unique ID. */\nlet nextUniqueId = 0;\n// Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor(\n /** Scrolling strategies that can be used when creating an overlay. */\n scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher, _animationsModuleType) {\n this.scrollStrategies = scrollStrategies;\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._positionBuilder = _positionBuilder;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._injector = _injector;\n this._ngZone = _ngZone;\n this._document = _document;\n this._directionality = _directionality;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._animationsModuleType = _animationsModuleType;\n }\n /**\n * Creates an overlay.\n * @param config Configuration applied to the overlay.\n * @returns Reference to the created overlay.\n */\n create(config) {\n const host = this._createHostElement();\n const pane = this._createPaneElement(host);\n const portalOutlet = this._createPortalOutlet(pane);\n const overlayConfig = new OverlayConfig(config);\n overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher, this._animationsModuleType === 'NoopAnimations');\n }\n /**\n * Gets a position builder that can be used, via fluent API,\n * to construct and configure a position strategy.\n * @returns An overlay position builder.\n */\n position() {\n return this._positionBuilder;\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(host) {\n const pane = this._document.createElement('div');\n pane.id = `cdk-overlay-${nextUniqueId++}`;\n pane.classList.add('cdk-overlay-pane');\n host.appendChild(pane);\n return pane;\n }\n /**\n * Creates the host element that wraps around an overlay\n * and can be used for advanced positioning.\n * @returns Newly-create host element.\n */\n _createHostElement() {\n const host = this._document.createElement('div');\n this._overlayContainer.getContainerElement().appendChild(host);\n return host;\n }\n /**\n * Create a DomPortalOutlet into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal outlet.\n * @returns A portal outlet for the given DOM element.\n */\n _createPortalOutlet(pane) {\n // We have to resolve the ApplicationRef later in order to allow people\n // to use overlay-based providers during app initialization.\n if (!this._appRef) {\n this._appRef = this._injector.get(ApplicationRef);\n }\n return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Overlay, deps: [{ token: ScrollStrategyOptions }, { token: OverlayContainer }, { token: i0.ComponentFactoryResolver }, { token: OverlayPositionBuilder }, { token: OverlayKeyboardDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i5.Directionality }, { token: i6.Location }, { token: OverlayOutsideClickDispatcher }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Overlay, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Overlay, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: ScrollStrategyOptions }, { type: OverlayContainer }, { type: i0.ComponentFactoryResolver }, { type: OverlayPositionBuilder }, { type: OverlayKeyboardDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i5.Directionality }, { type: i6.Location }, { type: OverlayOutsideClickDispatcher }, { type: undefined, decorators: [{\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }, {\n type: Optional\n }] }]; } });\n\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy');\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkOverlayOrigin, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkOverlayOrigin, isStandalone: true, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkOverlayOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n exportAs: 'cdkOverlayOrigin',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n /** The offset in pixels for the overlay connection point on the x-axis */\n get offsetX() {\n return this._offsetX;\n }\n set offsetX(offsetX) {\n this._offsetX = offsetX;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** The offset in pixels for the overlay connection point on the y-axis */\n get offsetY() {\n return this._offsetY;\n }\n set offsetY(offsetY) {\n this._offsetY = offsetY;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** Whether or not the overlay should attach a backdrop. */\n get hasBackdrop() {\n return this._hasBackdrop;\n }\n set hasBackdrop(value) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n /** Whether or not the overlay should be locked when scrolling. */\n get lockPosition() {\n return this._lockPosition;\n }\n set lockPosition(value) {\n this._lockPosition = coerceBooleanProperty(value);\n }\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n get flexibleDimensions() {\n return this._flexibleDimensions;\n }\n set flexibleDimensions(value) {\n this._flexibleDimensions = coerceBooleanProperty(value);\n }\n /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n get growAfterOpen() {\n return this._growAfterOpen;\n }\n set growAfterOpen(value) {\n this._growAfterOpen = coerceBooleanProperty(value);\n }\n /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n get push() {\n return this._push;\n }\n set push(value) {\n this._push = coerceBooleanProperty(value);\n }\n // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n this._overlay = _overlay;\n this._dir = _dir;\n this._hasBackdrop = false;\n this._lockPosition = false;\n this._growAfterOpen = false;\n this._flexibleDimensions = false;\n this._push = false;\n this._backdropSubscription = Subscription.EMPTY;\n this._attachSubscription = Subscription.EMPTY;\n this._detachSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n /** Margin between the overlay and the viewport edges. */\n this.viewportMargin = 0;\n /** Whether the overlay is open. */\n this.open = false;\n /** Whether the overlay can be closed by user interaction. */\n this.disableClose = false;\n /** Event emitted when the backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Event emitted when the position has changed. */\n this.positionChange = new EventEmitter();\n /** Event emitted when the overlay has been attached. */\n this.attach = new EventEmitter();\n /** Event emitted when the overlay has been detached. */\n this.detach = new EventEmitter();\n /** Emits when there are keyboard events that are targeted at the overlay. */\n this.overlayKeydown = new EventEmitter();\n /** Emits when there are mouse outside click events that are targeted at the overlay. */\n this.overlayOutsideClick = new EventEmitter();\n this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n this._scrollStrategyFactory = scrollStrategyFactory;\n this.scrollStrategy = this._scrollStrategyFactory();\n }\n /** The associated overlay reference. */\n get overlayRef() {\n return this._overlayRef;\n }\n /** The element's layout direction. */\n get dir() {\n return this._dir ? this._dir.value : 'ltr';\n }\n ngOnDestroy() {\n this._attachSubscription.unsubscribe();\n this._detachSubscription.unsubscribe();\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n }\n ngOnChanges(changes) {\n if (this._position) {\n this._updatePositionStrategy(this._position);\n this._overlayRef.updateSize({\n width: this.width,\n minWidth: this.minWidth,\n height: this.height,\n minHeight: this.minHeight,\n });\n if (changes['origin'] && this.open) {\n this._position.apply();\n }\n }\n if (changes['open']) {\n this.open ? this._attachOverlay() : this._detachOverlay();\n }\n }\n /** Creates an overlay */\n _createOverlay() {\n if (!this.positions || !this.positions.length) {\n this.positions = defaultPositionList;\n }\n const overlayRef = (this._overlayRef = this._overlay.create(this._buildConfig()));\n this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n overlayRef.keydownEvents().subscribe((event) => {\n this.overlayKeydown.next(event);\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n event.preventDefault();\n this._detachOverlay();\n }\n });\n this._overlayRef.outsidePointerEvents().subscribe((event) => {\n this.overlayOutsideClick.next(event);\n });\n }\n /** Builds the overlay config based on the directive's inputs */\n _buildConfig() {\n const positionStrategy = (this._position =\n this.positionStrategy || this._createPositionStrategy());\n const overlayConfig = new OverlayConfig({\n direction: this._dir,\n positionStrategy,\n scrollStrategy: this.scrollStrategy,\n hasBackdrop: this.hasBackdrop,\n });\n if (this.width || this.width === 0) {\n overlayConfig.width = this.width;\n }\n if (this.height || this.height === 0) {\n overlayConfig.height = this.height;\n }\n if (this.minWidth || this.minWidth === 0) {\n overlayConfig.minWidth = this.minWidth;\n }\n if (this.minHeight || this.minHeight === 0) {\n overlayConfig.minHeight = this.minHeight;\n }\n if (this.backdropClass) {\n overlayConfig.backdropClass = this.backdropClass;\n }\n if (this.panelClass) {\n overlayConfig.panelClass = this.panelClass;\n }\n return overlayConfig;\n }\n /** Updates the state of a position strategy, based on the values of the directive inputs. */\n _updatePositionStrategy(positionStrategy) {\n const positions = this.positions.map(currentPosition => ({\n originX: currentPosition.originX,\n originY: currentPosition.originY,\n overlayX: currentPosition.overlayX,\n overlayY: currentPosition.overlayY,\n offsetX: currentPosition.offsetX || this.offsetX,\n offsetY: currentPosition.offsetY || this.offsetY,\n panelClass: currentPosition.panelClass || undefined,\n }));\n return positionStrategy\n .setOrigin(this._getFlexibleConnectedPositionStrategyOrigin())\n .withPositions(positions)\n .withFlexibleDimensions(this.flexibleDimensions)\n .withPush(this.push)\n .withGrowAfterOpen(this.growAfterOpen)\n .withViewportMargin(this.viewportMargin)\n .withLockedPosition(this.lockPosition)\n .withTransformOriginOn(this.transformOriginSelector);\n }\n /** Returns the position strategy of the overlay to be set on the overlay config */\n _createPositionStrategy() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());\n this._updatePositionStrategy(strategy);\n return strategy;\n }\n _getFlexibleConnectedPositionStrategyOrigin() {\n if (this.origin instanceof CdkOverlayOrigin) {\n return this.origin.elementRef;\n }\n else {\n return this.origin;\n }\n }\n /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n _attachOverlay() {\n if (!this._overlayRef) {\n this._createOverlay();\n }\n else {\n // Update the overlay size, in case the directive's inputs have changed\n this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n }\n if (!this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._templatePortal);\n }\n if (this.hasBackdrop) {\n this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n this.backdropClick.emit(event);\n });\n }\n else {\n this._backdropSubscription.unsubscribe();\n }\n this._positionSubscription.unsubscribe();\n // Only subscribe to `positionChanges` if requested, because putting\n // together all the information for it can be expensive.\n if (this.positionChange.observers.length > 0) {\n this._positionSubscription = this._position.positionChanges\n .pipe(takeWhile(() => this.positionChange.observers.length > 0))\n .subscribe(position => {\n this.positionChange.emit(position);\n if (this.positionChange.observers.length === 0) {\n this._positionSubscription.unsubscribe();\n }\n });\n }\n }\n /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n _detachOverlay() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkConnectedOverlay, deps: [{ token: Overlay }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY }, { token: i5.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkConnectedOverlay, isStandalone: true, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: { origin: [\"cdkConnectedOverlayOrigin\", \"origin\"], positions: [\"cdkConnectedOverlayPositions\", \"positions\"], positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"], offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"], offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"], width: [\"cdkConnectedOverlayWidth\", \"width\"], height: [\"cdkConnectedOverlayHeight\", \"height\"], minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"], minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"], backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"], panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"], viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"], scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"], open: [\"cdkConnectedOverlayOpen\", \"open\"], disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"], transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"], hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\"], lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\"], flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\"], growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\"], push: [\"cdkConnectedOverlayPush\", \"push\"] }, outputs: { backdropClick: \"backdropClick\", positionChange: \"positionChange\", attach: \"attach\", detach: \"detach\", overlayKeydown: \"overlayKeydown\", overlayOutsideClick: \"overlayOutsideClick\" }, exportAs: [\"cdkConnectedOverlay\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkConnectedOverlay, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n exportAs: 'cdkConnectedOverlay',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: Overlay }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n }] }, { type: i5.Directionality, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { origin: [{\n type: Input,\n args: ['cdkConnectedOverlayOrigin']\n }], positions: [{\n type: Input,\n args: ['cdkConnectedOverlayPositions']\n }], positionStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayPositionStrategy']\n }], offsetX: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetX']\n }], offsetY: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetY']\n }], width: [{\n type: Input,\n args: ['cdkConnectedOverlayWidth']\n }], height: [{\n type: Input,\n args: ['cdkConnectedOverlayHeight']\n }], minWidth: [{\n type: Input,\n args: ['cdkConnectedOverlayMinWidth']\n }], minHeight: [{\n type: Input,\n args: ['cdkConnectedOverlayMinHeight']\n }], backdropClass: [{\n type: Input,\n args: ['cdkConnectedOverlayBackdropClass']\n }], panelClass: [{\n type: Input,\n args: ['cdkConnectedOverlayPanelClass']\n }], viewportMargin: [{\n type: Input,\n args: ['cdkConnectedOverlayViewportMargin']\n }], scrollStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayScrollStrategy']\n }], open: [{\n type: Input,\n args: ['cdkConnectedOverlayOpen']\n }], disableClose: [{\n type: Input,\n args: ['cdkConnectedOverlayDisableClose']\n }], transformOriginSelector: [{\n type: Input,\n args: ['cdkConnectedOverlayTransformOriginOn']\n }], hasBackdrop: [{\n type: Input,\n args: ['cdkConnectedOverlayHasBackdrop']\n }], lockPosition: [{\n type: Input,\n args: ['cdkConnectedOverlayLockPosition']\n }], flexibleDimensions: [{\n type: Input,\n args: ['cdkConnectedOverlayFlexibleDimensions']\n }], growAfterOpen: [{\n type: Input,\n args: ['cdkConnectedOverlayGrowAfterOpen']\n }], push: [{\n type: Input,\n args: ['cdkConnectedOverlayPush']\n }], backdropClick: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], attach: [{\n type: Output\n }], detach: [{\n type: Output\n }], overlayKeydown: [{\n type: Output\n }], overlayOutsideClick: [{\n type: Output\n }] } });\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\nclass OverlayModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayModule, imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayModule, providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], imports: [BidiModule, PortalModule, ScrollingModule, ScrollingModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: OverlayModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n }]\n }] });\n\n/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n constructor(_document, platform) {\n super(_document, platform);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this._fullScreenEventName && this._fullScreenListener) {\n this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n }\n }\n _createContainer() {\n super._createContainer();\n this._adjustParentForFullscreenChange();\n this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n }\n _adjustParentForFullscreenChange() {\n if (!this._containerElement) {\n return;\n }\n const fullscreenElement = this.getFullscreenElement();\n const parent = fullscreenElement || this._document.body;\n parent.appendChild(this._containerElement);\n }\n _addFullscreenChangeListener(fn) {\n const eventName = this._getEventName();\n if (eventName) {\n if (this._fullScreenListener) {\n this._document.removeEventListener(eventName, this._fullScreenListener);\n }\n this._document.addEventListener(eventName, fn);\n this._fullScreenListener = fn;\n }\n }\n _getEventName() {\n if (!this._fullScreenEventName) {\n const _document = this._document;\n if (_document.fullscreenEnabled) {\n this._fullScreenEventName = 'fullscreenchange';\n }\n else if (_document.webkitFullscreenEnabled) {\n this._fullScreenEventName = 'webkitfullscreenchange';\n }\n else if (_document.mozFullScreenEnabled) {\n this._fullScreenEventName = 'mozfullscreenchange';\n }\n else if (_document.msFullscreenEnabled) {\n this._fullScreenEventName = 'MSFullscreenChange';\n }\n }\n return this._fullScreenEventName;\n }\n /**\n * When the page is put into fullscreen mode, a specific element is specified.\n * Only that element and its children are visible when in fullscreen mode.\n */\n getFullscreenElement() {\n const _document = this._document;\n return (_document.fullscreenElement ||\n _document.webkitFullscreenElement ||\n _document.mozFullScreenElement ||\n _document.msFullscreenElement ||\n null);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FullscreenOverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FullscreenOverlayContainer, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FullscreenOverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }]; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, STANDARD_DROPDOWN_ADJACENT_POSITIONS, STANDARD_DROPDOWN_BELOW_POSITIONS, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n}\ncatch {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser &&\n !!(window.chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Platform, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Platform, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; } });\n\nclass PlatformModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: PlatformModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: PlatformModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: PlatformModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `<input>` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\n}\n\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => (supportsPassiveEvents = true),\n }));\n }\n finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n }\n else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n }\n else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return 0 /* RtlScrollAxisType.NORMAL */;\n }\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = 0 /* RtlScrollAxisType.NORMAL */;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? 1 /* RtlScrollAxisType.NEGATED */ : 2 /* RtlScrollAxisType.INVERTED */;\n }\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\n}\n\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document\n ? document.activeElement\n : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n }\n else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target);\n}\n\n/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha));\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n","import * as i0 from '@angular/core';\nimport { ElementRef, Injector, Directive, EventEmitter, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nfunction throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n /** Attach this portal to a host. */\n attach(host) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (host == null) {\n throwNullPortalOutletError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n }\n this._attachedHost = host;\n return host.attach(this);\n }\n /** Detach this portal from its host */\n detach() {\n let host = this._attachedHost;\n if (host != null) {\n this._attachedHost = null;\n host.detach();\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwNoPortalAttachedError();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n constructor(component, viewContainerRef, injector, componentFactoryResolver, projectableNodes) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n this.projectableNodes = projectableNodes;\n }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n constructor(\n /** The embedded template that will be used to instantiate an embedded View in the host. */\n templateRef, \n /** Reference to the ViewContainer into which the template will be stamped out. */\n viewContainerRef, \n /** Contextual data to be passed in to the embedded view. */\n context, \n /** The injector to use for the embedded view. */\n injector) {\n super();\n this.templateRef = templateRef;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n this.injector = injector;\n }\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n constructor(element) {\n super();\n this.element = element instanceof ElementRef ? element.nativeElement : element;\n }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n constructor() {\n /** Whether this host has already been permanently disposed. */\n this._isDisposed = false;\n // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n this.attachDomPortal = null;\n }\n /** Whether this host has an attached portal. */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /** Attaches a portal. */\n attach(portal) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n }\n else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n }\n else if (this.attachDomPortal && portal instanceof DomPortal) {\n this._attachedPortal = portal;\n return this.attachDomPortal(portal);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwUnknownPortalTypeError();\n }\n }\n /** Detaches a previously attached portal. */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /** Permanently dispose of this portal host. */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /** @docs-private */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {\n}\n\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n /**\n * @param outletElement Element into which the content is projected.\n * @param _componentFactoryResolver Used to resolve the component factory.\n * Only required when attaching component portals.\n * @param _appRef Reference to the application. Only used in component portals when there\n * is no `ViewContainerRef` available.\n * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't\n * have one. Only used for component portals.\n * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually\n * become a required parameter.\n */\n constructor(\n /** Element into which the content is projected. */\n outletElement, _componentFactoryResolver, _appRef, _defaultInjector, \n /**\n * @deprecated `_document` Parameter to be made required.\n * @breaking-change 10.0.0\n */\n _document) {\n super();\n this.outletElement = outletElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n /**\n * Attaches a DOM portal by transferring its content into the outlet.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 10.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n element.parentNode.insertBefore(anchorNode, element);\n this.outletElement.appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n // We can't use `replaceWith` here because IE doesn't support it.\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n const resolver = (portal.componentFactoryResolver || this._componentFactoryResolver);\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !resolver) {\n throw Error('Cannot attach component portal to outlet without a ComponentFactoryResolver.');\n }\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector, portal.projectableNodes || undefined);\n this.setDisposeFn(() => componentRef.destroy());\n }\n else {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._appRef) {\n throw Error('Cannot attach component portal to outlet without an ApplicationRef.');\n }\n componentRef = componentFactory.create(portal.injector || this._defaultInjector || Injector.NULL);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n // Verify that the ApplicationRef has registered views before trying to detach a host view.\n // This check also protects the `detachView` from being called on a destroyed ApplicationRef.\n if (this._appRef.viewCount > 0) {\n this._appRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n this._attachedPortal = portal;\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector,\n });\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n // Note that we want to detect changes after the nodes have been moved so that\n // any directives inside the portal that are looking at the DOM inside a lifecycle\n // hook won't be invoked too early.\n viewRef.detectChanges();\n this.setDisposeFn(() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n });\n this._attachedPortal = portal;\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Clears out a portal from the DOM.\n */\n dispose() {\n super.dispose();\n this.outletElement.remove();\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {\n}\n\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n constructor(templateRef, viewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkPortal, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkPortal, selector: \"[cdkPortal]\", exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkPortal, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortal]',\n exportAs: 'cdkPortal',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: TemplatePortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: TemplatePortalDirective, selector: \"[cdk-portal], [portal]\", providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ], exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: TemplatePortalDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-portal], [portal]',\n exportAs: 'cdkPortal',\n providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ],\n }]\n }] });\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n constructor(_componentFactoryResolver, _viewContainerRef, \n /**\n * @deprecated `_document` parameter to be made required.\n * @breaking-change 9.0.0\n */\n _document) {\n super();\n this._componentFactoryResolver = _componentFactoryResolver;\n this._viewContainerRef = _viewContainerRef;\n /** Whether the portal component is initialized. */\n this._isInitialized = false;\n /** Emits when a portal is attached to the outlet. */\n this.attached = new EventEmitter();\n /**\n * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 9.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n portal.setAttachedHost(this);\n element.parentNode.insertBefore(anchorNode, element);\n this._getRootNode().appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /** Portal associated with the Portal outlet. */\n get portal() {\n return this._attachedPortal;\n }\n set portal(portal) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._attachedPortal = portal || null;\n }\n /** Component or view reference that is attached to the portal. */\n get attachedRef() {\n return this._attachedRef;\n }\n ngOnInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n super.dispose();\n this._attachedRef = this._attachedPortal = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector, portal.projectableNodes || undefined);\n // If we're using a view container that's different from the injected one (e.g. when the portal\n // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n // inside of the alternate view container.\n if (viewContainerRef !== this._viewContainerRef) {\n this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n }\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortalHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector,\n });\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n return viewRef;\n }\n /** Gets the root node of the portal outlet. */\n _getRootNode() {\n const nativeElement = this._viewContainerRef.element.nativeElement;\n // The directive could be set on a template which will result in a comment\n // node being the root. Use the comment's parent node if that is the case.\n return (nativeElement.nodeType === nativeElement.ELEMENT_NODE\n ? nativeElement\n : nativeElement.parentNode);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkPortalOutlet, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: { portal: [\"cdkPortalOutlet\", \"portal\"] }, outputs: { attached: \"attached\" }, exportAs: [\"cdkPortalOutlet\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkPortalOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalOutlet]',\n exportAs: 'cdkPortalOutlet',\n inputs: ['portal: cdkPortalOutlet'],\n }]\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { attached: [{\n type: Output\n }] } });\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: PortalHostDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: PortalHostDirective, selector: \"[cdkPortalHost], [portalHost]\", inputs: { portal: [\"cdkPortalHost\", \"portal\"] }, providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ], exportAs: [\"cdkPortalHost\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: PortalHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: ['portal: cdkPortalHost'],\n providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ],\n }]\n }] });\nclass PortalModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: PortalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: PortalModule, declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: PortalModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: PortalModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n }]\n }] });\n\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n get(token, notFoundValue) {\n const value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport const animationFrame = new AnimationFrameScheduler(AnimationFrameAction);\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AnimationFrameScheduler extends AsyncScheduler {\n flush(action) {\n this.active = true;\n this.scheduled = undefined;\n const { actions } = this;\n let error;\n let index = -1;\n let count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nexport class AnimationFrameAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(() => scheduler.flush(null)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n }\n}\n","let nextHandle = 1;\nconst RESOLVED = (() => Promise.resolve())();\nconst activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport const Immediate = {\n setImmediate(cb) {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n RESOLVED.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n clearImmediate(handle) {\n findAndClearHandle(handle);\n },\n};\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport const asap = new AsapScheduler(AsapAction);\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AsapScheduler extends AsyncScheduler {\n flush(action) {\n this.active = true;\n this.scheduled = undefined;\n const { actions } = this;\n let error;\n let index = -1;\n let count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nexport class AsapAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(scheduler.flush.bind(scheduler, null)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n }\n}\n","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function audit(durationSelector) {\n return function auditOperatorFunction(source) {\n return source.lift(new AuditOperator(durationSelector));\n };\n}\nclass AuditOperator {\n constructor(durationSelector) {\n this.durationSelector = durationSelector;\n }\n call(subscriber, source) {\n return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));\n }\n}\nclass AuditSubscriber extends OuterSubscriber {\n constructor(destination, durationSelector) {\n super(destination);\n this.durationSelector = durationSelector;\n this.hasValue = false;\n }\n _next(value) {\n this.value = value;\n this.hasValue = true;\n if (!this.throttled) {\n let duration;\n try {\n const { durationSelector } = this;\n duration = durationSelector(value);\n }\n catch (err) {\n return this.destination.error(err);\n }\n const innerSubscription = subscribeToResult(this, duration);\n if (!innerSubscription || innerSubscription.closed) {\n this.clearThrottle();\n }\n else {\n this.add(this.throttled = innerSubscription);\n }\n }\n }\n clearThrottle() {\n const { value, hasValue, throttled } = this;\n if (throttled) {\n this.remove(throttled);\n this.throttled = null;\n throttled.unsubscribe();\n }\n if (hasValue) {\n this.value = null;\n this.hasValue = false;\n this.destination.next(value);\n }\n }\n notifyNext(outerValue, innerValue, outerIndex, innerIndex) {\n this.clearThrottle();\n }\n notifyComplete() {\n this.clearThrottle();\n }\n}\n","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler = async) {\n return audit(() => timer(duration, scheduler));\n}\n","import { coerceNumberProperty, coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, ElementRef, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, supportsScrollBehavior, Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\n\n/** The injection token used to specify the virtual scrolling strategy. */\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n /**\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n constructor(itemSize, minBufferPx, maxBufferPx) {\n this._scrolledIndexChange = new Subject();\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n /** The attached viewport. */\n this._viewport = null;\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\n /**\n * Update the item size and buffer size.\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() {\n /* no-op */\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() {\n /* no-op */\n }\n /**\n * Scroll to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling.\n */\n scrollToIndex(index, behavior) {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n /** Update the viewport's total content size. */\n _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n /** Update the viewport's rendered range. */\n _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\n const renderedRange = this._viewport.getRenderedRange();\n const newRange = { start: renderedRange.start, end: renderedRange.end };\n const viewportSize = this._viewport.getViewportSize();\n const dataLength = this._viewport.getDataLength();\n let scrollOffset = this._viewport.measureScrollOffset();\n // Prevent NaN as result when dividing by zero.\n let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n // If user scrolls to the bottom of the list and data changes to a smaller list\n if (newRange.end > dataLength) {\n // We have to recalculate the first visible index based on new data length and viewport size.\n const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n // If first visible index changed we must update scroll offset to handle start/end buffers\n // Current range must also be adjusted to cover the new position (bottom of new list).\n if (firstVisibleIndex != newVisibleIndex) {\n firstVisibleIndex = newVisibleIndex;\n scrollOffset = newVisibleIndex * this._itemSize;\n newRange.start = Math.floor(firstVisibleIndex);\n }\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\n const startBuffer = scrollOffset - newRange.start * this._itemSize;\n if (startBuffer < this._minBufferPx && newRange.start != 0) {\n const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n newRange.start = Math.max(0, newRange.start - expandStart);\n newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n }\n else {\n const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n if (expandEnd > 0) {\n newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\n }\n }\n this._viewport.setRenderedRange(newRange);\n this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n constructor() {\n this._itemSize = 20;\n this._minBufferPx = 100;\n this._maxBufferPx = 200;\n /** The scroll strategy used by this directive. */\n this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n /** The size of the items in the list (in pixels). */\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(value) {\n this._itemSize = coerceNumberProperty(value);\n }\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n get minBufferPx() {\n return this._minBufferPx;\n }\n set minBufferPx(value) {\n this._minBufferPx = coerceNumberProperty(value);\n }\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n get maxBufferPx() {\n return this._maxBufferPx;\n }\n set maxBufferPx(value) {\n this._maxBufferPx = coerceNumberProperty(value);\n }\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkFixedSizeVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkFixedSizeVirtualScroll, isStandalone: true, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: { itemSize: \"itemSize\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\" }, providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkFixedSizeVirtualScroll, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n standalone: true,\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ],\n }]\n }], propDecorators: { itemSize: [{\n type: Input\n }], minBufferPx: [{\n type: Input\n }], maxBufferPx: [{\n type: Input\n }] } });\n\n/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n constructor(_ngZone, _platform, document) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n this._scrolled = new Subject();\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n this._globalSubscription = null;\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n this._scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n this.scrollContainers = new Map();\n this._document = document;\n }\n /**\n * Registers a scrollable instance with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event to its scrolled observable.\n * @param scrollable Scrollable instance to be registered.\n */\n register(scrollable) {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n }\n }\n /**\n * De-registers a Scrollable reference and unsubscribes from its scroll event observable.\n * @param scrollable Scrollable instance to be deregistered.\n */\n deregister(scrollable) {\n const scrollableReference = this.scrollContainers.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\n }\n /**\n * Returns an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n *\n * **Note:** in order to avoid hitting change detection for every scroll event,\n * all of the events emitted from this stream will be run outside the Angular zone.\n * If you need to update any data bindings as a result of a scroll event, you have\n * to run the callback using `NgZone.run`.\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n if (!this._platform.isBrowser) {\n return of();\n }\n return new Observable((observer) => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription = auditTimeInMs > 0\n ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)\n : this._scrolled.subscribe(observer);\n this._scrolledCount++;\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementOrElementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementOrElementRef) {\n const scrollingContainers = [];\n this.scrollContainers.forEach((_subscription, scrollable) => {\n if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Returns true if the element is contained within the provided Scrollable. */\n _scrollableContainsElement(scrollable, elementOrElementRef) {\n let element = coerceElement(elementOrElementRef);\n let scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while ((element = element.parentElement));\n return false;\n }\n /** Sets up the global scroll listeners. */\n _addGlobalListener() {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n });\n }\n /** Cleans up the global scroll listener. */\n _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ScrollDispatcher, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ScrollDispatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ScrollDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n this.dir = dir;\n this._destroyed = new Subject();\n this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll')\n .pipe(takeUntil(this._destroyed))\n .subscribe(observer)));\n }\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled() {\n return this._elementScrolled;\n }\n /** Gets the ElementRef for the viewport. */\n getElementRef() {\n return this.elementRef;\n }\n /**\n * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param options specified the offsets to scroll to.\n */\n scrollTo(options) {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n // Rewrite start & end offsets as right or left offsets.\n if (options.left == null) {\n options.left = isRtl ? options.end : options.start;\n }\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n options.top =\n el.scrollHeight - el.clientHeight - options.bottom;\n }\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != 0 /* RtlScrollAxisType.NORMAL */) {\n if (options.left != null) {\n options.right =\n el.scrollWidth - el.clientWidth - options.left;\n }\n if (getRtlScrollAxisType() == 2 /* RtlScrollAxisType.INVERTED */) {\n options.left = options.right;\n }\n else if (getRtlScrollAxisType() == 1 /* RtlScrollAxisType.NEGATED */) {\n options.left = options.right ? -options.right : options.right;\n }\n }\n else {\n if (options.right != null) {\n options.left =\n el.scrollWidth - el.clientWidth - options.right;\n }\n }\n this._applyScrollToOptions(options);\n }\n _applyScrollToOptions(options) {\n const el = this.elementRef.nativeElement;\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\n }\n else {\n if (options.top != null) {\n el.scrollTop = options.top;\n }\n if (options.left != null) {\n el.scrollLeft = options.left;\n }\n }\n }\n /**\n * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param from The edge to measure from.\n */\n measureScrollOffset(from) {\n const LEFT = 'left';\n const RIGHT = 'right';\n const el = this.elementRef.nativeElement;\n if (from == 'top') {\n return el.scrollTop;\n }\n if (from == 'bottom') {\n return el.scrollHeight - el.clientHeight - el.scrollTop;\n }\n // Rewrite start & end as left or right offsets.\n const isRtl = this.dir && this.dir.value == 'rtl';\n if (from == 'start') {\n from = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n if (isRtl && getRtlScrollAxisType() == 2 /* RtlScrollAxisType.INVERTED */) {\n // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n else {\n return el.scrollLeft;\n }\n }\n else if (isRtl && getRtlScrollAxisType() == 1 /* RtlScrollAxisType.NEGATED */) {\n // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\n }\n else {\n return -el.scrollLeft;\n }\n }\n else {\n // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n // (scrollWidth - clientWidth) when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft;\n }\n else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkScrollable, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkScrollable, isStandalone: true, selector: \"[cdk-scrollable], [cdkScrollable]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkScrollable, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-scrollable], [cdkScrollable]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; } });\n\n/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n constructor(_platform, ngZone, document) {\n this._platform = _platform;\n /** Stream of viewport change events. */\n this._change = new Subject();\n /** Event listener that will be used to handle the viewport change events. */\n this._changeListener = (event) => {\n this._change.next(event);\n };\n this._document = document;\n ngZone.runOutsideAngular(() => {\n if (_platform.isBrowser) {\n const window = this._getWindow();\n // Note that bind the events ourselves, rather than going through something like RxJS's\n // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n window.addEventListener('resize', this._changeListener);\n window.addEventListener('orientationchange', this._changeListener);\n }\n // Clear the cached position so that the viewport is re-measured next time it is required.\n // We don't need to keep track of the subscription, because it is completed on destroy.\n this.change().subscribe(() => (this._viewportSize = null));\n });\n }\n ngOnDestroy() {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n window.removeEventListener('resize', this._changeListener);\n window.removeEventListener('orientationchange', this._changeListener);\n }\n this._change.complete();\n }\n /** Returns the viewport's width and height. */\n getViewportSize() {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n const output = { width: this._viewportSize.width, height: this._viewportSize.height };\n // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n if (!this._platform.isBrowser) {\n this._viewportSize = null;\n }\n return output;\n }\n /** Gets a ClientRect for the viewport's bounds. */\n getViewportRect() {\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const scrollPosition = this.getViewportScrollPosition();\n const { width, height } = this.getViewportSize();\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width,\n };\n }\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition() {\n // While we can get a reference to the fake document\n // during SSR, it doesn't have getBoundingClientRect.\n if (!this._platform.isBrowser) {\n return { top: 0, left: 0 };\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const document = this._document;\n const window = this._getWindow();\n const documentElement = document.documentElement;\n const documentRect = documentElement.getBoundingClientRect();\n const top = -documentRect.top ||\n document.body.scrollTop ||\n window.scrollY ||\n documentElement.scrollTop ||\n 0;\n const left = -documentRect.left ||\n document.body.scrollLeft ||\n window.scrollX ||\n documentElement.scrollLeft ||\n 0;\n return { top, left };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * This stream emits outside of the Angular zone.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Updates the cached viewport size. */\n _updateViewportSize() {\n const window = this._getWindow();\n this._viewportSize = this._platform.isBrowser\n ? { width: window.innerWidth, height: window.innerHeight }\n : { width: 0, height: 0 };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ViewportRuler, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ViewportRuler, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ViewportRuler, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\nconst VIRTUAL_SCROLLABLE = new InjectionToken('VIRTUAL_SCROLLABLE');\n/**\n * Extending the {@link CdkScrollable} to be used as scrolling container for virtual scrolling.\n */\nclass CdkVirtualScrollable extends CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n /**\n * Measure the viewport size for the provided orientation.\n *\n * @param orientation The orientation to measure the size from.\n */\n measureViewportSize(orientation) {\n const viewportEl = this.elementRef.nativeElement;\n return orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkVirtualScrollable, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkVirtualScrollable, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkVirtualScrollable, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; } });\n\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkVirtualScrollable {\n /** The direction the viewport scrolls. */\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation) {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n /**\n * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n * will be removed.\n */\n get appendOnly() {\n return this._appendOnly;\n }\n set appendOnly(value) {\n this._appendOnly = coerceBooleanProperty(value);\n }\n constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler, scrollable) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n this.scrollable = scrollable;\n this._platform = inject(Platform);\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n this._detachedSubject = new Subject();\n /** Emits when the rendered range changes. */\n this._renderedRangeSubject = new Subject();\n this._orientation = 'vertical';\n this._appendOnly = false;\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n this.scrolledIndexChange = new Observable((observer) => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n /** A stream that emits whenever the rendered range changes. */\n this.renderedRangeStream = this._renderedRangeSubject;\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n this._totalContentSize = 0;\n /** A string representing the `style.width` property value to be used for the spacer element. */\n this._totalContentWidth = '';\n /** A string representing the `style.height` property value to be used for the spacer element. */\n this._totalContentHeight = '';\n /** The currently rendered range of indices. */\n this._renderedRange = { start: 0, end: 0 };\n /** The length of the data bound to this viewport (in number of items). */\n this._dataLength = 0;\n /** The size of the viewport (in pixels). */\n this._viewportSize = 0;\n /** The last rendered content offset that was set. */\n this._renderedContentOffset = 0;\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n this._renderedContentOffsetNeedsRewrite = false;\n /** Whether there is a pending change detection cycle. */\n this._isChangeDetectionPending = false;\n /** A list of functions to run after the next change detection cycle. */\n this._runAfterChangeDetection = [];\n /** Subscription to changes in the viewport size. */\n this._viewportChanges = Subscription.EMPTY;\n if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n if (!this.scrollable) {\n // No scrollable is provided, so the virtual-scroll-viewport needs to become a scrollable\n this.elementRef.nativeElement.classList.add('cdk-virtual-scrollable');\n this.scrollable = this;\n }\n }\n ngOnInit() {\n // Scrolling depends on the element dimensions which we can't get during SSR.\n if (!this._platform.isBrowser) {\n return;\n }\n if (this.scrollable === this) {\n super.ngOnInit();\n }\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this);\n this.scrollable\n .elementScrolled()\n .pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null), \n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER), \n // Usually `elementScrolled` is completed when the scrollable is destroyed, but\n // that may not be the case if a `CdkVirtualScrollableElement` is used so we have\n // to unsubscribe here just in case.\n takeUntil(this._destroyed))\n .subscribe(() => this._scrollStrategy.onContentScrolled());\n this._markChangeDetectionNeeded();\n }));\n }\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n super.ngOnDestroy();\n }\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength() {\n return this._dataLength;\n }\n /** Gets the size of the viewport (in pixels). */\n getViewportSize() {\n return this._viewportSize;\n }\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n /** Get the current rendered range of items. */\n getRenderedRange() {\n return this._renderedRange;\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range) {\n if (!rangesEqual(this._renderedRange, range)) {\n if (this.appendOnly) {\n range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n }\n this._renderedRangeSubject.next((this._renderedRange = range));\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart() {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset, to = 'to-start') {\n // In appendOnly, we always start from the top\n offset = this.appendOnly && to === 'to-start' ? 0 : offset;\n // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n // in the negative direction.\n const isRtl = this.dir && this.dir.value == 'rtl';\n const isHorizontal = this.orientation == 'horizontal';\n const axis = isHorizontal ? 'X' : 'Y';\n const axisDirection = isHorizontal && isRtl ? -1 : 1;\n let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n this._renderedContentOffset = offset;\n if (to === 'to-end') {\n transform += ` translate${axis}(-100%)`;\n // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n // expand upward).\n this._renderedContentOffsetNeedsRewrite = true;\n }\n if (this._renderedContentTransform != transform) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = transform;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n }\n else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset, behavior = 'auto') {\n const options = { behavior };\n if (this.orientation === 'horizontal') {\n options.start = offset;\n }\n else {\n options.top = offset;\n }\n this.scrollable.scrollTo(options);\n }\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index, behavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n /**\n * Gets the current scroll offset from the start of the scrollable (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n measureScrollOffset(from) {\n // This is to break the call cycle\n let measureScrollOffset;\n if (this.scrollable == this) {\n measureScrollOffset = (_from) => super.measureScrollOffset(_from);\n }\n else {\n measureScrollOffset = (_from) => this.scrollable.measureScrollOffset(_from);\n }\n return Math.max(0, measureScrollOffset(from ?? (this.orientation === 'horizontal' ? 'start' : 'top')) -\n this.measureViewportOffset());\n }\n /**\n * Measures the offset of the viewport from the scrolling container\n * @param from The edge to measure from.\n */\n measureViewportOffset(from) {\n let fromRect;\n const LEFT = 'left';\n const RIGHT = 'right';\n const isRtl = this.dir?.value == 'rtl';\n if (from == 'start') {\n fromRect = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n fromRect = isRtl ? LEFT : RIGHT;\n }\n else if (from) {\n fromRect = from;\n }\n else {\n fromRect = this.orientation === 'horizontal' ? 'left' : 'top';\n }\n const scrollerClientRect = this.scrollable.measureBoundingClientRectWithScrollOffset(fromRect);\n const viewportClientRect = this.elementRef.nativeElement.getBoundingClientRect()[fromRect];\n return viewportClientRect - scrollerClientRect;\n }\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize() {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range) {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n /** Measure the viewport size. */\n _measureViewportSize() {\n this._viewportSize = this.scrollable.measureViewportSize(this.orientation);\n }\n /** Queue up change detection to run. */\n _markChangeDetectionNeeded(runAfter) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._doChangeDetection();\n }));\n }\n }\n /** Run change detection. */\n _doChangeDetection() {\n this._isChangeDetectionPending = false;\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n _calculateSpacerSize() {\n this._totalContentHeight =\n this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth =\n this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkVirtualScrollViewport, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: VIRTUAL_SCROLL_STRATEGY, optional: true }, { token: i2.Directionality, optional: true }, { token: ScrollDispatcher }, { token: ViewportRuler }, { token: VIRTUAL_SCROLLABLE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkVirtualScrollViewport, isStandalone: true, selector: \"cdk-virtual-scroll-viewport\", inputs: { orientation: \"orientation\", appendOnly: \"appendOnly\" }, outputs: { scrolledIndexChange: \"scrolledIndexChange\" }, host: { properties: { \"class.cdk-virtual-scroll-orientation-horizontal\": \"orientation === \\\"horizontal\\\"\", \"class.cdk-virtual-scroll-orientation-vertical\": \"orientation !== \\\"horizontal\\\"\" }, classAttribute: \"cdk-virtual-scroll-viewport\" }, providers: [\n {\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport],\n },\n ], viewQueries: [{ propertyName: \"_contentWrapper\", first: true, predicate: [\"contentWrapper\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<!--\\n Wrap the rendered content in an element that will be used to offset it based on the scroll\\n position.\\n-->\\n<div #contentWrapper class=\\\"cdk-virtual-scroll-content-wrapper\\\">\\n <ng-content></ng-content>\\n</div>\\n<!--\\n Spacer used to force the scrolling container to the correct size for the *total* number of items\\n so that the scrollbar captures the size of the entire data set.\\n-->\\n<div class=\\\"cdk-virtual-scroll-spacer\\\"\\n [style.width]=\\\"_totalContentWidth\\\" [style.height]=\\\"_totalContentHeight\\\"></div>\\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkVirtualScrollViewport, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-virtual-scroll-viewport', host: {\n 'class': 'cdk-virtual-scroll-viewport',\n '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, providers: [\n {\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport],\n },\n ], template: \"<!--\\n Wrap the rendered content in an element that will be used to offset it based on the scroll\\n position.\\n-->\\n<div #contentWrapper class=\\\"cdk-virtual-scroll-content-wrapper\\\">\\n <ng-content></ng-content>\\n</div>\\n<!--\\n Spacer used to force the scrolling container to the correct size for the *total* number of items\\n so that the scrollbar captures the size of the entire data set.\\n-->\\n<div class=\\\"cdk-virtual-scroll-spacer\\\"\\n [style.width]=\\\"_totalContentWidth\\\" [style.height]=\\\"_totalContentHeight\\\"></div>\\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLL_STRATEGY]\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: ScrollDispatcher }, { type: ViewportRuler }, { type: CdkVirtualScrollable, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLLABLE]\n }] }]; }, propDecorators: { orientation: [{\n type: Input\n }], appendOnly: [{\n type: Input\n }], scrolledIndexChange: [{\n type: Output\n }], _contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: true }]\n }] } });\n\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n const el = node;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n /** The DataSource to display. */\n get cdkVirtualForOf() {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n }\n else {\n // If value is an an NgIterable, convert it to an array.\n this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n /**\n * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n * the item and produces a value to be used as the item's identity when tracking changes.\n */\n get cdkVirtualForTrackBy() {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn\n ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)\n : undefined;\n }\n /** The template used to stamp out new elements. */\n set cdkVirtualForTemplate(value) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\n }\n /**\n * The size of the cache used to store templates that are not being used for re-use later.\n * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n */\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n constructor(\n /** The view container to add items to. */\n _viewContainerRef, \n /** The template to use when stamping out new items. */\n _template, \n /** The set of available differs. */\n _differs, \n /** The strategy used to render items in the virtual scroll viewport. */\n _viewRepeater, \n /** The virtual scrolling viewport that these items are being rendered in. */\n _viewport, ngZone) {\n this._viewContainerRef = _viewContainerRef;\n this._template = _template;\n this._differs = _differs;\n this._viewRepeater = _viewRepeater;\n this._viewport = _viewport;\n /** Emits when the rendered view of the data changes. */\n this.viewChange = new Subject();\n /** Subject that emits when a new DataSource instance is given. */\n this._dataSourceChanges = new Subject();\n /** Emits whenever the data in the current DataSource changes. */\n this.dataStream = this._dataSourceChanges.pipe(\n // Start off with null `DataSource`.\n startWith(null), \n // Bundle up the previous and current data sources so we can work with both.\n pairwise(), \n // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current `DataSource` is.\n switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), \n // Replay the last emitted data when someone subscribes.\n shareReplay(1));\n /** The differ used to calculate changes to the data. */\n this._differ = null;\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n this._needsUpdate = false;\n this._destroyed = new Subject();\n this.dataStream.subscribe(data => {\n this._data = data;\n this._onRenderedDataChange();\n });\n this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n this._renderedRange = range;\n if (this.viewChange.observers.length) {\n ngZone.run(() => this.viewChange.next(this._renderedRange));\n }\n this._onRenderedDataChange();\n });\n this._viewport.attach(this);\n }\n /**\n * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n * in the specified range. Throws an error if the range includes items that are not currently\n * rendered.\n */\n measureRangeSize(range, orientation) {\n if (range.start >= range.end) {\n return 0;\n }\n if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Error: attempted to measure an item that isn't rendered.`);\n }\n // The index into the list of rendered views for the first item in the range.\n const renderedStartIndex = range.start - this._renderedRange.start;\n // The length of the range we're measuring.\n const rangeLen = range.end - range.start;\n // Loop over all the views, find the first and land node and compute the size by subtracting\n // the top of the first node from the bottom of the last one.\n let firstNode;\n let lastNode;\n // Find the first node by starting from the beginning and going forwards.\n for (let i = 0; i < rangeLen; i++) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\n }\n // Find the last node by starting from the end and going backwards.\n for (let i = rangeLen - 1; i > -1; i--) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n return firstNode && lastNode\n ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)\n : 0;\n }\n ngDoCheck() {\n if (this._differ && this._needsUpdate) {\n // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n // changing (need to do this diff).\n const changes = this._differ.diff(this._renderedItems);\n if (!changes) {\n this._updateContext();\n }\n else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n ngOnDestroy() {\n this._viewport.detach();\n this._dataSourceChanges.next(undefined);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n /** React to scroll state changes in the viewport. */\n _onRenderedDataChange() {\n if (!this._renderedRange) {\n return;\n }\n this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n if (!this._differ) {\n // Use a wrapper function for the `trackBy` so any new values are\n // picked up automatically without having to recreate the differ.\n this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n });\n }\n this._needsUpdate = true;\n }\n /** Swap out one `DataSource` for another. */\n _changeDataSource(oldDs, newDs) {\n if (oldDs) {\n oldDs.disconnect(this);\n }\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : of();\n }\n /** Update the `CdkVirtualForOfContext` for all views. */\n _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n /** Apply changes to the DOM. */\n _applyChanges(changes) {\n this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange((record) => {\n const view = this._viewContainerRef.get(record.currentIndex);\n view.context.$implicit = record.item;\n });\n // Update the context variables on all items.\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n _updateComputedContextProperties(context) {\n context.first = context.index === 0;\n context.last = context.index === context.count - 1;\n context.even = context.index % 2 === 0;\n context.odd = !context.even;\n }\n _getEmbeddedViewArgs(record, index) {\n // Note that it's important that we insert the item directly at the proper index,\n // rather than inserting it and the moving it in place, because if there's a directive\n // on the same node that injects the `ViewContainerRef`, Angular will insert another\n // comment node which can throw off the move when it's being repeated for all items.\n return {\n templateRef: this._template,\n context: {\n $implicit: record.item,\n // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n cdkVirtualForOf: this._cdkVirtualForOf,\n index: -1,\n count: -1,\n first: false,\n last: false,\n odd: false,\n even: false,\n },\n index,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkVirtualForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: _VIEW_REPEATER_STRATEGY }, { token: CdkVirtualScrollViewport, skipSelf: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkVirtualForOf, isStandalone: true, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: { cdkVirtualForOf: \"cdkVirtualForOf\", cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\", cdkVirtualForTemplate: \"cdkVirtualForTemplate\", cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\" }, providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkVirtualForOf, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: i2$1._RecycleViewRepeaterStrategy, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: CdkVirtualScrollViewport, decorators: [{\n type: SkipSelf\n }] }, { type: i0.NgZone }]; }, propDecorators: { cdkVirtualForOf: [{\n type: Input\n }], cdkVirtualForTrackBy: [{\n type: Input\n }], cdkVirtualForTemplate: [{\n type: Input\n }], cdkVirtualForTemplateCacheSize: [{\n type: Input\n }] } });\n\n/**\n * Provides a virtual scrollable for the element it is attached to.\n */\nclass CdkVirtualScrollableElement extends CdkVirtualScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return (this.getElementRef().nativeElement.getBoundingClientRect()[from] -\n this.measureScrollOffset(from));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkVirtualScrollableElement, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkVirtualScrollableElement, isStandalone: true, selector: \"[cdkVirtualScrollingElement]\", host: { classAttribute: \"cdk-virtual-scrollable\" }, providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableElement }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkVirtualScrollableElement, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualScrollingElement]',\n providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableElement }],\n standalone: true,\n host: {\n 'class': 'cdk-virtual-scrollable',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Provides as virtual scrollable for the global / window scrollbar.\n */\nclass CdkVirtualScrollableWindow extends CdkVirtualScrollable {\n constructor(scrollDispatcher, ngZone, dir) {\n super(new ElementRef(document.documentElement), scrollDispatcher, ngZone, dir);\n this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(document, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer)));\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkVirtualScrollableWindow, deps: [{ token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkVirtualScrollableWindow, isStandalone: true, selector: \"cdk-virtual-scroll-viewport[scrollWindow]\", providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableWindow }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkVirtualScrollableWindow, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[scrollWindow]',\n providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableWindow }],\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; } });\n\nclass CdkScrollableModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkScrollableModule, imports: [CdkScrollable], exports: [CdkScrollable] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkScrollableModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkScrollableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkScrollable],\n imports: [CdkScrollable],\n }]\n }] });\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ScrollingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: ScrollingModule, imports: [BidiModule, CdkScrollableModule, CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement], exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ScrollingModule, imports: [BidiModule,\n CdkScrollableModule, BidiModule, CdkScrollableModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ScrollingModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n BidiModule,\n CdkScrollableModule,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement,\n ],\n exports: [\n BidiModule,\n CdkScrollableModule,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement,\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollable, CdkVirtualScrollableElement, CdkVirtualScrollableWindow, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLLABLE, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, Injectable, Optional, Inject, EventEmitter, ɵɵinject, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵstringify, Directive, Input, createNgModule, NgModuleRef, ɵRuntimeError, Host, Attribute, RendererStyleFlags2, untracked, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, NgModule, Version, ɵɵdefineInjectable, ɵformatRuntimeError, Renderer2, ElementRef, Injector, PLATFORM_ID, NgZone, numberAttribute, booleanAttribute, ɵunwrapSafeValue } from '@angular/core';\n\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * A DI Token representing the main rendering context.\n * In a browser and SSR this is the DOM Document.\n * When using SSR, that document is created by [Domino](https://github.com/angular/domino).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: () => inject(BrowserPlatformLocation) }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PlatformLocation, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform', useFactory: () => inject(BrowserPlatformLocation) }]\n }] });\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * @publicApi\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor() {\n super();\n this._doc = inject(DOCUMENT);\n this._location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this._location.href;\n }\n get protocol() {\n return this._location.protocol;\n }\n get hostname() {\n return this._location.hostname;\n }\n get port() {\n return this._location.port;\n }\n get pathname() {\n return this._location.pathname;\n }\n get search() {\n return this._location.search;\n }\n get hash() {\n return this._location.hash;\n }\n set pathname(newPath) {\n this._location.pathname = newPath;\n }\n pushState(state, title, url) {\n this._history.pushState(state, title, url);\n }\n replaceState(state, title, url) {\n this._history.replaceState(state, title, url);\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserPlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: () => new BrowserPlatformLocation() }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n useFactory: () => new BrowserPlatformLocation(),\n }]\n }], ctorParameters: function () { return []; } });\n\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * <code class=\"no-auto-link\">http://example.com#/foo</code>,\n * and `PathLocationStrategy` produces\n * <code class=\"no-auto-link\">http://example.com/foo</code> as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: () => inject(PathLocationStrategy) }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: () => inject(PathLocationStrategy) }]\n }] });\n/**\n * A predefined [DI token](guide/glossary#di-token) for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * @usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```typescript\n * import {NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you may provide a {@link APP_BASE_HREF}\n * or add a `<base href>` element to the document to override the default.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,\n * the `<base href>` and/or `APP_BASE_HREF` should end with a `/`.\n *\n * Similarly, if you add `<base href='/my/app/'/>` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Note that when using `PathLocationStrategy`, neither the query nor\n * the fragment in the `<base href>` will be preserved, as outlined\n * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n this._removeListenerFns = [];\n this._baseHref = href ?? this._platformLocation.getBaseHrefFromDOM() ??\n inject(DOCUMENT).location?.origin ?? '';\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n prepareExternalUrl(internal) {\n return joinWithSlash(this._baseHref, internal);\n }\n path(includeHash = false) {\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n pushState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n replaceState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n getState() {\n return this._platformLocation.getState();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PathLocationStrategy, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PathLocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\n\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n this._removeListenerFns = [];\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n let path = this._platformLocation.hash;\n if (path == null)\n path = '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n prepareExternalUrl(internal) {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n pushState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n replaceState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n getState() {\n return this._platformLocation.getState();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HashLocationStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HashLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\n\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * <code-example path='common/location/ts/path_location_component.ts'\n * region='LocationComponent'></code-example>\n *\n * @publicApi\n */\nclass Location {\n constructor(locationStrategy) {\n /** @internal */\n this._subject = new EventEmitter();\n /** @internal */\n this._urlChangeListeners = [];\n /** @internal */\n this._urlChangeSubscription = null;\n this._locationStrategy = locationStrategy;\n const baseHref = this._locationStrategy.getBaseHref();\n // Note: This class's interaction with base HREF does not fully follow the rules\n // outlined in the spec https://www.freesoft.org/CIE/RFC/1808/18.htm.\n // Instead of trying to fix individual bugs with more and more code, we should\n // investigate using the URL constructor and providing the base as a second\n // argument.\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/URL#parameters\n this._basePath = _stripOrigin(stripTrailingSlash(_stripIndexHtml(baseHref)));\n this._locationStrategy.onPopState((ev) => {\n this._subject.emit({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n });\n }\n /** @nodoc */\n ngOnDestroy() {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeListeners = [];\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param includeHash True to include an anchor fragment in the path.\n *\n * @returns The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._locationStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState() {\n return this._locationStrategy.getState();\n }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param path The given URL path.\n * @param query Query parameters.\n *\n * @returns True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param url String representing a URL.\n *\n * @returns The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBasePath(this._basePath, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._locationStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n *\n */\n go(path, query = '', state = null) {\n this._locationStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n */\n replaceState(path, query = '', state = null) {\n this._locationStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n */\n forward() {\n this._locationStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._locationStrategy.back();\n }\n /**\n * Navigate to a specific page from session history, identified by its relative position to the\n * current page.\n *\n * @param relativePosition Position of the target page in the history relative to the current\n * page.\n * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`\n * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go\n * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs\n * when `relativePosition` equals 0.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history\n */\n historyGo(relativePosition = 0) {\n this._locationStrategy.historyGo?.(relativePosition);\n }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param fn The change handler function, which take a URL and a location history state.\n * @returns A function that, when executed, unregisters a URL change listener.\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n }\n return () => {\n const fnIndex = this._urlChangeListeners.indexOf(fn);\n this._urlChangeListeners.splice(fnIndex, 1);\n if (this._urlChangeListeners.length === 0) {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeSubscription = null;\n }\n };\n }\n /** @internal */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach(fn => fn(url, state));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * Note: `Location.go()` does not trigger the `popState` event in the browser. Use\n * `Location.onUrlChange()` to subscribe to URL changes instead.\n *\n * @param value Event that is triggered when the state history changes.\n * @param exception The exception to throw.\n *\n * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)\n *\n * @returns Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });\n }\n /**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\n static { this.normalizeQueryParams = normalizeQueryParams; }\n /**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\n static { this.joinWithSlash = joinWithSlash; }\n /**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\n static { this.stripTrailingSlash = stripTrailingSlash; }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Location, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n }]\n }], ctorParameters: function () { return [{ type: LocationStrategy }]; } });\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy));\n}\nfunction _stripBasePath(basePath, url) {\n if (!basePath || !url.startsWith(basePath)) {\n return url;\n }\n const strippedUrl = url.substring(basePath.length);\n if (strippedUrl === '' || ['/', ';', '?', '#'].includes(strippedUrl[0])) {\n return strippedUrl;\n }\n return url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\nfunction _stripOrigin(baseHref) {\n // DO NOT REFACTOR! Previously, this check looked like this:\n // `/^(https?:)?\\/\\//.test(baseHref)`, but that resulted in\n // syntactically incorrect code after Closure Compiler minification.\n // This was likely caused by a bug in Closure Compiler, but\n // for now, the check is rewritten to use `new RegExp` instead.\n const isAbsoluteUrl = (new RegExp('^(https?:)?//')).test(baseHref);\n if (isAbsoluteUrl) {\n const [, pathname] = baseHref.split(/\\/\\/[^\\/]+/);\n return pathname;\n }\n return baseHref;\n}\n\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, \"؋\", 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, \"֏\", 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"AZN\": [undefined, \"₼\"], \"BAM\": [undefined, \"KM\"], \"BBD\": [undefined, \"$\"], \"BDT\": [undefined, \"৳\"], \"BHD\": [undefined, undefined, 3], \"BIF\": [undefined, undefined, 0], \"BMD\": [undefined, \"$\"], \"BND\": [undefined, \"$\"], \"BOB\": [undefined, \"Bs\"], \"BRL\": [\"R$\"], \"BSD\": [undefined, \"$\"], \"BWP\": [undefined, \"P\"], \"BYN\": [undefined, undefined, 2], \"BYR\": [undefined, undefined, 0], \"BZD\": [undefined, \"$\"], \"CAD\": [\"CA$\", \"$\", 2], \"CHF\": [undefined, undefined, 2], \"CLF\": [undefined, undefined, 4], \"CLP\": [undefined, \"$\", 0], \"CNY\": [\"CN¥\", \"¥\"], \"COP\": [undefined, \"$\", 2], \"CRC\": [undefined, \"₡\", 2], \"CUC\": [undefined, \"$\"], \"CUP\": [undefined, \"$\"], \"CZK\": [undefined, \"Kč\", 2], \"DJF\": [undefined, undefined, 0], \"DKK\": [undefined, \"kr\", 2], \"DOP\": [undefined, \"$\"], \"EGP\": [undefined, \"E£\"], \"ESP\": [undefined, \"₧\", 0], \"EUR\": [\"€\"], \"FJD\": [undefined, \"$\"], \"FKP\": [undefined, \"£\"], \"GBP\": [\"£\"], \"GEL\": [undefined, \"₾\"], \"GHS\": [undefined, \"GH₵\"], \"GIP\": [undefined, \"£\"], \"GNF\": [undefined, \"FG\", 0], \"GTQ\": [undefined, \"Q\"], \"GYD\": [undefined, \"$\", 2], \"HKD\": [\"HK$\", \"$\"], \"HNL\": [undefined, \"L\"], \"HRK\": [undefined, \"kn\"], \"HUF\": [undefined, \"Ft\", 2], \"IDR\": [undefined, \"Rp\", 2], \"ILS\": [\"₪\"], \"INR\": [\"₹\"], \"IQD\": [undefined, undefined, 0], \"IRR\": [undefined, undefined, 0], \"ISK\": [undefined, \"kr\", 0], \"ITL\": [undefined, undefined, 0], \"JMD\": [undefined, \"$\"], \"JOD\": [undefined, undefined, 3], \"JPY\": [\"¥\", undefined, 0], \"KHR\": [undefined, \"៛\"], \"KMF\": [undefined, \"CF\", 0], \"KPW\": [undefined, \"₩\", 0], \"KRW\": [\"₩\", undefined, 0], \"KWD\": [undefined, undefined, 3], \"KYD\": [undefined, \"$\"], \"KZT\": [undefined, \"₸\"], \"LAK\": [undefined, \"₭\", 0], \"LBP\": [undefined, \"L£\", 0], \"LKR\": [undefined, \"Rs\"], \"LRD\": [undefined, \"$\"], \"LTL\": [undefined, \"Lt\"], \"LUF\": [undefined, undefined, 0], \"LVL\": [undefined, \"Ls\"], \"LYD\": [undefined, undefined, 3], \"MGA\": [undefined, \"Ar\", 0], \"MGF\": [undefined, undefined, 0], \"MMK\": [undefined, \"K\", 0], \"MNT\": [undefined, \"₮\", 2], \"MRO\": [undefined, undefined, 0], \"MUR\": [undefined, \"Rs\", 2], \"MXN\": [\"MX$\", \"$\"], \"MYR\": [undefined, \"RM\"], \"NAD\": [undefined, \"$\"], \"NGN\": [undefined, \"₦\"], \"NIO\": [undefined, \"C$\"], \"NOK\": [undefined, \"kr\", 2], \"NPR\": [undefined, \"Rs\"], \"NZD\": [\"NZ$\", \"$\"], \"OMR\": [undefined, undefined, 3], \"PHP\": [\"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLE\": [undefined, undefined, 2], \"SLL\": [undefined, undefined, 0], \"SOS\": [undefined, undefined, 0], \"SRD\": [undefined, \"$\"], \"SSP\": [undefined, \"£\"], \"STD\": [undefined, undefined, 0], \"STN\": [undefined, \"Db\"], \"SYP\": [undefined, \"£\", 0], \"THB\": [undefined, \"฿\"], \"TMM\": [undefined, undefined, 0], \"TND\": [undefined, undefined, 3], \"TOP\": [undefined, \"T$\"], \"TRL\": [undefined, undefined, 0], \"TRY\": [undefined, \"₺\"], \"TTD\": [undefined, \"$\"], \"TWD\": [\"NT$\", \"$\", 2], \"TZS\": [undefined, undefined, 2], \"UAH\": [undefined, \"₴\"], \"UGX\": [undefined, undefined, 0], \"USD\": [\"$\"], \"UYI\": [undefined, undefined, 0], \"UYU\": [undefined, \"$\"], \"UYW\": [undefined, undefined, 4], \"UZS\": [undefined, undefined, 2], \"VEF\": [undefined, \"Bs\", 2], \"VND\": [\"₫\", undefined, 0], \"VUV\": [undefined, undefined, 0], \"XAF\": [\"FCFA\", undefined, 0], \"XCD\": [\"EC$\", \"$\"], \"XOF\": [\"F CFA\", undefined, 0], \"XPF\": [\"CFPF\", undefined, 0], \"XXX\": [\"¤\"], \"YER\": [undefined, undefined, 0], \"ZAR\": [undefined, \"R\"], \"ZMK\": [undefined, undefined, 0], \"ZMW\": [undefined, \"ZK\"], \"ZWD\": [undefined, undefined, 0] };\n\n/**\n * Format styles that can be used to represent numbers.\n * @see {@link getLocaleNumberFormat}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see {@link NgPlural}\n * @see {@link NgPluralCase}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see {@link getLocaleDateFormat}\n * @see {@link getLocaleTimeFormat}\n * @see {@link getLocaleDateTimeFormat}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n * @publicApi\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see {@link getLocaleNumberSymbol}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberSymbol;\n(function (NumberSymbol) {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n NumberSymbol[NumberSymbol[\"Decimal\"] = 0] = \"Decimal\";\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n NumberSymbol[NumberSymbol[\"Group\"] = 1] = \"Group\";\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n NumberSymbol[NumberSymbol[\"List\"] = 2] = \"List\";\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n NumberSymbol[NumberSymbol[\"PercentSign\"] = 3] = \"PercentSign\";\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n NumberSymbol[NumberSymbol[\"PlusSign\"] = 4] = \"PlusSign\";\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n NumberSymbol[NumberSymbol[\"MinusSign\"] = 5] = \"MinusSign\";\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n NumberSymbol[NumberSymbol[\"Exponential\"] = 6] = \"Exponential\";\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n NumberSymbol[NumberSymbol[\"SuperscriptingExponent\"] = 7] = \"SuperscriptingExponent\";\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n NumberSymbol[NumberSymbol[\"PerMille\"] = 8] = \"PerMille\";\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n NumberSymbol[NumberSymbol[\"Infinity\"] = 9] = \"Infinity\";\n /**\n * Not a number.\n * Example: NaN\n */\n NumberSymbol[NumberSymbol[\"NaN\"] = 10] = \"NaN\";\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n NumberSymbol[NumberSymbol[\"TimeSeparator\"] = 11] = \"TimeSeparator\";\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyDecimal\"] = 12] = \"CurrencyDecimal\";\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyGroup\"] = 13] = \"CurrencyGroup\";\n})(NumberSymbol || (NumberSymbol = {}));\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see {@link FormatWidth}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see {@link FormatWidth}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n\n * @publicApi\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see {@link FormatWidth}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize.\n * @returns The character for the localized symbol.\n * @see {@link NumberSymbol}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * <b>Important:</b> The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see {@link NumberFormatStyle}\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see {@link getLocaleExtraDayPeriods}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ɵExtraLocaleDataIndex.ExtraDayPeriodsRules */] || [];\n return rules.map((rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns The translated day-period strings.\n * @see {@link getLocaleExtraDayPeriodRules}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ɵExtraLocaleDataIndex.ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ɵExtraLocaleDataIndex.ExtraDayPeriodStandalone */]\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the writing direction of a specified locale\n * @param locale A locale code for the locale format rules to use.\n * @publicApi\n * @returns 'rtl' or 'ltr'\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* ɵCurrencyIndex.SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* ɵCurrencyIndex.Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @param code The currency code.\n * @returns The number of decimal digits, typically 0 or 2.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* ɵCurrencyIndex.NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\nconst ISO8601_DATE_REGEX = /^(\\d{4,})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see {@link DatePipe}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach(value => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ? dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' :\n value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n });\n return text;\n}\n/**\n * Create a new Date object with the given date value, and the time set to midnight.\n *\n * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.\n * See: https://github.com/angular/angular/issues/40377\n *\n * Note that this function returns a Date object whose time is midnight in the current locale's\n * timezone. In the future we might want to change this to be midnight in UTC, but this would be a\n * considerable breaking change.\n */\nfunction createDate(year, month, date) {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n return newDate;\n}\nfunction getNamedFormat(locale, format) {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n const shortTime = getNamedFormat(locale, 'shortTime');\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);\n break;\n case 'medium':\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);\n break;\n case 'long':\n const longTime = getNamedFormat(locale, 'longTime');\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);\n break;\n case 'full':\n const fullTime = getNamedFormat(locale, 'fullTime');\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, function (match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] : match;\n });\n }\n return str;\n}\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.slice(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substring(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return function (date, locale) {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n const currentHours = date.getHours();\n const currentMinutes = date.getMinutes();\n if (extended) {\n const rules = getLocaleExtraDayPeriodRules(locale);\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n const index = rules.findIndex(rule => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const [from, to] = rule;\n const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;\n const beforeTo = (currentHours < to.hours ||\n (currentHours === to.hours && currentMinutes < to.minutes));\n // We must account for normal rules that span a period during the day (e.g. 6am-9am)\n // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.\n // 10pm - 5am) where `from` is greater (later!) than `to`.\n //\n // In the first case the current time must be BOTH after `from` AND before `to`\n // (e.g. 8am is after 6am AND before 10am).\n //\n // In the second case the current time must be EITHER after `from` OR before `to`\n // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is\n // after 10pm).\n if (from.hours < to.hours) {\n if (afterFrom && beforeTo) {\n return true;\n }\n }\n else if (afterFrom || beforeTo) {\n return true;\n }\n }\n else { // noon or midnight\n if (rule.hours === currentHours && rule.minutes === currentMinutes) {\n return true;\n }\n }\n return false;\n });\n if (index !== -1) {\n return dayPeriods[index];\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n */\nfunction timeZoneGetter(width) {\n return function (date, locale, offset) {\n const zone = -1 * offset;\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.ShortGMT:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n };\n}\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\nfunction getThursdayThisWeek(datetime) {\n return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\nfunction weekGetter(size, monthBased = false) {\n return function (date, locale) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n const thisThurs = getThursdayThisWeek(date);\n // Some days of a year are part of next year according to ISO 8601.\n // Compute the firstThurs from the year of this week's Thursday\n const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size, trim = false) {\n return function (date, locale) {\n const thisThurs = getThursdayThisWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'Y':\n formatter = weekNumberingYearGetter(1);\n break;\n // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD\n // 2010 => 10)\n case 'YY':\n formatter = weekNumberingYearGetter(2, true);\n break;\n // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD\n // 2010 => 2010)\n case 'YYY':\n formatter = weekNumberingYearGetter(3);\n break;\n // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'YYYY':\n formatter = weekNumberingYearGetter(4);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)\n case 'c':\n case 'cc':\n formatter = dateGetter(DateType.Day, 1);\n break;\n case 'ccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'cccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'ccccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n case 'cccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter =\n dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n const reverseValue = reverse ? -1 : 1;\n const dateTimezoneOffset = date.getTimezoneOffset();\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = value.split('-').map((val) => +val);\n return createDate(y, m - 1, d);\n }\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value - parsedNb)) {\n return new Date(parsedNb);\n }\n let match;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n const date = new Date(value);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nfunction isoStringToDate(match) {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n const h = Number(match[4] || 0) - tzHour;\n const m = Number(match[5] || 0) - tzMin;\n const s = Number(match[6] || 0);\n // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)\n // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`\n // becomes `999ms`.\n const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see {@link formatNumber}\n * @see {@link DecimalPipe}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is suppressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim();\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted percentage value.\n *\n * @see {@link formatNumber}\n * @see {@link DecimalPipe}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.substring(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length, pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substring(0, pos).replace(/'/g, '');\n p.negSuf = negative.slice(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num) {\n let numStr = Math.abs(num) + '';\n let exponent = 0, digits, integerLen;\n let i, j, zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n let digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, roundAt = fractionSize + 1);\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight(function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @publicApi\n */\nclass NgLocalization {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocalization, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: (locale) => new NgLocaleLocalization(locale),\n deps: [LOCALE_ID],\n }]\n }] });\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n constructor(locale) {\n super();\n this.locale = locale;\n }\n getPluralCategory(value, locale) {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocaleLocalization }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocaleLocalization, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\nconst WS_REGEXP = /\\s+/;\nconst EMPTY_ARRAY = [];\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * <some-element [ngClass]=\"'first second'\">...</some-element>\n *\n * <some-element [ngClass]=\"['first', 'second']\">...</some-element>\n *\n * <some-element [ngClass]=\"{'first': true, 'second': true, 'third': false}\">...</some-element>\n *\n * <some-element [ngClass]=\"stringExp|arrayExp|objExp\">...</some-element>\n *\n * <some-element [ngClass]=\"{'class1 class2 class3' : true}\">...</some-element>\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n constructor(\n // leaving references to differs in place since flex layout is extending NgClass...\n _iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this.initialClasses = EMPTY_ARRAY;\n this.stateMap = new Map();\n }\n set klass(value) {\n this.initialClasses = value != null ? value.trim().split(WS_REGEXP) : EMPTY_ARRAY;\n }\n set ngClass(value) {\n this.rawClass = typeof value === 'string' ? value.trim().split(WS_REGEXP) : value;\n }\n /*\n The NgClass directive uses the custom change detection algorithm for its inputs. The custom\n algorithm is necessary since inputs are represented as complex object or arrays that need to be\n deeply-compared.\n \n This algorithm is perf-sensitive since NgClass is used very frequently and its poor performance\n might negatively impact runtime performance of the entire change detection cycle. The design of\n this algorithm is making sure that:\n - there is no unnecessary DOM manipulation (CSS classes are added / removed from the DOM only when\n needed), even if references to bound objects change;\n - there is no memory allocation if nothing changes (even relatively modest memory allocation\n during the change detection cycle can result in GC pauses for some of the CD cycles).\n \n The algorithm works by iterating over the set of bound classes, staring with [class] binding and\n then going over [ngClass] binding. For each CSS class name:\n - check if it was seen before (this information is tracked in the state map) and if its value\n changed;\n - mark it as \"touched\" - names that are not marked are not present in the latest set of binding\n and we can remove such class name from the internal data structures;\n \n After iteration over all the CSS class names we've got data structure with all the information\n necessary to synchronize changes to the DOM - it is enough to iterate over the state map, flush\n changes to the DOM and reset internal data structures so those are ready for the next change\n detection cycle.\n */\n ngDoCheck() {\n // classes from the [class] binding\n for (const klass of this.initialClasses) {\n this._updateState(klass, true);\n }\n // classes from the [ngClass] binding\n const rawClass = this.rawClass;\n if (Array.isArray(rawClass) || rawClass instanceof Set) {\n for (const klass of rawClass) {\n this._updateState(klass, true);\n }\n }\n else if (rawClass != null) {\n for (const klass of Object.keys(rawClass)) {\n this._updateState(klass, Boolean(rawClass[klass]));\n }\n }\n this._applyStateDiff();\n }\n _updateState(klass, nextEnabled) {\n const state = this.stateMap.get(klass);\n if (state !== undefined) {\n if (state.enabled !== nextEnabled) {\n state.changed = true;\n state.enabled = nextEnabled;\n }\n state.touched = true;\n }\n else {\n this.stateMap.set(klass, { enabled: nextEnabled, changed: true, touched: true });\n }\n }\n _applyStateDiff() {\n for (const stateEntry of this.stateMap) {\n const klass = stateEntry[0];\n const state = stateEntry[1];\n if (state.changed) {\n this._toggleClass(klass, state.enabled);\n state.changed = false;\n }\n else if (!state.touched) {\n // A class that was previously active got removed from the new collection of classes -\n // remove from the DOM as well.\n if (state.enabled) {\n this._toggleClass(klass, false);\n }\n this.stateMap.delete(klass);\n }\n state.touched = false;\n }\n }\n _toggleClass(klass, enabled) {\n if (ngDevMode) {\n if (typeof klass !== 'string') {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(klass)}`);\n }\n }\n klass = klass.trim();\n if (klass.length > 0) {\n klass.split(WS_REGEXP).forEach(klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgClass, isStandalone: true, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgClass, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngClass]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.KeyValueDiffers }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] } });\n\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInputs`: Optional component inputs object, which will be bind to the\n * component.\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `ngComponentOutletNgModule`: Optional NgModule class reference to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * * `ngComponentOutletNgModuleFactory`: Deprecated config option that allows providing optional\n * NgModule factory to allow loading another module dynamically, then loading a component from that\n * module. Use `ngComponentOutletNgModule` instead.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * <ng-container *ngComponentOutlet=\"componentTypeExpression\"></ng-container>\n * ```\n *\n * With inputs\n * ```\n * <ng-container *ngComponentOutlet=\"componentTypeExpression;\n * inputs: inputsExpression;\">\n * </ng-container>\n * ```\n *\n * Customized injector/content\n * ```\n * <ng-container *ngComponentOutlet=\"componentTypeExpression;\n * injector: injectorExpression;\n * content: contentNodesExpression;\">\n * </ng-container>\n * ```\n *\n * Customized NgModule reference\n * ```\n * <ng-container *ngComponentOutlet=\"componentTypeExpression;\n * ngModule: ngModuleClass;\">\n * </ng-container>\n * ```\n *\n * ### A simple example\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * @publicApi\n * @ngModule CommonModule\n */\nclass NgComponentOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this.ngComponentOutlet = null;\n /**\n * A helper data structure that allows us to track inputs that were part of the\n * ngComponentOutletInputs expression. Tracking inputs is necessary for proper removal of ones\n * that are no longer referenced.\n */\n this._inputsUsed = new Map();\n }\n _needToReCreateNgModuleInstance(changes) {\n // Note: square brackets property accessor is safe for Closure compiler optimizations (the\n // `changes` argument of the `ngOnChanges` lifecycle hook retains the names of the fields that\n // were changed).\n return changes['ngComponentOutletNgModule'] !== undefined ||\n changes['ngComponentOutletNgModuleFactory'] !== undefined;\n }\n _needToReCreateComponentInstance(changes) {\n // Note: square brackets property accessor is safe for Closure compiler optimizations (the\n // `changes` argument of the `ngOnChanges` lifecycle hook retains the names of the fields that\n // were changed).\n return changes['ngComponentOutlet'] !== undefined ||\n changes['ngComponentOutletContent'] !== undefined ||\n changes['ngComponentOutletInjector'] !== undefined ||\n this._needToReCreateNgModuleInstance(changes);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this._needToReCreateComponentInstance(changes)) {\n this._viewContainerRef.clear();\n this._inputsUsed.clear();\n this._componentRef = undefined;\n if (this.ngComponentOutlet) {\n const injector = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;\n if (this._needToReCreateNgModuleInstance(changes)) {\n this._moduleRef?.destroy();\n if (this.ngComponentOutletNgModule) {\n this._moduleRef =\n createNgModule(this.ngComponentOutletNgModule, getParentInjector(injector));\n }\n else if (this.ngComponentOutletNgModuleFactory) {\n this._moduleRef =\n this.ngComponentOutletNgModuleFactory.create(getParentInjector(injector));\n }\n else {\n this._moduleRef = undefined;\n }\n }\n this._componentRef = this._viewContainerRef.createComponent(this.ngComponentOutlet, {\n injector,\n ngModuleRef: this._moduleRef,\n projectableNodes: this.ngComponentOutletContent,\n });\n }\n }\n }\n /** @nodoc */\n ngDoCheck() {\n if (this._componentRef) {\n if (this.ngComponentOutletInputs) {\n for (const inputName of Object.keys(this.ngComponentOutletInputs)) {\n this._inputsUsed.set(inputName, true);\n }\n }\n this._applyInputStateDiff(this._componentRef);\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n this._moduleRef?.destroy();\n }\n _applyInputStateDiff(componentRef) {\n for (const [inputName, touched] of this._inputsUsed) {\n if (!touched) {\n // The input that was previously active no longer exists and needs to be set to undefined.\n componentRef.setInput(inputName, undefined);\n this._inputsUsed.delete(inputName);\n }\n else {\n // Since touched is true, it can be asserted that the inputs object is not empty.\n componentRef.setInput(inputName, this.ngComponentOutletInputs[inputName]);\n this._inputsUsed.set(inputName, false);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgComponentOutlet, isStandalone: true, selector: \"[ngComponentOutlet]\", inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInputs: \"ngComponentOutletInputs\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModule: \"ngComponentOutletNgModule\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgComponentOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngComponentOutlet]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInputs: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModule: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] } });\n// Helper function that returns an Injector instance of a parent NgModule.\nfunction getParentInjector(injector) {\n const parentNgModule = injector.get(NgModuleRef);\n return parentNgModule.injector;\n}\n\n/**\n * @publicApi\n */\nclass NgForOfContext {\n constructor($implicit, ngForOf, index, count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n get first() {\n return this.index === 0;\n }\n get last() {\n return this.index === this.count - 1;\n }\n get even() {\n return this.index % 2 === 0;\n }\n get odd() {\n return !this.even;\n }\n}\n/**\n * A [structural directive](guide/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `<li>` element.\n *\n * ```\n * <li *ngFor=\"let item of items; index as i; trackBy: trackByFn\">...</li>\n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `<ng-template>` element.\n * The content of the `<ng-template>` element is the `<li>` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```\n * <ng-template ngFor let-item [ngForOf]=\"items\" let-i=\"index\" [ngForTrackBy]=\"trackByFn\">\n * <li>...</li>\n * </ng-template>\n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/structural-directives#one-per-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For further discussion, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```\n * <li *ngFor=\"let user of users; index as i; first as isFirst\">\n * {{i}}/{{users.length}}. {{user}} <span *ngIf=\"isFirst\">default</span>\n * </li>\n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable<T>`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `count: number`: The length of the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `<input>` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/structural-directives)\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgForOf {\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see {@link TrackByFunction}\n */\n set ngForTrackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef<Partial<NgForRowOf<T>>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n * @nodoc\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n const value = this._ngForOf;\n if (!this._differ && value) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n try {\n // CAUTION: this logic is duplicated for production mode below, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch {\n let errorMessage = `Cannot find a differ supporting object '${value}' of type '` +\n `${getTypeName(value)}'. NgFor only supports binding to Iterables, such as Arrays.`;\n if (typeof value === 'object') {\n errorMessage += ' Did you mean to use the keyvalue pipe?';\n }\n throw new ɵRuntimeError(-2200 /* RuntimeErrorCode.NG_FOR_MISSING_DIFFER */, errorMessage);\n }\n }\n else {\n // CAUTION: this logic is duplicated for development mode above, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n }\n }\n if (this._differ) {\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n const viewContainer = this._viewContainer;\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n viewContainer.createEmbeddedView(this._template, new NgForOfContext(item.item, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n applyViewChange(view, item);\n }\n });\n for (let i = 0, ilen = viewContainer.length; i < ilen; i++) {\n const viewRef = viewContainer.get(i);\n const context = viewRef.context;\n context.index = i;\n context.count = ilen;\n context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = viewContainer.get(record.currentIndex);\n applyViewChange(viewRef, record);\n });\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgForOf, isStandalone: true, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgForOf, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngFor][ngForOf]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] } });\nfunction applyViewChange(view, record) {\n view.context.$implicit = record.item;\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `<ng-template>` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n * <div *ngIf=\"condition\">Content to render when condition is true.</div>\n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n * <ng-template [ngIf]=\"condition\"><div>Content to render when condition is\n * true.</div></ng-template>\n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n * <div *ngIf=\"condition; else elseBlock\">Content to render when condition is true.</div>\n * <ng-template #elseBlock>Content to render when condition is false.</ng-template>\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n * <div *ngIf=\"condition; then thenBlock else elseBlock\"></div>\n * <ng-template #thenBlock>Content to render when condition is true.</ng-template>\n * <ng-template #elseBlock>Content to render when condition is false.</ng-template>\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n * <div *ngIf=\"condition as value; else elseBlock\">{{value}}</div>\n * <ng-template #elseBlock>Content to render when value is null.</ng-template>\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `<ng-template>` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `<ng-template>` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n * <div class=\"hero-list\" *ngIf=\"heroes else loading\">\n * ...\n * </div>\n *\n * <ng-template #loading>\n * <div>Loading...</div>\n * </ng-template>\n * ```\n *\n * You can see that the \"else\" clause references the `<ng-template>`\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `<ng-template>` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `<ng-template>` tag.\n *\n * ```\n * <ng-template [ngIf]=\"heroes\" [ngIfElse]=\"loading\">\n * <div class=\"hero-list\">\n * ...\n * </div>\n * </ng-template>\n *\n * <ng-template #loading>\n * <div>Loading...</div>\n * </ng-template>\n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgIf {\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._context = new NgIfContext();\n this._thenTemplateRef = null;\n this._elseTemplateRef = null;\n this._thenViewRef = null;\n this._elseViewRef = null;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef =\n this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef =\n this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgIf, isStandalone: true, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgIf, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngIf]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { ngIf: [{\n type: Input\n }], ngIfThen: [{\n type: Input\n }], ngIfElse: [{\n type: Input\n }] } });\n/**\n * @publicApi\n */\nclass NgIfContext {\n constructor() {\n this.$implicit = null;\n this.ngIf = null;\n }\n}\nfunction assertTemplate(property, templateRef) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\nclass SwitchView {\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * <container-element [ngSwitch]=\"switch_expression\">\n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * <container-element [ngSwitch]=\"switch_expression\">\n * <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>\n * ...\n * <some-element *ngSwitchDefault>...</some-element>\n * </container-element>\n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * <container-element [ngSwitch]=\"switch_expression\">\n * <!-- the same view can be shown in more than one case -->\n * <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>\n * <some-element *ngSwitchCase=\"match_expression_2\">...</some-element>\n * <some-other-element *ngSwitchCase=\"match_expression_3\">...</some-other-element>\n * <!--default case when there are no matches -->\n * <some-element *ngSwitchDefault>...</some-element>\n * </container-element>\n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * <container-element [ngSwitch]=\"switch_expression\">\n * <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>\n * <some-element *ngSwitchCase=\"match_expression_2\">...</some-element>\n * <some-other-element *ngSwitchCase=\"match_expression_3\">...</some-other-element>\n * <ng-container *ngSwitchCase=\"match_expression_3\">\n * <!-- use a ng-container to group multiple root nodes -->\n * <inner-element></inner-element>\n * <inner-other-element></inner-other-element>\n * </ng-container>\n * <some-element *ngSwitchDefault>...</some-element>\n * </container-element>\n * ```\n *\n * @publicApi\n * @see {@link NgSwitchCase}\n * @see {@link NgSwitchDefault}\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultViews = [];\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews.length > 0 && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (const defaultView of this._defaultViews) {\n defaultView.enforceState(useDefault);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgSwitch, isStandalone: true, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitch, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitch]',\n standalone: true,\n }]\n }], propDecorators: { ngSwitch: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * @usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * <container-element [ngSwitch]=\"switch_expression\">\n * <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>\n * ...\n * <some-element *ngSwitchDefault>...</some-element>\n * </container-element>\n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * Unlike JavaScript, which uses strict equality, Angular uses loose equality.\n * This means that the empty string, `\"\"` matches 0.\n *\n * @publicApi\n * @see {@link NgSwitch}\n * @see {@link NgSwitchDefault}\n *\n */\nclass NgSwitchCase {\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n * @nodoc\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgSwitchCase, isStandalone: true, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitchCase, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitchCase]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { ngSwitchCase: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * @publicApi\n * @see {@link NgSwitch}\n * @see {@link NgSwitchCase}\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgSwitchDefault, isStandalone: true, selector: \"[ngSwitchDefault]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitchDefault, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitchDefault]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; } });\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(2000 /* RuntimeErrorCode.PARENT_NG_SWITCH_NOT_FOUND */, `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\n}\n\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * <some-element [ngPlural]=\"value\">\n * <ng-template ngPluralCase=\"=0\">there is nothing</ng-template>\n * <ng-template ngPluralCase=\"=1\">there is one</ng-template>\n * <ng-template ngPluralCase=\"few\">there are a few</ng-template>\n * </some-element>\n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n set ngPlural(value) {\n this._updateView(value);\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView(switchValue) {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgPlural, isStandalone: true, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgPlural, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngPlural]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; }, propDecorators: { ngPlural: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that will be added/removed from the parent {@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * @usageNotes\n * ```\n * <some-element [ngPlural]=\"value\">\n * <ng-template ngPluralCase=\"=0\">...</ng-template>\n * <ng-template ngPluralCase=\"other\">...</ng-template>\n * </some-element>\n *```\n *\n * See {@link NgPlural} for more details and example.\n *\n * @publicApi\n */\nclass NgPluralCase {\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgPluralCase, isStandalone: true, selector: \"[ngPluralCase]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgPluralCase, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngPluralCase]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }]; } });\n\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * <some-element [ngStyle]=\"{'font-style': styleExp}\">...</some-element>\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * <some-element [ngStyle]=\"{'max-width.px': widthExp}\">...</some-element>\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * <some-element [ngStyle]=\"objExp\">...</some-element>\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.<unit>` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n const flags = name.indexOf('-') === -1 ? undefined : RendererStyleFlags2.DashCase;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, unit ? `${value}${unit}` : value, flags);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name, flags);\n }\n }\n _applyChanges(changes) {\n changes.forEachRemovedItem((record) => this._setStyle(record.key, null));\n changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgStyle, isStandalone: true, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgStyle, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngStyle]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] } });\n\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```\n * <ng-container *ngTemplateOutlet=\"templateRefExp; context: contextExp\"></ng-container>\n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n /** Injector to be used within the embedded view. */\n this.ngTemplateOutletInjector = null;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (changes['ngTemplateOutlet'] || changes['ngTemplateOutletInjector']) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n if (this.ngTemplateOutlet) {\n const { ngTemplateOutlet: template, ngTemplateOutletContext: context, ngTemplateOutletInjector: injector, } = this;\n this._viewRef =\n viewContainerRef.createEmbeddedView(template, context, injector ? { injector } : undefined);\n }\n else {\n this._viewRef = null;\n }\n }\n else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgTemplateOutlet, isStandalone: true, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\", ngTemplateOutletInjector: \"ngTemplateOutletInjector\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgTemplateOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngTemplateOutlet]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }], ngTemplateOutletInjector: [{\n type: Input\n }] } });\n\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\nfunction invalidPipeArgumentError(type, value) {\n return new ɵRuntimeError(2100 /* RuntimeErrorCode.INVALID_PIPE_ARGUMENT */, ngDevMode && `InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'`);\n}\n\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n // Subscription can be side-effectful, and we don't want any signal reads which happen in the\n // side effect of the subscription to be tracked by a component's template when that\n // subscription is triggered via the async pipe. So we wrap the subscription in `untracked` to\n // decouple from the current reactive context.\n //\n // `untracked` also prevents signal _writes_ which happen in the subscription side effect from\n // being treated as signal writes during the template evaluation (which throws errors).\n return untracked(() => async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n }));\n }\n dispose(subscription) {\n // See the comment in `createSubscription` above on the use of `untracked`.\n untracked(() => subscription.unsubscribe());\n }\n}\nclass PromiseStrategy {\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, e => {\n throw e;\n });\n }\n dispose(subscription) { }\n}\nconst _promiseStrategy = new PromiseStrategy();\nconst _subscribableStrategy = new SubscribableStrategy();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks. When the reference of the expression changes, the `async` pipe\n * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.\n *\n * @usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * @publicApi\n */\nclass AsyncPipe {\n constructor(ref) {\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = null;\n // Assign `ref` into `this._ref` manually instead of declaring `_ref` in the constructor\n // parameter list, as the type of `this._ref` includes `null` unlike the type of `ref`.\n this._ref = ref;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n // Clear the `ChangeDetectorRef` and its association with the view data, to mitigate\n // potential memory leaks in Observables that could otherwise cause the view data to\n // be retained.\n // https://github.com/angular/angular/issues/17624\n this._ref = null;\n }\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform(obj);\n }\n return this._latestValue;\n }\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (value) => this._updateLatestValue(obj, value));\n }\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisSubscribable(obj)) {\n return _subscribableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n _dispose() {\n // Note: `dispose` is only called if a subscription has been initialized before, indicating\n // that `this._strategy` is also available.\n this._strategy.dispose(this._subscription);\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n }\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n // Note: `this._ref` is only cleared in `ngOnDestroy` so is known to be available when a\n // value is being updated.\n this._ref.markForCheck();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: AsyncPipe, isStandalone: true, name: \"async\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AsyncPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'async',\n pure: false,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Transforms text to all lower case.\n *\n * @see {@link UpperCasePipe}\n * @see {@link TitleCasePipe}\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * <code-example path=\"common/pipes/ts/lowerupper_pipe.ts\" region='LowerUpperPipe'></code-example>\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: LowerCasePipe, isStandalone: true, name: \"lowercase\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LowerCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'lowercase',\n standalone: true,\n }]\n }] });\n//\n// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result\n// can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes\n// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1\n//\nconst unicodeWordMatch = /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see {@link LowerCasePipe}\n * @see {@link UpperCasePipe}\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * <code-example path=\"common/pipes/ts/titlecase_pipe.ts\" region='TitleCasePipe'></code-example>\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.slice(1).toLowerCase()));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: TitleCasePipe, isStandalone: true, name: \"titlecase\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: TitleCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'titlecase',\n standalone: true,\n }]\n }] });\n/**\n * Transforms text to all upper case.\n * @see {@link LowerCasePipe}\n * @see {@link TitleCasePipe}\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UpperCasePipe, isStandalone: true, name: \"uppercase\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UpperCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'uppercase',\n standalone: true,\n }]\n }] });\n\n/**\n * The default date format of Angular date pipe, which corresponds to the following format:\n * `'MMM d,y'` (e.g. `Jun 15, 2015`)\n */\nconst DEFAULT_DATE_FORMAT = 'mediumDate';\n\n/**\n * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).\n * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.\n *\n * @deprecated use DATE_PIPE_DEFAULT_OPTIONS token to configure DatePipe\n */\nconst DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken('DATE_PIPE_DEFAULT_TIMEZONE');\n/**\n * DI token that allows to provide default configuration for the `DatePipe` instances in an\n * application. The value is an object which can include the following fields:\n * - `dateFormat`: configures the default date format. If not provided, the `DatePipe`\n * will use the 'mediumDate' as a value.\n * - `timezone`: configures the default timezone. If not provided, the `DatePipe` will\n * use the end-user's local system timezone.\n *\n * @see {@link DatePipeConfig}\n *\n * @usageNotes\n *\n * Various date pipe default values can be overwritten by providing this token with\n * the value that has this interface.\n *\n * For example:\n *\n * Override the default date format by providing a value using the token:\n * ```typescript\n * providers: [\n * {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {dateFormat: 'shortDate'}}\n * ]\n * ```\n *\n * Override the default timezone by providing a value using the token:\n * ```typescript\n * providers: [\n * {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {timezone: '-1200'}}\n * ]\n * ```\n */\nconst DATE_PIPE_DEFAULT_OPTIONS = new InjectionToken('DATE_PIPE_DEFAULT_OPTIONS');\n// clang-format off\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date value according to locale rules.\n *\n * `DatePipe` is executed only when it detects a pure change to the input value.\n * A pure change is either a change to a primitive input value\n * (such as `String`, `Number`, `Boolean`, or `Symbol`),\n * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).\n *\n * Note that mutating a `Date` object does not cause the pipe to be rendered again.\n * To ensure that the pipe is executed, you must create a new `Date` object.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.\n *\n * The time zone of the formatted value can be specified either by passing it in as the second\n * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_OPTIONS`\n * injection token. The value that is passed in as the second parameter takes precedence over\n * the one defined using the injection token.\n *\n * @see {@link formatDate}\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * {{ dateObj | date:\"MMM dd, yyyy 'at' hh:mm a\" }} // output is 'Jun 15, 2015 at 09:43 PM'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * @Component({\n * selector: 'date-pipe',\n * template: `<div>\n * <p>Today is {{today | date}}</p>\n * <p>Or if you prefer, {{today | date:'fullDate'}}</p>\n * <p>The time is {{today | date:'h:mm a z'}}</p>\n * </div>`\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\n// clang-format on\nclass DatePipe {\n constructor(locale, defaultTimezone, defaultOptions) {\n this.locale = locale;\n this.defaultTimezone = defaultTimezone;\n this.defaultOptions = defaultOptions;\n }\n transform(value, format, timezone, locale) {\n if (value == null || value === '' || value !== value)\n return null;\n try {\n const _format = format ?? this.defaultOptions?.dateFormat ?? DEFAULT_DATE_FORMAT;\n const _timezone = timezone ?? this.defaultOptions?.timezone ?? this.defaultTimezone ?? undefined;\n return formatDate(value, _format, locale || this.locale, _timezone);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }, { token: DATE_PIPE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: DatePipe, isStandalone: true, name: \"date\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'date',\n pure: true,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_TIMEZONE]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_OPTIONS]\n }, {\n type: Optional\n }] }]; } });\n\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * https://unicode-org.github.io/icu/userguide/format_parse/messages/.\n * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by\n * default).\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nPluralPipe, isStandalone: true, name: \"i18nPlural\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nPluralPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'i18nPlural',\n pure: true,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; } });\n\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nSelectPipe, isStandalone: true, name: \"i18nSelect\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nSelectPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'i18nSelect',\n pure: true,\n standalone: true,\n }]\n }] });\n\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonPipe, isStandalone: true, name: \"json\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'json',\n pure: false,\n standalone: true,\n }]\n }] });\n\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n this.compareFn = defaultComparator;\n }\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n this.keyValues.sort(compareFn);\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: KeyValuePipe, isStandalone: true, name: \"keyvalue\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: KeyValuePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'keyvalue',\n pure: false,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }]; } });\nfunction defaultComparator(keyValueA, keyValueB) {\n const a = keyValueA.key;\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n const aString = String(a);\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see {@link formatNumber}\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:<br>\n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * <!--will output '4'-->\n *\n * {{-3.6 | number:'1.0-0'}}\n * <!--will output '-4'-->\n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n-common-locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * <code-example path=\"common/pipes/ts/number_pipe.ts\" region='NumberPipe'></code-example>\n *\n * @publicApi\n */\nclass DecimalPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param value The value to be formatted.\n * @param digitsInfo Sets digit and decimal representation.\n * [See more](#digitsinfo).\n * @param locale Specifies what locale format rules to use.\n * [See more](#locale).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: DecimalPipe, isStandalone: true, name: \"number\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DecimalPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'number',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see {@link formatPercent}\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * <code-example path=\"common/pipes/ts/percent_pipe.ts\" region='PercentPipe'></code-example>\n *\n * @publicApi\n */\nclass PercentPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:<br>\n * <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: PercentPipe, isStandalone: true, name: \"percent\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PercentPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'percent',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n *\n * @see {@link getCurrencySymbol}\n * @see {@link formatCurrency}\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * <code-example path=\"common/pipes/ts/currency_pipe.ts\" region='CurrencyPipe'></code-example>\n *\n * @publicApi\n */\nclass CurrencyPipe {\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param value The number to be formatted as currency.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:<br>\n * <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: CurrencyPipe, isStandalone: true, name: \"currency\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CurrencyPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'currency',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }]; } });\nfunction isValue(value) {\n return !(value == null || value === '' || value !== value);\n}\n/**\n * Transforms a string into a number (if needed).\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n * <li>b</li>\n * <li>c</li>\n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: SlicePipe, isStandalone: true, name: \"slice\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SlicePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'slice',\n pure: false,\n standalone: true,\n }]\n }] });\n\n/**\n * @module\n * @description\n * This module provides a set of common Pipes.\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * @publicApi\n */\nclass CommonModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonModule, imports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n }]\n }] });\n\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n * @deprecated This function serves no purpose since the removal of the Webworker platform. It will\n * always return `false`.\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n * @deprecated This function serves no purpose since the removal of the Webworker platform. It will\n * always return `false`.\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('16.2.12');\n\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n // De-sugared tree-shakable injection\n // See #23917\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n }); }\n}\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n constructor(document, window) {\n this.document = document;\n this.window = window;\n this.offset = () => [0, 0];\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n if (!this.supportsScrolling()) {\n return;\n }\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n //\n // @see https://html.spec.whatwg.org/#get-the-focusable-area\n // @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\n // @see https://html.spec.whatwg.org/#focusable-area\n elSelected.focus();\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportsScrolling()) {\n this.window.history.scrollRestoration = scrollRestoration;\n }\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch {\n return false;\n }\n }\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' && document.body &&\n typeof document.body.attachShadow === 'function') {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n// Converts a string that represents a URL into a URL class instance.\nfunction getUrl(src, win) {\n // Don't use a base URL is the URL is absolute.\n return isAbsoluteUrl(src) ? new URL(src) : new URL(src, win.location.href);\n}\n// Checks whether a URL is absolute (i.e. starts with `http://` or `https://`).\nfunction isAbsoluteUrl(src) {\n return /^https?:\\/\\//.test(src);\n}\n// Given a URL, extract the hostname part.\n// If a URL is a relative one - the URL is returned as is.\nfunction extractHostname(url) {\n return isAbsoluteUrl(url) ? (new URL(url)).hostname : url;\n}\nfunction isValidPath(path) {\n const isString = typeof path === 'string';\n if (!isString || path.trim() === '') {\n return false;\n }\n // Calling new URL() will throw if the path string is malformed\n try {\n const url = new URL(path);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction normalizePath(path) {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n}\nfunction normalizeSrc(src) {\n return src.startsWith('/') ? src.slice(1) : src;\n}\n\n/**\n * Noop image loader that does no transformation to the original src and just returns it as is.\n * This loader is used as a default one if more specific logic is not provided in an app config.\n *\n * @see {@link ImageLoader}\n * @see {@link NgOptimizedImage}\n */\nconst noopImageLoader = (config) => config.src;\n/**\n * Injection token that configures the image loader function.\n *\n * @see {@link ImageLoader}\n * @see {@link NgOptimizedImage}\n * @publicApi\n */\nconst IMAGE_LOADER = new InjectionToken('ImageLoader', {\n providedIn: 'root',\n factory: () => noopImageLoader,\n});\n/**\n * Internal helper function that makes it easier to introduce custom image loaders for the\n * `NgOptimizedImage` directive. It is enough to specify a URL builder function to obtain full DI\n * configuration for a given loader: a DI token corresponding to the actual loader function, plus DI\n * tokens managing preconnect check functionality.\n * @param buildUrlFn a function returning a full URL based on loader's configuration\n * @param exampleUrls example of full URLs for a given loader (used in error messages)\n * @returns a set of DI providers corresponding to the configured image loader\n */\nfunction createImageLoader(buildUrlFn, exampleUrls) {\n return function provideImageLoader(path) {\n if (!isValidPath(path)) {\n throwInvalidPathError(path, exampleUrls || []);\n }\n // The trailing / is stripped (if provided) to make URL construction (concatenation) easier in\n // the individual loader functions.\n path = normalizePath(path);\n const loaderFn = (config) => {\n if (isAbsoluteUrl(config.src)) {\n // Image loader functions expect an image file name (e.g. `my-image.png`)\n // or a relative path + a file name (e.g. `/a/b/c/my-image.png`) as an input,\n // so the final absolute URL can be constructed.\n // When an absolute URL is provided instead - the loader can not\n // build a final URL, thus the error is thrown to indicate that.\n throwUnexpectedAbsoluteUrlError(path, config.src);\n }\n return buildUrlFn(path, { ...config, src: normalizeSrc(config.src) });\n };\n const providers = [{ provide: IMAGE_LOADER, useValue: loaderFn }];\n return providers;\n };\n}\nfunction throwInvalidPathError(path, exampleUrls) {\n throw new ɵRuntimeError(2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected an invalid path (\\`${path}\\`). ` +\n `To fix this, supply a path using one of the following formats: ${exampleUrls.join(' or ')}`);\n}\nfunction throwUnexpectedAbsoluteUrlError(path, url) {\n throw new ɵRuntimeError(2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected a \\`<img>\\` tag with an invalid \\`ngSrc\\` attribute: ${url}. ` +\n `This image loader expects \\`ngSrc\\` to be a relative URL - ` +\n `however the provided value is an absolute URL. ` +\n `To fix this, provide \\`ngSrc\\` as a path relative to the base URL ` +\n `configured for this loader (\\`${path}\\`).`);\n}\n\n/**\n * Function that generates an ImageLoader for [Cloudflare Image\n * Resizing](https://developers.cloudflare.com/images/image-resizing/) and turns it into an Angular\n * provider. Note: Cloudflare has multiple image products - this provider is specifically for\n * Cloudflare Image Resizing; it will not work with Cloudflare Images or Cloudflare Polish.\n *\n * @param path Your domain name, e.g. https://mysite.com\n * @returns Provider that provides an ImageLoader function\n *\n * @publicApi\n */\nconst provideCloudflareLoader = createImageLoader(createCloudflareUrl, ngDevMode ? ['https://<ZONE>/cdn-cgi/image/<OPTIONS>/<SOURCE-IMAGE>'] : undefined);\nfunction createCloudflareUrl(path, config) {\n let params = `format=auto`;\n if (config.width) {\n params += `,width=${config.width}`;\n }\n // Cloudflare image URLs format:\n // https://developers.cloudflare.com/images/image-resizing/url-format/\n return `${path}/cdn-cgi/image/${params}/${config.src}`;\n}\n\n/**\n * Name and URL tester for Cloudinary.\n */\nconst cloudinaryLoaderInfo = {\n name: 'Cloudinary',\n testUrl: isCloudinaryUrl\n};\nconst CLOUDINARY_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.cloudinary\\.com\\/.+/;\n/**\n * Tests whether a URL is from Cloudinary CDN.\n */\nfunction isCloudinaryUrl(url) {\n return CLOUDINARY_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Cloudinary and turns it into an Angular provider.\n *\n * @param path Base URL of your Cloudinary images\n * This URL should match one of the following formats:\n * https://res.cloudinary.com/mysite\n * https://mysite.cloudinary.com\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the Cloudinary loader.\n *\n * @publicApi\n */\nconst provideCloudinaryLoader = createImageLoader(createCloudinaryUrl, ngDevMode ?\n [\n 'https://res.cloudinary.com/mysite', 'https://mysite.cloudinary.com',\n 'https://subdomain.mysite.com'\n ] :\n undefined);\nfunction createCloudinaryUrl(path, config) {\n // Cloudinary image URLformat:\n // https://cloudinary.com/documentation/image_transformations#transformation_url_structure\n // Example of a Cloudinary image URL:\n // https://res.cloudinary.com/mysite/image/upload/c_scale,f_auto,q_auto,w_600/marketing/tile-topics-m.png\n let params = `f_auto,q_auto`; // sets image format and quality to \"auto\"\n if (config.width) {\n params += `,w_${config.width}`;\n }\n return `${path}/image/upload/${params}/${config.src}`;\n}\n\n/**\n * Name and URL tester for ImageKit.\n */\nconst imageKitLoaderInfo = {\n name: 'ImageKit',\n testUrl: isImageKitUrl,\n};\nconst IMAGE_KIT_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imagekit\\.io\\/.+/;\n/**\n * Tests whether a URL is from ImageKit CDN.\n */\nfunction isImageKitUrl(url) {\n return IMAGE_KIT_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for ImageKit and turns it into an Angular provider.\n *\n * @param path Base URL of your ImageKit images\n * This URL should match one of the following formats:\n * https://ik.imagekit.io/myaccount\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the ImageKit loader.\n *\n * @publicApi\n */\nconst provideImageKitLoader = createImageLoader(createImagekitUrl, ngDevMode ? ['https://ik.imagekit.io/mysite', 'https://subdomain.mysite.com'] : undefined);\nfunction createImagekitUrl(path, config) {\n // Example of an ImageKit image URL:\n // https://ik.imagekit.io/demo/tr:w-300,h-300/medium_cafe_B1iTdD0C.jpg\n const { src, width } = config;\n let urlSegments;\n if (width) {\n const params = `tr:w-${width}`;\n urlSegments = [path, params, src];\n }\n else {\n urlSegments = [path, src];\n }\n return urlSegments.join('/');\n}\n\n/**\n * Name and URL tester for Imgix.\n */\nconst imgixLoaderInfo = {\n name: 'Imgix',\n testUrl: isImgixUrl\n};\nconst IMGIX_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imgix\\.net\\/.+/;\n/**\n * Tests whether a URL is from Imgix CDN.\n */\nfunction isImgixUrl(url) {\n return IMGIX_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Imgix and turns it into an Angular provider.\n *\n * @param path path to the desired Imgix origin,\n * e.g. https://somepath.imgix.net or https://images.mysite.com\n * @returns Set of providers to configure the Imgix loader.\n *\n * @publicApi\n */\nconst provideImgixLoader = createImageLoader(createImgixUrl, ngDevMode ? ['https://somepath.imgix.net/'] : undefined);\nfunction createImgixUrl(path, config) {\n const url = new URL(`${path}/${config.src}`);\n // This setting ensures the smallest allowable format is set.\n url.searchParams.set('auto', 'format');\n if (config.width) {\n url.searchParams.set('w', config.width.toString());\n }\n return url.href;\n}\n\n// Assembles directive details string, useful for error messages.\nfunction imgDirectiveDetails(ngSrc, includeNgSrc = true) {\n const ngSrcInfo = includeNgSrc ? `(activated on an <img> element with the \\`ngSrc=\"${ngSrc}\"\\`) ` : '';\n return `The NgOptimizedImage directive ${ngSrcInfo}has detected that`;\n}\n\n/**\n * Asserts that the application is in development mode. Throws an error if the application is in\n * production mode. This assert can be used to make sure that there is no dev-mode code invoked in\n * the prod mode accidentally.\n */\nfunction assertDevMode(checkName) {\n if (!ngDevMode) {\n throw new ɵRuntimeError(2958 /* RuntimeErrorCode.UNEXPECTED_DEV_MODE_CHECK_IN_PROD_MODE */, `Unexpected invocation of the ${checkName} in the prod mode. ` +\n `Please make sure that the prod mode is enabled for production builds.`);\n }\n}\n\n/**\n * Observer that detects whether an image with `NgOptimizedImage`\n * is treated as a Largest Contentful Paint (LCP) element. If so,\n * asserts that the image has the `priority` attribute.\n *\n * Note: this is a dev-mode only class and it does not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n *\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript.\n */\nclass LCPImageObserver {\n constructor() {\n // Map of full image URLs -> original `ngSrc` values.\n this.images = new Map();\n this.window = null;\n this.observer = null;\n assertDevMode('LCP checker');\n const win = inject(DOCUMENT).defaultView;\n if (typeof win !== 'undefined' && typeof PerformanceObserver !== 'undefined') {\n this.window = win;\n this.observer = this.initPerformanceObserver();\n }\n }\n /**\n * Inits PerformanceObserver and subscribes to LCP events.\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript\n */\n initPerformanceObserver() {\n const observer = new PerformanceObserver((entryList) => {\n const entries = entryList.getEntries();\n if (entries.length === 0)\n return;\n // We use the latest entry produced by the `PerformanceObserver` as the best\n // signal on which element is actually an LCP one. As an example, the first image to load on\n // a page, by virtue of being the only thing on the page so far, is often a LCP candidate\n // and gets reported by PerformanceObserver, but isn't necessarily the LCP element.\n const lcpElement = entries[entries.length - 1];\n // Cast to `any` due to missing `element` on the `LargestContentfulPaint` type of entry.\n // See https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint\n const imgSrc = lcpElement.element?.src ?? '';\n // Exclude `data:` and `blob:` URLs, since they are not supported by the directive.\n if (imgSrc.startsWith('data:') || imgSrc.startsWith('blob:'))\n return;\n const img = this.images.get(imgSrc);\n if (!img)\n return;\n if (!img.priority && !img.alreadyWarnedPriority) {\n img.alreadyWarnedPriority = true;\n logMissingPriorityWarning(imgSrc);\n }\n if (img.modified && !img.alreadyWarnedModified) {\n img.alreadyWarnedModified = true;\n logModifiedWarning(imgSrc);\n }\n });\n observer.observe({ type: 'largest-contentful-paint', buffered: true });\n return observer;\n }\n registerImage(rewrittenSrc, originalNgSrc, isPriority) {\n if (!this.observer)\n return;\n const newObservedImageState = {\n priority: isPriority,\n modified: false,\n alreadyWarnedModified: false,\n alreadyWarnedPriority: false\n };\n this.images.set(getUrl(rewrittenSrc, this.window).href, newObservedImageState);\n }\n unregisterImage(rewrittenSrc) {\n if (!this.observer)\n return;\n this.images.delete(getUrl(rewrittenSrc, this.window).href);\n }\n updateImage(originalSrc, newSrc) {\n const originalUrl = getUrl(originalSrc, this.window).href;\n const img = this.images.get(originalUrl);\n if (img) {\n img.modified = true;\n this.images.set(getUrl(newSrc, this.window).href, img);\n this.images.delete(originalUrl);\n }\n }\n ngOnDestroy() {\n if (!this.observer)\n return;\n this.observer.disconnect();\n this.images.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LCPImageObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LCPImageObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LCPImageObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\nfunction logMissingPriorityWarning(ngSrc) {\n const directiveDetails = imgDirectiveDetails(ngSrc);\n console.warn(ɵformatRuntimeError(2955 /* RuntimeErrorCode.LCP_IMG_MISSING_PRIORITY */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +\n `element but was not marked \"priority\". This image should be marked ` +\n `\"priority\" in order to prioritize its loading. ` +\n `To fix this, add the \"priority\" attribute.`));\n}\nfunction logModifiedWarning(ngSrc) {\n const directiveDetails = imgDirectiveDetails(ngSrc);\n console.warn(ɵformatRuntimeError(2964 /* RuntimeErrorCode.LCP_IMG_NGSRC_MODIFIED */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +\n `element and has had its \"ngSrc\" attribute modified. This can cause ` +\n `slower loading performance. It is recommended not to modify the \"ngSrc\" ` +\n `property on any image which could be the LCP element.`));\n}\n\n// Set of origins that are always excluded from the preconnect checks.\nconst INTERNAL_PRECONNECT_CHECK_BLOCKLIST = new Set(['localhost', '127.0.0.1', '0.0.0.0']);\n/**\n * Injection token to configure which origins should be excluded\n * from the preconnect checks. It can either be a single string or an array of strings\n * to represent a group of origins, for example:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST, useValue: 'https://your-domain.com'}\n * ```\n *\n * or:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST,\n * useValue: ['https://your-domain-1.com', 'https://your-domain-2.com']}\n * ```\n *\n * @publicApi\n */\nconst PRECONNECT_CHECK_BLOCKLIST = new InjectionToken('PRECONNECT_CHECK_BLOCKLIST');\n/**\n * Contains the logic to detect whether an image, marked with the \"priority\" attribute\n * has a corresponding `<link rel=\"preconnect\">` tag in the `document.head`.\n *\n * Note: this is a dev-mode only class, which should not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n */\nclass PreconnectLinkChecker {\n constructor() {\n this.document = inject(DOCUMENT);\n /**\n * Set of <link rel=\"preconnect\"> tags found on this page.\n * The `null` value indicates that there was no DOM query operation performed.\n */\n this.preconnectLinks = null;\n /*\n * Keep track of all already seen origin URLs to avoid repeating the same check.\n */\n this.alreadySeen = new Set();\n this.window = null;\n this.blocklist = new Set(INTERNAL_PRECONNECT_CHECK_BLOCKLIST);\n assertDevMode('preconnect link checker');\n const win = this.document.defaultView;\n if (typeof win !== 'undefined') {\n this.window = win;\n }\n const blocklist = inject(PRECONNECT_CHECK_BLOCKLIST, { optional: true });\n if (blocklist) {\n this.populateBlocklist(blocklist);\n }\n }\n populateBlocklist(origins) {\n if (Array.isArray(origins)) {\n deepForEach(origins, origin => {\n this.blocklist.add(extractHostname(origin));\n });\n }\n else {\n this.blocklist.add(extractHostname(origins));\n }\n }\n /**\n * Checks that a preconnect resource hint exists in the head for the\n * given src.\n *\n * @param rewrittenSrc src formatted with loader\n * @param originalNgSrc ngSrc value\n */\n assertPreconnect(rewrittenSrc, originalNgSrc) {\n if (!this.window)\n return;\n const imgUrl = getUrl(rewrittenSrc, this.window);\n if (this.blocklist.has(imgUrl.hostname) || this.alreadySeen.has(imgUrl.origin))\n return;\n // Register this origin as seen, so we don't check it again later.\n this.alreadySeen.add(imgUrl.origin);\n if (!this.preconnectLinks) {\n // Note: we query for preconnect links only *once* and cache the results\n // for the entire lifespan of an application, since it's unlikely that the\n // list would change frequently. This allows to make sure there are no\n // performance implications of making extra DOM lookups for each image.\n this.preconnectLinks = this.queryPreconnectLinks();\n }\n if (!this.preconnectLinks.has(imgUrl.origin)) {\n console.warn(ɵformatRuntimeError(2956 /* RuntimeErrorCode.PRIORITY_IMG_MISSING_PRECONNECT_TAG */, `${imgDirectiveDetails(originalNgSrc)} there is no preconnect tag present for this ` +\n `image. Preconnecting to the origin(s) that serve priority images ensures that these ` +\n `images are delivered as soon as possible. To fix this, please add the following ` +\n `element into the <head> of the document:\\n` +\n ` <link rel=\"preconnect\" href=\"${imgUrl.origin}\">`));\n }\n }\n queryPreconnectLinks() {\n const preconnectUrls = new Set();\n const selector = 'link[rel=preconnect]';\n const links = Array.from(this.document.querySelectorAll(selector));\n for (let link of links) {\n const url = getUrl(link.href, this.window);\n preconnectUrls.add(url.origin);\n }\n return preconnectUrls;\n }\n ngOnDestroy() {\n this.preconnectLinks?.clear();\n this.alreadySeen.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreconnectLinkChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreconnectLinkChecker, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreconnectLinkChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\n/**\n * Invokes a callback for each element in the array. Also invokes a callback\n * recursively for each nested array.\n */\nfunction deepForEach(input, fn) {\n for (let value of input) {\n Array.isArray(value) ? deepForEach(value, fn) : fn(value);\n }\n}\n\n/**\n * In SSR scenarios, a preload `<link>` element is generated for priority images.\n * Having a large number of preload tags may negatively affect the performance,\n * so we warn developers (by throwing an error) if the number of preloaded images\n * is above a certain threshold. This const specifies this threshold.\n */\nconst DEFAULT_PRELOADED_IMAGES_LIMIT = 5;\n/**\n * Helps to keep track of priority images that already have a corresponding\n * preload tag (to avoid generating multiple preload tags with the same URL).\n *\n * This Set tracks the original src passed into the `ngSrc` input not the src after it has been\n * run through the specified `IMAGE_LOADER`.\n */\nconst PRELOADED_IMAGES = new InjectionToken('NG_OPTIMIZED_PRELOADED_IMAGES', { providedIn: 'root', factory: () => new Set() });\n\n/**\n * @description Contains the logic needed to track and add preload link tags to the `<head>` tag. It\n * will also track what images have already had preload link tags added so as to not duplicate link\n * tags.\n *\n * In dev mode this service will validate that the number of preloaded images does not exceed the\n * configured default preloaded images limit: {@link DEFAULT_PRELOADED_IMAGES_LIMIT}.\n */\nclass PreloadLinkCreator {\n constructor() {\n this.preloadedImages = inject(PRELOADED_IMAGES);\n this.document = inject(DOCUMENT);\n }\n /**\n * @description Add a preload `<link>` to the `<head>` of the `index.html` that is served from the\n * server while using Angular Universal and SSR to kick off image loads for high priority images.\n *\n * The `sizes` (passed in from the user) and `srcset` (parsed and formatted from `ngSrcset`)\n * properties used to set the corresponding attributes, `imagesizes` and `imagesrcset`\n * respectively, on the preload `<link>` tag so that the correctly sized image is preloaded from\n * the CDN.\n *\n * {@link https://web.dev/preload-responsive-images/#imagesrcset-and-imagesizes}\n *\n * @param renderer The `Renderer2` passed in from the directive\n * @param src The original src of the image that is set on the `ngSrc` input.\n * @param srcset The parsed and formatted srcset created from the `ngSrcset` input\n * @param sizes The value of the `sizes` attribute passed in to the `<img>` tag\n */\n createPreloadLinkTag(renderer, src, srcset, sizes) {\n if (ngDevMode) {\n if (this.preloadedImages.size >= DEFAULT_PRELOADED_IMAGES_LIMIT) {\n throw new ɵRuntimeError(2961 /* RuntimeErrorCode.TOO_MANY_PRELOADED_IMAGES */, ngDevMode &&\n `The \\`NgOptimizedImage\\` directive has detected that more than ` +\n `${DEFAULT_PRELOADED_IMAGES_LIMIT} images were marked as priority. ` +\n `This might negatively affect an overall performance of the page. ` +\n `To fix this, remove the \"priority\" attribute from images with less priority.`);\n }\n }\n if (this.preloadedImages.has(src)) {\n return;\n }\n this.preloadedImages.add(src);\n const preload = renderer.createElement('link');\n renderer.setAttribute(preload, 'as', 'image');\n renderer.setAttribute(preload, 'href', src);\n renderer.setAttribute(preload, 'rel', 'preload');\n renderer.setAttribute(preload, 'fetchpriority', 'high');\n if (sizes) {\n renderer.setAttribute(preload, 'imageSizes', sizes);\n }\n if (srcset) {\n renderer.setAttribute(preload, 'imageSrcset', srcset);\n }\n renderer.appendChild(this.document.head, preload);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreloadLinkCreator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreloadLinkCreator, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreloadLinkCreator, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * When a Base64-encoded image is passed as an input to the `NgOptimizedImage` directive,\n * an error is thrown. The image content (as a string) might be very long, thus making\n * it hard to read an error message if the entire string is included. This const defines\n * the number of characters that should be included into the error message. The rest\n * of the content is truncated.\n */\nconst BASE64_IMG_MAX_LENGTH_IN_ERROR = 50;\n/**\n * RegExpr to determine whether a src in a srcset is using width descriptors.\n * Should match something like: \"100w, 200w\".\n */\nconst VALID_WIDTH_DESCRIPTOR_SRCSET = /^((\\s*\\d+w\\s*(,|$)){1,})$/;\n/**\n * RegExpr to determine whether a src in a srcset is using density descriptors.\n * Should match something like: \"1x, 2x, 50x\". Also supports decimals like \"1.5x, 1.50x\".\n */\nconst VALID_DENSITY_DESCRIPTOR_SRCSET = /^((\\s*\\d+(\\.\\d+)?x\\s*(,|$)){1,})$/;\n/**\n * Srcset values with a density descriptor higher than this value will actively\n * throw an error. Such densities are not permitted as they cause image sizes\n * to be unreasonably large and slow down LCP.\n */\nconst ABSOLUTE_SRCSET_DENSITY_CAP = 3;\n/**\n * Used only in error message text to communicate best practices, as we will\n * only throw based on the slightly more conservative ABSOLUTE_SRCSET_DENSITY_CAP.\n */\nconst RECOMMENDED_SRCSET_DENSITY_CAP = 2;\n/**\n * Used in generating automatic density-based srcsets\n */\nconst DENSITY_SRCSET_MULTIPLIERS = [1, 2];\n/**\n * Used to determine which breakpoints to use on full-width images\n */\nconst VIEWPORT_BREAKPOINT_CUTOFF = 640;\n/**\n * Used to determine whether two aspect ratios are similar in value.\n */\nconst ASPECT_RATIO_TOLERANCE = .1;\n/**\n * Used to determine whether the image has been requested at an overly\n * large size compared to the actual rendered image size (after taking\n * into account a typical device pixel ratio). In pixels.\n */\nconst OVERSIZED_IMAGE_TOLERANCE = 1000;\n/**\n * Used to limit automatic srcset generation of very large sources for\n * fixed-size images. In pixels.\n */\nconst FIXED_SRCSET_WIDTH_LIMIT = 1920;\nconst FIXED_SRCSET_HEIGHT_LIMIT = 1080;\n/** Info about built-in loaders we can test for. */\nconst BUILT_IN_LOADERS = [imgixLoaderInfo, imageKitLoaderInfo, cloudinaryLoaderInfo];\nconst defaultConfig = {\n breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840],\n};\n/**\n * Injection token that configures the image optimized image functionality.\n *\n * @see {@link NgOptimizedImage}\n * @publicApi\n */\nconst IMAGE_CONFIG = new InjectionToken('ImageConfig', { providedIn: 'root', factory: () => defaultConfig });\n/**\n * Directive that improves image loading performance by enforcing best practices.\n *\n * `NgOptimizedImage` ensures that the loading of the Largest Contentful Paint (LCP) image is\n * prioritized by:\n * - Automatically setting the `fetchpriority` attribute on the `<img>` tag\n * - Lazy loading non-priority images by default\n * - Asserting that there is a corresponding preconnect link tag in the document head\n *\n * In addition, the directive:\n * - Generates appropriate asset URLs if a corresponding `ImageLoader` function is provided\n * - Automatically generates a srcset\n * - Requires that `width` and `height` are set\n * - Warns if `width` or `height` have been set incorrectly\n * - Warns if the image will be visually distorted when rendered\n *\n * @usageNotes\n * The `NgOptimizedImage` directive is marked as [standalone](guide/standalone-components) and can\n * be imported directly.\n *\n * Follow the steps below to enable and use the directive:\n * 1. Import it into the necessary NgModule or a standalone Component.\n * 2. Optionally provide an `ImageLoader` if you use an image hosting service.\n * 3. Update the necessary `<img>` tags in templates and replace `src` attributes with `ngSrc`.\n * Using a `ngSrc` allows the directive to control when the `src` gets set, which triggers an image\n * download.\n *\n * Step 1: import the `NgOptimizedImage` directive.\n *\n * ```typescript\n * import { NgOptimizedImage } from '@angular/common';\n *\n * // Include it into the necessary NgModule\n * @NgModule({\n * imports: [NgOptimizedImage],\n * })\n * class AppModule {}\n *\n * // ... or a standalone Component\n * @Component({\n * standalone: true\n * imports: [NgOptimizedImage],\n * })\n * class MyStandaloneComponent {}\n * ```\n *\n * Step 2: configure a loader.\n *\n * To use the **default loader**: no additional code changes are necessary. The URL returned by the\n * generic loader will always match the value of \"src\". In other words, this loader applies no\n * transformations to the resource URL and the value of the `ngSrc` attribute will be used as is.\n *\n * To use an existing loader for a **third-party image service**: add the provider factory for your\n * chosen service to the `providers` array. In the example below, the Imgix loader is used:\n *\n * ```typescript\n * import {provideImgixLoader} from '@angular/common';\n *\n * // Call the function and add the result to the `providers` array:\n * providers: [\n * provideImgixLoader(\"https://my.base.url/\"),\n * ],\n * ```\n *\n * The `NgOptimizedImage` directive provides the following functions:\n * - `provideCloudflareLoader`\n * - `provideCloudinaryLoader`\n * - `provideImageKitLoader`\n * - `provideImgixLoader`\n *\n * If you use a different image provider, you can create a custom loader function as described\n * below.\n *\n * To use a **custom loader**: provide your loader function as a value for the `IMAGE_LOADER` DI\n * token.\n *\n * ```typescript\n * import {IMAGE_LOADER, ImageLoaderConfig} from '@angular/common';\n *\n * // Configure the loader using the `IMAGE_LOADER` token.\n * providers: [\n * {\n * provide: IMAGE_LOADER,\n * useValue: (config: ImageLoaderConfig) => {\n * return `https://example.com/${config.src}-${config.width}.jpg}`;\n * }\n * },\n * ],\n * ```\n *\n * Step 3: update `<img>` tags in templates to use `ngSrc` instead of `src`.\n *\n * ```\n * <img ngSrc=\"logo.png\" width=\"200\" height=\"100\">\n * ```\n *\n * @publicApi\n */\nclass NgOptimizedImage {\n constructor() {\n this.imageLoader = inject(IMAGE_LOADER);\n this.config = processConfig(inject(IMAGE_CONFIG));\n this.renderer = inject(Renderer2);\n this.imgElement = inject(ElementRef).nativeElement;\n this.injector = inject(Injector);\n this.isServer = isPlatformServer(inject(PLATFORM_ID));\n this.preloadLinkCreator = inject(PreloadLinkCreator);\n // a LCP image observer - should be injected only in the dev mode\n this.lcpObserver = ngDevMode ? this.injector.get(LCPImageObserver) : null;\n /**\n * Calculate the rewritten `src` once and store it.\n * This is needed to avoid repetitive calculations and make sure the directive cleanup in the\n * `ngOnDestroy` does not rely on the `IMAGE_LOADER` logic (which in turn can rely on some other\n * instance that might be already destroyed).\n */\n this._renderedSrc = null;\n /**\n * Indicates whether this image should have a high priority.\n */\n this.priority = false;\n /**\n * Disables automatic srcset generation for this image.\n */\n this.disableOptimizedSrcset = false;\n /**\n * Sets the image to \"fill mode\", which eliminates the height/width requirement and adds\n * styles such that the image fills its containing element.\n */\n this.fill = false;\n }\n /** @nodoc */\n ngOnInit() {\n if (ngDevMode) {\n const ngZone = this.injector.get(NgZone);\n assertNonEmptyInput(this, 'ngSrc', this.ngSrc);\n assertValidNgSrcset(this, this.ngSrcset);\n assertNoConflictingSrc(this);\n if (this.ngSrcset) {\n assertNoConflictingSrcset(this);\n }\n assertNotBase64Image(this);\n assertNotBlobUrl(this);\n if (this.fill) {\n assertEmptyWidthAndHeight(this);\n // This leaves the Angular zone to avoid triggering unnecessary change detection cycles when\n // `load` tasks are invoked on images.\n ngZone.runOutsideAngular(() => assertNonZeroRenderedHeight(this, this.imgElement, this.renderer));\n }\n else {\n assertNonEmptyWidthAndHeight(this);\n if (this.height !== undefined) {\n assertGreaterThanZero(this, this.height, 'height');\n }\n if (this.width !== undefined) {\n assertGreaterThanZero(this, this.width, 'width');\n }\n // Only check for distorted images when not in fill mode, where\n // images may be intentionally stretched, cropped or letterboxed.\n ngZone.runOutsideAngular(() => assertNoImageDistortion(this, this.imgElement, this.renderer));\n }\n assertValidLoadingInput(this);\n if (!this.ngSrcset) {\n assertNoComplexSizes(this);\n }\n assertNotMissingBuiltInLoader(this.ngSrc, this.imageLoader);\n assertNoNgSrcsetWithoutLoader(this, this.imageLoader);\n assertNoLoaderParamsWithoutLoader(this, this.imageLoader);\n if (this.lcpObserver !== null) {\n const ngZone = this.injector.get(NgZone);\n ngZone.runOutsideAngular(() => {\n this.lcpObserver.registerImage(this.getRewrittenSrc(), this.ngSrc, this.priority);\n });\n }\n if (this.priority) {\n const checker = this.injector.get(PreconnectLinkChecker);\n checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc);\n }\n }\n this.setHostAttributes();\n }\n setHostAttributes() {\n // Must set width/height explicitly in case they are bound (in which case they will\n // only be reflected and not found by the browser)\n if (this.fill) {\n if (!this.sizes) {\n this.sizes = '100vw';\n }\n }\n else {\n this.setHostAttribute('width', this.width.toString());\n this.setHostAttribute('height', this.height.toString());\n }\n this.setHostAttribute('loading', this.getLoadingBehavior());\n this.setHostAttribute('fetchpriority', this.getFetchPriority());\n // The `data-ng-img` attribute flags an image as using the directive, to allow\n // for analysis of the directive's performance.\n this.setHostAttribute('ng-img', 'true');\n // The `src` and `srcset` attributes should be set last since other attributes\n // could affect the image's loading behavior.\n const rewrittenSrcset = this.updateSrcAndSrcset();\n if (this.sizes) {\n this.setHostAttribute('sizes', this.sizes);\n }\n if (this.isServer && this.priority) {\n this.preloadLinkCreator.createPreloadLinkTag(this.renderer, this.getRewrittenSrc(), rewrittenSrcset, this.sizes);\n }\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (ngDevMode) {\n assertNoPostInitInputChange(this, changes, [\n 'ngSrcset',\n 'width',\n 'height',\n 'priority',\n 'fill',\n 'loading',\n 'sizes',\n 'loaderParams',\n 'disableOptimizedSrcset',\n ]);\n }\n if (changes['ngSrc'] && !changes['ngSrc'].isFirstChange()) {\n const oldSrc = this._renderedSrc;\n this.updateSrcAndSrcset(true);\n const newSrc = this._renderedSrc;\n if (this.lcpObserver !== null && oldSrc && newSrc && oldSrc !== newSrc) {\n const ngZone = this.injector.get(NgZone);\n ngZone.runOutsideAngular(() => {\n this.lcpObserver?.updateImage(oldSrc, newSrc);\n });\n }\n }\n }\n callImageLoader(configWithoutCustomParams) {\n let augmentedConfig = configWithoutCustomParams;\n if (this.loaderParams) {\n augmentedConfig.loaderParams = this.loaderParams;\n }\n return this.imageLoader(augmentedConfig);\n }\n getLoadingBehavior() {\n if (!this.priority && this.loading !== undefined) {\n return this.loading;\n }\n return this.priority ? 'eager' : 'lazy';\n }\n getFetchPriority() {\n return this.priority ? 'high' : 'auto';\n }\n getRewrittenSrc() {\n // ImageLoaderConfig supports setting a width property. However, we're not setting width here\n // because if the developer uses rendered width instead of intrinsic width in the HTML width\n // attribute, the image requested may be too small for 2x+ screens.\n if (!this._renderedSrc) {\n const imgConfig = { src: this.ngSrc };\n // Cache calculated image src to reuse it later in the code.\n this._renderedSrc = this.callImageLoader(imgConfig);\n }\n return this._renderedSrc;\n }\n getRewrittenSrcset() {\n const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset);\n const finalSrcs = this.ngSrcset.split(',').filter(src => src !== '').map(srcStr => {\n srcStr = srcStr.trim();\n const width = widthSrcSet ? parseFloat(srcStr) : parseFloat(srcStr) * this.width;\n return `${this.callImageLoader({ src: this.ngSrc, width })} ${srcStr}`;\n });\n return finalSrcs.join(', ');\n }\n getAutomaticSrcset() {\n if (this.sizes) {\n return this.getResponsiveSrcset();\n }\n else {\n return this.getFixedSrcset();\n }\n }\n getResponsiveSrcset() {\n const { breakpoints } = this.config;\n let filteredBreakpoints = breakpoints;\n if (this.sizes?.trim() === '100vw') {\n // Since this is a full-screen-width image, our srcset only needs to include\n // breakpoints with full viewport widths.\n filteredBreakpoints = breakpoints.filter(bp => bp >= VIEWPORT_BREAKPOINT_CUTOFF);\n }\n const finalSrcs = filteredBreakpoints.map(bp => `${this.callImageLoader({ src: this.ngSrc, width: bp })} ${bp}w`);\n return finalSrcs.join(', ');\n }\n updateSrcAndSrcset(forceSrcRecalc = false) {\n if (forceSrcRecalc) {\n // Reset cached value, so that the followup `getRewrittenSrc()` call\n // will recalculate it and update the cache.\n this._renderedSrc = null;\n }\n const rewrittenSrc = this.getRewrittenSrc();\n this.setHostAttribute('src', rewrittenSrc);\n let rewrittenSrcset = undefined;\n if (this.ngSrcset) {\n rewrittenSrcset = this.getRewrittenSrcset();\n }\n else if (this.shouldGenerateAutomaticSrcset()) {\n rewrittenSrcset = this.getAutomaticSrcset();\n }\n if (rewrittenSrcset) {\n this.setHostAttribute('srcset', rewrittenSrcset);\n }\n return rewrittenSrcset;\n }\n getFixedSrcset() {\n const finalSrcs = DENSITY_SRCSET_MULTIPLIERS.map(multiplier => `${this.callImageLoader({\n src: this.ngSrc,\n width: this.width * multiplier\n })} ${multiplier}x`);\n return finalSrcs.join(', ');\n }\n shouldGenerateAutomaticSrcset() {\n let oversizedImage = false;\n if (!this.sizes) {\n oversizedImage =\n this.width > FIXED_SRCSET_WIDTH_LIMIT || this.height > FIXED_SRCSET_HEIGHT_LIMIT;\n }\n return !this.disableOptimizedSrcset && !this.srcset && this.imageLoader !== noopImageLoader &&\n !oversizedImage;\n }\n /** @nodoc */\n ngOnDestroy() {\n if (ngDevMode) {\n if (!this.priority && this._renderedSrc !== null && this.lcpObserver !== null) {\n this.lcpObserver.unregisterImage(this._renderedSrc);\n }\n }\n }\n setHostAttribute(name, value) {\n this.renderer.setAttribute(this.imgElement, name, value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgOptimizedImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"16.2.12\", type: NgOptimizedImage, isStandalone: true, selector: \"img[ngSrc]\", inputs: { ngSrc: [\"ngSrc\", \"ngSrc\", unwrapSafeUrl], ngSrcset: \"ngSrcset\", sizes: \"sizes\", width: [\"width\", \"width\", numberAttribute], height: [\"height\", \"height\", numberAttribute], loading: \"loading\", priority: [\"priority\", \"priority\", booleanAttribute], loaderParams: \"loaderParams\", disableOptimizedSrcset: [\"disableOptimizedSrcset\", \"disableOptimizedSrcset\", booleanAttribute], fill: [\"fill\", \"fill\", booleanAttribute], src: \"src\", srcset: \"srcset\" }, host: { properties: { \"style.position\": \"fill ? \\\"absolute\\\" : null\", \"style.width\": \"fill ? \\\"100%\\\" : null\", \"style.height\": \"fill ? \\\"100%\\\" : null\", \"style.inset\": \"fill ? \\\"0px\\\" : null\" } }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgOptimizedImage, decorators: [{\n type: Directive,\n args: [{\n standalone: true,\n selector: 'img[ngSrc]',\n host: {\n '[style.position]': 'fill ? \"absolute\" : null',\n '[style.width]': 'fill ? \"100%\" : null',\n '[style.height]': 'fill ? \"100%\" : null',\n '[style.inset]': 'fill ? \"0px\" : null'\n }\n }]\n }], propDecorators: { ngSrc: [{\n type: Input,\n args: [{ required: true, transform: unwrapSafeUrl }]\n }], ngSrcset: [{\n type: Input\n }], sizes: [{\n type: Input\n }], width: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], height: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], loading: [{\n type: Input\n }], priority: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], loaderParams: [{\n type: Input\n }], disableOptimizedSrcset: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], fill: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], src: [{\n type: Input\n }], srcset: [{\n type: Input\n }] } });\n/***** Helpers *****/\n/**\n * Sorts provided config breakpoints and uses defaults.\n */\nfunction processConfig(config) {\n let sortedBreakpoints = {};\n if (config.breakpoints) {\n sortedBreakpoints.breakpoints = config.breakpoints.sort((a, b) => a - b);\n }\n return Object.assign({}, defaultConfig, config, sortedBreakpoints);\n}\n/***** Assert functions *****/\n/**\n * Verifies that there is no `src` set on a host element.\n */\nfunction assertNoConflictingSrc(dir) {\n if (dir.src) {\n throw new ɵRuntimeError(2950 /* RuntimeErrorCode.UNEXPECTED_SRC_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`src\\` and \\`ngSrc\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`src\\` itself based on the value of \\`ngSrc\\`. ` +\n `To fix this, please remove the \\`src\\` attribute.`);\n }\n}\n/**\n * Verifies that there is no `srcset` set on a host element.\n */\nfunction assertNoConflictingSrcset(dir) {\n if (dir.srcset) {\n throw new ɵRuntimeError(2951 /* RuntimeErrorCode.UNEXPECTED_SRCSET_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`srcset\\` and \\`ngSrcset\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`srcset\\` itself based on the value of ` +\n `\\`ngSrcset\\`. To fix this, please remove the \\`srcset\\` attribute.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Base64-encoded image.\n */\nfunction assertNotBase64Image(dir) {\n let ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('data:')) {\n if (ngSrc.length > BASE64_IMG_MAX_LENGTH_IN_ERROR) {\n ngSrc = ngSrc.substring(0, BASE64_IMG_MAX_LENGTH_IN_ERROR) + '...';\n }\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`ngSrc\\` is a Base64-encoded string ` +\n `(${ngSrc}). NgOptimizedImage does not support Base64-encoded strings. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a standard \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the 'sizes' only includes responsive values.\n */\nfunction assertNoComplexSizes(dir) {\n let sizes = dir.sizes;\n if (sizes?.match(/((\\)|,)\\s|^)\\d+px/)) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`sizes\\` was set to a string including ` +\n `pixel values. For automatic \\`srcset\\` generation, \\`sizes\\` must only include responsive ` +\n `values, such as \\`sizes=\"50vw\"\\` or \\`sizes=\"(min-width: 768px) 50vw, 100vw\"\\`. ` +\n `To fix this, modify the \\`sizes\\` attribute, or provide your own \\`ngSrcset\\` value directly.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Blob URL.\n */\nfunction assertNotBlobUrl(dir) {\n const ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('blob:')) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrc\\` was set to a blob URL (${ngSrc}). ` +\n `Blob URLs are not supported by the NgOptimizedImage directive. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a regular \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the input is set to a non-empty string.\n */\nfunction assertNonEmptyInput(dir, name, value) {\n const isString = typeof value === 'string';\n const isEmptyString = isString && value.trim() === '';\n if (!isString || isEmptyString) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${name}\\` has an invalid value ` +\n `(\\`${value}\\`). To fix this, change the value to a non-empty string.`);\n }\n}\n/**\n * Verifies that the `ngSrcset` is in a valid format, e.g. \"100w, 200w\" or \"1x, 2x\".\n */\nfunction assertValidNgSrcset(dir, value) {\n if (value == null)\n return;\n assertNonEmptyInput(dir, 'ngSrcset', value);\n const stringVal = value;\n const isValidWidthDescriptor = VALID_WIDTH_DESCRIPTOR_SRCSET.test(stringVal);\n const isValidDensityDescriptor = VALID_DENSITY_DESCRIPTOR_SRCSET.test(stringVal);\n if (isValidDensityDescriptor) {\n assertUnderDensityCap(dir, stringVal);\n }\n const isValidSrcset = isValidWidthDescriptor || isValidDensityDescriptor;\n if (!isValidSrcset) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrcset\\` has an invalid value (\\`${value}\\`). ` +\n `To fix this, supply \\`ngSrcset\\` using a comma-separated list of one or more width ` +\n `descriptors (e.g. \"100w, 200w\") or density descriptors (e.g. \"1x, 2x\").`);\n }\n}\nfunction assertUnderDensityCap(dir, value) {\n const underDensityCap = value.split(',').every(num => num === '' || parseFloat(num) <= ABSOLUTE_SRCSET_DENSITY_CAP);\n if (!underDensityCap) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` contains an unsupported image density:` +\n `\\`${value}\\`. NgOptimizedImage generally recommends a max image density of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}x but supports image densities up to ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x. The human eye cannot distinguish between image densities ` +\n `greater than ${RECOMMENDED_SRCSET_DENSITY_CAP}x - which makes them unnecessary for ` +\n `most use cases. Images that will be pinch-zoomed are typically the primary use case for ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x images. Please remove the high density descriptor and try again.`);\n }\n}\n/**\n * Creates a `RuntimeError` instance to represent a situation when an input is set after\n * the directive has initialized.\n */\nfunction postInitInputChangeError(dir, inputName) {\n let reason;\n if (inputName === 'width' || inputName === 'height') {\n reason = `Changing \\`${inputName}\\` may result in different attribute value ` +\n `applied to the underlying image element and cause layout shifts on a page.`;\n }\n else {\n reason = `Changing the \\`${inputName}\\` would have no effect on the underlying ` +\n `image element, because the resource loading has already occurred.`;\n }\n return new ɵRuntimeError(2953 /* RuntimeErrorCode.UNEXPECTED_INPUT_CHANGE */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` was updated after initialization. ` +\n `The NgOptimizedImage directive will not react to this input change. ${reason} ` +\n `To fix this, either switch \\`${inputName}\\` to a static value ` +\n `or wrap the image element in an *ngIf that is gated on the necessary value.`);\n}\n/**\n * Verify that none of the listed inputs has changed.\n */\nfunction assertNoPostInitInputChange(dir, changes, inputs) {\n inputs.forEach(input => {\n const isUpdated = changes.hasOwnProperty(input);\n if (isUpdated && !changes[input].isFirstChange()) {\n if (input === 'ngSrc') {\n // When the `ngSrc` input changes, we detect that only in the\n // `ngOnChanges` hook, thus the `ngSrc` is already set. We use\n // `ngSrc` in the error message, so we use a previous value, but\n // not the updated one in it.\n dir = { ngSrc: changes[input].previousValue };\n }\n throw postInitInputChangeError(dir, input);\n }\n });\n}\n/**\n * Verifies that a specified input is a number greater than 0.\n */\nfunction assertGreaterThanZero(dir, inputValue, inputName) {\n const validNumber = typeof inputValue === 'number' && inputValue > 0;\n const validString = typeof inputValue === 'string' && /^\\d+$/.test(inputValue.trim()) && parseInt(inputValue) > 0;\n if (!validNumber && !validString) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` has an invalid value. ` +\n `To fix this, provide \\`${inputName}\\` as a number greater than 0.`);\n }\n}\n/**\n * Verifies that the rendered image is not visually distorted. Effectively this is checking:\n * - Whether the \"width\" and \"height\" attributes reflect the actual dimensions of the image.\n * - Whether image styling is \"correct\" (see below for a longer explanation).\n */\nfunction assertNoImageDistortion(dir, img, renderer) {\n const removeListenerFn = renderer.listen(img, 'load', () => {\n removeListenerFn();\n const computedStyle = window.getComputedStyle(img);\n let renderedWidth = parseFloat(computedStyle.getPropertyValue('width'));\n let renderedHeight = parseFloat(computedStyle.getPropertyValue('height'));\n const boxSizing = computedStyle.getPropertyValue('box-sizing');\n if (boxSizing === 'border-box') {\n const paddingTop = computedStyle.getPropertyValue('padding-top');\n const paddingRight = computedStyle.getPropertyValue('padding-right');\n const paddingBottom = computedStyle.getPropertyValue('padding-bottom');\n const paddingLeft = computedStyle.getPropertyValue('padding-left');\n renderedWidth -= parseFloat(paddingRight) + parseFloat(paddingLeft);\n renderedHeight -= parseFloat(paddingTop) + parseFloat(paddingBottom);\n }\n const renderedAspectRatio = renderedWidth / renderedHeight;\n const nonZeroRenderedDimensions = renderedWidth !== 0 && renderedHeight !== 0;\n const intrinsicWidth = img.naturalWidth;\n const intrinsicHeight = img.naturalHeight;\n const intrinsicAspectRatio = intrinsicWidth / intrinsicHeight;\n const suppliedWidth = dir.width;\n const suppliedHeight = dir.height;\n const suppliedAspectRatio = suppliedWidth / suppliedHeight;\n // Tolerance is used to account for the impact of subpixel rendering.\n // Due to subpixel rendering, the rendered, intrinsic, and supplied\n // aspect ratios of a correctly configured image may not exactly match.\n // For example, a `width=4030 height=3020` image might have a rendered\n // size of \"1062w, 796.48h\". (An aspect ratio of 1.334... vs. 1.333...)\n const inaccurateDimensions = Math.abs(suppliedAspectRatio - intrinsicAspectRatio) > ASPECT_RATIO_TOLERANCE;\n const stylingDistortion = nonZeroRenderedDimensions &&\n Math.abs(intrinsicAspectRatio - renderedAspectRatio) > ASPECT_RATIO_TOLERANCE;\n if (inaccurateDimensions) {\n console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the image does not match ` +\n `the aspect ratio indicated by the width and height attributes. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${round(intrinsicAspectRatio)}). \\nSupplied width and height attributes: ` +\n `${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${round(suppliedAspectRatio)}). ` +\n `\\nTo fix this, update the width and height attributes.`));\n }\n else if (stylingDistortion) {\n console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the rendered image ` +\n `does not match the image's intrinsic aspect ratio. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${round(intrinsicAspectRatio)}). \\nRendered image size: ` +\n `${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` +\n `${round(renderedAspectRatio)}). \\nThis issue can occur if \"width\" and \"height\" ` +\n `attributes are added to an image without updating the corresponding ` +\n `image styling. To fix this, adjust image styling. In most cases, ` +\n `adding \"height: auto\" or \"width: auto\" to the image styling will fix ` +\n `this issue.`));\n }\n else if (!dir.ngSrcset && nonZeroRenderedDimensions) {\n // If `ngSrcset` hasn't been set, sanity check the intrinsic size.\n const recommendedWidth = RECOMMENDED_SRCSET_DENSITY_CAP * renderedWidth;\n const recommendedHeight = RECOMMENDED_SRCSET_DENSITY_CAP * renderedHeight;\n const oversizedWidth = (intrinsicWidth - recommendedWidth) >= OVERSIZED_IMAGE_TOLERANCE;\n const oversizedHeight = (intrinsicHeight - recommendedHeight) >= OVERSIZED_IMAGE_TOLERANCE;\n if (oversizedWidth || oversizedHeight) {\n console.warn(ɵformatRuntimeError(2960 /* RuntimeErrorCode.OVERSIZED_IMAGE */, `${imgDirectiveDetails(dir.ngSrc)} the intrinsic image is significantly ` +\n `larger than necessary. ` +\n `\\nRendered image size: ${renderedWidth}w x ${renderedHeight}h. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h. ` +\n `\\nRecommended intrinsic image size: ${recommendedWidth}w x ${recommendedHeight}h. ` +\n `\\nNote: Recommended intrinsic image size is calculated assuming a maximum DPR of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}. To improve loading time, resize the image ` +\n `or consider using the \"ngSrcset\" and \"sizes\" attributes.`));\n }\n }\n });\n}\n/**\n * Verifies that a specified input is set.\n */\nfunction assertNonEmptyWidthAndHeight(dir) {\n let missingAttributes = [];\n if (dir.width === undefined)\n missingAttributes.push('width');\n if (dir.height === undefined)\n missingAttributes.push('height');\n if (missingAttributes.length > 0) {\n throw new ɵRuntimeError(2954 /* RuntimeErrorCode.REQUIRED_INPUT_MISSING */, `${imgDirectiveDetails(dir.ngSrc)} these required attributes ` +\n `are missing: ${missingAttributes.map(attr => `\"${attr}\"`).join(', ')}. ` +\n `Including \"width\" and \"height\" attributes will prevent image-related layout shifts. ` +\n `To fix this, include \"width\" and \"height\" attributes on the image tag or turn on ` +\n `\"fill\" mode with the \\`fill\\` attribute.`);\n }\n}\n/**\n * Verifies that width and height are not set. Used in fill mode, where those attributes don't make\n * sense.\n */\nfunction assertEmptyWidthAndHeight(dir) {\n if (dir.width || dir.height) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the attributes \\`height\\` and/or \\`width\\` are present ` +\n `along with the \\`fill\\` attribute. Because \\`fill\\` mode causes an image to fill its containing ` +\n `element, the size attributes have no effect and should be removed.`);\n }\n}\n/**\n * Verifies that the rendered image has a nonzero height. If the image is in fill mode, provides\n * guidance that this can be caused by the containing element's CSS position property.\n */\nfunction assertNonZeroRenderedHeight(dir, img, renderer) {\n const removeListenerFn = renderer.listen(img, 'load', () => {\n removeListenerFn();\n const renderedHeight = img.clientHeight;\n if (dir.fill && renderedHeight === 0) {\n console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the height of the fill-mode image is zero. ` +\n `This is likely because the containing element does not have the CSS 'position' ` +\n `property set to one of the following: \"relative\", \"fixed\", or \"absolute\". ` +\n `To fix this problem, make sure the container element has the CSS 'position' ` +\n `property defined and the height of the element is not zero.`));\n }\n });\n}\n/**\n * Verifies that the `loading` attribute is set to a valid input &\n * is not used on priority images.\n */\nfunction assertValidLoadingInput(dir) {\n if (dir.loading && dir.priority) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `was used on an image that was marked \"priority\". ` +\n `Setting \\`loading\\` on priority images is not allowed ` +\n `because these images will always be eagerly loaded. ` +\n `To fix this, remove the “loading” attribute from the priority image.`);\n }\n const validInputs = ['auto', 'eager', 'lazy'];\n if (typeof dir.loading === 'string' && !validInputs.includes(dir.loading)) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `has an invalid value (\\`${dir.loading}\\`). ` +\n `To fix this, provide a valid value (\"lazy\", \"eager\", or \"auto\").`);\n }\n}\n/**\n * Warns if NOT using a loader (falling back to the generic loader) and\n * the image appears to be hosted on one of the image CDNs for which\n * we do have a built-in image loader. Suggests switching to the\n * built-in loader.\n *\n * @param ngSrc Value of the ngSrc attribute\n * @param imageLoader ImageLoader provided\n */\nfunction assertNotMissingBuiltInLoader(ngSrc, imageLoader) {\n if (imageLoader === noopImageLoader) {\n let builtInLoaderName = '';\n for (const loader of BUILT_IN_LOADERS) {\n if (loader.testUrl(ngSrc)) {\n builtInLoaderName = loader.name;\n break;\n }\n }\n if (builtInLoaderName) {\n console.warn(ɵformatRuntimeError(2962 /* RuntimeErrorCode.MISSING_BUILTIN_LOADER */, `NgOptimizedImage: It looks like your images may be hosted on the ` +\n `${builtInLoaderName} CDN, but your app is not using Angular's ` +\n `built-in loader for that CDN. We recommend switching to use ` +\n `the built-in by calling \\`provide${builtInLoaderName}Loader()\\` ` +\n `in your \\`providers\\` and passing it your instance's base URL. ` +\n `If you don't want to use the built-in loader, define a custom ` +\n `loader function using IMAGE_LOADER to silence this warning.`));\n }\n }\n}\n/**\n * Warns if ngSrcset is present and no loader is configured (i.e. the default one is being used).\n */\nfunction assertNoNgSrcsetWithoutLoader(dir, imageLoader) {\n if (dir.ngSrcset && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* RuntimeErrorCode.MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which would result in the same image being used for all configured sizes. ` +\n `To fix this, provide a loader or remove the \\`ngSrcset\\` attribute from the image.`));\n }\n}\n/**\n * Warns if loaderParams is present and no loader is configured (i.e. the default one is being\n * used).\n */\nfunction assertNoLoaderParamsWithoutLoader(dir, imageLoader) {\n if (dir.loaderParams && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* RuntimeErrorCode.MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loaderParams\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which means that the loaderParams data will not be consumed and will not affect the URL. ` +\n `To fix this, provide a custom loader or remove the \\`loaderParams\\` attribute from the image.`));\n }\n}\nfunction round(input) {\n return Number.isInteger(input) ? input : input.toFixed(2);\n}\n// Transform function to handle SafeValue input for ngSrc. This doesn't do any sanitization,\n// as that is not needed for img.src and img.srcset. This transform is purely for compatibility.\nfunction unwrapSafeUrl(value) {\n if (typeof value === 'string') {\n return value;\n }\n return ɵunwrapSafeValue(value);\n}\n\n// These exports represent the set of symbols exposed as a public API.\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, BrowserPlatformLocation, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_OPTIONS, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, IMAGE_CONFIG, IMAGE_LOADER, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf as NgFor, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgOptimizedImage, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PRECONNECT_CHECK_BLOCKLIST, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader, registerLocaleData, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Injectable, inject, NgZone, InjectionToken, ɵInitialRenderPendingTasks, Inject, ɵRuntimeError, PLATFORM_ID, makeEnvironmentProviders, NgModule, TransferState, makeStateKey, ɵENABLED_SSR_FEATURES, APP_BOOTSTRAP_LISTENER, ApplicationRef } from '@angular/core';\nimport { of, Observable, from } from 'rxjs';\nimport { concatMap, filter, map, finalize, switchMap, tap, first } from 'rxjs/operators';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, ɵparseCookieValue } from '@angular/common';\n\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else if (typeof Headers !== 'undefined' && headers instanceof Headers) {\n this.headers = new Map();\n headers.forEach((values, name) => {\n this.setHeaderEntries(name, values);\n });\n }\n else {\n this.lazyInit = () => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertValidHeaders(headers);\n }\n this.headers = new Map();\n Object.entries(headers).forEach(([name, values]) => {\n this.setHeaderEntries(name, values);\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or override for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach(update => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach(key => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter(value => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n setHeaderEntries(name, values) {\n const headerValues = (Array.isArray(values) ? values : [values]).map((value) => value.toString());\n const key = name.toLowerCase();\n this.headers.set(key, headerValues);\n this.maybeSetNormalizedName(name, key);\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n/**\n * Verifies that the headers object has the right shape: the values\n * must be either strings, numbers or arrays. Throws an error if an invalid\n * header value is present.\n */\nfunction assertValidHeaders(headers) {\n for (const [key, value] of Object.entries(headers)) {\n if (!(typeof value === 'string' || typeof value === 'number') && !Array.isArray(value)) {\n throw new Error(`Unexpected value of the \\`${key}\\` header provided. ` +\n `Expecting either a string, a number or an array, but got: \\`${value}\\`.`);\n }\n }\n}\n\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => STANDARD_ENCODING_REPLACEMENTS[t] ?? s);\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n constructor(options = {}) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = options.fromObject[key];\n // convert the values to strings\n const values = Array.isArray(value) ? value.map(valueToString) : [valueToString(value)];\n this.map.set(key, values);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach(param => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach(_value => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return this.keys()\n .map(key => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter(param => param !== '')\n .join('&');\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach(update => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken<boolean>(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest<any>, delegate: HttpHandler): Observable<HttpEvent<any>> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * Checks for existence of a given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns True if the token exists, false otherwise.\n */\n has(token) {\n return this.map.has(token);\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n *\n * Note: The `FetchBackend` doesn't support progress report on uploads.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = update.context ?? this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n });\n }\n}\n\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n *\n * Note: The `FetchBackend` doesn't support progress report on uploads.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* HttpStatusCode.Ok */, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * Constructs an instance of `HttpRequestOptions<T>` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/tour-of-heroes/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable<Hero[]>{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/understanding-communicating-with-http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse<T>`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `<T>` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClient }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpHandler }]; } });\n\nconst XSSI_PREFIX$1 = /^\\)\\]\\}',?\\n/;\nconst REQUEST_URL_HEADER = `X-Request-URL`;\n/**\n * Determine an appropriate URL for the response, by checking either\n * response url or the X-Request-URL header.\n */\nfunction getResponseUrl$1(response) {\n if (response.url) {\n return response.url;\n }\n // stored as lowercase in the map\n const xRequestUrl = REQUEST_URL_HEADER.toLocaleLowerCase();\n return response.headers.get(xRequestUrl);\n}\n/**\n * Uses `fetch` to send requests to a backend server.\n *\n * This `FetchBackend` requires the support of the\n * [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) which is available on all\n * supported browsers and on Node.js v18 or later.\n *\n * @see {@link HttpHandler}\n *\n * @publicApi\n * @developerPreview\n */\nclass FetchBackend {\n constructor() {\n // We need to bind the native fetch to its context or it will throw an \"illegal invocation\"\n this.fetchImpl = inject(FetchFactory, { optional: true })?.fetch ?? fetch.bind(globalThis);\n this.ngZone = inject(NgZone);\n }\n handle(request) {\n return new Observable(observer => {\n const aborter = new AbortController();\n this.doRequest(request, aborter.signal, observer)\n .then(noop, error => observer.error(new HttpErrorResponse({ error })));\n return () => aborter.abort();\n });\n }\n async doRequest(request, signal, observer) {\n const init = this.createRequestInit(request);\n let response;\n try {\n const fetchPromise = this.fetchImpl(request.urlWithParams, { signal, ...init });\n // Make sure Zone.js doesn't trigger false-positive unhandled promise\n // error in case the Promise is rejected synchronously. See function\n // description for additional information.\n silenceSuperfluousUnhandledPromiseRejection(fetchPromise);\n // Send the `Sent` event before awaiting the response.\n observer.next({ type: HttpEventType.Sent });\n response = await fetchPromise;\n }\n catch (error) {\n observer.error(new HttpErrorResponse({\n error,\n status: error.status ?? 0,\n statusText: error.statusText,\n url: request.urlWithParams,\n headers: error.headers,\n }));\n return;\n }\n const headers = new HttpHeaders(response.headers);\n const statusText = response.statusText;\n const url = getResponseUrl$1(response) ?? request.urlWithParams;\n let status = response.status;\n let body = null;\n if (request.reportProgress) {\n observer.next(new HttpHeaderResponse({ headers, status, statusText, url }));\n }\n if (response.body) {\n // Read Progress\n const contentLength = response.headers.get('content-length');\n const chunks = [];\n const reader = response.body.getReader();\n let receivedLength = 0;\n let decoder;\n let partialText;\n // We have to check whether the Zone is defined in the global scope because this may be called\n // when the zone is nooped.\n const reqZone = typeof Zone !== 'undefined' && Zone.current;\n // Perform response processing outside of Angular zone to\n // ensure no excessive change detection runs are executed\n // Here calling the async ReadableStreamDefaultReader.read() is responsible for triggering CD\n await this.ngZone.runOutsideAngular(async () => {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n receivedLength += value.length;\n if (request.reportProgress) {\n partialText = request.responseType === 'text' ?\n (partialText ?? '') + (decoder ??= new TextDecoder).decode(value, { stream: true }) :\n undefined;\n const reportProgress = () => observer.next({\n type: HttpEventType.DownloadProgress,\n total: contentLength ? +contentLength : undefined,\n loaded: receivedLength,\n partialText,\n });\n reqZone ? reqZone.run(reportProgress) : reportProgress();\n }\n }\n });\n // Combine all chunks.\n const chunksAll = this.concatChunks(chunks, receivedLength);\n try {\n body = this.parseBody(request, chunksAll);\n }\n catch (error) {\n // Body loading or parsing failed\n observer.error(new HttpErrorResponse({\n error,\n headers: new HttpHeaders(response.headers),\n status: response.status,\n statusText: response.statusText,\n url: getResponseUrl$1(response) ?? request.urlWithParams,\n }));\n return;\n }\n }\n // Same behavior as the XhrBackend\n if (status === 0) {\n status = body ? 200 /* HttpStatusCode.Ok */ : 0;\n }\n // ok determines whether the response will be transmitted on the event or\n // error channel. Unsuccessful status codes (not 2xx) will always be errors,\n // but a successful status code can still result in an error if the user\n // asked for JSON data and the body cannot be parsed as such.\n const ok = status >= 200 && status < 300;\n if (ok) {\n observer.next(new HttpResponse({\n body,\n headers,\n status,\n statusText,\n url,\n }));\n // The full body has been received and delivered, no further events\n // are possible. This request is complete.\n observer.complete();\n }\n else {\n observer.error(new HttpErrorResponse({\n error: body,\n headers,\n status,\n statusText,\n url,\n }));\n }\n }\n parseBody(request, binContent) {\n switch (request.responseType) {\n case 'json':\n // stripping the XSSI when present\n const text = new TextDecoder().decode(binContent).replace(XSSI_PREFIX$1, '');\n return text === '' ? null : JSON.parse(text);\n case 'text':\n return new TextDecoder().decode(binContent);\n case 'blob':\n return new Blob([binContent]);\n case 'arraybuffer':\n return binContent.buffer;\n }\n }\n createRequestInit(req) {\n // We could share some of this logic with the XhrBackend\n const headers = {};\n const credentials = req.withCredentials ? 'include' : undefined;\n // Setting all the requested headers.\n req.headers.forEach((name, values) => (headers[name] = values.join(',')));\n // Add an Accept header if one isn't present already.\n headers['Accept'] ??= 'application/json, text/plain, */*';\n // Auto-detect the Content-Type header if one isn't present already.\n if (!headers['Content-Type']) {\n const detectedType = req.detectContentTypeHeader();\n // Sometimes Content-Type detection fails.\n if (detectedType !== null) {\n headers['Content-Type'] = detectedType;\n }\n }\n return {\n body: req.serializeBody(),\n method: req.method,\n headers,\n credentials,\n };\n }\n concatChunks(chunks, totalLength) {\n const chunksAll = new Uint8Array(totalLength);\n let position = 0;\n for (const chunk of chunks) {\n chunksAll.set(chunk, position);\n position += chunk.length;\n }\n return chunksAll;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FetchBackend, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FetchBackend }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FetchBackend, decorators: [{\n type: Injectable\n }] });\n/**\n * Abstract class to provide a mocked implementation of `fetch()`\n */\nclass FetchFactory {\n}\nfunction noop() { }\n/**\n * Zone.js treats a rejected promise that has not yet been awaited\n * as an unhandled error. This function adds a noop `.then` to make\n * sure that Zone.js doesn't throw an error if the Promise is rejected\n * synchronously.\n */\nfunction silenceSuperfluousUnhandledPromiseRejection(promise) {\n promise.then(noop, noop);\n}\n\nfunction interceptorChainEndFn(req, finalHandlerFn) {\n return finalHandlerFn(req);\n}\n/**\n * Constructs a `ChainedInterceptorFn` which adapts a legacy `HttpInterceptor` to the\n * `ChainedInterceptorFn` interface.\n */\nfunction adaptLegacyInterceptorToChain(chainTailFn, interceptor) {\n return (initialRequest, finalHandlerFn) => interceptor.intercept(initialRequest, {\n handle: (downstreamRequest) => chainTailFn(downstreamRequest, finalHandlerFn),\n });\n}\n/**\n * Constructs a `ChainedInterceptorFn` which wraps and invokes a functional interceptor in the given\n * injector.\n */\nfunction chainedInterceptorFn(chainTailFn, interceptorFn, injector) {\n // clang-format off\n return (initialRequest, finalHandlerFn) => injector.runInContext(() => interceptorFn(initialRequest, downstreamRequest => chainTailFn(downstreamRequest, finalHandlerFn)));\n // clang-format on\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken(ngDevMode ? 'HTTP_INTERCEPTORS' : '');\n/**\n * A multi-provided token of `HttpInterceptorFn`s.\n */\nconst HTTP_INTERCEPTOR_FNS = new InjectionToken(ngDevMode ? 'HTTP_INTERCEPTOR_FNS' : '');\n/**\n * A multi-provided token of `HttpInterceptorFn`s that are only set in root.\n */\nconst HTTP_ROOT_INTERCEPTOR_FNS = new InjectionToken(ngDevMode ? 'HTTP_ROOT_INTERCEPTOR_FNS' : '');\n/**\n * Creates an `HttpInterceptorFn` which lazily initializes an interceptor chain from the legacy\n * class-based interceptors and runs the request through it.\n */\nfunction legacyInterceptorFnFactory() {\n let chain = null;\n return (req, handler) => {\n if (chain === null) {\n const interceptors = inject(HTTP_INTERCEPTORS, { optional: true }) ?? [];\n // Note: interceptors are wrapped right-to-left so that final execution order is\n // left-to-right. That is, if `interceptors` is the array `[a, b, c]`, we want to\n // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside\n // out.\n chain = interceptors.reduceRight(adaptLegacyInterceptorToChain, interceptorChainEndFn);\n }\n const pendingTasks = inject(ɵInitialRenderPendingTasks);\n const taskId = pendingTasks.add();\n return chain(req, handler).pipe(finalize(() => pendingTasks.remove(taskId)));\n };\n}\nclass HttpInterceptorHandler extends HttpHandler {\n constructor(backend, injector) {\n super();\n this.backend = backend;\n this.injector = injector;\n this.chain = null;\n this.pendingTasks = inject(ɵInitialRenderPendingTasks);\n }\n handle(initialRequest) {\n if (this.chain === null) {\n const dedupedInterceptorFns = Array.from(new Set([\n ...this.injector.get(HTTP_INTERCEPTOR_FNS),\n ...this.injector.get(HTTP_ROOT_INTERCEPTOR_FNS, []),\n ]));\n // Note: interceptors are wrapped right-to-left so that final execution order is\n // left-to-right. That is, if `dedupedInterceptorFns` is the array `[a, b, c]`, we want to\n // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside\n // out.\n this.chain = dedupedInterceptorFns.reduceRight((nextSequencedFn, interceptorFn) => chainedInterceptorFn(nextSequencedFn, interceptorFn, this.injector), interceptorChainEndFn);\n }\n const taskId = this.pendingTasks.add();\n return this.chain(initialRequest, downstreamRequest => this.backend.handle(downstreamRequest))\n .pipe(finalize(() => this.pendingTasks.remove(taskId)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpInterceptorHandler, deps: [{ token: HttpBackend }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpInterceptorHandler }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpInterceptorHandler, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpBackend }, { type: i0.EnvironmentInjector }]; } });\n\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n/**\n * When a pending <script> is unsubscribed we'll move it to this document, so it won't be\n * executed.\n */\nlet foreignDocument;\n// Error text given when a JSONP script is injected, but doesn't invoke the callback\n// passed in its URL.\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\n// Error text given when a request is passed to the JsonpClientBackend that doesn't\n// have a request method JSONP.\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use JSONP request method.';\nconst JSONP_ERR_WRONG_RESPONSE_TYPE = 'JSONP requests must use Json response type.';\n// Error text given when a request is passed to the JsonpClientBackend that has\n// headers set\nconst JSONP_ERR_HEADERS_NOT_SUPPORTED = 'JSONP requests do not support headers.';\n/**\n * DI token/abstract type representing a map of JSONP callbacks.\n *\n * In the browser, this should always be the `window` object.\n *\n *\n */\nclass JsonpCallbackContext {\n}\n/**\n * Factory function that determines where to store JSONP callbacks.\n *\n * Ordinarily JSONP callbacks are stored on the `window` object, but this may not exist\n * in test environments. In that case, callbacks are stored on an anonymous object instead.\n *\n *\n */\nfunction jsonpCallbackContext() {\n if (typeof window === 'object') {\n return window;\n }\n return {};\n}\n/**\n * Processes an `HttpRequest` with the JSONP method,\n * by performing JSONP style requests.\n * @see {@link HttpHandler}\n * @see {@link HttpXhrBackend}\n *\n * @publicApi\n */\nclass JsonpClientBackend {\n constructor(callbackMap, document) {\n this.callbackMap = callbackMap;\n this.document = document;\n /**\n * A resolved promise that can be used to schedule microtasks in the event handlers.\n */\n this.resolvedPromise = Promise.resolve();\n }\n /**\n * Get the name of the next callback method, by incrementing the global `nextRequestId`.\n */\n nextCallback() {\n return `ng_jsonp_callback_${nextRequestId++}`;\n }\n /**\n * Processes a JSONP request and returns an event stream of the results.\n * @param req The request object.\n * @returns An observable of the response events.\n *\n */\n handle(req) {\n // Firstly, check both the method and response type. If either doesn't match\n // then the request was improperly routed here and cannot be handled.\n if (req.method !== 'JSONP') {\n throw new Error(JSONP_ERR_WRONG_METHOD);\n }\n else if (req.responseType !== 'json') {\n throw new Error(JSONP_ERR_WRONG_RESPONSE_TYPE);\n }\n // Check the request headers. JSONP doesn't support headers and\n // cannot set any that were supplied.\n if (req.headers.keys().length > 0) {\n throw new Error(JSONP_ERR_HEADERS_NOT_SUPPORTED);\n }\n // Everything else happens inside the Observable boundary.\n return new Observable((observer) => {\n // The first step to make a request is to generate the callback name, and replace the\n // callback placeholder in the URL with the name. Care has to be taken here to ensure\n // a trailing &, if matched, gets inserted back into the URL in the correct place.\n const callback = this.nextCallback();\n const url = req.urlWithParams.replace(/=JSONP_CALLBACK(&|$)/, `=${callback}$1`);\n // Construct the <script> tag and point it at the URL.\n const node = this.document.createElement('script');\n node.src = url;\n // A JSONP request requires waiting for multiple callbacks. These variables\n // are closed over and track state across those callbacks.\n // The response object, if one has been received, or null otherwise.\n let body = null;\n // Whether the response callback has been called.\n let finished = false;\n // Set the response callback in this.callbackMap (which will be the window\n // object in the browser. The script being loaded via the <script> tag will\n // eventually call this callback.\n this.callbackMap[callback] = (data) => {\n // Data has been received from the JSONP script. Firstly, delete this callback.\n delete this.callbackMap[callback];\n // Set state to indicate data was received.\n body = data;\n finished = true;\n };\n // cleanup() is a utility closure that removes the <script> from the page and\n // the response callback from the window. This logic is used in both the\n // success, error, and cancellation paths, so it's extracted out for convenience.\n const cleanup = () => {\n // Remove the <script> tag if it's still on the page.\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n // Remove the response callback from the callbackMap (window object in the\n // browser).\n delete this.callbackMap[callback];\n };\n // onLoad() is the success callback which runs after the response callback\n // if the JSONP script loads successfully. The event itself is unimportant.\n // If something went wrong, onLoad() may run without the response callback\n // having been invoked.\n const onLoad = (event) => {\n // We wrap it in an extra Promise, to ensure the microtask\n // is scheduled after the loaded endpoint has executed any potential microtask itself,\n // which is not guaranteed in Internet Explorer and EdgeHTML. See issue #39496\n this.resolvedPromise.then(() => {\n // Cleanup the page.\n cleanup();\n // Check whether the response callback has run.\n if (!finished) {\n // It hasn't, something went wrong with the request. Return an error via\n // the Observable error path. All JSONP errors have status 0.\n observer.error(new HttpErrorResponse({\n url,\n status: 0,\n statusText: 'JSONP Error',\n error: new Error(JSONP_ERR_NO_CALLBACK),\n }));\n return;\n }\n // Success. body either contains the response body or null if none was\n // returned.\n observer.next(new HttpResponse({\n body,\n status: 200 /* HttpStatusCode.Ok */,\n statusText: 'OK',\n url,\n }));\n // Complete the stream, the response is over.\n observer.complete();\n });\n };\n // onError() is the error callback, which runs if the script returned generates\n // a Javascript error. It emits the error via the Observable error channel as\n // a HttpErrorResponse.\n const onError = (error) => {\n cleanup();\n // Wrap the error in a HttpErrorResponse.\n observer.error(new HttpErrorResponse({\n error,\n status: 0,\n statusText: 'JSONP Error',\n url,\n }));\n };\n // Subscribe to both the success (load) and error events on the <script> tag,\n // and add it to the page.\n node.addEventListener('load', onLoad);\n node.addEventListener('error', onError);\n this.document.body.appendChild(node);\n // The request has now been successfully sent.\n observer.next({ type: HttpEventType.Sent });\n // Cancellation handler.\n return () => {\n if (!finished) {\n this.removeListeners(node);\n }\n // And finally, clean up the page.\n cleanup();\n };\n });\n }\n removeListeners(script) {\n // Issue #34818\n // Changing <script>'s ownerDocument will prevent it from execution.\n // https://html.spec.whatwg.org/multipage/scripting.html#execute-the-script-block\n if (!foreignDocument) {\n foreignDocument = this.document.implementation.createHTMLDocument();\n }\n foreignDocument.adoptNode(script);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonpClientBackend, deps: [{ token: JsonpCallbackContext }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonpClientBackend }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonpClientBackend, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: JsonpCallbackContext }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/**\n * Identifies requests with the method JSONP and shifts them to the `JsonpClientBackend`.\n */\nfunction jsonpInterceptorFn(req, next) {\n if (req.method === 'JSONP') {\n return inject(JsonpClientBackend).handle(req);\n }\n // Fall through for normal HTTP requests.\n return next(req);\n}\n/**\n * Identifies requests with the method JSONP and\n * shifts them to the `JsonpClientBackend`.\n *\n * @see {@link HttpInterceptor}\n *\n * @publicApi\n */\nclass JsonpInterceptor {\n constructor(injector) {\n this.injector = injector;\n }\n /**\n * Identifies and handles a given JSONP request.\n * @param initialRequest The outgoing request object to handle.\n * @param next The next interceptor in the chain, or the backend\n * if no interceptors remain in the chain.\n * @returns An observable of the event stream.\n */\n intercept(initialRequest, next) {\n return this.injector.runInContext(() => jsonpInterceptorFn(initialRequest, downstreamRequest => next.handle(downstreamRequest)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonpInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonpInterceptor }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonpInterceptor, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.EnvironmentInjector }]; } });\n\nconst XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n/**\n * Determine an appropriate URL for the response, by checking either\n * XMLHttpRequest.responseURL or the X-Request-URL header.\n */\nfunction getResponseUrl(xhr) {\n if ('responseURL' in xhr && xhr.responseURL) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n}\n/**\n * Uses `XMLHttpRequest` to send requests to a backend server.\n * @see {@link HttpHandler}\n * @see {@link JsonpClientBackend}\n *\n * @publicApi\n */\nclass HttpXhrBackend {\n constructor(xhrFactory) {\n this.xhrFactory = xhrFactory;\n }\n /**\n * Processes a request and returns a stream of response events.\n * @param req The request object.\n * @returns An observable of the response events.\n */\n handle(req) {\n // Quick check to give a better error message when a user attempts to use\n // HttpClient.jsonp() without installing the HttpClientJsonpModule\n if (req.method === 'JSONP') {\n throw new ɵRuntimeError(-2800 /* RuntimeErrorCode.MISSING_JSONP_MODULE */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Cannot make a JSONP request without JSONP support. To fix the problem, either add the \\`withJsonpSupport()\\` call (if \\`provideHttpClient()\\` is used) or import the \\`HttpClientJsonpModule\\` in the root NgModule.`);\n }\n // Check whether this factory has a special function to load an XHR implementation\n // for various non-browser environments. We currently limit it to only `ServerXhr`\n // class, which needs to load an XHR implementation.\n const xhrFactory = this.xhrFactory;\n const source = xhrFactory.ɵloadImpl ? from(xhrFactory.ɵloadImpl()) : of(null);\n return source.pipe(switchMap(() => {\n // Everything happens on Observable subscription.\n return new Observable((observer) => {\n // Start by setting up the XHR object with request method, URL, and withCredentials\n // flag.\n const xhr = xhrFactory.build();\n xhr.open(req.method, req.urlWithParams);\n if (req.withCredentials) {\n xhr.withCredentials = true;\n }\n // Add all the requested headers.\n req.headers.forEach((name, values) => xhr.setRequestHeader(name, values.join(',')));\n // Add an Accept header if one isn't present already.\n if (!req.headers.has('Accept')) {\n xhr.setRequestHeader('Accept', 'application/json, text/plain, */*');\n }\n // Auto-detect the Content-Type header if one isn't present already.\n if (!req.headers.has('Content-Type')) {\n const detectedType = req.detectContentTypeHeader();\n // Sometimes Content-Type detection fails.\n if (detectedType !== null) {\n xhr.setRequestHeader('Content-Type', detectedType);\n }\n }\n // Set the responseType if one was requested.\n if (req.responseType) {\n const responseType = req.responseType.toLowerCase();\n // JSON responses need to be processed as text. This is because if the server\n // returns an XSSI-prefixed JSON response, the browser will fail to parse it,\n // xhr.response will be null, and xhr.responseText cannot be accessed to\n // retrieve the prefixed JSON data in order to strip the prefix. Thus, all JSON\n // is parsed by first requesting text and then applying JSON.parse.\n xhr.responseType = ((responseType !== 'json') ? responseType : 'text');\n }\n // Serialize the request body if one is present. If not, this will be set to null.\n const reqBody = req.serializeBody();\n // If progress events are enabled, response headers will be delivered\n // in two events - the HttpHeaderResponse event and the full HttpResponse\n // event. However, since response headers don't change in between these\n // two events, it doesn't make sense to parse them twice. So headerResponse\n // caches the data extracted from the response whenever it's first parsed,\n // to ensure parsing isn't duplicated.\n let headerResponse = null;\n // partialFromXhr extracts the HttpHeaderResponse from the current XMLHttpRequest\n // state, and memoizes it into headerResponse.\n const partialFromXhr = () => {\n if (headerResponse !== null) {\n return headerResponse;\n }\n const statusText = xhr.statusText || 'OK';\n // Parse headers from XMLHttpRequest - this step is lazy.\n const headers = new HttpHeaders(xhr.getAllResponseHeaders());\n // Read the response URL from the XMLHttpResponse instance and fall back on the\n // request URL.\n const url = getResponseUrl(xhr) || req.url;\n // Construct the HttpHeaderResponse and memoize it.\n headerResponse =\n new HttpHeaderResponse({ headers, status: xhr.status, statusText, url });\n return headerResponse;\n };\n // Next, a few closures are defined for the various events which XMLHttpRequest can\n // emit. This allows them to be unregistered as event listeners later.\n // First up is the load event, which represents a response being fully available.\n const onLoad = () => {\n // Read response state from the memoized partial data.\n let { headers, status, statusText, url } = partialFromXhr();\n // The body will be read out if present.\n let body = null;\n if (status !== 204 /* HttpStatusCode.NoContent */) {\n // Use XMLHttpRequest.response if set, responseText otherwise.\n body = (typeof xhr.response === 'undefined') ? xhr.responseText : xhr.response;\n }\n // Normalize another potential bug (this one comes from CORS).\n if (status === 0) {\n status = !!body ? 200 /* HttpStatusCode.Ok */ : 0;\n }\n // ok determines whether the response will be transmitted on the event or\n // error channel. Unsuccessful status codes (not 2xx) will always be errors,\n // but a successful status code can still result in an error if the user\n // asked for JSON data and the body cannot be parsed as such.\n let ok = status >= 200 && status < 300;\n // Check whether the body needs to be parsed as JSON (in many cases the browser\n // will have done that already).\n if (req.responseType === 'json' && typeof body === 'string') {\n // Save the original body, before attempting XSSI prefix stripping.\n const originalBody = body;\n body = body.replace(XSSI_PREFIX, '');\n try {\n // Attempt the parse. If it fails, a parse error should be delivered to the\n // user.\n body = body !== '' ? JSON.parse(body) : null;\n }\n catch (error) {\n // Since the JSON.parse failed, it's reasonable to assume this might not have\n // been a JSON response. Restore the original body (including any XSSI prefix)\n // to deliver a better error response.\n body = originalBody;\n // If this was an error request to begin with, leave it as a string, it\n // probably just isn't JSON. Otherwise, deliver the parsing error to the user.\n if (ok) {\n // Even though the response status was 2xx, this is still an error.\n ok = false;\n // The parse error contains the text of the body that failed to parse.\n body = { error, text: body };\n }\n }\n }\n if (ok) {\n // A successful response is delivered on the event stream.\n observer.next(new HttpResponse({\n body,\n headers,\n status,\n statusText,\n url: url || undefined,\n }));\n // The full body has been received and delivered, no further events\n // are possible. This request is complete.\n observer.complete();\n }\n else {\n // An unsuccessful request is delivered on the error channel.\n observer.error(new HttpErrorResponse({\n // The error in this case is the response body (error from the server).\n error: body,\n headers,\n status,\n statusText,\n url: url || undefined,\n }));\n }\n };\n // The onError callback is called when something goes wrong at the network level.\n // Connection timeout, DNS error, offline, etc. These are actual errors, and are\n // transmitted on the error channel.\n const onError = (error) => {\n const { url } = partialFromXhr();\n const res = new HttpErrorResponse({\n error,\n status: xhr.status || 0,\n statusText: xhr.statusText || 'Unknown Error',\n url: url || undefined,\n });\n observer.error(res);\n };\n // The sentHeaders flag tracks whether the HttpResponseHeaders event\n // has been sent on the stream. This is necessary to track if progress\n // is enabled since the event will be sent on only the first download\n // progress event.\n let sentHeaders = false;\n // The download progress event handler, which is only registered if\n // progress events are enabled.\n const onDownProgress = (event) => {\n // Send the HttpResponseHeaders event if it hasn't been sent already.\n if (!sentHeaders) {\n observer.next(partialFromXhr());\n sentHeaders = true;\n }\n // Start building the download progress event to deliver on the response\n // event stream.\n let progressEvent = {\n type: HttpEventType.DownloadProgress,\n loaded: event.loaded,\n };\n // Set the total number of bytes in the event if it's available.\n if (event.lengthComputable) {\n progressEvent.total = event.total;\n }\n // If the request was for text content and a partial response is\n // available on XMLHttpRequest, include it in the progress event\n // to allow for streaming reads.\n if (req.responseType === 'text' && !!xhr.responseText) {\n progressEvent.partialText = xhr.responseText;\n }\n // Finally, fire the event.\n observer.next(progressEvent);\n };\n // The upload progress event handler, which is only registered if\n // progress events are enabled.\n const onUpProgress = (event) => {\n // Upload progress events are simpler. Begin building the progress\n // event.\n let progress = {\n type: HttpEventType.UploadProgress,\n loaded: event.loaded,\n };\n // If the total number of bytes being uploaded is available, include\n // it.\n if (event.lengthComputable) {\n progress.total = event.total;\n }\n // Send the event.\n observer.next(progress);\n };\n // By default, register for load and error events.\n xhr.addEventListener('load', onLoad);\n xhr.addEventListener('error', onError);\n xhr.addEventListener('timeout', onError);\n xhr.addEventListener('abort', onError);\n // Progress events are only enabled if requested.\n if (req.reportProgress) {\n // Download progress is always enabled if requested.\n xhr.addEventListener('progress', onDownProgress);\n // Upload progress depends on whether there is a body to upload.\n if (reqBody !== null && xhr.upload) {\n xhr.upload.addEventListener('progress', onUpProgress);\n }\n }\n // Fire the request, and notify the event stream that it was fired.\n xhr.send(reqBody);\n observer.next({ type: HttpEventType.Sent });\n // This is the return from the Observable function, which is the\n // request cancellation handler.\n return () => {\n // On a cancellation, remove all registered event listeners.\n xhr.removeEventListener('error', onError);\n xhr.removeEventListener('abort', onError);\n xhr.removeEventListener('load', onLoad);\n xhr.removeEventListener('timeout', onError);\n if (req.reportProgress) {\n xhr.removeEventListener('progress', onDownProgress);\n if (reqBody !== null && xhr.upload) {\n xhr.upload.removeEventListener('progress', onUpProgress);\n }\n }\n // Finally, abort the in-flight request.\n if (xhr.readyState !== xhr.DONE) {\n xhr.abort();\n }\n };\n });\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpXhrBackend, deps: [{ token: i1.XhrFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpXhrBackend }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpXhrBackend, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.XhrFactory }]; } });\n\nconst XSRF_ENABLED = new InjectionToken('XSRF_ENABLED');\nconst XSRF_DEFAULT_COOKIE_NAME = 'XSRF-TOKEN';\nconst XSRF_COOKIE_NAME = new InjectionToken('XSRF_COOKIE_NAME', {\n providedIn: 'root',\n factory: () => XSRF_DEFAULT_COOKIE_NAME,\n});\nconst XSRF_DEFAULT_HEADER_NAME = 'X-XSRF-TOKEN';\nconst XSRF_HEADER_NAME = new InjectionToken('XSRF_HEADER_NAME', {\n providedIn: 'root',\n factory: () => XSRF_DEFAULT_HEADER_NAME,\n});\n/**\n * Retrieves the current XSRF token to use with the next outgoing request.\n *\n * @publicApi\n */\nclass HttpXsrfTokenExtractor {\n}\n/**\n * `HttpXsrfTokenExtractor` which retrieves the token from a cookie.\n */\nclass HttpXsrfCookieExtractor {\n constructor(doc, platform, cookieName) {\n this.doc = doc;\n this.platform = platform;\n this.cookieName = cookieName;\n this.lastCookieString = '';\n this.lastToken = null;\n /**\n * @internal for testing\n */\n this.parseCount = 0;\n }\n getToken() {\n if (this.platform === 'server') {\n return null;\n }\n const cookieString = this.doc.cookie || '';\n if (cookieString !== this.lastCookieString) {\n this.parseCount++;\n this.lastToken = ɵparseCookieValue(cookieString, this.cookieName);\n this.lastCookieString = cookieString;\n }\n return this.lastToken;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpXsrfCookieExtractor, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: XSRF_COOKIE_NAME }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpXsrfCookieExtractor }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpXsrfCookieExtractor, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [XSRF_COOKIE_NAME]\n }] }]; } });\nfunction xsrfInterceptorFn(req, next) {\n const lcUrl = req.url.toLowerCase();\n // Skip both non-mutating requests and absolute URLs.\n // Non-mutating requests don't require a token, and absolute URLs require special handling\n // anyway as the cookie set\n // on our origin is not the same as the token expected by another origin.\n if (!inject(XSRF_ENABLED) || req.method === 'GET' || req.method === 'HEAD' ||\n lcUrl.startsWith('http://') || lcUrl.startsWith('https://')) {\n return next(req);\n }\n const token = inject(HttpXsrfTokenExtractor).getToken();\n const headerName = inject(XSRF_HEADER_NAME);\n // Be careful not to overwrite an existing header of the same name.\n if (token != null && !req.headers.has(headerName)) {\n req = req.clone({ headers: req.headers.set(headerName, token) });\n }\n return next(req);\n}\n/**\n * `HttpInterceptor` which adds an XSRF token to eligible outgoing requests.\n */\nclass HttpXsrfInterceptor {\n constructor(injector) {\n this.injector = injector;\n }\n intercept(initialRequest, next) {\n return this.injector.runInContext(() => xsrfInterceptorFn(initialRequest, downstreamRequest => next.handle(downstreamRequest)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpXsrfInterceptor, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpXsrfInterceptor }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpXsrfInterceptor, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.EnvironmentInjector }]; } });\n\n/**\n * Identifies a particular kind of `HttpFeature`.\n *\n * @publicApi\n */\nvar HttpFeatureKind;\n(function (HttpFeatureKind) {\n HttpFeatureKind[HttpFeatureKind[\"Interceptors\"] = 0] = \"Interceptors\";\n HttpFeatureKind[HttpFeatureKind[\"LegacyInterceptors\"] = 1] = \"LegacyInterceptors\";\n HttpFeatureKind[HttpFeatureKind[\"CustomXsrfConfiguration\"] = 2] = \"CustomXsrfConfiguration\";\n HttpFeatureKind[HttpFeatureKind[\"NoXsrfProtection\"] = 3] = \"NoXsrfProtection\";\n HttpFeatureKind[HttpFeatureKind[\"JsonpSupport\"] = 4] = \"JsonpSupport\";\n HttpFeatureKind[HttpFeatureKind[\"RequestsMadeViaParent\"] = 5] = \"RequestsMadeViaParent\";\n HttpFeatureKind[HttpFeatureKind[\"Fetch\"] = 6] = \"Fetch\";\n})(HttpFeatureKind || (HttpFeatureKind = {}));\nfunction makeHttpFeature(kind, providers) {\n return {\n ɵkind: kind,\n ɵproviders: providers,\n };\n}\n/**\n * Configures Angular's `HttpClient` service to be available for injection.\n *\n * By default, `HttpClient` will be configured for injection with its default options for XSRF\n * protection of outgoing requests. Additional configuration options can be provided by passing\n * feature functions to `provideHttpClient`. For example, HTTP interceptors can be added using the\n * `withInterceptors(...)` feature.\n *\n * @see {@link withInterceptors}\n * @see {@link withInterceptorsFromDi}\n * @see {@link withXsrfConfiguration}\n * @see {@link withNoXsrfProtection}\n * @see {@link withJsonpSupport}\n * @see {@link withRequestsMadeViaParent}\n * @see {@link withFetch}\n */\nfunction provideHttpClient(...features) {\n if (ngDevMode) {\n const featureKinds = new Set(features.map(f => f.ɵkind));\n if (featureKinds.has(HttpFeatureKind.NoXsrfProtection) &&\n featureKinds.has(HttpFeatureKind.CustomXsrfConfiguration)) {\n throw new Error(ngDevMode ?\n `Configuration error: found both withXsrfConfiguration() and withNoXsrfProtection() in the same call to provideHttpClient(), which is a contradiction.` :\n '');\n }\n }\n const providers = [\n HttpClient,\n HttpXhrBackend,\n HttpInterceptorHandler,\n { provide: HttpHandler, useExisting: HttpInterceptorHandler },\n { provide: HttpBackend, useExisting: HttpXhrBackend },\n {\n provide: HTTP_INTERCEPTOR_FNS,\n useValue: xsrfInterceptorFn,\n multi: true,\n },\n { provide: XSRF_ENABLED, useValue: true },\n { provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor },\n ];\n for (const feature of features) {\n providers.push(...feature.ɵproviders);\n }\n return makeEnvironmentProviders(providers);\n}\n/**\n * Adds one or more functional-style HTTP interceptors to the configuration of the `HttpClient`\n * instance.\n *\n * @see {@link HttpInterceptorFn}\n * @see {@link provideHttpClient}\n * @publicApi\n */\nfunction withInterceptors(interceptorFns) {\n return makeHttpFeature(HttpFeatureKind.Interceptors, interceptorFns.map(interceptorFn => {\n return {\n provide: HTTP_INTERCEPTOR_FNS,\n useValue: interceptorFn,\n multi: true,\n };\n }));\n}\nconst LEGACY_INTERCEPTOR_FN = new InjectionToken('LEGACY_INTERCEPTOR_FN');\n/**\n * Includes class-based interceptors configured using a multi-provider in the current injector into\n * the configured `HttpClient` instance.\n *\n * Prefer `withInterceptors` and functional interceptors instead, as support for DI-provided\n * interceptors may be phased out in a later release.\n *\n * @see {@link HttpInterceptor}\n * @see {@link HTTP_INTERCEPTORS}\n * @see {@link provideHttpClient}\n */\nfunction withInterceptorsFromDi() {\n // Note: the legacy interceptor function is provided here via an intermediate token\n // (`LEGACY_INTERCEPTOR_FN`), using a pattern which guarantees that if these providers are\n // included multiple times, all of the multi-provider entries will have the same instance of the\n // interceptor function. That way, the `HttpINterceptorHandler` will dedup them and legacy\n // interceptors will not run multiple times.\n return makeHttpFeature(HttpFeatureKind.LegacyInterceptors, [\n {\n provide: LEGACY_INTERCEPTOR_FN,\n useFactory: legacyInterceptorFnFactory,\n },\n {\n provide: HTTP_INTERCEPTOR_FNS,\n useExisting: LEGACY_INTERCEPTOR_FN,\n multi: true,\n }\n ]);\n}\n/**\n * Customizes the XSRF protection for the configuration of the current `HttpClient` instance.\n *\n * This feature is incompatible with the `withNoXsrfProtection` feature.\n *\n * @see {@link provideHttpClient}\n */\nfunction withXsrfConfiguration({ cookieName, headerName }) {\n const providers = [];\n if (cookieName !== undefined) {\n providers.push({ provide: XSRF_COOKIE_NAME, useValue: cookieName });\n }\n if (headerName !== undefined) {\n providers.push({ provide: XSRF_HEADER_NAME, useValue: headerName });\n }\n return makeHttpFeature(HttpFeatureKind.CustomXsrfConfiguration, providers);\n}\n/**\n * Disables XSRF protection in the configuration of the current `HttpClient` instance.\n *\n * This feature is incompatible with the `withXsrfConfiguration` feature.\n *\n * @see {@link provideHttpClient}\n */\nfunction withNoXsrfProtection() {\n return makeHttpFeature(HttpFeatureKind.NoXsrfProtection, [\n {\n provide: XSRF_ENABLED,\n useValue: false,\n },\n ]);\n}\n/**\n * Add JSONP support to the configuration of the current `HttpClient` instance.\n *\n * @see {@link provideHttpClient}\n */\nfunction withJsonpSupport() {\n return makeHttpFeature(HttpFeatureKind.JsonpSupport, [\n JsonpClientBackend,\n { provide: JsonpCallbackContext, useFactory: jsonpCallbackContext },\n { provide: HTTP_INTERCEPTOR_FNS, useValue: jsonpInterceptorFn, multi: true },\n ]);\n}\n/**\n * Configures the current `HttpClient` instance to make requests via the parent injector's\n * `HttpClient` instead of directly.\n *\n * By default, `provideHttpClient` configures `HttpClient` in its injector to be an independent\n * instance. For example, even if `HttpClient` is configured in the parent injector with\n * one or more interceptors, they will not intercept requests made via this instance.\n *\n * With this option enabled, once the request has passed through the current injector's\n * interceptors, it will be delegated to the parent injector's `HttpClient` chain instead of\n * dispatched directly, and interceptors in the parent configuration will be applied to the request.\n *\n * If there are several `HttpClient` instances in the injector hierarchy, it's possible for\n * `withRequestsMadeViaParent` to be used at multiple levels, which will cause the request to\n * \"bubble up\" until either reaching the root level or an `HttpClient` which was not configured with\n * this option.\n *\n * @see {@link provideHttpClient}\n * @developerPreview\n */\nfunction withRequestsMadeViaParent() {\n return makeHttpFeature(HttpFeatureKind.RequestsMadeViaParent, [\n {\n provide: HttpBackend,\n useFactory: () => {\n const handlerFromParent = inject(HttpHandler, { skipSelf: true, optional: true });\n if (ngDevMode && handlerFromParent === null) {\n throw new Error('withRequestsMadeViaParent() can only be used when the parent injector also configures HttpClient');\n }\n return handlerFromParent;\n },\n },\n ]);\n}\n/**\n * Configures the current `HttpClient` instance to make requests using the fetch API.\n *\n * This `FetchBackend` requires the support of the Fetch API which is available on all evergreen\n * browsers and on NodeJS from v18 onward.\n *\n * Note: The Fetch API doesn't support progress report on uploads.\n *\n * @publicApi\n * @developerPreview\n */\nfunction withFetch() {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && typeof fetch !== 'function') {\n // TODO: Create a runtime error\n // TODO: Use ENVIRONMENT_INITIALIZER to contextualize the error message (browser or server)\n throw new Error('The `withFetch` feature of HttpClient requires the `fetch` API to be available. ' +\n 'If you run the code in a Node environment, make sure you use Node v18.10 or later.');\n }\n return makeHttpFeature(HttpFeatureKind.Fetch, [\n FetchBackend,\n { provide: HttpBackend, useExisting: FetchBackend },\n ]);\n}\n\n/**\n * Configures XSRF protection support for outgoing requests.\n *\n * For a server that supports a cookie-based XSRF protection system,\n * use directly to configure XSRF protection with the correct\n * cookie and header names.\n *\n * If no names are supplied, the default cookie name is `XSRF-TOKEN`\n * and the default header name is `X-XSRF-TOKEN`.\n *\n * @publicApi\n */\nclass HttpClientXsrfModule {\n /**\n * Disable the default XSRF protection.\n */\n static disable() {\n return {\n ngModule: HttpClientXsrfModule,\n providers: [\n withNoXsrfProtection().ɵproviders,\n ],\n };\n }\n /**\n * Configure XSRF protection.\n * @param options An object that can specify either or both\n * cookie name or header name.\n * - Cookie name default is `XSRF-TOKEN`.\n * - Header name default is `X-XSRF-TOKEN`.\n *\n */\n static withOptions(options = {}) {\n return {\n ngModule: HttpClientXsrfModule,\n providers: withXsrfConfiguration(options).ɵproviders,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientXsrfModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientXsrfModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientXsrfModule, providers: [\n HttpXsrfInterceptor,\n { provide: HTTP_INTERCEPTORS, useExisting: HttpXsrfInterceptor, multi: true },\n { provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor },\n withXsrfConfiguration({\n cookieName: XSRF_DEFAULT_COOKIE_NAME,\n headerName: XSRF_DEFAULT_HEADER_NAME,\n }).ɵproviders,\n { provide: XSRF_ENABLED, useValue: true },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientXsrfModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n HttpXsrfInterceptor,\n { provide: HTTP_INTERCEPTORS, useExisting: HttpXsrfInterceptor, multi: true },\n { provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor },\n withXsrfConfiguration({\n cookieName: XSRF_DEFAULT_COOKIE_NAME,\n headerName: XSRF_DEFAULT_HEADER_NAME,\n }).ɵproviders,\n { provide: XSRF_ENABLED, useValue: true },\n ],\n }]\n }] });\n/**\n * Configures the [dependency injector](guide/glossary#injector) for `HttpClient`\n * with supporting services for XSRF. Automatically imported by `HttpClientModule`.\n *\n * You can add interceptors to the chain behind `HttpClient` by binding them to the\n * multiprovider for built-in [DI token](guide/glossary#di-token) `HTTP_INTERCEPTORS`.\n *\n * @publicApi\n */\nclass HttpClientModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientModule, providers: [\n provideHttpClient(withInterceptorsFromDi()),\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientModule, decorators: [{\n type: NgModule,\n args: [{\n /**\n * Configures the [dependency injector](guide/glossary#injector) where it is imported\n * with supporting services for HTTP communications.\n */\n providers: [\n provideHttpClient(withInterceptorsFromDi()),\n ],\n }]\n }] });\n/**\n * Configures the [dependency injector](guide/glossary#injector) for `HttpClient`\n * with supporting services for JSONP.\n * Without this module, Jsonp requests reach the backend\n * with method JSONP, where they are rejected.\n *\n * @publicApi\n */\nclass HttpClientJsonpModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientJsonpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientJsonpModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientJsonpModule, providers: [\n withJsonpSupport().ɵproviders,\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClientJsonpModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n withJsonpSupport().ɵproviders,\n ],\n }]\n }] });\n\nconst CACHE_STATE = new InjectionToken(ngDevMode ? 'HTTP_TRANSFER_STATE_CACHE_STATE' : '');\n/**\n * A list of allowed HTTP methods to cache.\n */\nconst ALLOWED_METHODS = ['GET', 'HEAD'];\nfunction transferCacheInterceptorFn(req, next) {\n const { isCacheActive } = inject(CACHE_STATE);\n // Stop using the cache if the application has stabilized, indicating initial rendering\n // is complete.\n if (!isCacheActive || !ALLOWED_METHODS.includes(req.method)) {\n // Cache is no longer active or method is not HEAD or GET.\n // Pass the request through.\n return next(req);\n }\n const transferState = inject(TransferState);\n const storeKey = makeCacheKey(req);\n const response = transferState.get(storeKey, null);\n if (response) {\n // Request found in cache. Respond using it.\n let body = response.body;\n switch (response.responseType) {\n case 'arraybuffer':\n body = new TextEncoder().encode(response.body).buffer;\n break;\n case 'blob':\n body = new Blob([response.body]);\n break;\n }\n return of(new HttpResponse({\n body,\n headers: new HttpHeaders(response.headers),\n status: response.status,\n statusText: response.statusText,\n url: response.url,\n }));\n }\n // Request not found in cache. Make the request and cache it.\n return next(req).pipe(tap((event) => {\n if (event instanceof HttpResponse) {\n transferState.set(storeKey, {\n body: event.body,\n headers: getHeadersMap(event.headers),\n status: event.status,\n statusText: event.statusText,\n url: event.url || '',\n responseType: req.responseType,\n });\n }\n }));\n}\nfunction getHeadersMap(headers) {\n const headersMap = {};\n for (const key of headers.keys()) {\n const values = headers.getAll(key);\n if (values !== null) {\n headersMap[key] = values;\n }\n }\n return headersMap;\n}\nfunction makeCacheKey(request) {\n // make the params encoded same as a url so it's easy to identify\n const { params, method, responseType, url } = request;\n const encodedParams = params.keys().sort().map((k) => `${k}=${params.getAll(k)}`).join('&');\n const key = method + '.' + responseType + '.' + url + '?' + encodedParams;\n const hash = generateHash(key);\n return makeStateKey(hash);\n}\n/**\n * A method that returns a hash representation of a string using a variant of DJB2 hash\n * algorithm.\n *\n * This is the same hashing logic that is used to generate component ids.\n */\nfunction generateHash(value) {\n let hash = 0;\n for (const char of value) {\n hash = Math.imul(31, hash) + char.charCodeAt(0) << 0;\n }\n // Force positive number hash.\n // 2147483647 = equivalent of Integer.MAX_VALUE.\n hash += 2147483647 + 1;\n return hash.toString();\n}\n/**\n * Returns the DI providers needed to enable HTTP transfer cache.\n *\n * By default, when using server rendering, requests are performed twice: once on the server and\n * other one on the browser.\n *\n * When these providers are added, requests performed on the server are cached and reused during the\n * bootstrapping of the application in the browser thus avoiding duplicate requests and reducing\n * load time.\n *\n */\nfunction withHttpTransferCache() {\n return [\n {\n provide: CACHE_STATE,\n useFactory: () => {\n inject(ɵENABLED_SSR_FEATURES).add('httpcache');\n return { isCacheActive: true };\n }\n },\n {\n provide: HTTP_ROOT_INTERCEPTOR_FNS,\n useValue: transferCacheInterceptorFn,\n multi: true,\n deps: [TransferState, CACHE_STATE]\n },\n {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n useFactory: () => {\n const appRef = inject(ApplicationRef);\n const cacheState = inject(CACHE_STATE);\n return () => {\n appRef.isStable.pipe(first((isStable) => isStable)).toPromise().then(() => {\n cacheState.isCacheActive = false;\n });\n };\n }\n }\n ];\n}\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FetchBackend, HTTP_INTERCEPTORS, HttpBackend, HttpClient, HttpClientJsonpModule, HttpClientModule, HttpClientXsrfModule, HttpContext, HttpContextToken, HttpErrorResponse, HttpEventType, HttpFeatureKind, HttpHandler, HttpHeaderResponse, HttpHeaders, HttpParams, HttpRequest, HttpResponse, HttpResponseBase, HttpUrlEncodingCodec, HttpXhrBackend, HttpXsrfTokenExtractor, JsonpClientBackend, JsonpInterceptor, provideHttpClient, withFetch, withInterceptors, withInterceptorsFromDi, withJsonpSupport, withNoXsrfProtection, withRequestsMadeViaParent, withXsrfConfiguration, HttpInterceptorHandler as ɵHttpInterceptingHandler, HttpInterceptorHandler as ɵHttpInterceptorHandler, withHttpTransferCache as ɵwithHttpTransferCache };\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { Subject, Subscription, Observable, merge as merge$1, BehaviorSubject, of } from 'rxjs';\nimport { share, switchMap, distinctUntilChanged, first } from 'rxjs/operators';\n\nfunction getClosureSafeProperty(objWithPropertyToExtract) {\n for (let key in objWithPropertyToExtract) {\n if (objWithPropertyToExtract[key] === getClosureSafeProperty) {\n return key;\n }\n }\n throw Error('Could not find renamed property on target object.');\n}\n/**\n * Sets properties on a target object from a source object, but only if\n * the property doesn't already exist on the target object.\n * @param target The target to set properties on\n * @param source The source of the property keys and values to set\n */\nfunction fillProperties(target, source) {\n for (const key in source) {\n if (source.hasOwnProperty(key) && !target.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n}\n\nfunction stringify(token) {\n if (typeof token === 'string') {\n return token;\n }\n if (Array.isArray(token)) {\n return '[' + token.map(stringify).join(', ') + ']';\n }\n if (token == null) {\n return '' + token;\n }\n if (token.overriddenName) {\n return `${token.overriddenName}`;\n }\n if (token.name) {\n return `${token.name}`;\n }\n const res = token.toString();\n if (res == null) {\n return '' + res;\n }\n const newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\n/**\n * Concatenates two strings with separator, allocating new strings only when necessary.\n *\n * @param before before string.\n * @param separator separator string.\n * @param after after string.\n * @returns concatenated string.\n */\nfunction concatStringsWithSpace(before, after) {\n return (before == null || before === '') ?\n (after === null ? '' : after) :\n ((after == null || after === '') ? before : before + ' ' + after);\n}\n\nconst __forward_ref__ = getClosureSafeProperty({ __forward_ref__: getClosureSafeProperty });\n/**\n * Allows to refer to references which are not yet defined.\n *\n * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of\n * DI is declared, but not yet defined. It is also used when the `token` which we use when creating\n * a query is not yet defined.\n *\n * `forwardRef` is also used to break circularities in standalone components imports.\n *\n * @usageNotes\n * ### Circular dependency example\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}\n *\n * ### Circular standalone reference import example\n * ```ts\n * @Component({\n * standalone: true,\n * imports: [ChildComponent],\n * selector: 'app-parent',\n * template: `<app-child [hideParent]=\"hideParent\"></app-child>`,\n * })\n * export class ParentComponent {\n * @Input() hideParent: boolean;\n * }\n *\n *\n * @Component({\n * standalone: true,\n * imports: [CommonModule, forwardRef(() => ParentComponent)],\n * selector: 'app-child',\n * template: `<app-parent *ngIf=\"!hideParent\"></app-parent>`,\n * })\n * export class ChildComponent {\n * @Input() hideParent: boolean;\n * }\n * ```\n *\n * @publicApi\n */\nfunction forwardRef(forwardRefFn) {\n forwardRefFn.__forward_ref__ = forwardRef;\n forwardRefFn.toString = function () {\n return stringify(this());\n };\n return forwardRefFn;\n}\n/**\n * Lazily retrieves the reference value from a forwardRef.\n *\n * Acts as the identity function when given a non-forward-ref value.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}\n *\n * @see {@link forwardRef}\n * @publicApi\n */\nfunction resolveForwardRef(type) {\n return isForwardRef(type) ? type() : type;\n}\n/** Checks whether a function is wrapped by a `forwardRef`. */\nfunction isForwardRef(fn) {\n return typeof fn === 'function' && fn.hasOwnProperty(__forward_ref__) &&\n fn.__forward_ref__ === forwardRef;\n}\n\nfunction isEnvironmentProviders(value) {\n return value && !!value.ɵproviders;\n}\n\n/**\n * Base URL for the error details page.\n *\n * Keep this constant in sync across:\n * - packages/compiler-cli/src/ngtsc/diagnostics/src/error_details_base_url.ts\n * - packages/core/src/error_details_base_url.ts\n */\nconst ERROR_DETAILS_PAGE_BASE_URL = 'https://angular.io/errors';\n/**\n * URL for the XSS security documentation.\n */\nconst XSS_SECURITY_URL = 'https://g.co/ng/security#xss';\n\n/**\n * Class that represents a runtime error.\n * Formats and outputs the error message in a consistent way.\n *\n * Example:\n * ```\n * throw new RuntimeError(\n * RuntimeErrorCode.INJECTOR_ALREADY_DESTROYED,\n * ngDevMode && 'Injector has already been destroyed.');\n * ```\n *\n * Note: the `message` argument contains a descriptive error message as a string in development\n * mode (when the `ngDevMode` is defined). In production mode (after tree-shaking pass), the\n * `message` argument becomes `false`, thus we account for it in the typings and the runtime\n * logic.\n */\nclass RuntimeError extends Error {\n constructor(code, message) {\n super(formatRuntimeError(code, message));\n this.code = code;\n }\n}\n/**\n * Called to format a runtime error.\n * See additional info on the `message` argument type in the `RuntimeError` class description.\n */\nfunction formatRuntimeError(code, message) {\n // Error code might be a negative number, which is a special marker that instructs the logic to\n // generate a link to the error details page on angular.io.\n // We also prepend `0` to non-compile-time errors.\n const fullCode = `NG0${Math.abs(code)}`;\n let errorMessage = `${fullCode}${message ? ': ' + message : ''}`;\n if (ngDevMode && code < 0) {\n const addPeriodSeparator = !errorMessage.match(/[.,;!?\\n]$/);\n const separator = addPeriodSeparator ? '.' : '';\n errorMessage =\n `${errorMessage}${separator} Find more at ${ERROR_DETAILS_PAGE_BASE_URL}/${fullCode}`;\n }\n return errorMessage;\n}\n\n/**\n * Used for stringify render output in Ivy.\n * Important! This function is very performance-sensitive and we should\n * be extra careful not to introduce megamorphic reads in it.\n * Check `core/test/render3/perf/render_stringify` for benchmarks and alternate implementations.\n */\nfunction renderStringify(value) {\n if (typeof value === 'string')\n return value;\n if (value == null)\n return '';\n // Use `String` so that it invokes the `toString` method of the value. Note that this\n // appears to be faster than calling `value.toString` (see `render_stringify` benchmark).\n return String(value);\n}\n/**\n * Used to stringify a value so that it can be displayed in an error message.\n * Important! This function contains a megamorphic read and should only be\n * used for error messages.\n */\nfunction stringifyForError(value) {\n if (typeof value === 'function')\n return value.name || value.toString();\n if (typeof value === 'object' && value != null && typeof value.type === 'function') {\n return value.type.name || value.type.toString();\n }\n return renderStringify(value);\n}\n\n/** Called when directives inject each other (creating a circular dependency) */\nfunction throwCyclicDependencyError(token, path) {\n const depPath = path ? `. Dependency path: ${path.join(' > ')} > ${token}` : '';\n throw new RuntimeError(-200 /* RuntimeErrorCode.CYCLIC_DI_DEPENDENCY */, `Circular dependency in DI detected for ${token}${depPath}`);\n}\nfunction throwMixedMultiProviderError() {\n throw new Error(`Cannot mix multi providers and regular providers`);\n}\nfunction throwInvalidProviderError(ngModuleType, providers, provider) {\n if (ngModuleType && providers) {\n const providerDetail = providers.map(v => v == provider ? '?' + provider + '?' : '...');\n throw new Error(`Invalid provider for the NgModule '${stringify(ngModuleType)}' - only instances of Provider and Type are allowed, got: [${providerDetail.join(', ')}]`);\n }\n else if (isEnvironmentProviders(provider)) {\n if (provider.ɵfromNgModule) {\n throw new RuntimeError(207 /* RuntimeErrorCode.PROVIDER_IN_WRONG_CONTEXT */, `Invalid providers from 'importProvidersFrom' present in a non-environment injector. 'importProvidersFrom' can't be used for component providers.`);\n }\n else {\n throw new RuntimeError(207 /* RuntimeErrorCode.PROVIDER_IN_WRONG_CONTEXT */, `Invalid providers present in a non-environment injector. 'EnvironmentProviders' can't be used for component providers.`);\n }\n }\n else {\n throw new Error('Invalid provider');\n }\n}\n/** Throws an error when a token is not found in DI. */\nfunction throwProviderNotFoundError(token, injectorName) {\n const injectorDetails = injectorName ? ` in ${injectorName}` : '';\n throw new RuntimeError(-201 /* RuntimeErrorCode.PROVIDER_NOT_FOUND */, ngDevMode && `No provider for ${stringifyForError(token)} found${injectorDetails}`);\n}\n\n// The functions in this file verify that the assumptions we are making\nfunction assertNumber(actual, msg) {\n if (!(typeof actual === 'number')) {\n throwError(msg, typeof actual, 'number', '===');\n }\n}\nfunction assertNumberInRange(actual, minInclusive, maxInclusive) {\n assertNumber(actual, 'Expected a number');\n assertLessThanOrEqual(actual, maxInclusive, 'Expected number to be less than or equal to');\n assertGreaterThanOrEqual(actual, minInclusive, 'Expected number to be greater than or equal to');\n}\nfunction assertString(actual, msg) {\n if (!(typeof actual === 'string')) {\n throwError(msg, actual === null ? 'null' : typeof actual, 'string', '===');\n }\n}\nfunction assertFunction(actual, msg) {\n if (!(typeof actual === 'function')) {\n throwError(msg, actual === null ? 'null' : typeof actual, 'function', '===');\n }\n}\nfunction assertEqual(actual, expected, msg) {\n if (!(actual == expected)) {\n throwError(msg, actual, expected, '==');\n }\n}\nfunction assertNotEqual(actual, expected, msg) {\n if (!(actual != expected)) {\n throwError(msg, actual, expected, '!=');\n }\n}\nfunction assertSame(actual, expected, msg) {\n if (!(actual === expected)) {\n throwError(msg, actual, expected, '===');\n }\n}\nfunction assertNotSame(actual, expected, msg) {\n if (!(actual !== expected)) {\n throwError(msg, actual, expected, '!==');\n }\n}\nfunction assertLessThan(actual, expected, msg) {\n if (!(actual < expected)) {\n throwError(msg, actual, expected, '<');\n }\n}\nfunction assertLessThanOrEqual(actual, expected, msg) {\n if (!(actual <= expected)) {\n throwError(msg, actual, expected, '<=');\n }\n}\nfunction assertGreaterThan(actual, expected, msg) {\n if (!(actual > expected)) {\n throwError(msg, actual, expected, '>');\n }\n}\nfunction assertGreaterThanOrEqual(actual, expected, msg) {\n if (!(actual >= expected)) {\n throwError(msg, actual, expected, '>=');\n }\n}\nfunction assertNotDefined(actual, msg) {\n if (actual != null) {\n throwError(msg, actual, null, '==');\n }\n}\nfunction assertDefined(actual, msg) {\n if (actual == null) {\n throwError(msg, actual, null, '!=');\n }\n}\nfunction throwError(msg, actual, expected, comparison) {\n throw new Error(`ASSERTION ERROR: ${msg}` +\n (comparison == null ? '' : ` [Expected=> ${expected} ${comparison} ${actual} <=Actual]`));\n}\nfunction assertDomNode(node) {\n if (!(node instanceof Node)) {\n throwError(`The provided value must be an instance of a DOM Node but got ${stringify(node)}`);\n }\n}\nfunction assertIndexInRange(arr, index) {\n assertDefined(arr, 'Array must be defined.');\n const maxLen = arr.length;\n if (index < 0 || index >= maxLen) {\n throwError(`Index expected to be less than ${maxLen} but got ${index}`);\n }\n}\nfunction assertOneOf(value, ...validValues) {\n if (validValues.indexOf(value) !== -1)\n return true;\n throwError(`Expected value to be one of ${JSON.stringify(validValues)} but was ${JSON.stringify(value)}.`);\n}\n\n/**\n * Construct an injectable definition which defines how a token will be constructed by the DI\n * system, and in which injectors (if any) it will be available.\n *\n * This should be assigned to a static `ɵprov` field on a type, which will then be an\n * `InjectableType`.\n *\n * Options:\n * * `providedIn` determines which injectors will include the injectable, by either associating it\n * with an `@NgModule` or other `InjectorType`, or by specifying that this injectable should be\n * provided in the `'root'` injector, which will be the application-level injector in most apps.\n * * `factory` gives the zero argument function which will create an instance of the injectable.\n * The factory can call [`inject`](api/core/inject) to access the `Injector` and request injection\n * of dependencies.\n *\n * @codeGenApi\n * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.\n */\nfunction ɵɵdefineInjectable(opts) {\n return {\n token: opts.token,\n providedIn: opts.providedIn || null,\n factory: opts.factory,\n value: undefined,\n };\n}\n/**\n * @deprecated in v8, delete after v10. This API should be used only by generated code, and that\n * code should now use ɵɵdefineInjectable instead.\n * @publicApi\n */\nconst defineInjectable = ɵɵdefineInjectable;\n/**\n * Construct an `InjectorDef` which configures an injector.\n *\n * This should be assigned to a static injector def (`ɵinj`) field on a type, which will then be an\n * `InjectorType`.\n *\n * Options:\n *\n * * `providers`: an optional array of providers to add to the injector. Each provider must\n * either have a factory or point to a type which has a `ɵprov` static property (the\n * type must be an `InjectableType`).\n * * `imports`: an optional array of imports of other `InjectorType`s or `InjectorTypeWithModule`s\n * whose providers will also be added to the injector. Locally provided types will override\n * providers from imports.\n *\n * @codeGenApi\n */\nfunction ɵɵdefineInjector(options) {\n return { providers: options.providers || [], imports: options.imports || [] };\n}\n/**\n * Read the injectable def (`ɵprov`) for `type` in a way which is immune to accidentally reading\n * inherited value.\n *\n * @param type A type which may have its own (non-inherited) `ɵprov`.\n */\nfunction getInjectableDef(type) {\n return getOwnDefinition(type, NG_PROV_DEF) || getOwnDefinition(type, NG_INJECTABLE_DEF);\n}\nfunction isInjectable(type) {\n return getInjectableDef(type) !== null;\n}\n/**\n * Return definition only if it is defined directly on `type` and is not inherited from a base\n * class of `type`.\n */\nfunction getOwnDefinition(type, field) {\n return type.hasOwnProperty(field) ? type[field] : null;\n}\n/**\n * Read the injectable def (`ɵprov`) for `type` or read the `ɵprov` from one of its ancestors.\n *\n * @param type A type which may have `ɵprov`, via inheritance.\n *\n * @deprecated Will be removed in a future version of Angular, where an error will occur in the\n * scenario if we find the `ɵprov` on an ancestor only.\n */\nfunction getInheritedInjectableDef(type) {\n const def = type && (type[NG_PROV_DEF] || type[NG_INJECTABLE_DEF]);\n if (def) {\n ngDevMode &&\n console.warn(`DEPRECATED: DI is instantiating a token \"${type.name}\" that inherits its @Injectable decorator but does not provide one itself.\\n` +\n `This will become an error in a future version of Angular. Please add @Injectable() to the \"${type.name}\" class.`);\n return def;\n }\n else {\n return null;\n }\n}\n/**\n * Read the injector def type in a way which is immune to accidentally reading inherited value.\n *\n * @param type type which may have an injector def (`ɵinj`)\n */\nfunction getInjectorDef(type) {\n return type && (type.hasOwnProperty(NG_INJ_DEF) || type.hasOwnProperty(NG_INJECTOR_DEF)) ?\n type[NG_INJ_DEF] :\n null;\n}\nconst NG_PROV_DEF = getClosureSafeProperty({ ɵprov: getClosureSafeProperty });\nconst NG_INJ_DEF = getClosureSafeProperty({ ɵinj: getClosureSafeProperty });\n// We need to keep these around so we can read off old defs if new defs are unavailable\nconst NG_INJECTABLE_DEF = getClosureSafeProperty({ ngInjectableDef: getClosureSafeProperty });\nconst NG_INJECTOR_DEF = getClosureSafeProperty({ ngInjectorDef: getClosureSafeProperty });\n\n/**\n * Injection flags for DI.\n *\n * @publicApi\n * @deprecated use an options object for [`inject`](api/core/inject) instead.\n */\nvar InjectFlags;\n(function (InjectFlags) {\n // TODO(alxhub): make this 'const' (and remove `InternalInjectFlags` enum) when ngc no longer\n // writes exports of it into ngfactory files.\n /** Check self and check parent injector if needed */\n InjectFlags[InjectFlags[\"Default\"] = 0] = \"Default\";\n /**\n * Specifies that an injector should retrieve a dependency from any injector until reaching the\n * host element of the current component. (Only used with Element Injector)\n */\n InjectFlags[InjectFlags[\"Host\"] = 1] = \"Host\";\n /** Don't ascend to ancestors of the node requesting injection. */\n InjectFlags[InjectFlags[\"Self\"] = 2] = \"Self\";\n /** Skip the node that is requesting injection. */\n InjectFlags[InjectFlags[\"SkipSelf\"] = 4] = \"SkipSelf\";\n /** Inject `defaultValue` instead if token not found. */\n InjectFlags[InjectFlags[\"Optional\"] = 8] = \"Optional\";\n})(InjectFlags || (InjectFlags = {}));\n\n/**\n * Current implementation of inject.\n *\n * By default, it is `injectInjectorOnly`, which makes it `Injector`-only aware. It can be changed\n * to `directiveInject`, which brings in the `NodeInjector` system of ivy. It is designed this\n * way for two reasons:\n * 1. `Injector` should not depend on ivy logic.\n * 2. To maintain tree shake-ability we don't want to bring in unnecessary code.\n */\nlet _injectImplementation;\nfunction getInjectImplementation() {\n return _injectImplementation;\n}\n/**\n * Sets the current inject implementation.\n */\nfunction setInjectImplementation(impl) {\n const previous = _injectImplementation;\n _injectImplementation = impl;\n return previous;\n}\n/**\n * Injects `root` tokens in limp mode.\n *\n * If no injector exists, we can still inject tree-shakable providers which have `providedIn` set to\n * `\"root\"`. This is known as the limp mode injection. In such case the value is stored in the\n * injectable definition.\n */\nfunction injectRootLimpMode(token, notFoundValue, flags) {\n const injectableDef = getInjectableDef(token);\n if (injectableDef && injectableDef.providedIn == 'root') {\n return injectableDef.value === undefined ? injectableDef.value = injectableDef.factory() :\n injectableDef.value;\n }\n if (flags & InjectFlags.Optional)\n return null;\n if (notFoundValue !== undefined)\n return notFoundValue;\n throwProviderNotFoundError(stringify(token), 'Injector');\n}\n/**\n * Assert that `_injectImplementation` is not `fn`.\n *\n * This is useful, to prevent infinite recursion.\n *\n * @param fn Function which it should not equal to\n */\nfunction assertInjectImplementationNotEqual(fn) {\n ngDevMode &&\n assertNotEqual(_injectImplementation, fn, 'Calling ɵɵinject would cause infinite recursion');\n}\n\nconst _global = globalThis;\n\nfunction ngDevModeResetPerfCounters() {\n const locationString = typeof location !== 'undefined' ? location.toString() : '';\n const newCounters = {\n namedConstructors: locationString.indexOf('ngDevMode=namedConstructors') != -1,\n firstCreatePass: 0,\n tNode: 0,\n tView: 0,\n rendererCreateTextNode: 0,\n rendererSetText: 0,\n rendererCreateElement: 0,\n rendererAddEventListener: 0,\n rendererSetAttribute: 0,\n rendererRemoveAttribute: 0,\n rendererSetProperty: 0,\n rendererSetClassName: 0,\n rendererAddClass: 0,\n rendererRemoveClass: 0,\n rendererSetStyle: 0,\n rendererRemoveStyle: 0,\n rendererDestroy: 0,\n rendererDestroyNode: 0,\n rendererMoveNode: 0,\n rendererRemoveNode: 0,\n rendererAppendChild: 0,\n rendererInsertBefore: 0,\n rendererCreateComment: 0,\n hydratedNodes: 0,\n hydratedComponents: 0,\n dehydratedViewsRemoved: 0,\n dehydratedViewsCleanupRuns: 0,\n componentsSkippedHydration: 0,\n };\n // Make sure to refer to ngDevMode as ['ngDevMode'] for closure.\n const allowNgDevModeTrue = locationString.indexOf('ngDevMode=false') === -1;\n _global['ngDevMode'] = allowNgDevModeTrue && newCounters;\n return newCounters;\n}\n/**\n * This function checks to see if the `ngDevMode` has been set. If yes,\n * then we honor it, otherwise we default to dev mode with additional checks.\n *\n * The idea is that unless we are doing production build where we explicitly\n * set `ngDevMode == false` we should be helping the developer by providing\n * as much early warning and errors as possible.\n *\n * `ɵɵdefineComponent` is guaranteed to have been called before any component template functions\n * (and thus Ivy instructions), so a single initialization there is sufficient to ensure ngDevMode\n * is defined for the entire instruction set.\n *\n * When checking `ngDevMode` on toplevel, always init it before referencing it\n * (e.g. `((typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode())`), otherwise you can\n * get a `ReferenceError` like in https://github.com/angular/angular/issues/31595.\n *\n * Details on possible values for `ngDevMode` can be found on its docstring.\n *\n * NOTE:\n * - changes to the `ngDevMode` name must be synced with `compiler-cli/src/tooling.ts`.\n */\nfunction initNgDevMode() {\n // The below checks are to ensure that calling `initNgDevMode` multiple times does not\n // reset the counters.\n // If the `ngDevMode` is not an object, then it means we have not created the perf counters\n // yet.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (typeof ngDevMode !== 'object') {\n ngDevModeResetPerfCounters();\n }\n return typeof ngDevMode !== 'undefined' && !!ngDevMode;\n }\n return false;\n}\n\n/**\n * Creates a token that can be used in a DI Provider.\n *\n * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a\n * runtime representation) such as when injecting an interface, callable type, array or\n * parameterized type.\n *\n * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by\n * the `Injector`. This provides an additional level of type safety.\n *\n * <div class=\"alert is-helpful\">\n *\n * **Important Note**: Ensure that you use the same instance of the `InjectionToken` in both the\n * provider and the injection call. Creating a new instance of `InjectionToken` in different places,\n * even with the same description, will be treated as different tokens by Angular's DI system,\n * leading to a `NullInjectorError`.\n *\n * </div>\n *\n * <code-example format=\"typescript\" language=\"typescript\" path=\"injection-token/src/main.ts\"\n * region=\"InjectionToken\"></code-example>\n *\n * When creating an `InjectionToken`, you can optionally specify a factory function which returns\n * (possibly by creating) a default value of the parameterized type `T`. This sets up the\n * `InjectionToken` using this factory as a provider as if it was defined explicitly in the\n * application's root injector. If the factory function, which takes zero arguments, needs to inject\n * dependencies, it can do so using the [`inject`](api/core/inject) function.\n * As you can see in the Tree-shakable InjectionToken example below.\n *\n * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which\n * overrides the above behavior and marks the token as belonging to a particular `@NgModule` (note:\n * this option is now deprecated). As mentioned above, `'root'` is the default value for\n * `providedIn`.\n *\n * The `providedIn: NgModule` and `providedIn: 'any'` options are deprecated.\n *\n * @usageNotes\n * ### Basic Examples\n *\n * ### Plain InjectionToken\n *\n * {@example core/di/ts/injector_spec.ts region='InjectionToken'}\n *\n * ### Tree-shakable InjectionToken\n *\n * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}\n *\n * @publicApi\n */\nclass InjectionToken {\n /**\n * @param _desc Description for the token,\n * used only for debugging purposes,\n * it should but does not need to be unique\n * @param options Options for the token's usage, as described above\n */\n constructor(_desc, options) {\n this._desc = _desc;\n /** @internal */\n this.ngMetadataName = 'InjectionToken';\n this.ɵprov = undefined;\n if (typeof options == 'number') {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n assertLessThan(options, 0, 'Only negative numbers are supported here');\n // This is a special hack to assign __NG_ELEMENT_ID__ to this instance.\n // See `InjectorMarkers`\n this.__NG_ELEMENT_ID__ = options;\n }\n else if (options !== undefined) {\n this.ɵprov = ɵɵdefineInjectable({\n token: this,\n providedIn: options.providedIn || 'root',\n factory: options.factory,\n });\n }\n }\n /**\n * @internal\n */\n get multi() {\n return this;\n }\n toString() {\n return `InjectionToken ${this._desc}`;\n }\n}\n\nlet _injectorProfilerContext;\nfunction getInjectorProfilerContext() {\n !ngDevMode && throwError('getInjectorProfilerContext should never be called in production mode');\n return _injectorProfilerContext;\n}\nfunction setInjectorProfilerContext(context) {\n !ngDevMode && throwError('setInjectorProfilerContext should never be called in production mode');\n const previous = _injectorProfilerContext;\n _injectorProfilerContext = context;\n return previous;\n}\nlet injectorProfilerCallback = null;\n/**\n * Sets the callback function which will be invoked during certain DI events within the\n * runtime (for example: injecting services, creating injectable instances, configuring providers)\n *\n * Warning: this function is *INTERNAL* and should not be relied upon in application's code.\n * The contract of the function might be changed in any release and/or the function can be removed\n * completely.\n *\n * @param profiler function provided by the caller or null value to disable profiling.\n */\nconst setInjectorProfiler = (injectorProfiler) => {\n !ngDevMode && throwError('setInjectorProfiler should never be called in production mode');\n injectorProfilerCallback = injectorProfiler;\n};\n/**\n * Injector profiler function which emits on DI events executed by the runtime.\n *\n * @param event InjectorProfilerEvent corresponding to the DI event being emitted\n */\nfunction injectorProfiler(event) {\n !ngDevMode && throwError('Injector profiler should never be called in production mode');\n if (injectorProfilerCallback != null /* both `null` and `undefined` */) {\n injectorProfilerCallback(event);\n }\n}\n/**\n * Emits an InjectorProfilerEventType.ProviderConfigured to the injector profiler. The data in the\n * emitted event includes the raw provider, as well as the token that provider is providing.\n *\n * @param eventProvider A provider object\n */\nfunction emitProviderConfiguredEvent(eventProvider, isViewProvider = false) {\n !ngDevMode && throwError('Injector profiler should never be called in production mode');\n let token;\n // if the provider is a TypeProvider (typeof provider is function) then the token is the\n // provider itself\n if (typeof eventProvider === 'function') {\n token = eventProvider;\n }\n // if the provider is an injection token, then the token is the injection token.\n else if (eventProvider instanceof InjectionToken) {\n token = eventProvider;\n }\n // in all other cases we can access the token via the `provide` property of the provider\n else {\n token = resolveForwardRef(eventProvider.provide);\n }\n let provider = eventProvider;\n // Injection tokens may define their own default provider which gets attached to the token itself\n // as `ɵprov`. In this case, we want to emit the provider that is attached to the token, not the\n // token itself.\n if (eventProvider instanceof InjectionToken) {\n provider = eventProvider.ɵprov || eventProvider;\n }\n injectorProfiler({\n type: 2 /* InjectorProfilerEventType.ProviderConfigured */,\n context: getInjectorProfilerContext(),\n providerRecord: { token, provider, isViewProvider }\n });\n}\n/**\n * Emits an event to the injector profiler with the instance that was created. Note that\n * the injector associated with this emission can be accessed by using getDebugInjectContext()\n *\n * @param instance an object created by an injector\n */\nfunction emitInstanceCreatedByInjectorEvent(instance) {\n !ngDevMode && throwError('Injector profiler should never be called in production mode');\n injectorProfiler({\n type: 1 /* InjectorProfilerEventType.InstanceCreatedByInjector */,\n context: getInjectorProfilerContext(),\n instance: { value: instance }\n });\n}\n/**\n * @param token DI token associated with injected service\n * @param value the instance of the injected service (i.e the result of `inject(token)`)\n * @param flags the flags that the token was injected with\n */\nfunction emitInjectEvent(token, value, flags) {\n !ngDevMode && throwError('Injector profiler should never be called in production mode');\n injectorProfiler({\n type: 0 /* InjectorProfilerEventType.Inject */,\n context: getInjectorProfilerContext(),\n service: { token, value, flags }\n });\n}\nfunction runInInjectorProfilerContext(injector, token, callback) {\n !ngDevMode &&\n throwError('runInInjectorProfilerContext should never be called in production mode');\n const prevInjectContext = setInjectorProfilerContext({ injector, token });\n try {\n callback();\n }\n finally {\n setInjectorProfilerContext(prevInjectContext);\n }\n}\n\nconst _THROW_IF_NOT_FOUND = {};\nconst THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\n/*\n * Name of a property (that we patch onto DI decorator), which is used as an annotation of which\n * InjectFlag this decorator represents. This allows to avoid direct references to the DI decorators\n * in the code, thus making them tree-shakable.\n */\nconst DI_DECORATOR_FLAG = '__NG_DI_FLAG__';\nconst NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';\nconst NG_TOKEN_PATH = 'ngTokenPath';\nconst NEW_LINE = /\\n/gm;\nconst NO_NEW_LINE = 'ɵ';\nconst SOURCE = '__source';\n/**\n * Current injector value used by `inject`.\n * - `undefined`: it is an error to call `inject`\n * - `null`: `inject` can be called but there is no injector (limp-mode).\n * - Injector instance: Use the injector for resolution.\n */\nlet _currentInjector = undefined;\nfunction getCurrentInjector() {\n return _currentInjector;\n}\nfunction setCurrentInjector(injector) {\n const former = _currentInjector;\n _currentInjector = injector;\n return former;\n}\nfunction injectInjectorOnly(token, flags = InjectFlags.Default) {\n if (_currentInjector === undefined) {\n throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, ngDevMode &&\n `inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \\`runInInjectionContext\\`.`);\n }\n else if (_currentInjector === null) {\n return injectRootLimpMode(token, undefined, flags);\n }\n else {\n const value = _currentInjector.get(token, flags & InjectFlags.Optional ? null : undefined, flags);\n ngDevMode && emitInjectEvent(token, value, flags);\n return value;\n }\n}\nfunction ɵɵinject(token, flags = InjectFlags.Default) {\n return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags);\n}\n/**\n * Throws an error indicating that a factory function could not be generated by the compiler for a\n * particular class.\n *\n * The name of the class is not mentioned here, but will be in the generated factory function name\n * and thus in the stack trace.\n *\n * @codeGenApi\n */\nfunction ɵɵinvalidFactoryDep(index) {\n throw new RuntimeError(202 /* RuntimeErrorCode.INVALID_FACTORY_DEPENDENCY */, ngDevMode &&\n `This constructor is not compatible with Angular Dependency Injection because its dependency at index ${index} of the parameter list is invalid.\nThis can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.\n\nPlease check that 1) the type for the parameter at index ${index} is correct and 2) the correct Angular decorators are defined for this class and its ancestors.`);\n}\n/**\n * Injects a token from the currently active injector.\n * `inject` is only supported in an [injection context](/guide/dependency-injection-context). It can\n * be used during:\n * - Construction (via the `constructor`) of a class being instantiated by the DI system, such\n * as an `@Injectable` or `@Component`.\n * - In the initializer for fields of such classes.\n * - In the factory function specified for `useFactory` of a `Provider` or an `@Injectable`.\n * - In the `factory` function specified for an `InjectionToken`.\n * - In a stackframe of a function call in a DI context\n *\n * @param token A token that represents a dependency that should be injected.\n * @param flags Optional flags that control how injection is executed.\n * The flags correspond to injection strategies that can be specified with\n * parameter decorators `@Host`, `@Self`, `@SkipSelf`, and `@Optional`.\n * @returns the injected value if operation is successful, `null` otherwise.\n * @throws if called outside of a supported context.\n *\n * @usageNotes\n * In practice the `inject()` calls are allowed in a constructor, a constructor parameter and a\n * field initializer:\n *\n * ```typescript\n * @Injectable({providedIn: 'root'})\n * export class Car {\n * radio: Radio|undefined;\n * // OK: field initializer\n * spareTyre = inject(Tyre);\n *\n * constructor() {\n * // OK: constructor body\n * this.radio = inject(Radio);\n * }\n * }\n * ```\n *\n * It is also legal to call `inject` from a provider's factory:\n *\n * ```typescript\n * providers: [\n * {provide: Car, useFactory: () => {\n * // OK: a class factory\n * const engine = inject(Engine);\n * return new Car(engine);\n * }}\n * ]\n * ```\n *\n * Calls to the `inject()` function outside of the class creation context will result in error. Most\n * notably, calls to `inject()` are disallowed after a class instance was created, in methods\n * (including lifecycle hooks):\n *\n * ```typescript\n * @Component({ ... })\n * export class CarComponent {\n * ngOnInit() {\n * // ERROR: too late, the component instance was already created\n * const engine = inject(Engine);\n * engine.start();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction inject(token, flags = InjectFlags.Default) {\n return ɵɵinject(token, convertToBitFlags(flags));\n}\n// Converts object-based DI flags (`InjectOptions`) to bit flags (`InjectFlags`).\nfunction convertToBitFlags(flags) {\n if (typeof flags === 'undefined' || typeof flags === 'number') {\n return flags;\n }\n // While TypeScript doesn't accept it without a cast, bitwise OR with false-y values in\n // JavaScript is a no-op. We can use that for a very codesize-efficient conversion from\n // `InjectOptions` to `InjectFlags`.\n return (0 /* InternalInjectFlags.Default */ | // comment to force a line break in the formatter\n (flags.optional && 8 /* InternalInjectFlags.Optional */) |\n (flags.host && 1 /* InternalInjectFlags.Host */) |\n (flags.self && 2 /* InternalInjectFlags.Self */) |\n (flags.skipSelf && 4 /* InternalInjectFlags.SkipSelf */));\n}\nfunction injectArgs(types) {\n const args = [];\n for (let i = 0; i < types.length; i++) {\n const arg = resolveForwardRef(types[i]);\n if (Array.isArray(arg)) {\n if (arg.length === 0) {\n throw new RuntimeError(900 /* RuntimeErrorCode.INVALID_DIFFER_INPUT */, ngDevMode && 'Arguments array must have arguments.');\n }\n let type = undefined;\n let flags = InjectFlags.Default;\n for (let j = 0; j < arg.length; j++) {\n const meta = arg[j];\n const flag = getInjectFlag(meta);\n if (typeof flag === 'number') {\n // Special case when we handle @Inject decorator.\n if (flag === -1 /* DecoratorFlags.Inject */) {\n type = meta.token;\n }\n else {\n flags |= flag;\n }\n }\n else {\n type = meta;\n }\n }\n args.push(ɵɵinject(type, flags));\n }\n else {\n args.push(ɵɵinject(arg));\n }\n }\n return args;\n}\n/**\n * Attaches a given InjectFlag to a given decorator using monkey-patching.\n * Since DI decorators can be used in providers `deps` array (when provider is configured using\n * `useFactory`) without initialization (e.g. `Host`) and as an instance (e.g. `new Host()`), we\n * attach the flag to make it available both as a static property and as a field on decorator\n * instance.\n *\n * @param decorator Provided DI decorator.\n * @param flag InjectFlag that should be applied.\n */\nfunction attachInjectFlag(decorator, flag) {\n decorator[DI_DECORATOR_FLAG] = flag;\n decorator.prototype[DI_DECORATOR_FLAG] = flag;\n return decorator;\n}\n/**\n * Reads monkey-patched property that contains InjectFlag attached to a decorator.\n *\n * @param token Token that may contain monkey-patched DI flags property.\n */\nfunction getInjectFlag(token) {\n return token[DI_DECORATOR_FLAG];\n}\nfunction catchInjectorError(e, token, injectorErrorName, source) {\n const tokenPath = e[NG_TEMP_TOKEN_PATH];\n if (token[SOURCE]) {\n tokenPath.unshift(token[SOURCE]);\n }\n e.message = formatError('\\n' + e.message, tokenPath, injectorErrorName, source);\n e[NG_TOKEN_PATH] = tokenPath;\n e[NG_TEMP_TOKEN_PATH] = null;\n throw e;\n}\nfunction formatError(text, obj, injectorErrorName, source = null) {\n text = text && text.charAt(0) === '\\n' && text.charAt(1) == NO_NEW_LINE ? text.slice(2) : text;\n let context = stringify(obj);\n if (Array.isArray(obj)) {\n context = obj.map(stringify).join(' -> ');\n }\n else if (typeof obj === 'object') {\n let parts = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n let value = obj[key];\n parts.push(key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));\n }\n }\n context = `{${parts.join(', ')}}`;\n }\n return `${injectorErrorName}${source ? '(' + source + ')' : ''}[${context}]: ${text.replace(NEW_LINE, '\\n ')}`;\n}\n\n/**\n * Convince closure compiler that the wrapped function has no side-effects.\n *\n * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to\n * allow us to execute a function but have closure compiler mark the call as no-side-effects.\n * It is important that the return value for the `noSideEffects` function be assigned\n * to something which is retained otherwise the call to `noSideEffects` will be removed by closure\n * compiler.\n */\nfunction noSideEffects(fn) {\n return { toString: fn }.toString();\n}\n\n/**\n * The strategy that the default change detector uses to detect changes.\n * When set, takes effect the next time change detection is triggered.\n *\n * @see {@link ChangeDetectorRef#usage-notes Change detection usage}\n *\n * @publicApi\n */\nvar ChangeDetectionStrategy;\n(function (ChangeDetectionStrategy) {\n /**\n * Use the `CheckOnce` strategy, meaning that automatic change detection is deactivated\n * until reactivated by setting the strategy to `Default` (`CheckAlways`).\n * Change detection can still be explicitly invoked.\n * This strategy applies to all child directives and cannot be overridden.\n */\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"OnPush\"] = 0] = \"OnPush\";\n /**\n * Use the default `CheckAlways` strategy, in which change detection is automatic until\n * explicitly deactivated.\n */\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Default\"] = 1] = \"Default\";\n})(ChangeDetectionStrategy || (ChangeDetectionStrategy = {}));\n\n/**\n * Defines the CSS styles encapsulation policies for the {@link Component} decorator's\n * `encapsulation` option.\n *\n * See {@link Component#encapsulation encapsulation}.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/ts/metadata/encapsulation.ts region='longform'}\n *\n * @publicApi\n */\nvar ViewEncapsulation$1;\n(function (ViewEncapsulation) {\n // TODO: consider making `ViewEncapsulation` a `const enum` instead. See\n // https://github.com/angular/angular/issues/44119 for additional information.\n /**\n * Emulates a native Shadow DOM encapsulation behavior by adding a specific attribute to the\n * component's host element and applying the same attribute to all the CSS selectors provided\n * via {@link Component#styles styles} or {@link Component#styleUrls styleUrls}.\n *\n * This is the default option.\n */\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\n // Historically the 1 value was for `Native` encapsulation which has been removed as of v11.\n /**\n * Doesn't provide any sort of CSS style encapsulation, meaning that all the styles provided\n * via {@link Component#styles styles} or {@link Component#styleUrls styleUrls} are applicable\n * to any HTML element of the application regardless of their host Component.\n */\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\n /**\n * Uses the browser's native Shadow DOM API to encapsulate CSS styles, meaning that it creates\n * a ShadowRoot for the component's host element which is then used to encapsulate\n * all the Component's styling.\n */\n ViewEncapsulation[ViewEncapsulation[\"ShadowDom\"] = 3] = \"ShadowDom\";\n})(ViewEncapsulation$1 || (ViewEncapsulation$1 = {}));\n\n/**\n * This file contains reuseable \"empty\" symbols that can be used as default return values\n * in different parts of the rendering code. Because the same symbols are returned, this\n * allows for identity checks against these values to be consistently used by the framework\n * code.\n */\nconst EMPTY_OBJ = {};\nconst EMPTY_ARRAY = [];\n// freezing the values prevents any code from accidentally inserting new values in\nif ((typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode()) {\n // These property accesses can be ignored because ngDevMode will be set to false\n // when optimizing code and the whole if statement will be dropped.\n // tslint:disable-next-line:no-toplevel-property-access\n Object.freeze(EMPTY_OBJ);\n // tslint:disable-next-line:no-toplevel-property-access\n Object.freeze(EMPTY_ARRAY);\n}\n\nconst NG_COMP_DEF = getClosureSafeProperty({ ɵcmp: getClosureSafeProperty });\nconst NG_DIR_DEF = getClosureSafeProperty({ ɵdir: getClosureSafeProperty });\nconst NG_PIPE_DEF = getClosureSafeProperty({ ɵpipe: getClosureSafeProperty });\nconst NG_MOD_DEF = getClosureSafeProperty({ ɵmod: getClosureSafeProperty });\nconst NG_FACTORY_DEF = getClosureSafeProperty({ ɵfac: getClosureSafeProperty });\n/**\n * If a directive is diPublic, bloomAdd sets a property on the type with this constant as\n * the key and the directive's unique ID as the value. This allows us to map directives to their\n * bloom filter bit for DI.\n */\n// TODO(misko): This is wrong. The NG_ELEMENT_ID should never be minified.\nconst NG_ELEMENT_ID = getClosureSafeProperty({ __NG_ELEMENT_ID__: getClosureSafeProperty });\n/**\n * The `NG_ENV_ID` field on a DI token indicates special processing in the `EnvironmentInjector`:\n * getting such tokens from the `EnvironmentInjector` will bypass the standard DI resolution\n * strategy and instead will return implementation produced by the `NG_ENV_ID` factory function.\n *\n * This particular retrieval of DI tokens is mostly done to eliminate circular dependencies and\n * improve tree-shaking.\n */\nconst NG_ENV_ID = getClosureSafeProperty({ __NG_ENV_ID__: getClosureSafeProperty });\n\n/**\n * Returns an index of `classToSearch` in `className` taking token boundaries into account.\n *\n * `classIndexOf('AB A', 'A', 0)` will be 3 (not 0 since `AB!==A`)\n *\n * @param className A string containing classes (whitespace separated)\n * @param classToSearch A class name to locate\n * @param startingIndex Starting location of search\n * @returns an index of the located class (or -1 if not found)\n */\nfunction classIndexOf(className, classToSearch, startingIndex) {\n ngDevMode && assertNotEqual(classToSearch, '', 'can not look for \"\" string.');\n let end = className.length;\n while (true) {\n const foundIndex = className.indexOf(classToSearch, startingIndex);\n if (foundIndex === -1)\n return foundIndex;\n if (foundIndex === 0 || className.charCodeAt(foundIndex - 1) <= 32 /* CharCode.SPACE */) {\n // Ensure that it has leading whitespace\n const length = classToSearch.length;\n if (foundIndex + length === end ||\n className.charCodeAt(foundIndex + length) <= 32 /* CharCode.SPACE */) {\n // Ensure that it has trailing whitespace\n return foundIndex;\n }\n }\n // False positive, keep searching from where we left off.\n startingIndex = foundIndex + 1;\n }\n}\n\n/**\n * Assigns all attribute values to the provided element via the inferred renderer.\n *\n * This function accepts two forms of attribute entries:\n *\n * default: (key, value):\n * attrs = [key1, value1, key2, value2]\n *\n * namespaced: (NAMESPACE_MARKER, uri, name, value)\n * attrs = [NAMESPACE_MARKER, uri, name, value, NAMESPACE_MARKER, uri, name, value]\n *\n * The `attrs` array can contain a mix of both the default and namespaced entries.\n * The \"default\" values are set without a marker, but if the function comes across\n * a marker value then it will attempt to set a namespaced value. If the marker is\n * not of a namespaced value then the function will quit and return the index value\n * where it stopped during the iteration of the attrs array.\n *\n * See [AttributeMarker] to understand what the namespace marker value is.\n *\n * Note that this instruction does not support assigning style and class values to\n * an element. See `elementStart` and `elementHostAttrs` to learn how styling values\n * are applied to an element.\n * @param renderer The renderer to be used\n * @param native The element that the attributes will be assigned to\n * @param attrs The attribute array of values that will be assigned to the element\n * @returns the index value that was last accessed in the attributes array\n */\nfunction setUpAttributes(renderer, native, attrs) {\n let i = 0;\n while (i < attrs.length) {\n const value = attrs[i];\n if (typeof value === 'number') {\n // only namespaces are supported. Other value types (such as style/class\n // entries) are not supported in this function.\n if (value !== 0 /* AttributeMarker.NamespaceURI */) {\n break;\n }\n // we just landed on the marker value ... therefore\n // we should skip to the next entry\n i++;\n const namespaceURI = attrs[i++];\n const attrName = attrs[i++];\n const attrVal = attrs[i++];\n ngDevMode && ngDevMode.rendererSetAttribute++;\n renderer.setAttribute(native, attrName, attrVal, namespaceURI);\n }\n else {\n // attrName is string;\n const attrName = value;\n const attrVal = attrs[++i];\n // Standard attributes\n ngDevMode && ngDevMode.rendererSetAttribute++;\n if (isAnimationProp(attrName)) {\n renderer.setProperty(native, attrName, attrVal);\n }\n else {\n renderer.setAttribute(native, attrName, attrVal);\n }\n i++;\n }\n }\n // another piece of code may iterate over the same attributes array. Therefore\n // it may be helpful to return the exact spot where the attributes array exited\n // whether by running into an unsupported marker or if all the static values were\n // iterated over.\n return i;\n}\n/**\n * Test whether the given value is a marker that indicates that the following\n * attribute values in a `TAttributes` array are only the names of attributes,\n * and not name-value pairs.\n * @param marker The attribute marker to test.\n * @returns true if the marker is a \"name-only\" marker (e.g. `Bindings`, `Template` or `I18n`).\n */\nfunction isNameOnlyAttributeMarker(marker) {\n return marker === 3 /* AttributeMarker.Bindings */ || marker === 4 /* AttributeMarker.Template */ ||\n marker === 6 /* AttributeMarker.I18n */;\n}\nfunction isAnimationProp(name) {\n // Perf note: accessing charCodeAt to check for the first character of a string is faster as\n // compared to accessing a character at index 0 (ex. name[0]). The main reason for this is that\n // charCodeAt doesn't allocate memory to return a substring.\n return name.charCodeAt(0) === 64 /* CharCode.AT_SIGN */;\n}\n/**\n * Merges `src` `TAttributes` into `dst` `TAttributes` removing any duplicates in the process.\n *\n * This merge function keeps the order of attrs same.\n *\n * @param dst Location of where the merged `TAttributes` should end up.\n * @param src `TAttributes` which should be appended to `dst`\n */\nfunction mergeHostAttrs(dst, src) {\n if (src === null || src.length === 0) {\n // do nothing\n }\n else if (dst === null || dst.length === 0) {\n // We have source, but dst is empty, just make a copy.\n dst = src.slice();\n }\n else {\n let srcMarker = -1 /* AttributeMarker.ImplicitAttributes */;\n for (let i = 0; i < src.length; i++) {\n const item = src[i];\n if (typeof item === 'number') {\n srcMarker = item;\n }\n else {\n if (srcMarker === 0 /* AttributeMarker.NamespaceURI */) {\n // Case where we need to consume `key1`, `key2`, `value` items.\n }\n else if (srcMarker === -1 /* AttributeMarker.ImplicitAttributes */ ||\n srcMarker === 2 /* AttributeMarker.Styles */) {\n // Case where we have to consume `key1` and `value` only.\n mergeHostAttribute(dst, srcMarker, item, null, src[++i]);\n }\n else {\n // Case where we have to consume `key1` only.\n mergeHostAttribute(dst, srcMarker, item, null, null);\n }\n }\n }\n }\n return dst;\n}\n/**\n * Append `key`/`value` to existing `TAttributes` taking region marker and duplicates into account.\n *\n * @param dst `TAttributes` to append to.\n * @param marker Region where the `key`/`value` should be added.\n * @param key1 Key to add to `TAttributes`\n * @param key2 Key to add to `TAttributes` (in case of `AttributeMarker.NamespaceURI`)\n * @param value Value to add or to overwrite to `TAttributes` Only used if `marker` is not Class.\n */\nfunction mergeHostAttribute(dst, marker, key1, key2, value) {\n let i = 0;\n // Assume that new markers will be inserted at the end.\n let markerInsertPosition = dst.length;\n // scan until correct type.\n if (marker === -1 /* AttributeMarker.ImplicitAttributes */) {\n markerInsertPosition = -1;\n }\n else {\n while (i < dst.length) {\n const dstValue = dst[i++];\n if (typeof dstValue === 'number') {\n if (dstValue === marker) {\n markerInsertPosition = -1;\n break;\n }\n else if (dstValue > marker) {\n // We need to save this as we want the markers to be inserted in specific order.\n markerInsertPosition = i - 1;\n break;\n }\n }\n }\n }\n // search until you find place of insertion\n while (i < dst.length) {\n const item = dst[i];\n if (typeof item === 'number') {\n // since `i` started as the index after the marker, we did not find it if we are at the next\n // marker\n break;\n }\n else if (item === key1) {\n // We already have same token\n if (key2 === null) {\n if (value !== null) {\n dst[i + 1] = value;\n }\n return;\n }\n else if (key2 === dst[i + 1]) {\n dst[i + 2] = value;\n return;\n }\n }\n // Increment counter.\n i++;\n if (key2 !== null)\n i++;\n if (value !== null)\n i++;\n }\n // insert at location.\n if (markerInsertPosition !== -1) {\n dst.splice(markerInsertPosition, 0, marker);\n i = markerInsertPosition + 1;\n }\n dst.splice(i++, 0, key1);\n if (key2 !== null) {\n dst.splice(i++, 0, key2);\n }\n if (value !== null) {\n dst.splice(i++, 0, value);\n }\n}\n\nconst NG_TEMPLATE_SELECTOR = 'ng-template';\n/**\n * Search the `TAttributes` to see if it contains `cssClassToMatch` (case insensitive)\n *\n * @param attrs `TAttributes` to search through.\n * @param cssClassToMatch class to match (lowercase)\n * @param isProjectionMode Whether or not class matching should look into the attribute `class` in\n * addition to the `AttributeMarker.Classes`.\n */\nfunction isCssClassMatching(attrs, cssClassToMatch, isProjectionMode) {\n // TODO(misko): The fact that this function needs to know about `isProjectionMode` seems suspect.\n // It is strange to me that sometimes the class information comes in form of `class` attribute\n // and sometimes in form of `AttributeMarker.Classes`. Some investigation is needed to determine\n // if that is the right behavior.\n ngDevMode &&\n assertEqual(cssClassToMatch, cssClassToMatch.toLowerCase(), 'Class name expected to be lowercase.');\n let i = 0;\n // Indicates whether we are processing value from the implicit\n // attribute section (i.e. before the first marker in the array).\n let isImplicitAttrsSection = true;\n while (i < attrs.length) {\n let item = attrs[i++];\n if (typeof item === 'string' && isImplicitAttrsSection) {\n const value = attrs[i++];\n if (isProjectionMode && item === 'class') {\n // We found a `class` attribute in the implicit attribute section,\n // check if it matches the value of the `cssClassToMatch` argument.\n if (classIndexOf(value.toLowerCase(), cssClassToMatch, 0) !== -1) {\n return true;\n }\n }\n }\n else if (item === 1 /* AttributeMarker.Classes */) {\n // We found the classes section. Start searching for the class.\n while (i < attrs.length && typeof (item = attrs[i++]) == 'string') {\n // while we have strings\n if (item.toLowerCase() === cssClassToMatch)\n return true;\n }\n return false;\n }\n else if (typeof item === 'number') {\n // We've came across a first marker, which indicates\n // that the implicit attribute section is over.\n isImplicitAttrsSection = false;\n }\n }\n return false;\n}\n/**\n * Checks whether the `tNode` represents an inline template (e.g. `*ngFor`).\n *\n * @param tNode current TNode\n */\nfunction isInlineTemplate(tNode) {\n return tNode.type === 4 /* TNodeType.Container */ && tNode.value !== NG_TEMPLATE_SELECTOR;\n}\n/**\n * Function that checks whether a given tNode matches tag-based selector and has a valid type.\n *\n * Matching can be performed in 2 modes: projection mode (when we project nodes) and regular\n * directive matching mode:\n * - in the \"directive matching\" mode we do _not_ take TContainer's tagName into account if it is\n * different from NG_TEMPLATE_SELECTOR (value different from NG_TEMPLATE_SELECTOR indicates that a\n * tag name was extracted from * syntax so we would match the same directive twice);\n * - in the \"projection\" mode, we use a tag name potentially extracted from the * syntax processing\n * (applicable to TNodeType.Container only).\n */\nfunction hasTagAndTypeMatch(tNode, currentSelector, isProjectionMode) {\n const tagNameToCompare = tNode.type === 4 /* TNodeType.Container */ && !isProjectionMode ? NG_TEMPLATE_SELECTOR : tNode.value;\n return currentSelector === tagNameToCompare;\n}\n/**\n * A utility function to match an Ivy node static data against a simple CSS selector\n *\n * @param node static data of the node to match\n * @param selector The selector to try matching against the node.\n * @param isProjectionMode if `true` we are matching for content projection, otherwise we are doing\n * directive matching.\n * @returns true if node matches the selector.\n */\nfunction isNodeMatchingSelector(tNode, selector, isProjectionMode) {\n ngDevMode && assertDefined(selector[0], 'Selector should have a tag name');\n let mode = 4 /* SelectorFlags.ELEMENT */;\n const nodeAttrs = tNode.attrs || [];\n // Find the index of first attribute that has no value, only a name.\n const nameOnlyMarkerIdx = getNameOnlyMarkerIndex(nodeAttrs);\n // When processing \":not\" selectors, we skip to the next \":not\" if the\n // current one doesn't match\n let skipToNextSelector = false;\n for (let i = 0; i < selector.length; i++) {\n const current = selector[i];\n if (typeof current === 'number') {\n // If we finish processing a :not selector and it hasn't failed, return false\n if (!skipToNextSelector && !isPositive(mode) && !isPositive(current)) {\n return false;\n }\n // If we are skipping to the next :not() and this mode flag is positive,\n // it's a part of the current :not() selector, and we should keep skipping\n if (skipToNextSelector && isPositive(current))\n continue;\n skipToNextSelector = false;\n mode = current | (mode & 1 /* SelectorFlags.NOT */);\n continue;\n }\n if (skipToNextSelector)\n continue;\n if (mode & 4 /* SelectorFlags.ELEMENT */) {\n mode = 2 /* SelectorFlags.ATTRIBUTE */ | mode & 1 /* SelectorFlags.NOT */;\n if (current !== '' && !hasTagAndTypeMatch(tNode, current, isProjectionMode) ||\n current === '' && selector.length === 1) {\n if (isPositive(mode))\n return false;\n skipToNextSelector = true;\n }\n }\n else {\n const selectorAttrValue = mode & 8 /* SelectorFlags.CLASS */ ? current : selector[++i];\n // special case for matching against classes when a tNode has been instantiated with\n // class and style values as separate attribute values (e.g. ['title', CLASS, 'foo'])\n if ((mode & 8 /* SelectorFlags.CLASS */) && tNode.attrs !== null) {\n if (!isCssClassMatching(tNode.attrs, selectorAttrValue, isProjectionMode)) {\n if (isPositive(mode))\n return false;\n skipToNextSelector = true;\n }\n continue;\n }\n const attrName = (mode & 8 /* SelectorFlags.CLASS */) ? 'class' : current;\n const attrIndexInNode = findAttrIndexInNode(attrName, nodeAttrs, isInlineTemplate(tNode), isProjectionMode);\n if (attrIndexInNode === -1) {\n if (isPositive(mode))\n return false;\n skipToNextSelector = true;\n continue;\n }\n if (selectorAttrValue !== '') {\n let nodeAttrValue;\n if (attrIndexInNode > nameOnlyMarkerIdx) {\n nodeAttrValue = '';\n }\n else {\n ngDevMode &&\n assertNotEqual(nodeAttrs[attrIndexInNode], 0 /* AttributeMarker.NamespaceURI */, 'We do not match directives on namespaced attributes');\n // we lowercase the attribute value to be able to match\n // selectors without case-sensitivity\n // (selectors are already in lowercase when generated)\n nodeAttrValue = nodeAttrs[attrIndexInNode + 1].toLowerCase();\n }\n const compareAgainstClassName = mode & 8 /* SelectorFlags.CLASS */ ? nodeAttrValue : null;\n if (compareAgainstClassName &&\n classIndexOf(compareAgainstClassName, selectorAttrValue, 0) !== -1 ||\n mode & 2 /* SelectorFlags.ATTRIBUTE */ && selectorAttrValue !== nodeAttrValue) {\n if (isPositive(mode))\n return false;\n skipToNextSelector = true;\n }\n }\n }\n }\n return isPositive(mode) || skipToNextSelector;\n}\nfunction isPositive(mode) {\n return (mode & 1 /* SelectorFlags.NOT */) === 0;\n}\n/**\n * Examines the attribute's definition array for a node to find the index of the\n * attribute that matches the given `name`.\n *\n * NOTE: This will not match namespaced attributes.\n *\n * Attribute matching depends upon `isInlineTemplate` and `isProjectionMode`.\n * The following table summarizes which types of attributes we attempt to match:\n *\n * ===========================================================================================================\n * Modes | Normal Attributes | Bindings Attributes | Template Attributes | I18n\n * Attributes\n * ===========================================================================================================\n * Inline + Projection | YES | YES | NO | YES\n * -----------------------------------------------------------------------------------------------------------\n * Inline + Directive | NO | NO | YES | NO\n * -----------------------------------------------------------------------------------------------------------\n * Non-inline + Projection | YES | YES | NO | YES\n * -----------------------------------------------------------------------------------------------------------\n * Non-inline + Directive | YES | YES | NO | YES\n * ===========================================================================================================\n *\n * @param name the name of the attribute to find\n * @param attrs the attribute array to examine\n * @param isInlineTemplate true if the node being matched is an inline template (e.g. `*ngFor`)\n * rather than a manually expanded template node (e.g `<ng-template>`).\n * @param isProjectionMode true if we are matching against content projection otherwise we are\n * matching against directives.\n */\nfunction findAttrIndexInNode(name, attrs, isInlineTemplate, isProjectionMode) {\n if (attrs === null)\n return -1;\n let i = 0;\n if (isProjectionMode || !isInlineTemplate) {\n let bindingsMode = false;\n while (i < attrs.length) {\n const maybeAttrName = attrs[i];\n if (maybeAttrName === name) {\n return i;\n }\n else if (maybeAttrName === 3 /* AttributeMarker.Bindings */ || maybeAttrName === 6 /* AttributeMarker.I18n */) {\n bindingsMode = true;\n }\n else if (maybeAttrName === 1 /* AttributeMarker.Classes */ || maybeAttrName === 2 /* AttributeMarker.Styles */) {\n let value = attrs[++i];\n // We should skip classes here because we have a separate mechanism for\n // matching classes in projection mode.\n while (typeof value === 'string') {\n value = attrs[++i];\n }\n continue;\n }\n else if (maybeAttrName === 4 /* AttributeMarker.Template */) {\n // We do not care about Template attributes in this scenario.\n break;\n }\n else if (maybeAttrName === 0 /* AttributeMarker.NamespaceURI */) {\n // Skip the whole namespaced attribute and value. This is by design.\n i += 4;\n continue;\n }\n // In binding mode there are only names, rather than name-value pairs.\n i += bindingsMode ? 1 : 2;\n }\n // We did not match the attribute\n return -1;\n }\n else {\n return matchTemplateAttribute(attrs, name);\n }\n}\nfunction isNodeMatchingSelectorList(tNode, selector, isProjectionMode = false) {\n for (let i = 0; i < selector.length; i++) {\n if (isNodeMatchingSelector(tNode, selector[i], isProjectionMode)) {\n return true;\n }\n }\n return false;\n}\nfunction getProjectAsAttrValue(tNode) {\n const nodeAttrs = tNode.attrs;\n if (nodeAttrs != null) {\n const ngProjectAsAttrIdx = nodeAttrs.indexOf(5 /* AttributeMarker.ProjectAs */);\n // only check for ngProjectAs in attribute names, don't accidentally match attribute's value\n // (attribute names are stored at even indexes)\n if ((ngProjectAsAttrIdx & 1) === 0) {\n return nodeAttrs[ngProjectAsAttrIdx + 1];\n }\n }\n return null;\n}\nfunction getNameOnlyMarkerIndex(nodeAttrs) {\n for (let i = 0; i < nodeAttrs.length; i++) {\n const nodeAttr = nodeAttrs[i];\n if (isNameOnlyAttributeMarker(nodeAttr)) {\n return i;\n }\n }\n return nodeAttrs.length;\n}\nfunction matchTemplateAttribute(attrs, name) {\n let i = attrs.indexOf(4 /* AttributeMarker.Template */);\n if (i > -1) {\n i++;\n while (i < attrs.length) {\n const attr = attrs[i];\n // Return in case we checked all template attrs and are switching to the next section in the\n // attrs array (that starts with a number that represents an attribute marker).\n if (typeof attr === 'number')\n return -1;\n if (attr === name)\n return i;\n i++;\n }\n }\n return -1;\n}\n/**\n * Checks whether a selector is inside a CssSelectorList\n * @param selector Selector to be checked.\n * @param list List in which to look for the selector.\n */\nfunction isSelectorInSelectorList(selector, list) {\n selectorListLoop: for (let i = 0; i < list.length; i++) {\n const currentSelectorInList = list[i];\n if (selector.length !== currentSelectorInList.length) {\n continue;\n }\n for (let j = 0; j < selector.length; j++) {\n if (selector[j] !== currentSelectorInList[j]) {\n continue selectorListLoop;\n }\n }\n return true;\n }\n return false;\n}\nfunction maybeWrapInNotSelector(isNegativeMode, chunk) {\n return isNegativeMode ? ':not(' + chunk.trim() + ')' : chunk;\n}\nfunction stringifyCSSSelector(selector) {\n let result = selector[0];\n let i = 1;\n let mode = 2 /* SelectorFlags.ATTRIBUTE */;\n let currentChunk = '';\n let isNegativeMode = false;\n while (i < selector.length) {\n let valueOrMarker = selector[i];\n if (typeof valueOrMarker === 'string') {\n if (mode & 2 /* SelectorFlags.ATTRIBUTE */) {\n const attrValue = selector[++i];\n currentChunk +=\n '[' + valueOrMarker + (attrValue.length > 0 ? '=\"' + attrValue + '\"' : '') + ']';\n }\n else if (mode & 8 /* SelectorFlags.CLASS */) {\n currentChunk += '.' + valueOrMarker;\n }\n else if (mode & 4 /* SelectorFlags.ELEMENT */) {\n currentChunk += ' ' + valueOrMarker;\n }\n }\n else {\n //\n // Append current chunk to the final result in case we come across SelectorFlag, which\n // indicates that the previous section of a selector is over. We need to accumulate content\n // between flags to make sure we wrap the chunk later in :not() selector if needed, e.g.\n // ```\n // ['', Flags.CLASS, '.classA', Flags.CLASS | Flags.NOT, '.classB', '.classC']\n // ```\n // should be transformed to `.classA :not(.classB .classC)`.\n //\n // Note: for negative selector part, we accumulate content between flags until we find the\n // next negative flag. This is needed to support a case where `:not()` rule contains more than\n // one chunk, e.g. the following selector:\n // ```\n // ['', Flags.ELEMENT | Flags.NOT, 'p', Flags.CLASS, 'foo', Flags.CLASS | Flags.NOT, 'bar']\n // ```\n // should be stringified to `:not(p.foo) :not(.bar)`\n //\n if (currentChunk !== '' && !isPositive(valueOrMarker)) {\n result += maybeWrapInNotSelector(isNegativeMode, currentChunk);\n currentChunk = '';\n }\n mode = valueOrMarker;\n // According to CssSelector spec, once we come across `SelectorFlags.NOT` flag, the negative\n // mode is maintained for remaining chunks of a selector.\n isNegativeMode = isNegativeMode || !isPositive(mode);\n }\n i++;\n }\n if (currentChunk !== '') {\n result += maybeWrapInNotSelector(isNegativeMode, currentChunk);\n }\n return result;\n}\n/**\n * Generates string representation of CSS selector in parsed form.\n *\n * ComponentDef and DirectiveDef are generated with the selector in parsed form to avoid doing\n * additional parsing at runtime (for example, for directive matching). However in some cases (for\n * example, while bootstrapping a component), a string version of the selector is required to query\n * for the host element on the page. This function takes the parsed form of a selector and returns\n * its string representation.\n *\n * @param selectorList selector in parsed form\n * @returns string representation of a given selector\n */\nfunction stringifyCSSSelectorList(selectorList) {\n return selectorList.map(stringifyCSSSelector).join(',');\n}\n/**\n * Extracts attributes and classes information from a given CSS selector.\n *\n * This function is used while creating a component dynamically. In this case, the host element\n * (that is created dynamically) should contain attributes and classes specified in component's CSS\n * selector.\n *\n * @param selector CSS selector in parsed form (in a form of array)\n * @returns object with `attrs` and `classes` fields that contain extracted information\n */\nfunction extractAttrsAndClassesFromSelector(selector) {\n const attrs = [];\n const classes = [];\n let i = 1;\n let mode = 2 /* SelectorFlags.ATTRIBUTE */;\n while (i < selector.length) {\n let valueOrMarker = selector[i];\n if (typeof valueOrMarker === 'string') {\n if (mode === 2 /* SelectorFlags.ATTRIBUTE */) {\n if (valueOrMarker !== '') {\n attrs.push(valueOrMarker, selector[++i]);\n }\n }\n else if (mode === 8 /* SelectorFlags.CLASS */) {\n classes.push(valueOrMarker);\n }\n }\n else {\n // According to CssSelector spec, once we come across `SelectorFlags.NOT` flag, the negative\n // mode is maintained for remaining chunks of a selector. Since attributes and classes are\n // extracted only for \"positive\" part of the selector, we can stop here.\n if (!isPositive(mode))\n break;\n mode = valueOrMarker;\n }\n i++;\n }\n return { attrs, classes };\n}\n\n/**\n * Create a component definition object.\n *\n *\n * # Example\n * ```\n * class MyComponent {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static ɵcmp = defineComponent({\n * ...\n * });\n * }\n * ```\n * @codeGenApi\n */\nfunction ɵɵdefineComponent(componentDefinition) {\n return noSideEffects(() => {\n // Initialize ngDevMode. This must be the first statement in ɵɵdefineComponent.\n // See the `initNgDevMode` docstring for more information.\n (typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode();\n const baseDef = getNgDirectiveDef(componentDefinition);\n const def = {\n ...baseDef,\n decls: componentDefinition.decls,\n vars: componentDefinition.vars,\n template: componentDefinition.template,\n consts: componentDefinition.consts || null,\n ngContentSelectors: componentDefinition.ngContentSelectors,\n onPush: componentDefinition.changeDetection === ChangeDetectionStrategy.OnPush,\n directiveDefs: null,\n pipeDefs: null,\n dependencies: baseDef.standalone && componentDefinition.dependencies || null,\n getStandaloneInjector: null,\n signals: componentDefinition.signals ?? false,\n data: componentDefinition.data || {},\n encapsulation: componentDefinition.encapsulation || ViewEncapsulation$1.Emulated,\n styles: componentDefinition.styles || EMPTY_ARRAY,\n _: null,\n schemas: componentDefinition.schemas || null,\n tView: null,\n id: '',\n };\n initFeatures(def);\n const dependencies = componentDefinition.dependencies;\n def.directiveDefs = extractDefListOrFactory(dependencies, /* pipeDef */ false);\n def.pipeDefs = extractDefListOrFactory(dependencies, /* pipeDef */ true);\n def.id = getComponentId(def);\n return def;\n });\n}\n/**\n * Generated next to NgModules to monkey-patch directive and pipe references onto a component's\n * definition, when generating a direct reference in the component file would otherwise create an\n * import cycle.\n *\n * See [this explanation](https://hackmd.io/Odw80D0pR6yfsOjg_7XCJg?view) for more details.\n *\n * @codeGenApi\n */\nfunction ɵɵsetComponentScope(type, directives, pipes) {\n const def = type.ɵcmp;\n def.directiveDefs = extractDefListOrFactory(directives, /* pipeDef */ false);\n def.pipeDefs = extractDefListOrFactory(pipes, /* pipeDef */ true);\n}\nfunction extractDirectiveDef(type) {\n return getComponentDef(type) || getDirectiveDef(type);\n}\nfunction nonNull(value) {\n return value !== null;\n}\n/**\n * @codeGenApi\n */\nfunction ɵɵdefineNgModule(def) {\n return noSideEffects(() => {\n const res = {\n type: def.type,\n bootstrap: def.bootstrap || EMPTY_ARRAY,\n declarations: def.declarations || EMPTY_ARRAY,\n imports: def.imports || EMPTY_ARRAY,\n exports: def.exports || EMPTY_ARRAY,\n transitiveCompileScopes: null,\n schemas: def.schemas || null,\n id: def.id || null,\n };\n return res;\n });\n}\n/**\n * Adds the module metadata that is necessary to compute the module's transitive scope to an\n * existing module definition.\n *\n * Scope metadata of modules is not used in production builds, so calls to this function can be\n * marked pure to tree-shake it from the bundle, allowing for all referenced declarations\n * to become eligible for tree-shaking as well.\n *\n * @codeGenApi\n */\nfunction ɵɵsetNgModuleScope(type, scope) {\n return noSideEffects(() => {\n const ngModuleDef = getNgModuleDef(type, true);\n ngModuleDef.declarations = scope.declarations || EMPTY_ARRAY;\n ngModuleDef.imports = scope.imports || EMPTY_ARRAY;\n ngModuleDef.exports = scope.exports || EMPTY_ARRAY;\n });\n}\n/**\n * Inverts an inputs or outputs lookup such that the keys, which were the\n * minified keys, are part of the values, and the values are parsed so that\n * the publicName of the property is the new key\n *\n * e.g. for\n *\n * ```\n * class Comp {\n * @Input()\n * propName1: string;\n *\n * @Input('publicName2')\n * declaredPropName2: number;\n * }\n * ```\n *\n * will be serialized as\n *\n * ```\n * {\n * propName1: 'propName1',\n * declaredPropName2: ['publicName2', 'declaredPropName2'],\n * }\n * ```\n *\n * which is than translated by the minifier as:\n *\n * ```\n * {\n * minifiedPropName1: 'propName1',\n * minifiedPropName2: ['publicName2', 'declaredPropName2'],\n * }\n * ```\n *\n * becomes: (public name => minifiedName)\n *\n * ```\n * {\n * 'propName1': 'minifiedPropName1',\n * 'publicName2': 'minifiedPropName2',\n * }\n * ```\n *\n * Optionally the function can take `secondary` which will result in: (public name => declared name)\n *\n * ```\n * {\n * 'propName1': 'propName1',\n * 'publicName2': 'declaredPropName2',\n * }\n * ```\n *\n\n */\nfunction invertObject(obj, secondary) {\n if (obj == null)\n return EMPTY_OBJ;\n const newLookup = {};\n for (const minifiedKey in obj) {\n if (obj.hasOwnProperty(minifiedKey)) {\n let publicName = obj[minifiedKey];\n let declaredName = publicName;\n if (Array.isArray(publicName)) {\n declaredName = publicName[1];\n publicName = publicName[0];\n }\n newLookup[publicName] = minifiedKey;\n if (secondary) {\n (secondary[publicName] = declaredName);\n }\n }\n }\n return newLookup;\n}\n/**\n * Create a directive definition object.\n *\n * # Example\n * ```ts\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static ɵdir = ɵɵdefineDirective({\n * ...\n * });\n * }\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵdefineDirective(directiveDefinition) {\n return noSideEffects(() => {\n const def = getNgDirectiveDef(directiveDefinition);\n initFeatures(def);\n return def;\n });\n}\n/**\n * Create a pipe definition object.\n *\n * # Example\n * ```\n * class MyPipe implements PipeTransform {\n * // Generated by Angular Template Compiler\n * static ɵpipe = definePipe({\n * ...\n * });\n * }\n * ```\n * @param pipeDef Pipe definition generated by the compiler\n *\n * @codeGenApi\n */\nfunction ɵɵdefinePipe(pipeDef) {\n return {\n type: pipeDef.type,\n name: pipeDef.name,\n factory: null,\n pure: pipeDef.pure !== false,\n standalone: pipeDef.standalone === true,\n onDestroy: pipeDef.type.prototype.ngOnDestroy || null\n };\n}\n/**\n * The following getter methods retrieve the definition from the type. Currently the retrieval\n * honors inheritance, but in the future we may change the rule to require that definitions are\n * explicit. This would require some sort of migration strategy.\n */\nfunction getComponentDef(type) {\n return type[NG_COMP_DEF] || null;\n}\nfunction getDirectiveDef(type) {\n return type[NG_DIR_DEF] || null;\n}\nfunction getPipeDef$1(type) {\n return type[NG_PIPE_DEF] || null;\n}\n/**\n * Checks whether a given Component, Directive or Pipe is marked as standalone.\n * This will return false if passed anything other than a Component, Directive, or Pipe class\n * See [this guide](/guide/standalone-components) for additional information:\n *\n * @param type A reference to a Component, Directive or Pipe.\n * @publicApi\n */\nfunction isStandalone(type) {\n const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef$1(type);\n return def !== null ? def.standalone : false;\n}\nfunction getNgModuleDef(type, throwNotFound) {\n const ngModuleDef = type[NG_MOD_DEF] || null;\n if (!ngModuleDef && throwNotFound === true) {\n throw new Error(`Type ${stringify(type)} does not have 'ɵmod' property.`);\n }\n return ngModuleDef;\n}\nfunction getNgDirectiveDef(directiveDefinition) {\n const declaredInputs = {};\n return {\n type: directiveDefinition.type,\n providersResolver: null,\n factory: null,\n hostBindings: directiveDefinition.hostBindings || null,\n hostVars: directiveDefinition.hostVars || 0,\n hostAttrs: directiveDefinition.hostAttrs || null,\n contentQueries: directiveDefinition.contentQueries || null,\n declaredInputs,\n inputTransforms: null,\n inputConfig: directiveDefinition.inputs || EMPTY_OBJ,\n exportAs: directiveDefinition.exportAs || null,\n standalone: directiveDefinition.standalone === true,\n signals: directiveDefinition.signals === true,\n selectors: directiveDefinition.selectors || EMPTY_ARRAY,\n viewQuery: directiveDefinition.viewQuery || null,\n features: directiveDefinition.features || null,\n setInput: null,\n findHostDirectiveDefs: null,\n hostDirectives: null,\n inputs: invertObject(directiveDefinition.inputs, declaredInputs),\n outputs: invertObject(directiveDefinition.outputs),\n };\n}\nfunction initFeatures(definition) {\n definition.features?.forEach((fn) => fn(definition));\n}\nfunction extractDefListOrFactory(dependencies, pipeDef) {\n if (!dependencies) {\n return null;\n }\n const defExtractor = pipeDef ? getPipeDef$1 : extractDirectiveDef;\n return () => (typeof dependencies === 'function' ? dependencies() : dependencies)\n .map(dep => defExtractor(dep))\n .filter(nonNull);\n}\n/**\n * A map that contains the generated component IDs and type.\n */\nconst GENERATED_COMP_IDS = new Map();\n/**\n * A method can returns a component ID from the component definition using a variant of DJB2 hash\n * algorithm.\n */\nfunction getComponentId(componentDef) {\n let hash = 0;\n // We cannot rely solely on the component selector as the same selector can be used in different\n // modules.\n //\n // `componentDef.style` is not used, due to it causing inconsistencies. Ex: when server\n // component styles has no sourcemaps and browsers do.\n //\n // Example:\n // https://github.com/angular/components/blob/d9f82c8f95309e77a6d82fd574c65871e91354c2/src/material/core/option/option.ts#L248\n // https://github.com/angular/components/blob/285f46dc2b4c5b127d356cb7c4714b221f03ce50/src/material/legacy-core/option/option.ts#L32\n const hashSelectors = [\n componentDef.selectors,\n componentDef.ngContentSelectors,\n componentDef.hostVars,\n componentDef.hostAttrs,\n componentDef.consts,\n componentDef.vars,\n componentDef.decls,\n componentDef.encapsulation,\n componentDef.standalone,\n componentDef.signals,\n componentDef.exportAs,\n JSON.stringify(componentDef.inputs),\n JSON.stringify(componentDef.outputs),\n // We cannot use 'componentDef.type.name' as the name of the symbol will change and will not\n // match in the server and browser bundles.\n Object.getOwnPropertyNames(componentDef.type.prototype),\n !!componentDef.contentQueries,\n !!componentDef.viewQuery,\n ].join('|');\n for (const char of hashSelectors) {\n hash = Math.imul(31, hash) + char.charCodeAt(0) << 0;\n }\n // Force positive number hash.\n // 2147483647 = equivalent of Integer.MAX_VALUE.\n hash += 2147483647 + 1;\n const compId = 'c' + hash;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (GENERATED_COMP_IDS.has(compId)) {\n const previousCompDefType = GENERATED_COMP_IDS.get(compId);\n if (previousCompDefType !== componentDef.type) {\n console.warn(formatRuntimeError(-912 /* RuntimeErrorCode.COMPONENT_ID_COLLISION */, `Component ID generation collision detected. Components '${previousCompDefType.name}' and '${componentDef.type.name}' with selector '${stringifyCSSSelectorList(componentDef\n .selectors)}' generated the same component ID. To fix this, you can change the selector of one of those components or add an extra host attribute to force a different ID.`));\n }\n }\n else {\n GENERATED_COMP_IDS.set(compId, componentDef.type);\n }\n }\n return compId;\n}\n\n// Below are constants for LView indices to help us look up LView members\n// without having to remember the specific indices.\n// Uglify will inline these when minifying so there shouldn't be a cost.\nconst HOST = 0;\nconst TVIEW = 1;\nconst FLAGS = 2;\nconst PARENT = 3;\nconst NEXT = 4;\nconst DESCENDANT_VIEWS_TO_REFRESH = 5;\nconst T_HOST = 6;\nconst CLEANUP = 7;\nconst CONTEXT = 8;\nconst INJECTOR$1 = 9;\nconst ENVIRONMENT = 10;\nconst RENDERER = 11;\nconst CHILD_HEAD = 12;\nconst CHILD_TAIL = 13;\n// FIXME(misko): Investigate if the three declarations aren't all same thing.\nconst DECLARATION_VIEW = 14;\nconst DECLARATION_COMPONENT_VIEW = 15;\nconst DECLARATION_LCONTAINER = 16;\nconst PREORDER_HOOK_FLAGS = 17;\nconst QUERIES = 18;\nconst ID = 19;\nconst EMBEDDED_VIEW_INJECTOR = 20;\nconst ON_DESTROY_HOOKS = 21;\nconst HYDRATION = 22;\nconst REACTIVE_TEMPLATE_CONSUMER = 23;\nconst REACTIVE_HOST_BINDING_CONSUMER = 24;\n/**\n * Size of LView's header. Necessary to adjust for it when setting slots.\n *\n * IMPORTANT: `HEADER_OFFSET` should only be referred to the in the `ɵɵ*` instructions to translate\n * instruction index into `LView` index. All other indexes should be in the `LView` index space and\n * there should be no need to refer to `HEADER_OFFSET` anywhere else.\n */\nconst HEADER_OFFSET = 25;\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nconst unusedValueExportToPlacateAjd$4 = 1;\n\n/**\n * Special location which allows easy identification of type. If we have an array which was\n * retrieved from the `LView` and that array has `true` at `TYPE` location, we know it is\n * `LContainer`.\n */\nconst TYPE = 1;\n/**\n * Below are constants for LContainer indices to help us look up LContainer members\n * without having to remember the specific indices.\n * Uglify will inline these when minifying so there shouldn't be a cost.\n */\n/**\n * Flag to signify that this `LContainer` may have transplanted views which need to be change\n * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.\n *\n * This flag, once set, is never unset for the `LContainer`. This means that when unset we can skip\n * a lot of work in `refreshEmbeddedViews`. But when set we still need to verify\n * that the `MOVED_VIEWS` are transplanted and on-push.\n */\nconst HAS_TRANSPLANTED_VIEWS = 2;\n// PARENT, NEXT, DESCENDANT_VIEWS_TO_REFRESH are indices 3, 4, and 5\n// As we already have these constants in LView, we don't need to re-create them.\n// T_HOST is index 6\n// We already have this constants in LView, we don't need to re-create it.\nconst NATIVE = 7;\nconst VIEW_REFS = 8;\nconst MOVED_VIEWS = 9;\nconst DEHYDRATED_VIEWS = 10;\n/**\n * Size of LContainer's header. Represents the index after which all views in the\n * container will be inserted. We need to keep a record of current views so we know\n * which views are already in the DOM (and don't need to be re-added) and so we can\n * remove views from the DOM when they are no longer required.\n */\nconst CONTAINER_HEADER_OFFSET = 11;\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nconst unusedValueExportToPlacateAjd$3 = 1;\n\n/**\n * True if `value` is `LView`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction isLView(value) {\n return Array.isArray(value) && typeof value[TYPE] === 'object';\n}\n/**\n * True if `value` is `LContainer`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction isLContainer(value) {\n return Array.isArray(value) && value[TYPE] === true;\n}\nfunction isContentQueryHost(tNode) {\n return (tNode.flags & 4 /* TNodeFlags.hasContentQuery */) !== 0;\n}\nfunction isComponentHost(tNode) {\n return tNode.componentOffset > -1;\n}\nfunction isDirectiveHost(tNode) {\n return (tNode.flags & 1 /* TNodeFlags.isDirectiveHost */) === 1 /* TNodeFlags.isDirectiveHost */;\n}\nfunction isComponentDef(def) {\n return !!def.template;\n}\nfunction isRootView(target) {\n return (target[FLAGS] & 512 /* LViewFlags.IsRoot */) !== 0;\n}\nfunction isProjectionTNode(tNode) {\n return (tNode.type & 16 /* TNodeType.Projection */) === 16 /* TNodeType.Projection */;\n}\nfunction hasI18n(lView) {\n return (lView[FLAGS] & 32 /* LViewFlags.HasI18n */) === 32 /* LViewFlags.HasI18n */;\n}\n\n// [Assert functions do not constraint type when they are guarded by a truthy\n// expression.](https://github.com/microsoft/TypeScript/issues/37295)\nfunction assertTNodeForLView(tNode, lView) {\n assertTNodeForTView(tNode, lView[TVIEW]);\n}\nfunction assertTNodeForTView(tNode, tView) {\n assertTNode(tNode);\n const tData = tView.data;\n for (let i = HEADER_OFFSET; i < tData.length; i++) {\n if (tData[i] === tNode) {\n return;\n }\n }\n throwError('This TNode does not belong to this TView.');\n}\nfunction assertTNode(tNode) {\n assertDefined(tNode, 'TNode must be defined');\n if (!(tNode && typeof tNode === 'object' && tNode.hasOwnProperty('directiveStylingLast'))) {\n throwError('Not of type TNode, got: ' + tNode);\n }\n}\nfunction assertTIcu(tIcu) {\n assertDefined(tIcu, 'Expected TIcu to be defined');\n if (!(typeof tIcu.currentCaseLViewIndex === 'number')) {\n throwError('Object is not of TIcu type.');\n }\n}\nfunction assertComponentType(actual, msg = 'Type passed in is not ComponentType, it does not have \\'ɵcmp\\' property.') {\n if (!getComponentDef(actual)) {\n throwError(msg);\n }\n}\nfunction assertNgModuleType(actual, msg = 'Type passed in is not NgModuleType, it does not have \\'ɵmod\\' property.') {\n if (!getNgModuleDef(actual)) {\n throwError(msg);\n }\n}\nfunction assertCurrentTNodeIsParent(isParent) {\n assertEqual(isParent, true, 'currentTNode should be a parent');\n}\nfunction assertHasParent(tNode) {\n assertDefined(tNode, 'currentTNode should exist!');\n assertDefined(tNode.parent, 'currentTNode should have a parent');\n}\nfunction assertLContainer(value) {\n assertDefined(value, 'LContainer must be defined');\n assertEqual(isLContainer(value), true, 'Expecting LContainer');\n}\nfunction assertLViewOrUndefined(value) {\n value && assertEqual(isLView(value), true, 'Expecting LView or undefined or null');\n}\nfunction assertLView(value) {\n assertDefined(value, 'LView must be defined');\n assertEqual(isLView(value), true, 'Expecting LView');\n}\nfunction assertFirstCreatePass(tView, errMessage) {\n assertEqual(tView.firstCreatePass, true, errMessage || 'Should only be called in first create pass.');\n}\nfunction assertFirstUpdatePass(tView, errMessage) {\n assertEqual(tView.firstUpdatePass, true, errMessage || 'Should only be called in first update pass.');\n}\n/**\n * This is a basic sanity check that an object is probably a directive def. DirectiveDef is\n * an interface, so we can't do a direct instanceof check.\n */\nfunction assertDirectiveDef(obj) {\n if (obj.type === undefined || obj.selectors == undefined || obj.inputs === undefined) {\n throwError(`Expected a DirectiveDef/ComponentDef and this object does not seem to have the expected shape.`);\n }\n}\nfunction assertIndexInDeclRange(lView, index) {\n const tView = lView[1];\n assertBetween(HEADER_OFFSET, tView.bindingStartIndex, index);\n}\nfunction assertIndexInExpandoRange(lView, index) {\n const tView = lView[1];\n assertBetween(tView.expandoStartIndex, lView.length, index);\n}\nfunction assertBetween(lower, upper, index) {\n if (!(lower <= index && index < upper)) {\n throwError(`Index out of range (expecting ${lower} <= ${index} < ${upper})`);\n }\n}\nfunction assertProjectionSlots(lView, errMessage) {\n assertDefined(lView[DECLARATION_COMPONENT_VIEW], 'Component views should exist.');\n assertDefined(lView[DECLARATION_COMPONENT_VIEW][T_HOST].projection, errMessage ||\n 'Components with projection nodes (<ng-content>) must have projection slots defined.');\n}\nfunction assertParentView(lView, errMessage) {\n assertDefined(lView, errMessage || 'Component views should always have a parent view (component\\'s host view)');\n}\n/**\n * This is a basic sanity check that the `injectorIndex` seems to point to what looks like a\n * NodeInjector data structure.\n *\n * @param lView `LView` which should be checked.\n * @param injectorIndex index into the `LView` where the `NodeInjector` is expected.\n */\nfunction assertNodeInjector(lView, injectorIndex) {\n assertIndexInExpandoRange(lView, injectorIndex);\n assertIndexInExpandoRange(lView, injectorIndex + 8 /* NodeInjectorOffset.PARENT */);\n assertNumber(lView[injectorIndex + 0], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 1], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 2], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 3], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 4], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 5], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 6], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 7], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */], 'injectorIndex should point to parent injector');\n}\n\nfunction getFactoryDef(type, throwNotFound) {\n const hasFactoryDef = type.hasOwnProperty(NG_FACTORY_DEF);\n if (!hasFactoryDef && throwNotFound === true && ngDevMode) {\n throw new Error(`Type ${stringify(type)} does not have 'ɵfac' property.`);\n }\n return hasFactoryDef ? type[NG_FACTORY_DEF] : null;\n}\n\n/**\n * Symbol used to tell `Signal`s apart from other functions.\n *\n * This can be used to auto-unwrap signals in various cases, or to auto-wrap non-signal values.\n */\nconst SIGNAL = /* @__PURE__ */ Symbol('SIGNAL');\n/**\n * Checks if the given `value` is a reactive `Signal`.\n *\n * @developerPreview\n */\nfunction isSignal(value) {\n return typeof value === 'function' && value[SIGNAL] !== undefined;\n}\n/**\n * The default equality function used for `signal` and `computed`, which treats objects and arrays\n * as never equal, and all other primitive values using identity semantics.\n *\n * This allows signals to hold non-primitive values (arrays, objects, other collections) and still\n * propagate change notification upon explicit mutation without identity change.\n *\n * @developerPreview\n */\nfunction defaultEquals(a, b) {\n // `Object.is` compares two values using identity semantics which is desired behavior for\n // primitive values. If `Object.is` determines two values to be equal we need to make sure that\n // those don't represent objects (we want to make sure that 2 objects are always considered\n // \"unequal\"). The null check is needed for the special case of JavaScript reporting null values\n // as objects (`typeof null === 'object'`).\n return (a === null || typeof a !== 'object') && Object.is(a, b);\n}\n\n// Required as the signals library is in a separate package, so we need to explicitly ensure the\n/**\n * The currently active consumer `ReactiveNode`, if running code in a reactive context.\n *\n * Change this via `setActiveConsumer`.\n */\nlet activeConsumer = null;\nlet inNotificationPhase = false;\nfunction setActiveConsumer(consumer) {\n const prev = activeConsumer;\n activeConsumer = consumer;\n return prev;\n}\nconst REACTIVE_NODE = {\n version: 0,\n dirty: false,\n producerNode: undefined,\n producerLastReadVersion: undefined,\n producerIndexOfThis: undefined,\n nextProducerIndex: 0,\n liveConsumerNode: undefined,\n liveConsumerIndexOfThis: undefined,\n consumerAllowSignalWrites: false,\n consumerIsAlwaysLive: false,\n producerMustRecompute: () => false,\n producerRecomputeValue: () => { },\n consumerMarkedDirty: () => { },\n};\n/**\n * Called by implementations when a producer's signal is read.\n */\nfunction producerAccessed(node) {\n if (inNotificationPhase) {\n throw new Error(typeof ngDevMode !== 'undefined' && ngDevMode ?\n `Assertion error: signal read during notification phase` :\n '');\n }\n if (activeConsumer === null) {\n // Accessed outside of a reactive context, so nothing to record.\n return;\n }\n // This producer is the `idx`th dependency of `activeConsumer`.\n const idx = activeConsumer.nextProducerIndex++;\n assertConsumerNode(activeConsumer);\n if (idx < activeConsumer.producerNode.length && activeConsumer.producerNode[idx] !== node) {\n // There's been a change in producers since the last execution of `activeConsumer`.\n // `activeConsumer.producerNode[idx]` holds a stale dependency which will be be removed and\n // replaced with `this`.\n //\n // If `activeConsumer` isn't live, then this is a no-op, since we can replace the producer in\n // `activeConsumer.producerNode` directly. However, if `activeConsumer` is live, then we need\n // to remove it from the stale producer's `liveConsumer`s.\n if (consumerIsLive(activeConsumer)) {\n const staleProducer = activeConsumer.producerNode[idx];\n producerRemoveLiveConsumerAtIndex(staleProducer, activeConsumer.producerIndexOfThis[idx]);\n // At this point, the only record of `staleProducer` is the reference at\n // `activeConsumer.producerNode[idx]` which will be overwritten below.\n }\n }\n if (activeConsumer.producerNode[idx] !== node) {\n // We're a new dependency of the consumer (at `idx`).\n activeConsumer.producerNode[idx] = node;\n // If the active consumer is live, then add it as a live consumer. If not, then use 0 as a\n // placeholder value.\n activeConsumer.producerIndexOfThis[idx] =\n consumerIsLive(activeConsumer) ? producerAddLiveConsumer(node, activeConsumer, idx) : 0;\n }\n activeConsumer.producerLastReadVersion[idx] = node.version;\n}\n/**\n * Ensure this producer's `version` is up-to-date.\n */\nfunction producerUpdateValueVersion(node) {\n if (consumerIsLive(node) && !node.dirty) {\n // A live consumer will be marked dirty by producers, so a clean state means that its version\n // is guaranteed to be up-to-date.\n return;\n }\n if (!node.producerMustRecompute(node) && !consumerPollProducersForChange(node)) {\n // None of our producers report a change since the last time they were read, so no\n // recomputation of our value is necessary, and we can consider ourselves clean.\n node.dirty = false;\n return;\n }\n node.producerRecomputeValue(node);\n // After recomputing the value, we're no longer dirty.\n node.dirty = false;\n}\n/**\n * Propagate a dirty notification to live consumers of this producer.\n */\nfunction producerNotifyConsumers(node) {\n if (node.liveConsumerNode === undefined) {\n return;\n }\n // Prevent signal reads when we're updating the graph\n const prev = inNotificationPhase;\n inNotificationPhase = true;\n try {\n for (const consumer of node.liveConsumerNode) {\n if (!consumer.dirty) {\n consumerMarkDirty(consumer);\n }\n }\n }\n finally {\n inNotificationPhase = prev;\n }\n}\n/**\n * Whether this `ReactiveNode` in its producer capacity is currently allowed to initiate updates,\n * based on the current consumer context.\n */\nfunction producerUpdatesAllowed() {\n return activeConsumer?.consumerAllowSignalWrites !== false;\n}\nfunction consumerMarkDirty(node) {\n node.dirty = true;\n producerNotifyConsumers(node);\n node.consumerMarkedDirty?.(node);\n}\n/**\n * Prepare this consumer to run a computation in its reactive context.\n *\n * Must be called by subclasses which represent reactive computations, before those computations\n * begin.\n */\nfunction consumerBeforeComputation(node) {\n node && (node.nextProducerIndex = 0);\n return setActiveConsumer(node);\n}\n/**\n * Finalize this consumer's state after a reactive computation has run.\n *\n * Must be called by subclasses which represent reactive computations, after those computations\n * have finished.\n */\nfunction consumerAfterComputation(node, prevConsumer) {\n setActiveConsumer(prevConsumer);\n if (!node || node.producerNode === undefined || node.producerIndexOfThis === undefined ||\n node.producerLastReadVersion === undefined) {\n return;\n }\n if (consumerIsLive(node)) {\n // For live consumers, we need to remove the producer -> consumer edge for any stale producers\n // which weren't dependencies after the recomputation.\n for (let i = node.nextProducerIndex; i < node.producerNode.length; i++) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n }\n }\n // Truncate the producer tracking arrays.\n // Perf note: this is essentially truncating the length to `node.nextProducerIndex`, but\n // benchmarking has shown that individual pop operations are faster.\n while (node.producerNode.length > node.nextProducerIndex) {\n node.producerNode.pop();\n node.producerLastReadVersion.pop();\n node.producerIndexOfThis.pop();\n }\n}\n/**\n * Determine whether this consumer has any dependencies which have changed since the last time\n * they were read.\n */\nfunction consumerPollProducersForChange(node) {\n assertConsumerNode(node);\n // Poll producers for change.\n for (let i = 0; i < node.producerNode.length; i++) {\n const producer = node.producerNode[i];\n const seenVersion = node.producerLastReadVersion[i];\n // First check the versions. A mismatch means that the producer's value is known to have\n // changed since the last time we read it.\n if (seenVersion !== producer.version) {\n return true;\n }\n // The producer's version is the same as the last time we read it, but it might itself be\n // stale. Force the producer to recompute its version (calculating a new value if necessary).\n producerUpdateValueVersion(producer);\n // Now when we do this check, `producer.version` is guaranteed to be up to date, so if the\n // versions still match then it has not changed since the last time we read it.\n if (seenVersion !== producer.version) {\n return true;\n }\n }\n return false;\n}\n/**\n * Disconnect this consumer from the graph.\n */\nfunction consumerDestroy(node) {\n assertConsumerNode(node);\n if (consumerIsLive(node)) {\n // Drop all connections from the graph to this node.\n for (let i = 0; i < node.producerNode.length; i++) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n }\n }\n // Truncate all the arrays to drop all connection from this node to the graph.\n node.producerNode.length = node.producerLastReadVersion.length = node.producerIndexOfThis.length =\n 0;\n if (node.liveConsumerNode) {\n node.liveConsumerNode.length = node.liveConsumerIndexOfThis.length = 0;\n }\n}\n/**\n * Add `consumer` as a live consumer of this node.\n *\n * Note that this operation is potentially transitive. If this node becomes live, then it becomes\n * a live consumer of all of its current producers.\n */\nfunction producerAddLiveConsumer(node, consumer, indexOfThis) {\n assertProducerNode(node);\n assertConsumerNode(node);\n if (node.liveConsumerNode.length === 0) {\n // When going from 0 to 1 live consumers, we become a live consumer to our producers.\n for (let i = 0; i < node.producerNode.length; i++) {\n node.producerIndexOfThis[i] = producerAddLiveConsumer(node.producerNode[i], node, i);\n }\n }\n node.liveConsumerIndexOfThis.push(indexOfThis);\n return node.liveConsumerNode.push(consumer) - 1;\n}\n/**\n * Remove the live consumer at `idx`.\n */\nfunction producerRemoveLiveConsumerAtIndex(node, idx) {\n assertProducerNode(node);\n assertConsumerNode(node);\n if (typeof ngDevMode !== 'undefined' && ngDevMode && idx >= node.liveConsumerNode.length) {\n throw new Error(`Assertion error: active consumer index ${idx} is out of bounds of ${node.liveConsumerNode.length} consumers)`);\n }\n if (node.liveConsumerNode.length === 1) {\n // When removing the last live consumer, we will no longer be live. We need to remove\n // ourselves from our producers' tracking (which may cause consumer-producers to lose\n // liveness as well).\n for (let i = 0; i < node.producerNode.length; i++) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n }\n }\n // Move the last value of `liveConsumers` into `idx`. Note that if there's only a single\n // live consumer, this is a no-op.\n const lastIdx = node.liveConsumerNode.length - 1;\n node.liveConsumerNode[idx] = node.liveConsumerNode[lastIdx];\n node.liveConsumerIndexOfThis[idx] = node.liveConsumerIndexOfThis[lastIdx];\n // Truncate the array.\n node.liveConsumerNode.length--;\n node.liveConsumerIndexOfThis.length--;\n // If the index is still valid, then we need to fix the index pointer from the producer to this\n // consumer, and update it from `lastIdx` to `idx` (accounting for the move above).\n if (idx < node.liveConsumerNode.length) {\n const idxProducer = node.liveConsumerIndexOfThis[idx];\n const consumer = node.liveConsumerNode[idx];\n assertConsumerNode(consumer);\n consumer.producerIndexOfThis[idxProducer] = idx;\n }\n}\nfunction consumerIsLive(node) {\n return node.consumerIsAlwaysLive || (node?.liveConsumerNode?.length ?? 0) > 0;\n}\nfunction assertConsumerNode(node) {\n node.producerNode ??= [];\n node.producerIndexOfThis ??= [];\n node.producerLastReadVersion ??= [];\n}\nfunction assertProducerNode(node) {\n node.liveConsumerNode ??= [];\n node.liveConsumerIndexOfThis ??= [];\n}\n\n/**\n * Create a computed `Signal` which derives a reactive value from an expression.\n *\n * @developerPreview\n */\nfunction computed(computation, options) {\n const node = Object.create(COMPUTED_NODE);\n node.computation = computation;\n options?.equal && (node.equal = options.equal);\n const computed = () => {\n // Check if the value needs updating before returning it.\n producerUpdateValueVersion(node);\n // Record that someone looked at this signal.\n producerAccessed(node);\n if (node.value === ERRORED) {\n throw node.error;\n }\n return node.value;\n };\n computed[SIGNAL] = node;\n return computed;\n}\n/**\n * A dedicated symbol used before a computed value has been calculated for the first time.\n * Explicitly typed as `any` so we can use it as signal's value.\n */\nconst UNSET = /* @__PURE__ */ Symbol('UNSET');\n/**\n * A dedicated symbol used in place of a computed signal value to indicate that a given computation\n * is in progress. Used to detect cycles in computation chains.\n * Explicitly typed as `any` so we can use it as signal's value.\n */\nconst COMPUTING = /* @__PURE__ */ Symbol('COMPUTING');\n/**\n * A dedicated symbol used in place of a computed signal value to indicate that a given computation\n * failed. The thrown error is cached until the computation gets dirty again.\n * Explicitly typed as `any` so we can use it as signal's value.\n */\nconst ERRORED = /* @__PURE__ */ Symbol('ERRORED');\n// Note: Using an IIFE here to ensure that the spread assignment is not considered\n// a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.\n// TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.\nconst COMPUTED_NODE = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n value: UNSET,\n dirty: true,\n error: null,\n equal: defaultEquals,\n producerMustRecompute(node) {\n // Force a recomputation if there's no current value, or if the current value is in the\n // process of being calculated (which should throw an error).\n return node.value === UNSET || node.value === COMPUTING;\n },\n producerRecomputeValue(node) {\n if (node.value === COMPUTING) {\n // Our computation somehow led to a cyclic read of itself.\n throw new Error('Detected cycle in computations.');\n }\n const oldValue = node.value;\n node.value = COMPUTING;\n const prevConsumer = consumerBeforeComputation(node);\n let newValue;\n try {\n newValue = node.computation();\n }\n catch (err) {\n newValue = ERRORED;\n node.error = err;\n }\n finally {\n consumerAfterComputation(node, prevConsumer);\n }\n if (oldValue !== UNSET && oldValue !== ERRORED && newValue !== ERRORED &&\n node.equal(oldValue, newValue)) {\n // No change to `valueVersion` - old and new values are\n // semantically equivalent.\n node.value = oldValue;\n return;\n }\n node.value = newValue;\n node.version++;\n },\n };\n})();\n\nfunction defaultThrowError() {\n throw new Error();\n}\nlet throwInvalidWriteToSignalErrorFn = defaultThrowError;\nfunction throwInvalidWriteToSignalError() {\n throwInvalidWriteToSignalErrorFn();\n}\nfunction setThrowInvalidWriteToSignalError(fn) {\n throwInvalidWriteToSignalErrorFn = fn;\n}\n\n/**\n * If set, called after `WritableSignal`s are updated.\n *\n * This hook can be used to achieve various effects, such as running effects synchronously as part\n * of setting a signal.\n */\nlet postSignalSetFn = null;\n/**\n * Create a `Signal` that can be set or updated directly.\n *\n * @developerPreview\n */\nfunction signal(initialValue, options) {\n const node = Object.create(SIGNAL_NODE);\n node.value = initialValue;\n options?.equal && (node.equal = options.equal);\n function signalFn() {\n producerAccessed(node);\n return node.value;\n }\n signalFn.set = signalSetFn;\n signalFn.update = signalUpdateFn;\n signalFn.mutate = signalMutateFn;\n signalFn.asReadonly = signalAsReadonlyFn;\n signalFn[SIGNAL] = node;\n return signalFn;\n}\nfunction setPostSignalSetFn(fn) {\n const prev = postSignalSetFn;\n postSignalSetFn = fn;\n return prev;\n}\n// Note: Using an IIFE here to ensure that the spread assignment is not considered\n// a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.\n// TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.\nconst SIGNAL_NODE = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n equal: defaultEquals,\n readonlyFn: undefined,\n };\n})();\nfunction signalValueChanged(node) {\n node.version++;\n producerNotifyConsumers(node);\n postSignalSetFn?.();\n}\nfunction signalSetFn(newValue) {\n const node = this[SIGNAL];\n if (!producerUpdatesAllowed()) {\n throwInvalidWriteToSignalError();\n }\n if (!node.equal(node.value, newValue)) {\n node.value = newValue;\n signalValueChanged(node);\n }\n}\nfunction signalUpdateFn(updater) {\n if (!producerUpdatesAllowed()) {\n throwInvalidWriteToSignalError();\n }\n signalSetFn.call(this, updater(this[SIGNAL].value));\n}\nfunction signalMutateFn(mutator) {\n const node = this[SIGNAL];\n if (!producerUpdatesAllowed()) {\n throwInvalidWriteToSignalError();\n }\n // Mutate bypasses equality checks as it's by definition changing the value.\n mutator(node.value);\n signalValueChanged(node);\n}\nfunction signalAsReadonlyFn() {\n const node = this[SIGNAL];\n if (node.readonlyFn === undefined) {\n const readonlyFn = () => this();\n readonlyFn[SIGNAL] = node;\n node.readonlyFn = readonlyFn;\n }\n return node.readonlyFn;\n}\n\n/**\n * Execute an arbitrary function in a non-reactive (non-tracking) context. The executed function\n * can, optionally, return a value.\n *\n * @developerPreview\n */\nfunction untracked(nonReactiveReadsFn) {\n const prevConsumer = setActiveConsumer(null);\n // We are not trying to catch any particular errors here, just making sure that the consumers\n // stack is restored in case of errors.\n try {\n return nonReactiveReadsFn();\n }\n finally {\n setActiveConsumer(prevConsumer);\n }\n}\n\nfunction watch(fn, schedule, allowSignalWrites) {\n const node = Object.create(WATCH_NODE);\n if (allowSignalWrites) {\n node.consumerAllowSignalWrites = true;\n }\n node.fn = fn;\n node.schedule = schedule;\n const registerOnCleanup = (cleanupFn) => {\n node.cleanupFn = cleanupFn;\n };\n const run = () => {\n node.dirty = false;\n if (node.hasRun && !consumerPollProducersForChange(node)) {\n return;\n }\n node.hasRun = true;\n const prevConsumer = consumerBeforeComputation(node);\n try {\n node.cleanupFn();\n node.cleanupFn = NOOP_CLEANUP_FN;\n node.fn(registerOnCleanup);\n }\n finally {\n consumerAfterComputation(node, prevConsumer);\n }\n };\n node.ref = {\n notify: () => consumerMarkDirty(node),\n run,\n cleanup: () => node.cleanupFn(),\n };\n return node.ref;\n}\nconst NOOP_CLEANUP_FN = () => { };\n// Note: Using an IIFE here to ensure that the spread assignment is not considered\n// a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.\n// TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.\nconst WATCH_NODE = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n consumerIsAlwaysLive: true,\n consumerAllowSignalWrites: false,\n consumerMarkedDirty: (node) => {\n node.schedule(node.ref);\n },\n hasRun: false,\n cleanupFn: NOOP_CLEANUP_FN,\n };\n})();\n\nfunction setAlternateWeakRefImpl(impl) {\n // TODO: remove this function\n}\n\n/**\n * Represents a basic change from a previous to a new value for a single\n * property on a directive instance. Passed as a value in a\n * {@link SimpleChanges} object to the `ngOnChanges` hook.\n *\n * @see {@link OnChanges}\n *\n * @publicApi\n */\nclass SimpleChange {\n constructor(previousValue, currentValue, firstChange) {\n this.previousValue = previousValue;\n this.currentValue = currentValue;\n this.firstChange = firstChange;\n }\n /**\n * Check whether the new value is the first value assigned.\n */\n isFirstChange() {\n return this.firstChange;\n }\n}\n\n/**\n * The NgOnChangesFeature decorates a component with support for the ngOnChanges\n * lifecycle hook, so it should be included in any component that implements\n * that hook.\n *\n * If the component or directive uses inheritance, the NgOnChangesFeature MUST\n * be included as a feature AFTER {@link InheritDefinitionFeature}, otherwise\n * inherited properties will not be propagated to the ngOnChanges lifecycle\n * hook.\n *\n * Example usage:\n *\n * ```\n * static ɵcmp = defineComponent({\n * ...\n * inputs: {name: 'publicName'},\n * features: [NgOnChangesFeature]\n * });\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵNgOnChangesFeature() {\n return NgOnChangesFeatureImpl;\n}\nfunction NgOnChangesFeatureImpl(definition) {\n if (definition.type.prototype.ngOnChanges) {\n definition.setInput = ngOnChangesSetInput;\n }\n return rememberChangeHistoryAndInvokeOnChangesHook;\n}\n// This option ensures that the ngOnChanges lifecycle hook will be inherited\n// from superclasses (in InheritDefinitionFeature).\n/** @nocollapse */\n// tslint:disable-next-line:no-toplevel-property-access\nɵɵNgOnChangesFeature.ngInherit = true;\n/**\n * This is a synthetic lifecycle hook which gets inserted into `TView.preOrderHooks` to simulate\n * `ngOnChanges`.\n *\n * The hook reads the `NgSimpleChangesStore` data from the component instance and if changes are\n * found it invokes `ngOnChanges` on the component instance.\n *\n * @param this Component instance. Because this function gets inserted into `TView.preOrderHooks`,\n * it is guaranteed to be called with component instance.\n */\nfunction rememberChangeHistoryAndInvokeOnChangesHook() {\n const simpleChangesStore = getSimpleChangesStore(this);\n const current = simpleChangesStore?.current;\n if (current) {\n const previous = simpleChangesStore.previous;\n if (previous === EMPTY_OBJ) {\n simpleChangesStore.previous = current;\n }\n else {\n // New changes are copied to the previous store, so that we don't lose history for inputs\n // which were not changed this time\n for (let key in current) {\n previous[key] = current[key];\n }\n }\n simpleChangesStore.current = null;\n this.ngOnChanges(current);\n }\n}\nfunction ngOnChangesSetInput(instance, value, publicName, privateName) {\n const declaredName = this.declaredInputs[publicName];\n ngDevMode && assertString(declaredName, 'Name of input in ngOnChanges has to be a string');\n const simpleChangesStore = getSimpleChangesStore(instance) ||\n setSimpleChangesStore(instance, { previous: EMPTY_OBJ, current: null });\n const current = simpleChangesStore.current || (simpleChangesStore.current = {});\n const previous = simpleChangesStore.previous;\n const previousChange = previous[declaredName];\n current[declaredName] = new SimpleChange(previousChange && previousChange.currentValue, value, previous === EMPTY_OBJ);\n instance[privateName] = value;\n}\nconst SIMPLE_CHANGES_STORE = '__ngSimpleChanges__';\nfunction getSimpleChangesStore(instance) {\n return instance[SIMPLE_CHANGES_STORE] || null;\n}\nfunction setSimpleChangesStore(instance, store) {\n return instance[SIMPLE_CHANGES_STORE] = store;\n}\n\nlet profilerCallback = null;\n/**\n * Sets the callback function which will be invoked before and after performing certain actions at\n * runtime (for example, before and after running change detection).\n *\n * Warning: this function is *INTERNAL* and should not be relied upon in application's code.\n * The contract of the function might be changed in any release and/or the function can be removed\n * completely.\n *\n * @param profiler function provided by the caller or null value to disable profiling.\n */\nconst setProfiler = (profiler) => {\n profilerCallback = profiler;\n};\n/**\n * Profiler function which wraps user code executed by the runtime.\n *\n * @param event ProfilerEvent corresponding to the execution context\n * @param instance component instance\n * @param hookOrListener lifecycle hook function or output listener. The value depends on the\n * execution context\n * @returns\n */\nconst profiler = function (event, instance, hookOrListener) {\n if (profilerCallback != null /* both `null` and `undefined` */) {\n profilerCallback(event, instance, hookOrListener);\n }\n};\n\nconst SVG_NAMESPACE = 'svg';\nconst MATH_ML_NAMESPACE = 'math';\n\n/**\n * For efficiency reasons we often put several different data types (`RNode`, `LView`, `LContainer`)\n * in same location in `LView`. This is because we don't want to pre-allocate space for it\n * because the storage is sparse. This file contains utilities for dealing with such data types.\n *\n * How do we know what is stored at a given location in `LView`.\n * - `Array.isArray(value) === false` => `RNode` (The normal storage value)\n * - `Array.isArray(value) === true` => then the `value[0]` represents the wrapped value.\n * - `typeof value[TYPE] === 'object'` => `LView`\n * - This happens when we have a component at a given location\n * - `typeof value[TYPE] === true` => `LContainer`\n * - This happens when we have `LContainer` binding at a given location.\n *\n *\n * NOTE: it is assumed that `Array.isArray` and `typeof` operations are very efficient.\n */\n/**\n * Returns `RNode`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction unwrapRNode(value) {\n while (Array.isArray(value)) {\n value = value[HOST];\n }\n return value;\n}\n/**\n * Returns `LView` or `null` if not found.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction unwrapLView(value) {\n while (Array.isArray(value)) {\n // This check is same as `isLView()` but we don't call at as we don't want to call\n // `Array.isArray()` twice and give JITer more work for inlining.\n if (typeof value[TYPE] === 'object')\n return value;\n value = value[HOST];\n }\n return null;\n}\n/**\n * Retrieves an element value from the provided `viewData`, by unwrapping\n * from any containers, component views, or style contexts.\n */\nfunction getNativeByIndex(index, lView) {\n ngDevMode && assertIndexInRange(lView, index);\n ngDevMode && assertGreaterThanOrEqual(index, HEADER_OFFSET, 'Expected to be past HEADER_OFFSET');\n return unwrapRNode(lView[index]);\n}\n/**\n * Retrieve an `RNode` for a given `TNode` and `LView`.\n *\n * This function guarantees in dev mode to retrieve a non-null `RNode`.\n *\n * @param tNode\n * @param lView\n */\nfunction getNativeByTNode(tNode, lView) {\n ngDevMode && assertTNodeForLView(tNode, lView);\n ngDevMode && assertIndexInRange(lView, tNode.index);\n const node = unwrapRNode(lView[tNode.index]);\n return node;\n}\n/**\n * Retrieve an `RNode` or `null` for a given `TNode` and `LView`.\n *\n * Some `TNode`s don't have associated `RNode`s. For example `Projection`\n *\n * @param tNode\n * @param lView\n */\nfunction getNativeByTNodeOrNull(tNode, lView) {\n const index = tNode === null ? -1 : tNode.index;\n if (index !== -1) {\n ngDevMode && assertTNodeForLView(tNode, lView);\n const node = unwrapRNode(lView[index]);\n return node;\n }\n return null;\n}\n// fixme(misko): The return Type should be `TNode|null`\nfunction getTNode(tView, index) {\n ngDevMode && assertGreaterThan(index, -1, 'wrong index for TNode');\n ngDevMode && assertLessThan(index, tView.data.length, 'wrong index for TNode');\n const tNode = tView.data[index];\n ngDevMode && tNode !== null && assertTNode(tNode);\n return tNode;\n}\n/** Retrieves a value from any `LView` or `TData`. */\nfunction load(view, index) {\n ngDevMode && assertIndexInRange(view, index);\n return view[index];\n}\nfunction getComponentLViewByIndex(nodeIndex, hostView) {\n // Could be an LView or an LContainer. If LContainer, unwrap to find LView.\n ngDevMode && assertIndexInRange(hostView, nodeIndex);\n const slotValue = hostView[nodeIndex];\n const lView = isLView(slotValue) ? slotValue : slotValue[HOST];\n return lView;\n}\n/** Checks whether a given view is in creation mode */\nfunction isCreationMode(view) {\n return (view[FLAGS] & 4 /* LViewFlags.CreationMode */) === 4 /* LViewFlags.CreationMode */;\n}\n/**\n * Returns a boolean for whether the view is attached to the change detection tree.\n *\n * Note: This determines whether a view should be checked, not whether it's inserted\n * into a container. For that, you'll want `viewAttachedToContainer` below.\n */\nfunction viewAttachedToChangeDetector(view) {\n return (view[FLAGS] & 128 /* LViewFlags.Attached */) === 128 /* LViewFlags.Attached */;\n}\n/** Returns a boolean for whether the view is attached to a container. */\nfunction viewAttachedToContainer(view) {\n return isLContainer(view[PARENT]);\n}\nfunction getConstant(consts, index) {\n if (index === null || index === undefined)\n return null;\n ngDevMode && assertIndexInRange(consts, index);\n return consts[index];\n}\n/**\n * Resets the pre-order hook flags of the view.\n * @param lView the LView on which the flags are reset\n */\nfunction resetPreOrderHookFlags(lView) {\n lView[PREORDER_HOOK_FLAGS] = 0;\n}\n/**\n * Adds the `RefreshView` flag from the lView and updates DESCENDANT_VIEWS_TO_REFRESH counters of\n * parents.\n */\nfunction markViewForRefresh(lView) {\n if ((lView[FLAGS] & 1024 /* LViewFlags.RefreshView */) === 0) {\n lView[FLAGS] |= 1024 /* LViewFlags.RefreshView */;\n updateViewsToRefresh(lView, 1);\n }\n}\n/**\n * Removes the `RefreshView` flag from the lView and updates DESCENDANT_VIEWS_TO_REFRESH counters of\n * parents.\n */\nfunction clearViewRefreshFlag(lView) {\n if (lView[FLAGS] & 1024 /* LViewFlags.RefreshView */) {\n lView[FLAGS] &= ~1024 /* LViewFlags.RefreshView */;\n updateViewsToRefresh(lView, -1);\n }\n}\n/**\n * Updates the `DESCENDANT_VIEWS_TO_REFRESH` counter on the parents of the `LView` as well as the\n * parents above that whose\n * 1. counter goes from 0 to 1, indicating that there is a new child that has a view to refresh\n * or\n * 2. counter goes from 1 to 0, indicating there are no more descendant views to refresh\n */\nfunction updateViewsToRefresh(lView, amount) {\n let parent = lView[PARENT];\n if (parent === null) {\n return;\n }\n parent[DESCENDANT_VIEWS_TO_REFRESH] += amount;\n let viewOrContainer = parent;\n parent = parent[PARENT];\n while (parent !== null &&\n ((amount === 1 && viewOrContainer[DESCENDANT_VIEWS_TO_REFRESH] === 1) ||\n (amount === -1 && viewOrContainer[DESCENDANT_VIEWS_TO_REFRESH] === 0))) {\n parent[DESCENDANT_VIEWS_TO_REFRESH] += amount;\n viewOrContainer = parent;\n parent = parent[PARENT];\n }\n}\n/**\n * Stores a LView-specific destroy callback.\n */\nfunction storeLViewOnDestroy(lView, onDestroyCallback) {\n if ((lView[FLAGS] & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */) {\n throw new RuntimeError(911 /* RuntimeErrorCode.VIEW_ALREADY_DESTROYED */, ngDevMode && 'View has already been destroyed.');\n }\n if (lView[ON_DESTROY_HOOKS] === null) {\n lView[ON_DESTROY_HOOKS] = [];\n }\n lView[ON_DESTROY_HOOKS].push(onDestroyCallback);\n}\n/**\n * Removes previously registered LView-specific destroy callback.\n */\nfunction removeLViewOnDestroy(lView, onDestroyCallback) {\n if (lView[ON_DESTROY_HOOKS] === null)\n return;\n const destroyCBIdx = lView[ON_DESTROY_HOOKS].indexOf(onDestroyCallback);\n if (destroyCBIdx !== -1) {\n lView[ON_DESTROY_HOOKS].splice(destroyCBIdx, 1);\n }\n}\n\nconst instructionState = {\n lFrame: createLFrame(null),\n bindingsEnabled: true,\n skipHydrationRootTNode: null,\n};\n/**\n * In this mode, any changes in bindings will throw an ExpressionChangedAfterChecked error.\n *\n * Necessary to support ChangeDetectorRef.checkNoChanges().\n *\n * The `checkNoChanges` function is invoked only in ngDevMode=true and verifies that no unintended\n * changes exist in the change detector or its children.\n */\nlet _isInCheckNoChangesMode = false;\n/**\n * Returns true if the instruction state stack is empty.\n *\n * Intended to be called from tests only (tree shaken otherwise).\n */\nfunction specOnlyIsInstructionStateEmpty() {\n return instructionState.lFrame.parent === null;\n}\nfunction getElementDepthCount() {\n return instructionState.lFrame.elementDepthCount;\n}\nfunction increaseElementDepthCount() {\n instructionState.lFrame.elementDepthCount++;\n}\nfunction decreaseElementDepthCount() {\n instructionState.lFrame.elementDepthCount--;\n}\nfunction getBindingsEnabled() {\n return instructionState.bindingsEnabled;\n}\n/**\n * Returns true if currently inside a skip hydration block.\n * @returns boolean\n */\nfunction isInSkipHydrationBlock$1() {\n return instructionState.skipHydrationRootTNode !== null;\n}\n/**\n * Returns true if this is the root TNode of the skip hydration block.\n * @param tNode the current TNode\n * @returns boolean\n */\nfunction isSkipHydrationRootTNode(tNode) {\n return instructionState.skipHydrationRootTNode === tNode;\n}\n/**\n * Enables directive matching on elements.\n *\n * * Example:\n * ```\n * <my-comp my-directive>\n * Should match component / directive.\n * </my-comp>\n * <div ngNonBindable>\n * <!-- ɵɵdisableBindings() -->\n * <my-comp my-directive>\n * Should not match component / directive because we are in ngNonBindable.\n * </my-comp>\n * <!-- ɵɵenableBindings() -->\n * </div>\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵenableBindings() {\n instructionState.bindingsEnabled = true;\n}\n/**\n * Sets a flag to specify that the TNode is in a skip hydration block.\n * @param tNode the current TNode\n */\nfunction enterSkipHydrationBlock(tNode) {\n instructionState.skipHydrationRootTNode = tNode;\n}\n/**\n * Disables directive matching on element.\n *\n * * Example:\n * ```\n * <my-comp my-directive>\n * Should match component / directive.\n * </my-comp>\n * <div ngNonBindable>\n * <!-- ɵɵdisableBindings() -->\n * <my-comp my-directive>\n * Should not match component / directive because we are in ngNonBindable.\n * </my-comp>\n * <!-- ɵɵenableBindings() -->\n * </div>\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵdisableBindings() {\n instructionState.bindingsEnabled = false;\n}\n/**\n * Clears the root skip hydration node when leaving a skip hydration block.\n */\nfunction leaveSkipHydrationBlock() {\n instructionState.skipHydrationRootTNode = null;\n}\n/**\n * Return the current `LView`.\n */\nfunction getLView() {\n return instructionState.lFrame.lView;\n}\n/**\n * Return the current `TView`.\n */\nfunction getTView() {\n return instructionState.lFrame.tView;\n}\n/**\n * Restores `contextViewData` to the given OpaqueViewState instance.\n *\n * Used in conjunction with the getCurrentView() instruction to save a snapshot\n * of the current view and restore it when listeners are invoked. This allows\n * walking the declaration view tree in listeners to get vars from parent views.\n *\n * @param viewToRestore The OpaqueViewState instance to restore.\n * @returns Context of the restored OpaqueViewState instance.\n *\n * @codeGenApi\n */\nfunction ɵɵrestoreView(viewToRestore) {\n instructionState.lFrame.contextLView = viewToRestore;\n return viewToRestore[CONTEXT];\n}\n/**\n * Clears the view set in `ɵɵrestoreView` from memory. Returns the passed in\n * value so that it can be used as a return value of an instruction.\n *\n * @codeGenApi\n */\nfunction ɵɵresetView(value) {\n instructionState.lFrame.contextLView = null;\n return value;\n}\nfunction getCurrentTNode() {\n let currentTNode = getCurrentTNodePlaceholderOk();\n while (currentTNode !== null && currentTNode.type === 64 /* TNodeType.Placeholder */) {\n currentTNode = currentTNode.parent;\n }\n return currentTNode;\n}\nfunction getCurrentTNodePlaceholderOk() {\n return instructionState.lFrame.currentTNode;\n}\nfunction getCurrentParentTNode() {\n const lFrame = instructionState.lFrame;\n const currentTNode = lFrame.currentTNode;\n return lFrame.isParent ? currentTNode : currentTNode.parent;\n}\nfunction setCurrentTNode(tNode, isParent) {\n ngDevMode && tNode && assertTNodeForTView(tNode, instructionState.lFrame.tView);\n const lFrame = instructionState.lFrame;\n lFrame.currentTNode = tNode;\n lFrame.isParent = isParent;\n}\nfunction isCurrentTNodeParent() {\n return instructionState.lFrame.isParent;\n}\nfunction setCurrentTNodeAsNotParent() {\n instructionState.lFrame.isParent = false;\n}\nfunction getContextLView() {\n const contextLView = instructionState.lFrame.contextLView;\n ngDevMode && assertDefined(contextLView, 'contextLView must be defined.');\n return contextLView;\n}\nfunction isInCheckNoChangesMode() {\n !ngDevMode && throwError('Must never be called in production mode');\n return _isInCheckNoChangesMode;\n}\nfunction setIsInCheckNoChangesMode(mode) {\n !ngDevMode && throwError('Must never be called in production mode');\n _isInCheckNoChangesMode = mode;\n}\n// top level variables should not be exported for performance reasons (PERF_NOTES.md)\nfunction getBindingRoot() {\n const lFrame = instructionState.lFrame;\n let index = lFrame.bindingRootIndex;\n if (index === -1) {\n index = lFrame.bindingRootIndex = lFrame.tView.bindingStartIndex;\n }\n return index;\n}\nfunction getBindingIndex() {\n return instructionState.lFrame.bindingIndex;\n}\nfunction setBindingIndex(value) {\n return instructionState.lFrame.bindingIndex = value;\n}\nfunction nextBindingIndex() {\n return instructionState.lFrame.bindingIndex++;\n}\nfunction incrementBindingIndex(count) {\n const lFrame = instructionState.lFrame;\n const index = lFrame.bindingIndex;\n lFrame.bindingIndex = lFrame.bindingIndex + count;\n return index;\n}\nfunction isInI18nBlock() {\n return instructionState.lFrame.inI18n;\n}\nfunction setInI18nBlock(isInI18nBlock) {\n instructionState.lFrame.inI18n = isInI18nBlock;\n}\n/**\n * Set a new binding root index so that host template functions can execute.\n *\n * Bindings inside the host template are 0 index. But because we don't know ahead of time\n * how many host bindings we have we can't pre-compute them. For this reason they are all\n * 0 index and we just shift the root so that they match next available location in the LView.\n *\n * @param bindingRootIndex Root index for `hostBindings`\n * @param currentDirectiveIndex `TData[currentDirectiveIndex]` will point to the current directive\n * whose `hostBindings` are being processed.\n */\nfunction setBindingRootForHostBindings(bindingRootIndex, currentDirectiveIndex) {\n const lFrame = instructionState.lFrame;\n lFrame.bindingIndex = lFrame.bindingRootIndex = bindingRootIndex;\n setCurrentDirectiveIndex(currentDirectiveIndex);\n}\n/**\n * When host binding is executing this points to the directive index.\n * `TView.data[getCurrentDirectiveIndex()]` is `DirectiveDef`\n * `LView[getCurrentDirectiveIndex()]` is directive instance.\n */\nfunction getCurrentDirectiveIndex() {\n return instructionState.lFrame.currentDirectiveIndex;\n}\n/**\n * Sets an index of a directive whose `hostBindings` are being processed.\n *\n * @param currentDirectiveIndex `TData` index where current directive instance can be found.\n */\nfunction setCurrentDirectiveIndex(currentDirectiveIndex) {\n instructionState.lFrame.currentDirectiveIndex = currentDirectiveIndex;\n}\n/**\n * Retrieve the current `DirectiveDef` which is active when `hostBindings` instruction is being\n * executed.\n *\n * @param tData Current `TData` where the `DirectiveDef` will be looked up at.\n */\nfunction getCurrentDirectiveDef(tData) {\n const currentDirectiveIndex = instructionState.lFrame.currentDirectiveIndex;\n return currentDirectiveIndex === -1 ? null : tData[currentDirectiveIndex];\n}\nfunction getCurrentQueryIndex() {\n return instructionState.lFrame.currentQueryIndex;\n}\nfunction setCurrentQueryIndex(value) {\n instructionState.lFrame.currentQueryIndex = value;\n}\n/**\n * Returns a `TNode` of the location where the current `LView` is declared at.\n *\n * @param lView an `LView` that we want to find parent `TNode` for.\n */\nfunction getDeclarationTNode(lView) {\n const tView = lView[TVIEW];\n // Return the declaration parent for embedded views\n if (tView.type === 2 /* TViewType.Embedded */) {\n ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');\n return tView.declTNode;\n }\n // Components don't have `TView.declTNode` because each instance of component could be\n // inserted in different location, hence `TView.declTNode` is meaningless.\n // Falling back to `T_HOST` in case we cross component boundary.\n if (tView.type === 1 /* TViewType.Component */) {\n return lView[T_HOST];\n }\n // Remaining TNode type is `TViewType.Root` which doesn't have a parent TNode.\n return null;\n}\n/**\n * This is a light weight version of the `enterView` which is needed by the DI system.\n *\n * @param lView `LView` location of the DI context.\n * @param tNode `TNode` for DI context\n * @param flags DI context flags. if `SkipSelf` flag is set than we walk up the declaration\n * tree from `tNode` until we find parent declared `TElementNode`.\n * @returns `true` if we have successfully entered DI associated with `tNode` (or with declared\n * `TNode` if `flags` has `SkipSelf`). Failing to enter DI implies that no associated\n * `NodeInjector` can be found and we should instead use `ModuleInjector`.\n * - If `true` than this call must be fallowed by `leaveDI`\n * - If `false` than this call failed and we should NOT call `leaveDI`\n */\nfunction enterDI(lView, tNode, flags) {\n ngDevMode && assertLViewOrUndefined(lView);\n if (flags & InjectFlags.SkipSelf) {\n ngDevMode && assertTNodeForTView(tNode, lView[TVIEW]);\n let parentTNode = tNode;\n let parentLView = lView;\n while (true) {\n ngDevMode && assertDefined(parentTNode, 'Parent TNode should be defined');\n parentTNode = parentTNode.parent;\n if (parentTNode === null && !(flags & InjectFlags.Host)) {\n parentTNode = getDeclarationTNode(parentLView);\n if (parentTNode === null)\n break;\n // In this case, a parent exists and is definitely an element. So it will definitely\n // have an existing lView as the declaration view, which is why we can assume it's defined.\n ngDevMode && assertDefined(parentLView, 'Parent LView should be defined');\n parentLView = parentLView[DECLARATION_VIEW];\n // In Ivy there are Comment nodes that correspond to ngIf and NgFor embedded directives\n // We want to skip those and look only at Elements and ElementContainers to ensure\n // we're looking at true parent nodes, and not content or other types.\n if (parentTNode.type & (2 /* TNodeType.Element */ | 8 /* TNodeType.ElementContainer */)) {\n break;\n }\n }\n else {\n break;\n }\n }\n if (parentTNode === null) {\n // If we failed to find a parent TNode this means that we should use module injector.\n return false;\n }\n else {\n tNode = parentTNode;\n lView = parentLView;\n }\n }\n ngDevMode && assertTNodeForLView(tNode, lView);\n const lFrame = instructionState.lFrame = allocLFrame();\n lFrame.currentTNode = tNode;\n lFrame.lView = lView;\n return true;\n}\n/**\n * Swap the current lView with a new lView.\n *\n * For performance reasons we store the lView in the top level of the module.\n * This way we minimize the number of properties to read. Whenever a new view\n * is entered we have to store the lView for later, and when the view is\n * exited the state has to be restored\n *\n * @param newView New lView to become active\n * @returns the previously active lView;\n */\nfunction enterView(newView) {\n ngDevMode && assertNotEqual(newView[0], newView[1], '????');\n ngDevMode && assertLViewOrUndefined(newView);\n const newLFrame = allocLFrame();\n if (ngDevMode) {\n assertEqual(newLFrame.isParent, true, 'Expected clean LFrame');\n assertEqual(newLFrame.lView, null, 'Expected clean LFrame');\n assertEqual(newLFrame.tView, null, 'Expected clean LFrame');\n assertEqual(newLFrame.selectedIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.elementDepthCount, 0, 'Expected clean LFrame');\n assertEqual(newLFrame.currentDirectiveIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.currentNamespace, null, 'Expected clean LFrame');\n assertEqual(newLFrame.bindingRootIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.currentQueryIndex, 0, 'Expected clean LFrame');\n }\n const tView = newView[TVIEW];\n instructionState.lFrame = newLFrame;\n ngDevMode && tView.firstChild && assertTNodeForTView(tView.firstChild, tView);\n newLFrame.currentTNode = tView.firstChild;\n newLFrame.lView = newView;\n newLFrame.tView = tView;\n newLFrame.contextLView = newView;\n newLFrame.bindingIndex = tView.bindingStartIndex;\n newLFrame.inI18n = false;\n}\n/**\n * Allocates next free LFrame. This function tries to reuse the `LFrame`s to lower memory pressure.\n */\nfunction allocLFrame() {\n const currentLFrame = instructionState.lFrame;\n const childLFrame = currentLFrame === null ? null : currentLFrame.child;\n const newLFrame = childLFrame === null ? createLFrame(currentLFrame) : childLFrame;\n return newLFrame;\n}\nfunction createLFrame(parent) {\n const lFrame = {\n currentTNode: null,\n isParent: true,\n lView: null,\n tView: null,\n selectedIndex: -1,\n contextLView: null,\n elementDepthCount: 0,\n currentNamespace: null,\n currentDirectiveIndex: -1,\n bindingRootIndex: -1,\n bindingIndex: -1,\n currentQueryIndex: 0,\n parent: parent,\n child: null,\n inI18n: false,\n };\n parent !== null && (parent.child = lFrame); // link the new LFrame for reuse.\n return lFrame;\n}\n/**\n * A lightweight version of leave which is used with DI.\n *\n * This function only resets `currentTNode` and `LView` as those are the only properties\n * used with DI (`enterDI()`).\n *\n * NOTE: This function is reexported as `leaveDI`. However `leaveDI` has return type of `void` where\n * as `leaveViewLight` has `LFrame`. This is so that `leaveViewLight` can be used in `leaveView`.\n */\nfunction leaveViewLight() {\n const oldLFrame = instructionState.lFrame;\n instructionState.lFrame = oldLFrame.parent;\n oldLFrame.currentTNode = null;\n oldLFrame.lView = null;\n return oldLFrame;\n}\n/**\n * This is a lightweight version of the `leaveView` which is needed by the DI system.\n *\n * NOTE: this function is an alias so that we can change the type of the function to have `void`\n * return type.\n */\nconst leaveDI = leaveViewLight;\n/**\n * Leave the current `LView`\n *\n * This pops the `LFrame` with the associated `LView` from the stack.\n *\n * IMPORTANT: We must zero out the `LFrame` values here otherwise they will be retained. This is\n * because for performance reasons we don't release `LFrame` but rather keep it for next use.\n */\nfunction leaveView() {\n const oldLFrame = leaveViewLight();\n oldLFrame.isParent = true;\n oldLFrame.tView = null;\n oldLFrame.selectedIndex = -1;\n oldLFrame.contextLView = null;\n oldLFrame.elementDepthCount = 0;\n oldLFrame.currentDirectiveIndex = -1;\n oldLFrame.currentNamespace = null;\n oldLFrame.bindingRootIndex = -1;\n oldLFrame.bindingIndex = -1;\n oldLFrame.currentQueryIndex = 0;\n}\nfunction nextContextImpl(level) {\n const contextLView = instructionState.lFrame.contextLView =\n walkUpViews(level, instructionState.lFrame.contextLView);\n return contextLView[CONTEXT];\n}\nfunction walkUpViews(nestingLevel, currentView) {\n while (nestingLevel > 0) {\n ngDevMode &&\n assertDefined(currentView[DECLARATION_VIEW], 'Declaration view should be defined if nesting level is greater than 0.');\n currentView = currentView[DECLARATION_VIEW];\n nestingLevel--;\n }\n return currentView;\n}\n/**\n * Gets the currently selected element index.\n *\n * Used with {@link property} instruction (and more in the future) to identify the index in the\n * current `LView` to act on.\n */\nfunction getSelectedIndex() {\n return instructionState.lFrame.selectedIndex;\n}\n/**\n * Sets the most recent index passed to {@link select}\n *\n * Used with {@link property} instruction (and more in the future) to identify the index in the\n * current `LView` to act on.\n *\n * (Note that if an \"exit function\" was set earlier (via `setElementExitFn()`) then that will be\n * run if and when the provided `index` value is different from the current selected index value.)\n */\nfunction setSelectedIndex(index) {\n ngDevMode && index !== -1 &&\n assertGreaterThanOrEqual(index, HEADER_OFFSET, 'Index must be past HEADER_OFFSET (or -1).');\n ngDevMode &&\n assertLessThan(index, instructionState.lFrame.lView.length, 'Can\\'t set index passed end of LView');\n instructionState.lFrame.selectedIndex = index;\n}\n/**\n * Gets the `tNode` that represents currently selected element.\n */\nfunction getSelectedTNode() {\n const lFrame = instructionState.lFrame;\n return getTNode(lFrame.tView, lFrame.selectedIndex);\n}\n/**\n * Sets the namespace used to create elements to `'http://www.w3.org/2000/svg'` in global state.\n *\n * @codeGenApi\n */\nfunction ɵɵnamespaceSVG() {\n instructionState.lFrame.currentNamespace = SVG_NAMESPACE;\n}\n/**\n * Sets the namespace used to create elements to `'http://www.w3.org/1998/MathML/'` in global state.\n *\n * @codeGenApi\n */\nfunction ɵɵnamespaceMathML() {\n instructionState.lFrame.currentNamespace = MATH_ML_NAMESPACE;\n}\n/**\n * Sets the namespace used to create elements to `null`, which forces element creation to use\n * `createElement` rather than `createElementNS`.\n *\n * @codeGenApi\n */\nfunction ɵɵnamespaceHTML() {\n namespaceHTMLInternal();\n}\n/**\n * Sets the namespace used to create elements to `null`, which forces element creation to use\n * `createElement` rather than `createElementNS`.\n */\nfunction namespaceHTMLInternal() {\n instructionState.lFrame.currentNamespace = null;\n}\nfunction getNamespace$1() {\n return instructionState.lFrame.currentNamespace;\n}\nlet _wasLastNodeCreated = true;\n/**\n * Retrieves a global flag that indicates whether the most recent DOM node\n * was created or hydrated.\n */\nfunction wasLastNodeCreated() {\n return _wasLastNodeCreated;\n}\n/**\n * Sets a global flag to indicate whether the most recent DOM node\n * was created or hydrated.\n */\nfunction lastNodeWasCreated(flag) {\n _wasLastNodeCreated = flag;\n}\n\n/**\n * Adds all directive lifecycle hooks from the given `DirectiveDef` to the given `TView`.\n *\n * Must be run *only* on the first template pass.\n *\n * Sets up the pre-order hooks on the provided `tView`,\n * see {@link HookData} for details about the data structure.\n *\n * @param directiveIndex The index of the directive in LView\n * @param directiveDef The definition containing the hooks to setup in tView\n * @param tView The current TView\n */\nfunction registerPreOrderHooks(directiveIndex, directiveDef, tView) {\n ngDevMode && assertFirstCreatePass(tView);\n const { ngOnChanges, ngOnInit, ngDoCheck } = directiveDef.type.prototype;\n if (ngOnChanges) {\n const wrappedOnChanges = NgOnChangesFeatureImpl(directiveDef);\n (tView.preOrderHooks ??= []).push(directiveIndex, wrappedOnChanges);\n (tView.preOrderCheckHooks ??= []).push(directiveIndex, wrappedOnChanges);\n }\n if (ngOnInit) {\n (tView.preOrderHooks ??= []).push(0 - directiveIndex, ngOnInit);\n }\n if (ngDoCheck) {\n (tView.preOrderHooks ??= []).push(directiveIndex, ngDoCheck);\n (tView.preOrderCheckHooks ??= []).push(directiveIndex, ngDoCheck);\n }\n}\n/**\n *\n * Loops through the directives on the provided `tNode` and queues hooks to be\n * run that are not initialization hooks.\n *\n * Should be executed during `elementEnd()` and similar to\n * preserve hook execution order. Content, view, and destroy hooks for projected\n * components and directives must be called *before* their hosts.\n *\n * Sets up the content, view, and destroy hooks on the provided `tView`,\n * see {@link HookData} for details about the data structure.\n *\n * NOTE: This does not set up `onChanges`, `onInit` or `doCheck`, those are set up\n * separately at `elementStart`.\n *\n * @param tView The current TView\n * @param tNode The TNode whose directives are to be searched for hooks to queue\n */\nfunction registerPostOrderHooks(tView, tNode) {\n ngDevMode && assertFirstCreatePass(tView);\n // It's necessary to loop through the directives at elementEnd() (rather than processing in\n // directiveCreate) so we can preserve the current hook order. Content, view, and destroy\n // hooks for projected components and directives must be called *before* their hosts.\n for (let i = tNode.directiveStart, end = tNode.directiveEnd; i < end; i++) {\n const directiveDef = tView.data[i];\n ngDevMode && assertDefined(directiveDef, 'Expecting DirectiveDef');\n const lifecycleHooks = directiveDef.type.prototype;\n const { ngAfterContentInit, ngAfterContentChecked, ngAfterViewInit, ngAfterViewChecked, ngOnDestroy } = lifecycleHooks;\n if (ngAfterContentInit) {\n (tView.contentHooks ??= []).push(-i, ngAfterContentInit);\n }\n if (ngAfterContentChecked) {\n (tView.contentHooks ??= []).push(i, ngAfterContentChecked);\n (tView.contentCheckHooks ??= []).push(i, ngAfterContentChecked);\n }\n if (ngAfterViewInit) {\n (tView.viewHooks ??= []).push(-i, ngAfterViewInit);\n }\n if (ngAfterViewChecked) {\n (tView.viewHooks ??= []).push(i, ngAfterViewChecked);\n (tView.viewCheckHooks ??= []).push(i, ngAfterViewChecked);\n }\n if (ngOnDestroy != null) {\n (tView.destroyHooks ??= []).push(i, ngOnDestroy);\n }\n }\n}\n/**\n * Executing hooks requires complex logic as we need to deal with 2 constraints.\n *\n * 1. Init hooks (ngOnInit, ngAfterContentInit, ngAfterViewInit) must all be executed once and only\n * once, across many change detection cycles. This must be true even if some hooks throw, or if\n * some recursively trigger a change detection cycle.\n * To solve that, it is required to track the state of the execution of these init hooks.\n * This is done by storing and maintaining flags in the view: the {@link InitPhaseState},\n * and the index within that phase. They can be seen as a cursor in the following structure:\n * [[onInit1, onInit2], [afterContentInit1], [afterViewInit1, afterViewInit2, afterViewInit3]]\n * They are stored as flags in LView[FLAGS].\n *\n * 2. Pre-order hooks can be executed in batches, because of the select instruction.\n * To be able to pause and resume their execution, we also need some state about the hook's array\n * that is being processed:\n * - the index of the next hook to be executed\n * - the number of init hooks already found in the processed part of the array\n * They are stored as flags in LView[PREORDER_HOOK_FLAGS].\n */\n/**\n * Executes pre-order check hooks ( OnChanges, DoChanges) given a view where all the init hooks were\n * executed once. This is a light version of executeInitAndCheckPreOrderHooks where we can skip read\n * / write of the init-hooks related flags.\n * @param lView The LView where hooks are defined\n * @param hooks Hooks to be run\n * @param nodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nfunction executeCheckHooks(lView, hooks, nodeIndex) {\n callHooks(lView, hooks, 3 /* InitPhaseState.InitPhaseCompleted */, nodeIndex);\n}\n/**\n * Executes post-order init and check hooks (one of AfterContentInit, AfterContentChecked,\n * AfterViewInit, AfterViewChecked) given a view where there are pending init hooks to be executed.\n * @param lView The LView where hooks are defined\n * @param hooks Hooks to be run\n * @param initPhase A phase for which hooks should be run\n * @param nodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nfunction executeInitAndCheckHooks(lView, hooks, initPhase, nodeIndex) {\n ngDevMode &&\n assertNotEqual(initPhase, 3 /* InitPhaseState.InitPhaseCompleted */, 'Init pre-order hooks should not be called more than once');\n if ((lView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {\n callHooks(lView, hooks, initPhase, nodeIndex);\n }\n}\nfunction incrementInitPhaseFlags(lView, initPhase) {\n ngDevMode &&\n assertNotEqual(initPhase, 3 /* InitPhaseState.InitPhaseCompleted */, 'Init hooks phase should not be incremented after all init hooks have been run.');\n let flags = lView[FLAGS];\n if ((flags & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {\n flags &= 8191 /* LViewFlags.IndexWithinInitPhaseReset */;\n flags += 1 /* LViewFlags.InitPhaseStateIncrementer */;\n lView[FLAGS] = flags;\n }\n}\n/**\n * Calls lifecycle hooks with their contexts, skipping init hooks if it's not\n * the first LView pass\n *\n * @param currentView The current view\n * @param arr The array in which the hooks are found\n * @param initPhaseState the current state of the init phase\n * @param currentNodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nfunction callHooks(currentView, arr, initPhase, currentNodeIndex) {\n ngDevMode &&\n assertEqual(isInCheckNoChangesMode(), false, 'Hooks should never be run when in check no changes mode.');\n const startIndex = currentNodeIndex !== undefined ?\n (currentView[PREORDER_HOOK_FLAGS] & 65535 /* PreOrderHookFlags.IndexOfTheNextPreOrderHookMaskMask */) :\n 0;\n const nodeIndexLimit = currentNodeIndex != null ? currentNodeIndex : -1;\n const max = arr.length - 1; // Stop the loop at length - 1, because we look for the hook at i + 1\n let lastNodeIndexFound = 0;\n for (let i = startIndex; i < max; i++) {\n const hook = arr[i + 1];\n if (typeof hook === 'number') {\n lastNodeIndexFound = arr[i];\n if (currentNodeIndex != null && lastNodeIndexFound >= currentNodeIndex) {\n break;\n }\n }\n else {\n const isInitHook = arr[i] < 0;\n if (isInitHook) {\n currentView[PREORDER_HOOK_FLAGS] += 65536 /* PreOrderHookFlags.NumberOfInitHooksCalledIncrementer */;\n }\n if (lastNodeIndexFound < nodeIndexLimit || nodeIndexLimit == -1) {\n callHook(currentView, initPhase, arr, i);\n currentView[PREORDER_HOOK_FLAGS] =\n (currentView[PREORDER_HOOK_FLAGS] & 4294901760 /* PreOrderHookFlags.NumberOfInitHooksCalledMask */) + i +\n 2;\n }\n i++;\n }\n }\n}\n/**\n * Executes a single lifecycle hook, making sure that:\n * - it is called in the non-reactive context;\n * - profiling data are registered.\n */\nfunction callHookInternal(directive, hook) {\n profiler(4 /* ProfilerEvent.LifecycleHookStart */, directive, hook);\n const prevConsumer = setActiveConsumer(null);\n try {\n hook.call(directive);\n }\n finally {\n setActiveConsumer(prevConsumer);\n profiler(5 /* ProfilerEvent.LifecycleHookEnd */, directive, hook);\n }\n}\n/**\n * Execute one hook against the current `LView`.\n *\n * @param currentView The current view\n * @param initPhaseState the current state of the init phase\n * @param arr The array in which the hooks are found\n * @param i The current index within the hook data array\n */\nfunction callHook(currentView, initPhase, arr, i) {\n const isInitHook = arr[i] < 0;\n const hook = arr[i + 1];\n const directiveIndex = isInitHook ? -arr[i] : arr[i];\n const directive = currentView[directiveIndex];\n if (isInitHook) {\n const indexWithintInitPhase = currentView[FLAGS] >> 13 /* LViewFlags.IndexWithinInitPhaseShift */;\n // The init phase state must be always checked here as it may have been recursively updated.\n if (indexWithintInitPhase <\n (currentView[PREORDER_HOOK_FLAGS] >> 16 /* PreOrderHookFlags.NumberOfInitHooksCalledShift */) &&\n (currentView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {\n currentView[FLAGS] += 8192 /* LViewFlags.IndexWithinInitPhaseIncrementer */;\n callHookInternal(directive, hook);\n }\n }\n else {\n callHookInternal(directive, hook);\n }\n}\n\nconst NO_PARENT_INJECTOR = -1;\n/**\n * Each injector is saved in 9 contiguous slots in `LView` and 9 contiguous slots in\n * `TView.data`. This allows us to store information about the current node's tokens (which\n * can be shared in `TView`) as well as the tokens of its ancestor nodes (which cannot be\n * shared, so they live in `LView`).\n *\n * Each of these slots (aside from the last slot) contains a bloom filter. This bloom filter\n * determines whether a directive is available on the associated node or not. This prevents us\n * from searching the directives array at this level unless it's probable the directive is in it.\n *\n * See: https://en.wikipedia.org/wiki/Bloom_filter for more about bloom filters.\n *\n * Because all injectors have been flattened into `LView` and `TViewData`, they cannot typed\n * using interfaces as they were previously. The start index of each `LInjector` and `TInjector`\n * will differ based on where it is flattened into the main array, so it's not possible to know\n * the indices ahead of time and save their types here. The interfaces are still included here\n * for documentation purposes.\n *\n * export interface LInjector extends Array<any> {\n *\n * // Cumulative bloom for directive IDs 0-31 (IDs are % BLOOM_SIZE)\n * [0]: number;\n *\n * // Cumulative bloom for directive IDs 32-63\n * [1]: number;\n *\n * // Cumulative bloom for directive IDs 64-95\n * [2]: number;\n *\n * // Cumulative bloom for directive IDs 96-127\n * [3]: number;\n *\n * // Cumulative bloom for directive IDs 128-159\n * [4]: number;\n *\n * // Cumulative bloom for directive IDs 160 - 191\n * [5]: number;\n *\n * // Cumulative bloom for directive IDs 192 - 223\n * [6]: number;\n *\n * // Cumulative bloom for directive IDs 224 - 255\n * [7]: number;\n *\n * // We need to store a reference to the injector's parent so DI can keep looking up\n * // the injector tree until it finds the dependency it's looking for.\n * [PARENT_INJECTOR]: number;\n * }\n *\n * export interface TInjector extends Array<any> {\n *\n * // Shared node bloom for directive IDs 0-31 (IDs are % BLOOM_SIZE)\n * [0]: number;\n *\n * // Shared node bloom for directive IDs 32-63\n * [1]: number;\n *\n * // Shared node bloom for directive IDs 64-95\n * [2]: number;\n *\n * // Shared node bloom for directive IDs 96-127\n * [3]: number;\n *\n * // Shared node bloom for directive IDs 128-159\n * [4]: number;\n *\n * // Shared node bloom for directive IDs 160 - 191\n * [5]: number;\n *\n * // Shared node bloom for directive IDs 192 - 223\n * [6]: number;\n *\n * // Shared node bloom for directive IDs 224 - 255\n * [7]: number;\n *\n * // Necessary to find directive indices for a particular node.\n * [TNODE]: TElementNode|TElementContainerNode|TContainerNode;\n * }\n */\n/**\n * Factory for creating instances of injectors in the NodeInjector.\n *\n * This factory is complicated by the fact that it can resolve `multi` factories as well.\n *\n * NOTE: Some of the fields are optional which means that this class has two hidden classes.\n * - One without `multi` support (most common)\n * - One with `multi` values, (rare).\n *\n * Since VMs can cache up to 4 inline hidden classes this is OK.\n *\n * - Single factory: Only `resolving` and `factory` is defined.\n * - `providers` factory: `componentProviders` is a number and `index = -1`.\n * - `viewProviders` factory: `componentProviders` is a number and `index` points to `providers`.\n */\nclass NodeInjectorFactory {\n constructor(\n /**\n * Factory to invoke in order to create a new instance.\n */\n factory, \n /**\n * Set to `true` if the token is declared in `viewProviders` (or if it is component).\n */\n isViewProvider, injectImplementation) {\n this.factory = factory;\n /**\n * Marker set to true during factory invocation to see if we get into recursive loop.\n * Recursive loop causes an error to be displayed.\n */\n this.resolving = false;\n ngDevMode && assertDefined(factory, 'Factory not specified');\n ngDevMode && assertEqual(typeof factory, 'function', 'Expected factory function.');\n this.canSeeViewProviders = isViewProvider;\n this.injectImpl = injectImplementation;\n }\n}\nfunction isFactory(obj) {\n return obj instanceof NodeInjectorFactory;\n}\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nconst unusedValueExportToPlacateAjd$2 = 1;\n\n/**\n * Converts `TNodeType` into human readable text.\n * Make sure this matches with `TNodeType`\n */\nfunction toTNodeTypeAsString(tNodeType) {\n let text = '';\n (tNodeType & 1 /* TNodeType.Text */) && (text += '|Text');\n (tNodeType & 2 /* TNodeType.Element */) && (text += '|Element');\n (tNodeType & 4 /* TNodeType.Container */) && (text += '|Container');\n (tNodeType & 8 /* TNodeType.ElementContainer */) && (text += '|ElementContainer');\n (tNodeType & 16 /* TNodeType.Projection */) && (text += '|Projection');\n (tNodeType & 32 /* TNodeType.Icu */) && (text += '|IcuContainer');\n (tNodeType & 64 /* TNodeType.Placeholder */) && (text += '|Placeholder');\n return text.length > 0 ? text.substring(1) : text;\n}\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nconst unusedValueExportToPlacateAjd$1 = 1;\n/**\n * Returns `true` if the `TNode` has a directive which has `@Input()` for `class` binding.\n *\n * ```\n * <div my-dir [class]=\"exp\"></div>\n * ```\n * and\n * ```\n * @Directive({\n * })\n * class MyDirective {\n * @Input()\n * class: string;\n * }\n * ```\n *\n * In the above case it is necessary to write the reconciled styling information into the\n * directive's input.\n *\n * @param tNode\n */\nfunction hasClassInput(tNode) {\n return (tNode.flags & 8 /* TNodeFlags.hasClassInput */) !== 0;\n}\n/**\n * Returns `true` if the `TNode` has a directive which has `@Input()` for `style` binding.\n *\n * ```\n * <div my-dir [style]=\"exp\"></div>\n * ```\n * and\n * ```\n * @Directive({\n * })\n * class MyDirective {\n * @Input()\n * class: string;\n * }\n * ```\n *\n * In the above case it is necessary to write the reconciled styling information into the\n * directive's input.\n *\n * @param tNode\n */\nfunction hasStyleInput(tNode) {\n return (tNode.flags & 16 /* TNodeFlags.hasStyleInput */) !== 0;\n}\n\nfunction assertTNodeType(tNode, expectedTypes, message) {\n assertDefined(tNode, 'should be called with a TNode');\n if ((tNode.type & expectedTypes) === 0) {\n throwError(message ||\n `Expected [${toTNodeTypeAsString(expectedTypes)}] but got ${toTNodeTypeAsString(tNode.type)}.`);\n }\n}\nfunction assertPureTNodeType(type) {\n if (!(type === 2 /* TNodeType.Element */ || //\n type === 1 /* TNodeType.Text */ || //\n type === 4 /* TNodeType.Container */ || //\n type === 8 /* TNodeType.ElementContainer */ || //\n type === 32 /* TNodeType.Icu */ || //\n type === 16 /* TNodeType.Projection */ || //\n type === 64 /* TNodeType.Placeholder */)) {\n throwError(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`);\n }\n}\n\n/// Parent Injector Utils ///////////////////////////////////////////////////////////////\nfunction hasParentInjector(parentLocation) {\n return parentLocation !== NO_PARENT_INJECTOR;\n}\nfunction getParentInjectorIndex(parentLocation) {\n ngDevMode && assertNumber(parentLocation, 'Number expected');\n ngDevMode && assertNotEqual(parentLocation, -1, 'Not a valid state.');\n const parentInjectorIndex = parentLocation & 32767 /* RelativeInjectorLocationFlags.InjectorIndexMask */;\n ngDevMode &&\n assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, 'Parent injector must be pointing past HEADER_OFFSET.');\n return parentLocation & 32767 /* RelativeInjectorLocationFlags.InjectorIndexMask */;\n}\nfunction getParentInjectorViewOffset(parentLocation) {\n return parentLocation >> 16 /* RelativeInjectorLocationFlags.ViewOffsetShift */;\n}\n/**\n * Unwraps a parent injector location number to find the view offset from the current injector,\n * then walks up the declaration view tree until the view is found that contains the parent\n * injector.\n *\n * @param location The location of the parent injector, which contains the view offset\n * @param startView The LView instance from which to start walking up the view tree\n * @returns The LView instance that contains the parent injector\n */\nfunction getParentInjectorView(location, startView) {\n let viewOffset = getParentInjectorViewOffset(location);\n let parentView = startView;\n // For most cases, the parent injector can be found on the host node (e.g. for component\n // or container), but we must keep the loop here to support the rarer case of deeply nested\n // <ng-template> tags or inline views, where the parent injector might live many views\n // above the child injector.\n while (viewOffset > 0) {\n parentView = parentView[DECLARATION_VIEW];\n viewOffset--;\n }\n return parentView;\n}\n\n/**\n * Defines if the call to `inject` should include `viewProviders` in its resolution.\n *\n * This is set to true when we try to instantiate a component. This value is reset in\n * `getNodeInjectable` to a value which matches the declaration location of the token about to be\n * instantiated. This is done so that if we are injecting a token which was declared outside of\n * `viewProviders` we don't accidentally pull `viewProviders` in.\n *\n * Example:\n *\n * ```\n * @Injectable()\n * class MyService {\n * constructor(public value: String) {}\n * }\n *\n * @Component({\n * providers: [\n * MyService,\n * {provide: String, value: 'providers' }\n * ]\n * viewProviders: [\n * {provide: String, value: 'viewProviders'}\n * ]\n * })\n * class MyComponent {\n * constructor(myService: MyService, value: String) {\n * // We expect that Component can see into `viewProviders`.\n * expect(value).toEqual('viewProviders');\n * // `MyService` was not declared in `viewProviders` hence it can't see it.\n * expect(myService.value).toEqual('providers');\n * }\n * }\n *\n * ```\n */\nlet includeViewProviders = true;\nfunction setIncludeViewProviders(v) {\n const oldValue = includeViewProviders;\n includeViewProviders = v;\n return oldValue;\n}\n/**\n * The number of slots in each bloom filter (used by DI). The larger this number, the fewer\n * directives that will share slots, and thus, the fewer false positives when checking for\n * the existence of a directive.\n */\nconst BLOOM_SIZE = 256;\nconst BLOOM_MASK = BLOOM_SIZE - 1;\n/**\n * The number of bits that is represented by a single bloom bucket. JS bit operations are 32 bits,\n * so each bucket represents 32 distinct tokens which accounts for log2(32) = 5 bits of a bloom hash\n * number.\n */\nconst BLOOM_BUCKET_BITS = 5;\n/** Counter used to generate unique IDs for directives. */\nlet nextNgElementId = 0;\n/** Value used when something wasn't found by an injector. */\nconst NOT_FOUND = {};\n/**\n * Registers this directive as present in its node's injector by flipping the directive's\n * corresponding bit in the injector's bloom filter.\n *\n * @param injectorIndex The index of the node injector where this token should be registered\n * @param tView The TView for the injector's bloom filters\n * @param type The directive token to register\n */\nfunction bloomAdd(injectorIndex, tView, type) {\n ngDevMode && assertEqual(tView.firstCreatePass, true, 'expected firstCreatePass to be true');\n let id;\n if (typeof type === 'string') {\n id = type.charCodeAt(0) || 0;\n }\n else if (type.hasOwnProperty(NG_ELEMENT_ID)) {\n id = type[NG_ELEMENT_ID];\n }\n // Set a unique ID on the directive type, so if something tries to inject the directive,\n // we can easily retrieve the ID and hash it into the bloom bit that should be checked.\n if (id == null) {\n id = type[NG_ELEMENT_ID] = nextNgElementId++;\n }\n // We only have BLOOM_SIZE (256) slots in our bloom filter (8 buckets * 32 bits each),\n // so all unique IDs must be modulo-ed into a number from 0 - 255 to fit into the filter.\n const bloomHash = id & BLOOM_MASK;\n // Create a mask that targets the specific bit associated with the directive.\n // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding\n // to bit positions 0 - 31 in a 32 bit integer.\n const mask = 1 << bloomHash;\n // Each bloom bucket in `tData` represents `BLOOM_BUCKET_BITS` number of bits of `bloomHash`.\n // Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset that the mask\n // should be written to.\n tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask;\n}\n/**\n * Creates (or gets an existing) injector for a given element or container.\n *\n * @param tNode for which an injector should be retrieved / created.\n * @param lView View where the node is stored\n * @returns Node injector\n */\nfunction getOrCreateNodeInjectorForNode(tNode, lView) {\n const existingInjectorIndex = getInjectorIndex(tNode, lView);\n if (existingInjectorIndex !== -1) {\n return existingInjectorIndex;\n }\n const tView = lView[TVIEW];\n if (tView.firstCreatePass) {\n tNode.injectorIndex = lView.length;\n insertBloom(tView.data, tNode); // foundation for node bloom\n insertBloom(lView, null); // foundation for cumulative bloom\n insertBloom(tView.blueprint, null);\n }\n const parentLoc = getParentInjectorLocation(tNode, lView);\n const injectorIndex = tNode.injectorIndex;\n // If a parent injector can't be found, its location is set to -1.\n // In that case, we don't need to set up a cumulative bloom\n if (hasParentInjector(parentLoc)) {\n const parentIndex = getParentInjectorIndex(parentLoc);\n const parentLView = getParentInjectorView(parentLoc, lView);\n const parentData = parentLView[TVIEW].data;\n // Creates a cumulative bloom filter that merges the parent's bloom filter\n // and its own cumulative bloom (which contains tokens for all ancestors)\n for (let i = 0; i < 8 /* NodeInjectorOffset.BLOOM_SIZE */; i++) {\n lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i];\n }\n }\n lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */] = parentLoc;\n return injectorIndex;\n}\nfunction insertBloom(arr, footer) {\n arr.push(0, 0, 0, 0, 0, 0, 0, 0, footer);\n}\nfunction getInjectorIndex(tNode, lView) {\n if (tNode.injectorIndex === -1 ||\n // If the injector index is the same as its parent's injector index, then the index has been\n // copied down from the parent node. No injector has been created yet on this node.\n (tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex) ||\n // After the first template pass, the injector index might exist but the parent values\n // might not have been calculated yet for this instance\n lView[tNode.injectorIndex + 8 /* NodeInjectorOffset.PARENT */] === null) {\n return -1;\n }\n else {\n ngDevMode && assertIndexInRange(lView, tNode.injectorIndex);\n return tNode.injectorIndex;\n }\n}\n/**\n * Finds the index of the parent injector, with a view offset if applicable. Used to set the\n * parent injector initially.\n *\n * @returns Returns a number that is the combination of the number of LViews that we have to go up\n * to find the LView containing the parent inject AND the index of the injector within that LView.\n */\nfunction getParentInjectorLocation(tNode, lView) {\n if (tNode.parent && tNode.parent.injectorIndex !== -1) {\n // If we have a parent `TNode` and there is an injector associated with it we are done, because\n // the parent injector is within the current `LView`.\n return tNode.parent.injectorIndex; // ViewOffset is 0\n }\n // When parent injector location is computed it may be outside of the current view. (ie it could\n // be pointing to a declared parent location). This variable stores number of declaration parents\n // we need to walk up in order to find the parent injector location.\n let declarationViewOffset = 0;\n let parentTNode = null;\n let lViewCursor = lView;\n // The parent injector is not in the current `LView`. We will have to walk the declared parent\n // `LView` hierarchy and look for it. If we walk of the top, that means that there is no parent\n // `NodeInjector`.\n while (lViewCursor !== null) {\n parentTNode = getTNodeFromLView(lViewCursor);\n if (parentTNode === null) {\n // If we have no parent, than we are done.\n return NO_PARENT_INJECTOR;\n }\n ngDevMode && parentTNode && assertTNodeForLView(parentTNode, lViewCursor[DECLARATION_VIEW]);\n // Every iteration of the loop requires that we go to the declared parent.\n declarationViewOffset++;\n lViewCursor = lViewCursor[DECLARATION_VIEW];\n if (parentTNode.injectorIndex !== -1) {\n // We found a NodeInjector which points to something.\n return (parentTNode.injectorIndex |\n (declarationViewOffset << 16 /* RelativeInjectorLocationFlags.ViewOffsetShift */));\n }\n }\n return NO_PARENT_INJECTOR;\n}\n/**\n * Makes a type or an injection token public to the DI system by adding it to an\n * injector's bloom filter.\n *\n * @param di The node injector in which a directive will be added\n * @param token The type or the injection token to be made public\n */\nfunction diPublicInInjector(injectorIndex, tView, token) {\n bloomAdd(injectorIndex, tView, token);\n}\n/**\n * Inject static attribute value into directive constructor.\n *\n * This method is used with `factory` functions which are generated as part of\n * `defineDirective` or `defineComponent`. The method retrieves the static value\n * of an attribute. (Dynamic attributes are not supported since they are not resolved\n * at the time of injection and can change over time.)\n *\n * # Example\n * Given:\n * ```\n * @Component(...)\n * class MyComponent {\n * constructor(@Attribute('title') title: string) { ... }\n * }\n * ```\n * When instantiated with\n * ```\n * <my-component title=\"Hello\"></my-component>\n * ```\n *\n * Then factory method generated is:\n * ```\n * MyComponent.ɵcmp = defineComponent({\n * factory: () => new MyComponent(injectAttribute('title'))\n * ...\n * })\n * ```\n *\n * @publicApi\n */\nfunction injectAttributeImpl(tNode, attrNameToInject) {\n ngDevMode && assertTNodeType(tNode, 12 /* TNodeType.AnyContainer */ | 3 /* TNodeType.AnyRNode */);\n ngDevMode && assertDefined(tNode, 'expecting tNode');\n if (attrNameToInject === 'class') {\n return tNode.classes;\n }\n if (attrNameToInject === 'style') {\n return tNode.styles;\n }\n const attrs = tNode.attrs;\n if (attrs) {\n const attrsLength = attrs.length;\n let i = 0;\n while (i < attrsLength) {\n const value = attrs[i];\n // If we hit a `Bindings` or `Template` marker then we are done.\n if (isNameOnlyAttributeMarker(value))\n break;\n // Skip namespaced attributes\n if (value === 0 /* AttributeMarker.NamespaceURI */) {\n // we skip the next two values\n // as namespaced attributes looks like\n // [..., AttributeMarker.NamespaceURI, 'http://someuri.com/test', 'test:exist',\n // 'existValue', ...]\n i = i + 2;\n }\n else if (typeof value === 'number') {\n // Skip to the first value of the marked attribute.\n i++;\n while (i < attrsLength && typeof attrs[i] === 'string') {\n i++;\n }\n }\n else if (value === attrNameToInject) {\n return attrs[i + 1];\n }\n else {\n i = i + 2;\n }\n }\n }\n return null;\n}\nfunction notFoundValueOrThrow(notFoundValue, token, flags) {\n if ((flags & InjectFlags.Optional) || notFoundValue !== undefined) {\n return notFoundValue;\n }\n else {\n throwProviderNotFoundError(token, 'NodeInjector');\n }\n}\n/**\n * Returns the value associated to the given token from the ModuleInjector or throws exception\n *\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector or throws an exception\n */\nfunction lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) {\n if ((flags & InjectFlags.Optional) && notFoundValue === undefined) {\n // This must be set or the NullInjector will throw for optional deps\n notFoundValue = null;\n }\n if ((flags & (InjectFlags.Self | InjectFlags.Host)) === 0) {\n const moduleInjector = lView[INJECTOR$1];\n // switch to `injectInjectorOnly` implementation for module injector, since module injector\n // should not have access to Component/Directive DI scope (that may happen through\n // `directiveInject` implementation)\n const previousInjectImplementation = setInjectImplementation(undefined);\n try {\n if (moduleInjector) {\n return moduleInjector.get(token, notFoundValue, flags & InjectFlags.Optional);\n }\n else {\n return injectRootLimpMode(token, notFoundValue, flags & InjectFlags.Optional);\n }\n }\n finally {\n setInjectImplementation(previousInjectImplementation);\n }\n }\n return notFoundValueOrThrow(notFoundValue, token, flags);\n}\n/**\n * Returns the value associated to the given token from the NodeInjectors => ModuleInjector.\n *\n * Look for the injector providing the token by walking up the node injector tree and then\n * the module injector tree.\n *\n * This function patches `token` with `__NG_ELEMENT_ID__` which contains the id for the bloom\n * filter. `-1` is reserved for injecting `Injector` (implemented by `NodeInjector`)\n *\n * @param tNode The Node where the search for the injector should start\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector, `null` when not found, or `notFoundValue` if provided\n */\nfunction getOrCreateInjectable(tNode, lView, token, flags = InjectFlags.Default, notFoundValue) {\n if (tNode !== null) {\n // If the view or any of its ancestors have an embedded\n // view injector, we have to look it up there first.\n if (lView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */ &&\n // The token must be present on the current node injector when the `Self`\n // flag is set, so the lookup on embedded view injector(s) can be skipped.\n !(flags & InjectFlags.Self)) {\n const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND);\n if (embeddedInjectorValue !== NOT_FOUND) {\n return embeddedInjectorValue;\n }\n }\n // Otherwise try the node injector.\n const value = lookupTokenUsingNodeInjector(tNode, lView, token, flags, NOT_FOUND);\n if (value !== NOT_FOUND) {\n return value;\n }\n }\n // Finally, fall back to the module injector.\n return lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);\n}\n/**\n * Returns the value associated to the given token from the node injector.\n *\n * @param tNode The Node where the search for the injector should start\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector, `null` when not found, or `notFoundValue` if provided\n */\nfunction lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue) {\n const bloomHash = bloomHashBitOrFactory(token);\n // If the ID stored here is a function, this is a special object like ElementRef or TemplateRef\n // so just call the factory function to create it.\n if (typeof bloomHash === 'function') {\n if (!enterDI(lView, tNode, flags)) {\n // Failed to enter DI, try module injector instead. If a token is injected with the @Host\n // flag, the module injector is not searched for that token in Ivy.\n return (flags & InjectFlags.Host) ?\n notFoundValueOrThrow(notFoundValue, token, flags) :\n lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);\n }\n try {\n let value;\n if (ngDevMode) {\n runInInjectorProfilerContext(new NodeInjector(getCurrentTNode(), getLView()), token, () => {\n value = bloomHash(flags);\n if (value != null) {\n emitInstanceCreatedByInjectorEvent(value);\n }\n });\n }\n else {\n value = bloomHash(flags);\n }\n if (value == null && !(flags & InjectFlags.Optional)) {\n throwProviderNotFoundError(token);\n }\n else {\n return value;\n }\n }\n finally {\n leaveDI();\n }\n }\n else if (typeof bloomHash === 'number') {\n // A reference to the previous injector TView that was found while climbing the element\n // injector tree. This is used to know if viewProviders can be accessed on the current\n // injector.\n let previousTView = null;\n let injectorIndex = getInjectorIndex(tNode, lView);\n let parentLocation = NO_PARENT_INJECTOR;\n let hostTElementNode = flags & InjectFlags.Host ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null;\n // If we should skip this injector, or if there is no injector on this node, start by\n // searching the parent injector.\n if (injectorIndex === -1 || flags & InjectFlags.SkipSelf) {\n parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) :\n lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */];\n if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) {\n injectorIndex = -1;\n }\n else {\n previousTView = lView[TVIEW];\n injectorIndex = getParentInjectorIndex(parentLocation);\n lView = getParentInjectorView(parentLocation, lView);\n }\n }\n // Traverse up the injector tree until we find a potential match or until we know there\n // *isn't* a match.\n while (injectorIndex !== -1) {\n ngDevMode && assertNodeInjector(lView, injectorIndex);\n // Check the current injector. If it matches, see if it contains token.\n const tView = lView[TVIEW];\n ngDevMode &&\n assertTNodeForLView(tView.data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */], lView);\n if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {\n // At this point, we have an injector which *may* contain the token, so we step through\n // the providers and directives associated with the injector's corresponding node to get\n // the instance.\n const instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode);\n if (instance !== NOT_FOUND) {\n return instance;\n }\n }\n parentLocation = lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */];\n if (parentLocation !== NO_PARENT_INJECTOR &&\n shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */] === hostTElementNode) &&\n bloomHasToken(bloomHash, injectorIndex, lView)) {\n // The def wasn't found anywhere on this node, so it was a false positive.\n // Traverse up the tree and continue searching.\n previousTView = tView;\n injectorIndex = getParentInjectorIndex(parentLocation);\n lView = getParentInjectorView(parentLocation, lView);\n }\n else {\n // If we should not search parent OR If the ancestor bloom filter value does not have the\n // bit corresponding to the directive we can give up on traversing up to find the specific\n // injector.\n injectorIndex = -1;\n }\n }\n }\n return notFoundValue;\n}\nfunction searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) {\n const currentTView = lView[TVIEW];\n const tNode = currentTView.data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */];\n // First, we need to determine if view providers can be accessed by the starting element.\n // There are two possibilities\n const canAccessViewProviders = previousTView == null ?\n // 1) This is the first invocation `previousTView == null` which means that we are at the\n // `TNode` of where injector is starting to look. In such a case the only time we are allowed\n // to look into the ViewProviders is if:\n // - we are on a component\n // - AND the injector set `includeViewProviders` to true (implying that the token can see\n // ViewProviders because it is the Component or a Service which itself was declared in\n // ViewProviders)\n (isComponentHost(tNode) && includeViewProviders) :\n // 2) `previousTView != null` which means that we are now walking across the parent nodes.\n // In such a case we are only allowed to look into the ViewProviders if:\n // - We just crossed from child View to Parent View `previousTView != currentTView`\n // - AND the parent TNode is an Element.\n // This means that we just came from the Component's View and therefore are allowed to see\n // into the ViewProviders.\n (previousTView != currentTView && ((tNode.type & 3 /* TNodeType.AnyRNode */) !== 0));\n // This special case happens when there is a @host on the inject and when we are searching\n // on the host element node.\n const isHostSpecialCase = (flags & InjectFlags.Host) && hostTElementNode === tNode;\n const injectableIdx = locateDirectiveOrProvider(tNode, currentTView, token, canAccessViewProviders, isHostSpecialCase);\n if (injectableIdx !== null) {\n return getNodeInjectable(lView, currentTView, injectableIdx, tNode);\n }\n else {\n return NOT_FOUND;\n }\n}\n/**\n * Searches for the given token among the node's directives and providers.\n *\n * @param tNode TNode on which directives are present.\n * @param tView The tView we are currently processing\n * @param token Provider token or type of a directive to look for.\n * @param canAccessViewProviders Whether view providers should be considered.\n * @param isHostSpecialCase Whether the host special case applies.\n * @returns Index of a found directive or provider, or null when none found.\n */\nfunction locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders, isHostSpecialCase) {\n const nodeProviderIndexes = tNode.providerIndexes;\n const tInjectables = tView.data;\n const injectablesStart = nodeProviderIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;\n const directivesStart = tNode.directiveStart;\n const directiveEnd = tNode.directiveEnd;\n const cptViewProvidersCount = nodeProviderIndexes >> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */;\n const startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount;\n // When the host special case applies, only the viewProviders and the component are visible\n const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd;\n for (let i = startingIndex; i < endIndex; i++) {\n const providerTokenOrDef = tInjectables[i];\n if (i < directivesStart && token === providerTokenOrDef ||\n i >= directivesStart && providerTokenOrDef.type === token) {\n return i;\n }\n }\n if (isHostSpecialCase) {\n const dirDef = tInjectables[directivesStart];\n if (dirDef && isComponentDef(dirDef) && dirDef.type === token) {\n return directivesStart;\n }\n }\n return null;\n}\n/**\n * Retrieve or instantiate the injectable from the `LView` at particular `index`.\n *\n * This function checks to see if the value has already been instantiated and if so returns the\n * cached `injectable`. Otherwise if it detects that the value is still a factory it\n * instantiates the `injectable` and caches the value.\n */\nfunction getNodeInjectable(lView, tView, index, tNode) {\n let value = lView[index];\n const tData = tView.data;\n if (isFactory(value)) {\n const factory = value;\n if (factory.resolving) {\n throwCyclicDependencyError(stringifyForError(tData[index]));\n }\n const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);\n factory.resolving = true;\n let prevInjectContext;\n if (ngDevMode) {\n // tData indexes mirror the concrete instances in its corresponding LView.\n // lView[index] here is either the injectable instace itself or a factory,\n // therefore tData[index] is the constructor of that injectable or a\n // definition object that contains the constructor in a `.type` field.\n const token = tData[index].type || tData[index];\n const injector = new NodeInjector(tNode, lView);\n prevInjectContext = setInjectorProfilerContext({ injector, token });\n }\n const previousInjectImplementation = factory.injectImpl ? setInjectImplementation(factory.injectImpl) : null;\n const success = enterDI(lView, tNode, InjectFlags.Default);\n ngDevMode &&\n assertEqual(success, true, 'Because flags do not contain \\`SkipSelf\\' we expect this to always succeed.');\n try {\n value = lView[index] = factory.factory(undefined, tData, lView, tNode);\n ngDevMode && emitInstanceCreatedByInjectorEvent(value);\n // This code path is hit for both directives and providers.\n // For perf reasons, we want to avoid searching for hooks on providers.\n // It does no harm to try (the hooks just won't exist), but the extra\n // checks are unnecessary and this is a hot path. So we check to see\n // if the index of the dependency is in the directive range for this\n // tNode. If it's not, we know it's a provider and skip hook registration.\n if (tView.firstCreatePass && index >= tNode.directiveStart) {\n ngDevMode && assertDirectiveDef(tData[index]);\n registerPreOrderHooks(index, tData[index], tView);\n }\n }\n finally {\n ngDevMode && setInjectorProfilerContext(prevInjectContext);\n previousInjectImplementation !== null &&\n setInjectImplementation(previousInjectImplementation);\n setIncludeViewProviders(previousIncludeViewProviders);\n factory.resolving = false;\n leaveDI();\n }\n }\n return value;\n}\n/**\n * Returns the bit in an injector's bloom filter that should be used to determine whether or not\n * the directive might be provided by the injector.\n *\n * When a directive is public, it is added to the bloom filter and given a unique ID that can be\n * retrieved on the Type. When the directive isn't public or the token is not a directive `null`\n * is returned as the node injector can not possibly provide that token.\n *\n * @param token the injection token\n * @returns the matching bit to check in the bloom filter or `null` if the token is not known.\n * When the returned value is negative then it represents special values such as `Injector`.\n */\nfunction bloomHashBitOrFactory(token) {\n ngDevMode && assertDefined(token, 'token must be defined');\n if (typeof token === 'string') {\n return token.charCodeAt(0) || 0;\n }\n const tokenId = \n // First check with `hasOwnProperty` so we don't get an inherited ID.\n token.hasOwnProperty(NG_ELEMENT_ID) ? token[NG_ELEMENT_ID] : undefined;\n // Negative token IDs are used for special objects such as `Injector`\n if (typeof tokenId === 'number') {\n if (tokenId >= 0) {\n return tokenId & BLOOM_MASK;\n }\n else {\n ngDevMode &&\n assertEqual(tokenId, -1 /* InjectorMarkers.Injector */, 'Expecting to get Special Injector Id');\n return createNodeInjector;\n }\n }\n else {\n return tokenId;\n }\n}\nfunction bloomHasToken(bloomHash, injectorIndex, injectorView) {\n // Create a mask that targets the specific bit associated with the directive we're looking for.\n // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding\n // to bit positions 0 - 31 in a 32 bit integer.\n const mask = 1 << bloomHash;\n // Each bloom bucket in `injectorView` represents `BLOOM_BUCKET_BITS` number of bits of\n // `bloomHash`. Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset\n // that should be used.\n const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)];\n // If the bloom filter value has the bit corresponding to the directive's bloomBit flipped on,\n // this injector is a potential match.\n return !!(value & mask);\n}\n/** Returns true if flags prevent parent injector from being searched for tokens */\nfunction shouldSearchParent(flags, isFirstHostTNode) {\n return !(flags & InjectFlags.Self) && !(flags & InjectFlags.Host && isFirstHostTNode);\n}\nfunction getNodeInjectorLView(nodeInjector) {\n return nodeInjector._lView;\n}\nfunction getNodeInjectorTNode(nodeInjector) {\n return nodeInjector._tNode;\n}\nclass NodeInjector {\n constructor(_tNode, _lView) {\n this._tNode = _tNode;\n this._lView = _lView;\n }\n get(token, notFoundValue, flags) {\n return getOrCreateInjectable(this._tNode, this._lView, token, convertToBitFlags(flags), notFoundValue);\n }\n}\n/** Creates a `NodeInjector` for the current node. */\nfunction createNodeInjector() {\n return new NodeInjector(getCurrentTNode(), getLView());\n}\n/**\n * @codeGenApi\n */\nfunction ɵɵgetInheritedFactory(type) {\n return noSideEffects(() => {\n const ownConstructor = type.prototype.constructor;\n const ownFactory = ownConstructor[NG_FACTORY_DEF] || getFactoryOf(ownConstructor);\n const objectPrototype = Object.prototype;\n let parent = Object.getPrototypeOf(type.prototype).constructor;\n // Go up the prototype until we hit `Object`.\n while (parent && parent !== objectPrototype) {\n const factory = parent[NG_FACTORY_DEF] || getFactoryOf(parent);\n // If we hit something that has a factory and the factory isn't the same as the type,\n // we've found the inherited factory. Note the check that the factory isn't the type's\n // own factory is redundant in most cases, but if the user has custom decorators on the\n // class, this lookup will start one level down in the prototype chain, causing us to\n // find the own factory first and potentially triggering an infinite loop downstream.\n if (factory && factory !== ownFactory) {\n return factory;\n }\n parent = Object.getPrototypeOf(parent);\n }\n // There is no factory defined. Either this was improper usage of inheritance\n // (no Angular decorator on the superclass) or there is no constructor at all\n // in the inheritance chain. Since the two cases cannot be distinguished, the\n // latter has to be assumed.\n return (t) => new t();\n });\n}\nfunction getFactoryOf(type) {\n if (isForwardRef(type)) {\n return () => {\n const factory = getFactoryOf(resolveForwardRef(type));\n return factory && factory();\n };\n }\n return getFactoryDef(type);\n}\n/**\n * Returns a value from the closest embedded or node injector.\n *\n * @param tNode The Node where the search for the injector should start\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector, `null` when not found, or `notFoundValue` if provided\n */\nfunction lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundValue) {\n let currentTNode = tNode;\n let currentLView = lView;\n // When an LView with an embedded view injector is inserted, it'll likely be interlaced with\n // nodes who may have injectors (e.g. node injector -> embedded view injector -> node injector).\n // Since the bloom filters for the node injectors have already been constructed and we don't\n // have a way of extracting the records from an injector, the only way to maintain the correct\n // hierarchy when resolving the value is to walk it node-by-node while attempting to resolve\n // the token at each level.\n while (currentTNode !== null && currentLView !== null &&\n (currentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */) &&\n !(currentLView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {\n ngDevMode && assertTNodeForLView(currentTNode, currentLView);\n // Note that this lookup on the node injector is using the `Self` flag, because\n // we don't want the node injector to look at any parent injectors since we\n // may hit the embedded view injector first.\n const nodeInjectorValue = lookupTokenUsingNodeInjector(currentTNode, currentLView, token, flags | InjectFlags.Self, NOT_FOUND);\n if (nodeInjectorValue !== NOT_FOUND) {\n return nodeInjectorValue;\n }\n // Has an explicit type due to a TS bug: https://github.com/microsoft/TypeScript/issues/33191\n let parentTNode = currentTNode.parent;\n // `TNode.parent` includes the parent within the current view only. If it doesn't exist,\n // it means that we've hit the view boundary and we need to go up to the next view.\n if (!parentTNode) {\n // Before we go to the next LView, check if the token exists on the current embedded injector.\n const embeddedViewInjector = currentLView[EMBEDDED_VIEW_INJECTOR];\n if (embeddedViewInjector) {\n const embeddedViewInjectorValue = embeddedViewInjector.get(token, NOT_FOUND, flags);\n if (embeddedViewInjectorValue !== NOT_FOUND) {\n return embeddedViewInjectorValue;\n }\n }\n // Otherwise keep going up the tree.\n parentTNode = getTNodeFromLView(currentLView);\n currentLView = currentLView[DECLARATION_VIEW];\n }\n currentTNode = parentTNode;\n }\n return notFoundValue;\n}\n/** Gets the TNode associated with an LView inside of the declaration view. */\nfunction getTNodeFromLView(lView) {\n const tView = lView[TVIEW];\n const tViewType = tView.type;\n // The parent pointer differs based on `TView.type`.\n if (tViewType === 2 /* TViewType.Embedded */) {\n ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');\n return tView.declTNode;\n }\n else if (tViewType === 1 /* TViewType.Component */) {\n // Components don't have `TView.declTNode` because each instance of component could be\n // inserted in different location, hence `TView.declTNode` is meaningless.\n return lView[T_HOST];\n }\n return null;\n}\n\n/**\n * Facade for the attribute injection from DI.\n *\n * @codeGenApi\n */\nfunction ɵɵinjectAttribute(attrNameToInject) {\n return injectAttributeImpl(getCurrentTNode(), attrNameToInject);\n}\n\nconst ANNOTATIONS = '__annotations__';\nconst PARAMETERS = '__parameters__';\nconst PROP_METADATA = '__prop__metadata__';\n/**\n * @suppress {globalThis}\n */\nfunction makeDecorator(name, props, parentClass, additionalProcessing, typeFn) {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n function DecoratorFactory(...args) {\n if (this instanceof DecoratorFactory) {\n metaCtor.call(this, ...args);\n return this;\n }\n const annotationInstance = new DecoratorFactory(...args);\n return function TypeDecorator(cls) {\n if (typeFn)\n typeFn(cls, ...args);\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n const annotations = cls.hasOwnProperty(ANNOTATIONS) ?\n cls[ANNOTATIONS] :\n Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS];\n annotations.push(annotationInstance);\n if (additionalProcessing)\n additionalProcessing(cls);\n return cls;\n };\n }\n if (parentClass) {\n DecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n DecoratorFactory.prototype.ngMetadataName = name;\n DecoratorFactory.annotationCls = DecoratorFactory;\n return DecoratorFactory;\n });\n}\nfunction makeMetadataCtor(props) {\n return function ctor(...args) {\n if (props) {\n const values = props(...args);\n for (const propName in values) {\n this[propName] = values[propName];\n }\n }\n };\n}\nfunction makeParamDecorator(name, props, parentClass) {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n function ParamDecoratorFactory(...args) {\n if (this instanceof ParamDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n const annotationInstance = new ParamDecoratorFactory(...args);\n ParamDecorator.annotation = annotationInstance;\n return ParamDecorator;\n function ParamDecorator(cls, unusedKey, index) {\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n const parameters = cls.hasOwnProperty(PARAMETERS) ?\n cls[PARAMETERS] :\n Object.defineProperty(cls, PARAMETERS, { value: [] })[PARAMETERS];\n // there might be gaps if some in between parameters do not have annotations.\n // we pad with nulls.\n while (parameters.length <= index) {\n parameters.push(null);\n }\n (parameters[index] = parameters[index] || []).push(annotationInstance);\n return cls;\n }\n }\n if (parentClass) {\n ParamDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n ParamDecoratorFactory.prototype.ngMetadataName = name;\n ParamDecoratorFactory.annotationCls = ParamDecoratorFactory;\n return ParamDecoratorFactory;\n });\n}\nfunction makePropDecorator(name, props, parentClass, additionalProcessing) {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n function PropDecoratorFactory(...args) {\n if (this instanceof PropDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n const decoratorInstance = new PropDecoratorFactory(...args);\n function PropDecorator(target, name) {\n // target is undefined with standard decorators. This case is not supported and will throw\n // if this decorator is used in JIT mode with standard decorators.\n if (target === undefined) {\n throw new Error('Standard Angular field decorators are not supported in JIT mode.');\n }\n const constructor = target.constructor;\n // Use of Object.defineProperty is important because it creates a non-enumerable property\n // which prevents the property from being copied during subclassing.\n const meta = constructor.hasOwnProperty(PROP_METADATA) ?\n constructor[PROP_METADATA] :\n Object.defineProperty(constructor, PROP_METADATA, { value: {} })[PROP_METADATA];\n meta[name] = meta.hasOwnProperty(name) && meta[name] || [];\n meta[name].unshift(decoratorInstance);\n if (additionalProcessing)\n additionalProcessing(target, name, ...args);\n }\n return PropDecorator;\n }\n if (parentClass) {\n PropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n PropDecoratorFactory.prototype.ngMetadataName = name;\n PropDecoratorFactory.annotationCls = PropDecoratorFactory;\n return PropDecoratorFactory;\n });\n}\n\n/**\n * Attribute decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Attribute = makeParamDecorator('Attribute', (attributeName) => ({ attributeName, __NG_ELEMENT_ID__: () => ɵɵinjectAttribute(attributeName) }));\n\n// Stores the default value of `emitDistinctChangesOnly` when the `emitDistinctChangesOnly` is not\n// explicitly set.\nconst emitDistinctChangesOnlyDefaultValue = true;\n/**\n * Base class for query metadata.\n *\n * @see {@link ContentChildren}\n * @see {@link ContentChild}\n * @see {@link ViewChildren}\n * @see {@link ViewChild}\n *\n * @publicApi\n */\nclass Query {\n}\n/**\n * ContentChildren decorator and metadata.\n *\n *\n * @Annotation\n * @publicApi\n */\nconst ContentChildren = makePropDecorator('ContentChildren', (selector, data = {}) => ({\n selector,\n first: false,\n isViewQuery: false,\n descendants: false,\n emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue,\n ...data\n}), Query);\n/**\n * ContentChild decorator and metadata.\n *\n *\n * @Annotation\n *\n * @publicApi\n */\nconst ContentChild = makePropDecorator('ContentChild', (selector, data = {}) => ({ selector, first: true, isViewQuery: false, descendants: true, ...data }), Query);\n/**\n * ViewChildren decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst ViewChildren = makePropDecorator('ViewChildren', (selector, data = {}) => ({\n selector,\n first: false,\n isViewQuery: true,\n descendants: true,\n emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue,\n ...data\n}), Query);\n/**\n * ViewChild decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst ViewChild = makePropDecorator('ViewChild', (selector, data) => ({ selector, first: true, isViewQuery: true, descendants: true, ...data }), Query);\n\nvar FactoryTarget;\n(function (FactoryTarget) {\n FactoryTarget[FactoryTarget[\"Directive\"] = 0] = \"Directive\";\n FactoryTarget[FactoryTarget[\"Component\"] = 1] = \"Component\";\n FactoryTarget[FactoryTarget[\"Injectable\"] = 2] = \"Injectable\";\n FactoryTarget[FactoryTarget[\"Pipe\"] = 3] = \"Pipe\";\n FactoryTarget[FactoryTarget[\"NgModule\"] = 4] = \"NgModule\";\n})(FactoryTarget || (FactoryTarget = {}));\nvar R3TemplateDependencyKind;\n(function (R3TemplateDependencyKind) {\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"Directive\"] = 0] = \"Directive\";\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"Pipe\"] = 1] = \"Pipe\";\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"NgModule\"] = 2] = \"NgModule\";\n})(R3TemplateDependencyKind || (R3TemplateDependencyKind = {}));\nvar ViewEncapsulation;\n(function (ViewEncapsulation) {\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\n // Historically the 1 value was for `Native` encapsulation which has been removed as of v11.\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\n ViewEncapsulation[ViewEncapsulation[\"ShadowDom\"] = 3] = \"ShadowDom\";\n})(ViewEncapsulation || (ViewEncapsulation = {}));\n\nfunction getCompilerFacade(request) {\n const globalNg = _global['ng'];\n if (globalNg && globalNg.ɵcompilerFacade) {\n return globalNg.ɵcompilerFacade;\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Log the type as an error so that a developer can easily navigate to the type from the\n // console.\n console.error(`JIT compilation failed for ${request.kind}`, request.type);\n let message = `The ${request.kind} '${request\n .type.name}' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available.\\n\\n`;\n if (request.usage === 1 /* JitCompilerUsage.PartialDeclaration */) {\n message += `The ${request.kind} is part of a library that has been partially compiled.\\n`;\n message +=\n `However, the Angular Linker has not processed the library such that JIT compilation is used as fallback.\\n`;\n message += '\\n';\n message +=\n `Ideally, the library is processed using the Angular Linker to become fully AOT compiled.\\n`;\n }\n else {\n message +=\n `JIT compilation is discouraged for production use-cases! Consider using AOT mode instead.\\n`;\n }\n message +=\n `Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server',\\n`;\n message +=\n `or manually provide the compiler with 'import \"@angular/compiler\";' before bootstrapping.`;\n throw new Error(message);\n }\n else {\n throw new Error('JIT compiler unavailable');\n }\n}\n\n/**\n * @description\n *\n * Represents a type that a Component or other object is instances of.\n *\n * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is represented by\n * the `MyCustomComponent` constructor function.\n *\n * @publicApi\n */\nconst Type = Function;\nfunction isType(v) {\n return typeof v === 'function';\n}\n\n/**\n * Determines if the contents of two arrays is identical\n *\n * @param a first array\n * @param b second array\n * @param identityAccessor Optional function for extracting stable object identity from a value in\n * the array.\n */\nfunction arrayEquals(a, b, identityAccessor) {\n if (a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n let valueA = a[i];\n let valueB = b[i];\n if (identityAccessor) {\n valueA = identityAccessor(valueA);\n valueB = identityAccessor(valueB);\n }\n if (valueB !== valueA) {\n return false;\n }\n }\n return true;\n}\n/**\n * Flattens an array.\n */\nfunction flatten(list) {\n return list.flat(Number.POSITIVE_INFINITY);\n}\nfunction deepForEach(input, fn) {\n input.forEach(value => Array.isArray(value) ? deepForEach(value, fn) : fn(value));\n}\nfunction addToArray(arr, index, value) {\n // perf: array.push is faster than array.splice!\n if (index >= arr.length) {\n arr.push(value);\n }\n else {\n arr.splice(index, 0, value);\n }\n}\nfunction removeFromArray(arr, index) {\n // perf: array.pop is faster than array.splice!\n if (index >= arr.length - 1) {\n return arr.pop();\n }\n else {\n return arr.splice(index, 1)[0];\n }\n}\nfunction newArray(size, value) {\n const list = [];\n for (let i = 0; i < size; i++) {\n list.push(value);\n }\n return list;\n}\n/**\n * Remove item from array (Same as `Array.splice()` but faster.)\n *\n * `Array.splice()` is not as fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * https://jsperf.com/fast-array-splice (About 20x faster)\n *\n * @param array Array to splice\n * @param index Index of element in array to remove.\n * @param count Number of items to remove.\n */\nfunction arraySplice(array, index, count) {\n const length = array.length - count;\n while (index < length) {\n array[index] = array[index + count];\n index++;\n }\n while (count--) {\n array.pop(); // shrink the array\n }\n}\n/**\n * Same as `Array.splice(index, 0, value)` but faster.\n *\n * `Array.splice()` is not fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * @param array Array to splice.\n * @param index Index in array where the `value` should be added.\n * @param value Value to add to array.\n */\nfunction arrayInsert(array, index, value) {\n ngDevMode && assertLessThanOrEqual(index, array.length, 'Can\\'t insert past array end.');\n let end = array.length;\n while (end > index) {\n const previousEnd = end - 1;\n array[end] = array[previousEnd];\n end = previousEnd;\n }\n array[index] = value;\n}\n/**\n * Same as `Array.splice2(index, 0, value1, value2)` but faster.\n *\n * `Array.splice()` is not fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * @param array Array to splice.\n * @param index Index in array where the `value` should be added.\n * @param value1 Value to add to array.\n * @param value2 Value to add to array.\n */\nfunction arrayInsert2(array, index, value1, value2) {\n ngDevMode && assertLessThanOrEqual(index, array.length, 'Can\\'t insert past array end.');\n let end = array.length;\n if (end == index) {\n // inserting at the end.\n array.push(value1, value2);\n }\n else if (end === 1) {\n // corner case when we have less items in array than we have items to insert.\n array.push(value2, array[0]);\n array[0] = value1;\n }\n else {\n end--;\n array.push(array[end - 1], array[end]);\n while (end > index) {\n const previousEnd = end - 2;\n array[end] = array[previousEnd];\n end--;\n }\n array[index] = value1;\n array[index + 1] = value2;\n }\n}\n/**\n * Get an index of an `value` in a sorted `array`.\n *\n * NOTE:\n * - This uses binary search algorithm for fast removals.\n *\n * @param array A sorted array to binary search.\n * @param value The value to look for.\n * @returns index of the value.\n * - positive index if value found.\n * - negative index if value not found. (`~index` to get the value where it should have been\n * located)\n */\nfunction arrayIndexOfSorted(array, value) {\n return _arrayIndexOfSorted(array, value, 0);\n}\n/**\n * Set a `value` for a `key`.\n *\n * @param keyValueArray to modify.\n * @param key The key to locate or create.\n * @param value The value to set for a `key`.\n * @returns index (always even) of where the value vas set.\n */\nfunction keyValueArraySet(keyValueArray, key, value) {\n let index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it set it.\n keyValueArray[index | 1] = value;\n }\n else {\n index = ~index;\n arrayInsert2(keyValueArray, index, key, value);\n }\n return index;\n}\n/**\n * Retrieve a `value` for a `key` (on `undefined` if not found.)\n *\n * @param keyValueArray to search.\n * @param key The key to locate.\n * @return The `value` stored at the `key` location or `undefined if not found.\n */\nfunction keyValueArrayGet(keyValueArray, key) {\n const index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it retrieve it.\n return keyValueArray[index | 1];\n }\n return undefined;\n}\n/**\n * Retrieve a `key` index value in the array or `-1` if not found.\n *\n * @param keyValueArray to search.\n * @param key The key to locate.\n * @returns index of where the key is (or should have been.)\n * - positive (even) index if key found.\n * - negative index if key not found. (`~index` (even) to get the index where it should have\n * been inserted.)\n */\nfunction keyValueArrayIndexOf(keyValueArray, key) {\n return _arrayIndexOfSorted(keyValueArray, key, 1);\n}\n/**\n * Delete a `key` (and `value`) from the `KeyValueArray`.\n *\n * @param keyValueArray to modify.\n * @param key The key to locate or delete (if exist).\n * @returns index of where the key was (or should have been.)\n * - positive (even) index if key found and deleted.\n * - negative index if key not found. (`~index` (even) to get the index where it should have\n * been.)\n */\nfunction keyValueArrayDelete(keyValueArray, key) {\n const index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it remove it.\n arraySplice(keyValueArray, index, 2);\n }\n return index;\n}\n/**\n * INTERNAL: Get an index of an `value` in a sorted `array` by grouping search by `shift`.\n *\n * NOTE:\n * - This uses binary search algorithm for fast removals.\n *\n * @param array A sorted array to binary search.\n * @param value The value to look for.\n * @param shift grouping shift.\n * - `0` means look at every location\n * - `1` means only look at every other (even) location (the odd locations are to be ignored as\n * they are values.)\n * @returns index of the value.\n * - positive index if value found.\n * - negative index if value not found. (`~index` to get the value where it should have been\n * inserted)\n */\nfunction _arrayIndexOfSorted(array, value, shift) {\n ngDevMode && assertEqual(Array.isArray(array), true, 'Expecting an array');\n let start = 0;\n let end = array.length >> shift;\n while (end !== start) {\n const middle = start + ((end - start) >> 1); // find the middle.\n const current = array[middle << shift];\n if (value === current) {\n return (middle << shift);\n }\n else if (current > value) {\n end = middle;\n }\n else {\n start = middle + 1; // We already searched middle so make it non-inclusive by adding 1\n }\n }\n return ~(end << shift);\n}\n\n/*\n * #########################\n * Attention: These Regular expressions have to hold even if the code is minified!\n * ##########################\n */\n/**\n * Regular expression that detects pass-through constructors for ES5 output. This Regex\n * intends to capture the common delegation pattern emitted by TypeScript and Babel. Also\n * it intends to capture the pattern where existing constructors have been downleveled from\n * ES2015 to ES5 using TypeScript w/ downlevel iteration. e.g.\n *\n * ```\n * function MyClass() {\n * var _this = _super.apply(this, arguments) || this;\n * ```\n *\n * downleveled to ES5 with `downlevelIteration` for TypeScript < 4.2:\n * ```\n * function MyClass() {\n * var _this = _super.apply(this, __spread(arguments)) || this;\n * ```\n *\n * or downleveled to ES5 with `downlevelIteration` for TypeScript >= 4.2:\n * ```\n * function MyClass() {\n * var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n * ```\n *\n * More details can be found in: https://github.com/angular/angular/issues/38453.\n */\nconst ES5_DELEGATE_CTOR = /^function\\s+\\S+\\(\\)\\s*{[\\s\\S]+\\.apply\\(this,\\s*(arguments|(?:[^()]+\\(\\[\\],)?[^()]+\\(arguments\\).*)\\)/;\n/** Regular expression that detects ES2015 classes which extend from other classes. */\nconst ES2015_INHERITED_CLASS = /^class\\s+[A-Za-z\\d$_]*\\s*extends\\s+[^{]+{/;\n/**\n * Regular expression that detects ES2015 classes which extend from other classes and\n * have an explicit constructor defined.\n */\nconst ES2015_INHERITED_CLASS_WITH_CTOR = /^class\\s+[A-Za-z\\d$_]*\\s*extends\\s+[^{]+{[\\s\\S]*constructor\\s*\\(/;\n/**\n * Regular expression that detects ES2015 classes which extend from other classes\n * and inherit a constructor.\n */\nconst ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\\s+[A-Za-z\\d$_]*\\s*extends\\s+[^{]+{[\\s\\S]*constructor\\s*\\(\\)\\s*{[^}]*super\\(\\.\\.\\.arguments\\)/;\n/**\n * Determine whether a stringified type is a class which delegates its constructor\n * to its parent.\n *\n * This is not trivial since compiled code can actually contain a constructor function\n * even if the original source code did not. For instance, when the child class contains\n * an initialized instance property.\n */\nfunction isDelegateCtor(typeStr) {\n return ES5_DELEGATE_CTOR.test(typeStr) ||\n ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR.test(typeStr) ||\n (ES2015_INHERITED_CLASS.test(typeStr) && !ES2015_INHERITED_CLASS_WITH_CTOR.test(typeStr));\n}\nclass ReflectionCapabilities {\n constructor(reflect) {\n this._reflect = reflect || _global['Reflect'];\n }\n factory(t) {\n return (...args) => new t(...args);\n }\n /** @internal */\n _zipTypesAndAnnotations(paramTypes, paramAnnotations) {\n let result;\n if (typeof paramTypes === 'undefined') {\n result = newArray(paramAnnotations.length);\n }\n else {\n result = newArray(paramTypes.length);\n }\n for (let i = 0; i < result.length; i++) {\n // TS outputs Object for parameters without types, while Traceur omits\n // the annotations. For now we preserve the Traceur behavior to aid\n // migration, but this can be revisited.\n if (typeof paramTypes === 'undefined') {\n result[i] = [];\n }\n else if (paramTypes[i] && paramTypes[i] != Object) {\n result[i] = [paramTypes[i]];\n }\n else {\n result[i] = [];\n }\n if (paramAnnotations && paramAnnotations[i] != null) {\n result[i] = result[i].concat(paramAnnotations[i]);\n }\n }\n return result;\n }\n _ownParameters(type, parentCtor) {\n const typeStr = type.toString();\n // If we have no decorators, we only have function.length as metadata.\n // In that case, to detect whether a child class declared an own constructor or not,\n // we need to look inside of that constructor to check whether it is\n // just calling the parent.\n // This also helps to work around for https://github.com/Microsoft/TypeScript/issues/12439\n // that sets 'design:paramtypes' to []\n // if a class inherits from another class but has no ctor declared itself.\n if (isDelegateCtor(typeStr)) {\n return null;\n }\n // Prefer the direct API.\n if (type.parameters && type.parameters !== parentCtor.parameters) {\n return type.parameters;\n }\n // API of tsickle for lowering decorators to properties on the class.\n const tsickleCtorParams = type.ctorParameters;\n if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) {\n // Newer tsickle uses a function closure\n // Retain the non-function case for compatibility with older tsickle\n const ctorParameters = typeof tsickleCtorParams === 'function' ? tsickleCtorParams() : tsickleCtorParams;\n const paramTypes = ctorParameters.map((ctorParam) => ctorParam && ctorParam.type);\n const paramAnnotations = ctorParameters.map((ctorParam) => ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators));\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n // API for metadata created by invoking the decorators.\n const paramAnnotations = type.hasOwnProperty(PARAMETERS) && type[PARAMETERS];\n const paramTypes = this._reflect && this._reflect.getOwnMetadata &&\n this._reflect.getOwnMetadata('design:paramtypes', type);\n if (paramTypes || paramAnnotations) {\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n // If a class has no decorators, at least create metadata\n // based on function.length.\n // Note: We know that this is a real constructor as we checked\n // the content of the constructor above.\n return newArray(type.length);\n }\n parameters(type) {\n // Note: only report metadata if we have at least one class decorator\n // to stay in sync with the static reflector.\n if (!isType(type)) {\n return [];\n }\n const parentCtor = getParentCtor(type);\n let parameters = this._ownParameters(type, parentCtor);\n if (!parameters && parentCtor !== Object) {\n parameters = this.parameters(parentCtor);\n }\n return parameters || [];\n }\n _ownAnnotations(typeOrFunc, parentCtor) {\n // Prefer the direct API.\n if (typeOrFunc.annotations && typeOrFunc.annotations !== parentCtor.annotations) {\n let annotations = typeOrFunc.annotations;\n if (typeof annotations === 'function' && annotations.annotations) {\n annotations = annotations.annotations;\n }\n return annotations;\n }\n // API of tsickle for lowering decorators to properties on the class.\n if (typeOrFunc.decorators && typeOrFunc.decorators !== parentCtor.decorators) {\n return convertTsickleDecoratorIntoMetadata(typeOrFunc.decorators);\n }\n // API for metadata created by invoking the decorators.\n if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {\n return typeOrFunc[ANNOTATIONS];\n }\n return null;\n }\n annotations(typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return [];\n }\n const parentCtor = getParentCtor(typeOrFunc);\n const ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];\n const parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];\n return parentAnnotations.concat(ownAnnotations);\n }\n _ownPropMetadata(typeOrFunc, parentCtor) {\n // Prefer the direct API.\n if (typeOrFunc.propMetadata &&\n typeOrFunc.propMetadata !== parentCtor.propMetadata) {\n let propMetadata = typeOrFunc.propMetadata;\n if (typeof propMetadata === 'function' && propMetadata.propMetadata) {\n propMetadata = propMetadata.propMetadata;\n }\n return propMetadata;\n }\n // API of tsickle for lowering decorators to properties on the class.\n if (typeOrFunc.propDecorators &&\n typeOrFunc.propDecorators !== parentCtor.propDecorators) {\n const propDecorators = typeOrFunc.propDecorators;\n const propMetadata = {};\n Object.keys(propDecorators).forEach(prop => {\n propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]);\n });\n return propMetadata;\n }\n // API for metadata created by invoking the decorators.\n if (typeOrFunc.hasOwnProperty(PROP_METADATA)) {\n return typeOrFunc[PROP_METADATA];\n }\n return null;\n }\n propMetadata(typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return {};\n }\n const parentCtor = getParentCtor(typeOrFunc);\n const propMetadata = {};\n if (parentCtor !== Object) {\n const parentPropMetadata = this.propMetadata(parentCtor);\n Object.keys(parentPropMetadata).forEach((propName) => {\n propMetadata[propName] = parentPropMetadata[propName];\n });\n }\n const ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\n if (ownPropMetadata) {\n Object.keys(ownPropMetadata).forEach((propName) => {\n const decorators = [];\n if (propMetadata.hasOwnProperty(propName)) {\n decorators.push(...propMetadata[propName]);\n }\n decorators.push(...ownPropMetadata[propName]);\n propMetadata[propName] = decorators;\n });\n }\n return propMetadata;\n }\n ownPropMetadata(typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return {};\n }\n return this._ownPropMetadata(typeOrFunc, getParentCtor(typeOrFunc)) || {};\n }\n hasLifecycleHook(type, lcProperty) {\n return type instanceof Type && lcProperty in type.prototype;\n }\n}\nfunction convertTsickleDecoratorIntoMetadata(decoratorInvocations) {\n if (!decoratorInvocations) {\n return [];\n }\n return decoratorInvocations.map(decoratorInvocation => {\n const decoratorType = decoratorInvocation.type;\n const annotationCls = decoratorType.annotationCls;\n const annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : [];\n return new annotationCls(...annotationArgs);\n });\n}\nfunction getParentCtor(ctor) {\n const parentProto = ctor.prototype ? Object.getPrototypeOf(ctor.prototype) : null;\n const parentCtor = parentProto ? parentProto.constructor : null;\n // Note: We always use `Object` as the null value\n // to simplify checking later on.\n return parentCtor || Object;\n}\n\n/**\n * Inject decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Inject = attachInjectFlag(\n// Disable tslint because `DecoratorFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nmakeParamDecorator('Inject', (token) => ({ token })), -1 /* DecoratorFlags.Inject */);\n/**\n * Optional decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Optional = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('Optional'), 8 /* InternalInjectFlags.Optional */);\n/**\n * Self decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Self = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('Self'), 2 /* InternalInjectFlags.Self */);\n/**\n * `SkipSelf` decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst SkipSelf = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* InternalInjectFlags.SkipSelf */);\n/**\n * Host decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Host = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('Host'), 1 /* InternalInjectFlags.Host */);\n\nlet _reflect = null;\nfunction getReflect() {\n return (_reflect = _reflect || new ReflectionCapabilities());\n}\nfunction reflectDependencies(type) {\n return convertDependencies(getReflect().parameters(type));\n}\nfunction convertDependencies(deps) {\n return deps.map(dep => reflectDependency(dep));\n}\nfunction reflectDependency(dep) {\n const meta = {\n token: null,\n attribute: null,\n host: false,\n optional: false,\n self: false,\n skipSelf: false,\n };\n if (Array.isArray(dep) && dep.length > 0) {\n for (let j = 0; j < dep.length; j++) {\n const param = dep[j];\n if (param === undefined) {\n // param may be undefined if type of dep is not set by ngtsc\n continue;\n }\n const proto = Object.getPrototypeOf(param);\n if (param instanceof Optional || proto.ngMetadataName === 'Optional') {\n meta.optional = true;\n }\n else if (param instanceof SkipSelf || proto.ngMetadataName === 'SkipSelf') {\n meta.skipSelf = true;\n }\n else if (param instanceof Self || proto.ngMetadataName === 'Self') {\n meta.self = true;\n }\n else if (param instanceof Host || proto.ngMetadataName === 'Host') {\n meta.host = true;\n }\n else if (param instanceof Inject) {\n meta.token = param.token;\n }\n else if (param instanceof Attribute) {\n if (param.attributeName === undefined) {\n throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && `Attribute name must be defined.`);\n }\n meta.attribute = param.attributeName;\n }\n else {\n meta.token = param;\n }\n }\n }\n else if (dep === undefined || (Array.isArray(dep) && dep.length === 0)) {\n meta.token = null;\n }\n else {\n meta.token = dep;\n }\n return meta;\n}\n\n/**\n * Used to resolve resource URLs on `@Component` when used with JIT compilation.\n *\n * Example:\n * ```\n * @Component({\n * selector: 'my-comp',\n * templateUrl: 'my-comp.html', // This requires asynchronous resolution\n * })\n * class MyComponent{\n * }\n *\n * // Calling `renderComponent` will fail because `renderComponent` is a synchronous process\n * // and `MyComponent`'s `@Component.templateUrl` needs to be resolved asynchronously.\n *\n * // Calling `resolveComponentResources()` will resolve `@Component.templateUrl` into\n * // `@Component.template`, which allows `renderComponent` to proceed in a synchronous manner.\n *\n * // Use browser's `fetch()` function as the default resource resolution strategy.\n * resolveComponentResources(fetch).then(() => {\n * // After resolution all URLs have been converted into `template` strings.\n * renderComponent(MyComponent);\n * });\n *\n * ```\n *\n * NOTE: In AOT the resolution happens during compilation, and so there should be no need\n * to call this method outside JIT mode.\n *\n * @param resourceResolver a function which is responsible for returning a `Promise` to the\n * contents of the resolved URL. Browser's `fetch()` method is a good default implementation.\n */\nfunction resolveComponentResources(resourceResolver) {\n // Store all promises which are fetching the resources.\n const componentResolved = [];\n // Cache so that we don't fetch the same resource more than once.\n const urlMap = new Map();\n function cachedResourceResolve(url) {\n let promise = urlMap.get(url);\n if (!promise) {\n const resp = resourceResolver(url);\n urlMap.set(url, promise = resp.then(unwrapResponse));\n }\n return promise;\n }\n componentResourceResolutionQueue.forEach((component, type) => {\n const promises = [];\n if (component.templateUrl) {\n promises.push(cachedResourceResolve(component.templateUrl).then((template) => {\n component.template = template;\n }));\n }\n const styleUrls = component.styleUrls;\n const styles = component.styles || (component.styles = []);\n const styleOffset = component.styles.length;\n styleUrls && styleUrls.forEach((styleUrl, index) => {\n styles.push(''); // pre-allocate array.\n promises.push(cachedResourceResolve(styleUrl).then((style) => {\n styles[styleOffset + index] = style;\n styleUrls.splice(styleUrls.indexOf(styleUrl), 1);\n if (styleUrls.length == 0) {\n component.styleUrls = undefined;\n }\n }));\n });\n const fullyResolved = Promise.all(promises).then(() => componentDefResolved(type));\n componentResolved.push(fullyResolved);\n });\n clearResolutionOfComponentResourcesQueue();\n return Promise.all(componentResolved).then(() => undefined);\n}\nlet componentResourceResolutionQueue = new Map();\n// Track when existing ɵcmp for a Type is waiting on resources.\nconst componentDefPendingResolution = new Set();\nfunction maybeQueueResolutionOfComponentResources(type, metadata) {\n if (componentNeedsResolution(metadata)) {\n componentResourceResolutionQueue.set(type, metadata);\n componentDefPendingResolution.add(type);\n }\n}\nfunction isComponentDefPendingResolution(type) {\n return componentDefPendingResolution.has(type);\n}\nfunction componentNeedsResolution(component) {\n return !!((component.templateUrl && !component.hasOwnProperty('template')) ||\n component.styleUrls && component.styleUrls.length);\n}\nfunction clearResolutionOfComponentResourcesQueue() {\n const old = componentResourceResolutionQueue;\n componentResourceResolutionQueue = new Map();\n return old;\n}\nfunction restoreComponentResolutionQueue(queue) {\n componentDefPendingResolution.clear();\n queue.forEach((_, type) => componentDefPendingResolution.add(type));\n componentResourceResolutionQueue = queue;\n}\nfunction isComponentResourceResolutionQueueEmpty() {\n return componentResourceResolutionQueue.size === 0;\n}\nfunction unwrapResponse(response) {\n return typeof response == 'string' ? response : response.text();\n}\nfunction componentDefResolved(type) {\n componentDefPendingResolution.delete(type);\n}\n\n/**\n * Map of module-id to the corresponding NgModule.\n */\nconst modules = new Map();\n/**\n * Whether to check for duplicate NgModule registrations.\n *\n * This can be disabled for testing.\n */\nlet checkForDuplicateNgModules = true;\nfunction assertSameOrNotExisting(id, type, incoming) {\n if (type && type !== incoming && checkForDuplicateNgModules) {\n throw new Error(`Duplicate module registered for ${id} - ${stringify(type)} vs ${stringify(type.name)}`);\n }\n}\n/**\n * Adds the given NgModule type to Angular's NgModule registry.\n *\n * This is generated as a side-effect of NgModule compilation. Note that the `id` is passed in\n * explicitly and not read from the NgModule definition. This is for two reasons: it avoids a\n * megamorphic read, and in JIT there's a chicken-and-egg problem where the NgModule may not be\n * fully resolved when it's registered.\n *\n * @codeGenApi\n */\nfunction registerNgModuleType(ngModuleType, id) {\n const existing = modules.get(id) || null;\n assertSameOrNotExisting(id, existing, ngModuleType);\n modules.set(id, ngModuleType);\n}\nfunction clearModulesForTest() {\n modules.clear();\n}\nfunction getRegisteredNgModuleType(id) {\n return modules.get(id);\n}\n/**\n * Control whether the NgModule registration system enforces that each NgModule type registered has\n * a unique id.\n *\n * This is useful for testing as the NgModule registry cannot be properly reset between tests with\n * Angular's current API.\n */\nfunction setAllowDuplicateNgModuleIdsForTest(allowDuplicates) {\n checkForDuplicateNgModules = !allowDuplicates;\n}\n\n/**\n * Defines a schema that allows an NgModule to contain the following:\n * - Non-Angular elements named with dash case (`-`).\n * - Element properties named with dash case (`-`).\n * Dash case is the naming convention for custom elements.\n *\n * @publicApi\n */\nconst CUSTOM_ELEMENTS_SCHEMA = {\n name: 'custom-elements'\n};\n/**\n * Defines a schema that allows any property on any element.\n *\n * This schema allows you to ignore the errors related to any unknown elements or properties in a\n * template. The usage of this schema is generally discouraged because it prevents useful validation\n * and may hide real errors in your template. Consider using the `CUSTOM_ELEMENTS_SCHEMA` instead.\n *\n * @publicApi\n */\nconst NO_ERRORS_SCHEMA = {\n name: 'no-errors-schema'\n};\n\nlet shouldThrowErrorOnUnknownElement = false;\n/**\n * Sets a strict mode for JIT-compiled components to throw an error on unknown elements,\n * instead of just logging the error.\n * (for AOT-compiled ones this check happens at build time).\n */\nfunction ɵsetUnknownElementStrictMode(shouldThrow) {\n shouldThrowErrorOnUnknownElement = shouldThrow;\n}\n/**\n * Gets the current value of the strict mode.\n */\nfunction ɵgetUnknownElementStrictMode() {\n return shouldThrowErrorOnUnknownElement;\n}\nlet shouldThrowErrorOnUnknownProperty = false;\n/**\n * Sets a strict mode for JIT-compiled components to throw an error on unknown properties,\n * instead of just logging the error.\n * (for AOT-compiled ones this check happens at build time).\n */\nfunction ɵsetUnknownPropertyStrictMode(shouldThrow) {\n shouldThrowErrorOnUnknownProperty = shouldThrow;\n}\n/**\n * Gets the current value of the strict mode.\n */\nfunction ɵgetUnknownPropertyStrictMode() {\n return shouldThrowErrorOnUnknownProperty;\n}\n/**\n * Validates that the element is known at runtime and produces\n * an error if it's not the case.\n * This check is relevant for JIT-compiled components (for AOT-compiled\n * ones this check happens at build time).\n *\n * The element is considered known if either:\n * - it's a known HTML element\n * - it's a known custom element\n * - the element matches any directive\n * - the element is allowed by one of the schemas\n *\n * @param element Element to validate\n * @param lView An `LView` that represents a current component that is being rendered\n * @param tagName Name of the tag to check\n * @param schemas Array of schemas\n * @param hasDirectives Boolean indicating that the element matches any directive\n */\nfunction validateElementIsKnown(element, lView, tagName, schemas, hasDirectives) {\n // If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT\n // mode where this check happens at compile time. In JIT mode, `schemas` is always present and\n // defined as an array (as an empty array in case `schemas` field is not defined) and we should\n // execute the check below.\n if (schemas === null)\n return;\n // If the element matches any directive, it's considered as valid.\n if (!hasDirectives && tagName !== null) {\n // The element is unknown if it's an instance of HTMLUnknownElement, or it isn't registered\n // as a custom element. Note that unknown elements with a dash in their name won't be instances\n // of HTMLUnknownElement in browsers that support web components.\n const isUnknown = \n // Note that we can't check for `typeof HTMLUnknownElement === 'function'` because\n // Domino doesn't expose HTMLUnknownElement globally.\n (typeof HTMLUnknownElement !== 'undefined' && HTMLUnknownElement &&\n element instanceof HTMLUnknownElement) ||\n (typeof customElements !== 'undefined' && tagName.indexOf('-') > -1 &&\n !customElements.get(tagName));\n if (isUnknown && !matchingSchemas(schemas, tagName)) {\n const isHostStandalone = isHostComponentStandalone(lView);\n const templateLocation = getTemplateLocationDetails(lView);\n const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;\n let message = `'${tagName}' is not a known element${templateLocation}:\\n`;\n message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone ? 'included in the \\'@Component.imports\\' of this component' :\n 'a part of an @NgModule where this component is declared'}.\\n`;\n if (tagName && tagName.indexOf('-') > -1) {\n message +=\n `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`;\n }\n else {\n message +=\n `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`;\n }\n if (shouldThrowErrorOnUnknownElement) {\n throw new RuntimeError(304 /* RuntimeErrorCode.UNKNOWN_ELEMENT */, message);\n }\n else {\n console.error(formatRuntimeError(304 /* RuntimeErrorCode.UNKNOWN_ELEMENT */, message));\n }\n }\n }\n}\n/**\n * Validates that the property of the element is known at runtime and returns\n * false if it's not the case.\n * This check is relevant for JIT-compiled components (for AOT-compiled\n * ones this check happens at build time).\n *\n * The property is considered known if either:\n * - it's a known property of the element\n * - the element is allowed by one of the schemas\n * - the property is used for animations\n *\n * @param element Element to validate\n * @param propName Name of the property to check\n * @param tagName Name of the tag hosting the property\n * @param schemas Array of schemas\n */\nfunction isPropertyValid(element, propName, tagName, schemas) {\n // If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT\n // mode where this check happens at compile time. In JIT mode, `schemas` is always present and\n // defined as an array (as an empty array in case `schemas` field is not defined) and we should\n // execute the check below.\n if (schemas === null)\n return true;\n // The property is considered valid if the element matches the schema, it exists on the element,\n // or it is synthetic.\n if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {\n return true;\n }\n // Note: `typeof Node` returns 'function' in most browsers, but is undefined with domino.\n return typeof Node === 'undefined' || Node === null || !(element instanceof Node);\n}\n/**\n * Logs or throws an error that a property is not supported on an element.\n *\n * @param propName Name of the invalid property\n * @param tagName Name of the tag hosting the property\n * @param nodeType Type of the node hosting the property\n * @param lView An `LView` that represents a current component\n */\nfunction handleUnknownPropertyError(propName, tagName, nodeType, lView) {\n // Special-case a situation when a structural directive is applied to\n // an `<ng-template>` element, for example: `<ng-template *ngIf=\"true\">`.\n // In this case the compiler generates the `ɵɵtemplate` instruction with\n // the `null` as the tagName. The directive matching logic at runtime relies\n // on this effect (see `isInlineTemplate`), thus using the 'ng-template' as\n // a default value of the `tNode.value` is not feasible at this moment.\n if (!tagName && nodeType === 4 /* TNodeType.Container */) {\n tagName = 'ng-template';\n }\n const isHostStandalone = isHostComponentStandalone(lView);\n const templateLocation = getTemplateLocationDetails(lView);\n let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`;\n const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;\n const importLocation = isHostStandalone ?\n 'included in the \\'@Component.imports\\' of this component' :\n 'a part of an @NgModule where this component is declared';\n if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) {\n // Most likely this is a control flow directive (such as `*ngIf`) used in\n // a template, but the directive or the `CommonModule` is not imported.\n const correspondingImport = KNOWN_CONTROL_FLOW_DIRECTIVES.get(propName);\n message += `\\nIf the '${propName}' is an Angular control flow directive, ` +\n `please make sure that either the '${correspondingImport}' directive or the 'CommonModule' is ${importLocation}.`;\n }\n else {\n // May be an Angular component, which is not imported/declared?\n message += `\\n1. If '${tagName}' is an Angular component and it has the ` +\n `'${propName}' input, then verify that it is ${importLocation}.`;\n // May be a Web Component?\n if (tagName && tagName.indexOf('-') > -1) {\n message += `\\n2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' ` +\n `to the ${schemas} of this component to suppress this message.`;\n message += `\\n3. To allow any property add 'NO_ERRORS_SCHEMA' to ` +\n `the ${schemas} of this component.`;\n }\n else {\n // If it's expected, the error can be suppressed by the `NO_ERRORS_SCHEMA` schema.\n message += `\\n2. To allow any property add 'NO_ERRORS_SCHEMA' to ` +\n `the ${schemas} of this component.`;\n }\n }\n reportUnknownPropertyError(message);\n}\nfunction reportUnknownPropertyError(message) {\n if (shouldThrowErrorOnUnknownProperty) {\n throw new RuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message);\n }\n else {\n console.error(formatRuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message));\n }\n}\n/**\n * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)\n * and must **not** be used in production bundles. The function makes megamorphic reads, which might\n * be too slow for production mode and also it relies on the constructor function being available.\n *\n * Gets a reference to the host component def (where a current component is declared).\n *\n * @param lView An `LView` that represents a current component that is being rendered.\n */\nfunction getDeclarationComponentDef(lView) {\n !ngDevMode && throwError('Must never be called in production mode');\n const declarationLView = lView[DECLARATION_COMPONENT_VIEW];\n const context = declarationLView[CONTEXT];\n // Unable to obtain a context.\n if (!context)\n return null;\n return context.constructor ? getComponentDef(context.constructor) : null;\n}\n/**\n * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)\n * and must **not** be used in production bundles. The function makes megamorphic reads, which might\n * be too slow for production mode.\n *\n * Checks if the current component is declared inside of a standalone component template.\n *\n * @param lView An `LView` that represents a current component that is being rendered.\n */\nfunction isHostComponentStandalone(lView) {\n !ngDevMode && throwError('Must never be called in production mode');\n const componentDef = getDeclarationComponentDef(lView);\n // Treat host component as non-standalone if we can't obtain the def.\n return !!componentDef?.standalone;\n}\n/**\n * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)\n * and must **not** be used in production bundles. The function makes megamorphic reads, which might\n * be too slow for production mode.\n *\n * Constructs a string describing the location of the host component template. The function is used\n * in dev mode to produce error messages.\n *\n * @param lView An `LView` that represents a current component that is being rendered.\n */\nfunction getTemplateLocationDetails(lView) {\n !ngDevMode && throwError('Must never be called in production mode');\n const hostComponentDef = getDeclarationComponentDef(lView);\n const componentClassName = hostComponentDef?.type?.name;\n return componentClassName ? ` (used in the '${componentClassName}' component template)` : '';\n}\n/**\n * The set of known control flow directives and their corresponding imports.\n * We use this set to produce a more precises error message with a note\n * that the `CommonModule` should also be included.\n */\nconst KNOWN_CONTROL_FLOW_DIRECTIVES = new Map([\n ['ngIf', 'NgIf'], ['ngFor', 'NgFor'], ['ngSwitchCase', 'NgSwitchCase'],\n ['ngSwitchDefault', 'NgSwitchDefault']\n]);\n/**\n * Returns true if the tag name is allowed by specified schemas.\n * @param schemas Array of schemas\n * @param tagName Name of the tag\n */\nfunction matchingSchemas(schemas, tagName) {\n if (schemas !== null) {\n for (let i = 0; i < schemas.length; i++) {\n const schema = schemas[i];\n if (schema === NO_ERRORS_SCHEMA ||\n schema === CUSTOM_ELEMENTS_SCHEMA && tagName && tagName.indexOf('-') > -1) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * The name of an attribute that can be added to the hydration boundary node\n * (component host node) to disable hydration for the content within that boundary.\n */\nconst SKIP_HYDRATION_ATTR_NAME = 'ngSkipHydration';\n/**\n * Helper function to check if a given TNode has the 'ngSkipHydration' attribute.\n */\nfunction hasSkipHydrationAttrOnTNode(tNode) {\n const SKIP_HYDRATION_ATTR_NAME_LOWER_CASE = SKIP_HYDRATION_ATTR_NAME.toLowerCase();\n const attrs = tNode.mergedAttrs;\n if (attrs === null)\n return false;\n // only ever look at the attribute name and skip the values\n for (let i = 0; i < attrs.length; i += 2) {\n const value = attrs[i];\n // This is a marker, which means that the static attributes section is over,\n // so we can exit early.\n if (typeof value === 'number')\n return false;\n if (typeof value === 'string' && value.toLowerCase() === SKIP_HYDRATION_ATTR_NAME_LOWER_CASE) {\n return true;\n }\n }\n return false;\n}\n/**\n * Helper function to check if a given RElement has the 'ngSkipHydration' attribute.\n */\nfunction hasSkipHydrationAttrOnRElement(rNode) {\n return rNode.hasAttribute(SKIP_HYDRATION_ATTR_NAME);\n}\n/**\n * Checks whether a TNode has a flag to indicate that it's a part of\n * a skip hydration block.\n */\nfunction hasInSkipHydrationBlockFlag(tNode) {\n return (tNode.flags & 128 /* TNodeFlags.inSkipHydrationBlock */) === 128 /* TNodeFlags.inSkipHydrationBlock */;\n}\n/**\n * Helper function that determines if a given node is within a skip hydration block\n * by navigating up the TNode tree to see if any parent nodes have skip hydration\n * attribute.\n *\n * TODO(akushnir): this function should contain the logic of `hasInSkipHydrationBlockFlag`,\n * there is no need to traverse parent nodes when we have a TNode flag (which would also\n * make this lookup O(1)).\n */\nfunction isInSkipHydrationBlock(tNode) {\n let currentTNode = tNode.parent;\n while (currentTNode) {\n if (hasSkipHydrationAttrOnTNode(currentTNode)) {\n return true;\n }\n currentTNode = currentTNode.parent;\n }\n return false;\n}\n\n/**\n * Flags for renderer-specific style modifiers.\n * @publicApi\n */\nvar RendererStyleFlags2;\n(function (RendererStyleFlags2) {\n // TODO(misko): This needs to be refactored into a separate file so that it can be imported from\n // `node_manipulation.ts` Currently doing the import cause resolution order to change and fails\n // the tests. The work around is to have hard coded value in `node_manipulation.ts` for now.\n /**\n * Marks a style as important.\n */\n RendererStyleFlags2[RendererStyleFlags2[\"Important\"] = 1] = \"Important\";\n /**\n * Marks a style as using dash case naming (this-is-dash-case).\n */\n RendererStyleFlags2[RendererStyleFlags2[\"DashCase\"] = 2] = \"DashCase\";\n})(RendererStyleFlags2 || (RendererStyleFlags2 = {}));\n\n/**\n * Disallowed strings in the comment.\n *\n * see: https://html.spec.whatwg.org/multipage/syntax.html#comments\n */\nconst COMMENT_DISALLOWED = /^>|^->|<!--|-->|--!>|<!-$/g;\n/**\n * Delimiter in the disallowed strings which needs to be wrapped with zero with character.\n */\nconst COMMENT_DELIMITER = /(<|>)/g;\nconst COMMENT_DELIMITER_ESCAPED = '\\u200B$1\\u200B';\n/**\n * Escape the content of comment strings so that it can be safely inserted into a comment node.\n *\n * The issue is that HTML does not specify any way to escape comment end text inside the comment.\n * Consider: `<!-- The way you close a comment is with \">\", and \"->\" at the beginning or by \"-->\" or\n * \"--!>\" at the end. -->`. Above the `\"-->\"` is meant to be text not an end to the comment. This\n * can be created programmatically through DOM APIs. (`<!--` are also disallowed.)\n *\n * see: https://html.spec.whatwg.org/multipage/syntax.html#comments\n *\n * ```\n * div.innerHTML = div.innerHTML\n * ```\n *\n * One would expect that the above code would be safe to do, but it turns out that because comment\n * text is not escaped, the comment may contain text which will prematurely close the comment\n * opening up the application for XSS attack. (In SSR we programmatically create comment nodes which\n * may contain such text and expect them to be safe.)\n *\n * This function escapes the comment text by looking for comment delimiters (`<` and `>`) and\n * surrounding them with `_>_` where the `_` is a zero width space `\\u200B`. The result is that if a\n * comment contains any of the comment start/end delimiters (such as `<!--`, `-->` or `--!>`) the\n * text it will render normally but it will not cause the HTML parser to close/open the comment.\n *\n * @param value text to make safe for comment node by escaping the comment open/close character\n * sequence.\n */\nfunction escapeCommentText(value) {\n return value.replace(COMMENT_DISALLOWED, (text) => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED));\n}\n\n// Keeps track of the currently-active LViews.\nconst TRACKED_LVIEWS = new Map();\n// Used for generating unique IDs for LViews.\nlet uniqueIdCounter = 0;\n/** Gets a unique ID that can be assigned to an LView. */\nfunction getUniqueLViewId() {\n return uniqueIdCounter++;\n}\n/** Starts tracking an LView. */\nfunction registerLView(lView) {\n ngDevMode && assertNumber(lView[ID], 'LView must have an ID in order to be registered');\n TRACKED_LVIEWS.set(lView[ID], lView);\n}\n/** Gets an LView by its unique ID. */\nfunction getLViewById(id) {\n ngDevMode && assertNumber(id, 'ID used for LView lookup must be a number');\n return TRACKED_LVIEWS.get(id) || null;\n}\n/** Stops tracking an LView. */\nfunction unregisterLView(lView) {\n ngDevMode && assertNumber(lView[ID], 'Cannot stop tracking an LView that does not have an ID');\n TRACKED_LVIEWS.delete(lView[ID]);\n}\n\n/**\n * The internal view context which is specific to a given DOM element, directive or\n * component instance. Each value in here (besides the LView and element node details)\n * can be present, null or undefined. If undefined then it implies the value has not been\n * looked up yet, otherwise, if null, then a lookup was executed and nothing was found.\n *\n * Each value will get filled when the respective value is examined within the getContext\n * function. The component, element and each directive instance will share the same instance\n * of the context.\n */\nclass LContext {\n /** Component's parent view data. */\n get lView() {\n return getLViewById(this.lViewId);\n }\n constructor(\n /**\n * ID of the component's parent view data.\n */\n lViewId, \n /**\n * The index instance of the node.\n */\n nodeIndex, \n /**\n * The instance of the DOM node that is attached to the lNode.\n */\n native) {\n this.lViewId = lViewId;\n this.nodeIndex = nodeIndex;\n this.native = native;\n }\n}\n\n/**\n * Returns the matching `LContext` data for a given DOM node, directive or component instance.\n *\n * This function will examine the provided DOM element, component, or directive instance\\'s\n * monkey-patched property to derive the `LContext` data. Once called then the monkey-patched\n * value will be that of the newly created `LContext`.\n *\n * If the monkey-patched value is the `LView` instance then the context value for that\n * target will be created and the monkey-patch reference will be updated. Therefore when this\n * function is called it may mutate the provided element\\'s, component\\'s or any of the associated\n * directive\\'s monkey-patch values.\n *\n * If the monkey-patch value is not detected then the code will walk up the DOM until an element\n * is found which contains a monkey-patch reference. When that occurs then the provided element\n * will be updated with a new context (which is then returned). If the monkey-patch value is not\n * detected for a component/directive instance then it will throw an error (all components and\n * directives should be automatically monkey-patched by ivy).\n *\n * @param target Component, Directive or DOM Node.\n */\nfunction getLContext(target) {\n let mpValue = readPatchedData(target);\n if (mpValue) {\n // only when it's an array is it considered an LView instance\n // ... otherwise it's an already constructed LContext instance\n if (isLView(mpValue)) {\n const lView = mpValue;\n let nodeIndex;\n let component = undefined;\n let directives = undefined;\n if (isComponentInstance(target)) {\n nodeIndex = findViaComponent(lView, target);\n if (nodeIndex == -1) {\n throw new Error('The provided component was not found in the application');\n }\n component = target;\n }\n else if (isDirectiveInstance(target)) {\n nodeIndex = findViaDirective(lView, target);\n if (nodeIndex == -1) {\n throw new Error('The provided directive was not found in the application');\n }\n directives = getDirectivesAtNodeIndex(nodeIndex, lView);\n }\n else {\n nodeIndex = findViaNativeElement(lView, target);\n if (nodeIndex == -1) {\n return null;\n }\n }\n // the goal is not to fill the entire context full of data because the lookups\n // are expensive. Instead, only the target data (the element, component, container, ICU\n // expression or directive details) are filled into the context. If called multiple times\n // with different target values then the missing target data will be filled in.\n const native = unwrapRNode(lView[nodeIndex]);\n const existingCtx = readPatchedData(native);\n const context = (existingCtx && !Array.isArray(existingCtx)) ?\n existingCtx :\n createLContext(lView, nodeIndex, native);\n // only when the component has been discovered then update the monkey-patch\n if (component && context.component === undefined) {\n context.component = component;\n attachPatchData(context.component, context);\n }\n // only when the directives have been discovered then update the monkey-patch\n if (directives && context.directives === undefined) {\n context.directives = directives;\n for (let i = 0; i < directives.length; i++) {\n attachPatchData(directives[i], context);\n }\n }\n attachPatchData(context.native, context);\n mpValue = context;\n }\n }\n else {\n const rElement = target;\n ngDevMode && assertDomNode(rElement);\n // if the context is not found then we need to traverse upwards up the DOM\n // to find the nearest element that has already been monkey patched with data\n let parent = rElement;\n while (parent = parent.parentNode) {\n const parentContext = readPatchedData(parent);\n if (parentContext) {\n const lView = Array.isArray(parentContext) ? parentContext : parentContext.lView;\n // the edge of the app was also reached here through another means\n // (maybe because the DOM was changed manually).\n if (!lView) {\n return null;\n }\n const index = findViaNativeElement(lView, rElement);\n if (index >= 0) {\n const native = unwrapRNode(lView[index]);\n const context = createLContext(lView, index, native);\n attachPatchData(native, context);\n mpValue = context;\n break;\n }\n }\n }\n }\n return mpValue || null;\n}\n/**\n * Creates an empty instance of a `LContext` context\n */\nfunction createLContext(lView, nodeIndex, native) {\n return new LContext(lView[ID], nodeIndex, native);\n}\n/**\n * Takes a component instance and returns the view for that component.\n *\n * @param componentInstance\n * @returns The component's view\n */\nfunction getComponentViewByInstance(componentInstance) {\n let patchedData = readPatchedData(componentInstance);\n let lView;\n if (isLView(patchedData)) {\n const contextLView = patchedData;\n const nodeIndex = findViaComponent(contextLView, componentInstance);\n lView = getComponentLViewByIndex(nodeIndex, contextLView);\n const context = createLContext(contextLView, nodeIndex, lView[HOST]);\n context.component = componentInstance;\n attachPatchData(componentInstance, context);\n attachPatchData(context.native, context);\n }\n else {\n const context = patchedData;\n const contextLView = context.lView;\n ngDevMode && assertLView(contextLView);\n lView = getComponentLViewByIndex(context.nodeIndex, contextLView);\n }\n return lView;\n}\n/**\n * This property will be monkey-patched on elements, components and directives.\n */\nconst MONKEY_PATCH_KEY_NAME = '__ngContext__';\n/**\n * Assigns the given data to the given target (which could be a component,\n * directive or DOM node instance) using monkey-patching.\n */\nfunction attachPatchData(target, data) {\n ngDevMode && assertDefined(target, 'Target expected');\n // Only attach the ID of the view in order to avoid memory leaks (see #41047). We only do this\n // for `LView`, because we have control over when an `LView` is created and destroyed, whereas\n // we can't know when to remove an `LContext`.\n if (isLView(data)) {\n target[MONKEY_PATCH_KEY_NAME] = data[ID];\n registerLView(data);\n }\n else {\n target[MONKEY_PATCH_KEY_NAME] = data;\n }\n}\n/**\n * Returns the monkey-patch value data present on the target (which could be\n * a component, directive or a DOM node).\n */\nfunction readPatchedData(target) {\n ngDevMode && assertDefined(target, 'Target expected');\n const data = target[MONKEY_PATCH_KEY_NAME];\n return (typeof data === 'number') ? getLViewById(data) : data || null;\n}\nfunction readPatchedLView(target) {\n const value = readPatchedData(target);\n if (value) {\n return (isLView(value) ? value : value.lView);\n }\n return null;\n}\nfunction isComponentInstance(instance) {\n return instance && instance.constructor && instance.constructor.ɵcmp;\n}\nfunction isDirectiveInstance(instance) {\n return instance && instance.constructor && instance.constructor.ɵdir;\n}\n/**\n * Locates the element within the given LView and returns the matching index\n */\nfunction findViaNativeElement(lView, target) {\n const tView = lView[TVIEW];\n for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) {\n if (unwrapRNode(lView[i]) === target) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Locates the next tNode (child, sibling or parent).\n */\nfunction traverseNextElement(tNode) {\n if (tNode.child) {\n return tNode.child;\n }\n else if (tNode.next) {\n return tNode.next;\n }\n else {\n // Let's take the following template: <div><span>text</span></div><component/>\n // After checking the text node, we need to find the next parent that has a \"next\" TNode,\n // in this case the parent `div`, so that we can find the component.\n while (tNode.parent && !tNode.parent.next) {\n tNode = tNode.parent;\n }\n return tNode.parent && tNode.parent.next;\n }\n}\n/**\n * Locates the component within the given LView and returns the matching index\n */\nfunction findViaComponent(lView, componentInstance) {\n const componentIndices = lView[TVIEW].components;\n if (componentIndices) {\n for (let i = 0; i < componentIndices.length; i++) {\n const elementComponentIndex = componentIndices[i];\n const componentView = getComponentLViewByIndex(elementComponentIndex, lView);\n if (componentView[CONTEXT] === componentInstance) {\n return elementComponentIndex;\n }\n }\n }\n else {\n const rootComponentView = getComponentLViewByIndex(HEADER_OFFSET, lView);\n const rootComponent = rootComponentView[CONTEXT];\n if (rootComponent === componentInstance) {\n // we are dealing with the root element here therefore we know that the\n // element is the very first element after the HEADER data in the lView\n return HEADER_OFFSET;\n }\n }\n return -1;\n}\n/**\n * Locates the directive within the given LView and returns the matching index\n */\nfunction findViaDirective(lView, directiveInstance) {\n // if a directive is monkey patched then it will (by default)\n // have a reference to the LView of the current view. The\n // element bound to the directive being search lives somewhere\n // in the view data. We loop through the nodes and check their\n // list of directives for the instance.\n let tNode = lView[TVIEW].firstChild;\n while (tNode) {\n const directiveIndexStart = tNode.directiveStart;\n const directiveIndexEnd = tNode.directiveEnd;\n for (let i = directiveIndexStart; i < directiveIndexEnd; i++) {\n if (lView[i] === directiveInstance) {\n return tNode.index;\n }\n }\n tNode = traverseNextElement(tNode);\n }\n return -1;\n}\n/**\n * Returns a list of directives applied to a node at a specific index. The list includes\n * directives matched by selector and any host directives, but it excludes components.\n * Use `getComponentAtNodeIndex` to find the component applied to a node.\n *\n * @param nodeIndex The node index\n * @param lView The target view data\n */\nfunction getDirectivesAtNodeIndex(nodeIndex, lView) {\n const tNode = lView[TVIEW].data[nodeIndex];\n if (tNode.directiveStart === 0)\n return EMPTY_ARRAY;\n const results = [];\n for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {\n const directiveInstance = lView[i];\n if (!isComponentInstance(directiveInstance)) {\n results.push(directiveInstance);\n }\n }\n return results;\n}\nfunction getComponentAtNodeIndex(nodeIndex, lView) {\n const tNode = lView[TVIEW].data[nodeIndex];\n const { directiveStart, componentOffset } = tNode;\n return componentOffset > -1 ? lView[directiveStart + componentOffset] : null;\n}\n/**\n * Returns a map of local references (local reference name => element or directive instance) that\n * exist on a given element.\n */\nfunction discoverLocalRefs(lView, nodeIndex) {\n const tNode = lView[TVIEW].data[nodeIndex];\n if (tNode && tNode.localNames) {\n const result = {};\n let localIndex = tNode.index + 1;\n for (let i = 0; i < tNode.localNames.length; i += 2) {\n result[tNode.localNames[i]] = lView[localIndex];\n localIndex++;\n }\n return result;\n }\n return null;\n}\n\nlet _icuContainerIterate;\n/**\n * Iterator which provides ability to visit all of the `TIcuContainerNode` root `RNode`s.\n */\nfunction icuContainerIterate(tIcuContainerNode, lView) {\n return _icuContainerIterate(tIcuContainerNode, lView);\n}\n/**\n * Ensures that `IcuContainerVisitor`'s implementation is present.\n *\n * This function is invoked when i18n instruction comes across an ICU. The purpose is to allow the\n * bundler to tree shake ICU logic and only load it if ICU instruction is executed.\n */\nfunction ensureIcuContainerVisitorLoaded(loader) {\n if (_icuContainerIterate === undefined) {\n // Do not inline this function. We want to keep `ensureIcuContainerVisitorLoaded` light, so it\n // can be inlined into call-site.\n _icuContainerIterate = loader();\n }\n}\n\n/**\n * Gets the parent LView of the passed LView, if the PARENT is an LContainer, will get the parent of\n * that LContainer, which is an LView\n * @param lView the lView whose parent to get\n */\nfunction getLViewParent(lView) {\n ngDevMode && assertLView(lView);\n const parent = lView[PARENT];\n return isLContainer(parent) ? parent[PARENT] : parent;\n}\n/**\n * Retrieve the root view from any component or `LView` by walking the parent `LView` until\n * reaching the root `LView`.\n *\n * @param componentOrLView any component or `LView`\n */\nfunction getRootView(componentOrLView) {\n ngDevMode && assertDefined(componentOrLView, 'component');\n let lView = isLView(componentOrLView) ? componentOrLView : readPatchedLView(componentOrLView);\n while (lView && !(lView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {\n lView = getLViewParent(lView);\n }\n ngDevMode && assertLView(lView);\n return lView;\n}\n/**\n * Returns the context information associated with the application where the target is situated. It\n * does this by walking the parent views until it gets to the root view, then getting the context\n * off of that.\n *\n * @param viewOrComponent the `LView` or component to get the root context for.\n */\nfunction getRootContext(viewOrComponent) {\n const rootView = getRootView(viewOrComponent);\n ngDevMode &&\n assertDefined(rootView[CONTEXT], 'Root view has no context. Perhaps it is disconnected?');\n return rootView[CONTEXT];\n}\n/**\n * Gets the first `LContainer` in the LView or `null` if none exists.\n */\nfunction getFirstLContainer(lView) {\n return getNearestLContainer(lView[CHILD_HEAD]);\n}\n/**\n * Gets the next `LContainer` that is a sibling of the given container.\n */\nfunction getNextLContainer(container) {\n return getNearestLContainer(container[NEXT]);\n}\nfunction getNearestLContainer(viewOrContainer) {\n while (viewOrContainer !== null && !isLContainer(viewOrContainer)) {\n viewOrContainer = viewOrContainer[NEXT];\n }\n return viewOrContainer;\n}\n\n/**\n * NOTE: for performance reasons, the possible actions are inlined within the function instead of\n * being passed as an argument.\n */\nfunction applyToElementOrContainer(action, renderer, parent, lNodeToHandle, beforeNode) {\n // If this slot was allocated for a text node dynamically created by i18n, the text node itself\n // won't be created until i18nApply() in the update block, so this node should be skipped.\n // For more info, see \"ICU expressions should work inside an ngTemplateOutlet inside an ngFor\"\n // in `i18n_spec.ts`.\n if (lNodeToHandle != null) {\n let lContainer;\n let isComponent = false;\n // We are expecting an RNode, but in the case of a component or LContainer the `RNode` is\n // wrapped in an array which needs to be unwrapped. We need to know if it is a component and if\n // it has LContainer so that we can process all of those cases appropriately.\n if (isLContainer(lNodeToHandle)) {\n lContainer = lNodeToHandle;\n }\n else if (isLView(lNodeToHandle)) {\n isComponent = true;\n ngDevMode && assertDefined(lNodeToHandle[HOST], 'HOST must be defined for a component LView');\n lNodeToHandle = lNodeToHandle[HOST];\n }\n const rNode = unwrapRNode(lNodeToHandle);\n if (action === 0 /* WalkTNodeTreeAction.Create */ && parent !== null) {\n if (beforeNode == null) {\n nativeAppendChild(renderer, parent, rNode);\n }\n else {\n nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true);\n }\n }\n else if (action === 1 /* WalkTNodeTreeAction.Insert */ && parent !== null) {\n nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true);\n }\n else if (action === 2 /* WalkTNodeTreeAction.Detach */) {\n nativeRemoveNode(renderer, rNode, isComponent);\n }\n else if (action === 3 /* WalkTNodeTreeAction.Destroy */) {\n ngDevMode && ngDevMode.rendererDestroyNode++;\n renderer.destroyNode(rNode);\n }\n if (lContainer != null) {\n applyContainer(renderer, action, lContainer, parent, beforeNode);\n }\n }\n}\nfunction createTextNode(renderer, value) {\n ngDevMode && ngDevMode.rendererCreateTextNode++;\n ngDevMode && ngDevMode.rendererSetText++;\n return renderer.createText(value);\n}\nfunction updateTextNode(renderer, rNode, value) {\n ngDevMode && ngDevMode.rendererSetText++;\n renderer.setValue(rNode, value);\n}\nfunction createCommentNode(renderer, value) {\n ngDevMode && ngDevMode.rendererCreateComment++;\n return renderer.createComment(escapeCommentText(value));\n}\n/**\n * Creates a native element from a tag name, using a renderer.\n * @param renderer A renderer to use\n * @param name the tag name\n * @param namespace Optional namespace for element.\n * @returns the element created\n */\nfunction createElementNode(renderer, name, namespace) {\n ngDevMode && ngDevMode.rendererCreateElement++;\n return renderer.createElement(name, namespace);\n}\n/**\n * Removes all DOM elements associated with a view.\n *\n * Because some root nodes of the view may be containers, we sometimes need\n * to propagate deeply into the nested containers to remove all elements in the\n * views beneath it.\n *\n * @param tView The `TView' of the `LView` from which elements should be added or removed\n * @param lView The view from which elements should be added or removed\n */\nfunction removeViewFromDOM(tView, lView) {\n const renderer = lView[RENDERER];\n applyView(tView, lView, renderer, 2 /* WalkTNodeTreeAction.Detach */, null, null);\n lView[HOST] = null;\n lView[T_HOST] = null;\n}\n/**\n * Adds all DOM elements associated with a view.\n *\n * Because some root nodes of the view may be containers, we sometimes need\n * to propagate deeply into the nested containers to add all elements in the\n * views beneath it.\n *\n * @param tView The `TView' of the `LView` from which elements should be added or removed\n * @param parentTNode The `TNode` where the `LView` should be attached to.\n * @param renderer Current renderer to use for DOM manipulations.\n * @param lView The view from which elements should be added or removed\n * @param parentNativeNode The parent `RElement` where it should be inserted into.\n * @param beforeNode The node before which elements should be added, if insert mode\n */\nfunction addViewToDOM(tView, parentTNode, renderer, lView, parentNativeNode, beforeNode) {\n lView[HOST] = parentNativeNode;\n lView[T_HOST] = parentTNode;\n applyView(tView, lView, renderer, 1 /* WalkTNodeTreeAction.Insert */, parentNativeNode, beforeNode);\n}\n/**\n * Detach a `LView` from the DOM by detaching its nodes.\n *\n * @param tView The `TView' of the `LView` to be detached\n * @param lView the `LView` to be detached.\n */\nfunction detachViewFromDOM(tView, lView) {\n applyView(tView, lView, lView[RENDERER], 2 /* WalkTNodeTreeAction.Detach */, null, null);\n}\n/**\n * Traverses down and up the tree of views and containers to remove listeners and\n * call onDestroy callbacks.\n *\n * Notes:\n * - Because it's used for onDestroy calls, it needs to be bottom-up.\n * - Must process containers instead of their views to avoid splicing\n * when views are destroyed and re-added.\n * - Using a while loop because it's faster than recursion\n * - Destroy only called on movement to sibling or movement to parent (laterally or up)\n *\n * @param rootView The view to destroy\n */\nfunction destroyViewTree(rootView) {\n // If the view has no children, we can clean it up and return early.\n let lViewOrLContainer = rootView[CHILD_HEAD];\n if (!lViewOrLContainer) {\n return cleanUpView(rootView[TVIEW], rootView);\n }\n while (lViewOrLContainer) {\n let next = null;\n if (isLView(lViewOrLContainer)) {\n // If LView, traverse down to child.\n next = lViewOrLContainer[CHILD_HEAD];\n }\n else {\n ngDevMode && assertLContainer(lViewOrLContainer);\n // If container, traverse down to its first LView.\n const firstView = lViewOrLContainer[CONTAINER_HEADER_OFFSET];\n if (firstView)\n next = firstView;\n }\n if (!next) {\n // Only clean up view when moving to the side or up, as destroy hooks\n // should be called in order from the bottom up.\n while (lViewOrLContainer && !lViewOrLContainer[NEXT] && lViewOrLContainer !== rootView) {\n if (isLView(lViewOrLContainer)) {\n cleanUpView(lViewOrLContainer[TVIEW], lViewOrLContainer);\n }\n lViewOrLContainer = lViewOrLContainer[PARENT];\n }\n if (lViewOrLContainer === null)\n lViewOrLContainer = rootView;\n if (isLView(lViewOrLContainer)) {\n cleanUpView(lViewOrLContainer[TVIEW], lViewOrLContainer);\n }\n next = lViewOrLContainer && lViewOrLContainer[NEXT];\n }\n lViewOrLContainer = next;\n }\n}\n/**\n * Inserts a view into a container.\n *\n * This adds the view to the container's array of active views in the correct\n * position. It also adds the view's elements to the DOM if the container isn't a\n * root node of another view (in that case, the view's elements will be added when\n * the container's parent view is added later).\n *\n * @param tView The `TView' of the `LView` to insert\n * @param lView The view to insert\n * @param lContainer The container into which the view should be inserted\n * @param index Which index in the container to insert the child view into\n */\nfunction insertView(tView, lView, lContainer, index) {\n ngDevMode && assertLView(lView);\n ngDevMode && assertLContainer(lContainer);\n const indexInContainer = CONTAINER_HEADER_OFFSET + index;\n const containerLength = lContainer.length;\n if (index > 0) {\n // This is a new view, we need to add it to the children.\n lContainer[indexInContainer - 1][NEXT] = lView;\n }\n if (index < containerLength - CONTAINER_HEADER_OFFSET) {\n lView[NEXT] = lContainer[indexInContainer];\n addToArray(lContainer, CONTAINER_HEADER_OFFSET + index, lView);\n }\n else {\n lContainer.push(lView);\n lView[NEXT] = null;\n }\n lView[PARENT] = lContainer;\n // track views where declaration and insertion points are different\n const declarationLContainer = lView[DECLARATION_LCONTAINER];\n if (declarationLContainer !== null && lContainer !== declarationLContainer) {\n trackMovedView(declarationLContainer, lView);\n }\n // notify query that a new view has been added\n const lQueries = lView[QUERIES];\n if (lQueries !== null) {\n lQueries.insertView(tView);\n }\n // Sets the attached flag\n lView[FLAGS] |= 128 /* LViewFlags.Attached */;\n}\n/**\n * Track views created from the declaration container (TemplateRef) and inserted into a\n * different LContainer.\n */\nfunction trackMovedView(declarationContainer, lView) {\n ngDevMode && assertDefined(lView, 'LView required');\n ngDevMode && assertLContainer(declarationContainer);\n const movedViews = declarationContainer[MOVED_VIEWS];\n const insertedLContainer = lView[PARENT];\n ngDevMode && assertLContainer(insertedLContainer);\n const insertedComponentLView = insertedLContainer[PARENT][DECLARATION_COMPONENT_VIEW];\n ngDevMode && assertDefined(insertedComponentLView, 'Missing insertedComponentLView');\n const declaredComponentLView = lView[DECLARATION_COMPONENT_VIEW];\n ngDevMode && assertDefined(declaredComponentLView, 'Missing declaredComponentLView');\n if (declaredComponentLView !== insertedComponentLView) {\n // At this point the declaration-component is not same as insertion-component; this means that\n // this is a transplanted view. Mark the declared lView as having transplanted views so that\n // those views can participate in CD.\n declarationContainer[HAS_TRANSPLANTED_VIEWS] = true;\n }\n if (movedViews === null) {\n declarationContainer[MOVED_VIEWS] = [lView];\n }\n else {\n movedViews.push(lView);\n }\n}\nfunction detachMovedView(declarationContainer, lView) {\n ngDevMode && assertLContainer(declarationContainer);\n ngDevMode &&\n assertDefined(declarationContainer[MOVED_VIEWS], 'A projected view should belong to a non-empty projected views collection');\n const movedViews = declarationContainer[MOVED_VIEWS];\n const declarationViewIndex = movedViews.indexOf(lView);\n const insertionLContainer = lView[PARENT];\n ngDevMode && assertLContainer(insertionLContainer);\n // If the view was marked for refresh but then detached before it was checked (where the flag\n // would be cleared and the counter decremented), we need to update the status here.\n clearViewRefreshFlag(lView);\n movedViews.splice(declarationViewIndex, 1);\n}\n/**\n * Detaches a view from a container.\n *\n * This method removes the view from the container's array of active views. It also\n * removes the view's elements from the DOM.\n *\n * @param lContainer The container from which to detach a view\n * @param removeIndex The index of the view to detach\n * @returns Detached LView instance.\n */\nfunction detachView(lContainer, removeIndex) {\n if (lContainer.length <= CONTAINER_HEADER_OFFSET)\n return;\n const indexInContainer = CONTAINER_HEADER_OFFSET + removeIndex;\n const viewToDetach = lContainer[indexInContainer];\n if (viewToDetach) {\n const declarationLContainer = viewToDetach[DECLARATION_LCONTAINER];\n if (declarationLContainer !== null && declarationLContainer !== lContainer) {\n detachMovedView(declarationLContainer, viewToDetach);\n }\n if (removeIndex > 0) {\n lContainer[indexInContainer - 1][NEXT] = viewToDetach[NEXT];\n }\n const removedLView = removeFromArray(lContainer, CONTAINER_HEADER_OFFSET + removeIndex);\n removeViewFromDOM(viewToDetach[TVIEW], viewToDetach);\n // notify query that a view has been removed\n const lQueries = removedLView[QUERIES];\n if (lQueries !== null) {\n lQueries.detachView(removedLView[TVIEW]);\n }\n viewToDetach[PARENT] = null;\n viewToDetach[NEXT] = null;\n // Unsets the attached flag\n viewToDetach[FLAGS] &= ~128 /* LViewFlags.Attached */;\n }\n return viewToDetach;\n}\n/**\n * A standalone function which destroys an LView,\n * conducting clean up (e.g. removing listeners, calling onDestroys).\n *\n * @param tView The `TView' of the `LView` to be destroyed\n * @param lView The view to be destroyed.\n */\nfunction destroyLView(tView, lView) {\n if (!(lView[FLAGS] & 256 /* LViewFlags.Destroyed */)) {\n const renderer = lView[RENDERER];\n lView[REACTIVE_TEMPLATE_CONSUMER] && consumerDestroy(lView[REACTIVE_TEMPLATE_CONSUMER]);\n lView[REACTIVE_HOST_BINDING_CONSUMER] && consumerDestroy(lView[REACTIVE_HOST_BINDING_CONSUMER]);\n if (renderer.destroyNode) {\n applyView(tView, lView, renderer, 3 /* WalkTNodeTreeAction.Destroy */, null, null);\n }\n destroyViewTree(lView);\n }\n}\n/**\n * Calls onDestroys hooks for all directives and pipes in a given view and then removes all\n * listeners. Listeners are removed as the last step so events delivered in the onDestroys hooks\n * can be propagated to @Output listeners.\n *\n * @param tView `TView` for the `LView` to clean up.\n * @param lView The LView to clean up\n */\nfunction cleanUpView(tView, lView) {\n if (!(lView[FLAGS] & 256 /* LViewFlags.Destroyed */)) {\n // Usually the Attached flag is removed when the view is detached from its parent, however\n // if it's a root view, the flag won't be unset hence why we're also removing on destroy.\n lView[FLAGS] &= ~128 /* LViewFlags.Attached */;\n // Mark the LView as destroyed *before* executing the onDestroy hooks. An onDestroy hook\n // runs arbitrary user code, which could include its own `viewRef.destroy()` (or similar). If\n // We don't flag the view as destroyed before the hooks, this could lead to an infinite loop.\n // This also aligns with the ViewEngine behavior. It also means that the onDestroy hook is\n // really more of an \"afterDestroy\" hook if you think about it.\n lView[FLAGS] |= 256 /* LViewFlags.Destroyed */;\n executeOnDestroys(tView, lView);\n processCleanups(tView, lView);\n // For component views only, the local renderer is destroyed at clean up time.\n if (lView[TVIEW].type === 1 /* TViewType.Component */) {\n ngDevMode && ngDevMode.rendererDestroy++;\n lView[RENDERER].destroy();\n }\n const declarationContainer = lView[DECLARATION_LCONTAINER];\n // we are dealing with an embedded view that is still inserted into a container\n if (declarationContainer !== null && isLContainer(lView[PARENT])) {\n // and this is a projected view\n if (declarationContainer !== lView[PARENT]) {\n detachMovedView(declarationContainer, lView);\n }\n // For embedded views still attached to a container: remove query result from this view.\n const lQueries = lView[QUERIES];\n if (lQueries !== null) {\n lQueries.detachView(tView);\n }\n }\n // Unregister the view once everything else has been cleaned up.\n unregisterLView(lView);\n }\n}\n/** Removes listeners and unsubscribes from output subscriptions */\nfunction processCleanups(tView, lView) {\n const tCleanup = tView.cleanup;\n const lCleanup = lView[CLEANUP];\n if (tCleanup !== null) {\n for (let i = 0; i < tCleanup.length - 1; i += 2) {\n if (typeof tCleanup[i] === 'string') {\n // This is a native DOM listener. It will occupy 4 entries in the TCleanup array (hence i +=\n // 2 at the end of this block).\n const targetIdx = tCleanup[i + 3];\n ngDevMode && assertNumber(targetIdx, 'cleanup target must be a number');\n if (targetIdx >= 0) {\n // unregister\n lCleanup[targetIdx]();\n }\n else {\n // Subscription\n lCleanup[-targetIdx].unsubscribe();\n }\n i += 2;\n }\n else {\n // This is a cleanup function that is grouped with the index of its context\n const context = lCleanup[tCleanup[i + 1]];\n tCleanup[i].call(context);\n }\n }\n }\n if (lCleanup !== null) {\n lView[CLEANUP] = null;\n }\n const destroyHooks = lView[ON_DESTROY_HOOKS];\n if (destroyHooks !== null) {\n // Reset the ON_DESTROY_HOOKS array before iterating over it to prevent hooks that unregister\n // themselves from mutating the array during iteration.\n lView[ON_DESTROY_HOOKS] = null;\n for (let i = 0; i < destroyHooks.length; i++) {\n const destroyHooksFn = destroyHooks[i];\n ngDevMode && assertFunction(destroyHooksFn, 'Expecting destroy hook to be a function.');\n destroyHooksFn();\n }\n }\n}\n/** Calls onDestroy hooks for this view */\nfunction executeOnDestroys(tView, lView) {\n let destroyHooks;\n if (tView != null && (destroyHooks = tView.destroyHooks) != null) {\n for (let i = 0; i < destroyHooks.length; i += 2) {\n const context = lView[destroyHooks[i]];\n // Only call the destroy hook if the context has been requested.\n if (!(context instanceof NodeInjectorFactory)) {\n const toCall = destroyHooks[i + 1];\n if (Array.isArray(toCall)) {\n for (let j = 0; j < toCall.length; j += 2) {\n const callContext = context[toCall[j]];\n const hook = toCall[j + 1];\n profiler(4 /* ProfilerEvent.LifecycleHookStart */, callContext, hook);\n try {\n hook.call(callContext);\n }\n finally {\n profiler(5 /* ProfilerEvent.LifecycleHookEnd */, callContext, hook);\n }\n }\n }\n else {\n profiler(4 /* ProfilerEvent.LifecycleHookStart */, context, toCall);\n try {\n toCall.call(context);\n }\n finally {\n profiler(5 /* ProfilerEvent.LifecycleHookEnd */, context, toCall);\n }\n }\n }\n }\n }\n}\n/**\n * Returns a native element if a node can be inserted into the given parent.\n *\n * There are two reasons why we may not be able to insert a element immediately.\n * - Projection: When creating a child content element of a component, we have to skip the\n * insertion because the content of a component will be projected.\n * `<component><content>delayed due to projection</content></component>`\n * - Parent container is disconnected: This can happen when we are inserting a view into\n * parent container, which itself is disconnected. For example the parent container is part\n * of a View which has not be inserted or is made for projection but has not been inserted\n * into destination.\n *\n * @param tView: Current `TView`.\n * @param tNode: `TNode` for which we wish to retrieve render parent.\n * @param lView: Current `LView`.\n */\nfunction getParentRElement(tView, tNode, lView) {\n return getClosestRElement(tView, tNode.parent, lView);\n}\n/**\n * Get closest `RElement` or `null` if it can't be found.\n *\n * If `TNode` is `TNodeType.Element` => return `RElement` at `LView[tNode.index]` location.\n * If `TNode` is `TNodeType.ElementContainer|IcuContain` => return the parent (recursively).\n * If `TNode` is `null` then return host `RElement`:\n * - return `null` if projection\n * - return `null` if parent container is disconnected (we have no parent.)\n *\n * @param tView: Current `TView`.\n * @param tNode: `TNode` for which we wish to retrieve `RElement` (or `null` if host element is\n * needed).\n * @param lView: Current `LView`.\n * @returns `null` if the `RElement` can't be determined at this time (no parent / projection)\n */\nfunction getClosestRElement(tView, tNode, lView) {\n let parentTNode = tNode;\n // Skip over element and ICU containers as those are represented by a comment node and\n // can't be used as a render parent.\n while (parentTNode !== null &&\n (parentTNode.type & (8 /* TNodeType.ElementContainer */ | 32 /* TNodeType.Icu */))) {\n tNode = parentTNode;\n parentTNode = tNode.parent;\n }\n // If the parent tNode is null, then we are inserting across views: either into an embedded view\n // or a component view.\n if (parentTNode === null) {\n // We are inserting a root element of the component view into the component host element and\n // it should always be eager.\n return lView[HOST];\n }\n else {\n ngDevMode && assertTNodeType(parentTNode, 3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */);\n const { componentOffset } = parentTNode;\n if (componentOffset > -1) {\n ngDevMode && assertTNodeForLView(parentTNode, lView);\n const { encapsulation } = tView.data[parentTNode.directiveStart + componentOffset];\n // We've got a parent which is an element in the current view. We just need to verify if the\n // parent element is not a component. Component's content nodes are not inserted immediately\n // because they will be projected, and so doing insert at this point would be wasteful.\n // Since the projection would then move it to its final destination. Note that we can't\n // make this assumption when using the Shadow DOM, because the native projection placeholders\n // (<content> or <slot>) have to be in place as elements are being inserted.\n if (encapsulation === ViewEncapsulation$1.None ||\n encapsulation === ViewEncapsulation$1.Emulated) {\n return null;\n }\n }\n return getNativeByTNode(parentTNode, lView);\n }\n}\n/**\n * Inserts a native node before another native node for a given parent.\n * This is a utility function that can be used when native nodes were determined.\n */\nfunction nativeInsertBefore(renderer, parent, child, beforeNode, isMove) {\n ngDevMode && ngDevMode.rendererInsertBefore++;\n renderer.insertBefore(parent, child, beforeNode, isMove);\n}\nfunction nativeAppendChild(renderer, parent, child) {\n ngDevMode && ngDevMode.rendererAppendChild++;\n ngDevMode && assertDefined(parent, 'parent node must be defined');\n renderer.appendChild(parent, child);\n}\nfunction nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove) {\n if (beforeNode !== null) {\n nativeInsertBefore(renderer, parent, child, beforeNode, isMove);\n }\n else {\n nativeAppendChild(renderer, parent, child);\n }\n}\n/** Removes a node from the DOM given its native parent. */\nfunction nativeRemoveChild(renderer, parent, child, isHostElement) {\n renderer.removeChild(parent, child, isHostElement);\n}\n/** Checks if an element is a `<template>` node. */\nfunction isTemplateNode(node) {\n return node.tagName === 'TEMPLATE' && node.content !== undefined;\n}\n/**\n * Returns a native parent of a given native node.\n */\nfunction nativeParentNode(renderer, node) {\n return renderer.parentNode(node);\n}\n/**\n * Returns a native sibling of a given native node.\n */\nfunction nativeNextSibling(renderer, node) {\n return renderer.nextSibling(node);\n}\n/**\n * Find a node in front of which `currentTNode` should be inserted.\n *\n * This method determines the `RNode` in front of which we should insert the `currentRNode`. This\n * takes `TNode.insertBeforeIndex` into account if i18n code has been invoked.\n *\n * @param parentTNode parent `TNode`\n * @param currentTNode current `TNode` (The node which we would like to insert into the DOM)\n * @param lView current `LView`\n */\nfunction getInsertInFrontOfRNode(parentTNode, currentTNode, lView) {\n return _getInsertInFrontOfRNodeWithI18n(parentTNode, currentTNode, lView);\n}\n/**\n * Find a node in front of which `currentTNode` should be inserted. (Does not take i18n into\n * account)\n *\n * This method determines the `RNode` in front of which we should insert the `currentRNode`. This\n * does not take `TNode.insertBeforeIndex` into account.\n *\n * @param parentTNode parent `TNode`\n * @param currentTNode current `TNode` (The node which we would like to insert into the DOM)\n * @param lView current `LView`\n */\nfunction getInsertInFrontOfRNodeWithNoI18n(parentTNode, currentTNode, lView) {\n if (parentTNode.type & (8 /* TNodeType.ElementContainer */ | 32 /* TNodeType.Icu */)) {\n return getNativeByTNode(parentTNode, lView);\n }\n return null;\n}\n/**\n * Tree shakable boundary for `getInsertInFrontOfRNodeWithI18n` function.\n *\n * This function will only be set if i18n code runs.\n */\nlet _getInsertInFrontOfRNodeWithI18n = getInsertInFrontOfRNodeWithNoI18n;\n/**\n * Tree shakable boundary for `processI18nInsertBefore` function.\n *\n * This function will only be set if i18n code runs.\n */\nlet _processI18nInsertBefore;\nfunction setI18nHandling(getInsertInFrontOfRNodeWithI18n, processI18nInsertBefore) {\n _getInsertInFrontOfRNodeWithI18n = getInsertInFrontOfRNodeWithI18n;\n _processI18nInsertBefore = processI18nInsertBefore;\n}\n/**\n * Appends the `child` native node (or a collection of nodes) to the `parent`.\n *\n * @param tView The `TView' to be appended\n * @param lView The current LView\n * @param childRNode The native child (or children) that should be appended\n * @param childTNode The TNode of the child element\n */\nfunction appendChild(tView, lView, childRNode, childTNode) {\n const parentRNode = getParentRElement(tView, childTNode, lView);\n const renderer = lView[RENDERER];\n const parentTNode = childTNode.parent || lView[T_HOST];\n const anchorNode = getInsertInFrontOfRNode(parentTNode, childTNode, lView);\n if (parentRNode != null) {\n if (Array.isArray(childRNode)) {\n for (let i = 0; i < childRNode.length; i++) {\n nativeAppendOrInsertBefore(renderer, parentRNode, childRNode[i], anchorNode, false);\n }\n }\n else {\n nativeAppendOrInsertBefore(renderer, parentRNode, childRNode, anchorNode, false);\n }\n }\n _processI18nInsertBefore !== undefined &&\n _processI18nInsertBefore(renderer, childTNode, lView, childRNode, parentRNode);\n}\n/**\n * Returns the first native node for a given LView, starting from the provided TNode.\n *\n * Native nodes are returned in the order in which those appear in the native tree (DOM).\n */\nfunction getFirstNativeNode(lView, tNode) {\n if (tNode !== null) {\n ngDevMode &&\n assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 32 /* TNodeType.Icu */ | 16 /* TNodeType.Projection */);\n const tNodeType = tNode.type;\n if (tNodeType & 3 /* TNodeType.AnyRNode */) {\n return getNativeByTNode(tNode, lView);\n }\n else if (tNodeType & 4 /* TNodeType.Container */) {\n return getBeforeNodeForView(-1, lView[tNode.index]);\n }\n else if (tNodeType & 8 /* TNodeType.ElementContainer */) {\n const elIcuContainerChild = tNode.child;\n if (elIcuContainerChild !== null) {\n return getFirstNativeNode(lView, elIcuContainerChild);\n }\n else {\n const rNodeOrLContainer = lView[tNode.index];\n if (isLContainer(rNodeOrLContainer)) {\n return getBeforeNodeForView(-1, rNodeOrLContainer);\n }\n else {\n return unwrapRNode(rNodeOrLContainer);\n }\n }\n }\n else if (tNodeType & 32 /* TNodeType.Icu */) {\n let nextRNode = icuContainerIterate(tNode, lView);\n let rNode = nextRNode();\n // If the ICU container has no nodes, than we use the ICU anchor as the node.\n return rNode || unwrapRNode(lView[tNode.index]);\n }\n else {\n const projectionNodes = getProjectionNodes(lView, tNode);\n if (projectionNodes !== null) {\n if (Array.isArray(projectionNodes)) {\n return projectionNodes[0];\n }\n const parentView = getLViewParent(lView[DECLARATION_COMPONENT_VIEW]);\n ngDevMode && assertParentView(parentView);\n return getFirstNativeNode(parentView, projectionNodes);\n }\n else {\n return getFirstNativeNode(lView, tNode.next);\n }\n }\n }\n return null;\n}\nfunction getProjectionNodes(lView, tNode) {\n if (tNode !== null) {\n const componentView = lView[DECLARATION_COMPONENT_VIEW];\n const componentHost = componentView[T_HOST];\n const slotIdx = tNode.projection;\n ngDevMode && assertProjectionSlots(lView);\n return componentHost.projection[slotIdx];\n }\n return null;\n}\nfunction getBeforeNodeForView(viewIndexInContainer, lContainer) {\n const nextViewIndex = CONTAINER_HEADER_OFFSET + viewIndexInContainer + 1;\n if (nextViewIndex < lContainer.length) {\n const lView = lContainer[nextViewIndex];\n const firstTNodeOfView = lView[TVIEW].firstChild;\n if (firstTNodeOfView !== null) {\n return getFirstNativeNode(lView, firstTNodeOfView);\n }\n }\n return lContainer[NATIVE];\n}\n/**\n * Removes a native node itself using a given renderer. To remove the node we are looking up its\n * parent from the native tree as not all platforms / browsers support the equivalent of\n * node.remove().\n *\n * @param renderer A renderer to be used\n * @param rNode The native node that should be removed\n * @param isHostElement A flag indicating if a node to be removed is a host of a component.\n */\nfunction nativeRemoveNode(renderer, rNode, isHostElement) {\n ngDevMode && ngDevMode.rendererRemoveNode++;\n const nativeParent = nativeParentNode(renderer, rNode);\n if (nativeParent) {\n nativeRemoveChild(renderer, nativeParent, rNode, isHostElement);\n }\n}\n/**\n * Clears the contents of a given RElement.\n *\n * @param rElement the native RElement to be cleared\n */\nfunction clearElementContents(rElement) {\n rElement.textContent = '';\n}\n/**\n * Performs the operation of `action` on the node. Typically this involves inserting or removing\n * nodes on the LView or projection boundary.\n */\nfunction applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode, isProjection) {\n while (tNode != null) {\n ngDevMode && assertTNodeForLView(tNode, lView);\n ngDevMode &&\n assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 16 /* TNodeType.Projection */ | 32 /* TNodeType.Icu */);\n const rawSlotValue = lView[tNode.index];\n const tNodeType = tNode.type;\n if (isProjection) {\n if (action === 0 /* WalkTNodeTreeAction.Create */) {\n rawSlotValue && attachPatchData(unwrapRNode(rawSlotValue), lView);\n tNode.flags |= 2 /* TNodeFlags.isProjected */;\n }\n }\n if ((tNode.flags & 32 /* TNodeFlags.isDetached */) !== 32 /* TNodeFlags.isDetached */) {\n if (tNodeType & 8 /* TNodeType.ElementContainer */) {\n applyNodes(renderer, action, tNode.child, lView, parentRElement, beforeNode, false);\n applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode);\n }\n else if (tNodeType & 32 /* TNodeType.Icu */) {\n const nextRNode = icuContainerIterate(tNode, lView);\n let rNode;\n while (rNode = nextRNode()) {\n applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode);\n }\n applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode);\n }\n else if (tNodeType & 16 /* TNodeType.Projection */) {\n applyProjectionRecursive(renderer, action, lView, tNode, parentRElement, beforeNode);\n }\n else {\n ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */);\n applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode);\n }\n }\n tNode = isProjection ? tNode.projectionNext : tNode.next;\n }\n}\nfunction applyView(tView, lView, renderer, action, parentRElement, beforeNode) {\n applyNodes(renderer, action, tView.firstChild, lView, parentRElement, beforeNode, false);\n}\n/**\n * `applyProjection` performs operation on the projection.\n *\n * Inserting a projection requires us to locate the projected nodes from the parent component. The\n * complication is that those nodes themselves could be re-projected from their parent component.\n *\n * @param tView The `TView` of `LView` which needs to be inserted, detached, destroyed\n * @param lView The `LView` which needs to be inserted, detached, destroyed.\n * @param tProjectionNode node to project\n */\nfunction applyProjection(tView, lView, tProjectionNode) {\n const renderer = lView[RENDERER];\n const parentRNode = getParentRElement(tView, tProjectionNode, lView);\n const parentTNode = tProjectionNode.parent || lView[T_HOST];\n let beforeNode = getInsertInFrontOfRNode(parentTNode, tProjectionNode, lView);\n applyProjectionRecursive(renderer, 0 /* WalkTNodeTreeAction.Create */, lView, tProjectionNode, parentRNode, beforeNode);\n}\n/**\n * `applyProjectionRecursive` performs operation on the projection specified by `action` (insert,\n * detach, destroy)\n *\n * Inserting a projection requires us to locate the projected nodes from the parent component. The\n * complication is that those nodes themselves could be re-projected from their parent component.\n *\n * @param renderer Render to use\n * @param action action to perform (insert, detach, destroy)\n * @param lView The LView which needs to be inserted, detached, destroyed.\n * @param tProjectionNode node to project\n * @param parentRElement parent DOM element for insertion/removal.\n * @param beforeNode Before which node the insertions should happen.\n */\nfunction applyProjectionRecursive(renderer, action, lView, tProjectionNode, parentRElement, beforeNode) {\n const componentLView = lView[DECLARATION_COMPONENT_VIEW];\n const componentNode = componentLView[T_HOST];\n ngDevMode &&\n assertEqual(typeof tProjectionNode.projection, 'number', 'expecting projection index');\n const nodeToProjectOrRNodes = componentNode.projection[tProjectionNode.projection];\n if (Array.isArray(nodeToProjectOrRNodes)) {\n // This should not exist, it is a bit of a hack. When we bootstrap a top level node and we\n // need to support passing projectable nodes, so we cheat and put them in the TNode\n // of the Host TView. (Yes we put instance info at the T Level). We can get away with it\n // because we know that that TView is not shared and therefore it will not be a problem.\n // This should be refactored and cleaned up.\n for (let i = 0; i < nodeToProjectOrRNodes.length; i++) {\n const rNode = nodeToProjectOrRNodes[i];\n applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode);\n }\n }\n else {\n let nodeToProject = nodeToProjectOrRNodes;\n const projectedComponentLView = componentLView[PARENT];\n // If a parent <ng-content> is located within a skip hydration block,\n // annotate an actual node that is being projected with the same flag too.\n if (hasInSkipHydrationBlockFlag(tProjectionNode)) {\n nodeToProject.flags |= 128 /* TNodeFlags.inSkipHydrationBlock */;\n }\n applyNodes(renderer, action, nodeToProject, projectedComponentLView, parentRElement, beforeNode, true);\n }\n}\n/**\n * `applyContainer` performs an operation on the container and its views as specified by\n * `action` (insert, detach, destroy)\n *\n * Inserting a Container is complicated by the fact that the container may have Views which\n * themselves have containers or projections.\n *\n * @param renderer Renderer to use\n * @param action action to perform (insert, detach, destroy)\n * @param lContainer The LContainer which needs to be inserted, detached, destroyed.\n * @param parentRElement parent DOM element for insertion/removal.\n * @param beforeNode Before which node the insertions should happen.\n */\nfunction applyContainer(renderer, action, lContainer, parentRElement, beforeNode) {\n ngDevMode && assertLContainer(lContainer);\n const anchor = lContainer[NATIVE]; // LContainer has its own before node.\n const native = unwrapRNode(lContainer);\n // An LContainer can be created dynamically on any node by injecting ViewContainerRef.\n // Asking for a ViewContainerRef on an element will result in a creation of a separate anchor\n // node (comment in the DOM) that will be different from the LContainer's host node. In this\n // particular case we need to execute action on 2 nodes:\n // - container's host node (this is done in the executeActionOnElementOrContainer)\n // - container's host node (this is done here)\n if (anchor !== native) {\n // This is very strange to me (Misko). I would expect that the native is same as anchor. I\n // don't see a reason why they should be different, but they are.\n //\n // If they are we need to process the second anchor as well.\n applyToElementOrContainer(action, renderer, parentRElement, anchor, beforeNode);\n }\n for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {\n const lView = lContainer[i];\n applyView(lView[TVIEW], lView, renderer, action, parentRElement, anchor);\n }\n}\n/**\n * Writes class/style to element.\n *\n * @param renderer Renderer to use.\n * @param isClassBased `true` if it should be written to `class` (`false` to write to `style`)\n * @param rNode The Node to write to.\n * @param prop Property to write to. This would be the class/style name.\n * @param value Value to write. If `null`/`undefined`/`false` this is considered a remove (set/add\n * otherwise).\n */\nfunction applyStyling(renderer, isClassBased, rNode, prop, value) {\n if (isClassBased) {\n // We actually want JS true/false here because any truthy value should add the class\n if (!value) {\n ngDevMode && ngDevMode.rendererRemoveClass++;\n renderer.removeClass(rNode, prop);\n }\n else {\n ngDevMode && ngDevMode.rendererAddClass++;\n renderer.addClass(rNode, prop);\n }\n }\n else {\n let flags = prop.indexOf('-') === -1 ? undefined : RendererStyleFlags2.DashCase;\n if (value == null /** || value === undefined */) {\n ngDevMode && ngDevMode.rendererRemoveStyle++;\n renderer.removeStyle(rNode, prop, flags);\n }\n else {\n // A value is important if it ends with `!important`. The style\n // parser strips any semicolons at the end of the value.\n const isImportant = typeof value === 'string' ? value.endsWith('!important') : false;\n if (isImportant) {\n // !important has to be stripped from the value for it to be valid.\n value = value.slice(0, -10);\n flags |= RendererStyleFlags2.Important;\n }\n ngDevMode && ngDevMode.rendererSetStyle++;\n renderer.setStyle(rNode, prop, value, flags);\n }\n }\n}\n/**\n * Write `cssText` to `RElement`.\n *\n * This function does direct write without any reconciliation. Used for writing initial values, so\n * that static styling values do not pull in the style parser.\n *\n * @param renderer Renderer to use\n * @param element The element which needs to be updated.\n * @param newValue The new class list to write.\n */\nfunction writeDirectStyle(renderer, element, newValue) {\n ngDevMode && assertString(newValue, '\\'newValue\\' should be a string');\n renderer.setAttribute(element, 'style', newValue);\n ngDevMode && ngDevMode.rendererSetStyle++;\n}\n/**\n * Write `className` to `RElement`.\n *\n * This function does direct write without any reconciliation. Used for writing initial values, so\n * that static styling values do not pull in the style parser.\n *\n * @param renderer Renderer to use\n * @param element The element which needs to be updated.\n * @param newValue The new class list to write.\n */\nfunction writeDirectClass(renderer, element, newValue) {\n ngDevMode && assertString(newValue, '\\'newValue\\' should be a string');\n if (newValue === '') {\n // There are tests in `google3` which expect `element.getAttribute('class')` to be `null`.\n renderer.removeAttribute(element, 'class');\n }\n else {\n renderer.setAttribute(element, 'class', newValue);\n }\n ngDevMode && ngDevMode.rendererSetClassName++;\n}\n/** Sets up the static DOM attributes on an `RNode`. */\nfunction setupStaticAttributes(renderer, element, tNode) {\n const { mergedAttrs, classes, styles } = tNode;\n if (mergedAttrs !== null) {\n setUpAttributes(renderer, element, mergedAttrs);\n }\n if (classes !== null) {\n writeDirectClass(renderer, element, classes);\n }\n if (styles !== null) {\n writeDirectStyle(renderer, element, styles);\n }\n}\n\n/**\n * @fileoverview\n * A module to facilitate use of a Trusted Types policy internally within\n * Angular. It lazily constructs the Trusted Types policy, providing helper\n * utilities for promoting strings to Trusted Types. When Trusted Types are not\n * available, strings are used as a fallback.\n * @security All use of this module is security-sensitive and should go through\n * security review.\n */\n/**\n * The Trusted Types policy, or null if Trusted Types are not\n * enabled/supported, or undefined if the policy has not been created yet.\n */\nlet policy$1;\n/**\n * Returns the Trusted Types policy, or null if Trusted Types are not\n * enabled/supported. The first call to this function will create the policy.\n */\nfunction getPolicy$1() {\n if (policy$1 === undefined) {\n policy$1 = null;\n if (_global.trustedTypes) {\n try {\n policy$1 = _global.trustedTypes.createPolicy('angular', {\n createHTML: (s) => s,\n createScript: (s) => s,\n createScriptURL: (s) => s,\n });\n }\n catch {\n // trustedTypes.createPolicy throws if called with a name that is\n // already registered, even in report-only mode. Until the API changes,\n // catch the error not to break the applications functionally. In such\n // cases, the code will fall back to using strings.\n }\n }\n }\n return policy$1;\n}\n/**\n * Unsafely promote a string to a TrustedHTML, falling back to strings when\n * Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that the\n * provided string will never cause an XSS vulnerability if used in a context\n * that will be interpreted as HTML by a browser, e.g. when assigning to\n * element.innerHTML.\n */\nfunction trustedHTMLFromString(html) {\n return getPolicy$1()?.createHTML(html) || html;\n}\n/**\n * Unsafely promote a string to a TrustedScript, falling back to strings when\n * Trusted Types are not available.\n * @security In particular, it must be assured that the provided string will\n * never cause an XSS vulnerability if used in a context that will be\n * interpreted and executed as a script by a browser, e.g. when calling eval.\n */\nfunction trustedScriptFromString(script) {\n return getPolicy$1()?.createScript(script) || script;\n}\n/**\n * Unsafely promote a string to a TrustedScriptURL, falling back to strings\n * when Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that the\n * provided string will never cause an XSS vulnerability if used in a context\n * that will cause a browser to load and execute a resource, e.g. when\n * assigning to script.src.\n */\nfunction trustedScriptURLFromString(url) {\n return getPolicy$1()?.createScriptURL(url) || url;\n}\n/**\n * Unsafely call the Function constructor with the given string arguments. It\n * is only available in development mode, and should be stripped out of\n * production code.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only called from development code, as use in production code can lead to\n * XSS vulnerabilities.\n */\nfunction newTrustedFunctionForDev(...args) {\n if (typeof ngDevMode === 'undefined') {\n throw new Error('newTrustedFunctionForDev should never be called in production');\n }\n if (!_global.trustedTypes) {\n // In environments that don't support Trusted Types, fall back to the most\n // straightforward implementation:\n return new Function(...args);\n }\n // Chrome currently does not support passing TrustedScript to the Function\n // constructor. The following implements the workaround proposed on the page\n // below, where the Chromium bug is also referenced:\n // https://github.com/w3c/webappsec-trusted-types/wiki/Trusted-Types-for-function-constructor\n const fnArgs = args.slice(0, -1).join(',');\n const fnBody = args[args.length - 1];\n const body = `(function anonymous(${fnArgs}\n) { ${fnBody}\n})`;\n // Using eval directly confuses the compiler and prevents this module from\n // being stripped out of JS binaries even if not used. The global['eval']\n // indirection fixes that.\n const fn = _global['eval'](trustedScriptFromString(body));\n if (fn.bind === undefined) {\n // Workaround for a browser bug that only exists in Chrome 83, where passing\n // a TrustedScript to eval just returns the TrustedScript back without\n // evaluating it. In that case, fall back to the most straightforward\n // implementation:\n return new Function(...args);\n }\n // To completely mimic the behavior of calling \"new Function\", two more\n // things need to happen:\n // 1. Stringifying the resulting function should return its source code\n fn.toString = () => body;\n // 2. When calling the resulting function, `this` should refer to `global`\n return fn.bind(_global);\n // When Trusted Types support in Function constructors is widely available,\n // the implementation of this function can be simplified to:\n // return new Function(...args.map(a => trustedScriptFromString(a)));\n}\n\n/**\n * Validation function invoked at runtime for each binding that might potentially\n * represent a security-sensitive attribute of an <iframe>.\n * See `IFRAME_SECURITY_SENSITIVE_ATTRS` in the\n * `packages/compiler/src/schema/dom_security_schema.ts` script for the full list\n * of such attributes.\n *\n * @codeGenApi\n */\nfunction ɵɵvalidateIframeAttribute(attrValue, tagName, attrName) {\n const lView = getLView();\n const tNode = getSelectedTNode();\n const element = getNativeByTNode(tNode, lView);\n // Restrict any dynamic bindings of security-sensitive attributes/properties\n // on an <iframe> for security reasons.\n if (tNode.type === 2 /* TNodeType.Element */ && tagName.toLowerCase() === 'iframe') {\n const iframe = element;\n // Unset previously applied `src` and `srcdoc` if we come across a situation when\n // a security-sensitive attribute is set later via an attribute/property binding.\n iframe.src = '';\n iframe.srcdoc = trustedHTMLFromString('');\n // Also remove the <iframe> from the document.\n nativeRemoveNode(lView[RENDERER], iframe);\n const errorMessage = ngDevMode &&\n `Angular has detected that the \\`${attrName}\\` was applied ` +\n `as a binding to an <iframe>${getTemplateLocationDetails(lView)}. ` +\n `For security reasons, the \\`${attrName}\\` can be set on an <iframe> ` +\n `as a static attribute only. \\n` +\n `To fix this, switch the \\`${attrName}\\` binding to a static attribute ` +\n `in a template or in host bindings section.`;\n throw new RuntimeError(-910 /* RuntimeErrorCode.UNSAFE_IFRAME_ATTRS */, errorMessage);\n }\n return attrValue;\n}\n\n/**\n * Most of the use of `document` in Angular is from within the DI system so it is possible to simply\n * inject the `DOCUMENT` token and are done.\n *\n * Ivy is special because it does not rely upon the DI and must get hold of the document some other\n * way.\n *\n * The solution is to define `getDocument()` and `setDocument()` top-level functions for ivy.\n * Wherever ivy needs the global document, it calls `getDocument()` instead.\n *\n * When running ivy outside of a browser environment, it is necessary to call `setDocument()` to\n * tell ivy what the global `document` is.\n *\n * Angular does this for us in each of the standard platforms (`Browser` and `Server`)\n * by calling `setDocument()` when providing the `DOCUMENT` token.\n */\nlet DOCUMENT = undefined;\n/**\n * Tell ivy what the `document` is for this platform.\n *\n * It is only necessary to call this if the current platform is not a browser.\n *\n * @param document The object representing the global `document` in this environment.\n */\nfunction setDocument(document) {\n DOCUMENT = document;\n}\n/**\n * Access the object that represents the `document` for this platform.\n *\n * Ivy calls this whenever it needs to access the `document` object.\n * For example to create the renderer or to do sanitization.\n */\nfunction getDocument() {\n if (DOCUMENT !== undefined) {\n return DOCUMENT;\n }\n else if (typeof document !== 'undefined') {\n return document;\n }\n throw new RuntimeError(210 /* RuntimeErrorCode.MISSING_DOCUMENT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `The document object is not available in this context. Make sure the DOCUMENT injection token is provided.`);\n // No \"document\" can be found. This should only happen if we are running ivy outside Angular and\n // the current platform is not a browser. Since this is not a supported scenario at the moment\n // this should not happen in Angular apps.\n // Once we support running ivy outside of Angular we will need to publish `setDocument()` as a\n // public API.\n}\n\n/**\n * @fileoverview\n * A module to facilitate use of a Trusted Types policy internally within\n * Angular specifically for bypassSecurityTrust* and custom sanitizers. It\n * lazily constructs the Trusted Types policy, providing helper utilities for\n * promoting strings to Trusted Types. When Trusted Types are not available,\n * strings are used as a fallback.\n * @security All use of this module is security-sensitive and should go through\n * security review.\n */\n/**\n * The Trusted Types policy, or null if Trusted Types are not\n * enabled/supported, or undefined if the policy has not been created yet.\n */\nlet policy;\n/**\n * Returns the Trusted Types policy, or null if Trusted Types are not\n * enabled/supported. The first call to this function will create the policy.\n */\nfunction getPolicy() {\n if (policy === undefined) {\n policy = null;\n if (_global.trustedTypes) {\n try {\n policy = _global.trustedTypes\n .createPolicy('angular#unsafe-bypass', {\n createHTML: (s) => s,\n createScript: (s) => s,\n createScriptURL: (s) => s,\n });\n }\n catch {\n // trustedTypes.createPolicy throws if called with a name that is\n // already registered, even in report-only mode. Until the API changes,\n // catch the error not to break the applications functionally. In such\n // cases, the code will fall back to using strings.\n }\n }\n }\n return policy;\n}\n/**\n * Unsafely promote a string to a TrustedHTML, falling back to strings when\n * Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only passed strings that come directly from custom sanitizers or the\n * bypassSecurityTrust* functions.\n */\nfunction trustedHTMLFromStringBypass(html) {\n return getPolicy()?.createHTML(html) || html;\n}\n/**\n * Unsafely promote a string to a TrustedScript, falling back to strings when\n * Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only passed strings that come directly from custom sanitizers or the\n * bypassSecurityTrust* functions.\n */\nfunction trustedScriptFromStringBypass(script) {\n return getPolicy()?.createScript(script) || script;\n}\n/**\n * Unsafely promote a string to a TrustedScriptURL, falling back to strings\n * when Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only passed strings that come directly from custom sanitizers or the\n * bypassSecurityTrust* functions.\n */\nfunction trustedScriptURLFromStringBypass(url) {\n return getPolicy()?.createScriptURL(url) || url;\n}\n\nclass SafeValueImpl {\n constructor(changingThisBreaksApplicationSecurity) {\n this.changingThisBreaksApplicationSecurity = changingThisBreaksApplicationSecurity;\n }\n toString() {\n return `SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity}` +\n ` (see ${XSS_SECURITY_URL})`;\n }\n}\nclass SafeHtmlImpl extends SafeValueImpl {\n getTypeName() {\n return \"HTML\" /* BypassType.Html */;\n }\n}\nclass SafeStyleImpl extends SafeValueImpl {\n getTypeName() {\n return \"Style\" /* BypassType.Style */;\n }\n}\nclass SafeScriptImpl extends SafeValueImpl {\n getTypeName() {\n return \"Script\" /* BypassType.Script */;\n }\n}\nclass SafeUrlImpl extends SafeValueImpl {\n getTypeName() {\n return \"URL\" /* BypassType.Url */;\n }\n}\nclass SafeResourceUrlImpl extends SafeValueImpl {\n getTypeName() {\n return \"ResourceURL\" /* BypassType.ResourceUrl */;\n }\n}\nfunction unwrapSafeValue(value) {\n return value instanceof SafeValueImpl ? value.changingThisBreaksApplicationSecurity :\n value;\n}\nfunction allowSanitizationBypassAndThrow(value, type) {\n const actualType = getSanitizationBypassType(value);\n if (actualType != null && actualType !== type) {\n // Allow ResourceURLs in URL contexts, they are strictly more trusted.\n if (actualType === \"ResourceURL\" /* BypassType.ResourceUrl */ && type === \"URL\" /* BypassType.Url */)\n return true;\n throw new Error(`Required a safe ${type}, got a ${actualType} (see ${XSS_SECURITY_URL})`);\n }\n return actualType === type;\n}\nfunction getSanitizationBypassType(value) {\n return value instanceof SafeValueImpl && value.getTypeName() || null;\n}\n/**\n * Mark `html` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link htmlSanitizer} to be trusted implicitly.\n *\n * @param trustedHtml `html` string which needs to be implicitly trusted.\n * @returns a `html` which has been branded to be implicitly trusted.\n */\nfunction bypassSanitizationTrustHtml(trustedHtml) {\n return new SafeHtmlImpl(trustedHtml);\n}\n/**\n * Mark `style` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link styleSanitizer} to be trusted implicitly.\n *\n * @param trustedStyle `style` string which needs to be implicitly trusted.\n * @returns a `style` hich has been branded to be implicitly trusted.\n */\nfunction bypassSanitizationTrustStyle(trustedStyle) {\n return new SafeStyleImpl(trustedStyle);\n}\n/**\n * Mark `script` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link scriptSanitizer} to be trusted implicitly.\n *\n * @param trustedScript `script` string which needs to be implicitly trusted.\n * @returns a `script` which has been branded to be implicitly trusted.\n */\nfunction bypassSanitizationTrustScript(trustedScript) {\n return new SafeScriptImpl(trustedScript);\n}\n/**\n * Mark `url` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link urlSanitizer} to be trusted implicitly.\n *\n * @param trustedUrl `url` string which needs to be implicitly trusted.\n * @returns a `url` which has been branded to be implicitly trusted.\n */\nfunction bypassSanitizationTrustUrl(trustedUrl) {\n return new SafeUrlImpl(trustedUrl);\n}\n/**\n * Mark `url` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link resourceUrlSanitizer} to be trusted implicitly.\n *\n * @param trustedResourceUrl `url` string which needs to be implicitly trusted.\n * @returns a `url` which has been branded to be implicitly trusted.\n */\nfunction bypassSanitizationTrustResourceUrl(trustedResourceUrl) {\n return new SafeResourceUrlImpl(trustedResourceUrl);\n}\n\n/**\n * This helper is used to get hold of an inert tree of DOM elements containing dirty HTML\n * that needs sanitizing.\n * Depending upon browser support we use one of two strategies for doing this.\n * Default: DOMParser strategy\n * Fallback: InertDocument strategy\n */\nfunction getInertBodyHelper(defaultDoc) {\n const inertDocumentHelper = new InertDocumentHelper(defaultDoc);\n return isDOMParserAvailable() ? new DOMParserHelper(inertDocumentHelper) : inertDocumentHelper;\n}\n/**\n * Uses DOMParser to create and fill an inert body element.\n * This is the default strategy used in browsers that support it.\n */\nclass DOMParserHelper {\n constructor(inertDocumentHelper) {\n this.inertDocumentHelper = inertDocumentHelper;\n }\n getInertBodyElement(html) {\n // We add these extra elements to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the\n // `<head>` tag. Note that the `<body>` tag is closed implicitly to prevent unclosed tags\n // in `html` from consuming the otherwise explicit `</body>` tag.\n html = '<body><remove></remove>' + html;\n try {\n const body = new window.DOMParser()\n .parseFromString(trustedHTMLFromString(html), 'text/html')\n .body;\n if (body === null) {\n // In some browsers (e.g. Mozilla/5.0 iPad AppleWebKit Mobile) the `body` property only\n // becomes available in the following tick of the JS engine. In that case we fall back to\n // the `inertDocumentHelper` instead.\n return this.inertDocumentHelper.getInertBodyElement(html);\n }\n body.removeChild(body.firstChild);\n return body;\n }\n catch {\n return null;\n }\n }\n}\n/**\n * Use an HTML5 `template` element to create and fill an inert DOM element.\n * This is the fallback strategy if the browser does not support DOMParser.\n */\nclass InertDocumentHelper {\n constructor(defaultDoc) {\n this.defaultDoc = defaultDoc;\n this.inertDocument = this.defaultDoc.implementation.createHTMLDocument('sanitization-inert');\n }\n getInertBodyElement(html) {\n const templateEl = this.inertDocument.createElement('template');\n templateEl.innerHTML = trustedHTMLFromString(html);\n return templateEl;\n }\n}\n/**\n * We need to determine whether the DOMParser exists in the global context and\n * supports parsing HTML; HTML parsing support is not as wide as other formats, see\n * https://developer.mozilla.org/en-US/docs/Web/API/DOMParser#Browser_compatibility.\n *\n * @suppress {uselessCode}\n */\nfunction isDOMParserAvailable() {\n try {\n return !!new window.DOMParser().parseFromString(trustedHTMLFromString(''), 'text/html');\n }\n catch {\n return false;\n }\n}\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * This regular expression matches a subset of URLs that will not cause script\n * execution if used in URL context within a HTML document. Specifically, this\n * regular expression matches if:\n * (1) Either a protocol that is not javascript:, and that has valid characters\n * (alphanumeric or [+-.]).\n * (2) or no protocol. A protocol must be followed by a colon. The below\n * allows that by allowing colons only after one of the characters [/?#].\n * A colon after a hash (#) must be in the fragment.\n * Otherwise, a colon after a (?) must be in a query.\n * Otherwise, a colon after a single solidus (/) must be in a path.\n * Otherwise, a colon after a double solidus (//) must be in the authority\n * (before port).\n *\n * The pattern disallows &, used in HTML entity declarations before\n * one of the characters in [/?#]. This disallows HTML entities used in the\n * protocol name, which should never happen, e.g. \"http\" for \"http\".\n * It also disallows HTML entities in the first path part of a relative path,\n * e.g. \"foo<bar/baz\". Our existing escaping functions should not produce\n * that. More importantly, it disallows masking of a colon,\n * e.g. \"javascript:...\".\n *\n * This regular expression was taken from the Closure sanitization library.\n */\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\\/?#]*(?:[\\/?#]|$))/i;\nfunction _sanitizeUrl(url) {\n url = String(url);\n if (url.match(SAFE_URL_PATTERN))\n return url;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(`WARNING: sanitizing unsafe URL value ${url} (see ${XSS_SECURITY_URL})`);\n }\n return 'unsafe:' + url;\n}\n\nfunction tagSet(tags) {\n const res = {};\n for (const t of tags.split(','))\n res[t] = true;\n return res;\n}\nfunction merge(...sets) {\n const res = {};\n for (const s of sets) {\n for (const v in s) {\n if (s.hasOwnProperty(v))\n res[v] = true;\n }\n }\n return res;\n}\n// Good source of info about elements and attributes\n// https://html.spec.whatwg.org/#semantics\n// https://simon.html5.org/html-elements\n// Safe Void Elements - HTML5\n// https://html.spec.whatwg.org/#void-elements\nconst VOID_ELEMENTS = tagSet('area,br,col,hr,img,wbr');\n// Elements that you can, intentionally, leave open (and which close themselves)\n// https://html.spec.whatwg.org/#optional-tags\nconst OPTIONAL_END_TAG_BLOCK_ELEMENTS = tagSet('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr');\nconst OPTIONAL_END_TAG_INLINE_ELEMENTS = tagSet('rp,rt');\nconst OPTIONAL_END_TAG_ELEMENTS = merge(OPTIONAL_END_TAG_INLINE_ELEMENTS, OPTIONAL_END_TAG_BLOCK_ELEMENTS);\n// Safe Block Elements - HTML5\nconst BLOCK_ELEMENTS = merge(OPTIONAL_END_TAG_BLOCK_ELEMENTS, tagSet('address,article,' +\n 'aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +\n 'h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul'));\n// Inline Elements - HTML5\nconst INLINE_ELEMENTS = merge(OPTIONAL_END_TAG_INLINE_ELEMENTS, tagSet('a,abbr,acronym,audio,b,' +\n 'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,' +\n 'samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video'));\nconst VALID_ELEMENTS = merge(VOID_ELEMENTS, BLOCK_ELEMENTS, INLINE_ELEMENTS, OPTIONAL_END_TAG_ELEMENTS);\n// Attributes that have href and hence need to be sanitized\nconst URI_ATTRS = tagSet('background,cite,href,itemtype,longdesc,poster,src,xlink:href');\nconst HTML_ATTRS = tagSet('abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,' +\n 'compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,' +\n 'ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,' +\n 'scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,' +\n 'valign,value,vspace,width');\n// Accessibility attributes as per WAI-ARIA 1.1 (W3C Working Draft 14 December 2018)\nconst ARIA_ATTRS = tagSet('aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,' +\n 'aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,' +\n 'aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,' +\n 'aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,' +\n 'aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,' +\n 'aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,' +\n 'aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext');\n// NB: This currently consciously doesn't support SVG. SVG sanitization has had several security\n// issues in the past, so it seems safer to leave it out if possible. If support for binding SVG via\n// innerHTML is required, SVG attributes should be added here.\n// NB: Sanitization does not allow <form> elements or other active elements (<button> etc). Those\n// can be sanitized, but they increase security surface area without a legitimate use case, so they\n// are left out here.\nconst VALID_ATTRS = merge(URI_ATTRS, HTML_ATTRS, ARIA_ATTRS);\n// Elements whose content should not be traversed/preserved, if the elements themselves are invalid.\n//\n// Typically, `<invalid>Some content</invalid>` would traverse (and in this case preserve)\n// `Some content`, but strip `invalid-element` opening/closing tags. For some elements, though, we\n// don't want to preserve the content, if the elements themselves are going to be removed.\nconst SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS = tagSet('script,style,template');\n/**\n * SanitizingHtmlSerializer serializes a DOM fragment, stripping out any unsafe elements and unsafe\n * attributes.\n */\nclass SanitizingHtmlSerializer {\n constructor() {\n // Explicitly track if something was stripped, to avoid accidentally warning of sanitization just\n // because characters were re-encoded.\n this.sanitizedSomething = false;\n this.buf = [];\n }\n sanitizeChildren(el) {\n // This cannot use a TreeWalker, as it has to run on Angular's various DOM adapters.\n // However this code never accesses properties off of `document` before deleting its contents\n // again, so it shouldn't be vulnerable to DOM clobbering.\n let current = el.firstChild;\n let traverseContent = true;\n while (current) {\n if (current.nodeType === Node.ELEMENT_NODE) {\n traverseContent = this.startElement(current);\n }\n else if (current.nodeType === Node.TEXT_NODE) {\n this.chars(current.nodeValue);\n }\n else {\n // Strip non-element, non-text nodes.\n this.sanitizedSomething = true;\n }\n if (traverseContent && current.firstChild) {\n current = current.firstChild;\n continue;\n }\n while (current) {\n // Leaving the element. Walk up and to the right, closing tags as we go.\n if (current.nodeType === Node.ELEMENT_NODE) {\n this.endElement(current);\n }\n let next = this.checkClobberedElement(current, current.nextSibling);\n if (next) {\n current = next;\n break;\n }\n current = this.checkClobberedElement(current, current.parentNode);\n }\n }\n return this.buf.join('');\n }\n /**\n * Sanitizes an opening element tag (if valid) and returns whether the element's contents should\n * be traversed. Element content must always be traversed (even if the element itself is not\n * valid/safe), unless the element is one of `SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS`.\n *\n * @param element The element to sanitize.\n * @return True if the element's contents should be traversed.\n */\n startElement(element) {\n const tagName = element.nodeName.toLowerCase();\n if (!VALID_ELEMENTS.hasOwnProperty(tagName)) {\n this.sanitizedSomething = true;\n return !SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS.hasOwnProperty(tagName);\n }\n this.buf.push('<');\n this.buf.push(tagName);\n const elAttrs = element.attributes;\n for (let i = 0; i < elAttrs.length; i++) {\n const elAttr = elAttrs.item(i);\n const attrName = elAttr.name;\n const lower = attrName.toLowerCase();\n if (!VALID_ATTRS.hasOwnProperty(lower)) {\n this.sanitizedSomething = true;\n continue;\n }\n let value = elAttr.value;\n // TODO(martinprobst): Special case image URIs for data:image/...\n if (URI_ATTRS[lower])\n value = _sanitizeUrl(value);\n this.buf.push(' ', attrName, '=\"', encodeEntities(value), '\"');\n }\n this.buf.push('>');\n return true;\n }\n endElement(current) {\n const tagName = current.nodeName.toLowerCase();\n if (VALID_ELEMENTS.hasOwnProperty(tagName) && !VOID_ELEMENTS.hasOwnProperty(tagName)) {\n this.buf.push('</');\n this.buf.push(tagName);\n this.buf.push('>');\n }\n }\n chars(chars) {\n this.buf.push(encodeEntities(chars));\n }\n checkClobberedElement(node, nextNode) {\n if (nextNode &&\n (node.compareDocumentPosition(nextNode) &\n Node.DOCUMENT_POSITION_CONTAINED_BY) === Node.DOCUMENT_POSITION_CONTAINED_BY) {\n throw new Error(`Failed to sanitize html because the element is clobbered: ${node.outerHTML}`);\n }\n return nextNode;\n }\n}\n// Regular Expressions for parsing tags and attributes\nconst SURROGATE_PAIR_REGEXP = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n// ! to ~ is the ASCII range.\nconst NON_ALPHANUMERIC_REGEXP = /([^\\#-~ |!])/g;\n/**\n * Escapes all potentially dangerous characters, so that the\n * resulting string can be safely inserted into attribute or\n * element text.\n * @param value\n */\nfunction encodeEntities(value) {\n return value.replace(/&/g, '&')\n .replace(SURROGATE_PAIR_REGEXP, function (match) {\n const hi = match.charCodeAt(0);\n const low = match.charCodeAt(1);\n return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\n })\n .replace(NON_ALPHANUMERIC_REGEXP, function (match) {\n return '&#' + match.charCodeAt(0) + ';';\n })\n .replace(/</g, '<')\n .replace(/>/g, '>');\n}\nlet inertBodyHelper;\n/**\n * Sanitizes the given unsafe, untrusted HTML fragment, and returns HTML text that is safe to add to\n * the DOM in a browser environment.\n */\nfunction _sanitizeHtml(defaultDoc, unsafeHtmlInput) {\n let inertBodyElement = null;\n try {\n inertBodyHelper = inertBodyHelper || getInertBodyHelper(defaultDoc);\n // Make sure unsafeHtml is actually a string (TypeScript types are not enforced at runtime).\n let unsafeHtml = unsafeHtmlInput ? String(unsafeHtmlInput) : '';\n inertBodyElement = inertBodyHelper.getInertBodyElement(unsafeHtml);\n // mXSS protection. Repeatedly parse the document to make sure it stabilizes, so that a browser\n // trying to auto-correct incorrect HTML cannot cause formerly inert HTML to become dangerous.\n let mXSSAttempts = 5;\n let parsedHtml = unsafeHtml;\n do {\n if (mXSSAttempts === 0) {\n throw new Error('Failed to sanitize html because the input is unstable');\n }\n mXSSAttempts--;\n unsafeHtml = parsedHtml;\n parsedHtml = inertBodyElement.innerHTML;\n inertBodyElement = inertBodyHelper.getInertBodyElement(unsafeHtml);\n } while (unsafeHtml !== parsedHtml);\n const sanitizer = new SanitizingHtmlSerializer();\n const safeHtml = sanitizer.sanitizeChildren(getTemplateContent(inertBodyElement) || inertBodyElement);\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && sanitizer.sanitizedSomething) {\n console.warn(`WARNING: sanitizing HTML stripped some content, see ${XSS_SECURITY_URL}`);\n }\n return trustedHTMLFromString(safeHtml);\n }\n finally {\n // In case anything goes wrong, clear out inertElement to reset the entire DOM structure.\n if (inertBodyElement) {\n const parent = getTemplateContent(inertBodyElement) || inertBodyElement;\n while (parent.firstChild) {\n parent.removeChild(parent.firstChild);\n }\n }\n }\n}\nfunction getTemplateContent(el) {\n return 'content' in el /** Microsoft/TypeScript#21517 */ && isTemplateElement(el) ?\n el.content :\n null;\n}\nfunction isTemplateElement(el) {\n return el.nodeType === Node.ELEMENT_NODE && el.nodeName === 'TEMPLATE';\n}\n\n/**\n * A SecurityContext marks a location that has dangerous security implications, e.g. a DOM property\n * like `innerHTML` that could cause Cross Site Scripting (XSS) security bugs when improperly\n * handled.\n *\n * See DomSanitizer for more details on security in Angular applications.\n *\n * @publicApi\n */\nvar SecurityContext;\n(function (SecurityContext) {\n SecurityContext[SecurityContext[\"NONE\"] = 0] = \"NONE\";\n SecurityContext[SecurityContext[\"HTML\"] = 1] = \"HTML\";\n SecurityContext[SecurityContext[\"STYLE\"] = 2] = \"STYLE\";\n SecurityContext[SecurityContext[\"SCRIPT\"] = 3] = \"SCRIPT\";\n SecurityContext[SecurityContext[\"URL\"] = 4] = \"URL\";\n SecurityContext[SecurityContext[\"RESOURCE_URL\"] = 5] = \"RESOURCE_URL\";\n})(SecurityContext || (SecurityContext = {}));\n\n/**\n * An `html` sanitizer which converts untrusted `html` **string** into trusted string by removing\n * dangerous content.\n *\n * This method parses the `html` and locates potentially dangerous content (such as urls and\n * javascript) and removes it.\n *\n * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustHtml}.\n *\n * @param unsafeHtml untrusted `html`, typically from the user.\n * @returns `html` string which is safe to display to user, because all of the dangerous javascript\n * and urls have been removed.\n *\n * @codeGenApi\n */\nfunction ɵɵsanitizeHtml(unsafeHtml) {\n const sanitizer = getSanitizer();\n if (sanitizer) {\n return trustedHTMLFromStringBypass(sanitizer.sanitize(SecurityContext.HTML, unsafeHtml) || '');\n }\n if (allowSanitizationBypassAndThrow(unsafeHtml, \"HTML\" /* BypassType.Html */)) {\n return trustedHTMLFromStringBypass(unwrapSafeValue(unsafeHtml));\n }\n return _sanitizeHtml(getDocument(), renderStringify(unsafeHtml));\n}\n/**\n * A `style` sanitizer which converts untrusted `style` **string** into trusted string by removing\n * dangerous content.\n *\n * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustStyle}.\n *\n * @param unsafeStyle untrusted `style`, typically from the user.\n * @returns `style` string which is safe to bind to the `style` properties.\n *\n * @codeGenApi\n */\nfunction ɵɵsanitizeStyle(unsafeStyle) {\n const sanitizer = getSanitizer();\n if (sanitizer) {\n return sanitizer.sanitize(SecurityContext.STYLE, unsafeStyle) || '';\n }\n if (allowSanitizationBypassAndThrow(unsafeStyle, \"Style\" /* BypassType.Style */)) {\n return unwrapSafeValue(unsafeStyle);\n }\n return renderStringify(unsafeStyle);\n}\n/**\n * A `url` sanitizer which converts untrusted `url` **string** into trusted string by removing\n * dangerous\n * content.\n *\n * This method parses the `url` and locates potentially dangerous content (such as javascript) and\n * removes it.\n *\n * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustUrl}.\n *\n * @param unsafeUrl untrusted `url`, typically from the user.\n * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because\n * all of the dangerous javascript has been removed.\n *\n * @codeGenApi\n */\nfunction ɵɵsanitizeUrl(unsafeUrl) {\n const sanitizer = getSanitizer();\n if (sanitizer) {\n return sanitizer.sanitize(SecurityContext.URL, unsafeUrl) || '';\n }\n if (allowSanitizationBypassAndThrow(unsafeUrl, \"URL\" /* BypassType.Url */)) {\n return unwrapSafeValue(unsafeUrl);\n }\n return _sanitizeUrl(renderStringify(unsafeUrl));\n}\n/**\n * A `url` sanitizer which only lets trusted `url`s through.\n *\n * This passes only `url`s marked trusted by calling {@link bypassSanitizationTrustResourceUrl}.\n *\n * @param unsafeResourceUrl untrusted `url`, typically from the user.\n * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because\n * only trusted `url`s have been allowed to pass.\n *\n * @codeGenApi\n */\nfunction ɵɵsanitizeResourceUrl(unsafeResourceUrl) {\n const sanitizer = getSanitizer();\n if (sanitizer) {\n return trustedScriptURLFromStringBypass(sanitizer.sanitize(SecurityContext.RESOURCE_URL, unsafeResourceUrl) || '');\n }\n if (allowSanitizationBypassAndThrow(unsafeResourceUrl, \"ResourceURL\" /* BypassType.ResourceUrl */)) {\n return trustedScriptURLFromStringBypass(unwrapSafeValue(unsafeResourceUrl));\n }\n throw new RuntimeError(904 /* RuntimeErrorCode.UNSAFE_VALUE_IN_RESOURCE_URL */, ngDevMode && `unsafe value used in a resource URL context (see ${XSS_SECURITY_URL})`);\n}\n/**\n * A `script` sanitizer which only lets trusted javascript through.\n *\n * This passes only `script`s marked trusted by calling {@link\n * bypassSanitizationTrustScript}.\n *\n * @param unsafeScript untrusted `script`, typically from the user.\n * @returns `url` string which is safe to bind to the `<script>` element such as `<img src>`,\n * because only trusted `scripts` have been allowed to pass.\n *\n * @codeGenApi\n */\nfunction ɵɵsanitizeScript(unsafeScript) {\n const sanitizer = getSanitizer();\n if (sanitizer) {\n return trustedScriptFromStringBypass(sanitizer.sanitize(SecurityContext.SCRIPT, unsafeScript) || '');\n }\n if (allowSanitizationBypassAndThrow(unsafeScript, \"Script\" /* BypassType.Script */)) {\n return trustedScriptFromStringBypass(unwrapSafeValue(unsafeScript));\n }\n throw new RuntimeError(905 /* RuntimeErrorCode.UNSAFE_VALUE_IN_SCRIPT */, ngDevMode && 'unsafe value used in a script context');\n}\n/**\n * A template tag function for promoting the associated constant literal to a\n * TrustedHTML. Interpolation is explicitly not allowed.\n *\n * @param html constant template literal containing trusted HTML.\n * @returns TrustedHTML wrapping `html`.\n *\n * @security This is a security-sensitive function and should only be used to\n * convert constant values of attributes and properties found in\n * application-provided Angular templates to TrustedHTML.\n *\n * @codeGenApi\n */\nfunction ɵɵtrustConstantHtml(html) {\n // The following runtime check ensures that the function was called as a\n // template tag (e.g. ɵɵtrustConstantHtml`content`), without any interpolation\n // (e.g. not ɵɵtrustConstantHtml`content ${variable}`). A TemplateStringsArray\n // is an array with a `raw` property that is also an array. The associated\n // template literal has no interpolation if and only if the length of the\n // TemplateStringsArray is 1.\n if (ngDevMode && (!Array.isArray(html) || !Array.isArray(html.raw) || html.length !== 1)) {\n throw new Error(`Unexpected interpolation in trusted HTML constant: ${html.join('?')}`);\n }\n return trustedHTMLFromString(html[0]);\n}\n/**\n * A template tag function for promoting the associated constant literal to a\n * TrustedScriptURL. Interpolation is explicitly not allowed.\n *\n * @param url constant template literal containing a trusted script URL.\n * @returns TrustedScriptURL wrapping `url`.\n *\n * @security This is a security-sensitive function and should only be used to\n * convert constant values of attributes and properties found in\n * application-provided Angular templates to TrustedScriptURL.\n *\n * @codeGenApi\n */\nfunction ɵɵtrustConstantResourceUrl(url) {\n // The following runtime check ensures that the function was called as a\n // template tag (e.g. ɵɵtrustConstantResourceUrl`content`), without any\n // interpolation (e.g. not ɵɵtrustConstantResourceUrl`content ${variable}`). A\n // TemplateStringsArray is an array with a `raw` property that is also an\n // array. The associated template literal has no interpolation if and only if\n // the length of the TemplateStringsArray is 1.\n if (ngDevMode && (!Array.isArray(url) || !Array.isArray(url.raw) || url.length !== 1)) {\n throw new Error(`Unexpected interpolation in trusted URL constant: ${url.join('?')}`);\n }\n return trustedScriptURLFromString(url[0]);\n}\n/**\n * Detects which sanitizer to use for URL property, based on tag name and prop name.\n *\n * The rules are based on the RESOURCE_URL context config from\n * `packages/compiler/src/schema/dom_security_schema.ts`.\n * If tag and prop names don't match Resource URL schema, use URL sanitizer.\n */\nfunction getUrlSanitizer(tag, prop) {\n if ((prop === 'src' &&\n (tag === 'embed' || tag === 'frame' || tag === 'iframe' || tag === 'media' ||\n tag === 'script')) ||\n (prop === 'href' && (tag === 'base' || tag === 'link'))) {\n return ɵɵsanitizeResourceUrl;\n }\n return ɵɵsanitizeUrl;\n}\n/**\n * Sanitizes URL, selecting sanitizer function based on tag and property names.\n *\n * This function is used in case we can't define security context at compile time, when only prop\n * name is available. This happens when we generate host bindings for Directives/Components. The\n * host element is unknown at compile time, so we defer calculation of specific sanitizer to\n * runtime.\n *\n * @param unsafeUrl untrusted `url`, typically from the user.\n * @param tag target element tag name.\n * @param prop name of the property that contains the value.\n * @returns `url` string which is safe to bind.\n *\n * @codeGenApi\n */\nfunction ɵɵsanitizeUrlOrResourceUrl(unsafeUrl, tag, prop) {\n return getUrlSanitizer(tag, prop)(unsafeUrl);\n}\nfunction validateAgainstEventProperties(name) {\n if (name.toLowerCase().startsWith('on')) {\n const errorMessage = `Binding to event property '${name}' is disallowed for security reasons, ` +\n `please use (${name.slice(2)})=...` +\n `\\nIf '${name}' is a directive input, make sure the directive is imported by the` +\n ` current module.`;\n throw new RuntimeError(306 /* RuntimeErrorCode.INVALID_EVENT_BINDING */, errorMessage);\n }\n}\nfunction validateAgainstEventAttributes(name) {\n if (name.toLowerCase().startsWith('on')) {\n const errorMessage = `Binding to event attribute '${name}' is disallowed for security reasons, ` +\n `please use (${name.slice(2)})=...`;\n throw new RuntimeError(306 /* RuntimeErrorCode.INVALID_EVENT_BINDING */, errorMessage);\n }\n}\nfunction getSanitizer() {\n const lView = getLView();\n return lView && lView[ENVIRONMENT].sanitizer;\n}\n\n/**\n * A multi-provider token for initialization functions that will run upon construction of an\n * environment injector.\n *\n * @publicApi\n */\nconst ENVIRONMENT_INITIALIZER = new InjectionToken('ENVIRONMENT_INITIALIZER');\n\n/**\n * An InjectionToken that gets the current `Injector` for `createInjector()`-style injectors.\n *\n * Requesting this token instead of `Injector` allows `StaticInjector` to be tree-shaken from a\n * project.\n *\n * @publicApi\n */\nconst INJECTOR = new InjectionToken('INJECTOR', \n// Disable tslint because this is const enum which gets inlined not top level prop access.\n// tslint:disable-next-line: no-toplevel-property-access\n-1 /* InjectorMarkers.Injector */);\n\nconst INJECTOR_DEF_TYPES = new InjectionToken('INJECTOR_DEF_TYPES');\n\nclass NullInjector {\n get(token, notFoundValue = THROW_IF_NOT_FOUND) {\n if (notFoundValue === THROW_IF_NOT_FOUND) {\n const error = new Error(`NullInjectorError: No provider for ${stringify(token)}!`);\n error.name = 'NullInjectorError';\n throw error;\n }\n return notFoundValue;\n }\n}\n\n/**\n * Wrap an array of `Provider`s into `EnvironmentProviders`, preventing them from being accidentally\n * referenced in `@Component` in a component injector.\n */\nfunction makeEnvironmentProviders(providers) {\n return {\n ɵproviders: providers,\n };\n}\n/**\n * Collects providers from all NgModules and standalone components, including transitively imported\n * ones.\n *\n * Providers extracted via `importProvidersFrom` are only usable in an application injector or\n * another environment injector (such as a route injector). They should not be used in component\n * providers.\n *\n * More information about standalone components can be found in [this\n * guide](guide/standalone-components).\n *\n * @usageNotes\n * The results of the `importProvidersFrom` call can be used in the `bootstrapApplication` call:\n *\n * ```typescript\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * importProvidersFrom(NgModuleOne, NgModuleTwo)\n * ]\n * });\n * ```\n *\n * You can also use the `importProvidersFrom` results in the `providers` field of a route, when a\n * standalone component is used:\n *\n * ```typescript\n * export const ROUTES: Route[] = [\n * {\n * path: 'foo',\n * providers: [\n * importProvidersFrom(NgModuleOne, NgModuleTwo)\n * ],\n * component: YourStandaloneComponent\n * }\n * ];\n * ```\n *\n * @returns Collected providers from the specified list of types.\n * @publicApi\n */\nfunction importProvidersFrom(...sources) {\n return {\n ɵproviders: internalImportProvidersFrom(true, sources),\n ɵfromNgModule: true,\n };\n}\nfunction internalImportProvidersFrom(checkForStandaloneCmp, ...sources) {\n const providersOut = [];\n const dedup = new Set(); // already seen types\n let injectorTypesWithProviders;\n const collectProviders = (provider) => {\n providersOut.push(provider);\n };\n deepForEach(sources, source => {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && checkForStandaloneCmp) {\n const cmpDef = getComponentDef(source);\n if (cmpDef?.standalone) {\n throw new RuntimeError(800 /* RuntimeErrorCode.IMPORT_PROVIDERS_FROM_STANDALONE */, `Importing providers supports NgModule or ModuleWithProviders but got a standalone component \"${stringifyForError(source)}\"`);\n }\n }\n // Narrow `source` to access the internal type analogue for `ModuleWithProviders`.\n const internalSource = source;\n if (walkProviderTree(internalSource, collectProviders, [], dedup)) {\n injectorTypesWithProviders ||= [];\n injectorTypesWithProviders.push(internalSource);\n }\n });\n // Collect all providers from `ModuleWithProviders` types.\n if (injectorTypesWithProviders !== undefined) {\n processInjectorTypesWithProviders(injectorTypesWithProviders, collectProviders);\n }\n return providersOut;\n}\n/**\n * Collects all providers from the list of `ModuleWithProviders` and appends them to the provided\n * array.\n */\nfunction processInjectorTypesWithProviders(typesWithProviders, visitor) {\n for (let i = 0; i < typesWithProviders.length; i++) {\n const { ngModule, providers } = typesWithProviders[i];\n deepForEachProvider(providers, provider => {\n ngDevMode && validateProvider(provider, providers || EMPTY_ARRAY, ngModule);\n visitor(provider, ngModule);\n });\n }\n}\n/**\n * The logic visits an `InjectorType`, an `InjectorTypeWithProviders`, or a standalone\n * `ComponentType`, and all of its transitive providers and collects providers.\n *\n * If an `InjectorTypeWithProviders` that declares providers besides the type is specified,\n * the function will return \"true\" to indicate that the providers of the type definition need\n * to be processed. This allows us to process providers of injector types after all imports of\n * an injector definition are processed. (following View Engine semantics: see FW-1349)\n */\nfunction walkProviderTree(container, visitor, parents, dedup) {\n container = resolveForwardRef(container);\n if (!container)\n return false;\n // The actual type which had the definition. Usually `container`, but may be an unwrapped type\n // from `InjectorTypeWithProviders`.\n let defType = null;\n let injDef = getInjectorDef(container);\n const cmpDef = !injDef && getComponentDef(container);\n if (!injDef && !cmpDef) {\n // `container` is not an injector type or a component type. It might be:\n // * An `InjectorTypeWithProviders` that wraps an injector type.\n // * A standalone directive or pipe that got pulled in from a standalone component's\n // dependencies.\n // Try to unwrap it as an `InjectorTypeWithProviders` first.\n const ngModule = container.ngModule;\n injDef = getInjectorDef(ngModule);\n if (injDef) {\n defType = ngModule;\n }\n else {\n // Not a component or injector type, so ignore it.\n return false;\n }\n }\n else if (cmpDef && !cmpDef.standalone) {\n return false;\n }\n else {\n defType = container;\n }\n // Check for circular dependencies.\n if (ngDevMode && parents.indexOf(defType) !== -1) {\n const defName = stringify(defType);\n const path = parents.map(stringify);\n throwCyclicDependencyError(defName, path);\n }\n // Check for multiple imports of the same module\n const isDuplicate = dedup.has(defType);\n if (cmpDef) {\n if (isDuplicate) {\n // This component definition has already been processed.\n return false;\n }\n dedup.add(defType);\n if (cmpDef.dependencies) {\n const deps = typeof cmpDef.dependencies === 'function' ? cmpDef.dependencies() : cmpDef.dependencies;\n for (const dep of deps) {\n walkProviderTree(dep, visitor, parents, dedup);\n }\n }\n }\n else if (injDef) {\n // First, include providers from any imports.\n if (injDef.imports != null && !isDuplicate) {\n // Before processing defType's imports, add it to the set of parents. This way, if it ends\n // up deeply importing itself, this can be detected.\n ngDevMode && parents.push(defType);\n // Add it to the set of dedups. This way we can detect multiple imports of the same module\n dedup.add(defType);\n let importTypesWithProviders;\n try {\n deepForEach(injDef.imports, imported => {\n if (walkProviderTree(imported, visitor, parents, dedup)) {\n importTypesWithProviders ||= [];\n // If the processed import is an injector type with providers, we store it in the\n // list of import types with providers, so that we can process those afterwards.\n importTypesWithProviders.push(imported);\n }\n });\n }\n finally {\n // Remove it from the parents set when finished.\n ngDevMode && parents.pop();\n }\n // Imports which are declared with providers (TypeWithProviders) need to be processed\n // after all imported modules are processed. This is similar to how View Engine\n // processes/merges module imports in the metadata resolver. See: FW-1349.\n if (importTypesWithProviders !== undefined) {\n processInjectorTypesWithProviders(importTypesWithProviders, visitor);\n }\n }\n if (!isDuplicate) {\n // Track the InjectorType and add a provider for it.\n // It's important that this is done after the def's imports.\n const factory = getFactoryDef(defType) || (() => new defType());\n // Append extra providers to make more info available for consumers (to retrieve an injector\n // type), as well as internally (to calculate an injection scope correctly and eagerly\n // instantiate a `defType` when an injector is created).\n // Provider to create `defType` using its factory.\n visitor({ provide: defType, useFactory: factory, deps: EMPTY_ARRAY }, defType);\n // Make this `defType` available to an internal logic that calculates injector scope.\n visitor({ provide: INJECTOR_DEF_TYPES, useValue: defType, multi: true }, defType);\n // Provider to eagerly instantiate `defType` via `INJECTOR_INITIALIZER`.\n visitor({ provide: ENVIRONMENT_INITIALIZER, useValue: () => ɵɵinject(defType), multi: true }, defType);\n }\n // Next, include providers listed on the definition itself.\n const defProviders = injDef.providers;\n if (defProviders != null && !isDuplicate) {\n const injectorType = container;\n deepForEachProvider(defProviders, provider => {\n ngDevMode && validateProvider(provider, defProviders, injectorType);\n visitor(provider, injectorType);\n });\n }\n }\n else {\n // Should not happen, but just in case.\n return false;\n }\n return (defType !== container &&\n container.providers !== undefined);\n}\nfunction validateProvider(provider, providers, containerType) {\n if (isTypeProvider(provider) || isValueProvider(provider) || isFactoryProvider(provider) ||\n isExistingProvider(provider)) {\n return;\n }\n // Here we expect the provider to be a `useClass` provider (by elimination).\n const classRef = resolveForwardRef(provider && (provider.useClass || provider.provide));\n if (!classRef) {\n throwInvalidProviderError(containerType, providers, provider);\n }\n}\nfunction deepForEachProvider(providers, fn) {\n for (let provider of providers) {\n if (isEnvironmentProviders(provider)) {\n provider = provider.ɵproviders;\n }\n if (Array.isArray(provider)) {\n deepForEachProvider(provider, fn);\n }\n else {\n fn(provider);\n }\n }\n}\nconst USE_VALUE$1 = getClosureSafeProperty({ provide: String, useValue: getClosureSafeProperty });\nfunction isValueProvider(value) {\n return value !== null && typeof value == 'object' && USE_VALUE$1 in value;\n}\nfunction isExistingProvider(value) {\n return !!(value && value.useExisting);\n}\nfunction isFactoryProvider(value) {\n return !!(value && value.useFactory);\n}\nfunction isTypeProvider(value) {\n return typeof value === 'function';\n}\nfunction isClassProvider(value) {\n return !!value.useClass;\n}\n\n/**\n * An internal token whose presence in an injector indicates that the injector should treat itself\n * as a root scoped injector when processing requests for unknown tokens which may indicate\n * they are provided in the root scope.\n */\nconst INJECTOR_SCOPE = new InjectionToken('Set Injector scope.');\n\n/**\n * Marker which indicates that a value has not yet been created from the factory function.\n */\nconst NOT_YET = {};\n/**\n * Marker which indicates that the factory function for a token is in the process of being called.\n *\n * If the injector is asked to inject a token with its value set to CIRCULAR, that indicates\n * injection of a dependency has recursively attempted to inject the original token, and there is\n * a circular dependency among the providers.\n */\nconst CIRCULAR = {};\n/**\n * A lazily initialized NullInjector.\n */\nlet NULL_INJECTOR = undefined;\nfunction getNullInjector() {\n if (NULL_INJECTOR === undefined) {\n NULL_INJECTOR = new NullInjector();\n }\n return NULL_INJECTOR;\n}\n/**\n * An `Injector` that's part of the environment injector hierarchy, which exists outside of the\n * component tree.\n */\nclass EnvironmentInjector {\n}\nclass R3Injector extends EnvironmentInjector {\n /**\n * Flag indicating that this injector was previously destroyed.\n */\n get destroyed() {\n return this._destroyed;\n }\n constructor(providers, parent, source, scopes) {\n super();\n this.parent = parent;\n this.source = source;\n this.scopes = scopes;\n /**\n * Map of tokens to records which contain the instances of those tokens.\n * - `null` value implies that we don't have the record. Used by tree-shakable injectors\n * to prevent further searches.\n */\n this.records = new Map();\n /**\n * Set of values instantiated by this injector which contain `ngOnDestroy` lifecycle hooks.\n */\n this._ngOnDestroyHooks = new Set();\n this._onDestroyHooks = [];\n this._destroyed = false;\n // Start off by creating Records for every provider.\n forEachSingleProvider(providers, provider => this.processProvider(provider));\n // Make sure the INJECTOR token provides this injector.\n this.records.set(INJECTOR, makeRecord(undefined, this));\n // And `EnvironmentInjector` if the current injector is supposed to be env-scoped.\n if (scopes.has('environment')) {\n this.records.set(EnvironmentInjector, makeRecord(undefined, this));\n }\n // Detect whether this injector has the APP_ROOT_SCOPE token and thus should provide\n // any injectable scoped to APP_ROOT_SCOPE.\n const record = this.records.get(INJECTOR_SCOPE);\n if (record != null && typeof record.value === 'string') {\n this.scopes.add(record.value);\n }\n this.injectorDefTypes =\n new Set(this.get(INJECTOR_DEF_TYPES.multi, EMPTY_ARRAY, InjectFlags.Self));\n }\n /**\n * Destroy the injector and release references to every instance or provider associated with it.\n *\n * Also calls the `OnDestroy` lifecycle hooks of every instance that was created for which a\n * hook was found.\n */\n destroy() {\n this.assertNotDestroyed();\n // Set destroyed = true first, in case lifecycle hooks re-enter destroy().\n this._destroyed = true;\n try {\n // Call all the lifecycle hooks.\n for (const service of this._ngOnDestroyHooks) {\n service.ngOnDestroy();\n }\n const onDestroyHooks = this._onDestroyHooks;\n // Reset the _onDestroyHooks array before iterating over it to prevent hooks that unregister\n // themselves from mutating the array during iteration.\n this._onDestroyHooks = [];\n for (const hook of onDestroyHooks) {\n hook();\n }\n }\n finally {\n // Release all references.\n this.records.clear();\n this._ngOnDestroyHooks.clear();\n this.injectorDefTypes.clear();\n }\n }\n onDestroy(callback) {\n this.assertNotDestroyed();\n this._onDestroyHooks.push(callback);\n return () => this.removeOnDestroy(callback);\n }\n runInContext(fn) {\n this.assertNotDestroyed();\n const previousInjector = setCurrentInjector(this);\n const previousInjectImplementation = setInjectImplementation(undefined);\n let prevInjectContext;\n if (ngDevMode) {\n prevInjectContext = setInjectorProfilerContext({ injector: this, token: null });\n }\n try {\n return fn();\n }\n finally {\n setCurrentInjector(previousInjector);\n setInjectImplementation(previousInjectImplementation);\n ngDevMode && setInjectorProfilerContext(prevInjectContext);\n }\n }\n get(token, notFoundValue = THROW_IF_NOT_FOUND, flags = InjectFlags.Default) {\n this.assertNotDestroyed();\n if (token.hasOwnProperty(NG_ENV_ID)) {\n return token[NG_ENV_ID](this);\n }\n flags = convertToBitFlags(flags);\n // Set the injection context.\n let prevInjectContext;\n if (ngDevMode) {\n prevInjectContext = setInjectorProfilerContext({ injector: this, token: token });\n }\n const previousInjector = setCurrentInjector(this);\n const previousInjectImplementation = setInjectImplementation(undefined);\n try {\n // Check for the SkipSelf flag.\n if (!(flags & InjectFlags.SkipSelf)) {\n // SkipSelf isn't set, check if the record belongs to this injector.\n let record = this.records.get(token);\n if (record === undefined) {\n // No record, but maybe the token is scoped to this injector. Look for an injectable\n // def with a scope matching this injector.\n const def = couldBeInjectableType(token) && getInjectableDef(token);\n if (def && this.injectableDefInScope(def)) {\n // Found an injectable def and it's scoped to this injector. Pretend as if it was here\n // all along.\n if (ngDevMode) {\n runInInjectorProfilerContext(this, token, () => {\n emitProviderConfiguredEvent(token);\n });\n }\n record = makeRecord(injectableDefOrInjectorDefFactory(token), NOT_YET);\n }\n else {\n record = null;\n }\n this.records.set(token, record);\n }\n // If a record was found, get the instance for it and return it.\n if (record != null /* NOT null || undefined */) {\n return this.hydrate(token, record);\n }\n }\n // Select the next injector based on the Self flag - if self is set, the next injector is\n // the NullInjector, otherwise it's the parent.\n const nextInjector = !(flags & InjectFlags.Self) ? this.parent : getNullInjector();\n // Set the notFoundValue based on the Optional flag - if optional is set and notFoundValue\n // is undefined, the value is null, otherwise it's the notFoundValue.\n notFoundValue = (flags & InjectFlags.Optional) && notFoundValue === THROW_IF_NOT_FOUND ?\n null :\n notFoundValue;\n return nextInjector.get(token, notFoundValue);\n }\n catch (e) {\n if (e.name === 'NullInjectorError') {\n const path = e[NG_TEMP_TOKEN_PATH] = e[NG_TEMP_TOKEN_PATH] || [];\n path.unshift(stringify(token));\n if (previousInjector) {\n // We still have a parent injector, keep throwing\n throw e;\n }\n else {\n // Format & throw the final error message when we don't have any previous injector\n return catchInjectorError(e, token, 'R3InjectorError', this.source);\n }\n }\n else {\n throw e;\n }\n }\n finally {\n // Lastly, restore the previous injection context.\n setInjectImplementation(previousInjectImplementation);\n setCurrentInjector(previousInjector);\n ngDevMode && setInjectorProfilerContext(prevInjectContext);\n }\n }\n /** @internal */\n resolveInjectorInitializers() {\n const previousInjector = setCurrentInjector(this);\n const previousInjectImplementation = setInjectImplementation(undefined);\n let prevInjectContext;\n if (ngDevMode) {\n prevInjectContext = setInjectorProfilerContext({ injector: this, token: null });\n }\n try {\n const initializers = this.get(ENVIRONMENT_INITIALIZER.multi, EMPTY_ARRAY, InjectFlags.Self);\n if (ngDevMode && !Array.isArray(initializers)) {\n throw new RuntimeError(-209 /* RuntimeErrorCode.INVALID_MULTI_PROVIDER */, 'Unexpected type of the `ENVIRONMENT_INITIALIZER` token value ' +\n `(expected an array, but got ${typeof initializers}). ` +\n 'Please check that the `ENVIRONMENT_INITIALIZER` token is configured as a ' +\n '`multi: true` provider.');\n }\n for (const initializer of initializers) {\n initializer();\n }\n }\n finally {\n setCurrentInjector(previousInjector);\n setInjectImplementation(previousInjectImplementation);\n ngDevMode && setInjectorProfilerContext(prevInjectContext);\n }\n }\n toString() {\n const tokens = [];\n const records = this.records;\n for (const token of records.keys()) {\n tokens.push(stringify(token));\n }\n return `R3Injector[${tokens.join(', ')}]`;\n }\n assertNotDestroyed() {\n if (this._destroyed) {\n throw new RuntimeError(205 /* RuntimeErrorCode.INJECTOR_ALREADY_DESTROYED */, ngDevMode && 'Injector has already been destroyed.');\n }\n }\n /**\n * Process a `SingleProvider` and add it.\n */\n processProvider(provider) {\n // Determine the token from the provider. Either it's its own token, or has a {provide: ...}\n // property.\n provider = resolveForwardRef(provider);\n let token = isTypeProvider(provider) ? provider : resolveForwardRef(provider && provider.provide);\n // Construct a `Record` for the provider.\n const record = providerToRecord(provider);\n if (ngDevMode) {\n runInInjectorProfilerContext(this, token, () => {\n // Emit InjectorProfilerEventType.Create if provider is a value provider because\n // these are the only providers that do not go through the value hydration logic\n // where this event would normally be emitted from.\n if (isValueProvider(provider)) {\n emitInstanceCreatedByInjectorEvent(provider.useValue);\n }\n emitProviderConfiguredEvent(provider);\n });\n }\n if (!isTypeProvider(provider) && provider.multi === true) {\n // If the provider indicates that it's a multi-provider, process it specially.\n // First check whether it's been defined already.\n let multiRecord = this.records.get(token);\n if (multiRecord) {\n // It has. Throw a nice error if\n if (ngDevMode && multiRecord.multi === undefined) {\n throwMixedMultiProviderError();\n }\n }\n else {\n multiRecord = makeRecord(undefined, NOT_YET, true);\n multiRecord.factory = () => injectArgs(multiRecord.multi);\n this.records.set(token, multiRecord);\n }\n token = provider;\n multiRecord.multi.push(provider);\n }\n else {\n const existing = this.records.get(token);\n if (ngDevMode && existing && existing.multi !== undefined) {\n throwMixedMultiProviderError();\n }\n }\n this.records.set(token, record);\n }\n hydrate(token, record) {\n if (ngDevMode && record.value === CIRCULAR) {\n throwCyclicDependencyError(stringify(token));\n }\n else if (record.value === NOT_YET) {\n record.value = CIRCULAR;\n if (ngDevMode) {\n runInInjectorProfilerContext(this, token, () => {\n record.value = record.factory();\n emitInstanceCreatedByInjectorEvent(record.value);\n });\n }\n else {\n record.value = record.factory();\n }\n }\n if (typeof record.value === 'object' && record.value && hasOnDestroy(record.value)) {\n this._ngOnDestroyHooks.add(record.value);\n }\n return record.value;\n }\n injectableDefInScope(def) {\n if (!def.providedIn) {\n return false;\n }\n const providedIn = resolveForwardRef(def.providedIn);\n if (typeof providedIn === 'string') {\n return providedIn === 'any' || (this.scopes.has(providedIn));\n }\n else {\n return this.injectorDefTypes.has(providedIn);\n }\n }\n removeOnDestroy(callback) {\n const destroyCBIdx = this._onDestroyHooks.indexOf(callback);\n if (destroyCBIdx !== -1) {\n this._onDestroyHooks.splice(destroyCBIdx, 1);\n }\n }\n}\nfunction injectableDefOrInjectorDefFactory(token) {\n // Most tokens will have an injectable def directly on them, which specifies a factory directly.\n const injectableDef = getInjectableDef(token);\n const factory = injectableDef !== null ? injectableDef.factory : getFactoryDef(token);\n if (factory !== null) {\n return factory;\n }\n // InjectionTokens should have an injectable def (ɵprov) and thus should be handled above.\n // If it's missing that, it's an error.\n if (token instanceof InjectionToken) {\n throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && `Token ${stringify(token)} is missing a ɵprov definition.`);\n }\n // Undecorated types can sometimes be created if they have no constructor arguments.\n if (token instanceof Function) {\n return getUndecoratedInjectableFactory(token);\n }\n // There was no way to resolve a factory for this token.\n throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && 'unreachable');\n}\nfunction getUndecoratedInjectableFactory(token) {\n // If the token has parameters then it has dependencies that we cannot resolve implicitly.\n const paramLength = token.length;\n if (paramLength > 0) {\n const args = newArray(paramLength, '?');\n throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && `Can't resolve all parameters for ${stringify(token)}: (${args.join(', ')}).`);\n }\n // The constructor function appears to have no parameters.\n // This might be because it inherits from a super-class. In which case, use an injectable\n // def from an ancestor if there is one.\n // Otherwise this really is a simple class with no dependencies, so return a factory that\n // just instantiates the zero-arg constructor.\n const inheritedInjectableDef = getInheritedInjectableDef(token);\n if (inheritedInjectableDef !== null) {\n return () => inheritedInjectableDef.factory(token);\n }\n else {\n return () => new token();\n }\n}\nfunction providerToRecord(provider) {\n if (isValueProvider(provider)) {\n return makeRecord(undefined, provider.useValue);\n }\n else {\n const factory = providerToFactory(provider);\n return makeRecord(factory, NOT_YET);\n }\n}\n/**\n * Converts a `SingleProvider` into a factory function.\n *\n * @param provider provider to convert to factory\n */\nfunction providerToFactory(provider, ngModuleType, providers) {\n let factory = undefined;\n if (ngDevMode && isEnvironmentProviders(provider)) {\n throwInvalidProviderError(undefined, providers, provider);\n }\n if (isTypeProvider(provider)) {\n const unwrappedProvider = resolveForwardRef(provider);\n return getFactoryDef(unwrappedProvider) || injectableDefOrInjectorDefFactory(unwrappedProvider);\n }\n else {\n if (isValueProvider(provider)) {\n factory = () => resolveForwardRef(provider.useValue);\n }\n else if (isFactoryProvider(provider)) {\n factory = () => provider.useFactory(...injectArgs(provider.deps || []));\n }\n else if (isExistingProvider(provider)) {\n factory = () => ɵɵinject(resolveForwardRef(provider.useExisting));\n }\n else {\n const classRef = resolveForwardRef(provider &&\n (provider.useClass || provider.provide));\n if (ngDevMode && !classRef) {\n throwInvalidProviderError(ngModuleType, providers, provider);\n }\n if (hasDeps(provider)) {\n factory = () => new (classRef)(...injectArgs(provider.deps));\n }\n else {\n return getFactoryDef(classRef) || injectableDefOrInjectorDefFactory(classRef);\n }\n }\n }\n return factory;\n}\nfunction makeRecord(factory, value, multi = false) {\n return {\n factory: factory,\n value: value,\n multi: multi ? [] : undefined,\n };\n}\nfunction hasDeps(value) {\n return !!value.deps;\n}\nfunction hasOnDestroy(value) {\n return value !== null && typeof value === 'object' &&\n typeof value.ngOnDestroy === 'function';\n}\nfunction couldBeInjectableType(value) {\n return (typeof value === 'function') ||\n (typeof value === 'object' && value instanceof InjectionToken);\n}\nfunction forEachSingleProvider(providers, fn) {\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n forEachSingleProvider(provider, fn);\n }\n else if (provider && isEnvironmentProviders(provider)) {\n forEachSingleProvider(provider.ɵproviders, fn);\n }\n else {\n fn(provider);\n }\n }\n}\n\n/**\n * A [DI token](guide/glossary#di-token \"DI token definition\") representing a string ID, used\n * primarily for prefixing application attributes and CSS styles when\n * {@link ViewEncapsulation#Emulated} is being used.\n *\n * The token is needed in cases when multiple applications are bootstrapped on a page\n * (for example, using `bootstrapApplication` calls). In this case, ensure that those applications\n * have different `APP_ID` value setup. For example:\n *\n * ```\n * bootstrapApplication(ComponentA, {\n * providers: [\n * { provide: APP_ID, useValue: 'app-a' },\n * // ... other providers ...\n * ]\n * });\n *\n * bootstrapApplication(ComponentB, {\n * providers: [\n * { provide: APP_ID, useValue: 'app-b' },\n * // ... other providers ...\n * ]\n * });\n * ```\n *\n * By default, when there is only one application bootstrapped, you don't need to provide the\n * `APP_ID` token (the `ng` will be used as an app ID).\n *\n * @publicApi\n */\nconst APP_ID = new InjectionToken('AppId', {\n providedIn: 'root',\n factory: () => DEFAULT_APP_ID,\n});\n/** Default value of the `APP_ID` token. */\nconst DEFAULT_APP_ID = 'ng';\n/**\n * A function that is executed when a platform is initialized.\n * @publicApi\n */\nconst PLATFORM_INITIALIZER = new InjectionToken('Platform Initializer');\n/**\n * A token that indicates an opaque platform ID.\n * @publicApi\n */\nconst PLATFORM_ID = new InjectionToken('Platform ID', {\n providedIn: 'platform',\n factory: () => 'unknown', // set a default platform name, when none set explicitly\n});\n/**\n * A [DI token](guide/glossary#di-token \"DI token definition\") that indicates the root directory of\n * the application\n * @publicApi\n * @deprecated\n */\nconst PACKAGE_ROOT_URL = new InjectionToken('Application Packages Root URL');\n// We keep this token here, rather than the animations package, so that modules that only care\n// about which animations module is loaded (e.g. the CDK) can retrieve it without having to\n// include extra dependencies. See #44970 for more context.\n/**\n * A [DI token](guide/glossary#di-token \"DI token definition\") that indicates which animations\n * module has been loaded.\n * @publicApi\n */\nconst ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');\n// TODO(crisbeto): link to CSP guide here.\n/**\n * Token used to configure the [Content Security Policy](https://web.dev/strict-csp/) nonce that\n * Angular will apply when inserting inline styles. If not provided, Angular will look up its value\n * from the `ngCspNonce` attribute of the application root node.\n *\n * @publicApi\n */\nconst CSP_NONCE = new InjectionToken('CSP nonce', {\n providedIn: 'root',\n factory: () => {\n // Ideally we wouldn't have to use `querySelector` here since we know that the nonce will be on\n // the root node, but because the token value is used in renderers, it has to be available\n // *very* early in the bootstrapping process. This should be a fairly shallow search, because\n // the app won't have been added to the DOM yet. Some approaches that were considered:\n // 1. Find the root node through `ApplicationRef.components[i].location` - normally this would\n // be enough for our purposes, but the token is injected very early so the `components` array\n // isn't populated yet.\n // 2. Find the root `LView` through the current `LView` - renderers are a prerequisite to\n // creating the `LView`. This means that no `LView` will have been entered when this factory is\n // invoked for the root component.\n // 3. Have the token factory return `() => string` which is invoked when a nonce is requested -\n // the slightly later execution does allow us to get an `LView` reference, but the fact that\n // it is a function means that it could be executed at *any* time (including immediately) which\n // may lead to weird bugs.\n // 4. Have the `ComponentFactory` read the attribute and provide it to the injector under the\n // hood - has the same problem as #1 and #2 in that the renderer is used to query for the root\n // node and the nonce value needs to be available when the renderer is created.\n return getDocument().body?.querySelector('[ngCspNonce]')?.getAttribute('ngCspNonce') || null;\n },\n});\n/**\n * Internal token to collect all SSR-related features enabled for this application.\n *\n * Note: the token is in `core` to let other packages register features (the `core`\n * package is imported in other packages).\n */\nconst ENABLED_SSR_FEATURES = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'ENABLED_SSR_FEATURES' : '', {\n providedIn: 'root',\n factory: () => new Set(),\n});\n\n/**\n * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.\n *\n * Example:\n *\n * ```\n * const COUNTER_KEY = makeStateKey<number>('counter');\n * let value = 10;\n *\n * transferState.set(COUNTER_KEY, value);\n * ```\n *\n * @publicApi\n */\nfunction makeStateKey(key) {\n return key;\n}\nfunction initTransferState() {\n const transferState = new TransferState();\n if (inject(PLATFORM_ID) === 'browser') {\n transferState.store = retrieveTransferredState(getDocument(), inject(APP_ID));\n }\n return transferState;\n}\n/**\n * A key value store that is transferred from the application on the server side to the application\n * on the client side.\n *\n * The `TransferState` is available as an injectable token.\n * On the client, just inject this token using DI and use it, it will be lazily initialized.\n * On the server it's already included if `renderApplication` function is used. Otherwise, import\n * the `ServerTransferStateModule` module to make the `TransferState` available.\n *\n * The values in the store are serialized/deserialized using JSON.stringify/JSON.parse. So only\n * boolean, number, string, null and non-class objects will be serialized and deserialized in a\n * non-lossy manner.\n *\n * @publicApi\n */\nclass TransferState {\n constructor() {\n /** @internal */\n this.store = {};\n this.onSerializeCallbacks = {};\n }\n /** @nocollapse */\n static { this.ɵprov = \n /** @pureOrBreakMyCode */ ɵɵdefineInjectable({\n token: TransferState,\n providedIn: 'root',\n factory: initTransferState,\n }); }\n /**\n * Get the value corresponding to a key. Return `defaultValue` if key is not found.\n */\n get(key, defaultValue) {\n return this.store[key] !== undefined ? this.store[key] : defaultValue;\n }\n /**\n * Set the value corresponding to a key.\n */\n set(key, value) {\n this.store[key] = value;\n }\n /**\n * Remove a key from the store.\n */\n remove(key) {\n delete this.store[key];\n }\n /**\n * Test whether a key exists in the store.\n */\n hasKey(key) {\n return this.store.hasOwnProperty(key);\n }\n /**\n * Indicates whether the state is empty.\n */\n get isEmpty() {\n return Object.keys(this.store).length === 0;\n }\n /**\n * Register a callback to provide the value for a key when `toJson` is called.\n */\n onSerialize(key, callback) {\n this.onSerializeCallbacks[key] = callback;\n }\n /**\n * Serialize the current state of the store to JSON.\n */\n toJson() {\n // Call the onSerialize callbacks and put those values into the store.\n for (const key in this.onSerializeCallbacks) {\n if (this.onSerializeCallbacks.hasOwnProperty(key)) {\n try {\n this.store[key] = this.onSerializeCallbacks[key]();\n }\n catch (e) {\n console.warn('Exception in onSerialize callback: ', e);\n }\n }\n }\n // Escape script tag to avoid break out of <script> tag in serialized output.\n // Encoding of `<` is the same behaviour as G3 script_builders.\n return JSON.stringify(this.store).replace(/</g, '\\\\u003C');\n }\n}\nfunction retrieveTransferredState(doc, appId) {\n // Locate the script tag with the JSON data transferred from the server.\n // The id of the script tag is set to the Angular appId + 'state'.\n const script = doc.getElementById(appId + '-state');\n if (script?.textContent) {\n try {\n // Avoid using any here as it triggers lint errors in google3 (any is not allowed).\n // Decoding of `<` is done of the box by browsers and node.js, same behaviour as G3\n // script_builders.\n return JSON.parse(script.textContent);\n }\n catch (e) {\n console.warn('Exception while restoring TransferState for app ' + appId, e);\n }\n }\n return {};\n}\n\n/** Encodes that the node lookup should start from the host node of this component. */\nconst REFERENCE_NODE_HOST = 'h';\n/** Encodes that the node lookup should start from the document body node. */\nconst REFERENCE_NODE_BODY = 'b';\n/**\n * Describes navigation steps that the runtime logic need to perform,\n * starting from a given (known) element.\n */\nvar NodeNavigationStep;\n(function (NodeNavigationStep) {\n NodeNavigationStep[\"FirstChild\"] = \"f\";\n NodeNavigationStep[\"NextSibling\"] = \"n\";\n})(NodeNavigationStep || (NodeNavigationStep = {}));\n/**\n * Keys within serialized view data structure to represent various\n * parts. See the `SerializedView` interface below for additional information.\n */\nconst ELEMENT_CONTAINERS = 'e';\nconst TEMPLATES = 't';\nconst CONTAINERS = 'c';\nconst MULTIPLIER = 'x';\nconst NUM_ROOT_NODES = 'r';\nconst TEMPLATE_ID = 'i'; // as it's also an \"id\"\nconst NODES = 'n';\nconst DISCONNECTED_NODES = 'd';\n\n/**\n * The name of the key used in the TransferState collection,\n * where hydration information is located.\n */\nconst TRANSFER_STATE_TOKEN_ID = '__ɵnghData__';\n/**\n * Lookup key used to reference DOM hydration data (ngh) in `TransferState`.\n */\nconst NGH_DATA_KEY = makeStateKey(TRANSFER_STATE_TOKEN_ID);\n/**\n * The name of the attribute that would be added to host component\n * nodes and contain a reference to a particular slot in transferred\n * state that contains the necessary hydration info for this component.\n */\nconst NGH_ATTR_NAME = 'ngh';\n/**\n * Marker used in a comment node to ensure hydration content integrity\n */\nconst SSR_CONTENT_INTEGRITY_MARKER = 'nghm';\n/**\n * Reference to a function that reads `ngh` attribute value from a given RNode\n * and retrieves hydration information from the TransferState using that value\n * as an index. Returns `null` by default, when hydration is not enabled.\n *\n * @param rNode Component's host element.\n * @param injector Injector that this component has access to.\n * @param isRootView Specifies whether we trying to read hydration info for the root view.\n */\nlet _retrieveHydrationInfoImpl = (rNode, injector, isRootView) => null;\nfunction retrieveHydrationInfoImpl(rNode, injector, isRootView = false) {\n let nghAttrValue = rNode.getAttribute(NGH_ATTR_NAME);\n if (nghAttrValue == null)\n return null;\n // For cases when a root component also acts as an anchor node for a ViewContainerRef\n // (for example, when ViewContainerRef is injected in a root component), there is a need\n // to serialize information about the component itself, as well as an LContainer that\n // represents this ViewContainerRef. Effectively, we need to serialize 2 pieces of info:\n // (1) hydration info for the root component itself and (2) hydration info for the\n // ViewContainerRef instance (an LContainer). Each piece of information is included into\n // the hydration data (in the TransferState object) separately, thus we end up with 2 ids.\n // Since we only have 1 root element, we encode both bits of info into a single string:\n // ids are separated by the `|` char (e.g. `10|25`, where `10` is the ngh for a component view\n // and 25 is the `ngh` for a root view which holds LContainer).\n const [componentViewNgh, rootViewNgh] = nghAttrValue.split('|');\n nghAttrValue = isRootView ? rootViewNgh : componentViewNgh;\n if (!nghAttrValue)\n return null;\n // We've read one of the ngh ids, keep the remaining one, so that\n // we can set it back on the DOM element.\n const remainingNgh = isRootView ? componentViewNgh : (rootViewNgh ? `|${rootViewNgh}` : '');\n let data = {};\n // An element might have an empty `ngh` attribute value (e.g. `<comp ngh=\"\" />`),\n // which means that no special annotations are required. Do not attempt to read\n // from the TransferState in this case.\n if (nghAttrValue !== '') {\n const transferState = injector.get(TransferState, null, { optional: true });\n if (transferState !== null) {\n const nghData = transferState.get(NGH_DATA_KEY, []);\n // The nghAttrValue is always a number referencing an index\n // in the hydration TransferState data.\n data = nghData[Number(nghAttrValue)];\n // If the `ngh` attribute exists and has a non-empty value,\n // the hydration info *must* be present in the TransferState.\n // If there is no data for some reasons, this is an error.\n ngDevMode && assertDefined(data, 'Unable to retrieve hydration info from the TransferState.');\n }\n }\n const dehydratedView = {\n data,\n firstChild: rNode.firstChild ?? null,\n };\n if (isRootView) {\n // If there is hydration info present for the root view, it means that there was\n // a ViewContainerRef injected in the root component. The root component host element\n // acted as an anchor node in this scenario. As a result, the DOM nodes that represent\n // embedded views in this ViewContainerRef are located as siblings to the host node,\n // i.e. `<app-root /><#VIEW1><#VIEW2>...<!--container-->`. In this case, the current\n // node becomes the first child of this root view and the next sibling is the first\n // element in the DOM segment.\n dehydratedView.firstChild = rNode;\n // We use `0` here, since this is the slot (right after the HEADER_OFFSET)\n // where a component LView or an LContainer is located in a root LView.\n setSegmentHead(dehydratedView, 0, rNode.nextSibling);\n }\n if (remainingNgh) {\n // If we have only used one of the ngh ids, store the remaining one\n // back on this RNode.\n rNode.setAttribute(NGH_ATTR_NAME, remainingNgh);\n }\n else {\n // The `ngh` attribute is cleared from the DOM node now\n // that the data has been retrieved for all indices.\n rNode.removeAttribute(NGH_ATTR_NAME);\n }\n // Note: don't check whether this node was claimed for hydration,\n // because this node might've been previously claimed while processing\n // template instructions.\n ngDevMode && markRNodeAsClaimedByHydration(rNode, /* checkIfAlreadyClaimed */ false);\n ngDevMode && ngDevMode.hydratedComponents++;\n return dehydratedView;\n}\n/**\n * Sets the implementation for the `retrieveHydrationInfo` function.\n */\nfunction enableRetrieveHydrationInfoImpl() {\n _retrieveHydrationInfoImpl = retrieveHydrationInfoImpl;\n}\n/**\n * Retrieves hydration info by reading the value from the `ngh` attribute\n * and accessing a corresponding slot in TransferState storage.\n */\nfunction retrieveHydrationInfo(rNode, injector, isRootView = false) {\n return _retrieveHydrationInfoImpl(rNode, injector, isRootView);\n}\n/**\n * Retrieves the necessary object from a given ViewRef to serialize:\n * - an LView for component views\n * - an LContainer for cases when component acts as a ViewContainerRef anchor\n * - `null` in case of an embedded view\n */\nfunction getLNodeForHydration(viewRef) {\n // Reading an internal field from `ViewRef` instance.\n let lView = viewRef._lView;\n const tView = lView[TVIEW];\n // A registered ViewRef might represent an instance of an\n // embedded view, in which case we do not need to annotate it.\n if (tView.type === 2 /* TViewType.Embedded */) {\n return null;\n }\n // Check if it's a root view and if so, retrieve component's\n // LView from the first slot after the header.\n if (isRootView(lView)) {\n lView = lView[HEADER_OFFSET];\n }\n return lView;\n}\nfunction getTextNodeContent(node) {\n return node.textContent?.replace(/\\s/gm, '');\n}\n/**\n * Restores text nodes and separators into the DOM that were lost during SSR\n * serialization. The hydration process replaces empty text nodes and text\n * nodes that are immediately adjacent to other text nodes with comment nodes\n * that this method filters on to restore those missing nodes that the\n * hydration process is expecting to be present.\n *\n * @param node The app's root HTML Element\n */\nfunction processTextNodeMarkersBeforeHydration(node) {\n const doc = getDocument();\n const commentNodesIterator = doc.createNodeIterator(node, NodeFilter.SHOW_COMMENT, {\n acceptNode(node) {\n const content = getTextNodeContent(node);\n const isTextNodeMarker = content === \"ngetn\" /* TextNodeMarker.EmptyNode */ || content === \"ngtns\" /* TextNodeMarker.Separator */;\n return isTextNodeMarker ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }\n });\n let currentNode;\n // We cannot modify the DOM while using the commentIterator,\n // because it throws off the iterator state.\n // So we collect all marker nodes first and then follow up with\n // applying the changes to the DOM: either inserting an empty node\n // or just removing the marker if it was used as a separator.\n const nodes = [];\n while (currentNode = commentNodesIterator.nextNode()) {\n nodes.push(currentNode);\n }\n for (const node of nodes) {\n if (node.textContent === \"ngetn\" /* TextNodeMarker.EmptyNode */) {\n node.replaceWith(doc.createTextNode(''));\n }\n else {\n node.remove();\n }\n }\n}\n/**\n * Marks a node as \"claimed\" by hydration process.\n * This is needed to make assessments in tests whether\n * the hydration process handled all nodes.\n */\nfunction markRNodeAsClaimedByHydration(node, checkIfAlreadyClaimed = true) {\n if (!ngDevMode) {\n throw new Error('Calling `markRNodeAsClaimedByHydration` in prod mode ' +\n 'is not supported and likely a mistake.');\n }\n if (checkIfAlreadyClaimed && isRNodeClaimedForHydration(node)) {\n throw new Error('Trying to claim a node, which was claimed already.');\n }\n node.__claimed = true;\n ngDevMode.hydratedNodes++;\n}\nfunction isRNodeClaimedForHydration(node) {\n return !!node.__claimed;\n}\nfunction setSegmentHead(hydrationInfo, index, node) {\n hydrationInfo.segmentHeads ??= {};\n hydrationInfo.segmentHeads[index] = node;\n}\nfunction getSegmentHead(hydrationInfo, index) {\n return hydrationInfo.segmentHeads?.[index] ?? null;\n}\n/**\n * Returns the size of an <ng-container>, using either the information\n * serialized in `ELEMENT_CONTAINERS` (element container size) or by\n * computing the sum of root nodes in all dehydrated views in a given\n * container (in case this `<ng-container>` was also used as a view\n * container host node, e.g. <ng-container *ngIf>).\n */\nfunction getNgContainerSize(hydrationInfo, index) {\n const data = hydrationInfo.data;\n let size = data[ELEMENT_CONTAINERS]?.[index] ?? null;\n // If there is no serialized information available in the `ELEMENT_CONTAINERS` slot,\n // check if we have info about view containers at this location (e.g.\n // `<ng-container *ngIf>`) and use container size as a number of root nodes in this\n // element container.\n if (size === null && data[CONTAINERS]?.[index]) {\n size = calcSerializedContainerSize(hydrationInfo, index);\n }\n return size;\n}\nfunction getSerializedContainerViews(hydrationInfo, index) {\n return hydrationInfo.data[CONTAINERS]?.[index] ?? null;\n}\n/**\n * Computes the size of a serialized container (the number of root nodes)\n * by calculating the sum of root nodes in all dehydrated views in this container.\n */\nfunction calcSerializedContainerSize(hydrationInfo, index) {\n const views = getSerializedContainerViews(hydrationInfo, index) ?? [];\n let numNodes = 0;\n for (let view of views) {\n numNodes += view[NUM_ROOT_NODES] * (view[MULTIPLIER] ?? 1);\n }\n return numNodes;\n}\n/**\n * Checks whether a node is annotated as \"disconnected\", i.e. not present\n * in the DOM at serialization time. We should not attempt hydration for\n * such nodes and instead, use a regular \"creation mode\".\n */\nfunction isDisconnectedNode$1(hydrationInfo, index) {\n // Check if we are processing disconnected info for the first time.\n if (typeof hydrationInfo.disconnectedNodes === 'undefined') {\n const nodeIds = hydrationInfo.data[DISCONNECTED_NODES];\n hydrationInfo.disconnectedNodes = nodeIds ? (new Set(nodeIds)) : null;\n }\n return !!hydrationInfo.disconnectedNodes?.has(index);\n}\n\n/**\n * Represents a component created by a `ComponentFactory`.\n * Provides access to the component instance and related objects,\n * and provides the means of destroying the instance.\n *\n * @publicApi\n */\nclass ComponentRef$1 {\n}\n/**\n * Base class for a factory that can create a component dynamically.\n * Instantiate a factory for a given type of component with `resolveComponentFactory()`.\n * Use the resulting `ComponentFactory.create()` method to create a component of that type.\n *\n * @see [Dynamic Components](guide/dynamic-component-loader)\n *\n * @publicApi\n *\n * @deprecated Angular no longer requires Component factories. Please use other APIs where\n * Component class can be used directly.\n */\nclass ComponentFactory$1 {\n}\n\nfunction noComponentFactoryError(component) {\n const error = Error(`No component factory found for ${stringify(component)}.`);\n error[ERROR_COMPONENT] = component;\n return error;\n}\nconst ERROR_COMPONENT = 'ngComponent';\nfunction getComponent$1(error) {\n return error[ERROR_COMPONENT];\n}\nclass _NullComponentFactoryResolver {\n resolveComponentFactory(component) {\n throw noComponentFactoryError(component);\n }\n}\n/**\n * A simple registry that maps `Components` to generated `ComponentFactory` classes\n * that can be used to create instances of components.\n * Use to obtain the factory for a given component type,\n * then use the factory's `create()` method to create a component of that type.\n *\n * Note: since v13, dynamic component creation via\n * [`ViewContainerRef.createComponent`](api/core/ViewContainerRef#createComponent)\n * does **not** require resolving component factory: component class can be used directly.\n *\n * @publicApi\n *\n * @deprecated Angular no longer requires Component factories. Please use other APIs where\n * Component class can be used directly.\n */\nclass ComponentFactoryResolver$1 {\n static { this.NULL = ( /* @__PURE__ */new _NullComponentFactoryResolver()); }\n}\n\n/**\n * Creates an ElementRef from the most recent node.\n *\n * @returns The ElementRef instance to use\n */\nfunction injectElementRef() {\n return createElementRef(getCurrentTNode(), getLView());\n}\n/**\n * Creates an ElementRef given a node.\n *\n * @param tNode The node for which you'd like an ElementRef\n * @param lView The view to which the node belongs\n * @returns The ElementRef instance to use\n */\nfunction createElementRef(tNode, lView) {\n return new ElementRef(getNativeByTNode(tNode, lView));\n}\n/**\n * A wrapper around a native element inside of a View.\n *\n * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM\n * element.\n *\n * @security Permitting direct access to the DOM can make your application more vulnerable to\n * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the\n * [Security Guide](https://g.co/ng/security).\n *\n * @publicApi\n */\n// Note: We don't expose things like `Injector`, `ViewContainer`, ... here,\n// i.e. users have to ask for what they need. With that, we can build better analysis tools\n// and could do better codegen in the future.\nclass ElementRef {\n constructor(nativeElement) {\n this.nativeElement = nativeElement;\n }\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ELEMENT_ID__ = injectElementRef; }\n}\n/**\n * Unwraps `ElementRef` and return the `nativeElement`.\n *\n * @param value value to unwrap\n * @returns `nativeElement` if `ElementRef` otherwise returns value as is.\n */\nfunction unwrapElementRef(value) {\n return value instanceof ElementRef ? value.nativeElement : value;\n}\n\n/**\n * Creates and initializes a custom renderer that implements the `Renderer2` base class.\n *\n * @publicApi\n */\nclass RendererFactory2 {\n}\n/**\n * Extend this base class to implement custom rendering. By default, Angular\n * renders a template into DOM. You can use custom rendering to intercept\n * rendering calls, or to render to something other than DOM.\n *\n * Create your custom renderer using `RendererFactory2`.\n *\n * Use a custom renderer to bypass Angular's templating and\n * make custom UI changes that can't be expressed declaratively.\n * For example if you need to set a property or an attribute whose name is\n * not statically known, use the `setProperty()` or\n * `setAttribute()` method.\n *\n * @publicApi\n */\nclass Renderer2 {\n constructor() {\n /**\n * If null or undefined, the view engine won't call it.\n * This is used as a performance optimization for production mode.\n */\n this.destroyNode = null;\n }\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ELEMENT_ID__ = () => injectRenderer2(); }\n}\n/** Injects a Renderer2 for the current component. */\nfunction injectRenderer2() {\n // We need the Renderer to be based on the component that it's being injected into, however since\n // DI happens before we've entered its view, `getLView` will return the parent view instead.\n const lView = getLView();\n const tNode = getCurrentTNode();\n const nodeAtIndex = getComponentLViewByIndex(tNode.index, lView);\n return (isLView(nodeAtIndex) ? nodeAtIndex : lView)[RENDERER];\n}\n\n/**\n * Sanitizer is used by the views to sanitize potentially dangerous values.\n *\n * @publicApi\n */\nclass Sanitizer {\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({\n token: Sanitizer,\n providedIn: 'root',\n factory: () => null,\n }); }\n}\n\n/**\n * @description Represents the version of Angular\n *\n * @publicApi\n */\nclass Version {\n constructor(full) {\n this.full = full;\n this.major = full.split('.')[0];\n this.minor = full.split('.')[1];\n this.patch = full.split('.').slice(2).join('.');\n }\n}\n/**\n * @publicApi\n */\nconst VERSION = new Version('16.2.12');\n\n// This default value is when checking the hierarchy for a token.\n//\n// It means both:\n// - the token is not provided by the current injector,\n// - only the element injectors should be checked (ie do not check module injectors\n//\n// mod1\n// /\n// el1 mod2\n// \\ /\n// el2\n//\n// When requesting el2.injector.get(token), we should check in the following order and return the\n// first found value:\n// - el2.injector.get(token, default)\n// - el1.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) -> do not check the module\n// - mod2.injector.get(token, default)\nconst NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};\n\n/**\n * Runs the given function in the [context](guide/dependency-injection-context) of the given\n * `Injector`.\n *\n * Within the function's stack frame, [`inject`](api/core/inject) can be used to inject dependencies\n * from the given `Injector`. Note that `inject` is only usable synchronously, and cannot be used in\n * any asynchronous callbacks or after any `await` points.\n *\n * @param injector the injector which will satisfy calls to [`inject`](api/core/inject) while `fn`\n * is executing\n * @param fn the closure to be run in the context of `injector`\n * @returns the return value of the function, if any\n * @publicApi\n */\nfunction runInInjectionContext(injector, fn) {\n if (injector instanceof R3Injector) {\n injector.assertNotDestroyed();\n }\n let prevInjectorProfilerContext;\n if (ngDevMode) {\n prevInjectorProfilerContext = setInjectorProfilerContext({ injector, token: null });\n }\n const prevInjector = setCurrentInjector(injector);\n const previousInjectImplementation = setInjectImplementation(undefined);\n try {\n return fn();\n }\n finally {\n setCurrentInjector(prevInjector);\n ngDevMode && setInjectorProfilerContext(prevInjectorProfilerContext);\n setInjectImplementation(previousInjectImplementation);\n }\n}\n/**\n * Asserts that the current stack frame is within an [injection\n * context](guide/dependency-injection-context) and has access to `inject`.\n *\n * @param debugFn a reference to the function making the assertion (used for the error message).\n *\n * @publicApi\n */\nfunction assertInInjectionContext(debugFn) {\n // Taking a `Function` instead of a string name here prevents the unminified name of the function\n // from being retained in the bundle regardless of minification.\n if (!getInjectImplementation() && !getCurrentInjector()) {\n throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, ngDevMode &&\n (debugFn.name +\n '() can only be used within an injection context such as a constructor, a factory function, a field initializer, or a function used with `runInInjectionContext`'));\n }\n}\n\n/**\n * A mapping of the @angular/core API surface used in generated expressions to the actual symbols.\n *\n * This should be kept up to date with the public exports of @angular/core.\n */\nconst angularCoreDiEnv = {\n 'ɵɵdefineInjectable': ɵɵdefineInjectable,\n 'ɵɵdefineInjector': ɵɵdefineInjector,\n 'ɵɵinject': ɵɵinject,\n 'ɵɵinvalidFactoryDep': ɵɵinvalidFactoryDep,\n 'resolveForwardRef': resolveForwardRef,\n};\n\n/**\n * Compile an Angular injectable according to its `Injectable` metadata, and patch the resulting\n * injectable def (`ɵprov`) onto the injectable type.\n */\nfunction compileInjectable(type, meta) {\n let ngInjectableDef = null;\n let ngFactoryDef = null;\n // if NG_PROV_DEF is already defined on this class then don't overwrite it\n if (!type.hasOwnProperty(NG_PROV_DEF)) {\n Object.defineProperty(type, NG_PROV_DEF, {\n get: () => {\n if (ngInjectableDef === null) {\n const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'injectable', type });\n ngInjectableDef = compiler.compileInjectable(angularCoreDiEnv, `ng:///${type.name}/ɵprov.js`, getInjectableMetadata(type, meta));\n }\n return ngInjectableDef;\n },\n });\n }\n // if NG_FACTORY_DEF is already defined on this class then don't overwrite it\n if (!type.hasOwnProperty(NG_FACTORY_DEF)) {\n Object.defineProperty(type, NG_FACTORY_DEF, {\n get: () => {\n if (ngFactoryDef === null) {\n const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'injectable', type });\n ngFactoryDef = compiler.compileFactory(angularCoreDiEnv, `ng:///${type.name}/ɵfac.js`, {\n name: type.name,\n type,\n typeArgumentCount: 0,\n deps: reflectDependencies(type),\n target: compiler.FactoryTarget.Injectable\n });\n }\n return ngFactoryDef;\n },\n // Leave this configurable so that the factories from directives or pipes can take precedence.\n configurable: true\n });\n }\n}\nconst USE_VALUE = getClosureSafeProperty({ provide: String, useValue: getClosureSafeProperty });\nfunction isUseClassProvider(meta) {\n return meta.useClass !== undefined;\n}\nfunction isUseValueProvider(meta) {\n return USE_VALUE in meta;\n}\nfunction isUseFactoryProvider(meta) {\n return meta.useFactory !== undefined;\n}\nfunction isUseExistingProvider(meta) {\n return meta.useExisting !== undefined;\n}\nfunction getInjectableMetadata(type, srcMeta) {\n // Allow the compilation of a class with a `@Injectable()` decorator without parameters\n const meta = srcMeta || { providedIn: null };\n const compilerMeta = {\n name: type.name,\n type: type,\n typeArgumentCount: 0,\n providedIn: meta.providedIn,\n };\n if ((isUseClassProvider(meta) || isUseFactoryProvider(meta)) && meta.deps !== undefined) {\n compilerMeta.deps = convertDependencies(meta.deps);\n }\n // Check to see if the user explicitly provided a `useXxxx` property.\n if (isUseClassProvider(meta)) {\n compilerMeta.useClass = meta.useClass;\n }\n else if (isUseValueProvider(meta)) {\n compilerMeta.useValue = meta.useValue;\n }\n else if (isUseFactoryProvider(meta)) {\n compilerMeta.useFactory = meta.useFactory;\n }\n else if (isUseExistingProvider(meta)) {\n compilerMeta.useExisting = meta.useExisting;\n }\n return compilerMeta;\n}\n\n/**\n * Injectable decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Injectable = makeDecorator('Injectable', undefined, undefined, undefined, (type, meta) => compileInjectable(type, meta));\n\n/**\n * Create a new `Injector` which is configured using a `defType` of `InjectorType<any>`s.\n */\nfunction createInjector(defType, parent = null, additionalProviders = null, name) {\n const injector = createInjectorWithoutInjectorInstances(defType, parent, additionalProviders, name);\n injector.resolveInjectorInitializers();\n return injector;\n}\n/**\n * Creates a new injector without eagerly resolving its injector types. Can be used in places\n * where resolving the injector types immediately can lead to an infinite loop. The injector types\n * should be resolved at a later point by calling `_resolveInjectorDefTypes`.\n */\nfunction createInjectorWithoutInjectorInstances(defType, parent = null, additionalProviders = null, name, scopes = new Set()) {\n const providers = [\n additionalProviders || EMPTY_ARRAY,\n importProvidersFrom(defType),\n ];\n name = name || (typeof defType === 'object' ? undefined : stringify(defType));\n return new R3Injector(providers, parent || getNullInjector(), name || null, scopes);\n}\n\n/**\n * Concrete injectors implement this interface. Injectors are configured\n * with [providers](guide/glossary#provider) that associate\n * dependencies of various types with [injection tokens](guide/glossary#di-token).\n *\n * @see [\"DI Providers\"](guide/dependency-injection-providers).\n * @see {@link StaticProvider}\n *\n * @usageNotes\n *\n * The following example creates a service injector instance.\n *\n * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}\n *\n * ### Usage example\n *\n * {@example core/di/ts/injector_spec.ts region='Injector'}\n *\n * `Injector` returns itself when given `Injector` as a token:\n *\n * {@example core/di/ts/injector_spec.ts region='injectInjector'}\n *\n * @publicApi\n */\nclass Injector {\n static { this.THROW_IF_NOT_FOUND = THROW_IF_NOT_FOUND; }\n static { this.NULL = ( /* @__PURE__ */new NullInjector()); }\n static create(options, parent) {\n if (Array.isArray(options)) {\n return createInjector({ name: '' }, parent, options, '');\n }\n else {\n const name = options.name ?? '';\n return createInjector({ name }, options.parent, options.providers, name);\n }\n }\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({\n token: Injector,\n providedIn: 'any',\n factory: () => ɵɵinject(INJECTOR),\n }); }\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ELEMENT_ID__ = -1 /* InjectorMarkers.Injector */; }\n}\n\n/**\n * @module\n * @description\n * The `di` module provides dependency injection container services.\n */\n\n/**\n * This file should not be necessary because node resolution should just default to `./di/index`!\n *\n * However it does not seem to work and it breaks:\n * - //packages/animations/browser/test:test_web_chromium-local\n * - //packages/compiler-cli/test:extract_i18n\n * - //packages/compiler-cli/test:ngc\n * - //packages/compiler-cli/test:perform_watch\n * - //packages/compiler-cli/test/diagnostics:check_types\n * - //packages/compiler-cli/test/transformers:test\n * - //packages/compiler/test:test\n * - //tools/public_api_guard:core_api\n *\n * Remove this file once the above is solved or wait until `ngc` is deleted and then it should be\n * safe to delete this file.\n */\n\nconst ERROR_ORIGINAL_ERROR = 'ngOriginalError';\nfunction wrappedError(message, originalError) {\n const msg = `${message} caused by: ${originalError instanceof Error ? originalError.message : originalError}`;\n const error = Error(msg);\n error[ERROR_ORIGINAL_ERROR] = originalError;\n return error;\n}\nfunction getOriginalError(error) {\n return error[ERROR_ORIGINAL_ERROR];\n}\n\n/**\n * Provides a hook for centralized exception handling.\n *\n * The default implementation of `ErrorHandler` prints error messages to the `console`. To\n * intercept error handling, write a custom exception handler that replaces this default as\n * appropriate for your app.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * class MyErrorHandler implements ErrorHandler {\n * handleError(error) {\n * // do something with the exception\n * }\n * }\n *\n * @NgModule({\n * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]\n * })\n * class MyModule {}\n * ```\n *\n * @publicApi\n */\nclass ErrorHandler {\n constructor() {\n /**\n * @internal\n */\n this._console = console;\n }\n handleError(error) {\n const originalError = this._findOriginalError(error);\n this._console.error('ERROR', error);\n if (originalError) {\n this._console.error('ORIGINAL ERROR', originalError);\n }\n }\n /** @internal */\n _findOriginalError(error) {\n let e = error && getOriginalError(error);\n while (e && getOriginalError(e)) {\n e = getOriginalError(e);\n }\n return e || null;\n }\n}\n\n/**\n * `DestroyRef` lets you set callbacks to run for any cleanup or destruction behavior.\n * The scope of this destruction depends on where `DestroyRef` is injected. If `DestroyRef`\n * is injected in a component or directive, the callbacks run when that component or\n * directive is destroyed. Otherwise the callbacks run when a corresponding injector is destroyed.\n *\n * @publicApi\n */\nclass DestroyRef {\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ELEMENT_ID__ = injectDestroyRef; }\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ENV_ID__ = (injector) => injector; }\n}\nclass NodeInjectorDestroyRef extends DestroyRef {\n constructor(_lView) {\n super();\n this._lView = _lView;\n }\n onDestroy(callback) {\n storeLViewOnDestroy(this._lView, callback);\n return () => removeLViewOnDestroy(this._lView, callback);\n }\n}\nfunction injectDestroyRef() {\n return new NodeInjectorDestroyRef(getLView());\n}\n\n/// <reference types=\"rxjs\" />\nclass EventEmitter_ extends Subject {\n constructor(isAsync = false) {\n super();\n this.__isAsync = isAsync;\n }\n emit(value) {\n super.next(value);\n }\n subscribe(observerOrNext, error, complete) {\n let nextFn = observerOrNext;\n let errorFn = error || (() => null);\n let completeFn = complete;\n if (observerOrNext && typeof observerOrNext === 'object') {\n const observer = observerOrNext;\n nextFn = observer.next?.bind(observer);\n errorFn = observer.error?.bind(observer);\n completeFn = observer.complete?.bind(observer);\n }\n if (this.__isAsync) {\n errorFn = _wrapInTimeout(errorFn);\n if (nextFn) {\n nextFn = _wrapInTimeout(nextFn);\n }\n if (completeFn) {\n completeFn = _wrapInTimeout(completeFn);\n }\n }\n const sink = super.subscribe({ next: nextFn, error: errorFn, complete: completeFn });\n if (observerOrNext instanceof Subscription) {\n observerOrNext.add(sink);\n }\n return sink;\n }\n}\nfunction _wrapInTimeout(fn) {\n return (value) => {\n setTimeout(fn, undefined, value);\n };\n}\n/**\n * @publicApi\n */\nconst EventEmitter = EventEmitter_;\n\nfunction noop(...args) {\n // Do nothing.\n}\n\nfunction getNativeRequestAnimationFrame() {\n // Note: the `getNativeRequestAnimationFrame` is used in the `NgZone` class, but we cannot use the\n // `inject` function. The `NgZone` instance may be created manually, and thus the injection\n // context will be unavailable. This might be enough to check whether `requestAnimationFrame` is\n // available because otherwise, we'll fall back to `setTimeout`.\n const isBrowser = typeof _global['requestAnimationFrame'] === 'function';\n // Note: `requestAnimationFrame` is unavailable when the code runs in the Node.js environment. We\n // use `setTimeout` because no changes are required other than checking if the current platform is\n // the browser. `setTimeout` is a well-established API that is available in both environments.\n // `requestAnimationFrame` is used in the browser to coalesce event tasks since event tasks are\n // usually executed within the same rendering frame (but this is more implementation details of\n // browsers).\n let nativeRequestAnimationFrame = _global[isBrowser ? 'requestAnimationFrame' : 'setTimeout'];\n let nativeCancelAnimationFrame = _global[isBrowser ? 'cancelAnimationFrame' : 'clearTimeout'];\n if (typeof Zone !== 'undefined' && nativeRequestAnimationFrame && nativeCancelAnimationFrame) {\n // Note: zone.js sets original implementations on patched APIs behind the\n // `__zone_symbol__OriginalDelegate` key (see `attachOriginToPatched`). Given the following\n // example: `window.requestAnimationFrame.__zone_symbol__OriginalDelegate`; this would return an\n // unpatched implementation of the `requestAnimationFrame`, which isn't intercepted by the\n // Angular zone. We use the unpatched implementation to avoid another change detection when\n // coalescing tasks.\n const unpatchedRequestAnimationFrame = nativeRequestAnimationFrame[Zone.__symbol__('OriginalDelegate')];\n if (unpatchedRequestAnimationFrame) {\n nativeRequestAnimationFrame = unpatchedRequestAnimationFrame;\n }\n const unpatchedCancelAnimationFrame = nativeCancelAnimationFrame[Zone.__symbol__('OriginalDelegate')];\n if (unpatchedCancelAnimationFrame) {\n nativeCancelAnimationFrame = unpatchedCancelAnimationFrame;\n }\n }\n return { nativeRequestAnimationFrame, nativeCancelAnimationFrame };\n}\n\nclass AsyncStackTaggingZoneSpec {\n constructor(namePrefix, consoleAsyncStackTaggingImpl = console) {\n this.name = 'asyncStackTagging for ' + namePrefix;\n this.createTask = consoleAsyncStackTaggingImpl?.createTask ?? (() => null);\n }\n onScheduleTask(delegate, _current, target, task) {\n task.consoleTask = this.createTask(`Zone - ${task.source || task.type}`);\n return delegate.scheduleTask(target, task);\n }\n onInvokeTask(delegate, _currentZone, targetZone, task, applyThis, applyArgs) {\n let ret;\n if (task.consoleTask) {\n ret = task.consoleTask.run(() => delegate.invokeTask(targetZone, task, applyThis, applyArgs));\n }\n else {\n ret = delegate.invokeTask(targetZone, task, applyThis, applyArgs);\n }\n return ret;\n }\n}\n\n/**\n * An injectable service for executing work inside or outside of the Angular zone.\n *\n * The most common use of this service is to optimize performance when starting a work consisting of\n * one or more asynchronous tasks that don't require UI updates or error handling to be handled by\n * Angular. Such tasks can be kicked off via {@link #runOutsideAngular} and if needed, these tasks\n * can reenter the Angular zone via {@link #run}.\n *\n * <!-- TODO: add/fix links to:\n * - docs explaining zones and the use of zones in Angular and change-detection\n * - link to runOutsideAngular/run (throughout this file!)\n * -->\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Component, NgZone} from '@angular/core';\n * import {NgIf} from '@angular/common';\n *\n * @Component({\n * selector: 'ng-zone-demo',\n * template: `\n * <h2>Demo: NgZone</h2>\n *\n * <p>Progress: {{progress}}%</p>\n * <p *ngIf=\"progress >= 100\">Done processing {{label}} of Angular zone!</p>\n *\n * <button (click)=\"processWithinAngularZone()\">Process within Angular zone</button>\n * <button (click)=\"processOutsideOfAngularZone()\">Process outside of Angular zone</button>\n * `,\n * })\n * export class NgZoneDemo {\n * progress: number = 0;\n * label: string;\n *\n * constructor(private _ngZone: NgZone) {}\n *\n * // Loop inside the Angular zone\n * // so the UI DOES refresh after each setTimeout cycle\n * processWithinAngularZone() {\n * this.label = 'inside';\n * this.progress = 0;\n * this._increaseProgress(() => console.log('Inside Done!'));\n * }\n *\n * // Loop outside of the Angular zone\n * // so the UI DOES NOT refresh after each setTimeout cycle\n * processOutsideOfAngularZone() {\n * this.label = 'outside';\n * this.progress = 0;\n * this._ngZone.runOutsideAngular(() => {\n * this._increaseProgress(() => {\n * // reenter the Angular zone and display done\n * this._ngZone.run(() => { console.log('Outside Done!'); });\n * });\n * });\n * }\n *\n * _increaseProgress(doneCallback: () => void) {\n * this.progress += 1;\n * console.log(`Current progress: ${this.progress}%`);\n *\n * if (this.progress < 100) {\n * window.setTimeout(() => this._increaseProgress(doneCallback), 10);\n * } else {\n * doneCallback();\n * }\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass NgZone {\n constructor({ enableLongStackTrace = false, shouldCoalesceEventChangeDetection = false, shouldCoalesceRunChangeDetection = false }) {\n this.hasPendingMacrotasks = false;\n this.hasPendingMicrotasks = false;\n /**\n * Whether there are no outstanding microtasks or macrotasks.\n */\n this.isStable = true;\n /**\n * Notifies when code enters Angular Zone. This gets fired first on VM Turn.\n */\n this.onUnstable = new EventEmitter(false);\n /**\n * Notifies when there is no more microtasks enqueued in the current VM Turn.\n * This is a hint for Angular to do change detection, which may enqueue more microtasks.\n * For this reason this event can fire multiple times per VM Turn.\n */\n this.onMicrotaskEmpty = new EventEmitter(false);\n /**\n * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which\n * implies we are about to relinquish VM turn.\n * This event gets called just once.\n */\n this.onStable = new EventEmitter(false);\n /**\n * Notifies that an error has been delivered.\n */\n this.onError = new EventEmitter(false);\n if (typeof Zone == 'undefined') {\n throw new RuntimeError(908 /* RuntimeErrorCode.MISSING_ZONEJS */, ngDevMode && `In this configuration Angular requires Zone.js`);\n }\n Zone.assertZonePatched();\n const self = this;\n self._nesting = 0;\n self._outer = self._inner = Zone.current;\n // AsyncStackTaggingZoneSpec provides `linked stack traces` to show\n // where the async operation is scheduled. For more details, refer\n // to this article, https://developer.chrome.com/blog/devtools-better-angular-debugging/\n // And we only import this AsyncStackTaggingZoneSpec in development mode,\n // in the production mode, the AsyncStackTaggingZoneSpec will be tree shaken away.\n if (ngDevMode) {\n self._inner = self._inner.fork(new AsyncStackTaggingZoneSpec('Angular'));\n }\n if (Zone['TaskTrackingZoneSpec']) {\n self._inner = self._inner.fork(new Zone['TaskTrackingZoneSpec']);\n }\n if (enableLongStackTrace && Zone['longStackTraceZoneSpec']) {\n self._inner = self._inner.fork(Zone['longStackTraceZoneSpec']);\n }\n // if shouldCoalesceRunChangeDetection is true, all tasks including event tasks will be\n // coalesced, so shouldCoalesceEventChangeDetection option is not necessary and can be skipped.\n self.shouldCoalesceEventChangeDetection =\n !shouldCoalesceRunChangeDetection && shouldCoalesceEventChangeDetection;\n self.shouldCoalesceRunChangeDetection = shouldCoalesceRunChangeDetection;\n self.lastRequestAnimationFrameId = -1;\n self.nativeRequestAnimationFrame = getNativeRequestAnimationFrame().nativeRequestAnimationFrame;\n forkInnerZoneWithAngularBehavior(self);\n }\n /**\n This method checks whether the method call happens within an Angular Zone instance.\n */\n static isInAngularZone() {\n // Zone needs to be checked, because this method might be called even when NoopNgZone is used.\n return typeof Zone !== 'undefined' && Zone.current.get('isAngularZone') === true;\n }\n /**\n Assures that the method is called within the Angular Zone, otherwise throws an error.\n */\n static assertInAngularZone() {\n if (!NgZone.isInAngularZone()) {\n throw new RuntimeError(909 /* RuntimeErrorCode.UNEXPECTED_ZONE_STATE */, ngDevMode && 'Expected to be in Angular Zone, but it is not!');\n }\n }\n /**\n Assures that the method is called outside of the Angular Zone, otherwise throws an error.\n */\n static assertNotInAngularZone() {\n if (NgZone.isInAngularZone()) {\n throw new RuntimeError(909 /* RuntimeErrorCode.UNEXPECTED_ZONE_STATE */, ngDevMode && 'Expected to not be in Angular Zone, but it is!');\n }\n }\n /**\n * Executes the `fn` function synchronously within the Angular zone and returns value returned by\n * the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n */\n run(fn, applyThis, applyArgs) {\n return this._inner.run(fn, applyThis, applyArgs);\n }\n /**\n * Executes the `fn` function synchronously within the Angular zone as a task and returns value\n * returned by the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n */\n runTask(fn, applyThis, applyArgs, name) {\n const zone = this._inner;\n const task = zone.scheduleEventTask('NgZoneEvent: ' + name, fn, EMPTY_PAYLOAD, noop, noop);\n try {\n return zone.runTask(task, applyThis, applyArgs);\n }\n finally {\n zone.cancelTask(task);\n }\n }\n /**\n * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not\n * rethrown.\n */\n runGuarded(fn, applyThis, applyArgs) {\n return this._inner.runGuarded(fn, applyThis, applyArgs);\n }\n /**\n * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\n * the function.\n *\n * Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do\n * work that\n * doesn't trigger Angular change-detection or is subject to Angular's error handling.\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * outside of the Angular zone.\n *\n * Use {@link #run} to reenter the Angular zone and do work that updates the application model.\n */\n runOutsideAngular(fn) {\n return this._outer.run(fn);\n }\n}\nconst EMPTY_PAYLOAD = {};\nfunction checkStable(zone) {\n // TODO: @JiaLiPassion, should check zone.isCheckStableRunning to prevent\n // re-entry. The case is:\n //\n // @Component({...})\n // export class AppComponent {\n // constructor(private ngZone: NgZone) {\n // this.ngZone.onStable.subscribe(() => {\n // this.ngZone.run(() => console.log('stable'););\n // });\n // }\n //\n // The onStable subscriber run another function inside ngZone\n // which causes `checkStable()` re-entry.\n // But this fix causes some issues in g3, so this fix will be\n // launched in another PR.\n if (zone._nesting == 0 && !zone.hasPendingMicrotasks && !zone.isStable) {\n try {\n zone._nesting++;\n zone.onMicrotaskEmpty.emit(null);\n }\n finally {\n zone._nesting--;\n if (!zone.hasPendingMicrotasks) {\n try {\n zone.runOutsideAngular(() => zone.onStable.emit(null));\n }\n finally {\n zone.isStable = true;\n }\n }\n }\n }\n}\nfunction delayChangeDetectionForEvents(zone) {\n /**\n * We also need to check _nesting here\n * Consider the following case with shouldCoalesceRunChangeDetection = true\n *\n * ngZone.run(() => {});\n * ngZone.run(() => {});\n *\n * We want the two `ngZone.run()` only trigger one change detection\n * when shouldCoalesceRunChangeDetection is true.\n * And because in this case, change detection run in async way(requestAnimationFrame),\n * so we also need to check the _nesting here to prevent multiple\n * change detections.\n */\n if (zone.isCheckStableRunning || zone.lastRequestAnimationFrameId !== -1) {\n return;\n }\n zone.lastRequestAnimationFrameId = zone.nativeRequestAnimationFrame.call(_global, () => {\n // This is a work around for https://github.com/angular/angular/issues/36839.\n // The core issue is that when event coalescing is enabled it is possible for microtasks\n // to get flushed too early (As is the case with `Promise.then`) between the\n // coalescing eventTasks.\n //\n // To workaround this we schedule a \"fake\" eventTask before we process the\n // coalescing eventTasks. The benefit of this is that the \"fake\" container eventTask\n // will prevent the microtasks queue from getting drained in between the coalescing\n // eventTask execution.\n if (!zone.fakeTopEventTask) {\n zone.fakeTopEventTask = Zone.root.scheduleEventTask('fakeTopEventTask', () => {\n zone.lastRequestAnimationFrameId = -1;\n updateMicroTaskStatus(zone);\n zone.isCheckStableRunning = true;\n checkStable(zone);\n zone.isCheckStableRunning = false;\n }, undefined, () => { }, () => { });\n }\n zone.fakeTopEventTask.invoke();\n });\n updateMicroTaskStatus(zone);\n}\nfunction forkInnerZoneWithAngularBehavior(zone) {\n const delayChangeDetectionForEventsDelegate = () => {\n delayChangeDetectionForEvents(zone);\n };\n zone._inner = zone._inner.fork({\n name: 'angular',\n properties: { 'isAngularZone': true },\n onInvokeTask: (delegate, current, target, task, applyThis, applyArgs) => {\n if (shouldBeIgnoredByZone(applyArgs)) {\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n }\n try {\n onEnter(zone);\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n }\n finally {\n if ((zone.shouldCoalesceEventChangeDetection && task.type === 'eventTask') ||\n zone.shouldCoalesceRunChangeDetection) {\n delayChangeDetectionForEventsDelegate();\n }\n onLeave(zone);\n }\n },\n onInvoke: (delegate, current, target, callback, applyThis, applyArgs, source) => {\n try {\n onEnter(zone);\n return delegate.invoke(target, callback, applyThis, applyArgs, source);\n }\n finally {\n if (zone.shouldCoalesceRunChangeDetection) {\n delayChangeDetectionForEventsDelegate();\n }\n onLeave(zone);\n }\n },\n onHasTask: (delegate, current, target, hasTaskState) => {\n delegate.hasTask(target, hasTaskState);\n if (current === target) {\n // We are only interested in hasTask events which originate from our zone\n // (A child hasTask event is not interesting to us)\n if (hasTaskState.change == 'microTask') {\n zone._hasPendingMicrotasks = hasTaskState.microTask;\n updateMicroTaskStatus(zone);\n checkStable(zone);\n }\n else if (hasTaskState.change == 'macroTask') {\n zone.hasPendingMacrotasks = hasTaskState.macroTask;\n }\n }\n },\n onHandleError: (delegate, current, target, error) => {\n delegate.handleError(target, error);\n zone.runOutsideAngular(() => zone.onError.emit(error));\n return false;\n }\n });\n}\nfunction updateMicroTaskStatus(zone) {\n if (zone._hasPendingMicrotasks ||\n ((zone.shouldCoalesceEventChangeDetection || zone.shouldCoalesceRunChangeDetection) &&\n zone.lastRequestAnimationFrameId !== -1)) {\n zone.hasPendingMicrotasks = true;\n }\n else {\n zone.hasPendingMicrotasks = false;\n }\n}\nfunction onEnter(zone) {\n zone._nesting++;\n if (zone.isStable) {\n zone.isStable = false;\n zone.onUnstable.emit(null);\n }\n}\nfunction onLeave(zone) {\n zone._nesting--;\n checkStable(zone);\n}\n/**\n * Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls\n * to framework to perform rendering.\n */\nclass NoopNgZone {\n constructor() {\n this.hasPendingMicrotasks = false;\n this.hasPendingMacrotasks = false;\n this.isStable = true;\n this.onUnstable = new EventEmitter();\n this.onMicrotaskEmpty = new EventEmitter();\n this.onStable = new EventEmitter();\n this.onError = new EventEmitter();\n }\n run(fn, applyThis, applyArgs) {\n return fn.apply(applyThis, applyArgs);\n }\n runGuarded(fn, applyThis, applyArgs) {\n return fn.apply(applyThis, applyArgs);\n }\n runOutsideAngular(fn) {\n return fn();\n }\n runTask(fn, applyThis, applyArgs, name) {\n return fn.apply(applyThis, applyArgs);\n }\n}\n/**\n * Token used to drive ApplicationRef.isStable\n *\n * TODO: This should be moved entirely to NgZone (as a breaking change) so it can be tree-shakeable\n * for `NoopNgZone` which is always just an `Observable` of `true`. Additionally, we should consider\n * whether the property on `NgZone` should be `Observable` or `Signal`.\n */\nconst ZONE_IS_STABLE_OBSERVABLE = new InjectionToken(ngDevMode ? 'isStable Observable' : '', {\n providedIn: 'root',\n // TODO(atscott): Replace this with a suitable default like `new\n // BehaviorSubject(true).asObservable`. Again, long term this won't exist on ApplicationRef at\n // all but until we can remove it, we need a default value zoneless.\n factory: isStableFactory,\n});\nfunction isStableFactory() {\n const zone = inject(NgZone);\n let _stable = true;\n const isCurrentlyStable = new Observable((observer) => {\n _stable = zone.isStable && !zone.hasPendingMacrotasks && !zone.hasPendingMicrotasks;\n zone.runOutsideAngular(() => {\n observer.next(_stable);\n observer.complete();\n });\n });\n const isStable = new Observable((observer) => {\n // Create the subscription to onStable outside the Angular Zone so that\n // the callback is run outside the Angular Zone.\n let stableSub;\n zone.runOutsideAngular(() => {\n stableSub = zone.onStable.subscribe(() => {\n NgZone.assertNotInAngularZone();\n // Check whether there are no pending macro/micro tasks in the next tick\n // to allow for NgZone to update the state.\n queueMicrotask(() => {\n if (!_stable && !zone.hasPendingMacrotasks && !zone.hasPendingMicrotasks) {\n _stable = true;\n observer.next(true);\n }\n });\n });\n });\n const unstableSub = zone.onUnstable.subscribe(() => {\n NgZone.assertInAngularZone();\n if (_stable) {\n _stable = false;\n zone.runOutsideAngular(() => {\n observer.next(false);\n });\n }\n });\n return () => {\n stableSub.unsubscribe();\n unstableSub.unsubscribe();\n };\n });\n return merge$1(isCurrentlyStable, isStable.pipe(share()));\n}\nfunction shouldBeIgnoredByZone(applyArgs) {\n if (!Array.isArray(applyArgs)) {\n return false;\n }\n // We should only ever get 1 arg passed through to invokeTask.\n // Short circuit here incase that behavior changes.\n if (applyArgs.length !== 1) {\n return false;\n }\n // Prevent triggering change detection when the __ignore_ng_zone__ flag is detected.\n return applyArgs[0].data?.['__ignore_ng_zone__'] === true;\n}\n\n// Public API for Zone\n\n/**\n *\n * @codeGenApi\n */\nfunction ɵɵresolveWindow(element) {\n return element.ownerDocument.defaultView;\n}\n/**\n *\n * @codeGenApi\n */\nfunction ɵɵresolveDocument(element) {\n return element.ownerDocument;\n}\n/**\n *\n * @codeGenApi\n */\nfunction ɵɵresolveBody(element) {\n return element.ownerDocument.body;\n}\n/**\n * The special delimiter we use to separate property names, prefixes, and suffixes\n * in property binding metadata. See storeBindingMetadata().\n *\n * We intentionally use the Unicode \"REPLACEMENT CHARACTER\" (U+FFFD) as a delimiter\n * because it is a very uncommon character that is unlikely to be part of a user's\n * property names or interpolation strings. If it is in fact used in a property\n * binding, DebugElement.properties will not return the correct value for that\n * binding. However, there should be no runtime effect for real applications.\n *\n * This character is typically rendered as a question mark inside of a diamond.\n * See https://en.wikipedia.org/wiki/Specials_(Unicode_block)\n *\n */\nconst INTERPOLATION_DELIMITER = `�`;\n/**\n * Unwrap a value which might be behind a closure (for forward declaration reasons).\n */\nfunction maybeUnwrapFn(value) {\n if (value instanceof Function) {\n return value();\n }\n else {\n return value;\n }\n}\n/**\n * Detects whether the code is invoked in a browser.\n * Later on, this check should be replaced with a tree-shakable\n * flag (e.g. `!isServer`).\n */\nfunction isPlatformBrowser(injector) {\n return (injector ?? inject(Injector)).get(PLATFORM_ID) === 'browser';\n}\n\n/**\n * Register a callback to be invoked each time the application\n * finishes rendering.\n *\n * Note that the callback will run\n * - in the order it was registered\n * - once per render\n * - on browser platforms only\n *\n * <div class=\"alert is-important\">\n *\n * Components are not guaranteed to be [hydrated](guide/hydration) before the callback runs.\n * You must use caution when directly reading or writing the DOM and layout.\n *\n * </div>\n *\n * @param callback A callback function to register\n *\n * @usageNotes\n *\n * Use `afterRender` to read or write the DOM after each render.\n *\n * ### Example\n * ```ts\n * @Component({\n * selector: 'my-cmp',\n * template: `<span #content>{{ ... }}</span>`,\n * })\n * export class MyComponent {\n * @ViewChild('content') contentRef: ElementRef;\n *\n * constructor() {\n * afterRender(() => {\n * console.log('content height: ' + this.contentRef.nativeElement.scrollHeight);\n * });\n * }\n * }\n * ```\n *\n * @developerPreview\n */\nfunction afterRender(callback, options) {\n !options && assertInInjectionContext(afterRender);\n const injector = options?.injector ?? inject(Injector);\n if (!isPlatformBrowser(injector)) {\n return { destroy() { } };\n }\n let destroy;\n const unregisterFn = injector.get(DestroyRef).onDestroy(() => destroy?.());\n const afterRenderEventManager = injector.get(AfterRenderEventManager);\n // Lazily initialize the handler implementation, if necessary. This is so that it can be\n // tree-shaken if `afterRender` and `afterNextRender` aren't used.\n const callbackHandler = afterRenderEventManager.handler ??= new AfterRenderCallbackHandlerImpl();\n const ngZone = injector.get(NgZone);\n const errorHandler = injector.get(ErrorHandler, null, { optional: true });\n const instance = new AfterRenderCallback(ngZone, errorHandler, callback);\n destroy = () => {\n callbackHandler.unregister(instance);\n unregisterFn();\n };\n callbackHandler.register(instance);\n return { destroy };\n}\n/**\n * Register a callback to be invoked the next time the application\n * finishes rendering.\n *\n * Note that the callback will run\n * - in the order it was registered\n * - on browser platforms only\n *\n * <div class=\"alert is-important\">\n *\n * Components are not guaranteed to be [hydrated](guide/hydration) before the callback runs.\n * You must use caution when directly reading or writing the DOM and layout.\n *\n * </div>\n *\n * @param callback A callback function to register\n *\n * @usageNotes\n *\n * Use `afterNextRender` to read or write the DOM once,\n * for example to initialize a non-Angular library.\n *\n * ### Example\n * ```ts\n * @Component({\n * selector: 'my-chart-cmp',\n * template: `<div #chart>{{ ... }}</div>`,\n * })\n * export class MyChartCmp {\n * @ViewChild('chart') chartRef: ElementRef;\n * chart: MyChart|null;\n *\n * constructor() {\n * afterNextRender(() => {\n * this.chart = new MyChart(this.chartRef.nativeElement);\n * });\n * }\n * }\n * ```\n *\n * @developerPreview\n */\nfunction afterNextRender(callback, options) {\n !options && assertInInjectionContext(afterNextRender);\n const injector = options?.injector ?? inject(Injector);\n if (!isPlatformBrowser(injector)) {\n return { destroy() { } };\n }\n let destroy;\n const unregisterFn = injector.get(DestroyRef).onDestroy(() => destroy?.());\n const afterRenderEventManager = injector.get(AfterRenderEventManager);\n // Lazily initialize the handler implementation, if necessary. This is so that it can be\n // tree-shaken if `afterRender` and `afterNextRender` aren't used.\n const callbackHandler = afterRenderEventManager.handler ??= new AfterRenderCallbackHandlerImpl();\n const ngZone = injector.get(NgZone);\n const errorHandler = injector.get(ErrorHandler, null, { optional: true });\n const instance = new AfterRenderCallback(ngZone, errorHandler, () => {\n destroy?.();\n callback();\n });\n destroy = () => {\n callbackHandler.unregister(instance);\n unregisterFn();\n };\n callbackHandler.register(instance);\n return { destroy };\n}\n/**\n * A wrapper around a function to be used as an after render callback.\n */\nclass AfterRenderCallback {\n constructor(zone, errorHandler, callbackFn) {\n this.zone = zone;\n this.errorHandler = errorHandler;\n this.callbackFn = callbackFn;\n }\n invoke() {\n try {\n this.zone.runOutsideAngular(this.callbackFn);\n }\n catch (err) {\n this.errorHandler?.handleError(err);\n }\n }\n}\n/**\n * Core functionality for `afterRender` and `afterNextRender`. Kept separate from\n * `AfterRenderEventManager` for tree-shaking.\n */\nclass AfterRenderCallbackHandlerImpl {\n constructor() {\n this.executingCallbacks = false;\n this.callbacks = new Set();\n this.deferredCallbacks = new Set();\n }\n validateBegin() {\n if (this.executingCallbacks) {\n throw new RuntimeError(102 /* RuntimeErrorCode.RECURSIVE_APPLICATION_RENDER */, ngDevMode &&\n 'A new render operation began before the previous operation ended. ' +\n 'Did you trigger change detection from afterRender or afterNextRender?');\n }\n }\n register(callback) {\n // If we're currently running callbacks, new callbacks should be deferred\n // until the next render operation.\n const target = this.executingCallbacks ? this.deferredCallbacks : this.callbacks;\n target.add(callback);\n }\n unregister(callback) {\n this.callbacks.delete(callback);\n this.deferredCallbacks.delete(callback);\n }\n execute() {\n this.executingCallbacks = true;\n for (const callback of this.callbacks) {\n callback.invoke();\n }\n this.executingCallbacks = false;\n for (const callback of this.deferredCallbacks) {\n this.callbacks.add(callback);\n }\n this.deferredCallbacks.clear();\n }\n destroy() {\n this.callbacks.clear();\n this.deferredCallbacks.clear();\n }\n}\n/**\n * Implements core timing for `afterRender` and `afterNextRender` events.\n * Delegates to an optional `AfterRenderCallbackHandler` for implementation.\n */\nclass AfterRenderEventManager {\n constructor() {\n this.renderDepth = 0;\n /* @internal */\n this.handler = null;\n }\n /**\n * Mark the beginning of a render operation (i.e. CD cycle).\n * Throws if called while executing callbacks.\n */\n begin() {\n this.handler?.validateBegin();\n this.renderDepth++;\n }\n /**\n * Mark the end of a render operation. Callbacks will be\n * executed if there are no more pending operations.\n */\n end() {\n ngDevMode && assertGreaterThan(this.renderDepth, 0, 'renderDepth must be greater than 0');\n this.renderDepth--;\n if (this.renderDepth === 0) {\n this.handler?.execute();\n }\n }\n ngOnDestroy() {\n this.handler?.destroy();\n this.handler = null;\n }\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({\n token: AfterRenderEventManager,\n providedIn: 'root',\n factory: () => new AfterRenderEventManager(),\n }); }\n}\n\n/**\n * Marks current view and all ancestors dirty.\n *\n * Returns the root view because it is found as a byproduct of marking the view tree\n * dirty, and can be used by methods that consume markViewDirty() to easily schedule\n * change detection. Otherwise, such methods would need to traverse up the view tree\n * an additional time to get the root view and schedule a tick on it.\n *\n * @param lView The starting LView to mark dirty\n * @returns the root LView\n */\nfunction markViewDirty(lView) {\n while (lView) {\n lView[FLAGS] |= 64 /* LViewFlags.Dirty */;\n const parent = getLViewParent(lView);\n // Stop traversing up as soon as you find a root view that wasn't attached to any container\n if (isRootView(lView) && !parent) {\n return lView;\n }\n // continue otherwise\n lView = parent;\n }\n return null;\n}\n\n/**\n * Internal token that specifies whether DOM reuse logic\n * during hydration is enabled.\n */\nconst IS_HYDRATION_DOM_REUSE_ENABLED = new InjectionToken((typeof ngDevMode === 'undefined' || !!ngDevMode) ? 'IS_HYDRATION_DOM_REUSE_ENABLED' : '');\n// By default (in client rendering mode), we remove all the contents\n// of the host element and render an application after that.\nconst PRESERVE_HOST_CONTENT_DEFAULT = false;\n/**\n * Internal token that indicates whether host element content should be\n * retained during the bootstrap.\n */\nconst PRESERVE_HOST_CONTENT = new InjectionToken((typeof ngDevMode === 'undefined' || !!ngDevMode) ? 'PRESERVE_HOST_CONTENT' : '', {\n providedIn: 'root',\n factory: () => PRESERVE_HOST_CONTENT_DEFAULT,\n});\n\nfunction normalizeDebugBindingName(name) {\n // Attribute names with `$` (eg `x-y$`) are valid per spec, but unsupported by some browsers\n name = camelCaseToDashCase(name.replace(/[$@]/g, '_'));\n return `ng-reflect-${name}`;\n}\nconst CAMEL_CASE_REGEXP = /([A-Z])/g;\nfunction camelCaseToDashCase(input) {\n return input.replace(CAMEL_CASE_REGEXP, (...m) => '-' + m[1].toLowerCase());\n}\nfunction normalizeDebugBindingValue(value) {\n try {\n // Limit the size of the value as otherwise the DOM just gets polluted.\n return value != null ? value.toString().slice(0, 30) : value;\n }\n catch (e) {\n return '[ERROR] Exception while trying to serialize the value';\n }\n}\n\n/**\n * The max length of the string representation of a value in an error message\n */\nconst VALUE_STRING_LENGTH_LIMIT = 200;\n/** Verifies that a given type is a Standalone Component. */\nfunction assertStandaloneComponentType(type) {\n assertComponentDef(type);\n const componentDef = getComponentDef(type);\n if (!componentDef.standalone) {\n throw new RuntimeError(907 /* RuntimeErrorCode.TYPE_IS_NOT_STANDALONE */, `The ${stringifyForError(type)} component is not marked as standalone, ` +\n `but Angular expects to have a standalone component here. ` +\n `Please make sure the ${stringifyForError(type)} component has ` +\n `the \\`standalone: true\\` flag in the decorator.`);\n }\n}\n/** Verifies whether a given type is a component */\nfunction assertComponentDef(type) {\n if (!getComponentDef(type)) {\n throw new RuntimeError(906 /* RuntimeErrorCode.MISSING_GENERATED_DEF */, `The ${stringifyForError(type)} is not an Angular component, ` +\n `make sure it has the \\`@Component\\` decorator.`);\n }\n}\n/** Called when there are multiple component selectors that match a given node */\nfunction throwMultipleComponentError(tNode, first, second) {\n throw new RuntimeError(-300 /* RuntimeErrorCode.MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}: ` +\n `${stringifyForError(first)} and ` +\n `${stringifyForError(second)}`);\n}\n/** Throws an ExpressionChangedAfterChecked error if checkNoChanges mode is on. */\nfunction throwErrorIfNoChangesMode(creationMode, oldValue, currValue, propName, lView) {\n const hostComponentDef = getDeclarationComponentDef(lView);\n const componentClassName = hostComponentDef?.type?.name;\n const field = propName ? ` for '${propName}'` : '';\n let msg = `ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value${field}: '${formatValue(oldValue)}'. Current value: '${formatValue(currValue)}'.${componentClassName ? ` Expression location: ${componentClassName} component` : ''}`;\n if (creationMode) {\n msg +=\n ` It seems like the view has been created after its parent and its children have been dirty checked.` +\n ` Has it been created in a change detection hook?`;\n }\n throw new RuntimeError(-100 /* RuntimeErrorCode.EXPRESSION_CHANGED_AFTER_CHECKED */, msg);\n}\nfunction formatValue(value) {\n let strValue = String(value);\n // JSON.stringify will throw on circular references\n try {\n if (Array.isArray(value) || strValue === '[object Object]') {\n strValue = JSON.stringify(value);\n }\n }\n catch (error) {\n }\n return strValue.length > VALUE_STRING_LENGTH_LIMIT ?\n (strValue.substring(0, VALUE_STRING_LENGTH_LIMIT) + '…') :\n strValue;\n}\nfunction constructDetailsForInterpolation(lView, rootIndex, expressionIndex, meta, changedValue) {\n const [propName, prefix, ...chunks] = meta.split(INTERPOLATION_DELIMITER);\n let oldValue = prefix, newValue = prefix;\n for (let i = 0; i < chunks.length; i++) {\n const slotIdx = rootIndex + i;\n oldValue += `${lView[slotIdx]}${chunks[i]}`;\n newValue += `${slotIdx === expressionIndex ? changedValue : lView[slotIdx]}${chunks[i]}`;\n }\n return { propName, oldValue, newValue };\n}\n/**\n * Constructs an object that contains details for the ExpressionChangedAfterItHasBeenCheckedError:\n * - property name (for property bindings or interpolations)\n * - old and new values, enriched using information from metadata\n *\n * More information on the metadata storage format can be found in `storePropertyBindingMetadata`\n * function description.\n */\nfunction getExpressionChangedErrorDetails(lView, bindingIndex, oldValue, newValue) {\n const tData = lView[TVIEW].data;\n const metadata = tData[bindingIndex];\n if (typeof metadata === 'string') {\n // metadata for property interpolation\n if (metadata.indexOf(INTERPOLATION_DELIMITER) > -1) {\n return constructDetailsForInterpolation(lView, bindingIndex, bindingIndex, metadata, newValue);\n }\n // metadata for property binding\n return { propName: metadata, oldValue, newValue };\n }\n // metadata is not available for this expression, check if this expression is a part of the\n // property interpolation by going from the current binding index left and look for a string that\n // contains INTERPOLATION_DELIMITER, the layout in tView.data for this case will look like this:\n // [..., 'id�Prefix � and � suffix', null, null, null, ...]\n if (metadata === null) {\n let idx = bindingIndex - 1;\n while (typeof tData[idx] !== 'string' && tData[idx + 1] === null) {\n idx--;\n }\n const meta = tData[idx];\n if (typeof meta === 'string') {\n const matches = meta.match(new RegExp(INTERPOLATION_DELIMITER, 'g'));\n // first interpolation delimiter separates property name from interpolation parts (in case of\n // property interpolations), so we subtract one from total number of found delimiters\n if (matches && (matches.length - 1) > bindingIndex - idx) {\n return constructDetailsForInterpolation(lView, idx, bindingIndex, meta, newValue);\n }\n }\n }\n return { propName: undefined, oldValue, newValue };\n}\n\nlet currentConsumer = null;\n/**\n * Create a new template consumer pointing at the specified LView.\n * Sometimes, a previously created consumer may be reused, in order to save on allocations. In that\n * case, the LView will be updated.\n */\nfunction getReactiveLViewConsumer(lView, slot) {\n return lView[slot] ?? getOrCreateCurrentLViewConsumer();\n}\n/**\n * Assigns the `currentTemplateContext` to its LView's `REACTIVE_CONSUMER` slot if there are tracked\n * producers.\n *\n * The presence of producers means that a signal was read while the consumer was the active\n * consumer.\n *\n * If no producers are present, we do not assign the current template context. This also means we\n * can just reuse the template context for the next LView.\n */\nfunction commitLViewConsumerIfHasProducers(lView, slot) {\n const consumer = getOrCreateCurrentLViewConsumer();\n if (!consumer.producerNode?.length) {\n return;\n }\n lView[slot] = currentConsumer;\n consumer.lView = lView;\n currentConsumer = createLViewConsumer();\n}\nconst REACTIVE_LVIEW_CONSUMER_NODE = {\n ...REACTIVE_NODE,\n consumerIsAlwaysLive: true,\n consumerMarkedDirty: (node) => {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n assertDefined(node.lView, 'Updating a signal during template or host binding execution is not allowed.');\n markViewDirty(node.lView);\n },\n lView: null,\n};\nfunction createLViewConsumer() {\n return Object.create(REACTIVE_LVIEW_CONSUMER_NODE);\n}\nfunction getOrCreateCurrentLViewConsumer() {\n currentConsumer ??= createLViewConsumer();\n return currentConsumer;\n}\n\n/** A special value which designates that a value has not changed. */\nconst NO_CHANGE = (typeof ngDevMode === 'undefined' || ngDevMode) ? { __brand__: 'NO_CHANGE' } : {};\n\n/**\n * Advances to an element for later binding instructions.\n *\n * Used in conjunction with instructions like {@link property} to act on elements with specified\n * indices, for example those created with {@link element} or {@link elementStart}.\n *\n * ```ts\n * (rf: RenderFlags, ctx: any) => {\n * if (rf & 1) {\n * text(0, 'Hello');\n * text(1, 'Goodbye')\n * element(2, 'div');\n * }\n * if (rf & 2) {\n * advance(2); // Advance twice to the <div>.\n * property('title', 'test');\n * }\n * }\n * ```\n * @param delta Number of elements to advance forwards by.\n *\n * @codeGenApi\n */\nfunction ɵɵadvance(delta) {\n ngDevMode && assertGreaterThan(delta, 0, 'Can only advance forward');\n selectIndexInternal(getTView(), getLView(), getSelectedIndex() + delta, !!ngDevMode && isInCheckNoChangesMode());\n}\nfunction selectIndexInternal(tView, lView, index, checkNoChangesMode) {\n ngDevMode && assertIndexInDeclRange(lView, index);\n // Flush the initial hooks for elements in the view that have been added up to this point.\n // PERF WARNING: do NOT extract this to a separate function without running benchmarks\n if (!checkNoChangesMode) {\n const hooksInitPhaseCompleted = (lView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === 3 /* InitPhaseState.InitPhaseCompleted */;\n if (hooksInitPhaseCompleted) {\n const preOrderCheckHooks = tView.preOrderCheckHooks;\n if (preOrderCheckHooks !== null) {\n executeCheckHooks(lView, preOrderCheckHooks, index);\n }\n }\n else {\n const preOrderHooks = tView.preOrderHooks;\n if (preOrderHooks !== null) {\n executeInitAndCheckHooks(lView, preOrderHooks, 0 /* InitPhaseState.OnInitHooksToBeRun */, index);\n }\n }\n }\n // We must set the selected index *after* running the hooks, because hooks may have side-effects\n // that cause other template functions to run, thus updating the selected index, which is global\n // state. If we run `setSelectedIndex` *before* we run the hooks, in some cases the selected index\n // will be altered by the time we leave the `ɵɵadvance` instruction.\n setSelectedIndex(index);\n}\n\nfunction ɵɵdirectiveInject(token, flags = InjectFlags.Default) {\n const lView = getLView();\n // Fall back to inject() if view hasn't been created. This situation can happen in tests\n // if inject utilities are used before bootstrapping.\n if (lView === null) {\n // Verify that we will not get into infinite loop.\n ngDevMode && assertInjectImplementationNotEqual(ɵɵdirectiveInject);\n return ɵɵinject(token, flags);\n }\n const tNode = getCurrentTNode();\n const value = getOrCreateInjectable(tNode, lView, resolveForwardRef(token), flags);\n ngDevMode && emitInjectEvent(token, value, flags);\n return value;\n}\n/**\n * Throws an error indicating that a factory function could not be generated by the compiler for a\n * particular class.\n *\n * This instruction allows the actual error message to be optimized away when ngDevMode is turned\n * off, saving bytes of generated code while still providing a good experience in dev mode.\n *\n * The name of the class is not mentioned here, but will be in the generated factory function name\n * and thus in the stack trace.\n *\n * @codeGenApi\n */\nfunction ɵɵinvalidFactory() {\n const msg = ngDevMode ? `This constructor was not compatible with Dependency Injection.` : 'invalid';\n throw new Error(msg);\n}\n\n/**\n * Invoke `HostBindingsFunction`s for view.\n *\n * This methods executes `TView.hostBindingOpCodes`. It is used to execute the\n * `HostBindingsFunction`s associated with the current `LView`.\n *\n * @param tView Current `TView`.\n * @param lView Current `LView`.\n */\nfunction processHostBindingOpCodes(tView, lView) {\n const hostBindingOpCodes = tView.hostBindingOpCodes;\n if (hostBindingOpCodes === null)\n return;\n const consumer = getReactiveLViewConsumer(lView, REACTIVE_HOST_BINDING_CONSUMER);\n try {\n for (let i = 0; i < hostBindingOpCodes.length; i++) {\n const opCode = hostBindingOpCodes[i];\n if (opCode < 0) {\n // Negative numbers are element indexes.\n setSelectedIndex(~opCode);\n }\n else {\n // Positive numbers are NumberTuple which store bindingRootIndex and directiveIndex.\n const directiveIdx = opCode;\n const bindingRootIndx = hostBindingOpCodes[++i];\n const hostBindingFn = hostBindingOpCodes[++i];\n setBindingRootForHostBindings(bindingRootIndx, directiveIdx);\n consumer.dirty = false;\n const prevConsumer = consumerBeforeComputation(consumer);\n try {\n const context = lView[directiveIdx];\n hostBindingFn(2 /* RenderFlags.Update */, context);\n }\n finally {\n consumerAfterComputation(consumer, prevConsumer);\n }\n }\n }\n }\n finally {\n if (lView[REACTIVE_HOST_BINDING_CONSUMER] === null) {\n commitLViewConsumerIfHasProducers(lView, REACTIVE_HOST_BINDING_CONSUMER);\n }\n setSelectedIndex(-1);\n }\n}\nfunction createLView(parentLView, tView, context, flags, host, tHostNode, environment, renderer, injector, embeddedViewInjector, hydrationInfo) {\n const lView = tView.blueprint.slice();\n lView[HOST] = host;\n lView[FLAGS] = flags | 4 /* LViewFlags.CreationMode */ | 128 /* LViewFlags.Attached */ | 8 /* LViewFlags.FirstLViewPass */;\n if (embeddedViewInjector !== null ||\n (parentLView && (parentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */))) {\n lView[FLAGS] |= 2048 /* LViewFlags.HasEmbeddedViewInjector */;\n }\n resetPreOrderHookFlags(lView);\n ngDevMode && tView.declTNode && parentLView && assertTNodeForLView(tView.declTNode, parentLView);\n lView[PARENT] = lView[DECLARATION_VIEW] = parentLView;\n lView[CONTEXT] = context;\n lView[ENVIRONMENT] = (environment || parentLView && parentLView[ENVIRONMENT]);\n ngDevMode && assertDefined(lView[ENVIRONMENT], 'LViewEnvironment is required');\n lView[RENDERER] = (renderer || parentLView && parentLView[RENDERER]);\n ngDevMode && assertDefined(lView[RENDERER], 'Renderer is required');\n lView[INJECTOR$1] = injector || parentLView && parentLView[INJECTOR$1] || null;\n lView[T_HOST] = tHostNode;\n lView[ID] = getUniqueLViewId();\n lView[HYDRATION] = hydrationInfo;\n lView[EMBEDDED_VIEW_INJECTOR] = embeddedViewInjector;\n ngDevMode &&\n assertEqual(tView.type == 2 /* TViewType.Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');\n lView[DECLARATION_COMPONENT_VIEW] =\n tView.type == 2 /* TViewType.Embedded */ ? parentLView[DECLARATION_COMPONENT_VIEW] : lView;\n return lView;\n}\nfunction getOrCreateTNode(tView, index, type, name, attrs) {\n ngDevMode && index !== 0 && // 0 are bogus nodes and they are OK. See `createContainerRef` in\n // `view_engine_compatibility` for additional context.\n assertGreaterThanOrEqual(index, HEADER_OFFSET, 'TNodes can\\'t be in the LView header.');\n // Keep this function short, so that the VM will inline it.\n ngDevMode && assertPureTNodeType(type);\n let tNode = tView.data[index];\n if (tNode === null) {\n tNode = createTNodeAtIndex(tView, index, type, name, attrs);\n if (isInI18nBlock()) {\n // If we are in i18n block then all elements should be pre declared through `Placeholder`\n // See `TNodeType.Placeholder` and `LFrame.inI18n` for more context.\n // If the `TNode` was not pre-declared than it means it was not mentioned which means it was\n // removed, so we mark it as detached.\n tNode.flags |= 32 /* TNodeFlags.isDetached */;\n }\n }\n else if (tNode.type & 64 /* TNodeType.Placeholder */) {\n tNode.type = type;\n tNode.value = name;\n tNode.attrs = attrs;\n const parent = getCurrentParentTNode();\n tNode.injectorIndex = parent === null ? -1 : parent.injectorIndex;\n ngDevMode && assertTNodeForTView(tNode, tView);\n ngDevMode && assertEqual(index, tNode.index, 'Expecting same index');\n }\n setCurrentTNode(tNode, true);\n return tNode;\n}\nfunction createTNodeAtIndex(tView, index, type, name, attrs) {\n const currentTNode = getCurrentTNodePlaceholderOk();\n const isParent = isCurrentTNodeParent();\n const parent = isParent ? currentTNode : currentTNode && currentTNode.parent;\n // Parents cannot cross component boundaries because components will be used in multiple places.\n const tNode = tView.data[index] =\n createTNode(tView, parent, type, index, name, attrs);\n // Assign a pointer to the first child node of a given view. The first node is not always the one\n // at index 0, in case of i18n, index 0 can be the instruction `i18nStart` and the first node has\n // the index 1 or more, so we can't just check node index.\n if (tView.firstChild === null) {\n tView.firstChild = tNode;\n }\n if (currentTNode !== null) {\n if (isParent) {\n // FIXME(misko): This logic looks unnecessarily complicated. Could we simplify?\n if (currentTNode.child == null && tNode.parent !== null) {\n // We are in the same view, which means we are adding content node to the parent view.\n currentTNode.child = tNode;\n }\n }\n else {\n if (currentTNode.next === null) {\n // In the case of i18n the `currentTNode` may already be linked, in which case we don't want\n // to break the links which i18n created.\n currentTNode.next = tNode;\n tNode.prev = currentTNode;\n }\n }\n }\n return tNode;\n}\n/**\n * When elements are created dynamically after a view blueprint is created (e.g. through\n * i18nApply()), we need to adjust the blueprint for future\n * template passes.\n *\n * @param tView `TView` associated with `LView`\n * @param lView The `LView` containing the blueprint to adjust\n * @param numSlotsToAlloc The number of slots to alloc in the LView, should be >0\n * @param initialValue Initial value to store in blueprint\n */\nfunction allocExpando(tView, lView, numSlotsToAlloc, initialValue) {\n if (numSlotsToAlloc === 0)\n return -1;\n if (ngDevMode) {\n assertFirstCreatePass(tView);\n assertSame(tView, lView[TVIEW], '`LView` must be associated with `TView`!');\n assertEqual(tView.data.length, lView.length, 'Expecting LView to be same size as TView');\n assertEqual(tView.data.length, tView.blueprint.length, 'Expecting Blueprint to be same size as TView');\n assertFirstUpdatePass(tView);\n }\n const allocIdx = lView.length;\n for (let i = 0; i < numSlotsToAlloc; i++) {\n lView.push(initialValue);\n tView.blueprint.push(initialValue);\n tView.data.push(null);\n }\n return allocIdx;\n}\nfunction executeTemplate(tView, lView, templateFn, rf, context) {\n const consumer = getReactiveLViewConsumer(lView, REACTIVE_TEMPLATE_CONSUMER);\n const prevSelectedIndex = getSelectedIndex();\n const isUpdatePhase = rf & 2 /* RenderFlags.Update */;\n try {\n setSelectedIndex(-1);\n if (isUpdatePhase && lView.length > HEADER_OFFSET) {\n // When we're updating, inherently select 0 so we don't\n // have to generate that instruction for most update blocks.\n selectIndexInternal(tView, lView, HEADER_OFFSET, !!ngDevMode && isInCheckNoChangesMode());\n }\n const preHookType = isUpdatePhase ? 2 /* ProfilerEvent.TemplateUpdateStart */ : 0 /* ProfilerEvent.TemplateCreateStart */;\n profiler(preHookType, context);\n const effectiveConsumer = isUpdatePhase ? consumer : null;\n const prevConsumer = consumerBeforeComputation(effectiveConsumer);\n try {\n if (effectiveConsumer !== null) {\n effectiveConsumer.dirty = false;\n }\n templateFn(rf, context);\n }\n finally {\n consumerAfterComputation(effectiveConsumer, prevConsumer);\n }\n }\n finally {\n if (isUpdatePhase && lView[REACTIVE_TEMPLATE_CONSUMER] === null) {\n commitLViewConsumerIfHasProducers(lView, REACTIVE_TEMPLATE_CONSUMER);\n }\n setSelectedIndex(prevSelectedIndex);\n const postHookType = isUpdatePhase ? 3 /* ProfilerEvent.TemplateUpdateEnd */ : 1 /* ProfilerEvent.TemplateCreateEnd */;\n profiler(postHookType, context);\n }\n}\n//////////////////////////\n//// Element\n//////////////////////////\nfunction executeContentQueries(tView, tNode, lView) {\n if (isContentQueryHost(tNode)) {\n const prevConsumer = setActiveConsumer(null);\n try {\n const start = tNode.directiveStart;\n const end = tNode.directiveEnd;\n for (let directiveIndex = start; directiveIndex < end; directiveIndex++) {\n const def = tView.data[directiveIndex];\n if (def.contentQueries) {\n def.contentQueries(1 /* RenderFlags.Create */, lView[directiveIndex], directiveIndex);\n }\n }\n }\n finally {\n setActiveConsumer(prevConsumer);\n }\n }\n}\n/**\n * Creates directive instances.\n */\nfunction createDirectivesInstances(tView, lView, tNode) {\n if (!getBindingsEnabled())\n return;\n instantiateAllDirectives(tView, lView, tNode, getNativeByTNode(tNode, lView));\n if ((tNode.flags & 64 /* TNodeFlags.hasHostBindings */) === 64 /* TNodeFlags.hasHostBindings */) {\n invokeDirectivesHostBindings(tView, lView, tNode);\n }\n}\n/**\n * Takes a list of local names and indices and pushes the resolved local variable values\n * to LView in the same order as they are loaded in the template with load().\n */\nfunction saveResolvedLocalsInData(viewData, tNode, localRefExtractor = getNativeByTNode) {\n const localNames = tNode.localNames;\n if (localNames !== null) {\n let localIndex = tNode.index + 1;\n for (let i = 0; i < localNames.length; i += 2) {\n const index = localNames[i + 1];\n const value = index === -1 ?\n localRefExtractor(tNode, viewData) :\n viewData[index];\n viewData[localIndex++] = value;\n }\n }\n}\n/**\n * Gets TView from a template function or creates a new TView\n * if it doesn't already exist.\n *\n * @param def ComponentDef\n * @returns TView\n */\nfunction getOrCreateComponentTView(def) {\n const tView = def.tView;\n // Create a TView if there isn't one, or recreate it if the first create pass didn't\n // complete successfully since we can't know for sure whether it's in a usable shape.\n if (tView === null || tView.incompleteFirstPass) {\n // Declaration node here is null since this function is called when we dynamically create a\n // component and hence there is no declaration.\n const declTNode = null;\n return def.tView = createTView(1 /* TViewType.Component */, declTNode, def.template, def.decls, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery, def.schemas, def.consts, def.id);\n }\n return tView;\n}\n/**\n * Creates a TView instance\n *\n * @param type Type of `TView`.\n * @param declTNode Declaration location of this `TView`.\n * @param templateFn Template function\n * @param decls The number of nodes, local refs, and pipes in this template\n * @param directives Registry of directives for this view\n * @param pipes Registry of pipes for this view\n * @param viewQuery View queries for this view\n * @param schemas Schemas for this view\n * @param consts Constants for this view\n */\nfunction createTView(type, declTNode, templateFn, decls, vars, directives, pipes, viewQuery, schemas, constsOrFactory, ssrId) {\n ngDevMode && ngDevMode.tView++;\n const bindingStartIndex = HEADER_OFFSET + decls;\n // This length does not yet contain host bindings from child directives because at this point,\n // we don't know which directives are active on this template. As soon as a directive is matched\n // that has a host binding, we will update the blueprint with that def's hostVars count.\n const initialViewLength = bindingStartIndex + vars;\n const blueprint = createViewBlueprint(bindingStartIndex, initialViewLength);\n const consts = typeof constsOrFactory === 'function' ? constsOrFactory() : constsOrFactory;\n const tView = blueprint[TVIEW] = {\n type: type,\n blueprint: blueprint,\n template: templateFn,\n queries: null,\n viewQuery: viewQuery,\n declTNode: declTNode,\n data: blueprint.slice().fill(null, bindingStartIndex),\n bindingStartIndex: bindingStartIndex,\n expandoStartIndex: initialViewLength,\n hostBindingOpCodes: null,\n firstCreatePass: true,\n firstUpdatePass: true,\n staticViewQueries: false,\n staticContentQueries: false,\n preOrderHooks: null,\n preOrderCheckHooks: null,\n contentHooks: null,\n contentCheckHooks: null,\n viewHooks: null,\n viewCheckHooks: null,\n destroyHooks: null,\n cleanup: null,\n contentQueries: null,\n components: null,\n directiveRegistry: typeof directives === 'function' ? directives() : directives,\n pipeRegistry: typeof pipes === 'function' ? pipes() : pipes,\n firstChild: null,\n schemas: schemas,\n consts: consts,\n incompleteFirstPass: false,\n ssrId,\n };\n if (ngDevMode) {\n // For performance reasons it is important that the tView retains the same shape during runtime.\n // (To make sure that all of the code is monomorphic.) For this reason we seal the object to\n // prevent class transitions.\n Object.seal(tView);\n }\n return tView;\n}\nfunction createViewBlueprint(bindingStartIndex, initialViewLength) {\n const blueprint = [];\n for (let i = 0; i < initialViewLength; i++) {\n blueprint.push(i < bindingStartIndex ? null : NO_CHANGE);\n }\n return blueprint;\n}\n/**\n * Locates the host native element, used for bootstrapping existing nodes into rendering pipeline.\n *\n * @param renderer the renderer used to locate the element.\n * @param elementOrSelector Render element or CSS selector to locate the element.\n * @param encapsulation View Encapsulation defined for component that requests host element.\n * @param injector Root view injector instance.\n */\nfunction locateHostElement(renderer, elementOrSelector, encapsulation, injector) {\n // Note: we use default value for the `PRESERVE_HOST_CONTENT` here even though it's a\n // tree-shakable one (providedIn:'root'). This code path can be triggered during dynamic\n // component creation (after calling ViewContainerRef.createComponent) when an injector\n // instance can be provided. The injector instance might be disconnected from the main DI\n // tree, thus the `PRESERVE_HOST_CONTENT` would not be able to instantiate. In this case, the\n // default value will be used.\n const preserveHostContent = injector.get(PRESERVE_HOST_CONTENT, PRESERVE_HOST_CONTENT_DEFAULT);\n // When using native Shadow DOM, do not clear host element to allow native slot\n // projection.\n const preserveContent = preserveHostContent || encapsulation === ViewEncapsulation$1.ShadowDom;\n const rootElement = renderer.selectRootElement(elementOrSelector, preserveContent);\n applyRootElementTransform(rootElement);\n return rootElement;\n}\n/**\n * Applies any root element transformations that are needed. If hydration is enabled,\n * this will process corrupted text nodes.\n *\n * @param rootElement the app root HTML Element\n */\nfunction applyRootElementTransform(rootElement) {\n _applyRootElementTransformImpl(rootElement);\n}\n/**\n * Reference to a function that applies transformations to the root HTML element\n * of an app. When hydration is enabled, this processes any corrupt text nodes\n * so they are properly hydratable on the client.\n *\n * @param rootElement the app root HTML Element\n */\nlet _applyRootElementTransformImpl = (rootElement) => null;\n/**\n * Processes text node markers before hydration begins. This replaces any special comment\n * nodes that were added prior to serialization are swapped out to restore proper text\n * nodes before hydration.\n *\n * @param rootElement the app root HTML Element\n */\nfunction applyRootElementTransformImpl(rootElement) {\n if (hasSkipHydrationAttrOnRElement(rootElement)) {\n // Handle a situation when the `ngSkipHydration` attribute is applied\n // to the root node of an application. In this case, we should clear\n // the contents and render everything from scratch.\n clearElementContents(rootElement);\n }\n else {\n processTextNodeMarkersBeforeHydration(rootElement);\n }\n}\n/**\n * Sets the implementation for the `applyRootElementTransform` function.\n */\nfunction enableApplyRootElementTransformImpl() {\n _applyRootElementTransformImpl = applyRootElementTransformImpl;\n}\n/**\n * Saves context for this cleanup function in LView.cleanupInstances.\n *\n * On the first template pass, saves in TView:\n * - Cleanup function\n * - Index of context we just saved in LView.cleanupInstances\n */\nfunction storeCleanupWithContext(tView, lView, context, cleanupFn) {\n const lCleanup = getOrCreateLViewCleanup(lView);\n // Historically the `storeCleanupWithContext` was used to register both framework-level and\n // user-defined cleanup callbacks, but over time those two types of cleanups were separated.\n // This dev mode checks assures that user-level cleanup callbacks are _not_ stored in data\n // structures reserved for framework-specific hooks.\n ngDevMode &&\n assertDefined(context, 'Cleanup context is mandatory when registering framework-level destroy hooks');\n lCleanup.push(context);\n if (tView.firstCreatePass) {\n getOrCreateTViewCleanup(tView).push(cleanupFn, lCleanup.length - 1);\n }\n else {\n // Make sure that no new framework-level cleanup functions are registered after the first\n // template pass is done (and TView data structures are meant to fully constructed).\n if (ngDevMode) {\n Object.freeze(getOrCreateTViewCleanup(tView));\n }\n }\n}\nfunction createTNode(tView, tParent, type, index, value, attrs) {\n ngDevMode && index !== 0 && // 0 are bogus nodes and they are OK. See `createContainerRef` in\n // `view_engine_compatibility` for additional context.\n assertGreaterThanOrEqual(index, HEADER_OFFSET, 'TNodes can\\'t be in the LView header.');\n ngDevMode && assertNotSame(attrs, undefined, '\\'undefined\\' is not valid value for \\'attrs\\'');\n ngDevMode && ngDevMode.tNode++;\n ngDevMode && tParent && assertTNodeForTView(tParent, tView);\n let injectorIndex = tParent ? tParent.injectorIndex : -1;\n let flags = 0;\n if (isInSkipHydrationBlock$1()) {\n flags |= 128 /* TNodeFlags.inSkipHydrationBlock */;\n }\n const tNode = {\n type,\n index,\n insertBeforeIndex: null,\n injectorIndex,\n directiveStart: -1,\n directiveEnd: -1,\n directiveStylingLast: -1,\n componentOffset: -1,\n propertyBindings: null,\n flags,\n providerIndexes: 0,\n value: value,\n attrs: attrs,\n mergedAttrs: null,\n localNames: null,\n initialInputs: undefined,\n inputs: null,\n outputs: null,\n tView: null,\n next: null,\n prev: null,\n projectionNext: null,\n child: null,\n parent: tParent,\n projection: null,\n styles: null,\n stylesWithoutHost: null,\n residualStyles: undefined,\n classes: null,\n classesWithoutHost: null,\n residualClasses: undefined,\n classBindings: 0,\n styleBindings: 0,\n };\n if (ngDevMode) {\n // For performance reasons it is important that the tNode retains the same shape during runtime.\n // (To make sure that all of the code is monomorphic.) For this reason we seal the object to\n // prevent class transitions.\n Object.seal(tNode);\n }\n return tNode;\n}\n/**\n * Generates the `PropertyAliases` data structure from the provided input/output mapping.\n * @param aliasMap Input/output mapping from the directive definition.\n * @param directiveIndex Index of the directive.\n * @param propertyAliases Object in which to store the results.\n * @param hostDirectiveAliasMap Object used to alias or filter out properties for host directives.\n * If the mapping is provided, it'll act as an allowlist, as well as a mapping of what public\n * name inputs/outputs should be exposed under.\n */\nfunction generatePropertyAliases(aliasMap, directiveIndex, propertyAliases, hostDirectiveAliasMap) {\n for (let publicName in aliasMap) {\n if (aliasMap.hasOwnProperty(publicName)) {\n propertyAliases = propertyAliases === null ? {} : propertyAliases;\n const internalName = aliasMap[publicName];\n // If there are no host directive mappings, we want to remap using the alias map from the\n // definition itself. If there is an alias map, it has two functions:\n // 1. It serves as an allowlist of bindings that are exposed by the host directives. Only the\n // ones inside the host directive map will be exposed on the host.\n // 2. The public name of the property is aliased using the host directive alias map, rather\n // than the alias map from the definition.\n if (hostDirectiveAliasMap === null) {\n addPropertyAlias(propertyAliases, directiveIndex, publicName, internalName);\n }\n else if (hostDirectiveAliasMap.hasOwnProperty(publicName)) {\n addPropertyAlias(propertyAliases, directiveIndex, hostDirectiveAliasMap[publicName], internalName);\n }\n }\n }\n return propertyAliases;\n}\nfunction addPropertyAlias(propertyAliases, directiveIndex, publicName, internalName) {\n if (propertyAliases.hasOwnProperty(publicName)) {\n propertyAliases[publicName].push(directiveIndex, internalName);\n }\n else {\n propertyAliases[publicName] = [directiveIndex, internalName];\n }\n}\n/**\n * Initializes data structures required to work with directive inputs and outputs.\n * Initialization is done for all directives matched on a given TNode.\n */\nfunction initializeInputAndOutputAliases(tView, tNode, hostDirectiveDefinitionMap) {\n ngDevMode && assertFirstCreatePass(tView);\n const start = tNode.directiveStart;\n const end = tNode.directiveEnd;\n const tViewData = tView.data;\n const tNodeAttrs = tNode.attrs;\n const inputsFromAttrs = [];\n let inputsStore = null;\n let outputsStore = null;\n for (let directiveIndex = start; directiveIndex < end; directiveIndex++) {\n const directiveDef = tViewData[directiveIndex];\n const aliasData = hostDirectiveDefinitionMap ? hostDirectiveDefinitionMap.get(directiveDef) : null;\n const aliasedInputs = aliasData ? aliasData.inputs : null;\n const aliasedOutputs = aliasData ? aliasData.outputs : null;\n inputsStore =\n generatePropertyAliases(directiveDef.inputs, directiveIndex, inputsStore, aliasedInputs);\n outputsStore =\n generatePropertyAliases(directiveDef.outputs, directiveIndex, outputsStore, aliasedOutputs);\n // Do not use unbound attributes as inputs to structural directives, since structural\n // directive inputs can only be set using microsyntax (e.g. `<div *dir=\"exp\">`).\n // TODO(FW-1930): microsyntax expressions may also contain unbound/static attributes, which\n // should be set for inline templates.\n const initialInputs = (inputsStore !== null && tNodeAttrs !== null && !isInlineTemplate(tNode)) ?\n generateInitialInputs(inputsStore, directiveIndex, tNodeAttrs) :\n null;\n inputsFromAttrs.push(initialInputs);\n }\n if (inputsStore !== null) {\n if (inputsStore.hasOwnProperty('class')) {\n tNode.flags |= 8 /* TNodeFlags.hasClassInput */;\n }\n if (inputsStore.hasOwnProperty('style')) {\n tNode.flags |= 16 /* TNodeFlags.hasStyleInput */;\n }\n }\n tNode.initialInputs = inputsFromAttrs;\n tNode.inputs = inputsStore;\n tNode.outputs = outputsStore;\n}\n/**\n * Mapping between attributes names that don't correspond to their element property names.\n *\n * Performance note: this function is written as a series of if checks (instead of, say, a property\n * object lookup) for performance reasons - the series of `if` checks seems to be the fastest way of\n * mapping property names. Do NOT change without benchmarking.\n *\n * Note: this mapping has to be kept in sync with the equally named mapping in the template\n * type-checking machinery of ngtsc.\n */\nfunction mapPropName(name) {\n if (name === 'class')\n return 'className';\n if (name === 'for')\n return 'htmlFor';\n if (name === 'formaction')\n return 'formAction';\n if (name === 'innerHtml')\n return 'innerHTML';\n if (name === 'readonly')\n return 'readOnly';\n if (name === 'tabindex')\n return 'tabIndex';\n return name;\n}\nfunction elementPropertyInternal(tView, tNode, lView, propName, value, renderer, sanitizer, nativeOnly) {\n ngDevMode && assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');\n const element = getNativeByTNode(tNode, lView);\n let inputData = tNode.inputs;\n let dataValue;\n if (!nativeOnly && inputData != null && (dataValue = inputData[propName])) {\n setInputsForProperty(tView, lView, dataValue, propName, value);\n if (isComponentHost(tNode))\n markDirtyIfOnPush(lView, tNode.index);\n if (ngDevMode) {\n setNgReflectProperties(lView, element, tNode.type, dataValue, value);\n }\n }\n else if (tNode.type & 3 /* TNodeType.AnyRNode */) {\n propName = mapPropName(propName);\n if (ngDevMode) {\n validateAgainstEventProperties(propName);\n if (!isPropertyValid(element, propName, tNode.value, tView.schemas)) {\n handleUnknownPropertyError(propName, tNode.value, tNode.type, lView);\n }\n ngDevMode.rendererSetProperty++;\n }\n // It is assumed that the sanitizer is only added when the compiler determines that the\n // property is risky, so sanitization can be done without further checks.\n value = sanitizer != null ? sanitizer(value, tNode.value || '', propName) : value;\n renderer.setProperty(element, propName, value);\n }\n else if (tNode.type & 12 /* TNodeType.AnyContainer */) {\n // If the node is a container and the property didn't\n // match any of the inputs or schemas we should throw.\n if (ngDevMode && !matchingSchemas(tView.schemas, tNode.value)) {\n handleUnknownPropertyError(propName, tNode.value, tNode.type, lView);\n }\n }\n}\n/** If node is an OnPush component, marks its LView dirty. */\nfunction markDirtyIfOnPush(lView, viewIndex) {\n ngDevMode && assertLView(lView);\n const childComponentLView = getComponentLViewByIndex(viewIndex, lView);\n if (!(childComponentLView[FLAGS] & 16 /* LViewFlags.CheckAlways */)) {\n childComponentLView[FLAGS] |= 64 /* LViewFlags.Dirty */;\n }\n}\nfunction setNgReflectProperty(lView, element, type, attrName, value) {\n const renderer = lView[RENDERER];\n attrName = normalizeDebugBindingName(attrName);\n const debugValue = normalizeDebugBindingValue(value);\n if (type & 3 /* TNodeType.AnyRNode */) {\n if (value == null) {\n renderer.removeAttribute(element, attrName);\n }\n else {\n renderer.setAttribute(element, attrName, debugValue);\n }\n }\n else {\n const textContent = escapeCommentText(`bindings=${JSON.stringify({ [attrName]: debugValue }, null, 2)}`);\n renderer.setValue(element, textContent);\n }\n}\nfunction setNgReflectProperties(lView, element, type, dataValue, value) {\n if (type & (3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */)) {\n /**\n * dataValue is an array containing runtime input or output names for the directives:\n * i+0: directive instance index\n * i+1: privateName\n *\n * e.g. [0, 'change', 'change-minified']\n * we want to set the reflected property with the privateName: dataValue[i+1]\n */\n for (let i = 0; i < dataValue.length; i += 2) {\n setNgReflectProperty(lView, element, type, dataValue[i + 1], value);\n }\n }\n}\n/**\n * Resolve the matched directives on a node.\n */\nfunction resolveDirectives(tView, lView, tNode, localRefs) {\n // Please make sure to have explicit type for `exportsMap`. Inferred type triggers bug in\n // tsickle.\n ngDevMode && assertFirstCreatePass(tView);\n if (getBindingsEnabled()) {\n const exportsMap = localRefs === null ? null : { '': -1 };\n const matchResult = findDirectiveDefMatches(tView, tNode);\n let directiveDefs;\n let hostDirectiveDefs;\n if (matchResult === null) {\n directiveDefs = hostDirectiveDefs = null;\n }\n else {\n [directiveDefs, hostDirectiveDefs] = matchResult;\n }\n if (directiveDefs !== null) {\n initializeDirectives(tView, lView, tNode, directiveDefs, exportsMap, hostDirectiveDefs);\n }\n if (exportsMap)\n cacheMatchingLocalNames(tNode, localRefs, exportsMap);\n }\n // Merge the template attrs last so that they have the highest priority.\n tNode.mergedAttrs = mergeHostAttrs(tNode.mergedAttrs, tNode.attrs);\n}\n/** Initializes the data structures necessary for a list of directives to be instantiated. */\nfunction initializeDirectives(tView, lView, tNode, directives, exportsMap, hostDirectiveDefs) {\n ngDevMode && assertFirstCreatePass(tView);\n // Publishes the directive types to DI so they can be injected. Needs to\n // happen in a separate pass before the TNode flags have been initialized.\n for (let i = 0; i < directives.length; i++) {\n diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, directives[i].type);\n }\n initTNodeFlags(tNode, tView.data.length, directives.length);\n // When the same token is provided by several directives on the same node, some rules apply in\n // the viewEngine:\n // - viewProviders have priority over providers\n // - the last directive in NgModule.declarations has priority over the previous one\n // So to match these rules, the order in which providers are added in the arrays is very\n // important.\n for (let i = 0; i < directives.length; i++) {\n const def = directives[i];\n if (def.providersResolver)\n def.providersResolver(def);\n }\n let preOrderHooksFound = false;\n let preOrderCheckHooksFound = false;\n let directiveIdx = allocExpando(tView, lView, directives.length, null);\n ngDevMode &&\n assertSame(directiveIdx, tNode.directiveStart, 'TNode.directiveStart should point to just allocated space');\n for (let i = 0; i < directives.length; i++) {\n const def = directives[i];\n // Merge the attrs in the order of matches. This assumes that the first directive is the\n // component itself, so that the component has the least priority.\n tNode.mergedAttrs = mergeHostAttrs(tNode.mergedAttrs, def.hostAttrs);\n configureViewWithDirective(tView, tNode, lView, directiveIdx, def);\n saveNameToExportMap(directiveIdx, def, exportsMap);\n if (def.contentQueries !== null)\n tNode.flags |= 4 /* TNodeFlags.hasContentQuery */;\n if (def.hostBindings !== null || def.hostAttrs !== null || def.hostVars !== 0)\n tNode.flags |= 64 /* TNodeFlags.hasHostBindings */;\n const lifeCycleHooks = def.type.prototype;\n // Only push a node index into the preOrderHooks array if this is the first\n // pre-order hook found on this node.\n if (!preOrderHooksFound &&\n (lifeCycleHooks.ngOnChanges || lifeCycleHooks.ngOnInit || lifeCycleHooks.ngDoCheck)) {\n // We will push the actual hook function into this array later during dir instantiation.\n // We cannot do it now because we must ensure hooks are registered in the same\n // order that directives are created (i.e. injection order).\n (tView.preOrderHooks ??= []).push(tNode.index);\n preOrderHooksFound = true;\n }\n if (!preOrderCheckHooksFound && (lifeCycleHooks.ngOnChanges || lifeCycleHooks.ngDoCheck)) {\n (tView.preOrderCheckHooks ??= []).push(tNode.index);\n preOrderCheckHooksFound = true;\n }\n directiveIdx++;\n }\n initializeInputAndOutputAliases(tView, tNode, hostDirectiveDefs);\n}\n/**\n * Add `hostBindings` to the `TView.hostBindingOpCodes`.\n *\n * @param tView `TView` to which the `hostBindings` should be added.\n * @param tNode `TNode` the element which contains the directive\n * @param directiveIdx Directive index in view.\n * @param directiveVarsIdx Where will the directive's vars be stored\n * @param def `ComponentDef`/`DirectiveDef`, which contains the `hostVars`/`hostBindings` to add.\n */\nfunction registerHostBindingOpCodes(tView, tNode, directiveIdx, directiveVarsIdx, def) {\n ngDevMode && assertFirstCreatePass(tView);\n const hostBindings = def.hostBindings;\n if (hostBindings) {\n let hostBindingOpCodes = tView.hostBindingOpCodes;\n if (hostBindingOpCodes === null) {\n hostBindingOpCodes = tView.hostBindingOpCodes = [];\n }\n const elementIndx = ~tNode.index;\n if (lastSelectedElementIdx(hostBindingOpCodes) != elementIndx) {\n // Conditionally add select element so that we are more efficient in execution.\n // NOTE: this is strictly not necessary and it trades code size for runtime perf.\n // (We could just always add it.)\n hostBindingOpCodes.push(elementIndx);\n }\n hostBindingOpCodes.push(directiveIdx, directiveVarsIdx, hostBindings);\n }\n}\n/**\n * Returns the last selected element index in the `HostBindingOpCodes`\n *\n * For perf reasons we don't need to update the selected element index in `HostBindingOpCodes` only\n * if it changes. This method returns the last index (or '0' if not found.)\n *\n * Selected element index are only the ones which are negative.\n */\nfunction lastSelectedElementIdx(hostBindingOpCodes) {\n let i = hostBindingOpCodes.length;\n while (i > 0) {\n const value = hostBindingOpCodes[--i];\n if (typeof value === 'number' && value < 0) {\n return value;\n }\n }\n return 0;\n}\n/**\n * Instantiate all the directives that were previously resolved on the current node.\n */\nfunction instantiateAllDirectives(tView, lView, tNode, native) {\n const start = tNode.directiveStart;\n const end = tNode.directiveEnd;\n // The component view needs to be created before creating the node injector\n // since it is used to inject some special symbols like `ChangeDetectorRef`.\n if (isComponentHost(tNode)) {\n ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */);\n addComponentLogic(lView, tNode, tView.data[start + tNode.componentOffset]);\n }\n if (!tView.firstCreatePass) {\n getOrCreateNodeInjectorForNode(tNode, lView);\n }\n attachPatchData(native, lView);\n const initialInputs = tNode.initialInputs;\n for (let i = start; i < end; i++) {\n const def = tView.data[i];\n const directive = getNodeInjectable(lView, tView, i, tNode);\n attachPatchData(directive, lView);\n if (initialInputs !== null) {\n setInputsFromAttrs(lView, i - start, directive, def, tNode, initialInputs);\n }\n if (isComponentDef(def)) {\n const componentView = getComponentLViewByIndex(tNode.index, lView);\n componentView[CONTEXT] = getNodeInjectable(lView, tView, i, tNode);\n }\n }\n}\nfunction invokeDirectivesHostBindings(tView, lView, tNode) {\n const start = tNode.directiveStart;\n const end = tNode.directiveEnd;\n const elementIndex = tNode.index;\n const currentDirectiveIndex = getCurrentDirectiveIndex();\n try {\n setSelectedIndex(elementIndex);\n for (let dirIndex = start; dirIndex < end; dirIndex++) {\n const def = tView.data[dirIndex];\n const directive = lView[dirIndex];\n setCurrentDirectiveIndex(dirIndex);\n if (def.hostBindings !== null || def.hostVars !== 0 || def.hostAttrs !== null) {\n invokeHostBindingsInCreationMode(def, directive);\n }\n }\n }\n finally {\n setSelectedIndex(-1);\n setCurrentDirectiveIndex(currentDirectiveIndex);\n }\n}\n/**\n * Invoke the host bindings in creation mode.\n *\n * @param def `DirectiveDef` which may contain the `hostBindings` function.\n * @param directive Instance of directive.\n */\nfunction invokeHostBindingsInCreationMode(def, directive) {\n if (def.hostBindings !== null) {\n def.hostBindings(1 /* RenderFlags.Create */, directive);\n }\n}\n/**\n * Matches the current node against all available selectors.\n * If a component is matched (at most one), it is returned in first position in the array.\n */\nfunction findDirectiveDefMatches(tView, tNode) {\n ngDevMode && assertFirstCreatePass(tView);\n ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);\n const registry = tView.directiveRegistry;\n let matches = null;\n let hostDirectiveDefs = null;\n if (registry) {\n for (let i = 0; i < registry.length; i++) {\n const def = registry[i];\n if (isNodeMatchingSelectorList(tNode, def.selectors, /* isProjectionMode */ false)) {\n matches || (matches = []);\n if (isComponentDef(def)) {\n if (ngDevMode) {\n assertTNodeType(tNode, 2 /* TNodeType.Element */, `\"${tNode.value}\" tags cannot be used as component hosts. ` +\n `Please use a different tag to activate the ${stringify(def.type)} component.`);\n if (isComponentHost(tNode)) {\n throwMultipleComponentError(tNode, matches.find(isComponentDef).type, def.type);\n }\n }\n // Components are inserted at the front of the matches array so that their lifecycle\n // hooks run before any directive lifecycle hooks. This appears to be for ViewEngine\n // compatibility. This logic doesn't make sense with host directives, because it\n // would allow the host directives to undo any overrides the host may have made.\n // To handle this case, the host directives of components are inserted at the beginning\n // of the array, followed by the component. As such, the insertion order is as follows:\n // 1. Host directives belonging to the selector-matched component.\n // 2. Selector-matched component.\n // 3. Host directives belonging to selector-matched directives.\n // 4. Selector-matched directives.\n if (def.findHostDirectiveDefs !== null) {\n const hostDirectiveMatches = [];\n hostDirectiveDefs = hostDirectiveDefs || new Map();\n def.findHostDirectiveDefs(def, hostDirectiveMatches, hostDirectiveDefs);\n // Add all host directives declared on this component, followed by the component itself.\n // Host directives should execute first so the host has a chance to override changes\n // to the DOM made by them.\n matches.unshift(...hostDirectiveMatches, def);\n // Component is offset starting from the beginning of the host directives array.\n const componentOffset = hostDirectiveMatches.length;\n markAsComponentHost(tView, tNode, componentOffset);\n }\n else {\n // No host directives on this component, just add the\n // component def to the beginning of the matches.\n matches.unshift(def);\n markAsComponentHost(tView, tNode, 0);\n }\n }\n else {\n // Append any host directives to the matches first.\n hostDirectiveDefs = hostDirectiveDefs || new Map();\n def.findHostDirectiveDefs?.(def, matches, hostDirectiveDefs);\n matches.push(def);\n }\n }\n }\n }\n return matches === null ? null : [matches, hostDirectiveDefs];\n}\n/**\n * Marks a given TNode as a component's host. This consists of:\n * - setting the component offset on the TNode.\n * - storing index of component's host element so it will be queued for view refresh during CD.\n */\nfunction markAsComponentHost(tView, hostTNode, componentOffset) {\n ngDevMode && assertFirstCreatePass(tView);\n ngDevMode && assertGreaterThan(componentOffset, -1, 'componentOffset must be great than -1');\n hostTNode.componentOffset = componentOffset;\n (tView.components ??= []).push(hostTNode.index);\n}\n/** Caches local names and their matching directive indices for query and template lookups. */\nfunction cacheMatchingLocalNames(tNode, localRefs, exportsMap) {\n if (localRefs) {\n const localNames = tNode.localNames = [];\n // Local names must be stored in tNode in the same order that localRefs are defined\n // in the template to ensure the data is loaded in the same slots as their refs\n // in the template (for template queries).\n for (let i = 0; i < localRefs.length; i += 2) {\n const index = exportsMap[localRefs[i + 1]];\n if (index == null)\n throw new RuntimeError(-301 /* RuntimeErrorCode.EXPORT_NOT_FOUND */, ngDevMode && `Export of name '${localRefs[i + 1]}' not found!`);\n localNames.push(localRefs[i], index);\n }\n }\n}\n/**\n * Builds up an export map as directives are created, so local refs can be quickly mapped\n * to their directive instances.\n */\nfunction saveNameToExportMap(directiveIdx, def, exportsMap) {\n if (exportsMap) {\n if (def.exportAs) {\n for (let i = 0; i < def.exportAs.length; i++) {\n exportsMap[def.exportAs[i]] = directiveIdx;\n }\n }\n if (isComponentDef(def))\n exportsMap[''] = directiveIdx;\n }\n}\n/**\n * Initializes the flags on the current node, setting all indices to the initial index,\n * the directive count to 0, and adding the isComponent flag.\n * @param index the initial index\n */\nfunction initTNodeFlags(tNode, index, numberOfDirectives) {\n ngDevMode &&\n assertNotEqual(numberOfDirectives, tNode.directiveEnd - tNode.directiveStart, 'Reached the max number of directives');\n tNode.flags |= 1 /* TNodeFlags.isDirectiveHost */;\n // When the first directive is created on a node, save the index\n tNode.directiveStart = index;\n tNode.directiveEnd = index + numberOfDirectives;\n tNode.providerIndexes = index;\n}\n/**\n * Setup directive for instantiation.\n *\n * We need to create a `NodeInjectorFactory` which is then inserted in both the `Blueprint` as well\n * as `LView`. `TView` gets the `DirectiveDef`.\n *\n * @param tView `TView`\n * @param tNode `TNode`\n * @param lView `LView`\n * @param directiveIndex Index where the directive will be stored in the Expando.\n * @param def `DirectiveDef`\n */\nfunction configureViewWithDirective(tView, tNode, lView, directiveIndex, def) {\n ngDevMode &&\n assertGreaterThanOrEqual(directiveIndex, HEADER_OFFSET, 'Must be in Expando section');\n tView.data[directiveIndex] = def;\n const directiveFactory = def.factory || (def.factory = getFactoryDef(def.type, true));\n // Even though `directiveFactory` will already be using `ɵɵdirectiveInject` in its generated code,\n // we also want to support `inject()` directly from the directive constructor context so we set\n // `ɵɵdirectiveInject` as the inject implementation here too.\n const nodeInjectorFactory = new NodeInjectorFactory(directiveFactory, isComponentDef(def), ɵɵdirectiveInject);\n tView.blueprint[directiveIndex] = nodeInjectorFactory;\n lView[directiveIndex] = nodeInjectorFactory;\n registerHostBindingOpCodes(tView, tNode, directiveIndex, allocExpando(tView, lView, def.hostVars, NO_CHANGE), def);\n}\nfunction addComponentLogic(lView, hostTNode, def) {\n const native = getNativeByTNode(hostTNode, lView);\n const tView = getOrCreateComponentTView(def);\n // Only component views should be added to the view tree directly. Embedded views are\n // accessed through their containers because they may be removed / re-added later.\n const rendererFactory = lView[ENVIRONMENT].rendererFactory;\n let lViewFlags = 16 /* LViewFlags.CheckAlways */;\n if (def.signals) {\n lViewFlags = 4096 /* LViewFlags.SignalView */;\n }\n else if (def.onPush) {\n lViewFlags = 64 /* LViewFlags.Dirty */;\n }\n const componentView = addToViewTree(lView, createLView(lView, tView, null, lViewFlags, native, hostTNode, null, rendererFactory.createRenderer(native, def), null, null, null));\n // Component view will always be created before any injected LContainers,\n // so this is a regular element, wrap it with the component view\n lView[hostTNode.index] = componentView;\n}\nfunction elementAttributeInternal(tNode, lView, name, value, sanitizer, namespace) {\n if (ngDevMode) {\n assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');\n validateAgainstEventAttributes(name);\n assertTNodeType(tNode, 2 /* TNodeType.Element */, `Attempted to set attribute \\`${name}\\` on a container node. ` +\n `Host bindings are not valid on ng-container or ng-template.`);\n }\n const element = getNativeByTNode(tNode, lView);\n setElementAttribute(lView[RENDERER], element, namespace, tNode.value, name, value, sanitizer);\n}\nfunction setElementAttribute(renderer, element, namespace, tagName, name, value, sanitizer) {\n if (value == null) {\n ngDevMode && ngDevMode.rendererRemoveAttribute++;\n renderer.removeAttribute(element, name, namespace);\n }\n else {\n ngDevMode && ngDevMode.rendererSetAttribute++;\n const strValue = sanitizer == null ? renderStringify(value) : sanitizer(value, tagName || '', name);\n renderer.setAttribute(element, name, strValue, namespace);\n }\n}\n/**\n * Sets initial input properties on directive instances from attribute data\n *\n * @param lView Current LView that is being processed.\n * @param directiveIndex Index of the directive in directives array\n * @param instance Instance of the directive on which to set the initial inputs\n * @param def The directive def that contains the list of inputs\n * @param tNode The static data for this node\n */\nfunction setInputsFromAttrs(lView, directiveIndex, instance, def, tNode, initialInputData) {\n const initialInputs = initialInputData[directiveIndex];\n if (initialInputs !== null) {\n for (let i = 0; i < initialInputs.length;) {\n const publicName = initialInputs[i++];\n const privateName = initialInputs[i++];\n const value = initialInputs[i++];\n writeToDirectiveInput(def, instance, publicName, privateName, value);\n if (ngDevMode) {\n const nativeElement = getNativeByTNode(tNode, lView);\n setNgReflectProperty(lView, nativeElement, tNode.type, privateName, value);\n }\n }\n }\n}\nfunction writeToDirectiveInput(def, instance, publicName, privateName, value) {\n const prevConsumer = setActiveConsumer(null);\n try {\n const inputTransforms = def.inputTransforms;\n if (inputTransforms !== null && inputTransforms.hasOwnProperty(privateName)) {\n value = inputTransforms[privateName].call(instance, value);\n }\n if (def.setInput !== null) {\n def.setInput(instance, value, publicName, privateName);\n }\n else {\n instance[privateName] = value;\n }\n }\n finally {\n setActiveConsumer(prevConsumer);\n }\n}\n/**\n * Generates initialInputData for a node and stores it in the template's static storage\n * so subsequent template invocations don't have to recalculate it.\n *\n * initialInputData is an array containing values that need to be set as input properties\n * for directives on this node, but only once on creation. We need this array to support\n * the case where you set an @Input property of a directive using attribute-like syntax.\n * e.g. if you have a `name` @Input, you can set it once like this:\n *\n * <my-component name=\"Bess\"></my-component>\n *\n * @param inputs Input alias map that was generated from the directive def inputs.\n * @param directiveIndex Index of the directive that is currently being processed.\n * @param attrs Static attrs on this node.\n */\nfunction generateInitialInputs(inputs, directiveIndex, attrs) {\n let inputsToStore = null;\n let i = 0;\n while (i < attrs.length) {\n const attrName = attrs[i];\n if (attrName === 0 /* AttributeMarker.NamespaceURI */) {\n // We do not allow inputs on namespaced attributes.\n i += 4;\n continue;\n }\n else if (attrName === 5 /* AttributeMarker.ProjectAs */) {\n // Skip over the `ngProjectAs` value.\n i += 2;\n continue;\n }\n // If we hit any other attribute markers, we're done anyway. None of those are valid inputs.\n if (typeof attrName === 'number')\n break;\n if (inputs.hasOwnProperty(attrName)) {\n if (inputsToStore === null)\n inputsToStore = [];\n // Find the input's public name from the input store. Note that we can be found easier\n // through the directive def, but we want to do it using the inputs store so that it can\n // account for host directive aliases.\n const inputConfig = inputs[attrName];\n for (let j = 0; j < inputConfig.length; j += 2) {\n if (inputConfig[j] === directiveIndex) {\n inputsToStore.push(attrName, inputConfig[j + 1], attrs[i + 1]);\n // A directive can't have multiple inputs with the same name so we can break here.\n break;\n }\n }\n }\n i += 2;\n }\n return inputsToStore;\n}\n//////////////////////////\n//// ViewContainer & View\n//////////////////////////\n/**\n * Creates a LContainer, either from a container instruction, or for a ViewContainerRef.\n *\n * @param hostNative The host element for the LContainer\n * @param hostTNode The host TNode for the LContainer\n * @param currentView The parent view of the LContainer\n * @param native The native comment element\n * @param isForViewContainerRef Optional a flag indicating the ViewContainerRef case\n * @returns LContainer\n */\nfunction createLContainer(hostNative, currentView, native, tNode) {\n ngDevMode && assertLView(currentView);\n const lContainer = [\n hostNative,\n true,\n false,\n currentView,\n null,\n 0,\n tNode,\n native,\n null,\n null,\n null, // dehydrated views\n ];\n ngDevMode &&\n assertEqual(lContainer.length, CONTAINER_HEADER_OFFSET, 'Should allocate correct number of slots for LContainer header.');\n return lContainer;\n}\n/** Refreshes all content queries declared by directives in a given view */\nfunction refreshContentQueries(tView, lView) {\n const contentQueries = tView.contentQueries;\n if (contentQueries !== null) {\n for (let i = 0; i < contentQueries.length; i += 2) {\n const queryStartIdx = contentQueries[i];\n const directiveDefIdx = contentQueries[i + 1];\n if (directiveDefIdx !== -1) {\n const directiveDef = tView.data[directiveDefIdx];\n ngDevMode && assertDefined(directiveDef, 'DirectiveDef not found.');\n ngDevMode &&\n assertDefined(directiveDef.contentQueries, 'contentQueries function should be defined');\n setCurrentQueryIndex(queryStartIdx);\n directiveDef.contentQueries(2 /* RenderFlags.Update */, lView[directiveDefIdx], directiveDefIdx);\n }\n }\n }\n}\n/**\n * Adds LView or LContainer to the end of the current view tree.\n *\n * This structure will be used to traverse through nested views to remove listeners\n * and call onDestroy callbacks.\n *\n * @param lView The view where LView or LContainer should be added\n * @param adjustedHostIndex Index of the view's host node in LView[], adjusted for header\n * @param lViewOrLContainer The LView or LContainer to add to the view tree\n * @returns The state passed in\n */\nfunction addToViewTree(lView, lViewOrLContainer) {\n // TODO(benlesh/misko): This implementation is incorrect, because it always adds the LContainer\n // to the end of the queue, which means if the developer retrieves the LContainers from RNodes out\n // of order, the change detection will run out of order, as the act of retrieving the the\n // LContainer from the RNode is what adds it to the queue.\n if (lView[CHILD_HEAD]) {\n lView[CHILD_TAIL][NEXT] = lViewOrLContainer;\n }\n else {\n lView[CHILD_HEAD] = lViewOrLContainer;\n }\n lView[CHILD_TAIL] = lViewOrLContainer;\n return lViewOrLContainer;\n}\n///////////////////////////////\n//// Change detection\n///////////////////////////////\nfunction executeViewQueryFn(flags, viewQueryFn, component) {\n ngDevMode && assertDefined(viewQueryFn, 'View queries function to execute must be defined.');\n setCurrentQueryIndex(0);\n const prevConsumer = setActiveConsumer(null);\n try {\n viewQueryFn(flags, component);\n }\n finally {\n setActiveConsumer(prevConsumer);\n }\n}\n///////////////////////////////\n//// Bindings & interpolations\n///////////////////////////////\n/**\n * Stores meta-data for a property binding to be used by TestBed's `DebugElement.properties`.\n *\n * In order to support TestBed's `DebugElement.properties` we need to save, for each binding:\n * - a bound property name;\n * - a static parts of interpolated strings;\n *\n * A given property metadata is saved at the binding's index in the `TView.data` (in other words, a\n * property binding metadata will be stored in `TView.data` at the same index as a bound value in\n * `LView`). Metadata are represented as `INTERPOLATION_DELIMITER`-delimited string with the\n * following format:\n * - `propertyName` for bound properties;\n * - `propertyName�prefix�interpolation_static_part1�..interpolation_static_partN�suffix` for\n * interpolated properties.\n *\n * @param tData `TData` where meta-data will be saved;\n * @param tNode `TNode` that is a target of the binding;\n * @param propertyName bound property name;\n * @param bindingIndex binding index in `LView`\n * @param interpolationParts static interpolation parts (for property interpolations)\n */\nfunction storePropertyBindingMetadata(tData, tNode, propertyName, bindingIndex, ...interpolationParts) {\n // Binding meta-data are stored only the first time a given property instruction is processed.\n // Since we don't have a concept of the \"first update pass\" we need to check for presence of the\n // binding meta-data to decide if one should be stored (or if was stored already).\n if (tData[bindingIndex] === null) {\n if (tNode.inputs == null || !tNode.inputs[propertyName]) {\n const propBindingIdxs = tNode.propertyBindings || (tNode.propertyBindings = []);\n propBindingIdxs.push(bindingIndex);\n let bindingMetadata = propertyName;\n if (interpolationParts.length > 0) {\n bindingMetadata +=\n INTERPOLATION_DELIMITER + interpolationParts.join(INTERPOLATION_DELIMITER);\n }\n tData[bindingIndex] = bindingMetadata;\n }\n }\n}\nfunction getOrCreateLViewCleanup(view) {\n // top level variables should not be exported for performance reasons (PERF_NOTES.md)\n return view[CLEANUP] || (view[CLEANUP] = []);\n}\nfunction getOrCreateTViewCleanup(tView) {\n return tView.cleanup || (tView.cleanup = []);\n}\n/**\n * There are cases where the sub component's renderer needs to be included\n * instead of the current renderer (see the componentSyntheticHost* instructions).\n */\nfunction loadComponentRenderer(currentDef, tNode, lView) {\n // TODO(FW-2043): the `currentDef` is null when host bindings are invoked while creating root\n // component (see packages/core/src/render3/component.ts). This is not consistent with the process\n // of creating inner components, when current directive index is available in the state. In order\n // to avoid relying on current def being `null` (thus special-casing root component creation), the\n // process of creating root component should be unified with the process of creating inner\n // components.\n if (currentDef === null || isComponentDef(currentDef)) {\n lView = unwrapLView(lView[tNode.index]);\n }\n return lView[RENDERER];\n}\n/** Handles an error thrown in an LView. */\nfunction handleError(lView, error) {\n const injector = lView[INJECTOR$1];\n const errorHandler = injector ? injector.get(ErrorHandler, null) : null;\n errorHandler && errorHandler.handleError(error);\n}\n/**\n * Set the inputs of directives at the current node to corresponding value.\n *\n * @param tView The current TView\n * @param lView the `LView` which contains the directives.\n * @param inputs mapping between the public \"input\" name and privately-known,\n * possibly minified, property names to write to.\n * @param value Value to set.\n */\nfunction setInputsForProperty(tView, lView, inputs, publicName, value) {\n for (let i = 0; i < inputs.length;) {\n const index = inputs[i++];\n const privateName = inputs[i++];\n const instance = lView[index];\n ngDevMode && assertIndexInRange(lView, index);\n const def = tView.data[index];\n writeToDirectiveInput(def, instance, publicName, privateName, value);\n }\n}\n/**\n * Updates a text binding at a given index in a given LView.\n */\nfunction textBindingInternal(lView, index, value) {\n ngDevMode && assertString(value, 'Value should be a string');\n ngDevMode && assertNotSame(value, NO_CHANGE, 'value should not be NO_CHANGE');\n ngDevMode && assertIndexInRange(lView, index);\n const element = getNativeByIndex(index, lView);\n ngDevMode && assertDefined(element, 'native element should exist');\n updateTextNode(lView[RENDERER], element, value);\n}\n\nfunction renderComponent(hostLView, componentHostIdx) {\n ngDevMode && assertEqual(isCreationMode(hostLView), true, 'Should be run in creation mode');\n const componentView = getComponentLViewByIndex(componentHostIdx, hostLView);\n const componentTView = componentView[TVIEW];\n syncViewWithBlueprint(componentTView, componentView);\n const hostRNode = componentView[HOST];\n // Populate an LView with hydration info retrieved from the DOM via TransferState.\n if (hostRNode !== null && componentView[HYDRATION] === null) {\n componentView[HYDRATION] = retrieveHydrationInfo(hostRNode, componentView[INJECTOR$1]);\n }\n renderView(componentTView, componentView, componentView[CONTEXT]);\n}\n/**\n * Syncs an LView instance with its blueprint if they have gotten out of sync.\n *\n * Typically, blueprints and their view instances should always be in sync, so the loop here\n * will be skipped. However, consider this case of two components side-by-side:\n *\n * App template:\n * ```\n * <comp></comp>\n * <comp></comp>\n * ```\n *\n * The following will happen:\n * 1. App template begins processing.\n * 2. First <comp> is matched as a component and its LView is created.\n * 3. Second <comp> is matched as a component and its LView is created.\n * 4. App template completes processing, so it's time to check child templates.\n * 5. First <comp> template is checked. It has a directive, so its def is pushed to blueprint.\n * 6. Second <comp> template is checked. Its blueprint has been updated by the first\n * <comp> template, but its LView was created before this update, so it is out of sync.\n *\n * Note that embedded views inside ngFor loops will never be out of sync because these views\n * are processed as soon as they are created.\n *\n * @param tView The `TView` that contains the blueprint for syncing\n * @param lView The view to sync\n */\nfunction syncViewWithBlueprint(tView, lView) {\n for (let i = lView.length; i < tView.blueprint.length; i++) {\n lView.push(tView.blueprint[i]);\n }\n}\n/**\n * Processes a view in the creation mode. This includes a number of steps in a specific order:\n * - creating view query functions (if any);\n * - executing a template function in the creation mode;\n * - updating static queries (if any);\n * - creating child components defined in a given view.\n */\nfunction renderView(tView, lView, context) {\n ngDevMode && assertEqual(isCreationMode(lView), true, 'Should be run in creation mode');\n enterView(lView);\n try {\n const viewQuery = tView.viewQuery;\n if (viewQuery !== null) {\n executeViewQueryFn(1 /* RenderFlags.Create */, viewQuery, context);\n }\n // Execute a template associated with this view, if it exists. A template function might not be\n // defined for the root component views.\n const templateFn = tView.template;\n if (templateFn !== null) {\n executeTemplate(tView, lView, templateFn, 1 /* RenderFlags.Create */, context);\n }\n // This needs to be set before children are processed to support recursive components.\n // This must be set to false immediately after the first creation run because in an\n // ngFor loop, all the views will be created together before update mode runs and turns\n // off firstCreatePass. If we don't set it here, instances will perform directive\n // matching, etc again and again.\n if (tView.firstCreatePass) {\n tView.firstCreatePass = false;\n }\n // We resolve content queries specifically marked as `static` in creation mode. Dynamic\n // content queries are resolved during change detection (i.e. update mode), after embedded\n // views are refreshed (see block above).\n if (tView.staticContentQueries) {\n refreshContentQueries(tView, lView);\n }\n // We must materialize query results before child components are processed\n // in case a child component has projected a container. The LContainer needs\n // to exist so the embedded views are properly attached by the container.\n if (tView.staticViewQueries) {\n executeViewQueryFn(2 /* RenderFlags.Update */, tView.viewQuery, context);\n }\n // Render child component views.\n const components = tView.components;\n if (components !== null) {\n renderChildComponents(lView, components);\n }\n }\n catch (error) {\n // If we didn't manage to get past the first template pass due to\n // an error, mark the view as corrupted so we can try to recover.\n if (tView.firstCreatePass) {\n tView.incompleteFirstPass = true;\n tView.firstCreatePass = false;\n }\n throw error;\n }\n finally {\n lView[FLAGS] &= ~4 /* LViewFlags.CreationMode */;\n leaveView();\n }\n}\n/** Renders child components in the current view (creation mode). */\nfunction renderChildComponents(hostLView, components) {\n for (let i = 0; i < components.length; i++) {\n renderComponent(hostLView, components[i]);\n }\n}\n\n/**\n * Tracks all effects registered within a given application and runs them via `flush`.\n */\nclass EffectManager {\n constructor() {\n this.all = new Set();\n this.queue = new Map();\n }\n create(effectFn, destroyRef, allowSignalWrites) {\n const zone = (typeof Zone === 'undefined') ? null : Zone.current;\n const w = watch(effectFn, (watch) => {\n if (!this.all.has(watch)) {\n return;\n }\n this.queue.set(watch, zone);\n }, allowSignalWrites);\n this.all.add(w);\n // Effects start dirty.\n w.notify();\n let unregisterOnDestroy;\n const destroy = () => {\n w.cleanup();\n unregisterOnDestroy?.();\n this.all.delete(w);\n this.queue.delete(w);\n };\n unregisterOnDestroy = destroyRef?.onDestroy(destroy);\n return {\n destroy,\n };\n }\n flush() {\n if (this.queue.size === 0) {\n return;\n }\n for (const [watch, zone] of this.queue) {\n this.queue.delete(watch);\n if (zone) {\n zone.run(() => watch.run());\n }\n else {\n watch.run();\n }\n }\n }\n get isQueueEmpty() {\n return this.queue.size === 0;\n }\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({\n token: EffectManager,\n providedIn: 'root',\n factory: () => new EffectManager(),\n }); }\n}\n/**\n * Create a global `Effect` for the given reactive function.\n *\n * @developerPreview\n */\nfunction effect(effectFn, options) {\n !options?.injector && assertInInjectionContext(effect);\n const injector = options?.injector ?? inject(Injector);\n const effectManager = injector.get(EffectManager);\n const destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null;\n return effectManager.create(effectFn, destroyRef, !!options?.allowSignalWrites);\n}\n\n/**\n * Compute the static styling (class/style) from `TAttributes`.\n *\n * This function should be called during `firstCreatePass` only.\n *\n * @param tNode The `TNode` into which the styling information should be loaded.\n * @param attrs `TAttributes` containing the styling information.\n * @param writeToHost Where should the resulting static styles be written?\n * - `false` Write to `TNode.stylesWithoutHost` / `TNode.classesWithoutHost`\n * - `true` Write to `TNode.styles` / `TNode.classes`\n */\nfunction computeStaticStyling(tNode, attrs, writeToHost) {\n ngDevMode &&\n assertFirstCreatePass(getTView(), 'Expecting to be called in first template pass only');\n let styles = writeToHost ? tNode.styles : null;\n let classes = writeToHost ? tNode.classes : null;\n let mode = 0;\n if (attrs !== null) {\n for (let i = 0; i < attrs.length; i++) {\n const value = attrs[i];\n if (typeof value === 'number') {\n mode = value;\n }\n else if (mode == 1 /* AttributeMarker.Classes */) {\n classes = concatStringsWithSpace(classes, value);\n }\n else if (mode == 2 /* AttributeMarker.Styles */) {\n const style = value;\n const styleValue = attrs[++i];\n styles = concatStringsWithSpace(styles, style + ': ' + styleValue + ';');\n }\n }\n }\n writeToHost ? tNode.styles = styles : tNode.stylesWithoutHost = styles;\n writeToHost ? tNode.classes = classes : tNode.classesWithoutHost = classes;\n}\n\nfunction collectNativeNodes(tView, lView, tNode, result, isProjection = false) {\n while (tNode !== null) {\n ngDevMode &&\n assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 16 /* TNodeType.Projection */ | 32 /* TNodeType.Icu */);\n const lNode = lView[tNode.index];\n if (lNode !== null) {\n result.push(unwrapRNode(lNode));\n }\n // A given lNode can represent either a native node or a LContainer (when it is a host of a\n // ViewContainerRef). When we find a LContainer we need to descend into it to collect root nodes\n // from the views in this container.\n if (isLContainer(lNode)) {\n collectNativeNodesInLContainer(lNode, result);\n }\n const tNodeType = tNode.type;\n if (tNodeType & 8 /* TNodeType.ElementContainer */) {\n collectNativeNodes(tView, lView, tNode.child, result);\n }\n else if (tNodeType & 32 /* TNodeType.Icu */) {\n const nextRNode = icuContainerIterate(tNode, lView);\n let rNode;\n while (rNode = nextRNode()) {\n result.push(rNode);\n }\n }\n else if (tNodeType & 16 /* TNodeType.Projection */) {\n const nodesInSlot = getProjectionNodes(lView, tNode);\n if (Array.isArray(nodesInSlot)) {\n result.push(...nodesInSlot);\n }\n else {\n const parentView = getLViewParent(lView[DECLARATION_COMPONENT_VIEW]);\n ngDevMode && assertParentView(parentView);\n collectNativeNodes(parentView[TVIEW], parentView, nodesInSlot, result, true);\n }\n }\n tNode = isProjection ? tNode.projectionNext : tNode.next;\n }\n return result;\n}\n/**\n * Collects all root nodes in all views in a given LContainer.\n */\nfunction collectNativeNodesInLContainer(lContainer, result) {\n for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {\n const lViewInAContainer = lContainer[i];\n const lViewFirstChildTNode = lViewInAContainer[TVIEW].firstChild;\n if (lViewFirstChildTNode !== null) {\n collectNativeNodes(lViewInAContainer[TVIEW], lViewInAContainer, lViewFirstChildTNode, result);\n }\n }\n // When an LContainer is created, the anchor (comment) node is:\n // - (1) either reused in case of an ElementContainer (<ng-container>)\n // - (2) or a new comment node is created\n // In the first case, the anchor comment node would be added to the final\n // list by the code in the `collectNativeNodes` function\n // (see the `result.push(unwrapRNode(lNode))` line), but the second\n // case requires extra handling: the anchor node needs to be added to the\n // final list manually. See additional information in the `createAnchorNode`\n // function in the `view_container_ref.ts`.\n //\n // In the first case, the same reference would be stored in the `NATIVE`\n // and `HOST` slots in an LContainer. Otherwise, this is the second case and\n // we should add an element to the final list.\n if (lContainer[NATIVE] !== lContainer[HOST]) {\n result.push(lContainer[NATIVE]);\n }\n}\n\nfunction detectChangesInternal(tView, lView, context, notifyErrorHandler = true) {\n const environment = lView[ENVIRONMENT];\n const rendererFactory = environment.rendererFactory;\n const afterRenderEventManager = environment.afterRenderEventManager;\n // Check no changes mode is a dev only mode used to verify that bindings have not changed\n // since they were assigned. We do not want to invoke renderer factory functions in that mode\n // to avoid any possible side-effects.\n const checkNoChangesMode = !!ngDevMode && isInCheckNoChangesMode();\n if (!checkNoChangesMode) {\n rendererFactory.begin?.();\n afterRenderEventManager?.begin();\n }\n try {\n refreshView(tView, lView, tView.template, context);\n }\n catch (error) {\n if (notifyErrorHandler) {\n handleError(lView, error);\n }\n throw error;\n }\n finally {\n if (!checkNoChangesMode) {\n rendererFactory.end?.();\n // One final flush of the effects queue to catch any effects created in `ngAfterViewInit` or\n // other post-order hooks.\n environment.effectManager?.flush();\n // Invoke all callbacks registered via `after*Render`, if needed.\n afterRenderEventManager?.end();\n }\n }\n}\nfunction checkNoChangesInternal(tView, lView, context, notifyErrorHandler = true) {\n setIsInCheckNoChangesMode(true);\n try {\n detectChangesInternal(tView, lView, context, notifyErrorHandler);\n }\n finally {\n setIsInCheckNoChangesMode(false);\n }\n}\n/**\n * Synchronously perform change detection on a component (and possibly its sub-components).\n *\n * This function triggers change detection in a synchronous way on a component.\n *\n * @param component The component which the change detection should be performed on.\n */\nfunction detectChanges(component) {\n const view = getComponentViewByInstance(component);\n detectChangesInternal(view[TVIEW], view, component);\n}\n/**\n * Processes a view in update mode. This includes a number of steps in a specific order:\n * - executing a template function in update mode;\n * - executing hooks;\n * - refreshing queries;\n * - setting host bindings;\n * - refreshing child (embedded and component) views.\n */\nfunction refreshView(tView, lView, templateFn, context) {\n ngDevMode && assertEqual(isCreationMode(lView), false, 'Should be run in update mode');\n const flags = lView[FLAGS];\n if ((flags & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */)\n return;\n // Check no changes mode is a dev only mode used to verify that bindings have not changed\n // since they were assigned. We do not want to execute lifecycle hooks in that mode.\n const isInCheckNoChangesPass = ngDevMode && isInCheckNoChangesMode();\n !isInCheckNoChangesPass && lView[ENVIRONMENT].effectManager?.flush();\n enterView(lView);\n try {\n resetPreOrderHookFlags(lView);\n setBindingIndex(tView.bindingStartIndex);\n if (templateFn !== null) {\n executeTemplate(tView, lView, templateFn, 2 /* RenderFlags.Update */, context);\n }\n const hooksInitPhaseCompleted = (flags & 3 /* LViewFlags.InitPhaseStateMask */) === 3 /* InitPhaseState.InitPhaseCompleted */;\n // execute pre-order hooks (OnInit, OnChanges, DoCheck)\n // PERF WARNING: do NOT extract this to a separate function without running benchmarks\n if (!isInCheckNoChangesPass) {\n if (hooksInitPhaseCompleted) {\n const preOrderCheckHooks = tView.preOrderCheckHooks;\n if (preOrderCheckHooks !== null) {\n executeCheckHooks(lView, preOrderCheckHooks, null);\n }\n }\n else {\n const preOrderHooks = tView.preOrderHooks;\n if (preOrderHooks !== null) {\n executeInitAndCheckHooks(lView, preOrderHooks, 0 /* InitPhaseState.OnInitHooksToBeRun */, null);\n }\n incrementInitPhaseFlags(lView, 0 /* InitPhaseState.OnInitHooksToBeRun */);\n }\n }\n // First mark transplanted views that are declared in this lView as needing a refresh at their\n // insertion points. This is needed to avoid the situation where the template is defined in this\n // `LView` but its declaration appears after the insertion component.\n markTransplantedViewsForRefresh(lView);\n detectChangesInEmbeddedViews(lView, 2 /* ChangeDetectionMode.BugToForceRefreshAndIgnoreViewFlags */);\n // Content query results must be refreshed before content hooks are called.\n if (tView.contentQueries !== null) {\n refreshContentQueries(tView, lView);\n }\n // execute content hooks (AfterContentInit, AfterContentChecked)\n // PERF WARNING: do NOT extract this to a separate function without running benchmarks\n if (!isInCheckNoChangesPass) {\n if (hooksInitPhaseCompleted) {\n const contentCheckHooks = tView.contentCheckHooks;\n if (contentCheckHooks !== null) {\n executeCheckHooks(lView, contentCheckHooks);\n }\n }\n else {\n const contentHooks = tView.contentHooks;\n if (contentHooks !== null) {\n executeInitAndCheckHooks(lView, contentHooks, 1 /* InitPhaseState.AfterContentInitHooksToBeRun */);\n }\n incrementInitPhaseFlags(lView, 1 /* InitPhaseState.AfterContentInitHooksToBeRun */);\n }\n }\n processHostBindingOpCodes(tView, lView);\n // Refresh child component views.\n const components = tView.components;\n if (components !== null) {\n detectChangesInChildComponents(lView, components, 0 /* ChangeDetectionMode.Global */);\n }\n // View queries must execute after refreshing child components because a template in this view\n // could be inserted in a child component. If the view query executes before child component\n // refresh, the template might not yet be inserted.\n const viewQuery = tView.viewQuery;\n if (viewQuery !== null) {\n executeViewQueryFn(2 /* RenderFlags.Update */, viewQuery, context);\n }\n // execute view hooks (AfterViewInit, AfterViewChecked)\n // PERF WARNING: do NOT extract this to a separate function without running benchmarks\n if (!isInCheckNoChangesPass) {\n if (hooksInitPhaseCompleted) {\n const viewCheckHooks = tView.viewCheckHooks;\n if (viewCheckHooks !== null) {\n executeCheckHooks(lView, viewCheckHooks);\n }\n }\n else {\n const viewHooks = tView.viewHooks;\n if (viewHooks !== null) {\n executeInitAndCheckHooks(lView, viewHooks, 2 /* InitPhaseState.AfterViewInitHooksToBeRun */);\n }\n incrementInitPhaseFlags(lView, 2 /* InitPhaseState.AfterViewInitHooksToBeRun */);\n }\n }\n if (tView.firstUpdatePass === true) {\n // We need to make sure that we only flip the flag on successful `refreshView` only\n // Don't do this in `finally` block.\n // If we did this in `finally` block then an exception could block the execution of styling\n // instructions which in turn would be unable to insert themselves into the styling linked\n // list. The result of this would be that if the exception would not be throw on subsequent CD\n // the styling would be unable to process it data and reflect to the DOM.\n tView.firstUpdatePass = false;\n }\n // Do not reset the dirty state when running in check no changes mode. We don't want components\n // to behave differently depending on whether check no changes is enabled or not. For example:\n // Marking an OnPush component as dirty from within the `ngAfterViewInit` hook in order to\n // refresh a `NgClass` binding should work. If we would reset the dirty state in the check\n // no changes cycle, the component would be not be dirty for the next update pass. This would\n // be different in production mode where the component dirty state is not reset.\n if (!isInCheckNoChangesPass) {\n lView[FLAGS] &= ~(64 /* LViewFlags.Dirty */ | 8 /* LViewFlags.FirstLViewPass */);\n }\n clearViewRefreshFlag(lView);\n }\n finally {\n leaveView();\n }\n}\n/**\n * Goes over embedded views (ones created through ViewContainerRef APIs) and refreshes\n * them by executing an associated template function.\n */\nfunction detectChangesInEmbeddedViews(lView, mode) {\n for (let lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {\n for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {\n const embeddedLView = lContainer[i];\n detectChangesInView(embeddedLView, mode);\n }\n }\n}\n/**\n * Mark transplanted views as needing to be refreshed at their insertion points.\n *\n * @param lView The `LView` that may have transplanted views.\n */\nfunction markTransplantedViewsForRefresh(lView) {\n for (let lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {\n if (!lContainer[HAS_TRANSPLANTED_VIEWS])\n continue;\n const movedViews = lContainer[MOVED_VIEWS];\n ngDevMode && assertDefined(movedViews, 'Transplanted View flags set but missing MOVED_VIEWS');\n for (let i = 0; i < movedViews.length; i++) {\n const movedLView = movedViews[i];\n const insertionLContainer = movedLView[PARENT];\n ngDevMode && assertLContainer(insertionLContainer);\n markViewForRefresh(movedLView);\n }\n }\n}\n/**\n * Detects changes in a component by entering the component view and processing its bindings,\n * queries, etc. if it is CheckAlways, OnPush and Dirty, etc.\n *\n * @param componentHostIdx Element index in LView[] (adjusted for HEADER_OFFSET)\n */\nfunction detectChangesInComponent(hostLView, componentHostIdx, mode) {\n ngDevMode && assertEqual(isCreationMode(hostLView), false, 'Should be run in update mode');\n const componentView = getComponentLViewByIndex(componentHostIdx, hostLView);\n detectChangesInView(componentView, mode);\n}\n/**\n * Visits a view as part of change detection traversal.\n *\n * - If the view is detached, no additional traversal happens.\n *\n * The view is refreshed if:\n * - If the view is CheckAlways or Dirty and ChangeDetectionMode is `Global`\n * - If the view has the `RefreshTransplantedView` flag\n *\n * The view is not refreshed, but descendants are traversed in `ChangeDetectionMode.Targeted` if the\n * view has a non-zero TRANSPLANTED_VIEWS_TO_REFRESH counter.\n *\n */\nfunction detectChangesInView(lView, mode) {\n if (!viewAttachedToChangeDetector(lView)) {\n return;\n }\n const tView = lView[TVIEW];\n const flags = lView[FLAGS];\n if ((flags & (16 /* LViewFlags.CheckAlways */ | 64 /* LViewFlags.Dirty */) &&\n mode === 0 /* ChangeDetectionMode.Global */) ||\n flags & 1024 /* LViewFlags.RefreshView */ ||\n mode === 2 /* ChangeDetectionMode.BugToForceRefreshAndIgnoreViewFlags */) {\n refreshView(tView, lView, tView.template, lView[CONTEXT]);\n }\n else if (lView[DESCENDANT_VIEWS_TO_REFRESH] > 0) {\n detectChangesInEmbeddedViews(lView, 1 /* ChangeDetectionMode.Targeted */);\n const components = tView.components;\n if (components !== null) {\n detectChangesInChildComponents(lView, components, 1 /* ChangeDetectionMode.Targeted */);\n }\n }\n}\n/** Refreshes child components in the current view (update mode). */\nfunction detectChangesInChildComponents(hostLView, components, mode) {\n for (let i = 0; i < components.length; i++) {\n detectChangesInComponent(hostLView, components[i], mode);\n }\n}\n\nclass ViewRef$1 {\n get rootNodes() {\n const lView = this._lView;\n const tView = lView[TVIEW];\n return collectNativeNodes(tView, lView, tView.firstChild, []);\n }\n constructor(\n /**\n * This represents `LView` associated with the component when ViewRef is a ChangeDetectorRef.\n *\n * When ViewRef is created for a dynamic component, this also represents the `LView` for the\n * component.\n *\n * For a \"regular\" ViewRef created for an embedded view, this is the `LView` for the embedded\n * view.\n *\n * @internal\n */\n _lView, \n /**\n * This represents the `LView` associated with the point where `ChangeDetectorRef` was\n * requested.\n *\n * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.\n */\n _cdRefInjectingView) {\n this._lView = _lView;\n this._cdRefInjectingView = _cdRefInjectingView;\n this._appRef = null;\n this._attachedToViewContainer = false;\n }\n get context() {\n return this._lView[CONTEXT];\n }\n set context(value) {\n this._lView[CONTEXT] = value;\n }\n get destroyed() {\n return (this._lView[FLAGS] & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */;\n }\n destroy() {\n if (this._appRef) {\n this._appRef.detachView(this);\n }\n else if (this._attachedToViewContainer) {\n const parent = this._lView[PARENT];\n if (isLContainer(parent)) {\n const viewRefs = parent[VIEW_REFS];\n const index = viewRefs ? viewRefs.indexOf(this) : -1;\n if (index > -1) {\n ngDevMode &&\n assertEqual(index, parent.indexOf(this._lView) - CONTAINER_HEADER_OFFSET, 'An attached view should be in the same position within its container as its ViewRef in the VIEW_REFS array.');\n detachView(parent, index);\n removeFromArray(viewRefs, index);\n }\n }\n this._attachedToViewContainer = false;\n }\n destroyLView(this._lView[TVIEW], this._lView);\n }\n onDestroy(callback) {\n storeLViewOnDestroy(this._lView, callback);\n }\n /**\n * Marks a view and all of its ancestors dirty.\n *\n * This can be used to ensure an {@link ChangeDetectionStrategy#OnPush} component is\n * checked when it needs to be re-rendered but the two normal triggers haven't marked it\n * dirty (i.e. inputs haven't changed and events haven't fired in the view).\n *\n * <!-- TODO: Add a link to a chapter on OnPush components -->\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * @Component({\n * selector: 'app-root',\n * template: `Number of ticks: {{numberOfTicks}}`\n * changeDetection: ChangeDetectionStrategy.OnPush,\n * })\n * class AppComponent {\n * numberOfTicks = 0;\n *\n * constructor(private ref: ChangeDetectorRef) {\n * setInterval(() => {\n * this.numberOfTicks++;\n * // the following is required, otherwise the view will not be updated\n * this.ref.markForCheck();\n * }, 1000);\n * }\n * }\n * ```\n */\n markForCheck() {\n markViewDirty(this._cdRefInjectingView || this._lView);\n }\n /**\n * Detaches the view from the change detection tree.\n *\n * Detached views will not be checked during change detection runs until they are\n * re-attached, even if they are dirty. `detach` can be used in combination with\n * {@link ChangeDetectorRef#detectChanges} to implement local change\n * detection checks.\n *\n * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->\n * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->\n *\n * @usageNotes\n * ### Example\n *\n * The following example defines a component with a large list of readonly data.\n * Imagine the data changes constantly, many times per second. For performance reasons,\n * we want to check and update the list every five seconds. We can do that by detaching\n * the component's change detector and doing a local check every five seconds.\n *\n * ```typescript\n * class DataProvider {\n * // in a real application the returned data will be different every time\n * get data() {\n * return [1,2,3,4,5];\n * }\n * }\n *\n * @Component({\n * selector: 'giant-list',\n * template: `\n * <li *ngFor=\"let d of dataProvider.data\">Data {{d}}</li>\n * `,\n * })\n * class GiantList {\n * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {\n * ref.detach();\n * setInterval(() => {\n * this.ref.detectChanges();\n * }, 5000);\n * }\n * }\n *\n * @Component({\n * selector: 'app',\n * providers: [DataProvider],\n * template: `\n * <giant-list><giant-list>\n * `,\n * })\n * class App {\n * }\n * ```\n */\n detach() {\n this._lView[FLAGS] &= ~128 /* LViewFlags.Attached */;\n }\n /**\n * Re-attaches a view to the change detection tree.\n *\n * This can be used to re-attach views that were previously detached from the tree\n * using {@link ChangeDetectorRef#detach}. Views are attached to the tree by default.\n *\n * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->\n *\n * @usageNotes\n * ### Example\n *\n * The following example creates a component displaying `live` data. The component will detach\n * its change detector from the main change detector tree when the component's live property\n * is set to false.\n *\n * ```typescript\n * class DataProvider {\n * data = 1;\n *\n * constructor() {\n * setInterval(() => {\n * this.data = this.data * 2;\n * }, 500);\n * }\n * }\n *\n * @Component({\n * selector: 'live-data',\n * inputs: ['live'],\n * template: 'Data: {{dataProvider.data}}'\n * })\n * class LiveData {\n * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {}\n *\n * set live(value) {\n * if (value) {\n * this.ref.reattach();\n * } else {\n * this.ref.detach();\n * }\n * }\n * }\n *\n * @Component({\n * selector: 'app-root',\n * providers: [DataProvider],\n * template: `\n * Live Update: <input type=\"checkbox\" [(ngModel)]=\"live\">\n * <live-data [live]=\"live\"><live-data>\n * `,\n * })\n * class AppComponent {\n * live = true;\n * }\n * ```\n */\n reattach() {\n this._lView[FLAGS] |= 128 /* LViewFlags.Attached */;\n }\n /**\n * Checks the view and its children.\n *\n * This can also be used in combination with {@link ChangeDetectorRef#detach} to implement\n * local change detection checks.\n *\n * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->\n * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->\n *\n * @usageNotes\n * ### Example\n *\n * The following example defines a component with a large list of readonly data.\n * Imagine, the data changes constantly, many times per second. For performance reasons,\n * we want to check and update the list every five seconds.\n *\n * We can do that by detaching the component's change detector and doing a local change detection\n * check every five seconds.\n *\n * See {@link ChangeDetectorRef#detach} for more information.\n */\n detectChanges() {\n detectChangesInternal(this._lView[TVIEW], this._lView, this.context);\n }\n /**\n * Checks the change detector and its children, and throws if any changes are detected.\n *\n * This is used in development mode to verify that running change detection doesn't\n * introduce other changes.\n */\n checkNoChanges() {\n if (ngDevMode) {\n checkNoChangesInternal(this._lView[TVIEW], this._lView, this.context);\n }\n }\n attachToViewContainerRef() {\n if (this._appRef) {\n throw new RuntimeError(902 /* RuntimeErrorCode.VIEW_ALREADY_ATTACHED */, ngDevMode && 'This view is already attached directly to the ApplicationRef!');\n }\n this._attachedToViewContainer = true;\n }\n detachFromAppRef() {\n this._appRef = null;\n detachViewFromDOM(this._lView[TVIEW], this._lView);\n }\n attachToAppRef(appRef) {\n if (this._attachedToViewContainer) {\n throw new RuntimeError(902 /* RuntimeErrorCode.VIEW_ALREADY_ATTACHED */, ngDevMode && 'This view is already attached to a ViewContainer!');\n }\n this._appRef = appRef;\n }\n}\n/** @internal */\nclass RootViewRef extends ViewRef$1 {\n constructor(_view) {\n super(_view);\n this._view = _view;\n }\n detectChanges() {\n const lView = this._view;\n const tView = lView[TVIEW];\n const context = lView[CONTEXT];\n detectChangesInternal(tView, lView, context, false);\n }\n checkNoChanges() {\n if (ngDevMode) {\n const lView = this._view;\n const tView = lView[TVIEW];\n const context = lView[CONTEXT];\n checkNoChangesInternal(tView, lView, context, false);\n }\n }\n get context() {\n return null;\n }\n}\n\nclass ComponentFactoryResolver extends ComponentFactoryResolver$1 {\n /**\n * @param ngModule The NgModuleRef to which all resolved factories are bound.\n */\n constructor(ngModule) {\n super();\n this.ngModule = ngModule;\n }\n resolveComponentFactory(component) {\n ngDevMode && assertComponentType(component);\n const componentDef = getComponentDef(component);\n return new ComponentFactory(componentDef, this.ngModule);\n }\n}\nfunction toRefArray(map) {\n const array = [];\n for (let nonMinified in map) {\n if (map.hasOwnProperty(nonMinified)) {\n const minified = map[nonMinified];\n array.push({ propName: minified, templateName: nonMinified });\n }\n }\n return array;\n}\nfunction getNamespace(elementName) {\n const name = elementName.toLowerCase();\n return name === 'svg' ? SVG_NAMESPACE : (name === 'math' ? MATH_ML_NAMESPACE : null);\n}\n/**\n * Injector that looks up a value using a specific injector, before falling back to the module\n * injector. Used primarily when creating components or embedded views dynamically.\n */\nclass ChainedInjector {\n constructor(injector, parentInjector) {\n this.injector = injector;\n this.parentInjector = parentInjector;\n }\n get(token, notFoundValue, flags) {\n flags = convertToBitFlags(flags);\n const value = this.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, flags);\n if (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR ||\n notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) {\n // Return the value from the root element injector when\n // - it provides it\n // (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n // - the module injector should not be checked\n // (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n return value;\n }\n return this.parentInjector.get(token, notFoundValue, flags);\n }\n}\n/**\n * ComponentFactory interface implementation.\n */\nclass ComponentFactory extends ComponentFactory$1 {\n get inputs() {\n const componentDef = this.componentDef;\n const inputTransforms = componentDef.inputTransforms;\n const refArray = toRefArray(componentDef.inputs);\n if (inputTransforms !== null) {\n for (const input of refArray) {\n if (inputTransforms.hasOwnProperty(input.propName)) {\n input.transform = inputTransforms[input.propName];\n }\n }\n }\n return refArray;\n }\n get outputs() {\n return toRefArray(this.componentDef.outputs);\n }\n /**\n * @param componentDef The component definition.\n * @param ngModule The NgModuleRef to which the factory is bound.\n */\n constructor(componentDef, ngModule) {\n super();\n this.componentDef = componentDef;\n this.ngModule = ngModule;\n this.componentType = componentDef.type;\n this.selector = stringifyCSSSelectorList(componentDef.selectors);\n this.ngContentSelectors =\n componentDef.ngContentSelectors ? componentDef.ngContentSelectors : [];\n this.isBoundToModule = !!ngModule;\n }\n create(injector, projectableNodes, rootSelectorOrNode, environmentInjector) {\n environmentInjector = environmentInjector || this.ngModule;\n let realEnvironmentInjector = environmentInjector instanceof EnvironmentInjector ?\n environmentInjector :\n environmentInjector?.injector;\n if (realEnvironmentInjector && this.componentDef.getStandaloneInjector !== null) {\n realEnvironmentInjector = this.componentDef.getStandaloneInjector(realEnvironmentInjector) ||\n realEnvironmentInjector;\n }\n const rootViewInjector = realEnvironmentInjector ? new ChainedInjector(injector, realEnvironmentInjector) : injector;\n const rendererFactory = rootViewInjector.get(RendererFactory2, null);\n if (rendererFactory === null) {\n throw new RuntimeError(407 /* RuntimeErrorCode.RENDERER_NOT_FOUND */, ngDevMode &&\n 'Angular was not able to inject a renderer (RendererFactory2). ' +\n 'Likely this is due to a broken DI hierarchy. ' +\n 'Make sure that any injector used to create this component has a correct parent.');\n }\n const sanitizer = rootViewInjector.get(Sanitizer, null);\n const effectManager = rootViewInjector.get(EffectManager, null);\n const afterRenderEventManager = rootViewInjector.get(AfterRenderEventManager, null);\n const environment = {\n rendererFactory,\n sanitizer,\n effectManager,\n afterRenderEventManager,\n };\n const hostRenderer = rendererFactory.createRenderer(null, this.componentDef);\n // Determine a tag name used for creating host elements when this component is created\n // dynamically. Default to 'div' if this component did not specify any tag name in its selector.\n const elementName = this.componentDef.selectors[0][0] || 'div';\n const hostRNode = rootSelectorOrNode ?\n locateHostElement(hostRenderer, rootSelectorOrNode, this.componentDef.encapsulation, rootViewInjector) :\n createElementNode(hostRenderer, elementName, getNamespace(elementName));\n // Signal components use the granular \"RefreshView\" for change detection\n const signalFlags = (4096 /* LViewFlags.SignalView */ | 512 /* LViewFlags.IsRoot */);\n // Non-signal components use the traditional \"CheckAlways or OnPush/Dirty\" change detection\n const nonSignalFlags = this.componentDef.onPush ? 64 /* LViewFlags.Dirty */ | 512 /* LViewFlags.IsRoot */ :\n 16 /* LViewFlags.CheckAlways */ | 512 /* LViewFlags.IsRoot */;\n const rootFlags = this.componentDef.signals ? signalFlags : nonSignalFlags;\n let hydrationInfo = null;\n if (hostRNode !== null) {\n hydrationInfo = retrieveHydrationInfo(hostRNode, rootViewInjector, true /* isRootView */);\n }\n // Create the root view. Uses empty TView and ContentTemplate.\n const rootTView = createTView(0 /* TViewType.Root */, null, null, 1, 0, null, null, null, null, null, null);\n const rootLView = createLView(null, rootTView, null, rootFlags, null, null, environment, hostRenderer, rootViewInjector, null, hydrationInfo);\n // rootView is the parent when bootstrapping\n // TODO(misko): it looks like we are entering view here but we don't really need to as\n // `renderView` does that. However as the code is written it is needed because\n // `createRootComponentView` and `createRootComponent` both read global state. Fixing those\n // issues would allow us to drop this.\n enterView(rootLView);\n let component;\n let tElementNode;\n try {\n const rootComponentDef = this.componentDef;\n let rootDirectives;\n let hostDirectiveDefs = null;\n if (rootComponentDef.findHostDirectiveDefs) {\n rootDirectives = [];\n hostDirectiveDefs = new Map();\n rootComponentDef.findHostDirectiveDefs(rootComponentDef, rootDirectives, hostDirectiveDefs);\n rootDirectives.push(rootComponentDef);\n }\n else {\n rootDirectives = [rootComponentDef];\n }\n const hostTNode = createRootComponentTNode(rootLView, hostRNode);\n const componentView = createRootComponentView(hostTNode, hostRNode, rootComponentDef, rootDirectives, rootLView, environment, hostRenderer);\n tElementNode = getTNode(rootTView, HEADER_OFFSET);\n // TODO(crisbeto): in practice `hostRNode` should always be defined, but there are some tests\n // where the renderer is mocked out and `undefined` is returned. We should update the tests so\n // that this check can be removed.\n if (hostRNode) {\n setRootNodeAttributes(hostRenderer, rootComponentDef, hostRNode, rootSelectorOrNode);\n }\n if (projectableNodes !== undefined) {\n projectNodes(tElementNode, this.ngContentSelectors, projectableNodes);\n }\n // TODO: should LifecycleHooksFeature and other host features be generated by the compiler and\n // executed here?\n // Angular 5 reference: https://stackblitz.com/edit/lifecycle-hooks-vcref\n component = createRootComponent(componentView, rootComponentDef, rootDirectives, hostDirectiveDefs, rootLView, [LifecycleHooksFeature]);\n renderView(rootTView, rootLView, null);\n }\n finally {\n leaveView();\n }\n return new ComponentRef(this.componentType, component, createElementRef(tElementNode, rootLView), rootLView, tElementNode);\n }\n}\n/**\n * Represents an instance of a Component created via a {@link ComponentFactory}.\n *\n * `ComponentRef` provides access to the Component Instance as well other objects related to this\n * Component Instance and allows you to destroy the Component Instance via the {@link #destroy}\n * method.\n *\n */\nclass ComponentRef extends ComponentRef$1 {\n constructor(componentType, instance, location, _rootLView, _tNode) {\n super();\n this.location = location;\n this._rootLView = _rootLView;\n this._tNode = _tNode;\n this.previousInputValues = null;\n this.instance = instance;\n this.hostView = this.changeDetectorRef = new RootViewRef(_rootLView);\n this.componentType = componentType;\n }\n setInput(name, value) {\n const inputData = this._tNode.inputs;\n let dataValue;\n if (inputData !== null && (dataValue = inputData[name])) {\n this.previousInputValues ??= new Map();\n // Do not set the input if it is the same as the last value\n // This behavior matches `bindingUpdated` when binding inputs in templates.\n if (this.previousInputValues.has(name) &&\n Object.is(this.previousInputValues.get(name), value)) {\n return;\n }\n const lView = this._rootLView;\n setInputsForProperty(lView[TVIEW], lView, dataValue, name, value);\n this.previousInputValues.set(name, value);\n const childComponentLView = getComponentLViewByIndex(this._tNode.index, lView);\n markViewDirty(childComponentLView);\n }\n else {\n if (ngDevMode) {\n const cmpNameForError = stringifyForError(this.componentType);\n let message = `Can't set value of the '${name}' input on the '${cmpNameForError}' component. `;\n message += `Make sure that the '${name}' property is annotated with @Input() or a mapped @Input('${name}') exists.`;\n reportUnknownPropertyError(message);\n }\n }\n }\n get injector() {\n return new NodeInjector(this._tNode, this._rootLView);\n }\n destroy() {\n this.hostView.destroy();\n }\n onDestroy(callback) {\n this.hostView.onDestroy(callback);\n }\n}\n/** Creates a TNode that can be used to instantiate a root component. */\nfunction createRootComponentTNode(lView, rNode) {\n const tView = lView[TVIEW];\n const index = HEADER_OFFSET;\n ngDevMode && assertIndexInRange(lView, index);\n lView[index] = rNode;\n // '#host' is added here as we don't know the real host DOM name (we don't want to read it) and at\n // the same time we want to communicate the debug `TNode` that this is a special `TNode`\n // representing a host element.\n return getOrCreateTNode(tView, index, 2 /* TNodeType.Element */, '#host', null);\n}\n/**\n * Creates the root component view and the root component node.\n *\n * @param hostRNode Render host element.\n * @param rootComponentDef ComponentDef\n * @param rootView The parent view where the host node is stored\n * @param rendererFactory Factory to be used for creating child renderers.\n * @param hostRenderer The current renderer\n * @param sanitizer The sanitizer, if provided\n *\n * @returns Component view created\n */\nfunction createRootComponentView(tNode, hostRNode, rootComponentDef, rootDirectives, rootView, environment, hostRenderer) {\n const tView = rootView[TVIEW];\n applyRootComponentStyling(rootDirectives, tNode, hostRNode, hostRenderer);\n // Hydration info is on the host element and needs to be retrieved\n // and passed to the component LView.\n let hydrationInfo = null;\n if (hostRNode !== null) {\n hydrationInfo = retrieveHydrationInfo(hostRNode, rootView[INJECTOR$1]);\n }\n const viewRenderer = environment.rendererFactory.createRenderer(hostRNode, rootComponentDef);\n let lViewFlags = 16 /* LViewFlags.CheckAlways */;\n if (rootComponentDef.signals) {\n lViewFlags = 4096 /* LViewFlags.SignalView */;\n }\n else if (rootComponentDef.onPush) {\n lViewFlags = 64 /* LViewFlags.Dirty */;\n }\n const componentView = createLView(rootView, getOrCreateComponentTView(rootComponentDef), null, lViewFlags, rootView[tNode.index], tNode, environment, viewRenderer, null, null, hydrationInfo);\n if (tView.firstCreatePass) {\n markAsComponentHost(tView, tNode, rootDirectives.length - 1);\n }\n addToViewTree(rootView, componentView);\n // Store component view at node index, with node as the HOST\n return rootView[tNode.index] = componentView;\n}\n/** Sets up the styling information on a root component. */\nfunction applyRootComponentStyling(rootDirectives, tNode, rNode, hostRenderer) {\n for (const def of rootDirectives) {\n tNode.mergedAttrs = mergeHostAttrs(tNode.mergedAttrs, def.hostAttrs);\n }\n if (tNode.mergedAttrs !== null) {\n computeStaticStyling(tNode, tNode.mergedAttrs, true);\n if (rNode !== null) {\n setupStaticAttributes(hostRenderer, rNode, tNode);\n }\n }\n}\n/**\n * Creates a root component and sets it up with features and host bindings.Shared by\n * renderComponent() and ViewContainerRef.createComponent().\n */\nfunction createRootComponent(componentView, rootComponentDef, rootDirectives, hostDirectiveDefs, rootLView, hostFeatures) {\n const rootTNode = getCurrentTNode();\n ngDevMode && assertDefined(rootTNode, 'tNode should have been already created');\n const tView = rootLView[TVIEW];\n const native = getNativeByTNode(rootTNode, rootLView);\n initializeDirectives(tView, rootLView, rootTNode, rootDirectives, null, hostDirectiveDefs);\n for (let i = 0; i < rootDirectives.length; i++) {\n const directiveIndex = rootTNode.directiveStart + i;\n const directiveInstance = getNodeInjectable(rootLView, tView, directiveIndex, rootTNode);\n attachPatchData(directiveInstance, rootLView);\n }\n invokeDirectivesHostBindings(tView, rootLView, rootTNode);\n if (native) {\n attachPatchData(native, rootLView);\n }\n // We're guaranteed for the `componentOffset` to be positive here\n // since a root component always matches a component def.\n ngDevMode &&\n assertGreaterThan(rootTNode.componentOffset, -1, 'componentOffset must be great than -1');\n const component = getNodeInjectable(rootLView, tView, rootTNode.directiveStart + rootTNode.componentOffset, rootTNode);\n componentView[CONTEXT] = rootLView[CONTEXT] = component;\n if (hostFeatures !== null) {\n for (const feature of hostFeatures) {\n feature(component, rootComponentDef);\n }\n }\n // We want to generate an empty QueryList for root content queries for backwards\n // compatibility with ViewEngine.\n executeContentQueries(tView, rootTNode, componentView);\n return component;\n}\n/** Sets the static attributes on a root component. */\nfunction setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {\n if (rootSelectorOrNode) {\n setUpAttributes(hostRenderer, hostRNode, ['ng-version', VERSION.full]);\n }\n else {\n // If host element is created as a part of this function call (i.e. `rootSelectorOrNode`\n // is not defined), also apply attributes and classes extracted from component selector.\n // Extract attributes and classes from the first selector only to match VE behavior.\n const { attrs, classes } = extractAttrsAndClassesFromSelector(componentDef.selectors[0]);\n if (attrs) {\n setUpAttributes(hostRenderer, hostRNode, attrs);\n }\n if (classes && classes.length > 0) {\n writeDirectClass(hostRenderer, hostRNode, classes.join(' '));\n }\n }\n}\n/** Projects the `projectableNodes` that were specified when creating a root component. */\nfunction projectNodes(tNode, ngContentSelectors, projectableNodes) {\n const projection = tNode.projection = [];\n for (let i = 0; i < ngContentSelectors.length; i++) {\n const nodesforSlot = projectableNodes[i];\n // Projectable nodes can be passed as array of arrays or an array of iterables (ngUpgrade\n // case). Here we do normalize passed data structure to be an array of arrays to avoid\n // complex checks down the line.\n // We also normalize the length of the passed in projectable nodes (to match the number of\n // <ng-container> slots defined by a component).\n projection.push(nodesforSlot != null ? Array.from(nodesforSlot) : null);\n }\n}\n/**\n * Used to enable lifecycle hooks on the root component.\n *\n * Include this feature when calling `renderComponent` if the root component\n * you are rendering has lifecycle hooks defined. Otherwise, the hooks won't\n * be called properly.\n *\n * Example:\n *\n * ```\n * renderComponent(AppComponent, {hostFeatures: [LifecycleHooksFeature]});\n * ```\n */\nfunction LifecycleHooksFeature() {\n const tNode = getCurrentTNode();\n ngDevMode && assertDefined(tNode, 'TNode is required');\n registerPostOrderHooks(getLView()[TVIEW], tNode);\n}\n\nfunction getSuperType(type) {\n return Object.getPrototypeOf(type.prototype).constructor;\n}\n/**\n * Merges the definition from a super class to a sub class.\n * @param definition The definition that is a SubClass of another directive of component\n *\n * @codeGenApi\n */\nfunction ɵɵInheritDefinitionFeature(definition) {\n let superType = getSuperType(definition.type);\n let shouldInheritFields = true;\n const inheritanceChain = [definition];\n while (superType) {\n let superDef = undefined;\n if (isComponentDef(definition)) {\n // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.\n superDef = superType.ɵcmp || superType.ɵdir;\n }\n else {\n if (superType.ɵcmp) {\n throw new RuntimeError(903 /* RuntimeErrorCode.INVALID_INHERITANCE */, ngDevMode &&\n `Directives cannot inherit Components. Directive ${stringifyForError(definition.type)} is attempting to extend component ${stringifyForError(superType)}`);\n }\n // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.\n superDef = superType.ɵdir;\n }\n if (superDef) {\n if (shouldInheritFields) {\n inheritanceChain.push(superDef);\n // Some fields in the definition may be empty, if there were no values to put in them that\n // would've justified object creation. Unwrap them if necessary.\n const writeableDef = definition;\n writeableDef.inputs = maybeUnwrapEmpty(definition.inputs);\n writeableDef.inputTransforms = maybeUnwrapEmpty(definition.inputTransforms);\n writeableDef.declaredInputs = maybeUnwrapEmpty(definition.declaredInputs);\n writeableDef.outputs = maybeUnwrapEmpty(definition.outputs);\n // Merge hostBindings\n const superHostBindings = superDef.hostBindings;\n superHostBindings && inheritHostBindings(definition, superHostBindings);\n // Merge queries\n const superViewQuery = superDef.viewQuery;\n const superContentQueries = superDef.contentQueries;\n superViewQuery && inheritViewQuery(definition, superViewQuery);\n superContentQueries && inheritContentQueries(definition, superContentQueries);\n // Merge inputs and outputs\n fillProperties(definition.inputs, superDef.inputs);\n fillProperties(definition.declaredInputs, superDef.declaredInputs);\n fillProperties(definition.outputs, superDef.outputs);\n if (superDef.inputTransforms !== null) {\n if (writeableDef.inputTransforms === null) {\n writeableDef.inputTransforms = {};\n }\n fillProperties(writeableDef.inputTransforms, superDef.inputTransforms);\n }\n // Merge animations metadata.\n // If `superDef` is a Component, the `data` field is present (defaults to an empty object).\n if (isComponentDef(superDef) && superDef.data.animation) {\n // If super def is a Component, the `definition` is also a Component, since Directives can\n // not inherit Components (we throw an error above and cannot reach this code).\n const defData = definition.data;\n defData.animation = (defData.animation || []).concat(superDef.data.animation);\n }\n }\n // Run parent features\n const features = superDef.features;\n if (features) {\n for (let i = 0; i < features.length; i++) {\n const feature = features[i];\n if (feature && feature.ngInherit) {\n feature(definition);\n }\n // If `InheritDefinitionFeature` is a part of the current `superDef`, it means that this\n // def already has all the necessary information inherited from its super class(es), so we\n // can stop merging fields from super classes. However we need to iterate through the\n // prototype chain to look for classes that might contain other \"features\" (like\n // NgOnChanges), which we should invoke for the original `definition`. We set the\n // `shouldInheritFields` flag to indicate that, essentially skipping fields inheritance\n // logic and only invoking functions from the \"features\" list.\n if (feature === ɵɵInheritDefinitionFeature) {\n shouldInheritFields = false;\n }\n }\n }\n }\n superType = Object.getPrototypeOf(superType);\n }\n mergeHostAttrsAcrossInheritance(inheritanceChain);\n}\n/**\n * Merge the `hostAttrs` and `hostVars` from the inherited parent to the base class.\n *\n * @param inheritanceChain A list of `WritableDefs` starting at the top most type and listing\n * sub-types in order. For each type take the `hostAttrs` and `hostVars` and merge it with the child\n * type.\n */\nfunction mergeHostAttrsAcrossInheritance(inheritanceChain) {\n let hostVars = 0;\n let hostAttrs = null;\n // We process the inheritance order from the base to the leaves here.\n for (let i = inheritanceChain.length - 1; i >= 0; i--) {\n const def = inheritanceChain[i];\n // For each `hostVars`, we need to add the superclass amount.\n def.hostVars = (hostVars += def.hostVars);\n // for each `hostAttrs` we need to merge it with superclass.\n def.hostAttrs =\n mergeHostAttrs(def.hostAttrs, hostAttrs = mergeHostAttrs(hostAttrs, def.hostAttrs));\n }\n}\nfunction maybeUnwrapEmpty(value) {\n if (value === EMPTY_OBJ) {\n return {};\n }\n else if (value === EMPTY_ARRAY) {\n return [];\n }\n else {\n return value;\n }\n}\nfunction inheritViewQuery(definition, superViewQuery) {\n const prevViewQuery = definition.viewQuery;\n if (prevViewQuery) {\n definition.viewQuery = (rf, ctx) => {\n superViewQuery(rf, ctx);\n prevViewQuery(rf, ctx);\n };\n }\n else {\n definition.viewQuery = superViewQuery;\n }\n}\nfunction inheritContentQueries(definition, superContentQueries) {\n const prevContentQueries = definition.contentQueries;\n if (prevContentQueries) {\n definition.contentQueries = (rf, ctx, directiveIndex) => {\n superContentQueries(rf, ctx, directiveIndex);\n prevContentQueries(rf, ctx, directiveIndex);\n };\n }\n else {\n definition.contentQueries = superContentQueries;\n }\n}\nfunction inheritHostBindings(definition, superHostBindings) {\n const prevHostBindings = definition.hostBindings;\n if (prevHostBindings) {\n definition.hostBindings = (rf, ctx) => {\n superHostBindings(rf, ctx);\n prevHostBindings(rf, ctx);\n };\n }\n else {\n definition.hostBindings = superHostBindings;\n }\n}\n\n/**\n * Fields which exist on either directive or component definitions, and need to be copied from\n * parent to child classes by the `ɵɵCopyDefinitionFeature`.\n */\nconst COPY_DIRECTIVE_FIELDS = [\n // The child class should use the providers of its parent.\n 'providersResolver',\n // Not listed here are any fields which are handled by the `ɵɵInheritDefinitionFeature`, such\n // as inputs, outputs, and host binding functions.\n];\n/**\n * Fields which exist only on component definitions, and need to be copied from parent to child\n * classes by the `ɵɵCopyDefinitionFeature`.\n *\n * The type here allows any field of `ComponentDef` which is not also a property of `DirectiveDef`,\n * since those should go in `COPY_DIRECTIVE_FIELDS` above.\n */\nconst COPY_COMPONENT_FIELDS = [\n // The child class should use the template function of its parent, including all template\n // semantics.\n 'template',\n 'decls',\n 'consts',\n 'vars',\n 'onPush',\n 'ngContentSelectors',\n // The child class should use the CSS styles of its parent, including all styling semantics.\n 'styles',\n 'encapsulation',\n // The child class should be checked by the runtime in the same way as its parent.\n 'schemas',\n];\n/**\n * Copies the fields not handled by the `ɵɵInheritDefinitionFeature` from the supertype of a\n * definition.\n *\n * This exists primarily to support ngcc migration of an existing View Engine pattern, where an\n * entire decorator is inherited from a parent to a child class. When ngcc detects this case, it\n * generates a skeleton definition on the child class, and applies this feature.\n *\n * The `ɵɵCopyDefinitionFeature` then copies any needed fields from the parent class' definition,\n * including things like the component template function.\n *\n * @param definition The definition of a child class which inherits from a parent class with its\n * own definition.\n *\n * @codeGenApi\n */\nfunction ɵɵCopyDefinitionFeature(definition) {\n let superType = getSuperType(definition.type);\n let superDef = undefined;\n if (isComponentDef(definition)) {\n // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.\n superDef = superType.ɵcmp;\n }\n else {\n // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.\n superDef = superType.ɵdir;\n }\n // Needed because `definition` fields are readonly.\n const defAny = definition;\n // Copy over any fields that apply to either directives or components.\n for (const field of COPY_DIRECTIVE_FIELDS) {\n defAny[field] = superDef[field];\n }\n if (isComponentDef(superDef)) {\n // Copy over any component-specific fields.\n for (const field of COPY_COMPONENT_FIELDS) {\n defAny[field] = superDef[field];\n }\n }\n}\n\n/**\n * This feature adds the host directives behavior to a directive definition by patching a\n * function onto it. The expectation is that the runtime will invoke the function during\n * directive matching.\n *\n * For example:\n * ```ts\n * class ComponentWithHostDirective {\n * static ɵcmp = defineComponent({\n * type: ComponentWithHostDirective,\n * features: [ɵɵHostDirectivesFeature([\n * SimpleHostDirective,\n * {directive: AdvancedHostDirective, inputs: ['foo: alias'], outputs: ['bar']},\n * ])]\n * });\n * }\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵHostDirectivesFeature(rawHostDirectives) {\n return (definition) => {\n definition.findHostDirectiveDefs = findHostDirectiveDefs;\n definition.hostDirectives =\n (Array.isArray(rawHostDirectives) ? rawHostDirectives : rawHostDirectives()).map(dir => {\n return typeof dir === 'function' ?\n { directive: resolveForwardRef(dir), inputs: EMPTY_OBJ, outputs: EMPTY_OBJ } :\n {\n directive: resolveForwardRef(dir.directive),\n inputs: bindingArrayToMap(dir.inputs),\n outputs: bindingArrayToMap(dir.outputs)\n };\n });\n };\n}\nfunction findHostDirectiveDefs(currentDef, matchedDefs, hostDirectiveDefs) {\n if (currentDef.hostDirectives !== null) {\n for (const hostDirectiveConfig of currentDef.hostDirectives) {\n const hostDirectiveDef = getDirectiveDef(hostDirectiveConfig.directive);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n validateHostDirective(hostDirectiveConfig, hostDirectiveDef, matchedDefs);\n }\n // We need to patch the `declaredInputs` so that\n // `ngOnChanges` can map the properties correctly.\n patchDeclaredInputs(hostDirectiveDef.declaredInputs, hostDirectiveConfig.inputs);\n // Host directives execute before the host so that its host bindings can be overwritten.\n findHostDirectiveDefs(hostDirectiveDef, matchedDefs, hostDirectiveDefs);\n hostDirectiveDefs.set(hostDirectiveDef, hostDirectiveConfig);\n matchedDefs.push(hostDirectiveDef);\n }\n }\n}\n/**\n * Converts an array in the form of `['publicName', 'alias', 'otherPublicName', 'otherAlias']` into\n * a map in the form of `{publicName: 'alias', otherPublicName: 'otherAlias'}`.\n */\nfunction bindingArrayToMap(bindings) {\n if (bindings === undefined || bindings.length === 0) {\n return EMPTY_OBJ;\n }\n const result = {};\n for (let i = 0; i < bindings.length; i += 2) {\n result[bindings[i]] = bindings[i + 1];\n }\n return result;\n}\n/**\n * `ngOnChanges` has some leftover legacy ViewEngine behavior where the keys inside the\n * `SimpleChanges` event refer to the *declared* name of the input, not its public name or its\n * minified name. E.g. in `@Input('alias') foo: string`, the name in the `SimpleChanges` object\n * will always be `foo`, and not `alias` or the minified name of `foo` in apps using property\n * minification.\n *\n * This is achieved through the `DirectiveDef.declaredInputs` map that is constructed when the\n * definition is declared. When a property is written to the directive instance, the\n * `NgOnChangesFeature` will try to remap the property name being written to using the\n * `declaredInputs`.\n *\n * Since the host directive input remapping happens during directive matching, `declaredInputs`\n * won't contain the new alias that the input is available under. This function addresses the\n * issue by patching the host directive aliases to the `declaredInputs`. There is *not* a risk of\n * this patching accidentally introducing new inputs to the host directive, because `declaredInputs`\n * is used *only* by the `NgOnChangesFeature` when determining what name is used in the\n * `SimpleChanges` object which won't be reached if an input doesn't exist.\n */\nfunction patchDeclaredInputs(declaredInputs, exposedInputs) {\n for (const publicName in exposedInputs) {\n if (exposedInputs.hasOwnProperty(publicName)) {\n const remappedPublicName = exposedInputs[publicName];\n const privateName = declaredInputs[publicName];\n // We *technically* shouldn't be able to hit this case because we can't have multiple\n // inputs on the same property and we have validations against conflicting aliases in\n // `validateMappings`. If we somehow did, it would lead to `ngOnChanges` being invoked\n // with the wrong name so we have a non-user-friendly assertion here just in case.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n declaredInputs.hasOwnProperty(remappedPublicName)) {\n assertEqual(declaredInputs[remappedPublicName], declaredInputs[publicName], `Conflicting host directive input alias ${publicName}.`);\n }\n declaredInputs[remappedPublicName] = privateName;\n }\n }\n}\n/**\n * Verifies that the host directive has been configured correctly.\n * @param hostDirectiveConfig Host directive configuration object.\n * @param directiveDef Directive definition of the host directive.\n * @param matchedDefs Directives that have been matched so far.\n */\nfunction validateHostDirective(hostDirectiveConfig, directiveDef, matchedDefs) {\n const type = hostDirectiveConfig.directive;\n if (directiveDef === null) {\n if (getComponentDef(type) !== null) {\n throw new RuntimeError(310 /* RuntimeErrorCode.HOST_DIRECTIVE_COMPONENT */, `Host directive ${type.name} cannot be a component.`);\n }\n throw new RuntimeError(307 /* RuntimeErrorCode.HOST_DIRECTIVE_UNRESOLVABLE */, `Could not resolve metadata for host directive ${type.name}. ` +\n `Make sure that the ${type.name} class is annotated with an @Directive decorator.`);\n }\n if (!directiveDef.standalone) {\n throw new RuntimeError(308 /* RuntimeErrorCode.HOST_DIRECTIVE_NOT_STANDALONE */, `Host directive ${directiveDef.type.name} must be standalone.`);\n }\n if (matchedDefs.indexOf(directiveDef) > -1) {\n throw new RuntimeError(309 /* RuntimeErrorCode.DUPLICATE_DIRECTITVE */, `Directive ${directiveDef.type.name} matches multiple times on the same element. ` +\n `Directives can only match an element once.`);\n }\n validateMappings('input', directiveDef, hostDirectiveConfig.inputs);\n validateMappings('output', directiveDef, hostDirectiveConfig.outputs);\n}\n/**\n * Checks that the host directive inputs/outputs configuration is valid.\n * @param bindingType Kind of binding that is being validated. Used in the error message.\n * @param def Definition of the host directive that is being validated against.\n * @param hostDirectiveBindings Host directive mapping object that shold be validated.\n */\nfunction validateMappings(bindingType, def, hostDirectiveBindings) {\n const className = def.type.name;\n const bindings = bindingType === 'input' ? def.inputs : def.outputs;\n for (const publicName in hostDirectiveBindings) {\n if (hostDirectiveBindings.hasOwnProperty(publicName)) {\n if (!bindings.hasOwnProperty(publicName)) {\n throw new RuntimeError(311 /* RuntimeErrorCode.HOST_DIRECTIVE_UNDEFINED_BINDING */, `Directive ${className} does not have an ${bindingType} with a public name of ${publicName}.`);\n }\n const remappedPublicName = hostDirectiveBindings[publicName];\n if (bindings.hasOwnProperty(remappedPublicName) && remappedPublicName !== publicName &&\n bindings[remappedPublicName] !== publicName) {\n throw new RuntimeError(312 /* RuntimeErrorCode.HOST_DIRECTIVE_CONFLICTING_ALIAS */, `Cannot alias ${bindingType} ${publicName} of host directive ${className} to ${remappedPublicName}, because it already has a different ${bindingType} with the same public name.`);\n }\n }\n }\n}\n\n/**\n * Decorates the directive definition with support for input transform functions.\n *\n * If the directive uses inheritance, the feature should be included before the\n * `InheritDefinitionFeature` to ensure that the `inputTransforms` field is populated.\n *\n * @codeGenApi\n */\nfunction ɵɵInputTransformsFeature(definition) {\n const inputs = definition.inputConfig;\n const inputTransforms = {};\n for (const minifiedKey in inputs) {\n if (inputs.hasOwnProperty(minifiedKey)) {\n // Note: the private names are used for the keys, rather than the public ones, because public\n // names can be re-aliased in host directives which would invalidate the lookup.\n const value = inputs[minifiedKey];\n if (Array.isArray(value) && value[2]) {\n inputTransforms[minifiedKey] = value[2];\n }\n }\n }\n definition.inputTransforms =\n inputTransforms;\n}\n\nfunction isIterable(obj) {\n return obj !== null && typeof obj === 'object' && obj[Symbol.iterator] !== undefined;\n}\nfunction isListLikeIterable(obj) {\n if (!isJsObject(obj))\n return false;\n return Array.isArray(obj) ||\n (!(obj instanceof Map) && // JS Map are iterables but return entries as [k, v]\n Symbol.iterator in obj); // JS Iterable have a Symbol.iterator prop\n}\nfunction areIterablesEqual(a, b, comparator) {\n const iterator1 = a[Symbol.iterator]();\n const iterator2 = b[Symbol.iterator]();\n while (true) {\n const item1 = iterator1.next();\n const item2 = iterator2.next();\n if (item1.done && item2.done)\n return true;\n if (item1.done || item2.done)\n return false;\n if (!comparator(item1.value, item2.value))\n return false;\n }\n}\nfunction iterateListLike(obj, fn) {\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n fn(obj[i]);\n }\n }\n else {\n const iterator = obj[Symbol.iterator]();\n let item;\n while (!((item = iterator.next()).done)) {\n fn(item.value);\n }\n }\n}\nfunction isJsObject(o) {\n return o !== null && (typeof o === 'function' || typeof o === 'object');\n}\n\nfunction devModeEqual(a, b) {\n const isListLikeIterableA = isListLikeIterable(a);\n const isListLikeIterableB = isListLikeIterable(b);\n if (isListLikeIterableA && isListLikeIterableB) {\n return areIterablesEqual(a, b, devModeEqual);\n }\n else {\n const isAObject = a && (typeof a === 'object' || typeof a === 'function');\n const isBObject = b && (typeof b === 'object' || typeof b === 'function');\n if (!isListLikeIterableA && isAObject && !isListLikeIterableB && isBObject) {\n return true;\n }\n else {\n return Object.is(a, b);\n }\n }\n}\n\n// TODO(misko): consider inlining\n/** Updates binding and returns the value. */\nfunction updateBinding(lView, bindingIndex, value) {\n return lView[bindingIndex] = value;\n}\n/** Gets the current binding value. */\nfunction getBinding(lView, bindingIndex) {\n ngDevMode && assertIndexInRange(lView, bindingIndex);\n ngDevMode &&\n assertNotSame(lView[bindingIndex], NO_CHANGE, 'Stored value should never be NO_CHANGE.');\n return lView[bindingIndex];\n}\n/**\n * Updates binding if changed, then returns whether it was updated.\n *\n * This function also checks the `CheckNoChangesMode` and throws if changes are made.\n * Some changes (Objects/iterables) during `CheckNoChangesMode` are exempt to comply with VE\n * behavior.\n *\n * @param lView current `LView`\n * @param bindingIndex The binding in the `LView` to check\n * @param value New value to check against `lView[bindingIndex]`\n * @returns `true` if the bindings has changed. (Throws if binding has changed during\n * `CheckNoChangesMode`)\n */\nfunction bindingUpdated(lView, bindingIndex, value) {\n ngDevMode && assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');\n ngDevMode &&\n assertLessThan(bindingIndex, lView.length, `Slot should have been initialized to NO_CHANGE`);\n const oldValue = lView[bindingIndex];\n if (Object.is(oldValue, value)) {\n return false;\n }\n else {\n if (ngDevMode && isInCheckNoChangesMode()) {\n // View engine didn't report undefined values as changed on the first checkNoChanges pass\n // (before the change detection was run).\n const oldValueToCompare = oldValue !== NO_CHANGE ? oldValue : undefined;\n if (!devModeEqual(oldValueToCompare, value)) {\n const details = getExpressionChangedErrorDetails(lView, bindingIndex, oldValueToCompare, value);\n throwErrorIfNoChangesMode(oldValue === NO_CHANGE, details.oldValue, details.newValue, details.propName, lView);\n }\n // There was a change, but the `devModeEqual` decided that the change is exempt from an error.\n // For this reason we exit as if no change. The early exit is needed to prevent the changed\n // value to be written into `LView` (If we would write the new value that we would not see it\n // as change on next CD.)\n return false;\n }\n lView[bindingIndex] = value;\n return true;\n }\n}\n/** Updates 2 bindings if changed, then returns whether either was updated. */\nfunction bindingUpdated2(lView, bindingIndex, exp1, exp2) {\n const different = bindingUpdated(lView, bindingIndex, exp1);\n return bindingUpdated(lView, bindingIndex + 1, exp2) || different;\n}\n/** Updates 3 bindings if changed, then returns whether any was updated. */\nfunction bindingUpdated3(lView, bindingIndex, exp1, exp2, exp3) {\n const different = bindingUpdated2(lView, bindingIndex, exp1, exp2);\n return bindingUpdated(lView, bindingIndex + 2, exp3) || different;\n}\n/** Updates 4 bindings if changed, then returns whether any was updated. */\nfunction bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) {\n const different = bindingUpdated2(lView, bindingIndex, exp1, exp2);\n return bindingUpdated2(lView, bindingIndex + 2, exp3, exp4) || different;\n}\n\n/**\n * Updates the value of or removes a bound attribute on an Element.\n *\n * Used in the case of `[attr.title]=\"value\"`\n *\n * @param name name The name of the attribute.\n * @param value value The attribute is removed when value is `null` or `undefined`.\n * Otherwise the attribute value is set to the stringified value.\n * @param sanitizer An optional function used to sanitize the value.\n * @param namespace Optional namespace to use when setting the attribute.\n *\n * @codeGenApi\n */\nfunction ɵɵattribute(name, value, sanitizer, namespace) {\n const lView = getLView();\n const bindingIndex = nextBindingIndex();\n if (bindingUpdated(lView, bindingIndex, value)) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementAttributeInternal(tNode, lView, name, value, sanitizer, namespace);\n ngDevMode && storePropertyBindingMetadata(tView.data, tNode, 'attr.' + name, bindingIndex);\n }\n return ɵɵattribute;\n}\n\n/**\n * Create interpolation bindings with a variable number of expressions.\n *\n * If there are 1 to 8 expressions `interpolation1()` to `interpolation8()` should be used instead.\n * Those are faster because there is no need to create an array of expressions and iterate over it.\n *\n * `values`:\n * - has static text at even indexes,\n * - has evaluated expressions at odd indexes.\n *\n * Returns the concatenated string when any of the arguments changes, `NO_CHANGE` otherwise.\n */\nfunction interpolationV(lView, values) {\n ngDevMode && assertLessThan(2, values.length, 'should have at least 3 values');\n ngDevMode && assertEqual(values.length % 2, 1, 'should have an odd number of values');\n let isBindingUpdated = false;\n let bindingIndex = getBindingIndex();\n for (let i = 1; i < values.length; i += 2) {\n // Check if bindings (odd indexes) have changed\n isBindingUpdated = bindingUpdated(lView, bindingIndex++, values[i]) || isBindingUpdated;\n }\n setBindingIndex(bindingIndex);\n if (!isBindingUpdated) {\n return NO_CHANGE;\n }\n // Build the updated content\n let content = values[0];\n for (let i = 1; i < values.length; i += 2) {\n content += renderStringify(values[i]) + values[i + 1];\n }\n return content;\n}\n/**\n * Creates an interpolation binding with 1 expression.\n *\n * @param prefix static value used for concatenation only.\n * @param v0 value checked for change.\n * @param suffix static value used for concatenation only.\n */\nfunction interpolation1(lView, prefix, v0, suffix) {\n const different = bindingUpdated(lView, nextBindingIndex(), v0);\n return different ? prefix + renderStringify(v0) + suffix : NO_CHANGE;\n}\n/**\n * Creates an interpolation binding with 2 expressions.\n */\nfunction interpolation2(lView, prefix, v0, i0, v1, suffix) {\n const bindingIndex = getBindingIndex();\n const different = bindingUpdated2(lView, bindingIndex, v0, v1);\n incrementBindingIndex(2);\n return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + suffix : NO_CHANGE;\n}\n/**\n * Creates an interpolation binding with 3 expressions.\n */\nfunction interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix) {\n const bindingIndex = getBindingIndex();\n const different = bindingUpdated3(lView, bindingIndex, v0, v1, v2);\n incrementBindingIndex(3);\n return different ?\n prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + suffix :\n NO_CHANGE;\n}\n/**\n * Create an interpolation binding with 4 expressions.\n */\nfunction interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix) {\n const bindingIndex = getBindingIndex();\n const different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);\n incrementBindingIndex(4);\n return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +\n renderStringify(v2) + i2 + renderStringify(v3) + suffix :\n NO_CHANGE;\n}\n/**\n * Creates an interpolation binding with 5 expressions.\n */\nfunction interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix) {\n const bindingIndex = getBindingIndex();\n let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);\n different = bindingUpdated(lView, bindingIndex + 4, v4) || different;\n incrementBindingIndex(5);\n return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +\n renderStringify(v2) + i2 + renderStringify(v3) + i3 + renderStringify(v4) + suffix :\n NO_CHANGE;\n}\n/**\n * Creates an interpolation binding with 6 expressions.\n */\nfunction interpolation6(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix) {\n const bindingIndex = getBindingIndex();\n let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);\n different = bindingUpdated2(lView, bindingIndex + 4, v4, v5) || different;\n incrementBindingIndex(6);\n return different ?\n prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + i2 +\n renderStringify(v3) + i3 + renderStringify(v4) + i4 + renderStringify(v5) + suffix :\n NO_CHANGE;\n}\n/**\n * Creates an interpolation binding with 7 expressions.\n */\nfunction interpolation7(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix) {\n const bindingIndex = getBindingIndex();\n let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);\n different = bindingUpdated3(lView, bindingIndex + 4, v4, v5, v6) || different;\n incrementBindingIndex(7);\n return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +\n renderStringify(v2) + i2 + renderStringify(v3) + i3 + renderStringify(v4) + i4 +\n renderStringify(v5) + i5 + renderStringify(v6) + suffix :\n NO_CHANGE;\n}\n/**\n * Creates an interpolation binding with 8 expressions.\n */\nfunction interpolation8(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix) {\n const bindingIndex = getBindingIndex();\n let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);\n different = bindingUpdated4(lView, bindingIndex + 4, v4, v5, v6, v7) || different;\n incrementBindingIndex(8);\n return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +\n renderStringify(v2) + i2 + renderStringify(v3) + i3 + renderStringify(v4) + i4 +\n renderStringify(v5) + i5 + renderStringify(v6) + i6 + renderStringify(v7) + suffix :\n NO_CHANGE;\n}\n\n/**\n *\n * Update an interpolated attribute on an element with single bound value surrounded by text.\n *\n * Used when the value passed to a property has 1 interpolated value in it:\n *\n * ```html\n * <div attr.title=\"prefix{{v0}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵattributeInterpolate1('title', 'prefix', v0, 'suffix');\n * ```\n *\n * @param attrName The name of the attribute to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵattributeInterpolate1(attrName, prefix, v0, suffix, sanitizer, namespace) {\n const lView = getLView();\n const interpolatedValue = interpolation1(lView, prefix, v0, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tNode = getSelectedTNode();\n elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);\n ngDevMode &&\n storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 1, prefix, suffix);\n }\n return ɵɵattributeInterpolate1;\n}\n/**\n *\n * Update an interpolated attribute on an element with 2 bound values surrounded by text.\n *\n * Used when the value passed to a property has 2 interpolated values in it:\n *\n * ```html\n * <div attr.title=\"prefix{{v0}}-{{v1}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵattributeInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');\n * ```\n *\n * @param attrName The name of the attribute to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵattributeInterpolate2(attrName, prefix, v0, i0, v1, suffix, sanitizer, namespace) {\n const lView = getLView();\n const interpolatedValue = interpolation2(lView, prefix, v0, i0, v1, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tNode = getSelectedTNode();\n elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);\n ngDevMode &&\n storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 2, prefix, i0, suffix);\n }\n return ɵɵattributeInterpolate2;\n}\n/**\n *\n * Update an interpolated attribute on an element with 3 bound values surrounded by text.\n *\n * Used when the value passed to a property has 3 interpolated values in it:\n *\n * ```html\n * <div attr.title=\"prefix{{v0}}-{{v1}}-{{v2}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵattributeInterpolate3(\n * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');\n * ```\n *\n * @param attrName The name of the attribute to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵattributeInterpolate3(attrName, prefix, v0, i0, v1, i1, v2, suffix, sanitizer, namespace) {\n const lView = getLView();\n const interpolatedValue = interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tNode = getSelectedTNode();\n elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);\n ngDevMode &&\n storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 3, prefix, i0, i1, suffix);\n }\n return ɵɵattributeInterpolate3;\n}\n/**\n *\n * Update an interpolated attribute on an element with 4 bound values surrounded by text.\n *\n * Used when the value passed to a property has 4 interpolated values in it:\n *\n * ```html\n * <div attr.title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵattributeInterpolate4(\n * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');\n * ```\n *\n * @param attrName The name of the attribute to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵattributeInterpolate4(attrName, prefix, v0, i0, v1, i1, v2, i2, v3, suffix, sanitizer, namespace) {\n const lView = getLView();\n const interpolatedValue = interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tNode = getSelectedTNode();\n elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);\n ngDevMode &&\n storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 4, prefix, i0, i1, i2, suffix);\n }\n return ɵɵattributeInterpolate4;\n}\n/**\n *\n * Update an interpolated attribute on an element with 5 bound values surrounded by text.\n *\n * Used when the value passed to a property has 5 interpolated values in it:\n *\n * ```html\n * <div attr.title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵattributeInterpolate5(\n * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');\n * ```\n *\n * @param attrName The name of the attribute to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵattributeInterpolate5(attrName, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix, sanitizer, namespace) {\n const lView = getLView();\n const interpolatedValue = interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tNode = getSelectedTNode();\n elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);\n ngDevMode &&\n storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 5, prefix, i0, i1, i2, i3, suffix);\n }\n return ɵɵattributeInterpolate5;\n}\n/**\n *\n * Update an interpolated attribute on an element with 6 bound values surrounded by text.\n *\n * Used when the value passed to a property has 6 interpolated values in it:\n *\n * ```html\n * <div attr.title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵattributeInterpolate6(\n * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');\n * ```\n *\n * @param attrName The name of the attribute to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵattributeInterpolate6(attrName, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix, sanitizer, namespace) {\n const lView = getLView();\n const interpolatedValue = interpolation6(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tNode = getSelectedTNode();\n elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);\n ngDevMode &&\n storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 6, prefix, i0, i1, i2, i3, i4, suffix);\n }\n return ɵɵattributeInterpolate6;\n}\n/**\n *\n * Update an interpolated attribute on an element with 7 bound values surrounded by text.\n *\n * Used when the value passed to a property has 7 interpolated values in it:\n *\n * ```html\n * <div attr.title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵattributeInterpolate7(\n * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');\n * ```\n *\n * @param attrName The name of the attribute to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param i5 Static value used for concatenation only.\n * @param v6 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵattributeInterpolate7(attrName, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix, sanitizer, namespace) {\n const lView = getLView();\n const interpolatedValue = interpolation7(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tNode = getSelectedTNode();\n elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);\n ngDevMode &&\n storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 7, prefix, i0, i1, i2, i3, i4, i5, suffix);\n }\n return ɵɵattributeInterpolate7;\n}\n/**\n *\n * Update an interpolated attribute on an element with 8 bound values surrounded by text.\n *\n * Used when the value passed to a property has 8 interpolated values in it:\n *\n * ```html\n * <div attr.title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵattributeInterpolate8(\n * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');\n * ```\n *\n * @param attrName The name of the attribute to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param i5 Static value used for concatenation only.\n * @param v6 Value checked for change.\n * @param i6 Static value used for concatenation only.\n * @param v7 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵattributeInterpolate8(attrName, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix, sanitizer, namespace) {\n const lView = getLView();\n const interpolatedValue = interpolation8(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tNode = getSelectedTNode();\n elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);\n ngDevMode &&\n storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 8, prefix, i0, i1, i2, i3, i4, i5, i6, suffix);\n }\n return ɵɵattributeInterpolate8;\n}\n/**\n * Update an interpolated attribute on an element with 9 or more bound values surrounded by text.\n *\n * Used when the number of interpolated values exceeds 8.\n *\n * ```html\n * <div\n * title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵattributeInterpolateV(\n * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,\n * 'suffix']);\n * ```\n *\n * @param attrName The name of the attribute to update.\n * @param values The collection of values and the strings in-between those values, beginning with\n * a string prefix and ending with a string suffix.\n * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵattributeInterpolateV(attrName, values, sanitizer, namespace) {\n const lView = getLView();\n const interpolated = interpolationV(lView, values);\n if (interpolated !== NO_CHANGE) {\n const tNode = getSelectedTNode();\n elementAttributeInternal(tNode, lView, attrName, interpolated, sanitizer, namespace);\n if (ngDevMode) {\n const interpolationInBetween = [values[0]]; // prefix\n for (let i = 2; i < values.length; i += 2) {\n interpolationInBetween.push(values[i]);\n }\n storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - interpolationInBetween.length + 1, ...interpolationInBetween);\n }\n }\n return ɵɵattributeInterpolateV;\n}\n\nconst AT_THIS_LOCATION = '<-- AT THIS LOCATION';\n/**\n * Retrieves a user friendly string for a given TNodeType for use in\n * friendly error messages\n *\n * @param tNodeType\n * @returns\n */\nfunction getFriendlyStringFromTNodeType(tNodeType) {\n switch (tNodeType) {\n case 4 /* TNodeType.Container */:\n return 'view container';\n case 2 /* TNodeType.Element */:\n return 'element';\n case 8 /* TNodeType.ElementContainer */:\n return 'ng-container';\n case 32 /* TNodeType.Icu */:\n return 'icu';\n case 64 /* TNodeType.Placeholder */:\n return 'i18n';\n case 16 /* TNodeType.Projection */:\n return 'projection';\n case 1 /* TNodeType.Text */:\n return 'text';\n default:\n // This should not happen as we cover all possible TNode types above.\n return '<unknown>';\n }\n}\n/**\n * Validates that provided nodes match during the hydration process.\n */\nfunction validateMatchingNode(node, nodeType, tagName, lView, tNode, isViewContainerAnchor = false) {\n if (!node ||\n (node.nodeType !== nodeType ||\n (node.nodeType === Node.ELEMENT_NODE &&\n node.tagName.toLowerCase() !== tagName?.toLowerCase()))) {\n const expectedNode = shortRNodeDescription(nodeType, tagName, null);\n let header = `During hydration Angular expected ${expectedNode} but `;\n const hostComponentDef = getDeclarationComponentDef(lView);\n const componentClassName = hostComponentDef?.type?.name;\n const expected = `Angular expected this DOM:\\n\\n${describeExpectedDom(lView, tNode, isViewContainerAnchor)}\\n\\n`;\n let actual = '';\n if (!node) {\n // No node found during hydration.\n header += `the node was not found.\\n\\n`;\n }\n else {\n const actualNode = shortRNodeDescription(node.nodeType, node.tagName ?? null, node.textContent ?? null);\n header += `found ${actualNode}.\\n\\n`;\n actual = `Actual DOM is:\\n\\n${describeDomFromNode(node)}\\n\\n`;\n }\n const footer = getHydrationErrorFooter(componentClassName);\n const message = header + expected + actual + getHydrationAttributeNote() + footer;\n throw new RuntimeError(-500 /* RuntimeErrorCode.HYDRATION_NODE_MISMATCH */, message);\n }\n}\n/**\n * Validates that a given node has sibling nodes\n */\nfunction validateSiblingNodeExists(node) {\n validateNodeExists(node);\n if (!node.nextSibling) {\n const header = 'During hydration Angular expected more sibling nodes to be present.\\n\\n';\n const actual = `Actual DOM is:\\n\\n${describeDomFromNode(node)}\\n\\n`;\n const footer = getHydrationErrorFooter();\n const message = header + actual + footer;\n throw new RuntimeError(-501 /* RuntimeErrorCode.HYDRATION_MISSING_SIBLINGS */, message);\n }\n}\n/**\n * Validates that a node exists or throws\n */\nfunction validateNodeExists(node, lView = null, tNode = null) {\n if (!node) {\n const header = 'During hydration, Angular expected an element to be present at this location.\\n\\n';\n let expected = '';\n let footer = '';\n if (lView !== null && tNode !== null) {\n expected = `${describeExpectedDom(lView, tNode, false)}\\n\\n`;\n footer = getHydrationErrorFooter();\n }\n throw new RuntimeError(-502 /* RuntimeErrorCode.HYDRATION_MISSING_NODE */, header + expected + footer);\n }\n}\n/**\n * Builds the hydration error message when a node is not found\n *\n * @param lView the LView where the node exists\n * @param tNode the TNode\n */\nfunction nodeNotFoundError(lView, tNode) {\n const header = 'During serialization, Angular was unable to find an element in the DOM:\\n\\n';\n const expected = `${describeExpectedDom(lView, tNode, false)}\\n\\n`;\n const footer = getHydrationErrorFooter();\n throw new RuntimeError(-502 /* RuntimeErrorCode.HYDRATION_MISSING_NODE */, header + expected + footer);\n}\n/**\n * Builds a hydration error message when a node is not found at a path location\n *\n * @param host the Host Node\n * @param path the path to the node\n */\nfunction nodeNotFoundAtPathError(host, path) {\n const header = `During hydration Angular was unable to locate a node ` +\n `using the \"${path}\" path, starting from the ${describeRNode(host)} node.\\n\\n`;\n const footer = getHydrationErrorFooter();\n throw new RuntimeError(-502 /* RuntimeErrorCode.HYDRATION_MISSING_NODE */, header + footer);\n}\n/**\n * Builds the hydration error message in the case that dom nodes are created outside of\n * the Angular context and are being used as projected nodes\n *\n * @param lView the LView\n * @param tNode the TNode\n * @returns an error\n */\nfunction unsupportedProjectionOfDomNodes(rNode) {\n const header = 'During serialization, Angular detected DOM nodes ' +\n 'that were created outside of Angular context and provided as projectable nodes ' +\n '(likely via `ViewContainerRef.createComponent` or `createComponent` APIs). ' +\n 'Hydration is not supported for such cases, consider refactoring the code to avoid ' +\n 'this pattern or using `ngSkipHydration` on the host element of the component.\\n\\n';\n const actual = `${describeDomFromNode(rNode)}\\n\\n`;\n const message = header + actual + getHydrationAttributeNote();\n return new RuntimeError(-503 /* RuntimeErrorCode.UNSUPPORTED_PROJECTION_DOM_NODES */, message);\n}\n/**\n * Builds the hydration error message in the case that ngSkipHydration was used on a\n * node that is not a component host element or host binding\n *\n * @param rNode the HTML Element\n * @returns an error\n */\nfunction invalidSkipHydrationHost(rNode) {\n const header = 'The `ngSkipHydration` flag is applied on a node ' +\n 'that doesn\\'t act as a component host. Hydration can be ' +\n 'skipped only on per-component basis.\\n\\n';\n const actual = `${describeDomFromNode(rNode)}\\n\\n`;\n const footer = 'Please move the `ngSkipHydration` attribute to the component host element.\\n\\n';\n const message = header + actual + footer;\n return new RuntimeError(-504 /* RuntimeErrorCode.INVALID_SKIP_HYDRATION_HOST */, message);\n}\n// Stringification methods\n/**\n * Stringifies a given TNode's attributes\n *\n * @param tNode a provided TNode\n * @returns string\n */\nfunction stringifyTNodeAttrs(tNode) {\n const results = [];\n if (tNode.attrs) {\n for (let i = 0; i < tNode.attrs.length;) {\n const attrName = tNode.attrs[i++];\n // Once we reach the first flag, we know that the list of\n // attributes is over.\n if (typeof attrName == 'number') {\n break;\n }\n const attrValue = tNode.attrs[i++];\n results.push(`${attrName}=\"${shorten(attrValue)}\"`);\n }\n }\n return results.join(' ');\n}\n/**\n * The list of internal attributes that should be filtered out while\n * producing an error message.\n */\nconst internalAttrs = new Set(['ngh', 'ng-version', 'ng-server-context']);\n/**\n * Stringifies an HTML Element's attributes\n *\n * @param rNode an HTML Element\n * @returns string\n */\nfunction stringifyRNodeAttrs(rNode) {\n const results = [];\n for (let i = 0; i < rNode.attributes.length; i++) {\n const attr = rNode.attributes[i];\n if (internalAttrs.has(attr.name))\n continue;\n results.push(`${attr.name}=\"${shorten(attr.value)}\"`);\n }\n return results.join(' ');\n}\n// Methods for Describing the DOM\n/**\n * Converts a tNode to a helpful readable string value for use in error messages\n *\n * @param tNode a given TNode\n * @param innerContent the content of the node\n * @returns string\n */\nfunction describeTNode(tNode, innerContent = '…') {\n switch (tNode.type) {\n case 1 /* TNodeType.Text */:\n const content = tNode.value ? `(${tNode.value})` : '';\n return `#text${content}`;\n case 2 /* TNodeType.Element */:\n const attrs = stringifyTNodeAttrs(tNode);\n const tag = tNode.value.toLowerCase();\n return `<${tag}${attrs ? ' ' + attrs : ''}>${innerContent}</${tag}>`;\n case 8 /* TNodeType.ElementContainer */:\n return '<!-- ng-container -->';\n case 4 /* TNodeType.Container */:\n return '<!-- container -->';\n default:\n const typeAsString = getFriendlyStringFromTNodeType(tNode.type);\n return `#node(${typeAsString})`;\n }\n}\n/**\n * Converts an RNode to a helpful readable string value for use in error messages\n *\n * @param rNode a given RNode\n * @param innerContent the content of the node\n * @returns string\n */\nfunction describeRNode(rNode, innerContent = '…') {\n const node = rNode;\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n const tag = node.tagName.toLowerCase();\n const attrs = stringifyRNodeAttrs(node);\n return `<${tag}${attrs ? ' ' + attrs : ''}>${innerContent}</${tag}>`;\n case Node.TEXT_NODE:\n const content = node.textContent ? shorten(node.textContent) : '';\n return `#text${content ? `(${content})` : ''}`;\n case Node.COMMENT_NODE:\n return `<!-- ${shorten(node.textContent ?? '')} -->`;\n default:\n return `#node(${node.nodeType})`;\n }\n}\n/**\n * Builds the string containing the expected DOM present given the LView and TNode\n * values for a readable error message\n *\n * @param lView the lView containing the DOM\n * @param tNode the tNode\n * @param isViewContainerAnchor boolean\n * @returns string\n */\nfunction describeExpectedDom(lView, tNode, isViewContainerAnchor) {\n const spacer = ' ';\n let content = '';\n if (tNode.prev) {\n content += spacer + '…\\n';\n content += spacer + describeTNode(tNode.prev) + '\\n';\n }\n else if (tNode.type && tNode.type & 12 /* TNodeType.AnyContainer */) {\n content += spacer + '…\\n';\n }\n if (isViewContainerAnchor) {\n content += spacer + describeTNode(tNode) + '\\n';\n content += spacer + `<!-- container --> ${AT_THIS_LOCATION}\\n`;\n }\n else {\n content += spacer + describeTNode(tNode) + ` ${AT_THIS_LOCATION}\\n`;\n }\n content += spacer + '…\\n';\n const parentRNode = tNode.type ? getParentRElement(lView[TVIEW], tNode, lView) : null;\n if (parentRNode) {\n content = describeRNode(parentRNode, '\\n' + content);\n }\n return content;\n}\n/**\n * Builds the string containing the DOM present around a given RNode for a\n * readable error message\n *\n * @param node the RNode\n * @returns string\n */\nfunction describeDomFromNode(node) {\n const spacer = ' ';\n let content = '';\n const currentNode = node;\n if (currentNode.previousSibling) {\n content += spacer + '…\\n';\n content += spacer + describeRNode(currentNode.previousSibling) + '\\n';\n }\n content += spacer + describeRNode(currentNode) + ` ${AT_THIS_LOCATION}\\n`;\n if (node.nextSibling) {\n content += spacer + '…\\n';\n }\n if (node.parentNode) {\n content = describeRNode(currentNode.parentNode, '\\n' + content);\n }\n return content;\n}\n/**\n * Shortens the description of a given RNode by its type for readability\n *\n * @param nodeType the type of node\n * @param tagName the node tag name\n * @param textContent the text content in the node\n * @returns string\n */\nfunction shortRNodeDescription(nodeType, tagName, textContent) {\n switch (nodeType) {\n case Node.ELEMENT_NODE:\n return `<${tagName.toLowerCase()}>`;\n case Node.TEXT_NODE:\n const content = textContent ? ` (with the \"${shorten(textContent)}\" content)` : '';\n return `a text node${content}`;\n case Node.COMMENT_NODE:\n return 'a comment node';\n default:\n return `#node(nodeType=${nodeType})`;\n }\n}\n/**\n * Builds the footer hydration error message\n *\n * @param componentClassName the name of the component class\n * @returns string\n */\nfunction getHydrationErrorFooter(componentClassName) {\n const componentInfo = componentClassName ? `the \"${componentClassName}\"` : 'corresponding';\n return `To fix this problem:\\n` +\n ` * check ${componentInfo} component for hydration-related issues\\n` +\n ` * check to see if your template has valid HTML structure\\n` +\n ` * or skip hydration by adding the \\`ngSkipHydration\\` attribute ` +\n `to its host node in a template\\n\\n`;\n}\n/**\n * An attribute related note for hydration errors\n */\nfunction getHydrationAttributeNote() {\n return 'Note: attributes are only displayed to better represent the DOM' +\n ' but have no effect on hydration mismatches.\\n\\n';\n}\n// Node string utility functions\n/**\n * Strips all newlines out of a given string\n *\n * @param input a string to be cleared of new line characters\n * @returns\n */\nfunction stripNewlines(input) {\n return input.replace(/\\s+/gm, '');\n}\n/**\n * Reduces a string down to a maximum length of characters with ellipsis for readability\n *\n * @param input a string input\n * @param maxLength a maximum length in characters\n * @returns string\n */\nfunction shorten(input, maxLength = 50) {\n if (!input) {\n return '';\n }\n input = stripNewlines(input);\n return input.length > maxLength ? `${input.substring(0, maxLength - 1)}…` : input;\n}\n\n/**\n * Regexp that extracts a reference node information from the compressed node location.\n * The reference node is represented as either:\n * - a number which points to an LView slot\n * - the `b` char which indicates that the lookup should start from the `document.body`\n * - the `h` char to start lookup from the component host node (`lView[HOST]`)\n */\nconst REF_EXTRACTOR_REGEXP = new RegExp(`^(\\\\d+)*(${REFERENCE_NODE_BODY}|${REFERENCE_NODE_HOST})*(.*)`);\n/**\n * Helper function that takes a reference node location and a set of navigation steps\n * (from the reference node) to a target node and outputs a string that represents\n * a location.\n *\n * For example, given: referenceNode = 'b' (body) and path = ['firstChild', 'firstChild',\n * 'nextSibling'], the function returns: `bf2n`.\n */\nfunction compressNodeLocation(referenceNode, path) {\n const result = [referenceNode];\n for (const segment of path) {\n const lastIdx = result.length - 1;\n if (lastIdx > 0 && result[lastIdx - 1] === segment) {\n // An empty string in a count slot represents 1 occurrence of an instruction.\n const value = (result[lastIdx] || 1);\n result[lastIdx] = value + 1;\n }\n else {\n // Adding a new segment to the path.\n // Using an empty string in a counter field to avoid encoding `1`s\n // into the path, since they are implicit (e.g. `f1n1` vs `fn`), so\n // it's enough to have a single char in this case.\n result.push(segment, '');\n }\n }\n return result.join('');\n}\n/**\n * Helper function that reverts the `compressNodeLocation` and transforms a given\n * string into an array where at 0th position there is a reference node info and\n * after that it contains information (in pairs) about a navigation step and the\n * number of repetitions.\n *\n * For example, the path like 'bf2n' will be transformed to:\n * ['b', 'firstChild', 2, 'nextSibling', 1].\n *\n * This information is later consumed by the code that navigates the DOM to find\n * a given node by its location.\n */\nfunction decompressNodeLocation(path) {\n const matches = path.match(REF_EXTRACTOR_REGEXP);\n const [_, refNodeId, refNodeName, rest] = matches;\n // If a reference node is represented by an index, transform it to a number.\n const ref = refNodeId ? parseInt(refNodeId, 10) : refNodeName;\n const steps = [];\n // Match all segments in a path.\n for (const [_, step, count] of rest.matchAll(/(f|n)(\\d*)/g)) {\n const repeat = parseInt(count, 10) || 1;\n steps.push(step, repeat);\n }\n return [ref, ...steps];\n}\n\n/** Whether current TNode is a first node in an <ng-container>. */\nfunction isFirstElementInNgContainer(tNode) {\n return !tNode.prev && tNode.parent?.type === 8 /* TNodeType.ElementContainer */;\n}\n/** Returns an instruction index (subtracting HEADER_OFFSET). */\nfunction getNoOffsetIndex(tNode) {\n return tNode.index - HEADER_OFFSET;\n}\n/**\n * Locate a node in DOM tree that corresponds to a given TNode.\n *\n * @param hydrationInfo The hydration annotation data\n * @param tView the current tView\n * @param lView the current lView\n * @param tNode the current tNode\n * @returns an RNode that represents a given tNode\n */\nfunction locateNextRNode(hydrationInfo, tView, lView, tNode) {\n let native = null;\n const noOffsetIndex = getNoOffsetIndex(tNode);\n const nodes = hydrationInfo.data[NODES];\n if (nodes?.[noOffsetIndex]) {\n // We know the exact location of the node.\n native = locateRNodeByPath(nodes[noOffsetIndex], lView);\n }\n else if (tView.firstChild === tNode) {\n // We create a first node in this view, so we use a reference\n // to the first child in this DOM segment.\n native = hydrationInfo.firstChild;\n }\n else {\n // Locate a node based on a previous sibling or a parent node.\n const previousTNodeParent = tNode.prev === null;\n const previousTNode = (tNode.prev ?? tNode.parent);\n ngDevMode &&\n assertDefined(previousTNode, 'Unexpected state: current TNode does not have a connection ' +\n 'to the previous node or a parent node.');\n if (isFirstElementInNgContainer(tNode)) {\n const noOffsetParentIndex = getNoOffsetIndex(tNode.parent);\n native = getSegmentHead(hydrationInfo, noOffsetParentIndex);\n }\n else {\n let previousRElement = getNativeByTNode(previousTNode, lView);\n if (previousTNodeParent) {\n native = previousRElement.firstChild;\n }\n else {\n // If the previous node is an element, but it also has container info,\n // this means that we are processing a node like `<div #vcrTarget>`, which is\n // represented in the DOM as `<div></div>...<!--container-->`.\n // In this case, there are nodes *after* this element and we need to skip\n // all of them to reach an element that we are looking for.\n const noOffsetPrevSiblingIndex = getNoOffsetIndex(previousTNode);\n const segmentHead = getSegmentHead(hydrationInfo, noOffsetPrevSiblingIndex);\n if (previousTNode.type === 2 /* TNodeType.Element */ && segmentHead) {\n const numRootNodesToSkip = calcSerializedContainerSize(hydrationInfo, noOffsetPrevSiblingIndex);\n // `+1` stands for an anchor comment node after all the views in this container.\n const nodesToSkip = numRootNodesToSkip + 1;\n // First node after this segment.\n native = siblingAfter(nodesToSkip, segmentHead);\n }\n else {\n native = previousRElement.nextSibling;\n }\n }\n }\n }\n return native;\n}\n/**\n * Skips over a specified number of nodes and returns the next sibling node after that.\n */\nfunction siblingAfter(skip, from) {\n let currentNode = from;\n for (let i = 0; i < skip; i++) {\n ngDevMode && validateSiblingNodeExists(currentNode);\n currentNode = currentNode.nextSibling;\n }\n return currentNode;\n}\n/**\n * Helper function to produce a string representation of the navigation steps\n * (in terms of `nextSibling` and `firstChild` navigations). Used in error\n * messages in dev mode.\n */\nfunction stringifyNavigationInstructions(instructions) {\n const container = [];\n for (let i = 0; i < instructions.length; i += 2) {\n const step = instructions[i];\n const repeat = instructions[i + 1];\n for (let r = 0; r < repeat; r++) {\n container.push(step === NodeNavigationStep.FirstChild ? 'firstChild' : 'nextSibling');\n }\n }\n return container.join('.');\n}\n/**\n * Helper function that navigates from a starting point node (the `from` node)\n * using provided set of navigation instructions (within `path` argument).\n */\nfunction navigateToNode(from, instructions) {\n let node = from;\n for (let i = 0; i < instructions.length; i += 2) {\n const step = instructions[i];\n const repeat = instructions[i + 1];\n for (let r = 0; r < repeat; r++) {\n if (ngDevMode && !node) {\n throw nodeNotFoundAtPathError(from, stringifyNavigationInstructions(instructions));\n }\n switch (step) {\n case NodeNavigationStep.FirstChild:\n node = node.firstChild;\n break;\n case NodeNavigationStep.NextSibling:\n node = node.nextSibling;\n break;\n }\n }\n }\n if (ngDevMode && !node) {\n throw nodeNotFoundAtPathError(from, stringifyNavigationInstructions(instructions));\n }\n return node;\n}\n/**\n * Locates an RNode given a set of navigation instructions (which also contains\n * a starting point node info).\n */\nfunction locateRNodeByPath(path, lView) {\n const [referenceNode, ...navigationInstructions] = decompressNodeLocation(path);\n let ref;\n if (referenceNode === REFERENCE_NODE_HOST) {\n ref = lView[DECLARATION_COMPONENT_VIEW][HOST];\n }\n else if (referenceNode === REFERENCE_NODE_BODY) {\n ref = ɵɵresolveBody(lView[DECLARATION_COMPONENT_VIEW][HOST]);\n }\n else {\n const parentElementId = Number(referenceNode);\n ref = unwrapRNode(lView[parentElementId + HEADER_OFFSET]);\n }\n return navigateToNode(ref, navigationInstructions);\n}\n/**\n * Generate a list of DOM navigation operations to get from node `start` to node `finish`.\n *\n * Note: assumes that node `start` occurs before node `finish` in an in-order traversal of the DOM\n * tree. That is, we should be able to get from `start` to `finish` purely by using `.firstChild`\n * and `.nextSibling` operations.\n */\nfunction navigateBetween(start, finish) {\n if (start === finish) {\n return [];\n }\n else if (start.parentElement == null || finish.parentElement == null) {\n return null;\n }\n else if (start.parentElement === finish.parentElement) {\n return navigateBetweenSiblings(start, finish);\n }\n else {\n // `finish` is a child of its parent, so the parent will always have a child.\n const parent = finish.parentElement;\n const parentPath = navigateBetween(start, parent);\n const childPath = navigateBetween(parent.firstChild, finish);\n if (!parentPath || !childPath)\n return null;\n return [\n // First navigate to `finish`'s parent\n ...parentPath,\n // Then to its first child.\n NodeNavigationStep.FirstChild,\n // And finally from that node to `finish` (maybe a no-op if we're already there).\n ...childPath,\n ];\n }\n}\n/**\n * Calculates a path between 2 sibling nodes (generates a number of `NextSibling` navigations).\n * Returns `null` if no such path exists between the given nodes.\n */\nfunction navigateBetweenSiblings(start, finish) {\n const nav = [];\n let node = null;\n for (node = start; node != null && node !== finish; node = node.nextSibling) {\n nav.push(NodeNavigationStep.NextSibling);\n }\n // If the `node` becomes `null` or `undefined` at the end, that means that we\n // didn't find the `end` node, thus return `null` (which would trigger serialization\n // error to be produced).\n return node == null ? null : nav;\n}\n/**\n * Calculates a path between 2 nodes in terms of `nextSibling` and `firstChild`\n * navigations:\n * - the `from` node is a known node, used as an starting point for the lookup\n * (the `fromNodeName` argument is a string representation of the node).\n * - the `to` node is a node that the runtime logic would be looking up,\n * using the path generated by this function.\n */\nfunction calcPathBetween(from, to, fromNodeName) {\n const path = navigateBetween(from, to);\n return path === null ? null : compressNodeLocation(fromNodeName, path);\n}\n/**\n * Invoked at serialization time (on the server) when a set of navigation\n * instructions needs to be generated for a TNode.\n */\nfunction calcPathForNode(tNode, lView) {\n const parentTNode = tNode.parent;\n let parentIndex;\n let parentRNode;\n let referenceNodeName;\n if (parentTNode === null || !(parentTNode.type & 3 /* TNodeType.AnyRNode */)) {\n // If there is no parent TNode or a parent TNode does not represent an RNode\n // (i.e. not a DOM node), use component host element as a reference node.\n parentIndex = referenceNodeName = REFERENCE_NODE_HOST;\n parentRNode = lView[DECLARATION_COMPONENT_VIEW][HOST];\n }\n else {\n // Use parent TNode as a reference node.\n parentIndex = parentTNode.index;\n parentRNode = unwrapRNode(lView[parentIndex]);\n referenceNodeName = renderStringify(parentIndex - HEADER_OFFSET);\n }\n let rNode = unwrapRNode(lView[tNode.index]);\n if (tNode.type & 12 /* TNodeType.AnyContainer */) {\n // For <ng-container> nodes, instead of serializing a reference\n // to the anchor comment node, serialize a location of the first\n // DOM element. Paired with the container size (serialized as a part\n // of `ngh.containers`), it should give enough information for runtime\n // to hydrate nodes in this container.\n const firstRNode = getFirstNativeNode(lView, tNode);\n // If container is not empty, use a reference to the first element,\n // otherwise, rNode would point to an anchor comment node.\n if (firstRNode) {\n rNode = firstRNode;\n }\n }\n let path = calcPathBetween(parentRNode, rNode, referenceNodeName);\n if (path === null && parentRNode !== rNode) {\n // Searching for a path between elements within a host node failed.\n // Trying to find a path to an element starting from the `document.body` instead.\n //\n // Important note: this type of reference is relatively unstable, since Angular\n // may not be able to control parts of the page that the runtime logic navigates\n // through. This is mostly needed to cover \"portals\" use-case (like menus, dialog boxes,\n // etc), where nodes are content-projected (including direct DOM manipulations) outside\n // of the host node. The better solution is to provide APIs to work with \"portals\",\n // at which point this code path would not be needed.\n const body = parentRNode.ownerDocument.body;\n path = calcPathBetween(body, rNode, REFERENCE_NODE_BODY);\n if (path === null) {\n // If the path is still empty, it's likely that this node is detached and\n // won't be found during hydration.\n throw nodeNotFoundError(lView, tNode);\n }\n }\n return path;\n}\n\nfunction templateFirstCreatePass(index, tView, lView, templateFn, decls, vars, tagName, attrsIndex, localRefsIndex) {\n ngDevMode && assertFirstCreatePass(tView);\n ngDevMode && ngDevMode.firstCreatePass++;\n const tViewConsts = tView.consts;\n // TODO(pk): refactor getOrCreateTNode to have the \"create\" only version\n const tNode = getOrCreateTNode(tView, index, 4 /* TNodeType.Container */, tagName || null, getConstant(tViewConsts, attrsIndex));\n resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));\n registerPostOrderHooks(tView, tNode);\n const embeddedTView = tNode.tView = createTView(2 /* TViewType.Embedded */, tNode, templateFn, decls, vars, tView.directiveRegistry, tView.pipeRegistry, null, tView.schemas, tViewConsts, null /* ssrId */);\n if (tView.queries !== null) {\n tView.queries.template(tView, tNode);\n embeddedTView.queries = tView.queries.embeddedTView(tNode);\n }\n return tNode;\n}\n/**\n * Creates an LContainer for an ng-template (dynamically-inserted view), e.g.\n *\n * <ng-template #foo>\n * <div></div>\n * </ng-template>\n *\n * @param index The index of the container in the data array\n * @param templateFn Inline template\n * @param decls The number of nodes, local refs, and pipes for this template\n * @param vars The number of bindings for this template\n * @param tagName The name of the container element, if applicable\n * @param attrsIndex Index of template attributes in the `consts` array.\n * @param localRefs Index of the local references in the `consts` array.\n * @param localRefExtractor A function which extracts local-refs values from the template.\n * Defaults to the current element associated with the local-ref.\n *\n * @codeGenApi\n */\nfunction ɵɵtemplate(index, templateFn, decls, vars, tagName, attrsIndex, localRefsIndex, localRefExtractor) {\n const lView = getLView();\n const tView = getTView();\n const adjustedIndex = index + HEADER_OFFSET;\n const tNode = tView.firstCreatePass ? templateFirstCreatePass(adjustedIndex, tView, lView, templateFn, decls, vars, tagName, attrsIndex, localRefsIndex) :\n tView.data[adjustedIndex];\n setCurrentTNode(tNode, false);\n const comment = _locateOrCreateContainerAnchor(tView, lView, tNode, index);\n if (wasLastNodeCreated()) {\n appendChild(tView, lView, comment, tNode);\n }\n attachPatchData(comment, lView);\n addToViewTree(lView, lView[adjustedIndex] = createLContainer(comment, lView, comment, tNode));\n if (isDirectiveHost(tNode)) {\n createDirectivesInstances(tView, lView, tNode);\n }\n if (localRefsIndex != null) {\n saveResolvedLocalsInData(lView, tNode, localRefExtractor);\n }\n}\nlet _locateOrCreateContainerAnchor = createContainerAnchorImpl;\n/**\n * Regular creation mode for LContainers and their anchor (comment) nodes.\n */\nfunction createContainerAnchorImpl(tView, lView, tNode, index) {\n lastNodeWasCreated(true);\n return lView[RENDERER].createComment(ngDevMode ? 'container' : '');\n}\n/**\n * Enables hydration code path (to lookup existing elements in DOM)\n * in addition to the regular creation mode for LContainers and their\n * anchor (comment) nodes.\n */\nfunction locateOrCreateContainerAnchorImpl(tView, lView, tNode, index) {\n const hydrationInfo = lView[HYDRATION];\n const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock$1() || isDisconnectedNode$1(hydrationInfo, index);\n lastNodeWasCreated(isNodeCreationMode);\n // Regular creation mode.\n if (isNodeCreationMode) {\n return createContainerAnchorImpl(tView, lView, tNode, index);\n }\n const ssrId = hydrationInfo.data[TEMPLATES]?.[index] ?? null;\n // Apply `ssrId` value to the underlying TView if it was not previously set.\n //\n // There might be situations when the same component is present in a template\n // multiple times and some instances are opted-out of using hydration via\n // `ngSkipHydration` attribute. In this scenario, at the time a TView is created,\n // the `ssrId` might be `null` (if the first component is opted-out of hydration).\n // The code below makes sure that the `ssrId` is applied to the TView if it's still\n // `null` and verifies we never try to override it with a different value.\n if (ssrId !== null && tNode.tView !== null) {\n if (tNode.tView.ssrId === null) {\n tNode.tView.ssrId = ssrId;\n }\n else {\n ngDevMode &&\n assertEqual(tNode.tView.ssrId, ssrId, 'Unexpected value of the `ssrId` for this TView');\n }\n }\n // Hydration mode, looking up existing elements in DOM.\n const currentRNode = locateNextRNode(hydrationInfo, tView, lView, tNode);\n ngDevMode && validateNodeExists(currentRNode, lView, tNode);\n setSegmentHead(hydrationInfo, index, currentRNode);\n const viewContainerSize = calcSerializedContainerSize(hydrationInfo, index);\n const comment = siblingAfter(viewContainerSize, currentRNode);\n if (ngDevMode) {\n validateMatchingNode(comment, Node.COMMENT_NODE, null, lView, tNode);\n markRNodeAsClaimedByHydration(comment);\n }\n return comment;\n}\nfunction enableLocateOrCreateContainerAnchorImpl() {\n _locateOrCreateContainerAnchor = locateOrCreateContainerAnchorImpl;\n}\n\n/** Store a value in the `data` at a given `index`. */\nfunction store(tView, lView, index, value) {\n // We don't store any static data for local variables, so the first time\n // we see the template, we should store as null to avoid a sparse array\n if (index >= tView.data.length) {\n tView.data[index] = null;\n tView.blueprint[index] = null;\n }\n lView[index] = value;\n}\n/**\n * Retrieves a local reference from the current contextViewData.\n *\n * If the reference to retrieve is in a parent view, this instruction is used in conjunction\n * with a nextContext() call, which walks up the tree and updates the contextViewData instance.\n *\n * @param index The index of the local ref in contextViewData.\n *\n * @codeGenApi\n */\nfunction ɵɵreference(index) {\n const contextLView = getContextLView();\n return load(contextLView, HEADER_OFFSET + index);\n}\n\n/**\n * Update a property on a selected element.\n *\n * Operates on the element selected by index via the {@link select} instruction.\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled\n *\n * @param propName Name of property. Because it is going to DOM, this is not subject to\n * renaming as part of minification.\n * @param value New value to write.\n * @param sanitizer An optional function used to sanitize the value.\n * @returns This function returns itself so that it may be chained\n * (e.g. `property('name', ctx.name)('title', ctx.title)`)\n *\n * @codeGenApi\n */\nfunction ɵɵproperty(propName, value, sanitizer) {\n const lView = getLView();\n const bindingIndex = nextBindingIndex();\n if (bindingUpdated(lView, bindingIndex, value)) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementPropertyInternal(tView, tNode, lView, propName, value, lView[RENDERER], sanitizer, false);\n ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, bindingIndex);\n }\n return ɵɵproperty;\n}\n/**\n * Given `<div style=\"...\" my-dir>` and `MyDir` with `@Input('style')` we need to write to\n * directive input.\n */\nfunction setDirectiveInputsWhichShadowsStyling(tView, tNode, lView, value, isClassBased) {\n const inputs = tNode.inputs;\n const property = isClassBased ? 'class' : 'style';\n // We support both 'class' and `className` hence the fallback.\n setInputsForProperty(tView, lView, inputs[property], property, value);\n}\n\nfunction elementStartFirstCreatePass(index, tView, lView, name, attrsIndex, localRefsIndex) {\n ngDevMode && assertFirstCreatePass(tView);\n ngDevMode && ngDevMode.firstCreatePass++;\n const tViewConsts = tView.consts;\n const attrs = getConstant(tViewConsts, attrsIndex);\n const tNode = getOrCreateTNode(tView, index, 2 /* TNodeType.Element */, name, attrs);\n resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));\n if (tNode.attrs !== null) {\n computeStaticStyling(tNode, tNode.attrs, false);\n }\n if (tNode.mergedAttrs !== null) {\n computeStaticStyling(tNode, tNode.mergedAttrs, true);\n }\n if (tView.queries !== null) {\n tView.queries.elementStart(tView, tNode);\n }\n return tNode;\n}\n/**\n * Create DOM element. The instruction must later be followed by `elementEnd()` call.\n *\n * @param index Index of the element in the LView array\n * @param name Name of the DOM Node\n * @param attrsIndex Index of the element's attributes in the `consts` array.\n * @param localRefsIndex Index of the element's local references in the `consts` array.\n * @returns This function returns itself so that it may be chained.\n *\n * Attributes and localRefs are passed as an array of strings where elements with an even index\n * hold an attribute name and elements with an odd index hold an attribute value, ex.:\n * ['id', 'warning5', 'class', 'alert']\n *\n * @codeGenApi\n */\nfunction ɵɵelementStart(index, name, attrsIndex, localRefsIndex) {\n const lView = getLView();\n const tView = getTView();\n const adjustedIndex = HEADER_OFFSET + index;\n ngDevMode &&\n assertEqual(getBindingIndex(), tView.bindingStartIndex, 'elements should be created before any bindings');\n ngDevMode && assertIndexInRange(lView, adjustedIndex);\n const renderer = lView[RENDERER];\n const tNode = tView.firstCreatePass ?\n elementStartFirstCreatePass(adjustedIndex, tView, lView, name, attrsIndex, localRefsIndex) :\n tView.data[adjustedIndex];\n const native = _locateOrCreateElementNode(tView, lView, tNode, renderer, name, index);\n lView[adjustedIndex] = native;\n const hasDirectives = isDirectiveHost(tNode);\n if (ngDevMode && tView.firstCreatePass) {\n validateElementIsKnown(native, lView, tNode.value, tView.schemas, hasDirectives);\n }\n setCurrentTNode(tNode, true);\n setupStaticAttributes(renderer, native, tNode);\n if ((tNode.flags & 32 /* TNodeFlags.isDetached */) !== 32 /* TNodeFlags.isDetached */ && wasLastNodeCreated()) {\n // In the i18n case, the translation may have removed this element, so only add it if it is not\n // detached. See `TNodeType.Placeholder` and `LFrame.inI18n` for more context.\n appendChild(tView, lView, native, tNode);\n }\n // any immediate children of a component or template container must be pre-emptively\n // monkey-patched with the component view data so that the element can be inspected\n // later on using any element discovery utility methods (see `element_discovery.ts`)\n if (getElementDepthCount() === 0) {\n attachPatchData(native, lView);\n }\n increaseElementDepthCount();\n if (hasDirectives) {\n createDirectivesInstances(tView, lView, tNode);\n executeContentQueries(tView, tNode, lView);\n }\n if (localRefsIndex !== null) {\n saveResolvedLocalsInData(lView, tNode);\n }\n return ɵɵelementStart;\n}\n/**\n * Mark the end of the element.\n * @returns This function returns itself so that it may be chained.\n *\n * @codeGenApi\n */\nfunction ɵɵelementEnd() {\n let currentTNode = getCurrentTNode();\n ngDevMode && assertDefined(currentTNode, 'No parent node to close.');\n if (isCurrentTNodeParent()) {\n setCurrentTNodeAsNotParent();\n }\n else {\n ngDevMode && assertHasParent(getCurrentTNode());\n currentTNode = currentTNode.parent;\n setCurrentTNode(currentTNode, false);\n }\n const tNode = currentTNode;\n ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */);\n if (isSkipHydrationRootTNode(tNode)) {\n leaveSkipHydrationBlock();\n }\n decreaseElementDepthCount();\n const tView = getTView();\n if (tView.firstCreatePass) {\n registerPostOrderHooks(tView, currentTNode);\n if (isContentQueryHost(currentTNode)) {\n tView.queries.elementEnd(currentTNode);\n }\n }\n if (tNode.classesWithoutHost != null && hasClassInput(tNode)) {\n setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.classesWithoutHost, true);\n }\n if (tNode.stylesWithoutHost != null && hasStyleInput(tNode)) {\n setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.stylesWithoutHost, false);\n }\n return ɵɵelementEnd;\n}\n/**\n * Creates an empty element using {@link elementStart} and {@link elementEnd}\n *\n * @param index Index of the element in the data array\n * @param name Name of the DOM Node\n * @param attrsIndex Index of the element's attributes in the `consts` array.\n * @param localRefsIndex Index of the element's local references in the `consts` array.\n * @returns This function returns itself so that it may be chained.\n *\n * @codeGenApi\n */\nfunction ɵɵelement(index, name, attrsIndex, localRefsIndex) {\n ɵɵelementStart(index, name, attrsIndex, localRefsIndex);\n ɵɵelementEnd();\n return ɵɵelement;\n}\nlet _locateOrCreateElementNode = (tView, lView, tNode, renderer, name, index) => {\n lastNodeWasCreated(true);\n return createElementNode(renderer, name, getNamespace$1());\n};\n/**\n * Enables hydration code path (to lookup existing elements in DOM)\n * in addition to the regular creation mode of element nodes.\n */\nfunction locateOrCreateElementNodeImpl(tView, lView, tNode, renderer, name, index) {\n const hydrationInfo = lView[HYDRATION];\n const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock$1() || isDisconnectedNode$1(hydrationInfo, index);\n lastNodeWasCreated(isNodeCreationMode);\n // Regular creation mode.\n if (isNodeCreationMode) {\n return createElementNode(renderer, name, getNamespace$1());\n }\n // Hydration mode, looking up an existing element in DOM.\n const native = locateNextRNode(hydrationInfo, tView, lView, tNode);\n ngDevMode && validateMatchingNode(native, Node.ELEMENT_NODE, name, lView, tNode);\n ngDevMode && markRNodeAsClaimedByHydration(native);\n // This element might also be an anchor of a view container.\n if (getSerializedContainerViews(hydrationInfo, index)) {\n // Important note: this element acts as an anchor, but it's **not** a part\n // of the embedded view, so we start the segment **after** this element, taking\n // a reference to the next sibling. For example, the following template:\n // `<div #vcrTarget>` is represented in the DOM as `<div></div>...<!--container-->`,\n // so while processing a `<div>` instruction, point to the next sibling as a\n // start of a segment.\n ngDevMode && validateNodeExists(native.nextSibling, lView, tNode);\n setSegmentHead(hydrationInfo, index, native.nextSibling);\n }\n // Checks if the skip hydration attribute is present during hydration so we know to\n // skip attempting to hydrate this block. We check both TNode and RElement for an\n // attribute: the RElement case is needed for i18n cases, when we add it to host\n // elements during the annotation phase (after all internal data structures are setup).\n if (hydrationInfo &&\n (hasSkipHydrationAttrOnTNode(tNode) || hasSkipHydrationAttrOnRElement(native))) {\n if (isComponentHost(tNode)) {\n enterSkipHydrationBlock(tNode);\n // Since this isn't hydratable, we need to empty the node\n // so there's no duplicate content after render\n clearElementContents(native);\n ngDevMode && ngDevMode.componentsSkippedHydration++;\n }\n else if (ngDevMode) {\n // If this is not a component host, throw an error.\n // Hydration can be skipped on per-component basis only.\n throw invalidSkipHydrationHost(native);\n }\n }\n return native;\n}\nfunction enableLocateOrCreateElementNodeImpl() {\n _locateOrCreateElementNode = locateOrCreateElementNodeImpl;\n}\n\nfunction elementContainerStartFirstCreatePass(index, tView, lView, attrsIndex, localRefsIndex) {\n ngDevMode && ngDevMode.firstCreatePass++;\n const tViewConsts = tView.consts;\n const attrs = getConstant(tViewConsts, attrsIndex);\n const tNode = getOrCreateTNode(tView, index, 8 /* TNodeType.ElementContainer */, 'ng-container', attrs);\n // While ng-container doesn't necessarily support styling, we use the style context to identify\n // and execute directives on the ng-container.\n if (attrs !== null) {\n computeStaticStyling(tNode, attrs, true);\n }\n const localRefs = getConstant(tViewConsts, localRefsIndex);\n resolveDirectives(tView, lView, tNode, localRefs);\n if (tView.queries !== null) {\n tView.queries.elementStart(tView, tNode);\n }\n return tNode;\n}\n/**\n * Creates a logical container for other nodes (<ng-container>) backed by a comment node in the DOM.\n * The instruction must later be followed by `elementContainerEnd()` call.\n *\n * @param index Index of the element in the LView array\n * @param attrsIndex Index of the container attributes in the `consts` array.\n * @param localRefsIndex Index of the container's local references in the `consts` array.\n * @returns This function returns itself so that it may be chained.\n *\n * Even if this instruction accepts a set of attributes no actual attribute values are propagated to\n * the DOM (as a comment node can't have attributes). Attributes are here only for directive\n * matching purposes and setting initial inputs of directives.\n *\n * @codeGenApi\n */\nfunction ɵɵelementContainerStart(index, attrsIndex, localRefsIndex) {\n const lView = getLView();\n const tView = getTView();\n const adjustedIndex = index + HEADER_OFFSET;\n ngDevMode && assertIndexInRange(lView, adjustedIndex);\n ngDevMode &&\n assertEqual(getBindingIndex(), tView.bindingStartIndex, 'element containers should be created before any bindings');\n const tNode = tView.firstCreatePass ?\n elementContainerStartFirstCreatePass(adjustedIndex, tView, lView, attrsIndex, localRefsIndex) :\n tView.data[adjustedIndex];\n setCurrentTNode(tNode, true);\n const comment = _locateOrCreateElementContainerNode(tView, lView, tNode, index);\n lView[adjustedIndex] = comment;\n if (wasLastNodeCreated()) {\n appendChild(tView, lView, comment, tNode);\n }\n attachPatchData(comment, lView);\n if (isDirectiveHost(tNode)) {\n createDirectivesInstances(tView, lView, tNode);\n executeContentQueries(tView, tNode, lView);\n }\n if (localRefsIndex != null) {\n saveResolvedLocalsInData(lView, tNode);\n }\n return ɵɵelementContainerStart;\n}\n/**\n * Mark the end of the <ng-container>.\n * @returns This function returns itself so that it may be chained.\n *\n * @codeGenApi\n */\nfunction ɵɵelementContainerEnd() {\n let currentTNode = getCurrentTNode();\n const tView = getTView();\n if (isCurrentTNodeParent()) {\n setCurrentTNodeAsNotParent();\n }\n else {\n ngDevMode && assertHasParent(currentTNode);\n currentTNode = currentTNode.parent;\n setCurrentTNode(currentTNode, false);\n }\n ngDevMode && assertTNodeType(currentTNode, 8 /* TNodeType.ElementContainer */);\n if (tView.firstCreatePass) {\n registerPostOrderHooks(tView, currentTNode);\n if (isContentQueryHost(currentTNode)) {\n tView.queries.elementEnd(currentTNode);\n }\n }\n return ɵɵelementContainerEnd;\n}\n/**\n * Creates an empty logical container using {@link elementContainerStart}\n * and {@link elementContainerEnd}\n *\n * @param index Index of the element in the LView array\n * @param attrsIndex Index of the container attributes in the `consts` array.\n * @param localRefsIndex Index of the container's local references in the `consts` array.\n * @returns This function returns itself so that it may be chained.\n *\n * @codeGenApi\n */\nfunction ɵɵelementContainer(index, attrsIndex, localRefsIndex) {\n ɵɵelementContainerStart(index, attrsIndex, localRefsIndex);\n ɵɵelementContainerEnd();\n return ɵɵelementContainer;\n}\nlet _locateOrCreateElementContainerNode = (tView, lView, tNode, index) => {\n lastNodeWasCreated(true);\n return createCommentNode(lView[RENDERER], ngDevMode ? 'ng-container' : '');\n};\n/**\n * Enables hydration code path (to lookup existing elements in DOM)\n * in addition to the regular creation mode of comment nodes that\n * represent <ng-container>'s anchor.\n */\nfunction locateOrCreateElementContainerNode(tView, lView, tNode, index) {\n let comment;\n const hydrationInfo = lView[HYDRATION];\n const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock$1();\n lastNodeWasCreated(isNodeCreationMode);\n // Regular creation mode.\n if (isNodeCreationMode) {\n return createCommentNode(lView[RENDERER], ngDevMode ? 'ng-container' : '');\n }\n // Hydration mode, looking up existing elements in DOM.\n const currentRNode = locateNextRNode(hydrationInfo, tView, lView, tNode);\n ngDevMode && validateNodeExists(currentRNode, lView, tNode);\n const ngContainerSize = getNgContainerSize(hydrationInfo, index);\n ngDevMode &&\n assertNumber(ngContainerSize, 'Unexpected state: hydrating an <ng-container>, ' +\n 'but no hydration info is available.');\n setSegmentHead(hydrationInfo, index, currentRNode);\n comment = siblingAfter(ngContainerSize, currentRNode);\n if (ngDevMode) {\n validateMatchingNode(comment, Node.COMMENT_NODE, null, lView, tNode);\n markRNodeAsClaimedByHydration(comment);\n }\n return comment;\n}\nfunction enableLocateOrCreateElementContainerNodeImpl() {\n _locateOrCreateElementContainerNode = locateOrCreateElementContainerNode;\n}\n\n/**\n * Returns the current OpaqueViewState instance.\n *\n * Used in conjunction with the restoreView() instruction to save a snapshot\n * of the current view and restore it when listeners are invoked. This allows\n * walking the declaration view tree in listeners to get vars from parent views.\n *\n * @codeGenApi\n */\nfunction ɵɵgetCurrentView() {\n return getLView();\n}\n\n/**\n * Determine if the argument is shaped like a Promise\n */\nfunction isPromise(obj) {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && typeof obj.then === 'function';\n}\n/**\n * Determine if the argument is a Subscribable\n */\nfunction isSubscribable(obj) {\n return !!obj && typeof obj.subscribe === 'function';\n}\n\n/**\n * Adds an event listener to the current node.\n *\n * If an output exists on one of the node's directives, it also subscribes to the output\n * and saves the subscription for later cleanup.\n *\n * @param eventName Name of the event\n * @param listenerFn The function to be called when event emits\n * @param useCapture Whether or not to use capture in event listener - this argument is a reminder\n * from the Renderer3 infrastructure and should be removed from the instruction arguments\n * @param eventTargetResolver Function that returns global target information in case this listener\n * should be attached to a global object like window, document or body\n *\n * @codeGenApi\n */\nfunction ɵɵlistener(eventName, listenerFn, useCapture, eventTargetResolver) {\n const lView = getLView();\n const tView = getTView();\n const tNode = getCurrentTNode();\n listenerInternal(tView, lView, lView[RENDERER], tNode, eventName, listenerFn, eventTargetResolver);\n return ɵɵlistener;\n}\n/**\n * Registers a synthetic host listener (e.g. `(@foo.start)`) on a component or directive.\n *\n * This instruction is for compatibility purposes and is designed to ensure that a\n * synthetic host listener (e.g. `@HostListener('@foo.start')`) properly gets rendered\n * in the component's renderer. Normally all host listeners are evaluated with the\n * parent component's renderer, but, in the case of animation @triggers, they need\n * to be evaluated with the sub component's renderer (because that's where the\n * animation triggers are defined).\n *\n * Do not use this instruction as a replacement for `listener`. This instruction\n * only exists to ensure compatibility with the ViewEngine's host binding behavior.\n *\n * @param eventName Name of the event\n * @param listenerFn The function to be called when event emits\n * @param useCapture Whether or not to use capture in event listener\n * @param eventTargetResolver Function that returns global target information in case this listener\n * should be attached to a global object like window, document or body\n *\n * @codeGenApi\n */\nfunction ɵɵsyntheticHostListener(eventName, listenerFn) {\n const tNode = getCurrentTNode();\n const lView = getLView();\n const tView = getTView();\n const currentDef = getCurrentDirectiveDef(tView.data);\n const renderer = loadComponentRenderer(currentDef, tNode, lView);\n listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn);\n return ɵɵsyntheticHostListener;\n}\n/**\n * A utility function that checks if a given element has already an event handler registered for an\n * event with a specified name. The TView.cleanup data structure is used to find out which events\n * are registered for a given element.\n */\nfunction findExistingListener(tView, lView, eventName, tNodeIdx) {\n const tCleanup = tView.cleanup;\n if (tCleanup != null) {\n for (let i = 0; i < tCleanup.length - 1; i += 2) {\n const cleanupEventName = tCleanup[i];\n if (cleanupEventName === eventName && tCleanup[i + 1] === tNodeIdx) {\n // We have found a matching event name on the same node but it might not have been\n // registered yet, so we must explicitly verify entries in the LView cleanup data\n // structures.\n const lCleanup = lView[CLEANUP];\n const listenerIdxInLCleanup = tCleanup[i + 2];\n return lCleanup.length > listenerIdxInLCleanup ? lCleanup[listenerIdxInLCleanup] : null;\n }\n // TView.cleanup can have a mix of 4-elements entries (for event handler cleanups) or\n // 2-element entries (for directive and queries destroy hooks). As such we can encounter\n // blocks of 4 or 2 items in the tView.cleanup and this is why we iterate over 2 elements\n // first and jump another 2 elements if we detect listeners cleanup (4 elements). Also check\n // documentation of TView.cleanup for more details of this data structure layout.\n if (typeof cleanupEventName === 'string') {\n i += 2;\n }\n }\n }\n return null;\n}\nfunction listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn, eventTargetResolver) {\n const isTNodeDirectiveHost = isDirectiveHost(tNode);\n const firstCreatePass = tView.firstCreatePass;\n const tCleanup = firstCreatePass && getOrCreateTViewCleanup(tView);\n const context = lView[CONTEXT];\n // When the ɵɵlistener instruction was generated and is executed we know that there is either a\n // native listener or a directive output on this element. As such we we know that we will have to\n // register a listener and store its cleanup function on LView.\n const lCleanup = getOrCreateLViewCleanup(lView);\n ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);\n let processOutputs = true;\n // Adding a native event listener is applicable when:\n // - The corresponding TNode represents a DOM element.\n // - The event target has a resolver (usually resulting in a global object,\n // such as `window` or `document`).\n if ((tNode.type & 3 /* TNodeType.AnyRNode */) || eventTargetResolver) {\n const native = getNativeByTNode(tNode, lView);\n const target = eventTargetResolver ? eventTargetResolver(native) : native;\n const lCleanupIndex = lCleanup.length;\n const idxOrTargetGetter = eventTargetResolver ?\n (_lView) => eventTargetResolver(unwrapRNode(_lView[tNode.index])) :\n tNode.index;\n // In order to match current behavior, native DOM event listeners must be added for all\n // events (including outputs).\n // There might be cases where multiple directives on the same element try to register an event\n // handler function for the same event. In this situation we want to avoid registration of\n // several native listeners as each registration would be intercepted by NgZone and\n // trigger change detection. This would mean that a single user action would result in several\n // change detections being invoked. To avoid this situation we want to have only one call to\n // native handler registration (for the same element and same type of event).\n //\n // In order to have just one native event handler in presence of multiple handler functions,\n // we just register a first handler function as a native event listener and then chain\n // (coalesce) other handler functions on top of the first native handler function.\n let existingListener = null;\n // Please note that the coalescing described here doesn't happen for events specifying an\n // alternative target (ex. (document:click)) - this is to keep backward compatibility with the\n // view engine.\n // Also, we don't have to search for existing listeners is there are no directives\n // matching on a given node as we can't register multiple event handlers for the same event in\n // a template (this would mean having duplicate attributes).\n if (!eventTargetResolver && isTNodeDirectiveHost) {\n existingListener = findExistingListener(tView, lView, eventName, tNode.index);\n }\n if (existingListener !== null) {\n // Attach a new listener to coalesced listeners list, maintaining the order in which\n // listeners are registered. For performance reasons, we keep a reference to the last\n // listener in that list (in `__ngLastListenerFn__` field), so we can avoid going through\n // the entire set each time we need to add a new listener.\n const lastListenerFn = existingListener.__ngLastListenerFn__ || existingListener;\n lastListenerFn.__ngNextListenerFn__ = listenerFn;\n existingListener.__ngLastListenerFn__ = listenerFn;\n processOutputs = false;\n }\n else {\n listenerFn = wrapListener(tNode, lView, context, listenerFn, false /** preventDefault */);\n const cleanupFn = renderer.listen(target, eventName, listenerFn);\n ngDevMode && ngDevMode.rendererAddEventListener++;\n lCleanup.push(listenerFn, cleanupFn);\n tCleanup && tCleanup.push(eventName, idxOrTargetGetter, lCleanupIndex, lCleanupIndex + 1);\n }\n }\n else {\n // Even if there is no native listener to add, we still need to wrap the listener so that OnPush\n // ancestors are marked dirty when an event occurs.\n listenerFn = wrapListener(tNode, lView, context, listenerFn, false /** preventDefault */);\n }\n // subscribe to directive outputs\n const outputs = tNode.outputs;\n let props;\n if (processOutputs && outputs !== null && (props = outputs[eventName])) {\n const propsLength = props.length;\n if (propsLength) {\n for (let i = 0; i < propsLength; i += 2) {\n const index = props[i];\n ngDevMode && assertIndexInRange(lView, index);\n const minifiedName = props[i + 1];\n const directiveInstance = lView[index];\n const output = directiveInstance[minifiedName];\n if (ngDevMode && !isSubscribable(output)) {\n throw new Error(`@Output ${minifiedName} not initialized in '${directiveInstance.constructor.name}'.`);\n }\n const subscription = output.subscribe(listenerFn);\n const idx = lCleanup.length;\n lCleanup.push(listenerFn, subscription);\n tCleanup && tCleanup.push(eventName, tNode.index, idx, -(idx + 1));\n }\n }\n }\n}\nfunction executeListenerWithErrorHandling(lView, context, listenerFn, e) {\n try {\n profiler(6 /* ProfilerEvent.OutputStart */, context, listenerFn);\n // Only explicitly returning false from a listener should preventDefault\n return listenerFn(e) !== false;\n }\n catch (error) {\n handleError(lView, error);\n return false;\n }\n finally {\n profiler(7 /* ProfilerEvent.OutputEnd */, context, listenerFn);\n }\n}\n/**\n * Wraps an event listener with a function that marks ancestors dirty and prevents default behavior,\n * if applicable.\n *\n * @param tNode The TNode associated with this listener\n * @param lView The LView that contains this listener\n * @param listenerFn The listener function to call\n * @param wrapWithPreventDefault Whether or not to prevent default behavior\n * (the procedural renderer does this already, so in those cases, we should skip)\n */\nfunction wrapListener(tNode, lView, context, listenerFn, wrapWithPreventDefault) {\n // Note: we are performing most of the work in the listener function itself\n // to optimize listener registration.\n return function wrapListenerIn_markDirtyAndPreventDefault(e) {\n // Ivy uses `Function` as a special token that allows us to unwrap the function\n // so that it can be invoked programmatically by `DebugNode.triggerEventHandler`.\n if (e === Function) {\n return listenerFn;\n }\n // In order to be backwards compatible with View Engine, events on component host nodes\n // must also mark the component view itself dirty (i.e. the view that it owns).\n const startView = tNode.componentOffset > -1 ? getComponentLViewByIndex(tNode.index, lView) : lView;\n markViewDirty(startView);\n let result = executeListenerWithErrorHandling(lView, context, listenerFn, e);\n // A just-invoked listener function might have coalesced listeners so we need to check for\n // their presence and invoke as needed.\n let nextListenerFn = wrapListenerIn_markDirtyAndPreventDefault.__ngNextListenerFn__;\n while (nextListenerFn) {\n // We should prevent default if any of the listeners explicitly return false\n result = executeListenerWithErrorHandling(lView, context, nextListenerFn, e) && result;\n nextListenerFn = nextListenerFn.__ngNextListenerFn__;\n }\n if (wrapWithPreventDefault && result === false) {\n e.preventDefault();\n }\n return result;\n };\n}\n\n/**\n * Retrieves a context at the level specified and saves it as the global, contextViewData.\n * Will get the next level up if level is not specified.\n *\n * This is used to save contexts of parent views so they can be bound in embedded views, or\n * in conjunction with reference() to bind a ref from a parent view.\n *\n * @param level The relative level of the view from which to grab context compared to contextVewData\n * @returns context\n *\n * @codeGenApi\n */\nfunction ɵɵnextContext(level = 1) {\n return nextContextImpl(level);\n}\n\n/**\n * Checks a given node against matching projection slots and returns the\n * determined slot index. Returns \"null\" if no slot matched the given node.\n *\n * This function takes into account the parsed ngProjectAs selector from the\n * node's attributes. If present, it will check whether the ngProjectAs selector\n * matches any of the projection slot selectors.\n */\nfunction matchingProjectionSlotIndex(tNode, projectionSlots) {\n let wildcardNgContentIndex = null;\n const ngProjectAsAttrVal = getProjectAsAttrValue(tNode);\n for (let i = 0; i < projectionSlots.length; i++) {\n const slotValue = projectionSlots[i];\n // The last wildcard projection slot should match all nodes which aren't matching\n // any selector. This is necessary to be backwards compatible with view engine.\n if (slotValue === '*') {\n wildcardNgContentIndex = i;\n continue;\n }\n // If we ran into an `ngProjectAs` attribute, we should match its parsed selector\n // to the list of selectors, otherwise we fall back to matching against the node.\n if (ngProjectAsAttrVal === null ?\n isNodeMatchingSelectorList(tNode, slotValue, /* isProjectionMode */ true) :\n isSelectorInSelectorList(ngProjectAsAttrVal, slotValue)) {\n return i; // first matching selector \"captures\" a given node\n }\n }\n return wildcardNgContentIndex;\n}\n/**\n * Instruction to distribute projectable nodes among <ng-content> occurrences in a given template.\n * It takes all the selectors from the entire component's template and decides where\n * each projected node belongs (it re-distributes nodes among \"buckets\" where each \"bucket\" is\n * backed by a selector).\n *\n * This function requires CSS selectors to be provided in 2 forms: parsed (by a compiler) and text,\n * un-parsed form.\n *\n * The parsed form is needed for efficient matching of a node against a given CSS selector.\n * The un-parsed, textual form is needed for support of the ngProjectAs attribute.\n *\n * Having a CSS selector in 2 different formats is not ideal, but alternatives have even more\n * drawbacks:\n * - having only a textual form would require runtime parsing of CSS selectors;\n * - we can't have only a parsed as we can't re-construct textual form from it (as entered by a\n * template author).\n *\n * @param projectionSlots? A collection of projection slots. A projection slot can be based\n * on a parsed CSS selectors or set to the wildcard selector (\"*\") in order to match\n * all nodes which do not match any selector. If not specified, a single wildcard\n * selector projection slot will be defined.\n *\n * @codeGenApi\n */\nfunction ɵɵprojectionDef(projectionSlots) {\n const componentNode = getLView()[DECLARATION_COMPONENT_VIEW][T_HOST];\n if (!componentNode.projection) {\n // If no explicit projection slots are defined, fall back to a single\n // projection slot with the wildcard selector.\n const numProjectionSlots = projectionSlots ? projectionSlots.length : 1;\n const projectionHeads = componentNode.projection =\n newArray(numProjectionSlots, null);\n const tails = projectionHeads.slice();\n let componentChild = componentNode.child;\n while (componentChild !== null) {\n const slotIndex = projectionSlots ? matchingProjectionSlotIndex(componentChild, projectionSlots) : 0;\n if (slotIndex !== null) {\n if (tails[slotIndex]) {\n tails[slotIndex].projectionNext = componentChild;\n }\n else {\n projectionHeads[slotIndex] = componentChild;\n }\n tails[slotIndex] = componentChild;\n }\n componentChild = componentChild.next;\n }\n }\n}\n/**\n * Inserts previously re-distributed projected nodes. This instruction must be preceded by a call\n * to the projectionDef instruction.\n *\n * @param nodeIndex\n * @param selectorIndex:\n * - 0 when the selector is `*` (or unspecified as this is the default value),\n * - 1 based index of the selector from the {@link projectionDef}\n *\n * @codeGenApi\n */\nfunction ɵɵprojection(nodeIndex, selectorIndex = 0, attrs) {\n const lView = getLView();\n const tView = getTView();\n const tProjectionNode = getOrCreateTNode(tView, HEADER_OFFSET + nodeIndex, 16 /* TNodeType.Projection */, null, attrs || null);\n // We can't use viewData[HOST_NODE] because projection nodes can be nested in embedded views.\n if (tProjectionNode.projection === null)\n tProjectionNode.projection = selectorIndex;\n // `<ng-content>` has no content\n setCurrentTNodeAsNotParent();\n const hydrationInfo = lView[HYDRATION];\n const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock$1();\n if (isNodeCreationMode &&\n (tProjectionNode.flags & 32 /* TNodeFlags.isDetached */) !== 32 /* TNodeFlags.isDetached */) {\n // re-distribution of projectable nodes is stored on a component's view level\n applyProjection(tView, lView, tProjectionNode);\n }\n}\n\n/**\n *\n * Update an interpolated property on an element with a lone bound value\n *\n * Used when the value passed to a property has 1 interpolated value in it, an no additional text\n * surrounds that interpolated value:\n *\n * ```html\n * <div title=\"{{v0}}\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵpropertyInterpolate('title', v0);\n * ```\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.\n *\n * @param propName The name of the property to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵpropertyInterpolate(propName, v0, sanitizer) {\n ɵɵpropertyInterpolate1(propName, '', v0, '', sanitizer);\n return ɵɵpropertyInterpolate;\n}\n/**\n *\n * Update an interpolated property on an element with single bound value surrounded by text.\n *\n * Used when the value passed to a property has 1 interpolated value in it:\n *\n * ```html\n * <div title=\"prefix{{v0}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵpropertyInterpolate1('title', 'prefix', v0, 'suffix');\n * ```\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.\n *\n * @param propName The name of the property to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵpropertyInterpolate1(propName, prefix, v0, suffix, sanitizer) {\n const lView = getLView();\n const interpolatedValue = interpolation1(lView, prefix, v0, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);\n ngDevMode &&\n storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 1, prefix, suffix);\n }\n return ɵɵpropertyInterpolate1;\n}\n/**\n *\n * Update an interpolated property on an element with 2 bound values surrounded by text.\n *\n * Used when the value passed to a property has 2 interpolated values in it:\n *\n * ```html\n * <div title=\"prefix{{v0}}-{{v1}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵpropertyInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');\n * ```\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.\n *\n * @param propName The name of the property to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵpropertyInterpolate2(propName, prefix, v0, i0, v1, suffix, sanitizer) {\n const lView = getLView();\n const interpolatedValue = interpolation2(lView, prefix, v0, i0, v1, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);\n ngDevMode &&\n storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 2, prefix, i0, suffix);\n }\n return ɵɵpropertyInterpolate2;\n}\n/**\n *\n * Update an interpolated property on an element with 3 bound values surrounded by text.\n *\n * Used when the value passed to a property has 3 interpolated values in it:\n *\n * ```html\n * <div title=\"prefix{{v0}}-{{v1}}-{{v2}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵpropertyInterpolate3(\n * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');\n * ```\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.\n *\n * @param propName The name of the property to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵpropertyInterpolate3(propName, prefix, v0, i0, v1, i1, v2, suffix, sanitizer) {\n const lView = getLView();\n const interpolatedValue = interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);\n ngDevMode &&\n storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 3, prefix, i0, i1, suffix);\n }\n return ɵɵpropertyInterpolate3;\n}\n/**\n *\n * Update an interpolated property on an element with 4 bound values surrounded by text.\n *\n * Used when the value passed to a property has 4 interpolated values in it:\n *\n * ```html\n * <div title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵpropertyInterpolate4(\n * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');\n * ```\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.\n *\n * @param propName The name of the property to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵpropertyInterpolate4(propName, prefix, v0, i0, v1, i1, v2, i2, v3, suffix, sanitizer) {\n const lView = getLView();\n const interpolatedValue = interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);\n ngDevMode &&\n storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 4, prefix, i0, i1, i2, suffix);\n }\n return ɵɵpropertyInterpolate4;\n}\n/**\n *\n * Update an interpolated property on an element with 5 bound values surrounded by text.\n *\n * Used when the value passed to a property has 5 interpolated values in it:\n *\n * ```html\n * <div title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵpropertyInterpolate5(\n * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');\n * ```\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.\n *\n * @param propName The name of the property to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵpropertyInterpolate5(propName, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix, sanitizer) {\n const lView = getLView();\n const interpolatedValue = interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);\n ngDevMode &&\n storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 5, prefix, i0, i1, i2, i3, suffix);\n }\n return ɵɵpropertyInterpolate5;\n}\n/**\n *\n * Update an interpolated property on an element with 6 bound values surrounded by text.\n *\n * Used when the value passed to a property has 6 interpolated values in it:\n *\n * ```html\n * <div title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵpropertyInterpolate6(\n * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');\n * ```\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.\n *\n * @param propName The name of the property to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵpropertyInterpolate6(propName, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix, sanitizer) {\n const lView = getLView();\n const interpolatedValue = interpolation6(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);\n ngDevMode &&\n storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 6, prefix, i0, i1, i2, i3, i4, suffix);\n }\n return ɵɵpropertyInterpolate6;\n}\n/**\n *\n * Update an interpolated property on an element with 7 bound values surrounded by text.\n *\n * Used when the value passed to a property has 7 interpolated values in it:\n *\n * ```html\n * <div title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵpropertyInterpolate7(\n * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');\n * ```\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.\n *\n * @param propName The name of the property to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param i5 Static value used for concatenation only.\n * @param v6 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵpropertyInterpolate7(propName, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix, sanitizer) {\n const lView = getLView();\n const interpolatedValue = interpolation7(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);\n ngDevMode &&\n storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 7, prefix, i0, i1, i2, i3, i4, i5, suffix);\n }\n return ɵɵpropertyInterpolate7;\n}\n/**\n *\n * Update an interpolated property on an element with 8 bound values surrounded by text.\n *\n * Used when the value passed to a property has 8 interpolated values in it:\n *\n * ```html\n * <div title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵpropertyInterpolate8(\n * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');\n * ```\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.\n *\n * @param propName The name of the property to update\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param i5 Static value used for concatenation only.\n * @param v6 Value checked for change.\n * @param i6 Static value used for concatenation only.\n * @param v7 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵpropertyInterpolate8(propName, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix, sanitizer) {\n const lView = getLView();\n const interpolatedValue = interpolation8(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix);\n if (interpolatedValue !== NO_CHANGE) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);\n ngDevMode &&\n storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 8, prefix, i0, i1, i2, i3, i4, i5, i6, suffix);\n }\n return ɵɵpropertyInterpolate8;\n}\n/**\n * Update an interpolated property on an element with 9 or more bound values surrounded by text.\n *\n * Used when the number of interpolated values exceeds 8.\n *\n * ```html\n * <div\n * title=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix\"></div>\n * ```\n *\n * Its compiled representation is::\n *\n * ```ts\n * ɵɵpropertyInterpolateV(\n * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,\n * 'suffix']);\n * ```\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.\n *\n * @param propName The name of the property to update.\n * @param values The collection of values and the strings in between those values, beginning with a\n * string prefix and ending with a string suffix.\n * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)\n * @param sanitizer An optional sanitizer function\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵpropertyInterpolateV(propName, values, sanitizer) {\n const lView = getLView();\n const interpolatedValue = interpolationV(lView, values);\n if (interpolatedValue !== NO_CHANGE) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);\n if (ngDevMode) {\n const interpolationInBetween = [values[0]]; // prefix\n for (let i = 2; i < values.length; i += 2) {\n interpolationInBetween.push(values[i]);\n }\n storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - interpolationInBetween.length + 1, ...interpolationInBetween);\n }\n }\n return ɵɵpropertyInterpolateV;\n}\n\nfunction toTStylingRange(prev, next) {\n ngDevMode && assertNumberInRange(prev, 0, 32767 /* StylingRange.UNSIGNED_MASK */);\n ngDevMode && assertNumberInRange(next, 0, 32767 /* StylingRange.UNSIGNED_MASK */);\n return (prev << 17 /* StylingRange.PREV_SHIFT */ | next << 2 /* StylingRange.NEXT_SHIFT */);\n}\nfunction getTStylingRangePrev(tStylingRange) {\n ngDevMode && assertNumber(tStylingRange, 'expected number');\n return (tStylingRange >> 17 /* StylingRange.PREV_SHIFT */) & 32767 /* StylingRange.UNSIGNED_MASK */;\n}\nfunction getTStylingRangePrevDuplicate(tStylingRange) {\n ngDevMode && assertNumber(tStylingRange, 'expected number');\n return (tStylingRange & 2 /* StylingRange.PREV_DUPLICATE */) == 2 /* StylingRange.PREV_DUPLICATE */;\n}\nfunction setTStylingRangePrev(tStylingRange, previous) {\n ngDevMode && assertNumber(tStylingRange, 'expected number');\n ngDevMode && assertNumberInRange(previous, 0, 32767 /* StylingRange.UNSIGNED_MASK */);\n return ((tStylingRange & ~4294836224 /* StylingRange.PREV_MASK */) | (previous << 17 /* StylingRange.PREV_SHIFT */));\n}\nfunction setTStylingRangePrevDuplicate(tStylingRange) {\n ngDevMode && assertNumber(tStylingRange, 'expected number');\n return (tStylingRange | 2 /* StylingRange.PREV_DUPLICATE */);\n}\nfunction getTStylingRangeNext(tStylingRange) {\n ngDevMode && assertNumber(tStylingRange, 'expected number');\n return (tStylingRange & 131068 /* StylingRange.NEXT_MASK */) >> 2 /* StylingRange.NEXT_SHIFT */;\n}\nfunction setTStylingRangeNext(tStylingRange, next) {\n ngDevMode && assertNumber(tStylingRange, 'expected number');\n ngDevMode && assertNumberInRange(next, 0, 32767 /* StylingRange.UNSIGNED_MASK */);\n return ((tStylingRange & ~131068 /* StylingRange.NEXT_MASK */) | //\n next << 2 /* StylingRange.NEXT_SHIFT */);\n}\nfunction getTStylingRangeNextDuplicate(tStylingRange) {\n ngDevMode && assertNumber(tStylingRange, 'expected number');\n return ((tStylingRange) & 1 /* StylingRange.NEXT_DUPLICATE */) === 1 /* StylingRange.NEXT_DUPLICATE */;\n}\nfunction setTStylingRangeNextDuplicate(tStylingRange) {\n ngDevMode && assertNumber(tStylingRange, 'expected number');\n return (tStylingRange | 1 /* StylingRange.NEXT_DUPLICATE */);\n}\nfunction getTStylingRangeTail(tStylingRange) {\n ngDevMode && assertNumber(tStylingRange, 'expected number');\n const next = getTStylingRangeNext(tStylingRange);\n return next === 0 ? getTStylingRangePrev(tStylingRange) : next;\n}\n\n/**\n * NOTE: The word `styling` is used interchangeably as style or class styling.\n *\n * This file contains code to link styling instructions together so that they can be replayed in\n * priority order. The file exists because Ivy styling instruction execution order does not match\n * that of the priority order. The purpose of this code is to create a linked list so that the\n * instructions can be traversed in priority order when computing the styles.\n *\n * Assume we are dealing with the following code:\n * ```\n * @Component({\n * template: `\n * <my-cmp [style]=\" {color: '#001'} \"\n * [style.color]=\" #002 \"\n * dir-style-color-1\n * dir-style-color-2> `\n * })\n * class ExampleComponent {\n * static ngComp = ... {\n * ...\n * // Compiler ensures that `ɵɵstyleProp` is after `ɵɵstyleMap`\n * ɵɵstyleMap({color: '#001'});\n * ɵɵstyleProp('color', '#002');\n * ...\n * }\n * }\n *\n * @Directive({\n * selector: `[dir-style-color-1]',\n * })\n * class Style1Directive {\n * @HostBinding('style') style = {color: '#005'};\n * @HostBinding('style.color') color = '#006';\n *\n * static ngDir = ... {\n * ...\n * // Compiler ensures that `ɵɵstyleProp` is after `ɵɵstyleMap`\n * ɵɵstyleMap({color: '#005'});\n * ɵɵstyleProp('color', '#006');\n * ...\n * }\n * }\n *\n * @Directive({\n * selector: `[dir-style-color-2]',\n * })\n * class Style2Directive {\n * @HostBinding('style') style = {color: '#007'};\n * @HostBinding('style.color') color = '#008';\n *\n * static ngDir = ... {\n * ...\n * // Compiler ensures that `ɵɵstyleProp` is after `ɵɵstyleMap`\n * ɵɵstyleMap({color: '#007'});\n * ɵɵstyleProp('color', '#008');\n * ...\n * }\n * }\n *\n * @Directive({\n * selector: `my-cmp',\n * })\n * class MyComponent {\n * @HostBinding('style') style = {color: '#003'};\n * @HostBinding('style.color') color = '#004';\n *\n * static ngComp = ... {\n * ...\n * // Compiler ensures that `ɵɵstyleProp` is after `ɵɵstyleMap`\n * ɵɵstyleMap({color: '#003'});\n * ɵɵstyleProp('color', '#004');\n * ...\n * }\n * }\n * ```\n *\n * The Order of instruction execution is:\n *\n * NOTE: the comment binding location is for illustrative purposes only.\n *\n * ```\n * // Template: (ExampleComponent)\n * ɵɵstyleMap({color: '#001'}); // Binding index: 10\n * ɵɵstyleProp('color', '#002'); // Binding index: 12\n * // MyComponent\n * ɵɵstyleMap({color: '#003'}); // Binding index: 20\n * ɵɵstyleProp('color', '#004'); // Binding index: 22\n * // Style1Directive\n * ɵɵstyleMap({color: '#005'}); // Binding index: 24\n * ɵɵstyleProp('color', '#006'); // Binding index: 26\n * // Style2Directive\n * ɵɵstyleMap({color: '#007'}); // Binding index: 28\n * ɵɵstyleProp('color', '#008'); // Binding index: 30\n * ```\n *\n * The correct priority order of concatenation is:\n *\n * ```\n * // MyComponent\n * ɵɵstyleMap({color: '#003'}); // Binding index: 20\n * ɵɵstyleProp('color', '#004'); // Binding index: 22\n * // Style1Directive\n * ɵɵstyleMap({color: '#005'}); // Binding index: 24\n * ɵɵstyleProp('color', '#006'); // Binding index: 26\n * // Style2Directive\n * ɵɵstyleMap({color: '#007'}); // Binding index: 28\n * ɵɵstyleProp('color', '#008'); // Binding index: 30\n * // Template: (ExampleComponent)\n * ɵɵstyleMap({color: '#001'}); // Binding index: 10\n * ɵɵstyleProp('color', '#002'); // Binding index: 12\n * ```\n *\n * What color should be rendered?\n *\n * Once the items are correctly sorted in the list, the answer is simply the last item in the\n * concatenation list which is `#002`.\n *\n * To do so we keep a linked list of all of the bindings which pertain to this element.\n * Notice that the bindings are inserted in the order of execution, but the `TView.data` allows\n * us to traverse them in the order of priority.\n *\n * |Idx|`TView.data`|`LView` | Notes\n * |---|------------|-----------------|--------------\n * |...| | |\n * |10 |`null` |`{color: '#001'}`| `ɵɵstyleMap('color', {color: '#001'})`\n * |11 |`30 | 12` | ... |\n * |12 |`color` |`'#002'` | `ɵɵstyleProp('color', '#002')`\n * |13 |`10 | 0` | ... |\n * |...| | |\n * |20 |`null` |`{color: '#003'}`| `ɵɵstyleMap('color', {color: '#003'})`\n * |21 |`0 | 22` | ... |\n * |22 |`color` |`'#004'` | `ɵɵstyleProp('color', '#004')`\n * |23 |`20 | 24` | ... |\n * |24 |`null` |`{color: '#005'}`| `ɵɵstyleMap('color', {color: '#005'})`\n * |25 |`22 | 26` | ... |\n * |26 |`color` |`'#006'` | `ɵɵstyleProp('color', '#006')`\n * |27 |`24 | 28` | ... |\n * |28 |`null` |`{color: '#007'}`| `ɵɵstyleMap('color', {color: '#007'})`\n * |29 |`26 | 30` | ... |\n * |30 |`color` |`'#008'` | `ɵɵstyleProp('color', '#008')`\n * |31 |`28 | 10` | ... |\n *\n * The above data structure allows us to re-concatenate the styling no matter which data binding\n * changes.\n *\n * NOTE: in addition to keeping track of next/previous index the `TView.data` also stores prev/next\n * duplicate bit. The duplicate bit if true says there either is a binding with the same name or\n * there is a map (which may contain the name). This information is useful in knowing if other\n * styles with higher priority need to be searched for overwrites.\n *\n * NOTE: See `should support example in 'tnode_linked_list.ts' documentation` in\n * `tnode_linked_list_spec.ts` for working example.\n */\nlet __unused_const_as_closure_does_not_like_standalone_comment_blocks__;\n/**\n * Insert new `tStyleValue` at `TData` and link existing style bindings such that we maintain linked\n * list of styles and compute the duplicate flag.\n *\n * Note: this function is executed during `firstUpdatePass` only to populate the `TView.data`.\n *\n * The function works by keeping track of `tStylingRange` which contains two pointers pointing to\n * the head/tail of the template portion of the styles.\n * - if `isHost === false` (we are template) then insertion is at tail of `TStylingRange`\n * - if `isHost === true` (we are host binding) then insertion is at head of `TStylingRange`\n *\n * @param tData The `TData` to insert into.\n * @param tNode `TNode` associated with the styling element.\n * @param tStylingKey See `TStylingKey`.\n * @param index location of where `tStyleValue` should be stored (and linked into list.)\n * @param isHostBinding `true` if the insertion is for a `hostBinding`. (insertion is in front of\n * template.)\n * @param isClassBinding True if the associated `tStylingKey` as a `class` styling.\n * `tNode.classBindings` should be used (or `tNode.styleBindings` otherwise.)\n */\nfunction insertTStylingBinding(tData, tNode, tStylingKeyWithStatic, index, isHostBinding, isClassBinding) {\n ngDevMode && assertFirstUpdatePass(getTView());\n let tBindings = isClassBinding ? tNode.classBindings : tNode.styleBindings;\n let tmplHead = getTStylingRangePrev(tBindings);\n let tmplTail = getTStylingRangeNext(tBindings);\n tData[index] = tStylingKeyWithStatic;\n let isKeyDuplicateOfStatic = false;\n let tStylingKey;\n if (Array.isArray(tStylingKeyWithStatic)) {\n // We are case when the `TStylingKey` contains static fields as well.\n const staticKeyValueArray = tStylingKeyWithStatic;\n tStylingKey = staticKeyValueArray[1]; // unwrap.\n // We need to check if our key is present in the static so that we can mark it as duplicate.\n if (tStylingKey === null ||\n keyValueArrayIndexOf(staticKeyValueArray, tStylingKey) > 0) {\n // tStylingKey is present in the statics, need to mark it as duplicate.\n isKeyDuplicateOfStatic = true;\n }\n }\n else {\n tStylingKey = tStylingKeyWithStatic;\n }\n if (isHostBinding) {\n // We are inserting host bindings\n // If we don't have template bindings then `tail` is 0.\n const hasTemplateBindings = tmplTail !== 0;\n // This is important to know because that means that the `head` can't point to the first\n // template bindings (there are none.) Instead the head points to the tail of the template.\n if (hasTemplateBindings) {\n // template head's \"prev\" will point to last host binding or to 0 if no host bindings yet\n const previousNode = getTStylingRangePrev(tData[tmplHead + 1]);\n tData[index + 1] = toTStylingRange(previousNode, tmplHead);\n // if a host binding has already been registered, we need to update the next of that host\n // binding to point to this one\n if (previousNode !== 0) {\n // We need to update the template-tail value to point to us.\n tData[previousNode + 1] =\n setTStylingRangeNext(tData[previousNode + 1], index);\n }\n // The \"previous\" of the template binding head should point to this host binding\n tData[tmplHead + 1] = setTStylingRangePrev(tData[tmplHead + 1], index);\n }\n else {\n tData[index + 1] = toTStylingRange(tmplHead, 0);\n // if a host binding has already been registered, we need to update the next of that host\n // binding to point to this one\n if (tmplHead !== 0) {\n // We need to update the template-tail value to point to us.\n tData[tmplHead + 1] = setTStylingRangeNext(tData[tmplHead + 1], index);\n }\n // if we don't have template, the head points to template-tail, and needs to be advanced.\n tmplHead = index;\n }\n }\n else {\n // We are inserting in template section.\n // We need to set this binding's \"previous\" to the current template tail\n tData[index + 1] = toTStylingRange(tmplTail, 0);\n ngDevMode &&\n assertEqual(tmplHead !== 0 && tmplTail === 0, false, 'Adding template bindings after hostBindings is not allowed.');\n if (tmplHead === 0) {\n tmplHead = index;\n }\n else {\n // We need to update the previous value \"next\" to point to this binding\n tData[tmplTail + 1] = setTStylingRangeNext(tData[tmplTail + 1], index);\n }\n tmplTail = index;\n }\n // Now we need to update / compute the duplicates.\n // Starting with our location search towards head (least priority)\n if (isKeyDuplicateOfStatic) {\n tData[index + 1] = setTStylingRangePrevDuplicate(tData[index + 1]);\n }\n markDuplicates(tData, tStylingKey, index, true, isClassBinding);\n markDuplicates(tData, tStylingKey, index, false, isClassBinding);\n markDuplicateOfResidualStyling(tNode, tStylingKey, tData, index, isClassBinding);\n tBindings = toTStylingRange(tmplHead, tmplTail);\n if (isClassBinding) {\n tNode.classBindings = tBindings;\n }\n else {\n tNode.styleBindings = tBindings;\n }\n}\n/**\n * Look into the residual styling to see if the current `tStylingKey` is duplicate of residual.\n *\n * @param tNode `TNode` where the residual is stored.\n * @param tStylingKey `TStylingKey` to store.\n * @param tData `TData` associated with the current `LView`.\n * @param index location of where `tStyleValue` should be stored (and linked into list.)\n * @param isClassBinding True if the associated `tStylingKey` as a `class` styling.\n * `tNode.classBindings` should be used (or `tNode.styleBindings` otherwise.)\n */\nfunction markDuplicateOfResidualStyling(tNode, tStylingKey, tData, index, isClassBinding) {\n const residual = isClassBinding ? tNode.residualClasses : tNode.residualStyles;\n if (residual != null /* or undefined */ && typeof tStylingKey == 'string' &&\n keyValueArrayIndexOf(residual, tStylingKey) >= 0) {\n // We have duplicate in the residual so mark ourselves as duplicate.\n tData[index + 1] = setTStylingRangeNextDuplicate(tData[index + 1]);\n }\n}\n/**\n * Marks `TStyleValue`s as duplicates if another style binding in the list has the same\n * `TStyleValue`.\n *\n * NOTE: this function is intended to be called twice once with `isPrevDir` set to `true` and once\n * with it set to `false` to search both the previous as well as next items in the list.\n *\n * No duplicate case\n * ```\n * [style.color]\n * [style.width.px] <<- index\n * [style.height.px]\n * ```\n *\n * In the above case adding `[style.width.px]` to the existing `[style.color]` produces no\n * duplicates because `width` is not found in any other part of the linked list.\n *\n * Duplicate case\n * ```\n * [style.color]\n * [style.width.em]\n * [style.width.px] <<- index\n * ```\n * In the above case adding `[style.width.px]` will produce a duplicate with `[style.width.em]`\n * because `width` is found in the chain.\n *\n * Map case 1\n * ```\n * [style.width.px]\n * [style.color]\n * [style] <<- index\n * ```\n * In the above case adding `[style]` will produce a duplicate with any other bindings because\n * `[style]` is a Map and as such is fully dynamic and could produce `color` or `width`.\n *\n * Map case 2\n * ```\n * [style]\n * [style.width.px]\n * [style.color] <<- index\n * ```\n * In the above case adding `[style.color]` will produce a duplicate because there is already a\n * `[style]` binding which is a Map and as such is fully dynamic and could produce `color` or\n * `width`.\n *\n * NOTE: Once `[style]` (Map) is added into the system all things are mapped as duplicates.\n * NOTE: We use `style` as example, but same logic is applied to `class`es as well.\n *\n * @param tData `TData` where the linked list is stored.\n * @param tStylingKey `TStylingKeyPrimitive` which contains the value to compare to other keys in\n * the linked list.\n * @param index Starting location in the linked list to search from\n * @param isPrevDir Direction.\n * - `true` for previous (lower priority);\n * - `false` for next (higher priority).\n */\nfunction markDuplicates(tData, tStylingKey, index, isPrevDir, isClassBinding) {\n const tStylingAtIndex = tData[index + 1];\n const isMap = tStylingKey === null;\n let cursor = isPrevDir ? getTStylingRangePrev(tStylingAtIndex) : getTStylingRangeNext(tStylingAtIndex);\n let foundDuplicate = false;\n // We keep iterating as long as we have a cursor\n // AND either:\n // - we found what we are looking for, OR\n // - we are a map in which case we have to continue searching even after we find what we were\n // looking for since we are a wild card and everything needs to be flipped to duplicate.\n while (cursor !== 0 && (foundDuplicate === false || isMap)) {\n ngDevMode && assertIndexInRange(tData, cursor);\n const tStylingValueAtCursor = tData[cursor];\n const tStyleRangeAtCursor = tData[cursor + 1];\n if (isStylingMatch(tStylingValueAtCursor, tStylingKey)) {\n foundDuplicate = true;\n tData[cursor + 1] = isPrevDir ? setTStylingRangeNextDuplicate(tStyleRangeAtCursor) :\n setTStylingRangePrevDuplicate(tStyleRangeAtCursor);\n }\n cursor = isPrevDir ? getTStylingRangePrev(tStyleRangeAtCursor) :\n getTStylingRangeNext(tStyleRangeAtCursor);\n }\n if (foundDuplicate) {\n // if we found a duplicate, than mark ourselves.\n tData[index + 1] = isPrevDir ? setTStylingRangePrevDuplicate(tStylingAtIndex) :\n setTStylingRangeNextDuplicate(tStylingAtIndex);\n }\n}\n/**\n * Determines if two `TStylingKey`s are a match.\n *\n * When computing whether a binding contains a duplicate, we need to compare if the instruction\n * `TStylingKey` has a match.\n *\n * Here are examples of `TStylingKey`s which match given `tStylingKeyCursor` is:\n * - `color`\n * - `color` // Match another color\n * - `null` // That means that `tStylingKey` is a `classMap`/`styleMap` instruction\n * - `['', 'color', 'other', true]` // wrapped `color` so match\n * - `['', null, 'other', true]` // wrapped `null` so match\n * - `['', 'width', 'color', 'value']` // wrapped static value contains a match on `'color'`\n * - `null` // `tStylingKeyCursor` always match as it is `classMap`/`styleMap` instruction\n *\n * @param tStylingKeyCursor\n * @param tStylingKey\n */\nfunction isStylingMatch(tStylingKeyCursor, tStylingKey) {\n ngDevMode &&\n assertNotEqual(Array.isArray(tStylingKey), true, 'Expected that \\'tStylingKey\\' has been unwrapped');\n if (tStylingKeyCursor === null || // If the cursor is `null` it means that we have map at that\n // location so we must assume that we have a match.\n tStylingKey == null || // If `tStylingKey` is `null` then it is a map therefor assume that it\n // contains a match.\n (Array.isArray(tStylingKeyCursor) ? tStylingKeyCursor[1] : tStylingKeyCursor) ===\n tStylingKey // If the keys match explicitly than we are a match.\n ) {\n return true;\n }\n else if (Array.isArray(tStylingKeyCursor) && typeof tStylingKey === 'string') {\n // if we did not find a match, but `tStylingKeyCursor` is `KeyValueArray` that means cursor has\n // statics and we need to check those as well.\n return keyValueArrayIndexOf(tStylingKeyCursor, tStylingKey) >=\n 0; // see if we are matching the key\n }\n return false;\n}\n\n// Global state of the parser. (This makes parser non-reentrant, but that is not an issue)\nconst parserState = {\n textEnd: 0,\n key: 0,\n keyEnd: 0,\n value: 0,\n valueEnd: 0,\n};\n/**\n * Retrieves the last parsed `key` of style.\n * @param text the text to substring the key from.\n */\nfunction getLastParsedKey(text) {\n return text.substring(parserState.key, parserState.keyEnd);\n}\n/**\n * Retrieves the last parsed `value` of style.\n * @param text the text to substring the key from.\n */\nfunction getLastParsedValue(text) {\n return text.substring(parserState.value, parserState.valueEnd);\n}\n/**\n * Initializes `className` string for parsing and parses the first token.\n *\n * This function is intended to be used in this format:\n * ```\n * for (let i = parseClassName(text); i >= 0; i = parseClassNameNext(text, i)) {\n * const key = getLastParsedKey();\n * ...\n * }\n * ```\n * @param text `className` to parse\n * @returns index where the next invocation of `parseClassNameNext` should resume.\n */\nfunction parseClassName(text) {\n resetParserState(text);\n return parseClassNameNext(text, consumeWhitespace(text, 0, parserState.textEnd));\n}\n/**\n * Parses next `className` token.\n *\n * This function is intended to be used in this format:\n * ```\n * for (let i = parseClassName(text); i >= 0; i = parseClassNameNext(text, i)) {\n * const key = getLastParsedKey();\n * ...\n * }\n * ```\n *\n * @param text `className` to parse\n * @param index where the parsing should resume.\n * @returns index where the next invocation of `parseClassNameNext` should resume.\n */\nfunction parseClassNameNext(text, index) {\n const end = parserState.textEnd;\n if (end === index) {\n return -1;\n }\n index = parserState.keyEnd = consumeClassToken(text, parserState.key = index, end);\n return consumeWhitespace(text, index, end);\n}\n/**\n * Initializes `cssText` string for parsing and parses the first key/values.\n *\n * This function is intended to be used in this format:\n * ```\n * for (let i = parseStyle(text); i >= 0; i = parseStyleNext(text, i))) {\n * const key = getLastParsedKey();\n * const value = getLastParsedValue();\n * ...\n * }\n * ```\n * @param text `cssText` to parse\n * @returns index where the next invocation of `parseStyleNext` should resume.\n */\nfunction parseStyle(text) {\n resetParserState(text);\n return parseStyleNext(text, consumeWhitespace(text, 0, parserState.textEnd));\n}\n/**\n * Parses the next `cssText` key/values.\n *\n * This function is intended to be used in this format:\n * ```\n * for (let i = parseStyle(text); i >= 0; i = parseStyleNext(text, i))) {\n * const key = getLastParsedKey();\n * const value = getLastParsedValue();\n * ...\n * }\n *\n * @param text `cssText` to parse\n * @param index where the parsing should resume.\n * @returns index where the next invocation of `parseStyleNext` should resume.\n */\nfunction parseStyleNext(text, startIndex) {\n const end = parserState.textEnd;\n let index = parserState.key = consumeWhitespace(text, startIndex, end);\n if (end === index) {\n // we reached an end so just quit\n return -1;\n }\n index = parserState.keyEnd = consumeStyleKey(text, index, end);\n index = consumeSeparator(text, index, end, 58 /* CharCode.COLON */);\n index = parserState.value = consumeWhitespace(text, index, end);\n index = parserState.valueEnd = consumeStyleValue(text, index, end);\n return consumeSeparator(text, index, end, 59 /* CharCode.SEMI_COLON */);\n}\n/**\n * Reset the global state of the styling parser.\n * @param text The styling text to parse.\n */\nfunction resetParserState(text) {\n parserState.key = 0;\n parserState.keyEnd = 0;\n parserState.value = 0;\n parserState.valueEnd = 0;\n parserState.textEnd = text.length;\n}\n/**\n * Returns index of next non-whitespace character.\n *\n * @param text Text to scan\n * @param startIndex Starting index of character where the scan should start.\n * @param endIndex Ending index of character where the scan should end.\n * @returns Index of next non-whitespace character (May be the same as `start` if no whitespace at\n * that location.)\n */\nfunction consumeWhitespace(text, startIndex, endIndex) {\n while (startIndex < endIndex && text.charCodeAt(startIndex) <= 32 /* CharCode.SPACE */) {\n startIndex++;\n }\n return startIndex;\n}\n/**\n * Returns index of last char in class token.\n *\n * @param text Text to scan\n * @param startIndex Starting index of character where the scan should start.\n * @param endIndex Ending index of character where the scan should end.\n * @returns Index after last char in class token.\n */\nfunction consumeClassToken(text, startIndex, endIndex) {\n while (startIndex < endIndex && text.charCodeAt(startIndex) > 32 /* CharCode.SPACE */) {\n startIndex++;\n }\n return startIndex;\n}\n/**\n * Consumes all of the characters belonging to style key and token.\n *\n * @param text Text to scan\n * @param startIndex Starting index of character where the scan should start.\n * @param endIndex Ending index of character where the scan should end.\n * @returns Index after last style key character.\n */\nfunction consumeStyleKey(text, startIndex, endIndex) {\n let ch;\n while (startIndex < endIndex &&\n ((ch = text.charCodeAt(startIndex)) === 45 /* CharCode.DASH */ || ch === 95 /* CharCode.UNDERSCORE */ ||\n ((ch & -33 /* CharCode.UPPER_CASE */) >= 65 /* CharCode.A */ && (ch & -33 /* CharCode.UPPER_CASE */) <= 90 /* CharCode.Z */) ||\n (ch >= 48 /* CharCode.ZERO */ && ch <= 57 /* CharCode.NINE */))) {\n startIndex++;\n }\n return startIndex;\n}\n/**\n * Consumes all whitespace and the separator `:` after the style key.\n *\n * @param text Text to scan\n * @param startIndex Starting index of character where the scan should start.\n * @param endIndex Ending index of character where the scan should end.\n * @returns Index after separator and surrounding whitespace.\n */\nfunction consumeSeparator(text, startIndex, endIndex, separator) {\n startIndex = consumeWhitespace(text, startIndex, endIndex);\n if (startIndex < endIndex) {\n if (ngDevMode && text.charCodeAt(startIndex) !== separator) {\n malformedStyleError(text, String.fromCharCode(separator), startIndex);\n }\n startIndex++;\n }\n return startIndex;\n}\n/**\n * Consumes style value honoring `url()` and `\"\"` text.\n *\n * @param text Text to scan\n * @param startIndex Starting index of character where the scan should start.\n * @param endIndex Ending index of character where the scan should end.\n * @returns Index after last style value character.\n */\nfunction consumeStyleValue(text, startIndex, endIndex) {\n let ch1 = -1; // 1st previous character\n let ch2 = -1; // 2nd previous character\n let ch3 = -1; // 3rd previous character\n let i = startIndex;\n let lastChIndex = i;\n while (i < endIndex) {\n const ch = text.charCodeAt(i++);\n if (ch === 59 /* CharCode.SEMI_COLON */) {\n return lastChIndex;\n }\n else if (ch === 34 /* CharCode.DOUBLE_QUOTE */ || ch === 39 /* CharCode.SINGLE_QUOTE */) {\n lastChIndex = i = consumeQuotedText(text, ch, i, endIndex);\n }\n else if (startIndex ===\n i - 4 && // We have seen only 4 characters so far \"URL(\" (Ignore \"foo_URL()\")\n ch3 === 85 /* CharCode.U */ &&\n ch2 === 82 /* CharCode.R */ && ch1 === 76 /* CharCode.L */ && ch === 40 /* CharCode.OPEN_PAREN */) {\n lastChIndex = i = consumeQuotedText(text, 41 /* CharCode.CLOSE_PAREN */, i, endIndex);\n }\n else if (ch > 32 /* CharCode.SPACE */) {\n // if we have a non-whitespace character then capture its location\n lastChIndex = i;\n }\n ch3 = ch2;\n ch2 = ch1;\n ch1 = ch & -33 /* CharCode.UPPER_CASE */;\n }\n return lastChIndex;\n}\n/**\n * Consumes all of the quoted characters.\n *\n * @param text Text to scan\n * @param quoteCharCode CharCode of either `\"` or `'` quote or `)` for `url(...)`.\n * @param startIndex Starting index of character where the scan should start.\n * @param endIndex Ending index of character where the scan should end.\n * @returns Index after quoted characters.\n */\nfunction consumeQuotedText(text, quoteCharCode, startIndex, endIndex) {\n let ch1 = -1; // 1st previous character\n let index = startIndex;\n while (index < endIndex) {\n const ch = text.charCodeAt(index++);\n if (ch == quoteCharCode && ch1 !== 92 /* CharCode.BACK_SLASH */) {\n return index;\n }\n if (ch == 92 /* CharCode.BACK_SLASH */ && ch1 === 92 /* CharCode.BACK_SLASH */) {\n // two back slashes cancel each other out. For example `\"\\\\\"` should properly end the\n // quotation. (It should not assume that the last `\"` is escaped.)\n ch1 = 0;\n }\n else {\n ch1 = ch;\n }\n }\n throw ngDevMode ? malformedStyleError(text, String.fromCharCode(quoteCharCode), endIndex) :\n new Error();\n}\nfunction malformedStyleError(text, expecting, index) {\n ngDevMode && assertEqual(typeof text === 'string', true, 'String expected here');\n throw throwError(`Malformed style at location ${index} in string '` + text.substring(0, index) + '[>>' +\n text.substring(index, index + 1) + '<<]' + text.slice(index + 1) +\n `'. Expecting '${expecting}'.`);\n}\n\n/**\n * Update a style binding on an element with the provided value.\n *\n * If the style value is falsy then it will be removed from the element\n * (or assigned a different value depending if there are any styles placed\n * on the element with `styleMap` or any static styles that are\n * present from when the element was created with `styling`).\n *\n * Note that the styling element is updated as part of `stylingApply`.\n *\n * @param prop A valid CSS property.\n * @param value New value to write (`null` or an empty string to remove).\n * @param suffix Optional suffix. Used with scalar values to add unit such as `px`.\n *\n * Note that this will apply the provided style value to the host element if this function is called\n * within a host binding function.\n *\n * @codeGenApi\n */\nfunction ɵɵstyleProp(prop, value, suffix) {\n checkStylingProperty(prop, value, suffix, false);\n return ɵɵstyleProp;\n}\n/**\n * Update a class binding on an element with the provided value.\n *\n * This instruction is meant to handle the `[class.foo]=\"exp\"` case and,\n * therefore, the class binding itself must already be allocated using\n * `styling` within the creation block.\n *\n * @param prop A valid CSS class (only one).\n * @param value A true/false value which will turn the class on or off.\n *\n * Note that this will apply the provided class value to the host element if this function\n * is called within a host binding function.\n *\n * @codeGenApi\n */\nfunction ɵɵclassProp(className, value) {\n checkStylingProperty(className, value, null, true);\n return ɵɵclassProp;\n}\n/**\n * Update style bindings using an object literal on an element.\n *\n * This instruction is meant to apply styling via the `[style]=\"exp\"` template bindings.\n * When styles are applied to the element they will then be updated with respect to\n * any styles/classes set via `styleProp`. If any styles are set to falsy\n * then they will be removed from the element.\n *\n * Note that the styling instruction will not be applied until `stylingApply` is called.\n *\n * @param styles A key/value style map of the styles that will be applied to the given element.\n * Any missing styles (that have already been applied to the element beforehand) will be\n * removed (unset) from the element's styling.\n *\n * Note that this will apply the provided styleMap value to the host element if this function\n * is called within a host binding.\n *\n * @codeGenApi\n */\nfunction ɵɵstyleMap(styles) {\n checkStylingMap(styleKeyValueArraySet, styleStringParser, styles, false);\n}\n/**\n * Parse text as style and add values to KeyValueArray.\n *\n * This code is pulled out to a separate function so that it can be tree shaken away if it is not\n * needed. It is only referenced from `ɵɵstyleMap`.\n *\n * @param keyValueArray KeyValueArray to add parsed values to.\n * @param text text to parse.\n */\nfunction styleStringParser(keyValueArray, text) {\n for (let i = parseStyle(text); i >= 0; i = parseStyleNext(text, i)) {\n styleKeyValueArraySet(keyValueArray, getLastParsedKey(text), getLastParsedValue(text));\n }\n}\n/**\n * Update class bindings using an object literal or class-string on an element.\n *\n * This instruction is meant to apply styling via the `[class]=\"exp\"` template bindings.\n * When classes are applied to the element they will then be updated with\n * respect to any styles/classes set via `classProp`. If any\n * classes are set to falsy then they will be removed from the element.\n *\n * Note that the styling instruction will not be applied until `stylingApply` is called.\n * Note that this will the provided classMap value to the host element if this function is called\n * within a host binding.\n *\n * @param classes A key/value map or string of CSS classes that will be added to the\n * given element. Any missing classes (that have already been applied to the element\n * beforehand) will be removed (unset) from the element's list of CSS classes.\n *\n * @codeGenApi\n */\nfunction ɵɵclassMap(classes) {\n checkStylingMap(classKeyValueArraySet, classStringParser, classes, true);\n}\n/**\n * Parse text as class and add values to KeyValueArray.\n *\n * This code is pulled out to a separate function so that it can be tree shaken away if it is not\n * needed. It is only referenced from `ɵɵclassMap`.\n *\n * @param keyValueArray KeyValueArray to add parsed values to.\n * @param text text to parse.\n */\nfunction classStringParser(keyValueArray, text) {\n for (let i = parseClassName(text); i >= 0; i = parseClassNameNext(text, i)) {\n keyValueArraySet(keyValueArray, getLastParsedKey(text), true);\n }\n}\n/**\n * Common code between `ɵɵclassProp` and `ɵɵstyleProp`.\n *\n * @param prop property name.\n * @param value binding value.\n * @param suffix suffix for the property (e.g. `em` or `px`)\n * @param isClassBased `true` if `class` change (`false` if `style`)\n */\nfunction checkStylingProperty(prop, value, suffix, isClassBased) {\n const lView = getLView();\n const tView = getTView();\n // Styling instructions use 2 slots per binding.\n // 1. one for the value / TStylingKey\n // 2. one for the intermittent-value / TStylingRange\n const bindingIndex = incrementBindingIndex(2);\n if (tView.firstUpdatePass) {\n stylingFirstUpdatePass(tView, prop, bindingIndex, isClassBased);\n }\n if (value !== NO_CHANGE && bindingUpdated(lView, bindingIndex, value)) {\n const tNode = tView.data[getSelectedIndex()];\n updateStyling(tView, tNode, lView, lView[RENDERER], prop, lView[bindingIndex + 1] = normalizeSuffix(value, suffix), isClassBased, bindingIndex);\n }\n}\n/**\n * Common code between `ɵɵclassMap` and `ɵɵstyleMap`.\n *\n * @param keyValueArraySet (See `keyValueArraySet` in \"util/array_utils\") Gets passed in as a\n * function so that `style` can be processed. This is done for tree shaking purposes.\n * @param stringParser Parser used to parse `value` if `string`. (Passed in as `style` and `class`\n * have different parsers.)\n * @param value bound value from application\n * @param isClassBased `true` if `class` change (`false` if `style`)\n */\nfunction checkStylingMap(keyValueArraySet, stringParser, value, isClassBased) {\n const tView = getTView();\n const bindingIndex = incrementBindingIndex(2);\n if (tView.firstUpdatePass) {\n stylingFirstUpdatePass(tView, null, bindingIndex, isClassBased);\n }\n const lView = getLView();\n if (value !== NO_CHANGE && bindingUpdated(lView, bindingIndex, value)) {\n // `getSelectedIndex()` should be here (rather than in instruction) so that it is guarded by the\n // if so as not to read unnecessarily.\n const tNode = tView.data[getSelectedIndex()];\n if (hasStylingInputShadow(tNode, isClassBased) && !isInHostBindings(tView, bindingIndex)) {\n if (ngDevMode) {\n // verify that if we are shadowing then `TData` is appropriately marked so that we skip\n // processing this binding in styling resolution.\n const tStylingKey = tView.data[bindingIndex];\n assertEqual(Array.isArray(tStylingKey) ? tStylingKey[1] : tStylingKey, false, 'Styling linked list shadow input should be marked as \\'false\\'');\n }\n // VE does not concatenate the static portion like we are doing here.\n // Instead VE just ignores the static completely if dynamic binding is present.\n // Because of locality we have already set the static portion because we don't know if there\n // is a dynamic portion until later. If we would ignore the static portion it would look like\n // the binding has removed it. This would confuse `[ngStyle]`/`[ngClass]` to do the wrong\n // thing as it would think that the static portion was removed. For this reason we\n // concatenate it so that `[ngStyle]`/`[ngClass]` can continue to work on changed.\n let staticPrefix = isClassBased ? tNode.classesWithoutHost : tNode.stylesWithoutHost;\n ngDevMode && isClassBased === false && staticPrefix !== null &&\n assertEqual(staticPrefix.endsWith(';'), true, 'Expecting static portion to end with \\';\\'');\n if (staticPrefix !== null) {\n // We want to make sure that falsy values of `value` become empty strings.\n value = concatStringsWithSpace(staticPrefix, value ? value : '');\n }\n // Given `<div [style] my-dir>` such that `my-dir` has `@Input('style')`.\n // This takes over the `[style]` binding. (Same for `[class]`)\n setDirectiveInputsWhichShadowsStyling(tView, tNode, lView, value, isClassBased);\n }\n else {\n updateStylingMap(tView, tNode, lView, lView[RENDERER], lView[bindingIndex + 1], lView[bindingIndex + 1] = toStylingKeyValueArray(keyValueArraySet, stringParser, value), isClassBased, bindingIndex);\n }\n }\n}\n/**\n * Determines when the binding is in `hostBindings` section\n *\n * @param tView Current `TView`\n * @param bindingIndex index of binding which we would like if it is in `hostBindings`\n */\nfunction isInHostBindings(tView, bindingIndex) {\n // All host bindings are placed after the expando section.\n return bindingIndex >= tView.expandoStartIndex;\n}\n/**\n * Collects the necessary information to insert the binding into a linked list of style bindings\n * using `insertTStylingBinding`.\n *\n * @param tView `TView` where the binding linked list will be stored.\n * @param tStylingKey Property/key of the binding.\n * @param bindingIndex Index of binding associated with the `prop`\n * @param isClassBased `true` if `class` change (`false` if `style`)\n */\nfunction stylingFirstUpdatePass(tView, tStylingKey, bindingIndex, isClassBased) {\n ngDevMode && assertFirstUpdatePass(tView);\n const tData = tView.data;\n if (tData[bindingIndex + 1] === null) {\n // The above check is necessary because we don't clear first update pass until first successful\n // (no exception) template execution. This prevents the styling instruction from double adding\n // itself to the list.\n // `getSelectedIndex()` should be here (rather than in instruction) so that it is guarded by the\n // if so as not to read unnecessarily.\n const tNode = tData[getSelectedIndex()];\n ngDevMode && assertDefined(tNode, 'TNode expected');\n const isHostBindings = isInHostBindings(tView, bindingIndex);\n if (hasStylingInputShadow(tNode, isClassBased) && tStylingKey === null && !isHostBindings) {\n // `tStylingKey === null` implies that we are either `[style]` or `[class]` binding.\n // If there is a directive which uses `@Input('style')` or `@Input('class')` than\n // we need to neutralize this binding since that directive is shadowing it.\n // We turn this into a noop by setting the key to `false`\n tStylingKey = false;\n }\n tStylingKey = wrapInStaticStylingKey(tData, tNode, tStylingKey, isClassBased);\n insertTStylingBinding(tData, tNode, tStylingKey, bindingIndex, isHostBindings, isClassBased);\n }\n}\n/**\n * Adds static styling information to the binding if applicable.\n *\n * The linked list of styles not only stores the list and keys, but also stores static styling\n * information on some of the keys. This function determines if the key should contain the styling\n * information and computes it.\n *\n * See `TStylingStatic` for more details.\n *\n * @param tData `TData` where the linked list is stored.\n * @param tNode `TNode` for which the styling is being computed.\n * @param stylingKey `TStylingKeyPrimitive` which may need to be wrapped into `TStylingKey`\n * @param isClassBased `true` if `class` (`false` if `style`)\n */\nfunction wrapInStaticStylingKey(tData, tNode, stylingKey, isClassBased) {\n const hostDirectiveDef = getCurrentDirectiveDef(tData);\n let residual = isClassBased ? tNode.residualClasses : tNode.residualStyles;\n if (hostDirectiveDef === null) {\n // We are in template node.\n // If template node already had styling instruction then it has already collected the static\n // styling and there is no need to collect them again. We know that we are the first styling\n // instruction because the `TNode.*Bindings` points to 0 (nothing has been inserted yet).\n const isFirstStylingInstructionInTemplate = (isClassBased ? tNode.classBindings : tNode.styleBindings) === 0;\n if (isFirstStylingInstructionInTemplate) {\n // It would be nice to be able to get the statics from `mergeAttrs`, however, at this point\n // they are already merged and it would not be possible to figure which property belongs where\n // in the priority.\n stylingKey = collectStylingFromDirectives(null, tData, tNode, stylingKey, isClassBased);\n stylingKey = collectStylingFromTAttrs(stylingKey, tNode.attrs, isClassBased);\n // We know that if we have styling binding in template we can't have residual.\n residual = null;\n }\n }\n else {\n // We are in host binding node and there was no binding instruction in template node.\n // This means that we need to compute the residual.\n const directiveStylingLast = tNode.directiveStylingLast;\n const isFirstStylingInstructionInHostBinding = directiveStylingLast === -1 || tData[directiveStylingLast] !== hostDirectiveDef;\n if (isFirstStylingInstructionInHostBinding) {\n stylingKey =\n collectStylingFromDirectives(hostDirectiveDef, tData, tNode, stylingKey, isClassBased);\n if (residual === null) {\n // - If `null` than either:\n // - Template styling instruction already ran and it has consumed the static\n // styling into its `TStylingKey` and so there is no need to update residual. Instead\n // we need to update the `TStylingKey` associated with the first template node\n // instruction. OR\n // - Some other styling instruction ran and determined that there are no residuals\n let templateStylingKey = getTemplateHeadTStylingKey(tData, tNode, isClassBased);\n if (templateStylingKey !== undefined && Array.isArray(templateStylingKey)) {\n // Only recompute if `templateStylingKey` had static values. (If no static value found\n // then there is nothing to do since this operation can only produce less static keys, not\n // more.)\n templateStylingKey = collectStylingFromDirectives(null, tData, tNode, templateStylingKey[1] /* unwrap previous statics */, isClassBased);\n templateStylingKey =\n collectStylingFromTAttrs(templateStylingKey, tNode.attrs, isClassBased);\n setTemplateHeadTStylingKey(tData, tNode, isClassBased, templateStylingKey);\n }\n }\n else {\n // We only need to recompute residual if it is not `null`.\n // - If existing residual (implies there was no template styling). This means that some of\n // the statics may have moved from the residual to the `stylingKey` and so we have to\n // recompute.\n // - If `undefined` this is the first time we are running.\n residual = collectResidual(tData, tNode, isClassBased);\n }\n }\n }\n if (residual !== undefined) {\n isClassBased ? (tNode.residualClasses = residual) : (tNode.residualStyles = residual);\n }\n return stylingKey;\n}\n/**\n * Retrieve the `TStylingKey` for the template styling instruction.\n *\n * This is needed since `hostBinding` styling instructions are inserted after the template\n * instruction. While the template instruction needs to update the residual in `TNode` the\n * `hostBinding` instructions need to update the `TStylingKey` of the template instruction because\n * the template instruction is downstream from the `hostBindings` instructions.\n *\n * @param tData `TData` where the linked list is stored.\n * @param tNode `TNode` for which the styling is being computed.\n * @param isClassBased `true` if `class` (`false` if `style`)\n * @return `TStylingKey` if found or `undefined` if not found.\n */\nfunction getTemplateHeadTStylingKey(tData, tNode, isClassBased) {\n const bindings = isClassBased ? tNode.classBindings : tNode.styleBindings;\n if (getTStylingRangeNext(bindings) === 0) {\n // There does not seem to be a styling instruction in the `template`.\n return undefined;\n }\n return tData[getTStylingRangePrev(bindings)];\n}\n/**\n * Update the `TStylingKey` of the first template instruction in `TNode`.\n *\n * Logically `hostBindings` styling instructions are of lower priority than that of the template.\n * However, they execute after the template styling instructions. This means that they get inserted\n * in front of the template styling instructions.\n *\n * If we have a template styling instruction and a new `hostBindings` styling instruction is\n * executed it means that it may need to steal static fields from the template instruction. This\n * method allows us to update the first template instruction `TStylingKey` with a new value.\n *\n * Assume:\n * ```\n * <div my-dir style=\"color: red\" [style.color]=\"tmplExp\"></div>\n *\n * @Directive({\n * host: {\n * 'style': 'width: 100px',\n * '[style.color]': 'dirExp',\n * }\n * })\n * class MyDir {}\n * ```\n *\n * when `[style.color]=\"tmplExp\"` executes it creates this data structure.\n * ```\n * ['', 'color', 'color', 'red', 'width', '100px'],\n * ```\n *\n * The reason for this is that the template instruction does not know if there are styling\n * instructions and must assume that there are none and must collect all of the static styling.\n * (both\n * `color' and 'width`)\n *\n * When `'[style.color]': 'dirExp',` executes we need to insert a new data into the linked list.\n * ```\n * ['', 'color', 'width', '100px'], // newly inserted\n * ['', 'color', 'color', 'red', 'width', '100px'], // this is wrong\n * ```\n *\n * Notice that the template statics is now wrong as it incorrectly contains `width` so we need to\n * update it like so:\n * ```\n * ['', 'color', 'width', '100px'],\n * ['', 'color', 'color', 'red'], // UPDATE\n * ```\n *\n * @param tData `TData` where the linked list is stored.\n * @param tNode `TNode` for which the styling is being computed.\n * @param isClassBased `true` if `class` (`false` if `style`)\n * @param tStylingKey New `TStylingKey` which is replacing the old one.\n */\nfunction setTemplateHeadTStylingKey(tData, tNode, isClassBased, tStylingKey) {\n const bindings = isClassBased ? tNode.classBindings : tNode.styleBindings;\n ngDevMode &&\n assertNotEqual(getTStylingRangeNext(bindings), 0, 'Expecting to have at least one template styling binding.');\n tData[getTStylingRangePrev(bindings)] = tStylingKey;\n}\n/**\n * Collect all static values after the current `TNode.directiveStylingLast` index.\n *\n * Collect the remaining styling information which has not yet been collected by an existing\n * styling instruction.\n *\n * @param tData `TData` where the `DirectiveDefs` are stored.\n * @param tNode `TNode` which contains the directive range.\n * @param isClassBased `true` if `class` (`false` if `style`)\n */\nfunction collectResidual(tData, tNode, isClassBased) {\n let residual = undefined;\n const directiveEnd = tNode.directiveEnd;\n ngDevMode &&\n assertNotEqual(tNode.directiveStylingLast, -1, 'By the time this function gets called at least one hostBindings-node styling instruction must have executed.');\n // We add `1 + tNode.directiveStart` because we need to skip the current directive (as we are\n // collecting things after the last `hostBindings` directive which had a styling instruction.)\n for (let i = 1 + tNode.directiveStylingLast; i < directiveEnd; i++) {\n const attrs = tData[i].hostAttrs;\n residual = collectStylingFromTAttrs(residual, attrs, isClassBased);\n }\n return collectStylingFromTAttrs(residual, tNode.attrs, isClassBased);\n}\n/**\n * Collect the static styling information with lower priority than `hostDirectiveDef`.\n *\n * (This is opposite of residual styling.)\n *\n * @param hostDirectiveDef `DirectiveDef` for which we want to collect lower priority static\n * styling. (Or `null` if template styling)\n * @param tData `TData` where the linked list is stored.\n * @param tNode `TNode` for which the styling is being computed.\n * @param stylingKey Existing `TStylingKey` to update or wrap.\n * @param isClassBased `true` if `class` (`false` if `style`)\n */\nfunction collectStylingFromDirectives(hostDirectiveDef, tData, tNode, stylingKey, isClassBased) {\n // We need to loop because there can be directives which have `hostAttrs` but don't have\n // `hostBindings` so this loop catches up to the current directive..\n let currentDirective = null;\n const directiveEnd = tNode.directiveEnd;\n let directiveStylingLast = tNode.directiveStylingLast;\n if (directiveStylingLast === -1) {\n directiveStylingLast = tNode.directiveStart;\n }\n else {\n directiveStylingLast++;\n }\n while (directiveStylingLast < directiveEnd) {\n currentDirective = tData[directiveStylingLast];\n ngDevMode && assertDefined(currentDirective, 'expected to be defined');\n stylingKey = collectStylingFromTAttrs(stylingKey, currentDirective.hostAttrs, isClassBased);\n if (currentDirective === hostDirectiveDef)\n break;\n directiveStylingLast++;\n }\n if (hostDirectiveDef !== null) {\n // we only advance the styling cursor if we are collecting data from host bindings.\n // Template executes before host bindings and so if we would update the index,\n // host bindings would not get their statics.\n tNode.directiveStylingLast = directiveStylingLast;\n }\n return stylingKey;\n}\n/**\n * Convert `TAttrs` into `TStylingStatic`.\n *\n * @param stylingKey existing `TStylingKey` to update or wrap.\n * @param attrs `TAttributes` to process.\n * @param isClassBased `true` if `class` (`false` if `style`)\n */\nfunction collectStylingFromTAttrs(stylingKey, attrs, isClassBased) {\n const desiredMarker = isClassBased ? 1 /* AttributeMarker.Classes */ : 2 /* AttributeMarker.Styles */;\n let currentMarker = -1 /* AttributeMarker.ImplicitAttributes */;\n if (attrs !== null) {\n for (let i = 0; i < attrs.length; i++) {\n const item = attrs[i];\n if (typeof item === 'number') {\n currentMarker = item;\n }\n else {\n if (currentMarker === desiredMarker) {\n if (!Array.isArray(stylingKey)) {\n stylingKey = stylingKey === undefined ? [] : ['', stylingKey];\n }\n keyValueArraySet(stylingKey, item, isClassBased ? true : attrs[++i]);\n }\n }\n }\n }\n return stylingKey === undefined ? null : stylingKey;\n}\n/**\n * Convert user input to `KeyValueArray`.\n *\n * This function takes user input which could be `string`, Object literal, or iterable and converts\n * it into a consistent representation. The output of this is `KeyValueArray` (which is an array\n * where\n * even indexes contain keys and odd indexes contain values for those keys).\n *\n * The advantage of converting to `KeyValueArray` is that we can perform diff in an input\n * independent\n * way.\n * (ie we can compare `foo bar` to `['bar', 'baz'] and determine a set of changes which need to be\n * applied)\n *\n * The fact that `KeyValueArray` is sorted is very important because it allows us to compute the\n * difference in linear fashion without the need to allocate any additional data.\n *\n * For example if we kept this as a `Map` we would have to iterate over previous `Map` to determine\n * which values need to be deleted, over the new `Map` to determine additions, and we would have to\n * keep additional `Map` to keep track of duplicates or items which have not yet been visited.\n *\n * @param keyValueArraySet (See `keyValueArraySet` in \"util/array_utils\") Gets passed in as a\n * function so that `style` can be processed. This is done\n * for tree shaking purposes.\n * @param stringParser The parser is passed in so that it will be tree shakable. See\n * `styleStringParser` and `classStringParser`\n * @param value The value to parse/convert to `KeyValueArray`\n */\nfunction toStylingKeyValueArray(keyValueArraySet, stringParser, value) {\n if (value == null /*|| value === undefined */ || value === '')\n return EMPTY_ARRAY;\n const styleKeyValueArray = [];\n const unwrappedValue = unwrapSafeValue(value);\n if (Array.isArray(unwrappedValue)) {\n for (let i = 0; i < unwrappedValue.length; i++) {\n keyValueArraySet(styleKeyValueArray, unwrappedValue[i], true);\n }\n }\n else if (typeof unwrappedValue === 'object') {\n for (const key in unwrappedValue) {\n if (unwrappedValue.hasOwnProperty(key)) {\n keyValueArraySet(styleKeyValueArray, key, unwrappedValue[key]);\n }\n }\n }\n else if (typeof unwrappedValue === 'string') {\n stringParser(styleKeyValueArray, unwrappedValue);\n }\n else {\n ngDevMode &&\n throwError('Unsupported styling type ' + typeof unwrappedValue + ': ' + unwrappedValue);\n }\n return styleKeyValueArray;\n}\n/**\n * Set a `value` for a `key`.\n *\n * See: `keyValueArraySet` for details\n *\n * @param keyValueArray KeyValueArray to add to.\n * @param key Style key to add.\n * @param value The value to set.\n */\nfunction styleKeyValueArraySet(keyValueArray, key, value) {\n keyValueArraySet(keyValueArray, key, unwrapSafeValue(value));\n}\n/**\n * Class-binding-specific function for setting the `value` for a `key`.\n *\n * See: `keyValueArraySet` for details\n *\n * @param keyValueArray KeyValueArray to add to.\n * @param key Style key to add.\n * @param value The value to set.\n */\nfunction classKeyValueArraySet(keyValueArray, key, value) {\n // We use `classList.add` to eventually add the CSS classes to the DOM node. Any value passed into\n // `add` is stringified and added to the `class` attribute, e.g. even null, undefined or numbers\n // will be added. Stringify the key here so that our internal data structure matches the value in\n // the DOM. The only exceptions are empty strings and strings that contain spaces for which\n // the browser throws an error. We ignore such values, because the error is somewhat cryptic.\n const stringKey = String(key);\n if (stringKey !== '' && !stringKey.includes(' ')) {\n keyValueArraySet(keyValueArray, stringKey, value);\n }\n}\n/**\n * Update map based styling.\n *\n * Map based styling could be anything which contains more than one binding. For example `string`,\n * or object literal. Dealing with all of these types would complicate the logic so\n * instead this function expects that the complex input is first converted into normalized\n * `KeyValueArray`. The advantage of normalization is that we get the values sorted, which makes it\n * very cheap to compute deltas between the previous and current value.\n *\n * @param tView Associated `TView.data` contains the linked list of binding priorities.\n * @param tNode `TNode` where the binding is located.\n * @param lView `LView` contains the values associated with other styling binding at this `TNode`.\n * @param renderer Renderer to use if any updates.\n * @param oldKeyValueArray Previous value represented as `KeyValueArray`\n * @param newKeyValueArray Current value represented as `KeyValueArray`\n * @param isClassBased `true` if `class` (`false` if `style`)\n * @param bindingIndex Binding index of the binding.\n */\nfunction updateStylingMap(tView, tNode, lView, renderer, oldKeyValueArray, newKeyValueArray, isClassBased, bindingIndex) {\n if (oldKeyValueArray === NO_CHANGE) {\n // On first execution the oldKeyValueArray is NO_CHANGE => treat it as empty KeyValueArray.\n oldKeyValueArray = EMPTY_ARRAY;\n }\n let oldIndex = 0;\n let newIndex = 0;\n let oldKey = 0 < oldKeyValueArray.length ? oldKeyValueArray[0] : null;\n let newKey = 0 < newKeyValueArray.length ? newKeyValueArray[0] : null;\n while (oldKey !== null || newKey !== null) {\n ngDevMode && assertLessThan(oldIndex, 999, 'Are we stuck in infinite loop?');\n ngDevMode && assertLessThan(newIndex, 999, 'Are we stuck in infinite loop?');\n const oldValue = oldIndex < oldKeyValueArray.length ? oldKeyValueArray[oldIndex + 1] : undefined;\n const newValue = newIndex < newKeyValueArray.length ? newKeyValueArray[newIndex + 1] : undefined;\n let setKey = null;\n let setValue = undefined;\n if (oldKey === newKey) {\n // UPDATE: Keys are equal => new value is overwriting old value.\n oldIndex += 2;\n newIndex += 2;\n if (oldValue !== newValue) {\n setKey = newKey;\n setValue = newValue;\n }\n }\n else if (newKey === null || oldKey !== null && oldKey < newKey) {\n // DELETE: oldKey key is missing or we did not find the oldKey in the newValue\n // (because the keyValueArray is sorted and `newKey` is found later alphabetically).\n // `\"background\" < \"color\"` so we need to delete `\"background\"` because it is not found in the\n // new array.\n oldIndex += 2;\n setKey = oldKey;\n }\n else {\n // CREATE: newKey's is earlier alphabetically than oldKey's (or no oldKey) => we have new key.\n // `\"color\" > \"background\"` so we need to add `color` because it is in new array but not in\n // old array.\n ngDevMode && assertDefined(newKey, 'Expecting to have a valid key');\n newIndex += 2;\n setKey = newKey;\n setValue = newValue;\n }\n if (setKey !== null) {\n updateStyling(tView, tNode, lView, renderer, setKey, setValue, isClassBased, bindingIndex);\n }\n oldKey = oldIndex < oldKeyValueArray.length ? oldKeyValueArray[oldIndex] : null;\n newKey = newIndex < newKeyValueArray.length ? newKeyValueArray[newIndex] : null;\n }\n}\n/**\n * Update a simple (property name) styling.\n *\n * This function takes `prop` and updates the DOM to that value. The function takes the binding\n * value as well as binding priority into consideration to determine which value should be written\n * to DOM. (For example it may be determined that there is a higher priority overwrite which blocks\n * the DOM write, or if the value goes to `undefined` a lower priority overwrite may be consulted.)\n *\n * @param tView Associated `TView.data` contains the linked list of binding priorities.\n * @param tNode `TNode` where the binding is located.\n * @param lView `LView` contains the values associated with other styling binding at this `TNode`.\n * @param renderer Renderer to use if any updates.\n * @param prop Either style property name or a class name.\n * @param value Either style value for `prop` or `true`/`false` if `prop` is class.\n * @param isClassBased `true` if `class` (`false` if `style`)\n * @param bindingIndex Binding index of the binding.\n */\nfunction updateStyling(tView, tNode, lView, renderer, prop, value, isClassBased, bindingIndex) {\n if (!(tNode.type & 3 /* TNodeType.AnyRNode */)) {\n // It is possible to have styling on non-elements (such as ng-container).\n // This is rare, but it does happen. In such a case, just ignore the binding.\n return;\n }\n const tData = tView.data;\n const tRange = tData[bindingIndex + 1];\n const higherPriorityValue = getTStylingRangeNextDuplicate(tRange) ?\n findStylingValue(tData, tNode, lView, prop, getTStylingRangeNext(tRange), isClassBased) :\n undefined;\n if (!isStylingValuePresent(higherPriorityValue)) {\n // We don't have a next duplicate, or we did not find a duplicate value.\n if (!isStylingValuePresent(value)) {\n // We should delete current value or restore to lower priority value.\n if (getTStylingRangePrevDuplicate(tRange)) {\n // We have a possible prev duplicate, let's retrieve it.\n value = findStylingValue(tData, null, lView, prop, bindingIndex, isClassBased);\n }\n }\n const rNode = getNativeByIndex(getSelectedIndex(), lView);\n applyStyling(renderer, isClassBased, rNode, prop, value);\n }\n}\n/**\n * Search for styling value with higher priority which is overwriting current value, or a\n * value of lower priority to which we should fall back if the value is `undefined`.\n *\n * When value is being applied at a location, related values need to be consulted.\n * - If there is a higher priority binding, we should be using that one instead.\n * For example `<div [style]=\"{color:exp1}\" [style.color]=\"exp2\">` change to `exp1`\n * requires that we check `exp2` to see if it is set to value other than `undefined`.\n * - If there is a lower priority binding and we are changing to `undefined`\n * For example `<div [style]=\"{color:exp1}\" [style.color]=\"exp2\">` change to `exp2` to\n * `undefined` requires that we check `exp1` (and static values) and use that as new value.\n *\n * NOTE: The styling stores two values.\n * 1. The raw value which came from the application is stored at `index + 0` location. (This value\n * is used for dirty checking).\n * 2. The normalized value is stored at `index + 1`.\n *\n * @param tData `TData` used for traversing the priority.\n * @param tNode `TNode` to use for resolving static styling. Also controls search direction.\n * - `TNode` search next and quit as soon as `isStylingValuePresent(value)` is true.\n * If no value found consult `tNode.residualStyle`/`tNode.residualClass` for default value.\n * - `null` search prev and go all the way to end. Return last value where\n * `isStylingValuePresent(value)` is true.\n * @param lView `LView` used for retrieving the actual values.\n * @param prop Property which we are interested in.\n * @param index Starting index in the linked list of styling bindings where the search should start.\n * @param isClassBased `true` if `class` (`false` if `style`)\n */\nfunction findStylingValue(tData, tNode, lView, prop, index, isClassBased) {\n // `TNode` to use for resolving static styling. Also controls search direction.\n // - `TNode` search next and quit as soon as `isStylingValuePresent(value)` is true.\n // If no value found consult `tNode.residualStyle`/`tNode.residualClass` for default value.\n // - `null` search prev and go all the way to end. Return last value where\n // `isStylingValuePresent(value)` is true.\n const isPrevDirection = tNode === null;\n let value = undefined;\n while (index > 0) {\n const rawKey = tData[index];\n const containsStatics = Array.isArray(rawKey);\n // Unwrap the key if we contain static values.\n const key = containsStatics ? rawKey[1] : rawKey;\n const isStylingMap = key === null;\n let valueAtLViewIndex = lView[index + 1];\n if (valueAtLViewIndex === NO_CHANGE) {\n // In firstUpdatePass the styling instructions create a linked list of styling.\n // On subsequent passes it is possible for a styling instruction to try to read a binding\n // which\n // has not yet executed. In that case we will find `NO_CHANGE` and we should assume that\n // we have `undefined` (or empty array in case of styling-map instruction) instead. This\n // allows the resolution to apply the value (which may later be overwritten when the\n // binding actually executes.)\n valueAtLViewIndex = isStylingMap ? EMPTY_ARRAY : undefined;\n }\n let currentValue = isStylingMap ? keyValueArrayGet(valueAtLViewIndex, prop) :\n (key === prop ? valueAtLViewIndex : undefined);\n if (containsStatics && !isStylingValuePresent(currentValue)) {\n currentValue = keyValueArrayGet(rawKey, prop);\n }\n if (isStylingValuePresent(currentValue)) {\n value = currentValue;\n if (isPrevDirection) {\n return value;\n }\n }\n const tRange = tData[index + 1];\n index = isPrevDirection ? getTStylingRangePrev(tRange) : getTStylingRangeNext(tRange);\n }\n if (tNode !== null) {\n // in case where we are going in next direction AND we did not find anything, we need to\n // consult residual styling\n let residual = isClassBased ? tNode.residualClasses : tNode.residualStyles;\n if (residual != null /** OR residual !=== undefined */) {\n value = keyValueArrayGet(residual, prop);\n }\n }\n return value;\n}\n/**\n * Determines if the binding value should be used (or if the value is 'undefined' and hence priority\n * resolution should be used.)\n *\n * @param value Binding style value.\n */\nfunction isStylingValuePresent(value) {\n // Currently only `undefined` value is considered non-binding. That is `undefined` says I don't\n // have an opinion as to what this binding should be and you should consult other bindings by\n // priority to determine the valid value.\n // This is extracted into a single function so that we have a single place to control this.\n return value !== undefined;\n}\n/**\n * Normalizes and/or adds a suffix to the value.\n *\n * If value is `null`/`undefined` no suffix is added\n * @param value\n * @param suffix\n */\nfunction normalizeSuffix(value, suffix) {\n if (value == null || value === '') {\n // do nothing\n // Do not add the suffix if the value is going to be empty.\n // As it produce invalid CSS, which the browsers will automatically omit but Domino will not.\n // Example: `\"left\": \"px;\"` instead of `\"left\": \"\"`.\n }\n else if (typeof suffix === 'string') {\n value = value + suffix;\n }\n else if (typeof value === 'object') {\n value = stringify(unwrapSafeValue(value));\n }\n return value;\n}\n/**\n * Tests if the `TNode` has input shadow.\n *\n * An input shadow is when a directive steals (shadows) the input by using `@Input('style')` or\n * `@Input('class')` as input.\n *\n * @param tNode `TNode` which we would like to see if it has shadow.\n * @param isClassBased `true` if `class` (`false` if `style`)\n */\nfunction hasStylingInputShadow(tNode, isClassBased) {\n return (tNode.flags & (isClassBased ? 8 /* TNodeFlags.hasClassInput */ : 16 /* TNodeFlags.hasStyleInput */)) !== 0;\n}\n\n/**\n * Create static text node\n *\n * @param index Index of the node in the data array\n * @param value Static string value to write.\n *\n * @codeGenApi\n */\nfunction ɵɵtext(index, value = '') {\n const lView = getLView();\n const tView = getTView();\n const adjustedIndex = index + HEADER_OFFSET;\n ngDevMode &&\n assertEqual(getBindingIndex(), tView.bindingStartIndex, 'text nodes should be created before any bindings');\n ngDevMode && assertIndexInRange(lView, adjustedIndex);\n const tNode = tView.firstCreatePass ?\n getOrCreateTNode(tView, adjustedIndex, 1 /* TNodeType.Text */, value, null) :\n tView.data[adjustedIndex];\n const textNative = _locateOrCreateTextNode(tView, lView, tNode, value, index);\n lView[adjustedIndex] = textNative;\n if (wasLastNodeCreated()) {\n appendChild(tView, lView, textNative, tNode);\n }\n // Text nodes are self closing.\n setCurrentTNode(tNode, false);\n}\nlet _locateOrCreateTextNode = (tView, lView, tNode, value, index) => {\n lastNodeWasCreated(true);\n return createTextNode(lView[RENDERER], value);\n};\n/**\n * Enables hydration code path (to lookup existing elements in DOM)\n * in addition to the regular creation mode of text nodes.\n */\nfunction locateOrCreateTextNodeImpl(tView, lView, tNode, value, index) {\n const hydrationInfo = lView[HYDRATION];\n const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock$1() || isDisconnectedNode$1(hydrationInfo, index);\n lastNodeWasCreated(isNodeCreationMode);\n // Regular creation mode.\n if (isNodeCreationMode) {\n return createTextNode(lView[RENDERER], value);\n }\n // Hydration mode, looking up an existing element in DOM.\n const textNative = locateNextRNode(hydrationInfo, tView, lView, tNode);\n ngDevMode && validateMatchingNode(textNative, Node.TEXT_NODE, null, lView, tNode);\n ngDevMode && markRNodeAsClaimedByHydration(textNative);\n return textNative;\n}\nfunction enableLocateOrCreateTextNodeImpl() {\n _locateOrCreateTextNode = locateOrCreateTextNodeImpl;\n}\n\n/**\n *\n * Update text content with a lone bound value\n *\n * Used when a text node has 1 interpolated value in it, an no additional text\n * surrounds that interpolated value:\n *\n * ```html\n * <div>{{v0}}</div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵtextInterpolate(v0);\n * ```\n * @returns itself, so that it may be chained.\n * @see textInterpolateV\n * @codeGenApi\n */\nfunction ɵɵtextInterpolate(v0) {\n ɵɵtextInterpolate1('', v0, '');\n return ɵɵtextInterpolate;\n}\n/**\n *\n * Update text content with single bound value surrounded by other text.\n *\n * Used when a text node has 1 interpolated value in it:\n *\n * ```html\n * <div>prefix{{v0}}suffix</div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵtextInterpolate1('prefix', v0, 'suffix');\n * ```\n * @returns itself, so that it may be chained.\n * @see textInterpolateV\n * @codeGenApi\n */\nfunction ɵɵtextInterpolate1(prefix, v0, suffix) {\n const lView = getLView();\n const interpolated = interpolation1(lView, prefix, v0, suffix);\n if (interpolated !== NO_CHANGE) {\n textBindingInternal(lView, getSelectedIndex(), interpolated);\n }\n return ɵɵtextInterpolate1;\n}\n/**\n *\n * Update text content with 2 bound values surrounded by other text.\n *\n * Used when a text node has 2 interpolated values in it:\n *\n * ```html\n * <div>prefix{{v0}}-{{v1}}suffix</div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵtextInterpolate2('prefix', v0, '-', v1, 'suffix');\n * ```\n * @returns itself, so that it may be chained.\n * @see textInterpolateV\n * @codeGenApi\n */\nfunction ɵɵtextInterpolate2(prefix, v0, i0, v1, suffix) {\n const lView = getLView();\n const interpolated = interpolation2(lView, prefix, v0, i0, v1, suffix);\n if (interpolated !== NO_CHANGE) {\n textBindingInternal(lView, getSelectedIndex(), interpolated);\n }\n return ɵɵtextInterpolate2;\n}\n/**\n *\n * Update text content with 3 bound values surrounded by other text.\n *\n * Used when a text node has 3 interpolated values in it:\n *\n * ```html\n * <div>prefix{{v0}}-{{v1}}-{{v2}}suffix</div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵtextInterpolate3(\n * 'prefix', v0, '-', v1, '-', v2, 'suffix');\n * ```\n * @returns itself, so that it may be chained.\n * @see textInterpolateV\n * @codeGenApi\n */\nfunction ɵɵtextInterpolate3(prefix, v0, i0, v1, i1, v2, suffix) {\n const lView = getLView();\n const interpolated = interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix);\n if (interpolated !== NO_CHANGE) {\n textBindingInternal(lView, getSelectedIndex(), interpolated);\n }\n return ɵɵtextInterpolate3;\n}\n/**\n *\n * Update text content with 4 bound values surrounded by other text.\n *\n * Used when a text node has 4 interpolated values in it:\n *\n * ```html\n * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix</div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵtextInterpolate4(\n * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');\n * ```\n * @returns itself, so that it may be chained.\n * @see ɵɵtextInterpolateV\n * @codeGenApi\n */\nfunction ɵɵtextInterpolate4(prefix, v0, i0, v1, i1, v2, i2, v3, suffix) {\n const lView = getLView();\n const interpolated = interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix);\n if (interpolated !== NO_CHANGE) {\n textBindingInternal(lView, getSelectedIndex(), interpolated);\n }\n return ɵɵtextInterpolate4;\n}\n/**\n *\n * Update text content with 5 bound values surrounded by other text.\n *\n * Used when a text node has 5 interpolated values in it:\n *\n * ```html\n * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix</div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵtextInterpolate5(\n * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');\n * ```\n * @returns itself, so that it may be chained.\n * @see textInterpolateV\n * @codeGenApi\n */\nfunction ɵɵtextInterpolate5(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix) {\n const lView = getLView();\n const interpolated = interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix);\n if (interpolated !== NO_CHANGE) {\n textBindingInternal(lView, getSelectedIndex(), interpolated);\n }\n return ɵɵtextInterpolate5;\n}\n/**\n *\n * Update text content with 6 bound values surrounded by other text.\n *\n * Used when a text node has 6 interpolated values in it:\n *\n * ```html\n * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix</div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵtextInterpolate6(\n * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');\n * ```\n *\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change. @returns itself, so that it may be chained.\n * @see textInterpolateV\n * @codeGenApi\n */\nfunction ɵɵtextInterpolate6(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix) {\n const lView = getLView();\n const interpolated = interpolation6(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix);\n if (interpolated !== NO_CHANGE) {\n textBindingInternal(lView, getSelectedIndex(), interpolated);\n }\n return ɵɵtextInterpolate6;\n}\n/**\n *\n * Update text content with 7 bound values surrounded by other text.\n *\n * Used when a text node has 7 interpolated values in it:\n *\n * ```html\n * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix</div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵtextInterpolate7(\n * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');\n * ```\n * @returns itself, so that it may be chained.\n * @see textInterpolateV\n * @codeGenApi\n */\nfunction ɵɵtextInterpolate7(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix) {\n const lView = getLView();\n const interpolated = interpolation7(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix);\n if (interpolated !== NO_CHANGE) {\n textBindingInternal(lView, getSelectedIndex(), interpolated);\n }\n return ɵɵtextInterpolate7;\n}\n/**\n *\n * Update text content with 8 bound values surrounded by other text.\n *\n * Used when a text node has 8 interpolated values in it:\n *\n * ```html\n * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix</div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵtextInterpolate8(\n * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');\n * ```\n * @returns itself, so that it may be chained.\n * @see textInterpolateV\n * @codeGenApi\n */\nfunction ɵɵtextInterpolate8(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix) {\n const lView = getLView();\n const interpolated = interpolation8(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix);\n if (interpolated !== NO_CHANGE) {\n textBindingInternal(lView, getSelectedIndex(), interpolated);\n }\n return ɵɵtextInterpolate8;\n}\n/**\n * Update text content with 9 or more bound values other surrounded by text.\n *\n * Used when the number of interpolated values exceeds 8.\n *\n * ```html\n * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix</div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵtextInterpolateV(\n * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,\n * 'suffix']);\n * ```\n *.\n * @param values The collection of values and the strings in between those values, beginning with\n * a string prefix and ending with a string suffix.\n * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)\n *\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵtextInterpolateV(values) {\n const lView = getLView();\n const interpolated = interpolationV(lView, values);\n if (interpolated !== NO_CHANGE) {\n textBindingInternal(lView, getSelectedIndex(), interpolated);\n }\n return ɵɵtextInterpolateV;\n}\n\n/**\n *\n * Update an interpolated class on an element with single bound value surrounded by text.\n *\n * Used when the value passed to a property has 1 interpolated value in it:\n *\n * ```html\n * <div class=\"prefix{{v0}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵclassMapInterpolate1('prefix', v0, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵclassMapInterpolate1(prefix, v0, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation1(lView, prefix, v0, suffix);\n checkStylingMap(keyValueArraySet, classStringParser, interpolatedValue, true);\n}\n/**\n *\n * Update an interpolated class on an element with 2 bound values surrounded by text.\n *\n * Used when the value passed to a property has 2 interpolated values in it:\n *\n * ```html\n * <div class=\"prefix{{v0}}-{{v1}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵclassMapInterpolate2('prefix', v0, '-', v1, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵclassMapInterpolate2(prefix, v0, i0, v1, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation2(lView, prefix, v0, i0, v1, suffix);\n checkStylingMap(keyValueArraySet, classStringParser, interpolatedValue, true);\n}\n/**\n *\n * Update an interpolated class on an element with 3 bound values surrounded by text.\n *\n * Used when the value passed to a property has 3 interpolated values in it:\n *\n * ```html\n * <div class=\"prefix{{v0}}-{{v1}}-{{v2}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵclassMapInterpolate3(\n * 'prefix', v0, '-', v1, '-', v2, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵclassMapInterpolate3(prefix, v0, i0, v1, i1, v2, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix);\n checkStylingMap(keyValueArraySet, classStringParser, interpolatedValue, true);\n}\n/**\n *\n * Update an interpolated class on an element with 4 bound values surrounded by text.\n *\n * Used when the value passed to a property has 4 interpolated values in it:\n *\n * ```html\n * <div class=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵclassMapInterpolate4(\n * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵclassMapInterpolate4(prefix, v0, i0, v1, i1, v2, i2, v3, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix);\n checkStylingMap(keyValueArraySet, classStringParser, interpolatedValue, true);\n}\n/**\n *\n * Update an interpolated class on an element with 5 bound values surrounded by text.\n *\n * Used when the value passed to a property has 5 interpolated values in it:\n *\n * ```html\n * <div class=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵclassMapInterpolate5(\n * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵclassMapInterpolate5(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix);\n checkStylingMap(keyValueArraySet, classStringParser, interpolatedValue, true);\n}\n/**\n *\n * Update an interpolated class on an element with 6 bound values surrounded by text.\n *\n * Used when the value passed to a property has 6 interpolated values in it:\n *\n * ```html\n * <div class=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵclassMapInterpolate6(\n * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵclassMapInterpolate6(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation6(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix);\n checkStylingMap(keyValueArraySet, classStringParser, interpolatedValue, true);\n}\n/**\n *\n * Update an interpolated class on an element with 7 bound values surrounded by text.\n *\n * Used when the value passed to a property has 7 interpolated values in it:\n *\n * ```html\n * <div class=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵclassMapInterpolate7(\n * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param i5 Static value used for concatenation only.\n * @param v6 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵclassMapInterpolate7(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation7(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix);\n checkStylingMap(keyValueArraySet, classStringParser, interpolatedValue, true);\n}\n/**\n *\n * Update an interpolated class on an element with 8 bound values surrounded by text.\n *\n * Used when the value passed to a property has 8 interpolated values in it:\n *\n * ```html\n * <div class=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵclassMapInterpolate8(\n * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param i5 Static value used for concatenation only.\n * @param v6 Value checked for change.\n * @param i6 Static value used for concatenation only.\n * @param v7 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵclassMapInterpolate8(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation8(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix);\n checkStylingMap(keyValueArraySet, classStringParser, interpolatedValue, true);\n}\n/**\n * Update an interpolated class on an element with 9 or more bound values surrounded by text.\n *\n * Used when the number of interpolated values exceeds 8.\n *\n * ```html\n * <div\n * class=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵclassMapInterpolateV(\n * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,\n * 'suffix']);\n * ```\n *.\n * @param values The collection of values and the strings in-between those values, beginning with\n * a string prefix and ending with a string suffix.\n * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)\n * @codeGenApi\n */\nfunction ɵɵclassMapInterpolateV(values) {\n const lView = getLView();\n const interpolatedValue = interpolationV(lView, values);\n checkStylingMap(keyValueArraySet, classStringParser, interpolatedValue, true);\n}\n\n/**\n *\n * Update an interpolated style on an element with single bound value surrounded by text.\n *\n * Used when the value passed to a property has 1 interpolated value in it:\n *\n * ```html\n * <div style=\"key: {{v0}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstyleMapInterpolate1('key: ', v0, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵstyleMapInterpolate1(prefix, v0, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation1(lView, prefix, v0, suffix);\n ɵɵstyleMap(interpolatedValue);\n}\n/**\n *\n * Update an interpolated style on an element with 2 bound values surrounded by text.\n *\n * Used when the value passed to a property has 2 interpolated values in it:\n *\n * ```html\n * <div style=\"key: {{v0}}; key1: {{v1}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstyleMapInterpolate2('key: ', v0, '; key1: ', v1, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵstyleMapInterpolate2(prefix, v0, i0, v1, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation2(lView, prefix, v0, i0, v1, suffix);\n ɵɵstyleMap(interpolatedValue);\n}\n/**\n *\n * Update an interpolated style on an element with 3 bound values surrounded by text.\n *\n * Used when the value passed to a property has 3 interpolated values in it:\n *\n * ```html\n * <div style=\"key: {{v0}}; key2: {{v1}}; key2: {{v2}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstyleMapInterpolate3(\n * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵstyleMapInterpolate3(prefix, v0, i0, v1, i1, v2, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix);\n ɵɵstyleMap(interpolatedValue);\n}\n/**\n *\n * Update an interpolated style on an element with 4 bound values surrounded by text.\n *\n * Used when the value passed to a property has 4 interpolated values in it:\n *\n * ```html\n * <div style=\"key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstyleMapInterpolate4(\n * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵstyleMapInterpolate4(prefix, v0, i0, v1, i1, v2, i2, v3, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix);\n ɵɵstyleMap(interpolatedValue);\n}\n/**\n *\n * Update an interpolated style on an element with 5 bound values surrounded by text.\n *\n * Used when the value passed to a property has 5 interpolated values in it:\n *\n * ```html\n * <div style=\"key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstyleMapInterpolate5(\n * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵstyleMapInterpolate5(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix);\n ɵɵstyleMap(interpolatedValue);\n}\n/**\n *\n * Update an interpolated style on an element with 6 bound values surrounded by text.\n *\n * Used when the value passed to a property has 6 interpolated values in it:\n *\n * ```html\n * <div style=\"key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}};\n * key5: {{v5}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstyleMapInterpolate6(\n * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,\n * 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵstyleMapInterpolate6(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation6(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix);\n ɵɵstyleMap(interpolatedValue);\n}\n/**\n *\n * Update an interpolated style on an element with 7 bound values surrounded by text.\n *\n * Used when the value passed to a property has 7 interpolated values in it:\n *\n * ```html\n * <div style=\"key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};\n * key6: {{v6}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstyleMapInterpolate7(\n * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,\n * '; key6: ', v6, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param i5 Static value used for concatenation only.\n * @param v6 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵstyleMapInterpolate7(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation7(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix);\n ɵɵstyleMap(interpolatedValue);\n}\n/**\n *\n * Update an interpolated style on an element with 8 bound values surrounded by text.\n *\n * Used when the value passed to a property has 8 interpolated values in it:\n *\n * ```html\n * <div style=\"key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};\n * key6: {{v6}}; key7: {{v7}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstyleMapInterpolate8(\n * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,\n * '; key6: ', v6, '; key7: ', v7, 'suffix');\n * ```\n *\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param i5 Static value used for concatenation only.\n * @param v6 Value checked for change.\n * @param i6 Static value used for concatenation only.\n * @param v7 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @codeGenApi\n */\nfunction ɵɵstyleMapInterpolate8(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix) {\n const lView = getLView();\n const interpolatedValue = interpolation8(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix);\n ɵɵstyleMap(interpolatedValue);\n}\n/**\n * Update an interpolated style on an element with 9 or more bound values surrounded by text.\n *\n * Used when the number of interpolated values exceeds 8.\n *\n * ```html\n * <div\n * class=\"key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};\n * key6: {{v6}}; key7: {{v7}}; key8: {{v8}}; key9: {{v9}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstyleMapInterpolateV(\n * ['key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,\n * '; key6: ', v6, '; key7: ', v7, '; key8: ', v8, '; key9: ', v9, 'suffix']);\n * ```\n *.\n * @param values The collection of values and the strings in-between those values, beginning with\n * a string prefix and ending with a string suffix.\n * (e.g. `['prefix', value0, '; key2: ', value1, '; key2: ', value2, ..., value99, 'suffix']`)\n * @codeGenApi\n */\nfunction ɵɵstyleMapInterpolateV(values) {\n const lView = getLView();\n const interpolatedValue = interpolationV(lView, values);\n ɵɵstyleMap(interpolatedValue);\n}\n\n/**\n *\n * Update an interpolated style property on an element with single bound value surrounded by text.\n *\n * Used when the value passed to a property has 1 interpolated value in it:\n *\n * ```html\n * <div style.color=\"prefix{{v0}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstylePropInterpolate1(0, 'prefix', v0, 'suffix');\n * ```\n *\n * @param styleIndex Index of style to update. This index value refers to the\n * index of the style in the style bindings array that was passed into\n * `styling`.\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵstylePropInterpolate1(prop, prefix, v0, suffix, valueSuffix) {\n const lView = getLView();\n const interpolatedValue = interpolation1(lView, prefix, v0, suffix);\n checkStylingProperty(prop, interpolatedValue, valueSuffix, false);\n return ɵɵstylePropInterpolate1;\n}\n/**\n *\n * Update an interpolated style property on an element with 2 bound values surrounded by text.\n *\n * Used when the value passed to a property has 2 interpolated values in it:\n *\n * ```html\n * <div style.color=\"prefix{{v0}}-{{v1}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstylePropInterpolate2(0, 'prefix', v0, '-', v1, 'suffix');\n * ```\n *\n * @param styleIndex Index of style to update. This index value refers to the\n * index of the style in the style bindings array that was passed into\n * `styling`.\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵstylePropInterpolate2(prop, prefix, v0, i0, v1, suffix, valueSuffix) {\n const lView = getLView();\n const interpolatedValue = interpolation2(lView, prefix, v0, i0, v1, suffix);\n checkStylingProperty(prop, interpolatedValue, valueSuffix, false);\n return ɵɵstylePropInterpolate2;\n}\n/**\n *\n * Update an interpolated style property on an element with 3 bound values surrounded by text.\n *\n * Used when the value passed to a property has 3 interpolated values in it:\n *\n * ```html\n * <div style.color=\"prefix{{v0}}-{{v1}}-{{v2}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstylePropInterpolate3(0, 'prefix', v0, '-', v1, '-', v2, 'suffix');\n * ```\n *\n * @param styleIndex Index of style to update. This index value refers to the\n * index of the style in the style bindings array that was passed into\n * `styling`.\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵstylePropInterpolate3(prop, prefix, v0, i0, v1, i1, v2, suffix, valueSuffix) {\n const lView = getLView();\n const interpolatedValue = interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix);\n checkStylingProperty(prop, interpolatedValue, valueSuffix, false);\n return ɵɵstylePropInterpolate3;\n}\n/**\n *\n * Update an interpolated style property on an element with 4 bound values surrounded by text.\n *\n * Used when the value passed to a property has 4 interpolated values in it:\n *\n * ```html\n * <div style.color=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstylePropInterpolate4(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');\n * ```\n *\n * @param styleIndex Index of style to update. This index value refers to the\n * index of the style in the style bindings array that was passed into\n * `styling`.\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵstylePropInterpolate4(prop, prefix, v0, i0, v1, i1, v2, i2, v3, suffix, valueSuffix) {\n const lView = getLView();\n const interpolatedValue = interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix);\n checkStylingProperty(prop, interpolatedValue, valueSuffix, false);\n return ɵɵstylePropInterpolate4;\n}\n/**\n *\n * Update an interpolated style property on an element with 5 bound values surrounded by text.\n *\n * Used when the value passed to a property has 5 interpolated values in it:\n *\n * ```html\n * <div style.color=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstylePropInterpolate5(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');\n * ```\n *\n * @param styleIndex Index of style to update. This index value refers to the\n * index of the style in the style bindings array that was passed into\n * `styling`.\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵstylePropInterpolate5(prop, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix, valueSuffix) {\n const lView = getLView();\n const interpolatedValue = interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix);\n checkStylingProperty(prop, interpolatedValue, valueSuffix, false);\n return ɵɵstylePropInterpolate5;\n}\n/**\n *\n * Update an interpolated style property on an element with 6 bound values surrounded by text.\n *\n * Used when the value passed to a property has 6 interpolated values in it:\n *\n * ```html\n * <div style.color=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstylePropInterpolate6(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');\n * ```\n *\n * @param styleIndex Index of style to update. This index value refers to the\n * index of the style in the style bindings array that was passed into\n * `styling`.\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵstylePropInterpolate6(prop, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix, valueSuffix) {\n const lView = getLView();\n const interpolatedValue = interpolation6(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix);\n checkStylingProperty(prop, interpolatedValue, valueSuffix, false);\n return ɵɵstylePropInterpolate6;\n}\n/**\n *\n * Update an interpolated style property on an element with 7 bound values surrounded by text.\n *\n * Used when the value passed to a property has 7 interpolated values in it:\n *\n * ```html\n * <div style.color=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstylePropInterpolate7(\n * 0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');\n * ```\n *\n * @param styleIndex Index of style to update. This index value refers to the\n * index of the style in the style bindings array that was passed into\n * `styling`.\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param i5 Static value used for concatenation only.\n * @param v6 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵstylePropInterpolate7(prop, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix, valueSuffix) {\n const lView = getLView();\n const interpolatedValue = interpolation7(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix);\n checkStylingProperty(prop, interpolatedValue, valueSuffix, false);\n return ɵɵstylePropInterpolate7;\n}\n/**\n *\n * Update an interpolated style property on an element with 8 bound values surrounded by text.\n *\n * Used when the value passed to a property has 8 interpolated values in it:\n *\n * ```html\n * <div style.color=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix\"></div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstylePropInterpolate8(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6,\n * '-', v7, 'suffix');\n * ```\n *\n * @param styleIndex Index of style to update. This index value refers to the\n * index of the style in the style bindings array that was passed into\n * `styling`.\n * @param prefix Static value used for concatenation only.\n * @param v0 Value checked for change.\n * @param i0 Static value used for concatenation only.\n * @param v1 Value checked for change.\n * @param i1 Static value used for concatenation only.\n * @param v2 Value checked for change.\n * @param i2 Static value used for concatenation only.\n * @param v3 Value checked for change.\n * @param i3 Static value used for concatenation only.\n * @param v4 Value checked for change.\n * @param i4 Static value used for concatenation only.\n * @param v5 Value checked for change.\n * @param i5 Static value used for concatenation only.\n * @param v6 Value checked for change.\n * @param i6 Static value used for concatenation only.\n * @param v7 Value checked for change.\n * @param suffix Static value used for concatenation only.\n * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵstylePropInterpolate8(prop, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix, valueSuffix) {\n const lView = getLView();\n const interpolatedValue = interpolation8(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix);\n checkStylingProperty(prop, interpolatedValue, valueSuffix, false);\n return ɵɵstylePropInterpolate8;\n}\n/**\n * Update an interpolated style property on an element with 9 or more bound values surrounded by\n * text.\n *\n * Used when the number of interpolated values exceeds 8.\n *\n * ```html\n * <div\n * style.color=\"prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix\">\n * </div>\n * ```\n *\n * Its compiled representation is:\n *\n * ```ts\n * ɵɵstylePropInterpolateV(\n * 0, ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,\n * 'suffix']);\n * ```\n *\n * @param styleIndex Index of style to update. This index value refers to the\n * index of the style in the style bindings array that was passed into\n * `styling`..\n * @param values The collection of values and the strings in-between those values, beginning with\n * a string prefix and ending with a string suffix.\n * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)\n * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.\n * @returns itself, so that it may be chained.\n * @codeGenApi\n */\nfunction ɵɵstylePropInterpolateV(prop, values, valueSuffix) {\n const lView = getLView();\n const interpolatedValue = interpolationV(lView, values);\n checkStylingProperty(prop, interpolatedValue, valueSuffix, false);\n return ɵɵstylePropInterpolateV;\n}\n\n/**\n * Update a property on a host element. Only applies to native node properties, not inputs.\n *\n * Operates on the element selected by index via the {@link select} instruction.\n *\n * @param propName Name of property. Because it is going to DOM, this is not subject to\n * renaming as part of minification.\n * @param value New value to write.\n * @param sanitizer An optional function used to sanitize the value.\n * @returns This function returns itself so that it may be chained\n * (e.g. `property('name', ctx.name)('title', ctx.title)`)\n *\n * @codeGenApi\n */\nfunction ɵɵhostProperty(propName, value, sanitizer) {\n const lView = getLView();\n const bindingIndex = nextBindingIndex();\n if (bindingUpdated(lView, bindingIndex, value)) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n elementPropertyInternal(tView, tNode, lView, propName, value, lView[RENDERER], sanitizer, true);\n ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, bindingIndex);\n }\n return ɵɵhostProperty;\n}\n/**\n * Updates a synthetic host binding (e.g. `[@foo]`) on a component or directive.\n *\n * This instruction is for compatibility purposes and is designed to ensure that a\n * synthetic host binding (e.g. `@HostBinding('@foo')`) properly gets rendered in\n * the component's renderer. Normally all host bindings are evaluated with the parent\n * component's renderer, but, in the case of animation @triggers, they need to be\n * evaluated with the sub component's renderer (because that's where the animation\n * triggers are defined).\n *\n * Do not use this instruction as a replacement for `elementProperty`. This instruction\n * only exists to ensure compatibility with the ViewEngine's host binding behavior.\n *\n * @param index The index of the element to update in the data array\n * @param propName Name of property. Because it is going to DOM, this is not subject to\n * renaming as part of minification.\n * @param value New value to write.\n * @param sanitizer An optional function used to sanitize the value.\n *\n * @codeGenApi\n */\nfunction ɵɵsyntheticHostProperty(propName, value, sanitizer) {\n const lView = getLView();\n const bindingIndex = nextBindingIndex();\n if (bindingUpdated(lView, bindingIndex, value)) {\n const tView = getTView();\n const tNode = getSelectedTNode();\n const currentDef = getCurrentDirectiveDef(tView.data);\n const renderer = loadComponentRenderer(currentDef, tNode, lView);\n elementPropertyInternal(tView, tNode, lView, propName, value, renderer, sanitizer, true);\n ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, bindingIndex);\n }\n return ɵɵsyntheticHostProperty;\n}\n\n/**\n * NOTE: changes to the `ngI18nClosureMode` name must be synced with `compiler-cli/src/tooling.ts`.\n */\nif (typeof ngI18nClosureMode === 'undefined') {\n // These property accesses can be ignored because ngI18nClosureMode will be set to false\n // when optimizing code and the whole if statement will be dropped.\n // Make sure to refer to ngI18nClosureMode as ['ngI18nClosureMode'] for closure.\n // NOTE: we need to have it in IIFE so that the tree-shaker is happy.\n (function () {\n // tslint:disable-next-line:no-toplevel-property-access\n _global['ngI18nClosureMode'] =\n // TODO(FW-1250): validate that this actually, you know, works.\n // tslint:disable-next-line:no-toplevel-property-access\n typeof goog !== 'undefined' && typeof goog.getMsg === 'function';\n })();\n}\n\n// THIS CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val, i = Math.floor(Math.abs(val)), v = val.toString().replace(/^[^.]*\\.?/, '').length;\n if (i === 1 && v === 0)\n return 1;\n return 5;\n}\nvar localeEn = [\"en\", [[\"a\", \"p\"], [\"AM\", \"PM\"], u], [[\"AM\", \"PM\"], u, u], [[\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"], [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"], [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"], [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"]], u, [[\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"], [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]], u, [[\"B\", \"A\"], [\"BC\", \"AD\"], [\"Before Christ\", \"Anno Domini\"]], 0, [6, 0], [\"M/d/yy\", \"MMM d, y\", \"MMMM d, y\", \"EEEE, MMMM d, y\"], [\"h:mm a\", \"h:mm:ss a\", \"h:mm:ss a z\", \"h:mm:ss a zzzz\"], [\"{1}, {0}\", u, \"{1} 'at' {0}\", u], [\".\", \",\", \";\", \"%\", \"+\", \"-\", \"E\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0%\", \"¤#,##0.00\", \"#E0\"], \"USD\", \"$\", \"US Dollar\", {}, \"ltr\", plural];\n\n/**\n * This const is used to store the locale data registered with `registerLocaleData`\n */\nlet LOCALE_DATA = {};\n/**\n * Register locale data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature `registerLocaleData(data: any, extraData?: any)` is deprecated since v5.1\n */\nfunction registerLocaleData(data, localeId, extraData) {\n if (typeof localeId !== 'string') {\n extraData = localeId;\n localeId = data[LocaleDataIndex.LocaleId];\n }\n localeId = localeId.toLowerCase().replace(/_/g, '-');\n LOCALE_DATA[localeId] = data;\n if (extraData) {\n LOCALE_DATA[localeId][LocaleDataIndex.ExtraData] = extraData;\n }\n}\n/**\n * Finds the locale data for a given locale.\n *\n * @param locale The locale code.\n * @returns The locale data.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction findLocaleData(locale) {\n const normalizedLocale = normalizeLocale(locale);\n let match = getLocaleData(normalizedLocale);\n if (match) {\n return match;\n }\n // let's try to find a parent locale\n const parentLocale = normalizedLocale.split('-')[0];\n match = getLocaleData(parentLocale);\n if (match) {\n return match;\n }\n if (parentLocale === 'en') {\n return localeEn;\n }\n throw new RuntimeError(701 /* RuntimeErrorCode.MISSING_LOCALE_DATA */, ngDevMode && `Missing locale data for the locale \"${locale}\".`);\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n */\nfunction getLocaleCurrencyCode(locale) {\n const data = findLocaleData(locale);\n return data[LocaleDataIndex.CurrencyCode] || null;\n}\n/**\n * Retrieves the plural function used by ICU expressions to determine the plural case to use\n * for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The plural function for the locale.\n * @see {@link NgPlural}\n * @see [Internationalization (i18n) Guide](/guide/i18n-overview)\n */\nfunction getLocalePluralCase(locale) {\n const data = findLocaleData(locale);\n return data[LocaleDataIndex.PluralCase];\n}\n/**\n * Helper function to get the given `normalizedLocale` from `LOCALE_DATA`\n * or from the global `ng.common.locale`.\n */\nfunction getLocaleData(normalizedLocale) {\n if (!(normalizedLocale in LOCALE_DATA)) {\n LOCALE_DATA[normalizedLocale] = _global.ng && _global.ng.common && _global.ng.common.locales &&\n _global.ng.common.locales[normalizedLocale];\n }\n return LOCALE_DATA[normalizedLocale];\n}\n/**\n * Helper function to remove all the locale data from `LOCALE_DATA`.\n */\nfunction unregisterAllLocaleData() {\n LOCALE_DATA = {};\n}\n/**\n * Index of each type of locale data from the locale data array\n */\nvar LocaleDataIndex;\n(function (LocaleDataIndex) {\n LocaleDataIndex[LocaleDataIndex[\"LocaleId\"] = 0] = \"LocaleId\";\n LocaleDataIndex[LocaleDataIndex[\"DayPeriodsFormat\"] = 1] = \"DayPeriodsFormat\";\n LocaleDataIndex[LocaleDataIndex[\"DayPeriodsStandalone\"] = 2] = \"DayPeriodsStandalone\";\n LocaleDataIndex[LocaleDataIndex[\"DaysFormat\"] = 3] = \"DaysFormat\";\n LocaleDataIndex[LocaleDataIndex[\"DaysStandalone\"] = 4] = \"DaysStandalone\";\n LocaleDataIndex[LocaleDataIndex[\"MonthsFormat\"] = 5] = \"MonthsFormat\";\n LocaleDataIndex[LocaleDataIndex[\"MonthsStandalone\"] = 6] = \"MonthsStandalone\";\n LocaleDataIndex[LocaleDataIndex[\"Eras\"] = 7] = \"Eras\";\n LocaleDataIndex[LocaleDataIndex[\"FirstDayOfWeek\"] = 8] = \"FirstDayOfWeek\";\n LocaleDataIndex[LocaleDataIndex[\"WeekendRange\"] = 9] = \"WeekendRange\";\n LocaleDataIndex[LocaleDataIndex[\"DateFormat\"] = 10] = \"DateFormat\";\n LocaleDataIndex[LocaleDataIndex[\"TimeFormat\"] = 11] = \"TimeFormat\";\n LocaleDataIndex[LocaleDataIndex[\"DateTimeFormat\"] = 12] = \"DateTimeFormat\";\n LocaleDataIndex[LocaleDataIndex[\"NumberSymbols\"] = 13] = \"NumberSymbols\";\n LocaleDataIndex[LocaleDataIndex[\"NumberFormats\"] = 14] = \"NumberFormats\";\n LocaleDataIndex[LocaleDataIndex[\"CurrencyCode\"] = 15] = \"CurrencyCode\";\n LocaleDataIndex[LocaleDataIndex[\"CurrencySymbol\"] = 16] = \"CurrencySymbol\";\n LocaleDataIndex[LocaleDataIndex[\"CurrencyName\"] = 17] = \"CurrencyName\";\n LocaleDataIndex[LocaleDataIndex[\"Currencies\"] = 18] = \"Currencies\";\n LocaleDataIndex[LocaleDataIndex[\"Directionality\"] = 19] = \"Directionality\";\n LocaleDataIndex[LocaleDataIndex[\"PluralCase\"] = 20] = \"PluralCase\";\n LocaleDataIndex[LocaleDataIndex[\"ExtraData\"] = 21] = \"ExtraData\";\n})(LocaleDataIndex || (LocaleDataIndex = {}));\n/**\n * Returns the canonical form of a locale name - lowercase with `_` replaced with `-`.\n */\nfunction normalizeLocale(locale) {\n return locale.toLowerCase().replace(/_/g, '-');\n}\n\nconst pluralMapping = ['zero', 'one', 'two', 'few', 'many'];\n/**\n * Returns the plural case based on the locale\n */\nfunction getPluralCase(value, locale) {\n const plural = getLocalePluralCase(locale)(parseInt(value, 10));\n const result = pluralMapping[plural];\n return (result !== undefined) ? result : 'other';\n}\n/**\n * The locale id that the application is using by default (for translations and ICU expressions).\n */\nconst DEFAULT_LOCALE_ID = 'en-US';\n/**\n * USD currency code that the application uses by default for CurrencyPipe when no\n * DEFAULT_CURRENCY_CODE is provided.\n */\nconst USD_CURRENCY_CODE = 'USD';\n\n/**\n * Marks that the next string is an element name.\n *\n * See `I18nMutateOpCodes` documentation.\n */\nconst ELEMENT_MARKER = {\n marker: 'element'\n};\n/**\n * Marks that the next string is comment text need for ICU.\n *\n * See `I18nMutateOpCodes` documentation.\n */\nconst ICU_MARKER = {\n marker: 'ICU'\n};\n/**\n * See `I18nCreateOpCodes`\n */\nvar I18nCreateOpCode;\n(function (I18nCreateOpCode) {\n /**\n * Number of bits to shift index so that it can be combined with the `APPEND_EAGERLY` and\n * `COMMENT`.\n */\n I18nCreateOpCode[I18nCreateOpCode[\"SHIFT\"] = 2] = \"SHIFT\";\n /**\n * Should the node be appended to parent immediately after creation.\n */\n I18nCreateOpCode[I18nCreateOpCode[\"APPEND_EAGERLY\"] = 1] = \"APPEND_EAGERLY\";\n /**\n * If set the node should be comment (rather than a text) node.\n */\n I18nCreateOpCode[I18nCreateOpCode[\"COMMENT\"] = 2] = \"COMMENT\";\n})(I18nCreateOpCode || (I18nCreateOpCode = {}));\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nconst unusedValueExportToPlacateAjd = 1;\n\n/**\n * The locale id that the application is currently using (for translations and ICU expressions).\n * This is the ivy version of `LOCALE_ID` that was defined as an injection token for the view engine\n * but is now defined as a global value.\n */\nlet LOCALE_ID$1 = DEFAULT_LOCALE_ID;\n/**\n * Sets the locale id that will be used for translations and ICU expressions.\n * This is the ivy version of `LOCALE_ID` that was defined as an injection token for the view engine\n * but is now defined as a global value.\n *\n * @param localeId\n */\nfunction setLocaleId(localeId) {\n assertDefined(localeId, `Expected localeId to be defined`);\n if (typeof localeId === 'string') {\n LOCALE_ID$1 = localeId.toLowerCase().replace(/_/g, '-');\n }\n}\n/**\n * Gets the locale id that will be used for translations and ICU expressions.\n * This is the ivy version of `LOCALE_ID` that was defined as an injection token for the view engine\n * but is now defined as a global value.\n */\nfunction getLocaleId() {\n return LOCALE_ID$1;\n}\n\n/**\n * Find a node in front of which `currentTNode` should be inserted (takes i18n into account).\n *\n * This method determines the `RNode` in front of which we should insert the `currentRNode`. This\n * takes `TNode.insertBeforeIndex` into account.\n *\n * @param parentTNode parent `TNode`\n * @param currentTNode current `TNode` (The node which we would like to insert into the DOM)\n * @param lView current `LView`\n */\nfunction getInsertInFrontOfRNodeWithI18n(parentTNode, currentTNode, lView) {\n const tNodeInsertBeforeIndex = currentTNode.insertBeforeIndex;\n const insertBeforeIndex = Array.isArray(tNodeInsertBeforeIndex) ? tNodeInsertBeforeIndex[0] : tNodeInsertBeforeIndex;\n if (insertBeforeIndex === null) {\n return getInsertInFrontOfRNodeWithNoI18n(parentTNode, currentTNode, lView);\n }\n else {\n ngDevMode && assertIndexInRange(lView, insertBeforeIndex);\n return unwrapRNode(lView[insertBeforeIndex]);\n }\n}\n/**\n * Process `TNode.insertBeforeIndex` by adding i18n text nodes.\n *\n * See `TNode.insertBeforeIndex`\n */\nfunction processI18nInsertBefore(renderer, childTNode, lView, childRNode, parentRElement) {\n const tNodeInsertBeforeIndex = childTNode.insertBeforeIndex;\n if (Array.isArray(tNodeInsertBeforeIndex)) {\n // An array indicates that there are i18n nodes that need to be added as children of this\n // `childRNode`. These i18n nodes were created before this `childRNode` was available and so\n // only now can be added. The first element of the array is the normal index where we should\n // insert the `childRNode`. Additional elements are the extra nodes to be added as children of\n // `childRNode`.\n ngDevMode && assertDomNode(childRNode);\n let i18nParent = childRNode;\n let anchorRNode = null;\n if (!(childTNode.type & 3 /* TNodeType.AnyRNode */)) {\n anchorRNode = i18nParent;\n i18nParent = parentRElement;\n }\n if (i18nParent !== null && childTNode.componentOffset === -1) {\n for (let i = 1; i < tNodeInsertBeforeIndex.length; i++) {\n // No need to `unwrapRNode` because all of the indexes point to i18n text nodes.\n // see `assertDomNode` below.\n const i18nChild = lView[tNodeInsertBeforeIndex[i]];\n nativeInsertBefore(renderer, i18nParent, i18nChild, anchorRNode, false);\n }\n }\n }\n}\n\n/**\n * Add `tNode` to `previousTNodes` list and update relevant `TNode`s in `previousTNodes` list\n * `tNode.insertBeforeIndex`.\n *\n * Things to keep in mind:\n * 1. All i18n text nodes are encoded as `TNodeType.Element` and are created eagerly by the\n * `ɵɵi18nStart` instruction.\n * 2. All `TNodeType.Placeholder` `TNodes` are elements which will be created later by\n * `ɵɵelementStart` instruction.\n * 3. `ɵɵelementStart` instruction will create `TNode`s in the ascending `TNode.index` order. (So a\n * smaller index `TNode` is guaranteed to be created before a larger one)\n *\n * We use the above three invariants to determine `TNode.insertBeforeIndex`.\n *\n * In an ideal world `TNode.insertBeforeIndex` would always be `TNode.next.index`. However,\n * this will not work because `TNode.next.index` may be larger than `TNode.index` which means that\n * the next node is not yet created and therefore we can't insert in front of it.\n *\n * Rule1: `TNode.insertBeforeIndex = null` if `TNode.next === null` (Initial condition, as we don't\n * know if there will be further `TNode`s inserted after.)\n * Rule2: If `previousTNode` is created after the `tNode` being inserted, then\n * `previousTNode.insertBeforeNode = tNode.index` (So when a new `tNode` is added we check\n * previous to see if we can update its `insertBeforeTNode`)\n *\n * See `TNode.insertBeforeIndex` for more context.\n *\n * @param previousTNodes A list of previous TNodes so that we can easily traverse `TNode`s in\n * reverse order. (If `TNode` would have `previous` this would not be necessary.)\n * @param newTNode A TNode to add to the `previousTNodes` list.\n */\nfunction addTNodeAndUpdateInsertBeforeIndex(previousTNodes, newTNode) {\n // Start with Rule1\n ngDevMode &&\n assertEqual(newTNode.insertBeforeIndex, null, 'We expect that insertBeforeIndex is not set');\n previousTNodes.push(newTNode);\n if (previousTNodes.length > 1) {\n for (let i = previousTNodes.length - 2; i >= 0; i--) {\n const existingTNode = previousTNodes[i];\n // Text nodes are created eagerly and so they don't need their `indexBeforeIndex` updated.\n // It is safe to ignore them.\n if (!isI18nText(existingTNode)) {\n if (isNewTNodeCreatedBefore(existingTNode, newTNode) &&\n getInsertBeforeIndex(existingTNode) === null) {\n // If it was created before us in time, (and it does not yet have `insertBeforeIndex`)\n // then add the `insertBeforeIndex`.\n setInsertBeforeIndex(existingTNode, newTNode.index);\n }\n }\n }\n }\n}\nfunction isI18nText(tNode) {\n return !(tNode.type & 64 /* TNodeType.Placeholder */);\n}\nfunction isNewTNodeCreatedBefore(existingTNode, newTNode) {\n return isI18nText(newTNode) || existingTNode.index > newTNode.index;\n}\nfunction getInsertBeforeIndex(tNode) {\n const index = tNode.insertBeforeIndex;\n return Array.isArray(index) ? index[0] : index;\n}\nfunction setInsertBeforeIndex(tNode, value) {\n const index = tNode.insertBeforeIndex;\n if (Array.isArray(index)) {\n // Array is stored if we have to insert child nodes. See `TNode.insertBeforeIndex`\n index[0] = value;\n }\n else {\n setI18nHandling(getInsertInFrontOfRNodeWithI18n, processI18nInsertBefore);\n tNode.insertBeforeIndex = value;\n }\n}\n\n/**\n * Retrieve `TIcu` at a given `index`.\n *\n * The `TIcu` can be stored either directly (if it is nested ICU) OR\n * it is stored inside tho `TIcuContainer` if it is top level ICU.\n *\n * The reason for this is that the top level ICU need a `TNode` so that they are part of the render\n * tree, but nested ICU's have no TNode, because we don't know ahead of time if the nested ICU is\n * expressed (parent ICU may have selected a case which does not contain it.)\n *\n * @param tView Current `TView`.\n * @param index Index where the value should be read from.\n */\nfunction getTIcu(tView, index) {\n const value = tView.data[index];\n if (value === null || typeof value === 'string')\n return null;\n if (ngDevMode &&\n !(value.hasOwnProperty('tView') || value.hasOwnProperty('currentCaseLViewIndex'))) {\n throwError('We expect to get \\'null\\'|\\'TIcu\\'|\\'TIcuContainer\\', but got: ' + value);\n }\n // Here the `value.hasOwnProperty('currentCaseLViewIndex')` is a polymorphic read as it can be\n // either TIcu or TIcuContainerNode. This is not ideal, but we still think it is OK because it\n // will be just two cases which fits into the browser inline cache (inline cache can take up to\n // 4)\n const tIcu = value.hasOwnProperty('currentCaseLViewIndex') ? value :\n value.value;\n ngDevMode && assertTIcu(tIcu);\n return tIcu;\n}\n/**\n * Store `TIcu` at a give `index`.\n *\n * The `TIcu` can be stored either directly (if it is nested ICU) OR\n * it is stored inside tho `TIcuContainer` if it is top level ICU.\n *\n * The reason for this is that the top level ICU need a `TNode` so that they are part of the render\n * tree, but nested ICU's have no TNode, because we don't know ahead of time if the nested ICU is\n * expressed (parent ICU may have selected a case which does not contain it.)\n *\n * @param tView Current `TView`.\n * @param index Index where the value should be stored at in `Tview.data`\n * @param tIcu The TIcu to store.\n */\nfunction setTIcu(tView, index, tIcu) {\n const tNode = tView.data[index];\n ngDevMode &&\n assertEqual(tNode === null || tNode.hasOwnProperty('tView'), true, 'We expect to get \\'null\\'|\\'TIcuContainer\\'');\n if (tNode === null) {\n tView.data[index] = tIcu;\n }\n else {\n ngDevMode && assertTNodeType(tNode, 32 /* TNodeType.Icu */);\n tNode.value = tIcu;\n }\n}\n/**\n * Set `TNode.insertBeforeIndex` taking the `Array` into account.\n *\n * See `TNode.insertBeforeIndex`\n */\nfunction setTNodeInsertBeforeIndex(tNode, index) {\n ngDevMode && assertTNode(tNode);\n let insertBeforeIndex = tNode.insertBeforeIndex;\n if (insertBeforeIndex === null) {\n setI18nHandling(getInsertInFrontOfRNodeWithI18n, processI18nInsertBefore);\n insertBeforeIndex = tNode.insertBeforeIndex =\n [null /* may be updated to number later */, index];\n }\n else {\n assertEqual(Array.isArray(insertBeforeIndex), true, 'Expecting array here');\n insertBeforeIndex.push(index);\n }\n}\n/**\n * Create `TNode.type=TNodeType.Placeholder` node.\n *\n * See `TNodeType.Placeholder` for more information.\n */\nfunction createTNodePlaceholder(tView, previousTNodes, index) {\n const tNode = createTNodeAtIndex(tView, index, 64 /* TNodeType.Placeholder */, null, null);\n addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tNode);\n return tNode;\n}\n/**\n * Returns current ICU case.\n *\n * ICU cases are stored as index into the `TIcu.cases`.\n * At times it is necessary to communicate that the ICU case just switched and that next ICU update\n * should update all bindings regardless of the mask. In such a case the we store negative numbers\n * for cases which have just been switched. This function removes the negative flag.\n */\nfunction getCurrentICUCaseIndex(tIcu, lView) {\n const currentCase = lView[tIcu.currentCaseLViewIndex];\n return currentCase === null ? currentCase : (currentCase < 0 ? ~currentCase : currentCase);\n}\nfunction getParentFromIcuCreateOpCode(mergedCode) {\n return mergedCode >>> 17 /* IcuCreateOpCode.SHIFT_PARENT */;\n}\nfunction getRefFromIcuCreateOpCode(mergedCode) {\n return (mergedCode & 131070 /* IcuCreateOpCode.MASK_REF */) >>> 1 /* IcuCreateOpCode.SHIFT_REF */;\n}\nfunction getInstructionFromIcuCreateOpCode(mergedCode) {\n return mergedCode & 1 /* IcuCreateOpCode.MASK_INSTRUCTION */;\n}\nfunction icuCreateOpCode(opCode, parentIdx, refIdx) {\n ngDevMode && assertGreaterThanOrEqual(parentIdx, 0, 'Missing parent index');\n ngDevMode && assertGreaterThan(refIdx, 0, 'Missing ref index');\n return opCode | parentIdx << 17 /* IcuCreateOpCode.SHIFT_PARENT */ | refIdx << 1 /* IcuCreateOpCode.SHIFT_REF */;\n}\n\n/**\n * Keep track of which input bindings in `ɵɵi18nExp` have changed.\n *\n * This is used to efficiently update expressions in i18n only when the corresponding input has\n * changed.\n *\n * 1) Each bit represents which of the `ɵɵi18nExp` has changed.\n * 2) There are 32 bits allowed in JS.\n * 3) Bit 32 is special as it is shared for all changes past 32. (In other words if you have more\n * than 32 `ɵɵi18nExp` then all changes past 32nd `ɵɵi18nExp` will be mapped to same bit. This means\n * that we may end up changing more than we need to. But i18n expressions with 32 bindings is rare\n * so in practice it should not be an issue.)\n */\nlet changeMask = 0b0;\n/**\n * Keeps track of which bit needs to be updated in `changeMask`\n *\n * This value gets incremented on every call to `ɵɵi18nExp`\n */\nlet changeMaskCounter = 0;\n/**\n * Keep track of which input bindings in `ɵɵi18nExp` have changed.\n *\n * `setMaskBit` gets invoked by each call to `ɵɵi18nExp`.\n *\n * @param hasChange did `ɵɵi18nExp` detect a change.\n */\nfunction setMaskBit(hasChange) {\n if (hasChange) {\n changeMask = changeMask | (1 << Math.min(changeMaskCounter, 31));\n }\n changeMaskCounter++;\n}\nfunction applyI18n(tView, lView, index) {\n if (changeMaskCounter > 0) {\n ngDevMode && assertDefined(tView, `tView should be defined`);\n const tI18n = tView.data[index];\n // When `index` points to an `ɵɵi18nAttributes` then we have an array otherwise `TI18n`\n const updateOpCodes = Array.isArray(tI18n) ? tI18n : tI18n.update;\n const bindingsStartIndex = getBindingIndex() - changeMaskCounter - 1;\n applyUpdateOpCodes(tView, lView, updateOpCodes, bindingsStartIndex, changeMask);\n }\n // Reset changeMask & maskBit to default for the next update cycle\n changeMask = 0b0;\n changeMaskCounter = 0;\n}\n/**\n * Apply `I18nCreateOpCodes` op-codes as stored in `TI18n.create`.\n *\n * Creates text (and comment) nodes which are internationalized.\n *\n * @param lView Current lView\n * @param createOpCodes Set of op-codes to apply\n * @param parentRNode Parent node (so that direct children can be added eagerly) or `null` if it is\n * a root node.\n * @param insertInFrontOf DOM node that should be used as an anchor.\n */\nfunction applyCreateOpCodes(lView, createOpCodes, parentRNode, insertInFrontOf) {\n const renderer = lView[RENDERER];\n for (let i = 0; i < createOpCodes.length; i++) {\n const opCode = createOpCodes[i++];\n const text = createOpCodes[i];\n const isComment = (opCode & I18nCreateOpCode.COMMENT) === I18nCreateOpCode.COMMENT;\n const appendNow = (opCode & I18nCreateOpCode.APPEND_EAGERLY) === I18nCreateOpCode.APPEND_EAGERLY;\n const index = opCode >>> I18nCreateOpCode.SHIFT;\n let rNode = lView[index];\n if (rNode === null) {\n // We only create new DOM nodes if they don't already exist: If ICU switches case back to a\n // case which was already instantiated, no need to create new DOM nodes.\n rNode = lView[index] =\n isComment ? renderer.createComment(text) : createTextNode(renderer, text);\n }\n if (appendNow && parentRNode !== null) {\n nativeInsertBefore(renderer, parentRNode, rNode, insertInFrontOf, false);\n }\n }\n}\n/**\n * Apply `I18nMutateOpCodes` OpCodes.\n *\n * @param tView Current `TView`\n * @param mutableOpCodes Mutable OpCodes to process\n * @param lView Current `LView`\n * @param anchorRNode place where the i18n node should be inserted.\n */\nfunction applyMutableOpCodes(tView, mutableOpCodes, lView, anchorRNode) {\n ngDevMode && assertDomNode(anchorRNode);\n const renderer = lView[RENDERER];\n // `rootIdx` represents the node into which all inserts happen.\n let rootIdx = null;\n // `rootRNode` represents the real node into which we insert. This can be different from\n // `lView[rootIdx]` if we have projection.\n // - null we don't have a parent (as can be the case in when we are inserting into a root of\n // LView which has no parent.)\n // - `RElement` The element representing the root after taking projection into account.\n let rootRNode;\n for (let i = 0; i < mutableOpCodes.length; i++) {\n const opCode = mutableOpCodes[i];\n if (typeof opCode == 'string') {\n const textNodeIndex = mutableOpCodes[++i];\n if (lView[textNodeIndex] === null) {\n ngDevMode && ngDevMode.rendererCreateTextNode++;\n ngDevMode && assertIndexInRange(lView, textNodeIndex);\n lView[textNodeIndex] = createTextNode(renderer, opCode);\n }\n }\n else if (typeof opCode == 'number') {\n switch (opCode & 1 /* IcuCreateOpCode.MASK_INSTRUCTION */) {\n case 0 /* IcuCreateOpCode.AppendChild */:\n const parentIdx = getParentFromIcuCreateOpCode(opCode);\n if (rootIdx === null) {\n // The first operation should save the `rootIdx` because the first operation\n // must insert into the root. (Only subsequent operations can insert into a dynamic\n // parent)\n rootIdx = parentIdx;\n rootRNode = nativeParentNode(renderer, anchorRNode);\n }\n let insertInFrontOf;\n let parentRNode;\n if (parentIdx === rootIdx) {\n insertInFrontOf = anchorRNode;\n parentRNode = rootRNode;\n }\n else {\n insertInFrontOf = null;\n parentRNode = unwrapRNode(lView[parentIdx]);\n }\n // FIXME(misko): Refactor with `processI18nText`\n if (parentRNode !== null) {\n // This can happen if the `LView` we are adding to is not attached to a parent `LView`.\n // In such a case there is no \"root\" we can attach to. This is fine, as we still need to\n // create the elements. When the `LView` gets later added to a parent these \"root\" nodes\n // get picked up and added.\n ngDevMode && assertDomNode(parentRNode);\n const refIdx = getRefFromIcuCreateOpCode(opCode);\n ngDevMode && assertGreaterThan(refIdx, HEADER_OFFSET, 'Missing ref');\n // `unwrapRNode` is not needed here as all of these point to RNodes as part of the i18n\n // which can't have components.\n const child = lView[refIdx];\n ngDevMode && assertDomNode(child);\n nativeInsertBefore(renderer, parentRNode, child, insertInFrontOf, false);\n const tIcu = getTIcu(tView, refIdx);\n if (tIcu !== null && typeof tIcu === 'object') {\n // If we just added a comment node which has ICU then that ICU may have already been\n // rendered and therefore we need to re-add it here.\n ngDevMode && assertTIcu(tIcu);\n const caseIndex = getCurrentICUCaseIndex(tIcu, lView);\n if (caseIndex !== null) {\n applyMutableOpCodes(tView, tIcu.create[caseIndex], lView, lView[tIcu.anchorIdx]);\n }\n }\n }\n break;\n case 1 /* IcuCreateOpCode.Attr */:\n const elementNodeIndex = opCode >>> 1 /* IcuCreateOpCode.SHIFT_REF */;\n const attrName = mutableOpCodes[++i];\n const attrValue = mutableOpCodes[++i];\n // This code is used for ICU expressions only, since we don't support\n // directives/components in ICUs, we don't need to worry about inputs here\n setElementAttribute(renderer, getNativeByIndex(elementNodeIndex, lView), null, null, attrName, attrValue, null);\n break;\n default:\n if (ngDevMode) {\n throw new RuntimeError(700 /* RuntimeErrorCode.INVALID_I18N_STRUCTURE */, `Unable to determine the type of mutate operation for \"${opCode}\"`);\n }\n }\n }\n else {\n switch (opCode) {\n case ICU_MARKER:\n const commentValue = mutableOpCodes[++i];\n const commentNodeIndex = mutableOpCodes[++i];\n if (lView[commentNodeIndex] === null) {\n ngDevMode &&\n assertEqual(typeof commentValue, 'string', `Expected \"${commentValue}\" to be a comment node value`);\n ngDevMode && ngDevMode.rendererCreateComment++;\n ngDevMode && assertIndexInExpandoRange(lView, commentNodeIndex);\n const commentRNode = lView[commentNodeIndex] =\n createCommentNode(renderer, commentValue);\n // FIXME(misko): Attaching patch data is only needed for the root (Also add tests)\n attachPatchData(commentRNode, lView);\n }\n break;\n case ELEMENT_MARKER:\n const tagName = mutableOpCodes[++i];\n const elementNodeIndex = mutableOpCodes[++i];\n if (lView[elementNodeIndex] === null) {\n ngDevMode &&\n assertEqual(typeof tagName, 'string', `Expected \"${tagName}\" to be an element node tag name`);\n ngDevMode && ngDevMode.rendererCreateElement++;\n ngDevMode && assertIndexInExpandoRange(lView, elementNodeIndex);\n const elementRNode = lView[elementNodeIndex] =\n createElementNode(renderer, tagName, null);\n // FIXME(misko): Attaching patch data is only needed for the root (Also add tests)\n attachPatchData(elementRNode, lView);\n }\n break;\n default:\n ngDevMode &&\n throwError(`Unable to determine the type of mutate operation for \"${opCode}\"`);\n }\n }\n }\n}\n/**\n * Apply `I18nUpdateOpCodes` OpCodes\n *\n * @param tView Current `TView`\n * @param lView Current `LView`\n * @param updateOpCodes OpCodes to process\n * @param bindingsStartIndex Location of the first `ɵɵi18nApply`\n * @param changeMask Each bit corresponds to a `ɵɵi18nExp` (Counting backwards from\n * `bindingsStartIndex`)\n */\nfunction applyUpdateOpCodes(tView, lView, updateOpCodes, bindingsStartIndex, changeMask) {\n for (let i = 0; i < updateOpCodes.length; i++) {\n // bit code to check if we should apply the next update\n const checkBit = updateOpCodes[i];\n // Number of opCodes to skip until next set of update codes\n const skipCodes = updateOpCodes[++i];\n if (checkBit & changeMask) {\n // The value has been updated since last checked\n let value = '';\n for (let j = i + 1; j <= (i + skipCodes); j++) {\n const opCode = updateOpCodes[j];\n if (typeof opCode == 'string') {\n value += opCode;\n }\n else if (typeof opCode == 'number') {\n if (opCode < 0) {\n // Negative opCode represent `i18nExp` values offset.\n value += renderStringify(lView[bindingsStartIndex - opCode]);\n }\n else {\n const nodeIndex = (opCode >>> 2 /* I18nUpdateOpCode.SHIFT_REF */);\n switch (opCode & 3 /* I18nUpdateOpCode.MASK_OPCODE */) {\n case 1 /* I18nUpdateOpCode.Attr */:\n const propName = updateOpCodes[++j];\n const sanitizeFn = updateOpCodes[++j];\n const tNodeOrTagName = tView.data[nodeIndex];\n ngDevMode && assertDefined(tNodeOrTagName, 'Experting TNode or string');\n if (typeof tNodeOrTagName === 'string') {\n // IF we don't have a `TNode`, then we are an element in ICU (as ICU content does\n // not have TNode), in which case we know that there are no directives, and hence\n // we use attribute setting.\n setElementAttribute(lView[RENDERER], lView[nodeIndex], null, tNodeOrTagName, propName, value, sanitizeFn);\n }\n else {\n elementPropertyInternal(tView, tNodeOrTagName, lView, propName, value, lView[RENDERER], sanitizeFn, false);\n }\n break;\n case 0 /* I18nUpdateOpCode.Text */:\n const rText = lView[nodeIndex];\n rText !== null && updateTextNode(lView[RENDERER], rText, value);\n break;\n case 2 /* I18nUpdateOpCode.IcuSwitch */:\n applyIcuSwitchCase(tView, getTIcu(tView, nodeIndex), lView, value);\n break;\n case 3 /* I18nUpdateOpCode.IcuUpdate */:\n applyIcuUpdateCase(tView, getTIcu(tView, nodeIndex), bindingsStartIndex, lView);\n break;\n }\n }\n }\n }\n }\n else {\n const opCode = updateOpCodes[i + 1];\n if (opCode > 0 && (opCode & 3 /* I18nUpdateOpCode.MASK_OPCODE */) === 3 /* I18nUpdateOpCode.IcuUpdate */) {\n // Special case for the `icuUpdateCase`. It could be that the mask did not match, but\n // we still need to execute `icuUpdateCase` because the case has changed recently due to\n // previous `icuSwitchCase` instruction. (`icuSwitchCase` and `icuUpdateCase` always come in\n // pairs.)\n const nodeIndex = (opCode >>> 2 /* I18nUpdateOpCode.SHIFT_REF */);\n const tIcu = getTIcu(tView, nodeIndex);\n const currentIndex = lView[tIcu.currentCaseLViewIndex];\n if (currentIndex < 0) {\n applyIcuUpdateCase(tView, tIcu, bindingsStartIndex, lView);\n }\n }\n }\n i += skipCodes;\n }\n}\n/**\n * Apply OpCodes associated with updating an existing ICU.\n *\n * @param tView Current `TView`\n * @param tIcu Current `TIcu`\n * @param bindingsStartIndex Location of the first `ɵɵi18nApply`\n * @param lView Current `LView`\n */\nfunction applyIcuUpdateCase(tView, tIcu, bindingsStartIndex, lView) {\n ngDevMode && assertIndexInRange(lView, tIcu.currentCaseLViewIndex);\n let activeCaseIndex = lView[tIcu.currentCaseLViewIndex];\n if (activeCaseIndex !== null) {\n let mask = changeMask;\n if (activeCaseIndex < 0) {\n // Clear the flag.\n // Negative number means that the ICU was freshly created and we need to force the update.\n activeCaseIndex = lView[tIcu.currentCaseLViewIndex] = ~activeCaseIndex;\n // -1 is same as all bits on, which simulates creation since it marks all bits dirty\n mask = -1;\n }\n applyUpdateOpCodes(tView, lView, tIcu.update[activeCaseIndex], bindingsStartIndex, mask);\n }\n}\n/**\n * Apply OpCodes associated with switching a case on ICU.\n *\n * This involves tearing down existing case and than building up a new case.\n *\n * @param tView Current `TView`\n * @param tIcu Current `TIcu`\n * @param lView Current `LView`\n * @param value Value of the case to update to.\n */\nfunction applyIcuSwitchCase(tView, tIcu, lView, value) {\n // Rebuild a new case for this ICU\n const caseIndex = getCaseIndex(tIcu, value);\n let activeCaseIndex = getCurrentICUCaseIndex(tIcu, lView);\n if (activeCaseIndex !== caseIndex) {\n applyIcuSwitchCaseRemove(tView, tIcu, lView);\n lView[tIcu.currentCaseLViewIndex] = caseIndex === null ? null : ~caseIndex;\n if (caseIndex !== null) {\n // Add the nodes for the new case\n const anchorRNode = lView[tIcu.anchorIdx];\n if (anchorRNode) {\n ngDevMode && assertDomNode(anchorRNode);\n applyMutableOpCodes(tView, tIcu.create[caseIndex], lView, anchorRNode);\n }\n }\n }\n}\n/**\n * Apply OpCodes associated with tearing ICU case.\n *\n * This involves tearing down existing case and than building up a new case.\n *\n * @param tView Current `TView`\n * @param tIcu Current `TIcu`\n * @param lView Current `LView`\n */\nfunction applyIcuSwitchCaseRemove(tView, tIcu, lView) {\n let activeCaseIndex = getCurrentICUCaseIndex(tIcu, lView);\n if (activeCaseIndex !== null) {\n const removeCodes = tIcu.remove[activeCaseIndex];\n for (let i = 0; i < removeCodes.length; i++) {\n const nodeOrIcuIndex = removeCodes[i];\n if (nodeOrIcuIndex > 0) {\n // Positive numbers are `RNode`s.\n const rNode = getNativeByIndex(nodeOrIcuIndex, lView);\n rNode !== null && nativeRemoveNode(lView[RENDERER], rNode);\n }\n else {\n // Negative numbers are ICUs\n applyIcuSwitchCaseRemove(tView, getTIcu(tView, ~nodeOrIcuIndex), lView);\n }\n }\n }\n}\n/**\n * Returns the index of the current case of an ICU expression depending on the main binding value\n *\n * @param icuExpression\n * @param bindingValue The value of the main binding used by this ICU expression\n */\nfunction getCaseIndex(icuExpression, bindingValue) {\n let index = icuExpression.cases.indexOf(bindingValue);\n if (index === -1) {\n switch (icuExpression.type) {\n case 1 /* IcuType.plural */: {\n const resolvedCase = getPluralCase(bindingValue, getLocaleId());\n index = icuExpression.cases.indexOf(resolvedCase);\n if (index === -1 && resolvedCase !== 'other') {\n index = icuExpression.cases.indexOf('other');\n }\n break;\n }\n case 0 /* IcuType.select */: {\n index = icuExpression.cases.indexOf('other');\n break;\n }\n }\n }\n return index === -1 ? null : index;\n}\n\nfunction loadIcuContainerVisitor() {\n const _stack = [];\n let _index = -1;\n let _lView;\n let _removes;\n /**\n * Retrieves a set of root nodes from `TIcu.remove`. Used by `TNodeType.ICUContainer`\n * to determine which root belong to the ICU.\n *\n * Example of usage.\n * ```\n * const nextRNode = icuContainerIteratorStart(tIcuContainerNode, lView);\n * let rNode: RNode|null;\n * while(rNode = nextRNode()) {\n * console.log(rNode);\n * }\n * ```\n *\n * @param tIcuContainerNode Current `TIcuContainerNode`\n * @param lView `LView` where the `RNode`s should be looked up.\n */\n function icuContainerIteratorStart(tIcuContainerNode, lView) {\n _lView = lView;\n while (_stack.length)\n _stack.pop();\n ngDevMode && assertTNodeForLView(tIcuContainerNode, lView);\n enterIcu(tIcuContainerNode.value, lView);\n return icuContainerIteratorNext;\n }\n function enterIcu(tIcu, lView) {\n _index = 0;\n const currentCase = getCurrentICUCaseIndex(tIcu, lView);\n if (currentCase !== null) {\n ngDevMode && assertNumberInRange(currentCase, 0, tIcu.cases.length - 1);\n _removes = tIcu.remove[currentCase];\n }\n else {\n _removes = EMPTY_ARRAY;\n }\n }\n function icuContainerIteratorNext() {\n if (_index < _removes.length) {\n const removeOpCode = _removes[_index++];\n ngDevMode && assertNumber(removeOpCode, 'Expecting OpCode number');\n if (removeOpCode > 0) {\n const rNode = _lView[removeOpCode];\n ngDevMode && assertDomNode(rNode);\n return rNode;\n }\n else {\n _stack.push(_index, _removes);\n // ICUs are represented by negative indices\n const tIcuIndex = ~removeOpCode;\n const tIcu = _lView[TVIEW].data[tIcuIndex];\n ngDevMode && assertTIcu(tIcu);\n enterIcu(tIcu, _lView);\n return icuContainerIteratorNext();\n }\n }\n else {\n if (_stack.length === 0) {\n return null;\n }\n else {\n _removes = _stack.pop();\n _index = _stack.pop();\n return icuContainerIteratorNext();\n }\n }\n }\n return icuContainerIteratorStart;\n}\n\n/**\n * Converts `I18nCreateOpCodes` array into a human readable format.\n *\n * This function is attached to the `I18nCreateOpCodes.debug` property if `ngDevMode` is enabled.\n * This function provides a human readable view of the opcodes. This is useful when debugging the\n * application as well as writing more readable tests.\n *\n * @param this `I18nCreateOpCodes` if attached as a method.\n * @param opcodes `I18nCreateOpCodes` if invoked as a function.\n */\nfunction i18nCreateOpCodesToString(opcodes) {\n const createOpCodes = opcodes || (Array.isArray(this) ? this : []);\n let lines = [];\n for (let i = 0; i < createOpCodes.length; i++) {\n const opCode = createOpCodes[i++];\n const text = createOpCodes[i];\n const isComment = (opCode & I18nCreateOpCode.COMMENT) === I18nCreateOpCode.COMMENT;\n const appendNow = (opCode & I18nCreateOpCode.APPEND_EAGERLY) === I18nCreateOpCode.APPEND_EAGERLY;\n const index = opCode >>> I18nCreateOpCode.SHIFT;\n lines.push(`lView[${index}] = document.${isComment ? 'createComment' : 'createText'}(${JSON.stringify(text)});`);\n if (appendNow) {\n lines.push(`parent.appendChild(lView[${index}]);`);\n }\n }\n return lines;\n}\n/**\n * Converts `I18nUpdateOpCodes` array into a human readable format.\n *\n * This function is attached to the `I18nUpdateOpCodes.debug` property if `ngDevMode` is enabled.\n * This function provides a human readable view of the opcodes. This is useful when debugging the\n * application as well as writing more readable tests.\n *\n * @param this `I18nUpdateOpCodes` if attached as a method.\n * @param opcodes `I18nUpdateOpCodes` if invoked as a function.\n */\nfunction i18nUpdateOpCodesToString(opcodes) {\n const parser = new OpCodeParser(opcodes || (Array.isArray(this) ? this : []));\n let lines = [];\n function consumeOpCode(value) {\n const ref = value >>> 2 /* I18nUpdateOpCode.SHIFT_REF */;\n const opCode = value & 3 /* I18nUpdateOpCode.MASK_OPCODE */;\n switch (opCode) {\n case 0 /* I18nUpdateOpCode.Text */:\n return `(lView[${ref}] as Text).textContent = $$$`;\n case 1 /* I18nUpdateOpCode.Attr */:\n const attrName = parser.consumeString();\n const sanitizationFn = parser.consumeFunction();\n const value = sanitizationFn ? `(${sanitizationFn})($$$)` : '$$$';\n return `(lView[${ref}] as Element).setAttribute('${attrName}', ${value})`;\n case 2 /* I18nUpdateOpCode.IcuSwitch */:\n return `icuSwitchCase(${ref}, $$$)`;\n case 3 /* I18nUpdateOpCode.IcuUpdate */:\n return `icuUpdateCase(${ref})`;\n }\n throw new Error('unexpected OpCode');\n }\n while (parser.hasMore()) {\n let mask = parser.consumeNumber();\n let size = parser.consumeNumber();\n const end = parser.i + size;\n const statements = [];\n let statement = '';\n while (parser.i < end) {\n let value = parser.consumeNumberOrString();\n if (typeof value === 'string') {\n statement += value;\n }\n else if (value < 0) {\n // Negative numbers are ref indexes\n // Here `i` refers to current binding index. It is to signify that the value is relative,\n // rather than absolute.\n statement += '${lView[i' + value + ']}';\n }\n else {\n // Positive numbers are operations.\n const opCodeText = consumeOpCode(value);\n statements.push(opCodeText.replace('$$$', '`' + statement + '`') + ';');\n statement = '';\n }\n }\n lines.push(`if (mask & 0b${mask.toString(2)}) { ${statements.join(' ')} }`);\n }\n return lines;\n}\n/**\n * Converts `I18nCreateOpCodes` array into a human readable format.\n *\n * This function is attached to the `I18nCreateOpCodes.debug` if `ngDevMode` is enabled. This\n * function provides a human readable view of the opcodes. This is useful when debugging the\n * application as well as writing more readable tests.\n *\n * @param this `I18nCreateOpCodes` if attached as a method.\n * @param opcodes `I18nCreateOpCodes` if invoked as a function.\n */\nfunction icuCreateOpCodesToString(opcodes) {\n const parser = new OpCodeParser(opcodes || (Array.isArray(this) ? this : []));\n let lines = [];\n function consumeOpCode(opCode) {\n const parent = getParentFromIcuCreateOpCode(opCode);\n const ref = getRefFromIcuCreateOpCode(opCode);\n switch (getInstructionFromIcuCreateOpCode(opCode)) {\n case 0 /* IcuCreateOpCode.AppendChild */:\n return `(lView[${parent}] as Element).appendChild(lView[${lastRef}])`;\n case 1 /* IcuCreateOpCode.Attr */:\n return `(lView[${ref}] as Element).setAttribute(\"${parser.consumeString()}\", \"${parser.consumeString()}\")`;\n }\n throw new Error('Unexpected OpCode: ' + getInstructionFromIcuCreateOpCode(opCode));\n }\n let lastRef = -1;\n while (parser.hasMore()) {\n let value = parser.consumeNumberStringOrMarker();\n if (value === ICU_MARKER) {\n const text = parser.consumeString();\n lastRef = parser.consumeNumber();\n lines.push(`lView[${lastRef}] = document.createComment(\"${text}\")`);\n }\n else if (value === ELEMENT_MARKER) {\n const text = parser.consumeString();\n lastRef = parser.consumeNumber();\n lines.push(`lView[${lastRef}] = document.createElement(\"${text}\")`);\n }\n else if (typeof value === 'string') {\n lastRef = parser.consumeNumber();\n lines.push(`lView[${lastRef}] = document.createTextNode(\"${value}\")`);\n }\n else if (typeof value === 'number') {\n const line = consumeOpCode(value);\n line && lines.push(line);\n }\n else {\n throw new Error('Unexpected value');\n }\n }\n return lines;\n}\n/**\n * Converts `I18nRemoveOpCodes` array into a human readable format.\n *\n * This function is attached to the `I18nRemoveOpCodes.debug` if `ngDevMode` is enabled. This\n * function provides a human readable view of the opcodes. This is useful when debugging the\n * application as well as writing more readable tests.\n *\n * @param this `I18nRemoveOpCodes` if attached as a method.\n * @param opcodes `I18nRemoveOpCodes` if invoked as a function.\n */\nfunction i18nRemoveOpCodesToString(opcodes) {\n const removeCodes = opcodes || (Array.isArray(this) ? this : []);\n let lines = [];\n for (let i = 0; i < removeCodes.length; i++) {\n const nodeOrIcuIndex = removeCodes[i];\n if (nodeOrIcuIndex > 0) {\n // Positive numbers are `RNode`s.\n lines.push(`remove(lView[${nodeOrIcuIndex}])`);\n }\n else {\n // Negative numbers are ICUs\n lines.push(`removeNestedICU(${~nodeOrIcuIndex})`);\n }\n }\n return lines;\n}\nclass OpCodeParser {\n constructor(codes) {\n this.i = 0;\n this.codes = codes;\n }\n hasMore() {\n return this.i < this.codes.length;\n }\n consumeNumber() {\n let value = this.codes[this.i++];\n assertNumber(value, 'expecting number in OpCode');\n return value;\n }\n consumeString() {\n let value = this.codes[this.i++];\n assertString(value, 'expecting string in OpCode');\n return value;\n }\n consumeFunction() {\n let value = this.codes[this.i++];\n if (value === null || typeof value === 'function') {\n return value;\n }\n throw new Error('expecting function in OpCode');\n }\n consumeNumberOrString() {\n let value = this.codes[this.i++];\n if (typeof value === 'string') {\n return value;\n }\n assertNumber(value, 'expecting number or string in OpCode');\n return value;\n }\n consumeNumberStringOrMarker() {\n let value = this.codes[this.i++];\n if (typeof value === 'string' || typeof value === 'number' || value == ICU_MARKER ||\n value == ELEMENT_MARKER) {\n return value;\n }\n assertNumber(value, 'expecting number, string, ICU_MARKER or ELEMENT_MARKER in OpCode');\n return value;\n }\n}\n\nconst BINDING_REGEXP = /�(\\d+):?\\d*�/gi;\nconst ICU_REGEXP = /({\\s*�\\d+:?\\d*�\\s*,\\s*\\S{6}\\s*,[\\s\\S]*})/gi;\nconst NESTED_ICU = /�(\\d+)�/;\nconst ICU_BLOCK_REGEXP = /^\\s*(�\\d+:?\\d*�)\\s*,\\s*(select|plural)\\s*,/;\nconst MARKER = `�`;\nconst SUBTEMPLATE_REGEXP = /�\\/?\\*(\\d+:\\d+)�/gi;\nconst PH_REGEXP = /�(\\/?[#*]\\d+):?\\d*�/gi;\n/**\n * Angular uses the special entity &ngsp; as a placeholder for non-removable space.\n * It's replaced by the 0xE500 PUA (Private Use Areas) unicode character and later on replaced by a\n * space.\n * We are re-implementing the same idea since translations might contain this special character.\n */\nconst NGSP_UNICODE_REGEXP = /\\uE500/g;\nfunction replaceNgsp(value) {\n return value.replace(NGSP_UNICODE_REGEXP, ' ');\n}\n/**\n * Patch a `debug` property getter on top of the existing object.\n *\n * NOTE: always call this method with `ngDevMode && attachDebugObject(...)`\n *\n * @param obj Object to patch\n * @param debugGetter Getter returning a value to patch\n */\nfunction attachDebugGetter(obj, debugGetter) {\n if (ngDevMode) {\n Object.defineProperty(obj, 'debug', { get: debugGetter, enumerable: false });\n }\n else {\n throw new Error('This method should be guarded with `ngDevMode` so that it can be tree shaken in production!');\n }\n}\n/**\n * Create dynamic nodes from i18n translation block.\n *\n * - Text nodes are created synchronously\n * - TNodes are linked into tree lazily\n *\n * @param tView Current `TView`\n * @parentTNodeIndex index to the parent TNode of this i18n block\n * @param lView Current `LView`\n * @param index Index of `ɵɵi18nStart` instruction.\n * @param message Message to translate.\n * @param subTemplateIndex Index into the sub template of message translation. (ie in case of\n * `ngIf`) (-1 otherwise)\n */\nfunction i18nStartFirstCreatePass(tView, parentTNodeIndex, lView, index, message, subTemplateIndex) {\n const rootTNode = getCurrentParentTNode();\n const createOpCodes = [];\n const updateOpCodes = [];\n const existingTNodeStack = [[]];\n if (ngDevMode) {\n attachDebugGetter(createOpCodes, i18nCreateOpCodesToString);\n attachDebugGetter(updateOpCodes, i18nUpdateOpCodesToString);\n }\n message = getTranslationForTemplate(message, subTemplateIndex);\n const msgParts = replaceNgsp(message).split(PH_REGEXP);\n for (let i = 0; i < msgParts.length; i++) {\n let value = msgParts[i];\n if ((i & 1) === 0) {\n // Even indexes are text (including bindings & ICU expressions)\n const parts = i18nParseTextIntoPartsAndICU(value);\n for (let j = 0; j < parts.length; j++) {\n let part = parts[j];\n if ((j & 1) === 0) {\n // `j` is odd therefore `part` is string\n const text = part;\n ngDevMode && assertString(text, 'Parsed ICU part should be string');\n if (text !== '') {\n i18nStartFirstCreatePassProcessTextNode(tView, rootTNode, existingTNodeStack[0], createOpCodes, updateOpCodes, lView, text);\n }\n }\n else {\n // `j` is Even therefor `part` is an `ICUExpression`\n const icuExpression = part;\n // Verify that ICU expression has the right shape. Translations might contain invalid\n // constructions (while original messages were correct), so ICU parsing at runtime may\n // not succeed (thus `icuExpression` remains a string).\n // Note: we intentionally retain the error here by not using `ngDevMode`, because\n // the value can change based on the locale and users aren't guaranteed to hit\n // an invalid string while they're developing.\n if (typeof icuExpression !== 'object') {\n throw new Error(`Unable to parse ICU expression in \"${message}\" message.`);\n }\n const icuContainerTNode = createTNodeAndAddOpCode(tView, rootTNode, existingTNodeStack[0], lView, createOpCodes, ngDevMode ? `ICU ${index}:${icuExpression.mainBinding}` : '', true);\n const icuNodeIndex = icuContainerTNode.index;\n ngDevMode &&\n assertGreaterThanOrEqual(icuNodeIndex, HEADER_OFFSET, 'Index must be in absolute LView offset');\n icuStart(tView, lView, updateOpCodes, parentTNodeIndex, icuExpression, icuNodeIndex);\n }\n }\n }\n else {\n // Odd indexes are placeholders (elements and sub-templates)\n // At this point value is something like: '/#1:2' (originally coming from '�/#1:2�')\n const isClosing = value.charCodeAt(0) === 47 /* CharCode.SLASH */;\n const type = value.charCodeAt(isClosing ? 1 : 0);\n ngDevMode && assertOneOf(type, 42 /* CharCode.STAR */, 35 /* CharCode.HASH */);\n const index = HEADER_OFFSET + Number.parseInt(value.substring((isClosing ? 2 : 1)));\n if (isClosing) {\n existingTNodeStack.shift();\n setCurrentTNode(getCurrentParentTNode(), false);\n }\n else {\n const tNode = createTNodePlaceholder(tView, existingTNodeStack[0], index);\n existingTNodeStack.unshift([]);\n setCurrentTNode(tNode, true);\n }\n }\n }\n tView.data[index] = {\n create: createOpCodes,\n update: updateOpCodes,\n };\n}\n/**\n * Allocate space in i18n Range add create OpCode instruction to create a text or comment node.\n *\n * @param tView Current `TView` needed to allocate space in i18n range.\n * @param rootTNode Root `TNode` of the i18n block. This node determines if the new TNode will be\n * added as part of the `i18nStart` instruction or as part of the `TNode.insertBeforeIndex`.\n * @param existingTNodes internal state for `addTNodeAndUpdateInsertBeforeIndex`.\n * @param lView Current `LView` needed to allocate space in i18n range.\n * @param createOpCodes Array storing `I18nCreateOpCodes` where new opCodes will be added.\n * @param text Text to be added when the `Text` or `Comment` node will be created.\n * @param isICU true if a `Comment` node for ICU (instead of `Text`) node should be created.\n */\nfunction createTNodeAndAddOpCode(tView, rootTNode, existingTNodes, lView, createOpCodes, text, isICU) {\n const i18nNodeIdx = allocExpando(tView, lView, 1, null);\n let opCode = i18nNodeIdx << I18nCreateOpCode.SHIFT;\n let parentTNode = getCurrentParentTNode();\n if (rootTNode === parentTNode) {\n // FIXME(misko): A null `parentTNode` should represent when we fall of the `LView` boundary.\n // (there is no parent), but in some circumstances (because we are inconsistent about how we set\n // `previousOrParentTNode`) it could point to `rootTNode` So this is a work around.\n parentTNode = null;\n }\n if (parentTNode === null) {\n // If we don't have a parent that means that we can eagerly add nodes.\n // If we have a parent than these nodes can't be added now (as the parent has not been created\n // yet) and instead the `parentTNode` is responsible for adding it. See\n // `TNode.insertBeforeIndex`\n opCode |= I18nCreateOpCode.APPEND_EAGERLY;\n }\n if (isICU) {\n opCode |= I18nCreateOpCode.COMMENT;\n ensureIcuContainerVisitorLoaded(loadIcuContainerVisitor);\n }\n createOpCodes.push(opCode, text === null ? '' : text);\n // We store `{{?}}` so that when looking at debug `TNodeType.template` we can see where the\n // bindings are.\n const tNode = createTNodeAtIndex(tView, i18nNodeIdx, isICU ? 32 /* TNodeType.Icu */ : 1 /* TNodeType.Text */, text === null ? (ngDevMode ? '{{?}}' : '') : text, null);\n addTNodeAndUpdateInsertBeforeIndex(existingTNodes, tNode);\n const tNodeIdx = tNode.index;\n setCurrentTNode(tNode, false /* Text nodes are self closing */);\n if (parentTNode !== null && rootTNode !== parentTNode) {\n // We are a child of deeper node (rather than a direct child of `i18nStart` instruction.)\n // We have to make sure to add ourselves to the parent.\n setTNodeInsertBeforeIndex(parentTNode, tNodeIdx);\n }\n return tNode;\n}\n/**\n * Processes text node in i18n block.\n *\n * Text nodes can have:\n * - Create instruction in `createOpCodes` for creating the text node.\n * - Allocate spec for text node in i18n range of `LView`\n * - If contains binding:\n * - bindings => allocate space in i18n range of `LView` to store the binding value.\n * - populate `updateOpCodes` with update instructions.\n *\n * @param tView Current `TView`\n * @param rootTNode Root `TNode` of the i18n block. This node determines if the new TNode will\n * be added as part of the `i18nStart` instruction or as part of the\n * `TNode.insertBeforeIndex`.\n * @param existingTNodes internal state for `addTNodeAndUpdateInsertBeforeIndex`.\n * @param createOpCodes Location where the creation OpCodes will be stored.\n * @param lView Current `LView`\n * @param text The translated text (which may contain binding)\n */\nfunction i18nStartFirstCreatePassProcessTextNode(tView, rootTNode, existingTNodes, createOpCodes, updateOpCodes, lView, text) {\n const hasBinding = text.match(BINDING_REGEXP);\n const tNode = createTNodeAndAddOpCode(tView, rootTNode, existingTNodes, lView, createOpCodes, hasBinding ? null : text, false);\n if (hasBinding) {\n generateBindingUpdateOpCodes(updateOpCodes, text, tNode.index, null, 0, null);\n }\n}\n/**\n * See `i18nAttributes` above.\n */\nfunction i18nAttributesFirstPass(tView, index, values) {\n const previousElement = getCurrentTNode();\n const previousElementIndex = previousElement.index;\n const updateOpCodes = [];\n if (ngDevMode) {\n attachDebugGetter(updateOpCodes, i18nUpdateOpCodesToString);\n }\n if (tView.firstCreatePass && tView.data[index] === null) {\n for (let i = 0; i < values.length; i += 2) {\n const attrName = values[i];\n const message = values[i + 1];\n if (message !== '') {\n // Check if attribute value contains an ICU and throw an error if that's the case.\n // ICUs in element attributes are not supported.\n // Note: we intentionally retain the error here by not using `ngDevMode`, because\n // the `value` can change based on the locale and users aren't guaranteed to hit\n // an invalid string while they're developing.\n if (ICU_REGEXP.test(message)) {\n throw new Error(`ICU expressions are not supported in attributes. Message: \"${message}\".`);\n }\n // i18n attributes that hit this code path are guaranteed to have bindings, because\n // the compiler treats static i18n attributes as regular attribute bindings.\n // Since this may not be the first i18n attribute on this element we need to pass in how\n // many previous bindings there have already been.\n generateBindingUpdateOpCodes(updateOpCodes, message, previousElementIndex, attrName, countBindings(updateOpCodes), null);\n }\n }\n tView.data[index] = updateOpCodes;\n }\n}\n/**\n * Generate the OpCodes to update the bindings of a string.\n *\n * @param updateOpCodes Place where the update opcodes will be stored.\n * @param str The string containing the bindings.\n * @param destinationNode Index of the destination node which will receive the binding.\n * @param attrName Name of the attribute, if the string belongs to an attribute.\n * @param sanitizeFn Sanitization function used to sanitize the string after update, if necessary.\n * @param bindingStart The lView index of the next expression that can be bound via an opCode.\n * @returns The mask value for these bindings\n */\nfunction generateBindingUpdateOpCodes(updateOpCodes, str, destinationNode, attrName, bindingStart, sanitizeFn) {\n ngDevMode &&\n assertGreaterThanOrEqual(destinationNode, HEADER_OFFSET, 'Index must be in absolute LView offset');\n const maskIndex = updateOpCodes.length; // Location of mask\n const sizeIndex = maskIndex + 1; // location of size for skipping\n updateOpCodes.push(null, null); // Alloc space for mask and size\n const startIndex = maskIndex + 2; // location of first allocation.\n if (ngDevMode) {\n attachDebugGetter(updateOpCodes, i18nUpdateOpCodesToString);\n }\n const textParts = str.split(BINDING_REGEXP);\n let mask = 0;\n for (let j = 0; j < textParts.length; j++) {\n const textValue = textParts[j];\n if (j & 1) {\n // Odd indexes are bindings\n const bindingIndex = bindingStart + parseInt(textValue, 10);\n updateOpCodes.push(-1 - bindingIndex);\n mask = mask | toMaskBit(bindingIndex);\n }\n else if (textValue !== '') {\n // Even indexes are text\n updateOpCodes.push(textValue);\n }\n }\n updateOpCodes.push(destinationNode << 2 /* I18nUpdateOpCode.SHIFT_REF */ |\n (attrName ? 1 /* I18nUpdateOpCode.Attr */ : 0 /* I18nUpdateOpCode.Text */));\n if (attrName) {\n updateOpCodes.push(attrName, sanitizeFn);\n }\n updateOpCodes[maskIndex] = mask;\n updateOpCodes[sizeIndex] = updateOpCodes.length - startIndex;\n return mask;\n}\n/**\n * Count the number of bindings in the given `opCodes`.\n *\n * It could be possible to speed this up, by passing the number of bindings found back from\n * `generateBindingUpdateOpCodes()` to `i18nAttributesFirstPass()` but this would then require more\n * complexity in the code and/or transient objects to be created.\n *\n * Since this function is only called once when the template is instantiated, is trivial in the\n * first instance (since `opCodes` will be an empty array), and it is not common for elements to\n * contain multiple i18n bound attributes, it seems like this is a reasonable compromise.\n */\nfunction countBindings(opCodes) {\n let count = 0;\n for (let i = 0; i < opCodes.length; i++) {\n const opCode = opCodes[i];\n // Bindings are negative numbers.\n if (typeof opCode === 'number' && opCode < 0) {\n count++;\n }\n }\n return count;\n}\n/**\n * Convert binding index to mask bit.\n *\n * Each index represents a single bit on the bit-mask. Because bit-mask only has 32 bits, we make\n * the 32nd bit share all masks for all bindings higher than 32. Since it is extremely rare to\n * have more than 32 bindings this will be hit very rarely. The downside of hitting this corner\n * case is that we will execute binding code more often than necessary. (penalty of performance)\n */\nfunction toMaskBit(bindingIndex) {\n return 1 << Math.min(bindingIndex, 31);\n}\nfunction isRootTemplateMessage(subTemplateIndex) {\n return subTemplateIndex === -1;\n}\n/**\n * Removes everything inside the sub-templates of a message.\n */\nfunction removeInnerTemplateTranslation(message) {\n let match;\n let res = '';\n let index = 0;\n let inTemplate = false;\n let tagMatched;\n while ((match = SUBTEMPLATE_REGEXP.exec(message)) !== null) {\n if (!inTemplate) {\n res += message.substring(index, match.index + match[0].length);\n tagMatched = match[1];\n inTemplate = true;\n }\n else {\n if (match[0] === `${MARKER}/*${tagMatched}${MARKER}`) {\n index = match.index;\n inTemplate = false;\n }\n }\n }\n ngDevMode &&\n assertEqual(inTemplate, false, `Tag mismatch: unable to find the end of the sub-template in the translation \"${message}\"`);\n res += message.slice(index);\n return res;\n}\n/**\n * Extracts a part of a message and removes the rest.\n *\n * This method is used for extracting a part of the message associated with a template. A\n * translated message can span multiple templates.\n *\n * Example:\n * ```\n * <div i18n>Translate <span *ngIf>me</span>!</div>\n * ```\n *\n * @param message The message to crop\n * @param subTemplateIndex Index of the sub-template to extract. If undefined it returns the\n * external template and removes all sub-templates.\n */\nfunction getTranslationForTemplate(message, subTemplateIndex) {\n if (isRootTemplateMessage(subTemplateIndex)) {\n // We want the root template message, ignore all sub-templates\n return removeInnerTemplateTranslation(message);\n }\n else {\n // We want a specific sub-template\n const start = message.indexOf(`:${subTemplateIndex}${MARKER}`) + 2 + subTemplateIndex.toString().length;\n const end = message.search(new RegExp(`${MARKER}\\\\/\\\\*\\\\d+:${subTemplateIndex}${MARKER}`));\n return removeInnerTemplateTranslation(message.substring(start, end));\n }\n}\n/**\n * Generate the OpCodes for ICU expressions.\n *\n * @param icuExpression\n * @param index Index where the anchor is stored and an optional `TIcuContainerNode`\n * - `lView[anchorIdx]` points to a `Comment` node representing the anchor for the ICU.\n * - `tView.data[anchorIdx]` points to the `TIcuContainerNode` if ICU is root (`null` otherwise)\n */\nfunction icuStart(tView, lView, updateOpCodes, parentIdx, icuExpression, anchorIdx) {\n ngDevMode && assertDefined(icuExpression, 'ICU expression must be defined');\n let bindingMask = 0;\n const tIcu = {\n type: icuExpression.type,\n currentCaseLViewIndex: allocExpando(tView, lView, 1, null),\n anchorIdx,\n cases: [],\n create: [],\n remove: [],\n update: []\n };\n addUpdateIcuSwitch(updateOpCodes, icuExpression, anchorIdx);\n setTIcu(tView, anchorIdx, tIcu);\n const values = icuExpression.values;\n for (let i = 0; i < values.length; i++) {\n // Each value is an array of strings & other ICU expressions\n const valueArr = values[i];\n const nestedIcus = [];\n for (let j = 0; j < valueArr.length; j++) {\n const value = valueArr[j];\n if (typeof value !== 'string') {\n // It is an nested ICU expression\n const icuIndex = nestedIcus.push(value) - 1;\n // Replace nested ICU expression by a comment node\n valueArr[j] = `<!--�${icuIndex}�-->`;\n }\n }\n bindingMask = parseIcuCase(tView, tIcu, lView, updateOpCodes, parentIdx, icuExpression.cases[i], valueArr.join(''), nestedIcus) |\n bindingMask;\n }\n if (bindingMask) {\n addUpdateIcuUpdate(updateOpCodes, bindingMask, anchorIdx);\n }\n}\n/**\n * Parses text containing an ICU expression and produces a JSON object for it.\n * Original code from closure library, modified for Angular.\n *\n * @param pattern Text containing an ICU expression that needs to be parsed.\n *\n */\nfunction parseICUBlock(pattern) {\n const cases = [];\n const values = [];\n let icuType = 1 /* IcuType.plural */;\n let mainBinding = 0;\n pattern = pattern.replace(ICU_BLOCK_REGEXP, function (str, binding, type) {\n if (type === 'select') {\n icuType = 0 /* IcuType.select */;\n }\n else {\n icuType = 1 /* IcuType.plural */;\n }\n mainBinding = parseInt(binding.slice(1), 10);\n return '';\n });\n const parts = i18nParseTextIntoPartsAndICU(pattern);\n // Looking for (key block)+ sequence. One of the keys has to be \"other\".\n for (let pos = 0; pos < parts.length;) {\n let key = parts[pos++].trim();\n if (icuType === 1 /* IcuType.plural */) {\n // Key can be \"=x\", we just want \"x\"\n key = key.replace(/\\s*(?:=)?(\\w+)\\s*/, '$1');\n }\n if (key.length) {\n cases.push(key);\n }\n const blocks = i18nParseTextIntoPartsAndICU(parts[pos++]);\n if (cases.length > values.length) {\n values.push(blocks);\n }\n }\n // TODO(ocombe): support ICU expressions in attributes, see #21615\n return { type: icuType, mainBinding: mainBinding, cases, values };\n}\n/**\n * Breaks pattern into strings and top level {...} blocks.\n * Can be used to break a message into text and ICU expressions, or to break an ICU expression\n * into keys and cases. Original code from closure library, modified for Angular.\n *\n * @param pattern (sub)Pattern to be broken.\n * @returns An `Array<string|IcuExpression>` where:\n * - odd positions: `string` => text between ICU expressions\n * - even positions: `ICUExpression` => ICU expression parsed into `ICUExpression` record.\n */\nfunction i18nParseTextIntoPartsAndICU(pattern) {\n if (!pattern) {\n return [];\n }\n let prevPos = 0;\n const braceStack = [];\n const results = [];\n const braces = /[{}]/g;\n // lastIndex doesn't get set to 0 so we have to.\n braces.lastIndex = 0;\n let match;\n while (match = braces.exec(pattern)) {\n const pos = match.index;\n if (match[0] == '}') {\n braceStack.pop();\n if (braceStack.length == 0) {\n // End of the block.\n const block = pattern.substring(prevPos, pos);\n if (ICU_BLOCK_REGEXP.test(block)) {\n results.push(parseICUBlock(block));\n }\n else {\n results.push(block);\n }\n prevPos = pos + 1;\n }\n }\n else {\n if (braceStack.length == 0) {\n const substring = pattern.substring(prevPos, pos);\n results.push(substring);\n prevPos = pos + 1;\n }\n braceStack.push('{');\n }\n }\n const substring = pattern.substring(prevPos);\n results.push(substring);\n return results;\n}\n/**\n * Parses a node, its children and its siblings, and generates the mutate & update OpCodes.\n *\n */\nfunction parseIcuCase(tView, tIcu, lView, updateOpCodes, parentIdx, caseName, unsafeCaseHtml, nestedIcus) {\n const create = [];\n const remove = [];\n const update = [];\n if (ngDevMode) {\n attachDebugGetter(create, icuCreateOpCodesToString);\n attachDebugGetter(remove, i18nRemoveOpCodesToString);\n attachDebugGetter(update, i18nUpdateOpCodesToString);\n }\n tIcu.cases.push(caseName);\n tIcu.create.push(create);\n tIcu.remove.push(remove);\n tIcu.update.push(update);\n const inertBodyHelper = getInertBodyHelper(getDocument());\n const inertBodyElement = inertBodyHelper.getInertBodyElement(unsafeCaseHtml);\n ngDevMode && assertDefined(inertBodyElement, 'Unable to generate inert body element');\n const inertRootNode = getTemplateContent(inertBodyElement) || inertBodyElement;\n if (inertRootNode) {\n return walkIcuTree(tView, tIcu, lView, updateOpCodes, create, remove, update, inertRootNode, parentIdx, nestedIcus, 0);\n }\n else {\n return 0;\n }\n}\nfunction walkIcuTree(tView, tIcu, lView, sharedUpdateOpCodes, create, remove, update, parentNode, parentIdx, nestedIcus, depth) {\n let bindingMask = 0;\n let currentNode = parentNode.firstChild;\n while (currentNode) {\n const newIndex = allocExpando(tView, lView, 1, null);\n switch (currentNode.nodeType) {\n case Node.ELEMENT_NODE:\n const element = currentNode;\n const tagName = element.tagName.toLowerCase();\n if (VALID_ELEMENTS.hasOwnProperty(tagName)) {\n addCreateNodeAndAppend(create, ELEMENT_MARKER, tagName, parentIdx, newIndex);\n tView.data[newIndex] = tagName;\n const elAttrs = element.attributes;\n for (let i = 0; i < elAttrs.length; i++) {\n const attr = elAttrs.item(i);\n const lowerAttrName = attr.name.toLowerCase();\n const hasBinding = !!attr.value.match(BINDING_REGEXP);\n // we assume the input string is safe, unless it's using a binding\n if (hasBinding) {\n if (VALID_ATTRS.hasOwnProperty(lowerAttrName)) {\n if (URI_ATTRS[lowerAttrName]) {\n generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, _sanitizeUrl);\n }\n else {\n generateBindingUpdateOpCodes(update, attr.value, newIndex, attr.name, 0, null);\n }\n }\n else {\n ngDevMode &&\n console.warn(`WARNING: ignoring unsafe attribute value ` +\n `${lowerAttrName} on element ${tagName} ` +\n `(see ${XSS_SECURITY_URL})`);\n }\n }\n else {\n addCreateAttribute(create, newIndex, attr);\n }\n }\n // Parse the children of this node (if any)\n bindingMask = walkIcuTree(tView, tIcu, lView, sharedUpdateOpCodes, create, remove, update, currentNode, newIndex, nestedIcus, depth + 1) |\n bindingMask;\n addRemoveNode(remove, newIndex, depth);\n }\n break;\n case Node.TEXT_NODE:\n const value = currentNode.textContent || '';\n const hasBinding = value.match(BINDING_REGEXP);\n addCreateNodeAndAppend(create, null, hasBinding ? '' : value, parentIdx, newIndex);\n addRemoveNode(remove, newIndex, depth);\n if (hasBinding) {\n bindingMask =\n generateBindingUpdateOpCodes(update, value, newIndex, null, 0, null) | bindingMask;\n }\n break;\n case Node.COMMENT_NODE:\n // Check if the comment node is a placeholder for a nested ICU\n const isNestedIcu = NESTED_ICU.exec(currentNode.textContent || '');\n if (isNestedIcu) {\n const nestedIcuIndex = parseInt(isNestedIcu[1], 10);\n const icuExpression = nestedIcus[nestedIcuIndex];\n // Create the comment node that will anchor the ICU expression\n addCreateNodeAndAppend(create, ICU_MARKER, ngDevMode ? `nested ICU ${nestedIcuIndex}` : '', parentIdx, newIndex);\n icuStart(tView, lView, sharedUpdateOpCodes, parentIdx, icuExpression, newIndex);\n addRemoveNestedIcu(remove, newIndex, depth);\n }\n break;\n }\n currentNode = currentNode.nextSibling;\n }\n return bindingMask;\n}\nfunction addRemoveNode(remove, index, depth) {\n if (depth === 0) {\n remove.push(index);\n }\n}\nfunction addRemoveNestedIcu(remove, index, depth) {\n if (depth === 0) {\n remove.push(~index); // remove ICU at `index`\n remove.push(index); // remove ICU comment at `index`\n }\n}\nfunction addUpdateIcuSwitch(update, icuExpression, index) {\n update.push(toMaskBit(icuExpression.mainBinding), 2, -1 - icuExpression.mainBinding, index << 2 /* I18nUpdateOpCode.SHIFT_REF */ | 2 /* I18nUpdateOpCode.IcuSwitch */);\n}\nfunction addUpdateIcuUpdate(update, bindingMask, index) {\n update.push(bindingMask, 1, index << 2 /* I18nUpdateOpCode.SHIFT_REF */ | 3 /* I18nUpdateOpCode.IcuUpdate */);\n}\nfunction addCreateNodeAndAppend(create, marker, text, appendToParentIdx, createAtIdx) {\n if (marker !== null) {\n create.push(marker);\n }\n create.push(text, createAtIdx, icuCreateOpCode(0 /* IcuCreateOpCode.AppendChild */, appendToParentIdx, createAtIdx));\n}\nfunction addCreateAttribute(create, newIndex, attr) {\n create.push(newIndex << 1 /* IcuCreateOpCode.SHIFT_REF */ | 1 /* IcuCreateOpCode.Attr */, attr.name, attr.value);\n}\n\n// i18nPostprocess consts\nconst ROOT_TEMPLATE_ID = 0;\nconst PP_MULTI_VALUE_PLACEHOLDERS_REGEXP = /\\[(�.+?�?)\\]/;\nconst PP_PLACEHOLDERS_REGEXP = /\\[(�.+?�?)\\]|(�\\/?\\*\\d+:\\d+�)/g;\nconst PP_ICU_VARS_REGEXP = /({\\s*)(VAR_(PLURAL|SELECT)(_\\d+)?)(\\s*,)/g;\nconst PP_ICU_PLACEHOLDERS_REGEXP = /{([A-Z0-9_]+)}/g;\nconst PP_ICUS_REGEXP = /�I18N_EXP_(ICU(_\\d+)?)�/g;\nconst PP_CLOSE_TEMPLATE_REGEXP = /\\/\\*/;\nconst PP_TEMPLATE_ID_REGEXP = /\\d+\\:(\\d+)/;\n/**\n * Handles message string post-processing for internationalization.\n *\n * Handles message string post-processing by transforming it from intermediate\n * format (that might contain some markers that we need to replace) to the final\n * form, consumable by i18nStart instruction. Post processing steps include:\n *\n * 1. Resolve all multi-value cases (like [�*1:1��#2:1�|�#4:1�|�5�])\n * 2. Replace all ICU vars (like \"VAR_PLURAL\")\n * 3. Replace all placeholders used inside ICUs in a form of {PLACEHOLDER}\n * 4. Replace all ICU references with corresponding values (like �ICU_EXP_ICU_1�)\n * in case multiple ICUs have the same placeholder name\n *\n * @param message Raw translation string for post processing\n * @param replacements Set of replacements that should be applied\n *\n * @returns Transformed string that can be consumed by i18nStart instruction\n *\n * @codeGenApi\n */\nfunction i18nPostprocess(message, replacements = {}) {\n /**\n * Step 1: resolve all multi-value placeholders like [�#5�|�*1:1��#2:1�|�#4:1�]\n *\n * Note: due to the way we process nested templates (BFS), multi-value placeholders are typically\n * grouped by templates, for example: [�#5�|�#6�|�#1:1�|�#3:2�] where �#5� and �#6� belong to root\n * template, �#1:1� belong to nested template with index 1 and �#1:2� - nested template with index\n * 3. However in real templates the order might be different: i.e. �#1:1� and/or �#3:2� may go in\n * front of �#6�. The post processing step restores the right order by keeping track of the\n * template id stack and looks for placeholders that belong to the currently active template.\n */\n let result = message;\n if (PP_MULTI_VALUE_PLACEHOLDERS_REGEXP.test(message)) {\n const matches = {};\n const templateIdsStack = [ROOT_TEMPLATE_ID];\n result = result.replace(PP_PLACEHOLDERS_REGEXP, (m, phs, tmpl) => {\n const content = phs || tmpl;\n const placeholders = matches[content] || [];\n if (!placeholders.length) {\n content.split('|').forEach((placeholder) => {\n const match = placeholder.match(PP_TEMPLATE_ID_REGEXP);\n const templateId = match ? parseInt(match[1], 10) : ROOT_TEMPLATE_ID;\n const isCloseTemplateTag = PP_CLOSE_TEMPLATE_REGEXP.test(placeholder);\n placeholders.push([templateId, isCloseTemplateTag, placeholder]);\n });\n matches[content] = placeholders;\n }\n if (!placeholders.length) {\n throw new Error(`i18n postprocess: unmatched placeholder - ${content}`);\n }\n const currentTemplateId = templateIdsStack[templateIdsStack.length - 1];\n let idx = 0;\n // find placeholder index that matches current template id\n for (let i = 0; i < placeholders.length; i++) {\n if (placeholders[i][0] === currentTemplateId) {\n idx = i;\n break;\n }\n }\n // update template id stack based on the current tag extracted\n const [templateId, isCloseTemplateTag, placeholder] = placeholders[idx];\n if (isCloseTemplateTag) {\n templateIdsStack.pop();\n }\n else if (currentTemplateId !== templateId) {\n templateIdsStack.push(templateId);\n }\n // remove processed tag from the list\n placeholders.splice(idx, 1);\n return placeholder;\n });\n }\n // return current result if no replacements specified\n if (!Object.keys(replacements).length) {\n return result;\n }\n /**\n * Step 2: replace all ICU vars (like \"VAR_PLURAL\")\n */\n result = result.replace(PP_ICU_VARS_REGEXP, (match, start, key, _type, _idx, end) => {\n return replacements.hasOwnProperty(key) ? `${start}${replacements[key]}${end}` : match;\n });\n /**\n * Step 3: replace all placeholders used inside ICUs in a form of {PLACEHOLDER}\n */\n result = result.replace(PP_ICU_PLACEHOLDERS_REGEXP, (match, key) => {\n return replacements.hasOwnProperty(key) ? replacements[key] : match;\n });\n /**\n * Step 4: replace all ICU references with corresponding values (like �ICU_EXP_ICU_1�) in case\n * multiple ICUs have the same placeholder name\n */\n result = result.replace(PP_ICUS_REGEXP, (match, key) => {\n if (replacements.hasOwnProperty(key)) {\n const list = replacements[key];\n if (!list.length) {\n throw new Error(`i18n postprocess: unmatched ICU - ${match} with key: ${key}`);\n }\n return list.shift();\n }\n return match;\n });\n return result;\n}\n\n/**\n * Marks a block of text as translatable.\n *\n * The instructions `i18nStart` and `i18nEnd` mark the translation block in the template.\n * The translation `message` is the value which is locale specific. The translation string may\n * contain placeholders which associate inner elements and sub-templates within the translation.\n *\n * The translation `message` placeholders are:\n * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be\n * interpolated into. The placeholder `index` points to the expression binding index. An optional\n * `block` that matches the sub-template in which it was declared.\n * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning\n * and end of DOM element that were embedded in the original translation block. The placeholder\n * `index` points to the element index in the template instructions set. An optional `block` that\n * matches the sub-template in which it was declared.\n * - `�*{index}:{block}�`/`�/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be\n * split up and translated separately in each angular template function. The `index` points to the\n * `template` instruction index. A `block` that matches the sub-template in which it was declared.\n *\n * @param index A unique index of the translation in the static block.\n * @param messageIndex An index of the translation message from the `def.consts` array.\n * @param subTemplateIndex Optional sub-template index in the `message`.\n *\n * @codeGenApi\n */\nfunction ɵɵi18nStart(index, messageIndex, subTemplateIndex = -1) {\n const tView = getTView();\n const lView = getLView();\n const adjustedIndex = HEADER_OFFSET + index;\n ngDevMode && assertDefined(tView, `tView should be defined`);\n const message = getConstant(tView.consts, messageIndex);\n const parentTNode = getCurrentParentTNode();\n if (tView.firstCreatePass) {\n i18nStartFirstCreatePass(tView, parentTNode === null ? 0 : parentTNode.index, lView, adjustedIndex, message, subTemplateIndex);\n }\n // Set a flag that this LView has i18n blocks.\n // The flag is later used to determine whether this component should\n // be hydrated (currently hydration is not supported for i18n blocks).\n if (tView.type === 2 /* TViewType.Embedded */) {\n // Annotate host component's LView (not embedded view's LView),\n // since hydration can be skipped on per-component basis only.\n const componentLView = lView[DECLARATION_COMPONENT_VIEW];\n componentLView[FLAGS] |= 32 /* LViewFlags.HasI18n */;\n }\n else {\n lView[FLAGS] |= 32 /* LViewFlags.HasI18n */;\n }\n const tI18n = tView.data[adjustedIndex];\n const sameViewParentTNode = parentTNode === lView[T_HOST] ? null : parentTNode;\n const parentRNode = getClosestRElement(tView, sameViewParentTNode, lView);\n // If `parentTNode` is an `ElementContainer` than it has `<!--ng-container--->`.\n // When we do inserts we have to make sure to insert in front of `<!--ng-container--->`.\n const insertInFrontOf = parentTNode && (parentTNode.type & 8 /* TNodeType.ElementContainer */) ?\n lView[parentTNode.index] :\n null;\n applyCreateOpCodes(lView, tI18n.create, parentRNode, insertInFrontOf);\n setInI18nBlock(true);\n}\n/**\n * Translates a translation block marked by `i18nStart` and `i18nEnd`. It inserts the text/ICU nodes\n * into the render tree, moves the placeholder nodes and removes the deleted nodes.\n *\n * @codeGenApi\n */\nfunction ɵɵi18nEnd() {\n setInI18nBlock(false);\n}\n/**\n *\n * Use this instruction to create a translation block that doesn't contain any placeholder.\n * It calls both {@link i18nStart} and {@link i18nEnd} in one instruction.\n *\n * The translation `message` is the value which is locale specific. The translation string may\n * contain placeholders which associate inner elements and sub-templates within the translation.\n *\n * The translation `message` placeholders are:\n * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be\n * interpolated into. The placeholder `index` points to the expression binding index. An optional\n * `block` that matches the sub-template in which it was declared.\n * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning\n * and end of DOM element that were embedded in the original translation block. The placeholder\n * `index` points to the element index in the template instructions set. An optional `block` that\n * matches the sub-template in which it was declared.\n * - `�*{index}:{block}�`/`�/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be\n * split up and translated separately in each angular template function. The `index` points to the\n * `template` instruction index. A `block` that matches the sub-template in which it was declared.\n *\n * @param index A unique index of the translation in the static block.\n * @param messageIndex An index of the translation message from the `def.consts` array.\n * @param subTemplateIndex Optional sub-template index in the `message`.\n *\n * @codeGenApi\n */\nfunction ɵɵi18n(index, messageIndex, subTemplateIndex) {\n ɵɵi18nStart(index, messageIndex, subTemplateIndex);\n ɵɵi18nEnd();\n}\n/**\n * Marks a list of attributes as translatable.\n *\n * @param index A unique index in the static block\n * @param values\n *\n * @codeGenApi\n */\nfunction ɵɵi18nAttributes(index, attrsIndex) {\n const tView = getTView();\n ngDevMode && assertDefined(tView, `tView should be defined`);\n const attrs = getConstant(tView.consts, attrsIndex);\n i18nAttributesFirstPass(tView, index + HEADER_OFFSET, attrs);\n}\n/**\n * Stores the values of the bindings during each update cycle in order to determine if we need to\n * update the translated nodes.\n *\n * @param value The binding's value\n * @returns This function returns itself so that it may be chained\n * (e.g. `i18nExp(ctx.name)(ctx.title)`)\n *\n * @codeGenApi\n */\nfunction ɵɵi18nExp(value) {\n const lView = getLView();\n setMaskBit(bindingUpdated(lView, nextBindingIndex(), value));\n return ɵɵi18nExp;\n}\n/**\n * Updates a translation block or an i18n attribute when the bindings have changed.\n *\n * @param index Index of either {@link i18nStart} (translation block) or {@link i18nAttributes}\n * (i18n attribute) on which it should update the content.\n *\n * @codeGenApi\n */\nfunction ɵɵi18nApply(index) {\n applyI18n(getTView(), getLView(), index + HEADER_OFFSET);\n}\n/**\n * Handles message string post-processing for internationalization.\n *\n * Handles message string post-processing by transforming it from intermediate\n * format (that might contain some markers that we need to replace) to the final\n * form, consumable by i18nStart instruction. Post processing steps include:\n *\n * 1. Resolve all multi-value cases (like [�*1:1��#2:1�|�#4:1�|�5�])\n * 2. Replace all ICU vars (like \"VAR_PLURAL\")\n * 3. Replace all placeholders used inside ICUs in a form of {PLACEHOLDER}\n * 4. Replace all ICU references with corresponding values (like �ICU_EXP_ICU_1�)\n * in case multiple ICUs have the same placeholder name\n *\n * @param message Raw translation string for post processing\n * @param replacements Set of replacements that should be applied\n *\n * @returns Transformed string that can be consumed by i18nStart instruction\n *\n * @codeGenApi\n */\nfunction ɵɵi18nPostprocess(message, replacements = {}) {\n return i18nPostprocess(message, replacements);\n}\n\n/**\n * Creates runtime data structures for `{#defer}` blocks.\n *\n * @param index The index of the defer block in the data array\n * @param deferredDepsFn Function that contains dependencies for this defer block\n *\n * @codeGenApi\n */\nfunction ɵɵdefer(index, deferredDepsFn) {\n // TODO: implement runtime logic.\n}\n\n/*\n * This file re-exports all symbols contained in this directory.\n *\n * Why is this file not `index.ts`?\n *\n * There seems to be an inconsistent path resolution of an `index.ts` file\n * when only the parent directory is referenced. This could be due to the\n * node module resolution configuration differing from rollup and/or typescript.\n *\n * With commit\n * https://github.com/angular/angular/commit/d5e3f2c64bd13ce83e7c70788b7fc514ca4a9918\n * the `instructions.ts` file was moved to `instructions/instructions.ts` and an\n * `index.ts` file was used to re-export everything. Having had file names that were\n * importing from `instructions' directly (not the from the sub file or the `index.ts`\n * file) caused strange CI issues. `index.ts` had to be renamed to `all.ts` for this\n * to work.\n *\n * Jira Issue = FW-1184\n */\n\n/**\n * Resolves the providers which are defined in the DirectiveDef.\n *\n * When inserting the tokens and the factories in their respective arrays, we can assume that\n * this method is called first for the component (if any), and then for other directives on the same\n * node.\n * As a consequence,the providers are always processed in that order:\n * 1) The view providers of the component\n * 2) The providers of the component\n * 3) The providers of the other directives\n * This matches the structure of the injectables arrays of a view (for each node).\n * So the tokens and the factories can be pushed at the end of the arrays, except\n * in one case for multi providers.\n *\n * @param def the directive definition\n * @param providers: Array of `providers`.\n * @param viewProviders: Array of `viewProviders`.\n */\nfunction providersResolver(def, providers, viewProviders) {\n const tView = getTView();\n if (tView.firstCreatePass) {\n const isComponent = isComponentDef(def);\n // The list of view providers is processed first, and the flags are updated\n resolveProvider(viewProviders, tView.data, tView.blueprint, isComponent, true);\n // Then, the list of providers is processed, and the flags are updated\n resolveProvider(providers, tView.data, tView.blueprint, isComponent, false);\n }\n}\n/**\n * Resolves a provider and publishes it to the DI system.\n */\nfunction resolveProvider(provider, tInjectables, lInjectablesBlueprint, isComponent, isViewProvider) {\n provider = resolveForwardRef(provider);\n if (Array.isArray(provider)) {\n // Recursively call `resolveProvider`\n // Recursion is OK in this case because this code will not be in hot-path once we implement\n // cloning of the initial state.\n for (let i = 0; i < provider.length; i++) {\n resolveProvider(provider[i], tInjectables, lInjectablesBlueprint, isComponent, isViewProvider);\n }\n }\n else {\n const tView = getTView();\n const lView = getLView();\n const tNode = getCurrentTNode();\n let token = isTypeProvider(provider) ? provider : resolveForwardRef(provider.provide);\n const providerFactory = providerToFactory(provider);\n if (ngDevMode) {\n const injector = new NodeInjector(tNode, lView);\n runInInjectorProfilerContext(injector, token, () => {\n emitProviderConfiguredEvent(provider, isViewProvider);\n });\n }\n const beginIndex = tNode.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;\n const endIndex = tNode.directiveStart;\n const cptViewProvidersCount = tNode.providerIndexes >> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */;\n if (isTypeProvider(provider) || !provider.multi) {\n // Single provider case: the factory is created and pushed immediately\n const factory = new NodeInjectorFactory(providerFactory, isViewProvider, ɵɵdirectiveInject);\n const existingFactoryIndex = indexOf(token, tInjectables, isViewProvider ? beginIndex : beginIndex + cptViewProvidersCount, endIndex);\n if (existingFactoryIndex === -1) {\n diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, token);\n registerDestroyHooksIfSupported(tView, provider, tInjectables.length);\n tInjectables.push(token);\n tNode.directiveStart++;\n tNode.directiveEnd++;\n if (isViewProvider) {\n tNode.providerIndexes += 1048576 /* TNodeProviderIndexes.CptViewProvidersCountShifter */;\n }\n lInjectablesBlueprint.push(factory);\n lView.push(factory);\n }\n else {\n lInjectablesBlueprint[existingFactoryIndex] = factory;\n lView[existingFactoryIndex] = factory;\n }\n }\n else {\n // Multi provider case:\n // We create a multi factory which is going to aggregate all the values.\n // Since the output of such a factory depends on content or view injection,\n // we create two of them, which are linked together.\n //\n // The first one (for view providers) is always in the first block of the injectables array,\n // and the second one (for providers) is always in the second block.\n // This is important because view providers have higher priority. When a multi token\n // is being looked up, the view providers should be found first.\n // Note that it is not possible to have a multi factory in the third block (directive block).\n //\n // The algorithm to process multi providers is as follows:\n // 1) If the multi provider comes from the `viewProviders` of the component:\n // a) If the special view providers factory doesn't exist, it is created and pushed.\n // b) Else, the multi provider is added to the existing multi factory.\n // 2) If the multi provider comes from the `providers` of the component or of another\n // directive:\n // a) If the multi factory doesn't exist, it is created and provider pushed into it.\n // It is also linked to the multi factory for view providers, if it exists.\n // b) Else, the multi provider is added to the existing multi factory.\n const existingProvidersFactoryIndex = indexOf(token, tInjectables, beginIndex + cptViewProvidersCount, endIndex);\n const existingViewProvidersFactoryIndex = indexOf(token, tInjectables, beginIndex, beginIndex + cptViewProvidersCount);\n const doesProvidersFactoryExist = existingProvidersFactoryIndex >= 0 &&\n lInjectablesBlueprint[existingProvidersFactoryIndex];\n const doesViewProvidersFactoryExist = existingViewProvidersFactoryIndex >= 0 &&\n lInjectablesBlueprint[existingViewProvidersFactoryIndex];\n if (isViewProvider && !doesViewProvidersFactoryExist ||\n !isViewProvider && !doesProvidersFactoryExist) {\n // Cases 1.a and 2.a\n diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, token);\n const factory = multiFactory(isViewProvider ? multiViewProvidersFactoryResolver : multiProvidersFactoryResolver, lInjectablesBlueprint.length, isViewProvider, isComponent, providerFactory);\n if (!isViewProvider && doesViewProvidersFactoryExist) {\n lInjectablesBlueprint[existingViewProvidersFactoryIndex].providerFactory = factory;\n }\n registerDestroyHooksIfSupported(tView, provider, tInjectables.length, 0);\n tInjectables.push(token);\n tNode.directiveStart++;\n tNode.directiveEnd++;\n if (isViewProvider) {\n tNode.providerIndexes += 1048576 /* TNodeProviderIndexes.CptViewProvidersCountShifter */;\n }\n lInjectablesBlueprint.push(factory);\n lView.push(factory);\n }\n else {\n // Cases 1.b and 2.b\n const indexInFactory = multiFactoryAdd(lInjectablesBlueprint[isViewProvider ? existingViewProvidersFactoryIndex :\n existingProvidersFactoryIndex], providerFactory, !isViewProvider && isComponent);\n registerDestroyHooksIfSupported(tView, provider, existingProvidersFactoryIndex > -1 ? existingProvidersFactoryIndex :\n existingViewProvidersFactoryIndex, indexInFactory);\n }\n if (!isViewProvider && isComponent && doesViewProvidersFactoryExist) {\n lInjectablesBlueprint[existingViewProvidersFactoryIndex].componentProviders++;\n }\n }\n }\n}\n/**\n * Registers the `ngOnDestroy` hook of a provider, if the provider supports destroy hooks.\n * @param tView `TView` in which to register the hook.\n * @param provider Provider whose hook should be registered.\n * @param contextIndex Index under which to find the context for the hook when it's being invoked.\n * @param indexInFactory Only required for `multi` providers. Index of the provider in the multi\n * provider factory.\n */\nfunction registerDestroyHooksIfSupported(tView, provider, contextIndex, indexInFactory) {\n const providerIsTypeProvider = isTypeProvider(provider);\n const providerIsClassProvider = isClassProvider(provider);\n if (providerIsTypeProvider || providerIsClassProvider) {\n // Resolve forward references as `useClass` can hold a forward reference.\n const classToken = providerIsClassProvider ? resolveForwardRef(provider.useClass) : provider;\n const prototype = classToken.prototype;\n const ngOnDestroy = prototype.ngOnDestroy;\n if (ngOnDestroy) {\n const hooks = tView.destroyHooks || (tView.destroyHooks = []);\n if (!providerIsTypeProvider && provider.multi) {\n ngDevMode &&\n assertDefined(indexInFactory, 'indexInFactory when registering multi factory destroy hook');\n const existingCallbacksIndex = hooks.indexOf(contextIndex);\n if (existingCallbacksIndex === -1) {\n hooks.push(contextIndex, [indexInFactory, ngOnDestroy]);\n }\n else {\n hooks[existingCallbacksIndex + 1].push(indexInFactory, ngOnDestroy);\n }\n }\n else {\n hooks.push(contextIndex, ngOnDestroy);\n }\n }\n }\n}\n/**\n * Add a factory in a multi factory.\n * @returns Index at which the factory was inserted.\n */\nfunction multiFactoryAdd(multiFactory, factory, isComponentProvider) {\n if (isComponentProvider) {\n multiFactory.componentProviders++;\n }\n return multiFactory.multi.push(factory) - 1;\n}\n/**\n * Returns the index of item in the array, but only in the begin to end range.\n */\nfunction indexOf(item, arr, begin, end) {\n for (let i = begin; i < end; i++) {\n if (arr[i] === item)\n return i;\n }\n return -1;\n}\n/**\n * Use this with `multi` `providers`.\n */\nfunction multiProvidersFactoryResolver(_, tData, lData, tNode) {\n return multiResolve(this.multi, []);\n}\n/**\n * Use this with `multi` `viewProviders`.\n *\n * This factory knows how to concatenate itself with the existing `multi` `providers`.\n */\nfunction multiViewProvidersFactoryResolver(_, tData, lView, tNode) {\n const factories = this.multi;\n let result;\n if (this.providerFactory) {\n const componentCount = this.providerFactory.componentProviders;\n const multiProviders = getNodeInjectable(lView, lView[TVIEW], this.providerFactory.index, tNode);\n // Copy the section of the array which contains `multi` `providers` from the component\n result = multiProviders.slice(0, componentCount);\n // Insert the `viewProvider` instances.\n multiResolve(factories, result);\n // Copy the section of the array which contains `multi` `providers` from other directives\n for (let i = componentCount; i < multiProviders.length; i++) {\n result.push(multiProviders[i]);\n }\n }\n else {\n result = [];\n // Insert the `viewProvider` instances.\n multiResolve(factories, result);\n }\n return result;\n}\n/**\n * Maps an array of factories into an array of values.\n */\nfunction multiResolve(factories, result) {\n for (let i = 0; i < factories.length; i++) {\n const factory = factories[i];\n result.push(factory());\n }\n return result;\n}\n/**\n * Creates a multi factory.\n */\nfunction multiFactory(factoryFn, index, isViewProvider, isComponent, f) {\n const factory = new NodeInjectorFactory(factoryFn, isViewProvider, ɵɵdirectiveInject);\n factory.multi = [];\n factory.index = index;\n factory.componentProviders = 0;\n multiFactoryAdd(factory, f, isComponent && !isViewProvider);\n return factory;\n}\n\n/**\n * This feature resolves the providers of a directive (or component),\n * and publish them into the DI system, making it visible to others for injection.\n *\n * For example:\n * ```ts\n * class ComponentWithProviders {\n * constructor(private greeter: GreeterDE) {}\n *\n * static ɵcmp = defineComponent({\n * type: ComponentWithProviders,\n * selectors: [['component-with-providers']],\n * factory: () => new ComponentWithProviders(directiveInject(GreeterDE as any)),\n * decls: 1,\n * vars: 1,\n * template: function(fs: RenderFlags, ctx: ComponentWithProviders) {\n * if (fs & RenderFlags.Create) {\n * ɵɵtext(0);\n * }\n * if (fs & RenderFlags.Update) {\n * ɵɵtextInterpolate(ctx.greeter.greet());\n * }\n * },\n * features: [ɵɵProvidersFeature([GreeterDE])]\n * });\n * }\n * ```\n *\n * @param definition\n *\n * @codeGenApi\n */\nfunction ɵɵProvidersFeature(providers, viewProviders = []) {\n return (definition) => {\n definition.providersResolver =\n (def, processProvidersFn) => {\n return providersResolver(def, //\n processProvidersFn ? processProvidersFn(providers) : providers, //\n viewProviders);\n };\n };\n}\n\n/**\n * Represents an instance of an `NgModule` created by an `NgModuleFactory`.\n * Provides access to the `NgModule` instance and related objects.\n *\n * @publicApi\n */\nclass NgModuleRef$1 {\n}\n/**\n * @publicApi\n *\n * @deprecated\n * This class was mostly used as a part of ViewEngine-based JIT API and is no longer needed in Ivy\n * JIT mode. See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes)\n * for additional context. Angular provides APIs that accept NgModule classes directly (such as\n * [PlatformRef.bootstrapModule](api/core/PlatformRef#bootstrapModule) and\n * [createNgModule](api/core/createNgModule)), consider switching to those APIs instead of\n * using factory-based ones.\n */\nclass NgModuleFactory$1 {\n}\n\n/**\n * Returns a new NgModuleRef instance based on the NgModule class and parent injector provided.\n *\n * @param ngModule NgModule class.\n * @param parentInjector Optional injector instance to use as a parent for the module injector. If\n * not provided, `NullInjector` will be used instead.\n * @returns NgModuleRef that represents an NgModule instance.\n *\n * @publicApi\n */\nfunction createNgModule(ngModule, parentInjector) {\n return new NgModuleRef(ngModule, parentInjector ?? null, []);\n}\n/**\n * The `createNgModule` function alias for backwards-compatibility.\n * Please avoid using it directly and use `createNgModule` instead.\n *\n * @deprecated Use `createNgModule` instead.\n */\nconst createNgModuleRef = createNgModule;\nclass NgModuleRef extends NgModuleRef$1 {\n constructor(ngModuleType, _parent, additionalProviders) {\n super();\n this._parent = _parent;\n // tslint:disable-next-line:require-internal-with-underscore\n this._bootstrapComponents = [];\n this.destroyCbs = [];\n // When bootstrapping a module we have a dependency graph that looks like this:\n // ApplicationRef -> ComponentFactoryResolver -> NgModuleRef. The problem is that if the\n // module being resolved tries to inject the ComponentFactoryResolver, it'll create a\n // circular dependency which will result in a runtime error, because the injector doesn't\n // exist yet. We work around the issue by creating the ComponentFactoryResolver ourselves\n // and providing it, rather than letting the injector resolve it.\n this.componentFactoryResolver = new ComponentFactoryResolver(this);\n const ngModuleDef = getNgModuleDef(ngModuleType);\n ngDevMode &&\n assertDefined(ngModuleDef, `NgModule '${stringify(ngModuleType)}' is not a subtype of 'NgModuleType'.`);\n this._bootstrapComponents = maybeUnwrapFn(ngModuleDef.bootstrap);\n this._r3Injector = createInjectorWithoutInjectorInstances(ngModuleType, _parent, [\n { provide: NgModuleRef$1, useValue: this }, {\n provide: ComponentFactoryResolver$1,\n useValue: this.componentFactoryResolver\n },\n ...additionalProviders\n ], stringify(ngModuleType), new Set(['environment']));\n // We need to resolve the injector types separately from the injector creation, because\n // the module might be trying to use this ref in its constructor for DI which will cause a\n // circular error that will eventually error out, because the injector isn't created yet.\n this._r3Injector.resolveInjectorInitializers();\n this.instance = this._r3Injector.get(ngModuleType);\n }\n get injector() {\n return this._r3Injector;\n }\n destroy() {\n ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');\n const injector = this._r3Injector;\n !injector.destroyed && injector.destroy();\n this.destroyCbs.forEach(fn => fn());\n this.destroyCbs = null;\n }\n onDestroy(callback) {\n ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');\n this.destroyCbs.push(callback);\n }\n}\nclass NgModuleFactory extends NgModuleFactory$1 {\n constructor(moduleType) {\n super();\n this.moduleType = moduleType;\n }\n create(parentInjector) {\n return new NgModuleRef(this.moduleType, parentInjector, []);\n }\n}\nfunction createNgModuleRefWithProviders(moduleType, parentInjector, additionalProviders) {\n return new NgModuleRef(moduleType, parentInjector, additionalProviders);\n}\nclass EnvironmentNgModuleRefAdapter extends NgModuleRef$1 {\n constructor(config) {\n super();\n this.componentFactoryResolver = new ComponentFactoryResolver(this);\n this.instance = null;\n const injector = new R3Injector([\n ...config.providers,\n { provide: NgModuleRef$1, useValue: this },\n { provide: ComponentFactoryResolver$1, useValue: this.componentFactoryResolver },\n ], config.parent || getNullInjector(), config.debugName, new Set(['environment']));\n this.injector = injector;\n if (config.runEnvironmentInitializers) {\n injector.resolveInjectorInitializers();\n }\n }\n destroy() {\n this.injector.destroy();\n }\n onDestroy(callback) {\n this.injector.onDestroy(callback);\n }\n}\n/**\n * Create a new environment injector.\n *\n * Learn more about environment injectors in\n * [this guide](guide/standalone-components#environment-injectors).\n *\n * @param providers An array of providers.\n * @param parent A parent environment injector.\n * @param debugName An optional name for this injector instance, which will be used in error\n * messages.\n *\n * @publicApi\n */\nfunction createEnvironmentInjector(providers, parent, debugName = null) {\n const adapter = new EnvironmentNgModuleRefAdapter({ providers, parent, debugName, runEnvironmentInitializers: true });\n return adapter.injector;\n}\n\n/**\n * A service used by the framework to create instances of standalone injectors. Those injectors are\n * created on demand in case of dynamic component instantiation and contain ambient providers\n * collected from the imports graph rooted at a given standalone component.\n */\nclass StandaloneService {\n constructor(_injector) {\n this._injector = _injector;\n this.cachedInjectors = new Map();\n }\n getOrCreateStandaloneInjector(componentDef) {\n if (!componentDef.standalone) {\n return null;\n }\n if (!this.cachedInjectors.has(componentDef)) {\n const providers = internalImportProvidersFrom(false, componentDef.type);\n const standaloneInjector = providers.length > 0 ?\n createEnvironmentInjector([providers], this._injector, `Standalone[${componentDef.type.name}]`) :\n null;\n this.cachedInjectors.set(componentDef, standaloneInjector);\n }\n return this.cachedInjectors.get(componentDef);\n }\n ngOnDestroy() {\n try {\n for (const injector of this.cachedInjectors.values()) {\n if (injector !== null) {\n injector.destroy();\n }\n }\n }\n finally {\n this.cachedInjectors.clear();\n }\n }\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({\n token: StandaloneService,\n providedIn: 'environment',\n factory: () => new StandaloneService(ɵɵinject(EnvironmentInjector)),\n }); }\n}\n/**\n * A feature that acts as a setup code for the {@link StandaloneService}.\n *\n * The most important responsibility of this feature is to expose the \"getStandaloneInjector\"\n * function (an entry points to a standalone injector creation) on a component definition object. We\n * go through the features infrastructure to make sure that the standalone injector creation logic\n * is tree-shakable and not included in applications that don't use standalone components.\n *\n * @codeGenApi\n */\nfunction ɵɵStandaloneFeature(definition) {\n definition.getStandaloneInjector = (parentInjector) => {\n return parentInjector.get(StandaloneService).getOrCreateStandaloneInjector(definition);\n };\n}\n\n/**\n * Retrieves the component instance associated with a given DOM element.\n *\n * @usageNotes\n * Given the following DOM structure:\n *\n * ```html\n * <app-root>\n * <div>\n * <child-comp></child-comp>\n * </div>\n * </app-root>\n * ```\n *\n * Calling `getComponent` on `<child-comp>` will return the instance of `ChildComponent`\n * associated with this DOM element.\n *\n * Calling the function on `<app-root>` will return the `MyApp` instance.\n *\n *\n * @param element DOM element from which the component should be retrieved.\n * @returns Component instance associated with the element or `null` if there\n * is no component associated with it.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getComponent(element) {\n ngDevMode && assertDomElement(element);\n const context = getLContext(element);\n if (context === null)\n return null;\n if (context.component === undefined) {\n const lView = context.lView;\n if (lView === null) {\n return null;\n }\n context.component = getComponentAtNodeIndex(context.nodeIndex, lView);\n }\n return context.component;\n}\n/**\n * If inside an embedded view (e.g. `*ngIf` or `*ngFor`), retrieves the context of the embedded\n * view that the element is part of. Otherwise retrieves the instance of the component whose view\n * owns the element (in this case, the result is the same as calling `getOwningComponent`).\n *\n * @param element Element for which to get the surrounding component instance.\n * @returns Instance of the component that is around the element or null if the element isn't\n * inside any component.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getContext(element) {\n assertDomElement(element);\n const context = getLContext(element);\n const lView = context ? context.lView : null;\n return lView === null ? null : lView[CONTEXT];\n}\n/**\n * Retrieves the component instance whose view contains the DOM element.\n *\n * For example, if `<child-comp>` is used in the template of `<app-comp>`\n * (i.e. a `ViewChild` of `<app-comp>`), calling `getOwningComponent` on `<child-comp>`\n * would return `<app-comp>`.\n *\n * @param elementOrDir DOM element, component or directive instance\n * for which to retrieve the root components.\n * @returns Component instance whose view owns the DOM element or null if the element is not\n * part of a component view.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getOwningComponent(elementOrDir) {\n const context = getLContext(elementOrDir);\n let lView = context ? context.lView : null;\n if (lView === null)\n return null;\n let parent;\n while (lView[TVIEW].type === 2 /* TViewType.Embedded */ && (parent = getLViewParent(lView))) {\n lView = parent;\n }\n return lView[FLAGS] & 512 /* LViewFlags.IsRoot */ ? null : lView[CONTEXT];\n}\n/**\n * Retrieves all root components associated with a DOM element, directive or component instance.\n * Root components are those which have been bootstrapped by Angular.\n *\n * @param elementOrDir DOM element, component or directive instance\n * for which to retrieve the root components.\n * @returns Root components associated with the target object.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getRootComponents(elementOrDir) {\n const lView = readPatchedLView(elementOrDir);\n return lView !== null ? [getRootContext(lView)] : [];\n}\n/**\n * Retrieves an `Injector` associated with an element, component or directive instance.\n *\n * @param elementOrDir DOM element, component or directive instance for which to\n * retrieve the injector.\n * @returns Injector associated with the element, component or directive instance.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getInjector(elementOrDir) {\n const context = getLContext(elementOrDir);\n const lView = context ? context.lView : null;\n if (lView === null)\n return Injector.NULL;\n const tNode = lView[TVIEW].data[context.nodeIndex];\n return new NodeInjector(tNode, lView);\n}\n/**\n * Retrieve a set of injection tokens at a given DOM node.\n *\n * @param element Element for which the injection tokens should be retrieved.\n */\nfunction getInjectionTokens(element) {\n const context = getLContext(element);\n const lView = context ? context.lView : null;\n if (lView === null)\n return [];\n const tView = lView[TVIEW];\n const tNode = tView.data[context.nodeIndex];\n const providerTokens = [];\n const startIndex = tNode.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;\n const endIndex = tNode.directiveEnd;\n for (let i = startIndex; i < endIndex; i++) {\n let value = tView.data[i];\n if (isDirectiveDefHack(value)) {\n // The fact that we sometimes store Type and sometimes DirectiveDef in this location is a\n // design flaw. We should always store same type so that we can be monomorphic. The issue\n // is that for Components/Directives we store the def instead the type. The correct behavior\n // is that we should always be storing injectable type in this location.\n value = value.type;\n }\n providerTokens.push(value);\n }\n return providerTokens;\n}\n/**\n * Retrieves directive instances associated with a given DOM node. Does not include\n * component instances.\n *\n * @usageNotes\n * Given the following DOM structure:\n *\n * ```html\n * <app-root>\n * <button my-button></button>\n * <my-comp></my-comp>\n * </app-root>\n * ```\n *\n * Calling `getDirectives` on `<button>` will return an array with an instance of the `MyButton`\n * directive that is associated with the DOM node.\n *\n * Calling `getDirectives` on `<my-comp>` will return an empty array.\n *\n * @param node DOM node for which to get the directives.\n * @returns Array of directives associated with the node.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getDirectives(node) {\n // Skip text nodes because we can't have directives associated with them.\n if (node instanceof Text) {\n return [];\n }\n const context = getLContext(node);\n const lView = context ? context.lView : null;\n if (lView === null) {\n return [];\n }\n const tView = lView[TVIEW];\n const nodeIndex = context.nodeIndex;\n if (!tView?.data[nodeIndex]) {\n return [];\n }\n if (context.directives === undefined) {\n context.directives = getDirectivesAtNodeIndex(nodeIndex, lView);\n }\n // The `directives` in this case are a named array called `LComponentView`. Clone the\n // result so we don't expose an internal data structure in the user's console.\n return context.directives === null ? [] : [...context.directives];\n}\n/**\n * Returns the debug (partial) metadata for a particular directive or component instance.\n * The function accepts an instance of a directive or component and returns the corresponding\n * metadata.\n *\n * @param directiveOrComponentInstance Instance of a directive or component\n * @returns metadata of the passed directive or component\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getDirectiveMetadata$1(directiveOrComponentInstance) {\n const { constructor } = directiveOrComponentInstance;\n if (!constructor) {\n throw new Error('Unable to find the instance constructor');\n }\n // In case a component inherits from a directive, we may have component and directive metadata\n // To ensure we don't get the metadata of the directive, we want to call `getComponentDef` first.\n const componentDef = getComponentDef(constructor);\n if (componentDef) {\n return {\n inputs: componentDef.inputs,\n outputs: componentDef.outputs,\n encapsulation: componentDef.encapsulation,\n changeDetection: componentDef.onPush ? ChangeDetectionStrategy.OnPush :\n ChangeDetectionStrategy.Default\n };\n }\n const directiveDef = getDirectiveDef(constructor);\n if (directiveDef) {\n return { inputs: directiveDef.inputs, outputs: directiveDef.outputs };\n }\n return null;\n}\n/**\n * Retrieve map of local references.\n *\n * The references are retrieved as a map of local reference name to element or directive instance.\n *\n * @param target DOM element, component or directive instance for which to retrieve\n * the local references.\n */\nfunction getLocalRefs(target) {\n const context = getLContext(target);\n if (context === null)\n return {};\n if (context.localRefs === undefined) {\n const lView = context.lView;\n if (lView === null) {\n return {};\n }\n context.localRefs = discoverLocalRefs(lView, context.nodeIndex);\n }\n return context.localRefs || {};\n}\n/**\n * Retrieves the host element of a component or directive instance.\n * The host element is the DOM element that matched the selector of the directive.\n *\n * @param componentOrDirective Component or directive instance for which the host\n * element should be retrieved.\n * @returns Host element of the target.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getHostElement(componentOrDirective) {\n return getLContext(componentOrDirective).native;\n}\n/**\n * Retrieves the rendered text for a given component.\n *\n * This function retrieves the host element of a component and\n * and then returns the `textContent` for that element. This implies\n * that the text returned will include re-projected content of\n * the component as well.\n *\n * @param component The component to return the content text for.\n */\nfunction getRenderedText(component) {\n const hostElement = getHostElement(component);\n return hostElement.textContent || '';\n}\n/**\n * Retrieves a list of event listeners associated with a DOM element. The list does include host\n * listeners, but it does not include event listeners defined outside of the Angular context\n * (e.g. through `addEventListener`).\n *\n * @usageNotes\n * Given the following DOM structure:\n *\n * ```html\n * <app-root>\n * <div (click)=\"doSomething()\"></div>\n * </app-root>\n * ```\n *\n * Calling `getListeners` on `<div>` will return an object that looks as follows:\n *\n * ```ts\n * {\n * name: 'click',\n * element: <div>,\n * callback: () => doSomething(),\n * useCapture: false\n * }\n * ```\n *\n * @param element Element for which the DOM listeners should be retrieved.\n * @returns Array of event listeners on the DOM element.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getListeners(element) {\n ngDevMode && assertDomElement(element);\n const lContext = getLContext(element);\n const lView = lContext === null ? null : lContext.lView;\n if (lView === null)\n return [];\n const tView = lView[TVIEW];\n const lCleanup = lView[CLEANUP];\n const tCleanup = tView.cleanup;\n const listeners = [];\n if (tCleanup && lCleanup) {\n for (let i = 0; i < tCleanup.length;) {\n const firstParam = tCleanup[i++];\n const secondParam = tCleanup[i++];\n if (typeof firstParam === 'string') {\n const name = firstParam;\n const listenerElement = unwrapRNode(lView[secondParam]);\n const callback = lCleanup[tCleanup[i++]];\n const useCaptureOrIndx = tCleanup[i++];\n // if useCaptureOrIndx is boolean then report it as is.\n // if useCaptureOrIndx is positive number then it in unsubscribe method\n // if useCaptureOrIndx is negative number then it is a Subscription\n const type = (typeof useCaptureOrIndx === 'boolean' || useCaptureOrIndx >= 0) ? 'dom' : 'output';\n const useCapture = typeof useCaptureOrIndx === 'boolean' ? useCaptureOrIndx : false;\n if (element == listenerElement) {\n listeners.push({ element, name, callback, useCapture, type });\n }\n }\n }\n }\n listeners.sort(sortListeners);\n return listeners;\n}\nfunction sortListeners(a, b) {\n if (a.name == b.name)\n return 0;\n return a.name < b.name ? -1 : 1;\n}\n/**\n * This function should not exist because it is megamorphic and only mostly correct.\n *\n * See call site for more info.\n */\nfunction isDirectiveDefHack(obj) {\n return obj.type !== undefined && obj.declaredInputs !== undefined &&\n obj.findHostDirectiveDefs !== undefined;\n}\n/**\n * Retrieve the component `LView` from component/element.\n *\n * NOTE: `LView` is a private and should not be leaked outside.\n * Don't export this method to `ng.*` on window.\n *\n * @param target DOM element or component instance for which to retrieve the LView.\n */\nfunction getComponentLView(target) {\n const lContext = getLContext(target);\n const nodeIndx = lContext.nodeIndex;\n const lView = lContext.lView;\n ngDevMode && assertLView(lView);\n const componentLView = lView[nodeIndx];\n ngDevMode && assertLView(componentLView);\n return componentLView;\n}\n/** Asserts that a value is a DOM Element. */\nfunction assertDomElement(value) {\n if (typeof Element !== 'undefined' && !(value instanceof Element)) {\n throw new Error('Expecting instance of DOM Element');\n }\n}\n\n/**\n * Adds decorator, constructor, and property metadata to a given type via static metadata fields\n * on the type.\n *\n * These metadata fields can later be read with Angular's `ReflectionCapabilities` API.\n *\n * Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments\n * being tree-shaken away during production builds.\n */\nfunction setClassMetadata(type, decorators, ctorParameters, propDecorators) {\n return noSideEffects(() => {\n const clazz = type;\n if (decorators !== null) {\n if (clazz.hasOwnProperty('decorators') && clazz.decorators !== undefined) {\n clazz.decorators.push(...decorators);\n }\n else {\n clazz.decorators = decorators;\n }\n }\n if (ctorParameters !== null) {\n // Rather than merging, clobber the existing parameters. If other projects exist which\n // use tsickle-style annotations and reflect over them in the same way, this could\n // cause issues, but that is vanishingly unlikely.\n clazz.ctorParameters = ctorParameters;\n }\n if (propDecorators !== null) {\n // The property decorator objects are merged as it is possible different fields have\n // different decorator types. Decorators on individual fields are not merged, as it's\n // also incredibly unlikely that a field will be decorated both with an Angular\n // decorator and a non-Angular decorator that's also been downleveled.\n if (clazz.hasOwnProperty('propDecorators') && clazz.propDecorators !== undefined) {\n clazz.propDecorators = { ...clazz.propDecorators, ...propDecorators };\n }\n else {\n clazz.propDecorators = propDecorators;\n }\n }\n });\n}\n\n/**\n * Bindings for pure functions are stored after regular bindings.\n *\n * |-------decls------|---------vars---------| |----- hostVars (dir1) ------|\n * ------------------------------------------------------------------------------------------\n * | nodes/refs/pipes | bindings | fn slots | injector | dir1 | host bindings | host slots |\n * ------------------------------------------------------------------------------------------\n * ^ ^\n * TView.bindingStartIndex TView.expandoStartIndex\n *\n * Pure function instructions are given an offset from the binding root. Adding the offset to the\n * binding root gives the first index where the bindings are stored. In component views, the binding\n * root is the bindingStartIndex. In host bindings, the binding root is the expandoStartIndex +\n * any directive instances + any hostVars in directives evaluated before it.\n *\n * See VIEW_DATA.md for more information about host binding resolution.\n */\n/**\n * If the value hasn't been saved, calls the pure function to store and return the\n * value. If it has been saved, returns the saved value.\n *\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn Function that returns a value\n * @param thisArg Optional calling context of pureFn\n * @returns value\n *\n * @codeGenApi\n */\nfunction ɵɵpureFunction0(slotOffset, pureFn, thisArg) {\n const bindingIndex = getBindingRoot() + slotOffset;\n const lView = getLView();\n return lView[bindingIndex] === NO_CHANGE ?\n updateBinding(lView, bindingIndex, thisArg ? pureFn.call(thisArg) : pureFn()) :\n getBinding(lView, bindingIndex);\n}\n/**\n * If the value of the provided exp has changed, calls the pure function to return\n * an updated value. Or if the value has not changed, returns cached value.\n *\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn Function that returns an updated value\n * @param exp Updated expression value\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n *\n * @codeGenApi\n */\nfunction ɵɵpureFunction1(slotOffset, pureFn, exp, thisArg) {\n return pureFunction1Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp, thisArg);\n}\n/**\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn\n * @param exp1\n * @param exp2\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n *\n * @codeGenApi\n */\nfunction ɵɵpureFunction2(slotOffset, pureFn, exp1, exp2, thisArg) {\n return pureFunction2Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp1, exp2, thisArg);\n}\n/**\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn\n * @param exp1\n * @param exp2\n * @param exp3\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n *\n * @codeGenApi\n */\nfunction ɵɵpureFunction3(slotOffset, pureFn, exp1, exp2, exp3, thisArg) {\n return pureFunction3Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp1, exp2, exp3, thisArg);\n}\n/**\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn\n * @param exp1\n * @param exp2\n * @param exp3\n * @param exp4\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n *\n * @codeGenApi\n */\nfunction ɵɵpureFunction4(slotOffset, pureFn, exp1, exp2, exp3, exp4, thisArg) {\n return pureFunction4Internal(getLView(), getBindingRoot(), slotOffset, pureFn, exp1, exp2, exp3, exp4, thisArg);\n}\n/**\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn\n * @param exp1\n * @param exp2\n * @param exp3\n * @param exp4\n * @param exp5\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n *\n * @codeGenApi\n */\nfunction ɵɵpureFunction5(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, thisArg) {\n const bindingIndex = getBindingRoot() + slotOffset;\n const lView = getLView();\n const different = bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4);\n return bindingUpdated(lView, bindingIndex + 4, exp5) || different ?\n updateBinding(lView, bindingIndex + 5, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3, exp4, exp5) :\n pureFn(exp1, exp2, exp3, exp4, exp5)) :\n getBinding(lView, bindingIndex + 5);\n}\n/**\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn\n * @param exp1\n * @param exp2\n * @param exp3\n * @param exp4\n * @param exp5\n * @param exp6\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n *\n * @codeGenApi\n */\nfunction ɵɵpureFunction6(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, exp6, thisArg) {\n const bindingIndex = getBindingRoot() + slotOffset;\n const lView = getLView();\n const different = bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4);\n return bindingUpdated2(lView, bindingIndex + 4, exp5, exp6) || different ?\n updateBinding(lView, bindingIndex + 6, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3, exp4, exp5, exp6) :\n pureFn(exp1, exp2, exp3, exp4, exp5, exp6)) :\n getBinding(lView, bindingIndex + 6);\n}\n/**\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn\n * @param exp1\n * @param exp2\n * @param exp3\n * @param exp4\n * @param exp5\n * @param exp6\n * @param exp7\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n *\n * @codeGenApi\n */\nfunction ɵɵpureFunction7(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, exp6, exp7, thisArg) {\n const bindingIndex = getBindingRoot() + slotOffset;\n const lView = getLView();\n let different = bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4);\n return bindingUpdated3(lView, bindingIndex + 4, exp5, exp6, exp7) || different ?\n updateBinding(lView, bindingIndex + 7, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3, exp4, exp5, exp6, exp7) :\n pureFn(exp1, exp2, exp3, exp4, exp5, exp6, exp7)) :\n getBinding(lView, bindingIndex + 7);\n}\n/**\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn\n * @param exp1\n * @param exp2\n * @param exp3\n * @param exp4\n * @param exp5\n * @param exp6\n * @param exp7\n * @param exp8\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n *\n * @codeGenApi\n */\nfunction ɵɵpureFunction8(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, exp6, exp7, exp8, thisArg) {\n const bindingIndex = getBindingRoot() + slotOffset;\n const lView = getLView();\n const different = bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4);\n return bindingUpdated4(lView, bindingIndex + 4, exp5, exp6, exp7, exp8) || different ?\n updateBinding(lView, bindingIndex + 8, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3, exp4, exp5, exp6, exp7, exp8) :\n pureFn(exp1, exp2, exp3, exp4, exp5, exp6, exp7, exp8)) :\n getBinding(lView, bindingIndex + 8);\n}\n/**\n * pureFunction instruction that can support any number of bindings.\n *\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn A pure function that takes binding values and builds an object or array\n * containing those values.\n * @param exps An array of binding values\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n *\n * @codeGenApi\n */\nfunction ɵɵpureFunctionV(slotOffset, pureFn, exps, thisArg) {\n return pureFunctionVInternal(getLView(), getBindingRoot(), slotOffset, pureFn, exps, thisArg);\n}\n/**\n * Results of a pure function invocation are stored in LView in a dedicated slot that is initialized\n * to NO_CHANGE. In rare situations a pure pipe might throw an exception on the very first\n * invocation and not produce any valid results. In this case LView would keep holding the NO_CHANGE\n * value. The NO_CHANGE is not something that we can use in expressions / bindings thus we convert\n * it to `undefined`.\n */\nfunction getPureFunctionReturnValue(lView, returnValueIndex) {\n ngDevMode && assertIndexInRange(lView, returnValueIndex);\n const lastReturnValue = lView[returnValueIndex];\n return lastReturnValue === NO_CHANGE ? undefined : lastReturnValue;\n}\n/**\n * If the value of the provided exp has changed, calls the pure function to return\n * an updated value. Or if the value has not changed, returns cached value.\n *\n * @param lView LView in which the function is being executed.\n * @param bindingRoot Binding root index.\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn Function that returns an updated value\n * @param exp Updated expression value\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n */\nfunction pureFunction1Internal(lView, bindingRoot, slotOffset, pureFn, exp, thisArg) {\n const bindingIndex = bindingRoot + slotOffset;\n return bindingUpdated(lView, bindingIndex, exp) ?\n updateBinding(lView, bindingIndex + 1, thisArg ? pureFn.call(thisArg, exp) : pureFn(exp)) :\n getPureFunctionReturnValue(lView, bindingIndex + 1);\n}\n/**\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param lView LView in which the function is being executed.\n * @param bindingRoot Binding root index.\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn\n * @param exp1\n * @param exp2\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n */\nfunction pureFunction2Internal(lView, bindingRoot, slotOffset, pureFn, exp1, exp2, thisArg) {\n const bindingIndex = bindingRoot + slotOffset;\n return bindingUpdated2(lView, bindingIndex, exp1, exp2) ?\n updateBinding(lView, bindingIndex + 2, thisArg ? pureFn.call(thisArg, exp1, exp2) : pureFn(exp1, exp2)) :\n getPureFunctionReturnValue(lView, bindingIndex + 2);\n}\n/**\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param lView LView in which the function is being executed.\n * @param bindingRoot Binding root index.\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn\n * @param exp1\n * @param exp2\n * @param exp3\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n */\nfunction pureFunction3Internal(lView, bindingRoot, slotOffset, pureFn, exp1, exp2, exp3, thisArg) {\n const bindingIndex = bindingRoot + slotOffset;\n return bindingUpdated3(lView, bindingIndex, exp1, exp2, exp3) ?\n updateBinding(lView, bindingIndex + 3, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3) : pureFn(exp1, exp2, exp3)) :\n getPureFunctionReturnValue(lView, bindingIndex + 3);\n}\n/**\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param lView LView in which the function is being executed.\n * @param bindingRoot Binding root index.\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn\n * @param exp1\n * @param exp2\n * @param exp3\n * @param exp4\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n *\n */\nfunction pureFunction4Internal(lView, bindingRoot, slotOffset, pureFn, exp1, exp2, exp3, exp4, thisArg) {\n const bindingIndex = bindingRoot + slotOffset;\n return bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) ?\n updateBinding(lView, bindingIndex + 4, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3, exp4) : pureFn(exp1, exp2, exp3, exp4)) :\n getPureFunctionReturnValue(lView, bindingIndex + 4);\n}\n/**\n * pureFunction instruction that can support any number of bindings.\n *\n * If the value of any provided exp has changed, calls the pure function to return\n * an updated value. Or if no values have changed, returns cached value.\n *\n * @param lView LView in which the function is being executed.\n * @param bindingRoot Binding root index.\n * @param slotOffset the offset from binding root to the reserved slot\n * @param pureFn A pure function that takes binding values and builds an object or array\n * containing those values.\n * @param exps An array of binding values\n * @param thisArg Optional calling context of pureFn\n * @returns Updated or cached value\n */\nfunction pureFunctionVInternal(lView, bindingRoot, slotOffset, pureFn, exps, thisArg) {\n let bindingIndex = bindingRoot + slotOffset;\n let different = false;\n for (let i = 0; i < exps.length; i++) {\n bindingUpdated(lView, bindingIndex++, exps[i]) && (different = true);\n }\n return different ? updateBinding(lView, bindingIndex, pureFn.apply(thisArg, exps)) :\n getPureFunctionReturnValue(lView, bindingIndex);\n}\n\n/**\n * Create a pipe.\n *\n * @param index Pipe index where the pipe will be stored.\n * @param pipeName The name of the pipe\n * @returns T the instance of the pipe.\n *\n * @codeGenApi\n */\nfunction ɵɵpipe(index, pipeName) {\n const tView = getTView();\n let pipeDef;\n const adjustedIndex = index + HEADER_OFFSET;\n if (tView.firstCreatePass) {\n // The `getPipeDef` throws if a pipe with a given name is not found\n // (so we use non-null assertion below).\n pipeDef = getPipeDef(pipeName, tView.pipeRegistry);\n tView.data[adjustedIndex] = pipeDef;\n if (pipeDef.onDestroy) {\n (tView.destroyHooks ??= []).push(adjustedIndex, pipeDef.onDestroy);\n }\n }\n else {\n pipeDef = tView.data[adjustedIndex];\n }\n const pipeFactory = pipeDef.factory || (pipeDef.factory = getFactoryDef(pipeDef.type, true));\n let previousInjectorProfilerContext;\n if (ngDevMode) {\n previousInjectorProfilerContext = setInjectorProfilerContext({\n injector: new NodeInjector(getCurrentTNode(), getLView()),\n token: pipeDef.type\n });\n }\n const previousInjectImplementation = setInjectImplementation(ɵɵdirectiveInject);\n try {\n // DI for pipes is supposed to behave like directives when placed on a component\n // host node, which means that we have to disable access to `viewProviders`.\n const previousIncludeViewProviders = setIncludeViewProviders(false);\n const pipeInstance = pipeFactory();\n setIncludeViewProviders(previousIncludeViewProviders);\n store(tView, getLView(), adjustedIndex, pipeInstance);\n return pipeInstance;\n }\n finally {\n // we have to restore the injector implementation in finally, just in case the creation of the\n // pipe throws an error.\n setInjectImplementation(previousInjectImplementation);\n ngDevMode && setInjectorProfilerContext(previousInjectorProfilerContext);\n }\n}\n/**\n * Searches the pipe registry for a pipe with the given name. If one is found,\n * returns the pipe. Otherwise, an error is thrown because the pipe cannot be resolved.\n *\n * @param name Name of pipe to resolve\n * @param registry Full list of available pipes\n * @returns Matching PipeDef\n */\nfunction getPipeDef(name, registry) {\n if (registry) {\n if (ngDevMode) {\n const pipes = registry.filter(pipe => pipe.name === name);\n // TODO: Throw an error in the next major\n if (pipes.length > 1) {\n console.warn(formatRuntimeError(313 /* RuntimeErrorCode.MULTIPLE_MATCHING_PIPES */, getMultipleMatchingPipesMessage(name)));\n }\n }\n for (let i = registry.length - 1; i >= 0; i--) {\n const pipeDef = registry[i];\n if (name === pipeDef.name) {\n return pipeDef;\n }\n }\n }\n if (ngDevMode) {\n throw new RuntimeError(-302 /* RuntimeErrorCode.PIPE_NOT_FOUND */, getPipeNotFoundErrorMessage(name));\n }\n}\n/**\n * Generates a helpful error message for the user when multiple pipes match the name.\n *\n * @param name Name of the pipe\n * @returns The error message\n */\nfunction getMultipleMatchingPipesMessage(name) {\n const lView = getLView();\n const declarationLView = lView[DECLARATION_COMPONENT_VIEW];\n const context = declarationLView[CONTEXT];\n const hostIsStandalone = isHostComponentStandalone(lView);\n const componentInfoMessage = context ? ` in the '${context.constructor.name}' component` : '';\n const verifyMessage = `check ${hostIsStandalone ? '\\'@Component.imports\\' of this component' :\n 'the imports of this module'}`;\n const errorMessage = `Multiple pipes match the name \\`${name}\\`${componentInfoMessage}. ${verifyMessage}`;\n return errorMessage;\n}\n/**\n * Generates a helpful error message for the user when a pipe is not found.\n *\n * @param name Name of the missing pipe\n * @returns The error message\n */\nfunction getPipeNotFoundErrorMessage(name) {\n const lView = getLView();\n const declarationLView = lView[DECLARATION_COMPONENT_VIEW];\n const context = declarationLView[CONTEXT];\n const hostIsStandalone = isHostComponentStandalone(lView);\n const componentInfoMessage = context ? ` in the '${context.constructor.name}' component` : '';\n const verifyMessage = `Verify that it is ${hostIsStandalone ? 'included in the \\'@Component.imports\\' of this component' :\n 'declared or imported in this module'}`;\n const errorMessage = `The pipe '${name}' could not be found${componentInfoMessage}. ${verifyMessage}`;\n return errorMessage;\n}\n/**\n * Invokes a pipe with 1 arguments.\n *\n * This instruction acts as a guard to {@link PipeTransform#transform} invoking\n * the pipe only when an input to the pipe changes.\n *\n * @param index Pipe index where the pipe was stored on creation.\n * @param slotOffset the offset in the reserved slot space\n * @param v1 1st argument to {@link PipeTransform#transform}.\n *\n * @codeGenApi\n */\nfunction ɵɵpipeBind1(index, slotOffset, v1) {\n const adjustedIndex = index + HEADER_OFFSET;\n const lView = getLView();\n const pipeInstance = load(lView, adjustedIndex);\n return isPure(lView, adjustedIndex) ?\n pureFunction1Internal(lView, getBindingRoot(), slotOffset, pipeInstance.transform, v1, pipeInstance) :\n pipeInstance.transform(v1);\n}\n/**\n * Invokes a pipe with 2 arguments.\n *\n * This instruction acts as a guard to {@link PipeTransform#transform} invoking\n * the pipe only when an input to the pipe changes.\n *\n * @param index Pipe index where the pipe was stored on creation.\n * @param slotOffset the offset in the reserved slot space\n * @param v1 1st argument to {@link PipeTransform#transform}.\n * @param v2 2nd argument to {@link PipeTransform#transform}.\n *\n * @codeGenApi\n */\nfunction ɵɵpipeBind2(index, slotOffset, v1, v2) {\n const adjustedIndex = index + HEADER_OFFSET;\n const lView = getLView();\n const pipeInstance = load(lView, adjustedIndex);\n return isPure(lView, adjustedIndex) ?\n pureFunction2Internal(lView, getBindingRoot(), slotOffset, pipeInstance.transform, v1, v2, pipeInstance) :\n pipeInstance.transform(v1, v2);\n}\n/**\n * Invokes a pipe with 3 arguments.\n *\n * This instruction acts as a guard to {@link PipeTransform#transform} invoking\n * the pipe only when an input to the pipe changes.\n *\n * @param index Pipe index where the pipe was stored on creation.\n * @param slotOffset the offset in the reserved slot space\n * @param v1 1st argument to {@link PipeTransform#transform}.\n * @param v2 2nd argument to {@link PipeTransform#transform}.\n * @param v3 4rd argument to {@link PipeTransform#transform}.\n *\n * @codeGenApi\n */\nfunction ɵɵpipeBind3(index, slotOffset, v1, v2, v3) {\n const adjustedIndex = index + HEADER_OFFSET;\n const lView = getLView();\n const pipeInstance = load(lView, adjustedIndex);\n return isPure(lView, adjustedIndex) ?\n pureFunction3Internal(lView, getBindingRoot(), slotOffset, pipeInstance.transform, v1, v2, v3, pipeInstance) :\n pipeInstance.transform(v1, v2, v3);\n}\n/**\n * Invokes a pipe with 4 arguments.\n *\n * This instruction acts as a guard to {@link PipeTransform#transform} invoking\n * the pipe only when an input to the pipe changes.\n *\n * @param index Pipe index where the pipe was stored on creation.\n * @param slotOffset the offset in the reserved slot space\n * @param v1 1st argument to {@link PipeTransform#transform}.\n * @param v2 2nd argument to {@link PipeTransform#transform}.\n * @param v3 3rd argument to {@link PipeTransform#transform}.\n * @param v4 4th argument to {@link PipeTransform#transform}.\n *\n * @codeGenApi\n */\nfunction ɵɵpipeBind4(index, slotOffset, v1, v2, v3, v4) {\n const adjustedIndex = index + HEADER_OFFSET;\n const lView = getLView();\n const pipeInstance = load(lView, adjustedIndex);\n return isPure(lView, adjustedIndex) ? pureFunction4Internal(lView, getBindingRoot(), slotOffset, pipeInstance.transform, v1, v2, v3, v4, pipeInstance) :\n pipeInstance.transform(v1, v2, v3, v4);\n}\n/**\n * Invokes a pipe with variable number of arguments.\n *\n * This instruction acts as a guard to {@link PipeTransform#transform} invoking\n * the pipe only when an input to the pipe changes.\n *\n * @param index Pipe index where the pipe was stored on creation.\n * @param slotOffset the offset in the reserved slot space\n * @param values Array of arguments to pass to {@link PipeTransform#transform} method.\n *\n * @codeGenApi\n */\nfunction ɵɵpipeBindV(index, slotOffset, values) {\n const adjustedIndex = index + HEADER_OFFSET;\n const lView = getLView();\n const pipeInstance = load(lView, adjustedIndex);\n return isPure(lView, adjustedIndex) ?\n pureFunctionVInternal(lView, getBindingRoot(), slotOffset, pipeInstance.transform, values, pipeInstance) :\n pipeInstance.transform.apply(pipeInstance, values);\n}\nfunction isPure(lView, index) {\n return lView[TVIEW].data[index].pure;\n}\n\nfunction symbolIterator() {\n // @ts-expect-error accessing a private member\n return this._results[Symbol.iterator]();\n}\n/**\n * An unmodifiable list of items that Angular keeps up to date when the state\n * of the application changes.\n *\n * The type of object that {@link ViewChildren}, {@link ContentChildren}, and {@link QueryList}\n * provide.\n *\n * Implements an iterable interface, therefore it can be used in both ES6\n * javascript `for (var i of items)` loops as well as in Angular templates with\n * `*ngFor=\"let i of myList\"`.\n *\n * Changes can be observed by subscribing to the changes `Observable`.\n *\n * NOTE: In the future this class will implement an `Observable` interface.\n *\n * @usageNotes\n * ### Example\n * ```typescript\n * @Component({...})\n * class Container {\n * @ViewChildren(Item) items:QueryList<Item>;\n * }\n * ```\n *\n * @publicApi\n */\nclass QueryList {\n static { Symbol.iterator; }\n /**\n * Returns `Observable` of `QueryList` notifying the subscriber of changes.\n */\n get changes() {\n return this._changes || (this._changes = new EventEmitter());\n }\n /**\n * @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change\n * has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in\n * the same result)\n */\n constructor(_emitDistinctChangesOnly = false) {\n this._emitDistinctChangesOnly = _emitDistinctChangesOnly;\n this.dirty = true;\n this._results = [];\n this._changesDetected = false;\n this._changes = null;\n this.length = 0;\n this.first = undefined;\n this.last = undefined;\n // This function should be declared on the prototype, but doing so there will cause the class\n // declaration to have side-effects and become not tree-shakable. For this reason we do it in\n // the constructor.\n // [Symbol.iterator](): Iterator<T> { ... }\n const proto = QueryList.prototype;\n if (!proto[Symbol.iterator])\n proto[Symbol.iterator] = symbolIterator;\n }\n /**\n * Returns the QueryList entry at `index`.\n */\n get(index) {\n return this._results[index];\n }\n /**\n * See\n * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)\n */\n map(fn) {\n return this._results.map(fn);\n }\n filter(fn) {\n return this._results.filter(fn);\n }\n /**\n * See\n * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)\n */\n find(fn) {\n return this._results.find(fn);\n }\n /**\n * See\n * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)\n */\n reduce(fn, init) {\n return this._results.reduce(fn, init);\n }\n /**\n * See\n * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)\n */\n forEach(fn) {\n this._results.forEach(fn);\n }\n /**\n * See\n * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)\n */\n some(fn) {\n return this._results.some(fn);\n }\n /**\n * Returns a copy of the internal results list as an Array.\n */\n toArray() {\n return this._results.slice();\n }\n toString() {\n return this._results.toString();\n }\n /**\n * Updates the stored data of the query list, and resets the `dirty` flag to `false`, so that\n * on change detection, it will not notify of changes to the queries, unless a new change\n * occurs.\n *\n * @param resultsTree The query results to store\n * @param identityAccessor Optional function for extracting stable object identity from a value\n * in the array. This function is executed for each element of the query result list while\n * comparing current query list with the new one (provided as a first argument of the `reset`\n * function) to detect if the lists are different. If the function is not provided, elements\n * are compared as is (without any pre-processing).\n */\n reset(resultsTree, identityAccessor) {\n // Cast to `QueryListInternal` so that we can mutate fields which are readonly for the usage of\n // QueryList (but not for QueryList itself.)\n const self = this;\n self.dirty = false;\n const newResultFlat = flatten(resultsTree);\n if (this._changesDetected = !arrayEquals(self._results, newResultFlat, identityAccessor)) {\n self._results = newResultFlat;\n self.length = newResultFlat.length;\n self.last = newResultFlat[this.length - 1];\n self.first = newResultFlat[0];\n }\n }\n /**\n * Triggers a change event by emitting on the `changes` {@link EventEmitter}.\n */\n notifyOnChanges() {\n if (this._changes && (this._changesDetected || !this._emitDistinctChangesOnly))\n this._changes.emit(this);\n }\n /** internal */\n setDirty() {\n this.dirty = true;\n }\n /** internal */\n destroy() {\n this.changes.complete();\n this.changes.unsubscribe();\n }\n}\n\nfunction createAndRenderEmbeddedLView(declarationLView, templateTNode, context, options) {\n const embeddedTView = templateTNode.tView;\n ngDevMode && assertDefined(embeddedTView, 'TView must be defined for a template node.');\n ngDevMode && assertTNodeForLView(templateTNode, declarationLView);\n // Embedded views follow the change detection strategy of the view they're declared in.\n const isSignalView = declarationLView[FLAGS] & 4096 /* LViewFlags.SignalView */;\n const viewFlags = isSignalView ? 4096 /* LViewFlags.SignalView */ : 16 /* LViewFlags.CheckAlways */;\n const embeddedLView = createLView(declarationLView, embeddedTView, context, viewFlags, null, templateTNode, null, null, null, options?.injector ?? null, options?.hydrationInfo ?? null);\n const declarationLContainer = declarationLView[templateTNode.index];\n ngDevMode && assertLContainer(declarationLContainer);\n embeddedLView[DECLARATION_LCONTAINER] = declarationLContainer;\n const declarationViewLQueries = declarationLView[QUERIES];\n if (declarationViewLQueries !== null) {\n embeddedLView[QUERIES] = declarationViewLQueries.createEmbeddedView(embeddedTView);\n }\n // execute creation mode of a view\n renderView(embeddedTView, embeddedLView, context);\n return embeddedLView;\n}\nfunction getLViewFromLContainer(lContainer, index) {\n const adjustedIndex = CONTAINER_HEADER_OFFSET + index;\n // avoid reading past the array boundaries\n if (adjustedIndex < lContainer.length) {\n const lView = lContainer[adjustedIndex];\n ngDevMode && assertLView(lView);\n return lView;\n }\n return undefined;\n}\nfunction addLViewToLContainer(lContainer, lView, index, addToDOM = true) {\n const tView = lView[TVIEW];\n // insert to the view tree so the new view can be change-detected\n insertView(tView, lView, lContainer, index);\n // insert to the view to the DOM tree\n if (addToDOM) {\n const beforeNode = getBeforeNodeForView(index, lContainer);\n const renderer = lView[RENDERER];\n const parentRNode = nativeParentNode(renderer, lContainer[NATIVE]);\n if (parentRNode !== null) {\n addViewToDOM(tView, lContainer[T_HOST], renderer, lView, parentRNode, beforeNode);\n }\n }\n}\nfunction removeLViewFromLContainer(lContainer, index) {\n const lView = detachView(lContainer, index);\n if (lView !== undefined) {\n destroyLView(lView[TVIEW], lView);\n }\n return lView;\n}\n\n/**\n * Represents an embedded template that can be used to instantiate embedded views.\n * To instantiate embedded views based on a template, use the `ViewContainerRef`\n * method `createEmbeddedView()`.\n *\n * Access a `TemplateRef` instance by placing a directive on an `<ng-template>`\n * element (or directive prefixed with `*`). The `TemplateRef` for the embedded view\n * is injected into the constructor of the directive,\n * using the `TemplateRef` token.\n *\n * You can also use a `Query` to find a `TemplateRef` associated with\n * a component or a directive.\n *\n * @see {@link ViewContainerRef}\n * @see [Navigate the Component Tree with DI](guide/dependency-injection-navtree)\n *\n * @publicApi\n */\nclass TemplateRef {\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ELEMENT_ID__ = injectTemplateRef; }\n}\nconst ViewEngineTemplateRef = TemplateRef;\n// TODO(alxhub): combine interface and implementation. Currently this is challenging since something\n// in g3 depends on them being separate.\nconst R3TemplateRef = class TemplateRef extends ViewEngineTemplateRef {\n constructor(_declarationLView, _declarationTContainer, elementRef) {\n super();\n this._declarationLView = _declarationLView;\n this._declarationTContainer = _declarationTContainer;\n this.elementRef = elementRef;\n }\n /**\n * Returns an `ssrId` associated with a TView, which was used to\n * create this instance of the `TemplateRef`.\n *\n * @internal\n */\n get ssrId() {\n return this._declarationTContainer.tView?.ssrId || null;\n }\n createEmbeddedView(context, injector) {\n return this.createEmbeddedViewImpl(context, injector);\n }\n /**\n * @internal\n */\n createEmbeddedViewImpl(context, injector, hydrationInfo) {\n const embeddedLView = createAndRenderEmbeddedLView(this._declarationLView, this._declarationTContainer, context, { injector, hydrationInfo });\n return new ViewRef$1(embeddedLView);\n }\n};\n/**\n * Creates a TemplateRef given a node.\n *\n * @returns The TemplateRef instance to use\n */\nfunction injectTemplateRef() {\n return createTemplateRef(getCurrentTNode(), getLView());\n}\n/**\n * Creates a TemplateRef and stores it on the injector.\n *\n * @param hostTNode The node on which a TemplateRef is requested\n * @param hostLView The `LView` to which the node belongs\n * @returns The TemplateRef instance or null if we can't create a TemplateRef on a given node type\n */\nfunction createTemplateRef(hostTNode, hostLView) {\n if (hostTNode.type & 4 /* TNodeType.Container */) {\n ngDevMode && assertDefined(hostTNode.tView, 'TView must be allocated');\n return new R3TemplateRef(hostLView, hostTNode, createElementRef(hostTNode, hostLView));\n }\n return null;\n}\n\n/**\n * Removes all dehydrated views from a given LContainer:\n * both in internal data structure, as well as removing\n * corresponding DOM nodes that belong to that dehydrated view.\n */\nfunction removeDehydratedViews(lContainer) {\n const views = lContainer[DEHYDRATED_VIEWS] ?? [];\n const parentLView = lContainer[PARENT];\n const renderer = parentLView[RENDERER];\n for (const view of views) {\n removeDehydratedView(view, renderer);\n ngDevMode && ngDevMode.dehydratedViewsRemoved++;\n }\n // Reset the value to an empty array to indicate that no\n // further processing of dehydrated views is needed for\n // this view container (i.e. do not trigger the lookup process\n // once again in case a `ViewContainerRef` is created later).\n lContainer[DEHYDRATED_VIEWS] = EMPTY_ARRAY;\n}\n/**\n * Helper function to remove all nodes from a dehydrated view.\n */\nfunction removeDehydratedView(dehydratedView, renderer) {\n let nodesRemoved = 0;\n let currentRNode = dehydratedView.firstChild;\n if (currentRNode) {\n const numNodes = dehydratedView.data[NUM_ROOT_NODES];\n while (nodesRemoved < numNodes) {\n ngDevMode && validateSiblingNodeExists(currentRNode);\n const nextSibling = currentRNode.nextSibling;\n nativeRemoveNode(renderer, currentRNode, false);\n currentRNode = nextSibling;\n nodesRemoved++;\n }\n }\n}\n/**\n * Walks over all views within this LContainer invokes dehydrated views\n * cleanup function for each one.\n */\nfunction cleanupLContainer(lContainer) {\n removeDehydratedViews(lContainer);\n for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {\n cleanupLView(lContainer[i]);\n }\n}\n/**\n * Walks over `LContainer`s and components registered within\n * this LView and invokes dehydrated views cleanup function for each one.\n */\nfunction cleanupLView(lView) {\n const tView = lView[TVIEW];\n for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) {\n if (isLContainer(lView[i])) {\n const lContainer = lView[i];\n cleanupLContainer(lContainer);\n }\n else if (Array.isArray(lView[i])) {\n // This is a component, enter the `cleanupLView` recursively.\n cleanupLView(lView[i]);\n }\n }\n}\n/**\n * Walks over all views registered within the ApplicationRef and removes\n * all dehydrated views from all `LContainer`s along the way.\n */\nfunction cleanupDehydratedViews(appRef) {\n const viewRefs = appRef._views;\n for (const viewRef of viewRefs) {\n const lNode = getLNodeForHydration(viewRef);\n // An `lView` might be `null` if a `ViewRef` represents\n // an embedded view (not a component view).\n if (lNode !== null && lNode[HOST] !== null) {\n if (isLView(lNode)) {\n cleanupLView(lNode);\n }\n else {\n // Cleanup in the root component view\n const componentLView = lNode[HOST];\n cleanupLView(componentLView);\n // Cleanup in all views within this view container\n cleanupLContainer(lNode);\n }\n ngDevMode && ngDevMode.dehydratedViewsCleanupRuns++;\n }\n }\n}\n\n/**\n * Given a current DOM node and a serialized information about the views\n * in a container, walks over the DOM structure, collecting the list of\n * dehydrated views.\n */\nfunction locateDehydratedViewsInContainer(currentRNode, serializedViews) {\n const dehydratedViews = [];\n for (const serializedView of serializedViews) {\n // Repeats a view multiple times as needed, based on the serialized information\n // (for example, for *ngFor-produced views).\n for (let i = 0; i < (serializedView[MULTIPLIER] ?? 1); i++) {\n const view = {\n data: serializedView,\n firstChild: null,\n };\n if (serializedView[NUM_ROOT_NODES] > 0) {\n // Keep reference to the first node in this view,\n // so it can be accessed while invoking template instructions.\n view.firstChild = currentRNode;\n // Move over to the next node after this view, which can\n // either be a first node of the next view or an anchor comment\n // node after the last view in a container.\n currentRNode = siblingAfter(serializedView[NUM_ROOT_NODES], currentRNode);\n }\n dehydratedViews.push(view);\n }\n }\n return [currentRNode, dehydratedViews];\n}\n/**\n * Reference to a function that searches for a matching dehydrated views\n * stored on a given lContainer.\n * Returns `null` by default, when hydration is not enabled.\n */\nlet _findMatchingDehydratedViewImpl = (lContainer, template) => null;\n/**\n * Retrieves the next dehydrated view from the LContainer and verifies that\n * it matches a given template id (from the TView that was used to create this\n * instance of a view). If the id doesn't match, that means that we are in an\n * unexpected state and can not complete the reconciliation process. Thus,\n * all dehydrated views from this LContainer are removed (including corresponding\n * DOM nodes) and the rendering is performed as if there were no dehydrated views\n * in this container.\n */\nfunction findMatchingDehydratedViewImpl(lContainer, template) {\n const views = lContainer[DEHYDRATED_VIEWS];\n if (!template || views === null || views.length === 0) {\n return null;\n }\n const view = views[0];\n // Verify whether the first dehydrated view in the container matches\n // the template id passed to this function (that originated from a TView\n // that was used to create an instance of an embedded or component views.\n if (view.data[TEMPLATE_ID] === template) {\n // If the template id matches - extract the first view and return it.\n return views.shift();\n }\n else {\n // Otherwise, we are at the state when reconciliation can not be completed,\n // thus we remove all dehydrated views within this container (remove them\n // from internal data structures as well as delete associated elements from\n // the DOM tree).\n removeDehydratedViews(lContainer);\n return null;\n }\n}\nfunction enableFindMatchingDehydratedViewImpl() {\n _findMatchingDehydratedViewImpl = findMatchingDehydratedViewImpl;\n}\nfunction findMatchingDehydratedView(lContainer, template) {\n return _findMatchingDehydratedViewImpl(lContainer, template);\n}\n\n/**\n * Represents a container where one or more views can be attached to a component.\n *\n * Can contain *host views* (created by instantiating a\n * component with the `createComponent()` method), and *embedded views*\n * (created by instantiating a `TemplateRef` with the `createEmbeddedView()` method).\n *\n * A view container instance can contain other view containers,\n * creating a [view hierarchy](guide/glossary#view-hierarchy).\n *\n * @usageNotes\n *\n * The example below demonstrates how the `createComponent` function can be used\n * to create an instance of a ComponentRef dynamically and attach it to an ApplicationRef,\n * so that it gets included into change detection cycles.\n *\n * Note: the example uses standalone components, but the function can also be used for\n * non-standalone components (declared in an NgModule) as well.\n *\n * ```typescript\n * @Component({\n * standalone: true,\n * selector: 'dynamic',\n * template: `<span>This is a content of a dynamic component.</span>`,\n * })\n * class DynamicComponent {\n * vcr = inject(ViewContainerRef);\n * }\n *\n * @Component({\n * standalone: true,\n * selector: 'app',\n * template: `<main>Hi! This is the main content.</main>`,\n * })\n * class AppComponent {\n * vcr = inject(ViewContainerRef);\n *\n * ngAfterViewInit() {\n * const compRef = this.vcr.createComponent(DynamicComponent);\n * compRef.changeDetectorRef.detectChanges();\n * }\n * }\n * ```\n *\n * @see {@link ComponentRef}\n * @see {@link EmbeddedViewRef}\n *\n * @publicApi\n */\nclass ViewContainerRef {\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ELEMENT_ID__ = injectViewContainerRef; }\n}\n/**\n * Creates a ViewContainerRef and stores it on the injector. Or, if the ViewContainerRef\n * already exists, retrieves the existing ViewContainerRef.\n *\n * @returns The ViewContainerRef instance to use\n */\nfunction injectViewContainerRef() {\n const previousTNode = getCurrentTNode();\n return createContainerRef(previousTNode, getLView());\n}\nconst VE_ViewContainerRef = ViewContainerRef;\n// TODO(alxhub): cleaning up this indirection triggers a subtle bug in Closure in g3. Once the fix\n// for that lands, this can be cleaned up.\nconst R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {\n constructor(_lContainer, _hostTNode, _hostLView) {\n super();\n this._lContainer = _lContainer;\n this._hostTNode = _hostTNode;\n this._hostLView = _hostLView;\n }\n get element() {\n return createElementRef(this._hostTNode, this._hostLView);\n }\n get injector() {\n return new NodeInjector(this._hostTNode, this._hostLView);\n }\n /** @deprecated No replacement */\n get parentInjector() {\n const parentLocation = getParentInjectorLocation(this._hostTNode, this._hostLView);\n if (hasParentInjector(parentLocation)) {\n const parentView = getParentInjectorView(parentLocation, this._hostLView);\n const injectorIndex = getParentInjectorIndex(parentLocation);\n ngDevMode && assertNodeInjector(parentView, injectorIndex);\n const parentTNode = parentView[TVIEW].data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */];\n return new NodeInjector(parentTNode, parentView);\n }\n else {\n return new NodeInjector(null, this._hostLView);\n }\n }\n clear() {\n while (this.length > 0) {\n this.remove(this.length - 1);\n }\n }\n get(index) {\n const viewRefs = getViewRefs(this._lContainer);\n return viewRefs !== null && viewRefs[index] || null;\n }\n get length() {\n return this._lContainer.length - CONTAINER_HEADER_OFFSET;\n }\n createEmbeddedView(templateRef, context, indexOrOptions) {\n let index;\n let injector;\n if (typeof indexOrOptions === 'number') {\n index = indexOrOptions;\n }\n else if (indexOrOptions != null) {\n index = indexOrOptions.index;\n injector = indexOrOptions.injector;\n }\n const hydrationInfo = findMatchingDehydratedView(this._lContainer, templateRef.ssrId);\n const viewRef = templateRef.createEmbeddedViewImpl(context || {}, injector, hydrationInfo);\n // If there is a matching dehydrated view, but the host TNode is located in the skip\n // hydration block, this means that the content was detached (as a part of the skip\n // hydration logic) and it needs to be appended into the DOM.\n const skipDomInsertion = !!hydrationInfo && !hasInSkipHydrationBlockFlag(this._hostTNode);\n this.insertImpl(viewRef, index, skipDomInsertion);\n return viewRef;\n }\n createComponent(componentFactoryOrType, indexOrOptions, injector, projectableNodes, environmentInjector) {\n const isComponentFactory = componentFactoryOrType && !isType(componentFactoryOrType);\n let index;\n // This function supports 2 signatures and we need to handle options correctly for both:\n // 1. When first argument is a Component type. This signature also requires extra\n // options to be provided as object (more ergonomic option).\n // 2. First argument is a Component factory. In this case extra options are represented as\n // positional arguments. This signature is less ergonomic and will be deprecated.\n if (isComponentFactory) {\n if (ngDevMode) {\n assertEqual(typeof indexOrOptions !== 'object', true, 'It looks like Component factory was provided as the first argument ' +\n 'and an options object as the second argument. This combination of arguments ' +\n 'is incompatible. You can either change the first argument to provide Component ' +\n 'type or change the second argument to be a number (representing an index at ' +\n 'which to insert the new component\\'s host view into this container)');\n }\n index = indexOrOptions;\n }\n else {\n if (ngDevMode) {\n assertDefined(getComponentDef(componentFactoryOrType), `Provided Component class doesn't contain Component definition. ` +\n `Please check whether provided class has @Component decorator.`);\n assertEqual(typeof indexOrOptions !== 'number', true, 'It looks like Component type was provided as the first argument ' +\n 'and a number (representing an index at which to insert the new component\\'s ' +\n 'host view into this container as the second argument. This combination of arguments ' +\n 'is incompatible. Please use an object as the second argument instead.');\n }\n const options = (indexOrOptions || {});\n if (ngDevMode && options.environmentInjector && options.ngModuleRef) {\n throwError(`Cannot pass both environmentInjector and ngModuleRef options to createComponent().`);\n }\n index = options.index;\n injector = options.injector;\n projectableNodes = options.projectableNodes;\n environmentInjector = options.environmentInjector || options.ngModuleRef;\n }\n const componentFactory = isComponentFactory ?\n componentFactoryOrType :\n new ComponentFactory(getComponentDef(componentFactoryOrType));\n const contextInjector = injector || this.parentInjector;\n // If an `NgModuleRef` is not provided explicitly, try retrieving it from the DI tree.\n if (!environmentInjector && componentFactory.ngModule == null) {\n // For the `ComponentFactory` case, entering this logic is very unlikely, since we expect that\n // an instance of a `ComponentFactory`, resolved via `ComponentFactoryResolver` would have an\n // `ngModule` field. This is possible in some test scenarios and potentially in some JIT-based\n // use-cases. For the `ComponentFactory` case we preserve backwards-compatibility and try\n // using a provided injector first, then fall back to the parent injector of this\n // `ViewContainerRef` instance.\n //\n // For the factory-less case, it's critical to establish a connection with the module\n // injector tree (by retrieving an instance of an `NgModuleRef` and accessing its injector),\n // so that a component can use DI tokens provided in MgModules. For this reason, we can not\n // rely on the provided injector, since it might be detached from the DI tree (for example, if\n // it was created via `Injector.create` without specifying a parent injector, or if an\n // injector is retrieved from an `NgModuleRef` created via `createNgModule` using an\n // NgModule outside of a module tree). Instead, we always use `ViewContainerRef`'s parent\n // injector, which is normally connected to the DI tree, which includes module injector\n // subtree.\n const _injector = isComponentFactory ? contextInjector : this.parentInjector;\n // DO NOT REFACTOR. The code here used to have a `injector.get(NgModuleRef, null) ||\n // undefined` expression which seems to cause internal google apps to fail. This is documented\n // in the following internal bug issue: go/b/142967802\n const result = _injector.get(EnvironmentInjector, null);\n if (result) {\n environmentInjector = result;\n }\n }\n const componentDef = getComponentDef(componentFactory.componentType ?? {});\n const dehydratedView = findMatchingDehydratedView(this._lContainer, componentDef?.id ?? null);\n const rNode = dehydratedView?.firstChild ?? null;\n const componentRef = componentFactory.create(contextInjector, projectableNodes, rNode, environmentInjector);\n // If there is a matching dehydrated view, but the host TNode is located in the skip\n // hydration block, this means that the content was detached (as a part of the skip\n // hydration logic) and it needs to be appended into the DOM.\n const skipDomInsertion = !!dehydratedView && !hasInSkipHydrationBlockFlag(this._hostTNode);\n this.insertImpl(componentRef.hostView, index, skipDomInsertion);\n return componentRef;\n }\n insert(viewRef, index) {\n return this.insertImpl(viewRef, index, false);\n }\n insertImpl(viewRef, index, skipDomInsertion) {\n const lView = viewRef._lView;\n const tView = lView[TVIEW];\n if (ngDevMode && viewRef.destroyed) {\n throw new Error('Cannot insert a destroyed View in a ViewContainer!');\n }\n if (viewAttachedToContainer(lView)) {\n // If view is already attached, detach it first so we clean up references appropriately.\n const prevIdx = this.indexOf(viewRef);\n // A view might be attached either to this or a different container. The `prevIdx` for\n // those cases will be:\n // equal to -1 for views attached to this ViewContainerRef\n // >= 0 for views attached to a different ViewContainerRef\n if (prevIdx !== -1) {\n this.detach(prevIdx);\n }\n else {\n const prevLContainer = lView[PARENT];\n ngDevMode &&\n assertEqual(isLContainer(prevLContainer), true, 'An attached view should have its PARENT point to a container.');\n // We need to re-create a R3ViewContainerRef instance since those are not stored on\n // LView (nor anywhere else).\n const prevVCRef = new R3ViewContainerRef(prevLContainer, prevLContainer[T_HOST], prevLContainer[PARENT]);\n prevVCRef.detach(prevVCRef.indexOf(viewRef));\n }\n }\n // Logical operation of adding `LView` to `LContainer`\n const adjustedIdx = this._adjustIndex(index);\n const lContainer = this._lContainer;\n addLViewToLContainer(lContainer, lView, adjustedIdx, !skipDomInsertion);\n viewRef.attachToViewContainerRef();\n addToArray(getOrCreateViewRefs(lContainer), adjustedIdx, viewRef);\n return viewRef;\n }\n move(viewRef, newIndex) {\n if (ngDevMode && viewRef.destroyed) {\n throw new Error('Cannot move a destroyed View in a ViewContainer!');\n }\n return this.insert(viewRef, newIndex);\n }\n indexOf(viewRef) {\n const viewRefsArr = getViewRefs(this._lContainer);\n return viewRefsArr !== null ? viewRefsArr.indexOf(viewRef) : -1;\n }\n remove(index) {\n const adjustedIdx = this._adjustIndex(index, -1);\n const detachedView = detachView(this._lContainer, adjustedIdx);\n if (detachedView) {\n // Before destroying the view, remove it from the container's array of `ViewRef`s.\n // This ensures the view container length is updated before calling\n // `destroyLView`, which could recursively call view container methods that\n // rely on an accurate container length.\n // (e.g. a method on this view container being called by a child directive's OnDestroy\n // lifecycle hook)\n removeFromArray(getOrCreateViewRefs(this._lContainer), adjustedIdx);\n destroyLView(detachedView[TVIEW], detachedView);\n }\n }\n detach(index) {\n const adjustedIdx = this._adjustIndex(index, -1);\n const view = detachView(this._lContainer, adjustedIdx);\n const wasDetached = view && removeFromArray(getOrCreateViewRefs(this._lContainer), adjustedIdx) != null;\n return wasDetached ? new ViewRef$1(view) : null;\n }\n _adjustIndex(index, shift = 0) {\n if (index == null) {\n return this.length + shift;\n }\n if (ngDevMode) {\n assertGreaterThan(index, -1, `ViewRef index must be positive, got ${index}`);\n // +1 because it's legal to insert at the end.\n assertLessThan(index, this.length + 1 + shift, 'index');\n }\n return index;\n }\n};\nfunction getViewRefs(lContainer) {\n return lContainer[VIEW_REFS];\n}\nfunction getOrCreateViewRefs(lContainer) {\n return (lContainer[VIEW_REFS] || (lContainer[VIEW_REFS] = []));\n}\n/**\n * Creates a ViewContainerRef and stores it on the injector.\n *\n * @param hostTNode The node that is requesting a ViewContainerRef\n * @param hostLView The view to which the node belongs\n * @returns The ViewContainerRef instance to use\n */\nfunction createContainerRef(hostTNode, hostLView) {\n ngDevMode && assertTNodeType(hostTNode, 12 /* TNodeType.AnyContainer */ | 3 /* TNodeType.AnyRNode */);\n let lContainer;\n const slotValue = hostLView[hostTNode.index];\n if (isLContainer(slotValue)) {\n // If the host is a container, we don't need to create a new LContainer\n lContainer = slotValue;\n }\n else {\n // An LContainer anchor can not be `null`, but we set it here temporarily\n // and update to the actual value later in this function (see\n // `_locateOrCreateAnchorNode`).\n lContainer = createLContainer(slotValue, hostLView, null, hostTNode);\n hostLView[hostTNode.index] = lContainer;\n addToViewTree(hostLView, lContainer);\n }\n _locateOrCreateAnchorNode(lContainer, hostLView, hostTNode, slotValue);\n return new R3ViewContainerRef(lContainer, hostTNode, hostLView);\n}\n/**\n * Creates and inserts a comment node that acts as an anchor for a view container.\n *\n * If the host is a regular element, we have to insert a comment node manually which will\n * be used as an anchor when inserting elements. In this specific case we use low-level DOM\n * manipulation to insert it.\n */\nfunction insertAnchorNode(hostLView, hostTNode) {\n const renderer = hostLView[RENDERER];\n ngDevMode && ngDevMode.rendererCreateComment++;\n const commentNode = renderer.createComment(ngDevMode ? 'container' : '');\n const hostNative = getNativeByTNode(hostTNode, hostLView);\n const parentOfHostNative = nativeParentNode(renderer, hostNative);\n nativeInsertBefore(renderer, parentOfHostNative, commentNode, nativeNextSibling(renderer, hostNative), false);\n return commentNode;\n}\nlet _locateOrCreateAnchorNode = createAnchorNode;\n/**\n * Regular creation mode: an anchor is created and\n * assigned to the `lContainer[NATIVE]` slot.\n */\nfunction createAnchorNode(lContainer, hostLView, hostTNode, slotValue) {\n // We already have a native element (anchor) set, return.\n if (lContainer[NATIVE])\n return;\n let commentNode;\n // If the host is an element container, the native host element is guaranteed to be a\n // comment and we can reuse that comment as anchor element for the new LContainer.\n // The comment node in question is already part of the DOM structure so we don't need to append\n // it again.\n if (hostTNode.type & 8 /* TNodeType.ElementContainer */) {\n commentNode = unwrapRNode(slotValue);\n }\n else {\n commentNode = insertAnchorNode(hostLView, hostTNode);\n }\n lContainer[NATIVE] = commentNode;\n}\n/**\n * Hydration logic that looks up:\n * - an anchor node in the DOM and stores the node in `lContainer[NATIVE]`\n * - all dehydrated views in this container and puts them into `lContainer[DEHYDRATED_VIEWS]`\n */\nfunction locateOrCreateAnchorNode(lContainer, hostLView, hostTNode, slotValue) {\n // We already have a native element (anchor) set and the process\n // of finding dehydrated views happened (so the `lContainer[DEHYDRATED_VIEWS]`\n // is not null), exit early.\n if (lContainer[NATIVE] && lContainer[DEHYDRATED_VIEWS])\n return;\n const hydrationInfo = hostLView[HYDRATION];\n const noOffsetIndex = hostTNode.index - HEADER_OFFSET;\n // TODO(akushnir): this should really be a single condition, refactor the code\n // to use `hasInSkipHydrationBlockFlag` logic inside `isInSkipHydrationBlock`.\n const skipHydration = isInSkipHydrationBlock(hostTNode) || hasInSkipHydrationBlockFlag(hostTNode);\n const isNodeCreationMode = !hydrationInfo || skipHydration || isDisconnectedNode$1(hydrationInfo, noOffsetIndex);\n // Regular creation mode.\n if (isNodeCreationMode) {\n return createAnchorNode(lContainer, hostLView, hostTNode, slotValue);\n }\n // Hydration mode, looking up an anchor node and dehydrated views in DOM.\n const currentRNode = getSegmentHead(hydrationInfo, noOffsetIndex);\n const serializedViews = hydrationInfo.data[CONTAINERS]?.[noOffsetIndex];\n ngDevMode &&\n assertDefined(serializedViews, 'Unexpected state: no hydration info available for a given TNode, ' +\n 'which represents a view container.');\n const [commentNode, dehydratedViews] = locateDehydratedViewsInContainer(currentRNode, serializedViews);\n if (ngDevMode) {\n validateMatchingNode(commentNode, Node.COMMENT_NODE, null, hostLView, hostTNode, true);\n // Do not throw in case this node is already claimed (thus `false` as a second\n // argument). If this container is created based on an `<ng-template>`, the comment\n // node would be already claimed from the `template` instruction. If an element acts\n // as an anchor (e.g. <div #vcRef>), a separate comment node would be created/located,\n // so we need to claim it here.\n markRNodeAsClaimedByHydration(commentNode, false);\n }\n lContainer[NATIVE] = commentNode;\n lContainer[DEHYDRATED_VIEWS] = dehydratedViews;\n}\nfunction enableLocateOrCreateContainerRefImpl() {\n _locateOrCreateAnchorNode = locateOrCreateAnchorNode;\n}\n\nclass LQuery_ {\n constructor(queryList) {\n this.queryList = queryList;\n this.matches = null;\n }\n clone() {\n return new LQuery_(this.queryList);\n }\n setDirty() {\n this.queryList.setDirty();\n }\n}\nclass LQueries_ {\n constructor(queries = []) {\n this.queries = queries;\n }\n createEmbeddedView(tView) {\n const tQueries = tView.queries;\n if (tQueries !== null) {\n const noOfInheritedQueries = tView.contentQueries !== null ? tView.contentQueries[0] : tQueries.length;\n const viewLQueries = [];\n // An embedded view has queries propagated from a declaration view at the beginning of the\n // TQueries collection and up until a first content query declared in the embedded view. Only\n // propagated LQueries are created at this point (LQuery corresponding to declared content\n // queries will be instantiated from the content query instructions for each directive).\n for (let i = 0; i < noOfInheritedQueries; i++) {\n const tQuery = tQueries.getByIndex(i);\n const parentLQuery = this.queries[tQuery.indexInDeclarationView];\n viewLQueries.push(parentLQuery.clone());\n }\n return new LQueries_(viewLQueries);\n }\n return null;\n }\n insertView(tView) {\n this.dirtyQueriesWithMatches(tView);\n }\n detachView(tView) {\n this.dirtyQueriesWithMatches(tView);\n }\n dirtyQueriesWithMatches(tView) {\n for (let i = 0; i < this.queries.length; i++) {\n if (getTQuery(tView, i).matches !== null) {\n this.queries[i].setDirty();\n }\n }\n }\n}\nclass TQueryMetadata_ {\n constructor(predicate, flags, read = null) {\n this.predicate = predicate;\n this.flags = flags;\n this.read = read;\n }\n}\nclass TQueries_ {\n constructor(queries = []) {\n this.queries = queries;\n }\n elementStart(tView, tNode) {\n ngDevMode &&\n assertFirstCreatePass(tView, 'Queries should collect results on the first template pass only');\n for (let i = 0; i < this.queries.length; i++) {\n this.queries[i].elementStart(tView, tNode);\n }\n }\n elementEnd(tNode) {\n for (let i = 0; i < this.queries.length; i++) {\n this.queries[i].elementEnd(tNode);\n }\n }\n embeddedTView(tNode) {\n let queriesForTemplateRef = null;\n for (let i = 0; i < this.length; i++) {\n const childQueryIndex = queriesForTemplateRef !== null ? queriesForTemplateRef.length : 0;\n const tqueryClone = this.getByIndex(i).embeddedTView(tNode, childQueryIndex);\n if (tqueryClone) {\n tqueryClone.indexInDeclarationView = i;\n if (queriesForTemplateRef !== null) {\n queriesForTemplateRef.push(tqueryClone);\n }\n else {\n queriesForTemplateRef = [tqueryClone];\n }\n }\n }\n return queriesForTemplateRef !== null ? new TQueries_(queriesForTemplateRef) : null;\n }\n template(tView, tNode) {\n ngDevMode &&\n assertFirstCreatePass(tView, 'Queries should collect results on the first template pass only');\n for (let i = 0; i < this.queries.length; i++) {\n this.queries[i].template(tView, tNode);\n }\n }\n getByIndex(index) {\n ngDevMode && assertIndexInRange(this.queries, index);\n return this.queries[index];\n }\n get length() {\n return this.queries.length;\n }\n track(tquery) {\n this.queries.push(tquery);\n }\n}\nclass TQuery_ {\n constructor(metadata, nodeIndex = -1) {\n this.metadata = metadata;\n this.matches = null;\n this.indexInDeclarationView = -1;\n this.crossesNgTemplate = false;\n /**\n * A flag indicating if a given query still applies to nodes it is crossing. We use this flag\n * (alongside with _declarationNodeIndex) to know when to stop applying content queries to\n * elements in a template.\n */\n this._appliesToNextNode = true;\n this._declarationNodeIndex = nodeIndex;\n }\n elementStart(tView, tNode) {\n if (this.isApplyingToNode(tNode)) {\n this.matchTNode(tView, tNode);\n }\n }\n elementEnd(tNode) {\n if (this._declarationNodeIndex === tNode.index) {\n this._appliesToNextNode = false;\n }\n }\n template(tView, tNode) {\n this.elementStart(tView, tNode);\n }\n embeddedTView(tNode, childQueryIndex) {\n if (this.isApplyingToNode(tNode)) {\n this.crossesNgTemplate = true;\n // A marker indicating a `<ng-template>` element (a placeholder for query results from\n // embedded views created based on this `<ng-template>`).\n this.addMatch(-tNode.index, childQueryIndex);\n return new TQuery_(this.metadata);\n }\n return null;\n }\n isApplyingToNode(tNode) {\n if (this._appliesToNextNode &&\n (this.metadata.flags & 1 /* QueryFlags.descendants */) !== 1 /* QueryFlags.descendants */) {\n const declarationNodeIdx = this._declarationNodeIndex;\n let parent = tNode.parent;\n // Determine if a given TNode is a \"direct\" child of a node on which a content query was\n // declared (only direct children of query's host node can match with the descendants: false\n // option). There are 3 main use-case / conditions to consider here:\n // - <needs-target><i #target></i></needs-target>: here <i #target> parent node is a query\n // host node;\n // - <needs-target><ng-template [ngIf]=\"true\"><i #target></i></ng-template></needs-target>:\n // here <i #target> parent node is null;\n // - <needs-target><ng-container><i #target></i></ng-container></needs-target>: here we need\n // to go past `<ng-container>` to determine <i #target> parent node (but we shouldn't traverse\n // up past the query's host node!).\n while (parent !== null && (parent.type & 8 /* TNodeType.ElementContainer */) &&\n parent.index !== declarationNodeIdx) {\n parent = parent.parent;\n }\n return declarationNodeIdx === (parent !== null ? parent.index : -1);\n }\n return this._appliesToNextNode;\n }\n matchTNode(tView, tNode) {\n const predicate = this.metadata.predicate;\n if (Array.isArray(predicate)) {\n for (let i = 0; i < predicate.length; i++) {\n const name = predicate[i];\n this.matchTNodeWithReadOption(tView, tNode, getIdxOfMatchingSelector(tNode, name));\n // Also try matching the name to a provider since strings can be used as DI tokens too.\n this.matchTNodeWithReadOption(tView, tNode, locateDirectiveOrProvider(tNode, tView, name, false, false));\n }\n }\n else {\n if (predicate === TemplateRef) {\n if (tNode.type & 4 /* TNodeType.Container */) {\n this.matchTNodeWithReadOption(tView, tNode, -1);\n }\n }\n else {\n this.matchTNodeWithReadOption(tView, tNode, locateDirectiveOrProvider(tNode, tView, predicate, false, false));\n }\n }\n }\n matchTNodeWithReadOption(tView, tNode, nodeMatchIdx) {\n if (nodeMatchIdx !== null) {\n const read = this.metadata.read;\n if (read !== null) {\n if (read === ElementRef || read === ViewContainerRef ||\n read === TemplateRef && (tNode.type & 4 /* TNodeType.Container */)) {\n this.addMatch(tNode.index, -2);\n }\n else {\n const directiveOrProviderIdx = locateDirectiveOrProvider(tNode, tView, read, false, false);\n if (directiveOrProviderIdx !== null) {\n this.addMatch(tNode.index, directiveOrProviderIdx);\n }\n }\n }\n else {\n this.addMatch(tNode.index, nodeMatchIdx);\n }\n }\n }\n addMatch(tNodeIdx, matchIdx) {\n if (this.matches === null) {\n this.matches = [tNodeIdx, matchIdx];\n }\n else {\n this.matches.push(tNodeIdx, matchIdx);\n }\n }\n}\n/**\n * Iterates over local names for a given node and returns directive index\n * (or -1 if a local name points to an element).\n *\n * @param tNode static data of a node to check\n * @param selector selector to match\n * @returns directive index, -1 or null if a selector didn't match any of the local names\n */\nfunction getIdxOfMatchingSelector(tNode, selector) {\n const localNames = tNode.localNames;\n if (localNames !== null) {\n for (let i = 0; i < localNames.length; i += 2) {\n if (localNames[i] === selector) {\n return localNames[i + 1];\n }\n }\n }\n return null;\n}\nfunction createResultByTNodeType(tNode, currentView) {\n if (tNode.type & (3 /* TNodeType.AnyRNode */ | 8 /* TNodeType.ElementContainer */)) {\n return createElementRef(tNode, currentView);\n }\n else if (tNode.type & 4 /* TNodeType.Container */) {\n return createTemplateRef(tNode, currentView);\n }\n return null;\n}\nfunction createResultForNode(lView, tNode, matchingIdx, read) {\n if (matchingIdx === -1) {\n // if read token and / or strategy is not specified, detect it using appropriate tNode type\n return createResultByTNodeType(tNode, lView);\n }\n else if (matchingIdx === -2) {\n // read a special token from a node injector\n return createSpecialToken(lView, tNode, read);\n }\n else {\n // read a token\n return getNodeInjectable(lView, lView[TVIEW], matchingIdx, tNode);\n }\n}\nfunction createSpecialToken(lView, tNode, read) {\n if (read === ElementRef) {\n return createElementRef(tNode, lView);\n }\n else if (read === TemplateRef) {\n return createTemplateRef(tNode, lView);\n }\n else if (read === ViewContainerRef) {\n ngDevMode && assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */);\n return createContainerRef(tNode, lView);\n }\n else {\n ngDevMode &&\n throwError(`Special token to read should be one of ElementRef, TemplateRef or ViewContainerRef but got ${stringify(read)}.`);\n }\n}\n/**\n * A helper function that creates query results for a given view. This function is meant to do the\n * processing once and only once for a given view instance (a set of results for a given view\n * doesn't change).\n */\nfunction materializeViewResults(tView, lView, tQuery, queryIndex) {\n const lQuery = lView[QUERIES].queries[queryIndex];\n if (lQuery.matches === null) {\n const tViewData = tView.data;\n const tQueryMatches = tQuery.matches;\n const result = [];\n for (let i = 0; i < tQueryMatches.length; i += 2) {\n const matchedNodeIdx = tQueryMatches[i];\n if (matchedNodeIdx < 0) {\n // we at the <ng-template> marker which might have results in views created based on this\n // <ng-template> - those results will be in separate views though, so here we just leave\n // null as a placeholder\n result.push(null);\n }\n else {\n ngDevMode && assertIndexInRange(tViewData, matchedNodeIdx);\n const tNode = tViewData[matchedNodeIdx];\n result.push(createResultForNode(lView, tNode, tQueryMatches[i + 1], tQuery.metadata.read));\n }\n }\n lQuery.matches = result;\n }\n return lQuery.matches;\n}\n/**\n * A helper function that collects (already materialized) query results from a tree of views,\n * starting with a provided LView.\n */\nfunction collectQueryResults(tView, lView, queryIndex, result) {\n const tQuery = tView.queries.getByIndex(queryIndex);\n const tQueryMatches = tQuery.matches;\n if (tQueryMatches !== null) {\n const lViewResults = materializeViewResults(tView, lView, tQuery, queryIndex);\n for (let i = 0; i < tQueryMatches.length; i += 2) {\n const tNodeIdx = tQueryMatches[i];\n if (tNodeIdx > 0) {\n result.push(lViewResults[i / 2]);\n }\n else {\n const childQueryIndex = tQueryMatches[i + 1];\n const declarationLContainer = lView[-tNodeIdx];\n ngDevMode && assertLContainer(declarationLContainer);\n // collect matches for views inserted in this container\n for (let i = CONTAINER_HEADER_OFFSET; i < declarationLContainer.length; i++) {\n const embeddedLView = declarationLContainer[i];\n if (embeddedLView[DECLARATION_LCONTAINER] === embeddedLView[PARENT]) {\n collectQueryResults(embeddedLView[TVIEW], embeddedLView, childQueryIndex, result);\n }\n }\n // collect matches for views created from this declaration container and inserted into\n // different containers\n if (declarationLContainer[MOVED_VIEWS] !== null) {\n const embeddedLViews = declarationLContainer[MOVED_VIEWS];\n for (let i = 0; i < embeddedLViews.length; i++) {\n const embeddedLView = embeddedLViews[i];\n collectQueryResults(embeddedLView[TVIEW], embeddedLView, childQueryIndex, result);\n }\n }\n }\n }\n }\n return result;\n}\n/**\n * Refreshes a query by combining matches from all active views and removing matches from deleted\n * views.\n *\n * @returns `true` if a query got dirty during change detection or if this is a static query\n * resolving in creation mode, `false` otherwise.\n *\n * @codeGenApi\n */\nfunction ɵɵqueryRefresh(queryList) {\n const lView = getLView();\n const tView = getTView();\n const queryIndex = getCurrentQueryIndex();\n setCurrentQueryIndex(queryIndex + 1);\n const tQuery = getTQuery(tView, queryIndex);\n if (queryList.dirty &&\n (isCreationMode(lView) ===\n ((tQuery.metadata.flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */))) {\n if (tQuery.matches === null) {\n queryList.reset([]);\n }\n else {\n const result = tQuery.crossesNgTemplate ?\n collectQueryResults(tView, lView, queryIndex, []) :\n materializeViewResults(tView, lView, tQuery, queryIndex);\n queryList.reset(result, unwrapElementRef);\n queryList.notifyOnChanges();\n }\n return true;\n }\n return false;\n}\n/**\n * Creates new QueryList, stores the reference in LView and returns QueryList.\n *\n * @param predicate The type for which the query will search\n * @param flags Flags associated with the query\n * @param read What to save in the query\n *\n * @codeGenApi\n */\nfunction ɵɵviewQuery(predicate, flags, read) {\n ngDevMode && assertNumber(flags, 'Expecting flags');\n const tView = getTView();\n if (tView.firstCreatePass) {\n createTQuery(tView, new TQueryMetadata_(predicate, flags, read), -1);\n if ((flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */) {\n tView.staticViewQueries = true;\n }\n }\n createLQuery(tView, getLView(), flags);\n}\n/**\n * Registers a QueryList, associated with a content query, for later refresh (part of a view\n * refresh).\n *\n * @param directiveIndex Current directive index\n * @param predicate The type for which the query will search\n * @param flags Flags associated with the query\n * @param read What to save in the query\n * @returns QueryList<T>\n *\n * @codeGenApi\n */\nfunction ɵɵcontentQuery(directiveIndex, predicate, flags, read) {\n ngDevMode && assertNumber(flags, 'Expecting flags');\n const tView = getTView();\n if (tView.firstCreatePass) {\n const tNode = getCurrentTNode();\n createTQuery(tView, new TQueryMetadata_(predicate, flags, read), tNode.index);\n saveContentQueryAndDirectiveIndex(tView, directiveIndex);\n if ((flags & 2 /* QueryFlags.isStatic */) === 2 /* QueryFlags.isStatic */) {\n tView.staticContentQueries = true;\n }\n }\n createLQuery(tView, getLView(), flags);\n}\n/**\n * Loads a QueryList corresponding to the current view or content query.\n *\n * @codeGenApi\n */\nfunction ɵɵloadQuery() {\n return loadQueryInternal(getLView(), getCurrentQueryIndex());\n}\nfunction loadQueryInternal(lView, queryIndex) {\n ngDevMode &&\n assertDefined(lView[QUERIES], 'LQueries should be defined when trying to load a query');\n ngDevMode && assertIndexInRange(lView[QUERIES].queries, queryIndex);\n return lView[QUERIES].queries[queryIndex].queryList;\n}\nfunction createLQuery(tView, lView, flags) {\n const queryList = new QueryList((flags & 4 /* QueryFlags.emitDistinctChangesOnly */) === 4 /* QueryFlags.emitDistinctChangesOnly */);\n storeCleanupWithContext(tView, lView, queryList, queryList.destroy);\n if (lView[QUERIES] === null)\n lView[QUERIES] = new LQueries_();\n lView[QUERIES].queries.push(new LQuery_(queryList));\n}\nfunction createTQuery(tView, metadata, nodeIndex) {\n if (tView.queries === null)\n tView.queries = new TQueries_();\n tView.queries.track(new TQuery_(metadata, nodeIndex));\n}\nfunction saveContentQueryAndDirectiveIndex(tView, directiveIndex) {\n const tViewContentQueries = tView.contentQueries || (tView.contentQueries = []);\n const lastSavedDirectiveIndex = tViewContentQueries.length ? tViewContentQueries[tViewContentQueries.length - 1] : -1;\n if (directiveIndex !== lastSavedDirectiveIndex) {\n tViewContentQueries.push(tView.queries.length - 1, directiveIndex);\n }\n}\nfunction getTQuery(tView, index) {\n ngDevMode && assertDefined(tView.queries, 'TQueries must be defined to retrieve a TQuery');\n return tView.queries.getByIndex(index);\n}\n\n/**\n * Retrieves `TemplateRef` instance from `Injector` when a local reference is placed on the\n * `<ng-template>` element.\n *\n * @codeGenApi\n */\nfunction ɵɵtemplateRefExtractor(tNode, lView) {\n return createTemplateRef(tNode, lView);\n}\n\n/**\n * A mapping of the @angular/core API surface used in generated expressions to the actual symbols.\n *\n * This should be kept up to date with the public exports of @angular/core.\n */\nconst angularCoreEnv = (() => ({\n 'ɵɵattribute': ɵɵattribute,\n 'ɵɵattributeInterpolate1': ɵɵattributeInterpolate1,\n 'ɵɵattributeInterpolate2': ɵɵattributeInterpolate2,\n 'ɵɵattributeInterpolate3': ɵɵattributeInterpolate3,\n 'ɵɵattributeInterpolate4': ɵɵattributeInterpolate4,\n 'ɵɵattributeInterpolate5': ɵɵattributeInterpolate5,\n 'ɵɵattributeInterpolate6': ɵɵattributeInterpolate6,\n 'ɵɵattributeInterpolate7': ɵɵattributeInterpolate7,\n 'ɵɵattributeInterpolate8': ɵɵattributeInterpolate8,\n 'ɵɵattributeInterpolateV': ɵɵattributeInterpolateV,\n 'ɵɵdefineComponent': ɵɵdefineComponent,\n 'ɵɵdefineDirective': ɵɵdefineDirective,\n 'ɵɵdefineInjectable': ɵɵdefineInjectable,\n 'ɵɵdefineInjector': ɵɵdefineInjector,\n 'ɵɵdefineNgModule': ɵɵdefineNgModule,\n 'ɵɵdefinePipe': ɵɵdefinePipe,\n 'ɵɵdirectiveInject': ɵɵdirectiveInject,\n 'ɵɵgetInheritedFactory': ɵɵgetInheritedFactory,\n 'ɵɵinject': ɵɵinject,\n 'ɵɵinjectAttribute': ɵɵinjectAttribute,\n 'ɵɵinvalidFactory': ɵɵinvalidFactory,\n 'ɵɵinvalidFactoryDep': ɵɵinvalidFactoryDep,\n 'ɵɵtemplateRefExtractor': ɵɵtemplateRefExtractor,\n 'ɵɵresetView': ɵɵresetView,\n 'ɵɵHostDirectivesFeature': ɵɵHostDirectivesFeature,\n 'ɵɵNgOnChangesFeature': ɵɵNgOnChangesFeature,\n 'ɵɵProvidersFeature': ɵɵProvidersFeature,\n 'ɵɵCopyDefinitionFeature': ɵɵCopyDefinitionFeature,\n 'ɵɵInheritDefinitionFeature': ɵɵInheritDefinitionFeature,\n 'ɵɵInputTransformsFeature': ɵɵInputTransformsFeature,\n 'ɵɵStandaloneFeature': ɵɵStandaloneFeature,\n 'ɵɵnextContext': ɵɵnextContext,\n 'ɵɵnamespaceHTML': ɵɵnamespaceHTML,\n 'ɵɵnamespaceMathML': ɵɵnamespaceMathML,\n 'ɵɵnamespaceSVG': ɵɵnamespaceSVG,\n 'ɵɵenableBindings': ɵɵenableBindings,\n 'ɵɵdisableBindings': ɵɵdisableBindings,\n 'ɵɵelementStart': ɵɵelementStart,\n 'ɵɵelementEnd': ɵɵelementEnd,\n 'ɵɵelement': ɵɵelement,\n 'ɵɵelementContainerStart': ɵɵelementContainerStart,\n 'ɵɵelementContainerEnd': ɵɵelementContainerEnd,\n 'ɵɵelementContainer': ɵɵelementContainer,\n 'ɵɵpureFunction0': ɵɵpureFunction0,\n 'ɵɵpureFunction1': ɵɵpureFunction1,\n 'ɵɵpureFunction2': ɵɵpureFunction2,\n 'ɵɵpureFunction3': ɵɵpureFunction3,\n 'ɵɵpureFunction4': ɵɵpureFunction4,\n 'ɵɵpureFunction5': ɵɵpureFunction5,\n 'ɵɵpureFunction6': ɵɵpureFunction6,\n 'ɵɵpureFunction7': ɵɵpureFunction7,\n 'ɵɵpureFunction8': ɵɵpureFunction8,\n 'ɵɵpureFunctionV': ɵɵpureFunctionV,\n 'ɵɵgetCurrentView': ɵɵgetCurrentView,\n 'ɵɵrestoreView': ɵɵrestoreView,\n 'ɵɵlistener': ɵɵlistener,\n 'ɵɵprojection': ɵɵprojection,\n 'ɵɵsyntheticHostProperty': ɵɵsyntheticHostProperty,\n 'ɵɵsyntheticHostListener': ɵɵsyntheticHostListener,\n 'ɵɵpipeBind1': ɵɵpipeBind1,\n 'ɵɵpipeBind2': ɵɵpipeBind2,\n 'ɵɵpipeBind3': ɵɵpipeBind3,\n 'ɵɵpipeBind4': ɵɵpipeBind4,\n 'ɵɵpipeBindV': ɵɵpipeBindV,\n 'ɵɵprojectionDef': ɵɵprojectionDef,\n 'ɵɵhostProperty': ɵɵhostProperty,\n 'ɵɵproperty': ɵɵproperty,\n 'ɵɵpropertyInterpolate': ɵɵpropertyInterpolate,\n 'ɵɵpropertyInterpolate1': ɵɵpropertyInterpolate1,\n 'ɵɵpropertyInterpolate2': ɵɵpropertyInterpolate2,\n 'ɵɵpropertyInterpolate3': ɵɵpropertyInterpolate3,\n 'ɵɵpropertyInterpolate4': ɵɵpropertyInterpolate4,\n 'ɵɵpropertyInterpolate5': ɵɵpropertyInterpolate5,\n 'ɵɵpropertyInterpolate6': ɵɵpropertyInterpolate6,\n 'ɵɵpropertyInterpolate7': ɵɵpropertyInterpolate7,\n 'ɵɵpropertyInterpolate8': ɵɵpropertyInterpolate8,\n 'ɵɵpropertyInterpolateV': ɵɵpropertyInterpolateV,\n 'ɵɵpipe': ɵɵpipe,\n 'ɵɵqueryRefresh': ɵɵqueryRefresh,\n 'ɵɵviewQuery': ɵɵviewQuery,\n 'ɵɵloadQuery': ɵɵloadQuery,\n 'ɵɵcontentQuery': ɵɵcontentQuery,\n 'ɵɵreference': ɵɵreference,\n 'ɵɵclassMap': ɵɵclassMap,\n 'ɵɵclassMapInterpolate1': ɵɵclassMapInterpolate1,\n 'ɵɵclassMapInterpolate2': ɵɵclassMapInterpolate2,\n 'ɵɵclassMapInterpolate3': ɵɵclassMapInterpolate3,\n 'ɵɵclassMapInterpolate4': ɵɵclassMapInterpolate4,\n 'ɵɵclassMapInterpolate5': ɵɵclassMapInterpolate5,\n 'ɵɵclassMapInterpolate6': ɵɵclassMapInterpolate6,\n 'ɵɵclassMapInterpolate7': ɵɵclassMapInterpolate7,\n 'ɵɵclassMapInterpolate8': ɵɵclassMapInterpolate8,\n 'ɵɵclassMapInterpolateV': ɵɵclassMapInterpolateV,\n 'ɵɵstyleMap': ɵɵstyleMap,\n 'ɵɵstyleMapInterpolate1': ɵɵstyleMapInterpolate1,\n 'ɵɵstyleMapInterpolate2': ɵɵstyleMapInterpolate2,\n 'ɵɵstyleMapInterpolate3': ɵɵstyleMapInterpolate3,\n 'ɵɵstyleMapInterpolate4': ɵɵstyleMapInterpolate4,\n 'ɵɵstyleMapInterpolate5': ɵɵstyleMapInterpolate5,\n 'ɵɵstyleMapInterpolate6': ɵɵstyleMapInterpolate6,\n 'ɵɵstyleMapInterpolate7': ɵɵstyleMapInterpolate7,\n 'ɵɵstyleMapInterpolate8': ɵɵstyleMapInterpolate8,\n 'ɵɵstyleMapInterpolateV': ɵɵstyleMapInterpolateV,\n 'ɵɵstyleProp': ɵɵstyleProp,\n 'ɵɵstylePropInterpolate1': ɵɵstylePropInterpolate1,\n 'ɵɵstylePropInterpolate2': ɵɵstylePropInterpolate2,\n 'ɵɵstylePropInterpolate3': ɵɵstylePropInterpolate3,\n 'ɵɵstylePropInterpolate4': ɵɵstylePropInterpolate4,\n 'ɵɵstylePropInterpolate5': ɵɵstylePropInterpolate5,\n 'ɵɵstylePropInterpolate6': ɵɵstylePropInterpolate6,\n 'ɵɵstylePropInterpolate7': ɵɵstylePropInterpolate7,\n 'ɵɵstylePropInterpolate8': ɵɵstylePropInterpolate8,\n 'ɵɵstylePropInterpolateV': ɵɵstylePropInterpolateV,\n 'ɵɵclassProp': ɵɵclassProp,\n 'ɵɵadvance': ɵɵadvance,\n 'ɵɵtemplate': ɵɵtemplate,\n 'ɵɵdefer': ɵɵdefer,\n 'ɵɵtext': ɵɵtext,\n 'ɵɵtextInterpolate': ɵɵtextInterpolate,\n 'ɵɵtextInterpolate1': ɵɵtextInterpolate1,\n 'ɵɵtextInterpolate2': ɵɵtextInterpolate2,\n 'ɵɵtextInterpolate3': ɵɵtextInterpolate3,\n 'ɵɵtextInterpolate4': ɵɵtextInterpolate4,\n 'ɵɵtextInterpolate5': ɵɵtextInterpolate5,\n 'ɵɵtextInterpolate6': ɵɵtextInterpolate6,\n 'ɵɵtextInterpolate7': ɵɵtextInterpolate7,\n 'ɵɵtextInterpolate8': ɵɵtextInterpolate8,\n 'ɵɵtextInterpolateV': ɵɵtextInterpolateV,\n 'ɵɵi18n': ɵɵi18n,\n 'ɵɵi18nAttributes': ɵɵi18nAttributes,\n 'ɵɵi18nExp': ɵɵi18nExp,\n 'ɵɵi18nStart': ɵɵi18nStart,\n 'ɵɵi18nEnd': ɵɵi18nEnd,\n 'ɵɵi18nApply': ɵɵi18nApply,\n 'ɵɵi18nPostprocess': ɵɵi18nPostprocess,\n 'ɵɵresolveWindow': ɵɵresolveWindow,\n 'ɵɵresolveDocument': ɵɵresolveDocument,\n 'ɵɵresolveBody': ɵɵresolveBody,\n 'ɵɵsetComponentScope': ɵɵsetComponentScope,\n 'ɵɵsetNgModuleScope': ɵɵsetNgModuleScope,\n 'ɵɵregisterNgModuleType': registerNgModuleType,\n 'ɵɵsanitizeHtml': ɵɵsanitizeHtml,\n 'ɵɵsanitizeStyle': ɵɵsanitizeStyle,\n 'ɵɵsanitizeResourceUrl': ɵɵsanitizeResourceUrl,\n 'ɵɵsanitizeScript': ɵɵsanitizeScript,\n 'ɵɵsanitizeUrl': ɵɵsanitizeUrl,\n 'ɵɵsanitizeUrlOrResourceUrl': ɵɵsanitizeUrlOrResourceUrl,\n 'ɵɵtrustConstantHtml': ɵɵtrustConstantHtml,\n 'ɵɵtrustConstantResourceUrl': ɵɵtrustConstantResourceUrl,\n 'ɵɵvalidateIframeAttribute': ɵɵvalidateIframeAttribute,\n 'forwardRef': forwardRef,\n 'resolveForwardRef': resolveForwardRef,\n}))();\n\nlet jitOptions = null;\nfunction setJitOptions(options) {\n if (jitOptions !== null) {\n if (options.defaultEncapsulation !== jitOptions.defaultEncapsulation) {\n ngDevMode &&\n console.error('Provided value for `defaultEncapsulation` can not be changed once it has been set.');\n return;\n }\n if (options.preserveWhitespaces !== jitOptions.preserveWhitespaces) {\n ngDevMode &&\n console.error('Provided value for `preserveWhitespaces` can not be changed once it has been set.');\n return;\n }\n }\n jitOptions = options;\n}\nfunction getJitOptions() {\n return jitOptions;\n}\nfunction resetJitOptions() {\n jitOptions = null;\n}\n\nfunction patchModuleCompilation() {\n // Does nothing, but exists as a target for patching.\n}\n\nfunction isModuleWithProviders(value) {\n return value.ngModule !== undefined;\n}\nfunction isNgModule(value) {\n return !!getNgModuleDef(value);\n}\nfunction isPipe(value) {\n return !!getPipeDef$1(value);\n}\nfunction isDirective(value) {\n return !!getDirectiveDef(value);\n}\nfunction isComponent(value) {\n return !!getComponentDef(value);\n}\n\nconst moduleQueue = [];\n/**\n * Enqueues moduleDef to be checked later to see if scope can be set on its\n * component declarations.\n */\nfunction enqueueModuleForDelayedScoping(moduleType, ngModule) {\n moduleQueue.push({ moduleType, ngModule });\n}\nlet flushingModuleQueue = false;\n/**\n * Loops over queued module definitions, if a given module definition has all of its\n * declarations resolved, it dequeues that module definition and sets the scope on\n * its declarations.\n */\nfunction flushModuleScopingQueueAsMuchAsPossible() {\n if (!flushingModuleQueue) {\n flushingModuleQueue = true;\n try {\n for (let i = moduleQueue.length - 1; i >= 0; i--) {\n const { moduleType, ngModule } = moduleQueue[i];\n if (ngModule.declarations && ngModule.declarations.every(isResolvedDeclaration)) {\n // dequeue\n moduleQueue.splice(i, 1);\n setScopeOnDeclaredComponents(moduleType, ngModule);\n }\n }\n }\n finally {\n flushingModuleQueue = false;\n }\n }\n}\n/**\n * Returns truthy if a declaration has resolved. If the declaration happens to be\n * an array of declarations, it will recurse to check each declaration in that array\n * (which may also be arrays).\n */\nfunction isResolvedDeclaration(declaration) {\n if (Array.isArray(declaration)) {\n return declaration.every(isResolvedDeclaration);\n }\n return !!resolveForwardRef(declaration);\n}\n/**\n * Compiles a module in JIT mode.\n *\n * This function automatically gets called when a class has a `@NgModule` decorator.\n */\nfunction compileNgModule(moduleType, ngModule = {}) {\n patchModuleCompilation();\n compileNgModuleDefs(moduleType, ngModule);\n if (ngModule.id !== undefined) {\n registerNgModuleType(moduleType, ngModule.id);\n }\n // Because we don't know if all declarations have resolved yet at the moment the\n // NgModule decorator is executing, we're enqueueing the setting of module scope\n // on its declarations to be run at a later time when all declarations for the module,\n // including forward refs, have resolved.\n enqueueModuleForDelayedScoping(moduleType, ngModule);\n}\n/**\n * Compiles and adds the `ɵmod`, `ɵfac` and `ɵinj` properties to the module class.\n *\n * It's possible to compile a module via this API which will allow duplicate declarations in its\n * root.\n */\nfunction compileNgModuleDefs(moduleType, ngModule, allowDuplicateDeclarationsInRoot = false) {\n ngDevMode && assertDefined(moduleType, 'Required value moduleType');\n ngDevMode && assertDefined(ngModule, 'Required value ngModule');\n const declarations = flatten(ngModule.declarations || EMPTY_ARRAY);\n let ngModuleDef = null;\n Object.defineProperty(moduleType, NG_MOD_DEF, {\n configurable: true,\n get: () => {\n if (ngModuleDef === null) {\n if (ngDevMode && ngModule.imports && ngModule.imports.indexOf(moduleType) > -1) {\n // We need to assert this immediately, because allowing it to continue will cause it to\n // go into an infinite loop before we've reached the point where we throw all the errors.\n throw new Error(`'${stringifyForError(moduleType)}' module can't import itself`);\n }\n const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'NgModule', type: moduleType });\n ngModuleDef = compiler.compileNgModule(angularCoreEnv, `ng:///${moduleType.name}/ɵmod.js`, {\n type: moduleType,\n bootstrap: flatten(ngModule.bootstrap || EMPTY_ARRAY).map(resolveForwardRef),\n declarations: declarations.map(resolveForwardRef),\n imports: flatten(ngModule.imports || EMPTY_ARRAY)\n .map(resolveForwardRef)\n .map(expandModuleWithProviders),\n exports: flatten(ngModule.exports || EMPTY_ARRAY)\n .map(resolveForwardRef)\n .map(expandModuleWithProviders),\n schemas: ngModule.schemas ? flatten(ngModule.schemas) : null,\n id: ngModule.id || null,\n });\n // Set `schemas` on ngModuleDef to an empty array in JIT mode to indicate that runtime\n // should verify that there are no unknown elements in a template. In AOT mode, that check\n // happens at compile time and `schemas` information is not present on Component and Module\n // defs after compilation (so the check doesn't happen the second time at runtime).\n if (!ngModuleDef.schemas) {\n ngModuleDef.schemas = [];\n }\n }\n return ngModuleDef;\n }\n });\n let ngFactoryDef = null;\n Object.defineProperty(moduleType, NG_FACTORY_DEF, {\n get: () => {\n if (ngFactoryDef === null) {\n const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'NgModule', type: moduleType });\n ngFactoryDef = compiler.compileFactory(angularCoreEnv, `ng:///${moduleType.name}/ɵfac.js`, {\n name: moduleType.name,\n type: moduleType,\n deps: reflectDependencies(moduleType),\n target: compiler.FactoryTarget.NgModule,\n typeArgumentCount: 0,\n });\n }\n return ngFactoryDef;\n },\n // Make the property configurable in dev mode to allow overriding in tests\n configurable: !!ngDevMode,\n });\n let ngInjectorDef = null;\n Object.defineProperty(moduleType, NG_INJ_DEF, {\n get: () => {\n if (ngInjectorDef === null) {\n ngDevMode && verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot);\n const meta = {\n name: moduleType.name,\n type: moduleType,\n providers: ngModule.providers || EMPTY_ARRAY,\n imports: [\n (ngModule.imports || EMPTY_ARRAY).map(resolveForwardRef),\n (ngModule.exports || EMPTY_ARRAY).map(resolveForwardRef),\n ],\n };\n const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'NgModule', type: moduleType });\n ngInjectorDef =\n compiler.compileInjector(angularCoreEnv, `ng:///${moduleType.name}/ɵinj.js`, meta);\n }\n return ngInjectorDef;\n },\n // Make the property configurable in dev mode to allow overriding in tests\n configurable: !!ngDevMode,\n });\n}\nfunction generateStandaloneInDeclarationsError(type, location) {\n const prefix = `Unexpected \"${stringifyForError(type)}\" found in the \"declarations\" array of the`;\n const suffix = `\"${stringifyForError(type)}\" is marked as standalone and can't be declared ` +\n 'in any NgModule - did you intend to import it instead (by adding it to the \"imports\" array)?';\n return `${prefix} ${location}, ${suffix}`;\n}\nfunction verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRoot, importingModule) {\n if (verifiedNgModule.get(moduleType))\n return;\n // skip verifications of standalone components, directives, and pipes\n if (isStandalone(moduleType))\n return;\n verifiedNgModule.set(moduleType, true);\n moduleType = resolveForwardRef(moduleType);\n let ngModuleDef;\n if (importingModule) {\n ngModuleDef = getNgModuleDef(moduleType);\n if (!ngModuleDef) {\n throw new Error(`Unexpected value '${moduleType.name}' imported by the module '${importingModule.name}'. Please add an @NgModule annotation.`);\n }\n }\n else {\n ngModuleDef = getNgModuleDef(moduleType, true);\n }\n const errors = [];\n const declarations = maybeUnwrapFn(ngModuleDef.declarations);\n const imports = maybeUnwrapFn(ngModuleDef.imports);\n flatten(imports).map(unwrapModuleWithProvidersImports).forEach(modOrStandaloneCmpt => {\n verifySemanticsOfNgModuleImport(modOrStandaloneCmpt, moduleType);\n verifySemanticsOfNgModuleDef(modOrStandaloneCmpt, false, moduleType);\n });\n const exports = maybeUnwrapFn(ngModuleDef.exports);\n declarations.forEach(verifyDeclarationsHaveDefinitions);\n declarations.forEach(verifyDirectivesHaveSelector);\n declarations.forEach((declarationType) => verifyNotStandalone(declarationType, moduleType));\n const combinedDeclarations = [\n ...declarations.map(resolveForwardRef),\n ...flatten(imports.map(computeCombinedExports)).map(resolveForwardRef),\n ];\n exports.forEach(verifyExportsAreDeclaredOrReExported);\n declarations.forEach(decl => verifyDeclarationIsUnique(decl, allowDuplicateDeclarationsInRoot));\n const ngModule = getAnnotation(moduleType, 'NgModule');\n if (ngModule) {\n ngModule.imports &&\n flatten(ngModule.imports).map(unwrapModuleWithProvidersImports).forEach(mod => {\n verifySemanticsOfNgModuleImport(mod, moduleType);\n verifySemanticsOfNgModuleDef(mod, false, moduleType);\n });\n ngModule.bootstrap && deepForEach(ngModule.bootstrap, verifyCorrectBootstrapType);\n ngModule.bootstrap && deepForEach(ngModule.bootstrap, verifyComponentIsPartOfNgModule);\n }\n // Throw Error if any errors were detected.\n if (errors.length) {\n throw new Error(errors.join('\\n'));\n }\n ////////////////////////////////////////////////////////////////////////////////////////////////\n function verifyDeclarationsHaveDefinitions(type) {\n type = resolveForwardRef(type);\n const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef$1(type);\n if (!def) {\n errors.push(`Unexpected value '${stringifyForError(type)}' declared by the module '${stringifyForError(moduleType)}'. Please add a @Pipe/@Directive/@Component annotation.`);\n }\n }\n function verifyDirectivesHaveSelector(type) {\n type = resolveForwardRef(type);\n const def = getDirectiveDef(type);\n if (!getComponentDef(type) && def && def.selectors.length == 0) {\n errors.push(`Directive ${stringifyForError(type)} has no selector, please add it!`);\n }\n }\n function verifyNotStandalone(type, moduleType) {\n type = resolveForwardRef(type);\n const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef$1(type);\n if (def?.standalone) {\n const location = `\"${stringifyForError(moduleType)}\" NgModule`;\n errors.push(generateStandaloneInDeclarationsError(type, location));\n }\n }\n function verifyExportsAreDeclaredOrReExported(type) {\n type = resolveForwardRef(type);\n const kind = getComponentDef(type) && 'component' || getDirectiveDef(type) && 'directive' ||\n getPipeDef$1(type) && 'pipe';\n if (kind) {\n // only checked if we are declared as Component, Directive, or Pipe\n // Modules don't need to be declared or imported.\n if (combinedDeclarations.lastIndexOf(type) === -1) {\n // We are exporting something which we don't explicitly declare or import.\n errors.push(`Can't export ${kind} ${stringifyForError(type)} from ${stringifyForError(moduleType)} as it was neither declared nor imported!`);\n }\n }\n }\n function verifyDeclarationIsUnique(type, suppressErrors) {\n type = resolveForwardRef(type);\n const existingModule = ownerNgModule.get(type);\n if (existingModule && existingModule !== moduleType) {\n if (!suppressErrors) {\n const modules = [existingModule, moduleType].map(stringifyForError).sort();\n errors.push(`Type ${stringifyForError(type)} is part of the declarations of 2 modules: ${modules[0]} and ${modules[1]}! ` +\n `Please consider moving ${stringifyForError(type)} to a higher module that imports ${modules[0]} and ${modules[1]}. ` +\n `You can also create a new NgModule that exports and includes ${stringifyForError(type)} then import that NgModule in ${modules[0]} and ${modules[1]}.`);\n }\n }\n else {\n // Mark type as having owner.\n ownerNgModule.set(type, moduleType);\n }\n }\n function verifyComponentIsPartOfNgModule(type) {\n type = resolveForwardRef(type);\n const existingModule = ownerNgModule.get(type);\n if (!existingModule && !isStandalone(type)) {\n errors.push(`Component ${stringifyForError(type)} is not part of any NgModule or the module has not been imported into your module.`);\n }\n }\n function verifyCorrectBootstrapType(type) {\n type = resolveForwardRef(type);\n if (!getComponentDef(type)) {\n errors.push(`${stringifyForError(type)} cannot be used as an entry component.`);\n }\n if (isStandalone(type)) {\n // Note: this error should be the same as the\n // `NGMODULE_BOOTSTRAP_IS_STANDALONE` one in AOT compiler.\n errors.push(`The \\`${stringifyForError(type)}\\` class is a standalone component, which can ` +\n `not be used in the \\`@NgModule.bootstrap\\` array. Use the \\`bootstrapApplication\\` ` +\n `function for bootstrap instead.`);\n }\n }\n function verifySemanticsOfNgModuleImport(type, importingModule) {\n type = resolveForwardRef(type);\n const directiveDef = getComponentDef(type) || getDirectiveDef(type);\n if (directiveDef !== null && !directiveDef.standalone) {\n throw new Error(`Unexpected directive '${type.name}' imported by the module '${importingModule.name}'. Please add an @NgModule annotation.`);\n }\n const pipeDef = getPipeDef$1(type);\n if (pipeDef !== null && !pipeDef.standalone) {\n throw new Error(`Unexpected pipe '${type.name}' imported by the module '${importingModule.name}'. Please add an @NgModule annotation.`);\n }\n }\n}\nfunction unwrapModuleWithProvidersImports(typeOrWithProviders) {\n typeOrWithProviders = resolveForwardRef(typeOrWithProviders);\n return typeOrWithProviders.ngModule || typeOrWithProviders;\n}\nfunction getAnnotation(type, name) {\n let annotation = null;\n collect(type.__annotations__);\n collect(type.decorators);\n return annotation;\n function collect(annotations) {\n if (annotations) {\n annotations.forEach(readAnnotation);\n }\n }\n function readAnnotation(decorator) {\n if (!annotation) {\n const proto = Object.getPrototypeOf(decorator);\n if (proto.ngMetadataName == name) {\n annotation = decorator;\n }\n else if (decorator.type) {\n const proto = Object.getPrototypeOf(decorator.type);\n if (proto.ngMetadataName == name) {\n annotation = decorator.args[0];\n }\n }\n }\n }\n}\n/**\n * Keep track of compiled components. This is needed because in tests we often want to compile the\n * same component with more than one NgModule. This would cause an error unless we reset which\n * NgModule the component belongs to. We keep the list of compiled components here so that the\n * TestBed can reset it later.\n */\nlet ownerNgModule = new WeakMap();\nlet verifiedNgModule = new WeakMap();\nfunction resetCompiledComponents() {\n ownerNgModule = new WeakMap();\n verifiedNgModule = new WeakMap();\n moduleQueue.length = 0;\n GENERATED_COMP_IDS.clear();\n}\n/**\n * Computes the combined declarations of explicit declarations, as well as declarations inherited by\n * traversing the exports of imported modules.\n * @param type\n */\nfunction computeCombinedExports(type) {\n type = resolveForwardRef(type);\n const ngModuleDef = getNgModuleDef(type);\n // a standalone component, directive or pipe\n if (ngModuleDef === null) {\n return [type];\n }\n return flatten(maybeUnwrapFn(ngModuleDef.exports).map((type) => {\n const ngModuleDef = getNgModuleDef(type);\n if (ngModuleDef) {\n verifySemanticsOfNgModuleDef(type, false);\n return computeCombinedExports(type);\n }\n else {\n return type;\n }\n }));\n}\n/**\n * Some declared components may be compiled asynchronously, and thus may not have their\n * ɵcmp set yet. If this is the case, then a reference to the module is written into\n * the `ngSelectorScope` property of the declared type.\n */\nfunction setScopeOnDeclaredComponents(moduleType, ngModule) {\n const declarations = flatten(ngModule.declarations || EMPTY_ARRAY);\n const transitiveScopes = transitiveScopesFor(moduleType);\n declarations.forEach(declaration => {\n declaration = resolveForwardRef(declaration);\n if (declaration.hasOwnProperty(NG_COMP_DEF)) {\n // A `ɵcmp` field exists - go ahead and patch the component directly.\n const component = declaration;\n const componentDef = getComponentDef(component);\n patchComponentDefWithScope(componentDef, transitiveScopes);\n }\n else if (!declaration.hasOwnProperty(NG_DIR_DEF) && !declaration.hasOwnProperty(NG_PIPE_DEF)) {\n // Set `ngSelectorScope` for future reference when the component compilation finishes.\n declaration.ngSelectorScope = moduleType;\n }\n });\n}\n/**\n * Patch the definition of a component with directives and pipes from the compilation scope of\n * a given module.\n */\nfunction patchComponentDefWithScope(componentDef, transitiveScopes) {\n componentDef.directiveDefs = () => Array.from(transitiveScopes.compilation.directives)\n .map(dir => dir.hasOwnProperty(NG_COMP_DEF) ? getComponentDef(dir) : getDirectiveDef(dir))\n .filter(def => !!def);\n componentDef.pipeDefs = () => Array.from(transitiveScopes.compilation.pipes).map(pipe => getPipeDef$1(pipe));\n componentDef.schemas = transitiveScopes.schemas;\n // Since we avoid Components/Directives/Pipes recompiling in case there are no overrides, we\n // may face a problem where previously compiled defs available to a given Component/Directive\n // are cached in TView and may become stale (in case any of these defs gets recompiled). In\n // order to avoid this problem, we force fresh TView to be created.\n componentDef.tView = null;\n}\n/**\n * Compute the pair of transitive scopes (compilation scope and exported scope) for a given type\n * (either a NgModule or a standalone component / directive / pipe).\n */\nfunction transitiveScopesFor(type) {\n if (isNgModule(type)) {\n return transitiveScopesForNgModule(type);\n }\n else if (isStandalone(type)) {\n const directiveDef = getComponentDef(type) || getDirectiveDef(type);\n if (directiveDef !== null) {\n return {\n schemas: null,\n compilation: {\n directives: new Set(),\n pipes: new Set(),\n },\n exported: {\n directives: new Set([type]),\n pipes: new Set(),\n },\n };\n }\n const pipeDef = getPipeDef$1(type);\n if (pipeDef !== null) {\n return {\n schemas: null,\n compilation: {\n directives: new Set(),\n pipes: new Set(),\n },\n exported: {\n directives: new Set(),\n pipes: new Set([type]),\n },\n };\n }\n }\n // TODO: change the error message to be more user-facing and take standalone into account\n throw new Error(`${type.name} does not have a module def (ɵmod property)`);\n}\n/**\n * Compute the pair of transitive scopes (compilation scope and exported scope) for a given module.\n *\n * This operation is memoized and the result is cached on the module's definition. This function can\n * be called on modules with components that have not fully compiled yet, but the result should not\n * be used until they have.\n *\n * @param moduleType module that transitive scope should be calculated for.\n */\nfunction transitiveScopesForNgModule(moduleType) {\n const def = getNgModuleDef(moduleType, true);\n if (def.transitiveCompileScopes !== null) {\n return def.transitiveCompileScopes;\n }\n const scopes = {\n schemas: def.schemas || null,\n compilation: {\n directives: new Set(),\n pipes: new Set(),\n },\n exported: {\n directives: new Set(),\n pipes: new Set(),\n },\n };\n maybeUnwrapFn(def.imports).forEach((imported) => {\n // When this module imports another, the imported module's exported directives and pipes are\n // added to the compilation scope of this module.\n const importedScope = transitiveScopesFor(imported);\n importedScope.exported.directives.forEach(entry => scopes.compilation.directives.add(entry));\n importedScope.exported.pipes.forEach(entry => scopes.compilation.pipes.add(entry));\n });\n maybeUnwrapFn(def.declarations).forEach(declared => {\n const declaredWithDefs = declared;\n if (getPipeDef$1(declaredWithDefs)) {\n scopes.compilation.pipes.add(declared);\n }\n else {\n // Either declared has a ɵcmp or ɵdir, or it's a component which hasn't\n // had its template compiled yet. In either case, it gets added to the compilation's\n // directives.\n scopes.compilation.directives.add(declared);\n }\n });\n maybeUnwrapFn(def.exports).forEach((exported) => {\n const exportedType = exported;\n // Either the type is a module, a pipe, or a component/directive (which may not have a\n // ɵcmp as it might be compiled asynchronously).\n if (isNgModule(exportedType)) {\n // When this module exports another, the exported module's exported directives and pipes are\n // added to both the compilation and exported scopes of this module.\n const exportedScope = transitiveScopesFor(exportedType);\n exportedScope.exported.directives.forEach(entry => {\n scopes.compilation.directives.add(entry);\n scopes.exported.directives.add(entry);\n });\n exportedScope.exported.pipes.forEach(entry => {\n scopes.compilation.pipes.add(entry);\n scopes.exported.pipes.add(entry);\n });\n }\n else if (getPipeDef$1(exportedType)) {\n scopes.exported.pipes.add(exportedType);\n }\n else {\n scopes.exported.directives.add(exportedType);\n }\n });\n def.transitiveCompileScopes = scopes;\n return scopes;\n}\nfunction expandModuleWithProviders(value) {\n if (isModuleWithProviders(value)) {\n return value.ngModule;\n }\n return value;\n}\n\n/**\n * Keep track of the compilation depth to avoid reentrancy issues during JIT compilation. This\n * matters in the following scenario:\n *\n * Consider a component 'A' that extends component 'B', both declared in module 'M'. During\n * the compilation of 'A' the definition of 'B' is requested to capture the inheritance chain,\n * potentially triggering compilation of 'B'. If this nested compilation were to trigger\n * `flushModuleScopingQueueAsMuchAsPossible` it may happen that module 'M' is still pending in the\n * queue, resulting in 'A' and 'B' to be patched with the NgModule scope. As the compilation of\n * 'A' is still in progress, this would introduce a circular dependency on its compilation. To avoid\n * this issue, the module scope queue is only flushed for compilations at the depth 0, to ensure\n * all compilations have finished.\n */\nlet compilationDepth = 0;\n/**\n * Compile an Angular component according to its decorator metadata, and patch the resulting\n * component def (ɵcmp) onto the component type.\n *\n * Compilation may be asynchronous (due to the need to resolve URLs for the component template or\n * other resources, for example). In the event that compilation is not immediate, `compileComponent`\n * will enqueue resource resolution into a global queue and will fail to return the `ɵcmp`\n * until the global queue has been resolved with a call to `resolveComponentResources`.\n */\nfunction compileComponent(type, metadata) {\n // Initialize ngDevMode. This must be the first statement in compileComponent.\n // See the `initNgDevMode` docstring for more information.\n (typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode();\n let ngComponentDef = null;\n // Metadata may have resources which need to be resolved.\n maybeQueueResolutionOfComponentResources(type, metadata);\n // Note that we're using the same function as `Directive`, because that's only subset of metadata\n // that we need to create the ngFactoryDef. We're avoiding using the component metadata\n // because we'd have to resolve the asynchronous templates.\n addDirectiveFactoryDef(type, metadata);\n Object.defineProperty(type, NG_COMP_DEF, {\n get: () => {\n if (ngComponentDef === null) {\n const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'component', type: type });\n if (componentNeedsResolution(metadata)) {\n const error = [`Component '${type.name}' is not resolved:`];\n if (metadata.templateUrl) {\n error.push(` - templateUrl: ${metadata.templateUrl}`);\n }\n if (metadata.styleUrls && metadata.styleUrls.length) {\n error.push(` - styleUrls: ${JSON.stringify(metadata.styleUrls)}`);\n }\n error.push(`Did you run and wait for 'resolveComponentResources()'?`);\n throw new Error(error.join('\\n'));\n }\n // This const was called `jitOptions` previously but had to be renamed to `options` because\n // of a bug with Terser that caused optimized JIT builds to throw a `ReferenceError`.\n // This bug was investigated in https://github.com/angular/angular-cli/issues/17264.\n // We should not rename it back until https://github.com/terser/terser/issues/615 is fixed.\n const options = getJitOptions();\n let preserveWhitespaces = metadata.preserveWhitespaces;\n if (preserveWhitespaces === undefined) {\n if (options !== null && options.preserveWhitespaces !== undefined) {\n preserveWhitespaces = options.preserveWhitespaces;\n }\n else {\n preserveWhitespaces = false;\n }\n }\n let encapsulation = metadata.encapsulation;\n if (encapsulation === undefined) {\n if (options !== null && options.defaultEncapsulation !== undefined) {\n encapsulation = options.defaultEncapsulation;\n }\n else {\n encapsulation = ViewEncapsulation$1.Emulated;\n }\n }\n const templateUrl = metadata.templateUrl || `ng:///${type.name}/template.html`;\n const meta = {\n ...directiveMetadata(type, metadata),\n typeSourceSpan: compiler.createParseSourceSpan('Component', type.name, templateUrl),\n template: metadata.template || '',\n preserveWhitespaces,\n styles: metadata.styles || EMPTY_ARRAY,\n animations: metadata.animations,\n // JIT components are always compiled against an empty set of `declarations`. Instead, the\n // `directiveDefs` and `pipeDefs` are updated at a later point:\n // * for NgModule-based components, they're set when the NgModule which declares the\n // component resolves in the module scoping queue\n // * for standalone components, they're set just below, after `compileComponent`.\n declarations: [],\n changeDetection: metadata.changeDetection,\n encapsulation,\n interpolation: metadata.interpolation,\n viewProviders: metadata.viewProviders || null,\n };\n compilationDepth++;\n try {\n if (meta.usesInheritance) {\n addDirectiveDefToUndecoratedParents(type);\n }\n ngComponentDef =\n compiler.compileComponent(angularCoreEnv, templateUrl, meta);\n if (metadata.standalone) {\n // Patch the component definition for standalone components with `directiveDefs` and\n // `pipeDefs` functions which lazily compute the directives/pipes available in the\n // standalone component. Also set `dependencies` to the lazily resolved list of imports.\n const imports = flatten(metadata.imports || EMPTY_ARRAY);\n const { directiveDefs, pipeDefs } = getStandaloneDefFunctions(type, imports);\n ngComponentDef.directiveDefs = directiveDefs;\n ngComponentDef.pipeDefs = pipeDefs;\n ngComponentDef.dependencies = () => imports.map(resolveForwardRef);\n }\n }\n finally {\n // Ensure that the compilation depth is decremented even when the compilation failed.\n compilationDepth--;\n }\n if (compilationDepth === 0) {\n // When NgModule decorator executed, we enqueued the module definition such that\n // it would only dequeue and add itself as module scope to all of its declarations,\n // but only if if all of its declarations had resolved. This call runs the check\n // to see if any modules that are in the queue can be dequeued and add scope to\n // their declarations.\n flushModuleScopingQueueAsMuchAsPossible();\n }\n // If component compilation is async, then the @NgModule annotation which declares the\n // component may execute and set an ngSelectorScope property on the component type. This\n // allows the component to patch itself with directiveDefs from the module after it\n // finishes compiling.\n if (hasSelectorScope(type)) {\n const scopes = transitiveScopesFor(type.ngSelectorScope);\n patchComponentDefWithScope(ngComponentDef, scopes);\n }\n if (metadata.schemas) {\n if (metadata.standalone) {\n ngComponentDef.schemas = metadata.schemas;\n }\n else {\n throw new Error(`The 'schemas' was specified for the ${stringifyForError(type)} but is only valid on a component that is standalone.`);\n }\n }\n else if (metadata.standalone) {\n ngComponentDef.schemas = [];\n }\n }\n return ngComponentDef;\n },\n // Make the property configurable in dev mode to allow overriding in tests\n configurable: !!ngDevMode,\n });\n}\nfunction getDependencyTypeForError(type) {\n if (getComponentDef(type))\n return 'component';\n if (getDirectiveDef(type))\n return 'directive';\n if (getPipeDef$1(type))\n return 'pipe';\n return 'type';\n}\nfunction verifyStandaloneImport(depType, importingType) {\n if (isForwardRef(depType)) {\n depType = resolveForwardRef(depType);\n if (!depType) {\n throw new Error(`Expected forwardRef function, imported from \"${stringifyForError(importingType)}\", to return a standalone entity or NgModule but got \"${stringifyForError(depType) || depType}\".`);\n }\n }\n if (getNgModuleDef(depType) == null) {\n const def = getComponentDef(depType) || getDirectiveDef(depType) || getPipeDef$1(depType);\n if (def != null) {\n // if a component, directive or pipe is imported make sure that it is standalone\n if (!def.standalone) {\n throw new Error(`The \"${stringifyForError(depType)}\" ${getDependencyTypeForError(depType)}, imported from \"${stringifyForError(importingType)}\", is not standalone. Did you forget to add the standalone: true flag?`);\n }\n }\n else {\n // it can be either a module with provider or an unknown (not annotated) type\n if (isModuleWithProviders(depType)) {\n throw new Error(`A module with providers was imported from \"${stringifyForError(importingType)}\". Modules with providers are not supported in standalone components imports.`);\n }\n else {\n throw new Error(`The \"${stringifyForError(depType)}\" type, imported from \"${stringifyForError(importingType)}\", must be a standalone component / directive / pipe or an NgModule. Did you forget to add the required @Component / @Directive / @Pipe or @NgModule annotation?`);\n }\n }\n }\n}\n/**\n * Build memoized `directiveDefs` and `pipeDefs` functions for the component definition of a\n * standalone component, which process `imports` and filter out directives and pipes. The use of\n * memoized functions here allows for the delayed resolution of any `forwardRef`s present in the\n * component's `imports`.\n */\nfunction getStandaloneDefFunctions(type, imports) {\n let cachedDirectiveDefs = null;\n let cachedPipeDefs = null;\n const directiveDefs = () => {\n if (cachedDirectiveDefs === null) {\n // Standalone components are always able to self-reference, so include the component's own\n // definition in its `directiveDefs`.\n cachedDirectiveDefs = [getComponentDef(type)];\n const seen = new Set([type]);\n for (const rawDep of imports) {\n ngDevMode && verifyStandaloneImport(rawDep, type);\n const dep = resolveForwardRef(rawDep);\n if (seen.has(dep)) {\n continue;\n }\n seen.add(dep);\n if (!!getNgModuleDef(dep)) {\n const scope = transitiveScopesFor(dep);\n for (const dir of scope.exported.directives) {\n const def = getComponentDef(dir) || getDirectiveDef(dir);\n if (def && !seen.has(dir)) {\n seen.add(dir);\n cachedDirectiveDefs.push(def);\n }\n }\n }\n else {\n const def = getComponentDef(dep) || getDirectiveDef(dep);\n if (def) {\n cachedDirectiveDefs.push(def);\n }\n }\n }\n }\n return cachedDirectiveDefs;\n };\n const pipeDefs = () => {\n if (cachedPipeDefs === null) {\n cachedPipeDefs = [];\n const seen = new Set();\n for (const rawDep of imports) {\n const dep = resolveForwardRef(rawDep);\n if (seen.has(dep)) {\n continue;\n }\n seen.add(dep);\n if (!!getNgModuleDef(dep)) {\n const scope = transitiveScopesFor(dep);\n for (const pipe of scope.exported.pipes) {\n const def = getPipeDef$1(pipe);\n if (def && !seen.has(pipe)) {\n seen.add(pipe);\n cachedPipeDefs.push(def);\n }\n }\n }\n else {\n const def = getPipeDef$1(dep);\n if (def) {\n cachedPipeDefs.push(def);\n }\n }\n }\n }\n return cachedPipeDefs;\n };\n return {\n directiveDefs,\n pipeDefs,\n };\n}\nfunction hasSelectorScope(component) {\n return component.ngSelectorScope !== undefined;\n}\n/**\n * Compile an Angular directive according to its decorator metadata, and patch the resulting\n * directive def onto the component type.\n *\n * In the event that compilation is not immediate, `compileDirective` will return a `Promise` which\n * will resolve when compilation completes and the directive becomes usable.\n */\nfunction compileDirective(type, directive) {\n let ngDirectiveDef = null;\n addDirectiveFactoryDef(type, directive || {});\n Object.defineProperty(type, NG_DIR_DEF, {\n get: () => {\n if (ngDirectiveDef === null) {\n // `directive` can be null in the case of abstract directives as a base class\n // that use `@Directive()` with no selector. In that case, pass empty object to the\n // `directiveMetadata` function instead of null.\n const meta = getDirectiveMetadata(type, directive || {});\n const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'directive', type });\n ngDirectiveDef =\n compiler.compileDirective(angularCoreEnv, meta.sourceMapUrl, meta.metadata);\n }\n return ngDirectiveDef;\n },\n // Make the property configurable in dev mode to allow overriding in tests\n configurable: !!ngDevMode,\n });\n}\nfunction getDirectiveMetadata(type, metadata) {\n const name = type && type.name;\n const sourceMapUrl = `ng:///${name}/ɵdir.js`;\n const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'directive', type });\n const facade = directiveMetadata(type, metadata);\n facade.typeSourceSpan = compiler.createParseSourceSpan('Directive', name, sourceMapUrl);\n if (facade.usesInheritance) {\n addDirectiveDefToUndecoratedParents(type);\n }\n return { metadata: facade, sourceMapUrl };\n}\nfunction addDirectiveFactoryDef(type, metadata) {\n let ngFactoryDef = null;\n Object.defineProperty(type, NG_FACTORY_DEF, {\n get: () => {\n if (ngFactoryDef === null) {\n const meta = getDirectiveMetadata(type, metadata);\n const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'directive', type });\n ngFactoryDef = compiler.compileFactory(angularCoreEnv, `ng:///${type.name}/ɵfac.js`, {\n name: meta.metadata.name,\n type: meta.metadata.type,\n typeArgumentCount: 0,\n deps: reflectDependencies(type),\n target: compiler.FactoryTarget.Directive\n });\n }\n return ngFactoryDef;\n },\n // Make the property configurable in dev mode to allow overriding in tests\n configurable: !!ngDevMode,\n });\n}\nfunction extendsDirectlyFromObject(type) {\n return Object.getPrototypeOf(type.prototype) === Object.prototype;\n}\n/**\n * Extract the `R3DirectiveMetadata` for a particular directive (either a `Directive` or a\n * `Component`).\n */\nfunction directiveMetadata(type, metadata) {\n // Reflect inputs and outputs.\n const reflect = getReflect();\n const propMetadata = reflect.ownPropMetadata(type);\n return {\n name: type.name,\n type: type,\n selector: metadata.selector !== undefined ? metadata.selector : null,\n host: metadata.host || EMPTY_OBJ,\n propMetadata: propMetadata,\n inputs: metadata.inputs || EMPTY_ARRAY,\n outputs: metadata.outputs || EMPTY_ARRAY,\n queries: extractQueriesMetadata(type, propMetadata, isContentQuery),\n lifecycle: { usesOnChanges: reflect.hasLifecycleHook(type, 'ngOnChanges') },\n typeSourceSpan: null,\n usesInheritance: !extendsDirectlyFromObject(type),\n exportAs: extractExportAs(metadata.exportAs),\n providers: metadata.providers || null,\n viewQueries: extractQueriesMetadata(type, propMetadata, isViewQuery),\n isStandalone: !!metadata.standalone,\n isSignal: !!metadata.signals,\n hostDirectives: metadata.hostDirectives?.map(directive => typeof directive === 'function' ? { directive } : directive) ||\n null\n };\n}\n/**\n * Adds a directive definition to all parent classes of a type that don't have an Angular decorator.\n */\nfunction addDirectiveDefToUndecoratedParents(type) {\n const objPrototype = Object.prototype;\n let parent = Object.getPrototypeOf(type.prototype).constructor;\n // Go up the prototype until we hit `Object`.\n while (parent && parent !== objPrototype) {\n // Since inheritance works if the class was annotated already, we only need to add\n // the def if there are no annotations and the def hasn't been created already.\n if (!getDirectiveDef(parent) && !getComponentDef(parent) &&\n shouldAddAbstractDirective(parent)) {\n compileDirective(parent, null);\n }\n parent = Object.getPrototypeOf(parent);\n }\n}\nfunction convertToR3QueryPredicate(selector) {\n return typeof selector === 'string' ? splitByComma(selector) : resolveForwardRef(selector);\n}\nfunction convertToR3QueryMetadata(propertyName, ann) {\n return {\n propertyName: propertyName,\n predicate: convertToR3QueryPredicate(ann.selector),\n descendants: ann.descendants,\n first: ann.first,\n read: ann.read ? ann.read : null,\n static: !!ann.static,\n emitDistinctChangesOnly: !!ann.emitDistinctChangesOnly,\n };\n}\nfunction extractQueriesMetadata(type, propMetadata, isQueryAnn) {\n const queriesMeta = [];\n for (const field in propMetadata) {\n if (propMetadata.hasOwnProperty(field)) {\n const annotations = propMetadata[field];\n annotations.forEach(ann => {\n if (isQueryAnn(ann)) {\n if (!ann.selector) {\n throw new Error(`Can't construct a query for the property \"${field}\" of ` +\n `\"${stringifyForError(type)}\" since the query selector wasn't defined.`);\n }\n if (annotations.some(isInputAnnotation)) {\n throw new Error(`Cannot combine @Input decorators with query decorators`);\n }\n queriesMeta.push(convertToR3QueryMetadata(field, ann));\n }\n });\n }\n }\n return queriesMeta;\n}\nfunction extractExportAs(exportAs) {\n return exportAs === undefined ? null : splitByComma(exportAs);\n}\nfunction isContentQuery(value) {\n const name = value.ngMetadataName;\n return name === 'ContentChild' || name === 'ContentChildren';\n}\nfunction isViewQuery(value) {\n const name = value.ngMetadataName;\n return name === 'ViewChild' || name === 'ViewChildren';\n}\nfunction isInputAnnotation(value) {\n return value.ngMetadataName === 'Input';\n}\nfunction splitByComma(value) {\n return value.split(',').map(piece => piece.trim());\n}\nconst LIFECYCLE_HOOKS = [\n 'ngOnChanges', 'ngOnInit', 'ngOnDestroy', 'ngDoCheck', 'ngAfterViewInit', 'ngAfterViewChecked',\n 'ngAfterContentInit', 'ngAfterContentChecked'\n];\nfunction shouldAddAbstractDirective(type) {\n const reflect = getReflect();\n if (LIFECYCLE_HOOKS.some(hookName => reflect.hasLifecycleHook(type, hookName))) {\n return true;\n }\n const propMetadata = reflect.propMetadata(type);\n for (const field in propMetadata) {\n const annotations = propMetadata[field];\n for (let i = 0; i < annotations.length; i++) {\n const current = annotations[i];\n const metadataName = current.ngMetadataName;\n if (isInputAnnotation(current) || isContentQuery(current) || isViewQuery(current) ||\n metadataName === 'Output' || metadataName === 'HostBinding' ||\n metadataName === 'HostListener') {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction compilePipe(type, meta) {\n let ngPipeDef = null;\n let ngFactoryDef = null;\n Object.defineProperty(type, NG_FACTORY_DEF, {\n get: () => {\n if (ngFactoryDef === null) {\n const metadata = getPipeMetadata(type, meta);\n const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'pipe', type: metadata.type });\n ngFactoryDef = compiler.compileFactory(angularCoreEnv, `ng:///${metadata.name}/ɵfac.js`, {\n name: metadata.name,\n type: metadata.type,\n typeArgumentCount: 0,\n deps: reflectDependencies(type),\n target: compiler.FactoryTarget.Pipe\n });\n }\n return ngFactoryDef;\n },\n // Make the property configurable in dev mode to allow overriding in tests\n configurable: !!ngDevMode,\n });\n Object.defineProperty(type, NG_PIPE_DEF, {\n get: () => {\n if (ngPipeDef === null) {\n const metadata = getPipeMetadata(type, meta);\n const compiler = getCompilerFacade({ usage: 0 /* JitCompilerUsage.Decorator */, kind: 'pipe', type: metadata.type });\n ngPipeDef =\n compiler.compilePipe(angularCoreEnv, `ng:///${metadata.name}/ɵpipe.js`, metadata);\n }\n return ngPipeDef;\n },\n // Make the property configurable in dev mode to allow overriding in tests\n configurable: !!ngDevMode,\n });\n}\nfunction getPipeMetadata(type, meta) {\n return {\n type: type,\n name: type.name,\n pipeName: meta.name,\n pure: meta.pure !== undefined ? meta.pure : true,\n isStandalone: !!meta.standalone,\n };\n}\n\n/**\n * Type of the Directive metadata.\n *\n * @publicApi\n */\nconst Directive = makeDecorator('Directive', (dir = {}) => dir, undefined, undefined, (type, meta) => compileDirective(type, meta));\n/**\n * Component decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Component = makeDecorator('Component', (c = {}) => ({ changeDetection: ChangeDetectionStrategy.Default, ...c }), Directive, undefined, (type, meta) => compileComponent(type, meta));\n/**\n * @Annotation\n * @publicApi\n */\nconst Pipe = makeDecorator('Pipe', (p) => ({ pure: true, ...p }), undefined, undefined, (type, meta) => compilePipe(type, meta));\n/**\n * @Annotation\n * @publicApi\n */\nconst Input = makePropDecorator('Input', (arg) => {\n if (!arg) {\n return {};\n }\n return typeof arg === 'string' ? { alias: arg } : arg;\n});\n/**\n * @Annotation\n * @publicApi\n */\nconst Output = makePropDecorator('Output', (alias) => ({ alias }));\n/**\n * @Annotation\n * @publicApi\n */\nconst HostBinding = makePropDecorator('HostBinding', (hostPropertyName) => ({ hostPropertyName }));\n/**\n * Decorator that binds a DOM event to a host listener and supplies configuration metadata.\n * Angular invokes the supplied handler method when the host element emits the specified event,\n * and updates the bound element with the result.\n *\n * If the handler method returns false, applies `preventDefault` on the bound element.\n *\n * @usageNotes\n *\n * The following example declares a directive\n * that attaches a click listener to a button and counts clicks.\n *\n * ```ts\n * @Directive({selector: 'button[counting]'})\n * class CountClicks {\n * numberOfClicks = 0;\n *\n * @HostListener('click', ['$event.target'])\n * onClick(btn) {\n * console.log('button', btn, 'number of clicks:', this.numberOfClicks++);\n * }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: '<button counting>Increment</button>',\n * })\n * class App {}\n *\n * ```\n *\n * The following example registers another DOM event handler that listens for `Enter` key-press\n * events on the global `window`.\n * ``` ts\n * import { HostListener, Component } from \"@angular/core\";\n *\n * @Component({\n * selector: 'app',\n * template: `<h1>Hello, you have pressed enter {{counter}} number of times!</h1> Press enter key\n * to increment the counter.\n * <button (click)=\"resetCounter()\">Reset Counter</button>`\n * })\n * class AppComponent {\n * counter = 0;\n * @HostListener('window:keydown.enter', ['$event'])\n * handleKeyDown(event: KeyboardEvent) {\n * this.counter++;\n * }\n * resetCounter() {\n * this.counter = 0;\n * }\n * }\n * ```\n * The list of valid key names for `keydown` and `keyup` events\n * can be found here:\n * https://www.w3.org/TR/DOM-Level-3-Events-key/#named-key-attribute-values\n *\n * Note that keys can also be combined, e.g. `@HostListener('keydown.shift.a')`.\n *\n * The global target names that can be used to prefix an event name are\n * `document:`, `window:` and `body:`.\n *\n * @Annotation\n * @publicApi\n */\nconst HostListener = makePropDecorator('HostListener', (eventName, args) => ({ eventName, args }));\n\n/**\n * @Annotation\n */\nconst NgModule = makeDecorator('NgModule', (ngModule) => ngModule, undefined, undefined, \n/**\n * Decorator that marks the following class as an NgModule, and supplies\n * configuration metadata for it.\n *\n * * The `declarations` option configures the compiler\n * with information about what belongs to the NgModule.\n * * The `providers` options configures the NgModule's injector to provide\n * dependencies the NgModule members.\n * * The `imports` and `exports` options bring in members from other modules, and make\n * this module's members available to others.\n */\n(type, meta) => compileNgModule(type, meta));\n\n/**\n * This indirection is needed to free up Component, etc symbols in the public API\n * to be used by the decorator versions of these annotations.\n */\n\n/*\n * This file exists to support compilation of @angular/core in Ivy mode.\n *\n * When the Angular compiler processes a compilation unit, it normally writes imports to\n * @angular/core. When compiling the core package itself this strategy isn't usable. Instead, the\n * compiler writes imports to this file.\n *\n * Only a subset of such imports are supported - core is not allowed to declare components or pipes.\n * A check in ngtsc's `R3SymbolsImportRewriter` validates this condition. The rewriter is only used\n * when compiling @angular/core and is responsible for translating an external name (prefixed with\n * ɵ) to the internal symbol name as exported below.\n *\n * The below symbols are used for @Injectable and @NgModule compilation.\n */\n/**\n * The existence of this constant (in this particular file) informs the Angular compiler that the\n * current program is actually @angular/core, which needs to be compiled specially.\n */\nconst ITS_JUST_ANGULAR = true;\n\n/**\n * A [DI token](guide/glossary#di-token \"DI token definition\") that you can use to provide\n * one or more initialization functions.\n *\n * The provided functions are injected at application startup and executed during\n * app initialization. If any of these functions returns a Promise or an Observable, initialization\n * does not complete until the Promise is resolved or the Observable is completed.\n *\n * You can, for example, create a factory function that loads language data\n * or an external configuration, and provide that function to the `APP_INITIALIZER` token.\n * The function is executed during the application bootstrap process,\n * and the needed data is available on startup.\n *\n * @see {@link ApplicationInitStatus}\n *\n * @usageNotes\n *\n * The following example illustrates how to configure a multi-provider using `APP_INITIALIZER` token\n * and a function returning a promise.\n * ### Example with NgModule-based application\n * ```\n * function initializeApp(): Promise<any> {\n * return new Promise((resolve, reject) => {\n * // Do some asynchronous stuff\n * resolve();\n * });\n * }\n *\n * @NgModule({\n * imports: [BrowserModule],\n * declarations: [AppComponent],\n * bootstrap: [AppComponent],\n * providers: [{\n * provide: APP_INITIALIZER,\n * useFactory: () => initializeApp,\n * multi: true\n * }]\n * })\n * export class AppModule {}\n * ```\n *\n * ### Example with standalone application\n * ```\n * export function initializeApp(http: HttpClient) {\n * return (): Promise<any> =>\n * firstValueFrom(\n * http\n * .get(\"https://someUrl.com/api/user\")\n * .pipe(tap(user => { ... }))\n * );\n * }\n *\n * bootstrapApplication(App, {\n * providers: [\n * provideHttpClient(),\n * {\n * provide: APP_INITIALIZER,\n * useFactory: initializeApp,\n * multi: true,\n * deps: [HttpClient],\n * },\n * ],\n * });\n\n * ```\n *\n *\n * It's also possible to configure a multi-provider using `APP_INITIALIZER` token and a function\n * returning an observable, see an example below. Note: the `HttpClient` in this example is used for\n * demo purposes to illustrate how the factory function can work with other providers available\n * through DI.\n *\n * ### Example with NgModule-based application\n * ```\n * function initializeAppFactory(httpClient: HttpClient): () => Observable<any> {\n * return () => httpClient.get(\"https://someUrl.com/api/user\")\n * .pipe(\n * tap(user => { ... })\n * );\n * }\n *\n * @NgModule({\n * imports: [BrowserModule, HttpClientModule],\n * declarations: [AppComponent],\n * bootstrap: [AppComponent],\n * providers: [{\n * provide: APP_INITIALIZER,\n * useFactory: initializeAppFactory,\n * deps: [HttpClient],\n * multi: true\n * }]\n * })\n * export class AppModule {}\n * ```\n *\n * ### Example with standalone application\n * ```\n * function initializeAppFactory(httpClient: HttpClient): () => Observable<any> {\n * return () => httpClient.get(\"https://someUrl.com/api/user\")\n * .pipe(\n * tap(user => { ... })\n * );\n * }\n *\n * bootstrapApplication(App, {\n * providers: [\n * provideHttpClient(),\n * {\n * provide: APP_INITIALIZER,\n * useFactory: initializeApp,\n * multi: true,\n * deps: [HttpClient],\n * },\n * ],\n * });\n * ```\n *\n * @publicApi\n */\nconst APP_INITIALIZER = new InjectionToken('Application Initializer');\n/**\n * A class that reflects the state of running {@link APP_INITIALIZER} functions.\n *\n * @publicApi\n */\nclass ApplicationInitStatus {\n constructor() {\n this.initialized = false;\n this.done = false;\n this.donePromise = new Promise((res, rej) => {\n this.resolve = res;\n this.reject = rej;\n });\n this.appInits = inject(APP_INITIALIZER, { optional: true }) ?? [];\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !Array.isArray(this.appInits)) {\n throw new RuntimeError(-209 /* RuntimeErrorCode.INVALID_MULTI_PROVIDER */, 'Unexpected type of the `APP_INITIALIZER` token value ' +\n `(expected an array, but got ${typeof this.appInits}). ` +\n 'Please check that the `APP_INITIALIZER` token is configured as a ' +\n '`multi: true` provider.');\n }\n }\n /** @internal */\n runInitializers() {\n if (this.initialized) {\n return;\n }\n const asyncInitPromises = [];\n for (const appInits of this.appInits) {\n const initResult = appInits();\n if (isPromise(initResult)) {\n asyncInitPromises.push(initResult);\n }\n else if (isSubscribable(initResult)) {\n const observableAsPromise = new Promise((resolve, reject) => {\n initResult.subscribe({ complete: resolve, error: reject });\n });\n asyncInitPromises.push(observableAsPromise);\n }\n }\n const complete = () => {\n // @ts-expect-error overwriting a readonly\n this.done = true;\n this.resolve();\n };\n Promise.all(asyncInitPromises)\n .then(() => {\n complete();\n })\n .catch(e => {\n this.reject(e);\n });\n if (asyncInitPromises.length === 0) {\n complete();\n }\n this.initialized = true;\n }\n static { this.ɵfac = function ApplicationInitStatus_Factory(t) { return new (t || ApplicationInitStatus)(); }; }\n static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationInitStatus, factory: ApplicationInitStatus.ɵfac, providedIn: 'root' }); }\n}\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && setClassMetadata(ApplicationInitStatus, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nclass Console {\n log(message) {\n // tslint:disable-next-line:no-console\n console.log(message);\n }\n // Note: for reporting errors use `DOM.logError()` as it is platform specific\n warn(message) {\n // tslint:disable-next-line:no-console\n console.warn(message);\n }\n static { this.ɵfac = function Console_Factory(t) { return new (t || Console)(); }; }\n static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac, providedIn: 'platform' }); }\n}\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && setClassMetadata(Console, [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }], null, null); })();\n\n/**\n * Work out the locale from the potential global properties.\n *\n * * Closure Compiler: use `goog.LOCALE`.\n * * Ivy enabled: use `$localize.locale`\n */\nfunction getGlobalLocale() {\n if (typeof ngI18nClosureMode !== 'undefined' && ngI18nClosureMode &&\n typeof goog !== 'undefined' && goog.LOCALE !== 'en') {\n // * The default `goog.LOCALE` value is `en`, while Angular used `en-US`.\n // * In order to preserve backwards compatibility, we use Angular default value over\n // Closure Compiler's one.\n return goog.LOCALE;\n }\n else {\n // KEEP `typeof $localize !== 'undefined' && $localize.locale` IN SYNC WITH THE LOCALIZE\n // COMPILE-TIME INLINER.\n //\n // * During compile time inlining of translations the expression will be replaced\n // with a string literal that is the current locale. Other forms of this expression are not\n // guaranteed to be replaced.\n //\n // * During runtime translation evaluation, the developer is required to set `$localize.locale`\n // if required, or just to provide their own `LOCALE_ID` provider.\n return (typeof $localize !== 'undefined' && $localize.locale) || DEFAULT_LOCALE_ID;\n }\n}\n/**\n * Provide this token to set the locale of your application.\n * It is used for i18n extraction, by i18n pipes (DatePipe, I18nPluralPipe, CurrencyPipe,\n * DecimalPipe and PercentPipe) and by ICU expressions.\n *\n * See the [i18n guide](guide/i18n-common-locale-id) for more information.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import { LOCALE_ID } from '@angular/core';\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { AppModule } from './app/app.module';\n *\n * platformBrowserDynamic().bootstrapModule(AppModule, {\n * providers: [{provide: LOCALE_ID, useValue: 'en-US' }]\n * });\n * ```\n *\n * @publicApi\n */\nconst LOCALE_ID = new InjectionToken('LocaleId', {\n providedIn: 'root',\n factory: () => inject(LOCALE_ID, InjectFlags.Optional | InjectFlags.SkipSelf) || getGlobalLocale(),\n});\n/**\n * Provide this token to set the default currency code your application uses for\n * CurrencyPipe when there is no currency code passed into it. This is only used by\n * CurrencyPipe and has no relation to locale currency. Defaults to USD if not configured.\n *\n * See the [i18n guide](guide/i18n-common-locale-id) for more information.\n *\n * <div class=\"alert is-helpful\">\n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v10 the default currency code will be taken from the current locale.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n * </div>\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { AppModule } from './app/app.module';\n *\n * platformBrowserDynamic().bootstrapModule(AppModule, {\n * providers: [{provide: DEFAULT_CURRENCY_CODE, useValue: 'EUR' }]\n * });\n * ```\n *\n * @publicApi\n */\nconst DEFAULT_CURRENCY_CODE = new InjectionToken('DefaultCurrencyCode', {\n providedIn: 'root',\n factory: () => USD_CURRENCY_CODE,\n});\n/**\n * Use this token at bootstrap to provide the content of your translation file (`xtb`,\n * `xlf` or `xlf2`) when you want to translate your application in another language.\n *\n * See the [i18n guide](guide/i18n-common-merge) for more information.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import { TRANSLATIONS } from '@angular/core';\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { AppModule } from './app/app.module';\n *\n * // content of your translation file\n * const translations = '....';\n *\n * platformBrowserDynamic().bootstrapModule(AppModule, {\n * providers: [{provide: TRANSLATIONS, useValue: translations }]\n * });\n * ```\n *\n * @publicApi\n */\nconst TRANSLATIONS = new InjectionToken('Translations');\n/**\n * Provide this token at bootstrap to set the format of your {@link TRANSLATIONS}: `xtb`,\n * `xlf` or `xlf2`.\n *\n * See the [i18n guide](guide/i18n-common-merge) for more information.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import { TRANSLATIONS_FORMAT } from '@angular/core';\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { AppModule } from './app/app.module';\n *\n * platformBrowserDynamic().bootstrapModule(AppModule, {\n * providers: [{provide: TRANSLATIONS_FORMAT, useValue: 'xlf' }]\n * });\n * ```\n *\n * @publicApi\n */\nconst TRANSLATIONS_FORMAT = new InjectionToken('TranslationsFormat');\n/**\n * Use this enum at bootstrap as an option of `bootstrapModule` to define the strategy\n * that the compiler should use in case of missing translations:\n * - Error: throw if you have missing translations.\n * - Warning (default): show a warning in the console and/or shell.\n * - Ignore: do nothing.\n *\n * See the [i18n guide](guide/i18n-common-merge#report-missing-translations) for more information.\n *\n * @usageNotes\n * ### Example\n * ```typescript\n * import { MissingTranslationStrategy } from '@angular/core';\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { AppModule } from './app/app.module';\n *\n * platformBrowserDynamic().bootstrapModule(AppModule, {\n * missingTranslation: MissingTranslationStrategy.Error\n * });\n * ```\n *\n * @publicApi\n */\nvar MissingTranslationStrategy;\n(function (MissingTranslationStrategy) {\n MissingTranslationStrategy[MissingTranslationStrategy[\"Error\"] = 0] = \"Error\";\n MissingTranslationStrategy[MissingTranslationStrategy[\"Warning\"] = 1] = \"Warning\";\n MissingTranslationStrategy[MissingTranslationStrategy[\"Ignore\"] = 2] = \"Ignore\";\n})(MissingTranslationStrategy || (MissingTranslationStrategy = {}));\n\n/**\n * *Internal* service that keeps track of pending tasks happening in the system\n * during the initial rendering. No tasks are tracked after an initial\n * rendering.\n *\n * This information is needed to make sure that the serialization on the server\n * is delayed until all tasks in the queue (such as an initial navigation or a\n * pending HTTP request) are completed.\n */\nclass InitialRenderPendingTasks {\n constructor() {\n this.taskId = 0;\n this.pendingTasks = new Set();\n this.hasPendingTasks = new BehaviorSubject(false);\n }\n add() {\n this.hasPendingTasks.next(true);\n const taskId = this.taskId++;\n this.pendingTasks.add(taskId);\n return taskId;\n }\n remove(taskId) {\n this.pendingTasks.delete(taskId);\n if (this.pendingTasks.size === 0) {\n this.hasPendingTasks.next(false);\n }\n }\n ngOnDestroy() {\n this.pendingTasks.clear();\n this.hasPendingTasks.next(false);\n }\n static { this.ɵfac = function InitialRenderPendingTasks_Factory(t) { return new (t || InitialRenderPendingTasks)(); }; }\n static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: InitialRenderPendingTasks, factory: InitialRenderPendingTasks.ɵfac, providedIn: 'root' }); }\n}\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && setClassMetadata(InitialRenderPendingTasks, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\n/**\n * Combination of NgModuleFactory and ComponentFactories.\n *\n * @publicApi\n *\n * @deprecated\n * Ivy JIT mode doesn't require accessing this symbol.\n * See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes) for\n * additional context.\n */\nclass ModuleWithComponentFactories {\n constructor(ngModuleFactory, componentFactories) {\n this.ngModuleFactory = ngModuleFactory;\n this.componentFactories = componentFactories;\n }\n}\n/**\n * Low-level service for running the angular compiler during runtime\n * to create {@link ComponentFactory}s, which\n * can later be used to create and render a Component instance.\n *\n * Each `@NgModule` provides an own `Compiler` to its injector,\n * that will use the directives/pipes of the ng module for compilation\n * of components.\n *\n * @publicApi\n *\n * @deprecated\n * Ivy JIT mode doesn't require accessing this symbol.\n * See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes) for\n * additional context.\n */\nclass Compiler {\n /**\n * Compiles the given NgModule and all of its components. All templates of the components\n * have to be inlined.\n */\n compileModuleSync(moduleType) {\n return new NgModuleFactory(moduleType);\n }\n /**\n * Compiles the given NgModule and all of its components\n */\n compileModuleAsync(moduleType) {\n return Promise.resolve(this.compileModuleSync(moduleType));\n }\n /**\n * Same as {@link #compileModuleSync} but also creates ComponentFactories for all components.\n */\n compileModuleAndAllComponentsSync(moduleType) {\n const ngModuleFactory = this.compileModuleSync(moduleType);\n const moduleDef = getNgModuleDef(moduleType);\n const componentFactories = maybeUnwrapFn(moduleDef.declarations)\n .reduce((factories, declaration) => {\n const componentDef = getComponentDef(declaration);\n componentDef && factories.push(new ComponentFactory(componentDef));\n return factories;\n }, []);\n return new ModuleWithComponentFactories(ngModuleFactory, componentFactories);\n }\n /**\n * Same as {@link #compileModuleAsync} but also creates ComponentFactories for all components.\n */\n compileModuleAndAllComponentsAsync(moduleType) {\n return Promise.resolve(this.compileModuleAndAllComponentsSync(moduleType));\n }\n /**\n * Clears all caches.\n */\n clearCache() { }\n /**\n * Clears the cache for the given component/ngModule.\n */\n clearCacheFor(type) { }\n /**\n * Returns the id for a given NgModule, if one is defined and known to the compiler.\n */\n getModuleId(moduleType) {\n return undefined;\n }\n static { this.ɵfac = function Compiler_Factory(t) { return new (t || Compiler)(); }; }\n static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Compiler, factory: Compiler.ɵfac, providedIn: 'root' }); }\n}\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && setClassMetadata(Compiler, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n/**\n * Token to provide CompilerOptions in the platform injector.\n *\n * @publicApi\n */\nconst COMPILER_OPTIONS = new InjectionToken('compilerOptions');\n/**\n * A factory for creating a Compiler\n *\n * @publicApi\n *\n * @deprecated\n * Ivy JIT mode doesn't require accessing this symbol.\n * See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes) for\n * additional context.\n */\nclass CompilerFactory {\n}\n\n/**\n * These are the data structures that our framework injector profiler will fill with data in order\n * to support DI debugging APIs.\n *\n * resolverToTokenToDependencies: Maps an injector to a Map of tokens to an Array of\n * dependencies. Injector -> Token -> Dependencies This is used to support the\n * getDependenciesFromInjectable API, which takes in an injector and a token and returns it's\n * dependencies.\n *\n * resolverToProviders: Maps a DI resolver (an Injector or an LView) to the providers configured\n * within it This is used to support the getInjectorProviders API, which takes in an injector and\n * returns the providers that it was configured with.\n *\n * standaloneInjectorToComponent: Maps the injector of a standalone component to the standalone\n * component that it is associated with. Used in the getInjectorProviders API, specificially in the\n * discovery of import paths for each provider. This is necessary because the imports array of a\n * standalone component is processed and configured in its standalone injector, but exists within\n * the component's definition. Because getInjectorProviders takes in an injector, if that injector\n * is the injector of a standalone component, we need to be able to discover the place where the\n * imports array is located (the component) in order to flatten the imports array within it to\n * discover all of it's providers.\n *\n *\n * All of these data structures are instantiated with WeakMaps. This will ensure that the presence\n * of any object in the keys of these maps does not prevent the garbage collector from collecting\n * those objects. Because of this property of WeakMaps, these data structures will never be the\n * source of a memory leak.\n *\n * An example of this advantage: When components are destroyed, we don't need to do\n * any additional work to remove that component from our mappings.\n *\n */\nclass DIDebugData {\n constructor() {\n this.resolverToTokenToDependencies = new WeakMap();\n this.resolverToProviders = new WeakMap();\n this.standaloneInjectorToComponent = new WeakMap();\n }\n reset() {\n this.resolverToTokenToDependencies =\n new WeakMap();\n this.resolverToProviders = new WeakMap();\n this.standaloneInjectorToComponent = new WeakMap();\n }\n}\nlet frameworkDIDebugData = new DIDebugData();\nfunction getFrameworkDIDebugData() {\n return frameworkDIDebugData;\n}\n/**\n * Initalize default handling of injector events. This handling parses events\n * as they are emitted and constructs the data structures necessary to support\n * some of debug APIs.\n *\n * See handleInjectEvent, handleCreateEvent and handleProviderConfiguredEvent\n * for descriptions of each handler\n *\n * Supported APIs:\n * - getDependenciesFromInjectable\n * - getInjectorProviders\n */\nfunction setupFrameworkInjectorProfiler() {\n frameworkDIDebugData.reset();\n setInjectorProfiler((injectorProfilerEvent) => handleInjectorProfilerEvent(injectorProfilerEvent));\n}\nfunction handleInjectorProfilerEvent(injectorProfilerEvent) {\n const { context, type } = injectorProfilerEvent;\n if (type === 0 /* InjectorProfilerEventType.Inject */) {\n handleInjectEvent(context, injectorProfilerEvent.service);\n }\n else if (type === 1 /* InjectorProfilerEventType.InstanceCreatedByInjector */) {\n handleInstanceCreatedByInjectorEvent(context, injectorProfilerEvent.instance);\n }\n else if (type === 2 /* InjectorProfilerEventType.ProviderConfigured */) {\n handleProviderConfiguredEvent(context, injectorProfilerEvent.providerRecord);\n }\n}\n/**\n *\n * Stores the injected service in frameworkDIDebugData.resolverToTokenToDependencies\n * based on it's injector and token.\n *\n * @param context InjectorProfilerContext the injection context that this event occurred in.\n * @param data InjectedService the service associated with this inject event.\n *\n */\nfunction handleInjectEvent(context, data) {\n const diResolver = getDIResolver(context.injector);\n if (diResolver === null) {\n throwError('An Inject event must be run within an injection context.');\n }\n const diResolverToInstantiatedToken = frameworkDIDebugData.resolverToTokenToDependencies;\n if (!diResolverToInstantiatedToken.has(diResolver)) {\n diResolverToInstantiatedToken.set(diResolver, new WeakMap());\n }\n // if token is a primitive type, ignore this event. We do this because we cannot keep track of\n // non-primitive tokens in WeakMaps since they are not garbage collectable.\n if (!canBeHeldWeakly(context.token)) {\n return;\n }\n const instantiatedTokenToDependencies = diResolverToInstantiatedToken.get(diResolver);\n if (!instantiatedTokenToDependencies.has(context.token)) {\n instantiatedTokenToDependencies.set(context.token, []);\n }\n const { token, value, flags } = data;\n instantiatedTokenToDependencies.get(context.token).push({ token, value, flags });\n}\n/**\n *\n * If the created instance is an instance of a standalone component, maps the injector to that\n * standalone component in frameworkDIDebugData.standaloneInjectorToComponent\n *\n * @param context InjectorProfilerContext the injection context that this event occurred in.\n * @param data InjectorCreatedInstance an object containing the instance that was just created\n *\n */\nfunction handleInstanceCreatedByInjectorEvent(context, data) {\n const { value } = data;\n if (getDIResolver(context.injector) === null) {\n throwError('An InjectorCreatedInstance event must be run within an injection context.');\n }\n // if our value is an instance of a standalone component, map the injector of that standalone\n // component to the component class. Otherwise, this event is a noop.\n let standaloneComponent = undefined;\n if (typeof value === 'object') {\n standaloneComponent = value?.constructor;\n }\n if (standaloneComponent === undefined || !isStandaloneComponent(standaloneComponent)) {\n return;\n }\n const environmentInjector = context.injector.get(EnvironmentInjector, null, { optional: true });\n // Standalone components should have an environment injector. If one cannot be\n // found we may be in a test case for low level functionality that did not explictly\n // setup this injector. In those cases, we simply ignore this event.\n if (environmentInjector === null) {\n return;\n }\n const { standaloneInjectorToComponent } = frameworkDIDebugData;\n // If our injector has already been mapped, as is the case\n // when a standalone component imports another standalone component,\n // we consider the original component (the component doing the importing)\n // as the component connected to our injector.\n if (standaloneInjectorToComponent.has(environmentInjector)) {\n return;\n }\n // If our injector hasn't been mapped, then we map it to the standalone component\n standaloneInjectorToComponent.set(environmentInjector, standaloneComponent);\n}\nfunction isStandaloneComponent(value) {\n const def = getComponentDef(value);\n return !!def?.standalone;\n}\n/**\n *\n * Stores the emitted ProviderRecords from the InjectorProfilerEventType.ProviderConfigured\n * event in frameworkDIDebugData.resolverToProviders\n *\n * @param context InjectorProfilerContext the injection context that this event occurred in.\n * @param data ProviderRecord an object containing the instance that was just created\n *\n */\nfunction handleProviderConfiguredEvent(context, data) {\n const { resolverToProviders } = frameworkDIDebugData;\n const diResolver = getDIResolver(context?.injector);\n if (diResolver === null) {\n throwError('A ProviderConfigured event must be run within an injection context.');\n }\n if (!resolverToProviders.has(diResolver)) {\n resolverToProviders.set(diResolver, []);\n }\n resolverToProviders.get(diResolver).push(data);\n}\nfunction getDIResolver(injector) {\n let diResolver = null;\n if (injector === undefined) {\n return diResolver;\n }\n // We use the LView as the diResolver for NodeInjectors because they\n // do not persist anywhere in the framework. They are simply wrappers around an LView and a TNode\n // that do persist. Because of this, we rely on the LView of the NodeInjector in order to use\n // as a concrete key to represent this injector. If we get the same LView back later, we know\n // we're looking at the same injector.\n if (injector instanceof NodeInjector) {\n diResolver = getNodeInjectorLView(injector);\n }\n // Other injectors can be used a keys for a map because their instances\n // persist\n else {\n diResolver = injector;\n }\n return diResolver;\n}\n// inspired by\n// https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#sec-canbeheldweakly\nfunction canBeHeldWeakly(value) {\n // we check for value !== null here because typeof null === 'object\n return value !== null &&\n (typeof value === 'object' || typeof value === 'function' || typeof value === 'symbol');\n}\n\n/**\n * Marks a component for check (in case of OnPush components) and synchronously\n * performs change detection on the application this component belongs to.\n *\n * @param component Component to {@link ChangeDetectorRef#markForCheck mark for check}.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction applyChanges(component) {\n ngDevMode && assertDefined(component, 'component');\n markViewDirty(getComponentViewByInstance(component));\n getRootComponents(component).forEach(rootComponent => detectChanges(rootComponent));\n}\n\n/**\n * Discovers the dependencies of an injectable instance. Provides DI information about each\n * dependency that the injectable was instantiated with, including where they were provided from.\n *\n * @param injector An injector instance\n * @param token a DI token that was constructed by the given injector instance\n * @returns an object that contains the created instance of token as well as all of the dependencies\n * that it was instantiated with OR undefined if the token was not created within the given\n * injector.\n */\nfunction getDependenciesFromInjectable(injector, token) {\n // First we check to see if the token given maps to an actual instance in the injector given.\n // We use `self: true` because we only want to look at the injector we were given.\n // We use `optional: true` because it's possible that the token we were given was never\n // constructed by the injector we were given.\n const instance = injector.get(token, null, { self: true, optional: true });\n if (instance === null) {\n throw new Error(`Unable to determine instance of ${token} in given injector`);\n }\n let diResolver = injector;\n if (injector instanceof NodeInjector) {\n diResolver = getNodeInjectorLView(injector);\n }\n const { resolverToTokenToDependencies } = getFrameworkDIDebugData();\n let dependencies = resolverToTokenToDependencies.get(diResolver)?.get?.(token) ?? [];\n const resolutionPath = getInjectorResolutionPath(injector);\n dependencies = dependencies.map(dep => {\n const flags = dep.flags;\n dep.flags = {\n optional: (8 /* InternalInjectFlags.Optional */ & flags) === 8 /* InternalInjectFlags.Optional */,\n host: (1 /* InternalInjectFlags.Host */ & flags) === 1 /* InternalInjectFlags.Host */,\n self: (2 /* InternalInjectFlags.Self */ & flags) === 2 /* InternalInjectFlags.Self */,\n skipSelf: (4 /* InternalInjectFlags.SkipSelf */ & flags) === 4 /* InternalInjectFlags.SkipSelf */,\n };\n for (let i = 0; i < resolutionPath.length; i++) {\n const injectorToCheck = resolutionPath[i];\n // if skipSelf is true we skip the first injector\n if (i === 0 && dep.flags.skipSelf) {\n continue;\n }\n // host only applies to NodeInjectors\n if (dep.flags.host && injectorToCheck instanceof EnvironmentInjector) {\n break;\n }\n const instance = injectorToCheck.get(dep.token, null, { self: true, optional: true });\n if (instance !== null) {\n // if host flag is true we double check that we can get the service from the first element\n // in the resolution path by using the host flag. This is done to make sure that we've found\n // the correct providing injector, and not a node injector that is connected to our path via\n // a router outlet.\n if (dep.flags.host) {\n const firstInjector = resolutionPath[0];\n const lookupFromFirstInjector = firstInjector.get(dep.token, null, { ...dep.flags, optional: true });\n if (lookupFromFirstInjector !== null) {\n dep.providedIn = injectorToCheck;\n }\n break;\n }\n dep.providedIn = injectorToCheck;\n break;\n }\n // if self is true we stop after the first injector\n if (i === 0 && dep.flags.self) {\n break;\n }\n }\n return dep;\n });\n return { instance, dependencies };\n}\n/**\n * Gets the class associated with an injector that contains a provider `imports` array in it's\n * definition\n *\n * For Module Injectors this returns the NgModule constructor.\n *\n * For Standalone injectors this returns the standalone component constructor.\n *\n * @param injector Injector an injector instance\n * @returns the constructor where the `imports` array that configures this injector is located\n */\nfunction getProviderImportsContainer(injector) {\n const { standaloneInjectorToComponent } = getFrameworkDIDebugData();\n // standalone components configure providers through a component def, so we have to\n // use the standalone component associated with this injector if Injector represents\n // a standalone components EnvironmentInjector\n if (standaloneInjectorToComponent.has(injector)) {\n return standaloneInjectorToComponent.get(injector);\n }\n // Module injectors configure providers through their NgModule def, so we use the\n // injector to lookup its NgModuleRef and through that grab its instance\n const defTypeRef = injector.get(NgModuleRef$1, null, { self: true, optional: true });\n // If we can't find an associated imports container, return null.\n // This could be the case if this function is called with an R3Injector that does not represent\n // a standalone component or NgModule.\n if (defTypeRef === null) {\n return null;\n }\n // In standalone applications, the root environment injector created by bootstrapApplication\n // may have no associated \"instance\".\n if (defTypeRef.instance === null) {\n return null;\n }\n return defTypeRef.instance.constructor;\n}\n/**\n * Gets the providers configured on a NodeInjector\n *\n * @param injector A NodeInjector instance\n * @returns ProviderRecord[] an array of objects representing the providers configured on this\n * injector\n */\nfunction getNodeInjectorProviders(injector) {\n const diResolver = getNodeInjectorLView(injector);\n const { resolverToProviders } = getFrameworkDIDebugData();\n return resolverToProviders.get(diResolver) ?? [];\n}\n/**\n * Gets a mapping of providers configured on an injector to their import paths\n *\n * ModuleA -> imports ModuleB\n * ModuleB -> imports ModuleC\n * ModuleB -> provides MyServiceA\n * ModuleC -> provides MyServiceB\n *\n * getProviderImportPaths(ModuleA)\n * > Map(2) {\n * MyServiceA => [ModuleA, ModuleB]\n * MyServiceB => [ModuleA, ModuleB, ModuleC]\n * }\n *\n * @param providerImportsContainer constructor of class that contains an `imports` array in it's\n * definition\n * @returns A Map object that maps providers to an array of constructors representing it's import\n * path\n *\n */\nfunction getProviderImportPaths(providerImportsContainer) {\n const providerToPath = new Map();\n const visitedContainers = new Set();\n const visitor = walkProviderTreeToDiscoverImportPaths(providerToPath, visitedContainers);\n walkProviderTree(providerImportsContainer, visitor, [], new Set());\n return providerToPath;\n}\n/**\n *\n * Higher order function that returns a visitor for WalkProviderTree\n *\n * Takes in a Map and Set to keep track of the providers and containers\n * visited, so that we can discover the import paths of these providers\n * during the traversal.\n *\n * This visitor takes advantage of the fact that walkProviderTree performs a\n * postorder traversal of the provider tree for the passed in container. Because postorder\n * traversal recursively processes subtrees from leaf nodes until the traversal reaches the root,\n * we write a visitor that constructs provider import paths in reverse.\n *\n *\n * We use the visitedContainers set defined outside this visitor\n * because we want to run some logic only once for\n * each container in the tree. That logic can be described as:\n *\n *\n * 1. for each discovered_provider and discovered_path in the incomplete provider paths we've\n * already discovered\n * 2. get the first container in discovered_path\n * 3. if that first container is in the imports array of the container we're visiting\n * Then the container we're visiting is also in the import path of discovered_provider, so we\n * unshift discovered_path with the container we're currently visiting\n *\n *\n * Example Run:\n * ```\n * ┌──────────┐\n * │containerA│\n * ┌─imports-─┤ ├──imports─┐\n * │ │ provA │ │\n * │ │ provB │ │\n * │ └──────────┘ │\n * │ │\n * ┌▼─────────┐ ┌────────▼─┐\n * │containerB│ │containerC│\n * │ │ │ │\n * │ provD │ │ provF │\n * │ provE │ │ provG │\n * └──────────┘ └──────────┘\n * ```\n *\n * Each step of the traversal,\n *\n * ```\n * visitor(provD, containerB)\n * providerToPath === Map { provD => [containerB] }\n * visitedContainers === Set { containerB }\n *\n * visitor(provE, containerB)\n * providerToPath === Map { provD => [containerB], provE => [containerB] }\n * visitedContainers === Set { containerB }\n *\n * visitor(provF, containerC)\n * providerToPath === Map { provD => [containerB], provE => [containerB], provF => [containerC] }\n * visitedContainers === Set { containerB, containerC }\n *\n * visitor(provG, containerC)\n * providerToPath === Map {\n * provD => [containerB], provE => [containerB], provF => [containerC], provG => [containerC]\n * }\n * visitedContainers === Set { containerB, containerC }\n *\n * visitor(provA, containerA)\n * providerToPath === Map {\n * provD => [containerA, containerB],\n * provE => [containerA, containerB],\n * provF => [containerA, containerC],\n * provG => [containerA, containerC],\n * provA => [containerA]\n * }\n * visitedContainers === Set { containerB, containerC, containerA }\n *\n * visitor(provB, containerA)\n * providerToPath === Map {\n * provD => [containerA, containerB],\n * provE => [containerA, containerB],\n * provF => [containerA, containerC],\n * provG => [containerA, containerC],\n * provA => [containerA]\n * provB => [containerA]\n * }\n * visitedContainers === Set { containerB, containerC, containerA }\n * ```\n *\n * @param providerToPath Map map of providers to paths that this function fills\n * @param visitedContainers Set a set to keep track of the containers we've already visited\n * @return function(provider SingleProvider, container: Type<unknown> | InjectorType<unknown>) =>\n * void\n */\nfunction walkProviderTreeToDiscoverImportPaths(providerToPath, visitedContainers) {\n return (provider, container) => {\n // If the provider is not already in the providerToPath map,\n // add an entry with the provider as the key and an array containing the current container as\n // the value\n if (!providerToPath.has(provider)) {\n providerToPath.set(provider, [container]);\n }\n // This block will run exactly once for each container in the import tree.\n // This is where we run the logic to check the imports array of the current\n // container to see if it's the next container in the path for our currently\n // discovered providers.\n if (!visitedContainers.has(container)) {\n // Iterate through the providers we've already seen\n for (const prov of providerToPath.keys()) {\n const existingImportPath = providerToPath.get(prov);\n let containerDef = getInjectorDef(container);\n if (!containerDef) {\n const ngModule = container.ngModule;\n containerDef = getInjectorDef(ngModule);\n }\n if (!containerDef) {\n return;\n }\n const lastContainerAddedToPath = existingImportPath[0];\n let isNextStepInPath = false;\n deepForEach(containerDef.imports, (moduleImport) => {\n if (isNextStepInPath) {\n return;\n }\n isNextStepInPath = moduleImport.ngModule === lastContainerAddedToPath ||\n moduleImport === lastContainerAddedToPath;\n if (isNextStepInPath) {\n providerToPath.get(prov)?.unshift(container);\n }\n });\n }\n }\n visitedContainers.add(container);\n };\n}\n/**\n * Gets the providers configured on an EnvironmentInjector\n *\n * @param injector EnvironmentInjector\n * @returns an array of objects representing the providers of the given injector\n */\nfunction getEnvironmentInjectorProviders(injector) {\n const providerRecords = getFrameworkDIDebugData().resolverToProviders.get(injector) ?? [];\n // platform injector has no provider imports container so can we skip trying to\n // find import paths\n if (isPlatformInjector(injector)) {\n return providerRecords;\n }\n const providerImportsContainer = getProviderImportsContainer(injector);\n if (providerImportsContainer === null) {\n // There is a special case where the bootstrapped component does not\n // import any NgModules. In this case the environment injector connected to\n // that component is the root injector, which does not have a provider imports\n // container (and thus no concept of module import paths). Therefore we simply\n // return the provider records as is.\n if (isRootInjector(injector)) {\n return providerRecords;\n }\n throwError('Could not determine where injector providers were configured.');\n }\n const providerToPath = getProviderImportPaths(providerImportsContainer);\n return providerRecords.map(providerRecord => {\n let importPath = providerToPath.get(providerRecord.provider) ?? [providerImportsContainer];\n const def = getComponentDef(providerImportsContainer);\n const isStandaloneComponent = !!def?.standalone;\n // We prepend the component constructor in the standalone case\n // because walkProviderTree does not visit this constructor during it's traversal\n if (isStandaloneComponent) {\n importPath = [providerImportsContainer, ...providerToPath.get(providerRecord.provider) ?? []];\n }\n return { ...providerRecord, importPath };\n });\n}\nfunction isPlatformInjector(injector) {\n return injector instanceof R3Injector && injector.scopes.has('platform');\n}\nfunction isRootInjector(injector) {\n return injector instanceof R3Injector && injector.scopes.has('root');\n}\n/**\n * Gets the providers configured on an injector.\n *\n * @param injector the injector to lookup the providers of\n * @returns ProviderRecord[] an array of objects representing the providers of the given injector\n */\nfunction getInjectorProviders(injector) {\n if (injector instanceof NodeInjector) {\n return getNodeInjectorProviders(injector);\n }\n else if (injector instanceof EnvironmentInjector) {\n return getEnvironmentInjectorProviders(injector);\n }\n throwError('getInjectorProviders only supports NodeInjector and EnvironmentInjector');\n}\nfunction getInjectorResolutionPath(injector) {\n const resolutionPath = [injector];\n getInjectorResolutionPathHelper(injector, resolutionPath);\n return resolutionPath;\n}\nfunction getInjectorResolutionPathHelper(injector, resolutionPath) {\n const parent = getInjectorParent(injector);\n // if getInjectorParent can't find a parent, then we've either reached the end\n // of the path, or we need to move from the Element Injector tree to the\n // module injector tree using the first injector in our path as the connection point.\n if (parent === null) {\n if (injector instanceof NodeInjector) {\n const firstInjector = resolutionPath[0];\n if (firstInjector instanceof NodeInjector) {\n const moduleInjector = getModuleInjectorOfNodeInjector(firstInjector);\n if (moduleInjector === null) {\n throwError('NodeInjector must have some connection to the module injector tree');\n }\n resolutionPath.push(moduleInjector);\n getInjectorResolutionPathHelper(moduleInjector, resolutionPath);\n }\n return resolutionPath;\n }\n }\n else {\n resolutionPath.push(parent);\n getInjectorResolutionPathHelper(parent, resolutionPath);\n }\n return resolutionPath;\n}\n/**\n * Gets the parent of an injector.\n *\n * This function is not able to make the jump from the Element Injector Tree to the Module\n * injector tree. This is because the \"parent\" (the next step in the reoslution path)\n * of a root NodeInjector is dependent on which NodeInjector ancestor initiated\n * the DI lookup. See getInjectorResolutionPath for a function that can make this jump.\n *\n * In the below diagram:\n * ```ts\n * getInjectorParent(NodeInjectorB)\n * > NodeInjectorA\n * getInjectorParent(NodeInjectorA) // or getInjectorParent(getInjectorParent(NodeInjectorB))\n * > null // cannot jump to ModuleInjector tree\n * ```\n *\n * ```\n * ┌───────┐ ┌───────────────────┐\n * ┌───────────┤ModuleA├───Injector────►│EnvironmentInjector│\n * │ └───┬───┘ └───────────────────┘\n * │ │\n * │ bootstraps\n * │ │\n * │ │\n * │ ┌────▼─────┐ ┌─────────────┐\n * declares │ComponentA├────Injector────►│NodeInjectorA│\n * │ └────┬─────┘ └─────▲───────┘\n * │ │ │\n * │ renders parent\n * │ │ │\n * │ ┌────▼─────┐ ┌─────┴───────┐\n * └─────────►│ComponentB├────Injector────►│NodeInjectorB│\n * └──────────┘ └─────────────┘\n *```\n *\n * @param injector an Injector to get the parent of\n * @returns Injector the parent of the given injector\n */\nfunction getInjectorParent(injector) {\n if (injector instanceof R3Injector) {\n return injector.parent;\n }\n let tNode;\n let lView;\n if (injector instanceof NodeInjector) {\n tNode = getNodeInjectorTNode(injector);\n lView = getNodeInjectorLView(injector);\n }\n else if (injector instanceof NullInjector) {\n return null;\n }\n else {\n throwError('getInjectorParent only support injectors of type R3Injector, NodeInjector, NullInjector');\n }\n const parentLocation = getParentInjectorLocation(tNode, lView);\n if (hasParentInjector(parentLocation)) {\n const parentInjectorIndex = getParentInjectorIndex(parentLocation);\n const parentLView = getParentInjectorView(parentLocation, lView);\n const parentTView = parentLView[TVIEW];\n const parentTNode = parentTView.data[parentInjectorIndex + 8 /* NodeInjectorOffset.TNODE */];\n return new NodeInjector(parentTNode, parentLView);\n }\n else {\n const chainedInjector = lView[INJECTOR$1];\n // Case where chainedInjector.injector is an OutletInjector and chainedInjector.injector.parent\n // is a NodeInjector.\n // todo(aleksanderbodurri): ideally nothing in packages/core should deal\n // directly with router concerns. Refactor this so that we can make the jump from\n // NodeInjector -> OutletInjector -> NodeInjector\n // without explictly relying on types contracts from packages/router\n const injectorParent = chainedInjector.injector?.parent;\n if (injectorParent instanceof NodeInjector) {\n return injectorParent;\n }\n }\n return null;\n}\n/**\n * Gets the module injector of a NodeInjector.\n *\n * @param injector NodeInjector to get module injector of\n * @returns Injector representing module injector of the given NodeInjector\n */\nfunction getModuleInjectorOfNodeInjector(injector) {\n let lView;\n if (injector instanceof NodeInjector) {\n lView = getNodeInjectorLView(injector);\n }\n else {\n throwError('getModuleInjectorOfNodeInjector must be called with a NodeInjector');\n }\n const chainedInjector = lView[INJECTOR$1];\n const moduleInjector = chainedInjector.parentInjector;\n if (!moduleInjector) {\n throwError('NodeInjector must have some connection to the module injector tree');\n }\n return moduleInjector;\n}\n\n/**\n * This file introduces series of globally accessible debug tools\n * to allow for the Angular debugging story to function.\n *\n * To see this in action run the following command:\n *\n * bazel run //packages/core/test/bundling/todo:devserver\n *\n * Then load `localhost:5432` and start using the console tools.\n */\n/**\n * This value reflects the property on the window where the dev\n * tools are patched (window.ng).\n * */\nconst GLOBAL_PUBLISH_EXPANDO_KEY = 'ng';\nlet _published = false;\n/**\n * Publishes a collection of default debug tools onto`window.ng`.\n *\n * These functions are available globally when Angular is in development\n * mode and are automatically stripped away from prod mode is on.\n */\nfunction publishDefaultGlobalUtils$1() {\n if (!_published) {\n _published = true;\n setupFrameworkInjectorProfiler();\n publishGlobalUtil('ɵgetDependenciesFromInjectable', getDependenciesFromInjectable);\n publishGlobalUtil('ɵgetInjectorProviders', getInjectorProviders);\n publishGlobalUtil('ɵgetInjectorResolutionPath', getInjectorResolutionPath);\n /**\n * Warning: this function is *INTERNAL* and should not be relied upon in application's code.\n * The contract of the function might be changed in any release and/or the function can be\n * removed completely.\n */\n publishGlobalUtil('ɵsetProfiler', setProfiler);\n publishGlobalUtil('getDirectiveMetadata', getDirectiveMetadata$1);\n publishGlobalUtil('getComponent', getComponent);\n publishGlobalUtil('getContext', getContext);\n publishGlobalUtil('getListeners', getListeners);\n publishGlobalUtil('getOwningComponent', getOwningComponent);\n publishGlobalUtil('getHostElement', getHostElement);\n publishGlobalUtil('getInjector', getInjector);\n publishGlobalUtil('getRootComponents', getRootComponents);\n publishGlobalUtil('getDirectives', getDirectives);\n publishGlobalUtil('applyChanges', applyChanges);\n }\n}\n/**\n * Publishes the given function to `window.ng` so that it can be\n * used from the browser console when an application is not in production.\n */\nfunction publishGlobalUtil(name, fn) {\n if (typeof COMPILED === 'undefined' || !COMPILED) {\n // Note: we can't export `ng` when using closure enhanced optimization as:\n // - closure declares globals itself for minified names, which sometimes clobber our `ng` global\n // - we can't declare a closure extern as the namespace `ng` is already used within Google\n // for typings for AngularJS (via `goog.provide('ng....')`).\n const w = _global;\n ngDevMode && assertDefined(fn, 'function not defined');\n if (w) {\n let container = w[GLOBAL_PUBLISH_EXPANDO_KEY];\n if (!container) {\n container = w[GLOBAL_PUBLISH_EXPANDO_KEY] = {};\n }\n container[name] = fn;\n }\n }\n}\n\n/**\n * Internal injection token that can used to access an instance of a Testability class.\n *\n * This token acts as a bridge between the core bootstrap code and the `Testability` class. This is\n * needed to ensure that there are no direct references to the `Testability` class, so it can be\n * tree-shaken away (if not referenced). For the environments/setups when the `Testability` class\n * should be available, this token is used to add a provider that references the `Testability`\n * class. Otherwise, only this token is retained in a bundle, but the `Testability` class is not.\n */\nconst TESTABILITY = new InjectionToken('');\n/**\n * Internal injection token to retrieve Testability getter class instance.\n */\nconst TESTABILITY_GETTER = new InjectionToken('');\n/**\n * The Testability service provides testing hooks that can be accessed from\n * the browser.\n *\n * Angular applications bootstrapped using an NgModule (via `@NgModule.bootstrap` field) will also\n * instantiate Testability by default (in both development and production modes).\n *\n * For applications bootstrapped using the `bootstrapApplication` function, Testability is not\n * included by default. You can include it into your applications by getting the list of necessary\n * providers using the `provideProtractorTestingSupport()` function and adding them into the\n * `options.providers` array. Example:\n *\n * ```typescript\n * import {provideProtractorTestingSupport} from '@angular/platform-browser';\n *\n * await bootstrapApplication(RootComponent, providers: [provideProtractorTestingSupport()]);\n * ```\n *\n * @publicApi\n */\nclass Testability {\n constructor(_ngZone, registry, testabilityGetter) {\n this._ngZone = _ngZone;\n this.registry = registry;\n this._pendingCount = 0;\n this._isZoneStable = true;\n /**\n * Whether any work was done since the last 'whenStable' callback. This is\n * useful to detect if this could have potentially destabilized another\n * component while it is stabilizing.\n * @internal\n */\n this._didWork = false;\n this._callbacks = [];\n this.taskTrackingZone = null;\n // If there was no Testability logic registered in the global scope\n // before, register the current testability getter as a global one.\n if (!_testabilityGetter) {\n setTestabilityGetter(testabilityGetter);\n testabilityGetter.addToWindow(registry);\n }\n this._watchAngularEvents();\n _ngZone.run(() => {\n this.taskTrackingZone =\n typeof Zone == 'undefined' ? null : Zone.current.get('TaskTrackingZone');\n });\n }\n _watchAngularEvents() {\n this._ngZone.onUnstable.subscribe({\n next: () => {\n this._didWork = true;\n this._isZoneStable = false;\n }\n });\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.subscribe({\n next: () => {\n NgZone.assertNotInAngularZone();\n queueMicrotask(() => {\n this._isZoneStable = true;\n this._runCallbacksIfReady();\n });\n }\n });\n });\n }\n /**\n * Increases the number of pending request\n * @deprecated pending requests are now tracked with zones.\n */\n increasePendingRequestCount() {\n this._pendingCount += 1;\n this._didWork = true;\n return this._pendingCount;\n }\n /**\n * Decreases the number of pending request\n * @deprecated pending requests are now tracked with zones\n */\n decreasePendingRequestCount() {\n this._pendingCount -= 1;\n if (this._pendingCount < 0) {\n throw new Error('pending async requests below zero');\n }\n this._runCallbacksIfReady();\n return this._pendingCount;\n }\n /**\n * Whether an associated application is stable\n */\n isStable() {\n return this._isZoneStable && this._pendingCount === 0 && !this._ngZone.hasPendingMacrotasks;\n }\n _runCallbacksIfReady() {\n if (this.isStable()) {\n // Schedules the call backs in a new frame so that it is always async.\n queueMicrotask(() => {\n while (this._callbacks.length !== 0) {\n let cb = this._callbacks.pop();\n clearTimeout(cb.timeoutId);\n cb.doneCb(this._didWork);\n }\n this._didWork = false;\n });\n }\n else {\n // Still not stable, send updates.\n let pending = this.getPendingTasks();\n this._callbacks = this._callbacks.filter((cb) => {\n if (cb.updateCb && cb.updateCb(pending)) {\n clearTimeout(cb.timeoutId);\n return false;\n }\n return true;\n });\n this._didWork = true;\n }\n }\n getPendingTasks() {\n if (!this.taskTrackingZone) {\n return [];\n }\n // Copy the tasks data so that we don't leak tasks.\n return this.taskTrackingZone.macroTasks.map((t) => {\n return {\n source: t.source,\n // From TaskTrackingZone:\n // https://github.com/angular/zone.js/blob/master/lib/zone-spec/task-tracking.ts#L40\n creationLocation: t.creationLocation,\n data: t.data\n };\n });\n }\n addCallback(cb, timeout, updateCb) {\n let timeoutId = -1;\n if (timeout && timeout > 0) {\n timeoutId = setTimeout(() => {\n this._callbacks = this._callbacks.filter((cb) => cb.timeoutId !== timeoutId);\n cb(this._didWork, this.getPendingTasks());\n }, timeout);\n }\n this._callbacks.push({ doneCb: cb, timeoutId: timeoutId, updateCb: updateCb });\n }\n /**\n * Wait for the application to be stable with a timeout. If the timeout is reached before that\n * happens, the callback receives a list of the macro tasks that were pending, otherwise null.\n *\n * @param doneCb The callback to invoke when Angular is stable or the timeout expires\n * whichever comes first.\n * @param timeout Optional. The maximum time to wait for Angular to become stable. If not\n * specified, whenStable() will wait forever.\n * @param updateCb Optional. If specified, this callback will be invoked whenever the set of\n * pending macrotasks changes. If this callback returns true doneCb will not be invoked\n * and no further updates will be issued.\n */\n whenStable(doneCb, timeout, updateCb) {\n if (updateCb && !this.taskTrackingZone) {\n throw new Error('Task tracking zone is required when passing an update callback to ' +\n 'whenStable(). Is \"zone.js/plugins/task-tracking\" loaded?');\n }\n // These arguments are 'Function' above to keep the public API simple.\n this.addCallback(doneCb, timeout, updateCb);\n this._runCallbacksIfReady();\n }\n /**\n * Get the number of pending requests\n * @deprecated pending requests are now tracked with zones\n */\n getPendingRequestCount() {\n return this._pendingCount;\n }\n /**\n * Registers an application with a testability hook so that it can be tracked.\n * @param token token of application, root element\n *\n * @internal\n */\n registerApplication(token) {\n this.registry.registerApplication(token, this);\n }\n /**\n * Unregisters an application.\n * @param token token of application, root element\n *\n * @internal\n */\n unregisterApplication(token) {\n this.registry.unregisterApplication(token);\n }\n /**\n * Find providers by name\n * @param using The root element to search from\n * @param provider The name of binding variable\n * @param exactMatch Whether using exactMatch\n */\n findProviders(using, provider, exactMatch) {\n // TODO(juliemr): implement.\n return [];\n }\n static { this.ɵfac = function Testability_Factory(t) { return new (t || Testability)(ɵɵinject(NgZone), ɵɵinject(TestabilityRegistry), ɵɵinject(TESTABILITY_GETTER)); }; }\n static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Testability, factory: Testability.ɵfac }); }\n}\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && setClassMetadata(Testability, [{\n type: Injectable\n }], function () { return [{ type: NgZone }, { type: TestabilityRegistry }, { type: undefined, decorators: [{\n type: Inject,\n args: [TESTABILITY_GETTER]\n }] }]; }, null); })();\n/**\n * A global registry of {@link Testability} instances for specific elements.\n * @publicApi\n */\nclass TestabilityRegistry {\n constructor() {\n /** @internal */\n this._applications = new Map();\n }\n /**\n * Registers an application with a testability hook so that it can be tracked\n * @param token token of application, root element\n * @param testability Testability hook\n */\n registerApplication(token, testability) {\n this._applications.set(token, testability);\n }\n /**\n * Unregisters an application.\n * @param token token of application, root element\n */\n unregisterApplication(token) {\n this._applications.delete(token);\n }\n /**\n * Unregisters all applications\n */\n unregisterAllApplications() {\n this._applications.clear();\n }\n /**\n * Get a testability hook associated with the application\n * @param elem root element\n */\n getTestability(elem) {\n return this._applications.get(elem) || null;\n }\n /**\n * Get all registered testabilities\n */\n getAllTestabilities() {\n return Array.from(this._applications.values());\n }\n /**\n * Get all registered applications(root elements)\n */\n getAllRootElements() {\n return Array.from(this._applications.keys());\n }\n /**\n * Find testability of a node in the Tree\n * @param elem node\n * @param findInAncestors whether finding testability in ancestors if testability was not found in\n * current node\n */\n findTestabilityInTree(elem, findInAncestors = true) {\n return _testabilityGetter?.findTestabilityInTree(this, elem, findInAncestors) ?? null;\n }\n static { this.ɵfac = function TestabilityRegistry_Factory(t) { return new (t || TestabilityRegistry)(); }; }\n static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac, providedIn: 'platform' }); }\n}\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && setClassMetadata(TestabilityRegistry, [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }], null, null); })();\n/**\n * Set the {@link GetTestability} implementation used by the Angular testing framework.\n * @publicApi\n */\nfunction setTestabilityGetter(getter) {\n _testabilityGetter = getter;\n}\nlet _testabilityGetter;\n\nlet _platformInjector = null;\n/**\n * Internal token to indicate whether having multiple bootstrapped platform should be allowed (only\n * one bootstrapped platform is allowed by default). This token helps to support SSR scenarios.\n */\nconst ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');\n/**\n * Internal token that allows to register extra callbacks that should be invoked during the\n * `PlatformRef.destroy` operation. This token is needed to avoid a direct reference to the\n * `PlatformRef` class (i.e. register the callback via `PlatformRef.onDestroy`), thus making the\n * entire class tree-shakeable.\n */\nconst PLATFORM_DESTROY_LISTENERS = new InjectionToken('PlatformDestroyListeners');\n/**\n * A [DI token](guide/glossary#di-token \"DI token definition\") that provides a set of callbacks to\n * be called for every component that is bootstrapped.\n *\n * Each callback must take a `ComponentRef` instance and return nothing.\n *\n * `(componentRef: ComponentRef) => void`\n *\n * @publicApi\n */\nconst APP_BOOTSTRAP_LISTENER = new InjectionToken('appBootstrapListener');\nfunction compileNgModuleFactory(injector, options, moduleType) {\n ngDevMode && assertNgModuleType(moduleType);\n const moduleFactory = new NgModuleFactory(moduleType);\n // All of the logic below is irrelevant for AOT-compiled code.\n if (typeof ngJitMode !== 'undefined' && !ngJitMode) {\n return Promise.resolve(moduleFactory);\n }\n const compilerOptions = injector.get(COMPILER_OPTIONS, []).concat(options);\n // Configure the compiler to use the provided options. This call may fail when multiple modules\n // are bootstrapped with incompatible options, as a component can only be compiled according to\n // a single set of options.\n setJitOptions({\n defaultEncapsulation: _lastDefined(compilerOptions.map(opts => opts.defaultEncapsulation)),\n preserveWhitespaces: _lastDefined(compilerOptions.map(opts => opts.preserveWhitespaces)),\n });\n if (isComponentResourceResolutionQueueEmpty()) {\n return Promise.resolve(moduleFactory);\n }\n const compilerProviders = compilerOptions.flatMap((option) => option.providers ?? []);\n // In case there are no compiler providers, we just return the module factory as\n // there won't be any resource loader. This can happen with Ivy, because AOT compiled\n // modules can be still passed through \"bootstrapModule\". In that case we shouldn't\n // unnecessarily require the JIT compiler.\n if (compilerProviders.length === 0) {\n return Promise.resolve(moduleFactory);\n }\n const compiler = getCompilerFacade({\n usage: 0 /* JitCompilerUsage.Decorator */,\n kind: 'NgModule',\n type: moduleType,\n });\n const compilerInjector = Injector.create({ providers: compilerProviders });\n const resourceLoader = compilerInjector.get(compiler.ResourceLoader);\n // The resource loader can also return a string while the \"resolveComponentResources\"\n // always expects a promise. Therefore we need to wrap the returned value in a promise.\n return resolveComponentResources(url => Promise.resolve(resourceLoader.get(url)))\n .then(() => moduleFactory);\n}\nfunction publishDefaultGlobalUtils() {\n ngDevMode && publishDefaultGlobalUtils$1();\n}\n/**\n * Sets the error for an invalid write to a signal to be an Angular `RuntimeError`.\n */\nfunction publishSignalConfiguration() {\n setThrowInvalidWriteToSignalError(() => {\n throw new RuntimeError(600 /* RuntimeErrorCode.SIGNAL_WRITE_FROM_ILLEGAL_CONTEXT */, ngDevMode &&\n 'Writing to signals is not allowed in a `computed` or an `effect` by default. ' +\n 'Use `allowSignalWrites` in the `CreateEffectOptions` to enable this inside effects.');\n });\n}\nfunction isBoundToModule(cf) {\n return cf.isBoundToModule;\n}\n/**\n * A token for third-party components that can register themselves with NgProbe.\n *\n * @publicApi\n */\nclass NgProbeToken {\n constructor(name, token) {\n this.name = name;\n this.token = token;\n }\n}\n/**\n * Creates a platform.\n * Platforms must be created on launch using this function.\n *\n * @publicApi\n */\nfunction createPlatform(injector) {\n if (_platformInjector && !_platformInjector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {\n throw new RuntimeError(400 /* RuntimeErrorCode.MULTIPLE_PLATFORMS */, ngDevMode &&\n 'There can be only one platform. Destroy the previous one to create a new one.');\n }\n publishDefaultGlobalUtils();\n publishSignalConfiguration();\n _platformInjector = injector;\n const platform = injector.get(PlatformRef);\n runPlatformInitializers(injector);\n return platform;\n}\n/**\n * The goal of this function is to bootstrap a platform injector,\n * but avoid referencing `PlatformRef` class.\n * This function is needed for bootstrapping a Standalone Component.\n */\nfunction createOrReusePlatformInjector(providers = []) {\n // If a platform injector already exists, it means that the platform\n // is already bootstrapped and no additional actions are required.\n if (_platformInjector)\n return _platformInjector;\n publishDefaultGlobalUtils();\n // Otherwise, setup a new platform injector and run platform initializers.\n const injector = createPlatformInjector(providers);\n _platformInjector = injector;\n publishSignalConfiguration();\n runPlatformInitializers(injector);\n return injector;\n}\nfunction runPlatformInitializers(injector) {\n const inits = injector.get(PLATFORM_INITIALIZER, null);\n inits?.forEach((init) => init());\n}\n/**\n * Internal create application API that implements the core application creation logic and optional\n * bootstrap logic.\n *\n * Platforms (such as `platform-browser`) may require different set of application and platform\n * providers for an application to function correctly. As a result, platforms may use this function\n * internally and supply the necessary providers during the bootstrap, while exposing\n * platform-specific APIs as a part of their public API.\n *\n * @returns A promise that returns an `ApplicationRef` instance once resolved.\n */\nfunction internalCreateApplication(config) {\n try {\n const { rootComponent, appProviders, platformProviders } = config;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && rootComponent !== undefined) {\n assertStandaloneComponentType(rootComponent);\n }\n const platformInjector = createOrReusePlatformInjector(platformProviders);\n // Create root application injector based on a set of providers configured at the platform\n // bootstrap level as well as providers passed to the bootstrap call by a user.\n const allAppProviders = [\n provideZoneChangeDetection(),\n ...(appProviders || []),\n ];\n const adapter = new EnvironmentNgModuleRefAdapter({\n providers: allAppProviders,\n parent: platformInjector,\n debugName: (typeof ngDevMode === 'undefined' || ngDevMode) ? 'Environment Injector' : '',\n // We skip environment initializers because we need to run them inside the NgZone, which\n // happens after we get the NgZone instance from the Injector.\n runEnvironmentInitializers: false,\n });\n const envInjector = adapter.injector;\n const ngZone = envInjector.get(NgZone);\n return ngZone.run(() => {\n envInjector.resolveInjectorInitializers();\n const exceptionHandler = envInjector.get(ErrorHandler, null);\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !exceptionHandler) {\n throw new RuntimeError(402 /* RuntimeErrorCode.MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP */, 'No `ErrorHandler` found in the Dependency Injection tree.');\n }\n let onErrorSubscription;\n ngZone.runOutsideAngular(() => {\n onErrorSubscription = ngZone.onError.subscribe({\n next: (error) => {\n exceptionHandler.handleError(error);\n }\n });\n });\n // If the whole platform is destroyed, invoke the `destroy` method\n // for all bootstrapped applications as well.\n const destroyListener = () => envInjector.destroy();\n const onPlatformDestroyListeners = platformInjector.get(PLATFORM_DESTROY_LISTENERS);\n onPlatformDestroyListeners.add(destroyListener);\n envInjector.onDestroy(() => {\n onErrorSubscription.unsubscribe();\n onPlatformDestroyListeners.delete(destroyListener);\n });\n return _callAndReportToErrorHandler(exceptionHandler, ngZone, () => {\n const initStatus = envInjector.get(ApplicationInitStatus);\n initStatus.runInitializers();\n return initStatus.donePromise.then(() => {\n const localeId = envInjector.get(LOCALE_ID, DEFAULT_LOCALE_ID);\n setLocaleId(localeId || DEFAULT_LOCALE_ID);\n const appRef = envInjector.get(ApplicationRef);\n if (rootComponent !== undefined) {\n appRef.bootstrap(rootComponent);\n }\n return appRef;\n });\n });\n });\n }\n catch (e) {\n return Promise.reject(e);\n }\n}\n/**\n * Creates a factory for a platform. Can be used to provide or override `Providers` specific to\n * your application's runtime needs, such as `PLATFORM_INITIALIZER` and `PLATFORM_ID`.\n * @param parentPlatformFactory Another platform factory to modify. Allows you to compose factories\n * to build up configurations that might be required by different libraries or parts of the\n * application.\n * @param name Identifies the new platform factory.\n * @param providers A set of dependency providers for platforms created with the new factory.\n *\n * @publicApi\n */\nfunction createPlatformFactory(parentPlatformFactory, name, providers = []) {\n const desc = `Platform: ${name}`;\n const marker = new InjectionToken(desc);\n return (extraProviders = []) => {\n let platform = getPlatform();\n if (!platform || platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {\n const platformProviders = [\n ...providers,\n ...extraProviders,\n { provide: marker, useValue: true }\n ];\n if (parentPlatformFactory) {\n parentPlatformFactory(platformProviders);\n }\n else {\n createPlatform(createPlatformInjector(platformProviders, desc));\n }\n }\n return assertPlatform(marker);\n };\n}\n/**\n * Checks that there is currently a platform that contains the given token as a provider.\n *\n * @publicApi\n */\nfunction assertPlatform(requiredToken) {\n const platform = getPlatform();\n if (!platform) {\n throw new RuntimeError(401 /* RuntimeErrorCode.PLATFORM_NOT_FOUND */, ngDevMode && 'No platform exists!');\n }\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !platform.injector.get(requiredToken, null)) {\n throw new RuntimeError(400 /* RuntimeErrorCode.MULTIPLE_PLATFORMS */, 'A platform with a different configuration has been created. Please destroy it first.');\n }\n return platform;\n}\n/**\n * Helper function to create an instance of a platform injector (that maintains the 'platform'\n * scope).\n */\nfunction createPlatformInjector(providers = [], name) {\n return Injector.create({\n name,\n providers: [\n { provide: INJECTOR_SCOPE, useValue: 'platform' },\n { provide: PLATFORM_DESTROY_LISTENERS, useValue: new Set([() => _platformInjector = null]) },\n ...providers\n ],\n });\n}\n/**\n * Destroys the current Angular platform and all Angular applications on the page.\n * Destroys all modules and listeners registered with the platform.\n *\n * @publicApi\n */\nfunction destroyPlatform() {\n getPlatform()?.destroy();\n}\n/**\n * Returns the current platform.\n *\n * @publicApi\n */\nfunction getPlatform() {\n return _platformInjector?.get(PlatformRef) ?? null;\n}\n/**\n * The Angular platform is the entry point for Angular on a web page.\n * Each page has exactly one platform. Services (such as reflection) which are common\n * to every Angular application running on the page are bound in its scope.\n * A page's platform is initialized implicitly when a platform is created using a platform\n * factory such as `PlatformBrowser`, or explicitly by calling the `createPlatform()` function.\n *\n * @publicApi\n */\nclass PlatformRef {\n /** @internal */\n constructor(_injector) {\n this._injector = _injector;\n this._modules = [];\n this._destroyListeners = [];\n this._destroyed = false;\n }\n /**\n * Creates an instance of an `@NgModule` for the given platform.\n *\n * @deprecated Passing NgModule factories as the `PlatformRef.bootstrapModuleFactory` function\n * argument is deprecated. Use the `PlatformRef.bootstrapModule` API instead.\n */\n bootstrapModuleFactory(moduleFactory, options) {\n // Note: We need to create the NgZone _before_ we instantiate the module,\n // as instantiating the module creates some providers eagerly.\n // So we create a mini parent injector that just contains the new NgZone and\n // pass that as parent to the NgModuleFactory.\n const ngZone = getNgZone(options?.ngZone, getNgZoneOptions({\n eventCoalescing: options?.ngZoneEventCoalescing,\n runCoalescing: options?.ngZoneRunCoalescing\n }));\n // Note: Create ngZoneInjector within ngZone.run so that all of the instantiated services are\n // created within the Angular zone\n // Do not try to replace ngZone.run with ApplicationRef#run because ApplicationRef would then be\n // created outside of the Angular zone.\n return ngZone.run(() => {\n const moduleRef = createNgModuleRefWithProviders(moduleFactory.moduleType, this.injector, internalProvideZoneChangeDetection(() => ngZone));\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n moduleRef.injector.get(PROVIDED_NG_ZONE, null) !== null) {\n throw new RuntimeError(207 /* RuntimeErrorCode.PROVIDER_IN_WRONG_CONTEXT */, '`bootstrapModule` does not support `provideZoneChangeDetection`. Use `BootstrapOptions` instead.');\n }\n const exceptionHandler = moduleRef.injector.get(ErrorHandler, null);\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && exceptionHandler === null) {\n throw new RuntimeError(402 /* RuntimeErrorCode.MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP */, 'No ErrorHandler. Is platform module (BrowserModule) included?');\n }\n ngZone.runOutsideAngular(() => {\n const subscription = ngZone.onError.subscribe({\n next: (error) => {\n exceptionHandler.handleError(error);\n }\n });\n moduleRef.onDestroy(() => {\n remove(this._modules, moduleRef);\n subscription.unsubscribe();\n });\n });\n return _callAndReportToErrorHandler(exceptionHandler, ngZone, () => {\n const initStatus = moduleRef.injector.get(ApplicationInitStatus);\n initStatus.runInitializers();\n return initStatus.donePromise.then(() => {\n // If the `LOCALE_ID` provider is defined at bootstrap then we set the value for ivy\n const localeId = moduleRef.injector.get(LOCALE_ID, DEFAULT_LOCALE_ID);\n setLocaleId(localeId || DEFAULT_LOCALE_ID);\n this._moduleDoBootstrap(moduleRef);\n return moduleRef;\n });\n });\n });\n }\n /**\n * Creates an instance of an `@NgModule` for a given platform.\n *\n * @usageNotes\n * ### Simple Example\n *\n * ```typescript\n * @NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * let moduleRef = platformBrowser().bootstrapModule(MyModule);\n * ```\n *\n */\n bootstrapModule(moduleType, compilerOptions = []) {\n const options = optionsReducer({}, compilerOptions);\n return compileNgModuleFactory(this.injector, options, moduleType)\n .then(moduleFactory => this.bootstrapModuleFactory(moduleFactory, options));\n }\n _moduleDoBootstrap(moduleRef) {\n const appRef = moduleRef.injector.get(ApplicationRef);\n if (moduleRef._bootstrapComponents.length > 0) {\n moduleRef._bootstrapComponents.forEach(f => appRef.bootstrap(f));\n }\n else if (moduleRef.instance.ngDoBootstrap) {\n moduleRef.instance.ngDoBootstrap(appRef);\n }\n else {\n throw new RuntimeError(-403 /* RuntimeErrorCode.BOOTSTRAP_COMPONENTS_NOT_FOUND */, ngDevMode &&\n `The module ${stringify(moduleRef.instance.constructor)} was bootstrapped, ` +\n `but it does not declare \"@NgModule.bootstrap\" components nor a \"ngDoBootstrap\" method. ` +\n `Please define one of these.`);\n }\n this._modules.push(moduleRef);\n }\n /**\n * Registers a listener to be called when the platform is destroyed.\n */\n onDestroy(callback) {\n this._destroyListeners.push(callback);\n }\n /**\n * Retrieves the platform {@link Injector}, which is the parent injector for\n * every Angular application on the page and provides singleton providers.\n */\n get injector() {\n return this._injector;\n }\n /**\n * Destroys the current Angular platform and all Angular applications on the page.\n * Destroys all modules and listeners registered with the platform.\n */\n destroy() {\n if (this._destroyed) {\n throw new RuntimeError(404 /* RuntimeErrorCode.PLATFORM_ALREADY_DESTROYED */, ngDevMode && 'The platform has already been destroyed!');\n }\n this._modules.slice().forEach(module => module.destroy());\n this._destroyListeners.forEach(listener => listener());\n const destroyListeners = this._injector.get(PLATFORM_DESTROY_LISTENERS, null);\n if (destroyListeners) {\n destroyListeners.forEach(listener => listener());\n destroyListeners.clear();\n }\n this._destroyed = true;\n }\n /**\n * Indicates whether this instance was destroyed.\n */\n get destroyed() {\n return this._destroyed;\n }\n static { this.ɵfac = function PlatformRef_Factory(t) { return new (t || PlatformRef)(ɵɵinject(Injector)); }; }\n static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac, providedIn: 'platform' }); }\n}\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && setClassMetadata(PlatformRef, [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }], function () { return [{ type: Injector }]; }, null); })();\n// Transforms a set of `BootstrapOptions` (supported by the NgModule-based bootstrap APIs) ->\n// `NgZoneOptions` that are recognized by the NgZone constructor. Passing no options will result in\n// a set of default options returned.\nfunction getNgZoneOptions(options) {\n return {\n enableLongStackTrace: typeof ngDevMode === 'undefined' ? false : !!ngDevMode,\n shouldCoalesceEventChangeDetection: options?.eventCoalescing ?? false,\n shouldCoalesceRunChangeDetection: options?.runCoalescing ?? false,\n };\n}\nfunction getNgZone(ngZoneToUse = 'zone.js', options) {\n if (ngZoneToUse === 'noop') {\n return new NoopNgZone();\n }\n if (ngZoneToUse === 'zone.js') {\n return new NgZone(options);\n }\n return ngZoneToUse;\n}\nfunction _callAndReportToErrorHandler(errorHandler, ngZone, callback) {\n try {\n const result = callback();\n if (isPromise(result)) {\n return result.catch((e) => {\n ngZone.runOutsideAngular(() => errorHandler.handleError(e));\n // rethrow as the exception handler might not do it\n throw e;\n });\n }\n return result;\n }\n catch (e) {\n ngZone.runOutsideAngular(() => errorHandler.handleError(e));\n // rethrow as the exception handler might not do it\n throw e;\n }\n}\nfunction optionsReducer(dst, objs) {\n if (Array.isArray(objs)) {\n return objs.reduce(optionsReducer, dst);\n }\n return { ...dst, ...objs };\n}\n/**\n * A reference to an Angular application running on a page.\n *\n * @usageNotes\n * {@a is-stable-examples}\n * ### isStable examples and caveats\n *\n * Note two important points about `isStable`, demonstrated in the examples below:\n * - the application will never be stable if you start any kind\n * of recurrent asynchronous task when the application starts\n * (for example for a polling process, started with a `setInterval`, a `setTimeout`\n * or using RxJS operators like `interval`);\n * - the `isStable` Observable runs outside of the Angular zone.\n *\n * Let's imagine that you start a recurrent task\n * (here incrementing a counter, using RxJS `interval`),\n * and at the same time subscribe to `isStable`.\n *\n * ```\n * constructor(appRef: ApplicationRef) {\n * appRef.isStable.pipe(\n * filter(stable => stable)\n * ).subscribe(() => console.log('App is stable now');\n * interval(1000).subscribe(counter => console.log(counter));\n * }\n * ```\n * In this example, `isStable` will never emit `true`,\n * and the trace \"App is stable now\" will never get logged.\n *\n * If you want to execute something when the app is stable,\n * you have to wait for the application to be stable\n * before starting your polling process.\n *\n * ```\n * constructor(appRef: ApplicationRef) {\n * appRef.isStable.pipe(\n * first(stable => stable),\n * tap(stable => console.log('App is stable now')),\n * switchMap(() => interval(1000))\n * ).subscribe(counter => console.log(counter));\n * }\n * ```\n * In this example, the trace \"App is stable now\" will be logged\n * and then the counter starts incrementing every second.\n *\n * Note also that this Observable runs outside of the Angular zone,\n * which means that the code in the subscription\n * to this Observable will not trigger the change detection.\n *\n * Let's imagine that instead of logging the counter value,\n * you update a field of your component\n * and display it in its template.\n *\n * ```\n * constructor(appRef: ApplicationRef) {\n * appRef.isStable.pipe(\n * first(stable => stable),\n * switchMap(() => interval(1000))\n * ).subscribe(counter => this.value = counter);\n * }\n * ```\n * As the `isStable` Observable runs outside the zone,\n * the `value` field will be updated properly,\n * but the template will not be refreshed!\n *\n * You'll have to manually trigger the change detection to update the template.\n *\n * ```\n * constructor(appRef: ApplicationRef, cd: ChangeDetectorRef) {\n * appRef.isStable.pipe(\n * first(stable => stable),\n * switchMap(() => interval(1000))\n * ).subscribe(counter => {\n * this.value = counter;\n * cd.detectChanges();\n * });\n * }\n * ```\n *\n * Or make the subscription callback run inside the zone.\n *\n * ```\n * constructor(appRef: ApplicationRef, zone: NgZone) {\n * appRef.isStable.pipe(\n * first(stable => stable),\n * switchMap(() => interval(1000))\n * ).subscribe(counter => zone.run(() => this.value = counter));\n * }\n * ```\n *\n * @publicApi\n */\nclass ApplicationRef {\n constructor() {\n /** @internal */\n this._bootstrapListeners = [];\n this._runningTick = false;\n this._destroyed = false;\n this._destroyListeners = [];\n /** @internal */\n this._views = [];\n this.internalErrorHandler = inject(INTERNAL_APPLICATION_ERROR_HANDLER);\n this.zoneIsStable = inject(ZONE_IS_STABLE_OBSERVABLE);\n /**\n * Get a list of component types registered to this application.\n * This list is populated even before the component is created.\n */\n this.componentTypes = [];\n /**\n * Get a list of components registered to this application.\n */\n this.components = [];\n /**\n * Returns an Observable that indicates when the application is stable or unstable.\n */\n this.isStable = inject(InitialRenderPendingTasks)\n .hasPendingTasks.pipe(switchMap(hasPendingTasks => hasPendingTasks ? of(false) : this.zoneIsStable), distinctUntilChanged(), share());\n this._injector = inject(EnvironmentInjector);\n }\n /**\n * Indicates whether this instance was destroyed.\n */\n get destroyed() {\n return this._destroyed;\n }\n /**\n * The `EnvironmentInjector` used to create this application.\n */\n get injector() {\n return this._injector;\n }\n /**\n * Bootstrap a component onto the element identified by its selector or, optionally, to a\n * specified element.\n *\n * @usageNotes\n * ### Bootstrap process\n *\n * When bootstrapping a component, Angular mounts it onto a target DOM element\n * and kicks off automatic change detection. The target DOM element can be\n * provided using the `rootSelectorOrNode` argument.\n *\n * If the target DOM element is not provided, Angular tries to find one on a page\n * using the `selector` of the component that is being bootstrapped\n * (first matched element is used).\n *\n * ### Example\n *\n * Generally, we define the component to bootstrap in the `bootstrap` array of `NgModule`,\n * but it requires us to know the component while writing the application code.\n *\n * Imagine a situation where we have to wait for an API call to decide about the component to\n * bootstrap. We can use the `ngDoBootstrap` hook of the `NgModule` and call this method to\n * dynamically bootstrap a component.\n *\n * {@example core/ts/platform/platform.ts region='componentSelector'}\n *\n * Optionally, a component can be mounted onto a DOM element that does not match the\n * selector of the bootstrapped component.\n *\n * In the following example, we are providing a CSS selector to match the target element.\n *\n * {@example core/ts/platform/platform.ts region='cssSelector'}\n *\n * While in this example, we are providing reference to a DOM node.\n *\n * {@example core/ts/platform/platform.ts region='domNode'}\n */\n bootstrap(componentOrFactory, rootSelectorOrNode) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed();\n const isComponentFactory = componentOrFactory instanceof ComponentFactory$1;\n const initStatus = this._injector.get(ApplicationInitStatus);\n if (!initStatus.done) {\n const standalone = !isComponentFactory && isStandalone(componentOrFactory);\n const errorMessage = 'Cannot bootstrap as there are still asynchronous initializers running.' +\n (standalone ? '' :\n ' Bootstrap components in the `ngDoBootstrap` method of the root module.');\n throw new RuntimeError(405 /* RuntimeErrorCode.ASYNC_INITIALIZERS_STILL_RUNNING */, (typeof ngDevMode === 'undefined' || ngDevMode) && errorMessage);\n }\n let componentFactory;\n if (isComponentFactory) {\n componentFactory = componentOrFactory;\n }\n else {\n const resolver = this._injector.get(ComponentFactoryResolver$1);\n componentFactory = resolver.resolveComponentFactory(componentOrFactory);\n }\n this.componentTypes.push(componentFactory.componentType);\n // Create a factory associated with the current module if it's not bound to some other\n const ngModule = isBoundToModule(componentFactory) ? undefined : this._injector.get(NgModuleRef$1);\n const selectorOrNode = rootSelectorOrNode || componentFactory.selector;\n const compRef = componentFactory.create(Injector.NULL, [], selectorOrNode, ngModule);\n const nativeElement = compRef.location.nativeElement;\n const testability = compRef.injector.get(TESTABILITY, null);\n testability?.registerApplication(nativeElement);\n compRef.onDestroy(() => {\n this.detachView(compRef.hostView);\n remove(this.components, compRef);\n testability?.unregisterApplication(nativeElement);\n });\n this._loadComponent(compRef);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const _console = this._injector.get(Console);\n _console.log(`Angular is running in development mode.`);\n }\n return compRef;\n }\n /**\n * Invoke this method to explicitly process change detection and its side-effects.\n *\n * In development mode, `tick()` also performs a second change detection cycle to ensure that no\n * further changes are detected. If additional changes are picked up during this second cycle,\n * bindings in the app have side-effects that cannot be resolved in a single change detection\n * pass.\n * In this case, Angular throws an error, since an Angular application can only have one change\n * detection pass during which all change detection must complete.\n */\n tick() {\n (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed();\n if (this._runningTick) {\n throw new RuntimeError(101 /* RuntimeErrorCode.RECURSIVE_APPLICATION_REF_TICK */, ngDevMode && 'ApplicationRef.tick is called recursively');\n }\n try {\n this._runningTick = true;\n for (let view of this._views) {\n view.detectChanges();\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n for (let view of this._views) {\n view.checkNoChanges();\n }\n }\n }\n catch (e) {\n // Attention: Don't rethrow as it could cancel subscriptions to Observables!\n this.internalErrorHandler(e);\n }\n finally {\n this._runningTick = false;\n }\n }\n /**\n * Attaches a view so that it will be dirty checked.\n * The view will be automatically detached when it is destroyed.\n * This will throw if the view is already attached to a ViewContainer.\n */\n attachView(viewRef) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed();\n const view = viewRef;\n this._views.push(view);\n view.attachToAppRef(this);\n }\n /**\n * Detaches a view from dirty checking again.\n */\n detachView(viewRef) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed();\n const view = viewRef;\n remove(this._views, view);\n view.detachFromAppRef();\n }\n _loadComponent(componentRef) {\n this.attachView(componentRef.hostView);\n this.tick();\n this.components.push(componentRef);\n // Get the listeners lazily to prevent DI cycles.\n const listeners = this._injector.get(APP_BOOTSTRAP_LISTENER, []);\n if (ngDevMode && !Array.isArray(listeners)) {\n throw new RuntimeError(-209 /* RuntimeErrorCode.INVALID_MULTI_PROVIDER */, 'Unexpected type of the `APP_BOOTSTRAP_LISTENER` token value ' +\n `(expected an array, but got ${typeof listeners}). ` +\n 'Please check that the `APP_BOOTSTRAP_LISTENER` token is configured as a ' +\n '`multi: true` provider.');\n }\n listeners.push(...this._bootstrapListeners);\n listeners.forEach((listener) => listener(componentRef));\n }\n /** @internal */\n ngOnDestroy() {\n if (this._destroyed)\n return;\n try {\n // Call all the lifecycle hooks.\n this._destroyListeners.forEach(listener => listener());\n // Destroy all registered views.\n this._views.slice().forEach((view) => view.destroy());\n }\n finally {\n // Indicate that this instance is destroyed.\n this._destroyed = true;\n // Release all references.\n this._views = [];\n this._bootstrapListeners = [];\n this._destroyListeners = [];\n }\n }\n /**\n * Registers a listener to be called when an instance is destroyed.\n *\n * @param callback A callback function to add as a listener.\n * @returns A function which unregisters a listener.\n */\n onDestroy(callback) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed();\n this._destroyListeners.push(callback);\n return () => remove(this._destroyListeners, callback);\n }\n /**\n * Destroys an Angular application represented by this `ApplicationRef`. Calling this function\n * will destroy the associated environment injectors as well as all the bootstrapped components\n * with their views.\n */\n destroy() {\n if (this._destroyed) {\n throw new RuntimeError(406 /* RuntimeErrorCode.APPLICATION_REF_ALREADY_DESTROYED */, ngDevMode && 'This instance of the `ApplicationRef` has already been destroyed.');\n }\n const injector = this._injector;\n // Check that this injector instance supports destroy operation.\n if (injector.destroy && !injector.destroyed) {\n // Destroying an underlying injector will trigger the `ngOnDestroy` lifecycle\n // hook, which invokes the remaining cleanup actions.\n injector.destroy();\n }\n }\n /**\n * Returns the number of attached views.\n */\n get viewCount() {\n return this._views.length;\n }\n warnIfDestroyed() {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && this._destroyed) {\n console.warn(formatRuntimeError(406 /* RuntimeErrorCode.APPLICATION_REF_ALREADY_DESTROYED */, 'This instance of the `ApplicationRef` has already been destroyed.'));\n }\n }\n static { this.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(); }; }\n static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' }); }\n}\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && setClassMetadata(ApplicationRef, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nfunction remove(list, el) {\n const index = list.indexOf(el);\n if (index > -1) {\n list.splice(index, 1);\n }\n}\nfunction _lastDefined(args) {\n for (let i = args.length - 1; i >= 0; i--) {\n if (args[i] !== undefined) {\n return args[i];\n }\n }\n return undefined;\n}\n/**\n * `InjectionToken` used to configure how to call the `ErrorHandler`.\n *\n * `NgZone` is provided by default today so the default (and only) implementation for this\n * is calling `ErrorHandler.handleError` outside of the Angular zone.\n */\nconst INTERNAL_APPLICATION_ERROR_HANDLER = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'internal error handler' : '', {\n providedIn: 'root',\n factory: () => {\n const userErrorHandler = inject(ErrorHandler);\n return userErrorHandler.handleError.bind(undefined);\n }\n});\nfunction ngZoneApplicationErrorHandlerFactory() {\n const zone = inject(NgZone);\n const userErrorHandler = inject(ErrorHandler);\n return (e) => zone.runOutsideAngular(() => userErrorHandler.handleError(e));\n}\nclass NgZoneChangeDetectionScheduler {\n constructor() {\n this.zone = inject(NgZone);\n this.applicationRef = inject(ApplicationRef);\n }\n initialize() {\n if (this._onMicrotaskEmptySubscription) {\n return;\n }\n this._onMicrotaskEmptySubscription = this.zone.onMicrotaskEmpty.subscribe({\n next: () => {\n this.zone.run(() => {\n this.applicationRef.tick();\n });\n }\n });\n }\n ngOnDestroy() {\n this._onMicrotaskEmptySubscription?.unsubscribe();\n }\n static { this.ɵfac = function NgZoneChangeDetectionScheduler_Factory(t) { return new (t || NgZoneChangeDetectionScheduler)(); }; }\n static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: NgZoneChangeDetectionScheduler, factory: NgZoneChangeDetectionScheduler.ɵfac, providedIn: 'root' }); }\n}\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && setClassMetadata(NgZoneChangeDetectionScheduler, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n/**\n * Internal token used to verify that `provideZoneChangeDetection` is not used\n * with the bootstrapModule API.\n */\nconst PROVIDED_NG_ZONE = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'provideZoneChangeDetection token' : '');\nfunction internalProvideZoneChangeDetection(ngZoneFactory) {\n return [\n { provide: NgZone, useFactory: ngZoneFactory },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: () => {\n const ngZoneChangeDetectionScheduler = inject(NgZoneChangeDetectionScheduler, { optional: true });\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n ngZoneChangeDetectionScheduler === null) {\n throw new RuntimeError(402 /* RuntimeErrorCode.MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP */, `A required Injectable was not found in the dependency injection tree. ` +\n 'If you are bootstrapping an NgModule, make sure that the `BrowserModule` is imported.');\n }\n return () => ngZoneChangeDetectionScheduler.initialize();\n },\n },\n { provide: INTERNAL_APPLICATION_ERROR_HANDLER, useFactory: ngZoneApplicationErrorHandlerFactory },\n { provide: ZONE_IS_STABLE_OBSERVABLE, useFactory: isStableFactory },\n ];\n}\n/**\n * Provides `NgZone`-based change detection for the application bootstrapped using\n * `bootstrapApplication`.\n *\n * `NgZone` is already provided in applications by default. This provider allows you to configure\n * options like `eventCoalescing` in the `NgZone`.\n * This provider is not available for `platformBrowser().bootstrapModule`, which uses\n * `BootstrapOptions` instead.\n *\n * @usageNotes\n * ```typescript\n * bootstrapApplication(MyApp, {providers: [\n * provideZoneChangeDetection({eventCoalescing: true}),\n * ]});\n * ```\n *\n * @publicApi\n * @see {@link bootstrapApplication}\n * @see {@link NgZoneOptions}\n */\nfunction provideZoneChangeDetection(options) {\n const zoneProviders = internalProvideZoneChangeDetection(() => new NgZone(getNgZoneOptions(options)));\n return makeEnvironmentProviders([\n (typeof ngDevMode === 'undefined' || ngDevMode) ? { provide: PROVIDED_NG_ZONE, useValue: true } :\n [],\n zoneProviders,\n ]);\n}\n\n/**\n * Returns whether Angular is in development mode.\n *\n * By default, this is true, unless `enableProdMode` is invoked prior to calling this method or the\n * application is built using the Angular CLI with the `optimization` option.\n * @see {@link cli/build ng build}\n *\n * @publicApi\n */\nfunction isDevMode() {\n return typeof ngDevMode === 'undefined' || !!ngDevMode;\n}\n/**\n * Disable Angular's development mode, which turns off assertions and other\n * checks within the framework.\n *\n * One important assertion this disables verifies that a change detection pass\n * does not result in additional changes to any bindings (also known as\n * unidirectional data flow).\n *\n * Using this method is discouraged as the Angular CLI will set production mode when using the\n * `optimization` option.\n * @see {@link cli/build ng build}\n *\n * @publicApi\n */\nfunction enableProdMode() {\n // The below check is there so when ngDevMode is set via terser\n // `global['ngDevMode'] = false;` is also dropped.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _global['ngDevMode'] = false;\n }\n}\n\n// Public API for render\n\n/**\n * Returns the NgModuleFactory with the given id (specified using [@NgModule.id\n * field](api/core/NgModule#id)), if it exists and has been loaded. Factories for NgModules that do\n * not specify an `id` cannot be retrieved. Throws if an NgModule cannot be found.\n * @publicApi\n * @deprecated Use `getNgModuleById` instead.\n */\nfunction getModuleFactory(id) {\n const type = getRegisteredNgModuleType(id);\n if (!type)\n throw noModuleError(id);\n return new NgModuleFactory(type);\n}\n/**\n * Returns the NgModule class with the given id (specified using [@NgModule.id\n * field](api/core/NgModule#id)), if it exists and has been loaded. Classes for NgModules that do\n * not specify an `id` cannot be retrieved. Throws if an NgModule cannot be found.\n * @publicApi\n */\nfunction getNgModuleById(id) {\n const type = getRegisteredNgModuleType(id);\n if (!type)\n throw noModuleError(id);\n return type;\n}\nfunction noModuleError(id) {\n return new Error(`No module with ID ${id} loaded`);\n}\n\n/**\n * Base class that provides change detection functionality.\n * A change-detection tree collects all views that are to be checked for changes.\n * Use the methods to add and remove views from the tree, initiate change-detection,\n * and explicitly mark views as _dirty_, meaning that they have changed and need to be re-rendered.\n *\n * @see [Using change detection hooks](guide/lifecycle-hooks#using-change-detection-hooks)\n * @see [Defining custom change detection](guide/lifecycle-hooks#defining-custom-change-detection)\n *\n * @usageNotes\n *\n * The following examples demonstrate how to modify default change-detection behavior\n * to perform explicit detection when needed.\n *\n * ### Use `markForCheck()` with `CheckOnce` strategy\n *\n * The following example sets the `OnPush` change-detection strategy for a component\n * (`CheckOnce`, rather than the default `CheckAlways`), then forces a second check\n * after an interval.\n *\n * <code-example path=\"core/ts/change_detect/change-detection.ts\"\n * region=\"mark-for-check\"></code-example>\n *\n * ### Detach change detector to limit how often check occurs\n *\n * The following example defines a component with a large list of read-only data\n * that is expected to change constantly, many times per second.\n * To improve performance, we want to check and update the list\n * less often than the changes actually occur. To do that, we detach\n * the component's change detector and perform an explicit local check every five seconds.\n *\n * <code-example path=\"core/ts/change_detect/change-detection.ts\" region=\"detach\"></code-example>\n *\n *\n * ### Reattaching a detached component\n *\n * The following example creates a component displaying live data.\n * The component detaches its change detector from the main change detector tree\n * when the `live` property is set to false, and reattaches it when the property\n * becomes true.\n *\n * <code-example path=\"core/ts/change_detect/change-detection.ts\" region=\"reattach\"></code-example>\n *\n * @publicApi\n */\nclass ChangeDetectorRef {\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ELEMENT_ID__ = injectChangeDetectorRef; }\n}\n/** Returns a ChangeDetectorRef (a.k.a. a ViewRef) */\nfunction injectChangeDetectorRef(flags) {\n return createViewRef(getCurrentTNode(), getLView(), (flags & 16 /* InternalInjectFlags.ForPipe */) === 16 /* InternalInjectFlags.ForPipe */);\n}\n/**\n * Creates a ViewRef and stores it on the injector as ChangeDetectorRef (public alias).\n *\n * @param tNode The node that is requesting a ChangeDetectorRef\n * @param lView The view to which the node belongs\n * @param isPipe Whether the view is being injected into a pipe.\n * @returns The ChangeDetectorRef to use\n */\nfunction createViewRef(tNode, lView, isPipe) {\n if (isComponentHost(tNode) && !isPipe) {\n // The LView represents the location where the component is declared.\n // Instead we want the LView for the component View and so we need to look it up.\n const componentView = getComponentLViewByIndex(tNode.index, lView); // look down\n return new ViewRef$1(componentView, componentView);\n }\n else if (tNode.type & (3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 32 /* TNodeType.Icu */)) {\n // The LView represents the location where the injection is requested from.\n // We need to locate the containing LView (in case where the `lView` is an embedded view)\n const hostComponentView = lView[DECLARATION_COMPONENT_VIEW]; // look up\n return new ViewRef$1(hostComponentView, lView);\n }\n return null;\n}\n\n/**\n * Represents an Angular [view](guide/glossary#view \"Definition\").\n *\n * @see {@link ChangeDetectorRef#usage-notes Change detection usage}\n *\n * @publicApi\n */\nclass ViewRef extends ChangeDetectorRef {\n}\n/**\n * Represents an Angular [view](guide/glossary#view) in a view container.\n * An [embedded view](guide/glossary#view-hierarchy) can be referenced from a component\n * other than the hosting component whose template defines it, or it can be defined\n * independently by a `TemplateRef`.\n *\n * Properties of elements in a view can change, but the structure (number and order) of elements in\n * a view cannot. Change the structure of elements by inserting, moving, or\n * removing nested views in a view container.\n *\n * @see {@link ViewContainerRef}\n *\n * @usageNotes\n *\n * The following template breaks down into two separate `TemplateRef` instances,\n * an outer one and an inner one.\n *\n * ```\n * Count: {{items.length}}\n * <ul>\n * <li *ngFor=\"let item of items\">{{item}}</li>\n * </ul>\n * ```\n *\n * This is the outer `TemplateRef`:\n *\n * ```\n * Count: {{items.length}}\n * <ul>\n * <ng-template ngFor let-item [ngForOf]=\"items\"></ng-template>\n * </ul>\n * ```\n *\n * This is the inner `TemplateRef`:\n *\n * ```\n * <li>{{item}}</li>\n * ```\n *\n * The outer and inner `TemplateRef` instances are assembled into views as follows:\n *\n * ```\n * <!-- ViewRef: outer-0 -->\n * Count: 2\n * <ul>\n * <ng-template view-container-ref></ng-template>\n * <!-- ViewRef: inner-1 --><li>first</li><!-- /ViewRef: inner-1 -->\n * <!-- ViewRef: inner-2 --><li>second</li><!-- /ViewRef: inner-2 -->\n * </ul>\n * <!-- /ViewRef: outer-0 -->\n * ```\n * @publicApi\n */\nclass EmbeddedViewRef extends ViewRef {\n}\n\n// Public API for compiler\n\n// This file exists for easily patching NgModuleFactoryLoader in g3\nvar ng_module_factory_loader_impl = {};\n\n/**\n * @publicApi\n */\nclass DebugEventListener {\n constructor(name, callback) {\n this.name = name;\n this.callback = callback;\n }\n}\n/**\n * @publicApi\n */\nfunction asNativeElements(debugEls) {\n return debugEls.map((el) => el.nativeElement);\n}\n/**\n * @publicApi\n */\nclass DebugNode {\n constructor(nativeNode) {\n this.nativeNode = nativeNode;\n }\n /**\n * The `DebugElement` parent. Will be `null` if this is the root element.\n */\n get parent() {\n const parent = this.nativeNode.parentNode;\n return parent ? new DebugElement(parent) : null;\n }\n /**\n * The host dependency injector. For example, the root element's component instance injector.\n */\n get injector() {\n return getInjector(this.nativeNode);\n }\n /**\n * The element's own component instance, if it has one.\n */\n get componentInstance() {\n const nativeElement = this.nativeNode;\n return nativeElement &&\n (getComponent(nativeElement) || getOwningComponent(nativeElement));\n }\n /**\n * An object that provides parent context for this element. Often an ancestor component instance\n * that governs this element.\n *\n * When an element is repeated within *ngFor, the context is an `NgForOf` whose `$implicit`\n * property is the value of the row instance value. For example, the `hero` in `*ngFor=\"let hero\n * of heroes\"`.\n */\n get context() {\n return getComponent(this.nativeNode) || getContext(this.nativeNode);\n }\n /**\n * The callbacks attached to the component's @Output properties and/or the element's event\n * properties.\n */\n get listeners() {\n return getListeners(this.nativeNode).filter(listener => listener.type === 'dom');\n }\n /**\n * Dictionary of objects associated with template local variables (e.g. #foo), keyed by the local\n * variable name.\n */\n get references() {\n return getLocalRefs(this.nativeNode);\n }\n /**\n * This component's injector lookup tokens. Includes the component itself plus the tokens that the\n * component lists in its providers metadata.\n */\n get providerTokens() {\n return getInjectionTokens(this.nativeNode);\n }\n}\n/**\n * @publicApi\n *\n * @see [Component testing scenarios](guide/testing-components-scenarios)\n * @see [Basics of testing components](guide/testing-components-basics)\n * @see [Testing utility APIs](guide/testing-utility-apis)\n */\nclass DebugElement extends DebugNode {\n constructor(nativeNode) {\n ngDevMode && assertDomNode(nativeNode);\n super(nativeNode);\n }\n /**\n * The underlying DOM element at the root of the component.\n */\n get nativeElement() {\n return this.nativeNode.nodeType == Node.ELEMENT_NODE ? this.nativeNode : null;\n }\n /**\n * The element tag name, if it is an element.\n */\n get name() {\n const context = getLContext(this.nativeNode);\n const lView = context ? context.lView : null;\n if (lView !== null) {\n const tData = lView[TVIEW].data;\n const tNode = tData[context.nodeIndex];\n return tNode.value;\n }\n else {\n return this.nativeNode.nodeName;\n }\n }\n /**\n * Gets a map of property names to property values for an element.\n *\n * This map includes:\n * - Regular property bindings (e.g. `[id]=\"id\"`)\n * - Host property bindings (e.g. `host: { '[id]': \"id\" }`)\n * - Interpolated property bindings (e.g. `id=\"{{ value }}\")\n *\n * It does not include:\n * - input property bindings (e.g. `[myCustomInput]=\"value\"`)\n * - attribute bindings (e.g. `[attr.role]=\"menu\"`)\n */\n get properties() {\n const context = getLContext(this.nativeNode);\n const lView = context ? context.lView : null;\n if (lView === null) {\n return {};\n }\n const tData = lView[TVIEW].data;\n const tNode = tData[context.nodeIndex];\n const properties = {};\n // Collect properties from the DOM.\n copyDomProperties(this.nativeElement, properties);\n // Collect properties from the bindings. This is needed for animation renderer which has\n // synthetic properties which don't get reflected into the DOM.\n collectPropertyBindings(properties, tNode, lView, tData);\n return properties;\n }\n /**\n * A map of attribute names to attribute values for an element.\n */\n get attributes() {\n const attributes = {};\n const element = this.nativeElement;\n if (!element) {\n return attributes;\n }\n const context = getLContext(element);\n const lView = context ? context.lView : null;\n if (lView === null) {\n return {};\n }\n const tNodeAttrs = lView[TVIEW].data[context.nodeIndex].attrs;\n const lowercaseTNodeAttrs = [];\n // For debug nodes we take the element's attribute directly from the DOM since it allows us\n // to account for ones that weren't set via bindings (e.g. ViewEngine keeps track of the ones\n // that are set through `Renderer2`). The problem is that the browser will lowercase all names,\n // however since we have the attributes already on the TNode, we can preserve the case by going\n // through them once, adding them to the `attributes` map and putting their lower-cased name\n // into an array. Afterwards when we're going through the native DOM attributes, we can check\n // whether we haven't run into an attribute already through the TNode.\n if (tNodeAttrs) {\n let i = 0;\n while (i < tNodeAttrs.length) {\n const attrName = tNodeAttrs[i];\n // Stop as soon as we hit a marker. We only care about the regular attributes. Everything\n // else will be handled below when we read the final attributes off the DOM.\n if (typeof attrName !== 'string')\n break;\n const attrValue = tNodeAttrs[i + 1];\n attributes[attrName] = attrValue;\n lowercaseTNodeAttrs.push(attrName.toLowerCase());\n i += 2;\n }\n }\n for (const attr of element.attributes) {\n // Make sure that we don't assign the same attribute both in its\n // case-sensitive form and the lower-cased one from the browser.\n if (!lowercaseTNodeAttrs.includes(attr.name)) {\n attributes[attr.name] = attr.value;\n }\n }\n return attributes;\n }\n /**\n * The inline styles of the DOM element.\n *\n * Will be `null` if there is no `style` property on the underlying DOM element.\n *\n * @see [ElementCSSInlineStyle](https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style)\n */\n get styles() {\n if (this.nativeElement && this.nativeElement.style) {\n return this.nativeElement.style;\n }\n return {};\n }\n /**\n * A map containing the class names on the element as keys.\n *\n * This map is derived from the `className` property of the DOM element.\n *\n * Note: The values of this object will always be `true`. The class key will not appear in the KV\n * object if it does not exist on the element.\n *\n * @see [Element.className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className)\n */\n get classes() {\n const result = {};\n const element = this.nativeElement;\n // SVG elements return an `SVGAnimatedString` instead of a plain string for the `className`.\n const className = element.className;\n const classes = typeof className !== 'string' ? className.baseVal.split(' ') : className.split(' ');\n classes.forEach((value) => result[value] = true);\n return result;\n }\n /**\n * The `childNodes` of the DOM element as a `DebugNode` array.\n *\n * @see [Node.childNodes](https://developer.mozilla.org/en-US/docs/Web/API/Node/childNodes)\n */\n get childNodes() {\n const childNodes = this.nativeNode.childNodes;\n const children = [];\n for (let i = 0; i < childNodes.length; i++) {\n const element = childNodes[i];\n children.push(getDebugNode(element));\n }\n return children;\n }\n /**\n * The immediate `DebugElement` children. Walk the tree by descending through `children`.\n */\n get children() {\n const nativeElement = this.nativeElement;\n if (!nativeElement)\n return [];\n const childNodes = nativeElement.children;\n const children = [];\n for (let i = 0; i < childNodes.length; i++) {\n const element = childNodes[i];\n children.push(getDebugNode(element));\n }\n return children;\n }\n /**\n * @returns the first `DebugElement` that matches the predicate at any depth in the subtree.\n */\n query(predicate) {\n const results = this.queryAll(predicate);\n return results[0] || null;\n }\n /**\n * @returns All `DebugElement` matches for the predicate at any depth in the subtree.\n */\n queryAll(predicate) {\n const matches = [];\n _queryAll(this, predicate, matches, true);\n return matches;\n }\n /**\n * @returns All `DebugNode` matches for the predicate at any depth in the subtree.\n */\n queryAllNodes(predicate) {\n const matches = [];\n _queryAll(this, predicate, matches, false);\n return matches;\n }\n /**\n * Triggers the event by its name if there is a corresponding listener in the element's\n * `listeners` collection.\n *\n * If the event lacks a listener or there's some other problem, consider\n * calling `nativeElement.dispatchEvent(eventObject)`.\n *\n * @param eventName The name of the event to trigger\n * @param eventObj The _event object_ expected by the handler\n *\n * @see [Testing components scenarios](guide/testing-components-scenarios#trigger-event-handler)\n */\n triggerEventHandler(eventName, eventObj) {\n const node = this.nativeNode;\n const invokedListeners = [];\n this.listeners.forEach(listener => {\n if (listener.name === eventName) {\n const callback = listener.callback;\n callback.call(node, eventObj);\n invokedListeners.push(callback);\n }\n });\n // We need to check whether `eventListeners` exists, because it's something\n // that Zone.js only adds to `EventTarget` in browser environments.\n if (typeof node.eventListeners === 'function') {\n // Note that in Ivy we wrap event listeners with a call to `event.preventDefault` in some\n // cases. We use '__ngUnwrap__' as a special token that gives us access to the actual event\n // listener.\n node.eventListeners(eventName).forEach((listener) => {\n // In order to ensure that we can detect the special __ngUnwrap__ token described above, we\n // use `toString` on the listener and see if it contains the token. We use this approach to\n // ensure that it still worked with compiled code since it cannot remove or rename string\n // literals. We also considered using a special function name (i.e. if(listener.name ===\n // special)) but that was more cumbersome and we were also concerned the compiled code could\n // strip the name, turning the condition in to (\"\" === \"\") and always returning true.\n if (listener.toString().indexOf('__ngUnwrap__') !== -1) {\n const unwrappedListener = listener('__ngUnwrap__');\n return invokedListeners.indexOf(unwrappedListener) === -1 &&\n unwrappedListener.call(node, eventObj);\n }\n });\n }\n }\n}\nfunction copyDomProperties(element, properties) {\n if (element) {\n // Skip own properties (as those are patched)\n let obj = Object.getPrototypeOf(element);\n const NodePrototype = Node.prototype;\n while (obj !== null && obj !== NodePrototype) {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n for (let key in descriptors) {\n if (!key.startsWith('__') && !key.startsWith('on')) {\n // don't include properties starting with `__` and `on`.\n // `__` are patched values which should not be included.\n // `on` are listeners which also should not be included.\n const value = element[key];\n if (isPrimitiveValue(value)) {\n properties[key] = value;\n }\n }\n }\n obj = Object.getPrototypeOf(obj);\n }\n }\n}\nfunction isPrimitiveValue(value) {\n return typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number' ||\n value === null;\n}\nfunction _queryAll(parentElement, predicate, matches, elementsOnly) {\n const context = getLContext(parentElement.nativeNode);\n const lView = context ? context.lView : null;\n if (lView !== null) {\n const parentTNode = lView[TVIEW].data[context.nodeIndex];\n _queryNodeChildren(parentTNode, lView, predicate, matches, elementsOnly, parentElement.nativeNode);\n }\n else {\n // If the context is null, then `parentElement` was either created with Renderer2 or native DOM\n // APIs.\n _queryNativeNodeDescendants(parentElement.nativeNode, predicate, matches, elementsOnly);\n }\n}\n/**\n * Recursively match the current TNode against the predicate, and goes on with the next ones.\n *\n * @param tNode the current TNode\n * @param lView the LView of this TNode\n * @param predicate the predicate to match\n * @param matches the list of positive matches\n * @param elementsOnly whether only elements should be searched\n * @param rootNativeNode the root native node on which predicate should not be matched\n */\nfunction _queryNodeChildren(tNode, lView, predicate, matches, elementsOnly, rootNativeNode) {\n ngDevMode && assertTNodeForLView(tNode, lView);\n const nativeNode = getNativeByTNodeOrNull(tNode, lView);\n // For each type of TNode, specific logic is executed.\n if (tNode.type & (3 /* TNodeType.AnyRNode */ | 8 /* TNodeType.ElementContainer */)) {\n // Case 1: the TNode is an element\n // The native node has to be checked.\n _addQueryMatch(nativeNode, predicate, matches, elementsOnly, rootNativeNode);\n if (isComponentHost(tNode)) {\n // If the element is the host of a component, then all nodes in its view have to be processed.\n // Note: the component's content (tNode.child) will be processed from the insertion points.\n const componentView = getComponentLViewByIndex(tNode.index, lView);\n if (componentView && componentView[TVIEW].firstChild) {\n _queryNodeChildren(componentView[TVIEW].firstChild, componentView, predicate, matches, elementsOnly, rootNativeNode);\n }\n }\n else {\n if (tNode.child) {\n // Otherwise, its children have to be processed.\n _queryNodeChildren(tNode.child, lView, predicate, matches, elementsOnly, rootNativeNode);\n }\n // We also have to query the DOM directly in order to catch elements inserted through\n // Renderer2. Note that this is __not__ optimal, because we're walking similar trees multiple\n // times. ViewEngine could do it more efficiently, because all the insertions go through\n // Renderer2, however that's not the case in Ivy. This approach is being used because:\n // 1. Matching the ViewEngine behavior would mean potentially introducing a dependency\n // from `Renderer2` to Ivy which could bring Ivy code into ViewEngine.\n // 2. It allows us to capture nodes that were inserted directly via the DOM.\n nativeNode && _queryNativeNodeDescendants(nativeNode, predicate, matches, elementsOnly);\n }\n // In all cases, if a dynamic container exists for this node, each view inside it has to be\n // processed.\n const nodeOrContainer = lView[tNode.index];\n if (isLContainer(nodeOrContainer)) {\n _queryNodeChildrenInContainer(nodeOrContainer, predicate, matches, elementsOnly, rootNativeNode);\n }\n }\n else if (tNode.type & 4 /* TNodeType.Container */) {\n // Case 2: the TNode is a container\n // The native node has to be checked.\n const lContainer = lView[tNode.index];\n _addQueryMatch(lContainer[NATIVE], predicate, matches, elementsOnly, rootNativeNode);\n // Each view inside the container has to be processed.\n _queryNodeChildrenInContainer(lContainer, predicate, matches, elementsOnly, rootNativeNode);\n }\n else if (tNode.type & 16 /* TNodeType.Projection */) {\n // Case 3: the TNode is a projection insertion point (i.e. a <ng-content>).\n // The nodes projected at this location all need to be processed.\n const componentView = lView[DECLARATION_COMPONENT_VIEW];\n const componentHost = componentView[T_HOST];\n const head = componentHost.projection[tNode.projection];\n if (Array.isArray(head)) {\n for (let nativeNode of head) {\n _addQueryMatch(nativeNode, predicate, matches, elementsOnly, rootNativeNode);\n }\n }\n else if (head) {\n const nextLView = componentView[PARENT];\n const nextTNode = nextLView[TVIEW].data[head.index];\n _queryNodeChildren(nextTNode, nextLView, predicate, matches, elementsOnly, rootNativeNode);\n }\n }\n else if (tNode.child) {\n // Case 4: the TNode is a view.\n _queryNodeChildren(tNode.child, lView, predicate, matches, elementsOnly, rootNativeNode);\n }\n // We don't want to go to the next sibling of the root node.\n if (rootNativeNode !== nativeNode) {\n // To determine the next node to be processed, we need to use the next or the projectionNext\n // link, depending on whether the current node has been projected.\n const nextTNode = (tNode.flags & 2 /* TNodeFlags.isProjected */) ? tNode.projectionNext : tNode.next;\n if (nextTNode) {\n _queryNodeChildren(nextTNode, lView, predicate, matches, elementsOnly, rootNativeNode);\n }\n }\n}\n/**\n * Process all TNodes in a given container.\n *\n * @param lContainer the container to be processed\n * @param predicate the predicate to match\n * @param matches the list of positive matches\n * @param elementsOnly whether only elements should be searched\n * @param rootNativeNode the root native node on which predicate should not be matched\n */\nfunction _queryNodeChildrenInContainer(lContainer, predicate, matches, elementsOnly, rootNativeNode) {\n for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {\n const childView = lContainer[i];\n const firstChild = childView[TVIEW].firstChild;\n if (firstChild) {\n _queryNodeChildren(firstChild, childView, predicate, matches, elementsOnly, rootNativeNode);\n }\n }\n}\n/**\n * Match the current native node against the predicate.\n *\n * @param nativeNode the current native node\n * @param predicate the predicate to match\n * @param matches the list of positive matches\n * @param elementsOnly whether only elements should be searched\n * @param rootNativeNode the root native node on which predicate should not be matched\n */\nfunction _addQueryMatch(nativeNode, predicate, matches, elementsOnly, rootNativeNode) {\n if (rootNativeNode !== nativeNode) {\n const debugNode = getDebugNode(nativeNode);\n if (!debugNode) {\n return;\n }\n // Type of the \"predicate and \"matches\" array are set based on the value of\n // the \"elementsOnly\" parameter. TypeScript is not able to properly infer these\n // types with generics, so we manually cast the parameters accordingly.\n if (elementsOnly && (debugNode instanceof DebugElement) && predicate(debugNode) &&\n matches.indexOf(debugNode) === -1) {\n matches.push(debugNode);\n }\n else if (!elementsOnly && predicate(debugNode) &&\n matches.indexOf(debugNode) === -1) {\n matches.push(debugNode);\n }\n }\n}\n/**\n * Match all the descendants of a DOM node against a predicate.\n *\n * @param nativeNode the current native node\n * @param predicate the predicate to match\n * @param matches the list where matches are stored\n * @param elementsOnly whether only elements should be searched\n */\nfunction _queryNativeNodeDescendants(parentNode, predicate, matches, elementsOnly) {\n const nodes = parentNode.childNodes;\n const length = nodes.length;\n for (let i = 0; i < length; i++) {\n const node = nodes[i];\n const debugNode = getDebugNode(node);\n if (debugNode) {\n if (elementsOnly && (debugNode instanceof DebugElement) && predicate(debugNode) &&\n matches.indexOf(debugNode) === -1) {\n matches.push(debugNode);\n }\n else if (!elementsOnly && predicate(debugNode) &&\n matches.indexOf(debugNode) === -1) {\n matches.push(debugNode);\n }\n _queryNativeNodeDescendants(node, predicate, matches, elementsOnly);\n }\n }\n}\n/**\n * Iterates through the property bindings for a given node and generates\n * a map of property names to values. This map only contains property bindings\n * defined in templates, not in host bindings.\n */\nfunction collectPropertyBindings(properties, tNode, lView, tData) {\n let bindingIndexes = tNode.propertyBindings;\n if (bindingIndexes !== null) {\n for (let i = 0; i < bindingIndexes.length; i++) {\n const bindingIndex = bindingIndexes[i];\n const propMetadata = tData[bindingIndex];\n const metadataParts = propMetadata.split(INTERPOLATION_DELIMITER);\n const propertyName = metadataParts[0];\n if (metadataParts.length > 1) {\n let value = metadataParts[1];\n for (let j = 1; j < metadataParts.length - 1; j++) {\n value += renderStringify(lView[bindingIndex + j - 1]) + metadataParts[j + 1];\n }\n properties[propertyName] = value;\n }\n else {\n properties[propertyName] = lView[bindingIndex];\n }\n }\n }\n}\n// Need to keep the nodes in a global Map so that multiple angular apps are supported.\nconst _nativeNodeToDebugNode = new Map();\nconst NG_DEBUG_PROPERTY = '__ng_debug__';\n/**\n * @publicApi\n */\nfunction getDebugNode(nativeNode) {\n if (nativeNode instanceof Node) {\n if (!(nativeNode.hasOwnProperty(NG_DEBUG_PROPERTY))) {\n nativeNode[NG_DEBUG_PROPERTY] = nativeNode.nodeType == Node.ELEMENT_NODE ?\n new DebugElement(nativeNode) :\n new DebugNode(nativeNode);\n }\n return nativeNode[NG_DEBUG_PROPERTY];\n }\n return null;\n}\nfunction getAllDebugNodes() {\n return Array.from(_nativeNodeToDebugNode.values());\n}\nfunction indexDebugNode(node) {\n _nativeNodeToDebugNode.set(node.nativeNode, node);\n}\nfunction removeDebugNodeFromIndex(node) {\n _nativeNodeToDebugNode.delete(node.nativeNode);\n}\n\nclass DefaultIterableDifferFactory {\n constructor() { }\n supports(obj) {\n return isListLikeIterable(obj);\n }\n create(trackByFn) {\n return new DefaultIterableDiffer(trackByFn);\n }\n}\nconst trackByIdentity = (index, item) => item;\n/**\n * @deprecated v4.0.0 - Should not be part of public API.\n * @publicApi\n */\nclass DefaultIterableDiffer {\n constructor(trackByFn) {\n this.length = 0;\n // Keeps track of the used records at any point in time (during & across `_check()` calls)\n this._linkedRecords = null;\n // Keeps track of the removed records at any point in time during `_check()` calls.\n this._unlinkedRecords = null;\n this._previousItHead = null;\n this._itHead = null;\n this._itTail = null;\n this._additionsHead = null;\n this._additionsTail = null;\n this._movesHead = null;\n this._movesTail = null;\n this._removalsHead = null;\n this._removalsTail = null;\n // Keeps track of records where custom track by is the same, but item identity has changed\n this._identityChangesHead = null;\n this._identityChangesTail = null;\n this._trackByFn = trackByFn || trackByIdentity;\n }\n forEachItem(fn) {\n let record;\n for (record = this._itHead; record !== null; record = record._next) {\n fn(record);\n }\n }\n forEachOperation(fn) {\n let nextIt = this._itHead;\n let nextRemove = this._removalsHead;\n let addRemoveOffset = 0;\n let moveOffsets = null;\n while (nextIt || nextRemove) {\n // Figure out which is the next record to process\n // Order: remove, add, move\n const record = !nextRemove ||\n nextIt &&\n nextIt.currentIndex <\n getPreviousIndex(nextRemove, addRemoveOffset, moveOffsets) ?\n nextIt :\n nextRemove;\n const adjPreviousIndex = getPreviousIndex(record, addRemoveOffset, moveOffsets);\n const currentIndex = record.currentIndex;\n // consume the item, and adjust the addRemoveOffset and update moveDistance if necessary\n if (record === nextRemove) {\n addRemoveOffset--;\n nextRemove = nextRemove._nextRemoved;\n }\n else {\n nextIt = nextIt._next;\n if (record.previousIndex == null) {\n addRemoveOffset++;\n }\n else {\n // INVARIANT: currentIndex < previousIndex\n if (!moveOffsets)\n moveOffsets = [];\n const localMovePreviousIndex = adjPreviousIndex - addRemoveOffset;\n const localCurrentIndex = currentIndex - addRemoveOffset;\n if (localMovePreviousIndex != localCurrentIndex) {\n for (let i = 0; i < localMovePreviousIndex; i++) {\n const offset = i < moveOffsets.length ? moveOffsets[i] : (moveOffsets[i] = 0);\n const index = offset + i;\n if (localCurrentIndex <= index && index < localMovePreviousIndex) {\n moveOffsets[i] = offset + 1;\n }\n }\n const previousIndex = record.previousIndex;\n moveOffsets[previousIndex] = localCurrentIndex - localMovePreviousIndex;\n }\n }\n }\n if (adjPreviousIndex !== currentIndex) {\n fn(record, adjPreviousIndex, currentIndex);\n }\n }\n }\n forEachPreviousItem(fn) {\n let record;\n for (record = this._previousItHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n }\n forEachAddedItem(fn) {\n let record;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n }\n forEachMovedItem(fn) {\n let record;\n for (record = this._movesHead; record !== null; record = record._nextMoved) {\n fn(record);\n }\n }\n forEachRemovedItem(fn) {\n let record;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n }\n forEachIdentityChange(fn) {\n let record;\n for (record = this._identityChangesHead; record !== null; record = record._nextIdentityChange) {\n fn(record);\n }\n }\n diff(collection) {\n if (collection == null)\n collection = [];\n if (!isListLikeIterable(collection)) {\n throw new RuntimeError(900 /* RuntimeErrorCode.INVALID_DIFFER_INPUT */, ngDevMode &&\n `Error trying to diff '${stringify(collection)}'. Only arrays and iterables are allowed`);\n }\n if (this.check(collection)) {\n return this;\n }\n else {\n return null;\n }\n }\n onDestroy() { }\n check(collection) {\n this._reset();\n let record = this._itHead;\n let mayBeDirty = false;\n let index;\n let item;\n let itemTrackBy;\n if (Array.isArray(collection)) {\n this.length = collection.length;\n for (let index = 0; index < this.length; index++) {\n item = collection[index];\n itemTrackBy = this._trackByFn(index, item);\n if (record === null || !Object.is(record.trackById, itemTrackBy)) {\n record = this._mismatch(record, item, itemTrackBy, index);\n mayBeDirty = true;\n }\n else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = this._verifyReinsertion(record, item, itemTrackBy, index);\n }\n if (!Object.is(record.item, item))\n this._addIdentityChange(record, item);\n }\n record = record._next;\n }\n }\n else {\n index = 0;\n iterateListLike(collection, (item) => {\n itemTrackBy = this._trackByFn(index, item);\n if (record === null || !Object.is(record.trackById, itemTrackBy)) {\n record = this._mismatch(record, item, itemTrackBy, index);\n mayBeDirty = true;\n }\n else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = this._verifyReinsertion(record, item, itemTrackBy, index);\n }\n if (!Object.is(record.item, item))\n this._addIdentityChange(record, item);\n }\n record = record._next;\n index++;\n });\n this.length = index;\n }\n this._truncate(record);\n // @ts-expect-error overwriting a readonly member\n this.collection = collection;\n return this.isDirty;\n }\n /* CollectionChanges is considered dirty if it has any additions, moves, removals, or identity\n * changes.\n */\n get isDirty() {\n return this._additionsHead !== null || this._movesHead !== null ||\n this._removalsHead !== null || this._identityChangesHead !== null;\n }\n /**\n * Reset the state of the change objects to show no changes. This means set previousKey to\n * currentKey, and clear all of the queues (additions, moves, removals).\n * Set the previousIndexes of moved and added items to their currentIndexes\n * Reset the list of additions, moves and removals\n *\n * @internal\n */\n _reset() {\n if (this.isDirty) {\n let record;\n for (record = this._previousItHead = this._itHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n record.previousIndex = record.currentIndex;\n }\n this._additionsHead = this._additionsTail = null;\n for (record = this._movesHead; record !== null; record = record._nextMoved) {\n record.previousIndex = record.currentIndex;\n }\n this._movesHead = this._movesTail = null;\n this._removalsHead = this._removalsTail = null;\n this._identityChangesHead = this._identityChangesTail = null;\n // TODO(vicb): when assert gets supported\n // assert(!this.isDirty);\n }\n }\n /**\n * This is the core function which handles differences between collections.\n *\n * - `record` is the record which we saw at this position last time. If null then it is a new\n * item.\n * - `item` is the current item in the collection\n * - `index` is the position of the item in the collection\n *\n * @internal\n */\n _mismatch(record, item, itemTrackBy, index) {\n // The previous record after which we will append the current one.\n let previousRecord;\n if (record === null) {\n previousRecord = this._itTail;\n }\n else {\n previousRecord = record._prev;\n // Remove the record from the collection since we know it does not match the item.\n this._remove(record);\n }\n // See if we have evicted the item, which used to be at some anterior position of _itHead list.\n record = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy, null);\n if (record !== null) {\n // It is an item which we have evicted earlier: reinsert it back into the list.\n // But first we need to check if identity changed, so we can update in view if necessary.\n if (!Object.is(record.item, item))\n this._addIdentityChange(record, item);\n this._reinsertAfter(record, previousRecord, index);\n }\n else {\n // Attempt to see if the item is at some posterior position of _itHead list.\n record = this._linkedRecords === null ? null : this._linkedRecords.get(itemTrackBy, index);\n if (record !== null) {\n // We have the item in _itHead at/after `index` position. We need to move it forward in the\n // collection.\n // But first we need to check if identity changed, so we can update in view if necessary.\n if (!Object.is(record.item, item))\n this._addIdentityChange(record, item);\n this._moveAfter(record, previousRecord, index);\n }\n else {\n // It is a new item: add it.\n record =\n this._addAfter(new IterableChangeRecord_(item, itemTrackBy), previousRecord, index);\n }\n }\n return record;\n }\n /**\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\n *\n * Use case: `[a, a]` => `[b, a, a]`\n *\n * If we did not have this check then the insertion of `b` would:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) leave `a` at index `1` as is. <-- this is wrong!\n * 3) reinsert `a` at index 2. <-- this is wrong!\n *\n * The correct behavior is:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) reinsert `a` at index 1.\n * 3) move `a` at from `1` to `2`.\n *\n *\n * Double check that we have not evicted a duplicate item. We need to check if the item type may\n * have already been removed:\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\n * at the end.\n *\n * @internal\n */\n _verifyReinsertion(record, item, itemTrackBy, index) {\n let reinsertRecord = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy, null);\n if (reinsertRecord !== null) {\n record = this._reinsertAfter(reinsertRecord, record._prev, index);\n }\n else if (record.currentIndex != index) {\n record.currentIndex = index;\n this._addToMoves(record, index);\n }\n return record;\n }\n /**\n * Get rid of any excess {@link IterableChangeRecord_}s from the previous collection\n *\n * - `record` The first excess {@link IterableChangeRecord_}.\n *\n * @internal\n */\n _truncate(record) {\n // Anything after that needs to be removed;\n while (record !== null) {\n const nextRecord = record._next;\n this._addToRemovals(this._unlink(record));\n record = nextRecord;\n }\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.clear();\n }\n if (this._additionsTail !== null) {\n this._additionsTail._nextAdded = null;\n }\n if (this._movesTail !== null) {\n this._movesTail._nextMoved = null;\n }\n if (this._itTail !== null) {\n this._itTail._next = null;\n }\n if (this._removalsTail !== null) {\n this._removalsTail._nextRemoved = null;\n }\n if (this._identityChangesTail !== null) {\n this._identityChangesTail._nextIdentityChange = null;\n }\n }\n /** @internal */\n _reinsertAfter(record, prevRecord, index) {\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.remove(record);\n }\n const prev = record._prevRemoved;\n const next = record._nextRemoved;\n if (prev === null) {\n this._removalsHead = next;\n }\n else {\n prev._nextRemoved = next;\n }\n if (next === null) {\n this._removalsTail = prev;\n }\n else {\n next._prevRemoved = prev;\n }\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n }\n /** @internal */\n _moveAfter(record, prevRecord, index) {\n this._unlink(record);\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n }\n /** @internal */\n _addAfter(record, prevRecord, index) {\n this._insertAfter(record, prevRecord, index);\n if (this._additionsTail === null) {\n // TODO(vicb):\n // assert(this._additionsHead === null);\n this._additionsTail = this._additionsHead = record;\n }\n else {\n // TODO(vicb):\n // assert(_additionsTail._nextAdded === null);\n // assert(record._nextAdded === null);\n this._additionsTail = this._additionsTail._nextAdded = record;\n }\n return record;\n }\n /** @internal */\n _insertAfter(record, prevRecord, index) {\n // TODO(vicb):\n // assert(record != prevRecord);\n // assert(record._next === null);\n // assert(record._prev === null);\n const next = prevRecord === null ? this._itHead : prevRecord._next;\n // TODO(vicb):\n // assert(next != record);\n // assert(prevRecord != record);\n record._next = next;\n record._prev = prevRecord;\n if (next === null) {\n this._itTail = record;\n }\n else {\n next._prev = record;\n }\n if (prevRecord === null) {\n this._itHead = record;\n }\n else {\n prevRecord._next = record;\n }\n if (this._linkedRecords === null) {\n this._linkedRecords = new _DuplicateMap();\n }\n this._linkedRecords.put(record);\n record.currentIndex = index;\n return record;\n }\n /** @internal */\n _remove(record) {\n return this._addToRemovals(this._unlink(record));\n }\n /** @internal */\n _unlink(record) {\n if (this._linkedRecords !== null) {\n this._linkedRecords.remove(record);\n }\n const prev = record._prev;\n const next = record._next;\n // TODO(vicb):\n // assert((record._prev = null) === null);\n // assert((record._next = null) === null);\n if (prev === null) {\n this._itHead = next;\n }\n else {\n prev._next = next;\n }\n if (next === null) {\n this._itTail = prev;\n }\n else {\n next._prev = prev;\n }\n return record;\n }\n /** @internal */\n _addToMoves(record, toIndex) {\n // TODO(vicb):\n // assert(record._nextMoved === null);\n if (record.previousIndex === toIndex) {\n return record;\n }\n if (this._movesTail === null) {\n // TODO(vicb):\n // assert(_movesHead === null);\n this._movesTail = this._movesHead = record;\n }\n else {\n // TODO(vicb):\n // assert(_movesTail._nextMoved === null);\n this._movesTail = this._movesTail._nextMoved = record;\n }\n return record;\n }\n _addToRemovals(record) {\n if (this._unlinkedRecords === null) {\n this._unlinkedRecords = new _DuplicateMap();\n }\n this._unlinkedRecords.put(record);\n record.currentIndex = null;\n record._nextRemoved = null;\n if (this._removalsTail === null) {\n // TODO(vicb):\n // assert(_removalsHead === null);\n this._removalsTail = this._removalsHead = record;\n record._prevRemoved = null;\n }\n else {\n // TODO(vicb):\n // assert(_removalsTail._nextRemoved === null);\n // assert(record._nextRemoved === null);\n record._prevRemoved = this._removalsTail;\n this._removalsTail = this._removalsTail._nextRemoved = record;\n }\n return record;\n }\n /** @internal */\n _addIdentityChange(record, item) {\n record.item = item;\n if (this._identityChangesTail === null) {\n this._identityChangesTail = this._identityChangesHead = record;\n }\n else {\n this._identityChangesTail = this._identityChangesTail._nextIdentityChange = record;\n }\n return record;\n }\n}\nclass IterableChangeRecord_ {\n constructor(item, trackById) {\n this.item = item;\n this.trackById = trackById;\n this.currentIndex = null;\n this.previousIndex = null;\n /** @internal */\n this._nextPrevious = null;\n /** @internal */\n this._prev = null;\n /** @internal */\n this._next = null;\n /** @internal */\n this._prevDup = null;\n /** @internal */\n this._nextDup = null;\n /** @internal */\n this._prevRemoved = null;\n /** @internal */\n this._nextRemoved = null;\n /** @internal */\n this._nextAdded = null;\n /** @internal */\n this._nextMoved = null;\n /** @internal */\n this._nextIdentityChange = null;\n }\n}\n// A linked list of IterableChangeRecords with the same IterableChangeRecord_.item\nclass _DuplicateItemRecordList {\n constructor() {\n /** @internal */\n this._head = null;\n /** @internal */\n this._tail = null;\n }\n /**\n * Append the record to the list of duplicates.\n *\n * Note: by design all records in the list of duplicates hold the same value in record.item.\n */\n add(record) {\n if (this._head === null) {\n this._head = this._tail = record;\n record._nextDup = null;\n record._prevDup = null;\n }\n else {\n // TODO(vicb):\n // assert(record.item == _head.item ||\n // record.item is num && record.item.isNaN && _head.item is num && _head.item.isNaN);\n this._tail._nextDup = record;\n record._prevDup = this._tail;\n record._nextDup = null;\n this._tail = record;\n }\n }\n // Returns a IterableChangeRecord_ having IterableChangeRecord_.trackById == trackById and\n // IterableChangeRecord_.currentIndex >= atOrAfterIndex\n get(trackById, atOrAfterIndex) {\n let record;\n for (record = this._head; record !== null; record = record._nextDup) {\n if ((atOrAfterIndex === null || atOrAfterIndex <= record.currentIndex) &&\n Object.is(record.trackById, trackById)) {\n return record;\n }\n }\n return null;\n }\n /**\n * Remove one {@link IterableChangeRecord_} from the list of duplicates.\n *\n * Returns whether the list of duplicates is empty.\n */\n remove(record) {\n // TODO(vicb):\n // assert(() {\n // // verify that the record being removed is in the list.\n // for (IterableChangeRecord_ cursor = _head; cursor != null; cursor = cursor._nextDup) {\n // if (identical(cursor, record)) return true;\n // }\n // return false;\n //});\n const prev = record._prevDup;\n const next = record._nextDup;\n if (prev === null) {\n this._head = next;\n }\n else {\n prev._nextDup = next;\n }\n if (next === null) {\n this._tail = prev;\n }\n else {\n next._prevDup = prev;\n }\n return this._head === null;\n }\n}\nclass _DuplicateMap {\n constructor() {\n this.map = new Map();\n }\n put(record) {\n const key = record.trackById;\n let duplicates = this.map.get(key);\n if (!duplicates) {\n duplicates = new _DuplicateItemRecordList();\n this.map.set(key, duplicates);\n }\n duplicates.add(record);\n }\n /**\n * Retrieve the `value` using key. Because the IterableChangeRecord_ value may be one which we\n * have already iterated over, we use the `atOrAfterIndex` to pretend it is not there.\n *\n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\n * have any more `a`s needs to return the second `a`.\n */\n get(trackById, atOrAfterIndex) {\n const key = trackById;\n const recordList = this.map.get(key);\n return recordList ? recordList.get(trackById, atOrAfterIndex) : null;\n }\n /**\n * Removes a {@link IterableChangeRecord_} from the list of duplicates.\n *\n * The list of duplicates also is removed from the map if it gets empty.\n */\n remove(record) {\n const key = record.trackById;\n const recordList = this.map.get(key);\n // Remove the list of duplicates when it gets empty\n if (recordList.remove(record)) {\n this.map.delete(key);\n }\n return record;\n }\n get isEmpty() {\n return this.map.size === 0;\n }\n clear() {\n this.map.clear();\n }\n}\nfunction getPreviousIndex(item, addRemoveOffset, moveOffsets) {\n const previousIndex = item.previousIndex;\n if (previousIndex === null)\n return previousIndex;\n let moveOffset = 0;\n if (moveOffsets && previousIndex < moveOffsets.length) {\n moveOffset = moveOffsets[previousIndex];\n }\n return previousIndex + addRemoveOffset + moveOffset;\n}\n\nclass DefaultKeyValueDifferFactory {\n constructor() { }\n supports(obj) {\n return obj instanceof Map || isJsObject(obj);\n }\n create() {\n return new DefaultKeyValueDiffer();\n }\n}\nclass DefaultKeyValueDiffer {\n constructor() {\n this._records = new Map();\n this._mapHead = null;\n // _appendAfter is used in the check loop\n this._appendAfter = null;\n this._previousMapHead = null;\n this._changesHead = null;\n this._changesTail = null;\n this._additionsHead = null;\n this._additionsTail = null;\n this._removalsHead = null;\n this._removalsTail = null;\n }\n get isDirty() {\n return this._additionsHead !== null || this._changesHead !== null ||\n this._removalsHead !== null;\n }\n forEachItem(fn) {\n let record;\n for (record = this._mapHead; record !== null; record = record._next) {\n fn(record);\n }\n }\n forEachPreviousItem(fn) {\n let record;\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n }\n forEachChangedItem(fn) {\n let record;\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n fn(record);\n }\n }\n forEachAddedItem(fn) {\n let record;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n }\n forEachRemovedItem(fn) {\n let record;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n }\n diff(map) {\n if (!map) {\n map = new Map();\n }\n else if (!(map instanceof Map || isJsObject(map))) {\n throw new RuntimeError(900 /* RuntimeErrorCode.INVALID_DIFFER_INPUT */, ngDevMode &&\n `Error trying to diff '${stringify(map)}'. Only maps and objects are allowed`);\n }\n return this.check(map) ? this : null;\n }\n onDestroy() { }\n /**\n * Check the current state of the map vs the previous.\n * The algorithm is optimised for when the keys do no change.\n */\n check(map) {\n this._reset();\n let insertBefore = this._mapHead;\n this._appendAfter = null;\n this._forEach(map, (value, key) => {\n if (insertBefore && insertBefore.key === key) {\n this._maybeAddToChanges(insertBefore, value);\n this._appendAfter = insertBefore;\n insertBefore = insertBefore._next;\n }\n else {\n const record = this._getOrCreateRecordForKey(key, value);\n insertBefore = this._insertBeforeOrAppend(insertBefore, record);\n }\n });\n // Items remaining at the end of the list have been deleted\n if (insertBefore) {\n if (insertBefore._prev) {\n insertBefore._prev._next = null;\n }\n this._removalsHead = insertBefore;\n for (let record = insertBefore; record !== null; record = record._nextRemoved) {\n if (record === this._mapHead) {\n this._mapHead = null;\n }\n this._records.delete(record.key);\n record._nextRemoved = record._next;\n record.previousValue = record.currentValue;\n record.currentValue = null;\n record._prev = null;\n record._next = null;\n }\n }\n // Make sure tails have no next records from previous runs\n if (this._changesTail)\n this._changesTail._nextChanged = null;\n if (this._additionsTail)\n this._additionsTail._nextAdded = null;\n return this.isDirty;\n }\n /**\n * Inserts a record before `before` or append at the end of the list when `before` is null.\n *\n * Notes:\n * - This method appends at `this._appendAfter`,\n * - This method updates `this._appendAfter`,\n * - The return value is the new value for the insertion pointer.\n */\n _insertBeforeOrAppend(before, record) {\n if (before) {\n const prev = before._prev;\n record._next = before;\n record._prev = prev;\n before._prev = record;\n if (prev) {\n prev._next = record;\n }\n if (before === this._mapHead) {\n this._mapHead = record;\n }\n this._appendAfter = before;\n return before;\n }\n if (this._appendAfter) {\n this._appendAfter._next = record;\n record._prev = this._appendAfter;\n }\n else {\n this._mapHead = record;\n }\n this._appendAfter = record;\n return null;\n }\n _getOrCreateRecordForKey(key, value) {\n if (this._records.has(key)) {\n const record = this._records.get(key);\n this._maybeAddToChanges(record, value);\n const prev = record._prev;\n const next = record._next;\n if (prev) {\n prev._next = next;\n }\n if (next) {\n next._prev = prev;\n }\n record._next = null;\n record._prev = null;\n return record;\n }\n const record = new KeyValueChangeRecord_(key);\n this._records.set(key, record);\n record.currentValue = value;\n this._addToAdditions(record);\n return record;\n }\n /** @internal */\n _reset() {\n if (this.isDirty) {\n let record;\n // let `_previousMapHead` contain the state of the map before the changes\n this._previousMapHead = this._mapHead;\n for (record = this._previousMapHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n // Update `record.previousValue` with the value of the item before the changes\n // We need to update all changed items (that's those which have been added and changed)\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n record.previousValue = record.currentValue;\n }\n for (record = this._additionsHead; record != null; record = record._nextAdded) {\n record.previousValue = record.currentValue;\n }\n this._changesHead = this._changesTail = null;\n this._additionsHead = this._additionsTail = null;\n this._removalsHead = null;\n }\n }\n // Add the record or a given key to the list of changes only when the value has actually changed\n _maybeAddToChanges(record, newValue) {\n if (!Object.is(newValue, record.currentValue)) {\n record.previousValue = record.currentValue;\n record.currentValue = newValue;\n this._addToChanges(record);\n }\n }\n _addToAdditions(record) {\n if (this._additionsHead === null) {\n this._additionsHead = this._additionsTail = record;\n }\n else {\n this._additionsTail._nextAdded = record;\n this._additionsTail = record;\n }\n }\n _addToChanges(record) {\n if (this._changesHead === null) {\n this._changesHead = this._changesTail = record;\n }\n else {\n this._changesTail._nextChanged = record;\n this._changesTail = record;\n }\n }\n /** @internal */\n _forEach(obj, fn) {\n if (obj instanceof Map) {\n obj.forEach(fn);\n }\n else {\n Object.keys(obj).forEach(k => fn(obj[k], k));\n }\n }\n}\nclass KeyValueChangeRecord_ {\n constructor(key) {\n this.key = key;\n this.previousValue = null;\n this.currentValue = null;\n /** @internal */\n this._nextPrevious = null;\n /** @internal */\n this._next = null;\n /** @internal */\n this._prev = null;\n /** @internal */\n this._nextAdded = null;\n /** @internal */\n this._nextRemoved = null;\n /** @internal */\n this._nextChanged = null;\n }\n}\n\nfunction defaultIterableDiffersFactory() {\n return new IterableDiffers([new DefaultIterableDifferFactory()]);\n}\n/**\n * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.\n *\n * @publicApi\n */\nclass IterableDiffers {\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({ token: IterableDiffers, providedIn: 'root', factory: defaultIterableDiffersFactory }); }\n constructor(factories) {\n this.factories = factories;\n }\n static create(factories, parent) {\n if (parent != null) {\n const copied = parent.factories.slice();\n factories = factories.concat(copied);\n }\n return new IterableDiffers(factories);\n }\n /**\n * Takes an array of {@link IterableDifferFactory} and returns a provider used to extend the\n * inherited {@link IterableDiffers} instance with the provided factories and return a new\n * {@link IterableDiffers} instance.\n *\n * @usageNotes\n * ### Example\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {@link IterableDiffer} available.\n *\n * ```\n * @Component({\n * viewProviders: [\n * IterableDiffers.extend([new ImmutableListDiffer()])\n * ]\n * })\n * ```\n */\n static extend(factories) {\n return {\n provide: IterableDiffers,\n useFactory: (parent) => {\n // if parent is null, it means that we are in the root injector and we have just overridden\n // the default injection mechanism for IterableDiffers, in such a case just assume\n // `defaultIterableDiffersFactory`.\n return IterableDiffers.create(factories, parent || defaultIterableDiffersFactory());\n },\n // Dependency technically isn't optional, but we can provide a better error message this way.\n deps: [[IterableDiffers, new SkipSelf(), new Optional()]]\n };\n }\n find(iterable) {\n const factory = this.factories.find(f => f.supports(iterable));\n if (factory != null) {\n return factory;\n }\n else {\n throw new RuntimeError(901 /* RuntimeErrorCode.NO_SUPPORTING_DIFFER_FACTORY */, ngDevMode &&\n `Cannot find a differ supporting object '${iterable}' of type '${getTypeNameForDebugging(iterable)}'`);\n }\n }\n}\nfunction getTypeNameForDebugging(type) {\n return type['name'] || typeof type;\n}\n\nfunction defaultKeyValueDiffersFactory() {\n return new KeyValueDiffers([new DefaultKeyValueDifferFactory()]);\n}\n/**\n * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.\n *\n * @publicApi\n */\nclass KeyValueDiffers {\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({ token: KeyValueDiffers, providedIn: 'root', factory: defaultKeyValueDiffersFactory }); }\n constructor(factories) {\n this.factories = factories;\n }\n static create(factories, parent) {\n if (parent) {\n const copied = parent.factories.slice();\n factories = factories.concat(copied);\n }\n return new KeyValueDiffers(factories);\n }\n /**\n * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the\n * inherited {@link KeyValueDiffers} instance with the provided factories and return a new\n * {@link KeyValueDiffers} instance.\n *\n * @usageNotes\n * ### Example\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {@link KeyValueDiffer} available.\n *\n * ```\n * @Component({\n * viewProviders: [\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\n * ]\n * })\n * ```\n */\n static extend(factories) {\n return {\n provide: KeyValueDiffers,\n useFactory: (parent) => {\n // if parent is null, it means that we are in the root injector and we have just overridden\n // the default injection mechanism for KeyValueDiffers, in such a case just assume\n // `defaultKeyValueDiffersFactory`.\n return KeyValueDiffers.create(factories, parent || defaultKeyValueDiffersFactory());\n },\n // Dependency technically isn't optional, but we can provide a better error message this way.\n deps: [[KeyValueDiffers, new SkipSelf(), new Optional()]]\n };\n }\n find(kv) {\n const factory = this.factories.find(f => f.supports(kv));\n if (factory) {\n return factory;\n }\n throw new RuntimeError(901 /* RuntimeErrorCode.NO_SUPPORTING_DIFFER_FACTORY */, ngDevMode && `Cannot find a differ supporting object '${kv}'`);\n }\n}\n\n/**\n * Structural diffing for `Object`s and `Map`s.\n */\nconst keyValDiff = [new DefaultKeyValueDifferFactory()];\n/**\n * Structural diffing for `Iterable` types such as `Array`s.\n */\nconst iterableDiff = [new DefaultIterableDifferFactory()];\nconst defaultIterableDiffers = new IterableDiffers(iterableDiff);\nconst defaultKeyValueDiffers = new KeyValueDiffers(keyValDiff);\n\n/**\n * @module\n * @description\n * Change detection enables data binding in Angular.\n */\n\n/**\n * This platform has to be included in any other platform\n *\n * @publicApi\n */\nconst platformCore = createPlatformFactory(null, 'core', []);\n\n/**\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command. Eagerly injects\n * `ApplicationRef` to instantiate it.\n *\n * @publicApi\n */\nclass ApplicationModule {\n // Inject ApplicationRef to make it eager...\n constructor(appRef) { }\n static { this.ɵfac = function ApplicationModule_Factory(t) { return new (t || ApplicationModule)(ɵɵinject(ApplicationRef)); }; }\n static { this.ɵmod = /*@__PURE__*/ ɵɵdefineNgModule({ type: ApplicationModule }); }\n static { this.ɵinj = /*@__PURE__*/ ɵɵdefineInjector({}); }\n}\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && setClassMetadata(ApplicationModule, [{\n type: NgModule\n }], function () { return [{ type: ApplicationRef }]; }, null); })();\n\n/**\n * A collection that tracks all serialized views (`ngh` DOM annotations)\n * to avoid duplication. An attempt to add a duplicate view results in the\n * collection returning the index of the previously collected serialized view.\n * This reduces the number of annotations needed for a given page.\n */\nclass SerializedViewCollection {\n constructor() {\n this.views = [];\n this.indexByContent = new Map();\n }\n add(serializedView) {\n const viewAsString = JSON.stringify(serializedView);\n if (!this.indexByContent.has(viewAsString)) {\n const index = this.views.length;\n this.views.push(serializedView);\n this.indexByContent.set(viewAsString, index);\n return index;\n }\n return this.indexByContent.get(viewAsString);\n }\n getAll() {\n return this.views;\n }\n}\n/**\n * Global counter that is used to generate a unique id for TViews\n * during the serialization process.\n */\nlet tViewSsrId = 0;\n/**\n * Generates a unique id for a given TView and returns this id.\n * The id is also stored on this instance of a TView and reused in\n * subsequent calls.\n *\n * This id is needed to uniquely identify and pick up dehydrated views\n * at runtime.\n */\nfunction getSsrId(tView) {\n if (!tView.ssrId) {\n tView.ssrId = `t${tViewSsrId++}`;\n }\n return tView.ssrId;\n}\n/**\n * Computes the number of root nodes in a given view\n * (or child nodes in a given container if a tNode is provided).\n */\nfunction calcNumRootNodes(tView, lView, tNode) {\n const rootNodes = [];\n collectNativeNodes(tView, lView, tNode, rootNodes);\n return rootNodes.length;\n}\n/**\n * Computes the number of root nodes in all views in a given LContainer.\n */\nfunction calcNumRootNodesInLContainer(lContainer) {\n const rootNodes = [];\n collectNativeNodesInLContainer(lContainer, rootNodes);\n return rootNodes.length;\n}\n/**\n * Annotates root level component's LView for hydration,\n * see `annotateHostElementForHydration` for additional information.\n */\nfunction annotateComponentLViewForHydration(lView, context) {\n const hostElement = lView[HOST];\n // Root elements might also be annotated with the `ngSkipHydration` attribute,\n // check if it's present before starting the serialization process.\n if (hostElement && !hostElement.hasAttribute(SKIP_HYDRATION_ATTR_NAME)) {\n return annotateHostElementForHydration(hostElement, lView, context);\n }\n return null;\n}\n/**\n * Annotates root level LContainer for hydration. This happens when a root component\n * injects ViewContainerRef, thus making the component an anchor for a view container.\n * This function serializes the component itself as well as all views from the view\n * container.\n */\nfunction annotateLContainerForHydration(lContainer, context) {\n const componentLView = unwrapLView(lContainer[HOST]);\n // Serialize the root component itself.\n const componentLViewNghIndex = annotateComponentLViewForHydration(componentLView, context);\n const hostElement = unwrapRNode(componentLView[HOST]);\n // Serialize all views within this view container.\n const rootLView = lContainer[PARENT];\n const rootLViewNghIndex = annotateHostElementForHydration(hostElement, rootLView, context);\n const renderer = componentLView[RENDERER];\n // For cases when a root component also acts as an anchor node for a ViewContainerRef\n // (for example, when ViewContainerRef is injected in a root component), there is a need\n // to serialize information about the component itself, as well as an LContainer that\n // represents this ViewContainerRef. Effectively, we need to serialize 2 pieces of info:\n // (1) hydration info for the root component itself and (2) hydration info for the\n // ViewContainerRef instance (an LContainer). Each piece of information is included into\n // the hydration data (in the TransferState object) separately, thus we end up with 2 ids.\n // Since we only have 1 root element, we encode both bits of info into a single string:\n // ids are separated by the `|` char (e.g. `10|25`, where `10` is the ngh for a component view\n // and 25 is the `ngh` for a root view which holds LContainer).\n const finalIndex = `${componentLViewNghIndex}|${rootLViewNghIndex}`;\n renderer.setAttribute(hostElement, NGH_ATTR_NAME, finalIndex);\n}\n/**\n * Annotates all components bootstrapped in a given ApplicationRef\n * with info needed for hydration.\n *\n * @param appRef An instance of an ApplicationRef.\n * @param doc A reference to the current Document instance.\n */\nfunction annotateForHydration(appRef, doc) {\n const serializedViewCollection = new SerializedViewCollection();\n const corruptedTextNodes = new Map();\n const viewRefs = appRef._views;\n for (const viewRef of viewRefs) {\n const lNode = getLNodeForHydration(viewRef);\n // An `lView` might be `null` if a `ViewRef` represents\n // an embedded view (not a component view).\n if (lNode !== null) {\n const context = {\n serializedViewCollection,\n corruptedTextNodes,\n };\n if (isLContainer(lNode)) {\n annotateLContainerForHydration(lNode, context);\n }\n else {\n annotateComponentLViewForHydration(lNode, context);\n }\n insertCorruptedTextNodeMarkers(corruptedTextNodes, doc);\n }\n }\n // Note: we *always* include hydration info key and a corresponding value\n // into the TransferState, even if the list of serialized views is empty.\n // This is needed as a signal to the client that the server part of the\n // hydration logic was setup and enabled correctly. Otherwise, if a client\n // hydration doesn't find a key in the transfer state - an error is produced.\n const serializedViews = serializedViewCollection.getAll();\n const transferState = appRef.injector.get(TransferState);\n transferState.set(NGH_DATA_KEY, serializedViews);\n}\n/**\n * Serializes the lContainer data into a list of SerializedView objects,\n * that represent views within this lContainer.\n *\n * @param lContainer the lContainer we are serializing\n * @param context the hydration context\n * @returns an array of the `SerializedView` objects\n */\nfunction serializeLContainer(lContainer, context) {\n const views = [];\n let lastViewAsString = '';\n for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {\n let childLView = lContainer[i];\n let template;\n let numRootNodes;\n let serializedView;\n if (isRootView(childLView)) {\n // If this is a root view, get an LView for the underlying component,\n // because it contains information about the view to serialize.\n childLView = childLView[HEADER_OFFSET];\n // If we have an LContainer at this position, this indicates that the\n // host element was used as a ViewContainerRef anchor (e.g. a `ViewContainerRef`\n // was injected within the component class). This case requires special handling.\n if (isLContainer(childLView)) {\n // Calculate the number of root nodes in all views in a given container\n // and increment by one to account for an anchor node itself, i.e. in this\n // scenario we'll have a layout that would look like this:\n // `<app-root /><#VIEW1><#VIEW2>...<!--container-->`\n // The `+1` is to capture the `<app-root />` element.\n numRootNodes = calcNumRootNodesInLContainer(childLView) + 1;\n annotateLContainerForHydration(childLView, context);\n const componentLView = unwrapLView(childLView[HOST]);\n serializedView = {\n [TEMPLATE_ID]: componentLView[TVIEW].ssrId,\n [NUM_ROOT_NODES]: numRootNodes,\n };\n }\n }\n if (!serializedView) {\n const childTView = childLView[TVIEW];\n if (childTView.type === 1 /* TViewType.Component */) {\n template = childTView.ssrId;\n // This is a component view, thus it has only 1 root node: the component\n // host node itself (other nodes would be inside that host node).\n numRootNodes = 1;\n }\n else {\n template = getSsrId(childTView);\n numRootNodes = calcNumRootNodes(childTView, childLView, childTView.firstChild);\n }\n serializedView = {\n [TEMPLATE_ID]: template,\n [NUM_ROOT_NODES]: numRootNodes,\n ...serializeLView(lContainer[i], context),\n };\n }\n // Check if the previous view has the same shape (for example, it was\n // produced by the *ngFor), in which case bump the counter on the previous\n // view instead of including the same information again.\n const currentViewAsString = JSON.stringify(serializedView);\n if (views.length > 0 && currentViewAsString === lastViewAsString) {\n const previousView = views[views.length - 1];\n previousView[MULTIPLIER] ??= 1;\n previousView[MULTIPLIER]++;\n }\n else {\n // Record this view as most recently added.\n lastViewAsString = currentViewAsString;\n views.push(serializedView);\n }\n }\n return views;\n}\n/**\n * Helper function to produce a node path (which navigation steps runtime logic\n * needs to take to locate a node) and stores it in the `NODES` section of the\n * current serialized view.\n */\nfunction appendSerializedNodePath(ngh, tNode, lView) {\n const noOffsetIndex = tNode.index - HEADER_OFFSET;\n ngh[NODES] ??= {};\n ngh[NODES][noOffsetIndex] = calcPathForNode(tNode, lView);\n}\n/**\n * Helper function to append information about a disconnected node.\n * This info is needed at runtime to avoid DOM lookups for this element\n * and instead, the element would be created from scratch.\n */\nfunction appendDisconnectedNodeIndex(ngh, tNode) {\n const noOffsetIndex = tNode.index - HEADER_OFFSET;\n ngh[DISCONNECTED_NODES] ??= [];\n if (!ngh[DISCONNECTED_NODES].includes(noOffsetIndex)) {\n ngh[DISCONNECTED_NODES].push(noOffsetIndex);\n }\n}\n/**\n * Serializes the lView data into a SerializedView object that will later be added\n * to the TransferState storage and referenced using the `ngh` attribute on a host\n * element.\n *\n * @param lView the lView we are serializing\n * @param context the hydration context\n * @returns the `SerializedView` object containing the data to be added to the host node\n */\nfunction serializeLView(lView, context) {\n const ngh = {};\n const tView = lView[TVIEW];\n // Iterate over DOM element references in an LView.\n for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) {\n const tNode = tView.data[i];\n const noOffsetIndex = i - HEADER_OFFSET;\n // Local refs (e.g. <div #localRef>) take up an extra slot in LViews\n // to store the same element. In this case, there is no information in\n // a corresponding slot in TNode data structure. If that's the case, just\n // skip this slot and move to the next one.\n if (!tNode) {\n continue;\n }\n // Check if a native node that represents a given TNode is disconnected from the DOM tree.\n // Such nodes must be excluded from the hydration (since the hydration won't be able to\n // find them), so the TNode ids are collected and used at runtime to skip the hydration.\n //\n // This situation may happen during the content projection, when some nodes don't make it\n // into one of the content projection slots (for example, when there is no default\n // <ng-content /> slot in projector component's template).\n if (isDisconnectedNode(tNode, lView) && isContentProjectedNode(tNode)) {\n appendDisconnectedNodeIndex(ngh, tNode);\n continue;\n }\n if (Array.isArray(tNode.projection)) {\n for (const projectionHeadTNode of tNode.projection) {\n // We may have `null`s in slots with no projected content.\n if (!projectionHeadTNode)\n continue;\n if (!Array.isArray(projectionHeadTNode)) {\n // If we process re-projected content (i.e. `<ng-content>`\n // appears at projection location), skip annotations for this content\n // since all DOM nodes in this projection were handled while processing\n // a parent lView, which contains those nodes.\n if (!isProjectionTNode(projectionHeadTNode) &&\n !isInSkipHydrationBlock(projectionHeadTNode)) {\n if (isDisconnectedNode(projectionHeadTNode, lView)) {\n // Check whether this node is connected, since we may have a TNode\n // in the data structure as a projection segment head, but the\n // content projection slot might be disabled (e.g.\n // <ng-content *ngIf=\"false\" />).\n appendDisconnectedNodeIndex(ngh, projectionHeadTNode);\n }\n else {\n appendSerializedNodePath(ngh, projectionHeadTNode, lView);\n }\n }\n }\n else {\n // If a value is an array, it means that we are processing a projection\n // where projectable nodes were passed in as DOM nodes (for example, when\n // calling `ViewContainerRef.createComponent(CmpA, {projectableNodes: [...]})`).\n //\n // In this scenario, nodes can come from anywhere (either created manually,\n // accessed via `document.querySelector`, etc) and may be in any state\n // (attached or detached from the DOM tree). As a result, we can not reliably\n // restore the state for such cases during hydration.\n throw unsupportedProjectionOfDomNodes(unwrapRNode(lView[i]));\n }\n }\n }\n if (isLContainer(lView[i])) {\n // Serialize information about a template.\n const embeddedTView = tNode.tView;\n if (embeddedTView !== null) {\n ngh[TEMPLATES] ??= {};\n ngh[TEMPLATES][noOffsetIndex] = getSsrId(embeddedTView);\n }\n // Serialize views within this LContainer.\n const hostNode = lView[i][HOST]; // host node of this container\n // LView[i][HOST] can be of 2 different types:\n // - either a DOM node\n // - or an array that represents an LView of a component\n if (Array.isArray(hostNode)) {\n // This is a component, serialize info about it.\n const targetNode = unwrapRNode(hostNode);\n if (!targetNode.hasAttribute(SKIP_HYDRATION_ATTR_NAME)) {\n annotateHostElementForHydration(targetNode, hostNode, context);\n }\n }\n ngh[CONTAINERS] ??= {};\n ngh[CONTAINERS][noOffsetIndex] = serializeLContainer(lView[i], context);\n }\n else if (Array.isArray(lView[i])) {\n // This is a component, annotate the host node with an `ngh` attribute.\n const targetNode = unwrapRNode(lView[i][HOST]);\n if (!targetNode.hasAttribute(SKIP_HYDRATION_ATTR_NAME)) {\n annotateHostElementForHydration(targetNode, lView[i], context);\n }\n }\n else {\n // <ng-container> case\n if (tNode.type & 8 /* TNodeType.ElementContainer */) {\n // An <ng-container> is represented by the number of\n // top-level nodes. This information is needed to skip over\n // those nodes to reach a corresponding anchor node (comment node).\n ngh[ELEMENT_CONTAINERS] ??= {};\n ngh[ELEMENT_CONTAINERS][noOffsetIndex] = calcNumRootNodes(tView, lView, tNode.child);\n }\n else if (tNode.type & 16 /* TNodeType.Projection */) {\n // Current TNode represents an `<ng-content>` slot, thus it has no\n // DOM elements associated with it, so the **next sibling** node would\n // not be able to find an anchor. In this case, use full path instead.\n let nextTNode = tNode.next;\n // Skip over all `<ng-content>` slots in a row.\n while (nextTNode !== null && (nextTNode.type & 16 /* TNodeType.Projection */)) {\n nextTNode = nextTNode.next;\n }\n if (nextTNode && !isInSkipHydrationBlock(nextTNode)) {\n // Handle a tNode after the `<ng-content>` slot.\n appendSerializedNodePath(ngh, nextTNode, lView);\n }\n }\n else {\n // Handle cases where text nodes can be lost after DOM serialization:\n // 1. When there is an *empty text node* in DOM: in this case, this\n // node would not make it into the serialized string and as a result,\n // this node wouldn't be created in a browser. This would result in\n // a mismatch during the hydration, where the runtime logic would expect\n // a text node to be present in live DOM, but no text node would exist.\n // Example: `<span>{{ name }}</span>` when the `name` is an empty string.\n // This would result in `<span></span>` string after serialization and\n // in a browser only the `span` element would be created. To resolve that,\n // an extra comment node is appended in place of an empty text node and\n // that special comment node is replaced with an empty text node *before*\n // hydration.\n // 2. When there are 2 consecutive text nodes present in the DOM.\n // Example: `<div>Hello <ng-container *ngIf=\"true\">world</ng-container></div>`.\n // In this scenario, the live DOM would look like this:\n // <div>#text('Hello ') #text('world') #comment('container')</div>\n // Serialized string would look like this: `<div>Hello world<!--container--></div>`.\n // The live DOM in a browser after that would be:\n // <div>#text('Hello world') #comment('container')</div>\n // Notice how 2 text nodes are now \"merged\" into one. This would cause hydration\n // logic to fail, since it'd expect 2 text nodes being present, not one.\n // To fix this, we insert a special comment node in between those text nodes, so\n // serialized representation is: `<div>Hello <!--ngtns-->world<!--container--></div>`.\n // This forces browser to create 2 text nodes separated by a comment node.\n // Before running a hydration process, this special comment node is removed, so the\n // live DOM has exactly the same state as it was before serialization.\n if (tNode.type & 1 /* TNodeType.Text */) {\n const rNode = unwrapRNode(lView[i]);\n // Collect this node as required special annotation only when its\n // contents is empty. Otherwise, such text node would be present on\n // the client after server-side rendering and no special handling needed.\n if (rNode.textContent === '') {\n context.corruptedTextNodes.set(rNode, \"ngetn\" /* TextNodeMarker.EmptyNode */);\n }\n else if (rNode.nextSibling?.nodeType === Node.TEXT_NODE) {\n context.corruptedTextNodes.set(rNode, \"ngtns\" /* TextNodeMarker.Separator */);\n }\n }\n if (tNode.projectionNext && tNode.projectionNext !== tNode.next &&\n !isInSkipHydrationBlock(tNode.projectionNext)) {\n // Check if projection next is not the same as next, in which case\n // the node would not be found at creation time at runtime and we\n // need to provide a location for that node.\n appendSerializedNodePath(ngh, tNode.projectionNext, lView);\n }\n }\n }\n }\n return ngh;\n}\n/**\n * Determines whether a component instance that is represented\n * by a given LView uses `ViewEncapsulation.ShadowDom`.\n */\nfunction componentUsesShadowDomEncapsulation(lView) {\n const instance = lView[CONTEXT];\n return instance?.constructor ?\n getComponentDef(instance.constructor)?.encapsulation === ViewEncapsulation$1.ShadowDom :\n false;\n}\n/**\n * Annotates component host element for hydration:\n * - by either adding the `ngh` attribute and collecting hydration-related info\n * for the serialization and transferring to the client\n * - or by adding the `ngSkipHydration` attribute in case Angular detects that\n * component contents is not compatible with hydration.\n *\n * @param element The Host element to be annotated\n * @param lView The associated LView\n * @param context The hydration context\n * @returns An index of serialized view from the transfer state object\n * or `null` when a given component can not be serialized.\n */\nfunction annotateHostElementForHydration(element, lView, context) {\n const renderer = lView[RENDERER];\n if (hasI18n(lView) || componentUsesShadowDomEncapsulation(lView)) {\n // Attach the skip hydration attribute if this component:\n // - either has i18n blocks, since hydrating such blocks is not yet supported\n // - or uses ShadowDom view encapsulation, since Domino doesn't support\n // shadow DOM, so we can not guarantee that client and server representations\n // would exactly match\n renderer.setAttribute(element, SKIP_HYDRATION_ATTR_NAME, '');\n return null;\n }\n else {\n const ngh = serializeLView(lView, context);\n const index = context.serializedViewCollection.add(ngh);\n renderer.setAttribute(element, NGH_ATTR_NAME, index.toString());\n return index;\n }\n}\n/**\n * Physically inserts the comment nodes to ensure empty text nodes and adjacent\n * text node separators are preserved after server serialization of the DOM.\n * These get swapped back for empty text nodes or separators once hydration happens\n * on the client.\n *\n * @param corruptedTextNodes The Map of text nodes to be replaced with comments\n * @param doc The document\n */\nfunction insertCorruptedTextNodeMarkers(corruptedTextNodes, doc) {\n for (const [textNode, marker] of corruptedTextNodes) {\n textNode.after(doc.createComment(marker));\n }\n}\n/**\n * Detects whether a given TNode represents a node that\n * is being content projected.\n */\nfunction isContentProjectedNode(tNode) {\n let currentTNode = tNode;\n while (currentTNode != null) {\n // If we come across a component host node in parent nodes -\n // this TNode is in the content projection section.\n if (isComponentHost(currentTNode)) {\n return true;\n }\n currentTNode = currentTNode.parent;\n }\n return false;\n}\n/**\n * Check whether a given node exists, but is disconnected from the DOM.\n *\n * Note: we leverage the fact that we have this information available in the DOM emulation\n * layer (in Domino) for now. Longer-term solution should not rely on the DOM emulation and\n * only use internal data structures and state to compute this information.\n */\nfunction isDisconnectedNode(tNode, lView) {\n return !(tNode.type & 16 /* TNodeType.Projection */) && !!lView[tNode.index] &&\n !unwrapRNode(lView[tNode.index]).isConnected;\n}\n\n/**\n * Indicates whether the hydration-related code was added,\n * prevents adding it multiple times.\n */\nlet isHydrationSupportEnabled = false;\n/**\n * Defines a period of time that Angular waits for the `ApplicationRef.isStable` to emit `true`.\n * If there was no event with the `true` value during this time, Angular reports a warning.\n */\nconst APPLICATION_IS_STABLE_TIMEOUT = 10000;\n/**\n * Brings the necessary hydration code in tree-shakable manner.\n * The code is only present when the `provideClientHydration` is\n * invoked. Otherwise, this code is tree-shaken away during the\n * build optimization step.\n *\n * This technique allows us to swap implementations of methods so\n * tree shaking works appropriately when hydration is disabled or\n * enabled. It brings in the appropriate version of the method that\n * supports hydration only when enabled.\n */\nfunction enableHydrationRuntimeSupport() {\n if (!isHydrationSupportEnabled) {\n isHydrationSupportEnabled = true;\n enableRetrieveHydrationInfoImpl();\n enableLocateOrCreateElementNodeImpl();\n enableLocateOrCreateTextNodeImpl();\n enableLocateOrCreateElementContainerNodeImpl();\n enableLocateOrCreateContainerAnchorImpl();\n enableLocateOrCreateContainerRefImpl();\n enableFindMatchingDehydratedViewImpl();\n enableApplyRootElementTransformImpl();\n }\n}\n/**\n * Outputs a message with hydration stats into a console.\n */\nfunction printHydrationStats(injector) {\n const console = injector.get(Console);\n const message = `Angular hydrated ${ngDevMode.hydratedComponents} component(s) ` +\n `and ${ngDevMode.hydratedNodes} node(s), ` +\n `${ngDevMode.componentsSkippedHydration} component(s) were skipped. ` +\n `Note: this feature is in Developer Preview mode. ` +\n `Learn more at https://angular.io/guide/hydration.`;\n // tslint:disable-next-line:no-console\n console.log(message);\n}\n/**\n * Returns a Promise that is resolved when an application becomes stable.\n */\nfunction whenStable(appRef, injector) {\n const isStablePromise = appRef.isStable.pipe(first((isStable) => isStable)).toPromise();\n if (typeof ngDevMode !== 'undefined' && ngDevMode) {\n const timeoutTime = APPLICATION_IS_STABLE_TIMEOUT;\n const console = injector.get(Console);\n const ngZone = injector.get(NgZone);\n // The following call should not and does not prevent the app to become stable\n // We cannot use RxJS timer here because the app would remain unstable.\n // This also avoids an extra change detection cycle.\n const timeoutId = ngZone.runOutsideAngular(() => {\n return setTimeout(() => logWarningOnStableTimedout(timeoutTime, console), timeoutTime);\n });\n isStablePromise.finally(() => clearTimeout(timeoutId));\n }\n return isStablePromise.then(() => { });\n}\n/**\n * Returns a set of providers required to setup hydration support\n * for an application that is server side rendered. This function is\n * included into the `provideClientHydration` public API function from\n * the `platform-browser` package.\n *\n * The function sets up an internal flag that would be recognized during\n * the server side rendering time as well, so there is no need to\n * configure or change anything in NgUniversal to enable the feature.\n */\nfunction withDomHydration() {\n return makeEnvironmentProviders([\n {\n provide: IS_HYDRATION_DOM_REUSE_ENABLED,\n useFactory: () => {\n let isEnabled = true;\n if (isPlatformBrowser()) {\n // On the client, verify that the server response contains\n // hydration annotations. Otherwise, keep hydration disabled.\n const transferState = inject(TransferState, { optional: true });\n isEnabled = !!transferState?.get(NGH_DATA_KEY, null);\n if (!isEnabled && (typeof ngDevMode !== 'undefined' && ngDevMode)) {\n const console = inject(Console);\n const message = formatRuntimeError(-505 /* RuntimeErrorCode.MISSING_HYDRATION_ANNOTATIONS */, 'Angular hydration was requested on the client, but there was no ' +\n 'serialized information present in the server response, ' +\n 'thus hydration was not enabled. ' +\n 'Make sure the `provideClientHydration()` is included into the list ' +\n 'of providers in the server part of the application configuration.');\n // tslint:disable-next-line:no-console\n console.warn(message);\n }\n }\n if (isEnabled) {\n inject(ENABLED_SSR_FEATURES).add('hydration');\n }\n return isEnabled;\n },\n },\n {\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => {\n // Since this function is used across both server and client,\n // make sure that the runtime code is only added when invoked\n // on the client. Moving forward, the `isPlatformBrowser` check should\n // be replaced with a tree-shakable alternative (e.g. `isServer`\n // flag).\n if (isPlatformBrowser() && inject(IS_HYDRATION_DOM_REUSE_ENABLED)) {\n verifySsrContentsIntegrity();\n enableHydrationRuntimeSupport();\n }\n },\n multi: true,\n },\n {\n provide: PRESERVE_HOST_CONTENT,\n useFactory: () => {\n // Preserve host element content only in a browser\n // environment and when hydration is configured properly.\n // On a server, an application is rendered from scratch,\n // so the host content needs to be empty.\n return isPlatformBrowser() && inject(IS_HYDRATION_DOM_REUSE_ENABLED);\n }\n },\n {\n provide: APP_BOOTSTRAP_LISTENER,\n useFactory: () => {\n if (isPlatformBrowser() && inject(IS_HYDRATION_DOM_REUSE_ENABLED)) {\n const appRef = inject(ApplicationRef);\n const injector = inject(Injector);\n return () => {\n // Wait until an app becomes stable and cleanup all views that\n // were not claimed during the application bootstrap process.\n // The timing is similar to when we start the serialization process\n // on the server.\n //\n // Note: the cleanup task *MUST* be scheduled within the Angular zone\n // to ensure that change detection is properly run afterward.\n whenStable(appRef, injector).then(() => {\n NgZone.assertInAngularZone();\n cleanupDehydratedViews(appRef);\n if (typeof ngDevMode !== 'undefined' && ngDevMode) {\n printHydrationStats(injector);\n }\n });\n };\n }\n return () => { }; // noop\n },\n multi: true,\n }\n ]);\n}\n/**\n *\n * @param time The time in ms until the stable timedout warning message is logged\n */\nfunction logWarningOnStableTimedout(time, console) {\n const message = `Angular hydration expected the ApplicationRef.isStable() to emit \\`true\\`, but it ` +\n `didn't happen within ${time}ms. Angular hydration logic depends on the application becoming stable ` +\n `as a signal to complete hydration process.`;\n console.warn(formatRuntimeError(-506 /* RuntimeErrorCode.HYDRATION_STABLE_TIMEDOUT */, message));\n}\n/**\n * Verifies whether the DOM contains a special marker added during SSR time to make sure\n * there is no SSR'ed contents transformations happen after SSR is completed. Typically that\n * happens either by CDN or during the build process as an optimization to remove comment nodes.\n * Hydration process requires comment nodes produced by Angular to locate correct DOM segments.\n * When this special marker is *not* present - throw an error and do not proceed with hydration,\n * since it will not be able to function correctly.\n *\n * Note: this function is invoked only on the client, so it's safe to use DOM APIs.\n */\nfunction verifySsrContentsIntegrity() {\n const doc = getDocument();\n let hydrationMarker;\n for (const node of doc.body.childNodes) {\n if (node.nodeType === Node.COMMENT_NODE &&\n node.textContent?.trim() === SSR_CONTENT_INTEGRITY_MARKER) {\n hydrationMarker = node;\n break;\n }\n }\n if (!hydrationMarker) {\n throw new RuntimeError(-507 /* RuntimeErrorCode.MISSING_SSR_CONTENT_INTEGRITY_MARKER */, typeof ngDevMode !== 'undefined' && ngDevMode &&\n 'Angular hydration logic detected that HTML content of this page was modified after it ' +\n 'was produced during server side rendering. Make sure that there are no optimizations ' +\n 'that remove comment nodes from HTML enabled on your CDN. Angular hydration ' +\n 'relies on HTML produced by the server, including whitespaces and comment nodes.');\n }\n}\n\n/**\n * Transforms a value (typically a string) to a boolean.\n * Intended to be used as a transform function of an input.\n *\n * @usageNotes\n * ```typescript\n * @Input({ transform: booleanAttribute }) status!: boolean;\n * ```\n * @param value Value to be transformed.\n *\n * @publicApi\n */\nfunction booleanAttribute(value) {\n return typeof value === 'boolean' ? value : (value != null && value !== 'false');\n}\n/**\n * Transforms a value (typically a string) to a number.\n * Intended to be used as a transform function of an input.\n * @param value Value to be transformed.\n * @param fallbackValue Value to use if the provided value can't be parsed as a number.\n *\n * @usageNotes\n * ```typescript\n * @Input({ transform: numberAttribute }) id!: number;\n * ```\n *\n * @publicApi\n */\nfunction numberAttribute(value, fallbackValue = NaN) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n const isNumberValue = !isNaN(parseFloat(value)) && !isNaN(Number(value));\n return isNumberValue ? Number(value) : fallbackValue;\n}\n\n/**\n * Compiles a partial directive declaration object into a full directive definition object.\n *\n * @codeGenApi\n */\nfunction ɵɵngDeclareDirective(decl) {\n const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'directive', type: decl.type });\n return compiler.compileDirectiveDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵfac.js`, decl);\n}\n/**\n * Evaluates the class metadata declaration.\n *\n * @codeGenApi\n */\nfunction ɵɵngDeclareClassMetadata(decl) {\n setClassMetadata(decl.type, decl.decorators, decl.ctorParameters ?? null, decl.propDecorators ?? null);\n}\n/**\n * Compiles a partial component declaration object into a full component definition object.\n *\n * @codeGenApi\n */\nfunction ɵɵngDeclareComponent(decl) {\n const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'component', type: decl.type });\n return compiler.compileComponentDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵcmp.js`, decl);\n}\n/**\n * Compiles a partial pipe declaration object into a full pipe definition object.\n *\n * @codeGenApi\n */\nfunction ɵɵngDeclareFactory(decl) {\n const compiler = getCompilerFacade({\n usage: 1 /* JitCompilerUsage.PartialDeclaration */,\n kind: getFactoryKind(decl.target),\n type: decl.type\n });\n return compiler.compileFactoryDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵfac.js`, decl);\n}\nfunction getFactoryKind(target) {\n switch (target) {\n case FactoryTarget.Directive:\n return 'directive';\n case FactoryTarget.Component:\n return 'component';\n case FactoryTarget.Injectable:\n return 'injectable';\n case FactoryTarget.Pipe:\n return 'pipe';\n case FactoryTarget.NgModule:\n return 'NgModule';\n }\n}\n/**\n * Compiles a partial injectable declaration object into a full injectable definition object.\n *\n * @codeGenApi\n */\nfunction ɵɵngDeclareInjectable(decl) {\n const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'injectable', type: decl.type });\n return compiler.compileInjectableDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵprov.js`, decl);\n}\n/**\n * Compiles a partial injector declaration object into a full injector definition object.\n *\n * @codeGenApi\n */\nfunction ɵɵngDeclareInjector(decl) {\n const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'NgModule', type: decl.type });\n return compiler.compileInjectorDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵinj.js`, decl);\n}\n/**\n * Compiles a partial NgModule declaration object into a full NgModule definition object.\n *\n * @codeGenApi\n */\nfunction ɵɵngDeclareNgModule(decl) {\n const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'NgModule', type: decl.type });\n return compiler.compileNgModuleDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵmod.js`, decl);\n}\n/**\n * Compiles a partial pipe declaration object into a full pipe definition object.\n *\n * @codeGenApi\n */\nfunction ɵɵngDeclarePipe(decl) {\n const compiler = getCompilerFacade({ usage: 1 /* JitCompilerUsage.PartialDeclaration */, kind: 'pipe', type: decl.type });\n return compiler.compilePipeDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵpipe.js`, decl);\n}\n\n// clang-format off\n// clang-format on\n\n// clang-format off\n// clang-format on\n\n// This file exists to allow the set of reactivity exports to be modified in g3, as these APIs are\n\n/**\n * Creates a `ComponentRef` instance based on provided component type and a set of options.\n *\n * @usageNotes\n *\n * The example below demonstrates how the `createComponent` function can be used\n * to create an instance of a ComponentRef dynamically and attach it to an ApplicationRef,\n * so that it gets included into change detection cycles.\n *\n * Note: the example uses standalone components, but the function can also be used for\n * non-standalone components (declared in an NgModule) as well.\n *\n * ```typescript\n * @Component({\n * standalone: true,\n * template: `Hello {{ name }}!`\n * })\n * class HelloComponent {\n * name = 'Angular';\n * }\n *\n * @Component({\n * standalone: true,\n * template: `<div id=\"hello-component-host\"></div>`\n * })\n * class RootComponent {}\n *\n * // Bootstrap an application.\n * const applicationRef = await bootstrapApplication(RootComponent);\n *\n * // Locate a DOM node that would be used as a host.\n * const hostElement = document.getElementById('hello-component-host');\n *\n * // Get an `EnvironmentInjector` instance from the `ApplicationRef`.\n * const environmentInjector = applicationRef.injector;\n *\n * // We can now create a `ComponentRef` instance.\n * const componentRef = createComponent(HelloComponent, {hostElement, environmentInjector});\n *\n * // Last step is to register the newly created ref using the `ApplicationRef` instance\n * // to include the component view into change detection cycles.\n * applicationRef.attachView(componentRef.hostView);\n * componentRef.changeDetectorRef.detectChanges();\n * ```\n *\n * @param component Component class reference.\n * @param options Set of options to use:\n * * `environmentInjector`: An `EnvironmentInjector` instance to be used for the component, see\n * additional info about it [here](/guide/standalone-components#environment-injectors).\n * * `hostElement` (optional): A DOM node that should act as a host node for the component. If not\n * provided, Angular creates one based on the tag name used in the component selector (and falls\n * back to using `div` if selector doesn't have tag name info).\n * * `elementInjector` (optional): An `ElementInjector` instance, see additional info about it\n * [here](/guide/hierarchical-dependency-injection#elementinjector).\n * * `projectableNodes` (optional): A list of DOM nodes that should be projected through\n * [`<ng-content>`](api/core/ng-content) of the new component instance.\n * @returns ComponentRef instance that represents a given Component.\n *\n * @publicApi\n */\nfunction createComponent(component, options) {\n ngDevMode && assertComponentDef(component);\n const componentDef = getComponentDef(component);\n const elementInjector = options.elementInjector || getNullInjector();\n const factory = new ComponentFactory(componentDef);\n return factory.create(elementInjector, options.projectableNodes, options.hostElement, options.environmentInjector);\n}\n/**\n * Creates an object that allows to retrieve component metadata.\n *\n * @usageNotes\n *\n * The example below demonstrates how to use the function and how the fields\n * of the returned object map to the component metadata.\n *\n * ```typescript\n * @Component({\n * standalone: true,\n * selector: 'foo-component',\n * template: `\n * <ng-content></ng-content>\n * <ng-content select=\"content-selector-a\"></ng-content>\n * `,\n * })\n * class FooComponent {\n * @Input('inputName') inputPropName: string;\n * @Output('outputName') outputPropName = new EventEmitter<void>();\n * }\n *\n * const mirror = reflectComponentType(FooComponent);\n * expect(mirror.type).toBe(FooComponent);\n * expect(mirror.selector).toBe('foo-component');\n * expect(mirror.isStandalone).toBe(true);\n * expect(mirror.inputs).toEqual([{propName: 'inputName', templateName: 'inputPropName'}]);\n * expect(mirror.outputs).toEqual([{propName: 'outputName', templateName: 'outputPropName'}]);\n * expect(mirror.ngContentSelectors).toEqual([\n * '*', // first `<ng-content>` in a template, the selector defaults to `*`\n * 'content-selector-a' // second `<ng-content>` in a template\n * ]);\n * ```\n *\n * @param component Component class reference.\n * @returns An object that allows to retrieve component metadata.\n *\n * @publicApi\n */\nfunction reflectComponentType(component) {\n const componentDef = getComponentDef(component);\n if (!componentDef)\n return null;\n const factory = new ComponentFactory(componentDef);\n return {\n get selector() {\n return factory.selector;\n },\n get type() {\n return factory.componentType;\n },\n get inputs() {\n return factory.inputs;\n },\n get outputs() {\n return factory.outputs;\n },\n get ngContentSelectors() {\n return factory.ngContentSelectors;\n },\n get isStandalone() {\n return componentDef.standalone;\n },\n get isSignal() {\n return componentDef.signals;\n },\n };\n}\n\n/**\n * Merge multiple application configurations from left to right.\n *\n * @param configs Two or more configurations to be merged.\n * @returns A merged [ApplicationConfig](api/core/ApplicationConfig).\n *\n * @publicApi\n */\nfunction mergeApplicationConfig(...configs) {\n return configs.reduce((prev, curr) => {\n return Object.assign(prev, curr, { providers: [...prev.providers, ...curr.providers] });\n }, { providers: [] });\n}\n\n/**\n * @module\n * @description\n * Entry point from which you should import all public core APIs.\n */\nif (typeof ngDevMode !== 'undefined' && ngDevMode) {\n // This helper is to give a reasonable error message to people upgrading to v9 that have not yet\n // installed `@angular/localize` in their app.\n // tslint:disable-next-line: no-toplevel-property-access\n _global.$localize = _global.$localize || function () {\n throw new Error('It looks like your application or one of its dependencies is using i18n.\\n' +\n 'Angular 9 introduced a global `$localize()` function that needs to be loaded.\\n' +\n 'Please run `ng add @angular/localize` from the Angular CLI.\\n' +\n '(For non-CLI projects, add `import \\'@angular/localize/init\\';` to your `polyfills.ts` file.\\n' +\n 'For server-side rendering applications add the import to your `main.server.ts` file.)');\n };\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/* This file is not used to build this module. It is only used during editing\n * by the TypeScript language service and during build for verification. `ngc`\n * replaces this file with production index.ts when it rewrites private symbol\n * names.\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, assertPlatform, booleanAttribute, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, numberAttribute, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, ENABLED_SSR_FEATURES as ɵENABLED_SSR_FEATURES, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, InitialRenderPendingTasks as ɵInitialRenderPendingTasks, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, getDebugNode as ɵgetDebugNode, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, withDomHydration as ɵwithDomHydration, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefer, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵvalidateIframeAttribute, ɵɵviewQuery };\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Directive, InjectionToken, forwardRef, Optional, Inject, ɵisPromise, ɵisSubscribable, ɵRuntimeError, Self, EventEmitter, Input, Host, SkipSelf, booleanAttribute, ChangeDetectorRef, Output, NgModule, Injectable, inject, Version } from '@angular/core';\nimport { ɵgetDOM } from '@angular/common';\nimport { from, forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * Base class for all ControlValueAccessor classes defined in Forms package.\n * Contains common logic and utility functions.\n *\n * Note: this is an *internal-only* class and should not be extended or used directly in\n * applications code.\n */\nclass BaseControlValueAccessor {\n constructor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n /**\n * The registered callback function called when a change or input event occurs on the input\n * element.\n * @nodoc\n */\n this.onChange = (_) => { };\n /**\n * The registered callback function called when a blur event occurs on the input element.\n * @nodoc\n */\n this.onTouched = () => { };\n }\n /**\n * Helper method that sets a property on a target element using the current Renderer\n * implementation.\n * @nodoc\n */\n setProperty(key, value) {\n this._renderer.setProperty(this._elementRef.nativeElement, key, value);\n }\n /**\n * Registers a function called when the control is touched.\n * @nodoc\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * Sets the \"disabled\" property on the range input element.\n * @nodoc\n */\n setDisabledState(isDisabled) {\n this.setProperty('disabled', isDisabled);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BaseControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: BaseControlValueAccessor, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BaseControlValueAccessor, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; } });\n/**\n * Base class for all built-in ControlValueAccessor classes (except DefaultValueAccessor, which is\n * used in case no other CVAs can be found). We use this class to distinguish between default CVA,\n * built-in CVAs and custom CVAs, so that Forms logic can recognize built-in CVAs and treat custom\n * ones with higher priority (when both built-in and custom CVAs are present).\n *\n * Note: this is an *internal-only* class and should not be extended or used directly in\n * applications code.\n */\nclass BuiltInControlValueAccessor extends BaseControlValueAccessor {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BuiltInControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: BuiltInControlValueAccessor, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BuiltInControlValueAccessor, decorators: [{\n type: Directive\n }] });\n/**\n * Used to provide a `ControlValueAccessor` for form controls.\n *\n * See `DefaultValueAccessor` for how to implement one.\n *\n * @publicApi\n */\nconst NG_VALUE_ACCESSOR = new InjectionToken('NgValueAccessor');\n\nconst CHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxControlValueAccessor),\n multi: true,\n};\n/**\n * @description\n * A `ControlValueAccessor` for writing a value and listening to changes on a checkbox input\n * element.\n *\n * @usageNotes\n *\n * ### Using a checkbox with a reactive form.\n *\n * The following example shows how to use a checkbox with a reactive form.\n *\n * ```ts\n * const rememberLoginControl = new FormControl();\n * ```\n *\n * ```\n * <input type=\"checkbox\" [formControl]=\"rememberLoginControl\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass CheckboxControlValueAccessor extends BuiltInControlValueAccessor {\n /**\n * Sets the \"checked\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n this.setProperty('checked', value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CheckboxControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: CheckboxControlValueAccessor, selector: \"input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]\", host: { listeners: { \"change\": \"onChange($event.target.checked)\", \"blur\": \"onTouched()\" } }, providers: [CHECKBOX_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CheckboxControlValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]',\n host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()' },\n providers: [CHECKBOX_VALUE_ACCESSOR]\n }]\n }] });\n\nconst DEFAULT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DefaultValueAccessor),\n multi: true\n};\n/**\n * We must check whether the agent is Android because composition events\n * behave differently between iOS and Android.\n */\nfunction _isAndroid() {\n const userAgent = ɵgetDOM() ? ɵgetDOM().getUserAgent() : '';\n return /android (\\d+)/.test(userAgent.toLowerCase());\n}\n/**\n * @description\n * Provide this token to control if form directives buffer IME input until\n * the \"compositionend\" event occurs.\n * @publicApi\n */\nconst COMPOSITION_BUFFER_MODE = new InjectionToken('CompositionEventMode');\n/**\n * The default `ControlValueAccessor` for writing a value and listening to changes on input\n * elements. The accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * {@searchKeywords ngDefaultControl}\n *\n * @usageNotes\n *\n * ### Using the default value accessor\n *\n * The following example shows how to use an input element that activates the default value accessor\n * (in this case, a text field).\n *\n * ```ts\n * const firstNameControl = new FormControl();\n * ```\n *\n * ```\n * <input type=\"text\" [formControl]=\"firstNameControl\">\n * ```\n *\n * This value accessor is used by default for `<input type=\"text\">` and `<textarea>` elements, but\n * you could also use it for custom components that have similar behavior and do not require special\n * processing. In order to attach the default value accessor to a custom element, add the\n * `ngDefaultControl` attribute as shown below.\n *\n * ```\n * <custom-input-component ngDefaultControl [(ngModel)]=\"value\"></custom-input-component>\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass DefaultValueAccessor extends BaseControlValueAccessor {\n constructor(renderer, elementRef, _compositionMode) {\n super(renderer, elementRef);\n this._compositionMode = _compositionMode;\n /** Whether the user is creating a composition string (IME events). */\n this._composing = false;\n if (this._compositionMode == null) {\n this._compositionMode = !_isAndroid();\n }\n }\n /**\n * Sets the \"value\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n const normalizedValue = value == null ? '' : value;\n this.setProperty('value', normalizedValue);\n }\n /** @internal */\n _handleInput(value) {\n if (!this._compositionMode || (this._compositionMode && !this._composing)) {\n this.onChange(value);\n }\n }\n /** @internal */\n _compositionStart() {\n this._composing = true;\n }\n /** @internal */\n _compositionEnd(value) {\n this._composing = false;\n this._compositionMode && this.onChange(value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: COMPOSITION_BUFFER_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\", host: { listeners: { \"input\": \"$any(this)._handleInput($event.target.value)\", \"blur\": \"onTouched()\", \"compositionstart\": \"$any(this)._compositionStart()\", \"compositionend\": \"$any(this)._compositionEnd($event.target.value)\" } }, providers: [DEFAULT_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]',\n // TODO: vsavkin replace the above selector with the one below it once\n // https://github.com/angular/angular/issues/3011 is implemented\n // selector: '[ngModel],[formControl],[formControlName]',\n host: {\n '(input)': '$any(this)._handleInput($event.target.value)',\n '(blur)': 'onTouched()',\n '(compositionstart)': '$any(this)._compositionStart()',\n '(compositionend)': '$any(this)._compositionEnd($event.target.value)'\n },\n providers: [DEFAULT_VALUE_ACCESSOR]\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [COMPOSITION_BUFFER_MODE]\n }] }]; } });\n\nfunction isEmptyInputValue(value) {\n /**\n * Check if the object is a string or array before evaluating the length attribute.\n * This avoids falsely rejecting objects that contain a custom length attribute.\n * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.\n */\n return value == null ||\n ((typeof value === 'string' || Array.isArray(value)) && value.length === 0);\n}\nfunction hasValidLength(value) {\n // non-strict comparison is intentional, to check for both `null` and `undefined` values\n return value != null && typeof value.length === 'number';\n}\n/**\n * @description\n * An `InjectionToken` for registering additional synchronous validators used with\n * `AbstractControl`s.\n *\n * @see {@link NG_ASYNC_VALIDATORS}\n *\n * @usageNotes\n *\n * ### Providing a custom validator\n *\n * The following example registers a custom validator directive. Adding the validator to the\n * existing collection of validators requires the `multi: true` option.\n *\n * ```typescript\n * @Directive({\n * selector: '[customValidator]',\n * providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]\n * })\n * class CustomValidatorDirective implements Validator {\n * validate(control: AbstractControl): ValidationErrors | null {\n * return { 'custom': true };\n * }\n * }\n * ```\n *\n * @publicApi\n */\nconst NG_VALIDATORS = new InjectionToken('NgValidators');\n/**\n * @description\n * An `InjectionToken` for registering additional asynchronous validators used with\n * `AbstractControl`s.\n *\n * @see {@link NG_VALIDATORS}\n *\n * @usageNotes\n *\n * ### Provide a custom async validator directive\n *\n * The following example implements the `AsyncValidator` interface to create an\n * async validator directive with a custom error key.\n *\n * ```typescript\n * @Directive({\n * selector: '[customAsyncValidator]',\n * providers: [{provide: NG_ASYNC_VALIDATORS, useExisting: CustomAsyncValidatorDirective, multi:\n * true}]\n * })\n * class CustomAsyncValidatorDirective implements AsyncValidator {\n * validate(control: AbstractControl): Promise<ValidationErrors|null> {\n * return Promise.resolve({'custom': true});\n * }\n * }\n * ```\n *\n * @publicApi\n */\nconst NG_ASYNC_VALIDATORS = new InjectionToken('NgAsyncValidators');\n/**\n * A regular expression that matches valid e-mail addresses.\n *\n * At a high level, this regexp matches e-mail addresses of the format `local-part@tld`, where:\n * - `local-part` consists of one or more of the allowed characters (alphanumeric and some\n * punctuation symbols).\n * - `local-part` cannot begin or end with a period (`.`).\n * - `local-part` cannot be longer than 64 characters.\n * - `tld` consists of one or more `labels` separated by periods (`.`). For example `localhost` or\n * `foo.com`.\n * - A `label` consists of one or more of the allowed characters (alphanumeric, dashes (`-`) and\n * periods (`.`)).\n * - A `label` cannot begin or end with a dash (`-`) or a period (`.`).\n * - A `label` cannot be longer than 63 characters.\n * - The whole address cannot be longer than 254 characters.\n *\n * ## Implementation background\n *\n * This regexp was ported over from AngularJS (see there for git history):\n * https://github.com/angular/angular.js/blob/c133ef836/src/ng/directive/input.js#L27\n * It is based on the\n * [WHATWG version](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with\n * some enhancements to incorporate more RFC rules (such as rules related to domain names and the\n * lengths of different parts of the address). The main differences from the WHATWG version are:\n * - Disallow `local-part` to begin or end with a period (`.`).\n * - Disallow `local-part` length to exceed 64 characters.\n * - Disallow total address length to exceed 254 characters.\n *\n * See [this commit](https://github.com/angular/angular.js/commit/f3f5cf72e) for more details.\n */\nconst EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/**\n * @description\n * Provides a set of built-in validators that can be used by form controls.\n *\n * A validator is a function that processes a `FormControl` or collection of\n * controls and returns an error map or null. A null map means that validation has passed.\n *\n * @see [Form Validation](/guide/form-validation)\n *\n * @publicApi\n */\nclass Validators {\n /**\n * @description\n * Validator that requires the control's value to be greater than or equal to the provided number.\n *\n * @usageNotes\n *\n * ### Validate against a minimum of 3\n *\n * ```typescript\n * const control = new FormControl(2, Validators.min(3));\n *\n * console.log(control.errors); // {min: {min: 3, actual: 2}}\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `min` property if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static min(min) {\n return minValidator(min);\n }\n /**\n * @description\n * Validator that requires the control's value to be less than or equal to the provided number.\n *\n * @usageNotes\n *\n * ### Validate against a maximum of 15\n *\n * ```typescript\n * const control = new FormControl(16, Validators.max(15));\n *\n * console.log(control.errors); // {max: {max: 15, actual: 16}}\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `max` property if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static max(max) {\n return maxValidator(max);\n }\n /**\n * @description\n * Validator that requires the control have a non-empty value.\n *\n * @usageNotes\n *\n * ### Validate that the field is non-empty\n *\n * ```typescript\n * const control = new FormControl('', Validators.required);\n *\n * console.log(control.errors); // {required: true}\n * ```\n *\n * @returns An error map with the `required` property\n * if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static required(control) {\n return requiredValidator(control);\n }\n /**\n * @description\n * Validator that requires the control's value be true. This validator is commonly\n * used for required checkboxes.\n *\n * @usageNotes\n *\n * ### Validate that the field value is true\n *\n * ```typescript\n * const control = new FormControl('some value', Validators.requiredTrue);\n *\n * console.log(control.errors); // {required: true}\n * ```\n *\n * @returns An error map that contains the `required` property\n * set to `true` if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static requiredTrue(control) {\n return requiredTrueValidator(control);\n }\n /**\n * @description\n * Validator that requires the control's value pass an email validation test.\n *\n * Tests the value using a [regular\n * expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)\n * pattern suitable for common use cases. The pattern is based on the definition of a valid email\n * address in the [WHATWG HTML\n * specification](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with\n * some enhancements to incorporate more RFC rules (such as rules related to domain names and the\n * lengths of different parts of the address).\n *\n * The differences from the WHATWG version include:\n * - Disallow `local-part` (the part before the `@` symbol) to begin or end with a period (`.`).\n * - Disallow `local-part` to be longer than 64 characters.\n * - Disallow the whole address to be longer than 254 characters.\n *\n * If this pattern does not satisfy your business needs, you can use `Validators.pattern()` to\n * validate the value against a different pattern.\n *\n * @usageNotes\n *\n * ### Validate that the field matches a valid email pattern\n *\n * ```typescript\n * const control = new FormControl('bad@', Validators.email);\n *\n * console.log(control.errors); // {email: true}\n * ```\n *\n * @returns An error map with the `email` property\n * if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static email(control) {\n return emailValidator(control);\n }\n /**\n * @description\n * Validator that requires the length of the control's value to be greater than or equal\n * to the provided minimum length. This validator is also provided by default if you use the\n * the HTML5 `minlength` attribute. Note that the `minLength` validator is intended to be used\n * only for types that have a numeric `length` property, such as strings or arrays. The\n * `minLength` validator logic is also not invoked for values when their `length` property is 0\n * (for example in case of an empty string or an empty array), to support optional controls. You\n * can use the standard `required` validator if empty values should not be considered valid.\n *\n * @usageNotes\n *\n * ### Validate that the field has a minimum of 3 characters\n *\n * ```typescript\n * const control = new FormControl('ng', Validators.minLength(3));\n *\n * console.log(control.errors); // {minlength: {requiredLength: 3, actualLength: 2}}\n * ```\n *\n * ```html\n * <input minlength=\"5\">\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minlength` property if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static minLength(minLength) {\n return minLengthValidator(minLength);\n }\n /**\n * @description\n * Validator that requires the length of the control's value to be less than or equal\n * to the provided maximum length. This validator is also provided by default if you use the\n * the HTML5 `maxlength` attribute. Note that the `maxLength` validator is intended to be used\n * only for types that have a numeric `length` property, such as strings or arrays.\n *\n * @usageNotes\n *\n * ### Validate that the field has maximum of 5 characters\n *\n * ```typescript\n * const control = new FormControl('Angular', Validators.maxLength(5));\n *\n * console.log(control.errors); // {maxlength: {requiredLength: 5, actualLength: 7}}\n * ```\n *\n * ```html\n * <input maxlength=\"5\">\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxlength` property if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static maxLength(maxLength) {\n return maxLengthValidator(maxLength);\n }\n /**\n * @description\n * Validator that requires the control's value to match a regex pattern. This validator is also\n * provided by default if you use the HTML5 `pattern` attribute.\n *\n * @usageNotes\n *\n * ### Validate that the field only contains letters or spaces\n *\n * ```typescript\n * const control = new FormControl('1', Validators.pattern('[a-zA-Z ]*'));\n *\n * console.log(control.errors); // {pattern: {requiredPattern: '^[a-zA-Z ]*$', actualValue: '1'}}\n * ```\n *\n * ```html\n * <input pattern=\"[a-zA-Z ]*\">\n * ```\n *\n * ### Pattern matching with the global or sticky flag\n *\n * `RegExp` objects created with the `g` or `y` flags that are passed into `Validators.pattern`\n * can produce different results on the same input when validations are run consecutively. This is\n * due to how the behavior of `RegExp.prototype.test` is\n * specified in [ECMA-262](https://tc39.es/ecma262/#sec-regexpbuiltinexec)\n * (`RegExp` preserves the index of the last match when the global or sticky flag is used).\n * Due to this behavior, it is recommended that when using\n * `Validators.pattern` you **do not** pass in a `RegExp` object with either the global or sticky\n * flag enabled.\n *\n * ```typescript\n * // Not recommended (since the `g` flag is used)\n * const controlOne = new FormControl('1', Validators.pattern(/foo/g));\n *\n * // Good\n * const controlTwo = new FormControl('1', Validators.pattern(/foo/));\n * ```\n *\n * @param pattern A regular expression to be used as is to test the values, or a string.\n * If a string is passed, the `^` character is prepended and the `$` character is\n * appended to the provided string (if not already present), and the resulting regular\n * expression is used to test the values.\n *\n * @returns A validator function that returns an error map with the\n * `pattern` property if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static pattern(pattern) {\n return patternValidator(pattern);\n }\n /**\n * @description\n * Validator that performs no operation.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static nullValidator(control) {\n return nullValidator(control);\n }\n static compose(validators) {\n return compose(validators);\n }\n /**\n * @description\n * Compose multiple async validators into a single function that returns the union\n * of the individual error objects for the provided control.\n *\n * @returns A validator function that returns an error map with the\n * merged error objects of the async validators if the validation check fails, otherwise `null`.\n *\n * @see {@link updateValueAndValidity()}\n *\n */\n static composeAsync(validators) {\n return composeAsync(validators);\n }\n}\n/**\n * Validator that requires the control's value to be greater than or equal to the provided number.\n * See `Validators.min` for additional information.\n */\nfunction minValidator(min) {\n return (control) => {\n if (isEmptyInputValue(control.value) || isEmptyInputValue(min)) {\n return null; // don't validate empty values to allow optional controls\n }\n const value = parseFloat(control.value);\n // Controls with NaN values after parsing should be treated as not having a\n // minimum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-min\n return !isNaN(value) && value < min ? { 'min': { 'min': min, 'actual': control.value } } : null;\n };\n}\n/**\n * Validator that requires the control's value to be less than or equal to the provided number.\n * See `Validators.max` for additional information.\n */\nfunction maxValidator(max) {\n return (control) => {\n if (isEmptyInputValue(control.value) || isEmptyInputValue(max)) {\n return null; // don't validate empty values to allow optional controls\n }\n const value = parseFloat(control.value);\n // Controls with NaN values after parsing should be treated as not having a\n // maximum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-max\n return !isNaN(value) && value > max ? { 'max': { 'max': max, 'actual': control.value } } : null;\n };\n}\n/**\n * Validator that requires the control have a non-empty value.\n * See `Validators.required` for additional information.\n */\nfunction requiredValidator(control) {\n return isEmptyInputValue(control.value) ? { 'required': true } : null;\n}\n/**\n * Validator that requires the control's value be true. This validator is commonly\n * used for required checkboxes.\n * See `Validators.requiredTrue` for additional information.\n */\nfunction requiredTrueValidator(control) {\n return control.value === true ? null : { 'required': true };\n}\n/**\n * Validator that requires the control's value pass an email validation test.\n * See `Validators.email` for additional information.\n */\nfunction emailValidator(control) {\n if (isEmptyInputValue(control.value)) {\n return null; // don't validate empty values to allow optional controls\n }\n return EMAIL_REGEXP.test(control.value) ? null : { 'email': true };\n}\n/**\n * Validator that requires the length of the control's value to be greater than or equal\n * to the provided minimum length. See `Validators.minLength` for additional information.\n */\nfunction minLengthValidator(minLength) {\n return (control) => {\n if (isEmptyInputValue(control.value) || !hasValidLength(control.value)) {\n // don't validate empty values to allow optional controls\n // don't validate values without `length` property\n return null;\n }\n return control.value.length < minLength ?\n { 'minlength': { 'requiredLength': minLength, 'actualLength': control.value.length } } :\n null;\n };\n}\n/**\n * Validator that requires the length of the control's value to be less than or equal\n * to the provided maximum length. See `Validators.maxLength` for additional information.\n */\nfunction maxLengthValidator(maxLength) {\n return (control) => {\n return hasValidLength(control.value) && control.value.length > maxLength ?\n { 'maxlength': { 'requiredLength': maxLength, 'actualLength': control.value.length } } :\n null;\n };\n}\n/**\n * Validator that requires the control's value to match a regex pattern.\n * See `Validators.pattern` for additional information.\n */\nfunction patternValidator(pattern) {\n if (!pattern)\n return nullValidator;\n let regex;\n let regexStr;\n if (typeof pattern === 'string') {\n regexStr = '';\n if (pattern.charAt(0) !== '^')\n regexStr += '^';\n regexStr += pattern;\n if (pattern.charAt(pattern.length - 1) !== '$')\n regexStr += '$';\n regex = new RegExp(regexStr);\n }\n else {\n regexStr = pattern.toString();\n regex = pattern;\n }\n return (control) => {\n if (isEmptyInputValue(control.value)) {\n return null; // don't validate empty values to allow optional controls\n }\n const value = control.value;\n return regex.test(value) ? null :\n { 'pattern': { 'requiredPattern': regexStr, 'actualValue': value } };\n };\n}\n/**\n * Function that has `ValidatorFn` shape, but performs no operation.\n */\nfunction nullValidator(control) {\n return null;\n}\nfunction isPresent(o) {\n return o != null;\n}\nfunction toObservable(value) {\n const obs = ɵisPromise(value) ? from(value) : value;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !(ɵisSubscribable(obs))) {\n let errorMessage = `Expected async validator to return Promise or Observable.`;\n // A synchronous validator will return object or null.\n if (typeof value === 'object') {\n errorMessage +=\n ' Are you using a synchronous validator where an async validator is expected?';\n }\n throw new ɵRuntimeError(-1101 /* RuntimeErrorCode.WRONG_VALIDATOR_RETURN_TYPE */, errorMessage);\n }\n return obs;\n}\nfunction mergeErrors(arrayOfErrors) {\n let res = {};\n arrayOfErrors.forEach((errors) => {\n res = errors != null ? { ...res, ...errors } : res;\n });\n return Object.keys(res).length === 0 ? null : res;\n}\nfunction executeValidators(control, validators) {\n return validators.map(validator => validator(control));\n}\nfunction isValidatorFn(validator) {\n return !validator.validate;\n}\n/**\n * Given the list of validators that may contain both functions as well as classes, return the list\n * of validator functions (convert validator classes into validator functions). This is needed to\n * have consistent structure in validators list before composing them.\n *\n * @param validators The set of validators that may contain validators both in plain function form\n * as well as represented as a validator class.\n */\nfunction normalizeValidators(validators) {\n return validators.map(validator => {\n return isValidatorFn(validator) ?\n validator :\n ((c) => validator.validate(c));\n });\n}\n/**\n * Merges synchronous validators into a single validator function.\n * See `Validators.compose` for additional information.\n */\nfunction compose(validators) {\n if (!validators)\n return null;\n const presentValidators = validators.filter(isPresent);\n if (presentValidators.length == 0)\n return null;\n return function (control) {\n return mergeErrors(executeValidators(control, presentValidators));\n };\n}\n/**\n * Accepts a list of validators of different possible shapes (`Validator` and `ValidatorFn`),\n * normalizes the list (converts everything to `ValidatorFn`) and merges them into a single\n * validator function.\n */\nfunction composeValidators(validators) {\n return validators != null ? compose(normalizeValidators(validators)) : null;\n}\n/**\n * Merges asynchronous validators into a single validator function.\n * See `Validators.composeAsync` for additional information.\n */\nfunction composeAsync(validators) {\n if (!validators)\n return null;\n const presentValidators = validators.filter(isPresent);\n if (presentValidators.length == 0)\n return null;\n return function (control) {\n const observables = executeValidators(control, presentValidators).map(toObservable);\n return forkJoin(observables).pipe(map(mergeErrors));\n };\n}\n/**\n * Accepts a list of async validators of different possible shapes (`AsyncValidator` and\n * `AsyncValidatorFn`), normalizes the list (converts everything to `AsyncValidatorFn`) and merges\n * them into a single validator function.\n */\nfunction composeAsyncValidators(validators) {\n return validators != null ? composeAsync(normalizeValidators(validators)) :\n null;\n}\n/**\n * Merges raw control validators with a given directive validator and returns the combined list of\n * validators as an array.\n */\nfunction mergeValidators(controlValidators, dirValidator) {\n if (controlValidators === null)\n return [dirValidator];\n return Array.isArray(controlValidators) ? [...controlValidators, dirValidator] :\n [controlValidators, dirValidator];\n}\n/**\n * Retrieves the list of raw synchronous validators attached to a given control.\n */\nfunction getControlValidators(control) {\n return control._rawValidators;\n}\n/**\n * Retrieves the list of raw asynchronous validators attached to a given control.\n */\nfunction getControlAsyncValidators(control) {\n return control._rawAsyncValidators;\n}\n/**\n * Accepts a singleton validator, an array, or null, and returns an array type with the provided\n * validators.\n *\n * @param validators A validator, validators, or null.\n * @returns A validators array.\n */\nfunction makeValidatorsArray(validators) {\n if (!validators)\n return [];\n return Array.isArray(validators) ? validators : [validators];\n}\n/**\n * Determines whether a validator or validators array has a given validator.\n *\n * @param validators The validator or validators to compare against.\n * @param validator The validator to check.\n * @returns Whether the validator is present.\n */\nfunction hasValidator(validators, validator) {\n return Array.isArray(validators) ? validators.includes(validator) : validators === validator;\n}\n/**\n * Combines two arrays of validators into one. If duplicates are provided, only one will be added.\n *\n * @param validators The new validators.\n * @param currentValidators The base array of current validators.\n * @returns An array of validators.\n */\nfunction addValidators(validators, currentValidators) {\n const current = makeValidatorsArray(currentValidators);\n const validatorsToAdd = makeValidatorsArray(validators);\n validatorsToAdd.forEach((v) => {\n // Note: if there are duplicate entries in the new validators array,\n // only the first one would be added to the current list of validators.\n // Duplicate ones would be ignored since `hasValidator` would detect\n // the presence of a validator function and we update the current list in place.\n if (!hasValidator(current, v)) {\n current.push(v);\n }\n });\n return current;\n}\nfunction removeValidators(validators, currentValidators) {\n return makeValidatorsArray(currentValidators).filter(v => !hasValidator(validators, v));\n}\n\n/**\n * @description\n * Base class for control directives.\n *\n * This class is only used internally in the `ReactiveFormsModule` and the `FormsModule`.\n *\n * @publicApi\n */\nclass AbstractControlDirective {\n constructor() {\n /**\n * Set of synchronous validators as they were provided while calling `setValidators` function.\n * @internal\n */\n this._rawValidators = [];\n /**\n * Set of asynchronous validators as they were provided while calling `setAsyncValidators`\n * function.\n * @internal\n */\n this._rawAsyncValidators = [];\n /*\n * The set of callbacks to be invoked when directive instance is being destroyed.\n */\n this._onDestroyCallbacks = [];\n }\n /**\n * @description\n * Reports the value of the control if it is present, otherwise null.\n */\n get value() {\n return this.control ? this.control.value : null;\n }\n /**\n * @description\n * Reports whether the control is valid. A control is considered valid if no\n * validation errors exist with the current value.\n * If the control is not present, null is returned.\n */\n get valid() {\n return this.control ? this.control.valid : null;\n }\n /**\n * @description\n * Reports whether the control is invalid, meaning that an error exists in the input value.\n * If the control is not present, null is returned.\n */\n get invalid() {\n return this.control ? this.control.invalid : null;\n }\n /**\n * @description\n * Reports whether a control is pending, meaning that async validation is occurring and\n * errors are not yet available for the input value. If the control is not present, null is\n * returned.\n */\n get pending() {\n return this.control ? this.control.pending : null;\n }\n /**\n * @description\n * Reports whether the control is disabled, meaning that the control is disabled\n * in the UI and is exempt from validation checks and excluded from aggregate\n * values of ancestor controls. If the control is not present, null is returned.\n */\n get disabled() {\n return this.control ? this.control.disabled : null;\n }\n /**\n * @description\n * Reports whether the control is enabled, meaning that the control is included in ancestor\n * calculations of validity or value. If the control is not present, null is returned.\n */\n get enabled() {\n return this.control ? this.control.enabled : null;\n }\n /**\n * @description\n * Reports the control's validation errors. If the control is not present, null is returned.\n */\n get errors() {\n return this.control ? this.control.errors : null;\n }\n /**\n * @description\n * Reports whether the control is pristine, meaning that the user has not yet changed\n * the value in the UI. If the control is not present, null is returned.\n */\n get pristine() {\n return this.control ? this.control.pristine : null;\n }\n /**\n * @description\n * Reports whether the control is dirty, meaning that the user has changed\n * the value in the UI. If the control is not present, null is returned.\n */\n get dirty() {\n return this.control ? this.control.dirty : null;\n }\n /**\n * @description\n * Reports whether the control is touched, meaning that the user has triggered\n * a `blur` event on it. If the control is not present, null is returned.\n */\n get touched() {\n return this.control ? this.control.touched : null;\n }\n /**\n * @description\n * Reports the validation status of the control. Possible values include:\n * 'VALID', 'INVALID', 'DISABLED', and 'PENDING'.\n * If the control is not present, null is returned.\n */\n get status() {\n return this.control ? this.control.status : null;\n }\n /**\n * @description\n * Reports whether the control is untouched, meaning that the user has not yet triggered\n * a `blur` event on it. If the control is not present, null is returned.\n */\n get untouched() {\n return this.control ? this.control.untouched : null;\n }\n /**\n * @description\n * Returns a multicasting observable that emits a validation status whenever it is\n * calculated for the control. If the control is not present, null is returned.\n */\n get statusChanges() {\n return this.control ? this.control.statusChanges : null;\n }\n /**\n * @description\n * Returns a multicasting observable of value changes for the control that emits every time the\n * value of the control changes in the UI or programmatically.\n * If the control is not present, null is returned.\n */\n get valueChanges() {\n return this.control ? this.control.valueChanges : null;\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return null;\n }\n /**\n * Sets synchronous validators for this directive.\n * @internal\n */\n _setValidators(validators) {\n this._rawValidators = validators || [];\n this._composedValidatorFn = composeValidators(this._rawValidators);\n }\n /**\n * Sets asynchronous validators for this directive.\n * @internal\n */\n _setAsyncValidators(validators) {\n this._rawAsyncValidators = validators || [];\n this._composedAsyncValidatorFn = composeAsyncValidators(this._rawAsyncValidators);\n }\n /**\n * @description\n * Synchronous validator function composed of all the synchronous validators registered with this\n * directive.\n */\n get validator() {\n return this._composedValidatorFn || null;\n }\n /**\n * @description\n * Asynchronous validator function composed of all the asynchronous validators registered with\n * this directive.\n */\n get asyncValidator() {\n return this._composedAsyncValidatorFn || null;\n }\n /**\n * Internal function to register callbacks that should be invoked\n * when directive instance is being destroyed.\n * @internal\n */\n _registerOnDestroy(fn) {\n this._onDestroyCallbacks.push(fn);\n }\n /**\n * Internal function to invoke all registered \"on destroy\" callbacks.\n * Note: calling this function also clears the list of callbacks.\n * @internal\n */\n _invokeOnDestroyCallbacks() {\n this._onDestroyCallbacks.forEach(fn => fn());\n this._onDestroyCallbacks = [];\n }\n /**\n * @description\n * Resets the control with the provided value if the control is present.\n */\n reset(value = undefined) {\n if (this.control)\n this.control.reset(value);\n }\n /**\n * @description\n * Reports whether the control with the given path has the error specified.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * If no path is given, this method checks for the error on the current control.\n *\n * @returns whether the given error is present in the control at the given path.\n *\n * If the control is not present, false is returned.\n */\n hasError(errorCode, path) {\n return this.control ? this.control.hasError(errorCode, path) : false;\n }\n /**\n * @description\n * Reports error data for the control with the given path.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * @returns error data for that particular error. If the control or error is not present,\n * null is returned.\n */\n getError(errorCode, path) {\n return this.control ? this.control.getError(errorCode, path) : null;\n }\n}\n\n/**\n * @description\n * A base class for directives that contain multiple registered instances of `NgControl`.\n * Only used by the forms module.\n *\n * @publicApi\n */\nclass ControlContainer extends AbstractControlDirective {\n /**\n * @description\n * The top-level form directive for the control.\n */\n get formDirective() {\n return null;\n }\n /**\n * @description\n * The path to this group.\n */\n get path() {\n return null;\n }\n}\n\n/**\n * @description\n * A base class that all `FormControl`-based directives extend. It binds a `FormControl`\n * object to a DOM element.\n *\n * @publicApi\n */\nclass NgControl extends AbstractControlDirective {\n constructor() {\n super(...arguments);\n /**\n * @description\n * The parent form for the control.\n *\n * @internal\n */\n this._parent = null;\n /**\n * @description\n * The name for the control\n */\n this.name = null;\n /**\n * @description\n * The value accessor for the control\n */\n this.valueAccessor = null;\n }\n}\n\n// DO NOT REFACTOR!\n// Each status is represented by a separate function to make sure that\n// advanced Closure Compiler optimizations related to property renaming\n// can work correctly.\nclass AbstractControlStatus {\n constructor(cd) {\n this._cd = cd;\n }\n get isTouched() {\n return !!this._cd?.control?.touched;\n }\n get isUntouched() {\n return !!this._cd?.control?.untouched;\n }\n get isPristine() {\n return !!this._cd?.control?.pristine;\n }\n get isDirty() {\n return !!this._cd?.control?.dirty;\n }\n get isValid() {\n return !!this._cd?.control?.valid;\n }\n get isInvalid() {\n return !!this._cd?.control?.invalid;\n }\n get isPending() {\n return !!this._cd?.control?.pending;\n }\n get isSubmitted() {\n // We check for the `submitted` field from `NgForm` and `FormGroupDirective` classes, but\n // we avoid instanceof checks to prevent non-tree-shakable references to those types.\n return !!this._cd?.submitted;\n }\n}\nconst ngControlStatusHost = {\n '[class.ng-untouched]': 'isUntouched',\n '[class.ng-touched]': 'isTouched',\n '[class.ng-pristine]': 'isPristine',\n '[class.ng-dirty]': 'isDirty',\n '[class.ng-valid]': 'isValid',\n '[class.ng-invalid]': 'isInvalid',\n '[class.ng-pending]': 'isPending',\n};\nconst ngGroupStatusHost = {\n ...ngControlStatusHost,\n '[class.ng-submitted]': 'isSubmitted',\n};\n/**\n * @description\n * Directive automatically applied to Angular form controls that sets CSS classes\n * based on control status.\n *\n * @usageNotes\n *\n * ### CSS classes applied\n *\n * The following classes are applied as the properties become true:\n *\n * * ng-valid\n * * ng-invalid\n * * ng-pending\n * * ng-pristine\n * * ng-dirty\n * * ng-untouched\n * * ng-touched\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgControlStatus extends AbstractControlStatus {\n constructor(cd) {\n super(cd);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgControlStatus, deps: [{ token: NgControl, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\", host: { properties: { \"class.ng-untouched\": \"isUntouched\", \"class.ng-touched\": \"isTouched\", \"class.ng-pristine\": \"isPristine\", \"class.ng-dirty\": \"isDirty\", \"class.ng-valid\": \"isValid\", \"class.ng-invalid\": \"isInvalid\", \"class.ng-pending\": \"isPending\" } }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgControlStatus, decorators: [{\n type: Directive,\n args: [{ selector: '[formControlName],[ngModel],[formControl]', host: ngControlStatusHost }]\n }], ctorParameters: function () { return [{ type: NgControl, decorators: [{\n type: Self\n }] }]; } });\n/**\n * @description\n * Directive automatically applied to Angular form groups that sets CSS classes\n * based on control status (valid/invalid/dirty/etc). On groups, this includes the additional\n * class ng-submitted.\n *\n * @see {@link NgControlStatus}\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgControlStatusGroup extends AbstractControlStatus {\n constructor(cd) {\n super(cd);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgControlStatusGroup, deps: [{ token: ControlContainer, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\", host: { properties: { \"class.ng-untouched\": \"isUntouched\", \"class.ng-touched\": \"isTouched\", \"class.ng-pristine\": \"isPristine\", \"class.ng-dirty\": \"isDirty\", \"class.ng-valid\": \"isValid\", \"class.ng-invalid\": \"isInvalid\", \"class.ng-pending\": \"isPending\", \"class.ng-submitted\": \"isSubmitted\" } }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgControlStatusGroup, decorators: [{\n type: Directive,\n args: [{\n selector: '[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]',\n host: ngGroupStatusHost\n }]\n }], ctorParameters: function () { return [{ type: ControlContainer, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }]; } });\n\nconst formControlNameExample = `\n <div [formGroup]=\"myGroup\">\n <input formControlName=\"firstName\">\n </div>\n\n In your class:\n\n this.myGroup = new FormGroup({\n firstName: new FormControl()\n });`;\nconst formGroupNameExample = `\n <div [formGroup]=\"myGroup\">\n <div formGroupName=\"person\">\n <input formControlName=\"firstName\">\n </div>\n </div>\n\n In your class:\n\n this.myGroup = new FormGroup({\n person: new FormGroup({ firstName: new FormControl() })\n });`;\nconst formArrayNameExample = `\n <div [formGroup]=\"myGroup\">\n <div formArrayName=\"cities\">\n <div *ngFor=\"let city of cityArray.controls; index as i\">\n <input [formControlName]=\"i\">\n </div>\n </div>\n </div>\n\n In your class:\n\n this.cityArray = new FormArray([new FormControl('SF')]);\n this.myGroup = new FormGroup({\n cities: this.cityArray\n });`;\nconst ngModelGroupExample = `\n <form>\n <div ngModelGroup=\"person\">\n <input [(ngModel)]=\"person.name\" name=\"firstName\">\n </div>\n </form>`;\nconst ngModelWithFormGroupExample = `\n <div [formGroup]=\"myGroup\">\n <input formControlName=\"firstName\">\n <input [(ngModel)]=\"showMoreControls\" [ngModelOptions]=\"{standalone: true}\">\n </div>\n`;\n\nfunction controlParentException() {\n return new ɵRuntimeError(1050 /* RuntimeErrorCode.FORM_CONTROL_NAME_MISSING_PARENT */, `formControlName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ${formControlNameExample}`);\n}\nfunction ngModelGroupException() {\n return new ɵRuntimeError(1051 /* RuntimeErrorCode.FORM_CONTROL_NAME_INSIDE_MODEL_GROUP */, `formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n that also have a \"form\" prefix: formGroupName, formArrayName, or formGroup.\n\n Option 1: Update the parent to be formGroupName (reactive form strategy)\n\n ${formGroupNameExample}\n\n Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n ${ngModelGroupExample}`);\n}\nfunction missingFormException() {\n return new ɵRuntimeError(1052 /* RuntimeErrorCode.FORM_GROUP_MISSING_INSTANCE */, `formGroup expects a FormGroup instance. Please pass one in.\n\n Example:\n\n ${formControlNameExample}`);\n}\nfunction groupParentException() {\n return new ɵRuntimeError(1053 /* RuntimeErrorCode.FORM_GROUP_NAME_MISSING_PARENT */, `formGroupName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ${formGroupNameExample}`);\n}\nfunction arrayParentException() {\n return new ɵRuntimeError(1054 /* RuntimeErrorCode.FORM_ARRAY_NAME_MISSING_PARENT */, `formArrayName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ${formArrayNameExample}`);\n}\nconst disabledAttrWarning = `\n It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n you. We recommend using this approach to avoid 'changed after checked' errors.\n\n Example:\n // Specify the \\`disabled\\` property at control creation time:\n form = new FormGroup({\n first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n last: new FormControl('Drew', Validators.required)\n });\n\n // Controls can also be enabled/disabled after creation:\n form.get('first')?.enable();\n form.get('last')?.disable();\n`;\nconst asyncValidatorsDroppedWithOptsWarning = `\n It looks like you're constructing using a FormControl with both an options argument and an\n async validators argument. Mixing these arguments will cause your async validators to be dropped.\n You should either put all your validators in the options object, or in separate validators\n arguments. For example:\n\n // Using validators arguments\n fc = new FormControl(42, Validators.required, myAsyncValidator);\n\n // Using AbstractControlOptions\n fc = new FormControl(42, {validators: Validators.required, asyncValidators: myAV});\n\n // Do NOT mix them: async validators will be dropped!\n fc = new FormControl(42, {validators: Validators.required}, /* Oops! */ myAsyncValidator);\n`;\nfunction ngModelWarning(directiveName) {\n return `\n It looks like you're using ngModel on the same form field as ${directiveName}.\n Support for using the ngModel input property and ngModelChange event with\n reactive form directives has been deprecated in Angular v6 and will be removed\n in a future version of Angular.\n\n For more information on this, see our API docs here:\n https://angular.io/api/forms/${directiveName === 'formControl' ? 'FormControlDirective' : 'FormControlName'}#use-with-ngmodel\n `;\n}\nfunction describeKey(isFormGroup, key) {\n return isFormGroup ? `with name: '${key}'` : `at index: ${key}`;\n}\nfunction noControlsError(isFormGroup) {\n return `\n There are no form controls registered with this ${isFormGroup ? 'group' : 'array'} yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n `;\n}\nfunction missingControlError(isFormGroup, key) {\n return `Cannot find form control ${describeKey(isFormGroup, key)}`;\n}\nfunction missingControlValueError(isFormGroup, key) {\n return `Must supply a value for form control ${describeKey(isFormGroup, key)}`;\n}\n\n/**\n * Reports that a control is valid, meaning that no errors exist in the input value.\n *\n * @see {@link status}\n */\nconst VALID = 'VALID';\n/**\n * Reports that a control is invalid, meaning that an error exists in the input value.\n *\n * @see {@link status}\n */\nconst INVALID = 'INVALID';\n/**\n * Reports that a control is pending, meaning that async validation is occurring and\n * errors are not yet available for the input value.\n *\n * @see {@link markAsPending}\n * @see {@link status}\n */\nconst PENDING = 'PENDING';\n/**\n * Reports that a control is disabled, meaning that the control is exempt from ancestor\n * calculations of validity or value.\n *\n * @see {@link markAsDisabled}\n * @see {@link status}\n */\nconst DISABLED = 'DISABLED';\n/**\n * Gets validators from either an options object or given validators.\n */\nfunction pickValidators(validatorOrOpts) {\n return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.validators : validatorOrOpts) || null;\n}\n/**\n * Creates validator function by combining provided validators.\n */\nfunction coerceToValidator(validator) {\n return Array.isArray(validator) ? composeValidators(validator) : validator || null;\n}\n/**\n * Gets async validators from either an options object or given validators.\n */\nfunction pickAsyncValidators(asyncValidator, validatorOrOpts) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (isOptionsObj(validatorOrOpts) && asyncValidator) {\n console.warn(asyncValidatorsDroppedWithOptsWarning);\n }\n }\n return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.asyncValidators : asyncValidator) || null;\n}\n/**\n * Creates async validator function by combining provided async validators.\n */\nfunction coerceToAsyncValidator(asyncValidator) {\n return Array.isArray(asyncValidator) ? composeAsyncValidators(asyncValidator) :\n asyncValidator || null;\n}\nfunction isOptionsObj(validatorOrOpts) {\n return validatorOrOpts != null && !Array.isArray(validatorOrOpts) &&\n typeof validatorOrOpts === 'object';\n}\nfunction assertControlPresent(parent, isGroup, key) {\n const controls = parent.controls;\n const collection = isGroup ? Object.keys(controls) : controls;\n if (!collection.length) {\n throw new ɵRuntimeError(1000 /* RuntimeErrorCode.NO_CONTROLS */, (typeof ngDevMode === 'undefined' || ngDevMode) ? noControlsError(isGroup) : '');\n }\n if (!controls[key]) {\n throw new ɵRuntimeError(1001 /* RuntimeErrorCode.MISSING_CONTROL */, (typeof ngDevMode === 'undefined' || ngDevMode) ? missingControlError(isGroup, key) : '');\n }\n}\nfunction assertAllValuesPresent(control, isGroup, value) {\n control._forEachChild((_, key) => {\n if (value[key] === undefined) {\n throw new ɵRuntimeError(1002 /* RuntimeErrorCode.MISSING_CONTROL_VALUE */, (typeof ngDevMode === 'undefined' || ngDevMode) ? missingControlValueError(isGroup, key) :\n '');\n }\n });\n}\n// clang-format on\n/**\n * This is the base class for `FormControl`, `FormGroup`, and `FormArray`.\n *\n * It provides some of the shared behavior that all controls and groups of controls have, like\n * running validators, calculating status, and resetting state. It also defines the properties\n * that are shared between all sub-classes, like `value`, `valid`, and `dirty`. It shouldn't be\n * instantiated directly.\n *\n * The first type parameter TValue represents the value type of the control (`control.value`).\n * The optional type parameter TRawValue represents the raw value type (`control.getRawValue()`).\n *\n * @see [Forms Guide](/guide/forms)\n * @see [Reactive Forms Guide](/guide/reactive-forms)\n * @see [Dynamic Forms Guide](/guide/dynamic-form)\n *\n * @publicApi\n */\nclass AbstractControl {\n /**\n * Initialize the AbstractControl instance.\n *\n * @param validators The function or array of functions that is used to determine the validity of\n * this control synchronously.\n * @param asyncValidators The function or array of functions that is used to determine validity of\n * this control asynchronously.\n */\n constructor(validators, asyncValidators) {\n /** @internal */\n this._pendingDirty = false;\n /**\n * Indicates that a control has its own pending asynchronous validation in progress.\n *\n * @internal\n */\n this._hasOwnPendingAsyncValidator = false;\n /** @internal */\n this._pendingTouched = false;\n /** @internal */\n this._onCollectionChange = () => { };\n this._parent = null;\n /**\n * A control is `pristine` if the user has not yet changed\n * the value in the UI.\n *\n * @returns True if the user has not yet changed the value in the UI; compare `dirty`.\n * Programmatic changes to a control's value do not mark it dirty.\n */\n this.pristine = true;\n /**\n * True if the control is marked as `touched`.\n *\n * A control is marked `touched` once the user has triggered\n * a `blur` event on it.\n */\n this.touched = false;\n /** @internal */\n this._onDisabledChange = [];\n this._assignValidators(validators);\n this._assignAsyncValidators(asyncValidators);\n }\n /**\n * Returns the function that is used to determine the validity of this control synchronously.\n * If multiple validators have been added, this will be a single composed function.\n * See `Validators.compose()` for additional information.\n */\n get validator() {\n return this._composedValidatorFn;\n }\n set validator(validatorFn) {\n this._rawValidators = this._composedValidatorFn = validatorFn;\n }\n /**\n * Returns the function that is used to determine the validity of this control asynchronously.\n * If multiple validators have been added, this will be a single composed function.\n * See `Validators.compose()` for additional information.\n */\n get asyncValidator() {\n return this._composedAsyncValidatorFn;\n }\n set asyncValidator(asyncValidatorFn) {\n this._rawAsyncValidators = this._composedAsyncValidatorFn = asyncValidatorFn;\n }\n /**\n * The parent control.\n */\n get parent() {\n return this._parent;\n }\n /**\n * A control is `valid` when its `status` is `VALID`.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if the control has passed all of its validation tests,\n * false otherwise.\n */\n get valid() {\n return this.status === VALID;\n }\n /**\n * A control is `invalid` when its `status` is `INVALID`.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if this control has failed one or more of its validation checks,\n * false otherwise.\n */\n get invalid() {\n return this.status === INVALID;\n }\n /**\n * A control is `pending` when its `status` is `PENDING`.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if this control is in the process of conducting a validation check,\n * false otherwise.\n */\n get pending() {\n return this.status == PENDING;\n }\n /**\n * A control is `disabled` when its `status` is `DISABLED`.\n *\n * Disabled controls are exempt from validation checks and\n * are not included in the aggregate value of their ancestor\n * controls.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if the control is disabled, false otherwise.\n */\n get disabled() {\n return this.status === DISABLED;\n }\n /**\n * A control is `enabled` as long as its `status` is not `DISABLED`.\n *\n * @returns True if the control has any status other than 'DISABLED',\n * false if the status is 'DISABLED'.\n *\n * @see {@link AbstractControl.status}\n *\n */\n get enabled() {\n return this.status !== DISABLED;\n }\n /**\n * A control is `dirty` if the user has changed the value\n * in the UI.\n *\n * @returns True if the user has changed the value of this control in the UI; compare `pristine`.\n * Programmatic changes to a control's value do not mark it dirty.\n */\n get dirty() {\n return !this.pristine;\n }\n /**\n * True if the control has not been marked as touched\n *\n * A control is `untouched` if the user has not yet triggered\n * a `blur` event on it.\n */\n get untouched() {\n return !this.touched;\n }\n /**\n * Reports the update strategy of the `AbstractControl` (meaning\n * the event on which the control updates itself).\n * Possible values: `'change'` | `'blur'` | `'submit'`\n * Default value: `'change'`\n */\n get updateOn() {\n return this._updateOn ? this._updateOn : (this.parent ? this.parent.updateOn : 'change');\n }\n /**\n * Sets the synchronous validators that are active on this control. Calling\n * this overwrites any existing synchronous validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * If you want to add a new validator without affecting existing ones, consider\n * using `addValidators()` method instead.\n */\n setValidators(validators) {\n this._assignValidators(validators);\n }\n /**\n * Sets the asynchronous validators that are active on this control. Calling this\n * overwrites any existing asynchronous validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * If you want to add a new validator without affecting existing ones, consider\n * using `addAsyncValidators()` method instead.\n */\n setAsyncValidators(validators) {\n this._assignAsyncValidators(validators);\n }\n /**\n * Add a synchronous validator or validators to this control, without affecting other validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * Adding a validator that already exists will have no effect. If duplicate validator functions\n * are present in the `validators` array, only the first instance would be added to a form\n * control.\n *\n * @param validators The new validator function or functions to add to this control.\n */\n addValidators(validators) {\n this.setValidators(addValidators(validators, this._rawValidators));\n }\n /**\n * Add an asynchronous validator or validators to this control, without affecting other\n * validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * Adding a validator that already exists will have no effect.\n *\n * @param validators The new asynchronous validator function or functions to add to this control.\n */\n addAsyncValidators(validators) {\n this.setAsyncValidators(addValidators(validators, this._rawAsyncValidators));\n }\n /**\n * Remove a synchronous validator from this control, without affecting other validators.\n * Validators are compared by function reference; you must pass a reference to the exact same\n * validator function as the one that was originally set. If a provided validator is not found,\n * it is ignored.\n *\n * @usageNotes\n *\n * ### Reference to a ValidatorFn\n *\n * ```\n * // Reference to the RequiredValidator\n * const ctrl = new FormControl<string | null>('', Validators.required);\n * ctrl.removeValidators(Validators.required);\n *\n * // Reference to anonymous function inside MinValidator\n * const minValidator = Validators.min(3);\n * const ctrl = new FormControl<string | null>('', minValidator);\n * expect(ctrl.hasValidator(minValidator)).toEqual(true)\n * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)\n *\n * ctrl.removeValidators(minValidator);\n * ```\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * @param validators The validator or validators to remove.\n */\n removeValidators(validators) {\n this.setValidators(removeValidators(validators, this._rawValidators));\n }\n /**\n * Remove an asynchronous validator from this control, without affecting other validators.\n * Validators are compared by function reference; you must pass a reference to the exact same\n * validator function as the one that was originally set. If a provided validator is not found, it\n * is ignored.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * @param validators The asynchronous validator or validators to remove.\n */\n removeAsyncValidators(validators) {\n this.setAsyncValidators(removeValidators(validators, this._rawAsyncValidators));\n }\n /**\n * Check whether a synchronous validator function is present on this control. The provided\n * validator must be a reference to the exact same function that was provided.\n *\n * @usageNotes\n *\n * ### Reference to a ValidatorFn\n *\n * ```\n * // Reference to the RequiredValidator\n * const ctrl = new FormControl<number | null>(0, Validators.required);\n * expect(ctrl.hasValidator(Validators.required)).toEqual(true)\n *\n * // Reference to anonymous function inside MinValidator\n * const minValidator = Validators.min(3);\n * const ctrl = new FormControl<number | null>(0, minValidator);\n * expect(ctrl.hasValidator(minValidator)).toEqual(true)\n * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)\n * ```\n *\n * @param validator The validator to check for presence. Compared by function reference.\n * @returns Whether the provided validator was found on this control.\n */\n hasValidator(validator) {\n return hasValidator(this._rawValidators, validator);\n }\n /**\n * Check whether an asynchronous validator function is present on this control. The provided\n * validator must be a reference to the exact same function that was provided.\n *\n * @param validator The asynchronous validator to check for presence. Compared by function\n * reference.\n * @returns Whether the provided asynchronous validator was found on this control.\n */\n hasAsyncValidator(validator) {\n return hasValidator(this._rawAsyncValidators, validator);\n }\n /**\n * Empties out the synchronous validator list.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n */\n clearValidators() {\n this.validator = null;\n }\n /**\n * Empties out the async validator list.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n */\n clearAsyncValidators() {\n this.asyncValidator = null;\n }\n /**\n * Marks the control as `touched`. A control is touched by focus and\n * blur events that do not change the value.\n *\n * @see {@link markAsUntouched()}\n * @see {@link markAsDirty()}\n * @see {@link markAsPristine()}\n *\n * @param opts Configuration options that determine how the control propagates changes\n * and emits events after marking is applied.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n */\n markAsTouched(opts = {}) {\n this.touched = true;\n if (this._parent && !opts.onlySelf) {\n this._parent.markAsTouched(opts);\n }\n }\n /**\n * Marks the control and all its descendant controls as `touched`.\n * @see {@link markAsTouched()}\n */\n markAllAsTouched() {\n this.markAsTouched({ onlySelf: true });\n this._forEachChild((control) => control.markAllAsTouched());\n }\n /**\n * Marks the control as `untouched`.\n *\n * If the control has any children, also marks all children as `untouched`\n * and recalculates the `touched` status of all parent controls.\n *\n * @see {@link markAsTouched()}\n * @see {@link markAsDirty()}\n * @see {@link markAsPristine()}\n *\n * @param opts Configuration options that determine how the control propagates changes\n * and emits events after the marking is applied.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n */\n markAsUntouched(opts = {}) {\n this.touched = false;\n this._pendingTouched = false;\n this._forEachChild((control) => {\n control.markAsUntouched({ onlySelf: true });\n });\n if (this._parent && !opts.onlySelf) {\n this._parent._updateTouched(opts);\n }\n }\n /**\n * Marks the control as `dirty`. A control becomes dirty when\n * the control's value is changed through the UI; compare `markAsTouched`.\n *\n * @see {@link markAsTouched()}\n * @see {@link markAsUntouched()}\n * @see {@link markAsPristine()}\n *\n * @param opts Configuration options that determine how the control propagates changes\n * and emits events after marking is applied.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n */\n markAsDirty(opts = {}) {\n this.pristine = false;\n if (this._parent && !opts.onlySelf) {\n this._parent.markAsDirty(opts);\n }\n }\n /**\n * Marks the control as `pristine`.\n *\n * If the control has any children, marks all children as `pristine`,\n * and recalculates the `pristine` status of all parent\n * controls.\n *\n * @see {@link markAsTouched()}\n * @see {@link markAsUntouched()}\n * @see {@link markAsDirty()}\n *\n * @param opts Configuration options that determine how the control emits events after\n * marking is applied.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n */\n markAsPristine(opts = {}) {\n this.pristine = true;\n this._pendingDirty = false;\n this._forEachChild((control) => {\n control.markAsPristine({ onlySelf: true });\n });\n if (this._parent && !opts.onlySelf) {\n this._parent._updatePristine(opts);\n }\n }\n /**\n * Marks the control as `pending`.\n *\n * A control is pending while the control performs async validation.\n *\n * @see {@link AbstractControl.status}\n *\n * @param opts Configuration options that determine how the control propagates changes and\n * emits events after marking is applied.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n * * `emitEvent`: When true or not supplied (the default), the `statusChanges`\n * observable emits an event with the latest status the control is marked pending.\n * When false, no events are emitted.\n *\n */\n markAsPending(opts = {}) {\n this.status = PENDING;\n if (opts.emitEvent !== false) {\n this.statusChanges.emit(this.status);\n }\n if (this._parent && !opts.onlySelf) {\n this._parent.markAsPending(opts);\n }\n }\n /**\n * Disables the control. This means the control is exempt from validation checks and\n * excluded from the aggregate value of any parent. Its status is `DISABLED`.\n *\n * If the control has children, all children are also disabled.\n *\n * @see {@link AbstractControl.status}\n *\n * @param opts Configuration options that determine how the control propagates\n * changes and emits events after the control is disabled.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is disabled.\n * When false, no events are emitted.\n */\n disable(opts = {}) {\n // If parent has been marked artificially dirty we don't want to re-calculate the\n // parent's dirtiness based on the children.\n const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);\n this.status = DISABLED;\n this.errors = null;\n this._forEachChild((control) => {\n control.disable({ ...opts, onlySelf: true });\n });\n this._updateValue();\n if (opts.emitEvent !== false) {\n this.valueChanges.emit(this.value);\n this.statusChanges.emit(this.status);\n }\n this._updateAncestors({ ...opts, skipPristineCheck });\n this._onDisabledChange.forEach((changeFn) => changeFn(true));\n }\n /**\n * Enables the control. This means the control is included in validation checks and\n * the aggregate value of its parent. Its status recalculates based on its value and\n * its validators.\n *\n * By default, if the control has children, all children are enabled.\n *\n * @see {@link AbstractControl.status}\n *\n * @param opts Configure options that control how the control propagates changes and\n * emits events when marked as untouched\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is enabled.\n * When false, no events are emitted.\n */\n enable(opts = {}) {\n // If parent has been marked artificially dirty we don't want to re-calculate the\n // parent's dirtiness based on the children.\n const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);\n this.status = VALID;\n this._forEachChild((control) => {\n control.enable({ ...opts, onlySelf: true });\n });\n this.updateValueAndValidity({ onlySelf: true, emitEvent: opts.emitEvent });\n this._updateAncestors({ ...opts, skipPristineCheck });\n this._onDisabledChange.forEach((changeFn) => changeFn(false));\n }\n _updateAncestors(opts) {\n if (this._parent && !opts.onlySelf) {\n this._parent.updateValueAndValidity(opts);\n if (!opts.skipPristineCheck) {\n this._parent._updatePristine();\n }\n this._parent._updateTouched();\n }\n }\n /**\n * Sets the parent of the control\n *\n * @param parent The new parent.\n */\n setParent(parent) {\n this._parent = parent;\n }\n /**\n * The raw value of this control. For most control implementations, the raw value will include\n * disabled children.\n */\n getRawValue() {\n return this.value;\n }\n /**\n * Recalculates the value and validation status of the control.\n *\n * By default, it also updates the value and validity of its ancestors.\n *\n * @param opts Configuration options determine how the control propagates changes and emits events\n * after updates and validity checks are applied.\n * * `onlySelf`: When true, only update this control. When false or not supplied,\n * update all direct ancestors. Default is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is updated.\n * When false, no events are emitted.\n */\n updateValueAndValidity(opts = {}) {\n this._setInitialStatus();\n this._updateValue();\n if (this.enabled) {\n this._cancelExistingSubscription();\n this.errors = this._runValidator();\n this.status = this._calculateStatus();\n if (this.status === VALID || this.status === PENDING) {\n this._runAsyncValidator(opts.emitEvent);\n }\n }\n if (opts.emitEvent !== false) {\n this.valueChanges.emit(this.value);\n this.statusChanges.emit(this.status);\n }\n if (this._parent && !opts.onlySelf) {\n this._parent.updateValueAndValidity(opts);\n }\n }\n /** @internal */\n _updateTreeValidity(opts = { emitEvent: true }) {\n this._forEachChild((ctrl) => ctrl._updateTreeValidity(opts));\n this.updateValueAndValidity({ onlySelf: true, emitEvent: opts.emitEvent });\n }\n _setInitialStatus() {\n this.status = this._allControlsDisabled() ? DISABLED : VALID;\n }\n _runValidator() {\n return this.validator ? this.validator(this) : null;\n }\n _runAsyncValidator(emitEvent) {\n if (this.asyncValidator) {\n this.status = PENDING;\n this._hasOwnPendingAsyncValidator = true;\n const obs = toObservable(this.asyncValidator(this));\n this._asyncValidationSubscription = obs.subscribe((errors) => {\n this._hasOwnPendingAsyncValidator = false;\n // This will trigger the recalculation of the validation status, which depends on\n // the state of the asynchronous validation (whether it is in progress or not). So, it is\n // necessary that we have updated the `_hasOwnPendingAsyncValidator` boolean flag first.\n this.setErrors(errors, { emitEvent });\n });\n }\n }\n _cancelExistingSubscription() {\n if (this._asyncValidationSubscription) {\n this._asyncValidationSubscription.unsubscribe();\n this._hasOwnPendingAsyncValidator = false;\n }\n }\n /**\n * Sets errors on a form control when running validations manually, rather than automatically.\n *\n * Calling `setErrors` also updates the validity of the parent control.\n *\n * @param opts Configuration options that determine how the control propagates\n * changes and emits events after the control errors are set.\n * * `emitEvent`: When true or not supplied (the default), the `statusChanges`\n * observable emits an event after the errors are set.\n *\n * @usageNotes\n *\n * ### Manually set the errors for a control\n *\n * ```\n * const login = new FormControl('someLogin');\n * login.setErrors({\n * notUnique: true\n * });\n *\n * expect(login.valid).toEqual(false);\n * expect(login.errors).toEqual({ notUnique: true });\n *\n * login.setValue('someOtherLogin');\n *\n * expect(login.valid).toEqual(true);\n * ```\n */\n setErrors(errors, opts = {}) {\n this.errors = errors;\n this._updateControlsErrors(opts.emitEvent !== false);\n }\n /**\n * Retrieves a child control given the control's name or path.\n *\n * @param path A dot-delimited string or array of string/number values that define the path to the\n * control. If a string is provided, passing it as a string literal will result in improved type\n * information. Likewise, if an array is provided, passing it `as const` will cause improved type\n * information to be available.\n *\n * @usageNotes\n * ### Retrieve a nested control\n *\n * For example, to get a `name` control nested within a `person` sub-group:\n *\n * * `this.form.get('person.name');`\n *\n * -OR-\n *\n * * `this.form.get(['person', 'name'] as const);` // `as const` gives improved typings\n *\n * ### Retrieve a control in a FormArray\n *\n * When accessing an element inside a FormArray, you can use an element index.\n * For example, to get a `price` control from the first element in an `items` array you can use:\n *\n * * `this.form.get('items.0.price');`\n *\n * -OR-\n *\n * * `this.form.get(['items', 0, 'price']);`\n */\n get(path) {\n let currPath = path;\n if (currPath == null)\n return null;\n if (!Array.isArray(currPath))\n currPath = currPath.split('.');\n if (currPath.length === 0)\n return null;\n return currPath.reduce((control, name) => control && control._find(name), this);\n }\n /**\n * @description\n * Reports error data for the control with the given path.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * @returns error data for that particular error. If the control or error is not present,\n * null is returned.\n */\n getError(errorCode, path) {\n const control = path ? this.get(path) : this;\n return control && control.errors ? control.errors[errorCode] : null;\n }\n /**\n * @description\n * Reports whether the control with the given path has the error specified.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * If no path is given, this method checks for the error on the current control.\n *\n * @returns whether the given error is present in the control at the given path.\n *\n * If the control is not present, false is returned.\n */\n hasError(errorCode, path) {\n return !!this.getError(errorCode, path);\n }\n /**\n * Retrieves the top-level ancestor of this control.\n */\n get root() {\n let x = this;\n while (x._parent) {\n x = x._parent;\n }\n return x;\n }\n /** @internal */\n _updateControlsErrors(emitEvent) {\n this.status = this._calculateStatus();\n if (emitEvent) {\n this.statusChanges.emit(this.status);\n }\n if (this._parent) {\n this._parent._updateControlsErrors(emitEvent);\n }\n }\n /** @internal */\n _initObservables() {\n this.valueChanges = new EventEmitter();\n this.statusChanges = new EventEmitter();\n }\n _calculateStatus() {\n if (this._allControlsDisabled())\n return DISABLED;\n if (this.errors)\n return INVALID;\n if (this._hasOwnPendingAsyncValidator || this._anyControlsHaveStatus(PENDING))\n return PENDING;\n if (this._anyControlsHaveStatus(INVALID))\n return INVALID;\n return VALID;\n }\n /** @internal */\n _anyControlsHaveStatus(status) {\n return this._anyControls((control) => control.status === status);\n }\n /** @internal */\n _anyControlsDirty() {\n return this._anyControls((control) => control.dirty);\n }\n /** @internal */\n _anyControlsTouched() {\n return this._anyControls((control) => control.touched);\n }\n /** @internal */\n _updatePristine(opts = {}) {\n this.pristine = !this._anyControlsDirty();\n if (this._parent && !opts.onlySelf) {\n this._parent._updatePristine(opts);\n }\n }\n /** @internal */\n _updateTouched(opts = {}) {\n this.touched = this._anyControlsTouched();\n if (this._parent && !opts.onlySelf) {\n this._parent._updateTouched(opts);\n }\n }\n /** @internal */\n _registerOnCollectionChange(fn) {\n this._onCollectionChange = fn;\n }\n /** @internal */\n _setUpdateStrategy(opts) {\n if (isOptionsObj(opts) && opts.updateOn != null) {\n this._updateOn = opts.updateOn;\n }\n }\n /**\n * Check to see if parent has been marked artificially dirty.\n *\n * @internal\n */\n _parentMarkedDirty(onlySelf) {\n const parentDirty = this._parent && this._parent.dirty;\n return !onlySelf && !!parentDirty && !this._parent._anyControlsDirty();\n }\n /** @internal */\n _find(name) {\n return null;\n }\n /**\n * Internal implementation of the `setValidators` method. Needs to be separated out into a\n * different method, because it is called in the constructor and it can break cases where\n * a control is extended.\n */\n _assignValidators(validators) {\n this._rawValidators = Array.isArray(validators) ? validators.slice() : validators;\n this._composedValidatorFn = coerceToValidator(this._rawValidators);\n }\n /**\n * Internal implementation of the `setAsyncValidators` method. Needs to be separated out into a\n * different method, because it is called in the constructor and it can break cases where\n * a control is extended.\n */\n _assignAsyncValidators(validators) {\n this._rawAsyncValidators = Array.isArray(validators) ? validators.slice() : validators;\n this._composedAsyncValidatorFn = coerceToAsyncValidator(this._rawAsyncValidators);\n }\n}\n\n/**\n * Tracks the value and validity state of a group of `FormControl` instances.\n *\n * A `FormGroup` aggregates the values of each child `FormControl` into one object,\n * with each control name as the key. It calculates its status by reducing the status values\n * of its children. For example, if one of the controls in a group is invalid, the entire\n * group becomes invalid.\n *\n * `FormGroup` is one of the four fundamental building blocks used to define forms in Angular,\n * along with `FormControl`, `FormArray`, and `FormRecord`.\n *\n * When instantiating a `FormGroup`, pass in a collection of child controls as the first\n * argument. The key for each child registers the name for the control.\n *\n * `FormGroup` is intended for use cases where the keys are known ahead of time.\n * If you need to dynamically add and remove controls, use {@link FormRecord} instead.\n *\n * `FormGroup` accepts an optional type parameter `TControl`, which is an object type with inner\n * control types as values.\n *\n * @usageNotes\n *\n * ### Create a form group with 2 controls\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl('Nancy', Validators.minLength(2)),\n * last: new FormControl('Drew'),\n * });\n *\n * console.log(form.value); // {first: 'Nancy', last; 'Drew'}\n * console.log(form.status); // 'VALID'\n * ```\n *\n * ### The type argument, and optional controls\n *\n * `FormGroup` accepts one generic argument, which is an object containing its inner controls.\n * This type will usually be inferred automatically, but you can always specify it explicitly if you\n * wish.\n *\n * If you have controls that are optional (i.e. they can be removed, you can use the `?` in the\n * type):\n *\n * ```\n * const form = new FormGroup<{\n * first: FormControl<string|null>,\n * middle?: FormControl<string|null>, // Middle name is optional.\n * last: FormControl<string|null>,\n * }>({\n * first: new FormControl('Nancy'),\n * last: new FormControl('Drew'),\n * });\n * ```\n *\n * ### Create a form group with a group-level validator\n *\n * You include group-level validators as the second arg, or group-level async\n * validators as the third arg. These come in handy when you want to perform validation\n * that considers the value of more than one child control.\n *\n * ```\n * const form = new FormGroup({\n * password: new FormControl('', Validators.minLength(2)),\n * passwordConfirm: new FormControl('', Validators.minLength(2)),\n * }, passwordMatchValidator);\n *\n *\n * function passwordMatchValidator(g: FormGroup) {\n * return g.get('password').value === g.get('passwordConfirm').value\n * ? null : {'mismatch': true};\n * }\n * ```\n *\n * Like `FormControl` instances, you choose to pass in\n * validators and async validators as part of an options object.\n *\n * ```\n * const form = new FormGroup({\n * password: new FormControl('')\n * passwordConfirm: new FormControl('')\n * }, { validators: passwordMatchValidator, asyncValidators: otherValidator });\n * ```\n *\n * ### Set the updateOn property for all controls in a form group\n *\n * The options object is used to set a default value for each child\n * control's `updateOn` property. If you set `updateOn` to `'blur'` at the\n * group level, all child controls default to 'blur', unless the child\n * has explicitly specified a different `updateOn` value.\n *\n * ```ts\n * const c = new FormGroup({\n * one: new FormControl()\n * }, { updateOn: 'blur' });\n * ```\n *\n * ### Using a FormGroup with optional controls\n *\n * It is possible to have optional controls in a FormGroup. An optional control can be removed later\n * using `removeControl`, and can be omitted when calling `reset`. Optional controls must be\n * declared optional in the group's type.\n *\n * ```ts\n * const c = new FormGroup<{one?: FormControl<string>}>({\n * one: new FormControl('')\n * });\n * ```\n *\n * Notice that `c.value.one` has type `string|null|undefined`. This is because calling `c.reset({})`\n * without providing the optional key `one` will cause it to become `null`.\n *\n * @publicApi\n */\nclass FormGroup extends AbstractControl {\n /**\n * Creates a new `FormGroup` instance.\n *\n * @param controls A collection of child controls. The key for each child is the name\n * under which it is registered.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or an `AbstractControlOptions` object that contains validation functions\n * and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator functions\n *\n */\n constructor(controls, validatorOrOpts, asyncValidator) {\n super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));\n this.controls = controls;\n this._initObservables();\n this._setUpdateStrategy(validatorOrOpts);\n this._setUpControls();\n this.updateValueAndValidity({\n onlySelf: true,\n // If `asyncValidator` is present, it will trigger control status change from `PENDING` to\n // `VALID` or `INVALID`. The status should be broadcasted via the `statusChanges` observable,\n // so we set `emitEvent` to `true` to allow that during the control creation process.\n emitEvent: !!this.asyncValidator\n });\n }\n registerControl(name, control) {\n if (this.controls[name])\n return this.controls[name];\n this.controls[name] = control;\n control.setParent(this);\n control._registerOnCollectionChange(this._onCollectionChange);\n return control;\n }\n addControl(name, control, options = {}) {\n this.registerControl(name, control);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n this._onCollectionChange();\n }\n /**\n * Remove a control from this group. In a strongly-typed group, required controls cannot be\n * removed.\n *\n * This method also updates the value and validity of the control.\n *\n * @param name The control name to remove from the collection\n * @param options Specifies whether this FormGroup instance should emit events after a\n * control is removed.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * removed. When false, no events are emitted.\n */\n removeControl(name, options = {}) {\n if (this.controls[name])\n this.controls[name]._registerOnCollectionChange(() => { });\n delete (this.controls[name]);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n this._onCollectionChange();\n }\n setControl(name, control, options = {}) {\n if (this.controls[name])\n this.controls[name]._registerOnCollectionChange(() => { });\n delete (this.controls[name]);\n if (control)\n this.registerControl(name, control);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n this._onCollectionChange();\n }\n contains(controlName) {\n return this.controls.hasOwnProperty(controlName) && this.controls[controlName].enabled;\n }\n /**\n * Sets the value of the `FormGroup`. It accepts an object that matches\n * the structure of the group, with control names as keys.\n *\n * @usageNotes\n * ### Set the complete value for the form group\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl(),\n * last: new FormControl()\n * });\n *\n * console.log(form.value); // {first: null, last: null}\n *\n * form.setValue({first: 'Nancy', last: 'Drew'});\n * console.log(form.value); // {first: 'Nancy', last: 'Drew'}\n * ```\n *\n * @throws When strict checks fail, such as setting the value of a control\n * that doesn't exist or if you exclude a value of a control that does exist.\n *\n * @param value The new value for the control that matches the structure of the group.\n * @param options Configuration options that determine how the control propagates changes\n * and emits events after the value changes.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is\n * false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control value is updated.\n * When false, no events are emitted.\n */\n setValue(value, options = {}) {\n assertAllValuesPresent(this, true, value);\n Object.keys(value).forEach(name => {\n assertControlPresent(this, true, name);\n this.controls[name].setValue(value[name], { onlySelf: true, emitEvent: options.emitEvent });\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Patches the value of the `FormGroup`. It accepts an object with control\n * names as keys, and does its best to match the values to the correct controls\n * in the group.\n *\n * It accepts both super-sets and sub-sets of the group without throwing an error.\n *\n * @usageNotes\n * ### Patch the value for a form group\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl(),\n * last: new FormControl()\n * });\n * console.log(form.value); // {first: null, last: null}\n *\n * form.patchValue({first: 'Nancy'});\n * console.log(form.value); // {first: 'Nancy', last: null}\n * ```\n *\n * @param value The object that matches the structure of the group.\n * @param options Configuration options that determine how the control propagates changes and\n * emits events after the value is patched.\n * * `onlySelf`: When true, each change only affects this control and not its parent. Default is\n * true.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control value\n * is updated. When false, no events are emitted. The configuration options are passed to\n * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method.\n */\n patchValue(value, options = {}) {\n // Even though the `value` argument type doesn't allow `null` and `undefined` values, the\n // `patchValue` can be called recursively and inner data structures might have these values, so\n // we just ignore such cases when a field containing FormGroup instance receives `null` or\n // `undefined` as a value.\n if (value == null /* both `null` and `undefined` */)\n return;\n Object.keys(value).forEach(name => {\n // The compiler cannot see through the uninstantiated conditional type of `this.controls`, so\n // `as any` is required.\n const control = this.controls[name];\n if (control) {\n control.patchValue(\n /* Guaranteed to be present, due to the outer forEach. */ value[name], { onlySelf: true, emitEvent: options.emitEvent });\n }\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Resets the `FormGroup`, marks all descendants `pristine` and `untouched` and sets\n * the value of all descendants to their default values, or null if no defaults were provided.\n *\n * You reset to a specific form state by passing in a map of states\n * that matches the structure of your form, with control names as keys. The state\n * is a standalone value or a form state object with both a value and a disabled\n * status.\n *\n * @param value Resets the control with an initial value,\n * or an object that defines the initial value and disabled state.\n *\n * @param options Configuration options that determine how the control propagates changes\n * and emits events when the group is reset.\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is\n * false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is reset.\n * When false, no events are emitted.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n *\n * @usageNotes\n *\n * ### Reset the form group values\n *\n * ```ts\n * const form = new FormGroup({\n * first: new FormControl('first name'),\n * last: new FormControl('last name')\n * });\n *\n * console.log(form.value); // {first: 'first name', last: 'last name'}\n *\n * form.reset({ first: 'name', last: 'last name' });\n *\n * console.log(form.value); // {first: 'name', last: 'last name'}\n * ```\n *\n * ### Reset the form group values and disabled status\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl('first name'),\n * last: new FormControl('last name')\n * });\n *\n * form.reset({\n * first: {value: 'name', disabled: true},\n * last: 'last'\n * });\n *\n * console.log(form.value); // {last: 'last'}\n * console.log(form.get('first').status); // 'DISABLED'\n * ```\n */\n reset(value = {}, options = {}) {\n this._forEachChild((control, name) => {\n control.reset(value ? value[name] : null, { onlySelf: true, emitEvent: options.emitEvent });\n });\n this._updatePristine(options);\n this._updateTouched(options);\n this.updateValueAndValidity(options);\n }\n /**\n * The aggregate value of the `FormGroup`, including any disabled controls.\n *\n * Retrieves all values regardless of disabled status.\n */\n getRawValue() {\n return this._reduceChildren({}, (acc, control, name) => {\n acc[name] = control.getRawValue();\n return acc;\n });\n }\n /** @internal */\n _syncPendingControls() {\n let subtreeUpdated = this._reduceChildren(false, (updated, child) => {\n return child._syncPendingControls() ? true : updated;\n });\n if (subtreeUpdated)\n this.updateValueAndValidity({ onlySelf: true });\n return subtreeUpdated;\n }\n /** @internal */\n _forEachChild(cb) {\n Object.keys(this.controls).forEach(key => {\n // The list of controls can change (for ex. controls might be removed) while the loop\n // is running (as a result of invoking Forms API in `valueChanges` subscription), so we\n // have to null check before invoking the callback.\n const control = this.controls[key];\n control && cb(control, key);\n });\n }\n /** @internal */\n _setUpControls() {\n this._forEachChild((control) => {\n control.setParent(this);\n control._registerOnCollectionChange(this._onCollectionChange);\n });\n }\n /** @internal */\n _updateValue() {\n this.value = this._reduceValue();\n }\n /** @internal */\n _anyControls(condition) {\n for (const [controlName, control] of Object.entries(this.controls)) {\n if (this.contains(controlName) && condition(control)) {\n return true;\n }\n }\n return false;\n }\n /** @internal */\n _reduceValue() {\n let acc = {};\n return this._reduceChildren(acc, (acc, control, name) => {\n if (control.enabled || this.disabled) {\n acc[name] = control.value;\n }\n return acc;\n });\n }\n /** @internal */\n _reduceChildren(initValue, fn) {\n let res = initValue;\n this._forEachChild((control, name) => {\n res = fn(res, control, name);\n });\n return res;\n }\n /** @internal */\n _allControlsDisabled() {\n for (const controlName of Object.keys(this.controls)) {\n if (this.controls[controlName].enabled) {\n return false;\n }\n }\n return Object.keys(this.controls).length > 0 || this.disabled;\n }\n /** @internal */\n _find(name) {\n return this.controls.hasOwnProperty(name) ?\n this.controls[name] :\n null;\n }\n}\nconst UntypedFormGroup = FormGroup;\n/**\n * @description\n * Asserts that the given control is an instance of `FormGroup`\n *\n * @publicApi\n */\nconst isFormGroup = (control) => control instanceof FormGroup;\n/**\n * Tracks the value and validity state of a collection of `FormControl` instances, each of which has\n * the same value type.\n *\n * `FormRecord` is very similar to {@link FormGroup}, except it can be used with a dynamic keys,\n * with controls added and removed as needed.\n *\n * `FormRecord` accepts one generic argument, which describes the type of the controls it contains.\n *\n * @usageNotes\n *\n * ```\n * let numbers = new FormRecord({bill: new FormControl('415-123-456')});\n * numbers.addControl('bob', new FormControl('415-234-567'));\n * numbers.removeControl('bill');\n * ```\n *\n * @publicApi\n */\nclass FormRecord extends FormGroup {\n}\n/**\n * @description\n * Asserts that the given control is an instance of `FormRecord`\n *\n * @publicApi\n */\nconst isFormRecord = (control) => control instanceof FormRecord;\n\n/**\n * Token to provide to allow SetDisabledState to always be called when a CVA is added, regardless of\n * whether the control is disabled or enabled.\n *\n * @see {@link FormsModule#withconfig}\n */\nconst CALL_SET_DISABLED_STATE = new InjectionToken('CallSetDisabledState', { providedIn: 'root', factory: () => setDisabledStateDefault });\n/**\n * Whether to use the fixed setDisabledState behavior by default.\n */\nconst setDisabledStateDefault = 'always';\nfunction controlPath(name, parent) {\n return [...parent.path, name];\n}\n/**\n * Links a Form control and a Form directive by setting up callbacks (such as `onChange`) on both\n * instances. This function is typically invoked when form directive is being initialized.\n *\n * @param control Form control instance that should be linked.\n * @param dir Directive that should be linked with a given control.\n */\nfunction setUpControl(control, dir, callSetDisabledState = setDisabledStateDefault) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!control)\n _throwError(dir, 'Cannot find control with');\n if (!dir.valueAccessor)\n _throwMissingValueAccessorError(dir);\n }\n setUpValidators(control, dir);\n dir.valueAccessor.writeValue(control.value);\n // The legacy behavior only calls the CVA's `setDisabledState` if the control is disabled.\n // If the `callSetDisabledState` option is set to `always`, then this bug is fixed and\n // the method is always called.\n if (control.disabled || callSetDisabledState === 'always') {\n dir.valueAccessor.setDisabledState?.(control.disabled);\n }\n setUpViewChangePipeline(control, dir);\n setUpModelChangePipeline(control, dir);\n setUpBlurPipeline(control, dir);\n setUpDisabledChangeHandler(control, dir);\n}\n/**\n * Reverts configuration performed by the `setUpControl` control function.\n * Effectively disconnects form control with a given form directive.\n * This function is typically invoked when corresponding form directive is being destroyed.\n *\n * @param control Form control which should be cleaned up.\n * @param dir Directive that should be disconnected from a given control.\n * @param validateControlPresenceOnChange Flag that indicates whether onChange handler should\n * contain asserts to verify that it's not called once directive is destroyed. We need this flag\n * to avoid potentially breaking changes caused by better control cleanup introduced in #39235.\n */\nfunction cleanUpControl(control, dir, validateControlPresenceOnChange = true) {\n const noop = () => {\n if (validateControlPresenceOnChange && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n _noControlError(dir);\n }\n };\n // The `valueAccessor` field is typically defined on FromControl and FormControlName directive\n // instances and there is a logic in `selectValueAccessor` function that throws if it's not the\n // case. We still check the presence of `valueAccessor` before invoking its methods to make sure\n // that cleanup works correctly if app code or tests are setup to ignore the error thrown from\n // `selectValueAccessor`. See https://github.com/angular/angular/issues/40521.\n if (dir.valueAccessor) {\n dir.valueAccessor.registerOnChange(noop);\n dir.valueAccessor.registerOnTouched(noop);\n }\n cleanUpValidators(control, dir);\n if (control) {\n dir._invokeOnDestroyCallbacks();\n control._registerOnCollectionChange(() => { });\n }\n}\nfunction registerOnValidatorChange(validators, onChange) {\n validators.forEach((validator) => {\n if (validator.registerOnValidatorChange)\n validator.registerOnValidatorChange(onChange);\n });\n}\n/**\n * Sets up disabled change handler function on a given form control if ControlValueAccessor\n * associated with a given directive instance supports the `setDisabledState` call.\n *\n * @param control Form control where disabled change handler should be setup.\n * @param dir Corresponding directive instance associated with this control.\n */\nfunction setUpDisabledChangeHandler(control, dir) {\n if (dir.valueAccessor.setDisabledState) {\n const onDisabledChange = (isDisabled) => {\n dir.valueAccessor.setDisabledState(isDisabled);\n };\n control.registerOnDisabledChange(onDisabledChange);\n // Register a callback function to cleanup disabled change handler\n // from a control instance when a directive is destroyed.\n dir._registerOnDestroy(() => {\n control._unregisterOnDisabledChange(onDisabledChange);\n });\n }\n}\n/**\n * Sets up sync and async directive validators on provided form control.\n * This function merges validators from the directive into the validators of the control.\n *\n * @param control Form control where directive validators should be setup.\n * @param dir Directive instance that contains validators to be setup.\n */\nfunction setUpValidators(control, dir) {\n const validators = getControlValidators(control);\n if (dir.validator !== null) {\n control.setValidators(mergeValidators(validators, dir.validator));\n }\n else if (typeof validators === 'function') {\n // If sync validators are represented by a single validator function, we force the\n // `Validators.compose` call to happen by executing the `setValidators` function with\n // an array that contains that function. We need this to avoid possible discrepancies in\n // validators behavior, so sync validators are always processed by the `Validators.compose`.\n // Note: we should consider moving this logic inside the `setValidators` function itself, so we\n // have consistent behavior on AbstractControl API level. The same applies to the async\n // validators logic below.\n control.setValidators([validators]);\n }\n const asyncValidators = getControlAsyncValidators(control);\n if (dir.asyncValidator !== null) {\n control.setAsyncValidators(mergeValidators(asyncValidators, dir.asyncValidator));\n }\n else if (typeof asyncValidators === 'function') {\n control.setAsyncValidators([asyncValidators]);\n }\n // Re-run validation when validator binding changes, e.g. minlength=3 -> minlength=4\n const onValidatorChange = () => control.updateValueAndValidity();\n registerOnValidatorChange(dir._rawValidators, onValidatorChange);\n registerOnValidatorChange(dir._rawAsyncValidators, onValidatorChange);\n}\n/**\n * Cleans up sync and async directive validators on provided form control.\n * This function reverts the setup performed by the `setUpValidators` function, i.e.\n * removes directive-specific validators from a given control instance.\n *\n * @param control Form control from where directive validators should be removed.\n * @param dir Directive instance that contains validators to be removed.\n * @returns true if a control was updated as a result of this action.\n */\nfunction cleanUpValidators(control, dir) {\n let isControlUpdated = false;\n if (control !== null) {\n if (dir.validator !== null) {\n const validators = getControlValidators(control);\n if (Array.isArray(validators) && validators.length > 0) {\n // Filter out directive validator function.\n const updatedValidators = validators.filter((validator) => validator !== dir.validator);\n if (updatedValidators.length !== validators.length) {\n isControlUpdated = true;\n control.setValidators(updatedValidators);\n }\n }\n }\n if (dir.asyncValidator !== null) {\n const asyncValidators = getControlAsyncValidators(control);\n if (Array.isArray(asyncValidators) && asyncValidators.length > 0) {\n // Filter out directive async validator function.\n const updatedAsyncValidators = asyncValidators.filter((asyncValidator) => asyncValidator !== dir.asyncValidator);\n if (updatedAsyncValidators.length !== asyncValidators.length) {\n isControlUpdated = true;\n control.setAsyncValidators(updatedAsyncValidators);\n }\n }\n }\n }\n // Clear onValidatorChange callbacks by providing a noop function.\n const noop = () => { };\n registerOnValidatorChange(dir._rawValidators, noop);\n registerOnValidatorChange(dir._rawAsyncValidators, noop);\n return isControlUpdated;\n}\nfunction setUpViewChangePipeline(control, dir) {\n dir.valueAccessor.registerOnChange((newValue) => {\n control._pendingValue = newValue;\n control._pendingChange = true;\n control._pendingDirty = true;\n if (control.updateOn === 'change')\n updateControl(control, dir);\n });\n}\nfunction setUpBlurPipeline(control, dir) {\n dir.valueAccessor.registerOnTouched(() => {\n control._pendingTouched = true;\n if (control.updateOn === 'blur' && control._pendingChange)\n updateControl(control, dir);\n if (control.updateOn !== 'submit')\n control.markAsTouched();\n });\n}\nfunction updateControl(control, dir) {\n if (control._pendingDirty)\n control.markAsDirty();\n control.setValue(control._pendingValue, { emitModelToViewChange: false });\n dir.viewToModelUpdate(control._pendingValue);\n control._pendingChange = false;\n}\nfunction setUpModelChangePipeline(control, dir) {\n const onChange = (newValue, emitModelEvent) => {\n // control -> view\n dir.valueAccessor.writeValue(newValue);\n // control -> ngModel\n if (emitModelEvent)\n dir.viewToModelUpdate(newValue);\n };\n control.registerOnChange(onChange);\n // Register a callback function to cleanup onChange handler\n // from a control instance when a directive is destroyed.\n dir._registerOnDestroy(() => {\n control._unregisterOnChange(onChange);\n });\n}\n/**\n * Links a FormGroup or FormArray instance and corresponding Form directive by setting up validators\n * present in the view.\n *\n * @param control FormGroup or FormArray instance that should be linked.\n * @param dir Directive that provides view validators.\n */\nfunction setUpFormContainer(control, dir) {\n if (control == null && (typeof ngDevMode === 'undefined' || ngDevMode))\n _throwError(dir, 'Cannot find control with');\n setUpValidators(control, dir);\n}\n/**\n * Reverts the setup performed by the `setUpFormContainer` function.\n *\n * @param control FormGroup or FormArray instance that should be cleaned up.\n * @param dir Directive that provided view validators.\n * @returns true if a control was updated as a result of this action.\n */\nfunction cleanUpFormContainer(control, dir) {\n return cleanUpValidators(control, dir);\n}\nfunction _noControlError(dir) {\n return _throwError(dir, 'There is no FormControl instance attached to form control element with');\n}\nfunction _throwError(dir, message) {\n const messageEnd = _describeControlLocation(dir);\n throw new Error(`${message} ${messageEnd}`);\n}\nfunction _describeControlLocation(dir) {\n const path = dir.path;\n if (path && path.length > 1)\n return `path: '${path.join(' -> ')}'`;\n if (path?.[0])\n return `name: '${path}'`;\n return 'unspecified name attribute';\n}\nfunction _throwMissingValueAccessorError(dir) {\n const loc = _describeControlLocation(dir);\n throw new ɵRuntimeError(-1203 /* RuntimeErrorCode.NG_MISSING_VALUE_ACCESSOR */, `No value accessor for form control ${loc}.`);\n}\nfunction _throwInvalidValueAccessorError(dir) {\n const loc = _describeControlLocation(dir);\n throw new ɵRuntimeError(1200 /* RuntimeErrorCode.NG_VALUE_ACCESSOR_NOT_PROVIDED */, `Value accessor was not provided as an array for form control with ${loc}. ` +\n `Check that the \\`NG_VALUE_ACCESSOR\\` token is configured as a \\`multi: true\\` provider.`);\n}\nfunction isPropertyUpdated(changes, viewModel) {\n if (!changes.hasOwnProperty('model'))\n return false;\n const change = changes['model'];\n if (change.isFirstChange())\n return true;\n return !Object.is(viewModel, change.currentValue);\n}\nfunction isBuiltInAccessor(valueAccessor) {\n // Check if a given value accessor is an instance of a class that directly extends\n // `BuiltInControlValueAccessor` one.\n return Object.getPrototypeOf(valueAccessor.constructor) === BuiltInControlValueAccessor;\n}\nfunction syncPendingControls(form, directives) {\n form._syncPendingControls();\n directives.forEach((dir) => {\n const control = dir.control;\n if (control.updateOn === 'submit' && control._pendingChange) {\n dir.viewToModelUpdate(control._pendingValue);\n control._pendingChange = false;\n }\n });\n}\n// TODO: vsavkin remove it once https://github.com/angular/angular/issues/3011 is implemented\nfunction selectValueAccessor(dir, valueAccessors) {\n if (!valueAccessors)\n return null;\n if (!Array.isArray(valueAccessors) && (typeof ngDevMode === 'undefined' || ngDevMode))\n _throwInvalidValueAccessorError(dir);\n let defaultAccessor = undefined;\n let builtinAccessor = undefined;\n let customAccessor = undefined;\n valueAccessors.forEach((v) => {\n if (v.constructor === DefaultValueAccessor) {\n defaultAccessor = v;\n }\n else if (isBuiltInAccessor(v)) {\n if (builtinAccessor && (typeof ngDevMode === 'undefined' || ngDevMode))\n _throwError(dir, 'More than one built-in value accessor matches form control with');\n builtinAccessor = v;\n }\n else {\n if (customAccessor && (typeof ngDevMode === 'undefined' || ngDevMode))\n _throwError(dir, 'More than one custom value accessor matches form control with');\n customAccessor = v;\n }\n });\n if (customAccessor)\n return customAccessor;\n if (builtinAccessor)\n return builtinAccessor;\n if (defaultAccessor)\n return defaultAccessor;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _throwError(dir, 'No valid value accessor for form control with');\n }\n return null;\n}\nfunction removeListItem$1(list, el) {\n const index = list.indexOf(el);\n if (index > -1)\n list.splice(index, 1);\n}\n// TODO(kara): remove after deprecation period\nfunction _ngModelWarning(name, type, instance, warningConfig) {\n if (warningConfig === 'never')\n return;\n if (((warningConfig === null || warningConfig === 'once') && !type._ngModelWarningSentOnce) ||\n (warningConfig === 'always' && !instance._ngModelWarningSent)) {\n console.warn(ngModelWarning(name));\n type._ngModelWarningSentOnce = true;\n instance._ngModelWarningSent = true;\n }\n}\n\nconst formDirectiveProvider$1 = {\n provide: ControlContainer,\n useExisting: forwardRef(() => NgForm)\n};\nconst resolvedPromise$1 = (() => Promise.resolve())();\n/**\n * @description\n * Creates a top-level `FormGroup` instance and binds it to a form\n * to track aggregate form value and validation status.\n *\n * As soon as you import the `FormsModule`, this directive becomes active by default on\n * all `<form>` tags. You don't need to add a special selector.\n *\n * You optionally export the directive into a local template variable using `ngForm` as the key\n * (ex: `#myForm=\"ngForm\"`). This is optional, but useful. Many properties from the underlying\n * `FormGroup` instance are duplicated on the directive itself, so a reference to it\n * gives you access to the aggregate value and validity status of the form, as well as\n * user interaction properties like `dirty` and `touched`.\n *\n * To register child controls with the form, use `NgModel` with a `name`\n * attribute. You may use `NgModelGroup` to create sub-groups within the form.\n *\n * If necessary, listen to the directive's `ngSubmit` event to be notified when the user has\n * triggered a form submission. The `ngSubmit` event emits the original form\n * submission event.\n *\n * In template driven forms, all `<form>` tags are automatically tagged as `NgForm`.\n * To import the `FormsModule` but skip its usage in some forms,\n * for example, to use native HTML5 validation, add the `ngNoForm` and the `<form>`\n * tags won't create an `NgForm` directive. In reactive forms, using `ngNoForm` is\n * unnecessary because the `<form>` tags are inert. In that case, you would\n * refrain from using the `formGroup` directive.\n *\n * @usageNotes\n *\n * ### Listening for form submission\n *\n * The following example shows how to capture the form values from the \"ngSubmit\" event.\n *\n * {@example forms/ts/simpleForm/simple_form_example.ts region='Component'}\n *\n * ### Setting the update options\n *\n * The following example shows you how to change the \"updateOn\" option from its default using\n * ngFormOptions.\n *\n * ```html\n * <form [ngFormOptions]=\"{updateOn: 'blur'}\">\n * <input name=\"one\" ngModel> <!-- this ngModel will update on blur -->\n * </form>\n * ```\n *\n * ### Native DOM validation UI\n *\n * In order to prevent the native DOM form validation UI from interfering with Angular's form\n * validation, Angular automatically adds the `novalidate` attribute on any `<form>` whenever\n * `FormModule` or `ReactiveFormModule` are imported into the application.\n * If you want to explicitly enable native DOM validation UI with Angular forms, you can add the\n * `ngNativeValidate` attribute to the `<form>` element:\n *\n * ```html\n * <form ngNativeValidate>\n * ...\n * </form>\n * ```\n *\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgForm extends ControlContainer {\n constructor(validators, asyncValidators, callSetDisabledState) {\n super();\n this.callSetDisabledState = callSetDisabledState;\n /**\n * @description\n * Returns whether the form submission has been triggered.\n */\n this.submitted = false;\n this._directives = new Set();\n /**\n * @description\n * Event emitter for the \"ngSubmit\" event\n */\n this.ngSubmit = new EventEmitter();\n this.form =\n new FormGroup({}, composeValidators(validators), composeAsyncValidators(asyncValidators));\n }\n /** @nodoc */\n ngAfterViewInit() {\n this._setUpdateStrategy();\n }\n /**\n * @description\n * The directive instance.\n */\n get formDirective() {\n return this;\n }\n /**\n * @description\n * The internal `FormGroup` instance.\n */\n get control() {\n return this.form;\n }\n /**\n * @description\n * Returns an array representing the path to this group. Because this directive\n * always lives at the top level of a form, it is always an empty array.\n */\n get path() {\n return [];\n }\n /**\n * @description\n * Returns a map of the controls in this group.\n */\n get controls() {\n return this.form.controls;\n }\n /**\n * @description\n * Method that sets up the control directive in this group, re-calculates its value\n * and validity, and adds the instance to the internal list of directives.\n *\n * @param dir The `NgModel` directive instance.\n */\n addControl(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n dir.control =\n container.registerControl(dir.name, dir.control);\n setUpControl(dir.control, dir, this.callSetDisabledState);\n dir.control.updateValueAndValidity({ emitEvent: false });\n this._directives.add(dir);\n });\n }\n /**\n * @description\n * Retrieves the `FormControl` instance from the provided `NgModel` directive.\n *\n * @param dir The `NgModel` directive instance.\n */\n getControl(dir) {\n return this.form.get(dir.path);\n }\n /**\n * @description\n * Removes the `NgModel` instance from the internal list of directives\n *\n * @param dir The `NgModel` directive instance.\n */\n removeControl(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n if (container) {\n container.removeControl(dir.name);\n }\n this._directives.delete(dir);\n });\n }\n /**\n * @description\n * Adds a new `NgModelGroup` directive instance to the form.\n *\n * @param dir The `NgModelGroup` directive instance.\n */\n addFormGroup(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n const group = new FormGroup({});\n setUpFormContainer(group, dir);\n container.registerControl(dir.name, group);\n group.updateValueAndValidity({ emitEvent: false });\n });\n }\n /**\n * @description\n * Removes the `NgModelGroup` directive instance from the form.\n *\n * @param dir The `NgModelGroup` directive instance.\n */\n removeFormGroup(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n if (container) {\n container.removeControl(dir.name);\n }\n });\n }\n /**\n * @description\n * Retrieves the `FormGroup` for a provided `NgModelGroup` directive instance\n *\n * @param dir The `NgModelGroup` directive instance.\n */\n getFormGroup(dir) {\n return this.form.get(dir.path);\n }\n /**\n * Sets the new value for the provided `NgControl` directive.\n *\n * @param dir The `NgControl` directive instance.\n * @param value The new value for the directive's control.\n */\n updateModel(dir, value) {\n resolvedPromise$1.then(() => {\n const ctrl = this.form.get(dir.path);\n ctrl.setValue(value);\n });\n }\n /**\n * @description\n * Sets the value for this `FormGroup`.\n *\n * @param value The new value\n */\n setValue(value) {\n this.control.setValue(value);\n }\n /**\n * @description\n * Method called when the \"submit\" event is triggered on the form.\n * Triggers the `ngSubmit` emitter to emit the \"submit\" event as its payload.\n *\n * @param $event The \"submit\" event object\n */\n onSubmit($event) {\n this.submitted = true;\n syncPendingControls(this.form, this._directives);\n this.ngSubmit.emit($event);\n // Forms with `method=\"dialog\"` have some special behavior\n // that won't reload the page and that shouldn't be prevented.\n return $event?.target?.method === 'dialog';\n }\n /**\n * @description\n * Method called when the \"reset\" event is triggered on the form.\n */\n onReset() {\n this.resetForm();\n }\n /**\n * @description\n * Resets the form to an initial value and resets its submitted status.\n *\n * @param value The new value for the form.\n */\n resetForm(value = undefined) {\n this.form.reset(value);\n this.submitted = false;\n }\n _setUpdateStrategy() {\n if (this.options && this.options.updateOn != null) {\n this.form._updateOn = this.options.updateOn;\n }\n }\n _findContainer(path) {\n path.pop();\n return path.length ? this.form.get(path) : this.form;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgForm, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgForm, selector: \"form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]\", inputs: { options: [\"ngFormOptions\", \"options\"] }, outputs: { ngSubmit: \"ngSubmit\" }, host: { listeners: { \"submit\": \"onSubmit($event)\", \"reset\": \"onReset()\" } }, providers: [formDirectiveProvider$1], exportAs: [\"ngForm\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgForm, decorators: [{\n type: Directive,\n args: [{\n selector: 'form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]',\n providers: [formDirectiveProvider$1],\n host: { '(submit)': 'onSubmit($event)', '(reset)': 'onReset()' },\n outputs: ['ngSubmit'],\n exportAs: 'ngForm'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CALL_SET_DISABLED_STATE]\n }] }]; }, propDecorators: { options: [{\n type: Input,\n args: ['ngFormOptions']\n }] } });\n\nfunction removeListItem(list, el) {\n const index = list.indexOf(el);\n if (index > -1)\n list.splice(index, 1);\n}\n\nfunction isFormControlState(formState) {\n return typeof formState === 'object' && formState !== null &&\n Object.keys(formState).length === 2 && 'value' in formState && 'disabled' in formState;\n}\nconst FormControl = (class FormControl extends AbstractControl {\n constructor(\n // formState and defaultValue will only be null if T is nullable\n formState = null, validatorOrOpts, asyncValidator) {\n super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));\n /** @publicApi */\n this.defaultValue = null;\n /** @internal */\n this._onChange = [];\n /** @internal */\n this._pendingChange = false;\n this._applyFormState(formState);\n this._setUpdateStrategy(validatorOrOpts);\n this._initObservables();\n this.updateValueAndValidity({\n onlySelf: true,\n // If `asyncValidator` is present, it will trigger control status change from `PENDING` to\n // `VALID` or `INVALID`.\n // The status should be broadcasted via the `statusChanges` observable, so we set\n // `emitEvent` to `true` to allow that during the control creation process.\n emitEvent: !!this.asyncValidator\n });\n if (isOptionsObj(validatorOrOpts) &&\n (validatorOrOpts.nonNullable || validatorOrOpts.initialValueIsDefault)) {\n if (isFormControlState(formState)) {\n this.defaultValue = formState.value;\n }\n else {\n this.defaultValue = formState;\n }\n }\n }\n setValue(value, options = {}) {\n this.value = this._pendingValue = value;\n if (this._onChange.length && options.emitModelToViewChange !== false) {\n this._onChange.forEach((changeFn) => changeFn(this.value, options.emitViewToModelChange !== false));\n }\n this.updateValueAndValidity(options);\n }\n patchValue(value, options = {}) {\n this.setValue(value, options);\n }\n reset(formState = this.defaultValue, options = {}) {\n this._applyFormState(formState);\n this.markAsPristine(options);\n this.markAsUntouched(options);\n this.setValue(this.value, options);\n this._pendingChange = false;\n }\n /** @internal */\n _updateValue() { }\n /** @internal */\n _anyControls(condition) {\n return false;\n }\n /** @internal */\n _allControlsDisabled() {\n return this.disabled;\n }\n registerOnChange(fn) {\n this._onChange.push(fn);\n }\n /** @internal */\n _unregisterOnChange(fn) {\n removeListItem(this._onChange, fn);\n }\n registerOnDisabledChange(fn) {\n this._onDisabledChange.push(fn);\n }\n /** @internal */\n _unregisterOnDisabledChange(fn) {\n removeListItem(this._onDisabledChange, fn);\n }\n /** @internal */\n _forEachChild(cb) { }\n /** @internal */\n _syncPendingControls() {\n if (this.updateOn === 'submit') {\n if (this._pendingDirty)\n this.markAsDirty();\n if (this._pendingTouched)\n this.markAsTouched();\n if (this._pendingChange) {\n this.setValue(this._pendingValue, { onlySelf: true, emitModelToViewChange: false });\n return true;\n }\n }\n return false;\n }\n _applyFormState(formState) {\n if (isFormControlState(formState)) {\n this.value = this._pendingValue = formState.value;\n formState.disabled ? this.disable({ onlySelf: true, emitEvent: false }) :\n this.enable({ onlySelf: true, emitEvent: false });\n }\n else {\n this.value = this._pendingValue = formState;\n }\n }\n});\nconst UntypedFormControl = FormControl;\n/**\n * @description\n * Asserts that the given control is an instance of `FormControl`\n *\n * @publicApi\n */\nconst isFormControl = (control) => control instanceof FormControl;\n\n/**\n * @description\n * A base class for code shared between the `NgModelGroup` and `FormGroupName` directives.\n *\n * @publicApi\n */\nclass AbstractFormGroupDirective extends ControlContainer {\n /** @nodoc */\n ngOnInit() {\n this._checkParentType();\n // Register the group with its parent group.\n this.formDirective.addFormGroup(this);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.formDirective) {\n // Remove the group from its parent group.\n this.formDirective.removeFormGroup(this);\n }\n }\n /**\n * @description\n * The `FormGroup` bound to this directive.\n */\n get control() {\n return this.formDirective.getFormGroup(this);\n }\n /**\n * @description\n * The path to this group from the top-level directive.\n */\n get path() {\n return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);\n }\n /**\n * @description\n * The top-level directive for this group if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n /** @internal */\n _checkParentType() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AbstractFormGroupDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: AbstractFormGroupDirective, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AbstractFormGroupDirective, decorators: [{\n type: Directive\n }] });\n\nfunction modelParentException() {\n return new ɵRuntimeError(1350 /* RuntimeErrorCode.NGMODEL_IN_FORM_GROUP */, `\n ngModel cannot be used to register form controls with a parent formGroup directive. Try using\n formGroup's partner directive \"formControlName\" instead. Example:\n\n ${formControlNameExample}\n\n Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:\n\n Example:\n\n ${ngModelWithFormGroupExample}`);\n}\nfunction formGroupNameException() {\n return new ɵRuntimeError(1351 /* RuntimeErrorCode.NGMODEL_IN_FORM_GROUP_NAME */, `\n ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n ${formGroupNameExample}\n\n Option 2: Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n ${ngModelGroupExample}`);\n}\nfunction missingNameException() {\n return new ɵRuntimeError(1352 /* RuntimeErrorCode.NGMODEL_WITHOUT_NAME */, `If ngModel is used within a form tag, either the name attribute must be set or the form\n control must be defined as 'standalone' in ngModelOptions.\n\n Example 1: <input [(ngModel)]=\"person.firstName\" name=\"first\">\n Example 2: <input [(ngModel)]=\"person.firstName\" [ngModelOptions]=\"{standalone: true}\">`);\n}\nfunction modelGroupParentException() {\n return new ɵRuntimeError(1353 /* RuntimeErrorCode.NGMODELGROUP_IN_FORM_GROUP */, `\n ngModelGroup cannot be used with a parent formGroup directive.\n\n Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n ${formGroupNameExample}\n\n Option 2: Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n ${ngModelGroupExample}`);\n}\n\nconst modelGroupProvider = {\n provide: ControlContainer,\n useExisting: forwardRef(() => NgModelGroup)\n};\n/**\n * @description\n * Creates and binds a `FormGroup` instance to a DOM element.\n *\n * This directive can only be used as a child of `NgForm` (within `<form>` tags).\n *\n * Use this directive to validate a sub-group of your form separately from the\n * rest of your form, or if some values in your domain model make more sense\n * to consume together in a nested object.\n *\n * Provide a name for the sub-group and it will become the key\n * for the sub-group in the form's full value. If you need direct access, export the directive into\n * a local template variable using `ngModelGroup` (ex: `#myGroup=\"ngModelGroup\"`).\n *\n * @usageNotes\n *\n * ### Consuming controls in a grouping\n *\n * The following example shows you how to combine controls together in a sub-group\n * of the form.\n *\n * {@example forms/ts/ngModelGroup/ng_model_group_example.ts region='Component'}\n *\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgModelGroup extends AbstractFormGroupDirective {\n constructor(parent, validators, asyncValidators) {\n super();\n /**\n * @description\n * Tracks the name of the `NgModelGroup` bound to the directive. The name corresponds\n * to a key in the parent `NgForm`.\n */\n this.name = '';\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /** @internal */\n _checkParentType() {\n if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw modelGroupParentException();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgModelGroup, deps: [{ token: ControlContainer, host: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgModelGroup, selector: \"[ngModelGroup]\", inputs: { name: [\"ngModelGroup\", \"name\"] }, providers: [modelGroupProvider], exportAs: [\"ngModelGroup\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgModelGroup, decorators: [{\n type: Directive,\n args: [{ selector: '[ngModelGroup]', providers: [modelGroupProvider], exportAs: 'ngModelGroup' }]\n }], ctorParameters: function () { return [{ type: ControlContainer, decorators: [{\n type: Host\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }]; }, propDecorators: { name: [{\n type: Input,\n args: ['ngModelGroup']\n }] } });\n\nconst formControlBinding$1 = {\n provide: NgControl,\n useExisting: forwardRef(() => NgModel)\n};\n/**\n * `ngModel` forces an additional change detection run when its inputs change:\n * E.g.:\n * ```\n * <div>{{myModel.valid}}</div>\n * <input [(ngModel)]=\"myValue\" #myModel=\"ngModel\">\n * ```\n * I.e. `ngModel` can export itself on the element and then be used in the template.\n * Normally, this would result in expressions before the `input` that use the exported directive\n * to have an old value as they have been\n * dirty checked before. As this is a very common case for `ngModel`, we added this second change\n * detection run.\n *\n * Notes:\n * - this is just one extra run no matter how many `ngModel`s have been changed.\n * - this is a general problem when using `exportAs` for directives!\n */\nconst resolvedPromise = (() => Promise.resolve())();\n/**\n * @description\n * Creates a `FormControl` instance from a [domain\n * model](https://en.wikipedia.org/wiki/Domain_model) and binds it to a form control element.\n *\n * The `FormControl` instance tracks the value, user interaction, and\n * validation status of the control and keeps the view synced with the model. If used\n * within a parent form, the directive also registers itself with the form as a child\n * control.\n *\n * This directive is used by itself or as part of a larger form. Use the\n * `ngModel` selector to activate it.\n *\n * It accepts a domain model as an optional `Input`. If you have a one-way binding\n * to `ngModel` with `[]` syntax, changing the domain model's value in the component\n * class sets the value in the view. If you have a two-way binding with `[()]` syntax\n * (also known as 'banana-in-a-box syntax'), the value in the UI always syncs back to\n * the domain model in your class.\n *\n * To inspect the properties of the associated `FormControl` (like the validity state),\n * export the directive into a local template variable using `ngModel` as the key (ex:\n * `#myVar=\"ngModel\"`). You can then access the control using the directive's `control` property.\n * However, the most commonly used properties (like `valid` and `dirty`) also exist on the control\n * for direct access. See a full list of properties directly available in\n * `AbstractControlDirective`.\n *\n * @see {@link RadioControlValueAccessor}\n * @see {@link SelectControlValueAccessor}\n *\n * @usageNotes\n *\n * ### Using ngModel on a standalone control\n *\n * The following examples show a simple standalone control using `ngModel`:\n *\n * {@example forms/ts/simpleNgModel/simple_ng_model_example.ts region='Component'}\n *\n * When using the `ngModel` within `<form>` tags, you'll also need to supply a `name` attribute\n * so that the control can be registered with the parent form under that name.\n *\n * In the context of a parent form, it's often unnecessary to include one-way or two-way binding,\n * as the parent form syncs the value for you. You access its properties by exporting it into a\n * local template variable using `ngForm` such as (`#f=\"ngForm\"`). Use the variable where\n * needed on form submission.\n *\n * If you do need to populate initial values into your form, using a one-way binding for\n * `ngModel` tends to be sufficient as long as you use the exported form's value rather\n * than the domain model's value on submit.\n *\n * ### Using ngModel within a form\n *\n * The following example shows controls using `ngModel` within a form:\n *\n * {@example forms/ts/simpleForm/simple_form_example.ts region='Component'}\n *\n * ### Using a standalone ngModel within a group\n *\n * The following example shows you how to use a standalone ngModel control\n * within a form. This controls the display of the form, but doesn't contain form data.\n *\n * ```html\n * <form>\n * <input name=\"login\" ngModel placeholder=\"Login\">\n * <input type=\"checkbox\" ngModel [ngModelOptions]=\"{standalone: true}\"> Show more options?\n * </form>\n * <!-- form value: {login: ''} -->\n * ```\n *\n * ### Setting the ngModel `name` attribute through options\n *\n * The following example shows you an alternate way to set the name attribute. Here,\n * an attribute identified as name is used within a custom form control component. To still be able\n * to specify the NgModel's name, you must specify it using the `ngModelOptions` input instead.\n *\n * ```html\n * <form>\n * <my-custom-form-control name=\"Nancy\" ngModel [ngModelOptions]=\"{name: 'user'}\">\n * </my-custom-form-control>\n * </form>\n * <!-- form value: {user: ''} -->\n * ```\n *\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgModel extends NgControl {\n constructor(parent, validators, asyncValidators, valueAccessors, _changeDetectorRef, callSetDisabledState) {\n super();\n this._changeDetectorRef = _changeDetectorRef;\n this.callSetDisabledState = callSetDisabledState;\n this.control = new FormControl();\n /** @internal */\n this._registered = false;\n /**\n * @description\n * Tracks the name bound to the directive. If a parent form exists, it\n * uses this name as a key to retrieve this control's value.\n */\n this.name = '';\n /**\n * @description\n * Event emitter for producing the `ngModelChange` event after\n * the view model updates.\n */\n this.update = new EventEmitter();\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n this.valueAccessor = selectValueAccessor(this, valueAccessors);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this._checkForErrors();\n if (!this._registered || 'name' in changes) {\n if (this._registered) {\n this._checkName();\n if (this.formDirective) {\n // We can't call `formDirective.removeControl(this)`, because the `name` has already been\n // changed. We also can't reset the name temporarily since the logic in `removeControl`\n // is inside a promise and it won't run immediately. We work around it by giving it an\n // object with the same shape instead.\n const oldName = changes['name'].previousValue;\n this.formDirective.removeControl({ name: oldName, path: this._getPath(oldName) });\n }\n }\n this._setUpControl();\n }\n if ('isDisabled' in changes) {\n this._updateDisabled(changes);\n }\n if (isPropertyUpdated(changes, this.viewModel)) {\n this._updateValue(this.model);\n this.viewModel = this.model;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n this.formDirective && this.formDirective.removeControl(this);\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return this._getPath(this.name);\n }\n /**\n * @description\n * The top-level directive for this control if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n /**\n * @description\n * Sets the new value for the view model and emits an `ngModelChange` event.\n *\n * @param newValue The new value emitted by `ngModelChange`.\n */\n viewToModelUpdate(newValue) {\n this.viewModel = newValue;\n this.update.emit(newValue);\n }\n _setUpControl() {\n this._setUpdateStrategy();\n this._isStandalone() ? this._setUpStandalone() : this.formDirective.addControl(this);\n this._registered = true;\n }\n _setUpdateStrategy() {\n if (this.options && this.options.updateOn != null) {\n this.control._updateOn = this.options.updateOn;\n }\n }\n _isStandalone() {\n return !this._parent || !!(this.options && this.options.standalone);\n }\n _setUpStandalone() {\n setUpControl(this.control, this, this.callSetDisabledState);\n this.control.updateValueAndValidity({ emitEvent: false });\n }\n _checkForErrors() {\n if (!this._isStandalone()) {\n this._checkParentType();\n }\n this._checkName();\n }\n _checkParentType() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!(this._parent instanceof NgModelGroup) &&\n this._parent instanceof AbstractFormGroupDirective) {\n throw formGroupNameException();\n }\n else if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm)) {\n throw modelParentException();\n }\n }\n }\n _checkName() {\n if (this.options && this.options.name)\n this.name = this.options.name;\n if (!this._isStandalone() && !this.name && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw missingNameException();\n }\n }\n _updateValue(value) {\n resolvedPromise.then(() => {\n this.control.setValue(value, { emitViewToModelChange: false });\n this._changeDetectorRef?.markForCheck();\n });\n }\n _updateDisabled(changes) {\n const disabledValue = changes['isDisabled'].currentValue;\n // checking for 0 to avoid breaking change\n const isDisabled = disabledValue !== 0 && booleanAttribute(disabledValue);\n resolvedPromise.then(() => {\n if (isDisabled && !this.control.disabled) {\n this.control.disable();\n }\n else if (!isDisabled && this.control.disabled) {\n this.control.enable();\n }\n this._changeDetectorRef?.markForCheck();\n });\n }\n _getPath(controlName) {\n return this._parent ? controlPath(controlName, this._parent) : [controlName];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgModel, deps: [{ token: ControlContainer, host: true, optional: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: ChangeDetectorRef, optional: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: { name: \"name\", isDisabled: [\"disabled\", \"isDisabled\"], model: [\"ngModel\", \"model\"], options: [\"ngModelOptions\", \"options\"] }, outputs: { update: \"ngModelChange\" }, providers: [formControlBinding$1], exportAs: [\"ngModel\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgModel, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngModel]:not([formControlName]):not([formControl])',\n providers: [formControlBinding$1],\n exportAs: 'ngModel'\n }]\n }], ctorParameters: function () { return [{ type: ControlContainer, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALUE_ACCESSOR]\n }] }, { type: i0.ChangeDetectorRef, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ChangeDetectorRef]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CALL_SET_DISABLED_STATE]\n }] }]; }, propDecorators: { name: [{\n type: Input\n }], isDisabled: [{\n type: Input,\n args: ['disabled']\n }], model: [{\n type: Input,\n args: ['ngModel']\n }], options: [{\n type: Input,\n args: ['ngModelOptions']\n }], update: [{\n type: Output,\n args: ['ngModelChange']\n }] } });\n\n/**\n * @description\n *\n * Adds `novalidate` attribute to all forms by default.\n *\n * `novalidate` is used to disable browser's native form validation.\n *\n * If you want to use native validation with Angular forms, just add `ngNativeValidate` attribute:\n *\n * ```\n * <form ngNativeValidate></form>\n * ```\n *\n * @publicApi\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n */\nclass ɵNgNoValidate {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ɵNgNoValidate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\", host: { attributes: { \"novalidate\": \"\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ɵNgNoValidate, decorators: [{\n type: Directive,\n args: [{\n selector: 'form:not([ngNoForm]):not([ngNativeValidate])',\n host: { 'novalidate': '' },\n }]\n }] });\n\nconst NUMBER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberValueAccessor),\n multi: true\n};\n/**\n * @description\n * The `ControlValueAccessor` for writing a number value and listening to number input changes.\n * The value accessor is used by the `FormControlDirective`, `FormControlName`, and `NgModel`\n * directives.\n *\n * @usageNotes\n *\n * ### Using a number input with a reactive form.\n *\n * The following example shows how to use a number input with a reactive form.\n *\n * ```ts\n * const totalCountControl = new FormControl();\n * ```\n *\n * ```\n * <input type=\"number\" [formControl]=\"totalCountControl\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass NumberValueAccessor extends BuiltInControlValueAccessor {\n /**\n * Sets the \"value\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n // The value needs to be normalized for IE9, otherwise it is set to 'null' when null\n const normalizedValue = value == null ? '' : value;\n this.setProperty('value', normalizedValue);\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = (value) => {\n fn(value == '' ? null : parseFloat(value));\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NumberValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NumberValueAccessor, selector: \"input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]\", host: { listeners: { \"input\": \"onChange($event.target.value)\", \"blur\": \"onTouched()\" } }, providers: [NUMBER_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NumberValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]',\n host: { '(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\n providers: [NUMBER_VALUE_ACCESSOR]\n }]\n }] });\n\nconst RADIO_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioControlValueAccessor),\n multi: true\n};\nfunction throwNameError() {\n throw new ɵRuntimeError(1202 /* RuntimeErrorCode.NAME_AND_FORM_CONTROL_NAME_MUST_MATCH */, `\n If you define both a name and a formControlName attribute on your radio button, their values\n must match. Ex: <input type=\"radio\" formControlName=\"food\" name=\"food\">\n `);\n}\n/**\n * Internal-only NgModule that works as a host for the `RadioControlRegistry` tree-shakable\n * provider. Note: the `InternalFormsSharedModule` can not be used here directly, since it's\n * declared *after* the `RadioControlRegistry` class and the `providedIn` doesn't support\n * `forwardRef` logic.\n */\nclass RadioControlRegistryModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RadioControlRegistryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: RadioControlRegistryModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RadioControlRegistryModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RadioControlRegistryModule, decorators: [{\n type: NgModule\n }] });\n/**\n * @description\n * Class used by Angular to track radio buttons. For internal use only.\n */\nclass RadioControlRegistry {\n constructor() {\n this._accessors = [];\n }\n /**\n * @description\n * Adds a control to the internal registry. For internal use only.\n */\n add(control, accessor) {\n this._accessors.push([control, accessor]);\n }\n /**\n * @description\n * Removes a control from the internal registry. For internal use only.\n */\n remove(accessor) {\n for (let i = this._accessors.length - 1; i >= 0; --i) {\n if (this._accessors[i][1] === accessor) {\n this._accessors.splice(i, 1);\n return;\n }\n }\n }\n /**\n * @description\n * Selects a radio button. For internal use only.\n */\n select(accessor) {\n this._accessors.forEach((c) => {\n if (this._isSameGroup(c, accessor) && c[1] !== accessor) {\n c[1].fireUncheck(accessor.value);\n }\n });\n }\n _isSameGroup(controlPair, accessor) {\n if (!controlPair[0].control)\n return false;\n return controlPair[0]._parent === accessor._control._parent &&\n controlPair[1].name === accessor.name;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RadioControlRegistry, providedIn: RadioControlRegistryModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RadioControlRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: RadioControlRegistryModule }]\n }] });\n/**\n * @description\n * The `ControlValueAccessor` for writing radio control values and listening to radio control\n * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @usageNotes\n *\n * ### Using radio buttons with reactive form directives\n *\n * The follow example shows how to use radio buttons in a reactive form. When using radio buttons in\n * a reactive form, radio buttons in the same group should have the same `formControlName`.\n * Providing a `name` attribute is optional.\n *\n * {@example forms/ts/reactiveRadioButtons/reactive_radio_button_example.ts region='Reactive'}\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass RadioControlValueAccessor extends BuiltInControlValueAccessor {\n constructor(renderer, elementRef, _registry, _injector) {\n super(renderer, elementRef);\n this._registry = _registry;\n this._injector = _injector;\n this.setDisabledStateFired = false;\n /**\n * The registered callback function called when a change event occurs on the input element.\n * Note: we declare `onChange` here (also used as host listener) as a function with no arguments\n * to override the `onChange` function (which expects 1 argument) in the parent\n * `BaseControlValueAccessor` class.\n * @nodoc\n */\n this.onChange = () => { };\n this.callSetDisabledState = inject(CALL_SET_DISABLED_STATE, { optional: true }) ?? setDisabledStateDefault;\n }\n /** @nodoc */\n ngOnInit() {\n this._control = this._injector.get(NgControl);\n this._checkName();\n this._registry.add(this._control, this);\n }\n /** @nodoc */\n ngOnDestroy() {\n this._registry.remove(this);\n }\n /**\n * Sets the \"checked\" property value on the radio input element.\n * @nodoc\n */\n writeValue(value) {\n this._state = value === this.value;\n this.setProperty('checked', this._state);\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this._fn = fn;\n this.onChange = () => {\n fn(this.value);\n this._registry.select(this);\n };\n }\n /** @nodoc */\n setDisabledState(isDisabled) {\n /**\n * `setDisabledState` is supposed to be called whenever the disabled state of a control changes,\n * including upon control creation. However, a longstanding bug caused the method to not fire\n * when an *enabled* control was attached. This bug was fixed in v15 in #47576.\n *\n * This had a side effect: previously, it was possible to instantiate a reactive form control\n * with `[attr.disabled]=true`, even though the corresponding control was enabled in the\n * model. This resulted in a mismatch between the model and the DOM. Now, because\n * `setDisabledState` is always called, the value in the DOM will be immediately overwritten\n * with the \"correct\" enabled value.\n *\n * However, the fix also created an exceptional case: radio buttons. Because Reactive Forms\n * models the entire group of radio buttons as a single `FormControl`, there is no way to\n * control the disabled state for individual radios, so they can no longer be configured as\n * disabled. Thus, we keep the old behavior for radio buttons, so that `[attr.disabled]`\n * continues to work. Specifically, we drop the first call to `setDisabledState` if `disabled`\n * is `false`, and we are not in legacy mode.\n */\n if (this.setDisabledStateFired || isDisabled ||\n this.callSetDisabledState === 'whenDisabledForLegacyCode') {\n this.setProperty('disabled', isDisabled);\n }\n this.setDisabledStateFired = true;\n }\n /**\n * Sets the \"value\" on the radio input element and unchecks it.\n *\n * @param value\n */\n fireUncheck(value) {\n this.writeValue(value);\n }\n _checkName() {\n if (this.name && this.formControlName && this.name !== this.formControlName &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwNameError();\n }\n if (!this.name && this.formControlName)\n this.name = this.formControlName;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RadioControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: RadioControlRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: RadioControlValueAccessor, selector: \"input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]\", inputs: { name: \"name\", formControlName: \"formControlName\", value: \"value\" }, host: { listeners: { \"change\": \"onChange()\", \"blur\": \"onTouched()\" } }, providers: [RADIO_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RadioControlValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]',\n host: { '(change)': 'onChange()', '(blur)': 'onTouched()' },\n providers: [RADIO_VALUE_ACCESSOR]\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: RadioControlRegistry }, { type: i0.Injector }]; }, propDecorators: { name: [{\n type: Input\n }], formControlName: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\nconst RANGE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RangeValueAccessor),\n multi: true\n};\n/**\n * @description\n * The `ControlValueAccessor` for writing a range value and listening to range input changes.\n * The value accessor is used by the `FormControlDirective`, `FormControlName`, and `NgModel`\n * directives.\n *\n * @usageNotes\n *\n * ### Using a range input with a reactive form\n *\n * The following example shows how to use a range input with a reactive form.\n *\n * ```ts\n * const ageControl = new FormControl();\n * ```\n *\n * ```\n * <input type=\"range\" [formControl]=\"ageControl\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass RangeValueAccessor extends BuiltInControlValueAccessor {\n /**\n * Sets the \"value\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n this.setProperty('value', parseFloat(value));\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = (value) => {\n fn(value == '' ? null : parseFloat(value));\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RangeValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: RangeValueAccessor, selector: \"input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]\", host: { listeners: { \"change\": \"onChange($event.target.value)\", \"input\": \"onChange($event.target.value)\", \"blur\": \"onTouched()\" } }, providers: [RANGE_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RangeValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]',\n host: {\n '(change)': 'onChange($event.target.value)',\n '(input)': 'onChange($event.target.value)',\n '(blur)': 'onTouched()'\n },\n providers: [RANGE_VALUE_ACCESSOR]\n }]\n }] });\n\n/**\n * Token to provide to turn off the ngModel warning on formControl and formControlName.\n */\nconst NG_MODEL_WITH_FORM_CONTROL_WARNING = new InjectionToken('NgModelWithFormControlWarning');\nconst formControlBinding = {\n provide: NgControl,\n useExisting: forwardRef(() => FormControlDirective)\n};\n/**\n * @description\n * Synchronizes a standalone `FormControl` instance to a form control element.\n *\n * Note that support for using the `ngModel` input property and `ngModelChange` event with reactive\n * form directives was deprecated in Angular v6 and is scheduled for removal in\n * a future version of Angular.\n * For details, see [Deprecated features](guide/deprecations#ngmodel-with-reactive-forms).\n *\n * @see [Reactive Forms Guide](guide/reactive-forms)\n * @see {@link FormControl}\n * @see {@link AbstractControl}\n *\n * @usageNotes\n *\n * The following example shows how to register a standalone control and set its value.\n *\n * {@example forms/ts/simpleFormControl/simple_form_control_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass FormControlDirective extends NgControl {\n /**\n * @description\n * Triggers a warning in dev mode that this input should not be used with reactive forms.\n */\n set isDisabled(isDisabled) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(disabledAttrWarning);\n }\n }\n /**\n * @description\n * Static property used to track whether any ngModel warnings have been sent across\n * all instances of FormControlDirective. Used to support warning config of \"once\".\n *\n * @internal\n */\n static { this._ngModelWarningSentOnce = false; }\n constructor(validators, asyncValidators, valueAccessors, _ngModelWarningConfig, callSetDisabledState) {\n super();\n this._ngModelWarningConfig = _ngModelWarningConfig;\n this.callSetDisabledState = callSetDisabledState;\n /** @deprecated as of v6 */\n this.update = new EventEmitter();\n /**\n * @description\n * Instance property used to track whether an ngModel warning has been sent out for this\n * particular `FormControlDirective` instance. Used to support warning config of \"always\".\n *\n * @internal\n */\n this._ngModelWarningSent = false;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n this.valueAccessor = selectValueAccessor(this, valueAccessors);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this._isControlChanged(changes)) {\n const previousForm = changes['form'].previousValue;\n if (previousForm) {\n cleanUpControl(previousForm, this, /* validateControlPresenceOnChange */ false);\n }\n setUpControl(this.form, this, this.callSetDisabledState);\n this.form.updateValueAndValidity({ emitEvent: false });\n }\n if (isPropertyUpdated(changes, this.viewModel)) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _ngModelWarning('formControl', FormControlDirective, this, this._ngModelWarningConfig);\n }\n this.form.setValue(this.model);\n this.viewModel = this.model;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.form) {\n cleanUpControl(this.form, this, /* validateControlPresenceOnChange */ false);\n }\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return [];\n }\n /**\n * @description\n * The `FormControl` bound to this directive.\n */\n get control() {\n return this.form;\n }\n /**\n * @description\n * Sets the new value for the view model and emits an `ngModelChange` event.\n *\n * @param newValue The new value for the view model.\n */\n viewToModelUpdate(newValue) {\n this.viewModel = newValue;\n this.update.emit(newValue);\n }\n _isControlChanged(changes) {\n return changes.hasOwnProperty('form');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormControlDirective, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: NG_MODEL_WITH_FORM_CONTROL_WARNING, optional: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormControlDirective, selector: \"[formControl]\", inputs: { form: [\"formControl\", \"form\"], isDisabled: [\"disabled\", \"isDisabled\"], model: [\"ngModel\", \"model\"] }, outputs: { update: \"ngModelChange\" }, providers: [formControlBinding], exportAs: [\"ngForm\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormControlDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[formControl]', providers: [formControlBinding], exportAs: 'ngForm' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALUE_ACCESSOR]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NG_MODEL_WITH_FORM_CONTROL_WARNING]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CALL_SET_DISABLED_STATE]\n }] }]; }, propDecorators: { form: [{\n type: Input,\n args: ['formControl']\n }], isDisabled: [{\n type: Input,\n args: ['disabled']\n }], model: [{\n type: Input,\n args: ['ngModel']\n }], update: [{\n type: Output,\n args: ['ngModelChange']\n }] } });\n\nconst formDirectiveProvider = {\n provide: ControlContainer,\n useExisting: forwardRef(() => FormGroupDirective)\n};\n/**\n * @description\n *\n * Binds an existing `FormGroup` or `FormRecord` to a DOM element.\n *\n * This directive accepts an existing `FormGroup` instance. It will then use this\n * `FormGroup` instance to match any child `FormControl`, `FormGroup`/`FormRecord`,\n * and `FormArray` instances to child `FormControlName`, `FormGroupName`,\n * and `FormArrayName` directives.\n *\n * @see [Reactive Forms Guide](guide/reactive-forms)\n * @see {@link AbstractControl}\n *\n * @usageNotes\n * ### Register Form Group\n *\n * The following example registers a `FormGroup` with first name and last name controls,\n * and listens for the *ngSubmit* event when the button is clicked.\n *\n * {@example forms/ts/simpleFormGroup/simple_form_group_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass FormGroupDirective extends ControlContainer {\n constructor(validators, asyncValidators, callSetDisabledState) {\n super();\n this.callSetDisabledState = callSetDisabledState;\n /**\n * @description\n * Reports whether the form submission has been triggered.\n */\n this.submitted = false;\n /**\n * Callback that should be invoked when controls in FormGroup or FormArray collection change\n * (added or removed). This callback triggers corresponding DOM updates.\n */\n this._onCollectionChange = () => this._updateDomValue();\n /**\n * @description\n * Tracks the list of added `FormControlName` instances\n */\n this.directives = [];\n /**\n * @description\n * Tracks the `FormGroup` bound to this directive.\n */\n this.form = null;\n /**\n * @description\n * Emits an event when the form submission has been triggered.\n */\n this.ngSubmit = new EventEmitter();\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this._checkFormPresent();\n if (changes.hasOwnProperty('form')) {\n this._updateValidators();\n this._updateDomValue();\n this._updateRegistrations();\n this._oldForm = this.form;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.form) {\n cleanUpValidators(this.form, this);\n // Currently the `onCollectionChange` callback is rewritten each time the\n // `_registerOnCollectionChange` function is invoked. The implication is that cleanup should\n // happen *only* when the `onCollectionChange` callback was set by this directive instance.\n // Otherwise it might cause overriding a callback of some other directive instances. We should\n // consider updating this logic later to make it similar to how `onChange` callbacks are\n // handled, see https://github.com/angular/angular/issues/39732 for additional info.\n if (this.form._onCollectionChange === this._onCollectionChange) {\n this.form._registerOnCollectionChange(() => { });\n }\n }\n }\n /**\n * @description\n * Returns this directive's instance.\n */\n get formDirective() {\n return this;\n }\n /**\n * @description\n * Returns the `FormGroup` bound to this directive.\n */\n get control() {\n return this.form;\n }\n /**\n * @description\n * Returns an array representing the path to this group. Because this directive\n * always lives at the top level of a form, it always an empty array.\n */\n get path() {\n return [];\n }\n /**\n * @description\n * Method that sets up the control directive in this group, re-calculates its value\n * and validity, and adds the instance to the internal list of directives.\n *\n * @param dir The `FormControlName` directive instance.\n */\n addControl(dir) {\n const ctrl = this.form.get(dir.path);\n setUpControl(ctrl, dir, this.callSetDisabledState);\n ctrl.updateValueAndValidity({ emitEvent: false });\n this.directives.push(dir);\n return ctrl;\n }\n /**\n * @description\n * Retrieves the `FormControl` instance from the provided `FormControlName` directive\n *\n * @param dir The `FormControlName` directive instance.\n */\n getControl(dir) {\n return this.form.get(dir.path);\n }\n /**\n * @description\n * Removes the `FormControlName` instance from the internal list of directives\n *\n * @param dir The `FormControlName` directive instance.\n */\n removeControl(dir) {\n cleanUpControl(dir.control || null, dir, /* validateControlPresenceOnChange */ false);\n removeListItem$1(this.directives, dir);\n }\n /**\n * Adds a new `FormGroupName` directive instance to the form.\n *\n * @param dir The `FormGroupName` directive instance.\n */\n addFormGroup(dir) {\n this._setUpFormContainer(dir);\n }\n /**\n * Performs the necessary cleanup when a `FormGroupName` directive instance is removed from the\n * view.\n *\n * @param dir The `FormGroupName` directive instance.\n */\n removeFormGroup(dir) {\n this._cleanUpFormContainer(dir);\n }\n /**\n * @description\n * Retrieves the `FormGroup` for a provided `FormGroupName` directive instance\n *\n * @param dir The `FormGroupName` directive instance.\n */\n getFormGroup(dir) {\n return this.form.get(dir.path);\n }\n /**\n * Performs the necessary setup when a `FormArrayName` directive instance is added to the view.\n *\n * @param dir The `FormArrayName` directive instance.\n */\n addFormArray(dir) {\n this._setUpFormContainer(dir);\n }\n /**\n * Performs the necessary cleanup when a `FormArrayName` directive instance is removed from the\n * view.\n *\n * @param dir The `FormArrayName` directive instance.\n */\n removeFormArray(dir) {\n this._cleanUpFormContainer(dir);\n }\n /**\n * @description\n * Retrieves the `FormArray` for a provided `FormArrayName` directive instance.\n *\n * @param dir The `FormArrayName` directive instance.\n */\n getFormArray(dir) {\n return this.form.get(dir.path);\n }\n /**\n * Sets the new value for the provided `FormControlName` directive.\n *\n * @param dir The `FormControlName` directive instance.\n * @param value The new value for the directive's control.\n */\n updateModel(dir, value) {\n const ctrl = this.form.get(dir.path);\n ctrl.setValue(value);\n }\n /**\n * @description\n * Method called with the \"submit\" event is triggered on the form.\n * Triggers the `ngSubmit` emitter to emit the \"submit\" event as its payload.\n *\n * @param $event The \"submit\" event object\n */\n onSubmit($event) {\n this.submitted = true;\n syncPendingControls(this.form, this.directives);\n this.ngSubmit.emit($event);\n // Forms with `method=\"dialog\"` have some special behavior that won't reload the page and that\n // shouldn't be prevented. Note that we need to null check the `event` and the `target`, because\n // some internal apps call this method directly with the wrong arguments.\n return $event?.target?.method === 'dialog';\n }\n /**\n * @description\n * Method called when the \"reset\" event is triggered on the form.\n */\n onReset() {\n this.resetForm();\n }\n /**\n * @description\n * Resets the form to an initial value and resets its submitted status.\n *\n * @param value The new value for the form.\n */\n resetForm(value = undefined) {\n this.form.reset(value);\n this.submitted = false;\n }\n /** @internal */\n _updateDomValue() {\n this.directives.forEach(dir => {\n const oldCtrl = dir.control;\n const newCtrl = this.form.get(dir.path);\n if (oldCtrl !== newCtrl) {\n // Note: the value of the `dir.control` may not be defined, for example when it's a first\n // `FormControl` that is added to a `FormGroup` instance (via `addControl` call).\n cleanUpControl(oldCtrl || null, dir);\n // Check whether new control at the same location inside the corresponding `FormGroup` is an\n // instance of `FormControl` and perform control setup only if that's the case.\n // Note: we don't need to clear the list of directives (`this.directives`) here, it would be\n // taken care of in the `removeControl` method invoked when corresponding `formControlName`\n // directive instance is being removed (invoked from `FormControlName.ngOnDestroy`).\n if (isFormControl(newCtrl)) {\n setUpControl(newCtrl, dir, this.callSetDisabledState);\n dir.control = newCtrl;\n }\n }\n });\n this.form._updateTreeValidity({ emitEvent: false });\n }\n _setUpFormContainer(dir) {\n const ctrl = this.form.get(dir.path);\n setUpFormContainer(ctrl, dir);\n // NOTE: this operation looks unnecessary in case no new validators were added in\n // `setUpFormContainer` call. Consider updating this code to match the logic in\n // `_cleanUpFormContainer` function.\n ctrl.updateValueAndValidity({ emitEvent: false });\n }\n _cleanUpFormContainer(dir) {\n if (this.form) {\n const ctrl = this.form.get(dir.path);\n if (ctrl) {\n const isControlUpdated = cleanUpFormContainer(ctrl, dir);\n if (isControlUpdated) {\n // Run validity check only in case a control was updated (i.e. view validators were\n // removed) as removing view validators might cause validity to change.\n ctrl.updateValueAndValidity({ emitEvent: false });\n }\n }\n }\n }\n _updateRegistrations() {\n this.form._registerOnCollectionChange(this._onCollectionChange);\n if (this._oldForm) {\n this._oldForm._registerOnCollectionChange(() => { });\n }\n }\n _updateValidators() {\n setUpValidators(this.form, this);\n if (this._oldForm) {\n cleanUpValidators(this._oldForm, this);\n }\n }\n _checkFormPresent() {\n if (!this.form && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw missingFormException();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormGroupDirective, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormGroupDirective, selector: \"[formGroup]\", inputs: { form: [\"formGroup\", \"form\"] }, outputs: { ngSubmit: \"ngSubmit\" }, host: { listeners: { \"submit\": \"onSubmit($event)\", \"reset\": \"onReset()\" } }, providers: [formDirectiveProvider], exportAs: [\"ngForm\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormGroupDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[formGroup]',\n providers: [formDirectiveProvider],\n host: { '(submit)': 'onSubmit($event)', '(reset)': 'onReset()' },\n exportAs: 'ngForm'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CALL_SET_DISABLED_STATE]\n }] }]; }, propDecorators: { form: [{\n type: Input,\n args: ['formGroup']\n }], ngSubmit: [{\n type: Output\n }] } });\n\nconst formGroupNameProvider = {\n provide: ControlContainer,\n useExisting: forwardRef(() => FormGroupName)\n};\n/**\n * @description\n *\n * Syncs a nested `FormGroup` or `FormRecord` to a DOM element.\n *\n * This directive can only be used with a parent `FormGroupDirective`.\n *\n * It accepts the string name of the nested `FormGroup` or `FormRecord` to link, and\n * looks for a `FormGroup` or `FormRecord` registered with that name in the parent\n * `FormGroup` instance you passed into `FormGroupDirective`.\n *\n * Use nested form groups to validate a sub-group of a\n * form separately from the rest or to group the values of certain\n * controls into their own nested object.\n *\n * @see [Reactive Forms Guide](guide/reactive-forms)\n *\n * @usageNotes\n *\n * ### Access the group by name\n *\n * The following example uses the `AbstractControl.get` method to access the\n * associated `FormGroup`\n *\n * ```ts\n * this.form.get('name');\n * ```\n *\n * ### Access individual controls in the group\n *\n * The following example uses the `AbstractControl.get` method to access\n * individual controls within the group using dot syntax.\n *\n * ```ts\n * this.form.get('name.first');\n * ```\n *\n * ### Register a nested `FormGroup`.\n *\n * The following example registers a nested *name* `FormGroup` within an existing `FormGroup`,\n * and provides methods to retrieve the nested `FormGroup` and individual controls.\n *\n * {@example forms/ts/nestedFormGroup/nested_form_group_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass FormGroupName extends AbstractFormGroupDirective {\n constructor(parent, validators, asyncValidators) {\n super();\n /**\n * @description\n * Tracks the name of the `FormGroup` bound to the directive. The name corresponds\n * to a key in the parent `FormGroup` or `FormArray`.\n * Accepts a name as a string or a number.\n * The name in the form of a string is useful for individual forms,\n * while the numerical form allows for form groups to be bound\n * to indices when iterating over groups in a `FormArray`.\n */\n this.name = null;\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /** @internal */\n _checkParentType() {\n if (_hasInvalidParent(this._parent) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw groupParentException();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormGroupName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormGroupName, selector: \"[formGroupName]\", inputs: { name: [\"formGroupName\", \"name\"] }, providers: [formGroupNameProvider], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormGroupName, decorators: [{\n type: Directive,\n args: [{ selector: '[formGroupName]', providers: [formGroupNameProvider] }]\n }], ctorParameters: function () { return [{ type: ControlContainer, decorators: [{\n type: Optional\n }, {\n type: Host\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }]; }, propDecorators: { name: [{\n type: Input,\n args: ['formGroupName']\n }] } });\nconst formArrayNameProvider = {\n provide: ControlContainer,\n useExisting: forwardRef(() => FormArrayName)\n};\n/**\n * @description\n *\n * Syncs a nested `FormArray` to a DOM element.\n *\n * This directive is designed to be used with a parent `FormGroupDirective` (selector:\n * `[formGroup]`).\n *\n * It accepts the string name of the nested `FormArray` you want to link, and\n * will look for a `FormArray` registered with that name in the parent\n * `FormGroup` instance you passed into `FormGroupDirective`.\n *\n * @see [Reactive Forms Guide](guide/reactive-forms)\n * @see {@link AbstractControl}\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example forms/ts/nestedFormArray/nested_form_array_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass FormArrayName extends ControlContainer {\n constructor(parent, validators, asyncValidators) {\n super();\n /**\n * @description\n * Tracks the name of the `FormArray` bound to the directive. The name corresponds\n * to a key in the parent `FormGroup` or `FormArray`.\n * Accepts a name as a string or a number.\n * The name in the form of a string is useful for individual forms,\n * while the numerical form allows for form arrays to be bound\n * to indices when iterating over arrays in a `FormArray`.\n */\n this.name = null;\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /**\n * A lifecycle method called when the directive's inputs are initialized. For internal use only.\n * @throws If the directive does not have a valid parent.\n * @nodoc\n */\n ngOnInit() {\n this._checkParentType();\n this.formDirective.addFormArray(this);\n }\n /**\n * A lifecycle method called before the directive's instance is destroyed. For internal use only.\n * @nodoc\n */\n ngOnDestroy() {\n if (this.formDirective) {\n this.formDirective.removeFormArray(this);\n }\n }\n /**\n * @description\n * The `FormArray` bound to this directive.\n */\n get control() {\n return this.formDirective.getFormArray(this);\n }\n /**\n * @description\n * The top-level directive for this group if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);\n }\n _checkParentType() {\n if (_hasInvalidParent(this._parent) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw arrayParentException();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormArrayName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormArrayName, selector: \"[formArrayName]\", inputs: { name: [\"formArrayName\", \"name\"] }, providers: [formArrayNameProvider], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormArrayName, decorators: [{\n type: Directive,\n args: [{ selector: '[formArrayName]', providers: [formArrayNameProvider] }]\n }], ctorParameters: function () { return [{ type: ControlContainer, decorators: [{\n type: Optional\n }, {\n type: Host\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }]; }, propDecorators: { name: [{\n type: Input,\n args: ['formArrayName']\n }] } });\nfunction _hasInvalidParent(parent) {\n return !(parent instanceof FormGroupName) && !(parent instanceof FormGroupDirective) &&\n !(parent instanceof FormArrayName);\n}\n\nconst controlNameBinding = {\n provide: NgControl,\n useExisting: forwardRef(() => FormControlName)\n};\n/**\n * @description\n * Syncs a `FormControl` in an existing `FormGroup` to a form control\n * element by name.\n *\n * @see [Reactive Forms Guide](guide/reactive-forms)\n * @see {@link FormControl}\n * @see {@link AbstractControl}\n *\n * @usageNotes\n *\n * ### Register `FormControl` within a group\n *\n * The following example shows how to register multiple form controls within a form group\n * and set their value.\n *\n * {@example forms/ts/simpleFormGroup/simple_form_group_example.ts region='Component'}\n *\n * To see `formControlName` examples with different form control types, see:\n *\n * * Radio buttons: `RadioControlValueAccessor`\n * * Selects: `SelectControlValueAccessor`\n *\n * ### Use with ngModel is deprecated\n *\n * Support for using the `ngModel` input property and `ngModelChange` event with reactive\n * form directives has been deprecated in Angular v6 and is scheduled for removal in\n * a future version of Angular.\n *\n * For details, see [Deprecated features](guide/deprecations#ngmodel-with-reactive-forms).\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass FormControlName extends NgControl {\n /**\n * @description\n * Triggers a warning in dev mode that this input should not be used with reactive forms.\n */\n set isDisabled(isDisabled) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(disabledAttrWarning);\n }\n }\n /**\n * @description\n * Static property used to track whether any ngModel warnings have been sent across\n * all instances of FormControlName. Used to support warning config of \"once\".\n *\n * @internal\n */\n static { this._ngModelWarningSentOnce = false; }\n constructor(parent, validators, asyncValidators, valueAccessors, _ngModelWarningConfig) {\n super();\n this._ngModelWarningConfig = _ngModelWarningConfig;\n this._added = false;\n /**\n * @description\n * Tracks the name of the `FormControl` bound to the directive. The name corresponds\n * to a key in the parent `FormGroup` or `FormArray`.\n * Accepts a name as a string or a number.\n * The name in the form of a string is useful for individual forms,\n * while the numerical form allows for form controls to be bound\n * to indices when iterating over controls in a `FormArray`.\n */\n this.name = null;\n /** @deprecated as of v6 */\n this.update = new EventEmitter();\n /**\n * @description\n * Instance property used to track whether an ngModel warning has been sent out for this\n * particular FormControlName instance. Used to support warning config of \"always\".\n *\n * @internal\n */\n this._ngModelWarningSent = false;\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n this.valueAccessor = selectValueAccessor(this, valueAccessors);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (!this._added)\n this._setUpControl();\n if (isPropertyUpdated(changes, this.viewModel)) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _ngModelWarning('formControlName', FormControlName, this, this._ngModelWarningConfig);\n }\n this.viewModel = this.model;\n this.formDirective.updateModel(this, this.model);\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.formDirective) {\n this.formDirective.removeControl(this);\n }\n }\n /**\n * @description\n * Sets the new value for the view model and emits an `ngModelChange` event.\n *\n * @param newValue The new value for the view model.\n */\n viewToModelUpdate(newValue) {\n this.viewModel = newValue;\n this.update.emit(newValue);\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);\n }\n /**\n * @description\n * The top-level directive for this group if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n _checkParentType() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!(this._parent instanceof FormGroupName) &&\n this._parent instanceof AbstractFormGroupDirective) {\n throw ngModelGroupException();\n }\n else if (!(this._parent instanceof FormGroupName) &&\n !(this._parent instanceof FormGroupDirective) &&\n !(this._parent instanceof FormArrayName)) {\n throw controlParentException();\n }\n }\n }\n _setUpControl() {\n this._checkParentType();\n this.control = this.formDirective.addControl(this);\n this._added = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormControlName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: NG_MODEL_WITH_FORM_CONTROL_WARNING, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormControlName, selector: \"[formControlName]\", inputs: { name: [\"formControlName\", \"name\"], isDisabled: [\"disabled\", \"isDisabled\"], model: [\"ngModel\", \"model\"] }, outputs: { update: \"ngModelChange\" }, providers: [controlNameBinding], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormControlName, decorators: [{\n type: Directive,\n args: [{ selector: '[formControlName]', providers: [controlNameBinding] }]\n }], ctorParameters: function () { return [{ type: ControlContainer, decorators: [{\n type: Optional\n }, {\n type: Host\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALUE_ACCESSOR]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NG_MODEL_WITH_FORM_CONTROL_WARNING]\n }] }]; }, propDecorators: { name: [{\n type: Input,\n args: ['formControlName']\n }], isDisabled: [{\n type: Input,\n args: ['disabled']\n }], model: [{\n type: Input,\n args: ['ngModel']\n }], update: [{\n type: Output,\n args: ['ngModelChange']\n }] } });\n\nconst SELECT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectControlValueAccessor),\n multi: true\n};\nfunction _buildValueString$1(id, value) {\n if (id == null)\n return `${value}`;\n if (value && typeof value === 'object')\n value = 'Object';\n return `${id}: ${value}`.slice(0, 50);\n}\nfunction _extractId$1(valueString) {\n return valueString.split(':')[0];\n}\n/**\n * @description\n * The `ControlValueAccessor` for writing select control values and listening to select control\n * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @usageNotes\n *\n * ### Using select controls in a reactive form\n *\n * The following examples show how to use a select control in a reactive form.\n *\n * {@example forms/ts/reactiveSelectControl/reactive_select_control_example.ts region='Component'}\n *\n * ### Using select controls in a template-driven form\n *\n * To use a select in a template-driven form, simply add an `ngModel` and a `name`\n * attribute to the main `<select>` tag.\n *\n * {@example forms/ts/selectControl/select_control_example.ts region='Component'}\n *\n * ### Customizing option selection\n *\n * Angular uses object identity to select option. It's possible for the identities of items\n * to change while the data does not. This can happen, for example, if the items are produced\n * from an RPC to the server, and that RPC is re-run. Even if the data hasn't changed, the\n * second response will produce objects with different identities.\n *\n * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.\n * `compareWith` takes a **function** which has two arguments: `option1` and `option2`.\n * If `compareWith` is given, Angular selects option by the return value of the function.\n *\n * ```ts\n * const selectedCountriesControl = new FormControl();\n * ```\n *\n * ```\n * <select [compareWith]=\"compareFn\" [formControl]=\"selectedCountriesControl\">\n * <option *ngFor=\"let country of countries\" [ngValue]=\"country\">\n * {{country.name}}\n * </option>\n * </select>\n *\n * compareFn(c1: Country, c2: Country): boolean {\n * return c1 && c2 ? c1.id === c2.id : c1 === c2;\n * }\n * ```\n *\n * **Note:** We listen to the 'change' event because 'input' events aren't fired\n * for selects in IE, see:\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event#browser_compatibility\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass SelectControlValueAccessor extends BuiltInControlValueAccessor {\n constructor() {\n super(...arguments);\n /** @internal */\n this._optionMap = new Map();\n /** @internal */\n this._idCounter = 0;\n this._compareWith = Object.is;\n }\n /**\n * @description\n * Tracks the option comparison algorithm for tracking identities when\n * checking for changes.\n */\n set compareWith(fn) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new ɵRuntimeError(1201 /* RuntimeErrorCode.COMPAREWITH_NOT_A_FN */, `compareWith must be a function, but received ${JSON.stringify(fn)}`);\n }\n this._compareWith = fn;\n }\n /**\n * Sets the \"value\" property on the select element.\n * @nodoc\n */\n writeValue(value) {\n this.value = value;\n const id = this._getOptionId(value);\n const valueString = _buildValueString$1(id, value);\n this.setProperty('value', valueString);\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = (valueString) => {\n this.value = this._getOptionValue(valueString);\n fn(this.value);\n };\n }\n /** @internal */\n _registerOption() {\n return (this._idCounter++).toString();\n }\n /** @internal */\n _getOptionId(value) {\n for (const id of this._optionMap.keys()) {\n if (this._compareWith(this._optionMap.get(id), value))\n return id;\n }\n return null;\n }\n /** @internal */\n _getOptionValue(valueString) {\n const id = _extractId$1(valueString);\n return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SelectControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: SelectControlValueAccessor, selector: \"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]\", inputs: { compareWith: \"compareWith\" }, host: { listeners: { \"change\": \"onChange($event.target.value)\", \"blur\": \"onTouched()\" } }, providers: [SELECT_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SelectControlValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]',\n host: { '(change)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\n providers: [SELECT_VALUE_ACCESSOR]\n }]\n }], propDecorators: { compareWith: [{\n type: Input\n }] } });\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n *\n * @see {@link SelectControlValueAccessor}\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgSelectOption {\n constructor(_element, _renderer, _select) {\n this._element = _element;\n this._renderer = _renderer;\n this._select = _select;\n if (this._select)\n this.id = this._select._registerOption();\n }\n /**\n * @description\n * Tracks the value bound to the option element. Unlike the value binding,\n * ngValue supports binding to objects.\n */\n set ngValue(value) {\n if (this._select == null)\n return;\n this._select._optionMap.set(this.id, value);\n this._setElementValue(_buildValueString$1(this.id, value));\n this._select.writeValue(this._select.value);\n }\n /**\n * @description\n * Tracks simple string values bound to the option element.\n * For objects, use the `ngValue` input binding.\n */\n set value(value) {\n this._setElementValue(value);\n if (this._select)\n this._select.writeValue(this._select.value);\n }\n /** @internal */\n _setElementValue(value) {\n this._renderer.setProperty(this._element.nativeElement, 'value', value);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._select) {\n this._select._optionMap.delete(this.id);\n this._select.writeValue(this._select.value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSelectOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgSelectOption, selector: \"option\", inputs: { ngValue: \"ngValue\", value: \"value\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSelectOption, decorators: [{\n type: Directive,\n args: [{ selector: 'option' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectControlValueAccessor, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { ngValue: [{\n type: Input,\n args: ['ngValue']\n }], value: [{\n type: Input,\n args: ['value']\n }] } });\n\nconst SELECT_MULTIPLE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectMultipleControlValueAccessor),\n multi: true\n};\nfunction _buildValueString(id, value) {\n if (id == null)\n return `${value}`;\n if (typeof value === 'string')\n value = `'${value}'`;\n if (value && typeof value === 'object')\n value = 'Object';\n return `${id}: ${value}`.slice(0, 50);\n}\nfunction _extractId(valueString) {\n return valueString.split(':')[0];\n}\n/** Mock interface for HTMLCollection */\nclass HTMLCollection {\n}\n/**\n * @description\n * The `ControlValueAccessor` for writing multi-select control values and listening to multi-select\n * control changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @see {@link SelectControlValueAccessor}\n *\n * @usageNotes\n *\n * ### Using a multi-select control\n *\n * The follow example shows you how to use a multi-select control with a reactive form.\n *\n * ```ts\n * const countryControl = new FormControl();\n * ```\n *\n * ```\n * <select multiple name=\"countries\" [formControl]=\"countryControl\">\n * <option *ngFor=\"let country of countries\" [ngValue]=\"country\">\n * {{ country.name }}\n * </option>\n * </select>\n * ```\n *\n * ### Customizing option selection\n *\n * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.\n * See the `SelectControlValueAccessor` for usage.\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass SelectMultipleControlValueAccessor extends BuiltInControlValueAccessor {\n constructor() {\n super(...arguments);\n /** @internal */\n this._optionMap = new Map();\n /** @internal */\n this._idCounter = 0;\n this._compareWith = Object.is;\n }\n /**\n * @description\n * Tracks the option comparison algorithm for tracking identities when\n * checking for changes.\n */\n set compareWith(fn) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new ɵRuntimeError(1201 /* RuntimeErrorCode.COMPAREWITH_NOT_A_FN */, `compareWith must be a function, but received ${JSON.stringify(fn)}`);\n }\n this._compareWith = fn;\n }\n /**\n * Sets the \"value\" property on one or of more of the select's options.\n * @nodoc\n */\n writeValue(value) {\n this.value = value;\n let optionSelectedStateSetter;\n if (Array.isArray(value)) {\n // convert values to ids\n const ids = value.map((v) => this._getOptionId(v));\n optionSelectedStateSetter = (opt, o) => {\n opt._setSelected(ids.indexOf(o.toString()) > -1);\n };\n }\n else {\n optionSelectedStateSetter = (opt, o) => {\n opt._setSelected(false);\n };\n }\n this._optionMap.forEach(optionSelectedStateSetter);\n }\n /**\n * Registers a function called when the control value changes\n * and writes an array of the selected options.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = (element) => {\n const selected = [];\n const selectedOptions = element.selectedOptions;\n if (selectedOptions !== undefined) {\n const options = selectedOptions;\n for (let i = 0; i < options.length; i++) {\n const opt = options[i];\n const val = this._getOptionValue(opt.value);\n selected.push(val);\n }\n }\n // Degrade to use `options` when `selectedOptions` property is not available.\n // Note: the `selectedOptions` is available in all supported browsers, but the Domino lib\n // doesn't have it currently, see https://github.com/fgnass/domino/issues/177.\n else {\n const options = element.options;\n for (let i = 0; i < options.length; i++) {\n const opt = options[i];\n if (opt.selected) {\n const val = this._getOptionValue(opt.value);\n selected.push(val);\n }\n }\n }\n this.value = selected;\n fn(selected);\n };\n }\n /** @internal */\n _registerOption(value) {\n const id = (this._idCounter++).toString();\n this._optionMap.set(id, value);\n return id;\n }\n /** @internal */\n _getOptionId(value) {\n for (const id of this._optionMap.keys()) {\n if (this._compareWith(this._optionMap.get(id)._value, value))\n return id;\n }\n return null;\n }\n /** @internal */\n _getOptionValue(valueString) {\n const id = _extractId(valueString);\n return this._optionMap.has(id) ? this._optionMap.get(id)._value : valueString;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SelectMultipleControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: SelectMultipleControlValueAccessor, selector: \"select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]\", inputs: { compareWith: \"compareWith\" }, host: { listeners: { \"change\": \"onChange($event.target)\", \"blur\": \"onTouched()\" } }, providers: [SELECT_MULTIPLE_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SelectMultipleControlValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]',\n host: { '(change)': 'onChange($event.target)', '(blur)': 'onTouched()' },\n providers: [SELECT_MULTIPLE_VALUE_ACCESSOR]\n }]\n }], propDecorators: { compareWith: [{\n type: Input\n }] } });\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n *\n * @see {@link SelectMultipleControlValueAccessor}\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass ɵNgSelectMultipleOption {\n constructor(_element, _renderer, _select) {\n this._element = _element;\n this._renderer = _renderer;\n this._select = _select;\n if (this._select) {\n this.id = this._select._registerOption(this);\n }\n }\n /**\n * @description\n * Tracks the value bound to the option element. Unlike the value binding,\n * ngValue supports binding to objects.\n */\n set ngValue(value) {\n if (this._select == null)\n return;\n this._value = value;\n this._setElementValue(_buildValueString(this.id, value));\n this._select.writeValue(this._select.value);\n }\n /**\n * @description\n * Tracks simple string values bound to the option element.\n * For objects, use the `ngValue` input binding.\n */\n set value(value) {\n if (this._select) {\n this._value = value;\n this._setElementValue(_buildValueString(this.id, value));\n this._select.writeValue(this._select.value);\n }\n else {\n this._setElementValue(value);\n }\n }\n /** @internal */\n _setElementValue(value) {\n this._renderer.setProperty(this._element.nativeElement, 'value', value);\n }\n /** @internal */\n _setSelected(selected) {\n this._renderer.setProperty(this._element.nativeElement, 'selected', selected);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._select) {\n this._select._optionMap.delete(this.id);\n this._select.writeValue(this._select.value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ɵNgSelectMultipleOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectMultipleControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: ɵNgSelectMultipleOption, selector: \"option\", inputs: { ngValue: \"ngValue\", value: \"value\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ɵNgSelectMultipleOption, decorators: [{\n type: Directive,\n args: [{ selector: 'option' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectMultipleControlValueAccessor, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { ngValue: [{\n type: Input,\n args: ['ngValue']\n }], value: [{\n type: Input,\n args: ['value']\n }] } });\n\n/**\n * Method that updates string to integer if not already a number\n *\n * @param value The value to convert to integer.\n * @returns value of parameter converted to number or integer.\n */\nfunction toInteger(value) {\n return typeof value === 'number' ? value : parseInt(value, 10);\n}\n/**\n * Method that ensures that provided value is a float (and converts it to float if needed).\n *\n * @param value The value to convert to float.\n * @returns value of parameter converted to number or float.\n */\nfunction toFloat(value) {\n return typeof value === 'number' ? value : parseFloat(value);\n}\n/**\n * A base class for Validator-based Directives. The class contains common logic shared across such\n * Directives.\n *\n * For internal use only, this class is not intended for use outside of the Forms package.\n */\nclass AbstractValidatorDirective {\n constructor() {\n this._validator = nullValidator;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this.inputName in changes) {\n const input = this.normalizeInput(changes[this.inputName].currentValue);\n this._enabled = this.enabled(input);\n this._validator = this._enabled ? this.createValidator(input) : nullValidator;\n if (this._onChange) {\n this._onChange();\n }\n }\n }\n /** @nodoc */\n validate(control) {\n return this._validator(control);\n }\n /** @nodoc */\n registerOnValidatorChange(fn) {\n this._onChange = fn;\n }\n /**\n * @description\n * Determines whether this validator should be active or not based on an input.\n * Base class implementation checks whether an input is defined (if the value is different from\n * `null` and `undefined`). Validator classes that extend this base class can override this\n * function with the logic specific to a particular validator directive.\n */\n enabled(input) {\n return input != null /* both `null` and `undefined` */;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AbstractValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: AbstractValidatorDirective, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AbstractValidatorDirective, decorators: [{\n type: Directive\n }] });\n/**\n * @description\n * Provider which adds `MaxValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MAX_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaxValidator),\n multi: true\n};\n/**\n * A directive which installs the {@link MaxValidator} for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `max` attribute.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a max validator\n *\n * The following example shows how to add a max validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input type=\"number\" ngModel max=\"4\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass MaxValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'max';\n /** @internal */\n this.normalizeInput = (input) => toFloat(input);\n /** @internal */\n this.createValidator = (max) => maxValidator(max);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: MaxValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: MaxValidator, selector: \"input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]\", inputs: { max: \"max\" }, host: { properties: { \"attr.max\": \"_enabled ? max : null\" } }, providers: [MAX_VALIDATOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: MaxValidator, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]',\n providers: [MAX_VALIDATOR],\n host: { '[attr.max]': '_enabled ? max : null' }\n }]\n }], propDecorators: { max: [{\n type: Input\n }] } });\n/**\n * @description\n * Provider which adds `MinValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MIN_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MinValidator),\n multi: true\n};\n/**\n * A directive which installs the {@link MinValidator} for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `min` attribute.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a min validator\n *\n * The following example shows how to add a min validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input type=\"number\" ngModel min=\"4\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass MinValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'min';\n /** @internal */\n this.normalizeInput = (input) => toFloat(input);\n /** @internal */\n this.createValidator = (min) => minValidator(min);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: MinValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: MinValidator, selector: \"input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]\", inputs: { min: \"min\" }, host: { properties: { \"attr.min\": \"_enabled ? min : null\" } }, providers: [MIN_VALIDATOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: MinValidator, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]',\n providers: [MIN_VALIDATOR],\n host: { '[attr.min]': '_enabled ? min : null' }\n }]\n }], propDecorators: { min: [{\n type: Input\n }] } });\n/**\n * @description\n * Provider which adds `RequiredValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst REQUIRED_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => RequiredValidator),\n multi: true\n};\n/**\n * @description\n * Provider which adds `CheckboxRequiredValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst CHECKBOX_REQUIRED_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CheckboxRequiredValidator),\n multi: true\n};\n/**\n * @description\n * A directive that adds the `required` validator to any controls marked with the\n * `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a required validator using template-driven forms\n *\n * ```\n * <input name=\"fullName\" ngModel required>\n * ```\n *\n * @ngModule FormsModule\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass RequiredValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'required';\n /** @internal */\n this.normalizeInput = booleanAttribute;\n /** @internal */\n this.createValidator = (input) => requiredValidator;\n }\n /** @nodoc */\n enabled(input) {\n return input;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: { required: \"required\" }, host: { properties: { \"attr.required\": \"_enabled ? \\\"\\\" : null\" } }, providers: [REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RequiredValidator, decorators: [{\n type: Directive,\n args: [{\n selector: ':not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]',\n providers: [REQUIRED_VALIDATOR],\n host: { '[attr.required]': '_enabled ? \"\" : null' }\n }]\n }], propDecorators: { required: [{\n type: Input\n }] } });\n/**\n * A Directive that adds the `required` validator to checkbox controls marked with the\n * `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a required checkbox validator using template-driven forms\n *\n * The following example shows how to add a checkbox required validator to an input attached to an\n * ngModel binding.\n *\n * ```\n * <input type=\"checkbox\" name=\"active\" ngModel required>\n * ```\n *\n * @publicApi\n * @ngModule FormsModule\n * @ngModule ReactiveFormsModule\n */\nclass CheckboxRequiredValidator extends RequiredValidator {\n constructor() {\n super(...arguments);\n /** @internal */\n this.createValidator = (input) => requiredTrueValidator;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CheckboxRequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: CheckboxRequiredValidator, selector: \"input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]\", host: { properties: { \"attr.required\": \"_enabled ? \\\"\\\" : null\" } }, providers: [CHECKBOX_REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CheckboxRequiredValidator, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]',\n providers: [CHECKBOX_REQUIRED_VALIDATOR],\n host: { '[attr.required]': '_enabled ? \"\" : null' }\n }]\n }] });\n/**\n * @description\n * Provider which adds `EmailValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst EMAIL_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => EmailValidator),\n multi: true\n};\n/**\n * A directive that adds the `email` validator to controls marked with the\n * `email` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * The email validation is based on the WHATWG HTML specification with some enhancements to\n * incorporate more RFC rules. More information can be found on the [Validators.email\n * page](api/forms/Validators#email).\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding an email validator\n *\n * The following example shows how to add an email validator to an input attached to an ngModel\n * binding.\n *\n * ```\n * <input type=\"email\" name=\"email\" ngModel email>\n * <input type=\"email\" name=\"email\" ngModel email=\"true\">\n * <input type=\"email\" name=\"email\" ngModel [email]=\"true\">\n * ```\n *\n * @publicApi\n * @ngModule FormsModule\n * @ngModule ReactiveFormsModule\n */\nclass EmailValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'email';\n /** @internal */\n this.normalizeInput = booleanAttribute;\n /** @internal */\n this.createValidator = (input) => emailValidator;\n }\n /** @nodoc */\n enabled(input) {\n return input;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: EmailValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: EmailValidator, selector: \"[email][formControlName],[email][formControl],[email][ngModel]\", inputs: { email: \"email\" }, providers: [EMAIL_VALIDATOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: EmailValidator, decorators: [{\n type: Directive,\n args: [{\n selector: '[email][formControlName],[email][formControl],[email][ngModel]',\n providers: [EMAIL_VALIDATOR]\n }]\n }], propDecorators: { email: [{\n type: Input\n }] } });\n/**\n * @description\n * Provider which adds `MinLengthValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MIN_LENGTH_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MinLengthValidator),\n multi: true\n};\n/**\n * A directive that adds minimum length validation to controls marked with the\n * `minlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a minimum length validator\n *\n * The following example shows how to add a minimum length validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input name=\"firstName\" ngModel minlength=\"4\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass MinLengthValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'minlength';\n /** @internal */\n this.normalizeInput = (input) => toInteger(input);\n /** @internal */\n this.createValidator = (minlength) => minLengthValidator(minlength);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: MinLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: MinLengthValidator, selector: \"[minlength][formControlName],[minlength][formControl],[minlength][ngModel]\", inputs: { minlength: \"minlength\" }, host: { properties: { \"attr.minlength\": \"_enabled ? minlength : null\" } }, providers: [MIN_LENGTH_VALIDATOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: MinLengthValidator, decorators: [{\n type: Directive,\n args: [{\n selector: '[minlength][formControlName],[minlength][formControl],[minlength][ngModel]',\n providers: [MIN_LENGTH_VALIDATOR],\n host: { '[attr.minlength]': '_enabled ? minlength : null' }\n }]\n }], propDecorators: { minlength: [{\n type: Input\n }] } });\n/**\n * @description\n * Provider which adds `MaxLengthValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MAX_LENGTH_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaxLengthValidator),\n multi: true\n};\n/**\n * A directive that adds max length validation to controls marked with the\n * `maxlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a maximum length validator\n *\n * The following example shows how to add a maximum length validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input name=\"firstName\" ngModel maxlength=\"25\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass MaxLengthValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'maxlength';\n /** @internal */\n this.normalizeInput = (input) => toInteger(input);\n /** @internal */\n this.createValidator = (maxlength) => maxLengthValidator(maxlength);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: MaxLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: MaxLengthValidator, selector: \"[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]\", inputs: { maxlength: \"maxlength\" }, host: { properties: { \"attr.maxlength\": \"_enabled ? maxlength : null\" } }, providers: [MAX_LENGTH_VALIDATOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: MaxLengthValidator, decorators: [{\n type: Directive,\n args: [{\n selector: '[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]',\n providers: [MAX_LENGTH_VALIDATOR],\n host: { '[attr.maxlength]': '_enabled ? maxlength : null' }\n }]\n }], propDecorators: { maxlength: [{\n type: Input\n }] } });\n/**\n * @description\n * Provider which adds `PatternValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst PATTERN_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PatternValidator),\n multi: true\n};\n/**\n * @description\n * A directive that adds regex pattern validation to controls marked with the\n * `pattern` attribute. The regex must match the entire control value.\n * The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a pattern validator\n *\n * The following example shows how to add a pattern validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input name=\"firstName\" ngModel pattern=\"[a-zA-Z ]*\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass PatternValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'pattern';\n /** @internal */\n this.normalizeInput = (input) => input;\n /** @internal */\n this.createValidator = (input) => patternValidator(input);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PatternValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: PatternValidator, selector: \"[pattern][formControlName],[pattern][formControl],[pattern][ngModel]\", inputs: { pattern: \"pattern\" }, host: { properties: { \"attr.pattern\": \"_enabled ? pattern : null\" } }, providers: [PATTERN_VALIDATOR], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PatternValidator, decorators: [{\n type: Directive,\n args: [{\n selector: '[pattern][formControlName],[pattern][formControl],[pattern][ngModel]',\n providers: [PATTERN_VALIDATOR],\n host: { '[attr.pattern]': '_enabled ? pattern : null' }\n }]\n }], propDecorators: { pattern: [{\n type: Input\n }] } });\n\nconst SHARED_FORM_DIRECTIVES = [\n ɵNgNoValidate,\n NgSelectOption,\n ɵNgSelectMultipleOption,\n DefaultValueAccessor,\n NumberValueAccessor,\n RangeValueAccessor,\n CheckboxControlValueAccessor,\n SelectControlValueAccessor,\n SelectMultipleControlValueAccessor,\n RadioControlValueAccessor,\n NgControlStatus,\n NgControlStatusGroup,\n RequiredValidator,\n MinLengthValidator,\n MaxLengthValidator,\n PatternValidator,\n CheckboxRequiredValidator,\n EmailValidator,\n MinValidator,\n MaxValidator,\n];\nconst TEMPLATE_DRIVEN_DIRECTIVES = [NgModel, NgModelGroup, NgForm];\nconst REACTIVE_DRIVEN_DIRECTIVES = [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName];\n/**\n * Internal module used for sharing directives between FormsModule and ReactiveFormsModule\n */\nclass ɵInternalFormsSharedModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ɵInternalFormsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: ɵInternalFormsSharedModule, declarations: [ɵNgNoValidate,\n NgSelectOption,\n ɵNgSelectMultipleOption,\n DefaultValueAccessor,\n NumberValueAccessor,\n RangeValueAccessor,\n CheckboxControlValueAccessor,\n SelectControlValueAccessor,\n SelectMultipleControlValueAccessor,\n RadioControlValueAccessor,\n NgControlStatus,\n NgControlStatusGroup,\n RequiredValidator,\n MinLengthValidator,\n MaxLengthValidator,\n PatternValidator,\n CheckboxRequiredValidator,\n EmailValidator,\n MinValidator,\n MaxValidator], imports: [RadioControlRegistryModule], exports: [ɵNgNoValidate,\n NgSelectOption,\n ɵNgSelectMultipleOption,\n DefaultValueAccessor,\n NumberValueAccessor,\n RangeValueAccessor,\n CheckboxControlValueAccessor,\n SelectControlValueAccessor,\n SelectMultipleControlValueAccessor,\n RadioControlValueAccessor,\n NgControlStatus,\n NgControlStatusGroup,\n RequiredValidator,\n MinLengthValidator,\n MaxLengthValidator,\n PatternValidator,\n CheckboxRequiredValidator,\n EmailValidator,\n MinValidator,\n MaxValidator] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ɵInternalFormsSharedModule, imports: [RadioControlRegistryModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ɵInternalFormsSharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: SHARED_FORM_DIRECTIVES,\n imports: [RadioControlRegistryModule],\n exports: SHARED_FORM_DIRECTIVES,\n }]\n }] });\n\n/**\n * Tracks the value and validity state of an array of `FormControl`,\n * `FormGroup` or `FormArray` instances.\n *\n * A `FormArray` aggregates the values of each child `FormControl` into an array.\n * It calculates its status by reducing the status values of its children. For example, if one of\n * the controls in a `FormArray` is invalid, the entire array becomes invalid.\n *\n * `FormArray` accepts one generic argument, which is the type of the controls inside.\n * If you need a heterogenous array, use {@link UntypedFormArray}.\n *\n * `FormArray` is one of the four fundamental building blocks used to define forms in Angular,\n * along with `FormControl`, `FormGroup`, and `FormRecord`.\n *\n * @usageNotes\n *\n * ### Create an array of form controls\n *\n * ```\n * const arr = new FormArray([\n * new FormControl('Nancy', Validators.minLength(2)),\n * new FormControl('Drew'),\n * ]);\n *\n * console.log(arr.value); // ['Nancy', 'Drew']\n * console.log(arr.status); // 'VALID'\n * ```\n *\n * ### Create a form array with array-level validators\n *\n * You include array-level validators and async validators. These come in handy\n * when you want to perform validation that considers the value of more than one child\n * control.\n *\n * The two types of validators are passed in separately as the second and third arg\n * respectively, or together as part of an options object.\n *\n * ```\n * const arr = new FormArray([\n * new FormControl('Nancy'),\n * new FormControl('Drew')\n * ], {validators: myValidator, asyncValidators: myAsyncValidator});\n * ```\n *\n * ### Set the updateOn property for all controls in a form array\n *\n * The options object is used to set a default value for each child\n * control's `updateOn` property. If you set `updateOn` to `'blur'` at the\n * array level, all child controls default to 'blur', unless the child\n * has explicitly specified a different `updateOn` value.\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl()\n * ], {updateOn: 'blur'});\n * ```\n *\n * ### Adding or removing controls from a form array\n *\n * To change the controls in the array, use the `push`, `insert`, `removeAt` or `clear` methods\n * in `FormArray` itself. These methods ensure the controls are properly tracked in the\n * form's hierarchy. Do not modify the array of `AbstractControl`s used to instantiate\n * the `FormArray` directly, as that result in strange and unexpected behavior such\n * as broken change detection.\n *\n * @publicApi\n */\nclass FormArray extends AbstractControl {\n /**\n * Creates a new `FormArray` instance.\n *\n * @param controls An array of child controls. Each child control is given an index\n * where it is registered.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or an `AbstractControlOptions` object that contains validation functions\n * and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator functions\n *\n */\n constructor(controls, validatorOrOpts, asyncValidator) {\n super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));\n this.controls = controls;\n this._initObservables();\n this._setUpdateStrategy(validatorOrOpts);\n this._setUpControls();\n this.updateValueAndValidity({\n onlySelf: true,\n // If `asyncValidator` is present, it will trigger control status change from `PENDING` to\n // `VALID` or `INVALID`.\n // The status should be broadcasted via the `statusChanges` observable, so we set `emitEvent`\n // to `true` to allow that during the control creation process.\n emitEvent: !!this.asyncValidator\n });\n }\n /**\n * Get the `AbstractControl` at the given `index` in the array.\n *\n * @param index Index in the array to retrieve the control. If `index` is negative, it will wrap\n * around from the back, and if index is greatly negative (less than `-length`), the result is\n * undefined. This behavior is the same as `Array.at(index)`.\n */\n at(index) {\n return this.controls[this._adjustIndex(index)];\n }\n /**\n * Insert a new `AbstractControl` at the end of the array.\n *\n * @param control Form control to be inserted\n * @param options Specifies whether this FormArray instance should emit events after a new\n * control is added.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * inserted. When false, no events are emitted.\n */\n push(control, options = {}) {\n this.controls.push(control);\n this._registerControl(control);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n this._onCollectionChange();\n }\n /**\n * Insert a new `AbstractControl` at the given `index` in the array.\n *\n * @param index Index in the array to insert the control. If `index` is negative, wraps around\n * from the back. If `index` is greatly negative (less than `-length`), prepends to the array.\n * This behavior is the same as `Array.splice(index, 0, control)`.\n * @param control Form control to be inserted\n * @param options Specifies whether this FormArray instance should emit events after a new\n * control is inserted.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * inserted. When false, no events are emitted.\n */\n insert(index, control, options = {}) {\n this.controls.splice(index, 0, control);\n this._registerControl(control);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n }\n /**\n * Remove the control at the given `index` in the array.\n *\n * @param index Index in the array to remove the control. If `index` is negative, wraps around\n * from the back. If `index` is greatly negative (less than `-length`), removes the first\n * element. This behavior is the same as `Array.splice(index, 1)`.\n * @param options Specifies whether this FormArray instance should emit events after a\n * control is removed.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * removed. When false, no events are emitted.\n */\n removeAt(index, options = {}) {\n // Adjust the index, then clamp it at no less than 0 to prevent undesired underflows.\n let adjustedIndex = this._adjustIndex(index);\n if (adjustedIndex < 0)\n adjustedIndex = 0;\n if (this.controls[adjustedIndex])\n this.controls[adjustedIndex]._registerOnCollectionChange(() => { });\n this.controls.splice(adjustedIndex, 1);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n }\n /**\n * Replace an existing control.\n *\n * @param index Index in the array to replace the control. If `index` is negative, wraps around\n * from the back. If `index` is greatly negative (less than `-length`), replaces the first\n * element. This behavior is the same as `Array.splice(index, 1, control)`.\n * @param control The `AbstractControl` control to replace the existing control\n * @param options Specifies whether this FormArray instance should emit events after an\n * existing control is replaced with a new one.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * replaced with a new one. When false, no events are emitted.\n */\n setControl(index, control, options = {}) {\n // Adjust the index, then clamp it at no less than 0 to prevent undesired underflows.\n let adjustedIndex = this._adjustIndex(index);\n if (adjustedIndex < 0)\n adjustedIndex = 0;\n if (this.controls[adjustedIndex])\n this.controls[adjustedIndex]._registerOnCollectionChange(() => { });\n this.controls.splice(adjustedIndex, 1);\n if (control) {\n this.controls.splice(adjustedIndex, 0, control);\n this._registerControl(control);\n }\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n this._onCollectionChange();\n }\n /**\n * Length of the control array.\n */\n get length() {\n return this.controls.length;\n }\n /**\n * Sets the value of the `FormArray`. It accepts an array that matches\n * the structure of the control.\n *\n * This method performs strict checks, and throws an error if you try\n * to set the value of a control that doesn't exist or if you exclude the\n * value of a control.\n *\n * @usageNotes\n * ### Set the values for the controls in the form array\n *\n * ```\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * console.log(arr.value); // [null, null]\n *\n * arr.setValue(['Nancy', 'Drew']);\n * console.log(arr.value); // ['Nancy', 'Drew']\n * ```\n *\n * @param value Array of values for the controls\n * @param options Configure options that determine how the control propagates changes and\n * emits events after the value changes\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default\n * is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control value is updated.\n * When false, no events are emitted.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n */\n setValue(value, options = {}) {\n assertAllValuesPresent(this, false, value);\n value.forEach((newValue, index) => {\n assertControlPresent(this, false, index);\n this.at(index).setValue(newValue, { onlySelf: true, emitEvent: options.emitEvent });\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Patches the value of the `FormArray`. It accepts an array that matches the\n * structure of the control, and does its best to match the values to the correct\n * controls in the group.\n *\n * It accepts both super-sets and sub-sets of the array without throwing an error.\n *\n * @usageNotes\n * ### Patch the values for controls in a form array\n *\n * ```\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * console.log(arr.value); // [null, null]\n *\n * arr.patchValue(['Nancy']);\n * console.log(arr.value); // ['Nancy', null]\n * ```\n *\n * @param value Array of latest values for the controls\n * @param options Configure options that determine how the control propagates changes and\n * emits events after the value changes\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default\n * is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control\n * value is updated. When false, no events are emitted. The configuration options are passed to\n * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method.\n */\n patchValue(value, options = {}) {\n // Even though the `value` argument type doesn't allow `null` and `undefined` values, the\n // `patchValue` can be called recursively and inner data structures might have these values,\n // so we just ignore such cases when a field containing FormArray instance receives `null` or\n // `undefined` as a value.\n if (value == null /* both `null` and `undefined` */)\n return;\n value.forEach((newValue, index) => {\n if (this.at(index)) {\n this.at(index).patchValue(newValue, { onlySelf: true, emitEvent: options.emitEvent });\n }\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Resets the `FormArray` and all descendants are marked `pristine` and `untouched`, and the\n * value of all descendants to null or null maps.\n *\n * You reset to a specific form state by passing in an array of states\n * that matches the structure of the control. The state is a standalone value\n * or a form state object with both a value and a disabled status.\n *\n * @usageNotes\n * ### Reset the values in a form array\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * arr.reset(['name', 'last name']);\n *\n * console.log(arr.value); // ['name', 'last name']\n * ```\n *\n * ### Reset the values in a form array and the disabled status for the first control\n *\n * ```\n * arr.reset([\n * {value: 'name', disabled: true},\n * 'last'\n * ]);\n *\n * console.log(arr.value); // ['last']\n * console.log(arr.at(0).status); // 'DISABLED'\n * ```\n *\n * @param value Array of values for the controls\n * @param options Configure options that determine how the control propagates changes and\n * emits events after the value changes\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default\n * is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is reset.\n * When false, no events are emitted.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n */\n reset(value = [], options = {}) {\n this._forEachChild((control, index) => {\n control.reset(value[index], { onlySelf: true, emitEvent: options.emitEvent });\n });\n this._updatePristine(options);\n this._updateTouched(options);\n this.updateValueAndValidity(options);\n }\n /**\n * The aggregate value of the array, including any disabled controls.\n *\n * Reports all values regardless of disabled status.\n */\n getRawValue() {\n return this.controls.map((control) => control.getRawValue());\n }\n /**\n * Remove all controls in the `FormArray`.\n *\n * @param options Specifies whether this FormArray instance should emit events after all\n * controls are removed.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when all controls\n * in this FormArray instance are removed. When false, no events are emitted.\n *\n * @usageNotes\n * ### Remove all elements from a FormArray\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * console.log(arr.length); // 2\n *\n * arr.clear();\n * console.log(arr.length); // 0\n * ```\n *\n * It's a simpler and more efficient alternative to removing all elements one by one:\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n *\n * while (arr.length) {\n * arr.removeAt(0);\n * }\n * ```\n */\n clear(options = {}) {\n if (this.controls.length < 1)\n return;\n this._forEachChild((control) => control._registerOnCollectionChange(() => { }));\n this.controls.splice(0);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n }\n /**\n * Adjusts a negative index by summing it with the length of the array. For very negative\n * indices, the result may remain negative.\n * @internal\n */\n _adjustIndex(index) {\n return index < 0 ? index + this.length : index;\n }\n /** @internal */\n _syncPendingControls() {\n let subtreeUpdated = this.controls.reduce((updated, child) => {\n return child._syncPendingControls() ? true : updated;\n }, false);\n if (subtreeUpdated)\n this.updateValueAndValidity({ onlySelf: true });\n return subtreeUpdated;\n }\n /** @internal */\n _forEachChild(cb) {\n this.controls.forEach((control, index) => {\n cb(control, index);\n });\n }\n /** @internal */\n _updateValue() {\n this.value =\n this.controls.filter((control) => control.enabled || this.disabled)\n .map((control) => control.value);\n }\n /** @internal */\n _anyControls(condition) {\n return this.controls.some((control) => control.enabled && condition(control));\n }\n /** @internal */\n _setUpControls() {\n this._forEachChild((control) => this._registerControl(control));\n }\n /** @internal */\n _allControlsDisabled() {\n for (const control of this.controls) {\n if (control.enabled)\n return false;\n }\n return this.controls.length > 0 || this.disabled;\n }\n _registerControl(control) {\n control.setParent(this);\n control._registerOnCollectionChange(this._onCollectionChange);\n }\n /** @internal */\n _find(name) {\n return this.at(name) ?? null;\n }\n}\nconst UntypedFormArray = FormArray;\n/**\n * @description\n * Asserts that the given control is an instance of `FormArray`\n *\n * @publicApi\n */\nconst isFormArray = (control) => control instanceof FormArray;\n\nfunction isAbstractControlOptions(options) {\n return !!options &&\n (options.asyncValidators !== undefined ||\n options.validators !== undefined ||\n options.updateOn !== undefined);\n}\n// clang-format on\n/**\n * @description\n * Creates an `AbstractControl` from a user-specified configuration.\n *\n * The `FormBuilder` provides syntactic sugar that shortens creating instances of a\n * `FormControl`, `FormGroup`, or `FormArray`. It reduces the amount of boilerplate needed to\n * build complex forms.\n *\n * @see [Reactive Forms Guide](guide/reactive-forms)\n *\n * @publicApi\n */\nclass FormBuilder {\n constructor() {\n this.useNonNullable = false;\n }\n /**\n * @description\n * Returns a FormBuilder in which automatically constructed `FormControl` elements\n * have `{nonNullable: true}` and are non-nullable.\n *\n * **Constructing non-nullable controls**\n *\n * When constructing a control, it will be non-nullable, and will reset to its initial value.\n *\n * ```ts\n * let nnfb = new FormBuilder().nonNullable;\n * let name = nnfb.control('Alex'); // FormControl<string>\n * name.reset();\n * console.log(name); // 'Alex'\n * ```\n *\n * **Constructing non-nullable groups or arrays**\n *\n * When constructing a group or array, all automatically created inner controls will be\n * non-nullable, and will reset to their initial values.\n *\n * ```ts\n * let nnfb = new FormBuilder().nonNullable;\n * let name = nnfb.group({who: 'Alex'}); // FormGroup<{who: FormControl<string>}>\n * name.reset();\n * console.log(name); // {who: 'Alex'}\n * ```\n * **Constructing *nullable* fields on groups or arrays**\n *\n * It is still possible to have a nullable field. In particular, any `FormControl` which is\n * *already* constructed will not be altered. For example:\n *\n * ```ts\n * let nnfb = new FormBuilder().nonNullable;\n * // FormGroup<{who: FormControl<string|null>}>\n * let name = nnfb.group({who: new FormControl('Alex')});\n * name.reset(); console.log(name); // {who: null}\n * ```\n *\n * Because the inner control is constructed explicitly by the caller, the builder has\n * no control over how it is created, and cannot exclude the `null`.\n */\n get nonNullable() {\n const nnfb = new FormBuilder();\n nnfb.useNonNullable = true;\n return nnfb;\n }\n group(controls, options = null) {\n const reducedControls = this._reduceControls(controls);\n let newOptions = {};\n if (isAbstractControlOptions(options)) {\n // `options` are `AbstractControlOptions`\n newOptions = options;\n }\n else if (options !== null) {\n // `options` are legacy form group options\n newOptions.validators = options.validator;\n newOptions.asyncValidators = options.asyncValidator;\n }\n return new FormGroup(reducedControls, newOptions);\n }\n /**\n * @description\n * Constructs a new `FormRecord` instance. Accepts a single generic argument, which is an object\n * containing all the keys and corresponding inner control types.\n *\n * @param controls A collection of child controls. The key for each child is the name\n * under which it is registered.\n *\n * @param options Configuration options object for the `FormRecord`. The object should have the\n * `AbstractControlOptions` type and might contain the following fields:\n * * `validators`: A synchronous validator function, or an array of validator functions.\n * * `asyncValidators`: A single async validator or array of async validator functions.\n * * `updateOn`: The event upon which the control should be updated (options: 'change' | 'blur'\n * | submit').\n */\n record(controls, options = null) {\n const reducedControls = this._reduceControls(controls);\n // Cast to `any` because the inferred types are not as specific as Element.\n return new FormRecord(reducedControls, options);\n }\n /**\n * @description\n * Constructs a new `FormControl` with the given state, validators and options. Sets\n * `{nonNullable: true}` in the options to get a non-nullable control. Otherwise, the\n * control will be nullable. Accepts a single generic argument, which is the type of the\n * control's value.\n *\n * @param formState Initializes the control with an initial state value, or\n * with an object that contains both a value and a disabled status.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or a `FormControlOptions` object that contains\n * validation functions and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator\n * functions.\n *\n * @usageNotes\n *\n * ### Initialize a control as disabled\n *\n * The following example returns a control with an initial value in a disabled state.\n *\n * <code-example path=\"forms/ts/formBuilder/form_builder_example.ts\" region=\"disabled-control\">\n * </code-example>\n */\n control(formState, validatorOrOpts, asyncValidator) {\n let newOptions = {};\n if (!this.useNonNullable) {\n return new FormControl(formState, validatorOrOpts, asyncValidator);\n }\n if (isAbstractControlOptions(validatorOrOpts)) {\n // If the second argument is options, then they are copied.\n newOptions = validatorOrOpts;\n }\n else {\n // If the other arguments are validators, they are copied into an options object.\n newOptions.validators = validatorOrOpts;\n newOptions.asyncValidators = asyncValidator;\n }\n return new FormControl(formState, { ...newOptions, nonNullable: true });\n }\n /**\n * Constructs a new `FormArray` from the given array of configurations,\n * validators and options. Accepts a single generic argument, which is the type of each control\n * inside the array.\n *\n * @param controls An array of child controls or control configs. Each child control is given an\n * index when it is registered.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of such functions, or an\n * `AbstractControlOptions` object that contains\n * validation functions and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator functions.\n */\n array(controls, validatorOrOpts, asyncValidator) {\n const createdControls = controls.map(c => this._createControl(c));\n // Cast to `any` because the inferred types are not as specific as Element.\n return new FormArray(createdControls, validatorOrOpts, asyncValidator);\n }\n /** @internal */\n _reduceControls(controls) {\n const createdControls = {};\n Object.keys(controls).forEach(controlName => {\n createdControls[controlName] = this._createControl(controls[controlName]);\n });\n return createdControls;\n }\n /** @internal */\n _createControl(controls) {\n if (controls instanceof FormControl) {\n return controls;\n }\n else if (controls instanceof AbstractControl) { // A control; just return it\n return controls;\n }\n else if (Array.isArray(controls)) { // ControlConfig Tuple\n const value = controls[0];\n const validator = controls.length > 1 ? controls[1] : null;\n const asyncValidator = controls.length > 2 ? controls[2] : null;\n return this.control(value, validator, asyncValidator);\n }\n else { // T or FormControlState<T>\n return this.control(controls);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormBuilder, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/**\n * @description\n * `NonNullableFormBuilder` is similar to {@link FormBuilder}, but automatically constructed\n * {@link FormControl} elements have `{nonNullable: true}` and are non-nullable.\n *\n * @publicApi\n */\nclass NonNullableFormBuilder {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NonNullableFormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NonNullableFormBuilder, providedIn: 'root', useFactory: () => inject(FormBuilder).nonNullable }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NonNullableFormBuilder, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(FormBuilder).nonNullable,\n }]\n }] });\n/**\n * UntypedFormBuilder is the same as `FormBuilder`, but it provides untyped controls.\n */\nclass UntypedFormBuilder extends FormBuilder {\n group(controlsConfig, options = null) {\n return super.group(controlsConfig, options);\n }\n /**\n * Like `FormBuilder#control`, except the resulting control is untyped.\n */\n control(formState, validatorOrOpts, asyncValidator) {\n return super.control(formState, validatorOrOpts, asyncValidator);\n }\n /**\n * Like `FormBuilder#array`, except the resulting array is untyped.\n */\n array(controlsConfig, validatorOrOpts, asyncValidator) {\n return super.array(controlsConfig, validatorOrOpts, asyncValidator);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UntypedFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UntypedFormBuilder, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UntypedFormBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the forms package.\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('16.2.12');\n\n/**\n * Exports the required providers and directives for template-driven forms,\n * making them available for import by NgModules that import this module.\n *\n * Providers associated with this module:\n * * `RadioControlRegistry`\n *\n * @see [Forms Overview](/guide/forms-overview)\n * @see [Template-driven Forms Guide](/guide/forms)\n *\n * @publicApi\n */\nclass FormsModule {\n /**\n * @description\n * Provides options for configuring the forms module.\n *\n * @param opts An object of configuration options\n * * `callSetDisabledState` Configures whether to `always` call `setDisabledState`, which is more\n * correct, or to only call it `whenDisabled`, which is the legacy behavior.\n */\n static withConfig(opts) {\n return {\n ngModule: FormsModule,\n providers: [{\n provide: CALL_SET_DISABLED_STATE,\n useValue: opts.callSetDisabledState ?? setDisabledStateDefault\n }]\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: FormsModule, declarations: [NgModel, NgModelGroup, NgForm], exports: [ɵInternalFormsSharedModule, NgModel, NgModelGroup, NgForm] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormsModule, imports: [ɵInternalFormsSharedModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormsModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: TEMPLATE_DRIVEN_DIRECTIVES,\n exports: [ɵInternalFormsSharedModule, TEMPLATE_DRIVEN_DIRECTIVES]\n }]\n }] });\n/**\n * Exports the required infrastructure and directives for reactive forms,\n * making them available for import by NgModules that import this module.\n *\n * Providers associated with this module:\n * * `RadioControlRegistry`\n *\n * @see [Forms Overview](guide/forms-overview)\n * @see [Reactive Forms Guide](guide/reactive-forms)\n *\n * @publicApi\n */\nclass ReactiveFormsModule {\n /**\n * @description\n * Provides options for configuring the reactive forms module.\n *\n * @param opts An object of configuration options\n * * `warnOnNgModelWithFormControl` Configures when to emit a warning when an `ngModel`\n * binding is used with reactive form directives.\n * * `callSetDisabledState` Configures whether to `always` call `setDisabledState`, which is more\n * correct, or to only call it `whenDisabled`, which is the legacy behavior.\n */\n static withConfig(opts) {\n return {\n ngModule: ReactiveFormsModule,\n providers: [\n {\n provide: NG_MODEL_WITH_FORM_CONTROL_WARNING,\n useValue: opts.warnOnNgModelWithFormControl ?? 'always'\n },\n {\n provide: CALL_SET_DISABLED_STATE,\n useValue: opts.callSetDisabledState ?? setDisabledStateDefault\n }\n ]\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ReactiveFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: ReactiveFormsModule, declarations: [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName], exports: [ɵInternalFormsSharedModule, FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ReactiveFormsModule, imports: [ɵInternalFormsSharedModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ReactiveFormsModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [REACTIVE_DRIVEN_DIRECTIVES],\n exports: [ɵInternalFormsSharedModule, REACTIVE_DRIVEN_DIRECTIVES]\n }]\n }] });\n\n/**\n * @module\n * @description\n * This module is used for handling user input, by defining and building a `FormGroup` that\n * consists of `FormControl` objects, and mapping them onto the DOM. `FormControl`\n * objects can then be used to read information from the form DOM elements.\n *\n * Forms providers are not included in default providers; you must import these providers\n * explicitly.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AbstractControl, AbstractControlDirective, AbstractFormGroupDirective, COMPOSITION_BUFFER_MODE, CheckboxControlValueAccessor, CheckboxRequiredValidator, ControlContainer, DefaultValueAccessor, EmailValidator, FormArray, FormArrayName, FormBuilder, FormControl, FormControlDirective, FormControlName, FormGroup, FormGroupDirective, FormGroupName, FormRecord, FormsModule, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, NgControlStatus, NgControlStatusGroup, NgForm, NgModel, NgModelGroup, NgSelectOption, NonNullableFormBuilder, NumberValueAccessor, PatternValidator, RadioControlValueAccessor, RangeValueAccessor, ReactiveFormsModule, RequiredValidator, SelectControlValueAccessor, SelectMultipleControlValueAccessor, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, VERSION, Validators, isFormArray, isFormControl, isFormGroup, isFormRecord, ɵInternalFormsSharedModule, ɵNgNoValidate, ɵNgSelectMultipleOption };\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function delay(delay, scheduler = async) {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source) => source.lift(new DelayOperator(delayFor, scheduler));\n}\nclass DelayOperator {\n constructor(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\nclass DelaySubscriber extends Subscriber {\n constructor(destination, delay, scheduler) {\n super(destination);\n this.delay = delay;\n this.scheduler = scheduler;\n this.queue = [];\n this.active = false;\n this.errored = false;\n }\n static dispatch(state) {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n }\n _schedule(scheduler) {\n this.active = true;\n const destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n scheduleNotification(notification) {\n if (this.errored === true) {\n return;\n }\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n _next(value) {\n this.scheduleNotification(Notification.createNext(value));\n }\n _error(err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\nclass DelayMessage {\n constructor(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n}\n","import * as i0 from '@angular/core';\nimport { InjectionToken, EventEmitter, TemplateRef, Directive, Inject, ViewChild, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, forwardRef, Optional, Host, NgModule } from '@angular/core';\nimport { mixinDisableRipple, MAT_OPTION_PARENT_COMPONENT, MAT_OPTGROUP, MatOption, MatOptionSelectionChange, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { ActiveDescendantKeyManager, addAriaReferencedId, removeAriaReferencedId } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty, coerceStringArray } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getEventTarget } from '@angular/cdk/platform';\nimport { trigger, state, style, transition, group, animate } from '@angular/animations';\nimport { Subscription, Subject, defer, merge, of, fromEvent } from 'rxjs';\nimport { ESCAPE, hasModifierKey, UP_ARROW, ENTER, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i4 from '@angular/material/form-field';\nimport { MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { startWith, switchMap, take, filter, map, tap, delay } from 'rxjs/operators';\nimport * as i2$1 from '@angular/cdk/bidi';\n\n// Animation values come from\n// https://github.com/material-components/material-components-web/blob/master/packages/mdc-menu-surface/_mixins.scss\n// TODO(mmalerba): Ideally find a way to import the values from MDC's code.\nconst panelAnimation = trigger('panelAnimation', [\n state('void, hidden', style({\n opacity: 0,\n transform: 'scaleY(0.8)',\n })),\n transition(':enter, hidden => visible', [\n group([\n animate('0.03s linear', style({ opacity: 1 })),\n animate('0.12s cubic-bezier(0, 0, 0.2, 1)', style({ transform: 'scaleY(1)' })),\n ]),\n ]),\n transition(':leave, visible => hidden', [animate('0.075s linear', style({ opacity: 0 }))]),\n]);\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueAutocompleteIdCounter = 0;\n/** Event object that is emitted when an autocomplete option is selected. */\nclass MatAutocompleteSelectedEvent {\n constructor(\n /** Reference to the autocomplete panel that emitted the event. */\n source, \n /** Option that was selected. */\n option) {\n this.source = source;\n this.option = option;\n }\n}\n// Boilerplate for applying mixins to MatAutocomplete.\n/** @docs-private */\nconst _MatAutocompleteMixinBase = mixinDisableRipple(class {\n});\n/** Injection token to be used to override the default options for `mat-autocomplete`. */\nconst MAT_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken('mat-autocomplete-default-options', {\n providedIn: 'root',\n factory: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {\n return {\n autoActiveFirstOption: false,\n autoSelectActiveOption: false,\n hideSingleSelectionIndicator: false,\n requireSelection: false,\n };\n}\n/** Base class with all of the `MatAutocomplete` functionality. */\nclass _MatAutocompleteBase extends _MatAutocompleteMixinBase {\n /** Whether the autocomplete panel is open. */\n get isOpen() {\n return this._isOpen && this.showPanel;\n }\n /** @docs-private Sets the theme color of the panel. */\n _setColor(value) {\n this._color = value;\n this._setThemeClasses(this._classList);\n }\n /**\n * Whether the first option should be highlighted when the autocomplete panel is opened.\n * Can be configured globally through the `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n */\n get autoActiveFirstOption() {\n return this._autoActiveFirstOption;\n }\n set autoActiveFirstOption(value) {\n this._autoActiveFirstOption = coerceBooleanProperty(value);\n }\n /** Whether the active option should be selected as the user is navigating. */\n get autoSelectActiveOption() {\n return this._autoSelectActiveOption;\n }\n set autoSelectActiveOption(value) {\n this._autoSelectActiveOption = coerceBooleanProperty(value);\n }\n /**\n * Whether the user is required to make a selection when they're interacting with the\n * autocomplete. If the user moves away from the autocomplete without selecting an option from\n * the list, the value will be reset. If the user opens the panel and closes it without\n * interacting or selecting a value, the initial value will be kept.\n */\n get requireSelection() {\n return this._requireSelection;\n }\n set requireSelection(value) {\n this._requireSelection = coerceBooleanProperty(value);\n }\n /**\n * Takes classes set on the host mat-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n set classList(value) {\n if (value && value.length) {\n this._classList = coerceStringArray(value).reduce((classList, className) => {\n classList[className] = true;\n return classList;\n }, {});\n }\n else {\n this._classList = {};\n }\n this._setVisibilityClasses(this._classList);\n this._setThemeClasses(this._classList);\n this._elementRef.nativeElement.className = '';\n }\n constructor(_changeDetectorRef, _elementRef, _defaults, platform) {\n super();\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._defaults = _defaults;\n this._activeOptionChanges = Subscription.EMPTY;\n /** Whether the autocomplete panel should be visible, depending on option length. */\n this.showPanel = false;\n this._isOpen = false;\n /** Function that maps an option's control value to its display value in the trigger. */\n this.displayWith = null;\n /** Event that is emitted whenever an option from the list is selected. */\n this.optionSelected = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is opened. */\n this.opened = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is closed. */\n this.closed = new EventEmitter();\n /** Emits whenever an option is activated. */\n this.optionActivated = new EventEmitter();\n this._classList = {};\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n this.id = `mat-autocomplete-${_uniqueAutocompleteIdCounter++}`;\n // TODO(crisbeto): the problem that the `inertGroups` option resolves is only present on\n // Safari using VoiceOver. We should occasionally check back to see whether the bug\n // wasn't resolved in VoiceOver, and if it has, we can remove this and the `inertGroups`\n // option altogether.\n this.inertGroups = platform?.SAFARI || false;\n this._autoActiveFirstOption = !!_defaults.autoActiveFirstOption;\n this._autoSelectActiveOption = !!_defaults.autoSelectActiveOption;\n this._requireSelection = !!_defaults.requireSelection;\n }\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager(this.options)\n .withWrap()\n .skipPredicate(this._skipPredicate);\n this._activeOptionChanges = this._keyManager.change.subscribe(index => {\n if (this.isOpen) {\n this.optionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n }\n });\n // Set the initial visibility state.\n this._setVisibility();\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._activeOptionChanges.unsubscribe();\n }\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n */\n _setScrollTop(scrollTop) {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n /** Returns the panel's scrollTop. */\n _getScrollTop() {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n /** Panel should hide itself when the option list is empty. */\n _setVisibility() {\n this.showPanel = !!this.options.length;\n this._setVisibilityClasses(this._classList);\n this._changeDetectorRef.markForCheck();\n }\n /** Emits the `select` event. */\n _emitSelectEvent(option) {\n const event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n /** Gets the aria-labelledby for the autocomplete panel. */\n _getPanelAriaLabelledby(labelId) {\n if (this.ariaLabel) {\n return null;\n }\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n /** Sets the autocomplete visibility classes on a classlist based on the panel is visible. */\n _setVisibilityClasses(classList) {\n classList[this._visibleClass] = this.showPanel;\n classList[this._hiddenClass] = !this.showPanel;\n }\n /** Sets the theming classes on a classlist based on the theme of the panel. */\n _setThemeClasses(classList) {\n classList['mat-primary'] = this._color === 'primary';\n classList['mat-warn'] = this._color === 'warn';\n classList['mat-accent'] = this._color === 'accent';\n }\n _skipPredicate(option) {\n return option.disabled;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteBase, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: _MatAutocompleteBase, inputs: { ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], displayWith: \"displayWith\", autoActiveFirstOption: \"autoActiveFirstOption\", autoSelectActiveOption: \"autoSelectActiveOption\", requireSelection: \"requireSelection\", panelWidth: \"panelWidth\", classList: [\"class\", \"classList\"] }, outputs: { optionSelected: \"optionSelected\", opened: \"opened\", closed: \"closed\", optionActivated: \"optionActivated\" }, viewQueries: [{ propertyName: \"template\", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }] }, { type: i1.Platform }]; }, propDecorators: { template: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], panel: [{\n type: ViewChild,\n args: ['panel']\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], displayWith: [{\n type: Input\n }], autoActiveFirstOption: [{\n type: Input\n }], autoSelectActiveOption: [{\n type: Input\n }], requireSelection: [{\n type: Input\n }], panelWidth: [{\n type: Input\n }], optionSelected: [{\n type: Output\n }], opened: [{\n type: Output\n }], closed: [{\n type: Output\n }], optionActivated: [{\n type: Output\n }], classList: [{\n type: Input,\n args: ['class']\n }] } });\nclass MatAutocomplete extends _MatAutocompleteBase {\n constructor() {\n super(...arguments);\n this._visibleClass = 'mat-mdc-autocomplete-visible';\n this._hiddenClass = 'mat-mdc-autocomplete-hidden';\n this._animationDone = new EventEmitter();\n this._hideSingleSelectionIndicator = this._defaults.hideSingleSelectionIndicator ?? false;\n }\n /** Whether checkmark indicator for single-selection options is hidden. */\n get hideSingleSelectionIndicator() {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value) {\n this._hideSingleSelectionIndicator = coerceBooleanProperty(value);\n this._syncParentProperties();\n }\n /** Syncs the parent state with the individual options. */\n _syncParentProperties() {\n if (this.options) {\n for (const option of this.options) {\n option._changeDetectorRef.markForCheck();\n }\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._animationDone.complete();\n }\n // `skipPredicate` determines if key manager should avoid putting a given option in the tab\n // order. Allow disabled list items to receive focus via keyboard to align with WAI ARIA\n // recommendation.\n //\n // Normally WAI ARIA's instructions are to exclude disabled items from the tab order, but it\n // makes a few exceptions for compound widgets.\n //\n // From [Developing a Keyboard Interface](\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\n // Listbox...\"\n //\n // The user can focus disabled options using the keyboard, but the user cannot click disabled\n // options.\n _skipPredicate(_option) {\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocomplete, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatAutocomplete, selector: \"mat-autocomplete\", inputs: { disableRipple: \"disableRipple\", hideSingleSelectionIndicator: \"hideSingleSelectionIndicator\" }, host: { attributes: { \"ngSkipHydration\": \"\" }, classAttribute: \"mat-mdc-autocomplete\" }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], queries: [{ propertyName: \"optionGroups\", predicate: MAT_OPTGROUP, descendants: true }, { propertyName: \"options\", predicate: MatOption, descendants: true }], exportAs: [\"matAutocomplete\"], usesInheritance: true, ngImport: i0, template: \"<ng-template let-formFieldId=\\\"id\\\">\\n <div\\n class=\\\"mat-mdc-autocomplete-panel mdc-menu-surface mdc-menu-surface--open\\\"\\n role=\\\"listbox\\\"\\n [id]=\\\"id\\\"\\n [ngClass]=\\\"_classList\\\"\\n [attr.aria-label]=\\\"ariaLabel || null\\\"\\n [attr.aria-labelledby]=\\\"_getPanelAriaLabelledby(formFieldId)\\\"\\n [@panelAnimation]=\\\"isOpen ? 'visible' : 'hidden'\\\"\\n (@panelAnimation.done)=\\\"_animationDone.next($event)\\\"\\n #panel>\\n <ng-content></ng-content>\\n </div>\\n</ng-template>\\n\", styles: [\"div.mat-mdc-autocomplete-panel{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-autocomplete-background-color)}.cdk-high-contrast-active div.mat-mdc-autocomplete-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden}mat-autocomplete{display:none}\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], animations: [panelAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocomplete, decorators: [{\n type: Component,\n args: [{ selector: 'mat-autocomplete', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'matAutocomplete', inputs: ['disableRipple'], host: {\n 'class': 'mat-mdc-autocomplete',\n 'ngSkipHydration': '',\n }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], animations: [panelAnimation], template: \"<ng-template let-formFieldId=\\\"id\\\">\\n <div\\n class=\\\"mat-mdc-autocomplete-panel mdc-menu-surface mdc-menu-surface--open\\\"\\n role=\\\"listbox\\\"\\n [id]=\\\"id\\\"\\n [ngClass]=\\\"_classList\\\"\\n [attr.aria-label]=\\\"ariaLabel || null\\\"\\n [attr.aria-labelledby]=\\\"_getPanelAriaLabelledby(formFieldId)\\\"\\n [@panelAnimation]=\\\"isOpen ? 'visible' : 'hidden'\\\"\\n (@panelAnimation.done)=\\\"_animationDone.next($event)\\\"\\n #panel>\\n <ng-content></ng-content>\\n </div>\\n</ng-template>\\n\", styles: [\"div.mat-mdc-autocomplete-panel{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-autocomplete-background-color)}.cdk-high-contrast-active div.mat-mdc-autocomplete-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden}mat-autocomplete{display:none}\"] }]\n }], propDecorators: { optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, { descendants: true }]\n }], options: [{\n type: ContentChildren,\n args: [MatOption, { descendants: true }]\n }], hideSingleSelectionIndicator: [{\n type: Input\n }] } });\n\n/** Base class containing all of the functionality for `MatAutocompleteOrigin`. */\nclass _MatAutocompleteOriginBase {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteOriginBase, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: _MatAutocompleteOriginBase, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteOriginBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\nclass MatAutocompleteOrigin extends _MatAutocompleteOriginBase {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteOrigin, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatAutocompleteOrigin, selector: \"[matAutocompleteOrigin]\", exportAs: [\"matAutocompleteOrigin\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[matAutocompleteOrigin]',\n exportAs: 'matAutocompleteOrigin',\n }]\n }] });\n\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatAutocompleteTrigger),\n multi: true,\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nfunction getMatAutocompleteMissingPanelError() {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n \"you're attempting to open it after the ngAfterContentInit hook.\");\n}\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy');\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,\n};\n/** Base class with all of the `MatAutocompleteTrigger` functionality. */\nclass _MatAutocompleteTriggerBase {\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n get autocompleteDisabled() {\n return this._autocompleteDisabled;\n }\n set autocompleteDisabled(value) {\n this._autocompleteDisabled = coerceBooleanProperty(value);\n }\n constructor(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, scrollStrategy, _dir, _formField, _document, _viewportRuler, _defaults) {\n this._element = _element;\n this._overlay = _overlay;\n this._viewContainerRef = _viewContainerRef;\n this._zone = _zone;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._formField = _formField;\n this._document = _document;\n this._viewportRuler = _viewportRuler;\n this._defaults = _defaults;\n this._componentDestroyed = false;\n this._autocompleteDisabled = false;\n /** Whether or not the label state is being overridden. */\n this._manuallyFloatingLabel = false;\n /** Subscription to viewport size changes. */\n this._viewportSubscription = Subscription.EMPTY;\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n this._canOpenOnNextFocus = true;\n /** Stream of keyboard events that can close the panel. */\n this._closeKeyEventStream = new Subject();\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n this._windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._element.nativeElement || this.panelOpen;\n };\n /** `View -> model callback called when value changes` */\n this._onChange = () => { };\n /** `View -> model callback called when autocomplete has been touched` */\n this._onTouched = () => { };\n /**\n * Position of the autocomplete panel relative to the trigger element. A position of `auto`\n * will render the panel underneath the trigger if there is enough space for it to fit in\n * the viewport, otherwise the panel will be shown above it. If the position is set to\n * `above` or `below`, the panel will always be shown above or below the trigger. no matter\n * whether it fits completely in the viewport.\n */\n this.position = 'auto';\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n this.autocompleteAttribute = 'off';\n this._overlayAttached = false;\n /** Stream of changes to the selection state of the autocomplete options. */\n this.optionSelections = defer(() => {\n const options = this.autocomplete ? this.autocomplete.options : null;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this._zone.onStable.pipe(take(1), switchMap(() => this.optionSelections));\n });\n /** Handles keyboard events coming from the overlay panel. */\n this._handlePanelKeydown = (event) => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {\n // If the user had typed something in before we autoselected an option, and they decided\n // to cancel the selection, restore the input value to the one they had typed in.\n if (this._pendingAutoselectedOption) {\n this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');\n this._pendingAutoselectedOption = null;\n }\n this._closeKeyEventStream.next();\n this._resetActiveItem();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n };\n /**\n * Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is\n * inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options\n * panel. Track the modal we have changed so we can undo the changes on destroy.\n */\n this._trackedModal = null;\n this._scrollStrategy = scrollStrategy;\n }\n ngAfterViewInit() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => window.addEventListener('blur', this._windowBlurHandler));\n }\n }\n ngOnChanges(changes) {\n if (changes['position'] && this._positionStrategy) {\n this._setStrategyPositions(this._positionStrategy);\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n }\n }\n ngOnDestroy() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n window.removeEventListener('blur', this._windowBlurHandler);\n }\n this._viewportSubscription.unsubscribe();\n this._componentDestroyed = true;\n this._destroyPanel();\n this._closeKeyEventStream.complete();\n this._clearFromModal();\n }\n /** Whether or not the autocomplete panel is open. */\n get panelOpen() {\n return this._overlayAttached && this.autocomplete.showPanel;\n }\n /** Opens the autocomplete suggestion panel. */\n openPanel() {\n this._attachOverlay();\n this._floatLabel();\n // Add aria-owns attribute when the autocomplete becomes visible.\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n addAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n }\n /** Closes the autocomplete suggestion panel. */\n closePanel() {\n this._resetLabel();\n if (!this._overlayAttached) {\n return;\n }\n if (this.panelOpen) {\n // Only emit if the panel was visible.\n // The `NgZone.onStable` always emits outside of the Angular zone,\n // so all the subscriptions from `_subscribeToClosingActions()` are also outside of the Angular zone.\n // We should manually run in Angular zone to update UI after panel closing.\n this._zone.run(() => {\n this.autocomplete.closed.emit();\n });\n }\n this.autocomplete._isOpen = this._overlayAttached = false;\n this._pendingAutoselectedOption = null;\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n this._updatePanelState();\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this._componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n // Remove aria-owns attribute when the autocomplete is no longer visible.\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n }\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition() {\n if (this._overlayAttached) {\n this._overlayRef.updatePosition();\n }\n }\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions() {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)), this._closeKeyEventStream, this._getOutsideClickStream(), this._overlayRef\n ? this._overlayRef.detachments().pipe(filter(() => this._overlayAttached))\n : of()).pipe(\n // Normalize the output so we return a consistent type.\n map(event => (event instanceof MatOptionSelectionChange ? event : null)));\n }\n /** The currently active option, coerced to MatOption type. */\n get activeOption() {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n }\n /** Stream of clicks outside of the autocomplete panel. */\n _getOutsideClickStream() {\n return merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'auxclick'), fromEvent(this._document, 'touchend')).pipe(filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = _getEventTarget(event);\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n return (this._overlayAttached &&\n clickTarget !== this._element.nativeElement &&\n // Normally focus moves inside `mousedown` so this condition will almost always be\n // true. Its main purpose is to handle the case where the input is focused from an\n // outside click which propagates up to the `body` listener within the same sequence\n // and causes the panel to close immediately (see #3106).\n this._document.activeElement !== this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!customOrigin || !customOrigin.contains(clickTarget)) &&\n !!this._overlayRef &&\n !this._overlayRef.overlayElement.contains(clickTarget));\n }));\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n Promise.resolve(null).then(() => this._assignOptionValue(value));\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this._element.nativeElement.disabled = isDisabled;\n }\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const hasModifier = hasModifierKey(event);\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE && !hasModifier) {\n event.preventDefault();\n }\n if (this.activeOption && keyCode === ENTER && this.panelOpen && !hasModifier) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n }\n else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete._keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (keyCode === TAB || (isArrowKey && !hasModifier && this.panelOpen)) {\n this.autocomplete._keyManager.onKeydown(event);\n }\n else if (isArrowKey && this._canOpen()) {\n this.openPanel();\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n if (this.autocomplete.autoSelectActiveOption && this.activeOption) {\n if (!this._pendingAutoselectedOption) {\n this._valueBeforeAutoSelection = this._element.nativeElement.value;\n }\n this._pendingAutoselectedOption = this.activeOption;\n this._assignOptionValue(this.activeOption.value);\n }\n }\n }\n }\n _handleInput(event) {\n let target = event.target;\n let value = target.value;\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value == '' ? null : parseFloat(value);\n }\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this._previousValue !== value) {\n this._previousValue = value;\n this._pendingAutoselectedOption = null;\n // If selection is required we don't write to the CVA while the user is typing.\n // At the end of the selection either the user will have picked something\n // or we'll reset the value back to null.\n if (!this.autocomplete || !this.autocomplete.requireSelection) {\n this._onChange(value);\n }\n if (!value) {\n this._clearPreviousSelectedOption(null, false);\n }\n if (this._canOpen() && this._document.activeElement === event.target) {\n this.openPanel();\n }\n }\n }\n _handleFocus() {\n if (!this._canOpenOnNextFocus) {\n this._canOpenOnNextFocus = true;\n }\n else if (this._canOpen()) {\n this._previousValue = this._element.nativeElement.value;\n this._attachOverlay();\n this._floatLabel(true);\n }\n }\n _handleClick() {\n if (this._canOpen() && !this.panelOpen) {\n this.openPanel();\n }\n }\n /**\n * In \"auto\" mode, the label will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the label until the panel can be closed.\n * @param shouldAnimate Whether the label should be animated when it is floated.\n */\n _floatLabel(shouldAnimate = false) {\n if (this._formField && this._formField.floatLabel === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockLabel();\n }\n else {\n this._formField.floatLabel = 'always';\n }\n this._manuallyFloatingLabel = true;\n }\n }\n /** If the label has been manually elevated, return it to its normal state. */\n _resetLabel() {\n if (this._manuallyFloatingLabel) {\n if (this._formField) {\n this._formField.floatLabel = 'auto';\n }\n this._manuallyFloatingLabel = false;\n }\n }\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n _subscribeToClosingActions() {\n const firstStable = this._zone.onStable.pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(tap(() => this._positionStrategy.reapplyLastPosition()), \n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0));\n // When the zone is stable initially, and when the option list changes...\n return (merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n // The `NgZone.onStable` always emits outside of the Angular zone, thus we have to re-enter\n // the Angular zone. This will lead to change detection being called outside of the Angular\n // zone and the `autocomplete.opened` will also emit outside of the Angular.\n this._zone.run(() => {\n const wasOpen = this.panelOpen;\n this._resetActiveItem();\n this._updatePanelState();\n this._changeDetectorRef.detectChanges();\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n if (wasOpen !== this.panelOpen) {\n // If the `panelOpen` state changed, we need to make sure to emit the `opened` or\n // `closed` event, because we may not have emitted it. This can happen\n // - if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing,\n // - if the panel is closed after the user entered a string that did not match any\n // of the available options,\n // - if a valid string is entered after an invalid one.\n if (this.panelOpen) {\n this._captureValueOnAttach();\n this._emitOpened();\n }\n else {\n this.autocomplete.closed.emit();\n }\n }\n });\n return this.panelClosingActions;\n }), \n // when the first closing event occurs...\n take(1))\n // set the value, close the panel, and complete.\n .subscribe(event => this._setValueAndClose(event)));\n }\n /**\n * Emits the opened event once it's known that the panel will be shown and stores\n * the state of the trigger right before the opening sequence was finished.\n */\n _emitOpened() {\n this.autocomplete.opened.emit();\n }\n /** Intended to be called when the panel is attached. Captures the current value of the input. */\n _captureValueOnAttach() {\n this._valueOnAttach = this._element.nativeElement.value;\n }\n /** Destroys the autocomplete suggestion panel. */\n _destroyPanel() {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n _assignOptionValue(value) {\n const toDisplay = this.autocomplete && this.autocomplete.displayWith\n ? this.autocomplete.displayWith(value)\n : value;\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n this._updateNativeInputValue(toDisplay != null ? toDisplay : '');\n }\n _updateNativeInputValue(value) {\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = value;\n }\n else {\n this._element.nativeElement.value = value;\n }\n this._previousValue = value;\n }\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n _setValueAndClose(event) {\n const panel = this.autocomplete;\n const toSelect = event ? event.source : this._pendingAutoselectedOption;\n if (toSelect) {\n this._clearPreviousSelectedOption(toSelect);\n this._assignOptionValue(toSelect.value);\n // TODO(crisbeto): this should wait until the animation is done, otherwise the value\n // gets reset while the panel is still animating which looks glitchy. It'll likely break\n // some tests to change it at this point.\n this._onChange(toSelect.value);\n panel._emitSelectEvent(toSelect);\n this._element.nativeElement.focus();\n }\n else if (panel.requireSelection &&\n this._element.nativeElement.value !== this._valueOnAttach) {\n this._clearPreviousSelectedOption(null);\n this._assignOptionValue(null);\n // Wait for the animation to finish before clearing the form control value, otherwise\n // the options might change while the animation is running which looks glitchy.\n if (panel._animationDone) {\n panel._animationDone.pipe(take(1)).subscribe(() => this._onChange(null));\n }\n else {\n this._onChange(null);\n }\n }\n this.closePanel();\n }\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n _clearPreviousSelectedOption(skip, emitEvent) {\n // Null checks are necessary here, because the autocomplete\n // or its options may not have been assigned yet.\n this.autocomplete?.options?.forEach(option => {\n if (option !== skip && option.selected) {\n option.deselect(emitEvent);\n }\n });\n }\n _attachOverlay() {\n if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatAutocompleteMissingPanelError();\n }\n let overlayRef = this._overlayRef;\n if (!overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef, {\n id: this._formField?.getLabelId(),\n });\n overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef = overlayRef;\n this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n });\n }\n else {\n // Update the trigger, panel width and direction, in case anything has changed.\n this._positionStrategy.setOrigin(this._getConnectedElement());\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n const wasOpen = this.panelOpen;\n this.autocomplete._isOpen = this._overlayAttached = true;\n this.autocomplete._setColor(this._formField?.color);\n this._updatePanelState();\n this._applyModalPanelOwnership();\n this._captureValueOnAttach();\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this._emitOpened();\n }\n }\n /** Updates the panel's visibility state and any trigger state tied to id. */\n _updatePanelState() {\n this.autocomplete._setVisibility();\n // Note that here we subscribe and unsubscribe based on the panel's visiblity state,\n // because the act of subscribing will prevent events from reaching other overlays and\n // we don't want to block the events if there are no options.\n if (this.panelOpen) {\n const overlayRef = this._overlayRef;\n if (!this._keydownSubscription) {\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n this._keydownSubscription = overlayRef.keydownEvents().subscribe(this._handlePanelKeydown);\n }\n if (!this._outsideClickSubscription) {\n // Subscribe to the pointer events stream so that it doesn't get picked up by other overlays.\n // TODO(crisbeto): we should switch `_getOutsideClickStream` eventually to use this stream,\n // but the behvior isn't exactly the same and it ends up breaking some internal tests.\n this._outsideClickSubscription = overlayRef.outsidePointerEvents().subscribe();\n }\n }\n else {\n this._keydownSubscription?.unsubscribe();\n this._outsideClickSubscription?.unsubscribe();\n this._keydownSubscription = this._outsideClickSubscription = null;\n }\n }\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getPanelWidth(),\n direction: this._dir ?? undefined,\n panelClass: this._defaults?.overlayPanelClass,\n });\n }\n _getOverlayPosition() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false);\n this._setStrategyPositions(strategy);\n this._positionStrategy = strategy;\n return strategy;\n }\n /** Sets the positions on a position strategy based on the directive's input state. */\n _setStrategyPositions(positionStrategy) {\n // Note that we provide horizontal fallback positions, even though by default the dropdown\n // width matches the input, because consumers can override the width. See #18854.\n const belowPositions = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n ];\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n const panelClass = this._aboveClass;\n const abovePositions = [\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', panelClass },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', panelClass },\n ];\n let positions;\n if (this.position === 'above') {\n positions = abovePositions;\n }\n else if (this.position === 'below') {\n positions = belowPositions;\n }\n else {\n positions = [...belowPositions, ...abovePositions];\n }\n positionStrategy.withPositions(positions);\n }\n _getConnectedElement() {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n }\n _getPanelWidth() {\n return this.autocomplete.panelWidth || this._getHostWidth();\n }\n /** Returns the width of the input element, so the panel width can match it. */\n _getHostWidth() {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n /**\n * Reset the active item to -1. This is so that pressing arrow keys will activate the correct\n * option.\n *\n * If the consumer opted-in to automatically activatating the first option, activate the first\n * *enabled* option.\n */\n _resetActiveItem() {\n const autocomplete = this.autocomplete;\n if (autocomplete.autoActiveFirstOption) {\n // Find the index of the first *enabled* option. Avoid calling `_keyManager.setActiveItem`\n // because it activates the first option that passes the skip predicate, rather than the\n // first *enabled* option.\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < autocomplete.options.length; index++) {\n const option = autocomplete.options.get(index);\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n autocomplete._keyManager.setActiveItem(firstEnabledOptionIndex);\n }\n else {\n autocomplete._keyManager.setActiveItem(-1);\n }\n }\n /** Determines whether the panel can be opened. */\n _canOpen() {\n const element = this._element.nativeElement;\n return !element.readOnly && !element.disabled && !this._autocompleteDisabled;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document?.defaultView || window;\n }\n /** Scrolls to a particular option in the list. */\n _scrollToOption(index) {\n // Given that we are not actually focusing active options, we must manually adjust scroll\n // to reveal options below the fold. First, we find the offset of the option from the top\n // of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n // the panel height + the option height, so the active option will be just visible at the\n // bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n // will become the offset. If that offset is visible within the panel already, the scrollTop is\n // not adjusted.\n const autocomplete = this.autocomplete;\n const labelCount = _countGroupLabelsBeforeOption(index, autocomplete.options, autocomplete.optionGroups);\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n autocomplete._setScrollTop(0);\n }\n else if (autocomplete.panel) {\n const option = autocomplete.options.toArray()[index];\n if (option) {\n const element = option._getHostElement();\n const newScrollPosition = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, autocomplete._getScrollTop(), autocomplete.panel.nativeElement.offsetHeight);\n autocomplete._setScrollTop(newScrollPosition);\n }\n }\n }\n /**\n * If the autocomplete trigger is inside of an `aria-modal` element, connect\n * that modal to the options panel with `aria-owns`.\n *\n * For some browser + screen reader combinations, when navigation is inside\n * of an `aria-modal` element, the screen reader treats everything outside\n * of that modal as hidden or invisible.\n *\n * This causes a problem when the combobox trigger is _inside_ of a modal, because the\n * options panel is rendered _outside_ of that modal, preventing screen reader navigation\n * from reaching the panel.\n *\n * We can work around this issue by applying `aria-owns` to the modal with the `id` of\n * the options panel. This effectively communicates to assistive technology that the\n * options panel is part of the same interaction as the modal.\n *\n * At time of this writing, this issue is present in VoiceOver.\n * See https://github.com/angular/components/issues/20694\n */\n _applyModalPanelOwnership() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modal = this._element.nativeElement.closest('body > .cdk-overlay-container [aria-modal=\"true\"]');\n if (!modal) {\n // Most commonly, the autocomplete trigger is not inside a modal.\n return;\n }\n const panelId = this.autocomplete.id;\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n addAriaReferencedId(modal, 'aria-owns', panelId);\n this._trackedModal = modal;\n }\n /** Clears the references to the listbox overlay element from the modal it was added to. */\n _clearFromModal() {\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n this._trackedModal = null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteTriggerBase, deps: [{ token: i0.ElementRef }, { token: i1$1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: MAT_AUTOCOMPLETE_SCROLL_STRATEGY }, { token: i2$1.Directionality, optional: true }, { token: MAT_FORM_FIELD, host: true, optional: true }, { token: DOCUMENT, optional: true }, { token: i3.ViewportRuler }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: _MatAutocompleteTriggerBase, inputs: { autocomplete: [\"matAutocomplete\", \"autocomplete\"], position: [\"matAutocompletePosition\", \"position\"], connectedTo: [\"matAutocompleteConnectedTo\", \"connectedTo\"], autocompleteAttribute: [\"autocomplete\", \"autocompleteAttribute\"], autocompleteDisabled: [\"matAutocompleteDisabled\", \"autocompleteDisabled\"] }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteTriggerBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY]\n }] }, { type: i2$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i4.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }, {\n type: Host\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i3.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }] }]; }, propDecorators: { autocomplete: [{\n type: Input,\n args: ['matAutocomplete']\n }], position: [{\n type: Input,\n args: ['matAutocompletePosition']\n }], connectedTo: [{\n type: Input,\n args: ['matAutocompleteConnectedTo']\n }], autocompleteAttribute: [{\n type: Input,\n args: ['autocomplete']\n }], autocompleteDisabled: [{\n type: Input,\n args: ['matAutocompleteDisabled']\n }] } });\nclass MatAutocompleteTrigger extends _MatAutocompleteTriggerBase {\n constructor() {\n super(...arguments);\n this._aboveClass = 'mat-mdc-autocomplete-panel-above';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatAutocompleteTrigger, selector: \"input[matAutocomplete], textarea[matAutocomplete]\", host: { listeners: { \"focusin\": \"_handleFocus()\", \"blur\": \"_onTouched()\", \"input\": \"_handleInput($event)\", \"keydown\": \"_handleKeydown($event)\", \"click\": \"_handleClick()\" }, properties: { \"attr.autocomplete\": \"autocompleteAttribute\", \"attr.role\": \"autocompleteDisabled ? null : \\\"combobox\\\"\", \"attr.aria-autocomplete\": \"autocompleteDisabled ? null : \\\"list\\\"\", \"attr.aria-activedescendant\": \"(panelOpen && activeOption) ? activeOption.id : null\", \"attr.aria-expanded\": \"autocompleteDisabled ? null : panelOpen.toString()\", \"attr.aria-controls\": \"(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id\", \"attr.aria-haspopup\": \"autocompleteDisabled ? null : \\\"listbox\\\"\" }, classAttribute: \"mat-mdc-autocomplete-trigger\" }, providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR], exportAs: [\"matAutocompleteTrigger\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteTrigger, decorators: [{\n type: Directive,\n args: [{\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'class': 'mat-mdc-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',\n '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n '[attr.aria-controls]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n '[attr.aria-haspopup]': 'autocompleteDisabled ? null : \"listbox\"',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick()',\n },\n exportAs: 'matAutocompleteTrigger',\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR],\n }]\n }] });\n\nclass MatAutocompleteModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteModule, declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin], imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule], exports: [CdkScrollableModule,\n MatAutocomplete,\n MatOptionModule,\n MatCommonModule,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteModule, providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule, CdkScrollableModule,\n MatOptionModule,\n MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule],\n exports: [\n CdkScrollableModule,\n MatAutocomplete,\n MatOptionModule,\n MatCommonModule,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n ],\n declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocomplete, MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, _MatAutocompleteBase, _MatAutocompleteOriginBase, _MatAutocompleteTriggerBase, getMatAutocompleteMissingPanelError };\n","import * as i0 from '@angular/core';\nimport { Version, InjectionToken, inject, NgModule, Optional, Inject, LOCALE_ID, Injectable, Directive, Input, Component, ViewEncapsulation, ChangeDetectionStrategy, EventEmitter, Output, ViewChild, ANIMATION_MODULE_TYPE as ANIMATION_MODULE_TYPE$1, NgZone, ElementRef } from '@angular/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport { isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader } from '@angular/cdk/a11y';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { VERSION as VERSION$1 } from '@angular/cdk';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { Platform, _isTestEnvironment, normalizePassiveListenerOptions, _getEventTarget } from '@angular/cdk/platform';\nimport { coerceBooleanProperty, coerceNumberProperty, coerceElement } from '@angular/cdk/coercion';\nimport { Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { ENTER, SPACE, hasModifierKey } from '@angular/cdk/keycodes';\n\n/** Current version of Angular Material. */\nconst VERSION = new Version('16.2.14');\n\n/** @docs-private */\nclass AnimationCurves {\n static { this.STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)'; }\n static { this.DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)'; }\n static { this.ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)'; }\n static { this.SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)'; }\n}\n/** @docs-private */\nclass AnimationDurations {\n static { this.COMPLEX = '375ms'; }\n static { this.ENTERING = '225ms'; }\n static { this.EXITING = '195ms'; }\n}\n\n/** @docs-private */\nfunction MATERIAL_SANITY_CHECKS_FACTORY() {\n return true;\n}\n/** Injection token that configures whether the Material sanity checks are enabled. */\nconst MATERIAL_SANITY_CHECKS = new InjectionToken('mat-sanity-checks', {\n providedIn: 'root',\n factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\nclass MatCommonModule {\n constructor(highContrastModeDetector, _sanityChecks, _document) {\n this._sanityChecks = _sanityChecks;\n this._document = _document;\n /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n this._hasDoneGlobalChecks = false;\n // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n // in MatCommonModule.\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n if (!this._hasDoneGlobalChecks) {\n this._hasDoneGlobalChecks = true;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Inject in here so the reference to `Platform` can be removed in production mode.\n const platform = inject(Platform, { optional: true });\n if (this._checkIsEnabled('doctype')) {\n _checkDoctypeIsDefined(this._document);\n }\n if (this._checkIsEnabled('theme')) {\n _checkThemeIsPresent(this._document, !!platform?.isBrowser);\n }\n if (this._checkIsEnabled('version')) {\n _checkCdkVersionMatch();\n }\n }\n }\n }\n /** Gets whether a specific sanity check is enabled. */\n _checkIsEnabled(name) {\n if (_isTestEnvironment()) {\n return false;\n }\n if (typeof this._sanityChecks === 'boolean') {\n return this._sanityChecks;\n }\n return !!this._sanityChecks[name];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCommonModule, deps: [{ token: i1.HighContrastModeDetector }, { token: MATERIAL_SANITY_CHECKS, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCommonModule, imports: [BidiModule], exports: [BidiModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCommonModule, imports: [BidiModule, BidiModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule],\n exports: [BidiModule],\n }]\n }], ctorParameters: function () { return [{ type: i1.HighContrastModeDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MATERIAL_SANITY_CHECKS]\n }] }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/** Checks that the page has a doctype. */\nfunction _checkDoctypeIsDefined(doc) {\n if (!doc.doctype) {\n console.warn('Current document does not have a doctype. This may cause ' +\n 'some Angular Material components not to behave as expected.');\n }\n}\n/** Checks that a theme has been included. */\nfunction _checkThemeIsPresent(doc, isBrowser) {\n // We need to assert that the `body` is defined, because these checks run very early\n // and the `body` won't be defined if the consumer put their scripts in the `head`.\n if (!doc.body || !isBrowser) {\n return;\n }\n const testElement = doc.createElement('div');\n testElement.classList.add('mat-theme-loaded-marker');\n doc.body.appendChild(testElement);\n const computedStyle = getComputedStyle(testElement);\n // In some situations the computed style of the test element can be null. For example in\n // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n if (computedStyle && computedStyle.display !== 'none') {\n console.warn('Could not find Angular Material core theme. Most Material ' +\n 'components may not work as expected. For more info refer ' +\n 'to the theming guide: https://material.angular.io/guide/theming');\n }\n testElement.remove();\n}\n/** Checks whether the Material version matches the CDK version. */\nfunction _checkCdkVersionMatch() {\n if (VERSION.full !== VERSION$1.full) {\n console.warn('The Angular Material version (' +\n VERSION.full +\n ') does not match ' +\n 'the Angular CDK version (' +\n VERSION$1.full +\n ').\\n' +\n 'Please ensure the versions of these two packages exactly match.');\n }\n}\n\nfunction mixinDisabled(base) {\n return class extends base {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n constructor(...args) {\n super(...args);\n this._disabled = false;\n }\n };\n}\n\nfunction mixinColor(base, defaultColor) {\n return class extends base {\n get color() {\n return this._color;\n }\n set color(value) {\n const colorPalette = value || this.defaultColor;\n if (colorPalette !== this._color) {\n if (this._color) {\n this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n }\n if (colorPalette) {\n this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n }\n this._color = colorPalette;\n }\n }\n constructor(...args) {\n super(...args);\n this.defaultColor = defaultColor;\n // Set the default color that can be specified from the mixin.\n this.color = defaultColor;\n }\n };\n}\n\nfunction mixinDisableRipple(base) {\n return class extends base {\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() {\n return this._disableRipple;\n }\n set disableRipple(value) {\n this._disableRipple = coerceBooleanProperty(value);\n }\n constructor(...args) {\n super(...args);\n this._disableRipple = false;\n }\n };\n}\n\nfunction mixinTabIndex(base, defaultTabIndex = 0) {\n return class extends base {\n get tabIndex() {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n }\n constructor(...args) {\n super(...args);\n this._tabIndex = defaultTabIndex;\n this.defaultTabIndex = defaultTabIndex;\n }\n };\n}\n\nfunction mixinErrorState(base) {\n return class extends base {\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n const control = this.ngControl ? this.ngControl.control : null;\n const newState = matcher.isErrorState(control, parent);\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n constructor(...args) {\n super(...args);\n /** Whether the component is in an error state. */\n this.errorState = false;\n }\n };\n}\n\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nfunction mixinInitialized(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n /** Whether this directive has been marked as initialized. */\n this._isInitialized = false;\n /**\n * List of subscribers that subscribed before the directive was initialized. Should be notified\n * during _markInitialized. Set to null after pending subscribers are notified, and should\n * not expect to be populated after.\n */\n this._pendingSubscribers = [];\n /**\n * Observable stream that emits when the directive initializes. If already initialized, the\n * subscriber is stored to be notified once _markInitialized is called.\n */\n this.initialized = new Observable(subscriber => {\n // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n // when _markInitialized is called.\n if (this._isInitialized) {\n this._notifySubscriber(subscriber);\n }\n else {\n this._pendingSubscribers.push(subscriber);\n }\n });\n }\n /**\n * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n * of ngOnInit.\n * @docs-private\n */\n _markInitialized() {\n if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This directive has already been marked as initialized and ' +\n 'should not be called twice.');\n }\n this._isInitialized = true;\n this._pendingSubscribers.forEach(this._notifySubscriber);\n this._pendingSubscribers = null;\n }\n /** Emits and completes the subscriber stream (should only emit once). */\n _notifySubscriber(subscriber) {\n subscriber.next();\n subscriber.complete();\n }\n };\n}\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nconst MAT_DATE_LOCALE = new InjectionToken('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: MAT_DATE_LOCALE_FACTORY,\n});\n/** @docs-private */\nfunction MAT_DATE_LOCALE_FACTORY() {\n return inject(LOCALE_ID);\n}\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nclass DateAdapter {\n constructor() {\n this._localeChanges = new Subject();\n /** A stream that emits when the locale changes. */\n this.localeChanges = this._localeChanges;\n }\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj) {\n return this.isDateInstance(obj) && this.isValid(obj) ? obj : null;\n }\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value) {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale) {\n this.locale = locale;\n this._localeChanges.next();\n }\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first, second) {\n return (this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second));\n }\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first, second) {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date, min, max) {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n\nconst MAT_DATE_FORMATS = new InjectionToken('mat-date-formats');\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n/** Creates an array and fills it with values. */\nfunction range(length, valueFunction) {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\nclass NativeDateAdapter extends DateAdapter {\n constructor(matDateLocale, \n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\n _platform) {\n super();\n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\n this.useUtcForDisplay = false;\n super.setLocale(matDateLocale);\n }\n getYear(date) {\n return date.getFullYear();\n }\n getMonth(date) {\n return date.getMonth();\n }\n getDate(date) {\n return date.getDate();\n }\n getDayOfWeek(date) {\n return date.getDay();\n }\n getMonthNames(style) {\n const dtf = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n }\n getDateNames() {\n const dtf = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n getDayOfWeekNames(style) {\n const dtf = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n getYearName(date) {\n const dtf = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n return this._format(dtf, date);\n }\n getFirstDayOfWeek() {\n // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n return 0;\n }\n getNumDaysInMonth(date) {\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\n }\n clone(date) {\n return new Date(date.getTime());\n }\n createDate(year, month, date) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n return result;\n }\n today() {\n return new Date();\n }\n parse(value, parseFormat) {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n const dtf = new Intl.DateTimeFormat(this.locale, { ...displayFormat, timeZone: 'utc' });\n return this._format(dtf, date);\n }\n addCalendarYears(date, years) {\n return this.addCalendarMonths(date, years * 12);\n }\n addCalendarMonths(date, months) {\n let newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != (((this.getMonth(date) + months) % 12) + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n return newDate;\n }\n addCalendarDays(date, days) {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n }\n toIso8601(date) {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate()),\n ].join('-');\n }\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n deserialize(value) {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n isDateInstance(obj) {\n return obj instanceof Date;\n }\n isValid(date) {\n return !isNaN(date.getTime());\n }\n invalid() {\n return new Date(NaN);\n }\n /** Creates a date but allows the month and date to overflow. */\n _createDateWithOverflow(year, month, date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n _2digit(n) {\n return ('00' + n).slice(-2);\n }\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n _format(dtf, date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateAdapter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateAdapter, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_LOCALE]\n }] }, { type: i1$1.Platform }]; } });\n\nconst MAT_NATIVE_DATE_FORMATS = {\n parse: {\n dateInput: null,\n },\n display: {\n dateInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\n },\n};\n\nclass NativeDateModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateModule, providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NativeDateModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }],\n }]\n }] });\nclass MatNativeDateModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatNativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatNativeDateModule, imports: [NativeDateModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatNativeDateModule, providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS }], imports: [NativeDateModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatNativeDateModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [NativeDateModule],\n providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS }],\n }]\n }] });\n\n/** Error state matcher that matches when a control is invalid and dirty. */\nclass ShowOnDirtyErrorStateMatcher {\n isErrorState(control, form) {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, decorators: [{\n type: Injectable\n }] });\n/** Provider that defines how form controls behave with regards to displaying error messages. */\nclass ErrorStateMatcher {\n isErrorState(control, form) {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ErrorStateMatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ErrorStateMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\nclass MatLine {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLine, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatLine, selector: \"[mat-line], [matLine]\", host: { classAttribute: \"mat-line\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLine, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-line], [matLine]',\n host: { 'class': 'mat-line' },\n }]\n }] });\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nfunction setLines(lines, element, prefix = 'mat') {\n // Note: doesn't need to unsubscribe, because `changes`\n // gets completed by Angular when the view is destroyed.\n lines.changes.pipe(startWith(lines)).subscribe(({ length }) => {\n setClass(element, `${prefix}-2-line`, false);\n setClass(element, `${prefix}-3-line`, false);\n setClass(element, `${prefix}-multi-line`, false);\n if (length === 2 || length === 3) {\n setClass(element, `${prefix}-${length}-line`, true);\n }\n else if (length > 3) {\n setClass(element, `${prefix}-multi-line`, true);\n }\n });\n}\n/** Adds or removes a class from an element. */\nfunction setClass(element, className, isAdd) {\n element.nativeElement.classList.toggle(className, isAdd);\n}\nclass MatLineModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLineModule, declarations: [MatLine], imports: [MatCommonModule], exports: [MatLine, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLineModule, imports: [MatCommonModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLineModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [MatLine, MatCommonModule],\n declarations: [MatLine],\n }]\n }] });\n\n/**\n * Reference to a previously launched ripple element.\n */\nclass RippleRef {\n constructor(_renderer, \n /** Reference to the ripple HTML element. */\n element, \n /** Ripple configuration used for the ripple. */\n config, \n /* Whether animations are forcibly disabled for ripples through CSS. */\n _animationForciblyDisabledThroughCss = false) {\n this._renderer = _renderer;\n this.element = element;\n this.config = config;\n this._animationForciblyDisabledThroughCss = _animationForciblyDisabledThroughCss;\n /** Current state of the ripple. */\n this.state = 3 /* RippleState.HIDDEN */;\n }\n /** Fades out the ripple element. */\n fadeOut() {\n this._renderer.fadeOutRipple(this);\n }\n}\n\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions$1 = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Manages events through delegation so that as few event handlers as possible are bound. */\nclass RippleEventManager {\n constructor() {\n this._events = new Map();\n /** Event handler that is bound and which dispatches the events to the different targets. */\n this._delegateEventHandler = (event) => {\n const target = _getEventTarget(event);\n if (target) {\n this._events.get(event.type)?.forEach((handlers, element) => {\n if (element === target || element.contains(target)) {\n handlers.forEach(handler => handler.handleEvent(event));\n }\n });\n }\n };\n }\n /** Adds an event handler. */\n addHandler(ngZone, name, element, handler) {\n const handlersForEvent = this._events.get(name);\n if (handlersForEvent) {\n const handlersForElement = handlersForEvent.get(element);\n if (handlersForElement) {\n handlersForElement.add(handler);\n }\n else {\n handlersForEvent.set(element, new Set([handler]));\n }\n }\n else {\n this._events.set(name, new Map([[element, new Set([handler])]]));\n ngZone.runOutsideAngular(() => {\n document.addEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions$1);\n });\n }\n }\n /** Removes an event handler. */\n removeHandler(name, element, handler) {\n const handlersForEvent = this._events.get(name);\n if (!handlersForEvent) {\n return;\n }\n const handlersForElement = handlersForEvent.get(element);\n if (!handlersForElement) {\n return;\n }\n handlersForElement.delete(handler);\n if (handlersForElement.size === 0) {\n handlersForEvent.delete(element);\n }\n if (handlersForEvent.size === 0) {\n this._events.delete(name);\n document.removeEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions$1);\n }\n }\n}\n\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nconst defaultRippleAnimationConfig = {\n enterDuration: 225,\n exitDuration: 150,\n};\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nclass RippleRenderer {\n static { this._eventManager = new RippleEventManager(); }\n constructor(_target, _ngZone, elementOrElementRef, _platform) {\n this._target = _target;\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Whether the pointer is currently down or not. */\n this._isPointerDown = false;\n /**\n * Map of currently active ripple references.\n * The ripple reference is mapped to its element event listeners.\n * The reason why `| null` is used is that event listeners are added only\n * when the condition is truthy (see the `_startFadeOutTransition` method).\n */\n this._activeRipples = new Map();\n /** Whether pointer-up event listeners have been registered. */\n this._pointerUpEventsRegistered = false;\n // Only do anything if we're on the browser.\n if (_platform.isBrowser) {\n this._containerElement = coerceElement(elementOrElementRef);\n }\n }\n /**\n * Fades in a ripple at the given coordinates.\n * @param x Coordinate within the element, along the X axis at which to start the ripple.\n * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n * @param config Extra ripple options.\n */\n fadeInRipple(x, y, config = {}) {\n const containerRect = (this._containerRect =\n this._containerRect || this._containerElement.getBoundingClientRect());\n const animationConfig = { ...defaultRippleAnimationConfig, ...config.animation };\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n const offsetX = x - containerRect.left;\n const offsetY = y - containerRect.top;\n const enterDuration = animationConfig.enterDuration;\n const ripple = document.createElement('div');\n ripple.classList.add('mat-ripple-element');\n ripple.style.left = `${offsetX - radius}px`;\n ripple.style.top = `${offsetY - radius}px`;\n ripple.style.height = `${radius * 2}px`;\n ripple.style.width = `${radius * 2}px`;\n // If a custom color has been specified, set it as inline style. If no color is\n // set, the default color will be applied through the ripple theme styles.\n if (config.color != null) {\n ripple.style.backgroundColor = config.color;\n }\n ripple.style.transitionDuration = `${enterDuration}ms`;\n this._containerElement.appendChild(ripple);\n // By default the browser does not recalculate the styles of dynamically created\n // ripple elements. This is critical to ensure that the `scale` animates properly.\n // We enforce a style recalculation by calling `getComputedStyle` and *accessing* a property.\n // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n const computedStyles = window.getComputedStyle(ripple);\n const userTransitionProperty = computedStyles.transitionProperty;\n const userTransitionDuration = computedStyles.transitionDuration;\n // Note: We detect whether animation is forcibly disabled through CSS (e.g. through\n // `transition: none` or `display: none`). This is technically unexpected since animations are\n // controlled through the animation config, but this exists for backwards compatibility. This\n // logic does not need to be super accurate since it covers some edge cases which can be easily\n // avoided by users.\n const animationForciblyDisabledThroughCss = userTransitionProperty === 'none' ||\n // Note: The canonical unit for serialized CSS `<time>` properties is seconds. Additionally\n // some browsers expand the duration for every property (in our case `opacity` and `transform`).\n userTransitionDuration === '0s' ||\n userTransitionDuration === '0s, 0s' ||\n // If the container is 0x0, it's likely `display: none`.\n (containerRect.width === 0 && containerRect.height === 0);\n // Exposed reference to the ripple that will be returned.\n const rippleRef = new RippleRef(this, ripple, config, animationForciblyDisabledThroughCss);\n // Start the enter animation by setting the transform/scale to 100%. The animation will\n // execute as part of this statement because we forced a style recalculation before.\n // Note: We use a 3d transform here in order to avoid an issue in Safari where\n // the ripples aren't clipped when inside the shadow DOM (see #24028).\n ripple.style.transform = 'scale3d(1, 1, 1)';\n rippleRef.state = 0 /* RippleState.FADING_IN */;\n if (!config.persistent) {\n this._mostRecentTransientRipple = rippleRef;\n }\n let eventListeners = null;\n // Do not register the `transition` event listener if fade-in and fade-out duration\n // are set to zero. The events won't fire anyway and we can save resources here.\n if (!animationForciblyDisabledThroughCss && (enterDuration || animationConfig.exitDuration)) {\n this._ngZone.runOutsideAngular(() => {\n const onTransitionEnd = () => this._finishRippleTransition(rippleRef);\n const onTransitionCancel = () => this._destroyRipple(rippleRef);\n ripple.addEventListener('transitionend', onTransitionEnd);\n // If the transition is cancelled (e.g. due to DOM removal), we destroy the ripple\n // directly as otherwise we would keep it part of the ripple container forever.\n // https://www.w3.org/TR/css-transitions-1/#:~:text=no%20longer%20in%20the%20document.\n ripple.addEventListener('transitioncancel', onTransitionCancel);\n eventListeners = { onTransitionEnd, onTransitionCancel };\n });\n }\n // Add the ripple reference to the list of all active ripples.\n this._activeRipples.set(rippleRef, eventListeners);\n // In case there is no fade-in transition duration, we need to manually call the transition\n // end listener because `transitionend` doesn't fire if there is no transition.\n if (animationForciblyDisabledThroughCss || !enterDuration) {\n this._finishRippleTransition(rippleRef);\n }\n return rippleRef;\n }\n /** Fades out a ripple reference. */\n fadeOutRipple(rippleRef) {\n // For ripples already fading out or hidden, this should be a noop.\n if (rippleRef.state === 2 /* RippleState.FADING_OUT */ || rippleRef.state === 3 /* RippleState.HIDDEN */) {\n return;\n }\n const rippleEl = rippleRef.element;\n const animationConfig = { ...defaultRippleAnimationConfig, ...rippleRef.config.animation };\n // This starts the fade-out transition and will fire the transition end listener that\n // removes the ripple element from the DOM.\n rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n rippleEl.style.opacity = '0';\n rippleRef.state = 2 /* RippleState.FADING_OUT */;\n // In case there is no fade-out transition duration, we need to manually call the\n // transition end listener because `transitionend` doesn't fire if there is no transition.\n if (rippleRef._animationForciblyDisabledThroughCss || !animationConfig.exitDuration) {\n this._finishRippleTransition(rippleRef);\n }\n }\n /** Fades out all currently active ripples. */\n fadeOutAll() {\n this._getActiveRipples().forEach(ripple => ripple.fadeOut());\n }\n /** Fades out all currently active non-persistent ripples. */\n fadeOutAllNonPersistent() {\n this._getActiveRipples().forEach(ripple => {\n if (!ripple.config.persistent) {\n ripple.fadeOut();\n }\n });\n }\n /** Sets up the trigger event listeners */\n setupTriggerEvents(elementOrElementRef) {\n const element = coerceElement(elementOrElementRef);\n if (!this._platform.isBrowser || !element || element === this._triggerElement) {\n return;\n }\n // Remove all previously registered event listeners from the trigger element.\n this._removeTriggerEvents();\n this._triggerElement = element;\n // Use event delegation for the trigger events since they're\n // set up during creation and are performance-sensitive.\n pointerDownEvents.forEach(type => {\n RippleRenderer._eventManager.addHandler(this._ngZone, type, element, this);\n });\n }\n /**\n * Handles all registered events.\n * @docs-private\n */\n handleEvent(event) {\n if (event.type === 'mousedown') {\n this._onMousedown(event);\n }\n else if (event.type === 'touchstart') {\n this._onTouchStart(event);\n }\n else {\n this._onPointerUp();\n }\n // If pointer-up events haven't been registered yet, do so now.\n // We do this on-demand in order to reduce the total number of event listeners\n // registered by the ripples, which speeds up the rendering time for large UIs.\n if (!this._pointerUpEventsRegistered) {\n // The events for hiding the ripple are bound directly on the trigger, because:\n // 1. Some of them occur frequently (e.g. `mouseleave`) and any advantage we get from\n // delegation will be diminished by having to look through all the data structures often.\n // 2. They aren't as performance-sensitive, because they're bound only after the user\n // has interacted with an element.\n this._ngZone.runOutsideAngular(() => {\n pointerUpEvents.forEach(type => {\n this._triggerElement.addEventListener(type, this, passiveCapturingEventOptions);\n });\n });\n this._pointerUpEventsRegistered = true;\n }\n }\n /** Method that will be called if the fade-in or fade-in transition completed. */\n _finishRippleTransition(rippleRef) {\n if (rippleRef.state === 0 /* RippleState.FADING_IN */) {\n this._startFadeOutTransition(rippleRef);\n }\n else if (rippleRef.state === 2 /* RippleState.FADING_OUT */) {\n this._destroyRipple(rippleRef);\n }\n }\n /**\n * Starts the fade-out transition of the given ripple if it's not persistent and the pointer\n * is not held down anymore.\n */\n _startFadeOutTransition(rippleRef) {\n const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n const { persistent } = rippleRef.config;\n rippleRef.state = 1 /* RippleState.VISIBLE */;\n // When the timer runs out while the user has kept their pointer down, we want to\n // keep only the persistent ripples and the latest transient ripple. We do this,\n // because we don't want stacked transient ripples to appear after their enter\n // animation has finished.\n if (!persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n rippleRef.fadeOut();\n }\n }\n /** Destroys the given ripple by removing it from the DOM and updating its state. */\n _destroyRipple(rippleRef) {\n const eventListeners = this._activeRipples.get(rippleRef) ?? null;\n this._activeRipples.delete(rippleRef);\n // Clear out the cached bounding rect if we have no more ripples.\n if (!this._activeRipples.size) {\n this._containerRect = null;\n }\n // If the current ref is the most recent transient ripple, unset it\n // avoid memory leaks.\n if (rippleRef === this._mostRecentTransientRipple) {\n this._mostRecentTransientRipple = null;\n }\n rippleRef.state = 3 /* RippleState.HIDDEN */;\n if (eventListeners !== null) {\n rippleRef.element.removeEventListener('transitionend', eventListeners.onTransitionEnd);\n rippleRef.element.removeEventListener('transitioncancel', eventListeners.onTransitionCancel);\n }\n rippleRef.element.remove();\n }\n /** Function being called whenever the trigger is being pressed using mouse. */\n _onMousedown(event) {\n // Screen readers will fire fake mouse events for space/enter. Skip launching a\n // ripple in this case for consistency with the non-screen-reader experience.\n const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n const isSyntheticEvent = this._lastTouchStartEvent &&\n Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n this._isPointerDown = true;\n this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n }\n }\n /** Function being called whenever the trigger is being pressed using touch. */\n _onTouchStart(event) {\n if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n // events will launch a second ripple if we don't ignore mouse events for a specific\n // time after a touchstart event.\n this._lastTouchStartEvent = Date.now();\n this._isPointerDown = true;\n // Use `changedTouches` so we skip any touches where the user put\n // their finger down, but used another finger to tap the element again.\n const touches = event.changedTouches;\n // According to the typings the touches should always be defined, but in some cases\n // the browser appears to not assign them in tests which leads to flakes.\n if (touches) {\n for (let i = 0; i < touches.length; i++) {\n this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n }\n }\n }\n }\n /** Function being called whenever the trigger is being released. */\n _onPointerUp() {\n if (!this._isPointerDown) {\n return;\n }\n this._isPointerDown = false;\n // Fade-out all ripples that are visible and not persistent.\n this._getActiveRipples().forEach(ripple => {\n // By default, only ripples that are completely visible will fade out on pointer release.\n // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n const isVisible = ripple.state === 1 /* RippleState.VISIBLE */ ||\n (ripple.config.terminateOnPointerUp && ripple.state === 0 /* RippleState.FADING_IN */);\n if (!ripple.config.persistent && isVisible) {\n ripple.fadeOut();\n }\n });\n }\n _getActiveRipples() {\n return Array.from(this._activeRipples.keys());\n }\n /** Removes previously registered event listeners from the trigger element. */\n _removeTriggerEvents() {\n const trigger = this._triggerElement;\n if (trigger) {\n pointerDownEvents.forEach(type => RippleRenderer._eventManager.removeHandler(type, trigger, this));\n if (this._pointerUpEventsRegistered) {\n pointerUpEvents.forEach(type => trigger.removeEventListener(type, this, passiveCapturingEventOptions));\n }\n }\n }\n}\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x, y, rect) {\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n return Math.sqrt(distX * distX + distY * distY);\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nconst MAT_RIPPLE_GLOBAL_OPTIONS = new InjectionToken('mat-ripple-global-options');\nclass MatRipple {\n /**\n * Whether click events will not trigger the ripple. Ripples can be still launched manually\n * by using the `launch()` method.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n if (value) {\n this.fadeOutAllNonPersistent();\n }\n this._disabled = value;\n this._setupTriggerEventsIfEnabled();\n }\n /**\n * The element that triggers the ripple when click events are received.\n * Defaults to the directive's host element.\n */\n get trigger() {\n return this._trigger || this._elementRef.nativeElement;\n }\n set trigger(trigger) {\n this._trigger = trigger;\n this._setupTriggerEventsIfEnabled();\n }\n constructor(_elementRef, ngZone, platform, globalOptions, _animationMode) {\n this._elementRef = _elementRef;\n this._animationMode = _animationMode;\n /**\n * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n * will be the distance from the center of the ripple to the furthest corner of the host element's\n * bounding rectangle.\n */\n this.radius = 0;\n this._disabled = false;\n /** @docs-private Whether ripple directive is initialized and the input bindings are set. */\n this._isInitialized = false;\n this._globalOptions = globalOptions || {};\n this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n }\n ngOnInit() {\n this._isInitialized = true;\n this._setupTriggerEventsIfEnabled();\n }\n ngOnDestroy() {\n this._rippleRenderer._removeTriggerEvents();\n }\n /** Fades out all currently showing ripple elements. */\n fadeOutAll() {\n this._rippleRenderer.fadeOutAll();\n }\n /** Fades out all currently showing non-persistent ripple elements. */\n fadeOutAllNonPersistent() {\n this._rippleRenderer.fadeOutAllNonPersistent();\n }\n /**\n * Ripple configuration from the directive's input values.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleConfig() {\n return {\n centered: this.centered,\n radius: this.radius,\n color: this.color,\n animation: {\n ...this._globalOptions.animation,\n ...(this._animationMode === 'NoopAnimations' ? { enterDuration: 0, exitDuration: 0 } : {}),\n ...this.animation,\n },\n terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n };\n }\n /**\n * Whether ripples on pointer-down are disabled or not.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleDisabled() {\n return this.disabled || !!this._globalOptions.disabled;\n }\n /** Sets up the trigger event listeners if ripples are enabled. */\n _setupTriggerEventsIfEnabled() {\n if (!this.disabled && this._isInitialized) {\n this._rippleRenderer.setupTriggerEvents(this.trigger);\n }\n }\n /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n launch(configOrX, y = 0, config) {\n if (typeof configOrX === 'number') {\n return this._rippleRenderer.fadeInRipple(configOrX, y, { ...this.rippleConfig, ...config });\n }\n else {\n return this._rippleRenderer.fadeInRipple(0, 0, { ...this.rippleConfig, ...configOrX });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRipple, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.Platform }, { token: MAT_RIPPLE_GLOBAL_OPTIONS, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: { color: [\"matRippleColor\", \"color\"], unbounded: [\"matRippleUnbounded\", \"unbounded\"], centered: [\"matRippleCentered\", \"centered\"], radius: [\"matRippleRadius\", \"radius\"], animation: [\"matRippleAnimation\", \"animation\"], disabled: [\"matRippleDisabled\", \"disabled\"], trigger: [\"matRippleTrigger\", \"trigger\"] }, host: { properties: { \"class.mat-ripple-unbounded\": \"unbounded\" }, classAttribute: \"mat-ripple\" }, exportAs: [\"matRipple\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRipple, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-ripple], [matRipple]',\n exportAs: 'matRipple',\n host: {\n 'class': 'mat-ripple',\n '[class.mat-ripple-unbounded]': 'unbounded',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RIPPLE_GLOBAL_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { color: [{\n type: Input,\n args: ['matRippleColor']\n }], unbounded: [{\n type: Input,\n args: ['matRippleUnbounded']\n }], centered: [{\n type: Input,\n args: ['matRippleCentered']\n }], radius: [{\n type: Input,\n args: ['matRippleRadius']\n }], animation: [{\n type: Input,\n args: ['matRippleAnimation']\n }], disabled: [{\n type: Input,\n args: ['matRippleDisabled']\n }], trigger: [{\n type: Input,\n args: ['matRippleTrigger']\n }] } });\n\nclass MatRippleModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRippleModule, declarations: [MatRipple], imports: [MatCommonModule], exports: [MatRipple, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRippleModule, imports: [MatCommonModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRippleModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [MatRipple, MatCommonModule],\n declarations: [MatRipple],\n }]\n }] });\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\nclass MatPseudoCheckbox {\n constructor(_animationMode) {\n this._animationMode = _animationMode;\n /** Display state of the checkbox. */\n this.state = 'unchecked';\n /** Whether the checkbox is disabled. */\n this.disabled = false;\n /**\n * Appearance of the pseudo checkbox. Default appearance of 'full' renders a checkmark/mixedmark\n * indicator inside a square box. 'minimal' appearance only renders the checkmark/mixedmark.\n */\n this.appearance = 'full';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatPseudoCheckbox, deps: [{ token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatPseudoCheckbox, selector: \"mat-pseudo-checkbox\", inputs: { state: \"state\", disabled: \"disabled\", appearance: \"appearance\" }, host: { properties: { \"class.mat-pseudo-checkbox-indeterminate\": \"state === \\\"indeterminate\\\"\", \"class.mat-pseudo-checkbox-checked\": \"state === \\\"checked\\\"\", \"class.mat-pseudo-checkbox-disabled\": \"disabled\", \"class.mat-pseudo-checkbox-minimal\": \"appearance === \\\"minimal\\\"\", \"class.mat-pseudo-checkbox-full\": \"appearance === \\\"full\\\"\", \"class._mat-animation-noopable\": \"_animationMode === \\\"NoopAnimations\\\"\" }, classAttribute: \"mat-pseudo-checkbox\" }, ngImport: i0, template: '', isInline: true, styles: [\".mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:\\\"\\\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-full{border:2px solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatPseudoCheckbox, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'mat-pseudo-checkbox', template: '', host: {\n 'class': 'mat-pseudo-checkbox',\n '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n '[class.mat-pseudo-checkbox-minimal]': 'appearance === \"minimal\"',\n '[class.mat-pseudo-checkbox-full]': 'appearance === \"full\"',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n }, styles: [\".mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:\\\"\\\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-full{border:2px solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}\"] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { state: [{\n type: Input\n }], disabled: [{\n type: Input\n }], appearance: [{\n type: Input\n }] } });\n\nclass MatPseudoCheckboxModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatPseudoCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatPseudoCheckboxModule, declarations: [MatPseudoCheckbox], imports: [MatCommonModule], exports: [MatPseudoCheckbox] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatPseudoCheckboxModule, imports: [MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatPseudoCheckboxModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [MatPseudoCheckbox],\n declarations: [MatPseudoCheckbox],\n }]\n }] });\n\n/**\n * Injection token used to provide the parent component to options.\n */\nconst MAT_OPTION_PARENT_COMPONENT = new InjectionToken('MAT_OPTION_PARENT_COMPONENT');\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n// when the text will be read out so sometimes it comes in too late or never if the user\n// navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n// won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n// doesn't read out the text at all. Furthermore, on\n// Boilerplate for applying mixins to MatOptgroup.\n/** @docs-private */\nconst _MatOptgroupMixinBase = mixinDisabled(class {\n});\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\nclass _MatOptgroupBase extends _MatOptgroupMixinBase {\n constructor(parent) {\n super();\n /** Unique id for the underlying label. */\n this._labelId = `mat-optgroup-label-${_uniqueOptgroupIdCounter++}`;\n this._inert = parent?.inertGroups ?? false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatOptgroupBase, deps: [{ token: MAT_OPTION_PARENT_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: _MatOptgroupBase, inputs: { label: \"label\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatOptgroupBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MAT_OPTION_PARENT_COMPONENT]\n }, {\n type: Optional\n }] }]; }, propDecorators: { label: [{\n type: Input\n }] } });\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nconst MAT_OPTGROUP = new InjectionToken('MatOptgroup');\n/**\n * Component that is used to group instances of `mat-option`.\n */\nclass MatOptgroup extends _MatOptgroupBase {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOptgroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatOptgroup, selector: \"mat-optgroup\", inputs: { disabled: \"disabled\" }, host: { properties: { \"attr.role\": \"_inert ? null : \\\"group\\\"\", \"attr.aria-disabled\": \"_inert ? null : disabled.toString()\", \"attr.aria-labelledby\": \"_inert ? null : _labelId\" }, classAttribute: \"mat-mdc-optgroup\" }, providers: [{ provide: MAT_OPTGROUP, useExisting: MatOptgroup }], exportAs: [\"matOptgroup\"], usesInheritance: true, ngImport: i0, template: \"<span\\n class=\\\"mat-mdc-optgroup-label\\\"\\n role=\\\"presentation\\\"\\n [class.mdc-list-item--disabled]=\\\"disabled\\\"\\n [id]=\\\"_labelId\\\">\\n <span class=\\\"mdc-list-item__primary-text\\\">{{ label }} <ng-content></ng-content></span>\\n</span>\\n\\n<ng-content select=\\\"mat-option, ng-container\\\"></ng-content>\\n\", styles: [\".mat-mdc-optgroup{color:var(--mat-optgroup-label-text-color);font-family:var(--mat-optgroup-label-text-font);line-height:var(--mat-optgroup-label-text-line-height);font-size:var(--mat-optgroup-label-text-size);letter-spacing:var(--mat-optgroup-label-text-tracking);font-weight:var(--mat-optgroup-label-text-weight)}.mat-mdc-optgroup-label{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;min-height:48px}.mat-mdc-optgroup-label:focus{outline:none}[dir=rtl] .mat-mdc-optgroup-label,.mat-mdc-optgroup-label[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-optgroup-label.mdc-list-item--disabled{opacity:.38}.mat-mdc-optgroup-label .mdc-list-item__primary-text{font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;white-space:normal}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOptgroup, decorators: [{\n type: Component,\n args: [{ selector: 'mat-optgroup', exportAs: 'matOptgroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled'], host: {\n 'class': 'mat-mdc-optgroup',\n '[attr.role]': '_inert ? null : \"group\"',\n '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n '[attr.aria-labelledby]': '_inert ? null : _labelId',\n }, providers: [{ provide: MAT_OPTGROUP, useExisting: MatOptgroup }], template: \"<span\\n class=\\\"mat-mdc-optgroup-label\\\"\\n role=\\\"presentation\\\"\\n [class.mdc-list-item--disabled]=\\\"disabled\\\"\\n [id]=\\\"_labelId\\\">\\n <span class=\\\"mdc-list-item__primary-text\\\">{{ label }} <ng-content></ng-content></span>\\n</span>\\n\\n<ng-content select=\\\"mat-option, ng-container\\\"></ng-content>\\n\", styles: [\".mat-mdc-optgroup{color:var(--mat-optgroup-label-text-color);font-family:var(--mat-optgroup-label-text-font);line-height:var(--mat-optgroup-label-text-line-height);font-size:var(--mat-optgroup-label-text-size);letter-spacing:var(--mat-optgroup-label-text-tracking);font-weight:var(--mat-optgroup-label-text-weight)}.mat-mdc-optgroup-label{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;min-height:48px}.mat-mdc-optgroup-label:focus{outline:none}[dir=rtl] .mat-mdc-optgroup-label,.mat-mdc-optgroup-label[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-optgroup-label.mdc-list-item--disabled{opacity:.38}.mat-mdc-optgroup-label .mdc-list-item__primary-text{font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;white-space:normal}\"] }]\n }] });\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n/** Event object emitted by MatOption when selected or deselected. */\nclass MatOptionSelectionChange {\n constructor(\n /** Reference to the option that emitted the event. */\n source, \n /** Whether the change in the option's value was a result of a user action. */\n isUserInput = false) {\n this.source = source;\n this.isUserInput = isUserInput;\n }\n}\nclass _MatOptionBase {\n /** Whether the wrapping component is in multiple selection mode. */\n get multiple() {\n return this._parent && this._parent.multiple;\n }\n /** Whether or not the option is currently selected. */\n get selected() {\n return this._selected;\n }\n /** Whether the option is disabled. */\n get disabled() {\n return (this.group && this.group.disabled) || this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n /** Whether ripples for the option are disabled. */\n get disableRipple() {\n return !!(this._parent && this._parent.disableRipple);\n }\n /** Whether to display checkmark for single-selection. */\n get hideSingleSelectionIndicator() {\n return !!(this._parent && this._parent.hideSingleSelectionIndicator);\n }\n constructor(_element, _changeDetectorRef, _parent, group) {\n this._element = _element;\n this._changeDetectorRef = _changeDetectorRef;\n this._parent = _parent;\n this.group = group;\n this._selected = false;\n this._active = false;\n this._disabled = false;\n this._mostRecentViewValue = '';\n /** The unique ID of the option. */\n this.id = `mat-option-${_uniqueIdCounter++}`;\n /** Event emitted when the option is selected or deselected. */\n // tslint:disable-next-line:no-output-on-prefix\n this.onSelectionChange = new EventEmitter();\n /** Emits when the state of the option changes and any parents have to be notified. */\n this._stateChanges = new Subject();\n }\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n */\n get active() {\n return this._active;\n }\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n */\n get viewValue() {\n // TODO(kara): Add input property alternative for node envs.\n return (this._text?.nativeElement.textContent || '').trim();\n }\n /** Selects the option. */\n select(emitEvent = true) {\n if (!this._selected) {\n this._selected = true;\n this._changeDetectorRef.markForCheck();\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n /** Deselects the option. */\n deselect(emitEvent = true) {\n if (this._selected) {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n /** Sets focus onto this option. */\n focus(_origin, options) {\n // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n const element = this._getHostElement();\n if (typeof element.focus === 'function') {\n element.focus(options);\n }\n }\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles() {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles() {\n if (this._active) {\n this._active = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n return this.viewValue;\n }\n /** Ensures the option is selected when activated from the keyboard. */\n _handleKeydown(event) {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n this._selectViaInteraction();\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n }\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n _selectViaInteraction() {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n }\n /** Returns the correct tabindex for the option depending on disabled state. */\n // This method is only used by `MatLegacyOption`. Keeping it here to avoid breaking the types.\n // That's because `MatLegacyOption` use `MatOption` type in a few places such as\n // `MatOptionSelectionChange`. It is safe to delete this when `MatLegacyOption` is deleted.\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Gets the host DOM element. */\n _getHostElement() {\n return this._element.nativeElement;\n }\n ngAfterViewChecked() {\n // Since parent components could be using the option's label to display the selected values\n // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n // relatively cheap, however we still limit them only to selected options in order to avoid\n // hitting the DOM too often.\n if (this._selected) {\n const viewValue = this.viewValue;\n if (viewValue !== this._mostRecentViewValue) {\n if (this._mostRecentViewValue) {\n this._stateChanges.next();\n }\n this._mostRecentViewValue = viewValue;\n }\n }\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n /** Emits the selection change event. */\n _emitSelectionChangeEvent(isUserInput = false) {\n this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatOptionBase, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: _MatOptionBase, inputs: { value: \"value\", id: \"id\", disabled: \"disabled\" }, outputs: { onSelectionChange: \"onSelectionChange\" }, viewQueries: [{ propertyName: \"_text\", first: true, predicate: [\"text\"], descendants: true, static: true }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatOptionBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined }, { type: _MatOptgroupBase }]; }, propDecorators: { value: [{\n type: Input\n }], id: [{\n type: Input\n }], disabled: [{\n type: Input\n }], onSelectionChange: [{\n type: Output\n }], _text: [{\n type: ViewChild,\n args: ['text', { static: true }]\n }] } });\n/**\n * Single option inside of a `<mat-select>` element.\n */\nclass MatOption extends _MatOptionBase {\n constructor(element, changeDetectorRef, parent, group) {\n super(element, changeDetectorRef, parent, group);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOption, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_OPTION_PARENT_COMPONENT, optional: true }, { token: MAT_OPTGROUP, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatOption, selector: \"mat-option\", host: { attributes: { \"role\": \"option\" }, listeners: { \"click\": \"_selectViaInteraction()\", \"keydown\": \"_handleKeydown($event)\" }, properties: { \"class.mdc-list-item--selected\": \"selected\", \"class.mat-mdc-option-multiple\": \"multiple\", \"class.mat-mdc-option-active\": \"active\", \"class.mdc-list-item--disabled\": \"disabled\", \"id\": \"id\", \"attr.aria-selected\": \"selected\", \"attr.aria-disabled\": \"disabled.toString()\" }, classAttribute: \"mat-mdc-option mdc-list-item\" }, exportAs: [\"matOption\"], usesInheritance: true, ngImport: i0, template: \"<!-- Set aria-hidden=\\\"true\\\" to this DOM node and other decorative nodes in this file. This might\\n be contributing to issue where sometimes VoiceOver focuses on a TextNode in the a11y tree instead\\n of the Option node (#23202). Most assistive technology will generally ignore non-role,\\n non-text-content elements. Adding aria-hidden seems to make VoiceOver behave more consistently. -->\\n<mat-pseudo-checkbox *ngIf=\\\"multiple\\\" class=\\\"mat-mdc-option-pseudo-checkbox\\\" [disabled]=\\\"disabled\\\"\\n [state]=\\\"selected ? 'checked' : 'unchecked'\\\" aria-hidden=\\\"true\\\"></mat-pseudo-checkbox>\\n\\n<ng-content select=\\\"mat-icon\\\"></ng-content>\\n\\n<span class=\\\"mdc-list-item__primary-text\\\" #text><ng-content></ng-content></span>\\n\\n<!-- Render checkmark at the end for single-selection. -->\\n<mat-pseudo-checkbox *ngIf=\\\"!multiple && selected && !hideSingleSelectionIndicator\\\"\\n class=\\\"mat-mdc-option-pseudo-checkbox\\\" [disabled]=\\\"disabled\\\" state=\\\"checked\\\"\\n aria-hidden=\\\"true\\\" appearance=\\\"minimal\\\"></mat-pseudo-checkbox>\\n\\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\\n<span class=\\\"cdk-visually-hidden\\\" *ngIf=\\\"group && group._inert\\\">({{ group.label }})</span>\\n\\n<div class=\\\"mat-mdc-option-ripple mat-mdc-focus-indicator\\\" aria-hidden=\\\"true\\\" mat-ripple\\n [matRippleTrigger]=\\\"_getHostElement()\\\" [matRippleDisabled]=\\\"disabled || disableRipple\\\">\\n</div>\\n\", styles: [\".mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color);font-family:var(--mat-option-label-text-font);line-height:var(--mat-option-label-text-line-height);font-size:var(--mat-option-label-text-size);letter-spacing:var(--mat-option-label-text-tracking);font-weight:var(--mat-option-label-text-weight);min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color)}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color)}.mat-mdc-option.mdc-list-item{align-items:center}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:\\\"\\\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-active .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"], dependencies: [{ kind: \"directive\", type: MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: MatPseudoCheckbox, selector: \"mat-pseudo-checkbox\", inputs: [\"state\", \"disabled\", \"appearance\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOption, decorators: [{\n type: Component,\n args: [{ selector: 'mat-option', exportAs: 'matOption', host: {\n 'role': 'option',\n '[class.mdc-list-item--selected]': 'selected',\n '[class.mat-mdc-option-multiple]': 'multiple',\n '[class.mat-mdc-option-active]': 'active',\n '[class.mdc-list-item--disabled]': 'disabled',\n '[id]': 'id',\n // Set aria-selected to false for non-selected items and true for selected items. Conform to\n // [WAI ARIA Listbox authoring practices guide](\n // https://www.w3.org/WAI/ARIA/apg/patterns/listbox/), \"If any options are selected, each\n // selected option has either aria-selected or aria-checked set to true. All options that are\n // selectable but not selected have either aria-selected or aria-checked set to false.\" Align\n // aria-selected implementation of Chips and List components.\n //\n // Set `aria-selected=\"false\"` on not-selected listbox options to fix VoiceOver announcing\n // every option as \"selected\" (#21491).\n '[attr.aria-selected]': 'selected',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': '_selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n 'class': 'mat-mdc-option mdc-list-item',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"<!-- Set aria-hidden=\\\"true\\\" to this DOM node and other decorative nodes in this file. This might\\n be contributing to issue where sometimes VoiceOver focuses on a TextNode in the a11y tree instead\\n of the Option node (#23202). Most assistive technology will generally ignore non-role,\\n non-text-content elements. Adding aria-hidden seems to make VoiceOver behave more consistently. -->\\n<mat-pseudo-checkbox *ngIf=\\\"multiple\\\" class=\\\"mat-mdc-option-pseudo-checkbox\\\" [disabled]=\\\"disabled\\\"\\n [state]=\\\"selected ? 'checked' : 'unchecked'\\\" aria-hidden=\\\"true\\\"></mat-pseudo-checkbox>\\n\\n<ng-content select=\\\"mat-icon\\\"></ng-content>\\n\\n<span class=\\\"mdc-list-item__primary-text\\\" #text><ng-content></ng-content></span>\\n\\n<!-- Render checkmark at the end for single-selection. -->\\n<mat-pseudo-checkbox *ngIf=\\\"!multiple && selected && !hideSingleSelectionIndicator\\\"\\n class=\\\"mat-mdc-option-pseudo-checkbox\\\" [disabled]=\\\"disabled\\\" state=\\\"checked\\\"\\n aria-hidden=\\\"true\\\" appearance=\\\"minimal\\\"></mat-pseudo-checkbox>\\n\\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\\n<span class=\\\"cdk-visually-hidden\\\" *ngIf=\\\"group && group._inert\\\">({{ group.label }})</span>\\n\\n<div class=\\\"mat-mdc-option-ripple mat-mdc-focus-indicator\\\" aria-hidden=\\\"true\\\" mat-ripple\\n [matRippleTrigger]=\\\"_getHostElement()\\\" [matRippleDisabled]=\\\"disabled || disableRipple\\\">\\n</div>\\n\", styles: [\".mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color);font-family:var(--mat-option-label-text-font);line-height:var(--mat-option-label-text-line-height);font-size:var(--mat-option-label-text-size);letter-spacing:var(--mat-option-label-text-tracking);font-weight:var(--mat-option-label-text-weight);min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color)}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color)}.mat-mdc-option.mdc-list-item{align-items:center}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:\\\"\\\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-active .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_OPTION_PARENT_COMPONENT]\n }] }, { type: MatOptgroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_OPTGROUP]\n }] }]; } });\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nfunction _countGroupLabelsBeforeOption(optionIndex, options, optionGroups) {\n if (optionGroups.length) {\n let optionsArray = options.toArray();\n let groups = optionGroups.toArray();\n let groupCounter = 0;\n for (let i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n return groupCounter;\n }\n return 0;\n}\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nfunction _getOptionScrollPosition(optionOffset, optionHeight, currentScrollPosition, panelHeight) {\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n return currentScrollPosition;\n}\n\nclass MatOptionModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOptionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOptionModule, declarations: [MatOption, MatOptgroup], imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule], exports: [MatOption, MatOptgroup] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOptionModule, imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatOptionModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule],\n exports: [MatOption, MatOptgroup],\n declarations: [MatOption, MatOptgroup],\n }]\n }] });\n\n/** The options for the MatRippleLoader's event listeners. */\nconst eventListenerOptions = { capture: true };\n/** The events that should trigger the initialization of the ripple. */\nconst rippleInteractionEvents = ['focus', 'click', 'mouseenter', 'touchstart'];\n/** The attribute attached to a component whose ripple has not yet been initialized. */\nconst matRippleUninitialized = 'mat-ripple-loader-uninitialized';\n/** Additional classes that should be added to the ripple when it is rendered. */\nconst matRippleClassName = 'mat-ripple-loader-class-name';\n/** Whether the ripple should be centered. */\nconst matRippleCentered = 'mat-ripple-loader-centered';\n/** Whether the ripple should be disabled. */\nconst matRippleDisabled = 'mat-ripple-loader-disabled';\n/**\n * Handles attaching ripples on demand.\n *\n * This service allows us to avoid eagerly creating & attaching MatRipples.\n * It works by creating & attaching a ripple only when a component is first interacted with.\n *\n * @docs-private\n */\nclass MatRippleLoader {\n constructor() {\n this._document = inject(DOCUMENT, { optional: true });\n this._animationMode = inject(ANIMATION_MODULE_TYPE$1, { optional: true });\n this._globalRippleOptions = inject(MAT_RIPPLE_GLOBAL_OPTIONS, { optional: true });\n this._platform = inject(Platform);\n this._ngZone = inject(NgZone);\n this._hosts = new Map();\n /** Handles creating and attaching component internals when a component it is initially interacted with. */\n this._onInteraction = (event) => {\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n const eventTarget = event.target;\n // TODO(wagnermaciel): Consider batching these events to improve runtime performance.\n const element = eventTarget.closest(`[${matRippleUninitialized}]`);\n if (element) {\n this._createRipple(element);\n }\n };\n this._ngZone.runOutsideAngular(() => {\n for (const event of rippleInteractionEvents) {\n this._document?.addEventListener(event, this._onInteraction, eventListenerOptions);\n }\n });\n }\n ngOnDestroy() {\n const hosts = this._hosts.keys();\n for (const host of hosts) {\n this.destroyRipple(host);\n }\n for (const event of rippleInteractionEvents) {\n this._document?.removeEventListener(event, this._onInteraction, eventListenerOptions);\n }\n }\n /**\n * Configures the ripple that will be rendered by the ripple loader.\n *\n * Stores the given information about how the ripple should be configured on the host\n * element so that it can later be retrived & used when the ripple is actually created.\n */\n configureRipple(host, config) {\n // Indicates that the ripple has not yet been rendered for this component.\n host.setAttribute(matRippleUninitialized, '');\n // Store the additional class name(s) that should be added to the ripple element.\n if (config.className || !host.hasAttribute(matRippleClassName)) {\n host.setAttribute(matRippleClassName, config.className || '');\n }\n // Store whether the ripple should be centered.\n if (config.centered) {\n host.setAttribute(matRippleCentered, '');\n }\n if (config.disabled) {\n host.setAttribute(matRippleDisabled, '');\n }\n }\n /** Returns the ripple instance for the given host element. */\n getRipple(host) {\n const ripple = this._hosts.get(host);\n return ripple || this._createRipple(host);\n }\n /** Sets the disabled state on the ripple instance corresponding to the given host element. */\n setDisabled(host, disabled) {\n const ripple = this._hosts.get(host);\n // If the ripple has already been instantiated, just disable it.\n if (ripple) {\n ripple.disabled = disabled;\n return;\n }\n // Otherwise, set an attribute so we know what the\n // disabled state should be when the ripple is initialized.\n if (disabled) {\n host.setAttribute(matRippleDisabled, '');\n }\n else {\n host.removeAttribute(matRippleDisabled);\n }\n }\n /** Creates a MatRipple and appends it to the given element. */\n _createRipple(host) {\n if (!this._document) {\n return;\n }\n const existingRipple = this._hosts.get(host);\n if (existingRipple) {\n return existingRipple;\n }\n // Create the ripple element.\n host.querySelector('.mat-ripple')?.remove();\n const rippleEl = this._document.createElement('span');\n rippleEl.classList.add('mat-ripple', host.getAttribute(matRippleClassName));\n host.append(rippleEl);\n // Create the MatRipple.\n const ripple = new MatRipple(new ElementRef(rippleEl), this._ngZone, this._platform, this._globalRippleOptions ? this._globalRippleOptions : undefined, this._animationMode ? this._animationMode : undefined);\n ripple._isInitialized = true;\n ripple.trigger = host;\n ripple.centered = host.hasAttribute(matRippleCentered);\n ripple.disabled = host.hasAttribute(matRippleDisabled);\n this.attachRipple(host, ripple);\n return ripple;\n }\n attachRipple(host, ripple) {\n host.removeAttribute(matRippleUninitialized);\n this._hosts.set(host, ripple);\n }\n destroyRipple(host) {\n const ripple = this._hosts.get(host);\n if (ripple) {\n // Since this directive is created manually, it needs to be destroyed manually too.\n // tslint:disable-next-line:no-lifecycle-invocation\n ripple.ngOnDestroy();\n this._hosts.delete(host);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRippleLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRippleLoader, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRippleLoader, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationCurves, AnimationDurations, DateAdapter, ErrorStateMatcher, MATERIAL_SANITY_CHECKS, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_DATE_LOCALE_FACTORY, MAT_NATIVE_DATE_FORMATS, MAT_OPTGROUP, MAT_OPTION_PARENT_COMPONENT, MAT_RIPPLE_GLOBAL_OPTIONS, MatCommonModule, MatLine, MatLineModule, MatNativeDateModule, MatOptgroup, MatOption, MatOptionModule, MatOptionSelectionChange, MatPseudoCheckbox, MatPseudoCheckboxModule, MatRipple, MatRippleLoader, MatRippleModule, NativeDateAdapter, NativeDateModule, RippleRef, RippleRenderer, ShowOnDirtyErrorStateMatcher, VERSION, _MatOptgroupBase, _MatOptionBase, _countGroupLabelsBeforeOption, _getOptionScrollPosition, defaultRippleAnimationConfig, mixinColor, mixinDisableRipple, mixinDisabled, mixinErrorState, mixinInitialized, mixinTabIndex, setLines };\n","import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\nclass MutationObserverFactory {\n create(callback) {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MutationObserverFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** An injectable service that allows watching elements for changes to their content. */\nclass ContentObserver {\n constructor(_mutationObserverFactory) {\n this._mutationObserverFactory = _mutationObserverFactory;\n /** Keeps track of the existing MutationObservers so they can be reused. */\n this._observedElements = new Map();\n }\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n observe(elementOrRef) {\n const element = coerceElement(elementOrRef);\n return new Observable((observer) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n _observeElement(element) {\n if (!this._observedElements.has(element)) {\n const stream = new Subject();\n const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n }\n else {\n this._observedElements.get(element).count++;\n }\n return this._observedElements.get(element).stream;\n }\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n _unobserveElement(element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element).count--;\n if (!this._observedElements.get(element).count) {\n this._cleanupObserver(element);\n }\n }\n }\n /** Clean up the underlying MutationObserver for the specified element. */\n _cleanupObserver(element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element);\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ContentObserver, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ContentObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ContentObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MutationObserverFactory }]; } });\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\nclass CdkObserveContent {\n /**\n * Whether observing content is disabled. This option can be used\n * to disconnect the underlying MutationObserver until it is needed.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n /** Debounce interval for emitting the changes. */\n get debounce() {\n return this._debounce;\n }\n set debounce(value) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n constructor(_contentObserver, _elementRef, _ngZone) {\n this._contentObserver = _contentObserver;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /** Event emitted for each change in the element's content. */\n this.event = new EventEmitter();\n this._disabled = false;\n this._currentSubscription = null;\n }\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n ngOnDestroy() {\n this._unsubscribe();\n }\n _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.\n // Consider brining it back inside the zone next time we're making breaking changes.\n // Bringing it back inside can cause things like infinite change detection loops and changed\n // after checked errors if people's code isn't handling it properly.\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n });\n }\n _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkObserveContent, deps: [{ token: ContentObserver }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: { disabled: [\"cdkObserveContentDisabled\", \"disabled\"], debounce: \"debounce\" }, outputs: { event: \"cdkObserveContent\" }, exportAs: [\"cdkObserveContent\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkObserveContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkObserveContent]',\n exportAs: 'cdkObserveContent',\n }]\n }], ctorParameters: function () { return [{ type: ContentObserver }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { event: [{\n type: Output,\n args: ['cdkObserveContent']\n }], disabled: [{\n type: Input,\n args: ['cdkObserveContentDisabled']\n }], debounce: [{\n type: Input\n }] } });\nclass ObserversModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ObserversModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: ObserversModule, declarations: [CdkObserveContent], exports: [CdkObserveContent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ObserversModule, providers: [MutationObserverFactory] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ObserversModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkObserveContent],\n declarations: [CdkObserveContent],\n providers: [MutationObserverFactory],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };\n","import * as i0 from '@angular/core';\nimport { Directive, InjectionToken, Attribute, Input, inject, NgZone, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Optional, Inject, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/bidi';\nimport * as i2 from '@angular/cdk/platform';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { Subscription, Subject, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** The floating label for a `mat-form-field`. */\nclass MatLabel {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatLabel, selector: \"mat-label\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLabel, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-label',\n }]\n }] });\n\nlet nextUniqueId$2 = 0;\n/**\n * Injection token that can be used to reference instances of `MatError`. It serves as\n * alternative token to the actual `MatError` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_ERROR = new InjectionToken('MatError');\n/** Single error message to be shown underneath the form-field. */\nclass MatError {\n constructor(ariaLive, elementRef) {\n this.id = `mat-mdc-error-${nextUniqueId$2++}`;\n // If no aria-live value is set add 'polite' as a default. This is preferred over setting\n // role='alert' so that screen readers do not interrupt the current task to read this aloud.\n if (!ariaLive) {\n elementRef.nativeElement.setAttribute('aria-live', 'polite');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatError, deps: [{ token: 'aria-live', attribute: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatError, selector: \"mat-error, [matError]\", inputs: { id: \"id\" }, host: { attributes: { \"aria-atomic\": \"true\" }, properties: { \"id\": \"id\" }, classAttribute: \"mat-mdc-form-field-error mat-mdc-form-field-bottom-align\" }, providers: [{ provide: MAT_ERROR, useExisting: MatError }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatError, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-error, [matError]',\n host: {\n 'class': 'mat-mdc-form-field-error mat-mdc-form-field-bottom-align',\n 'aria-atomic': 'true',\n '[id]': 'id',\n },\n providers: [{ provide: MAT_ERROR, useExisting: MatError }],\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['aria-live']\n }] }, { type: i0.ElementRef }]; }, propDecorators: { id: [{\n type: Input\n }] } });\n\nlet nextUniqueId$1 = 0;\n/** Hint text to be shown underneath the form field control. */\nclass MatHint {\n constructor() {\n /** Whether to align the hint label at the start or end of the line. */\n this.align = 'start';\n /** Unique ID for the hint. Used for the aria-describedby on the form field control. */\n this.id = `mat-mdc-hint-${nextUniqueId$1++}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatHint, selector: \"mat-hint\", inputs: { align: \"align\", id: \"id\" }, host: { properties: { \"class.mat-mdc-form-field-hint-end\": \"align === \\\"end\\\"\", \"id\": \"id\", \"attr.align\": \"null\" }, classAttribute: \"mat-mdc-form-field-hint mat-mdc-form-field-bottom-align\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatHint, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-hint',\n host: {\n 'class': 'mat-mdc-form-field-hint mat-mdc-form-field-bottom-align',\n '[class.mat-mdc-form-field-hint-end]': 'align === \"end\"',\n '[id]': 'id',\n // Remove align attribute to prevent it from interfering with layout.\n '[attr.align]': 'null',\n },\n }]\n }], propDecorators: { align: [{\n type: Input\n }], id: [{\n type: Input\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `MatPrefix`. It serves as\n * alternative token to the actual `MatPrefix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_PREFIX = new InjectionToken('MatPrefix');\n/** Prefix to be placed in front of the form field. */\nclass MatPrefix {\n constructor() {\n this._isText = false;\n }\n set _isTextSelector(value) {\n this._isText = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatPrefix, selector: \"[matPrefix], [matIconPrefix], [matTextPrefix]\", inputs: { _isTextSelector: [\"matTextPrefix\", \"_isTextSelector\"] }, providers: [{ provide: MAT_PREFIX, useExisting: MatPrefix }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatPrefix, decorators: [{\n type: Directive,\n args: [{\n selector: '[matPrefix], [matIconPrefix], [matTextPrefix]',\n providers: [{ provide: MAT_PREFIX, useExisting: MatPrefix }],\n }]\n }], propDecorators: { _isTextSelector: [{\n type: Input,\n args: ['matTextPrefix']\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `MatSuffix`. It serves as\n * alternative token to the actual `MatSuffix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_SUFFIX = new InjectionToken('MatSuffix');\n/** Suffix to be placed at the end of the form field. */\nclass MatSuffix {\n constructor() {\n this._isText = false;\n }\n set _isTextSelector(value) {\n this._isText = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatSuffix, selector: \"[matSuffix], [matIconSuffix], [matTextSuffix]\", inputs: { _isTextSelector: [\"matTextSuffix\", \"_isTextSelector\"] }, providers: [{ provide: MAT_SUFFIX, useExisting: MatSuffix }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatSuffix, decorators: [{\n type: Directive,\n args: [{\n selector: '[matSuffix], [matIconSuffix], [matTextSuffix]',\n providers: [{ provide: MAT_SUFFIX, useExisting: MatSuffix }],\n }]\n }], propDecorators: { _isTextSelector: [{\n type: Input,\n args: ['matTextSuffix']\n }] } });\n\n/** An injion token for the parent form-field. */\nconst FLOATING_LABEL_PARENT = new InjectionToken('FloatingLabelParent');\n/**\n * Internal directive that maintains a MDC floating label. This directive does not\n * use the `MDCFloatingLabelFoundation` class, as it is not worth the size cost of\n * including it just to measure the label width and toggle some classes.\n *\n * The use of a directive allows us to conditionally render a floating label in the\n * template without having to manually manage instantiation and destruction of the\n * floating label component based on.\n *\n * The component is responsible for setting up the floating label styles, measuring label\n * width for the outline notch, and providing inputs that can be used to toggle the\n * label's floating or required state.\n */\nclass MatFormFieldFloatingLabel {\n /** Whether the label is floating. */\n get floating() {\n return this._floating;\n }\n set floating(value) {\n this._floating = value;\n if (this.monitorResize) {\n this._handleResize();\n }\n }\n /** Whether to monitor for resize events on the floating label. */\n get monitorResize() {\n return this._monitorResize;\n }\n set monitorResize(value) {\n this._monitorResize = value;\n if (this._monitorResize) {\n this._subscribeToResize();\n }\n else {\n this._resizeSubscription.unsubscribe();\n }\n }\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n this._floating = false;\n this._monitorResize = false;\n /** The shared ResizeObserver. */\n this._resizeObserver = inject(SharedResizeObserver);\n /** The Angular zone. */\n this._ngZone = inject(NgZone);\n /** The parent form-field. */\n this._parent = inject(FLOATING_LABEL_PARENT);\n /** The current resize event subscription. */\n this._resizeSubscription = new Subscription();\n }\n ngOnDestroy() {\n this._resizeSubscription.unsubscribe();\n }\n /** Gets the width of the label. Used for the outline notch. */\n getWidth() {\n return estimateScrollWidth(this._elementRef.nativeElement);\n }\n /** Gets the HTML element for the floating label. */\n get element() {\n return this._elementRef.nativeElement;\n }\n /** Handles resize events from the ResizeObserver. */\n _handleResize() {\n // In the case where the label grows in size, the following sequence of events occurs:\n // 1. The label grows by 1px triggering the ResizeObserver\n // 2. The notch is expanded to accommodate the entire label\n // 3. The label expands to its full width, triggering the ResizeObserver again\n //\n // This is expected, but If we allow this to all happen within the same macro task it causes an\n // error: `ResizeObserver loop limit exceeded`. Therefore we push the notch resize out until\n // the next macro task.\n setTimeout(() => this._parent._handleLabelResized());\n }\n /** Subscribes to resize events. */\n _subscribeToResize() {\n this._resizeSubscription.unsubscribe();\n this._ngZone.runOutsideAngular(() => {\n this._resizeSubscription = this._resizeObserver\n .observe(this._elementRef.nativeElement, { box: 'border-box' })\n .subscribe(() => this._handleResize());\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldFloatingLabel, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatFormFieldFloatingLabel, selector: \"label[matFormFieldFloatingLabel]\", inputs: { floating: \"floating\", monitorResize: \"monitorResize\" }, host: { properties: { \"class.mdc-floating-label--float-above\": \"floating\" }, classAttribute: \"mdc-floating-label mat-mdc-floating-label\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldFloatingLabel, decorators: [{\n type: Directive,\n args: [{\n selector: 'label[matFormFieldFloatingLabel]',\n host: {\n 'class': 'mdc-floating-label mat-mdc-floating-label',\n '[class.mdc-floating-label--float-above]': 'floating',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { floating: [{\n type: Input\n }], monitorResize: [{\n type: Input\n }] } });\n/**\n * Estimates the scroll width of an element.\n * via https://github.com/material-components/material-components-web/blob/c0a11ef0d000a098fd0c372be8f12d6a99302855/packages/mdc-dom/ponyfill.ts\n */\nfunction estimateScrollWidth(element) {\n // Check the offsetParent. If the element inherits display: none from any\n // parent, the offsetParent property will be null (see\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent).\n // This check ensures we only clone the node when necessary.\n const htmlEl = element;\n if (htmlEl.offsetParent !== null) {\n return htmlEl.scrollWidth;\n }\n const clone = htmlEl.cloneNode(true);\n clone.style.setProperty('position', 'absolute');\n clone.style.setProperty('transform', 'translate(-9999px, -9999px)');\n document.documentElement.appendChild(clone);\n const scrollWidth = clone.scrollWidth;\n clone.remove();\n return scrollWidth;\n}\n\n/** Class added when the line ripple is active. */\nconst ACTIVATE_CLASS = 'mdc-line-ripple--active';\n/** Class added when the line ripple is being deactivated. */\nconst DEACTIVATING_CLASS = 'mdc-line-ripple--deactivating';\n/**\n * Internal directive that creates an instance of the MDC line-ripple component. Using a\n * directive allows us to conditionally render a line-ripple in the template without having\n * to manually create and destroy the `MDCLineRipple` component whenever the condition changes.\n *\n * The directive sets up the styles for the line-ripple and provides an API for activating\n * and deactivating the line-ripple.\n */\nclass MatFormFieldLineRipple {\n constructor(_elementRef, ngZone) {\n this._elementRef = _elementRef;\n this._handleTransitionEnd = (event) => {\n const classList = this._elementRef.nativeElement.classList;\n const isDeactivating = classList.contains(DEACTIVATING_CLASS);\n if (event.propertyName === 'opacity' && isDeactivating) {\n classList.remove(ACTIVATE_CLASS, DEACTIVATING_CLASS);\n }\n };\n ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('transitionend', this._handleTransitionEnd);\n });\n }\n activate() {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(DEACTIVATING_CLASS);\n classList.add(ACTIVATE_CLASS);\n }\n deactivate() {\n this._elementRef.nativeElement.classList.add(DEACTIVATING_CLASS);\n }\n ngOnDestroy() {\n this._elementRef.nativeElement.removeEventListener('transitionend', this._handleTransitionEnd);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldLineRipple, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatFormFieldLineRipple, selector: \"div[matFormFieldLineRipple]\", host: { classAttribute: \"mdc-line-ripple\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldLineRipple, decorators: [{\n type: Directive,\n args: [{\n selector: 'div[matFormFieldLineRipple]',\n host: {\n 'class': 'mdc-line-ripple',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; } });\n\n/**\n * Internal component that creates an instance of the MDC notched-outline component.\n *\n * The component sets up the HTML structure and styles for the notched-outline. It provides\n * inputs to toggle the notch state and width.\n */\nclass MatFormFieldNotchedOutline {\n constructor(_elementRef, _ngZone) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /** Whether the notch should be opened. */\n this.open = false;\n }\n ngAfterViewInit() {\n const label = this._elementRef.nativeElement.querySelector('.mdc-floating-label');\n if (label) {\n this._elementRef.nativeElement.classList.add('mdc-notched-outline--upgraded');\n if (typeof requestAnimationFrame === 'function') {\n label.style.transitionDuration = '0s';\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => (label.style.transitionDuration = ''));\n });\n }\n }\n else {\n this._elementRef.nativeElement.classList.add('mdc-notched-outline--no-label');\n }\n }\n _setNotchWidth(labelWidth) {\n if (!this.open || !labelWidth) {\n this._notch.nativeElement.style.width = '';\n }\n else {\n const NOTCH_ELEMENT_PADDING = 8;\n const NOTCH_ELEMENT_BORDER = 1;\n this._notch.nativeElement.style.width = `calc(${labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + ${NOTCH_ELEMENT_PADDING + NOTCH_ELEMENT_BORDER}px)`;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldNotchedOutline, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatFormFieldNotchedOutline, selector: \"div[matFormFieldNotchedOutline]\", inputs: { open: [\"matFormFieldNotchedOutlineOpen\", \"open\"] }, host: { properties: { \"class.mdc-notched-outline--notched\": \"open\" }, classAttribute: \"mdc-notched-outline\" }, viewQueries: [{ propertyName: \"_notch\", first: true, predicate: [\"notch\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"mdc-notched-outline__leading\\\"></div>\\n<div class=\\\"mdc-notched-outline__notch\\\" #notch>\\n <ng-content></ng-content>\\n</div>\\n<div class=\\\"mdc-notched-outline__trailing\\\"></div>\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldNotchedOutline, decorators: [{\n type: Component,\n args: [{ selector: 'div[matFormFieldNotchedOutline]', host: {\n 'class': 'mdc-notched-outline',\n // Besides updating the notch state through the MDC component, we toggle this class through\n // a host binding in order to ensure that the notched-outline renders correctly on the server.\n '[class.mdc-notched-outline--notched]': 'open',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"mdc-notched-outline__leading\\\"></div>\\n<div class=\\\"mdc-notched-outline__notch\\\" #notch>\\n <ng-content></ng-content>\\n</div>\\n<div class=\\\"mdc-notched-outline__trailing\\\"></div>\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { open: [{\n type: Input,\n args: ['matFormFieldNotchedOutlineOpen']\n }], _notch: [{\n type: ViewChild,\n args: ['notch']\n }] } });\n\n/**\n * Animations used by the MatFormField.\n * @docs-private\n */\nconst matFormFieldAnimations = {\n /** Animation that transitions the form field's error and hint messages. */\n transitionMessages: trigger('transitionMessages', [\n // TODO(mmalerba): Use angular animations for label animation as well.\n state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n transition('void => enter', [\n style({ opacity: 0, transform: 'translateY(-5px)' }),\n animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\n ]),\n ]),\n};\n\n/** An interface which allows a control to work inside of a `MatFormField`. */\nclass MatFormFieldControl {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldControl, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatFormFieldControl, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldControl, decorators: [{\n type: Directive\n }] });\n\n/** @docs-private */\nfunction getMatFormFieldPlaceholderConflictError() {\n return Error('Placeholder attribute and child element were both specified.');\n}\n/** @docs-private */\nfunction getMatFormFieldDuplicatedHintError(align) {\n return Error(`A hint was already declared for 'align=\"${align}\"'.`);\n}\n/** @docs-private */\nfunction getMatFormFieldMissingControlError() {\n return Error('mat-form-field must contain a MatFormFieldControl.');\n}\n\n/**\n * Injection token that can be used to inject an instances of `MatFormField`. It serves\n * as alternative token to the actual `MatFormField` class which would cause unnecessary\n * retention of the `MatFormField` class and its component metadata.\n */\nconst MAT_FORM_FIELD = new InjectionToken('MatFormField');\n/**\n * Injection token that can be used to configure the\n * default options for all form field within an app.\n */\nconst MAT_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken('MAT_FORM_FIELD_DEFAULT_OPTIONS');\nlet nextUniqueId = 0;\n/** Default appearance used by the form field. */\nconst DEFAULT_APPEARANCE = 'fill';\n/**\n * Whether the label for form fields should by default float `always`,\n * `never`, or `auto`.\n */\nconst DEFAULT_FLOAT_LABEL = 'auto';\n/** Default way that the subscript element height is set. */\nconst DEFAULT_SUBSCRIPT_SIZING = 'fixed';\n/**\n * Default transform for docked floating labels in a MDC text-field. This value has been\n * extracted from the MDC text-field styles because we programmatically modify the docked\n * label transform, but do not want to accidentally discard the default label transform.\n */\nconst FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM = `translateY(-50%)`;\n/** Container for form controls that applies Material Design styling and behavior. */\nclass MatFormField {\n /** Whether the required marker should be hidden. */\n get hideRequiredMarker() {\n return this._hideRequiredMarker;\n }\n set hideRequiredMarker(value) {\n this._hideRequiredMarker = coerceBooleanProperty(value);\n }\n /** Whether the label should always float or float as the user types. */\n get floatLabel() {\n return this._floatLabel || this._defaults?.floatLabel || DEFAULT_FLOAT_LABEL;\n }\n set floatLabel(value) {\n if (value !== this._floatLabel) {\n this._floatLabel = value;\n // For backwards compatibility. Custom form field controls or directives might set\n // the \"floatLabel\" input and expect the form field view to be updated automatically.\n // e.g. autocomplete trigger. Ideally we'd get rid of this and the consumers would just\n // emit the \"stateChanges\" observable. TODO(devversion): consider removing.\n this._changeDetectorRef.markForCheck();\n }\n }\n /** The form field appearance style. */\n get appearance() {\n return this._appearance;\n }\n set appearance(value) {\n const oldValue = this._appearance;\n const newAppearance = value || this._defaults?.appearance || DEFAULT_APPEARANCE;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (newAppearance !== 'fill' && newAppearance !== 'outline') {\n throw new Error(`MatFormField: Invalid appearance \"${newAppearance}\", valid values are \"fill\" or \"outline\".`);\n }\n }\n this._appearance = newAppearance;\n if (this._appearance === 'outline' && this._appearance !== oldValue) {\n // If the appearance has been switched to `outline`, the label offset needs to be updated.\n // The update can happen once the view has been re-checked, but not immediately because\n // the view has not been updated and the notched-outline floating label is not present.\n this._needsOutlineLabelOffsetUpdateOnStable = true;\n }\n }\n /**\n * Whether the form field should reserve space for one line of hint/error text (default)\n * or to have the spacing grow from 0px as needed based on the size of the hint/error content.\n * Note that when using dynamic sizing, layout shifts will occur when hint/error text changes.\n */\n get subscriptSizing() {\n return this._subscriptSizing || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;\n }\n set subscriptSizing(value) {\n this._subscriptSizing = value || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;\n }\n /** Text for the form field hint. */\n get hintLabel() {\n return this._hintLabel;\n }\n set hintLabel(value) {\n this._hintLabel = value;\n this._processHints();\n }\n /** Gets the current form field control */\n get _control() {\n return this._explicitFormFieldControl || this._formFieldControl;\n }\n set _control(value) {\n this._explicitFormFieldControl = value;\n }\n constructor(_elementRef, _changeDetectorRef, _ngZone, _dir, _platform, _defaults, _animationMode, \n /**\n * @deprecated not needed, to be removed.\n * @breaking-change 17.0.0 remove this param\n */\n _unusedDocument) {\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._ngZone = _ngZone;\n this._dir = _dir;\n this._platform = _platform;\n this._defaults = _defaults;\n this._animationMode = _animationMode;\n this._hideRequiredMarker = false;\n /** The color palette for the form field. */\n this.color = 'primary';\n this._appearance = DEFAULT_APPEARANCE;\n this._subscriptSizing = null;\n this._hintLabel = '';\n this._hasIconPrefix = false;\n this._hasTextPrefix = false;\n this._hasIconSuffix = false;\n this._hasTextSuffix = false;\n // Unique id for the internal form field label.\n this._labelId = `mat-mdc-form-field-label-${nextUniqueId++}`;\n // Unique id for the hint label.\n this._hintLabelId = `mat-mdc-hint-${nextUniqueId++}`;\n /** State of the mat-hint and mat-error animations. */\n this._subscriptAnimationState = '';\n this._destroyed = new Subject();\n this._isFocused = null;\n this._needsOutlineLabelOffsetUpdateOnStable = false;\n if (_defaults) {\n if (_defaults.appearance) {\n this.appearance = _defaults.appearance;\n }\n this._hideRequiredMarker = Boolean(_defaults?.hideRequiredMarker);\n if (_defaults.color) {\n this.color = _defaults.color;\n }\n }\n }\n ngAfterViewInit() {\n // Initial focus state sync. This happens rarely, but we want to account for\n // it in case the form field control has \"focused\" set to true on init.\n this._updateFocusState();\n // Enable animations now. This ensures we don't animate on initial render.\n this._subscriptAnimationState = 'enter';\n // Because the above changes a value used in the template after it was checked, we need\n // to trigger CD or the change might not be reflected if there is no other CD scheduled.\n this._changeDetectorRef.detectChanges();\n }\n ngAfterContentInit() {\n this._assertFormFieldControl();\n this._initializeControl();\n this._initializeSubscript();\n this._initializePrefixAndSuffix();\n this._initializeOutlineLabelOffsetSubscriptions();\n }\n ngAfterContentChecked() {\n this._assertFormFieldControl();\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Gets the id of the label element. If no label is present, returns `null`.\n */\n getLabelId() {\n return this._hasFloatingLabel() ? this._labelId : null;\n }\n /**\n * Gets an ElementRef for the element that a overlay attached to the form field\n * should be positioned relative to.\n */\n getConnectedOverlayOrigin() {\n return this._textField || this._elementRef;\n }\n /** Animates the placeholder up and locks it in position. */\n _animateAndLockLabel() {\n // This is for backwards compatibility only. Consumers of the form field might use\n // this method. e.g. the autocomplete trigger. This method has been added to the non-MDC\n // form field because setting \"floatLabel\" to \"always\" caused the label to float without\n // animation. This is different in MDC where the label always animates, so this method\n // is no longer necessary. There doesn't seem any benefit in adding logic to allow changing\n // the floating label state without animations. The non-MDC implementation was inconsistent\n // because it always animates if \"floatLabel\" is set away from \"always\".\n // TODO(devversion): consider removing this method when releasing the MDC form field.\n if (this._hasFloatingLabel()) {\n this.floatLabel = 'always';\n }\n }\n /** Initializes the registered form field control. */\n _initializeControl() {\n const control = this._control;\n if (control.controlType) {\n this._elementRef.nativeElement.classList.add(`mat-mdc-form-field-type-${control.controlType}`);\n }\n // Subscribe to changes in the child control state in order to update the form field UI.\n control.stateChanges.subscribe(() => {\n this._updateFocusState();\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n // Run change detection if the value changes.\n if (control.ngControl && control.ngControl.valueChanges) {\n control.ngControl.valueChanges\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n }\n _checkPrefixAndSuffixTypes() {\n this._hasIconPrefix = !!this._prefixChildren.find(p => !p._isText);\n this._hasTextPrefix = !!this._prefixChildren.find(p => p._isText);\n this._hasIconSuffix = !!this._suffixChildren.find(s => !s._isText);\n this._hasTextSuffix = !!this._suffixChildren.find(s => s._isText);\n }\n /** Initializes the prefix and suffix containers. */\n _initializePrefixAndSuffix() {\n this._checkPrefixAndSuffixTypes();\n // Mark the form field as dirty whenever the prefix or suffix children change. This\n // is necessary because we conditionally display the prefix/suffix containers based\n // on whether there is projected content.\n merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {\n this._checkPrefixAndSuffixTypes();\n this._changeDetectorRef.markForCheck();\n });\n }\n /**\n * Initializes the subscript by validating hints and synchronizing \"aria-describedby\" ids\n * with the custom form field control. Also subscribes to hint and error changes in order\n * to be able to validate and synchronize ids on change.\n */\n _initializeSubscript() {\n // Re-validate when the number of hints changes.\n this._hintChildren.changes.subscribe(() => {\n this._processHints();\n this._changeDetectorRef.markForCheck();\n });\n // Update the aria-described by when the number of errors changes.\n this._errorChildren.changes.subscribe(() => {\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n // Initial mat-hint validation and subscript describedByIds sync.\n this._validateHints();\n this._syncDescribedByIds();\n }\n /** Throws an error if the form field's control is missing. */\n _assertFormFieldControl() {\n if (!this._control && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatFormFieldMissingControlError();\n }\n }\n _updateFocusState() {\n // Usually the MDC foundation would call \"activateFocus\" and \"deactivateFocus\" whenever\n // certain DOM events are emitted. This is not possible in our implementation of the\n // form field because we support abstract form field controls which are not necessarily\n // of type input, nor do we have a reference to a native form field control element. Instead\n // we handle the focus by checking if the abstract form field control focused state changes.\n if (this._control.focused && !this._isFocused) {\n this._isFocused = true;\n this._lineRipple?.activate();\n }\n else if (!this._control.focused && (this._isFocused || this._isFocused === null)) {\n this._isFocused = false;\n this._lineRipple?.deactivate();\n }\n this._textField?.nativeElement.classList.toggle('mdc-text-field--focused', this._control.focused);\n }\n /**\n * The floating label in the docked state needs to account for prefixes. The horizontal offset\n * is calculated whenever the appearance changes to `outline`, the prefixes change, or when the\n * form field is added to the DOM. This method sets up all subscriptions which are needed to\n * trigger the label offset update. In general, we want to avoid performing measurements often,\n * so we rely on the `NgZone` as indicator when the offset should be recalculated, instead of\n * checking every change detection cycle.\n */\n _initializeOutlineLabelOffsetSubscriptions() {\n // Whenever the prefix changes, schedule an update of the label offset.\n this._prefixChildren.changes.subscribe(() => (this._needsOutlineLabelOffsetUpdateOnStable = true));\n // Note that we have to run outside of the `NgZone` explicitly, in order to avoid\n // throwing users into an infinite loop if `zone-patch-rxjs` is included.\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.pipe(takeUntil(this._destroyed)).subscribe(() => {\n if (this._needsOutlineLabelOffsetUpdateOnStable) {\n this._needsOutlineLabelOffsetUpdateOnStable = false;\n this._updateOutlineLabelOffset();\n }\n });\n });\n this._dir.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => (this._needsOutlineLabelOffsetUpdateOnStable = true));\n }\n /** Whether the floating label should always float or not. */\n _shouldAlwaysFloat() {\n return this.floatLabel === 'always';\n }\n _hasOutline() {\n return this.appearance === 'outline';\n }\n /**\n * Whether the label should display in the infix. Labels in the outline appearance are\n * displayed as part of the notched-outline and are horizontally offset to account for\n * form field prefix content. This won't work in server side rendering since we cannot\n * measure the width of the prefix container. To make the docked label appear as if the\n * right offset has been calculated, we forcibly render the label inside the infix. Since\n * the label is part of the infix, the label cannot overflow the prefix content.\n */\n _forceDisplayInfixLabel() {\n return !this._platform.isBrowser && this._prefixChildren.length && !this._shouldLabelFloat();\n }\n _hasFloatingLabel() {\n return !!this._labelChildNonStatic || !!this._labelChildStatic;\n }\n _shouldLabelFloat() {\n return this._control.shouldLabelFloat || this._shouldAlwaysFloat();\n }\n /**\n * Determines whether a class from the AbstractControlDirective\n * should be forwarded to the host element.\n */\n _shouldForward(prop) {\n const control = this._control ? this._control.ngControl : null;\n return control && control[prop];\n }\n /** Determines whether to display hints or errors. */\n _getDisplayedMessages() {\n return this._errorChildren && this._errorChildren.length > 0 && this._control.errorState\n ? 'error'\n : 'hint';\n }\n /** Handle label resize events. */\n _handleLabelResized() {\n this._refreshOutlineNotchWidth();\n }\n /** Refreshes the width of the outline-notch, if present. */\n _refreshOutlineNotchWidth() {\n if (!this._hasOutline() || !this._floatingLabel || !this._shouldLabelFloat()) {\n this._notchedOutline?._setNotchWidth(0);\n }\n else {\n this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth());\n }\n }\n /** Does any extra processing that is required when handling the hints. */\n _processHints() {\n this._validateHints();\n this._syncDescribedByIds();\n }\n /**\n * Ensure that there is a maximum of one of each \"mat-hint\" alignment specified. The hint\n * label specified set through the input is being considered as \"start\" aligned.\n *\n * This method is a noop if Angular runs in production mode.\n */\n _validateHints() {\n if (this._hintChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n let startHint;\n let endHint;\n this._hintChildren.forEach((hint) => {\n if (hint.align === 'start') {\n if (startHint || this.hintLabel) {\n throw getMatFormFieldDuplicatedHintError('start');\n }\n startHint = hint;\n }\n else if (hint.align === 'end') {\n if (endHint) {\n throw getMatFormFieldDuplicatedHintError('end');\n }\n endHint = hint;\n }\n });\n }\n }\n /**\n * Sets the list of element IDs that describe the child control. This allows the control to update\n * its `aria-describedby` attribute accordingly.\n */\n _syncDescribedByIds() {\n if (this._control) {\n let ids = [];\n // TODO(wagnermaciel): Remove the type check when we find the root cause of this bug.\n if (this._control.userAriaDescribedBy &&\n typeof this._control.userAriaDescribedBy === 'string') {\n ids.push(...this._control.userAriaDescribedBy.split(' '));\n }\n if (this._getDisplayedMessages() === 'hint') {\n const startHint = this._hintChildren\n ? this._hintChildren.find(hint => hint.align === 'start')\n : null;\n const endHint = this._hintChildren\n ? this._hintChildren.find(hint => hint.align === 'end')\n : null;\n if (startHint) {\n ids.push(startHint.id);\n }\n else if (this._hintLabel) {\n ids.push(this._hintLabelId);\n }\n if (endHint) {\n ids.push(endHint.id);\n }\n }\n else if (this._errorChildren) {\n ids.push(...this._errorChildren.map(error => error.id));\n }\n this._control.setDescribedByIds(ids);\n }\n }\n /**\n * Updates the horizontal offset of the label in the outline appearance. In the outline\n * appearance, the notched-outline and label are not relative to the infix container because\n * the outline intends to surround prefixes, suffixes and the infix. This means that the\n * floating label by default overlaps prefixes in the docked state. To avoid this, we need to\n * horizontally offset the label by the width of the prefix container. The MDC text-field does\n * not need to do this because they use a fixed width for prefixes. Hence, they can simply\n * incorporate the horizontal offset into their default text-field styles.\n */\n _updateOutlineLabelOffset() {\n if (!this._platform.isBrowser || !this._hasOutline() || !this._floatingLabel) {\n return;\n }\n const floatingLabel = this._floatingLabel.element;\n // If no prefix is displayed, reset the outline label offset from potential\n // previous label offset updates.\n if (!(this._iconPrefixContainer || this._textPrefixContainer)) {\n floatingLabel.style.transform = '';\n return;\n }\n // If the form field is not attached to the DOM yet (e.g. in a tab), we defer\n // the label offset update until the zone stabilizes.\n if (!this._isAttachedToDom()) {\n this._needsOutlineLabelOffsetUpdateOnStable = true;\n return;\n }\n const iconPrefixContainer = this._iconPrefixContainer?.nativeElement;\n const textPrefixContainer = this._textPrefixContainer?.nativeElement;\n const iconPrefixContainerWidth = iconPrefixContainer?.getBoundingClientRect().width ?? 0;\n const textPrefixContainerWidth = textPrefixContainer?.getBoundingClientRect().width ?? 0;\n // If the directionality is RTL, the x-axis transform needs to be inverted. This\n // is because `transformX` does not change based on the page directionality.\n const negate = this._dir.value === 'rtl' ? '-1' : '1';\n const prefixWidth = `${iconPrefixContainerWidth + textPrefixContainerWidth}px`;\n const labelOffset = `var(--mat-mdc-form-field-label-offset-x, 0px)`;\n const labelHorizontalOffset = `calc(${negate} * (${prefixWidth} + ${labelOffset}))`;\n // Update the translateX of the floating label to account for the prefix container,\n // but allow the CSS to override this setting via a CSS variable when the label is\n // floating.\n floatingLabel.style.transform = `var(\n --mat-mdc-form-field-label-transform,\n ${FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM} translateX(${labelHorizontalOffset})\n )`;\n }\n /** Checks whether the form field is attached to the DOM. */\n _isAttachedToDom() {\n const element = this._elementRef.nativeElement;\n if (element.getRootNode) {\n const rootNode = element.getRootNode();\n // If the element is inside the DOM the root node will be either the document\n // or the closest shadow root, otherwise it'll be the element itself.\n return rootNode && rootNode !== element;\n }\n // Otherwise fall back to checking if it's in the document. This doesn't account for\n // shadow DOM, however browser that support shadow DOM should support `getRootNode` as well.\n return document.documentElement.contains(element);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormField, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.Directionality }, { token: i2.Platform }, { token: MAT_FORM_FIELD_DEFAULT_OPTIONS, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatFormField, selector: \"mat-form-field\", inputs: { hideRequiredMarker: \"hideRequiredMarker\", color: \"color\", floatLabel: \"floatLabel\", appearance: \"appearance\", subscriptSizing: \"subscriptSizing\", hintLabel: \"hintLabel\" }, host: { properties: { \"class.mat-mdc-form-field-label-always-float\": \"_shouldAlwaysFloat()\", \"class.mat-mdc-form-field-has-icon-prefix\": \"_hasIconPrefix\", \"class.mat-mdc-form-field-has-icon-suffix\": \"_hasIconSuffix\", \"class.mat-form-field-invalid\": \"_control.errorState\", \"class.mat-form-field-disabled\": \"_control.disabled\", \"class.mat-form-field-autofilled\": \"_control.autofilled\", \"class.mat-form-field-no-animations\": \"_animationMode === \\\"NoopAnimations\\\"\", \"class.mat-form-field-appearance-fill\": \"appearance == \\\"fill\\\"\", \"class.mat-form-field-appearance-outline\": \"appearance == \\\"outline\\\"\", \"class.mat-form-field-hide-placeholder\": \"_hasFloatingLabel() && !_shouldLabelFloat()\", \"class.mat-focused\": \"_control.focused\", \"class.mat-primary\": \"color !== \\\"accent\\\" && color !== \\\"warn\\\"\", \"class.mat-accent\": \"color === \\\"accent\\\"\", \"class.mat-warn\": \"color === \\\"warn\\\"\", \"class.ng-untouched\": \"_shouldForward(\\\"untouched\\\")\", \"class.ng-touched\": \"_shouldForward(\\\"touched\\\")\", \"class.ng-pristine\": \"_shouldForward(\\\"pristine\\\")\", \"class.ng-dirty\": \"_shouldForward(\\\"dirty\\\")\", \"class.ng-valid\": \"_shouldForward(\\\"valid\\\")\", \"class.ng-invalid\": \"_shouldForward(\\\"invalid\\\")\", \"class.ng-pending\": \"_shouldForward(\\\"pending\\\")\" }, classAttribute: \"mat-mdc-form-field\" }, providers: [\n { provide: MAT_FORM_FIELD, useExisting: MatFormField },\n { provide: FLOATING_LABEL_PARENT, useExisting: MatFormField },\n ], queries: [{ propertyName: \"_labelChildNonStatic\", first: true, predicate: MatLabel, descendants: true }, { propertyName: \"_labelChildStatic\", first: true, predicate: MatLabel, descendants: true, static: true }, { propertyName: \"_formFieldControl\", first: true, predicate: MatFormFieldControl, descendants: true }, { propertyName: \"_prefixChildren\", predicate: MAT_PREFIX, descendants: true }, { propertyName: \"_suffixChildren\", predicate: MAT_SUFFIX, descendants: true }, { propertyName: \"_errorChildren\", predicate: MAT_ERROR, descendants: true }, { propertyName: \"_hintChildren\", predicate: MatHint, descendants: true }], viewQueries: [{ propertyName: \"_textField\", first: true, predicate: [\"textField\"], descendants: true }, { propertyName: \"_iconPrefixContainer\", first: true, predicate: [\"iconPrefixContainer\"], descendants: true }, { propertyName: \"_textPrefixContainer\", first: true, predicate: [\"textPrefixContainer\"], descendants: true }, { propertyName: \"_floatingLabel\", first: true, predicate: MatFormFieldFloatingLabel, descendants: true }, { propertyName: \"_notchedOutline\", first: true, predicate: MatFormFieldNotchedOutline, descendants: true }, { propertyName: \"_lineRipple\", first: true, predicate: MatFormFieldLineRipple, descendants: true }], exportAs: [\"matFormField\"], ngImport: i0, template: \"<ng-template #labelTemplate>\\n <!--\\n MDC recommends that the text-field is a `<label>` element. This rather complicates the\\n setup because it would require every form-field control to explicitly set `aria-labelledby`.\\n This is because the `<label>` itself contains more than the actual label (e.g. prefix, suffix\\n or other projected content), and screen readers could potentially read out undesired content.\\n Excluding elements from being printed out requires them to be marked with `aria-hidden`, or\\n the form control is set to a scoped element for the label (using `aria-labelledby`). Both of\\n these options seem to complicate the setup because we know exactly what content is rendered\\n as part of the label, and we don't want to spend resources on walking through projected content\\n to set `aria-hidden`. Nor do we want to set `aria-labelledby` on every form control if we could\\n simply link the label to the control using the label `for` attribute.\\n -->\\n <label matFormFieldFloatingLabel\\n [floating]=\\\"_shouldLabelFloat()\\\"\\n [monitorResize]=\\\"_hasOutline()\\\"\\n *ngIf=\\\"_hasFloatingLabel()\\\"\\n [id]=\\\"_labelId\\\"\\n [attr.for]=\\\"_control.id\\\">\\n <ng-content select=\\\"mat-label\\\"></ng-content>\\n <!--\\n We set the required marker as a separate element, in order to make it easier to target if\\n apps want to override it and to be able to set `aria-hidden` so that screen readers don't\\n pick it up.\\n -->\\n <span\\n *ngIf=\\\"!hideRequiredMarker && _control.required\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"mat-mdc-form-field-required-marker mdc-floating-label--required\\\"></span>\\n </label>\\n</ng-template>\\n\\n<div class=\\\"mat-mdc-text-field-wrapper mdc-text-field\\\" #textField\\n [class.mdc-text-field--filled]=\\\"!_hasOutline()\\\"\\n [class.mdc-text-field--outlined]=\\\"_hasOutline()\\\"\\n [class.mdc-text-field--no-label]=\\\"!_hasFloatingLabel()\\\"\\n [class.mdc-text-field--disabled]=\\\"_control.disabled\\\"\\n [class.mdc-text-field--invalid]=\\\"_control.errorState\\\"\\n (click)=\\\"_control.onContainerClick($event)\\\">\\n <div class=\\\"mat-mdc-form-field-focus-overlay\\\" *ngIf=\\\"!_hasOutline() && !_control.disabled\\\"></div>\\n <div class=\\\"mat-mdc-form-field-flex\\\">\\n <div *ngIf=\\\"_hasOutline()\\\" matFormFieldNotchedOutline\\n [matFormFieldNotchedOutlineOpen]=\\\"_shouldLabelFloat()\\\">\\n <ng-template [ngIf]=\\\"!_forceDisplayInfixLabel()\\\">\\n <ng-template [ngTemplateOutlet]=\\\"labelTemplate\\\"></ng-template>\\n </ng-template>\\n </div>\\n\\n <div class=\\\"mat-mdc-form-field-icon-prefix\\\" *ngIf=\\\"_hasIconPrefix\\\" #iconPrefixContainer>\\n <ng-content select=\\\"[matPrefix], [matIconPrefix]\\\"></ng-content>\\n </div>\\n <div class=\\\"mat-mdc-form-field-text-prefix\\\" *ngIf=\\\"_hasTextPrefix\\\" #textPrefixContainer>\\n <ng-content select=\\\"[matTextPrefix]\\\"></ng-content>\\n </div>\\n\\n <div class=\\\"mat-mdc-form-field-infix\\\">\\n <ng-template [ngIf]=\\\"!_hasOutline() || _forceDisplayInfixLabel()\\\">\\n <ng-template [ngTemplateOutlet]=\\\"labelTemplate\\\"></ng-template>\\n </ng-template>\\n\\n <ng-content></ng-content>\\n </div>\\n\\n <div class=\\\"mat-mdc-form-field-text-suffix\\\" *ngIf=\\\"_hasTextSuffix\\\">\\n <ng-content select=\\\"[matTextSuffix]\\\"></ng-content>\\n </div>\\n <div class=\\\"mat-mdc-form-field-icon-suffix\\\" *ngIf=\\\"_hasIconSuffix\\\">\\n <ng-content select=\\\"[matSuffix], [matIconSuffix]\\\"></ng-content>\\n </div>\\n </div>\\n\\n <div matFormFieldLineRipple *ngIf=\\\"!_hasOutline()\\\"></div>\\n</div>\\n\\n<div class=\\\"mat-mdc-form-field-subscript-wrapper mat-mdc-form-field-bottom-align\\\"\\n [class.mat-mdc-form-field-subscript-dynamic-size]=\\\"subscriptSizing === 'dynamic'\\\"\\n [ngSwitch]=\\\"_getDisplayedMessages()\\\">\\n <div class=\\\"mat-mdc-form-field-error-wrapper\\\" *ngSwitchCase=\\\"'error'\\\"\\n [@transitionMessages]=\\\"_subscriptAnimationState\\\">\\n <ng-content select=\\\"mat-error, [matError]\\\"></ng-content>\\n </div>\\n\\n <div class=\\\"mat-mdc-form-field-hint-wrapper\\\" *ngSwitchCase=\\\"'hint'\\\"\\n [@transitionMessages]=\\\"_subscriptAnimationState\\\">\\n <mat-hint *ngIf=\\\"hintLabel\\\" [id]=\\\"_hintLabelId\\\">{{hintLabel}}</mat-hint>\\n <ng-content select=\\\"mat-hint:not([align='end'])\\\"></ng-content>\\n <div class=\\\"mat-mdc-form-field-hint-spacer\\\"></div>\\n <ng-content select=\\\"mat-hint[align='end']\\\"></ng-content>\\n </div>\\n</div>\\n\", styles: [\".mdc-text-field{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:\\\"\\\";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0px;content:\\\"*\\\"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after,.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;pointer-events:none}.mdc-notched-outline__trailing{flex-grow:1}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\\\"\\\"}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{border-top:1px solid;border-bottom:1px solid}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{max-width:calc(100% - 12px * 2)}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-text-field--filled{--mdc-filled-text-field-active-indicator-height:1px;--mdc-filled-text-field-focus-active-indicator-height:2px;--mdc-filled-text-field-container-shape:4px;border-top-left-radius:var(--mdc-filled-text-field-container-shape);border-top-right-radius:var(--mdc-filled-text-field-container-shape);border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-caret-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-focus-label-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-disabled-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-focus-label-text-color)}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font);font-size:var(--mdc-filled-text-field-label-text-size);font-weight:var(--mdc-filled-text-field-label-text-weight);letter-spacing:var(--mdc-filled-text-field-label-text-tracking)}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color)}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color)}.mdc-text-field--filled .mdc-line-ripple::before{border-bottom-width:var(--mdc-filled-text-field-active-indicator-height)}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height)}.mdc-text-field--outlined{--mdc-outlined-text-field-outline-width:1px;--mdc-outlined-text-field-focus-outline-width:2px;--mdc-outlined-text-field-container-shape:4px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-caret-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-focus-label-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-disabled-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-focus-label-text-color)}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font);font-size:var(--mdc-outlined-text-field-label-text-size);font-weight:var(--mdc-outlined-text-field-label-text-weight);letter-spacing:var(--mdc-outlined-text-field-label-text-tracking)}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-outlined-text-field-container-shape))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-hover-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-focus-outline-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-disabled-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-hover-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-focus-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-outline-width)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-focus-outline-width)}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\\\"\\\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\\\"\\\";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font);line-height:var(--mat-form-field-container-text-line-height);font-size:var(--mat-form-field-container-text-size);letter-spacing:var(--mat-form-field-container-text-tracking);font-weight:var(--mat-form-field-container-text-weight)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size) * var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}\"], dependencies: [{ kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i3.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { kind: \"directive\", type: i3.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { kind: \"directive\", type: MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: MatFormFieldFloatingLabel, selector: \"label[matFormFieldFloatingLabel]\", inputs: [\"floating\", \"monitorResize\"] }, { kind: \"component\", type: MatFormFieldNotchedOutline, selector: \"div[matFormFieldNotchedOutline]\", inputs: [\"matFormFieldNotchedOutlineOpen\"] }, { kind: \"directive\", type: MatFormFieldLineRipple, selector: \"div[matFormFieldLineRipple]\" }], animations: [matFormFieldAnimations.transitionMessages], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormField, decorators: [{\n type: Component,\n args: [{ selector: 'mat-form-field', exportAs: 'matFormField', animations: [matFormFieldAnimations.transitionMessages], host: {\n 'class': 'mat-mdc-form-field',\n '[class.mat-mdc-form-field-label-always-float]': '_shouldAlwaysFloat()',\n '[class.mat-mdc-form-field-has-icon-prefix]': '_hasIconPrefix',\n '[class.mat-mdc-form-field-has-icon-suffix]': '_hasIconSuffix',\n // Note that these classes reuse the same names as the non-MDC version, because they can be\n // considered a public API since custom form controls may use them to style themselves.\n // See https://github.com/angular/components/pull/20502#discussion_r486124901.\n '[class.mat-form-field-invalid]': '_control.errorState',\n '[class.mat-form-field-disabled]': '_control.disabled',\n '[class.mat-form-field-autofilled]': '_control.autofilled',\n '[class.mat-form-field-no-animations]': '_animationMode === \"NoopAnimations\"',\n '[class.mat-form-field-appearance-fill]': 'appearance == \"fill\"',\n '[class.mat-form-field-appearance-outline]': 'appearance == \"outline\"',\n '[class.mat-form-field-hide-placeholder]': '_hasFloatingLabel() && !_shouldLabelFloat()',\n '[class.mat-focused]': '_control.focused',\n '[class.mat-primary]': 'color !== \"accent\" && color !== \"warn\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n '[class.ng-touched]': '_shouldForward(\"touched\")',\n '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n '[class.ng-valid]': '_shouldForward(\"valid\")',\n '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n '[class.ng-pending]': '_shouldForward(\"pending\")',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: MAT_FORM_FIELD, useExisting: MatFormField },\n { provide: FLOATING_LABEL_PARENT, useExisting: MatFormField },\n ], template: \"<ng-template #labelTemplate>\\n <!--\\n MDC recommends that the text-field is a `<label>` element. This rather complicates the\\n setup because it would require every form-field control to explicitly set `aria-labelledby`.\\n This is because the `<label>` itself contains more than the actual label (e.g. prefix, suffix\\n or other projected content), and screen readers could potentially read out undesired content.\\n Excluding elements from being printed out requires them to be marked with `aria-hidden`, or\\n the form control is set to a scoped element for the label (using `aria-labelledby`). Both of\\n these options seem to complicate the setup because we know exactly what content is rendered\\n as part of the label, and we don't want to spend resources on walking through projected content\\n to set `aria-hidden`. Nor do we want to set `aria-labelledby` on every form control if we could\\n simply link the label to the control using the label `for` attribute.\\n -->\\n <label matFormFieldFloatingLabel\\n [floating]=\\\"_shouldLabelFloat()\\\"\\n [monitorResize]=\\\"_hasOutline()\\\"\\n *ngIf=\\\"_hasFloatingLabel()\\\"\\n [id]=\\\"_labelId\\\"\\n [attr.for]=\\\"_control.id\\\">\\n <ng-content select=\\\"mat-label\\\"></ng-content>\\n <!--\\n We set the required marker as a separate element, in order to make it easier to target if\\n apps want to override it and to be able to set `aria-hidden` so that screen readers don't\\n pick it up.\\n -->\\n <span\\n *ngIf=\\\"!hideRequiredMarker && _control.required\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"mat-mdc-form-field-required-marker mdc-floating-label--required\\\"></span>\\n </label>\\n</ng-template>\\n\\n<div class=\\\"mat-mdc-text-field-wrapper mdc-text-field\\\" #textField\\n [class.mdc-text-field--filled]=\\\"!_hasOutline()\\\"\\n [class.mdc-text-field--outlined]=\\\"_hasOutline()\\\"\\n [class.mdc-text-field--no-label]=\\\"!_hasFloatingLabel()\\\"\\n [class.mdc-text-field--disabled]=\\\"_control.disabled\\\"\\n [class.mdc-text-field--invalid]=\\\"_control.errorState\\\"\\n (click)=\\\"_control.onContainerClick($event)\\\">\\n <div class=\\\"mat-mdc-form-field-focus-overlay\\\" *ngIf=\\\"!_hasOutline() && !_control.disabled\\\"></div>\\n <div class=\\\"mat-mdc-form-field-flex\\\">\\n <div *ngIf=\\\"_hasOutline()\\\" matFormFieldNotchedOutline\\n [matFormFieldNotchedOutlineOpen]=\\\"_shouldLabelFloat()\\\">\\n <ng-template [ngIf]=\\\"!_forceDisplayInfixLabel()\\\">\\n <ng-template [ngTemplateOutlet]=\\\"labelTemplate\\\"></ng-template>\\n </ng-template>\\n </div>\\n\\n <div class=\\\"mat-mdc-form-field-icon-prefix\\\" *ngIf=\\\"_hasIconPrefix\\\" #iconPrefixContainer>\\n <ng-content select=\\\"[matPrefix], [matIconPrefix]\\\"></ng-content>\\n </div>\\n <div class=\\\"mat-mdc-form-field-text-prefix\\\" *ngIf=\\\"_hasTextPrefix\\\" #textPrefixContainer>\\n <ng-content select=\\\"[matTextPrefix]\\\"></ng-content>\\n </div>\\n\\n <div class=\\\"mat-mdc-form-field-infix\\\">\\n <ng-template [ngIf]=\\\"!_hasOutline() || _forceDisplayInfixLabel()\\\">\\n <ng-template [ngTemplateOutlet]=\\\"labelTemplate\\\"></ng-template>\\n </ng-template>\\n\\n <ng-content></ng-content>\\n </div>\\n\\n <div class=\\\"mat-mdc-form-field-text-suffix\\\" *ngIf=\\\"_hasTextSuffix\\\">\\n <ng-content select=\\\"[matTextSuffix]\\\"></ng-content>\\n </div>\\n <div class=\\\"mat-mdc-form-field-icon-suffix\\\" *ngIf=\\\"_hasIconSuffix\\\">\\n <ng-content select=\\\"[matSuffix], [matIconSuffix]\\\"></ng-content>\\n </div>\\n </div>\\n\\n <div matFormFieldLineRipple *ngIf=\\\"!_hasOutline()\\\"></div>\\n</div>\\n\\n<div class=\\\"mat-mdc-form-field-subscript-wrapper mat-mdc-form-field-bottom-align\\\"\\n [class.mat-mdc-form-field-subscript-dynamic-size]=\\\"subscriptSizing === 'dynamic'\\\"\\n [ngSwitch]=\\\"_getDisplayedMessages()\\\">\\n <div class=\\\"mat-mdc-form-field-error-wrapper\\\" *ngSwitchCase=\\\"'error'\\\"\\n [@transitionMessages]=\\\"_subscriptAnimationState\\\">\\n <ng-content select=\\\"mat-error, [matError]\\\"></ng-content>\\n </div>\\n\\n <div class=\\\"mat-mdc-form-field-hint-wrapper\\\" *ngSwitchCase=\\\"'hint'\\\"\\n [@transitionMessages]=\\\"_subscriptAnimationState\\\">\\n <mat-hint *ngIf=\\\"hintLabel\\\" [id]=\\\"_hintLabelId\\\">{{hintLabel}}</mat-hint>\\n <ng-content select=\\\"mat-hint:not([align='end'])\\\"></ng-content>\\n <div class=\\\"mat-mdc-form-field-hint-spacer\\\"></div>\\n <ng-content select=\\\"mat-hint[align='end']\\\"></ng-content>\\n </div>\\n</div>\\n\", styles: [\".mdc-text-field{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:\\\"\\\";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0px;content:\\\"*\\\"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after,.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;pointer-events:none}.mdc-notched-outline__trailing{flex-grow:1}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\\\"\\\"}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{border-top:1px solid;border-bottom:1px solid}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{max-width:calc(100% - 12px * 2)}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-text-field--filled{--mdc-filled-text-field-active-indicator-height:1px;--mdc-filled-text-field-focus-active-indicator-height:2px;--mdc-filled-text-field-container-shape:4px;border-top-left-radius:var(--mdc-filled-text-field-container-shape);border-top-right-radius:var(--mdc-filled-text-field-container-shape);border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-caret-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-focus-label-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-disabled-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-focus-label-text-color)}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font);font-size:var(--mdc-filled-text-field-label-text-size);font-weight:var(--mdc-filled-text-field-label-text-weight);letter-spacing:var(--mdc-filled-text-field-label-text-tracking)}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color)}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color)}.mdc-text-field--filled .mdc-line-ripple::before{border-bottom-width:var(--mdc-filled-text-field-active-indicator-height)}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height)}.mdc-text-field--outlined{--mdc-outlined-text-field-outline-width:1px;--mdc-outlined-text-field-focus-outline-width:2px;--mdc-outlined-text-field-container-shape:4px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-caret-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-focus-label-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-disabled-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-focus-label-text-color)}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font);font-size:var(--mdc-outlined-text-field-label-text-size);font-weight:var(--mdc-outlined-text-field-label-text-weight);letter-spacing:var(--mdc-outlined-text-field-label-text-tracking)}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-outlined-text-field-container-shape))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-hover-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-focus-outline-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-disabled-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-hover-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-focus-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-outline-width)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-focus-outline-width)}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\\\"\\\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\\\"\\\";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font);line-height:var(--mat-form-field-container-text-line-height);font-size:var(--mat-form-field-container-text-size);letter-spacing:var(--mat-form-field-container-text-tracking);font-weight:var(--mat-form-field-container-text-weight)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size) * var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.Directionality }, { type: i2.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD_DEFAULT_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { _textField: [{\n type: ViewChild,\n args: ['textField']\n }], _iconPrefixContainer: [{\n type: ViewChild,\n args: ['iconPrefixContainer']\n }], _textPrefixContainer: [{\n type: ViewChild,\n args: ['textPrefixContainer']\n }], _floatingLabel: [{\n type: ViewChild,\n args: [MatFormFieldFloatingLabel]\n }], _notchedOutline: [{\n type: ViewChild,\n args: [MatFormFieldNotchedOutline]\n }], _lineRipple: [{\n type: ViewChild,\n args: [MatFormFieldLineRipple]\n }], _labelChildNonStatic: [{\n type: ContentChild,\n args: [MatLabel]\n }], _labelChildStatic: [{\n type: ContentChild,\n args: [MatLabel, { static: true }]\n }], _formFieldControl: [{\n type: ContentChild,\n args: [MatFormFieldControl]\n }], _prefixChildren: [{\n type: ContentChildren,\n args: [MAT_PREFIX, { descendants: true }]\n }], _suffixChildren: [{\n type: ContentChildren,\n args: [MAT_SUFFIX, { descendants: true }]\n }], _errorChildren: [{\n type: ContentChildren,\n args: [MAT_ERROR, { descendants: true }]\n }], _hintChildren: [{\n type: ContentChildren,\n args: [MatHint, { descendants: true }]\n }], hideRequiredMarker: [{\n type: Input\n }], color: [{\n type: Input\n }], floatLabel: [{\n type: Input\n }], appearance: [{\n type: Input\n }], subscriptSizing: [{\n type: Input\n }], hintLabel: [{\n type: Input\n }] } });\n\nclass MatFormFieldModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldModule, declarations: [MatFormField,\n MatLabel,\n MatError,\n MatHint,\n MatPrefix,\n MatSuffix,\n MatFormFieldFloatingLabel,\n MatFormFieldNotchedOutline,\n MatFormFieldLineRipple], imports: [MatCommonModule, CommonModule, ObserversModule], exports: [MatFormField, MatLabel, MatHint, MatError, MatPrefix, MatSuffix, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldModule, imports: [MatCommonModule, CommonModule, ObserversModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, CommonModule, ObserversModule],\n exports: [MatFormField, MatLabel, MatHint, MatError, MatPrefix, MatSuffix, MatCommonModule],\n declarations: [\n MatFormField,\n MatLabel,\n MatError,\n MatHint,\n MatPrefix,\n MatSuffix,\n MatFormFieldFloatingLabel,\n MatFormFieldNotchedOutline,\n MatFormFieldLineRipple,\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_ERROR, MAT_FORM_FIELD, MAT_FORM_FIELD_DEFAULT_OPTIONS, MAT_PREFIX, MAT_SUFFIX, MatError, MatFormField, MatFormFieldControl, MatFormFieldModule, MatHint, MatLabel, MatPrefix, MatSuffix, getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, getMatFormFieldPlaceholderConflictError, matFormFieldAnimations };\n","import * as i1 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\n\n/** Options to pass to the animationstart listener. */\nconst listenerOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\nclass AutofillMonitor {\n constructor(_platform, _ngZone) {\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._monitoredElements = new Map();\n }\n monitor(elementOrRef) {\n if (!this._platform.isBrowser) {\n return EMPTY;\n }\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n return info.subject;\n }\n const result = new Subject();\n const cssClass = 'cdk-text-field-autofilled';\n const listener = ((event) => {\n // Animation events fire on initial element render, we check for the presence of the autofill\n // CSS class to make sure this is a real change in state, not just the initial render before\n // we fire off events.\n if (event.animationName === 'cdk-text-field-autofill-start' &&\n !element.classList.contains(cssClass)) {\n element.classList.add(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: true }));\n }\n else if (event.animationName === 'cdk-text-field-autofill-end' &&\n element.classList.contains(cssClass)) {\n element.classList.remove(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: false }));\n }\n });\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('animationstart', listener, listenerOptions);\n element.classList.add('cdk-text-field-autofill-monitored');\n });\n this._monitoredElements.set(element, {\n subject: result,\n unlisten: () => {\n element.removeEventListener('animationstart', listener, listenerOptions);\n },\n });\n return result;\n }\n stopMonitoring(elementOrRef) {\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n info.unlisten();\n info.subject.complete();\n element.classList.remove('cdk-text-field-autofill-monitored');\n element.classList.remove('cdk-text-field-autofilled');\n this._monitoredElements.delete(element);\n }\n }\n ngOnDestroy() {\n this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: AutofillMonitor, deps: [{ token: i1.Platform }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: AutofillMonitor, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: AutofillMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }]; } });\n/** A directive that can be used to monitor the autofill state of an input. */\nclass CdkAutofill {\n constructor(_elementRef, _autofillMonitor) {\n this._elementRef = _elementRef;\n this._autofillMonitor = _autofillMonitor;\n /** Emits when the autofill state of the element changes. */\n this.cdkAutofill = new EventEmitter();\n }\n ngOnInit() {\n this._autofillMonitor\n .monitor(this._elementRef)\n .subscribe(event => this.cdkAutofill.emit(event));\n }\n ngOnDestroy() {\n this._autofillMonitor.stopMonitoring(this._elementRef);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAutofill, deps: [{ token: i0.ElementRef }, { token: AutofillMonitor }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkAutofill, selector: \"[cdkAutofill]\", outputs: { cdkAutofill: \"cdkAutofill\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAutofill, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAutofill]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AutofillMonitor }]; }, propDecorators: { cdkAutofill: [{\n type: Output\n }] } });\n\n/** Directive to automatically resize a textarea to fit its content. */\nclass CdkTextareaAutosize {\n /** Minimum amount of rows in the textarea. */\n get minRows() {\n return this._minRows;\n }\n set minRows(value) {\n this._minRows = coerceNumberProperty(value);\n this._setMinHeight();\n }\n /** Maximum amount of rows in the textarea. */\n get maxRows() {\n return this._maxRows;\n }\n set maxRows(value) {\n this._maxRows = coerceNumberProperty(value);\n this._setMaxHeight();\n }\n /** Whether autosizing is enabled or not */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n value = coerceBooleanProperty(value);\n // Only act if the actual value changed. This specifically helps to not run\n // resizeToFitContent too early (i.e. before ngAfterViewInit)\n if (this._enabled !== value) {\n (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n }\n }\n get placeholder() {\n return this._textareaElement.placeholder;\n }\n set placeholder(value) {\n this._cachedPlaceholderHeight = undefined;\n if (value) {\n this._textareaElement.setAttribute('placeholder', value);\n }\n else {\n this._textareaElement.removeAttribute('placeholder');\n }\n this._cacheTextareaPlaceholderHeight();\n }\n constructor(_elementRef, _platform, _ngZone, \n /** @breaking-change 11.0.0 make document required */\n document) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._destroyed = new Subject();\n this._enabled = true;\n /**\n * Value of minRows as of last resize. If the minRows has decreased, the\n * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n * does not have the same problem because it does not affect the textarea's scrollHeight.\n */\n this._previousMinRows = -1;\n this._isViewInited = false;\n /** Handles `focus` and `blur` events. */\n this._handleFocusEvent = (event) => {\n this._hasFocus = event.type === 'focus';\n };\n this._document = document;\n this._textareaElement = this._elementRef.nativeElement;\n }\n /** Sets the minimum height of the textarea as determined by minRows. */\n _setMinHeight() {\n const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n if (minHeight) {\n this._textareaElement.style.minHeight = minHeight;\n }\n }\n /** Sets the maximum height of the textarea as determined by maxRows. */\n _setMaxHeight() {\n const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n if (maxHeight) {\n this._textareaElement.style.maxHeight = maxHeight;\n }\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n // Remember the height which we started with in case autosizing is disabled\n this._initialHeight = this._textareaElement.style.height;\n this.resizeToFitContent();\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n fromEvent(window, 'resize')\n .pipe(auditTime(16), takeUntil(this._destroyed))\n .subscribe(() => this.resizeToFitContent(true));\n this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n });\n this._isViewInited = true;\n this.resizeToFitContent(true);\n }\n }\n ngOnDestroy() {\n this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n */\n _cacheTextareaLineHeight() {\n if (this._cachedLineHeight) {\n return;\n }\n // Use a clone element because we have to override some styles.\n let textareaClone = this._textareaElement.cloneNode(false);\n textareaClone.rows = 1;\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n this._textareaElement.parentNode.appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight;\n textareaClone.remove();\n // Min and max heights have to be re-calculated if the cached line height changes\n this._setMinHeight();\n this._setMaxHeight();\n }\n _measureScrollHeight() {\n const element = this._textareaElement;\n const previousMargin = element.style.marginBottom || '';\n const isFirefox = this._platform.FIREFOX;\n const needsMarginFiller = isFirefox && this._hasFocus;\n const measuringClass = isFirefox\n ? 'cdk-textarea-autosize-measuring-firefox'\n : 'cdk-textarea-autosize-measuring';\n // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n // work around it by assigning a temporary margin with the same height as the `textarea` so that\n // it occupies the same amount of space. See #23233.\n if (needsMarginFiller) {\n element.style.marginBottom = `${element.clientHeight}px`;\n }\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n element.classList.add(measuringClass);\n // The measuring class includes a 2px padding to workaround an issue with Chrome,\n // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n const scrollHeight = element.scrollHeight - 4;\n element.classList.remove(measuringClass);\n if (needsMarginFiller) {\n element.style.marginBottom = previousMargin;\n }\n return scrollHeight;\n }\n _cacheTextareaPlaceholderHeight() {\n if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n return;\n }\n if (!this.placeholder) {\n this._cachedPlaceholderHeight = 0;\n return;\n }\n const value = this._textareaElement.value;\n this._textareaElement.value = this._textareaElement.placeholder;\n this._cachedPlaceholderHeight = this._measureScrollHeight();\n this._textareaElement.value = value;\n }\n ngDoCheck() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n /**\n * Resize the textarea to fit its content.\n * @param force Whether to force a height recalculation. By default the height will be\n * recalculated only if the value changed since the last call.\n */\n resizeToFitContent(force = false) {\n // If autosizing is disabled, just skip everything else\n if (!this._enabled) {\n return;\n }\n this._cacheTextareaLineHeight();\n this._cacheTextareaPlaceholderHeight();\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this._cachedLineHeight) {\n return;\n }\n const textarea = this._elementRef.nativeElement;\n const value = textarea.value;\n // Only resize if the value or minRows have changed since these calculations can be expensive.\n if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n return;\n }\n const scrollHeight = this._measureScrollHeight();\n const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${height}px`;\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n }\n else {\n setTimeout(() => this._scrollToCaretPosition(textarea));\n }\n });\n this._previousValue = value;\n this._previousMinRows = this._minRows;\n }\n /**\n * Resets the textarea to its original size\n */\n reset() {\n // Do not try to change the textarea, if the initialHeight has not been determined yet\n // This might potentially remove styles when reset() is called before ngAfterViewInit\n if (this._initialHeight !== undefined) {\n this._textareaElement.style.height = this._initialHeight;\n }\n }\n _noopInputHandler() {\n // no-op handler that ensures we're running change detection on input events.\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n /**\n * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n * prevent it from scrolling to the caret position. We need to re-set the selection\n * in order for it to scroll to the proper position.\n */\n _scrollToCaretPosition(textarea) {\n const { selectionStart, selectionEnd } = textarea;\n // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n if (!this._destroyed.isStopped && this._hasFocus) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTextareaAutosize, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkTextareaAutosize, selector: \"textarea[cdkTextareaAutosize]\", inputs: { minRows: [\"cdkAutosizeMinRows\", \"minRows\"], maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"], enabled: [\"cdkTextareaAutosize\", \"enabled\"], placeholder: \"placeholder\" }, host: { attributes: { \"rows\": \"1\" }, listeners: { \"input\": \"_noopInputHandler()\" }, classAttribute: \"cdk-textarea-autosize\" }, exportAs: [\"cdkTextareaAutosize\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTextareaAutosize, decorators: [{\n type: Directive,\n args: [{\n selector: 'textarea[cdkTextareaAutosize]',\n exportAs: 'cdkTextareaAutosize',\n host: {\n 'class': 'cdk-textarea-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n '(input)': '_noopInputHandler()',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { minRows: [{\n type: Input,\n args: ['cdkAutosizeMinRows']\n }], maxRows: [{\n type: Input,\n args: ['cdkAutosizeMaxRows']\n }], enabled: [{\n type: Input,\n args: ['cdkTextareaAutosize']\n }], placeholder: [{\n type: Input\n }] } });\n\nclass TextFieldModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: TextFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: TextFieldModule, declarations: [CdkAutofill, CdkTextareaAutosize], exports: [CdkAutofill, CdkTextareaAutosize] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: TextFieldModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: TextFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CdkAutofill, CdkTextareaAutosize],\n exports: [CdkAutofill, CdkTextareaAutosize],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { getSupportedInputTypes } from '@angular/cdk/platform';\nimport * as i4 from '@angular/cdk/text-field';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Optional, Self, Inject, Input, NgModule } from '@angular/core';\nimport * as i2 from '@angular/forms';\nimport { Validators } from '@angular/forms';\nimport * as i3 from '@angular/material/core';\nimport { mixinErrorState, MatCommonModule } from '@angular/material/core';\nimport * as i5 from '@angular/material/form-field';\nimport { MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { Subject } from 'rxjs';\n\n/** @docs-private */\nfunction getMatInputUnsupportedTypeError(type) {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\n}\n\n/**\n * This token is used to inject the object whose value should be set into `MatInput`. If none is\n * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide\n * themselves for this token, in order to make `MatInput` delegate the getting and setting of the\n * value to them.\n */\nconst MAT_INPUT_VALUE_ACCESSOR = new InjectionToken('MAT_INPUT_VALUE_ACCESSOR');\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n];\nlet nextUniqueId = 0;\n// Boilerplate for applying mixins to MatInput.\n/** @docs-private */\nconst _MatInputBase = mixinErrorState(class {\n constructor(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, \n /**\n * Form control bound to the component.\n * Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n ngControl) {\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n /**\n * Emits whenever the component state changes and should cause the parent\n * form field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n this.stateChanges = new Subject();\n }\n});\nclass MatInput extends _MatInputBase {\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get id() {\n return this._id;\n }\n set id(value) {\n this._id = value || this._uid;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get required() {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n }\n /** Input type of the element. */\n get type() {\n return this._type;\n }\n set type(value) {\n this._type = value || 'text';\n this._validateType();\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n this._elementRef.nativeElement.type = this._type;\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get value() {\n return this._inputValueAccessor.value;\n }\n set value(value) {\n if (value !== this.value) {\n this._inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n /** Whether the element is readonly. */\n get readonly() {\n return this._readonly;\n }\n set readonly(value) {\n this._readonly = coerceBooleanProperty(value);\n }\n constructor(_elementRef, _platform, ngControl, _parentForm, _parentFormGroup, _defaultErrorStateMatcher, inputValueAccessor, _autofillMonitor, ngZone, \n // TODO: Remove this once the legacy appearance has been removed. We only need\n // to inject the form field for determining whether the placeholder has been promoted.\n _formField) {\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._autofillMonitor = _autofillMonitor;\n this._formField = _formField;\n this._uid = `mat-input-${nextUniqueId++}`;\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.focused = false;\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.stateChanges = new Subject();\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.controlType = 'mat-input';\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.autofilled = false;\n this._disabled = false;\n this._type = 'text';\n this._readonly = false;\n this._neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week',\n ].filter(t => getSupportedInputTypes().has(t));\n this._iOSKeyupListener = (event) => {\n const el = event.target;\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n };\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = inputValueAccessor || element;\n this._previousNativeValue = this.value;\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (_platform.IOS) {\n ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('keyup', this._iOSKeyupListener);\n });\n }\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!_formField;\n if (this._isNativeSelect) {\n this.controlType = element.multiple\n ? 'mat-native-select-multiple'\n : 'mat-native-select';\n }\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n ngOnChanges() {\n this.stateChanges.next();\n }\n ngOnDestroy() {\n this.stateChanges.complete();\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n if (this._platform.IOS) {\n this._elementRef.nativeElement.removeEventListener('keyup', this._iOSKeyupListener);\n }\n }\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n // Since the input isn't a `ControlValueAccessor`, we don't have a good way of knowing when\n // the disabled state has changed. We can't use the `ngControl.statusChanges`, because it\n // won't fire if the input is disabled with `emitEvents = false`, despite the input becoming\n // disabled.\n if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled) {\n this.disabled = this.ngControl.disabled;\n this.stateChanges.next();\n }\n }\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n /** Focuses the input. */\n focus(options) {\n this._elementRef.nativeElement.focus(options);\n }\n /** Callback for the cases where the focused state of the input changes. */\n _focusChanged(isFocused) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n /** Does some manual dirty checking on the native input `value` property. */\n _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n _dirtyCheckPlaceholder() {\n const placeholder = this._getPlaceholder();\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder\n ? element.setAttribute('placeholder', placeholder)\n : element.removeAttribute('placeholder');\n }\n }\n /** Gets the current placeholder of the form field. */\n _getPlaceholder() {\n return this.placeholder || null;\n }\n /** Make sure the input is a supported type. */\n _validateType() {\n if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n /** Checks whether the input type is one of the types that are never empty. */\n _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n /** Checks whether the input is invalid based on the native validation. */\n _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = this._elementRef.nativeElement.validity;\n return validity && validity.badInput;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty() {\n return (!this._isNeverEmpty() &&\n !this._elementRef.nativeElement.value &&\n !this._isBadInput() &&\n !this.autofilled);\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat() {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement;\n const firstOption = selectElement.options[0];\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return (this.focused ||\n selectElement.multiple ||\n !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label));\n }\n else {\n return this.focused || !this.empty;\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n }\n else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n /** Whether the form control is a native select that is displayed inline. */\n _isInlineSelect() {\n const element = this._elementRef.nativeElement;\n return this._isNativeSelect && (element.multiple || element.size > 1);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatInput, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i2.NgControl, optional: true, self: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: MAT_INPUT_VALUE_ACCESSOR, optional: true, self: true }, { token: i4.AutofillMonitor }, { token: i0.NgZone }, { token: MAT_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl],\\n input[matNativeControl], textarea[matNativeControl]\", inputs: { disabled: \"disabled\", id: \"id\", placeholder: \"placeholder\", name: \"name\", required: \"required\", type: \"type\", errorStateMatcher: \"errorStateMatcher\", userAriaDescribedBy: [\"aria-describedby\", \"userAriaDescribedBy\"], value: \"value\", readonly: \"readonly\" }, host: { listeners: { \"focus\": \"_focusChanged(true)\", \"blur\": \"_focusChanged(false)\", \"input\": \"_onInput()\" }, properties: { \"class.mat-input-server\": \"_isServer\", \"class.mat-mdc-form-field-textarea-control\": \"_isInFormField && _isTextarea\", \"class.mat-mdc-form-field-input-control\": \"_isInFormField\", \"class.mdc-text-field__input\": \"_isInFormField\", \"class.mat-mdc-native-select-inline\": \"_isInlineSelect()\", \"id\": \"id\", \"disabled\": \"disabled\", \"required\": \"required\", \"attr.name\": \"name || null\", \"attr.readonly\": \"readonly && !_isNativeSelect || null\", \"attr.aria-invalid\": \"(empty && required) ? null : errorState\", \"attr.aria-required\": \"required\", \"attr.id\": \"id\" }, classAttribute: \"mat-mdc-input-element\" }, providers: [{ provide: MatFormFieldControl, useExisting: MatInput }], exportAs: [\"matInput\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatInput, decorators: [{\n type: Directive,\n args: [{\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n 'class': 'mat-mdc-input-element',\n // The BaseMatInput parent class adds `mat-input-element`, `mat-form-field-control` and\n // `mat-form-field-autofill-control` to the CSS class list, but this should not be added for\n // this MDC equivalent input.\n '[class.mat-input-server]': '_isServer',\n '[class.mat-mdc-form-field-textarea-control]': '_isInFormField && _isTextarea',\n '[class.mat-mdc-form-field-input-control]': '_isInFormField',\n '[class.mdc-text-field__input]': '_isInFormField',\n '[class.mat-mdc-native-select-inline]': '_isInlineSelect()',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[id]': 'id',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.name]': 'name || null',\n '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n '(input)': '_onInput()',\n },\n providers: [{ provide: MatFormFieldControl, useExisting: MatInput }],\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i2.NgControl, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }, { type: i2.NgForm, decorators: [{\n type: Optional\n }] }, { type: i2.FormGroupDirective, decorators: [{\n type: Optional\n }] }, { type: i3.ErrorStateMatcher }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [MAT_INPUT_VALUE_ACCESSOR]\n }] }, { type: i4.AutofillMonitor }, { type: i0.NgZone }, { type: i5.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }] }]; }, propDecorators: { disabled: [{\n type: Input\n }], id: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], name: [{\n type: Input\n }], required: [{\n type: Input\n }], type: [{\n type: Input\n }], errorStateMatcher: [{\n type: Input\n }], userAriaDescribedBy: [{\n type: Input,\n args: ['aria-describedby']\n }], value: [{\n type: Input\n }], readonly: [{\n type: Input\n }] } });\n\nclass MatInputModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatInputModule, declarations: [MatInput], imports: [MatCommonModule, MatFormFieldModule], exports: [MatInput, MatFormFieldModule, TextFieldModule, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatInputModule, imports: [MatCommonModule, MatFormFieldModule, MatFormFieldModule, TextFieldModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatInputModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, MatFormFieldModule],\n exports: [MatInput, MatFormFieldModule, TextFieldModule, MatCommonModule],\n declarations: [MatInput],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_INPUT_VALUE_ACCESSOR, MatInput, MatInputModule, getMatInputUnsupportedTypeError };\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ɵglobal, ɵRuntimeError, Injectable, InjectionToken, Inject, APP_ID, CSP_NONCE, PLATFORM_ID, Optional, ViewEncapsulation, RendererStyleFlags2, ɵinternalCreateApplication, ErrorHandler, ɵsetDocument, PLATFORM_INITIALIZER, createPlatformFactory, platformCore, ɵTESTABILITY_GETTER, ɵTESTABILITY, Testability, NgZone, TestabilityRegistry, ɵINJECTOR_SCOPE, RendererFactory2, ApplicationModule, NgModule, SkipSelf, ɵɵinject, ApplicationRef, ɵConsole, forwardRef, ɵXSS_SECURITY_URL, SecurityContext, ɵallowSanitizationBypassAndThrow, ɵunwrapSafeValue, ɵ_sanitizeUrl, ɵ_sanitizeHtml, ɵbypassSanitizationTrustHtml, ɵbypassSanitizationTrustStyle, ɵbypassSanitizationTrustScript, ɵbypassSanitizationTrustUrl, ɵbypassSanitizationTrustResourceUrl, Injector, ENVIRONMENT_INITIALIZER, inject, ɵformatRuntimeError, makeEnvironmentProviders, ɵwithDomHydration, Version, makeStateKey as makeStateKey$1, TransferState as TransferState$1 } from '@angular/core';\nimport { ɵDomAdapter, ɵsetRootDomAdapter, ɵparseCookieValue, ɵgetDOM, isPlatformServer, DOCUMENT, ɵPLATFORM_BROWSER_ID, XhrFactory, CommonModule } from '@angular/common';\nexport { ɵgetDOM } from '@angular/common';\nimport { ɵwithHttpTransferCache } from '@angular/common/http';\n\n/**\n * Provides DOM operations in any browser environment.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass GenericBrowserDomAdapter extends ɵDomAdapter {\n constructor() {\n super(...arguments);\n this.supportsDOMEvents = true;\n }\n}\n\n/**\n * A `DomAdapter` powered by full browser DOM APIs.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\n/* tslint:disable:requireParameterType no-console */\nclass BrowserDomAdapter extends GenericBrowserDomAdapter {\n static makeCurrent() {\n ɵsetRootDomAdapter(new BrowserDomAdapter());\n }\n onAndCancel(el, evt, listener) {\n el.addEventListener(evt, listener);\n return () => {\n el.removeEventListener(evt, listener);\n };\n }\n dispatchEvent(el, evt) {\n el.dispatchEvent(evt);\n }\n remove(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n createElement(tagName, doc) {\n doc = doc || this.getDefaultDocument();\n return doc.createElement(tagName);\n }\n createHtmlDocument() {\n return document.implementation.createHTMLDocument('fakeTitle');\n }\n getDefaultDocument() {\n return document;\n }\n isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n }\n isShadowRoot(node) {\n return node instanceof DocumentFragment;\n }\n /** @deprecated No longer being used in Ivy code. To be removed in version 14. */\n getGlobalEventTarget(doc, target) {\n if (target === 'window') {\n return window;\n }\n if (target === 'document') {\n return doc;\n }\n if (target === 'body') {\n return doc.body;\n }\n return null;\n }\n getBaseHref(doc) {\n const href = getBaseElementHref();\n return href == null ? null : relativePath(href);\n }\n resetBaseElement() {\n baseElement = null;\n }\n getUserAgent() {\n return window.navigator.userAgent;\n }\n getCookie(name) {\n return ɵparseCookieValue(document.cookie, name);\n }\n}\nlet baseElement = null;\nfunction getBaseElementHref() {\n baseElement = baseElement || document.querySelector('base');\n return baseElement ? baseElement.getAttribute('href') : null;\n}\n// based on urlUtils.js in AngularJS 1\nlet urlParsingNode;\nfunction relativePath(url) {\n urlParsingNode = urlParsingNode || document.createElement('a');\n urlParsingNode.setAttribute('href', url);\n const pathName = urlParsingNode.pathname;\n return pathName.charAt(0) === '/' ? pathName : `/${pathName}`;\n}\n\nclass BrowserGetTestability {\n addToWindow(registry) {\n ɵglobal['getAngularTestability'] = (elem, findInAncestors = true) => {\n const testability = registry.findTestabilityInTree(elem, findInAncestors);\n if (testability == null) {\n throw new ɵRuntimeError(5103 /* RuntimeErrorCode.TESTABILITY_NOT_FOUND */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'Could not find testability for element.');\n }\n return testability;\n };\n ɵglobal['getAllAngularTestabilities'] = () => registry.getAllTestabilities();\n ɵglobal['getAllAngularRootElements'] = () => registry.getAllRootElements();\n const whenAllStable = (callback) => {\n const testabilities = ɵglobal['getAllAngularTestabilities']();\n let count = testabilities.length;\n let didWork = false;\n const decrement = function (didWork_) {\n didWork = didWork || didWork_;\n count--;\n if (count == 0) {\n callback(didWork);\n }\n };\n testabilities.forEach((testability) => {\n testability.whenStable(decrement);\n });\n };\n if (!ɵglobal['frameworkStabilizers']) {\n ɵglobal['frameworkStabilizers'] = [];\n }\n ɵglobal['frameworkStabilizers'].push(whenAllStable);\n }\n findTestabilityInTree(registry, elem, findInAncestors) {\n if (elem == null) {\n return null;\n }\n const t = registry.getTestability(elem);\n if (t != null) {\n return t;\n }\n else if (!findInAncestors) {\n return null;\n }\n if (ɵgetDOM().isShadowRoot(elem)) {\n return this.findTestabilityInTree(registry, elem.host, true);\n }\n return this.findTestabilityInTree(registry, elem.parentElement, true);\n }\n}\n\n/**\n * A factory for `HttpXhrBackend` that uses the `XMLHttpRequest` browser API.\n */\nclass BrowserXhr {\n build() {\n return new XMLHttpRequest();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserXhr }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserXhr, decorators: [{\n type: Injectable\n }] });\n\n/**\n * The injection token for the event-manager plug-in service.\n *\n * @publicApi\n */\nconst EVENT_MANAGER_PLUGINS = new InjectionToken('EventManagerPlugins');\n/**\n * An injectable service that provides event management for Angular\n * through a browser plug-in.\n *\n * @publicApi\n */\nclass EventManager {\n /**\n * Initializes an instance of the event-manager service.\n */\n constructor(plugins, _zone) {\n this._zone = _zone;\n this._eventNameToPlugin = new Map();\n plugins.forEach((plugin) => {\n plugin.manager = this;\n });\n this._plugins = plugins.slice().reverse();\n }\n /**\n * Registers a handler for a specific element and event.\n *\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the event to listen for.\n * @param handler A function to call when the notification occurs. Receives the\n * event object as an argument.\n * @returns A callback function that can be used to remove the handler.\n */\n addEventListener(element, eventName, handler) {\n const plugin = this._findPluginFor(eventName);\n return plugin.addEventListener(element, eventName, handler);\n }\n /**\n * Retrieves the compilation zone in which event listeners are registered.\n */\n getZone() {\n return this._zone;\n }\n /** @internal */\n _findPluginFor(eventName) {\n let plugin = this._eventNameToPlugin.get(eventName);\n if (plugin) {\n return plugin;\n }\n const plugins = this._plugins;\n plugin = plugins.find((plugin) => plugin.supports(eventName));\n if (!plugin) {\n throw new ɵRuntimeError(5101 /* RuntimeErrorCode.NO_PLUGIN_FOR_EVENT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `No event manager plugin found for event ${eventName}`);\n }\n this._eventNameToPlugin.set(eventName, plugin);\n return plugin;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: EventManager, deps: [{ token: EVENT_MANAGER_PLUGINS }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: EventManager }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: EventManager, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [EVENT_MANAGER_PLUGINS]\n }] }, { type: i0.NgZone }]; } });\nclass EventManagerPlugin {\n constructor(_doc) {\n this._doc = _doc;\n }\n}\n\n/** The style elements attribute name used to set value of `APP_ID` token. */\nconst APP_ID_ATTRIBUTE_NAME = 'ng-app-id';\nclass SharedStylesHost {\n constructor(doc, appId, nonce, platformId = {}) {\n this.doc = doc;\n this.appId = appId;\n this.nonce = nonce;\n this.platformId = platformId;\n // Maps all registered host nodes to a list of style nodes that have been added to the host node.\n this.styleRef = new Map();\n this.hostNodes = new Set();\n this.styleNodesInDOM = this.collectServerRenderedStyles();\n this.platformIsServer = isPlatformServer(platformId);\n this.resetHostNodes();\n }\n addStyles(styles) {\n for (const style of styles) {\n const usageCount = this.changeUsageCount(style, 1);\n if (usageCount === 1) {\n this.onStyleAdded(style);\n }\n }\n }\n removeStyles(styles) {\n for (const style of styles) {\n const usageCount = this.changeUsageCount(style, -1);\n if (usageCount <= 0) {\n this.onStyleRemoved(style);\n }\n }\n }\n ngOnDestroy() {\n const styleNodesInDOM = this.styleNodesInDOM;\n if (styleNodesInDOM) {\n styleNodesInDOM.forEach((node) => node.remove());\n styleNodesInDOM.clear();\n }\n for (const style of this.getAllStyles()) {\n this.onStyleRemoved(style);\n }\n this.resetHostNodes();\n }\n addHost(hostNode) {\n this.hostNodes.add(hostNode);\n for (const style of this.getAllStyles()) {\n this.addStyleToHost(hostNode, style);\n }\n }\n removeHost(hostNode) {\n this.hostNodes.delete(hostNode);\n }\n getAllStyles() {\n return this.styleRef.keys();\n }\n onStyleAdded(style) {\n for (const host of this.hostNodes) {\n this.addStyleToHost(host, style);\n }\n }\n onStyleRemoved(style) {\n const styleRef = this.styleRef;\n styleRef.get(style)?.elements?.forEach((node) => node.remove());\n styleRef.delete(style);\n }\n collectServerRenderedStyles() {\n const styles = this.doc.head?.querySelectorAll(`style[${APP_ID_ATTRIBUTE_NAME}=\"${this.appId}\"]`);\n if (styles?.length) {\n const styleMap = new Map();\n styles.forEach((style) => {\n if (style.textContent != null) {\n styleMap.set(style.textContent, style);\n }\n });\n return styleMap;\n }\n return null;\n }\n changeUsageCount(style, delta) {\n const map = this.styleRef;\n if (map.has(style)) {\n const styleRefValue = map.get(style);\n styleRefValue.usage += delta;\n return styleRefValue.usage;\n }\n map.set(style, { usage: delta, elements: [] });\n return delta;\n }\n getStyleElement(host, style) {\n const styleNodesInDOM = this.styleNodesInDOM;\n const styleEl = styleNodesInDOM?.get(style);\n if (styleEl?.parentNode === host) {\n // `styleNodesInDOM` cannot be undefined due to the above `styleNodesInDOM?.get`.\n styleNodesInDOM.delete(style);\n styleEl.removeAttribute(APP_ID_ATTRIBUTE_NAME);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // This attribute is solely used for debugging purposes.\n styleEl.setAttribute('ng-style-reused', '');\n }\n return styleEl;\n }\n else {\n const styleEl = this.doc.createElement('style');\n if (this.nonce) {\n styleEl.setAttribute('nonce', this.nonce);\n }\n styleEl.textContent = style;\n if (this.platformIsServer) {\n styleEl.setAttribute(APP_ID_ATTRIBUTE_NAME, this.appId);\n }\n return styleEl;\n }\n }\n addStyleToHost(host, style) {\n const styleEl = this.getStyleElement(host, style);\n host.appendChild(styleEl);\n const styleRef = this.styleRef;\n const styleElRef = styleRef.get(style)?.elements;\n if (styleElRef) {\n styleElRef.push(styleEl);\n }\n else {\n styleRef.set(style, { elements: [styleEl], usage: 1 });\n }\n }\n resetHostNodes() {\n const hostNodes = this.hostNodes;\n hostNodes.clear();\n // Re-add the head element back since this is the default host.\n hostNodes.add(this.doc.head);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SharedStylesHost, deps: [{ token: DOCUMENT }, { token: APP_ID }, { token: CSP_NONCE, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SharedStylesHost }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SharedStylesHost, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [APP_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [CSP_NONCE]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; } });\n\nconst NAMESPACE_URIS = {\n 'svg': 'http://www.w3.org/2000/svg',\n 'xhtml': 'http://www.w3.org/1999/xhtml',\n 'xlink': 'http://www.w3.org/1999/xlink',\n 'xml': 'http://www.w3.org/XML/1998/namespace',\n 'xmlns': 'http://www.w3.org/2000/xmlns/',\n 'math': 'http://www.w3.org/1998/MathML/',\n};\nconst COMPONENT_REGEX = /%COMP%/g;\nconst COMPONENT_VARIABLE = '%COMP%';\nconst HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;\nconst CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;\n/**\n * The default value for the `REMOVE_STYLES_ON_COMPONENT_DESTROY` DI token.\n */\nconst REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT = false;\n/**\n * A [DI token](guide/glossary#di-token \"DI token definition\") that indicates whether styles\n * of destroyed components should be removed from DOM.\n *\n * By default, the value is set to `false`. This will be changed in the next major version.\n * @publicApi\n */\nconst REMOVE_STYLES_ON_COMPONENT_DESTROY = new InjectionToken('RemoveStylesOnCompDestroy', {\n providedIn: 'root',\n factory: () => REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT,\n});\nfunction shimContentAttribute(componentShortId) {\n return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\nfunction shimHostAttribute(componentShortId) {\n return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\nfunction shimStylesContent(compId, styles) {\n return styles.map(s => s.replace(COMPONENT_REGEX, compId));\n}\nclass DomRendererFactory2 {\n constructor(eventManager, sharedStylesHost, appId, removeStylesOnCompDestroy, doc, platformId, ngZone, nonce = null) {\n this.eventManager = eventManager;\n this.sharedStylesHost = sharedStylesHost;\n this.appId = appId;\n this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;\n this.doc = doc;\n this.platformId = platformId;\n this.ngZone = ngZone;\n this.nonce = nonce;\n this.rendererByCompId = new Map();\n this.platformIsServer = isPlatformServer(platformId);\n this.defaultRenderer =\n new DefaultDomRenderer2(eventManager, doc, ngZone, this.platformIsServer);\n }\n createRenderer(element, type) {\n if (!element || !type) {\n return this.defaultRenderer;\n }\n if (this.platformIsServer && type.encapsulation === ViewEncapsulation.ShadowDom) {\n // Domino does not support shadow DOM.\n type = { ...type, encapsulation: ViewEncapsulation.Emulated };\n }\n const renderer = this.getOrCreateRenderer(element, type);\n // Renderers have different logic due to different encapsulation behaviours.\n // Ex: for emulated, an attribute is added to the element.\n if (renderer instanceof EmulatedEncapsulationDomRenderer2) {\n renderer.applyToHost(element);\n }\n else if (renderer instanceof NoneEncapsulationDomRenderer) {\n renderer.applyStyles();\n }\n return renderer;\n }\n getOrCreateRenderer(element, type) {\n const rendererByCompId = this.rendererByCompId;\n let renderer = rendererByCompId.get(type.id);\n if (!renderer) {\n const doc = this.doc;\n const ngZone = this.ngZone;\n const eventManager = this.eventManager;\n const sharedStylesHost = this.sharedStylesHost;\n const removeStylesOnCompDestroy = this.removeStylesOnCompDestroy;\n const platformIsServer = this.platformIsServer;\n switch (type.encapsulation) {\n case ViewEncapsulation.Emulated:\n renderer = new EmulatedEncapsulationDomRenderer2(eventManager, sharedStylesHost, type, this.appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer);\n break;\n case ViewEncapsulation.ShadowDom:\n return new ShadowDomRenderer(eventManager, sharedStylesHost, element, type, doc, ngZone, this.nonce, platformIsServer);\n default:\n renderer = new NoneEncapsulationDomRenderer(eventManager, sharedStylesHost, type, removeStylesOnCompDestroy, doc, ngZone, platformIsServer);\n break;\n }\n rendererByCompId.set(type.id, renderer);\n }\n return renderer;\n }\n ngOnDestroy() {\n this.rendererByCompId.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomRendererFactory2, deps: [{ token: EventManager }, { token: SharedStylesHost }, { token: APP_ID }, { token: REMOVE_STYLES_ON_COMPONENT_DESTROY }, { token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: CSP_NONCE }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomRendererFactory2 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomRendererFactory2, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: EventManager }, { type: SharedStylesHost }, { type: undefined, decorators: [{\n type: Inject,\n args: [APP_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [REMOVE_STYLES_ON_COMPONENT_DESTROY]\n }] }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [CSP_NONCE]\n }] }]; } });\nclass DefaultDomRenderer2 {\n constructor(eventManager, doc, ngZone, platformIsServer) {\n this.eventManager = eventManager;\n this.doc = doc;\n this.ngZone = ngZone;\n this.platformIsServer = platformIsServer;\n this.data = Object.create(null);\n this.destroyNode = null;\n }\n destroy() { }\n createElement(name, namespace) {\n if (namespace) {\n // TODO: `|| namespace` was added in\n // https://github.com/angular/angular/commit/2b9cc8503d48173492c29f5a271b61126104fbdb to\n // support how Ivy passed around the namespace URI rather than short name at the time. It did\n // not, however extend the support to other parts of the system (setAttribute, setAttribute,\n // and the ServerRenderer). We should decide what exactly the semantics for dealing with\n // namespaces should be and make it consistent.\n // Related issues:\n // https://github.com/angular/angular/issues/44028\n // https://github.com/angular/angular/issues/44883\n return this.doc.createElementNS(NAMESPACE_URIS[namespace] || namespace, name);\n }\n return this.doc.createElement(name);\n }\n createComment(value) {\n return this.doc.createComment(value);\n }\n createText(value) {\n return this.doc.createTextNode(value);\n }\n appendChild(parent, newChild) {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.appendChild(newChild);\n }\n insertBefore(parent, newChild, refChild) {\n if (parent) {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.insertBefore(newChild, refChild);\n }\n }\n removeChild(parent, oldChild) {\n if (parent) {\n parent.removeChild(oldChild);\n }\n }\n selectRootElement(selectorOrNode, preserveContent) {\n let el = typeof selectorOrNode === 'string' ? this.doc.querySelector(selectorOrNode) :\n selectorOrNode;\n if (!el) {\n throw new ɵRuntimeError(-5104 /* RuntimeErrorCode.ROOT_NODE_NOT_FOUND */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `The selector \"${selectorOrNode}\" did not match any elements`);\n }\n if (!preserveContent) {\n el.textContent = '';\n }\n return el;\n }\n parentNode(node) {\n return node.parentNode;\n }\n nextSibling(node) {\n return node.nextSibling;\n }\n setAttribute(el, name, value, namespace) {\n if (namespace) {\n name = namespace + ':' + name;\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.setAttributeNS(namespaceUri, name, value);\n }\n else {\n el.setAttribute(name, value);\n }\n }\n else {\n el.setAttribute(name, value);\n }\n }\n removeAttribute(el, name, namespace) {\n if (namespace) {\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.removeAttributeNS(namespaceUri, name);\n }\n else {\n el.removeAttribute(`${namespace}:${name}`);\n }\n }\n else {\n el.removeAttribute(name);\n }\n }\n addClass(el, name) {\n el.classList.add(name);\n }\n removeClass(el, name) {\n el.classList.remove(name);\n }\n setStyle(el, style, value, flags) {\n if (flags & (RendererStyleFlags2.DashCase | RendererStyleFlags2.Important)) {\n el.style.setProperty(style, value, flags & RendererStyleFlags2.Important ? 'important' : '');\n }\n else {\n el.style[style] = value;\n }\n }\n removeStyle(el, style, flags) {\n if (flags & RendererStyleFlags2.DashCase) {\n // removeProperty has no effect when used on camelCased properties.\n el.style.removeProperty(style);\n }\n else {\n el.style[style] = '';\n }\n }\n setProperty(el, name, value) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && checkNoSyntheticProp(name, 'property');\n el[name] = value;\n }\n setValue(node, value) {\n node.nodeValue = value;\n }\n listen(target, event, callback) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && checkNoSyntheticProp(event, 'listener');\n if (typeof target === 'string') {\n target = ɵgetDOM().getGlobalEventTarget(this.doc, target);\n if (!target) {\n throw new Error(`Unsupported event target ${target} for event ${event}`);\n }\n }\n return this.eventManager.addEventListener(target, event, this.decoratePreventDefault(callback));\n }\n decoratePreventDefault(eventHandler) {\n // `DebugNode.triggerEventHandler` needs to know if the listener was created with\n // decoratePreventDefault or is a listener added outside the Angular context so it can handle\n // the two differently. In the first case, the special '__ngUnwrap__' token is passed to the\n // unwrap the listener (see below).\n return (event) => {\n // Ivy uses '__ngUnwrap__' as a special token that allows us to unwrap the function\n // so that it can be invoked programmatically by `DebugNode.triggerEventHandler`. The\n // debug_node can inspect the listener toString contents for the existence of this special\n // token. Because the token is a string literal, it is ensured to not be modified by compiled\n // code.\n if (event === '__ngUnwrap__') {\n return eventHandler;\n }\n // Run the event handler inside the ngZone because event handlers are not patched\n // by Zone on the server. This is required only for tests.\n const allowDefaultBehavior = this.platformIsServer ?\n this.ngZone.runGuarded(() => eventHandler(event)) :\n eventHandler(event);\n if (allowDefaultBehavior === false) {\n event.preventDefault();\n }\n return undefined;\n };\n }\n}\nconst AT_CHARCODE = (() => '@'.charCodeAt(0))();\nfunction checkNoSyntheticProp(name, nameKind) {\n if (name.charCodeAt(0) === AT_CHARCODE) {\n throw new ɵRuntimeError(5105 /* RuntimeErrorCode.UNEXPECTED_SYNTHETIC_PROPERTY */, `Unexpected synthetic ${nameKind} ${name} found. Please make sure that:\n - Either \\`BrowserAnimationsModule\\` or \\`NoopAnimationsModule\\` are imported in your application.\n - There is corresponding configuration for the animation named \\`${name}\\` defined in the \\`animations\\` field of the \\`@Component\\` decorator (see https://angular.io/api/core/Component#animations).`);\n }\n}\nfunction isTemplateNode(node) {\n return node.tagName === 'TEMPLATE' && node.content !== undefined;\n}\nclass ShadowDomRenderer extends DefaultDomRenderer2 {\n constructor(eventManager, sharedStylesHost, hostEl, component, doc, ngZone, nonce, platformIsServer) {\n super(eventManager, doc, ngZone, platformIsServer);\n this.sharedStylesHost = sharedStylesHost;\n this.hostEl = hostEl;\n this.shadowRoot = hostEl.attachShadow({ mode: 'open' });\n this.sharedStylesHost.addHost(this.shadowRoot);\n const styles = shimStylesContent(component.id, component.styles);\n for (const style of styles) {\n const styleEl = document.createElement('style');\n if (nonce) {\n styleEl.setAttribute('nonce', nonce);\n }\n styleEl.textContent = style;\n this.shadowRoot.appendChild(styleEl);\n }\n }\n nodeOrShadowRoot(node) {\n return node === this.hostEl ? this.shadowRoot : node;\n }\n appendChild(parent, newChild) {\n return super.appendChild(this.nodeOrShadowRoot(parent), newChild);\n }\n insertBefore(parent, newChild, refChild) {\n return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild);\n }\n removeChild(parent, oldChild) {\n return super.removeChild(this.nodeOrShadowRoot(parent), oldChild);\n }\n parentNode(node) {\n return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));\n }\n destroy() {\n this.sharedStylesHost.removeHost(this.shadowRoot);\n }\n}\nclass NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {\n constructor(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, compId) {\n super(eventManager, doc, ngZone, platformIsServer);\n this.sharedStylesHost = sharedStylesHost;\n this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;\n this.styles = compId ? shimStylesContent(compId, component.styles) : component.styles;\n }\n applyStyles() {\n this.sharedStylesHost.addStyles(this.styles);\n }\n destroy() {\n if (!this.removeStylesOnCompDestroy) {\n return;\n }\n this.sharedStylesHost.removeStyles(this.styles);\n }\n}\nclass EmulatedEncapsulationDomRenderer2 extends NoneEncapsulationDomRenderer {\n constructor(eventManager, sharedStylesHost, component, appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer) {\n const compId = appId + '-' + component.id;\n super(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, compId);\n this.contentAttr = shimContentAttribute(compId);\n this.hostAttr = shimHostAttribute(compId);\n }\n applyToHost(element) {\n this.applyStyles();\n this.setAttribute(element, this.hostAttr, '');\n }\n createElement(parent, name) {\n const el = super.createElement(parent, name);\n super.setAttribute(el, this.contentAttr, '');\n return el;\n }\n}\n\nclass DomEventsPlugin extends EventManagerPlugin {\n constructor(doc) {\n super(doc);\n }\n // This plugin should come last in the list of plugins, because it accepts all\n // events.\n supports(eventName) {\n return true;\n }\n addEventListener(element, eventName, handler) {\n element.addEventListener(eventName, handler, false);\n return () => this.removeEventListener(element, eventName, handler);\n }\n removeEventListener(target, eventName, callback) {\n return target.removeEventListener(eventName, callback);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomEventsPlugin }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomEventsPlugin, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * Defines supported modifiers for key events.\n */\nconst MODIFIER_KEYS = ['alt', 'control', 'meta', 'shift'];\n// The following values are here for cross-browser compatibility and to match the W3C standard\n// cf https://www.w3.org/TR/DOM-Level-3-Events-key/\nconst _keyMap = {\n '\\b': 'Backspace',\n '\\t': 'Tab',\n '\\x7F': 'Delete',\n '\\x1B': 'Escape',\n 'Del': 'Delete',\n 'Esc': 'Escape',\n 'Left': 'ArrowLeft',\n 'Right': 'ArrowRight',\n 'Up': 'ArrowUp',\n 'Down': 'ArrowDown',\n 'Menu': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'Win': 'OS'\n};\n/**\n * Retrieves modifiers from key-event objects.\n */\nconst MODIFIER_KEY_GETTERS = {\n 'alt': (event) => event.altKey,\n 'control': (event) => event.ctrlKey,\n 'meta': (event) => event.metaKey,\n 'shift': (event) => event.shiftKey\n};\n/**\n * @publicApi\n * A browser plug-in that provides support for handling of key events in Angular.\n */\nclass KeyEventsPlugin extends EventManagerPlugin {\n /**\n * Initializes an instance of the browser plug-in.\n * @param doc The document in which key events will be detected.\n */\n constructor(doc) {\n super(doc);\n }\n /**\n * Reports whether a named key event is supported.\n * @param eventName The event name to query.\n * @return True if the named key event is supported.\n */\n supports(eventName) {\n return KeyEventsPlugin.parseEventName(eventName) != null;\n }\n /**\n * Registers a handler for a specific element and key event.\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the key event to listen for.\n * @param handler A function to call when the notification occurs. Receives the\n * event object as an argument.\n * @returns The key event that was registered.\n */\n addEventListener(element, eventName, handler) {\n const parsedEvent = KeyEventsPlugin.parseEventName(eventName);\n const outsideHandler = KeyEventsPlugin.eventCallback(parsedEvent['fullKey'], handler, this.manager.getZone());\n return this.manager.getZone().runOutsideAngular(() => {\n return ɵgetDOM().onAndCancel(element, parsedEvent['domEventName'], outsideHandler);\n });\n }\n /**\n * Parses the user provided full keyboard event definition and normalizes it for\n * later internal use. It ensures the string is all lowercase, converts special\n * characters to a standard spelling, and orders all the values consistently.\n *\n * @param eventName The name of the key event to listen for.\n * @returns an object with the full, normalized string, and the dom event name\n * or null in the case when the event doesn't match a keyboard event.\n */\n static parseEventName(eventName) {\n const parts = eventName.toLowerCase().split('.');\n const domEventName = parts.shift();\n if ((parts.length === 0) || !(domEventName === 'keydown' || domEventName === 'keyup')) {\n return null;\n }\n const key = KeyEventsPlugin._normalizeKey(parts.pop());\n let fullKey = '';\n let codeIX = parts.indexOf('code');\n if (codeIX > -1) {\n parts.splice(codeIX, 1);\n fullKey = 'code.';\n }\n MODIFIER_KEYS.forEach(modifierName => {\n const index = parts.indexOf(modifierName);\n if (index > -1) {\n parts.splice(index, 1);\n fullKey += modifierName + '.';\n }\n });\n fullKey += key;\n if (parts.length != 0 || key.length === 0) {\n // returning null instead of throwing to let another plugin process the event\n return null;\n }\n // NOTE: Please don't rewrite this as so, as it will break JSCompiler property renaming.\n // The code must remain in the `result['domEventName']` form.\n // return {domEventName, fullKey};\n const result = {};\n result['domEventName'] = domEventName;\n result['fullKey'] = fullKey;\n return result;\n }\n /**\n * Determines whether the actual keys pressed match the configured key code string.\n * The `fullKeyCode` event is normalized in the `parseEventName` method when the\n * event is attached to the DOM during the `addEventListener` call. This is unseen\n * by the end user and is normalized for internal consistency and parsing.\n *\n * @param event The keyboard event.\n * @param fullKeyCode The normalized user defined expected key event string\n * @returns boolean.\n */\n static matchEventFullKeyCode(event, fullKeyCode) {\n let keycode = _keyMap[event.key] || event.key;\n let key = '';\n if (fullKeyCode.indexOf('code.') > -1) {\n keycode = event.code;\n key = 'code.';\n }\n // the keycode could be unidentified so we have to check here\n if (keycode == null || !keycode)\n return false;\n keycode = keycode.toLowerCase();\n if (keycode === ' ') {\n keycode = 'space'; // for readability\n }\n else if (keycode === '.') {\n keycode = 'dot'; // because '.' is used as a separator in event names\n }\n MODIFIER_KEYS.forEach(modifierName => {\n if (modifierName !== keycode) {\n const modifierGetter = MODIFIER_KEY_GETTERS[modifierName];\n if (modifierGetter(event)) {\n key += modifierName + '.';\n }\n }\n });\n key += keycode;\n return key === fullKeyCode;\n }\n /**\n * Configures a handler callback for a key event.\n * @param fullKey The event name that combines all simultaneous keystrokes.\n * @param handler The function that responds to the key event.\n * @param zone The zone in which the event occurred.\n * @returns A callback function.\n */\n static eventCallback(fullKey, handler, zone) {\n return (event) => {\n if (KeyEventsPlugin.matchEventFullKeyCode(event, fullKey)) {\n zone.runGuarded(() => handler(event));\n }\n };\n }\n /** @internal */\n static _normalizeKey(keyName) {\n // TODO: switch to a Map if the mapping grows too much\n switch (keyName) {\n case 'esc':\n return 'escape';\n default:\n return keyName;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: KeyEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: KeyEventsPlugin }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: KeyEventsPlugin, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * Bootstraps an instance of an Angular application and renders a standalone component as the\n * application's root component. More information about standalone components can be found in [this\n * guide](guide/standalone-components).\n *\n * @usageNotes\n * The root component passed into this function *must* be a standalone one (should have the\n * `standalone: true` flag in the `@Component` decorator config).\n *\n * ```typescript\n * @Component({\n * standalone: true,\n * template: 'Hello world!'\n * })\n * class RootComponent {}\n *\n * const appRef: ApplicationRef = await bootstrapApplication(RootComponent);\n * ```\n *\n * You can add the list of providers that should be available in the application injector by\n * specifying the `providers` field in an object passed as the second argument:\n *\n * ```typescript\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * {provide: BACKEND_URL, useValue: 'https://yourdomain.com/api'}\n * ]\n * });\n * ```\n *\n * The `importProvidersFrom` helper method can be used to collect all providers from any\n * existing NgModule (and transitively from all NgModules that it imports):\n *\n * ```typescript\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * importProvidersFrom(SomeNgModule)\n * ]\n * });\n * ```\n *\n * Note: the `bootstrapApplication` method doesn't include [Testability](api/core/Testability) by\n * default. You can add [Testability](api/core/Testability) by getting the list of necessary\n * providers using `provideProtractorTestingSupport()` function and adding them into the `providers`\n * array, for example:\n *\n * ```typescript\n * import {provideProtractorTestingSupport} from '@angular/platform-browser';\n *\n * await bootstrapApplication(RootComponent, {providers: [provideProtractorTestingSupport()]});\n * ```\n *\n * @param rootComponent A reference to a standalone component that should be rendered.\n * @param options Extra configuration for the bootstrap operation, see `ApplicationConfig` for\n * additional info.\n * @returns A promise that returns an `ApplicationRef` instance once resolved.\n *\n * @publicApi\n */\nfunction bootstrapApplication(rootComponent, options) {\n return ɵinternalCreateApplication({ rootComponent, ...createProvidersConfig(options) });\n}\n/**\n * Create an instance of an Angular application without bootstrapping any components. This is useful\n * for the situation where one wants to decouple application environment creation (a platform and\n * associated injectors) from rendering components on a screen. Components can be subsequently\n * bootstrapped on the returned `ApplicationRef`.\n *\n * @param options Extra configuration for the application environment, see `ApplicationConfig` for\n * additional info.\n * @returns A promise that returns an `ApplicationRef` instance once resolved.\n *\n * @publicApi\n */\nfunction createApplication(options) {\n return ɵinternalCreateApplication(createProvidersConfig(options));\n}\nfunction createProvidersConfig(options) {\n return {\n appProviders: [\n ...BROWSER_MODULE_PROVIDERS,\n ...(options?.providers ?? []),\n ],\n platformProviders: INTERNAL_BROWSER_PLATFORM_PROVIDERS\n };\n}\n/**\n * Returns a set of providers required to setup [Testability](api/core/Testability) for an\n * application bootstrapped using the `bootstrapApplication` function. The set of providers is\n * needed to support testing an application with Protractor (which relies on the Testability APIs\n * to be present).\n *\n * @returns An array of providers required to setup Testability for an application and make it\n * available for testing using Protractor.\n *\n * @publicApi\n */\nfunction provideProtractorTestingSupport() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideProtractorTestingSupport` call results in app\n // code.\n return [...TESTABILITY_PROVIDERS];\n}\nfunction initDomAdapter() {\n BrowserDomAdapter.makeCurrent();\n}\nfunction errorHandler() {\n return new ErrorHandler();\n}\nfunction _document() {\n // Tell ivy about the global document\n ɵsetDocument(document);\n return document;\n}\nconst INTERNAL_BROWSER_PLATFORM_PROVIDERS = [\n { provide: PLATFORM_ID, useValue: ɵPLATFORM_BROWSER_ID },\n { provide: PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true },\n { provide: DOCUMENT, useFactory: _document, deps: [] },\n];\n/**\n * A factory function that returns a `PlatformRef` instance associated with browser service\n * providers.\n *\n * @publicApi\n */\nconst platformBrowser = createPlatformFactory(platformCore, 'browser', INTERNAL_BROWSER_PLATFORM_PROVIDERS);\n/**\n * Internal marker to signal whether providers from the `BrowserModule` are already present in DI.\n * This is needed to avoid loading `BrowserModule` providers twice. We can't rely on the\n * `BrowserModule` presence itself, since the standalone-based bootstrap just imports\n * `BrowserModule` providers without referencing the module itself.\n */\nconst BROWSER_MODULE_PROVIDERS_MARKER = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'BrowserModule Providers Marker' : '');\nconst TESTABILITY_PROVIDERS = [\n {\n provide: ɵTESTABILITY_GETTER,\n useClass: BrowserGetTestability,\n deps: [],\n },\n {\n provide: ɵTESTABILITY,\n useClass: Testability,\n deps: [NgZone, TestabilityRegistry, ɵTESTABILITY_GETTER]\n },\n {\n provide: Testability,\n useClass: Testability,\n deps: [NgZone, TestabilityRegistry, ɵTESTABILITY_GETTER]\n }\n];\nconst BROWSER_MODULE_PROVIDERS = [\n { provide: ɵINJECTOR_SCOPE, useValue: 'root' },\n { provide: ErrorHandler, useFactory: errorHandler, deps: [] }, {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: DomEventsPlugin,\n multi: true,\n deps: [DOCUMENT, NgZone, PLATFORM_ID]\n },\n { provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true, deps: [DOCUMENT] },\n DomRendererFactory2, SharedStylesHost, EventManager,\n { provide: RendererFactory2, useExisting: DomRendererFactory2 },\n { provide: XhrFactory, useClass: BrowserXhr, deps: [] },\n (typeof ngDevMode === 'undefined' || ngDevMode) ?\n { provide: BROWSER_MODULE_PROVIDERS_MARKER, useValue: true } :\n []\n];\n/**\n * Exports required infrastructure for all Angular apps.\n * Included by default in all Angular apps created with the CLI\n * `new` command.\n * Re-exports `CommonModule` and `ApplicationModule`, making their\n * exports and providers available to all apps.\n *\n * @publicApi\n */\nclass BrowserModule {\n constructor(providersAlreadyPresent) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && providersAlreadyPresent) {\n throw new ɵRuntimeError(5100 /* RuntimeErrorCode.BROWER_MODULE_ALREADY_LOADED */, `Providers from the \\`BrowserModule\\` have already been loaded. If you need access ` +\n `to common directives such as NgIf and NgFor, import the \\`CommonModule\\` instead.`);\n }\n }\n /**\n * Configures a browser-based app to transition from a server-rendered app, if\n * one is present on the page.\n *\n * @param params An object containing an identifier for the app to transition.\n * The ID must match between the client and server versions of the app.\n * @returns The reconfigured `BrowserModule` to import into the app's root `AppModule`.\n *\n * @deprecated Use {@link APP_ID} instead to set the application ID.\n */\n static withServerTransition(params) {\n return {\n ngModule: BrowserModule,\n providers: [\n { provide: APP_ID, useValue: params.appId },\n ],\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserModule, deps: [{ token: BROWSER_MODULE_PROVIDERS_MARKER, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserModule, exports: [CommonModule, ApplicationModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserModule, providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS], imports: [CommonModule, ApplicationModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],\n exports: [CommonModule, ApplicationModule],\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [BROWSER_MODULE_PROVIDERS_MARKER]\n }] }]; } });\n\n/**\n * Factory to create a `Meta` service instance for the current DOM document.\n */\nfunction createMeta() {\n return new Meta(ɵɵinject(DOCUMENT));\n}\n/**\n * A service for managing HTML `<meta>` tags.\n *\n * Properties of the `MetaDefinition` object match the attributes of the\n * HTML `<meta>` tag. These tags define document metadata that is important for\n * things like configuring a Content Security Policy, defining browser compatibility\n * and security settings, setting HTTP Headers, defining rich content for social sharing,\n * and Search Engine Optimization (SEO).\n *\n * To identify specific `<meta>` tags in a document, use an attribute selection\n * string in the format `\"tag_attribute='value string'\"`.\n * For example, an `attrSelector` value of `\"name='description'\"` matches a tag\n * whose `name` attribute has the value `\"description\"`.\n * Selectors are used with the `querySelector()` Document method,\n * in the format `meta[{attrSelector}]`.\n *\n * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)\n * @see [Document.querySelector()](https://developer.mozilla.org/docs/Web/API/Document/querySelector)\n *\n *\n * @publicApi\n */\nclass Meta {\n constructor(_doc) {\n this._doc = _doc;\n this._dom = ɵgetDOM();\n }\n /**\n * Retrieves or creates a specific `<meta>` tag element in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * If an existing element is found, it is returned and is not modified in any way.\n * @param tag The definition of a `<meta>` element to match or create.\n * @param forceCreation True to create a new element without checking whether one already exists.\n * @returns The existing element with the same attributes and values if found,\n * the new element if no match is found, or `null` if the tag parameter is not defined.\n */\n addTag(tag, forceCreation = false) {\n if (!tag)\n return null;\n return this._getOrCreateElement(tag, forceCreation);\n }\n /**\n * Retrieves or creates a set of `<meta>` tag elements in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * @param tags An array of tag definitions to match or create.\n * @param forceCreation True to create new elements without checking whether they already exist.\n * @returns The matching elements if found, or the new elements.\n */\n addTags(tags, forceCreation = false) {\n if (!tags)\n return [];\n return tags.reduce((result, tag) => {\n if (tag) {\n result.push(this._getOrCreateElement(tag, forceCreation));\n }\n return result;\n }, []);\n }\n /**\n * Retrieves a `<meta>` tag element in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching element, if any.\n */\n getTag(attrSelector) {\n if (!attrSelector)\n return null;\n return this._doc.querySelector(`meta[${attrSelector}]`) || null;\n }\n /**\n * Retrieves a set of `<meta>` tag elements in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching elements, if any.\n */\n getTags(attrSelector) {\n if (!attrSelector)\n return [];\n const list /*NodeList*/ = this._doc.querySelectorAll(`meta[${attrSelector}]`);\n return list ? [].slice.call(list) : [];\n }\n /**\n * Modifies an existing `<meta>` tag element in the current HTML document.\n * @param tag The tag description with which to replace the existing tag content.\n * @param selector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n * If not supplied, matches a tag with the same `name` or `property` attribute value as the\n * replacement tag.\n * @return The modified element.\n */\n updateTag(tag, selector) {\n if (!tag)\n return null;\n selector = selector || this._parseSelector(tag);\n const meta = this.getTag(selector);\n if (meta) {\n return this._setMetaElementAttributes(tag, meta);\n }\n return this._getOrCreateElement(tag, true);\n }\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param attrSelector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n */\n removeTag(attrSelector) {\n this.removeTagElement(this.getTag(attrSelector));\n }\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param meta The tag definition to match against to identify an existing tag.\n */\n removeTagElement(meta) {\n if (meta) {\n this._dom.remove(meta);\n }\n }\n _getOrCreateElement(meta, forceCreation = false) {\n if (!forceCreation) {\n const selector = this._parseSelector(meta);\n // It's allowed to have multiple elements with the same name so it's not enough to\n // just check that element with the same name already present on the page. We also need to\n // check if element has tag attributes\n const elem = this.getTags(selector).filter(elem => this._containsAttributes(meta, elem))[0];\n if (elem !== undefined)\n return elem;\n }\n const element = this._dom.createElement('meta');\n this._setMetaElementAttributes(meta, element);\n const head = this._doc.getElementsByTagName('head')[0];\n head.appendChild(element);\n return element;\n }\n _setMetaElementAttributes(tag, el) {\n Object.keys(tag).forEach((prop) => el.setAttribute(this._getMetaKeyMap(prop), tag[prop]));\n return el;\n }\n _parseSelector(tag) {\n const attr = tag.name ? 'name' : 'property';\n return `${attr}=\"${tag[attr]}\"`;\n }\n _containsAttributes(tag, elem) {\n return Object.keys(tag).every((key) => elem.getAttribute(this._getMetaKeyMap(key)) === tag[key]);\n }\n _getMetaKeyMap(prop) {\n return META_KEYS_MAP[prop] || prop;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Meta, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Meta, providedIn: 'root', useFactory: createMeta, deps: [] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Meta, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: createMeta, deps: [] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/**\n * Mapping for MetaDefinition properties with their correct meta attribute names\n */\nconst META_KEYS_MAP = {\n httpEquiv: 'http-equiv'\n};\n\n/**\n * Factory to create Title service.\n */\nfunction createTitle() {\n return new Title(ɵɵinject(DOCUMENT));\n}\n/**\n * A service that can be used to get and set the title of a current HTML document.\n *\n * Since an Angular application can't be bootstrapped on the entire HTML document (`<html>` tag)\n * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements\n * (representing the `<title>` tag). Instead, this service can be used to set and get the current\n * title value.\n *\n * @publicApi\n */\nclass Title {\n constructor(_doc) {\n this._doc = _doc;\n }\n /**\n * Get the title of the current HTML document.\n */\n getTitle() {\n return this._doc.title;\n }\n /**\n * Set the title of the current HTML document.\n * @param newTitle\n */\n setTitle(newTitle) {\n this._doc.title = newTitle || '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Title, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Title, providedIn: 'root', useFactory: createTitle, deps: [] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Title, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: createTitle, deps: [] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if\n * `name` is `'probe'`.\n * @param name Name under which it will be exported. Keep in mind this will be a property of the\n * global `ng` object.\n * @param value The value to export.\n */\nfunction exportNgVar(name, value) {\n if (typeof COMPILED === 'undefined' || !COMPILED) {\n // Note: we can't export `ng` when using closure enhanced optimization as:\n // - closure declares globals itself for minified names, which sometimes clobber our `ng` global\n // - we can't declare a closure extern as the namespace `ng` is already used within Google\n // for typings for angularJS (via `goog.provide('ng....')`).\n const ng = ɵglobal['ng'] = ɵglobal['ng'] || {};\n ng[name] = value;\n }\n}\n\nconst win = typeof window !== 'undefined' && window || {};\n\nclass ChangeDetectionPerfRecord {\n constructor(msPerTick, numTicks) {\n this.msPerTick = msPerTick;\n this.numTicks = numTicks;\n }\n}\n/**\n * Entry point for all Angular profiling-related debug tools. This object\n * corresponds to the `ng.profiler` in the dev console.\n */\nclass AngularProfiler {\n constructor(ref) {\n this.appRef = ref.injector.get(ApplicationRef);\n }\n // tslint:disable:no-console\n /**\n * Exercises change detection in a loop and then prints the average amount of\n * time in milliseconds how long a single round of change detection takes for\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\n * of 500 milliseconds.\n *\n * Optionally, a user may pass a `config` parameter containing a map of\n * options. Supported options are:\n *\n * `record` (boolean) - causes the profiler to record a CPU profile while\n * it exercises the change detector. Example:\n *\n * ```\n * ng.profiler.timeChangeDetection({record: true})\n * ```\n */\n timeChangeDetection(config) {\n const record = config && config['record'];\n const profileName = 'Change Detection';\n // Profiler is not available in Android browsers without dev tools opened\n const isProfilerAvailable = win.console.profile != null;\n if (record && isProfilerAvailable) {\n win.console.profile(profileName);\n }\n const start = performanceNow();\n let numTicks = 0;\n while (numTicks < 5 || (performanceNow() - start) < 500) {\n this.appRef.tick();\n numTicks++;\n }\n const end = performanceNow();\n if (record && isProfilerAvailable) {\n win.console.profileEnd(profileName);\n }\n const msPerTick = (end - start) / numTicks;\n win.console.log(`ran ${numTicks} change detection cycles`);\n win.console.log(`${msPerTick.toFixed(2)} ms per check`);\n return new ChangeDetectionPerfRecord(msPerTick, numTicks);\n }\n}\nfunction performanceNow() {\n return win.performance && win.performance.now ? win.performance.now() :\n new Date().getTime();\n}\n\nconst PROFILER_GLOBAL_NAME = 'profiler';\n/**\n * Enabled Angular debug tools that are accessible via your browser's\n * developer console.\n *\n * Usage:\n *\n * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)\n * 1. Type `ng.` (usually the console will show auto-complete suggestion)\n * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`\n * then hit Enter.\n *\n * @publicApi\n */\nfunction enableDebugTools(ref) {\n exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));\n return ref;\n}\n/**\n * Disables Angular tools.\n *\n * @publicApi\n */\nfunction disableDebugTools() {\n exportNgVar(PROFILER_GLOBAL_NAME, null);\n}\n\n/**\n * Predicates for use with {@link DebugElement}'s query functions.\n *\n * @publicApi\n */\nclass By {\n /**\n * Match all nodes.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n */\n static all() {\n return () => true;\n }\n /**\n * Match elements by the given CSS selector.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n */\n static css(selector) {\n return (debugElement) => {\n return debugElement.nativeElement != null ?\n elementMatches(debugElement.nativeElement, selector) :\n false;\n };\n }\n /**\n * Match nodes that have the given directive present.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n */\n static directive(type) {\n return (debugNode) => debugNode.providerTokens.indexOf(type) !== -1;\n }\n}\nfunction elementMatches(n, selector) {\n if (ɵgetDOM().isElementNode(n)) {\n return n.matches && n.matches(selector) ||\n n.msMatchesSelector && n.msMatchesSelector(selector) ||\n n.webkitMatchesSelector && n.webkitMatchesSelector(selector);\n }\n return false;\n}\n\n/**\n * Supported HammerJS recognizer event names.\n */\nconst EVENT_NAMES = {\n // pan\n 'pan': true,\n 'panstart': true,\n 'panmove': true,\n 'panend': true,\n 'pancancel': true,\n 'panleft': true,\n 'panright': true,\n 'panup': true,\n 'pandown': true,\n // pinch\n 'pinch': true,\n 'pinchstart': true,\n 'pinchmove': true,\n 'pinchend': true,\n 'pinchcancel': true,\n 'pinchin': true,\n 'pinchout': true,\n // press\n 'press': true,\n 'pressup': true,\n // rotate\n 'rotate': true,\n 'rotatestart': true,\n 'rotatemove': true,\n 'rotateend': true,\n 'rotatecancel': true,\n // swipe\n 'swipe': true,\n 'swipeleft': true,\n 'swiperight': true,\n 'swipeup': true,\n 'swipedown': true,\n // tap\n 'tap': true,\n 'doubletap': true\n};\n/**\n * DI token for providing [HammerJS](https://hammerjs.github.io/) support to Angular.\n * @see {@link HammerGestureConfig}\n *\n * @ngModule HammerModule\n * @publicApi\n */\nconst HAMMER_GESTURE_CONFIG = new InjectionToken('HammerGestureConfig');\n/**\n * Injection token used to provide a {@link HammerLoader} to Angular.\n *\n * @publicApi\n */\nconst HAMMER_LOADER = new InjectionToken('HammerLoader');\n/**\n * An injectable [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * for gesture recognition. Configures specific event recognition.\n * @publicApi\n */\nclass HammerGestureConfig {\n constructor() {\n /**\n * A set of supported event names for gestures to be used in Angular.\n * Angular supports all built-in recognizers, as listed in\n * [HammerJS documentation](https://hammerjs.github.io/).\n */\n this.events = [];\n /**\n * Maps gesture event names to a set of configuration options\n * that specify overrides to the default values for specific properties.\n *\n * The key is a supported event name to be configured,\n * and the options object contains a set of properties, with override values\n * to be applied to the named recognizer event.\n * For example, to disable recognition of the rotate event, specify\n * `{\"rotate\": {\"enable\": false}}`.\n *\n * Properties that are not present take the HammerJS default values.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](https://hammerjs.github.io/).\n *\n */\n this.overrides = {};\n }\n /**\n * Creates a [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * and attaches it to a given HTML element.\n * @param element The element that will recognize gestures.\n * @returns A HammerJS event-manager object.\n */\n buildHammer(element) {\n const mc = new Hammer(element, this.options);\n mc.get('pinch').set({ enable: true });\n mc.get('rotate').set({ enable: true });\n for (const eventName in this.overrides) {\n mc.get(eventName).set(this.overrides[eventName]);\n }\n return mc;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HammerGestureConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HammerGestureConfig }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HammerGestureConfig, decorators: [{\n type: Injectable\n }] });\n/**\n * Event plugin that adds Hammer support to an application.\n *\n * @ngModule HammerModule\n */\nclass HammerGesturesPlugin extends EventManagerPlugin {\n constructor(doc, _config, console, loader) {\n super(doc);\n this._config = _config;\n this.console = console;\n this.loader = loader;\n this._loaderPromise = null;\n }\n supports(eventName) {\n if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {\n return false;\n }\n if (!window.Hammer && !this.loader) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The \"${eventName}\" event cannot be bound because Hammer.JS is not ` +\n `loaded and no custom loader has been specified.`);\n }\n return false;\n }\n return true;\n }\n addEventListener(element, eventName, handler) {\n const zone = this.manager.getZone();\n eventName = eventName.toLowerCase();\n // If Hammer is not present but a loader is specified, we defer adding the event listener\n // until Hammer is loaded.\n if (!window.Hammer && this.loader) {\n this._loaderPromise = this._loaderPromise || zone.runOutsideAngular(() => this.loader());\n // This `addEventListener` method returns a function to remove the added listener.\n // Until Hammer is loaded, the returned function needs to *cancel* the registration rather\n // than remove anything.\n let cancelRegistration = false;\n let deregister = () => {\n cancelRegistration = true;\n };\n zone.runOutsideAngular(() => this._loaderPromise\n .then(() => {\n // If Hammer isn't actually loaded when the custom loader resolves, give up.\n if (!window.Hammer) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The custom HAMMER_LOADER completed, but Hammer.JS is not present.`);\n }\n deregister = () => { };\n return;\n }\n if (!cancelRegistration) {\n // Now that Hammer is loaded and the listener is being loaded for real,\n // the deregistration function changes from canceling registration to\n // removal.\n deregister = this.addEventListener(element, eventName, handler);\n }\n })\n .catch(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The \"${eventName}\" event cannot be bound because the custom ` +\n `Hammer.JS loader failed.`);\n }\n deregister = () => { };\n }));\n // Return a function that *executes* `deregister` (and not `deregister` itself) so that we\n // can change the behavior of `deregister` once the listener is added. Using a closure in\n // this way allows us to avoid any additional data structures to track listener removal.\n return () => {\n deregister();\n };\n }\n return zone.runOutsideAngular(() => {\n // Creating the manager bind events, must be done outside of angular\n const mc = this._config.buildHammer(element);\n const callback = function (eventObj) {\n zone.runGuarded(function () {\n handler(eventObj);\n });\n };\n mc.on(eventName, callback);\n return () => {\n mc.off(eventName, callback);\n // destroy mc to prevent memory leak\n if (typeof mc.destroy === 'function') {\n mc.destroy();\n }\n };\n });\n }\n isCustomEvent(eventName) {\n return this._config.events.indexOf(eventName) > -1;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HammerGesturesPlugin, deps: [{ token: DOCUMENT }, { token: HAMMER_GESTURE_CONFIG }, { token: i0.ɵConsole }, { token: HAMMER_LOADER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HammerGesturesPlugin }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HammerGesturesPlugin, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: HammerGestureConfig, decorators: [{\n type: Inject,\n args: [HAMMER_GESTURE_CONFIG]\n }] }, { type: i0.ɵConsole }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [HAMMER_LOADER]\n }] }]; } });\n/**\n * Adds support for HammerJS.\n *\n * Import this module at the root of your application so that Angular can work with\n * HammerJS to detect gesture events.\n *\n * Note that applications still need to include the HammerJS script itself. This module\n * simply sets up the coordination layer between HammerJS and Angular's EventManager.\n *\n * @publicApi\n */\nclass HammerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HammerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: HammerModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HammerModule, providers: [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: HammerGesturesPlugin,\n multi: true,\n deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, ɵConsole, [new Optional(), HAMMER_LOADER]]\n },\n { provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, deps: [] },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HammerModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: HammerGesturesPlugin,\n multi: true,\n deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, ɵConsole, [new Optional(), HAMMER_LOADER]]\n },\n { provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, deps: [] },\n ]\n }]\n }] });\n\n/**\n * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing\n * values to be safe to use in the different DOM contexts.\n *\n * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be\n * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on\n * the website.\n *\n * In specific situations, it might be necessary to disable sanitization, for example if the\n * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.\n * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`\n * methods, and then binding to that value from the template.\n *\n * These situations should be very rare, and extraordinary care must be taken to avoid creating a\n * Cross Site Scripting (XSS) security bug!\n *\n * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as\n * close as possible to the source of the value, to make it easy to verify no security bug is\n * created by its use.\n *\n * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that\n * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous\n * code. The sanitizer leaves safe values intact.\n *\n * @security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in\n * sanitization for the value passed in. Carefully check and audit all values and code paths going\n * into this call. Make sure any user data is appropriately escaped for this security context.\n * For more detail, see the [Security Guide](https://g.co/ng/security).\n *\n * @publicApi\n */\nclass DomSanitizer {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomSanitizer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomSanitizer, providedIn: 'root', useExisting: i0.forwardRef(function () { return DomSanitizerImpl; }) }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomSanitizer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl) }]\n }] });\nfunction domSanitizerImplFactory(injector) {\n return new DomSanitizerImpl(injector.get(DOCUMENT));\n}\nclass DomSanitizerImpl extends DomSanitizer {\n constructor(_doc) {\n super();\n this._doc = _doc;\n }\n sanitize(ctx, value) {\n if (value == null)\n return null;\n switch (ctx) {\n case SecurityContext.NONE:\n return value;\n case SecurityContext.HTML:\n if (ɵallowSanitizationBypassAndThrow(value, \"HTML\" /* BypassType.Html */)) {\n return ɵunwrapSafeValue(value);\n }\n return ɵ_sanitizeHtml(this._doc, String(value)).toString();\n case SecurityContext.STYLE:\n if (ɵallowSanitizationBypassAndThrow(value, \"Style\" /* BypassType.Style */)) {\n return ɵunwrapSafeValue(value);\n }\n return value;\n case SecurityContext.SCRIPT:\n if (ɵallowSanitizationBypassAndThrow(value, \"Script\" /* BypassType.Script */)) {\n return ɵunwrapSafeValue(value);\n }\n throw new ɵRuntimeError(5200 /* RuntimeErrorCode.SANITIZATION_UNSAFE_SCRIPT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'unsafe value used in a script context');\n case SecurityContext.URL:\n if (ɵallowSanitizationBypassAndThrow(value, \"URL\" /* BypassType.Url */)) {\n return ɵunwrapSafeValue(value);\n }\n return ɵ_sanitizeUrl(String(value));\n case SecurityContext.RESOURCE_URL:\n if (ɵallowSanitizationBypassAndThrow(value, \"ResourceURL\" /* BypassType.ResourceUrl */)) {\n return ɵunwrapSafeValue(value);\n }\n throw new ɵRuntimeError(5201 /* RuntimeErrorCode.SANITIZATION_UNSAFE_RESOURCE_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `unsafe value used in a resource URL context (see ${ɵXSS_SECURITY_URL})`);\n default:\n throw new ɵRuntimeError(5202 /* RuntimeErrorCode.SANITIZATION_UNEXPECTED_CTX */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Unexpected SecurityContext ${ctx} (see ${ɵXSS_SECURITY_URL})`);\n }\n }\n bypassSecurityTrustHtml(value) {\n return ɵbypassSanitizationTrustHtml(value);\n }\n bypassSecurityTrustStyle(value) {\n return ɵbypassSanitizationTrustStyle(value);\n }\n bypassSecurityTrustScript(value) {\n return ɵbypassSanitizationTrustScript(value);\n }\n bypassSecurityTrustUrl(value) {\n return ɵbypassSanitizationTrustUrl(value);\n }\n bypassSecurityTrustResourceUrl(value) {\n return ɵbypassSanitizationTrustResourceUrl(value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomSanitizerImpl, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomSanitizerImpl, providedIn: 'root', useFactory: domSanitizerImplFactory, deps: [{ token: Injector }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DomSanitizerImpl, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: domSanitizerImplFactory, deps: [Injector] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * Helper function to create an object that represents a Hydration feature.\n */\nfunction hydrationFeature(kind, providers = []) {\n return { ɵkind: kind, ɵproviders: providers };\n}\n/**\n * Disables DOM nodes reuse during hydration. Effectively makes\n * Angular re-render an application from scratch on the client.\n *\n * When this option is enabled, make sure that the initial navigation\n * option is configured for the Router as `enabledBlocking` by using the\n * `withEnabledBlockingInitialNavigation` in the `provideRouter` call:\n *\n * ```\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideRouter(\n * // ... other features ...\n * withEnabledBlockingInitialNavigation()\n * ),\n * provideClientHydration(withNoDomReuse())\n * ]\n * });\n * ```\n *\n * This would ensure that the application is rerendered after all async\n * operations in the Router (such as lazy-loading of components,\n * waiting for async guards and resolvers) are completed to avoid\n * clearing the DOM on the client too soon, thus causing content flicker.\n *\n * @see {@link provideRouter}\n * @see {@link withEnabledBlockingInitialNavigation}\n *\n * @publicApi\n * @developerPreview\n */\nfunction withNoDomReuse() {\n // This feature has no providers and acts as a flag that turns off\n // non-destructive hydration (which otherwise is turned on by default).\n return hydrationFeature(0 /* HydrationFeatureKind.NoDomReuseFeature */);\n}\n/**\n * Disables HTTP transfer cache. Effectively causes HTTP requests to be performed twice: once on the\n * server and other one on the browser.\n *\n * @publicApi\n * @developerPreview\n */\nfunction withNoHttpTransferCache() {\n // This feature has no providers and acts as a flag that turns off\n // HTTP transfer cache (which otherwise is turned on by default).\n return hydrationFeature(1 /* HydrationFeatureKind.NoHttpTransferCache */);\n}\n/**\n * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function\n * that verifies whether compatible ZoneJS was used in an application\n * and logs a warning in a console if it's not the case.\n */\nfunction provideZoneJsCompatibilityDetector() {\n return [{\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => {\n const ngZone = inject(NgZone);\n // Checking `ngZone instanceof NgZone` would be insufficient here,\n // because custom implementations might use NgZone as a base class.\n if (ngZone.constructor !== NgZone) {\n const console = inject(ɵConsole);\n const message = ɵformatRuntimeError(-5000 /* RuntimeErrorCode.UNSUPPORTED_ZONEJS_INSTANCE */, 'Angular detected that hydration was enabled for an application ' +\n 'that uses a custom or a noop Zone.js implementation. ' +\n 'This is not yet a fully supported configuration.');\n // tslint:disable-next-line:no-console\n console.warn(message);\n }\n },\n multi: true,\n }];\n}\n/**\n * Sets up providers necessary to enable hydration functionality for the application.\n *\n * By default, the function enables the recommended set of features for the optimal\n * performance for most of the applications. You can enable/disable features by\n * passing special functions (from the `HydrationFeatures` set) as arguments to the\n * `provideClientHydration` function. It includes the following features:\n *\n * * Reconciling DOM hydration. Learn more about it [here](guide/hydration).\n * * [`HttpClient`](api/common/http/HttpClient) response caching while running on the server and\n * transferring this cache to the client to avoid extra HTTP requests. Learn more about data caching\n * [here](/guide/universal#caching-data-when-using-httpclient).\n *\n * These functions functions will allow you to disable some of the default features:\n * * {@link withNoDomReuse} to disable DOM nodes reuse during hydration\n * * {@link withNoHttpTransferCache} to disable HTTP transfer cache\n *\n *\n * @usageNotes\n *\n * Basic example of how you can enable hydration in your application when\n * `bootstrapApplication` function is used:\n * ```\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration()]\n * });\n * ```\n *\n * Alternatively if you are using NgModules, you would add `provideClientHydration`\n * to your root app module's provider list.\n * ```\n * @NgModule({\n * declarations: [RootCmp],\n * bootstrap: [RootCmp],\n * providers: [provideClientHydration()],\n * })\n * export class AppModule {}\n * ```\n *\n * @see {@link withNoDomReuse}\n * @see {@link withNoHttpTransferCache}\n *\n * @param features Optional features to configure additional router behaviors.\n * @returns A set of providers to enable hydration.\n *\n * @publicApi\n * @developerPreview\n */\nfunction provideClientHydration(...features) {\n const providers = [];\n const featuresKind = new Set();\n for (const { ɵproviders, ɵkind } of features) {\n featuresKind.add(ɵkind);\n if (ɵproviders.length) {\n providers.push(ɵproviders);\n }\n }\n return makeEnvironmentProviders([\n (typeof ngDevMode !== 'undefined' && ngDevMode) ? provideZoneJsCompatibilityDetector() : [],\n (featuresKind.has(0 /* HydrationFeatureKind.NoDomReuseFeature */) ? [] : ɵwithDomHydration()),\n (featuresKind.has(1 /* HydrationFeatureKind.NoHttpTransferCache */) ? [] : ɵwithHttpTransferCache()),\n providers,\n ]);\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the platform-browser package.\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('16.2.12');\n\n// Re-export TransferState to the public API of the `platform-browser` for backwards-compatibility.\n/**\n * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.\n *\n * Example:\n *\n * ```\n * const COUNTER_KEY = makeStateKey<number>('counter');\n * let value = 10;\n *\n * transferState.set(COUNTER_KEY, value);\n * ```\n *\n * @publicApi\n * @deprecated `makeStateKey` has moved, please import `makeStateKey` from `@angular/core` instead.\n */\n// The below is a workaround to add a deprecated message.\nconst makeStateKey = makeStateKey$1;\n// The below type is needed for G3 due to JSC_CONFORMANCE_VIOLATION.\nconst TransferState = TransferState$1;\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserModule, By, DomSanitizer, EVENT_MANAGER_PLUGINS, EventManager, HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerModule, Meta, REMOVE_STYLES_ON_COMPONENT_DESTROY, Title, TransferState, VERSION, bootstrapApplication, createApplication, disableDebugTools, enableDebugTools, makeStateKey, platformBrowser, provideClientHydration, provideProtractorTestingSupport, withNoDomReuse, withNoHttpTransferCache, BrowserDomAdapter as ɵBrowserDomAdapter, BrowserGetTestability as ɵBrowserGetTestability, DomEventsPlugin as ɵDomEventsPlugin, DomRendererFactory2 as ɵDomRendererFactory2, DomSanitizerImpl as ɵDomSanitizerImpl, HammerGesturesPlugin as ɵHammerGesturesPlugin, INTERNAL_BROWSER_PLATFORM_PROVIDERS as ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, KeyEventsPlugin as ɵKeyEventsPlugin, SharedStylesHost as ɵSharedStylesHost, initDomAdapter as ɵinitDomAdapter };\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, Compiler, NgModuleFactory, ɵConsole, ɵInitialRenderPendingTasks, NgZone, ɵɵsanitizeUrlOrResourceUrl, booleanAttribute, Attribute, HostBinding, HostListener, Optional, ContentChildren, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, ENVIRONMENT_INITIALIZER, Injector, ApplicationRef, InjectFlags, APP_INITIALIZER, NgProbeToken, SkipSelf, NgModule, Inject, Version } from '@angular/core';\nimport { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, concat, defer, pipe, throwError, EMPTY, ConnectableObservable, Subject, Subscription } from 'rxjs';\nimport * as i3 from '@angular/common';\nimport { Location, ViewportScroller, LOCATION_INITIALIZED, LocationStrategy, HashLocationStrategy, PathLocationStrategy } from '@angular/common';\nimport { map, switchMap, take, startWith, filter, mergeMap, first, concatMap, tap, catchError, scan, defaultIfEmpty, last as last$1, takeLast, mapTo, finalize, refCount, takeUntil, mergeAll } from 'rxjs/operators';\nimport * as i1 from '@angular/platform-browser';\n\n/**\n * The primary routing outlet.\n *\n * @publicApi\n */\nconst PRIMARY_OUTLET = 'primary';\n/**\n * A private symbol used to store the value of `Route.title` inside the `Route.data` if it is a\n * static string or `Route.resolve` if anything else. This allows us to reuse the existing route\n * data/resolvers to support the title feature without new instrumentation in the `Router` pipeline.\n */\nconst RouteTitleKey = /* @__PURE__ */ Symbol('RouteTitle');\nclass ParamsAsMap {\n constructor(params) {\n this.params = params || {};\n }\n has(name) {\n return Object.prototype.hasOwnProperty.call(this.params, name);\n }\n get(name) {\n if (this.has(name)) {\n const v = this.params[name];\n return Array.isArray(v) ? v[0] : v;\n }\n return null;\n }\n getAll(name) {\n if (this.has(name)) {\n const v = this.params[name];\n return Array.isArray(v) ? v : [v];\n }\n return [];\n }\n get keys() {\n return Object.keys(this.params);\n }\n}\n/**\n * Converts a `Params` instance to a `ParamMap`.\n * @param params The instance to convert.\n * @returns The new map instance.\n *\n * @publicApi\n */\nfunction convertToParamMap(params) {\n return new ParamsAsMap(params);\n}\n/**\n * Matches the route configuration (`route`) against the actual URL (`segments`).\n *\n * When no matcher is defined on a `Route`, this is the matcher used by the Router by default.\n *\n * @param segments The remaining unmatched segments in the current navigation\n * @param segmentGroup The current segment group being matched\n * @param route The `Route` to match against.\n *\n * @see {@link UrlMatchResult}\n * @see {@link Route}\n *\n * @returns The resulting match information or `null` if the `route` should not match.\n * @publicApi\n */\nfunction defaultUrlMatcher(segments, segmentGroup, route) {\n const parts = route.path.split('/');\n if (parts.length > segments.length) {\n // The actual URL is shorter than the config, no match\n return null;\n }\n if (route.pathMatch === 'full' &&\n (segmentGroup.hasChildren() || parts.length < segments.length)) {\n // The config is longer than the actual URL but we are looking for a full match, return null\n return null;\n }\n const posParams = {};\n // Check each config part against the actual URL\n for (let index = 0; index < parts.length; index++) {\n const part = parts[index];\n const segment = segments[index];\n const isParameter = part.startsWith(':');\n if (isParameter) {\n posParams[part.substring(1)] = segment;\n }\n else if (part !== segment.path) {\n // The actual URL part does not match the config, no match\n return null;\n }\n }\n return { consumed: segments.slice(0, parts.length), posParams };\n}\n\nfunction shallowEqualArrays(a, b) {\n if (a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; ++i) {\n if (!shallowEqual(a[i], b[i]))\n return false;\n }\n return true;\n}\nfunction shallowEqual(a, b) {\n // While `undefined` should never be possible, it would sometimes be the case in IE 11\n // and pre-chromium Edge. The check below accounts for this edge case.\n const k1 = a ? Object.keys(a) : undefined;\n const k2 = b ? Object.keys(b) : undefined;\n if (!k1 || !k2 || k1.length != k2.length) {\n return false;\n }\n let key;\n for (let i = 0; i < k1.length; i++) {\n key = k1[i];\n if (!equalArraysOrString(a[key], b[key])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Test equality for arrays of strings or a string.\n */\nfunction equalArraysOrString(a, b) {\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length)\n return false;\n const aSorted = [...a].sort();\n const bSorted = [...b].sort();\n return aSorted.every((val, index) => bSorted[index] === val);\n }\n else {\n return a === b;\n }\n}\n/**\n * Return the last element of an array.\n */\nfunction last(a) {\n return a.length > 0 ? a[a.length - 1] : null;\n}\nfunction wrapIntoObservable(value) {\n if (isObservable(value)) {\n return value;\n }\n if (ɵisPromise(value)) {\n // Use `Promise.resolve()` to wrap promise-like instances.\n // Required ie when a Resolver returns a AngularJS `$q` promise to correctly trigger the\n // change detection.\n return from(Promise.resolve(value));\n }\n return of(value);\n}\n\nconst pathCompareMap = {\n 'exact': equalSegmentGroups,\n 'subset': containsSegmentGroup,\n};\nconst paramCompareMap = {\n 'exact': equalParams,\n 'subset': containsParams,\n 'ignored': () => true,\n};\nfunction containsTree(container, containee, options) {\n return pathCompareMap[options.paths](container.root, containee.root, options.matrixParams) &&\n paramCompareMap[options.queryParams](container.queryParams, containee.queryParams) &&\n !(options.fragment === 'exact' && container.fragment !== containee.fragment);\n}\nfunction equalParams(container, containee) {\n // TODO: This does not handle array params correctly.\n return shallowEqual(container, containee);\n}\nfunction equalSegmentGroups(container, containee, matrixParams) {\n if (!equalPath(container.segments, containee.segments))\n return false;\n if (!matrixParamsMatch(container.segments, containee.segments, matrixParams)) {\n return false;\n }\n if (container.numberOfChildren !== containee.numberOfChildren)\n return false;\n for (const c in containee.children) {\n if (!container.children[c])\n return false;\n if (!equalSegmentGroups(container.children[c], containee.children[c], matrixParams))\n return false;\n }\n return true;\n}\nfunction containsParams(container, containee) {\n return Object.keys(containee).length <= Object.keys(container).length &&\n Object.keys(containee).every(key => equalArraysOrString(container[key], containee[key]));\n}\nfunction containsSegmentGroup(container, containee, matrixParams) {\n return containsSegmentGroupHelper(container, containee, containee.segments, matrixParams);\n}\nfunction containsSegmentGroupHelper(container, containee, containeePaths, matrixParams) {\n if (container.segments.length > containeePaths.length) {\n const current = container.segments.slice(0, containeePaths.length);\n if (!equalPath(current, containeePaths))\n return false;\n if (containee.hasChildren())\n return false;\n if (!matrixParamsMatch(current, containeePaths, matrixParams))\n return false;\n return true;\n }\n else if (container.segments.length === containeePaths.length) {\n if (!equalPath(container.segments, containeePaths))\n return false;\n if (!matrixParamsMatch(container.segments, containeePaths, matrixParams))\n return false;\n for (const c in containee.children) {\n if (!container.children[c])\n return false;\n if (!containsSegmentGroup(container.children[c], containee.children[c], matrixParams)) {\n return false;\n }\n }\n return true;\n }\n else {\n const current = containeePaths.slice(0, container.segments.length);\n const next = containeePaths.slice(container.segments.length);\n if (!equalPath(container.segments, current))\n return false;\n if (!matrixParamsMatch(container.segments, current, matrixParams))\n return false;\n if (!container.children[PRIMARY_OUTLET])\n return false;\n return containsSegmentGroupHelper(container.children[PRIMARY_OUTLET], containee, next, matrixParams);\n }\n}\nfunction matrixParamsMatch(containerPaths, containeePaths, options) {\n return containeePaths.every((containeeSegment, i) => {\n return paramCompareMap[options](containerPaths[i].parameters, containeeSegment.parameters);\n });\n}\n/**\n * @description\n *\n * Represents the parsed URL.\n *\n * Since a router state is a tree, and the URL is nothing but a serialized state, the URL is a\n * serialized tree.\n * UrlTree is a data structure that provides a lot of affordances in dealing with URLs\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree =\n * router.parseUrl('/team/33/(user/victor//support:help)?debug=true#fragment');\n * const f = tree.fragment; // return 'fragment'\n * const q = tree.queryParams; // returns {debug: 'true'}\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments; // returns 2 segments 'team' and '33'\n * g.children[PRIMARY_OUTLET].segments; // returns 2 segments 'user' and 'victor'\n * g.children['support'].segments; // return 1 segment 'help'\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass UrlTree {\n constructor(\n /** The root segment group of the URL tree */\n root = new UrlSegmentGroup([], {}), \n /** The query params of the URL */\n queryParams = {}, \n /** The fragment of the URL */\n fragment = null) {\n this.root = root;\n this.queryParams = queryParams;\n this.fragment = fragment;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (root.segments.length > 0) {\n throw new ɵRuntimeError(4015 /* RuntimeErrorCode.INVALID_ROOT_URL_SEGMENT */, 'The root `UrlSegmentGroup` should not contain `segments`. ' +\n 'Instead, these segments belong in the `children` so they can be associated with a named outlet.');\n }\n }\n }\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n /** @docsNotRequired */\n toString() {\n return DEFAULT_SERIALIZER.serialize(this);\n }\n}\n/**\n * @description\n *\n * Represents the parsed URL segment group.\n *\n * See `UrlTree` for more information.\n *\n * @publicApi\n */\nclass UrlSegmentGroup {\n constructor(\n /** The URL segments of this group. See `UrlSegment` for more information */\n segments, \n /** The list of children of this group */\n children) {\n this.segments = segments;\n this.children = children;\n /** The parent node in the url tree */\n this.parent = null;\n Object.values(children).forEach((v) => (v.parent = this));\n }\n /** Whether the segment has child segments */\n hasChildren() {\n return this.numberOfChildren > 0;\n }\n /** Number of child segments */\n get numberOfChildren() {\n return Object.keys(this.children).length;\n }\n /** @docsNotRequired */\n toString() {\n return serializePaths(this);\n }\n}\n/**\n * @description\n *\n * Represents a single URL segment.\n *\n * A UrlSegment is a part of a URL between the two slashes. It contains a path and the matrix\n * parameters associated with the segment.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree = router.parseUrl('/team;id=33');\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments;\n * s[0].path; // returns 'team'\n * s[0].parameters; // returns {id: 33}\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass UrlSegment {\n constructor(\n /** The path part of a URL segment */\n path, \n /** The matrix parameters associated with a segment */\n parameters) {\n this.path = path;\n this.parameters = parameters;\n }\n get parameterMap() {\n if (!this._parameterMap) {\n this._parameterMap = convertToParamMap(this.parameters);\n }\n return this._parameterMap;\n }\n /** @docsNotRequired */\n toString() {\n return serializePath(this);\n }\n}\nfunction equalSegments(as, bs) {\n return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters));\n}\nfunction equalPath(as, bs) {\n if (as.length !== bs.length)\n return false;\n return as.every((a, i) => a.path === bs[i].path);\n}\nfunction mapChildrenIntoArray(segment, fn) {\n let res = [];\n Object.entries(segment.children).forEach(([childOutlet, child]) => {\n if (childOutlet === PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n Object.entries(segment.children).forEach(([childOutlet, child]) => {\n if (childOutlet !== PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n return res;\n}\n/**\n * @description\n *\n * Serializes and deserializes a URL string into a URL tree.\n *\n * The url serialization strategy is customizable. You can\n * make all URLs case insensitive by providing a custom UrlSerializer.\n *\n * See `DefaultUrlSerializer` for an example of a URL serializer.\n *\n * @publicApi\n */\nclass UrlSerializer {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UrlSerializer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]\n }] });\n/**\n * @description\n *\n * A default implementation of the `UrlSerializer`.\n *\n * Example URLs:\n *\n * ```\n * /inbox/33(popup:compose)\n * /inbox/33;open=true/messages/44\n * ```\n *\n * DefaultUrlSerializer uses parentheses to serialize secondary segments (e.g., popup:compose), the\n * colon syntax to specify the outlet, and the ';parameter=value' syntax (e.g., open=true) to\n * specify route specific parameters.\n *\n * @publicApi\n */\nclass DefaultUrlSerializer {\n /** Parses a url into a `UrlTree` */\n parse(url) {\n const p = new UrlParser(url);\n return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment());\n }\n /** Converts a `UrlTree` into a url */\n serialize(tree) {\n const segment = `/${serializeSegment(tree.root, true)}`;\n const query = serializeQueryParams(tree.queryParams);\n const fragment = typeof tree.fragment === `string` ? `#${encodeUriFragment(tree.fragment)}` : '';\n return `${segment}${query}${fragment}`;\n }\n}\nconst DEFAULT_SERIALIZER = new DefaultUrlSerializer();\nfunction serializePaths(segment) {\n return segment.segments.map(p => serializePath(p)).join('/');\n}\nfunction serializeSegment(segment, root) {\n if (!segment.hasChildren()) {\n return serializePaths(segment);\n }\n if (root) {\n const primary = segment.children[PRIMARY_OUTLET] ?\n serializeSegment(segment.children[PRIMARY_OUTLET], false) :\n '';\n const children = [];\n Object.entries(segment.children).forEach(([k, v]) => {\n if (k !== PRIMARY_OUTLET) {\n children.push(`${k}:${serializeSegment(v, false)}`);\n }\n });\n return children.length > 0 ? `${primary}(${children.join('//')})` : primary;\n }\n else {\n const children = mapChildrenIntoArray(segment, (v, k) => {\n if (k === PRIMARY_OUTLET) {\n return [serializeSegment(segment.children[PRIMARY_OUTLET], false)];\n }\n return [`${k}:${serializeSegment(v, false)}`];\n });\n // use no parenthesis if the only child is a primary outlet route\n if (Object.keys(segment.children).length === 1 && segment.children[PRIMARY_OUTLET] != null) {\n return `${serializePaths(segment)}/${children[0]}`;\n }\n return `${serializePaths(segment)}/(${children.join('//')})`;\n }\n}\n/**\n * Encodes a URI string with the default encoding. This function will only ever be called from\n * `encodeUriQuery` or `encodeUriSegment` as it's the base set of encodings to be used. We need\n * a custom encoding because encodeURIComponent is too aggressive and encodes stuff that doesn't\n * have to be encoded per https://url.spec.whatwg.org.\n */\nfunction encodeUriString(s) {\n return encodeURIComponent(s)\n .replace(/%40/g, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',');\n}\n/**\n * This function should be used to encode both keys and values in a query string key/value. In\n * the following URL, you need to call encodeUriQuery on \"k\" and \"v\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriQuery(s) {\n return encodeUriString(s).replace(/%3B/gi, ';');\n}\n/**\n * This function should be used to encode a URL fragment. In the following URL, you need to call\n * encodeUriFragment on \"f\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriFragment(s) {\n return encodeURI(s);\n}\n/**\n * This function should be run on any URI segment as well as the key and value in a key/value\n * pair for matrix params. In the following URL, you need to call encodeUriSegment on \"html\",\n * \"mk\", and \"mv\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriSegment(s) {\n return encodeUriString(s).replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/%26/gi, '&');\n}\nfunction decode(s) {\n return decodeURIComponent(s);\n}\n// Query keys/values should have the \"+\" replaced first, as \"+\" in a query string is \" \".\n// decodeURIComponent function will not decode \"+\" as a space.\nfunction decodeQuery(s) {\n return decode(s.replace(/\\+/g, '%20'));\n}\nfunction serializePath(path) {\n return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`;\n}\nfunction serializeMatrixParams(params) {\n return Object.keys(params)\n .map(key => `;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`)\n .join('');\n}\nfunction serializeQueryParams(params) {\n const strParams = Object.keys(params)\n .map((name) => {\n const value = params[name];\n return Array.isArray(value) ?\n value.map(v => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') :\n `${encodeUriQuery(name)}=${encodeUriQuery(value)}`;\n })\n .filter(s => !!s);\n return strParams.length ? `?${strParams.join('&')}` : '';\n}\nconst SEGMENT_RE = /^[^\\/()?;#]+/;\nfunction matchSegments(str) {\n const match = str.match(SEGMENT_RE);\n return match ? match[0] : '';\n}\nconst MATRIX_PARAM_SEGMENT_RE = /^[^\\/()?;=#]+/;\nfunction matchMatrixKeySegments(str) {\n const match = str.match(MATRIX_PARAM_SEGMENT_RE);\n return match ? match[0] : '';\n}\nconst QUERY_PARAM_RE = /^[^=?&#]+/;\n// Return the name of the query param at the start of the string or an empty string\nfunction matchQueryParams(str) {\n const match = str.match(QUERY_PARAM_RE);\n return match ? match[0] : '';\n}\nconst QUERY_PARAM_VALUE_RE = /^[^&#]+/;\n// Return the value of the query param at the start of the string or an empty string\nfunction matchUrlQueryParamValue(str) {\n const match = str.match(QUERY_PARAM_VALUE_RE);\n return match ? match[0] : '';\n}\nclass UrlParser {\n constructor(url) {\n this.url = url;\n this.remaining = url;\n }\n parseRootSegment() {\n this.consumeOptional('/');\n if (this.remaining === '' || this.peekStartsWith('?') || this.peekStartsWith('#')) {\n return new UrlSegmentGroup([], {});\n }\n // The root segment group never has segments\n return new UrlSegmentGroup([], this.parseChildren());\n }\n parseQueryParams() {\n const params = {};\n if (this.consumeOptional('?')) {\n do {\n this.parseQueryParam(params);\n } while (this.consumeOptional('&'));\n }\n return params;\n }\n parseFragment() {\n return this.consumeOptional('#') ? decodeURIComponent(this.remaining) : null;\n }\n parseChildren() {\n if (this.remaining === '') {\n return {};\n }\n this.consumeOptional('/');\n const segments = [];\n if (!this.peekStartsWith('(')) {\n segments.push(this.parseSegment());\n }\n while (this.peekStartsWith('/') && !this.peekStartsWith('//') && !this.peekStartsWith('/(')) {\n this.capture('/');\n segments.push(this.parseSegment());\n }\n let children = {};\n if (this.peekStartsWith('/(')) {\n this.capture('/');\n children = this.parseParens(true);\n }\n let res = {};\n if (this.peekStartsWith('(')) {\n res = this.parseParens(false);\n }\n if (segments.length > 0 || Object.keys(children).length > 0) {\n res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children);\n }\n return res;\n }\n // parse a segment with its matrix parameters\n // ie `name;k1=v1;k2`\n parseSegment() {\n const path = matchSegments(this.remaining);\n if (path === '' && this.peekStartsWith(';')) {\n throw new ɵRuntimeError(4009 /* RuntimeErrorCode.EMPTY_PATH_WITH_PARAMS */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Empty path url segment cannot have parameters: '${this.remaining}'.`);\n }\n this.capture(path);\n return new UrlSegment(decode(path), this.parseMatrixParams());\n }\n parseMatrixParams() {\n const params = {};\n while (this.consumeOptional(';')) {\n this.parseParam(params);\n }\n return params;\n }\n parseParam(params) {\n const key = matchMatrixKeySegments(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let value = '';\n if (this.consumeOptional('=')) {\n const valueMatch = matchSegments(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n params[decode(key)] = decode(value);\n }\n // Parse a single query parameter `name[=value]`\n parseQueryParam(params) {\n const key = matchQueryParams(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let value = '';\n if (this.consumeOptional('=')) {\n const valueMatch = matchUrlQueryParamValue(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n const decodedKey = decodeQuery(key);\n const decodedVal = decodeQuery(value);\n if (params.hasOwnProperty(decodedKey)) {\n // Append to existing values\n let currentVal = params[decodedKey];\n if (!Array.isArray(currentVal)) {\n currentVal = [currentVal];\n params[decodedKey] = currentVal;\n }\n currentVal.push(decodedVal);\n }\n else {\n // Create a new value\n params[decodedKey] = decodedVal;\n }\n }\n // parse `(a/b//outlet_name:c/d)`\n parseParens(allowPrimary) {\n const segments = {};\n this.capture('(');\n while (!this.consumeOptional(')') && this.remaining.length > 0) {\n const path = matchSegments(this.remaining);\n const next = this.remaining[path.length];\n // if is is not one of these characters, then the segment was unescaped\n // or the group was not closed\n if (next !== '/' && next !== ')' && next !== ';') {\n throw new ɵRuntimeError(4010 /* RuntimeErrorCode.UNPARSABLE_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Cannot parse url '${this.url}'`);\n }\n let outletName = undefined;\n if (path.indexOf(':') > -1) {\n outletName = path.slice(0, path.indexOf(':'));\n this.capture(outletName);\n this.capture(':');\n }\n else if (allowPrimary) {\n outletName = PRIMARY_OUTLET;\n }\n const children = this.parseChildren();\n segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] :\n new UrlSegmentGroup([], children);\n this.consumeOptional('//');\n }\n return segments;\n }\n peekStartsWith(str) {\n return this.remaining.startsWith(str);\n }\n // Consumes the prefix when it is present and returns whether it has been consumed\n consumeOptional(str) {\n if (this.peekStartsWith(str)) {\n this.remaining = this.remaining.substring(str.length);\n return true;\n }\n return false;\n }\n capture(str) {\n if (!this.consumeOptional(str)) {\n throw new ɵRuntimeError(4011 /* RuntimeErrorCode.UNEXPECTED_VALUE_IN_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Expected \"${str}\".`);\n }\n }\n}\nfunction createRoot(rootCandidate) {\n return rootCandidate.segments.length > 0 ?\n new UrlSegmentGroup([], { [PRIMARY_OUTLET]: rootCandidate }) :\n rootCandidate;\n}\n/**\n * Recursively\n * - merges primary segment children into their parents\n * - drops empty children (those which have no segments and no children themselves). This latter\n * prevents serializing a group into something like `/a(aux:)`, where `aux` is an empty child\n * segment.\n * - merges named outlets without a primary segment sibling into the children. This prevents\n * serializing a URL like `//(a:a)(b:b) instead of `/(a:a//b:b)` when the aux b route lives on the\n * root but the `a` route lives under an empty path primary route.\n */\nfunction squashSegmentGroup(segmentGroup) {\n const newChildren = {};\n for (const childOutlet of Object.keys(segmentGroup.children)) {\n const child = segmentGroup.children[childOutlet];\n const childCandidate = squashSegmentGroup(child);\n // moves named children in an empty path primary child into this group\n if (childOutlet === PRIMARY_OUTLET && childCandidate.segments.length === 0 &&\n childCandidate.hasChildren()) {\n for (const [grandChildOutlet, grandChild] of Object.entries(childCandidate.children)) {\n newChildren[grandChildOutlet] = grandChild;\n }\n } // don't add empty children\n else if (childCandidate.segments.length > 0 || childCandidate.hasChildren()) {\n newChildren[childOutlet] = childCandidate;\n }\n }\n const s = new UrlSegmentGroup(segmentGroup.segments, newChildren);\n return mergeTrivialChildren(s);\n}\n/**\n * When possible, merges the primary outlet child into the parent `UrlSegmentGroup`.\n *\n * When a segment group has only one child which is a primary outlet, merges that child into the\n * parent. That is, the child segment group's segments are merged into the `s` and the child's\n * children become the children of `s`. Think of this like a 'squash', merging the child segment\n * group into the parent.\n */\nfunction mergeTrivialChildren(s) {\n if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) {\n const c = s.children[PRIMARY_OUTLET];\n return new UrlSegmentGroup(s.segments.concat(c.segments), c.children);\n }\n return s;\n}\nfunction isUrlTree(v) {\n return v instanceof UrlTree;\n}\n\n/**\n * Creates a `UrlTree` relative to an `ActivatedRouteSnapshot`.\n *\n * @publicApi\n *\n *\n * @param relativeTo The `ActivatedRouteSnapshot` to apply the commands to\n * @param commands An array of URL fragments with which to construct the new URL tree.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the one provided in the `relativeTo` parameter.\n * @param queryParams The query parameters for the `UrlTree`. `null` if the `UrlTree` does not have\n * any query parameters.\n * @param fragment The fragment for the `UrlTree`. `null` if the `UrlTree` does not have a fragment.\n *\n * @usageNotes\n *\n * ```\n * // create /team/33/user/11\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * createUrlTreeFromSnapshot(snapshot, ['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it,\n * // you can do the following:\n * createUrlTreeFromSnapshot(snapshot, [{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right:\n * 'chat'}}], null, null);\n *\n * // remove the right secondary node\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // For the examples below, assume the current URL is for the `/team/33/user/11` and the\n * `ActivatedRouteSnapshot` points to `user/11`:\n *\n * // navigate to /team/33/user/11/details\n * createUrlTreeFromSnapshot(snapshot, ['details']);\n *\n * // navigate to /team/33/user/22\n * createUrlTreeFromSnapshot(snapshot, ['../22']);\n *\n * // navigate to /team/44/user/22\n * createUrlTreeFromSnapshot(snapshot, ['../../team/44/user/22']);\n * ```\n */\nfunction createUrlTreeFromSnapshot(relativeTo, commands, queryParams = null, fragment = null) {\n const relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeTo);\n return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, queryParams, fragment);\n}\nfunction createSegmentGroupFromRoute(route) {\n let targetGroup;\n function createSegmentGroupFromRouteRecursive(currentRoute) {\n const childOutlets = {};\n for (const childSnapshot of currentRoute.children) {\n const root = createSegmentGroupFromRouteRecursive(childSnapshot);\n childOutlets[childSnapshot.outlet] = root;\n }\n const segmentGroup = new UrlSegmentGroup(currentRoute.url, childOutlets);\n if (currentRoute === route) {\n targetGroup = segmentGroup;\n }\n return segmentGroup;\n }\n const rootCandidate = createSegmentGroupFromRouteRecursive(route.root);\n const rootSegmentGroup = createRoot(rootCandidate);\n return targetGroup ?? rootSegmentGroup;\n}\nfunction createUrlTreeFromSegmentGroup(relativeTo, commands, queryParams, fragment) {\n let root = relativeTo;\n while (root.parent) {\n root = root.parent;\n }\n // There are no commands so the `UrlTree` goes to the same path as the one created from the\n // `UrlSegmentGroup`. All we need to do is update the `queryParams` and `fragment` without\n // applying any other logic.\n if (commands.length === 0) {\n return tree(root, root, root, queryParams, fragment);\n }\n const nav = computeNavigation(commands);\n if (nav.toRoot()) {\n return tree(root, root, new UrlSegmentGroup([], {}), queryParams, fragment);\n }\n const position = findStartingPositionForTargetGroup(nav, root, relativeTo);\n const newSegmentGroup = position.processChildren ?\n updateSegmentGroupChildren(position.segmentGroup, position.index, nav.commands) :\n updateSegmentGroup(position.segmentGroup, position.index, nav.commands);\n return tree(root, position.segmentGroup, newSegmentGroup, queryParams, fragment);\n}\nfunction isMatrixParams(command) {\n return typeof command === 'object' && command != null && !command.outlets && !command.segmentPath;\n}\n/**\n * Determines if a given command has an `outlets` map. When we encounter a command\n * with an outlets k/v map, we need to apply each outlet individually to the existing segment.\n */\nfunction isCommandWithOutlets(command) {\n return typeof command === 'object' && command != null && command.outlets;\n}\nfunction tree(oldRoot, oldSegmentGroup, newSegmentGroup, queryParams, fragment) {\n let qp = {};\n if (queryParams) {\n Object.entries(queryParams).forEach(([name, value]) => {\n qp[name] = Array.isArray(value) ? value.map((v) => `${v}`) : `${value}`;\n });\n }\n let rootCandidate;\n if (oldRoot === oldSegmentGroup) {\n rootCandidate = newSegmentGroup;\n }\n else {\n rootCandidate = replaceSegment(oldRoot, oldSegmentGroup, newSegmentGroup);\n }\n const newRoot = createRoot(squashSegmentGroup(rootCandidate));\n return new UrlTree(newRoot, qp, fragment);\n}\n/**\n * Replaces the `oldSegment` which is located in some child of the `current` with the `newSegment`.\n * This also has the effect of creating new `UrlSegmentGroup` copies to update references. This\n * shouldn't be necessary but the fallback logic for an invalid ActivatedRoute in the creation uses\n * the Router's current url tree. If we don't create new segment groups, we end up modifying that\n * value.\n */\nfunction replaceSegment(current, oldSegment, newSegment) {\n const children = {};\n Object.entries(current.children).forEach(([outletName, c]) => {\n if (c === oldSegment) {\n children[outletName] = newSegment;\n }\n else {\n children[outletName] = replaceSegment(c, oldSegment, newSegment);\n }\n });\n return new UrlSegmentGroup(current.segments, children);\n}\nclass Navigation {\n constructor(isAbsolute, numberOfDoubleDots, commands) {\n this.isAbsolute = isAbsolute;\n this.numberOfDoubleDots = numberOfDoubleDots;\n this.commands = commands;\n if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) {\n throw new ɵRuntimeError(4003 /* RuntimeErrorCode.ROOT_SEGMENT_MATRIX_PARAMS */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'Root segment cannot have matrix parameters');\n }\n const cmdWithOutlet = commands.find(isCommandWithOutlets);\n if (cmdWithOutlet && cmdWithOutlet !== last(commands)) {\n throw new ɵRuntimeError(4004 /* RuntimeErrorCode.MISPLACED_OUTLETS_COMMAND */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n '{outlets:{}} has to be the last command');\n }\n }\n toRoot() {\n return this.isAbsolute && this.commands.length === 1 && this.commands[0] == '/';\n }\n}\n/** Transforms commands to a normalized `Navigation` */\nfunction computeNavigation(commands) {\n if ((typeof commands[0] === 'string') && commands.length === 1 && commands[0] === '/') {\n return new Navigation(true, 0, commands);\n }\n let numberOfDoubleDots = 0;\n let isAbsolute = false;\n const res = commands.reduce((res, cmd, cmdIdx) => {\n if (typeof cmd === 'object' && cmd != null) {\n if (cmd.outlets) {\n const outlets = {};\n Object.entries(cmd.outlets).forEach(([name, commands]) => {\n outlets[name] = typeof commands === 'string' ? commands.split('/') : commands;\n });\n return [...res, { outlets }];\n }\n if (cmd.segmentPath) {\n return [...res, cmd.segmentPath];\n }\n }\n if (!(typeof cmd === 'string')) {\n return [...res, cmd];\n }\n if (cmdIdx === 0) {\n cmd.split('/').forEach((urlPart, partIndex) => {\n if (partIndex == 0 && urlPart === '.') {\n // skip './a'\n }\n else if (partIndex == 0 && urlPart === '') { // '/a'\n isAbsolute = true;\n }\n else if (urlPart === '..') { // '../a'\n numberOfDoubleDots++;\n }\n else if (urlPart != '') {\n res.push(urlPart);\n }\n });\n return res;\n }\n return [...res, cmd];\n }, []);\n return new Navigation(isAbsolute, numberOfDoubleDots, res);\n}\nclass Position {\n constructor(segmentGroup, processChildren, index) {\n this.segmentGroup = segmentGroup;\n this.processChildren = processChildren;\n this.index = index;\n }\n}\nfunction findStartingPositionForTargetGroup(nav, root, target) {\n if (nav.isAbsolute) {\n return new Position(root, true, 0);\n }\n if (!target) {\n // `NaN` is used only to maintain backwards compatibility with incorrectly mocked\n // `ActivatedRouteSnapshot` in tests. In prior versions of this code, the position here was\n // determined based on an internal property that was rarely mocked, resulting in `NaN`. In\n // reality, this code path should _never_ be touched since `target` is not allowed to be falsey.\n return new Position(root, false, NaN);\n }\n if (target.parent === null) {\n return new Position(target, true, 0);\n }\n const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;\n const index = target.segments.length - 1 + modifier;\n return createPositionApplyingDoubleDots(target, index, nav.numberOfDoubleDots);\n}\nfunction createPositionApplyingDoubleDots(group, index, numberOfDoubleDots) {\n let g = group;\n let ci = index;\n let dd = numberOfDoubleDots;\n while (dd > ci) {\n dd -= ci;\n g = g.parent;\n if (!g) {\n throw new ɵRuntimeError(4005 /* RuntimeErrorCode.INVALID_DOUBLE_DOTS */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Invalid number of \\'../\\'');\n }\n ci = g.segments.length;\n }\n return new Position(g, false, ci - dd);\n}\nfunction getOutlets(commands) {\n if (isCommandWithOutlets(commands[0])) {\n return commands[0].outlets;\n }\n return { [PRIMARY_OUTLET]: commands };\n}\nfunction updateSegmentGroup(segmentGroup, startIndex, commands) {\n if (!segmentGroup) {\n segmentGroup = new UrlSegmentGroup([], {});\n }\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return updateSegmentGroupChildren(segmentGroup, startIndex, commands);\n }\n const m = prefixedWith(segmentGroup, startIndex, commands);\n const slicedCommands = commands.slice(m.commandIndex);\n if (m.match && m.pathIndex < segmentGroup.segments.length) {\n const g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {});\n g.children[PRIMARY_OUTLET] =\n new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children);\n return updateSegmentGroupChildren(g, 0, slicedCommands);\n }\n else if (m.match && slicedCommands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n }\n else if (m.match && !segmentGroup.hasChildren()) {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n else if (m.match) {\n return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands);\n }\n else {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n}\nfunction updateSegmentGroupChildren(segmentGroup, startIndex, commands) {\n if (commands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n }\n else {\n const outlets = getOutlets(commands);\n const children = {};\n // If the set of commands applies to anything other than the primary outlet and the child\n // segment is an empty path primary segment on its own, we want to apply the commands to the\n // empty child path rather than here. The outcome is that the empty primary child is effectively\n // removed from the final output UrlTree. Imagine the following config:\n //\n // {path: '', children: [{path: '**', outlet: 'popup'}]}.\n //\n // Navigation to /(popup:a) will activate the child outlet correctly Given a follow-up\n // navigation with commands\n // ['/', {outlets: {'popup': 'b'}}], we _would not_ want to apply the outlet commands to the\n // root segment because that would result in\n // //(popup:a)(popup:b) since the outlet command got applied one level above where it appears in\n // the `ActivatedRoute` rather than updating the existing one.\n //\n // Because empty paths do not appear in the URL segments and the fact that the segments used in\n // the output `UrlTree` are squashed to eliminate these empty paths where possible\n // https://github.com/angular/angular/blob/13f10de40e25c6900ca55bd83b36bd533dacfa9e/packages/router/src/url_tree.ts#L755\n // it can be hard to determine what is the right thing to do when applying commands to a\n // `UrlSegmentGroup` that is created from an \"unsquashed\"/expanded `ActivatedRoute` tree.\n // This code effectively \"squashes\" empty path primary routes when they have no siblings on\n // the same level of the tree.\n if (Object.keys(outlets).some(o => o !== PRIMARY_OUTLET) &&\n segmentGroup.children[PRIMARY_OUTLET] && segmentGroup.numberOfChildren === 1 &&\n segmentGroup.children[PRIMARY_OUTLET].segments.length === 0) {\n const childrenOfEmptyChild = updateSegmentGroupChildren(segmentGroup.children[PRIMARY_OUTLET], startIndex, commands);\n return new UrlSegmentGroup(segmentGroup.segments, childrenOfEmptyChild.children);\n }\n Object.entries(outlets).forEach(([outlet, commands]) => {\n if (typeof commands === 'string') {\n commands = [commands];\n }\n if (commands !== null) {\n children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands);\n }\n });\n Object.entries(segmentGroup.children).forEach(([childOutlet, child]) => {\n if (outlets[childOutlet] === undefined) {\n children[childOutlet] = child;\n }\n });\n return new UrlSegmentGroup(segmentGroup.segments, children);\n }\n}\nfunction prefixedWith(segmentGroup, startIndex, commands) {\n let currentCommandIndex = 0;\n let currentPathIndex = startIndex;\n const noMatch = { match: false, pathIndex: 0, commandIndex: 0 };\n while (currentPathIndex < segmentGroup.segments.length) {\n if (currentCommandIndex >= commands.length)\n return noMatch;\n const path = segmentGroup.segments[currentPathIndex];\n const command = commands[currentCommandIndex];\n // Do not try to consume command as part of the prefixing if it has outlets because it can\n // contain outlets other than the one being processed. Consuming the outlets command would\n // result in other outlets being ignored.\n if (isCommandWithOutlets(command)) {\n break;\n }\n const curr = `${command}`;\n const next = currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null;\n if (currentPathIndex > 0 && curr === undefined)\n break;\n if (curr && next && (typeof next === 'object') && next.outlets === undefined) {\n if (!compare(curr, next, path))\n return noMatch;\n currentCommandIndex += 2;\n }\n else {\n if (!compare(curr, {}, path))\n return noMatch;\n currentCommandIndex++;\n }\n currentPathIndex++;\n }\n return { match: true, pathIndex: currentPathIndex, commandIndex: currentCommandIndex };\n}\nfunction createNewSegmentGroup(segmentGroup, startIndex, commands) {\n const paths = segmentGroup.segments.slice(0, startIndex);\n let i = 0;\n while (i < commands.length) {\n const command = commands[i];\n if (isCommandWithOutlets(command)) {\n const children = createNewSegmentChildren(command.outlets);\n return new UrlSegmentGroup(paths, children);\n }\n // if we start with an object literal, we need to reuse the path part from the segment\n if (i === 0 && isMatrixParams(commands[0])) {\n const p = segmentGroup.segments[startIndex];\n paths.push(new UrlSegment(p.path, stringify(commands[0])));\n i++;\n continue;\n }\n const curr = isCommandWithOutlets(command) ? command.outlets[PRIMARY_OUTLET] : `${command}`;\n const next = (i < commands.length - 1) ? commands[i + 1] : null;\n if (curr && next && isMatrixParams(next)) {\n paths.push(new UrlSegment(curr, stringify(next)));\n i += 2;\n }\n else {\n paths.push(new UrlSegment(curr, {}));\n i++;\n }\n }\n return new UrlSegmentGroup(paths, {});\n}\nfunction createNewSegmentChildren(outlets) {\n const children = {};\n Object.entries(outlets).forEach(([outlet, commands]) => {\n if (typeof commands === 'string') {\n commands = [commands];\n }\n if (commands !== null) {\n children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands);\n }\n });\n return children;\n}\nfunction stringify(params) {\n const res = {};\n Object.entries(params).forEach(([k, v]) => res[k] = `${v}`);\n return res;\n}\nfunction compare(path, params, segment) {\n return path == segment.path && shallowEqual(params, segment.parameters);\n}\n\nconst IMPERATIVE_NAVIGATION = 'imperative';\n/**\n * Base for events the router goes through, as opposed to events tied to a specific\n * route. Fired one time for any given navigation.\n *\n * The following code shows how a class subscribes to router events.\n *\n * ```ts\n * import {Event, RouterEvent, Router} from '@angular/router';\n *\n * class MyService {\n * constructor(public router: Router) {\n * router.events.pipe(\n * filter((e: Event | RouterEvent): e is RouterEvent => e instanceof RouterEvent)\n * ).subscribe((e: RouterEvent) => {\n * // Do something\n * });\n * }\n * }\n * ```\n *\n * @see {@link Event}\n * @see [Router events summary](guide/router-reference#router-events)\n * @publicApi\n */\nclass RouterEvent {\n constructor(\n /** A unique ID that the router assigns to every router navigation. */\n id, \n /** The URL that is the destination for this navigation. */\n url) {\n this.id = id;\n this.url = url;\n }\n}\n/**\n * An event triggered when a navigation starts.\n *\n * @publicApi\n */\nclass NavigationStart extends RouterEvent {\n constructor(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n navigationTrigger = 'imperative', \n /** @docsNotRequired */\n restoredState = null) {\n super(id, url);\n this.type = 0 /* EventType.NavigationStart */;\n this.navigationTrigger = navigationTrigger;\n this.restoredState = restoredState;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationStart(id: ${this.id}, url: '${this.url}')`;\n }\n}\n/**\n * An event triggered when a navigation ends successfully.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationCancel}\n * @see {@link NavigationError}\n *\n * @publicApi\n */\nclass NavigationEnd extends RouterEvent {\n constructor(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.type = 1 /* EventType.NavigationEnd */;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`;\n }\n}\n/**\n * An event triggered when a navigation is canceled, directly or indirectly.\n * This can happen for several reasons including when a route guard\n * returns `false` or initiates a redirect by returning a `UrlTree`.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationEnd}\n * @see {@link NavigationError}\n *\n * @publicApi\n */\nclass NavigationCancel extends RouterEvent {\n constructor(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /**\n * A description of why the navigation was cancelled. For debug purposes only. Use `code`\n * instead for a stable cancellation reason that can be used in production.\n */\n reason, \n /**\n * A code to indicate why the navigation was canceled. This cancellation code is stable for\n * the reason and can be relied on whereas the `reason` string could change and should not be\n * used in production.\n */\n code) {\n super(id, url);\n this.reason = reason;\n this.code = code;\n this.type = 2 /* EventType.NavigationCancel */;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationCancel(id: ${this.id}, url: '${this.url}')`;\n }\n}\n/**\n * An event triggered when a navigation is skipped.\n * This can happen for a couple reasons including onSameUrlHandling\n * is set to `ignore` and the navigation URL is not different than the\n * current state.\n *\n * @publicApi\n */\nclass NavigationSkipped extends RouterEvent {\n constructor(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /**\n * A description of why the navigation was skipped. For debug purposes only. Use `code`\n * instead for a stable skipped reason that can be used in production.\n */\n reason, \n /**\n * A code to indicate why the navigation was skipped. This code is stable for\n * the reason and can be relied on whereas the `reason` string could change and should not be\n * used in production.\n */\n code) {\n super(id, url);\n this.reason = reason;\n this.code = code;\n this.type = 16 /* EventType.NavigationSkipped */;\n }\n}\n/**\n * An event triggered when a navigation fails due to an unexpected error.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationEnd}\n * @see {@link NavigationCancel}\n *\n * @publicApi\n */\nclass NavigationError extends RouterEvent {\n constructor(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n error, \n /**\n * The target of the navigation when the error occurred.\n *\n * Note that this can be `undefined` because an error could have occurred before the\n * `RouterStateSnapshot` was created for the navigation.\n */\n target) {\n super(id, url);\n this.error = error;\n this.target = target;\n this.type = 3 /* EventType.NavigationError */;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`;\n }\n}\n/**\n * An event triggered when routes are recognized.\n *\n * @publicApi\n */\nclass RoutesRecognized extends RouterEvent {\n constructor(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects, \n /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 4 /* EventType.RoutesRecognized */;\n }\n /** @docsNotRequired */\n toString() {\n return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the start of the Guard phase of routing.\n *\n * @see {@link GuardsCheckEnd}\n *\n * @publicApi\n */\nclass GuardsCheckStart extends RouterEvent {\n constructor(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects, \n /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 7 /* EventType.GuardsCheckStart */;\n }\n toString() {\n return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the end of the Guard phase of routing.\n *\n * @see {@link GuardsCheckStart}\n *\n * @publicApi\n */\nclass GuardsCheckEnd extends RouterEvent {\n constructor(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects, \n /** @docsNotRequired */\n state, \n /** @docsNotRequired */\n shouldActivate) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.shouldActivate = shouldActivate;\n this.type = 8 /* EventType.GuardsCheckEnd */;\n }\n toString() {\n return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`;\n }\n}\n/**\n * An event triggered at the start of the Resolve phase of routing.\n *\n * Runs in the \"resolve\" phase whether or not there is anything to resolve.\n * In future, may change to only run when there are things to be resolved.\n *\n * @see {@link ResolveEnd}\n *\n * @publicApi\n */\nclass ResolveStart extends RouterEvent {\n constructor(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects, \n /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 5 /* EventType.ResolveStart */;\n }\n toString() {\n return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the end of the Resolve phase of routing.\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ResolveEnd extends RouterEvent {\n constructor(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects, \n /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 6 /* EventType.ResolveEnd */;\n }\n toString() {\n return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered before lazy loading a route configuration.\n *\n * @see {@link RouteConfigLoadEnd}\n *\n * @publicApi\n */\nclass RouteConfigLoadStart {\n constructor(\n /** @docsNotRequired */\n route) {\n this.route = route;\n this.type = 9 /* EventType.RouteConfigLoadStart */;\n }\n toString() {\n return `RouteConfigLoadStart(path: ${this.route.path})`;\n }\n}\n/**\n * An event triggered when a route has been lazy loaded.\n *\n * @see {@link RouteConfigLoadStart}\n *\n * @publicApi\n */\nclass RouteConfigLoadEnd {\n constructor(\n /** @docsNotRequired */\n route) {\n this.route = route;\n this.type = 10 /* EventType.RouteConfigLoadEnd */;\n }\n toString() {\n return `RouteConfigLoadEnd(path: ${this.route.path})`;\n }\n}\n/**\n * An event triggered at the start of the child-activation\n * part of the Resolve phase of routing.\n * @see {@link ChildActivationEnd}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ChildActivationStart {\n constructor(\n /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 11 /* EventType.ChildActivationStart */;\n }\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationStart(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the end of the child-activation part\n * of the Resolve phase of routing.\n * @see {@link ChildActivationStart}\n * @see {@link ResolveStart}\n * @publicApi\n */\nclass ChildActivationEnd {\n constructor(\n /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 12 /* EventType.ChildActivationEnd */;\n }\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationEnd(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the start of the activation part\n * of the Resolve phase of routing.\n * @see {@link ActivationEnd}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ActivationStart {\n constructor(\n /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 13 /* EventType.ActivationStart */;\n }\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationStart(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the end of the activation part\n * of the Resolve phase of routing.\n * @see {@link ActivationStart}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ActivationEnd {\n constructor(\n /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 14 /* EventType.ActivationEnd */;\n }\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationEnd(path: '${path}')`;\n }\n}\n/**\n * An event triggered by scrolling.\n *\n * @publicApi\n */\nclass Scroll {\n constructor(\n /** @docsNotRequired */\n routerEvent, \n /** @docsNotRequired */\n position, \n /** @docsNotRequired */\n anchor) {\n this.routerEvent = routerEvent;\n this.position = position;\n this.anchor = anchor;\n this.type = 15 /* EventType.Scroll */;\n }\n toString() {\n const pos = this.position ? `${this.position[0]}, ${this.position[1]}` : null;\n return `Scroll(anchor: '${this.anchor}', position: '${pos}')`;\n }\n}\nclass BeforeActivateRoutes {\n}\nclass RedirectRequest {\n constructor(url) {\n this.url = url;\n }\n}\nfunction stringifyEvent(routerEvent) {\n switch (routerEvent.type) {\n case 14 /* EventType.ActivationEnd */:\n return `ActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 13 /* EventType.ActivationStart */:\n return `ActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 12 /* EventType.ChildActivationEnd */:\n return `ChildActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 11 /* EventType.ChildActivationStart */:\n return `ChildActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 8 /* EventType.GuardsCheckEnd */:\n return `GuardsCheckEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state}, shouldActivate: ${routerEvent.shouldActivate})`;\n case 7 /* EventType.GuardsCheckStart */:\n return `GuardsCheckStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 2 /* EventType.NavigationCancel */:\n return `NavigationCancel(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case 16 /* EventType.NavigationSkipped */:\n return `NavigationSkipped(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case 1 /* EventType.NavigationEnd */:\n return `NavigationEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}')`;\n case 3 /* EventType.NavigationError */:\n return `NavigationError(id: ${routerEvent.id}, url: '${routerEvent.url}', error: ${routerEvent.error})`;\n case 0 /* EventType.NavigationStart */:\n return `NavigationStart(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case 6 /* EventType.ResolveEnd */:\n return `ResolveEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 5 /* EventType.ResolveStart */:\n return `ResolveStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 10 /* EventType.RouteConfigLoadEnd */:\n return `RouteConfigLoadEnd(path: ${routerEvent.route.path})`;\n case 9 /* EventType.RouteConfigLoadStart */:\n return `RouteConfigLoadStart(path: ${routerEvent.route.path})`;\n case 4 /* EventType.RoutesRecognized */:\n return `RoutesRecognized(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 15 /* EventType.Scroll */:\n const pos = routerEvent.position ? `${routerEvent.position[0]}, ${routerEvent.position[1]}` : null;\n return `Scroll(anchor: '${routerEvent.anchor}', position: '${pos}')`;\n }\n}\n\n/**\n * Store contextual information about a `RouterOutlet`\n *\n * @publicApi\n */\nclass OutletContext {\n constructor() {\n this.outlet = null;\n this.route = null;\n this.injector = null;\n this.children = new ChildrenOutletContexts();\n this.attachRef = null;\n }\n}\n/**\n * Store contextual information about the children (= nested) `RouterOutlet`\n *\n * @publicApi\n */\nclass ChildrenOutletContexts {\n constructor() {\n // contexts for child outlets, by name.\n this.contexts = new Map();\n }\n /** Called when a `RouterOutlet` directive is instantiated */\n onChildOutletCreated(childName, outlet) {\n const context = this.getOrCreateContext(childName);\n context.outlet = outlet;\n this.contexts.set(childName, context);\n }\n /**\n * Called when a `RouterOutlet` directive is destroyed.\n * We need to keep the context as the outlet could be destroyed inside a NgIf and might be\n * re-created later.\n */\n onChildOutletDestroyed(childName) {\n const context = this.getContext(childName);\n if (context) {\n context.outlet = null;\n context.attachRef = null;\n }\n }\n /**\n * Called when the corresponding route is deactivated during navigation.\n * Because the component get destroyed, all children outlet are destroyed.\n */\n onOutletDeactivated() {\n const contexts = this.contexts;\n this.contexts = new Map();\n return contexts;\n }\n onOutletReAttached(contexts) {\n this.contexts = contexts;\n }\n getOrCreateContext(childName) {\n let context = this.getContext(childName);\n if (!context) {\n context = new OutletContext();\n this.contexts.set(childName, context);\n }\n return context;\n }\n getContext(childName) {\n return this.contexts.get(childName) || null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ChildrenOutletContexts, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass Tree {\n constructor(root) {\n this._root = root;\n }\n get root() {\n return this._root.value;\n }\n /**\n * @internal\n */\n parent(t) {\n const p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n /**\n * @internal\n */\n children(t) {\n const n = findNode(t, this._root);\n return n ? n.children.map(t => t.value) : [];\n }\n /**\n * @internal\n */\n firstChild(t) {\n const n = findNode(t, this._root);\n return n && n.children.length > 0 ? n.children[0].value : null;\n }\n /**\n * @internal\n */\n siblings(t) {\n const p = findPath(t, this._root);\n if (p.length < 2)\n return [];\n const c = p[p.length - 2].children.map(c => c.value);\n return c.filter(cc => cc !== t);\n }\n /**\n * @internal\n */\n pathFromRoot(t) {\n return findPath(t, this._root).map(s => s.value);\n }\n}\n// DFS for the node matching the value\nfunction findNode(value, node) {\n if (value === node.value)\n return node;\n for (const child of node.children) {\n const node = findNode(value, child);\n if (node)\n return node;\n }\n return null;\n}\n// Return the path to the node with the given value using DFS\nfunction findPath(value, node) {\n if (value === node.value)\n return [node];\n for (const child of node.children) {\n const path = findPath(value, child);\n if (path.length) {\n path.unshift(node);\n return path;\n }\n }\n return [];\n}\nclass TreeNode {\n constructor(value, children) {\n this.value = value;\n this.children = children;\n }\n toString() {\n return `TreeNode(${this.value})`;\n }\n}\n// Return the list of T indexed by outlet name\nfunction nodeChildrenAsMap(node) {\n const map = {};\n if (node) {\n node.children.forEach(child => map[child.value.outlet] = child);\n }\n return map;\n}\n\n/**\n * Represents the state of the router as a tree of activated routes.\n *\n * @usageNotes\n *\n * Every node in the route tree is an `ActivatedRoute` instance\n * that knows about the \"consumed\" URL segments, the extracted parameters,\n * and the resolved data.\n * Use the `ActivatedRoute` properties to traverse the tree from any node.\n *\n * The following fragment shows how a component gets the root node\n * of the current state to establish its own route tree:\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const root: ActivatedRoute = state.root;\n * const child = root.firstChild;\n * const id: Observable<string> = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * @see {@link ActivatedRoute}\n * @see [Getting route information](guide/router#getting-route-information)\n *\n * @publicApi\n */\nclass RouterState extends Tree {\n /** @internal */\n constructor(root, \n /** The current snapshot of the router state */\n snapshot) {\n super(root);\n this.snapshot = snapshot;\n setRouterState(this, root);\n }\n toString() {\n return this.snapshot.toString();\n }\n}\nfunction createEmptyState(urlTree, rootComponent) {\n const snapshot = createEmptyStateSnapshot(urlTree, rootComponent);\n const emptyUrl = new BehaviorSubject([new UrlSegment('', {})]);\n const emptyParams = new BehaviorSubject({});\n const emptyData = new BehaviorSubject({});\n const emptyQueryParams = new BehaviorSubject({});\n const fragment = new BehaviorSubject('');\n const activated = new ActivatedRoute(emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, snapshot.root);\n activated.snapshot = snapshot.root;\n return new RouterState(new TreeNode(activated, []), snapshot);\n}\nfunction createEmptyStateSnapshot(urlTree, rootComponent) {\n const emptyParams = {};\n const emptyData = {};\n const emptyQueryParams = {};\n const fragment = '';\n const activated = new ActivatedRouteSnapshot([], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null, {});\n return new RouterStateSnapshot('', new TreeNode(activated, []));\n}\n/**\n * Provides access to information about a route associated with a component\n * that is loaded in an outlet.\n * Use to traverse the `RouterState` tree and extract information from nodes.\n *\n * The following example shows how to construct a component using information from a\n * currently activated route.\n *\n * Note: the observables in this class only emit when the current and previous values differ based\n * on shallow equality. For example, changing deeply nested properties in resolved `data` will not\n * cause the `ActivatedRoute.data` `Observable` to emit a new value.\n *\n * {@example router/activated-route/module.ts region=\"activated-route\"\n * header=\"activated-route.component.ts\"}\n *\n * @see [Getting route information](guide/router#getting-route-information)\n *\n * @publicApi\n */\nclass ActivatedRoute {\n /** @internal */\n constructor(\n /** @internal */\n urlSubject, \n /** @internal */\n paramsSubject, \n /** @internal */\n queryParamsSubject, \n /** @internal */\n fragmentSubject, \n /** @internal */\n dataSubject, \n /** The outlet name of the route, a constant. */\n outlet, \n /** The component of the route, a constant. */\n component, futureSnapshot) {\n this.urlSubject = urlSubject;\n this.paramsSubject = paramsSubject;\n this.queryParamsSubject = queryParamsSubject;\n this.fragmentSubject = fragmentSubject;\n this.dataSubject = dataSubject;\n this.outlet = outlet;\n this.component = component;\n this._futureSnapshot = futureSnapshot;\n this.title = this.dataSubject?.pipe(map((d) => d[RouteTitleKey])) ?? of(undefined);\n // TODO(atscott): Verify that these can be changed to `.asObservable()` with TGP.\n this.url = urlSubject;\n this.params = paramsSubject;\n this.queryParams = queryParamsSubject;\n this.fragment = fragmentSubject;\n this.data = dataSubject;\n }\n /** The configuration used to match this route. */\n get routeConfig() {\n return this._futureSnapshot.routeConfig;\n }\n /** The root of the router state. */\n get root() {\n return this._routerState.root;\n }\n /** The parent of this route in the router state tree. */\n get parent() {\n return this._routerState.parent(this);\n }\n /** The first child of this route in the router state tree. */\n get firstChild() {\n return this._routerState.firstChild(this);\n }\n /** The children of this route in the router state tree. */\n get children() {\n return this._routerState.children(this);\n }\n /** The path from the root of the router state tree to this route. */\n get pathFromRoot() {\n return this._routerState.pathFromRoot(this);\n }\n /**\n * An Observable that contains a map of the required and optional parameters\n * specific to the route.\n * The map supports retrieving single and multiple values from the same parameter.\n */\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = this.params.pipe(map((p) => convertToParamMap(p)));\n }\n return this._paramMap;\n }\n /**\n * An Observable that contains a map of the query parameters available to all routes.\n * The map supports retrieving single and multiple values from the query parameter.\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap =\n this.queryParams.pipe(map((p) => convertToParamMap(p)));\n }\n return this._queryParamMap;\n }\n toString() {\n return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`;\n }\n}\n/**\n * Returns the inherited params, data, and resolve for a given route.\n * By default, this only inherits values up to the nearest path-less or component-less route.\n * @internal\n */\nfunction inheritedParamsDataResolve(route, paramsInheritanceStrategy = 'emptyOnly') {\n const pathFromRoot = route.pathFromRoot;\n let inheritingStartingFrom = 0;\n if (paramsInheritanceStrategy !== 'always') {\n inheritingStartingFrom = pathFromRoot.length - 1;\n while (inheritingStartingFrom >= 1) {\n const current = pathFromRoot[inheritingStartingFrom];\n const parent = pathFromRoot[inheritingStartingFrom - 1];\n // current route is an empty path => inherits its parent's params and data\n if (current.routeConfig && current.routeConfig.path === '') {\n inheritingStartingFrom--;\n // parent is componentless => current route should inherit its params and data\n }\n else if (!parent.component) {\n inheritingStartingFrom--;\n }\n else {\n break;\n }\n }\n }\n return flattenInherited(pathFromRoot.slice(inheritingStartingFrom));\n}\n/** @internal */\nfunction flattenInherited(pathFromRoot) {\n return pathFromRoot.reduce((res, curr) => {\n const params = { ...res.params, ...curr.params };\n const data = { ...res.data, ...curr.data };\n const resolve = { ...curr.data, ...res.resolve, ...curr.routeConfig?.data, ...curr._resolvedData };\n return { params, data, resolve };\n }, { params: {}, data: {}, resolve: {} });\n}\n/**\n * @description\n *\n * Contains the information about a route associated with a component loaded in an\n * outlet at a particular moment in time. ActivatedRouteSnapshot can also be used to\n * traverse the router state tree.\n *\n * The following example initializes a component with route information extracted\n * from the snapshot of the root node at the time of creation.\n *\n * ```\n * @Component({templateUrl:'./my-component.html'})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: string = route.snapshot.params.id;\n * const url: string = route.snapshot.url.join('');\n * const user = route.snapshot.data.user;\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass ActivatedRouteSnapshot {\n /** The resolved route title */\n get title() {\n // Note: This _must_ be a getter because the data is mutated in the resolvers. Title will not be\n // available at the time of class instantiation.\n return this.data?.[RouteTitleKey];\n }\n /** @internal */\n constructor(\n /** The URL segments matched by this route */\n url, \n /**\n * The matrix parameters scoped to this route.\n *\n * You can compute all params (or data) in the router state or to get params outside\n * of an activated component by traversing the `RouterState` tree as in the following\n * example:\n * ```\n * collectRouteParams(router: Router) {\n * let params = {};\n * let stack: ActivatedRouteSnapshot[] = [router.routerState.snapshot.root];\n * while (stack.length > 0) {\n * const route = stack.pop()!;\n * params = {...params, ...route.params};\n * stack.push(...route.children);\n * }\n * return params;\n * }\n * ```\n */\n params, \n /** The query parameters shared by all the routes */\n queryParams, \n /** The URL fragment shared by all the routes */\n fragment, \n /** The static and resolved data of this route */\n data, \n /** The outlet name of the route */\n outlet, \n /** The component of the route */\n component, routeConfig, resolve) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this.routeConfig = routeConfig;\n this._resolve = resolve;\n }\n /** The root of the router state */\n get root() {\n return this._routerState.root;\n }\n /** The parent of this route in the router state tree */\n get parent() {\n return this._routerState.parent(this);\n }\n /** The first child of this route in the router state tree */\n get firstChild() {\n return this._routerState.firstChild(this);\n }\n /** The children of this route in the router state tree */\n get children() {\n return this._routerState.children(this);\n }\n /** The path from the root of the router state tree to this route */\n get pathFromRoot() {\n return this._routerState.pathFromRoot(this);\n }\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = convertToParamMap(this.params);\n }\n return this._paramMap;\n }\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n toString() {\n const url = this.url.map(segment => segment.toString()).join('/');\n const matched = this.routeConfig ? this.routeConfig.path : '';\n return `Route(url:'${url}', path:'${matched}')`;\n }\n}\n/**\n * @description\n *\n * Represents the state of the router at a moment in time.\n *\n * This is a tree of activated route snapshots. Every node in this tree knows about\n * the \"consumed\" URL segments, the extracted parameters, and the resolved data.\n *\n * The following example shows how a component is initialized with information\n * from the snapshot of the root node's state at the time of creation.\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const snapshot: RouterStateSnapshot = state.snapshot;\n * const root: ActivatedRouteSnapshot = snapshot.root;\n * const child = root.firstChild;\n * const id: Observable<string> = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass RouterStateSnapshot extends Tree {\n /** @internal */\n constructor(\n /** The url from which this snapshot was created */\n url, root) {\n super(root);\n this.url = url;\n setRouterState(this, root);\n }\n toString() {\n return serializeNode(this._root);\n }\n}\nfunction setRouterState(state, node) {\n node.value._routerState = state;\n node.children.forEach(c => setRouterState(state, c));\n}\nfunction serializeNode(node) {\n const c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(', ')} } ` : '';\n return `${node.value}${c}`;\n}\n/**\n * The expectation is that the activate route is created with the right set of parameters.\n * So we push new values into the observables only when they are not the initial values.\n * And we detect that by checking if the snapshot field is set.\n */\nfunction advanceActivatedRoute(route) {\n if (route.snapshot) {\n const currentSnapshot = route.snapshot;\n const nextSnapshot = route._futureSnapshot;\n route.snapshot = nextSnapshot;\n if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) {\n route.queryParamsSubject.next(nextSnapshot.queryParams);\n }\n if (currentSnapshot.fragment !== nextSnapshot.fragment) {\n route.fragmentSubject.next(nextSnapshot.fragment);\n }\n if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) {\n route.paramsSubject.next(nextSnapshot.params);\n }\n if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) {\n route.urlSubject.next(nextSnapshot.url);\n }\n if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) {\n route.dataSubject.next(nextSnapshot.data);\n }\n }\n else {\n route.snapshot = route._futureSnapshot;\n // this is for resolved data\n route.dataSubject.next(route._futureSnapshot.data);\n }\n}\nfunction equalParamsAndUrlSegments(a, b) {\n const equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url);\n const parentsMismatch = !a.parent !== !b.parent;\n return equalUrlParams && !parentsMismatch &&\n (!a.parent || equalParamsAndUrlSegments(a.parent, b.parent));\n}\n\n/**\n * @description\n *\n * Acts as a placeholder that Angular dynamically fills based on the current router state.\n *\n * Each outlet can have a unique name, determined by the optional `name` attribute.\n * The name cannot be set or changed dynamically. If not set, default value is \"primary\".\n *\n * ```\n * <router-outlet></router-outlet>\n * <router-outlet name='left'></router-outlet>\n * <router-outlet name='right'></router-outlet>\n * ```\n *\n * Named outlets can be the targets of secondary routes.\n * The `Route` object for a secondary route has an `outlet` property to identify the target outlet:\n *\n * `{path: <base-path>, component: <component>, outlet: <target_outlet_name>}`\n *\n * Using named outlets and secondary routes, you can target multiple outlets in\n * the same `RouterLink` directive.\n *\n * The router keeps track of separate branches in a navigation tree for each named outlet and\n * generates a representation of that tree in the URL.\n * The URL for a secondary route uses the following syntax to specify both the primary and secondary\n * routes at the same time:\n *\n * `http://base-path/primary-route-path(outlet-name:route-path)`\n *\n * A router outlet emits an activate event when a new component is instantiated,\n * deactivate event when a component is destroyed.\n * An attached event emits when the `RouteReuseStrategy` instructs the outlet to reattach the\n * subtree, and the detached event emits when the `RouteReuseStrategy` instructs the outlet to\n * detach the subtree.\n *\n * ```\n * <router-outlet\n * (activate)='onActivate($event)'\n * (deactivate)='onDeactivate($event)'\n * (attach)='onAttach($event)'\n * (detach)='onDetach($event)'></router-outlet>\n * ```\n *\n * @see [Routing tutorial](guide/router-tutorial-toh#named-outlets \"Example of a named\n * outlet and secondary route configuration\").\n * @see {@link RouterLink}\n * @see {@link Route}\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterOutlet {\n constructor() {\n this.activated = null;\n this._activatedRoute = null;\n /**\n * The name of the outlet\n *\n * @see [named outlets](guide/router-tutorial-toh#displaying-multiple-routes-in-named-outlets)\n */\n this.name = PRIMARY_OUTLET;\n this.activateEvents = new EventEmitter();\n this.deactivateEvents = new EventEmitter();\n /**\n * Emits an attached component instance when the `RouteReuseStrategy` instructs to re-attach a\n * previously detached subtree.\n **/\n this.attachEvents = new EventEmitter();\n /**\n * Emits a detached component instance when the `RouteReuseStrategy` instructs to detach the\n * subtree.\n */\n this.detachEvents = new EventEmitter();\n this.parentContexts = inject(ChildrenOutletContexts);\n this.location = inject(ViewContainerRef);\n this.changeDetector = inject(ChangeDetectorRef);\n this.environmentInjector = inject(EnvironmentInjector);\n this.inputBinder = inject(INPUT_BINDER, { optional: true });\n /** @nodoc */\n this.supportsBindingToComponentInputs = true;\n }\n /** @internal */\n get activatedComponentRef() {\n return this.activated;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (changes['name']) {\n const { firstChange, previousValue } = changes['name'];\n if (firstChange) {\n // The first change is handled by ngOnInit. Because ngOnChanges doesn't get called when no\n // input is set at all, we need to centrally handle the first change there.\n return;\n }\n // unregister with the old name\n if (this.isTrackedInParentContexts(previousValue)) {\n this.deactivate();\n this.parentContexts.onChildOutletDestroyed(previousValue);\n }\n // register the new name\n this.initializeOutletWithName();\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n // Ensure that the registered outlet is this one before removing it on the context.\n if (this.isTrackedInParentContexts(this.name)) {\n this.parentContexts.onChildOutletDestroyed(this.name);\n }\n this.inputBinder?.unsubscribeFromRouteData(this);\n }\n isTrackedInParentContexts(outletName) {\n return this.parentContexts.getContext(outletName)?.outlet === this;\n }\n /** @nodoc */\n ngOnInit() {\n this.initializeOutletWithName();\n }\n initializeOutletWithName() {\n this.parentContexts.onChildOutletCreated(this.name, this);\n if (this.activated) {\n return;\n }\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n const context = this.parentContexts.getContext(this.name);\n if (context?.route) {\n if (context.attachRef) {\n // `attachRef` is populated when there is an existing component to mount\n this.attach(context.attachRef, context.route);\n }\n else {\n // otherwise the component defined in the configuration is created\n this.activateWith(context.route, context.injector);\n }\n }\n }\n get isActivated() {\n return !!this.activated;\n }\n /**\n * @returns The currently activated component instance.\n * @throws An error if the outlet is not activated.\n */\n get component() {\n if (!this.activated)\n throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n return this.activated.instance;\n }\n get activatedRoute() {\n if (!this.activated)\n throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n return this._activatedRoute;\n }\n get activatedRouteData() {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n */\n detach() {\n if (!this.activated)\n throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n this.location.detach();\n const cmp = this.activated;\n this.activated = null;\n this._activatedRoute = null;\n this.detachEvents.emit(cmp.instance);\n return cmp;\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n */\n attach(ref, activatedRoute) {\n this.activated = ref;\n this._activatedRoute = activatedRoute;\n this.location.insert(ref.hostView);\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n this.attachEvents.emit(ref.instance);\n }\n deactivate() {\n if (this.activated) {\n const c = this.component;\n this.activated.destroy();\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n }\n activateWith(activatedRoute, environmentInjector) {\n if (this.isActivated) {\n throw new ɵRuntimeError(4013 /* RuntimeErrorCode.OUTLET_ALREADY_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n const location = this.location;\n const snapshot = activatedRoute.snapshot;\n const component = snapshot.component;\n const childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n const injector = new OutletInjector(activatedRoute, childContexts, location.injector);\n this.activated = location.createComponent(component, {\n index: location.length,\n injector,\n environmentInjector: environmentInjector ?? this.environmentInjector\n });\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n this.changeDetector.markForCheck();\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n this.activateEvents.emit(this.activated.instance);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: RouterOutlet, isStandalone: true, selector: \"router-outlet\", inputs: { name: \"name\" }, outputs: { activateEvents: \"activate\", deactivateEvents: \"deactivate\", attachEvents: \"attach\", detachEvents: \"detach\" }, exportAs: [\"outlet\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: 'router-outlet',\n exportAs: 'outlet',\n standalone: true,\n }]\n }], propDecorators: { name: [{\n type: Input\n }], activateEvents: [{\n type: Output,\n args: ['activate']\n }], deactivateEvents: [{\n type: Output,\n args: ['deactivate']\n }], attachEvents: [{\n type: Output,\n args: ['attach']\n }], detachEvents: [{\n type: Output,\n args: ['detach']\n }] } });\nclass OutletInjector {\n constructor(route, childContexts, parent) {\n this.route = route;\n this.childContexts = childContexts;\n this.parent = parent;\n }\n get(token, notFoundValue) {\n if (token === ActivatedRoute) {\n return this.route;\n }\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n return this.parent.get(token, notFoundValue);\n }\n}\nconst INPUT_BINDER = new InjectionToken('');\n/**\n * Injectable used as a tree-shakable provider for opting in to binding router data to component\n * inputs.\n *\n * The RouterOutlet registers itself with this service when an `ActivatedRoute` is attached or\n * activated. When this happens, the service subscribes to the `ActivatedRoute` observables (params,\n * queryParams, data) and sets the inputs of the component using `ComponentRef.setInput`.\n * Importantly, when an input does not have an item in the route data with a matching key, this\n * input is set to `undefined`. If it were not done this way, the previous information would be\n * retained if the data got removed from the route (i.e. if a query parameter is removed).\n *\n * The `RouterOutlet` should unregister itself when destroyed via `unsubscribeFromRouteData` so that\n * the subscriptions are cleaned up.\n */\nclass RoutedComponentInputBinder {\n constructor() {\n this.outletDataSubscriptions = new Map;\n }\n bindActivatedRouteToOutletComponent(outlet) {\n this.unsubscribeFromRouteData(outlet);\n this.subscribeToRouteData(outlet);\n }\n unsubscribeFromRouteData(outlet) {\n this.outletDataSubscriptions.get(outlet)?.unsubscribe();\n this.outletDataSubscriptions.delete(outlet);\n }\n subscribeToRouteData(outlet) {\n const { activatedRoute } = outlet;\n const dataSubscription = combineLatest([\n activatedRoute.queryParams,\n activatedRoute.params,\n activatedRoute.data,\n ])\n .pipe(switchMap(([queryParams, params, data], index) => {\n data = { ...queryParams, ...params, ...data };\n // Get the first result from the data subscription synchronously so it's available to\n // the component as soon as possible (and doesn't require a second change detection).\n if (index === 0) {\n return of(data);\n }\n // Promise.resolve is used to avoid synchronously writing the wrong data when\n // two of the Observables in the `combineLatest` stream emit one after\n // another.\n return Promise.resolve(data);\n }))\n .subscribe(data => {\n // Outlet may have been deactivated or changed names to be associated with a different\n // route\n if (!outlet.isActivated || !outlet.activatedComponentRef ||\n outlet.activatedRoute !== activatedRoute || activatedRoute.component === null) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n const mirror = reflectComponentType(activatedRoute.component);\n if (!mirror) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n for (const { templateName } of mirror.inputs) {\n outlet.activatedComponentRef.setInput(templateName, data[templateName]);\n }\n });\n this.outletDataSubscriptions.set(outlet, dataSubscription);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RoutedComponentInputBinder }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{\n type: Injectable\n }] });\n\nfunction createRouterState(routeReuseStrategy, curr, prevState) {\n const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);\n return new RouterState(root, curr);\n}\nfunction createNode(routeReuseStrategy, curr, prevState) {\n // reuse an activated route that is currently displayed on the screen\n if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {\n const value = prevState.value;\n value._futureSnapshot = curr.value;\n const children = createOrReuseChildren(routeReuseStrategy, curr, prevState);\n return new TreeNode(value, children);\n }\n else {\n if (routeReuseStrategy.shouldAttach(curr.value)) {\n // retrieve an activated route that is used to be displayed, but is not currently displayed\n const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value);\n if (detachedRouteHandle !== null) {\n const tree = detachedRouteHandle.route;\n tree.value._futureSnapshot = curr.value;\n tree.children = curr.children.map(c => createNode(routeReuseStrategy, c));\n return tree;\n }\n }\n const value = createActivatedRoute(curr.value);\n const children = curr.children.map(c => createNode(routeReuseStrategy, c));\n return new TreeNode(value, children);\n }\n}\nfunction createOrReuseChildren(routeReuseStrategy, curr, prevState) {\n return curr.children.map(child => {\n for (const p of prevState.children) {\n if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) {\n return createNode(routeReuseStrategy, child, p);\n }\n }\n return createNode(routeReuseStrategy, child);\n });\n}\nfunction createActivatedRoute(c) {\n return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c);\n}\n\nconst NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';\nfunction redirectingNavigationError(urlSerializer, redirect) {\n const { redirectTo, navigationBehaviorOptions } = isUrlTree(redirect) ? { redirectTo: redirect, navigationBehaviorOptions: undefined } : redirect;\n const error = navigationCancelingError(ngDevMode && `Redirecting to \"${urlSerializer.serialize(redirectTo)}\"`, 0 /* NavigationCancellationCode.Redirect */, redirect);\n error.url = redirectTo;\n error.navigationBehaviorOptions = navigationBehaviorOptions;\n return error;\n}\nfunction navigationCancelingError(message, code, redirectUrl) {\n const error = new Error('NavigationCancelingError: ' + (message || ''));\n error[NAVIGATION_CANCELING_ERROR] = true;\n error.cancellationCode = code;\n if (redirectUrl) {\n error.url = redirectUrl;\n }\n return error;\n}\nfunction isRedirectingNavigationCancelingError$1(error) {\n return isNavigationCancelingError$1(error) && isUrlTree(error.url);\n}\nfunction isNavigationCancelingError$1(error) {\n return error && error[NAVIGATION_CANCELING_ERROR];\n}\n\n/**\n * This component is used internally within the router to be a placeholder when an empty\n * router-outlet is needed. For example, with a config such as:\n *\n * `{path: 'parent', outlet: 'nav', children: [...]}`\n *\n * In order to render, there needs to be a component on this config, which will default\n * to this `EmptyOutletComponent`.\n */\nclass ɵEmptyOutletComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: ɵEmptyOutletComponent, isStandalone: true, selector: \"ng-component\", ngImport: i0, template: `<router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: \"directive\", type: RouterOutlet, selector: \"router-outlet\", inputs: [\"name\"], outputs: [\"activate\", \"deactivate\", \"attach\", \"detach\"], exportAs: [\"outlet\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{\n type: Component,\n args: [{\n template: `<router-outlet></router-outlet>`,\n imports: [RouterOutlet],\n standalone: true,\n }]\n }] });\n\n/**\n * Creates an `EnvironmentInjector` if the `Route` has providers and one does not already exist\n * and returns the injector. Otherwise, if the `Route` does not have `providers`, returns the\n * `currentInjector`.\n *\n * @param route The route that might have providers\n * @param currentInjector The parent injector of the `Route`\n */\nfunction getOrCreateRouteInjectorIfNeeded(route, currentInjector) {\n if (route.providers && !route._injector) {\n route._injector =\n createEnvironmentInjector(route.providers, currentInjector, `Route: ${route.path}`);\n }\n return route._injector ?? currentInjector;\n}\nfunction getLoadedRoutes(route) {\n return route._loadedRoutes;\n}\nfunction getLoadedInjector(route) {\n return route._loadedInjector;\n}\nfunction getLoadedComponent(route) {\n return route._loadedComponent;\n}\nfunction getProvidersInjector(route) {\n return route._injector;\n}\nfunction validateConfig(config, parentPath = '', requireStandaloneComponents = false) {\n // forEach doesn't iterate undefined values\n for (let i = 0; i < config.length; i++) {\n const route = config[i];\n const fullPath = getFullPath(parentPath, route);\n validateNode(route, fullPath, requireStandaloneComponents);\n }\n}\nfunction assertStandalone(fullPath, component) {\n if (component && ɵisNgModule(component)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. You are using 'loadComponent' with a module, ` +\n `but it must be used with standalone components. Use 'loadChildren' instead.`);\n }\n else if (component && !isStandalone(component)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. The component must be standalone.`);\n }\n}\nfunction validateNode(route, fullPath, requireStandaloneComponents) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!route) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `\n Invalid configuration of route '${fullPath}': Encountered undefined route.\n The reason might be an extra comma.\n\n Example:\n const routes: Routes = [\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n { path: 'dashboard', component: DashboardComponent },, << two commas\n { path: 'detail/:id', component: HeroDetailComponent }\n ];\n `);\n }\n if (Array.isArray(route)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': Array cannot be specified`);\n }\n if (!route.redirectTo && !route.component && !route.loadComponent && !route.children &&\n !route.loadChildren && (route.outlet && route.outlet !== PRIMARY_OUTLET)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': a componentless route without children or loadChildren cannot have a named outlet set`);\n }\n if (route.redirectTo && route.children) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`);\n }\n if (route.redirectTo && route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`);\n }\n if (route.children && route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`);\n }\n if (route.redirectTo && (route.component || route.loadComponent)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and component/loadComponent cannot be used together`);\n }\n if (route.component && route.loadComponent) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': component and loadComponent cannot be used together`);\n }\n if (route.redirectTo && route.canActivate) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and canActivate cannot be used together. Redirects happen before activation ` +\n `so canActivate will never be executed.`);\n }\n if (route.path && route.matcher) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path and matcher cannot be used together`);\n }\n if (route.redirectTo === void 0 && !route.component && !route.loadComponent &&\n !route.children && !route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. One of the following must be provided: component, loadComponent, redirectTo, children or loadChildren`);\n }\n if (route.path === void 0 && route.matcher === void 0) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`);\n }\n if (typeof route.path === 'string' && route.path.charAt(0) === '/') {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path cannot start with a slash`);\n }\n if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {\n const exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '{path: \"${fullPath}\", redirectTo: \"${route.redirectTo}\"}': please provide 'pathMatch'. ${exp}`);\n }\n if (requireStandaloneComponents) {\n assertStandalone(fullPath, route.component);\n }\n }\n if (route.children) {\n validateConfig(route.children, fullPath, requireStandaloneComponents);\n }\n}\nfunction getFullPath(parentPath, currentRoute) {\n if (!currentRoute) {\n return parentPath;\n }\n if (!parentPath && !currentRoute.path) {\n return '';\n }\n else if (parentPath && !currentRoute.path) {\n return `${parentPath}/`;\n }\n else if (!parentPath && currentRoute.path) {\n return currentRoute.path;\n }\n else {\n return `${parentPath}/${currentRoute.path}`;\n }\n}\n/**\n * Makes a copy of the config and adds any default required properties.\n */\nfunction standardizeConfig(r) {\n const children = r.children && r.children.map(standardizeConfig);\n const c = children ? { ...r, children } : { ...r };\n if ((!c.component && !c.loadComponent) && (children || c.loadChildren) &&\n (c.outlet && c.outlet !== PRIMARY_OUTLET)) {\n c.component = ɵEmptyOutletComponent;\n }\n return c;\n}\n/** Returns the `route.outlet` or PRIMARY_OUTLET if none exists. */\nfunction getOutlet(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\n/**\n * Sorts the `routes` such that the ones with an outlet matching `outletName` come first.\n * The order of the configs is otherwise preserved.\n */\nfunction sortByMatchingOutlets(routes, outletName) {\n const sortedConfig = routes.filter(r => getOutlet(r) === outletName);\n sortedConfig.push(...routes.filter(r => getOutlet(r) !== outletName));\n return sortedConfig;\n}\n/**\n * Gets the first injector in the snapshot's parent tree.\n *\n * If the `Route` has a static list of providers, the returned injector will be the one created from\n * those. If it does not exist, the returned injector may come from the parents, which may be from a\n * loaded config or their static providers.\n *\n * Returns `null` if there is neither this nor any parents have a stored injector.\n *\n * Generally used for retrieving the injector to use for getting tokens for guards/resolvers and\n * also used for getting the correct injector to use for creating components.\n */\nfunction getClosestRouteInjector(snapshot) {\n if (!snapshot)\n return null;\n // If the current route has its own injector, which is created from the static providers on the\n // route itself, we should use that. Otherwise, we start at the parent since we do not want to\n // include the lazy loaded injector from this route.\n if (snapshot.routeConfig?._injector) {\n return snapshot.routeConfig._injector;\n }\n for (let s = snapshot.parent; s; s = s.parent) {\n const route = s.routeConfig;\n // Note that the order here is important. `_loadedInjector` stored on the route with\n // `loadChildren: () => NgModule` so it applies to child routes with priority. The `_injector`\n // is created from the static providers on that parent route, so it applies to the children as\n // well, but only if there is no lazy loaded NgModuleRef injector.\n if (route?._loadedInjector)\n return route._loadedInjector;\n if (route?._injector)\n return route._injector;\n }\n return null;\n}\n\nlet warnedAboutUnsupportedInputBinding = false;\nconst activateRoutes = (rootContexts, routeReuseStrategy, forwardEvent, inputBindingEnabled) => map(t => {\n new ActivateRoutes(routeReuseStrategy, t.targetRouterState, t.currentRouterState, forwardEvent, inputBindingEnabled)\n .activate(rootContexts);\n return t;\n});\nclass ActivateRoutes {\n constructor(routeReuseStrategy, futureState, currState, forwardEvent, inputBindingEnabled) {\n this.routeReuseStrategy = routeReuseStrategy;\n this.futureState = futureState;\n this.currState = currState;\n this.forwardEvent = forwardEvent;\n this.inputBindingEnabled = inputBindingEnabled;\n }\n activate(parentContexts) {\n const futureRoot = this.futureState._root;\n const currRoot = this.currState ? this.currState._root : null;\n this.deactivateChildRoutes(futureRoot, currRoot, parentContexts);\n advanceActivatedRoute(this.futureState.root);\n this.activateChildRoutes(futureRoot, currRoot, parentContexts);\n }\n // De-activate the child route that are not re-used for the future state\n deactivateChildRoutes(futureNode, currNode, contexts) {\n const children = nodeChildrenAsMap(currNode);\n // Recurse on the routes active in the future state to de-activate deeper children\n futureNode.children.forEach(futureChild => {\n const childOutletName = futureChild.value.outlet;\n this.deactivateRoutes(futureChild, children[childOutletName], contexts);\n delete children[childOutletName];\n });\n // De-activate the routes that will not be re-used\n Object.values(children).forEach((v) => {\n this.deactivateRouteAndItsChildren(v, contexts);\n });\n }\n deactivateRoutes(futureNode, currNode, parentContext) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n if (future === curr) {\n // Reusing the node, check to see if the children need to be de-activated\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const context = parentContext.getContext(future.outlet);\n if (context) {\n this.deactivateChildRoutes(futureNode, currNode, context.children);\n }\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.deactivateChildRoutes(futureNode, currNode, parentContext);\n }\n }\n else {\n if (curr) {\n // Deactivate the current route which will not be re-used\n this.deactivateRouteAndItsChildren(currNode, parentContext);\n }\n }\n }\n deactivateRouteAndItsChildren(route, parentContexts) {\n // If there is no component, the Route is never attached to an outlet (because there is no\n // component to attach).\n if (route.value.component && this.routeReuseStrategy.shouldDetach(route.value.snapshot)) {\n this.detachAndStoreRouteSubtree(route, parentContexts);\n }\n else {\n this.deactivateRouteAndOutlet(route, parentContexts);\n }\n }\n detachAndStoreRouteSubtree(route, parentContexts) {\n const context = parentContexts.getContext(route.value.outlet);\n const contexts = context && route.value.component ? context.children : parentContexts;\n const children = nodeChildrenAsMap(route);\n for (const childOutlet of Object.keys(children)) {\n this.deactivateRouteAndItsChildren(children[childOutlet], contexts);\n }\n if (context && context.outlet) {\n const componentRef = context.outlet.detach();\n const contexts = context.children.onOutletDeactivated();\n this.routeReuseStrategy.store(route.value.snapshot, { componentRef, route, contexts });\n }\n }\n deactivateRouteAndOutlet(route, parentContexts) {\n const context = parentContexts.getContext(route.value.outlet);\n // The context could be `null` if we are on a componentless route but there may still be\n // children that need deactivating.\n const contexts = context && route.value.component ? context.children : parentContexts;\n const children = nodeChildrenAsMap(route);\n for (const childOutlet of Object.keys(children)) {\n this.deactivateRouteAndItsChildren(children[childOutlet], contexts);\n }\n if (context) {\n if (context.outlet) {\n // Destroy the component\n context.outlet.deactivate();\n // Destroy the contexts for all the outlets that were in the component\n context.children.onOutletDeactivated();\n }\n // Clear the information about the attached component on the context but keep the reference to\n // the outlet. Clear even if outlet was not yet activated to avoid activating later with old\n // info\n context.attachRef = null;\n context.route = null;\n }\n }\n activateChildRoutes(futureNode, currNode, contexts) {\n const children = nodeChildrenAsMap(currNode);\n futureNode.children.forEach(c => {\n this.activateRoutes(c, children[c.value.outlet], contexts);\n this.forwardEvent(new ActivationEnd(c.value.snapshot));\n });\n if (futureNode.children.length) {\n this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot));\n }\n }\n activateRoutes(futureNode, currNode, parentContexts) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n advanceActivatedRoute(future);\n // reusing the node\n if (future === curr) {\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const context = parentContexts.getOrCreateContext(future.outlet);\n this.activateChildRoutes(futureNode, currNode, context.children);\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, currNode, parentContexts);\n }\n }\n else {\n if (future.component) {\n // if we have a normal route, we need to place the component into the outlet and recurse.\n const context = parentContexts.getOrCreateContext(future.outlet);\n if (this.routeReuseStrategy.shouldAttach(future.snapshot)) {\n const stored = this.routeReuseStrategy.retrieve(future.snapshot);\n this.routeReuseStrategy.store(future.snapshot, null);\n context.children.onOutletReAttached(stored.contexts);\n context.attachRef = stored.componentRef;\n context.route = stored.route.value;\n if (context.outlet) {\n // Attach right away when the outlet has already been instantiated\n // Otherwise attach from `RouterOutlet.ngOnInit` when it is instantiated\n context.outlet.attach(stored.componentRef, stored.route.value);\n }\n advanceActivatedRoute(stored.route.value);\n this.activateChildRoutes(futureNode, null, context.children);\n }\n else {\n const injector = getClosestRouteInjector(future.snapshot);\n context.attachRef = null;\n context.route = future;\n context.injector = injector;\n if (context.outlet) {\n // Activate the outlet when it has already been instantiated\n // Otherwise it will get activated from its `ngOnInit` when instantiated\n context.outlet.activateWith(future, context.injector);\n }\n this.activateChildRoutes(futureNode, null, context.children);\n }\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, null, parentContexts);\n }\n }\n if ((typeof ngDevMode === 'undefined' || ngDevMode)) {\n const context = parentContexts.getOrCreateContext(future.outlet);\n const outlet = context.outlet;\n if (outlet && this.inputBindingEnabled && !outlet.supportsBindingToComponentInputs &&\n !warnedAboutUnsupportedInputBinding) {\n console.warn(`'withComponentInputBinding' feature is enabled but ` +\n `this application is using an outlet that may not support binding to component inputs.`);\n warnedAboutUnsupportedInputBinding = true;\n }\n }\n }\n}\n\nclass CanActivate {\n constructor(path) {\n this.path = path;\n this.route = this.path[this.path.length - 1];\n }\n}\nclass CanDeactivate {\n constructor(component, route) {\n this.component = component;\n this.route = route;\n }\n}\nfunction getAllRouteGuards(future, curr, parentContexts) {\n const futureRoot = future._root;\n const currRoot = curr ? curr._root : null;\n return getChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]);\n}\nfunction getCanActivateChild(p) {\n const canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null;\n if (!canActivateChild || canActivateChild.length === 0)\n return null;\n return { node: p, guards: canActivateChild };\n}\nfunction getTokenOrFunctionIdentity(tokenOrFunction, injector) {\n const NOT_FOUND = Symbol();\n const result = injector.get(tokenOrFunction, NOT_FOUND);\n if (result === NOT_FOUND) {\n if (typeof tokenOrFunction === 'function' && !ɵisInjectable(tokenOrFunction)) {\n // We think the token is just a function so return it as-is\n return tokenOrFunction;\n }\n else {\n // This will throw the not found error\n return injector.get(tokenOrFunction);\n }\n }\n return result;\n}\nfunction getChildRouteGuards(futureNode, currNode, contexts, futurePath, checks = {\n canDeactivateChecks: [],\n canActivateChecks: []\n}) {\n const prevChildren = nodeChildrenAsMap(currNode);\n // Process the children of the future route\n futureNode.children.forEach(c => {\n getRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]), checks);\n delete prevChildren[c.value.outlet];\n });\n // Process any children left from the current route (not active for the future route)\n Object.entries(prevChildren)\n .forEach(([k, v]) => deactivateRouteAndItsChildren(v, contexts.getContext(k), checks));\n return checks;\n}\nfunction getRouteGuards(futureNode, currNode, parentContexts, futurePath, checks = {\n canDeactivateChecks: [],\n canActivateChecks: []\n}) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n const context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null;\n // reusing the node\n if (curr && future.routeConfig === curr.routeConfig) {\n const shouldRun = shouldRunGuardsAndResolvers(curr, future, future.routeConfig.runGuardsAndResolvers);\n if (shouldRun) {\n checks.canActivateChecks.push(new CanActivate(futurePath));\n }\n else {\n // we need to set the data\n future.data = curr.data;\n future._resolvedData = curr._resolvedData;\n }\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n getChildRouteGuards(futureNode, currNode, context ? context.children : null, futurePath, checks);\n // if we have a componentless route, we recurse but keep the same outlet map.\n }\n else {\n getChildRouteGuards(futureNode, currNode, parentContexts, futurePath, checks);\n }\n if (shouldRun && context && context.outlet && context.outlet.isActivated) {\n checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, curr));\n }\n }\n else {\n if (curr) {\n deactivateRouteAndItsChildren(currNode, context, checks);\n }\n checks.canActivateChecks.push(new CanActivate(futurePath));\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n getChildRouteGuards(futureNode, null, context ? context.children : null, futurePath, checks);\n // if we have a componentless route, we recurse but keep the same outlet map.\n }\n else {\n getChildRouteGuards(futureNode, null, parentContexts, futurePath, checks);\n }\n }\n return checks;\n}\nfunction shouldRunGuardsAndResolvers(curr, future, mode) {\n if (typeof mode === 'function') {\n return mode(curr, future);\n }\n switch (mode) {\n case 'pathParamsChange':\n return !equalPath(curr.url, future.url);\n case 'pathParamsOrQueryParamsChange':\n return !equalPath(curr.url, future.url) ||\n !shallowEqual(curr.queryParams, future.queryParams);\n case 'always':\n return true;\n case 'paramsOrQueryParamsChange':\n return !equalParamsAndUrlSegments(curr, future) ||\n !shallowEqual(curr.queryParams, future.queryParams);\n case 'paramsChange':\n default:\n return !equalParamsAndUrlSegments(curr, future);\n }\n}\nfunction deactivateRouteAndItsChildren(route, context, checks) {\n const children = nodeChildrenAsMap(route);\n const r = route.value;\n Object.entries(children).forEach(([childName, node]) => {\n if (!r.component) {\n deactivateRouteAndItsChildren(node, context, checks);\n }\n else if (context) {\n deactivateRouteAndItsChildren(node, context.children.getContext(childName), checks);\n }\n else {\n deactivateRouteAndItsChildren(node, null, checks);\n }\n });\n if (!r.component) {\n checks.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n else if (context && context.outlet && context.outlet.isActivated) {\n checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r));\n }\n else {\n checks.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n}\n\n/**\n * Simple function check, but generic so type inference will flow. Example:\n *\n * function product(a: number, b: number) {\n * return a * b;\n * }\n *\n * if (isFunction<product>(fn)) {\n * return fn(1, 2);\n * } else {\n * throw \"Must provide the `product` function\";\n * }\n */\nfunction isFunction(v) {\n return typeof v === 'function';\n}\nfunction isBoolean(v) {\n return typeof v === 'boolean';\n}\nfunction isCanLoad(guard) {\n return guard && isFunction(guard.canLoad);\n}\nfunction isCanActivate(guard) {\n return guard && isFunction(guard.canActivate);\n}\nfunction isCanActivateChild(guard) {\n return guard && isFunction(guard.canActivateChild);\n}\nfunction isCanDeactivate(guard) {\n return guard && isFunction(guard.canDeactivate);\n}\nfunction isCanMatch(guard) {\n return guard && isFunction(guard.canMatch);\n}\nfunction isRedirectingNavigationCancelingError(error) {\n return isNavigationCancelingError(error) && isUrlTree(error.url);\n}\nfunction isNavigationCancelingError(error) {\n return error && error[NAVIGATION_CANCELING_ERROR];\n}\nfunction isEmptyError(e) {\n return e instanceof EmptyError || e?.name === 'EmptyError';\n}\n\nconst INITIAL_VALUE = /* @__PURE__ */ Symbol('INITIAL_VALUE');\nfunction prioritizedGuardValue() {\n return switchMap(obs => {\n return combineLatest(obs.map(o => o.pipe(take(1), startWith(INITIAL_VALUE))))\n .pipe(map((results) => {\n for (const result of results) {\n if (result === true) {\n // If result is true, check the next one\n continue;\n }\n else if (result === INITIAL_VALUE) {\n // If guard has not finished, we need to stop processing.\n return INITIAL_VALUE;\n }\n else if (result === false || result instanceof UrlTree) {\n // Result finished and was not true. Return the result.\n // Note that we only allow false/UrlTree. Other values are considered invalid and\n // ignored.\n return result;\n }\n }\n // Everything resolved to true. Return true.\n return true;\n }), filter((item) => item !== INITIAL_VALUE), take(1));\n });\n}\n\nfunction checkGuards(injector, forwardEvent) {\n return mergeMap(t => {\n const { targetSnapshot, currentSnapshot, guards: { canActivateChecks, canDeactivateChecks } } = t;\n if (canDeactivateChecks.length === 0 && canActivateChecks.length === 0) {\n return of({ ...t, guardsResult: true });\n }\n return runCanDeactivateChecks(canDeactivateChecks, targetSnapshot, currentSnapshot, injector)\n .pipe(mergeMap(canDeactivate => {\n return canDeactivate && isBoolean(canDeactivate) ?\n runCanActivateChecks(targetSnapshot, canActivateChecks, injector, forwardEvent) :\n of(canDeactivate);\n }), map(guardsResult => ({ ...t, guardsResult })));\n });\n}\nfunction runCanDeactivateChecks(checks, futureRSS, currRSS, injector) {\n return from(checks).pipe(mergeMap(check => runCanDeactivate(check.component, check.route, currRSS, futureRSS, injector)), first(result => {\n return result !== true;\n }, true));\n}\nfunction runCanActivateChecks(futureSnapshot, checks, injector, forwardEvent) {\n return from(checks).pipe(concatMap((check) => {\n return concat(fireChildActivationStart(check.route.parent, forwardEvent), fireActivationStart(check.route, forwardEvent), runCanActivateChild(futureSnapshot, check.path, injector), runCanActivate(futureSnapshot, check.route, injector));\n }), first(result => {\n return result !== true;\n }, true));\n}\n/**\n * This should fire off `ActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n */\nfunction fireActivationStart(snapshot, forwardEvent) {\n if (snapshot !== null && forwardEvent) {\n forwardEvent(new ActivationStart(snapshot));\n }\n return of(true);\n}\n/**\n * This should fire off `ChildActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ChildActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n */\nfunction fireChildActivationStart(snapshot, forwardEvent) {\n if (snapshot !== null && forwardEvent) {\n forwardEvent(new ChildActivationStart(snapshot));\n }\n return of(true);\n}\nfunction runCanActivate(futureRSS, futureARS, injector) {\n const canActivate = futureARS.routeConfig ? futureARS.routeConfig.canActivate : null;\n if (!canActivate || canActivate.length === 0)\n return of(true);\n const canActivateObservables = canActivate.map((canActivate) => {\n return defer(() => {\n const closestInjector = getClosestRouteInjector(futureARS) ?? injector;\n const guard = getTokenOrFunctionIdentity(canActivate, closestInjector);\n const guardVal = isCanActivate(guard) ?\n guard.canActivate(futureARS, futureRSS) :\n closestInjector.runInContext(() => guard(futureARS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n });\n return of(canActivateObservables).pipe(prioritizedGuardValue());\n}\nfunction runCanActivateChild(futureRSS, path, injector) {\n const futureARS = path[path.length - 1];\n const canActivateChildGuards = path.slice(0, path.length - 1)\n .reverse()\n .map(p => getCanActivateChild(p))\n .filter(_ => _ !== null);\n const canActivateChildGuardsMapped = canActivateChildGuards.map((d) => {\n return defer(() => {\n const guardsMapped = d.guards.map((canActivateChild) => {\n const closestInjector = getClosestRouteInjector(d.node) ?? injector;\n const guard = getTokenOrFunctionIdentity(canActivateChild, closestInjector);\n const guardVal = isCanActivateChild(guard) ?\n guard.canActivateChild(futureARS, futureRSS) :\n closestInjector.runInContext(() => guard(futureARS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n return of(guardsMapped).pipe(prioritizedGuardValue());\n });\n });\n return of(canActivateChildGuardsMapped).pipe(prioritizedGuardValue());\n}\nfunction runCanDeactivate(component, currARS, currRSS, futureRSS, injector) {\n const canDeactivate = currARS && currARS.routeConfig ? currARS.routeConfig.canDeactivate : null;\n if (!canDeactivate || canDeactivate.length === 0)\n return of(true);\n const canDeactivateObservables = canDeactivate.map((c) => {\n const closestInjector = getClosestRouteInjector(currARS) ?? injector;\n const guard = getTokenOrFunctionIdentity(c, closestInjector);\n const guardVal = isCanDeactivate(guard) ?\n guard.canDeactivate(component, currARS, currRSS, futureRSS) :\n closestInjector.runInContext(() => guard(component, currARS, currRSS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n return of(canDeactivateObservables).pipe(prioritizedGuardValue());\n}\nfunction runCanLoadGuards(injector, route, segments, urlSerializer) {\n const canLoad = route.canLoad;\n if (canLoad === undefined || canLoad.length === 0) {\n return of(true);\n }\n const canLoadObservables = canLoad.map((injectionToken) => {\n const guard = getTokenOrFunctionIdentity(injectionToken, injector);\n const guardVal = isCanLoad(guard) ?\n guard.canLoad(route, segments) :\n injector.runInContext(() => guard(route, segments));\n return wrapIntoObservable(guardVal);\n });\n return of(canLoadObservables)\n .pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer));\n}\nfunction redirectIfUrlTree(urlSerializer) {\n return pipe(tap((result) => {\n if (!isUrlTree(result))\n return;\n throw redirectingNavigationError(urlSerializer, result);\n }), map(result => result === true));\n}\nfunction runCanMatchGuards(injector, route, segments, urlSerializer) {\n const canMatch = route.canMatch;\n if (!canMatch || canMatch.length === 0)\n return of(true);\n const canMatchObservables = canMatch.map(injectionToken => {\n const guard = getTokenOrFunctionIdentity(injectionToken, injector);\n const guardVal = isCanMatch(guard) ?\n guard.canMatch(route, segments) :\n injector.runInContext(() => guard(route, segments));\n return wrapIntoObservable(guardVal);\n });\n return of(canMatchObservables)\n .pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer));\n}\n\nclass NoMatch {\n constructor(segmentGroup) {\n this.segmentGroup = segmentGroup || null;\n }\n}\nclass AbsoluteRedirect {\n constructor(urlTree) {\n this.urlTree = urlTree;\n }\n}\nfunction noMatch$1(segmentGroup) {\n return throwError(new NoMatch(segmentGroup));\n}\nfunction absoluteRedirect(newTree) {\n return throwError(new AbsoluteRedirect(newTree));\n}\nfunction namedOutletsRedirect(redirectTo) {\n return throwError(new ɵRuntimeError(4000 /* RuntimeErrorCode.NAMED_OUTLET_REDIRECT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`));\n}\nfunction canLoadFails(route) {\n return throwError(navigationCancelingError((typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Cannot load children because the guard of the route \"path: '${route.path}'\" returned false`, 3 /* NavigationCancellationCode.GuardRejected */));\n}\nclass ApplyRedirects {\n constructor(urlSerializer, urlTree) {\n this.urlSerializer = urlSerializer;\n this.urlTree = urlTree;\n }\n noMatchError(e) {\n return new ɵRuntimeError(4002 /* RuntimeErrorCode.NO_MATCH */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Cannot match any routes. URL Segment: '${e.segmentGroup}'`);\n }\n lineralizeSegments(route, urlTree) {\n let res = [];\n let c = urlTree.root;\n while (true) {\n res = res.concat(c.segments);\n if (c.numberOfChildren === 0) {\n return of(res);\n }\n if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) {\n return namedOutletsRedirect(route.redirectTo);\n }\n c = c.children[PRIMARY_OUTLET];\n }\n }\n applyRedirectCommands(segments, redirectTo, posParams) {\n return this.applyRedirectCreateUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams);\n }\n applyRedirectCreateUrlTree(redirectTo, urlTree, segments, posParams) {\n const newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams);\n return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment);\n }\n createQueryParams(redirectToParams, actualParams) {\n const res = {};\n Object.entries(redirectToParams).forEach(([k, v]) => {\n const copySourceValue = typeof v === 'string' && v.startsWith(':');\n if (copySourceValue) {\n const sourceName = v.substring(1);\n res[k] = actualParams[sourceName];\n }\n else {\n res[k] = v;\n }\n });\n return res;\n }\n createSegmentGroup(redirectTo, group, segments, posParams) {\n const updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams);\n let children = {};\n Object.entries(group.children).forEach(([name, child]) => {\n children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams);\n });\n return new UrlSegmentGroup(updatedSegments, children);\n }\n createSegments(redirectTo, redirectToSegments, actualSegments, posParams) {\n return redirectToSegments.map(s => s.path.startsWith(':') ? this.findPosParam(redirectTo, s, posParams) :\n this.findOrReturn(s, actualSegments));\n }\n findPosParam(redirectTo, redirectToUrlSegment, posParams) {\n const pos = posParams[redirectToUrlSegment.path.substring(1)];\n if (!pos)\n throw new ɵRuntimeError(4001 /* RuntimeErrorCode.MISSING_REDIRECT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);\n return pos;\n }\n findOrReturn(redirectToUrlSegment, actualSegments) {\n let idx = 0;\n for (const s of actualSegments) {\n if (s.path === redirectToUrlSegment.path) {\n actualSegments.splice(idx);\n return s;\n }\n idx++;\n }\n return redirectToUrlSegment;\n }\n}\n\nconst noMatch = {\n matched: false,\n consumedSegments: [],\n remainingSegments: [],\n parameters: {},\n positionalParamSegments: {}\n};\nfunction matchWithChecks(segmentGroup, route, segments, injector, urlSerializer) {\n const result = match(segmentGroup, route, segments);\n if (!result.matched) {\n return of(result);\n }\n // Only create the Route's `EnvironmentInjector` if it matches the attempted\n // navigation\n injector = getOrCreateRouteInjectorIfNeeded(route, injector);\n return runCanMatchGuards(injector, route, segments, urlSerializer)\n .pipe(map((v) => v === true ? result : { ...noMatch }));\n}\nfunction match(segmentGroup, route, segments) {\n if (route.path === '') {\n if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || segments.length > 0)) {\n return { ...noMatch };\n }\n return {\n matched: true,\n consumedSegments: [],\n remainingSegments: segments,\n parameters: {},\n positionalParamSegments: {}\n };\n }\n const matcher = route.matcher || defaultUrlMatcher;\n const res = matcher(segments, segmentGroup, route);\n if (!res)\n return { ...noMatch };\n const posParams = {};\n Object.entries(res.posParams ?? {}).forEach(([k, v]) => {\n posParams[k] = v.path;\n });\n const parameters = res.consumed.length > 0 ?\n { ...posParams, ...res.consumed[res.consumed.length - 1].parameters } :\n posParams;\n return {\n matched: true,\n consumedSegments: res.consumed,\n remainingSegments: segments.slice(res.consumed.length),\n // TODO(atscott): investigate combining parameters and positionalParamSegments\n parameters,\n positionalParamSegments: res.posParams ?? {}\n };\n}\nfunction split(segmentGroup, consumedSegments, slicedSegments, config) {\n if (slicedSegments.length > 0 &&\n containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n const s = new UrlSegmentGroup(consumedSegments, createChildrenForEmptyPaths(config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n return { segmentGroup: s, slicedSegments: [] };\n }\n if (slicedSegments.length === 0 &&\n containsEmptyPathMatches(segmentGroup, slicedSegments, config)) {\n const s = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, config, segmentGroup.children));\n return { segmentGroup: s, slicedSegments };\n }\n const s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children);\n return { segmentGroup: s, slicedSegments };\n}\nfunction addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, routes, children) {\n const res = {};\n for (const r of routes) {\n if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {\n const s = new UrlSegmentGroup([], {});\n res[getOutlet(r)] = s;\n }\n }\n return { ...children, ...res };\n}\nfunction createChildrenForEmptyPaths(routes, primarySegment) {\n const res = {};\n res[PRIMARY_OUTLET] = primarySegment;\n for (const r of routes) {\n if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {\n const s = new UrlSegmentGroup([], {});\n res[getOutlet(r)] = s;\n }\n }\n return res;\n}\nfunction containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET);\n}\nfunction containsEmptyPathMatches(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r));\n}\nfunction emptyPathMatch(segmentGroup, slicedSegments, r) {\n if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '';\n}\n/**\n * Determines if `route` is a path match for the `rawSegment`, `segments`, and `outlet` without\n * verifying that its children are a full match for the remainder of the `rawSegment` children as\n * well.\n */\nfunction isImmediateMatch(route, rawSegment, segments, outlet) {\n // We allow matches to empty paths when the outlets differ so we can match a url like `/(b:b)` to\n // a config like\n // * `{path: '', children: [{path: 'b', outlet: 'b'}]}`\n // or even\n // * `{path: '', outlet: 'a', children: [{path: 'b', outlet: 'b'}]`\n //\n // The exception here is when the segment outlet is for the primary outlet. This would\n // result in a match inside the named outlet because all children there are written as primary\n // outlets. So we need to prevent child named outlet matches in a url like `/b` in a config like\n // * `{path: '', outlet: 'x' children: [{path: 'b'}]}`\n // This should only match if the url is `/(x:b)`.\n if (getOutlet(route) !== outlet &&\n (outlet === PRIMARY_OUTLET || !emptyPathMatch(rawSegment, segments, route))) {\n return false;\n }\n if (route.path === '**') {\n return true;\n }\n return match(rawSegment, route, segments).matched;\n}\nfunction noLeftoversInUrl(segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n}\n\nfunction recognize$1(injector, configLoader, rootComponentType, config, urlTree, urlSerializer, paramsInheritanceStrategy = 'emptyOnly') {\n return new Recognizer(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer)\n .recognize();\n}\nclass Recognizer {\n constructor(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer) {\n this.injector = injector;\n this.configLoader = configLoader;\n this.rootComponentType = rootComponentType;\n this.config = config;\n this.urlTree = urlTree;\n this.paramsInheritanceStrategy = paramsInheritanceStrategy;\n this.urlSerializer = urlSerializer;\n this.allowRedirects = true;\n this.applyRedirects = new ApplyRedirects(this.urlSerializer, this.urlTree);\n }\n noMatchError(e) {\n return new ɵRuntimeError(4002 /* RuntimeErrorCode.NO_MATCH */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Cannot match any routes. URL Segment: '${e.segmentGroup}'`);\n }\n recognize() {\n const rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup;\n return this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET)\n .pipe(catchError((e) => {\n if (e instanceof AbsoluteRedirect) {\n // After an absolute redirect we do not apply any more redirects!\n // If this implementation changes, update the documentation note in `redirectTo`.\n this.allowRedirects = false;\n this.urlTree = e.urlTree;\n return this.match(e.urlTree);\n }\n if (e instanceof NoMatch) {\n throw this.noMatchError(e);\n }\n throw e;\n }), map(children => {\n // Use Object.freeze to prevent readers of the Router state from modifying it outside\n // of a navigation, resulting in the router being out of sync with the browser.\n const root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze({ ...this.urlTree.queryParams }), this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null, {});\n const rootNode = new TreeNode(root, children);\n const routeState = new RouterStateSnapshot('', rootNode);\n const tree = createUrlTreeFromSnapshot(root, [], this.urlTree.queryParams, this.urlTree.fragment);\n // https://github.com/angular/angular/issues/47307\n // Creating the tree stringifies the query params\n // We don't want to do this here so reassign them to the original.\n tree.queryParams = this.urlTree.queryParams;\n routeState.url = this.urlSerializer.serialize(tree);\n this.inheritParamsAndData(routeState._root);\n return { state: routeState, tree };\n }));\n }\n match(tree) {\n const expanded$ = this.processSegmentGroup(this.injector, this.config, tree.root, PRIMARY_OUTLET);\n return expanded$.pipe(catchError((e) => {\n if (e instanceof NoMatch) {\n throw this.noMatchError(e);\n }\n throw e;\n }));\n }\n inheritParamsAndData(routeNode) {\n const route = routeNode.value;\n const i = inheritedParamsDataResolve(route, this.paramsInheritanceStrategy);\n route.params = Object.freeze(i.params);\n route.data = Object.freeze(i.data);\n routeNode.children.forEach(n => this.inheritParamsAndData(n));\n }\n processSegmentGroup(injector, config, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(injector, config, segmentGroup);\n }\n return this.processSegment(injector, config, segmentGroup, segmentGroup.segments, outlet, true);\n }\n /**\n * Matches every child outlet in the `segmentGroup` to a `Route` in the config. Returns `null` if\n * we cannot find a match for _any_ of the children.\n *\n * @param config - The `Routes` to match against\n * @param segmentGroup - The `UrlSegmentGroup` whose children need to be matched against the\n * config.\n */\n processChildren(injector, config, segmentGroup) {\n // Expand outlets one at a time, starting with the primary outlet. We need to do it this way\n // because an absolute redirect from the primary outlet takes precedence.\n const childOutlets = [];\n for (const child of Object.keys(segmentGroup.children)) {\n if (child === 'primary') {\n childOutlets.unshift(child);\n }\n else {\n childOutlets.push(child);\n }\n }\n return from(childOutlets)\n .pipe(concatMap(childOutlet => {\n const child = segmentGroup.children[childOutlet];\n // Sort the config so that routes with outlets that match the one being activated\n // appear first, followed by routes for other outlets, which might match if they have\n // an empty path.\n const sortedConfig = sortByMatchingOutlets(config, childOutlet);\n return this.processSegmentGroup(injector, sortedConfig, child, childOutlet);\n }), scan((children, outletChildren) => {\n children.push(...outletChildren);\n return children;\n }), defaultIfEmpty(null), last$1(), mergeMap(children => {\n if (children === null)\n return noMatch$1(segmentGroup);\n // Because we may have matched two outlets to the same empty path segment, we can have\n // multiple activated results for the same outlet. We should merge the children of\n // these results so the final return value is only one `TreeNode` per outlet.\n const mergedChildren = mergeEmptyPathMatches(children);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // This should really never happen - we are only taking the first match for each\n // outlet and merge the empty path matches.\n checkOutletNameUniqueness(mergedChildren);\n }\n sortActivatedRouteSnapshots(mergedChildren);\n return of(mergedChildren);\n }));\n }\n processSegment(injector, routes, segmentGroup, segments, outlet, allowRedirects) {\n return from(routes).pipe(concatMap(r => {\n return this\n .processSegmentAgainstRoute(r._injector ?? injector, routes, r, segmentGroup, segments, outlet, allowRedirects)\n .pipe(catchError((e) => {\n if (e instanceof NoMatch) {\n return of(null);\n }\n throw e;\n }));\n }), first((x) => !!x), catchError(e => {\n if (isEmptyError(e)) {\n if (noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return of([]);\n }\n return noMatch$1(segmentGroup);\n }\n throw e;\n }));\n }\n processSegmentAgainstRoute(injector, routes, route, rawSegment, segments, outlet, allowRedirects) {\n if (!isImmediateMatch(route, rawSegment, segments, outlet))\n return noMatch$1(rawSegment);\n if (route.redirectTo === undefined) {\n return this.matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet, allowRedirects);\n }\n if (allowRedirects && this.allowRedirects) {\n return this.expandSegmentAgainstRouteUsingRedirect(injector, rawSegment, routes, route, segments, outlet);\n }\n return noMatch$1(rawSegment);\n }\n expandSegmentAgainstRouteUsingRedirect(injector, segmentGroup, routes, route, segments, outlet) {\n if (route.path === '**') {\n return this.expandWildCardWithParamsAgainstRouteUsingRedirect(injector, routes, route, outlet);\n }\n return this.expandRegularSegmentAgainstRouteUsingRedirect(injector, segmentGroup, routes, route, segments, outlet);\n }\n expandWildCardWithParamsAgainstRouteUsingRedirect(injector, routes, route, outlet) {\n const newTree = this.applyRedirects.applyRedirectCommands([], route.redirectTo, {});\n if (route.redirectTo.startsWith('/')) {\n return absoluteRedirect(newTree);\n }\n return this.applyRedirects.lineralizeSegments(route, newTree)\n .pipe(mergeMap((newSegments) => {\n const group = new UrlSegmentGroup(newSegments, {});\n return this.processSegment(injector, routes, group, newSegments, outlet, false);\n }));\n }\n expandRegularSegmentAgainstRouteUsingRedirect(injector, segmentGroup, routes, route, segments, outlet) {\n const { matched, consumedSegments, remainingSegments, positionalParamSegments } = match(segmentGroup, route, segments);\n if (!matched)\n return noMatch$1(segmentGroup);\n const newTree = this.applyRedirects.applyRedirectCommands(consumedSegments, route.redirectTo, positionalParamSegments);\n if (route.redirectTo.startsWith('/')) {\n return absoluteRedirect(newTree);\n }\n return this.applyRedirects.lineralizeSegments(route, newTree)\n .pipe(mergeMap((newSegments) => {\n return this.processSegment(injector, routes, segmentGroup, newSegments.concat(remainingSegments), outlet, false);\n }));\n }\n matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet, allowRedirects) {\n let matchResult;\n if (route.path === '**') {\n const params = segments.length > 0 ? last(segments).parameters : {};\n const snapshot = new ActivatedRouteSnapshot(segments, params, Object.freeze({ ...this.urlTree.queryParams }), this.urlTree.fragment, getData(route), getOutlet(route), route.component ?? route._loadedComponent ?? null, route, getResolve(route));\n matchResult = of({\n snapshot,\n consumedSegments: [],\n remainingSegments: [],\n });\n // Prior versions of the route matching algorithm would stop matching at the wildcard route.\n // We should investigate a better strategy for any existing children. Otherwise, these\n // child segments are silently dropped from the navigation.\n // https://github.com/angular/angular/issues/40089\n rawSegment.children = {};\n }\n else {\n matchResult =\n matchWithChecks(rawSegment, route, segments, injector, this.urlSerializer)\n .pipe(map(({ matched, consumedSegments, remainingSegments, parameters }) => {\n if (!matched) {\n return null;\n }\n const snapshot = new ActivatedRouteSnapshot(consumedSegments, parameters, Object.freeze({ ...this.urlTree.queryParams }), this.urlTree.fragment, getData(route), getOutlet(route), route.component ?? route._loadedComponent ?? null, route, getResolve(route));\n return { snapshot, consumedSegments, remainingSegments };\n }));\n }\n return matchResult.pipe(switchMap((result) => {\n if (result === null) {\n return noMatch$1(rawSegment);\n }\n // If the route has an injector created from providers, we should start using that.\n injector = route._injector ?? injector;\n return this.getChildConfig(injector, route, segments)\n .pipe(switchMap(({ routes: childConfig }) => {\n const childInjector = route._loadedInjector ?? injector;\n const { snapshot, consumedSegments, remainingSegments } = result;\n const { segmentGroup, slicedSegments } = split(rawSegment, consumedSegments, remainingSegments, childConfig);\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(childInjector, childConfig, segmentGroup)\n .pipe(map(children => {\n if (children === null) {\n return null;\n }\n return [new TreeNode(snapshot, children)];\n }));\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return of([new TreeNode(snapshot, [])]);\n }\n const matchedOnOutlet = getOutlet(route) === outlet;\n // If we matched a config due to empty path match on a different outlet, we need to\n // continue passing the current outlet for the segment rather than switch to PRIMARY.\n // Note that we switch to primary when we have a match because outlet configs look like\n // this: {path: 'a', outlet: 'a', children: [\n // {path: 'b', component: B},\n // {path: 'c', component: C},\n // ]}\n // Notice that the children of the named outlet are configured with the primary outlet\n return this\n .processSegment(childInjector, childConfig, segmentGroup, slicedSegments, matchedOnOutlet ? PRIMARY_OUTLET : outlet, true)\n .pipe(map(children => {\n return [new TreeNode(snapshot, children)];\n }));\n }));\n }));\n }\n getChildConfig(injector, route, segments) {\n if (route.children) {\n // The children belong to the same module\n return of({ routes: route.children, injector });\n }\n if (route.loadChildren) {\n // lazy children belong to the loaded module\n if (route._loadedRoutes !== undefined) {\n return of({ routes: route._loadedRoutes, injector: route._loadedInjector });\n }\n return runCanLoadGuards(injector, route, segments, this.urlSerializer)\n .pipe(mergeMap((shouldLoadResult) => {\n if (shouldLoadResult) {\n return this.configLoader.loadChildren(injector, route)\n .pipe(tap((cfg) => {\n route._loadedRoutes = cfg.routes;\n route._loadedInjector = cfg.injector;\n }));\n }\n return canLoadFails(route);\n }));\n }\n return of({ routes: [], injector });\n }\n}\nfunction sortActivatedRouteSnapshots(nodes) {\n nodes.sort((a, b) => {\n if (a.value.outlet === PRIMARY_OUTLET)\n return -1;\n if (b.value.outlet === PRIMARY_OUTLET)\n return 1;\n return a.value.outlet.localeCompare(b.value.outlet);\n });\n}\nfunction hasEmptyPathConfig(node) {\n const config = node.value.routeConfig;\n return config && config.path === '';\n}\n/**\n * Finds `TreeNode`s with matching empty path route configs and merges them into `TreeNode` with\n * the children from each duplicate. This is necessary because different outlets can match a\n * single empty path route config and the results need to then be merged.\n */\nfunction mergeEmptyPathMatches(nodes) {\n const result = [];\n // The set of nodes which contain children that were merged from two duplicate empty path nodes.\n const mergedNodes = new Set();\n for (const node of nodes) {\n if (!hasEmptyPathConfig(node)) {\n result.push(node);\n continue;\n }\n const duplicateEmptyPathNode = result.find(resultNode => node.value.routeConfig === resultNode.value.routeConfig);\n if (duplicateEmptyPathNode !== undefined) {\n duplicateEmptyPathNode.children.push(...node.children);\n mergedNodes.add(duplicateEmptyPathNode);\n }\n else {\n result.push(node);\n }\n }\n // For each node which has children from multiple sources, we need to recompute a new `TreeNode`\n // by also merging those children. This is necessary when there are multiple empty path configs\n // in a row. Put another way: whenever we combine children of two nodes, we need to also check\n // if any of those children can be combined into a single node as well.\n for (const mergedNode of mergedNodes) {\n const mergedChildren = mergeEmptyPathMatches(mergedNode.children);\n result.push(new TreeNode(mergedNode.value, mergedChildren));\n }\n return result.filter(n => !mergedNodes.has(n));\n}\nfunction checkOutletNameUniqueness(nodes) {\n const names = {};\n nodes.forEach(n => {\n const routeWithSameOutletName = names[n.value.outlet];\n if (routeWithSameOutletName) {\n const p = routeWithSameOutletName.url.map(s => s.toString()).join('/');\n const c = n.value.url.map(s => s.toString()).join('/');\n throw new ɵRuntimeError(4006 /* RuntimeErrorCode.TWO_SEGMENTS_WITH_SAME_OUTLET */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Two segments cannot have the same outlet name: '${p}' and '${c}'.`);\n }\n names[n.value.outlet] = n.value;\n });\n}\nfunction getData(route) {\n return route.data || {};\n}\nfunction getResolve(route) {\n return route.resolve || {};\n}\n\nfunction recognize(injector, configLoader, rootComponentType, config, serializer, paramsInheritanceStrategy) {\n return mergeMap(t => recognize$1(injector, configLoader, rootComponentType, config, t.extractedUrl, serializer, paramsInheritanceStrategy)\n .pipe(map(({ state: targetSnapshot, tree: urlAfterRedirects }) => {\n return { ...t, targetSnapshot, urlAfterRedirects };\n })));\n}\n\nfunction resolveData(paramsInheritanceStrategy, injector) {\n return mergeMap(t => {\n const { targetSnapshot, guards: { canActivateChecks } } = t;\n if (!canActivateChecks.length) {\n return of(t);\n }\n let canActivateChecksResolved = 0;\n return from(canActivateChecks)\n .pipe(concatMap(check => runResolve(check.route, targetSnapshot, paramsInheritanceStrategy, injector)), tap(() => canActivateChecksResolved++), takeLast(1), mergeMap(_ => canActivateChecksResolved === canActivateChecks.length ? of(t) : EMPTY));\n });\n}\nfunction runResolve(futureARS, futureRSS, paramsInheritanceStrategy, injector) {\n const config = futureARS.routeConfig;\n const resolve = futureARS._resolve;\n if (config?.title !== undefined && !hasStaticTitle(config)) {\n resolve[RouteTitleKey] = config.title;\n }\n return resolveNode(resolve, futureARS, futureRSS, injector).pipe(map((resolvedData) => {\n futureARS._resolvedData = resolvedData;\n futureARS.data = inheritedParamsDataResolve(futureARS, paramsInheritanceStrategy).resolve;\n if (config && hasStaticTitle(config)) {\n futureARS.data[RouteTitleKey] = config.title;\n }\n return null;\n }));\n}\nfunction resolveNode(resolve, futureARS, futureRSS, injector) {\n const keys = getDataKeys(resolve);\n if (keys.length === 0) {\n return of({});\n }\n const data = {};\n return from(keys).pipe(mergeMap(key => getResolver(resolve[key], futureARS, futureRSS, injector)\n .pipe(first(), tap((value) => {\n data[key] = value;\n }))), takeLast(1), mapTo(data), catchError((e) => isEmptyError(e) ? EMPTY : throwError(e)));\n}\nfunction getDataKeys(obj) {\n return [...Object.keys(obj), ...Object.getOwnPropertySymbols(obj)];\n}\nfunction getResolver(injectionToken, futureARS, futureRSS, injector) {\n const closestInjector = getClosestRouteInjector(futureARS) ?? injector;\n const resolver = getTokenOrFunctionIdentity(injectionToken, closestInjector);\n const resolverValue = resolver.resolve ?\n resolver.resolve(futureARS, futureRSS) :\n closestInjector.runInContext(() => resolver(futureARS, futureRSS));\n return wrapIntoObservable(resolverValue);\n}\nfunction hasStaticTitle(config) {\n return typeof config.title === 'string' || config.title === null;\n}\n\n/**\n * Perform a side effect through a switchMap for every emission on the source Observable,\n * but return an Observable that is identical to the source. It's essentially the same as\n * the `tap` operator, but if the side effectful `next` function returns an ObservableInput,\n * it will wait before continuing with the original value.\n */\nfunction switchTap(next) {\n return switchMap(v => {\n const nextResult = next(v);\n if (nextResult) {\n return from(nextResult).pipe(map(() => v));\n }\n return of(v);\n });\n}\n\n/**\n * The [DI token](guide/glossary/#di-token) for a router configuration.\n *\n * `ROUTES` is a low level API for router configuration via dependency injection.\n *\n * We recommend that in almost all cases to use higher level APIs such as `RouterModule.forRoot()`,\n * `provideRouter`, or `Router.resetConfig()`.\n *\n * @publicApi\n */\nconst ROUTES = new InjectionToken('ROUTES');\nclass RouterConfigLoader {\n constructor() {\n this.componentLoaders = new WeakMap();\n this.childrenLoaders = new WeakMap();\n this.compiler = inject(Compiler);\n }\n loadComponent(route) {\n if (this.componentLoaders.get(route)) {\n return this.componentLoaders.get(route);\n }\n else if (route._loadedComponent) {\n return of(route._loadedComponent);\n }\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n const loadRunner = wrapIntoObservable(route.loadComponent())\n .pipe(map(maybeUnwrapDefaultExport), tap(component => {\n if (this.onLoadEndListener) {\n this.onLoadEndListener(route);\n }\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n assertStandalone(route.path ?? '', component);\n route._loadedComponent = component;\n }), finalize(() => {\n this.componentLoaders.delete(route);\n }));\n // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much\n const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount());\n this.componentLoaders.set(route, loader);\n return loader;\n }\n loadChildren(parentInjector, route) {\n if (this.childrenLoaders.get(route)) {\n return this.childrenLoaders.get(route);\n }\n else if (route._loadedRoutes) {\n return of({ routes: route._loadedRoutes, injector: route._loadedInjector });\n }\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n const moduleFactoryOrRoutes$ = loadChildren(route, this.compiler, parentInjector, this.onLoadEndListener);\n const loadRunner = moduleFactoryOrRoutes$.pipe(finalize(() => {\n this.childrenLoaders.delete(route);\n }));\n // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much\n const loader = new ConnectableObservable(loadRunner, () => new Subject())\n .pipe(refCount());\n this.childrenLoaders.set(route, loader);\n return loader;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterConfigLoader, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/**\n * Executes a `route.loadChildren` callback and converts the result to an array of child routes and\n * an injector if that callback returned a module.\n *\n * This function is used for the route discovery during prerendering\n * in @angular-devkit/build-angular. If there are any updates to the contract here, it will require\n * an update to the extractor.\n */\nfunction loadChildren(route, compiler, parentInjector, onLoadEndListener) {\n return wrapIntoObservable(route.loadChildren())\n .pipe(map(maybeUnwrapDefaultExport), mergeMap((t) => {\n if (t instanceof NgModuleFactory || Array.isArray(t)) {\n return of(t);\n }\n else {\n return from(compiler.compileModuleAsync(t));\n }\n }), map((factoryOrRoutes) => {\n if (onLoadEndListener) {\n onLoadEndListener(route);\n }\n // This injector comes from the `NgModuleRef` when lazy loading an `NgModule`. There is\n // no injector associated with lazy loading a `Route` array.\n let injector;\n let rawRoutes;\n let requireStandaloneComponents = false;\n if (Array.isArray(factoryOrRoutes)) {\n rawRoutes = factoryOrRoutes;\n requireStandaloneComponents = true;\n }\n else {\n injector = factoryOrRoutes.create(parentInjector).injector;\n // When loading a module that doesn't provide `RouterModule.forChild()` preloader\n // will get stuck in an infinite loop. The child module's Injector will look to\n // its parent `Injector` when it doesn't find any ROUTES so it will return routes\n // for it's parent module instead.\n rawRoutes = injector.get(ROUTES, [], { optional: true, self: true }).flat();\n }\n const routes = rawRoutes.map(standardizeConfig);\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n validateConfig(routes, route.path, requireStandaloneComponents);\n return { routes, injector };\n }));\n}\nfunction isWrappedDefaultExport(value) {\n // We use `in` here with a string key `'default'`, because we expect `DefaultExport` objects to be\n // dynamically imported ES modules with a spec-mandated `default` key. Thus we don't expect that\n // `default` will be a renamed property.\n return value && typeof value === 'object' && 'default' in value;\n}\nfunction maybeUnwrapDefaultExport(input) {\n // As per `isWrappedDefaultExport`, the `default` key here is generated by the browser and not\n // subject to property renaming, so we reference it with bracket access.\n return isWrappedDefaultExport(input) ? input['default'] : input;\n}\n\nclass NavigationTransitions {\n get hasRequestedNavigation() {\n return this.navigationId !== 0;\n }\n constructor() {\n this.currentNavigation = null;\n this.currentTransition = null;\n this.lastSuccessfulNavigation = null;\n /**\n * These events are used to communicate back to the Router about the state of the transition. The\n * Router wants to respond to these events in various ways. Because the `NavigationTransition`\n * class is not public, this event subject is not publicly exposed.\n */\n this.events = new Subject();\n /**\n * Used to abort the current transition with an error.\n */\n this.transitionAbortSubject = new Subject();\n this.configLoader = inject(RouterConfigLoader);\n this.environmentInjector = inject(EnvironmentInjector);\n this.urlSerializer = inject(UrlSerializer);\n this.rootContexts = inject(ChildrenOutletContexts);\n this.inputBindingEnabled = inject(INPUT_BINDER, { optional: true }) !== null;\n this.navigationId = 0;\n /**\n * Hook that enables you to pause navigation after the preactivation phase.\n * Used by `RouterModule`.\n *\n * @internal\n */\n this.afterPreactivation = () => of(void 0);\n /** @internal */\n this.rootComponentType = null;\n const onLoadStart = (r) => this.events.next(new RouteConfigLoadStart(r));\n const onLoadEnd = (r) => this.events.next(new RouteConfigLoadEnd(r));\n this.configLoader.onLoadEndListener = onLoadEnd;\n this.configLoader.onLoadStartListener = onLoadStart;\n }\n complete() {\n this.transitions?.complete();\n }\n handleNavigationRequest(request) {\n const id = ++this.navigationId;\n this.transitions?.next({ ...this.transitions.value, ...request, id });\n }\n setupNavigations(router, initialUrlTree, initialRouterState) {\n this.transitions = new BehaviorSubject({\n id: 0,\n currentUrlTree: initialUrlTree,\n currentRawUrl: initialUrlTree,\n currentBrowserUrl: initialUrlTree,\n extractedUrl: router.urlHandlingStrategy.extract(initialUrlTree),\n urlAfterRedirects: router.urlHandlingStrategy.extract(initialUrlTree),\n rawUrl: initialUrlTree,\n extras: {},\n resolve: null,\n reject: null,\n promise: Promise.resolve(true),\n source: IMPERATIVE_NAVIGATION,\n restoredState: null,\n currentSnapshot: initialRouterState.snapshot,\n targetSnapshot: null,\n currentRouterState: initialRouterState,\n targetRouterState: null,\n guards: { canActivateChecks: [], canDeactivateChecks: [] },\n guardsResult: null,\n });\n return this.transitions.pipe(filter(t => t.id !== 0), \n // Extract URL\n map(t => ({ ...t, extractedUrl: router.urlHandlingStrategy.extract(t.rawUrl) })), \n // Using switchMap so we cancel executing navigations when a new one comes in\n switchMap(overallTransitionState => {\n this.currentTransition = overallTransitionState;\n let completed = false;\n let errored = false;\n return of(overallTransitionState)\n .pipe(\n // Store the Navigation object\n tap(t => {\n this.currentNavigation = {\n id: t.id,\n initialUrl: t.rawUrl,\n extractedUrl: t.extractedUrl,\n trigger: t.source,\n extras: t.extras,\n previousNavigation: !this.lastSuccessfulNavigation ? null : {\n ...this.lastSuccessfulNavigation,\n previousNavigation: null,\n },\n };\n }), switchMap(t => {\n const browserUrlTree = t.currentBrowserUrl.toString();\n const urlTransition = !router.navigated ||\n t.extractedUrl.toString() !== browserUrlTree ||\n // Navigations which succeed or ones which fail and are cleaned up\n // correctly should result in `browserUrlTree` and `currentUrlTree`\n // matching. If this is not the case, assume something went wrong and\n // try processing the URL again.\n browserUrlTree !== t.currentUrlTree.toString();\n const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation;\n if (!urlTransition && onSameUrlNavigation !== 'reload') {\n const reason = (typeof ngDevMode === 'undefined' || ngDevMode) ?\n `Navigation to ${t.rawUrl} was ignored because it is the same as the current Router URL.` :\n '';\n this.events.next(new NavigationSkipped(t.id, this.urlSerializer.serialize(t.rawUrl), reason, 0 /* NavigationSkippedCode.IgnoredSameUrlNavigation */));\n t.resolve(null);\n return EMPTY;\n }\n if (router.urlHandlingStrategy.shouldProcessUrl(t.rawUrl)) {\n return of(t).pipe(\n // Fire NavigationStart event\n switchMap(t => {\n const transition = this.transitions?.getValue();\n this.events.next(new NavigationStart(t.id, this.urlSerializer.serialize(t.extractedUrl), t.source, t.restoredState));\n if (transition !== this.transitions?.getValue()) {\n return EMPTY;\n }\n // This delay is required to match old behavior that forced\n // navigation to always be async\n return Promise.resolve(t);\n }), \n // Recognize\n recognize(this.environmentInjector, this.configLoader, this.rootComponentType, router.config, this.urlSerializer, router.paramsInheritanceStrategy), \n // Update URL if in `eager` update mode\n tap(t => {\n overallTransitionState.targetSnapshot = t.targetSnapshot;\n overallTransitionState.urlAfterRedirects = t.urlAfterRedirects;\n this.currentNavigation = {\n ...this.currentNavigation,\n finalUrl: t.urlAfterRedirects\n };\n // Fire RoutesRecognized\n const routesRecognized = new RoutesRecognized(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(routesRecognized);\n }));\n }\n else if (urlTransition &&\n router.urlHandlingStrategy.shouldProcessUrl(t.currentRawUrl)) {\n /* When the current URL shouldn't be processed, but the previous one\n * was, we handle this \"error condition\" by navigating to the\n * previously successful URL, but leaving the URL intact.*/\n const { id, extractedUrl, source, restoredState, extras } = t;\n const navStart = new NavigationStart(id, this.urlSerializer.serialize(extractedUrl), source, restoredState);\n this.events.next(navStart);\n const targetSnapshot = createEmptyState(extractedUrl, this.rootComponentType).snapshot;\n this.currentTransition = overallTransitionState = {\n ...t,\n targetSnapshot,\n urlAfterRedirects: extractedUrl,\n extras: { ...extras, skipLocationChange: false, replaceUrl: false },\n };\n return of(overallTransitionState);\n }\n else {\n /* When neither the current or previous URL can be processed, do\n * nothing other than update router's internal reference to the\n * current \"settled\" URL. This way the next navigation will be coming\n * from the current URL in the browser.\n */\n const reason = (typeof ngDevMode === 'undefined' || ngDevMode) ?\n `Navigation was ignored because the UrlHandlingStrategy` +\n ` indicated neither the current URL ${t.currentRawUrl} nor target URL ${t.rawUrl} should be processed.` :\n '';\n this.events.next(new NavigationSkipped(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, 1 /* NavigationSkippedCode.IgnoredByUrlHandlingStrategy */));\n t.resolve(null);\n return EMPTY;\n }\n }), \n // --- GUARDS ---\n tap(t => {\n const guardsStart = new GuardsCheckStart(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(guardsStart);\n }), map(t => {\n this.currentTransition = overallTransitionState = {\n ...t,\n guards: getAllRouteGuards(t.targetSnapshot, t.currentSnapshot, this.rootContexts)\n };\n return overallTransitionState;\n }), checkGuards(this.environmentInjector, (evt) => this.events.next(evt)), tap(t => {\n overallTransitionState.guardsResult = t.guardsResult;\n if (isUrlTree(t.guardsResult)) {\n throw redirectingNavigationError(this.urlSerializer, t.guardsResult);\n }\n const guardsEnd = new GuardsCheckEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot, !!t.guardsResult);\n this.events.next(guardsEnd);\n }), filter(t => {\n if (!t.guardsResult) {\n this.cancelNavigationTransition(t, '', 3 /* NavigationCancellationCode.GuardRejected */);\n return false;\n }\n return true;\n }), \n // --- RESOLVE ---\n switchTap(t => {\n if (t.guards.canActivateChecks.length) {\n return of(t).pipe(tap(t => {\n const resolveStart = new ResolveStart(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(resolveStart);\n }), switchMap(t => {\n let dataResolved = false;\n return of(t).pipe(resolveData(router.paramsInheritanceStrategy, this.environmentInjector), tap({\n next: () => dataResolved = true,\n complete: () => {\n if (!dataResolved) {\n this.cancelNavigationTransition(t, (typeof ngDevMode === 'undefined' || ngDevMode) ?\n `At least one route resolver didn't emit any value.` :\n '', 2 /* NavigationCancellationCode.NoDataFromResolver */);\n }\n }\n }));\n }), tap(t => {\n const resolveEnd = new ResolveEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(resolveEnd);\n }));\n }\n return undefined;\n }), \n // --- LOAD COMPONENTS ---\n switchTap((t) => {\n const loadComponents = (route) => {\n const loaders = [];\n if (route.routeConfig?.loadComponent &&\n !route.routeConfig._loadedComponent) {\n loaders.push(this.configLoader.loadComponent(route.routeConfig)\n .pipe(tap(loadedComponent => {\n route.component = loadedComponent;\n }), map(() => void 0)));\n }\n for (const child of route.children) {\n loaders.push(...loadComponents(child));\n }\n return loaders;\n };\n return combineLatest(loadComponents(t.targetSnapshot.root))\n .pipe(defaultIfEmpty(), take(1));\n }), switchTap(() => this.afterPreactivation()), map((t) => {\n const targetRouterState = createRouterState(router.routeReuseStrategy, t.targetSnapshot, t.currentRouterState);\n this.currentTransition =\n overallTransitionState = { ...t, targetRouterState };\n return overallTransitionState;\n }), tap(() => {\n this.events.next(new BeforeActivateRoutes());\n }), activateRoutes(this.rootContexts, router.routeReuseStrategy, (evt) => this.events.next(evt), this.inputBindingEnabled), \n // Ensure that if some observable used to drive the transition doesn't\n // complete, the navigation still finalizes This should never happen, but\n // this is done as a safety measure to avoid surfacing this error (#49567).\n take(1), tap({\n next: (t) => {\n completed = true;\n this.lastSuccessfulNavigation = this.currentNavigation;\n this.events.next(new NavigationEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects)));\n router.titleStrategy?.updateTitle(t.targetRouterState.snapshot);\n t.resolve(true);\n },\n complete: () => {\n completed = true;\n }\n }), \n // There used to be a lot more logic happening directly within the\n // transition Observable. Some of this logic has been refactored out to\n // other places but there may still be errors that happen there. This gives\n // us a way to cancel the transition from the outside. This may also be\n // required in the future to support something like the abort signal of the\n // Navigation API where the navigation gets aborted from outside the\n // transition.\n takeUntil(this.transitionAbortSubject.pipe(tap(err => {\n throw err;\n }))), finalize(() => {\n /* When the navigation stream finishes either through error or success,\n * we set the `completed` or `errored` flag. However, there are some\n * situations where we could get here without either of those being set.\n * For instance, a redirect during NavigationStart. Therefore, this is a\n * catch-all to make sure the NavigationCancel event is fired when a\n * navigation gets cancelled but not caught by other means. */\n if (!completed && !errored) {\n const cancelationReason = (typeof ngDevMode === 'undefined' || ngDevMode) ?\n `Navigation ID ${overallTransitionState\n .id} is not equal to the current navigation id ${this.navigationId}` :\n '';\n this.cancelNavigationTransition(overallTransitionState, cancelationReason, 1 /* NavigationCancellationCode.SupersededByNewNavigation */);\n }\n // Only clear current navigation if it is still set to the one that\n // finalized.\n if (this.currentNavigation?.id === overallTransitionState.id) {\n this.currentNavigation = null;\n }\n }), catchError((e) => {\n errored = true;\n /* This error type is issued during Redirect, and is handled as a\n * cancellation rather than an error. */\n if (isNavigationCancelingError$1(e)) {\n this.events.next(new NavigationCancel(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e.message, e.cancellationCode));\n // When redirecting, we need to delay resolving the navigation\n // promise and push it to the redirect navigation\n if (!isRedirectingNavigationCancelingError$1(e)) {\n overallTransitionState.resolve(false);\n }\n else {\n this.events.next(new RedirectRequest(e.url));\n }\n /* All other errors should reset to the router's internal URL reference\n * to the pre-error state. */\n }\n else {\n this.events.next(new NavigationError(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e, overallTransitionState.targetSnapshot ?? undefined));\n try {\n overallTransitionState.resolve(router.errorHandler(e));\n }\n catch (ee) {\n overallTransitionState.reject(ee);\n }\n }\n return EMPTY;\n }));\n // casting because `pipe` returns observable({}) when called with 8+ arguments\n }));\n }\n cancelNavigationTransition(t, reason, code) {\n const navCancel = new NavigationCancel(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, code);\n this.events.next(navCancel);\n t.resolve(false);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NavigationTransitions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\nfunction isBrowserTriggeredNavigation(source) {\n return source !== IMPERATIVE_NAVIGATION;\n}\n\n/**\n * Provides a strategy for setting the page title after a router navigation.\n *\n * The built-in implementation traverses the router state snapshot and finds the deepest primary\n * outlet with `title` property. Given the `Routes` below, navigating to\n * `/base/child(popup:aux)` would result in the document title being set to \"child\".\n * ```\n * [\n * {path: 'base', title: 'base', children: [\n * {path: 'child', title: 'child'},\n * ],\n * {path: 'aux', outlet: 'popup', title: 'popupTitle'}\n * ]\n * ```\n *\n * This class can be used as a base class for custom title strategies. That is, you can create your\n * own class that extends the `TitleStrategy`. Note that in the above example, the `title`\n * from the named outlet is never used. However, a custom strategy might be implemented to\n * incorporate titles in named outlets.\n *\n * @publicApi\n * @see [Page title guide](guide/router#setting-the-page-title)\n */\nclass TitleStrategy {\n /**\n * @returns The `title` of the deepest primary route.\n */\n buildTitle(snapshot) {\n let pageTitle;\n let route = snapshot.root;\n while (route !== undefined) {\n pageTitle = this.getResolvedTitleForRoute(route) ?? pageTitle;\n route = route.children.find(child => child.outlet === PRIMARY_OUTLET);\n }\n return pageTitle;\n }\n /**\n * Given an `ActivatedRouteSnapshot`, returns the final value of the\n * `Route.title` property, which can either be a static string or a resolved value.\n */\n getResolvedTitleForRoute(snapshot) {\n return snapshot.data[RouteTitleKey];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: TitleStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]\n }] });\n/**\n * The default `TitleStrategy` used by the router that updates the title using the `Title` service.\n */\nclass DefaultTitleStrategy extends TitleStrategy {\n constructor(title) {\n super();\n this.title = title;\n }\n /**\n * Sets the title of the browser to the given value.\n *\n * @param title The `pageTitle` from the deepest primary route.\n */\n updateTitle(snapshot) {\n const title = this.buildTitle(snapshot);\n if (title !== undefined) {\n this.title.setTitle(title);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultTitleStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Title }]; } });\n\n/**\n * @description\n *\n * Provides a way to customize when activated routes get reused.\n *\n * @publicApi\n */\nclass RouteReuseStrategy {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouteReuseStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]\n }] });\n/**\n * @description\n *\n * This base route reuse strategy only reuses routes when the matched router configs are\n * identical. This prevents components from being destroyed and recreated\n * when just the route parameters, query parameters or fragment change\n * (that is, the existing component is _reused_).\n *\n * This strategy does not store any routes for later reuse.\n *\n * Angular uses this strategy by default.\n *\n *\n * It can be used as a base class for custom route reuse strategies, i.e. you can create your own\n * class that extends the `BaseRouteReuseStrategy` one.\n * @publicApi\n */\nclass BaseRouteReuseStrategy {\n /**\n * Whether the given route should detach for later reuse.\n * Always returns false for `BaseRouteReuseStrategy`.\n * */\n shouldDetach(route) {\n return false;\n }\n /**\n * A no-op; the route is never stored since this strategy never detaches routes for later re-use.\n */\n store(route, detachedTree) { }\n /** Returns `false`, meaning the route (and its subtree) is never reattached */\n shouldAttach(route) {\n return false;\n }\n /** Returns `null` because this strategy does not store routes for later re-use. */\n retrieve(route) {\n return null;\n }\n /**\n * Determines if a route should be reused.\n * This strategy returns `true` when the future route config and current route config are\n * identical.\n */\n shouldReuseRoute(future, curr) {\n return future.routeConfig === curr.routeConfig;\n }\n}\nclass DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * A [DI token](guide/glossary/#di-token) for the router service.\n *\n * @publicApi\n */\nconst ROUTER_CONFIGURATION = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'router config' : '', {\n providedIn: 'root',\n factory: () => ({}),\n});\n\n/**\n * @description\n *\n * Provides a way to migrate AngularJS applications to Angular.\n *\n * @publicApi\n */\nclass UrlHandlingStrategy {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UrlHandlingStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]\n }] });\n/**\n * @publicApi\n */\nclass DefaultUrlHandlingStrategy {\n shouldProcessUrl(url) {\n return true;\n }\n extract(url) {\n return url;\n }\n merge(newUrlPart, wholeUrl) {\n return newUrlPart;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nvar NavigationResult;\n(function (NavigationResult) {\n NavigationResult[NavigationResult[\"COMPLETE\"] = 0] = \"COMPLETE\";\n NavigationResult[NavigationResult[\"FAILED\"] = 1] = \"FAILED\";\n NavigationResult[NavigationResult[\"REDIRECTING\"] = 2] = \"REDIRECTING\";\n})(NavigationResult || (NavigationResult = {}));\n/**\n * Performs the given action once the router finishes its next/current navigation.\n *\n * The navigation is considered complete under the following conditions:\n * - `NavigationCancel` event emits and the code is not `NavigationCancellationCode.Redirect` or\n * `NavigationCancellationCode.SupersededByNewNavigation`. In these cases, the\n * redirecting/superseding navigation must finish.\n * - `NavigationError`, `NavigationEnd`, or `NavigationSkipped` event emits\n */\nfunction afterNextNavigation(router, action) {\n router.events\n .pipe(filter((e) => e instanceof NavigationEnd || e instanceof NavigationCancel ||\n e instanceof NavigationError || e instanceof NavigationSkipped), map(e => {\n if (e instanceof NavigationEnd || e instanceof NavigationSkipped) {\n return NavigationResult.COMPLETE;\n }\n const redirecting = e instanceof NavigationCancel ?\n (e.code === 0 /* NavigationCancellationCode.Redirect */ ||\n e.code === 1 /* NavigationCancellationCode.SupersededByNewNavigation */) :\n false;\n return redirecting ? NavigationResult.REDIRECTING : NavigationResult.FAILED;\n }), filter((result) => result !== NavigationResult.REDIRECTING), take(1))\n .subscribe(() => {\n action();\n });\n}\n\nfunction defaultErrorHandler(error) {\n throw error;\n}\nfunction defaultMalformedUriErrorHandler(error, urlSerializer, url) {\n return urlSerializer.parse('/');\n}\n/**\n * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `true`\n * (exact = true).\n */\nconst exactMatchOptions = {\n paths: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored',\n queryParams: 'exact'\n};\n/**\n * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `false`\n * (exact = false).\n */\nconst subsetMatchOptions = {\n paths: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n queryParams: 'subset'\n};\n/**\n * @description\n *\n * A service that provides navigation among views and URL manipulation capabilities.\n *\n * @see {@link Route}\n * @see [Routing and Navigation Guide](guide/router).\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass Router {\n // TODO(b/260747083): This should not exist and navigationId should be private in\n // `NavigationTransitions`\n get navigationId() {\n return this.navigationTransitions.navigationId;\n }\n /**\n * The ɵrouterPageId of whatever page is currently active in the browser history. This is\n * important for computing the target page id for new navigations because we need to ensure each\n * page id in the browser history is 1 more than the previous entry.\n */\n get browserPageId() {\n if (this.canceledNavigationResolution !== 'computed') {\n return this.currentPageId;\n }\n return this.location.getState()?.ɵrouterPageId ?? this.currentPageId;\n }\n /**\n * An event stream for routing events.\n */\n get events() {\n // TODO(atscott): This _should_ be events.asObservable(). However, this change requires internal\n // cleanup: tests are doing `(route.events as Subject<Event>).next(...)`. This isn't\n // allowed/supported but we still have to fix these or file bugs against the teams before making\n // the change.\n return this._events;\n }\n constructor() {\n this.disposed = false;\n /**\n * The id of the currently active page in the router.\n * Updated to the transition's target id on a successful navigation.\n *\n * This is used to track what page the router last activated. When an attempted navigation fails,\n * the router can then use this to compute how to restore the state back to the previously active\n * page.\n */\n this.currentPageId = 0;\n this.console = inject(ɵConsole);\n this.isNgZoneEnabled = false;\n /**\n * The private `Subject` type for the public events exposed in the getter. This is used internally\n * to push events to. The separate field allows us to expose separate types in the public API\n * (i.e., an Observable rather than the Subject).\n */\n this._events = new Subject();\n this.options = inject(ROUTER_CONFIGURATION, { optional: true }) || {};\n this.pendingTasks = inject(ɵInitialRenderPendingTasks);\n /**\n * A handler for navigation errors in this NgModule.\n *\n * @deprecated Subscribe to the `Router` events and watch for `NavigationError` instead.\n * `provideRouter` has the `withNavigationErrorHandler` feature to make this easier.\n * @see {@link withNavigationErrorHandler}\n */\n this.errorHandler = this.options.errorHandler || defaultErrorHandler;\n /**\n * A handler for errors thrown by `Router.parseUrl(url)`\n * when `url` contains an invalid character.\n * The most common case is a `%` sign\n * that's not encoded and is not part of a percent encoded sequence.\n *\n * @deprecated URI parsing errors should be handled in the `UrlSerializer`.\n *\n * @see {@link RouterModule}\n */\n this.malformedUriErrorHandler = this.options.malformedUriErrorHandler || defaultMalformedUriErrorHandler;\n /**\n * True if at least one navigation event has occurred,\n * false otherwise.\n */\n this.navigated = false;\n this.lastSuccessfulId = -1;\n /**\n * A strategy for extracting and merging URLs.\n * Used for AngularJS to Angular migrations.\n *\n * @deprecated Configure using `providers` instead:\n * `{provide: UrlHandlingStrategy, useClass: MyStrategy}`.\n */\n this.urlHandlingStrategy = inject(UrlHandlingStrategy);\n /**\n * A strategy for re-using routes.\n *\n * @deprecated Configure using `providers` instead:\n * `{provide: RouteReuseStrategy, useClass: MyStrategy}`.\n */\n this.routeReuseStrategy = inject(RouteReuseStrategy);\n /**\n * A strategy for setting the title based on the `routerState`.\n *\n * @deprecated Configure using `providers` instead:\n * `{provide: TitleStrategy, useClass: MyStrategy}`.\n */\n this.titleStrategy = inject(TitleStrategy);\n /**\n * How to handle a navigation request to the current URL.\n *\n *\n * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.\n * @see {@link withRouterConfig}\n * @see {@link provideRouter}\n * @see {@link RouterModule}\n */\n this.onSameUrlNavigation = this.options.onSameUrlNavigation || 'ignore';\n /**\n * How to merge parameters, data, resolved data, and title from parent to child\n * routes. One of:\n *\n * - `'emptyOnly'` : Inherit parent parameters, data, and resolved data\n * for path-less or component-less routes.\n * - `'always'` : Inherit parent parameters, data, and resolved data\n * for all child routes.\n *\n * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.\n * @see {@link withRouterConfig}\n * @see {@link provideRouter}\n * @see {@link RouterModule}\n */\n this.paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || 'emptyOnly';\n /**\n * Determines when the router updates the browser URL.\n * By default (`\"deferred\"`), updates the browser URL after navigation has finished.\n * Set to `'eager'` to update the browser URL at the beginning of navigation.\n * You can choose to update early so that, if navigation fails,\n * you can show an error message with the URL that failed.\n *\n * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.\n * @see {@link withRouterConfig}\n * @see {@link provideRouter}\n * @see {@link RouterModule}\n */\n this.urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';\n /**\n * Configures how the Router attempts to restore state when a navigation is cancelled.\n *\n * 'replace' - Always uses `location.replaceState` to set the browser state to the state of the\n * router before the navigation started. This means that if the URL of the browser is updated\n * _before_ the navigation is canceled, the Router will simply replace the item in history rather\n * than trying to restore to the previous location in the session history. This happens most\n * frequently with `urlUpdateStrategy: 'eager'` and navigations with the browser back/forward\n * buttons.\n *\n * 'computed' - Will attempt to return to the same index in the session history that corresponds\n * to the Angular route when the navigation gets cancelled. For example, if the browser back\n * button is clicked and the navigation is cancelled, the Router will trigger a forward navigation\n * and vice versa.\n *\n * Note: the 'computed' option is incompatible with any `UrlHandlingStrategy` which only\n * handles a portion of the URL because the history restoration navigates to the previous place in\n * the browser history rather than simply resetting a portion of the URL.\n *\n * The default value is `replace`.\n *\n * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.\n * @see {@link withRouterConfig}\n * @see {@link provideRouter}\n * @see {@link RouterModule}\n */\n this.canceledNavigationResolution = this.options.canceledNavigationResolution || 'replace';\n this.config = inject(ROUTES, { optional: true })?.flat() ?? [];\n this.navigationTransitions = inject(NavigationTransitions);\n this.urlSerializer = inject(UrlSerializer);\n this.location = inject(Location);\n /**\n * Indicates whether the application has opted in to binding Router data to component inputs.\n *\n * This option is enabled by the `withComponentInputBinding` feature of `provideRouter` or\n * `bindToComponentInputs` in the `ExtraOptions` of `RouterModule.forRoot`.\n */\n this.componentInputBindingEnabled = !!inject(INPUT_BINDER, { optional: true });\n this.eventsSubscription = new Subscription();\n this.isNgZoneEnabled = inject(NgZone) instanceof NgZone && NgZone.isInAngularZone();\n this.resetConfig(this.config);\n this.currentUrlTree = new UrlTree();\n this.rawUrlTree = this.currentUrlTree;\n this.browserUrlTree = this.currentUrlTree;\n this.routerState = createEmptyState(this.currentUrlTree, null);\n this.navigationTransitions.setupNavigations(this, this.currentUrlTree, this.routerState)\n .subscribe(t => {\n this.lastSuccessfulId = t.id;\n this.currentPageId = this.browserPageId;\n }, e => {\n this.console.warn(`Unhandled Navigation Error: ${e}`);\n });\n this.subscribeToNavigationEvents();\n }\n subscribeToNavigationEvents() {\n const subscription = this.navigationTransitions.events.subscribe(e => {\n try {\n const { currentTransition } = this.navigationTransitions;\n if (currentTransition === null) {\n if (isPublicRouterEvent(e)) {\n this._events.next(e);\n }\n return;\n }\n if (e instanceof NavigationStart) {\n // If the source of the navigation is from a browser event, the URL is\n // already updated. We already need to sync the internal state.\n if (isBrowserTriggeredNavigation(currentTransition.source)) {\n this.browserUrlTree = currentTransition.extractedUrl;\n }\n }\n else if (e instanceof NavigationSkipped) {\n this.rawUrlTree = currentTransition.rawUrl;\n }\n else if (e instanceof RoutesRecognized) {\n if (this.urlUpdateStrategy === 'eager') {\n if (!currentTransition.extras.skipLocationChange) {\n const rawUrl = this.urlHandlingStrategy.merge(currentTransition.urlAfterRedirects, currentTransition.rawUrl);\n this.setBrowserUrl(rawUrl, currentTransition);\n }\n this.browserUrlTree = currentTransition.urlAfterRedirects;\n }\n }\n else if (e instanceof BeforeActivateRoutes) {\n this.currentUrlTree = currentTransition.urlAfterRedirects;\n this.rawUrlTree = this.urlHandlingStrategy.merge(currentTransition.urlAfterRedirects, currentTransition.rawUrl);\n this.routerState = currentTransition.targetRouterState;\n if (this.urlUpdateStrategy === 'deferred') {\n if (!currentTransition.extras.skipLocationChange) {\n this.setBrowserUrl(this.rawUrlTree, currentTransition);\n }\n this.browserUrlTree = currentTransition.urlAfterRedirects;\n }\n }\n else if (e instanceof NavigationCancel) {\n if (e.code !== 0 /* NavigationCancellationCode.Redirect */ &&\n e.code !== 1 /* NavigationCancellationCode.SupersededByNewNavigation */) {\n // It seems weird that `navigated` is set to `true` when the navigation is rejected,\n // however it's how things were written initially. Investigation would need to be done\n // to determine if this can be removed.\n this.navigated = true;\n }\n if (e.code === 3 /* NavigationCancellationCode.GuardRejected */ ||\n e.code === 2 /* NavigationCancellationCode.NoDataFromResolver */) {\n this.restoreHistory(currentTransition);\n }\n }\n else if (e instanceof RedirectRequest) {\n const mergedTree = this.urlHandlingStrategy.merge(e.url, currentTransition.currentRawUrl);\n const extras = {\n skipLocationChange: currentTransition.extras.skipLocationChange,\n // The URL is already updated at this point if we have 'eager' URL\n // updates or if the navigation was triggered by the browser (back\n // button, URL bar, etc). We want to replace that item in history\n // if the navigation is rejected.\n replaceUrl: this.urlUpdateStrategy === 'eager' ||\n isBrowserTriggeredNavigation(currentTransition.source)\n };\n this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras, {\n resolve: currentTransition.resolve,\n reject: currentTransition.reject,\n promise: currentTransition.promise\n });\n }\n if (e instanceof NavigationError) {\n this.restoreHistory(currentTransition, true);\n }\n if (e instanceof NavigationEnd) {\n this.navigated = true;\n }\n // Note that it's important to have the Router process the events _before_ the event is\n // pushed through the public observable. This ensures the correct router state is in place\n // before applications observe the events.\n if (isPublicRouterEvent(e)) {\n this._events.next(e);\n }\n }\n catch (e) {\n this.navigationTransitions.transitionAbortSubject.next(e);\n }\n });\n this.eventsSubscription.add(subscription);\n }\n /** @internal */\n resetRootComponentType(rootComponentType) {\n // TODO: vsavkin router 4.0 should make the root component set to null\n // this will simplify the lifecycle of the router.\n this.routerState.root.component = rootComponentType;\n this.navigationTransitions.rootComponentType = rootComponentType;\n }\n /**\n * Sets up the location change listener and performs the initial navigation.\n */\n initialNavigation() {\n this.setUpLocationChangeListener();\n if (!this.navigationTransitions.hasRequestedNavigation) {\n const state = this.location.getState();\n this.navigateToSyncWithBrowser(this.location.path(true), IMPERATIVE_NAVIGATION, state);\n }\n }\n /**\n * Sets up the location change listener. This listener detects navigations triggered from outside\n * the Router (the browser back/forward buttons, for example) and schedules a corresponding Router\n * navigation so that the correct events, guards, etc. are triggered.\n */\n setUpLocationChangeListener() {\n // Don't need to use Zone.wrap any more, because zone.js\n // already patch onPopState, so location change callback will\n // run into ngZone\n if (!this.locationSubscription) {\n this.locationSubscription = this.location.subscribe(event => {\n const source = event['type'] === 'popstate' ? 'popstate' : 'hashchange';\n if (source === 'popstate') {\n // The `setTimeout` was added in #12160 and is likely to support Angular/AngularJS\n // hybrid apps.\n setTimeout(() => {\n this.navigateToSyncWithBrowser(event['url'], source, event.state);\n }, 0);\n }\n });\n }\n }\n /**\n * Schedules a router navigation to synchronize Router state with the browser state.\n *\n * This is done as a response to a popstate event and the initial navigation. These\n * two scenarios represent times when the browser URL/state has been updated and\n * the Router needs to respond to ensure its internal state matches.\n */\n navigateToSyncWithBrowser(url, source, state) {\n const extras = { replaceUrl: true };\n // TODO: restoredState should always include the entire state, regardless\n // of navigationId. This requires a breaking change to update the type on\n // NavigationStart’s restoredState, which currently requires navigationId\n // to always be present. The Router used to only restore history state if\n // a navigationId was present.\n // The stored navigationId is used by the RouterScroller to retrieve the scroll\n // position for the page.\n const restoredState = state?.navigationId ? state : null;\n // Separate to NavigationStart.restoredState, we must also restore the state to\n // history.state and generate a new navigationId, since it will be overwritten\n if (state) {\n const stateCopy = { ...state };\n delete stateCopy.navigationId;\n delete stateCopy.ɵrouterPageId;\n if (Object.keys(stateCopy).length !== 0) {\n extras.state = stateCopy;\n }\n }\n const urlTree = this.parseUrl(url);\n this.scheduleNavigation(urlTree, source, restoredState, extras);\n }\n /** The current URL. */\n get url() {\n return this.serializeUrl(this.currentUrlTree);\n }\n /**\n * Returns the current `Navigation` object when the router is navigating,\n * and `null` when idle.\n */\n getCurrentNavigation() {\n return this.navigationTransitions.currentNavigation;\n }\n /**\n * The `Navigation` object of the most recent navigation to succeed and `null` if there\n * has not been a successful navigation yet.\n */\n get lastSuccessfulNavigation() {\n return this.navigationTransitions.lastSuccessfulNavigation;\n }\n /**\n * Resets the route configuration used for navigation and generating links.\n *\n * @param config The route array for the new configuration.\n *\n * @usageNotes\n *\n * ```\n * router.resetConfig([\n * { path: 'team/:id', component: TeamCmp, children: [\n * { path: 'simple', component: SimpleCmp },\n * { path: 'user/:name', component: UserCmp }\n * ]}\n * ]);\n * ```\n */\n resetConfig(config) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && validateConfig(config);\n this.config = config.map(standardizeConfig);\n this.navigated = false;\n this.lastSuccessfulId = -1;\n }\n /** @nodoc */\n ngOnDestroy() {\n this.dispose();\n }\n /** Disposes of the router. */\n dispose() {\n this.navigationTransitions.complete();\n if (this.locationSubscription) {\n this.locationSubscription.unsubscribe();\n this.locationSubscription = undefined;\n }\n this.disposed = true;\n this.eventsSubscription.unsubscribe();\n }\n /**\n * Appends URL segments to the current URL tree to create a new URL tree.\n *\n * @param commands An array of URL fragments with which to construct the new URL tree.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the current URL tree or the one provided in the `relativeTo`\n * property of the options object, if supplied.\n * @param navigationExtras Options that control the navigation strategy.\n * @returns The new URL tree.\n *\n * @usageNotes\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it,\n * // you can do the following:\n * router.createUrlTree([{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]);\n *\n * // remove the right secondary node\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // assuming the current url is `/team/33/user/11` and the route points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], {relativeTo: route});\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], {relativeTo: route});\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});\n *\n * Note that a value of `null` or `undefined` for `relativeTo` indicates that the\n * tree should be created relative to the root.\n * ```\n */\n createUrlTree(commands, navigationExtras = {}) {\n const { relativeTo, queryParams, fragment, queryParamsHandling, preserveFragment } = navigationExtras;\n const f = preserveFragment ? this.currentUrlTree.fragment : fragment;\n let q = null;\n switch (queryParamsHandling) {\n case 'merge':\n q = { ...this.currentUrlTree.queryParams, ...queryParams };\n break;\n case 'preserve':\n q = this.currentUrlTree.queryParams;\n break;\n default:\n q = queryParams || null;\n }\n if (q !== null) {\n q = this.removeEmptyProps(q);\n }\n let relativeToUrlSegmentGroup;\n try {\n const relativeToSnapshot = relativeTo ? relativeTo.snapshot : this.routerState.snapshot.root;\n relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeToSnapshot);\n }\n catch (e) {\n // This is strictly for backwards compatibility with tests that create\n // invalid `ActivatedRoute` mocks.\n // Note: the difference between having this fallback for invalid `ActivatedRoute` setups and\n // just throwing is ~500 test failures. Fixing all of those tests by hand is not feasible at\n // the moment.\n if (typeof commands[0] !== 'string' || !commands[0].startsWith('/')) {\n // Navigations that were absolute in the old way of creating UrlTrees\n // would still work because they wouldn't attempt to match the\n // segments in the `ActivatedRoute` to the `currentUrlTree` but\n // instead just replace the root segment with the navigation result.\n // Non-absolute navigations would fail to apply the commands because\n // the logic could not find the segment to replace (so they'd act like there were no\n // commands).\n commands = [];\n }\n relativeToUrlSegmentGroup = this.currentUrlTree.root;\n }\n return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, q, f ?? null);\n }\n /**\n * Navigates to a view using an absolute route path.\n *\n * @param url An absolute path for a defined route. The function does not apply any delta to the\n * current URL.\n * @param extras An object containing properties that modify the navigation strategy.\n *\n * @returns A Promise that resolves to 'true' when navigation succeeds,\n * to 'false' when navigation fails, or is rejected on error.\n *\n * @usageNotes\n *\n * The following calls request navigation to an absolute path.\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n *\n * // Navigate without updating the URL\n * router.navigateByUrl(\"/team/33/user/11\", { skipLocationChange: true });\n * ```\n *\n * @see [Routing and Navigation guide](guide/router)\n *\n */\n navigateByUrl(url, extras = {\n skipLocationChange: false\n }) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (this.isNgZoneEnabled && !NgZone.isInAngularZone()) {\n this.console.warn(`Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?`);\n }\n }\n const urlTree = isUrlTree(url) ? url : this.parseUrl(url);\n const mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree);\n return this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras);\n }\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no starting route is provided, the navigation is absolute.\n *\n * @param commands An array of URL fragments with which to construct the target URL.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the current URL or the one provided in the `relativeTo` property\n * of the options object, if supplied.\n * @param extras An options object that determines how the URL should be constructed or\n * interpreted.\n *\n * @returns A Promise that resolves to `true` when navigation succeeds, to `false` when navigation\n * fails,\n * or is rejected on error.\n *\n * @usageNotes\n *\n * The following calls request navigation to a dynamic route path relative to the current URL.\n *\n * ```\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route});\n *\n * // Navigate without updating the URL, overriding the default behavior\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});\n * ```\n *\n * @see [Routing and Navigation guide](guide/router)\n *\n */\n navigate(commands, extras = { skipLocationChange: false }) {\n validateCommands(commands);\n return this.navigateByUrl(this.createUrlTree(commands, extras), extras);\n }\n /** Serializes a `UrlTree` into a string */\n serializeUrl(url) {\n return this.urlSerializer.serialize(url);\n }\n /** Parses a string into a `UrlTree` */\n parseUrl(url) {\n let urlTree;\n try {\n urlTree = this.urlSerializer.parse(url);\n }\n catch (e) {\n urlTree = this.malformedUriErrorHandler(e, this.urlSerializer, url);\n }\n return urlTree;\n }\n isActive(url, matchOptions) {\n let options;\n if (matchOptions === true) {\n options = { ...exactMatchOptions };\n }\n else if (matchOptions === false) {\n options = { ...subsetMatchOptions };\n }\n else {\n options = matchOptions;\n }\n if (isUrlTree(url)) {\n return containsTree(this.currentUrlTree, url, options);\n }\n const urlTree = this.parseUrl(url);\n return containsTree(this.currentUrlTree, urlTree, options);\n }\n removeEmptyProps(params) {\n return Object.keys(params).reduce((result, key) => {\n const value = params[key];\n if (value !== null && value !== undefined) {\n result[key] = value;\n }\n return result;\n }, {});\n }\n /** @internal */\n scheduleNavigation(rawUrl, source, restoredState, extras, priorPromise) {\n if (this.disposed) {\n return Promise.resolve(false);\n }\n let resolve;\n let reject;\n let promise;\n if (priorPromise) {\n resolve = priorPromise.resolve;\n reject = priorPromise.reject;\n promise = priorPromise.promise;\n }\n else {\n promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n }\n // Indicate that the navigation is happening.\n const taskId = this.pendingTasks.add();\n afterNextNavigation(this, () => {\n // Remove pending task in a microtask to allow for cancelled\n // initial navigations and redirects within the same task.\n queueMicrotask(() => this.pendingTasks.remove(taskId));\n });\n this.navigationTransitions.handleNavigationRequest({\n source,\n restoredState,\n currentUrlTree: this.currentUrlTree,\n currentRawUrl: this.currentUrlTree,\n currentBrowserUrl: this.browserUrlTree,\n rawUrl,\n extras,\n resolve,\n reject,\n promise,\n currentSnapshot: this.routerState.snapshot,\n currentRouterState: this.routerState\n });\n // Make sure that the error is propagated even though `processNavigations` catch\n // handler does not rethrow\n return promise.catch((e) => {\n return Promise.reject(e);\n });\n }\n /** @internal */\n setBrowserUrl(url, transition) {\n const path = this.urlSerializer.serialize(url);\n if (this.location.isCurrentPathEqualTo(path) || !!transition.extras.replaceUrl) {\n // replacements do not update the target page\n const currentBrowserPageId = this.browserPageId;\n const state = {\n ...transition.extras.state,\n ...this.generateNgRouterState(transition.id, currentBrowserPageId)\n };\n this.location.replaceState(path, '', state);\n }\n else {\n const state = {\n ...transition.extras.state,\n ...this.generateNgRouterState(transition.id, this.browserPageId + 1)\n };\n this.location.go(path, '', state);\n }\n }\n /**\n * Performs the necessary rollback action to restore the browser URL to the\n * state before the transition.\n * @internal\n */\n restoreHistory(transition, restoringFromCaughtError = false) {\n if (this.canceledNavigationResolution === 'computed') {\n const currentBrowserPageId = this.browserPageId;\n const targetPagePosition = this.currentPageId - currentBrowserPageId;\n if (targetPagePosition !== 0) {\n this.location.historyGo(targetPagePosition);\n }\n else if (this.currentUrlTree === this.getCurrentNavigation()?.finalUrl &&\n targetPagePosition === 0) {\n // We got to the activation stage (where currentUrlTree is set to the navigation's\n // finalUrl), but we weren't moving anywhere in history (skipLocationChange or replaceUrl).\n // We still need to reset the router state back to what it was when the navigation started.\n this.resetState(transition);\n // TODO(atscott): resetting the `browserUrlTree` should really be done in `resetState`.\n // Investigate if this can be done by running TGP.\n this.browserUrlTree = transition.currentUrlTree;\n this.resetUrlToCurrentUrlTree();\n }\n else {\n // The browser URL and router state was not updated before the navigation cancelled so\n // there's no restoration needed.\n }\n }\n else if (this.canceledNavigationResolution === 'replace') {\n // TODO(atscott): It seems like we should _always_ reset the state here. It would be a no-op\n // for `deferred` navigations that haven't change the internal state yet because guards\n // reject. For 'eager' navigations, it seems like we also really should reset the state\n // because the navigation was cancelled. Investigate if this can be done by running TGP.\n if (restoringFromCaughtError) {\n this.resetState(transition);\n }\n this.resetUrlToCurrentUrlTree();\n }\n }\n resetState(t) {\n this.routerState = t.currentRouterState;\n this.currentUrlTree = t.currentUrlTree;\n // Note here that we use the urlHandlingStrategy to get the reset `rawUrlTree` because it may be\n // configured to handle only part of the navigation URL. This means we would only want to reset\n // the part of the navigation handled by the Angular router rather than the whole URL. In\n // addition, the URLHandlingStrategy may be configured to specifically preserve parts of the URL\n // when merging, such as the query params so they are not lost on a refresh.\n this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, t.rawUrl);\n }\n resetUrlToCurrentUrlTree() {\n this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree), '', this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId));\n }\n generateNgRouterState(navigationId, routerPageId) {\n if (this.canceledNavigationResolution === 'computed') {\n return { navigationId, ɵrouterPageId: routerPageId };\n }\n return { navigationId };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Router, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Router, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\nfunction validateCommands(commands) {\n for (let i = 0; i < commands.length; i++) {\n const cmd = commands[i];\n if (cmd == null) {\n throw new ɵRuntimeError(4008 /* RuntimeErrorCode.NULLISH_COMMAND */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `The requested path contains ${cmd} segment at index ${i}`);\n }\n }\n}\nfunction isPublicRouterEvent(e) {\n return (!(e instanceof BeforeActivateRoutes) && !(e instanceof RedirectRequest));\n}\n\n/**\n * @description\n *\n * When applied to an element in a template, makes that element a link\n * that initiates navigation to a route. Navigation opens one or more routed components\n * in one or more `<router-outlet>` locations on the page.\n *\n * Given a route configuration `[{ path: 'user/:name', component: UserCmp }]`,\n * the following creates a static link to the route:\n * `<a routerLink=\"/user/bob\">link to user component</a>`\n *\n * You can use dynamic values to generate the link.\n * For a dynamic link, pass an array of path segments,\n * followed by the params for each segment.\n * For example, `['/team', teamId, 'user', userName, {details: true}]`\n * generates a link to `/team/11/user/bob;details=true`.\n *\n * Multiple static segments can be merged into one term and combined with dynamic segments.\n * For example, `['/team/11/user', userName, {details: true}]`\n *\n * The input that you provide to the link is treated as a delta to the current URL.\n * For instance, suppose the current URL is `/user/(box//aux:team)`.\n * The link `<a [routerLink]=\"['/user/jim']\">Jim</a>` creates the URL\n * `/user/(jim//aux:team)`.\n * See {@link Router#createUrlTree} for more information.\n *\n * @usageNotes\n *\n * You can use absolute or relative paths in a link, set query parameters,\n * control how parameters are handled, and keep a history of navigation states.\n *\n * ### Relative link paths\n *\n * The first segment name can be prepended with `/`, `./`, or `../`.\n * * If the first segment begins with `/`, the router looks up the route from the root of the\n * app.\n * * If the first segment begins with `./`, or doesn't begin with a slash, the router\n * looks in the children of the current activated route.\n * * If the first segment begins with `../`, the router goes up one level in the route tree.\n *\n * ### Setting and handling query params and fragments\n *\n * The following link adds a query parameter and a fragment to the generated URL:\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" fragment=\"education\">\n * link to user component\n * </a>\n * ```\n * By default, the directive constructs the new URL using the given query parameters.\n * The example generates the link: `/user/bob?debug=true#education`.\n *\n * You can instruct the directive to handle query parameters differently\n * by specifying the `queryParamsHandling` option in the link.\n * Allowed values are:\n *\n * - `'merge'`: Merge the given `queryParams` into the current query params.\n * - `'preserve'`: Preserve the current query params.\n *\n * For example:\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" queryParamsHandling=\"merge\">\n * link to user component\n * </a>\n * ```\n *\n * See {@link UrlCreationOptions#queryParamsHandling}.\n *\n * ### Preserving navigation history\n *\n * You can provide a `state` value to be persisted to the browser's\n * [`History.state` property](https://developer.mozilla.org/en-US/docs/Web/API/History#Properties).\n * For example:\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" [state]=\"{tracingId: 123}\">\n * link to user component\n * </a>\n * ```\n *\n * Use {@link Router#getCurrentNavigation} to retrieve a saved\n * navigation-state value. For example, to capture the `tracingId` during the `NavigationStart`\n * event:\n *\n * ```\n * // Get NavigationStart events\n * router.events.pipe(filter(e => e instanceof NavigationStart)).subscribe(e => {\n * const navigation = router.getCurrentNavigation();\n * tracingService.trace({id: navigation.extras.state.tracingId});\n * });\n * ```\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterLink {\n constructor(router, route, tabIndexAttribute, renderer, el, locationStrategy) {\n this.router = router;\n this.route = route;\n this.tabIndexAttribute = tabIndexAttribute;\n this.renderer = renderer;\n this.el = el;\n this.locationStrategy = locationStrategy;\n /**\n * Represents an `href` attribute value applied to a host element,\n * when a host element is `<a>`. For other tags, the value is `null`.\n */\n this.href = null;\n this.commands = null;\n /** @internal */\n this.onChanges = new Subject();\n /**\n * Passed to {@link Router#createUrlTree} as part of the\n * `UrlCreationOptions`.\n * @see {@link UrlCreationOptions#preserveFragment}\n * @see {@link Router#createUrlTree}\n */\n this.preserveFragment = false;\n /**\n * Passed to {@link Router#navigateByUrl} as part of the\n * `NavigationBehaviorOptions`.\n * @see {@link NavigationBehaviorOptions#skipLocationChange}\n * @see {@link Router#navigateByUrl}\n */\n this.skipLocationChange = false;\n /**\n * Passed to {@link Router#navigateByUrl} as part of the\n * `NavigationBehaviorOptions`.\n * @see {@link NavigationBehaviorOptions#replaceUrl}\n * @see {@link Router#navigateByUrl}\n */\n this.replaceUrl = false;\n const tagName = el.nativeElement.tagName?.toLowerCase();\n this.isAnchorElement = tagName === 'a' || tagName === 'area';\n if (this.isAnchorElement) {\n this.subscription = router.events.subscribe((s) => {\n if (s instanceof NavigationEnd) {\n this.updateHref();\n }\n });\n }\n else {\n this.setTabIndexIfNotOnNativeEl('0');\n }\n }\n /**\n * Modifies the tab index if there was not a tabindex attribute on the element during\n * instantiation.\n */\n setTabIndexIfNotOnNativeEl(newTabIndex) {\n if (this.tabIndexAttribute != null /* both `null` and `undefined` */ || this.isAnchorElement) {\n return;\n }\n this.applyAttributeValue('tabindex', newTabIndex);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this.isAnchorElement) {\n this.updateHref();\n }\n // This is subscribed to by `RouterLinkActive` so that it knows to update when there are changes\n // to the RouterLinks it's tracking.\n this.onChanges.next(this);\n }\n /**\n * Commands to pass to {@link Router#createUrlTree}.\n * - **array**: commands to pass to {@link Router#createUrlTree}.\n * - **string**: shorthand for array of commands with just the string, i.e. `['/route']`\n * - **null|undefined**: effectively disables the `routerLink`\n * @see {@link Router#createUrlTree}\n */\n set routerLink(commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n this.setTabIndexIfNotOnNativeEl('0');\n }\n else {\n this.commands = null;\n this.setTabIndexIfNotOnNativeEl(null);\n }\n }\n /** @nodoc */\n onClick(button, ctrlKey, shiftKey, altKey, metaKey) {\n if (this.urlTree === null) {\n return true;\n }\n if (this.isAnchorElement) {\n if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {\n return true;\n }\n if (typeof this.target === 'string' && this.target != '_self') {\n return true;\n }\n }\n const extras = {\n skipLocationChange: this.skipLocationChange,\n replaceUrl: this.replaceUrl,\n state: this.state,\n };\n this.router.navigateByUrl(this.urlTree, extras);\n // Return `false` for `<a>` elements to prevent default action\n // and cancel the native behavior, since the navigation is handled\n // by the Router.\n return !this.isAnchorElement;\n }\n /** @nodoc */\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n updateHref() {\n this.href = this.urlTree !== null && this.locationStrategy ?\n this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(this.urlTree)) :\n null;\n const sanitizedValue = this.href === null ?\n null :\n // This class represents a directive that can be added to both `<a>` elements,\n // as well as other elements. As a result, we can't define security context at\n // compile time. So the security context is deferred to runtime.\n // The `ɵɵsanitizeUrlOrResourceUrl` selects the necessary sanitizer function\n // based on the tag and property names. The logic mimics the one from\n // `packages/compiler/src/schema/dom_security_schema.ts`, which is used at compile time.\n //\n // Note: we should investigate whether we can switch to using `@HostBinding('attr.href')`\n // instead of applying a value via a renderer, after a final merge of the\n // `RouterLinkWithHref` directive.\n ɵɵsanitizeUrlOrResourceUrl(this.href, this.el.nativeElement.tagName.toLowerCase(), 'href');\n this.applyAttributeValue('href', sanitizedValue);\n }\n applyAttributeValue(attrName, attrValue) {\n const renderer = this.renderer;\n const nativeElement = this.el.nativeElement;\n if (attrValue !== null) {\n renderer.setAttribute(nativeElement, attrName, attrValue);\n }\n else {\n renderer.removeAttribute(nativeElement, attrName);\n }\n }\n get urlTree() {\n if (this.commands === null) {\n return null;\n }\n return this.router.createUrlTree(this.commands, {\n // If the `relativeTo` input is not defined, we want to use `this.route` by default.\n // Otherwise, we should use the value provided by the user in the input.\n relativeTo: this.relativeTo !== undefined ? this.relativeTo : this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: this.preserveFragment,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterLink, deps: [{ token: Router }, { token: ActivatedRoute }, { token: 'tabindex', attribute: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i3.LocationStrategy }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"16.2.12\", type: RouterLink, isStandalone: true, selector: \"[routerLink]\", inputs: { target: \"target\", queryParams: \"queryParams\", fragment: \"fragment\", queryParamsHandling: \"queryParamsHandling\", state: \"state\", relativeTo: \"relativeTo\", preserveFragment: [\"preserveFragment\", \"preserveFragment\", booleanAttribute], skipLocationChange: [\"skipLocationChange\", \"skipLocationChange\", booleanAttribute], replaceUrl: [\"replaceUrl\", \"replaceUrl\", booleanAttribute], routerLink: \"routerLink\" }, host: { listeners: { \"click\": \"onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)\" }, properties: { \"attr.target\": \"this.target\" } }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterLink, decorators: [{\n type: Directive,\n args: [{\n selector: '[routerLink]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: Router }, { type: ActivatedRoute }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i3.LocationStrategy }]; }, propDecorators: { target: [{\n type: HostBinding,\n args: ['attr.target']\n }, {\n type: Input\n }], queryParams: [{\n type: Input\n }], fragment: [{\n type: Input\n }], queryParamsHandling: [{\n type: Input\n }], state: [{\n type: Input\n }], relativeTo: [{\n type: Input\n }], preserveFragment: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], skipLocationChange: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], replaceUrl: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], routerLink: [{\n type: Input\n }], onClick: [{\n type: HostListener,\n args: ['click',\n ['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey']]\n }] } });\n\n/**\n *\n * @description\n *\n * Tracks whether the linked route of an element is currently active, and allows you\n * to specify one or more CSS classes to add to the element when the linked route\n * is active.\n *\n * Use this directive to create a visual distinction for elements associated with an active route.\n * For example, the following code highlights the word \"Bob\" when the router\n * activates the associated route:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\">Bob</a>\n * ```\n *\n * Whenever the URL is either '/user' or '/user/bob', the \"active-link\" class is\n * added to the anchor tag. If the URL changes, the class is removed.\n *\n * You can set more than one class using a space-separated string or an array.\n * For example:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"class1 class2\">Bob</a>\n * <a routerLink=\"/user/bob\" [routerLinkActive]=\"['class1', 'class2']\">Bob</a>\n * ```\n *\n * To add the classes only when the URL matches the link exactly, add the option `exact: true`:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact:\n * true}\">Bob</a>\n * ```\n *\n * To directly check the `isActive` status of the link, assign the `RouterLinkActive`\n * instance to a template variable.\n * For example, the following checks the status without assigning any CSS classes:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive #rla=\"routerLinkActive\">\n * Bob {{ rla.isActive ? '(already open)' : ''}}\n * </a>\n * ```\n *\n * You can apply the `RouterLinkActive` directive to an ancestor of linked elements.\n * For example, the following sets the active-link class on the `<div>` parent tag\n * when the URL is either '/user/jim' or '/user/bob'.\n *\n * ```\n * <div routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact: true}\">\n * <a routerLink=\"/user/jim\">Jim</a>\n * <a routerLink=\"/user/bob\">Bob</a>\n * </div>\n * ```\n *\n * The `RouterLinkActive` directive can also be used to set the aria-current attribute\n * to provide an alternative distinction for active elements to visually impaired users.\n *\n * For example, the following code adds the 'active' class to the Home Page link when it is\n * indeed active and in such case also sets its aria-current attribute to 'page':\n *\n * ```\n * <a routerLink=\"/\" routerLinkActive=\"active\" ariaCurrentWhenActive=\"page\">Home Page</a>\n * ```\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterLinkActive {\n get isActive() {\n return this._isActive;\n }\n constructor(router, element, renderer, cdr, link) {\n this.router = router;\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n this.link = link;\n this.classes = [];\n this._isActive = false;\n /**\n * Options to configure how to determine if the router link is active.\n *\n * These options are passed to the `Router.isActive()` function.\n *\n * @see {@link Router#isActive}\n */\n this.routerLinkActiveOptions = { exact: false };\n /**\n *\n * You can use the output `isActiveChange` to get notified each time the link becomes\n * active or inactive.\n *\n * Emits:\n * true -> Route is active\n * false -> Route is inactive\n *\n * ```\n * <a\n * routerLink=\"/user/bob\"\n * routerLinkActive=\"active-link\"\n * (isActiveChange)=\"this.onRouterLinkActive($event)\">Bob</a>\n * ```\n */\n this.isActiveChange = new EventEmitter();\n this.routerEventsSubscription = router.events.subscribe((s) => {\n if (s instanceof NavigationEnd) {\n this.update();\n }\n });\n }\n /** @nodoc */\n ngAfterContentInit() {\n // `of(null)` is used to force subscribe body to execute once immediately (like `startWith`).\n of(this.links.changes, of(null)).pipe(mergeAll()).subscribe(_ => {\n this.update();\n this.subscribeToEachLinkOnChanges();\n });\n }\n subscribeToEachLinkOnChanges() {\n this.linkInputChangesSubscription?.unsubscribe();\n const allLinkChanges = [...this.links.toArray(), this.link]\n .filter((link) => !!link)\n .map(link => link.onChanges);\n this.linkInputChangesSubscription = from(allLinkChanges).pipe(mergeAll()).subscribe(link => {\n if (this._isActive !== this.isLinkActive(this.router)(link)) {\n this.update();\n }\n });\n }\n set routerLinkActive(data) {\n const classes = Array.isArray(data) ? data : data.split(' ');\n this.classes = classes.filter(c => !!c);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this.update();\n }\n /** @nodoc */\n ngOnDestroy() {\n this.routerEventsSubscription.unsubscribe();\n this.linkInputChangesSubscription?.unsubscribe();\n }\n update() {\n if (!this.links || !this.router.navigated)\n return;\n queueMicrotask(() => {\n const hasActiveLinks = this.hasActiveLinks();\n if (this._isActive !== hasActiveLinks) {\n this._isActive = hasActiveLinks;\n this.cdr.markForCheck();\n this.classes.forEach((c) => {\n if (hasActiveLinks) {\n this.renderer.addClass(this.element.nativeElement, c);\n }\n else {\n this.renderer.removeClass(this.element.nativeElement, c);\n }\n });\n if (hasActiveLinks && this.ariaCurrentWhenActive !== undefined) {\n this.renderer.setAttribute(this.element.nativeElement, 'aria-current', this.ariaCurrentWhenActive.toString());\n }\n else {\n this.renderer.removeAttribute(this.element.nativeElement, 'aria-current');\n }\n // Emit on isActiveChange after classes are updated\n this.isActiveChange.emit(hasActiveLinks);\n }\n });\n }\n isLinkActive(router) {\n const options = isActiveMatchOptions(this.routerLinkActiveOptions) ?\n this.routerLinkActiveOptions :\n // While the types should disallow `undefined` here, it's possible without strict inputs\n (this.routerLinkActiveOptions.exact || false);\n return (link) => link.urlTree ? router.isActive(link.urlTree, options) : false;\n }\n hasActiveLinks() {\n const isActiveCheckFn = this.isLinkActive(this.router);\n return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: RouterLinkActive, isStandalone: true, selector: \"[routerLinkActive]\", inputs: { routerLinkActiveOptions: \"routerLinkActiveOptions\", ariaCurrentWhenActive: \"ariaCurrentWhenActive\", routerLinkActive: \"routerLinkActive\" }, outputs: { isActiveChange: \"isActiveChange\" }, queries: [{ propertyName: \"links\", predicate: RouterLink, descendants: true }], exportAs: [\"routerLinkActive\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterLinkActive, decorators: [{\n type: Directive,\n args: [{\n selector: '[routerLinkActive]',\n exportAs: 'routerLinkActive',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: Router }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: RouterLink, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { links: [{\n type: ContentChildren,\n args: [RouterLink, { descendants: true }]\n }], routerLinkActiveOptions: [{\n type: Input\n }], ariaCurrentWhenActive: [{\n type: Input\n }], isActiveChange: [{\n type: Output\n }], routerLinkActive: [{\n type: Input\n }] } });\n/**\n * Use instead of `'paths' in options` to be compatible with property renaming\n */\nfunction isActiveMatchOptions(options) {\n return !!options.paths;\n}\n\n/**\n * @description\n *\n * Provides a preloading strategy.\n *\n * @publicApi\n */\nclass PreloadingStrategy {\n}\n/**\n * @description\n *\n * Provides a preloading strategy that preloads all modules as quickly as possible.\n *\n * ```\n * RouterModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})\n * ```\n *\n * @publicApi\n */\nclass PreloadAllModules {\n preload(route, fn) {\n return fn().pipe(catchError(() => of(null)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreloadAllModules, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/**\n * @description\n *\n * Provides a preloading strategy that does not preload any modules.\n *\n * This strategy is enabled by default.\n *\n * @publicApi\n */\nclass NoPreloading {\n preload(route, fn) {\n return of(null);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoPreloading, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/**\n * The preloader optimistically loads all router configurations to\n * make navigations into lazily-loaded sections of the application faster.\n *\n * The preloader runs in the background. When the router bootstraps, the preloader\n * starts listening to all navigation events. After every such event, the preloader\n * will check if any configurations can be loaded lazily.\n *\n * If a route is protected by `canLoad` guards, the preloaded will not load it.\n *\n * @publicApi\n */\nclass RouterPreloader {\n constructor(router, compiler, injector, preloadingStrategy, loader) {\n this.router = router;\n this.injector = injector;\n this.preloadingStrategy = preloadingStrategy;\n this.loader = loader;\n }\n setUpPreloading() {\n this.subscription =\n this.router.events\n .pipe(filter((e) => e instanceof NavigationEnd), concatMap(() => this.preload()))\n .subscribe(() => { });\n }\n preload() {\n return this.processRoutes(this.injector, this.router.config);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n processRoutes(injector, routes) {\n const res = [];\n for (const route of routes) {\n if (route.providers && !route._injector) {\n route._injector =\n createEnvironmentInjector(route.providers, injector, `Route: ${route.path}`);\n }\n const injectorForCurrentRoute = route._injector ?? injector;\n const injectorForChildren = route._loadedInjector ?? injectorForCurrentRoute;\n // Note that `canLoad` is only checked as a condition that prevents `loadChildren` and not\n // `loadComponent`. `canLoad` guards only block loading of child routes by design. This\n // happens as a consequence of needing to descend into children for route matching immediately\n // while component loading is deferred until route activation. Because `canLoad` guards can\n // have side effects, we cannot execute them here so we instead skip preloading altogether\n // when present. Lastly, it remains to be decided whether `canLoad` should behave this way\n // at all. Code splitting and lazy loading is separate from client-side authorization checks\n // and should not be used as a security measure to prevent loading of code.\n if ((route.loadChildren && !route._loadedRoutes && route.canLoad === undefined) ||\n (route.loadComponent && !route._loadedComponent)) {\n res.push(this.preloadConfig(injectorForCurrentRoute, route));\n }\n if (route.children || route._loadedRoutes) {\n res.push(this.processRoutes(injectorForChildren, (route.children ?? route._loadedRoutes)));\n }\n }\n return from(res).pipe(mergeAll());\n }\n preloadConfig(injector, route) {\n return this.preloadingStrategy.preload(route, () => {\n let loadedChildren$;\n if (route.loadChildren && route.canLoad === undefined) {\n loadedChildren$ = this.loader.loadChildren(injector, route);\n }\n else {\n loadedChildren$ = of(null);\n }\n const recursiveLoadChildren$ = loadedChildren$.pipe(mergeMap((config) => {\n if (config === null) {\n return of(void 0);\n }\n route._loadedRoutes = config.routes;\n route._loadedInjector = config.injector;\n // If the loaded config was a module, use that as the module/module injector going\n // forward. Otherwise, continue using the current module/module injector.\n return this.processRoutes(config.injector ?? injector, config.routes);\n }));\n if (route.loadComponent && !route._loadedComponent) {\n const loadComponent$ = this.loader.loadComponent(route);\n return from([recursiveLoadChildren$, loadComponent$]).pipe(mergeAll());\n }\n else {\n return recursiveLoadChildren$;\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterPreloader, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }]; } });\n\nconst ROUTER_SCROLLER = new InjectionToken('');\nclass RouterScroller {\n /** @nodoc */\n constructor(urlSerializer, transitions, viewportScroller, zone, options = {}) {\n this.urlSerializer = urlSerializer;\n this.transitions = transitions;\n this.viewportScroller = viewportScroller;\n this.zone = zone;\n this.options = options;\n this.lastId = 0;\n this.lastSource = 'imperative';\n this.restoredId = 0;\n this.store = {};\n // Default both options to 'disabled'\n options.scrollPositionRestoration = options.scrollPositionRestoration || 'disabled';\n options.anchorScrolling = options.anchorScrolling || 'disabled';\n }\n init() {\n // we want to disable the automatic scrolling because having two places\n // responsible for scrolling results race conditions, especially given\n // that browser don't implement this behavior consistently\n if (this.options.scrollPositionRestoration !== 'disabled') {\n this.viewportScroller.setHistoryScrollRestoration('manual');\n }\n this.routerEventsSubscription = this.createScrollEvents();\n this.scrollEventsSubscription = this.consumeScrollEvents();\n }\n createScrollEvents() {\n return this.transitions.events.subscribe(e => {\n if (e instanceof NavigationStart) {\n // store the scroll position of the current stable navigations.\n this.store[this.lastId] = this.viewportScroller.getScrollPosition();\n this.lastSource = e.navigationTrigger;\n this.restoredId = e.restoredState ? e.restoredState.navigationId : 0;\n }\n else if (e instanceof NavigationEnd) {\n this.lastId = e.id;\n this.scheduleScrollEvent(e, this.urlSerializer.parse(e.urlAfterRedirects).fragment);\n }\n else if (e instanceof NavigationSkipped &&\n e.code === 0 /* NavigationSkippedCode.IgnoredSameUrlNavigation */) {\n this.lastSource = undefined;\n this.restoredId = 0;\n this.scheduleScrollEvent(e, this.urlSerializer.parse(e.url).fragment);\n }\n });\n }\n consumeScrollEvents() {\n return this.transitions.events.subscribe(e => {\n if (!(e instanceof Scroll))\n return;\n // a popstate event. The pop state event will always ignore anchor scrolling.\n if (e.position) {\n if (this.options.scrollPositionRestoration === 'top') {\n this.viewportScroller.scrollToPosition([0, 0]);\n }\n else if (this.options.scrollPositionRestoration === 'enabled') {\n this.viewportScroller.scrollToPosition(e.position);\n }\n // imperative navigation \"forward\"\n }\n else {\n if (e.anchor && this.options.anchorScrolling === 'enabled') {\n this.viewportScroller.scrollToAnchor(e.anchor);\n }\n else if (this.options.scrollPositionRestoration !== 'disabled') {\n this.viewportScroller.scrollToPosition([0, 0]);\n }\n }\n });\n }\n scheduleScrollEvent(routerEvent, anchor) {\n this.zone.runOutsideAngular(() => {\n // The scroll event needs to be delayed until after change detection. Otherwise, we may\n // attempt to restore the scroll position before the router outlet has fully rendered the\n // component by executing its update block of the template function.\n setTimeout(() => {\n this.zone.run(() => {\n this.transitions.events.next(new Scroll(routerEvent, this.lastSource === 'popstate' ? this.store[this.restoredId] : null, anchor));\n });\n }, 0);\n });\n }\n /** @nodoc */\n ngOnDestroy() {\n this.routerEventsSubscription?.unsubscribe();\n this.scrollEventsSubscription?.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterScroller, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterScroller }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterScroller, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }]; } });\n\n/**\n * Sets up providers necessary to enable `Router` functionality for the application.\n * Allows to configure a set of routes as well as extra features that should be enabled.\n *\n * @usageNotes\n *\n * Basic example of how you can add a Router to your application:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent, {\n * providers: [provideRouter(appRoutes)]\n * });\n * ```\n *\n * You can also enable optional features in the Router by adding functions from the `RouterFeatures`\n * type:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes,\n * withDebugTracing(),\n * withRouterConfig({paramsInheritanceStrategy: 'always'}))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link RouterFeatures}\n *\n * @publicApi\n * @param routes A set of `Route`s to use for the application routing table.\n * @param features Optional features to configure additional router behaviors.\n * @returns A set of providers to setup a Router.\n */\nfunction provideRouter(routes, ...features) {\n return makeEnvironmentProviders([\n { provide: ROUTES, multi: true, useValue: routes },\n (typeof ngDevMode === 'undefined' || ngDevMode) ?\n { provide: ROUTER_IS_PROVIDED, useValue: true } :\n [],\n { provide: ActivatedRoute, useFactory: rootRoute, deps: [Router] },\n { provide: APP_BOOTSTRAP_LISTENER, multi: true, useFactory: getBootstrapListener },\n features.map(feature => feature.ɵproviders),\n ]);\n}\nfunction rootRoute(router) {\n return router.routerState.root;\n}\n/**\n * Helper function to create an object that represents a Router feature.\n */\nfunction routerFeature(kind, providers) {\n return { ɵkind: kind, ɵproviders: providers };\n}\n/**\n * An Injection token used to indicate whether `provideRouter` or `RouterModule.forRoot` was ever\n * called.\n */\nconst ROUTER_IS_PROVIDED = new InjectionToken('', { providedIn: 'root', factory: () => false });\nconst routerIsProvidedDevModeCheck = {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory() {\n return () => {\n if (!inject(ROUTER_IS_PROVIDED)) {\n console.warn('`provideRoutes` was called without `provideRouter` or `RouterModule.forRoot`. ' +\n 'This is likely a mistake.');\n }\n };\n }\n};\n/**\n * Registers a [DI provider](guide/glossary#provider) for a set of routes.\n * @param routes The route configuration to provide.\n *\n * @usageNotes\n *\n * ```\n * @NgModule({\n * providers: [provideRoutes(ROUTES)]\n * })\n * class LazyLoadedChildModule {}\n * ```\n *\n * @deprecated If necessary, provide routes using the `ROUTES` `InjectionToken`.\n * @see {@link ROUTES}\n * @publicApi\n */\nfunction provideRoutes(routes) {\n return [\n { provide: ROUTES, multi: true, useValue: routes },\n (typeof ngDevMode === 'undefined' || ngDevMode) ? routerIsProvidedDevModeCheck : [],\n ];\n}\n/**\n * Enables customizable scrolling behavior for router navigations.\n *\n * @usageNotes\n *\n * Basic example of how you can enable scrolling feature:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withInMemoryScrolling())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n * @see {@link ViewportScroller}\n *\n * @publicApi\n * @param options Set of configuration parameters to customize scrolling behavior, see\n * `InMemoryScrollingOptions` for additional information.\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withInMemoryScrolling(options = {}) {\n const providers = [{\n provide: ROUTER_SCROLLER,\n useFactory: () => {\n const viewportScroller = inject(ViewportScroller);\n const zone = inject(NgZone);\n const transitions = inject(NavigationTransitions);\n const urlSerializer = inject(UrlSerializer);\n return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, options);\n },\n }];\n return routerFeature(4 /* RouterFeatureKind.InMemoryScrollingFeature */, providers);\n}\nfunction getBootstrapListener() {\n const injector = inject(Injector);\n return (bootstrappedComponentRef) => {\n const ref = injector.get(ApplicationRef);\n if (bootstrappedComponentRef !== ref.components[0]) {\n return;\n }\n const router = injector.get(Router);\n const bootstrapDone = injector.get(BOOTSTRAP_DONE);\n if (injector.get(INITIAL_NAVIGATION) === 1 /* InitialNavigation.EnabledNonBlocking */) {\n router.initialNavigation();\n }\n injector.get(ROUTER_PRELOADER, null, InjectFlags.Optional)?.setUpPreloading();\n injector.get(ROUTER_SCROLLER, null, InjectFlags.Optional)?.init();\n router.resetRootComponentType(ref.componentTypes[0]);\n if (!bootstrapDone.closed) {\n bootstrapDone.next();\n bootstrapDone.complete();\n bootstrapDone.unsubscribe();\n }\n };\n}\n/**\n * A subject used to indicate that the bootstrapping phase is done. When initial navigation is\n * `enabledBlocking`, the first navigation waits until bootstrapping is finished before continuing\n * to the activation phase.\n */\nconst BOOTSTRAP_DONE = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'bootstrap done indicator' : '', {\n factory: () => {\n return new Subject();\n }\n});\nconst INITIAL_NAVIGATION = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'initial navigation' : '', { providedIn: 'root', factory: () => 1 /* InitialNavigation.EnabledNonBlocking */ });\n/**\n * Configures initial navigation to start before the root component is created.\n *\n * The bootstrap is blocked until the initial navigation is complete. This value is required for\n * [server-side rendering](guide/universal) to work.\n *\n * @usageNotes\n *\n * Basic example of how you can enable this navigation behavior:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withEnabledBlockingInitialNavigation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @publicApi\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withEnabledBlockingInitialNavigation() {\n const providers = [\n { provide: INITIAL_NAVIGATION, useValue: 0 /* InitialNavigation.EnabledBlocking */ },\n {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector],\n useFactory: (injector) => {\n const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve());\n return () => {\n return locationInitialized.then(() => {\n return new Promise(resolve => {\n const router = injector.get(Router);\n const bootstrapDone = injector.get(BOOTSTRAP_DONE);\n afterNextNavigation(router, () => {\n // Unblock APP_INITIALIZER in case the initial navigation was canceled or errored\n // without a redirect.\n resolve(true);\n });\n injector.get(NavigationTransitions).afterPreactivation = () => {\n // Unblock APP_INITIALIZER once we get to `afterPreactivation`. At this point, we\n // assume activation will complete successfully (even though this is not\n // guaranteed).\n resolve(true);\n return bootstrapDone.closed ? of(void 0) : bootstrapDone;\n };\n router.initialNavigation();\n });\n });\n };\n }\n },\n ];\n return routerFeature(2 /* RouterFeatureKind.EnabledBlockingInitialNavigationFeature */, providers);\n}\n/**\n * Disables initial navigation.\n *\n * Use if there is a reason to have more control over when the router starts its initial navigation\n * due to some complex initialization logic.\n *\n * @usageNotes\n *\n * Basic example of how you can disable initial navigation:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withDisabledInitialNavigation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withDisabledInitialNavigation() {\n const providers = [\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: () => {\n const router = inject(Router);\n return () => {\n router.setUpLocationChangeListener();\n };\n }\n },\n { provide: INITIAL_NAVIGATION, useValue: 2 /* InitialNavigation.Disabled */ }\n ];\n return routerFeature(3 /* RouterFeatureKind.DisabledInitialNavigationFeature */, providers);\n}\n/**\n * Enables logging of all internal navigation events to the console.\n * Extra logging might be useful for debugging purposes to inspect Router event sequence.\n *\n * @usageNotes\n *\n * Basic example of how you can enable debug tracing:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withDebugTracing())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withDebugTracing() {\n let providers = [];\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n providers = [{\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: () => {\n const router = inject(Router);\n return () => router.events.subscribe((e) => {\n // tslint:disable:no-console\n console.group?.(`Router Event: ${e.constructor.name}`);\n console.log(stringifyEvent(e));\n console.log(e);\n console.groupEnd?.();\n // tslint:enable:no-console\n });\n }\n }];\n }\n else {\n providers = [];\n }\n return routerFeature(1 /* RouterFeatureKind.DebugTracingFeature */, providers);\n}\nconst ROUTER_PRELOADER = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'router preloader' : '');\n/**\n * Allows to configure a preloading strategy to use. The strategy is configured by providing a\n * reference to a class that implements a `PreloadingStrategy`.\n *\n * @usageNotes\n *\n * Basic example of how you can configure preloading:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withPreloading(PreloadAllModules))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @param preloadingStrategy A reference to a class that implements a `PreloadingStrategy` that\n * should be used.\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withPreloading(preloadingStrategy) {\n const providers = [\n { provide: ROUTER_PRELOADER, useExisting: RouterPreloader },\n { provide: PreloadingStrategy, useExisting: preloadingStrategy },\n ];\n return routerFeature(0 /* RouterFeatureKind.PreloadingFeature */, providers);\n}\n/**\n * Allows to provide extra parameters to configure Router.\n *\n * @usageNotes\n *\n * Basic example of how you can provide extra configuration options:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withRouterConfig({\n * onSameUrlNavigation: 'reload'\n * }))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @param options A set of parameters to configure Router, see `RouterConfigOptions` for\n * additional information.\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withRouterConfig(options) {\n const providers = [\n { provide: ROUTER_CONFIGURATION, useValue: options },\n ];\n return routerFeature(5 /* RouterFeatureKind.RouterConfigurationFeature */, providers);\n}\n/**\n * Provides the location strategy that uses the URL fragment instead of the history API.\n *\n * @usageNotes\n *\n * Basic example of how you can use the hash location option:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withHashLocation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n * @see {@link HashLocationStrategy}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withHashLocation() {\n const providers = [\n { provide: LocationStrategy, useClass: HashLocationStrategy },\n ];\n return routerFeature(5 /* RouterFeatureKind.RouterConfigurationFeature */, providers);\n}\n/**\n * Subscribes to the Router's navigation events and calls the given function when a\n * `NavigationError` happens.\n *\n * This function is run inside application's [injection context](guide/dependency-injection-context)\n * so you can use the [`inject`](api/core/inject) function.\n *\n * @usageNotes\n *\n * Basic example of how you can use the error handler option:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withNavigationErrorHandler((e: NavigationError) =>\n * inject(MyErrorTracker).trackError(e)))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link NavigationError}\n * @see {@link core/inject}\n * @see {@link runInInjectionContext}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withNavigationErrorHandler(fn) {\n const providers = [{\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => {\n const injector = inject(EnvironmentInjector);\n inject(Router).events.subscribe((e) => {\n if (e instanceof NavigationError) {\n injector.runInContext(() => fn(e));\n }\n });\n }\n }];\n return routerFeature(7 /* RouterFeatureKind.NavigationErrorHandlerFeature */, providers);\n}\n/**\n * Enables binding information from the `Router` state directly to the inputs of the component in\n * `Route` configurations.\n *\n * @usageNotes\n *\n * Basic example of how you can enable the feature:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withComponentInputBinding())\n * ]\n * }\n * );\n * ```\n *\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withComponentInputBinding() {\n const providers = [\n RoutedComponentInputBinder,\n { provide: INPUT_BINDER, useExisting: RoutedComponentInputBinder },\n ];\n return routerFeature(8 /* RouterFeatureKind.ComponentInputBindingFeature */, providers);\n}\n\n/**\n * The directives defined in the `RouterModule`.\n */\nconst ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent];\n/**\n * @docsNotRequired\n */\nconst ROUTER_FORROOT_GUARD = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'router duplicate forRoot guard' :\n 'ROUTER_FORROOT_GUARD');\n// TODO(atscott): All of these except `ActivatedRoute` are `providedIn: 'root'`. They are only kept\n// here to avoid a breaking change whereby the provider order matters based on where the\n// `RouterModule`/`RouterTestingModule` is imported. These can/should be removed as a \"breaking\"\n// change in a major version.\nconst ROUTER_PROVIDERS = [\n Location,\n { provide: UrlSerializer, useClass: DefaultUrlSerializer },\n Router,\n ChildrenOutletContexts,\n { provide: ActivatedRoute, useFactory: rootRoute, deps: [Router] },\n RouterConfigLoader,\n // Only used to warn when `provideRoutes` is used without `RouterModule` or `provideRouter`. Can\n // be removed when `provideRoutes` is removed.\n (typeof ngDevMode === 'undefined' || ngDevMode) ? { provide: ROUTER_IS_PROVIDED, useValue: true } :\n [],\n];\nfunction routerNgProbeToken() {\n return new NgProbeToken('Router', Router);\n}\n/**\n * @description\n *\n * Adds directives and providers for in-app navigation among views defined in an application.\n * Use the Angular `Router` service to declaratively specify application states and manage state\n * transitions.\n *\n * You can import this NgModule multiple times, once for each lazy-loaded bundle.\n * However, only one `Router` service can be active.\n * To ensure this, there are two ways to register routes when importing this module:\n *\n * * The `forRoot()` method creates an `NgModule` that contains all the directives, the given\n * routes, and the `Router` service itself.\n * * The `forChild()` method creates an `NgModule` that contains all the directives and the given\n * routes, but does not include the `Router` service.\n *\n * @see [Routing and Navigation guide](guide/router) for an\n * overview of how the `Router` service should be used.\n *\n * @publicApi\n */\nclass RouterModule {\n constructor(guard) { }\n /**\n * Creates and configures a module with all the router providers and directives.\n * Optionally sets up an application listener to perform an initial navigation.\n *\n * When registering the NgModule at the root, import as follows:\n *\n * ```\n * @NgModule({\n * imports: [RouterModule.forRoot(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * @param routes An array of `Route` objects that define the navigation paths for the application.\n * @param config An `ExtraOptions` configuration object that controls how navigation is performed.\n * @return The new `NgModule`.\n *\n */\n static forRoot(routes, config) {\n return {\n ngModule: RouterModule,\n providers: [\n ROUTER_PROVIDERS,\n (typeof ngDevMode === 'undefined' || ngDevMode) ?\n (config?.enableTracing ? withDebugTracing().ɵproviders : []) :\n [],\n { provide: ROUTES, multi: true, useValue: routes },\n {\n provide: ROUTER_FORROOT_GUARD,\n useFactory: provideForRootGuard,\n deps: [[Router, new Optional(), new SkipSelf()]]\n },\n { provide: ROUTER_CONFIGURATION, useValue: config ? config : {} },\n config?.useHash ? provideHashLocationStrategy() : providePathLocationStrategy(),\n provideRouterScroller(),\n config?.preloadingStrategy ? withPreloading(config.preloadingStrategy).ɵproviders : [],\n { provide: NgProbeToken, multi: true, useFactory: routerNgProbeToken },\n config?.initialNavigation ? provideInitialNavigation(config) : [],\n config?.bindToComponentInputs ? withComponentInputBinding().ɵproviders : [],\n provideRouterInitializer(),\n ],\n };\n }\n /**\n * Creates a module with all the router directives and a provider registering routes,\n * without creating a new Router service.\n * When registering for submodules and lazy-loaded submodules, create the NgModule as follows:\n *\n * ```\n * @NgModule({\n * imports: [RouterModule.forChild(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * @param routes An array of `Route` objects that define the navigation paths for the submodule.\n * @return The new NgModule.\n *\n */\n static forChild(routes) {\n return {\n ngModule: RouterModule,\n providers: [{ provide: ROUTES, multi: true, useValue: routes }],\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: RouterModule, decorators: [{\n type: NgModule,\n args: [{\n imports: ROUTER_DIRECTIVES,\n exports: ROUTER_DIRECTIVES,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ROUTER_FORROOT_GUARD]\n }] }]; } });\n/**\n * For internal use by `RouterModule` only. Note that this differs from `withInMemoryRouterScroller`\n * because it reads from the `ExtraOptions` which should not be used in the standalone world.\n */\nfunction provideRouterScroller() {\n return {\n provide: ROUTER_SCROLLER,\n useFactory: () => {\n const viewportScroller = inject(ViewportScroller);\n const zone = inject(NgZone);\n const config = inject(ROUTER_CONFIGURATION);\n const transitions = inject(NavigationTransitions);\n const urlSerializer = inject(UrlSerializer);\n if (config.scrollOffset) {\n viewportScroller.setOffset(config.scrollOffset);\n }\n return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, config);\n },\n };\n}\n// Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` should\n// provide hash location directly via `{provide: LocationStrategy, useClass: HashLocationStrategy}`.\nfunction provideHashLocationStrategy() {\n return { provide: LocationStrategy, useClass: HashLocationStrategy };\n}\n// Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` does not\n// need this at all because `PathLocationStrategy` is the default factory for `LocationStrategy`.\nfunction providePathLocationStrategy() {\n return { provide: LocationStrategy, useClass: PathLocationStrategy };\n}\nfunction provideForRootGuard(router) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && router) {\n throw new ɵRuntimeError(4007 /* RuntimeErrorCode.FOR_ROOT_CALLED_TWICE */, `The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector.` +\n ` Lazy loaded modules should use RouterModule.forChild() instead.`);\n }\n return 'guarded';\n}\n// Note: For internal use only with `RouterModule`. Standalone router setup with `provideRouter`\n// users call `withXInitialNavigation` directly.\nfunction provideInitialNavigation(config) {\n return [\n config.initialNavigation === 'disabled' ? withDisabledInitialNavigation().ɵproviders : [],\n config.initialNavigation === 'enabledBlocking' ?\n withEnabledBlockingInitialNavigation().ɵproviders :\n [],\n ];\n}\n// TODO(atscott): This should not be in the public API\n/**\n * A [DI token](guide/glossary/#di-token) for the router initializer that\n * is called after the app is bootstrapped.\n *\n * @publicApi\n */\nconst ROUTER_INITIALIZER = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'Router Initializer' : '');\nfunction provideRouterInitializer() {\n return [\n // ROUTER_INITIALIZER token should be removed. It's public API but shouldn't be. We can just\n // have `getBootstrapListener` directly attached to APP_BOOTSTRAP_LISTENER.\n { provide: ROUTER_INITIALIZER, useFactory: getBootstrapListener },\n { provide: APP_BOOTSTRAP_LISTENER, multi: true, useExisting: ROUTER_INITIALIZER },\n ];\n}\n\n/**\n * Maps an array of injectable classes with canMatch functions to an array of equivalent\n * `CanMatchFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanMatch(providers) {\n return providers.map(provider => (...params) => inject(provider).canMatch(...params));\n}\n/**\n * Maps an array of injectable classes with canActivate functions to an array of equivalent\n * `CanActivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanActivate(providers) {\n return providers.map(provider => (...params) => inject(provider).canActivate(...params));\n}\n/**\n * Maps an array of injectable classes with canActivateChild functions to an array of equivalent\n * `CanActivateChildFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanActivateChild(providers) {\n return providers.map(provider => (...params) => inject(provider).canActivateChild(...params));\n}\n/**\n * Maps an array of injectable classes with canDeactivate functions to an array of equivalent\n * `CanDeactivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanDeactivate(providers) {\n return providers.map(provider => (...params) => inject(provider).canDeactivate(...params));\n}\n/**\n * Maps an injectable class with a resolve function to an equivalent `ResolveFn`\n * for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='Resolve'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToResolve(provider) {\n return (...params) => inject(provider).resolve(...params);\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the router package.\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('16.2.12');\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ActivatedRoute, ActivatedRouteSnapshot, ActivationEnd, ActivationStart, BaseRouteReuseStrategy, ChildActivationEnd, ChildActivationStart, ChildrenOutletContexts, DefaultTitleStrategy, DefaultUrlSerializer, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, NoPreloading, OutletContext, PRIMARY_OUTLET, PreloadAllModules, PreloadingStrategy, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, ROUTES, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouteReuseStrategy, Router, RouterEvent, RouterLink, RouterLinkActive, RouterLink as RouterLinkWithHref, RouterModule, RouterOutlet, RouterPreloader, RouterState, RouterStateSnapshot, RoutesRecognized, Scroll, TitleStrategy, UrlHandlingStrategy, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, convertToParamMap, createUrlTreeFromSnapshot, defaultUrlMatcher, mapToCanActivate, mapToCanActivateChild, mapToCanDeactivate, mapToCanMatch, mapToResolve, provideRouter, provideRoutes, withComponentInputBinding, withDebugTracing, withDisabledInitialNavigation, withEnabledBlockingInitialNavigation, withHashLocation, withInMemoryScrolling, withNavigationErrorHandler, withPreloading, withRouterConfig, ɵEmptyOutletComponent, ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, afterNextNavigation as ɵafterNextNavigation, loadChildren as ɵloadChildren };\n","import { Observable } from '../Observable';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\nexport function last(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n","import { dep, Slot } from \"optimism\";\n// Contextual Slot that acquires its value when custom read functions are\n// called in Policies#readField.\nexport var cacheSlot = new Slot();\nvar cacheInfoMap = new WeakMap();\nfunction getCacheInfo(cache) {\n var info = cacheInfoMap.get(cache);\n if (!info) {\n cacheInfoMap.set(cache, (info = {\n vars: new Set(),\n dep: dep(),\n }));\n }\n return info;\n}\nexport function forgetCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.forgetCache(cache); });\n}\n// Calling forgetCache(cache) serves to silence broadcasts and allows the\n// cache to be garbage collected. However, the varsByCache WeakMap\n// preserves the set of reactive variables that were previously associated\n// with this cache, which makes it possible to \"recall\" the cache at a\n// later time, by reattaching it to those variables. If the cache has been\n// garbage collected in the meantime, because it is no longer reachable,\n// you won't be able to call recallCache(cache), and the cache will\n// automatically disappear from the varsByCache WeakMap.\nexport function recallCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.attachCache(cache); });\n}\nexport function makeVar(value) {\n var caches = new Set();\n var listeners = new Set();\n var rv = function (newValue) {\n if (arguments.length > 0) {\n if (value !== newValue) {\n value = newValue;\n caches.forEach(function (cache) {\n // Invalidate any fields with custom read functions that\n // consumed this variable, so query results involving those\n // fields will be recomputed the next time we read them.\n getCacheInfo(cache).dep.dirty(rv);\n // Broadcast changes to any caches that have previously read\n // from this variable.\n broadcast(cache);\n });\n // Finally, notify any listeners added via rv.onNextChange.\n var oldListeners = Array.from(listeners);\n listeners.clear();\n oldListeners.forEach(function (listener) { return listener(value); });\n }\n }\n else {\n // When reading from the variable, obtain the current cache from\n // context via cacheSlot. This isn't entirely foolproof, but it's\n // the same system that powers varDep.\n var cache = cacheSlot.getValue();\n if (cache) {\n attach(cache);\n getCacheInfo(cache).dep(rv);\n }\n }\n return value;\n };\n rv.onNextChange = function (listener) {\n listeners.add(listener);\n return function () {\n listeners.delete(listener);\n };\n };\n var attach = (rv.attachCache = function (cache) {\n caches.add(cache);\n getCacheInfo(cache).vars.add(rv);\n return rv;\n });\n rv.forgetCache = function (cache) { return caches.delete(cache); };\n return rv;\n}\nfunction broadcast(cache) {\n if (cache.broadcastWatches) {\n cache.broadcastWatches();\n }\n}\n","import { __rest } from \"tslib\";\nimport equal from \"@wry/equality\";\nimport { createFragmentMap, getFragmentDefinitions, getFragmentFromSelection, getMainDefinition, isField, resultKeyNameFromField, shouldInclude, } from \"../utilities/index.js\";\n// Returns true if aResult and bResult are deeply equal according to the fields\n// selected by the given query, ignoring any fields marked as @nonreactive.\nexport function equalByQuery(query, _a, _b, variables) {\n var aData = _a.data, aRest = __rest(_a, [\"data\"]);\n var bData = _b.data, bRest = __rest(_b, [\"data\"]);\n return (equal(aRest, bRest) &&\n equalBySelectionSet(getMainDefinition(query).selectionSet, aData, bData, {\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n variables: variables,\n }));\n}\nfunction equalBySelectionSet(selectionSet, aResult, bResult, context) {\n if (aResult === bResult) {\n return true;\n }\n var seenSelections = new Set();\n // Returning true from this Array.prototype.every callback function skips the\n // current field/subtree. Returning false aborts the entire traversal\n // immediately, causing equalBySelectionSet to return false.\n return selectionSet.selections.every(function (selection) {\n // Avoid re-processing the same selection at the same level of recursion, in\n // case the same field gets included via multiple indirect fragment spreads.\n if (seenSelections.has(selection))\n return true;\n seenSelections.add(selection);\n // Ignore @skip(if: true) and @include(if: false) fields.\n if (!shouldInclude(selection, context.variables))\n return true;\n // If the field or (named) fragment spread has a @nonreactive directive on\n // it, we don't care if it's different, so we pretend it's the same.\n if (selectionHasNonreactiveDirective(selection))\n return true;\n if (isField(selection)) {\n var resultKey = resultKeyNameFromField(selection);\n var aResultChild = aResult && aResult[resultKey];\n var bResultChild = bResult && bResult[resultKey];\n var childSelectionSet = selection.selectionSet;\n if (!childSelectionSet) {\n // These are scalar values, so we can compare them with deep equal\n // without redoing the main recursive work.\n return equal(aResultChild, bResultChild);\n }\n var aChildIsArray = Array.isArray(aResultChild);\n var bChildIsArray = Array.isArray(bResultChild);\n if (aChildIsArray !== bChildIsArray)\n return false;\n if (aChildIsArray && bChildIsArray) {\n var length_1 = aResultChild.length;\n if (bResultChild.length !== length_1) {\n return false;\n }\n for (var i = 0; i < length_1; ++i) {\n if (!equalBySelectionSet(childSelectionSet, aResultChild[i], bResultChild[i], context)) {\n return false;\n }\n }\n return true;\n }\n return equalBySelectionSet(childSelectionSet, aResultChild, bResultChild, context);\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.fragmentMap);\n if (fragment) {\n // The fragment might === selection if it's an inline fragment, but\n // could be !== if it's a named fragment ...spread.\n if (selectionHasNonreactiveDirective(fragment))\n return true;\n return equalBySelectionSet(fragment.selectionSet, \n // Notice that we reuse the same aResult and bResult values here,\n // since the fragment ...spread does not specify a field name, but\n // consists of multiple fields (within the fragment's selection set)\n // that should be applied to the current result value(s).\n aResult, bResult, context);\n }\n }\n });\n}\nfunction selectionHasNonreactiveDirective(selection) {\n return (!!selection.directives && selection.directives.some(directiveIsNonreactive));\n}\nfunction directiveIsNonreactive(dir) {\n return dir.name.value === \"nonreactive\";\n}\n","import { newInvariantError, invariant } from \"../../utilities/globals/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { validateOperation, createOperation, transformOperation, } from \"../utils/index.js\";\nfunction passthrough(op, forward) {\n return (forward ? forward(op) : Observable.of());\n}\nfunction toLink(handler) {\n return typeof handler === \"function\" ? new ApolloLink(handler) : handler;\n}\nfunction isTerminating(link) {\n return link.request.length <= 1;\n}\nvar ApolloLink = /** @class */ (function () {\n function ApolloLink(request) {\n if (request)\n this.request = request;\n }\n ApolloLink.empty = function () {\n return new ApolloLink(function () { return Observable.of(); });\n };\n ApolloLink.from = function (links) {\n if (links.length === 0)\n return ApolloLink.empty();\n return links.map(toLink).reduce(function (x, y) { return x.concat(y); });\n };\n ApolloLink.split = function (test, left, right) {\n var leftLink = toLink(left);\n var rightLink = toLink(right || new ApolloLink(passthrough));\n var ret;\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n ret = new ApolloLink(function (operation) {\n return test(operation) ?\n leftLink.request(operation) || Observable.of()\n : rightLink.request(operation) || Observable.of();\n });\n }\n else {\n ret = new ApolloLink(function (operation, forward) {\n return test(operation) ?\n leftLink.request(operation, forward) || Observable.of()\n : rightLink.request(operation, forward) || Observable.of();\n });\n }\n return Object.assign(ret, { left: leftLink, right: rightLink });\n };\n ApolloLink.execute = function (link, operation) {\n return (link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || Observable.of());\n };\n ApolloLink.concat = function (first, second) {\n var firstLink = toLink(first);\n if (isTerminating(firstLink)) {\n globalThis.__DEV__ !== false && invariant.warn(35, firstLink);\n return firstLink;\n }\n var nextLink = toLink(second);\n var ret;\n if (isTerminating(nextLink)) {\n ret = new ApolloLink(function (operation) {\n return firstLink.request(operation, function (op) { return nextLink.request(op) || Observable.of(); }) || Observable.of();\n });\n }\n else {\n ret = new ApolloLink(function (operation, forward) {\n return (firstLink.request(operation, function (op) {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of());\n });\n }\n return Object.assign(ret, { left: firstLink, right: nextLink });\n };\n ApolloLink.prototype.split = function (test, left, right) {\n return this.concat(ApolloLink.split(test, left, right || new ApolloLink(passthrough)));\n };\n ApolloLink.prototype.concat = function (next) {\n return ApolloLink.concat(this, next);\n };\n ApolloLink.prototype.request = function (operation, forward) {\n throw newInvariantError(36);\n };\n ApolloLink.prototype.onError = function (error, observer) {\n if (observer && observer.error) {\n observer.error(error);\n // Returning false indicates that observer.error does not need to be\n // called again, since it was already called (on the previous line).\n // Calling observer.error again would not cause any real problems,\n // since only the first call matters, but custom onError functions\n // might have other reasons for wanting to prevent the default\n // behavior by returning false.\n return false;\n }\n // Throw errors will be passed to observer.error.\n throw error;\n };\n ApolloLink.prototype.setOnError = function (fn) {\n this.onError = fn;\n return this;\n };\n return ApolloLink;\n}());\nexport { ApolloLink };\n","import { __assign } from \"tslib\";\nexport function createOperation(starting, operation) {\n var context = __assign({}, starting);\n var setContext = function (next) {\n if (typeof next === \"function\") {\n context = __assign(__assign({}, context), next(context));\n }\n else {\n context = __assign(__assign({}, context), next);\n }\n };\n var getContext = function () { return (__assign({}, context)); };\n Object.defineProperty(operation, \"setContext\", {\n enumerable: false,\n value: setContext,\n });\n Object.defineProperty(operation, \"getContext\", {\n enumerable: false,\n value: getContext,\n });\n return operation;\n}\n","import { getOperationName } from \"../../utilities/index.js\";\nexport function transformOperation(operation) {\n var transformedOperation = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n // Best guess at an operation name\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== \"string\" ?\n getOperationName(transformedOperation.query) || undefined\n : \"\";\n }\n return transformedOperation;\n}\n","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport function validateOperation(operation) {\n var OPERATION_FIELDS = [\n \"query\",\n \"operationName\",\n \"variables\",\n \"extensions\",\n \"context\",\n ];\n for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n var key = _a[_i];\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw newInvariantError(43, key);\n }\n }\n return operation;\n}\n","import { WeakCache, StrongCache } from \"@wry/caches\";\nvar scheduledCleanup = new WeakSet();\nfunction schedule(cache) {\n if (cache.size <= (cache.max || -1)) {\n return;\n }\n if (!scheduledCleanup.has(cache)) {\n scheduledCleanup.add(cache);\n setTimeout(function () {\n cache.clean();\n scheduledCleanup.delete(cache);\n }, 100);\n }\n}\n/**\n * @internal\n * A version of WeakCache that will auto-schedule a cleanup of the cache when\n * a new item is added and the cache reached maximum size.\n * Throttled to once per 100ms.\n *\n * @privateRemarks\n * Should be used throughout the rest of the codebase instead of WeakCache,\n * with the notable exception of usage in `wrap` from `optimism` - that one\n * already handles cleanup and should remain a `WeakCache`.\n */\nexport var AutoCleanedWeakCache = function (max, dispose) {\n /*\n Some builds of `WeakCache` are function prototypes, some are classes.\n This library still builds with an ES5 target, so we can't extend the\n real classes.\n Instead, we have to use this workaround until we switch to a newer build\n target.\n */\n var cache = new WeakCache(max, dispose);\n cache.set = function (key, value) {\n var ret = WeakCache.prototype.set.call(this, key, value);\n schedule(this);\n return ret;\n };\n return cache;\n};\n/**\n * @internal\n * A version of StrongCache that will auto-schedule a cleanup of the cache when\n * a new item is added and the cache reached maximum size.\n * Throttled to once per 100ms.\n *\n * @privateRemarks\n * Should be used throughout the rest of the codebase instead of StrongCache,\n * with the notable exception of usage in `wrap` from `optimism` - that one\n * already handles cleanup and should remain a `StrongCache`.\n */\nexport var AutoCleanedStrongCache = function (max, dispose) {\n /*\n Some builds of `StrongCache` are function prototypes, some are classes.\n This library still builds with an ES5 target, so we can't extend the\n real classes.\n Instead, we have to use this workaround until we switch to a newer build\n target.\n */\n var cache = new StrongCache(max, dispose);\n cache.set = function (key, value) {\n var ret = StrongCache.prototype.set.call(this, key, value);\n schedule(this);\n return ret;\n };\n return cache;\n};\n","import { __assign, __spreadArray } from \"tslib\";\nimport { cacheSizes } from \"./sizes.js\";\nvar globalCaches = {};\nexport function registerGlobalCache(name, getSize) {\n globalCaches[name] = getSize;\n}\n/**\n * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead\n * @internal\n */\nexport var getApolloClientMemoryInternals = globalThis.__DEV__ !== false ?\n _getApolloClientMemoryInternals\n : undefined;\n/**\n * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead\n * @internal\n */\nexport var getInMemoryCacheMemoryInternals = globalThis.__DEV__ !== false ?\n _getInMemoryCacheMemoryInternals\n : undefined;\n/**\n * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead\n * @internal\n */\nexport var getApolloCacheMemoryInternals = globalThis.__DEV__ !== false ?\n _getApolloCacheMemoryInternals\n : undefined;\nfunction getCurrentCacheSizes() {\n // `defaultCacheSizes` is a `const enum` that will be inlined during build, so we have to reconstruct it's shape here\n var defaults = {\n parser: 1000 /* defaultCacheSizes[\"parser\"] */,\n canonicalStringify: 1000 /* defaultCacheSizes[\"canonicalStringify\"] */,\n print: 2000 /* defaultCacheSizes[\"print\"] */,\n \"documentTransform.cache\": 2000 /* defaultCacheSizes[\"documentTransform.cache\"] */,\n \"queryManager.getDocumentInfo\": 2000 /* defaultCacheSizes[\"queryManager.getDocumentInfo\"] */,\n \"PersistedQueryLink.persistedQueryHashes\": 2000 /* defaultCacheSizes[\"PersistedQueryLink.persistedQueryHashes\"] */,\n \"fragmentRegistry.transform\": 2000 /* defaultCacheSizes[\"fragmentRegistry.transform\"] */,\n \"fragmentRegistry.lookup\": 1000 /* defaultCacheSizes[\"fragmentRegistry.lookup\"] */,\n \"fragmentRegistry.findFragmentSpreads\": 4000 /* defaultCacheSizes[\"fragmentRegistry.findFragmentSpreads\"] */,\n \"cache.fragmentQueryDocuments\": 1000 /* defaultCacheSizes[\"cache.fragmentQueryDocuments\"] */,\n \"removeTypenameFromVariables.getVariableDefinitions\": 2000 /* defaultCacheSizes[\"removeTypenameFromVariables.getVariableDefinitions\"] */,\n \"inMemoryCache.maybeBroadcastWatch\": 5000 /* defaultCacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] */,\n \"inMemoryCache.executeSelectionSet\": 50000 /* defaultCacheSizes[\"inMemoryCache.executeSelectionSet\"] */,\n \"inMemoryCache.executeSubSelectedArray\": 10000 /* defaultCacheSizes[\"inMemoryCache.executeSubSelectedArray\"] */,\n };\n return Object.fromEntries(Object.entries(defaults).map(function (_a) {\n var k = _a[0], v = _a[1];\n return [\n k,\n cacheSizes[k] || v,\n ];\n }));\n}\nfunction _getApolloClientMemoryInternals() {\n var _a, _b, _c, _d, _e;\n if (!(globalThis.__DEV__ !== false))\n throw new Error(\"only supported in development mode\");\n return {\n limits: getCurrentCacheSizes(),\n sizes: __assign({ print: (_a = globalCaches.print) === null || _a === void 0 ? void 0 : _a.call(globalCaches), parser: (_b = globalCaches.parser) === null || _b === void 0 ? void 0 : _b.call(globalCaches), canonicalStringify: (_c = globalCaches.canonicalStringify) === null || _c === void 0 ? void 0 : _c.call(globalCaches), links: linkInfo(this.link), queryManager: {\n getDocumentInfo: this[\"queryManager\"][\"transformCache\"].size,\n documentTransforms: transformInfo(this[\"queryManager\"].documentTransform),\n } }, (_e = (_d = this.cache).getMemoryInternals) === null || _e === void 0 ? void 0 : _e.call(_d)),\n };\n}\nfunction _getApolloCacheMemoryInternals() {\n return {\n cache: {\n fragmentQueryDocuments: getWrapperInformation(this[\"getFragmentDoc\"]),\n },\n };\n}\nfunction _getInMemoryCacheMemoryInternals() {\n var fragments = this.config.fragments;\n return __assign(__assign({}, _getApolloCacheMemoryInternals.apply(this)), { addTypenameDocumentTransform: transformInfo(this[\"addTypenameTransform\"]), inMemoryCache: {\n executeSelectionSet: getWrapperInformation(this[\"storeReader\"][\"executeSelectionSet\"]),\n executeSubSelectedArray: getWrapperInformation(this[\"storeReader\"][\"executeSubSelectedArray\"]),\n maybeBroadcastWatch: getWrapperInformation(this[\"maybeBroadcastWatch\"]),\n }, fragmentRegistry: {\n findFragmentSpreads: getWrapperInformation(fragments === null || fragments === void 0 ? void 0 : fragments.findFragmentSpreads),\n lookup: getWrapperInformation(fragments === null || fragments === void 0 ? void 0 : fragments.lookup),\n transform: getWrapperInformation(fragments === null || fragments === void 0 ? void 0 : fragments.transform),\n } });\n}\nfunction isWrapper(f) {\n return !!f && \"dirtyKey\" in f;\n}\nfunction getWrapperInformation(f) {\n return isWrapper(f) ? f.size : undefined;\n}\nfunction isDefined(value) {\n return value != null;\n}\nfunction transformInfo(transform) {\n return recurseTransformInfo(transform).map(function (cache) { return ({ cache: cache }); });\n}\nfunction recurseTransformInfo(transform) {\n return transform ?\n __spreadArray(__spreadArray([\n getWrapperInformation(transform === null || transform === void 0 ? void 0 : transform[\"performWork\"])\n ], recurseTransformInfo(transform === null || transform === void 0 ? void 0 : transform[\"left\"]), true), recurseTransformInfo(transform === null || transform === void 0 ? void 0 : transform[\"right\"]), true).filter(isDefined)\n : [];\n}\nfunction linkInfo(link) {\n var _a;\n return link ?\n __spreadArray(__spreadArray([\n (_a = link === null || link === void 0 ? void 0 : link.getMemoryInternals) === null || _a === void 0 ? void 0 : _a.call(link)\n ], linkInfo(link === null || link === void 0 ? void 0 : link.left), true), linkInfo(link === null || link === void 0 ? void 0 : link.right), true).filter(isDefined)\n : [];\n}\n","import { __assign } from \"tslib\";\nimport { global } from \"../globals/index.js\";\nvar cacheSizeSymbol = Symbol.for(\"apollo.cacheSize\");\n/**\n *\n * The global cache size configuration for Apollo Client.\n *\n * @remarks\n *\n * You can directly modify this object, but any modification will\n * only have an effect on caches that are created after the modification.\n *\n * So for global caches, such as `parser`, `canonicalStringify` and `print`,\n * you might need to call `.reset` on them, which will essentially re-create them.\n *\n * Alternatively, you can set `globalThis[Symbol.for(\"apollo.cacheSize\")]` before\n * you load the Apollo Client package:\n *\n * @example\n * ```ts\n * globalThis[Symbol.for(\"apollo.cacheSize\")] = {\n * parser: 100\n * } satisfies Partial<CacheSizes> // the `satisfies` is optional if using TypeScript\n * ```\n */\nexport var cacheSizes = __assign({}, global[cacheSizeSymbol]);\n","// A version of Array.isArray that works better with readonly arrays.\nexport var isArray = Array.isArray;\nexport function isNonEmptyArray(value) {\n return Array.isArray(value) && value.length > 0;\n}\n","import { maybe } from \"../globals/index.js\";\nvar isReactNative = maybe(function () { return navigator.product; }) == \"ReactNative\";\nexport var canUseWeakMap = typeof WeakMap === \"function\" &&\n !(isReactNative && !global.HermesInternal);\nexport var canUseWeakSet = typeof WeakSet === \"function\";\nexport var canUseSymbol = typeof Symbol === \"function\" && typeof Symbol.for === \"function\";\nexport var canUseAsyncIteratorSymbol = canUseSymbol && Symbol.asyncIterator;\nexport var canUseDOM = typeof maybe(function () { return window.document.createElement; }) === \"function\";\nvar usingJSDOM = \n// Following advice found in this comment from @domenic (maintainer of jsdom):\n// https://github.com/jsdom/jsdom/issues/1537#issuecomment-229405327\n//\n// Since we control the version of Jest and jsdom used when running Apollo\n// Client tests, and that version is recent enought to include \" jsdom/x.y.z\"\n// at the end of the user agent string, I believe this case is all we need to\n// check. Testing for \"Node.js\" was recommended for backwards compatibility\n// with older version of jsdom, but we don't have that problem.\nmaybe(function () { return navigator.userAgent.indexOf(\"jsdom\") >= 0; }) || false;\n// Our tests should all continue to pass if we remove this !usingJSDOM\n// condition, thereby allowing useLayoutEffect when using jsdom. Unfortunately,\n// if we allow useLayoutEffect, then useSyncExternalStore generates many\n// warnings about useLayoutEffect doing nothing on the server. While these\n// warnings are harmless, this !usingJSDOM condition seems to be the best way to\n// prevent them (i.e. skipping useLayoutEffect when using jsdom).\nexport var canUseLayoutEffect = (canUseDOM || isReactNative) && !usingJSDOM;\n","import { AutoCleanedStrongCache, cacheSizes, } from \"../../utilities/caching/index.js\";\nimport { registerGlobalCache } from \"../caching/getMemoryInternals.js\";\n/**\n * Like JSON.stringify, but with object keys always sorted in the same order.\n *\n * To achieve performant sorting, this function uses a Map from JSON-serialized\n * arrays of keys (in any order) to sorted arrays of the same keys, with a\n * single sorted array reference shared by all permutations of the keys.\n *\n * As a drawback, this function will add a little bit more memory for every\n * object encountered that has different (more, less, a different order of) keys\n * than in the past.\n *\n * In a typical application, this extra memory usage should not play a\n * significant role, as `canonicalStringify` will be called for only a limited\n * number of object shapes, and the cache will not grow beyond a certain point.\n * But in some edge cases, this could be a problem, so we provide\n * canonicalStringify.reset() as a way of clearing the cache.\n * */\nexport var canonicalStringify = Object.assign(function canonicalStringify(value) {\n return JSON.stringify(value, stableObjectReplacer);\n}, {\n reset: function () {\n // Clearing the sortingMap will reclaim all cached memory, without\n // affecting the logical results of canonicalStringify, but potentially\n // sacrificing performance until the cache is refilled.\n sortingMap = new AutoCleanedStrongCache(cacheSizes.canonicalStringify || 1000 /* defaultCacheSizes.canonicalStringify */);\n },\n});\nif (globalThis.__DEV__ !== false) {\n registerGlobalCache(\"canonicalStringify\", function () { return sortingMap.size; });\n}\n// Values are JSON-serialized arrays of object keys (in any order), and values\n// are sorted arrays of the same keys.\nvar sortingMap;\ncanonicalStringify.reset();\n// The JSON.stringify function takes an optional second argument called a\n// replacer function. This function is called for each key-value pair in the\n// object being stringified, and its return value is used instead of the\n// original value. If the replacer function returns a new value, that value is\n// stringified as JSON instead of the original value of the property.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#the_replacer_parameter\nfunction stableObjectReplacer(key, value) {\n if (value && typeof value === \"object\") {\n var proto = Object.getPrototypeOf(value);\n // We don't want to mess with objects that are not \"plain\" objects, which\n // means their prototype is either Object.prototype or null. This check also\n // prevents needlessly rearranging the indices of arrays.\n if (proto === Object.prototype || proto === null) {\n var keys = Object.keys(value);\n // If keys is already sorted, let JSON.stringify serialize the original\n // value instead of creating a new object with keys in the same order.\n if (keys.every(everyKeyInOrder))\n return value;\n var unsortedKey = JSON.stringify(keys);\n var sortedKeys = sortingMap.get(unsortedKey);\n if (!sortedKeys) {\n keys.sort();\n var sortedKey = JSON.stringify(keys);\n // Checking for sortedKey in the sortingMap allows us to share the same\n // sorted array reference for all permutations of the same set of keys.\n sortedKeys = sortingMap.get(sortedKey) || keys;\n sortingMap.set(unsortedKey, sortedKeys);\n sortingMap.set(sortedKey, sortedKeys);\n }\n var sortedObject_1 = Object.create(proto);\n // Reassigning the keys in sorted order will cause JSON.stringify to\n // serialize them in sorted order.\n sortedKeys.forEach(function (key) {\n sortedObject_1[key] = value[key];\n });\n return sortedObject_1;\n }\n }\n return value;\n}\n// Since everything that happens in stableObjectReplacer benefits from being as\n// efficient as possible, we use a static function as the callback for\n// keys.every in order to test if the provided keys are already sorted without\n// allocating extra memory for a callback.\nfunction everyKeyInOrder(key, i, keys) {\n return i === 0 || keys[i - 1] <= key;\n}\n","var toString = Object.prototype.toString;\n/**\n * Deeply clones a value to create a new instance.\n */\nexport function cloneDeep(value) {\n return cloneDeepHelper(value);\n}\nfunction cloneDeepHelper(val, seen) {\n switch (toString.call(val)) {\n case \"[object Array]\": {\n seen = seen || new Map();\n if (seen.has(val))\n return seen.get(val);\n var copy_1 = val.slice(0);\n seen.set(val, copy_1);\n copy_1.forEach(function (child, i) {\n copy_1[i] = cloneDeepHelper(child, seen);\n });\n return copy_1;\n }\n case \"[object Object]\": {\n seen = seen || new Map();\n if (seen.has(val))\n return seen.get(val);\n // High fidelity polyfills of Object.create and Object.getPrototypeOf are\n // possible in all JS environments, so we will assume they exist/work.\n var copy_2 = Object.create(Object.getPrototypeOf(val));\n seen.set(val, copy_2);\n Object.keys(val).forEach(function (key) {\n copy_2[key] = cloneDeepHelper(val[key], seen);\n });\n return copy_2;\n }\n default:\n return val;\n }\n}\n","/**\n * Merges the provided objects shallowly and removes\n * all properties with an `undefined` value\n */\nexport function compact() {\n var objects = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n objects[_i] = arguments[_i];\n }\n var result = Object.create(null);\n objects.forEach(function (obj) {\n if (!obj)\n return;\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (value !== void 0) {\n result[key] = value;\n }\n });\n });\n return result;\n}\n","var prefixCounts = new Map();\n// These IDs won't be globally unique, but they will be unique within this\n// process, thanks to the counter, and unguessable thanks to the random suffix.\nexport function makeUniqueId(prefix) {\n var count = prefixCounts.get(prefix) || 1;\n prefixCounts.set(prefix, count + 1);\n return \"\".concat(prefix, \":\").concat(count, \":\").concat(Math.random().toString(36).slice(2));\n}\n","import { __assign, __spreadArray } from \"tslib\";\nimport { isNonNullObject } from \"./objects.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function mergeDeep() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return mergeDeepArray(sources);\n}\n// In almost any situation where you could succeed in getting the\n// TypeScript compiler to infer a tuple type for the sources array, you\n// could just use mergeDeep instead of mergeDeepArray, so instead of\n// trying to convert T[] to an intersection type we just infer the array\n// element type, which works perfectly when the sources array has a\n// consistent element type.\nexport function mergeDeepArray(sources) {\n var target = sources[0] || {};\n var count = sources.length;\n if (count > 1) {\n var merger = new DeepMerger();\n for (var i = 1; i < count; ++i) {\n target = merger.merge(target, sources[i]);\n }\n }\n return target;\n}\nvar defaultReconciler = function (target, source, property) {\n return this.merge(target[property], source[property]);\n};\nvar DeepMerger = /** @class */ (function () {\n function DeepMerger(reconciler) {\n if (reconciler === void 0) { reconciler = defaultReconciler; }\n this.reconciler = reconciler;\n this.isObject = isNonNullObject;\n this.pastCopies = new Set();\n }\n DeepMerger.prototype.merge = function (target, source) {\n var _this = this;\n var context = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n context[_i - 2] = arguments[_i];\n }\n if (isNonNullObject(source) && isNonNullObject(target)) {\n Object.keys(source).forEach(function (sourceKey) {\n if (hasOwnProperty.call(target, sourceKey)) {\n var targetValue = target[sourceKey];\n if (source[sourceKey] !== targetValue) {\n var result = _this.reconciler.apply(_this, __spreadArray([target,\n source,\n sourceKey], context, false));\n // A well-implemented reconciler may return targetValue to indicate\n // the merge changed nothing about the structure of the target.\n if (result !== targetValue) {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = result;\n }\n }\n }\n else {\n // If there is no collision, the target can safely share memory with\n // the source, and the recursion can terminate here.\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = source[sourceKey];\n }\n });\n return target;\n }\n // If source (or target) is not an object, let source replace target.\n return source;\n };\n DeepMerger.prototype.shallowCopyForMerge = function (value) {\n if (isNonNullObject(value)) {\n if (!this.pastCopies.has(value)) {\n if (Array.isArray(value)) {\n value = value.slice(0);\n }\n else {\n value = __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n this.pastCopies.add(value);\n }\n }\n return value;\n };\n return DeepMerger;\n}());\nexport { DeepMerger };\n","export function isNonNullObject(obj) {\n return obj !== null && typeof obj === \"object\";\n}\nexport function isPlainObject(obj) {\n return (obj !== null &&\n typeof obj === \"object\" &&\n (Object.getPrototypeOf(obj) === Object.prototype ||\n Object.getPrototypeOf(obj) === null));\n}\n","import { makeUniqueId } from \"./makeUniqueId.js\";\nexport function stringifyForDisplay(value, space) {\n if (space === void 0) { space = 0; }\n var undefId = makeUniqueId(\"stringifyForDisplay\");\n return JSON.stringify(value, function (key, value) {\n return value === void 0 ? undefId : value;\n }, space)\n .split(JSON.stringify(undefId))\n .join(\"<undefined>\");\n}\n","import { __extends } from \"tslib\";\nvar genericMessage = \"Invariant Violation\";\nvar _a = Object.setPrototypeOf, setPrototypeOf = _a === void 0 ? function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n} : _a;\nvar InvariantError = /** @class */ (function (_super) {\n __extends(InvariantError, _super);\n function InvariantError(message) {\n if (message === void 0) { message = genericMessage; }\n var _this = _super.call(this, typeof message === \"number\"\n ? genericMessage + \": \" + message + \" (see https://github.com/apollographql/invariant-packages)\"\n : message) || this;\n _this.framesToPop = 1;\n _this.name = genericMessage;\n setPrototypeOf(_this, InvariantError.prototype);\n return _this;\n }\n return InvariantError;\n}(Error));\nexport { InvariantError };\nexport function invariant(condition, message) {\n if (!condition) {\n throw new InvariantError(message);\n }\n}\nvar verbosityLevels = [\"debug\", \"log\", \"warn\", \"error\", \"silent\"];\nvar verbosityLevel = verbosityLevels.indexOf(\"log\");\nfunction wrapConsoleMethod(name) {\n return function () {\n if (verbosityLevels.indexOf(name) >= verbosityLevel) {\n // Default to console.log if this host environment happens not to provide\n // all the console.* methods we need.\n var method = console[name] || console.log;\n return method.apply(console, arguments);\n }\n };\n}\n(function (invariant) {\n invariant.debug = wrapConsoleMethod(\"debug\");\n invariant.log = wrapConsoleMethod(\"log\");\n invariant.warn = wrapConsoleMethod(\"warn\");\n invariant.error = wrapConsoleMethod(\"error\");\n})(invariant || (invariant = {}));\nexport function setVerbosity(level) {\n var old = verbosityLevels[verbosityLevel];\n verbosityLevel = Math.max(0, verbosityLevels.indexOf(level));\n return old;\n}\nexport default invariant;\n","export function maybe(thunk) {\n try {\n return thunk();\n }\n catch (_a) { }\n}\n","import { maybe } from \"./maybe.js\";\nexport default (maybe(function () { return globalThis; }) ||\n maybe(function () { return window; }) ||\n maybe(function () { return self; }) ||\n maybe(function () { return global; }) || // We don't expect the Function constructor ever to be invoked at runtime, as\n// long as at least one of globalThis, window, self, or global is defined, so\n// we are under no obligation to make it easy for static analysis tools to\n// detect syntactic usage of the Function constructor. If you think you can\n// improve your static analysis to detect this obfuscation, think again. This\n// is an arms race you cannot win, at least not in JavaScript.\nmaybe(function () {\n return maybe.constructor(\"return this\")();\n}));\n","import { invariant as originalInvariant, InvariantError } from \"ts-invariant\";\nimport { version } from \"../../version.js\";\nimport global from \"./global.js\";\nimport { stringifyForDisplay } from \"../common/stringifyForDisplay.js\";\nfunction wrap(fn) {\n return function (message) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof message === \"number\") {\n var arg0 = message;\n message = getHandledErrorMsg(arg0);\n if (!message) {\n message = getFallbackErrorMsg(arg0, args);\n args = [];\n }\n }\n fn.apply(void 0, [message].concat(args));\n };\n}\nvar invariant = Object.assign(function invariant(condition, message) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (!condition) {\n originalInvariant(condition, getHandledErrorMsg(message, args) || getFallbackErrorMsg(message, args));\n }\n}, {\n debug: wrap(originalInvariant.debug),\n log: wrap(originalInvariant.log),\n warn: wrap(originalInvariant.warn),\n error: wrap(originalInvariant.error),\n});\n/**\n * Returns an InvariantError.\n *\n * `message` can only be a string, a concatenation of strings, or a ternary statement\n * that results in a string. This will be enforced on build, where the message will\n * be replaced with a message number.\n * String substitutions with %s are supported and will also return\n * pretty-stringified objects.\n * Excess `optionalParams` will be swallowed.\n */\nfunction newInvariantError(message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n return new InvariantError(getHandledErrorMsg(message, optionalParams) ||\n getFallbackErrorMsg(message, optionalParams));\n}\nvar ApolloErrorMessageHandler = Symbol.for(\"ApolloErrorMessageHandler_\" + version);\nfunction stringify(arg) {\n if (typeof arg == \"string\") {\n return arg;\n }\n try {\n return stringifyForDisplay(arg, 2).slice(0, 1000);\n }\n catch (_a) {\n return \"<non-serializable>\";\n }\n}\nfunction getHandledErrorMsg(message, messageArgs) {\n if (messageArgs === void 0) { messageArgs = []; }\n if (!message)\n return;\n return (global[ApolloErrorMessageHandler] &&\n global[ApolloErrorMessageHandler](message, messageArgs.map(stringify)));\n}\nfunction getFallbackErrorMsg(message, messageArgs) {\n if (messageArgs === void 0) { messageArgs = []; }\n if (!message)\n return;\n return \"An error occurred! For more details, see the full error text at https://go.apollo.dev/c/err#\".concat(encodeURIComponent(JSON.stringify({\n version: version,\n message: message,\n args: messageArgs.map(stringify),\n })));\n}\nexport { invariant, InvariantError, newInvariantError, ApolloErrorMessageHandler, };\n","import { invariant, newInvariantError, InvariantError, } from \"./invariantWrappers.js\";\nexport { maybe } from \"./maybe.js\";\nexport { default as global } from \"./global.js\";\nexport { invariant, newInvariantError, InvariantError };\n/**\n * @deprecated we do not use this internally anymore,\n * it is just exported for backwards compatibility\n */\n// this file is extempt from automatic `__DEV__` replacement\n// so we have to write it out here\n// @ts-ignore\nexport var DEV = globalThis.__DEV__ !== false;\nexport { DEV as __DEV__ };\n","import { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet } from \"../common/canUse.js\";\nimport { checkDocument } from \"./getFromAST.js\";\nimport { invariant } from \"../globals/index.js\";\nimport { WeakCache } from \"@wry/caches\";\nimport { wrap } from \"optimism\";\nimport { cacheSizes } from \"../caching/index.js\";\nfunction identity(document) {\n return document;\n}\nvar DocumentTransform = /** @class */ (function () {\n function DocumentTransform(transform, options) {\n if (options === void 0) { options = Object.create(null); }\n this.resultCache = canUseWeakSet ? new WeakSet() : new Set();\n this.transform = transform;\n if (options.getCacheKey) {\n // Override default `getCacheKey` function, which returns [document].\n this.getCacheKey = options.getCacheKey;\n }\n this.cached = options.cache !== false;\n this.resetCache();\n }\n // This default implementation of getCacheKey can be overridden by providing\n // options.getCacheKey to the DocumentTransform constructor. In general, a\n // getCacheKey function may either return an array of keys (often including\n // the document) to be used as a cache key, or undefined to indicate the\n // transform for this document should not be cached.\n DocumentTransform.prototype.getCacheKey = function (document) {\n return [document];\n };\n DocumentTransform.identity = function () {\n // No need to cache this transform since it just returns the document\n // unchanged. This should save a bit of memory that would otherwise be\n // needed to populate the `documentCache` of this transform.\n return new DocumentTransform(identity, { cache: false });\n };\n DocumentTransform.split = function (predicate, left, right) {\n if (right === void 0) { right = DocumentTransform.identity(); }\n return Object.assign(new DocumentTransform(function (document) {\n var documentTransform = predicate(document) ? left : right;\n return documentTransform.transformDocument(document);\n }, \n // Reasonably assume both `left` and `right` transforms handle their own caching\n { cache: false }), { left: left, right: right });\n };\n /**\n * Resets the internal cache of this transform, if it has one.\n */\n DocumentTransform.prototype.resetCache = function () {\n var _this = this;\n if (this.cached) {\n var stableCacheKeys_1 = new Trie(canUseWeakMap);\n this.performWork = wrap(DocumentTransform.prototype.performWork.bind(this), {\n makeCacheKey: function (document) {\n var cacheKeys = _this.getCacheKey(document);\n if (cacheKeys) {\n invariant(Array.isArray(cacheKeys), 67);\n return stableCacheKeys_1.lookupArray(cacheKeys);\n }\n },\n max: cacheSizes[\"documentTransform.cache\"],\n cache: (WeakCache),\n });\n }\n };\n DocumentTransform.prototype.performWork = function (document) {\n checkDocument(document);\n return this.transform(document);\n };\n DocumentTransform.prototype.transformDocument = function (document) {\n // If a user passes an already transformed result back to this function,\n // immediately return it.\n if (this.resultCache.has(document)) {\n return document;\n }\n var transformedDocument = this.performWork(document);\n this.resultCache.add(transformedDocument);\n return transformedDocument;\n };\n DocumentTransform.prototype.concat = function (otherTransform) {\n var _this = this;\n return Object.assign(new DocumentTransform(function (document) {\n return otherTransform.transformDocument(_this.transformDocument(document));\n }, \n // Reasonably assume both transforms handle their own caching\n { cache: false }), {\n left: this,\n right: otherTransform,\n });\n };\n return DocumentTransform;\n}());\nexport { DocumentTransform };\n","import { invariant } from \"../globals/index.js\";\nimport { visit, BREAK } from \"graphql\";\nexport function shouldInclude(_a, variables) {\n var directives = _a.directives;\n if (!directives || !directives.length) {\n return true;\n }\n return getInclusionDirectives(directives).every(function (_a) {\n var directive = _a.directive, ifArgument = _a.ifArgument;\n var evaledValue = false;\n if (ifArgument.value.kind === \"Variable\") {\n evaledValue =\n variables && variables[ifArgument.value.name.value];\n invariant(evaledValue !== void 0, 68, directive.name.value);\n }\n else {\n evaledValue = ifArgument.value.value;\n }\n return directive.name.value === \"skip\" ? !evaledValue : evaledValue;\n });\n}\nexport function getDirectiveNames(root) {\n var names = [];\n visit(root, {\n Directive: function (node) {\n names.push(node.name.value);\n },\n });\n return names;\n}\nexport var hasAnyDirectives = function (names, root) {\n return hasDirectives(names, root, false);\n};\nexport var hasAllDirectives = function (names, root) {\n return hasDirectives(names, root, true);\n};\nexport function hasDirectives(names, root, all) {\n var nameSet = new Set(names);\n var uniqueCount = nameSet.size;\n visit(root, {\n Directive: function (node) {\n if (nameSet.delete(node.name.value) && (!all || !nameSet.size)) {\n return BREAK;\n }\n },\n });\n // If we found all the names, nameSet will be empty. If we only care about\n // finding some of them, the < condition is sufficient.\n return all ? !nameSet.size : nameSet.size < uniqueCount;\n}\nexport function hasClientExports(document) {\n return document && hasDirectives([\"client\", \"export\"], document, true);\n}\nfunction isInclusionDirective(_a) {\n var value = _a.name.value;\n return value === \"skip\" || value === \"include\";\n}\nexport function getInclusionDirectives(directives) {\n var result = [];\n if (directives && directives.length) {\n directives.forEach(function (directive) {\n if (!isInclusionDirective(directive))\n return;\n var directiveArguments = directive.arguments;\n var directiveName = directive.name.value;\n invariant(directiveArguments && directiveArguments.length === 1, 69, directiveName);\n var ifArgument = directiveArguments[0];\n invariant(ifArgument.name && ifArgument.name.value === \"if\", 70, directiveName);\n var ifValue = ifArgument.value;\n // means it has to be a variable value if this is a valid @skip or @include directive\n invariant(ifValue &&\n (ifValue.kind === \"Variable\" || ifValue.kind === \"BooleanValue\"), 71, directiveName);\n result.push({ directive: directive, ifArgument: ifArgument });\n });\n }\n return result;\n}\n","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant, newInvariantError } from \"../globals/index.js\";\n/**\n * Returns a query document which adds a single query operation that only\n * spreads the target fragment inside of it.\n *\n * So for example a document of:\n *\n * ```graphql\n * fragment foo on Foo { a b c }\n * ```\n *\n * Turns into:\n *\n * ```graphql\n * { ...foo }\n *\n * fragment foo on Foo { a b c }\n * ```\n *\n * The target fragment will either be the only fragment in the document, or a\n * fragment specified by the provided `fragmentName`. If there is more than one\n * fragment, but a `fragmentName` was not defined then an error will be thrown.\n */\nexport function getFragmentQueryDocument(document, fragmentName) {\n var actualFragmentName = fragmentName;\n // Build an array of all our fragment definitions that will be used for\n // validations. We also do some validations on the other definitions in the\n // document while building this list.\n var fragments = [];\n document.definitions.forEach(function (definition) {\n // Throw an error if we encounter an operation definition because we will\n // define our own operation definition later on.\n if (definition.kind === \"OperationDefinition\") {\n throw newInvariantError(\n 72,\n definition.operation,\n definition.name ? \" named '\".concat(definition.name.value, \"'\") : \"\"\n );\n }\n // Add our definition to the fragments array if it is a fragment\n // definition.\n if (definition.kind === \"FragmentDefinition\") {\n fragments.push(definition);\n }\n });\n // If the user did not give us a fragment name then let us try to get a\n // name from a single fragment in the definition.\n if (typeof actualFragmentName === \"undefined\") {\n invariant(fragments.length === 1, 73, fragments.length);\n actualFragmentName = fragments[0].name.value;\n }\n // Generate a query document with an operation that simply spreads the\n // fragment inside of it.\n var query = __assign(__assign({}, document), { definitions: __spreadArray([\n {\n kind: \"OperationDefinition\",\n // OperationTypeNode is an enum\n operation: \"query\",\n selectionSet: {\n kind: \"SelectionSet\",\n selections: [\n {\n kind: \"FragmentSpread\",\n name: {\n kind: \"Name\",\n value: actualFragmentName,\n },\n },\n ],\n },\n }\n ], document.definitions, true) });\n return query;\n}\n// Utility function that takes a list of fragment definitions and makes a hash out of them\n// that maps the name of the fragment to the fragment definition.\nexport function createFragmentMap(fragments) {\n if (fragments === void 0) { fragments = []; }\n var symTable = {};\n fragments.forEach(function (fragment) {\n symTable[fragment.name.value] = fragment;\n });\n return symTable;\n}\nexport function getFragmentFromSelection(selection, fragmentMap) {\n switch (selection.kind) {\n case \"InlineFragment\":\n return selection;\n case \"FragmentSpread\": {\n var fragmentName = selection.name.value;\n if (typeof fragmentMap === \"function\") {\n return fragmentMap(fragmentName);\n }\n var fragment = fragmentMap && fragmentMap[fragmentName];\n invariant(fragment, 74, fragmentName);\n return fragment || null;\n }\n default:\n return null;\n }\n}\n","import { invariant, newInvariantError } from \"../globals/index.js\";\nimport { valueToObjectRepresentation } from \"./storeUtils.js\";\n// Checks the document for errors and throws an exception if there is an error.\nexport function checkDocument(doc) {\n invariant(doc && doc.kind === \"Document\", 75);\n var operations = doc.definitions\n .filter(function (d) { return d.kind !== \"FragmentDefinition\"; })\n .map(function (definition) {\n if (definition.kind !== \"OperationDefinition\") {\n throw newInvariantError(76, definition.kind);\n }\n return definition;\n });\n invariant(operations.length <= 1, 77, operations.length);\n return doc;\n}\nexport function getOperationDefinition(doc) {\n checkDocument(doc);\n return doc.definitions.filter(function (definition) {\n return definition.kind === \"OperationDefinition\";\n })[0];\n}\nexport function getOperationName(doc) {\n return (doc.definitions\n .filter(function (definition) {\n return definition.kind === \"OperationDefinition\" && !!definition.name;\n })\n .map(function (x) { return x.name.value; })[0] || null);\n}\n// Returns the FragmentDefinitions from a particular document as an array\nexport function getFragmentDefinitions(doc) {\n return doc.definitions.filter(function (definition) {\n return definition.kind === \"FragmentDefinition\";\n });\n}\nexport function getQueryDefinition(doc) {\n var queryDef = getOperationDefinition(doc);\n invariant(queryDef && queryDef.operation === \"query\", 78);\n return queryDef;\n}\nexport function getFragmentDefinition(doc) {\n invariant(doc.kind === \"Document\", 79);\n invariant(doc.definitions.length <= 1, 80);\n var fragmentDef = doc.definitions[0];\n invariant(fragmentDef.kind === \"FragmentDefinition\", 81);\n return fragmentDef;\n}\n/**\n * Returns the first operation definition found in this document.\n * If no operation definition is found, the first fragment definition will be returned.\n * If no definitions are found, an error will be thrown.\n */\nexport function getMainDefinition(queryDoc) {\n checkDocument(queryDoc);\n var fragmentDefinition;\n for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {\n var definition = _a[_i];\n if (definition.kind === \"OperationDefinition\") {\n var operation = definition.operation;\n if (operation === \"query\" ||\n operation === \"mutation\" ||\n operation === \"subscription\") {\n return definition;\n }\n }\n if (definition.kind === \"FragmentDefinition\" && !fragmentDefinition) {\n // we do this because we want to allow multiple fragment definitions\n // to precede an operation definition.\n fragmentDefinition = definition;\n }\n }\n if (fragmentDefinition) {\n return fragmentDefinition;\n }\n throw newInvariantError(82);\n}\nexport function getDefaultValues(definition) {\n var defaultValues = Object.create(null);\n var defs = definition && definition.variableDefinitions;\n if (defs && defs.length) {\n defs.forEach(function (def) {\n if (def.defaultValue) {\n valueToObjectRepresentation(defaultValues, def.variable.name, def.defaultValue);\n }\n });\n }\n return defaultValues;\n}\n","import { print as origPrint } from \"graphql\";\nimport { AutoCleanedWeakCache, cacheSizes, } from \"../caching/index.js\";\nimport { registerGlobalCache } from \"../caching/getMemoryInternals.js\";\nvar printCache;\nexport var print = Object.assign(function (ast) {\n var result = printCache.get(ast);\n if (!result) {\n result = origPrint(ast);\n printCache.set(ast, result);\n }\n return result;\n}, {\n reset: function () {\n printCache = new AutoCleanedWeakCache(cacheSizes.print || 2000 /* defaultCacheSizes.print */);\n },\n});\nprint.reset();\nif (globalThis.__DEV__ !== false) {\n registerGlobalCache(\"print\", function () { return (printCache ? printCache.size : 0); });\n}\n","import { newInvariantError } from \"../globals/index.js\";\nimport { isNonNullObject } from \"../common/objects.js\";\nimport { getFragmentFromSelection } from \"./fragments.js\";\nimport { canonicalStringify } from \"../common/canonicalStringify.js\";\nexport function makeReference(id) {\n return { __ref: String(id) };\n}\nexport function isReference(obj) {\n return Boolean(obj && typeof obj === \"object\" && typeof obj.__ref === \"string\");\n}\nexport function isDocumentNode(value) {\n return (isNonNullObject(value) &&\n value.kind === \"Document\" &&\n Array.isArray(value.definitions));\n}\nfunction isStringValue(value) {\n return value.kind === \"StringValue\";\n}\nfunction isBooleanValue(value) {\n return value.kind === \"BooleanValue\";\n}\nfunction isIntValue(value) {\n return value.kind === \"IntValue\";\n}\nfunction isFloatValue(value) {\n return value.kind === \"FloatValue\";\n}\nfunction isVariable(value) {\n return value.kind === \"Variable\";\n}\nfunction isObjectValue(value) {\n return value.kind === \"ObjectValue\";\n}\nfunction isListValue(value) {\n return value.kind === \"ListValue\";\n}\nfunction isEnumValue(value) {\n return value.kind === \"EnumValue\";\n}\nfunction isNullValue(value) {\n return value.kind === \"NullValue\";\n}\nexport function valueToObjectRepresentation(argObj, name, value, variables) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n }\n else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isObjectValue(value)) {\n var nestedArgObj_1 = {};\n value.fields.map(function (obj) {\n return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n });\n argObj[name.value] = nestedArgObj_1;\n }\n else if (isVariable(value)) {\n var variableValue = (variables || {})[value.name.value];\n argObj[name.value] = variableValue;\n }\n else if (isListValue(value)) {\n argObj[name.value] = value.values.map(function (listValue) {\n var nestedArgArrayObj = {};\n valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n return nestedArgArrayObj[name.value];\n });\n }\n else if (isEnumValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isNullValue(value)) {\n argObj[name.value] = null;\n }\n else {\n throw newInvariantError(83, name.value, value.kind);\n }\n}\nexport function storeKeyNameFromField(field, variables) {\n var directivesObj = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(function (directive) {\n directivesObj[directive.name.value] = {};\n if (directive.arguments) {\n directive.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n });\n }\n });\n }\n var argObj = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj, name, value, variables);\n });\n }\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nvar KNOWN_DIRECTIVES = [\n \"connection\",\n \"include\",\n \"skip\",\n \"client\",\n \"rest\",\n \"export\",\n \"nonreactive\",\n];\n// Default stable JSON.stringify implementation used by getStoreKeyName. Can be\n// updated/replaced with something better by calling\n// getStoreKeyName.setStringify(newStringifyFunction).\nvar storeKeyNameStringify = canonicalStringify;\nexport var getStoreKeyName = Object.assign(function (fieldName, args, directives) {\n if (args &&\n directives &&\n directives[\"connection\"] &&\n directives[\"connection\"][\"key\"]) {\n if (directives[\"connection\"][\"filter\"] &&\n directives[\"connection\"][\"filter\"].length > 0) {\n var filterKeys = directives[\"connection\"][\"filter\"] ?\n directives[\"connection\"][\"filter\"]\n : [];\n filterKeys.sort();\n var filteredArgs_1 = {};\n filterKeys.forEach(function (key) {\n filteredArgs_1[key] = args[key];\n });\n return \"\".concat(directives[\"connection\"][\"key\"], \"(\").concat(storeKeyNameStringify(filteredArgs_1), \")\");\n }\n else {\n return directives[\"connection\"][\"key\"];\n }\n }\n var completeFieldName = fieldName;\n if (args) {\n // We can't use `JSON.stringify` here since it's non-deterministic,\n // and can lead to different store key names being created even though\n // the `args` object used during creation has the same properties/values.\n var stringifiedArgs = storeKeyNameStringify(args);\n completeFieldName += \"(\".concat(stringifiedArgs, \")\");\n }\n if (directives) {\n Object.keys(directives).forEach(function (key) {\n if (KNOWN_DIRECTIVES.indexOf(key) !== -1)\n return;\n if (directives[key] && Object.keys(directives[key]).length) {\n completeFieldName += \"@\".concat(key, \"(\").concat(storeKeyNameStringify(directives[key]), \")\");\n }\n else {\n completeFieldName += \"@\".concat(key);\n }\n });\n }\n return completeFieldName;\n}, {\n setStringify: function (s) {\n var previous = storeKeyNameStringify;\n storeKeyNameStringify = s;\n return previous;\n },\n});\nexport function argumentsObjectFromField(field, variables) {\n if (field.arguments && field.arguments.length) {\n var argObj_1 = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj_1, name, value, variables);\n });\n return argObj_1;\n }\n return null;\n}\nexport function resultKeyNameFromField(field) {\n return field.alias ? field.alias.value : field.name.value;\n}\nexport function getTypenameFromResult(result, selectionSet, fragmentMap) {\n var fragments;\n for (var _i = 0, _a = selectionSet.selections; _i < _a.length; _i++) {\n var selection = _a[_i];\n if (isField(selection)) {\n if (selection.name.value === \"__typename\") {\n return result[resultKeyNameFromField(selection)];\n }\n }\n else if (fragments) {\n fragments.push(selection);\n }\n else {\n fragments = [selection];\n }\n }\n if (typeof result.__typename === \"string\") {\n return result.__typename;\n }\n if (fragments) {\n for (var _b = 0, fragments_1 = fragments; _b < fragments_1.length; _b++) {\n var selection = fragments_1[_b];\n var typename = getTypenameFromResult(result, getFragmentFromSelection(selection, fragmentMap).selectionSet, fragmentMap);\n if (typeof typename === \"string\") {\n return typename;\n }\n }\n }\n}\nexport function isField(selection) {\n return selection.kind === \"Field\";\n}\nexport function isInlineFragment(selection) {\n return selection.kind === \"InlineFragment\";\n}\n","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant } from \"../globals/index.js\";\nimport { visit, Kind } from \"graphql\";\nimport { checkDocument, getOperationDefinition, getFragmentDefinition, getFragmentDefinitions, getMainDefinition, } from \"./getFromAST.js\";\nimport { isField } from \"./storeUtils.js\";\nimport { createFragmentMap } from \"./fragments.js\";\nimport { isArray, isNonEmptyArray } from \"../common/arrays.js\";\nvar TYPENAME_FIELD = {\n kind: Kind.FIELD,\n name: {\n kind: Kind.NAME,\n value: \"__typename\",\n },\n};\nfunction isEmpty(op, fragmentMap) {\n return (!op ||\n op.selectionSet.selections.every(function (selection) {\n return selection.kind === Kind.FRAGMENT_SPREAD &&\n isEmpty(fragmentMap[selection.name.value], fragmentMap);\n }));\n}\nfunction nullIfDocIsEmpty(doc) {\n return (isEmpty(getOperationDefinition(doc) || getFragmentDefinition(doc), createFragmentMap(getFragmentDefinitions(doc)))) ?\n null\n : doc;\n}\nfunction getDirectiveMatcher(configs) {\n var names = new Map();\n var tests = new Map();\n configs.forEach(function (directive) {\n if (directive) {\n if (directive.name) {\n names.set(directive.name, directive);\n }\n else if (directive.test) {\n tests.set(directive.test, directive);\n }\n }\n });\n return function (directive) {\n var config = names.get(directive.name.value);\n if (!config && tests.size) {\n tests.forEach(function (testConfig, test) {\n if (test(directive)) {\n config = testConfig;\n }\n });\n }\n return config;\n };\n}\nfunction makeInUseGetterFunction(defaultKey) {\n var map = new Map();\n return function inUseGetterFunction(key) {\n if (key === void 0) { key = defaultKey; }\n var inUse = map.get(key);\n if (!inUse) {\n map.set(key, (inUse = {\n // Variable and fragment spread names used directly within this\n // operation or fragment definition, as identified by key. These sets\n // will be populated during the first traversal of the document in\n // removeDirectivesFromDocument below.\n variables: new Set(),\n fragmentSpreads: new Set(),\n }));\n }\n return inUse;\n };\n}\nexport function removeDirectivesFromDocument(directives, doc) {\n checkDocument(doc);\n // Passing empty strings to makeInUseGetterFunction means we handle anonymous\n // operations as if their names were \"\". Anonymous fragment definitions are\n // not supposed to be possible, but the same default naming strategy seems\n // appropriate for that case as well.\n var getInUseByOperationName = makeInUseGetterFunction(\"\");\n var getInUseByFragmentName = makeInUseGetterFunction(\"\");\n var getInUse = function (ancestors) {\n for (var p = 0, ancestor = void 0; p < ancestors.length && (ancestor = ancestors[p]); ++p) {\n if (isArray(ancestor))\n continue;\n if (ancestor.kind === Kind.OPERATION_DEFINITION) {\n // If an operation is anonymous, we use the empty string as its key.\n return getInUseByOperationName(ancestor.name && ancestor.name.value);\n }\n if (ancestor.kind === Kind.FRAGMENT_DEFINITION) {\n return getInUseByFragmentName(ancestor.name.value);\n }\n }\n globalThis.__DEV__ !== false && invariant.error(84);\n return null;\n };\n var operationCount = 0;\n for (var i = doc.definitions.length - 1; i >= 0; --i) {\n if (doc.definitions[i].kind === Kind.OPERATION_DEFINITION) {\n ++operationCount;\n }\n }\n var directiveMatcher = getDirectiveMatcher(directives);\n var shouldRemoveField = function (nodeDirectives) {\n return isNonEmptyArray(nodeDirectives) &&\n nodeDirectives\n .map(directiveMatcher)\n .some(function (config) { return config && config.remove; });\n };\n var originalFragmentDefsByPath = new Map();\n // Any time the first traversal of the document below makes a change like\n // removing a fragment (by returning null), this variable should be set to\n // true. Once it becomes true, it should never be set to false again. If this\n // variable remains false throughout the traversal, then we can return the\n // original doc immediately without any modifications.\n var firstVisitMadeChanges = false;\n var fieldOrInlineFragmentVisitor = {\n enter: function (node) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n },\n };\n var docWithoutDirectiveSubtrees = visit(doc, {\n // These two AST node types share the same implementation, defined above.\n Field: fieldOrInlineFragmentVisitor,\n InlineFragment: fieldOrInlineFragmentVisitor,\n VariableDefinition: {\n enter: function () {\n // VariableDefinition nodes do not count as variables in use, though\n // they do contain Variable nodes that might be visited below. To avoid\n // counting variable declarations as usages, we skip visiting the\n // contents of this VariableDefinition node by returning false.\n return false;\n },\n },\n Variable: {\n enter: function (node, _key, _parent, _path, ancestors) {\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.variables.add(node.name.value);\n }\n },\n },\n FragmentSpread: {\n enter: function (node, _key, _parent, _path, ancestors) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.fragmentSpreads.add(node.name.value);\n }\n // We might like to remove this FragmentSpread by returning null here if\n // the corresponding FragmentDefinition node is also going to be removed\n // by the logic below, but we can't control the relative order of those\n // events, so we have to postpone the removal of dangling FragmentSpread\n // nodes until after the current visit of the document has finished.\n },\n },\n FragmentDefinition: {\n enter: function (node, _key, _parent, path) {\n originalFragmentDefsByPath.set(JSON.stringify(path), node);\n },\n leave: function (node, _key, _parent, path) {\n var originalNode = originalFragmentDefsByPath.get(JSON.stringify(path));\n if (node === originalNode) {\n // If the FragmentNode received by this leave function is identical to\n // the one received by the corresponding enter function (above), then\n // the visitor must not have made any changes within this\n // FragmentDefinition node. This fragment definition may still be\n // removed if there are no ...spread references to it, but it won't be\n // removed just because it has only a __typename field.\n return node;\n }\n if (\n // This logic applies only if the document contains one or more\n // operations, since removing all fragments from a document containing\n // only fragments makes the document useless.\n operationCount > 0 &&\n node.selectionSet.selections.every(function (selection) {\n return selection.kind === Kind.FIELD &&\n selection.name.value === \"__typename\";\n })) {\n // This is a somewhat opinionated choice: if a FragmentDefinition ends\n // up having no fields other than __typename, we remove the whole\n // fragment definition, and later prune ...spread references to it.\n getInUseByFragmentName(node.name.value).removed = true;\n firstVisitMadeChanges = true;\n return null;\n }\n },\n },\n Directive: {\n leave: function (node) {\n // If a matching directive is found, remove the directive itself. Note\n // that this does not remove the target (field, argument, etc) of the\n // directive, but only the directive itself.\n if (directiveMatcher(node)) {\n firstVisitMadeChanges = true;\n return null;\n }\n },\n },\n });\n if (!firstVisitMadeChanges) {\n // If our first pass did not change anything about the document, then there\n // is no cleanup we need to do, and we can return the original doc.\n return doc;\n }\n // Utility for making sure inUse.transitiveVars is recursively populated.\n // Because this logic assumes inUse.fragmentSpreads has been completely\n // populated and inUse.removed has been set if appropriate,\n // populateTransitiveVars must be called after that information has been\n // collected by the first traversal of the document.\n var populateTransitiveVars = function (inUse) {\n if (!inUse.transitiveVars) {\n inUse.transitiveVars = new Set(inUse.variables);\n if (!inUse.removed) {\n inUse.fragmentSpreads.forEach(function (childFragmentName) {\n populateTransitiveVars(getInUseByFragmentName(childFragmentName)).transitiveVars.forEach(function (varName) {\n inUse.transitiveVars.add(varName);\n });\n });\n }\n }\n return inUse;\n };\n // Since we've been keeping track of fragment spreads used by particular\n // operations and fragment definitions, we now need to compute the set of all\n // spreads used (transitively) by any operations in the document.\n var allFragmentNamesUsed = new Set();\n docWithoutDirectiveSubtrees.definitions.forEach(function (def) {\n if (def.kind === Kind.OPERATION_DEFINITION) {\n populateTransitiveVars(getInUseByOperationName(def.name && def.name.value)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n }\n else if (def.kind === Kind.FRAGMENT_DEFINITION &&\n // If there are no operations in the document, then all fragment\n // definitions count as usages of their own fragment names. This heuristic\n // prevents accidentally removing all fragment definitions from the\n // document just because it contains no operations that use the fragments.\n operationCount === 0 &&\n !getInUseByFragmentName(def.name.value).removed) {\n allFragmentNamesUsed.add(def.name.value);\n }\n });\n // Now that we have added all fragment spreads used by operations to the\n // allFragmentNamesUsed set, we can complete the set by transitively adding\n // all fragment spreads used by those fragments, and so on.\n allFragmentNamesUsed.forEach(function (fragmentName) {\n // Once all the childFragmentName strings added here have been seen already,\n // the top-level allFragmentNamesUsed.forEach loop will terminate.\n populateTransitiveVars(getInUseByFragmentName(fragmentName)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n });\n var fragmentWillBeRemoved = function (fragmentName) {\n return !!(\n // A fragment definition will be removed if there are no spreads that refer\n // to it, or the fragment was explicitly removed because it had no fields\n // other than __typename.\n (!allFragmentNamesUsed.has(fragmentName) ||\n getInUseByFragmentName(fragmentName).removed));\n };\n var enterVisitor = {\n enter: function (node) {\n if (fragmentWillBeRemoved(node.name.value)) {\n return null;\n }\n },\n };\n return nullIfDocIsEmpty(visit(docWithoutDirectiveSubtrees, {\n // If the fragment is going to be removed, then leaving any dangling\n // FragmentSpread nodes with the same name would be a mistake.\n FragmentSpread: enterVisitor,\n // This is where the fragment definition is actually removed.\n FragmentDefinition: enterVisitor,\n OperationDefinition: {\n leave: function (node) {\n // Upon leaving each operation in the depth-first AST traversal, prune\n // any variables that are declared by the operation but unused within.\n if (node.variableDefinitions) {\n var usedVariableNames_1 = populateTransitiveVars(\n // If an operation is anonymous, we use the empty string as its key.\n getInUseByOperationName(node.name && node.name.value)).transitiveVars;\n // According to the GraphQL spec, all variables declared by an\n // operation must either be used by that operation or used by some\n // fragment included transitively into that operation:\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n //\n // To stay on the right side of this validation rule, if/when we\n // remove the last $var references from an operation or its fragments,\n // we must also remove the corresponding $var declaration from the\n // enclosing operation. This pruning applies only to operations and\n // not fragment definitions, at the moment. Fragments may be able to\n // declare variables eventually, but today they can only consume them.\n if (usedVariableNames_1.size < node.variableDefinitions.length) {\n return __assign(__assign({}, node), { variableDefinitions: node.variableDefinitions.filter(function (varDef) {\n return usedVariableNames_1.has(varDef.variable.name.value);\n }) });\n }\n }\n },\n },\n }));\n}\nexport var addTypenameToDocument = Object.assign(function (doc) {\n return visit(doc, {\n SelectionSet: {\n enter: function (node, _key, parent) {\n // Don't add __typename to OperationDefinitions.\n if (parent &&\n parent.kind ===\n Kind.OPERATION_DEFINITION) {\n return;\n }\n // No changes if no selections.\n var selections = node.selections;\n if (!selections) {\n return;\n }\n // If selections already have a __typename, or are part of an\n // introspection query, do nothing.\n var skip = selections.some(function (selection) {\n return (isField(selection) &&\n (selection.name.value === \"__typename\" ||\n selection.name.value.lastIndexOf(\"__\", 0) === 0));\n });\n if (skip) {\n return;\n }\n // If this SelectionSet is @export-ed as an input variable, it should\n // not have a __typename field (see issue #4691).\n var field = parent;\n if (isField(field) &&\n field.directives &&\n field.directives.some(function (d) { return d.name.value === \"export\"; })) {\n return;\n }\n // Create and return a new SelectionSet with a __typename Field.\n return __assign(__assign({}, node), { selections: __spreadArray(__spreadArray([], selections, true), [TYPENAME_FIELD], false) });\n },\n },\n });\n}, {\n added: function (field) {\n return field === TYPENAME_FIELD;\n },\n});\nvar connectionRemoveConfig = {\n test: function (directive) {\n var willRemove = directive.name.value === \"connection\";\n if (willRemove) {\n if (!directive.arguments ||\n !directive.arguments.some(function (arg) { return arg.name.value === \"key\"; })) {\n globalThis.__DEV__ !== false && invariant.warn(85);\n }\n }\n return willRemove;\n },\n};\nexport function removeConnectionDirectiveFromDocument(doc) {\n return removeDirectivesFromDocument([connectionRemoveConfig], checkDocument(doc));\n}\nfunction hasDirectivesInSelectionSet(directives, selectionSet, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n return (!!selectionSet &&\n selectionSet.selections &&\n selectionSet.selections.some(function (selection) {\n return hasDirectivesInSelection(directives, selection, nestedCheck);\n }));\n}\nfunction hasDirectivesInSelection(directives, selection, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n if (!isField(selection)) {\n return true;\n }\n if (!selection.directives) {\n return false;\n }\n return (selection.directives.some(getDirectiveMatcher(directives)) ||\n (nestedCheck &&\n hasDirectivesInSelectionSet(directives, selection.selectionSet, nestedCheck)));\n}\nfunction getArgumentMatcher(config) {\n return function argumentMatcher(argument) {\n return config.some(function (aConfig) {\n return argument.value &&\n argument.value.kind === Kind.VARIABLE &&\n argument.value.name &&\n (aConfig.name === argument.value.name.value ||\n (aConfig.test && aConfig.test(argument)));\n });\n };\n}\nexport function removeArgumentsFromDocument(config, doc) {\n var argMatcher = getArgumentMatcher(config);\n return nullIfDocIsEmpty(visit(doc, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { \n // Remove matching top level variables definitions.\n variableDefinitions: node.variableDefinitions ?\n node.variableDefinitions.filter(function (varDef) {\n return !config.some(function (arg) { return arg.name === varDef.variable.name.value; });\n })\n : [] });\n },\n },\n Field: {\n enter: function (node) {\n // If `remove` is set to true for an argument, and an argument match\n // is found for a field, remove the field as well.\n var shouldRemoveField = config.some(function (argConfig) { return argConfig.remove; });\n if (shouldRemoveField) {\n var argMatchCount_1 = 0;\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (argMatcher(arg)) {\n argMatchCount_1 += 1;\n }\n });\n }\n if (argMatchCount_1 === 1) {\n return null;\n }\n }\n },\n },\n Argument: {\n enter: function (node) {\n // Remove all matching arguments.\n if (argMatcher(node)) {\n return null;\n }\n },\n },\n }));\n}\nexport function removeFragmentSpreadFromDocument(config, doc) {\n function enter(node) {\n if (config.some(function (def) { return def.name === node.name.value; })) {\n return null;\n }\n }\n return nullIfDocIsEmpty(visit(doc, {\n FragmentSpread: { enter: enter },\n FragmentDefinition: { enter: enter },\n }));\n}\n// If the incoming document is a query, return it as is. Otherwise, build a\n// new document containing a query operation based on the selection set\n// of the previous main operation.\nexport function buildQueryFromSelectionSet(document) {\n var definition = getMainDefinition(document);\n var definitionOperation = definition.operation;\n if (definitionOperation === \"query\") {\n // Already a query, so return the existing document.\n return document;\n }\n // Build a new query using the selection set of the main operation.\n var modifiedDoc = visit(document, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { operation: \"query\" });\n },\n },\n });\n return modifiedDoc;\n}\n// Remove fields / selection sets that include an @client directive.\nexport function removeClientSetsFromDocument(document) {\n checkDocument(document);\n var modifiedDoc = removeDirectivesFromDocument([\n {\n test: function (directive) { return directive.name.value === \"client\"; },\n remove: true,\n },\n ], document);\n return modifiedDoc;\n}\n","export var version = \"3.10.8\";\n","const noop = () => {};\n\nlet _WINDOW = {};\nlet _DOCUMENT = {};\nlet _MUTATION_OBSERVER = null;\nlet _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nconst {\n userAgent = ''\n} = _WINDOW.navigator || {};\nconst WINDOW = _WINDOW;\nconst DOCUMENT = _DOCUMENT;\nconst MUTATION_OBSERVER = _MUTATION_OBSERVER;\nconst PERFORMANCE = _PERFORMANCE;\nconst IS_BROWSER = !!WINDOW.document;\nconst IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nconst IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar a = \"classic\",\n t = \"duotone\",\n r = \"sharp\",\n o = \"sharp-duotone\",\n c = [a, t, r, o];\n\nvar et$1 = {\n classic: {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n sharp: {\n 900: \"fass\",\n 400: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"sharp-duotone\": {\n 900: \"fasds\"\n }\n};\nvar bt = {\n kit: {\n fak: \"kit\",\n \"fa-kit\": \"kit\"\n },\n \"kit-duotone\": {\n fakd: \"kit-duotone\",\n \"fa-kit-duotone\": \"kit-duotone\"\n }\n},\n Ct = [\"kit\"];\nvar Dt = /fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\\-\\ ]/,\n Kt = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i;\nvar ao = {\n \"Font Awesome 5 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 5 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\"\n },\n \"Font Awesome 5 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 5 Duotone\": {\n 900: \"fad\"\n }\n};\nvar eo = {\n \"Font Awesome 6 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 6 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n \"Font Awesome 6 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 6 Duotone\": {\n 900: \"fad\"\n },\n \"Font Awesome 6 Sharp\": {\n 900: \"fass\",\n 400: \"fasr\",\n normal: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"Font Awesome 6 Sharp Duotone\": {\n 900: \"fasds\"\n }\n},\n lo = {\n classic: {\n \"fa-brands\": \"fab\",\n \"fa-duotone\": \"fad\",\n \"fa-light\": \"fal\",\n \"fa-regular\": \"far\",\n \"fa-solid\": \"fas\",\n \"fa-thin\": \"fat\"\n },\n sharp: {\n \"fa-solid\": \"fass\",\n \"fa-regular\": \"fasr\",\n \"fa-light\": \"fasl\",\n \"fa-thin\": \"fast\"\n },\n \"sharp-duotone\": {\n \"fa-solid\": \"fasds\"\n }\n},\n y = {\n classic: [\"fas\", \"far\", \"fal\", \"fat\"],\n sharp: [\"fass\", \"fasr\", \"fasl\", \"fast\"],\n \"sharp-duotone\": [\"fasds\"]\n},\n no = {\n classic: {\n fab: \"fa-brands\",\n fad: \"fa-duotone\",\n fal: \"fa-light\",\n far: \"fa-regular\",\n fas: \"fa-solid\",\n fat: \"fa-thin\"\n },\n sharp: {\n fass: \"fa-solid\",\n fasr: \"fa-regular\",\n fasl: \"fa-light\",\n fast: \"fa-thin\"\n },\n \"sharp-duotone\": {\n fasds: \"fa-solid\"\n }\n},\n fo = {\n classic: {\n solid: \"fas\",\n regular: \"far\",\n light: \"fal\",\n thin: \"fat\",\n duotone: \"fad\",\n brands: \"fab\"\n },\n sharp: {\n solid: \"fass\",\n regular: \"fasr\",\n light: \"fasl\",\n thin: \"fast\"\n },\n \"sharp-duotone\": {\n solid: \"fasds\"\n }\n},\n ho = {\n classic: {\n fa: \"solid\",\n fas: \"solid\",\n \"fa-solid\": \"solid\",\n far: \"regular\",\n \"fa-regular\": \"regular\",\n fal: \"light\",\n \"fa-light\": \"light\",\n fat: \"thin\",\n \"fa-thin\": \"thin\",\n fad: \"duotone\",\n \"fa-duotone\": \"duotone\",\n fab: \"brands\",\n \"fa-brands\": \"brands\"\n },\n sharp: {\n fa: \"solid\",\n fass: \"solid\",\n \"fa-solid\": \"solid\",\n fasr: \"regular\",\n \"fa-regular\": \"regular\",\n fasl: \"light\",\n \"fa-light\": \"light\",\n fast: \"thin\",\n \"fa-thin\": \"thin\"\n },\n \"sharp-duotone\": {\n fa: \"solid\",\n fasds: \"solid\",\n \"fa-solid\": \"solid\"\n }\n},\n x$1 = [\"solid\", \"regular\", \"light\", \"thin\", \"duotone\", \"brands\"],\n u$1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n m$1 = u$1.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]),\n t$1 = {\n GROUP: \"duotone-group\",\n SWAP_OPACITY: \"swap-opacity\",\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\"\n},\n yo = [...Object.keys(y), ...x$1, \"2xs\", \"xs\", \"sm\", \"lg\", \"xl\", \"2xl\", \"beat\", \"border\", \"fade\", \"beat-fade\", \"bounce\", \"flip-both\", \"flip-horizontal\", \"flip-vertical\", \"flip\", \"fw\", \"inverse\", \"layers-counter\", \"layers-text\", \"layers\", \"li\", \"pull-left\", \"pull-right\", \"pulse\", \"rotate-180\", \"rotate-270\", \"rotate-90\", \"rotate-by\", \"shake\", \"spin-pulse\", \"spin-reverse\", \"spin\", \"stack-1x\", \"stack-2x\", \"stack\", \"ul\", t$1.GROUP, t$1.SWAP_OPACITY, t$1.PRIMARY, t$1.SECONDARY].concat(u$1.map(o => \"\".concat(o, \"x\"))).concat(m$1.map(o => \"w-\".concat(o)));\nvar mo = {\n \"Font Awesome Kit\": {\n 400: \"fak\",\n normal: \"fak\"\n },\n \"Font Awesome Kit Duotone\": {\n 400: \"fakd\",\n normal: \"fakd\"\n }\n},\n Io = {\n kit: {\n \"fa-kit\": \"fak\"\n },\n \"kit-duotone\": {\n \"fa-kit-duotone\": \"fakd\"\n }\n},\n Fo = {\n kit: {\n fak: \"fa-kit\"\n },\n \"kit-duotone\": {\n fakd: \"fa-kit-duotone\"\n }\n},\n So = {\n kit: {\n kit: \"fak\"\n },\n \"kit-duotone\": {\n \"kit-duotone\": \"fakd\"\n }\n};\n\nconst NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nconst UNITS_IN_GRID = 16;\nconst DEFAULT_CSS_PREFIX = 'fa';\nconst DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nconst DATA_FA_I2SVG = 'data-fa-i2svg';\nconst DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nconst DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nconst DATA_PREFIX = 'data-prefix';\nconst DATA_ICON = 'data-icon';\nconst HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nconst MUTATION_APPROACH_ASYNC = 'async';\nconst TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nconst PRODUCTION = (() => {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e$$1) {\n return false;\n }\n})();\nconst FAMILIES = [a, r, o];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get(target, prop) {\n return prop in target ? target[prop] : target[a];\n }\n\n });\n}\n\nconst _PREFIX_TO_STYLE = { ...ho\n};\n_PREFIX_TO_STYLE[a] = { ...ho[a],\n ...bt['kit'],\n ...bt['kit-duotone']\n};\nconst PREFIX_TO_STYLE = familyProxy(_PREFIX_TO_STYLE);\nconst _STYLE_TO_PREFIX = { ...fo\n};\n_STYLE_TO_PREFIX[a] = { ..._STYLE_TO_PREFIX[a],\n ...So['kit'],\n ...So['kit-duotone']\n};\nconst STYLE_TO_PREFIX = familyProxy(_STYLE_TO_PREFIX);\nconst _PREFIX_TO_LONG_STYLE = { ...no\n};\n_PREFIX_TO_LONG_STYLE[a] = { ..._PREFIX_TO_LONG_STYLE[a],\n ...Fo['kit']\n};\nconst PREFIX_TO_LONG_STYLE = familyProxy(_PREFIX_TO_LONG_STYLE);\nconst _LONG_STYLE_TO_PREFIX = { ...lo\n};\n_LONG_STYLE_TO_PREFIX[a] = { ..._LONG_STYLE_TO_PREFIX[a],\n ...Io['kit']\n};\nconst LONG_STYLE_TO_PREFIX = familyProxy(_LONG_STYLE_TO_PREFIX);\nconst ICON_SELECTION_SYNTAX_PATTERN = Dt; // eslint-disable-line no-useless-escape\n\nconst LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nconst FONT_FAMILY_PATTERN = Kt;\nconst _FONT_WEIGHT_TO_PREFIX = { ...et$1\n};\nconst FONT_WEIGHT_TO_PREFIX = familyProxy(_FONT_WEIGHT_TO_PREFIX);\nconst ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nconst DUOTONE_CLASSES = t$1;\nconst prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[a]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[r]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[o]).map(prefixes.add.bind(prefixes));\nconst RESERVED_CLASSES = [...Ct, ...yo];\n\nconst initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n const attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(_ref => {\n let [attr, key] = _ref;\n const val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nconst _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nconst _config = { ..._default,\n ...initial\n};\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nconst config = {};\nObject.keys(_default).forEach(key => {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function (val) {\n _config[key] = val;\n\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function (val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nconst _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return () => {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nconst d$2 = UNITS_IN_GRID;\nconst meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n const style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n const headChildren = DOCUMENT.head.childNodes;\n let beforeChild = null;\n\n for (let i = headChildren.length - 1; i > -1; i--) {\n const child = headChildren[i];\n const tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nconst idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n let size = 12;\n let id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n const array = [];\n\n for (let i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(i => i);\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce((acc, attributeName) => {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce((acc, styleName) => {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n let {\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer,\n inner,\n path\n };\n}\nfunction transformForCss(_ref2) {\n let {\n transform,\n width = UNITS_IN_GRID,\n height = UNITS_IN_GRID,\n startCentered = false\n } = _ref2;\n let val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d$2 - width / 2, \"em, \").concat(transform.y / d$2 - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d$2, \"em), calc(-50% + \").concat(transform.y / d$2, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d$2, \"em, \").concat(transform.y / d$2, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d$2 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d$2 * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-duotone-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-counter-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(-1 * var(--fa-li-width, 2em));\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n animation-name: fa-beat;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n animation-name: fa-bounce;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n animation-name: fa-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n animation-name: fa-beat-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n animation-name: fa-flip;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n animation-name: fa-shake;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n animation-name: fa-spin;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 2s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n animation-name: fa-spin;\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n animation-delay: -1ms;\\n animation-duration: 1ms;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n transform: scale(1);\\n }\\n 45% {\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n transform: rotate(-15deg);\\n }\\n 4% {\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n transform: rotate(18deg);\\n }\\n 16% {\\n transform: rotate(-22deg);\\n }\\n 20% {\\n transform: rotate(22deg);\\n }\\n 32% {\\n transform: rotate(-12deg);\\n }\\n 36% {\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n transform: rotate(var(--fa-rotate-angle, 0));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n const dcp = DEFAULT_CSS_PREFIX;\n const drc = DEFAULT_REPLACEMENT_CLASS;\n const fp = config.cssPrefix;\n const rc = config.replacementClass;\n let s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n const dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n const customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n const rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nlet _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout() {\n return {\n dom: {\n css,\n insertCss: ensureCss\n }\n };\n },\n\n hooks() {\n return {\n beforeDOMElementCreation() {\n ensureCss();\n },\n\n beforeI2svg() {\n ensureCss();\n }\n\n };\n }\n\n};\n\nconst w$1 = WINDOW || {};\nif (!w$1[NAMESPACE_IDENTIFIER]) w$1[NAMESPACE_IDENTIFIER] = {};\nif (!w$1[NAMESPACE_IDENTIFIER].styles) w$1[NAMESPACE_IDENTIFIER].styles = {};\nif (!w$1[NAMESPACE_IDENTIFIER].hooks) w$1[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w$1[NAMESPACE_IDENTIFIER].shims) w$1[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w$1[NAMESPACE_IDENTIFIER];\n\nconst functions = [];\n\nconst listener = function () {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(fn => fn());\n};\n\nlet loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n const {\n tag,\n attributes = {},\n children = []\n } = abstractNodes;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix,\n iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n const output = [];\n let counter = 0;\n const length = string.length;\n\n while (counter < length) {\n const value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n const extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n const decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n const size = string.length;\n let first = string.charCodeAt(index);\n let second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce((acc, iconName) => {\n const icon = icons[iconName];\n const expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n skipHooks = false\n } = params;\n const normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = { ...(namespace.styles[prefix] || {}),\n ...normalized\n };\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nconst {\n styles,\n shims\n} = namespace;\nconst LONG_STYLE = {\n [a]: Object.values(PREFIX_TO_LONG_STYLE[a]),\n [r]: Object.values(PREFIX_TO_LONG_STYLE[r]),\n [o]: Object.values(PREFIX_TO_LONG_STYLE[o])\n};\nlet _defaultUsablePrefix = null;\nlet _byUnicode = {};\nlet _byLigature = {};\nlet _byOldName = {};\nlet _byOldUnicode = {};\nlet _byAlias = {};\nconst PREFIXES = {\n [a]: Object.keys(PREFIX_TO_STYLE[a]),\n [r]: Object.keys(PREFIX_TO_STYLE[r]),\n [o]: Object.keys(PREFIX_TO_STYLE[o])\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n const parts = cls.split('-');\n const prefix = parts[0];\n const iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nconst build = () => {\n const lookup = reducer => {\n return reduce(styles, (o$$1, style, prefix) => {\n o$$1[prefix] = reduce(style, reducer, {});\n return o$$1;\n }, {});\n };\n\n _byUnicode = lookup((acc, icon, iconName) => {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'number';\n });\n aliases.forEach(alias => {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup((acc, icon, iconName) => {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'string';\n });\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup((acc, icon, iconName) => {\n const aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n const hasRegular = 'far' in styles || config.autoFetchSvg;\n const shimLookups = reduce(shims, (acc, shim) => {\n const maybeNameMaybeUnicode = shim[0];\n let prefix = shim[1];\n const iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix,\n iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix,\n iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(c$$1 => {\n _defaultUsablePrefix = getCanonicalPrefix(c$$1.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n const oldUnicode = _byOldUnicode[unicode];\n const newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nconst emptyCanonicalIcon = () => {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n family = a\n } = params;\n const style = PREFIX_TO_STYLE[family][styleOrPrefix];\n const prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n const defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n const result = prefix || defined || null;\n return result;\n}\nconst PREFIXES_FOR_FAMILY = {\n [a]: Object.keys(PREFIX_TO_LONG_STYLE[a]),\n [r]: Object.keys(PREFIX_TO_LONG_STYLE[r]),\n [o]: Object.keys(PREFIX_TO_LONG_STYLE[o])\n};\nfunction getCanonicalIcon(values) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n skipLookups = false\n } = params;\n const famProps = {\n [a]: \"\".concat(config.cssPrefix, \"-\").concat(a),\n [r]: \"\".concat(config.cssPrefix, \"-\").concat(r),\n [o]: \"\".concat(config.cssPrefix, \"-\").concat(o)\n };\n let givenPrefix = null;\n let family = a;\n const nonDuotoneFamilyIds = c.filter(familyId => familyId !== t);\n nonDuotoneFamilyIds.forEach(familyId => {\n if (values.includes(famProps[familyId]) || values.some(v$$1 => PREFIXES_FOR_FAMILY[familyId].includes(v$$1))) {\n family = familyId;\n }\n });\n const canonical = values.reduce((acc, cls) => {\n const iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && !nonDuotoneFamilyIds.some(familyName => cls === famProps[familyName])) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n const shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n const aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === r && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (!canonical.prefix && family === o && (styles['fasds'] || config.autoFetchSvg)) {\n canonical.prefix = 'fasds';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nclass Library {\n constructor() {\n this.definitions = {};\n }\n\n add() {\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n const additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(key => {\n this.definitions[key] = { ...(this.definitions[key] || {}),\n ...additions[key]\n };\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n const longPrefix = PREFIX_TO_LONG_STYLE[a][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n\n reset() {\n this.definitions = {};\n }\n\n _pullDefinitions(additions, definition) {\n const normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(key => {\n const {\n prefix,\n iconName,\n icon\n } = normalized[key];\n const aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(alias => {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n\n}\n\nlet _plugins = [];\nlet _hooks = {};\nconst providers = {};\nconst defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n let {\n mixoutsTo: obj\n } = _ref;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(k => {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(plugin => {\n const mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(tk => {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (typeof mixout[tk] === 'object') {\n Object.keys(mixout[tk]).forEach(sk => {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n const hooks = plugin.hooks();\n Object.keys(hooks).forEach(hook => {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n accumulator = hookFn.apply(null, [accumulator, ...args]); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n const hook = arguments[0];\n const args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n let {\n iconName\n } = iconLookup;\n const prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nconst library = new Library();\nconst noAuto = () => {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nconst dom = {\n i2svg: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject(new Error('Operation requires a DOM of some kind.'));\n }\n },\n watch: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot\n } = params;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(() => {\n autoReplace({\n autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nconst parse = {\n icon: icon => {\n if (icon === null) {\n return null;\n }\n\n if (typeof icon === 'object' && icon.prefix && icon.iconName) {\n return {\n prefix: icon.prefix,\n iconName: byAlias(icon.prefix, icon.iconName) || icon.iconName\n };\n }\n\n if (Array.isArray(icon) && icon.length === 2) {\n const iconName = icon[1].indexOf('fa-') === 0 ? icon[1].slice(3) : icon[1];\n const prefix = getCanonicalPrefix(icon[0]);\n return {\n prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof icon === 'string' && (icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n const canonicalIcon = getCanonicalIcon(icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof icon === 'string') {\n const prefix = getDefaultUsablePrefix();\n return {\n prefix,\n iconName: byAlias(prefix, icon) || icon\n };\n }\n }\n};\nconst api = {\n noAuto,\n config,\n dom,\n parse,\n library,\n findIconDefinition,\n toHtml\n};\n\nconst autoReplace = function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot = DOCUMENT\n } = params;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function () {\n return val.abstract.map(a => toHtml(a));\n }\n });\n Object.defineProperty(val, 'node', {\n get: function () {\n if (!IS_DOM) return;\n const container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n let {\n children,\n main,\n mask,\n attributes,\n styles,\n transform\n } = _ref;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n const {\n width,\n height\n } = main;\n const offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles({ ...styles,\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n });\n }\n\n return [{\n tag: 'svg',\n attributes,\n children\n }];\n}\n\nfunction asSymbol (_ref) {\n let {\n prefix,\n iconName,\n children,\n attributes,\n symbol\n } = _ref;\n const id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: { ...attributes,\n id\n },\n children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n const {\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n title,\n maskId,\n titleId,\n extra,\n watchable = false\n } = params;\n const {\n width,\n height\n } = mask.found ? mask : main;\n const isUploadedIcon = prefix === 'fak';\n const attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(c => extra.classes.indexOf(c) === -1).filter(c => c !== '' || !!c).concat(extra.classes).join(' ');\n let content = {\n children: [],\n attributes: { ...extra.attributes,\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n }\n };\n const uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n const args = { ...content,\n prefix,\n iconName,\n main,\n mask,\n maskId,\n transform,\n symbol,\n styles: { ...uploadedIconWidthStyle,\n ...extra.styles\n }\n };\n const {\n children,\n attributes\n } = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n };\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n const {\n content,\n width,\n height,\n transform,\n title,\n extra,\n watchable = false\n } = params;\n const attributes = { ...extra.attributes,\n ...(title ? {\n 'title': title\n } : {}),\n 'class': extra.classes.join(' ')\n };\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n const styles = { ...extra.styles\n };\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform,\n startCentered: true,\n width,\n height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n const styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n const {\n content,\n title,\n extra\n } = params;\n const attributes = { ...extra.attributes,\n ...(title ? {\n 'title': title\n } : {}),\n 'class': extra.classes.join(' ')\n };\n const styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nconst {\n styles: styles$1\n} = namespace;\nfunction asFoundIcon(icon) {\n const width = icon[0];\n const height = icon[1];\n const [vectorData] = icon.slice(4);\n let element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width,\n height,\n icon: element\n };\n}\nconst missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n let givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise((resolve, reject) => {\n if (givenPrefix === 'fa') {\n const shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n const icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve({ ...missingIconResolutionMixin,\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n });\n });\n}\n\nconst noop$1 = () => {};\n\nconst p$2 = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nconst preamble = \"FA \\\"6.6.0\\\"\";\n\nconst begin = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return () => end(name);\n};\n\nconst end = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p$2.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin,\n end\n};\n\nconst noop$2 = () => {};\n\nfunction isWatched(node) {\n const i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n const prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n const icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n const mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n ceFn = abstractObj.tag === 'svg' ? createElementNS : createElement\n } = params;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n const tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n const children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n let comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nconst mutators = {\n replace: function (mutation) {\n const node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(abstract => {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n let comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function (mutation) {\n const node = mutation[0];\n const abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n const forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n\n if (abstract[0].attributes.class) {\n const splitClasses = abstract[0].attributes.class.split(' ').reduce((acc, cls) => {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n const newInnerHTML = abstract.map(a => toHtml(a)).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n const callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n let frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(() => {\n const mutator = getMutator();\n const mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nlet disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nlet mo$1 = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n const {\n treeCallback = noop$2,\n nodeCallback = noop$2,\n pseudoElementsCallback = noop$2,\n observeMutationsRoot = DOCUMENT\n } = options;\n mo$1 = new MUTATION_OBSERVER(objects => {\n if (disabled) return;\n const defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(mutationRecord => {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n const {\n prefix,\n iconName\n } = getCanonicalIcon(classArray(mutationRecord.target));\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo$1.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo$1) return;\n mo$1.disconnect();\n}\n\nfunction styleParser (node) {\n const style = node.getAttribute('style');\n let val = [];\n\n if (style) {\n val = style.split(';').reduce((acc, style) => {\n const styles = style.split(':');\n const prop = styles[0];\n const value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n const existingPrefix = node.getAttribute('data-prefix');\n const existingIconName = node.getAttribute('data-icon');\n const innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n let val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n const extraAttributes = toArray(node.attributes).reduce((acc, attr) => {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n const title = node.getAttribute('title');\n const titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n let parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n const {\n iconName,\n prefix,\n rest: extraClasses\n } = classParser(node);\n const extraAttributes = attributesParser(node);\n const pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n let extraStyles = parser.styleParser ? styleParser(node) : [];\n return {\n iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n },\n ...pluginMeta\n };\n}\n\nconst {\n styles: styles$2\n} = namespace;\n\nfunction generateMutation(node) {\n const nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nlet knownPrefixes = new Set();\nFAMILIES.map(family => {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[a]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[r]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[o]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = [...knownPrefixes];\n\nfunction onTree(root) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n const htmlClassList = DOCUMENT.documentElement.classList;\n\n const hclAdd = suffix => htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n\n const hclRemove = suffix => htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n\n const prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(f$$1 => \"fa-\".concat(f$$1)).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n const prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(p$$1 => \".\".concat(p$$1, \":not([\").concat(DATA_FA_I2SVG, \"])\"))).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n let candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e$$1) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n const mark = perf.begin('onTree');\n const mutations = candidates.reduce((acc, node) => {\n try {\n const mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e$$1) {\n if (!PRODUCTION) {\n if (e$$1.name === 'MissingIcon') {\n console.error(e$$1);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise((resolve, reject) => {\n Promise.all(mutations).then(resolvedMutations => {\n perform(resolvedMutations, () => {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(e$$1 => {\n mark();\n reject(e$$1);\n });\n });\n}\n\nfunction onNode(node) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(mutation => {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n let {\n mask\n } = params;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, { ...params,\n mask\n });\n };\n}\n\nconst render = function (iconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n symbol = false,\n mask = null,\n maskId = null,\n title = null,\n titleId = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n if (!iconDefinition) return;\n const {\n prefix,\n iconName,\n icon\n } = iconDefinition;\n return domVariants({\n type: 'icon',\n ...iconDefinition\n }, () => {\n callHooks('beforeDOMElementCreation', {\n iconDefinition,\n params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix,\n iconName,\n transform: { ...meaninglessTransform,\n ...transform\n },\n symbol,\n title,\n maskId,\n titleId,\n extra: {\n attributes,\n styles,\n classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n\n };\n },\n\n provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n const {\n node = DOCUMENT,\n callback = () => {}\n } = params;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n const {\n iconName,\n title,\n titleId,\n prefix,\n transform,\n symbol,\n mask,\n maskId,\n extra\n } = nodeMeta;\n return new Promise((resolve, reject) => {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(_ref => {\n let [main, mask] = _ref;\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n maskId,\n title,\n titleId,\n extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref2) {\n let {\n children,\n attributes,\n main,\n transform,\n styles\n } = _ref2;\n const styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n let nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main,\n transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children,\n attributes\n };\n };\n }\n\n};\n\nvar Layers = {\n mixout() {\n return {\n layer(assembler) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n classes = []\n } = params;\n return domVariants({\n type: 'layer'\n }, () => {\n callHooks('beforeDOMElementCreation', {\n assembler,\n params\n });\n let children = [];\n assembler(args => {\n Array.isArray(args) ? args.map(a => {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\"), ...classes].join(' ')\n },\n children\n }];\n });\n }\n\n };\n }\n\n};\n\nvar LayersCounter = {\n mixout() {\n return {\n counter(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'counter',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\"), ...classes]\n }\n });\n });\n }\n\n };\n }\n\n};\n\nvar LayersText = {\n mixout() {\n return {\n text(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'text',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersTextAbstract({\n content,\n transform: { ...meaninglessTransform,\n ...transform\n },\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\"), ...classes]\n }\n });\n });\n }\n\n };\n },\n\n provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n const {\n title,\n transform,\n extra\n } = nodeMeta;\n let width = null;\n let height = null;\n\n if (IS_IE) {\n const computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n const boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width,\n height,\n transform,\n title,\n extra,\n watchable: true\n })]);\n };\n }\n\n};\n\nconst CLEAN_CONTENT_PATTERN = new RegExp('\\u{22}', 'ug');\nconst SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nconst _FONT_FAMILY_WEIGHT_TO_PREFIX = { ...{\n FontAwesome: {\n normal: 'fas',\n 400: 'fas'\n }\n },\n ...eo,\n ...ao,\n ...mo\n};\nconst FONT_FAMILY_WEIGHT_TO_PREFIX = Object.keys(_FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, key) => {\n acc[key.toLowerCase()] = _FONT_FAMILY_WEIGHT_TO_PREFIX[key];\n return acc;\n}, {});\nconst FONT_FAMILY_WEIGHT_FALLBACK = Object.keys(FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, fontFamily) => {\n const weights = FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamily];\n acc[fontFamily] = weights[900] || [...Object.entries(weights)][0][1];\n return acc;\n}, {});\nfunction hexValueFromContent(content) {\n const cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n const codePoint = codePointAt(cleaned, 0);\n const isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n const isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\nfunction getPrefix(fontFamily, fontWeight) {\n const fontFamilySanitized = fontFamily.replace(/^['\"]|['\"]$/g, '').toLowerCase();\n const fontWeightInteger = parseInt(fontWeight);\n const fontWeightSanitized = isNaN(fontWeightInteger) ? 'normal' : fontWeightInteger;\n return (FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamilySanitized] || {})[fontWeightSanitized] || FONT_FAMILY_WEIGHT_FALLBACK[fontFamilySanitized];\n}\n\nfunction replaceForPosition(node, position) {\n const pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise((resolve, reject) => {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n const children = toArray(node.children);\n const alreadyProcessedPseudoElement = children.filter(c => c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position)[0];\n const styles = WINDOW.getComputedStyle(node, position);\n const fontFamily = styles.getPropertyValue('font-family');\n const fontFamilyMatch = fontFamily.match(FONT_FAMILY_PATTERN);\n const fontWeight = styles.getPropertyValue('font-weight');\n const content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamilyMatch) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamilyMatch && content !== 'none' && content !== '') {\n const content = styles.getPropertyValue('content');\n let prefix = getPrefix(fontFamily, fontWeight);\n const {\n value: hexValue,\n isSecondary\n } = hexValueFromContent(content);\n const isV4 = fontFamilyMatch[0].startsWith('FontAwesome');\n let iconName = byUnicode(prefix, hexValue);\n let iconIdentifier = iconName;\n\n if (isV4) {\n const iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n const meta = blankMeta();\n const {\n extra\n } = meta;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(main => {\n const abstract = makeInlineSvgAbstract({ ...meta,\n icons: {\n main,\n mask: emptyCanonicalIcon()\n },\n prefix,\n iconName: iconIdentifier,\n extra,\n watchable: true\n });\n const element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(a => toHtml(a)).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise((resolve, reject) => {\n const operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n const end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(() => {\n end();\n enableObservation();\n resolve();\n }).catch(() => {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n\n };\n },\n\n provides(providers) {\n providers.pseudoElements2svg = function (params) {\n const {\n node = DOCUMENT\n } = params;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n\n};\n\nlet _unwatched = false;\nvar MutationObserver$1 = {\n mixout() {\n return {\n dom: {\n unwatch() {\n disableObservation();\n _unwatched = true;\n }\n\n }\n };\n },\n\n hooks() {\n return {\n bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n\n noAuto() {\n disconnect();\n },\n\n watch(params) {\n const {\n observeMutationsRoot\n } = params;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot\n }));\n }\n }\n\n };\n }\n\n};\n\nconst parseTransformString = transformString => {\n let transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce((acc, n) => {\n const parts = n.toLowerCase().split('-');\n const first = parts[0];\n let rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout() {\n return {\n parse: {\n transform: transformString => {\n return parseTransformString(transformString);\n }\n }\n };\n },\n\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n\n };\n },\n\n provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n let {\n main,\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n const operations = {\n outer,\n inner,\n path\n };\n return {\n tag: 'g',\n attributes: { ...operations.outer\n },\n children: [{\n tag: 'g',\n attributes: { ...operations.inner\n },\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: { ...main.icon.attributes,\n ...operations.path\n }\n }]\n }]\n };\n };\n }\n\n};\n\nconst ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nvar Masks = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const maskData = node.getAttribute('data-fa-mask');\n const mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(i => i.trim()));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n\n };\n },\n\n provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n let {\n children,\n attributes,\n main,\n mask,\n maskId: explicitMaskId,\n transform\n } = _ref;\n const {\n width: mainWidth,\n icon: mainPath\n } = main;\n const {\n width: maskWidth,\n icon: maskPath\n } = mask;\n const trans = transformForSvg({\n transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n const maskRect = {\n tag: 'rect',\n attributes: { ...ALL_SPACE,\n fill: 'white'\n }\n };\n const maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n const maskInnerGroup = {\n tag: 'g',\n attributes: { ...trans.inner\n },\n children: [fillBlack({\n tag: mainPath.tag,\n attributes: { ...mainPath.attributes,\n ...trans.path\n },\n ...maskInnerGroupChildrenMixin\n })]\n };\n const maskOuterGroup = {\n tag: 'g',\n attributes: { ...trans.outer\n },\n children: [maskInnerGroup]\n };\n const maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n const clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n const maskTag = {\n tag: 'mask',\n attributes: { ...ALL_SPACE,\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n },\n children: [maskRect, maskOuterGroup]\n };\n const defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: {\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\"),\n ...ALL_SPACE\n }\n });\n return {\n children,\n attributes\n };\n };\n }\n\n};\n\nvar MissingIconIndicator = {\n provides(providers) {\n let reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n const gChildren = [];\n const FILL = {\n fill: 'currentColor'\n };\n const ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: { ...FILL,\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n }\n });\n const OPACITY_ANIMATE = { ...ANIMATION_BASE,\n attributeName: 'opacity'\n };\n const dot = {\n tag: 'circle',\n attributes: { ...FILL,\n cx: '256',\n cy: '364',\n r: '28'\n },\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: { ...ANIMATION_BASE,\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n }\n }, {\n tag: 'animate',\n attributes: { ...OPACITY_ANIMATE,\n values: '1;0;1;1;0;1;'\n }\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: { ...FILL,\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n },\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: { ...OPACITY_ANIMATE,\n values: '1;0;0;0;0;1;'\n }\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: { ...FILL,\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n },\n children: [{\n tag: 'animate',\n attributes: { ...OPACITY_ANIMATE,\n values: '0;0;1;1;0;0;'\n }\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n\n};\n\nvar SvgSymbols = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const symbolData = node.getAttribute('data-fa-symbol');\n const symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n\n };\n }\n\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nconst noAuto$1 = api.noAuto;\nconst config$1 = api.config;\nconst library$1 = api.library;\nconst dom$1 = api.dom;\nconst parse$1 = api.parse;\nconst findIconDefinition$1 = api.findIconDefinition;\nconst toHtml$1 = api.toHtml;\nconst icon = api.icon;\nconst layer = api.layer;\nconst text = api.text;\nconst counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import * as i0 from '@angular/core';\nimport { Injectable, Directive, Input, Component, Optional, HostBinding, NgModule } from '@angular/core';\nimport { parse, icon, counter, text } from '@fortawesome/fontawesome-svg-core';\nimport * as i2 from '@angular/platform-browser';\n\nconst faWarnIfIconDefinitionMissing = (iconSpec) => {\n throw new Error(`Could not find icon with iconName=${iconSpec.iconName} and prefix=${iconSpec.prefix} in the icon library.`);\n};\n\nconst faWarnIfIconSpecMissing = () => {\n throw new Error('Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.');\n};\n\n/**\n * Fontawesome class list.\n * Returns classes array by props.\n */\nconst faClassList = (props) => {\n const classes = {\n [`fa-${props.animation}`]: props.animation != null && !props.animation.startsWith('spin'),\n 'fa-spin': props.animation === 'spin' || props.animation === 'spin-reverse',\n 'fa-spin-pulse': props.animation === 'spin-pulse' || props.animation === 'spin-pulse-reverse',\n 'fa-spin-reverse': props.animation === 'spin-reverse' || props.animation === 'spin-pulse-reverse',\n // According to https://fontawesome.com/docs/web/style/animate#spin fa-pulse\n // class is deprecated, remove the below line when Font Awesome 5 support\n // is dropped.\n 'fa-pulse': props.animation === 'spin-pulse' || props.animation === 'spin-pulse-reverse',\n 'fa-fw': props.fixedWidth,\n 'fa-border': props.border,\n 'fa-inverse': props.inverse,\n 'fa-layers-counter': props.counter,\n 'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n 'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both',\n [`fa-${props.size}`]: props.size !== null,\n [`fa-rotate-${props.rotate}`]: props.rotate !== null,\n [`fa-pull-${props.pull}`]: props.pull !== null,\n [`fa-stack-${props.stackItemSize}`]: props.stackItemSize != null,\n };\n return Object.keys(classes)\n .map((key) => (classes[key] ? key : null))\n .filter((key) => key);\n};\n\n/**\n * Returns if is IconLookup or not.\n */\nconst isIconLookup = (i) => i.prefix !== undefined && i.iconName !== undefined;\n\n/**\n * Normalizing icon spec.\n */\nconst faNormalizeIconSpec = (iconSpec, defaultPrefix) => {\n if (isIconLookup(iconSpec)) {\n return iconSpec;\n }\n if (typeof iconSpec === 'string') {\n return { prefix: defaultPrefix, iconName: iconSpec };\n }\n return { prefix: iconSpec[0], iconName: iconSpec[1] };\n};\n\nclass FaConfig {\n constructor() {\n /**\n * Default prefix to use, when one is not provided with the icon name.\n *\n * @default 'fas'\n */\n this.defaultPrefix = 'fas';\n /**\n * Provides a fallback icon to use whilst main icon is being loaded asynchronously.\n * When value is null, then fa-icon component will throw an error if icon input is missing.\n * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.\n *\n * @default null\n */\n this.fallbackIcon = null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaConfig, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass FaIconLibrary {\n constructor() {\n this.definitions = {};\n }\n addIcons(...icons) {\n for (const icon of icons) {\n if (!(icon.prefix in this.definitions)) {\n this.definitions[icon.prefix] = {};\n }\n this.definitions[icon.prefix][icon.iconName] = icon;\n for (const alias of icon.icon[2]) {\n if (typeof alias === 'string') {\n this.definitions[icon.prefix][alias] = icon;\n }\n }\n }\n }\n addIconPacks(...packs) {\n for (const pack of packs) {\n const icons = Object.keys(pack).map((key) => pack[key]);\n this.addIcons(...icons);\n }\n }\n getIconDefinition(prefix, name) {\n if (prefix in this.definitions && name in this.definitions[prefix]) {\n return this.definitions[prefix][name];\n }\n return null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaIconLibrary, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaIconLibrary, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaIconLibrary, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass FaStackItemSizeDirective {\n constructor() {\n /**\n * Specify whether icon inside {@link FaStackComponent} should be rendered in\n * regular size (1x) or as a larger icon (2x).\n */\n this.stackItemSize = '1x';\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n throw new Error('fa-icon is not allowed to customize size when used inside fa-stack. ' +\n 'Set size on the enclosing fa-stack instead: <fa-stack size=\"4x\">...</fa-stack>.');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaStackItemSizeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.0.0\", type: FaStackItemSizeDirective, selector: \"fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]\", inputs: { stackItemSize: \"stackItemSize\", size: \"size\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaStackItemSizeDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]',\n }]\n }], propDecorators: { stackItemSize: [{\n type: Input\n }], size: [{\n type: Input\n }] } });\n\nclass FaStackComponent {\n constructor(renderer, elementRef) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n }\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'fa-stack');\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n if (changes.size.currentValue != null) {\n this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n }\n if (changes.size.previousValue != null) {\n this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaStackComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.0.0\", type: FaStackComponent, selector: \"fa-stack\", inputs: { size: \"size\" }, usesOnChanges: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaStackComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-stack',\n template: `<ng-content></ng-content>`,\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { size: [{\n type: Input\n }] } });\n\nclass FaIconComponent {\n /**\n * @deprecated Use animation=\"spin\" instead. To be removed in 0.14.0.\n */\n set spin(value) {\n this.animation = value ? 'spin' : undefined;\n }\n /**\n * @deprecated Use animation=\"spin-pulse\" instead. To be removed in 0.14.0.\n */\n set pulse(value) {\n this.animation = value ? 'spin-pulse' : undefined;\n }\n constructor(sanitizer, config, iconLibrary, stackItem, stack) {\n this.sanitizer = sanitizer;\n this.config = config;\n this.iconLibrary = iconLibrary;\n this.stackItem = stackItem;\n /**\n * Set `class` attribute on the SVG element rendered by the component.\n *\n * @deprecated This input breaks view encapsulation and is not recommended.\n * For simple cases (like colors), use `class` on the component itself, for\n * more complex usages, explicitly opt-in to break the view encapsulation.\n * This input is deprecated since 0.12.0 and will be removed in 0.13.0.\n */\n this.classes = [];\n if (stack != null && stackItem == null) {\n console.error('FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into ' +\n 'fa-stack. Example: <fa-icon stackItemSize=\"2x\"></fa-icon>.');\n }\n }\n ngOnChanges(changes) {\n if (this.icon == null && this.config.fallbackIcon == null) {\n faWarnIfIconSpecMissing();\n return;\n }\n if (changes) {\n const iconToBeRendered = this.icon != null ? this.icon : this.config.fallbackIcon;\n const iconDefinition = this.findIconDefinition(iconToBeRendered);\n if (iconDefinition != null) {\n const params = this.buildParams();\n this.renderIcon(iconDefinition, params);\n }\n }\n }\n /**\n * Programmatically trigger rendering of the icon.\n *\n * This method is useful, when creating {@link FaIconComponent} dynamically or\n * changing its inputs programmatically as in these cases icon won't be\n * re-rendered automatically.\n */\n render() {\n this.ngOnChanges({});\n }\n findIconDefinition(i) {\n const lookup = faNormalizeIconSpec(i, this.config.defaultPrefix);\n if ('icon' in lookup) {\n return lookup;\n }\n const definition = this.iconLibrary.getIconDefinition(lookup.prefix, lookup.iconName);\n if (definition != null) {\n return definition;\n }\n faWarnIfIconDefinitionMissing(lookup);\n return null;\n }\n buildParams() {\n const classOpts = {\n flip: this.flip,\n animation: this.animation,\n border: this.border,\n inverse: this.inverse,\n size: this.size || null,\n pull: this.pull || null,\n rotate: this.rotate || null,\n fixedWidth: typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth,\n stackItemSize: this.stackItem != null ? this.stackItem.stackItemSize : null,\n };\n const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n return {\n title: this.title,\n transform: parsedTransform,\n classes: [...faClassList(classOpts), ...this.classes],\n mask: this.mask != null ? this.findIconDefinition(this.mask) : null,\n styles: this.styles != null ? this.styles : {},\n symbol: this.symbol,\n attributes: {\n role: this.a11yRole,\n },\n };\n }\n renderIcon(definition, params) {\n const renderedIcon = icon(definition, params);\n this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.html.join('\\n'));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaIconComponent, deps: [{ token: i2.DomSanitizer }, { token: FaConfig }, { token: FaIconLibrary }, { token: FaStackItemSizeDirective, optional: true }, { token: FaStackComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.0.0\", type: FaIconComponent, selector: \"fa-icon\", inputs: { icon: \"icon\", title: \"title\", animation: \"animation\", spin: \"spin\", pulse: \"pulse\", mask: \"mask\", styles: \"styles\", flip: \"flip\", size: \"size\", pull: \"pull\", border: \"border\", inverse: \"inverse\", symbol: \"symbol\", rotate: \"rotate\", fixedWidth: \"fixedWidth\", classes: \"classes\", transform: \"transform\", a11yRole: \"a11yRole\" }, host: { properties: { \"attr.title\": \"title\", \"innerHTML\": \"this.renderedIconHTML\" }, classAttribute: \"ng-fa-icon\" }, usesOnChanges: true, ngImport: i0, template: ``, isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaIconComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-icon',\n template: ``,\n host: {\n class: 'ng-fa-icon',\n '[attr.title]': 'title',\n },\n }]\n }], ctorParameters: function () { return [{ type: i2.DomSanitizer }, { type: FaConfig }, { type: FaIconLibrary }, { type: FaStackItemSizeDirective, decorators: [{\n type: Optional\n }] }, { type: FaStackComponent, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { icon: [{\n type: Input\n }], title: [{\n type: Input\n }], animation: [{\n type: Input\n }], spin: [{\n type: Input\n }], pulse: [{\n type: Input\n }], mask: [{\n type: Input\n }], styles: [{\n type: Input\n }], flip: [{\n type: Input\n }], size: [{\n type: Input\n }], pull: [{\n type: Input\n }], border: [{\n type: Input\n }], inverse: [{\n type: Input\n }], symbol: [{\n type: Input\n }], rotate: [{\n type: Input\n }], fixedWidth: [{\n type: Input\n }], classes: [{\n type: Input\n }], transform: [{\n type: Input\n }], a11yRole: [{\n type: Input\n }], renderedIconHTML: [{\n type: HostBinding,\n args: ['innerHTML']\n }] } });\n\nclass FaDuotoneIconComponent extends FaIconComponent {\n findIconDefinition(i) {\n const definition = super.findIconDefinition(i);\n if (definition != null && !Array.isArray(definition.icon[4])) {\n throw new Error('The specified icon does not appear to be a Duotone icon. ' +\n 'Check that you specified the correct style: ' +\n `<fa-duotone-icon [icon]=\"['fad', '${definition.iconName}']\"></fa-duotone-icon> ` +\n `or use: <fa-icon icon=\"${definition.iconName}\"></fa-icon> instead.`);\n }\n return definition;\n }\n buildParams() {\n const params = super.buildParams();\n if (this.swapOpacity === true || this.swapOpacity === 'true') {\n params.classes.push('fa-swap-opacity');\n }\n if (this.primaryOpacity != null) {\n params.styles['--fa-primary-opacity'] = this.primaryOpacity.toString();\n }\n if (this.secondaryOpacity != null) {\n params.styles['--fa-secondary-opacity'] = this.secondaryOpacity.toString();\n }\n if (this.primaryColor != null) {\n params.styles['--fa-primary-color'] = this.primaryColor;\n }\n if (this.secondaryColor != null) {\n params.styles['--fa-secondary-color'] = this.secondaryColor;\n }\n return params;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaDuotoneIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.0.0\", type: FaDuotoneIconComponent, selector: \"fa-duotone-icon\", inputs: { swapOpacity: \"swapOpacity\", primaryOpacity: \"primaryOpacity\", secondaryOpacity: \"secondaryOpacity\", primaryColor: \"primaryColor\", secondaryColor: \"secondaryColor\" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaDuotoneIconComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-duotone-icon',\n template: ``,\n }]\n }], propDecorators: { swapOpacity: [{\n type: Input\n }], primaryOpacity: [{\n type: Input\n }], secondaryOpacity: [{\n type: Input\n }], primaryColor: [{\n type: Input\n }], secondaryColor: [{\n type: Input\n }] } });\n\n/**\n * Warns if parent component not existing.\n */\nconst faWarnIfParentNotExist = (parent, parentName, childName) => {\n if (!parent) {\n throw new Error(`${childName} should be used as child of ${parentName} only.`);\n }\n};\n\n/**\n * Fontawesome layers.\n */\nclass FaLayersComponent {\n constructor(renderer, elementRef, config) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.config = config;\n }\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'fa-layers');\n this.fixedWidth = typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth;\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n if (changes.size.currentValue != null) {\n this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n }\n if (changes.size.previousValue != null) {\n this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaLayersComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: FaConfig }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.0.0\", type: FaLayersComponent, selector: \"fa-layers\", inputs: { size: \"size\", fixedWidth: \"fixedWidth\" }, host: { properties: { \"class.fa-fw\": \"this.fixedWidth\" } }, usesOnChanges: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaLayersComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-layers',\n template: `<ng-content></ng-content>`,\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: FaConfig }]; }, propDecorators: { size: [{\n type: Input\n }], fixedWidth: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.fa-fw']\n }] } });\n\nclass FaLayersCounterComponent {\n constructor(parent, sanitizer) {\n this.parent = parent;\n this.sanitizer = sanitizer;\n /**\n * Set `class` attribute on the SVG element rendered by the component.\n *\n * @deprecated This input breaks view encapsulation and is not recommended.\n * For simple cases (like colors), use `class` on the component itself, for\n * more complex usages, explicitly opt-in to break the view encapsulation.\n * This input is deprecated since 0.12.0 and will be removed in 0.13.0.\n */\n this.classes = [];\n faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n }\n ngOnChanges(changes) {\n if (changes) {\n const params = this.buildParams();\n this.updateContent(params);\n }\n }\n buildParams() {\n const classes = [];\n if (this.classes != null) {\n classes.push(...this.classes);\n }\n if (this.position != null) {\n classes.push(`fa-layers-${this.position}`);\n }\n return {\n title: this.title,\n classes,\n styles: this.styles,\n };\n }\n updateContent(params) {\n this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(counter(this.content || '', params).html.join(''));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaLayersCounterComponent, deps: [{ token: FaLayersComponent, optional: true }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.0.0\", type: FaLayersCounterComponent, selector: \"fa-layers-counter\", inputs: { content: \"content\", title: \"title\", styles: \"styles\", classes: \"classes\", position: \"position\" }, host: { properties: { \"innerHTML\": \"this.renderedHTML\" }, classAttribute: \"ng-fa-layers-counter\" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaLayersCounterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-layers-counter',\n template: '',\n host: {\n class: 'ng-fa-layers-counter',\n },\n }]\n }], ctorParameters: function () { return [{ type: FaLayersComponent, decorators: [{\n type: Optional\n }] }, { type: i2.DomSanitizer }]; }, propDecorators: { content: [{\n type: Input\n }], title: [{\n type: Input\n }], styles: [{\n type: Input\n }], classes: [{\n type: Input\n }], position: [{\n type: Input\n }], renderedHTML: [{\n type: HostBinding,\n args: ['innerHTML']\n }] } });\n\nclass FaLayersTextComponent {\n /**\n * @deprecated This input was incorrectly exposed and never worked correctly. To be removed in 0.14.0.\n */\n set spin(value) {\n this.animation = value ? 'spin' : undefined;\n }\n /**\n * @deprecated This input was incorrectly exposed and never worked correctly. To be removed in 0.14.0.\n */\n set pulse(value) {\n this.animation = value ? 'spin-pulse' : undefined;\n }\n constructor(parent, sanitizer) {\n this.parent = parent;\n this.sanitizer = sanitizer;\n /**\n * Set `class` attribute on the SVG element rendered by the component.\n *\n * @deprecated This input breaks view encapsulation and is not recommended.\n * For simple cases (like colors), use `class` on the component itself, for\n * more complex usages, explicitly opt-in to break the view encapsulation.\n * This input is deprecated since 0.12.0 and will be removed in 0.13.0.\n */\n this.classes = [];\n faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n }\n ngOnChanges(changes) {\n if (changes) {\n const params = this.buildParams();\n this.updateContent(params);\n }\n }\n /**\n * Updating params by component props.\n */\n buildParams() {\n const classOpts = {\n flip: this.flip,\n animation: this.animation,\n border: this.border,\n inverse: this.inverse,\n size: this.size || null,\n pull: this.pull || null,\n rotate: this.rotate || null,\n fixedWidth: this.fixedWidth,\n };\n const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n return {\n transform: parsedTransform,\n classes: [...faClassList(classOpts), ...this.classes],\n title: this.title,\n styles: this.styles,\n };\n }\n updateContent(params) {\n this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(text(this.content || '', params).html.join('\\n'));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaLayersTextComponent, deps: [{ token: FaLayersComponent, optional: true }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.0.0\", type: FaLayersTextComponent, selector: \"fa-layers-text\", inputs: { content: \"content\", title: \"title\", styles: \"styles\", classes: \"classes\", spin: \"spin\", pulse: \"pulse\", flip: \"flip\", size: \"size\", pull: \"pull\", border: \"border\", inverse: \"inverse\", rotate: \"rotate\", fixedWidth: \"fixedWidth\", transform: \"transform\" }, host: { properties: { \"innerHTML\": \"this.renderedHTML\" }, classAttribute: \"ng-fa-layers-text\" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FaLayersTextComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-layers-text',\n template: '',\n host: {\n class: 'ng-fa-layers-text',\n },\n }]\n }], ctorParameters: function () { return [{ type: FaLayersComponent, decorators: [{\n type: Optional\n }] }, { type: i2.DomSanitizer }]; }, propDecorators: { content: [{\n type: Input\n }], title: [{\n type: Input\n }], styles: [{\n type: Input\n }], classes: [{\n type: Input\n }], spin: [{\n type: Input\n }], pulse: [{\n type: Input\n }], flip: [{\n type: Input\n }], size: [{\n type: Input\n }], pull: [{\n type: Input\n }], border: [{\n type: Input\n }], inverse: [{\n type: Input\n }], rotate: [{\n type: Input\n }], fixedWidth: [{\n type: Input\n }], transform: [{\n type: Input\n }], renderedHTML: [{\n type: HostBinding,\n args: ['innerHTML']\n }] } });\n\nclass FontAwesomeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FontAwesomeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.0.0\", ngImport: i0, type: FontAwesomeModule, declarations: [FaIconComponent,\n FaDuotoneIconComponent,\n FaLayersComponent,\n FaLayersTextComponent,\n FaLayersCounterComponent,\n FaStackComponent,\n FaStackItemSizeDirective], exports: [FaIconComponent,\n FaDuotoneIconComponent,\n FaLayersComponent,\n FaLayersTextComponent,\n FaLayersCounterComponent,\n FaStackComponent,\n FaStackItemSizeDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FontAwesomeModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FontAwesomeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n FaIconComponent,\n FaDuotoneIconComponent,\n FaLayersComponent,\n FaLayersTextComponent,\n FaLayersCounterComponent,\n FaStackComponent,\n FaStackItemSizeDirective,\n ],\n exports: [\n FaIconComponent,\n FaDuotoneIconComponent,\n FaLayersComponent,\n FaLayersTextComponent,\n FaLayersCounterComponent,\n FaStackComponent,\n FaStackItemSizeDirective,\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FaConfig, FaDuotoneIconComponent, FaIconComponent, FaIconLibrary, FaLayersComponent, FaLayersCounterComponent, FaLayersTextComponent, FaStackComponent, FaStackItemSizeDirective, FontAwesomeModule };\n","const prefix = \"fas\";\nconst fa0 = {\n prefix: 'fas',\n iconName: '0',\n icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160l0 128c0 88.4-71.6 160-160 160S0 408.4 0 320L0 192zM160 96c-53 0-96 43-96 96l0 128c0 53 43 96 96 96s96-43 96-96l0-128c0-53-43-96-96-96z\"]\n};\nconst fa1 = {\n prefix: 'fas',\n iconName: '1',\n icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.8 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8 96 416l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-352z\"]\n};\nconst fa2 = {\n prefix: 'fas',\n iconName: '2',\n icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416 288 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nconst fa3 = {\n prefix: 'fas',\n iconName: '3',\n icon: [320, 512, [], \"33\", \"M0 64C0 46.3 14.3 32 32 32l240 0c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L162.3 208l21.7 0c75.1 0 136 60.9 136 136s-60.9 136-136 136l-78.6 0C63 480 24.2 456 5.3 418.1l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5l78.6 0c39.8 0 72-32.2 72-72s-32.2-72-72-72L80 272c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L189.7 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst fa4 = {\n prefix: 'fas',\n iconName: '4',\n icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368l224 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-144c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L82.4 304 189 77.6z\"]\n};\nconst fa5 = {\n prefix: 'fas',\n iconName: '5',\n icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L90.7 96 70.3 208 184 208c75.1 0 136 60.9 136 136s-60.9 136-136 136l-83.5 0c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1l83.5 0c39.8 0 72-32.2 72-72s-32.2-72-72-72L32 272c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nconst fa6 = {\n prefix: 'fas',\n iconName: '6',\n icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3l0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM256 320A96 96 0 1 1 64 320a96 96 0 1 1 192 0z\"]\n};\nconst fa7 = {\n prefix: 'fas',\n iconName: '7',\n icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32l256 0c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst fa8 = {\n prefix: 'fas',\n iconName: '8',\n icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128l-32 0C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128l64 0c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288l15.9 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64s28.7-64 64-64l15.9 0c0 0 .1 0 .1 0l32 0c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0l-32 0c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64l32 0c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nconst fa9 = {\n prefix: 'fas',\n iconName: '9',\n icon: [320, 512, [], \"39\", \"M64 192a96 96 0 1 0 192 0A96 96 0 1 0 64 192zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nconst faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6l319.2 0 42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nconst faArrowsToCircle = {\n prefix: 'fas',\n iconName: 'arrows-to-circle',\n icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7 160 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l18.7 0L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM114.7 352L96 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0s0 0 0 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160l18.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1s0 0 0 0l0-96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3l0 18.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96s0 0 0 0l0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4l.1 0s0 0 0 0l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.7 0z\"]\n};\nconst faCircleChevronRight = {\n prefix: 'fas',\n iconName: 'circle-chevron-right',\n icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nconst faChevronCircleRight = faCircleChevronRight;\nconst faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256l0 32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32l0 80 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faTrashCan = {\n prefix: 'fas',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3zM32 128l384 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zm96 64c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16z\"]\n};\nconst faTrashAlt = faTrashCan;\nconst faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M64 128l0-32 64 0 0 320-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-320 64 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48c0-26.5-21.5-48-48-48L160 32 48 32C21.5 32 0 53.5 0 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32zM502.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 192-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-192 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nconst faUserXmark = {\n prefix: 'fas',\n iconName: 'user-xmark',\n icon: [640, 512, [\"user-times\"], \"f235\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faUserTimes = faUserXmark;\nconst faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1 96 192c0 53 43 96 96 96s96-43 96-96l0-120.9-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1L352 192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112l0-70.7c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 70.7c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192L32 71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l96 0 0 80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416 448 416c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0z\"]\n};\nconst faCommentAlt = faMessage;\nconst faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 224 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-192-32 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faDownLeftAndUpRightToCenter = {\n prefix: 'fas',\n iconName: 'down-left-and-up-right-to-center',\n icon: [512, 512, [\"compress-alt\"], \"f422\", \"M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272l144 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z\"]\n};\nconst faCompressAlt = faDownLeftAndUpRightToCenter;\nconst faExplosion = {\n prefix: 'fas',\n iconName: 'explosion',\n icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87-71.4 0c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64l-79.6 0L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448s0 0 0 0l448 0s0 0 0 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0zM288 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24z\"]\n};\nconst faFileLines = {\n prefix: 'fas',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM112 256l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faFileAlt = faFileLines;\nconst faFileText = faFileLines;\nconst faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 352 96 0 0-160c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 160c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-352-96 0 0 160c0 17.7-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0 0-160z\"]\n};\nconst faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8l0 96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304l0-96z\"]\n};\nconst faBuildingUn = {\n prefix: 'fas',\n iconName: 'building-un',\n icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM237.3 71.1l34.7 52L272 80c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCalendarDays = {\n prefix: 'fas',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm64 80l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm128 0l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 400l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faCalendarAlt = faCalendarDays;\nconst faAnchorCircleCheck = {\n prefix: 'fas',\n iconName: 'anchor-circle-check',\n icon: [640, 512, [], \"e4aa\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faBuildingCircleArrowRight = {\n prefix: 'fas',\n iconName: 'building-circle-arrow-right',\n icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 184.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm96 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6L521.4 352 432 352c-8.8 0-16 7.2-16 16s7.2 16 16 16l89.4 0-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nconst faVolleyball = {\n prefix: 'fas',\n iconName: 'volleyball',\n icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nconst faVolleyballBall = faVolleyball;\nconst faArrowsUpToLine = {\n prefix: 'fas',\n iconName: 'arrows-up-to-line',\n icon: [576, 512, [], \"e4c2\", \"M32 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96zM9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 237.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L416 237.3 416 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nconst faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l256 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nconst faSortDesc = faSortDown;\nconst faCircleMinus = {\n prefix: 'fas',\n iconName: 'circle-minus',\n icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMinusCircle = faCircleMinus;\nconst faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5L64 448l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 192 0 32 0 0-32 0-448zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128l96 0 0 352c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-320c0-35.3-28.7-64-64-64l-96 0 0 64z\"]\n};\nconst faRightFromBracket = {\n prefix: 'fas',\n iconName: 'right-from-bracket',\n icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nconst faSignOutAlt = faRightFromBracket;\nconst faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [512, 512, [9883], \"f5d2\", \"M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [129532], \"e06e\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM416 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96s43-96 96-96l88.4 0c-15.2-17-24.4-39.4-24.4-64L96 192c-53 0-96 43-96 96L0 416c0 53 43 96 96 96l320 0c53 0 96-43 96-96l0-128c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64l192 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0-160 0z\"]\n};\nconst faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32l0 144c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48l0-57L352 90.2 352 208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48l0-96c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM74.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2l61.7 0c10.7 0 20.7 5.3 26.6 14.2L213.3 304l26.7 0c26.5 0 48 21.5 48 48l0 112c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 352c0-26.5 21.5-48 48-48l26.7 0zM192 408a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM478.7 278.3L440.3 368l55.7 0c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L391.7 400 336 400c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L19.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nconst faHeartMusicCameraBolt = faIcons;\nconst faMicrophoneLinesSlash = {\n prefix: 'fas',\n iconName: 'microphone-lines-slash',\n icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24 0 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8l0-44.8-57.1 0-34.5-27c2.9-3.1 7-5 11.6-5l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0c0-53-43-96-96-96s-96 43-96 96l0 54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128l0-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nconst faMicrophoneAltSlash = faMicrophoneLinesSlash;\nconst faBridgeCircleCheck = {\n prefix: 'fas',\n iconName: 'bridge-circle-check',\n icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [448, 512, [], \"e06a\", \"M128 32l0 96 128 0 0-32 60.1 0c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4L256 32c0-17.7-14.3-32-32-32L160 0c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512l186.4 0c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7l-149.1 0zM216 280l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256l0 24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z\"]\n};\nconst faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm64-64c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32l-8.6 0C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64l0 88c0 22.1-17.9 40-40 40s-40-17.9-40-40l0-56c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 56c0 39.8 32.2 72 72 72z\"]\n};\nconst faMagnifyingGlassLocation = {\n prefix: 'fas',\n iconName: 'magnifying-glass-location',\n icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faSearchLocation = faMagnifyingGlassLocation;\nconst faForwardStep = {\n prefix: 'fas',\n iconName: 'forward-step',\n icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416L0 96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241l0-145c0-17.7 14.3-32 32-32s32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-145-11.5 9.6-192 160z\"]\n};\nconst faStepForward = faForwardStep;\nconst faFaceSmileBeam = {\n prefix: 'fas',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faSmileBeam = faFaceSmileBeam;\nconst faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 279.7c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80 0-66L0 64 0 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9 0 65.5L64 252.6 64 318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3l0-63.9 38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9 0 66.7-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8l0 71.4c21.8 1.9 43.3 6.7 64 14.4l0-69.8 22.7 6.7c13.5 4 27.3 6.4 41.3 7.4l0-64.2c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12 0-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8l0 72.4c-13-.4-26 .8-38.7 3.6L128 173.2 128 98 64 114l0 73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2 0-71.7-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5l0 77.4zm64-149.4l0-70.8c-20.9 6.1-42.4 9.1-64 9.1l0 69.4c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n};\nconst faFootball = {\n prefix: 'fas',\n iconName: 'football',\n icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6C47.8 183.4 35.1 215.9 26.9 249L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faFootballBall = faFootball;\nconst faSchoolCircleExclamation = {\n prefix: 'fas',\n iconName: 'school-circle-exclamation',\n icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64l0 64 178.7 0L128 338.7 128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l224 0 0-64-178.7 0L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-274.7z\"]\n};\nconst faAnglesDown = {\n prefix: 'fas',\n iconName: 'angles-down',\n icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nconst faAngleDoubleDown = faAnglesDown;\nconst faUsersRectangle = {\n prefix: 'fas',\n iconName: 'users-rectangle',\n icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l448 0c53 0 96-43 96-96l0-320c0-53-43-96-96-96L96 0zM64 96c0-17.7 14.3-32 32-32l448 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32L64 96zm159.8 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0C119.9 256 96 279.9 96 309.3zM461.2 336l56.1 0c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nconst faPeopleRoof = {\n prefix: 'fas',\n iconName: 'people-roof',\n icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 160a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM144 256a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm312 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM226.9 491.4L200 441.5l0 38.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-38.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3l19.5 0c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3l19.5 0c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6l19.5 0c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5l0 38.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-38.5-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5l0 54.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-54.5-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nconst faPeopleLine = {\n prefix: 'fas',\n iconName: 'people-line',\n icon: [640, 512, [], \"e534\", \"M360 72a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM144 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416zM496 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5l0 54.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-54.5 26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5l0 38.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5 88 352c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5z\"]\n};\nconst faBeerMugEmpty = {\n prefix: 'fas',\n iconName: 'beer-mug-empty',\n icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 32 51.2 0c42.4 0 76.8 34.4 76.8 76.8l0 102.1c0 30.4-17.9 57.9-45.6 70.2L384 381.7l0 34.3c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64L32 64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7l0-102.1c0-7.1-5.7-12.8-12.8-12.8L384 160l0 151.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224z\"]\n};\nconst faBeer = faBeerMugEmpty;\nconst faDiagramPredecessor = {\n prefix: 'fas',\n iconName: 'diagram-predecessor',\n icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nconst faArrowUpLong = {\n prefix: 'fas',\n iconName: 'arrow-up-long',\n icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-370.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nconst faLongArrowUp = faArrowUpLong;\nconst faFireFlameSimple = {\n prefix: 'fas',\n iconName: 'fire-flame-simple',\n icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nconst faBurn = faFireFlameSimple;\nconst faPerson = {\n prefix: 'fas',\n iconName: 'person',\n icon: [320, 512, [129485, \"male\"], \"f183\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0z\"]\n};\nconst faMale = faPerson;\nconst faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96l0 256 64 0 0-256 384 0 0 256 64 0 0-256c0-35.3-28.7-64-64-64L128 32zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480l486.4 0c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2L19.2 384z\"]\n};\nconst faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [512, 512, [], \"f6dd\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-208 0c-35.3 0-64 28.7-64 64l0 144-48 0c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM200 352l16 0c22.1 0 40 17.9 40 40l0 8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-8c0-4.4-3.6-8-8-8l-16 0c-4.4 0-8 3.6-8 8l0 80c0 4.4 3.6 8 8 8l16 0c4.4 0 8-3.6 8-8l0-8c0-8.8 7.2-16 16-16s16 7.2 16 16l0 8c0 22.1-17.9 40-40 40l-16 0c-22.1 0-40-17.9-40-40l0-80c0-22.1 17.9-40 40-40zm133.1 0l34.9 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-34.9 0c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1L304 512c-8.8 0-16-7.2-16-16s7.2-16 16-16l42.9 0c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16l0 31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66l0-31.6c0-8.8 7.2-16 16-16s16 7.2 16 16l0 31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6l0-31.6c0-8.8 7.2-16 16-16z\"]\n};\nconst faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1L64 64c0 17.7-14.3 32-32 32S0 81.7 0 64l0-1.2c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32l0 128c0 17.7 14.3 32 32 32l192 0 0-160c0-17.7 14.3-32 32-32s32 14.3 32 32l0 160 192 0c17.7 0 32-14.3 32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 128c0 53-43 96-96 96l-192 0 0 64 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0-160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0 0-64L96 384c-53 0-96-43-96-96L0 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32z\"]\n};\nconst faTruckPlane = {\n prefix: 'fas',\n iconName: 'truck-plane',\n icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1l0 106.5L7.8 274.3C2.9 277.2 0 282.4 0 288l0 64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37 0 81.2-50 40c-3.8 3-6 7.6-6 12.5l0 32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15l0-32.6c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1 0-3.5 0-82.5L256 184l0-1.1s0 0 0 0l0-96.9C256 54.7 231.5 0 200 0zm88 176l0 224c0 20.9 13.4 38.7 32 45.3l0 42.7c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-40 160 0 0 40c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-42.7c18.6-6.6 32-24.4 32-45.3l0-224c0-26.5-21.5-48-48-48l-256 0c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7l151.4 0c9.2 0 17.2 6 20.5 14.7L576 304l-224 0 15.8-49.3zM568 352a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM336 376a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 224a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faFaceGrinStars = {\n prefix: 'fas',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nconst faGrinStars = faFaceGrinStars;\nconst faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M160 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7l221.8 0c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8L224 64l-64 0 0 144.5zM288 64l0 144.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L366.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C374 314.1 384 347.9 384 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5L76.1 512c-17.3 0-34.2-7.1-43.8-21.5C11.9 460.1 0 423.4 0 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14L96 64C78.3 64 64 49.7 64 32S78.3 0 96 0l16 0L272 0l16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nconst faSpaghettiMonsterFlying = {\n prefix: 'fas',\n iconName: 'spaghetti-monster-flying',\n icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1c0 0 0 0 0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faPastafarianism = faSpaghettiMonsterFlying;\nconst faArrowDownUpAcrossLine = {\n prefix: 'fas',\n iconName: 'arrow-down-up-across-line',\n icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7 192 288l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0 0-114.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3 384 224l-192 0-64 0-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 114.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192l64 0 0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128zM448 320l-64 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128z\"]\n};\nconst faSpoon = {\n prefix: 'fas',\n iconName: 'spoon',\n icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nconst faUtensilSpoon = faSpoon;\nconst faJarWheat = {\n prefix: 'fas',\n iconName: 'jar-wheat',\n icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0L256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64l192 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 160zm112 0l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224l21.8 0 32 0 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 160c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320l21.8 0 32 0 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 256c-19.1 0-36.3 8.4-48 21.7zM112 352l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416l21.8 0 0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 352c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nconst faEnvelopesBulk = {\n prefix: 'fas',\n iconName: 'envelopes-bulk',\n icon: [640, 512, [\"mail-bulk\"], \"f674\", \"M128 0C110.3 0 96 14.3 96 32l0 192 96 0 0-32c0-35.3 28.7-64 64-64l224 0 0-96c0-17.7-14.3-32-32-32L128 0zM256 160c-17.7 0-32 14.3-32 32l0 32 96 0c35.3 0 64 28.7 64 64l0 128 192 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-320 0zm240 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM64 256c-17.7 0-32 14.3-32 32l0 13L187.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L352 301l0-13c0-17.7-14.3-32-32-32L64 256zm288 84.8L216 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L32 340.8 32 480c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32l0-139.2z\"]\n};\nconst faMailBulk = faEnvelopesBulk;\nconst faFileCircleExclamation = {\n prefix: 'fas',\n iconName: 'file-circle-exclamation',\n icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faCircleH = {\n prefix: 'fas',\n iconName: 'circle-h',\n icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM368 152l0 104 0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80-128 0 0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80 128 0 0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faHospitalSymbol = faCircleH;\nconst faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm64 32l0 64c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0z\"]\n};\nconst faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L96 0zM208 288l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64zM496 192c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64z\"]\n};\nconst faContactBook = faAddressBook;\nconst faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-209.9 0-.4-.1-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3c0 0 0 0 0 0s0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6c0 0 0 0 0 0l.2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1l-75.7 0c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nconst faK = {\n prefix: 'fas',\n iconName: 'k',\n icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 328 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-107 64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nconst faLandmarkFlag = {\n prefix: 'fas',\n iconName: 'landmark-flag',\n icon: [512, 512, [], \"e51c\", \"M272 0l80 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-80 0 0 32 192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L48 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0 0-112c0-8.8 7.2-16 16-16l16 0zM64 224l64 0 0 192 40 0 0-192 64 0 0 192 48 0 0-192 64 0 0 192 40 0 0-192 64 0 0 196.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 224z\"]\n};\nconst faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1 0 32c0 8.8 7.2 16 16 16l32 0zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faPencilAlt = faPencil;\nconst faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-320c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3l0 41.7 0 41.7L459.5 440.6zM256 352l0-96 0-128 0-32c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-64z\"]\n};\nconst faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nconst faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2s0 0 0 0s0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.2-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9c0 0 0 0 0 0s0 0 0 0l-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nconst faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32L48 32C21.5 32 0 53.5 0 80L0 400c0 26.5 21.5 48 48 48l144 0 0-272c0-44.2 35.8-80 80-80l48 0 0-16c0-26.5-21.5-48-48-48l-56.6 0C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48l0 272 0 16c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-220.1c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1L320 128l-48 0zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faFileClipboard = faPaste;\nconst faCodePullRequest = {\n prefix: 'fas',\n iconName: 'code-pull-request',\n icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24l0 40 16 0c70.7 0 128 57.3 128 128l0 166.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3L400 192c0-35.3-28.7-64-64-64l-16 0 0 40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80A24 24 0 1 0 56 80a24 24 0 1 0 48 0zm8 73.3l0 205.3c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-205.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm328 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faTruckRampBox = {\n prefix: 'fas',\n iconName: 'truck-ramp-box',\n icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0l0 400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8 352 64c0-35.3 28.7-64 64-64L640 0zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nconst faTruckLoading = faTruckRampBox;\nconst faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faVialVirus = {\n prefix: 'fas',\n iconName: 'vial-virus',\n icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l0 288c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5L224 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0L96 32 32 32zM96 192l0-96 64 0 0 96-64 0zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-88a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm40 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faSheetPlastic = {\n prefix: 'fas',\n iconName: 'sheet-plastic',\n icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64l160 0 0-128c0-17.7 14.3-32 32-32l128 0 0-288c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64L0 448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384l-128 0 0 128L384 384z\"]\n};\nconst faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144L0 368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144l-16 0 0 96 16 0c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48l0-224z\"]\n};\nconst faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 399.5 56.4 330 132.8 309.9c6-1.6 12.2 .9 15.9 5.8l62.5 83.3c6.4 8.5 19.2 8.5 25.6 0l62.5-83.3c3.7-4.9 9.9-7.4 15.9-5.8C391.6 330 448 399.5 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L160 96z\"]\n};\nconst faPersonArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'person-arrow-up-from-line',\n icon: [640, 512, [], \"e539\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352l0-96 16 0 0 96-16 0zm-64 0l-88 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l120 0 80 0 376 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-344 0 0-191.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-242.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nconst faScrollTorah = {\n prefix: 'fas',\n iconName: 'scroll-torah',\n icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480L96 32C96 14.3 74.5 0 48 0S0 14.3 0 32L0 480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32L128 32l0 448 384 0 0-448zM592 0c-26.5 0-48 14.3-48 32l0 448c0 17.7 21.5 32 48 32s48-14.3 48-32l0-448c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3l56.7 0 31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180l56.7 0c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3L369 332l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332l-56.7 0c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332l-42.4 0L320 368.4zM254.5 256l30.3 52 70.4 0 30.3-52-30.3-52-70.4 0-30.3 52zm144.9 23.8L383 308l32.8 0-16.4-28.2zM415.8 204L383 204l16.4 28.2L415.8 204zM320 143.6L298.8 180l42.4 0L320 143.6zM224.2 204l16.4 28.2L257 204l-32.8 0zM257 308l-16.4-28.2L224.2 308l32.8 0z\"]\n};\nconst faTorah = faScrollTorah;\nconst faBroomBall = {\n prefix: 'fas',\n iconName: 'broom-ball',\n icon: [576, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M566.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-192 192 34.7 34.7c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6l-29.1 0L256 211.7l0-29.1c0-12.5 10.1-22.6 22.6-22.6c6 0 11.8 2.4 16 6.6l34.7 34.7 192-192c12.5-12.5 32.8-12.5 45.3 0zm-344 225.5L341.1 353.4c3.7 42.7-11.7 85.2-42.3 115.8C271.4 496.6 234.2 512 195.5 512L22.1 512C9.9 512 0 502.1 0 489.9c0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2c0-31.5 12.5-61.7 34.8-84l8-8c30.6-30.6 73.1-45.9 115.8-42.3zM464 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faQuidditch = faBroomBall;\nconst faQuidditchBroomBall = faBroomBall;\nconst faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128l-192 0c-70.7 0-128-57.3-128-128s57.3-128 128-128l192 0zM576 256c0-106-86-192-192-192L192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192zM192 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faBoxArchive = {\n prefix: 'fas',\n iconName: 'box-archive',\n icon: [512, 512, [\"archive\"], \"f187\", \"M32 32l448 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96L0 64C0 46.3 14.3 32 32 32zm0 128l448 0 0 256c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64l0-256zm128 80c0 8.8 7.2 16 16 16l160 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-160 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faArchive = faBoxArchive;\nconst faPersonDrowning = {\n prefix: 'fas',\n iconName: 'person-drowning',\n icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3L192 64zM320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faArrowDown91 = {\n prefix: 'fas',\n iconName: 'arrow-down-9-1',\n icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7 192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 301.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM450.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l48 0 48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26zM418.3 91a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 91zM405.1 203.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nconst faSortNumericDesc = faArrowDown91;\nconst faSortNumericDownAlt = faArrowDown91;\nconst faFaceGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448l0-47.3c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6l0 46.9c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGrinTongueSquint = faFaceGrinTongueSquint;\nconst faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M128 0l64 0c17.7 0 32 14.3 32 32l0 96L96 128l0-96c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96l128 0c53 0 96 43 96 96l0 208c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 256zm240 80A80 80 0 1 0 80 336a80 80 0 1 0 160 0zM256 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M288 64l0 64 128 0L368 64l-80 0zM419.2 25.6L496 128l80 0c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64l-64 0c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l160 0 0-80c0-26.5 21.5-48 48-48l96 0c20.1 0 39.1 9.5 51.2 25.6zM152 256l16 0c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8l0 16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512l-16 0c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392l0-16c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6l16 0c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8l0 16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512l-16 0c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392l0-16c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faW = {\n prefix: 'fas',\n iconName: 'w',\n icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nconst faEarthAfrica = {\n prefix: 'fas',\n iconName: 'earth-africa',\n icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9l0 41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.4-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32l0 28c0 26.5 21.5 48 48 48l32 0c8.8 0 16 7.2 16 16l0 48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4l0-12.1c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faGlobeAfrica = faEarthAfrica;\nconst faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96C0 175.3 143.3 32 320 32s320 143.3 320 320l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-70.7 57.3-128 128-128s128 57.3 128 128l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-35.3-28.7-64-64-64zM160 352l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-123.7 100.3-224 224-224s224 100.3 224 224l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nconst faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nconst faTabletScreenButton = {\n prefix: 'fas',\n iconName: 'tablet-screen-button',\n icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0L384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64L64 64l0 320 320 0 0-320z\"]\n};\nconst faTabletAlt = faTabletScreenButton;\nconst faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5l0 1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3l0-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nconst faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nconst faTrowelBricks = {\n prefix: 'fas',\n iconName: 'trowel-bricks',\n icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32l0 72 89 0c3.6-13.8 16.1-24 31-24l88 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-88 0c-14.9 0-27.4-10.2-31-24l-89 0 0 72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-64zM32 384l96 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm192 0l256 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32z\"]\n};\nconst faFaceFlushed = {\n prefix: 'fas',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM176 384c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16zm-16-88a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faFlushed = faFaceFlushed;\nconst faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48L0 256l144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L0 288l0 64 144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L0 384l0 80c0 26.5 21.5 48 48 48l217.9 0c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2l0-95.9L320 48c0-26.5-21.5-48-48-48L48 0zM152 64l16 0c8.8 0 16 7.2 16 16l0 24 24 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-24 0 0 24c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-24-24 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16l24 0 0-24c0-8.8 7.2-16 16-16zM512 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM288 477.1c0 19.3 15.6 34.9 34.9 34.9l218.2 0c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1l-101.8 0c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nconst faTentArrowLeftRight = {\n prefix: 'fas',\n iconName: 'tent-arrow-left-right',\n icon: [576, 512, [], \"e57f\", \"M488.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L489.5 72 86.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nconst faLegal = faGavel;\nconst faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M128 32l32 0c17.7 0 32 14.3 32 32l0 32L96 96l0-32c0-17.7 14.3-32 32-32zm64 96l0 320c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32l0-59.1c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28l99.8 0zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3l0 59.1c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-320 99.8 0zM320 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 32-96 0 0-32zm-32 64l0 160-64 0 0-160 64 0z\"]\n};\nconst faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 21.2-5.1 41.1-14.2 58.7L416 300.8 416 96c0-53-43-96-96-96s-96 43-96 96l0 54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128l0-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6z\"]\n};\nconst faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M92.5 0L208 0c40 0 52 24 64 48s24 48 64 48l85.2 0C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288l-256 0-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64-15 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 256 0 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-13.5 0 25.6-64 19.9 0c26.5 0 48 21.5 48 48l0 112L0 384 0 272c0-26.5 21.5-48 48-48l31 0zM0 416l512 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48l0-48z\"]\n};\nconst faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l57.7 0 16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7L64 128c-17.7 0-32 14.3-32 32l0 32 96 0c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32l70.4 0c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128l61.8 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-20.4 0c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21L280 32zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40l66.4 0C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104l-66.4 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBellConcierge = {\n prefix: 'fas',\n iconName: 'bell-concierge',\n icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.3C119.6 157.2 32 252.4 32 368l448 0c0-115.6-87.6-210.8-200-222.7l0-33.3 16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0-40 0zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24l464 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 400z\"]\n};\nconst faConciergeBell = faBellConcierge;\nconst faPenRuler = {\n prefix: 'fas',\n iconName: 'pen-ruler',\n icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nconst faPencilRuler = faPenRuler;\nconst faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160l44.8 0c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2l0 72.8c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-115.7c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM448 64a64 64 0 1 1 128 0A64 64 0 1 1 448 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1l44.8 0c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6L576 464c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-72.8 47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240l0 32 96 0 0-32c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-32-96 0 0 32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nconst faPeopleArrowsLeftRight = faPeopleArrows;\nconst faMarsAndVenusBurst = {\n prefix: 'fas',\n iconName: 'mars-and-venus-burst',\n icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8l0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .3 0 .4 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1c0 0 0 .1 0 .1s0 .1 0 .1l0 .1c0 0 0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0l24 0-24 0c0 13.3 10.7 24 24 24s24-10.7 24-24l-24 0 24 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1l0-.1c0 0 0-.1 0-.1s0-.1 0-.1l0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 24 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-24 0 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.4 0-.3 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L504 0zM400 128a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nconst faSquareCaretRight = {\n prefix: 'fas',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nconst faCaretSquareRight = faSquareCaretRight;\nconst faScissors = {\n prefix: 'fas',\n iconName: 'scissors',\n icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCut = faScissors;\nconst faSunPlantWilt = {\n prefix: 'fas',\n iconName: 'sun-plant-wilt',\n icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32l0 53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6l0-53.4c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80l0 21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6l0-21.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 8 0 168L32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-104 0 0-168 0-8 0-96z\"]\n};\nconst faToiletsPortable = {\n prefix: 'fas',\n iconName: 'toilets-portable',\n icon: [576, 512, [], \"e584\", \"M32 0L224 0c17.7 0 32 14.3 32 32l0 32L0 64 0 32C0 14.3 14.3 0 32 0zM0 96l24 0 208 0 24 0 0 24 0 368c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8L48 480l0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24L0 120 0 96zM192 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16zM352 0L544 0c17.7 0 32 14.3 32 32l0 32L320 64l0-32c0-17.7 14.3-32 32-32zM320 96l24 0 208 0 24 0 0 24 0 368c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-160 0 0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-368 0-24zM512 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16z\"]\n};\nconst faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6L512 352c0 53-114.6 96-256 96S0 405 0 352L0 222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nconst faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M64 256l0-96 160 0 0 96L64 256zm0 64l160 0 0 96L64 416l0-96zm224 96l0-96 160 0 0 96-160 0zM448 256l-160 0 0-96 160 0 0 96zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faMagnifyingGlassArrowRight = {\n prefix: 'fas',\n iconName: 'magnifying-glass-arrow-right',\n icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31L120 184c-13.3 0-24 10.7-24 24s10.7 24 24 24l118.1 0-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nconst faTachographDigital = {\n prefix: 'fas',\n iconName: 'tachograph-digital',\n icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l512 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm32 64l224 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 256c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16l256 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16zM80 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faDigitalTachograph = faTachographDigital;\nconst faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320l178.1 0c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192l-42.7 0c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320l213.3 0c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192l-15.2 0zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7l330.7 0c10.5 0 19.5-6 23.9-14.8L324.9 352l-63.6 0zM512 160A80 80 0 1 0 512 0a80 80 0 1 0 0 160z\"]\n};\nconst faClover = {\n prefix: 'fas',\n iconName: 'clover',\n icon: [448, 512, [], \"e139\", \"M216.6 49.9C205.1 38.5 189.5 32 173.3 32C139.4 32 112 59.4 112 93.3l0 4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4l-4.9 0C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368l4.9 0c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34l0 4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3l0-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4l4.9 0c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3l-4.9 0c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34l0-4.9C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2z\"]\n};\nconst faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2l0 64 112 0c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96l-96 0 0 64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nconst faMailReply = faReply;\nconst faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [9770], \"f699\", \"M0 256C0 114.6 114.6 0 256 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512C114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nconst faHouseFire = {\n prefix: 'fas',\n iconName: 'house-fire',\n icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9-32 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM480 512c-88.4 0-160-71.6-160-160c0-76.7 62.5-144.7 107.2-179.4c5-3.9 10.9-5.8 16.8-5.8c7.9-.1 16 3.1 22 9.2l46 46 11.3-11.3c11.7-11.7 30.6-12.7 42.3-1C624.5 268 640 320.2 640 352c0 88.4-71.6 160-160 160zm64-111.8c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 327.1 416 363.6 416 400.2c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faSquareMinus = {\n prefix: 'fas',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 200l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMinusSquare = faSquareMinus;\nconst faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32L544 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L384 64l0 64 32 0c88.4 0 160 71.6 160 160l0 64c0 17.7-14.3 32-32 32l-160 0-64 0c-20.1 0-39.1-9.5-51.2-25.6l-71.4-95.2c-3.5-4.7-8.3-8.3-13.7-10.5L47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64L48 64c10.1 0 19.6 4.7 25.6 12.8L112 128l208 0 0-64L160 64c-17.7 0-32-14.3-32-32zM384 320l128 0 0-32c0-53-43-96-96-96l-32 0 0 128zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5L256 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l280.2 0c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nconst faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faSquareCaretDown = {\n prefix: 'fas',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nconst faCaretSquareDown = faSquareCaretDown;\nconst faFileCircleQuestion = {\n prefix: 'fas',\n iconName: 'file-circle-question',\n icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6l0 6.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-6.4c0-5.3 4.3-9.6 9.6-9.6l40.5 0c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2l0 14.8c0 8.8 7.2 16 16 16s16-7.2 16-16l0-5.1 23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9l-40.5 0c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nconst faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 256-64 0 0-256L128 96l0 256-64 0L64 96zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0L160 0c17.7 0 32 14.3 32 32l0 384c0 53-43 96-96 96s-96-43-96-96L0 32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9l0-262 75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192L480 320c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-297.2 0zM128 64L64 64l0 64 64 0 0-64zM64 192l0 64 64 0 0-64-64 0zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zm32 96l320 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-32 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 384l0-64 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 288l0-64 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 192l0-64z\"]\n};\nconst faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faNavicon = faBars;\nconst faPeopleGroup = {\n prefix: 'fas',\n iconName: 'people-group',\n icon: [640, 512, [], \"e533\", \"M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3l0-84.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5l0 21.5c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-26.8C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112l32 0c24 0 46.2 7.5 64.4 20.3zM448 416l0-21.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176l32 0c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2l0 26.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3l0-84.7c-10 11.3-16 26.1-16 42.3zm144-42.3l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2l0 42.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-42.8c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112l32 0c61.9 0 112 50.1 112 112z\"]\n};\nconst faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM96 75l0-11 192 0 0 11c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nconst faHourglass3 = faHourglassEnd;\nconst faHeartCrack = {\n prefix: 'fas',\n iconName: 'heart-crack',\n icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1l0 5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9l0-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nconst faHeartBroken = faHeartCrack;\nconst faSquareUpRight = {\n prefix: 'fas',\n iconName: 'square-up-right',\n icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM160 160c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l40 40-71 71C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7l71-71 40 40c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8l0-144c0-8.8-7.2-16-16-16l-144 0z\"]\n};\nconst faExternalLinkSquareAlt = faSquareUpRight;\nconst faFaceKissBeam = {\n prefix: 'fas',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faKissBeam = faFaceKissBeam;\nconst faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM48 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 240l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L64 96c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM160 128l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L192 96c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-128 0z\"]\n};\nconst faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nconst faPeopleRobbery = {\n prefix: 'fas',\n iconName: 'people-robbery',\n icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6L328 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-305.7c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64l0 96 0 .6L8 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-227.3 13 20.5c5.9 9.2 16.1 14.9 27 14.9l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-30.4 0-37.4-58.9C157.6 142 132.1 128 104.7 128L72 128z\"]\n};\nconst faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2c0 0 0 0 0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4c0 0 0 0 0 0c19.8 27.1 39.7 54.4 49.2 86.2l160 0zM192 512c44.2 0 80-35.8 80-80l0-16-160 0 0 16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nconst faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nconst faCircleExclamation = {\n prefix: 'fas',\n iconName: 'circle-exclamation',\n icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faExclamationCircle = faCircleExclamation;\nconst faSchoolCircleXmark = {\n prefix: 'fas',\n iconName: 'school-circle-xmark',\n icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nconst faArrowRightFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-from-bracket',\n icon: [512, 512, [\"sign-out\"], \"f08b\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nconst faSignOut = faArrowRightFromBracket;\nconst faCircleChevronDown = {\n prefix: 'fas',\n iconName: 'circle-chevron-down',\n icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nconst faChevronCircleDown = faCircleChevronDown;\nconst faUnlockKeyhole = {\n prefix: 'fas',\n iconName: 'unlock-keyhole',\n icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80l0 48 240 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0 0-48C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0z\"]\n};\nconst faUnlockAlt = faUnlockKeyhole;\nconst faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96L96 320zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nconst faHeadphonesSimple = {\n prefix: 'fas',\n iconName: 'headphones-simple',\n icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24L0 288C0 146.6 114.6 32 256 32s256 114.6 256 256l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64l16 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-16 0c-35.3 0-64-28.7-64-64l0-64zm288-64c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-16 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l16 0z\"]\n};\nconst faHeadphonesAlt = faHeadphonesSimple;\nconst faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-8 0 0 40 152 0c30.9 0 56 25.1 56 56l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-4.4-3.6-8-8-8l-152 0 0 40 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-40-152 0c-4.4 0-8 3.6-8 8l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-30.9 25.1-56 56-56l152 0 0-40-8 0c-26.5 0-48-21.5-48-48l0-64z\"]\n};\nconst faCircleDollarToSlot = {\n prefix: 'fas',\n iconName: 'circle-dollar-to-slot',\n icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3l-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1l0 6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.7 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1l0 6.4c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1l0-5.5c5.3-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4l0-6.3c0-11.1-9-20.1-20.1-20.1zM48 352l16 0c19.5 25.9 44 47.7 72.2 64L64 416l0 32 192 0 192 0 0-32-72.2 0c28.2-16.3 52.8-38.1 72.2-64l16 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48z\"]\n};\nconst faDonate = faCircleDollarToSlot;\nconst faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128l0 7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6L0 320l576 0 0-71.4c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3l0-7.4c0-35.3-28.7-64-64-64L64 64zM576 352L0 352l0 64c0 17.7 14.3 32 32 32l48 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 48 0c17.7 0 32-14.3 32-32l0-64zM192 160l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faRoadSpikes = {\n prefix: 'fas',\n iconName: 'road-spikes',\n icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256l0-139.2c0-15.8 20.5-22 29.3-8.9L320 256l0-139.2c0-15.8 20.5-22 29.3-8.9L448 256l0-139.2c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7L512 352l-64 0-64 0-64 0-64 0-64 0L64 352l0-235.2zM32 384l576 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFireBurner = {\n prefix: 'fas',\n iconName: 'fire-burner',\n icon: [640, 512, [], \"e4f1\", \"M345.7 48.3L358 34.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C469 131.2 480 162.2 480 192.2C480 280.8 408.7 352 320 352c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2C273.4 2.3 280.7-.2 288 0c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM384 240.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C293 167.1 256 203.6 256 240.2c0 35.3 28.7 64 64 64s64-28.7 64-64zM32 288c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64 448 0 0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l0-96zM320 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32L0 64 0 368 0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30l0-247.7c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48l0-16z\"]\n};\nconst faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176L96 320c-17.7 0-32-14.3-32-32l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 53 43 96 96 96l192 0 0 64-128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-64 192 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32l-192 0 0-176z\"]\n};\nconst faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57 68 0c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330l0 55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nconst faVolumeLow = {\n prefix: 'fas',\n iconName: 'volume-low',\n icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nconst faVolumeDown = faVolumeLow;\nconst faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zm385.2 425L82.9 161.3C70.7 185.6 64 212.2 64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104.1-17.9z\"]\n};\nconst faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [127782], \"f743\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zm69.4 276c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm74.5-116.1c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 320c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0z\"]\n};\nconst faWheatAwn = {\n prefix: 'fas',\n iconName: 'wheat-awn',\n icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nconst faWheatAlt = faWheatAwn;\nconst faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-46.8 0c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nconst faHandsHoldingChild = {\n prefix: 'fas',\n iconName: 'hands-holding-child',\n icon: [640, 512, [], \"e4fa\", \"M320 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm44.7 164.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35-7.6 0-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40l0 40 0 80 0 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2c0 0 0 0 0 0l25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 224l0-64 0-56C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 56 0 64 0 101.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3c0 0 0 0 0 0l15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3l0-40.2 0-80 0-40c0-22.1 17.9-40 40-40z\"]\n};\nconst faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32l0 135.5 111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5 224 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-135.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5 160 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faSquareCheck = {\n prefix: 'fas',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faCheckSquare = faSquareCheck;\nconst faPesetaSign = {\n prefix: 'fas',\n iconName: 'peseta-sign',\n icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64l0 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 96 0c77.4 0 142-55 156.8-128l3.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-3.2 0C334 87 269.4 32 192 32L64 32zM282.5 160L96 160l0-64 96 0c41.8 0 77.4 26.7 90.5 64zM96 224l186.5 0c-13.2 37.3-48.7 64-90.5 64l-96 0 0-64z\"]\n};\nconst faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32l48 0 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 112 224 0 0-112-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 144 0 176 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-144-224 0 0 144 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-176L48 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faHeader = faHeading;\nconst faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [128123], \"f6e2\", \"M40.1 467.1l-11.2 9c-3.2 2.5-7.1 3.9-11.1 3.9C8 480 0 472 0 462.2L0 192C0 86 86 0 192 0S384 86 384 192l0 270.2c0 9.8-8 17.8-17.8 17.8c-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24L40 48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM16 232l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0z\"]\n};\nconst faListSquares = faList;\nconst faSquarePhoneFlip = {\n prefix: 'fas',\n iconName: 'square-phone-flip',\n icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nconst faPhoneSquareAlt = faSquarePhoneFlip;\nconst faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M0 24C0 10.7 10.7 0 24 0L69.5 0c22 0 41.5 12.8 50.6 32l411 0c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3l-288.5 0 5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5L488 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-288.3 0c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5L24 48C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20l44 0 0 44c0 11 9 20 20 20s20-9 20-20l0-44 44 0c11 0 20-9 20-20s-9-20-20-20l-44 0 0-44c0-11-9-20-20-20s-20 9-20 20l0 44-44 0c-11 0-20 9-20 20z\"]\n};\nconst faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448l256 0c106 0 192-86 192-192s-86-192-192-192L192 64zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32z\"]\n};\nconst faCircleDot = {\n prefix: 'fas',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faDotCircle = faCircleDot;\nconst faFaceDizzy = {\n prefix: 'fas',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-224a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faDizzy = faFaceDizzy;\nconst faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z\"]\n};\nconst faHouseMedicalCircleXmark = {\n prefix: 'fas',\n iconName: 'house-medical-circle-xmark',\n icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nconst faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4L0 464c0 26.5 21.5 48 48 48l240 0 240 0c26.5 0 48-21.5 48-48l0-23.6c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448l-119.5 0L288 291.7 407.5 448 288 448z\"]\n};\nconst faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64l0 256zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 64z\"]\n};\nconst faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6l59.2 0c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nconst faFutbolBall = faFutbol;\nconst faSoccerBall = faFutbol;\nconst faPaintbrush = {\n prefix: 'fas',\n iconName: 'paintbrush',\n icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448L64 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nconst faPaintBrush = faPaintbrush;\nconst faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [128274], \"f023\", \"M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 16 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0z\"]\n};\nconst faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0L256 0c35.3 0 64 28.7 64 64l0 192 8 0c48.6 0 88 39.4 88 88l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-154c-27.6-7.1-48-32.2-48-62l0-64L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3l0 13.5 0 24 0 32 0 152c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-32c0-22.1-17.9-40-40-40l-8 0 0 144c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 64zM96 80l0 96c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16L112 64c-8.8 0-16 7.2-16 16z\"]\n};\nconst faHotTubPerson = {\n prefix: 'fas',\n iconName: 'hot-tub-person',\n icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5l0 13.2c0 13.3 10.7 24 24 24s24-10.7 24-24l0-13.2c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2l0-5.2zM0 320l0 16L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-170.7 0c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96l0 64zm128 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zm112 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24l0 5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5l0 13.2c0 13.3 10.7 24 24 24s24-10.7 24-24l0-13.2c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2l0-5.2c0-13.3-10.7-24-24-24zM64 128A64 64 0 1 0 64 0a64 64 0 1 0 0 128z\"]\n};\nconst faHotTub = faHotTubPerson;\nconst faMapLocation = {\n prefix: 'fas',\n iconName: 'map-location',\n icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3L576 152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6L416 503zM15.1 187.3C6 191 0 199.8 0 209.6L0 480.4c0 17 17.1 28.6 32.9 22.3L160 451.8l0-251.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77l0 194.4 192 54.9L384 255z\"]\n};\nconst faMapMarked = faMapLocation;\nconst faHouseFloodWater = {\n prefix: 'fas',\n iconName: 'house-flood-water',\n icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192l16 0 0 73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2 16.6 0c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nconst faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208l24.9 0L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320L80 320 5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5L192 448l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 168.5 0c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320l33.4 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208l24.9 0c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nconst faBridgeLock = {\n prefix: 'fas',\n iconName: 'bridge-lock',\n icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32l512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-40 0 0 64-8 0c-61.9 0-112 50.1-112 112l0 24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c0-53-43-96-96-96l0-128 72 0 0-64L64 96C46.3 96 32 81.7 32 64zM408 96l0 64 80 0 0-64-80 0zm-48 64l0-64-80 0 0 64 80 0zM152 96l0 64 80 0 0-64-80 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [128176], \"f81d\", \"M320 96L192 96 144.6 24.9C137.5 14.2 145.1 0 157.9 0L354.1 0c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128l128 0c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96L96 512c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4c0 0 0 0 0 0s0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84 88c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15c0 0 0 0 0 0l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7l0-13.9z\"]\n};\nconst faPenToSquare = {\n prefix: 'fas',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 64z\"]\n};\nconst faEdit = faPenToSquare;\nconst faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [128663], \"f5e4\", \"M171.3 96L224 96l0 96-112.7 0 30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192l0-96 81.2 0c9.7 0 18.9 4.4 25 12l67.2 84L272 192zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36L171.3 32c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256L0 368c0 17.7 14.3 32 32 32l33.3 0c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80l130.7 0c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80l33.3 0c17.7 0 32-14.3 32-32l0-48c0-65.2-48.8-119-111.8-127zM434.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM160 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faShareNodes = {\n prefix: 'fas',\n iconName: 'share-nodes',\n icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nconst faShareAlt = faShareNodes;\nconst faHeartCircleMinus = {\n prefix: 'fas',\n iconName: 'heart-circle-minus',\n icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM96 75l0-11 192 0 0 11c0 19-5.6 37.4-16 53L112 128c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.1 14.9L112 384z\"]\n};\nconst faHourglass2 = faHourglassHalf;\nconst faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [128300], \"f610\", \"M160 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32l0-224c0-17.7 14.3-32 32-32zM32 448l288 0c70.7 0 128-57.3 128-128s-57.3-128-128-128l0-64c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128l16.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96l0 192-64 0 0-24c0-30.9-25.1-56-56-56l-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c4.4 0 8 3.6 8 8l0 24-80 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0 224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-24c0-4.4 3.6-8 8-8l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0c-30.9 0-56 25.1-56 56l0 24-64 0 0-192zM480 416l0-32L32 384l0 32c0 53 43 96 96 96l256 0c53 0 96-43 96-96z\"]\n};\nconst faBagShopping = {\n prefix: 'fas',\n iconName: 'bag-shopping',\n icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64l0 48-128 0 0-48zm-48 48l-64 0c-26.5 0-48 21.5-48 48L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-208c0-26.5-21.5-48-48-48l-64 0 0-48C336 50.1 285.9 0 224 0S112 50.1 112 112l0 48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faShoppingBag = faBagShopping;\nconst faArrowDownZA = {\n prefix: 'fas',\n iconName: 'arrow-down-z-a',\n icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7 128 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96 352 96c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448l-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400l40.4 0L416 359.6 395.8 400z\"]\n};\nconst faSortAlphaDesc = faArrowDownZA;\nconst faSortAlphaDownAlt = faArrowDownZA;\nconst faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M352 384L64 384 5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0l3.4 0c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192l2.8 0c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32l0-32z\"]\n};\nconst faPersonRays = {\n prefix: 'fas',\n iconName: 'person-rays',\n icon: [512, 512, [], \"e54d\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9 328 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nconst faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192l42.7 0c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0L21.3 320C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7l42.7 0C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3l-213.3 0zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352l117.3 0C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7l-330.7 0c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nconst faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"]\n};\nconst faFlaskVial = {\n prefix: 'fas',\n iconName: 'flask-vial',\n icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96L32 64C14.3 64 0 49.7 0 32S14.3 0 32 0L96 0l64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 245.9-49 79.6zM96 64l0 96 64 0 0-96L96 64zM352 0L480 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 150.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4l-309.2 0c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9 320 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0zm32 64l0 160c0 5.9-1.6 11.7-4.7 16.8L330.5 320l171 0-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8l0-160-64 0z\"]\n};\nconst faHand = {\n prefix: 'fas',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208z\"]\n};\nconst faHandPaper = faHand;\nconst faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM281 66.7c-2.2-1.5-4.9-2.5-7.7-2.7c-.6 0-1.3-.1-1.9 0c-3.9 .2-7.4 1.7-10.1 4.2c-.9 .8-1.6 1.7-2.3 2.6c-1.7 2.4-2.7 5.3-2.9 8.5c0 .7 0 1.4 0 2.1c.2 2.2 .9 4.3 1.9 6.2l.3 .6c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .1-.1 .1-.1s0 0 0 0s0 0 0 0c5.9-5.8 9.5-13.9 9.5-22.8c0-17.7-14.3-32-32-32c-8.7 0-16.7 3.5-22.4 9.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48l-34.2 0c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9l8.9 0 16 0c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5c-.3-.9-.7-1.8-1.1-2.6c-1.2-2.2-2.8-4-4.7-5.4c-1.9-1.4-4.1-2.3-6.5-2.8c-1.4-.3-2.9-.3-4.4-.2c-2.5 .2-4.8 1-6.8 2.3c-1.1 .7-2.2 1.5-3.1 2.5c-2.4 2.5-4.1 5.8-4.5 9.5c-.1 .6-.1 1.1-.1 1.7c0 0 0 0 0 0c0 .8 .1 1.7 .2 2.5l0 .1c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64l22.6 0c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4l5.5 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.2c-.3-1.3-.8-2.6-1.5-3.8c-1.1-2-2.6-3.8-4.4-5.1c-2.7-2-6-3.2-9.6-3.2l-.2 0c-8 .1-14.6 6.1-15.6 13.9c0 0 0 0 0 0c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96l0-96c0-53-43-96-96-96l-5.5 0c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4l-48.3 0c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4z\"]\n};\nconst faWorm = {\n prefix: 'fas',\n iconName: 'worm',\n icon: [512, 512, [], \"e599\", \"M256 96c0-53 43-96 96-96l38.4 0C439.9 0 480 40.1 480 89.6l0 86.4 0 16 0 184c0 75.1-60.9 136-136 136s-136-60.9-136-136l0-80c0-22.1-17.9-40-40-40s-40 17.9-40 40l0 168c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-168c0-75.1 60.9-136 136-136s136 60.9 136 136l0 80c0 22.1 17.9 40 40 40s40-17.9 40-40l0-184-32 0c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faHouseCircleXmark = {\n prefix: 'fas',\n iconName: 'house-circle-xmark',\n icon: [640, 512, [], \"e50b\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2C297 398 352 333.4 352 256l0-32c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nconst faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nconst faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64l10.9 0 8.2 0c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nconst faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 34.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6L256 64l16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L224 0 176 0zm72 192l0 128c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-128c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFaceKiss = {\n prefix: 'fas',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faKiss = faFaceKiss;\nconst faBridgeCircleXmark = {\n prefix: 'fas',\n iconName: 'bridge-circle-xmark',\n icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faFaceGrinTongue = {\n prefix: 'fas',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448l0-47.3c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6l0 46.9c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 448l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGrinTongue = faFaceGrinTongue;\nconst faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7L64 400l192 0 0-27.3c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32L128 0zM48 432L6.6 473.4c-4.2 4.2-6.6 10-6.6 16C0 501.9 10.1 512 22.6 512l274.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L272 432 48 432z\"]\n};\nconst faFaceGrinWink = {\n prefix: 'fas',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrinWink = faFaceGrinWink;\nconst faEarDeaf = {\n prefix: 'fas',\n iconName: 'ear-deaf',\n icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7l0 6.1c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48l0-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nconst faDeaf = faEarDeaf;\nconst faDeafness = faEarDeaf;\nconst faHardOfHearing = faEarDeaf;\nconst faRoadCircleCheck = {\n prefix: 'fas',\n iconName: 'road-circle-check',\n icon: [640, 512, [], \"e564\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSquareRss = {\n prefix: 'fas',\n iconName: 'square-rss',\n icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faRssSquare = faSquareRss;\nconst faLandMineOn = {\n prefix: 'fas',\n iconName: 'land-mine-on',\n icon: [640, 512, [], \"e51b\", \"M344 24l0 144c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 32-256 0 0-32zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5l324.7 0c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512l-408.4 0c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nconst faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3L96 224l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7l0-95.7 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-95.7c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nconst faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2L112 256C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3L32 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-50.7c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112l-33.8 0c-29.9 0-54.2-24.3-54.2-54.2zM416 416l0 32L96 448l0-32 320 0z\"]\n};\nconst faStairs = {\n prefix: 'fas',\n iconName: 'stairs',\n icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96z\"]\n};\nconst faI = {\n prefix: 'fas',\n iconName: 'i',\n icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l96 0 0 320-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0 0-320 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L160 32 32 32z\"]\n};\nconst faHryvniaSign = {\n prefix: 'fas',\n iconName: 'hryvnia-sign',\n icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96L223 96c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31L32 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l123.5 0-50.6 28.9c-1.7 1-3.4 2-5.1 3.1L32 272c-17.7 0-32 14.3-32 32s14.3 32 32 32l20.3 0c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113l43.4 0c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2L161 416c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31L352 336c17.7 0 32-14.3 32-32s-14.3-32-32-32l-123.5 0 50.6-28.9c1.7-1 3.4-2 5.1-3.1l67.8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-20.3 0c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113l-43.4 0c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nconst faHryvnia = faHryvniaSign;\nconst faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48l0 112 96 0 0-112c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112l0 224c0 61.9-50.1 112-112 112S0 429.9 0 368L0 144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nconst faFaceGrinWide = {\n prefix: 'fas',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nconst faGrinAlt = faFaceGrinWide;\nconst faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [129463], \"f5c9\", \"M186.1 52.1C169.3 39.1 148.7 32 127.5 32C74.7 32 32 74.7 32 127.5l0 6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2l36.7 205.8c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C192.2 323.7 207 312 224 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5l0-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nconst faV = {\n prefix: 'fas',\n iconName: 'v',\n icon: [384, 512, [118], \"56\", \"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nconst faBangladeshiTakaSign = {\n prefix: 'fas',\n iconName: 'bangladeshi-taka-sign',\n icon: [384, 512, [], \"e2e6\", \"M36 32.3C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8L64 160l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 160c0 53 43 96 96 96l32 0c106 0 192-86 192-192l0-32c0-53-43-96-96-96l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0c17.7 0 32 14.3 32 32l0 32c0 70.7-57.3 128-128 128l-32 0c-17.7 0-32-14.3-32-32l0-160 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-31.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z\"]\n};\nconst faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l25.7 0 34.6 64-149.4 0-27.4-38C191 99.7 183.7 96 176 96l-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l43.7 0 22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112l49 0c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32L312 32zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368l65 0c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1-123.5 0zm90.6-128l108.5 0L317 274.8 257.4 192z\"]\n};\nconst faStaffSnake = {\n prefix: 'fas',\n iconName: 'staff-snake',\n icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.1 4.8L288 48c53 0 96 43 96 96s-43 96-96 96l-40 0 0-80 40 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-40 0-28 0-4.5 144 40.5 0c53 0 96 43 96 96s-43 96-96 96l-16 0 0-80 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-43 0-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31L136 464c-22.1 0-40-17.9-40-40s17.9-40 40-40l36 0-1-32-19 0c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7l0 94.7c0 8.8 7.2 16 16 16l16.5 0L164 128l-28 0-13.4 0c-9 18.9-28.3 32-50.6 32l-16 0c-30.9 0-56-25.1-56-56S25.1 48 56 48l8 0 8 0 89.5 0-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faRodAsclepius = faStaffSnake;\nconst faRodSnake = faStaffSnake;\nconst faStaffAesculapius = faStaffSnake;\nconst faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M448 325.8l44 34.5c8.1 1.4 14.8 6.8 18 14.1L552.9 408c10.6 .4 19.5 7.6 22.2 17.4l39.1 30.6c.6 0 1.2-.1 1.8-.1c11.1 0 20.4 7.5 23.2 17.8l-3.9 0c6.2 8.5 6.4 20.4-.4 29c-8.2 10.4-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L89.6 44.9C127 16.7 173.5 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320s0 0 0 0l0 5.8zM0 224.2c0-38.7 9.8-75.1 27.1-106.9L341.8 365.3l-2.5 .3c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9l62 3.9 43 33.9C439.3 466.2 421.2 480 400 480l-80 0 0 8c0 13.3-10.7 24-24 24l-40 0s0 0 0 0L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM616 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-64-48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faTruckMedical = {\n prefix: 'fas',\n iconName: 'truck-medical',\n icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM176 80l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faAmbulance = faTruckMedical;\nconst faWheatAwnCircleExclamation = {\n prefix: 'fas',\n iconName: 'wheat-awn-circle-exclamation',\n icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [9731, 9924], \"f7d0\", \"M341.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L408 160.2l0-40.2c0-13.3 10.7-24 24-24s24 10.7 24 24l0 19.6 22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C396.7 296.9 416 338.2 416 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9l-149.3 0c-13.9 0-27.7-4.2-37.5-13.9C114.3 469 96 428.7 96 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3L70.5 198.1l-56-24C2.4 168.8-3.3 154.7 1.9 142.5s19.3-17.8 31.5-12.6L56 139.6 56 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40.2L152.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C164 127.2 160 112.1 160 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM224 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM288 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48 24l0 3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9l0-3.2c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nconst faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160l144.9 0L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512l192 0c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 192z\"]\n};\nconst faRoadBarrier = {\n prefix: 'fas',\n iconName: 'road-barrier',\n icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-181.7L149.2 96 64 96l0-32c0-17.7-14.3-32-32-32zM405.2 96l-74.3 0-5.4 10.7L234.8 288l74.3 0 5.4-10.7L405.2 96zM362.8 288l74.3 0 5.4-10.7L533.2 96l-74.3 0-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288l74.3 0 5.4-10.7L277.2 96l-74.3 0zm288 192l85.2 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.7L490.8 288z\"]\n};\nconst faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l208 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 208 0c26.5 0 48-21.5 48-48l0-320c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64zM96 320l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16z\"]\n};\nconst faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.8L320 160 48.5 160C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160l0-120.9C424.9 55.7 487.2 99.8 527.5 160L352 160zM29.9 192L96 192l0 128L0 320c0-46 10.8-89.4 29.9-128zM192 320l-64 0 0-128 320 0 0 128-64 0 0 32 192 0 0 80c0 26.5-21.5 48-48 48l-176 0 0-128c0-35.3-28.7-64-64-64s-64 28.7-64 64l0 128L48 480c-26.5 0-48-21.5-48-48l0-80 192 0 0-32zm288 0l0-128 66.1 0c19.2 38.6 29.9 82 29.9 128l-96 0z\"]\n};\nconst faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9l0 11c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43l0-11zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9l0-11c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8l0 11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512l67.3 0c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512l19 0 51.3 0c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352l-19 0-48 0c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9l0-80c0-22.1-17.9-40-40-40l-155.3 0c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nconst faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nconst faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [128014], \"f6f0\", \"M448 238.1l0-78.1 16 0 9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1L576 80c0-19.1-8.4-36.3-21.7-48l5.7 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L480 0 448 0C377.3 0 320 57.3 320 128l-96 0-20.8 0-54.4 0c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256l0 56c0 13.3 10.7 24 24 24s24-10.7 24-24l0-56c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9l33.7 0c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8L320 480c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-164.3c19.2-19.2 31.5-45.7 32-75.7c0 0 0 0 0 0l0-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faQ = {\n prefix: 'fas',\n iconName: 'q',\n icon: [448, 512, [113], \"51\", \"M64 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C371.9 325.8 384 292.3 384 256c0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nconst faG = {\n prefix: 'fas',\n iconName: 'g',\n icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128L256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l144 0c25.8 0 49.6 21.4 47.2 50.6C437.8 389.6 341.4 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nconst faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [512, 512, [], \"f481\", \"M96 352L96 96c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 197.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7L160 416c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-160 0C60.9 512 0 451.1 0 376L0 152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88l160 0z\"]\n};\nconst faTemperatureHalf = {\n prefix: 'fas',\n iconName: 'temperature-half',\n icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 208c0-8.8 7.2-16 16-16s16 7.2 16 16l0 114.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature2 = faTemperatureHalf;\nconst faThermometer2 = faTemperatureHalf;\nconst faThermometerHalf = faTemperatureHalf;\nconst faDongSign = {\n prefix: 'fas',\n iconName: 'dong-sign',\n icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32l0-96 0-160c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM128 288a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448z\"]\n};\nconst faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112-96 0 0-112zM0 144L0 368c0 61.9 50.1 112 112 112s112-50.1 112-112l0-178.4c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83l0-24.2c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nconst faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 21.7-8.5 37.2-21.9 47.6c-13.8 10.8-34 17-57.8 17L128 112c-35.3 0-64 28.7-64 64c0 12.2 3.4 23.5 9.3 33.2C31.7 216.2 0 252.4 0 296c0 40.9 28 75.4 65.8 85.2c-5.3-18.5 1-38.5 16.2-50.7l160-128c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L285.7 320l18.3 0c20.4 0 38.5 12.9 45.3 32.1c3.7 10.6 3.5 21.8 0 31.9l10.7 0c48.6 0 88-39.4 88-88c0-43.6-31.7-79.8-73.3-86.8c5.9-9.7 9.3-21.1 9.3-33.2c0-35.3-28.7-64-64-64l-1.4 0c.9-5.4 1.4-10.9 1.4-16.6c0-48.7-36.1-88.9-83.1-95.2zm45.1 227.4c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7l70.1 0L129.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7l-70.1 0 52.4-104.8c3.4-6.7 1.6-14.9-4.3-19.6z\"]\n};\nconst faPooBolt = faPooStorm;\nconst faFaceFrownOpen = {\n prefix: 'fas',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nconst faFrownOpen = faFaceFrownOpen;\nconst faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32l0 208-64 0L32 32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-64-64c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n};\nconst faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm64 320l-64 0 0-64c35.3 0 64 28.7 64 64zM64 192l0-64 64 0c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM288 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nconst faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32L32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z\"]\n};\nconst faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448 32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-261.9 0 64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nconst faHelmetUn = {\n prefix: 'fas',\n iconName: 'helmet-un',\n icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240l0 56.3C0 344.8 39.2 384 87.7 384L200 384l14.9 0L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6l96 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-86.5 0-1.5-1.5L368 288l80 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-.5 0zM320 417.2l-78-73.7L274.4 288l45.6 0 0 129.2zM285.3 103.1l34.7 52 0-43.2c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [512, 512, [], \"f140\", \"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6c0 0 0 0 0 0l.2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nconst faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208-64 0 0 208zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-64 64c17.7 0 32-14.3 32-32l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6l0-8.6C384 71.6 312.4 0 224 0L162.3 0C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149l0 27c0 35.3 28.7 64 64 64l88 0c22.1 0 40-17.9 40-40s-17.9-40-40-40l-56 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l56 0c39.8 0 72 32.2 72 72z\"]\n};\nconst faArrowUpFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-up-from-bracket',\n icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3 192 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-64z\"]\n};\nconst faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nconst faFolderBlank = faFolder;\nconst faFileWaveform = {\n prefix: 'fas',\n iconName: 'file-waveform',\n icon: [448, 512, [\"file-medical-alt\"], \"f478\", \"M96 0C60.7 0 32 28.7 32 64l0 224 112 0c6.1 0 11.6 3.4 14.3 8.8L176 332.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L281.9 288l70.1 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-80 0c-6.1 0-11.6-3.4-14.3-8.8L240 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L134.1 320 32 320l0 128c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L256 0 96 0zM288 0l0 128 128 0L288 0z\"]\n};\nconst faFileMedicalAlt = faFileWaveform;\nconst faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faChartSimple = {\n prefix: 'fas',\n iconName: 'chart-simple',\n icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-352zM0 272c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48L0 272zM368 96l32 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48z\"]\n};\nconst faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L376 0zm88 48s0 0 0 0s0 0 0 0s0 0 0 0zM96 304a112 112 0 1 1 224 0A112 112 0 1 1 96 304z\"]\n};\nconst faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5L0 416c0 53 43 96 96 96l5.5 0c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96-101.5 0z\"]\n};\nconst faGauge = {\n prefix: 'fas',\n iconName: 'gauge',\n icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3L280 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 204.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faDashboard = faGauge;\nconst faGaugeMed = faGauge;\nconst faTachometerAltAverage = faGauge;\nconst faWandMagicSparkles = {\n prefix: 'fas',\n iconName: 'wand-magic-sparkles',\n icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nconst faMagicWandSparkles = faWandMagicSparkles;\nconst faE = {\n prefix: 'fas',\n iconName: 'e',\n icon: [320, 512, [101], \"45\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 416c0 35.3 28.7 64 64 64l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 416l0-128 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 224 64 96l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32z\"]\n};\nconst faPenClip = {\n prefix: 'fas',\n iconName: 'pen-clip',\n icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1s0 0 0 0l-1-1s0 0 0 0l-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nconst faPenAlt = faPenClip;\nconst faBridgeCircleExclamation = {\n prefix: 'fas',\n iconName: 'bridge-circle-exclamation',\n icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0z\"]\n};\nconst faSchoolCircleCheck = {\n prefix: 'fas',\n iconName: 'school-circle-check',\n icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nconst faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160l94 0L140.5 32 49.7 32zM272 160l0-128-98.9 0L147.5 160 272 160zm32 0l124.5 0L402.9 32 304 32l0 128zm157.1 0l94 0c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32l-90.8 0 25.6 128zM32 192l4 32-4 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l12 0L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32l320 0c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160 12 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-4 0 4-32L32 192z\"]\n};\nconst faVanShuttle = {\n prefix: 'fas',\n iconName: 'van-shuttle',\n icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104l0 88 96 0 0-96L72 96c-4.4 0-8 3.6-8 8zm482 88L465.1 96 384 96l0 96 162 0zm-226 0l0-96-96 0 0 96 96 0zM592 384l-16 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 104C0 64.2 32.2 32 72 32l120 0 160 0 113.1 0c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2L640 336c0 26.5-21.5 48-48 48zm-64 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faShuttleVan = faVanShuttle;\nconst faBuildingUser = {\n prefix: 'fas',\n iconName: 'building-user',\n icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 89.9 0c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2l0-95.9L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM576 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM352 477.1c0 19.3 15.6 34.9 34.9 34.9l218.2 0c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1l-101.8 0c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nconst faSquareCaretLeft = {\n prefix: 'fas',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nconst faCaretSquareLeft = faSquareCaretLeft;\nconst faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [576, 512, [], \"f591\", \"M315 315l158.4-215L444.1 70.6 229 229 315 315zm-187 5s0 0 0 0l0-71.7c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5L224 416l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7L24 512c-13.3 0-24-10.7-24-24l0-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nconst faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-40 40 0c13.3 0 24-10.7 24-24l0-40 40 0c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nconst faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75l-8.7 0-32 0-96 0c-35.3 0-64 28.7-64 64l0 96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-128 8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-147.6c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4L480 32zm-64 76.7L416 240l0 131.3C357.2 317.8 280.5 288 200.7 288l-8.7 0 0-96 8.7 0c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nconst faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64l-185.3 0c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64l185.3 0c2.2 20.4 3.3 41.8 3.3 64zm28.8-64l123.1 0c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64l-123.1 0c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32l-116.7 0c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0l-176.6 0c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0L18.6 160C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192l123.1 0c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64L8.1 320C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6l176.6 0c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352l116.7 0zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6l116.7 0z\"]\n};\nconst faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166l0 114.1L480 512l-16 0-112 0 0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96-112 0-16 0 0-231.9L160 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512l0-267.5 28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1L640 448c0 35.3-28.7 64-64 64l-64 0zM128 244.5L128 512l-64 0c-35.3 0-64-28.7-64-64L0 316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nconst faPersonHalfDress = {\n prefix: 'fas',\n iconName: 'person-half-dress',\n icon: [320, 512, [], \"e548\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm8 352l0-224 6.9 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128s0 0 0 0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3l0 256s0 0 0 0l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-17.8 0c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nconst faRoadBridge = {\n prefix: 'fas',\n iconName: 'road-bridge',\n icon: [640, 512, [], \"e563\", \"M352 0L608 0c17.7 0 32 14.3 32 32l0 448c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64zM480 40c-13.3 0-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24zM32 96l256 0 0 64-40 0 0 64 40 0 0 96c-53 0-96 43-96 96l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c0-53-43-96-96-96l0-96 72 0 0-64-40 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64l-80 0 0 64 80 0 0-64z\"]\n};\nconst faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8l176 0 0 176c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nconst faC = {\n prefix: 'fas',\n iconName: 'c',\n icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nconst faTabletButton = {\n prefix: 'fas',\n iconName: 'tablet-button',\n icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBuildingLock = {\n prefix: 'fas',\n iconName: 'building-lock',\n icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 88.6 0c-5.4-9.4-8.6-20.3-8.6-32l0-128c0-23.7 12.9-44.4 32-55.4l0-24.6c0-30.5 12.2-58.2 32-78.4L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [576, 512, [], \"f53a\", \"M0 112.5L0 422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4l0-309.9c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64l-64 0 0-64zm64-208c0 35.3-28.7 64-64 64l0-64 64 0zM512 304l0 64-64 0c0-35.3 28.7-64 64-64zM448 96l64 0 0 64c-35.3 0-64-28.7-64-64z\"]\n};\nconst faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm96 288l288 0c17.7 0 32-14.3 32-32l0-68.2c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1l0 84c0 17.7 14.3 32 32 32z\"]\n};\nconst faAreaChart = faChartArea;\nconst faHouseFlag = {\n prefix: 'fas',\n iconName: 'house-flag',\n icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32l0 160 0 320 64 0 0-320 112 0c8.8 0 16-7.2 16-16l0-128c0-8.8-7.2-16-16-16L512 32c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288l32 0 0 192c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-96c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 96c0 17.7 14.3 32 32 32l64.7 0 .2 0-1 0 0-353z\"]\n};\nconst faPersonCircleMinus = {\n prefix: 'fas',\n iconName: 'person-circle-minus',\n icon: [576, 512, [], \"e540\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faCancel = faBan;\nconst faCameraRotate = {\n prefix: 'fas',\n iconName: 'camera-rotate',\n icon: [640, 512, [], \"e0d8\", \"M213.1 64.8L202.7 96 128 96c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0L426.9 64.8C420.4 45.2 402.1 32 381.4 32L258.6 32c-20.7 0-39 13.2-45.5 32.8zM448 256c0 8.8-7.2 16-16 16l-76.7 0c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L371 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L249 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C257.4 172.7 288 160 320 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3l0 76.7zM192 320c0-8.8 7.2-16 16-16l76.7 0c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L269 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L391 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C382.6 403.3 352 416 320 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3l0-76.7z\"]\n};\nconst faSprayCanSparkles = {\n prefix: 'fas',\n iconName: 'spray-can-sparkles',\n icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32l0 96 128 0 0-96c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96L0 464c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-208c0-53-43-96-96-96L96 160zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nconst faAirFreshener = faSprayCanSparkles;\nconst faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nconst faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96l160 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32l0 32L160 64C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96l-160 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 160 0c88.4 0 160-71.6 160-160z\"]\n};\nconst faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48l0 80-80 0c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l80 0 0 208c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-208 80 0c26.5 0 48-21.5 48-48l0-32c0-26.5-21.5-48-48-48l-80 0 0-80c0-26.5-21.5-48-48-48L176 0z\"]\n};\nconst faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160l208 0 0-128L93.7 32C75.5 32 58.9 42.3 50.7 58.5zM240 160l208 0L397.3 58.5C389.1 42.3 372.5 32 354.3 32L240 32l0 128zm208 32L0 192 0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-224z\"]\n};\nconst faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [640, 512, [9892], \"f228\", \"M176 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM352 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0L616 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nconst faArrowPointer = {\n prefix: 'fas',\n iconName: 'arrow-pointer',\n icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2L0 426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320l118.1 0c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nconst faMousePointer = faArrowPointer;\nconst faMaximize = {\n prefix: 'fas',\n iconName: 'maximize',\n icon: [512, 512, [\"expand-arrows-alt\"], \"f31e\", \"M200 32L56 32C42.7 32 32 42.7 32 56l0 144c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79-79 79L73 295c-6.9-6.9-17.2-8.9-26.2-5.2S32 302.3 32 312l0 144c0 13.3 10.7 24 24 24l144 0c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l144 0c13.3 0 24-10.7 24-24l0-144c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-144c0-13.3-10.7-24-24-24L312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S209.7 32 200 32z\"]\n};\nconst faExpandArrowsAlt = faMaximize;\nconst faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64l0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-144 16 0c22.1 0 40 17.9 40 40l0 32c0 39.8 32.2 72 72 72s72-32.2 72-72l0-123.7c32.5-10.2 56-40.5 56-76.3l0-32c0-8.8-7.2-16-16-16l-16 0 0-48c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-32 0 0-48c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-16 0c-8.8 0-16 7.2-16 16l0 32c0 35.8 23.5 66.1 56 76.3L472 376c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-48.6-39.4-88-88-88l-16 0 0-192c0-35.3-28.7-64-64-64L96 0zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9 57.8 0c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9L96 208c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nconst faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2l192 0c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312l0 144c0 22.1 17.9 40 40 40l144 0c22.1 0 40-17.9 40-40l0-144c0-22.1-17.9-40-40-40l-144 0c-22.1 0-40 17.9-40 40zM128 512a128 128 0 1 0 0-256 128 128 0 1 0 0 256z\"]\n};\nconst faTriangleCircleSquare = faShapes;\nconst faShuffle = {\n prefix: 'fas',\n iconName: 'shuffle',\n icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nconst faRandom = faShuffle;\nconst faPersonRunning = {\n prefix: 'fas',\n iconName: 'person-running',\n icon: [448, 512, [127939, \"running\"], \"f70c\", \"M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288l21.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-21.3 0c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352L32 352c-17.7 0-32 14.3-32 32s14.3 32 32 32l69.6 0c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z\"]\n};\nconst faRunning = faPersonRunning;\nconst faMobileRetro = {\n prefix: 'fas',\n iconName: 'mobile-retro',\n icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0L256 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm64 96l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM80 352a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0z\"]\n};\nconst faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384z\"]\n};\nconst faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [512, 512, [128375], \"f717\", \"M158.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L81.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4L70.8 190.3c-2.4-.8-4.3-2.7-5.1-5.1L46.8 128.4C42.6 115.8 29 109 16.4 113.2S-3 131 1.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L116.1 256 55.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L1.2 368.4C-3 381 3.8 394.6 16.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8L93.7 352.3C78.1 368 73.1 391.4 81.1 412l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L160 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L430.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L395.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L398.4 15.4C393.6 3 379.8-3.2 367.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L336 174.1l0-14.1c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4l0 10.8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-10.8c0-10.1-9.4-17.7-18.5-13.4C194.6 100.7 176 128.2 176 160l0 14.1-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nconst faHandsBound = {\n prefix: 'fas',\n iconName: 'hands-bound',\n icon: [640, 512, [], \"e4f9\", \"M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32l0 64 0 59.1 0 .7L32 192l0 21.9c0 14.2 5.1 27.9 14.3 38.7L131.6 352l-3.6 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 128 0 64 0 128 0 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-3.6 0 85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7l0-21.9 0-36.2 0-.7L608 96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64 0 48.8-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L473 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C361 209.7 352 233.4 352 258.1l0 61.9 0 32-64 0 0-32 0-61.9c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L96 144.8 96 96l0-64zm64 448l0 32 128 0 0-32 64 0 0 32 128 0 0-32 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0-128 0-64 0-128 0-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0z\"]\n};\nconst faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 80c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16l0 17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1s0 0 0 0s0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1l0 17.1c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-17.8c-11.2-2.1-21.7-5.7-30.9-8.9c0 0 0 0 0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4c0 0 0 0 0 0s0 0 0 0s0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5s0 0 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7l0-17.3c0-8.8 7.2-16 16-16z\"]\n};\nconst faPlaneCircleExclamation = {\n prefix: 'fas',\n iconName: 'plane-circle-exclamation',\n icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 320c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16l0 32-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 48-112 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l112 0 0 70.6L189.1 307c-5.2-2-10.6-3-16.2-3l-2.1 0c-23.6 0-42.8 19.2-42.8 42.8c0 9.6 3.2 18.9 9.1 26.4l18.2 23.2c9.7 12.4 24.6 19.6 40.3 19.6l120.8 0c15.7 0 30.6-7.2 40.3-19.6l18.2-23.2c5.9-7.5 9.1-16.8 9.1-26.4c0-23.6-19.2-42.8-42.8-42.8l-2.2 0c-5.5 0-11 1-16.2 3L272 326.6l0-70.6 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-112 0 0-48 80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-80 0 0-32c0-8.8-7.2-16-16-16zM208 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm80 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M112 0C99.1 0 87.4 7.8 82.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L66.7 224l90.7 0 5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C136.6 7.8 124.9 0 112 0zm18.7 160l-37.3 0L112 115.2 130.7 160zM256 32l0 96 0 96c0 17.7 14.3 32 32 32l80 0c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80L288 0c-17.7 0-32 14.3-32 32zm96 64l-32 0 0-32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64l32 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0-32zM566.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nconst faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nconst faComputerMouse = {\n prefix: 'fas',\n iconName: 'computer-mouse',\n icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192l176 0L176 0 160 0C71.6 0 0 71.6 0 160l0 32zm0 32L0 352c0 88.4 71.6 160 160 160l64 0c88.4 0 160-71.6 160-160l0-128-192 0L0 224zm384-32l0-32C384 71.6 312.4 0 224 0L208 0l0 192 176 0z\"]\n};\nconst faMouse = faComputerMouse;\nconst faArrowRightToBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-to-bracket',\n icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nconst faSignIn = faArrowRightToBracket;\nconst faShopSlash = {\n prefix: 'fas',\n iconName: 'shop-slash',\n icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43L576 224l-64 0 0 152L384 275.7l0-51.7-64 0 0 1.5L277.2 192l325.9 0c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192l85 0L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384l-192 0 0-160-64 0 0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-65.5-64-50.4 0 35.9z\"]\n};\nconst faStoreAltSlash = faShopSlash;\nconst faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 288zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faVirusCovidSlash = {\n prefix: 'fas',\n iconName: 'virus-covid-slash',\n icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7l33.6 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-33.6 0c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6L344 48l16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L280 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5L112 232l0-16c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 33.6 0c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1l0 33.6-16 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0-33.6c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nconst faShopLock = {\n prefix: 'fas',\n iconName: 'shop-lock',\n icon: [640, 512, [], \"e4a5\", \"M36.8 192l412.8 0c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224l-64 0 0 160-192 0 0-160-64 0 0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-80 0-32 0-128zm144 16c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM288 437l0 11L96 448l0-11c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nconst faHourglass1 = faHourglassStart;\nconst faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M224 352L196.8 52.3C194.2 24.2 216.3 0 244.6 0L534.1 0c21.1 0 36.4 20.1 30.9 40.4L558.5 64 400 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l149.8 0-17.5 64L400 160c-8.8 0-16 7.2-16 16s7.2 16 16 16l123.6 0-17.5 64L400 256c-8.8 0-16 7.2-16 16s7.2 16 16 16l97.5 0L480 352l-256 0zm-16 32l288 0c26.5 0 48 21.5 48 48l0 32c0 26.5-21.5 48-48 48l-288 0c-26.5 0-48-21.5-48-48l0-32c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nconst faBuildingWheat = {\n prefix: 'fas',\n iconName: 'building-wheat',\n icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm384 80l0 16c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0zm0 128c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0 0 16zm0 112c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0 0 16zM512 496l0 16-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80zm0-96l-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80l0 16zm0-128l0 16-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-13.3 10.7-24 24-24zm96 64l0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24l0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-13.3 10.7-24 24-24z\"]\n};\nconst faPersonBreastfeeding = {\n prefix: 'fas',\n iconName: 'person-breastfeeding',\n icon: [448, 512, [], \"e53a\", \"M224 0a80 80 0 1 1 0 160A80 80 0 1 1 224 0zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.8-.1c-38.9-5.6-74.3-25.1-99.7-54.8l0-36.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1l75.2 0c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"]\n};\nconst faRightToBracket = {\n prefix: 'fas',\n iconName: 'right-to-bracket',\n icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSignInAlt = faRightToBracket;\nconst faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [384, 512, [9792], \"f221\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1l0 34.9-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-34.9z\"]\n};\nconst faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0L384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8l39.1 0c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5l47.1 0c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8l39.1 0c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8l-39.1 0zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5l-47.1 0c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8l-39.1 0c5.3-31.4 25.8-57.6 53.7-70.8zM352 192A128 128 0 1 0 96 192a128 128 0 1 0 256 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16l224 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-224 0z\"]\n};\nconst faThumbtackSlash = {\n prefix: 'fas',\n iconName: 'thumbtack-slash',\n icon: [640, 512, [\"thumb-tack-slash\"], \"e68f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L481.4 352c9.8-.4 18.9-5.3 24.6-13.3c6-8.3 7.7-19.1 4.4-28.8l-1-3c-13.8-41.5-42.8-74.8-79.5-94.7L418.5 64 448 64c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l29.5 0-6.1 79.5L38.8 5.1zM324.9 352L177.1 235.6c-20.9 18.9-37.2 43.3-46.5 71.3l-1 3c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l164.9 0zM288 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96-64 0z\"]\n};\nconst faThumbTackSlash = faThumbtackSlash;\nconst faHeartPulse = {\n prefix: 'fas',\n iconName: 'heart-pulse',\n icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4l87 0c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31l104.5 0c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240l-132 0c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9L16 240c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9l0-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1l0 5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nconst faHeartbeat = faHeartPulse;\nconst faPeopleCarryBox = {\n prefix: 'fas',\n iconName: 'people-carry-box',\n icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm64 193.7l0 65.1 51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7l0-88.1c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5 0-76.2c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 76.2 10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6l0 88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51 0-65.1-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8l-126.7 0c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm77.9 348.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nconst faPeopleCarry = faPeopleCarryBox;\nconst faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128A96 96 0 1 0 416 0a96 96 0 1 0 0 192zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5L96 112zM144 0C82.1 0 32 50.2 32 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L256 112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3L160 112c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 210.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nconst faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c-35.3 0-64 28.7-64 64l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c0 35.3 28.7 64 64 64l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c35.3 0 64-28.7 64-64l40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0c0-35.3-28.7-64-64-64l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40zM160 128l192 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32l0-192c0-17.7 14.3-32 32-32zm192 32l-192 0 0 192 192 0 0-192z\"]\n};\nconst faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6l277.2 0c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nconst faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32L120 128c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512l416 0c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128l-45.5 0z\"]\n};\nconst faXmarksLines = {\n prefix: 'fas',\n iconName: 'xmarks-lines',\n icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nconst faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM104 196l72 0c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6l-20 0 0 44c0 11-9 20-20 20s-20-9-20-20l0-64 0-80c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20l-52 0 0 40 52 0z\"]\n};\nconst faWeightScale = {\n prefix: 'fas',\n iconName: 'weight-scale',\n icon: [512, 512, [\"weight\"], \"f496\", \"M128 176a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zM391.8 64C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-56.2 0zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nconst faWeight = faWeightScale;\nconst faUserGroup = {\n prefix: 'fas',\n iconName: 'user-group',\n icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM609.3 512l-137.8 0c5.4-9.4 8.6-20.3 8.6-32l0-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2l61.4 0C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nconst faUserFriends = faUserGroup;\nconst faArrowUpAZ = {\n prefix: 'fas',\n iconName: 'arrow-up-a-z',\n icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3 128 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-128 0c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176l-40.4 0z\"]\n};\nconst faSortAlphaUp = faArrowUpAZ;\nconst faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [448, 512, [9822], \"f441\", \"M96 48L82.7 61.3C70.7 73.3 64 89.5 64 106.5l0 132.4c0 10.7 5.3 20.7 14.2 26.6l10.6 7c14.3 9.6 32.7 10.7 48.1 3l3.2-1.6c2.6-1.3 5-2.8 7.3-4.5l49.4-37c6.6-5 15.7-5 22.3 0c10.2 7.7 9.9 23.1-.7 30.3L90.4 350C73.9 361.3 64 380 64 400l320 0 28.9-159c2.1-11.3 3.1-22.8 3.1-34.3l0-14.7C416 86 330 0 224 0L83.8 0C72.9 0 64 8.9 64 19.8c0 7.5 4.2 14.3 10.9 17.7L96 48zm24 68a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512l370.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L384 432 64 432 22.6 473.4z\"]\n};\nconst faFaceLaughSquint = {\n prefix: 'fas',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faLaughSquint = faFaceLaughSquint;\nconst faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM120.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C43.1 225.1 0 283.5 0 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C240 440 202.8 464 160 464C98.1 464 48 413.9 48 352c0-47.9 30.1-88.8 72.5-104.8zM259.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4l5.1 0c.4 0 .8 0 1.3 0l94.1 0c6.7 0 12.6 4.1 15 10.4L402 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9l-68.5 0-9.6-48 63.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-76.2 0z\"]\n};\nconst faCircleArrowUp = {\n prefix: 'fas',\n iconName: 'circle-arrow-up',\n icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 215c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71L280 392c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-214.1-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 103c9.4-9.4 24.6-9.4 33.9 0L385 215z\"]\n};\nconst faArrowCircleUp = faCircleArrowUp;\nconst faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192s-86-192-192-192L192 64zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faPersonWalking = {\n prefix: 'fas',\n iconName: 'person-walking',\n icon: [320, 512, [128694, \"walking\"], \"f554\", \"M160 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nconst faWalking = faPersonWalking;\nconst faL = {\n prefix: 'fas',\n iconName: 'l',\n icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32l0 352 192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-17.7 0-32-14.3-32-32L32 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z\"]\n};\nconst faBedPulse = {\n prefix: 'fas',\n iconName: 'bed-pulse',\n icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64l92 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-104 0c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112 216 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l136 0c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160l12.7 0 20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160l82.1 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-224 0-32 0L64 448l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64s32 14.3 32 32l0 256 224 0 0-160c0-17.7 14.3-32 32-32zm-144 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faProcedures = faBedPulse;\nconst faShuttleSpace = {\n prefix: 'fas',\n iconName: 'shuttle-space',\n icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96 2 0zM352 128L245.2 63.9C210.4 43 170.6 32 130 32l-2 0 0 96 224 0zM96 128l0-96L80 32C53.5 32 32 53.5 32 80l0 48 8 0c-22.1 0-40 17.9-40 40l0 16L0 328l0 16c0 22.1 17.9 40 40 40l-8 0 0 48c0 26.5 21.5 48 48 48l16 0 0-96 8 0c26.2 0 49.4-12.6 64-32l288 0c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160l-288 0c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6l0 24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4l0-87.1c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nconst faSpaceShuttle = faShuttleSpace;\nconst faFaceLaugh = {\n prefix: 'fas',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faLaugh = faFaceLaugh;\nconst faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8 0 96C0 60.7 28.7 32 64 32l117.5 0c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7L416 96c35.3 0 64 28.7 64 64l0 32-336 0c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224l400 0c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480L32 480c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nconst faHeartCirclePlus = {\n prefix: 'fas',\n iconName: 'heart-circle-plus',\n icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faCodeFork = {\n prefix: 'fas',\n iconName: 'code-fork',\n icon: [448, 512, [], \"e13b\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 38.7c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-38.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 38.7c0 53-43 96-96 96l-48 0 0 70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-70.7-48 0c-53 0-96-43-96-96l0-38.7C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48L336 0c-26.5 0-48 21.5-48 48l0 48-64 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-64 0 0-72c0-13.3-10.7-24-24-24S64 10.7 64 24l0 72L48 96C21.5 96 0 117.5 0 144l0 96L0 464c0 26.5 21.5 48 48 48l256 0 32 0 96 0 160 0c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48l-112 0 0-144zm96 320l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM240 416l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM560 256c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM256 176l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM256 304c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM112 320l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zm304-48l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zm16 112l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faMicrophoneLines = {\n prefix: 'fas',\n iconName: 'microphone-lines',\n icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96l0 160c0 53 43 96 96 96s96-43 96-96l-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0c0-53-43-96-96-96S96 43 96 96zM320 240l0 16c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c85.8-11.7 152-85.3 152-174.4l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24z\"]\n};\nconst faMicrophoneAlt = faMicrophoneLines;\nconst faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3L360 256c-13.3 0-24-10.7-24-24l0-80c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0 0 80c0 26.5 21.5 48 48 48l76.2 0 23.9 47.8C372.3 443.9 244.3 512 103.2 512l-58.8 0C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nconst faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144l0 48-16 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-240 0 0-48z\"]\n};\nconst faColonSign = {\n prefix: 'fas',\n iconName: 'colon-sign',\n icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.2 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nconst faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256l0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40C0 114.6 114.6 0 256 0S512 114.6 512 256l0 144.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24l-32 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l32 0c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40L464 256c0-114.9-93.1-208-208-208zM144 208l16 0c17.7 0 32 14.3 32 32l0 112c0 17.7-14.3 32-32 32l-16 0c-35.3 0-64-28.7-64-64l0-48c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64l0 48c0 35.3-28.7 64-64 64l-16 0c-17.7 0-32-14.3-32-32l0-112c0-17.7 14.3-32 32-32l16 0z\"]\n};\nconst faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68 0-17.1 0-131.4c-4 1-8 1.8-12.3 2.3c0 0 0 0-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3l0 100.3L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0L141.6 0c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384l0-133.4c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3L96 384l0 64c0 35.3 28.7 64 64 64l320 0c12.9 0 24.8-3.8 34.9-10.3L365.5 384 160 384z\"]\n};\nconst faRoadCircleXmark = {\n prefix: 'fas',\n iconName: 'road-circle-xmark',\n icon: [640, 512, [], \"e566\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nconst faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM472 200l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMarsStrokeUp = {\n prefix: 'fas',\n iconName: 'mars-stroke-up',\n icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9l-40 0 0 24 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8l0-24-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-24L96 96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352A96 96 0 1 0 64 352a96 96 0 1 0 192 0z\"]\n};\nconst faMarsStrokeV = faMarsStrokeUp;\nconst faChampagneGlasses = {\n prefix: 'fas',\n iconName: 'champagne-glasses',\n icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M155.6 17.3C163 3 179.9-3.6 195 1.9L320 47.5l125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6L556.1 413l41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41l-71.1 25.9L476.8 510c-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-34-130-95.2L320 188.8l-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6 25.2 24.4 19.1 41s-24.4 25.2-41 19.1L92.2 484.1 21.1 458.2c-16.6-6.1-25.2-24.4-19.1-41s24.4-25.2 41-19.1l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8L261.6 157l13.1-57.9L199.6 71.7zm240.9 0L365.4 99.1 378.5 157l89.2-32.5L440.5 71.7z\"]\n};\nconst faGlassCheers = faChampagneGlasses;\nconst faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faHouseCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-circle-exclamation',\n icon: [640, 512, [], \"e50a\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faFileArrowUp = {\n prefix: 'fas',\n iconName: 'file-arrow-up',\n icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-102.1-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31L216 408z\"]\n};\nconst faFileUpload = faFileArrowUp;\nconst faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faWifi3 = faWifi;\nconst faWifiStrong = faWifi;\nconst faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 256 96 77.3zM32 352l0 16c0 28.4 12.4 54 32 71.6L64 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-16 256 0 0 16c0 17.7 14.3 32 32 32s32-14.3 32-32l0-40.4c19.6-17.6 32-43.1 32-71.6l0-16L32 352z\"]\n};\nconst faBathtub = faBath;\nconst faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 128c0 53 43 96 96 96s96-43 96-96l0-128-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 128c0 88.4-71.6 160-160 160s-160-71.6-160-160L64 96 48 96C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32z\"]\n};\nconst faUserPen = {\n prefix: 'fas',\n iconName: 'user-pen',\n icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l293.1 0c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1l-91.4 0zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nconst faUserEdit = faUserPen;\nconst faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92l0 71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-83.6 0 18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3l0-7.8c0-53-43-96-96-96s-96 43-96 96l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5l0-71.9c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24l40.3 0c-.2-2.8-.3-5.6-.3-8.5L64 368l-40 0zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24l-310.1 0c-6.7 16.3-14.2 32.3-22.3 48L616 416z\"]\n};\nconst faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3L86.3 199.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L256 414.4l33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L414.4 256l33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3L233.4 256l-45.3 45.3L142.9 256zm67.9 67.9L256 278.6l45.3 45.3L256 369.1l-45.3-45.3zM278.6 256l45.3-45.3L369.1 256l-45.3 45.3L278.6 256zm22.6-67.9L256 233.4l-45.3-45.3L256 142.9l45.3 45.3z\"]\n};\nconst faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32l48 0 16 0 128 0c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128L96 480l-16 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-160L48 96 32 96C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64L112 96l0 128 112 0zM112 288l0 128 144 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0-112 0z\"]\n};\nconst faAnchorLock = {\n prefix: 'fas',\n iconName: 'anchor-lock',\n icon: [640, 512, [], \"e4ad\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3l0-33.3c-5.2 .9-10.5 1.3-16 1.3l-48 0 0-208 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM528 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faBuildingNgo = {\n prefix: 'fas',\n iconName: 'building-ngo',\n icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM168 64l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 64 16 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 24c0 13.3-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24l0-88c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48l0 32c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-32zM61.3 71.1l34.7 52L96 80c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8 64 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nconst faManatSign = {\n prefix: 'fas',\n iconName: 'manat-sign',\n icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32l0 34.7C69.2 113.9 0 192.9 0 288L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-59.6 40.8-109.8 96-124l0 284c0 17.7 14.3 32 32 32s32-14.3 32-32l0-284c55.2 14.2 96 64.3 96 124l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-95.1-69.2-174.1-160-189.3L224 64c0-17.7-14.3-32-32-32z\"]\n};\nconst faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144l62.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-105.5 0-64 96L400 304c17.7 0 32 14.3 32 32s-14.3 32-32 32l-212.2 0-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368 48 368c-17.7 0-32-14.3-32-32s14.3-32 32-32l105.5 0 64-96L48 208c-17.7 0-32-14.3-32-32s14.3-32 32-32l212.2 0 65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nconst faBorderTopLeft = {\n prefix: 'fas',\n iconName: 'border-top-left',\n icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBorderStyle = faBorderTopLeft;\nconst faMapLocationDot = {\n prefix: 'fas',\n iconName: 'map-location-dot',\n icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152l0 270.8c0 9.8-6 18.6-15.1 22.3L416 503l0-302.6zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6l0 251.4L32.9 502.7C17.1 509 0 497.4 0 480.4L0 209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77l0 249.3L192 449.4 192 255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faMapMarkedAlt = faMapLocationDot;\nconst faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9l26 0c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9l14.6 0c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9l14.6 0c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6l26 0c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nconst faSquarePollVertical = {\n prefix: 'fas',\n iconName: 'square-poll-vertical',\n icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 192c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192zM320 288c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32z\"]\n};\nconst faPoll = faSquarePollVertical;\nconst faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32L0 416c0 53 43 96 96 96l192 0c53 0 96-43 96-96l16 0c61.9 0 112-50.1 112-112s-50.1-112-112-112l-48 0L32 192zm352 64l16 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0 0-96zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nconst faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l16 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 32-32 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0 0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0-32zM80 240c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faBatteryCar = faCarBattery;\nconst faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128l-1.3 0-72 0c-22.1 0-40-17.9-40-40s17.9-40 40-40l2.2 0c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40L32 128c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l448 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-41.6 0c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88l-2.2 0c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0L152 0C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40l-72 0-1.3 0 34.8-59.2C329.1 55.9 342.9 48 357.8 48l2.2 0c22.1 0 40 17.9 40 40zM32 288l0 176c0 26.5 21.5 48 48 48l144 0 0-224L32 288zM288 512l144 0c26.5 0 48-21.5 48-48l0-176-192 0 0 224z\"]\n};\nconst faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 0a56 56 0 1 1 0 112A56 56 0 1 1 256 0zM134.1 143.8c3.3-13 15-23.8 30.2-23.8c12.3 0 22.6 7.2 27.7 17c12 23.2 36.2 39 64 39s52-15.8 64-39c5.1-9.8 15.4-17 27.7-17c15.3 0 27 10.8 30.2 23.8c7 27.8 32.2 48.3 62.1 48.3c10.8 0 21-2.7 29.8-7.4c8.4-4.4 18.9-4.5 27.6 .9c13 8 17.1 25 9.2 38L399.7 400 384 400l-40.4 0-175.1 0L128 400l-15.7 0L5.4 223.6c-7.9-13-3.8-30 9.2-38c8.7-5.3 19.2-5.3 27.6-.9c8.9 4.7 19 7.4 29.8 7.4c29.9 0 55.1-20.5 62.1-48.3zM256 224s0 0 0 0s0 0 0 0s0 0 0 0zM112 432l288 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L86.6 512C74.1 512 64 501.9 64 489.4c0-6 2.4-11.8 6.6-16L112 432z\"]\n};\nconst faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1c0 0 .1 0 .1 0c0 0 0 0 0 0s0 0 0 0L247.9 288s0 0 0 0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7l40.6 0c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7s0 0 0 0c-6.3-12.7-6.3-12.7-6.3-12.7s0 0 0 0s0 0 0 0c0 0 .1 0 .1 0l.2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7l0 6.7 0 41.3 0 16c0 61.9-50.1 112-112 112l-44.3 0c-59.4 0-108.5-46.4-111.8-105.8L306.6 352l-37.2 0-1.2 22.2C264.9 433.6 215.8 480 156.3 480L112 480C50.1 480 0 429.9 0 368l0-16 0-41.3L0 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4L64 368c0 26.5 21.5 48 48 48l44.3 0c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368l0-42.6c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3l44.3 0c26.5 0 48-21.5 48-48z\"]\n};\nconst faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 64l0 64 64 0 0-64 64 0 0 64 64 0 0-64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64 64 0 0-64-64 0 0-64 64 0 0-64-64 0 0-64 64 0zm64 128l64 0 0-64-64 0 0 64zm0 64l0-64-64 0 0 64 64 0zm64 0l-64 0 0 64 64 0 0-64zm0 0l64 0 0-64-64 0 0 64z\"]\n};\nconst faBuildingCircleCheck = {\n prefix: 'fas',\n iconName: 'building-circle-check',\n icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faPersonChalkboard = {\n prefix: 'fas',\n iconName: 'person-chalkboard',\n icon: [640, 512, [], \"e53d\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-288 56 0 64 0 16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-64 192 0 0 192-192 0 0-32-64 0 0 48c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48L368 0c-26.5 0-48 21.5-48 48l0 80-76.9 0-65.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faMarsStrokeRight = {\n prefix: 'fas',\n iconName: 'mars-stroke-right',\n icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152l33.6 0 0-56c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56 32 0 0-56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-56-32 0 0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56-33.6 0z\"]\n};\nconst faMarsStrokeH = faMarsStrokeRight;\nconst faHandBackFist = {\n prefix: 'fas',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48l0 48 0 28.5L96 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-26.7-9 7.5C40.4 169 32 187 32 206L32 244c0 38 16.9 74 46.1 98.3L128 384l0 96c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-105.3c46.9-19 80-65 80-118.7l0-80 0-16 0-16c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nconst faHandRock = faHandBackFist;\nconst faSquareCaretUp = {\n prefix: 'fas',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nconst faCaretSquareUp = faSquareCaretUp;\nconst faCloudShowersWater = {\n prefix: 'fas',\n iconName: 'cloud-showers-water',\n icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64l1.6 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faBarChart = faChartBar;\nconst faHandsBubbles = {\n prefix: 'fas',\n iconName: 'hands-bubbles',\n icon: [576, 512, [\"hands-wash\"], \"e05e\", \"M416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM32 160l.1 72.6c.1 52.2 24 101 64 133.1c-.1-1.9-.1-3.8-.1-5.7l0-8c0-71.8 37-138.6 97.9-176.7l60.2-37.6c8.6-5.4 17.9-8.4 27.3-9.4l45.9-79.5c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-78 135.1c-3.3 5.7-10.7 7.7-16.4 4.4s-7.7-10.7-4.4-16.4l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S214 5 207.4 16.5l-68 117.8s0 0 0 0s0 0 0 0l-43.3 75L96 160c0-17.7-14.4-32-32-32s-32 14.4-32 32zM332.1 88.5L307.5 131c13.9 4.5 26.4 13.7 34.7 27c.9 1.5 1.8 2.9 2.5 4.4l28.9-50c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-26.8 46.4c-.6 6-2.1 11.8-4.3 17.4l4.7 0 13.3 0s0 0 0 0l31.8 0 23-39.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM315.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C159.3 234.7 128 291.2 128 352l0 8c0 8.9 .8 17.6 2.2 26.1c35.4 8.2 61.8 40 61.8 77.9c0 6.3-.7 12.5-2.1 18.4C215.1 501 246.3 512 280 512l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-92 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-124 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l156 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-156 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-136 0s0 0 0 0s0 0 0 0l-93.2 0L305 219.1c15-9.4 19.5-29.1 10.2-44.1z\"]\n};\nconst faHandsWash = faHandsBubbles;\nconst faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96L0 352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512l39.7 0c8.5 0 16.6-3.4 22.6-9.4L160 448l128 0 54.6 54.6c6 6 14.1 9.4 22.6 9.4l39.7 0c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9l0-256c0-53-43-96-96-96L96 0zM64 96c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L96 224c-17.7 0-32-14.3-32-32l0-96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faEyeLowVision = {\n prefix: 'fas',\n iconName: 'eye-low-vision',\n icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223 149.5c48.6-44.3 123-50.8 179.3-11.7c60.8 42.4 78.9 123.2 44.2 186.9L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3L223 149.5zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nconst faLowVision = faEyeLowVision;\nconst faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88l0 29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384l133.1 0 46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384l40.9 0c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192l0-64 0-8 80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32l-50.1 0C507.7 12.5 483.3 0 456 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faSailboat = {\n prefix: 'fas',\n iconName: 'sailboat',\n icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6l-224 0c-8.8 0-16-7.2-16-16l0-320zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5l0 224c0 8.8-7.2 16-16 16L80 352c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384l533.8 0c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512L133 512C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nconst faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 64L208 64c-8.8 0-16 7.2-16 16l0 16-64 0 0-16c0-44.2 35.8-80 80-80L432 0c44.2 0 80 35.8 80 80l0 224c0 44.2-35.8 80-80 80l-16 0 0-64 16 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192zm64 32c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 192c-17.7 0-32 14.3-32 32z\"]\n};\nconst faSquarePlus = {\n prefix: 'fas',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM200 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faPlusSquare = faSquarePlus;\nconst faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48l16 0 0 64 64 0 0-64 96 0 0 64 64 0 0-64 96 0 0 64 64 0 0-64 16 0c26.5 0 48-21.5 48-48l0-66.6C512 6 506 0 498.6 0c-1.7 0-3.4 .3-5 1l-49 19.6C425.7 28.1 405.5 32 385.2 32L126.8 32c-20.4 0-40.5-3.9-59.4-11.4L18.4 1c-1.6-.6-3.3-1-5-1C6 0 0 6 0 13.4L0 80zM64 288l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0 0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0z\"]\n};\nconst faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416l90.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faBucket = {\n prefix: 'fas',\n iconName: 'bucket',\n icon: [448, 512, [], \"e4cf\", \"M96 152l0 8-48 0 0-8C48 68.1 116.1 0 200 0l48 0c83.9 0 152 68.1 152 152l0 8-48 0 0-8c0-57.4-46.6-104-104-104l-48 0C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-5.1 0L388.5 469c-2.6 24.4-23.2 43-47.7 43l-233.6 0c-24.6 0-45.2-18.5-47.7-43L37.1 256 32 256c-17.7 0-32-14.3-32-32z\"]\n};\nconst faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96l0 160c0 53 43 96 96 96s96-43 96-96l0-160c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c85.8-11.7 152-85.3 152-174.4l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40z\"]\n};\nconst faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [128004], \"f6c8\", \"M96 224l0 32 0 160c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-88.2c9.9 6.6 20.6 12 32 16.1l0 24.2c0 8.8 7.2 16 16 16s16-7.2 16-16l0-16.9c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9l0 16.9c0 8.8 7.2 16 16 16s16-7.2 16-16l0-24.2c11.4-4 22.1-9.4 32-16.1l0 88.2c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-160 32 32 0 49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5 0-81.6c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 14.4-52.9-74.1C496 86.5 452.4 64 405.9 64L272 64l-16 0-64 0-48 0C77.7 64 24 117.7 24 184l0 54C9.4 249.8 0 267.8 0 288l0 17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4l0-6.4 0-32 0-40c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160l0 64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6l178.7 0c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nconst faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nconst faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19l0 54.1-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192l54.1 0c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nconst faFolderClosed = {\n prefix: 'fas',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 480L64 480c-35.3 0-64-28.7-64-64L0 192l512 0 0 224c0 35.3-28.7 64-64 64zm64-320L0 160 0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64z\"]\n};\nconst faHouseTsunami = {\n prefix: 'fas',\n iconName: 'house-tsunami',\n icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1c0 0 0 0 0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6l0 121c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nconst faSquareNfi = {\n prefix: 'fas',\n iconName: 'square-nfi',\n icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm75.7 64.6C68.8 162.5 64 168.8 64 176l0 160c0 8.8 7.2 16 16 16s16-7.2 16-16l0-102.2 66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4l0-160c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 102.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176l0 64 0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-32 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 160c0 8.8 7.2 16 16 16s16-7.2 16-16l0-160z\"]\n};\nconst faArrowUpFromGroundWater = {\n prefix: 'fas',\n iconName: 'arrow-up-from-ground-water',\n icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32l0-210.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3 256 320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192L48 192c-26.5 0-48 21.5-48 48L0 425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3L192 192zm384 48c0-26.5-21.5-48-48-48l-144 0 0 224.5s0 0 0 0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9l0-185z\"]\n};\nconst faMartiniGlass = {\n prefix: 'fas',\n iconName: 'martini-glass',\n icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3 224 448l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-178.7L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0L32 0zM173.3 128l-64-64 293.5 0-64 64-165.5 0z\"]\n};\nconst faGlassMartiniAlt = faMartiniGlass;\nconst faRotateLeft = {\n prefix: 'fas',\n iconName: 'rotate-left',\n icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224L40 224c-13.3 0-24-10.7-24-24L16 72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8L48.5 224z\"]\n};\nconst faRotateBack = faRotateLeft;\nconst faRotateBackward = faRotateLeft;\nconst faUndoAlt = faRotateLeft;\nconst faTableColumns = {\n prefix: 'fas',\n iconName: 'table-columns',\n icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 64l0 256 160 0 0-256L64 160zm384 0l-160 0 0 256 160 0 0-256z\"]\n};\nconst faColumns = faTableColumns;\nconst faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nconst faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [576, 512, [], \"e063\", \"M32 224.2c0-22.2 3.2-43.6 9.2-63.9L262.2 321c-4 9.5-6.2 20-6.2 31l0 160-128 0c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C48.6 322.4 32 274.1 32 224.2zm248.3 70.4L53 129.3C88.7 53 166.2 0 256 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c5.4 6.7 8.6 14.8 9.4 23.2L336 272c-21.7 0-41.3 8.6-55.7 22.6zM336 304l198 0s0 0 0 0l10 0-19.7 64L368 368c-8.8 0-16 7.2-16 16s7.2 16 16 16l146.5 0-9.8 32L368 432c-8.8 0-16 7.2-16 16s7.2 16 16 16l126.8 0-.9 2.8c-8.3 26.9-33.1 45.2-61.2 45.2L288 512l0-160c0-14 6-26.7 15.6-35.4c0 0 0 0 0 0c8.5-7.8 19.9-12.6 32.4-12.6zm48-80a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8 512 128l-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48 0 224 28.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM16 128c-8.8 0-16 7.2-16 16L0 352c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-224-80 0zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128l0 224c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-208c0-8.8-7.2-16-16-16l-80 0zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8l240 0c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nconst faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [\"dolly-box\"], \"f472\", \"M0 32C0 14.3 14.3 0 32 0l72.9 0c27.5 0 52 17.6 60.7 43.8L257.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L352 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L104.9 64 32 64C14.3 64 0 49.7 0 32zM244.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L311 79.4l19.8 60.9 60.9-19.8L371.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L334.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L244.8 134.5z\"]\n};\nconst faDollyBox = faDolly;\nconst faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [128684], \"f48d\", \"M448 32l0 11c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2l0 11c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-11c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43l0-11c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256l0-11c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2l0-11c0-17.7 14.3-32 32-32s32 14.3 32 32l0 11c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1l0 11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64l352 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L64 512c-35.3 0-64-28.7-64-64l0-32zm224 0l0 32 160 0 0-32-160 0zm288-64c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32z\"]\n};\nconst faMinimize = {\n prefix: 'fas',\n iconName: 'minimize',\n icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-144c0-13.3 10.7-24 24-24l144 0zm-256 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8l144 0zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 144c0 13.3-10.7 24-24 24L56 224z\"]\n};\nconst faCompressArrowsAlt = faMinimize;\nconst faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322L55.9 416 96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zM32 448l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160L256 224l-64-64 0-96 106.9 0zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0L176 0c-26.5 0-48 21.5-48 48l0 112-32 0c-17.7 0-32 14.3-32 32l0 106.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112l256 0c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48l42.8 0 0 50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7l0-82.7 0-84.8L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40l0 52.8-64 0 0-31.3c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48l-256 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l256 0zM144 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm216 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-56-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM200 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faAnglesRight = {\n prefix: 'fas',\n iconName: 'angles-right',\n icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nconst faAngleDoubleRight = faAnglesRight;\nconst faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2l0 70.8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-70.8-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nconst faCirclePlay = {\n prefix: 'fas',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nconst faPlayCircle = faCirclePlay;\nconst faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M614.3 247c-5.2 7.9-16.2 8.5-22.9 1.8L391.2 48.6c-6.7-6.7-6.2-17.8 1.8-22.9C418.1 9.4 447.9 0 480 0c88.4 0 160 71.6 160 160c0 32.1-9.4 61.9-25.7 87zM567 294.3c-25 16.3-54.9 25.7-87 25.7c-88.4 0-160-71.6-160-160c0-32.1 9.4-61.9 25.7-87c5.2-7.9 16.2-8.5 22.9-1.8L568.8 271.4c6.7 6.7 6.2 17.8-1.8 22.9zM301.5 368c9.5 0 16.9 8.2 15 17.5C301.1 457.8 236.9 512 160 512S18.9 457.8 3.5 385.5c-2-9.3 5.5-17.5 15-17.5l283.1 0zm0-32L18.5 336c-9.5 0-16.9-8.2-15-17.5C18.9 246.2 83.1 192 160 192s141.1 54.2 156.5 126.5c2 9.3-5.5 17.5-15 17.5z\"]\n};\nconst faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M0 224L0 416c0 17.7 14.3 32 32 32l64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32L160 64c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8l0 16c0 2.7 0 5.3 .1 8L32 272c-17.7 0-32 14.3-32 32s14.3 32 32 32l28.3 0C89.9 419.9 170 480 264 480l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-24 0c-57.9 0-108.2-32.4-133.9-80L256 336c17.7 0 32-14.3 32-32s-14.3-32-32-32l-143.8 0c-.1-2.6-.2-5.3-.2-8l0-16c0-2.7 .1-5.4 .2-8L256 240c17.7 0 32-14.3 32-32s-14.3-32-32-32l-125.9 0c25.7-47.6 76-80 133.9-80l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-24 0C170 32 89.9 92.1 60.3 176L32 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l16.1 0z\"]\n};\nconst faEur = faEuroSign;\nconst faEuro = faEuroSign;\nconst faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [129681], \"f6c0\", \"M248 48l0 208 48 0 0-197.3c23.9 13.8 40 39.7 40 69.3l0 128 48 0 0-128C384 57.3 326.7 0 256 0L192 0C121.3 0 64 57.3 64 128l0 128 48 0 0-128c0-29.6 16.1-55.5 40-69.3L152 256l48 0 0-208 48 0zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 256 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288L48 288z\"]\n};\nconst faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faCheckCircle = faCircleCheck;\nconst faCircleStop = {\n prefix: 'fas',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z\"]\n};\nconst faStopCircle = faCircleStop;\nconst faCompassDrafting = {\n prefix: 'fas',\n iconName: 'compass-drafting',\n icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192c0 0 0 0 0 0s0 0 0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496l0-55.4c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1l0 55.4c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faDraftingCompass = faCompassDrafting;\nconst faPlateWheat = {\n prefix: 'fas',\n iconName: 'plate-wheat',\n icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zM56 64l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16zM400 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zm80 160l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80zm-96 16l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320l456.4 0c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446l0 2c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nconst faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nconst faPersonShelter = {\n prefix: 'fas',\n iconName: 'person-shelter',\n icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.4L256 68.9 448 178.6 448 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 280l0-88 16 0 0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-174.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5 200 488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nconst faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [384, 512, [9906], \"f22c\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1L160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-130.9z\"]\n};\nconst faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zm96 320l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L96 416c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 64l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nconst faFaceLaughBeam = {\n prefix: 'fas',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM217.6 212.8s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faLaughBeam = faFaceLaughBeam;\nconst faHelicopterSymbol = {\n prefix: 'fas',\n iconName: 'helicopter-symbol',\n icon: [512, 512, [], \"e502\", \"M445.3 224l64.7 0C495.6 108.2 403.8 16.4 288 2l0 64.7C368.4 80.1 431.9 143.6 445.3 224zM510 288l-64.7 0C431.9 368.4 368.4 431.9 288 445.3l0 64.7c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510l0-64.7C143.6 431.9 80.1 368.4 66.7 288L2 288zm0-64l64.7 0C80.1 143.6 143.6 80.1 224 66.7L224 2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 96 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-96 0 0-64z\"]\n};\nconst faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3l0 50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6l0-50.1c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faCircleChevronUp = {\n prefix: 'fas',\n iconName: 'circle-chevron-up',\n icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nconst faChevronCircleUp = faCircleChevronUp;\nconst faLariSign = {\n prefix: 'fas',\n iconName: 'lari-sign',\n icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32l0 32.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7L208 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3l0 67.9c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-95c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1l0 95c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-67.9C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l16.9 0C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6L112 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-58.9-66.3c-9.1-10.2-22.2-16.1-35.9-16.1l-41.8 0c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2l41.8 0c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2L52.2 512C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nconst faPersonWalkingDashedLineArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-dashed-line-arrow-right',\n icon: [640, 512, [], \"e553\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224 384 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16zM392 320c-13.3 0-24 10.7-24 24l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48z\"]\n};\nconst faSterlingSign = {\n prefix: 'fas',\n iconName: 'sterling-sign',\n icon: [320, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4L48 224l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 44.5c0 17.4-4.7 34.5-13.7 49.4L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L88.5 416l.7-1.1C104.1 390 112 361.5 112 332.5l0-44.5 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-63.6z\"]\n};\nconst faGbp = faSterlingSign;\nconst faPoundSign = faSterlingSign;\nconst faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24l0 13.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168l13.5 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-13.5 0c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5l0 13.5c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-13.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216L24 216c-13.3 0-24-10.7-24-24s10.7-24 24-24l13.5 0c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5L168 24c0-13.3 10.7-24 24-24zm48 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48-64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faSquarePersonConfined = {\n prefix: 'fas',\n iconName: 'square-person-confined',\n icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56l0 102.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7l0-58.7z\"]\n};\nconst faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M96 128a128 128 0 1 0 256 0A128 128 0 1 0 96 128zm94.5 200.2l18.6 31L175.8 483.1l-36-146.9c-2-8.1-9.8-13.4-17.9-11.3C51.9 342.4 0 405.8 0 481.3c0 17 13.8 30.7 30.7 30.7l131.7 0c0 0 0 0 .1 0l5.5 0 112 0 5.5 0c0 0 0 0 .1 0l131.7 0c17 0 30.7-13.8 30.7-30.7c0-75.5-51.9-138.9-121.9-156.4c-8.1-2-15.9 3.3-17.9 11.3l-36 146.9L238.9 359.2l18.6-31c6.4-10.7-1.3-24.2-13.7-24.2L224 304l-19.7 0c-12.4 0-20.1 13.6-13.7 24.2z\"]\n};\nconst faArrowDownLong = {\n prefix: 'fas',\n iconName: 'arrow-down-long',\n icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"]\n};\nconst faLongArrowDown = faArrowDownLong;\nconst faTentArrowDownToLine = {\n prefix: 'fas',\n iconName: 'tent-arrow-down-to-line',\n icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l127.6 0 .7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448l80 0L402.7 325.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9L384 448z\"]\n};\nconst faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.4-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nconst faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2l0-64 32 0c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176l-48 0 0-64z\"]\n};\nconst faMailReplyAll = faReplyAll;\nconst faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [129523], \"f0f2\", \"M176 56l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 48c-4.4 0-8 3.6-8 8zM128 96l0-40c0-30.9 25.1-56 56-56L328 0c30.9 0 56 25.1 56 56l0 40 0 32 0 352-256 0 0-352 0-32zM64 96l32 0 0 384-32 0c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64zM448 480l-32 0 0-384 32 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64z\"]\n};\nconst faPersonSkating = {\n prefix: 'fas',\n iconName: 'person-skating',\n icon: [448, 512, [\"skating\"], \"f7c5\", \"M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32l159.4 0c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9l0 73.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17L160 160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4L272 512c-8.8 0-16-7.2-16-16s7.2-16 16-16l88.8 0c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nconst faSkating = faPersonSkating;\nconst faFilterCircleDollar = {\n prefix: 'fas',\n iconName: 'filter-circle-dollar',\n icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0L472 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7l0-9.4c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6c0 0 0 0 0 0s0 0 0 0c7 2.3 15.1 4.8 23.7 6.6l0 11.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-10.8c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5c0 0 0 0 0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nconst faFunnelDollar = faFilterCircleDollar;\nconst faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96l0 96-114.8 0c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24L64 192l0-64 128 0c9.9 0 19.7-2.3 28.6-6.8zM0 128L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L271.1 32c-9.9 0-19.7 2.3-28.6 6.8L192 64l-32 0 0-16c0-8.8-7.2-16-16-16L80 32c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z\"]\n};\nconst faCircleArrowDown = {\n prefix: 'fas',\n iconName: 'circle-arrow-down',\n icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 297c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 214.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 409c-9.4 9.4-24.6 9.4-33.9 0L127 297z\"]\n};\nconst faArrowCircleDown = faCircleArrowDown;\nconst faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64L352 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64l-256 0c-35.3 0-64-28.7-64-64l0-112 174.1 0-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39L128 288l0-224zm0 224l0 48L24 336c-13.3 0-24-10.7-24-24s10.7-24 24-24l104 0zM512 128l-128 0L384 0 512 128z\"]\n};\nconst faArrowRightToFile = faFileImport;\nconst faSquareArrowUpRight = {\n prefix: 'fas',\n iconName: 'square-arrow-up-right',\n icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24l94.1 0L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135L288 328c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24l-152 0z\"]\n};\nconst faExternalLinkSquare = faSquareArrowUpRight;\nconst faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6l0 167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5l0-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128l2.2 0z\"]\n};\nconst faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [576, 512, [128220], \"f70e\", \"M0 80l0 48c0 17.7 14.3 32 32 32l16 0 48 0 0-80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48l0 304c0 35.3 28.7 64 64 64s64-28.7 64-64l0-5.3c0-32.4 26.3-58.7 58.7-58.7L480 320l0-192c0-53-43-96-96-96L112 32zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16l-245.3 0c-14.7 0-26.7 11.9-26.7 26.7l0 5.3c0 53-43 96-96 96l176 0 96 0z\"]\n};\nconst faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192l9.9 0c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480L288 480l-20.1 0C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192l9.9 0c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nconst faLocationPinLock = {\n prefix: 'fas',\n iconName: 'location-pin-lock',\n icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3l0-94.8c0-23.7 12.9-44.4 32-55.4l0-24.6c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112L0 400c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48L48 64zm192 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-32 0z\"]\n};\nconst faHillAvalanche = {\n prefix: 'fas',\n iconName: 'hill-avalanche',\n icon: [576, 512, [], \"e507\", \"M439.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C401.2 261.3 416 236.4 416 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C216.3 46.6 197.9 32 176 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L439.7 401.9zM480 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.3 87C43.1 61.8 0 79.7 0 115.3L0 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.3 87z\"]\n};\nconst faTemperatureEmpty = {\n prefix: 'fas',\n iconName: 'temperature-empty',\n icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L112 112zM160 0C98.1 0 48 50.2 48 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L272 112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faTemperature0 = faTemperatureEmpty;\nconst faThermometer0 = faTemperatureEmpty;\nconst faThermometerEmpty = faTemperatureEmpty;\nconst faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104l0 8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-8c0-75.1 60.9-136 136-136l8 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-8 0z\"]\n};\nconst faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24l88 0c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288 208 288l0 72c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-96 0-112zm48 88l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0 64z\"]\n};\nconst faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 256l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faContactCard = faAddressCard;\nconst faVcard = faAddressCard;\nconst faScaleUnbalancedFlip = {\n prefix: 'fas',\n iconName: 'scale-unbalanced-flip',\n icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2L352 480c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.4 288L128 163.8 55.6 288l144.9 0zM128 384C65.1 384 12.8 350 2 305.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C243.2 350 190.9 384 128 384zm382.8-92.2L438.4 416l144.9 0L510.8 291.8zm126 141.3C626 478 573.7 512 510.8 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"]\n};\nconst faBalanceScaleRight = faScaleUnbalancedFlip;\nconst faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l15.3 0 89.6 128L47.3 384 32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0L215.1 256l89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64L32 64zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128z\"]\n};\nconst faDiamondTurnRight = {\n prefix: 'fas',\n iconName: 'diamond-turn-right',\n icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8l0 56-64 0c-35.3 0-64 28.7-64 64l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48c0-8.8 7.2-16 16-16l64 0 0 56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nconst faDirections = faDiamondTurnRight;\nconst faBurst = {\n prefix: 'fas',\n iconName: 'burst',\n icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nconst faHouseLaptop = {\n prefix: 'fas',\n iconName: 'house-laptop',\n icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5l-144 0c-19.1 0-36.3 8.4-48 21.7l0-37.7c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0 0 128-160 0c-26.5 0-48-21.5-48-48l0-112-32 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304l0 144 192 0 0-144-192 0zm-48-16c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32l0 160 32 0c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48l-48 0-192 0-48 0c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16l32 0 0-160z\"]\n};\nconst faLaptopHouse = faHouseLaptop;\nconst faFaceTired = {\n prefix: 'fas',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3l-3.2 0c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faTired = faFaceTired;\nconst faMoneyBills = {\n prefix: 'fas',\n iconName: 'money-bills',\n icon: [640, 512, [], \"e1f3\", \"M96 96l0 224c0 35.3 28.7 64 64 64l416 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64l-64 0 0-64zM224 96c0 35.3-28.7 64-64 64l0-64 64 0zM576 256l0 64-64 0c0-35.3 28.7-64 64-64zM512 96l64 0 0 64c-35.3 0-64-28.7-64-64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 360c0 66.3 53.7 120 120 120l400 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-400 0c-39.8 0-72-32.2-72-72l0-240z\"]\n};\nconst faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144l123.3 0c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32l27.3 0c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368l-336 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96l-112 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0L24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24L96 368c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0c13.3 0 24-10.7 24-24z\"]\n};\nconst faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nconst faFontAwesome = {\n prefix: 'fas',\n iconName: 'font-awesome',\n icon: [512, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M91.7 96C106.3 86.8 116 70.5 116 52C116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 3 0 352 0 64 64 0 0-64 373.6 0c14.6 0 26.4-11.8 26.4-26.4c0-3.7-.8-7.3-2.3-10.7L432 272l61.7-138.9c1.5-3.4 2.3-7 2.3-10.7c0-14.6-11.8-26.4-26.4-26.4L91.7 96z\"]\n};\nconst faFontAwesomeFlag = faFontAwesome;\nconst faFontAwesomeLogoFull = faFontAwesome;\nconst faCloudArrowUp = {\n prefix: 'fas',\n iconName: 'cloud-arrow-up',\n icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L296 392c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nconst faCloudUpload = faCloudArrowUp;\nconst faCloudUploadAlt = faCloudArrowUp;\nconst faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3L344 320c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faArrowsTurnRight = {\n prefix: 'fas',\n iconName: 'arrows-turn-right',\n icon: [448, 512, [], \"e4c0\", \"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 160 128 160c-35.3 0-64 28.7-64 64l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32C0 153.3 57.3 96 128 96l210.7 0L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-53 43-96 96-96l146.7 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2L224 464c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-193.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6l0-17.5 0-73.7 0-6.3c0-26.5-21.5-48-48-48l-4.5 0c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0L112 0C85.5 0 64 21.5 64 48l0 6.3L64 128l0 17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5L0 464c0 26.5 21.5 48 48 48l128 0c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464l0-168.2c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nconst faFerry = {\n prefix: 'fas',\n iconName: 'ferry',\n icon: [576, 512, [], \"e4ea\", \"M224 0L352 0c17.7 0 32 14.3 32 32l75.1 0c20.6 0 31.6 24.3 18.1 39.8L456 96 120 96 98.8 71.8C85.3 56.3 96.3 32 116.9 32L192 32c0-17.7 14.3-32 32-32zM96 128l384 0c17.7 0 32 14.3 32 32l0 123.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9l-16.5 0c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9l-16.6 0c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5L64 160c0-17.7 14.3-32 32-32zm32 64l0 96 320 0 0-96-320 0zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faArrowsDownToPeople = {\n prefix: 'fas',\n iconName: 'arrows-down-to-people',\n icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24l0 118.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23L168 24c0-13.3-10.7-24-24-24zM360 200a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM184 296a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm312 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5l0 54.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-54.5 26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5l0 38.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5 88 480c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23L520 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 118.1-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nconst faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 32c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 46.3 364 0 448 0l32 0c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64l32 0c123.7 0 224 100.3 224 224l0 32 0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160C100.3 320 0 219.7 0 96z\"]\n};\nconst faSprout = faSeedling;\nconst faLeftRight = {\n prefix: 'fas',\n iconName: 'left-right',\n icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nconst faArrowsAltH = faLeftRight;\nconst faBoxesPacking = {\n prefix: 'fas',\n iconName: 'boxes-packing',\n icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48L592 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48l-210.7 0c1.8-5 2.7-10.4 2.7-16l0-242.7c18.6-6.6 32-24.4 32-45.3l0-32c0-26.5-21.5-48-48-48l-112 0 0-80zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6 480 432c0 8.8 7.2 16 16 16s16-7.2 16-16l0-121.4 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16L16 224c-8.8 0-16-7.2-16-16l0-32zm352 80l0 224c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32l0-224 320 0zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0z\"]\n};\nconst faCircleArrowLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-left',\n icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM215 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L392 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-214.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L103 273c-9.4-9.4-9.4-24.6 0-33.9L215 127z\"]\n};\nconst faArrowCircleLeft = faCircleArrowLeft;\nconst faGroupArrowsRotate = {\n prefix: 'fas',\n iconName: 'group-arrows-rotate',\n icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4l0-60.5c0-5.7-4.7-10.4-10.4-10.4l-60.5 0c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4l0 60.5c0 5.7 4.7 10.4 10.4 10.4l60.5 0c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nconst faBowlFood = {\n prefix: 'fas',\n iconName: 'bowl-food',\n icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32L8.6 224C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nconst faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23l0 5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8l0-5.6C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nconst faArrowDownWideShort = {\n prefix: 'fas',\n iconName: 'arrow-down-wide-short',\n icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L320 96z\"]\n};\nconst faSortAmountAsc = faArrowDownWideShort;\nconst faSortAmountDown = faArrowDownWideShort;\nconst faCloudBolt = {\n prefix: 'fas',\n iconName: 'cloud-bolt',\n icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96l47.2 0L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320l18.3 0 64 0c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7l70.1 0L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7l-70.1 0 52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nconst faThunderstorm = faCloudBolt;\nconst faTextSlash = {\n prefix: 'fas',\n iconName: 'text-slash',\n icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96 503 96 497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32L376.1 32l-.3 0L204.5 32c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96l116.7 0L301.3 210.8l-94.5-74.1zM243.3 416L192 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-42.2 0 17.6-62.1L272.9 311 243.3 416z\"]\n};\nconst faRemoveFormat = faTextSlash;\nconst faFaceSmileWink = {\n prefix: 'fas',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nconst faSmileWink = faFaceSmileWink;\nconst faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nconst faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM136 240l68 0c42 0 76 34 76 76s-34 76-76 76l-44 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56 0-104c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28l-44 0 0 56 44 0z\"]\n};\nconst faArrowsLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-left-right',\n icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nconst faArrowsH = faArrowsLeftRight;\nconst faHouseLock = {\n prefix: 'fas',\n iconName: 'house-lock',\n icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32l-.6 0c-22.1 0-40-17.9-40-40l0-24 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272l0 24.6c-19.1 11.1-32 31.7-32 55.4l0 128zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faCloudArrowDown = {\n prefix: 'fas',\n iconName: 'cloud-arrow-down',\n icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39L344 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 134.1-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nconst faCloudDownload = faCloudArrowDown;\nconst faCloudDownloadAlt = faCloudArrowDown;\nconst faChildren = {\n prefix: 'fas',\n iconName: 'children',\n icon: [640, 512, [], \"e4e1\", \"M160 0a64 64 0 1 1 0 128A64 64 0 1 1 160 0zM88 480l0-80-17.8 0c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1L232 400l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80-16 0 0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 0a64 64 0 1 1 0 128A64 64 0 1 1 480 0zm-8 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-179.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9l12.3 0c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5 552 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0z\"]\n};\nconst faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96l0 288 64 0L96 96l384 0 0 288 64 0 0-288c0-35.3-28.7-64-64-64L96 32zM224 384l0 32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-32c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faBlackboard = faChalkboard;\nconst faUserLargeSlash = {\n prefix: 'fas',\n iconName: 'user-large-slash',\n icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512L528 512 284.3 320l-59 0C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7l450.6 0 .3 0z\"]\n};\nconst faUserAltSlash = faUserLargeSlash;\nconst faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1l0 47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5l0-47.4zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-239.9c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nconst faHandshakeSimpleSlash = {\n prefix: 'fas',\n iconName: 'handshake-simple-slash',\n icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352l41.8 0c26.5 0 48-21.5 48-48l0-128c0-26.5-21.5-48-48-48l-76 0-4 0-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM0 176L0 304c0 26.5 21.5 48 48 48l108.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6L41.2 128.5C17.9 131.8 0 151.8 0 176z\"]\n};\nconst faHandshakeAltSlash = faHandshakeSimpleSlash;\nconst faMattressPillow = {\n prefix: 'fas',\n iconName: 'mattress-pillow',\n icon: [640, 512, [], \"e525\", \"M256 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l192 0 0-384zm32 384l288 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L288 64l0 384zM64 160c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-192z\"]\n};\nconst faGuaraniSign = {\n prefix: 'fas',\n iconName: 'guarani-sign',\n icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32l0 34.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3l0 34.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-34.7c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32l-128 0 0-92c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7L224 32c0-17.7-14.3-32-32-32zM160 132L160 380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380l0-92 92 0c-11.6 45-47 80.4-92 92z\"]\n};\nconst faArrowsRotate = {\n prefix: 'fas',\n iconName: 'arrows-rotate',\n icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160 352 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l111.5 0c0 0 0 0 0 0l.4 0c17.7 0 32-14.3 32-32l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1L16 432c0 17.7 14.3 32 32 32s32-14.3 32-32l0-35.1 17.6 17.5c0 0 0 0 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.8c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352l34.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48.4 288c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nconst faRefresh = faArrowsRotate;\nconst faSync = faArrowsRotate;\nconst faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32l0 96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104l-65 0 0 34.8c37.8 18 64 56.5 64 101.2l0 144L64 384l0-144c0-44.7 26.2-83.2 64-101.2l0-28.8c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4L128 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 24 65 0c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416l0 32c0 35.3-28.7 64-64 64l-96 0c-35.3 0-64-28.7-64-64l0-32 224 0zM176 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faCruzeiroSign = {\n prefix: 'fas',\n iconName: 'cruzeiro-sign',\n icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416l0-96 0-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32l0 55.3 0 8.7 0 82.7C135.5 378 96 321.6 96 256z\"]\n};\nconst faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0z\"]\n};\nconst faShieldHalved = {\n prefix: 'fas',\n iconName: 'shield-halved',\n icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8l0 378.1C394 378 431.1 230.1 432 141.4L256 66.8s0 0 0 0z\"]\n};\nconst faShieldAlt = faShieldHalved;\nconst faBookAtlas = {\n prefix: 'fas',\n iconName: 'book-atlas',\n icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9l63 0c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9l31.1 0c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9l-31.1 0c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM145.3 208l31.1 0c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32l-31.1 0c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9l-63 0c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nconst faAtlas = faBookAtlas;\nconst faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l11.5 0c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6l0 11.5c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6l11.5 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-11.5 0c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5L288 32zM176 224a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faEnvelopeCircleCheck = {\n prefix: 'fas',\n iconName: 'envelope-circle-check',\n icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176 0 384c0 35.3 28.7 64 64 64l296.2 0C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nconst faArrowsToDot = {\n prefix: 'fas',\n iconName: 'arrows-to-dot',\n icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32l0 32 32 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l32 0 0-32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 32 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 64 0 0-128c0-53 43-96 96-96s96 43 96 96l0 128 64 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-288L32 128l0 288z\"]\n};\nconst faHeartCircleCheck = {\n prefix: 'fas',\n iconName: 'heart-circle-check',\n icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faHouseChimneyCrack = {\n prefix: 'fas',\n iconName: 'house-chimney-crack',\n icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-122.1 0L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512l-102.3 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24z\"]\n};\nconst faHouseDamage = faHouseChimneyCrack;\nconst faFileZipper = {\n prefix: 'fas',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM96 48c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8l14.8 0c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0z\"]\n};\nconst faFileArchive = faFileZipper;\nconst faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nconst faMartiniGlassEmpty = {\n prefix: 'fas',\n iconName: 'martini-glass-empty',\n icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3 224 448l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-178.7L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0L32 0zM256 210.7L109.3 64l293.5 0L256 210.7z\"]\n};\nconst faGlassMartini = faMartiniGlassEmpty;\nconst faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32l256 0c70.7 0 128 57.3 128 128l0 33.6c-36.5 7.4-64 39.7-64 78.4l0 48-384 0 0-48c0-38.7-27.5-71-64-78.4L64 160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48l0 176c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32L96 448c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32L0 272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3l0 48 0 32 32 0 384 0 32 0 0-32 0-48z\"]\n};\nconst faCediSign = {\n prefix: 'fas',\n iconName: 'cedi-sign',\n icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 34.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3l0 34.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-34.7c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6L256 132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8L256 32zM192 132L192 380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nconst faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-58.7 0L160 416l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l58.7 0L224 96l-64 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faTableCellsColumnLock = {\n prefix: 'fas',\n iconName: 'table-cells-column-lock',\n icon: [640, 512, [], \"e678\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zm208 0l0 64 88 0 0-64-88 0zm240 0l-88 0 0 64 88 0 0-64zM208 224l0 64 88 0 0-64-88 0zm0 128l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2L160 512l96 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 96 0 0-260.8c0-16.9-8.8-32.5-23.3-41.2L344 142.4 344 96l32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4L0 464c0 26.5 21.5 48 48 48l80 0 0-238.4L24.9 330.3zM592 512c26.5 0 48-21.5 48-48l0-91.6c0-17.5-9.5-33.6-24.9-42.1L512 273.6 512 512l80 0z\"]\n};\nconst faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9c0 0 0 0 0 0s0 0 0 0l.2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2s0 0 0 0s0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7L228 72z\"]\n};\nconst faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8L480 160l32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17l0 87.4-352 0-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3l-2 0C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352l96 0 0 64 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64-160 0 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64 0-64 96 0 160 0zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nconst faZ = {\n prefix: 'fas',\n iconName: 'z',\n icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32l320 0c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416 352 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faPersonSkiing = {\n prefix: 'fas',\n iconName: 'person-skiing',\n icon: [512, 512, [9975, \"skiing\"], \"f7c9\", \"M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L232.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L289.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L151.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nconst faSkiing = faPersonSkiing;\nconst faRoadLock = {\n prefix: 'fas',\n iconName: 'road-lock',\n icon: [640, 512, [], \"e567\", \"M288 32l-74.8 0c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480L288 480l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64 32 0 0-128c0-23.7 12.9-44.4 32-55.4l0-24.6c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32L352 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faA = {\n prefix: 'fas',\n iconName: 'a',\n icon: [384, 512, [97], \"41\", \"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384l197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320l-144 0 72-172.8L264 320z\"]\n};\nconst faTemperatureArrowDown = {\n prefix: 'fas',\n iconName: 'temperature-arrow-down',\n icon: [576, 512, [\"temperature-down\"], \"e03f\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L128 112zM176 0C114.1 0 64 50.1 64 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L288 112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3l0-50.7c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64l-32 0 0-288c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 288-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nconst faTemperatureDown = faTemperatureArrowDown;\nconst faFeatherPointed = {\n prefix: 'fas',\n iconName: 'feather-pointed',\n icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nconst faFeatherAlt = faFeatherPointed;\nconst faP = {\n prefix: 'fas',\n iconName: 'p',\n icon: [320, 512, [112], \"50\", \"M0 96C0 60.7 28.7 32 64 32l96 0c88.4 0 160 71.6 160 160s-71.6 160-160 160l-96 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 320 0 96zM64 288l96 0c53 0 96-43 96-96s-43-96-96-96L64 96l0 192z\"]\n};\nconst faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32l0 30.1 15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49 0 70.3 61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7l0 70.3 49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15 0 30.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-30.1-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49 0-70.3-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3l0-70.3L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15L192 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L80 480c-44.2 0-80-35.8-80-80L0 128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 272c0 8.8 7.2 16 16 16s16-7.2 16-16L96 96zm64 24l0 80c0 13.3 10.7 24 24 24l112 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24L184 96c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-256 0c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-256 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faRectangleAd = {\n prefix: 'fas',\n iconName: 'rectangle-ad',\n icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328l-90.3 0-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280l42.3 0L208 237.7zM392 256a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24-43.9l0-28.1c0-13.3 10.7-24 24-24s24 10.7 24 24l0 96 0 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nconst faAd = faRectangleAd;\nconst faCircleArrowRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-right',\n icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM297 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L120 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l214.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L409 239c9.4 9.4 9.4 24.6 0 33.9L297 385z\"]\n};\nconst faArrowCircleRight = faCircleArrowRight;\nconst faFilterCircleXmark = {\n prefix: 'fas',\n iconName: 'filter-circle-xmark',\n icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0L472 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faLocust = {\n prefix: 'fas',\n iconName: 'locust',\n icon: [576, 512, [], \"e520\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4l-64.2 0-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L215.1 400l74.5 0-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L348 400l80.4 0 38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L483.6 400l12.4 0c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3l0-40C576 143 465 32 328 32l-16 0zm50.5 168l17.1 40L333 240l29.5-40zm-87.7 38.1l-1.4 1.9-48.2 0 32.7-41.5 16.9 39.5zM88.8 240C57.4 240 32 265.4 32 296.8c0 15.5 6.3 30 16.9 40.4L126.7 240l-37.9 0zM496 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8L32 224c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l256 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nconst faUnsorted = faSort;\nconst faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24l0 120 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-96-8 0C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432l33.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-88 0c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faList12 = faListOl;\nconst faListNumeric = faListOl;\nconst faPersonDressBurst = {\n prefix: 'fas',\n iconName: 'person-dress-burst',\n icon: [640, 512, [], \"e544\", \"M528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM390.2 384l17.8 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 16 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 17.8 0c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3l-11.6 0c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nconst faMoneyCheckDollar = {\n prefix: 'fas',\n iconName: 'money-check-dollar',\n icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM272 192l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16zM164 152l0 13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9l0 13.8c0 11-9 20-20 20s-20-9-20-20l0-14.6c-10.3-2.2-20-5.5-28.2-8.4c0 0 0 0 0 0s0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5l0-14c0-11 9-20 20-20s20 9 20 20z\"]\n};\nconst faMoneyCheckAlt = faMoneyCheckDollar;\nconst faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [448, 512, [], \"f5cb\", \"M368 80l32 0 0 32-32 0 0-32zM352 32c-17.7 0-32 14.3-32 32L128 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64l0 64c0 17.7 14.3 32 32 32l0 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l192 0c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-192c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zM96 160c17.7 0 32-14.3 32-32l192 0c0 17.7 14.3 32 32 32l0 192c-17.7 0-32 14.3-32 32l-192 0c0-17.7-14.3-32-32-32l0-192zM48 400l32 0 0 32-32 0 0-32zm320 32l0-32 32 0 0 32-32 0zM48 112l0-32 32 0 0 32-32 0z\"]\n};\nconst faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nconst faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64l192 0 48 0 16 0 256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64l-256 0-16 0-48 0L64 448c-35.3 0-64-28.7-64-64L0 128zm320 0l0 256 256 0 0-256-256 0zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1 73.6 0 8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276l-38 0 19-42.8zM448 164c11 0 20 9 20 20l0 4 44 0 16 0c11 0 20 9 20 20s-9 20-20 20l-2 0-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45L448 228l-72 0c-11 0-20-9-20-20s9-20 20-20l52 0 0-4c0-11 9-20 20-20z\"]\n};\nconst faFaceKissWinkHeart = {\n prefix: 'fas',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm194.8 57.6c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nconst faKissWinkHeart = faFaceKissWinkHeart;\nconst faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32l432 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9 320 448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nconst faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M80 160c0-35.3 28.7-64 64-64l32 0c35.3 0 64 28.7 64 64l0 3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74l0 1.4c0 17.7 14.3 32 32 32s32-14.3 32-32l0-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7l0-3.6c0-70.7-57.3-128-128-128l-32 0C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-19.3c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2l-64 0c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2L80 448c-8.8 0-16-7.2-16-16s7.2-16 16-16l8.2 0c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8 8.9 0c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6l0-43.6-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nconst faUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'up-down-left-right',\n icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 96-96 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 96 0 0 96-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-96 96 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 32-96 0 0-96 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nconst faArrowsAlt = faUpDownLeftRight;\nconst faHouseChimneyUser = {\n prefix: 'fas',\n iconName: 'house-chimney-user',\n icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185l0-121c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l320.4 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0zM288 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 400c0-44.2 35.8-80 80-80l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M163.9 136.9c-29.4-29.8-29.4-78.2 0-108s77-29.8 106.4 0l17.7 18 17.7-18c29.4-29.8 77-29.8 106.4 0s29.4 78.2 0 108L310.5 240.1c-6.2 6.3-14.3 9.4-22.5 9.4s-16.3-3.1-22.5-9.4L163.9 136.9zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2l56.8 0c26.5 0 48 21.5 48 48l0 56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2L384 464c0 26.5-21.5 48-48 48l-56.8 0c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2L48 512c-26.5 0-48-21.5-48-48L0 343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8L0 176c0-26.5 21.5-48 48-48l120.8 0c12.8 0 23.2-10.4 23.2-23.2z\"]\n};\nconst faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm48 160l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-352 0c-8.8 0-16-7.2-16-16zM376 160l80 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24z\"]\n};\nconst faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M288 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L288.1 86.9l-.1 .3 0 289.2zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L288.1 439.8 159.8 508.3C149 514 135.9 513.1 126 506s-14.9-19.3-12.9-31.3L137.8 329 33.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L195 150.3 259.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L438.5 329l24.6 145.7z\"]\n};\nconst faStarHalfAlt = faStarHalfStroke;\nconst faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nconst faWhiskeyGlass = {\n prefix: 'fas',\n iconName: 'whiskey-glass',\n icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5l253 0c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32L32 32zM87.7 224L69 96l374 0L424.3 224 87.7 224z\"]\n};\nconst faGlassWhiskey = faWhiskeyGlass;\nconst faBuildingCircleExclamation = {\n prefix: 'fas',\n iconName: 'building-circle-exclamation',\n icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faMagnifyingGlassChart = {\n prefix: 'fas',\n iconName: 'magnifying-glass-chart',\n icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64l0 96c0 13.3 10.7 24 24 24s24-10.7 24-24l0-96c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faArrowUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-right-from-square',\n icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faExternalLink = faArrowUpRightFromSquare;\nconst faCubesStacked = {\n prefix: 'fas',\n iconName: 'cubes-stacked',\n icon: [448, 512, [], \"e4e6\", \"M192 64l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zm64 160c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zM160 384l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0z\"]\n};\nconst faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l40.9 0 56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288l46 0L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288l40.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-19.6 0 50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224l-64 0L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224l-64 0L62.4 53.9zm78 234.1l26.6 0-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1-14 0zm96 64l26.6 0-15.2 45.6L345 288z\"]\n};\nconst faKrw = faWonSign;\nconst faWon = faWonSign;\nconst faVirusCovid = {\n prefix: 'fas',\n iconName: 'virus-covid',\n icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 33.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3l33.6 0 0-16c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16-33.6 0c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1l0 33.6 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-33.6c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280L48 280l0 16c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80c0-13.3 10.7-24 24-24s24 10.7 24 24l0 16 33.6 0c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1L232 48l-16 0c-13.3 0-24-10.7-24-24zm48 200a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm64 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faAustralSign = {\n prefix: 'fas',\n iconName: 'austral-sign',\n icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0L82.7 320 32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l24 0L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384l197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0L352 288l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-90.7 0L253.5 51.7zM256 224l-64 0 32-76.8L256 224zm-90.7 64l117.3 0L296 320l-144 0 13.3-32z\"]\n};\nconst faF = {\n prefix: 'fas',\n iconName: 'f',\n icon: [320, 512, [102], \"46\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 224 64 96l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32z\"]\n};\nconst faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5l88 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0-72 0s0 0 0 0c-16.6 0-32.7 1.9-48.3 5.4c-25.9 5.9-49.9 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nconst faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [128739], \"f018\", \"M256 32l-74.8 0c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480L256 480l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64 201.4 0c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32L320 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32l0 32 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288L0 432l0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 320 0 0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 0-144c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1l0-.2 0-32c0-17.7-14.3-32-32-32L192 0zM165.4 128l181.2 0c13.6 0 25.7 8.6 30.2 21.4L402.9 224l-293.8 0 26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faCab = faTaxi;\nconst faPersonCirclePlus = {\n prefix: 'fas',\n iconName: 'person-circle-plus',\n icon: [576, 512, [], \"e541\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n};\nconst faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240l0-223.4c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16L304 240zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4L256 288 412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288l238.4 0z\"]\n};\nconst faPieChart = faChartPie;\nconst faBoltLightning = {\n prefix: 'fas',\n iconName: 'bolt-lightning',\n icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nconst faSackXmark = {\n prefix: 'fas',\n iconName: 'sack-xmark',\n icon: [512, 512, [], \"e56a\", \"M192 96l128 0 47.4-71.1C374.5 14.2 366.9 0 354.1 0L157.9 0c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32l-128 0c-3.8 2.5-8.1 5.3-13 8.4c0 0 0 0 0 0s0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96l320 0c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nconst faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nconst faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM80 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2L80 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l8.2 0c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8 54.1 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nconst faFishFins = {\n prefix: 'fas',\n iconName: 'fish-fins',\n icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.6 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.6 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faBuildingFlag = {\n prefix: 'fas',\n iconName: 'building-flag',\n icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32l0 480 64 0 0-320 144 0c8.8 0 16-7.2 16-16l0-128c0-8.8-7.2-16-16-16L480 32c0-17.7-14.3-32-32-32z\"]\n};\nconst faFaceGrinBeam = {\n prefix: 'fas',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-170.5-84s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faGrinBeam = faFaceGrinBeam;\nconst faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32l209.1 0C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-113.1zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 113.1c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1c-9.7-5.6-17.8-13.7-23.4-23.4L119.4 96zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-40.6 64 0 0 40.6c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1c-9.7-5.6-17.8-13.7-23.4-23.4l-46 0c-5.4-15.4-14.6-28.9-26.5-39.6l0-24.4 72.6 0c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0z\"]\n};\nconst faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32l5.5 0c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48l13.7 0c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72L72 512c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72l13.7 0C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64l16.2 0c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nconst faLocationPin = {\n prefix: 'fas',\n iconName: 'location-pin',\n icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nconst faMapMarker = faLocationPin;\nconst faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112l0 16s0 0 0 0l0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2 0 128l0-16C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8l0 46.5-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8 576 400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400L0 262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2l0-46.5 273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nconst faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1L48 512c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0L444.2 0zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faHelmetSafety = {\n prefix: 'fas',\n iconName: 'helmet-safety',\n icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32l0 2.3 0 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288l0 64 512 0 0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1l0-99.6 0-2.3c0-17.7-14.3-32-32-32l-64 0zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6L16.6 384z\"]\n};\nconst faHardHat = faHelmetSafety;\nconst faHatHard = faHelmetSafety;\nconst faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320L48 320c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48l352 0c26.5 0 48 21.5 48 48s-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48z\"]\n};\nconst faCircleRight = {\n prefix: 'fas',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm395.3 11.3l-112 112c-4.6 4.6-11.5 5.9-17.4 3.5s-9.9-8.3-9.9-14.8l0-64-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-64c0-6.5 3.9-12.3 9.9-14.8s12.9-1.1 17.4 3.5l112 112c6.2 6.2 6.2 16.4 0 22.6z\"]\n};\nconst faArrowAltCircleRight = faCircleRight;\nconst faPlaneCircleCheck = {\n prefix: 'fas',\n iconName: 'plane-circle-check',\n icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faFaceRollingEyes = {\n prefix: 'fas',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 368l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nconst faMehRollingEyes = faFaceRollingEyes;\nconst faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32l337.1 0C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 273.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-337.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-273.1zM456.6 96L119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 273.1c9.7 5.6 17.8 13.7 23.4 23.4l337.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-273.1c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-96zM256 320l32 0c35.3 0 64-28.7 64-64l0-32 64 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-32z\"]\n};\nconst faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nconst faLineChart = faChartLine;\nconst faMaskVentilator = {\n prefix: 'fas',\n iconName: 'mask-ventilator',\n icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269l0-85c0-4.4 3.6-8 8-8l103.1 0zm26-48L56 128c-30.9 0-56 25.1-56 56l0 85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6l0-76.6c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8l0 76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269l0-85c0-30.9-25.1-56-56-56l-129.5 0C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48L584 176c4.4 0 8 3.6 8 8l0 85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320l0 192 64 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nconst faSignsPost = {\n prefix: 'fas',\n iconName: 'signs-post',\n icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32L64 32C46.3 32 32 46.3 32 64l0 64c0 17.7 14.3 32 32 32l377.4 0c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7L288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32l-160 0 0-32-64 0 0 32L70.6 224c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7L448 352c17.7 0 32-14.3 32-32l0-64zM288 480l0-96-64 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faMapSigns = faSignsPost;\nconst faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32l0 64c0 17.7 14.3 32 32 32l80 0 0 32-57 0c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-69.6c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160l-217 0 0-32 80 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L64 0zM96 48l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L96 80c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16zm48-168a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"]\n};\nconst faPersonCircleQuestion = {\n prefix: 'fas',\n iconName: 'person-circle-question',\n icon: [576, 512, [], \"e542\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6l0 6.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-6.4c0-5.3 4.3-9.6 9.6-9.6l40.5 0c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2l0 14.8c0 8.8 7.2 16 16 16s16-7.2 16-16l0-5.1 23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9l-40.5 0c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nconst faH = {\n prefix: 'fas',\n iconName: 'h',\n icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224 0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nconst faTarp = {\n prefix: 'fas',\n iconName: 'tarp',\n icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32l128 0 0-160zM448 448L576 320l-128 0 0 128zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faScrewdriverWrench = {\n prefix: 'fas',\n iconName: 'screwdriver-wrench',\n icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4l54.1 0 109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109 0-54.1c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7L352 176c-8.8 0-16-7.2-16-16l0-57.4c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faTools = faScrewdriverWrench;\nconst faArrowsToEye = {\n prefix: 'fas',\n iconName: 'arrows-to-eye',\n icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63L112 40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 96c0 13.3-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l38.1 0L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63 38.1 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24l0-96c0-13.3 10.7-24 24-24s24 10.7 24 24l0 38.1 63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63L40 400c-13.3 0-24-10.7-24-24s10.7-24 24-24l96 0c13.3 0 24 10.7 24 24l0 96c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-38.1L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63 0 38.1c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-96c0-13.3 10.7-24 24-24l96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-38.1 0 63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nconst faPlugCircleBolt = {\n prefix: 'fas',\n iconName: 'plug-circle-bolt',\n icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356l35.6 0c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380 376 380c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nconst faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nconst faMarsAndVenus = {\n prefix: 'fas',\n iconName: 'mars-and-venus',\n icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0L472 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59 146.6-136 158.2l0 25.8 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-24 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-25.8C155 370.6 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48s0 0 0 0s0 0 0 0s0 0 0 0zM352 224a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nconst faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80l-64 0z\"]\n};\nconst faHomeUser = faHouseUser;\nconst faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M49.7 32l90.8 0L114.9 160l-94 0C9.3 160 0 150.7 0 139.1c0-2.1 .3-4.1 .9-6.1L26.8 48.9C29.9 38.9 39.2 32 49.7 32zM272 160l-124.5 0L173.1 32 272 32l0 128zm32 0l0-128 98.9 0 14.4 72.1c-1.7 1.1-3.3 2.4-4.8 3.8c-18.4 16.4-35.4 34-50.5 52.1l-58 0zm209.9-23.7c-1.7 1.6-3.4 3.2-5 4.8C498 129.6 486.7 118.6 475 108c-7.6-6.9-17-10.8-26.6-11.8L435.5 32l90.8 0c10.5 0 19.8 6.9 22.9 16.9L575.1 133c.2 .7 .4 1.4 .5 2.1c-17.8-15-44.3-14.6-61.7 1.2zM325.2 210.7C304.3 244.5 288 282.9 288 318.1c0 49.3 18.6 95.2 49.6 129.9L128 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L44 288l-12 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l4 0-4-32 305.5 0c-4.4 6.2-8.5 12.5-12.3 18.7zm180.6-34.5L518 162.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C629 259.2 640 290.2 640 320.2C640 408.8 568.7 480 480 480c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2c5.7-5.2 13.1-7.7 20.3-7.5c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM544 368.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 295.1 416 331.6 416 368.2c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faHouseCrack = {\n prefix: 'fas',\n iconName: 'house-crack',\n icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l102.3 0-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64 122.1 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0z\"]\n};\nconst faMartiniGlassCitrus = {\n prefix: 'fas',\n iconName: 'martini-glass-citrus',\n icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48l-52.6 0C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128l368 0c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177L232 464l64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-88 0-88 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-118.1L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nconst faCocktail = faMartiniGlassCitrus;\nconst faFaceSurprise = {\n prefix: 'fas',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faSurprise = faFaceSurprise;\nconst faBottleWater = {\n prefix: 'fas',\n iconName: 'bottle-water',\n icon: [320, 512, [], \"e4c5\", \"M120 0l80 0c13.3 0 24 10.7 24 24l0 40L96 64l0-40c0-13.3 10.7-24 24-24zM32 167.5c0-19.5 10-37.6 26.6-47.9l15.8-9.9C88.7 100.7 105.2 96 122.1 96l75.8 0c16.9 0 33.4 4.7 47.7 13.7l15.8 9.9C278 129.9 288 148 288 167.5c0 17-7.5 32.3-19.4 42.6C280.6 221.7 288 238 288 256c0 19.1-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48s-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64c0-19.1 8.4-36.3 21.7-48C40.4 388.3 32 371.1 32 352s8.4-36.3 21.7-48C40.4 292.3 32 275.1 32 256c0-18 7.4-34.3 19.4-45.9C39.5 199.7 32 184.5 32 167.5zM96 240c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0c-8.8 0-16 7.2-16 16zm16 112c-8.8 0-16 7.2-16 16s7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0z\"]\n};\nconst faCirclePause = {\n prefix: 'fas',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faPauseCircle = faCirclePause;\nconst faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192L160 0c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM367.3 385.4L66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512l237.9 0c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nconst faAppleWhole = {\n prefix: 'fas',\n iconName: 'apple-whole',\n icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80l16 0c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80l-16 0zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nconst faAppleAlt = faAppleWhole;\nconst faKitchenSet = {\n prefix: 'fas',\n iconName: 'kitchen-set',\n icon: [576, 512, [], \"e51a\", \"M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112l71.8 0c8.8-9.8 21.6-16 35.8-16l104 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-104 0c-14.2 0-27-6.2-35.8-16l-71.8 0zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24l0 8 96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-240 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l96 0 0-8c0-13.3 10.7-24 24-24zM288 464l0-112 224 0 0 112c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48zM48 320l80 0 16 0 32 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-80c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0 32 16 0zM24 464l176 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faR = {\n prefix: 'fas',\n iconName: 'r',\n icon: [320, 512, [114], \"52\", \"M64 32C28.7 32 0 60.7 0 96L0 288 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 95.3 0L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144L64 32zM176 256L64 256 64 96l112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nconst faTemperatureQuarter = {\n prefix: 'fas',\n iconName: 'temperature-quarter',\n icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3l0-50.7c0-8.8 7.2-16 16-16s16 7.2 16 16l0 50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature1 = faTemperatureQuarter;\nconst faThermometer1 = faTemperatureQuarter;\nconst faThermometerQuarter = faTemperatureQuarter;\nconst faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6l0 242.9c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4L0 134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1 0-188L288 246.6l0 188z\"]\n};\nconst faBitcoinSign = {\n prefix: 'fas',\n iconName: 'bitcoin-sign',\n icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32l0 32 32 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-6.3 0C18.7 448 0 429.3 0 406.3L0 288l0-22.3L0 224 0 101.6C0 80.8 16.8 64 37.6 64L48 64l0-32zM64 224l112 0c26.5 0 48-21.5 48-48s-21.5-48-48-48L64 128l0 96zm112 64L64 288l0 96 144 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-32 0z\"]\n};\nconst faShieldDog = {\n prefix: 'fas',\n iconName: 'shield-dog',\n icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64l0-64 44.2 0c12.1 0 23.2 6.8 28.6 17.7L320 192l64 0c8.8 0 16 7.2 16 16l0 32c0 44.2-35.8 80-80 80l-48 0 0 50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160l40 0 8 0 0 32 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M122.2 0C91.7 0 65.5 21.5 59.5 51.4L8.3 307.4C.4 347 30.6 384 71 384l217 0 0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64 217 0c40.4 0 70.7-36.9 62.8-76.6l-51.2-256C574.5 21.5 548.3 0 517.8 0L122.2 0zM260.9 64l118.2 0 10.4 104-139 0L260.9 64zM202.3 168l-100.8 0L122.2 64l90.4 0L202.3 168zM91.8 216l105.6 0L187.1 320 71 320 91.8 216zm153.9 0l148.6 0 10.4 104-169.4 0 10.4-104zm196.8 0l105.6 0L569 320l-116 0L442.5 216zm96-48l-100.8 0L427.3 64l90.4 0 31.4-6.3L517.8 64l20.8 104z\"]\n};\nconst faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48C576 64.5 511.5 0 432 0S288 64.5 288 144l0 48L64 192c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-32 0 0-48z\"]\n};\nconst faElevator = {\n prefix: 'fas',\n iconName: 'elevator',\n icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9l128 0c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 128zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm192 0c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0L304 0c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nconst faMoneyBillTransfer = {\n prefix: 'fas',\n iconName: 'money-bill-transfer',\n icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64l241.9 0c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5 608 384c0 35.3-28.7 64-64 64l-241.9 0c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5 32 128c0-35.3 28.7-64 64-64zm64 64l-64 0 0 64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64l64 0 0-64zM320 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faMoneyBillTrendUp = {\n prefix: 'fas',\n iconName: 'money-bill-trend-up',\n icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2c0 0 0 .1 0 .1c0 0 0 0 0 0l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64 352 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0s0 0 0 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 304zM48 416l0 48 48 0c0-26.5-21.5-48-48-48zM96 304l-48 0 0 48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48l48 0 0-48zM416 304c0 26.5 21.5 48 48 48l0-48-48 0zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faHouseFloodWaterCircleArrowRight = {\n prefix: 'fas',\n iconName: 'house-flood-water-circle-arrow-right',\n icon: [640, 512, [], \"e50f\", \"M288 144A144 144 0 1 0 0 144a144 144 0 1 0 288 0zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160 80 160c-8.8 0-16-7.2-16-16s7.2-16 16-16l89.4 0L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4 16.6 0c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faSquarePollHorizontal = {\n prefix: 'fas',\n iconName: 'square-poll-horizontal',\n icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faPollH = faSquarePollHorizontal;\nconst faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z\"]\n};\nconst faBackwardFast = {\n prefix: 'fas',\n iconName: 'backward-fast',\n icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7 288 416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7 64 416c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64s32 14.3 32 32l0 118.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96l0 118.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96l0 320c0 12.4-7.2 23.7-18.4 29z\"]\n};\nconst faFastBackward = faBackwardFast;\nconst faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [9842, 9850, 9851], \"f1b8\", \"M174.7 45.1C192.2 17 223 0 256 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L283 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM429.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L320 448l0 32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 32 96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L36 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L182 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3L68.8 335.3c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0C42.7 448-.3 404.8 0 351.6c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nconst faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128l0 64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9l0-64c0-16.8-12.9-30.5-29.3-31.9zM336 144l0 16c0 53-43 96-96 96l-32 0c-53 0-96-43-96-96l0-16c0-26.5 21.5-48 48-48l128 0c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512l98.3 0 0-64c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 64 98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16l0 48 32 0 0-48c0-8.8-7.2-16-16-16zm96 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M514.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-73.8 0L630.8 469.1c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L238.1 161.3 197.8 20.4C194.9 10.2 202.6 0 213.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L397.7 192l116.6 0zM41.5 128.7l321 252.9L297.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L144 320l-43.2 57.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L64 256 32.5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-6.2 4-11.4 9.5-13.3z\"]\n};\nconst faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32l64 0 0 224c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 96C14.3 96 0 110.3 0 128z\"]\n};\nconst faBasketball = {\n prefix: 'fas',\n iconName: 'basketball',\n icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z\"]\n};\nconst faBasketballBall = faBasketball;\nconst faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faCircleUp = {\n prefix: 'fas',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm11.3-395.3l112 112c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9l-64 0 0 96c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-96-64 0c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l112-112c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faArrowAltCircleUp = faCircleUp;\nconst faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64L80 64l0 320 224 0 0-320z\"]\n};\nconst faMobileAlt = faMobileScreenButton;\nconst faVolumeHigh = {\n prefix: 'fas',\n iconName: 'volume-high',\n icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.2 640 165.8 640 256s-41.5 170.7-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nconst faVolumeUp = faVolumeHigh;\nconst faUsersRays = {\n prefix: 'fas',\n iconName: 'users-rays',\n icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6l56.1 0zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L80 128c-8.8 0-16-7.2-16-16s7.2-16 16-16l368 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM416 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8l0 128c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376 80 376c-8.8 0-16-7.2-16-16l0-48c0-8.8 7.2-16 16-16l33.4 0 35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nconst faBurger = {\n prefix: 'fas',\n iconName: 'burger',\n icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1L61.1 224zM144 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm240 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM272 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM16 304c0-26.5 21.5-48 48-48l384 0c26.5 0 48 21.5 48 48s-21.5 48-48 48L64 352c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16l416 0c8.8 0 16 7.2 16 16l0 16c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64l0-16z\"]\n};\nconst faHamburger = faBurger;\nconst faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7L336 192c-8.8 0-16-7.2-16-16l0-57.4c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBugs = {\n prefix: 'fas',\n iconName: 'bugs',\n icon: [576, 512, [], \"e4d0\", \"M164.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L128 71.7 101.9 14.1C96.4 2 82.1-3.3 70.1 2.1S52.7 21.9 58.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6l-17 0-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8S-2.1 111.7 .5 124.7l8 40C10.7 175.9 20.6 184 32 184l32 0 0 23.3-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C82.7 274.6 103.8 288 128 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L192 207.3l0-23.3 32 0c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L204.3 136l-17 0c-4.7-11.6-12.7-21.5-22.9-28.6zM496 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L432.8 250c-12.3 1-24.2 5.6-34.1 13.3L384 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L359 322.7 321.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L503.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L566.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nconst faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0s0 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9c0 0 0 0 0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s24.9-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1c0 0 0 0 0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.5-13.4-6.6-28-4.4-43.2c8.4-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nconst faRupee = faRupeeSign;\nconst faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm152 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6l-88 0-40 0-48 0-48 0c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nconst faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faQuestionCircle = faCircleQuestion;\nconst faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2l137.7 0c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48l-57.4 0c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448c-17.7 0-32 14.3-32 32z\"]\n};\nconst faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8 512 128l-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM96 171.6L40.6 128 0 128 0 352c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-180.4zM413.6 421.9L128 196.9 128 352l28.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128l0 224c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-224-96 0zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faBookBookmark = {\n prefix: 'fas',\n iconName: 'book-bookmark',\n icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0l96 0 0 190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5L352 0l32 0 32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32z\"]\n};\nconst faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [448, 512, [], \"f126\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 87.8c18.8-10.9 40.7-17.1 64-17.1l96 0c35.3 0 64-28.7 64-64l0-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 6.7c0 70.7-57.3 128-128 128l-96 0c-35.3 0-64 28.7-64 64l0 6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-6.7 0-198.7C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nconst faBridge = {\n prefix: 'fas',\n iconName: 'bridge',\n icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l40 0 0 64L0 160 0 288c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96s96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96l0-128-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM456 96l0 64-80 0 0-64 80 0zM328 96l0 64-80 0 0-64 80 0zM200 96l0 64-80 0 0-64 80 0z\"]\n};\nconst faPhoneFlip = {\n prefix: 'fas',\n iconName: 'phone-flip',\n icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nconst faPhoneAlt = faPhoneFlip;\nconst faTruckFront = {\n prefix: 'fas',\n iconName: 'truck-front',\n icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0L432 0c44.2 0 80 35.8 80 80l0 288c0 26.2-12.6 49.4-32 64l0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-256 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48C12.6 417.4 0 394.2 0 368L0 80zm129.9 72.2L112 224l288 0-17.9-71.8C378.5 138 365.7 128 351 128l-190 0c-14.7 0-27.5 10-31 24.2zM128 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [576, 512, [128008], \"f6be\", \"M320 192l17.1 0c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4l0 4 0 32 0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-140.8L280 448l56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-144 0c-53 0-96-43-96-96l0-223.5c0-16.1-12-29.8-28-31.8l-7.9-1c-17.5-2.2-30-18.2-27.8-35.7s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3l0 85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5s0 0 0 0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32c0 0 0 0 0 0c-3.7-4.1-7-8.5-9.9-13.2C357.3 164 352 146.6 352 128c0 0 0 0 0 0l0-96 0-20 0-1.3C352 4.8 356.7 .1 362.6 0l.2 0c3.3 0 6.4 1.6 8.4 4.2c0 0 0 0 0 .1L384 21.3l27.2 36.3L416 64l64 0 4.8-6.4L512 21.3 524.8 4.3c0 0 0 0 0-.1c2-2.6 5.1-4.2 8.4-4.2l.2 0C539.3 .1 544 4.8 544 10.7l0 1.3 0 20 0 96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM432 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faAnchorCircleExclamation = {\n prefix: 'fas',\n iconName: 'anchor-circle-exclamation',\n icon: [640, 512, [], \"e4ab\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faTruckField = {\n prefix: 'fas',\n iconName: 'truck-field',\n icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64l224 0c23.7 0 44.4 12.9 55.4 32l51.8 0c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2l4.2 0c35.3 0 64 28.7 64 64l0 32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-32c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l0-32zM384 224l85.9 0-42.7-96L384 128l0 96zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M512 96c0 50.2-59.1 125.1-84.6 155c-3.8 4.4-9.4 6.1-14.5 5L320 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96 43 96 96s-43 96-96 96l-276.4 0c8.7-9.9 19.3-22.6 30-36.8c6.3-8.4 12.8-17.6 19-27.2L416 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-53 0-96-43-96-96s43-96 96-96l39.8 0c-21-31.5-39.8-67.7-39.8-96c0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8C59.8 473 0 402.5 0 352c0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9c-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faClipboardQuestion = {\n prefix: 'fas',\n iconName: 'clipboard-question',\n icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faPanorama = {\n prefix: 'fas',\n iconName: 'panorama',\n icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6L0 434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6l0-356.7C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM96 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm272 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nconst faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-53-43-96-96-96L96 32zM224 96c26.5 0 48 21.5 48 48l0 56c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-56c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48l0 56c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-56zM96 128c26.5 0 48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24zM96 480l384 0c53 0 96-43 96-96l0-32c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48zm80-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48zm80-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nconst faFileCircleMinus = {\n prefix: 'fas',\n iconName: 'file-circle-minus',\n icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5L0 80C0 53.5 21.5 32 48 32l149.5 0c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [320, 512, [127863], \"f4e3\", \"M32.1 29.3C33.5 12.8 47.4 0 64 0L256 0c16.6 0 30.5 12.8 31.9 29.3l14 168.4c6 72-42.5 135.2-109.9 150.6l0 99.6 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-80 0-80 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0 0-99.6C60.6 333 12.1 269.8 18.1 197.8l14-168.4zm56 98.7l143.8 0-5.3-64L93.4 64l-5.3 64z\"]\n};\nconst faForwardFast = {\n prefix: 'fas',\n iconName: 'forward-fast',\n icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7 224 416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7 448 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 118.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96l0 118.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96L0 416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nconst faFastForward = faForwardFast;\nconst faFaceMehBlank = {\n prefix: 'fas',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMehBlank = faFaceMehBlank;\nconst faSquareParking = {\n prefix: 'fas',\n iconName: 'square-parking',\n icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM192 256l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0 64zm48 64l-48 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64 0-120c0-22.1 17.9-40 40-40l72 0c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nconst faParking = faSquareParking;\nconst faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [576, 512, [], \"e012\", \"M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6L464 416c26.5 0 48-21.5 48-48l0-112 32 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16l0-64zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\"]\n};\nconst faBarsProgress = {\n prefix: 'fas',\n iconName: 'bars-progress',\n icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160l-128 0 0-32 128 0 0 32zM48 64C21.5 64 0 85.5 0 112l0 64c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48L48 64zM448 352l0 32-256 0 0-32 256 0zM48 288c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48L48 288z\"]\n};\nconst faTasksAlt = faBarsProgress;\nconst faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32l0 12 96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12 0-12c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32l96 0 22.6-22.6c6-6 14.1-9.4 22.6-9.4l18.7 0 0-43.8 32-4 32 4 0 43.8 18.7 0c8.5 0 16.6 3.4 22.6 9.4L320 192l32 0c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s-14.3-32-32-32l-36.1 0c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48L32 320c-17.7 0-32-14.3-32-32l0-64zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nconst faCartFlatbed = {\n prefix: 'fas',\n iconName: 'cart-flatbed',\n icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l16 0c8.8 0 16 7.2 16 16l0 288c0 44.2 35.8 80 80 80l18.7 0c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l197.5 0c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l66.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-464 0c-8.8 0-16-7.2-16-16l0-288C128 35.8 92.2 0 48 0L32 0zM192 80l0 192c0 26.5 21.5 48 48 48l320 0c26.5 0 48-21.5 48-48l0-192c0-26.5-21.5-48-48-48l-96 0 0 144c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1l0-144-96 0c-26.5 0-48 21.5-48 48z\"]\n};\nconst faDollyFlatbed = faCartFlatbed;\nconst faBanSmoking = {\n prefix: 'fas',\n iconName: 'ban-smoking',\n icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32 82.7 0 0 32-50.7 0zm32 32l34.7 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-130.7 0L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48l32 0c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48l-32 0c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96L112 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l117.5 0z\"]\n};\nconst faSmokingBan = faBanSmoking;\nconst faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [576, 512, [], \"f120\", \"M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faMobileButton = {\n prefix: 'fas',\n iconName: 'mobile-button',\n icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zM192 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faHouseMedicalFlag = {\n prefix: 'fas',\n iconName: 'house-medical-flag',\n icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32l112 0c8.8 0 16 7.2 16 16l0 128c0 8.8-7.2 16-16 16l-112 0 0 320-64 0 0-320 0-160c0-17.7 14.3-32 32-32zM276.8 39.7L416 159l0 353 1 0-.2 0L96 512c-17.7 0-32-14.3-32-32l0-192-32 0c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faBasketShopping = {\n prefix: 'fas',\n iconName: 'basket-shopping',\n icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192 32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512L430 512c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32l-85.6 0L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192l-232.6 0L253.3 35.1zM192 304l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zm128 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faShoppingBasket = faBasketShopping;\nconst faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-163.2 0zM224 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm64 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faBusSimple = {\n prefix: 'fas',\n iconName: 'bus-simple',\n icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80l0 16 0 320c0 17.7-14.3 32-32 32l0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-192 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32L0 96 0 80C0 35.2 99.2 0 224 0zM64 128l0 128c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L96 96c-17.7 0-32 14.3-32 32zM80 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBusAlt = faBusSimple;\nconst faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"]\n};\nconst faFaceSadCry = {\n prefix: 'fas',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6L160 288c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 189.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8L384 288c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 205.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336l0 32c0 26.5 21.5 48 48 48s48-21.5 48-48l0-32c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nconst faSadCry = faFaceSadCry;\nconst faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9-82.2 0-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2 42.2 0zM304 184c0-13.3 10.7-24 24-24l56 0c53 0 96 43 96 96s-43 96-96 96l-56 0c-13.3 0-24-10.7-24-24l0-144zm48 24l0 96 32 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-32 0z\"]\n};\nconst faPersonMilitaryToPerson = {\n prefix: 'fas',\n iconName: 'person-military-to-person',\n icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9l111.4 0c8.8-.1 15.9-7.2 15.9-16L200 16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1l-122.9 0C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256l0 32c0 17.7 14.3 32 32 32l128 0c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5l0-32c0-35.3-28.7-64-64-64l-64 0c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-35.3-28.7-64-64-64l-64 0zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376l0 32-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0 0 32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 2.9 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nconst faFileShield = {\n prefix: 'fas',\n iconName: 'file-shield',\n icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 47-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8l0 187.8c68.2-33 91.5-99 95.4-149.7z\"]\n};\nconst faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7l388.6 0c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nconst faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nconst faTowerObservation = {\n prefix: 'fas',\n iconName: 'tower-observation',\n icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144l0 80c0 17.7-14.3 32-32 32l-4.9 0 32 192 68.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-95.5 0c-.4 0-.8 0-1.1 0l-254.8 0c-.4 0-.8 0-1.1 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 32-192-4.9 0c-17.7 0-32-14.3-32-32l0-80c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448l117 0zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256l-116.5 0zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16l160 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-160 0z\"]\n};\nconst faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M576 0c17.7 0 32 14.3 32 32l0 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM448 96c17.7 0 32 14.3 32 32l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352c0-17.7 14.3-32 32-32zM352 224l0 256c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32s32 14.3 32 32zM192 288c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32zM96 416l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faSignal5 = faSignal;\nconst faSignalPerfect = faSignal;\nconst faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [576, 512, [128653], \"f207\", \"M288 0C422.4 0 512 35.2 512 80l0 16 0 32c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32l0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-192 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32c0 0 0 0 0 0l0-32s0 0 0 0l0-16C64 35.2 153.6 0 288 0zM128 160l0 96c0 17.7 14.3 32 32 32l112 0 0-160-112 0c-17.7 0-32 14.3-32 32zM304 288l112 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-112 0 0 160zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16L208 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l160 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faHeartCircleXmark = {\n prefix: 'fas',\n iconName: 'heart-circle-xmark',\n icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faHouseChimney = {\n prefix: 'fas',\n iconName: 'house-chimney',\n icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185l0-121c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 64 0 24c0 22.1 17.9 40 40 40l24 0 32.5 0c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1l16 0c22.1 0 40-17.9 40-40l0-16.2c.3-2.6 .5-5.3 .5-8.1l-.7-160.2 32 0z\"]\n};\nconst faHomeLg = faHouseChimney;\nconst faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM96 96l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFaceFrown = {\n prefix: 'fas',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faFrown = faFaceFrown;\nconst faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32L0 192l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 50.7 0 128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0L32 0zM176 160L64 160l0-96 112 0c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nconst faShop = {\n prefix: 'fas',\n iconName: 'shop',\n icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192l566.3 0c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224l0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-80 0-160-64 0 0 160-192 0 0-160-64 0zm448 0l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256-64 0z\"]\n};\nconst faStoreAlt = faShop;\nconst faFloppyDisk = {\n prefix: 'fas',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-242.7c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32L64 32zm0 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 224c-17.7 0-32-14.3-32-32l0-64zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faSave = faFloppyDisk;\nconst faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9l-7.5 0 0 56.1 6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4L544 288l0 65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24l-40 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-160 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-160 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-40 0c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7L96 288l-39.4 0c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1 0-8.1 0-48-7.5 0c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128l-96 0-96 0 0 64 72 0 48 0 72 0 0-64zM160 288l0 64 136 0 24 0 24 0 136 0 0-64-136 0-24 0s0 0 0 0l-24 0-136 0z\"]\n};\nconst faScaleUnbalanced = {\n prefix: 'fas',\n iconName: 'scale-unbalanced',\n icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2L288 480c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-294.7c21-9.2 37.2-27 44.2-49l125.9-42zM439.6 288L512 163.8 584.4 288l-144.9 0zM512 384c62.9 0 115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L536.1 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L392.7 273.1c-5.7 9.8-9.3 21.1-6.7 32.1C396.8 350 449.1 384 512 384zM129.2 291.8L201.6 416 56.7 416l72.4-124.2zM3.2 433.1C14 478 66.3 512 129.2 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L153.2 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L9.9 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"]\n};\nconst faBalanceScaleLeft = faScaleUnbalanced;\nconst faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nconst faSortAsc = faSortUp;\nconst faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faCommenting = faCommentDots;\nconst faPlantWilt = {\n prefix: 'fas',\n iconName: 'plant-wilt',\n icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56l0 13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1l0-13C464 53.7 410.3 0 344 0S224 53.7 224 120l0 21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120l0 13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1l0-13c0-30.9 25.1-56 56-56s56 25.1 56 56l0 32 0 200c0 17.7 14.3 32 32 32s32-14.3 32-32l0-200 0-32 0-128z\"]\n};\nconst faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nconst faFaceGrinSquint = {\n prefix: 'fas',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faGrinSquint = faFaceGrinSquint;\nconst faHandHoldingDollar = {\n prefix: 'fas',\n iconName: 'hand-holding-dollar',\n icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24l0 10.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3s0 0 0 0c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8l0 10.6c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-11.4c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2L264 24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faHandHoldingUsd = faHandHoldingDollar;\nconst faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M423.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L196 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L103 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7c0 0 0 0 0 0l-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2C4.7 380.6-2.7 393.8 .9 406.6s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L215 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L371 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L439 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zM92.1 363.3s0 0 0 0L144 368l-51.9-4.7zM112 320a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM240 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40l0 148.2c8.5-7.6 19.7-12.2 32-12.2c20.6 0 38.2 13 45 31.2c8.8-9.3 21.2-15.2 35-15.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48l0 48 0 16 0 48c0 70.7-57.3 128-128 128l-16 0-64 0-.1 0-5.2 0c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7L128 40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96zm48-16c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96z\"]\n};\nconst faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128l0 192c0 80-128.9 128-288 128S0 432 0 352L0 160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nconst faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9c0 0 0 .1 0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nconst faHandsPraying = {\n prefix: 'fas',\n iconName: 'hands-praying',\n icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4l0 73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384l0 96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7L336 224c0-17.7 14.3-32 32-32s32 14.3 32 32l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-84.9c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8l0 84.9c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-17.7 14.3-32 32-32s32 14.3 32 32l0 118.2c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480l0-96c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2l0-73.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nconst faPrayingHands = faHandsPraying;\nconst faArrowRotateRight = {\n prefix: 'fas',\n iconName: 'arrow-rotate-right',\n icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160L336 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nconst faArrowRightRotate = faArrowRotateRight;\nconst faArrowRotateForward = faArrowRotateRight;\nconst faRedo = faArrowRotateRight;\nconst faWebAwesome = {\n prefix: 'fas',\n iconName: 'web-awesome',\n icon: [640, 512, [], \"e682\", \"M372.2 52c0 20.9-12.4 39-30.2 47.2L448 192l104.4-20.9c-5.3-7.7-8.4-17.1-8.4-27.1c0-26.5 21.5-48 48-48s48 21.5 48 48c0 26-20.6 47.1-46.4 48L481 442.3c-10.3 23-33.2 37.7-58.4 37.7l-205.2 0c-25.2 0-48-14.8-58.4-37.7L46.4 192C20.6 191.1 0 170 0 144c0-26.5 21.5-48 48-48s48 21.5 48 48c0 10.1-3.1 19.4-8.4 27.1L192 192 298.1 99.1c-17.7-8.3-30-26.3-30-47.1c0-28.7 23.3-52 52-52s52 23.3 52 52z\"]\n};\nconst faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM240 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nconst faLocationCrosshairs = {\n prefix: 'fas',\n iconName: 'location-crosshairs',\n icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32l0 34.7C368.4 80.1 431.9 143.6 445.3 224l34.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-34.7 0C431.9 368.4 368.4 431.9 288 445.3l0 34.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.7C143.6 431.9 80.1 368.4 66.7 288L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l34.7 0C80.1 143.6 143.6 80.1 224 66.7L224 32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faLocation = faLocationCrosshairs;\nconst faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L312 32zm88 48s0 0 0 0s0 0 0 0s0 0 0 0zM64 304a112 112 0 1 1 224 0A112 112 0 1 1 64 304zM368 480c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L504 32c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2 0 .2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7l0 21.3c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nconst faChildDress = {\n prefix: 'fas',\n iconName: 'child-dress',\n icon: [320, 512, [], \"e59c\", \"M224 64A64 64 0 1 0 96 64a64 64 0 1 0 128 0zM88 400l0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 16 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 17.8 0c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400L88 400z\"]\n};\nconst faUsersBetweenLines = {\n prefix: 'fas',\n iconName: 'users-between-lines',\n icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0L616 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 48C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24l592 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24zM83.2 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 320c0-35.3 28.7-64 64-64l96 0c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6L64 352c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6l96 0c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32l-82.4 0zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1l96 0c7.4 0 14.7 .8 21.6 2.4zm44-130.4a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM321.6 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32l0 124.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2L288 32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1l0-24.1C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4l0 7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89l0-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3l0 24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faFaceGrinTears = {\n prefix: 'fas',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8s0 0 0 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0zm160 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0c0 0 0 0 0 0z\"]\n};\nconst faGrinTears = faFaceGrinTears;\nconst faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nconst faCalendarXmark = {\n prefix: 'fas',\n iconName: 'calendar-xmark',\n icon: [448, 512, [\"calendar-times\"], \"f273\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM305 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nconst faCalendarTimes = faCalendarXmark;\nconst faChildReaching = {\n prefix: 'fas',\n iconName: 'child-reaching',\n icon: [384, 512, [], \"e59d\", \"M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4L112 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-258.4c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nconst faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320l0 64c0 35.3-28.7 64-64 64l-64 0 0 32c0 17.7-14.3 32-32 32L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM224 64c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C145.5 152.1 129 192 96 192c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C168.1 286.5 208 303 208 336c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C302.5 263.9 319 224 352 224c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C279.9 129.5 240 113 240 80c0-8.8-7.2-16-16-16zm-24 96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faUserGear = {\n prefix: 'fas',\n iconName: 'user-gear',\n icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304l91.4 0c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7l0 .9c0 9.2 2.7 18.5 7.9 26.3L29.7 512C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8l0 30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8l0-30.5c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9l0-30.5zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z\"]\n};\nconst faUserCog = faUserGear;\nconst faArrowUp19 = {\n prefix: 'fas',\n iconName: 'arrow-up-1-9',\n icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M450.7 38c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3 192 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-301.7L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nconst faSortNumericUp = faArrowUp19;\nconst faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64L416 0c35.3 0 64 28.7 64 64l0 384 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-112 0-288 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0L96 64zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMosquitoNet = {\n prefix: 'fas',\n iconName: 'mosquito-net',\n icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4l0-23.1L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5l0-22.6c0-14.9 10.1-27.3 23.8-31l0-43.3c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2l0 43.3c13.7 3.6 23.8 16.1 23.8 31l0 22.6 45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35 0 23.1 32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6l0 50c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16l0 16 48 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 16 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 48 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 48 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-48 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-48 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-48-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-48-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 16 48 0 0-16c0-8.8 7.2-16 16-16zm16 112l48 0 0-48-48 0 0 48zm0 80l48 0 0-48-48 0 0 48zM448 320l0 48 48 0 0-48-48 0zm0 80l0 48 48 0 0-48-48 0z\"]\n};\nconst faBridgeWater = {\n prefix: 'fas',\n iconName: 'bridge-water',\n icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64l512 0c17.7 0 32 14.3 32 32l0 35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6l0 124.9c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3c0 0 0 0 0 0l0-.5 0-128c0-53-43-96-96-96s-96 43-96 96l0 128 0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7l0-124.9C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6L0 96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160 64 0 0-160zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-448zM224 512c17.7 0 32-14.3 32-32l0-160-64 0 0 160c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32L320 0zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3l0-72.1 4.7 4.7c9 9 21.2 14.1 33.9 14.1l73.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-66.7 0-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6l0 55.7 0 .9L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 42.7L96 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-58.7c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nconst faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M64 128l0-32 128 0 0 128-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-128 128 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48c0-26.5-21.5-48-48-48L224 32 48 32C21.5 32 0 53.5 0 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 192 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 32-192 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nconst faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6l0 1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416l-207.1 0 11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416 64 416zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.3 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nconst faPersonDigging = {\n prefix: 'fas',\n iconName: 'person-digging',\n icon: [576, 512, [\"digging\"], \"f85e\", \"M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2l-256 0c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7l32 0 22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-74.9-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nconst faDigging = faPersonDigging;\nconst faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-7.2-14.3C307.4 6.8 296.3 0 284.2 0L163.8 0c-12.1 0-23.2 6.8-28.6 17.7zM416 128L32 128 53.2 467c1.6 25.3 22.6 45 47.9 45l245.8 0c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nconst faGaugeSimple = {\n prefix: 'fas',\n iconName: 'gauge-simple',\n icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3L280 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 204.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGaugeSimpleMed = faGaugeSimple;\nconst faTachometerAverage = faGaugeSimple;\nconst faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM208 112l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80L160 128c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48L104 240c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72l368 0c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72l-13.7 0c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64l-5.5 0c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3l167.4 0c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nconst faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 32 0 32 0 72zm-256 0c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 32 0 32 0 72z\"]\n};\nconst faQuoteRightAlt = faQuoteRight;\nconst faShirt = {\n prefix: 'fas',\n iconName: 'shirt',\n icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0l12.6 0c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7 480 448c0 35.3-28.7 64-64 64l-192 0c-35.3 0-64-28.7-64-64l0-250.3-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0l12.6 0z\"]\n};\nconst faTShirt = faShirt;\nconst faTshirt = faShirt;\nconst faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5l0 112.2c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7L0 413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3l0-119.1c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3l0-112.2c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2 0-89.2L392 121l0 89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4l0-100.5L256 323.2l0 95.9-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1 0-100.5L528 323.2l0 90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nconst faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [10135, 247], \"f529\", \"M272 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 320a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0z\"]\n};\nconst faTengeSign = {\n prefix: 'fas',\n iconName: 'tenge-sign',\n icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32l160 0 160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0 0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-224L32 224c-17.7 0-32-14.3-32-32z\"]\n};\nconst faTenge = faTengeSign;\nconst faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nconst faHandsHolding = {\n prefix: 'fas',\n iconName: 'hands-holding',\n icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104l0 56 0 64L0 325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7l66.7 0c26.5 0 48-21.5 48-48l0-78.9c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3c0 0 0 0 0 0l-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3L80 224l0-80 0-40zm480 0l0 40 0 80 0 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2c0 0 0 0 0 0l-25.3 25.3c-21 21-32.8 49.5-32.8 79.2l0 78.9c0 26.5 21.5 48 48 48l66.7 0c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9L640 224l0-64 0-56c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nconst faHandsClapping = {\n prefix: 'fas',\n iconName: 'hands-clapping',\n icon: [512, 512, [], \"e1a8\", \"M336 16l0 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4zM424.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nconst faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32l224 0c88.4 0 160 71.6 160 160l0 64L0 256l0-64zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160l192 0 96 0 32 0 64 0 32 0 0 32 0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48c0-17.7 14.3-32 32-32s32 14.3 32 32l0 48c0 44.2-35.8 80-80 80s-80-35.8-80-80l0-48-32 0 0 32 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64-192 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64 0-96 128 0z\"]\n};\nconst faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nconst faPersonCircleXmark = {\n prefix: 'fas',\n iconName: 'person-circle-xmark',\n icon: [576, 512, [], \"e543\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nconst faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32L32 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M201 10.3c14.3-7.8 31.6-7.8 46 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L201 10.3zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14l0 216c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L25 423.1C9.6 414.7 0 398.6 0 381L0 184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8l0 197c0 17.6-9.6 33.7-25 42.1L263.7 510c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8l0-216c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nconst faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-154.8c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128l8 0c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4L200 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM320 0c13.3 0 24 10.7 24 24l0 464c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-464c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480l0-96-17.8 0c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1L584 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nconst faJ = {\n prefix: 'fas',\n iconName: 'j',\n icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32l0 256c0 88.4-71.6 160-160 160S0 408.4 0 320l0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32c0 53 43 96 96 96s96-43 96-96l0-256c0-17.7 14.3-32 32-32z\"]\n};\nconst faUsersViewfinder = {\n prefix: 'fas',\n iconName: 'users-viewfinder',\n icon: [640, 512, [], \"e595\", \"M48 48l88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L32 0C14.3 0 0 14.3 0 32L0 136c0 13.3 10.7 24 24 24s24-10.7 24-24l0-88zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6l56.1 0zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80-32a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM504 48l88 0 0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104c0-17.7-14.3-32-32-32L504 0c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464l0-88c0-13.3-10.7-24-24-24s-24 10.7-24 24L0 480c0 17.7 14.3 32 32 32l104 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0c17.7 0 32-14.3 32-32l0-104c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 88-88 0z\"]\n};\nconst faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 288c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-96zM300.9 397.9L256 368l0-64 44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3l0 103.4c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nconst faUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'up-right-from-square',\n icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-128c0-17.7-14.3-32-32-32L352 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faExternalLinkAlt = faUpRightFromSquare;\nconst faTableCells = {\n prefix: 'fas',\n iconName: 'table-cells',\n icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 64l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0zM64 224l88 0 0 64-88 0 0-64zm232 0l0 64-88 0 0-64 88 0zm64 0l88 0 0 64-88 0 0-64zM152 352l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0z\"]\n};\nconst faTh = faTableCells;\nconst faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [512, 512, [], \"f1c1\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-208 0c-35.3 0-64 28.7-64 64l0 144-48 0c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z\"]\n};\nconst faBookBible = {\n prefix: 'fas',\n iconName: 'book-bible',\n icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l288 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L384 0 96 0zm0 384l256 0 0 64L96 448c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 112c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-112-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faBible = faBookBible;\nconst faO = {\n prefix: 'fas',\n iconName: 'o',\n icon: [448, 512, [111], \"4f\", \"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256A224 224 0 1 1 0 256a224 224 0 1 1 448 0z\"]\n};\nconst faSuitcaseMedical = {\n prefix: 'fas',\n iconName: 'suitcase-medical',\n icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40 0 32 0 352 256 0 0-352 0-32 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM96 96L64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l32 0L96 96zM416 480l32 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-32 0 0 384zM224 208c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faMedkit = faSuitcaseMedical;\nconst faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48l-59.9 0C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4l-59.9 0c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208l-12.4 0c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2L168 224c-22.1 0-40-17.9-40-40l0-14.4c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4l0 14.4c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nconst faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6l0-21.4c0-35.3-28.7-64-64-64l-64 0c-35.3 0-64 28.7-64 64l0 21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3l0-3.7c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24l0 3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6l0 .6c0 35.3 28.7 64 64 64l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l160 0 0-48 0-16c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6l0-16c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16l0 32 0 16 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-99.7c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1s0 0 0 0c0 123.7-100.3 224-224 224l-1.1 0L256 480l-.6 0C132 480 32 380 32 256.6l0-.6 0-39.2c-10.1-14.6-16-32.3-16-51.4L16 144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24l2.8 0C44.8 58.2 83.3 32 128 32l64 0c44.7 0 83.2 26.2 101.2 64l2.8 0c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4 0 21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-13.3 0-24 10.7-24 24l0 8 56.4 0c-15.2 17-24.4 39.4-24.4 64l-32 0c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faPersonDress = {\n prefix: 'fas',\n iconName: 'person-dress',\n icon: [320, 512, [\"female\"], \"f182\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM88 384l-17.8 0c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3l11.6 0c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1L232 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96z\"]\n};\nconst faFemale = faPersonDress;\nconst faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312l0 13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9l0 13.8c0 11-9 20-20 20s-20-9-20-20l0-14.6c-10.3-2.2-20-5.5-28.2-8.4c0 0 0 0 0 0s0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c0 0 0 0 0 0c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5l0-14c0-11 9-20 20-20s20 9 20 20z\"]\n};\nconst faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160l0 96 192 0 160 0 8.2 0c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7l0-32.7c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM320 352l-96 0c-17.7 0-32-14.3-32-32l0-32L0 288 0 416c0 35.3 28.7 64 64 64l296.2 0C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 288c8.8 0 16 7.2 16 16l0 48 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16z\"]\n};\nconst faBriefcaseClock = faBusinessTime;\nconst faTableCellsLarge = {\n prefix: 'fas',\n iconName: 'table-cells-large',\n icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96l0 128-160 0 0-128 160 0zm0 192l0 128-160 0 0-128 160 0zM224 224L64 224 64 96l160 0 0 128zM64 288l160 0 0 128L64 416l0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faThLarge = faTableCellsLarge;\nconst faBookTanakh = {\n prefix: 'fas',\n iconName: 'book-tanakh',\n icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96l0 320c0 53-43 96-96 96L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c-17.7 0-32-14.3-32-32L0 32C0 14.3 14.3 0 32 0L64 0 352 0zm0 384L96 384l0 64 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24-27.7 0 13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24l55.4 0 27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48 55.4 0c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24l-55.4 0L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48L111 112c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48 55.4 0 27.7 48-27.7 48-55.4 0-27.7-48zm0-48l-13.9 24-13.9-24 27.7 0zm41.6-24L208 88l13.9 24-27.7 0zm69.3 24l27.7 0-13.9 24-13.9-24zm13.9 72l13.9 24-27.7 0 13.9-24zm-55.4 48L208 280l-13.9-24 27.7 0z\"]\n};\nconst faTanakh = faBookTanakh;\nconst faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nconst faVolumeControlPhone = faPhoneVolume;\nconst faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M152.7 135.9l-10.4 57.2c6.8-.7 13.6-1.1 20.5-1.1l10.7 0c39.4 0 77.8 12.1 110.1 34.7L562.4 421.8l35.1 24.6c24.4-6 42.5-28.1 42.5-54.4c0-75.8-94.7-126.6-134.6-144.7L474 83.9C468.2 53.8 441.8 32 411.1 32l-2.7 0c-5.6 0-11.1 .7-16.5 2.2L199.2 85.5c-23.9 6.4-42 26-46.5 50.4zM0 384c0 35.3 28.7 64 64 64l480 0L265.3 252.9c-26.9-18.8-58.9-28.9-91.8-28.9l-10.7 0c-60.6 0-116 34.2-143.1 88.4L13.5 325C4.6 342.7 0 362.3 0 382.2L0 384z\"]\n};\nconst faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L96 448c-8.8 0-16-7.2-16-16z\"]\n};\nconst faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [320, 512, [], \"f1ae\", \"M96 64a64 64 0 1 1 128 0A64 64 0 1 1 96 64zm48 320l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192.2L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8 240 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-32 0z\"]\n};\nconst faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [320, 512, [8356], \"f195\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4L48 192l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 32-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l14 0c-2.2 10.5-6.1 20.6-11.7 29.9L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L88.5 416l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9L224 352c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-32 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-31.6z\"]\n};\nconst faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nconst faPlaneLock = {\n prefix: 'fas',\n iconName: 'plane-lock',\n icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 84.6 101.8 58.2C418 247.6 416 259.6 416 272l0 24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1l0 70.9 57.6 43.2c4 3 6.4 7.8 6.4 12.8l0 24 0 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14l0-42c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8l0-65.5c0-5.7 3.1-11 8.1-13.9L192 178.3l0-84.6zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [448, 512, [127991], \"f02b\", \"M0 80L0 229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7L48 32C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nconst faCakeCandles = {\n prefix: 'fas',\n iconName: 'cake-candles',\n icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2L56 72c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c-35.3 0-64 28.7-64 64l0 71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4c0 0 0 0 0 0s0 0 0 0l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0l.1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9l0-71c0-35.3-28.7-64-64-64l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4L0 480c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32l0-85.4z\"]\n};\nconst faBirthdayCake = faCakeCandles;\nconst faCake = faCakeCandles;\nconst faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nconst faAnglesUp = {\n prefix: 'fas',\n iconName: 'angles-up',\n icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nconst faAngleDoubleUp = faAnglesUp;\nconst faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [128206], \"f0c6\", \"M364.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nconst faArrowRightToCity = {\n prefix: 'fas',\n iconName: 'arrow-right-to-city',\n icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 144 40 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 24 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48l-160 0-96 0c-26.5 0-48-21.5-48-48l0-416zm64 32l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 272l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l114.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nconst faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [127895], \"f4d6\", \"M333.2 322.8s0 0 0 0l-133.9-146s0 0 0 0L146 118.6c7.8-5.1 37-22.6 78-22.6s70.2 17.4 78 22.6L245.7 180l85.6 93.4 27.4-29.8c16.3-17.7 25.3-40.9 25.3-65l0-29.5c0-19-5.6-37.5-16.1-53.3L327.8 35.6C312.9 13.4 287.9 0 261.2 0l-76 0c-25.8 0-50.1 12.5-65.1 33.5L81.9 87C70.3 103.2 64 122.8 64 142.8L64 164c0 23.2 8.4 45.6 23.6 63.1l56 64.2s0 0 0 0l83.3 95.6s0 0 0 0l91.8 105.3c10 11.5 26.8 14.3 40 6.8l54.5-31.1c17.8-10.2 21.6-34.3 7.7-49.4l-87.7-95.7zM205.2 410.6l-83.3-95.6L27.1 418.5c-13.9 15.1-10.1 39.2 7.7 49.4l55.1 31.5c13 7.4 29.3 4.9 39.4-6.1l75.9-82.6z\"]\n};\nconst faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32l0 132.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2 0-45.5C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4l0 7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398l0-73 90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1l0-.4-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58 0 73.4c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89l0-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3l0 45.5 9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5L288 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faArrowUp91 = {\n prefix: 'fas',\n iconName: 'arrow-up-9-1',\n icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3 192 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-301.7L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM450.7 294c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zm-5-145.1A32 32 0 1 0 418.3 91a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nconst faSortNumericUpAlt = faArrowUp91;\nconst faLitecoinSign = {\n prefix: 'fas',\n iconName: 'litecoin-sign',\n icon: [384, 512, [], \"e1d3\", \"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 149.6L23.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L64 280.1 64 448c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0 0-154.1 136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L128 195.3 128 64z\"]\n};\nconst faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nconst faCircleNodes = {\n prefix: 'fas',\n iconName: 'circle-nodes',\n icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nconst faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16L240 192l0 128-32 0c-7 0-13.7 1.5-19.7 4.2L68.2 192l28.3 0c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192l6 0L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7l0 96c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-96c0-7.8-1.9-15.2-5.2-21.7L487.1 192l6 0c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16l28.3 0L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2l-32 0 0-128 111.5 0z\"]\n};\nconst faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3L0 176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nconst faTruckFieldUn = {\n prefix: 'fas',\n iconName: 'truck-field-un',\n icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96l0 32c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-32c0-35.3-28.7-64-64-64l-4.2 0c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38l-51.8 0C364.4 44.9 343.7 32 320 32L96 32zm288 96l43.2 0 42.7 96L384 224l0-96zM112 384a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM253.3 135.1l34.7 52 0-43.2c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0L64 0 320 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 11c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1l0 11c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-11c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75l0-11C14.3 64 0 49.7 0 32zM96 64l0 11c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9l0-11L96 64zm0 384l192 0 0-11c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9l0 11z\"]\n};\nconst faHourglassEmpty = faHourglass;\nconst faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.8 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9L55.9 480C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5l18.3 24.4c6.4 8.5 19.2 8.5 25.6 0l25.6-34.1c6-8.1 15.5-12.8 25.6-12.8l49 0z\"]\n};\nconst faUserDoctor = {\n prefix: 'fas',\n iconName: 'user-doctor',\n icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1l0 50.8c27.6 7.1 48 32.2 48 62l0 40c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l0-24c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 24c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-40c0-29.8 20.4-54.9 48-62l0-57.1c-6-.6-12.1-.9-18.3-.9l-91.4 0c-6.2 0-12.3 .3-18.3 .9l0 65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7l0-59.1zM144 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faUserMd = faUserDoctor;\nconst faCircleInfo = {\n prefix: 'fas',\n iconName: 'circle-info',\n icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faInfoCircle = faCircleInfo;\nconst faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96l44.7 0c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40l44.7 0c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96 64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0L362.9 64.8C356.4 45.2 338.1 32 317.4 32L194.6 32c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faCameraAlt = faCamera;\nconst faSquareVirus = {\n prefix: 'fas',\n iconName: 'square-virus',\n icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm88 32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faCarOn = {\n prefix: 'fas',\n iconName: 'car-on',\n icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80zM185.8 224l140.3 0c6.8 0 12.8 4.3 15.1 10.6L360.3 288l-208.6 0 19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344l0 40 0 64 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 256 0 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 0-64 0-40c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160l-140.3 0c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nconst faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l0 160c0 53 43 96 96 96l0 32 64 0 0-32 192 0 0 32 64 0 0-32c53 0 96-43 96-96l0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0-32 0c-17.7 0-32 14.3-32 32l0 41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7l-9 0L32 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 8c0 13.3-10.7 24-24 24L64 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l488 0c48.6 0 88-39.4 88-88l0-8z\"]\n};\nconst faArrowDown19 = {\n prefix: 'fas',\n iconName: 'arrow-down-1-9',\n icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l48 0 48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7 192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 301.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nconst faSortNumericAsc = faArrowDown19;\nconst faSortNumericDown = faArrowDown19;\nconst faHandHoldingDroplet = {\n prefix: 'fas',\n iconName: 'hand-holding-droplet',\n icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3l0 1.7c0 53-43 96-96 96s-96-43-96-96l0-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faHandHoldingWater = faHandHoldingDroplet;\nconst faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nconst faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M0 96a64 64 0 1 1 128 0A64 64 0 1 1 0 96zM224 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM80 416a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 96a64 64 0 1 1 128 0A64 64 0 1 1 352 96zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0A64 64 0 1 1 512 96zm64 176a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM416 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nconst faPrescriptionBottleMedical = {\n prefix: 'fas',\n iconName: 'prescription-bottle-medical',\n icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zm32 96l320 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zM160 240l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nconst faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8L32 192c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9l0-.9 4.4-1.6L240.1 4.2zM64 224l64 0 0 192 40 0 0-192 64 0 0 192 48 0 0-192 64 0 0 192 40 0 0-192 64 0 0 196.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 224z\"]\n};\nconst faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48L0 368c0 26.5 21.5 48 48 48l16 0c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64 0-32 0-18.7c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7L416 96l0-48c0-26.5-21.5-48-48-48L48 0zM416 160l50.7 0L544 237.3l0 18.7-128 0 0-96zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32l0 10.4c93.7 13.9 167.7 88 181.6 181.6l10.4 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-10.4 0c-13.9 93.7-88 167.7-181.6 181.6l0 10.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-10.4C130.3 455.7 56.3 381.7 42.4 288L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l10.4 0C56.3 130.3 130.3 56.3 224 42.4L224 32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6l0-20.6c0-17.7 14.3-32 32-32s32 14.3 32 32l0 20.6c58.3-12.5 104.1-58.4 116.6-116.6L384 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l20.6 0C392.1 165.7 346.3 119.9 288 107.4l0 20.6c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-20.6C165.7 119.9 119.9 165.7 107.4 224l20.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-20.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faPersonCane = {\n prefix: 'fas',\n iconName: 'person-cane',\n icon: [448, 512, [], \"e53c\", \"M272 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7l-35.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-244.7zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-30.9-25.1-56-56-56s-56 25.1-56 56l0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8z\"]\n};\nconst faTent = {\n prefix: 'fas',\n iconName: 'tent',\n icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7l-80 0-28.2 0c-12.1 0-23.2-6.8-28.6-17.7L306.7 293.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9L288 480c0 17.7-14.3 32-32 32l-16 0L32 512c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nconst faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3L192 464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512L48 512c-26.5 0-48-21.5-48-48L0 270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6L64 128l0-73.7L64 48C64 21.5 85.5 0 112 0l4.5 0c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0L336 0c26.5 0 48 21.5 48 48l0 6.3 0 73.7 0 17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6L448 464c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-168.2c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280l0 8 0 32c0 8.8 7.2 16 16 16l32 0 8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [448, 512, [], \"f560\", \"M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nconst faArrowDownAZ = {\n prefix: 'fas',\n iconName: 'arrow-down-a-z',\n icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7 128 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352 352 352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224l-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176l40.4 0L416 135.6 395.8 176z\"]\n};\nconst faSortAlphaAsc = faArrowDownAZ;\nconst faSortAlphaDown = faArrowDownAZ;\nconst faMoneyBillWheat = {\n prefix: 'fas',\n iconName: 'money-bill-wheat',\n icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L56 64C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 136c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 304zM48 416l0 48 48 0c0-26.5-21.5-48-48-48zM96 304l-48 0 0 48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48l48 0 0-48zM416 304c0 26.5 21.5 48 48 48l0-48-48 0zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArrowRotateLeft = {\n prefix: 'fas',\n iconName: 'arrow-rotate-left',\n icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160l50.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L48 224c-17.7 0-32-14.3-32-32L16 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nconst faArrowLeftRotate = faArrowRotateLeft;\nconst faArrowRotateBack = faArrowRotateLeft;\nconst faArrowRotateBackward = faArrowRotateLeft;\nconst faUndo = faArrowRotateLeft;\nconst faHardDrive = {\n prefix: 'fas',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 184.4c-17-15.2-39.4-24.4-64-24.4L64 256c-24.6 0-47 9.2-64 24.4L0 96zM64 288l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faHdd = faHardDrive;\nconst faFaceGrinSquintTears = {\n prefix: 'fas',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-16.3 4.4-34.1 7.5-46.3 9.3c-1.6 .2-3.1 .5-4.6 .6c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.3-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nconst faGrinSquintTears = faFaceGrinSquintTears;\nconst faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M96 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 160 0 64 0 160c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64-32 0c-17.7 0-32-14.3-32-32l0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l32 0 0-64zm448 0l0 64 32 0c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64c0 17.7-14.3 32-32 32l-32 0 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-160 0-64 0-160c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32zM416 224l0 64-192 0 0-64 192 0z\"]\n};\nconst faRectangleList = {\n prefix: 'fas',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0z\"]\n};\nconst faListAlt = faRectangleList;\nconst faTarpDroplet = {\n prefix: 'fas',\n iconName: 'tarp-droplet',\n icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128l133.5 0c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64L512 128c35.3 0 64 28.7 64 64l0 160-128 0c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64zM448 512l0-128 128 0L448 512zM96 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faHouseMedicalCircleCheck = {\n prefix: 'fas',\n iconName: 'house-medical-circle-check',\n icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faPersonSkiingNordic = {\n prefix: 'fas',\n iconName: 'person-skiing-nordic',\n icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464l-88.5 0 41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464l-32.4 0 54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464l-43 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l135.3 0c.5 0 .9 0 1.4 0l158.6 0c.5 0 1 0 1.4 0L504 512c39.8 0 72-32.2 72-72l0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8c0 13.3-10.7 24-24 24l-69.4 0 27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32l-21.3 0c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464l-44.4 0 21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288l2.7 0z\"]\n};\nconst faSkiingNordic = faPersonSkiingNordic;\nconst faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M96 32l0 32L48 64C21.5 64 0 85.5 0 112l0 48 448 0 0-48c0-26.5-21.5-48-48-48l-48 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L160 64l0-32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192L0 192 0 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-272zM224 248c13.3 0 24 10.7 24 24l0 56 56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0 0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56-56 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l56 0 0-56c0-13.3 10.7-24 24-24z\"]\n};\nconst faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0l40.1 0c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14.1-9.3-22.5zM32 448l576 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCircleLeft = {\n prefix: 'fas',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM116.7 244.7l112-112c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8l0 64 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 64c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-112-112c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faArrowAltCircleLeft = faCircleLeft;\nconst faTrainSubway = {\n prefix: 'fas',\n iconName: 'train-subway',\n icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96L0 352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512l39.7 0c8.5 0 16.6-3.4 22.6-9.4L160 448l128 0 54.6 54.6c6 6 14.1 9.4 22.6 9.4l39.7 0c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9l0-256c0-53-43-96-96-96L96 0zM64 128c0-17.7 14.3-32 32-32l80 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32-14.3-32-32l0-96zM272 96l80 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zM64 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSubway = faTrainSubway;\nconst faChartGantt = {\n prefix: 'fas',\n iconName: 'chart-gantt',\n icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32zm96 64l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faIndianRupeeSign = {\n prefix: 'fas',\n iconName: 'indian-rupee-sign',\n icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32l64 0 16 0 176 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-56.2 0c9.6 14.4 16.7 30.6 20.7 48l35.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-35.6 0c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256l80 0c32.8 0 61-19.7 73.3-48L32 208c-17.7 0-32-14.3-32-32s14.3-32 32-32l153.3 0C173 115.7 144.8 96 112 96L96 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faIndianRupee = faIndianRupeeSign;\nconst faInr = faIndianRupeeSign;\nconst faCropSimple = {\n prefix: 'fas',\n iconName: 'crop-simple',\n icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l224 0 0-64-224 0 0-352zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-256c0-35.3-28.7-64-64-64L160 64l0 64 224 0 0 352z\"]\n};\nconst faCropAlt = faCropSimple;\nconst faMoneyBill1 = {\n prefix: 'fas',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm64 320l-64 0 0-64c35.3 0 64 28.7 64 64zM64 192l0-64 64 0c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm76-48c0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l24 0 24 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n};\nconst faMoneyBillAlt = faMoneyBill1;\nconst faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z\"]\n};\nconst faLongArrowAltLeft = faLeftLong;\nconst faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0l-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5l118.5 0c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32L64 480c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32l320 0c0-17.7 14.3-32 32-32zM338.6 384l-229.2 0c-10.1 10.6-18.6 21.3-25.5 32l280.2 0c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128l229.2 0c10.1-10.7 18.6-21.3 25.5-32L83.9 96c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5l-118.5 0z\"]\n};\nconst faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1l11.5 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-11.5 0c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM402 412.7L144.7 210c-9.5 8.5-22.2 14-37.2 14L96 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l11.5 0c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6l0 11.5c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11.5c0-31.2 23.6-52.7 50-55.7z\"]\n};\nconst faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faSubtract = faMinus;\nconst faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 16L96 32c-8.8 0-16 7.2-16 16s7.2 16 16 16l16 0 0 32L60.2 96C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208 72 208c-13.3 0-24 10.7-24 24s10.7 24 24 24l4 0L60 384l136 0L180 256l4 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-1.8 0 32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2L144 96l0-32 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24l208 0c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416 48 416zm288 0l-43.2 57.6c-3.1 4.2-4.8 9.2-4.8 14.4c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L464 416l-128 0zM304 208l0 51.9c0 7.8 2.8 15.3 8 21.1L339.2 312 337 384l125.5 0-3.3-72 28.3-30.8c5.4-5.9 8.5-13.6 8.5-21.7l0-51.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 16-24 0 0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 16-24 0 0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16zm80 96c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32-32 0 0-32z\"]\n};\nconst faArrowLeftLong = {\n prefix: 'fas',\n iconName: 'arrow-left-long',\n icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n};\nconst faLongArrowLeft = faArrowLeftLong;\nconst faPlugCircleCheck = {\n prefix: 'fas',\n iconName: 'plug-circle-check',\n icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64l0 48c0 17.7 14.3 32 32 32l1.8 0 11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5l38.7 0c16.3 0 30-12.3 31.8-28.5L318.2 304l1.8 0c17.7 0 32-14.3 32-32l0-48c0-35.3-28.7-64-64-64l-64 0zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nconst faFrancSign = {\n prefix: 'fas',\n iconName: 'franc-sign',\n icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64l0 160 0 96-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-64 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-96 176 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160 64 160c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l67.8 0L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448l0-384z\"]\n};\nconst faHandsAslInterpreting = {\n prefix: 'fas',\n iconName: 'hands-asl-interpreting',\n icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7L0 256c0 70.7 57.3 128 128 128l72 0 8 0 0-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2l0-9.3c0-70.7-57.3-128-128-128l-72 0-8 0 0 .3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nconst faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nconst faAslInterpreting = faHandsAslInterpreting;\nconst faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nconst faGear = {\n prefix: 'fas',\n iconName: 'gear',\n icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nconst faCog = faGear;\nconst faDropletSlash = {\n prefix: 'fas',\n iconName: 'droplet-slash',\n icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.2 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0l-1.8 0c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faTintSlash = faDropletSlash;\nconst faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5c0 0 0 0 0 0s0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4l-356.4 0c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6c0 0 0 0 0 0s0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512l0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-48 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l416 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-48 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-64 0 0-58c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454l0 58-64 0zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126l0 2L0 128l0-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160l160 0 0 136.6c-19.1 11.1-32 31.7-32 55.4l0 128c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2l-64 0c-26.5 0-48-21.5-48-48L0 176l0-16z\"]\n};\nconst faMosquito = {\n prefix: 'fas',\n iconName: 'mosquito',\n icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nconst faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344l42.3 0-21.1-34.5zM371.4 256l-54-88-122.8 0-54 88 54 88 122.8 0 54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4l-109.8 0-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400 53.4 400C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112l109.8 0 56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112l109.8 0c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168l-42.3 0zM283 112L256 68l-27 44 54 0zM128.9 168l-42.3 0 21.1 34.5L128.9 168zM107.8 309.5L86.6 344l42.3 0-21.1-34.5zM229 400l27 44 27-44-54 0z\"]\n};\nconst faPersonMilitaryRifle = {\n prefix: 'fas',\n iconName: 'person-military-rifle',\n icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4L352 48c0 8.8-7.2 16-16 16L185 64c-13.8 0-25-11.2-25-25zm17.6 57l156.8 0c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7 352 480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9l50.4 0c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512l-128 0c-17.7 0-32-14.3-32-32l0-110.3-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M0 24C0 10.7 10.7 0 24 0L69.5 0c22 0 41.5 12.8 50.6 32l411 0c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3l-288.5 0 5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5L488 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-288.3 0c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5L24 48C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faShoppingCart = faCartShopping;\nconst faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32l56 0 48 0 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 304c0 44.2-35.8 80-80 80s-80-35.8-80-80L32 96C14.3 96 0 81.7 0 64zM136 96L88 96l0 160 48 0 0-160zM288 64c0-17.7 14.3-32 32-32l56 0 48 0 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 304c0 44.2-35.8 80-80 80s-80-35.8-80-80l0-304c-17.7 0-32-14.3-32-32zM424 96l-48 0 0 160 48 0 0-160z\"]\n};\nconst faPlugCirclePlus = {\n prefix: 'fas',\n iconName: 'plug-circle-plus',\n icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M224 109.3l0 108.3L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2L160 512l96 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 96 0 0-228.8c0-16.9-8.8-32.5-23.3-41.2L416 217.6l0-108.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4L0 464c0 26.5 21.5 48 48 48l80 0 0-238.4L24.9 330.3zM592 512c26.5 0 48-21.5 48-48l0-91.6c0-17.5-9.5-33.6-24.9-42.1L512 273.6 512 512l80 0z\"]\n};\nconst faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z\"]\n};\nconst faArrowTurnUp = {\n prefix: 'fas',\n iconName: 'arrow-turn-up',\n icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nconst faLevelUp = faArrowTurnUp;\nconst faU = {\n prefix: 'fas',\n iconName: 'u',\n icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32l0 224c0 70.7 57.3 128 128 128s128-57.3 128-128l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32l0 224c0 106-86 192-192 192S0 394 0 288L0 64C0 46.3 14.3 32 32 32z\"]\n};\nconst faSquareRootVariable = {\n prefix: 'fas',\n iconName: 'square-root-variable',\n icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1l200 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L344 96 238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l45.6 0c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faSquareRootAlt = faSquareRootVariable;\nconst faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faClockFour = faClock;\nconst faBackwardStep = {\n prefix: 'fas',\n iconName: 'backward-step',\n icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-320c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241 64 96c0-17.7-14.3-32-32-32S0 78.3 0 96L0 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-145 11.5 9.6 192 160z\"]\n};\nconst faStepBackward = faBackwardStep;\nconst faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 64-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 224 0 224 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-64 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-224 0L96 320l-64 0zm96 64l160 0 0 64-160 0 0-64zm224 0l160 0 0 64-160 0 0-64z\"]\n};\nconst faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M192 96l0 12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12 0-12c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l100.1 0c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48l36.1 0c17.7 0 32 14.3 32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160l-32 0-22.6-22.6c-6-6-14.1-9.4-22.6-9.4L256 224l0-43.8-32-4-32 4 0 43.8-18.7 0c-8.5 0-16.6 3.4-22.6 9.4L128 256l-96 0z\"]\n};\nconst faBaseballBatBall = {\n prefix: 'fas',\n iconName: 'baseball-bat-ball',\n icon: [512, 512, [], \"f432\", \"M424 0c-12.4 0-24.2 4.9-33 13.7L233.5 171.2c-10.5 10.5-19.8 22.1-27.7 34.6L132.7 321.6c-7.3 11.5-15.8 22.2-25.5 31.9L69.9 390.7l51.3 51.3 37.3-37.3c9.6-9.6 20.3-18.2 31.9-25.5l115.8-73.1c12.5-7.9 24.1-17.2 34.6-27.7L498.3 121c8.7-8.7 13.7-20.6 13.7-33s-4.9-24.2-13.7-33L457 13.7C448.2 4.9 436.4 0 424 0zm88 432a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM15 399c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L49 399c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nconst faS = {\n prefix: 'fas',\n iconName: 's',\n icon: [320, 512, [115], \"53\", \"M99.1 105.4C79 114 68.2 127.2 65.2 144.8c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0s0 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3C5.1 440.8-3.9 422.7 1.6 405.9s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5L2.1 133.9C9.4 91.4 37.4 62.2 73.9 46.6c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.2 22.7c-11.2-3-48.1-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nconst faTimeline = {\n prefix: 'fas',\n iconName: 'timeline',\n icon: [640, 512, [], \"e29c\", \"M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3L96 224l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0 0 54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-54.7 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-54.7c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3l0 54.7-320 0 0-54.7zM488 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM320 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm16 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-32zM272 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM368 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM464 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n};\nconst faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nconst faHouseChimneyMedical = {\n prefix: 'fas',\n iconName: 'house-chimney-medical',\n icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0z\"]\n};\nconst faClinicMedical = faHouseChimneyMedical;\nconst faTemperatureThreeQuarters = {\n prefix: 'fas',\n iconName: 'temperature-three-quarters',\n icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 144c0-8.8 7.2-16 16-16s16 7.2 16 16l0 178.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature3 = faTemperatureThreeQuarters;\nconst faThermometer3 = faTemperatureThreeQuarters;\nconst faThermometerThreeQuarters = faTemperatureThreeQuarters;\nconst faMobileScreen = {\n prefix: 'fas',\n iconName: 'mobile-screen',\n icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM144 448c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zM304 64L80 64l0 320 224 0 0-320z\"]\n};\nconst faMobileAndroidAlt = faMobileScreen;\nconst faPlaneUp = {\n prefix: 'fas',\n iconName: 'plane-up',\n icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6l0 56.7c0 10.9-10.7 18.6-21.1 15.2L320 320l0 80 57.6 43.2c4 3 6.4 7.8 6.4 12.8l0 42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14l0-42c0-5 2.4-9.8 6.4-12.8L192 400l0-80L21.1 377C10.7 380.4 0 372.7 0 361.8l0-56.7c0-10.7 5.3-20.7 14.2-26.6L192 160l0-66.3z\"]\n};\nconst faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7L256 96c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96l11.5 0c10.4 0 18 9.8 15.5 19.9l-13.8 55.2c15.8 14.8 28.7 32.8 37.5 52.9l13.3 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-32 0c-9.1 12.1-19.9 22.9-32 32l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-128 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c-34.9-26.2-58.7-66.3-63.2-112L68 304c-37.6 0-68-30.4-68-68s30.4-68 68-68l4 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-4 0c-11 0-20 9-20 20s9 20 20 20l31.2 0c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2l128 0zm64 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [576, 512, [\"battery-3\"], \"f242\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm208 96L96 192l0 128 192 0 0-128z\"]\n};\nconst faBattery3 = faBatteryHalf;\nconst faMountainCity = {\n prefix: 'fas',\n iconName: 'mountain-city',\n icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48l0 92.1 71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-3.5 0 73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3L592 512c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48l-24 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-40 0 0-144c0-26.5-21.5-48-48-48L336 0zm32 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm160 96c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM224 188.9L283.8 288 223 288l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512l379.1 0c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nconst faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2c0 0 0 0 0 0s0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336l0-35.4c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4l0 3.4 0 5.7 0 26.3zm32 0l0-32 0-25.9c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 44.2-86 80-192 80S0 476.2 0 432l0-35.4c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nconst faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [9772], \"f66d\", \"M245.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0l-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C344.9 97.4 368 134 368 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1s0 0 0 0s0 0 0 0c3.6 6.7 2 15-3.8 19.9L272 343.5l0 19.8 35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L401.1 80c7.2-14.3 7.2-14.3 7.2-14.3s0 0 0 0s0 0 0 0l.1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1c0 0 0 0 0 0s0 0 0 0L401.1 400l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L272 423.4l0 28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7l0-28.1-40.3 27.7C197.8 463.3 187.9 472 176 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L112 400c-10.2 12.3-10.2 12.3-10.3 12.3s0 0 0 0s0 0 0 0l-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C26.4 324.5 0 277.1 0 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29C93 72.5 97 70 99.9 68.4c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0c0 0 0 0 0 0s0 0 0 0L112 80l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C105.2 119 96 149.5 96 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L240 362.6l0-19.1-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0l.1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C167.1 254.6 144 218 144 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1s0 0 0 0s0 0 0 0s0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM220.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C227 210.2 232 190.9 232 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C285 141.8 280 161.1 280 176s5 34.2 11.8 53.1z\"]\n};\nconst faSliders = {\n prefix: 'fas',\n iconName: 'sliders',\n icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z\"]\n};\nconst faSlidersH = faSliders;\nconst faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32l0 96L0 384c0 35.3 28.7 64 64 64l192 0 0-64L64 384l0-224 192 0 0-64L64 96l0-64zM288 192c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l-98.7 0c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4L320 0c-17.7 0-32 14.3-32 32l0 160zm0 288c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l-98.7 0c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4L320 288c-17.7 0-32 14.3-32 32l0 160z\"]\n};\nconst faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M256 64l128 0 0 64-128 0 0-64zM240 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l48 0 0 32L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 256 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-256 0 0-32 48 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48L240 0zM96 448l0-64 128 0 0 64L96 448zm320-64l128 0 0 64-128 0 0-64z\"]\n};\nconst faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [320, 512, [128205], \"f276\", \"M16 144a144 144 0 1 1 288 0A144 144 0 1 1 16 144zM160 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM128 480l0-162.9c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9L192 480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nconst faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M34.6 288L80 288c8.8 0 16-7.2 16-16L96 72c0-22.1 17.9-40 40-40s40 17.9 40 40l0 132c0 11 9 20 20 20s20-9 20-20l0-164c0-22.1 17.9-40 40-40s40 17.9 40 40l0 164c0 11 9 20 20 20s20-9 20-20l0-132c0-22.1 17.9-40 40-40s40 17.9 40 40l0 200c0 8.8 7.2 16 16 16l45.4 0c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCentSign = {\n prefix: 'fas',\n iconName: 'cent-sign',\n icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32l0 34.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8l0 34.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.7C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3L192 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M288 0L160 0 128 0C110.3 0 96 14.3 96 32s14.3 32 32 32l0 132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512l309.2 0c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5L320 64c17.7 0 32-14.3 32-32s-14.3-32-32-32L288 0zM192 196.8L192 64l64 0 0 132.8c0 23.7 6.6 46.9 19 67.1L309.5 320l-171 0L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nconst faPersonPregnant = {\n prefix: 'fas',\n iconName: 'person-pregnant',\n icon: [384, 512, [], \"e31e\", \"M192 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM120 383c-13.8-3.6-24-16.1-24-31l0-55.1-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1l1.1 0 12.5 0 2.4 0c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3l0 32c0 17.7-14.3 32-32 32l-16 0-40 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-8 0-8 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-97z\"]\n};\nconst faWandSparkles = {\n prefix: 'fas',\n iconName: 'wand-sparkles',\n icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7l0 21.4c0 8.8-7.2 16-16 16l-15.8 0c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9l0-27.6c0-8.8 7.2-16 16-16l34.6 0c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nconst faEllipsisVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-vertical',\n icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z\"]\n};\nconst faEllipsisV = faEllipsisVertical;\nconst faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128l0 64c0 8.8 7.4 15.7 15.7 18.6C34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-8.8-7.4-15.7-15.7-18.6C541.5 294.9 528 277 528 256s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6l0-64c0-35.3-28.7-64-64-64L64 64zm64 112l0 160c0 8.8 7.2 16 16 16l288 0c8.8 0 16-7.2 16-16l0-160c0-8.8-7.2-16-16-16l-288 0c-8.8 0-16 7.2-16 16zM96 160c0-17.7 14.3-32 32-32l320 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-320 0c-17.7 0-32-14.3-32-32l0-192z\"]\n};\nconst faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 224c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nconst faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z\"]\n};\nconst faLongArrowAltRight = faRightLong;\nconst faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 36.1-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9l0 32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3l0 62-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1l0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3l0 62-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1l0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3l0 33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 400l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64 0-70.5 0-32.7 0-63.3 0-32.7 0-63.3 0-32.7L0 64 0 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faLaptopFile = {\n prefix: 'fas',\n iconName: 'laptop-file',\n icon: [640, 512, [], \"e51d\", \"M128 0C92.7 0 64 28.7 64 64l0 224-44.8 0C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384L320 384l0-96-192 0 0-224 320 0 0 32 64 0 0-32c0-35.3-28.7-64-64-64L128 0zM512 128l-112 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-208-96 0c-17.7 0-32-14.3-32-32l0-96zm32 0l0 96 96 0-96-96z\"]\n};\nconst faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [\"teletype\"], \"f1e4\", \"M38.3 241.3L15.1 200.6c-9.2-16.2-8.4-36.5 4.5-50C61.4 106.8 144.7 48 256 48s194.6 58.8 236.4 102.6c12.9 13.5 13.7 33.8 4.5 50l-23.1 40.7c-7.5 13.2-23.3 19.3-37.8 14.6l-81.1-26.6c-13.1-4.3-22-16.6-22-30.4l0-54.8c-49.6-18.1-104-18.1-153.6 0l0 54.8c0 13.8-8.9 26.1-22 30.4L76.1 255.8c-14.5 4.7-30.3-1.4-37.8-14.6zM32 336c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm0 96c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM144 320l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 432c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-32z\"]\n};\nconst faTeletype = faTty;\nconst faDiagramNext = {\n prefix: 'fas',\n iconName: 'diagram-next',\n icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64l-168 0 0 64 46.1 0c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41l46.1 0 0-64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 64zM448 416l0-64-82.7 0 .4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4L64 352l0 64 146.7 0 5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7L448 416z\"]\n};\nconst faPersonRifle = {\n prefix: 'fas',\n iconName: 'person-rifle',\n icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9L336 512l-192 0 0-174.3L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8l50.4 0zM160 80a80 80 0 1 1 160 0A80 80 0 1 1 160 80zM448 0c8.8 0 16 7.2 16 16l0 116.3c9.6 5.5 16 15.9 16 27.7l0 109.3 16-5.3 0-56c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 84.5c0 6.9-4.4 13-10.9 15.2L480 325.3l0 26.7 48 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-44 0 23 92.1c2.5 10.1-5.1 19.9-15.5 19.9L432 512c-8.8 0-16-7.2-16-16l0-96-16 0c-17.7 0-32-14.3-32-32l0-144c0-17.7 14.3-32 32-32l0-32c0-11.8 6.4-22.2 16-27.7L416 32c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 16 0z\"]\n};\nconst faHouseMedicalCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-medical-circle-exclamation',\n icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nconst faPersonHiking = {\n prefix: 'fas',\n iconName: 'person-hiking',\n icon: [384, 512, [\"hiking\"], \"f6ec\", \"M192 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm51.3 182.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9l0 89.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-82.7-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208l30.9 0 0-24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 55.8c0 .1 0 .2 0 .2s0 .2 0 .2L384 488c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-216-39.4 0c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59l4.2 0c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nconst faHiking = faPersonHiking;\nconst faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [640, 512, [9890], \"f226\", \"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nconst faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320l-144 0-48 0-80 0c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 344c0 75.1 60.9 136 136 136l320 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-320 0c-48.6 0-88-39.4-88-88l0-224z\"]\n};\nconst faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM96 64l192 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nconst faPeoplePulling = {\n prefix: 'fas',\n iconName: 'people-pulling',\n icon: [576, 512, [], \"e535\", \"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64L0 320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352l15.7 0 30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128l-53 0zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nconst faN = {\n prefix: 'fas',\n iconName: 'n',\n icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6 320 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 384c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4 64 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 50.5 8.4 38.5 21.1 33.9z\"]\n};\nconst faCableCar = {\n prefix: 'fas',\n iconName: 'cable-car',\n icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 56a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64l136 0 0-66.5-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5l0 76.5 136 0c35.3 0 64 28.7 64 64l0 160c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-160zm64 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0zm112 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0z\"]\n};\nconst faTram = faCableCar;\nconst faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96L96 320zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nconst faBuildingCircleXmark = {\n prefix: 'fas',\n iconName: 'building-circle-xmark',\n icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32L352 0c17.7 0 32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 128 44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240l0-128c0-26.5 21.5-48 48-48l48 0 0-32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7l0-90.7-256 0 0 90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faArrowsDownToLine = {\n prefix: 'fas',\n iconName: 'arrows-down-to-line',\n icon: [576, 512, [], \"e4b8\", \"M544 416L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L480 274.7 480 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L160 274.7 160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L54.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nconst faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 242.7-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7 288 32zM64 352c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-101.5 0-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352 64 352zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faFaceGrin = {\n prefix: 'fas',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrin = faFaceGrin;\nconst faDeleteLeft = {\n prefix: 'fas',\n iconName: 'delete-left',\n icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64L205.3 64c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7L512 448c35.3 0 64-28.7 64-64l0-256zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faBackspace = faDeleteLeft;\nconst faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6l0 42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480l42.4 0c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7L96 416l0-36.1c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nconst faEyeDropperEmpty = faEyeDropper;\nconst faEyedropper = faEyeDropper;\nconst faFileCircleCheck = {\n prefix: 'fas',\n iconName: 'file-circle-check',\n icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416L0 96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3l0 41.7 0 41.7L52.5 440.6zM256 352l0-96 0-128 0-32c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29l0-64z\"]\n};\nconst faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zm80 432l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMobileAndroid = faMobile;\nconst faMobilePhone = faMobile;\nconst faFaceMeh = {\n prefix: 'fas',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMeh = faFaceMeh;\nconst faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32L128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32z\"]\n};\nconst faBookSkull = {\n prefix: 'fas',\n iconName: 'book-skull',\n icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2l0 12.8c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-12.8c19.4-11.7 32-30.3 32-51.2zM208 96a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nconst faBookDead = faBookSkull;\nconst faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96zm0 32L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-288L0 128zM64 405.3c0-29.5 23.9-53.3 53.3-53.3l117.3 0c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7L74.7 416c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faDriversLicense = faIdCard;\nconst faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [\"dedent\"], \"f03b\", \"M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM.2 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6l0 158.6c0 13.3-15.3 20.8-25.8 12.6L.2 268.6z\"]\n};\nconst faDedent = faOutdent;\nconst faHeartCircleExclamation = {\n prefix: 'fas',\n iconName: 'heart-circle-exclamation',\n icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c0 2.7-.2 5.4-.5 8.1l0 16.2c0 22.1-17.9 40-40 40l-16 0c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1L416 512l-24 0c-22.1 0-40-17.9-40-40l0-24 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nconst faHome = faHouse;\nconst faHomeAlt = faHouse;\nconst faHomeLgAlt = faHouse;\nconst faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm80 64c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l288 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16L80 256z\"]\n};\nconst faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 256-64 0 0-256L128 96l0 256-64 0L64 96zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faB = {\n prefix: 'fas',\n iconName: 'b',\n icon: [320, 512, [98], \"42\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 416c0 35.3 28.7 64 64 64l128 0c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128L64 32zm96 192l-96 0L64 96l96 0c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288l96 0 32 0c35.3 0 64 28.7 64 64s-28.7 64-64 64L64 416l0-128z\"]\n};\nconst faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM160 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4l55.7 0c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3l0-240c0-70.7-57.3-128-128-128l-55.7 0c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3L96 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-46c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7l0 40.7c0 13.3 10.7 24 24 24s24-10.7 24-24l0-50.9c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faArrowRightArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-right-arrow-left',\n icon: [448, 512, [8644, \"exchange\"], \"f0ec\", \"M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z\"]\n};\nconst faExchange = faArrowRightArrowLeft;\nconst faRotateRight = {\n prefix: 'fas',\n iconName: 'rotate-right',\n icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224l8.5 0c13.3 0 24-10.7 24-24l0-128c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l119.5 0z\"]\n};\nconst faRedoAlt = faRotateRight;\nconst faRotateForward = faRotateRight;\nconst faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176l0 112c0 35.3 28.7 64 64 64l32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 0-112 0-208c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7L80 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224.4c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16l0 134.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8L64 16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nconst faCutlery = faUtensils;\nconst faArrowUpWideShort = {\n prefix: 'fas',\n iconName: 'arrow-up-wide-short',\n icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nconst faSortAmountUp = faArrowUpWideShort;\nconst faMillSign = {\n prefix: 'fas',\n iconName: 'mill-sign',\n icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128l0 80L0 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208c0-26.5 21.5-48 48-48s48 21.5 48 48l0 42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32l0-154.5 35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48l0 208c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nconst faBowlRice = {\n prefix: 'fas',\n iconName: 'bowl-rice',\n icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm24 48l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1l0 64c0 26.5 21.5 48 48 48l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 64 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 48 0c26.5 0 48-21.5 48-48l0-64c0-.4 0-.7 0-1.1zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faTowerBroadcast = {\n prefix: 'fas',\n iconName: 'tower-broadcast',\n icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4L320 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-296.6c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nconst faBroadcastTower = faTowerBroadcast;\nconst faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96L288 192l0-96 80.6 0zM224 80l0 112L64 192c-17.7 0-32 14.3-32 32l0 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l33.1 0c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16l66.3 0c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16l33.1 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c0-17.7-14.3-32-32-32l-48.6 0L418.6 56c-12.1-15.2-30.5-24-50-24L272 32c-26.5 0-48 21.5-48 48zm0 288a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm288 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"]\n};\nconst faUpLong = {\n prefix: 'fas',\n iconName: 'up-long',\n icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192l72 0 0 288c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-288 72 0c9.6 0 18.2-5.7 22-14.5z\"]\n};\nconst faLongArrowAltUp = faUpLong;\nconst faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nconst faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [448, 512, [], \"f387\", \"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3l0 205.3C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-86.6c26.7 20.1 60 32 96 32l86.7 0c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48L208 240c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M288 109.3L288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-242.7-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352l128 0c0 35.3 28.7 64 64 64s64-28.7 64-64l128 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9l0 63.3c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2l0-63.3c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48A96 96 0 1 0 96 256a96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faMound = {\n prefix: 'fas',\n iconName: 'mound',\n icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nconst faToiletPortable = {\n prefix: 'fas',\n iconName: 'toilet-portable',\n icon: [320, 512, [], \"e583\", \"M0 32L0 64l320 0 0-32c0-17.7-14.3-32-32-32L32 0C14.3 0 0 14.3 0 32zM24 96L0 96l0 24L0 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 224 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-368 0-24-24 0L24 96zM256 240l0 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nconst faFileArrowDown = {\n prefix: 'fas',\n iconName: 'file-arrow-down',\n icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM216 232l0 102.1 31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31L168 232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFileDownload = faFileArrowDown;\nconst faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32l336 0c88.4 0 160 71.6 160 160l0 160 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0-288 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-44.2 0-80-35.8-80-80L0 112zM320 352l128 0 0-96-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 192zM96 128c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128zm96 336a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faShieldCat = {\n prefix: 'fas',\n iconName: 'shield-cat',\n icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4l.2 0c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4l48 0c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3l.2 0c5.8 0 10.4 4.7 10.4 10.4L352 272c0 53-43 96-96 96s-96-43-96-96l0-117.6zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288l111.5 0L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7l-111.5 0L349.4 44.6z\"]\n};\nconst faZap = faBolt;\nconst faGlassWater = {\n prefix: 'fas',\n iconName: 'glass-water',\n icon: [384, 512, [], \"e4f4\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM73 156.5L66.4 64l251.3 0L311 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"]\n};\nconst faOilWell = {\n prefix: 'fas',\n iconName: 'oil-well',\n icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6 96 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 264-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-137.3 0L340 257.5l-62.2 16.1L305.3 352l-66.6 0L265 277l-74.6 19.3L137.3 448 96 448l0-159.2 337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32 111.4 0 11.2 32-133.8 0z\"]\n};\nconst faVault = {\n prefix: 'fas',\n iconName: 'vault',\n icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64L0 416c0 35.3 28.7 64 64 64l16 0 16 32 64 0 16-32 224 0 16 32 64 0 16-32 16 0c35.3 0 64-28.7 64-64l0-352c0-35.3-28.7-64-64-64L64 0zM224 320a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-240a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM480 221.3L480 336c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-114.7c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nconst faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8l112 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80s0 0 0 0s0 0 0 0s0 0 0 0zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nconst faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l8 0 0 148.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l256 0c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4L416 48l8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 0zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3c0 0 0-.1 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8c0 0 0 .1 0 .1l0 .3zM328.2 384l-.2 .5 0-.5 .2 0zM112 64l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faPlaneCircleXmark = {\n prefix: 'fas',\n iconName: 'plane-circle-xmark',\n icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.3C48.8 31.5 29 27.6 14.2 37.4S-4.4 67 5.4 81.8L100.2 224 48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 0 32-80 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-32 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-52.2 0L314.6 81.8c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.3z\"]\n};\nconst faCny = faYenSign;\nconst faJpy = faYenSign;\nconst faRmb = faYenSign;\nconst faYen = faYenSign;\nconst faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64l0 192-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-32 112 0c79.5 0 144-64.5 144-144s-64.5-144-144-144L96 32zM240 256l-112 0 0-160 112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nconst faRouble = faRubleSign;\nconst faRub = faRubleSign;\nconst faRuble = faRubleSign;\nconst faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nconst faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faFaceLaughWink = {\n prefix: 'fas',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nconst faLaughWink = faFaceLaughWink;\nconst faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [640, 512, [], \"f7ab\", \"M64 464l0-147.1c0-108.4 68.3-205.1 170.5-241.3L404.2 15.5C425.6 7.9 448 23.8 448 46.4c0 11-5.5 21.2-14.6 27.3L400 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1l-3.4 0c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4c0 0 0 0-.1 0c0 0 0 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3c0 0 0 0 0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8L112 512c-26.5 0-48-21.5-48-48zM392 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faBoreHole = {\n prefix: 'fas',\n iconName: 'bore-hole',\n icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32l0 264.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4L288 32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48L0 464c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-80 0c-17.7 0-32 14.3-32 32l0 192c0 53-43 96-96 96s-96-43-96-96l0-192c0-17.7-14.3-32-32-32l-80 0z\"]\n};\nconst faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [576, 512, [], \"f275\", \"M64 32C46.3 32 32 46.3 32 64l0 240 0 48 0 80c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-128 0-151.8c0-18.2-19.4-29.7-35.4-21.1L352 215.4l0-63.2c0-18.2-19.4-29.7-35.4-21.1L160 215.4 160 64c0-17.7-14.3-32-32-32L64 32z\"]\n};\nconst faCircleDown = {\n prefix: 'fas',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM244.7 395.3l-112-112c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l64 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 64 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-112 112c-6.2 6.2-16.4 6.2-22.6 0z\"]\n};\nconst faArrowAltCircleDown = faCircleDown;\nconst faArrowsTurnToDots = {\n prefix: 'fas',\n iconName: 'arrows-turn-to-dots',\n icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM384 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192A64 64 0 1 1 64 64a64 64 0 1 1 0 128z\"]\n};\nconst faFlorinSign = {\n prefix: 'fas',\n iconName: 'florin-sign',\n icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224 64 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l37.3 0c38.8 0 73.7-23.3 88.6-59.1L213.3 288 320 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 45.1-108.3c5-11.9 16.6-19.7 29.5-19.7L352 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-37.3 0z\"]\n};\nconst faArrowDownShortWide = {\n prefix: 'fas',\n iconName: 'arrow-down-short-wide',\n icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSortAmountDesc = faArrowDownShortWide;\nconst faSortAmountDownAlt = faArrowDownShortWide;\nconst faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nconst faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [448, 512, [8964], \"f107\", \"M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nconst faCarTunnel = {\n prefix: 'fas',\n iconName: 'car-tunnel',\n icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256L0 448c0 35.3 28.7 64 64 64l42.8 0c-6.6-5.9-10.8-14.4-10.8-24l0-112c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7l115.2 0c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6l0 112c0 9.6-4.2 18.1-10.8 24l42.8 0c35.3 0 64-28.7 64-64l0-192C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24l0-40-192 0 0 40c0 9.6-4.2 18.1-10.8 24l213.7 0zM190.8 277.5L177 320l158 0-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5l-115.2 0c-3.5 0-6.5 2.2-7.6 5.5zM168 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm200-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M0 224.2C0 100.6 100.2 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320s0 0 0 0l0 32L339.2 365.6c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9L448 416l0 16c0 26.5-21.5 48-48 48l-80 0 0 8c0 13.3-10.7 24-24 24l-40 0s0 0 0 0L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM592 480a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 312a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nconst faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2l144 0c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48l-97.5 0c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7l0 38.3 0 48 0 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384l64 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32L32 96C14.3 96 0 110.3 0 128L0 352c0 17.7 14.3 32 32 32z\"]\n};\nconst faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l362.8 0c-5.4-9.4-8.6-20.3-8.6-32l0-128c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7l-91.4 0zM528 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faArrowRightLong = {\n prefix: 'fas',\n iconName: 'arrow-right-long',\n icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nconst faLongArrowRight = faArrowRightLong;\nconst faAnchorCircleXmark = {\n prefix: 'fas',\n iconName: 'anchor-circle-xmark',\n icon: [640, 512, [], \"e4ac\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faEllipsis = {\n prefix: 'fas',\n iconName: 'ellipsis',\n icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nconst faEllipsisH = faEllipsis;\nconst faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M215.5 224c29.2-18.4 48.5-50.9 48.5-88c0-57.4-46.6-104-104-104S56 78.6 56 136c0 37.1 19.4 69.6 48.5 88L96 224c-17.7 0-32 14.3-32 32c0 16.5 12.5 30 28.5 31.8L80 400l160 0L227.5 287.8c16-1.8 28.5-15.3 28.5-31.8c0-17.7-14.3-32-32-32l-8.5 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512l242.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L256 432 64 432 22.6 473.4z\"]\n};\nconst faKitMedical = {\n prefix: 'fas',\n iconName: 'kit-medical',\n icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l32 0L96 32 64 32zm64 0l0 448 320 0 0-448L128 32zM512 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-32 0 0 448 32 0zM256 176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faFirstAid = faKitMedical;\nconst faPersonThroughWindow = {\n prefix: 'fas',\n iconName: 'person-through-window',\n icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0l-64 0L64 64zm288 0l224 0 0 320-67.7 0-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320l-45.8 0 42.7 64L592 448c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 400c0 26.5 21.5 48 48 48l260.2 0 33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0L192 384s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [129520], \"f552\", \"M176 88l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 80c-4.4 0-8 3.6-8 8zm-48 40l0-40c0-30.9 25.1-56 56-56l144 0c30.9 0 56 25.1 56 56l0 40 28.1 0c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9l0 92.1-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L0 320l0-92.1c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1l28.1 0zM0 416l0-64 128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0 0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64z\"]\n};\nconst faHandsHoldingCircle = {\n prefix: 'fas',\n iconName: 'hands-holding-circle',\n icon: [640, 512, [], \"e4fb\", \"M320 0a128 128 0 1 1 0 256A128 128 0 1 1 320 0zM40 64c22.1 0 40 17.9 40 40l0 40 0 80 0 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2c0 0 0 0 0 0l25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 224l0-64 0-56C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 56 0 64 0 101.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3c0 0 0 0 0 0l15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3l0-40.2 0-80 0-40c0-22.1 17.9-40 40-40z\"]\n};\nconst faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96l0 3.6c0 15.7-12.7 28.4-28.4 28.4l-135.1 0c-15.7 0-28.4-12.7-28.4-28.4l0-3.6c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4l112 0c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5l64.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6L272 240c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 239.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64.3 0c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96l0 32 576 0 0-32c0-35.3-28.7-64-64-64L64 32zM576 224L0 224 0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-192zM112 352l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faCreditCardAlt = faCreditCard;\nconst faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192l293.8 0-26.1-74.6C372.3 104.6 360.2 96 346.6 96L165.4 96c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32l181.2 0c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2l0 144 0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48L96 400l0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48L0 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faAutomobile = faCar;\nconst faHandHoldingHand = {\n prefix: 'fas',\n iconName: 'hand-holding-hand',\n icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32L384 32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-36.8 0-44.9 36c-22.7 18.2-50.9 28-80 28L304 224l-16 0-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-120.6 0L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160c0 0 0 0 0 0l.9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 480 32 480c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faBookOpenReader = {\n prefix: 'fas',\n iconName: 'book-open-reader',\n icon: [512, 512, [\"book-reader\"], \"f5da\", \"M160 96a96 96 0 1 1 192 0A96 96 0 1 1 160 96zm80 152l0 264-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427L0 224c0-17.7 14.3-32 32-32l30.3 0c63.6 0 125.6 19.6 177.7 56zm32 264l0-264c52.1-36.4 114.1-56 177.7-56l30.3 0c17.7 0 32 14.3 32 32l0 203c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nconst faBookReader = faBookOpenReader;\nconst faMountainSun = {\n prefix: 'fas',\n iconName: 'mountain-sun',\n icon: [640, 512, [], \"e52f\", \"M560 160A80 80 0 1 0 560 0a80 80 0 1 0 0 160zM55.9 512l325.2 0 75 0 122.8 0c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nconst faArrowsLeftRightToLine = {\n prefix: 'fas',\n iconName: 'arrows-left-right-to-line',\n icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-320c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [512, 512, [], \"f6cf\", \"M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7l0 123.5c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4l0-123.5zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9l0 52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8l0-52.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9l-145.7 0c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176l163.2 0c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2l-3.2 0c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nconst faTruckDroplet = {\n prefix: 'fas',\n iconName: 'truck-droplet',\n icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nconst faFileCircleXmark = {\n prefix: 'fas',\n iconName: 'file-circle-xmark',\n icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faTemperatureArrowUp = {\n prefix: 'fas',\n iconName: 'temperature-arrow-up',\n icon: [576, 512, [\"temperature-up\"], \"e040\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L128 112zM176 0C114.1 0 64 50.1 64 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L288 112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3L192 112c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 210.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM480 160l32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-288z\"]\n};\nconst faTemperatureUp = faTemperatureArrowUp;\nconst faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [127941], \"f5a2\", \"M4.1 38.2C1.4 34.2 0 29.4 0 24.6C0 11 11 0 24.6 0L133.9 0c11.2 0 21.7 5.9 27.4 15.5l68.5 114.1c-48.2 6.1-91.3 28.6-123.4 61.9L4.1 38.2zm503.7 0L405.6 191.5c-32.1-33.3-75.2-55.8-123.4-61.9L350.7 15.5C356.5 5.9 366.9 0 378.1 0L487.4 0C501 0 512 11 512 24.6c0 4.8-1.4 9.6-4.1 13.6zM80 336a176 176 0 1 1 352 0A176 176 0 1 1 80 336zm184.4-94.9c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nconst faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32l0 256 224 0 0-160c0-17.7 14.3-32 32-32l224 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-224 0-32 0L64 416l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faSquareH = {\n prefix: 'fas',\n iconName: 'square-h',\n icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM336 152l0 104 0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80-128 0 0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80 128 0 0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faHSquare = faSquareH;\nconst faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-144a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nconst faTemperatureFull = {\n prefix: 'fas',\n iconName: 'temperature-full',\n icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 210.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature4 = faTemperatureFull;\nconst faThermometer4 = faTemperatureFull;\nconst faThermometerFull = faTemperatureFull;\nconst faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32l0 19.2C119 66 64 130.6 64 208l0 18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416l384 0c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8l0-18.8c0-77.4-55-142-128-156.8L256 32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nconst faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l15.3 0 89.6 128L47.3 384 32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0L215.1 256l89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64L32 64z\"]\n};\nconst faPlugCircleXmark = {\n prefix: 'fas',\n iconName: 'plug-circle-xmark',\n icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 140.9 122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.6 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1 304 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-140.9L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4L208 32z\"]\n};\nconst faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M228.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C76.1 30.2 64 46 64 64c0 107.4 37.8 206 100.8 283.1L9.2 469.1c-10.4 8.2-12.3 23.3-4.1 33.7s23.3 12.3 33.7 4.1l592-464c10.4-8.2 12.3-23.3 4.1-33.7s-23.3-12.3-33.7-4.1L253 278c-17.8-21.5-32.9-45.2-45-70.7L257.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96zm96.8 319l-91.3 72C310.7 476 407.1 512 512 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L368.7 368c-15-7.1-29.3-15.2-43-24.3z\"]\n};\nconst faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0L352 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 192c-35.3 0-64-28.7-64-64L0 64zM160 352c0-17.7 14.3-32 32-32l0-16c0-44.2 35.8-80 80-80l144 0c17.7 0 32-14.3 32-32l0-32 0-90.5c37.3 13.2 64 48.7 64 90.5l0 32c0 53-43 96-96 96l-144 0c-8.8 0-16 7.2-16 16l0 16c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-128z\"]\n};\nconst faHandshakeAngle = {\n prefix: 'fas',\n iconName: 'handshake-angle',\n icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M544 248l0 3.3 69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5L296 64c-37.1 0-67.6 28-71.6 64l-.4 0 0 120c0 22.1 17.9 40 40 40s40-17.9 40-40l0-72c0 0 0-.1 0-.1l0-15.9 16 0 136 0c0 0 0 0 .1 0l7.9 0c44.2 0 80 35.8 80 80l0 8zM336 192l0 56c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-118.6c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1l160 0c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16l2.7 0c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8l0-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z\"]\n};\nconst faHandsHelping = faHandshakeAngle;\nconst faLocationDot = {\n prefix: 'fas',\n iconName: 'location-dot',\n icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faMapMarkerAlt = faLocationDot;\nconst faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128z\"]\n};\nconst faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nconst faPersonSwimming = {\n prefix: 'fas',\n iconName: 'person-swimming',\n icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-26.9 0-52.3 6.6-74.5 18.4zM160 160A64 64 0 1 1 32 160a64 64 0 1 1 128 0zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faSwimmer = faPersonSwimming;\nconst faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nconst faDroplet = {\n prefix: 'fas',\n iconName: 'droplet',\n icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0l1.8 0c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z\"]\n};\nconst faTint = faDroplet;\nconst faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7L288 480l9.4 0L512 480c17.7 0 32-14.3 32-32s-14.3-32-32-32l-124.1 0L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416l-9.4 0-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nconst faEarthAmericas = {\n prefix: 'fas',\n iconName: 'earth-americas',\n icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5l0 39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9l0 39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7l0-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1L257 256c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faEarth = faEarthAmericas;\nconst faEarthAmerica = faEarthAmericas;\nconst faGlobeAmericas = faEarthAmericas;\nconst faPersonBurst = {\n prefix: 'fas',\n iconName: 'person-burst',\n icon: [640, 512, [], \"e53b\", \"M480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-223.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9 408 480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.3-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nconst faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6l0-31.5C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144l0 30.6s0 0 0 0l0 1.3s0 0 0 0l0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448l74.4 0c88.4 0 160-71.6 160-160l0-160 29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3L400 64c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 160c-8.8 0-16 7.2-16 16l0 160c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-160c0-8.8-7.2-16-16-16L80 160zM0 176c0-44.2 35.8-80 80-80l384 0c44.2 0 80 35.8 80 80l0 16c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 16c0 44.2-35.8 80-80 80L80 416c-44.2 0-80-35.8-80-80L0 176z\"]\n};\nconst faBattery0 = faBatteryEmpty;\nconst faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6l0-144L128 96l0 144c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64l160 0 0-16c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0L176 0c-26.5 0-48 21.5-48 48l0 16zM320 96l0 144c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304l0-208L320 96zM512 64l0-16c0-26.5-21.5-48-48-48L368 0c-26.5 0-48 21.5-48 48l0 16 192 0z\"]\n};\nconst faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-92.1c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32L121 32zm0 64l270 0 48 192-51.2 0c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7l-120.4 0c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7L73 288 121 96z\"]\n};\nconst faSection = {\n prefix: 'fas',\n iconName: 'section',\n icon: [256, 512, [], \"e447\", \"M64.9 96C67.1 84.4 73.7 76.2 86 70.6c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8C123-2.7 88.3-.6 59.7 12.3C29.9 25.8 7.5 50.9 1.6 86.5c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C22.3 194.2 6.5 215.1 1.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31c0 0 0 0 0 0l3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2c0 0 0 0 0 0c-4.3-1.5-8.5-2.9-12.3-4.2C25.3 420 7.2 429.1 1.6 445.8s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6c0 0 0 0 0 0l.2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5l-.6-.2-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nconst faGaugeHigh = {\n prefix: 'fas',\n iconName: 'gauge-high',\n icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faTachometerAlt = faGaugeHigh;\nconst faTachometerAltFast = faGaugeHigh;\nconst faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M215.4 96L144 96l-36.2 0L96 96l0 8.8L96 144l0 40.4 0 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3 48 96c0-26.5 21.5-48 48-48l76.6 0 49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48 416 48c26.5 0 48 21.5 48 48l0 44.3 22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4l0-89 0-40.4 0-39.2 0-8.8-11.8 0L368 96l-71.4 0-81.3 0zM0 448L0 242.1 217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1 512 448s0 0 0 0c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64c0 0 0 0 0 0zM176 160l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48L400 0c26.5 0 48 21.5 48 48l0 464-80 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-80 0 0-464zM48 96l112 0 0 416L48 512c-26.5 0-48-21.5-48-48L0 320l80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L0 288l0-64 80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L0 192l0-48c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48l0 48-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 144c0 26.5-21.5 48-48 48l-112 0 0-416 112 0zM312 64c-8.8 0-16 7.2-16 16l0 24-24 0c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l24 0 0 24c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-24 24 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-24 0 0-24c0-8.8-7.2-16-16-16l-16 0z\"]\n};\nconst faHospitalAlt = faHospital;\nconst faHospitalWide = faHospital;\nconst faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nconst faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [448, 512, [9820], \"f447\", \"M32 192L32 48c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 40c0 4.4 3.6 8 8 8l32 0c4.4 0 8-3.6 8-8l0-40c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 40c0 4.4 3.6 8 8 8l32 0c4.4 0 8-3.6 8-8l0-40c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 144c0 10.1-4.7 19.6-12.8 25.6L352 256l16 144L80 400 96 256 44.8 217.6C36.7 211.6 32 202.1 32 192zm176 96l32 0c8.8 0 16-7.2 16-16l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 8.8 7.2 16 16 16zM22.6 473.4L64 432l320 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L38.6 512C26.1 512 16 501.9 16 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nconst faBarsStaggered = {\n prefix: 'fas',\n iconName: 'bars-staggered',\n icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faReorder = faBarsStaggered;\nconst faStream = faBarsStaggered;\nconst faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.5-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9c0 0 0 0 0 0s0 0 0 0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4c0 0 0 0 0 0l-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nconst faPersonWalkingWithCane = {\n prefix: 'fas',\n iconName: 'person-walking-with-cane',\n icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6l0 43.2c0 17 6.7 33.3 18.7 45.3L224 397.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-89.4c0-12.7-5.1-24.9-14.1-33.9L224 306.7l0-93.4 70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128l-24.4 0zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nconst faBlind = faPersonWalkingWithCane;\nconst faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [129345], \"f569\", \"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96C114.6 96 0 128 0 208L0 368c0 31.3 27.4 58.8 72 78.7L72 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 119.4c33 8.9 71.1 14.5 112 16.1L232 376c0-13.3 10.7-24 24-24s24 10.7 24 24l0 103.5c40.9-1.6 79-7.2 112-16.1L392 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 102.7c44.6-19.9 72-47.4 72-78.7l0-160c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C458.4 181.8 464 197.4 464 208c0 .8-2.7 17.2-46 35.9C379.1 260.7 322 272 256 272s-123.1-11.3-162-28.1C50.7 225.2 48 208.8 48 208c0-10.6 5.6-26.2 44.4-41.3C130.6 151.9 187.8 144 256 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nconst faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [127848], \"f810\", \"M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16l-.9 0c-26.5 0-48 21.5-48 48s21.5 48 48 48l53.5 0 181 0 53.5 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-.9 0zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288 96 288z\"]\n};\nconst faHeartCircleBolt = {\n prefix: 'fas',\n iconName: 'heart-circle-bolt',\n icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356l35.6 0c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380 376 380c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nconst faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64l0 96 64 0 0-96 194.7 0L416 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0L192 0c-35.3 0-64 28.7-64 64zM0 160L0 480c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32zm480 32l-352 0 0 288c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32zM256 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [182], \"f1dd\", \"M192 32l64 0 160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352-32 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-32 0c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nconst faCheckToSlot = {\n prefix: 'fas',\n iconName: 'check-to-slot',\n icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48l288 0c26.5 0 48 21.5 48 48l0 304L96 384 96 80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48l16 0 0 128 448 0 0-128 16 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nconst faVoteYea = faCheckToSlot;\nconst faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8 288 0zM429.9 512c1.1 .1 2.1 .1 3.2 0l-3.2 0z\"]\n};\nconst faBoxesStacked = {\n prefix: 'fas',\n iconName: 'boxes-stacked',\n icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M248 0L208 0c-26.5 0-48 21.5-48 48l0 112c0 35.3 28.7 64 64 64l128 0c35.3 0 64-28.7 64-64l0-112c0-26.5-21.5-48-48-48L328 0l0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80zM64 256c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-40 0 0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80-40 0zM352 512l160 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-40 0 0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80-40 0c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2l0 160c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z\"]\n};\nconst faBoxes = faBoxesStacked;\nconst faBoxesAlt = faBoxesStacked;\nconst faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nconst faChain = faLink;\nconst faEarListen = {\n prefix: 'fas',\n iconName: 'ear-listen',\n icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1c0 0 0 0-.1 0c0 0 0 0 0 0L384 32 398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78l0 6.1c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112l0-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nconst faAssistiveListeningSystems = faEarListen;\nconst faTreeCity = {\n prefix: 'fas',\n iconName: 'tree-city',\n icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 144 40 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 24 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48l-160 0-96 0c-26.5 0-48-21.5-48-48l0-416zm64 32l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 272l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80l-16 0 0 160c0 18-15 32-32 32c-18 0-32-14-32-32l0-160-16 0c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nconst faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nconst faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416 32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-1.8 0 18-48 159.6 0 18 48-1.8 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-25.8 0L254 52.8zM279.8 304l-111.6 0L224 155.1 279.8 304z\"]\n};\nconst faTableCellsRowLock = {\n prefix: 'fas',\n iconName: 'table-cells-row-lock',\n icon: [640, 512, [], \"e67a\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 224l0 64 88 0 0-64-88 0zm232 0l-88 0 0 64 88 0 0-64zM152 352l-88 0 0 64 88 0 0-64zm56 0l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faRupiahSign = {\n prefix: 'fas',\n iconName: 'rupiah-sign',\n icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160zm256-96l80 0c61.9 0 112 50.1 112 112s-50.1 112-112 112l-48 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128 0-160c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48l-48 0 0 96 48 0z\"]\n};\nconst faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n};\nconst faSearch = faMagnifyingGlass;\nconst faTableTennisPaddleBall = {\n prefix: 'fas',\n iconName: 'table-tennis-paddle-ball',\n icon: [512, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M416 288c-50.1 0-93.6 28.8-114.6 70.8L68.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C471.8 297.6 445 288 416 288zM49.3 151.9L290.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3l-2.7 0c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L88.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32C3.1 464.3-.3 455.7 0 446.9s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8C45.5 285.5 32 252.9 32 219l0-2.7c0-22.8 6.1-44.9 17.3-64.3zM416 320a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faPingPongPaddleBall = faTableTennisPaddleBall;\nconst faTableTennis = faTableTennisPaddleBall;\nconst faPersonDotsFromLine = {\n prefix: 'fas',\n iconName: 'person-dots-from-line',\n icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176A88 88 0 1 0 288 0a88 88 0 1 0 0 176zM78.7 372.9c15-12.5 50-34.4 97.3-50.1L176 432l224 0 0-109.3c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l528 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 464zM224 280a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM96 240a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm368 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faDiagnoses = faPersonDotsFromLine;\nconst faTrashCanArrowUp = {\n prefix: 'fas',\n iconName: 'trash-can-arrow-up',\n icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128l384 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L200 408c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nconst faTrashRestoreAlt = faTrashCanArrowUp;\nconst faNairaSign = {\n prefix: 'fas',\n iconName: 'naira-sign',\n icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64l0 192-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 100.2 0 97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6l0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192-57.5 0L122.6 46.3zM305.1 320l14.9 0 0 22.3L305.1 320zM185.5 256L128 256l0-86.3L185.5 256z\"]\n};\nconst faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l45.5 0c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5L488 384c13.3 0 24-10.7 24-24s-10.7-24-24-24l-288.3 0c-11.5 0-21.4-8.2-23.6-19.5L170.7 288l288.5 0c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32L360 32l0 102.1 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23L312 32 120.1 32C111 12.8 91.6 0 69.5 0L24 0zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24l0 72L48 96C21.5 96 0 117.5 0 144L0 300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9L32 464c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-92.1c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9L384 144c0-26.5-21.5-48-48-48l-16 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l-32 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l-48 0 0-72zm0 136l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faFilePen = {\n prefix: 'fas',\n iconName: 'file-pen',\n icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nconst faFileEdit = faFilePen;\nconst faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.3-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8l0 464c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488L0 24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 144zM80 352c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 336c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 240z\"]\n};\nconst faSquarePen = {\n prefix: 'fas',\n iconName: 'square-pen',\n icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nconst faPenSquare = faSquarePen;\nconst faPencilSquare = faSquarePen;\nconst faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8l80 0c4.4 0 8 3.6 8 8l0 72-96 0 0-72zm176 72l-32 0 0-72c0-30.9-25.1-56-56-56L152 0C121.1 0 96 25.1 96 56l0 72-32 0c-35.3 0-64 28.7-64 64L0 416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64zM112 224l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faPersonCircleExclamation = {\n prefix: 'fas',\n iconName: 'person-circle-exclamation',\n icon: [576, 512, [], \"e53f\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nconst faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm368 96L96 192l0 128 352 0 0-128z\"]\n};\nconst faBattery = faBatteryFull;\nconst faBattery5 = faBatteryFull;\nconst faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [128369, 9760], \"f714\", \"M368 128c0 44.4-25.4 83.5-64 106.4l0 21.6c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-21.6c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z\"]\n};\nconst faCodeCompare = {\n prefix: 'fas',\n iconName: 'code-compare',\n icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9l0 40 16 0c35.3 0 64-28.7 64-64l0-166.7C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3L464 320c0 70.7-57.3 128-128 128l-16 0 0 40zM456 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9l0-40-16 0c-35.3 0-64 28.7-64 64l0 166.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3L48 192c0-70.7 57.3-128 128-128l16 0 0-40zM56 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"]\n};\nconst faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM64 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faListDots = faListUl;\nconst faSchoolLock = {\n prefix: 'fas',\n iconName: 'school-lock',\n icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96 592 96c26.5 0 48 21.5 48 48l0 128c0-61.9-50.1-112-112-112s-112 50.1-112 112l0 24.6c-19.1 11.1-32 31.7-32 55.4l-63.7 0-.3 0c-35.3 0-64 28.7-64 64l0 96 64 0s0 0 0 0L48 512c-26.5 0-48-21.5-48-48L0 144c0-26.5 21.5-48 48-48l118.3 0L302.2 5.4zM80 208l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm0 128l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120l0 16 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faTowerCell = {\n prefix: 'fas',\n iconName: 'tower-cell',\n icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448l220.6 0 20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384l-162.4 0 14.5-32 133.3 0 14.5 32zM288 205.3L325.6 288l-75.2 0L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nconst faDownLong = {\n prefix: 'fas',\n iconName: 'down-long',\n icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M2 334.5c-3.8 8.8-2 19 4.6 26l136 144c4.5 4.8 10.8 7.5 17.4 7.5s12.9-2.7 17.4-7.5l136-144c6.6-7 8.4-17.2 4.6-26s-12.5-14.5-22-14.5l-72 0 0-288c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32l0 288-72 0c-9.6 0-18.2 5.7-22 14.5z\"]\n};\nconst faLongArrowAltDown = faDownLong;\nconst faRankingStar = {\n prefix: 'fas',\n iconName: 'ranking-star',\n icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-128 0zM32 320c-17.7 0-32 14.3-32 32L0 480c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L32 320zm416 96l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32l0 16 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 48 152 0c22.1 0 40 17.9 40 40c0 5.3-1 10.5-3.1 15.4L368 400 80 400 3.1 215.4C1 210.5 0 205.3 0 200c0-22.1 17.9-40 40-40l152 0 0-48-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-16c0-17.7 14.3-32 32-32zM38.6 473.4L80 432l288 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L54.6 512C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nconst faPersonHarassing = {\n prefix: 'fas',\n iconName: 'person-harassing',\n icon: [576, 512, [], \"e549\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9 88 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-244.7 47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7l-35.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344l0 58.7-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9L576 344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16l56 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-56 0c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nconst faBrazilianRealSign = {\n prefix: 'fas',\n iconName: 'brazilian-real-sign',\n icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32l0 18.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5l-1.7 0c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4l0 3.4c0 51.2-33.6 94.6-80 109.2l0 21.3c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-19.4c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5l0-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2L368 32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160z\"]\n};\nconst faLandmarkDome = {\n prefix: 'fas',\n iconName: 'landmark-dome',\n icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0l16 0c13.3 0 24 10.7 24 24l0 10.7C368.4 48.1 431.9 111.6 445.3 192l2.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 256c-17.7 0-32-14.3-32-32s14.3-32 32-32l2.7 0C80.1 111.6 143.6 48.1 224 34.7L224 24c0-13.3 10.7-24 24-24zM64 288l64 0 0 128 40 0 0-128 64 0 0 128 48 0 0-128 64 0 0 128 40 0 0-128 64 0 0 132.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 288z\"]\n};\nconst faLandmarkAlt = faLandmarkDome;\nconst faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2 160 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nconst faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64l0 288 512 0 0-288L64 64zM0 64C0 28.7 28.7 0 64 0L576 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 416c-35.3 0-64-28.7-64-64L0 64zM128 448l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-384 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faTelevision = faTv;\nconst faTvAlt = faTv;\nconst faShrimp = {\n prefix: 'fas',\n iconName: 'shrimp',\n icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64l1 0c3.7 88.9 77 160 167 160l56 0 0-192-24 0L88.8 128 64 128c-17.7 0-32-14.3-32-32s14.3-32 32-32l400 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L64 32zM224 456c0 13.3 10.7 24 24 24l72 0 0-72.2-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3l0 69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128l-16 0 0 192 18.3 0c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faListCheck = {\n prefix: 'fas',\n iconName: 'list-check',\n icon: [512, 512, [\"tasks\"], \"f0ae\", \"M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faTasks = faListCheck;\nconst faJugDetergent = {\n prefix: 'fas',\n iconName: 'jug-detergent',\n icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24l0 24 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 96C74.7 96 64 85.3 64 72s10.7-24 24-24l8 0 0-24zM0 256c0-70.7 57.3-128 128-128l128 0c70.7 0 128 57.3 128 128l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256zm256 0l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320l-64 0c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n};\nconst faUserCircle = faCircleUser;\nconst faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3l-91.4 0zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7l0-187.8L591.4 312z\"]\n};\nconst faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c53 0 96-43 96-96s-43-96-96-96L320 0c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32l32 0c53 0 96-43 96-96s-43-96-96-96L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32zM128 512l32 0c53 0 96-43 96-96s-43-96-96-96L32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nconst faCarBurst = {\n prefix: 'fas',\n iconName: 'car-burst',\n icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zm-17 131a24 24 0 1 1 -12.4 46.4 24 24 0 1 1 12.4-46.4zm217.9 83.2A24 24 0 1 1 545 358.1a24 24 0 1 1 -46.4-12.4z\"]\n};\nconst faCarCrash = faCarBurst;\nconst faY = {\n prefix: 'fas',\n iconName: 'y',\n icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3 160 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-149.7L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nconst faPersonSnowboarding = {\n prefix: 'fas',\n iconName: 'person-snowboarding',\n icon: [512, 512, [127938, \"snowboarding\"], \"f7ce\", \"M209.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6l28.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-28.2 0c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L192 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM139 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.3-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L139 350.1zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faSnowboarding = faPersonSnowboarding;\nconst faTruckFast = {\n prefix: 'fas',\n iconName: 'truck-fast',\n icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48l0 48L16 96c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 208 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 160l-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l16 0 176 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 224l-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 288l0 128c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64 0-32 0-18.7c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7L416 96l0-48c0-26.5-21.5-48-48-48L112 0zM544 237.3l0 18.7-128 0 0-96 50.7 0L544 237.3zM160 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faShippingFast = faTruckFast;\nconst faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9l0 57.1c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-57.1L48 93.3l0 65.1 15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9l-32 0c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4l0-71.8C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7L30.7 512C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6z\"]\n};\nconst faCircleHalfStroke = {\n prefix: 'fas',\n iconName: 'circle-half-stroke',\n icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192l0 384c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faAdjust = faCircleHalfStroke;\nconst faClapperboard = {\n prefix: 'fas',\n iconName: 'clapperboard',\n icon: [512, 512, [], \"e131\", \"M448 32l-86.1 0-1 1-127 127 92.1 0 1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128l0-64c0-15.1-5.3-29.1-14-40l-104 104L512 160zM294.1 32l-92.1 0-1 1L73.9 160l92.1 0 1-1 127-127zM64 32C28.7 32 0 60.7 0 96l0 64 6.1 0 1-1 127-127L64 32zM512 192L0 192 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-224z\"]\n};\nconst faCircleRadiation = {\n prefix: 'fas',\n iconName: 'circle-radiation',\n icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 64a192 192 0 1 1 0 384 192 192 0 1 1 0-384zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faRadiationAlt = faCircleRadiation;\nconst faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nconst faBaseballBall = faBaseball;\nconst faJetFighterUp = {\n prefix: 'fas',\n iconName: 'jet-fighter-up',\n icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2l0 77-144 84L48 280c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 56 0 32 0 24c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 144 0 0 32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12l0 16c0 8.8 7.2 16 16 16l96 0 0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64 96 0c8.8 0 16-7.2 16-16l0-16c0-4.6-2-9-5.5-12L320 416.7l0-32.7 144 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24 0-32 0-56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 18.8-144-84 0-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nconst faDiagramProject = {\n prefix: 'fas',\n iconName: 'diagram-project',\n icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 16 192 0 0-16c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-16-192 0 0 16c0 1.7-.1 3.4-.3 5L272 288l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-1.7 .1-3.4 .3-5L144 224l-96 0c-26.5 0-48-21.5-48-48L0 80z\"]\n};\nconst faProjectDiagram = faDiagramProject;\nconst faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M208 0L332.1 0c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9L448 336c0 26.5-21.5 48-48 48l-192 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48zM48 128l80 0 0 64-64 0 0 256 192 0 0-32 64 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 176c0-26.5 21.5-48 48-48z\"]\n};\nconst faVolumeXmark = {\n prefix: 'fas',\n iconName: 'volume-xmark',\n icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faVolumeMute = faVolumeXmark;\nconst faVolumeTimes = faVolumeXmark;\nconst faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32l0 208c0 8.8 7.2 16 16 16s16-7.2 16-16l0-176c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-112c0-17.7 14.3-32 32-32s32 14.3 32 32l0 195.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512l-19.2 0c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6l0-272c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-208c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nconst faGrip = {\n prefix: 'fas',\n iconName: 'grip',\n icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm32-192l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm32-192l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48z\"]\n};\nconst faGripHorizontal = faGrip;\nconst faShareFromSquare = {\n prefix: 'fas',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M352 224l-46.5 0c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8l-2.5 0c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144l80 0 0-61.3C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2l-3.7 0c-17.7 0-32-14.3-32-32l0-64zM80 96c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-48c0-17.7 14.3-32 32-32s32 14.3 32 32l0 48c0 44.2-35.8 80-80 80L80 512c-44.2 0-80-35.8-80-80L0 112C0 67.8 35.8 32 80 32l48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 96z\"]\n};\nconst faShareSquare = faShareFromSquare;\nconst faChildCombatant = {\n prefix: 'fas',\n iconName: 'child-combatant',\n icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176 128A64 64 0 1 0 176 0a64 64 0 1 0 0 128zm-8 352l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-179.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9l-12.3 0c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5 104 480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0L432 0 416 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l0 100.3c-9.6 5.5-16 15.9-16 27.7l0 32c-17.7 0-32 14.3-32 32l0 144c0 17.7 14.3 32 32 32l16 0 0 96c0 8.8 7.2 16 16 16l59.5 0c10.4 0 18-9.8 15.5-19.9L484 400l44 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-48 0 0-26.7 53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2l0-84.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 56-16 5.3L480 160c0-11.8-6.4-22.2-16-27.7L464 16c0-8.8-7.2-16-16-16z\"]\n};\nconst faChildRifle = faChildCombatant;\nconst faGun = {\n prefix: 'fas',\n iconName: 'gun',\n icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8L32 64C14.3 64 0 78.3 0 96L0 208c0 17.7 14.3 32 32 32l10 0c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480l96 0c14.7 0 27.5-10 31-24.2L217 352l104.5 0c23.7 0 44.8-14.9 52.7-37.2L400.9 240l31.1 0c8.5 0 16.6-3.4 22.6-9.4L477.3 208l66.7 0c17.7 0 32-14.3 32-32l0-80c0-17.7-14.3-32-32-32l-16 0 0-8zM321.4 304L229 304l16-64 105 0-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128l384 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faSquarePhone = {\n prefix: 'fas',\n iconName: 'square-phone',\n icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nconst faPhoneSquare = faSquarePhone;\nconst faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-144z\"]\n};\nconst faAdd = faPlus;\nconst faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z\"]\n};\nconst faComputer = {\n prefix: 'fas',\n iconName: 'computer',\n icon: [640, 512, [], \"e4e5\", \"M384 96l0 224L64 320 64 96l320 0zM64 32C28.7 32 0 60.7 0 96L0 320c0 35.3 28.7 64 64 64l117.3 0-10.7 32L96 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-74.7 0-10.7-32L384 384c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 32zm464 0c-26.5 0-48 21.5-48 48l0 352c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48l-64 0zm16 64l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [384, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\"]\n};\nconst faClose = faXmark;\nconst faMultiply = faXmark;\nconst faRemove = faXmark;\nconst faTimes = faXmark;\nconst faArrowsUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-up-down-left-right',\n icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4L224 224l-114.7 0 9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L224 288l0 114.7-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4L288 288l114.7 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L288 224l0-114.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nconst faArrows = faArrowsUpDownLeftRight;\nconst faChalkboardUser = {\n prefix: 'fas',\n iconName: 'chalkboard-user',\n icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64L576 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64l-239.2 0c-11.8-25.5-29.9-47.5-52.4-64l99.6 0 0-32c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 32 64 0 0-288L224 64l0 49.1C205.2 102.2 183.3 96 160 96l0-32zm0 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM133.3 352l53.3 0C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7L26.7 512C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nconst faChalkboardTeacher = faChalkboardUser;\nconst faPesoSign = {\n prefix: 'fas',\n iconName: 'peso-sign',\n icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64l0 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c68.4 0 127.7-39 156.8-96l19.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-.7 0c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16l.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-19.2 0C303.7 71 244.4 32 176 32L64 32zm190.4 96L96 128l0-32 80 0c30.5 0 58.2 12.2 78.4 32zM96 192l190.9 0c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16L96 224l0-32zm158.4 96c-20.2 19.8-47.9 32-78.4 32l-80 0 0-32 158.4 0z\"]\n};\nconst faBuildingShield = {\n prefix: 'fas',\n iconName: 'building-shield',\n icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 159-42.4 17L304 224l-32 0c-8.8 0-16 7.2-16 16l0 32 0 24.2 0 7.8c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8l0 187.8c68.2-33 91.5-99 95.4-149.7z\"]\n};\nconst faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [448, 512, [], \"f77c\", \"M152 88a72 72 0 1 1 144 0A72 72 0 1 1 152 88zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25l0 36.3-192 0 0-36.3c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nconst faUsersLine = {\n prefix: 'fas',\n iconName: 'users-line',\n icon: [640, 512, [], \"e592\", \"M211.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM32 256c0 17.7 14.3 32 32 32l85.6 0c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4l-96 0c-35.3 0-64 28.7-64 64zm461.6 32l82.4 0c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64l-96 0c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4l-96 0c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM321.6 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-32 0-32 0-72zm256 0c0-66.3 53.7-120 120-120l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-32 0-32 0-72z\"]\n};\nconst faQuoteLeftAlt = faQuoteLeft;\nconst faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64L266.3 0c26.2 0 49.7 15.9 59.4 40.2L373.7 160 480 160l0-33.8c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9l0 33.8 56 0c22.1 0 40 17.9 40 40l0 45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48l-80 0c0 17.7-14.3 32-32 32l-8.2 0c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8l0 8.2c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1L32 384c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l8.2 0c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6l0-.6 0-32 0-96zm170.3 0L160 64l0 96 32 0 112.7 0L266.3 64zM176 256a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM528 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nconst faTrashArrowUp = {\n prefix: 'fas',\n iconName: 'trash-arrow-up',\n icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128l384 0L394.8 467c-1.6 25.3-22.6 45-47.9 45l-245.8 0c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L200 408c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nconst faTrashRestore = faTrashArrowUp;\nconst faArrowDownUpLock = {\n prefix: 'fas',\n iconName: 'arrow-down-up-lock',\n icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 160 288l256 0 0-16c0-17.2 3.9-33.5 10.8-48L352 224l0-114.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3 288 224l-128 0-64 0-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 114.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128 64 0zM288 320l0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128-64 0zm240-80c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faLinesLeaning = {\n prefix: 'fas',\n iconName: 'lines-leaning',\n icon: [384, 512, [], \"e51e\", \"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32z\"]\n};\nconst faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nconst faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nconst faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 128zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 320z\"]\n};\nconst faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0l64 0 32 0L470.1 0c21.1 0 36.4 20.1 30.9 40.4L494.5 64 336 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l149.8 0-17.5 64L336 160c-8.8 0-16 7.2-16 16s7.2 16 16 16l123.6 0-17.5 64L336 256c-8.8 0-16 7.2-16 16s7.2 16 16 16l97.5 0L416 352l-256 0-8.7-96L64 256c-35.3 0-64-28.7-64-64L0 64zM145.5 192L133.8 64 64 64l0 128 81.5 0zM144 384l288 0c26.5 0 48 21.5 48 48l0 32c0 26.5-21.5 48-48 48l-288 0c-26.5 0-48-21.5-48-48l0-32c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32l384 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96L96 480c-53 0-96-43-96-96L0 128zm176 48l0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48l0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56c0-26.5-21.5-48-48-48zM48 208l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24zm176 48c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48zm80-176l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48z\"]\n};\nconst faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 96l128 0c35.3 0 64 28.7 64 64l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-70.7-57.3-128-128-128L32 32zM320 480c70.7 0 128-57.3 128-128l0-288c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 288c0 35.3-28.7 64-64 64l-128 0 0-224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l160 0z\"]\n};\nconst faIls = faShekelSign;\nconst faShekel = faShekelSign;\nconst faSheqel = faShekelSign;\nconst faSheqelSign = faShekelSign;\nconst faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2l0-385.3L384 90.8l0 385.3zm32-1.2l0-386.5L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3l0 334.8c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2l0 386.5L32.9 474.5C17.1 480.8 0 469.2 0 452.2L0 117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nconst faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2l0 82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9l0-107.2c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faPhotoFilm = {\n prefix: 'fas',\n iconName: 'photo-film',\n icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0L576 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64l0-224c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l80 0 48 0 144 0c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128l96 0 0 256 0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32 160 0 0 64c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm336 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPhotoVideo = faPhotoFilm;\nconst faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M448 480L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nconst faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0L109.6 0C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9c0 0 0 0-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3L448 384l-320 0 0-133.4c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3L64 384l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64 0-131.4c-4 1-8 1.8-12.3 2.3z\"]\n};\nconst faArrowTrendUp = {\n prefix: 'fas',\n iconName: 'arrow-trend-up',\n icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-82.7L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160 384 160z\"]\n};\nconst faPlugCircleMinus = {\n prefix: 'fas',\n iconName: 'plug-circle-minus',\n icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faSignHanging = {\n prefix: 'fas',\n iconName: 'sign-hanging',\n icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32l0 32 352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352-32 0C14.3 128 0 113.7 0 96S14.3 64 32 64l32 0 0-32C64 14.3 78.3 0 96 0zm96 160l256 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32z\"]\n};\nconst faSign = faSignHanging;\nconst faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M296 136l0-48 48 0 0 48-48 0zM288 32c-26.5 0-48 21.5-48 48l0 4L121.6 84C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36l66.9 0c-58.9 39.6-98.9 105-104 180L80 320c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-3.3 0c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1l64 0c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1l-3.3 0c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-4.5 0c-5-75-45.1-140.4-104-180l66.9 0c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36L400 84l0-4c0-26.5-21.5-48-48-48l-64 0zM88 376l48 0 0 48-48 0 0-48zm416 48l0-48 48 0 0 48-48 0z\"]\n};\nconst faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-90.2-70.7c.2-.4 .4-.9 .6-1.3c5.2-11.5 3.1-25-5.3-34.4l-7.4-8.3C497.3 319.2 480 273.9 480 226.8l0-18.8c0-77.4-55-142-128-156.8L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 19.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM406.2 416L160 222.1l0 4.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S115.4 416 128 416l278.2 0zm-40.9 77.3c12-12 18.7-28.3 18.7-45.3l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nconst faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM176 432l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faTabletAndroid = faTablet;\nconst faSchoolFlag = {\n prefix: 'fas',\n iconName: 'school-flag',\n icon: [576, 512, [], \"e56e\", \"M288 0L400 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-79.3 0 89.6 64L512 160c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-176 0 0-112c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 112L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l101.7 0L256 95.5 256 32c0-17.7 14.3-32 32-32zm48 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM80 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0zm368 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0zm384 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0z\"]\n};\nconst faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M86.6 9.4C74.1-3.1 53.9-3.1 41.4 9.4s-12.5 32.8 0 45.3L122.7 136 30.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L148.1 481.4c37.5 37.5 98.3 37.5 135.8 0L474.3 290.9c28.1-28.1 28.1-73.7 0-101.8L322.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L168 90.7 86.6 9.4zM168 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L429.1 234.3c3.1 3.1 3.1 8.2 0 11.3L386.7 288 67.5 288c1.4-5.4 4.2-10.4 8.4-14.6L168 181.3z\"]\n};\nconst faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nconst faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4l89.2 0c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176l0 89.2z\"]\n};\nconst faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [512, 512, [], \"f7aa\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72l0 22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7l0-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8l0 32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8l0-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [9001], \"f053\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nconst faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-4.3 15.2c-8.3-.6-16.8 0-25.2 1.9c-7.3 1.7-14.3 3.5-21.1 5.5l-5.5-12.7c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l4.4 10.4c-16.6 6.7-31.7 14.4-45.4 22.8L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l6 9c-13.7 11-25.5 22.8-35.8 34.9l-10-8c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L65.9 155c-1.8 2.8-3.5 5.7-5.1 8.5c-6.6 11.4-11.8 22.6-16 33l-8-3.2c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l10.4 4.2c-.2 .8-.4 1.5-.5 2.3c-2.2 9.3-3.4 17.3-4.1 23.4c-.4 3.1-.6 5.7-.8 7.8c-.1 1.1-.1 2-.2 2.8l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.1 1c0 0 0 0-.1 0L28 269.3c-.1 3.1 0 6.1 .2 9.1l-15.2 4.3C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l15.6-4.5c7.6 13.6 18.9 25 32.6 32.6L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l4.3-15.2c1.2 .1 2.4 .2 3.6 .2c15.6 .5 30.3-3.3 43-10.2l9 9c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-7.2-7.2c9.3-12.6 15.2-27.8 16.3-44.5l7.1 3c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.6-3.7c6.4-9.9 17.3-22.4 36.9-33.3l1.3 4.4c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-2.3-8.1c3.8-1.1 7.7-2.1 11.9-3.1c11.6-2.7 22.1-7.7 31.1-14.4l7.2 7.2c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-9-9c7.6-13.9 11.3-30.1 10.1-46.6l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-15.6 4.5c-7.7-13.9-19.1-25.1-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3zM112 272l-48-1.5c0 0 0 0 0 0c11.7 .4 27.3 .9 48 1.6zm16-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM322.7 489c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l4.3-15.2c8.3 .6 16.8 0 25.2-1.9c7.3-1.7 14.3-3.5 21.1-5.5l5.5 12.7c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-4.4-10.4c16.6-6.7 31.7-14.4 45.4-22.8L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-6-9c13.7-11 25.5-22.8 35.8-34.9l10 8c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574.1 357c1.8-2.8 3.5-5.7 5.1-8.5c6.6-11.4 11.8-22.6 16-33l8 3.2c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-10.4-4.2c.2-.8 .4-1.5 .5-2.3c2.2-9.3 3.4-17.3 4.1-23.4c.4-3.1 .6-5.7 .8-7.8c.1-1.1 .1-2 .2-2.8l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.1-1c0 0 0 0 .1 0l29.1 .9c.1-3.1 0-6.1-.2-9.1l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-15.6 4.5c-7.6-13.6-18.9-25-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.3 12.4l-4.3 15.2c-1.2-.1-2.4-.2-3.6-.2c-15.6-.5-30.3 3.3-43 10.2l-9-9c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l7.2 7.2c-9.3 12.6-15.2 27.8-16.3 44.5l-7.1-3c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.6 3.7c-6.4 9.9-17.3 22.4-36.9 33.3l-1.3-4.4c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l2.3 8.1c-3.8 1.1-7.7 2.1-11.9 3.1c-11.6 2.7-22.1 7.7-31.1 14.4l-7.2-7.2c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l9 9c-7.6 13.9-11.3 30.1-10.1 46.6l-15.2 4.3c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l15.6-4.5c7.7 13.9 19.1 25.1 32.6 32.6L322.7 489zM576 241.5c0 0 0 0 0 0c-11.7-.4-27.3-.9-48-1.6l48 1.5zM448 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nconst faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64l112 0 80 0 46.5 0c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8l0 12 0 16 0 48c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-13.8L273.9 352 240 352l-80 0-48 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l48 0 80 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-80 0L48 160c-26.5 0-48-21.5-48-48z\"]\n};\nconst faNotdef = {\n prefix: 'fas',\n iconName: 'notdef',\n icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7l0 268.6zM102.5 448l179.1 0L192 313.7 102.5 448zm128-192L320 390.3l0-268.6L230.5 256zM281.5 64L102.5 64 192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 48z\"]\n};\nconst faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M236.4 61.4L227 75.5c-21.3 32-59.4 48.5-97.3 42.1l-59.6-9.9C33.4 101.6 0 129.9 .1 167.1c0 15.9 6.4 31.2 17.6 42.5l29.2 29.2c11 11 17.2 25.9 17.2 41.5c0 15.8-6.4 30.9-17.7 42L33.3 335.1C22.2 345.9 16 360.7 16 376.2c0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6l10 0c27.2 0 53.7 9.3 75 26.3L287.8 467c10.5 8.4 23.6 13 37 13c32.7 0 59.3-26.5 59.3-59.3l0-25.2c0-34.9 21.4-66.2 53.9-78.8l36.9-14.3c22.4-8.7 37.2-30.3 37.2-54.3c0-28.1-20.1-52.3-47.8-57.3l-28-5.1c-36.5-6.7-65.4-34.5-73.6-70.7l-7.1-31.5C348.9 53.4 322.1 32 291.3 32c-22 0-42.6 11-54.9 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [384, 512, [], \"f22d\", \"M192 144a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm0 288a176 176 0 1 0 0-352 176 176 0 1 0 0 352z\"]\n};\nconst faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [9002], \"f054\", \"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nconst faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0c-17.7 0-32-14.3-32-32l0-128 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96l112 0zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-128c0-53-43-96-96-96L304 96z\"]\n};\nconst faCarRear = {\n prefix: 'fas',\n iconName: 'car-rear',\n icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96l181.2 0c13.6 0 25.7 8.6 30.2 21.4L402.9 192l-293.8 0 26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256l0 80c0 23.7 12.9 44.4 32 55.4L32 448c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 256 0 0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-56.6c19.1-11.1 32-31.7 32-55.4l0-80c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32L165.4 32c-40.8 0-77.1 25.8-90.6 64.3zM208 272l96 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm360-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faCarAlt = faCarRear;\nconst faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [448, 512, [], \"e06b\", \"M128 32l0 96 128 0 0-32 60.1 0c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4L256 32c0-17.7-14.3-32-32-32L160 0c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512l186.4 0c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7l-149.1 0zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nconst faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2l0-256c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9l0 17.1 0 128 0 5.8-32-25.1L416 128c0-35.3-28.7-64-64-64L113.9 64 38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5l0 256c0 35.3 28.7 64 64 64l256 0c23.4 0 43.9-12.6 55-31.3z\"]\n};\nconst faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [576, 512, [\"battery-2\"], \"f243\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm112 96l-96 0 0 128 96 0 0-128z\"]\n};\nconst faBattery2 = faBatteryQuarter;\nconst faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192l0 4L0 304 0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-229.5 0L494.8 47zM368 240a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM80 256c0-8.8 7.2-16 16-16l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 336c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192L.1 192C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0 0-64zM80 416a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm240 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faCarriageBaby = faBabyCarriage;\nconst faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 88.4 71.6 160 160 160s160-71.6 160-160l0-288c0-35.3-28.7-64-64-64L64 0zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm48-176a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-80a48 48 0 1 1 0-96 48 48 0 1 1 0 96z\"]\n};\nconst faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M96 382.1l0-88.8c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4l-88.8 0L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nconst faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l120.4 0c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4L576 448c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40l0 164.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48l0 7 0 73c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-55.7c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334L32 372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1L304 512c70.7 0 128-57.3 128-128l0-64 0-32c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2L272 40c0-22.1-17.9-40-40-40z\"]\n};\nconst faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128A64 64 0 1 0 0 128a64 64 0 1 0 128 0zM384 384a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faPercentage = faPercent;\nconst faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96L0 304l0 80 0 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16L416 384l33.6 0c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16l1.6 0c17.7 0 32-14.3 32-32l0-64 0-16 0-10.3c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5L480 144l0-48c0-35.3-28.7-64-64-64L64 32zM585 256l-105 0 0-64 48.8 0c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGlassWaterDroplet = {\n prefix: 'fas',\n iconName: 'glass-water-droplet',\n icon: [384, 512, [], \"e4f5\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM83 297.5L66.4 64l251.3 0L301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C161.7 125.9 128 172 128 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nconst faDisplay = {\n prefix: 'fas',\n iconName: 'display',\n icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 288L64 352 64 64l448 0z\"]\n};\nconst faFaceSmile = {\n prefix: 'fas',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSmile = faFaceSmile;\nconst faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0L320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-29.5 0 11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3L32 352c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64 64 64C46.3 64 32 49.7 32 32zM160 384l64 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96z\"]\n};\nconst faThumbTack = faThumbtack;\nconst faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [127942], \"f091\", \"M400 0L176 0c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8L24 64C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9L192 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-26.1 0C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24L446.4 64c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112l84.4 0c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6l84.4 0c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nconst faPersonPraying = {\n prefix: 'fas',\n iconName: 'person-praying',\n icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432 72 432c-22.1 0-40 17.9-40 40s17.9 40 40 40l208 0c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nconst faPray = faPersonPraying;\nconst faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6l0-12.1L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0l18.1 0c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nconst faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32l0 208-64 0 0-208c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM93.3 51.2L175.9 240l-69.9 0L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5 69.9 0 26.1 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363l0-27c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nconst faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c-17.5 17.5-30.1 38-37.8 59.8c-5.9 16.7-24.2 25.4-40.8 19.5s-25.4-24.2-19.5-40.8C55.6 150.7 73.2 122 97.6 97.6c87.2-87.2 228.3-87.5 315.8-1L455 55c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 128c0 13.3-10.7 24-24 24l-8.4 0c0 0 0 0 0 0L344 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l41.1-41.1c-62.6-61.5-163.1-61.2-225.3 1zM16 312c0-13.3 10.7-24 24-24l7.6 0 .7 0L168 288c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-41.1 41.1c62.6 61.5 163.1 61.2 225.3-1c17.5-17.5 30.1-38 37.8-59.8c5.9-16.7 24.2-25.4 40.8-19.5s25.4 24.2 19.5 40.8c-10.8 30.6-28.4 59.3-52.9 83.8c-87.2 87.2-228.3 87.5-315.8 1L57 457c-6.9 6.9-17.2 8.9-26.2 5.2S16 449.7 16 440l0-119.6 0-.7 0-7.6z\"]\n};\nconst faSyncAlt = faRotate;\nconst faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z\"]\n};\nconst faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32l0 64 120 0c39.8 0 72 32.2 72 72l0 272c0 39.8-32.2 72-72 72l-304 0c-39.8 0-72-32.2-72-72l0-272c0-39.8 32.2-72 72-72l120 0 0-64c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224l16 0 0 192-16 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-16 0 0-192 16 0z\"]\n};\nconst faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [512, 512, [9774], \"f67c\", \"M224 445.3l0-121.8-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8l0-174.2C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5l0 121.8c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3l0 174.2L422.8 351.1zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faGears = {\n prefix: 'fas',\n iconName: 'gears',\n icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8l-.7 0c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCogs = faGears;\nconst faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M0 488L0 171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4L640 488c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-264c0-17.7-14.3-32-32-32l-384 0c-17.7 0-32 14.3-32 32l0 264c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24l0-56 384 0 0 56c0 13.3-10.7 24-24 24zM128 400l0-64 384 0 0 64-384 0zm0-96l0-80 384 0 0 80-384 0z\"]\n};\nconst faArrowUpRightDots = {\n prefix: 'fas',\n iconName: 'arrow-up-right-dots',\n icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l50.7 0L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3l0 50.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L160 0zM576 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM448 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm128 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM272 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM576 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-48-80a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0c28.5 0 53.6 18.7 61.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2c0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6c-14.8 0-29.3-5.1-40.8-14.3l-55.4-44.3c-4.5-3.6-9.3-6.7-14.5-9.2c-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9C47.8 458.2 16 431.6 16 396.5c0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1c0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9c0-33.4 30.1-58.8 63-53.2l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"]\n};\nconst faFaceGrinHearts = {\n prefix: 'fas',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nconst faGrinHearts = faFaceGrinHearts;\nconst faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M64 0L242.7 0c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32l0 32 64 0 0-64-32 0zM64 352l80 0 96 0 80 0 0-64-80 0-96 0-80 0 0 64zM320 224c0-17.7-14.3-32-32-32l-32 0 0 64 64 0 0-32zM160 192l0 64 64 0 0-64-64 0zM288 448c17.7 0 32-14.3 32-32l0-32-64 0 0 64 32 0zM160 384l0 64 64 0 0-64-64 0zM64 416c0 17.7 14.3 32 32 32l32 0 0-64-64 0 0 32z\"]\n};\nconst faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l96 0c8.8 0 16 7.2 16 16l0 96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2l0 17.8 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-17.8C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112L0 16C0 7.2 7.2 0 16 0l96 0zM352 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nconst faTransgenderAlt = faTransgender;\nconst faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4l0 25.6 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 16c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-25.6C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224a112 112 0 1 0 224 0A112 112 0 1 0 80 224z\"]\n};\nconst faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nconst faLevelDown = faArrowTurnDown;\nconst faPersonFallingBurst = {\n prefix: 'fas',\n iconName: 'person-falling-burst',\n icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2L32 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320l1.4 0 80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80A48 48 0 1 0 0 80a48 48 0 1 0 96 0zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nconst faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nconst faTicketSimple = {\n prefix: 'fas',\n iconName: 'ticket-simple',\n icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 64c0 8.8-7.4 15.7-15.7 18.6C541.5 217.1 528 235 528 256s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6l0 64c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64l0-64c0-8.8 7.4-15.7 15.7-18.6C34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192l0-64z\"]\n};\nconst faTicketAlt = faTicketSimple;\nconst faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n};\nconst faAnglesLeft = {\n prefix: 'fas',\n iconName: 'angles-left',\n icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nconst faAngleDoubleLeft = faAnglesLeft;\nconst faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48L0 80zM64 96l0 64 64 0 0-64L64 96zM0 336c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96zm64 16l0 64 64 0 0-64-64 0zM304 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48zm80 64l-64 0 0 64 64 0 0-64zM256 304c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16l0 96c0 8.8-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-160zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z\"]\n};\nconst faClockRotateLeft = {\n prefix: 'fas',\n iconName: 'clock-rotate-left',\n icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9L0 168c0 13.3 10.7 24 24 24l110.1 0c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1c0-13.3-10.7-24-24-24z\"]\n};\nconst faHistory = faClockRotateLeft;\nconst faFaceGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0c0 0 0 0 0 0zm160 0s0 0 0 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0z\"]\n};\nconst faGrinBeamSweat = faFaceGrinBeamSweat;\nconst faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [\"arrow-right-from-file\"], \"f56e\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 128-168 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l168 0 0 112c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM384 336l0-48 110.1 0-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39L384 336zm0-208l-128 0L256 0 384 128z\"]\n};\nconst faArrowRightFromFile = faFileExport;\nconst faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nconst faShieldBlank = faShield;\nconst faArrowUpShortWide = {\n prefix: 'fas',\n iconName: 'arrow-up-short-wide',\n icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0z\"]\n};\nconst faSortAmountUpAlt = faArrowUpShortWide;\nconst faHouseMedical = {\n prefix: 'fas',\n iconName: 'house-medical',\n icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l320.4 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0zM256 208c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faGolfBallTee = {\n prefix: 'fas',\n iconName: 'golf-ball-tee',\n icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160L85.8 352C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zm-52.3-49.3c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zM96 416c0-17.7 14.3-32 32-32l64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0c-8.8 0-16 7.2-16 16l0 16c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-16c0-8.8-7.2-16-16-16l-16 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faGolfBall = faGolfBallTee;\nconst faCircleChevronLeft = {\n prefix: 'fas',\n iconName: 'circle-chevron-left',\n icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nconst faChevronCircleLeft = faCircleChevronLeft;\nconst faHouseChimneyWindow = {\n prefix: 'fas',\n iconName: 'house-chimney-window',\n icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24l-80 0z\"]\n};\nconst faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.7-9.2L288 94.6z\"]\n};\nconst faTentArrowTurnLeft = {\n prefix: 'fas',\n iconName: 'tent-arrow-turn-left',\n icon: [576, 512, [], \"e580\", \"M120.1 41.8c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120 456 120c39.8 0 72 32.2 72 72l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-66.3-53.7-120-120-120L86.5 72l33.5-30.2zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faTents = {\n prefix: 'fas',\n iconName: 'tents',\n icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5L608 352c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nconst faMagic = faWandMagic;\nconst faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32l52.1 0c12.7 0 24.9 5.1 33.9 14.1L496 64l56 0c13.3 0 24 10.7 24 24l0 24c0 44.2-35.8 80-80 80l-32 0-16 0-21.3 0-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-115.2c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2L160 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-230.2c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192l30 0 16 0 159.8 0L416 256.1zM464 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nconst faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nconst faWineGlassEmpty = {\n prefix: 'fas',\n iconName: 'wine-glass-empty',\n icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6l0 99.6-48 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0-99.6c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0L64 0zM81.9 203.1L93.4 64l133.1 0 11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nconst faWineGlassAlt = faWineGlassEmpty;\nconst faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M512 240.2l0 15.8L0 256c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8l0 128c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 288l512 0z\"]\n};\nconst faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7l0 72 0 264c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6L448 147 192 223.8 192 432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6L128 200l0-72c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nconst faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M320 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l131.2 0C178 151 242.6 96 320 96s142 55 156.8 128L608 224c17.7 0 32 14.3 32 32s-14.3 32-32 32l-131.2 0z\"]\n};\nconst faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 96a96 96 0 1 1 192 0A96 96 0 1 1 320 96zM144 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L192 112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L32 112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3l0-50.7c0-8.8 7.2-16 16-16s16 7.2 16 16l0 50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faPersonBiking = {\n prefix: 'fas',\n iconName: 'person-biking',\n icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1 288 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-52.8 0zM56 384a72 72 0 1 1 144 0A72 72 0 1 1 56 384zm200 0A128 128 0 1 0 0 384a128 128 0 1 0 256 0zm184 0a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm200 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nconst faBiking = faPersonBiking;\nconst faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [576, 512, [129529], \"f51a\", \"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6l0 29.1L364.3 320l29.1 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8C76.5 307.5 64 337.7 64 369.2c0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9C0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8c30.6-30.6 45.9-73.1 42.3-115.8z\"]\n};\nconst faShieldHeart = {\n prefix: 'fas',\n iconName: 'shield-heart',\n icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nconst faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 48 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 0 32 0 64c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32l0 96c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-64 0 0-160-32 0 0-128-32 0 0-96-32 0 0 96 32 0 0 128 32 0 0 160-80 0 0-48c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 48-80 0 0-160 32 0 0-128 32 0 0-96-32 0 0 96-32 0 0 128-32 0 0 160-64 0c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l0-96c0-17.7 14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l0-64 0-32 0-8c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-32-80l0 32 64 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faEarthOceania = {\n prefix: 'fas',\n iconName: 'earth-oceania',\n icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3l-29.9 0c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faGlobeOceania = faEarthOceania;\nconst faSquareXmark = {\n prefix: 'fas',\n iconName: 'square-xmark',\n icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faTimesSquare = faSquareXmark;\nconst faXmarkSquare = faSquareXmark;\nconst faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128l95.1 0 11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128l58.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-68.9 0L325.8 320l58.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-68.9 0-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7-95.1 0-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384 32 384c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 21.3-128L64 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320l95.1 0 21.3-128-95.1 0z\"]\n};\nconst faUpRightAndDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'up-right-and-down-left-from-center',\n icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0L488 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512L24 512c-13.3 0-24-10.7-24-24L0 344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nconst faExpandAlt = faUpRightAndDownLeftFromCenter;\nconst faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32-80 0-48 0-48 0c-26.5 0-48 21.5-48 48l0 64.8c0 19 11.2 36.2 28.5 43.9l67.5 30L96 368c0 26.5 21.5 48 48 48l259.1 0c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8L288 160l0-32 32 0zM96 208l0 86.1L48 272.8 48 208l48 0z\"]\n};\nconst faT = {\n prefix: 'fas',\n iconName: 't',\n icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l128 0 0 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-352 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 32 32 32z\"]\n};\nconst faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2l32 0c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-16-64 0 0 16c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-17.6c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2l0 10.8c0 17.7 14.3 32 32 32l32 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-76c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12l0 76c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-118.9L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1 7.2 0L256 64l32 0c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faChartColumn = {\n prefix: 'fas',\n iconName: 'chart-column',\n icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm128-64l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zM480 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1l0 29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9l0-29.7zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1l0 29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1l0-29.7c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nconst faVialCircleCheck = {\n prefix: 'fas',\n iconName: 'vial-circle-check',\n icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32l64 0 64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 170.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96L32 96C14.3 96 0 81.7 0 64zM96 96l0 96 64 0 0-96L96 96zM224 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faPersonArrowDownToLine = {\n prefix: 'fas',\n iconName: 'person-arrow-down-to-line',\n icon: [640, 512, [], \"e538\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352l0-96 16 0 0 96-16 0zm-64 0l-88 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l120 0 80 0 376 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-344 0 0-191.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 448zM464 64l0 242.7-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7 528 64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M144 320a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm119.8 0c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144l352 0c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80l-112.5 0zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224l-2.6 0C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480l0 2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288l2.6 0c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32l0-2.6C288 13.2 274.8 0 258.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faPersonWalkingLuggage = {\n prefix: 'fas',\n iconName: 'person-walking-luggage',\n icon: [576, 512, [], \"e554\", \"M432 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nconst faUpDown = {\n prefix: 'fas',\n iconName: 'up-down',\n icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160l56 0 0 192-56 0c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4l-56 0 0-192 56 0c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nconst faArrowsAltV = faUpDown;\nconst faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M481.2 0C417 0 363.5 46.5 353.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM367.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C241.3 114.6 210.8 96 176 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96l271.9 0zM85.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nconst faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M96 32l0 32L48 64C21.5 64 0 85.5 0 112l0 48 448 0 0-48c0-26.5-21.5-48-48-48l-48 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L160 64l0-32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192L0 192 0 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-272z\"]\n};\nconst faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80L0 336c0 26.5 21.5 48 48 48l17.1 0c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96L488 384l8 0 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-240c0-26.5-21.5-48-48-48L48 32zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21L64 112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-112a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nconst faHaykal = faBahai;\nconst faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0L141.3 0C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64zM160 88l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0L416 0l32 0 16 0c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48l-21.5 0c-17 0-33.3-6.7-45.3-18.7L480 160l-32 0 0 21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512L496 512l-64 0L32.3 512c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1l0-45.5 0-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3l0 .6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87 0 27.5c0 32.8 8.4 64.8 24 93l-232 0c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nconst faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32l0 128c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64l32 0 0-128-32 0c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32l0 128s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64l32 0 0-128-32 0c-35.3 0-64 28.7-64 64z\"]\n};\nconst faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faPlusCircle = faCirclePlus;\nconst faFaceGrinTongueWink = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448l0-46.9c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2l0 47.3c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6l0 45.4c0 35.3-28.7 64-64 64s-64-28.7-64-64l0-45.4c0-14.7 11.9-26.6 26.6-26.6l2 0c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9l2 0c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faGrinTongueWink = faFaceGrinTongueWink;\nconst faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 272 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-16 0-78.3 0c-29.1 0-57.3 9.9-80 28L68.8 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0 160.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2c.3 0 .6 0 .9 0c0 0 0 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nconst faPlugCircleExclamation = {\n prefix: 'fas',\n iconName: 'plug-circle-exclamation',\n icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faLinkSlash = {\n prefix: 'fas',\n iconName: 'link-slash',\n icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nconst faChainBroken = faLinkSlash;\nconst faChainSlash = faLinkSlash;\nconst faUnlink = faLinkSlash;\nconst faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M288 448L64 448l0-224 64 0 0-64-64 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-64-64 0 0 64zm-64-96l224 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L224 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64z\"]\n};\nconst faPersonWalkingArrowLoopLeft = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-loop-left',\n icon: [640, 512, [], \"e551\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384l18.7 0c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96l-18.7 0 25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nconst faArrowUpZA = {\n prefix: 'fas',\n iconName: 'arrow-up-z-a',\n icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3 128 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L352 32c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400l-40.4 0z\"]\n};\nconst faSortAlphaUpAlt = faArrowUpZA;\nconst faFireFlameCurved = {\n prefix: 'fas',\n iconName: 'fire-flame-curved',\n icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nconst faFireAlt = faFireFlameCurved;\nconst faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [448, 512, [127786], \"f76f\", \"M0 32L0 45.6C0 62.7 1.7 79.6 5 96l352.8 0c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0L32 0C14.3 0 0 14.3 0 32zm352.2 96L13.6 128c12.2 35.9 32.3 68.7 58.8 96L412 224l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3L445 352c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9l-322.5 0c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9L288 384z\"]\n};\nconst faFileCirclePlus = {\n prefix: 'fas',\n iconName: 'file-circle-plus',\n icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n};\nconst faBookQuran = {\n prefix: 'fas',\n iconName: 'book-quran',\n icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96l0 320c0 53-43 96-96 96L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c-17.7 0-32-14.3-32-32L0 32C0 14.3 14.3 0 32 0L64 0 352 0zm0 384L96 384l0 64 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nconst faQuran = faBookQuran;\nconst faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [9875], \"f13d\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c88.4 0 160-71.6 160-160l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 53-43 96-96 96l-48 0 0-208 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0z\"]\n};\nconst faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M384 96l0 128-128 0 0-128 128 0zm0 192l0 128-128 0 0-128 128 0zM192 224L64 224 64 96l128 0 0 128zM64 288l128 0 0 128L64 416l0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faFaceAngry = {\n prefix: 'fas',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faAngry = faFaceAngry;\nconst faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArrowTrendDown = {\n prefix: 'fas',\n iconName: 'arrow-trend-down',\n icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352 384 352z\"]\n};\nconst faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFeed = faRss;\nconst faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M96 151.4l0 209.1c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56s0 0 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1c0 0 0 0 0 0l32-56 4.5-7.9-.1-.3-209.1 0c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-209.1C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32l209.1 0c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nconst faScaleBalanced = {\n prefix: 'fas',\n iconName: 'scale-balanced',\n icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L398.4 96c-5.2 25.8-22.9 47.1-46.4 57.3L352 448l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-23.5-10.3-41.2-31.6-46.4-57.3L128 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288l144.9 0L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320l144.9 0L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z\"]\n};\nconst faBalanceScale = faScaleBalanced;\nconst faGaugeSimpleHigh = {\n prefix: 'fas',\n iconName: 'gauge-simple-high',\n icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faTachometer = faGaugeSimpleHigh;\nconst faTachometerFast = faGaugeSimpleHigh;\nconst faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.2-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-316.1zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 224L64 288 64 64l448 0z\"]\n};\nconst faDesktopAlt = faDesktop;\nconst faM = {\n prefix: 'fas',\n iconName: 'm',\n icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.3c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64l0 384c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-278.3L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7 64 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 49.9 9.2 37.5 22.7 33.4z\"]\n};\nconst faTableList = {\n prefix: 'fas',\n iconName: 'table-list',\n icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 0l0 64 64 0 0-64L64 96zm384 0L192 96l0 64 256 0 0-64zM64 224l0 64 64 0 0-64-64 0zm384 0l-256 0 0 64 256 0 0-64zM64 352l0 64 64 0 0-64-64 0zm384 0l-256 0 0 64 256 0 0-64z\"]\n};\nconst faThList = faTableList;\nconst faCommentSms = {\n prefix: 'fas',\n iconName: 'comment-sms',\n icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM96 212.8c0-20.3 16.5-36.8 36.8-36.8l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.3 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8L112 304c-8.8 0-16-7.2-16-16s7.2-16 16-16l27.2 0c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6C102.2 236.7 96 225.2 96 212.8zM372.8 176l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.2 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8L352 304c-8.8 0-16-7.2-16-16s7.2-16 16-16l27.2 0c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6c-10.2-6.8-16.4-18.3-16.4-30.7c0-20.3 16.5-36.8 36.8-36.8zm-152 6.4L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240l0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-6.9 4.4-13 10.9-15.2s13.7 .1 17.9 5.6z\"]\n};\nconst faSms = faCommentSms;\nconst faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l288 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L384 0 96 0zm0 384l256 0 0 64L96 448c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16zm16 48l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM504 312l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [448, 512, [10003, 10004], \"f00c\", \"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nconst faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [576, 512, [\"battery-4\"], \"f241\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm272 96L96 192l0 128 256 0 0-128z\"]\n};\nconst faBattery4 = faBatteryThreeQuarters;\nconst faHouseCircleCheck = {\n prefix: 'fas',\n iconName: 'house-circle-check',\n icon: [640, 512, [], \"e509\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nconst faDiagramSuccessor = {\n prefix: 'fas',\n iconName: 'diagram-successor',\n icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nconst faTruckArrowRight = {\n prefix: 'fas',\n iconName: 'truck-arrow-right',\n icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39L96 168c-13.3 0-24 10.7-24 24s10.7 24 24 24l166.1 0-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nconst faArrowsSplitUpAndLeft = {\n prefix: 'fas',\n iconName: 'arrows-split-up-and-left',\n icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3 352 384c0 35.3 28.7 64 64 64l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64l-114.7 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256 224 256c23.3 0 45.2 6.2 64 17.1l0-163.9-41.4 41.4z\"]\n};\nconst faHandFist = {\n prefix: 'fas',\n iconName: 'hand-fist',\n icon: [448, 512, [9994, \"fist-raised\"], \"f6de\", \"M192 0c17.7 0 32 14.3 32 32l0 112-64 0 0-112c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 80-64 0 0-80zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 52.3-25.1 98.8-64 128l0 96c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-78.4c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n};\nconst faFistRaised = faHandFist;\nconst faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80L96 511.9c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [128188], \"f0b1\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160l0 96 192 0 128 0 192 0 0-96c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM512 288l-192 0 0 32c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-32L0 288 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-128z\"]\n};\nconst faPersonFalling = {\n prefix: 'fas',\n iconName: 'person-falling',\n icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0-1.4 0 92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-73.8c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faImagePortrait = {\n prefix: 'fas',\n iconName: 'image-portrait',\n icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384zM128 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 356.6c0-37.9 30.7-68.6 68.6-68.6l86.9 0c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4l-169.1 0C92.3 384 80 371.7 80 356.6z\"]\n};\nconst faPortrait = faImagePortrait;\nconst faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1l0-33c-15.9-4.7-32.8-7.2-50.3-7.2l-91.4 0zM384 224c-17.7 0-32 14.3-32 32l0 82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7L384 224zm24 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faRug = {\n prefix: 'fas',\n iconName: 'rug',\n icon: [640, 512, [], \"e569\", \"M24 64l32 0 24 0 0 24 0 88 0 80 0 80 0 88 0 24-24 0-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0l416 0 0 384-416 0 0-384zM640 88c0 13.3-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0-24 0 0-24 0-88 0-80 0-80 0-88 0-24 24 0 32 0c13.3 0 24 10.7 24 24z\"]\n};\nconst faEarthEurope = {\n prefix: 'fas',\n iconName: 'earth-europe',\n icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1l0 9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1l1 0c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24l0 4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6l29.4 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-20.7 0c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3l11.3 0c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16l7.3 0c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4l-20.9 0c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3l0 3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3l21.3 0c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faGlobeEurope = faEarthEurope;\nconst faCartFlatbedSuitcase = {\n prefix: 'fas',\n iconName: 'cart-flatbed-suitcase',\n icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0L48 0c44.2 0 80 35.8 80 80l0 288c0 8.8 7.2 16 16 16l464 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-66.7 0c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16l-197.5 0c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16L144 448c-44.2 0-80-35.8-80-80L64 80c0-8.8-7.2-16-16-16L32 64C14.3 64 0 49.7 0 32zM432 96l0-40c0-4.4-3.6-8-8-8l-80 0c-4.4 0-8 3.6-8 8l0 40 96 0zM288 96l0-40c0-30.9 25.1-56 56-56l80 0c30.9 0 56 25.1 56 56l0 40 0 224-192 0 0-224zM512 320l0-224 16 0c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48l-16 0zM240 96l16 0 0 224-16 0c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48z\"]\n};\nconst faLuggageCart = faCartFlatbedSuitcase;\nconst faRectangleXmark = {\n prefix: 'fas',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faRectangleTimes = faRectangleXmark;\nconst faTimesRectangle = faRectangleXmark;\nconst faWindowClose = faRectangleXmark;\nconst faBahtSign = {\n prefix: 'fas',\n iconName: 'baht-sign',\n icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32l0 32L37.6 64C16.8 64 0 80.8 0 101.6L0 224l0 41.7L0 288 0 406.3c0 23 18.7 41.7 41.7 41.7l70.3 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112l0-32c0-17.7-14.3-32-32-32zM112 128l0 96-48 0 0-96 48 0zm64 96l0-96c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64l0 96-48 0 0-96 48 0zm64 96l0-96 32 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-32 0z\"]\n};\nconst faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5l0-377.4c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8L0 454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5l0-370.3c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11L304 456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nconst faBookJournalWhills = {\n prefix: 'fas',\n iconName: 'book-journal-whills',\n icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.2-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.8-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-8.2-17-20.5-31.7-35.9-42.6c-2.7-1.9-6.2 1.4-5 4.5c8.5 22.4 3.6 48-13 65.6c-3.2 3.4-3.6 8.9-.9 12.7c9.8 14 12.7 31.9 7.5 48.5c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-5.1-16.6-2.2-34.4 7.6-48.5c2.7-3.9 2.3-9.3-.9-12.7c-16.6-17.5-21.6-43.1-13.1-65.5c1.2-3.1-2.3-6.4-5-4.5c-15.3 10.9-27.6 25.6-35.8 42.6l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nconst faJournalWhills = faBookJournalWhills;\nconst faHandcuffs = {\n prefix: 'fas',\n iconName: 'handcuffs',\n icon: [640, 512, [], \"e4f8\", \"M240 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32 80c17.7 0 32 14.3 32 32l8 0c13.3 0 24 10.7 24 24l0 16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1l0-16c0-13.3 10.7-24 24-24l8 0c0-17.7 14.3-32 32-32zm0 320a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1l0-16c0-13.3 10.7-24 24-24l8 0c0-17.7 14.3-32 32-32s32 14.3 32 32l8 0c13.3 0 24 10.7 24 24l0 16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM368 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faExclamationTriangle = faTriangleExclamation;\nconst faWarning = faTriangleExclamation;\nconst faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 80l0 48c0 44.2-100.3 80-224 80S0 172.2 0 128L0 80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6L448 288c0 44.2-100.3 80-224 80S0 332.2 0 288L0 186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6l0 85.9c0 44.2-100.3 80-224 80S0 476.2 0 432l0-85.9z\"]\n};\nconst faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [\"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2l0 64-112 0C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96l96 0 0 64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nconst faMailForward = faShare;\nconst faBottleDroplet = {\n prefix: 'fas',\n iconName: 'bottle-droplet',\n icon: [320, 512, [], \"e4c4\", \"M96 0C82.7 0 72 10.7 72 24s10.7 24 24 24c4.4 0 8 3.6 8 8l0 64.9c0 12.2-7.2 23.1-17.2 30.1C53.7 174.1 32 212.5 32 256l0 192c0 35.3 28.7 64 64 64l128 0c35.3 0 64-28.7 64-64l0-192c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1L216 56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0s0 0 0 0s0 0 0 0L104 0s0 0 0 0s0 0 0 0L96 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C185.9 288.9 208 320.2 208 337c0 24.9-21.5 45-48 45z\"]\n};\nconst faMaskFace = {\n prefix: 'fas',\n iconName: 'mask-face',\n icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1l-9.2 0-16 0-72 0c-30.9 0-56 25.1-56 56l0 85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269l0-85c0-30.9-25.1-56-56-56l-72 0-16 0-9.2 0c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269l0-85c0-4.4 3.6-8 8-8l40 0 0 48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3l0-48 40 0c4.4 0 8 3.6 8 8l0 85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16zm16 48l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faHillRockslide = {\n prefix: 'fas',\n iconName: 'hill-rockslide',\n icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2l-53.3 0c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3L0 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9l0-53.3c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9l0 53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faRightLeft = {\n prefix: 'fas',\n iconName: 'right-left',\n icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0 0-64c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-64L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0 0 64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64 320 0z\"]\n};\nconst faExchangeAlt = faRightLeft;\nconst faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480l0-83.6c0-4 1.5-7.8 4.2-10.8L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nconst faRoadCircleExclamation = {\n prefix: 'fas',\n iconName: 'road-circle-exclamation',\n icon: [640, 512, [], \"e565\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9l80 0c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24l80 0c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288l-80 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zM24 416c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zm384 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 272c0 8.8 7.2 16 16 16s16-7.2 16-16l0-272zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 240c0 8.8 7.2 16 16 16s16-7.2 16-16l0-240zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 240c0 8.8 7.2 16 16 16s16-7.2 16-16l0-240z\"]\n};\nconst faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32L192 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faMoneyBill1Wave = {\n prefix: 'fas',\n iconName: 'money-bill-1-wave',\n icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5L0 422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4l0-309.9c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416l-64 0 0-64c35.3 0 64 28.7 64 64zM64 224l0-64 64 0c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l24 0 24 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n};\nconst faMoneyBillWaveAlt = faMoneyBill1Wave;\nconst faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [576, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M544 160l-.1 72.6c-.1 52.2-24 101-64 133.1c.1-1.9 .1-3.8 .1-5.7l0-8c0-71.8-37-138.6-97.9-176.7l-60.2-37.6c-8.6-5.4-17.9-8.4-27.3-9.4L248.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l78 135.1c3.3 5.7 10.7 7.7 16.4 4.4s7.7-10.7 4.4-16.4l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S362 5 368.6 16.5l68 117.8s0 0 0 0s0 0 0 0l43.3 75L480 160c0-17.7 14.4-32 32-32s32 14.4 32 32zM243.9 88.5L268.5 131c-13.9 4.5-26.4 13.7-34.7 27c-.9 1.4-1.7 2.9-2.5 4.4l-28.9-50c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l26.8 46.4c.6 6 2.1 11.8 4.3 17.4l-4.7 0-13.3 0s0 0 0 0L179 216l-23-39.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM260.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C416.7 234.7 448 291.2 448 352l0 8c0 83.9-68.1 152-152 152l-176 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l92 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L88 440c-13.3 0-24-10.7-24-24s10.7-24 24-24l124 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L56 368c-13.3 0-24-10.7-24-24s10.7-24 24-24l156 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L88 296c-13.3 0-24-10.7-24-24s10.7-24 24-24l136 0s0 0 0 0s0 0 0 0l93.2 0L271 219.1c-15-9.4-19.5-29.1-10.2-44.1z\"]\n};\nconst faSignLanguage = faHands;\nconst faSigning = faHands;\nconst faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm80 64c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16l-96 0z\"]\n};\nconst faWaterLadder = {\n prefix: 'fas',\n iconName: 'water-ladder',\n icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7l0 96.3 192 0 0-96.3C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7L448 361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3c0 0 0 0 0 0l0-96.5-192 0 0 96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1l0-233.3zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faLadderWater = faWaterLadder;\nconst faSwimmingPool = faWaterLadder;\nconst faArrowsUpDown = {\n prefix: 'fas',\n iconName: 'arrows-up-down',\n icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3l0 293.5L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7l0-293.5 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nconst faArrowsV = faArrowsUpDown;\nconst faFaceGrimace = {\n prefix: 'fas',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm96-112l-8 0 0-40 55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344l0-40 8 0c23.8 0 43.5 17.3 47.3 40zM328 344l-64 0 0-40 64 0 0 40zm0 56l-64 0 0-40 64 0 0 40zm-80-96l0 40-64 0 0-40 64 0zm0 56l0 40-64 0 0-40 64 0zm-80-16l-55.3 0c3.8-22.7 23.6-40 47.3-40l8 0 0 40zm0 56l-8 0c-23.8 0-43.5-17.3-47.3-40l55.3 0 0 40zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrimace = faFaceGrimace;\nconst faWheelchairMove = {\n prefix: 'fas',\n iconName: 'wheelchair-move',\n icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M320 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224l97.4 0c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288l-70.3 0c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faWheelchairAlt = faWheelchairMove;\nconst faTurnDown = {\n prefix: 'fas',\n iconName: 'turn-down',\n icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M350 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26s12.5-14.5 22-14.5l88 0 0-192c0-17.7-14.3-32-32-32L32 96C14.3 96 0 81.7 0 64L0 32C0 14.3 14.3 0 32 0l80 0c70.7 0 128 57.3 128 128l0 192 88 0c9.6 0 18.2 5.7 22 14.5z\"]\n};\nconst faLevelDownAlt = faTurnDown;\nconst faPersonWalkingArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-right',\n icon: [640, 512, [], \"e552\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224 384 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nconst faSquareEnvelope = {\n prefix: 'fas',\n iconName: 'square-envelope',\n icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144l256 0c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4 384 336c0 17.7-14.3 32-32 32L96 368c-17.7 0-32-14.3-32-32l0-125.6 136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nconst faEnvelopeSquare = faSquareEnvelope;\nconst faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [127922], \"f522\", \"M274.9 34.3c-28.1-28.1-73.7-28.1-101.8 0L34.3 173.1c-28.1 28.1-28.1 73.7 0 101.8L173.1 413.7c28.1 28.1 73.7 28.1 101.8 0L413.7 274.9c28.1-28.1 28.1-73.7 0-101.8L274.9 34.3zM200 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM96 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 376a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM352 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 120a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm96 328c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-114.3 0c11.6 36 3.1 77-25.4 105.5L320 413.8l0 34.2zM480 328a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [512, 512, [], \"f436\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56l0 400c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56l0-400c0-30.9 25.1-56 56-56z\"]\n};\nconst faBandage = {\n prefix: 'fas',\n iconName: 'bandage',\n icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416l96 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-96 0 0 320zM448 96L192 96l0 320 256 0 0-320zM64 96C28.7 96 0 124.7 0 160L0 352c0 35.3 28.7 64 64 64l96 0 0-320L64 96zM248 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBandAid = faBandage;\nconst faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM312 376c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0z\"]\n};\nconst faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faTimesCircle = faCircleXmark;\nconst faXmarkCircle = faCircleXmark;\nconst faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l152.6 0c-5.4-9.4-8.6-20.3-8.6-32l0-224c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96l-22.2 0 28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224 344 224c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24l-4.1 0c-26.5 0-48 21.5-48 48l0 80 192 0 0-96 32 0 0 96 192 0 0-80c0-26.5-21.5-48-48-48l-4.1 0c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48l144 0 0-128-192 0 0 80zm224 48l144 0c26.5 0 48-21.5 48-48l0-80-192 0 0 128zm96-312c0 13.3-10.7 24-24 24l-49.1 0 29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nconst faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [512, 512, [127976], \"f594\", \"M0 32C0 14.3 14.3 0 32 0L480 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-176 0 0-48c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 48L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 64C14.3 64 0 49.7 0 32zm96 80l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM240 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM112 192c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM328 384c13.3 0 24.3-10.9 21-23.8c-10.6-41.5-48.2-72.2-93-72.2s-82.5 30.7-93 72.2c-3.3 12.8 7.8 23.8 21 23.8l144 0z\"]\n};\nconst faEarthAsia = {\n prefix: 'fas',\n iconName: 'earth-asia',\n icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9l2.3 0c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm144.5 92.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nconst faGlobeAsia = faEarthAsia;\nconst faIdCardClip = {\n prefix: 'fas',\n iconName: 'id-card-clip',\n icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zM64 64l128 0 0 48c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-48 128 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7l202.7 0c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3l-117.3 0c-29.5 0-53.3 23.9-53.3 53.3zM288 352a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nconst faIdCardAlt = faIdCardClip;\nconst faMagnifyingGlassPlus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-plus',\n icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 64z\"]\n};\nconst faSearchPlus = faMagnifyingGlassPlus;\nconst faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2l144 0c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48l-97.5 0c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3l0-38.3 0-48 0-24.9c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192l64 0c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32L0 224c0-17.7 14.3-32 32-32z\"]\n};\nconst faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304l91.4 0c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144L29.7 512C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0-48c0-8.8-7.2-16-16-16z\"]\n};\nconst faHandDots = {\n prefix: 'fas',\n iconName: 'hand-dots',\n icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208zM240 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48-16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM240 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-48-48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faAllergies = faHandDots;\nconst faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM80 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96l192 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 352c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm0 32l0 64 192 0 0-64L96 256zM240 416l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faMugSaucer = {\n prefix: 'fas',\n iconName: 'mug-saucer',\n icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32l320 0 64 0c70.7 0 128 57.3 128 128s-57.3 128-128 128l-32 0c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96L96 64zM480 224l32 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0 0 128zM32 416l512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faCoffee = faMugSaucer;\nconst faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M162.4 6c-1.5-3.6-5-6-8.9-6l-19 0c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6L48 0C21.5 0 0 21.5 0 48L0 224l0 22.4L0 256l9.6 0 364.8 0 9.6 0 0-9.6 0-22.4 0-176c0-26.5-21.5-48-48-48L230.5 0c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 288l0 32c0 35.3 28.7 64 64 64l64 0 0 64c0 35.3 28.7 64 64 64s64-28.7 64-64l0-64 64 0c35.3 0 64-28.7 64-64l0-32L0 288zM192 432a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448l8.4 0c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4l8.4 0c96 0 176-64 176-176s-64-208-288-208zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faMagnifyingGlassMinus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-minus',\n icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nconst faSearchMinus = faMagnifyingGlassMinus;\nconst faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0L208 0c26.5 0 48 21.5 48 48l0 48-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 48z\"]\n};\nconst faUserLarge = {\n prefix: 'fas',\n iconName: 'user-large',\n icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7l450.6 0c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320l-189.4 0z\"]\n};\nconst faUserAlt = faUserLarge;\nconst faTrainTram = {\n prefix: 'fas',\n iconName: 'train-tram',\n icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0L361.2 0c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.8 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15L248 48l0 48 40 0c53 0 96 43 96 96l0 160c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1l-39.7 0c-8.5 0-16.6-3.4-22.6-9.4L288 448l-128 0-54.6 54.6c-6 6-14.1 9.4-22.6 9.4L43 512c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352l0-160c0-53 43-96 96-96l40 0 0-48L86.8 48zM160 160c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-128 0zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M96 128l0-57.8c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30l0 57.8-.3 0c.2 2.6 .3 5.3 .3 8l0 40c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40c0-2.7 .1-5.4 .3-8l-.3 0zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80l0-16-160 0 0 16zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7L30.7 512C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6zM208 48l0 16-16 0c-4.4 0-8 3.6-8 8l0 16c0 4.4 3.6 8 8 8l16 0 0 16c0 4.4 3.6 8 8 8l16 0c4.4 0 8-3.6 8-8l0-16 16 0c4.4 0 8-3.6 8-8l0-16c0-4.4-3.6-8-8-8l-16 0 0-16c0-4.4-3.6-8-8-8l-16 0c-4.4 0-8 3.6-8 8z\"]\n};\nconst faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4l-88.8 0L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57 0-88.8c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nconst faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [9925], \"f6c4\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 34.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6L256 64l16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L176 0zM288 204c28.7 0 52 23.3 52 52l0 96c0 28.7-23.3 52-52 52s-52-23.3-52-52l0-96c0-28.7 23.3-52 52-52zm-12 52l0 96c0 6.6 5.4 12 12 12s12-5.4 12-12l0-96c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5l0 2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9l43.8 0c11 0 20 9 20 20s-9 20-20 20l-64 0c-11 0-20-9-20-20l0-15.7c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8l0-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nconst faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nconst faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [448, 512, [129522], \"f076\", \"M0 160l0 96C0 379.7 100.3 480 224 480s224-100.3 224-224l0-96-128 0 0 96c0 53-43 96-96 96s-96-43-96-96l0-96L0 160zm0-32l128 0 0-64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64l0 64zm320 0l128 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64z\"]\n};\nconst faJar = {\n prefix: 'fas',\n iconName: 'jar',\n icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0L256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64l192 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 160zm96 64c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32L96 224z\"]\n};\nconst faNoteSticky = {\n prefix: 'fas',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l224 0 0-112c0-26.5 21.5-48 48-48l112 0 0-224c0-35.3-28.7-64-64-64L64 32zM448 352l-45.3 0L336 352c-8.8 0-16 7.2-16 16l0 66.7 0 45.3 32-32 64-64 32-32z\"]\n};\nconst faStickyNote = faNoteSticky;\nconst faBugSlash = {\n prefix: 'fas',\n iconName: 'bug-slash',\n icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64.3 0c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160l-112 0c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96l0 3.6c0 15.7 12.7 28.4 28.4 28.4l135.1 0c15.7 0 28.4-12.7 28.4-28.4l0-3.6c0-53-43-96-96-96zM160.3 256L96 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6l0-143.7L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7l0 118.5z\"]\n};\nconst faArrowUpFromWaterPump = {\n prefix: 'fas',\n iconName: 'arrow-up-from-water-pump',\n icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48l0 208-16 0c-26.5 0-48 21.5-48 48l0 96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400l0-96c0-26.5-21.5-48-48-48l-48 0 0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256l-128 0 0-208c0-26.5-21.5-48-48-48L112 0zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2l192 0c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336l-192 0c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nconst faTableCellsRowUnlock = {\n prefix: 'fas',\n iconName: 'table-cells-row-unlock',\n icon: [640, 512, [], \"e691\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 224l0 64 88 0 0-64-88 0zm232 0l-88 0 0 64 88 0 0-64zM152 352l-88 0 0 64 88 0 0-64zm56 0l0 64 88 0 0-64-88 0zm288-80l0 48 32 0 32 0 48 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48c0-44.2 35.8-80 80-80s80 35.8 80 80l-48 0c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M240 80l102.7 0c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80l81.4 0 91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16L97 112c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7L96 512l147.7 0L181.5 408.2 124 312.4zm33-7.2L204.3 384l67.7 0c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48l82.3 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512L64 512l0-166.6C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48l-48.5 0 57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nconst faFaceSadTear = {\n prefix: 'fas',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSadTear = faFaceSadTear;\nconst faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nconst faTentArrowsDown = {\n prefix: 'fas',\n iconName: 'tent-arrows-down',\n icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L488 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [128, 512, [10069, 10071, 61738], \"21\", \"M96 64c0-17.7-14.3-32-32-32S32 46.3 32 64l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32L96 64zM64 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faArrowsSpin = {\n prefix: 'fas',\n iconName: 'arrows-spin',\n icon: [512, 512, [], \"e4bb\", \"M256 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9l112 0c8.8 0 16-7.2 16-16l0-112c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C363.4 52.6 312.1 32 256 32c-10.9 0-21.5 .8-32 2.3l0 64.9c10.3-2.1 21-3.2 32-3.2zM132.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8l0-112c0-8.8-7.2-16-16-16L64 48c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C52.6 148.6 32 199.9 32 256c0 10.9 .8 21.5 2.3 32l64.9 0c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM477.7 224l-64.9 0c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8l0 112c0 8.8 7.2 16 16 16l112 0c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C459.4 363.4 480 312.1 480 256c0-10.9-.8-21.5-2.3-32zM256 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9L64 320c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C148.6 459.4 199.9 480 256 480c10.9 0 21.5-.8 32-2.3l0-64.9c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nconst faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64l0 96 64 0 0-96 226.7 0L384 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0L128 0zM384 352l0 32 0 64-256 0 0-64 0-16 0-16 256 0zm64 32l32 0c17.7 0 32-14.3 32-32l0-96c0-35.3-28.7-64-64-64L64 192c-35.3 0-64 28.7-64 64l0 96c0 17.7 14.3 32 32 32l32 0 0 64c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-64zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faTurkishLiraSign = {\n prefix: 'fas',\n iconName: 'turkish-lira-sign',\n icon: [384, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M96 32c17.7 0 32 14.3 32 32l0 35.3L247.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 165.9l0 29.4 119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 261.9 128 416l63.8 0c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C378.5 399.8 294.1 480 191.8 480L96 480c-17.7 0-32-14.3-32-32l0-167.9-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 213.6l0-29.4-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 117.6 64 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faTry = faTurkishLiraSign;\nconst faTurkishLira = faTurkishLiraSign;\nconst faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32l0 35.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11l0 33.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.9c-.4-.1-.9-.1-1.3-.2l-.2 0s0 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7s0 0 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11L128 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faDollar = faDollarSign;\nconst faUsd = faDollarSign;\nconst faX = {\n prefix: 'fas',\n iconName: 'x',\n icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nconst faMagnifyingGlassDollar = {\n prefix: 'fas',\n iconName: 'magnifying-glass-dollar',\n icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7l0-13.9z\"]\n};\nconst faSearchDollar = faMagnifyingGlassDollar;\nconst faUsersGear = {\n prefix: 'fas',\n iconName: 'users-gear',\n icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320l213.3 0c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7l-42.7 0C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2l-103.2 0C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7l300.6 0c-2.1-5.2-3.2-10.9-3.2-16.4l0-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192l-42.7 0c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3l0-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6l0 3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3l-2.9 1.7c-9.2 5.3-20.4 4-29.6-1.3s-16.1-14.5-16.1-25.1l0-3.4c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9l0 3.4c0 10.6-6.9 19.8-16.1 25.1s-20.4 6.6-29.6 1.3l-2.9-1.7c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l2.9 1.7c9.2 5.3 13.7 15.8 13.7 26.4s-4.5 21.1-13.7 26.4l-3 1.7c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3l2.9-1.7c9.2-5.3 20.4-4 29.6 1.3s16.1 14.5 16.1 25.1l0 3.4c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9l0-3.4c0-10.6 6.9-19.8 16.1-25.1s20.4-6.6 29.6-1.3l2.9 1.7c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-3-1.7c-9.2-5.3-13.7-15.8-13.7-26.4s4.5-21.1 13.7-26.4l3-1.7zM472 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nconst faUsersCog = faUsersGear;\nconst faPersonMilitaryPointing = {\n prefix: 'fas',\n iconName: 'person-military-pointing',\n icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25l151 0c8.8 0 16-7.2 16-16l0-30.6C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16L241.6 96c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40l152 0 0 89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5L240 224 72 224zm345.7 20.9L246.6 416 416 416l0-46.3 53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32-192 0z\"]\n};\nconst faBuildingColumns = {\n prefix: 'fas',\n iconName: 'building-columns',\n icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160l0 8c0 13.3 10.7 24 24 24l400 0c13.3 0 24-10.7 24-24l0-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224l-64 0 0 196.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512l448 0c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1L448 224l-64 0 0 192-40 0 0-192-64 0 0 192-48 0 0-192-64 0 0 192-40 0 0-192zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBank = faBuildingColumns;\nconst faInstitution = faBuildingColumns;\nconst faMuseum = faBuildingColumns;\nconst faUniversity = faBuildingColumns;\nconst faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M288 0c17.7 0 32 14.3 32 32l0 17.7C451.8 63.4 557.7 161 573.9 285.9c2 15.6-17.3 24.4-27.8 12.7C532.1 283 504.8 272 480 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C359 299.5 326.7 272 288 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C167 299.5 134.7 272 96 272c-24.8 0-52.1 11-66.1 26.7C19.4 310.4 .1 301.5 2.1 285.9C18.3 161 124.2 63.4 256 49.7L256 32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2l0 114.3c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4l0-114.3c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nconst faTrowel = {\n prefix: 'fas',\n iconName: 'trowel',\n icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nconst faD = {\n prefix: 'fas',\n iconName: 'd',\n icon: [384, 512, [100], \"44\", \"M0 96C0 60.7 28.7 32 64 32l96 0c123.7 0 224 100.3 224 224s-100.3 224-224 224l-96 0c-35.3 0-64-28.7-64-64L0 96zm160 0L64 96l0 320 96 0c88.4 0 160-71.6 160-160s-71.6-160-160-160z\"]\n};\nconst faStapler = {\n prefix: 'fas',\n iconName: 'stapler',\n icon: [640, 512, [], \"e5af\", \"M640 299.3l0 4.7 0 128c0 26.5-21.5 48-48 48l-80 0-64 0L64 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0 0-48L96 368c-17.7 0-32-14.3-32-32l0-116.6L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304l0-16L128 230.9l0 73.1 320 0z\"]\n};\nconst faMasksTheater = {\n prefix: 'fas',\n iconName: 'masks-theater',\n icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M74.6 373.2c41.7 36.1 108 82.5 166.1 73.7c6.1-.9 12.1-2.5 18-4.5c-9.2-12.3-17.3-24.4-24.2-35.4c-21.9-35-28.8-75.2-25.9-113.6c-20.6 4.1-39.2 13-54.7 25.4c-6.5 5.2-16.3 1.3-14.8-7c6.4-33.5 33-60.9 68.2-66.3c2.6-.4 5.3-.7 7.9-.8l19.4-131.3c2-13.8 8-32.7 25-45.9C278.2 53.2 310.5 37 363.2 32.2c-.8-.7-1.6-1.4-2.4-2.1C340.6 14.5 288.4-11.5 175.7 5.6S20.5 63 5.7 83.9C0 91.9-.8 102 .6 111.8L24.8 276.1c5.5 37.3 21.5 72.6 49.8 97.2zm87.7-219.6c4.4-3.1 10.8-2 11.8 3.3c.1 .5 .2 1.1 .3 1.6c3.2 21.8-11.6 42-33.1 45.3s-41.5-11.8-44.7-33.5c-.1-.5-.1-1.1-.2-1.6c-.6-5.4 5.2-8.4 10.3-6.7c9 3 18.8 3.9 28.7 2.4s19.1-5.3 26.8-10.8zM261.6 390c29.4 46.9 79.5 110.9 137.6 119.7s124.5-37.5 166.1-73.7c28.3-24.5 44.3-59.8 49.8-97.2l24.2-164.3c1.4-9.8 .6-19.9-5.1-27.9c-14.8-20.9-57.3-61.2-170-78.3S299.4 77.2 279.2 92.8c-7.8 6-11.5 15.4-12.9 25.2L242.1 282.3c-5.5 37.3-.4 75.8 19.6 107.7zM404.5 235.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6c-1 5.3-7.4 6.4-11.8 3.3zm136.2 15.5c-1 5.3-7.4 6.4-11.8 3.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6zM530 350.2c-19.6 44.7-66.8 72.5-116.8 64.9s-87.1-48.2-93-96.7c-1-8.3 8.9-12.1 15.2-6.7c23.9 20.8 53.6 35.3 87 40.3s66.1 .1 94.9-12.8c7.6-3.4 16 3.2 12.6 10.9z\"]\n};\nconst faTheaterMasks = faMasksTheater;\nconst faKipSign = {\n prefix: 'fas',\n iconName: 'kip-sign',\n icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4 128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 160-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-122.4L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288 352 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-169.5 0L340.8 88.3z\"]\n};\nconst faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0 0-64L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm-64-64c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32l8.6 0c88.4 0 160-71.6 160-160l0-61.7c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64l0 88c0 22.1 17.9 40 40 40s40-17.9 40-40l0-56c0-8.8 7.2-16 16-16s16 7.2 16 16l0 56c0 39.8-32.2 72-72 72z\"]\n};\nconst faHandshakeSimple = {\n prefix: 'fas',\n iconName: 'handshake-simple',\n icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352l41.8 0c26.5 0 48-21.5 48-48l0-128c0-26.5-21.5-48-48-48l-76 0-4 0-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48-80 0c-26.5 0-48 21.5-48 48L0 304c0 26.5 21.5 48 48 48l108.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nconst faHandshakeAlt = faHandshakeSimple;\nconst faJetFighter = {\n prefix: 'fas',\n iconName: 'jet-fighter',\n icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24L296 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0L384 192l116.4 0c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1L384 320 280 464l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-112 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-144-32 0-54.6 54.6c-6 6-14.1 9.4-22.6 9.4L64 384c-17.7 0-32-14.3-32-32l0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l18.7 0c8.5 0 16.6 3.4 22.6 9.4L160 192l32 0 0-144-8 0c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0z\"]\n};\nconst faFighterJet = faJetFighter;\nconst faSquareShareNodes = {\n prefix: 'fas',\n iconName: 'square-share-nodes',\n icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nconst faShareAltSquare = faSquareShareNodes;\nconst faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56L0 456c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24L64 56c0-13.3-10.7-24-24-24L24 32zm88 0c-8.8 0-16 7.2-16 16l0 416c0 8.8 7.2 16 16 16s16-7.2 16-16l0-416c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0zm96 0c-13.3 0-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0zM448 56l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0c-13.3 0-24 10.7-24 24zm-64-8l0 416c0 8.8 7.2 16 16 16s16-7.2 16-16l0-416c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nconst faPlusMinus = {\n prefix: 'fas',\n iconName: 'plus-minus',\n icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112L48 144c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0 0 112c0 17.7 14.3 32 32 32s32-14.3 32-32l0-112 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-112zM0 480c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448c-17.7 0-32 14.3-32 32z\"]\n};\nconst faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2l0 256c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1l0-17.1 0-128 0-17.1 14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nconst faVideoCamera = faVideo;\nconst faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9l0 28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5l0-24.6c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nconst faMortarBoard = faGraduationCap;\nconst faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M224 24l0 56-56 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l56 0 0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56 56 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-56 0 0-56c0-13.3-10.7-24-24-24L248 0c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 272 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-16 0-78.3 0c-29.1 0-57.3 9.9-80 28L68.8 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0 160.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0c0 0 0 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nconst faPersonCircleCheck = {\n prefix: 'fas',\n iconName: 'person-circle-check',\n icon: [576, 512, [], \"e53e\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faTurnUp = {\n prefix: 'fas',\n iconName: 'turn-up',\n icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M350 177.5c3.8-8.8 2-19-4.6-26l-136-144C204.9 2.7 198.6 0 192 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26s12.5 14.5 22 14.5l88 0 0 192c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l80 0c70.7 0 128-57.3 128-128l0-192 88 0c9.6 0 18.2-5.7 22-14.5z\"]\n};\nconst faLevelUpAlt = faTurnUp;\nvar icons = {\n fa0,\n fa1,\n fa2,\n fa3,\n fa4,\n fa5,\n fa6,\n fa7,\n fa8,\n fa9,\n faFillDrip,\n faArrowsToCircle,\n faCircleChevronRight,\n faChevronCircleRight,\n faAt,\n faTrashCan,\n faTrashAlt,\n faTextHeight,\n faUserXmark,\n faUserTimes,\n faStethoscope,\n faMessage,\n faCommentAlt,\n faInfo,\n faDownLeftAndUpRightToCenter,\n faCompressAlt,\n faExplosion,\n faFileLines,\n faFileAlt,\n faFileText,\n faWaveSquare,\n faRing,\n faBuildingUn,\n faDiceThree,\n faCalendarDays,\n faCalendarAlt,\n faAnchorCircleCheck,\n faBuildingCircleArrowRight,\n faVolleyball,\n faVolleyballBall,\n faArrowsUpToLine,\n faSortDown,\n faSortDesc,\n faCircleMinus,\n faMinusCircle,\n faDoorOpen,\n faRightFromBracket,\n faSignOutAlt,\n faAtom,\n faSoap,\n faIcons,\n faHeartMusicCameraBolt,\n faMicrophoneLinesSlash,\n faMicrophoneAltSlash,\n faBridgeCircleCheck,\n faPumpMedical,\n faFingerprint,\n faHandPointRight,\n faMagnifyingGlassLocation,\n faSearchLocation,\n faForwardStep,\n faStepForward,\n faFaceSmileBeam,\n faSmileBeam,\n faFlagCheckered,\n faFootball,\n faFootballBall,\n faSchoolCircleExclamation,\n faCrop,\n faAnglesDown,\n faAngleDoubleDown,\n faUsersRectangle,\n faPeopleRoof,\n faPeopleLine,\n faBeerMugEmpty,\n faBeer,\n faDiagramPredecessor,\n faArrowUpLong,\n faLongArrowUp,\n faFireFlameSimple,\n faBurn,\n faPerson,\n faMale,\n faLaptop,\n faFileCsv,\n faMenorah,\n faTruckPlane,\n faRecordVinyl,\n faFaceGrinStars,\n faGrinStars,\n faBong,\n faSpaghettiMonsterFlying,\n faPastafarianism,\n faArrowDownUpAcrossLine,\n faSpoon,\n faUtensilSpoon,\n faJarWheat,\n faEnvelopesBulk,\n faMailBulk,\n faFileCircleExclamation,\n faCircleH,\n faHospitalSymbol,\n faPager,\n faAddressBook,\n faContactBook,\n faStrikethrough,\n faK,\n faLandmarkFlag,\n faPencil,\n faPencilAlt,\n faBackward,\n faCaretRight,\n faComments,\n faPaste,\n faFileClipboard,\n faCodePullRequest,\n faClipboardList,\n faTruckRampBox,\n faTruckLoading,\n faUserCheck,\n faVialVirus,\n faSheetPlastic,\n faBlog,\n faUserNinja,\n faPersonArrowUpFromLine,\n faScrollTorah,\n faTorah,\n faBroomBall,\n faQuidditch,\n faQuidditchBroomBall,\n faToggleOff,\n faBoxArchive,\n faArchive,\n faPersonDrowning,\n faArrowDown91,\n faSortNumericDesc,\n faSortNumericDownAlt,\n faFaceGrinTongueSquint,\n faGrinTongueSquint,\n faSprayCan,\n faTruckMonster,\n faW,\n faEarthAfrica,\n faGlobeAfrica,\n faRainbow,\n faCircleNotch,\n faTabletScreenButton,\n faTabletAlt,\n faPaw,\n faCloud,\n faTrowelBricks,\n faFaceFlushed,\n faFlushed,\n faHospitalUser,\n faTentArrowLeftRight,\n faGavel,\n faLegal,\n faBinoculars,\n faMicrophoneSlash,\n faBoxTissue,\n faMotorcycle,\n faBellConcierge,\n faConciergeBell,\n faPenRuler,\n faPencilRuler,\n faPeopleArrows,\n faPeopleArrowsLeftRight,\n faMarsAndVenusBurst,\n faSquareCaretRight,\n faCaretSquareRight,\n faScissors,\n faCut,\n faSunPlantWilt,\n faToiletsPortable,\n faHockeyPuck,\n faTable,\n faMagnifyingGlassArrowRight,\n faTachographDigital,\n faDigitalTachograph,\n faUsersSlash,\n faClover,\n faReply,\n faMailReply,\n faStarAndCrescent,\n faHouseFire,\n faSquareMinus,\n faMinusSquare,\n faHelicopter,\n faCompass,\n faSquareCaretDown,\n faCaretSquareDown,\n faFileCircleQuestion,\n faLaptopCode,\n faSwatchbook,\n faPrescriptionBottle,\n faBars,\n faNavicon,\n faPeopleGroup,\n faHourglassEnd,\n faHourglass3,\n faHeartCrack,\n faHeartBroken,\n faSquareUpRight,\n faExternalLinkSquareAlt,\n faFaceKissBeam,\n faKissBeam,\n faFilm,\n faRulerHorizontal,\n faPeopleRobbery,\n faLightbulb,\n faCaretLeft,\n faCircleExclamation,\n faExclamationCircle,\n faSchoolCircleXmark,\n faArrowRightFromBracket,\n faSignOut,\n faCircleChevronDown,\n faChevronCircleDown,\n faUnlockKeyhole,\n faUnlockAlt,\n faCloudShowersHeavy,\n faHeadphonesSimple,\n faHeadphonesAlt,\n faSitemap,\n faCircleDollarToSlot,\n faDonate,\n faMemory,\n faRoadSpikes,\n faFireBurner,\n faFlag,\n faHanukiah,\n faFeather,\n faVolumeLow,\n faVolumeDown,\n faCommentSlash,\n faCloudSunRain,\n faCompress,\n faWheatAwn,\n faWheatAlt,\n faAnkh,\n faHandsHoldingChild,\n faAsterisk,\n faSquareCheck,\n faCheckSquare,\n faPesetaSign,\n faHeading,\n faHeader,\n faGhost,\n faList,\n faListSquares,\n faSquarePhoneFlip,\n faPhoneSquareAlt,\n faCartPlus,\n faGamepad,\n faCircleDot,\n faDotCircle,\n faFaceDizzy,\n faDizzy,\n faEgg,\n faHouseMedicalCircleXmark,\n faCampground,\n faFolderPlus,\n faFutbol,\n faFutbolBall,\n faSoccerBall,\n faPaintbrush,\n faPaintBrush,\n faLock,\n faGasPump,\n faHotTubPerson,\n faHotTub,\n faMapLocation,\n faMapMarked,\n faHouseFloodWater,\n faTree,\n faBridgeLock,\n faSackDollar,\n faPenToSquare,\n faEdit,\n faCarSide,\n faShareNodes,\n faShareAlt,\n faHeartCircleMinus,\n faHourglassHalf,\n faHourglass2,\n faMicroscope,\n faSink,\n faBagShopping,\n faShoppingBag,\n faArrowDownZA,\n faSortAlphaDesc,\n faSortAlphaDownAlt,\n faMitten,\n faPersonRays,\n faUsers,\n faEyeSlash,\n faFlaskVial,\n faHand,\n faHandPaper,\n faOm,\n faWorm,\n faHouseCircleXmark,\n faPlug,\n faChevronUp,\n faHandSpock,\n faStopwatch,\n faFaceKiss,\n faKiss,\n faBridgeCircleXmark,\n faFaceGrinTongue,\n faGrinTongue,\n faChessBishop,\n faFaceGrinWink,\n faGrinWink,\n faEarDeaf,\n faDeaf,\n faDeafness,\n faHardOfHearing,\n faRoadCircleCheck,\n faDiceFive,\n faSquareRss,\n faRssSquare,\n faLandMineOn,\n faICursor,\n faStamp,\n faStairs,\n faI,\n faHryvniaSign,\n faHryvnia,\n faPills,\n faFaceGrinWide,\n faGrinAlt,\n faTooth,\n faV,\n faBangladeshiTakaSign,\n faBicycle,\n faStaffSnake,\n faRodAsclepius,\n faRodSnake,\n faStaffAesculapius,\n faHeadSideCoughSlash,\n faTruckMedical,\n faAmbulance,\n faWheatAwnCircleExclamation,\n faSnowman,\n faMortarPestle,\n faRoadBarrier,\n faSchool,\n faIgloo,\n faJoint,\n faAngleRight,\n faHorse,\n faQ,\n faG,\n faNotesMedical,\n faTemperatureHalf,\n faTemperature2,\n faThermometer2,\n faThermometerHalf,\n faDongSign,\n faCapsules,\n faPooStorm,\n faPooBolt,\n faFaceFrownOpen,\n faFrownOpen,\n faHandPointUp,\n faMoneyBill,\n faBookmark,\n faAlignJustify,\n faUmbrellaBeach,\n faHelmetUn,\n faBullseye,\n faBacon,\n faHandPointDown,\n faArrowUpFromBracket,\n faFolder,\n faFolderBlank,\n faFileWaveform,\n faFileMedicalAlt,\n faRadiation,\n faChartSimple,\n faMarsStroke,\n faVial,\n faGauge,\n faDashboard,\n faGaugeMed,\n faTachometerAltAverage,\n faWandMagicSparkles,\n faMagicWandSparkles,\n faE,\n faPenClip,\n faPenAlt,\n faBridgeCircleExclamation,\n faUser,\n faSchoolCircleCheck,\n faDumpster,\n faVanShuttle,\n faShuttleVan,\n faBuildingUser,\n faSquareCaretLeft,\n faCaretSquareLeft,\n faHighlighter,\n faKey,\n faBullhorn,\n faGlobe,\n faSynagogue,\n faPersonHalfDress,\n faRoadBridge,\n faLocationArrow,\n faC,\n faTabletButton,\n faBuildingLock,\n faPizzaSlice,\n faMoneyBillWave,\n faChartArea,\n faAreaChart,\n faHouseFlag,\n faPersonCircleMinus,\n faBan,\n faCancel,\n faCameraRotate,\n faSprayCanSparkles,\n faAirFreshener,\n faStar,\n faRepeat,\n faCross,\n faBox,\n faVenusMars,\n faArrowPointer,\n faMousePointer,\n faMaximize,\n faExpandArrowsAlt,\n faChargingStation,\n faShapes,\n faTriangleCircleSquare,\n faShuffle,\n faRandom,\n faPersonRunning,\n faRunning,\n faMobileRetro,\n faGripLinesVertical,\n faSpider,\n faHandsBound,\n faFileInvoiceDollar,\n faPlaneCircleExclamation,\n faXRay,\n faSpellCheck,\n faSlash,\n faComputerMouse,\n faMouse,\n faArrowRightToBracket,\n faSignIn,\n faShopSlash,\n faStoreAltSlash,\n faServer,\n faVirusCovidSlash,\n faShopLock,\n faHourglassStart,\n faHourglass1,\n faBlenderPhone,\n faBuildingWheat,\n faPersonBreastfeeding,\n faRightToBracket,\n faSignInAlt,\n faVenus,\n faPassport,\n faThumbtackSlash,\n faThumbTackSlash,\n faHeartPulse,\n faHeartbeat,\n faPeopleCarryBox,\n faPeopleCarry,\n faTemperatureHigh,\n faMicrochip,\n faCrown,\n faWeightHanging,\n faXmarksLines,\n faFilePrescription,\n faWeightScale,\n faWeight,\n faUserGroup,\n faUserFriends,\n faArrowUpAZ,\n faSortAlphaUp,\n faChessKnight,\n faFaceLaughSquint,\n faLaughSquint,\n faWheelchair,\n faCircleArrowUp,\n faArrowCircleUp,\n faToggleOn,\n faPersonWalking,\n faWalking,\n faL,\n faFire,\n faBedPulse,\n faProcedures,\n faShuttleSpace,\n faSpaceShuttle,\n faFaceLaugh,\n faLaugh,\n faFolderOpen,\n faHeartCirclePlus,\n faCodeFork,\n faCity,\n faMicrophoneLines,\n faMicrophoneAlt,\n faPepperHot,\n faUnlock,\n faColonSign,\n faHeadset,\n faStoreSlash,\n faRoadCircleXmark,\n faUserMinus,\n faMarsStrokeUp,\n faMarsStrokeV,\n faChampagneGlasses,\n faGlassCheers,\n faClipboard,\n faHouseCircleExclamation,\n faFileArrowUp,\n faFileUpload,\n faWifi,\n faWifi3,\n faWifiStrong,\n faBath,\n faBathtub,\n faUnderline,\n faUserPen,\n faUserEdit,\n faSignature,\n faStroopwafel,\n faBold,\n faAnchorLock,\n faBuildingNgo,\n faManatSign,\n faNotEqual,\n faBorderTopLeft,\n faBorderStyle,\n faMapLocationDot,\n faMapMarkedAlt,\n faJedi,\n faSquarePollVertical,\n faPoll,\n faMugHot,\n faCarBattery,\n faBatteryCar,\n faGift,\n faDiceTwo,\n faChessQueen,\n faGlasses,\n faChessBoard,\n faBuildingCircleCheck,\n faPersonChalkboard,\n faMarsStrokeRight,\n faMarsStrokeH,\n faHandBackFist,\n faHandRock,\n faSquareCaretUp,\n faCaretSquareUp,\n faCloudShowersWater,\n faChartBar,\n faBarChart,\n faHandsBubbles,\n faHandsWash,\n faLessThanEqual,\n faTrain,\n faEyeLowVision,\n faLowVision,\n faCrow,\n faSailboat,\n faWindowRestore,\n faSquarePlus,\n faPlusSquare,\n faToriiGate,\n faFrog,\n faBucket,\n faImage,\n faMicrophone,\n faCow,\n faCaretUp,\n faScrewdriver,\n faFolderClosed,\n faHouseTsunami,\n faSquareNfi,\n faArrowUpFromGroundWater,\n faMartiniGlass,\n faGlassMartiniAlt,\n faRotateLeft,\n faRotateBack,\n faRotateBackward,\n faUndoAlt,\n faTableColumns,\n faColumns,\n faLemon,\n faHeadSideMask,\n faHandshake,\n faGem,\n faDolly,\n faDollyBox,\n faSmoking,\n faMinimize,\n faCompressArrowsAlt,\n faMonument,\n faSnowplow,\n faAnglesRight,\n faAngleDoubleRight,\n faCannabis,\n faCirclePlay,\n faPlayCircle,\n faTablets,\n faEthernet,\n faEuroSign,\n faEur,\n faEuro,\n faChair,\n faCircleCheck,\n faCheckCircle,\n faCircleStop,\n faStopCircle,\n faCompassDrafting,\n faDraftingCompass,\n faPlateWheat,\n faIcicles,\n faPersonShelter,\n faNeuter,\n faIdBadge,\n faMarker,\n faFaceLaughBeam,\n faLaughBeam,\n faHelicopterSymbol,\n faUniversalAccess,\n faCircleChevronUp,\n faChevronCircleUp,\n faLariSign,\n faVolcano,\n faPersonWalkingDashedLineArrowRight,\n faSterlingSign,\n faGbp,\n faPoundSign,\n faViruses,\n faSquarePersonConfined,\n faUserTie,\n faArrowDownLong,\n faLongArrowDown,\n faTentArrowDownToLine,\n faCertificate,\n faReplyAll,\n faMailReplyAll,\n faSuitcase,\n faPersonSkating,\n faSkating,\n faFilterCircleDollar,\n faFunnelDollar,\n faCameraRetro,\n faCircleArrowDown,\n faArrowCircleDown,\n faFileImport,\n faArrowRightToFile,\n faSquareArrowUpRight,\n faExternalLinkSquare,\n faBoxOpen,\n faScroll,\n faSpa,\n faLocationPinLock,\n faPause,\n faHillAvalanche,\n faTemperatureEmpty,\n faTemperature0,\n faThermometer0,\n faThermometerEmpty,\n faBomb,\n faRegistered,\n faAddressCard,\n faContactCard,\n faVcard,\n faScaleUnbalancedFlip,\n faBalanceScaleRight,\n faSubscript,\n faDiamondTurnRight,\n faDirections,\n faBurst,\n faHouseLaptop,\n faLaptopHouse,\n faFaceTired,\n faTired,\n faMoneyBills,\n faSmog,\n faCrutch,\n faFontAwesome,\n faFontAwesomeFlag,\n faFontAwesomeLogoFull,\n faCloudArrowUp,\n faCloudUpload,\n faCloudUploadAlt,\n faPalette,\n faArrowsTurnRight,\n faVest,\n faFerry,\n faArrowsDownToPeople,\n faSeedling,\n faSprout,\n faLeftRight,\n faArrowsAltH,\n faBoxesPacking,\n faCircleArrowLeft,\n faArrowCircleLeft,\n faGroupArrowsRotate,\n faBowlFood,\n faCandyCane,\n faArrowDownWideShort,\n faSortAmountAsc,\n faSortAmountDown,\n faCloudBolt,\n faThunderstorm,\n faTextSlash,\n faRemoveFormat,\n faFaceSmileWink,\n faSmileWink,\n faFileWord,\n faFilePowerpoint,\n faArrowsLeftRight,\n faArrowsH,\n faHouseLock,\n faCloudArrowDown,\n faCloudDownload,\n faCloudDownloadAlt,\n faChildren,\n faChalkboard,\n faBlackboard,\n faUserLargeSlash,\n faUserAltSlash,\n faEnvelopeOpen,\n faHandshakeSimpleSlash,\n faHandshakeAltSlash,\n faMattressPillow,\n faGuaraniSign,\n faArrowsRotate,\n faRefresh,\n faSync,\n faFireExtinguisher,\n faCruzeiroSign,\n faGreaterThanEqual,\n faShieldHalved,\n faShieldAlt,\n faBookAtlas,\n faAtlas,\n faVirus,\n faEnvelopeCircleCheck,\n faLayerGroup,\n faArrowsToDot,\n faArchway,\n faHeartCircleCheck,\n faHouseChimneyCrack,\n faHouseDamage,\n faFileZipper,\n faFileArchive,\n faSquare,\n faMartiniGlassEmpty,\n faGlassMartini,\n faCouch,\n faCediSign,\n faItalic,\n faTableCellsColumnLock,\n faChurch,\n faCommentsDollar,\n faDemocrat,\n faZ,\n faPersonSkiing,\n faSkiing,\n faRoadLock,\n faA,\n faTemperatureArrowDown,\n faTemperatureDown,\n faFeatherPointed,\n faFeatherAlt,\n faP,\n faSnowflake,\n faNewspaper,\n faRectangleAd,\n faAd,\n faCircleArrowRight,\n faArrowCircleRight,\n faFilterCircleXmark,\n faLocust,\n faSort,\n faUnsorted,\n faListOl,\n faList12,\n faListNumeric,\n faPersonDressBurst,\n faMoneyCheckDollar,\n faMoneyCheckAlt,\n faVectorSquare,\n faBreadSlice,\n faLanguage,\n faFaceKissWinkHeart,\n faKissWinkHeart,\n faFilter,\n faQuestion,\n faFileSignature,\n faUpDownLeftRight,\n faArrowsAlt,\n faHouseChimneyUser,\n faHandHoldingHeart,\n faPuzzlePiece,\n faMoneyCheck,\n faStarHalfStroke,\n faStarHalfAlt,\n faCode,\n faWhiskeyGlass,\n faGlassWhiskey,\n faBuildingCircleExclamation,\n faMagnifyingGlassChart,\n faArrowUpRightFromSquare,\n faExternalLink,\n faCubesStacked,\n faWonSign,\n faKrw,\n faWon,\n faVirusCovid,\n faAustralSign,\n faF,\n faLeaf,\n faRoad,\n faTaxi,\n faCab,\n faPersonCirclePlus,\n faChartPie,\n faPieChart,\n faBoltLightning,\n faSackXmark,\n faFileExcel,\n faFileContract,\n faFishFins,\n faBuildingFlag,\n faFaceGrinBeam,\n faGrinBeam,\n faObjectUngroup,\n faPoop,\n faLocationPin,\n faMapMarker,\n faKaaba,\n faToiletPaper,\n faHelmetSafety,\n faHardHat,\n faHatHard,\n faEject,\n faCircleRight,\n faArrowAltCircleRight,\n faPlaneCircleCheck,\n faFaceRollingEyes,\n faMehRollingEyes,\n faObjectGroup,\n faChartLine,\n faLineChart,\n faMaskVentilator,\n faArrowRight,\n faSignsPost,\n faMapSigns,\n faCashRegister,\n faPersonCircleQuestion,\n faH,\n faTarp,\n faScrewdriverWrench,\n faTools,\n faArrowsToEye,\n faPlugCircleBolt,\n faHeart,\n faMarsAndVenus,\n faHouseUser,\n faHomeUser,\n faDumpsterFire,\n faHouseCrack,\n faMartiniGlassCitrus,\n faCocktail,\n faFaceSurprise,\n faSurprise,\n faBottleWater,\n faCirclePause,\n faPauseCircle,\n faToiletPaperSlash,\n faAppleWhole,\n faAppleAlt,\n faKitchenSet,\n faR,\n faTemperatureQuarter,\n faTemperature1,\n faThermometer1,\n faThermometerQuarter,\n faCube,\n faBitcoinSign,\n faShieldDog,\n faSolarPanel,\n faLockOpen,\n faElevator,\n faMoneyBillTransfer,\n faMoneyBillTrendUp,\n faHouseFloodWaterCircleArrowRight,\n faSquarePollHorizontal,\n faPollH,\n faCircle,\n faBackwardFast,\n faFastBackward,\n faRecycle,\n faUserAstronaut,\n faPlaneSlash,\n faTrademark,\n faBasketball,\n faBasketballBall,\n faSatelliteDish,\n faCircleUp,\n faArrowAltCircleUp,\n faMobileScreenButton,\n faMobileAlt,\n faVolumeHigh,\n faVolumeUp,\n faUsersRays,\n faWallet,\n faClipboardCheck,\n faFileAudio,\n faBurger,\n faHamburger,\n faWrench,\n faBugs,\n faRupeeSign,\n faRupee,\n faFileImage,\n faCircleQuestion,\n faQuestionCircle,\n faPlaneDeparture,\n faHandshakeSlash,\n faBookBookmark,\n faCodeBranch,\n faHatCowboy,\n faBridge,\n faPhoneFlip,\n faPhoneAlt,\n faTruckFront,\n faCat,\n faAnchorCircleExclamation,\n faTruckField,\n faRoute,\n faClipboardQuestion,\n faPanorama,\n faCommentMedical,\n faTeethOpen,\n faFileCircleMinus,\n faTags,\n faWineGlass,\n faForwardFast,\n faFastForward,\n faFaceMehBlank,\n faMehBlank,\n faSquareParking,\n faParking,\n faHouseSignal,\n faBarsProgress,\n faTasksAlt,\n faFaucetDrip,\n faCartFlatbed,\n faDollyFlatbed,\n faBanSmoking,\n faSmokingBan,\n faTerminal,\n faMobileButton,\n faHouseMedicalFlag,\n faBasketShopping,\n faShoppingBasket,\n faTape,\n faBusSimple,\n faBusAlt,\n faEye,\n faFaceSadCry,\n faSadCry,\n faAudioDescription,\n faPersonMilitaryToPerson,\n faFileShield,\n faUserSlash,\n faPen,\n faTowerObservation,\n faFileCode,\n faSignal,\n faSignal5,\n faSignalPerfect,\n faBus,\n faHeartCircleXmark,\n faHouseChimney,\n faHomeLg,\n faWindowMaximize,\n faFaceFrown,\n faFrown,\n faPrescription,\n faShop,\n faStoreAlt,\n faFloppyDisk,\n faSave,\n faVihara,\n faScaleUnbalanced,\n faBalanceScaleLeft,\n faSortUp,\n faSortAsc,\n faCommentDots,\n faCommenting,\n faPlantWilt,\n faDiamond,\n faFaceGrinSquint,\n faGrinSquint,\n faHandHoldingDollar,\n faHandHoldingUsd,\n faBacterium,\n faHandPointer,\n faDrumSteelpan,\n faHandScissors,\n faHandsPraying,\n faPrayingHands,\n faArrowRotateRight,\n faArrowRightRotate,\n faArrowRotateForward,\n faRedo,\n faWebAwesome,\n faBiohazard,\n faLocationCrosshairs,\n faLocation,\n faMarsDouble,\n faChildDress,\n faUsersBetweenLines,\n faLungsVirus,\n faFaceGrinTears,\n faGrinTears,\n faPhone,\n faCalendarXmark,\n faCalendarTimes,\n faChildReaching,\n faHeadSideVirus,\n faUserGear,\n faUserCog,\n faArrowUp19,\n faSortNumericUp,\n faDoorClosed,\n faShieldVirus,\n faDiceSix,\n faMosquitoNet,\n faBridgeWater,\n faPersonBooth,\n faTextWidth,\n faHatWizard,\n faPenFancy,\n faPersonDigging,\n faDigging,\n faTrash,\n faGaugeSimple,\n faGaugeSimpleMed,\n faTachometerAverage,\n faBookMedical,\n faPoo,\n faQuoteRight,\n faQuoteRightAlt,\n faShirt,\n faTShirt,\n faTshirt,\n faCubes,\n faDivide,\n faTengeSign,\n faTenge,\n faHeadphones,\n faHandsHolding,\n faHandsClapping,\n faRepublican,\n faArrowLeft,\n faPersonCircleXmark,\n faRuler,\n faAlignLeft,\n faDiceD6,\n faRestroom,\n faJ,\n faUsersViewfinder,\n faFileVideo,\n faUpRightFromSquare,\n faExternalLinkAlt,\n faTableCells,\n faTh,\n faFilePdf,\n faBookBible,\n faBible,\n faO,\n faSuitcaseMedical,\n faMedkit,\n faUserSecret,\n faOtter,\n faPersonDress,\n faFemale,\n faCommentDollar,\n faBusinessTime,\n faBriefcaseClock,\n faTableCellsLarge,\n faThLarge,\n faBookTanakh,\n faTanakh,\n faPhoneVolume,\n faVolumeControlPhone,\n faHatCowboySide,\n faClipboardUser,\n faChild,\n faLiraSign,\n faSatellite,\n faPlaneLock,\n faTag,\n faComment,\n faCakeCandles,\n faBirthdayCake,\n faCake,\n faEnvelope,\n faAnglesUp,\n faAngleDoubleUp,\n faPaperclip,\n faArrowRightToCity,\n faRibbon,\n faLungs,\n faArrowUp91,\n faSortNumericUpAlt,\n faLitecoinSign,\n faBorderNone,\n faCircleNodes,\n faParachuteBox,\n faIndent,\n faTruckFieldUn,\n faHourglass,\n faHourglassEmpty,\n faMountain,\n faUserDoctor,\n faUserMd,\n faCircleInfo,\n faInfoCircle,\n faCloudMeatball,\n faCamera,\n faCameraAlt,\n faSquareVirus,\n faMeteor,\n faCarOn,\n faSleigh,\n faArrowDown19,\n faSortNumericAsc,\n faSortNumericDown,\n faHandHoldingDroplet,\n faHandHoldingWater,\n faWater,\n faCalendarCheck,\n faBraille,\n faPrescriptionBottleMedical,\n faPrescriptionBottleAlt,\n faLandmark,\n faTruck,\n faCrosshairs,\n faPersonCane,\n faTent,\n faVestPatches,\n faCheckDouble,\n faArrowDownAZ,\n faSortAlphaAsc,\n faSortAlphaDown,\n faMoneyBillWheat,\n faCookie,\n faArrowRotateLeft,\n faArrowLeftRotate,\n faArrowRotateBack,\n faArrowRotateBackward,\n faUndo,\n faHardDrive,\n faHdd,\n faFaceGrinSquintTears,\n faGrinSquintTears,\n faDumbbell,\n faRectangleList,\n faListAlt,\n faTarpDroplet,\n faHouseMedicalCircleCheck,\n faPersonSkiingNordic,\n faSkiingNordic,\n faCalendarPlus,\n faPlaneArrival,\n faCircleLeft,\n faArrowAltCircleLeft,\n faTrainSubway,\n faSubway,\n faChartGantt,\n faIndianRupeeSign,\n faIndianRupee,\n faInr,\n faCropSimple,\n faCropAlt,\n faMoneyBill1,\n faMoneyBillAlt,\n faLeftLong,\n faLongArrowAltLeft,\n faDna,\n faVirusSlash,\n faMinus,\n faSubtract,\n faChess,\n faArrowLeftLong,\n faLongArrowLeft,\n faPlugCircleCheck,\n faStreetView,\n faFrancSign,\n faVolumeOff,\n faHandsAslInterpreting,\n faAmericanSignLanguageInterpreting,\n faAslInterpreting,\n faHandsAmericanSignLanguageInterpreting,\n faGear,\n faCog,\n faDropletSlash,\n faTintSlash,\n faMosque,\n faMosquito,\n faStarOfDavid,\n faPersonMilitaryRifle,\n faCartShopping,\n faShoppingCart,\n faVials,\n faPlugCirclePlus,\n faPlaceOfWorship,\n faGripVertical,\n faArrowTurnUp,\n faLevelUp,\n faU,\n faSquareRootVariable,\n faSquareRootAlt,\n faClock,\n faClockFour,\n faBackwardStep,\n faStepBackward,\n faPallet,\n faFaucet,\n faBaseballBatBall,\n faS,\n faTimeline,\n faKeyboard,\n faCaretDown,\n faHouseChimneyMedical,\n faClinicMedical,\n faTemperatureThreeQuarters,\n faTemperature3,\n faThermometer3,\n faThermometerThreeQuarters,\n faMobileScreen,\n faMobileAndroidAlt,\n faPlaneUp,\n faPiggyBank,\n faBatteryHalf,\n faBattery3,\n faMountainCity,\n faCoins,\n faKhanda,\n faSliders,\n faSlidersH,\n faFolderTree,\n faNetworkWired,\n faMapPin,\n faHamsa,\n faCentSign,\n faFlask,\n faPersonPregnant,\n faWandSparkles,\n faEllipsisVertical,\n faEllipsisV,\n faTicket,\n faPowerOff,\n faRightLong,\n faLongArrowAltRight,\n faFlagUsa,\n faLaptopFile,\n faTty,\n faTeletype,\n faDiagramNext,\n faPersonRifle,\n faHouseMedicalCircleExclamation,\n faClosedCaptioning,\n faPersonHiking,\n faHiking,\n faVenusDouble,\n faImages,\n faCalculator,\n faPeoplePulling,\n faN,\n faCableCar,\n faTram,\n faCloudRain,\n faBuildingCircleXmark,\n faShip,\n faArrowsDownToLine,\n faDownload,\n faFaceGrin,\n faGrin,\n faDeleteLeft,\n faBackspace,\n faEyeDropper,\n faEyeDropperEmpty,\n faEyedropper,\n faFileCircleCheck,\n faForward,\n faMobile,\n faMobileAndroid,\n faMobilePhone,\n faFaceMeh,\n faMeh,\n faAlignCenter,\n faBookSkull,\n faBookDead,\n faIdCard,\n faDriversLicense,\n faOutdent,\n faDedent,\n faHeartCircleExclamation,\n faHouse,\n faHome,\n faHomeAlt,\n faHomeLgAlt,\n faCalendarWeek,\n faLaptopMedical,\n faB,\n faFileMedical,\n faDiceOne,\n faKiwiBird,\n faArrowRightArrowLeft,\n faExchange,\n faRotateRight,\n faRedoAlt,\n faRotateForward,\n faUtensils,\n faCutlery,\n faArrowUpWideShort,\n faSortAmountUp,\n faMillSign,\n faBowlRice,\n faSkull,\n faTowerBroadcast,\n faBroadcastTower,\n faTruckPickup,\n faUpLong,\n faLongArrowAltUp,\n faStop,\n faCodeMerge,\n faUpload,\n faHurricane,\n faMound,\n faToiletPortable,\n faCompactDisc,\n faFileArrowDown,\n faFileDownload,\n faCaravan,\n faShieldCat,\n faBolt,\n faZap,\n faGlassWater,\n faOilWell,\n faVault,\n faMars,\n faToilet,\n faPlaneCircleXmark,\n faYenSign,\n faCny,\n faJpy,\n faRmb,\n faYen,\n faRubleSign,\n faRouble,\n faRub,\n faRuble,\n faSun,\n faGuitar,\n faFaceLaughWink,\n faLaughWink,\n faHorseHead,\n faBoreHole,\n faIndustry,\n faCircleDown,\n faArrowAltCircleDown,\n faArrowsTurnToDots,\n faFlorinSign,\n faArrowDownShortWide,\n faSortAmountDesc,\n faSortAmountDownAlt,\n faLessThan,\n faAngleDown,\n faCarTunnel,\n faHeadSideCough,\n faGripLines,\n faThumbsDown,\n faUserLock,\n faArrowRightLong,\n faLongArrowRight,\n faAnchorCircleXmark,\n faEllipsis,\n faEllipsisH,\n faChessPawn,\n faKitMedical,\n faFirstAid,\n faPersonThroughWindow,\n faToolbox,\n faHandsHoldingCircle,\n faBug,\n faCreditCard,\n faCreditCardAlt,\n faCar,\n faAutomobile,\n faHandHoldingHand,\n faBookOpenReader,\n faBookReader,\n faMountainSun,\n faArrowsLeftRightToLine,\n faDiceD20,\n faTruckDroplet,\n faFileCircleXmark,\n faTemperatureArrowUp,\n faTemperatureUp,\n faMedal,\n faBed,\n faSquareH,\n faHSquare,\n faPodcast,\n faTemperatureFull,\n faTemperature4,\n faThermometer4,\n faThermometerFull,\n faBell,\n faSuperscript,\n faPlugCircleXmark,\n faStarOfLife,\n faPhoneSlash,\n faPaintRoller,\n faHandshakeAngle,\n faHandsHelping,\n faLocationDot,\n faMapMarkerAlt,\n faFile,\n faGreaterThan,\n faPersonSwimming,\n faSwimmer,\n faArrowDown,\n faDroplet,\n faTint,\n faEraser,\n faEarthAmericas,\n faEarth,\n faEarthAmerica,\n faGlobeAmericas,\n faPersonBurst,\n faDove,\n faBatteryEmpty,\n faBattery0,\n faSocks,\n faInbox,\n faSection,\n faGaugeHigh,\n faTachometerAlt,\n faTachometerAltFast,\n faEnvelopeOpenText,\n faHospital,\n faHospitalAlt,\n faHospitalWide,\n faWineBottle,\n faChessRook,\n faBarsStaggered,\n faReorder,\n faStream,\n faDharmachakra,\n faHotdog,\n faPersonWalkingWithCane,\n faBlind,\n faDrum,\n faIceCream,\n faHeartCircleBolt,\n faFax,\n faParagraph,\n faCheckToSlot,\n faVoteYea,\n faStarHalf,\n faBoxesStacked,\n faBoxes,\n faBoxesAlt,\n faLink,\n faChain,\n faEarListen,\n faAssistiveListeningSystems,\n faTreeCity,\n faPlay,\n faFont,\n faTableCellsRowLock,\n faRupiahSign,\n faMagnifyingGlass,\n faSearch,\n faTableTennisPaddleBall,\n faPingPongPaddleBall,\n faTableTennis,\n faPersonDotsFromLine,\n faDiagnoses,\n faTrashCanArrowUp,\n faTrashRestoreAlt,\n faNairaSign,\n faCartArrowDown,\n faWalkieTalkie,\n faFilePen,\n faFileEdit,\n faReceipt,\n faSquarePen,\n faPenSquare,\n faPencilSquare,\n faSuitcaseRolling,\n faPersonCircleExclamation,\n faChevronDown,\n faBatteryFull,\n faBattery,\n faBattery5,\n faSkullCrossbones,\n faCodeCompare,\n faListUl,\n faListDots,\n faSchoolLock,\n faTowerCell,\n faDownLong,\n faLongArrowAltDown,\n faRankingStar,\n faChessKing,\n faPersonHarassing,\n faBrazilianRealSign,\n faLandmarkDome,\n faLandmarkAlt,\n faArrowUp,\n faTv,\n faTelevision,\n faTvAlt,\n faShrimp,\n faListCheck,\n faTasks,\n faJugDetergent,\n faCircleUser,\n faUserCircle,\n faUserShield,\n faWind,\n faCarBurst,\n faCarCrash,\n faY,\n faPersonSnowboarding,\n faSnowboarding,\n faTruckFast,\n faShippingFast,\n faFish,\n faUserGraduate,\n faCircleHalfStroke,\n faAdjust,\n faClapperboard,\n faCircleRadiation,\n faRadiationAlt,\n faBaseball,\n faBaseballBall,\n faJetFighterUp,\n faDiagramProject,\n faProjectDiagram,\n faCopy,\n faVolumeXmark,\n faVolumeMute,\n faVolumeTimes,\n faHandSparkles,\n faGrip,\n faGripHorizontal,\n faShareFromSquare,\n faShareSquare,\n faChildCombatant,\n faChildRifle,\n faGun,\n faSquarePhone,\n faPhoneSquare,\n faPlus,\n faAdd,\n faExpand,\n faComputer,\n faXmark,\n faClose,\n faMultiply,\n faRemove,\n faTimes,\n faArrowsUpDownLeftRight,\n faArrows,\n faChalkboardUser,\n faChalkboardTeacher,\n faPesoSign,\n faBuildingShield,\n faBaby,\n faUsersLine,\n faQuoteLeft,\n faQuoteLeftAlt,\n faTractor,\n faTrashArrowUp,\n faTrashRestore,\n faArrowDownUpLock,\n faLinesLeaning,\n faRulerCombined,\n faCopyright,\n faEquals,\n faBlender,\n faTeeth,\n faShekelSign,\n faIls,\n faShekel,\n faSheqel,\n faSheqelSign,\n faMap,\n faRocket,\n faPhotoFilm,\n faPhotoVideo,\n faFolderMinus,\n faStore,\n faArrowTrendUp,\n faPlugCircleMinus,\n faSignHanging,\n faSign,\n faBezierCurve,\n faBellSlash,\n faTablet,\n faTabletAndroid,\n faSchoolFlag,\n faFill,\n faAngleUp,\n faDrumstickBite,\n faHollyBerry,\n faChevronLeft,\n faBacteria,\n faHandLizard,\n faNotdef,\n faDisease,\n faBriefcaseMedical,\n faGenderless,\n faChevronRight,\n faRetweet,\n faCarRear,\n faCarAlt,\n faPumpSoap,\n faVideoSlash,\n faBatteryQuarter,\n faBattery2,\n faRadio,\n faBabyCarriage,\n faCarriageBaby,\n faTrafficLight,\n faThermometer,\n faVrCardboard,\n faHandMiddleFinger,\n faPercent,\n faPercentage,\n faTruckMoving,\n faGlassWaterDroplet,\n faDisplay,\n faFaceSmile,\n faSmile,\n faThumbtack,\n faThumbTack,\n faTrophy,\n faPersonPraying,\n faPray,\n faHammer,\n faHandPeace,\n faRotate,\n faSyncAlt,\n faSpinner,\n faRobot,\n faPeace,\n faGears,\n faCogs,\n faWarehouse,\n faArrowUpRightDots,\n faSplotch,\n faFaceGrinHearts,\n faGrinHearts,\n faDiceFour,\n faSimCard,\n faTransgender,\n faTransgenderAlt,\n faMercury,\n faArrowTurnDown,\n faLevelDown,\n faPersonFallingBurst,\n faAward,\n faTicketSimple,\n faTicketAlt,\n faBuilding,\n faAnglesLeft,\n faAngleDoubleLeft,\n faQrcode,\n faClockRotateLeft,\n faHistory,\n faFaceGrinBeamSweat,\n faGrinBeamSweat,\n faFileExport,\n faArrowRightFromFile,\n faShield,\n faShieldBlank,\n faArrowUpShortWide,\n faSortAmountUpAlt,\n faHouseMedical,\n faGolfBallTee,\n faGolfBall,\n faCircleChevronLeft,\n faChevronCircleLeft,\n faHouseChimneyWindow,\n faPenNib,\n faTentArrowTurnLeft,\n faTents,\n faWandMagic,\n faMagic,\n faDog,\n faCarrot,\n faMoon,\n faWineGlassEmpty,\n faWineGlassAlt,\n faCheese,\n faYinYang,\n faMusic,\n faCodeCommit,\n faTemperatureLow,\n faPersonBiking,\n faBiking,\n faBroom,\n faShieldHeart,\n faGopuram,\n faEarthOceania,\n faGlobeOceania,\n faSquareXmark,\n faTimesSquare,\n faXmarkSquare,\n faHashtag,\n faUpRightAndDownLeftFromCenter,\n faExpandAlt,\n faOilCan,\n faT,\n faHippo,\n faChartColumn,\n faInfinity,\n faVialCircleCheck,\n faPersonArrowDownToLine,\n faVoicemail,\n faFan,\n faPersonWalkingLuggage,\n faUpDown,\n faArrowsAltV,\n faCloudMoonRain,\n faCalendar,\n faTrailer,\n faBahai,\n faHaykal,\n faSdCard,\n faDragon,\n faShoePrints,\n faCirclePlus,\n faPlusCircle,\n faFaceGrinTongueWink,\n faGrinTongueWink,\n faHandHolding,\n faPlugCircleExclamation,\n faLinkSlash,\n faChainBroken,\n faChainSlash,\n faUnlink,\n faClone,\n faPersonWalkingArrowLoopLeft,\n faArrowUpZA,\n faSortAlphaUpAlt,\n faFireFlameCurved,\n faFireAlt,\n faTornado,\n faFileCirclePlus,\n faBookQuran,\n faQuran,\n faAnchor,\n faBorderAll,\n faFaceAngry,\n faAngry,\n faCookieBite,\n faArrowTrendDown,\n faRss,\n faFeed,\n faDrawPolygon,\n faScaleBalanced,\n faBalanceScale,\n faGaugeSimpleHigh,\n faTachometer,\n faTachometerFast,\n faShower,\n faDesktop,\n faDesktopAlt,\n faM,\n faTableList,\n faThList,\n faCommentSms,\n faSms,\n faBook,\n faUserPlus,\n faCheck,\n faBatteryThreeQuarters,\n faBattery4,\n faHouseCircleCheck,\n faAngleLeft,\n faDiagramSuccessor,\n faTruckArrowRight,\n faArrowsSplitUpAndLeft,\n faHandFist,\n faFistRaised,\n faCloudMoon,\n faBriefcase,\n faPersonFalling,\n faImagePortrait,\n faPortrait,\n faUserTag,\n faRug,\n faEarthEurope,\n faGlobeEurope,\n faCartFlatbedSuitcase,\n faLuggageCart,\n faRectangleXmark,\n faRectangleTimes,\n faTimesRectangle,\n faWindowClose,\n faBahtSign,\n faBookOpen,\n faBookJournalWhills,\n faJournalWhills,\n faHandcuffs,\n faTriangleExclamation,\n faExclamationTriangle,\n faWarning,\n faDatabase,\n faShare,\n faMailForward,\n faBottleDroplet,\n faMaskFace,\n faHillRockslide,\n faRightLeft,\n faExchangeAlt,\n faPaperPlane,\n faRoadCircleExclamation,\n faDungeon,\n faAlignRight,\n faMoneyBill1Wave,\n faMoneyBillWaveAlt,\n faLifeRing,\n faHands,\n faSignLanguage,\n faSigning,\n faCalendarDay,\n faWaterLadder,\n faLadderWater,\n faSwimmingPool,\n faArrowsUpDown,\n faArrowsV,\n faFaceGrimace,\n faGrimace,\n faWheelchairMove,\n faWheelchairAlt,\n faTurnDown,\n faLevelDownAlt,\n faPersonWalkingArrowRight,\n faSquareEnvelope,\n faEnvelopeSquare,\n faDice,\n faBowlingBall,\n faBrain,\n faBandage,\n faBandAid,\n faCalendarMinus,\n faCircleXmark,\n faTimesCircle,\n faXmarkCircle,\n faGifts,\n faHotel,\n faEarthAsia,\n faGlobeAsia,\n faIdCardClip,\n faIdCardAlt,\n faMagnifyingGlassPlus,\n faSearchPlus,\n faThumbsUp,\n faUserClock,\n faHandDots,\n faAllergies,\n faFileInvoice,\n faWindowMinimize,\n faMugSaucer,\n faCoffee,\n faBrush,\n faMask,\n faMagnifyingGlassMinus,\n faSearchMinus,\n faRulerVertical,\n faUserLarge,\n faUserAlt,\n faTrainTram,\n faUserNurse,\n faSyringe,\n faCloudSun,\n faStopwatch20,\n faSquareFull,\n faMagnet,\n faJar,\n faNoteSticky,\n faStickyNote,\n faBugSlash,\n faArrowUpFromWaterPump,\n faBone,\n faTableCellsRowUnlock,\n faUserInjured,\n faFaceSadTear,\n faSadTear,\n faPlane,\n faTentArrowsDown,\n faExclamation,\n faArrowsSpin,\n faPrint,\n faTurkishLiraSign,\n faTry,\n faTurkishLira,\n faDollarSign,\n faDollar,\n faUsd,\n faX,\n faMagnifyingGlassDollar,\n faSearchDollar,\n faUsersGear,\n faUsersCog,\n faPersonMilitaryPointing,\n faBuildingColumns,\n faBank,\n faInstitution,\n faMuseum,\n faUniversity,\n faUmbrella,\n faTrowel,\n faD,\n faStapler,\n faMasksTheater,\n faTheaterMasks,\n faKipSign,\n faHandPointLeft,\n faHandshakeSimple,\n faHandshakeAlt,\n faJetFighter,\n faFighterJet,\n faSquareShareNodes,\n faShareAltSquare,\n faBarcode,\n faPlusMinus,\n faVideo,\n faVideoCamera,\n faGraduationCap,\n faMortarBoard,\n faHandHoldingMedical,\n faPersonCircleCheck,\n faTurnUp,\n faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faAt, faTrashCan, faTrashAlt, faTextHeight, faUserXmark, faUserTimes, faStethoscope, faMessage, faCommentAlt, faInfo, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faCalendarDays, faCalendarAlt, faAnchorCircleCheck, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faArrowsUpToLine, faSortDown, faSortDesc, faCircleMinus, faMinusCircle, faDoorOpen, faRightFromBracket, faSignOutAlt, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faBridgeCircleCheck, faPumpMedical, faFingerprint, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faFlagCheckered, faFootball, faFootballBall, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faPeopleLine, faBeerMugEmpty, faBeer, faDiagramPredecessor, faArrowUpLong, faLongArrowUp, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faTruckPlane, faRecordVinyl, faFaceGrinStars, faGrinStars, faBong, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faCircleH, faHospitalSymbol, faPager, faAddressBook, faContactBook, faStrikethrough, faK, faLandmarkFlag, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faCodePullRequest, faClipboardList, faTruckRampBox, faTruckLoading, faUserCheck, faVialVirus, faSheetPlastic, faBlog, faUserNinja, faPersonArrowUpFromLine, faScrollTorah, faTorah, faBroomBall, faQuidditch, faQuidditchBroomBall, faToggleOff, faBoxArchive, faArchive, faPersonDrowning, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faSprayCan, faTruckMonster, faW, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faCloud, faTrowelBricks, faFaceFlushed, faFlushed, faHospitalUser, faTentArrowLeftRight, faGavel, faLegal, faBinoculars, faMicrophoneSlash, faBoxTissue, faMotorcycle, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faPeopleArrows, faPeopleArrowsLeftRight, faMarsAndVenusBurst, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faTable, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faUsersSlash, faClover, faReply, faMailReply, faStarAndCrescent, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faCompass, faSquareCaretDown, faCaretSquareDown, faFileCircleQuestion, faLaptopCode, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faFilm, faRulerHorizontal, faPeopleRobbery, faLightbulb, faCaretLeft, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faCircleChevronDown, faChevronCircleDown, faUnlockKeyhole, faUnlockAlt, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faCircleDollarToSlot, faDonate, faMemory, faRoadSpikes, faFireBurner, faFlag, faHanukiah, faFeather, faVolumeLow, faVolumeDown, faCommentSlash, faCloudSunRain, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faSquareCheck, faCheckSquare, faPesetaSign, faHeading, faHeader, faGhost, faList, faListSquares, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faEgg, faHouseMedicalCircleXmark, faCampground, faFolderPlus, faFutbol, faFutbolBall, faSoccerBall, faPaintbrush, faPaintBrush, faLock, faGasPump, faHotTubPerson, faHotTub, faMapLocation, faMapMarked, faHouseFloodWater, faTree, faBridgeLock, faSackDollar, faPenToSquare, faEdit, faCarSide, faShareNodes, faShareAlt, faHeartCircleMinus, faHourglassHalf, faHourglass2, faMicroscope, faSink, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faPersonRays, faUsers, faEyeSlash, faFlaskVial, faHand, faHandPaper, faOm, faWorm, faHouseCircleXmark, faPlug, faChevronUp, faHandSpock, faStopwatch, faFaceKiss, faKiss, faBridgeCircleXmark, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faRoadCircleCheck, faDiceFive, faSquareRss, faRssSquare, faLandMineOn, faICursor, faStamp, faStairs, faI, faHryvniaSign, faHryvnia, faPills, faFaceGrinWide, faGrinAlt, faTooth, faV, faBangladeshiTakaSign, faBicycle, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faHeadSideCoughSlash, faTruckMedical, faAmbulance, faWheatAwnCircleExclamation, faSnowman, faMortarPestle, faRoadBarrier, faSchool, faIgloo, faJoint, faAngleRight, faHorse, faQ, faG, faNotesMedical, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faCapsules, faPooStorm, faPooBolt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faMoneyBill, faBookmark, faAlignJustify, faUmbrellaBeach, faHelmetUn, faBullseye, faBacon, faHandPointDown, faArrowUpFromBracket, faFolder, faFolderBlank, faFileWaveform, faFileMedicalAlt, faRadiation, faChartSimple, faMarsStroke, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faE, faPenClip, faPenAlt, faBridgeCircleExclamation, faUser, faSchoolCircleCheck, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faKey, faBullhorn, faGlobe, faSynagogue, faPersonHalfDress, faRoadBridge, faLocationArrow, faC, faTabletButton, faBuildingLock, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faPersonCircleMinus, faBan, faCancel, faCameraRotate, faSprayCanSparkles, faAirFreshener, faStar, faRepeat, faCross, faBox, faVenusMars, faArrowPointer, faMousePointer, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faSpider, faHandsBound, faFileInvoiceDollar, faPlaneCircleExclamation, faXRay, faSpellCheck, faSlash, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faShopSlash, faStoreAltSlash, faServer, faVirusCovidSlash, faShopLock, faHourglassStart, faHourglass1, faBlenderPhone, faBuildingWheat, faPersonBreastfeeding, faRightToBracket, faSignInAlt, faVenus, faPassport, faThumbtackSlash, faThumbTackSlash, faHeartPulse, faHeartbeat, faPeopleCarryBox, faPeopleCarry, faTemperatureHigh, faMicrochip, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faWeightScale, faWeight, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faChessKnight, faFaceLaughSquint, faLaughSquint, faWheelchair, faCircleArrowUp, faArrowCircleUp, faToggleOn, faPersonWalking, faWalking, faL, faFire, faBedPulse, faProcedures, faShuttleSpace, faSpaceShuttle, faFaceLaugh, faLaugh, faFolderOpen, faHeartCirclePlus, faCodeFork, faCity, faMicrophoneLines, faMicrophoneAlt, faPepperHot, faUnlock, faColonSign, faHeadset, faStoreSlash, faRoadCircleXmark, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faBath, faBathtub, faUnderline, faUserPen, faUserEdit, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faManatSign, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faJedi, faSquarePollVertical, faPoll, faMugHot, faCarBattery, faBatteryCar, faGift, faDiceTwo, faChessQueen, faGlasses, faChessBoard, faBuildingCircleCheck, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faEyeLowVision, faLowVision, faCrow, faSailboat, faWindowRestore, faSquarePlus, faPlusSquare, faToriiGate, faFrog, faBucket, faImage, faMicrophone, faCow, faCaretUp, faScrewdriver, faFolderClosed, faHouseTsunami, faSquareNfi, faArrowUpFromGroundWater, faMartiniGlass, faGlassMartiniAlt, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faMonument, faSnowplow, faAnglesRight, faAngleDoubleRight, faCannabis, faCirclePlay, faPlayCircle, faTablets, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faCompassDrafting, faDraftingCompass, faPlateWheat, faIcicles, faPersonShelter, faNeuter, faIdBadge, faMarker, faFaceLaughBeam, faLaughBeam, faHelicopterSymbol, faUniversalAccess, faCircleChevronUp, faChevronCircleUp, faLariSign, faVolcano, faPersonWalkingDashedLineArrowRight, faSterlingSign, faGbp, faPoundSign, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faFileImport, faArrowRightToFile, faSquareArrowUpRight, faExternalLinkSquare, faBoxOpen, faScroll, faSpa, faLocationPinLock, faPause, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faRegistered, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faSubscript, faDiamondTurnRight, faDirections, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faSmog, faCrutch, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faArrowsTurnRight, faVest, faFerry, faArrowsDownToPeople, faSeedling, faSprout, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faGroupArrowsRotate, faBowlFood, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCloudBolt, faThunderstorm, faTextSlash, faRemoveFormat, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faChildren, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faEnvelopeOpen, faHandshakeSimpleSlash, faHandshakeAltSlash, faMattressPillow, faGuaraniSign, faArrowsRotate, faRefresh, faSync, faFireExtinguisher, faCruzeiroSign, faGreaterThanEqual, faShieldHalved, faShieldAlt, faBookAtlas, faAtlas, faVirus, faEnvelopeCircleCheck, faLayerGroup, faArrowsToDot, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faSquare, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faTableCellsColumnLock, faChurch, faCommentsDollar, faDemocrat, faZ, faPersonSkiing, faSkiing, faRoadLock, faA, faTemperatureArrowDown, faTemperatureDown, faFeatherPointed, faFeatherAlt, faP, faSnowflake, faNewspaper, faRectangleAd, faAd, faCircleArrowRight, faArrowCircleRight, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faPersonDressBurst, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faFaceKissWinkHeart, faKissWinkHeart, faFilter, faQuestion, faFileSignature, faUpDownLeftRight, faArrowsAlt, faHouseChimneyUser, faHandHoldingHeart, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faCode, faWhiskeyGlass, faGlassWhiskey, faBuildingCircleExclamation, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faWonSign, faKrw, faWon, faVirusCovid, faAustralSign, faF, faLeaf, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faSackXmark, faFileExcel, faFileContract, faFishFins, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faPoop, faLocationPin, faMapMarker, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faChartLine, faLineChart, faMaskVentilator, faArrowRight, faSignsPost, faMapSigns, faCashRegister, faPersonCircleQuestion, faH, faTarp, faScrewdriverWrench, faTools, faArrowsToEye, faPlugCircleBolt, faHeart, faMarsAndVenus, faHouseUser, faHomeUser, faDumpsterFire, faHouseCrack, faMartiniGlassCitrus, faCocktail, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faToiletPaperSlash, faAppleWhole, faAppleAlt, faKitchenSet, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faCube, faBitcoinSign, faShieldDog, faSolarPanel, faLockOpen, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faPlaneSlash, faTrademark, faBasketball, faBasketballBall, faSatelliteDish, faCircleUp, faArrowAltCircleUp, faMobileScreenButton, faMobileAlt, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faClipboardCheck, faFileAudio, faBurger, faHamburger, faWrench, faBugs, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faCodeBranch, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faTruckFront, faCat, faAnchorCircleExclamation, faTruckField, faRoute, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faFileCircleMinus, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faSquareParking, faParking, faHouseSignal, faBarsProgress, faTasksAlt, faFaucetDrip, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faUserSlash, faPen, faTowerObservation, faFileCode, faSignal, faSignal5, faSignalPerfect, faBus, faHeartCircleXmark, faHouseChimney, faHomeLg, faWindowMaximize, faFaceFrown, faFrown, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faScaleUnbalanced, faBalanceScaleLeft, faSortUp, faSortAsc, faCommentDots, faCommenting, faPlantWilt, faDiamond, faFaceGrinSquint, faGrinSquint, faHandHoldingDollar, faHandHoldingUsd, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faWebAwesome, faBiohazard, faLocationCrosshairs, faLocation, faMarsDouble, faChildDress, faUsersBetweenLines, faLungsVirus, faFaceGrinTears, faGrinTears, faPhone, faCalendarXmark, faCalendarTimes, faChildReaching, faHeadSideVirus, faUserGear, faUserCog, faArrowUp19, faSortNumericUp, faDoorClosed, faShieldVirus, faDiceSix, faMosquitoNet, faBridgeWater, faPersonBooth, faTextWidth, faHatWizard, faPenFancy, faPersonDigging, faDigging, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faBookMedical, faPoo, faQuoteRight, faQuoteRightAlt, faShirt, faTShirt, faTshirt, faCubes, faDivide, faTengeSign, faTenge, faHeadphones, faHandsHolding, faHandsClapping, faRepublican, faArrowLeft, faPersonCircleXmark, faRuler, faAlignLeft, faDiceD6, faRestroom, faJ, faUsersViewfinder, faFileVideo, faUpRightFromSquare, faExternalLinkAlt, faTableCells, faTh, faFilePdf, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faUserSecret, faOtter, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faPhoneVolume, faVolumeControlPhone, faHatCowboySide, faClipboardUser, faChild, faLiraSign, faSatellite, faPlaneLock, faTag, faComment, faCakeCandles, faBirthdayCake, faCake, faEnvelope, faAnglesUp, faAngleDoubleUp, faPaperclip, faArrowRightToCity, faRibbon, faLungs, faArrowUp91, faSortNumericUpAlt, faLitecoinSign, faBorderNone, faCircleNodes, faParachuteBox, faIndent, faTruckFieldUn, faHourglass, faHourglassEmpty, faMountain, faUserDoctor, faUserMd, faCircleInfo, faInfoCircle, faCloudMeatball, faCamera, faCameraAlt, faSquareVirus, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandHoldingDroplet, faHandHoldingWater, faWater, faCalendarCheck, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faLandmark, faTruck, faCrosshairs, faPersonCane, faTent, faVestPatches, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBillWheat, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faHouseMedicalCircleCheck, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPlaneArrival, faCircleLeft, faArrowAltCircleLeft, faTrainSubway, faSubway, faChartGantt, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faDna, faVirusSlash, faMinus, faSubtract, faChess, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faStreetView, faFrancSign, faVolumeOff, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faGear, faCog, faDropletSlash, faTintSlash, faMosque, faMosquito, faStarOfDavid, faPersonMilitaryRifle, faCartShopping, faShoppingCart, faVials, faPlugCirclePlus, faPlaceOfWorship, faGripVertical, faArrowTurnUp, faLevelUp, faU, faSquareRootVariable, faSquareRootAlt, faClock, faClockFour, faBackwardStep, faStepBackward, faPallet, faFaucet, faBaseballBatBall, faS, faTimeline, faKeyboard, faCaretDown, faHouseChimneyMedical, faClinicMedical, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faPiggyBank, faBatteryHalf, faBattery3, faMountainCity, faCoins, faKhanda, faSliders, faSlidersH, faFolderTree, faNetworkWired, faMapPin, faHamsa, faCentSign, faFlask, faPersonPregnant, faWandSparkles, faEllipsisVertical, faEllipsisV, faTicket, faPowerOff, faRightLong, faLongArrowAltRight, faFlagUsa, faLaptopFile, faTty, faTeletype, faDiagramNext, faPersonRifle, faHouseMedicalCircleExclamation, faClosedCaptioning, faPersonHiking, faHiking, faVenusDouble, faImages, faCalculator, faPeoplePulling, faN, faCableCar, faTram, faCloudRain, faBuildingCircleXmark, faShip, faArrowsDownToLine, faDownload, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faEyeDropper, faEyeDropperEmpty, faEyedropper, faFileCircleCheck, faForward, faMobile, faMobileAndroid, faMobilePhone, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faCalendarWeek, faLaptopMedical, faB, faFileMedical, faDiceOne, faKiwiBird, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faMillSign, faBowlRice, faSkull, faTowerBroadcast, faBroadcastTower, faTruckPickup, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faUpload, faHurricane, faMound, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faCaravan, faShieldCat, faBolt, faZap, faGlassWater, faOilWell, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faRubleSign, faRouble, faRub, faRuble, faSun, faGuitar, faFaceLaughWink, faLaughWink, faHorseHead, faBoreHole, faIndustry, faCircleDown, faArrowAltCircleDown, faArrowsTurnToDots, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faAngleDown, faCarTunnel, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faAnchorCircleXmark, faEllipsis, faEllipsisH, faChessPawn, faKitMedical, faFirstAid, faPersonThroughWindow, faToolbox, faHandsHoldingCircle, faBug, faCreditCard, faCreditCardAlt, faCar, faAutomobile, faHandHoldingHand, faBookOpenReader, faBookReader, faMountainSun, faArrowsLeftRightToLine, faDiceD20, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faSquareH, faHSquare, faPodcast, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faSuperscript, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faPaintRoller, faHandshakeAngle, faHandsHelping, faLocationDot, faMapMarkerAlt, faFile, faGreaterThan, faPersonSwimming, faSwimmer, faArrowDown, faDroplet, faTint, faEraser, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faPersonBurst, faDove, faBatteryEmpty, faBattery0, faSocks, faInbox, faSection, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faEnvelopeOpenText, faHospital, faHospitalAlt, faHospitalWide, faWineBottle, faChessRook, faBarsStaggered, faReorder, faStream, faDharmachakra, faHotdog, faPersonWalkingWithCane, faBlind, faDrum, faIceCream, faHeartCircleBolt, faFax, faParagraph, faCheckToSlot, faVoteYea, faStarHalf, faBoxesStacked, faBoxes, faBoxesAlt, faLink, faChain, faEarListen, faAssistiveListeningSystems, faTreeCity, faPlay, faFont, faTableCellsRowLock, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faTrashCanArrowUp, faTrashRestoreAlt, faNairaSign, faCartArrowDown, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faSquarePen, faPenSquare, faPencilSquare, faSuitcaseRolling, faPersonCircleExclamation, faChevronDown, faBatteryFull, faBattery, faBattery5, faSkullCrossbones, faCodeCompare, faListUl, faListDots, faSchoolLock, faTowerCell, faDownLong, faLongArrowAltDown, faRankingStar, faChessKing, faPersonHarassing, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faArrowUp, faTv, faTelevision, faTvAlt, faShrimp, faListCheck, faTasks, faJugDetergent, faCircleUser, faUserCircle, faUserShield, faWind, faCarBurst, faCarCrash, faY, faPersonSnowboarding, faSnowboarding, faTruckFast, faShippingFast, faFish, faUserGraduate, faCircleHalfStroke, faAdjust, faClapperboard, faCircleRadiation, faRadiationAlt, faBaseball, faBaseballBall, faJetFighterUp, faDiagramProject, faProjectDiagram, faCopy, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faChildCombatant, faChildRifle, faGun, faSquarePhone, faPhoneSquare, faPlus, faAdd, faExpand, faComputer, faXmark, faClose, faMultiply, faRemove, faTimes, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faPesoSign, faBuildingShield, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faLinesLeaning, faRulerCombined, faCopyright, faEquals, faBlender, faTeeth, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faMap, faRocket, faPhotoFilm, faPhotoVideo, faFolderMinus, faStore, faArrowTrendUp, faPlugCircleMinus, faSignHanging, faSign, faBezierCurve, faBellSlash, faTablet, faTabletAndroid, faSchoolFlag, faFill, faAngleUp, faDrumstickBite, faHollyBerry, faChevronLeft, faBacteria, faHandLizard, faNotdef, faDisease, faBriefcaseMedical, faGenderless, faChevronRight, faRetweet, faCarRear, faCarAlt, faPumpSoap, faVideoSlash, faBatteryQuarter, faBattery2, faRadio, faBabyCarriage, faCarriageBaby, faTrafficLight, faThermometer, faVrCardboard, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faDisplay, faFaceSmile, faSmile, faThumbtack, faThumbTack, faTrophy, faPersonPraying, faPray, faHammer, faHandPeace, faRotate, faSyncAlt, faSpinner, faRobot, faPeace, faGears, faCogs, faWarehouse, faArrowUpRightDots, faSplotch, faFaceGrinHearts, faGrinHearts, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faArrowTurnDown, faLevelDown, faPersonFallingBurst, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faQrcode, faClockRotateLeft, faHistory, faFaceGrinBeamSweat, faGrinBeamSweat, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faPenNib, faTentArrowTurnLeft, faTents, faWandMagic, faMagic, faDog, faCarrot, faMoon, faWineGlassEmpty, faWineGlassAlt, faCheese, faYinYang, faMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faBroom, faShieldHeart, faGopuram, faEarthOceania, faGlobeOceania, faSquareXmark, faTimesSquare, faXmarkSquare, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faHippo, faChartColumn, faInfinity, faVialCircleCheck, faPersonArrowDownToLine, faVoicemail, faFan, faPersonWalkingLuggage, faUpDown, faArrowsAltV, faCloudMoonRain, faCalendar, faTrailer, faBahai, faHaykal, faSdCard, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faBookQuran, faQuran, faAnchor, faBorderAll, faFaceAngry, faAngry, faCookieBite, faArrowTrendDown, faRss, faFeed, faDrawPolygon, faScaleBalanced, faBalanceScale, faGaugeSimpleHigh, faTachometer, faTachometerFast, faShower, faDesktop, faDesktopAlt, faM, faTableList, faThList, faCommentSms, faSms, faBook, faUserPlus, faCheck, faBatteryThreeQuarters, faBattery4, faHouseCircleCheck, faAngleLeft, faDiagramSuccessor, faTruckArrowRight, faArrowsSplitUpAndLeft, faHandFist, faFistRaised, faCloudMoon, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faBahtSign, faBookOpen, faBookJournalWhills, faJournalWhills, faHandcuffs, faTriangleExclamation, faExclamationTriangle, faWarning, faDatabase, faShare, faMailForward, faBottleDroplet, faMaskFace, faHillRockslide, faRightLeft, faExchangeAlt, faPaperPlane, faRoadCircleExclamation, faDungeon, faAlignRight, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faBowlingBall, faBrain, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faGifts, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faUserClock, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faMugSaucer, faCoffee, faBrush, faMask, faMagnifyingGlassMinus, faSearchMinus, faRulerVertical, faUserLarge, faUserAlt, faTrainTram, faUserNurse, faSyringe, faCloudSun, faStopwatch20, faSquareFull, faMagnet, faJar, faNoteSticky, faStickyNote, faBugSlash, faArrowUpFromWaterPump, faBone, faTableCellsRowUnlock, faUserInjured, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faDollarSign, faDollar, faUsd, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faUmbrella, faTrowel, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faHandPointLeft, faHandshakeSimple, faHandshakeAlt, faJetFighter, faFighterJet, faSquareShareNodes, faShareAltSquare, faBarcode, faPlusMinus, faVideo, faVideoCamera, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faTurnUp, faLevelUpAlt };\n","function defaultDispose() { }\nexport class StrongCache {\n constructor(max = Infinity, dispose = defaultDispose) {\n this.max = max;\n this.dispose = dispose;\n this.map = new Map();\n this.newest = null;\n this.oldest = null;\n }\n has(key) {\n return this.map.has(key);\n }\n get(key) {\n const node = this.getNode(key);\n return node && node.value;\n }\n get size() {\n return this.map.size;\n }\n getNode(key) {\n const node = this.map.get(key);\n if (node && node !== this.newest) {\n const { older, newer } = node;\n if (newer) {\n newer.older = older;\n }\n if (older) {\n older.newer = newer;\n }\n node.older = this.newest;\n node.older.newer = node;\n node.newer = null;\n this.newest = node;\n if (node === this.oldest) {\n this.oldest = newer;\n }\n }\n return node;\n }\n set(key, value) {\n let node = this.getNode(key);\n if (node) {\n return node.value = value;\n }\n node = {\n key,\n value,\n newer: null,\n older: this.newest\n };\n if (this.newest) {\n this.newest.newer = node;\n }\n this.newest = node;\n this.oldest = this.oldest || node;\n this.map.set(key, node);\n return node.value;\n }\n clean() {\n while (this.oldest && this.map.size > this.max) {\n this.delete(this.oldest.key);\n }\n }\n delete(key) {\n const node = this.map.get(key);\n if (node) {\n if (node === this.newest) {\n this.newest = node.older;\n }\n if (node === this.oldest) {\n this.oldest = node.newer;\n }\n if (node.newer) {\n node.newer.older = node.older;\n }\n if (node.older) {\n node.older.newer = node.newer;\n }\n this.map.delete(key);\n this.dispose(node.value, key);\n return true;\n }\n return false;\n }\n}\n","function noop() { }\nconst defaultDispose = noop;\nconst _WeakRef = typeof WeakRef !== \"undefined\"\n ? WeakRef\n : function (value) {\n return { deref: () => value };\n };\nconst _WeakMap = typeof WeakMap !== \"undefined\" ? WeakMap : Map;\nconst _FinalizationRegistry = typeof FinalizationRegistry !== \"undefined\"\n ? FinalizationRegistry\n : function () {\n return {\n register: noop,\n unregister: noop,\n };\n };\nconst finalizationBatchSize = 10024;\nexport class WeakCache {\n constructor(max = Infinity, dispose = defaultDispose) {\n this.max = max;\n this.dispose = dispose;\n this.map = new _WeakMap();\n this.newest = null;\n this.oldest = null;\n this.unfinalizedNodes = new Set();\n this.finalizationScheduled = false;\n this.size = 0;\n this.finalize = () => {\n const iterator = this.unfinalizedNodes.values();\n for (let i = 0; i < finalizationBatchSize; i++) {\n const node = iterator.next().value;\n if (!node)\n break;\n this.unfinalizedNodes.delete(node);\n const key = node.key;\n delete node.key;\n node.keyRef = new _WeakRef(key);\n this.registry.register(key, node, node);\n }\n if (this.unfinalizedNodes.size > 0) {\n queueMicrotask(this.finalize);\n }\n else {\n this.finalizationScheduled = false;\n }\n };\n this.registry = new _FinalizationRegistry(this.deleteNode.bind(this));\n }\n has(key) {\n return this.map.has(key);\n }\n get(key) {\n const node = this.getNode(key);\n return node && node.value;\n }\n getNode(key) {\n const node = this.map.get(key);\n if (node && node !== this.newest) {\n const { older, newer } = node;\n if (newer) {\n newer.older = older;\n }\n if (older) {\n older.newer = newer;\n }\n node.older = this.newest;\n node.older.newer = node;\n node.newer = null;\n this.newest = node;\n if (node === this.oldest) {\n this.oldest = newer;\n }\n }\n return node;\n }\n set(key, value) {\n let node = this.getNode(key);\n if (node) {\n return (node.value = value);\n }\n node = {\n key,\n value,\n newer: null,\n older: this.newest,\n };\n if (this.newest) {\n this.newest.newer = node;\n }\n this.newest = node;\n this.oldest = this.oldest || node;\n this.scheduleFinalization(node);\n this.map.set(key, node);\n this.size++;\n return node.value;\n }\n clean() {\n while (this.oldest && this.size > this.max) {\n this.deleteNode(this.oldest);\n }\n }\n deleteNode(node) {\n if (node === this.newest) {\n this.newest = node.older;\n }\n if (node === this.oldest) {\n this.oldest = node.newer;\n }\n if (node.newer) {\n node.newer.older = node.older;\n }\n if (node.older) {\n node.older.newer = node.newer;\n }\n this.size--;\n const key = node.key || (node.keyRef && node.keyRef.deref());\n this.dispose(node.value, key);\n if (!node.keyRef) {\n this.unfinalizedNodes.delete(node);\n }\n else {\n this.registry.unregister(node);\n }\n if (key)\n this.map.delete(key);\n }\n delete(key) {\n const node = this.map.get(key);\n if (node) {\n this.deleteNode(node);\n return true;\n }\n return false;\n }\n scheduleFinalization(node) {\n this.unfinalizedNodes.add(node);\n if (!this.finalizationScheduled) {\n this.finalizationScheduled = true;\n queueMicrotask(this.finalize);\n }\n }\n}\n","const { toString, hasOwnProperty } = Object.prototype;\nconst fnToStr = Function.prototype.toString;\nconst previousComparisons = new Map();\n/**\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\n */\nexport function equal(a, b) {\n try {\n return check(a, b);\n }\n finally {\n previousComparisons.clear();\n }\n}\n// Allow default imports as well.\nexport default equal;\nfunction check(a, b) {\n // If the two values are strictly equal, our job is easy.\n if (a === b) {\n return true;\n }\n // Object.prototype.toString returns a representation of the runtime type of\n // the given value that is considerably more precise than typeof.\n const aTag = toString.call(a);\n const bTag = toString.call(b);\n // If the runtime types of a and b are different, they could maybe be equal\n // under some interpretation of equality, but for simplicity and performance\n // we just return false instead.\n if (aTag !== bTag) {\n return false;\n }\n switch (aTag) {\n case '[object Array]':\n // Arrays are a lot like other objects, but we can cheaply compare their\n // lengths as a short-cut before comparing their elements.\n if (a.length !== b.length)\n return false;\n // Fall through to object case...\n case '[object Object]': {\n if (previouslyCompared(a, b))\n return true;\n const aKeys = definedKeys(a);\n const bKeys = definedKeys(b);\n // If `a` and `b` have a different number of enumerable keys, they\n // must be different.\n const keyCount = aKeys.length;\n if (keyCount !== bKeys.length)\n return false;\n // Now make sure they have the same keys.\n for (let k = 0; k < keyCount; ++k) {\n if (!hasOwnProperty.call(b, aKeys[k])) {\n return false;\n }\n }\n // Finally, check deep equality of all child properties.\n for (let k = 0; k < keyCount; ++k) {\n const key = aKeys[k];\n if (!check(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n case '[object Error]':\n return a.name === b.name && a.message === b.message;\n case '[object Number]':\n // Handle NaN, which is !== itself.\n if (a !== a)\n return b !== b;\n // Fall through to shared +a === +b case...\n case '[object Boolean]':\n case '[object Date]':\n return +a === +b;\n case '[object RegExp]':\n case '[object String]':\n return a == `${b}`;\n case '[object Map]':\n case '[object Set]': {\n if (a.size !== b.size)\n return false;\n if (previouslyCompared(a, b))\n return true;\n const aIterator = a.entries();\n const isMap = aTag === '[object Map]';\n while (true) {\n const info = aIterator.next();\n if (info.done)\n break;\n // If a instanceof Set, aValue === aKey.\n const [aKey, aValue] = info.value;\n // So this works the same way for both Set and Map.\n if (!b.has(aKey)) {\n return false;\n }\n // However, we care about deep equality of values only when dealing\n // with Map structures.\n if (isMap && !check(aValue, b.get(aKey))) {\n return false;\n }\n }\n return true;\n }\n case '[object Uint16Array]':\n case '[object Uint8Array]': // Buffer, in Node.js.\n case '[object Uint32Array]':\n case '[object Int32Array]':\n case '[object Int8Array]':\n case '[object Int16Array]':\n case '[object ArrayBuffer]':\n // DataView doesn't need these conversions, but the equality check is\n // otherwise the same.\n a = new Uint8Array(a);\n b = new Uint8Array(b);\n // Fall through...\n case '[object DataView]': {\n let len = a.byteLength;\n if (len === b.byteLength) {\n while (len-- && a[len] === b[len]) {\n // Keep looping as long as the bytes are equal.\n }\n }\n return len === -1;\n }\n case '[object AsyncFunction]':\n case '[object GeneratorFunction]':\n case '[object AsyncGeneratorFunction]':\n case '[object Function]': {\n const aCode = fnToStr.call(a);\n if (aCode !== fnToStr.call(b)) {\n return false;\n }\n // We consider non-native functions equal if they have the same code\n // (native functions require === because their code is censored).\n // Note that this behavior is not entirely sound, since !== function\n // objects with the same code can behave differently depending on\n // their closure scope. However, any function can behave differently\n // depending on the values of its input arguments (including this)\n // and its calling context (including its closure scope), even\n // though the function object is === to itself; and it is entirely\n // possible for functions that are not === to behave exactly the\n // same under all conceivable circumstances. Because none of these\n // factors are statically decidable in JavaScript, JS function\n // equality is not well-defined. This ambiguity allows us to\n // consider the best possible heuristic among various imperfect\n // options, and equating non-native functions that have the same\n // code has enormous practical benefits, such as when comparing\n // functions that are repeatedly passed as fresh function\n // expressions within objects that are otherwise deeply equal. Since\n // any function created from the same syntactic expression (in the\n // same code location) will always stringify to the same code\n // according to fnToStr.call, we can reasonably expect these\n // repeatedly passed function expressions to have the same code, and\n // thus behave \"the same\" (with all the caveats mentioned above),\n // even though the runtime function objects are !== to one another.\n return !endsWith(aCode, nativeCodeSuffix);\n }\n }\n // Otherwise the values are not equal.\n return false;\n}\nfunction definedKeys(obj) {\n // Remember that the second argument to Array.prototype.filter will be\n // used as `this` within the callback function.\n return Object.keys(obj).filter(isDefinedKey, obj);\n}\nfunction isDefinedKey(key) {\n return this[key] !== void 0;\n}\nconst nativeCodeSuffix = \"{ [native code] }\";\nfunction endsWith(full, suffix) {\n const fromIndex = full.length - suffix.length;\n return fromIndex >= 0 &&\n full.indexOf(suffix, fromIndex) === fromIndex;\n}\nfunction previouslyCompared(a, b) {\n // Though cyclic references can make an object graph appear infinite from the\n // perspective of a depth-first traversal, the graph still contains a finite\n // number of distinct object references. We use the previousComparisons cache\n // to avoid comparing the same pair of object references more than once, which\n // guarantees termination (even if we end up comparing every object in one\n // graph to every object in the other graph, which is extremely unlikely),\n // while still allowing weird isomorphic structures (like rings with different\n // lengths) a chance to pass the equality test.\n let bSet = previousComparisons.get(a);\n if (bSet) {\n // Return true here because we can be sure false will be returned somewhere\n // else if the objects are not equivalent.\n if (bSet.has(b))\n return true;\n }\n else {\n previousComparisons.set(a, bSet = new Set);\n }\n bSet.add(b);\n return false;\n}\n","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\n// object keys weakly, yet can also hold non-object keys, unlike the\n// native `WeakMap`.\n// If no makeData function is supplied, the looked-up data will be an empty,\n// null-prototype Object.\nconst defaultMakeData = () => Object.create(null);\n// Useful for processing arguments objects as well as arrays.\nconst { forEach, slice } = Array.prototype;\nconst { hasOwnProperty } = Object.prototype;\nexport class Trie {\n constructor(weakness = true, makeData = defaultMakeData) {\n this.weakness = weakness;\n this.makeData = makeData;\n }\n lookup() {\n return this.lookupArray(arguments);\n }\n lookupArray(array) {\n let node = this;\n forEach.call(array, key => node = node.getChildTrie(key));\n return hasOwnProperty.call(node, \"data\")\n ? node.data\n : node.data = this.makeData(slice.call(array));\n }\n peek() {\n return this.peekArray(arguments);\n }\n peekArray(array) {\n let node = this;\n for (let i = 0, len = array.length; node && i < len; ++i) {\n const map = node.mapFor(array[i], false);\n node = map && map.get(array[i]);\n }\n return node && node.data;\n }\n remove() {\n return this.removeArray(arguments);\n }\n removeArray(array) {\n let data;\n if (array.length) {\n const head = array[0];\n const map = this.mapFor(head, false);\n const child = map && map.get(head);\n if (child) {\n data = child.removeArray(slice.call(array, 1));\n if (!child.data && !child.weak && !(child.strong && child.strong.size)) {\n map.delete(head);\n }\n }\n }\n else {\n data = this.data;\n delete this.data;\n }\n return data;\n }\n getChildTrie(key) {\n const map = this.mapFor(key, true);\n let child = map.get(key);\n if (!child)\n map.set(key, child = new Trie(this.weakness, this.makeData));\n return child;\n }\n mapFor(key, create) {\n return this.weakness && isObjRef(key)\n ? this.weak || (create ? this.weak = new WeakMap : void 0)\n : this.strong || (create ? this.strong = new Map : void 0);\n }\n}\nfunction isObjRef(value) {\n switch (typeof value) {\n case \"object\":\n if (value === null)\n break;\n // Fall through to return true...\n case \"function\":\n return true;\n }\n return false;\n}\n","// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nvar Positioning = /** @class */ (function () {\n function Positioning() {\n }\n Positioning.prototype.getAllStyles = function (element) { return window.getComputedStyle(element); };\n Positioning.prototype.getStyle = function (element, prop) { return this.getAllStyles(element)[prop]; };\n Positioning.prototype.isStaticPositioned = function (element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n };\n Positioning.prototype.offsetParent = function (element) {\n var offsetParentEl = element.offsetParent || document.documentElement;\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = offsetParentEl.offsetParent;\n }\n return offsetParentEl || document.documentElement;\n };\n Positioning.prototype.position = function (element, round) {\n if (round === void 0) { round = true; }\n var elPosition;\n var parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n elPosition = {\n top: elPosition.top,\n bottom: elPosition.bottom,\n left: elPosition.left,\n right: elPosition.right,\n height: elPosition.height,\n width: elPosition.width\n };\n }\n else {\n var offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n };\n Positioning.prototype.offset = function (element, round) {\n if (round === void 0) { round = true; }\n var elBcr = element.getBoundingClientRect();\n var viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n var elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n };\n /*\n Return false if the element to position is outside the viewport\n */\n Positioning.prototype.positionElements = function (hostElement, targetElement, placement, appendToBody) {\n var _a = placement.split('-'), _b = _a[0], placementPrimary = _b === void 0 ? 'top' : _b, _c = _a[1], placementSecondary = _c === void 0 ? 'center' : _c;\n var hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n var targetElStyles = this.getAllStyles(targetElement);\n var marginTop = parseFloat(targetElStyles.marginTop);\n var marginBottom = parseFloat(targetElStyles.marginBottom);\n var marginLeft = parseFloat(targetElStyles.marginLeft);\n var marginRight = parseFloat(targetElStyles.marginRight);\n var topPosition = 0;\n var leftPosition = 0;\n switch (placementPrimary) {\n case 'top':\n topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\n break;\n case 'bottom':\n topPosition = (hostElPosition.top + hostElPosition.height);\n break;\n case 'left':\n leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\n break;\n case 'right':\n leftPosition = (hostElPosition.left + hostElPosition.width);\n break;\n }\n switch (placementSecondary) {\n case 'top':\n topPosition = hostElPosition.top;\n break;\n case 'bottom':\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n leftPosition = hostElPosition.left;\n break;\n case 'right':\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\n }\n else {\n topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\n }\n break;\n }\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n targetElement.style.transform = \"translate(\" + Math.round(leftPosition) + \"px, \" + Math.round(topPosition) + \"px)\";\n // Check if the targetElement is inside the viewport\n var targetElBCR = targetElement.getBoundingClientRect();\n var html = document.documentElement;\n var windowHeight = window.innerHeight || html.clientHeight;\n var windowWidth = window.innerWidth || html.clientWidth;\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\n targetElBCR.bottom <= windowHeight;\n };\n return Positioning;\n}());\nexport { Positioning };\nvar placementSeparator = /\\s+/;\nvar positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\nexport function positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n var placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\n var allowedPlacements = [\n 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\n 'right-top', 'right-bottom'\n ];\n var classList = targetElement.classList;\n var addClassesToTarget = function (targetPlacement) {\n var _a = targetPlacement.split('-'), primary = _a[0], secondary = _a[1];\n var classes = [];\n if (baseClass) {\n classes.push(baseClass + \"-\" + primary);\n if (secondary) {\n classes.push(baseClass + \"-\" + primary + \"-\" + secondary);\n }\n classes.forEach(function (classname) { classList.add(classname); });\n }\n return classes;\n };\n // Remove old placement classes to avoid issues\n if (baseClass) {\n allowedPlacements.forEach(function (placementToRemove) { classList.remove(baseClass + \"-\" + placementToRemove); });\n }\n // replace auto placement with other placements\n var hasAuto = placementVals.findIndex(function (val) { return val === 'auto'; });\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find(function (val) { return val.search('^' + obj) !== -1; }) == null) {\n placementVals.splice(hasAuto++, 1, obj);\n }\n });\n }\n // coordinates where to position\n // Required for transform:\n var style = targetElement.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style['will-change'] = 'transform';\n var testPlacement;\n var isInViewport = false;\n for (var _i = 0, placementVals_1 = placementVals; _i < placementVals_1.length; _i++) {\n testPlacement = placementVals_1[_i];\n var addedClasses = addClassesToTarget(testPlacement);\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n isInViewport = true;\n break;\n }\n // Remove the baseClasses for further calculation\n if (baseClass) {\n addedClasses.forEach(function (classname) { classList.remove(classname); });\n }\n }\n if (!isInViewport) {\n // If nothing match, the first placement is the default one\n testPlacement = placementVals[0];\n addClassesToTarget(testPlacement);\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n }\n return testPlacement;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nexport var DAYS_OF_WEEK;\n(function (DAYS_OF_WEEK) {\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"SUNDAY\"] = 0] = \"SUNDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"MONDAY\"] = 1] = \"MONDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"TUESDAY\"] = 2] = \"TUESDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"WEDNESDAY\"] = 3] = \"WEDNESDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"THURSDAY\"] = 4] = \"THURSDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"FRIDAY\"] = 5] = \"FRIDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"SATURDAY\"] = 6] = \"SATURDAY\";\n})(DAYS_OF_WEEK || (DAYS_OF_WEEK = {}));\nvar DEFAULT_WEEKEND_DAYS = [\n DAYS_OF_WEEK.SUNDAY,\n DAYS_OF_WEEK.SATURDAY,\n];\nvar DAYS_IN_WEEK = 7;\nvar HOURS_IN_DAY = 24;\nvar MINUTES_IN_HOUR = 60;\nexport var SECONDS_IN_DAY = 60 * 60 * 24;\nfunction getExcludedSeconds(dateAdapter, _a) {\n var startDate = _a.startDate, seconds = _a.seconds, excluded = _a.excluded, precision = _a.precision;\n if (excluded.length < 1) {\n return 0;\n }\n var addSeconds = dateAdapter.addSeconds, getDay = dateAdapter.getDay, addDays = dateAdapter.addDays;\n var endDate = addSeconds(startDate, seconds - 1);\n var dayStart = getDay(startDate);\n var dayEnd = getDay(endDate);\n var result = 0; // Calculated in seconds\n var current = startDate;\n var _loop_1 = function () {\n var day = getDay(current);\n if (excluded.some(function (excludedDay) { return excludedDay === day; })) {\n result += calculateExcludedSeconds(dateAdapter, {\n dayStart: dayStart,\n dayEnd: dayEnd,\n day: day,\n precision: precision,\n startDate: startDate,\n endDate: endDate,\n });\n }\n current = addDays(current, 1);\n };\n while (current < endDate) {\n _loop_1();\n }\n return result;\n}\nfunction calculateExcludedSeconds(dateAdapter, _a) {\n var precision = _a.precision, day = _a.day, dayStart = _a.dayStart, dayEnd = _a.dayEnd, startDate = _a.startDate, endDate = _a.endDate;\n var differenceInSeconds = dateAdapter.differenceInSeconds, endOfDay = dateAdapter.endOfDay, startOfDay = dateAdapter.startOfDay;\n if (precision === 'minutes') {\n if (day === dayStart) {\n return differenceInSeconds(endOfDay(startDate), startDate) + 1;\n }\n else if (day === dayEnd) {\n return differenceInSeconds(endDate, startOfDay(endDate)) + 1;\n }\n }\n return SECONDS_IN_DAY;\n}\nfunction getWeekViewEventSpan(dateAdapter, _a) {\n var event = _a.event, offset = _a.offset, startOfWeekDate = _a.startOfWeekDate, excluded = _a.excluded, precision = _a.precision, totalDaysInView = _a.totalDaysInView;\n var max = dateAdapter.max, differenceInSeconds = dateAdapter.differenceInSeconds, addDays = dateAdapter.addDays, endOfDay = dateAdapter.endOfDay, differenceInDays = dateAdapter.differenceInDays;\n var span = SECONDS_IN_DAY;\n var begin = max([event.start, startOfWeekDate]);\n if (event.end) {\n switch (precision) {\n case 'minutes':\n span = differenceInSeconds(event.end, begin);\n break;\n default:\n span =\n differenceInDays(addDays(endOfDay(event.end), 1), begin) *\n SECONDS_IN_DAY;\n break;\n }\n }\n var offsetSeconds = offset * SECONDS_IN_DAY;\n var totalLength = offsetSeconds + span;\n // the best way to detect if an event is outside the week-view\n // is to check if the total span beginning (from startOfWeekDay or event start) exceeds the total days in the view\n var secondsInView = totalDaysInView * SECONDS_IN_DAY;\n if (totalLength > secondsInView) {\n span = secondsInView - offsetSeconds;\n }\n span -= getExcludedSeconds(dateAdapter, {\n startDate: begin,\n seconds: span,\n excluded: excluded,\n precision: precision,\n });\n return span / SECONDS_IN_DAY;\n}\nfunction getWeekViewEventOffset(dateAdapter, _a) {\n var event = _a.event, startOfWeekDate = _a.startOfWeek, excluded = _a.excluded, precision = _a.precision;\n var differenceInDays = dateAdapter.differenceInDays, startOfDay = dateAdapter.startOfDay, differenceInSeconds = dateAdapter.differenceInSeconds;\n if (event.start < startOfWeekDate) {\n return 0;\n }\n var offset = 0;\n switch (precision) {\n case 'days':\n offset =\n differenceInDays(startOfDay(event.start), startOfWeekDate) *\n SECONDS_IN_DAY;\n break;\n case 'minutes':\n offset = differenceInSeconds(event.start, startOfWeekDate);\n break;\n }\n offset -= getExcludedSeconds(dateAdapter, {\n startDate: startOfWeekDate,\n seconds: offset,\n excluded: excluded,\n precision: precision,\n });\n return Math.abs(offset / SECONDS_IN_DAY);\n}\nfunction isEventIsPeriod(dateAdapter, _a) {\n var event = _a.event, periodStart = _a.periodStart, periodEnd = _a.periodEnd;\n var isSameSecond = dateAdapter.isSameSecond;\n var eventStart = event.start;\n var eventEnd = event.end || event.start;\n if (eventStart > periodStart && eventStart < periodEnd) {\n return true;\n }\n if (eventEnd > periodStart && eventEnd < periodEnd) {\n return true;\n }\n if (eventStart < periodStart && eventEnd > periodEnd) {\n return true;\n }\n if (isSameSecond(eventStart, periodStart) ||\n isSameSecond(eventStart, periodEnd)) {\n return true;\n }\n if (isSameSecond(eventEnd, periodStart) ||\n isSameSecond(eventEnd, periodEnd)) {\n return true;\n }\n return false;\n}\nexport function getEventsInPeriod(dateAdapter, _a) {\n var events = _a.events, periodStart = _a.periodStart, periodEnd = _a.periodEnd;\n return events.filter(function (event) {\n return isEventIsPeriod(dateAdapter, { event: event, periodStart: periodStart, periodEnd: periodEnd });\n });\n}\nfunction getWeekDay(dateAdapter, _a) {\n var date = _a.date, _b = _a.weekendDays, weekendDays = _b === void 0 ? DEFAULT_WEEKEND_DAYS : _b;\n var startOfDay = dateAdapter.startOfDay, isSameDay = dateAdapter.isSameDay, getDay = dateAdapter.getDay;\n var today = startOfDay(new Date());\n var day = getDay(date);\n return {\n date: date,\n day: day,\n isPast: date < today,\n isToday: isSameDay(date, today),\n isFuture: date > today,\n isWeekend: weekendDays.indexOf(day) > -1,\n };\n}\nexport function getWeekViewHeader(dateAdapter, _a) {\n var viewDate = _a.viewDate, weekStartsOn = _a.weekStartsOn, _b = _a.excluded, excluded = _b === void 0 ? [] : _b, weekendDays = _a.weekendDays, _c = _a.viewStart, viewStart = _c === void 0 ? dateAdapter.startOfWeek(viewDate, { weekStartsOn: weekStartsOn }) : _c, _d = _a.viewEnd, viewEnd = _d === void 0 ? dateAdapter.addDays(viewStart, DAYS_IN_WEEK) : _d;\n var addDays = dateAdapter.addDays, getDay = dateAdapter.getDay;\n var days = [];\n var date = viewStart;\n while (date < viewEnd) {\n if (!excluded.some(function (e) { return getDay(date) === e; })) {\n days.push(getWeekDay(dateAdapter, { date: date, weekendDays: weekendDays }));\n }\n date = addDays(date, 1);\n }\n return days;\n}\nexport function getDifferenceInDaysWithExclusions(dateAdapter, _a) {\n var date1 = _a.date1, date2 = _a.date2, excluded = _a.excluded;\n var date = date1;\n var diff = 0;\n while (date < date2) {\n if (excluded.indexOf(dateAdapter.getDay(date)) === -1) {\n diff++;\n }\n date = dateAdapter.addDays(date, 1);\n }\n return diff;\n}\nexport function getAllDayWeekEvents(dateAdapter, _a) {\n var _b = _a.events, events = _b === void 0 ? [] : _b, _c = _a.excluded, excluded = _c === void 0 ? [] : _c, _d = _a.precision, precision = _d === void 0 ? 'days' : _d, _e = _a.absolutePositionedEvents, absolutePositionedEvents = _e === void 0 ? false : _e, viewStart = _a.viewStart, viewEnd = _a.viewEnd;\n viewStart = dateAdapter.startOfDay(viewStart);\n viewEnd = dateAdapter.endOfDay(viewEnd);\n var differenceInSeconds = dateAdapter.differenceInSeconds, differenceInDays = dateAdapter.differenceInDays;\n var maxRange = getDifferenceInDaysWithExclusions(dateAdapter, {\n date1: viewStart,\n date2: viewEnd,\n excluded: excluded,\n });\n var totalDaysInView = differenceInDays(viewEnd, viewStart) + 1;\n var eventsMapped = events\n .filter(function (event) { return event.allDay; })\n .map(function (event) {\n var offset = getWeekViewEventOffset(dateAdapter, {\n event: event,\n startOfWeek: viewStart,\n excluded: excluded,\n precision: precision,\n });\n var span = getWeekViewEventSpan(dateAdapter, {\n event: event,\n offset: offset,\n startOfWeekDate: viewStart,\n excluded: excluded,\n precision: precision,\n totalDaysInView: totalDaysInView,\n });\n return { event: event, offset: offset, span: span };\n })\n .filter(function (e) { return e.offset < maxRange; })\n .filter(function (e) { return e.span > 0; })\n .map(function (entry) { return ({\n event: entry.event,\n offset: entry.offset,\n span: entry.span,\n startsBeforeWeek: entry.event.start < viewStart,\n endsAfterWeek: (entry.event.end || entry.event.start) > viewEnd,\n }); })\n .sort(function (itemA, itemB) {\n var startSecondsDiff = differenceInSeconds(itemA.event.start, itemB.event.start);\n if (startSecondsDiff === 0) {\n return differenceInSeconds(itemB.event.end || itemB.event.start, itemA.event.end || itemA.event.start);\n }\n return startSecondsDiff;\n });\n var allDayEventRows = [];\n var allocatedEvents = [];\n eventsMapped.forEach(function (event, index) {\n if (allocatedEvents.indexOf(event) === -1) {\n allocatedEvents.push(event);\n var rowSpan_1 = event.span + event.offset;\n var otherRowEvents = eventsMapped\n .slice(index + 1)\n .filter(function (nextEvent) {\n if (nextEvent.offset >= rowSpan_1 &&\n rowSpan_1 + nextEvent.span <= totalDaysInView &&\n allocatedEvents.indexOf(nextEvent) === -1) {\n var nextEventOffset = nextEvent.offset - rowSpan_1;\n if (!absolutePositionedEvents) {\n nextEvent.offset = nextEventOffset;\n }\n rowSpan_1 += nextEvent.span + nextEventOffset;\n allocatedEvents.push(nextEvent);\n return true;\n }\n });\n var weekEvents = __spreadArray([event], otherRowEvents, true);\n var id = weekEvents\n .filter(function (weekEvent) { return weekEvent.event.id; })\n .map(function (weekEvent) { return weekEvent.event.id; })\n .join('-');\n allDayEventRows.push(__assign({ row: weekEvents }, (id ? { id: id } : {})));\n }\n });\n return allDayEventRows;\n}\nfunction getWeekViewHourGrid(dateAdapter, _a) {\n var events = _a.events, viewDate = _a.viewDate, hourSegments = _a.hourSegments, hourDuration = _a.hourDuration, dayStart = _a.dayStart, dayEnd = _a.dayEnd, weekStartsOn = _a.weekStartsOn, excluded = _a.excluded, weekendDays = _a.weekendDays, segmentHeight = _a.segmentHeight, viewStart = _a.viewStart, viewEnd = _a.viewEnd, minimumEventHeight = _a.minimumEventHeight;\n var dayViewHourGrid = getDayViewHourGrid(dateAdapter, {\n viewDate: viewDate,\n hourSegments: hourSegments,\n hourDuration: hourDuration,\n dayStart: dayStart,\n dayEnd: dayEnd,\n });\n var weekDays = getWeekViewHeader(dateAdapter, {\n viewDate: viewDate,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n viewStart: viewStart,\n viewEnd: viewEnd,\n });\n var setHours = dateAdapter.setHours, setMinutes = dateAdapter.setMinutes, getHours = dateAdapter.getHours, getMinutes = dateAdapter.getMinutes;\n return weekDays.map(function (day) {\n var dayView = getDayView(dateAdapter, {\n events: events,\n viewDate: day.date,\n hourSegments: hourSegments,\n dayStart: dayStart,\n dayEnd: dayEnd,\n segmentHeight: segmentHeight,\n eventWidth: 1,\n hourDuration: hourDuration,\n minimumEventHeight: minimumEventHeight,\n });\n var hours = dayViewHourGrid.map(function (hour) {\n var segments = hour.segments.map(function (segment) {\n var date = setMinutes(setHours(day.date, getHours(segment.date)), getMinutes(segment.date));\n return __assign(__assign({}, segment), { date: date });\n });\n return __assign(__assign({}, hour), { segments: segments });\n });\n function getColumnCount(allEvents, prevOverlappingEvents) {\n var columnCount = Math.max.apply(Math, prevOverlappingEvents.map(function (iEvent) { return iEvent.left + 1; }));\n var nextOverlappingEvents = allEvents\n .filter(function (iEvent) { return iEvent.left >= columnCount; })\n .filter(function (iEvent) {\n return (getOverLappingWeekViewEvents(prevOverlappingEvents, iEvent.top, iEvent.top + iEvent.height).length > 0);\n });\n if (nextOverlappingEvents.length > 0) {\n return getColumnCount(allEvents, nextOverlappingEvents);\n }\n else {\n return columnCount;\n }\n }\n var mappedEvents = dayView.events.map(function (event) {\n var columnCount = getColumnCount(dayView.events, getOverLappingWeekViewEvents(dayView.events, event.top, event.top + event.height));\n var width = 100 / columnCount;\n return __assign(__assign({}, event), { left: event.left * width, width: width });\n });\n return {\n hours: hours,\n date: day.date,\n events: mappedEvents.map(function (event) {\n var overLappingEvents = getOverLappingWeekViewEvents(mappedEvents.filter(function (otherEvent) { return otherEvent.left > event.left; }), event.top, event.top + event.height);\n if (overLappingEvents.length > 0) {\n return __assign(__assign({}, event), { width: Math.min.apply(Math, overLappingEvents.map(function (otherEvent) { return otherEvent.left; })) - event.left });\n }\n return event;\n }),\n };\n });\n}\nexport function getWeekView(dateAdapter, _a) {\n var _b = _a.events, events = _b === void 0 ? [] : _b, viewDate = _a.viewDate, weekStartsOn = _a.weekStartsOn, _c = _a.excluded, excluded = _c === void 0 ? [] : _c, _d = _a.precision, precision = _d === void 0 ? 'days' : _d, _e = _a.absolutePositionedEvents, absolutePositionedEvents = _e === void 0 ? false : _e, hourSegments = _a.hourSegments, hourDuration = _a.hourDuration, dayStart = _a.dayStart, dayEnd = _a.dayEnd, weekendDays = _a.weekendDays, segmentHeight = _a.segmentHeight, minimumEventHeight = _a.minimumEventHeight, _f = _a.viewStart, viewStart = _f === void 0 ? dateAdapter.startOfWeek(viewDate, { weekStartsOn: weekStartsOn }) : _f, _g = _a.viewEnd, viewEnd = _g === void 0 ? dateAdapter.endOfWeek(viewDate, { weekStartsOn: weekStartsOn }) : _g;\n if (!events) {\n events = [];\n }\n var startOfDay = dateAdapter.startOfDay, endOfDay = dateAdapter.endOfDay;\n viewStart = startOfDay(viewStart);\n viewEnd = endOfDay(viewEnd);\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: events,\n periodStart: viewStart,\n periodEnd: viewEnd,\n });\n var header = getWeekViewHeader(dateAdapter, {\n viewDate: viewDate,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n viewStart: viewStart,\n viewEnd: viewEnd,\n });\n return {\n allDayEventRows: getAllDayWeekEvents(dateAdapter, {\n events: eventsInPeriod,\n excluded: excluded,\n precision: precision,\n absolutePositionedEvents: absolutePositionedEvents,\n viewStart: viewStart,\n viewEnd: viewEnd,\n }),\n period: {\n events: eventsInPeriod,\n start: header[0].date,\n end: endOfDay(header[header.length - 1].date),\n },\n hourColumns: getWeekViewHourGrid(dateAdapter, {\n events: events,\n viewDate: viewDate,\n hourSegments: hourSegments,\n hourDuration: hourDuration,\n dayStart: dayStart,\n dayEnd: dayEnd,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n segmentHeight: segmentHeight,\n viewStart: viewStart,\n viewEnd: viewEnd,\n minimumEventHeight: minimumEventHeight,\n }),\n };\n}\nexport function getMonthView(dateAdapter, _a) {\n var _b = _a.events, events = _b === void 0 ? [] : _b, viewDate = _a.viewDate, weekStartsOn = _a.weekStartsOn, _c = _a.excluded, excluded = _c === void 0 ? [] : _c, _d = _a.viewStart, viewStart = _d === void 0 ? dateAdapter.startOfMonth(viewDate) : _d, _e = _a.viewEnd, viewEnd = _e === void 0 ? dateAdapter.endOfMonth(viewDate) : _e, weekendDays = _a.weekendDays;\n if (!events) {\n events = [];\n }\n var startOfWeek = dateAdapter.startOfWeek, endOfWeek = dateAdapter.endOfWeek, differenceInDays = dateAdapter.differenceInDays, startOfDay = dateAdapter.startOfDay, addHours = dateAdapter.addHours, endOfDay = dateAdapter.endOfDay, isSameMonth = dateAdapter.isSameMonth, getDay = dateAdapter.getDay;\n var start = startOfWeek(viewStart, { weekStartsOn: weekStartsOn });\n var end = endOfWeek(viewEnd, { weekStartsOn: weekStartsOn });\n var eventsInMonth = getEventsInPeriod(dateAdapter, {\n events: events,\n periodStart: start,\n periodEnd: end,\n });\n var initialViewDays = [];\n var previousDate;\n var _loop_2 = function (i) {\n // hacky fix for https://github.com/mattlewis92/angular-calendar/issues/173\n var date;\n if (previousDate) {\n date = startOfDay(addHours(previousDate, HOURS_IN_DAY));\n if (previousDate.getTime() === date.getTime()) {\n // DST change, so need to add 25 hours\n /* istanbul ignore next */\n date = startOfDay(addHours(previousDate, HOURS_IN_DAY + 1));\n }\n previousDate = date;\n }\n else {\n date = previousDate = start;\n }\n if (!excluded.some(function (e) { return getDay(date) === e; })) {\n var day = getWeekDay(dateAdapter, {\n date: date,\n weekendDays: weekendDays,\n });\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: eventsInMonth,\n periodStart: startOfDay(date),\n periodEnd: endOfDay(date),\n });\n day.inMonth = isSameMonth(date, viewDate);\n day.events = eventsInPeriod;\n day.badgeTotal = eventsInPeriod.length;\n initialViewDays.push(day);\n }\n };\n for (var i = 0; i < differenceInDays(end, start) + 1; i++) {\n _loop_2(i);\n }\n var days = [];\n var totalDaysVisibleInWeek = DAYS_IN_WEEK - excluded.length;\n if (totalDaysVisibleInWeek < DAYS_IN_WEEK) {\n for (var i = 0; i < initialViewDays.length; i += totalDaysVisibleInWeek) {\n var row = initialViewDays.slice(i, i + totalDaysVisibleInWeek);\n var isRowInMonth = row.some(function (day) { return viewStart <= day.date && day.date < viewEnd; });\n if (isRowInMonth) {\n days = __spreadArray(__spreadArray([], days, true), row, true);\n }\n }\n }\n else {\n days = initialViewDays;\n }\n var rows = Math.floor(days.length / totalDaysVisibleInWeek);\n var rowOffsets = [];\n for (var i = 0; i < rows; i++) {\n rowOffsets.push(i * totalDaysVisibleInWeek);\n }\n return {\n rowOffsets: rowOffsets,\n totalDaysVisibleInWeek: totalDaysVisibleInWeek,\n days: days,\n period: {\n start: days[0].date,\n end: endOfDay(days[days.length - 1].date),\n events: eventsInMonth,\n },\n };\n}\nfunction getOverLappingWeekViewEvents(events, top, bottom) {\n return events.filter(function (previousEvent) {\n var previousEventTop = previousEvent.top;\n var previousEventBottom = previousEvent.top + previousEvent.height;\n if (top < previousEventBottom && previousEventBottom < bottom) {\n return true;\n }\n else if (top < previousEventTop && previousEventTop < bottom) {\n return true;\n }\n else if (previousEventTop <= top && bottom <= previousEventBottom) {\n return true;\n }\n return false;\n });\n}\nfunction getDayView(dateAdapter, _a) {\n var events = _a.events, viewDate = _a.viewDate, hourSegments = _a.hourSegments, dayStart = _a.dayStart, dayEnd = _a.dayEnd, eventWidth = _a.eventWidth, segmentHeight = _a.segmentHeight, hourDuration = _a.hourDuration, minimumEventHeight = _a.minimumEventHeight;\n var setMinutes = dateAdapter.setMinutes, setHours = dateAdapter.setHours, startOfDay = dateAdapter.startOfDay, startOfMinute = dateAdapter.startOfMinute, endOfDay = dateAdapter.endOfDay, differenceInMinutes = dateAdapter.differenceInMinutes;\n var startOfView = setMinutes(setHours(startOfDay(viewDate), sanitiseHours(dayStart.hour)), sanitiseMinutes(dayStart.minute));\n var endOfView = setMinutes(setHours(startOfMinute(endOfDay(viewDate)), sanitiseHours(dayEnd.hour)), sanitiseMinutes(dayEnd.minute));\n endOfView.setSeconds(59, 999);\n var previousDayEvents = [];\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: events.filter(function (event) { return !event.allDay; }),\n periodStart: startOfView,\n periodEnd: endOfView,\n });\n var dayViewEvents = eventsInPeriod\n .sort(function (eventA, eventB) {\n return eventA.start.valueOf() - eventB.start.valueOf();\n })\n .map(function (event) {\n var eventStart = event.start;\n var eventEnd = event.end || eventStart;\n var startsBeforeDay = eventStart < startOfView;\n var endsAfterDay = eventEnd > endOfView;\n var hourHeightModifier = (hourSegments * segmentHeight) / (hourDuration || MINUTES_IN_HOUR);\n var top = 0;\n if (eventStart > startOfView) {\n // adjust the difference in minutes if the user's offset is different between the start of the day and the event (e.g. when going to or from DST)\n var eventOffset = dateAdapter.getTimezoneOffset(eventStart);\n var startOffset = dateAdapter.getTimezoneOffset(startOfView);\n var diff = startOffset - eventOffset;\n top += differenceInMinutes(eventStart, startOfView) + diff;\n }\n top *= hourHeightModifier;\n top = Math.floor(top);\n var startDate = startsBeforeDay ? startOfView : eventStart;\n var endDate = endsAfterDay ? endOfView : eventEnd;\n var timezoneOffset = dateAdapter.getTimezoneOffset(startDate) -\n dateAdapter.getTimezoneOffset(endDate);\n var height = differenceInMinutes(endDate, startDate) + timezoneOffset;\n if (!event.end) {\n height = segmentHeight;\n }\n else {\n height *= hourHeightModifier;\n }\n if (minimumEventHeight && height < minimumEventHeight) {\n height = minimumEventHeight;\n }\n height = Math.floor(height);\n var bottom = top + height;\n var overlappingPreviousEvents = getOverLappingWeekViewEvents(previousDayEvents, top, bottom);\n var left = 0;\n while (overlappingPreviousEvents.some(function (previousEvent) { return previousEvent.left === left; })) {\n left += eventWidth;\n }\n var dayEvent = {\n event: event,\n height: height,\n width: eventWidth,\n top: top,\n left: left,\n startsBeforeDay: startsBeforeDay,\n endsAfterDay: endsAfterDay,\n };\n previousDayEvents.push(dayEvent);\n return dayEvent;\n });\n var width = Math.max.apply(Math, dayViewEvents.map(function (event) { return event.left + event.width; }));\n var allDayEvents = getEventsInPeriod(dateAdapter, {\n events: events.filter(function (event) { return event.allDay; }),\n periodStart: startOfDay(startOfView),\n periodEnd: endOfDay(endOfView),\n });\n return {\n events: dayViewEvents,\n width: width,\n allDayEvents: allDayEvents,\n period: {\n events: eventsInPeriod,\n start: startOfView,\n end: endOfView,\n },\n };\n}\nfunction sanitiseHours(hours) {\n return Math.max(Math.min(23, hours), 0);\n}\nfunction sanitiseMinutes(minutes) {\n return Math.max(Math.min(59, minutes), 0);\n}\nfunction getDayViewHourGrid(dateAdapter, _a) {\n var viewDate = _a.viewDate, hourSegments = _a.hourSegments, hourDuration = _a.hourDuration, dayStart = _a.dayStart, dayEnd = _a.dayEnd;\n var setMinutes = dateAdapter.setMinutes, setHours = dateAdapter.setHours, startOfDay = dateAdapter.startOfDay, startOfMinute = dateAdapter.startOfMinute, endOfDay = dateAdapter.endOfDay, addMinutes = dateAdapter.addMinutes, addDays = dateAdapter.addDays;\n var hours = [];\n var startOfView = setMinutes(setHours(startOfDay(viewDate), sanitiseHours(dayStart.hour)), sanitiseMinutes(dayStart.minute));\n var endOfView = setMinutes(setHours(startOfMinute(endOfDay(viewDate)), sanitiseHours(dayEnd.hour)), sanitiseMinutes(dayEnd.minute));\n var segmentDuration = (hourDuration || MINUTES_IN_HOUR) / hourSegments;\n var startOfViewDay = startOfDay(viewDate);\n var endOfViewDay = endOfDay(viewDate);\n var dateAdjustment = function (d) { return d; };\n // this means that we change from or to DST on this day and that's going to cause problems so we bump the date\n if (dateAdapter.getTimezoneOffset(startOfViewDay) !==\n dateAdapter.getTimezoneOffset(endOfViewDay)) {\n startOfViewDay = addDays(startOfViewDay, 1);\n startOfView = addDays(startOfView, 1);\n endOfView = addDays(endOfView, 1);\n dateAdjustment = function (d) { return addDays(d, -1); };\n }\n var dayDuration = hourDuration\n ? (HOURS_IN_DAY * 60) / hourDuration\n : MINUTES_IN_HOUR;\n for (var i = 0; i < dayDuration; i++) {\n var segments = [];\n for (var j = 0; j < hourSegments; j++) {\n var date = addMinutes(addMinutes(startOfView, i * (hourDuration || MINUTES_IN_HOUR)), j * segmentDuration);\n if (date >= startOfView && date < endOfView) {\n segments.push({\n date: dateAdjustment(date),\n displayDate: date,\n isStart: j === 0,\n });\n }\n }\n if (segments.length > 0) {\n hours.push({ segments: segments });\n }\n }\n return hours;\n}\nexport var EventValidationErrorMessage;\n(function (EventValidationErrorMessage) {\n EventValidationErrorMessage[\"NotArray\"] = \"Events must be an array\";\n EventValidationErrorMessage[\"StartPropertyMissing\"] = \"Event is missing the `start` property\";\n EventValidationErrorMessage[\"StartPropertyNotDate\"] = \"Event `start` property should be a javascript date object. Do `new Date(event.start)` to fix it.\";\n EventValidationErrorMessage[\"EndPropertyNotDate\"] = \"Event `end` property should be a javascript date object. Do `new Date(event.end)` to fix it.\";\n EventValidationErrorMessage[\"EndsBeforeStart\"] = \"Event `start` property occurs after the `end`\";\n})(EventValidationErrorMessage || (EventValidationErrorMessage = {}));\nexport function validateEvents(events, log) {\n var isValid = true;\n function isError(msg, event) {\n log(msg, event);\n isValid = false;\n }\n if (!Array.isArray(events)) {\n log(EventValidationErrorMessage.NotArray, events);\n return false;\n }\n events.forEach(function (event) {\n if (!event.start) {\n isError(EventValidationErrorMessage.StartPropertyMissing, event);\n }\n else if (!(event.start instanceof Date)) {\n isError(EventValidationErrorMessage.StartPropertyNotDate, event);\n }\n if (event.end) {\n if (!(event.end instanceof Date)) {\n isError(EventValidationErrorMessage.EndPropertyNotDate, event);\n }\n if (event.start > event.end) {\n isError(EventValidationErrorMessage.EndsBeforeStart, event);\n }\n }\n });\n return isValid;\n}\n","import { Subscriber } from '../Subscriber';\nexport function count(predicate) {\n return (source) => source.lift(new CountOperator(predicate, source));\n}\nclass CountOperator {\n constructor(predicate, source) {\n this.predicate = predicate;\n this.source = source;\n }\n call(subscriber, source) {\n return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));\n }\n}\nclass CountSubscriber extends Subscriber {\n constructor(destination, predicate, source) {\n super(destination);\n this.predicate = predicate;\n this.source = source;\n this.count = 0;\n this.index = 0;\n }\n _next(value) {\n if (this.predicate) {\n this._tryPredicate(value);\n }\n else {\n this.count++;\n }\n }\n _tryPredicate(value) {\n let result;\n try {\n result = this.predicate(value, this.index++, this.source);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.count++;\n }\n }\n _complete() {\n this.destination.next(this.count);\n this.destination.complete();\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function pairwise() {\n return (source) => source.lift(new PairwiseOperator());\n}\nclass PairwiseOperator {\n call(subscriber, source) {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n }\n}\nclass PairwiseSubscriber extends Subscriber {\n constructor(destination) {\n super(destination);\n this.hasPrev = false;\n }\n _next(value) {\n let pair;\n if (this.hasPrev) {\n pair = [this.prev, value];\n }\n else {\n this.hasPrev = true;\n }\n this.prev = value;\n if (pair) {\n this.destination.next(pair);\n }\n }\n}\n","function getDef(f, d) {\n if (typeof f === 'undefined') {\n return typeof d === 'undefined' ? f : d;\n }\n\n return f;\n}\nfunction boolean(func, def) {\n\n func = getDef(func, def);\n\n if (typeof func === 'function') {\n return function f() {\n var arguments$1 = arguments;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments$1[_key];\n }\n\n return !!func.apply(this, args);\n };\n }\n\n return !!func ? function () {\n return true;\n } : function () {\n return false;\n };\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n/**\n * Returns `true` if provided input is Element.\n * @name isElement\n * @param {*} [input]\n * @returns {boolean}\n */\nvar isElement$1 = function (input) {\n return input != null && (typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object' && input.nodeType === 1 && _typeof(input.style) === 'object' && _typeof(input.ownerDocument) === 'object';\n};\n\nfunction indexOfElement(elements, element){\n element = resolveElement(element, true);\n if(!isElement$1(element)) { return -1; }\n for(var i=0; i<elements.length; i++){\n if(elements[i] === element){\n return i;\n }\n }\n return -1;\n}\n\nfunction hasElement(elements, element){\n return -1 !== indexOfElement(elements, element);\n}\n\nfunction pushElements(elements, toAdd){\n\n for(var i=0; i<toAdd.length; i++){\n if(!hasElement(elements, toAdd[i]))\n { elements.push(toAdd[i]); }\n }\n\n return toAdd;\n}\n\nfunction addElements(elements){\n var arguments$1 = arguments;\n\n var toAdd = [], len = arguments.length - 1;\n while ( len-- > 0 ) { toAdd[ len ] = arguments$1[ len + 1 ]; }\n\n toAdd = toAdd.map(resolveElement);\n return pushElements(elements, toAdd);\n}\n\nfunction removeElements(elements){\n var arguments$1 = arguments;\n\n var toRemove = [], len = arguments.length - 1;\n while ( len-- > 0 ) { toRemove[ len ] = arguments$1[ len + 1 ]; }\n\n return toRemove.map(resolveElement).reduce(function (last, e){\n\n var index = indexOfElement(elements, e);\n\n if(index !== -1)\n { return last.concat(elements.splice(index, 1)); }\n return last;\n }, []);\n}\n\nfunction resolveElement(element, noThrow){\n if(typeof element === 'string'){\n try{\n return document.querySelector(element);\n }catch(e){\n throw e;\n }\n\n }\n\n if(!isElement$1(element) && !noThrow){\n throw new TypeError((element + \" is not a DOM element.\"));\n }\n return element;\n}\n\nfunction createPointCB(object, options) {\n\n // A persistent object (as opposed to returned object) is used to save memory\n // This is good to prevent layout thrashing, or for games, and such\n\n // NOTE\n // This uses IE fixes which should be OK to remove some day. :)\n // Some speed will be gained by removal of these.\n\n // pointCB should be saved in a variable on return\n // This allows the usage of element.removeEventListener\n\n options = options || {};\n\n var allowUpdate = boolean(options.allowUpdate, true);\n\n /*if(typeof options.allowUpdate === 'function'){\n allowUpdate = options.allowUpdate;\n }else{\n allowUpdate = function(){return true;};\n }*/\n\n return function pointCB(event) {\n\n event = event || window.event; // IE-ism\n object.target = event.target || event.srcElement || event.originalTarget;\n object.element = this;\n object.type = event.type;\n\n if (!allowUpdate(event)) {\n return;\n }\n\n // Support touch\n // http://www.creativebloq.com/javascript/make-your-site-work-touch-devices-51411644\n\n if (event.targetTouches) {\n object.x = event.targetTouches[0].clientX;\n object.y = event.targetTouches[0].clientY;\n object.pageX = event.targetTouches[0].pageX;\n object.pageY = event.targetTouches[0].pageY;\n object.screenX = event.targetTouches[0].screenX;\n object.screenY = event.targetTouches[0].screenY;\n } else {\n\n // If pageX/Y aren't available and clientX/Y are,\n // calculate pageX/Y - logic taken from jQuery.\n // (This is to support old IE)\n // NOTE Hopefully this can be removed soon.\n\n if (event.pageX === null && event.clientX !== null) {\n var eventDoc = event.target && event.target.ownerDocument || document;\n var doc = eventDoc.documentElement;\n var body = eventDoc.body;\n\n object.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n object.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } else {\n object.pageX = event.pageX;\n object.pageY = event.pageY;\n }\n\n // pageX, and pageY change with page scroll\n // so we're not going to use those for x, and y.\n // NOTE Most browsers also alias clientX/Y with x/y\n // so that's something to consider down the road.\n\n object.x = event.clientX;\n object.y = event.clientY;\n\n object.screenX = event.screenX;\n object.screenY = event.screenY;\n }\n\n object.clientX = object.x;\n object.clientY = object.y;\n };\n\n //NOTE Remember accessibility, Aria roles, and labels.\n}\n\nfunction createWindowRect() {\n var props = {\n top: { value: 0, enumerable: true },\n left: { value: 0, enumerable: true },\n right: { value: window.innerWidth, enumerable: true },\n bottom: { value: window.innerHeight, enumerable: true },\n width: { value: window.innerWidth, enumerable: true },\n height: { value: window.innerHeight, enumerable: true },\n x: { value: 0, enumerable: true },\n y: { value: 0, enumerable: true }\n };\n\n if (Object.create) {\n return Object.create({}, props);\n } else {\n var rect = {};\n Object.defineProperties(rect, props);\n return rect;\n }\n}\n\nfunction getClientRect(el) {\n if (el === window) {\n return createWindowRect();\n } else {\n try {\n var rect = el.getBoundingClientRect();\n if (rect.x === undefined) {\n rect.x = rect.left;\n rect.y = rect.top;\n }\n return rect;\n } catch (e) {\n throw new TypeError(\"Can't call getBoundingClientRect on \" + el);\n }\n }\n}\n\nfunction pointInside(point, el) {\n var rect = getClientRect(el);\n return point.y > rect.top && point.y < rect.bottom && point.x > rect.left && point.x < rect.right;\n}\n\nvar objectCreate = void 0;\nif (typeof Object.create != 'function') {\n objectCreate = function (undefined$1) {\n var Temp = function Temp() {};\n return function (prototype, propertiesObject) {\n if (prototype !== Object(prototype) && prototype !== null) {\n throw TypeError('Argument must be an object, or null');\n }\n Temp.prototype = prototype || {};\n var result = new Temp();\n Temp.prototype = null;\n if (propertiesObject !== undefined$1) {\n Object.defineProperties(result, propertiesObject);\n }\n\n // to imitate the case of Object.create(null)\n if (prototype === null) {\n result.__proto__ = null;\n }\n return result;\n };\n }();\n} else {\n objectCreate = Object.create;\n}\n\nvar objectCreate$1 = objectCreate;\n\nvar mouseEventProps = ['altKey', 'button', 'buttons', 'clientX', 'clientY', 'ctrlKey', 'metaKey', 'movementX', 'movementY', 'offsetX', 'offsetY', 'pageX', 'pageY', 'region', 'relatedTarget', 'screenX', 'screenY', 'shiftKey', 'which', 'x', 'y'];\n\nfunction createDispatcher(element) {\n\n var defaultSettings = {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n ctrlKey: false,\n shiftKey: false,\n altKey: false,\n metaKey: false,\n button: 0,\n buttons: 1,\n relatedTarget: null,\n region: null\n };\n\n if (element !== undefined) {\n element.addEventListener('mousemove', onMove);\n }\n\n function onMove(e) {\n for (var i = 0; i < mouseEventProps.length; i++) {\n defaultSettings[mouseEventProps[i]] = e[mouseEventProps[i]];\n }\n }\n\n var dispatch = function () {\n if (MouseEvent) {\n return function m1(element, initMove, data) {\n var evt = new MouseEvent('mousemove', createMoveInit(defaultSettings, initMove));\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n } else if (typeof document.createEvent === 'function') {\n return function m2(element, initMove, data) {\n var settings = createMoveInit(defaultSettings, initMove);\n var evt = document.createEvent('MouseEvents');\n\n evt.initMouseEvent(\"mousemove\", true, //can bubble\n true, //cancelable\n window, //view\n 0, //detail\n settings.screenX, //0, //screenX\n settings.screenY, //0, //screenY\n settings.clientX, //80, //clientX\n settings.clientY, //20, //clientY\n settings.ctrlKey, //false, //ctrlKey\n settings.altKey, //false, //altKey\n settings.shiftKey, //false, //shiftKey\n settings.metaKey, //false, //metaKey\n settings.button, //0, //button\n settings.relatedTarget //null //relatedTarget\n );\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n } else if (typeof document.createEventObject === 'function') {\n return function m3(element, initMove, data) {\n var evt = document.createEventObject();\n var settings = createMoveInit(defaultSettings, initMove);\n for (var name in settings) {\n evt[name] = settings[name];\n }\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n }\n }();\n\n function destroy() {\n if (element) { element.removeEventListener('mousemove', onMove, false); }\n defaultSettings = null;\n }\n\n return {\n destroy: destroy,\n dispatch: dispatch\n };\n}\n\nfunction createMoveInit(defaultSettings, initMove) {\n initMove = initMove || {};\n var settings = objectCreate$1(defaultSettings);\n for (var i = 0; i < mouseEventProps.length; i++) {\n if (initMove[mouseEventProps[i]] !== undefined) { settings[mouseEventProps[i]] = initMove[mouseEventProps[i]]; }\n }\n\n return settings;\n}\n\nfunction setSpecial(e, data) {\n console.log('data ', data);\n e.data = data || {};\n e.dispatched = 'mousemove';\n}\n\nvar prefix = [ 'webkit', 'moz', 'ms', 'o' ];\n\nvar requestFrame = (function () {\n\n if (typeof window === \"undefined\") {\n return function () {};\n }\n\n for ( var i = 0, limit = prefix.length ; i < limit && ! window.requestAnimationFrame ; ++i ) {\n window.requestAnimationFrame = window[ prefix[ i ] + 'RequestAnimationFrame' ];\n }\n\n if ( ! window.requestAnimationFrame ) {\n var lastTime = 0;\n\n window.requestAnimationFrame = function (callback) {\n var now = new Date().getTime();\n var ttc = Math.max( 0, 16 - now - lastTime );\n var timer = window.setTimeout( function () { return callback( now + ttc ); }, ttc );\n\n lastTime = now + ttc;\n\n return timer;\n };\n }\n\n return window.requestAnimationFrame.bind( window );\n})();\n\nvar cancelFrame = (function () {\n\n if (typeof window === \"undefined\") {\n return function () {};\n }\n\n for ( var i = 0, limit = prefix.length ; i < limit && ! window.cancelAnimationFrame ; ++i ) {\n window.cancelAnimationFrame = window[ prefix[ i ] + 'CancelAnimationFrame' ] || window[ prefix[ i ] + 'CancelRequestAnimationFrame' ];\n }\n\n if ( ! window.cancelAnimationFrame ) {\n window.cancelAnimationFrame = function (timer) {\n window.clearTimeout( timer );\n };\n }\n\n return window.cancelAnimationFrame.bind( window );\n})();\n\nfunction AutoScroller(elements, options){\n if ( options === void 0 ) options = {};\n\n var self = this;\n var maxSpeed = 4, scrolling = false;\n\n if (typeof options.margin !== 'object') {\n var margin = options.margin || -1;\n\n this.margin = {\n left: margin,\n right: margin,\n top: margin,\n bottom: margin\n };\n } else {\n this.margin = options.margin;\n }\n\n //this.scrolling = false;\n this.scrollWhenOutside = options.scrollWhenOutside || false;\n\n var point = {},\n pointCB = createPointCB(point),\n dispatcher = createDispatcher(),\n down = false;\n\n window.addEventListener('mousemove', pointCB, false);\n window.addEventListener('touchmove', pointCB, false);\n\n if(!isNaN(options.maxSpeed)){\n maxSpeed = options.maxSpeed;\n }\n\n if (typeof maxSpeed !== 'object') {\n maxSpeed = {\n left: maxSpeed,\n right: maxSpeed,\n top: maxSpeed,\n bottom: maxSpeed\n };\n }\n\n this.autoScroll = boolean(options.autoScroll);\n this.syncMove = boolean(options.syncMove, false);\n\n this.destroy = function(forceCleanAnimation) {\n window.removeEventListener('mousemove', pointCB, false);\n window.removeEventListener('touchmove', pointCB, false);\n window.removeEventListener('mousedown', onDown, false);\n window.removeEventListener('touchstart', onDown, false);\n window.removeEventListener('mouseup', onUp, false);\n window.removeEventListener('touchend', onUp, false);\n window.removeEventListener('pointerup', onUp, false);\n window.removeEventListener('mouseleave', onMouseOut, false);\n\n window.removeEventListener('mousemove', onMove, false);\n window.removeEventListener('touchmove', onMove, false);\n\n window.removeEventListener('scroll', setScroll, true);\n elements = [];\n if(forceCleanAnimation){\n cleanAnimation();\n }\n };\n\n this.add = function(){\n var element = [], len = arguments.length;\n while ( len-- ) element[ len ] = arguments[ len ];\n\n addElements.apply(void 0, [ elements ].concat( element ));\n return this;\n };\n\n this.remove = function(){\n var element = [], len = arguments.length;\n while ( len-- ) element[ len ] = arguments[ len ];\n\n return removeElements.apply(void 0, [ elements ].concat( element ));\n };\n\n var hasWindow = null, windowAnimationFrame;\n\n if(Object.prototype.toString.call(elements) !== '[object Array]'){\n elements = [elements];\n }\n\n (function(temp){\n elements = [];\n temp.forEach(function(element){\n if(element === window){\n hasWindow = window;\n }else {\n self.add(element);\n }\n });\n }(elements));\n\n Object.defineProperties(this, {\n down: {\n get: function(){ return down; }\n },\n maxSpeed: {\n get: function(){ return maxSpeed; }\n },\n point: {\n get: function(){ return point; }\n },\n scrolling: {\n get: function(){ return scrolling; }\n }\n });\n\n var current = null, animationFrame;\n\n window.addEventListener('mousedown', onDown, false);\n window.addEventListener('touchstart', onDown, false);\n window.addEventListener('mouseup', onUp, false);\n window.addEventListener('touchend', onUp, false);\n\n /*\n IE does not trigger mouseup event when scrolling.\n It is a known issue that Microsoft won't fix.\n https://connect.microsoft.com/IE/feedback/details/783058/scrollbar-trigger-mousedown-but-not-mouseup\n IE supports pointer events instead\n */\n window.addEventListener('pointerup', onUp, false);\n\n window.addEventListener('mousemove', onMove, false);\n window.addEventListener('touchmove', onMove, false);\n\n window.addEventListener('mouseleave', onMouseOut, false);\n\n window.addEventListener('scroll', setScroll, true);\n\n function setScroll(e){\n\n for(var i=0; i<elements.length; i++){\n if(elements[i] === e.target){\n scrolling = true;\n break;\n }\n }\n\n if(scrolling){\n requestFrame(function (){ return scrolling = false; });\n }\n }\n\n function onDown(){\n down = true;\n }\n\n function onUp(){\n down = false;\n cleanAnimation();\n }\n function cleanAnimation(){\n cancelFrame(animationFrame);\n cancelFrame(windowAnimationFrame);\n }\n function onMouseOut(){\n down = false;\n }\n\n function getTarget(target){\n if(!target){\n return null;\n }\n\n if(current === target){\n return target;\n }\n\n if(hasElement(elements, target)){\n return target;\n }\n\n while(target = target.parentNode){\n if(hasElement(elements, target)){\n return target;\n }\n }\n\n return null;\n }\n\n function getElementUnderPoint(){\n var underPoint = null;\n\n for(var i=0; i<elements.length; i++){\n if(inside(point, elements[i])){\n underPoint = elements[i];\n }\n }\n\n return underPoint;\n }\n\n\n function onMove(event){\n\n if(!self.autoScroll()) { return; }\n\n if(event['dispatched']){ return; }\n\n var target = event.target, body = document.body;\n\n if(current && !inside(point, current)){\n if(!self.scrollWhenOutside){\n current = null;\n }\n }\n\n if(target && target.parentNode === body){\n //The special condition to improve speed.\n target = getElementUnderPoint();\n }else {\n target = getTarget(target);\n\n if(!target){\n target = getElementUnderPoint();\n }\n }\n\n\n if(target && target !== current){\n current = target;\n }\n\n if(hasWindow){\n cancelFrame(windowAnimationFrame);\n windowAnimationFrame = requestFrame(scrollWindow);\n }\n\n\n if(!current){\n return;\n }\n\n cancelFrame(animationFrame);\n animationFrame = requestFrame(scrollTick);\n }\n\n function scrollWindow(){\n autoScroll(hasWindow);\n\n cancelFrame(windowAnimationFrame);\n windowAnimationFrame = requestFrame(scrollWindow);\n }\n\n function scrollTick(){\n\n if(!current){\n return;\n }\n\n autoScroll(current);\n\n cancelFrame(animationFrame);\n animationFrame = requestFrame(scrollTick);\n\n }\n\n\n function autoScroll(el){\n var rect = getClientRect(el), scrollx, scrolly;\n\n if(point.x < rect.left + self.margin.left){\n scrollx = Math.floor(\n Math.max(-1, (point.x - rect.left) / self.margin.left - 1) * self.maxSpeed.left\n );\n }else if(point.x > rect.right - self.margin.right){\n scrollx = Math.ceil(\n Math.min(1, (point.x - rect.right) / self.margin.right + 1) * self.maxSpeed.right\n );\n }else {\n scrollx = 0;\n }\n\n if(point.y < rect.top + self.margin.top){\n scrolly = Math.floor(\n Math.max(-1, (point.y - rect.top) / self.margin.top - 1) * self.maxSpeed.top\n );\n }else if(point.y > rect.bottom - self.margin.bottom){\n scrolly = Math.ceil(\n Math.min(1, (point.y - rect.bottom) / self.margin.bottom + 1) * self.maxSpeed.bottom\n );\n }else {\n scrolly = 0;\n }\n\n if(self.syncMove()){\n /*\n Notes about mousemove event dispatch.\n screen(X/Y) should need to be updated.\n Some other properties might need to be set.\n Keep the syncMove option default false until all inconsistencies are taken care of.\n */\n dispatcher.dispatch(el, {\n pageX: point.pageX + scrollx,\n pageY: point.pageY + scrolly,\n clientX: point.x + scrollx,\n clientY: point.y + scrolly\n });\n }\n\n setTimeout(function (){\n\n if(scrolly){\n scrollY(el, scrolly);\n }\n\n if(scrollx){\n scrollX(el, scrollx);\n }\n\n });\n }\n\n function scrollY(el, amount){\n if(el === window){\n window.scrollTo(el.pageXOffset, el.pageYOffset + amount);\n }else {\n el.scrollTop += amount;\n }\n }\n\n function scrollX(el, amount){\n if(el === window){\n window.scrollTo(el.pageXOffset + amount, el.pageYOffset);\n }else {\n el.scrollLeft += amount;\n }\n }\n\n}\n\nfunction AutoScrollerFactory(element, options){\n return new AutoScroller(element, options);\n}\n\nfunction inside(point, el, rect){\n if(!rect){\n return pointInside(point, el);\n }else {\n return (point.y > rect.top && point.y < rect.bottom &&\n point.x > rect.left && point.x < rect.right);\n }\n}\n\n/*\ngit remote add origin https://github.com/hollowdoor/dom_autoscroller.git\ngit push -u origin master\n*/\n\nexport default AutoScrollerFactory;\n","import * as i0 from '@angular/core';\nimport { Injectable, Directive, EventEmitter, Optional, Inject, Input, Output, NgModule } from '@angular/core';\nimport { Subject, Observable, ReplaySubject, merge, combineLatest, fromEvent } from 'rxjs';\nimport { filter, mergeMap, startWith, map, share, takeUntil, take, takeLast, count, pairwise, distinctUntilChanged } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\nimport autoScroll from '@mattlewis92/dom-autoscroller';\n\nfunction addClass(renderer, element, classToAdd) {\n if (classToAdd) {\n classToAdd\n .split(' ')\n .forEach((className) => renderer.addClass(element.nativeElement, className));\n }\n}\nfunction removeClass(renderer, element, classToRemove) {\n if (classToRemove) {\n classToRemove\n .split(' ')\n .forEach((className) => renderer.removeClass(element.nativeElement, className));\n }\n}\n\nclass DraggableHelper {\n constructor() {\n this.currentDrag = new Subject();\n }\n}\nDraggableHelper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DraggableHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDraggableHelper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DraggableHelper, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DraggableHelper, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n\n/**\n * If the window isn't scrollable, then place this on the scrollable container that draggable elements are inside. e.g.\n * ```html\n <div style=\"overflow: scroll\" mwlDraggableScrollContainer>\n <div mwlDraggable>Drag me!</div>\n </div>\n ```\n */\nclass DraggableScrollContainerDirective {\n /**\n * @hidden\n */\n constructor(elementRef) {\n this.elementRef = elementRef;\n }\n}\nDraggableScrollContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DraggableScrollContainerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nDraggableScrollContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.0.3\", type: DraggableScrollContainerDirective, selector: \"[mwlDraggableScrollContainer]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DraggableScrollContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mwlDraggableScrollContainer]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n\nclass DraggableDirective {\n /**\n * @hidden\n */\n constructor(element, renderer, draggableHelper, zone, vcr, scrollContainer, document) {\n this.element = element;\n this.renderer = renderer;\n this.draggableHelper = draggableHelper;\n this.zone = zone;\n this.vcr = vcr;\n this.scrollContainer = scrollContainer;\n this.document = document;\n /**\n * The axis along which the element is draggable\n */\n this.dragAxis = { x: true, y: true };\n /**\n * Snap all drags to an x / y grid\n */\n this.dragSnapGrid = {};\n /**\n * Show a ghost element that shows the drag when dragging\n */\n this.ghostDragEnabled = true;\n /**\n * Show the original element when ghostDragEnabled is true\n */\n this.showOriginalElementWhileDragging = false;\n /**\n * The cursor to use when hovering over a draggable element\n */\n this.dragCursor = '';\n /*\n * Options used to control the behaviour of auto scrolling: https://www.npmjs.com/package/dom-autoscroller\n */\n this.autoScroll = {\n margin: 20,\n };\n /**\n * Called when the element can be dragged along one axis and has the mouse or pointer device pressed on it\n */\n this.dragPointerDown = new EventEmitter();\n /**\n * Called when the element has started to be dragged.\n * Only called after at least one mouse or touch move event.\n * If you call $event.cancelDrag$.emit() it will cancel the current drag\n */\n this.dragStart = new EventEmitter();\n /**\n * Called after the ghost element has been created\n */\n this.ghostElementCreated = new EventEmitter();\n /**\n * Called when the element is being dragged\n */\n this.dragging = new EventEmitter();\n /**\n * Called after the element is dragged\n */\n this.dragEnd = new EventEmitter();\n /**\n * @hidden\n */\n this.pointerDown$ = new Subject();\n /**\n * @hidden\n */\n this.pointerMove$ = new Subject();\n /**\n * @hidden\n */\n this.pointerUp$ = new Subject();\n this.eventListenerSubscriptions = {};\n this.destroy$ = new Subject();\n this.timeLongPress = { timerBegin: 0, timerEnd: 0 };\n }\n ngOnInit() {\n this.checkEventListeners();\n const pointerDragged$ = this.pointerDown$.pipe(filter(() => this.canDrag()), mergeMap((pointerDownEvent) => {\n // fix for https://github.com/mattlewis92/angular-draggable-droppable/issues/61\n // stop mouse events propagating up the chain\n if (pointerDownEvent.event.stopPropagation && !this.scrollContainer) {\n pointerDownEvent.event.stopPropagation();\n }\n // hack to prevent text getting selected in safari while dragging\n const globalDragStyle = this.renderer.createElement('style');\n this.renderer.setAttribute(globalDragStyle, 'type', 'text/css');\n this.renderer.appendChild(globalDragStyle, this.renderer.createText(`\n body * {\n -moz-user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n }\n `));\n requestAnimationFrame(() => {\n this.document.head.appendChild(globalDragStyle);\n });\n const startScrollPosition = this.getScrollPosition();\n const scrollContainerScroll$ = new Observable((observer) => {\n const scrollContainer = this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : 'window';\n return this.renderer.listen(scrollContainer, 'scroll', (e) => observer.next(e));\n }).pipe(startWith(startScrollPosition), map(() => this.getScrollPosition()));\n const currentDrag$ = new Subject();\n const cancelDrag$ = new ReplaySubject();\n if (this.dragPointerDown.observers.length > 0) {\n this.zone.run(() => {\n this.dragPointerDown.next({ x: 0, y: 0 });\n });\n }\n const dragComplete$ = merge(this.pointerUp$, this.pointerDown$, cancelDrag$, this.destroy$).pipe(share());\n const pointerMove = combineLatest([\n this.pointerMove$,\n scrollContainerScroll$,\n ]).pipe(map(([pointerMoveEvent, scroll]) => {\n return {\n currentDrag$,\n transformX: pointerMoveEvent.clientX - pointerDownEvent.clientX,\n transformY: pointerMoveEvent.clientY - pointerDownEvent.clientY,\n clientX: pointerMoveEvent.clientX,\n clientY: pointerMoveEvent.clientY,\n scrollLeft: scroll.left,\n scrollTop: scroll.top,\n target: pointerMoveEvent.event.target,\n };\n }), map((moveData) => {\n if (this.dragSnapGrid.x) {\n moveData.transformX =\n Math.round(moveData.transformX / this.dragSnapGrid.x) *\n this.dragSnapGrid.x;\n }\n if (this.dragSnapGrid.y) {\n moveData.transformY =\n Math.round(moveData.transformY / this.dragSnapGrid.y) *\n this.dragSnapGrid.y;\n }\n return moveData;\n }), map((moveData) => {\n if (!this.dragAxis.x) {\n moveData.transformX = 0;\n }\n if (!this.dragAxis.y) {\n moveData.transformY = 0;\n }\n return moveData;\n }), map((moveData) => {\n const scrollX = moveData.scrollLeft - startScrollPosition.left;\n const scrollY = moveData.scrollTop - startScrollPosition.top;\n return {\n ...moveData,\n x: moveData.transformX + scrollX,\n y: moveData.transformY + scrollY,\n };\n }), filter(({ x, y, transformX, transformY }) => !this.validateDrag ||\n this.validateDrag({\n x,\n y,\n transform: { x: transformX, y: transformY },\n })), takeUntil(dragComplete$), share());\n const dragStarted$ = pointerMove.pipe(take(1), share());\n const dragEnded$ = pointerMove.pipe(takeLast(1), share());\n dragStarted$.subscribe(({ clientX, clientY, x, y }) => {\n if (this.dragStart.observers.length > 0) {\n this.zone.run(() => {\n this.dragStart.next({ cancelDrag$ });\n });\n }\n this.scroller = autoScroll([\n this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : this.document.defaultView,\n ], {\n ...this.autoScroll,\n autoScroll() {\n return true;\n },\n });\n addClass(this.renderer, this.element, this.dragActiveClass);\n if (this.ghostDragEnabled) {\n const rect = this.element.nativeElement.getBoundingClientRect();\n const clone = this.element.nativeElement.cloneNode(true);\n if (!this.showOriginalElementWhileDragging) {\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'hidden');\n }\n if (this.ghostElementAppendTo) {\n this.ghostElementAppendTo.appendChild(clone);\n }\n else {\n this.element.nativeElement.parentNode.insertBefore(clone, this.element.nativeElement.nextSibling);\n }\n this.ghostElement = clone;\n this.document.body.style.cursor = this.dragCursor;\n this.setElementStyles(clone, {\n position: 'fixed',\n top: `${rect.top}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n height: `${rect.height}px`,\n cursor: this.dragCursor,\n margin: '0',\n willChange: 'transform',\n pointerEvents: 'none',\n });\n if (this.ghostElementTemplate) {\n const viewRef = this.vcr.createEmbeddedView(this.ghostElementTemplate);\n clone.innerHTML = '';\n viewRef.rootNodes\n .filter((node) => node instanceof Node)\n .forEach((node) => {\n clone.appendChild(node);\n });\n dragEnded$.subscribe(() => {\n this.vcr.remove(this.vcr.indexOf(viewRef));\n });\n }\n if (this.ghostElementCreated.observers.length > 0) {\n this.zone.run(() => {\n this.ghostElementCreated.emit({\n clientX: clientX - x,\n clientY: clientY - y,\n element: clone,\n });\n });\n }\n dragEnded$.subscribe(() => {\n clone.parentElement.removeChild(clone);\n this.ghostElement = null;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', '');\n });\n }\n this.draggableHelper.currentDrag.next(currentDrag$);\n });\n dragEnded$\n .pipe(mergeMap((dragEndData) => {\n const dragEndData$ = cancelDrag$.pipe(count(), take(1), map((calledCount) => ({\n ...dragEndData,\n dragCancelled: calledCount > 0,\n })));\n cancelDrag$.complete();\n return dragEndData$;\n }))\n .subscribe(({ x, y, dragCancelled }) => {\n this.scroller.destroy();\n if (this.dragEnd.observers.length > 0) {\n this.zone.run(() => {\n this.dragEnd.next({ x, y, dragCancelled });\n });\n }\n removeClass(this.renderer, this.element, this.dragActiveClass);\n currentDrag$.complete();\n });\n merge(dragComplete$, dragEnded$)\n .pipe(take(1))\n .subscribe(() => {\n requestAnimationFrame(() => {\n this.document.head.removeChild(globalDragStyle);\n });\n });\n return pointerMove;\n }), share());\n merge(pointerDragged$.pipe(take(1), map((value) => [, value])), pointerDragged$.pipe(pairwise()))\n .pipe(filter(([previous, next]) => {\n if (!previous) {\n return true;\n }\n return previous.x !== next.x || previous.y !== next.y;\n }), map(([previous, next]) => next))\n .subscribe(({ x, y, currentDrag$, clientX, clientY, transformX, transformY, target, }) => {\n if (this.dragging.observers.length > 0) {\n this.zone.run(() => {\n this.dragging.next({ x, y });\n });\n }\n requestAnimationFrame(() => {\n if (this.ghostElement) {\n const transform = `translate3d(${transformX}px, ${transformY}px, 0px)`;\n this.setElementStyles(this.ghostElement, {\n transform,\n '-webkit-transform': transform,\n '-ms-transform': transform,\n '-moz-transform': transform,\n '-o-transform': transform,\n });\n }\n });\n currentDrag$.next({\n clientX,\n clientY,\n dropData: this.dropData,\n target,\n });\n });\n }\n ngOnChanges(changes) {\n if (changes.dragAxis) {\n this.checkEventListeners();\n }\n }\n ngOnDestroy() {\n this.unsubscribeEventListeners();\n this.pointerDown$.complete();\n this.pointerMove$.complete();\n this.pointerUp$.complete();\n this.destroy$.next();\n }\n checkEventListeners() {\n const canDrag = this.canDrag();\n const hasEventListeners = Object.keys(this.eventListenerSubscriptions).length > 0;\n if (canDrag && !hasEventListeners) {\n this.zone.runOutsideAngular(() => {\n this.eventListenerSubscriptions.mousedown = this.renderer.listen(this.element.nativeElement, 'mousedown', (event) => {\n this.onMouseDown(event);\n });\n this.eventListenerSubscriptions.mouseup = this.renderer.listen('document', 'mouseup', (event) => {\n this.onMouseUp(event);\n });\n this.eventListenerSubscriptions.touchstart = this.renderer.listen(this.element.nativeElement, 'touchstart', (event) => {\n this.onTouchStart(event);\n });\n this.eventListenerSubscriptions.touchend = this.renderer.listen('document', 'touchend', (event) => {\n this.onTouchEnd(event);\n });\n this.eventListenerSubscriptions.touchcancel = this.renderer.listen('document', 'touchcancel', (event) => {\n this.onTouchEnd(event);\n });\n this.eventListenerSubscriptions.mouseenter = this.renderer.listen(this.element.nativeElement, 'mouseenter', () => {\n this.onMouseEnter();\n });\n this.eventListenerSubscriptions.mouseleave = this.renderer.listen(this.element.nativeElement, 'mouseleave', () => {\n this.onMouseLeave();\n });\n });\n }\n else if (!canDrag && hasEventListeners) {\n this.unsubscribeEventListeners();\n }\n }\n onMouseDown(event) {\n if (event.button === 0) {\n if (!this.eventListenerSubscriptions.mousemove) {\n this.eventListenerSubscriptions.mousemove = this.renderer.listen('document', 'mousemove', (mouseMoveEvent) => {\n this.pointerMove$.next({\n event: mouseMoveEvent,\n clientX: mouseMoveEvent.clientX,\n clientY: mouseMoveEvent.clientY,\n });\n });\n }\n this.pointerDown$.next({\n event,\n clientX: event.clientX,\n clientY: event.clientY,\n });\n }\n }\n onMouseUp(event) {\n if (event.button === 0) {\n if (this.eventListenerSubscriptions.mousemove) {\n this.eventListenerSubscriptions.mousemove();\n delete this.eventListenerSubscriptions.mousemove;\n }\n this.pointerUp$.next({\n event,\n clientX: event.clientX,\n clientY: event.clientY,\n });\n }\n }\n onTouchStart(event) {\n let startScrollPosition;\n let isDragActivated;\n let hasContainerScrollbar;\n if (this.touchStartLongPress) {\n this.timeLongPress.timerBegin = Date.now();\n isDragActivated = false;\n hasContainerScrollbar = this.hasScrollbar();\n startScrollPosition = this.getScrollPosition();\n }\n if (!this.eventListenerSubscriptions.touchmove) {\n const contextMenuListener = fromEvent(this.document, 'contextmenu').subscribe((e) => {\n e.preventDefault();\n });\n const touchMoveListener = fromEvent(this.document, 'touchmove', {\n passive: false,\n }).subscribe((touchMoveEvent) => {\n if (this.touchStartLongPress &&\n !isDragActivated &&\n hasContainerScrollbar) {\n isDragActivated = this.shouldBeginDrag(event, touchMoveEvent, startScrollPosition);\n }\n if (!this.touchStartLongPress ||\n !hasContainerScrollbar ||\n isDragActivated) {\n touchMoveEvent.preventDefault();\n this.pointerMove$.next({\n event: touchMoveEvent,\n clientX: touchMoveEvent.targetTouches[0].clientX,\n clientY: touchMoveEvent.targetTouches[0].clientY,\n });\n }\n });\n this.eventListenerSubscriptions.touchmove = () => {\n contextMenuListener.unsubscribe();\n touchMoveListener.unsubscribe();\n };\n }\n this.pointerDown$.next({\n event,\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n });\n }\n onTouchEnd(event) {\n if (this.eventListenerSubscriptions.touchmove) {\n this.eventListenerSubscriptions.touchmove();\n delete this.eventListenerSubscriptions.touchmove;\n if (this.touchStartLongPress) {\n this.enableScroll();\n }\n }\n this.pointerUp$.next({\n event,\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n });\n }\n onMouseEnter() {\n this.setCursor(this.dragCursor);\n }\n onMouseLeave() {\n this.setCursor('');\n }\n canDrag() {\n return this.dragAxis.x || this.dragAxis.y;\n }\n setCursor(value) {\n if (!this.eventListenerSubscriptions.mousemove) {\n this.renderer.setStyle(this.element.nativeElement, 'cursor', value);\n }\n }\n unsubscribeEventListeners() {\n Object.keys(this.eventListenerSubscriptions).forEach((type) => {\n this.eventListenerSubscriptions[type]();\n delete this.eventListenerSubscriptions[type];\n });\n }\n setElementStyles(element, styles) {\n Object.keys(styles).forEach((key) => {\n this.renderer.setStyle(element, key, styles[key]);\n });\n }\n getScrollElement() {\n if (this.scrollContainer) {\n return this.scrollContainer.elementRef.nativeElement;\n }\n else {\n return this.document.body;\n }\n }\n getScrollPosition() {\n if (this.scrollContainer) {\n return {\n top: this.scrollContainer.elementRef.nativeElement.scrollTop,\n left: this.scrollContainer.elementRef.nativeElement.scrollLeft,\n };\n }\n else {\n return {\n top: window.pageYOffset || this.document.documentElement.scrollTop,\n left: window.pageXOffset || this.document.documentElement.scrollLeft,\n };\n }\n }\n shouldBeginDrag(event, touchMoveEvent, startScrollPosition) {\n const moveScrollPosition = this.getScrollPosition();\n const deltaScroll = {\n top: Math.abs(moveScrollPosition.top - startScrollPosition.top),\n left: Math.abs(moveScrollPosition.left - startScrollPosition.left),\n };\n const deltaX = Math.abs(touchMoveEvent.targetTouches[0].clientX - event.touches[0].clientX) - deltaScroll.left;\n const deltaY = Math.abs(touchMoveEvent.targetTouches[0].clientY - event.touches[0].clientY) - deltaScroll.top;\n const deltaTotal = deltaX + deltaY;\n const longPressConfig = this.touchStartLongPress;\n if (deltaTotal > longPressConfig.delta ||\n deltaScroll.top > 0 ||\n deltaScroll.left > 0) {\n this.timeLongPress.timerBegin = Date.now();\n }\n this.timeLongPress.timerEnd = Date.now();\n const duration = this.timeLongPress.timerEnd - this.timeLongPress.timerBegin;\n if (duration >= longPressConfig.delay) {\n this.disableScroll();\n return true;\n }\n return false;\n }\n enableScroll() {\n if (this.scrollContainer) {\n this.renderer.setStyle(this.scrollContainer.elementRef.nativeElement, 'overflow', '');\n }\n this.renderer.setStyle(this.document.body, 'overflow', '');\n }\n disableScroll() {\n /* istanbul ignore next */\n if (this.scrollContainer) {\n this.renderer.setStyle(this.scrollContainer.elementRef.nativeElement, 'overflow', 'hidden');\n }\n this.renderer.setStyle(this.document.body, 'overflow', 'hidden');\n }\n hasScrollbar() {\n const scrollContainer = this.getScrollElement();\n const containerHasHorizontalScroll = scrollContainer.scrollWidth > scrollContainer.clientWidth;\n const containerHasVerticalScroll = scrollContainer.scrollHeight > scrollContainer.clientHeight;\n return containerHasHorizontalScroll || containerHasVerticalScroll;\n }\n}\nDraggableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DraggableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DraggableHelper }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: DraggableScrollContainerDirective, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nDraggableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.0.3\", type: DraggableDirective, selector: \"[mwlDraggable]\", inputs: { dropData: \"dropData\", dragAxis: \"dragAxis\", dragSnapGrid: \"dragSnapGrid\", ghostDragEnabled: \"ghostDragEnabled\", showOriginalElementWhileDragging: \"showOriginalElementWhileDragging\", validateDrag: \"validateDrag\", dragCursor: \"dragCursor\", dragActiveClass: \"dragActiveClass\", ghostElementAppendTo: \"ghostElementAppendTo\", ghostElementTemplate: \"ghostElementTemplate\", touchStartLongPress: \"touchStartLongPress\", autoScroll: \"autoScroll\" }, outputs: { dragPointerDown: \"dragPointerDown\", dragStart: \"dragStart\", ghostElementCreated: \"ghostElementCreated\", dragging: \"dragging\", dragEnd: \"dragEnd\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DraggableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mwlDraggable]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DraggableHelper }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: DraggableScrollContainerDirective, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { dropData: [{\n type: Input\n }], dragAxis: [{\n type: Input\n }], dragSnapGrid: [{\n type: Input\n }], ghostDragEnabled: [{\n type: Input\n }], showOriginalElementWhileDragging: [{\n type: Input\n }], validateDrag: [{\n type: Input\n }], dragCursor: [{\n type: Input\n }], dragActiveClass: [{\n type: Input\n }], ghostElementAppendTo: [{\n type: Input\n }], ghostElementTemplate: [{\n type: Input\n }], touchStartLongPress: [{\n type: Input\n }], autoScroll: [{\n type: Input\n }], dragPointerDown: [{\n type: Output\n }], dragStart: [{\n type: Output\n }], ghostElementCreated: [{\n type: Output\n }], dragging: [{\n type: Output\n }], dragEnd: [{\n type: Output\n }] } });\n\nfunction isCoordinateWithinRectangle(clientX, clientY, rect) {\n return (clientX >= rect.left &&\n clientX <= rect.right &&\n clientY >= rect.top &&\n clientY <= rect.bottom);\n}\nclass DroppableDirective {\n constructor(element, draggableHelper, zone, renderer, scrollContainer) {\n this.element = element;\n this.draggableHelper = draggableHelper;\n this.zone = zone;\n this.renderer = renderer;\n this.scrollContainer = scrollContainer;\n /**\n * Called when a draggable element starts overlapping the element\n */\n this.dragEnter = new EventEmitter();\n /**\n * Called when a draggable element stops overlapping the element\n */\n this.dragLeave = new EventEmitter();\n /**\n * Called when a draggable element is moved over the element\n */\n this.dragOver = new EventEmitter();\n /**\n * Called when a draggable element is dropped on this element\n */\n this.drop = new EventEmitter(); // eslint-disable-line @angular-eslint/no-output-native\n }\n ngOnInit() {\n this.currentDragSubscription = this.draggableHelper.currentDrag.subscribe((drag$) => {\n addClass(this.renderer, this.element, this.dragActiveClass);\n const droppableElement = {\n updateCache: true,\n };\n const deregisterScrollListener = this.renderer.listen(this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : 'window', 'scroll', () => {\n droppableElement.updateCache = true;\n });\n let currentDragEvent;\n const overlaps$ = drag$.pipe(map(({ clientX, clientY, dropData, target }) => {\n currentDragEvent = { clientX, clientY, dropData, target };\n if (droppableElement.updateCache) {\n droppableElement.rect =\n this.element.nativeElement.getBoundingClientRect();\n if (this.scrollContainer) {\n droppableElement.scrollContainerRect =\n this.scrollContainer.elementRef.nativeElement.getBoundingClientRect();\n }\n droppableElement.updateCache = false;\n }\n const isWithinElement = isCoordinateWithinRectangle(clientX, clientY, droppableElement.rect);\n const isDropAllowed = !this.validateDrop ||\n this.validateDrop({ clientX, clientY, target, dropData });\n if (droppableElement.scrollContainerRect) {\n return (isWithinElement &&\n isDropAllowed &&\n isCoordinateWithinRectangle(clientX, clientY, droppableElement.scrollContainerRect));\n }\n else {\n return isWithinElement && isDropAllowed;\n }\n }));\n const overlapsChanged$ = overlaps$.pipe(distinctUntilChanged());\n let dragOverActive; // TODO - see if there's a way of doing this via rxjs\n overlapsChanged$\n .pipe(filter((overlapsNow) => overlapsNow))\n .subscribe(() => {\n dragOverActive = true;\n addClass(this.renderer, this.element, this.dragOverClass);\n if (this.dragEnter.observers.length > 0) {\n this.zone.run(() => {\n this.dragEnter.next(currentDragEvent);\n });\n }\n });\n overlaps$.pipe(filter((overlapsNow) => overlapsNow)).subscribe(() => {\n if (this.dragOver.observers.length > 0) {\n this.zone.run(() => {\n this.dragOver.next(currentDragEvent);\n });\n }\n });\n overlapsChanged$\n .pipe(pairwise(), filter(([didOverlap, overlapsNow]) => didOverlap && !overlapsNow))\n .subscribe(() => {\n dragOverActive = false;\n removeClass(this.renderer, this.element, this.dragOverClass);\n if (this.dragLeave.observers.length > 0) {\n this.zone.run(() => {\n this.dragLeave.next(currentDragEvent);\n });\n }\n });\n drag$.subscribe({\n complete: () => {\n deregisterScrollListener();\n removeClass(this.renderer, this.element, this.dragActiveClass);\n if (dragOverActive) {\n removeClass(this.renderer, this.element, this.dragOverClass);\n if (this.drop.observers.length > 0) {\n this.zone.run(() => {\n this.drop.next(currentDragEvent);\n });\n }\n }\n },\n });\n });\n }\n ngOnDestroy() {\n if (this.currentDragSubscription) {\n this.currentDragSubscription.unsubscribe();\n }\n }\n}\nDroppableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DroppableDirective, deps: [{ token: i0.ElementRef }, { token: DraggableHelper }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: DraggableScrollContainerDirective, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDroppableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.0.3\", type: DroppableDirective, selector: \"[mwlDroppable]\", inputs: { dragOverClass: \"dragOverClass\", dragActiveClass: \"dragActiveClass\", validateDrop: \"validateDrop\" }, outputs: { dragEnter: \"dragEnter\", dragLeave: \"dragLeave\", dragOver: \"dragOver\", drop: \"drop\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DroppableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mwlDroppable]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DraggableHelper }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: DraggableScrollContainerDirective, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { dragOverClass: [{\n type: Input\n }], dragActiveClass: [{\n type: Input\n }], validateDrop: [{\n type: Input\n }], dragEnter: [{\n type: Output\n }], dragLeave: [{\n type: Output\n }], dragOver: [{\n type: Output\n }], drop: [{\n type: Output\n }] } });\n\nclass DragAndDropModule {\n}\nDragAndDropModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DragAndDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDragAndDropModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.0.3\", ngImport: i0, type: DragAndDropModule, declarations: [DraggableDirective,\n DroppableDirective,\n DraggableScrollContainerDirective], exports: [DraggableDirective,\n DroppableDirective,\n DraggableScrollContainerDirective] });\nDragAndDropModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DragAndDropModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: DragAndDropModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n DraggableDirective,\n DroppableDirective,\n DraggableScrollContainerDirective,\n ],\n exports: [\n DraggableDirective,\n DroppableDirective,\n DraggableScrollContainerDirective,\n ],\n }]\n }] });\n\n/*\n * Public API Surface of angular-draggable-droppable\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DragAndDropModule, DraggableDirective, DraggableScrollContainerDirective, DroppableDirective };\n//# sourceMappingURL=angular-draggable-droppable.mjs.map\n","import * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, Directive, Inject, Input, Output, Optional, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Subject, merge, Observable, fromEvent } from 'rxjs';\nimport { tap, share, mergeMap, take, map, pairwise, filter, takeUntil } from 'rxjs/operators';\n\n/**\n * @hidden\n */\nconst IS_TOUCH_DEVICE = (() => {\n // In case we're in Node.js environment.\n if (typeof window === 'undefined') {\n return false;\n }\n else {\n return ('ontouchstart' in window ||\n navigator.maxTouchPoints > 0 ||\n navigator.msMaxTouchPoints >\n 0);\n }\n})();\n\n/** Creates a deep clone of an element. */\nfunction deepCloneNode(node) {\n const clone = node.cloneNode(true);\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n // Remove the `id` to avoid having multiple elements with the same id on the page.\n clone.removeAttribute('id');\n descendantsWithId.forEach((descendant) => {\n descendant.removeAttribute('id');\n });\n if (nodeName === 'canvas') {\n transferCanvasData(node, clone);\n }\n else if (nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'textarea') {\n transferInputData(node, clone);\n }\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n/** Matches elements between an element and its clone and allows for their data to be cloned. */\nfunction transferData(selector, node, clone, callback) {\n const descendantElements = node.querySelectorAll(selector);\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll(selector);\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[i], cloneElements[i]);\n }\n }\n}\n// Counter for unique cloned radio button names.\nlet cloneUniqueId = 0;\n/** Transfers the data of one input element to another. */\nfunction transferInputData(source, clone) {\n // Browsers throw an error when assigning the value of a file input programmatically.\n if (clone.type !== 'file') {\n clone.value = source.value;\n }\n // Radio button `name` attributes must be unique for radio button groups\n // otherwise original radio buttons can lose their checked state\n // once the clone is inserted in the DOM.\n if (clone.type === 'radio' && clone.name) {\n clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;\n }\n}\n/** Transfers the data of one canvas element to another. */\nfunction transferCanvasData(source, clone) {\n const context = clone.getContext('2d');\n if (context) {\n // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).\n // We can't do much about it so just ignore the error.\n try {\n context.drawImage(source, 0, 0);\n }\n catch { }\n }\n}\n\nfunction getNewBoundingRectangle(startingRect, edges, clientX, clientY) {\n const newBoundingRect = {\n top: startingRect.top,\n bottom: startingRect.bottom,\n left: startingRect.left,\n right: startingRect.right,\n };\n if (edges.top) {\n newBoundingRect.top += clientY;\n }\n if (edges.bottom) {\n newBoundingRect.bottom += clientY;\n }\n if (edges.left) {\n newBoundingRect.left += clientX;\n }\n if (edges.right) {\n newBoundingRect.right += clientX;\n }\n newBoundingRect.height = newBoundingRect.bottom - newBoundingRect.top;\n newBoundingRect.width = newBoundingRect.right - newBoundingRect.left;\n return newBoundingRect;\n}\nfunction getElementRect(element, ghostElementPositioning) {\n let translateX = 0;\n let translateY = 0;\n const style = element.nativeElement.style;\n const transformProperties = [\n 'transform',\n '-ms-transform',\n '-moz-transform',\n '-o-transform',\n ];\n const transform = transformProperties\n .map((property) => style[property])\n .find((value) => !!value);\n if (transform && transform.includes('translate')) {\n translateX = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$1');\n translateY = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$2');\n }\n if (ghostElementPositioning === 'absolute') {\n return {\n height: element.nativeElement.offsetHeight,\n width: element.nativeElement.offsetWidth,\n top: element.nativeElement.offsetTop - translateY,\n bottom: element.nativeElement.offsetHeight +\n element.nativeElement.offsetTop -\n translateY,\n left: element.nativeElement.offsetLeft - translateX,\n right: element.nativeElement.offsetWidth +\n element.nativeElement.offsetLeft -\n translateX,\n };\n }\n else {\n const boundingRect = element.nativeElement.getBoundingClientRect();\n return {\n height: boundingRect.height,\n width: boundingRect.width,\n top: boundingRect.top - translateY,\n bottom: boundingRect.bottom - translateY,\n left: boundingRect.left - translateX,\n right: boundingRect.right - translateX,\n scrollTop: element.nativeElement.scrollTop,\n scrollLeft: element.nativeElement.scrollLeft,\n };\n }\n}\nconst DEFAULT_RESIZE_CURSORS = Object.freeze({\n topLeft: 'nw-resize',\n topRight: 'ne-resize',\n bottomLeft: 'sw-resize',\n bottomRight: 'se-resize',\n leftOrRight: 'col-resize',\n topOrBottom: 'row-resize',\n});\nfunction getResizeCursor(edges, cursors) {\n if (edges.left && edges.top) {\n return cursors.topLeft;\n }\n else if (edges.right && edges.top) {\n return cursors.topRight;\n }\n else if (edges.left && edges.bottom) {\n return cursors.bottomLeft;\n }\n else if (edges.right && edges.bottom) {\n return cursors.bottomRight;\n }\n else if (edges.left || edges.right) {\n return cursors.leftOrRight;\n }\n else if (edges.top || edges.bottom) {\n return cursors.topOrBottom;\n }\n else {\n return '';\n }\n}\nfunction getEdgesDiff({ edges, initialRectangle, newRectangle, }) {\n const edgesDiff = {};\n Object.keys(edges).forEach((edge) => {\n edgesDiff[edge] = (newRectangle[edge] || 0) - (initialRectangle[edge] || 0);\n });\n return edgesDiff;\n}\nconst RESIZE_ACTIVE_CLASS = 'resize-active';\nconst RESIZE_GHOST_ELEMENT_CLASS = 'resize-ghost-element';\nconst MOUSE_MOVE_THROTTLE_MS = 50;\n/**\n * Place this on an element to make it resizable. For example:\n *\n * ```html\n * <div\n * mwlResizable\n * [resizeEdges]=\"{bottom: true, right: true, top: true, left: true}\"\n * [enableGhostResize]=\"true\">\n * </div>\n * ```\n * Or in case they are sibling elements:\n * ```html\n * <div mwlResizable #resizableElement=\"mwlResizable\"></div>\n * <div mwlResizeHandle [resizableContainer]=\"resizableElement\" [resizeEdges]=\"{bottom: true, right: true}\"></div>\n * ```\n */\nclass ResizableDirective {\n /**\n * @hidden\n */\n constructor(platformId, renderer, elm, zone) {\n this.platformId = platformId;\n this.renderer = renderer;\n this.elm = elm;\n this.zone = zone;\n /**\n * Set to `true` to enable a temporary resizing effect of the element in between the `resizeStart` and `resizeEnd` events.\n */\n this.enableGhostResize = false;\n /**\n * A snap grid that resize events will be locked to.\n *\n * e.g. to only allow the element to be resized every 10px set it to `{left: 10, right: 10}`\n */\n this.resizeSnapGrid = {};\n /**\n * The mouse cursors that will be set on the resize edges\n */\n this.resizeCursors = DEFAULT_RESIZE_CURSORS;\n /**\n * Define the positioning of the ghost element (can be fixed or absolute)\n */\n this.ghostElementPositioning = 'fixed';\n /**\n * Allow elements to be resized to negative dimensions\n */\n this.allowNegativeResizes = false;\n /**\n * The mouse move throttle in milliseconds, default: 50 ms\n */\n this.mouseMoveThrottleMS = MOUSE_MOVE_THROTTLE_MS;\n /**\n * Called when the mouse is pressed and a resize event is about to begin. `$event` is a `ResizeEvent` object.\n */\n this.resizeStart = new EventEmitter();\n /**\n * Called as the mouse is dragged after a resize event has begun. `$event` is a `ResizeEvent` object.\n */\n this.resizing = new EventEmitter();\n /**\n * Called after the mouse is released after a resize event. `$event` is a `ResizeEvent` object.\n */\n this.resizeEnd = new EventEmitter();\n /**\n * @hidden\n */\n this.mouseup = new Subject();\n /**\n * @hidden\n */\n this.mousedown = new Subject();\n /**\n * @hidden\n */\n this.mousemove = new Subject();\n this.destroy$ = new Subject();\n this.pointerEventListeners = PointerEventListeners.getInstance(renderer, zone);\n }\n /**\n * @hidden\n */\n ngOnInit() {\n const mousedown$ = merge(this.pointerEventListeners.pointerDown, this.mousedown);\n const mousemove$ = merge(this.pointerEventListeners.pointerMove, this.mousemove).pipe(tap(({ event }) => {\n if (currentResize && event.cancelable) {\n event.preventDefault();\n }\n }), share());\n const mouseup$ = merge(this.pointerEventListeners.pointerUp, this.mouseup);\n let currentResize;\n const removeGhostElement = () => {\n if (currentResize && currentResize.clonedNode) {\n this.elm.nativeElement.parentElement.removeChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'inherit');\n }\n };\n const getResizeCursors = () => {\n return {\n ...DEFAULT_RESIZE_CURSORS,\n ...this.resizeCursors,\n };\n };\n const mousedrag = mousedown$\n .pipe(mergeMap((startCoords) => {\n function getDiff(moveCoords) {\n return {\n clientX: moveCoords.clientX - startCoords.clientX,\n clientY: moveCoords.clientY - startCoords.clientY,\n };\n }\n const getSnapGrid = () => {\n const snapGrid = { x: 1, y: 1 };\n if (currentResize) {\n if (this.resizeSnapGrid.left && currentResize.edges.left) {\n snapGrid.x = +this.resizeSnapGrid.left;\n }\n else if (this.resizeSnapGrid.right &&\n currentResize.edges.right) {\n snapGrid.x = +this.resizeSnapGrid.right;\n }\n if (this.resizeSnapGrid.top && currentResize.edges.top) {\n snapGrid.y = +this.resizeSnapGrid.top;\n }\n else if (this.resizeSnapGrid.bottom &&\n currentResize.edges.bottom) {\n snapGrid.y = +this.resizeSnapGrid.bottom;\n }\n }\n return snapGrid;\n };\n function getGrid(coords, snapGrid) {\n return {\n x: Math.ceil(coords.clientX / snapGrid.x),\n y: Math.ceil(coords.clientY / snapGrid.y),\n };\n }\n return merge(mousemove$.pipe(take(1)).pipe(map((coords) => [, coords])), mousemove$.pipe(pairwise()))\n .pipe(map(([previousCoords, newCoords]) => {\n return [\n previousCoords ? getDiff(previousCoords) : previousCoords,\n getDiff(newCoords),\n ];\n }))\n .pipe(filter(([previousCoords, newCoords]) => {\n if (!previousCoords) {\n return true;\n }\n const snapGrid = getSnapGrid();\n const previousGrid = getGrid(previousCoords, snapGrid);\n const newGrid = getGrid(newCoords, snapGrid);\n return (previousGrid.x !== newGrid.x || previousGrid.y !== newGrid.y);\n }))\n .pipe(map(([, newCoords]) => {\n const snapGrid = getSnapGrid();\n return {\n clientX: Math.round(newCoords.clientX / snapGrid.x) * snapGrid.x,\n clientY: Math.round(newCoords.clientY / snapGrid.y) * snapGrid.y,\n };\n }))\n .pipe(takeUntil(merge(mouseup$, mousedown$)));\n }))\n .pipe(filter(() => !!currentResize));\n mousedrag\n .pipe(map(({ clientX, clientY }) => {\n return getNewBoundingRectangle(currentResize.startingRect, currentResize.edges, clientX, clientY);\n }))\n .pipe(filter((newBoundingRect) => {\n return (this.allowNegativeResizes ||\n !!(newBoundingRect.height &&\n newBoundingRect.width &&\n newBoundingRect.height > 0 &&\n newBoundingRect.width > 0));\n }))\n .pipe(filter((newBoundingRect) => {\n return this.validateResize\n ? this.validateResize({\n rectangle: newBoundingRect,\n edges: getEdgesDiff({\n edges: currentResize.edges,\n initialRectangle: currentResize.startingRect,\n newRectangle: newBoundingRect,\n }),\n })\n : true;\n }), takeUntil(this.destroy$))\n .subscribe((newBoundingRect) => {\n if (currentResize && currentResize.clonedNode) {\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${newBoundingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${newBoundingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${newBoundingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${newBoundingRect.left}px`);\n }\n if (this.resizing.observers.length > 0) {\n this.zone.run(() => {\n this.resizing.emit({\n edges: getEdgesDiff({\n edges: currentResize.edges,\n initialRectangle: currentResize.startingRect,\n newRectangle: newBoundingRect,\n }),\n rectangle: newBoundingRect,\n });\n });\n }\n currentResize.currentRect = newBoundingRect;\n });\n mousedown$\n .pipe(map(({ edges }) => {\n return edges || {};\n }), filter((edges) => {\n return Object.keys(edges).length > 0;\n }), takeUntil(this.destroy$))\n .subscribe((edges) => {\n if (currentResize) {\n removeGhostElement();\n }\n const startingRect = getElementRect(this.elm, this.ghostElementPositioning);\n currentResize = {\n edges,\n startingRect,\n currentRect: startingRect,\n };\n const resizeCursors = getResizeCursors();\n const cursor = getResizeCursor(currentResize.edges, resizeCursors);\n this.renderer.setStyle(document.body, 'cursor', cursor);\n this.setElementClass(this.elm, RESIZE_ACTIVE_CLASS, true);\n if (this.enableGhostResize) {\n currentResize.clonedNode = deepCloneNode(this.elm.nativeElement);\n this.elm.nativeElement.parentElement.appendChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'hidden');\n this.renderer.setStyle(currentResize.clonedNode, 'position', this.ghostElementPositioning);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${currentResize.startingRect.left}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${currentResize.startingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${currentResize.startingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${currentResize.startingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'cursor', getResizeCursor(currentResize.edges, resizeCursors));\n this.renderer.addClass(currentResize.clonedNode, RESIZE_GHOST_ELEMENT_CLASS);\n currentResize.clonedNode.scrollTop = currentResize.startingRect\n .scrollTop;\n currentResize.clonedNode.scrollLeft = currentResize.startingRect\n .scrollLeft;\n }\n if (this.resizeStart.observers.length > 0) {\n this.zone.run(() => {\n this.resizeStart.emit({\n edges: getEdgesDiff({\n edges,\n initialRectangle: startingRect,\n newRectangle: startingRect,\n }),\n rectangle: getNewBoundingRectangle(startingRect, {}, 0, 0),\n });\n });\n }\n });\n mouseup$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (currentResize) {\n this.renderer.removeClass(this.elm.nativeElement, RESIZE_ACTIVE_CLASS);\n this.renderer.setStyle(document.body, 'cursor', '');\n this.renderer.setStyle(this.elm.nativeElement, 'cursor', '');\n if (this.resizeEnd.observers.length > 0) {\n this.zone.run(() => {\n this.resizeEnd.emit({\n edges: getEdgesDiff({\n edges: currentResize.edges,\n initialRectangle: currentResize.startingRect,\n newRectangle: currentResize.currentRect,\n }),\n rectangle: currentResize.currentRect,\n });\n });\n }\n removeGhostElement();\n currentResize = null;\n }\n });\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n // browser check for angular universal, because it doesn't know what document is\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.setStyle(document.body, 'cursor', '');\n }\n this.mousedown.complete();\n this.mouseup.complete();\n this.mousemove.complete();\n this.destroy$.next();\n }\n setElementClass(elm, name, add) {\n if (add) {\n this.renderer.addClass(elm.nativeElement, name);\n }\n else {\n this.renderer.removeClass(elm.nativeElement, name);\n }\n }\n}\nResizableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ResizableDirective, deps: [{ token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nResizableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.0.3\", type: ResizableDirective, selector: \"[mwlResizable]\", inputs: { validateResize: \"validateResize\", enableGhostResize: \"enableGhostResize\", resizeSnapGrid: \"resizeSnapGrid\", resizeCursors: \"resizeCursors\", ghostElementPositioning: \"ghostElementPositioning\", allowNegativeResizes: \"allowNegativeResizes\", mouseMoveThrottleMS: \"mouseMoveThrottleMS\" }, outputs: { resizeStart: \"resizeStart\", resizing: \"resizing\", resizeEnd: \"resizeEnd\" }, exportAs: [\"mwlResizable\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ResizableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mwlResizable]',\n exportAs: 'mwlResizable',\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { validateResize: [{\n type: Input\n }], enableGhostResize: [{\n type: Input\n }], resizeSnapGrid: [{\n type: Input\n }], resizeCursors: [{\n type: Input\n }], ghostElementPositioning: [{\n type: Input\n }], allowNegativeResizes: [{\n type: Input\n }], mouseMoveThrottleMS: [{\n type: Input\n }], resizeStart: [{\n type: Output\n }], resizing: [{\n type: Output\n }], resizeEnd: [{\n type: Output\n }] } });\nclass PointerEventListeners {\n constructor(renderer, zone) {\n this.pointerDown = new Observable((observer) => {\n let unsubscribeMouseDown;\n let unsubscribeTouchStart;\n zone.runOutsideAngular(() => {\n unsubscribeMouseDown = renderer.listen('document', 'mousedown', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event,\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchStart = renderer.listen('document', 'touchstart', (event) => {\n observer.next({\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n event,\n });\n });\n }\n });\n return () => {\n unsubscribeMouseDown();\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchStart();\n }\n };\n }).pipe(share());\n this.pointerMove = new Observable((observer) => {\n let unsubscribeMouseMove;\n let unsubscribeTouchMove;\n zone.runOutsideAngular(() => {\n unsubscribeMouseMove = renderer.listen('document', 'mousemove', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event,\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchMove = renderer.listen('document', 'touchmove', (event) => {\n observer.next({\n clientX: event.targetTouches[0].clientX,\n clientY: event.targetTouches[0].clientY,\n event,\n });\n });\n }\n });\n return () => {\n unsubscribeMouseMove();\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchMove();\n }\n };\n }).pipe(share());\n this.pointerUp = new Observable((observer) => {\n let unsubscribeMouseUp;\n let unsubscribeTouchEnd;\n let unsubscribeTouchCancel;\n zone.runOutsideAngular(() => {\n unsubscribeMouseUp = renderer.listen('document', 'mouseup', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event,\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchEnd = renderer.listen('document', 'touchend', (event) => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event,\n });\n });\n unsubscribeTouchCancel = renderer.listen('document', 'touchcancel', (event) => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event,\n });\n });\n }\n });\n return () => {\n unsubscribeMouseUp();\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchEnd();\n unsubscribeTouchCancel();\n }\n };\n }).pipe(share());\n }\n static getInstance(renderer, zone) {\n if (!PointerEventListeners.instance) {\n PointerEventListeners.instance = new PointerEventListeners(renderer, zone);\n }\n return PointerEventListeners.instance;\n }\n}\n\n/**\n * An element placed inside a `mwlResizable` directive to be used as a drag and resize handle\n *\n * For example\n *\n * ```html\n * <div mwlResizable>\n * <div mwlResizeHandle [resizeEdges]=\"{bottom: true, right: true}\"></div>\n * </div>\n * ```\n * Or in case they are sibling elements:\n * ```html\n * <div mwlResizable #resizableElement=\"mwlResizable\"></div>\n * <div mwlResizeHandle [resizableContainer]=\"resizableElement\" [resizeEdges]=\"{bottom: true, right: true}\"></div>\n * ```\n */\nclass ResizeHandleDirective {\n constructor(renderer, element, zone, resizableDirective) {\n this.renderer = renderer;\n this.element = element;\n this.zone = zone;\n this.resizableDirective = resizableDirective;\n /**\n * The `Edges` object that contains the edges of the parent element that dragging the handle will trigger a resize on\n */\n this.resizeEdges = {};\n this.eventListeners = {};\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n this.zone.runOutsideAngular(() => {\n this.listenOnTheHost('mousedown').subscribe((event) => {\n this.onMousedown(event, event.clientX, event.clientY);\n });\n this.listenOnTheHost('mouseup').subscribe((event) => {\n this.onMouseup(event.clientX, event.clientY);\n });\n if (IS_TOUCH_DEVICE) {\n this.listenOnTheHost('touchstart').subscribe((event) => {\n this.onMousedown(event, event.touches[0].clientX, event.touches[0].clientY);\n });\n merge(this.listenOnTheHost('touchend'), this.listenOnTheHost('touchcancel')).subscribe((event) => {\n this.onMouseup(event.changedTouches[0].clientX, event.changedTouches[0].clientY);\n });\n }\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.unsubscribeEventListeners();\n }\n /**\n * @hidden\n */\n onMousedown(event, clientX, clientY) {\n if (event.cancelable) {\n event.preventDefault();\n }\n if (!this.eventListeners.touchmove) {\n this.eventListeners.touchmove = this.renderer.listen(this.element.nativeElement, 'touchmove', (touchMoveEvent) => {\n this.onMousemove(touchMoveEvent, touchMoveEvent.targetTouches[0].clientX, touchMoveEvent.targetTouches[0].clientY);\n });\n }\n if (!this.eventListeners.mousemove) {\n this.eventListeners.mousemove = this.renderer.listen(this.element.nativeElement, 'mousemove', (mouseMoveEvent) => {\n this.onMousemove(mouseMoveEvent, mouseMoveEvent.clientX, mouseMoveEvent.clientY);\n });\n }\n this.resizable.mousedown.next({\n clientX,\n clientY,\n edges: this.resizeEdges,\n });\n }\n /**\n * @hidden\n */\n onMouseup(clientX, clientY) {\n this.unsubscribeEventListeners();\n this.resizable.mouseup.next({\n clientX,\n clientY,\n edges: this.resizeEdges,\n });\n }\n // directive might be passed from DI or as an input\n get resizable() {\n return this.resizableDirective || this.resizableContainer;\n }\n onMousemove(event, clientX, clientY) {\n this.resizable.mousemove.next({\n clientX,\n clientY,\n edges: this.resizeEdges,\n event,\n });\n }\n unsubscribeEventListeners() {\n Object.keys(this.eventListeners).forEach((type) => {\n this.eventListeners[type]();\n delete this.eventListeners[type];\n });\n }\n listenOnTheHost(eventName) {\n return fromEvent(this.element.nativeElement, eventName).pipe(takeUntil(this.destroy$));\n }\n}\nResizeHandleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ResizeHandleDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: ResizableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nResizeHandleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.0.3\", type: ResizeHandleDirective, selector: \"[mwlResizeHandle]\", inputs: { resizeEdges: \"resizeEdges\", resizableContainer: \"resizableContainer\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ResizeHandleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mwlResizeHandle]',\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: ResizableDirective, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { resizeEdges: [{\n type: Input\n }], resizableContainer: [{\n type: Input\n }] } });\n\nclass ResizableModule {\n}\nResizableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ResizableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nResizableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.0.3\", ngImport: i0, type: ResizableModule, declarations: [ResizableDirective, ResizeHandleDirective], exports: [ResizableDirective, ResizeHandleDirective] });\nResizableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ResizableModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ResizableModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ResizableDirective, ResizeHandleDirective],\n exports: [ResizableDirective, ResizeHandleDirective],\n }]\n }] });\n\n/*\n * Public API Surface of angular-resizable-element\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ResizableDirective, ResizableModule, ResizeHandleDirective };\n//# sourceMappingURL=angular-resizable-element.mjs.map\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Inject, Input, Output, Injectable, LOCALE_ID, Pipe, Component, HostListener, InjectionToken, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, formatDate, CommonModule, I18nPluralPipe } from '@angular/common';\nimport { Subject, Observable, of, timer, BehaviorSubject, interval } from 'rxjs';\nimport { takeUntil, switchMap, startWith, switchMapTo, map } from 'rxjs/operators';\nimport { positionElements } from 'positioning';\nimport { validateEvents as validateEvents$1, getMonthView, getWeekViewHeader, getWeekView } from 'calendar-utils';\nexport { DAYS_OF_WEEK } from 'calendar-utils';\nimport * as i2 from 'angular-draggable-droppable';\nimport { DragAndDropModule } from 'angular-draggable-droppable';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i4 from 'angular-resizable-element';\nimport { ResizableModule } from 'angular-resizable-element';\n\nclass ClickDirective {\n constructor(renderer, elm, document) {\n this.renderer = renderer;\n this.elm = elm;\n this.document = document;\n this.clickListenerDisabled = false;\n this.click = new EventEmitter(); // eslint-disable-line\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n if (!this.clickListenerDisabled) {\n this.listen()\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => {\n event.stopPropagation();\n this.click.emit(event);\n });\n }\n }\n ngOnDestroy() {\n this.destroy$.next();\n }\n listen() {\n return new Observable((observer) => {\n return this.renderer.listen(this.elm.nativeElement, 'click', (event) => {\n observer.next(event);\n });\n });\n }\n}\nClickDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ClickDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nClickDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.0.3\", type: ClickDirective, selector: \"[mwlClick]\", inputs: { clickListenerDisabled: \"clickListenerDisabled\" }, outputs: { click: \"mwlClick\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ClickDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mwlClick]',\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { clickListenerDisabled: [{\n type: Input\n }], click: [{\n type: Output,\n args: ['mwlClick']\n }] } });\n\nclass KeydownEnterDirective {\n constructor(host, ngZone, renderer) {\n this.host = host;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.keydown = new EventEmitter(); // eslint-disable-line\n this.keydownListener = null;\n }\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n this.keydownListener = this.renderer.listen(this.host.nativeElement, 'keydown', (event) => {\n if (event.keyCode === 13 ||\n event.which === 13 ||\n event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.ngZone.run(() => {\n this.keydown.emit(event);\n });\n }\n });\n });\n }\n ngOnDestroy() {\n if (this.keydownListener !== null) {\n this.keydownListener();\n this.keydownListener = null;\n }\n }\n}\nKeydownEnterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: KeydownEnterDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nKeydownEnterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.0.3\", type: KeydownEnterDirective, selector: \"[mwlKeydownEnter]\", outputs: { keydown: \"mwlKeydownEnter\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: KeydownEnterDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mwlKeydownEnter]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { keydown: [{\n type: Output,\n args: ['mwlKeydownEnter']\n }] } });\n\n/**\n * This class is responsible for adding accessibility to the calendar.\n * You may override any of its methods via angulars DI to suit your requirements.\n * For example:\n *\n * ```typescript\n * import { A11yParams, CalendarA11y } from 'angular-calendar';\n * import { formatDate, I18nPluralPipe } from '@angular/common';\n * import { Injectable } from '@angular/core';\n *\n * // adding your own a11y params\n * export interface CustomA11yParams extends A11yParams {\n * isDrSuess?: boolean;\n * }\n *\n * @Injectable()\n * export class CustomCalendarA11y extends CalendarA11y {\n * constructor(protected i18nPlural: I18nPluralPipe) {\n * super(i18nPlural);\n * }\n *\n * // overriding a function\n * public openDayEventsLandmark({ date, locale, isDrSuess }: CustomA11yParams): string {\n * if (isDrSuess) {\n * return `\n * ${formatDate(date, 'EEEE MMMM d', locale)}\n * Today you are you! That is truer than true! There is no one alive\n * who is you-er than you!\n * `;\n * }\n * }\n * }\n *\n * // in your component that uses the calendar\n * providers: [{\n * provide: CalendarA11y,\n * useClass: CustomCalendarA11y\n * }]\n * ```\n */\nclass CalendarA11y {\n constructor(i18nPlural) {\n this.i18nPlural = i18nPlural;\n }\n /**\n * Aria label for the badges/date of a cell\n * @example: `Saturday October 19 1 event click to expand`\n */\n monthCell({ day, locale }) {\n if (day.badgeTotal > 0) {\n return `\n ${formatDate(day.date, 'EEEE MMMM d', locale)},\n ${this.i18nPlural.transform(day.badgeTotal, {\n '=0': 'No events',\n '=1': 'One event',\n other: '# events',\n })},\n click to expand\n `;\n }\n else {\n return `${formatDate(day.date, 'EEEE MMMM d', locale)}`;\n }\n }\n /**\n * Aria label for the open day events start landmark\n * @example: `Saturday October 19 expanded view`\n */\n openDayEventsLandmark({ date, locale }) {\n return `\n Beginning of expanded view for ${formatDate(date, 'EEEE MMMM dd', locale)}\n `;\n }\n /**\n * Aria label for alert that a day in the month view was expanded\n * @example: `Saturday October 19 expanded`\n */\n openDayEventsAlert({ date, locale }) {\n return `${formatDate(date, 'EEEE MMMM dd', locale)} expanded`;\n }\n /**\n * Descriptive aria label for an event\n * @example: `Saturday October 19th, Scott's Pizza Party, from 11:00am to 5:00pm`\n */\n eventDescription({ event, locale }) {\n if (event.allDay === true) {\n return this.allDayEventDescription({ event, locale });\n }\n const aria = `\n ${formatDate(event.start, 'EEEE MMMM dd', locale)},\n ${event.title}, from ${formatDate(event.start, 'hh:mm a', locale)}\n `;\n if (event.end) {\n return aria + ` to ${formatDate(event.end, 'hh:mm a', locale)}`;\n }\n return aria;\n }\n /**\n * Descriptive aria label for an all day event\n * @example:\n * `Scott's Party, event spans multiple days: start time October 19 5:00pm, no stop time`\n */\n allDayEventDescription({ event, locale }) {\n const aria = `\n ${event.title}, event spans multiple days:\n start time ${formatDate(event.start, 'MMMM dd hh:mm a', locale)}\n `;\n if (event.end) {\n return (aria + `, stop time ${formatDate(event.end, 'MMMM d hh:mm a', locale)}`);\n }\n return aria + `, no stop time`;\n }\n /**\n * Aria label for the calendar event actions icons\n * @returns 'Edit' for fa-pencil icons, and 'Delete' for fa-times icons\n */\n actionButtonLabel({ action }) {\n return action.a11yLabel;\n }\n /**\n * @returns {number} Tab index to be given to month cells\n */\n monthCellTabIndex() {\n return 0;\n }\n /**\n * @returns true if the events inside the month cell should be aria-hidden\n */\n hideMonthCellEvents() {\n return true;\n }\n /**\n * @returns true if event titles should be aria-hidden (global)\n */\n hideEventTitle() {\n return true;\n }\n /**\n * @returns true if hour segments in the week view should be aria-hidden\n */\n hideWeekHourSegment() {\n return true;\n }\n /**\n * @returns true if hour segments in the day view should be aria-hidden\n */\n hideDayHourSegment() {\n return true;\n }\n}\nCalendarA11y.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarA11y, deps: [{ token: i1.I18nPluralPipe }], target: i0.ɵɵFactoryTarget.Injectable });\nCalendarA11y.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarA11y });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarA11y, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.I18nPluralPipe }]; } });\n\n/**\n * This pipe is primarily for rendering aria labels. Example usage:\n * ```typescript\n * // where `myEvent` is a `CalendarEvent` and myLocale is a locale identifier\n * {{ { event: myEvent, locale: myLocale } | calendarA11y: 'eventDescription' }}\n * ```\n */\nclass CalendarA11yPipe {\n constructor(calendarA11y, locale) {\n this.calendarA11y = calendarA11y;\n this.locale = locale;\n }\n transform(a11yParams, method) {\n a11yParams.locale = a11yParams.locale || this.locale;\n if (typeof this.calendarA11y[method] === 'undefined') {\n const allowedMethods = Object.getOwnPropertyNames(Object.getPrototypeOf(CalendarA11y.prototype)).filter((iMethod) => iMethod !== 'constructor');\n throw new Error(`${method} is not a valid a11y method. Can only be one of ${allowedMethods.join(', ')}`);\n }\n return this.calendarA11y[method](a11yParams);\n }\n}\nCalendarA11yPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarA11yPipe, deps: [{ token: CalendarA11y }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nCalendarA11yPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarA11yPipe, name: \"calendarA11y\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarA11yPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'calendarA11y',\n }]\n }], ctorParameters: function () { return [{ type: CalendarA11y }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\nclass CalendarEventActionsComponent {\n constructor() {\n this.trackByActionId = (index, action) => action.id ? action.id : action;\n }\n}\nCalendarEventActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarEventActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCalendarEventActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarEventActionsComponent, selector: \"mwl-calendar-event-actions\", inputs: { event: \"event\", customTemplate: \"customTemplate\" }, ngImport: i0, template: `\n <ng-template\n #defaultTemplate\n let-event=\"event\"\n let-trackByActionId=\"trackByActionId\"\n >\n <span *ngIf=\"event.actions\" class=\"cal-event-actions\">\n <a\n class=\"cal-event-action\"\n href=\"javascript:;\"\n *ngFor=\"let action of event.actions; trackBy: trackByActionId\"\n (mwlClick)=\"action.onClick({ event: event, sourceEvent: $event })\"\n (mwlKeydownEnter)=\"\n action.onClick({ event: event, sourceEvent: $event })\n \"\n [ngClass]=\"action.cssClass\"\n [innerHtml]=\"action.label\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"\n { action: action } | calendarA11y : 'actionButtonLabel'\n \"\n >\n </a>\n </span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n event: event,\n trackByActionId: trackByActionId\n }\"\n >\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: ClickDirective, selector: \"[mwlClick]\", inputs: [\"clickListenerDisabled\"], outputs: [\"mwlClick\"] }, { kind: \"directive\", type: KeydownEnterDirective, selector: \"[mwlKeydownEnter]\", outputs: [\"mwlKeydownEnter\"] }, { kind: \"pipe\", type: CalendarA11yPipe, name: \"calendarA11y\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarEventActionsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-event-actions',\n template: `\n <ng-template\n #defaultTemplate\n let-event=\"event\"\n let-trackByActionId=\"trackByActionId\"\n >\n <span *ngIf=\"event.actions\" class=\"cal-event-actions\">\n <a\n class=\"cal-event-action\"\n href=\"javascript:;\"\n *ngFor=\"let action of event.actions; trackBy: trackByActionId\"\n (mwlClick)=\"action.onClick({ event: event, sourceEvent: $event })\"\n (mwlKeydownEnter)=\"\n action.onClick({ event: event, sourceEvent: $event })\n \"\n [ngClass]=\"action.cssClass\"\n [innerHtml]=\"action.label\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"\n { action: action } | calendarA11y : 'actionButtonLabel'\n \"\n >\n </a>\n </span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n event: event,\n trackByActionId: trackByActionId\n }\"\n >\n </ng-template>\n `,\n }]\n }], propDecorators: { event: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] } });\n\n/**\n * This class is responsible for displaying all event titles within the calendar. You may override any of its methods via angulars DI to suit your requirements. For example:\n *\n * ```typescript\n * import { Injectable } from '@angular/core';\n * import { CalendarEventTitleFormatter, CalendarEvent } from 'angular-calendar';\n *\n * @Injectable()\n * class CustomEventTitleFormatter extends CalendarEventTitleFormatter {\n *\n * month(event: CalendarEvent): string {\n * return `Custom prefix: ${event.title}`;\n * }\n *\n * }\n *\n * // in your component\n * providers: [{\n * provide: CalendarEventTitleFormatter,\n * useClass: CustomEventTitleFormatter\n * }]\n * ```\n */\nclass CalendarEventTitleFormatter {\n /**\n * The month view event title.\n */\n month(event, title) {\n return event.title;\n }\n /**\n * The month view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n monthTooltip(event, title) {\n return event.title;\n }\n /**\n * The week view event title.\n */\n week(event, title) {\n return event.title;\n }\n /**\n * The week view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n weekTooltip(event, title) {\n return event.title;\n }\n /**\n * The day view event title.\n */\n day(event, title) {\n return event.title;\n }\n /**\n * The day view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n dayTooltip(event, title) {\n return event.title;\n }\n}\n\nclass CalendarEventTitlePipe {\n constructor(calendarEventTitle) {\n this.calendarEventTitle = calendarEventTitle;\n }\n transform(title, titleType, event) {\n return this.calendarEventTitle[titleType](event, title);\n }\n}\nCalendarEventTitlePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarEventTitlePipe, deps: [{ token: CalendarEventTitleFormatter }], target: i0.ɵɵFactoryTarget.Pipe });\nCalendarEventTitlePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarEventTitlePipe, name: \"calendarEventTitle\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarEventTitlePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'calendarEventTitle',\n }]\n }], ctorParameters: function () { return [{ type: CalendarEventTitleFormatter }]; } });\n\nclass CalendarEventTitleComponent {\n}\nCalendarEventTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarEventTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCalendarEventTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarEventTitleComponent, selector: \"mwl-calendar-event-title\", inputs: { event: \"event\", customTemplate: \"customTemplate\", view: \"view\" }, ngImport: i0, template: `\n <ng-template #defaultTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [innerHTML]=\"event.title | calendarEventTitle : view : event\"\n [attr.aria-hidden]=\"{} | calendarA11y : 'hideEventTitle'\"\n >\n </span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n event: event,\n view: view\n }\"\n >\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: CalendarEventTitlePipe, name: \"calendarEventTitle\" }, { kind: \"pipe\", type: CalendarA11yPipe, name: \"calendarA11y\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarEventTitleComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-event-title',\n template: `\n <ng-template #defaultTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [innerHTML]=\"event.title | calendarEventTitle : view : event\"\n [attr.aria-hidden]=\"{} | calendarA11y : 'hideEventTitle'\"\n >\n </span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n event: event,\n view: view\n }\"\n >\n </ng-template>\n `,\n }]\n }], propDecorators: { event: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], view: [{\n type: Input\n }] } });\n\nclass CalendarTooltipWindowComponent {\n}\nCalendarTooltipWindowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarTooltipWindowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCalendarTooltipWindowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarTooltipWindowComponent, selector: \"mwl-calendar-tooltip-window\", inputs: { contents: \"contents\", placement: \"placement\", event: \"event\", customTemplate: \"customTemplate\" }, ngImport: i0, template: `\n <ng-template\n #defaultTemplate\n let-contents=\"contents\"\n let-placement=\"placement\"\n let-event=\"event\"\n >\n <div class=\"cal-tooltip\" [ngClass]=\"'cal-tooltip-' + placement\">\n <div class=\"cal-tooltip-arrow\"></div>\n <div class=\"cal-tooltip-inner\" [innerHtml]=\"contents\"></div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n contents: contents,\n placement: placement,\n event: event\n }\"\n >\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarTooltipWindowComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-tooltip-window',\n template: `\n <ng-template\n #defaultTemplate\n let-contents=\"contents\"\n let-placement=\"placement\"\n let-event=\"event\"\n >\n <div class=\"cal-tooltip\" [ngClass]=\"'cal-tooltip-' + placement\">\n <div class=\"cal-tooltip-arrow\"></div>\n <div class=\"cal-tooltip-inner\" [innerHtml]=\"contents\"></div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n contents: contents,\n placement: placement,\n event: event\n }\"\n >\n </ng-template>\n `,\n }]\n }], propDecorators: { contents: [{\n type: Input\n }], placement: [{\n type: Input\n }], event: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] } });\nclass CalendarTooltipDirective {\n constructor(elementRef, injector, renderer, componentFactoryResolver, viewContainerRef, document // eslint-disable-line\n ) {\n this.elementRef = elementRef;\n this.injector = injector;\n this.renderer = renderer;\n this.viewContainerRef = viewContainerRef;\n this.document = document;\n this.placement = 'auto'; // eslint-disable-line @angular-eslint/no-input-rename\n this.delay = null; // eslint-disable-line @angular-eslint/no-input-rename\n this.cancelTooltipDelay$ = new Subject();\n this.tooltipFactory = componentFactoryResolver.resolveComponentFactory(CalendarTooltipWindowComponent);\n }\n ngOnChanges(changes) {\n if (this.tooltipRef &&\n (changes.contents || changes.customTemplate || changes.event)) {\n this.tooltipRef.instance.contents = this.contents;\n this.tooltipRef.instance.customTemplate = this.customTemplate;\n this.tooltipRef.instance.event = this.event;\n this.tooltipRef.changeDetectorRef.markForCheck();\n if (!this.contents) {\n this.hide();\n }\n }\n }\n ngOnDestroy() {\n this.hide();\n }\n onMouseOver() {\n const delay$ = this.delay === null ? of('now') : timer(this.delay);\n delay$.pipe(takeUntil(this.cancelTooltipDelay$)).subscribe(() => {\n this.show();\n });\n }\n onMouseOut() {\n this.hide();\n }\n show() {\n if (!this.tooltipRef && this.contents) {\n this.tooltipRef = this.viewContainerRef.createComponent(this.tooltipFactory, 0, this.injector, []);\n this.tooltipRef.instance.contents = this.contents;\n this.tooltipRef.instance.customTemplate = this.customTemplate;\n this.tooltipRef.instance.event = this.event;\n if (this.appendToBody) {\n this.document.body.appendChild(this.tooltipRef.location.nativeElement);\n }\n requestAnimationFrame(() => {\n this.positionTooltip();\n });\n }\n }\n hide() {\n if (this.tooltipRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.tooltipRef.hostView));\n this.tooltipRef = null;\n }\n this.cancelTooltipDelay$.next();\n }\n positionTooltip(previousPositions = []) {\n if (this.tooltipRef) {\n this.tooltipRef.changeDetectorRef.detectChanges();\n this.tooltipRef.instance.placement = positionElements(this.elementRef.nativeElement, this.tooltipRef.location.nativeElement.children[0], this.placement, this.appendToBody);\n // keep re-positioning the tooltip until the arrow position doesn't make a difference\n if (previousPositions.indexOf(this.tooltipRef.instance.placement) === -1) {\n this.positionTooltip([\n ...previousPositions,\n this.tooltipRef.instance.placement,\n ]);\n }\n }\n }\n}\nCalendarTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCalendarTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarTooltipDirective, selector: \"[mwlCalendarTooltip]\", inputs: { contents: [\"mwlCalendarTooltip\", \"contents\"], placement: [\"tooltipPlacement\", \"placement\"], customTemplate: [\"tooltipTemplate\", \"customTemplate\"], event: [\"tooltipEvent\", \"event\"], appendToBody: [\"tooltipAppendToBody\", \"appendToBody\"], delay: [\"tooltipDelay\", \"delay\"] }, host: { listeners: { \"mouseenter\": \"onMouseOver()\", \"mouseleave\": \"onMouseOut()\" } }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarTooltipDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarTooltip]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { contents: [{\n type: Input,\n args: ['mwlCalendarTooltip']\n }], placement: [{\n type: Input,\n args: ['tooltipPlacement']\n }], customTemplate: [{\n type: Input,\n args: ['tooltipTemplate']\n }], event: [{\n type: Input,\n args: ['tooltipEvent']\n }], appendToBody: [{\n type: Input,\n args: ['tooltipAppendToBody']\n }], delay: [{\n type: Input,\n args: ['tooltipDelay']\n }], onMouseOver: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseOut: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nvar CalendarView;\n(function (CalendarView) {\n CalendarView[\"Month\"] = \"month\";\n CalendarView[\"Week\"] = \"week\";\n CalendarView[\"Day\"] = \"day\";\n})(CalendarView || (CalendarView = {}));\n\nconst validateEvents = (events) => {\n const warn = (...args) => console.warn('angular-calendar', ...args);\n return validateEvents$1(events, warn);\n};\nfunction isInsideLeftAndRight(outer, inner) {\n return (Math.floor(outer.left) <= Math.ceil(inner.left) &&\n Math.floor(inner.left) <= Math.ceil(outer.right) &&\n Math.floor(outer.left) <= Math.ceil(inner.right) &&\n Math.floor(inner.right) <= Math.ceil(outer.right));\n}\nfunction isInsideTopAndBottom(outer, inner) {\n return (Math.floor(outer.top) <= Math.ceil(inner.top) &&\n Math.floor(inner.top) <= Math.ceil(outer.bottom) &&\n Math.floor(outer.top) <= Math.ceil(inner.bottom) &&\n Math.floor(inner.bottom) <= Math.ceil(outer.bottom));\n}\nfunction isInside(outer, inner) {\n return (isInsideLeftAndRight(outer, inner) && isInsideTopAndBottom(outer, inner));\n}\nfunction roundToNearest(amount, precision) {\n return Math.round(amount / precision) * precision;\n}\nconst trackByEventId = (index, event) => event.id ? event.id : event;\nconst trackByWeekDayHeaderDate = (index, day) => day.date.toISOString();\nconst trackByHourSegment = (index, segment) => segment.date.toISOString();\nconst trackByHour = (index, hour) => hour.segments[0].date.toISOString();\nconst trackByWeekAllDayEvent = (index, weekEvent) => (weekEvent.event.id ? weekEvent.event.id : weekEvent.event);\nconst trackByWeekTimeEvent = (index, weekEvent) => (weekEvent.event.id ? weekEvent.event.id : weekEvent.event);\nconst MINUTES_IN_HOUR = 60;\nfunction getPixelAmountInMinutes(hourSegments, hourSegmentHeight, hourDuration) {\n return (hourDuration || MINUTES_IN_HOUR) / (hourSegments * hourSegmentHeight);\n}\nfunction getMinutesMoved(movedY, hourSegments, hourSegmentHeight, eventSnapSize, hourDuration) {\n const draggedInPixelsSnapSize = roundToNearest(movedY, eventSnapSize || hourSegmentHeight);\n const pixelAmountInMinutes = getPixelAmountInMinutes(hourSegments, hourSegmentHeight, hourDuration);\n return draggedInPixelsSnapSize * pixelAmountInMinutes;\n}\nfunction getDefaultEventEnd(dateAdapter, event, minimumMinutes) {\n if (event.end) {\n return event.end;\n }\n else {\n return dateAdapter.addMinutes(event.start, minimumMinutes);\n }\n}\nfunction addDaysWithExclusions(dateAdapter, date, days, excluded) {\n let daysCounter = 0;\n let daysToAdd = 0;\n const changeDays = days < 0 ? dateAdapter.subDays : dateAdapter.addDays;\n let result = date;\n while (daysToAdd <= Math.abs(days)) {\n result = changeDays(date, daysCounter);\n const day = dateAdapter.getDay(result);\n if (excluded.indexOf(day) === -1) {\n daysToAdd++;\n }\n daysCounter++;\n }\n return result;\n}\nfunction isDraggedWithinPeriod(newStart, newEnd, period) {\n const end = newEnd || newStart;\n return ((period.start <= newStart && newStart <= period.end) ||\n (period.start <= end && end <= period.end));\n}\nfunction shouldFireDroppedEvent(dropEvent, date, allDay, calendarId) {\n return (dropEvent.dropData &&\n dropEvent.dropData.event &&\n (dropEvent.dropData.calendarId !== calendarId ||\n (dropEvent.dropData.event.allDay && !allDay) ||\n (!dropEvent.dropData.event.allDay && allDay)));\n}\nfunction getWeekViewPeriod(dateAdapter, viewDate, weekStartsOn, excluded = [], daysInWeek) {\n let viewStart = daysInWeek\n ? dateAdapter.startOfDay(viewDate)\n : dateAdapter.startOfWeek(viewDate, { weekStartsOn });\n const endOfWeek = dateAdapter.endOfWeek(viewDate, { weekStartsOn });\n while (excluded.indexOf(dateAdapter.getDay(viewStart)) > -1 &&\n viewStart < endOfWeek) {\n viewStart = dateAdapter.addDays(viewStart, 1);\n }\n if (daysInWeek) {\n const viewEnd = dateAdapter.endOfDay(addDaysWithExclusions(dateAdapter, viewStart, daysInWeek - 1, excluded));\n return { viewStart, viewEnd };\n }\n else {\n let viewEnd = endOfWeek;\n while (excluded.indexOf(dateAdapter.getDay(viewEnd)) > -1 &&\n viewEnd > viewStart) {\n viewEnd = dateAdapter.subDays(viewEnd, 1);\n }\n return { viewStart, viewEnd };\n }\n}\nfunction isWithinThreshold({ x, y }) {\n const DRAG_THRESHOLD = 1;\n return Math.abs(x) > DRAG_THRESHOLD || Math.abs(y) > DRAG_THRESHOLD;\n}\n\nclass DateAdapter {\n}\n\n/**\n * Change the view date to the previous view. For example:\n *\n * ```typescript\n * <button\n * mwlCalendarPreviousView\n * [(viewDate)]=\"viewDate\"\n * [view]=\"view\">\n * Previous\n * </button>\n * ```\n */\nclass CalendarPreviousViewDirective {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Days to skip when going back by 1 day\n */\n this.excludeDays = [];\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n */\n onClick() {\n const subFn = {\n day: this.dateAdapter.subDays,\n week: this.dateAdapter.subWeeks,\n month: this.dateAdapter.subMonths,\n }[this.view];\n if (this.view === CalendarView.Day) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, -1, this.excludeDays));\n }\n else if (this.view === CalendarView.Week && this.daysInWeek) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, -this.daysInWeek, this.excludeDays));\n }\n else {\n this.viewDateChange.emit(subFn(this.viewDate, 1));\n }\n }\n}\nCalendarPreviousViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarPreviousViewDirective, deps: [{ token: DateAdapter }], target: i0.ɵɵFactoryTarget.Directive });\nCalendarPreviousViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarPreviousViewDirective, selector: \"[mwlCalendarPreviousView]\", inputs: { view: \"view\", viewDate: \"viewDate\", excludeDays: \"excludeDays\", daysInWeek: \"daysInWeek\" }, outputs: { viewDateChange: \"viewDateChange\" }, host: { listeners: { \"click\": \"onClick()\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarPreviousViewDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarPreviousView]',\n }]\n }], ctorParameters: function () { return [{ type: DateAdapter }]; }, propDecorators: { view: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], excludeDays: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }], viewDateChange: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }] } });\n\n/**\n * Change the view date to the next view. For example:\n *\n * ```typescript\n * <button\n * mwlCalendarNextView\n * [(viewDate)]=\"viewDate\"\n * [view]=\"view\">\n * Next\n * </button>\n * ```\n */\nclass CalendarNextViewDirective {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Days to skip when going forward by 1 day\n */\n this.excludeDays = [];\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n */\n onClick() {\n const addFn = {\n day: this.dateAdapter.addDays,\n week: this.dateAdapter.addWeeks,\n month: this.dateAdapter.addMonths,\n }[this.view];\n if (this.view === CalendarView.Day) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, 1, this.excludeDays));\n }\n else if (this.view === CalendarView.Week && this.daysInWeek) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, this.daysInWeek, this.excludeDays));\n }\n else {\n this.viewDateChange.emit(addFn(this.viewDate, 1));\n }\n }\n}\nCalendarNextViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarNextViewDirective, deps: [{ token: DateAdapter }], target: i0.ɵɵFactoryTarget.Directive });\nCalendarNextViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarNextViewDirective, selector: \"[mwlCalendarNextView]\", inputs: { view: \"view\", viewDate: \"viewDate\", excludeDays: \"excludeDays\", daysInWeek: \"daysInWeek\" }, outputs: { viewDateChange: \"viewDateChange\" }, host: { listeners: { \"click\": \"onClick()\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarNextViewDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarNextView]',\n }]\n }], ctorParameters: function () { return [{ type: DateAdapter }]; }, propDecorators: { view: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], excludeDays: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }], viewDateChange: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }] } });\n\n/**\n * Change the view date to the current day. For example:\n *\n * ```typescript\n * <button\n * mwlCalendarToday\n * [(viewDate)]=\"viewDate\">\n * Today\n * </button>\n * ```\n */\nclass CalendarTodayDirective {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n */\n onClick() {\n this.viewDateChange.emit(this.dateAdapter.startOfDay(new Date()));\n }\n}\nCalendarTodayDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarTodayDirective, deps: [{ token: DateAdapter }], target: i0.ɵɵFactoryTarget.Directive });\nCalendarTodayDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarTodayDirective, selector: \"[mwlCalendarToday]\", inputs: { viewDate: \"viewDate\" }, outputs: { viewDateChange: \"viewDateChange\" }, host: { listeners: { \"click\": \"onClick()\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarTodayDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarToday]',\n }]\n }], ctorParameters: function () { return [{ type: DateAdapter }]; }, propDecorators: { viewDate: [{\n type: Input\n }], viewDateChange: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }] } });\n\n/**\n * This will use the angular date pipe to do all date formatting. It is the default date formatter used by the calendar.\n */\nclass CalendarAngularDateFormatter {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n */\n monthViewColumnHeader({ date, locale }) {\n return formatDate(date, 'EEEE', locale);\n }\n /**\n * The month view cell day number\n */\n monthViewDayNumber({ date, locale }) {\n return formatDate(date, 'd', locale);\n }\n /**\n * The month view title\n */\n monthViewTitle({ date, locale }) {\n return formatDate(date, 'LLLL y', locale);\n }\n /**\n * The week view header week day labels\n */\n weekViewColumnHeader({ date, locale }) {\n return formatDate(date, 'EEEE', locale);\n }\n /**\n * The week view sub header day and month labels\n */\n weekViewColumnSubHeader({ date, locale, }) {\n return formatDate(date, 'MMM d', locale);\n }\n /**\n * The week view title\n */\n weekViewTitle({ date, locale, weekStartsOn, excludeDays, daysInWeek, }) {\n const { viewStart, viewEnd } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n const format = (dateToFormat, showYear) => formatDate(dateToFormat, 'MMM d' + (showYear ? ', yyyy' : ''), locale);\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n */\n weekViewHour({ date, locale }) {\n return formatDate(date, 'h a', locale);\n }\n /**\n * The time formatting down the left hand side of the day view\n */\n dayViewHour({ date, locale }) {\n return formatDate(date, 'h a', locale);\n }\n /**\n * The day view title\n */\n dayViewTitle({ date, locale }) {\n return formatDate(date, 'EEEE, MMMM d, y', locale);\n }\n}\nCalendarAngularDateFormatter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarAngularDateFormatter, deps: [{ token: DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });\nCalendarAngularDateFormatter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarAngularDateFormatter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarAngularDateFormatter, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DateAdapter }]; } });\n\n/**\n * This class is responsible for all formatting of dates. There are 3 implementations available, the `CalendarAngularDateFormatter` (default) which uses the angular date pipe to format dates, the `CalendarNativeDateFormatter` which will use the <a href=\"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Intl\" target=\"_blank\">Intl</a> API to format dates, or there is the `CalendarMomentDateFormatter` which uses <a href=\"http://momentjs.com/\" target=\"_blank\">moment</a>.\n *\n * If you wish, you may override any of the defaults via angulars DI. For example:\n *\n * ```typescript\n * import { CalendarDateFormatter, DateFormatterParams } from 'angular-calendar';\n * import { formatDate } from '@angular/common';\n * import { Injectable } from '@angular/core';\n *\n * @Injectable()\n * class CustomDateFormatter extends CalendarDateFormatter {\n *\n * public monthViewColumnHeader({date, locale}: DateFormatterParams): string {\n * return formatDate(date, 'EEE', locale); // use short week days\n * }\n *\n * }\n *\n * // in your component that uses the calendar\n * providers: [{\n * provide: CalendarDateFormatter,\n * useClass: CustomDateFormatter\n * }]\n * ```\n */\nclass CalendarDateFormatter extends CalendarAngularDateFormatter {\n}\nCalendarDateFormatter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDateFormatter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nCalendarDateFormatter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDateFormatter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDateFormatter, decorators: [{\n type: Injectable\n }] });\n\n/**\n * This pipe is primarily for rendering the current view title. Example usage:\n * ```typescript\n * // where `viewDate` is a `Date` and view is `'month' | 'week' | 'day'`\n * {{ viewDate | calendarDate:(view + 'ViewTitle'):'en' }}\n * ```\n */\nclass CalendarDatePipe {\n constructor(dateFormatter, locale) {\n this.dateFormatter = dateFormatter;\n this.locale = locale;\n }\n transform(date, method, locale = this.locale, weekStartsOn = 0, excludeDays = [], daysInWeek) {\n if (typeof this.dateFormatter[method] === 'undefined') {\n const allowedMethods = Object.getOwnPropertyNames(Object.getPrototypeOf(CalendarDateFormatter.prototype)).filter((iMethod) => iMethod !== 'constructor');\n throw new Error(`${method} is not a valid date formatter. Can only be one of ${allowedMethods.join(', ')}`);\n }\n return this.dateFormatter[method]({\n date,\n locale,\n weekStartsOn,\n excludeDays,\n daysInWeek,\n });\n }\n}\nCalendarDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDatePipe, deps: [{ token: CalendarDateFormatter }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nCalendarDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDatePipe, name: \"calendarDate\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'calendarDate',\n }]\n }], ctorParameters: function () { return [{ type: CalendarDateFormatter }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\nclass CalendarUtils {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n getMonthView(args) {\n return getMonthView(this.dateAdapter, args);\n }\n getWeekViewHeader(args) {\n return getWeekViewHeader(this.dateAdapter, args);\n }\n getWeekView(args) {\n return getWeekView(this.dateAdapter, args);\n }\n}\nCalendarUtils.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarUtils, deps: [{ token: DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });\nCalendarUtils.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarUtils });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarUtils, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DateAdapter }]; } });\n\nconst MOMENT = new InjectionToken('Moment');\n/**\n * This will use <a href=\"http://momentjs.com/\" target=\"_blank\">moment</a> to do all date formatting. To use this class:\n *\n * ```typescript\n * import { CalendarDateFormatter, CalendarMomentDateFormatter, MOMENT } from 'angular-calendar';\n * import moment from 'moment';\n *\n * // in your component\n * provide: [{\n * provide: MOMENT, useValue: moment\n * }, {\n * provide: CalendarDateFormatter, useClass: CalendarMomentDateFormatter\n * }]\n *\n * ```\n */\nclass CalendarMomentDateFormatter {\n /**\n * @hidden\n */\n constructor(moment, dateAdapter) {\n this.moment = moment;\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n */\n monthViewColumnHeader({ date, locale }) {\n return this.moment(date).locale(locale).format('dddd');\n }\n /**\n * The month view cell day number\n */\n monthViewDayNumber({ date, locale }) {\n return this.moment(date).locale(locale).format('D');\n }\n /**\n * The month view title\n */\n monthViewTitle({ date, locale }) {\n return this.moment(date).locale(locale).format('MMMM YYYY');\n }\n /**\n * The week view header week day labels\n */\n weekViewColumnHeader({ date, locale }) {\n return this.moment(date).locale(locale).format('dddd');\n }\n /**\n * The week view sub header day and month labels\n */\n weekViewColumnSubHeader({ date, locale, }) {\n return this.moment(date).locale(locale).format('MMM D');\n }\n /**\n * The week view title\n */\n weekViewTitle({ date, locale, weekStartsOn, excludeDays, daysInWeek, }) {\n const { viewStart, viewEnd } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n const format = (dateToFormat, showYear) => this.moment(dateToFormat)\n .locale(locale)\n .format('MMM D' + (showYear ? ', YYYY' : ''));\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n */\n weekViewHour({ date, locale }) {\n return this.moment(date).locale(locale).format('ha');\n }\n /**\n * The time formatting down the left hand side of the day view\n */\n dayViewHour({ date, locale }) {\n return this.moment(date).locale(locale).format('ha');\n }\n /**\n * The day view title\n */\n dayViewTitle({ date, locale }) {\n return this.moment(date).locale(locale).format('dddd, LL'); // dddd = Thursday\n } // LL = locale-dependent Month Day, Year\n}\nCalendarMomentDateFormatter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMomentDateFormatter, deps: [{ token: MOMENT }, { token: DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });\nCalendarMomentDateFormatter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMomentDateFormatter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMomentDateFormatter, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MOMENT]\n }] }, { type: DateAdapter }]; } });\n\n/**\n * This will use <a href=\"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Intl\" target=\"_blank\">Intl</a> API to do all date formatting.\n *\n * You will need to include a <a href=\"https://github.com/andyearnshaw/Intl.js/\">polyfill</a> for older browsers.\n */\nclass CalendarNativeDateFormatter {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n */\n monthViewColumnHeader({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date);\n }\n /**\n * The month view cell day number\n */\n monthViewDayNumber({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { day: 'numeric' }).format(date);\n }\n /**\n * The month view title\n */\n monthViewTitle({ date, locale }) {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n }).format(date);\n }\n /**\n * The week view header week day labels\n */\n weekViewColumnHeader({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date);\n }\n /**\n * The week view sub header day and month labels\n */\n weekViewColumnSubHeader({ date, locale, }) {\n return new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short',\n }).format(date);\n }\n /**\n * The week view title\n */\n weekViewTitle({ date, locale, weekStartsOn, excludeDays, daysInWeek, }) {\n const { viewStart, viewEnd } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n const format = (dateToFormat, showYear) => new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short',\n year: showYear ? 'numeric' : undefined,\n }).format(dateToFormat);\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n */\n weekViewHour({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { hour: 'numeric' }).format(date);\n }\n /**\n * The time formatting down the left hand side of the day view\n */\n dayViewHour({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { hour: 'numeric' }).format(date);\n }\n /**\n * The day view title\n */\n dayViewTitle({ date, locale }) {\n return new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n weekday: 'long',\n }).format(date);\n }\n}\nCalendarNativeDateFormatter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarNativeDateFormatter, deps: [{ token: DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });\nCalendarNativeDateFormatter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarNativeDateFormatter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarNativeDateFormatter, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DateAdapter }]; } });\n\nvar CalendarEventTimesChangedEventType;\n(function (CalendarEventTimesChangedEventType) {\n CalendarEventTimesChangedEventType[\"Drag\"] = \"drag\";\n CalendarEventTimesChangedEventType[\"Drop\"] = \"drop\";\n CalendarEventTimesChangedEventType[\"Resize\"] = \"resize\";\n})(CalendarEventTimesChangedEventType || (CalendarEventTimesChangedEventType = {}));\n\n/**\n * Import this module to if you're just using a singular view and want to save on bundle size. Example usage:\n *\n * ```typescript\n * import { CalendarCommonModule, CalendarMonthModule } from 'angular-calendar';\n *\n * @NgModule({\n * imports: [\n * CalendarCommonModule.forRoot(),\n * CalendarMonthModule\n * ]\n * })\n * class MyModule {}\n * ```\n *\n */\nclass CalendarCommonModule {\n static forRoot(dateAdapter, config = {}) {\n return {\n ngModule: CalendarCommonModule,\n providers: [\n dateAdapter,\n config.eventTitleFormatter || CalendarEventTitleFormatter,\n config.dateFormatter || CalendarDateFormatter,\n config.utils || CalendarUtils,\n config.a11y || CalendarA11y,\n ],\n };\n }\n}\nCalendarCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarCommonModule, declarations: [CalendarEventActionsComponent,\n CalendarEventTitleComponent,\n CalendarTooltipWindowComponent,\n CalendarTooltipDirective,\n CalendarPreviousViewDirective,\n CalendarNextViewDirective,\n CalendarTodayDirective,\n CalendarDatePipe,\n CalendarEventTitlePipe,\n CalendarA11yPipe,\n ClickDirective,\n KeydownEnterDirective], imports: [CommonModule], exports: [CalendarEventActionsComponent,\n CalendarEventTitleComponent,\n CalendarTooltipWindowComponent,\n CalendarTooltipDirective,\n CalendarPreviousViewDirective,\n CalendarNextViewDirective,\n CalendarTodayDirective,\n CalendarDatePipe,\n CalendarEventTitlePipe,\n CalendarA11yPipe,\n ClickDirective,\n KeydownEnterDirective] });\nCalendarCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarCommonModule, providers: [I18nPluralPipe], imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarCommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n CalendarEventActionsComponent,\n CalendarEventTitleComponent,\n CalendarTooltipWindowComponent,\n CalendarTooltipDirective,\n CalendarPreviousViewDirective,\n CalendarNextViewDirective,\n CalendarTodayDirective,\n CalendarDatePipe,\n CalendarEventTitlePipe,\n CalendarA11yPipe,\n ClickDirective,\n KeydownEnterDirective,\n ],\n imports: [CommonModule],\n exports: [\n CalendarEventActionsComponent,\n CalendarEventTitleComponent,\n CalendarTooltipWindowComponent,\n CalendarTooltipDirective,\n CalendarPreviousViewDirective,\n CalendarNextViewDirective,\n CalendarTodayDirective,\n CalendarDatePipe,\n CalendarEventTitlePipe,\n CalendarA11yPipe,\n ClickDirective,\n KeydownEnterDirective,\n ],\n providers: [I18nPluralPipe],\n }]\n }] });\n\nclass CalendarMonthCellComponent {\n constructor() {\n this.highlightDay = new EventEmitter();\n this.unhighlightDay = new EventEmitter();\n this.eventClicked = new EventEmitter();\n this.trackByEventId = trackByEventId;\n this.validateDrag = isWithinThreshold;\n }\n}\nCalendarMonthCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMonthCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCalendarMonthCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarMonthCellComponent, selector: \"mwl-calendar-month-cell\", inputs: { day: \"day\", openDay: \"openDay\", locale: \"locale\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", customTemplate: \"customTemplate\", tooltipTemplate: \"tooltipTemplate\", tooltipDelay: \"tooltipDelay\" }, outputs: { highlightDay: \"highlightDay\", unhighlightDay: \"unhighlightDay\", eventClicked: \"eventClicked\" }, host: { properties: { \"class.cal-past\": \"day.isPast\", \"class.cal-today\": \"day.isToday\", \"class.cal-future\": \"day.isFuture\", \"class.cal-weekend\": \"day.isWeekend\", \"class.cal-in-month\": \"day.inMonth\", \"class.cal-out-month\": \"!day.inMonth\", \"class.cal-has-events\": \"day.events.length > 0\", \"class.cal-open\": \"day === openDay\", \"class.cal-event-highlight\": \"!!day.backgroundColor\" }, classAttribute: \"cal-cell cal-day-cell\" }, ngImport: i0, template: `\n <ng-template\n #defaultTemplate\n let-day=\"day\"\n let-openDay=\"openDay\"\n let-locale=\"locale\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-highlightDay=\"highlightDay\"\n let-unhighlightDay=\"unhighlightDay\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDelay=\"tooltipDelay\"\n let-trackByEventId=\"trackByEventId\"\n let-validateDrag=\"validateDrag\"\n >\n <div\n class=\"cal-cell-top\"\n [attr.aria-label]=\"\n { day: day, locale: locale } | calendarA11y : 'monthCell'\n \"\n >\n <span aria-hidden=\"true\">\n <span class=\"cal-day-badge\" *ngIf=\"day.badgeTotal > 0\">{{\n day.badgeTotal\n }}</span>\n <span class=\"cal-day-number\">{{\n day.date | calendarDate : 'monthViewDayNumber' : locale\n }}</span>\n </span>\n </div>\n <div class=\"cal-events\" *ngIf=\"day.events.length > 0\">\n <div\n class=\"cal-event\"\n *ngFor=\"let event of day.events; trackBy: trackByEventId\"\n [ngStyle]=\"{ backgroundColor: event.color?.primary }\"\n [ngClass]=\"event?.cssClass\"\n (mouseenter)=\"highlightDay.emit({ event: event })\"\n (mouseleave)=\"unhighlightDay.emit({ event: event })\"\n [mwlCalendarTooltip]=\"\n event.title | calendarEventTitle : 'monthTooltip' : event\n \"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n mwlDraggable\n [class.cal-draggable]=\"event.draggable\"\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: event, draggedFrom: day }\"\n [dragAxis]=\"{ x: event.draggable, y: event.draggable }\"\n [validateDrag]=\"validateDrag\"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n (mwlClick)=\"eventClicked.emit({ event: event, sourceEvent: $event })\"\n [attr.aria-hidden]=\"{} | calendarA11y : 'hideMonthCellEvents'\"\n ></div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n day: day,\n openDay: openDay,\n locale: locale,\n tooltipPlacement: tooltipPlacement,\n highlightDay: highlightDay,\n unhighlightDay: unhighlightDay,\n eventClicked: eventClicked,\n tooltipTemplate: tooltipTemplate,\n tooltipAppendToBody: tooltipAppendToBody,\n tooltipDelay: tooltipDelay,\n trackByEventId: trackByEventId,\n validateDrag: validateDrag\n }\"\n >\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i2.DraggableDirective, selector: \"[mwlDraggable]\", inputs: [\"dropData\", \"dragAxis\", \"dragSnapGrid\", \"ghostDragEnabled\", \"showOriginalElementWhileDragging\", \"validateDrag\", \"dragCursor\", \"dragActiveClass\", \"ghostElementAppendTo\", \"ghostElementTemplate\", \"touchStartLongPress\", \"autoScroll\"], outputs: [\"dragPointerDown\", \"dragStart\", \"ghostElementCreated\", \"dragging\", \"dragEnd\"] }, { kind: \"directive\", type: CalendarTooltipDirective, selector: \"[mwlCalendarTooltip]\", inputs: [\"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipEvent\", \"tooltipAppendToBody\", \"tooltipDelay\"] }, { kind: \"directive\", type: ClickDirective, selector: \"[mwlClick]\", inputs: [\"clickListenerDisabled\"], outputs: [\"mwlClick\"] }, { kind: \"pipe\", type: CalendarDatePipe, name: \"calendarDate\" }, { kind: \"pipe\", type: CalendarEventTitlePipe, name: \"calendarEventTitle\" }, { kind: \"pipe\", type: CalendarA11yPipe, name: \"calendarA11y\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMonthCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-month-cell',\n template: `\n <ng-template\n #defaultTemplate\n let-day=\"day\"\n let-openDay=\"openDay\"\n let-locale=\"locale\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-highlightDay=\"highlightDay\"\n let-unhighlightDay=\"unhighlightDay\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDelay=\"tooltipDelay\"\n let-trackByEventId=\"trackByEventId\"\n let-validateDrag=\"validateDrag\"\n >\n <div\n class=\"cal-cell-top\"\n [attr.aria-label]=\"\n { day: day, locale: locale } | calendarA11y : 'monthCell'\n \"\n >\n <span aria-hidden=\"true\">\n <span class=\"cal-day-badge\" *ngIf=\"day.badgeTotal > 0\">{{\n day.badgeTotal\n }}</span>\n <span class=\"cal-day-number\">{{\n day.date | calendarDate : 'monthViewDayNumber' : locale\n }}</span>\n </span>\n </div>\n <div class=\"cal-events\" *ngIf=\"day.events.length > 0\">\n <div\n class=\"cal-event\"\n *ngFor=\"let event of day.events; trackBy: trackByEventId\"\n [ngStyle]=\"{ backgroundColor: event.color?.primary }\"\n [ngClass]=\"event?.cssClass\"\n (mouseenter)=\"highlightDay.emit({ event: event })\"\n (mouseleave)=\"unhighlightDay.emit({ event: event })\"\n [mwlCalendarTooltip]=\"\n event.title | calendarEventTitle : 'monthTooltip' : event\n \"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n mwlDraggable\n [class.cal-draggable]=\"event.draggable\"\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: event, draggedFrom: day }\"\n [dragAxis]=\"{ x: event.draggable, y: event.draggable }\"\n [validateDrag]=\"validateDrag\"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n (mwlClick)=\"eventClicked.emit({ event: event, sourceEvent: $event })\"\n [attr.aria-hidden]=\"{} | calendarA11y : 'hideMonthCellEvents'\"\n ></div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n day: day,\n openDay: openDay,\n locale: locale,\n tooltipPlacement: tooltipPlacement,\n highlightDay: highlightDay,\n unhighlightDay: unhighlightDay,\n eventClicked: eventClicked,\n tooltipTemplate: tooltipTemplate,\n tooltipAppendToBody: tooltipAppendToBody,\n tooltipDelay: tooltipDelay,\n trackByEventId: trackByEventId,\n validateDrag: validateDrag\n }\"\n >\n </ng-template>\n `,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'cal-cell cal-day-cell',\n '[class.cal-past]': 'day.isPast',\n '[class.cal-today]': 'day.isToday',\n '[class.cal-future]': 'day.isFuture',\n '[class.cal-weekend]': 'day.isWeekend',\n '[class.cal-in-month]': 'day.inMonth',\n '[class.cal-out-month]': '!day.inMonth',\n '[class.cal-has-events]': 'day.events.length > 0',\n '[class.cal-open]': 'day === openDay',\n '[class.cal-event-highlight]': '!!day.backgroundColor',\n },\n }]\n }], propDecorators: { day: [{\n type: Input\n }], openDay: [{\n type: Input\n }], locale: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], tooltipDelay: [{\n type: Input\n }], highlightDay: [{\n type: Output\n }], unhighlightDay: [{\n type: Output\n }], eventClicked: [{\n type: Output\n }] } });\n\nconst collapseAnimation = trigger('collapse', [\n state('void', style({\n height: 0,\n overflow: 'hidden',\n 'padding-top': 0,\n 'padding-bottom': 0,\n })),\n state('*', style({\n height: '*',\n overflow: 'hidden',\n 'padding-top': '*',\n 'padding-bottom': '*',\n })),\n transition('* => void', animate('150ms ease-out')),\n transition('void => *', animate('150ms ease-in')),\n]);\nclass CalendarOpenDayEventsComponent {\n constructor() {\n this.isOpen = false;\n this.eventClicked = new EventEmitter();\n this.trackByEventId = trackByEventId;\n this.validateDrag = isWithinThreshold;\n }\n}\nCalendarOpenDayEventsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarOpenDayEventsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCalendarOpenDayEventsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarOpenDayEventsComponent, selector: \"mwl-calendar-open-day-events\", inputs: { locale: \"locale\", isOpen: \"isOpen\", events: \"events\", customTemplate: \"customTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", date: \"date\" }, outputs: { eventClicked: \"eventClicked\" }, ngImport: i0, template: `\n <ng-template\n #defaultTemplate\n let-events=\"events\"\n let-eventClicked=\"eventClicked\"\n let-isOpen=\"isOpen\"\n let-trackByEventId=\"trackByEventId\"\n let-validateDrag=\"validateDrag\"\n >\n <div\n class=\"cal-open-day-events\"\n [@collapse]\n *ngIf=\"isOpen\"\n role=\"application\"\n >\n <span\n tabindex=\"-1\"\n role=\"alert\"\n [attr.aria-label]=\"\n { date: date, locale: locale } | calendarA11y : 'openDayEventsAlert'\n \"\n ></span>\n <span\n tabindex=\"0\"\n role=\"landmark\"\n [attr.aria-label]=\"\n { date: date, locale: locale }\n | calendarA11y : 'openDayEventsLandmark'\n \"\n ></span>\n <div\n *ngFor=\"let event of events; trackBy: trackByEventId\"\n [ngClass]=\"event?.cssClass\"\n mwlDraggable\n [class.cal-draggable]=\"event.draggable\"\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: event }\"\n [dragAxis]=\"{ x: event.draggable, y: event.draggable }\"\n [validateDrag]=\"validateDrag\"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n >\n <span\n class=\"cal-event\"\n [ngStyle]=\"{ backgroundColor: event.color?.primary }\"\n >\n </span>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"event\"\n [customTemplate]=\"eventTitleTemplate\"\n view=\"month\"\n (mwlClick)=\"\n eventClicked.emit({ event: event, sourceEvent: $event })\n \"\n (mwlKeydownEnter)=\"\n eventClicked.emit({ event: event, sourceEvent: $event })\n \"\n tabindex=\"0\"\n [attr.aria-label]=\"\n { event: event, locale: locale }\n | calendarA11y : 'eventDescription'\n \"\n >\n </mwl-calendar-event-title>\n &ngsp;\n <mwl-calendar-event-actions\n [event]=\"event\"\n [customTemplate]=\"eventActionsTemplate\"\n >\n </mwl-calendar-event-actions>\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n events: events,\n eventClicked: eventClicked,\n isOpen: isOpen,\n trackByEventId: trackByEventId,\n validateDrag: validateDrag\n }\"\n >\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i2.DraggableDirective, selector: \"[mwlDraggable]\", inputs: [\"dropData\", \"dragAxis\", \"dragSnapGrid\", \"ghostDragEnabled\", \"showOriginalElementWhileDragging\", \"validateDrag\", \"dragCursor\", \"dragActiveClass\", \"ghostElementAppendTo\", \"ghostElementTemplate\", \"touchStartLongPress\", \"autoScroll\"], outputs: [\"dragPointerDown\", \"dragStart\", \"ghostElementCreated\", \"dragging\", \"dragEnd\"] }, { kind: \"component\", type: CalendarEventActionsComponent, selector: \"mwl-calendar-event-actions\", inputs: [\"event\", \"customTemplate\"] }, { kind: \"component\", type: CalendarEventTitleComponent, selector: \"mwl-calendar-event-title\", inputs: [\"event\", \"customTemplate\", \"view\"] }, { kind: \"directive\", type: ClickDirective, selector: \"[mwlClick]\", inputs: [\"clickListenerDisabled\"], outputs: [\"mwlClick\"] }, { kind: \"directive\", type: KeydownEnterDirective, selector: \"[mwlKeydownEnter]\", outputs: [\"mwlKeydownEnter\"] }, { kind: \"pipe\", type: CalendarA11yPipe, name: \"calendarA11y\" }], animations: [collapseAnimation] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarOpenDayEventsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-open-day-events',\n template: `\n <ng-template\n #defaultTemplate\n let-events=\"events\"\n let-eventClicked=\"eventClicked\"\n let-isOpen=\"isOpen\"\n let-trackByEventId=\"trackByEventId\"\n let-validateDrag=\"validateDrag\"\n >\n <div\n class=\"cal-open-day-events\"\n [@collapse]\n *ngIf=\"isOpen\"\n role=\"application\"\n >\n <span\n tabindex=\"-1\"\n role=\"alert\"\n [attr.aria-label]=\"\n { date: date, locale: locale } | calendarA11y : 'openDayEventsAlert'\n \"\n ></span>\n <span\n tabindex=\"0\"\n role=\"landmark\"\n [attr.aria-label]=\"\n { date: date, locale: locale }\n | calendarA11y : 'openDayEventsLandmark'\n \"\n ></span>\n <div\n *ngFor=\"let event of events; trackBy: trackByEventId\"\n [ngClass]=\"event?.cssClass\"\n mwlDraggable\n [class.cal-draggable]=\"event.draggable\"\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: event }\"\n [dragAxis]=\"{ x: event.draggable, y: event.draggable }\"\n [validateDrag]=\"validateDrag\"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n >\n <span\n class=\"cal-event\"\n [ngStyle]=\"{ backgroundColor: event.color?.primary }\"\n >\n </span>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"event\"\n [customTemplate]=\"eventTitleTemplate\"\n view=\"month\"\n (mwlClick)=\"\n eventClicked.emit({ event: event, sourceEvent: $event })\n \"\n (mwlKeydownEnter)=\"\n eventClicked.emit({ event: event, sourceEvent: $event })\n \"\n tabindex=\"0\"\n [attr.aria-label]=\"\n { event: event, locale: locale }\n | calendarA11y : 'eventDescription'\n \"\n >\n </mwl-calendar-event-title>\n &ngsp;\n <mwl-calendar-event-actions\n [event]=\"event\"\n [customTemplate]=\"eventActionsTemplate\"\n >\n </mwl-calendar-event-actions>\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n events: events,\n eventClicked: eventClicked,\n isOpen: isOpen,\n trackByEventId: trackByEventId,\n validateDrag: validateDrag\n }\"\n >\n </ng-template>\n `,\n animations: [collapseAnimation],\n }]\n }], propDecorators: { locale: [{\n type: Input\n }], isOpen: [{\n type: Input\n }], events: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], date: [{\n type: Input\n }], eventClicked: [{\n type: Output\n }] } });\n\nclass CalendarMonthViewHeaderComponent {\n constructor() {\n this.columnHeaderClicked = new EventEmitter();\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n }\n}\nCalendarMonthViewHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMonthViewHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCalendarMonthViewHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarMonthViewHeaderComponent, selector: \"mwl-calendar-month-view-header\", inputs: { days: \"days\", locale: \"locale\", customTemplate: \"customTemplate\" }, outputs: { columnHeaderClicked: \"columnHeaderClicked\" }, ngImport: i0, template: `\n <ng-template\n #defaultTemplate\n let-days=\"days\"\n let-locale=\"locale\"\n let-trackByWeekDayHeaderDate=\"trackByWeekDayHeaderDate\"\n >\n <div class=\"cal-cell-row cal-header\" role=\"row\">\n <div\n class=\"cal-cell\"\n *ngFor=\"let day of days; trackBy: trackByWeekDayHeaderDate\"\n [class.cal-past]=\"day.isPast\"\n [class.cal-today]=\"day.isToday\"\n [class.cal-future]=\"day.isFuture\"\n [class.cal-weekend]=\"day.isWeekend\"\n (click)=\"\n columnHeaderClicked.emit({\n isoDayNumber: day.day,\n sourceEvent: $event\n })\n \"\n [ngClass]=\"day.cssClass\"\n tabindex=\"0\"\n role=\"columnheader\"\n >\n {{ day.date | calendarDate : 'monthViewColumnHeader' : locale }}\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n days: days,\n locale: locale,\n trackByWeekDayHeaderDate: trackByWeekDayHeaderDate\n }\"\n >\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: CalendarDatePipe, name: \"calendarDate\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMonthViewHeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-month-view-header',\n template: `\n <ng-template\n #defaultTemplate\n let-days=\"days\"\n let-locale=\"locale\"\n let-trackByWeekDayHeaderDate=\"trackByWeekDayHeaderDate\"\n >\n <div class=\"cal-cell-row cal-header\" role=\"row\">\n <div\n class=\"cal-cell\"\n *ngFor=\"let day of days; trackBy: trackByWeekDayHeaderDate\"\n [class.cal-past]=\"day.isPast\"\n [class.cal-today]=\"day.isToday\"\n [class.cal-future]=\"day.isFuture\"\n [class.cal-weekend]=\"day.isWeekend\"\n (click)=\"\n columnHeaderClicked.emit({\n isoDayNumber: day.day,\n sourceEvent: $event\n })\n \"\n [ngClass]=\"day.cssClass\"\n tabindex=\"0\"\n role=\"columnheader\"\n >\n {{ day.date | calendarDate : 'monthViewColumnHeader' : locale }}\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n days: days,\n locale: locale,\n trackByWeekDayHeaderDate: trackByWeekDayHeaderDate\n }\"\n >\n </ng-template>\n `,\n }]\n }], propDecorators: { days: [{\n type: Input\n }], locale: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], columnHeaderClicked: [{\n type: Output\n }] } });\n\n/**\n * Shows all events on a given month. Example usage:\n *\n * ```typescript\n * <mwl-calendar-month-view\n * [viewDate]=\"viewDate\"\n * [events]=\"events\">\n * </mwl-calendar-month-view>\n * ```\n */\nclass CalendarMonthViewComponent {\n /**\n * @hidden\n */\n constructor(cdr, utils, locale, dateAdapter) {\n this.cdr = cdr;\n this.utils = utils;\n this.dateAdapter = dateAdapter;\n /**\n * An array of events to display on view.\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n */\n this.excludeDays = [];\n /**\n * Whether the events list for the day of the `viewDate` option is visible or not\n */\n this.activeDayIsOpen = false;\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n this.tooltipDelay = null;\n /**\n * An output that will be called before the view is rendered for the current month.\n * If you add the `cssClass` property to a day in the body it will add that class to the cell element in the template\n */\n this.beforeViewRender = new EventEmitter();\n /**\n * Called when the day cell is clicked\n */\n this.dayClicked = new EventEmitter();\n /**\n * Called when the event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when a header week day is clicked. Returns ISO day number.\n */\n this.columnHeaderClicked = new EventEmitter();\n /**\n * Called when an event is dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * @hidden\n */\n this.trackByRowOffset = (index, offset) => this.view.days\n .slice(offset, this.view.totalDaysVisibleInWeek)\n .map((day) => day.date.toISOString())\n .join('-');\n /**\n * @hidden\n */\n this.trackByDate = (index, day) => day.date.toISOString();\n this.locale = locale;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.markForCheck();\n });\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n const refreshHeader = changes.viewDate || changes.excludeDays || changes.weekendDays;\n const refreshBody = changes.viewDate ||\n changes.events ||\n changes.excludeDays ||\n changes.weekendDays;\n if (refreshHeader) {\n this.refreshHeader();\n }\n if (changes.events) {\n validateEvents(this.events);\n }\n if (refreshBody) {\n this.refreshBody();\n }\n if (refreshHeader || refreshBody) {\n this.emitBeforeViewRender();\n }\n if (changes.activeDayIsOpen ||\n changes.viewDate ||\n changes.events ||\n changes.excludeDays ||\n changes.activeDay) {\n this.checkActiveDayIsOpen();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n toggleDayHighlight(event, isHighlighted) {\n this.view.days.forEach((day) => {\n if (isHighlighted && day.events.indexOf(event) > -1) {\n day.backgroundColor =\n (event.color && event.color.secondary) || '#D1E8FF';\n }\n else {\n delete day.backgroundColor;\n }\n });\n }\n /**\n * @hidden\n */\n eventDropped(droppedOn, event, draggedFrom) {\n if (droppedOn !== draggedFrom) {\n const year = this.dateAdapter.getYear(droppedOn.date);\n const month = this.dateAdapter.getMonth(droppedOn.date);\n const date = this.dateAdapter.getDate(droppedOn.date);\n const newStart = this.dateAdapter.setDate(this.dateAdapter.setMonth(this.dateAdapter.setYear(event.start, year), month), date);\n let newEnd;\n if (event.end) {\n const secondsDiff = this.dateAdapter.differenceInSeconds(newStart, event.start);\n newEnd = this.dateAdapter.addSeconds(event.end, secondsDiff);\n }\n this.eventTimesChanged.emit({\n event,\n newStart,\n newEnd,\n day: droppedOn,\n type: CalendarEventTimesChangedEventType.Drop,\n });\n }\n }\n refreshHeader() {\n this.columnHeaders = this.utils.getWeekViewHeader({\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays,\n });\n }\n refreshBody() {\n this.view = this.utils.getMonthView({\n events: this.events,\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays,\n });\n }\n checkActiveDayIsOpen() {\n if (this.activeDayIsOpen === true) {\n const activeDay = this.activeDay || this.viewDate;\n this.openDay = this.view.days.find((day) => this.dateAdapter.isSameDay(day.date, activeDay));\n const index = this.view.days.indexOf(this.openDay);\n this.openRowIndex =\n Math.floor(index / this.view.totalDaysVisibleInWeek) *\n this.view.totalDaysVisibleInWeek;\n }\n else {\n this.openRowIndex = null;\n this.openDay = null;\n }\n }\n refreshAll() {\n this.refreshHeader();\n this.refreshBody();\n this.emitBeforeViewRender();\n this.checkActiveDayIsOpen();\n }\n emitBeforeViewRender() {\n if (this.columnHeaders && this.view) {\n this.beforeViewRender.emit({\n header: this.columnHeaders,\n body: this.view.days,\n period: this.view.period,\n });\n }\n }\n}\nCalendarMonthViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMonthViewComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: CalendarUtils }, { token: LOCALE_ID }, { token: DateAdapter }], target: i0.ɵɵFactoryTarget.Component });\nCalendarMonthViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarMonthViewComponent, selector: \"mwl-calendar-month-view\", inputs: { viewDate: \"viewDate\", events: \"events\", excludeDays: \"excludeDays\", activeDayIsOpen: \"activeDayIsOpen\", activeDay: \"activeDay\", refresh: \"refresh\", locale: \"locale\", tooltipPlacement: \"tooltipPlacement\", tooltipTemplate: \"tooltipTemplate\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipDelay: \"tooltipDelay\", weekStartsOn: \"weekStartsOn\", headerTemplate: \"headerTemplate\", cellTemplate: \"cellTemplate\", openDayEventsTemplate: \"openDayEventsTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", weekendDays: \"weekendDays\" }, outputs: { beforeViewRender: \"beforeViewRender\", dayClicked: \"dayClicked\", eventClicked: \"eventClicked\", columnHeaderClicked: \"columnHeaderClicked\", eventTimesChanged: \"eventTimesChanged\" }, usesOnChanges: true, ngImport: i0, template: `\n <div class=\"cal-month-view\" role=\"grid\">\n <mwl-calendar-month-view-header\n [days]=\"columnHeaders\"\n [locale]=\"locale\"\n (columnHeaderClicked)=\"columnHeaderClicked.emit($event)\"\n [customTemplate]=\"headerTemplate\"\n >\n </mwl-calendar-month-view-header>\n <div class=\"cal-days\">\n <div\n *ngFor=\"let rowIndex of view.rowOffsets; trackBy: trackByRowOffset\"\n >\n <div role=\"row\" class=\"cal-cell-row\">\n <mwl-calendar-month-cell\n role=\"gridcell\"\n *ngFor=\"\n let day of view.days\n | slice : rowIndex : rowIndex + view.totalDaysVisibleInWeek;\n trackBy: trackByDate\n \"\n [ngClass]=\"day?.cssClass\"\n [day]=\"day\"\n [openDay]=\"openDay\"\n [locale]=\"locale\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipDelay]=\"tooltipDelay\"\n [customTemplate]=\"cellTemplate\"\n [ngStyle]=\"{ backgroundColor: day.backgroundColor }\"\n (mwlClick)=\"dayClicked.emit({ day: day, sourceEvent: $event })\"\n [clickListenerDisabled]=\"dayClicked.observers.length === 0\"\n (mwlKeydownEnter)=\"\n dayClicked.emit({ day: day, sourceEvent: $event })\n \"\n (highlightDay)=\"toggleDayHighlight($event.event, true)\"\n (unhighlightDay)=\"toggleDayHighlight($event.event, false)\"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"\n eventDropped(\n day,\n $event.dropData.event,\n $event.dropData.draggedFrom\n )\n \"\n (eventClicked)=\"\n eventClicked.emit({\n event: $event.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n [attr.tabindex]=\"{} | calendarA11y : 'monthCellTabIndex'\"\n >\n </mwl-calendar-month-cell>\n </div>\n <mwl-calendar-open-day-events\n [locale]=\"locale\"\n [isOpen]=\"openRowIndex === rowIndex\"\n [events]=\"openDay?.events\"\n [date]=\"openDay?.date\"\n [customTemplate]=\"openDayEventsTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n (eventClicked)=\"\n eventClicked.emit({\n event: $event.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"\n eventDropped(\n openDay,\n $event.dropData.event,\n $event.dropData.draggedFrom\n )\n \"\n >\n </mwl-calendar-open-day-events>\n </div>\n </div>\n </div>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i2.DroppableDirective, selector: \"[mwlDroppable]\", inputs: [\"dragOverClass\", \"dragActiveClass\", \"validateDrop\"], outputs: [\"dragEnter\", \"dragLeave\", \"dragOver\", \"drop\"] }, { kind: \"directive\", type: ClickDirective, selector: \"[mwlClick]\", inputs: [\"clickListenerDisabled\"], outputs: [\"mwlClick\"] }, { kind: \"directive\", type: KeydownEnterDirective, selector: \"[mwlKeydownEnter]\", outputs: [\"mwlKeydownEnter\"] }, { kind: \"component\", type: CalendarMonthCellComponent, selector: \"mwl-calendar-month-cell\", inputs: [\"day\", \"openDay\", \"locale\", \"tooltipPlacement\", \"tooltipAppendToBody\", \"customTemplate\", \"tooltipTemplate\", \"tooltipDelay\"], outputs: [\"highlightDay\", \"unhighlightDay\", \"eventClicked\"] }, { kind: \"component\", type: CalendarOpenDayEventsComponent, selector: \"mwl-calendar-open-day-events\", inputs: [\"locale\", \"isOpen\", \"events\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"date\"], outputs: [\"eventClicked\"] }, { kind: \"component\", type: CalendarMonthViewHeaderComponent, selector: \"mwl-calendar-month-view-header\", inputs: [\"days\", \"locale\", \"customTemplate\"], outputs: [\"columnHeaderClicked\"] }, { kind: \"pipe\", type: i1.SlicePipe, name: \"slice\" }, { kind: \"pipe\", type: CalendarA11yPipe, name: \"calendarA11y\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMonthViewComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-month-view',\n template: `\n <div class=\"cal-month-view\" role=\"grid\">\n <mwl-calendar-month-view-header\n [days]=\"columnHeaders\"\n [locale]=\"locale\"\n (columnHeaderClicked)=\"columnHeaderClicked.emit($event)\"\n [customTemplate]=\"headerTemplate\"\n >\n </mwl-calendar-month-view-header>\n <div class=\"cal-days\">\n <div\n *ngFor=\"let rowIndex of view.rowOffsets; trackBy: trackByRowOffset\"\n >\n <div role=\"row\" class=\"cal-cell-row\">\n <mwl-calendar-month-cell\n role=\"gridcell\"\n *ngFor=\"\n let day of view.days\n | slice : rowIndex : rowIndex + view.totalDaysVisibleInWeek;\n trackBy: trackByDate\n \"\n [ngClass]=\"day?.cssClass\"\n [day]=\"day\"\n [openDay]=\"openDay\"\n [locale]=\"locale\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipDelay]=\"tooltipDelay\"\n [customTemplate]=\"cellTemplate\"\n [ngStyle]=\"{ backgroundColor: day.backgroundColor }\"\n (mwlClick)=\"dayClicked.emit({ day: day, sourceEvent: $event })\"\n [clickListenerDisabled]=\"dayClicked.observers.length === 0\"\n (mwlKeydownEnter)=\"\n dayClicked.emit({ day: day, sourceEvent: $event })\n \"\n (highlightDay)=\"toggleDayHighlight($event.event, true)\"\n (unhighlightDay)=\"toggleDayHighlight($event.event, false)\"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"\n eventDropped(\n day,\n $event.dropData.event,\n $event.dropData.draggedFrom\n )\n \"\n (eventClicked)=\"\n eventClicked.emit({\n event: $event.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n [attr.tabindex]=\"{} | calendarA11y : 'monthCellTabIndex'\"\n >\n </mwl-calendar-month-cell>\n </div>\n <mwl-calendar-open-day-events\n [locale]=\"locale\"\n [isOpen]=\"openRowIndex === rowIndex\"\n [events]=\"openDay?.events\"\n [date]=\"openDay?.date\"\n [customTemplate]=\"openDayEventsTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n (eventClicked)=\"\n eventClicked.emit({\n event: $event.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"\n eventDropped(\n openDay,\n $event.dropData.event,\n $event.dropData.draggedFrom\n )\n \"\n >\n </mwl-calendar-open-day-events>\n </div>\n </div>\n </div>\n `,\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: CalendarUtils }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: DateAdapter }]; }, propDecorators: { viewDate: [{\n type: Input\n }], events: [{\n type: Input\n }], excludeDays: [{\n type: Input\n }], activeDayIsOpen: [{\n type: Input\n }], activeDay: [{\n type: Input\n }], refresh: [{\n type: Input\n }], locale: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipDelay: [{\n type: Input\n }], weekStartsOn: [{\n type: Input\n }], headerTemplate: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], openDayEventsTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], weekendDays: [{\n type: Input\n }], beforeViewRender: [{\n type: Output\n }], dayClicked: [{\n type: Output\n }], eventClicked: [{\n type: Output\n }], columnHeaderClicked: [{\n type: Output\n }], eventTimesChanged: [{\n type: Output\n }] } });\n\nclass CalendarMonthModule {\n}\nCalendarMonthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMonthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarMonthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMonthModule, declarations: [CalendarMonthViewComponent,\n CalendarMonthCellComponent,\n CalendarOpenDayEventsComponent,\n CalendarMonthViewHeaderComponent], imports: [CommonModule, DragAndDropModule, CalendarCommonModule], exports: [DragAndDropModule,\n CalendarMonthViewComponent,\n CalendarMonthCellComponent,\n CalendarOpenDayEventsComponent,\n CalendarMonthViewHeaderComponent] });\nCalendarMonthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMonthModule, imports: [CommonModule, DragAndDropModule, CalendarCommonModule, DragAndDropModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarMonthModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, DragAndDropModule, CalendarCommonModule],\n declarations: [\n CalendarMonthViewComponent,\n CalendarMonthCellComponent,\n CalendarOpenDayEventsComponent,\n CalendarMonthViewHeaderComponent,\n ],\n exports: [\n DragAndDropModule,\n CalendarMonthViewComponent,\n CalendarMonthCellComponent,\n CalendarOpenDayEventsComponent,\n CalendarMonthViewHeaderComponent,\n ],\n }]\n }] });\n\nclass CalendarDragHelper {\n constructor(dragContainerElement, draggableElement) {\n this.dragContainerElement = dragContainerElement;\n this.startPosition = draggableElement.getBoundingClientRect();\n }\n validateDrag({ x, y, snapDraggedEvents, dragAlreadyMoved, transform, }) {\n const isDraggedWithinThreshold = isWithinThreshold({ x, y }) || dragAlreadyMoved;\n if (snapDraggedEvents) {\n const inner = Object.assign({}, this.startPosition, {\n left: this.startPosition.left + transform.x,\n right: this.startPosition.right + transform.x,\n top: this.startPosition.top + transform.y,\n bottom: this.startPosition.bottom + transform.y,\n });\n if (isDraggedWithinThreshold) {\n const outer = this.dragContainerElement.getBoundingClientRect();\n const isTopInside = outer.top < inner.top && inner.top < outer.bottom;\n const isBottomInside = outer.top < inner.bottom && inner.bottom < outer.bottom;\n return (isInsideLeftAndRight(outer, inner) && (isTopInside || isBottomInside));\n }\n /* istanbul ignore next */\n return false;\n }\n else {\n return isDraggedWithinThreshold;\n }\n }\n}\n\nclass CalendarResizeHelper {\n constructor(resizeContainerElement, minWidth, rtl) {\n this.resizeContainerElement = resizeContainerElement;\n this.minWidth = minWidth;\n this.rtl = rtl;\n }\n validateResize({ rectangle, edges }) {\n if (this.rtl) {\n // TODO - find a way of testing this, for some reason the tests always fail but it does actually work\n /* istanbul ignore next */\n if (typeof edges.left !== 'undefined') {\n rectangle.left -= edges.left;\n rectangle.right += edges.left;\n }\n else if (typeof edges.right !== 'undefined') {\n rectangle.left += edges.right;\n rectangle.right -= edges.right;\n }\n rectangle.width = rectangle.right - rectangle.left;\n }\n if (this.minWidth &&\n Math.ceil(rectangle.width) < Math.ceil(this.minWidth)) {\n return false;\n }\n return isInside(this.resizeContainerElement.getBoundingClientRect(), rectangle);\n }\n}\n\nclass CalendarWeekViewHeaderComponent {\n constructor() {\n this.dayHeaderClicked = new EventEmitter();\n this.eventDropped = new EventEmitter();\n this.dragEnter = new EventEmitter();\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n }\n}\nCalendarWeekViewHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekViewHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCalendarWeekViewHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarWeekViewHeaderComponent, selector: \"mwl-calendar-week-view-header\", inputs: { days: \"days\", locale: \"locale\", customTemplate: \"customTemplate\" }, outputs: { dayHeaderClicked: \"dayHeaderClicked\", eventDropped: \"eventDropped\", dragEnter: \"dragEnter\" }, ngImport: i0, template: `\n <ng-template\n #defaultTemplate\n let-days=\"days\"\n let-locale=\"locale\"\n let-dayHeaderClicked=\"dayHeaderClicked\"\n let-eventDropped=\"eventDropped\"\n let-trackByWeekDayHeaderDate=\"trackByWeekDayHeaderDate\"\n let-dragEnter=\"dragEnter\"\n >\n <div class=\"cal-day-headers\" role=\"row\">\n <div\n class=\"cal-header\"\n *ngFor=\"let day of days; trackBy: trackByWeekDayHeaderDate\"\n [class.cal-past]=\"day.isPast\"\n [class.cal-today]=\"day.isToday\"\n [class.cal-future]=\"day.isFuture\"\n [class.cal-weekend]=\"day.isWeekend\"\n [ngClass]=\"day.cssClass\"\n (mwlClick)=\"dayHeaderClicked.emit({ day: day, sourceEvent: $event })\"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"\n eventDropped.emit({\n event: $event.dropData.event,\n newStart: day.date\n })\n \"\n (dragEnter)=\"dragEnter.emit({ date: day.date })\"\n tabindex=\"0\"\n role=\"columnheader\"\n >\n <b>{{ day.date | calendarDate : 'weekViewColumnHeader' : locale }}</b\n ><br />\n <span>{{\n day.date | calendarDate : 'weekViewColumnSubHeader' : locale\n }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n days: days,\n locale: locale,\n dayHeaderClicked: dayHeaderClicked,\n eventDropped: eventDropped,\n dragEnter: dragEnter,\n trackByWeekDayHeaderDate: trackByWeekDayHeaderDate\n }\"\n >\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i2.DroppableDirective, selector: \"[mwlDroppable]\", inputs: [\"dragOverClass\", \"dragActiveClass\", \"validateDrop\"], outputs: [\"dragEnter\", \"dragLeave\", \"dragOver\", \"drop\"] }, { kind: \"directive\", type: ClickDirective, selector: \"[mwlClick]\", inputs: [\"clickListenerDisabled\"], outputs: [\"mwlClick\"] }, { kind: \"pipe\", type: CalendarDatePipe, name: \"calendarDate\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekViewHeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view-header',\n template: `\n <ng-template\n #defaultTemplate\n let-days=\"days\"\n let-locale=\"locale\"\n let-dayHeaderClicked=\"dayHeaderClicked\"\n let-eventDropped=\"eventDropped\"\n let-trackByWeekDayHeaderDate=\"trackByWeekDayHeaderDate\"\n let-dragEnter=\"dragEnter\"\n >\n <div class=\"cal-day-headers\" role=\"row\">\n <div\n class=\"cal-header\"\n *ngFor=\"let day of days; trackBy: trackByWeekDayHeaderDate\"\n [class.cal-past]=\"day.isPast\"\n [class.cal-today]=\"day.isToday\"\n [class.cal-future]=\"day.isFuture\"\n [class.cal-weekend]=\"day.isWeekend\"\n [ngClass]=\"day.cssClass\"\n (mwlClick)=\"dayHeaderClicked.emit({ day: day, sourceEvent: $event })\"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"\n eventDropped.emit({\n event: $event.dropData.event,\n newStart: day.date\n })\n \"\n (dragEnter)=\"dragEnter.emit({ date: day.date })\"\n tabindex=\"0\"\n role=\"columnheader\"\n >\n <b>{{ day.date | calendarDate : 'weekViewColumnHeader' : locale }}</b\n ><br />\n <span>{{\n day.date | calendarDate : 'weekViewColumnSubHeader' : locale\n }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n days: days,\n locale: locale,\n dayHeaderClicked: dayHeaderClicked,\n eventDropped: eventDropped,\n dragEnter: dragEnter,\n trackByWeekDayHeaderDate: trackByWeekDayHeaderDate\n }\"\n >\n </ng-template>\n `,\n }]\n }], propDecorators: { days: [{\n type: Input\n }], locale: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], dayHeaderClicked: [{\n type: Output\n }], eventDropped: [{\n type: Output\n }], dragEnter: [{\n type: Output\n }] } });\n\nclass CalendarWeekViewEventComponent {\n constructor() {\n this.eventClicked = new EventEmitter();\n }\n}\nCalendarWeekViewEventComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekViewEventComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCalendarWeekViewEventComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarWeekViewEventComponent, selector: \"mwl-calendar-week-view-event\", inputs: { locale: \"locale\", weekEvent: \"weekEvent\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipDisabled: \"tooltipDisabled\", tooltipDelay: \"tooltipDelay\", customTemplate: \"customTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", tooltipTemplate: \"tooltipTemplate\", column: \"column\", daysInWeek: \"daysInWeek\" }, outputs: { eventClicked: \"eventClicked\" }, ngImport: i0, template: `\n <ng-template\n #defaultTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [ngStyle]=\"{\n color: weekEvent.event.color?.secondaryText,\n backgroundColor: weekEvent.event.color?.secondary,\n borderColor: weekEvent.event.color?.primary\n }\"\n [mwlCalendarTooltip]=\"\n !tooltipDisabled\n ? (weekEvent.event.title\n | calendarEventTitle\n : (daysInWeek === 1 ? 'dayTooltip' : 'weekTooltip')\n : weekEvent.tempEvent || weekEvent.event)\n : ''\n \"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale }\n | calendarA11y : 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventActionsTemplate\"\n >\n </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n weekEvent: weekEvent,\n tooltipPlacement: tooltipPlacement,\n eventClicked: eventClicked,\n tooltipTemplate: tooltipTemplate,\n tooltipAppendToBody: tooltipAppendToBody,\n tooltipDisabled: tooltipDisabled,\n tooltipDelay: tooltipDelay,\n column: column,\n daysInWeek: daysInWeek\n }\"\n >\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: CalendarEventActionsComponent, selector: \"mwl-calendar-event-actions\", inputs: [\"event\", \"customTemplate\"] }, { kind: \"component\", type: CalendarEventTitleComponent, selector: \"mwl-calendar-event-title\", inputs: [\"event\", \"customTemplate\", \"view\"] }, { kind: \"directive\", type: CalendarTooltipDirective, selector: \"[mwlCalendarTooltip]\", inputs: [\"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipEvent\", \"tooltipAppendToBody\", \"tooltipDelay\"] }, { kind: \"directive\", type: ClickDirective, selector: \"[mwlClick]\", inputs: [\"clickListenerDisabled\"], outputs: [\"mwlClick\"] }, { kind: \"directive\", type: KeydownEnterDirective, selector: \"[mwlKeydownEnter]\", outputs: [\"mwlKeydownEnter\"] }, { kind: \"pipe\", type: CalendarEventTitlePipe, name: \"calendarEventTitle\" }, { kind: \"pipe\", type: CalendarA11yPipe, name: \"calendarA11y\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekViewEventComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view-event',\n template: `\n <ng-template\n #defaultTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [ngStyle]=\"{\n color: weekEvent.event.color?.secondaryText,\n backgroundColor: weekEvent.event.color?.secondary,\n borderColor: weekEvent.event.color?.primary\n }\"\n [mwlCalendarTooltip]=\"\n !tooltipDisabled\n ? (weekEvent.event.title\n | calendarEventTitle\n : (daysInWeek === 1 ? 'dayTooltip' : 'weekTooltip')\n : weekEvent.tempEvent || weekEvent.event)\n : ''\n \"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale }\n | calendarA11y : 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventActionsTemplate\"\n >\n </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n weekEvent: weekEvent,\n tooltipPlacement: tooltipPlacement,\n eventClicked: eventClicked,\n tooltipTemplate: tooltipTemplate,\n tooltipAppendToBody: tooltipAppendToBody,\n tooltipDisabled: tooltipDisabled,\n tooltipDelay: tooltipDelay,\n column: column,\n daysInWeek: daysInWeek\n }\"\n >\n </ng-template>\n `,\n }]\n }], propDecorators: { locale: [{\n type: Input\n }], weekEvent: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipDelay: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], column: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }], eventClicked: [{\n type: Output\n }] } });\n\nclass CalendarWeekViewHourSegmentComponent {\n}\nCalendarWeekViewHourSegmentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekViewHourSegmentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCalendarWeekViewHourSegmentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarWeekViewHourSegmentComponent, selector: \"mwl-calendar-week-view-hour-segment\", inputs: { segment: \"segment\", segmentHeight: \"segmentHeight\", locale: \"locale\", isTimeLabel: \"isTimeLabel\", daysInWeek: \"daysInWeek\", customTemplate: \"customTemplate\" }, ngImport: i0, template: `\n <ng-template\n #defaultTemplate\n let-segment=\"segment\"\n let-locale=\"locale\"\n let-segmentHeight=\"segmentHeight\"\n let-isTimeLabel=\"isTimeLabel\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n [attr.aria-hidden]=\"\n {}\n | calendarA11y\n : (daysInWeek === 1\n ? 'hideDayHourSegment'\n : 'hideWeekHourSegment')\n \"\n class=\"cal-hour-segment\"\n [style.height.px]=\"segmentHeight\"\n [class.cal-hour-start]=\"segment.isStart\"\n [class.cal-after-hour-start]=\"!segment.isStart\"\n [ngClass]=\"segment.cssClass\"\n >\n <div class=\"cal-time\" *ngIf=\"isTimeLabel\">\n {{\n segment.displayDate\n | calendarDate\n : (daysInWeek === 1 ? 'dayViewHour' : 'weekViewHour')\n : locale\n }}\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n segment: segment,\n locale: locale,\n segmentHeight: segmentHeight,\n isTimeLabel: isTimeLabel,\n daysInWeek: daysInWeek\n }\"\n >\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: CalendarDatePipe, name: \"calendarDate\" }, { kind: \"pipe\", type: CalendarA11yPipe, name: \"calendarA11y\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekViewHourSegmentComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view-hour-segment',\n template: `\n <ng-template\n #defaultTemplate\n let-segment=\"segment\"\n let-locale=\"locale\"\n let-segmentHeight=\"segmentHeight\"\n let-isTimeLabel=\"isTimeLabel\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n [attr.aria-hidden]=\"\n {}\n | calendarA11y\n : (daysInWeek === 1\n ? 'hideDayHourSegment'\n : 'hideWeekHourSegment')\n \"\n class=\"cal-hour-segment\"\n [style.height.px]=\"segmentHeight\"\n [class.cal-hour-start]=\"segment.isStart\"\n [class.cal-after-hour-start]=\"!segment.isStart\"\n [ngClass]=\"segment.cssClass\"\n >\n <div class=\"cal-time\" *ngIf=\"isTimeLabel\">\n {{\n segment.displayDate\n | calendarDate\n : (daysInWeek === 1 ? 'dayViewHour' : 'weekViewHour')\n : locale\n }}\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n segment: segment,\n locale: locale,\n segmentHeight: segmentHeight,\n isTimeLabel: isTimeLabel,\n daysInWeek: daysInWeek\n }\"\n >\n </ng-template>\n `,\n }]\n }], propDecorators: { segment: [{\n type: Input\n }], segmentHeight: [{\n type: Input\n }], locale: [{\n type: Input\n }], isTimeLabel: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] } });\n\nclass CalendarWeekViewCurrentTimeMarkerComponent {\n constructor(dateAdapter, zone) {\n this.dateAdapter = dateAdapter;\n this.zone = zone;\n this.columnDate$ = new BehaviorSubject(undefined);\n this.marker$ = this.zone.onStable.pipe(switchMap(() => interval(60 * 1000)), startWith(0), switchMapTo(this.columnDate$), map((columnDate) => {\n const startOfDay = this.dateAdapter.setMinutes(this.dateAdapter.setHours(columnDate, this.dayStartHour), this.dayStartMinute);\n const endOfDay = this.dateAdapter.setMinutes(this.dateAdapter.setHours(columnDate, this.dayEndHour), this.dayEndMinute);\n const hourHeightModifier = (this.hourSegments * this.hourSegmentHeight) /\n (this.hourDuration || 60);\n const now = new Date();\n return {\n isVisible: this.dateAdapter.isSameDay(columnDate, now) &&\n now >= startOfDay &&\n now <= endOfDay,\n top: this.dateAdapter.differenceInMinutes(now, startOfDay) *\n hourHeightModifier,\n };\n }));\n }\n ngOnChanges(changes) {\n if (changes.columnDate) {\n this.columnDate$.next(changes.columnDate.currentValue);\n }\n }\n}\nCalendarWeekViewCurrentTimeMarkerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekViewCurrentTimeMarkerComponent, deps: [{ token: DateAdapter }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nCalendarWeekViewCurrentTimeMarkerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarWeekViewCurrentTimeMarkerComponent, selector: \"mwl-calendar-week-view-current-time-marker\", inputs: { columnDate: \"columnDate\", dayStartHour: \"dayStartHour\", dayStartMinute: \"dayStartMinute\", dayEndHour: \"dayEndHour\", dayEndMinute: \"dayEndMinute\", hourSegments: \"hourSegments\", hourDuration: \"hourDuration\", hourSegmentHeight: \"hourSegmentHeight\", customTemplate: \"customTemplate\" }, usesOnChanges: true, ngImport: i0, template: `\n <ng-template\n #defaultTemplate\n let-columnDate=\"columnDate\"\n let-dayStartHour=\"dayStartHour\"\n let-dayStartMinute=\"dayStartMinute\"\n let-dayEndHour=\"dayEndHour\"\n let-dayEndMinute=\"dayEndMinute\"\n let-isVisible=\"isVisible\"\n let-topPx=\"topPx\"\n >\n <div\n class=\"cal-current-time-marker\"\n *ngIf=\"isVisible\"\n [style.top.px]=\"topPx\"\n ></div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n columnDate: columnDate,\n dayStartHour: dayStartHour,\n dayStartMinute: dayStartMinute,\n dayEndHour: dayEndHour,\n dayEndMinute: dayEndMinute,\n isVisible: (marker$ | async)?.isVisible,\n topPx: (marker$ | async)?.top\n }\"\n >\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekViewCurrentTimeMarkerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view-current-time-marker',\n template: `\n <ng-template\n #defaultTemplate\n let-columnDate=\"columnDate\"\n let-dayStartHour=\"dayStartHour\"\n let-dayStartMinute=\"dayStartMinute\"\n let-dayEndHour=\"dayEndHour\"\n let-dayEndMinute=\"dayEndMinute\"\n let-isVisible=\"isVisible\"\n let-topPx=\"topPx\"\n >\n <div\n class=\"cal-current-time-marker\"\n *ngIf=\"isVisible\"\n [style.top.px]=\"topPx\"\n ></div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n columnDate: columnDate,\n dayStartHour: dayStartHour,\n dayStartMinute: dayStartMinute,\n dayEndHour: dayEndHour,\n dayEndMinute: dayEndMinute,\n isVisible: (marker$ | async)?.isVisible,\n topPx: (marker$ | async)?.top\n }\"\n >\n </ng-template>\n `,\n }]\n }], ctorParameters: function () { return [{ type: DateAdapter }, { type: i0.NgZone }]; }, propDecorators: { columnDate: [{\n type: Input\n }], dayStartHour: [{\n type: Input\n }], dayStartMinute: [{\n type: Input\n }], dayEndHour: [{\n type: Input\n }], dayEndMinute: [{\n type: Input\n }], hourSegments: [{\n type: Input\n }], hourDuration: [{\n type: Input\n }], hourSegmentHeight: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] } });\n\n/**\n * Shows all events on a given week. Example usage:\n *\n * ```typescript\n * <mwl-calendar-week-view\n * [viewDate]=\"viewDate\"\n * [events]=\"events\">\n * </mwl-calendar-week-view>\n * ```\n */\nclass CalendarWeekViewComponent {\n /**\n * @hidden\n */\n constructor(cdr, utils, locale, dateAdapter, element) {\n this.cdr = cdr;\n this.utils = utils;\n this.dateAdapter = dateAdapter;\n this.element = element;\n /**\n * An array of events to display on view\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n */\n this.excludeDays = [];\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n this.tooltipDelay = null;\n /**\n * The precision to display events.\n * `days` will round event start and end dates to the nearest day and `minutes` will not do this rounding\n */\n this.precision = 'days';\n /**\n * Whether to snap events to a grid when dragging\n */\n this.snapDraggedEvents = true;\n /**\n * The number of segments in an hour. Must divide equally into 60.\n */\n this.hourSegments = 2;\n /**\n * The height in pixels of each hour segment\n */\n this.hourSegmentHeight = 30;\n /**\n * The minimum height in pixels of each event\n */\n this.minimumEventHeight = 30;\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n this.dayStartHour = 0;\n /**\n * The day start minutes. Must be 0-59\n */\n this.dayStartMinute = 0;\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n this.dayEndHour = 23;\n /**\n * The day end minutes. Must be 0-59\n */\n this.dayEndMinute = 59;\n /**\n * Called when a header week day is clicked. Adding a `cssClass` property on `$event.day` will add that class to the header element\n */\n this.dayHeaderClicked = new EventEmitter();\n /**\n * Called when an event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when an event is resized or dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * An output that will be called before the view is rendered for the current week.\n * If you add the `cssClass` property to a day in the header it will add that class to the cell element in the template\n */\n this.beforeViewRender = new EventEmitter();\n /**\n * Called when an hour segment is clicked\n */\n this.hourSegmentClicked = new EventEmitter();\n /**\n * @hidden\n */\n this.allDayEventResizes = new Map();\n /**\n * @hidden\n */\n this.timeEventResizes = new Map();\n /**\n * @hidden\n */\n this.eventDragEnterByType = {\n allDay: 0,\n time: 0,\n };\n /**\n * @hidden\n */\n this.dragActive = false;\n /**\n * @hidden\n */\n this.dragAlreadyMoved = false;\n /**\n * @hidden\n */\n this.calendarId = Symbol('angular calendar week view id');\n /**\n * @hidden\n */\n this.rtl = false;\n /**\n * @hidden\n */\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n /**\n * @hidden\n */\n this.trackByHourSegment = trackByHourSegment;\n /**\n * @hidden\n */\n this.trackByHour = trackByHour;\n /**\n * @hidden\n */\n this.trackByWeekAllDayEvent = trackByWeekAllDayEvent;\n /**\n * @hidden\n */\n this.trackByWeekTimeEvent = trackByWeekTimeEvent;\n /**\n * @hidden\n */\n this.trackByHourColumn = (index, column) => column.hours[0] ? column.hours[0].segments[0].date.toISOString() : column;\n /**\n * @hidden\n */\n this.trackById = (index, row) => row.id;\n this.locale = locale;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.markForCheck();\n });\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n const refreshHeader = changes.viewDate ||\n changes.excludeDays ||\n changes.weekendDays ||\n changes.daysInWeek ||\n changes.weekStartsOn;\n const refreshBody = changes.viewDate ||\n changes.dayStartHour ||\n changes.dayStartMinute ||\n changes.dayEndHour ||\n changes.dayEndMinute ||\n changes.hourSegments ||\n changes.hourDuration ||\n changes.weekStartsOn ||\n changes.weekendDays ||\n changes.excludeDays ||\n changes.hourSegmentHeight ||\n changes.events ||\n changes.daysInWeek ||\n changes.minimumEventHeight;\n if (refreshHeader) {\n this.refreshHeader();\n }\n if (changes.events) {\n validateEvents(this.events);\n }\n if (refreshBody) {\n this.refreshBody();\n }\n if (refreshHeader || refreshBody) {\n this.emitBeforeViewRender();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.rtl =\n typeof window !== 'undefined' &&\n getComputedStyle(this.element.nativeElement).direction === 'rtl';\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n timeEventResizeStarted(eventsContainer, timeEvent, resizeEvent) {\n this.timeEventResizes.set(timeEvent.event, resizeEvent);\n this.resizeStarted(eventsContainer, timeEvent);\n }\n /**\n * @hidden\n */\n timeEventResizing(timeEvent, resizeEvent) {\n this.timeEventResizes.set(timeEvent.event, resizeEvent);\n const adjustedEvents = new Map();\n const tempEvents = [...this.events];\n this.timeEventResizes.forEach((lastResizeEvent, event) => {\n const newEventDates = this.getTimeEventResizedDates(event, lastResizeEvent);\n const adjustedEvent = { ...event, ...newEventDates };\n adjustedEvents.set(adjustedEvent, event);\n const eventIndex = tempEvents.indexOf(event);\n tempEvents[eventIndex] = adjustedEvent;\n });\n this.restoreOriginalEvents(tempEvents, adjustedEvents, true);\n }\n /**\n * @hidden\n */\n timeEventResizeEnded(timeEvent) {\n this.view = this.getWeekView(this.events);\n const lastResizeEvent = this.timeEventResizes.get(timeEvent.event);\n if (lastResizeEvent) {\n this.timeEventResizes.delete(timeEvent.event);\n const newEventDates = this.getTimeEventResizedDates(timeEvent.event, lastResizeEvent);\n this.eventTimesChanged.emit({\n newStart: newEventDates.start,\n newEnd: newEventDates.end,\n event: timeEvent.event,\n type: CalendarEventTimesChangedEventType.Resize,\n });\n }\n }\n /**\n * @hidden\n */\n allDayEventResizeStarted(allDayEventsContainer, allDayEvent, resizeEvent) {\n this.allDayEventResizes.set(allDayEvent, {\n originalOffset: allDayEvent.offset,\n originalSpan: allDayEvent.span,\n edge: typeof resizeEvent.edges.left !== 'undefined' ? 'left' : 'right',\n });\n this.resizeStarted(allDayEventsContainer, allDayEvent, this.getDayColumnWidth(allDayEventsContainer));\n }\n /**\n * @hidden\n */\n allDayEventResizing(allDayEvent, resizeEvent, dayWidth) {\n const currentResize = this.allDayEventResizes.get(allDayEvent);\n const modifier = this.rtl ? -1 : 1;\n if (typeof resizeEvent.edges.left !== 'undefined') {\n const diff = Math.round(+resizeEvent.edges.left / dayWidth) * modifier;\n allDayEvent.offset = currentResize.originalOffset + diff;\n allDayEvent.span = currentResize.originalSpan - diff;\n }\n else if (typeof resizeEvent.edges.right !== 'undefined') {\n const diff = Math.round(+resizeEvent.edges.right / dayWidth) * modifier;\n allDayEvent.span = currentResize.originalSpan + diff;\n }\n }\n /**\n * @hidden\n */\n allDayEventResizeEnded(allDayEvent) {\n const currentResize = this.allDayEventResizes.get(allDayEvent);\n if (currentResize) {\n const allDayEventResizingBeforeStart = currentResize.edge === 'left';\n let daysDiff;\n if (allDayEventResizingBeforeStart) {\n daysDiff = allDayEvent.offset - currentResize.originalOffset;\n }\n else {\n daysDiff = allDayEvent.span - currentResize.originalSpan;\n }\n allDayEvent.offset = currentResize.originalOffset;\n allDayEvent.span = currentResize.originalSpan;\n const newDates = this.getAllDayEventResizedDates(allDayEvent.event, daysDiff, allDayEventResizingBeforeStart);\n this.eventTimesChanged.emit({\n newStart: newDates.start,\n newEnd: newDates.end,\n event: allDayEvent.event,\n type: CalendarEventTimesChangedEventType.Resize,\n });\n this.allDayEventResizes.delete(allDayEvent);\n }\n }\n /**\n * @hidden\n */\n getDayColumnWidth(eventRowContainer) {\n return Math.floor(eventRowContainer.offsetWidth / this.days.length);\n }\n /**\n * @hidden\n */\n dateDragEnter(date) {\n this.lastDragEnterDate = date;\n }\n /**\n * @hidden\n */\n eventDropped(dropEvent, date, allDay) {\n if (shouldFireDroppedEvent(dropEvent, date, allDay, this.calendarId) &&\n this.lastDragEnterDate.getTime() === date.getTime() &&\n (!this.snapDraggedEvents ||\n dropEvent.dropData.event !== this.lastDraggedEvent)) {\n this.eventTimesChanged.emit({\n type: CalendarEventTimesChangedEventType.Drop,\n event: dropEvent.dropData.event,\n newStart: date,\n allDay,\n });\n }\n this.lastDraggedEvent = null;\n }\n /**\n * @hidden\n */\n dragEnter(type) {\n this.eventDragEnterByType[type]++;\n }\n /**\n * @hidden\n */\n dragLeave(type) {\n this.eventDragEnterByType[type]--;\n }\n /**\n * @hidden\n */\n dragStarted(eventsContainerElement, eventElement, event, useY) {\n this.dayColumnWidth = this.getDayColumnWidth(eventsContainerElement);\n const dragHelper = new CalendarDragHelper(eventsContainerElement, eventElement);\n this.validateDrag = ({ x, y, transform }) => {\n const isAllowed = this.allDayEventResizes.size === 0 &&\n this.timeEventResizes.size === 0 &&\n dragHelper.validateDrag({\n x,\n y,\n snapDraggedEvents: this.snapDraggedEvents,\n dragAlreadyMoved: this.dragAlreadyMoved,\n transform,\n });\n if (isAllowed && this.validateEventTimesChanged) {\n const newEventTimes = this.getDragMovedEventTimes(event, { x, y }, this.dayColumnWidth, useY);\n return this.validateEventTimesChanged({\n type: CalendarEventTimesChangedEventType.Drag,\n event: event.event,\n newStart: newEventTimes.start,\n newEnd: newEventTimes.end,\n });\n }\n return isAllowed;\n };\n this.dragActive = true;\n this.dragAlreadyMoved = false;\n this.lastDraggedEvent = null;\n this.eventDragEnterByType = {\n allDay: 0,\n time: 0,\n };\n if (!this.snapDraggedEvents && useY) {\n this.view.hourColumns.forEach((column) => {\n const linkedEvent = column.events.find((columnEvent) => columnEvent.event === event.event && columnEvent !== event);\n // hide any linked events while dragging\n if (linkedEvent) {\n linkedEvent.width = 0;\n linkedEvent.height = 0;\n }\n });\n }\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n dragMove(dayEvent, dragEvent) {\n const newEventTimes = this.getDragMovedEventTimes(dayEvent, dragEvent, this.dayColumnWidth, true);\n const originalEvent = dayEvent.event;\n const adjustedEvent = { ...originalEvent, ...newEventTimes };\n const tempEvents = this.events.map((event) => {\n if (event === originalEvent) {\n return adjustedEvent;\n }\n return event;\n });\n this.restoreOriginalEvents(tempEvents, new Map([[adjustedEvent, originalEvent]]), this.snapDraggedEvents);\n this.dragAlreadyMoved = true;\n }\n /**\n * @hidden\n */\n allDayEventDragMove() {\n this.dragAlreadyMoved = true;\n }\n /**\n * @hidden\n */\n dragEnded(weekEvent, dragEndEvent, dayWidth, useY = false) {\n this.view = this.getWeekView(this.events);\n this.dragActive = false;\n this.validateDrag = null;\n const { start, end } = this.getDragMovedEventTimes(weekEvent, dragEndEvent, dayWidth, useY);\n if ((this.snapDraggedEvents ||\n this.eventDragEnterByType[useY ? 'time' : 'allDay'] > 0) &&\n isDraggedWithinPeriod(start, end, this.view.period)) {\n this.lastDraggedEvent = weekEvent.event;\n this.eventTimesChanged.emit({\n newStart: start,\n newEnd: end,\n event: weekEvent.event,\n type: CalendarEventTimesChangedEventType.Drag,\n allDay: !useY,\n });\n }\n }\n refreshHeader() {\n this.days = this.utils.getWeekViewHeader({\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays,\n ...getWeekViewPeriod(this.dateAdapter, this.viewDate, this.weekStartsOn, this.excludeDays, this.daysInWeek),\n });\n }\n refreshBody() {\n this.view = this.getWeekView(this.events);\n }\n refreshAll() {\n this.refreshHeader();\n this.refreshBody();\n this.emitBeforeViewRender();\n }\n emitBeforeViewRender() {\n if (this.days && this.view) {\n this.beforeViewRender.emit({\n header: this.days,\n ...this.view,\n });\n }\n }\n getWeekView(events) {\n return this.utils.getWeekView({\n events,\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n precision: this.precision,\n absolutePositionedEvents: true,\n hourSegments: this.hourSegments,\n hourDuration: this.hourDuration,\n dayStart: {\n hour: this.dayStartHour,\n minute: this.dayStartMinute,\n },\n dayEnd: {\n hour: this.dayEndHour,\n minute: this.dayEndMinute,\n },\n segmentHeight: this.hourSegmentHeight,\n weekendDays: this.weekendDays,\n minimumEventHeight: this.minimumEventHeight,\n ...getWeekViewPeriod(this.dateAdapter, this.viewDate, this.weekStartsOn, this.excludeDays, this.daysInWeek),\n });\n }\n getDragMovedEventTimes(weekEvent, dragEndEvent, dayWidth, useY) {\n const daysDragged = (roundToNearest(dragEndEvent.x, dayWidth) / dayWidth) *\n (this.rtl ? -1 : 1);\n const minutesMoved = useY\n ? getMinutesMoved(dragEndEvent.y, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize, this.hourDuration)\n : 0;\n const start = this.dateAdapter.addMinutes(addDaysWithExclusions(this.dateAdapter, weekEvent.event.start, daysDragged, this.excludeDays), minutesMoved);\n let end;\n if (weekEvent.event.end) {\n end = this.dateAdapter.addMinutes(addDaysWithExclusions(this.dateAdapter, weekEvent.event.end, daysDragged, this.excludeDays), minutesMoved);\n }\n return { start, end };\n }\n restoreOriginalEvents(tempEvents, adjustedEvents, snapDraggedEvents = true) {\n const previousView = this.view;\n if (snapDraggedEvents) {\n this.view = this.getWeekView(tempEvents);\n }\n const adjustedEventsArray = tempEvents.filter((event) => adjustedEvents.has(event));\n this.view.hourColumns.forEach((column, columnIndex) => {\n previousView.hourColumns[columnIndex].hours.forEach((hour, hourIndex) => {\n hour.segments.forEach((segment, segmentIndex) => {\n column.hours[hourIndex].segments[segmentIndex].cssClass =\n segment.cssClass;\n });\n });\n adjustedEventsArray.forEach((adjustedEvent) => {\n const originalEvent = adjustedEvents.get(adjustedEvent);\n const existingColumnEvent = column.events.find((columnEvent) => columnEvent.event ===\n (snapDraggedEvents ? adjustedEvent : originalEvent));\n if (existingColumnEvent) {\n // restore the original event so trackBy kicks in and the dom isn't changed\n existingColumnEvent.event = originalEvent;\n existingColumnEvent['tempEvent'] = adjustedEvent;\n if (!snapDraggedEvents) {\n existingColumnEvent.height = 0;\n existingColumnEvent.width = 0;\n }\n }\n else {\n // add a dummy event to the drop so if the event was removed from the original column the drag doesn't end early\n const event = {\n event: originalEvent,\n left: 0,\n top: 0,\n height: 0,\n width: 0,\n startsBeforeDay: false,\n endsAfterDay: false,\n tempEvent: adjustedEvent,\n };\n column.events.push(event);\n }\n });\n });\n adjustedEvents.clear();\n }\n getTimeEventResizedDates(calendarEvent, resizeEvent) {\n const newEventDates = {\n start: calendarEvent.start,\n end: getDefaultEventEnd(this.dateAdapter, calendarEvent, this.minimumEventHeight),\n };\n const { end, ...eventWithoutEnd } = calendarEvent;\n const smallestResizes = {\n start: this.dateAdapter.addMinutes(newEventDates.end, this.minimumEventHeight * -1),\n end: getDefaultEventEnd(this.dateAdapter, eventWithoutEnd, this.minimumEventHeight),\n };\n const modifier = this.rtl ? -1 : 1;\n if (typeof resizeEvent.edges.left !== 'undefined') {\n const daysDiff = Math.round(+resizeEvent.edges.left / this.dayColumnWidth) * modifier;\n const newStart = addDaysWithExclusions(this.dateAdapter, newEventDates.start, daysDiff, this.excludeDays);\n if (newStart < smallestResizes.start) {\n newEventDates.start = newStart;\n }\n else {\n newEventDates.start = smallestResizes.start;\n }\n }\n else if (typeof resizeEvent.edges.right !== 'undefined') {\n const daysDiff = Math.round(+resizeEvent.edges.right / this.dayColumnWidth) * modifier;\n const newEnd = addDaysWithExclusions(this.dateAdapter, newEventDates.end, daysDiff, this.excludeDays);\n if (newEnd > smallestResizes.end) {\n newEventDates.end = newEnd;\n }\n else {\n newEventDates.end = smallestResizes.end;\n }\n }\n if (typeof resizeEvent.edges.top !== 'undefined') {\n const minutesMoved = getMinutesMoved(resizeEvent.edges.top, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize, this.hourDuration);\n const newStart = this.dateAdapter.addMinutes(newEventDates.start, minutesMoved);\n if (newStart < smallestResizes.start) {\n newEventDates.start = newStart;\n }\n else {\n newEventDates.start = smallestResizes.start;\n }\n }\n else if (typeof resizeEvent.edges.bottom !== 'undefined') {\n const minutesMoved = getMinutesMoved(resizeEvent.edges.bottom, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize, this.hourDuration);\n const newEnd = this.dateAdapter.addMinutes(newEventDates.end, minutesMoved);\n if (newEnd > smallestResizes.end) {\n newEventDates.end = newEnd;\n }\n else {\n newEventDates.end = smallestResizes.end;\n }\n }\n return newEventDates;\n }\n resizeStarted(eventsContainer, event, dayWidth) {\n this.dayColumnWidth = this.getDayColumnWidth(eventsContainer);\n const resizeHelper = new CalendarResizeHelper(eventsContainer, dayWidth, this.rtl);\n this.validateResize = ({ rectangle, edges }) => {\n const isWithinBoundary = resizeHelper.validateResize({\n rectangle: { ...rectangle },\n edges,\n });\n if (isWithinBoundary && this.validateEventTimesChanged) {\n let newEventDates;\n if (!dayWidth) {\n newEventDates = this.getTimeEventResizedDates(event.event, {\n rectangle,\n edges,\n });\n }\n else {\n const modifier = this.rtl ? -1 : 1;\n if (typeof edges.left !== 'undefined') {\n const diff = Math.round(+edges.left / dayWidth) * modifier;\n newEventDates = this.getAllDayEventResizedDates(event.event, diff, !this.rtl);\n }\n else {\n const diff = Math.round(+edges.right / dayWidth) * modifier;\n newEventDates = this.getAllDayEventResizedDates(event.event, diff, this.rtl);\n }\n }\n return this.validateEventTimesChanged({\n type: CalendarEventTimesChangedEventType.Resize,\n event: event.event,\n newStart: newEventDates.start,\n newEnd: newEventDates.end,\n });\n }\n return isWithinBoundary;\n };\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n getAllDayEventResizedDates(event, daysDiff, beforeStart) {\n let start = event.start;\n let end = event.end || event.start;\n if (beforeStart) {\n start = addDaysWithExclusions(this.dateAdapter, start, daysDiff, this.excludeDays);\n }\n else {\n end = addDaysWithExclusions(this.dateAdapter, end, daysDiff, this.excludeDays);\n }\n return { start, end };\n }\n}\nCalendarWeekViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekViewComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: CalendarUtils }, { token: LOCALE_ID }, { token: DateAdapter }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nCalendarWeekViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarWeekViewComponent, selector: \"mwl-calendar-week-view\", inputs: { viewDate: \"viewDate\", events: \"events\", excludeDays: \"excludeDays\", refresh: \"refresh\", locale: \"locale\", tooltipPlacement: \"tooltipPlacement\", tooltipTemplate: \"tooltipTemplate\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipDelay: \"tooltipDelay\", weekStartsOn: \"weekStartsOn\", headerTemplate: \"headerTemplate\", eventTemplate: \"eventTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", precision: \"precision\", weekendDays: \"weekendDays\", snapDraggedEvents: \"snapDraggedEvents\", hourSegments: \"hourSegments\", hourDuration: \"hourDuration\", hourSegmentHeight: \"hourSegmentHeight\", minimumEventHeight: \"minimumEventHeight\", dayStartHour: \"dayStartHour\", dayStartMinute: \"dayStartMinute\", dayEndHour: \"dayEndHour\", dayEndMinute: \"dayEndMinute\", hourSegmentTemplate: \"hourSegmentTemplate\", eventSnapSize: \"eventSnapSize\", allDayEventsLabelTemplate: \"allDayEventsLabelTemplate\", daysInWeek: \"daysInWeek\", currentTimeMarkerTemplate: \"currentTimeMarkerTemplate\", validateEventTimesChanged: \"validateEventTimesChanged\", resizeCursors: \"resizeCursors\" }, outputs: { dayHeaderClicked: \"dayHeaderClicked\", eventClicked: \"eventClicked\", eventTimesChanged: \"eventTimesChanged\", beforeViewRender: \"beforeViewRender\", hourSegmentClicked: \"hourSegmentClicked\" }, usesOnChanges: true, ngImport: i0, template: `\n <div class=\"cal-week-view\" role=\"grid\">\n <mwl-calendar-week-view-header\n [days]=\"days\"\n [locale]=\"locale\"\n [customTemplate]=\"headerTemplate\"\n (dayHeaderClicked)=\"dayHeaderClicked.emit($event)\"\n (eventDropped)=\"\n eventDropped({ dropData: $event }, $event.newStart, true)\n \"\n (dragEnter)=\"dateDragEnter($event.date)\"\n >\n </mwl-calendar-week-view-header>\n <div\n class=\"cal-all-day-events\"\n #allDayEventsContainer\n *ngIf=\"view.allDayEventRows.length > 0\"\n mwlDroppable\n (dragEnter)=\"dragEnter('allDay')\"\n (dragLeave)=\"dragLeave('allDay')\"\n >\n <div class=\"cal-day-columns\">\n <div class=\"cal-time-label-column\">\n <ng-container\n *ngTemplateOutlet=\"allDayEventsLabelTemplate\"\n ></ng-container>\n </div>\n <div\n class=\"cal-day-column\"\n *ngFor=\"let day of days; trackBy: trackByWeekDayHeaderDate\"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"eventDropped($event, day.date, true)\"\n (dragEnter)=\"dateDragEnter(day.date)\"\n ></div>\n </div>\n <div\n *ngFor=\"let eventRow of view.allDayEventRows; trackBy: trackById\"\n #eventRowContainer\n class=\"cal-events-row\"\n >\n <div\n *ngFor=\"\n let allDayEvent of eventRow.row;\n trackBy: trackByWeekAllDayEvent\n \"\n #event\n class=\"cal-event-container\"\n [class.cal-draggable]=\"\n allDayEvent.event.draggable && allDayEventResizes.size === 0\n \"\n [class.cal-starts-within-week]=\"!allDayEvent.startsBeforeWeek\"\n [class.cal-ends-within-week]=\"!allDayEvent.endsAfterWeek\"\n [ngClass]=\"allDayEvent.event?.cssClass\"\n [style.width.%]=\"(100 / days.length) * allDayEvent.span\"\n [style.marginLeft.%]=\"\n rtl ? null : (100 / days.length) * allDayEvent.offset\n \"\n [style.marginRight.%]=\"\n rtl ? (100 / days.length) * allDayEvent.offset : null\n \"\n mwlResizable\n [resizeCursors]=\"resizeCursors\"\n [resizeSnapGrid]=\"{ left: dayColumnWidth, right: dayColumnWidth }\"\n [validateResize]=\"validateResize\"\n (resizeStart)=\"\n allDayEventResizeStarted(eventRowContainer, allDayEvent, $event)\n \"\n (resizing)=\"\n allDayEventResizing(allDayEvent, $event, dayColumnWidth)\n \"\n (resizeEnd)=\"allDayEventResizeEnded(allDayEvent)\"\n mwlDraggable\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: allDayEvent.event, calendarId: calendarId }\"\n [dragAxis]=\"{\n x: allDayEvent.event.draggable && allDayEventResizes.size === 0,\n y:\n !snapDraggedEvents &&\n allDayEvent.event.draggable &&\n allDayEventResizes.size === 0\n }\"\n [dragSnapGrid]=\"snapDraggedEvents ? { x: dayColumnWidth } : {}\"\n [validateDrag]=\"validateDrag\"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n (dragStart)=\"\n dragStarted(eventRowContainer, event, allDayEvent, false)\n \"\n (dragging)=\"allDayEventDragMove()\"\n (dragEnd)=\"dragEnded(allDayEvent, $event, dayColumnWidth)\"\n >\n <div\n class=\"cal-resize-handle cal-resize-handle-before-start\"\n *ngIf=\"\n allDayEvent.event?.resizable?.beforeStart &&\n !allDayEvent.startsBeforeWeek\n \"\n mwlResizeHandle\n [resizeEdges]=\"{ left: true }\"\n ></div>\n <mwl-calendar-week-view-event\n [locale]=\"locale\"\n [weekEvent]=\"allDayEvent\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n [customTemplate]=\"eventTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n [daysInWeek]=\"daysInWeek\"\n (eventClicked)=\"\n eventClicked.emit({\n event: allDayEvent.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n >\n </mwl-calendar-week-view-event>\n <div\n class=\"cal-resize-handle cal-resize-handle-after-end\"\n *ngIf=\"\n allDayEvent.event?.resizable?.afterEnd &&\n !allDayEvent.endsAfterWeek\n \"\n mwlResizeHandle\n [resizeEdges]=\"{ right: true }\"\n ></div>\n </div>\n </div>\n </div>\n <div\n class=\"cal-time-events\"\n mwlDroppable\n (dragEnter)=\"dragEnter('time')\"\n (dragLeave)=\"dragLeave('time')\"\n >\n <div\n class=\"cal-time-label-column\"\n *ngIf=\"view.hourColumns.length > 0 && daysInWeek !== 1\"\n >\n <div\n *ngFor=\"\n let hour of view.hourColumns[0].hours;\n trackBy: trackByHour;\n let odd = odd\n \"\n class=\"cal-hour\"\n [class.cal-hour-odd]=\"odd\"\n >\n <mwl-calendar-week-view-hour-segment\n *ngFor=\"let segment of hour.segments; trackBy: trackByHourSegment\"\n [style.height.px]=\"hourSegmentHeight\"\n [segment]=\"segment\"\n [segmentHeight]=\"hourSegmentHeight\"\n [locale]=\"locale\"\n [customTemplate]=\"hourSegmentTemplate\"\n [isTimeLabel]=\"true\"\n [daysInWeek]=\"daysInWeek\"\n >\n </mwl-calendar-week-view-hour-segment>\n </div>\n </div>\n <div\n class=\"cal-day-columns\"\n [class.cal-resize-active]=\"timeEventResizes.size > 0\"\n #dayColumns\n >\n <div\n class=\"cal-day-column\"\n *ngFor=\"let column of view.hourColumns; trackBy: trackByHourColumn\"\n >\n <mwl-calendar-week-view-current-time-marker\n [columnDate]=\"column.date\"\n [dayStartHour]=\"dayStartHour\"\n [dayStartMinute]=\"dayStartMinute\"\n [dayEndHour]=\"dayEndHour\"\n [dayEndMinute]=\"dayEndMinute\"\n [hourSegments]=\"hourSegments\"\n [hourDuration]=\"hourDuration\"\n [hourSegmentHeight]=\"hourSegmentHeight\"\n [customTemplate]=\"currentTimeMarkerTemplate\"\n ></mwl-calendar-week-view-current-time-marker>\n <div class=\"cal-events-container\">\n <div\n *ngFor=\"\n let timeEvent of column.events;\n trackBy: trackByWeekTimeEvent\n \"\n #event\n class=\"cal-event-container\"\n [class.cal-draggable]=\"\n timeEvent.event.draggable && timeEventResizes.size === 0\n \"\n [class.cal-starts-within-day]=\"!timeEvent.startsBeforeDay\"\n [class.cal-ends-within-day]=\"!timeEvent.endsAfterDay\"\n [ngClass]=\"timeEvent.event.cssClass\"\n [hidden]=\"timeEvent.height === 0 && timeEvent.width === 0\"\n [style.top.px]=\"timeEvent.top\"\n [style.height.px]=\"timeEvent.height\"\n [style.left.%]=\"timeEvent.left\"\n [style.width.%]=\"timeEvent.width\"\n mwlResizable\n [resizeCursors]=\"resizeCursors\"\n [resizeSnapGrid]=\"{\n left: dayColumnWidth,\n right: dayColumnWidth,\n top: eventSnapSize || hourSegmentHeight,\n bottom: eventSnapSize || hourSegmentHeight\n }\"\n [validateResize]=\"validateResize\"\n [allowNegativeResizes]=\"true\"\n (resizeStart)=\"\n timeEventResizeStarted(dayColumns, timeEvent, $event)\n \"\n (resizing)=\"timeEventResizing(timeEvent, $event)\"\n (resizeEnd)=\"timeEventResizeEnded(timeEvent)\"\n mwlDraggable\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: timeEvent.event, calendarId: calendarId }\"\n [dragAxis]=\"{\n x: timeEvent.event.draggable && timeEventResizes.size === 0,\n y: timeEvent.event.draggable && timeEventResizes.size === 0\n }\"\n [dragSnapGrid]=\"\n snapDraggedEvents\n ? {\n x: dayColumnWidth,\n y: eventSnapSize || hourSegmentHeight\n }\n : {}\n \"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n [ghostDragEnabled]=\"!snapDraggedEvents\"\n [ghostElementTemplate]=\"weekEventTemplate\"\n [validateDrag]=\"validateDrag\"\n (dragStart)=\"dragStarted(dayColumns, event, timeEvent, true)\"\n (dragging)=\"dragMove(timeEvent, $event)\"\n (dragEnd)=\"dragEnded(timeEvent, $event, dayColumnWidth, true)\"\n >\n <div\n class=\"cal-resize-handle cal-resize-handle-before-start\"\n *ngIf=\"\n timeEvent.event?.resizable?.beforeStart &&\n !timeEvent.startsBeforeDay\n \"\n mwlResizeHandle\n [resizeEdges]=\"{\n left: true,\n top: true\n }\"\n ></div>\n <ng-template\n [ngTemplateOutlet]=\"weekEventTemplate\"\n ></ng-template>\n <ng-template #weekEventTemplate>\n <mwl-calendar-week-view-event\n [locale]=\"locale\"\n [weekEvent]=\"timeEvent\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDisabled]=\"dragActive || timeEventResizes.size > 0\"\n [tooltipDelay]=\"tooltipDelay\"\n [customTemplate]=\"eventTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n [column]=\"column\"\n [daysInWeek]=\"daysInWeek\"\n (eventClicked)=\"\n eventClicked.emit({\n event: timeEvent.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n >\n </mwl-calendar-week-view-event>\n </ng-template>\n <div\n class=\"cal-resize-handle cal-resize-handle-after-end\"\n *ngIf=\"\n timeEvent.event?.resizable?.afterEnd &&\n !timeEvent.endsAfterDay\n \"\n mwlResizeHandle\n [resizeEdges]=\"{\n right: true,\n bottom: true\n }\"\n ></div>\n </div>\n </div>\n\n <div\n *ngFor=\"\n let hour of column.hours;\n trackBy: trackByHour;\n let odd = odd\n \"\n class=\"cal-hour\"\n [class.cal-hour-odd]=\"odd\"\n >\n <mwl-calendar-week-view-hour-segment\n *ngFor=\"\n let segment of hour.segments;\n trackBy: trackByHourSegment\n \"\n [style.height.px]=\"hourSegmentHeight\"\n [segment]=\"segment\"\n [segmentHeight]=\"hourSegmentHeight\"\n [locale]=\"locale\"\n [customTemplate]=\"hourSegmentTemplate\"\n [daysInWeek]=\"daysInWeek\"\n (mwlClick)=\"\n hourSegmentClicked.emit({\n date: segment.date,\n sourceEvent: $event\n })\n \"\n [clickListenerDisabled]=\"\n hourSegmentClicked.observers.length === 0\n \"\n mwlDroppable\n [dragOverClass]=\"\n !dragActive || !snapDraggedEvents ? 'cal-drag-over' : null\n \"\n dragActiveClass=\"cal-drag-active\"\n (drop)=\"eventDropped($event, segment.date, false)\"\n (dragEnter)=\"dateDragEnter(segment.date)\"\n [isTimeLabel]=\"daysInWeek === 1\"\n >\n </mwl-calendar-week-view-hour-segment>\n </div>\n </div>\n </div>\n </div>\n </div>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i4.ResizableDirective, selector: \"[mwlResizable]\", inputs: [\"validateResize\", \"enableGhostResize\", \"resizeSnapGrid\", \"resizeCursors\", \"ghostElementPositioning\", \"allowNegativeResizes\", \"mouseMoveThrottleMS\"], outputs: [\"resizeStart\", \"resizing\", \"resizeEnd\"], exportAs: [\"mwlResizable\"] }, { kind: \"directive\", type: i4.ResizeHandleDirective, selector: \"[mwlResizeHandle]\", inputs: [\"resizeEdges\", \"resizableContainer\"] }, { kind: \"directive\", type: i2.DraggableDirective, selector: \"[mwlDraggable]\", inputs: [\"dropData\", \"dragAxis\", \"dragSnapGrid\", \"ghostDragEnabled\", \"showOriginalElementWhileDragging\", \"validateDrag\", \"dragCursor\", \"dragActiveClass\", \"ghostElementAppendTo\", \"ghostElementTemplate\", \"touchStartLongPress\", \"autoScroll\"], outputs: [\"dragPointerDown\", \"dragStart\", \"ghostElementCreated\", \"dragging\", \"dragEnd\"] }, { kind: \"directive\", type: i2.DroppableDirective, selector: \"[mwlDroppable]\", inputs: [\"dragOverClass\", \"dragActiveClass\", \"validateDrop\"], outputs: [\"dragEnter\", \"dragLeave\", \"dragOver\", \"drop\"] }, { kind: \"directive\", type: ClickDirective, selector: \"[mwlClick]\", inputs: [\"clickListenerDisabled\"], outputs: [\"mwlClick\"] }, { kind: \"component\", type: CalendarWeekViewHeaderComponent, selector: \"mwl-calendar-week-view-header\", inputs: [\"days\", \"locale\", \"customTemplate\"], outputs: [\"dayHeaderClicked\", \"eventDropped\", \"dragEnter\"] }, { kind: \"component\", type: CalendarWeekViewEventComponent, selector: \"mwl-calendar-week-view-event\", inputs: [\"locale\", \"weekEvent\", \"tooltipPlacement\", \"tooltipAppendToBody\", \"tooltipDisabled\", \"tooltipDelay\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"tooltipTemplate\", \"column\", \"daysInWeek\"], outputs: [\"eventClicked\"] }, { kind: \"component\", type: CalendarWeekViewHourSegmentComponent, selector: \"mwl-calendar-week-view-hour-segment\", inputs: [\"segment\", \"segmentHeight\", \"locale\", \"isTimeLabel\", \"daysInWeek\", \"customTemplate\"] }, { kind: \"component\", type: CalendarWeekViewCurrentTimeMarkerComponent, selector: \"mwl-calendar-week-view-current-time-marker\", inputs: [\"columnDate\", \"dayStartHour\", \"dayStartMinute\", \"dayEndHour\", \"dayEndMinute\", \"hourSegments\", \"hourDuration\", \"hourSegmentHeight\", \"customTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekViewComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view',\n template: `\n <div class=\"cal-week-view\" role=\"grid\">\n <mwl-calendar-week-view-header\n [days]=\"days\"\n [locale]=\"locale\"\n [customTemplate]=\"headerTemplate\"\n (dayHeaderClicked)=\"dayHeaderClicked.emit($event)\"\n (eventDropped)=\"\n eventDropped({ dropData: $event }, $event.newStart, true)\n \"\n (dragEnter)=\"dateDragEnter($event.date)\"\n >\n </mwl-calendar-week-view-header>\n <div\n class=\"cal-all-day-events\"\n #allDayEventsContainer\n *ngIf=\"view.allDayEventRows.length > 0\"\n mwlDroppable\n (dragEnter)=\"dragEnter('allDay')\"\n (dragLeave)=\"dragLeave('allDay')\"\n >\n <div class=\"cal-day-columns\">\n <div class=\"cal-time-label-column\">\n <ng-container\n *ngTemplateOutlet=\"allDayEventsLabelTemplate\"\n ></ng-container>\n </div>\n <div\n class=\"cal-day-column\"\n *ngFor=\"let day of days; trackBy: trackByWeekDayHeaderDate\"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"eventDropped($event, day.date, true)\"\n (dragEnter)=\"dateDragEnter(day.date)\"\n ></div>\n </div>\n <div\n *ngFor=\"let eventRow of view.allDayEventRows; trackBy: trackById\"\n #eventRowContainer\n class=\"cal-events-row\"\n >\n <div\n *ngFor=\"\n let allDayEvent of eventRow.row;\n trackBy: trackByWeekAllDayEvent\n \"\n #event\n class=\"cal-event-container\"\n [class.cal-draggable]=\"\n allDayEvent.event.draggable && allDayEventResizes.size === 0\n \"\n [class.cal-starts-within-week]=\"!allDayEvent.startsBeforeWeek\"\n [class.cal-ends-within-week]=\"!allDayEvent.endsAfterWeek\"\n [ngClass]=\"allDayEvent.event?.cssClass\"\n [style.width.%]=\"(100 / days.length) * allDayEvent.span\"\n [style.marginLeft.%]=\"\n rtl ? null : (100 / days.length) * allDayEvent.offset\n \"\n [style.marginRight.%]=\"\n rtl ? (100 / days.length) * allDayEvent.offset : null\n \"\n mwlResizable\n [resizeCursors]=\"resizeCursors\"\n [resizeSnapGrid]=\"{ left: dayColumnWidth, right: dayColumnWidth }\"\n [validateResize]=\"validateResize\"\n (resizeStart)=\"\n allDayEventResizeStarted(eventRowContainer, allDayEvent, $event)\n \"\n (resizing)=\"\n allDayEventResizing(allDayEvent, $event, dayColumnWidth)\n \"\n (resizeEnd)=\"allDayEventResizeEnded(allDayEvent)\"\n mwlDraggable\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: allDayEvent.event, calendarId: calendarId }\"\n [dragAxis]=\"{\n x: allDayEvent.event.draggable && allDayEventResizes.size === 0,\n y:\n !snapDraggedEvents &&\n allDayEvent.event.draggable &&\n allDayEventResizes.size === 0\n }\"\n [dragSnapGrid]=\"snapDraggedEvents ? { x: dayColumnWidth } : {}\"\n [validateDrag]=\"validateDrag\"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n (dragStart)=\"\n dragStarted(eventRowContainer, event, allDayEvent, false)\n \"\n (dragging)=\"allDayEventDragMove()\"\n (dragEnd)=\"dragEnded(allDayEvent, $event, dayColumnWidth)\"\n >\n <div\n class=\"cal-resize-handle cal-resize-handle-before-start\"\n *ngIf=\"\n allDayEvent.event?.resizable?.beforeStart &&\n !allDayEvent.startsBeforeWeek\n \"\n mwlResizeHandle\n [resizeEdges]=\"{ left: true }\"\n ></div>\n <mwl-calendar-week-view-event\n [locale]=\"locale\"\n [weekEvent]=\"allDayEvent\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n [customTemplate]=\"eventTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n [daysInWeek]=\"daysInWeek\"\n (eventClicked)=\"\n eventClicked.emit({\n event: allDayEvent.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n >\n </mwl-calendar-week-view-event>\n <div\n class=\"cal-resize-handle cal-resize-handle-after-end\"\n *ngIf=\"\n allDayEvent.event?.resizable?.afterEnd &&\n !allDayEvent.endsAfterWeek\n \"\n mwlResizeHandle\n [resizeEdges]=\"{ right: true }\"\n ></div>\n </div>\n </div>\n </div>\n <div\n class=\"cal-time-events\"\n mwlDroppable\n (dragEnter)=\"dragEnter('time')\"\n (dragLeave)=\"dragLeave('time')\"\n >\n <div\n class=\"cal-time-label-column\"\n *ngIf=\"view.hourColumns.length > 0 && daysInWeek !== 1\"\n >\n <div\n *ngFor=\"\n let hour of view.hourColumns[0].hours;\n trackBy: trackByHour;\n let odd = odd\n \"\n class=\"cal-hour\"\n [class.cal-hour-odd]=\"odd\"\n >\n <mwl-calendar-week-view-hour-segment\n *ngFor=\"let segment of hour.segments; trackBy: trackByHourSegment\"\n [style.height.px]=\"hourSegmentHeight\"\n [segment]=\"segment\"\n [segmentHeight]=\"hourSegmentHeight\"\n [locale]=\"locale\"\n [customTemplate]=\"hourSegmentTemplate\"\n [isTimeLabel]=\"true\"\n [daysInWeek]=\"daysInWeek\"\n >\n </mwl-calendar-week-view-hour-segment>\n </div>\n </div>\n <div\n class=\"cal-day-columns\"\n [class.cal-resize-active]=\"timeEventResizes.size > 0\"\n #dayColumns\n >\n <div\n class=\"cal-day-column\"\n *ngFor=\"let column of view.hourColumns; trackBy: trackByHourColumn\"\n >\n <mwl-calendar-week-view-current-time-marker\n [columnDate]=\"column.date\"\n [dayStartHour]=\"dayStartHour\"\n [dayStartMinute]=\"dayStartMinute\"\n [dayEndHour]=\"dayEndHour\"\n [dayEndMinute]=\"dayEndMinute\"\n [hourSegments]=\"hourSegments\"\n [hourDuration]=\"hourDuration\"\n [hourSegmentHeight]=\"hourSegmentHeight\"\n [customTemplate]=\"currentTimeMarkerTemplate\"\n ></mwl-calendar-week-view-current-time-marker>\n <div class=\"cal-events-container\">\n <div\n *ngFor=\"\n let timeEvent of column.events;\n trackBy: trackByWeekTimeEvent\n \"\n #event\n class=\"cal-event-container\"\n [class.cal-draggable]=\"\n timeEvent.event.draggable && timeEventResizes.size === 0\n \"\n [class.cal-starts-within-day]=\"!timeEvent.startsBeforeDay\"\n [class.cal-ends-within-day]=\"!timeEvent.endsAfterDay\"\n [ngClass]=\"timeEvent.event.cssClass\"\n [hidden]=\"timeEvent.height === 0 && timeEvent.width === 0\"\n [style.top.px]=\"timeEvent.top\"\n [style.height.px]=\"timeEvent.height\"\n [style.left.%]=\"timeEvent.left\"\n [style.width.%]=\"timeEvent.width\"\n mwlResizable\n [resizeCursors]=\"resizeCursors\"\n [resizeSnapGrid]=\"{\n left: dayColumnWidth,\n right: dayColumnWidth,\n top: eventSnapSize || hourSegmentHeight,\n bottom: eventSnapSize || hourSegmentHeight\n }\"\n [validateResize]=\"validateResize\"\n [allowNegativeResizes]=\"true\"\n (resizeStart)=\"\n timeEventResizeStarted(dayColumns, timeEvent, $event)\n \"\n (resizing)=\"timeEventResizing(timeEvent, $event)\"\n (resizeEnd)=\"timeEventResizeEnded(timeEvent)\"\n mwlDraggable\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: timeEvent.event, calendarId: calendarId }\"\n [dragAxis]=\"{\n x: timeEvent.event.draggable && timeEventResizes.size === 0,\n y: timeEvent.event.draggable && timeEventResizes.size === 0\n }\"\n [dragSnapGrid]=\"\n snapDraggedEvents\n ? {\n x: dayColumnWidth,\n y: eventSnapSize || hourSegmentHeight\n }\n : {}\n \"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n [ghostDragEnabled]=\"!snapDraggedEvents\"\n [ghostElementTemplate]=\"weekEventTemplate\"\n [validateDrag]=\"validateDrag\"\n (dragStart)=\"dragStarted(dayColumns, event, timeEvent, true)\"\n (dragging)=\"dragMove(timeEvent, $event)\"\n (dragEnd)=\"dragEnded(timeEvent, $event, dayColumnWidth, true)\"\n >\n <div\n class=\"cal-resize-handle cal-resize-handle-before-start\"\n *ngIf=\"\n timeEvent.event?.resizable?.beforeStart &&\n !timeEvent.startsBeforeDay\n \"\n mwlResizeHandle\n [resizeEdges]=\"{\n left: true,\n top: true\n }\"\n ></div>\n <ng-template\n [ngTemplateOutlet]=\"weekEventTemplate\"\n ></ng-template>\n <ng-template #weekEventTemplate>\n <mwl-calendar-week-view-event\n [locale]=\"locale\"\n [weekEvent]=\"timeEvent\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDisabled]=\"dragActive || timeEventResizes.size > 0\"\n [tooltipDelay]=\"tooltipDelay\"\n [customTemplate]=\"eventTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n [column]=\"column\"\n [daysInWeek]=\"daysInWeek\"\n (eventClicked)=\"\n eventClicked.emit({\n event: timeEvent.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n >\n </mwl-calendar-week-view-event>\n </ng-template>\n <div\n class=\"cal-resize-handle cal-resize-handle-after-end\"\n *ngIf=\"\n timeEvent.event?.resizable?.afterEnd &&\n !timeEvent.endsAfterDay\n \"\n mwlResizeHandle\n [resizeEdges]=\"{\n right: true,\n bottom: true\n }\"\n ></div>\n </div>\n </div>\n\n <div\n *ngFor=\"\n let hour of column.hours;\n trackBy: trackByHour;\n let odd = odd\n \"\n class=\"cal-hour\"\n [class.cal-hour-odd]=\"odd\"\n >\n <mwl-calendar-week-view-hour-segment\n *ngFor=\"\n let segment of hour.segments;\n trackBy: trackByHourSegment\n \"\n [style.height.px]=\"hourSegmentHeight\"\n [segment]=\"segment\"\n [segmentHeight]=\"hourSegmentHeight\"\n [locale]=\"locale\"\n [customTemplate]=\"hourSegmentTemplate\"\n [daysInWeek]=\"daysInWeek\"\n (mwlClick)=\"\n hourSegmentClicked.emit({\n date: segment.date,\n sourceEvent: $event\n })\n \"\n [clickListenerDisabled]=\"\n hourSegmentClicked.observers.length === 0\n \"\n mwlDroppable\n [dragOverClass]=\"\n !dragActive || !snapDraggedEvents ? 'cal-drag-over' : null\n \"\n dragActiveClass=\"cal-drag-active\"\n (drop)=\"eventDropped($event, segment.date, false)\"\n (dragEnter)=\"dateDragEnter(segment.date)\"\n [isTimeLabel]=\"daysInWeek === 1\"\n >\n </mwl-calendar-week-view-hour-segment>\n </div>\n </div>\n </div>\n </div>\n </div>\n `,\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: CalendarUtils }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: DateAdapter }, { type: i0.ElementRef }]; }, propDecorators: { viewDate: [{\n type: Input\n }], events: [{\n type: Input\n }], excludeDays: [{\n type: Input\n }], refresh: [{\n type: Input\n }], locale: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipDelay: [{\n type: Input\n }], weekStartsOn: [{\n type: Input\n }], headerTemplate: [{\n type: Input\n }], eventTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], precision: [{\n type: Input\n }], weekendDays: [{\n type: Input\n }], snapDraggedEvents: [{\n type: Input\n }], hourSegments: [{\n type: Input\n }], hourDuration: [{\n type: Input\n }], hourSegmentHeight: [{\n type: Input\n }], minimumEventHeight: [{\n type: Input\n }], dayStartHour: [{\n type: Input\n }], dayStartMinute: [{\n type: Input\n }], dayEndHour: [{\n type: Input\n }], dayEndMinute: [{\n type: Input\n }], hourSegmentTemplate: [{\n type: Input\n }], eventSnapSize: [{\n type: Input\n }], allDayEventsLabelTemplate: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }], currentTimeMarkerTemplate: [{\n type: Input\n }], validateEventTimesChanged: [{\n type: Input\n }], resizeCursors: [{\n type: Input\n }], dayHeaderClicked: [{\n type: Output\n }], eventClicked: [{\n type: Output\n }], eventTimesChanged: [{\n type: Output\n }], beforeViewRender: [{\n type: Output\n }], hourSegmentClicked: [{\n type: Output\n }] } });\n\nclass CalendarWeekModule {\n}\nCalendarWeekModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarWeekModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekModule, declarations: [CalendarWeekViewComponent,\n CalendarWeekViewHeaderComponent,\n CalendarWeekViewEventComponent,\n CalendarWeekViewHourSegmentComponent,\n CalendarWeekViewCurrentTimeMarkerComponent], imports: [CommonModule,\n ResizableModule,\n DragAndDropModule,\n CalendarCommonModule], exports: [ResizableModule,\n DragAndDropModule,\n CalendarWeekViewComponent,\n CalendarWeekViewHeaderComponent,\n CalendarWeekViewEventComponent,\n CalendarWeekViewHourSegmentComponent,\n CalendarWeekViewCurrentTimeMarkerComponent] });\nCalendarWeekModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekModule, imports: [CommonModule,\n ResizableModule,\n DragAndDropModule,\n CalendarCommonModule, ResizableModule,\n DragAndDropModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarWeekModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n ResizableModule,\n DragAndDropModule,\n CalendarCommonModule,\n ],\n declarations: [\n CalendarWeekViewComponent,\n CalendarWeekViewHeaderComponent,\n CalendarWeekViewEventComponent,\n CalendarWeekViewHourSegmentComponent,\n CalendarWeekViewCurrentTimeMarkerComponent,\n ],\n exports: [\n ResizableModule,\n DragAndDropModule,\n CalendarWeekViewComponent,\n CalendarWeekViewHeaderComponent,\n CalendarWeekViewEventComponent,\n CalendarWeekViewHourSegmentComponent,\n CalendarWeekViewCurrentTimeMarkerComponent,\n ],\n }]\n }] });\n\n/**\n * Shows all events on a given day. Example usage:\n *\n * ```typescript\n * <mwl-calendar-day-view\n * [viewDate]=\"viewDate\"\n * [events]=\"events\">\n * </mwl-calendar-day-view>\n * ```\n */\nclass CalendarDayViewComponent {\n constructor() {\n /**\n * An array of events to display on view\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * The number of segments in an hour. Must divide equally into 60.\n */\n this.hourSegments = 2;\n /**\n * The height in pixels of each hour segment\n */\n this.hourSegmentHeight = 30;\n /**\n * The minimum height in pixels of each event\n */\n this.minimumEventHeight = 30;\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n this.dayStartHour = 0;\n /**\n * The day start minutes. Must be 0-59\n */\n this.dayStartMinute = 0;\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n this.dayEndHour = 23;\n /**\n * The day end minutes. Must be 0-59\n */\n this.dayEndMinute = 59;\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n this.tooltipDelay = null;\n /**\n * Whether to snap events to a grid when dragging\n */\n this.snapDraggedEvents = true;\n /**\n * Called when an event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when an hour segment is clicked\n */\n this.hourSegmentClicked = new EventEmitter();\n /**\n * Called when an event is resized or dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * An output that will be called before the view is rendered for the current day.\n * If you add the `cssClass` property to an hour grid segment it will add that class to the hour segment in the template\n */\n this.beforeViewRender = new EventEmitter();\n }\n}\nCalendarDayViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDayViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCalendarDayViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.3\", type: CalendarDayViewComponent, selector: \"mwl-calendar-day-view\", inputs: { viewDate: \"viewDate\", events: \"events\", hourSegments: \"hourSegments\", hourSegmentHeight: \"hourSegmentHeight\", hourDuration: \"hourDuration\", minimumEventHeight: \"minimumEventHeight\", dayStartHour: \"dayStartHour\", dayStartMinute: \"dayStartMinute\", dayEndHour: \"dayEndHour\", dayEndMinute: \"dayEndMinute\", refresh: \"refresh\", locale: \"locale\", eventSnapSize: \"eventSnapSize\", tooltipPlacement: \"tooltipPlacement\", tooltipTemplate: \"tooltipTemplate\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipDelay: \"tooltipDelay\", hourSegmentTemplate: \"hourSegmentTemplate\", eventTemplate: \"eventTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", snapDraggedEvents: \"snapDraggedEvents\", allDayEventsLabelTemplate: \"allDayEventsLabelTemplate\", currentTimeMarkerTemplate: \"currentTimeMarkerTemplate\", validateEventTimesChanged: \"validateEventTimesChanged\", resizeCursors: \"resizeCursors\" }, outputs: { eventClicked: \"eventClicked\", hourSegmentClicked: \"hourSegmentClicked\", eventTimesChanged: \"eventTimesChanged\", beforeViewRender: \"beforeViewRender\" }, ngImport: i0, template: `\n <mwl-calendar-week-view\n class=\"cal-day-view\"\n [daysInWeek]=\"1\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [hourSegments]=\"hourSegments\"\n [hourDuration]=\"hourDuration\"\n [hourSegmentHeight]=\"hourSegmentHeight\"\n [minimumEventHeight]=\"minimumEventHeight\"\n [dayStartHour]=\"dayStartHour\"\n [dayStartMinute]=\"dayStartMinute\"\n [dayEndHour]=\"dayEndHour\"\n [dayEndMinute]=\"dayEndMinute\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [eventSnapSize]=\"eventSnapSize\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n [resizeCursors]=\"resizeCursors\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n [eventTemplate]=\"eventTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n [snapDraggedEvents]=\"snapDraggedEvents\"\n [allDayEventsLabelTemplate]=\"allDayEventsLabelTemplate\"\n [currentTimeMarkerTemplate]=\"currentTimeMarkerTemplate\"\n [validateEventTimesChanged]=\"validateEventTimesChanged\"\n (eventClicked)=\"eventClicked.emit($event)\"\n (hourSegmentClicked)=\"hourSegmentClicked.emit($event)\"\n (eventTimesChanged)=\"eventTimesChanged.emit($event)\"\n (beforeViewRender)=\"beforeViewRender.emit($event)\"\n ></mwl-calendar-week-view>\n `, isInline: true, dependencies: [{ kind: \"component\", type: CalendarWeekViewComponent, selector: \"mwl-calendar-week-view\", inputs: [\"viewDate\", \"events\", \"excludeDays\", \"refresh\", \"locale\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDelay\", \"weekStartsOn\", \"headerTemplate\", \"eventTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"precision\", \"weekendDays\", \"snapDraggedEvents\", \"hourSegments\", \"hourDuration\", \"hourSegmentHeight\", \"minimumEventHeight\", \"dayStartHour\", \"dayStartMinute\", \"dayEndHour\", \"dayEndMinute\", \"hourSegmentTemplate\", \"eventSnapSize\", \"allDayEventsLabelTemplate\", \"daysInWeek\", \"currentTimeMarkerTemplate\", \"validateEventTimesChanged\", \"resizeCursors\"], outputs: [\"dayHeaderClicked\", \"eventClicked\", \"eventTimesChanged\", \"beforeViewRender\", \"hourSegmentClicked\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDayViewComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-day-view',\n template: `\n <mwl-calendar-week-view\n class=\"cal-day-view\"\n [daysInWeek]=\"1\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [hourSegments]=\"hourSegments\"\n [hourDuration]=\"hourDuration\"\n [hourSegmentHeight]=\"hourSegmentHeight\"\n [minimumEventHeight]=\"minimumEventHeight\"\n [dayStartHour]=\"dayStartHour\"\n [dayStartMinute]=\"dayStartMinute\"\n [dayEndHour]=\"dayEndHour\"\n [dayEndMinute]=\"dayEndMinute\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [eventSnapSize]=\"eventSnapSize\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n [resizeCursors]=\"resizeCursors\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n [eventTemplate]=\"eventTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n [snapDraggedEvents]=\"snapDraggedEvents\"\n [allDayEventsLabelTemplate]=\"allDayEventsLabelTemplate\"\n [currentTimeMarkerTemplate]=\"currentTimeMarkerTemplate\"\n [validateEventTimesChanged]=\"validateEventTimesChanged\"\n (eventClicked)=\"eventClicked.emit($event)\"\n (hourSegmentClicked)=\"hourSegmentClicked.emit($event)\"\n (eventTimesChanged)=\"eventTimesChanged.emit($event)\"\n (beforeViewRender)=\"beforeViewRender.emit($event)\"\n ></mwl-calendar-week-view>\n `,\n }]\n }], propDecorators: { viewDate: [{\n type: Input\n }], events: [{\n type: Input\n }], hourSegments: [{\n type: Input\n }], hourSegmentHeight: [{\n type: Input\n }], hourDuration: [{\n type: Input\n }], minimumEventHeight: [{\n type: Input\n }], dayStartHour: [{\n type: Input\n }], dayStartMinute: [{\n type: Input\n }], dayEndHour: [{\n type: Input\n }], dayEndMinute: [{\n type: Input\n }], refresh: [{\n type: Input\n }], locale: [{\n type: Input\n }], eventSnapSize: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipDelay: [{\n type: Input\n }], hourSegmentTemplate: [{\n type: Input\n }], eventTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], snapDraggedEvents: [{\n type: Input\n }], allDayEventsLabelTemplate: [{\n type: Input\n }], currentTimeMarkerTemplate: [{\n type: Input\n }], validateEventTimesChanged: [{\n type: Input\n }], resizeCursors: [{\n type: Input\n }], eventClicked: [{\n type: Output\n }], hourSegmentClicked: [{\n type: Output\n }], eventTimesChanged: [{\n type: Output\n }], beforeViewRender: [{\n type: Output\n }] } });\n\nclass CalendarDayModule {\n}\nCalendarDayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarDayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDayModule, declarations: [CalendarDayViewComponent], imports: [CommonModule, CalendarCommonModule, CalendarWeekModule], exports: [CalendarDayViewComponent] });\nCalendarDayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDayModule, imports: [CommonModule, CalendarCommonModule, CalendarWeekModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarDayModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, CalendarCommonModule, CalendarWeekModule],\n declarations: [CalendarDayViewComponent],\n exports: [CalendarDayViewComponent],\n }]\n }] });\n\n/**\n * The main module of this library. Example usage:\n *\n * ```typescript\n * import { CalenderModule } from 'angular-calendar';\n *\n * @NgModule({\n * imports: [\n * CalenderModule.forRoot()\n * ]\n * })\n * class MyModule {}\n * ```\n *\n */\nclass CalendarModule {\n static forRoot(dateAdapter, config = {}) {\n return {\n ngModule: CalendarModule,\n providers: [\n dateAdapter,\n config.eventTitleFormatter || CalendarEventTitleFormatter,\n config.dateFormatter || CalendarDateFormatter,\n config.utils || CalendarUtils,\n config.a11y || CalendarA11y,\n ],\n };\n }\n}\nCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarModule, imports: [CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule], exports: [CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule] });\nCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarModule, imports: [CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule, CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: CalendarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule,\n ],\n exports: [\n CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule,\n ],\n }]\n }] });\n\n/*\n * Public API Surface of angular-calendar\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CalendarA11y, CalendarAngularDateFormatter, CalendarCommonModule, CalendarDateFormatter, CalendarDayModule, CalendarDayViewComponent, CalendarEventTimesChangedEventType, CalendarEventTitleFormatter, CalendarModule, CalendarMomentDateFormatter, CalendarMonthModule, CalendarMonthViewComponent, CalendarNativeDateFormatter, CalendarUtils, CalendarView, CalendarWeekModule, CalendarWeekViewComponent, DateAdapter, MOMENT, collapseAnimation, getWeekViewPeriod, CalendarA11yPipe as ɵCalendarA11yPipe, CalendarDatePipe as ɵCalendarDatePipe, CalendarEventActionsComponent as ɵCalendarEventActionsComponent, CalendarEventTitleComponent as ɵCalendarEventTitleComponent, CalendarEventTitlePipe as ɵCalendarEventTitlePipe, CalendarMonthCellComponent as ɵCalendarMonthCellComponent, CalendarMonthViewHeaderComponent as ɵCalendarMonthViewHeaderComponent, CalendarNextViewDirective as ɵCalendarNextViewDirective, CalendarOpenDayEventsComponent as ɵCalendarOpenDayEventsComponent, CalendarPreviousViewDirective as ɵCalendarPreviousViewDirective, CalendarTodayDirective as ɵCalendarTodayDirective, CalendarTooltipDirective as ɵCalendarTooltipDirective, CalendarTooltipWindowComponent as ɵCalendarTooltipWindowComponent, CalendarWeekViewCurrentTimeMarkerComponent as ɵCalendarWeekViewCurrentTimeMarkerComponent, CalendarWeekViewEventComponent as ɵCalendarWeekViewEventComponent, CalendarWeekViewHeaderComponent as ɵCalendarWeekViewHeaderComponent, CalendarWeekViewHourSegmentComponent as ɵCalendarWeekViewHourSegmentComponent, ClickDirective as ɵClickDirective, KeydownEnterDirective as ɵKeydownEnterDirective };\n//# sourceMappingURL=angular-calendar.mjs.map\n","import { async } from '../scheduler/async';\nimport { Subscriber } from '../Subscriber';\nimport { isScheduler } from '../util/isScheduler';\nexport function bufferTime(bufferTimeSpan) {\n let length = arguments.length;\n let scheduler = async;\n if (isScheduler(arguments[arguments.length - 1])) {\n scheduler = arguments[arguments.length - 1];\n length--;\n }\n let bufferCreationInterval = null;\n if (length >= 2) {\n bufferCreationInterval = arguments[1];\n }\n let maxBufferSize = Number.POSITIVE_INFINITY;\n if (length >= 3) {\n maxBufferSize = arguments[2];\n }\n return function bufferTimeOperatorFunction(source) {\n return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));\n };\n}\nclass BufferTimeOperator {\n constructor(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {\n this.bufferTimeSpan = bufferTimeSpan;\n this.bufferCreationInterval = bufferCreationInterval;\n this.maxBufferSize = maxBufferSize;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new BufferTimeSubscriber(subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler));\n }\n}\nclass Context {\n constructor() {\n this.buffer = [];\n }\n}\nclass BufferTimeSubscriber extends Subscriber {\n constructor(destination, bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {\n super(destination);\n this.bufferTimeSpan = bufferTimeSpan;\n this.bufferCreationInterval = bufferCreationInterval;\n this.maxBufferSize = maxBufferSize;\n this.scheduler = scheduler;\n this.contexts = [];\n const context = this.openContext();\n this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;\n if (this.timespanOnly) {\n const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan };\n this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n else {\n const closeState = { subscriber: this, context };\n const creationState = { bufferTimeSpan, bufferCreationInterval, subscriber: this, scheduler };\n this.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, closeState));\n this.add(scheduler.schedule(dispatchBufferCreation, bufferCreationInterval, creationState));\n }\n }\n _next(value) {\n const contexts = this.contexts;\n const len = contexts.length;\n let filledBufferContext;\n for (let i = 0; i < len; i++) {\n const context = contexts[i];\n const buffer = context.buffer;\n buffer.push(value);\n if (buffer.length == this.maxBufferSize) {\n filledBufferContext = context;\n }\n }\n if (filledBufferContext) {\n this.onBufferFull(filledBufferContext);\n }\n }\n _error(err) {\n this.contexts.length = 0;\n super._error(err);\n }\n _complete() {\n const { contexts, destination } = this;\n while (contexts.length > 0) {\n const context = contexts.shift();\n destination.next(context.buffer);\n }\n super._complete();\n }\n _unsubscribe() {\n this.contexts = null;\n }\n onBufferFull(context) {\n this.closeContext(context);\n const closeAction = context.closeAction;\n closeAction.unsubscribe();\n this.remove(closeAction);\n if (!this.closed && this.timespanOnly) {\n context = this.openContext();\n const bufferTimeSpan = this.bufferTimeSpan;\n const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan };\n this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n }\n openContext() {\n const context = new Context();\n this.contexts.push(context);\n return context;\n }\n closeContext(context) {\n this.destination.next(context.buffer);\n const contexts = this.contexts;\n const spliceIndex = contexts ? contexts.indexOf(context) : -1;\n if (spliceIndex >= 0) {\n contexts.splice(contexts.indexOf(context), 1);\n }\n }\n}\nfunction dispatchBufferTimeSpanOnly(state) {\n const subscriber = state.subscriber;\n const prevContext = state.context;\n if (prevContext) {\n subscriber.closeContext(prevContext);\n }\n if (!subscriber.closed) {\n state.context = subscriber.openContext();\n state.context.closeAction = this.schedule(state, state.bufferTimeSpan);\n }\n}\nfunction dispatchBufferCreation(state) {\n const { bufferCreationInterval, bufferTimeSpan, subscriber, scheduler } = state;\n const context = subscriber.openContext();\n const action = this;\n if (!subscriber.closed) {\n subscriber.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber, context }));\n action.schedule(state, bufferCreationInterval);\n }\n}\nfunction dispatchBufferClose(arg) {\n const { subscriber, context } = arg;\n subscriber.closeContext(context);\n}\n","import * as i0 from '@angular/core';\nimport { makeEnvironmentProviders, Injectable, Optional, NgModule } from '@angular/core';\nimport { Subject, merge, fromEvent, from, interval, timer, of } from 'rxjs';\nimport { bufferTime, filter, tap, switchMap, takeUntil, finalize, distinctUntilChanged, map } from 'rxjs/operators';\n\nclass UserIdleConfig {\n}\nfunction provideUserIdleConfig(config) {\n return makeEnvironmentProviders([\n { provide: UserIdleConfig, useValue: config },\n ]);\n}\n\n/**\n * User's idle service.\n */\nclass UserIdleService {\n constructor(config, _ngZone) {\n this._ngZone = _ngZone;\n this.timerStart$ = new Subject();\n this.idleDetected$ = new Subject();\n this.timeout$ = new Subject();\n /**\n * Idle value in milliseconds.\n * Default equals to 10 minutes.\n */\n this.idleMillisec = 600 * 1000;\n /**\n * Idle buffer wait time milliseconds to collect user action\n * Default equals to 1 Sec.\n */\n this.idleSensitivityMillisec = 1000;\n /**\n * Timeout value in seconds.\n * Default equals to 5 minutes.\n */\n this.timeout = 300;\n /**\n * Ping value in milliseconds.\n * Default equals to 2 minutes.\n */\n this.pingMillisec = 120 * 1000;\n /**\n * Timeout status.\n */\n this.isTimeout = false;\n /**\n * Timer of user's inactivity is in progress.\n */\n this.isInactivityTimer = false;\n this.isIdleDetected = false;\n if (config) {\n this.setConfig(config);\n }\n }\n /**\n * Start watching for user idle and setup timer and ping.\n */\n startWatching() {\n if (!this.activityEvents$) {\n this.activityEvents$ = merge(fromEvent(window, 'mousemove'), fromEvent(window, 'resize'), fromEvent(document, 'keydown'));\n }\n this.idle$ = from(this.activityEvents$);\n if (this.idleSubscription) {\n this.idleSubscription.unsubscribe();\n }\n // If any of user events is not active for idle-seconds when start timer.\n this.idleSubscription = this.idle$\n .pipe(bufferTime(this.idleSensitivityMillisec), // Starting point of detecting of user's inactivity\n filter((arr) => !arr.length && !this.isIdleDetected && !this.isInactivityTimer), tap(() => {\n this.isIdleDetected = true;\n this.idleDetected$.next(true);\n }), switchMap(() => this._ngZone.runOutsideAngular(() => interval(1000).pipe(takeUntil(merge(this.activityEvents$, timer(this.idleMillisec).pipe(tap(() => {\n this.isInactivityTimer = true;\n this.timerStart$.next(true);\n })))), finalize(() => {\n this.isIdleDetected = false;\n this.idleDetected$.next(false);\n })))))\n .subscribe();\n this.setupTimer(this.timeout);\n this.setupPing(this.pingMillisec);\n }\n stopWatching() {\n this.stopTimer();\n if (this.idleSubscription) {\n this.idleSubscription.unsubscribe();\n }\n }\n stopTimer() {\n this.isInactivityTimer = false;\n this.timerStart$.next(false);\n }\n resetTimer() {\n this.stopTimer();\n this.isTimeout = false;\n }\n /**\n * Return observable for timer's countdown number that emits after idle.\n */\n onTimerStart() {\n return this.timerStart$.pipe(distinctUntilChanged(), switchMap((start) => (start ? this.timer$ : of(null))));\n }\n /**\n * Return observable for idle status changed\n */\n onIdleStatusChanged() {\n return this.idleDetected$.asObservable();\n }\n /**\n * Return observable for timeout is fired.\n */\n onTimeout() {\n return this.timeout$.pipe(filter((timeout) => !!timeout), tap(() => (this.isTimeout = true)), map(() => true));\n }\n getConfigValue() {\n return {\n idle: this.idleMillisec / 1000,\n idleSensitivity: this.idleSensitivityMillisec / 1000,\n timeout: this.timeout,\n ping: this.pingMillisec / 1000,\n };\n }\n /**\n * Set config values.\n * @param config\n */\n setConfigValues(config) {\n if (this.idleSubscription && !this.idleSubscription.closed) {\n console.error('Call stopWatching() before set config values');\n return;\n }\n this.setConfig(config);\n }\n setConfig(config) {\n if (config.idle) {\n this.idleMillisec = config.idle * 1000;\n }\n if (config.ping) {\n this.pingMillisec = config.ping * 1000;\n }\n if (config.idleSensitivity) {\n this.idleSensitivityMillisec = config.idleSensitivity * 1000;\n }\n if (config.timeout) {\n this.timeout = config.timeout;\n }\n }\n /**\n * Set custom activity events\n *\n * @param customEvents Example: merge(\n * fromEvent(window, 'mousemove'),\n * fromEvent(window, 'resize'),\n * fromEvent(document, 'keydown'),\n * fromEvent(document, 'touchstart'),\n * fromEvent(document, 'touchend')\n * )\n */\n setCustomActivityEvents(customEvents) {\n if (this.idleSubscription && !this.idleSubscription.closed) {\n console.error('Call stopWatching() before set custom activity events');\n return;\n }\n this.activityEvents$ = customEvents;\n }\n /**\n * Setup timer.\n *\n * Counts every seconds and return n+1 and fire timeout for last count.\n * @param timeout Timeout in seconds.\n */\n setupTimer(timeout) {\n this._ngZone.runOutsideAngular(() => {\n this.timer$ = of(() => new Date()).pipe(map((fn) => fn()), switchMap((startDate) => interval(1000).pipe(map(() => Math.round((new Date().valueOf() - startDate.valueOf()) / 1000)), // convert elapsed count to seconds\n tap((elapsed) => {\n if (elapsed >= timeout) {\n this.timeout$.next(true);\n }\n }))));\n });\n }\n /**\n * Setup ping.\n *\n * Pings every ping-seconds only if is not timeout.\n * @param pingMillisec\n */\n setupPing(pingMillisec) {\n this.ping$ = interval(pingMillisec).pipe(filter(() => !this.isTimeout));\n }\n}\nUserIdleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.3\", ngImport: i0, type: UserIdleService, deps: [{ token: UserIdleConfig, optional: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nUserIdleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.1.3\", ngImport: i0, type: UserIdleService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.3\", ngImport: i0, type: UserIdleService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: function () { return [{ type: UserIdleConfig, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }]; } });\n\n/**\n * User's idle module.\n * @deprecated since version 4.0.0 - use provideUserIdleConfig(config: UserIdleConfig) instead\n */\nclass UserIdleModule {\n static forRoot(config) {\n return {\n ngModule: UserIdleModule,\n providers: [provideUserIdleConfig(config)],\n };\n }\n}\nUserIdleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.3\", ngImport: i0, type: UserIdleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nUserIdleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.1.3\", ngImport: i0, type: UserIdleModule });\nUserIdleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.1.3\", ngImport: i0, type: UserIdleModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.3\", ngImport: i0, type: UserIdleModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n }]\n }] });\n\n/*\n * Public API Surface of angular-user-idle\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { UserIdleConfig, UserIdleModule, UserIdleService, provideUserIdleConfig };\n","/**\n * The current status of a query’s execution in our system.\n */\nexport var NetworkStatus;\n(function (NetworkStatus) {\n /**\n * The query has never been run before and the query is now currently running. A query will still\n * have this network status even if a partial data result was returned from the cache, but a\n * query was dispatched anyway.\n */\n NetworkStatus[NetworkStatus[\"loading\"] = 1] = \"loading\";\n /**\n * If `setVariables` was called and a query was fired because of that then the network status\n * will be `setVariables` until the result of that query comes back.\n */\n NetworkStatus[NetworkStatus[\"setVariables\"] = 2] = \"setVariables\";\n /**\n * Indicates that `fetchMore` was called on this query and that the query created is currently in\n * flight.\n */\n NetworkStatus[NetworkStatus[\"fetchMore\"] = 3] = \"fetchMore\";\n /**\n * Similar to the `setVariables` network status. It means that `refetch` was called on a query\n * and the refetch request is currently in flight.\n */\n NetworkStatus[NetworkStatus[\"refetch\"] = 4] = \"refetch\";\n /**\n * Indicates that a polling query is currently in flight. So for example if you are polling a\n * query every 10 seconds then the network status will switch to `poll` every 10 seconds whenever\n * a poll request has been sent but not resolved.\n */\n NetworkStatus[NetworkStatus[\"poll\"] = 6] = \"poll\";\n /**\n * No request is in flight for this query, and no errors happened. Everything is OK.\n */\n NetworkStatus[NetworkStatus[\"ready\"] = 7] = \"ready\";\n /**\n * No request is in flight for this query, but one or more errors were detected.\n */\n NetworkStatus[NetworkStatus[\"error\"] = 8] = \"error\";\n})(NetworkStatus || (NetworkStatus = {}));\n/**\n * Returns true if there is currently a network request in flight according to a given network\n * status.\n */\nexport function isNetworkRequestInFlight(networkStatus) {\n return networkStatus ? networkStatus < 7 : false;\n}\n/**\n * Returns true if the network request is in ready or error state according to a given network\n * status.\n */\nexport function isNetworkRequestSettled(networkStatus) {\n return networkStatus === 7 || networkStatus === 8;\n}\n","import { ApolloLink } from \"./ApolloLink.js\";\nexport var execute = ApolloLink.execute;\n","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport var serializeFetchParameter = function (p, label) {\n var serialized;\n try {\n serialized = JSON.stringify(p);\n }\n catch (e) {\n var parseError = newInvariantError(39, label, e.message);\n parseError.parseError = e;\n throw parseError;\n }\n return serialized;\n};\n","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/reader.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function readerIterator(reader) {\n var iterator = {\n next: function () {\n return reader.read();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/index.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../utilities/index.js\";\nimport asyncIterator from \"./iterators/async.js\";\nimport nodeStreamIterator from \"./iterators/nodeStream.js\";\nimport promiseIterator from \"./iterators/promise.js\";\nimport readerIterator from \"./iterators/reader.js\";\nfunction isNodeResponse(value) {\n return !!value.body;\n}\nfunction isReadableStream(value) {\n return !!value.getReader;\n}\nfunction isAsyncIterableIterator(value) {\n return !!(canUseAsyncIteratorSymbol &&\n value[Symbol.asyncIterator]);\n}\nfunction isStreamableBlob(value) {\n return !!value.stream;\n}\nfunction isBlob(value) {\n return !!value.arrayBuffer;\n}\nfunction isNodeReadableStream(value) {\n return !!value.pipe;\n}\nexport function responseIterator(response) {\n var body = response;\n if (isNodeResponse(response))\n body = response.body;\n if (isAsyncIterableIterator(body))\n return asyncIterator(body);\n if (isReadableStream(body))\n return readerIterator(body.getReader());\n // this errors without casting to ReadableStream<T>\n // because Blob.stream() returns a NodeJS ReadableStream\n if (isStreamableBlob(body)) {\n return readerIterator(body.stream().getReader());\n }\n if (isBlob(body))\n return promiseIterator(body.arrayBuffer());\n if (isNodeReadableStream(body))\n return nodeStreamIterator(body);\n throw new Error(\"Unknown body type for responseIterator. Please pass a streamable response.\");\n}\n","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/async.ts\n */\nexport default function asyncIterator(source) {\n var _a;\n var iterator = source[Symbol.asyncIterator]();\n return _a = {\n next: function () {\n return iterator.next();\n }\n },\n _a[Symbol.asyncIterator] = function () {\n return this;\n },\n _a;\n}\n","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/promise.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function promiseIterator(promise) {\n var resolved = false;\n var iterator = {\n next: function () {\n if (resolved)\n return Promise.resolve({\n value: undefined,\n done: true,\n });\n resolved = true;\n return new Promise(function (resolve, reject) {\n promise\n .then(function (value) {\n resolve({ value: value, done: false });\n })\n .catch(reject);\n });\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/nodeStream.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function nodeStreamIterator(stream) {\n var cleanup = null;\n var error = null;\n var done = false;\n var data = [];\n var waiting = [];\n function onData(chunk) {\n if (error)\n return;\n if (waiting.length) {\n var shiftedArr = waiting.shift();\n if (Array.isArray(shiftedArr) && shiftedArr[0]) {\n return shiftedArr[0]({ value: chunk, done: false });\n }\n }\n data.push(chunk);\n }\n function onError(err) {\n error = err;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[0]({ value: undefined, done: true });\n });\n !cleanup || cleanup();\n }\n cleanup = function () {\n cleanup = null;\n stream.removeListener(\"data\", onData);\n stream.removeListener(\"error\", onError);\n stream.removeListener(\"end\", onEnd);\n stream.removeListener(\"finish\", onEnd);\n stream.removeListener(\"close\", onEnd);\n };\n stream.on(\"data\", onData);\n stream.on(\"error\", onError);\n stream.on(\"end\", onEnd);\n stream.on(\"finish\", onEnd);\n stream.on(\"close\", onEnd);\n function getNext() {\n return new Promise(function (resolve, reject) {\n if (error)\n return reject(error);\n if (data.length)\n return resolve({ value: data.shift(), done: false });\n if (done)\n return resolve({ value: undefined, done: true });\n waiting.push([resolve, reject]);\n });\n }\n var iterator = {\n next: function () {\n return getNext();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n","export var throwServerError = function (response, result, message) {\n var error = new Error(message);\n error.name = \"ServerError\";\n error.response = response;\n error.statusCode = response.status;\n error.result = result;\n throw error;\n};\n","import { __extends, __spreadArray } from \"tslib\";\nimport \"../utilities/globals/index.js\";\nimport { isNonNullObject } from \"../utilities/index.js\";\n// This Symbol allows us to pass transport-specific errors from the link chain\n// into QueryManager/client internals without risking a naming collision within\n// extensions (which implementers can use as they see fit).\nexport var PROTOCOL_ERRORS_SYMBOL = Symbol();\nexport function graphQLResultHasProtocolErrors(result) {\n if (result.extensions) {\n return Array.isArray(result.extensions[PROTOCOL_ERRORS_SYMBOL]);\n }\n return false;\n}\nexport function isApolloError(err) {\n return err.hasOwnProperty(\"graphQLErrors\");\n}\n// Sets the error message on this error according to the\n// the GraphQL and network errors that are present.\n// If the error message has already been set through the\n// constructor or otherwise, this function is a nop.\nvar generateErrorMessage = function (err) {\n var errors = __spreadArray(__spreadArray(__spreadArray([], err.graphQLErrors, true), err.clientErrors, true), err.protocolErrors, true);\n if (err.networkError)\n errors.push(err.networkError);\n return (errors\n // The rest of the code sometimes unsafely types non-Error objects as GraphQLErrors\n .map(function (err) {\n return (isNonNullObject(err) && err.message) || \"Error message not found.\";\n })\n .join(\"\\n\"));\n};\nvar ApolloError = /** @class */ (function (_super) {\n __extends(ApolloError, _super);\n // Constructs an instance of ApolloError given a GraphQLError\n // or a network error. Note that one of these has to be a valid\n // value or the constructed error will be meaningless.\n function ApolloError(_a) {\n var graphQLErrors = _a.graphQLErrors, protocolErrors = _a.protocolErrors, clientErrors = _a.clientErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;\n var _this = _super.call(this, errorMessage) || this;\n _this.name = \"ApolloError\";\n _this.graphQLErrors = graphQLErrors || [];\n _this.protocolErrors = protocolErrors || [];\n _this.clientErrors = clientErrors || [];\n _this.networkError = networkError || null;\n _this.message = errorMessage || generateErrorMessage(_this);\n _this.extraInfo = extraInfo;\n // We're not using `Object.setPrototypeOf` here as it isn't fully\n // supported on Android (see issue #3236).\n _this.__proto__ = ApolloError.prototype;\n return _this;\n }\n return ApolloError;\n}(Error));\nexport { ApolloError };\n","import { isNonNullObject } from \"./objects.js\";\nimport { isNonEmptyArray } from \"./arrays.js\";\nimport { DeepMerger } from \"./mergeDeep.js\";\nexport function isExecutionPatchIncrementalResult(value) {\n return \"incremental\" in value;\n}\nexport function isExecutionPatchInitialResult(value) {\n return \"hasNext\" in value && \"data\" in value;\n}\nexport function isExecutionPatchResult(value) {\n return (isExecutionPatchIncrementalResult(value) ||\n isExecutionPatchInitialResult(value));\n}\n// This function detects an Apollo payload result before it is transformed\n// into a FetchResult via HttpLink; it cannot detect an ApolloPayloadResult\n// once it leaves the link chain.\nexport function isApolloPayloadResult(value) {\n return isNonNullObject(value) && \"payload\" in value;\n}\nexport function mergeIncrementalData(prevResult, result) {\n var mergedData = prevResult;\n var merger = new DeepMerger();\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (_a) {\n var data = _a.data, path = _a.path;\n for (var i = path.length - 1; i >= 0; --i) {\n var key = path[i];\n var isNumericKey = !isNaN(+key);\n var parent_1 = isNumericKey ? [] : {};\n parent_1[key] = data;\n data = parent_1;\n }\n mergedData = merger.merge(mergedData, data);\n });\n }\n return mergedData;\n}\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { responseIterator } from \"./responseIterator.js\";\nimport { throwServerError } from \"../utils/index.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../../errors/index.js\";\nimport { isApolloPayloadResult } from \"../../utilities/common/incrementalResult.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function readMultipartBody(response, nextValue) {\n return __awaiter(this, void 0, void 0, function () {\n var decoder, contentType, delimiter, boundaryVal, boundary, buffer, iterator, running, _a, value, done, chunk, searchFrom, bi, message, i, headers, contentType_1, body, result, next;\n var _b, _c;\n var _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (TextDecoder === undefined) {\n throw new Error(\"TextDecoder must be defined in the environment: please import a polyfill.\");\n }\n decoder = new TextDecoder(\"utf-8\");\n contentType = (_d = response.headers) === null || _d === void 0 ? void 0 : _d.get(\"content-type\");\n delimiter = \"boundary=\";\n boundaryVal = (contentType === null || contentType === void 0 ? void 0 : contentType.includes(delimiter)) ?\n contentType === null || contentType === void 0 ? void 0 : contentType.substring((contentType === null || contentType === void 0 ? void 0 : contentType.indexOf(delimiter)) + delimiter.length).replace(/['\"]/g, \"\").replace(/\\;(.*)/gm, \"\").trim()\n : \"-\";\n boundary = \"\\r\\n--\".concat(boundaryVal);\n buffer = \"\";\n iterator = responseIterator(response);\n running = true;\n _e.label = 1;\n case 1:\n if (!running) return [3 /*break*/, 3];\n return [4 /*yield*/, iterator.next()];\n case 2:\n _a = _e.sent(), value = _a.value, done = _a.done;\n chunk = typeof value === \"string\" ? value : decoder.decode(value);\n searchFrom = buffer.length - boundary.length + 1;\n running = !done;\n buffer += chunk;\n bi = buffer.indexOf(boundary, searchFrom);\n while (bi > -1) {\n message = void 0;\n _b = [\n buffer.slice(0, bi),\n buffer.slice(bi + boundary.length),\n ], message = _b[0], buffer = _b[1];\n i = message.indexOf(\"\\r\\n\\r\\n\");\n headers = parseHeaders(message.slice(0, i));\n contentType_1 = headers[\"content-type\"];\n if (contentType_1 &&\n contentType_1.toLowerCase().indexOf(\"application/json\") === -1) {\n throw new Error(\"Unsupported patch content type: application/json is required.\");\n }\n body = message.slice(i);\n if (body) {\n result = parseJsonBody(response, body);\n if (Object.keys(result).length > 1 ||\n \"data\" in result ||\n \"incremental\" in result ||\n \"errors\" in result ||\n \"payload\" in result) {\n if (isApolloPayloadResult(result)) {\n next = {};\n if (\"payload\" in result) {\n if (Object.keys(result).length === 1 && result.payload === null) {\n return [2 /*return*/];\n }\n next = __assign({}, result.payload);\n }\n if (\"errors\" in result) {\n next = __assign(__assign({}, next), { extensions: __assign(__assign({}, (\"extensions\" in next ? next.extensions : null)), (_c = {}, _c[PROTOCOL_ERRORS_SYMBOL] = result.errors, _c)) });\n }\n nextValue(next);\n }\n else {\n // for the last chunk with only `hasNext: false`\n // we don't need to call observer.next as there is no data/errors\n nextValue(result);\n }\n }\n else if (\n // If the chunk contains only a \"hasNext: false\", we can call\n // observer.complete() immediately.\n Object.keys(result).length === 1 &&\n \"hasNext\" in result &&\n !result.hasNext) {\n return [2 /*return*/];\n }\n }\n bi = buffer.indexOf(boundary);\n }\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/];\n }\n });\n });\n}\nexport function parseHeaders(headerText) {\n var headersInit = {};\n headerText.split(\"\\n\").forEach(function (line) {\n var i = line.indexOf(\":\");\n if (i > -1) {\n // normalize headers to lowercase\n var name_1 = line.slice(0, i).trim().toLowerCase();\n var value = line.slice(i + 1).trim();\n headersInit[name_1] = value;\n }\n });\n return headersInit;\n}\nexport function parseJsonBody(response, bodyText) {\n if (response.status >= 300) {\n // Network error\n var getResult = function () {\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n return bodyText;\n }\n };\n throwServerError(response, getResult(), \"Response not successful: Received status code \".concat(response.status));\n }\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n var parseError = err;\n parseError.name = \"ServerParseError\";\n parseError.response = response;\n parseError.statusCode = response.status;\n parseError.bodyText = bodyText;\n throw parseError;\n }\n}\nexport function handleError(err, observer) {\n // if it is a network error, BUT there is graphql result info fire\n // the next observer before calling error this gives apollo-client\n // (and react-apollo) the `graphqlErrors` and `networkErrors` to\n // pass to UI this should only happen if we *also* have data as\n // part of the response key per the spec\n if (err.result && err.result.errors && err.result.data) {\n // if we don't call next, the UI can only show networkError\n // because AC didn't get any graphqlErrors this is graphql\n // execution result info (i.e errors and possibly data) this is\n // because there is no formal spec how errors should translate to\n // http status codes. So an auth error (401) could have both data\n // from a public field, errors from a private field, and a status\n // of 401\n // {\n // user { // this will have errors\n // firstName\n // }\n // products { // this is public so will have data\n // cost\n // }\n // }\n //\n // the result of above *could* look like this:\n // {\n // data: { products: [{ cost: \"$10\" }] },\n // errors: [{\n // message: 'your session has timed out',\n // path: []\n // }]\n // }\n // status code of above would be a 401\n // in the UI you want to show data where you can, errors as data where you can\n // and use correct http status codes\n observer.next(err.result);\n }\n observer.error(err);\n}\nexport function parseAndCheckHttpResponse(operations) {\n return function (response) {\n return response\n .text()\n .then(function (bodyText) { return parseJsonBody(response, bodyText); })\n .then(function (result) {\n if (!Array.isArray(result) &&\n !hasOwnProperty.call(result, \"data\") &&\n !hasOwnProperty.call(result, \"errors\")) {\n // Data error\n throwServerError(response, result, \"Server response was missing for query '\".concat(Array.isArray(operations) ?\n operations.map(function (op) { return op.operationName; })\n : operations.operationName, \"'.\"));\n }\n return result;\n });\n };\n}\n","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport var checkFetcher = function (fetcher) {\n if (!fetcher && typeof fetch === \"undefined\") {\n throw newInvariantError(37);\n }\n};\n","import { __assign, __spreadArray } from \"tslib\";\nimport { print } from \"../../utilities/index.js\";\nvar defaultHttpOptions = {\n includeQuery: true,\n includeExtensions: false,\n preserveHeaderCase: false,\n};\nvar defaultHeaders = {\n // headers are case insensitive (https://stackoverflow.com/a/5259004)\n accept: \"*/*\",\n // The content-type header describes the type of the body of the request, and\n // so it typically only is sent with requests that actually have bodies. One\n // could imagine that Apollo Client would remove this header when constructing\n // a GET request (which has no body), but we historically have not done that.\n // This means that browsers will preflight all Apollo Client requests (even\n // GET requests). Apollo Server's CSRF prevention feature (introduced in\n // AS3.7) takes advantage of this fact and does not block requests with this\n // header. If you want to drop this header from GET requests, then you should\n // probably replace it with a `apollo-require-preflight` header, or servers\n // with CSRF prevention enabled might block your GET request. See\n // https://www.apollographql.com/docs/apollo-server/security/cors/#preventing-cross-site-request-forgery-csrf\n // for more details.\n \"content-type\": \"application/json\",\n};\nvar defaultOptions = {\n method: \"POST\",\n};\nexport var fallbackHttpConfig = {\n http: defaultHttpOptions,\n headers: defaultHeaders,\n options: defaultOptions,\n};\nexport var defaultPrinter = function (ast, printer) { return printer(ast); };\nexport function selectHttpOptionsAndBody(operation, fallbackConfig) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n configs.unshift(fallbackConfig);\n return selectHttpOptionsAndBodyInternal.apply(void 0, __spreadArray([operation,\n defaultPrinter], configs, false));\n}\nexport function selectHttpOptionsAndBodyInternal(operation, printer) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n var options = {};\n var http = {};\n configs.forEach(function (config) {\n options = __assign(__assign(__assign({}, options), config.options), { headers: __assign(__assign({}, options.headers), config.headers) });\n if (config.credentials) {\n options.credentials = config.credentials;\n }\n http = __assign(__assign({}, http), config.http);\n });\n if (options.headers) {\n options.headers = removeDuplicateHeaders(options.headers, http.preserveHeaderCase);\n }\n //The body depends on the http options\n var operationName = operation.operationName, extensions = operation.extensions, variables = operation.variables, query = operation.query;\n var body = { operationName: operationName, variables: variables };\n if (http.includeExtensions)\n body.extensions = extensions;\n // not sending the query (i.e persisted queries)\n if (http.includeQuery)\n body.query = printer(query, print);\n return {\n options: options,\n body: body,\n };\n}\n// Remove potential duplicate header names, preserving last (by insertion order).\n// This is done to prevent unintentionally duplicating a header instead of\n// overwriting it (See #8447 and #8449).\nfunction removeDuplicateHeaders(headers, preserveHeaderCase) {\n // If we're not preserving the case, just remove duplicates w/ normalization.\n if (!preserveHeaderCase) {\n var normalizedHeaders_1 = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n normalizedHeaders_1[name.toLowerCase()] = headers[name];\n });\n return normalizedHeaders_1;\n }\n // If we are preserving the case, remove duplicates w/ normalization,\n // preserving the original name.\n // This allows for non-http-spec-compliant servers that expect intentionally\n // capitalized header names (See #6741).\n var headerData = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n headerData[name.toLowerCase()] = {\n originalName: name,\n value: headers[name],\n };\n });\n var normalizedHeaders = Object.create(null);\n Object.keys(headerData).forEach(function (name) {\n normalizedHeaders[headerData[name].originalName] = headerData[name].value;\n });\n return normalizedHeaders;\n}\n","import { Observable } from \"../../utilities/index.js\";\nexport function fromError(errorValue) {\n return new Observable(function (observer) {\n observer.error(errorValue);\n });\n}\n","import { __assign, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable, hasDirectives } from \"../../utilities/index.js\";\nimport { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nimport { selectURI } from \"./selectURI.js\";\nimport { handleError, readMultipartBody, parseAndCheckHttpResponse, } from \"./parseAndCheckHttpResponse.js\";\nimport { checkFetcher } from \"./checkFetcher.js\";\nimport { selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig, } from \"./selectHttpOptionsAndBody.js\";\nimport { rewriteURIForGET } from \"./rewriteURIForGET.js\";\nimport { fromError, filterOperationVariables } from \"../utils/index.js\";\nimport { maybe, getMainDefinition, removeClientSetsFromDocument, } from \"../../utilities/index.js\";\nvar backupFetch = maybe(function () { return fetch; });\nexport var createHttpLink = function (linkOptions) {\n if (linkOptions === void 0) { linkOptions = {}; }\n var _a = linkOptions.uri, uri = _a === void 0 ? \"/graphql\" : _a, \n // use default global fetch if nothing passed in\n preferredFetch = linkOptions.fetch, _b = linkOptions.print, print = _b === void 0 ? defaultPrinter : _b, includeExtensions = linkOptions.includeExtensions, preserveHeaderCase = linkOptions.preserveHeaderCase, useGETForQueries = linkOptions.useGETForQueries, _c = linkOptions.includeUnusedVariables, includeUnusedVariables = _c === void 0 ? false : _c, requestOptions = __rest(linkOptions, [\"uri\", \"fetch\", \"print\", \"includeExtensions\", \"preserveHeaderCase\", \"useGETForQueries\", \"includeUnusedVariables\"]);\n if (globalThis.__DEV__ !== false) {\n // Make sure at least one of preferredFetch, window.fetch, or backupFetch is\n // defined, so requests won't fail at runtime.\n checkFetcher(preferredFetch || backupFetch);\n }\n var linkConfig = {\n http: { includeExtensions: includeExtensions, preserveHeaderCase: preserveHeaderCase },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n return new ApolloLink(function (operation) {\n var chosenURI = selectURI(operation, uri);\n var context = operation.getContext();\n // `apollographql-client-*` headers are automatically set if a\n // `clientAwareness` object is found in the context. These headers are\n // set first, followed by the rest of the headers pulled from\n // `context.headers`. If desired, `apollographql-client-*` headers set by\n // the `clientAwareness` object can be overridden by\n // `apollographql-client-*` headers set in `context.headers`.\n var clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;\n if (name_1) {\n clientAwarenessHeaders[\"apollographql-client-name\"] = name_1;\n }\n if (version) {\n clientAwarenessHeaders[\"apollographql-client-version\"] = version;\n }\n }\n var contextHeaders = __assign(__assign({}, clientAwarenessHeaders), context.headers);\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders,\n };\n if (hasDirectives([\"client\"], operation.query)) {\n var transformedQuery = removeClientSetsFromDocument(operation.query);\n if (!transformedQuery) {\n return fromError(new Error(\"HttpLink: Trying to send a client-only query to the server. To send to the server, ensure a non-client field is added to the query or set the `transformOptions.removeClientFields` option to `true`.\"));\n }\n operation.query = transformedQuery;\n }\n //uses fallback, link, and then context to build options\n var _b = selectHttpOptionsAndBodyInternal(operation, print, fallbackHttpConfig, linkConfig, contextConfig), options = _b.options, body = _b.body;\n if (body.variables && !includeUnusedVariables) {\n body.variables = filterOperationVariables(body.variables, operation.query);\n }\n var controller;\n if (!options.signal && typeof AbortController !== \"undefined\") {\n controller = new AbortController();\n options.signal = controller.signal;\n }\n // If requested, set method to GET if there are no mutations.\n var definitionIsMutation = function (d) {\n return d.kind === \"OperationDefinition\" && d.operation === \"mutation\";\n };\n var definitionIsSubscription = function (d) {\n return d.kind === \"OperationDefinition\" && d.operation === \"subscription\";\n };\n var isSubscription = definitionIsSubscription(getMainDefinition(operation.query));\n // does not match custom directives beginning with @defer\n var hasDefer = hasDirectives([\"defer\"], operation.query);\n if (useGETForQueries &&\n !operation.query.definitions.some(definitionIsMutation)) {\n options.method = \"GET\";\n }\n if (hasDefer || isSubscription) {\n options.headers = options.headers || {};\n var acceptHeader = \"multipart/mixed;\";\n // Omit defer-specific headers if the user attempts to defer a selection\n // set on a subscription and log a warning.\n if (isSubscription && hasDefer) {\n globalThis.__DEV__ !== false && invariant.warn(38);\n }\n if (isSubscription) {\n acceptHeader +=\n \"boundary=graphql;subscriptionSpec=1.0,application/json\";\n }\n else if (hasDefer) {\n acceptHeader += \"deferSpec=20220824,application/json\";\n }\n options.headers.accept = acceptHeader;\n }\n if (options.method === \"GET\") {\n var _c = rewriteURIForGET(chosenURI, body), newURI = _c.newURI, parseError = _c.parseError;\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n }\n else {\n try {\n options.body = serializeFetchParameter(body, \"Payload\");\n }\n catch (parseError) {\n return fromError(parseError);\n }\n }\n return new Observable(function (observer) {\n // Prefer linkOptions.fetch (preferredFetch) if provided, and otherwise\n // fall back to the *current* global window.fetch function (see issue\n // #7832), or (if all else fails) the backupFetch function we saved when\n // this module was first evaluated. This last option protects against the\n // removal of window.fetch, which is unlikely but not impossible.\n var currentFetch = preferredFetch || maybe(function () { return fetch; }) || backupFetch;\n var observerNext = observer.next.bind(observer);\n currentFetch(chosenURI, options)\n .then(function (response) {\n var _a;\n operation.setContext({ response: response });\n var ctype = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get(\"content-type\");\n if (ctype !== null && /^multipart\\/mixed/i.test(ctype)) {\n return readMultipartBody(response, observerNext);\n }\n else {\n return parseAndCheckHttpResponse(operation)(response).then(observerNext);\n }\n })\n .then(function () {\n controller = undefined;\n observer.complete();\n })\n .catch(function (err) {\n controller = undefined;\n handleError(err, observer);\n });\n return function () {\n // XXX support canceling this request\n // https://developers.google.com/web/updates/2017/09/abortable-fetch\n if (controller)\n controller.abort();\n };\n });\n });\n};\n","export var selectURI = function (operation, fallbackURI) {\n var context = operation.getContext();\n var contextURI = context.uri;\n if (contextURI) {\n return contextURI;\n }\n else if (typeof fallbackURI === \"function\") {\n return fallbackURI(operation);\n }\n else {\n return fallbackURI || \"/graphql\";\n }\n};\n","import { __assign } from \"tslib\";\nimport { visit } from \"graphql\";\nexport function filterOperationVariables(variables, query) {\n var result = __assign({}, variables);\n var unusedNames = new Set(Object.keys(variables));\n visit(query, {\n Variable: function (node, _key, parent) {\n // A variable type definition at the top level of a query is not\n // enough to silence server-side errors about the variable being\n // unused, so variable definitions do not count as usage.\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n if (parent &&\n parent.kind !== \"VariableDefinition\") {\n unusedNames.delete(node.name.value);\n }\n },\n });\n unusedNames.forEach(function (name) {\n delete result[name];\n });\n return result;\n}\n","import { serializeFetchParameter } from \"./serializeFetchParameter.js\";\n// For GET operations, returns the given URI rewritten with parameters, or a\n// parse error.\nexport function rewriteURIForGET(chosenURI, body) {\n // Implement the standard HTTP GET serialization, plus 'extensions'. Note\n // the extra level of JSON serialization!\n var queryParams = [];\n var addQueryParam = function (key, value) {\n queryParams.push(\"\".concat(key, \"=\").concat(encodeURIComponent(value)));\n };\n if (\"query\" in body) {\n addQueryParam(\"query\", body.query);\n }\n if (body.operationName) {\n addQueryParam(\"operationName\", body.operationName);\n }\n if (body.variables) {\n var serializedVariables = void 0;\n try {\n serializedVariables = serializeFetchParameter(body.variables, \"Variables map\");\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam(\"variables\", serializedVariables);\n }\n if (body.extensions) {\n var serializedExtensions = void 0;\n try {\n serializedExtensions = serializeFetchParameter(body.extensions, \"Extensions map\");\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam(\"extensions\", serializedExtensions);\n }\n // Reconstruct the URI with added query params.\n // XXX This assumes that the URI is well-formed and that it doesn't\n // already contain any of these query params. We could instead use the\n // URL API and take a polyfill (whatwg-url@6) for older browsers that\n // don't support URLSearchParams. Note that some browsers (and\n // versions of whatwg-url) support URL but not URLSearchParams!\n var fragment = \"\", preFragment = chosenURI;\n var fragmentStart = chosenURI.indexOf(\"#\");\n if (fragmentStart !== -1) {\n fragment = chosenURI.substr(fragmentStart);\n preFragment = chosenURI.substr(0, fragmentStart);\n }\n var queryParamsPrefix = preFragment.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n var newURI = preFragment + queryParamsPrefix + queryParams.join(\"&\") + fragment;\n return { newURI: newURI };\n}\n","import { __extends } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { createHttpLink } from \"./createHttpLink.js\";\nvar HttpLink = /** @class */ (function (_super) {\n __extends(HttpLink, _super);\n function HttpLink(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, createHttpLink(options).request) || this;\n _this.options = options;\n return _this;\n }\n return HttpLink;\n}(ApolloLink));\nexport { HttpLink };\n","import { Observable } from \"./Observable.js\";\n// Like Observable.prototype.map, except that the mapping function can\n// optionally return a Promise (or be async).\nexport function asyncMap(observable, mapFn, catchFn) {\n return new Observable(function (observer) {\n var promiseQueue = {\n // Normally we would initialize promiseQueue to Promise.resolve(), but\n // in this case, for backwards compatibility, we need to be careful to\n // invoke the first callback synchronously.\n then: function (callback) {\n return new Promise(function (resolve) { return resolve(callback()); });\n },\n };\n function makeCallback(examiner, key) {\n return function (arg) {\n if (examiner) {\n var both = function () {\n // If the observer is closed, we don't want to continue calling the\n // mapping function - it's result will be swallowed anyways.\n return observer.closed ?\n /* will be swallowed */ 0\n : examiner(arg);\n };\n promiseQueue = promiseQueue.then(both, both).then(function (result) { return observer.next(result); }, function (error) { return observer.error(error); });\n }\n else {\n observer[key](arg);\n }\n };\n }\n var handler = {\n next: makeCallback(mapFn, \"next\"),\n error: makeCallback(catchFn, \"error\"),\n complete: function () {\n // no need to reassign `promiseQueue`, after `observer.complete`,\n // the observer will be closed and short-circuit everything anyways\n /*promiseQueue = */ promiseQueue.then(function () { return observer.complete(); });\n },\n };\n var sub = observable.subscribe(handler);\n return function () { return sub.unsubscribe(); };\n });\n}\n","import { isNonEmptyArray } from \"./arrays.js\";\nimport { isExecutionPatchIncrementalResult } from \"./incrementalResult.js\";\nexport function graphQLResultHasError(result) {\n var errors = getGraphQLErrorsFromResult(result);\n return isNonEmptyArray(errors);\n}\nexport function getGraphQLErrorsFromResult(result) {\n var graphQLErrors = isNonEmptyArray(result.errors) ? result.errors.slice(0) : [];\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (incrementalResult) {\n if (incrementalResult.errors) {\n graphQLErrors.push.apply(graphQLErrors, incrementalResult.errors);\n }\n });\n }\n return graphQLErrors;\n}\n","export function iterateObserversSafely(observers, method, argument) {\n // In case observers is modified during iteration, we need to commit to the\n // original elements, which also provides an opportunity to filter them down\n // to just the observers with the given method.\n var observersWithMethod = [];\n observers.forEach(function (obs) { return obs[method] && observersWithMethod.push(obs); });\n observersWithMethod.forEach(function (obs) { return obs[method](argument); });\n}\n","import { Observable } from \"./Observable.js\";\nimport { canUseSymbol } from \"../common/canUse.js\";\n// Generic implementations of Observable.prototype methods like map and\n// filter need to know how to create a new Observable from an Observable\n// subclass (like Concast or ObservableQuery). Those methods assume\n// (perhaps unwisely?) that they can call the subtype's constructor with a\n// Subscriber function, even though the subclass constructor might expect\n// different parameters. Defining this static Symbol.species property on\n// the subclass is a hint to generic Observable code to use the default\n// constructor instead of trying to do `new Subclass(observer => ...)`.\nexport function fixObservableSubclass(subclass) {\n function set(key) {\n // Object.defineProperty is necessary because the Symbol.species\n // property is a getter by default in modern JS environments, so we\n // can't assign to it with a normal assignment expression.\n Object.defineProperty(subclass, key, { value: Observable });\n }\n if (canUseSymbol && Symbol.species) {\n set(Symbol.species);\n }\n // The \"@@species\" string is used as a fake Symbol.species value in some\n // polyfill systems (including the SymbolSpecies variable used by\n // zen-observable), so we should set it as well, to be safe.\n set(\"@@species\");\n return subclass;\n}\n","import { __extends } from \"tslib\";\nimport { Observable } from \"./Observable.js\";\nimport { iterateObserversSafely } from \"./iteration.js\";\nimport { fixObservableSubclass } from \"./subclassing.js\";\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\n// A Concast<T> observable concatenates the given sources into a single\n// non-overlapping sequence of Ts, automatically unwrapping any promises,\n// and broadcasts the T elements of that sequence to any number of\n// subscribers, all without creating a bunch of intermediary Observable\n// wrapper objects.\n//\n// Even though any number of observers can subscribe to the Concast, each\n// source observable is guaranteed to receive at most one subscribe call,\n// and the results are multicast to all observers.\n//\n// In addition to broadcasting every next/error message to this.observers,\n// the Concast stores the most recent message using this.latest, so any\n// new observers can immediately receive the latest message, even if it\n// was originally delivered in the past. This behavior means we can assume\n// every active observer in this.observers has received the same most\n// recent message.\n//\n// With the exception of this.latest replay, a Concast is a \"hot\"\n// observable in the sense that it does not replay past results from the\n// beginning of time for each new observer.\n//\n// Could we have used some existing RxJS class instead? Concast<T> is\n// similar to a BehaviorSubject<T>, because it is multicast and redelivers\n// the latest next/error message to new subscribers. Unlike Subject<T>,\n// Concast<T> does not expose an Observer<T> interface (this.handlers is\n// intentionally private), since Concast<T> gets its inputs from the\n// concatenated sources. If we ever switch to RxJS, there may be some\n// value in reusing their code, but for now we use zen-observable, which\n// does not contain any Subject implementations.\nvar Concast = /** @class */ (function (_super) {\n __extends(Concast, _super);\n // Not only can the individual elements of the iterable be promises, but\n // also the iterable itself can be wrapped in a promise.\n function Concast(sources) {\n var _this = _super.call(this, function (observer) {\n _this.addObserver(observer);\n return function () { return _this.removeObserver(observer); };\n }) || this;\n // Active observers receiving broadcast messages. Thanks to this.latest,\n // we can assume all observers in this Set have received the same most\n // recent message, though possibly at different times in the past.\n _this.observers = new Set();\n _this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n // Bound handler functions that can be reused for every internal\n // subscription.\n _this.handlers = {\n next: function (result) {\n if (_this.sub !== null) {\n _this.latest = [\"next\", result];\n _this.notify(\"next\", result);\n iterateObserversSafely(_this.observers, \"next\", result);\n }\n },\n error: function (error) {\n var sub = _this.sub;\n if (sub !== null) {\n // Delay unsubscribing from the underlying subscription slightly,\n // so that immediately subscribing another observer can keep the\n // subscription active.\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n _this.latest = [\"error\", error];\n _this.reject(error);\n _this.notify(\"error\", error);\n iterateObserversSafely(_this.observers, \"error\", error);\n }\n },\n complete: function () {\n var _a = _this, sub = _a.sub, _b = _a.sources, sources = _b === void 0 ? [] : _b;\n if (sub !== null) {\n // If complete is called before concast.start, this.sources may be\n // undefined, so we use a default value of [] for sources. That works\n // here because it falls into the if (!value) {...} block, which\n // appropriately terminates the Concast, even if this.sources might\n // eventually have been initialized to a non-empty array.\n var value = sources.shift();\n if (!value) {\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n if (_this.latest && _this.latest[0] === \"next\") {\n _this.resolve(_this.latest[1]);\n }\n else {\n _this.resolve();\n }\n _this.notify(\"complete\");\n // We do not store this.latest = [\"complete\"], because doing so\n // discards useful information about the previous next (or\n // error) message. Instead, if new observers subscribe after\n // this Concast has completed, they will receive the final\n // 'next' message (unless there was an error) immediately\n // followed by a 'complete' message (see addObserver).\n iterateObserversSafely(_this.observers, \"complete\");\n }\n else if (isPromiseLike(value)) {\n value.then(function (obs) { return (_this.sub = obs.subscribe(_this.handlers)); }, _this.handlers.error);\n }\n else {\n _this.sub = value.subscribe(_this.handlers);\n }\n }\n },\n };\n _this.nextResultListeners = new Set();\n // A public way to abort observation and broadcast.\n _this.cancel = function (reason) {\n _this.reject(reason);\n _this.sources = [];\n _this.handlers.complete();\n };\n // Suppress rejection warnings for this.promise, since it's perfectly\n // acceptable to pay no attention to this.promise if you're consuming\n // the results through the normal observable API.\n _this.promise.catch(function (_) { });\n // If someone accidentally tries to create a Concast using a subscriber\n // function, recover by creating an Observable from that subscriber and\n // using it as the source.\n if (typeof sources === \"function\") {\n sources = [new Observable(sources)];\n }\n if (isPromiseLike(sources)) {\n sources.then(function (iterable) { return _this.start(iterable); }, _this.handlers.error);\n }\n else {\n _this.start(sources);\n }\n return _this;\n }\n Concast.prototype.start = function (sources) {\n if (this.sub !== void 0)\n return;\n // In practice, sources is most often simply an Array of observables.\n // TODO Consider using sources[Symbol.iterator]() to take advantage\n // of the laziness of non-Array iterables.\n this.sources = Array.from(sources);\n // Calling this.handlers.complete() kicks off consumption of the first\n // source observable. It's tempting to do this step lazily in\n // addObserver, but this.promise can be accessed without calling\n // addObserver, so consumption needs to begin eagerly.\n this.handlers.complete();\n };\n Concast.prototype.deliverLastMessage = function (observer) {\n if (this.latest) {\n var nextOrError = this.latest[0];\n var method = observer[nextOrError];\n if (method) {\n method.call(observer, this.latest[1]);\n }\n // If the subscription is already closed, and the last message was\n // a 'next' message, simulate delivery of the final 'complete'\n // message again.\n if (this.sub === null && nextOrError === \"next\" && observer.complete) {\n observer.complete();\n }\n }\n };\n Concast.prototype.addObserver = function (observer) {\n if (!this.observers.has(observer)) {\n // Immediately deliver the most recent message, so we can always\n // be sure all observers have the latest information.\n this.deliverLastMessage(observer);\n this.observers.add(observer);\n }\n };\n Concast.prototype.removeObserver = function (observer) {\n if (this.observers.delete(observer) && this.observers.size < 1) {\n // In case there are still any listeners in this.nextResultListeners, and\n // no error or completion has been broadcast yet, make sure those\n // observers have a chance to run and then remove themselves from\n // this.observers.\n this.handlers.complete();\n }\n };\n Concast.prototype.notify = function (method, arg) {\n var nextResultListeners = this.nextResultListeners;\n if (nextResultListeners.size) {\n // Replacing this.nextResultListeners first ensures it does not grow while\n // we are iterating over it, potentially leading to infinite loops.\n this.nextResultListeners = new Set();\n nextResultListeners.forEach(function (listener) { return listener(method, arg); });\n }\n };\n // We need a way to run callbacks just *before* the next result (or error or\n // completion) is delivered by this Concast, so we can be sure any code that\n // runs as a result of delivering that result/error observes the effects of\n // running the callback(s). It was tempting to reuse the Observer type instead\n // of introducing NextResultListener, but that messes with the sizing and\n // maintenance of this.observers, and ends up being more code overall.\n Concast.prototype.beforeNext = function (callback) {\n var called = false;\n this.nextResultListeners.add(function (method, arg) {\n if (!called) {\n called = true;\n callback(method, arg);\n }\n });\n };\n return Concast;\n}(Observable));\nexport { Concast };\n// Necessary because the Concast constructor has a different signature\n// than the Observable constructor.\nfixObservableSubclass(Concast);\n","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { cloneDeep, compact, getOperationDefinition, Observable, iterateObserversSafely, fixObservableSubclass, getQueryDefinition, } from \"../utilities/index.js\";\nimport { equalByQuery } from \"./equalByQuery.js\";\nvar assign = Object.assign, hasOwnProperty = Object.hasOwnProperty;\nvar ObservableQuery = /** @class */ (function (_super) {\n __extends(ObservableQuery, _super);\n function ObservableQuery(_a) {\n var queryManager = _a.queryManager, queryInfo = _a.queryInfo, options = _a.options;\n var _this = _super.call(this, function (observer) {\n // Zen Observable has its own error function, so in order to log correctly\n // we need to provide a custom error callback.\n try {\n var subObserver = observer._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n }\n catch (_a) { }\n var first = !_this.observers.size;\n _this.observers.add(observer);\n // Deliver most recent error or result.\n var last = _this.last;\n if (last && last.error) {\n observer.error && observer.error(last.error);\n }\n else if (last && last.result) {\n observer.next && observer.next(last.result);\n }\n // Initiate observation of this query if it hasn't been reported to\n // the QueryManager yet.\n if (first) {\n // Blindly catching here prevents unhandled promise rejections,\n // and is safe because the ObservableQuery handles this error with\n // this.observer.error, so we're not just swallowing the error by\n // ignoring it here.\n _this.reobserve().catch(function () { });\n }\n return function () {\n if (_this.observers.delete(observer) && !_this.observers.size) {\n _this.tearDownQuery();\n }\n };\n }) || this;\n _this.observers = new Set();\n _this.subscriptions = new Set();\n // related classes\n _this.queryInfo = queryInfo;\n _this.queryManager = queryManager;\n // active state\n _this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy);\n _this.isTornDown = false;\n var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? \"cache-first\" : _d;\n var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e, \n // Make sure we don't store \"standby\" as the initialFetchPolicy.\n _f = options.initialFetchPolicy, \n // Make sure we don't store \"standby\" as the initialFetchPolicy.\n initialFetchPolicy = _f === void 0 ? fetchPolicy === \"standby\" ? defaultFetchPolicy : (fetchPolicy) : _f;\n _this.options = __assign(__assign({}, options), { \n // Remember the initial options.fetchPolicy so we can revert back to this\n // policy when variables change. This information can also be specified\n // (or overridden) by providing options.initialFetchPolicy explicitly.\n initialFetchPolicy: initialFetchPolicy, \n // This ensures this.options.fetchPolicy always has a string value, in\n // case options.fetchPolicy was not provided.\n fetchPolicy: fetchPolicy });\n _this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n var opDef = getOperationDefinition(_this.query);\n _this.queryName = opDef && opDef.name && opDef.name.value;\n return _this;\n }\n Object.defineProperty(ObservableQuery.prototype, \"query\", {\n // The `query` computed property will always reflect the document transformed\n // by the last run query. `this.options.query` will always reflect the raw\n // untransformed query to ensure document transforms with runtime conditionals\n // are run on the original document.\n get: function () {\n return this.lastQuery || this.options.query;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ObservableQuery.prototype, \"variables\", {\n // Computed shorthand for this.options.variables, preserved for\n // backwards compatibility.\n /**\n * An object containing the variables that were provided for the query.\n */\n get: function () {\n return this.options.variables;\n },\n enumerable: false,\n configurable: true\n });\n ObservableQuery.prototype.result = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n // TODO: this code doesn’t actually make sense insofar as the observer\n // will never exist in this.observers due how zen-observable wraps observables.\n // https://github.com/zenparsing/zen-observable/blob/master/src/Observable.js#L169\n var observer = {\n next: function (result) {\n resolve(result);\n // Stop the query within the QueryManager if we can before\n // this function returns.\n //\n // We do this in order to prevent observers piling up within\n // the QueryManager. Notice that we only fully unsubscribe\n // from the subscription in a setTimeout(..., 0) call. This call can\n // actually be handled by the browser at a much later time. If queries\n // are fired in the meantime, observers that should have been removed\n // from the QueryManager will continue to fire, causing an unnecessary\n // performance hit.\n _this.observers.delete(observer);\n if (!_this.observers.size) {\n _this.queryManager.removeQuery(_this.queryId);\n }\n setTimeout(function () {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n var subscription = _this.subscribe(observer);\n });\n };\n /** @internal */\n ObservableQuery.prototype.resetDiff = function () {\n this.queryInfo.resetDiff();\n };\n ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {\n if (saveAsLastResult === void 0) { saveAsLastResult = true; }\n // Use the last result as long as the variables match this.variables.\n var lastResult = this.getLastResult(true);\n var networkStatus = this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n var result = __assign(__assign({}, lastResult), { loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus });\n var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a;\n if (\n // These fetch policies should never deliver data from the cache, unless\n // redelivering a previously delivered result.\n skipCacheDataFor(fetchPolicy) ||\n // If this.options.query has @client(always: true) fields, we cannot\n // trust diff.result, since it was read from the cache without running\n // local resolvers (and it's too late to run resolvers now, since we must\n // return a result synchronously).\n this.queryManager.getDocumentInfo(this.query).hasForcedResolvers) {\n // Fall through.\n }\n else if (this.waitForOwnResult) {\n // This would usually be a part of `QueryInfo.getDiff()`.\n // which we skip in the waitForOwnResult case since we are not\n // interested in the diff.\n this.queryInfo[\"updateWatch\"]();\n }\n else {\n var diff = this.queryInfo.getDiff();\n if (diff.complete || this.options.returnPartialData) {\n result.data = diff.result;\n }\n if (equal(result.data, {})) {\n result.data = void 0;\n }\n if (diff.complete) {\n // Similar to setting result.partial to false, but taking advantage of the\n // falsiness of missing fields.\n delete result.partial;\n // If the diff is complete, and we're using a FetchPolicy that\n // terminates after a complete cache read, we can assume the next result\n // we receive will have NetworkStatus.ready and !loading.\n if (diff.complete &&\n result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === \"cache-first\" || fetchPolicy === \"cache-only\")) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n }\n else {\n result.partial = true;\n }\n if (globalThis.__DEV__ !== false &&\n !diff.complete &&\n !this.options.partialRefetch &&\n !result.loading &&\n !result.data &&\n !result.error) {\n logMissingFieldErrors(diff.missing);\n }\n }\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n return result;\n };\n // Compares newResult to the snapshot we took of this.lastResult when it was\n // first received.\n ObservableQuery.prototype.isDifferentFromLastResult = function (newResult, variables) {\n if (!this.last) {\n return true;\n }\n var resultIsDifferent = this.queryManager.getDocumentInfo(this.query).hasNonreactiveDirective ?\n !equalByQuery(this.query, this.last.result, newResult, this.variables)\n : !equal(this.last.result, newResult);\n return (resultIsDifferent || (variables && !equal(this.last.variables, variables)));\n };\n ObservableQuery.prototype.getLast = function (key, variablesMustMatch) {\n var last = this.last;\n if (last &&\n last[key] &&\n (!variablesMustMatch || equal(last.variables, this.variables))) {\n return last[key];\n }\n };\n ObservableQuery.prototype.getLastResult = function (variablesMustMatch) {\n return this.getLast(\"result\", variablesMustMatch);\n };\n ObservableQuery.prototype.getLastError = function (variablesMustMatch) {\n return this.getLast(\"error\", variablesMustMatch);\n };\n ObservableQuery.prototype.resetLastResults = function () {\n delete this.last;\n this.isTornDown = false;\n };\n ObservableQuery.prototype.resetQueryStoreErrors = function () {\n this.queryManager.resetErrors(this.queryId);\n };\n /**\n * Update the variables of this observable query, and fetch the new results.\n * This method should be preferred over `setVariables` in most use cases.\n *\n * @param variables - The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n ObservableQuery.prototype.refetch = function (variables) {\n var _a;\n var reobserveOptions = {\n // Always disable polling for refetches.\n pollInterval: 0,\n };\n // Unless the provided fetchPolicy always consults the network\n // (no-cache, network-only, or cache-and-network), override it with\n // network-only to force the refetch for this fetchQuery call.\n var fetchPolicy = this.options.fetchPolicy;\n if (fetchPolicy === \"cache-and-network\") {\n reobserveOptions.fetchPolicy = fetchPolicy;\n }\n else if (fetchPolicy === \"no-cache\") {\n reobserveOptions.fetchPolicy = \"no-cache\";\n }\n else {\n reobserveOptions.fetchPolicy = \"network-only\";\n }\n if (globalThis.__DEV__ !== false && variables && hasOwnProperty.call(variables, \"variables\")) {\n var queryDef = getQueryDefinition(this.query);\n var vars = queryDef.variableDefinitions;\n if (!vars || !vars.some(function (v) { return v.variable.name.value === \"variables\"; })) {\n globalThis.__DEV__ !== false && invariant.warn(\n 20,\n variables,\n ((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || queryDef\n );\n }\n }\n if (variables && !equal(this.options.variables, variables)) {\n // Update the existing options with new variables\n reobserveOptions.variables = this.options.variables = __assign(__assign({}, this.options.variables), variables);\n }\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n };\n /**\n * A function that helps you fetch the next set of results for a [paginated list field](https://www.apollographql.com/docs/react/pagination/core-api/).\n */\n ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n var _this = this;\n var combinedOptions = __assign(__assign({}, (fetchMoreOptions.query ? fetchMoreOptions : (__assign(__assign(__assign(__assign({}, this.options), { query: this.options.query }), fetchMoreOptions), { variables: __assign(__assign({}, this.options.variables), fetchMoreOptions.variables) })))), { \n // The fetchMore request goes immediately to the network and does\n // not automatically write its result to the cache (hence no-cache\n // instead of network-only), because we allow the caller of\n // fetchMore to provide an updateQuery callback that determines how\n // the data gets written to the cache.\n fetchPolicy: \"no-cache\" });\n combinedOptions.query = this.transformDocument(combinedOptions.query);\n var qid = this.queryManager.generateQueryId();\n // If a temporary query is passed to `fetchMore`, we don't want to store\n // it as the last query result since it may be an optimized query for\n // pagination. We will however run the transforms on the original document\n // as well as the document passed in `fetchMoreOptions` to ensure the cache\n // uses the most up-to-date document which may rely on runtime conditionals.\n this.lastQuery =\n fetchMoreOptions.query ?\n this.transformDocument(this.options.query)\n : combinedOptions.query;\n // Simulate a loading result for the original query with\n // result.networkStatus === NetworkStatus.fetchMore.\n var queryInfo = this.queryInfo;\n var originalNetworkStatus = queryInfo.networkStatus;\n queryInfo.networkStatus = NetworkStatus.fetchMore;\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.observe();\n }\n var updatedQuerySet = new Set();\n return this.queryManager\n .fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore)\n .then(function (fetchMoreResult) {\n _this.queryManager.removeQuery(qid);\n if (queryInfo.networkStatus === NetworkStatus.fetchMore) {\n queryInfo.networkStatus = originalNetworkStatus;\n }\n // Performing this cache update inside a cache.batch transaction ensures\n // any affected cache.watch watchers are notified at most once about any\n // updates. Most watchers will be using the QueryInfo class, which\n // responds to notifications by calling reobserveCacheFirst to deliver\n // fetchMore cache results back to this ObservableQuery.\n _this.queryManager.cache.batch({\n update: function (cache) {\n var updateQuery = fetchMoreOptions.updateQuery;\n if (updateQuery) {\n cache.updateQuery({\n query: _this.query,\n variables: _this.variables,\n returnPartialData: true,\n optimistic: false,\n }, function (previous) {\n return updateQuery(previous, {\n fetchMoreResult: fetchMoreResult.data,\n variables: combinedOptions.variables,\n });\n });\n }\n else {\n // If we're using a field policy instead of updateQuery, the only\n // thing we need to do is write the new data to the cache using\n // combinedOptions.variables (instead of this.variables, which is\n // what this.updateQuery uses, because it works by abusing the\n // original field value, keyed by the original variables).\n cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data: fetchMoreResult.data,\n });\n }\n },\n onWatchUpdated: function (watch) {\n // Record the DocumentNode associated with any watched query whose\n // data were updated by the cache writes above.\n updatedQuerySet.add(watch.query);\n },\n });\n return fetchMoreResult;\n })\n .finally(function () {\n // In case the cache writes above did not generate a broadcast\n // notification (which would have been intercepted by onWatchUpdated),\n // likely because the written data were the same as what was already in\n // the cache, we still want fetchMore to deliver its final loading:false\n // result with the unchanged data.\n if (!updatedQuerySet.has(_this.query)) {\n reobserveCacheFirst(_this);\n }\n });\n };\n // XXX the subscription variables are separate from the query variables.\n // if you want to update subscription variables, right now you have to do that separately,\n // and you can only do it by stopping the subscription and then subscribing again with new variables.\n /**\n * A function that enables you to execute a [subscription](https://www.apollographql.com/docs/react/data/subscriptions/), usually to subscribe to specific fields that were included in the query.\n *\n * This function returns _another_ function that you can call to terminate the subscription.\n */\n ObservableQuery.prototype.subscribeToMore = function (options) {\n var _this = this;\n var subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: function (subscriptionData) {\n var updateQuery = options.updateQuery;\n if (updateQuery) {\n _this.updateQuery(function (previous, _a) {\n var variables = _a.variables;\n return updateQuery(previous, {\n subscriptionData: subscriptionData,\n variables: variables,\n });\n });\n }\n },\n error: function (err) {\n if (options.onError) {\n options.onError(err);\n return;\n }\n globalThis.__DEV__ !== false && invariant.error(21, err);\n },\n });\n this.subscriptions.add(subscription);\n return function () {\n if (_this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n };\n ObservableQuery.prototype.setOptions = function (newOptions) {\n return this.reobserve(newOptions);\n };\n ObservableQuery.prototype.silentSetOptions = function (newOptions) {\n var mergedOptions = compact(this.options, newOptions || {});\n assign(this.options, mergedOptions);\n };\n /**\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. Most users should prefer `refetch` instead of\n * `setVariables` in order to to be properly notified of results even when\n * they come from the cache.\n *\n * Note: the `next` callback will *not* fire if the variables have not changed\n * or if the result is coming from cache.\n *\n * Note: the promise will return the old results immediately if the variables\n * have not changed.\n *\n * Note: the promise will return null immediately if the query is not active\n * (there are no subscribers).\n *\n * @param variables - The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n ObservableQuery.prototype.setVariables = function (variables) {\n if (equal(this.variables, variables)) {\n // If we have no observers, then we don't actually want to make a network\n // request. As soon as someone observes the query, the request will kick\n // off. For now, we just store any changes. (See #1077)\n return this.observers.size ? this.result() : Promise.resolve();\n }\n this.options.variables = variables;\n // See comment above\n if (!this.observers.size) {\n return Promise.resolve();\n }\n return this.reobserve({\n // Reset options.fetchPolicy to its original value.\n fetchPolicy: this.options.initialFetchPolicy,\n variables: variables,\n }, NetworkStatus.setVariables);\n };\n /**\n * A function that enables you to update the query's cached result without executing a followup GraphQL operation.\n *\n * See [using updateQuery and updateFragment](https://www.apollographql.com/docs/react/caching/cache-interaction/#using-updatequery-and-updatefragment) for additional information.\n */\n ObservableQuery.prototype.updateQuery = function (mapFn) {\n var queryManager = this.queryManager;\n var result = queryManager.cache.diff({\n query: this.options.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n var newResult = mapFn(result, {\n variables: this.variables,\n });\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n queryManager.broadcastQueries();\n }\n };\n /**\n * A function that instructs the query to begin re-executing at a specified interval (in milliseconds).\n */\n ObservableQuery.prototype.startPolling = function (pollInterval) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n };\n /**\n * A function that instructs the query to stop polling after a previous call to `startPolling`.\n */\n ObservableQuery.prototype.stopPolling = function () {\n this.options.pollInterval = 0;\n this.updatePolling();\n };\n // Update options.fetchPolicy according to options.nextFetchPolicy.\n ObservableQuery.prototype.applyNextFetchPolicy = function (reason, \n // It's possible to use this method to apply options.nextFetchPolicy to\n // options.fetchPolicy even if options !== this.options, though that happens\n // most often when the options are temporary, used for only one request and\n // then thrown away, so nextFetchPolicy may not end up mattering.\n options) {\n if (options.nextFetchPolicy) {\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a, _b = options.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? fetchPolicy : _b;\n if (fetchPolicy === \"standby\") {\n // Do nothing, leaving options.fetchPolicy unchanged.\n }\n else if (typeof options.nextFetchPolicy === \"function\") {\n // When someone chooses \"cache-and-network\" or \"network-only\" as their\n // initial FetchPolicy, they often do not want future cache updates to\n // trigger unconditional network requests, which is what repeatedly\n // applying the \"cache-and-network\" or \"network-only\" policies would\n // seem to imply. Instead, when the cache reports an update after the\n // initial network request, it may be desirable for subsequent network\n // requests to be triggered only if the cache result is incomplete. To\n // that end, the options.nextFetchPolicy option provides an easy way to\n // update options.fetchPolicy after the initial network request, without\n // having to call observableQuery.setOptions.\n options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {\n reason: reason,\n options: options,\n observable: this,\n initialFetchPolicy: initialFetchPolicy,\n });\n }\n else if (reason === \"variables-changed\") {\n options.fetchPolicy = initialFetchPolicy;\n }\n else {\n options.fetchPolicy = options.nextFetchPolicy;\n }\n }\n return options.fetchPolicy;\n };\n ObservableQuery.prototype.fetch = function (options, newNetworkStatus, query) {\n // TODO Make sure we update the networkStatus (and infer fetchVariables)\n // before actually committing to the fetch.\n this.queryManager.setObservableQuery(this);\n return this.queryManager[\"fetchConcastWithInfo\"](this.queryId, options, newNetworkStatus, query);\n };\n // Turns polling on or off based on this.options.pollInterval.\n ObservableQuery.prototype.updatePolling = function () {\n var _this = this;\n // Avoid polling in SSR mode\n if (this.queryManager.ssrMode) {\n return;\n }\n var _a = this, pollingInfo = _a.pollingInfo, pollInterval = _a.options.pollInterval;\n if (!pollInterval || !this.hasObservers()) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n if (pollingInfo && pollingInfo.interval === pollInterval) {\n return;\n }\n invariant(pollInterval, 22);\n var info = pollingInfo || (this.pollingInfo = {});\n info.interval = pollInterval;\n var maybeFetch = function () {\n var _a, _b;\n if (_this.pollingInfo) {\n if (!isNetworkRequestInFlight(_this.queryInfo.networkStatus) &&\n !((_b = (_a = _this.options).skipPollAttempt) === null || _b === void 0 ? void 0 : _b.call(_a))) {\n _this.reobserve({\n // Most fetchPolicy options don't make sense to use in a polling context, as\n // users wouldn't want to be polling the cache directly. However, network-only and\n // no-cache are both useful for when the user wants to control whether or not the\n // polled results are written to the cache.\n fetchPolicy: _this.options.initialFetchPolicy === \"no-cache\" ?\n \"no-cache\"\n : \"network-only\",\n }, NetworkStatus.poll).then(poll, poll);\n }\n else {\n poll();\n }\n }\n };\n var poll = function () {\n var info = _this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n poll();\n };\n ObservableQuery.prototype.updateLastResult = function (newResult, variables) {\n if (variables === void 0) { variables = this.variables; }\n var error = this.getLastError();\n // Preserve this.last.error unless the variables have changed.\n if (error && this.last && !equal(variables, this.last.variables)) {\n error = void 0;\n }\n return (this.last = __assign({ result: this.queryManager.assumeImmutableResults ?\n newResult\n : cloneDeep(newResult), variables: variables }, (error ? { error: error } : null)));\n };\n ObservableQuery.prototype.reobserveAsConcast = function (newOptions, newNetworkStatus) {\n var _this = this;\n this.isTornDown = false;\n var useDisposableConcast = \n // Refetching uses a disposable Concast to allow refetches using different\n // options/variables, without permanently altering the options of the\n // original ObservableQuery.\n newNetworkStatus === NetworkStatus.refetch ||\n // The fetchMore method does not actually call the reobserve method, but,\n // if it did, it would definitely use a disposable Concast.\n newNetworkStatus === NetworkStatus.fetchMore ||\n // Polling uses a disposable Concast so the polling options (which force\n // fetchPolicy to be \"network-only\" or \"no-cache\") won't override the original options.\n newNetworkStatus === NetworkStatus.poll;\n // Save the old variables, since Object.assign may modify them below.\n var oldVariables = this.options.variables;\n var oldFetchPolicy = this.options.fetchPolicy;\n var mergedOptions = compact(this.options, newOptions || {});\n var options = useDisposableConcast ?\n // Disposable Concast fetches receive a shallow copy of this.options\n // (merged with newOptions), leaving this.options unmodified.\n mergedOptions\n : assign(this.options, mergedOptions);\n // Don't update options.query with the transformed query to avoid\n // overwriting this.options.query when we aren't using a disposable concast.\n // We want to ensure we can re-run the custom document transforms the next\n // time a request is made against the original query.\n var query = this.transformDocument(options.query);\n this.lastQuery = query;\n if (!useDisposableConcast) {\n // We can skip calling updatePolling if we're not changing this.options.\n this.updatePolling();\n // Reset options.fetchPolicy to its original value when variables change,\n // unless a new fetchPolicy was provided by newOptions.\n if (newOptions &&\n newOptions.variables &&\n !equal(newOptions.variables, oldVariables) &&\n // Don't mess with the fetchPolicy if it's currently \"standby\".\n options.fetchPolicy !== \"standby\" &&\n // If we're changing the fetchPolicy anyway, don't try to change it here\n // using applyNextFetchPolicy. The explicit options.fetchPolicy wins.\n options.fetchPolicy === oldFetchPolicy) {\n this.applyNextFetchPolicy(\"variables-changed\", options);\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n this.waitForOwnResult && (this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy));\n var finishWaitingForOwnResult = function () {\n if (_this.concast === concast) {\n _this.waitForOwnResult = false;\n }\n };\n var variables = options.variables && __assign({}, options.variables);\n var _a = this.fetch(options, newNetworkStatus, query), concast = _a.concast, fromLink = _a.fromLink;\n var observer = {\n next: function (result) {\n if (equal(_this.variables, variables)) {\n finishWaitingForOwnResult();\n _this.reportResult(result, variables);\n }\n },\n error: function (error) {\n if (equal(_this.variables, variables)) {\n finishWaitingForOwnResult();\n _this.reportError(error, variables);\n }\n },\n };\n if (!useDisposableConcast && (fromLink || !this.concast)) {\n // We use the {add,remove}Observer methods directly to avoid wrapping\n // observer with an unnecessary SubscriptionObserver object.\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n }\n this.concast = concast;\n this.observer = observer;\n }\n concast.addObserver(observer);\n return concast;\n };\n ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {\n return this.reobserveAsConcast(newOptions, newNetworkStatus)\n .promise;\n };\n ObservableQuery.prototype.resubscribeAfterError = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // If `lastError` is set in the current when the subscription is re-created,\n // the subscription will immediately receive the error, which will\n // cause it to terminate again. To avoid this, we first clear\n // the last error/result from the `observableQuery` before re-starting\n // the subscription, and restore the last value afterwards so that the\n // subscription has a chance to stay open.\n var last = this.last;\n this.resetLastResults();\n var subscription = this.subscribe.apply(this, args);\n this.last = last;\n return subscription;\n };\n // (Re)deliver the current result to this.observers without applying fetch\n // policies or making network requests.\n ObservableQuery.prototype.observe = function () {\n this.reportResult(\n // Passing false is important so that this.getCurrentResult doesn't\n // save the fetchMore result as this.lastResult, causing it to be\n // ignored due to the this.isDifferentFromLastResult check in\n // this.reportResult.\n this.getCurrentResult(false), this.variables);\n };\n ObservableQuery.prototype.reportResult = function (result, variables) {\n var lastError = this.getLastError();\n var isDifferent = this.isDifferentFromLastResult(result, variables);\n // Update the last result even when isDifferentFromLastResult returns false,\n // because the query may be using the @nonreactive directive, and we want to\n // save the the latest version of any nonreactive subtrees (in case\n // getCurrentResult is called), even though we skip broadcasting changes.\n if (lastError || !result.partial || this.options.returnPartialData) {\n this.updateLastResult(result, variables);\n }\n if (lastError || isDifferent) {\n iterateObserversSafely(this.observers, \"next\", result);\n }\n };\n ObservableQuery.prototype.reportError = function (error, variables) {\n // Since we don't get the current result on errors, only the error, we\n // must mirror the updates that occur in QueryStore.markQueryError here\n var errorResult = __assign(__assign({}, this.getLastResult()), { error: error, errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false });\n this.updateLastResult(errorResult, variables);\n iterateObserversSafely(this.observers, \"error\", (this.last.error = error));\n };\n ObservableQuery.prototype.hasObservers = function () {\n return this.observers.size > 0;\n };\n ObservableQuery.prototype.tearDownQuery = function () {\n if (this.isTornDown)\n return;\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n delete this.observer;\n }\n this.stopPolling();\n // stop all active GraphQL subscriptions\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n };\n ObservableQuery.prototype.transformDocument = function (document) {\n return this.queryManager.transform(document);\n };\n return ObservableQuery;\n}(Observable));\nexport { ObservableQuery };\n// Necessary because the ObservableQuery constructor has a different\n// signature than the Observable constructor.\nfixObservableSubclass(ObservableQuery);\n// Reobserve with fetchPolicy effectively set to \"cache-first\", triggering\n// delivery of any new data from the cache, possibly falling back to the network\n// if any cache data are missing. This allows _complete_ cache results to be\n// delivered without also kicking off unnecessary network requests when\n// this.options.fetchPolicy is \"cache-and-network\" or \"network-only\". When\n// this.options.fetchPolicy is any other policy (\"cache-first\", \"cache-only\",\n// \"standby\", or \"no-cache\"), we call this.reobserve() as usual.\nexport function reobserveCacheFirst(obsQuery) {\n var _a = obsQuery.options, fetchPolicy = _a.fetchPolicy, nextFetchPolicy = _a.nextFetchPolicy;\n if (fetchPolicy === \"cache-and-network\" || fetchPolicy === \"network-only\") {\n return obsQuery.reobserve({\n fetchPolicy: \"cache-first\",\n // Use a temporary nextFetchPolicy function that replaces itself with the\n // previous nextFetchPolicy value and returns the original fetchPolicy.\n nextFetchPolicy: function (currentFetchPolicy, context) {\n // Replace this nextFetchPolicy function in the options object with the\n // original this.options.nextFetchPolicy value.\n this.nextFetchPolicy = nextFetchPolicy;\n // If the original nextFetchPolicy value was a function, give it a\n // chance to decide what happens here.\n if (typeof this.nextFetchPolicy === \"function\") {\n return this.nextFetchPolicy(currentFetchPolicy, context);\n }\n // Otherwise go back to the original this.options.fetchPolicy.\n return fetchPolicy;\n },\n });\n }\n return obsQuery.reobserve();\n}\nfunction defaultSubscriptionObserverErrorCallback(error) {\n globalThis.__DEV__ !== false && invariant.error(23, error.message, error.stack);\n}\nexport function logMissingFieldErrors(missing) {\n if (globalThis.__DEV__ !== false && missing) {\n globalThis.__DEV__ !== false && invariant.debug(24, missing);\n }\n}\nfunction skipCacheDataFor(fetchPolicy /* `undefined` would mean `\"cache-first\"` */) {\n return (fetchPolicy === \"network-only\" ||\n fetchPolicy === \"no-cache\" ||\n fetchPolicy === \"standby\");\n}\n","import { Kind } from \"./kinds.mjs\";\nexport function isDefinitionNode(node) {\n return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node);\n}\nexport function isExecutableDefinitionNode(node) {\n return node.kind === Kind.OPERATION_DEFINITION || node.kind === Kind.FRAGMENT_DEFINITION;\n}\nexport function isSelectionNode(node) {\n return node.kind === Kind.FIELD || node.kind === Kind.FRAGMENT_SPREAD || node.kind === Kind.INLINE_FRAGMENT;\n}\nexport function isValueNode(node) {\n return node.kind === Kind.VARIABLE || node.kind === Kind.INT || node.kind === Kind.FLOAT || node.kind === Kind.STRING || node.kind === Kind.BOOLEAN || node.kind === Kind.NULL || node.kind === Kind.ENUM || node.kind === Kind.LIST || node.kind === Kind.OBJECT;\n}\nexport function isTypeNode(node) {\n return node.kind === Kind.NAMED_TYPE || node.kind === Kind.LIST_TYPE || node.kind === Kind.NON_NULL_TYPE;\n}\nexport function isTypeSystemDefinitionNode(node) {\n return node.kind === Kind.SCHEMA_DEFINITION || isTypeDefinitionNode(node) || node.kind === Kind.DIRECTIVE_DEFINITION;\n}\nexport function isTypeDefinitionNode(node) {\n return node.kind === Kind.SCALAR_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.INTERFACE_TYPE_DEFINITION || node.kind === Kind.UNION_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION;\n}\nexport function isTypeSystemExtensionNode(node) {\n return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nexport function isTypeExtensionNode(node) {\n return node.kind === Kind.SCALAR_TYPE_EXTENSION || node.kind === Kind.OBJECT_TYPE_EXTENSION || node.kind === Kind.INTERFACE_TYPE_EXTENSION || node.kind === Kind.UNION_TYPE_EXTENSION || node.kind === Kind.ENUM_TYPE_EXTENSION || node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION;\n}\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { visit, BREAK, isSelectionNode } from \"graphql\";\nimport { argumentsObjectFromField, buildQueryFromSelectionSet, createFragmentMap, getFragmentDefinitions, getMainDefinition, hasDirectives, isField, isInlineFragment, mergeDeep, mergeDeepArray, removeClientSetsFromDocument, resultKeyNameFromField, shouldInclude, } from \"../utilities/index.js\";\nimport { cacheSlot } from \"../cache/index.js\";\nvar LocalState = /** @class */ (function () {\n function LocalState(_a) {\n var cache = _a.cache, client = _a.client, resolvers = _a.resolvers, fragmentMatcher = _a.fragmentMatcher;\n this.selectionsToResolveCache = new WeakMap();\n this.cache = cache;\n if (client) {\n this.client = client;\n }\n if (resolvers) {\n this.addResolvers(resolvers);\n }\n if (fragmentMatcher) {\n this.setFragmentMatcher(fragmentMatcher);\n }\n }\n LocalState.prototype.addResolvers = function (resolvers) {\n var _this = this;\n this.resolvers = this.resolvers || {};\n if (Array.isArray(resolvers)) {\n resolvers.forEach(function (resolverGroup) {\n _this.resolvers = mergeDeep(_this.resolvers, resolverGroup);\n });\n }\n else {\n this.resolvers = mergeDeep(this.resolvers, resolvers);\n }\n };\n LocalState.prototype.setResolvers = function (resolvers) {\n this.resolvers = {};\n this.addResolvers(resolvers);\n };\n LocalState.prototype.getResolvers = function () {\n return this.resolvers || {};\n };\n // Run local client resolvers against the incoming query and remote data.\n // Locally resolved field values are merged with the incoming remote data,\n // and returned. Note that locally resolved fields will overwrite\n // remote data using the same field name.\n LocalState.prototype.runResolvers = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var document = _b.document, remoteResult = _b.remoteResult, context = _b.context, variables = _b.variables, _c = _b.onlyRunForcedResolvers, onlyRunForcedResolvers = _c === void 0 ? false : _c;\n return __generator(this, function (_d) {\n if (document) {\n return [2 /*return*/, this.resolveDocument(document, remoteResult.data, context, variables, this.fragmentMatcher, onlyRunForcedResolvers).then(function (localResult) { return (__assign(__assign({}, remoteResult), { data: localResult.result })); })];\n }\n return [2 /*return*/, remoteResult];\n });\n });\n };\n LocalState.prototype.setFragmentMatcher = function (fragmentMatcher) {\n this.fragmentMatcher = fragmentMatcher;\n };\n LocalState.prototype.getFragmentMatcher = function () {\n return this.fragmentMatcher;\n };\n // Client queries contain everything in the incoming document (if a @client\n // directive is found).\n LocalState.prototype.clientQuery = function (document) {\n if (hasDirectives([\"client\"], document)) {\n if (this.resolvers) {\n return document;\n }\n }\n return null;\n };\n // Server queries are stripped of all @client based selection sets.\n LocalState.prototype.serverQuery = function (document) {\n return removeClientSetsFromDocument(document);\n };\n LocalState.prototype.prepareContext = function (context) {\n var cache = this.cache;\n return __assign(__assign({}, context), { cache: cache, \n // Getting an entry's cache key is useful for local state resolvers.\n getCacheKey: function (obj) {\n return cache.identify(obj);\n } });\n };\n // To support `@client @export(as: \"someVar\")` syntax, we'll first resolve\n // @client @export fields locally, then pass the resolved values back to be\n // used alongside the original operation variables.\n LocalState.prototype.addExportedVariables = function (document_1) {\n return __awaiter(this, arguments, void 0, function (document, variables, context) {\n if (variables === void 0) { variables = {}; }\n if (context === void 0) { context = {}; }\n return __generator(this, function (_a) {\n if (document) {\n return [2 /*return*/, this.resolveDocument(document, this.buildRootValueFromCache(document, variables) || {}, this.prepareContext(context), variables).then(function (data) { return (__assign(__assign({}, variables), data.exportedVariables)); })];\n }\n return [2 /*return*/, __assign({}, variables)];\n });\n });\n };\n LocalState.prototype.shouldForceResolvers = function (document) {\n var forceResolvers = false;\n visit(document, {\n Directive: {\n enter: function (node) {\n if (node.name.value === \"client\" && node.arguments) {\n forceResolvers = node.arguments.some(function (arg) {\n return arg.name.value === \"always\" &&\n arg.value.kind === \"BooleanValue\" &&\n arg.value.value === true;\n });\n if (forceResolvers) {\n return BREAK;\n }\n }\n },\n },\n });\n return forceResolvers;\n };\n // Query the cache and return matching data.\n LocalState.prototype.buildRootValueFromCache = function (document, variables) {\n return this.cache.diff({\n query: buildQueryFromSelectionSet(document),\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n };\n LocalState.prototype.resolveDocument = function (document_1, rootValue_1) {\n return __awaiter(this, arguments, void 0, function (document, rootValue, context, variables, fragmentMatcher, onlyRunForcedResolvers) {\n var mainDefinition, fragments, fragmentMap, selectionsToResolve, definitionOperation, defaultOperationType, _a, cache, client, execContext, isClientFieldDescendant;\n if (context === void 0) { context = {}; }\n if (variables === void 0) { variables = {}; }\n if (fragmentMatcher === void 0) { fragmentMatcher = function () { return true; }; }\n if (onlyRunForcedResolvers === void 0) { onlyRunForcedResolvers = false; }\n return __generator(this, function (_b) {\n mainDefinition = getMainDefinition(document);\n fragments = getFragmentDefinitions(document);\n fragmentMap = createFragmentMap(fragments);\n selectionsToResolve = this.collectSelectionsToResolve(mainDefinition, fragmentMap);\n definitionOperation = mainDefinition.operation;\n defaultOperationType = definitionOperation ?\n definitionOperation.charAt(0).toUpperCase() +\n definitionOperation.slice(1)\n : \"Query\";\n _a = this, cache = _a.cache, client = _a.client;\n execContext = {\n fragmentMap: fragmentMap,\n context: __assign(__assign({}, context), { cache: cache, client: client }),\n variables: variables,\n fragmentMatcher: fragmentMatcher,\n defaultOperationType: defaultOperationType,\n exportedVariables: {},\n selectionsToResolve: selectionsToResolve,\n onlyRunForcedResolvers: onlyRunForcedResolvers,\n };\n isClientFieldDescendant = false;\n return [2 /*return*/, this.resolveSelectionSet(mainDefinition.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (result) { return ({\n result: result,\n exportedVariables: execContext.exportedVariables,\n }); })];\n });\n });\n };\n LocalState.prototype.resolveSelectionSet = function (selectionSet, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var fragmentMap, context, variables, resultsToMerge, execute;\n var _this = this;\n return __generator(this, function (_a) {\n fragmentMap = execContext.fragmentMap, context = execContext.context, variables = execContext.variables;\n resultsToMerge = [rootValue];\n execute = function (selection) { return __awaiter(_this, void 0, void 0, function () {\n var fragment, typeCondition;\n return __generator(this, function (_a) {\n if (!isClientFieldDescendant &&\n !execContext.selectionsToResolve.has(selection)) {\n // Skip selections without @client directives\n // (still processing if one of the ancestors or one of the child fields has @client directive)\n return [2 /*return*/];\n }\n if (!shouldInclude(selection, variables)) {\n // Skip this entirely.\n return [2 /*return*/];\n }\n if (isField(selection)) {\n return [2 /*return*/, this.resolveField(selection, isClientFieldDescendant, rootValue, execContext).then(function (fieldResult) {\n var _a;\n if (typeof fieldResult !== \"undefined\") {\n resultsToMerge.push((_a = {},\n _a[resultKeyNameFromField(selection)] = fieldResult,\n _a));\n }\n })];\n }\n if (isInlineFragment(selection)) {\n fragment = selection;\n }\n else {\n // This is a named fragment.\n fragment = fragmentMap[selection.name.value];\n invariant(fragment, 18, selection.name.value);\n }\n if (fragment && fragment.typeCondition) {\n typeCondition = fragment.typeCondition.name.value;\n if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n return [2 /*return*/, this.resolveSelectionSet(fragment.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (fragmentResult) {\n resultsToMerge.push(fragmentResult);\n })];\n }\n }\n return [2 /*return*/];\n });\n }); };\n return [2 /*return*/, Promise.all(selectionSet.selections.map(execute)).then(function () {\n return mergeDeepArray(resultsToMerge);\n })];\n });\n });\n };\n LocalState.prototype.resolveField = function (field, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var variables, fieldName, aliasedFieldName, aliasUsed, defaultResult, resultPromise, resolverType, resolverMap, resolve;\n var _this = this;\n return __generator(this, function (_a) {\n if (!rootValue) {\n return [2 /*return*/, null];\n }\n variables = execContext.variables;\n fieldName = field.name.value;\n aliasedFieldName = resultKeyNameFromField(field);\n aliasUsed = fieldName !== aliasedFieldName;\n defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n resultPromise = Promise.resolve(defaultResult);\n // Usually all local resolvers are run when passing through here, but\n // if we've specifically identified that we only want to run forced\n // resolvers (that is, resolvers for fields marked with\n // `@client(always: true)`), then we'll skip running non-forced resolvers.\n if (!execContext.onlyRunForcedResolvers ||\n this.shouldForceResolvers(field)) {\n resolverType = rootValue.__typename || execContext.defaultOperationType;\n resolverMap = this.resolvers && this.resolvers[resolverType];\n if (resolverMap) {\n resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n if (resolve) {\n resultPromise = Promise.resolve(\n // In case the resolve function accesses reactive variables,\n // set cacheSlot to the current cache instance.\n cacheSlot.withValue(this.cache, resolve, [\n rootValue,\n argumentsObjectFromField(field, variables),\n execContext.context,\n { field: field, fragmentMap: execContext.fragmentMap },\n ]));\n }\n }\n }\n return [2 /*return*/, resultPromise.then(function (result) {\n var _a, _b;\n if (result === void 0) { result = defaultResult; }\n // If an @export directive is associated with the current field, store\n // the `as` export variable name and current result for later use.\n if (field.directives) {\n field.directives.forEach(function (directive) {\n if (directive.name.value === \"export\" && directive.arguments) {\n directive.arguments.forEach(function (arg) {\n if (arg.name.value === \"as\" && arg.value.kind === \"StringValue\") {\n execContext.exportedVariables[arg.value.value] = result;\n }\n });\n }\n });\n }\n // Handle all scalar types here.\n if (!field.selectionSet) {\n return result;\n }\n // From here down, the field has a selection set, which means it's trying\n // to query a GraphQLObjectType.\n if (result == null) {\n // Basically any field in a GraphQL response can be null, or missing\n return result;\n }\n var isClientField = (_b = (_a = field.directives) === null || _a === void 0 ? void 0 : _a.some(function (d) { return d.name.value === \"client\"; })) !== null && _b !== void 0 ? _b : false;\n if (Array.isArray(result)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant || isClientField, result, execContext);\n }\n // Returned value is an object, and the query has a sub-selection. Recurse.\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant || isClientField, result, execContext);\n }\n })];\n });\n });\n };\n LocalState.prototype.resolveSubSelectedArray = function (field, isClientFieldDescendant, result, execContext) {\n var _this = this;\n return Promise.all(result.map(function (item) {\n if (item === null) {\n return null;\n }\n // This is a nested array, recurse.\n if (Array.isArray(item)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant, item, execContext);\n }\n // This is an object, run the selection set on it.\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant, item, execContext);\n }\n }));\n };\n // Collect selection nodes on paths from document root down to all @client directives.\n // This function takes into account transitive fragment spreads.\n // Complexity equals to a single `visit` over the full document.\n LocalState.prototype.collectSelectionsToResolve = function (mainDefinition, fragmentMap) {\n var isSingleASTNode = function (node) { return !Array.isArray(node); };\n var selectionsToResolveCache = this.selectionsToResolveCache;\n function collectByDefinition(definitionNode) {\n if (!selectionsToResolveCache.has(definitionNode)) {\n var matches_1 = new Set();\n selectionsToResolveCache.set(definitionNode, matches_1);\n visit(definitionNode, {\n Directive: function (node, _, __, ___, ancestors) {\n if (node.name.value === \"client\") {\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n }\n },\n FragmentSpread: function (spread, _, __, ___, ancestors) {\n var fragment = fragmentMap[spread.name.value];\n invariant(fragment, 19, spread.name.value);\n var fragmentSelections = collectByDefinition(fragment);\n if (fragmentSelections.size > 0) {\n // Fragment for this spread contains @client directive (either directly or transitively)\n // Collect selection nodes on paths from the root down to fields with the @client directive\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n matches_1.add(spread);\n fragmentSelections.forEach(function (selection) {\n matches_1.add(selection);\n });\n }\n },\n });\n }\n return selectionsToResolveCache.get(definitionNode);\n }\n return collectByDefinition(mainDefinition);\n };\n return LocalState;\n}());\nexport { LocalState };\n","import { __assign } from \"tslib\";\nimport { equal } from \"@wry/equality\";\nimport { DeepMerger } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/index.js\";\nimport { reobserveCacheFirst } from \"./ObservableQuery.js\";\nimport { isNonEmptyArray, graphQLResultHasError, canUseWeakMap, } from \"../utilities/index.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nvar destructiveMethodCounts = new (canUseWeakMap ? WeakMap : Map)();\nfunction wrapDestructiveCacheMethod(cache, methodName) {\n var original = cache[methodName];\n if (typeof original === \"function\") {\n // @ts-expect-error this is just too generic to be typed correctly\n cache[methodName] = function () {\n destructiveMethodCounts.set(cache, \n // The %1e15 allows the count to wrap around to 0 safely every\n // quadrillion evictions, so there's no risk of overflow. To be\n // clear, this is more of a pedantic principle than something\n // that matters in any conceivable practical scenario.\n (destructiveMethodCounts.get(cache) + 1) % 1e15);\n // @ts-expect-error this is just too generic to be typed correctly\n return original.apply(this, arguments);\n };\n }\n}\nfunction cancelNotifyTimeout(info) {\n if (info[\"notifyTimeout\"]) {\n clearTimeout(info[\"notifyTimeout\"]);\n info[\"notifyTimeout\"] = void 0;\n }\n}\n// A QueryInfo object represents a single query managed by the\n// QueryManager, which tracks all QueryInfo objects by queryId in its\n// this.queries Map. QueryInfo objects store the latest results and errors\n// for the given query, and are responsible for reporting those results to\n// the corresponding ObservableQuery, via the QueryInfo.notify method.\n// Results are reported asynchronously whenever setDiff marks the\n// QueryInfo object as dirty, though a call to the QueryManager's\n// broadcastQueries method may trigger the notification before it happens\n// automatically. This class used to be a simple interface type without\n// any field privacy or meaningful methods, which is why it still has so\n// many public fields. The effort to lock down and simplify the QueryInfo\n// interface is ongoing, and further improvements are welcome.\nvar QueryInfo = /** @class */ (function () {\n function QueryInfo(queryManager, queryId) {\n if (queryId === void 0) { queryId = queryManager.generateQueryId(); }\n this.queryId = queryId;\n this.listeners = new Set();\n this.document = null;\n this.lastRequestId = 1;\n this.stopped = false;\n this.dirty = false;\n this.observableQuery = null;\n var cache = (this.cache = queryManager.cache);\n // Track how often cache.evict is called, since we want eviction to\n // override the feud-stopping logic in the markResult method, by\n // causing shouldWrite to return true. Wrapping the cache.evict method\n // is a bit of a hack, but it saves us from having to make eviction\n // counting an official part of the ApolloCache API.\n if (!destructiveMethodCounts.has(cache)) {\n destructiveMethodCounts.set(cache, 0);\n wrapDestructiveCacheMethod(cache, \"evict\");\n wrapDestructiveCacheMethod(cache, \"modify\");\n wrapDestructiveCacheMethod(cache, \"reset\");\n }\n }\n QueryInfo.prototype.init = function (query) {\n var networkStatus = query.networkStatus || NetworkStatus.loading;\n if (this.variables &&\n this.networkStatus !== NetworkStatus.loading &&\n !equal(this.variables, query.variables)) {\n networkStatus = NetworkStatus.setVariables;\n }\n if (!equal(query.variables, this.variables)) {\n this.lastDiff = void 0;\n }\n Object.assign(this, {\n document: query.document,\n variables: query.variables,\n networkError: null,\n graphQLErrors: this.graphQLErrors || [],\n networkStatus: networkStatus,\n });\n if (query.observableQuery) {\n this.setObservableQuery(query.observableQuery);\n }\n if (query.lastRequestId) {\n this.lastRequestId = query.lastRequestId;\n }\n return this;\n };\n QueryInfo.prototype.reset = function () {\n cancelNotifyTimeout(this);\n this.dirty = false;\n };\n QueryInfo.prototype.resetDiff = function () {\n this.lastDiff = void 0;\n };\n QueryInfo.prototype.getDiff = function () {\n var options = this.getDiffOptions();\n if (this.lastDiff && equal(options, this.lastDiff.options)) {\n return this.lastDiff.diff;\n }\n this.updateWatch(this.variables);\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return { complete: false };\n }\n var diff = this.cache.diff(options);\n this.updateLastDiff(diff, options);\n return diff;\n };\n QueryInfo.prototype.updateLastDiff = function (diff, options) {\n this.lastDiff =\n diff ?\n {\n diff: diff,\n options: options || this.getDiffOptions(),\n }\n : void 0;\n };\n QueryInfo.prototype.getDiffOptions = function (variables) {\n var _a;\n if (variables === void 0) { variables = this.variables; }\n return {\n query: this.document,\n variables: variables,\n returnPartialData: true,\n optimistic: true,\n canonizeResults: (_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.options.canonizeResults,\n };\n };\n QueryInfo.prototype.setDiff = function (diff) {\n var _this = this;\n var _a;\n var oldDiff = this.lastDiff && this.lastDiff.diff;\n // If we are trying to deliver an incomplete cache result, we avoid\n // reporting it if the query has errored, otherwise we let the broadcast try\n // and repair the partial result by refetching the query. This check avoids\n // a situation where a query that errors and another succeeds with\n // overlapping data does not report the partial data result to the errored\n // query.\n //\n // See https://github.com/apollographql/apollo-client/issues/11400 for more\n // information on this issue.\n if (diff && !diff.complete && ((_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.getLastError())) {\n return;\n }\n this.updateLastDiff(diff);\n if (!this.dirty && !equal(oldDiff && oldDiff.result, diff && diff.result)) {\n this.dirty = true;\n if (!this.notifyTimeout) {\n this.notifyTimeout = setTimeout(function () { return _this.notify(); }, 0);\n }\n }\n };\n QueryInfo.prototype.setObservableQuery = function (oq) {\n var _this = this;\n if (oq === this.observableQuery)\n return;\n if (this.oqListener) {\n this.listeners.delete(this.oqListener);\n }\n this.observableQuery = oq;\n if (oq) {\n oq[\"queryInfo\"] = this;\n this.listeners.add((this.oqListener = function () {\n var diff = _this.getDiff();\n if (diff.fromOptimisticTransaction) {\n // If this diff came from an optimistic transaction, deliver the\n // current cache data to the ObservableQuery, but don't perform a\n // reobservation, since oq.reobserveCacheFirst might make a network\n // request, and we never want to trigger network requests in the\n // middle of optimistic updates.\n oq[\"observe\"]();\n }\n else {\n // Otherwise, make the ObservableQuery \"reobserve\" the latest data\n // using a temporary fetch policy of \"cache-first\", so complete cache\n // results have a chance to be delivered without triggering additional\n // network requests, even when options.fetchPolicy is \"network-only\"\n // or \"cache-and-network\". All other fetch policies are preserved by\n // this method, and are handled by calling oq.reobserve(). If this\n // reobservation is spurious, isDifferentFromLastResult still has a\n // chance to catch it before delivery to ObservableQuery subscribers.\n reobserveCacheFirst(oq);\n }\n }));\n }\n else {\n delete this.oqListener;\n }\n };\n QueryInfo.prototype.notify = function () {\n var _this = this;\n cancelNotifyTimeout(this);\n if (this.shouldNotify()) {\n this.listeners.forEach(function (listener) { return listener(_this); });\n }\n this.dirty = false;\n };\n QueryInfo.prototype.shouldNotify = function () {\n if (!this.dirty || !this.listeners.size) {\n return false;\n }\n if (isNetworkRequestInFlight(this.networkStatus) && this.observableQuery) {\n var fetchPolicy = this.observableQuery.options.fetchPolicy;\n if (fetchPolicy !== \"cache-only\" && fetchPolicy !== \"cache-and-network\") {\n return false;\n }\n }\n return true;\n };\n QueryInfo.prototype.stop = function () {\n if (!this.stopped) {\n this.stopped = true;\n // Cancel the pending notify timeout\n this.reset();\n this.cancel();\n // Revert back to the no-op version of cancel inherited from\n // QueryInfo.prototype.\n this.cancel = QueryInfo.prototype.cancel;\n var oq = this.observableQuery;\n if (oq)\n oq.stopPolling();\n }\n };\n // This method is a no-op by default, until/unless overridden by the\n // updateWatch method.\n QueryInfo.prototype.cancel = function () { };\n QueryInfo.prototype.updateWatch = function (variables) {\n var _this = this;\n if (variables === void 0) { variables = this.variables; }\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return;\n }\n var watchOptions = __assign(__assign({}, this.getDiffOptions(variables)), { watcher: this, callback: function (diff) { return _this.setDiff(diff); } });\n if (!this.lastWatch || !equal(watchOptions, this.lastWatch)) {\n this.cancel();\n this.cancel = this.cache.watch((this.lastWatch = watchOptions));\n }\n };\n QueryInfo.prototype.resetLastWrite = function () {\n this.lastWrite = void 0;\n };\n QueryInfo.prototype.shouldWrite = function (result, variables) {\n var lastWrite = this.lastWrite;\n return !(lastWrite &&\n // If cache.evict has been called since the last time we wrote this\n // data into the cache, there's a chance writing this result into\n // the cache will repair what was evicted.\n lastWrite.dmCount === destructiveMethodCounts.get(this.cache) &&\n equal(variables, lastWrite.variables) &&\n equal(result.data, lastWrite.result.data));\n };\n QueryInfo.prototype.markResult = function (result, document, options, cacheWriteBehavior) {\n var _this = this;\n var merger = new DeepMerger();\n var graphQLErrors = isNonEmptyArray(result.errors) ? result.errors.slice(0) : [];\n // Cancel the pending notify timeout (if it exists) to prevent extraneous network\n // requests. To allow future notify timeouts, diff and dirty are reset as well.\n this.reset();\n if (\"incremental\" in result && isNonEmptyArray(result.incremental)) {\n var mergedData = mergeIncrementalData(this.getDiff().result, result);\n result.data = mergedData;\n // Detect the first chunk of a deferred query and merge it with existing\n // cache data. This ensures a `cache-first` fetch policy that returns\n // partial cache data or a `cache-and-network` fetch policy that already\n // has full data in the cache does not complain when trying to merge the\n // initial deferred server data with existing cache data.\n }\n else if (\"hasNext\" in result && result.hasNext) {\n var diff = this.getDiff();\n result.data = merger.merge(diff.result, result.data);\n }\n this.graphQLErrors = graphQLErrors;\n if (options.fetchPolicy === \"no-cache\") {\n this.updateLastDiff({ result: result.data, complete: true }, this.getDiffOptions(options.variables));\n }\n else if (cacheWriteBehavior !== 0 /* CacheWriteBehavior.FORBID */) {\n if (shouldWriteResult(result, options.errorPolicy)) {\n // Using a transaction here so we have a chance to read the result\n // back from the cache before the watch callback fires as a result\n // of writeQuery, so we can store the new diff quietly and ignore\n // it when we receive it redundantly from the watch callback.\n this.cache.performTransaction(function (cache) {\n if (_this.shouldWrite(result, options.variables)) {\n cache.writeQuery({\n query: document,\n data: result.data,\n variables: options.variables,\n overwrite: cacheWriteBehavior === 1 /* CacheWriteBehavior.OVERWRITE */,\n });\n _this.lastWrite = {\n result: result,\n variables: options.variables,\n dmCount: destructiveMethodCounts.get(_this.cache),\n };\n }\n else {\n // If result is the same as the last result we received from\n // the network (and the variables match too), avoid writing\n // result into the cache again. The wisdom of skipping this\n // cache write is far from obvious, since any cache write\n // could be the one that puts the cache back into a desired\n // state, fixing corruption or missing data. However, if we\n // always write every network result into the cache, we enable\n // feuds between queries competing to update the same data in\n // incompatible ways, which can lead to an endless cycle of\n // cache broadcasts and useless network requests. As with any\n // feud, eventually one side must step back from the brink,\n // letting the other side(s) have the last word(s). There may\n // be other points where we could break this cycle, such as\n // silencing the broadcast for cache.writeQuery (not a good\n // idea, since it just delays the feud a bit) or somehow\n // avoiding the network request that just happened (also bad,\n // because the server could return useful new data). All\n // options considered, skipping this cache write seems to be\n // the least damaging place to break the cycle, because it\n // reflects the intuition that we recently wrote this exact\n // result into the cache, so the cache *should* already/still\n // contain this data. If some other query has clobbered that\n // data in the meantime, that's too bad, but there will be no\n // winners if every query blindly reverts to its own version\n // of the data. This approach also gives the network a chance\n // to return new data, which will be written into the cache as\n // usual, notifying only those queries that are directly\n // affected by the cache updates, as usual. In the future, an\n // even more sophisticated cache could perhaps prevent or\n // mitigate the clobbering somehow, but that would make this\n // particular cache write even less important, and thus\n // skipping it would be even safer than it is today.\n if (_this.lastDiff && _this.lastDiff.diff.complete) {\n // Reuse data from the last good (complete) diff that we\n // received, when possible.\n result.data = _this.lastDiff.diff.result;\n return;\n }\n // If the previous this.diff was incomplete, fall through to\n // re-reading the latest data with cache.diff, below.\n }\n var diffOptions = _this.getDiffOptions(options.variables);\n var diff = cache.diff(diffOptions);\n // In case the QueryManager stops this QueryInfo before its\n // results are delivered, it's important to avoid restarting the\n // cache watch when markResult is called. We also avoid updating\n // the watch if we are writing a result that doesn't match the current\n // variables to avoid race conditions from broadcasting the wrong\n // result.\n if (!_this.stopped && equal(_this.variables, options.variables)) {\n // Any time we're about to update this.diff, we need to make\n // sure we've started watching the cache.\n _this.updateWatch(options.variables);\n }\n // If we're allowed to write to the cache, and we can read a\n // complete result from the cache, update result.data to be the\n // result from the cache, rather than the raw network result.\n // Set without setDiff to avoid triggering a notify call, since\n // we have other ways of notifying for this result.\n _this.updateLastDiff(diff, diffOptions);\n if (diff.complete) {\n result.data = diff.result;\n }\n });\n }\n else {\n this.lastWrite = void 0;\n }\n }\n };\n QueryInfo.prototype.markReady = function () {\n this.networkError = null;\n return (this.networkStatus = NetworkStatus.ready);\n };\n QueryInfo.prototype.markError = function (error) {\n this.networkStatus = NetworkStatus.error;\n this.lastWrite = void 0;\n this.reset();\n if (error.graphQLErrors) {\n this.graphQLErrors = error.graphQLErrors;\n }\n if (error.networkError) {\n this.networkError = error.networkError;\n }\n return error;\n };\n return QueryInfo;\n}());\nexport { QueryInfo };\nexport function shouldWriteResult(result, errorPolicy) {\n if (errorPolicy === void 0) { errorPolicy = \"none\"; }\n var ignoreErrors = errorPolicy === \"ignore\" || errorPolicy === \"all\";\n var writeWithErrors = !graphQLResultHasError(result);\n if (!writeWithErrors && ignoreErrors && result.data) {\n writeWithErrors = true;\n }\n return writeWithErrors;\n}\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant, newInvariantError } from \"../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { execute } from \"../link/core/index.js\";\nimport { hasDirectives, isExecutionPatchIncrementalResult, isExecutionPatchResult, removeDirectivesFromDocument, } from \"../utilities/index.js\";\nimport { canonicalStringify } from \"../cache/index.js\";\nimport { getDefaultValues, getOperationDefinition, getOperationName, hasClientExports, graphQLResultHasError, getGraphQLErrorsFromResult, Observable, asyncMap, isNonEmptyArray, Concast, makeUniqueId, isDocumentNode, isNonNullObject, DocumentTransform, } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/common/incrementalResult.js\";\nimport { ApolloError, isApolloError, graphQLResultHasProtocolErrors, } from \"../errors/index.js\";\nimport { ObservableQuery, logMissingFieldErrors } from \"./ObservableQuery.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { LocalState } from \"./LocalState.js\";\nimport { QueryInfo, shouldWriteResult, } from \"./QueryInfo.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../errors/index.js\";\nimport { print } from \"../utilities/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar IGNORE = Object.create(null);\nimport { Trie } from \"@wry/trie\";\nimport { AutoCleanedWeakCache, cacheSizes } from \"../utilities/index.js\";\nvar QueryManager = /** @class */ (function () {\n function QueryManager(_a) {\n var cache = _a.cache, link = _a.link, defaultOptions = _a.defaultOptions, documentTransform = _a.documentTransform, _b = _a.queryDeduplication, queryDeduplication = _b === void 0 ? false : _b, onBroadcast = _a.onBroadcast, _c = _a.ssrMode, ssrMode = _c === void 0 ? false : _c, _d = _a.clientAwareness, clientAwareness = _d === void 0 ? {} : _d, localState = _a.localState, _e = _a.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? !!cache.assumeImmutableResults : _e, defaultContext = _a.defaultContext;\n var _this = this;\n this.clientAwareness = {};\n // All the queries that the QueryManager is currently managing (not\n // including mutations and subscriptions).\n this.queries = new Map();\n // Maps from queryId strings to Promise rejection functions for\n // currently active queries and fetches.\n // Use protected instead of private field so\n // @apollo/experimental-nextjs-app-support can access type info.\n this.fetchCancelFns = new Map();\n this.transformCache = new AutoCleanedWeakCache(cacheSizes[\"queryManager.getDocumentInfo\"] ||\n 2000 /* defaultCacheSizes[\"queryManager.getDocumentInfo\"] */);\n this.queryIdCounter = 1;\n this.requestIdCounter = 1;\n this.mutationIdCounter = 1;\n // Use protected instead of private field so\n // @apollo/experimental-nextjs-app-support can access type info.\n this.inFlightLinkObservables = new Trie(false);\n var defaultDocumentTransform = new DocumentTransform(function (document) { return _this.cache.transformDocument(document); }, \n // Allow the apollo cache to manage its own transform caches\n { cache: false });\n this.cache = cache;\n this.link = link;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.queryDeduplication = queryDeduplication;\n this.clientAwareness = clientAwareness;\n this.localState = localState || new LocalState({ cache: cache });\n this.ssrMode = ssrMode;\n this.assumeImmutableResults = assumeImmutableResults;\n this.documentTransform =\n documentTransform ?\n defaultDocumentTransform\n .concat(documentTransform)\n // The custom document transform may add new fragment spreads or new\n // field selections, so we want to give the cache a chance to run\n // again. For example, the InMemoryCache adds __typename to field\n // selections and fragments from the fragment registry.\n .concat(defaultDocumentTransform)\n : defaultDocumentTransform;\n this.defaultContext = defaultContext || Object.create(null);\n if ((this.onBroadcast = onBroadcast)) {\n this.mutationStore = Object.create(null);\n }\n }\n /**\n * Call this method to terminate any active query processes, making it safe\n * to dispose of this QueryManager instance.\n */\n QueryManager.prototype.stop = function () {\n var _this = this;\n this.queries.forEach(function (_info, queryId) {\n _this.stopQueryNoBroadcast(queryId);\n });\n this.cancelPendingFetches(newInvariantError(25));\n };\n QueryManager.prototype.cancelPendingFetches = function (error) {\n this.fetchCancelFns.forEach(function (cancel) { return cancel(error); });\n this.fetchCancelFns.clear();\n };\n QueryManager.prototype.mutate = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var mutationId, hasClientExports, mutationStoreValue, isOptimistic, self;\n var _c, _d;\n var mutation = _b.mutation, variables = _b.variables, optimisticResponse = _b.optimisticResponse, updateQueries = _b.updateQueries, _e = _b.refetchQueries, refetchQueries = _e === void 0 ? [] : _e, _f = _b.awaitRefetchQueries, awaitRefetchQueries = _f === void 0 ? false : _f, updateWithProxyFn = _b.update, onQueryUpdated = _b.onQueryUpdated, _g = _b.fetchPolicy, fetchPolicy = _g === void 0 ? ((_c = this.defaultOptions.mutate) === null || _c === void 0 ? void 0 : _c.fetchPolicy) || \"network-only\" : _g, _h = _b.errorPolicy, errorPolicy = _h === void 0 ? ((_d = this.defaultOptions.mutate) === null || _d === void 0 ? void 0 : _d.errorPolicy) || \"none\" : _h, keepRootFields = _b.keepRootFields, context = _b.context;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n invariant(mutation, 26);\n invariant(fetchPolicy === \"network-only\" || fetchPolicy === \"no-cache\", 27);\n mutationId = this.generateMutationId();\n mutation = this.cache.transformForLink(this.transform(mutation));\n hasClientExports = this.getDocumentInfo(mutation).hasClientExports;\n variables = this.getVariables(mutation, variables);\n if (!hasClientExports) return [3 /*break*/, 2];\n return [4 /*yield*/, this.localState.addExportedVariables(mutation, variables, context)];\n case 1:\n variables = (_j.sent());\n _j.label = 2;\n case 2:\n mutationStoreValue = this.mutationStore &&\n (this.mutationStore[mutationId] = {\n mutation: mutation,\n variables: variables,\n loading: true,\n error: null,\n });\n isOptimistic = optimisticResponse &&\n this.markMutationOptimistic(optimisticResponse, {\n mutationId: mutationId,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n updateQueries: updateQueries,\n update: updateWithProxyFn,\n keepRootFields: keepRootFields,\n });\n this.broadcastQueries();\n self = this;\n return [2 /*return*/, new Promise(function (resolve, reject) {\n return asyncMap(self.getObservableFromLink(mutation, __assign(__assign({}, context), { optimisticResponse: isOptimistic ? optimisticResponse : void 0 }), variables, false), function (result) {\n if (graphQLResultHasError(result) && errorPolicy === \"none\") {\n throw new ApolloError({\n graphQLErrors: getGraphQLErrorsFromResult(result),\n });\n }\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = null;\n }\n var storeResult = __assign({}, result);\n if (typeof refetchQueries === \"function\") {\n refetchQueries = refetchQueries(storeResult);\n }\n if (errorPolicy === \"ignore\" && graphQLResultHasError(storeResult)) {\n delete storeResult.errors;\n }\n return self.markMutationResult({\n mutationId: mutationId,\n result: storeResult,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n update: updateWithProxyFn,\n updateQueries: updateQueries,\n awaitRefetchQueries: awaitRefetchQueries,\n refetchQueries: refetchQueries,\n removeOptimistic: isOptimistic ? mutationId : void 0,\n onQueryUpdated: onQueryUpdated,\n keepRootFields: keepRootFields,\n });\n }).subscribe({\n next: function (storeResult) {\n self.broadcastQueries();\n // Since mutations might receive multiple payloads from the\n // ApolloLink chain (e.g. when used with @defer),\n // we resolve with a SingleExecutionResult or after the final\n // ExecutionPatchResult has arrived and we have assembled the\n // multipart response into a single result.\n if (!(\"hasNext\" in storeResult) || storeResult.hasNext === false) {\n resolve(storeResult);\n }\n },\n error: function (err) {\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = err;\n }\n if (isOptimistic) {\n self.cache.removeOptimistic(mutationId);\n }\n self.broadcastQueries();\n reject(err instanceof ApolloError ? err : (new ApolloError({\n networkError: err,\n })));\n },\n });\n })];\n }\n });\n });\n };\n QueryManager.prototype.markMutationResult = function (mutation, cache) {\n var _this = this;\n if (cache === void 0) { cache = this.cache; }\n var result = mutation.result;\n var cacheWrites = [];\n var skipCache = mutation.fetchPolicy === \"no-cache\";\n if (!skipCache && shouldWriteResult(result, mutation.errorPolicy)) {\n if (!isExecutionPatchIncrementalResult(result)) {\n cacheWrites.push({\n result: result.data,\n dataId: \"ROOT_MUTATION\",\n query: mutation.document,\n variables: mutation.variables,\n });\n }\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n // The cache complains if passed a mutation where it expects a\n // query, so we transform mutations and subscriptions to queries\n // (only once, thanks to this.transformCache).\n query: this.getDocumentInfo(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n var mergedData = void 0;\n if (diff.result) {\n mergedData = mergeIncrementalData(diff.result, result);\n }\n if (typeof mergedData !== \"undefined\") {\n // cast the ExecutionPatchResult to FetchResult here since\n // ExecutionPatchResult never has `data` when returned from the server\n result.data = mergedData;\n cacheWrites.push({\n result: mergedData,\n dataId: \"ROOT_MUTATION\",\n query: mutation.document,\n variables: mutation.variables,\n });\n }\n }\n var updateQueries_1 = mutation.updateQueries;\n if (updateQueries_1) {\n this.queries.forEach(function (_a, queryId) {\n var observableQuery = _a.observableQuery;\n var queryName = observableQuery && observableQuery.queryName;\n if (!queryName || !hasOwnProperty.call(updateQueries_1, queryName)) {\n return;\n }\n var updater = updateQueries_1[queryName];\n var _b = _this.queries.get(queryId), document = _b.document, variables = _b.variables;\n // Read the current query result from the store.\n var _c = cache.diff({\n query: document,\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }), currentQueryResult = _c.result, complete = _c.complete;\n if (complete && currentQueryResult) {\n // Run our reducer using the current query result and the mutation result.\n var nextQueryResult = updater(currentQueryResult, {\n mutationResult: result,\n queryName: (document && getOperationName(document)) || void 0,\n queryVariables: variables,\n });\n // Write the modified result back into the store if we got a new result.\n if (nextQueryResult) {\n cacheWrites.push({\n result: nextQueryResult,\n dataId: \"ROOT_QUERY\",\n query: document,\n variables: variables,\n });\n }\n }\n });\n }\n }\n if (cacheWrites.length > 0 ||\n (mutation.refetchQueries || \"\").length > 0 ||\n mutation.update ||\n mutation.onQueryUpdated ||\n mutation.removeOptimistic) {\n var results_1 = [];\n this.refetchQueries({\n updateCache: function (cache) {\n if (!skipCache) {\n cacheWrites.forEach(function (write) { return cache.write(write); });\n }\n // If the mutation has some writes associated with it then we need to\n // apply those writes to the store by running this reducer again with\n // a write action.\n var update = mutation.update;\n // Determine whether result is a SingleExecutionResult,\n // or the final ExecutionPatchResult.\n var isFinalResult = !isExecutionPatchResult(result) ||\n (isExecutionPatchIncrementalResult(result) && !result.hasNext);\n if (update) {\n if (!skipCache) {\n // Re-read the ROOT_MUTATION data we just wrote into the cache\n // (the first cache.write call in the cacheWrites.forEach loop\n // above), so field read functions have a chance to run for\n // fields within mutation result objects.\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n // The cache complains if passed a mutation where it expects a\n // query, so we transform mutations and subscriptions to queries\n // (only once, thanks to this.transformCache).\n query: _this.getDocumentInfo(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n if (diff.complete) {\n result = __assign(__assign({}, result), { data: diff.result });\n if (\"incremental\" in result) {\n delete result.incremental;\n }\n if (\"hasNext\" in result) {\n delete result.hasNext;\n }\n }\n }\n // If we've received the whole response,\n // either a SingleExecutionResult or the final ExecutionPatchResult,\n // call the update function.\n if (isFinalResult) {\n update(cache, result, {\n context: mutation.context,\n variables: mutation.variables,\n });\n }\n }\n // TODO Do this with cache.evict({ id: 'ROOT_MUTATION' }) but make it\n // shallow to allow rolling back optimistic evictions.\n if (!skipCache && !mutation.keepRootFields && isFinalResult) {\n cache.modify({\n id: \"ROOT_MUTATION\",\n fields: function (value, _a) {\n var fieldName = _a.fieldName, DELETE = _a.DELETE;\n return fieldName === \"__typename\" ? value : DELETE;\n },\n });\n }\n },\n include: mutation.refetchQueries,\n // Write the final mutation.result to the root layer of the cache.\n optimistic: false,\n // Remove the corresponding optimistic layer at the same time as we\n // write the final non-optimistic result.\n removeOptimistic: mutation.removeOptimistic,\n // Let the caller of client.mutate optionally determine the refetching\n // behavior for watched queries after the mutation.update function runs.\n // If no onQueryUpdated function was provided for this mutation, pass\n // null instead of undefined to disable the default refetching behavior.\n onQueryUpdated: mutation.onQueryUpdated || null,\n }).forEach(function (result) { return results_1.push(result); });\n if (mutation.awaitRefetchQueries || mutation.onQueryUpdated) {\n // Returning a promise here makes the mutation await that promise, so we\n // include results in that promise's work if awaitRefetchQueries or an\n // onQueryUpdated function was specified.\n return Promise.all(results_1).then(function () { return result; });\n }\n }\n return Promise.resolve(result);\n };\n QueryManager.prototype.markMutationOptimistic = function (optimisticResponse, mutation) {\n var _this = this;\n var data = typeof optimisticResponse === \"function\" ?\n optimisticResponse(mutation.variables, { IGNORE: IGNORE })\n : optimisticResponse;\n if (data === IGNORE) {\n return false;\n }\n this.cache.recordOptimisticTransaction(function (cache) {\n try {\n _this.markMutationResult(__assign(__assign({}, mutation), { result: { data: data } }), cache);\n }\n catch (error) {\n globalThis.__DEV__ !== false && invariant.error(error);\n }\n }, mutation.mutationId);\n return true;\n };\n QueryManager.prototype.fetchQuery = function (queryId, options, networkStatus) {\n return this.fetchConcastWithInfo(queryId, options, networkStatus).concast\n .promise;\n };\n QueryManager.prototype.getQueryStore = function () {\n var store = Object.create(null);\n this.queries.forEach(function (info, queryId) {\n store[queryId] = {\n variables: info.variables,\n networkStatus: info.networkStatus,\n networkError: info.networkError,\n graphQLErrors: info.graphQLErrors,\n };\n });\n return store;\n };\n QueryManager.prototype.resetErrors = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo) {\n queryInfo.networkError = undefined;\n queryInfo.graphQLErrors = [];\n }\n };\n QueryManager.prototype.transform = function (document) {\n return this.documentTransform.transformDocument(document);\n };\n QueryManager.prototype.getDocumentInfo = function (document) {\n var transformCache = this.transformCache;\n if (!transformCache.has(document)) {\n var cacheEntry = {\n // TODO These three calls (hasClientExports, shouldForceResolvers, and\n // usesNonreactiveDirective) are performing independent full traversals\n // of the transformed document. We should consider merging these\n // traversals into a single pass in the future, though the work is\n // cached after the first time.\n hasClientExports: hasClientExports(document),\n hasForcedResolvers: this.localState.shouldForceResolvers(document),\n hasNonreactiveDirective: hasDirectives([\"nonreactive\"], document),\n clientQuery: this.localState.clientQuery(document),\n serverQuery: removeDirectivesFromDocument([\n { name: \"client\", remove: true },\n { name: \"connection\" },\n { name: \"nonreactive\" },\n ], document),\n defaultVars: getDefaultValues(getOperationDefinition(document)),\n // Transform any mutation or subscription operations to query operations\n // so we can read/write them from/to the cache.\n asQuery: __assign(__assign({}, document), { definitions: document.definitions.map(function (def) {\n if (def.kind === \"OperationDefinition\" &&\n def.operation !== \"query\") {\n return __assign(__assign({}, def), { operation: \"query\" });\n }\n return def;\n }) }),\n };\n transformCache.set(document, cacheEntry);\n }\n return transformCache.get(document);\n };\n QueryManager.prototype.getVariables = function (document, variables) {\n return __assign(__assign({}, this.getDocumentInfo(document).defaultVars), variables);\n };\n QueryManager.prototype.watchQuery = function (options) {\n var query = this.transform(options.query);\n // assign variable default values if supplied\n // NOTE: We don't modify options.query here with the transformed query to\n // ensure observable.options.query is set to the raw untransformed query.\n options = __assign(__assign({}, options), { variables: this.getVariables(query, options.variables) });\n if (typeof options.notifyOnNetworkStatusChange === \"undefined\") {\n options.notifyOnNetworkStatusChange = false;\n }\n var queryInfo = new QueryInfo(this);\n var observable = new ObservableQuery({\n queryManager: this,\n queryInfo: queryInfo,\n options: options,\n });\n observable[\"lastQuery\"] = query;\n this.queries.set(observable.queryId, queryInfo);\n // We give queryInfo the transformed query to ensure the first cache diff\n // uses the transformed query instead of the raw query\n queryInfo.init({\n document: query,\n observableQuery: observable,\n variables: observable.variables,\n });\n return observable;\n };\n QueryManager.prototype.query = function (options, queryId) {\n var _this = this;\n if (queryId === void 0) { queryId = this.generateQueryId(); }\n invariant(options.query, 28);\n invariant(options.query.kind === \"Document\", 29);\n invariant(!options.returnPartialData, 30);\n invariant(!options.pollInterval, 31);\n return this.fetchQuery(queryId, __assign(__assign({}, options), { query: this.transform(options.query) })).finally(function () { return _this.stopQuery(queryId); });\n };\n QueryManager.prototype.generateQueryId = function () {\n return String(this.queryIdCounter++);\n };\n QueryManager.prototype.generateRequestId = function () {\n return this.requestIdCounter++;\n };\n QueryManager.prototype.generateMutationId = function () {\n return String(this.mutationIdCounter++);\n };\n QueryManager.prototype.stopQueryInStore = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryInStoreNoBroadcast = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo)\n queryInfo.stop();\n };\n QueryManager.prototype.clearStore = function (options) {\n if (options === void 0) { options = {\n discardWatches: true,\n }; }\n // Before we have sent the reset action to the store, we can no longer\n // rely on the results returned by in-flight requests since these may\n // depend on values that previously existed in the data portion of the\n // store. So, we cancel the promises and observers that we have issued\n // so far and not yet resolved (in the case of queries).\n this.cancelPendingFetches(newInvariantError(32));\n this.queries.forEach(function (queryInfo) {\n if (queryInfo.observableQuery) {\n // Set loading to true so listeners don't trigger unless they want\n // results with partial data.\n queryInfo.networkStatus = NetworkStatus.loading;\n }\n else {\n queryInfo.stop();\n }\n });\n if (this.mutationStore) {\n this.mutationStore = Object.create(null);\n }\n // begin removing data from the store\n return this.cache.reset(options);\n };\n QueryManager.prototype.getObservableQueries = function (include) {\n var _this = this;\n if (include === void 0) { include = \"active\"; }\n var queries = new Map();\n var queryNamesAndDocs = new Map();\n var legacyQueryOptions = new Set();\n if (Array.isArray(include)) {\n include.forEach(function (desc) {\n if (typeof desc === \"string\") {\n queryNamesAndDocs.set(desc, false);\n }\n else if (isDocumentNode(desc)) {\n queryNamesAndDocs.set(_this.transform(desc), false);\n }\n else if (isNonNullObject(desc) && desc.query) {\n legacyQueryOptions.add(desc);\n }\n });\n }\n this.queries.forEach(function (_a, queryId) {\n var oq = _a.observableQuery, document = _a.document;\n if (oq) {\n if (include === \"all\") {\n queries.set(queryId, oq);\n return;\n }\n var queryName = oq.queryName, fetchPolicy = oq.options.fetchPolicy;\n if (fetchPolicy === \"standby\" ||\n (include === \"active\" && !oq.hasObservers())) {\n return;\n }\n if (include === \"active\" ||\n (queryName && queryNamesAndDocs.has(queryName)) ||\n (document && queryNamesAndDocs.has(document))) {\n queries.set(queryId, oq);\n if (queryName)\n queryNamesAndDocs.set(queryName, true);\n if (document)\n queryNamesAndDocs.set(document, true);\n }\n }\n });\n if (legacyQueryOptions.size) {\n legacyQueryOptions.forEach(function (options) {\n // We will be issuing a fresh network request for this query, so we\n // pre-allocate a new query ID here, using a special prefix to enable\n // cleaning up these temporary queries later, after fetching.\n var queryId = makeUniqueId(\"legacyOneTimeQuery\");\n var queryInfo = _this.getQuery(queryId).init({\n document: options.query,\n variables: options.variables,\n });\n var oq = new ObservableQuery({\n queryManager: _this,\n queryInfo: queryInfo,\n options: __assign(__assign({}, options), { fetchPolicy: \"network-only\" }),\n });\n invariant(oq.queryId === queryId);\n queryInfo.setObservableQuery(oq);\n queries.set(queryId, oq);\n });\n }\n if (globalThis.__DEV__ !== false && queryNamesAndDocs.size) {\n queryNamesAndDocs.forEach(function (included, nameOrDoc) {\n if (!included) {\n globalThis.__DEV__ !== false && invariant.warn(typeof nameOrDoc === \"string\" ? 33 : 34, nameOrDoc);\n }\n });\n }\n return queries;\n };\n QueryManager.prototype.reFetchObservableQueries = function (includeStandby) {\n var _this = this;\n if (includeStandby === void 0) { includeStandby = false; }\n var observableQueryPromises = [];\n this.getObservableQueries(includeStandby ? \"all\" : \"active\").forEach(function (observableQuery, queryId) {\n var fetchPolicy = observableQuery.options.fetchPolicy;\n observableQuery.resetLastResults();\n if (includeStandby ||\n (fetchPolicy !== \"standby\" && fetchPolicy !== \"cache-only\")) {\n observableQueryPromises.push(observableQuery.refetch());\n }\n _this.getQuery(queryId).setDiff(null);\n });\n this.broadcastQueries();\n return Promise.all(observableQueryPromises);\n };\n QueryManager.prototype.setObservableQuery = function (observableQuery) {\n this.getQuery(observableQuery.queryId).setObservableQuery(observableQuery);\n };\n QueryManager.prototype.startGraphQLSubscription = function (_a) {\n var _this = this;\n var query = _a.query, fetchPolicy = _a.fetchPolicy, _b = _a.errorPolicy, errorPolicy = _b === void 0 ? \"none\" : _b, variables = _a.variables, _c = _a.context, context = _c === void 0 ? {} : _c;\n query = this.transform(query);\n variables = this.getVariables(query, variables);\n var makeObservable = function (variables) {\n return _this.getObservableFromLink(query, context, variables).map(function (result) {\n if (fetchPolicy !== \"no-cache\") {\n // the subscription interface should handle not sending us results we no longer subscribe to.\n // XXX I don't think we ever send in an object with errors, but we might in the future...\n if (shouldWriteResult(result, errorPolicy)) {\n _this.cache.write({\n query: query,\n result: result.data,\n dataId: \"ROOT_SUBSCRIPTION\",\n variables: variables,\n });\n }\n _this.broadcastQueries();\n }\n var hasErrors = graphQLResultHasError(result);\n var hasProtocolErrors = graphQLResultHasProtocolErrors(result);\n if (hasErrors || hasProtocolErrors) {\n var errors = {};\n if (hasErrors) {\n errors.graphQLErrors = result.errors;\n }\n if (hasProtocolErrors) {\n errors.protocolErrors = result.extensions[PROTOCOL_ERRORS_SYMBOL];\n }\n // `errorPolicy` is a mechanism for handling GraphQL errors, according\n // to our documentation, so we throw protocol errors regardless of the\n // set error policy.\n if (errorPolicy === \"none\" || hasProtocolErrors) {\n throw new ApolloError(errors);\n }\n }\n if (errorPolicy === \"ignore\") {\n delete result.errors;\n }\n return result;\n });\n };\n if (this.getDocumentInfo(query).hasClientExports) {\n var observablePromise_1 = this.localState\n .addExportedVariables(query, variables, context)\n .then(makeObservable);\n return new Observable(function (observer) {\n var sub = null;\n observablePromise_1.then(function (observable) { return (sub = observable.subscribe(observer)); }, observer.error);\n return function () { return sub && sub.unsubscribe(); };\n });\n }\n return makeObservable(variables);\n };\n QueryManager.prototype.stopQuery = function (queryId) {\n this.stopQueryNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryNoBroadcast = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.removeQuery(queryId);\n };\n QueryManager.prototype.removeQuery = function (queryId) {\n // teardown all links\n // Both `QueryManager.fetchRequest` and `QueryManager.query` create separate promises\n // that each add their reject functions to fetchCancelFns.\n // A query created with `QueryManager.query()` could trigger a `QueryManager.fetchRequest`.\n // The same queryId could have two rejection fns for two promises\n this.fetchCancelFns.delete(queryId);\n if (this.queries.has(queryId)) {\n this.getQuery(queryId).stop();\n this.queries.delete(queryId);\n }\n };\n QueryManager.prototype.broadcastQueries = function () {\n if (this.onBroadcast)\n this.onBroadcast();\n this.queries.forEach(function (info) { return info.notify(); });\n };\n QueryManager.prototype.getLocalState = function () {\n return this.localState;\n };\n QueryManager.prototype.getObservableFromLink = function (query, context, variables, \n // Prefer context.queryDeduplication if specified.\n deduplication) {\n var _this = this;\n var _a;\n if (deduplication === void 0) { deduplication = (_a = context === null || context === void 0 ? void 0 : context.queryDeduplication) !== null && _a !== void 0 ? _a : this.queryDeduplication; }\n var observable;\n var _b = this.getDocumentInfo(query), serverQuery = _b.serverQuery, clientQuery = _b.clientQuery;\n if (serverQuery) {\n var _c = this, inFlightLinkObservables_1 = _c.inFlightLinkObservables, link = _c.link;\n var operation = {\n query: serverQuery,\n variables: variables,\n operationName: getOperationName(serverQuery) || void 0,\n context: this.prepareContext(__assign(__assign({}, context), { forceFetch: !deduplication })),\n };\n context = operation.context;\n if (deduplication) {\n var printedServerQuery_1 = print(serverQuery);\n var varJson_1 = canonicalStringify(variables);\n var entry = inFlightLinkObservables_1.lookup(printedServerQuery_1, varJson_1);\n observable = entry.observable;\n if (!observable) {\n var concast = new Concast([\n execute(link, operation),\n ]);\n observable = entry.observable = concast;\n concast.beforeNext(function () {\n inFlightLinkObservables_1.remove(printedServerQuery_1, varJson_1);\n });\n }\n }\n else {\n observable = new Concast([\n execute(link, operation),\n ]);\n }\n }\n else {\n observable = new Concast([Observable.of({ data: {} })]);\n context = this.prepareContext(context);\n }\n if (clientQuery) {\n observable = asyncMap(observable, function (result) {\n return _this.localState.runResolvers({\n document: clientQuery,\n remoteResult: result,\n context: context,\n variables: variables,\n });\n });\n }\n return observable;\n };\n QueryManager.prototype.getResultsFromLink = function (queryInfo, cacheWriteBehavior, options) {\n var requestId = (queryInfo.lastRequestId = this.generateRequestId());\n // Performing transformForLink here gives this.cache a chance to fill in\n // missing fragment definitions (for example) before sending this document\n // through the link chain.\n var linkDocument = this.cache.transformForLink(options.query);\n return asyncMap(this.getObservableFromLink(linkDocument, options.context, options.variables), function (result) {\n var graphQLErrors = getGraphQLErrorsFromResult(result);\n var hasErrors = graphQLErrors.length > 0;\n // If we interrupted this request by calling getResultsFromLink again\n // with the same QueryInfo object, we ignore the old results.\n if (requestId >= queryInfo.lastRequestId) {\n if (hasErrors && options.errorPolicy === \"none\") {\n // Throwing here effectively calls observer.error.\n throw queryInfo.markError(new ApolloError({\n graphQLErrors: graphQLErrors,\n }));\n }\n // Use linkDocument rather than queryInfo.document so the\n // operation/fragments used to write the result are the same as the\n // ones used to obtain it from the link.\n queryInfo.markResult(result, linkDocument, options, cacheWriteBehavior);\n queryInfo.markReady();\n }\n var aqr = {\n data: result.data,\n loading: false,\n networkStatus: NetworkStatus.ready,\n };\n if (hasErrors && options.errorPolicy !== \"ignore\") {\n aqr.errors = graphQLErrors;\n aqr.networkStatus = NetworkStatus.error;\n }\n return aqr;\n }, function (networkError) {\n var error = isApolloError(networkError) ? networkError : (new ApolloError({ networkError: networkError }));\n // Avoid storing errors from older interrupted queries.\n if (requestId >= queryInfo.lastRequestId) {\n queryInfo.markError(error);\n }\n throw error;\n });\n };\n QueryManager.prototype.fetchConcastWithInfo = function (queryId, options, \n // The initial networkStatus for this fetch, most often\n // NetworkStatus.loading, but also possibly fetchMore, poll, refetch,\n // or setVariables.\n networkStatus, query) {\n var _this = this;\n if (networkStatus === void 0) { networkStatus = NetworkStatus.loading; }\n if (query === void 0) { query = options.query; }\n var variables = this.getVariables(query, options.variables);\n var queryInfo = this.getQuery(queryId);\n var defaults = this.defaultOptions.watchQuery;\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? (defaults && defaults.fetchPolicy) || \"cache-first\" : _a, _b = options.errorPolicy, errorPolicy = _b === void 0 ? (defaults && defaults.errorPolicy) || \"none\" : _b, _c = options.returnPartialData, returnPartialData = _c === void 0 ? false : _c, _d = options.notifyOnNetworkStatusChange, notifyOnNetworkStatusChange = _d === void 0 ? false : _d, _e = options.context, context = _e === void 0 ? {} : _e;\n var normalized = Object.assign({}, options, {\n query: query,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n returnPartialData: returnPartialData,\n notifyOnNetworkStatusChange: notifyOnNetworkStatusChange,\n context: context,\n });\n var fromVariables = function (variables) {\n // Since normalized is always a fresh copy of options, it's safe to\n // modify its properties here, rather than creating yet another new\n // WatchQueryOptions object.\n normalized.variables = variables;\n var sourcesWithInfo = _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);\n if (\n // If we're in standby, postpone advancing options.fetchPolicy using\n // applyNextFetchPolicy.\n normalized.fetchPolicy !== \"standby\" &&\n // The \"standby\" policy currently returns [] from fetchQueryByPolicy, so\n // this is another way to detect when nothing was done/fetched.\n sourcesWithInfo.sources.length > 0 &&\n queryInfo.observableQuery) {\n queryInfo.observableQuery[\"applyNextFetchPolicy\"](\"after-fetch\", options);\n }\n return sourcesWithInfo;\n };\n // This cancel function needs to be set before the concast is created,\n // in case concast creation synchronously cancels the request.\n var cleanupCancelFn = function () { return _this.fetchCancelFns.delete(queryId); };\n this.fetchCancelFns.set(queryId, function (reason) {\n cleanupCancelFn();\n // This delay ensures the concast variable has been initialized.\n setTimeout(function () { return concast.cancel(reason); });\n });\n var concast, containsDataFromLink;\n // If the query has @export(as: ...) directives, then we need to\n // process those directives asynchronously. When there are no\n // @export directives (the common case), we deliberately avoid\n // wrapping the result of this.fetchQueryByPolicy in a Promise,\n // since the timing of result delivery is (unfortunately) important\n // for backwards compatibility. TODO This code could be simpler if\n // we deprecated and removed LocalState.\n if (this.getDocumentInfo(normalized.query).hasClientExports) {\n concast = new Concast(this.localState\n .addExportedVariables(normalized.query, normalized.variables, normalized.context)\n .then(fromVariables)\n .then(function (sourcesWithInfo) { return sourcesWithInfo.sources; }));\n // there is just no way we can synchronously get the *right* value here,\n // so we will assume `true`, which is the behaviour before the bug fix in\n // #10597. This means that bug is not fixed in that case, and is probably\n // un-fixable with reasonable effort for the edge case of @export as\n // directives.\n containsDataFromLink = true;\n }\n else {\n var sourcesWithInfo = fromVariables(normalized.variables);\n containsDataFromLink = sourcesWithInfo.fromLink;\n concast = new Concast(sourcesWithInfo.sources);\n }\n concast.promise.then(cleanupCancelFn, cleanupCancelFn);\n return {\n concast: concast,\n fromLink: containsDataFromLink,\n };\n };\n QueryManager.prototype.refetchQueries = function (_a) {\n var _this = this;\n var updateCache = _a.updateCache, include = _a.include, _b = _a.optimistic, optimistic = _b === void 0 ? false : _b, _c = _a.removeOptimistic, removeOptimistic = _c === void 0 ? optimistic ? makeUniqueId(\"refetchQueries\") : void 0 : _c, onQueryUpdated = _a.onQueryUpdated;\n var includedQueriesById = new Map();\n if (include) {\n this.getObservableQueries(include).forEach(function (oq, queryId) {\n includedQueriesById.set(queryId, {\n oq: oq,\n lastDiff: _this.getQuery(queryId).getDiff(),\n });\n });\n }\n var results = new Map();\n if (updateCache) {\n this.cache.batch({\n update: updateCache,\n // Since you can perform any combination of cache reads and/or writes in\n // the cache.batch update function, its optimistic option can be either\n // a boolean or a string, representing three distinct modes of\n // operation:\n //\n // * false: read/write only the root layer\n // * true: read/write the topmost layer\n // * string: read/write a fresh optimistic layer with that ID string\n //\n // When typeof optimistic === \"string\", a new optimistic layer will be\n // temporarily created within cache.batch with that string as its ID. If\n // we then pass that same string as the removeOptimistic option, we can\n // make cache.batch immediately remove the optimistic layer after\n // running the updateCache function, triggering only one broadcast.\n //\n // However, the refetchQueries method accepts only true or false for its\n // optimistic option (not string). We interpret true to mean a temporary\n // optimistic layer should be created, to allow efficiently rolling back\n // the effect of the updateCache function, which involves passing a\n // string instead of true as the optimistic option to cache.batch, when\n // refetchQueries receives optimistic: true.\n //\n // In other words, we are deliberately not supporting the use case of\n // writing to an *existing* optimistic layer (using the refetchQueries\n // updateCache function), since that would potentially interfere with\n // other optimistic updates in progress. Instead, you can read/write\n // only the root layer by passing optimistic: false to refetchQueries,\n // or you can read/write a brand new optimistic layer that will be\n // automatically removed by passing optimistic: true.\n optimistic: (optimistic && removeOptimistic) || false,\n // The removeOptimistic option can also be provided by itself, even if\n // optimistic === false, to remove some previously-added optimistic\n // layer safely and efficiently, like we do in markMutationResult.\n //\n // If an explicit removeOptimistic string is provided with optimistic:\n // true, the removeOptimistic string will determine the ID of the\n // temporary optimistic layer, in case that ever matters.\n removeOptimistic: removeOptimistic,\n onWatchUpdated: function (watch, diff, lastDiff) {\n var oq = watch.watcher instanceof QueryInfo && watch.watcher.observableQuery;\n if (oq) {\n if (onQueryUpdated) {\n // Since we're about to handle this query now, remove it from\n // includedQueriesById, in case it was added earlier because of\n // options.include.\n includedQueriesById.delete(oq.queryId);\n var result = onQueryUpdated(oq, diff, lastDiff);\n if (result === true) {\n // The onQueryUpdated function requested the default refetching\n // behavior by returning true.\n result = oq.refetch();\n }\n // Record the result in the results Map, as long as onQueryUpdated\n // did not return false to skip/ignore this result.\n if (result !== false) {\n results.set(oq, result);\n }\n // Allow the default cache broadcast to happen, except when\n // onQueryUpdated returns false.\n return result;\n }\n if (onQueryUpdated !== null) {\n // If we don't have an onQueryUpdated function, and onQueryUpdated\n // was not disabled by passing null, make sure this query is\n // \"included\" like any other options.include-specified query.\n includedQueriesById.set(oq.queryId, { oq: oq, lastDiff: lastDiff, diff: diff });\n }\n }\n },\n });\n }\n if (includedQueriesById.size) {\n includedQueriesById.forEach(function (_a, queryId) {\n var oq = _a.oq, lastDiff = _a.lastDiff, diff = _a.diff;\n var result;\n // If onQueryUpdated is provided, we want to use it for all included\n // queries, even the QueryOptions ones.\n if (onQueryUpdated) {\n if (!diff) {\n var info = oq[\"queryInfo\"];\n info.reset(); // Force info.getDiff() to read from cache.\n diff = info.getDiff();\n }\n result = onQueryUpdated(oq, diff, lastDiff);\n }\n // Otherwise, we fall back to refetching.\n if (!onQueryUpdated || result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n if (queryId.indexOf(\"legacyOneTimeQuery\") >= 0) {\n _this.stopQueryNoBroadcast(queryId);\n }\n });\n }\n if (removeOptimistic) {\n // In case no updateCache callback was provided (so cache.batch was not\n // called above, and thus did not already remove the optimistic layer),\n // remove it here. Since this is a no-op when the layer has already been\n // removed, we do it even if we called cache.batch above, since it's\n // possible this.cache is an instance of some ApolloCache subclass other\n // than InMemoryCache, and does not fully support the removeOptimistic\n // option for cache.batch.\n this.cache.removeOptimistic(removeOptimistic);\n }\n return results;\n };\n QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, _a, \n // The initial networkStatus for this fetch, most often\n // NetworkStatus.loading, but also possibly fetchMore, poll, refetch,\n // or setVariables.\n networkStatus) {\n var _this = this;\n var query = _a.query, variables = _a.variables, fetchPolicy = _a.fetchPolicy, refetchWritePolicy = _a.refetchWritePolicy, errorPolicy = _a.errorPolicy, returnPartialData = _a.returnPartialData, context = _a.context, notifyOnNetworkStatusChange = _a.notifyOnNetworkStatusChange;\n var oldNetworkStatus = queryInfo.networkStatus;\n queryInfo.init({\n document: query,\n variables: variables,\n networkStatus: networkStatus,\n });\n var readCache = function () { return queryInfo.getDiff(); };\n var resultsFromCache = function (diff, networkStatus) {\n if (networkStatus === void 0) { networkStatus = queryInfo.networkStatus || NetworkStatus.loading; }\n var data = diff.result;\n if (globalThis.__DEV__ !== false && !returnPartialData && !equal(data, {})) {\n logMissingFieldErrors(diff.missing);\n }\n var fromData = function (data) {\n return Observable.of(__assign({ data: data, loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus }, (diff.complete ? null : { partial: true })));\n };\n if (data && _this.getDocumentInfo(query).hasForcedResolvers) {\n return _this.localState\n .runResolvers({\n document: query,\n remoteResult: { data: data },\n context: context,\n variables: variables,\n onlyRunForcedResolvers: true,\n })\n .then(function (resolved) { return fromData(resolved.data || void 0); });\n }\n // Resolves https://github.com/apollographql/apollo-client/issues/10317.\n // If errorPolicy is 'none' and notifyOnNetworkStatusChange is true,\n // data was incorrectly returned from the cache on refetch:\n // if diff.missing exists, we should not return cache data.\n if (errorPolicy === \"none\" &&\n networkStatus === NetworkStatus.refetch &&\n Array.isArray(diff.missing)) {\n return fromData(void 0);\n }\n return fromData(data);\n };\n var cacheWriteBehavior = fetchPolicy === \"no-cache\" ? 0 /* CacheWriteBehavior.FORBID */\n // Watched queries must opt into overwriting existing data on refetch,\n // by passing refetchWritePolicy: \"overwrite\" in their WatchQueryOptions.\n : (networkStatus === NetworkStatus.refetch &&\n refetchWritePolicy !== \"merge\") ?\n 1 /* CacheWriteBehavior.OVERWRITE */\n : 2 /* CacheWriteBehavior.MERGE */;\n var resultsFromLink = function () {\n return _this.getResultsFromLink(queryInfo, cacheWriteBehavior, {\n query: query,\n variables: variables,\n context: context,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n });\n };\n var shouldNotify = notifyOnNetworkStatusChange &&\n typeof oldNetworkStatus === \"number\" &&\n oldNetworkStatus !== networkStatus &&\n isNetworkRequestInFlight(networkStatus);\n switch (fetchPolicy) {\n default:\n case \"cache-first\": {\n var diff = readCache();\n if (diff.complete) {\n return {\n fromLink: false,\n sources: [resultsFromCache(diff, queryInfo.markReady())],\n };\n }\n if (returnPartialData || shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(diff), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n }\n case \"cache-and-network\": {\n var diff = readCache();\n if (diff.complete || returnPartialData || shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(diff), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n }\n case \"cache-only\":\n return {\n fromLink: false,\n sources: [resultsFromCache(readCache(), queryInfo.markReady())],\n };\n case \"network-only\":\n if (shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(readCache()), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n case \"no-cache\":\n if (shouldNotify) {\n return {\n fromLink: true,\n // Note that queryInfo.getDiff() for no-cache queries does not call\n // cache.diff, but instead returns a { complete: false } stub result\n // when there is no queryInfo.diff already defined.\n sources: [resultsFromCache(queryInfo.getDiff()), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n case \"standby\":\n return { fromLink: false, sources: [] };\n }\n };\n QueryManager.prototype.getQuery = function (queryId) {\n if (queryId && !this.queries.has(queryId)) {\n this.queries.set(queryId, new QueryInfo(this, queryId));\n }\n return this.queries.get(queryId);\n };\n QueryManager.prototype.prepareContext = function (context) {\n if (context === void 0) { context = {}; }\n var newContext = this.localState.prepareContext(context);\n return __assign(__assign(__assign({}, this.defaultContext), newContext), { clientAwareness: this.clientAwareness });\n };\n return QueryManager;\n}());\nexport { QueryManager };\n","import { __assign } from \"tslib\";\nimport { compact } from \"./compact.js\";\nexport function mergeOptions(defaults, options) {\n return compact(defaults, options, options.variables && {\n variables: compact(__assign(__assign({}, (defaults && defaults.variables)), options.variables)),\n });\n}\n","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../utilities/globals/index.js\";\nimport { ApolloLink, execute } from \"../link/core/index.js\";\nimport { version } from \"../version.js\";\nimport { HttpLink } from \"../link/http/index.js\";\nimport { QueryManager } from \"./QueryManager.js\";\nimport { LocalState } from \"./LocalState.js\";\nvar hasSuggestedDevtools = false;\n// Though mergeOptions now resides in @apollo/client/utilities, it was\n// previously declared and exported from this module, and then reexported from\n// @apollo/client/core. Since we need to preserve that API anyway, the easiest\n// solution is to reexport mergeOptions where it was previously declared (here).\nimport { mergeOptions } from \"../utilities/index.js\";\nimport { getApolloClientMemoryInternals } from \"../utilities/caching/getMemoryInternals.js\";\nexport { mergeOptions };\n/**\n * This is the primary Apollo Client class. It is used to send GraphQL documents (i.e. queries\n * and mutations) to a GraphQL spec-compliant server over an `ApolloLink` instance,\n * receive results from the server and cache the results in a store. It also delivers updates\n * to GraphQL queries through `Observable` instances.\n */\nvar ApolloClient = /** @class */ (function () {\n /**\n * Constructs an instance of `ApolloClient`.\n *\n * @example\n * ```js\n * import { ApolloClient, InMemoryCache } from '@apollo/client';\n *\n * const cache = new InMemoryCache();\n *\n * const client = new ApolloClient({\n * // Provide required constructor fields\n * cache: cache,\n * uri: 'http://localhost:4000/',\n *\n * // Provide some optional constructor fields\n * name: 'react-web-client',\n * version: '1.3',\n * queryDeduplication: false,\n * defaultOptions: {\n * watchQuery: {\n * fetchPolicy: 'cache-and-network',\n * },\n * },\n * });\n * ```\n */\n function ApolloClient(options) {\n var _this = this;\n this.resetStoreCallbacks = [];\n this.clearStoreCallbacks = [];\n if (!options.cache) {\n throw newInvariantError(15);\n }\n var uri = options.uri, credentials = options.credentials, headers = options.headers, cache = options.cache, documentTransform = options.documentTransform, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void 0 ? 0 : _b, \n // Expose the client instance as window.__APOLLO_CLIENT__ and call\n // onBroadcast in queryManager.broadcastQueries to enable browser\n // devtools, but disable them by default in production.\n _c = options.connectToDevTools, \n // Expose the client instance as window.__APOLLO_CLIENT__ and call\n // onBroadcast in queryManager.broadcastQueries to enable browser\n // devtools, but disable them by default in production.\n connectToDevTools = _c === void 0 ? typeof window === \"object\" &&\n !window.__APOLLO_CLIENT__ &&\n globalThis.__DEV__ !== false : _c, _d = options.queryDeduplication, queryDeduplication = _d === void 0 ? true : _d, defaultOptions = options.defaultOptions, defaultContext = options.defaultContext, _e = options.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? cache.assumeImmutableResults : _e, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version;\n var link = options.link;\n if (!link) {\n link =\n uri ? new HttpLink({ uri: uri, credentials: credentials, headers: headers }) : ApolloLink.empty();\n }\n this.link = link;\n this.cache = cache;\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.queryDeduplication = queryDeduplication;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.typeDefs = typeDefs;\n if (ssrForceFetchDelay) {\n setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);\n }\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.watchFragment = this.watchFragment.bind(this);\n this.resetStore = this.resetStore.bind(this);\n this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n this.version = version;\n this.localState = new LocalState({\n cache: cache,\n client: this,\n resolvers: resolvers,\n fragmentMatcher: fragmentMatcher,\n });\n this.queryManager = new QueryManager({\n cache: this.cache,\n link: this.link,\n defaultOptions: this.defaultOptions,\n defaultContext: defaultContext,\n documentTransform: documentTransform,\n queryDeduplication: queryDeduplication,\n ssrMode: ssrMode,\n clientAwareness: {\n name: clientAwarenessName,\n version: clientAwarenessVersion,\n },\n localState: this.localState,\n assumeImmutableResults: assumeImmutableResults,\n onBroadcast: connectToDevTools ?\n function () {\n if (_this.devToolsHookCb) {\n _this.devToolsHookCb({\n action: {},\n state: {\n queries: _this.queryManager.getQueryStore(),\n mutations: _this.queryManager.mutationStore || {},\n },\n dataWithOptimisticResults: _this.cache.extract(true),\n });\n }\n }\n : void 0,\n });\n if (connectToDevTools)\n this.connectToDevTools();\n }\n ApolloClient.prototype.connectToDevTools = function () {\n if (typeof window === \"object\") {\n var windowWithDevTools = window;\n var devtoolsSymbol = Symbol.for(\"apollo.devtools\");\n (windowWithDevTools[devtoolsSymbol] =\n windowWithDevTools[devtoolsSymbol] || []).push(this);\n windowWithDevTools.__APOLLO_CLIENT__ = this;\n }\n /**\n * Suggest installing the devtools for developers who don't have them\n */\n if (!hasSuggestedDevtools && globalThis.__DEV__ !== false) {\n hasSuggestedDevtools = true;\n setTimeout(function () {\n if (typeof window !== \"undefined\" &&\n window.document &&\n window.top === window.self &&\n !window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__ &&\n /^(https?|file):$/.test(window.location.protocol)) {\n var nav = window.navigator;\n var ua = nav && nav.userAgent;\n var url = void 0;\n if (typeof ua === \"string\") {\n if (ua.indexOf(\"Chrome/\") > -1) {\n url =\n \"https://chrome.google.com/webstore/detail/\" +\n \"apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm\";\n }\n else if (ua.indexOf(\"Firefox/\") > -1) {\n url =\n \"https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/\";\n }\n }\n if (url) {\n globalThis.__DEV__ !== false && invariant.log(\"Download the Apollo DevTools for a better development \" +\n \"experience: %s\", url);\n }\n }\n }, 10000);\n }\n };\n Object.defineProperty(ApolloClient.prototype, \"documentTransform\", {\n /**\n * The `DocumentTransform` used to modify GraphQL documents before a request\n * is made. If a custom `DocumentTransform` is not provided, this will be the\n * default document transform.\n */\n get: function () {\n return this.queryManager.documentTransform;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Call this method to terminate any active client processes, making it safe\n * to dispose of this `ApolloClient` instance.\n */\n ApolloClient.prototype.stop = function () {\n this.queryManager.stop();\n };\n /**\n * This watches the cache store of the query according to the options specified and\n * returns an `ObservableQuery`. We can subscribe to this `ObservableQuery` and\n * receive updated results through an observer when the cache store changes.\n *\n * Note that this method is not an implementation of GraphQL subscriptions. Rather,\n * it uses Apollo's store in order to reactively deliver updates to your query results.\n *\n * For example, suppose you call watchQuery on a GraphQL query that fetches a person's\n * first and last name and this person has a particular object identifier, provided by\n * dataIdFromObject. Later, a different query fetches that same person's\n * first and last name and the first name has now changed. Then, any observers associated\n * with the results of the first query will be updated with a new result object.\n *\n * Note that if the cache does not change, the subscriber will *not* be notified.\n *\n * See [here](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.3mb0cbcmc) for\n * a description of store reactivity.\n */\n ApolloClient.prototype.watchQuery = function (options) {\n if (this.defaultOptions.watchQuery) {\n options = mergeOptions(this.defaultOptions.watchQuery, options);\n }\n // XXX Overwriting options is probably not the best way to do this long term...\n if (this.disableNetworkFetches &&\n (options.fetchPolicy === \"network-only\" ||\n options.fetchPolicy === \"cache-and-network\")) {\n options = __assign(__assign({}, options), { fetchPolicy: \"cache-first\" });\n }\n return this.queryManager.watchQuery(options);\n };\n /**\n * This resolves a single query according to the options specified and\n * returns a `Promise` which is either resolved with the resulting data\n * or rejected with an error.\n *\n * @param options - An object of type `QueryOptions` that allows us to\n * describe how this query should be treated e.g. whether it should hit the\n * server at all or just resolve from the cache, etc.\n */\n ApolloClient.prototype.query = function (options) {\n if (this.defaultOptions.query) {\n options = mergeOptions(this.defaultOptions.query, options);\n }\n invariant(options.fetchPolicy !== \"cache-and-network\", 16);\n if (this.disableNetworkFetches && options.fetchPolicy === \"network-only\") {\n options = __assign(__assign({}, options), { fetchPolicy: \"cache-first\" });\n }\n return this.queryManager.query(options);\n };\n /**\n * This resolves a single mutation according to the options specified and returns a\n * Promise which is either resolved with the resulting data or rejected with an\n * error. In some cases both `data` and `errors` might be undefined, for example\n * when `errorPolicy` is set to `'ignore'`.\n *\n * It takes options as an object with the following keys and values:\n */\n ApolloClient.prototype.mutate = function (options) {\n if (this.defaultOptions.mutate) {\n options = mergeOptions(this.defaultOptions.mutate, options);\n }\n return this.queryManager.mutate(options);\n };\n /**\n * This subscribes to a graphql subscription according to the options specified and returns an\n * `Observable` which either emits received data or an error.\n */\n ApolloClient.prototype.subscribe = function (options) {\n return this.queryManager.startGraphQLSubscription(options);\n };\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL query without making a network request. This method will start at\n * the root query. To start at a specific id returned by `dataIdFromObject`\n * use `readFragment`.\n *\n * @param optimistic - Set to `true` to allow `readQuery` to return\n * optimistic results. Is `false` by default.\n */\n ApolloClient.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readQuery(options, optimistic);\n };\n /**\n * Watches the cache store of the fragment according to the options specified\n * and returns an `Observable`. We can subscribe to this\n * `Observable` and receive updated results through an\n * observer when the cache store changes.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are reading. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n *\n * @since 3.10.0\n * @param options - An object of type `WatchFragmentOptions` that allows\n * the cache to identify the fragment and optionally specify whether to react\n * to optimistic updates.\n */\n ApolloClient.prototype.watchFragment = function (options) {\n return this.cache.watchFragment(options);\n };\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL fragment without making a network request. This method will read a\n * GraphQL fragment from any arbitrary id that is currently cached, unlike\n * `readQuery` which will only read from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are reading. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n *\n * @param optimistic - Set to `true` to allow `readFragment` to return\n * optimistic results. Is `false` by default.\n */\n ApolloClient.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readFragment(options, optimistic);\n };\n /**\n * Writes some data in the shape of the provided GraphQL query directly to\n * the store. This method will start at the root query. To start at a\n * specific id returned by `dataIdFromObject` then use `writeFragment`.\n */\n ApolloClient.prototype.writeQuery = function (options) {\n var ref = this.cache.writeQuery(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n /**\n * Writes some data in the shape of the provided GraphQL fragment directly to\n * the store. This method will write to a GraphQL fragment from any arbitrary\n * id that is currently cached, unlike `writeQuery` which will only write\n * from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are writing. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n */\n ApolloClient.prototype.writeFragment = function (options) {\n var ref = this.cache.writeFragment(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n this.devToolsHookCb = cb;\n };\n ApolloClient.prototype.__requestRaw = function (payload) {\n return execute(this.link, payload);\n };\n /**\n * Resets your entire store by clearing out your cache and then re-executing\n * all of your active queries. This makes it so that you may guarantee that\n * there is no data left in your store from a time before you called this\n * method.\n *\n * `resetStore()` is useful when your user just logged out. You’ve removed the\n * user session, and you now want to make sure that any references to data you\n * might have fetched while the user session was active is gone.\n *\n * It is important to remember that `resetStore()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n */\n ApolloClient.prototype.resetStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () {\n return _this.queryManager.clearStore({\n discardWatches: false,\n });\n })\n .then(function () { return Promise.all(_this.resetStoreCallbacks.map(function (fn) { return fn(); })); })\n .then(function () { return _this.reFetchObservableQueries(); });\n };\n /**\n * Remove all data from the store. Unlike `resetStore`, `clearStore` will\n * not refetch any active queries.\n */\n ApolloClient.prototype.clearStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () {\n return _this.queryManager.clearStore({\n discardWatches: true,\n });\n })\n .then(function () { return Promise.all(_this.clearStoreCallbacks.map(function (fn) { return fn(); })); });\n };\n /**\n * Allows callbacks to be registered that are executed when the store is\n * reset. `onResetStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n ApolloClient.prototype.onResetStore = function (cb) {\n var _this = this;\n this.resetStoreCallbacks.push(cb);\n return function () {\n _this.resetStoreCallbacks = _this.resetStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n /**\n * Allows callbacks to be registered that are executed when the store is\n * cleared. `onClearStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n ApolloClient.prototype.onClearStore = function (cb) {\n var _this = this;\n this.clearStoreCallbacks.push(cb);\n return function () {\n _this.clearStoreCallbacks = _this.clearStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n /**\n * Refetches all of your active queries.\n *\n * `reFetchObservableQueries()` is useful if you want to bring the client back to proper state in case of a network outage\n *\n * It is important to remember that `reFetchObservableQueries()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n * Takes optional parameter `includeStandby` which will include queries in standby-mode when refetching.\n */\n ApolloClient.prototype.reFetchObservableQueries = function (includeStandby) {\n return this.queryManager.reFetchObservableQueries(includeStandby);\n };\n /**\n * Refetches specified active queries. Similar to \"reFetchObservableQueries()\" but with a specific list of queries.\n *\n * `refetchQueries()` is useful for use cases to imperatively refresh a selection of queries.\n *\n * It is important to remember that `refetchQueries()` *will* refetch specified active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n */\n ApolloClient.prototype.refetchQueries = function (options) {\n var map = this.queryManager.refetchQueries(options);\n var queries = [];\n var results = [];\n map.forEach(function (result, obsQuery) {\n queries.push(obsQuery);\n results.push(result);\n });\n var result = Promise.all(results);\n // In case you need the raw results immediately, without awaiting\n // Promise.all(results):\n result.queries = queries;\n result.results = results;\n // If you decide to ignore the result Promise because you're using\n // result.queries and result.results instead, you shouldn't have to worry\n // about preventing uncaught rejections for the Promise.all result.\n result.catch(function (error) {\n globalThis.__DEV__ !== false && invariant.debug(17, error);\n });\n return result;\n };\n /**\n * Get all currently active `ObservableQuery` objects, in a `Map` keyed by\n * query ID strings.\n *\n * An \"active\" query is one that has observers and a `fetchPolicy` other than\n * \"standby\" or \"cache-only\".\n *\n * You can include all `ObservableQuery` objects (including the inactive ones)\n * by passing \"all\" instead of \"active\", or you can include just a subset of\n * active queries by passing an array of query names or DocumentNode objects.\n */\n ApolloClient.prototype.getObservableQueries = function (include) {\n if (include === void 0) { include = \"active\"; }\n return this.queryManager.getObservableQueries(include);\n };\n /**\n * Exposes the cache's complete state, in a serializable format for later restoration.\n */\n ApolloClient.prototype.extract = function (optimistic) {\n return this.cache.extract(optimistic);\n };\n /**\n * Replaces existing state in the cache (if any) with the values expressed by\n * `serializedState`.\n *\n * Called when hydrating a cache (server side rendering, or offline storage),\n * and also (potentially) during hot reloads.\n */\n ApolloClient.prototype.restore = function (serializedState) {\n return this.cache.restore(serializedState);\n };\n /**\n * Add additional local resolvers.\n */\n ApolloClient.prototype.addResolvers = function (resolvers) {\n this.localState.addResolvers(resolvers);\n };\n /**\n * Set (override existing) local resolvers.\n */\n ApolloClient.prototype.setResolvers = function (resolvers) {\n this.localState.setResolvers(resolvers);\n };\n /**\n * Get all registered local resolvers.\n */\n ApolloClient.prototype.getResolvers = function () {\n return this.localState.getResolvers();\n };\n /**\n * Set a custom local state fragment matcher.\n */\n ApolloClient.prototype.setLocalStateFragmentMatcher = function (fragmentMatcher) {\n this.localState.setFragmentMatcher(fragmentMatcher);\n };\n /**\n * Define a new ApolloLink (or link chain) that Apollo Client will use.\n */\n ApolloClient.prototype.setLink = function (newLink) {\n this.link = this.queryManager.link = newLink;\n };\n Object.defineProperty(ApolloClient.prototype, \"defaultContext\", {\n get: function () {\n return this.queryManager.defaultContext;\n },\n enumerable: false,\n configurable: true\n });\n return ApolloClient;\n}());\nexport { ApolloClient };\nif (globalThis.__DEV__ !== false) {\n ApolloClient.prototype.getMemoryInternals = getApolloClientMemoryInternals;\n}\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Optional, Inject, NgModule } from '@angular/core';\nimport { Observable, queueScheduler, observable, from } from 'rxjs';\nimport { NetworkStatus, ApolloClient, gql as gql$1 } from '@apollo/client/core';\nimport { map, startWith, observeOn } from 'rxjs/operators';\n\nfunction fromPromise(promiseFn) {\n return new Observable(subscriber => {\n promiseFn().then(result => {\n if (!subscriber.closed) {\n subscriber.next(result);\n subscriber.complete();\n }\n }, error => {\n if (!subscriber.closed) {\n subscriber.error(error);\n }\n });\n return () => subscriber.unsubscribe();\n });\n}\nfunction useMutationLoading(source, enabled) {\n if (!enabled) {\n return source.pipe(map(result => ({\n ...result,\n loading: false,\n })));\n }\n return source.pipe(startWith({\n loading: true,\n }), map(result => ({\n ...result,\n loading: !!result.loading,\n })));\n}\nclass ZoneScheduler {\n zone;\n constructor(zone) {\n this.zone = zone;\n }\n now = Date.now ? Date.now : () => +new Date();\n schedule(work, delay = 0, state) {\n return this.zone.run(() => queueScheduler.schedule(work, delay, state));\n }\n}\nfunction fixObservable(obs) {\n obs[observable] = () => obs;\n return obs;\n}\nfunction wrapWithZone(obs, ngZone) {\n return obs.pipe(observeOn(new ZoneScheduler(ngZone)));\n}\nfunction pickFlag(flags, flag, defaultValue) {\n return flags && typeof flags[flag] !== 'undefined' ? flags[flag] : defaultValue;\n}\n\nfunction useInitialLoading(obsQuery) {\n return function useInitialLoadingOperator(source) {\n return new Observable(function useInitialLoadingSubscription(subscriber) {\n const currentResult = obsQuery.getCurrentResult();\n const { loading, errors, error, partial, data } = currentResult;\n const { partialRefetch, fetchPolicy } = obsQuery.options;\n const hasError = errors || error;\n if (partialRefetch &&\n partial &&\n (!data || Object.keys(data).length === 0) &&\n fetchPolicy !== 'cache-only' &&\n !loading &&\n !hasError) {\n subscriber.next({\n ...currentResult,\n loading: true,\n networkStatus: NetworkStatus.loading,\n });\n }\n return source.subscribe(subscriber);\n });\n };\n}\nclass QueryRef {\n obsQuery;\n valueChanges;\n queryId;\n constructor(obsQuery, ngZone, options) {\n this.obsQuery = obsQuery;\n const wrapped = wrapWithZone(from(fixObservable(this.obsQuery)), ngZone);\n this.valueChanges = options.useInitialLoading\n ? wrapped.pipe(useInitialLoading(this.obsQuery))\n : wrapped;\n this.queryId = this.obsQuery.queryId;\n }\n // ObservableQuery's methods\n get options() {\n return this.obsQuery.options;\n }\n get variables() {\n return this.obsQuery.variables;\n }\n result() {\n return this.obsQuery.result();\n }\n getCurrentResult() {\n return this.obsQuery.getCurrentResult();\n }\n getLastResult() {\n return this.obsQuery.getLastResult();\n }\n getLastError() {\n return this.obsQuery.getLastError();\n }\n resetLastResults() {\n return this.obsQuery.resetLastResults();\n }\n refetch(variables) {\n return this.obsQuery.refetch(variables);\n }\n fetchMore(fetchMoreOptions) {\n return this.obsQuery.fetchMore(fetchMoreOptions);\n }\n subscribeToMore(options) {\n // XXX: there's a bug in apollo-client typings\n // it should not inherit types from ObservableQuery\n return this.obsQuery.subscribeToMore(options);\n }\n updateQuery(mapFn) {\n return this.obsQuery.updateQuery(mapFn);\n }\n stopPolling() {\n return this.obsQuery.stopPolling();\n }\n startPolling(pollInterval) {\n return this.obsQuery.startPolling(pollInterval);\n }\n setOptions(opts) {\n return this.obsQuery.setOptions(opts);\n }\n setVariables(variables) {\n return this.obsQuery.setVariables(variables);\n }\n}\n\nconst APOLLO_FLAGS = new InjectionToken('APOLLO_FLAGS');\nconst APOLLO_OPTIONS = new InjectionToken('APOLLO_OPTIONS');\nconst APOLLO_NAMED_OPTIONS = new InjectionToken('APOLLO_NAMED_OPTIONS');\n\nclass ApolloBase {\n ngZone;\n flags;\n _client;\n useInitialLoading;\n useMutationLoading;\n constructor(ngZone, flags, _client) {\n this.ngZone = ngZone;\n this.flags = flags;\n this._client = _client;\n this.useInitialLoading = pickFlag(flags, 'useInitialLoading', false);\n this.useMutationLoading = pickFlag(flags, 'useMutationLoading', false);\n }\n watchQuery(options) {\n return new QueryRef(this.ensureClient().watchQuery({\n ...options,\n }), this.ngZone, {\n useInitialLoading: this.useInitialLoading,\n ...options,\n });\n }\n query(options) {\n return fromPromise(() => this.ensureClient().query({ ...options }));\n }\n mutate(options) {\n return useMutationLoading(fromPromise(() => this.ensureClient().mutate({ ...options })), options.useMutationLoading ?? this.useMutationLoading);\n }\n subscribe(options, extra) {\n const obs = from(fixObservable(this.ensureClient().subscribe({ ...options })));\n return extra && extra.useZone !== true ? obs : wrapWithZone(obs, this.ngZone);\n }\n /**\n * Get an instance of ApolloClient\n * @deprecated use `apollo.client` instead\n */\n getClient() {\n return this.client;\n }\n /**\n * Set a new instance of ApolloClient\n * Remember to clean up the store before setting a new client.\n * @deprecated use `apollo.client = client` instead\n *\n * @param client ApolloClient instance\n */\n setClient(client) {\n this.client = client;\n }\n /**\n * Get an instance of ApolloClient\n */\n get client() {\n return this._client;\n }\n /**\n * Set a new instance of ApolloClient\n * Remember to clean up the store before setting a new client.\n *\n * @param client ApolloClient instance\n */\n set client(client) {\n if (this._client) {\n throw new Error('Client has been already defined');\n }\n this._client = client;\n }\n ensureClient() {\n this.checkInstance();\n return this._client;\n }\n checkInstance() {\n if (!this._client) {\n throw new Error('Client has not been defined yet');\n }\n }\n}\nclass Apollo extends ApolloBase {\n _ngZone;\n map = new Map();\n constructor(_ngZone, apolloOptions, apolloNamedOptions, flags) {\n super(_ngZone, flags);\n this._ngZone = _ngZone;\n if (apolloOptions) {\n this.createDefault(apolloOptions);\n }\n if (apolloNamedOptions && typeof apolloNamedOptions === 'object') {\n for (let name in apolloNamedOptions) {\n if (apolloNamedOptions.hasOwnProperty(name)) {\n const options = apolloNamedOptions[name];\n this.create(options, name);\n }\n }\n }\n }\n /**\n * Create an instance of ApolloClient\n * @param options Options required to create ApolloClient\n * @param name client's name\n */\n create(options, name) {\n if (isDefault(name)) {\n this.createDefault(options);\n }\n else {\n this.createNamed(name, options);\n }\n }\n /**\n * Use a default ApolloClient\n */\n default() {\n return this;\n }\n /**\n * Use a named ApolloClient\n * @param name client's name\n */\n use(name) {\n if (isDefault(name)) {\n return this.default();\n }\n return this.map.get(name);\n }\n /**\n * Create a default ApolloClient, same as `apollo.create(options)`\n * @param options ApolloClient's options\n */\n createDefault(options) {\n if (this.getClient()) {\n throw new Error('Apollo has been already created.');\n }\n return this.setClient(new ApolloClient(options));\n }\n /**\n * Create a named ApolloClient, same as `apollo.create(options, name)`\n * @param name client's name\n * @param options ApolloClient's options\n */\n createNamed(name, options) {\n if (this.map.has(name)) {\n throw new Error(`Client ${name} has been already created`);\n }\n this.map.set(name, new ApolloBase(this._ngZone, this.flags, new ApolloClient(options)));\n }\n /**\n * Remember to clean up the store before removing a client\n * @param name client's name\n */\n removeClient(name) {\n if (isDefault(name)) {\n this._client = undefined;\n }\n else {\n this.map.delete(name);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Apollo, deps: [{ token: i0.NgZone }, { token: APOLLO_OPTIONS, optional: true }, { token: APOLLO_NAMED_OPTIONS, optional: true }, { token: APOLLO_FLAGS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Apollo });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Apollo, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APOLLO_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [APOLLO_NAMED_OPTIONS]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [APOLLO_FLAGS]\n }, {\n type: Optional\n }] }]; } });\nfunction isDefault(name) {\n return !name || name === 'default';\n}\n\nconst PROVIDERS = [Apollo];\nclass ApolloModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: ApolloModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.2\", ngImport: i0, type: ApolloModule });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: ApolloModule, providers: PROVIDERS });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: ApolloModule, decorators: [{\n type: NgModule,\n args: [{\n providers: PROVIDERS,\n }]\n }] });\n\nclass Query {\n apollo;\n document;\n client = 'default';\n constructor(apollo) {\n this.apollo = apollo;\n }\n watch(variables, options) {\n return this.apollo.use(this.client).watchQuery({\n ...options,\n variables,\n query: this.document,\n });\n }\n fetch(variables, options) {\n return this.apollo.use(this.client).query({\n ...options,\n variables,\n query: this.document,\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Query, deps: [{ token: Apollo }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Query });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Query, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: Apollo }]; } });\n\nclass Mutation {\n apollo;\n document;\n client = 'default';\n constructor(apollo) {\n this.apollo = apollo;\n }\n mutate(variables, options) {\n return this.apollo.use(this.client).mutate({\n ...options,\n variables,\n mutation: this.document,\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Mutation, deps: [{ token: Apollo }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Mutation });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Mutation, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: Apollo }]; } });\n\nclass Subscription {\n apollo;\n document;\n client = 'default';\n constructor(apollo) {\n this.apollo = apollo;\n }\n subscribe(variables, options, extra) {\n return this.apollo.use(this.client).subscribe({\n ...options,\n variables,\n query: this.document,\n }, extra);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Subscription, deps: [{ token: Apollo }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Subscription });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Subscription, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: Apollo }]; } });\n\nfunction typedGQLTag(literals, ...placeholders) {\n return gql$1(literals, ...placeholders);\n}\nconst gql = typedGQLTag;\nconst graphql = typedGQLTag;\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APOLLO_FLAGS, APOLLO_NAMED_OPTIONS, APOLLO_OPTIONS, Apollo, ApolloBase, ApolloModule, Mutation, Query, QueryRef, Subscription, gql, graphql };\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable flowtype/no-weak-types */\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nexport default nodejsCustomInspectSymbol;\n","import invariant from \"./invariant.mjs\";\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\n/**\n * The `defineInspect()` function defines `inspect()` prototype method as alias of `toJSON`\n */\n\nexport default function defineInspect(classObject) {\n var fn = classObject.prototype.toJSON;\n typeof fn === 'function' || invariant(0);\n classObject.prototype.inspect = fn; // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (nodejsCustomInspectSymbol) {\n classObject.prototype[nodejsCustomInspectSymbol] = fn;\n }\n}\n","export default function invariant(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n }\n}\n","import defineInspect from \"../jsutils/defineInspect.mjs\";\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport var Location = /*#__PURE__*/function () {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n function Location(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n var _proto = Location.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n };\n\n return Location;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Location);\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport var Token = /*#__PURE__*/function () {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. <SOF> is always the first node and <EOF>\n * the last.\n */\n function Token(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n }\n\n var _proto2 = Token.prototype;\n\n _proto2.toJSON = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n };\n\n return Token;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Token);\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n return maybeNode != null && typeof maybeNode.kind === 'string';\n}\n/**\n * The list of all possible AST node types.\n */\n","/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nexport function dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(rawString);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n var startLine = 0;\n\n while (startLine < lines.length && isBlank(lines[startLine])) {\n ++startLine;\n }\n\n var endLine = lines.length;\n\n while (endLine > startLine && isBlank(lines[endLine - 1])) {\n --endLine;\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.slice(startLine, endLine).join('\\n');\n}\n\nfunction isBlank(str) {\n for (var i = 0; i < str.length; ++i) {\n if (str[i] !== ' ' && str[i] !== '\\t') {\n return false;\n }\n }\n\n return true;\n}\n/**\n * @internal\n */\n\n\nexport function getBlockStringIndentation(value) {\n var _commonIndent;\n\n var isFirstLine = true;\n var isEmptyLine = true;\n var indent = 0;\n var commonIndent = null;\n\n for (var i = 0; i < value.length; ++i) {\n switch (value.charCodeAt(i)) {\n case 13:\n // \\r\n if (value.charCodeAt(i + 1) === 10) {\n ++i; // skip \\r\\n as one symbol\n }\n\n // falls through\n\n case 10:\n // \\n\n isFirstLine = false;\n isEmptyLine = true;\n indent = 0;\n break;\n\n case 9: // \\t\n\n case 32:\n // <space>\n ++indent;\n break;\n\n default:\n if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n }\n\n isEmptyLine = false;\n }\n }\n\n return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var hasTrailingSlash = value[value.length - 1] === '\\\\';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */\n","import { visit } from \"./visitor.mjs\";\nimport { printBlockString } from \"./blockString.mjs\";\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n}\nvar MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n var prefix = wrap('', alias, ': ') + name;\n var argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: addDescription(function (_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n }),\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n interfaces = _ref26.interfaces,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n interfaces = _ref35.interfaces,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray) {\n var _maybeArray$filter$jo;\n\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function (x) {\n return x;\n }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\n\nfunction wrap(start, maybeString) {\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction isMultiline(str) {\n return str.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray != null && maybeArray.some(isMultiline);\n}\n","import inspect from \"../jsutils/inspect.mjs\";\nimport { isNode } from \"./ast.mjs\";\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error(\"Invalid AST Node: \".concat(inspect(node), \".\"));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _visitorKeys$node$kin;\n\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n","/**\n * marked v4.3.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nlet defaults = getDefaults();\n\nfunction changeDefaults(newDefaults) {\n defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n/**\n * @param {string} html\n */\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\n/**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n/**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n/**\n * @param {string} base\n * @param {string} href\n */\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) { cells.shift(); }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\n/**\n * @param {string} pattern\n * @param {number} count\n */\nfunction repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n let result = '';\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nclass Tokenizer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = 'paragraph';\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1]).map(c => { return { text: c }; }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:.|\\n(?!\\n))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^(?:[^_*\\\\]|\\\\.)*?\\_\\_(?:[^_*\\\\]|\\\\.)*?\\*(?:[^_*\\\\]|\\\\.)*?(?=\\_\\_)|(?:[^*\\\\]|\\\\.)+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^(?:[^_*\\\\]|\\\\.)*?\\*\\*(?:[^_*\\\\]|\\\\.)*?\\_(?:[^_*\\\\]|\\\\.)*?(?=\\*\\*)|(?:[^_\\\\]|\\\\.)+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^([\\spunctuation])/\n};\n\n// list of punctuation marks from CommonMark spec\n// without * and _ to handle the different emphasis markers * and _\ninline._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\ninline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n// lookbehind is not available on Safari as of version 16\n// inline.escapedEmSt = /(?<=(?:^|[^\\\\)(?:\\\\[^])*)\\\\[*_]/g;\ninline.escapedEmSt = /(?:^|[^\\\\])(?:\\\\\\\\)*\\\\[*_]/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim)\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = {\n ...inline.gfm,\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n\n/**\n * smartypants text replacement\n * @param {string} text\n */\nfunction smartypants(text) {\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n}\n\n/**\n * mangle email addresses\n * @param {string} text\n */\nfunction mangle(text) {\n let out = '',\n i,\n ch;\n\n const l = text.length;\n for (i = 0; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nclass Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped em & strong delimiters\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n this.tokenizer.rules.inline.escapedEmSt.lastIndex--;\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n\n /**\n * @param {string} quote\n */\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n\n html(html) {\n return html;\n }\n\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n }\n\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n }\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n\n /**\n * @param {string} text\n */\n listitem(text) {\n return `<li>${text}</li>\\n`;\n }\n\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n }\n\n /**\n * @param {string} text\n */\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n\n /**\n * @param {string} header\n * @param {string} body\n */\n table(header, body) {\n if (body) body = `<tbody>${body}</tbody>`;\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n\n /**\n * @param {string} content\n */\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n\n /**\n * span level renderer\n * @param {string} text\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n\n /**\n * @param {string} text\n */\n em(text) {\n return `<em>${text}</em>`;\n }\n\n /**\n * @param {string} text\n */\n codespan(text) {\n return `<code>${text}</code>`;\n }\n\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n }\n\n /**\n * @param {string} text\n */\n del(text) {\n return `<del>${text}</del>`;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n }\n\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n html(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * @param {string} value\n */\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass Parser {\n constructor(options) {\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens),\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens),\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens),\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass Hooks {\n constructor(options) {\n this.options = options || defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nfunction onError(silent, async, callback) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n}\n\nfunction parseMarkdown(lexer, parser) {\n return (src, opt, callback) => {\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n const origOpt = { ...opt };\n opt = { ...marked.defaults, ...origOpt };\n const throwError = onError(opt.silent, opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkSanitizeDeprecation(opt);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e);\n }\n\n const done = function(err) {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n marked.walkTokens(tokens, function(token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, function(err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e);\n }\n };\n}\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n marked.defaults = { ...marked.defaults, ...opt };\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args) {\n const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n\n // set async to true if it was set to true before\n opts.async = marked.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if (ext.renderer) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = marked.defaults.renderer || new Renderer();\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args) => {\n let ret = pack.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args) => {\n let ret = pack.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = marked.defaults.hooks || new Hooks();\n for (const prop in pack.hooks) {\n const prevHook = hooks[prop];\n if (Hooks.passThroughHooks.has(prop)) {\n hooks[prop] = (arg) => {\n if (marked.defaults.async) {\n return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = pack.hooks[prop].call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[prop] = (...args) => {\n let ret = pack.hooks[prop].apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = marked.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values = [];\n values.push(pack.walkTokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n marked.setOptions(opts);\n });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(marked, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(marked.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {\n values = values.concat(marked.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(marked.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n};\n\n/**\n * Parse Inline\n * @param {string} src\n */\nmarked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);\n\n/**\n * Expose\n */\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.Hooks = Hooks;\nmarked.parse = marked;\n\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = Parser.parse;\nconst lexer = Lexer.lex;\n\nexport { Hooks, Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n","import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, Pipe, InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, EventEmitter, Input, Output, SecurityContext, NgModule } from '@angular/core';\nimport { Subject, merge, of, timer } from 'rxjs';\nimport { switchMap, mapTo, distinctUntilChanged, shareReplay, startWith, map, takeUntil, first } from 'rxjs/operators';\nimport * as i1 from '@angular/common';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport { Renderer, marked } from 'marked';\nexport { Renderer as MarkedRenderer } from 'marked';\nimport * as i1$1 from '@angular/common/http';\nimport * as i4 from '@angular/platform-browser';\n\nconst BUTTON_TEXT_COPY = 'Copy';\r\nconst BUTTON_TEXT_COPIED = 'Copied';\r\nclass ClipboardButtonComponent {\r\n constructor() {\r\n this._buttonClick$ = new Subject();\r\n this.copied$ = this._buttonClick$.pipe(switchMap(() => merge(of(true), timer(3000).pipe(mapTo(false)))), distinctUntilChanged(), shareReplay(1));\r\n this.copiedText$ = this.copied$.pipe(startWith(false), map(copied => copied\r\n ? BUTTON_TEXT_COPIED\r\n : BUTTON_TEXT_COPY));\r\n }\r\n onCopyToClipboardClick() {\r\n this._buttonClick$.next();\r\n }\r\n}\r\nClipboardButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: ClipboardButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nClipboardButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.0\", type: ClipboardButtonComponent, selector: \"markdown-clipboard\", ngImport: i0, template: `\r\n <button\r\n class=\"markdown-clipboard-button\"\r\n [class.copied]=\"copied$ | async\"\r\n (click)=\"onCopyToClipboardClick()\"\r\n >{{ copiedText$ | async }}</button>\r\n `, isInline: true, dependencies: [{ kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: ClipboardButtonComponent, decorators: [{\r\n type: Component,\r\n args: [{\r\n selector: 'markdown-clipboard',\r\n template: `\r\n <button\r\n class=\"markdown-clipboard-button\"\r\n [class.copied]=\"copied$ | async\"\r\n (click)=\"onCopyToClipboardClick()\"\r\n >{{ copiedText$ | async }}</button>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n }]\r\n }] });\n\nclass ClipboardOptions {\r\n}\r\nclass ClipboardRenderOptions extends ClipboardOptions {\r\n}\n\n/* eslint-disable */\r\nclass KatexSpecificOptions {\r\n}\n\nclass LanguagePipe {\r\n transform(value, language) {\r\n if (value == null) {\r\n value = '';\r\n }\r\n if (language == null) {\r\n language = '';\r\n }\r\n if (typeof value !== 'string') {\r\n console.error(`LanguagePipe has been invoked with an invalid value type [${typeof value}]`);\r\n return value;\r\n }\r\n if (typeof language !== 'string') {\r\n console.error(`LanguagePipe has been invoked with an invalid parameter [${typeof language}]`);\r\n return value;\r\n }\r\n return '```' + language + '\\n' + value + '\\n```';\r\n }\r\n}\r\nLanguagePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: LanguagePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\r\nLanguagePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"15.0.0\", ngImport: i0, type: LanguagePipe, name: \"language\" });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: LanguagePipe, decorators: [{\r\n type: Pipe,\r\n args: [{\r\n name: 'language',\r\n }]\r\n }] });\n\nvar PrismPlugin;\r\n(function (PrismPlugin) {\r\n PrismPlugin[\"CommandLine\"] = \"command-line\";\r\n PrismPlugin[\"LineHighlight\"] = \"line-highlight\";\r\n PrismPlugin[\"LineNumbers\"] = \"line-numbers\";\r\n})(PrismPlugin || (PrismPlugin = {}));\n\nclass MarkedOptions {\r\n}\n\n/* eslint-disable max-len */\r\nconst errorJoyPixelsNotLoaded = '[ngx-markdown] When using the `emoji` attribute you *have to* include Emoji-Toolkit files to `angular.json` or use imports. See README for more information';\r\nconst errorKatexNotLoaded = '[ngx-markdown] When using the `katex` attribute you *have to* include KaTeX files to `angular.json` or use imports. See README for more information';\r\nconst errorMermaidNotLoaded = '[ngx-markdown] When using the `mermaid` attribute you *have to* include Mermaid files to `angular.json` or use imports. See README for more information';\r\nconst errorClipboardNotLoaded = '[ngx-markdown] When using the `clipboard` attribute you *have to* include Clipboard files to `angular.json` or use imports. See README for more information';\r\nconst errorClipboardViewContainerRequired = '[ngx-markdown] When using the `clipboard` attribute you *have to* provide the `viewContainerRef` parameter to `MarkdownService.render()` function';\r\nconst errorSrcWithoutHttpClient = '[ngx-markdown] When using the `src` attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information';\r\n/* eslint-enable max-len */\r\nconst SECURITY_CONTEXT = new InjectionToken('SECURITY_CONTEXT');\r\nclass ExtendedRenderer extends Renderer {\r\n constructor() {\r\n super(...arguments);\r\n this.ɵNgxMarkdownRendererExtended = false;\r\n }\r\n}\r\nclass MarkdownService {\r\n constructor(platform, securityContext, http, clipboardOptions, options, sanitizer) {\r\n this.platform = platform;\r\n this.securityContext = securityContext;\r\n this.http = http;\r\n this.clipboardOptions = clipboardOptions;\r\n this.sanitizer = sanitizer;\r\n this.DEFAULT_MARKED_OPTIONS = {\r\n renderer: new Renderer(),\r\n };\r\n this.DEFAULT_KATEX_OPTIONS = {\r\n delimiters: [\r\n { left: \"$$\", right: \"$$\", display: true },\r\n { left: \"$\", right: \"$\", display: false },\r\n { left: \"\\\\(\", right: \"\\\\)\", display: false },\r\n { left: \"\\\\begin{equation}\", right: \"\\\\end{equation}\", display: true },\r\n { left: \"\\\\begin{align}\", right: \"\\\\end{align}\", display: true },\r\n { left: \"\\\\begin{alignat}\", right: \"\\\\end{alignat}\", display: true },\r\n { left: \"\\\\begin{gather}\", right: \"\\\\end{gather}\", display: true },\r\n { left: \"\\\\begin{CD}\", right: \"\\\\end{CD}\", display: true },\r\n { left: \"\\\\[\", right: \"\\\\]\", display: true },\r\n ],\r\n };\r\n this.DEFAULT_MERMAID_OPTIONS = {\r\n startOnLoad: false,\r\n };\r\n this.DEFAULT_CLIPBOARD_OPTIONS = {\r\n buttonComponent: undefined,\r\n };\r\n this.DEFAULT_PARSE_OPTIONS = {\r\n decodeHtml: false,\r\n inline: false,\r\n emoji: false,\r\n mermaid: false,\r\n markedOptions: this.DEFAULT_MARKED_OPTIONS,\r\n disableSanitizer: false,\r\n };\r\n this.DEFAULT_RENDER_OPTIONS = {\r\n clipboard: false,\r\n clipboardOptions: undefined,\r\n katex: false,\r\n katexOptions: undefined,\r\n mermaid: false,\r\n mermaidOptions: undefined,\r\n };\r\n this._reload$ = new Subject();\r\n this.reload$ = this._reload$.asObservable();\r\n this.options = options;\r\n }\r\n get options() { return this._options; }\r\n set options(value) {\r\n this._options = { ...this.DEFAULT_MARKED_OPTIONS, ...value };\r\n }\r\n get renderer() { return this.options.renderer; }\r\n set renderer(value) {\r\n this.options.renderer = value;\r\n }\r\n parse(markdown, parseOptions = this.DEFAULT_PARSE_OPTIONS) {\r\n const { decodeHtml, inline, emoji, mermaid, disableSanitizer, } = parseOptions;\r\n const markedOptions = {\r\n ...this.options,\r\n ...parseOptions.markedOptions,\r\n };\r\n if (mermaid) {\r\n this.renderer = this.extendRenderer(markedOptions.renderer || new Renderer());\r\n }\r\n const trimmed = this.trimIndentation(markdown);\r\n const decoded = decodeHtml ? this.decodeHtml(trimmed) : trimmed;\r\n const emojified = emoji ? this.parseEmoji(decoded) : decoded;\r\n const marked = this.parseMarked(emojified, markedOptions, inline);\r\n const sanitized = disableSanitizer ? marked : this.sanitizer.sanitize(this.securityContext, marked);\r\n return sanitized || '';\r\n }\r\n render(element, options = this.DEFAULT_RENDER_OPTIONS, viewContainerRef) {\r\n const { clipboard, clipboardOptions, katex, katexOptions, mermaid, mermaidOptions, } = options;\r\n if (clipboard) {\r\n this.renderClipboard(element, viewContainerRef, {\r\n ...this.DEFAULT_CLIPBOARD_OPTIONS,\r\n ...this.clipboardOptions,\r\n ...clipboardOptions,\r\n });\r\n }\r\n if (katex) {\r\n this.renderKatex(element, {\r\n ...this.DEFAULT_KATEX_OPTIONS,\r\n ...katexOptions,\r\n });\r\n }\r\n if (mermaid) {\r\n this.renderMermaid(element, {\r\n ...this.DEFAULT_MERMAID_OPTIONS,\r\n ...mermaidOptions,\r\n });\r\n }\r\n this.highlight(element);\r\n }\r\n reload() {\r\n this._reload$.next();\r\n }\r\n getSource(src) {\r\n if (!this.http) {\r\n throw new Error(errorSrcWithoutHttpClient);\r\n }\r\n return this.http\r\n .get(src, { responseType: 'text' })\r\n .pipe(map(markdown => this.handleExtension(src, markdown)));\r\n }\r\n highlight(element) {\r\n if (!isPlatformBrowser(this.platform)) {\r\n return;\r\n }\r\n if (typeof Prism === 'undefined' || typeof Prism.highlightAllUnder === 'undefined') {\r\n return;\r\n }\r\n if (!element) {\r\n element = document;\r\n }\r\n const noLanguageElements = element.querySelectorAll('pre code:not([class*=\"language-\"])');\r\n Array.prototype.forEach.call(noLanguageElements, (x) => x.classList.add('language-none'));\r\n Prism.highlightAllUnder(element);\r\n }\r\n decodeHtml(html) {\r\n if (!isPlatformBrowser(this.platform)) {\r\n return html;\r\n }\r\n const textarea = document.createElement('textarea');\r\n textarea.innerHTML = html;\r\n return textarea.value;\r\n }\r\n extendRenderer(renderer) {\r\n const extendedRenderer = renderer;\r\n if (extendedRenderer.ɵNgxMarkdownRendererExtended === true) {\r\n return renderer;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/unbound-method\r\n const defaultCode = renderer.code;\r\n renderer.code = function (code, language, isEscaped) {\r\n return language === 'mermaid'\r\n ? `<div class=\"mermaid\">${code}</div>`\r\n : defaultCode.call(this, code, language, isEscaped);\r\n };\r\n extendedRenderer.ɵNgxMarkdownRendererExtended = true;\r\n return renderer;\r\n }\r\n handleExtension(src, markdown) {\r\n const urlProtocolIndex = src.lastIndexOf('://');\r\n const urlWithoutProtocol = urlProtocolIndex > -1\r\n ? src.substring(urlProtocolIndex + 4)\r\n : src;\r\n const lastSlashIndex = urlWithoutProtocol.lastIndexOf('/');\r\n const lastUrlSegment = lastSlashIndex > -1\r\n ? urlWithoutProtocol.substring(lastSlashIndex + 1).split('?')[0]\r\n : '';\r\n const lastDotIndex = lastUrlSegment.lastIndexOf('.');\r\n const extension = lastDotIndex > -1\r\n ? lastUrlSegment.substring(lastDotIndex + 1)\r\n : '';\r\n return !!extension && extension !== 'md'\r\n ? '```' + extension + '\\n' + markdown + '\\n```'\r\n : markdown;\r\n }\r\n parseMarked(html, markedOptions, inline = false) {\r\n return inline\r\n ? marked.parseInline(html, markedOptions)\r\n : marked.parse(html, markedOptions);\r\n }\r\n parseEmoji(html) {\r\n if (!isPlatformBrowser(this.platform)) {\r\n return html;\r\n }\r\n if (typeof joypixels === 'undefined' || typeof joypixels.shortnameToUnicode === 'undefined') {\r\n throw new Error(errorJoyPixelsNotLoaded);\r\n }\r\n return joypixels.shortnameToUnicode(html);\r\n }\r\n renderKatex(element, options) {\r\n if (!isPlatformBrowser(this.platform)) {\r\n return;\r\n }\r\n if (typeof katex === 'undefined' || typeof renderMathInElement === 'undefined') {\r\n throw new Error(errorKatexNotLoaded);\r\n }\r\n renderMathInElement(element, options);\r\n }\r\n renderClipboard(element, viewContainerRef, options) {\r\n if (!isPlatformBrowser(this.platform)) {\r\n return;\r\n }\r\n if (typeof ClipboardJS === 'undefined') {\r\n throw new Error(errorClipboardNotLoaded);\r\n }\r\n if (!viewContainerRef) {\r\n throw new Error(errorClipboardViewContainerRequired);\r\n }\r\n const { buttonComponent, buttonTemplate, } = options;\r\n // target every <pre> elements\r\n const preElements = element.querySelectorAll('pre');\r\n for (let i = 0; i < preElements.length; i++) {\r\n const preElement = preElements.item(i);\r\n // create <pre> wrapper element\r\n const preWrapperElement = document.createElement('div');\r\n preWrapperElement.style.position = 'relative';\r\n preElement.parentNode.insertBefore(preWrapperElement, preElement);\r\n preWrapperElement.appendChild(preElement);\r\n // create toolbar element\r\n const toolbarWrapperElement = document.createElement('div');\r\n toolbarWrapperElement.style.position = 'absolute';\r\n toolbarWrapperElement.style.top = '.5em';\r\n toolbarWrapperElement.style.right = '.5em';\r\n toolbarWrapperElement.style.opacity = '0';\r\n toolbarWrapperElement.style.transition = 'opacity 250ms ease-out';\r\n preWrapperElement.insertAdjacentElement('beforeend', toolbarWrapperElement);\r\n // register listener to show/hide toolbar\r\n preElement.onmouseover = () => toolbarWrapperElement.style.opacity = '1';\r\n preElement.onmouseout = () => toolbarWrapperElement.style.opacity = '0';\r\n // declare embeddedViewRef holding variable\r\n let embeddedViewRef;\r\n // use provided component via input property\r\n // or provided via ClipboardOptions provider\r\n if (buttonComponent) {\r\n const componentRef = viewContainerRef.createComponent(buttonComponent);\r\n embeddedViewRef = componentRef.hostView;\r\n }\r\n // use provided template via input property\r\n else if (buttonTemplate) {\r\n embeddedViewRef = viewContainerRef.createEmbeddedView(buttonTemplate);\r\n }\r\n // use default component\r\n else {\r\n const componentRef = viewContainerRef.createComponent(ClipboardButtonComponent);\r\n embeddedViewRef = componentRef.hostView;\r\n }\r\n // declare clipboard instance variable\r\n let clipboardInstance;\r\n // attach clipboard.js to root node\r\n embeddedViewRef.rootNodes.forEach((node) => {\r\n node.onmouseover = () => toolbarWrapperElement.style.opacity = '1';\r\n toolbarWrapperElement.appendChild(node);\r\n clipboardInstance = new ClipboardJS(node, { text: () => preElement.innerText });\r\n });\r\n // destroy clipboard instance when view is destroyed\r\n embeddedViewRef.onDestroy(() => clipboardInstance.destroy());\r\n }\r\n }\r\n renderMermaid(element, options = this.DEFAULT_MERMAID_OPTIONS) {\r\n if (!isPlatformBrowser(this.platform)) {\r\n return;\r\n }\r\n if (typeof mermaid === 'undefined' || typeof mermaid.init === 'undefined') {\r\n throw new Error(errorMermaidNotLoaded);\r\n }\r\n const mermaidElements = element.querySelectorAll('.mermaid');\r\n if (mermaidElements.length === 0) {\r\n return;\r\n }\r\n mermaid.initialize(options);\r\n mermaid.init(mermaidElements);\r\n }\r\n trimIndentation(markdown) {\r\n if (!markdown) {\r\n return '';\r\n }\r\n let indentStart;\r\n return markdown\r\n .split('\\n')\r\n .map(line => {\r\n let lineIdentStart = indentStart;\r\n if (line.length > 0) {\r\n lineIdentStart = isNaN(lineIdentStart)\r\n ? line.search(/\\S|$/)\r\n : Math.min(line.search(/\\S|$/), lineIdentStart);\r\n }\r\n if (isNaN(indentStart)) {\r\n indentStart = lineIdentStart;\r\n }\r\n return lineIdentStart\r\n ? line.substring(lineIdentStart)\r\n : line;\r\n }).join('\\n');\r\n }\r\n}\r\nMarkdownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownService, deps: [{ token: PLATFORM_ID }, { token: SECURITY_CONTEXT }, { token: i1$1.HttpClient, optional: true }, { token: ClipboardOptions, optional: true }, { token: MarkedOptions, optional: true }, { token: i4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });\r\nMarkdownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: Object, decorators: [{\r\n type: Inject,\r\n args: [PLATFORM_ID]\r\n }] }, { type: i0.SecurityContext, decorators: [{\r\n type: Inject,\r\n args: [SECURITY_CONTEXT]\r\n }] }, { type: i1$1.HttpClient, decorators: [{\r\n type: Optional\r\n }] }, { type: ClipboardOptions, decorators: [{\r\n type: Optional\r\n }] }, { type: MarkedOptions, decorators: [{\r\n type: Optional\r\n }] }, { type: i4.DomSanitizer }]; } });\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\nclass MarkdownComponent {\r\n constructor(element, markdownService, viewContainerRef) {\r\n this.element = element;\r\n this.markdownService = markdownService;\r\n this.viewContainerRef = viewContainerRef;\r\n // Event emitters\r\n this.error = new EventEmitter();\r\n this.load = new EventEmitter();\r\n this.ready = new EventEmitter();\r\n this._clipboard = false;\r\n this._commandLine = false;\r\n this._disableSanitizer = false;\r\n this._emoji = false;\r\n this._inline = false;\r\n this._katex = false;\r\n this._lineHighlight = false;\r\n this._lineNumbers = false;\r\n this._mermaid = false;\r\n this._srcRelativeLink = false;\r\n this.destroyed$ = new Subject();\r\n }\r\n get disableSanitizer() { return this._disableSanitizer; }\r\n set disableSanitizer(value) { this._disableSanitizer = this.coerceBooleanProperty(value); }\r\n get inline() { return this._inline; }\r\n set inline(value) { this._inline = this.coerceBooleanProperty(value); }\r\n get srcRelativeLink() { return this._srcRelativeLink; }\r\n set srcRelativeLink(value) { this._srcRelativeLink = this.coerceBooleanProperty(value); }\r\n // Plugin - clipboard\r\n get clipboard() { return this._clipboard; }\r\n set clipboard(value) { this._clipboard = this.coerceBooleanProperty(value); }\r\n // Plugin - emoji\r\n get emoji() { return this._emoji; }\r\n set emoji(value) { this._emoji = this.coerceBooleanProperty(value); }\r\n // Plugin - katex\r\n get katex() { return this._katex; }\r\n set katex(value) { this._katex = this.coerceBooleanProperty(value); }\r\n // Plugin - mermaid\r\n get mermaid() { return this._mermaid; }\r\n set mermaid(value) { this._mermaid = this.coerceBooleanProperty(value); }\r\n // Plugin - lineHighlight\r\n get lineHighlight() { return this._lineHighlight; }\r\n set lineHighlight(value) { this._lineHighlight = this.coerceBooleanProperty(value); }\r\n // Plugin - lineNumbers\r\n get lineNumbers() { return this._lineNumbers; }\r\n set lineNumbers(value) { this._lineNumbers = this.coerceBooleanProperty(value); }\r\n // Plugin - commandLine\r\n get commandLine() { return this._commandLine; }\r\n set commandLine(value) { this._commandLine = this.coerceBooleanProperty(value); }\r\n ngOnChanges() {\r\n this.loadContent();\r\n }\r\n loadContent() {\r\n if (this.data != null) {\r\n this.handleData();\r\n return;\r\n }\r\n if (this.src != null) {\r\n this.handleSrc();\r\n return;\r\n }\r\n }\r\n ngAfterViewInit() {\r\n if (!this.data && !this.src) {\r\n this.handleTransclusion();\r\n }\r\n this.markdownService.reload$\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe(() => this.loadContent());\r\n }\r\n ngOnDestroy() {\r\n this.destroyed$.next();\r\n this.destroyed$.complete();\r\n }\r\n render(markdown, decodeHtml = false) {\r\n let markedOptions;\r\n if (this.src && this.srcRelativeLink) {\r\n const baseUrl = new URL(this.src, location.origin).pathname;\r\n markedOptions = { baseUrl };\r\n }\r\n const parsedOptions = {\r\n decodeHtml,\r\n inline: this.inline,\r\n emoji: this.emoji,\r\n mermaid: this.mermaid,\r\n markedOptions,\r\n disableSanitizer: this.disableSanitizer,\r\n };\r\n const renderOptions = {\r\n clipboard: this.clipboard,\r\n clipboardOptions: {\r\n buttonComponent: this.clipboardButtonComponent,\r\n buttonTemplate: this.clipboardButtonTemplate,\r\n },\r\n katex: this.katex,\r\n katexOptions: this.katexOptions,\r\n mermaid: this.mermaid,\r\n mermaidOptions: this.mermaidOptions,\r\n };\r\n const parsed = this.markdownService.parse(markdown, parsedOptions);\r\n this.element.nativeElement.innerHTML = parsed;\r\n this.handlePlugins();\r\n this.markdownService.render(this.element.nativeElement, renderOptions, this.viewContainerRef);\r\n this.ready.emit();\r\n }\r\n coerceBooleanProperty(value) {\r\n return value != null && `${String(value)}` !== 'false';\r\n }\r\n handleData() {\r\n this.render(this.data);\r\n }\r\n handleSrc() {\r\n this.markdownService\r\n .getSource(this.src)\r\n .subscribe({\r\n next: markdown => {\r\n this.render(markdown);\r\n this.load.emit(markdown);\r\n },\r\n error: (error) => this.error.emit(error),\r\n });\r\n }\r\n handleTransclusion() {\r\n this.render(this.element.nativeElement.innerHTML, true);\r\n }\r\n handlePlugins() {\r\n if (this.commandLine) {\r\n this.setPluginClass(this.element.nativeElement, PrismPlugin.CommandLine);\r\n this.setPluginOptions(this.element.nativeElement, {\r\n dataFilterOutput: this.filterOutput,\r\n dataHost: this.host,\r\n dataPrompt: this.prompt,\r\n dataOutput: this.output,\r\n dataUser: this.user,\r\n });\r\n }\r\n if (this.lineHighlight) {\r\n this.setPluginOptions(this.element.nativeElement, { dataLine: this.line, dataLineOffset: this.lineOffset });\r\n }\r\n if (this.lineNumbers) {\r\n this.setPluginClass(this.element.nativeElement, PrismPlugin.LineNumbers);\r\n this.setPluginOptions(this.element.nativeElement, { dataStart: this.start });\r\n }\r\n }\r\n setPluginClass(element, plugin) {\r\n const preElements = element.querySelectorAll('pre');\r\n for (let i = 0; i < preElements.length; i++) {\r\n const classes = plugin instanceof Array ? plugin : [plugin];\r\n preElements.item(i).classList.add(...classes);\r\n }\r\n }\r\n setPluginOptions(element, options) {\r\n const preElements = element.querySelectorAll('pre');\r\n for (let i = 0; i < preElements.length; i++) {\r\n Object.keys(options).forEach(option => {\r\n const attributeValue = options[option];\r\n if (attributeValue) {\r\n const attributeName = this.toLispCase(option);\r\n preElements.item(i).setAttribute(attributeName, attributeValue.toString());\r\n }\r\n });\r\n }\r\n }\r\n toLispCase(value) {\r\n const upperChars = value.match(/([A-Z])/g);\r\n if (!upperChars) {\r\n return value;\r\n }\r\n let str = value.toString();\r\n for (let i = 0, n = upperChars.length; i < n; i++) {\r\n str = str.replace(new RegExp(upperChars[i]), '-' + upperChars[i].toLowerCase());\r\n }\r\n if (str.slice(0, 1) === '-') {\r\n str = str.slice(1);\r\n }\r\n return str;\r\n }\r\n}\r\nMarkdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownComponent, deps: [{ token: i0.ElementRef }, { token: MarkdownService }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });\r\nMarkdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.0.0\", type: MarkdownComponent, selector: \"markdown, [markdown]\", inputs: { data: \"data\", src: \"src\", disableSanitizer: \"disableSanitizer\", inline: \"inline\", srcRelativeLink: \"srcRelativeLink\", clipboard: \"clipboard\", clipboardButtonComponent: \"clipboardButtonComponent\", clipboardButtonTemplate: \"clipboardButtonTemplate\", emoji: \"emoji\", katex: \"katex\", katexOptions: \"katexOptions\", mermaid: \"mermaid\", mermaidOptions: \"mermaidOptions\", lineHighlight: \"lineHighlight\", line: \"line\", lineOffset: \"lineOffset\", lineNumbers: \"lineNumbers\", start: \"start\", commandLine: \"commandLine\", filterOutput: \"filterOutput\", host: \"host\", prompt: \"prompt\", output: \"output\", user: \"user\" }, outputs: { error: \"error\", load: \"load\", ready: \"ready\" }, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownComponent, decorators: [{\r\n type: Component,\r\n args: [{\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'markdown, [markdown]',\r\n template: '<ng-content></ng-content>',\r\n }]\r\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: MarkdownService }, { type: i0.ViewContainerRef }]; }, propDecorators: { data: [{\r\n type: Input\r\n }], src: [{\r\n type: Input\r\n }], disableSanitizer: [{\r\n type: Input\r\n }], inline: [{\r\n type: Input\r\n }], srcRelativeLink: [{\r\n type: Input\r\n }], clipboard: [{\r\n type: Input\r\n }], clipboardButtonComponent: [{\r\n type: Input\r\n }], clipboardButtonTemplate: [{\r\n type: Input\r\n }], emoji: [{\r\n type: Input\r\n }], katex: [{\r\n type: Input\r\n }], katexOptions: [{\r\n type: Input\r\n }], mermaid: [{\r\n type: Input\r\n }], mermaidOptions: [{\r\n type: Input\r\n }], lineHighlight: [{\r\n type: Input\r\n }], line: [{\r\n type: Input\r\n }], lineOffset: [{\r\n type: Input\r\n }], lineNumbers: [{\r\n type: Input\r\n }], start: [{\r\n type: Input\r\n }], commandLine: [{\r\n type: Input\r\n }], filterOutput: [{\r\n type: Input\r\n }], host: [{\r\n type: Input\r\n }], prompt: [{\r\n type: Input\r\n }], output: [{\r\n type: Input\r\n }], user: [{\r\n type: Input\r\n }], error: [{\r\n type: Output\r\n }], load: [{\r\n type: Output\r\n }], ready: [{\r\n type: Output\r\n }] } });\n\nclass MarkdownPipe {\r\n constructor(domSanitizer, elementRef, markdownService, viewContainerRef, zone) {\r\n this.domSanitizer = domSanitizer;\r\n this.elementRef = elementRef;\r\n this.markdownService = markdownService;\r\n this.viewContainerRef = viewContainerRef;\r\n this.zone = zone;\r\n }\r\n transform(value, options) {\r\n if (value == null) {\r\n return '';\r\n }\r\n if (typeof value !== 'string') {\r\n console.error(`MarkdownPipe has been invoked with an invalid value type [${typeof value}]`);\r\n return value;\r\n }\r\n const markdown = this.markdownService.parse(value, options);\r\n this.zone.onStable\r\n .pipe(first())\r\n .subscribe(() => this.markdownService.render(this.elementRef.nativeElement, options, this.viewContainerRef));\r\n return this.domSanitizer.bypassSecurityTrustHtml(markdown);\r\n }\r\n}\r\nMarkdownPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownPipe, deps: [{ token: i4.DomSanitizer }, { token: i0.ElementRef }, { token: MarkdownService }, { token: i0.ViewContainerRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Pipe });\r\nMarkdownPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownPipe, name: \"markdown\" });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownPipe, decorators: [{\r\n type: Pipe,\r\n args: [{\r\n name: 'markdown',\r\n }]\r\n }], ctorParameters: function () { return [{ type: i4.DomSanitizer }, { type: i0.ElementRef }, { type: MarkdownService }, { type: i0.ViewContainerRef }, { type: i0.NgZone }]; } });\n\nconst sharedDeclarations = [\r\n ClipboardButtonComponent,\r\n LanguagePipe,\r\n MarkdownComponent,\r\n MarkdownPipe,\r\n];\r\nconst sharedEntryComponents = [\r\n ClipboardButtonComponent,\r\n];\r\nclass MarkdownModule {\r\n static forRoot(markdownModuleConfig) {\r\n return {\r\n ngModule: MarkdownModule,\r\n providers: [\r\n MarkdownService,\r\n markdownModuleConfig && markdownModuleConfig.loader || [],\r\n markdownModuleConfig && markdownModuleConfig.clipboardOptions || [],\r\n markdownModuleConfig && markdownModuleConfig.markedOptions || [],\r\n {\r\n provide: SECURITY_CONTEXT,\r\n useValue: markdownModuleConfig && markdownModuleConfig.sanitize != null\r\n ? markdownModuleConfig.sanitize\r\n : SecurityContext.HTML,\r\n },\r\n ],\r\n };\r\n }\r\n static forChild() {\r\n return {\r\n ngModule: MarkdownModule,\r\n };\r\n }\r\n}\r\nMarkdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nMarkdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownModule, declarations: [ClipboardButtonComponent,\r\n LanguagePipe,\r\n MarkdownComponent,\r\n MarkdownPipe], imports: [CommonModule], exports: [ClipboardButtonComponent,\r\n LanguagePipe,\r\n MarkdownComponent,\r\n MarkdownPipe] });\r\nMarkdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownModule, imports: [CommonModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.0\", ngImport: i0, type: MarkdownModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n imports: [CommonModule],\r\n exports: sharedDeclarations,\r\n declarations: sharedDeclarations,\r\n entryComponents: sharedEntryComponents,\r\n }]\r\n }] });\n\n/* eslint-disable */\r\nvar MermaidAPI;\r\n(function (MermaidAPI) {\r\n let SecurityLevel;\r\n (function (SecurityLevel) {\r\n /**\r\n * (default) tags in text are encoded, click functionality is disabled\r\n */\r\n SecurityLevel[\"Strict\"] = \"strict\";\r\n /**\r\n * tags in text are allowed, click functionality is enabled\r\n */\r\n SecurityLevel[\"Loose\"] = \"loose\";\r\n /**\r\n * html tags in text are allowed, (only script element is removed), click functionality is enabled\r\n */\r\n SecurityLevel[\"Antiscript\"] = \"antiscript\";\r\n /**\r\n * with this security level all rendering takes place in a sandboxed iframe.\r\n * This prevent any javascript running in the context.\r\n * This may hinder interactive functionality of the diagram like scripts,\r\n * popups in sequence diagram or links to other tabs/targets etc.\r\n */\r\n SecurityLevel[\"Sandbox\"] = \"sandbox\";\r\n })(SecurityLevel = MermaidAPI.SecurityLevel || (MermaidAPI.SecurityLevel = {}));\r\n let Theme;\r\n (function (Theme) {\r\n /**\r\n * Designed to modified, as the name implies it is supposed to be used as the base for making custom themes.\r\n */\r\n Theme[\"Base\"] = \"base\";\r\n /**\r\n * A theme full of light greens that is easy on the eyes.\r\n */\r\n Theme[\"Forest\"] = \"forest\";\r\n /**\r\n * A theme that would go well with other dark colored elements.\r\n */\r\n Theme[\"Dark\"] = \"dark\";\r\n /**\r\n * The default theme for all diagrams.\r\n */\r\n Theme[\"Default\"] = \"default\";\r\n /**\r\n * The theme to be used for black and white printing\r\n */\r\n Theme[\"Neutral\"] = \"neutral\";\r\n })(Theme = MermaidAPI.Theme || (MermaidAPI.Theme = {}));\r\n let LogLevel;\r\n (function (LogLevel) {\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Warn\"] = 3] = \"Warn\";\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n LogLevel[LogLevel[\"Fatal\"] = 5] = \"Fatal\";\r\n })(LogLevel = MermaidAPI.LogLevel || (MermaidAPI.LogLevel = {}));\r\n})(MermaidAPI || (MermaidAPI = {}));\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { ClipboardButtonComponent, ClipboardOptions, ClipboardRenderOptions, ExtendedRenderer, KatexSpecificOptions, LanguagePipe, MarkdownComponent, MarkdownModule, MarkdownPipe, MarkdownService, MarkedOptions, MermaidAPI, PrismPlugin, SECURITY_CONTEXT, errorClipboardNotLoaded, errorClipboardViewContainerRequired, errorJoyPixelsNotLoaded, errorKatexNotLoaded, errorMermaidNotLoaded, errorSrcWithoutHttpClient };\n//# sourceMappingURL=ngx-markdown.mjs.map\n","import { isPlatformBrowser } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, Component, Inject, Input, Output, forwardRef, Directive, NgModule } from '@angular/core';\nimport Masonry from 'masonry-layout';\nimport * as i1 from '@angular/animations';\nimport { style, animate } from '@angular/animations';\n\nclass NgxMasonryComponent {\n constructor(platformId, _element) {\n this.platformId = platformId;\n this._element = _element;\n this.updateLayout = false;\n this.ordered = false;\n // Outputs\n this.layoutComplete = new EventEmitter();\n this.removeComplete = new EventEmitter();\n this.itemsLoaded = new EventEmitter();\n this.pendingItems = [];\n }\n ngOnInit() {\n // Create masonry options object\n if (!this.options) {\n this.options = {};\n }\n // Set default itemSelector\n if (!this.options.itemSelector) {\n this.options.itemSelector = '[ngxMasonryItem], ngxMasonryItem';\n }\n this.options['transitionDuration'] = '0s';\n if (isPlatformBrowser(this.platformId)) {\n // Initialize Masonry\n this.masonryInstance = new Masonry(this._element.nativeElement, this.options);\n // Bind to events\n this.masonryInstance.on('layoutComplete', (items) => {\n this.layoutComplete.emit(items);\n });\n this.masonryInstance.on('removeComplete', (items) => {\n this.removeComplete.emit(items);\n });\n this.masonryInstance.items = [];\n }\n }\n ngOnChanges(changes) {\n // only update layout if it's not the first change\n if (changes.updateLayout) {\n if (!changes.updateLayout.firstChange) {\n this.layout();\n }\n }\n }\n ngOnDestroy() {\n if (this.masonryInstance) {\n this.masonryInstance.destroy();\n }\n }\n layout() {\n setTimeout(() => {\n this.masonryInstance.layout();\n });\n }\n reloadItems() {\n setTimeout(() => {\n this.masonryInstance.reloadItems();\n });\n }\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n add(newItem) {\n if (this.ordered) {\n for (const [index, item] of this.pendingItems.entries()) {\n if (item) {\n if (item.images && item.images.size === 0) {\n this.pendingItems[index] = undefined;\n this.itemLoaded(item);\n if (index + 1 === this.pendingItems.length) {\n // All items are loaded\n this.itemsLoaded.emit(this.pendingItems.length);\n this.pendingItems = [];\n }\n }\n else {\n return;\n }\n }\n }\n }\n else {\n this.itemLoaded(newItem);\n }\n }\n itemLoaded(item) {\n if (isPlatformBrowser(this.platformId)) {\n // Tell Masonry that a child element has been added\n if (item.prepend) {\n this.masonryInstance.prepended(item.element.nativeElement);\n }\n else {\n this.masonryInstance.appended(item.element.nativeElement);\n }\n // Check if first item\n if (this.masonryInstance.items.length === 1) {\n this.masonryInstance.layout();\n }\n item.playAnimation(true);\n }\n }\n remove(element) {\n if (isPlatformBrowser(this.platformId)) {\n // Tell Masonry that a child element has been removed\n this.masonryInstance.remove(element);\n // Layout items\n this.layout();\n }\n }\n}\nNgxMasonryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.7\", ngImport: i0, type: NgxMasonryComponent, deps: [{ token: PLATFORM_ID }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nNgxMasonryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.7\", type: NgxMasonryComponent, selector: \"[ngx-masonry], ngx-masonry\", inputs: { options: \"options\", updateLayout: \"updateLayout\", ordered: \"ordered\" }, outputs: { layoutComplete: \"layoutComplete\", removeComplete: \"removeComplete\", itemsLoaded: \"itemsLoaded\" }, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [\":host{display:block}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.7\", ngImport: i0, type: NgxMasonryComponent, decorators: [{\n type: Component,\n args: [{ selector: '[ngx-masonry], ngx-masonry', template: '<ng-content></ng-content>', styles: [\":host{display:block}\\n\"] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }]; }, propDecorators: { options: [{\n type: Input\n }], updateLayout: [{\n type: Input\n }], ordered: [{\n type: Input\n }], layoutComplete: [{\n type: Output\n }], removeComplete: [{\n type: Output\n }], itemsLoaded: [{\n type: Output\n }] } });\n\nclass NgxMasonryDirective {\n constructor(element, builder, parent, renderer) {\n this.element = element;\n this.builder = builder;\n this.parent = parent;\n this.renderer = renderer;\n this.prepend = false;\n this.animations = {\n show: [\n style({ opacity: 0 }),\n animate('400ms ease-in', style({ opacity: 1 })),\n ],\n hide: [\n style({ opacity: '*' }),\n animate('400ms ease-in', style({ opacity: 0 })),\n ]\n };\n }\n ngOnInit() {\n if (this.parent.options.animations !== undefined) {\n this.animations = this.parent.options.animations;\n }\n this.renderer.setStyle(this.element.nativeElement, 'position', 'fixed');\n this.renderer.setStyle(this.element.nativeElement, 'right', '-150vw');\n this.parent.addPendingItem(this);\n }\n ngAfterViewInit() {\n const images = Array.from(this.element.nativeElement.getElementsByTagName('img'));\n this.images = new Set(images);\n if (images.length === 0) {\n setTimeout(() => {\n this.parent.add(this);\n });\n }\n else {\n for (const imageRef of images) {\n // skip image render check if image has `masonryLazy` attribute\n if (imageRef.hasAttribute('masonryLazy')) {\n this.imageLoaded(imageRef);\n }\n else {\n this.renderer.listen(imageRef, 'load', _ => {\n this.imageLoaded(imageRef);\n });\n this.renderer.listen(imageRef, 'error', _ => {\n this.imageLoaded(imageRef);\n });\n }\n }\n }\n }\n ngOnDestroy() {\n if (this.images && this.images.size === 0 && this.element.nativeElement.parentNode) {\n this.playAnimation(false);\n this.parent.remove(this.element.nativeElement);\n }\n }\n imageLoaded(image) {\n this.images.delete(image);\n if (this.images.size === 0) {\n this.parent.add(this);\n }\n }\n playAnimation(show) {\n const metadata = show ? this.animations.show : this.animations.hide;\n if (metadata) {\n const player = this.builder.build(metadata).create(this.element.nativeElement);\n player.play();\n }\n }\n}\nNgxMasonryDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.7\", ngImport: i0, type: NgxMasonryDirective, deps: [{ token: i0.ElementRef }, { token: i1.AnimationBuilder }, { token: forwardRef(() => NgxMasonryComponent) }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgxMasonryDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.7\", type: NgxMasonryDirective, selector: \"[ngxMasonryItem], ngxMasonryItem\", inputs: { prepend: \"prepend\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.7\", ngImport: i0, type: NgxMasonryDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngxMasonryItem], ngxMasonryItem'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.AnimationBuilder }, { type: NgxMasonryComponent, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgxMasonryComponent)]\n }] }, { type: i0.Renderer2 }]; }, propDecorators: { prepend: [{\n type: Input\n }] } });\n\nclass NgxMasonryModule {\n}\nNgxMasonryModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.7\", ngImport: i0, type: NgxMasonryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgxMasonryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.7\", ngImport: i0, type: NgxMasonryModule, declarations: [NgxMasonryComponent, NgxMasonryDirective], exports: [NgxMasonryComponent, NgxMasonryDirective] });\nNgxMasonryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.7\", ngImport: i0, type: NgxMasonryModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.7\", ngImport: i0, type: NgxMasonryModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n declarations: [NgxMasonryComponent, NgxMasonryDirective],\n exports: [NgxMasonryComponent, NgxMasonryDirective]\n }]\n }] });\n\n/*\n * Public API Surface of ngx-masonry\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgxMasonryComponent, NgxMasonryDirective, NgxMasonryModule };\n","import * as i0 from '@angular/core';\nimport { Directive, NgModule, InjectionToken, Injectable, Inject, SecurityContext, Injector, Component, HostBinding, HostListener } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { Subject } from 'rxjs';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i2 from '@angular/platform-browser';\n\nclass ToastContainerDirective {\n constructor(el) {\n this.el = el;\n }\n getContainerElement() {\n return this.el.nativeElement;\n }\n}\nToastContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastContainerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nToastContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.2\", type: ToastContainerDirective, selector: \"[toastContainer]\", exportAs: [\"toastContainer\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[toastContainer]',\n exportAs: 'toastContainer',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\nclass ToastContainerModule {\n}\nToastContainerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastContainerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToastContainerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastContainerModule, declarations: [ToastContainerDirective], exports: [ToastContainerDirective] });\nToastContainerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastContainerModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastContainerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ToastContainerDirective],\n exports: [ToastContainerDirective],\n }]\n }] });\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal {\n constructor(component, injector) {\n this.component = component;\n this.injector = injector;\n }\n /** Attach this portal to a host. */\n attach(host, newestOnTop) {\n this._attachedHost = host;\n return host.attach(this, newestOnTop);\n }\n /** Detach this portal from its host */\n detach() {\n const host = this._attachedHost;\n if (host) {\n this._attachedHost = undefined;\n return host.detach();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * Partial implementation of PortalHost that only deals with attaching a\n * ComponentPortal\n */\nclass BasePortalHost {\n attach(portal, newestOnTop) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal, newestOnTop);\n }\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost();\n }\n this._attachedPortal = undefined;\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = undefined;\n }\n }\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n}\n\n/**\n * Reference to a toast opened via the Toastr service.\n */\nclass ToastRef {\n constructor(_overlayRef) {\n this._overlayRef = _overlayRef;\n /** Count of duplicates of this toast */\n this.duplicatesCount = 0;\n /** Subject for notifying the user that the toast has finished closing. */\n this._afterClosed = new Subject();\n /** triggered when toast is activated */\n this._activate = new Subject();\n /** notifies the toast that it should close before the timeout */\n this._manualClose = new Subject();\n /** notifies the toast that it should reset the timeouts */\n this._resetTimeout = new Subject();\n /** notifies the toast that it should count a duplicate toast */\n this._countDuplicate = new Subject();\n }\n manualClose() {\n this._manualClose.next();\n this._manualClose.complete();\n }\n manualClosed() {\n return this._manualClose.asObservable();\n }\n timeoutReset() {\n return this._resetTimeout.asObservable();\n }\n countDuplicate() {\n return this._countDuplicate.asObservable();\n }\n /**\n * Close the toast.\n */\n close() {\n this._overlayRef.detach();\n this._afterClosed.next();\n this._manualClose.next();\n this._afterClosed.complete();\n this._manualClose.complete();\n this._activate.complete();\n this._resetTimeout.complete();\n this._countDuplicate.complete();\n }\n /** Gets an observable that is notified when the toast is finished closing. */\n afterClosed() {\n return this._afterClosed.asObservable();\n }\n isInactive() {\n return this._activate.isStopped;\n }\n activate() {\n this._activate.next();\n this._activate.complete();\n }\n /** Gets an observable that is notified when the toast has started opening. */\n afterActivate() {\n return this._activate.asObservable();\n }\n /** Reset the toast timouts and count duplicates */\n onDuplicate(resetTimeout, countDuplicate) {\n if (resetTimeout) {\n this._resetTimeout.next();\n }\n if (countDuplicate) {\n this._countDuplicate.next(++this.duplicatesCount);\n }\n }\n}\n\n/**\n * Everything a toast needs to launch\n */\nclass ToastPackage {\n constructor(toastId, config, message, title, toastType, toastRef) {\n this.toastId = toastId;\n this.config = config;\n this.message = message;\n this.title = title;\n this.toastType = toastType;\n this.toastRef = toastRef;\n this._onTap = new Subject();\n this._onAction = new Subject();\n this.toastRef.afterClosed().subscribe(() => {\n this._onAction.complete();\n this._onTap.complete();\n });\n }\n /** Fired on click */\n triggerTap() {\n this._onTap.next();\n if (this.config.tapToDismiss) {\n this._onTap.complete();\n }\n }\n onTap() {\n return this._onTap.asObservable();\n }\n /** available for use in custom toast */\n triggerAction(action) {\n this._onAction.next(action);\n }\n onAction() {\n return this._onAction.asObservable();\n }\n}\nconst DefaultNoComponentGlobalConfig = {\n maxOpened: 0,\n autoDismiss: false,\n newestOnTop: true,\n preventDuplicates: false,\n countDuplicates: false,\n resetTimeoutOnDuplicate: false,\n includeTitleDuplicates: false,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning',\n },\n // Individual\n closeButton: false,\n disableTimeOut: false,\n timeOut: 5000,\n extendedTimeOut: 1000,\n enableHtml: false,\n progressBar: false,\n toastClass: 'ngx-toastr',\n positionClass: 'toast-top-right',\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n easing: 'ease-in',\n easeTime: 300,\n tapToDismiss: true,\n onActivateTick: false,\n progressAnimation: 'decreasing',\n payload: null\n};\nconst TOAST_CONFIG = new InjectionToken('ToastConfig');\n\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nclass DomPortalHost extends BasePortalHost {\n constructor(_hostDomElement, _componentFactoryResolver, _appRef) {\n super();\n this._hostDomElement = _hostDomElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n */\n attachComponentPortal(portal, newestOnTop) {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the ChangeDetector for that component to the application (which\n // happens automatically when using a ViewContainer).\n componentRef = componentFactory.create(portal.injector);\n // When creating a component outside of a ViewContainer, we need to manually register\n // its ChangeDetector with the application. This API is unfortunately not yet published\n // in Angular core. The change detector must also be deregistered when the component\n // is destroyed to prevent memory leaks.\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n if (newestOnTop) {\n this._hostDomElement.insertBefore(this._getComponentRootNode(componentRef), this._hostDomElement.firstChild);\n }\n else {\n this._hostDomElement.appendChild(this._getComponentRootNode(componentRef));\n }\n return componentRef;\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalHost) {\n this._portalHost = _portalHost;\n }\n attach(portal, newestOnTop = true) {\n return this._portalHost.attach(portal, newestOnTop);\n }\n /**\n * Detaches an overlay from a portal.\n * @returns Resolves when the overlay has been detached.\n */\n detach() {\n return this._portalHost.detach();\n }\n}\n\n/** Container inside which all toasts will render. */\nclass OverlayContainer {\n constructor(_document) {\n this._document = _document;\n }\n ngOnDestroy() {\n if (this._containerElement && this._containerElement.parentNode) {\n this._containerElement.parentNode.removeChild(this._containerElement);\n }\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body\n * and 'aria-live=\"polite\"'\n */\n _createContainer() {\n const container = this._document.createElement('div');\n container.classList.add('overlay-container');\n container.setAttribute('aria-live', 'polite');\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n}\nOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: OverlayContainer, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: OverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: OverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor(_overlayContainer, _componentFactoryResolver, _appRef, _document) {\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._document = _document;\n // Namespace panes by overlay container\n this._paneElements = new Map();\n }\n /**\n * Creates an overlay.\n * @returns A reference to the created overlay.\n */\n create(positionClass, overlayContainer) {\n // get existing pane if possible\n return this._createOverlayRef(this.getPaneElement(positionClass, overlayContainer));\n }\n getPaneElement(positionClass = '', overlayContainer) {\n if (!this._paneElements.get(overlayContainer)) {\n this._paneElements.set(overlayContainer, {});\n }\n if (!this._paneElements.get(overlayContainer)[positionClass]) {\n this._paneElements.get(overlayContainer)[positionClass] = this._createPaneElement(positionClass, overlayContainer);\n }\n return this._paneElements.get(overlayContainer)[positionClass];\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(positionClass, overlayContainer) {\n const pane = this._document.createElement('div');\n pane.id = 'toast-container';\n pane.classList.add(positionClass);\n pane.classList.add('toast-container');\n if (!overlayContainer) {\n this._overlayContainer.getContainerElement().appendChild(pane);\n }\n else {\n overlayContainer.getContainerElement().appendChild(pane);\n }\n return pane;\n }\n /**\n * Create a DomPortalHost into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal host.\n * @returns A portal host for the given DOM element.\n */\n _createPortalHost(pane) {\n return new DomPortalHost(pane, this._componentFactoryResolver, this._appRef);\n }\n /**\n * Creates an OverlayRef for an overlay in the given DOM element.\n * @param pane DOM element for the overlay\n */\n _createOverlayRef(pane) {\n return new OverlayRef(this._createPortalHost(pane));\n }\n}\nOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: Overlay, deps: [{ token: OverlayContainer }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlay.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: Overlay, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: Overlay, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: OverlayContainer }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\nclass ToastrService {\n constructor(token, overlay, _injector, sanitizer, ngZone) {\n this.overlay = overlay;\n this._injector = _injector;\n this.sanitizer = sanitizer;\n this.ngZone = ngZone;\n this.currentlyActive = 0;\n this.toasts = [];\n this.index = 0;\n this.toastrConfig = {\n ...token.default,\n ...token.config,\n };\n if (token.config.iconClasses) {\n this.toastrConfig.iconClasses = {\n ...token.default.iconClasses,\n ...token.config.iconClasses,\n };\n }\n }\n /** show toast */\n show(message, title, override = {}, type = '') {\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show successful toast */\n success(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.success || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show error toast */\n error(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.error || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show info toast */\n info(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.info || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show warning toast */\n warning(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.warning || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /**\n * Remove all or a single toast by id\n */\n clear(toastId) {\n // Call every toastRef manualClose function\n for (const toast of this.toasts) {\n if (toastId !== undefined) {\n if (toast.toastId === toastId) {\n toast.toastRef.manualClose();\n return;\n }\n }\n else {\n toast.toastRef.manualClose();\n }\n }\n }\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId) {\n const found = this._findToast(toastId);\n if (!found) {\n return false;\n }\n found.activeToast.toastRef.close();\n this.toasts.splice(found.index, 1);\n this.currentlyActive = this.currentlyActive - 1;\n if (!this.toastrConfig.maxOpened || !this.toasts.length) {\n return false;\n }\n if (this.currentlyActive < this.toastrConfig.maxOpened && this.toasts[this.currentlyActive]) {\n const p = this.toasts[this.currentlyActive].toastRef;\n if (!p.isInactive()) {\n this.currentlyActive = this.currentlyActive + 1;\n p.activate();\n }\n }\n return true;\n }\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(title = '', message = '', resetOnDuplicate, countDuplicates) {\n const { includeTitleDuplicates } = this.toastrConfig;\n for (const toast of this.toasts) {\n const hasDuplicateTitle = includeTitleDuplicates && toast.title === title;\n if ((!includeTitleDuplicates || hasDuplicateTitle) && toast.message === message) {\n toast.toastRef.onDuplicate(resetOnDuplicate, countDuplicates);\n return toast;\n }\n }\n return null;\n }\n /** create a clone of global config and apply individual settings */\n applyConfig(override = {}) {\n return { ...this.toastrConfig, ...override };\n }\n /**\n * Find toast object by id\n */\n _findToast(toastId) {\n for (let i = 0; i < this.toasts.length; i++) {\n if (this.toasts[i].toastId === toastId) {\n return { index: i, activeToast: this.toasts[i] };\n }\n }\n return null;\n }\n /**\n * Determines the need to run inside angular's zone then builds the toast\n */\n _preBuildNotification(toastType, message, title, config) {\n if (config.onActivateTick) {\n return this.ngZone.run(() => this._buildNotification(toastType, message, title, config));\n }\n return this._buildNotification(toastType, message, title, config);\n }\n /**\n * Creates and attaches toast data to component\n * returns the active toast, or in case preventDuplicates is enabled the original/non-duplicate active toast.\n */\n _buildNotification(toastType, message, title, config) {\n if (!config.toastComponent) {\n throw new Error('toastComponent required');\n }\n // max opened and auto dismiss = true\n // if timeout = 0 resetting it would result in setting this.hideTime = Date.now(). Hence, we only want to reset timeout if there is\n // a timeout at all\n const duplicate = this.findDuplicate(title, message, this.toastrConfig.resetTimeoutOnDuplicate && config.timeOut > 0, this.toastrConfig.countDuplicates);\n if (((this.toastrConfig.includeTitleDuplicates && title) || message) &&\n this.toastrConfig.preventDuplicates &&\n duplicate !== null) {\n return duplicate;\n }\n this.previousToastMessage = message;\n let keepInactive = false;\n if (this.toastrConfig.maxOpened && this.currentlyActive >= this.toastrConfig.maxOpened) {\n keepInactive = true;\n if (this.toastrConfig.autoDismiss) {\n this.clear(this.toasts[0].toastId);\n }\n }\n const overlayRef = this.overlay.create(config.positionClass, this.overlayContainer);\n this.index = this.index + 1;\n let sanitizedMessage = message;\n if (message && config.enableHtml) {\n sanitizedMessage = this.sanitizer.sanitize(SecurityContext.HTML, message);\n }\n const toastRef = new ToastRef(overlayRef);\n const toastPackage = new ToastPackage(this.index, config, sanitizedMessage, title, toastType, toastRef);\n /** New injector that contains an instance of `ToastPackage`. */\n const providers = [{ provide: ToastPackage, useValue: toastPackage }];\n const toastInjector = Injector.create({ providers, parent: this._injector });\n const component = new ComponentPortal(config.toastComponent, toastInjector);\n const portal = overlayRef.attach(component, config.newestOnTop);\n toastRef.componentInstance = portal.instance;\n const ins = {\n toastId: this.index,\n title: title || '',\n message: message || '',\n toastRef,\n onShown: toastRef.afterActivate(),\n onHidden: toastRef.afterClosed(),\n onTap: toastPackage.onTap(),\n onAction: toastPackage.onAction(),\n portal,\n };\n if (!keepInactive) {\n this.currentlyActive = this.currentlyActive + 1;\n setTimeout(() => {\n ins.toastRef.activate();\n });\n }\n this.toasts.push(ins);\n return ins;\n }\n}\nToastrService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastrService, deps: [{ token: TOAST_CONFIG }, { token: Overlay }, { token: i0.Injector }, { token: i2.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nToastrService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastrService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastrService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [TOAST_CONFIG]\n }] }, { type: Overlay }, { type: i0.Injector }, { type: i2.DomSanitizer }, { type: i0.NgZone }]; } });\n\nclass Toast {\n constructor(toastrService, toastPackage, ngZone) {\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.ngZone = ngZone;\n /** width of progress bar */\n this.width = -1;\n /** a combination of toast type and options.toastClass */\n this.toastClasses = '';\n /** controls animation */\n this.state = {\n value: 'inactive',\n params: {\n easeTime: this.toastPackage.config.easeTime,\n easing: 'ease-in'\n }\n };\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = `${toastPackage.toastType} ${toastPackage.config.toastClass}`;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n this.resetTimeout();\n });\n this.sub3 = toastPackage.toastRef.countDuplicate().subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n /** hides component when waiting to be displayed */\n get displayStyle() {\n if (this.state.value === 'inactive') {\n return 'none';\n }\n return;\n }\n ngOnDestroy() {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n this.sub3.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n /**\n * activates toast and sets timeout\n */\n activateToast() {\n this.state = { ...this.state, value: 'active' };\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.outsideTimeout(() => this.remove(), this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress() {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n }\n resetTimeout() {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = { ...this.state, value: 'active' };\n this.outsideTimeout(() => this.remove(), this.originalTimeout);\n this.options.timeOut = this.originalTimeout;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove() {\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = { ...this.state, value: 'removed' };\n this.outsideTimeout(() => this.toastrService.remove(this.toastPackage.toastId), +this.toastPackage.config.easeTime);\n }\n tapToast() {\n if (this.state.value === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n }\n stickAround() {\n if (this.state.value === 'removed') {\n return;\n }\n if (this.options.disableTimeOut !== 'extendedTimeOut') {\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n }\n delayedHideToast() {\n if ((this.options.disableTimeOut === true || this.options.disableTimeOut === 'extendedTimeOut') ||\n this.options.extendedTimeOut === 0 ||\n this.state.value === 'removed') {\n return;\n }\n this.outsideTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n outsideTimeout(func, timeout) {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.timeout = setTimeout(() => this.runInsideAngular(func), timeout)));\n }\n else {\n this.timeout = setTimeout(() => func(), timeout);\n }\n }\n outsideInterval(func, timeout) {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.intervalId = setInterval(() => this.runInsideAngular(func), timeout)));\n }\n else {\n this.intervalId = setInterval(() => func(), timeout);\n }\n }\n runInsideAngular(func) {\n if (this.ngZone) {\n this.ngZone.run(() => func());\n }\n else {\n func();\n }\n }\n}\nToast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: Toast, deps: [{ token: ToastrService }, { token: ToastPackage }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nToast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.2\", type: Toast, selector: \"[toast-component]\", host: { listeners: { \"click\": \"tapToast()\", \"mouseenter\": \"stickAround()\", \"mouseleave\": \"delayedHideToast()\" }, properties: { \"class\": \"this.toastClasses\", \"@flyInOut\": \"this.state\", \"style.display\": \"this.displayStyle\" } }, ngImport: i0, template: `\n <button *ngIf=\"options.closeButton\" (click)=\"remove()\" type=\"button\" class=\"toast-close-button\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n <div *ngIf=\"title\" [class]=\"options.titleClass\" [attr.aria-label]=\"title\">\n {{ title }} <ng-container *ngIf=\"duplicatesCount\">[{{ duplicatesCount + 1 }}]</ng-container>\n </div>\n <div *ngIf=\"message && options.enableHtml\" role=\"alert\"\n [class]=\"options.messageClass\" [innerHTML]=\"message\">\n </div>\n <div *ngIf=\"message && !options.enableHtml\" role=\"alert\"\n [class]=\"options.messageClass\" [attr.aria-label]=\"message\">\n {{ message }}\n </div>\n <div *ngIf=\"options.progressBar\">\n <div class=\"toast-progress\" [style.width]=\"width + '%'\"></div>\n </div>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [\n trigger('flyInOut', [\n state('inactive', style({ opacity: 0 })),\n state('active', style({ opacity: 1 })),\n state('removed', style({ opacity: 0 })),\n transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}'))\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: Toast, decorators: [{\n type: Component,\n args: [{\n selector: '[toast-component]',\n template: `\n <button *ngIf=\"options.closeButton\" (click)=\"remove()\" type=\"button\" class=\"toast-close-button\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n <div *ngIf=\"title\" [class]=\"options.titleClass\" [attr.aria-label]=\"title\">\n {{ title }} <ng-container *ngIf=\"duplicatesCount\">[{{ duplicatesCount + 1 }}]</ng-container>\n </div>\n <div *ngIf=\"message && options.enableHtml\" role=\"alert\"\n [class]=\"options.messageClass\" [innerHTML]=\"message\">\n </div>\n <div *ngIf=\"message && !options.enableHtml\" role=\"alert\"\n [class]=\"options.messageClass\" [attr.aria-label]=\"message\">\n {{ message }}\n </div>\n <div *ngIf=\"options.progressBar\">\n <div class=\"toast-progress\" [style.width]=\"width + '%'\"></div>\n </div>\n `,\n animations: [\n trigger('flyInOut', [\n state('inactive', style({ opacity: 0 })),\n state('active', style({ opacity: 1 })),\n state('removed', style({ opacity: 0 })),\n transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}'))\n ])\n ],\n preserveWhitespaces: false\n }]\n }], ctorParameters: function () { return [{ type: ToastrService }, { type: ToastPackage }, { type: i0.NgZone }]; }, propDecorators: { toastClasses: [{\n type: HostBinding,\n args: ['class']\n }], state: [{\n type: HostBinding,\n args: ['@flyInOut']\n }], displayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], tapToast: [{\n type: HostListener,\n args: ['click']\n }], stickAround: [{\n type: HostListener,\n args: ['mouseenter']\n }], delayedHideToast: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nconst DefaultGlobalConfig = {\n ...DefaultNoComponentGlobalConfig,\n toastComponent: Toast,\n};\nclass ToastrModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastrModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\nToastrModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastrModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToastrModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastrModule, declarations: [Toast], imports: [CommonModule], exports: [Toast] });\nToastrModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastrModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastrModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [Toast],\n exports: [Toast],\n }]\n }] });\nclass ToastrComponentlessModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastrModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoComponentGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\nToastrComponentlessModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastrComponentlessModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToastrComponentlessModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastrComponentlessModule, imports: [CommonModule] });\nToastrComponentlessModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastrComponentlessModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastrComponentlessModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n\nclass ToastNoAnimation {\n constructor(toastrService, toastPackage, appRef) {\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.appRef = appRef;\n /** width of progress bar */\n this.width = -1;\n /** a combination of toast type and options.toastClass */\n this.toastClasses = '';\n /** controls animation */\n this.state = 'inactive';\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = `${toastPackage.toastType} ${toastPackage.config.toastClass}`;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n this.resetTimeout();\n });\n this.sub3 = toastPackage.toastRef.countDuplicate().subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n /** hides component when waiting to be displayed */\n get displayStyle() {\n if (this.state === 'inactive') {\n return 'none';\n }\n }\n ngOnDestroy() {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n this.sub3.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n /**\n * activates toast and sets timeout\n */\n activateToast() {\n this.state = 'active';\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.timeout = setTimeout(() => {\n this.remove();\n }, this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n if (this.options.onActivateTick) {\n this.appRef.tick();\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress() {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n }\n resetTimeout() {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = 'active';\n this.options.timeOut = this.originalTimeout;\n this.timeout = setTimeout(() => this.remove(), this.originalTimeout);\n this.hideTime = new Date().getTime() + (this.originalTimeout || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove() {\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = 'removed';\n this.timeout = setTimeout(() => this.toastrService.remove(this.toastPackage.toastId));\n }\n tapToast() {\n if (this.state === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n }\n stickAround() {\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n delayedHideToast() {\n if ((this.options.disableTimeOut === true || this.options.disableTimeOut === 'extendedTimeOut') ||\n this.options.extendedTimeOut === 0 ||\n this.state === 'removed') {\n return;\n }\n this.timeout = setTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n}\nToastNoAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastNoAnimation, deps: [{ token: ToastrService }, { token: ToastPackage }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Component });\nToastNoAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.2\", type: ToastNoAnimation, selector: \"[toast-component]\", host: { listeners: { \"click\": \"tapToast()\", \"mouseenter\": \"stickAround()\", \"mouseleave\": \"delayedHideToast()\" }, properties: { \"class\": \"this.toastClasses\", \"style.display\": \"this.displayStyle\" } }, ngImport: i0, template: `\n <button *ngIf=\"options.closeButton\" (click)=\"remove()\" type=\"button\" class=\"toast-close-button\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n <div *ngIf=\"title\" [class]=\"options.titleClass\" [attr.aria-label]=\"title\">\n {{ title }} <ng-container *ngIf=\"duplicatesCount\">[{{ duplicatesCount + 1 }}]</ng-container>\n </div>\n <div *ngIf=\"message && options.enableHtml\" role=\"alert\"\n [class]=\"options.messageClass\" [innerHTML]=\"message\">\n </div>\n <div *ngIf=\"message && !options.enableHtml\" role=\"alert\"\n [class]=\"options.messageClass\" [attr.aria-label]=\"message\">\n {{ message }}\n </div>\n <div *ngIf=\"options.progressBar\">\n <div class=\"toast-progress\" [style.width]=\"width + '%'\"></div>\n </div>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastNoAnimation, decorators: [{\n type: Component,\n args: [{\n selector: '[toast-component]',\n template: `\n <button *ngIf=\"options.closeButton\" (click)=\"remove()\" type=\"button\" class=\"toast-close-button\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n <div *ngIf=\"title\" [class]=\"options.titleClass\" [attr.aria-label]=\"title\">\n {{ title }} <ng-container *ngIf=\"duplicatesCount\">[{{ duplicatesCount + 1 }}]</ng-container>\n </div>\n <div *ngIf=\"message && options.enableHtml\" role=\"alert\"\n [class]=\"options.messageClass\" [innerHTML]=\"message\">\n </div>\n <div *ngIf=\"message && !options.enableHtml\" role=\"alert\"\n [class]=\"options.messageClass\" [attr.aria-label]=\"message\">\n {{ message }}\n </div>\n <div *ngIf=\"options.progressBar\">\n <div class=\"toast-progress\" [style.width]=\"width + '%'\"></div>\n </div>\n `,\n }]\n }], ctorParameters: function () { return [{ type: ToastrService }, { type: ToastPackage }, { type: i0.ApplicationRef }]; }, propDecorators: { toastClasses: [{\n type: HostBinding,\n args: ['class']\n }], displayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], tapToast: [{\n type: HostListener,\n args: ['click']\n }], stickAround: [{\n type: HostListener,\n args: ['mouseenter']\n }], delayedHideToast: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\nconst DefaultNoAnimationsGlobalConfig = {\n ...DefaultNoComponentGlobalConfig,\n toastComponent: ToastNoAnimation,\n};\nclass ToastNoAnimationModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastNoAnimationModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoAnimationsGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\nToastNoAnimationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastNoAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToastNoAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastNoAnimationModule, declarations: [ToastNoAnimation], imports: [CommonModule], exports: [ToastNoAnimation] });\nToastNoAnimationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastNoAnimationModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.2\", ngImport: i0, type: ToastNoAnimationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [ToastNoAnimation],\n exports: [ToastNoAnimation],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, ComponentPortal, DefaultGlobalConfig, DefaultNoAnimationsGlobalConfig, DefaultNoComponentGlobalConfig, Overlay, OverlayContainer, OverlayRef, TOAST_CONFIG, Toast, ToastContainerDirective, ToastContainerModule, ToastNoAnimation, ToastNoAnimationModule, ToastPackage, ToastRef, ToastrComponentlessModule, ToastrModule, ToastrService };\n","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\n// object keys weakly, yet can also hold non-object keys, unlike the\n// native `WeakMap`.\n// If no makeData function is supplied, the looked-up data will be an empty,\n// null-prototype Object.\nconst defaultMakeData = () => Object.create(null);\n// Useful for processing arguments objects as well as arrays.\nconst { forEach, slice } = Array.prototype;\nconst { hasOwnProperty } = Object.prototype;\nexport class Trie {\n constructor(weakness = true, makeData = defaultMakeData) {\n this.weakness = weakness;\n this.makeData = makeData;\n }\n lookup(...array) {\n return this.lookupArray(array);\n }\n lookupArray(array) {\n let node = this;\n forEach.call(array, key => node = node.getChildTrie(key));\n return hasOwnProperty.call(node, \"data\")\n ? node.data\n : node.data = this.makeData(slice.call(array));\n }\n peek(...array) {\n return this.peekArray(array);\n }\n peekArray(array) {\n let node = this;\n for (let i = 0, len = array.length; node && i < len; ++i) {\n const map = this.weakness && isObjRef(array[i]) ? node.weak : node.strong;\n node = map && map.get(array[i]);\n }\n return node && node.data;\n }\n getChildTrie(key) {\n const map = this.weakness && isObjRef(key)\n ? this.weak || (this.weak = new WeakMap())\n : this.strong || (this.strong = new Map());\n let child = map.get(key);\n if (!child)\n map.set(key, child = new Trie(this.weakness, this.makeData));\n return child;\n }\n}\nfunction isObjRef(value) {\n switch (typeof value) {\n case \"object\":\n if (value === null)\n break;\n // Fall through to return true...\n case \"function\":\n return true;\n }\n return false;\n}\n","// This currentContext variable will only be used if the makeSlotClass\n// function is called, which happens only if this is the first copy of the\n// @wry/context package to be imported.\nlet currentContext = null;\n// This unique internal object is used to denote the absence of a value\n// for a given Slot, and is never exposed to outside code.\nconst MISSING_VALUE = {};\nlet idCounter = 1;\n// Although we can't do anything about the cost of duplicated code from\n// accidentally bundling multiple copies of the @wry/context package, we can\n// avoid creating the Slot class more than once using makeSlotClass.\nconst makeSlotClass = () => class Slot {\n constructor() {\n // If you have a Slot object, you can find out its slot.id, but you cannot\n // guess the slot.id of a Slot you don't have access to, thanks to the\n // randomized suffix.\n this.id = [\n \"slot\",\n idCounter++,\n Date.now(),\n Math.random().toString(36).slice(2),\n ].join(\":\");\n }\n hasValue() {\n for (let context = currentContext; context; context = context.parent) {\n // We use the Slot object iself as a key to its value, which means the\n // value cannot be obtained without a reference to the Slot object.\n if (this.id in context.slots) {\n const value = context.slots[this.id];\n if (value === MISSING_VALUE)\n break;\n if (context !== currentContext) {\n // Cache the value in currentContext.slots so the next lookup will\n // be faster. This caching is safe because the tree of contexts and\n // the values of the slots are logically immutable.\n currentContext.slots[this.id] = value;\n }\n return true;\n }\n }\n if (currentContext) {\n // If a value was not found for this Slot, it's never going to be found\n // no matter how many times we look it up, so we might as well cache\n // the absence of the value, too.\n currentContext.slots[this.id] = MISSING_VALUE;\n }\n return false;\n }\n getValue() {\n if (this.hasValue()) {\n return currentContext.slots[this.id];\n }\n }\n withValue(value, callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n const slots = {\n __proto__: null,\n [this.id]: value,\n };\n const parent = currentContext;\n currentContext = { parent, slots };\n try {\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = parent;\n }\n }\n // Capture the current context and wrap a callback function so that it\n // reestablishes the captured context when called.\n static bind(callback) {\n const context = currentContext;\n return function () {\n const saved = currentContext;\n try {\n currentContext = context;\n return callback.apply(this, arguments);\n }\n finally {\n currentContext = saved;\n }\n };\n }\n // Immediately run a callback function without any captured context.\n static noContext(callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n if (currentContext) {\n const saved = currentContext;\n try {\n currentContext = null;\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = saved;\n }\n }\n else {\n return callback.apply(thisArg, args);\n }\n }\n};\nfunction maybe(fn) {\n try {\n return fn();\n }\n catch (ignored) { }\n}\n// We store a single global implementation of the Slot class as a permanent\n// non-enumerable property of the globalThis object. This obfuscation does\n// nothing to prevent access to the Slot class, but at least it ensures the\n// implementation (i.e. currentContext) cannot be tampered with, and all copies\n// of the @wry/context package (hopefully just one) will share the same Slot\n// implementation. Since the first copy of the @wry/context package to be\n// imported wins, this technique imposes a steep cost for any future breaking\n// changes to the Slot class.\nconst globalKey = \"@wry/context:Slot\";\nconst host = \n// Prefer globalThis when available.\n// https://github.com/benjamn/wryware/issues/347\nmaybe(() => globalThis) ||\n // Fall back to global, which works in Node.js and may be converted by some\n // bundlers to the appropriate identifier (window, self, ...) depending on the\n // bundling target. https://github.com/endojs/endo/issues/576#issuecomment-1178515224\n maybe(() => global) ||\n // Otherwise, use a dummy host that's local to this module. We used to fall\n // back to using the Array constructor as a namespace, but that was flagged in\n // https://github.com/benjamn/wryware/issues/347, and can be avoided.\n Object.create(null);\n// Whichever globalHost we're using, make TypeScript happy about the additional\n// globalKey property.\nconst globalHost = host;\nexport const Slot = globalHost[globalKey] ||\n // Earlier versions of this package stored the globalKey property on the Array\n // constructor, so we check there as well, to prevent Slot class duplication.\n Array[globalKey] ||\n (function (Slot) {\n try {\n Object.defineProperty(globalHost, globalKey, {\n value: Slot,\n enumerable: false,\n writable: false,\n // When it was possible for globalHost to be the Array constructor (a\n // legacy Slot dedup strategy), it was important for the property to be\n // configurable:true so it could be deleted. That does not seem to be as\n // important when globalHost is the global object, but I don't want to\n // cause similar problems again, and configurable:true seems safest.\n // https://github.com/endojs/endo/issues/576#issuecomment-1178274008\n configurable: true\n });\n }\n finally {\n return Slot;\n }\n })(makeSlotClass());\n","import { Slot } from \"@wry/context\";\nexport const parentEntrySlot = new Slot();\nexport function nonReactive(fn) {\n return parentEntrySlot.withValue(void 0, fn);\n}\nexport { Slot };\nexport { bind as bindContext, noContext, setTimeout, asyncFromGen, } from \"@wry/context\";\n","export const { hasOwnProperty, } = Object.prototype;\nexport const arrayFromSet = Array.from ||\n function (set) {\n const array = [];\n set.forEach(item => array.push(item));\n return array;\n };\nexport function maybeUnsubscribe(entryOrDep) {\n const { unsubscribe } = entryOrDep;\n if (typeof unsubscribe === \"function\") {\n entryOrDep.unsubscribe = void 0;\n unsubscribe();\n }\n}\n","import { parentEntrySlot } from \"./context.js\";\nimport { maybeUnsubscribe, arrayFromSet } from \"./helpers.js\";\nconst emptySetPool = [];\nconst POOL_TARGET_SIZE = 100;\n// Since this package might be used browsers, we should avoid using the\n// Node built-in assert module.\nfunction assert(condition, optionalMessage) {\n if (!condition) {\n throw new Error(optionalMessage || \"assertion failure\");\n }\n}\nfunction valueIs(a, b) {\n const len = a.length;\n return (\n // Unknown values are not equal to each other.\n len > 0 &&\n // Both values must be ordinary (or both exceptional) to be equal.\n len === b.length &&\n // The underlying value or exception must be the same.\n a[len - 1] === b[len - 1]);\n}\nfunction valueGet(value) {\n switch (value.length) {\n case 0: throw new Error(\"unknown value\");\n case 1: return value[0];\n case 2: throw value[1];\n }\n}\nfunction valueCopy(value) {\n return value.slice(0);\n}\nexport class Entry {\n constructor(fn) {\n this.fn = fn;\n this.parents = new Set();\n this.childValues = new Map();\n // When this Entry has children that are dirty, this property becomes\n // a Set containing other Entry objects, borrowed from emptySetPool.\n // When the set becomes empty, it gets recycled back to emptySetPool.\n this.dirtyChildren = null;\n this.dirty = true;\n this.recomputing = false;\n this.value = [];\n this.deps = null;\n ++Entry.count;\n }\n peek() {\n if (this.value.length === 1 && !mightBeDirty(this)) {\n rememberParent(this);\n return this.value[0];\n }\n }\n // This is the most important method of the Entry API, because it\n // determines whether the cached this.value can be returned immediately,\n // or must be recomputed. The overall performance of the caching system\n // depends on the truth of the following observations: (1) this.dirty is\n // usually false, (2) this.dirtyChildren is usually null/empty, and thus\n // (3) valueGet(this.value) is usually returned without recomputation.\n recompute(args) {\n assert(!this.recomputing, \"already recomputing\");\n rememberParent(this);\n return mightBeDirty(this)\n ? reallyRecompute(this, args)\n : valueGet(this.value);\n }\n setDirty() {\n if (this.dirty)\n return;\n this.dirty = true;\n reportDirty(this);\n // We can go ahead and unsubscribe here, since any further dirty\n // notifications we receive will be redundant, and unsubscribing may\n // free up some resources, e.g. file watchers.\n maybeUnsubscribe(this);\n }\n dispose() {\n this.setDirty();\n // Sever any dependency relationships with our own children, so those\n // children don't retain this parent Entry in their child.parents sets,\n // thereby preventing it from being fully garbage collected.\n forgetChildren(this);\n // Because this entry has been kicked out of the cache (in index.js),\n // we've lost the ability to find out if/when this entry becomes dirty,\n // whether that happens through a subscription, because of a direct call\n // to entry.setDirty(), or because one of its children becomes dirty.\n // Because of this loss of future information, we have to assume the\n // worst (that this entry might have become dirty very soon), so we must\n // immediately mark this entry's parents as dirty. Normally we could\n // just call entry.setDirty() rather than calling parent.setDirty() for\n // each parent, but that would leave this entry in parent.childValues\n // and parent.dirtyChildren, which would prevent the child from being\n // truly forgotten.\n eachParent(this, (parent, child) => {\n parent.setDirty();\n forgetChild(parent, this);\n });\n }\n forget() {\n // The code that creates Entry objects in index.ts will replace this method\n // with one that actually removes the Entry from the cache, which will also\n // trigger the entry.dispose method.\n this.dispose();\n }\n dependOn(dep) {\n dep.add(this);\n if (!this.deps) {\n this.deps = emptySetPool.pop() || new Set();\n }\n this.deps.add(dep);\n }\n forgetDeps() {\n if (this.deps) {\n arrayFromSet(this.deps).forEach(dep => dep.delete(this));\n this.deps.clear();\n emptySetPool.push(this.deps);\n this.deps = null;\n }\n }\n}\nEntry.count = 0;\nfunction rememberParent(child) {\n const parent = parentEntrySlot.getValue();\n if (parent) {\n child.parents.add(parent);\n if (!parent.childValues.has(child)) {\n parent.childValues.set(child, []);\n }\n if (mightBeDirty(child)) {\n reportDirtyChild(parent, child);\n }\n else {\n reportCleanChild(parent, child);\n }\n return parent;\n }\n}\nfunction reallyRecompute(entry, args) {\n forgetChildren(entry);\n // Set entry as the parent entry while calling recomputeNewValue(entry).\n parentEntrySlot.withValue(entry, recomputeNewValue, [entry, args]);\n if (maybeSubscribe(entry, args)) {\n // If we successfully recomputed entry.value and did not fail to\n // (re)subscribe, then this Entry is no longer explicitly dirty.\n setClean(entry);\n }\n return valueGet(entry.value);\n}\nfunction recomputeNewValue(entry, args) {\n entry.recomputing = true;\n const { normalizeResult } = entry;\n let oldValueCopy;\n if (normalizeResult && entry.value.length === 1) {\n oldValueCopy = valueCopy(entry.value);\n }\n // Make entry.value an empty array, representing an unknown value.\n entry.value.length = 0;\n try {\n // If entry.fn succeeds, entry.value will become a normal Value.\n entry.value[0] = entry.fn.apply(null, args);\n // If we have a viable oldValueCopy to compare with the (successfully\n // recomputed) new entry.value, and they are not already === identical, give\n // normalizeResult a chance to pick/choose/reuse parts of oldValueCopy[0]\n // and/or entry.value[0] to determine the final cached entry.value.\n if (normalizeResult && oldValueCopy && !valueIs(oldValueCopy, entry.value)) {\n try {\n entry.value[0] = normalizeResult(entry.value[0], oldValueCopy[0]);\n }\n catch (_a) {\n // If normalizeResult throws, just use the newer value, rather than\n // saving the exception as entry.value[1].\n }\n }\n }\n catch (e) {\n // If entry.fn throws, entry.value will hold that exception.\n entry.value[1] = e;\n }\n // Either way, this line is always reached.\n entry.recomputing = false;\n}\nfunction mightBeDirty(entry) {\n return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\n}\nfunction setClean(entry) {\n entry.dirty = false;\n if (mightBeDirty(entry)) {\n // This Entry may still have dirty children, in which case we can't\n // let our parents know we're clean just yet.\n return;\n }\n reportClean(entry);\n}\nfunction reportDirty(child) {\n eachParent(child, reportDirtyChild);\n}\nfunction reportClean(child) {\n eachParent(child, reportCleanChild);\n}\nfunction eachParent(child, callback) {\n const parentCount = child.parents.size;\n if (parentCount) {\n const parents = arrayFromSet(child.parents);\n for (let i = 0; i < parentCount; ++i) {\n callback(parents[i], child);\n }\n }\n}\n// Let a parent Entry know that one of its children may be dirty.\nfunction reportDirtyChild(parent, child) {\n // Must have called rememberParent(child) before calling\n // reportDirtyChild(parent, child).\n assert(parent.childValues.has(child));\n assert(mightBeDirty(child));\n const parentWasClean = !mightBeDirty(parent);\n if (!parent.dirtyChildren) {\n parent.dirtyChildren = emptySetPool.pop() || new Set;\n }\n else if (parent.dirtyChildren.has(child)) {\n // If we already know this child is dirty, then we must have already\n // informed our own parents that we are dirty, so we can terminate\n // the recursion early.\n return;\n }\n parent.dirtyChildren.add(child);\n // If parent was clean before, it just became (possibly) dirty (according to\n // mightBeDirty), since we just added child to parent.dirtyChildren.\n if (parentWasClean) {\n reportDirty(parent);\n }\n}\n// Let a parent Entry know that one of its children is no longer dirty.\nfunction reportCleanChild(parent, child) {\n // Must have called rememberChild(child) before calling\n // reportCleanChild(parent, child).\n assert(parent.childValues.has(child));\n assert(!mightBeDirty(child));\n const childValue = parent.childValues.get(child);\n if (childValue.length === 0) {\n parent.childValues.set(child, valueCopy(child.value));\n }\n else if (!valueIs(childValue, child.value)) {\n parent.setDirty();\n }\n removeDirtyChild(parent, child);\n if (mightBeDirty(parent)) {\n return;\n }\n reportClean(parent);\n}\nfunction removeDirtyChild(parent, child) {\n const dc = parent.dirtyChildren;\n if (dc) {\n dc.delete(child);\n if (dc.size === 0) {\n if (emptySetPool.length < POOL_TARGET_SIZE) {\n emptySetPool.push(dc);\n }\n parent.dirtyChildren = null;\n }\n }\n}\n// Removes all children from this entry and returns an array of the\n// removed children.\nfunction forgetChildren(parent) {\n if (parent.childValues.size > 0) {\n parent.childValues.forEach((_value, child) => {\n forgetChild(parent, child);\n });\n }\n // Remove this parent Entry from any sets to which it was added by the\n // addToSet method.\n parent.forgetDeps();\n // After we forget all our children, this.dirtyChildren must be empty\n // and therefore must have been reset to null.\n assert(parent.dirtyChildren === null);\n}\nfunction forgetChild(parent, child) {\n child.parents.delete(parent);\n parent.childValues.delete(child);\n removeDirtyChild(parent, child);\n}\nfunction maybeSubscribe(entry, args) {\n if (typeof entry.subscribe === \"function\") {\n try {\n maybeUnsubscribe(entry); // Prevent double subscriptions.\n entry.unsubscribe = entry.subscribe.apply(null, args);\n }\n catch (e) {\n // If this Entry has a subscribe function and it threw an exception\n // (or an unsubscribe function it previously returned now throws),\n // return false to indicate that we were not able to subscribe (or\n // unsubscribe), and this Entry should remain dirty.\n entry.setDirty();\n return false;\n }\n }\n // Returning true indicates either that there was no entry.subscribe\n // function or that it succeeded.\n return true;\n}\n","import { parentEntrySlot } from \"./context.js\";\nimport { hasOwnProperty, maybeUnsubscribe, arrayFromSet, } from \"./helpers.js\";\nconst EntryMethods = {\n setDirty: true,\n dispose: true,\n forget: true, // Fully remove parent Entry from LRU cache and computation graph\n};\nexport function dep(options) {\n const depsByKey = new Map();\n const subscribe = options && options.subscribe;\n function depend(key) {\n const parent = parentEntrySlot.getValue();\n if (parent) {\n let dep = depsByKey.get(key);\n if (!dep) {\n depsByKey.set(key, dep = new Set);\n }\n parent.dependOn(dep);\n if (typeof subscribe === \"function\") {\n maybeUnsubscribe(dep);\n dep.unsubscribe = subscribe(key);\n }\n }\n }\n depend.dirty = function dirty(key, entryMethodName) {\n const dep = depsByKey.get(key);\n if (dep) {\n const m = (entryMethodName &&\n hasOwnProperty.call(EntryMethods, entryMethodName)) ? entryMethodName : \"setDirty\";\n // We have to use arrayFromSet(dep).forEach instead of dep.forEach,\n // because modifying a Set while iterating over it can cause elements in\n // the Set to be removed from the Set before they've been iterated over.\n arrayFromSet(dep).forEach(entry => entry[m]());\n depsByKey.delete(key);\n maybeUnsubscribe(dep);\n }\n };\n return depend;\n}\n","import { Trie } from \"@wry/trie\";\nimport { StrongCache } from \"@wry/caches\";\nimport { Entry } from \"./entry.js\";\nimport { parentEntrySlot } from \"./context.js\";\n// These helper functions are important for making optimism work with\n// asynchronous code. In order to register parent-child dependencies,\n// optimism needs to know about any currently active parent computations.\n// In ordinary synchronous code, the parent context is implicit in the\n// execution stack, but asynchronous code requires some extra guidance in\n// order to propagate context from one async task segment to the next.\nexport { bindContext, noContext, nonReactive, setTimeout, asyncFromGen, Slot, } from \"./context.js\";\n// A lighter-weight dependency, similar to OptimisticWrapperFunction, except\n// with only one argument, no makeCacheKey, no wrapped function to recompute,\n// and no result value. Useful for representing dependency leaves in the graph\n// of computation. Subscriptions are supported.\nexport { dep } from \"./dep.js\";\n// The defaultMakeCacheKey function is remarkably powerful, because it gives\n// a unique object for any shallow-identical list of arguments. If you need\n// to implement a custom makeCacheKey function, you may find it helpful to\n// delegate the final work to defaultMakeCacheKey, which is why we export it\n// here. However, you may want to avoid defaultMakeCacheKey if your runtime\n// does not support WeakMap, or you have the ability to return a string key.\n// In those cases, just write your own custom makeCacheKey functions.\nlet defaultKeyTrie;\nexport function defaultMakeCacheKey(...args) {\n const trie = defaultKeyTrie || (defaultKeyTrie = new Trie(typeof WeakMap === \"function\"));\n return trie.lookupArray(args);\n}\n// If you're paranoid about memory leaks, or you want to avoid using WeakMap\n// under the hood, but you still need the behavior of defaultMakeCacheKey,\n// import this constructor to create your own tries.\nexport { Trie as KeyTrie };\n;\nconst caches = new Set();\nexport function wrap(originalFunction, { max = Math.pow(2, 16), keyArgs, makeCacheKey = defaultMakeCacheKey, normalizeResult, subscribe, cache: cacheOption = StrongCache, } = Object.create(null)) {\n const cache = typeof cacheOption === \"function\"\n ? new cacheOption(max, entry => entry.dispose())\n : cacheOption;\n const optimistic = function () {\n const key = makeCacheKey.apply(null, keyArgs ? keyArgs.apply(null, arguments) : arguments);\n if (key === void 0) {\n return originalFunction.apply(null, arguments);\n }\n let entry = cache.get(key);\n if (!entry) {\n cache.set(key, entry = new Entry(originalFunction));\n entry.normalizeResult = normalizeResult;\n entry.subscribe = subscribe;\n // Give the Entry the ability to trigger cache.delete(key), even though\n // the Entry itself does not know about key or cache.\n entry.forget = () => cache.delete(key);\n }\n const value = entry.recompute(Array.prototype.slice.call(arguments));\n // Move this entry to the front of the least-recently used queue,\n // since we just finished computing its value.\n cache.set(key, entry);\n caches.add(cache);\n // Clean up any excess entries in the cache, but only if there is no\n // active parent entry, meaning we're not in the middle of a larger\n // computation that might be flummoxed by the cleaning.\n if (!parentEntrySlot.hasValue()) {\n caches.forEach(cache => cache.clean());\n caches.clear();\n }\n return value;\n };\n Object.defineProperty(optimistic, \"size\", {\n get: () => cache.size,\n configurable: false,\n enumerable: false,\n });\n Object.freeze(optimistic.options = {\n max,\n keyArgs,\n makeCacheKey,\n normalizeResult,\n subscribe,\n cache,\n });\n function dirtyKey(key) {\n const entry = key && cache.get(key);\n if (entry) {\n entry.setDirty();\n }\n }\n optimistic.dirtyKey = dirtyKey;\n optimistic.dirty = function dirty() {\n dirtyKey(makeCacheKey.apply(null, arguments));\n };\n function peekKey(key) {\n const entry = key && cache.get(key);\n if (entry) {\n return entry.peek();\n }\n }\n optimistic.peekKey = peekKey;\n optimistic.peek = function peek() {\n return peekKey(makeCacheKey.apply(null, arguments));\n };\n function forgetKey(key) {\n return key ? cache.delete(key) : false;\n }\n optimistic.forgetKey = forgetKey;\n optimistic.forget = function forget() {\n return forgetKey(makeCacheKey.apply(null, arguments));\n };\n optimistic.makeCacheKey = makeCacheKey;\n optimistic.getKey = keyArgs ? function getKey() {\n return makeCacheKey.apply(null, keyArgs.apply(null, arguments));\n } : makeCacheKey;\n return Object.freeze(optimistic);\n}\n","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(observer, subscriber) {\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n var _proto = Subscription.prototype;\n\n _proto.unsubscribe = function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n };\n\n _createClass(Subscription, [{\n key: \"closed\",\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = /*#__PURE__*/function () {\n function SubscriptionObserver(subscription) {\n this._subscription = subscription;\n }\n\n var _proto2 = SubscriptionObserver.prototype;\n\n _proto2.next = function next(value) {\n onNotify(this._subscription, 'next', value);\n };\n\n _proto2.error = function error(value) {\n onNotify(this._subscription, 'error', value);\n };\n\n _proto2.complete = function complete() {\n onNotify(this._subscription, 'complete');\n };\n\n _createClass(SubscriptionObserver, [{\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = /*#__PURE__*/function () {\n function Observable(subscriber) {\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n var _proto3 = Observable.prototype;\n\n _proto3.subscribe = function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n };\n\n _proto3.forEach = function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n };\n\n _proto3.map = function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.filter = function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.reduce = function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n };\n\n _proto3.concat = function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n };\n\n _proto3.flatMap = function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n };\n\n _proto3[SymbolObservable] = function () {\n return this;\n };\n\n Observable.from = function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var _iterator = _createForOfIteratorHelperLoose(method.call(x)), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n observer.next(item);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n };\n\n Observable.of = function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n };\n\n _createClass(Observable, null, [{\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}\n\nexport { Observable };\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n"],"x_google_ignoreList":[46,47,187,188,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,860,895,925,926,927,928,929,930,938,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1097,1098,1099,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897]}